pax_global_header00006660000000000000000000000064141373557520014526gustar00rootroot0000000000000052 comment=f8c0c7dc6e8a3821fc3c4fc5b8c225dce479057d suite3270-4.1/000077500000000000000000000000001413735575200130375ustar00rootroot00000000000000suite3270-4.1/.gitignore000066400000000000000000000004521413735575200150300ustar00rootroot00000000000000*.a autom4te.cache config.cache config.log config.status cscope.* Debug/ *.exe fallbacks.c favicon.c Makefile Makefile.bak instlist.man mkfb mkicon obj/ ReleaseNotes.html Resources.html *.*sdf *-src.tgz SSL.html *.suo version.c wversion.c *.exe.manifest *.aps *-deplibs.mk .*.swp *.pyc __pycache__ suite3270-4.1/Common/000077500000000000000000000000001413735575200142675ustar00rootroot00000000000000suite3270-4.1/Common/Malloc.c000066400000000000000000000043131413735575200156430ustar00rootroot00000000000000/* * Copyright (c) 1999-2009, 2013-2015 Paul Mattes. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of Paul Mattes nor his contributors may be used * to endorse or promote products derived from this software without * specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. */ /* Memory allocation functions. */ #include "globals.h" void * Malloc(size_t len) { char *r; r = malloc(len); if (r == NULL) { Error("Out of memory"); } return r; } void * Calloc(size_t nelem, size_t elsize) { char *r; r = malloc(nelem * elsize); if (r == NULL) { Error("Out of memory"); } return memset(r, '\0', nelem * elsize); } void * Realloc(void *p, size_t len) { p = realloc(p, len); if (p == NULL) { Error("Out of memory"); } return p; } void Free(void *p) { if (p != NULL) { free(p); } } char * NewString(const char *s) { if (s != NULL) { return strcpy(Malloc(strlen(s) + 1), s); } else { return NULL; } } suite3270-4.1/Common/Nodisplay/000077500000000000000000000000001413735575200162315ustar00rootroot00000000000000suite3270-4.1/Common/Nodisplay/X11/000077500000000000000000000000001413735575200166025ustar00rootroot00000000000000suite3270-4.1/Common/Nodisplay/X11/keysym.h000066400000000000000000000213101413735575200202710ustar00rootroot00000000000000/* * Copyright (c) 1999-2009, Paul Mattes. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the names of Paul Mattes nor the names of his contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO * EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* X11 keysyms used by c3270, s3270 and tcl3270 */ #if !defined(_x11_keysym_h) /*[*/ #define _x11_keysym_h 1 /* Latin-1 Keysyms */ #define XK_space 0x020 #define XK_exclam 0x021 #define XK_quotedbl 0x022 #define XK_numbersign 0x023 #define XK_dollar 0x024 #define XK_percent 0x025 #define XK_ampersand 0x026 #define XK_apostrophe 0x027 #define XK_quoteright 0x027 #define XK_parenleft 0x028 #define XK_parenright 0x029 #define XK_asterisk 0x02a #define XK_plus 0x02b #define XK_comma 0x02c #define XK_minus 0x02d #define XK_period 0x02e #define XK_slash 0x02f #define XK_0 0x030 #define XK_1 0x031 #define XK_2 0x032 #define XK_3 0x033 #define XK_4 0x034 #define XK_5 0x035 #define XK_6 0x036 #define XK_7 0x037 #define XK_8 0x038 #define XK_9 0x039 #define XK_colon 0x03a #define XK_semicolon 0x03b #define XK_less 0x03c #define XK_equal 0x03d #define XK_greater 0x03e #define XK_question 0x03f #define XK_at 0x040 #define XK_A 0x041 #define XK_B 0x042 #define XK_C 0x043 #define XK_D 0x044 #define XK_E 0x045 #define XK_F 0x046 #define XK_G 0x047 #define XK_H 0x048 #define XK_I 0x049 #define XK_J 0x04a #define XK_K 0x04b #define XK_L 0x04c #define XK_M 0x04d #define XK_N 0x04e #define XK_O 0x04f #define XK_P 0x050 #define XK_Q 0x051 #define XK_R 0x052 #define XK_S 0x053 #define XK_T 0x054 #define XK_U 0x055 #define XK_V 0x056 #define XK_W 0x057 #define XK_X 0x058 #define XK_Y 0x059 #define XK_Z 0x05a #define XK_bracketleft 0x05b #define XK_backslash 0x05c #define XK_bracketright 0x05d #define XK_asciicircum 0x05e #define XK_underscore 0x05f #define XK_grave 0x060 #define XK_quoteleft 0x060 #define XK_a 0x061 #define XK_b 0x062 #define XK_c 0x063 #define XK_d 0x064 #define XK_e 0x065 #define XK_f 0x066 #define XK_g 0x067 #define XK_h 0x068 #define XK_i 0x069 #define XK_j 0x06a #define XK_k 0x06b #define XK_l 0x06c #define XK_m 0x06d #define XK_n 0x06e #define XK_o 0x06f #define XK_p 0x070 #define XK_q 0x071 #define XK_r 0x072 #define XK_s 0x073 #define XK_t 0x074 #define XK_u 0x075 #define XK_v 0x076 #define XK_w 0x077 #define XK_x 0x078 #define XK_y 0x079 #define XK_z 0x07a #define XK_braceleft 0x07b #define XK_bar 0x07c #define XK_braceright 0x07d #define XK_asciitilde 0x07e #define XK_nobreakspace 0x0a0 #define XK_exclamdown 0x0a1 #define XK_cent 0x0a2 #define XK_sterling 0x0a3 #define XK_currency 0x0a4 #define XK_yen 0x0a5 #define XK_brokenbar 0x0a6 #define XK_section 0x0a7 #define XK_diaeresis 0x0a8 #define XK_copyright 0x0a9 #define XK_ordfeminine 0x0aa #define XK_guillemotleft 0x0ab #define XK_notsign 0x0ac #define XK_hyphen 0x0ad #define XK_registered 0x0ae #define XK_macron 0x0af #define XK_degree 0x0b0 #define XK_plusminus 0x0b1 #define XK_twosuperior 0x0b2 #define XK_threesuperior 0x0b3 #define XK_acute 0x0b4 #define XK_mu 0x0b5 #define XK_paragraph 0x0b6 #define XK_periodcentered 0x0b7 #define XK_cedilla 0x0b8 #define XK_onesuperior 0x0b9 #define XK_masculine 0x0ba #define XK_guillemotright 0x0bb #define XK_onequarter 0x0bc #define XK_onehalf 0x0bd #define XK_threequarters 0x0be #define XK_questiondown 0x0bf #define XK_Agrave 0x0c0 #define XK_Aacute 0x0c1 #define XK_Acircumflex 0x0c2 #define XK_Atilde 0x0c3 #define XK_Adiaeresis 0x0c4 #define XK_Aring 0x0c5 #define XK_AE 0x0c6 #define XK_Ccedilla 0x0c7 #define XK_Egrave 0x0c8 #define XK_Eacute 0x0c9 #define XK_Ecircumflex 0x0ca #define XK_Ediaeresis 0x0cb #define XK_Igrave 0x0cc #define XK_Iacute 0x0cd #define XK_Icircumflex 0x0ce #define XK_Idiaeresis 0x0cf #define XK_ETH 0x0d0 #define XK_Eth 0x0d0 #define XK_Ntilde 0x0d1 #define XK_Ograve 0x0d2 #define XK_Oacute 0x0d3 #define XK_Ocircumflex 0x0d4 #define XK_Otilde 0x0d5 #define XK_Odiaeresis 0x0d6 #define XK_multiply 0x0d7 #define XK_Ooblique 0x0d8 #define XK_Ugrave 0x0d9 #define XK_Uacute 0x0da #define XK_Ucircumflex 0x0db #define XK_Udiaeresis 0x0dc #define XK_Yacute 0x0dd #define XK_THORN 0x0de #define XK_Thorn 0x0de #define XK_ssharp 0x0df #define XK_agrave 0x0e0 #define XK_aacute 0x0e1 #define XK_acircumflex 0x0e2 #define XK_atilde 0x0e3 #define XK_adiaeresis 0x0e4 #define XK_aring 0x0e5 #define XK_ae 0x0e6 #define XK_ccedilla 0x0e7 #define XK_egrave 0x0e8 #define XK_eacute 0x0e9 #define XK_ecircumflex 0x0ea #define XK_ediaeresis 0x0eb #define XK_igrave 0x0ec #define XK_iacute 0x0ed #define XK_icircumflex 0x0ee #define XK_idiaeresis 0x0ef #define XK_eth 0x0f0 #define XK_ntilde 0x0f1 #define XK_ograve 0x0f2 #define XK_oacute 0x0f3 #define XK_ocircumflex 0x0f4 #define XK_otilde 0x0f5 #define XK_odiaeresis 0x0f6 #define XK_division 0x0f7 #define XK_oslash 0x0f8 #define XK_ugrave 0x0f9 #define XK_uacute 0x0fa #define XK_ucircumflex 0x0fb #define XK_udiaeresis 0x0fc #define XK_yacute 0x0fd #define XK_thorn 0x0fe #define XK_ydiaeresis 0x0ff #endif /*]*/ suite3270-4.1/Common/Nodisplay/resources.c000066400000000000000000000031631413735575200204120ustar00rootroot00000000000000/* * Copyright (c) 2018 Paul Mattes. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the names of Paul Mattes nor the names of his contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO * EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "globals.h" #include "fallbacks.h" char * get_underlying_resource(const char *name) { return NULL; } suite3270-4.1/Common/Python/000077500000000000000000000000001413735575200155505ustar00rootroot00000000000000suite3270-4.1/Common/Python/Tests/000077500000000000000000000000001413735575200166525ustar00rootroot00000000000000suite3270-4.1/Common/Python/Tests/pyHostTest000077500000000000000000000002411413735575200207230ustar00rootroot00000000000000#!/usr/bin/env python3 import sys import x3270if h = x3270if.HostSpecification("x") sys.stderr.write(str(h) + '\n') h.Port = 3 sys.stderr.write(str(h) + '\n') suite3270-4.1/Common/Python/Tests/pyPeerTest000077500000000000000000000002161413735575200207030ustar00rootroot00000000000000#!/usr/bin/env python3 import sys import x3270if x = x3270if.new_emulator(debug=True) r = x.run_action('Query') sys.stderr.write(r + '\n') suite3270-4.1/Common/Python/Tests/pytest000077500000000000000000000013361413735575200201330ustar00rootroot00000000000000#!/usr/bin/env python3 import sys import x3270if x = x3270if.new_emulator(debug=True,emulator='x3270') r = x.run_action('Query') sys.stderr.write(r + '\n') #r = x.run_action('Query', 'Cursor1', 'a\\nb', '"x"', ',', ')') #r = x.run_action('#') #r = x.run_action(('Query', 'Cursor1', 'foo')) r = x.run_action('Query', 'Cursor1') sys.stderr.write(r + '\n') try: r = x.run_action('Quisp',['Quake','Foo',9,10]) except x3270if.ActionFailException as err: sys.stderr.write('Run failed: {0}\n'.format(err)) try: r = x.run_action('Quisp','Quake','Foo',9,10) except x3270if.ActionFailException as err: sys.stderr.write('Run failed: {0}\n'.format(err)) sys.stderr.write('Quote(a,b,c) -> ' + x3270if.quote('a,b,c') + '\n') suite3270-4.1/Common/Python/x3270if/000077500000000000000000000000001413735575200166525ustar00rootroot00000000000000suite3270-4.1/Common/Python/x3270if/__init__.py000077500000000000000000000003411413735575200207640ustar00rootroot00000000000000__all__ = ['common', 'new_emulator', 'worker_connection', 'host_specification'] from x3270if.common import * from x3270if.new_emulator import * from x3270if.worker_connection import * from x3270if.host_specification import * suite3270-4.1/Common/Python/x3270if/common.py000077500000000000000000000131041413735575200205160ustar00rootroot00000000000000#!/usr/bin/env python3 # Simple Python version of x3270if # # Copyright (c) 2017-2018 Paul Mattes. # All rights reserved. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions are met: # * Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # * Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in the # documentation and/or other materials provided with the distribution. # * Neither the names of Paul Mattes nor the names of his contributors # may be used to endorse or promote products derived from this software # without specific prior written permission. # # THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS OR IMPLIED # WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF # MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO # EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, # SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, # PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; # OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, # WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR # OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF # ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. """Python interface to x3270 emulators""" import io import os import socket import sys _quote_chars = ' ,()' def quote(arg): """Quote an argument in action syntax Args: arg (str): Argument to format Returns: str: Formatted argument """ # If the argument is empty, contains a space, comma or paren, or starts # with a double quote, it needs to be put in double quotes. (For an empty # argument it is not strictly necessary, but it makes traces easier to # read.) if (not (arg == '' or any(ch in arg for ch in _quote_chars) or arg.startswith('"'))): return arg # A double quote inside the argument needs a backslash in front of it. # A backslash at the end of the argument needs to be doubled. x = arg.replace('"', '\\"') if (x.endswith('\\')): x = x + '\\' return '"' + x + '"' class ActionFailException(Exception): """x3270if action failure""" def __init__(self,msg): Exception.__init__(self,msg) class StartupException(RuntimeError): """x3270if unable to start s3270""" def __init__(self,msg): RuntimeError.__init__(self,msg) class _session(): """Abstract x3270if session base class""" def __init__(self,debug=False): """Initialize an instance Args: debug (bool): True to trace debug info to stderr. """ # Debug flag self._debug_enabled = debug # Last prompt self._prompt = '' # File streams to/from the emulator self._to3270 = None self._from3270 = None def __del__(self): self._debug('_session deleted') @property def prompt(self): """Gets the last emulator prompt str: Last emulator prompt """ return self._prompt def run_action(self,cmd,*args): """Send an action to the emulator Args: cmd (str): Action name Action name. If 'args' is omitted, this is the entire properly-formatted action name and arguments, and the text will be passed through unmodified. args (iterable): Arguments Returns: str: Command output Mulitiple lines are separated by newline characters. Raises: ActionFailException: Emulator returned an error. EOFError: Emulator exited unexpectedly. """ if (not isinstance(cmd, str)): raise TypeError("First argument must be a string") self._debug("args is {0}, len is {1}".format(args, len(args))) if (args == ()): argstr = cmd elif (len(args) == 1 and not isinstance(args[0], str)): # One argument that can be iterated over. argstr = cmd + '(' + ','.join(quote(str(arg)) for arg in args[0]) + ')' else: # Multiple arguments. argstr = cmd + '(' + ','.join(quote(str(arg)) for arg in args) + ')' self._to3270.write(argstr + '\n') self._to3270.flush() self._debug('Sent ' + argstr) result = '' prev = '' while (True): text = self._from3270.readline().rstrip('\n') if (text == ''): raise EOFError('Emulator exited') self._debug("Got '" + text + "'") if (text == 'ok'): self._prompt = prev break if (text == 'error'): self._prompt = prev raise ActionFailException(result) if (result == ''): result = prev.lstrip('data: ') else: result = result + '\n' + prev.lstrip('data: ') prev = text return result def _debug(self,text): """Debug output Args: text (str): Text to log. A Newline will be added. """ if (self._debug_enabled): if os.name != 'nt': sys.stderr.write('') sys.stderr.write(text) if os.name != 'nt': sys.stderr.write('') sys.stderr.write('\n') suite3270-4.1/Common/Python/x3270if/host_specification.py000077500000000000000000000114331413735575200231060ustar00rootroot00000000000000#!/usr/bin/env python3 # Simple Python version of x3270if # # Copyright (c) 2017-2018 Paul Mattes. # All rights reserved. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions are met: # * Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # * Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in the # documentation and/or other materials provided with the distribution. # * Neither the names of Paul Mattes nor the names of his contributors # may be used to endorse or promote products derived from this software # without specific prior written permission. # # THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS OR IMPLIED # WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF # MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO # EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, # SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, # PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; # OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, # WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR # OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF # ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. """x3270 host specification formatter""" #import io #import os #import socket #import sys #import subprocess #import time _bad_host_chars = '@,[]=' _good_lu_chars = 'ABCDEFGHIJKLMNOPQRSTUVWYZabcdefghijklmnopqrstuvwxyz0123456789_-' _bad_accept_chars = '@,[]=:' class host_specification: """Host specification with proper formatting""" def __init__(self,host_name,port=23,logical_unit_names=[],tls_tunnel=False,validate_host_certificate=True,accept_name=None): """Initialize an instance Args: host_name (str): Host name or IP address. port (int, optional): TCP port number. logical_unit_names (list of str, optional): Logical unit names. tls_tunnel (bool, optional): Set up a TLS tunnel. validate_host_certificate (bool, optional): Validate the host TLS certificate. accept_name (str, optional): Host name to accept in the host TLS certificate. """ self.host_name = host_name self.port = port self.logical_unit_names = logical_unit_names self.tls_tunnel = tls_tunnel self.validate_host_certificate = validate_host_certificate self.accept_name = accept_name @property def host_name(self): """Host name or IP address""" return self._host_name @host_name.setter def host_name(self,value): if (any(ch in value for ch in _bad_host_chars)): raise ValueError("host_name contains invalid character(s)") self._host_name = value @property def port(self): """TCP port number""" return self._port @port.setter def port(self,value): self._port = int(value) if (self._port < 1 or self._port > 0xffff): raise ValueError("Invalid port value") @property def logical_unit_names(self): """List of Logical Unit (LU) names""" return self._logical_unit_names @logical_unit_names.setter def logical_unit_names(self,value): for lu in value: if (any(ch not in _good_lu_chars for ch in lu)): raise ValueError("Logical unit name contains invalid character(s)") self._logical_unit_names = value @property def accept_name(self): """Name to accept in the host TLS certificate""" return self._accept_name @accept_name.setter def accept_name(self,value): if (value == None): self._accept_name = value return for lu in value: if (any(ch in value for ch in _bad_accept_chars)): raise ValueError("Accept name contains invalid character(s)") self._accept_name = value def __str__(self): if (self.host_name == None): return '' r = '' if (self.tls_tunnel): r += "L:" if (not self.validate_host_certificate): r += "Y:" if (self.logical_unit_names != []): r += ','.join(self.logical_unit_names) + '@' if (':' in self.host_name): r += '[' + self.host_name + ']' else: r += self.host_name if (self.port != 23): r += ':' + str(self.port) if (self.accept_name != None): r += '=' + self.accept_name return r suite3270-4.1/Common/Python/x3270if/new_emulator.py000077500000000000000000000105671413735575200217410ustar00rootroot00000000000000#!/usr/bin/env python3 # Simple Python version of x3270if # # Copyright (c) 2017-2018 Paul Mattes. # All rights reserved. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions are met: # * Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # * Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in the # documentation and/or other materials provided with the distribution. # * Neither the names of Paul Mattes nor the names of his contributors # may be used to endorse or promote products derived from this software # without specific prior written permission. # # THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS OR IMPLIED # WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF # MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO # EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, # SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, # PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; # OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, # WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR # OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF # ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. """Python interface to x3270 emulators""" import io import os import socket import sys import subprocess import time from x3270if.common import _session from x3270if.common import StartupException class new_emulator(_session): """Starts a new copy of s3270""" def __init__(self,debug=False,emulator=None,extra_args=[]): """Initialize the object. Args: debug (bool): True to log debug information to stderr. emulator (str): Name of the emulator to start, defaults to s3270 extra_args(list of str, optional): Extra arguments to pass in the s3270 command line. Raises: StartupException: Unable to start s3270. """ _session.__init__(self, debug) self._socket = None self._s3270 = None # Create a temporary socket to find a unique local port. tempsocket = socket.socket() tempsocket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) tempsocket.bind(('127.0.0.1', 0)) port = tempsocket.getsockname()[1] self._debug('Port is {0}'.format(port)) # Create the child process. try: args = ['s3270', '-utf8', '-minversion', '3.6', '-scriptport', str(port), '-scriptportonce'] + extra_args oserr = None try: self._s3270 = subprocess.Popen(args, stderr=subprocess.PIPE,universal_newlines=True) except OSError as err: oserr = str(err) if (oserr != None): raise StartupException(oserr) # It might take a couple of tries to connect, as it takes time to # start the process. We wait a maximum of half a second. tries = 0 connected = False while (tries < 5): try: self._socket = socket.create_connection(['127.0.0.1', port]) connected = True break except: time.sleep(0.1) tries += 1 if (not connected): errmsg = 'Could not connect to emulator' self._s3270.terminate() r = self._s3270.stderr.readline().rstrip('\r\n') if (r != ''): errmsg += ': ' + r raise StartupException(errmsg) self._to3270 = self._socket.makefile('w', encoding='utf-8') self._from3270 = self._socket.makefile('r', encoding='utf-8') self._debug('Connected') finally: del tempsocket def __del__(self): if (self._s3270 != None): self._s3270.terminate() if (self._socket != None): self._socket.close(); _session.__del__(self) self._debug('new_emulator deleted') suite3270-4.1/Common/Python/x3270if/worker_connection.py000077500000000000000000000102561413735575200227630ustar00rootroot00000000000000#!/usr/bin/env python3 # Simple Python version of x3270if # # Copyright (c) 2017-2018 Paul Mattes. # All rights reserved. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions are met: # * Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # * Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in the # documentation and/or other materials provided with the distribution. # * Neither the names of Paul Mattes nor the names of his contributors # may be used to endorse or promote products derived from this software # without specific prior written permission. # # THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS OR IMPLIED # WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF # MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO # EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, # SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, # PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; # OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, # WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR # OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF # ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. """Python interface to x3270 emulators""" import io import os import socket import sys from x3270if.common import _session from x3270if.common import StartupException class worker_connection(_session): """Connection to the emulator from a worker script invoked via the Script() action""" def __init__(self,debug=False): """Initialize the object. Args: debug (bool): True to log debug information to stderr. Raises: StartupException: Insufficient information in the environment to connect to the emulator. """ _session.__init__(self, debug) self._socket = None self._infd = -1 self._outfd = -1 # Socket or pipes port = os.getenv('X3270PORT') if (port != None): # Connect to a TCP port. self._socket = socket.create_connection(['127.0.0.1',int(port)]) self._to3270 = self._socket.makefile('w', encoding='utf-8') self._from3270 = self._socket.makefile('r', encoding='utf-8') self._debug('Connected') emulator_encoding = self.run_action('Query(LocalEncoding)') if (emulator_encoding != 'UTF-8'): self._to3270 = self._socket.makefile('w', encoding=emulator_encoding) self._from3270 = self._socket.makefile('r', encoding=emulator_encoding) else: # Talk to pipe file descriptors. infd = os.getenv('X3270INPUT') outfd = os.getenv('X3270OUTPUT') if (infd == None or outfd == None): raise StartupException("No X3270PORT, X3270INPUT or X3270OUTPUT defined") self._infd = int(infd) self._to3270 = io.open(self._infd, 'wt', encoding='utf-8', closefd=False) self._outfd = int(outfd) self._from3270 = io.open(self._outfd, 'rt', encoding='utf-8', closefd=False) self._debug('Pipes connected') emulator_encoding = self.run_action('Query(LocalEncoding)') if (emulator_encoding != 'UTF-8'): self._to3270 = io.open(self._infd, 'wt', encoding=emulator_encoding, closefd=False) self._from3270 = io.open(self._outfd, 'rt', encoding=emulator_encoding, closefd=False) def __del__(self): if (self._socket != None): self._socket.close(); if (self._infd != -1): os.close(self._infd) if (self._outfd != -1): os.close(self._outfd) _session.__del__(self) self._debug('worker_connection deleted') suite3270-4.1/Common/Win32/000077500000000000000000000000001413735575200151715ustar00rootroot00000000000000suite3270-4.1/Common/Win32/deprecated.h000066400000000000000000000035731413735575200174520ustar00rootroot00000000000000/* * Copyright (c) 2007-2013, Paul Mattes. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the names of Paul Mattes nor the names of his contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO * EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * Redefinitions of POSIX functions that MSC doesn't like the names of. */ #define access _access #define close _close #define dup _dup #define fdopen _fdopen #define fileno _fileno #define getpid _getpid #define getcwd _getcwd #define open _open #define putenv _putenv #define read _read #define strdup _strdup #define unlink _unlink #define write _write suite3270-4.1/Common/Win32/gdi_print.c000066400000000000000000001070041413735575200173160ustar00rootroot00000000000000/* * Copyright (c) 1994-2019 Paul Mattes. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the names of Paul Mattes nor the names of his contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO * EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * gdi_print.c * GDI screen printing functions. */ #include "globals.h" #include #include #include #include #include "appres.h" #include "3270ds.h" #include "ctlr.h" #include "ctlrc.h" #include "resources.h" #include "fprint_screen.h" #include "gdi_print.h" #include "nvt.h" #include "popups.h" #include "task.h" #include "trace.h" #include "unicodec.h" #include "utils.h" #include "w3misc.h" /* Defines */ #define PPI 72 /* points per inch */ /* Typedefs */ /* Globals */ /* Statics */ typedef struct { /* user parameters: */ int orientation; /* orientation */ double hmargin; /* horizontal margin in inches */ double vmargin; /* vertical margin in inches */ const char *font_name; /* font name */ int font_size; /* font size in points */ int spp; /* screens per page */ bool done; /* done fetching values */ } uparm_t; static uparm_t uparm; static struct { /* printer characteristics: */ int ppiX, ppiY; /* points per inch */ int poffX, poffY; /* left, top physical offsets */ int horzres, vertres; /* resolution (usable area) */ int pwidth, pheight; /* physical width, height */ } pchar; static struct { /* printer state */ bool active; /* is GDI printing active? */ char *caption; /* caption */ int out_row; /* next row to print to */ int screens; /* number of screens on current page */ PRINTDLG dlg; /* Windows print dialog */ FLOAT xptscale, yptscale; /* x, y point-to-LU scaling factors */ int hmargin_pixels, vmargin_pixels; /* margins, in pixels */ int usable_xpixels, usable_ypixels;/* usable area (pixels) */ int usable_cols, usable_rows;/* usable area (chars) */ HFONT font, bold_font, underscore_font, bold_underscore_font; HFONT caption_font; /* fonts */ SIZE space_size; /* size of a space character */ INT *dx; /* spacing array */ HANDLE thread; /* thread to run the print dialog */ HANDLE done_event; /* event to signal dialog is done */ bool cancel; /* true if dialog canceled */ void *wait_context; /* task wait context */ } pstate; static bool pstate_initted = false; /* Forward declarations. */ static void gdi_get_params(uparm_t *up); static gdi_status_t gdi_init(const char *printer_name, unsigned opts, const char **fail, void *wait_context); static int gdi_screenful(struct ea *ea, unsigned short rows, unsigned short cols, const char **fail); static int gdi_done(const char **fail); static void gdi_abort(void); static BOOL get_printer_device(const char *printer_name, HGLOBAL *pdevnames, HGLOBAL *pdevmode); /* * Initialize printing to a GDI printer. */ gdi_status_t gdi_print_start(const char *printer_name, unsigned opts, void *wait_context) { const char *fail = ""; if (!uparm.done) { /* Set the defaults. */ uparm.orientation = 0; uparm.hmargin = 0.5; uparm.vmargin = 0.5; uparm.font_name = NULL; uparm.font_size = 0; /* auto */ uparm.spp = 1; /* Gather up the parameters. */ gdi_get_params(&uparm); /* Don't do this again. */ uparm.done = true; } /* Initialize the printer and pop up the dialog. */ switch (gdi_init(printer_name, opts, &fail, wait_context)) { case GDI_STATUS_SUCCESS: vtrace("[gdi] initialized\n"); break; case GDI_STATUS_ERROR: popup_an_error("Printer initialization error: %s", fail); return GDI_STATUS_ERROR; case GDI_STATUS_CANCEL: vtrace("[gdi] canceled\n"); return GDI_STATUS_CANCEL; case GDI_STATUS_WAIT: vtrace("[gdi] waiting\n"); return GDI_STATUS_WAIT; } return GDI_STATUS_SUCCESS; } /* Finish printing to a GDI printer. */ gdi_status_t gdi_print_finish(FILE *f, const char *caption) { size_t nr; struct ea *ea_tmp; gdi_header_t h; const char *fail = ""; /* Save the caption. */ if (caption != NULL) { Replace(pstate.caption, NewString(caption)); } else { Replace(pstate.caption, NULL); } /* Allocate the buffer. */ ea_tmp = Malloc((((maxROWS * maxCOLS) + 1) * sizeof(struct ea))); /* Set up the fake fa in location -1. */ memset(&ea_tmp[0], '\0', sizeof(struct ea)); ea_tmp[0].fa = FA_PRINTABLE | FA_MODIFY; /* Rewind the file. */ fflush(f); rewind(f); /* Read it back. */ while ((nr = fread(&h, sizeof(gdi_header_t), 1, f)) == 1) { /* Check the signature. */ if (h.signature != GDI_SIGNATURE) { popup_an_error("Corrupt temporary file (signature)"); goto abort; } /* Check the screen dimensions. */ if (h.rows > maxROWS || h.cols > maxCOLS) { popup_an_error("Corrupt temporary file (screen size)"); goto abort; } /* Read the screen image in. */ if (fread(ea_tmp + 1, sizeof(struct ea), h.rows * h.cols, f) != h.rows * h.cols) { popup_an_error("Truncated temporary file"); goto abort; } /* Process it. */ if (gdi_screenful(ea_tmp + 1, h.rows, h.cols, &fail) < 0) { popup_an_error("Printing error: %s", fail); goto abort; } } if (gdi_done(&fail) < 0) { popup_an_error("Final printing error: %s", fail); goto abort; } Free(ea_tmp); pstate.active = false; return GDI_STATUS_SUCCESS; abort: Free(ea_tmp); gdi_abort(); return GDI_STATUS_ERROR; } /* * Validate and scale a margin value. */ static double parse_margin(char *s, const char *what) { double d; char *nextp; d = strtod(s, &nextp); if (d > 0.0) { while (*nextp == ' ') { nextp++; } if (*nextp == '\0' || *nextp == '"' || !strcasecmp(nextp, "in") || !strcasecmp(nextp, "inch") || !strcasecmp(nextp, "inches")) { /* Do nothing. */ } else if (!strcasecmp(nextp, "mm")) { d /= 25.4; } else if (!strcasecmp(nextp, "cm")) { d /= 2.54; } else { vtrace("gdi: unknown %s unit '%s'\n", what, nextp); } } else { vtrace("gdi: invalid %s '%s'\n", what, s); return 0; } return d; } /* * Gather the user parameters from resources. */ static void gdi_get_params(uparm_t *up) { char *s; double d; unsigned long l; char *nextp; /* Orientation. */ if ((s = get_resource(ResPrintTextOrientation)) != NULL) { if (!strcasecmp(s, "portrait")) { up->orientation = DMORIENT_PORTRAIT; } else if (!strcasecmp(s, "landscape")) { up->orientation = DMORIENT_LANDSCAPE; } else { vtrace("gdi: unknown orientation '%s'\n", s); } } /* Horizontal margin. */ if ((s = get_resource(ResPrintTextHorizontalMargin)) != NULL) { d = parse_margin(s, ResPrintTextHorizontalMargin); if (d > 0) { up->hmargin = d; } } /* Vertical margin. */ if ((s = get_resource(ResPrintTextVerticalMargin)) != NULL) { d = parse_margin(s, ResPrintTextVerticalMargin); if (d > 0) { up->vmargin = d; } } /* Font name. */ if ((s = get_resource(ResPrintTextFont)) != NULL) { up->font_name = s; } /* Font size. */ if ((s = get_resource(ResPrintTextSize)) != NULL) { if (strcasecmp(s, "auto")) { l = strtoul(s, &nextp, 0); if (l > 0) { up->font_size = (int)l; } else { vtrace("gdi: invalid %s '%s'\n", ResPrintTextSize, s); } } } /* Screens per page. */ if ((s = get_resource(ResPrintTextScreensPerPage)) != NULL) { l = strtoul(s, &nextp, 0); if (l > 0) { up->spp = (int)l; } else { vtrace("gdi: invalid %s '%s'\n", ResPrintTextScreensPerPage, s); } } } /* * Clean up fonts. */ static void cleanup_fonts(void) { if (pstate.font) { DeleteObject(pstate.font); pstate.font = NULL; } if (pstate.bold_font) { DeleteObject(pstate.bold_font); pstate.bold_font = NULL; } if (pstate.underscore_font) { DeleteObject(pstate.underscore_font); pstate.underscore_font = NULL; } if (pstate.caption_font) { DeleteObject(pstate.caption_font); pstate.caption_font = NULL; } pstate.active = false; } /* * Create a Roman font. * Returns 0 for success, -1 for failure. */ static int create_roman_font(HDC dc, int fheight, int fwidth, const char **fail) { char *w, *h; w = fwidth? xs_buffer("%d", fwidth): NewString("(auto)"); h = fheight? xs_buffer("%d", fheight): NewString("(auto)"); vtrace("[gdi] requesting a font %sx%s logical units\n", w, h); Free(w); Free(h); pstate.font = CreateFont( fheight, /* height */ fwidth, /* width */ 0, /* escapement */ 0, /* orientation */ FW_NORMAL, /* weight */ FALSE, /* italic */ FALSE, /* underline */ FALSE, /* strikeout */ DEFAULT_CHARSET, /* character set */ OUT_OUTLINE_PRECIS, /* output precision */ CLIP_DEFAULT_PRECIS,/* clip precision */ DEFAULT_QUALITY, /* quality */ FIXED_PITCH|FF_DONTCARE,/* pitch and family */ uparm.font_name); /* face */ if (pstate.font == NULL) { *fail = "CreateFont failed"; return -1; } /* Measure a space to find out the size we got. */ SelectObject(dc, pstate.font); if (!GetTextExtentPoint32(dc, " ", 1, &pstate.space_size)) { *fail = "GetTextExtentPoint32 failed"; return -1; } vtrace("[gdi] space character is %dx%d logical units\n", (int)pstate.space_size.cx, (int)pstate.space_size.cy); pstate.usable_cols = pstate.usable_xpixels / pstate.space_size.cx; pstate.usable_rows = pstate.usable_ypixels / pstate.space_size.cy; vtrace("[gdi] usable area is %dx%d characters\n", pstate.usable_cols, pstate.usable_rows); return 0; } /* * Return the default printer name. */ static char * get_default_printer_name(char *errbuf, size_t errbuf_size) { DWORD size; char *buf; /* Figure out how much memory to allocate. */ size = 0; GetDefaultPrinter(NULL, &size); buf = Malloc(size); if (GetDefaultPrinter(buf, &size) == 0) { snprintf(errbuf, errbuf_size, "Cannot determine default printer"); return NULL; } return buf; } /* Thread to post the print dialog. */ static DWORD WINAPI post_print_dialog(LPVOID lpParameter _is_unused) { if (!PrintDlg(&pstate.dlg)) { pstate.cancel = true; } SetEvent(pstate.done_event); return 0; } /* The print dialog is complete. */ static void print_dialog_complete(iosrc_t fd _is_unused, ioid_t id _is_unused) { vtrace("Printer dialog complete (%s)\n", pstate.cancel? "cancel": "continue"); pstate.thread = INVALID_HANDLE_VALUE; task_resume_xwait(pstate.wait_context, pstate.cancel, "print dialog complete"); } /* * Initalize the named GDI printer. If the name is NULL, use the default * printer. */ static gdi_status_t gdi_init(const char *printer_name, unsigned opts, const char **fail, void *wait_context) { char *default_printer_name = NULL; LPDEVMODE devmode; HDC dc; DOCINFO docinfo; DEVNAMES *devnames; int rmargin, bmargin; /* right margin, bottom margin */ int maxphmargin, maxpvmargin; int i; static char get_fail[1024]; int fheight, fwidth; if (!pstate_initted) { pstate.thread = INVALID_HANDLE_VALUE; pstate.done_event = INVALID_HANDLE_VALUE; pstate_initted = true; } if (pstate.active) { *fail = "Only one GDI document at a time"; goto failed; } if (pstate.thread != INVALID_HANDLE_VALUE) { *fail = "Print dialog already pending"; goto failed; } if (!(opts & FPS_DIALOG_COMPLETE)) { memset(&pstate.dlg, '\0', sizeof(pstate.dlg)); pstate.dlg.lStructSize = sizeof(pstate.dlg); pstate.dlg.Flags = PD_RETURNDC | PD_NOPAGENUMS | PD_HIDEPRINTTOFILE | PD_NOSELECTION; } if (printer_name == NULL || !*printer_name) { default_printer_name = get_default_printer_name(get_fail, sizeof(get_fail)); if (default_printer_name == NULL) { *fail = get_fail; goto failed; } printer_name = default_printer_name; } if (!get_printer_device(printer_name, &pstate.dlg.hDevNames, &pstate.dlg.hDevMode)) { snprintf(get_fail, sizeof(get_fail), "GetPrinter(%s) failed: %s", printer_name, win32_strerror(GetLastError())); *fail = get_fail; goto failed; } if (uparm.orientation) { devmode = (LPDEVMODE)GlobalLock(pstate.dlg.hDevMode); devmode->dmFields |= DM_ORIENTATION; devmode->dmOrientation = uparm.orientation; GlobalUnlock(devmode); } if (opts & FPS_NO_DIALOG) { /* They don't want the print dialog. Allocate a DC for it. */ devmode = (LPDEVMODE)GlobalLock(pstate.dlg.hDevMode); pstate.dlg.hDC = CreateDC("WINSPOOL", printer_name, NULL, devmode); GlobalUnlock(devmode); if (pstate.dlg.hDC == NULL) { snprintf(get_fail, sizeof(get_fail), "Cannot create DC for " "printer '%s'", printer_name); *fail = get_fail; goto failed; } } else if (!(opts & FPS_DIALOG_COMPLETE)) { if (default_printer_name != NULL) { Free(default_printer_name); default_printer_name = NULL; } /* Pop up the dialog to get the printer characteristics. */ pstate.cancel = false; pstate.wait_context = wait_context; if (pstate.done_event == INVALID_HANDLE_VALUE) { pstate.done_event = CreateEvent(NULL, FALSE, FALSE, NULL); AddInput(pstate.done_event, print_dialog_complete); } else { ResetEvent(pstate.done_event); /* just in case */ } pstate.cancel = false; pstate.thread = CreateThread(NULL, 0, post_print_dialog, NULL, 0, NULL); return GDI_STATUS_WAIT; } dc = pstate.dlg.hDC; if (default_printer_name != NULL) { Free(default_printer_name); default_printer_name = NULL; } /* Find out the printer characteristics. */ /* LOGPIXELSX and LOGPIXELSY are the pixels-per-inch for the printer. */ pchar.ppiX = GetDeviceCaps(dc, LOGPIXELSX); if (pchar.ppiX <= 0) { *fail = "Can't get LOGPIXELSX"; goto failed; } pchar.ppiY = GetDeviceCaps(dc, LOGPIXELSY); if (pchar.ppiY <= 0) { *fail = "Can't get LOGPIXELSY"; goto failed; } /* * PHYSICALOFFSETX and PHYSICALOFFSETY are the fixed top and left-hand * margins, in pixels. Whatever you print is offset by these amounts, so * you have to subtract them from your coordinates. You cannot print in * these areas. */ pchar.poffX = GetDeviceCaps(dc, PHYSICALOFFSETX); if (pchar.poffX < 0) { *fail = "Can't get PHYSICALOFFSETX"; goto failed; } pchar.poffY = GetDeviceCaps(dc, PHYSICALOFFSETY); if (pchar.poffY < 0) { *fail = "Can't get PHYSICALOFFSETY"; goto failed; } /* * HORZRES and VERTRES are the size of the usable area of the page, in * pixels. They implicitly give you the size of the right-hand and * bottom physical offsets. */ pchar.horzres = GetDeviceCaps(dc, HORZRES); if (pchar.horzres <= 0) { *fail = "Can't get HORZRES"; goto failed; } pchar.vertres = GetDeviceCaps(dc, VERTRES); if (pchar.vertres <= 0) { *fail = "Can't get VERTRES"; goto failed; } /* * PHYSICALWIDTH and PHYSICALHEIGHT are the size of the entire area of * the page, in pixels. */ pchar.pwidth = GetDeviceCaps(dc, PHYSICALWIDTH); if (pchar.pwidth <= 0) { *fail = "Can't get PHYSICALWIDTH"; goto failed; } pchar.pheight = GetDeviceCaps(dc, PHYSICALHEIGHT); if (pchar.pheight <= 0) { *fail = "Can't get PHYSICALHEIGHT"; goto failed; } /* Trace the device characteristics. */ devnames = (DEVNAMES *)GlobalLock(pstate.dlg.hDevNames); vtrace("[gdi] Printer '%s' capabilities:\n", (char *)devnames + devnames->wDeviceOffset); GlobalUnlock(devnames); vtrace("[gdi] LOGPIXELSX %d LOGPIXELSY %d\n", pchar.ppiX, pchar.ppiY); vtrace("[gdi] PHYSICALOFFSETX %d PHYSICALOFFSETY %d\n", pchar.poffX, pchar.poffY); vtrace("[gdi] HORZRES %d VERTRES %d\n", pchar.horzres, pchar.vertres); vtrace("[gdi] PHYSICALWIDTH %d PHYSICALHEIGHT %d\n", pchar.pwidth, pchar.pheight); /* Compute the scale factors (points to pixels). */ pstate.xptscale = (FLOAT)pchar.ppiX / (FLOAT)PPI; pstate.yptscale = (FLOAT)pchar.ppiY / (FLOAT)PPI; /* Compute the implied right and bottom margins. */ rmargin = pchar.pwidth - pchar.horzres - pchar.poffX; bmargin = pchar.pheight - pchar.vertres - pchar.poffY; if (rmargin > pchar.poffX) { maxphmargin = rmargin; } else { maxphmargin = pchar.poffX; } if (bmargin > pchar.poffY) { maxpvmargin = bmargin; } else { maxpvmargin = pchar.poffY; } vtrace("[gdi] maxphmargin is %d, maxpvmargin is %d pixels\n", maxphmargin, maxpvmargin); /* Compute the margins in pixels. */ pstate.hmargin_pixels = (int)(uparm.hmargin * pchar.ppiX); pstate.vmargin_pixels = (int)(uparm.vmargin * pchar.ppiY); /* See if the margins are too small. */ if (pstate.hmargin_pixels < maxphmargin) { pstate.hmargin_pixels = maxphmargin; vtrace("[gdi] hmargin is too small, setting to %g\"\n", (float)pstate.hmargin_pixels / pchar.ppiX); } if (pstate.vmargin_pixels < maxpvmargin) { pstate.vmargin_pixels = maxpvmargin; vtrace("[gdi] vmargin is too small, setting to %g\"\n", (float)pstate.vmargin_pixels / pchar.ppiX); } /* See if the margins are too big. */ if (pstate.hmargin_pixels * 2 >= pchar.horzres) { pstate.hmargin_pixels = pchar.ppiX; vtrace("[gdi] hmargin is too big, setting to 1\"\n"); } if (pstate.vmargin_pixels * 2 >= pchar.vertres) { pstate.vmargin_pixels = pchar.ppiY; vtrace("[gdi] vmargin is too big, setting to 1\"\n"); } /* * Compute the usable area in pixels. That's the physical page size * less the margins, now that we know that the margins are reasonable. */ pstate.usable_xpixels = pchar.pwidth - (2 * pstate.hmargin_pixels); pstate.usable_ypixels = pchar.pheight - (2 * pstate.vmargin_pixels); vtrace("[gdi] usable area is %dx%d pixels\n", pstate.usable_xpixels, pstate.usable_ypixels); /* * Create the Roman font. * * If they specified a particular font size, use that as the height, * and let the system pick the width. * * If they did not specify a font size, or chose "auto", then let the * "screens per page" drive what to do. If "screens per page" is set, * then divide the page Y pixels by the screens-per-page times the * display height to get the font height, and let the system pick the * width. * * Otherwise, divide the page X pixels by COLS to get the font width, * and let the system pick the height. */ if (uparm.font_size) { /* User-specified fixed font size. */ fheight = (int)(uparm.font_size * pstate.yptscale); fwidth = 0; } else { if (uparm.spp > 1) { /* * Scale the height so the specified number of screens will * fit. */ fheight = pstate.usable_ypixels / (uparm.spp * maxROWS /* spp screens */ + (uparm.spp - 1) /* spaces between screens */ + 2 /* space and caption*/ ); fwidth = 0; } else { /* * Scale the width so a screen will fit the page horizonally. */ fheight = 0; fwidth = pstate.usable_xpixels / maxCOLS; } } if (create_roman_font(dc, fheight, fwidth, fail) < 0) { goto failed; } /* * If we computed the font size, see if the other dimension is too * big. If it is, scale using the other dimension, which is guaranteed to * make the original computed dimension no bigger. * * XXX: This needs more testing. */ if (!uparm.font_size) { if (fwidth == 0) { /* * We computed the height because spp > 1. See if the width * overflows. */ if (pstate.space_size.cx * maxCOLS > pstate.usable_xpixels) { vtrace("[gdi] font too wide, retrying\n"); DeleteObject(pstate.font); pstate.font = NULL; fheight = 0; fwidth = pstate.usable_xpixels / maxCOLS; if (create_roman_font(dc, fheight, fwidth, fail) < 0) { goto failed; } } } else if (fheight == 0) { /* * We computed the width (spp <= 1). See if the height * overflows. */ if (pstate.space_size.cy * (maxROWS + 2) > pstate.usable_xpixels) { vtrace("[gdi] font too high, retrying\n"); DeleteObject(pstate.font); pstate.font = NULL; fheight = pstate.usable_xpixels / (maxROWS + 2); fwidth = 0; if (create_roman_font(dc, fheight, fwidth, fail) < 0) { goto failed; } } } } /* Create a bold font that is the same size, if possible. */ pstate.bold_font = CreateFont( pstate.space_size.cy, /* height */ pstate.space_size.cx, /* width */ 0, /* escapement */ 0, /* orientation */ FW_BOLD, /* weight */ FALSE, /* italic */ FALSE, /* underline */ FALSE, /* strikeout */ ANSI_CHARSET, /* character set */ OUT_OUTLINE_PRECIS, /* output precision */ CLIP_DEFAULT_PRECIS, /* clip precision */ DEFAULT_QUALITY, /* quality */ FIXED_PITCH|FF_DONTCARE,/* pitch and family */ uparm.font_name); /* face */ if (pstate.bold_font == NULL) { *fail = "CreateFont (bold) failed"; goto failed; } /* Create an underscore font that is the same size, if possible. */ pstate.underscore_font = CreateFont( pstate.space_size.cy, /* height */ pstate.space_size.cx, /* width */ 0, /* escapement */ 0, /* orientation */ FW_NORMAL, /* weight */ FALSE, /* italic */ TRUE, /* underline */ FALSE, /* strikeout */ ANSI_CHARSET, /* character set */ OUT_OUTLINE_PRECIS, /* output precision */ CLIP_DEFAULT_PRECIS, /* clip precision */ DEFAULT_QUALITY, /* quality */ FIXED_PITCH|FF_DONTCARE,/* pitch and family */ uparm.font_name); /* face */ if (pstate.underscore_font == NULL) { *fail = "CreateFont (underscore) failed"; goto failed; } /* Create a bold, underscore font that is the same size, if possible. */ pstate.bold_underscore_font = CreateFont( pstate.space_size.cy, /* height */ pstate.space_size.cx, /* width */ 0, /* escapement */ 0, /* orientation */ FW_BOLD, /* weight */ FALSE, /* italic */ TRUE, /* underline */ FALSE, /* strikeout */ ANSI_CHARSET, /* character set */ OUT_OUTLINE_PRECIS, /* output precision */ CLIP_DEFAULT_PRECIS, /* clip precision */ DEFAULT_QUALITY, /* quality */ FIXED_PITCH|FF_DONTCARE,/* pitch and family */ uparm.font_name); /* face */ if (pstate.bold_underscore_font == NULL) { *fail = "CreateFont (bold underscore) failed"; goto failed; } /* Create a caption font. */ pstate.caption_font = CreateFont( pstate.space_size.cy, /* height */ 0, /* width */ 0, /* escapement */ 0, /* orientation */ FW_NORMAL, /* weight */ TRUE, /* italic */ FALSE, /* underline */ FALSE, /* strikeout */ ANSI_CHARSET, /* character set */ OUT_OUTLINE_PRECIS, /* output precision */ CLIP_DEFAULT_PRECIS, /* clip precision */ DEFAULT_QUALITY, /* quality */ VARIABLE_PITCH|FF_DONTCARE,/* pitch and family */ "Times New Roman"); /* face */ if (pstate.bold_underscore_font == NULL) { *fail = "CreateFont (bold underscore) failed"; goto failed; } /* Set up the manual spacing array. */ pstate.dx = Malloc(sizeof(INT) * maxCOLS); for (i = 0; i < maxCOLS; i++) { pstate.dx[i] = pstate.space_size.cx; } /* Fill in the document info. */ memset(&docinfo, '\0', sizeof(docinfo)); docinfo.cbSize = sizeof(docinfo); docinfo.lpszDocName = "wc3270 screen"; /* Start the document. */ if (StartDoc(dc, &docinfo) <= 0) { *fail = "StartDoc failed"; goto failed; } pstate.active = true; return GDI_STATUS_SUCCESS; failed: /* Clean up what we can and return failure. */ if (default_printer_name != NULL) { Free(default_printer_name); } cleanup_fonts(); return GDI_STATUS_ERROR; } /* * Print one screeful to the GDI printer. */ static int gdi_screenful(struct ea *ea, unsigned short rows, unsigned short cols, const char **fail) { HDC dc = pstate.dlg.hDC; LPDEVMODE devmode; int row, col, baddr; int rc = 0; int status; int fa_addr = find_field_attribute_ea(0, ea); unsigned char fa = ea[fa_addr].fa; bool fa_high, high; bool fa_underline, underline; bool fa_reverse, reverse; ucs4_t uc; int usable_rows; HFONT got_font = NULL, want_font; #if defined(GDI_DEBUG) /*[*/ const char *want_font_name; #endif /*]*/ enum { COLOR_NONE, COLOR_NORMAL, COLOR_REVERSE } got_color = COLOR_NONE, want_color; devmode = (LPDEVMODE)GlobalLock(pstate.dlg.hDevMode); /* Compute the usable rows, including the caption. */ usable_rows = pstate.usable_rows; if (pstate.caption) { usable_rows -= 2; } /* * Does this screen fit? * (Note that the first test, "pstate.out_row", is there so that if the * font is so big the image won't fit at all, we still print as much * of it as we can.) */ if (pstate.out_row && pstate.out_row + ROWS > usable_rows) { if (EndPage(dc) <= 0) { *fail = "EndPage failed"; rc = -1; goto done; } pstate.out_row = 0; pstate.screens = 0; } /* If there is a caption, put it on the last line. */ if (pstate.out_row == 0 && pstate.caption != NULL) { SelectObject(dc, pstate.caption_font); status = ExtTextOut(dc, pstate.hmargin_pixels - pchar.poffX, pstate.vmargin_pixels + ((pstate.usable_rows - 1) * pstate.space_size.cy) - pchar.poffY, 0, NULL, pstate.caption, (UINT)strlen(pstate.caption), NULL); if (status <= 0) { *fail = "ExtTextOut(caption) failed"; rc = -1; goto done; } } /* Draw a line separating the screens. */ if (pstate.out_row) { HPEN pen; pen = CreatePen(PS_SOLID, 3, RGB(0, 0, 0)); SelectObject(dc, pen); status = MoveToEx(dc, pstate.hmargin_pixels - pchar.poffX, pstate.vmargin_pixels + (pstate.out_row * pstate.space_size.cy) + (pstate.space_size.cy / 2) - pchar.poffY, NULL); if (status == 0) { *fail = "MoveToEx failed"; rc = -1; goto done; } status = LineTo(dc, pstate.hmargin_pixels - pchar.poffX + pstate.usable_xpixels, pstate.vmargin_pixels + (pstate.out_row * pstate.space_size.cy) + (pstate.space_size.cy / 2) - pchar.poffY); if (status == 0) { *fail = "LineTo failed"; rc = -1; goto done; } DeleteObject(pen); } /* Now dump out a screen's worth. */ if (ea[fa_addr].gr & GR_INTENSIFY) { fa_high = true; } else { fa_high = FA_IS_HIGH(fa); } fa_reverse = ((ea[fa_addr].gr & GR_REVERSE) != 0); fa_underline = ((ea[fa_addr].gr & GR_UNDERLINE) != 0); for (baddr = 0, row = 0; row < ROWS; row++) { if (pstate.out_row + row >= usable_rows) { break; } for (col = 0; col < COLS; col++, baddr++) { wchar_t w; INT wdx; if (ea[baddr].fa) { fa = ea[baddr].fa; if (ea[baddr].gr & GR_INTENSIFY) { fa_high = true; } else { fa_high = FA_IS_HIGH(fa); } fa_reverse = ((ea[fa_addr].gr & GR_REVERSE) != 0); fa_underline = ((ea[fa_addr].gr & GR_UNDERLINE) != 0); /* Just skip it. */ continue; } if (col >= pstate.usable_cols) { continue; } if (FA_IS_ZERO(fa)) { if (ctlr_dbcs_state_ea(baddr, ea) == DBCS_LEFT) { uc = 0x3000; } else { uc = ' '; } } else if (is_nvt(&ea[baddr], false, &uc)) { switch (ctlr_dbcs_state(baddr)) { case DBCS_NONE: case DBCS_SB: case DBCS_LEFT: break; case DBCS_RIGHT: /* skip altogether, we took care of it above */ continue; default: uc = ' '; break; } } else { /* Convert EBCDIC to Unicode. */ switch (ctlr_dbcs_state(baddr)) { case DBCS_NONE: case DBCS_SB: uc = ebcdic_to_unicode(ea[baddr].ec, ea[baddr].cs, EUO_NONE); if (uc == 0) { uc = ' '; } break; case DBCS_LEFT: uc = ebcdic_to_unicode((ea[baddr].ec << 8) | ea[baddr + 1].ec, CS_BASE, EUO_NONE); if (uc == 0) { uc = 0x3000; } break; case DBCS_RIGHT: /* skip altogether, we took care of it above */ continue; default: uc = ' '; break; } } /* Figure out the attributes of the current buffer position. */ high = ((ea[baddr].gr & GR_INTENSIFY) != 0); if (!high) { high = fa_high; } reverse = ((ea[fa_addr].gr & GR_REVERSE) != 0); if (!reverse) { reverse = fa_reverse; } underline = ((ea[fa_addr].gr & GR_UNDERLINE) != 0); if (!underline) { underline = fa_underline; } /* Set the bg/fg color and font. */ if (reverse) { want_color = COLOR_REVERSE; } else { want_color = COLOR_NORMAL; } if (want_color != got_color) { switch (want_color) { case COLOR_REVERSE: SetTextColor(dc, 0xffffff); SetBkColor(dc, 0); SetBkMode(dc, OPAQUE); break; case COLOR_NORMAL: SetTextColor(dc, 0); SetBkColor(dc, 0xffffff); SetBkMode(dc, TRANSPARENT); break; default: break; } got_color = want_color; } if (!high && !underline) { want_font = pstate.font; #if defined(GDI_DEBUG) /*[*/ want_font_name = "Roman"; #endif /*]*/ } else if (high && !underline) { want_font = pstate.bold_font; #if defined(GDI_DEBUG) /*[*/ want_font_name = "Bold"; #endif /*]*/ } else if (!high && underline) { want_font = pstate.underscore_font; #if defined(GDI_DEBUG) /*[*/ want_font_name = "Underscore"; #endif /*]*/ } else { want_font = pstate.bold_underscore_font; #if defined(GDI_DEBUG) /*[*/ want_font_name = "Underscore"; #endif /*]*/ } if (want_font != got_font) { SelectObject(dc, want_font); got_font = want_font; #if defined(GDI_DEBUG) /*[*/ vtrace("[gdi] selecting %s\n", want_font_name); #endif /*]*/ } /* * Handle spaces and DBCS spaces (U+3000). * If not reverse or underline, just skip over them. * Otherwise, print a space or two spaces, using the * right font and modes. */ if (uc == ' ' || uc == 0x3000) { if (reverse || underline) { status = ExtTextOut(dc, pstate.hmargin_pixels + (col * pstate.space_size.cx) - pchar.poffX, pstate.vmargin_pixels + ((pstate.out_row + row + 1) * pstate.space_size.cy) - pchar.poffY, 0, NULL, " ", (uc == 0x3000)? 2: 1, pstate.dx); if (status <= 0) { *fail = "ExtTextOut(space) failed"; rc = -1; goto done; } } continue; } /* * Emit one character at a time. This should be optimized to print * strings of characters with the same attributes. */ #if defined(GDI_DEBUG) /*[*/ if (uc != ' ') { vtrace("[gdi] row %d col %d x=%ld y=%ld uc=%lx\n", row, col, pstate.hmargin_pixels + (col * pstate.space_size.cx) - pchar.poffX, pstate.vmargin_pixels + ((pstate.out_row + row + 1) * pstate.space_size.cy) - pchar.poffY, uc); } #endif /*]*/ w = (wchar_t)uc; wdx = pstate.space_size.cx; status = ExtTextOutW(dc, pstate.hmargin_pixels + (col * pstate.space_size.cx) - pchar.poffX, pstate.vmargin_pixels + ((pstate.out_row + row + 1) * pstate.space_size.cy) - pchar.poffY, 0, NULL, &w, 1, &wdx); if (status <= 0) { *fail = "ExtTextOutW(image) failed"; rc = -1; goto done; } } } /* Tally the current screen and see if we need to go to a new page. */ pstate.out_row += (row + 1); /* current screen plus a gap */ pstate.screens++; if (pstate.out_row >= usable_rows || pstate.screens >= uparm.spp) { if (EndPage(dc) <= 0) { *fail = "EndPage failed"; rc = -1; goto done; } pstate.out_row = 0; pstate.screens = 0; } done: GlobalUnlock(devmode); return rc; } /* * Finish the GDI print-out and clean up the data structures. */ static int gdi_done(const char **fail) { int rc = 0; if (pstate.out_row) { if (EndPage(pstate.dlg.hDC) <= 0) { *fail = "EndPage failed"; rc = -1; } pstate.out_row = 0; } if (EndDoc(pstate.dlg.hDC) <= 0) { *fail = "EndDoc failed"; rc = -1; } cleanup_fonts(); return rc; } /* * Clean up the GDI data structures without attempting any more printing. */ static void gdi_abort(void) { if (pstate.out_row) { EndPage(pstate.dlg.hDC); pstate.out_row = 0; } EndDoc(pstate.dlg.hDC); cleanup_fonts(); } /* * Get a DEVMODE and DEVNAMES from a printer name. * * Returns TRUE for success, FALSE for failure. */ static BOOL get_printer_device(const char *printer_name, HGLOBAL *pdevnames, HGLOBAL *pdevmode) { HANDLE h; DWORD len, len2; PRINTER_INFO_2 *pi; size_t dmsize; HGLOBAL gdm; char *dm; size_t ldn; size_t lpn; size_t ltn; HGLOBAL gdn; DEVNAMES *dn; size_t offset; /* Gotta have something to return the values in. */ if (pdevmode == NULL || pdevnames == NULL) { return FALSE; } /* Open the printer. */ h = NULL; if (!OpenPrinter((char *)printer_name, &h, NULL)) { return FALSE; } /* Get a PRINTER_INFO_2 structure for the printer. */ GetPrinter(h, 2, NULL, 0, &len); pi = (PRINTER_INFO_2 *)malloc(len); if (!GetPrinter(h, 2, (LPBYTE)pi, len, &len2)) { free(pi); ClosePrinter(h); return FALSE; } ClosePrinter(h); h = NULL; /* Copy the DEVMODE from the PRINTER_INFO_2 into a global handle. */ dmsize = sizeof(*pi->pDevMode) + pi->pDevMode->dmDriverExtra; gdm = GlobalAlloc(GHND, dmsize); assert(gdm); dm = (char *)GlobalLock(gdm); assert(dm); memcpy(dm, pi->pDevMode, dmsize); GlobalUnlock(gdm); /* * Compute the size of the DEVNAMES structure from the fields in the * PRINTER_INFO_2. */ ldn = strlen(pi->pDriverName) + 1; lpn = strlen(pi->pPrinterName) + 1; ltn = strlen(pi->pPortName) + 1; /* * Construct a DEVNAMES from the PRINTER_INFO_2, allocated as a global * handle. */ gdn = GlobalAlloc(GHND, sizeof(DEVNAMES) + ldn + lpn + ltn); assert(gdn); dn = (DEVNAMES *)GlobalLock(gdn); assert(dn); memset(dn, '\0', sizeof(DEVNAMES)); offset = sizeof(DEVNAMES); dn->wDriverOffset = (WORD)offset; memcpy((char *)dn + offset, pi->pDriverName, ldn); offset += ldn; dn->wDeviceOffset = (WORD)offset; memcpy((char *)dn + offset, pi->pPrinterName, lpn); offset += lpn; dn->wOutputOffset = (WORD)offset; memcpy((char *)dn + offset, pi->pPortName, ltn); dn->wDefault = 0; /* Done filling in dn. */ GlobalUnlock(gdn); /* Done with the PRINTER_INFO_2. */ free(pi); pi = NULL; /* Return the devmode and devnames. */ *pdevmode = gdm; *pdevnames = gdn; /* Success. */ return TRUE; } suite3270-4.1/Common/Win32/manifest.tmpl000066400000000000000000000024141413735575200176760ustar00rootroot00000000000000 %DESCRIPTION% suite3270-4.1/Common/Win32/mkmanifest.c000077500000000000000000000163001413735575200174760ustar00rootroot00000000000000/* * Copyright (c) 2017 Paul Mattes. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the names of Paul Mattes nor the names of his contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO * EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * Construct a manifest file from a template. * Roughly Equivalent to the mkmanifest.sh used on Unix. * * mkmanifest * -a 32|64 * -d description * -e app-name * -m manifest-template * -v version-file */ #include #include #include #include "wincmn.h" typedef char bool; #define true 1 #define false 0 /* Keyword substitutions. */ #define SUBST(s) { s, "%" #s "%" } enum subst { NAME, VERSION, ARCHITECTURE, DESCRIPTION, NUM_SUBST }; static struct { enum subst subst; const char *keyword; char *value; } substs[] = { SUBST(NAME), SUBST(VERSION), SUBST(ARCHITECTURE), SUBST(DESCRIPTION) }; /* Allocate memory. */ void * Malloc(size_t len) { void *r; r = malloc(len); if (r == NULL) { fprintf(stderr, "out of memory\n"); exit(1); } return r; } /* Free memory. */ void Free(void *s) { free(s); } /* Allocate a string. */ static char * NewString(char *s) { return strcpy(Malloc(strlen(s) + 1), s); } /* Display usage and exit. */ void Usage(void) { fprintf(stderr, "Usage: mkmanifest -a 32|64 -d description -e app-name -m manifest-template -v version-file\n"); exit(1); } /* Parse the version string (3.2ga7) into Windows format (3.2.7.0). */ char * parse_version(const char *version_string) { enum fsm { BASE, DIG_A, DIG_A_DOT, DIG_B, KW, DIG_C } state = BASE; unsigned char c; char out[256]; char *outp = out; # define STORE(c) { \ if (outp - out >= sizeof(out)) { \ return NULL; \ } \ *outp++ = c; \ } while ((c = *version_string++)) { switch (state) { case BASE: if (isdigit(c)) { STORE(c); state = DIG_A; } else { return NULL; } break; case DIG_A: if (isdigit(c)) { STORE(c); } else if (c == '.') { STORE(c); state = DIG_A_DOT; } else { return NULL; } break; case DIG_A_DOT: if (isdigit(c)) { STORE(c); state = DIG_B; } else { return NULL; } break; case DIG_B: if (isdigit(c)) { STORE(c); } else { state = KW; } break; case KW: if (isdigit(c)) { STORE('.'); STORE(c); state = DIG_C; } break; case DIG_C: if (isdigit(c)) { STORE(c); } else { return NULL; } break; } } if (state != DIG_C) { return NULL; } STORE('.'); STORE('0'); STORE('\0'); return NewString(out); } int main(int argc, char *argv[]) { bool ia64 = false; FILE *f; char buf[1024]; char *version = NULL; char *manifest = NULL; char *arch = NULL; char *version_string = NULL; char *manifest_version = NULL; char *appname = NULL; char *description = NULL; int i, j, k; /* Check the command line. */ for (i = 1; i < argc; i++) { if (!strcmp(argv[i], "-e")) { if (i + 1 >= argc) { Usage(); } appname = argv[++i]; } else if (!strcmp(argv[i], "-v")) { if (i + 1 >= argc) { Usage(); } version = argv[++i]; } else if (!strcmp(argv[i], "-d")) { if (i + 1 >= argc) { Usage(); } description = argv[++i]; } else if (!strcmp(argv[i], "-a")) { if (i + 1 >= argc) { Usage(); } arch = argv[++i]; if (!strcmp(arch, "32") || !strcmp(arch, "Win32")) { ia64 = false; } else if (!strcmp(arch, "64") || !strcmp(arch, "x64")) { ia64 = true; } else { Usage(); } } else if (!strcmp(argv[i], "-m")) { if (i + 1 >= argc) { Usage(); } manifest = argv[++i]; } else { Usage(); } } if (appname == NULL || description == NULL || manifest == NULL || arch == NULL || version == NULL) { Usage(); } /* Read up version.txt. */ f = fopen(version, "r"); if (f == NULL) { perror(version); return 1; } while (fgets(buf, sizeof(buf), f) != NULL) { if (!strncmp(buf, "version=\"", 9)) { char *q; version_string = NewString(buf + 9); q = strchr(version_string, '"'); if (q == NULL) { fprintf(stderr, "syntax error in %s\n", version); return 1; } *q = '\0'; } } fclose(f); if (version_string == NULL) { fprintf(stderr, "missing version= in %s\n", version); return 1; } /* Translate the version. */ manifest_version = parse_version(version_string); if (manifest_version == NULL) { fprintf(stderr, "Syntax error in version '%s'\n", version_string); return 1; } /* Populate the subsitutions. */ substs[NAME].value = appname; substs[VERSION].value = manifest_version; substs[ARCHITECTURE].value = ia64? "ia64": "x86"; substs[DESCRIPTION].value = description; /* Check the substitutions. */ for (j = 0; j < NUM_SUBST; j++) { for (k = 0; k < NUM_SUBST; k++) { if (strstr(substs[k].value, substs[j].keyword) != NULL) { fprintf(stderr, "Substitution '%s' contains keyword '%s'\n", substs[k].value, substs[j].keyword); return 1; } } } /* Parse and substitute. */ f = fopen(manifest, "r"); if (f == NULL) { perror(manifest); return 1; } while (fgets(buf, sizeof(buf), f) != NULL) { int i; char *xbuf = NewString(buf); for (i = 0; i < NUM_SUBST; i++) { char *s; while ((s = strstr(xbuf, substs[i].keyword)) != NULL) { size_t left_len = s - xbuf; char *middle_string = substs[i].value; size_t middle_len = strlen(middle_string); char *right_string = s + strlen(substs[i].keyword); size_t right_len = strlen(right_string); size_t bufsize = left_len + middle_len + right_len + 1; char *ybuf = Malloc(bufsize); sprintf(ybuf, "%.*s%s%s", (int)left_len, xbuf, middle_string, right_string); Free(xbuf); xbuf = ybuf; } } write(1, xbuf, (int)strlen(xbuf)); Free(xbuf); } fclose(f); return 0; } suite3270-4.1/Common/Win32/mkmanifest.sh000077500000000000000000000046301413735575200176710ustar00rootroot00000000000000#!/usr/bin/env sh # Copyright (c) 2017 Paul Mattes. # All rights reserved. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # * Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # * Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in the # documentation and/or other materials provided with the distribution. # * Neither the names of Paul Mattes, Don Russell nor their contributors # may be used to endorse or promote products derived from this software # without specific prior written permission. # # THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS OR IMPLIED # WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF # MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO # EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, # SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, # PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; # OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, # WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR # OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF # ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. # Create a manifest file from the template # mkmanifest version.txt exe-name "description" [WIN64] #set -x set -e if [ $# -lt 4 -o $# -gt 5 ] then echo >&2 "Usage: mkmanifest.sh version.txt manifest.tmpl exe-name 'description' [1]" exit 2 fi . $1 # Name and description are easy. name="$3" description="$4" # Version is trickier. # .text becomes ...0 version_subst=`echo $version | sed 's/^\([0-9][0-9]*\)\.\([0-9][0-9]*\)[a-z][a-z]*\([0-9][0-9]*\)$/\1.\2.\3.0/'` # Architecture is straightforward, but odd. # If no last argument, assume x86. # Otherwise, "1" means ia64. case "$5" in "") arch=x86;; 1) arch=ia64;; *) echo >&2 "Invalid arch parameter (must be empty for x86, 1 for ia64)" exit 1 esac sed -e "s/%NAME%/$name/g" \ -e "s/%VERSION%/$version_subst/g" \ -e "s/%ARCHITECTURE%/$arch/g" \ -e "s/%DESCRIPTION%/$description/g" \ $2 suite3270-4.1/Common/Win32/mkversion.c000077500000000000000000000126471413735575200173670ustar00rootroot00000000000000/* * Copyright (c) 2008-2009, 2016 Paul Mattes. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the names of Paul Mattes nor the names of his contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO * EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * This program is a C-language encapsulation of all but the last line of: * * #! /bin/sh * # Create version.o from version.txt * * # Ensure that 'date' emits 7-bit U.S. ASCII. * LANG=C * LC_ALL=C * export LANG LC_ALL * * set -e * * . ./version.txt * builddate=`date` * sccsdate=`date +%Y/%m/%d` * user=${LOGNAME-$USER} * * # Create an all numeric timestamp for rpqnames. * # rpq.c will return this string of numbers in bcd format * # It is OK to change the length (+ or -), but use * # decimal (0-9) digits only. Length must be even number of digits. * rpq_timestamp=`date +%Y%m%d%H%M%S` * * trap 'rm -f version.c' 0 1 2 15 * * cat <version.c * char *build = "${2-x3270} v$version $builddate $user"; * char *app_defaults_version = "$adversion"; * static char sccsid[] = "@(#)${2-x3270} v$version $sccsdate $user"; * * const char *build_rpq_timestamp = "$rpq_timestamp"; * const char *build_rpq_version = "$version"; * EOF */ #include #include #include "wincmn.h" static char * NewString(char *s) { char *t = malloc(strlen(s) + 1); if (t == NULL) { fprintf(stderr, "out of memory\n"); exit(1); } return strcpy(t, s); } int main(int argc, char *argv[]) { FILE *f; char buf[1024]; char *version = NULL; char *adversion = NULL; char *cyear = NULL; char *user; __time64_t t; char *builddate; struct tm *tm; char sccsdate[128]; char rpqtime[128]; int is_w = 0; char *ofile = "version.c"; char *progname = "wc3270"; char *vtname = "version.txt"; if (argc > 1 && !strcmp(argv[1], "-w")) { is_w = 1; ofile = "wversion.c"; argv++; argc--; } if (argc > 1) { progname = argv[1]; argv++; argc--; } if (argc > 1) { vtname = argv[1]; argv++; argc--; } /* Read up version.txt. */ f = fopen(vtname, "r"); if (f == NULL) { perror("vtname"); return 1; } while (fgets(buf, sizeof(buf), f) != NULL) { if (!strncmp(buf, "version=\"", 9)) { char *q; version = NewString(buf + 9); q = strchr(version, '"'); if (q == NULL) { fprintf(stderr, "syntax error in %s\n", vtname); return 1; } *q = '\0'; } else if (!strncmp(buf, "adversion=\"", 11)) { char *q; adversion = NewString(buf + 11); q = strchr(adversion, '"'); if (q == NULL) { fprintf(stderr, "syntax error in %s\n", vtname); return 1; } *q = '\0'; } else if (!strncmp(buf, "cyear=\"", 7)) { char *q; cyear = NewString(buf + 7); q = strchr(cyear, '"'); if (q == NULL) { fprintf(stderr, "syntax error in %s\n", vtname); return 1; } *q = '\0'; } } fclose(f); if (version == NULL || adversion == NULL) { fprintf(stderr, "missing version= or adversion= in %s\n", vtname); return 1; } /* Grab the username. */ user = getenv("USERNAME"); if (user == NULL) { fprintf(stderr, "No %%USERNAME%%?\n"); return 1; } /* Format the dates. */ _time64(&t); tm = _gmtime64(&t); sprintf(sccsdate, "%d/%02d/%02d", tm->tm_year + 1900, tm->tm_mon + 1, tm->tm_mday); sprintf(rpqtime, "%02d%02d%02d%02d%02d%02d", tm->tm_year + 1900, tm->tm_mon + 1, tm->tm_mday, tm->tm_hour, tm->tm_min, tm->tm_sec); builddate = NewString(asctime(tm)); builddate[strlen(builddate) - 1] = '\0'; /* Create the code. */ f = fopen(ofile, "w"); if (f == NULL) { perror(ofile); return 1; } if (is_w) { fprintf(f, "const char *wversion = \"%s\";\n", version); } else { fprintf(f, "const char *app = \"%s\";\n", progname); fprintf(f, "const char *build = \"%s v%s %s %s\";\n", progname, version, builddate, user); fprintf(f, "const char *cyear = \"%s\";\n", cyear); fprintf(f, "const char *app_defaults_version = \"%s\";\n", adversion); fprintf(f, "static char sccsid[] = \"@(#)%s v%s %s %s\";\n", progname, version, sccsdate, user); fprintf(f, "const char *build_rpq_timestamp = \"%s\";\n", rpqtime); fprintf(f, "const char *build_rpq_version = \"%s\";\n", version); } fclose(f); return 0; } suite3270-4.1/Common/Win32/readpass000077500000000000000000000003161413735575200167210ustar00rootroot00000000000000#!/usr/bin/env bash # Get a password and put it in /tmp/pass read -p "Enter certificate password: " -r -s pass echo #echo -E $pass | sed -e 's-\\-\\\\-g' -e 's-!-\\!-g' >/tmp/pass echo -E $pass >/tmp/pass suite3270-4.1/Common/Win32/sio_schannel.c000077500000000000000000001431541413735575200200150ustar00rootroot00000000000000/* * Copyright (c) 2017, 2019-2020 Paul Mattes. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the names of Paul Mattes, Don Russell, Jeff Sparkes, GTRC * nor their contributors may be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES, "AS IS" AND ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. * IN NO EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, INDIRECT, * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * * This module borrows freely from "TLS with Schannel" posted on * http://www.coastrd.com/tls-with-schannel. */ /* * sio_schannel.c * Secure I/O via the Windows schannel facility. */ #include "globals.h" #define SECURITY_WIN32 #include #include #include #include #include #include "tls_config.h" #include "indent_s.h" #include "names.h" #include "sio.h" #include "varbuf.h" /* must precede sioc.h */ #include "sioc.h" #include "tls_passwd_gui.h" #include "trace.h" #include "utils.h" #include "w3misc.h" #include "winvers.h" #if !defined(SP_PROT_TLS1_1_CLIENT) # define SP_PROT_TLS1_1_CLIENT 0x200 #endif #if !defined(SP_PROT_TLS1_2_CLIENT) # define SP_PROT_TLS1_2_CLIENT 0x800 #endif /* TLS protocols to negotiate. */ #define TLS_PROTOCOLS \ (SP_PROT_TLS1_CLIENT | SP_PROT_TLS1_1_CLIENT | SP_PROT_TLS1_2_CLIENT) /* #define VERBOSE 1 */ /* dump protocol packets in hex */ #define MIN_READ 50 /* small amount to read from the socket at a time, so we are in no danger of reading more than one record */ #define INBUF (16 * 1024) /* preliminary input buffer size */ #define CN_EQ "CN=" #define CN_EQ_SIZE strlen(CN_EQ) #define DNS_NAME "DNS Name=" #define DNS_NAME_SIZE strlen(DNS_NAME) #define COMMA_SPACE ", " #define COMMA_SPACE_SIZE strlen(COMMA_SPACE) /* Globals */ /* Statics */ typedef struct { socket_t sock; /* socket */ const char *hostname; /* server name */ bool negotiate_pending; /* true if negotiate pending */ bool secure_unverified; /* true if server cert not verified */ bool negotiated; /* true if session is negotiated */ CredHandle client_creds; /* client credentials */ bool client_creds_set; /* true if client_creds is valid */ bool manual; /* true if manual validation needed */ CtxtHandle context; /* security context */ bool context_set; /* true if context is valid */ SecPkgContext_StreamSizes sizes; /* stream sizes */ char *session_info; /* session information */ char *server_cert_info; /* server cert information */ char *server_subjects; /* server subject names */ char *rcvbuf; /* receive buffer */ size_t rcvbuf_len; /* receive buffer length */ char *prbuf; /* pending record buffer */ size_t prbuf_len; /* pending record buffer size */ char *sendbuf; /* send buffer */ } schannel_sio_t; static tls_config_t *config; static HCERTSTORE my_cert_store; /* Display the certificate chain. */ static void display_cert_chain(varbuf_t *v, PCCERT_CONTEXT cert) { CHAR name[1024]; PCCERT_CONTEXT current_cert, issuer_cert; PCERT_EXTENSION ext; WCHAR *wcbuf = NULL; DWORD wcsize; DWORD mbsize; char *mbbuf = NULL; int i; /* Display leaf name. */ if (!CertNameToStr(cert->dwCertEncodingType, &cert->pCertInfo->Subject, CERT_X500_NAME_STR | CERT_NAME_STR_NO_PLUS_FLAG, name, sizeof(name))) { int err = GetLastError(); vtrace("CertNameToStr(subject): error 0x%x (%s)\n", err, win32_strerror(err)); } else { vb_appendf(v, "Subject: %s\n", name); } if (!CertNameToStr(cert->dwCertEncodingType, &cert->pCertInfo->Issuer, CERT_X500_NAME_STR | CERT_NAME_STR_NO_PLUS_FLAG, name, sizeof(name))) { int err = GetLastError(); vtrace("CertNameToStr(issuer): error 0x%x (%s)\n", err, win32_strerror(err)); } else { vb_appendf(v, "Issuer: %s\n", name); } /* Display the alternate name. */ do { ext = CertFindExtension(szOID_SUBJECT_ALT_NAME2, cert->pCertInfo->cExtension, cert->pCertInfo->rgExtension); if (ext == NULL) { break; } if (!CryptFormatObject(X509_ASN_ENCODING, 0, 0, NULL, szOID_SUBJECT_ALT_NAME2, ext->Value.pbData, ext->Value.cbData, NULL, &wcsize)) { break; } wcsize *= 4; wcbuf = (WCHAR *)Malloc(wcsize); if (!CryptFormatObject(X509_ASN_ENCODING, 0, 0, NULL, szOID_SUBJECT_ALT_NAME2, ext->Value.pbData, ext->Value.cbData, wcbuf, &wcsize)) { break; } mbsize = WideCharToMultiByte(CP_ACP, 0, wcbuf, -1, NULL, 0, NULL, NULL); mbbuf = Malloc(mbsize); if (WideCharToMultiByte(CP_ACP, 0, wcbuf, -1, mbbuf, mbsize, NULL, NULL) != mbsize) { break; } vb_appendf(v, "Alternate names: %s\n", mbbuf); } while (false); if (wcbuf != NULL) { Free(wcbuf); } if (mbbuf != NULL) { Free(mbbuf); } /* Display certificate chain. */ current_cert = cert; i = 0; while (current_cert != NULL) { DWORD verification_flags = 0; i++; issuer_cert = CertGetIssuerCertificateFromStore(cert->hCertStore, current_cert, NULL, &verification_flags); if (issuer_cert == NULL) { if (current_cert != cert) { CertFreeCertificateContext(current_cert); } break; } if (!CertNameToStr(issuer_cert->dwCertEncodingType, &issuer_cert->pCertInfo->Subject, CERT_X500_NAME_STR | CERT_NAME_STR_NO_PLUS_FLAG, name, sizeof(name))) { int err = GetLastError(); vtrace("CertNameToStr(subject): error 0x%x (%s)\n", err, win32_strerror(err)); } else { vb_appendf(v, "CA %d Subject: %s\n", i, name); } if (!CertNameToStr(issuer_cert->dwCertEncodingType, &issuer_cert->pCertInfo->Issuer, CERT_X500_NAME_STR | CERT_NAME_STR_NO_PLUS_FLAG, name, sizeof(name))) { int err = GetLastError(); vtrace("CertNameToStr(issuer): error 0x%x (%s)\n", err, win32_strerror(err)); } else { vb_appendf(v, "CA %d Issuer: %s\n", i, name); } if (current_cert != cert) { CertFreeCertificateContext(current_cert); } current_cert = issuer_cert; issuer_cert = NULL; } } /* Display the certificate subjects. */ static void display_cert_subjects(varbuf_t *v, PCCERT_CONTEXT cert) { CHAR name[1024]; WCHAR *wcbuf = NULL; char *mbbuf = NULL; char **subjects = NULL; /* Display leaf name. */ if (!CertNameToStr(cert->dwCertEncodingType, &cert->pCertInfo->Subject, CERT_X500_NAME_STR | CERT_NAME_STR_NO_PLUS_FLAG, name, sizeof(name))) { int err = GetLastError(); vtrace("CertNameToStr(subject): error 0x%x (%s)\n", err, win32_strerror(err)); } else { char *cn = strstr(name, CN_EQ); if (cn != NULL) { sioc_subject_add(&subjects, cn + CN_EQ_SIZE, (ssize_t)-1); } } /* Display the alternate names. */ do { DWORD wcsize; DWORD mbsize; PCERT_EXTENSION ext = CertFindExtension(szOID_SUBJECT_ALT_NAME2, cert->pCertInfo->cExtension, cert->pCertInfo->rgExtension); if (ext == NULL) { break; } if (!CryptFormatObject(X509_ASN_ENCODING, 0, 0, NULL, szOID_SUBJECT_ALT_NAME2, ext->Value.pbData, ext->Value.cbData, NULL, &wcsize)) { break; } wcsize *= 4; wcbuf = (WCHAR *)Malloc(wcsize); if (!CryptFormatObject(X509_ASN_ENCODING, 0, 0, NULL, szOID_SUBJECT_ALT_NAME2, ext->Value.pbData, ext->Value.cbData, wcbuf, &wcsize)) { break; } mbsize = WideCharToMultiByte(CP_ACP, 0, wcbuf, -1, NULL, 0, NULL, NULL); mbbuf = Malloc(mbsize); if (WideCharToMultiByte(CP_ACP, 0, wcbuf, -1, mbbuf, mbsize, NULL, NULL) != mbsize) { break; } } while (false); if (wcbuf != NULL) { Free(wcbuf); } if (mbbuf != NULL) { char *n; /* * The string looks like: * XXX Name=nnn, ... * XXX is DNS for DNS names; not sure about others. */ char *s = mbbuf; while ((n = strstr(s, DNS_NAME)) != NULL) { char *comma = strstr(n, COMMA_SPACE); if (comma != NULL) { sioc_subject_add(&subjects, n + DNS_NAME_SIZE, comma - (n + DNS_NAME_SIZE)); s = comma + COMMA_SPACE_SIZE; } else { sioc_subject_add(&subjects, n + DNS_NAME_SIZE, (ssize_t)-1); break; } } Free(mbbuf); } sioc_subject_print(v, &subjects); } /* Create security credentials. */ static SECURITY_STATUS create_credentials(LPSTR friendly_name, PCredHandle creds, bool *manual) { TimeStamp ts_expiry; SECURITY_STATUS status; PCCERT_CONTEXT cert_context = NULL; SCHANNEL_CRED schannel_cred; varbuf_t v; char *s, *t; *manual = false; /* Open the "MY" certificate store, where IE stores client certificates. */ if (my_cert_store == NULL) { my_cert_store = CertOpenSystemStore(0, "MY"); if (my_cert_store == NULL) { int err = GetLastError(); sioc_set_error("CertOpenSystemStore: error 0x%x (%s)\n", err, win32_strerror(err)); return err; } } /* * If a friendly name name is specified, then attempt to find a client * certificate. Otherwise, just create a NULL credential. */ if (friendly_name != NULL) { for (;;) { DWORD nbytes; LPTSTR cert_friendly_name; /* Find a client certificate with the given friendly name. */ cert_context = CertFindCertificateInStore( my_cert_store, /* hCertStore */ X509_ASN_ENCODING, /* dwCertEncodingType */ 0, /* dwFindFlags */ CERT_FIND_ANY, /* dwFindType */ NULL, /* *pvFindPara */ cert_context); /* pPrevCertContext */ if (cert_context == NULL) { int err = GetLastError(); sioc_set_error("CertFindCertificateInStore: error 0x%x (%s)\n", err, win32_strerror(err)); return err; } nbytes = CertGetNameString(cert_context, CERT_NAME_FRIENDLY_DISPLAY_TYPE, 0, NULL, NULL, 0); cert_friendly_name = Malloc(nbytes); nbytes = CertGetNameString(cert_context, CERT_NAME_FRIENDLY_DISPLAY_TYPE, 0, NULL, cert_friendly_name, nbytes); if (!strcasecmp(friendly_name, cert_friendly_name)) { Free(cert_friendly_name); break; } Free(cert_friendly_name); } /* Display it. */ vtrace("Client certificate:\n"); vb_init(&v); display_cert_chain(&v, cert_context); s = vb_consume(&v); t = indent_s(s); vtrace("%s", t); Free(t); Free(s); } /* Build Schannel credential structure. */ memset(&schannel_cred, 0, sizeof(schannel_cred)); schannel_cred.dwVersion = SCHANNEL_CRED_VERSION; if (cert_context != NULL) { schannel_cred.cCreds = 1; schannel_cred.paCred = &cert_context; } /* Before Windows 10, you need to specify the protocols explicitly. */ if (!IsWindowsVersionOrGreater(10, 0, 0)) { schannel_cred.grbitEnabledProtocols = TLS_PROTOCOLS; } schannel_cred.dwFlags |= SCH_CRED_NO_DEFAULT_CREDS; /* * If they don't want the host certificate checked, specify manual * validation here and then don't validate. */ if (!config->verify_host_cert || is_wine()) { schannel_cred.dwFlags |= SCH_CRED_MANUAL_CRED_VALIDATION; *manual = true; } else { schannel_cred.dwFlags |= SCH_CRED_AUTO_CRED_VALIDATION; } /* Create an SSPI credential. */ status = AcquireCredentialsHandle( NULL, /* Name of principal */ UNISP_NAME, /* Name of package */ SECPKG_CRED_OUTBOUND, /* Flags indicating use */ NULL, /* Pointer to logon ID */ &schannel_cred, /* Package specific data */ NULL, /* Pointer to GetKey() func */ NULL, /* Value to pass to GetKey() */ creds, /* (out) Cred Handle */ &ts_expiry); /* (out) Lifetime (optional) */ if (status != SEC_E_OK) { sioc_set_error("AcquireCredentialsHandle: error 0x%x (%s)\n", status, win32_strerror(status)); } /* Free the certificate context. Schannel has already made its own copy. */ if (cert_context != NULL) { CertFreeCertificateContext(cert_context); } return status; } /* Get new client credentials. */ static void get_new_client_credentials(CredHandle *creds, CtxtHandle *context) { CredHandle new_creds; SecPkgContext_IssuerListInfoEx issuer_list_info; PCCERT_CHAIN_CONTEXT chain_context; CERT_CHAIN_FIND_BY_ISSUER_PARA find_by_issuer_params; PCCERT_CONTEXT cert_context; TimeStamp expiry; SECURITY_STATUS status; SCHANNEL_CRED schannel_cred; /* Read the list of trusted issuers from schannel. */ status = QueryContextAttributes(context, SECPKG_ATTR_ISSUER_LIST_EX, (PVOID)&issuer_list_info); if (status != SEC_E_OK) { vtrace("QueryContextAttributes: error 0x%x (%s)\n", (unsigned)status, win32_strerror(status)); return; } /* Enumerate the client certificates. */ memset(&find_by_issuer_params, 0, sizeof(find_by_issuer_params)); find_by_issuer_params.cbSize = sizeof(find_by_issuer_params); find_by_issuer_params.pszUsageIdentifier = szOID_PKIX_KP_CLIENT_AUTH; find_by_issuer_params.dwKeySpec = 0; find_by_issuer_params.cIssuer = issuer_list_info.cIssuers; find_by_issuer_params.rgIssuer = issuer_list_info.aIssuers; chain_context = NULL; while (true) { /* Find a certificate chain. */ chain_context = CertFindChainInStore( my_cert_store, X509_ASN_ENCODING, 0, CERT_CHAIN_FIND_BY_ISSUER, &find_by_issuer_params, chain_context); if (chain_context == NULL) { vtrace("CertFindChainInStore: error 0x%x (%s)\n", (unsigned)GetLastError(), win32_strerror(GetLastError())); break; } /* Get pointer to leaf certificate context. */ cert_context = chain_context->rgpChain[0]->rgpElement[0]->pCertContext; /* Create schannel credential. */ schannel_cred.dwVersion = SCHANNEL_CRED_VERSION; schannel_cred.cCreds = 1; schannel_cred.paCred = &cert_context; status = AcquireCredentialsHandle( NULL, /* Name of principal */ UNISP_NAME_A, /* Name of package */ SECPKG_CRED_OUTBOUND, /* Flags indicating use */ NULL, /* Pointer to logon ID */ &schannel_cred, /* Package specific data */ NULL, /* Pointer to GetKey() func */ NULL, /* Value to pass to GetKey() */ &new_creds, /* (out) Cred Handle */ &expiry); /* (out) Lifetime (optional) */ if (status != SEC_E_OK) { vtrace("AcquireCredentialsHandle: error 0x%x (%s)\n", (unsigned)status, win32_strerror(status)); continue; } /* Destroy the old credentials. */ FreeCredentialsHandle(creds); *creds = new_creds; } } #if defined(VERBOSE) /*[*/ /* Display a hex dump of a buffer. */ static void print_hex_dump(const char *prefix, int length, unsigned char *buffer) { int i, count, index; static char rgbDigits[] = "0123456789abcdef"; char rgbLine[100]; int cbLine; for (index = 0; length; length -= count, buffer += count, index += count) { count = (length > 16)? 16: length; sprintf(rgbLine, "%4.4x ", index); cbLine = 6; for (i = 0; i < count; i++) { rgbLine[cbLine++] = rgbDigits[buffer[i] >> 4]; rgbLine[cbLine++] = rgbDigits[buffer[i] & 0x0f]; if (i == 7) { rgbLine[cbLine++] = ':'; } else { rgbLine[cbLine++] = ' '; } } for (; i < 16; i++) { rgbLine[cbLine++] = ' '; rgbLine[cbLine++] = ' '; rgbLine[cbLine++] = ' '; } rgbLine[cbLine++] = ' '; for (i = 0; i < count; i++) { if (buffer[i] < 32 || buffer[i] > 126 || buffer[i] == '%') { rgbLine[cbLine++] = '.'; } else { rgbLine[cbLine++] = buffer[i]; } } rgbLine[cbLine++] = 0; vtrace("%s %s\n", prefix, rgbLine); } } #endif /*]*/ /* Add some helpful info to a TLS failue. */ static const char * explain_error(SECURITY_STATUS ret) { switch (ret) { case CERT_E_CN_NO_MATCH: case SEC_E_WRONG_PRINCIPAL: return "\nPossibly use " AnSubjectNames "() to display the host cert names"; case SEC_E_UNSUPPORTED_FUNCTION: return "\nHost may not support the requested TLS version"; default: return ""; } } /* Client handshake, second phase. */ static SECURITY_STATUS client_handshake_loop( schannel_sio_t *s, /* in, out */ bool do_initial_read) /* in */ { SecBufferDesc out_buffer, in_buffer; SecBuffer in_buffers[2], out_buffers[1]; DWORD ssp_i_flags, ssp_o_flags; int nrw; TimeStamp expiry; SECURITY_STATUS ret; bool do_read; int n2read = MIN_READ; ssp_i_flags = ISC_REQ_SEQUENCE_DETECT | ISC_REQ_REPLAY_DETECT | ISC_REQ_CONFIDENTIALITY | ISC_RET_EXTENDED_ERROR | ISC_REQ_ALLOCATE_MEMORY | ISC_REQ_STREAM; do_read = do_initial_read; /* Loop until the handshake is finished or an error occurs. */ ret = SEC_I_CONTINUE_NEEDED; while (ret == SEC_I_CONTINUE_NEEDED || ret == SEC_E_INCOMPLETE_MESSAGE || ret == SEC_I_INCOMPLETE_CREDENTIALS) { if (s->rcvbuf_len == 0 || ret == SEC_E_INCOMPLETE_MESSAGE) { /* Read data from server. */ if (do_read) { /* Read it. */ nrw = recv(s->sock, s->rcvbuf + s->rcvbuf_len, n2read, 0); vtrace("TLS: %d/%d bytes of handshake data received\n", nrw, n2read); if (nrw == SOCKET_ERROR) { ret = WSAGetLastError(); if (ret != WSAEWOULDBLOCK) { sioc_set_error("recv: error %d (%s)\n", (int)ret, win32_strerror(ret)); } break; } else if (nrw == 0) { sioc_set_error("server disconnected during TLS " "negotiation"); ret = WSAECONNABORTED; /* XXX: synthetic error */ break; } #if defined(VERBOSE) /*[*/ print_hex_dump("rcvbuf + s->rcvbuf_len); #endif /*]*/ s->rcvbuf_len += nrw; } else { do_read = true; } } /* * Set up the input buffers. Buffer 0 is used to pass in data * received from the server. Schannel will consume some or all * of this. Leftover data (if any) will be placed in buffer 1 and * given a buffer type of SECBUFFER_EXTRA. */ in_buffers[0].pvBuffer = s->rcvbuf; in_buffers[0].cbBuffer = (DWORD)s->rcvbuf_len; in_buffers[0].BufferType = SECBUFFER_TOKEN; in_buffers[1].pvBuffer = NULL; in_buffers[1].cbBuffer = 0; in_buffers[1].BufferType = SECBUFFER_EMPTY; in_buffer.cBuffers = 2; in_buffer.pBuffers = in_buffers; in_buffer.ulVersion = SECBUFFER_VERSION; /* * Set up the output buffers. These are initialized to NULL * so as to make it less likely we'll attempt to free random * garbage later. */ out_buffers[0].pvBuffer = NULL; out_buffers[0].BufferType= SECBUFFER_TOKEN; out_buffers[0].cbBuffer = 0; out_buffer.cBuffers = 1; out_buffer.pBuffers = out_buffers; out_buffer.ulVersion = SECBUFFER_VERSION; /* Call InitializeSecurityContext. */ ret = InitializeSecurityContext( &s->client_creds, &s->context, NULL, ssp_i_flags, 0, 0, &in_buffer, 0, NULL, &out_buffer, &ssp_o_flags, &expiry); vtrace("TLS: InitializeSecurityContext -> 0x%x (%s)\n", (unsigned)ret, win32_strerror(ret)); /* * If InitializeSecurityContext was successful (or if the error was * one of the special extended ones), send the contends of the output * buffer to the server. */ if (ret == SEC_E_OK || ret == SEC_I_CONTINUE_NEEDED || (FAILED(ret) && (ssp_o_flags & ISC_RET_EXTENDED_ERROR))) { if (out_buffers[0].cbBuffer != 0 && out_buffers[0].pvBuffer != NULL) { nrw = send(s->sock, out_buffers[0].pvBuffer, out_buffers[0].cbBuffer, 0); if (nrw == SOCKET_ERROR) { ret = WSAGetLastError(); sioc_set_error("send: error %d (%s)\n", (int)ret, win32_strerror(ret)); FreeContextBuffer(out_buffers[0].pvBuffer); break; } vtrace("TLS: %d bytes of handshake data sent\n", nrw); #if defined(VERBOSE) /*[*/ print_hex_dump(">enc", nrw, out_buffers[0].pvBuffer); #endif /*]*/ /* Free output buffer. */ FreeContextBuffer(out_buffers[0].pvBuffer); out_buffers[0].pvBuffer = NULL; } } /* * If InitializeSecurityContext returned SEC_E_INCOMPLETE_MESSAGE, * then we need to read more data from the server and try again. */ if (ret == SEC_E_INCOMPLETE_MESSAGE) { if (in_buffers[1].BufferType == SECBUFFER_MISSING) { n2read = in_buffers[1].cbBuffer; } else { n2read = MIN_READ; } continue; } else { n2read = MIN_READ; } /* * If InitializeSecurityContext returned SEC_E_OK, then the * handshake completed successfully. */ if (ret == SEC_E_OK) { /* * If the "extra" buffer contains data, this is encrypted * application protocol layer stuff. It needs to be saved. The * application layer will later decrypt it with DecryptMessage. */ vtrace("TLS: Handshake was successful\n"); if (in_buffers[1].BufferType == SECBUFFER_EXTRA) { /* Interestingly, in_buffers[1].pvBuffer is NULL here. */ vtrace("TLS: %d bytes of encrypted data saved\n", (int)in_buffers[1].cbBuffer); memmove(s->rcvbuf, s->rcvbuf + s->rcvbuf_len - in_buffers[1].cbBuffer, in_buffers[1].cbBuffer); s->rcvbuf_len = in_buffers[1].cbBuffer; } else { s->rcvbuf_len = 0; } break; } if (ret == SEC_E_UNSUPPORTED_FUNCTION) { vtrace("TLS: SEC_E_UNSUPPORTED_FUNCTION from InitializeSecurityContext -- usually means requested TLS version not supported by server\n"); } if (ret == SEC_E_WRONG_PRINCIPAL) { vtrace("TLS: SEC_E_WRONG_PRINCIPAL from InitializeSecurityContext -- bad server certificate\n"); } /* Check for fatal error. */ if (FAILED(ret)) { sioc_set_error("InitializeSecurityContext: error 0x%x (%s)%s\n", ret, win32_strerror(ret), explain_error(ret)); break; } /* * If InitializeSecurityContext returned SEC_I_INCOMPLETE_CREDENTIALS, * then the server just requested client authentication. */ if (ret == SEC_I_INCOMPLETE_CREDENTIALS) { /* * Busted. The server has requested client authentication and * the credential we supplied didn't contain a client certificate. * This function will read the list of trusted certificate * authorities ("issuers") that was received from the server * and attempt to find a suitable client certificate that * was issued by one of these. If this function is successful, * then we will connect using the new certificate. Otherwise, * we will attempt to connect anonymously (using our current * credentials). */ get_new_client_credentials(&s->client_creds, &s->context); /* Go around again. */ do_read = false; ret = SEC_I_CONTINUE_NEEDED; continue; } if (in_buffers[1].BufferType == SECBUFFER_EXTRA) { /* * Copy any leftover data from the "extra" buffer, and go around * again. */ vtrace("TLS: %lu bytes of extra data copied\n", in_buffers[1].cbBuffer); memmove(s->rcvbuf, s->rcvbuf + s->rcvbuf_len - in_buffers[1].cbBuffer, in_buffers[1].cbBuffer); s->rcvbuf_len = in_buffers[1].cbBuffer; } else { s->rcvbuf_len = 0; } } /* Delete the security context in the case of a fatal error. */ if (ret != SEC_E_OK && ret != WSAEWOULDBLOCK) { DeleteSecurityContext(&s->context); } else { s->context_set = true; } return ret; } /* Client handshake, first phase. */ static SECURITY_STATUS perform_client_handshake( schannel_sio_t *s, /* in, out */ LPSTR server_name) /* in */ { SecBufferDesc out_buffer; SecBuffer out_buffers[1]; DWORD ssp_i_flags, ssp_o_flags; int data; TimeStamp expiry; SECURITY_STATUS scRet; ssp_i_flags = ISC_REQ_SEQUENCE_DETECT | ISC_REQ_REPLAY_DETECT | ISC_REQ_CONFIDENTIALITY | ISC_RET_EXTENDED_ERROR | ISC_REQ_ALLOCATE_MEMORY | ISC_REQ_STREAM; /* Initiate a ClientHello message and generate a token. */ out_buffers[0].pvBuffer = NULL; out_buffers[0].BufferType = SECBUFFER_TOKEN; out_buffers[0].cbBuffer = 0; out_buffer.cBuffers = 1; out_buffer.pBuffers = out_buffers; out_buffer.ulVersion = SECBUFFER_VERSION; scRet = InitializeSecurityContext( &s->client_creds, NULL, server_name, ssp_i_flags, 0, 0, NULL, 0, &s->context, &out_buffer, &ssp_o_flags, &expiry); if (scRet != SEC_I_CONTINUE_NEEDED) { sioc_set_error("InitializeSecurityContext: error %d (%s)%s\n", scRet, win32_strerror(scRet), explain_error(scRet)); return scRet; } /* Send response to server, if there is one. */ if (out_buffers[0].cbBuffer != 0 && out_buffers[0].pvBuffer != NULL) { data = send(s->sock, out_buffers[0].pvBuffer, out_buffers[0].cbBuffer, 0); if (data == SOCKET_ERROR) { int err = WSAGetLastError(); sioc_set_error("send: error %d (%s)\n", err, win32_strerror(err)); FreeContextBuffer(out_buffers[0].pvBuffer); DeleteSecurityContext(&s->context); return err; } vtrace("TLS: %d bytes of handshake data sent\n", data); FreeContextBuffer(out_buffers[0].pvBuffer); out_buffers[0].pvBuffer = NULL; } return client_handshake_loop(s, true); } /* Manually verify a server certificate. */ static DWORD verify_server_certificate( PCCERT_CONTEXT server_cert, PSTR server_name, DWORD cert_flags) { HTTPSPolicyCallbackData policy_https; CERT_CHAIN_POLICY_PARA policy_params; CERT_CHAIN_POLICY_STATUS policy_status; CERT_CHAIN_PARA chain_params; PCCERT_CHAIN_CONTEXT chain_context = NULL; DWORD server_name_size, status; LPSTR rgszUsages[] = { szOID_PKIX_KP_SERVER_AUTH, szOID_SERVER_GATED_CRYPTO, szOID_SGC_NETSCAPE }; DWORD usages_count = sizeof(rgszUsages) / sizeof(LPSTR); PWSTR server_name_wide = NULL; vtrace("TLS: Verifying server certificate manually\n"); /* Convert server name to Unicode. */ server_name_size = MultiByteToWideChar(CP_ACP, 0, server_name, -1, NULL, 0); server_name_wide = Malloc(server_name_size * sizeof(WCHAR)); MultiByteToWideChar(CP_ACP, 0, server_name, -1, server_name_wide, server_name_size); /* Build certificate chain. */ memset(&chain_params, 0, sizeof(chain_params)); chain_params.cbSize = sizeof(chain_params); chain_params.RequestedUsage.dwType = USAGE_MATCH_TYPE_OR; chain_params.RequestedUsage.Usage.cUsageIdentifier = usages_count; chain_params.RequestedUsage.Usage.rgpszUsageIdentifier = rgszUsages; if (!CertGetCertificateChain( NULL, server_cert, NULL, server_cert->hCertStore, &chain_params, 0, NULL, &chain_context)) { status = GetLastError(); sioc_set_error("CertGetCertificateChain: error 0x%x (%s)\n", status, win32_strerror(status)); goto done; } /* Validate certificate chain. */ ZeroMemory(&policy_https, sizeof(HTTPSPolicyCallbackData)); policy_https.cbStruct = sizeof(HTTPSPolicyCallbackData); policy_https.dwAuthType = AUTHTYPE_SERVER; policy_https.fdwChecks = cert_flags; policy_https.pwszServerName = server_name_wide; memset(&policy_params, 0, sizeof(policy_params)); policy_params.cbSize = sizeof(policy_params); policy_params.pvExtraPolicyPara = &policy_https; memset(&policy_status, 0, sizeof(policy_status)); policy_status.cbSize = sizeof(policy_status); if (!CertVerifyCertificateChainPolicy(CERT_CHAIN_POLICY_SSL, chain_context, &policy_params, &policy_status)) { status = GetLastError(); sioc_set_error("CertVerifyCertificateChainPolicy: error 0x%x (%s)%s\n", status, win32_strerror(status), explain_error(status)); goto done; } if (policy_status.dwError) { status = policy_status.dwError; sioc_set_error("CertVerifyCertificateChainPolicy: error 0x%x (%s)%s\n", status, win32_strerror(status), explain_error(status)); goto done; } status = SEC_E_OK; done: if (chain_context != NULL) { CertFreeCertificateChain(chain_context); } if (server_name_wide != NULL) { Free(server_name_wide); } return status; } /* Display a connection. */ static void display_connection_info(varbuf_t *v, CtxtHandle *context) { SECURITY_STATUS status; SecPkgContext_ConnectionInfo connection_info; status = QueryContextAttributes(context, SECPKG_ATTR_CONNECTION_INFO, (PVOID)&connection_info); if (status != SEC_E_OK) { vtrace("QueryContextAttributes: error 0x%x (%s)\n", (unsigned)status, win32_strerror(status)); return; } vb_appendf(v, "Protocol: "); switch (connection_info.dwProtocol) { case SP_PROT_TLS1_CLIENT: vb_appendf(v, "TLS 1.0\n"); break; case SP_PROT_TLS1_1_CLIENT: vb_appendf(v, "TLS 1.1\n"); break; case SP_PROT_TLS1_2_CLIENT: vb_appendf(v, "TLS 1.2\n"); break; case SP_PROT_SSL3_CLIENT: vb_appendf(v, "SSL 3.0\n"); break; case SP_PROT_SSL2_CLIENT: vb_appendf(v, "SSL 2.0\n"); break; default: vb_appendf(v, "0x%x\n", (unsigned)connection_info.dwProtocol); break; } vb_appendf(v, "Cipher: "); switch (connection_info.aiCipher) { case CALG_3DES: vb_appendf(v, "Triple DES\n"); break; case CALG_AES: vb_appendf(v, "AES\n"); break; case CALG_AES_128: vb_appendf(v, "AES 128\n"); break; case CALG_AES_256: vb_appendf(v, "AES 256\n"); break; case CALG_DES: vb_appendf(v, "DES\n"); break; case CALG_RC2: vb_appendf(v, "RC2\n"); break; case CALG_RC4: vb_appendf(v, "RC4\n"); break; default: vb_appendf(v, "0x%x\n", connection_info.aiCipher); break; } vb_appendf(v, "Cipher strength: %d\n", (int)connection_info.dwCipherStrength); vb_appendf(v, "Hash: "); switch (connection_info.aiHash) { case CALG_MD5: vb_appendf(v, "MD5\n"); break; case CALG_SHA: vb_appendf(v, "SHA\n"); break; default: vb_appendf(v, "0x%x\n", connection_info.aiHash); break; } vb_appendf(v, "Hash strength: %d\n", (int)connection_info.dwHashStrength); vb_appendf(v, "Key exchange: "); switch (connection_info.aiExch) { case CALG_RSA_KEYX: case CALG_RSA_SIGN: vb_appendf(v, "RSA\n"); break; case CALG_KEA_KEYX: vb_appendf(v, "KEA\n"); break; case CALG_DH_EPHEM: vb_appendf(v, "DH Ephemeral\n"); break; default: vb_appendf(v, "0x%x\n", connection_info.aiExch); break; } vb_appendf(v, "Key exchange strength: %d\n", (int)connection_info.dwExchStrength); } /* Free an sio context. */ static void sio_free(schannel_sio_t *s) { s->sock = INVALID_SOCKET; /* Free the SSPI context handle. */ if (s->context_set) { DeleteSecurityContext(&s->context); memset(&s->context, 0, sizeof(s->context)); s->context_set = false; } /* Free the SSPI credentials handle. */ if (s->client_creds_set) { FreeCredentialsHandle(&s->client_creds); memset(&s->client_creds, 0, sizeof(s->client_creds)); s->client_creds_set = false; } /* Free the receive buffer. */ if (s->rcvbuf != NULL) { Free(s->rcvbuf); s->rcvbuf = NULL; } /* Free the record buffer. */ if (s->prbuf != NULL) { Free(s->prbuf); s->prbuf = NULL; } /* Free the send buffer. */ if (s->sendbuf != NULL) { Free(s->sendbuf); s->sendbuf = NULL; } /* Free the session info. */ if (s->session_info != NULL) { Free(s->session_info); s->session_info = NULL; } /* Free the server cert info. */ if (s->server_cert_info != NULL) { Free(s->server_cert_info); s->server_cert_info = NULL; } /* Free the server subject. */ if (s->server_subjects != NULL) { Free(s->server_subjects); s->server_subjects = NULL; } Free(s); } /* Returns true if secure I/O is supported. */ bool sio_supported(void) { return true; } /* * Create a new context. */ sio_init_ret_t sio_init(tls_config_t *c, const char *password, sio_t *sio_ret) { schannel_sio_t *s; sioc_error_reset(); config = c; s = (schannel_sio_t *)Malloc(sizeof(schannel_sio_t)); memset(s, 0, sizeof(*s)); s->sock = INVALID_SOCKET; /* Create credentials. */ if (create_credentials(config->client_cert, &s->client_creds, &s->manual)) { vtrace("TLS: Error creating credentials\n"); goto fail; } s->client_creds_set = true; *sio_ret = (sio_t)s; return SI_SUCCESS; fail: sio_free(s); return SI_FAILURE; } /* * Negotiate a TLS connection. * Returns true for success, false for failure. * If it returns false, the socket should be disconnected. * * Returns 'data' true if there is already protocol data pending. */ sio_negotiate_ret_t sio_negotiate(sio_t sio, socket_t sock, const char *hostname, bool *data) { schannel_sio_t *s; const char *accept_hostname = hostname; SECURITY_STATUS status; PCCERT_CONTEXT remote_cert_context = NULL; size_t recsz; varbuf_t v; char *cert_desc = NULL; char *cert_subjects = NULL; size_t sl; sioc_error_reset(); *data = false; if (sio == NULL) { sioc_set_error("NULL sio"); return SIG_FAILURE; } s = (schannel_sio_t *)sio; if (s->negotiate_pending) { if (s->sock == INVALID_SOCKET) { sioc_set_error("Invalid sio (missing socket)"); return SIG_FAILURE; } /* Continue handshake. */ status = client_handshake_loop(s, true); } else { if (s->sock != INVALID_SOCKET) { sioc_set_error("Invalid sio (already negotiated)"); return SIG_FAILURE; } s->sock = sock; s->hostname = hostname; /* * Allocate the initial receive buffer. * This is temporary, because we can't learn the receive stream sizes * until we have finished negotiating, but we need a receive buffer to * negotiate in the first place. */ s->rcvbuf = Malloc(INBUF); if (config->accept_hostname != NULL) { if (!strncasecmp(accept_hostname, "DNS:", 4)) { accept_hostname = config->accept_hostname + 4; sioc_set_error("Empty acceptHostname"); goto fail; } else if (!strncasecmp(config->accept_hostname, "IP:", 3)) { sioc_set_error("Cannot use 'IP:' acceptHostname"); goto fail; } else if (!strcasecmp(config->accept_hostname, "any")) { sioc_set_error("Cannot use 'any' acceptHostname"); goto fail; } else { accept_hostname = config->accept_hostname; } } /* Perform handshake. */ status = perform_client_handshake(s, (LPSTR)accept_hostname); } if (status == WSAEWOULDBLOCK) { s->negotiate_pending = true; return SIG_WANTMORE; } else if (status != 0) { vtrace("TLS: Error performing handshake\n"); goto fail; } /* Get the server's certificate. */ status = QueryContextAttributes(&s->context, SECPKG_ATTR_REMOTE_CERT_CONTEXT, (PVOID)&remote_cert_context); if (status != SEC_E_OK) { sioc_set_error("QueryContextAttributes: error 0x%x (%s)", (unsigned)status, win32_strerror(status)); goto fail; } /* * Get the description of the server certificate chain. */ vb_init(&v); display_cert_chain(&v, remote_cert_context); cert_desc = vb_consume(&v); vb_init(&v); display_cert_subjects(&v, remote_cert_context); cert_subjects = vb_consume(&v); /* Attempt to validate the server certificate. */ if (s->manual && config->verify_host_cert) { status = verify_server_certificate(remote_cert_context, (LPSTR)accept_hostname, 0); if (status) { vtrace("TLS: Error 0x%x authenticating server credentials\n", (unsigned)status); goto fail; } } /* Free the server certificate context. */ CertFreeCertificateContext(remote_cert_context); remote_cert_context = NULL; /* Read stream encryption properties. */ status = QueryContextAttributes(&s->context, SECPKG_ATTR_STREAM_SIZES, &s->sizes); if (status != SEC_E_OK) { sioc_set_error("QueryContextAttributes: error 0x%x (%s)", (unsigned)status, win32_strerror(status)); goto fail; } /* Display connection info. */ vb_init(&v); display_connection_info(&v, &s->context); s->session_info = vb_consume(&v); sl = strlen(s->session_info); if (sl > 0 && s->session_info[sl - 1] == '\n') { s->session_info[sl - 1] = '\0'; } /* Display server_cert info. */ s->server_cert_info = cert_desc; cert_desc = NULL; sl = strlen(s->server_cert_info); if (sl > 0 && s->server_cert_info[sl - 1] == '\n') { s->server_cert_info[sl - 1] = '\0'; } /* Display server subject. */ s->server_subjects = cert_subjects; cert_subjects = NULL; sl = strlen(s->server_subjects); if (sl > 0 && s->server_subjects[sl - 1] == '\n') { s->server_subjects[sl - 1] = '\0'; } /* Account for any extra data. */ if (s->rcvbuf_len > 0) { *data = true; } /* Reallocate the receive buffer. */ vtrace("TLS: Sizes: header %d, trailer %d, max message %d\n", (int)s->sizes.cbHeader, (int)s->sizes.cbTrailer, (int)s->sizes.cbMaximumMessage); recsz = s->sizes.cbHeader + s->sizes.cbTrailer + s->sizes.cbMaximumMessage; if (recsz > INBUF) { s->rcvbuf = Realloc(s->rcvbuf, recsz); } s->prbuf = Malloc(s->sizes.cbMaximumMessage); s->sendbuf = Malloc(s->sizes.cbMaximumMessage); /* Success. */ s->secure_unverified = !config->verify_host_cert; s->negotiated = true; return SIG_SUCCESS; fail: /* Free the server certificate context. */ if (remote_cert_context != NULL) { CertFreeCertificateContext(remote_cert_context); remote_cert_context = NULL; } /* Free the SSPI context handle. */ if (s->context_set) { DeleteSecurityContext(&s->context); memset(&s->context, 0, sizeof(s->context)); s->context_set = false; } /* Free the SSPI credentials handle. */ if (s->client_creds_set) { FreeCredentialsHandle(&s->client_creds); memset(&s->client_creds, 0, sizeof(s->client_creds)); s->client_creds_set = false; } if (cert_desc != NULL) { Free(cert_desc); } if (cert_subjects != NULL) { Free(cert_subjects); } return SIG_FAILURE; } /* * Read and decrypt data. */ static SECURITY_STATUS read_decrypt( schannel_sio_t *s, /* in */ CtxtHandle *context) /* in */ { SecBuffer *data_buffer_ptr, *extra_buffer_ptr; SECURITY_STATUS ret; SecBufferDesc message; SecBuffer buffers[4]; int nr; int i; int n2read = s->sizes.cbHeader; /* Read data from server until done. */ ret = SEC_E_OK; while (true) { data_buffer_ptr = NULL; extra_buffer_ptr = NULL; /* Read some data. */ if (s->rcvbuf_len == 0 || ret == SEC_E_INCOMPLETE_MESSAGE) { /* Get the data */ nr = recv(s->sock, s->rcvbuf + s->rcvbuf_len, n2read, 0); vtrace("TLS: %d/%d bytes of encrypted application data received\n", nr, n2read); if (nr == SOCKET_ERROR) { ret = WSAGetLastError(); sioc_set_error("recv: error %d (%s)", (int)ret, win32_strerror(ret)); break; } else if (nr == 0) { /* Server disconnected. */ vtrace("TLS: Server disconnected.\n"); s->negotiated = false; ret = SEC_E_OK; break; } else { /* Success. */ #if defined(VERBOSE) /*[*/ print_hex_dump("rcvbuf + s->rcvbuf_len); #endif /*]*/ s->rcvbuf_len += nr; } } /* Try to decrypt it. */ buffers[0].pvBuffer = s->rcvbuf; buffers[0].cbBuffer = (DWORD)s->rcvbuf_len; buffers[0].BufferType = SECBUFFER_DATA; buffers[1].BufferType = SECBUFFER_EMPTY; buffers[2].BufferType = SECBUFFER_EMPTY; buffers[3].BufferType = SECBUFFER_EMPTY; message.ulVersion = SECBUFFER_VERSION; message.cBuffers = 4; message.pBuffers = buffers; ret = DecryptMessage(context, &message, 0, NULL); if (ret == SEC_I_CONTEXT_EXPIRED) { /* Server signalled end of session. Treat it like EOF. */ vtrace("TLS: Server signaled end of session.\n"); s->negotiated = false; ret = SEC_E_OK; break; } if (ret != SEC_E_OK && ret != SEC_I_RENEGOTIATE && ret != SEC_I_CONTEXT_EXPIRED && ret != SEC_E_INCOMPLETE_MESSAGE) { sioc_set_error("DecryptMessage: error 0x%x (%s)\n", (unsigned)ret, win32_strerror(ret)); return ret; } if (ret == SEC_E_INCOMPLETE_MESSAGE) { /* Nibble some more. */ if (buffers[0].BufferType == SECBUFFER_MISSING) { n2read = buffers[0].cbBuffer; } else { n2read = s->sizes.cbHeader; } continue; } else { n2read = s->sizes.cbHeader; } /* Locate data and (optional) extra buffers. */ data_buffer_ptr = NULL; extra_buffer_ptr = NULL; for (i = 1; i < 4; i++) { if (data_buffer_ptr == NULL && buffers[i].BufferType == SECBUFFER_DATA) { data_buffer_ptr = &buffers[i]; } if (extra_buffer_ptr == NULL && buffers[i].BufferType == SECBUFFER_EXTRA) { extra_buffer_ptr = &buffers[i]; } } /* Check for completion. */ if (data_buffer_ptr != NULL && data_buffer_ptr->cbBuffer) { /* Copy decrypted data to the record buffer. */ memcpy(s->prbuf, data_buffer_ptr->pvBuffer, data_buffer_ptr->cbBuffer); s->prbuf_len = data_buffer_ptr->cbBuffer; s->rcvbuf_len = 0; vtrace("TLS: Got %lu decrypted bytes\n", data_buffer_ptr->cbBuffer); } /* Move any "extra" data to the receive buffer for next time. */ if (extra_buffer_ptr != NULL) { vtrace("TLS: %d bytes extra after decryption\n", (int)extra_buffer_ptr->cbBuffer); memmove(s->rcvbuf, extra_buffer_ptr->pvBuffer, extra_buffer_ptr->cbBuffer); s->rcvbuf_len = extra_buffer_ptr->cbBuffer; } /* * Check for renegotiation. * It's not clear to me if we can get data back *and* this return code, * of if it's one or the other. */ if (ret == SEC_I_RENEGOTIATE) { /* The server wants to perform another handshake sequence. */ vtrace("TLS: Server requested renegotiate\n"); ret = client_handshake_loop(s, false); if (ret != SEC_E_OK) { s->negotiated = false; return ret; } /* XXX: And if it succeeds? */ } if (ret == SEC_E_OK) { break; } } return ret; } /* Send an encrypted message. */ static SECURITY_STATUS encrypt_send( schannel_sio_t *s, const char *buf, size_t len) { SECURITY_STATUS ret; SecBufferDesc message; SecBuffer buffers[4]; int nw; /* Copy the data. */ memcpy(s->sendbuf + s->sizes.cbHeader, buf, len); /* Encrypt the data. */ buffers[0].pvBuffer = s->sendbuf; buffers[0].cbBuffer = s->sizes.cbHeader; buffers[0].BufferType = SECBUFFER_STREAM_HEADER; buffers[1].pvBuffer = s->sendbuf + s->sizes.cbHeader; buffers[1].cbBuffer = (DWORD)len; buffers[1].BufferType = SECBUFFER_DATA; buffers[2].pvBuffer = s->sendbuf + s->sizes.cbHeader + len; buffers[2].cbBuffer = s->sizes.cbTrailer; buffers[2].BufferType = SECBUFFER_STREAM_TRAILER; buffers[3].pvBuffer = SECBUFFER_EMPTY; buffers[3].cbBuffer = SECBUFFER_EMPTY; buffers[3].BufferType = SECBUFFER_EMPTY; message.ulVersion = SECBUFFER_VERSION; message.cBuffers = 4; message.pBuffers = buffers; ret = EncryptMessage(&s->context, 0, &message, 0); if (FAILED(ret)) { sioc_set_error("EncryptMessage: error 0x%x (%s)", (unsigned)ret, win32_strerror(ret)); return ret; } /* Send the encrypted data to the server. */ nw = send(s->sock, s->sendbuf, buffers[0].cbBuffer + buffers[1].cbBuffer + buffers[2].cbBuffer, 0); vtrace("TLS: %d bytes of encrypted data sent\n", nw); if (nw < 0) { ret = WSAGetLastError(); sioc_set_error("send: error %d (%s)", (int)ret, win32_strerror(ret)); } else { #if defined(VERBOSE) /*[*/ print_hex_dump(">enc", nw, (PBYTE)s->sendbuf); #endif /*]*/ } return ret; } /* Disconnect from the server. */ static SECURITY_STATUS disconnect_from_server(schannel_sio_t *s) { PBYTE outbuf; DWORD type, flags, out_flags; int n2w; int nw; SECURITY_STATUS status; SecBufferDesc out_buffer; SecBuffer out_buffers[1]; TimeStamp expiry; /* Notify schannel that we are about to close the connection. */ type = SCHANNEL_SHUTDOWN; out_buffers[0].pvBuffer = &type; out_buffers[0].BufferType = SECBUFFER_TOKEN; out_buffers[0].cbBuffer = sizeof(type); out_buffer.cBuffers = 1; out_buffer.pBuffers = out_buffers; out_buffer.ulVersion = SECBUFFER_VERSION; status = ApplyControlToken(&s->context, &out_buffer); if (FAILED(status)) { vtrace("TLS: ApplyControlToken: error 0x%x (%s)\n", (unsigned)status, win32_strerror(status)); return status; } /* Build a TLS close notify message. */ flags = ISC_REQ_SEQUENCE_DETECT | ISC_REQ_REPLAY_DETECT | ISC_REQ_CONFIDENTIALITY | ISC_RET_EXTENDED_ERROR | ISC_REQ_ALLOCATE_MEMORY | ISC_REQ_STREAM; out_buffers[0].pvBuffer = NULL; out_buffers[0].BufferType = SECBUFFER_TOKEN; out_buffers[0].cbBuffer = 0; out_buffer.cBuffers = 1; out_buffer.pBuffers = out_buffers; out_buffer.ulVersion = SECBUFFER_VERSION; status = InitializeSecurityContext(&s->client_creds, &s->context, NULL, flags, 0, 0, NULL, 0, &s->context, &out_buffer, &out_flags, &expiry); if (FAILED(status)) { vtrace("TLS: InitializeSecurityContext: error 0x%x (%s)%s\n", (unsigned)status, win32_strerror(status), explain_error(status)); return status; } outbuf = out_buffers[0].pvBuffer; n2w = out_buffers[0].cbBuffer; /* Send the close notify message to the server. */ if (outbuf != NULL && n2w != 0) { nw = send(s->sock, (char *)outbuf, n2w, 0); if (nw == SOCKET_ERROR) { status = WSAGetLastError(); vtrace("TLS: send: error %d (%s)\n", (int)status, win32_strerror(status)); } else { vtrace("TLS: %d bytes of handshake data sent\n", nw); #if defined(VERBOSE) /*[*/ print_hex_dump(">enc", nw, outbuf); #endif /*]*/ } FreeContextBuffer(outbuf); } vtrace("TLS: Sent TLS disconnect\n"); return status; } /* * Read encrypted data from a socket. * Returns the data length, SIO_EOF for EOF, SIO_FATAL_ERROR for a fatal error, * SIO_EWOULDBLOCK for incomplete input. */ int sio_read(sio_t sio, char *buf, size_t buflen) { schannel_sio_t *s; SECURITY_STATUS ret; sioc_error_reset(); if (sio == NULL) { sioc_set_error("NULL sio"); return SIO_FATAL_ERROR; } s = (schannel_sio_t *)sio; if (s->sock == INVALID_SOCKET) { sioc_set_error("Invalid sio (not negotiated)"); return SIO_FATAL_ERROR; } if (!s->negotiated) { return SIO_EOF; } if (s->prbuf_len > 0) { size_t copy_len = s->prbuf_len; /* Record already buffered. */ if (copy_len > buflen) { copy_len = buflen; } memcpy(buf, s->prbuf, copy_len); s->prbuf_len -= copy_len; return (int)copy_len; } ret = read_decrypt(s, &s->context); if (ret != SEC_E_OK) { if (ret == WSAEWOULDBLOCK) { return SIO_EWOULDBLOCK; } s->negotiated = false; vtrace("TLS: sio_read: fatal error, ret = 0x%x\n", (unsigned)ret); return SIO_FATAL_ERROR; } if (s->prbuf_len == 0) { /* End of file. */ s->negotiated = false; return SIO_EOF; } /* Got a complete record. */ return sio_read(sio, buf, buflen); } /* * Write encrypted data on the socket. * Returns the data length or SIO_FATAL_ERROR. */ int sio_write(sio_t sio, const char *buf, size_t buflen) { schannel_sio_t *s; size_t len_left = buflen; sioc_error_reset(); if (sio == NULL) { sioc_set_error("NULL sio"); return SIO_FATAL_ERROR; } s = (schannel_sio_t *)sio; if (s->sock == INVALID_SOCKET) { sioc_set_error("Invalid sio (not negotiated)"); return SIO_FATAL_ERROR; } do { size_t n2w = len_left; SECURITY_STATUS ret; if (n2w > s->sizes.cbMaximumMessage) { n2w = s->sizes.cbMaximumMessage; } ret = encrypt_send(s, buf, n2w); if (ret != SEC_E_OK) { s->negotiated = false; return SIO_FATAL_ERROR; } len_left -= n2w; buf += n2w; } while (len_left > 0); return (int)buflen; } /* Closes the TLS connection. */ void sio_close(sio_t sio) { schannel_sio_t *s; if (sio == NULL) { return; } s = (schannel_sio_t *)sio; if (s->sock == INVALID_SOCKET) { return; } if (s->negotiated) { disconnect_from_server(s); } sio_free(s); } /* * Returns true if the current connection is unverified. */ bool sio_secure_unverified(sio_t sio) { schannel_sio_t *s = (schannel_sio_t *)sio; return s? s->secure_unverified: false; } /* * Returns a bitmap of the supported options. */ unsigned sio_options_supported(void) { return TLS_OPT_CLIENT_CERT; } /* * Returns session information. */ const char * sio_session_info(sio_t sio) { schannel_sio_t *s = (schannel_sio_t *)sio; return s? s->session_info: NULL; } /* * Returns server cert information. */ const char * sio_server_cert_info(sio_t sio) { schannel_sio_t *s = (schannel_sio_t *)sio; return s? s->server_cert_info: NULL; } /* * Returns server subject names. */ const char * sio_server_subject_names(sio_t sio) { schannel_sio_t *s = (schannel_sio_t *)sio; return s? s->server_subjects: NULL; } /* * Returns the provider name. */ const char * sio_provider(void) { return "Windows Schannel"; } suite3270-4.1/Common/Win32/snprintf.c000066400000000000000000000045151413735575200172050ustar00rootroot00000000000000/* * Copyright (c) 2013, 2015 Paul Mattes. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of Paul Mattes nor his contributors may be used * to endorse or promote products derived from this software without * specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. */ /* * snprintf.c * A safer version of snprintf for Windows. */ #if !defined(_WIN32) /*[*/ #error For Windows only. #endif /*]*/ #define IS_SNPRINTF_C 1 #include "globals.h" /* * Version of {,v}snprintf that work more like the standard versions, and * always NULL terminate. They do not, however, return the length that would * have been written if overflow did not occur -- they return -1, like the * Windows versions. */ int safe_vsnprintf(char *str, size_t size, const char *fmt, va_list ap) { if (size > 0) { int len; len = vsnprintf(str, size, fmt, ap); str[size - 1] = '\0'; return len; } else { return 0; } } int safe_snprintf(char *str, size_t size, const char *fmt, ...) { va_list ap; int len; va_start(ap, fmt); len = safe_vsnprintf(str, size, fmt, ap); va_end(ap); return len; } suite3270-4.1/Common/Win32/w3misc.c000066400000000000000000000200601413735575200165400ustar00rootroot00000000000000/* * Copyright (c) 2007-2009, 2013, 2015, 2019, 2021 Paul Mattes. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the names of Paul Mattes nor the names of his contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO * EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * w3misc.c * Miscellaneous Win32 functions. */ #include "globals.h" #if !defined(_WIN32) /*[*/ #error This module is only for Win32. #endif /*]*/ #include #include #include "asprintf.h" #include "w3misc.h" #include "trace.h" /* Local multi-byte code page for displaying Windows error messages. */ static int local_cp = CP_ACP; /* Initialize Winsock. */ int sockstart(void) { static int initted = 0; WORD wVersionRequested; WSADATA wsaData; if (initted) { return 0; } initted = 1; wVersionRequested = MAKEWORD(2, 2); if (WSAStartup(wVersionRequested, &wsaData) != 0) { fprintf(stderr, "WSAStartup failed: %s\n", win32_strerror(GetLastError())); return -1; } if (LOBYTE(wsaData.wVersion) != 2 || HIBYTE(wsaData.wVersion) != 2) { fprintf(stderr, "Bad winsock version: %d.%d\n", LOBYTE(wsaData.wVersion), HIBYTE(wsaData.wVersion)); return -1; } return 0; } /* Convert a network address to a string. */ const char * inet_ntop(int af, const void *src, char *dst, socklen_t cnt) { union { struct sockaddr sa; struct sockaddr_in sin; struct sockaddr_in6 sin6; } sa; DWORD ssz; DWORD sz = cnt; *dst = '\0'; memset(&sa, '\0', sizeof(sa)); switch (af) { case AF_INET: sa.sin.sin_addr = *(struct in_addr *)src; /* struct copy */ ssz = sizeof(struct sockaddr_in); break; case AF_INET6: sa.sin6.sin6_addr = *(struct in6_addr *)src; /* struct copy */ ssz = sizeof(struct sockaddr_in6); break; default: if (cnt > 0) { dst[0] = '\0'; } return NULL; } sa.sa.sa_family = af; if (WSAAddressToString(&sa.sa, ssz, NULL, dst, &sz) != 0) { if (cnt > 0) { dst[0] = '\0'; } return NULL; } return dst; } /* * Set the local Windows codepage. * When running on a full emulator, this is called when the configured output * code page is set. For standalone code like x3270if, the codepage remains at * the default of CP_ACP. */ void set_local_cp(int cp) { local_cp = cp; } /* * Converts a Windows WCHAR string to local multi-byte. * Returns length (not including trailing NUL) or -1 for failure. */ static int wchar_to_multibyte_string(WCHAR *string, char *mb, size_t mb_len) { int nc; BOOL udc; nc = WideCharToMultiByte(local_cp, 0, string, -1, mb, mb_len, (local_cp == CP_UTF8)? NULL: "?", (local_cp == CP_UTF8)? NULL: &udc); if (nc > 0 && mb[nc - 1] == '\0') { --nc; } return nc; } /* Decode a Win32 error number. */ const char * win32_strerror(int e) { # define SBUF_SIZE 4096 WCHAR wbuffer[SBUF_SIZE]; static char buffer[SBUF_SIZE]; bool success = false; if (FormatMessageW(FORMAT_MESSAGE_FROM_SYSTEM, NULL, e, MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), wbuffer, SBUF_SIZE, NULL)) { int nc; /* Convert from Windows Unicode to the right output format. */ nc = wchar_to_multibyte_string(wbuffer, buffer, SBUF_SIZE); if (nc > 0) { char c; /* Get rid of trailing CRLF. */ while (nc > 0 && ((c = buffer[--nc]) == '\r' || c == '\n')) { buffer[nc] = '\0'; } success = true; } } if (!success) { sprintf(buffer, "Windows error %d", e); } return buffer; } /* Translate a CP_ACP multi-byte string to the selected local codepage. */ const char * to_localcp(const char *s) { static WCHAR *w_buf = NULL; static int w_len = 0; static char *mb_buf = NULL; static int mb_len = 0; int nc; BOOL udc; if (GetACP() == local_cp) { return s; } /* Allocate the wide character buffer. */ nc = MultiByteToWideChar(CP_ACP, 0, s, -1, NULL, 0); if (nc == 0) { return s; } if (nc > w_len) { w_len = nc; Replace(w_buf, (WCHAR *)Malloc(w_len * sizeof(WCHAR))); } /* Convert the error string to wide characters. */ nc = MultiByteToWideChar(CP_ACP, 0, s, -1, w_buf, w_len); if (nc == 0) { return s; } /* Allocate the multi-byte buffer. */ nc = WideCharToMultiByte(local_cp, 0, w_buf, -1, NULL, 0, (local_cp == CP_UTF8)? NULL: "?", (local_cp == CP_UTF8)? NULL: &udc); if (nc == 0) { return s; } /* Convert the wide character string to multi-byte. */ if (nc > mb_len) { mb_len = nc; Replace(mb_buf, (char *)Malloc(mb_len)); } nc = WideCharToMultiByte(local_cp, 0, w_buf, -1, mb_buf, mb_len, (local_cp == CP_UTF8)? NULL: "?", (local_cp == CP_UTF8)? NULL: &udc); if (nc == 0) { return s; } return mb_buf; } /* * Windows version of perror(). */ void win32_perror(const char *fmt, ...) { va_list ap; char *buf; va_start(ap, fmt); vasprintf(&buf, fmt, ap); va_end(ap); fprintf(stderr, "%s: %s\n", buf, win32_strerror(GetLastError())); fflush(stderr); free(buf); } #if defined(_MSC_VER) /*[*/ /* MinGW has gettimofday(), but MSVC does not. */ #define SECS_BETWEEN_EPOCHS 11644473600ULL #define SECS_TO_100NS 10000000ULL /* 10^7 */ int gettimeofday(struct timeval *tv, void *ignored) { FILETIME t; ULARGE_INTEGER u; GetSystemTimeAsFileTime(&t); memcpy(&u, &t, sizeof(ULARGE_INTEGER)); /* Isolate seconds and move epochs. */ tv->tv_sec = (DWORD)((u.QuadPart / SECS_TO_100NS) - SECS_BETWEEN_EPOCHS); tv->tv_usec = (u.QuadPart % SECS_TO_100NS) / 10ULL; return 0; } /* MinGW has getopt(), but MSVC does not. */ char *optarg; int optind = 1, opterr = 1, optopt; static const char *nextchar = NULL; int getopt(int argc, char * const argv[], const char *optstring) { char c; const char *s; if (optind == 1) { nextchar = argv[optind++]; } do { if (nextchar == argv[optind - 1]) { if (optind > argc) { --optind; /* went too far */ return -1; } if (nextchar == NULL) { --optind; /* went too far */ return -1; } if (!strcmp(nextchar, "--")) { return -1; } if (*nextchar++ != '-') { --optind; return -1; } } if ((c = *nextchar++) == '\0') { nextchar = argv[optind++]; } } while (nextchar == argv[optind - 1]); s = strchr(optstring, c); if (s == NULL) { if (opterr) { fprintf(stderr, "Unknown option '%c'\n", c); } return '?'; } if (*(s + 1) == ':') { if (*nextchar) { optarg = (char *)nextchar; nextchar = argv[optind++]; return c; } else if (optind < argc && argv[optind] != NULL) { optarg = (char *)argv[optind++]; nextchar = argv[optind++]; return c; } else { if (opterr) { fprintf(stderr, "Missing value after '%c'\n", c); } return -1; } } else { return c; } } #endif /*]*/ suite3270-4.1/Common/Win32/windirs.c000077500000000000000000000255001413735575200170210ustar00rootroot00000000000000/* * Copyright (c) 2006-2009, 2014-2017, 2019 Paul Mattes. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the names of Paul Mattes nor the names of his contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO * EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * windirs.c * A Windows console-based 3270 Terminal Emulator * Find common directory paths. */ #include "globals.h" #include "windirs.h" /* Locate the desktop and appdata directories via the SHGetFolderPath API. */ static int get_dirs_shfp(char **desktop, char **appdata, char **common_desktop, char **common_appdata) { HRESULT r; if (desktop != NULL) { *desktop = malloc(MAX_PATH); if (*desktop == NULL) { return -1; } r = SHGetFolderPath(NULL, CSIDL_DESKTOPDIRECTORY, NULL, SHGFP_TYPE_CURRENT, *desktop); if (r != S_OK) { free(*desktop); *desktop = NULL; } } if (appdata != NULL) { *appdata = malloc(MAX_PATH); if (*appdata == NULL) { return -1; } r = SHGetFolderPath(NULL, CSIDL_APPDATA, NULL, SHGFP_TYPE_CURRENT, *appdata); if (r != S_OK) { fprintf(stderr, "SHGetFolderPath(APPDATA) failed: 0x%x\n", (int)r); return -1; } } if (common_desktop != NULL) { *common_desktop = malloc(MAX_PATH); if (*common_desktop == NULL) { return -1; } r = SHGetFolderPath(NULL, CSIDL_COMMON_DESKTOPDIRECTORY, NULL, SHGFP_TYPE_CURRENT, *common_desktop); if (r != S_OK) { fprintf(stderr, "SHGetFolderPath(COMMON_DESKTOPDIRECTORY) failed: " "0x%x\n", (int)r); return -1; } } if (common_appdata != NULL) { *common_appdata = malloc(MAX_PATH); if (*common_appdata == NULL) { return -1; } r = SHGetFolderPath(NULL, CSIDL_COMMON_APPDATA, NULL, SHGFP_TYPE_CURRENT, *common_appdata); if (r != S_OK) { fprintf(stderr, "SHGetFolderPath(COMMON_APPDATA) failed: 0x%x\n", (int)r); return -1; } } return 0; } /* Return the current working directory, always ending with a '\'. */ static char * getcwd_bsl(void) { char *wd; size_t sl; wd = _getcwd(NULL, 0); sl = strlen(wd); if (sl > 0 && wd[sl - 1] != '\\') { char *xwd; xwd = malloc(sl + 2); if (xwd == NULL) { return NULL; } strcpy(xwd, wd); strcat(xwd, "\\"); free(wd); wd = xwd; } return wd; } /** * Locate the installation, desktop and app-data directories. * Return them in malloc'd buffers, all with trailing backslashes. * Also return a flag indicating that the program was installed. * If returning AppData and the program is installed, make sure that the * directory exists. * * @param[in] appname application name (for app-data) * @param[out] instdir installation directory (or NULL) * @param[out] desktop desktop directory (or NULL) * @param[out] appdata app-data directory (or NULL) * @param[out] common_desktop common desktop directory (or NULL) * @param[out] common_appdata common app-data directory (or NULL) * @param[out] documents My Documents directory (or NULL) * @param[out] common_docunents common Documents directory (or NULL) * @param[out] docs3270 My Documents\{appname} directory (or NULL) * @param[out] common_docs3270 common Documents\{appname} directory (or NULL) * @param[out] flags Is the program installed? Does catf,exe exist? * * @returns true for success, false for an unrecoverable error. * * All returned directories end in '\'. * * Uses the presence of CATF.EXE to decide if the program is installed or * not. If not, appdata is returned as the cwd. */ bool get_dirs(char *appname, char **instdir, char **desktop, char **appdata, char **common_desktop, char **common_appdata, char **documents, char **common_documents, char **docs3270, char **common_docs3270, unsigned *flags) { char **xappdata = appdata; char **common_xappdata = common_appdata; bool is_installed = false; HRESULT r; char *d = NULL, *cd = NULL; HKEY key; HMODULE h; if (flags != NULL) { *flags = 0; } /* Check for the registry key to see if we are installed. */ if (RegOpenKeyEx(HKEY_CLASSES_ROOT, ".wc3270", 0, KEY_READ, &key) == ERROR_SUCCESS) { RegCloseKey(key); if (flags != NULL) { *flags |= GD_INSTALLED; } is_installed = true; } /* Check for CATF.EXE. */ h = LoadLibrary("CATF.EXE"); if (h != NULL) { FreeLibrary(h); if (flags != NULL) { *flags |= GD_CATF; } } /* * Use arg0 and GetFullPathName() to figure out the installation * directory. * * When the Session Wizard is run from the normal install directory, this * will produce the desired result. In no-install mode, this will also do * the right thing, assuming that they put wc3270.exe and wc3270wiz.exe * in the same place. * * The danger is if someone copies the Wizard somewhere different. We will * end up pointing at that directory. * * I can't use CSIDL_PROGRAMFILES, because the user can override it in the * installer. */ if (instdir != NULL) { /* Get the pathname of this program. */ HMODULE hModule = GetModuleHandle(NULL); char path[MAX_PATH]; char *bsl; GetModuleFileName(hModule, path, MAX_PATH); /* Chop it off after the last backslash. */ bsl = strrchr(path, '\\'); if (bsl == NULL) { /* Should not happen. */ *instdir = getcwd_bsl(); if (*instdir == NULL) { return false; } } else { *(bsl + 1) = '\0'; *instdir = malloc(strlen(path) + 1); if (*instdir == NULL) { return false; } strcpy(*instdir, path); } } /* If not installed, app-data and common app-data are cwd. */ if (!is_installed) { if (appdata != NULL) { *appdata = getcwd_bsl(); if (*appdata == NULL) { return false; } } if (common_appdata != NULL) { *common_appdata = getcwd_bsl(); if (*common_appdata == NULL) { return false; } } /* Keep get_dirs_shfp() from resolving it below. */ xappdata = NULL; common_xappdata = NULL; } if (desktop != NULL || xappdata != NULL) { char *wsl; /* Ask Windows where the directories are. */ if (get_dirs_shfp(desktop, xappdata, common_desktop, common_xappdata) < 0) { return false; } /* Append a trailing "\" to Desktop. */ if (desktop != NULL && *desktop != NULL && (*desktop)[strlen(*desktop) - 1] != '\\') { wsl = malloc(strlen(*desktop) + 2); if (wsl == NULL) { return false; } sprintf(wsl, "%s\\", *desktop); free(*desktop); *desktop = wsl; } /* Append the application name and trailing "\" to AppData. */ if (xappdata != NULL) { size_t sl = strlen(*xappdata); wsl = malloc(sl + 1 + strlen(appname) + 2); if (wsl == NULL) { return false; } sprintf(wsl, "%s\\%s\\", *xappdata, appname); free(*xappdata); *xappdata = wsl; /* * Create the per-user AppData directory, in case the * program was installed by a different user. */ _mkdir(*xappdata); } /* Append a trailing "\" to CommonDesktop. */ if (common_desktop != NULL && *common_desktop != NULL && (*common_desktop)[strlen(*common_desktop) - 1] != '\\') { wsl = malloc(strlen(*common_desktop) + 2); if (wsl == NULL) { return false; } sprintf(wsl, "%s\\", *common_desktop); free(*common_desktop); *common_desktop = wsl; } /* Append the product name to CommonAppData. */ if (common_xappdata != NULL && *common_xappdata != NULL) { size_t sl = strlen(*common_xappdata); int add_bsl = 0; if ((*common_xappdata)[sl - 1] != '\\') { add_bsl = 1; } wsl = malloc(sl + add_bsl + strlen(appname) + 2); if (wsl == NULL) { return false; } sprintf(wsl, "%s%s%s\\", *common_xappdata, add_bsl? "\\": "", appname); _mkdir(wsl); free(*common_xappdata); *common_xappdata = wsl; } } /* Get the Documents directories. */ if (documents != NULL || docs3270 != NULL) { d = malloc(MAX_PATH + 1); if (d == NULL) { return false; } r = SHGetFolderPath(NULL, CSIDL_PERSONAL, NULL, SHGFP_TYPE_CURRENT, d); if (r != S_OK) { free(d); d = NULL; } else { strcat(d, "\\"); } if (documents != NULL) { *documents = d; } } if (common_documents != NULL || common_docs3270 != NULL) { cd = malloc(MAX_PATH); if (cd == NULL) { return false; } r = SHGetFolderPath(NULL, CSIDL_COMMON_DOCUMENTS, NULL, SHGFP_TYPE_CURRENT, cd); if (r != S_OK) { free(cd); cd = NULL; } else { strcat(cd, "\\"); } if (common_documents != NULL) { *common_documents = cd; } } if (d != NULL && docs3270 != NULL) { size_t sl = strlen(d) + strlen(appname) + 2; *docs3270 = malloc(sl); if (*docs3270 == NULL) { return false; } snprintf(*docs3270, sl, "%s%s\\", d, appname); } if (cd != NULL && common_docs3270 != NULL) { size_t sl = strlen(cd) + strlen(appname) + 2; *common_docs3270 = malloc(sl); if (*common_docs3270 == NULL) { return false; } snprintf(*common_docs3270, sl, "%s%s\\", cd, appname); } #if defined(DEBUG) /*[*/ printf("get_dirs: instdir '%s', desktop '%s', appdata '%s', " "common_desktop '%s', common_appdata '%s' " "documents '%s', common_documents '%s' " "docs3270 '%s', common_docs3270 '%s'\n", instdir? *instdir: "(none)", desktop? *desktop: "(none)", appdata? *appdata: "(none)", common_desktop? *common_desktop: "(none)", common_appdata? *common_appdata: "(none)", documents? *documents: "(none)", common_documents? *common_documents: "(none)", docs3270? *docs3270: "(none)", common_docs3270? *common_docs3270: "(none)"); printf("Enter..."); fflush(stdout); getchar(); #endif /*]*/ return true; } suite3270-4.1/Common/Win32/winenv.mk000077500000000000000000000011041413735575200170270ustar00rootroot00000000000000# Common definitions for Windows makefiles. # Set the MinGW tools prefix and the _WIN32/64 symbols based on the WIN64 # environment variable. ifdef WIN64 GT_PFX = x86_64-w64-mingw32- WIN32_FLAGS = -D_WIN32 -D_WIN64 -DWIN32_LEAN_AND_MEAN else GT_PFX = i686-w64-mingw32- WIN32_FLAGS = -D_WIN32 -DWIN32_LEAN_AND_MEAN endif NATIVECC = gcc CC = $(GT_PFX)gcc AR = $(GT_PFX)ar WINDRES = $(GT_PFX)windres # Set the local executable suffix, depending on whether we are compiling on # Cygwin or Linux. OS = $(shell uname -o) ifeq ($(OS),Cygwin) NATIVE_SFX = .exe else NATIVE_SFX = endif suite3270-4.1/Common/Win32/winvers.c000066400000000000000000000063471413735575200170440ustar00rootroot00000000000000/* * Copyright (c) 2007-2009, 2014, 2016-2017 Paul Mattes. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the names of Paul Mattes nor the names of his contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO * EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * winvers.c * A Windows console-based 3270 Terminal Emulator * OS version query */ #include "globals.h" #include "winvers.h" #if defined(__GNUC__) /*[*/ /* MinGW doesn't have IsWindowsVersionOrGreater(). */ BOOL IsWindowsVersionOrGreater(WORD major_version, WORD minor_version, WORD service_pack_major) { OSVERSIONINFOEX version_info; DWORDLONG condition_mask = 0; memset(&version_info, 0, sizeof(OSVERSIONINFOEX)); version_info.dwOSVersionInfoSize = sizeof(OSVERSIONINFOEX); version_info.dwMajorVersion = major_version; version_info.dwMinorVersion = minor_version; version_info.wServicePackMajor = service_pack_major; VER_SET_CONDITION(condition_mask, VER_MAJORVERSION, VER_GREATER_EQUAL); VER_SET_CONDITION(condition_mask, VER_MINORVERSION, VER_GREATER_EQUAL); VER_SET_CONDITION(condition_mask, VER_SERVICEPACKMAJOR, VER_GREATER_EQUAL); return VerifyVersionInfo(&version_info, VER_MAJORVERSION | VER_MINORVERSION | VER_SERVICEPACKMAJOR, condition_mask); } #endif /*]*/ int get_version_info(void) { /* * Enforce our version requirements explicitly, though chances are * missing DLL entry points will cause us to fall over long before we * get to here. */ if (!IsWindowsVersionOrGreater(5, 1, 0)) { fprintf(stderr, "Minimum supported Windows version is Windows XP " "(NT 5.1)\n"); return -1; } return 0; } /* Returns true if running under Wine. */ bool is_wine(void) { static const char *(CDECL *pwine_get_version)(void); HMODULE hntdll = GetModuleHandle("ntdll.dll"); if (!hntdll) { return false; } pwine_get_version = (void *)GetProcAddress(hntdll, "wine_get_version"); return pwine_get_version != NULL; } suite3270-4.1/Common/Win32/zipit000077500000000000000000000027551413735575200162670ustar00rootroot00000000000000#!/usr/bin/env bash # Create a staged zip file # Change a possibly-relative pathname to a full pathname. function repath { case $1 in /*) echo "$1" ;; *) echo "$PWD/$1" ;; esac } # Pick off '-c' if [ "X$1" = "X-c" ] then comment="$2" shift 2 fi # Pick off '-o' if [ "X$1" = "X-o" ] then ofile="$(repath $2)" shift 2 fi if [ $# -ne 1 ] then echo >&2 "Usage: ZipIt [-c comment] [-o ofile] template-file" exit 1 fi zd=/tmp/zi$$ rm -rf $zd trap "rm -rf $zd" EXIT trap "exit 0" INT mkdir $zd exec 5<$1 || exit 1 while read -u5 kw p1 p2 p3 do case "$kw" in \#*) ;; O) # Output file if [ -z "$p1" ] then echo >&2 "Missing parameter for O" exit 1 fi if [ -n "$p2" ] then echo >&2 "Too many parameters for O" exit 1 fi ofile=$(repath $p1) ;; D) # Create subdir if [ -z "$p1" ] then echo >&2 "Missing parameter for D" exit 1 fi if [ -n "$p2" ] then echo >&2 "Too many parameters for D" exit 1 fi mkdir -p $zd/$p1 ;; F) # File if [ -z "$p1" ] then echo >&2 "Missing parameter(s) for F" exit 1 fi if [ -z "$p2" ] then p2=$p1 fi if [ -n "$p3" ] then echo >&2 "Too many parameters for F" exit 1 fi if [ ! -f "$p1" ] then echo >&2 "No such file: $p1" exit 1 fi ln -s $(repath $p1) $zd/$p2 ;; *) echo >&2 "Unknown keyword '$kw'" exit 1 esac done if [ -z "$ofile" ] then echo >&2 "Must specify output file" exit 1 fi cd $zd if [ -n "$comment" ] then echo "$comment" | zip -r -z -X $ofile . else zip -r -X $ofile . fi cd - suite3270-4.1/Common/XtGlue.c000066400000000000000000000630131413735575200156460ustar00rootroot00000000000000/* * Copyright (c) 1999-2009, 2013-2016, 2019 Paul Mattes. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of Paul Mattes nor his contributors may be used * to endorse or promote products derived from this software without * specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. */ /* glue for missing Xt code */ #include "globals.h" #include "glue.h" #include "appres.h" #include "latin1.h" #include "lazya.h" #include "task.h" #include "trace.h" #include "utils.h" #if defined(_WIN32) /*[*/ # include "w3misc.h" # include "xio.h" #endif /*]*/ #include #include #include #include #include #if !defined(_WIN32) /*[*/ # include #endif /*]*/ #if defined(SEPARATE_SELECT_H) /*[*/ # include #endif /*]*/ #define InputReadMask 0x1 #define InputExceptMask 0x2 #define InputWriteMask 0x4 #define MILLION 1000000L void (*Error_redirect)(const char *) = NULL; void (*Warning_redirect)(const char *) = NULL; void Error(const char *s) { if (Error_redirect != NULL) { (*Error_redirect)(s); return; } fprintf(stderr, "Error: %s\n", s); fflush(stderr); exit(1); } void Warning(const char *s) { if (Warning_redirect != NULL) { (*Warning_redirect)(s); } else { fprintf(stderr, "Warning: %s\n", s); fflush(stderr); } } static struct { /*const*/ char *name; /* not const because of ancient X11 API */ latin1_symbol_t key; } latin1[] = { /* HTML entities and X11 KeySym names. */ { "sp", latin1_sp }, { "space", latin1_sp }, { "excl", latin1_excl }, { "exclam", latin1_excl }, { "quot", latin1_quot }, { "quotedbl", latin1_quot }, { "num", latin1_num }, { "numbersign", latin1_num }, { "dollar", latin1_dollar }, { "percnt", latin1_percnt }, { "percent", latin1_percnt }, { "amp", latin1_amp }, { "ampersand", latin1_amp }, { "apos", latin1_apos }, { "apostrophe", latin1_apos }, { "quoteright", latin1_apos }, { "lpar", latin1_lpar }, { "parenleft", latin1_lpar }, { "rpar", latin1_rpar }, { "parenright", latin1_rpar }, { "ast", latin1_ast }, { "asterisk", latin1_ast }, { "plus", latin1_plus }, { "comma", latin1_comma }, { "minus", latin1_minus }, { "hyphen", latin1_minus }, /* There is a conflict here between HTML and X11, which uses 'hyphen' for shy (U+00AD). HTML wins. */ { "period", latin1_period }, { "sol", latin1_sol }, { "slash", latin1_sol }, { "0", latin1_0 }, { "1", latin1_1 }, { "2", latin1_2 }, { "3", latin1_3 }, { "4", latin1_4 }, { "5", latin1_5 }, { "6", latin1_6 }, { "7", latin1_7 }, { "8", latin1_8 }, { "9", latin1_9 }, { "colon", latin1_colon }, { "semi", latin1_semi }, { "semicolon", latin1_semi }, { "lt", latin1_lt }, { "less", latin1_lt }, { "equals", latin1_equals }, { "equal", latin1_equals }, { "gr", latin1_gt }, { "greater", latin1_gt }, { "quest", latin1_quest }, { "question", latin1_quest }, { "commat", latin1_commat }, { "at", latin1_commat }, { "A", latin1_A }, { "B", latin1_B }, { "C", latin1_C }, { "D", latin1_D }, { "E", latin1_E }, { "F", latin1_F }, { "G", latin1_G }, { "H", latin1_H }, { "I", latin1_I }, { "J", latin1_J }, { "K", latin1_K }, { "L", latin1_L }, { "M", latin1_M }, { "N", latin1_N }, { "O", latin1_O }, { "P", latin1_P }, { "Q", latin1_Q }, { "R", latin1_R }, { "S", latin1_S }, { "T", latin1_T }, { "U", latin1_U }, { "V", latin1_V }, { "W", latin1_W }, { "X", latin1_X }, { "Y", latin1_Y }, { "Z", latin1_Z }, { "lsqb", latin1_lsqb }, { "bracketleft", latin1_lsqb }, { "bsol", latin1_bsol }, { "backslash", latin1_bsol }, { "rsqb", latin1_rsqb }, { "bracketright", latin1_rsqb }, { "circ", latin1_circ }, { "asciicircum", latin1_circ }, { "lowbar", latin1_lowbar }, { "horbar", latin1_lowbar }, { "underscore", latin1_lowbar }, { "grave", latin1_grave }, { "quoteleft", latin1_grave }, { "a", latin1_a }, { "b", latin1_b }, { "c", latin1_c }, { "d", latin1_d }, { "e", latin1_e }, { "f", latin1_f }, { "g", latin1_g }, { "h", latin1_h }, { "i", latin1_i }, { "j", latin1_j }, { "k", latin1_k }, { "l", latin1_l }, { "m", latin1_m }, { "n", latin1_n }, { "o", latin1_o }, { "p", latin1_p }, { "q", latin1_q }, { "r", latin1_r }, { "s", latin1_s }, { "t", latin1_t }, { "u", latin1_u }, { "v", latin1_v }, { "w", latin1_w }, { "x", latin1_x }, { "y", latin1_y }, { "z", latin1_z }, { "lcub", latin1_lcub }, { "braceleft", latin1_lcub }, { "verbar", latin1_verbar }, { "bar", latin1_verbar }, { "rcub", latin1_rcub }, { "braceright", latin1_rcub }, { "tilde", latin1_tilde }, { "asciitilde", latin1_tilde }, { "nbsp", latin1_nbsp }, { "nobreakspace", latin1_nbsp }, { "iexcl", latin1_iexcl }, { "exclamdown", latin1_iexcl }, { "cent", latin1_cent }, { "pound", latin1_pound }, { "sterling", latin1_pound }, { "curren", latin1_curren }, { "currency", latin1_curren }, { "yen", latin1_yen }, { "brkbar", latin1_brkbar }, { "brvbar", latin1_brkbar }, { "brokenbar", latin1_brkbar }, { "sect", latin1_sect }, { "section", latin1_sect }, { "uml", latin1_uml }, { "die", latin1_uml }, { "diaeresis", latin1_uml }, { "copy", latin1_copy }, { "copyright", latin1_copy }, { "ordf", latin1_ordf }, { "ordfeminine", latin1_ordf }, { "laquo", latin1_laquo }, { "guillemotleft",latin1_laquo }, { "not", latin1_not }, { "notsign", latin1_not }, { "shy", latin1_shy }, { "reg", latin1_reg }, { "registered", latin1_reg }, { "macr", latin1_macr }, { "hibar", latin1_macr }, { "macron", latin1_macr }, { "deg", latin1_deg }, { "degree", latin1_deg }, { "plusmn", latin1_plusmn }, { "plusminus", latin1_plusmn }, { "sup2", latin1_sup2 }, { "twosuperior", latin1_sup2 }, { "sup3", latin1_sup3 }, { "threesuperior",latin1_sup3 }, { "acute", latin1_acute }, { "micro", latin1_micro }, { "mu", latin1_micro }, { "para", latin1_para }, { "paragraph", latin1_para }, { "middot", latin1_middot }, { "periodcentered",latin1_middot }, { "cedil", latin1_cedil }, { "cedilla", latin1_cedil }, { "sup1", latin1_sup1 }, { "onesuperior", latin1_sup1 }, { "ordm", latin1_ordm }, { "masculine", latin1_ordm }, { "raquo", latin1_raquo }, { "guillemotright",latin1_raquo }, { "frac14", latin1_frac14 }, { "onequarter", latin1_frac14 }, { "frac12", latin1_frac12 }, { "half", latin1_frac12 }, { "onehalf", latin1_frac12 }, { "frac34", latin1_frac34 }, { "threequarters",latin1_frac34 }, { "iquest", latin1_iquest }, { "questiondown", latin1_iquest }, { "Agrave", latin1_Agrave }, { "Aacute", latin1_Aacute }, { "Acirc", latin1_Acirc }, { "Acircumflex", latin1_Acirc }, { "Atilde", latin1_Atilde }, { "Auml", latin1_Auml }, { "Adiaeresis", latin1_Auml }, { "Aring", latin1_Aring }, { "AElig", latin1_AElig }, { "AE", latin1_AElig }, { "Ccedil", latin1_Ccedil }, { "Ccedilla", latin1_Ccedil }, { "Egrave", latin1_Egrave }, { "Eacute", latin1_Eacute }, { "Ecirc", latin1_Ecirc }, { "Ecircumflex", latin1_Ecirc }, { "Euml", latin1_Euml }, { "Ediaeresis", latin1_Euml }, { "Igrave", latin1_Igrave }, { "Iacute", latin1_Iacute }, { "Icirc", latin1_Icirc }, { "Icircumflex", latin1_Icirc }, { "Iuml", latin1_Iuml }, { "Idiaeresis", latin1_Iuml }, { "ETH", latin1_ETH }, { "Eth", latin1_ETH }, { "Ntilde", latin1_Ntilde }, { "Ograve", latin1_Ograve }, { "Oacute", latin1_Oacute }, { "Ocirc", latin1_Ocirc }, { "Ocircumflex", latin1_Ocirc }, { "Otilde", latin1_Otilde }, { "Ouml", latin1_Ouml }, { "Odiaeresis", latin1_Ouml }, { "times", latin1_times }, { "multiply", latin1_times }, { "Oslash", latin1_Oslash }, { "Ooblique", latin1_Oslash }, { "Ugrave", latin1_Ugrave }, { "Uacute", latin1_Uacute }, { "Ucirc", latin1_Ucirc }, { "Ucircumflex", latin1_Ucirc }, { "Uuml", latin1_Uuml }, { "Udiaeresis", latin1_Uuml }, { "Yacute", latin1_Yacute }, { "THORN", latin1_THORN }, { "Thorn", latin1_THORN }, { "szlig", latin1_szlig }, { "ssharp", latin1_szlig }, { "agrave", latin1_agrave }, { "aacute", latin1_aacute }, { "acirc", latin1_acirc }, { "acircumflex", latin1_acirc }, { "atilde", latin1_atilde }, { "auml", latin1_auml }, { "adiaeresis", latin1_auml }, { "aring", latin1_aring }, { "aelig", latin1_aelig }, { "ae", latin1_aelig }, { "ccedil", latin1_ccedil }, { "ccedilla", latin1_ccedil }, { "egrave", latin1_egrave }, { "eacute", latin1_eacute }, { "ecirc", latin1_ecirc }, { "ecircumflex", latin1_ecirc }, { "euml", latin1_euml }, { "ediaeresis", latin1_euml }, { "igrave", latin1_igrave }, { "iacute", latin1_iacute }, { "icirc", latin1_icirc }, { "icircumflex", latin1_icirc }, { "iuml", latin1_iuml }, { "idiaeresis", latin1_iuml }, { "eth", latin1_eth }, { "ntilde", latin1_ntilde }, { "ograve", latin1_ograve }, { "oacute", latin1_oacute }, { "ocirc", latin1_ocirc }, { "ocircumflex", latin1_ocirc }, { "otilde", latin1_otilde }, { "ouml", latin1_ouml }, { "odiaeresis", latin1_ouml }, { "divide", latin1_divide }, { "division", latin1_divide }, { "oslash", latin1_oslash }, { "ugrave", latin1_ugrave }, { "uacute", latin1_uacute }, { "ucirc", latin1_ucirc }, { "ucircumflex", latin1_ucirc }, { "uuml", latin1_uuml }, { "udiaeresis", latin1_uuml }, { "yacute", latin1_yacute }, { "thorn", latin1_thorn }, { "yuml", latin1_yuml }, { "ydiaeresis", latin1_yuml }, /* * The following are, umm, hacks to allow symbolic names for * control codes. */ #if !defined(_WIN32) /*[*/ { "BackSpace", 0x08 }, { "Tab", 0x09 }, { "LineFeed", 0x0a }, { "Return", 0x0d }, { "Escape", 0x1b }, { "Delete", 0x7f }, #endif /*]*/ { NULL, 0 } }; ks_t string_to_key(char *s) { int i; if (strlen(s) == 1 && (*(unsigned char *)s & 0x7f) > ' ') { return *(unsigned char *)s; } for (i = 0; latin1[i].name != NULL; i++) { if (!strcmp(s, latin1[i].name)) { return latin1[i].key; } } return KS_NONE; } char * key_to_string(ks_t k) { int i; for (i = 0; latin1[i].name != NULL; i++) { if (latin1[i].key == k) { return latin1[i].name; } } return NULL; } /* Timeouts. */ #if defined(_WIN32) /*[*/ static void ms_ts(unsigned long long *u) { FILETIME t; /* Get the system time, in 100ns units. */ GetSystemTimeAsFileTime(&t); memcpy(u, &t, sizeof(unsigned long long)); /* Divide by 10,000 to get ms. */ *u /= 10000ULL; } #endif /*]*/ typedef struct timeout { struct timeout *next; #if defined(_WIN32) /*[*/ unsigned long long ts; #else /*][*/ struct timeval tv; #endif /*]*/ tofn_t proc; bool in_play; } timeout_t; static timeout_t *timeouts = NULL; ioid_t AddTimeOut(unsigned long interval_ms, tofn_t proc) { timeout_t *t_new; timeout_t *t; timeout_t *prev = NULL; t_new = (timeout_t *)Malloc(sizeof(timeout_t)); t_new->proc = proc; t_new->in_play = false; #if defined(_WIN32) /*[*/ ms_ts(&t_new->ts); t_new->ts += interval_ms; #else /*][*/ gettimeofday(&t_new->tv, NULL); t_new->tv.tv_sec += interval_ms / 1000L; t_new->tv.tv_usec += (interval_ms % 1000L) * 1000L; if (t_new->tv.tv_usec > MILLION) { t_new->tv.tv_sec += t_new->tv.tv_usec / MILLION; t_new->tv.tv_usec %= MILLION; } #endif /*]*/ /* Find where to insert this item. */ for (t = timeouts; t != NULL; t = t->next) { #if defined(_WIN32) /*[*/ if (t->ts > t_new->ts) #else /*][*/ if (t->tv.tv_sec > t_new->tv.tv_sec || (t->tv.tv_sec == t_new->tv.tv_sec && t->tv.tv_usec > t_new->tv.tv_usec)) #endif /*]*/ { break; } prev = t; } /* Insert it. */ if (prev == NULL) { /* Front. */ t_new->next = timeouts; timeouts = t_new; } else if (t == NULL) { /* Rear. */ t_new->next = NULL; prev->next = t_new; } else { /* Middle. */ t_new->next = t; prev->next = t_new; } return (ioid_t)t_new; } void RemoveTimeOut(ioid_t timer) { timeout_t *st = (timeout_t *)timer; timeout_t *t; timeout_t *prev = NULL; if (st->in_play) { return; } for (t = timeouts; t != NULL; t = t->next) { if (t == st) { if (prev != NULL) { prev->next = t->next; } else { timeouts = t->next; } Free(t); return; } prev = t; } } /* Input events. */ typedef struct input { struct input *next; iosrc_t source; int condition; iofn_t proc; } input_t; static input_t *inputs = NULL; static bool inputs_changed = false; ioid_t AddInput(iosrc_t source, iofn_t fn) { input_t *ip; assert(source != INVALID_IOSRC); ip = (input_t *)Malloc(sizeof(input_t)); ip->source = source; ip->condition = InputReadMask; ip->proc = fn; ip->next = inputs; inputs = ip; inputs_changed = true; return (ioid_t)ip; } ioid_t AddExcept(iosrc_t source, iofn_t fn) { #if defined(_WIN32) /*[*/ return 0; #else /*][*/ input_t *ip; ip = (input_t *)Malloc(sizeof(input_t)); ip->source = source; ip->condition = InputExceptMask; ip->proc = fn; ip->next = inputs; inputs = ip; inputs_changed = true; return (ioid_t)ip; #endif /*]*/ } #if !defined(_WIN32) /*[*/ ioid_t AddOutput(iosrc_t source, iofn_t fn) { input_t *ip; ip = (input_t *)Malloc(sizeof(input_t)); ip->source = source; ip->condition = InputWriteMask; ip->proc = fn; ip->next = inputs; inputs = ip; inputs_changed = true; return (ioid_t)ip; } #endif /*]*/ void RemoveInput(ioid_t id) { input_t *ip; input_t *prev = NULL; for (ip = inputs; ip != NULL; ip = ip->next) { if (ip == (input_t *)id) { break; } prev = ip; } if (ip == NULL) { return; } if (prev != NULL) { prev->next = ip->next; } else { inputs = ip->next; } Free(ip); inputs_changed = true; } #if !defined(_WIN32) /*[*/ /* Child exit events. */ typedef struct child_exit { struct child_exit *next; pid_t pid; childfn_t proc; } child_exit_t; static child_exit_t *child_exits = NULL; ioid_t AddChild(pid_t pid, childfn_t fn) { child_exit_t *cx; assert(pid != 0 && pid != -1); cx = (child_exit_t *)Malloc(sizeof(child_exit_t)); cx->pid = pid; cx->proc = fn; cx->next = child_exits; child_exits = cx; return (ioid_t)cx; } /** * Poll for an exited child processes. * * @return true if a waited-for child exited */ static bool poll_children(void) { pid_t pid; int status = 0; child_exit_t *c; child_exit_t *next = NULL; child_exit_t *prev = NULL; bool any = false; while ((pid = waitpid(-1, &status, WNOHANG)) > 0) { for (c = child_exits; c != NULL; c = next) { next = c->next; if (c->pid == pid) { (*c->proc)((ioid_t)c, status); if (prev) { prev->next = next; } else { child_exits = next; } Free(c); any = true; } else { prev = c; } } } return any; } #endif /*]*/ #if defined(_WIN32) /*[*/ #define MAX_HA 256 #endif /*]*/ /* * Inner event dispatcher. * Processes one or more pending I/O and timeout events. * Waits for the first event if block is true. * Returns in *processed_any if any events were processed. * * Returns true if all pending events have been processed. * Returns false if the set of events changed while events were being processed * and new ones may be ready; this function should be called again (with block * set to false) to try to process them. */ static bool process_some_events(bool block, bool *processed_any) { #if defined(_WIN32) /*[*/ HANDLE ha[MAX_HA]; DWORD nha; DWORD tmo; DWORD ret; unsigned long long now; int i; #else /*][*/ int ne = 0; fd_set rfds, wfds, xfds; int ns; struct timeval now, twait, *tp; #endif /*]*/ input_t *ip, *ip_next; struct timeout *t; bool any_events_pending; # if defined(_WIN32) /*[*/ # define SOURCE_READY (ret == WAIT_OBJECT_0 + i) # define WAIT_BAD (ret == WAIT_FAILED) # define GET_TS(v) ms_ts(v) # define EXPIRED(t, now) (t->ts <= now) # else /*][*/ # define SOURCE_READY FD_ISSET(ip->source, &rfds) # define WAIT_BAD (ns < 0) # define GET_TS(v) gettimeofday(v, NULL); # define EXPIRED(t, now) (t->tv.tv_sec < now.tv_sec || \ (t->tv.tv_sec == now.tv_sec && \ t->tv.tv_usec < now.tv_usec)) # endif /*]*/ *processed_any = false; any_events_pending = false; #if defined(_WIN32) /*[*/ nha = 0; #else /*][*/ FD_ZERO(&rfds); FD_ZERO(&wfds); FD_ZERO(&xfds); #endif /*]*/ for (ip = inputs; ip != NULL; ip = ip->next) { /* Set pending input event. */ if ((unsigned long)ip->condition & InputReadMask) { #if defined(_WIN32) /*[*/ ha[nha++] = ip->source; #else /*][*/ FD_SET(ip->source, &rfds); ne++; #endif /*]*/ any_events_pending = true; } #if !defined(_WIN32) /*[*/ /* Set pending output event. */ if ((unsigned long)ip->condition & InputWriteMask) { FD_SET(ip->source, &wfds); ne++; any_events_pending = true; } /* Set pending exception event. */ if ((unsigned long)ip->condition & InputExceptMask) { FD_SET(ip->source, &xfds); ne++; any_events_pending = true; } #endif /*]*/ } if (block) { if (timeouts != NULL) { /* Compute how long to wait for the first event. */ GET_TS(&now); #if defined(_WIN32) /*[*/ if (now > timeouts->ts) { tmo = 0; } else { tmo = (DWORD)(timeouts->ts - now); } #else /*][*/ twait.tv_sec = timeouts->tv.tv_sec - now.tv_sec; twait.tv_usec = timeouts->tv.tv_usec - now.tv_usec; if (twait.tv_usec < 0L) { twait.tv_sec--; twait.tv_usec += MILLION; } if (twait.tv_sec < 0L) { twait.tv_sec = twait.tv_usec = 0L; } tp = &twait; #endif /*]*/ any_events_pending = true; } else { /* Block infinitely. */ #if defined(_WIN32) /*[*/ tmo = INFINITE; #else /*][*/ tp = NULL; #endif /*]*/ } } else { /* Don't block. */ #if defined(_WIN32) /*[*/ tmo = 1; #else /*][*/ twait.tv_sec = twait.tv_usec = 0L; tp = &twait; #endif /*]*/ } #if !defined(_WIN32) /*[*/ /* Poll for children. */ if (poll_children()) { return false; } #endif /*]*/ /* If there's nothing to do now, we're done. */ if (!any_events_pending) { return true; } /* Wait for events. */ #if defined(_WIN32) /*[*/ if (tmo == INFINITE) { vtrace("Waiting for %d event%s\n", (int)nha, (nha == 1)? "": "s"); } else { vtrace("Waiting for %d event%s or %d msec\n", (int)nha, (nha == 1)? "": "s", (int)tmo); } ret = WaitForMultipleObjects(nha, ha, FALSE, tmo); #else /*][*/ if (tp == NULL) { vtrace("Waiting for %d event%s\n", ne, (ne == 1)? "": "s"); } else { unsigned msec = (tp->tv_usec + 500) / 1000; unsigned sec = tp->tv_sec; /* Check for funky round-up. */ if (msec >= 1000) { sec++; msec -= 1000; } vtrace("Waiting for %d event%s or %u.%03us\n", ne, (ne == 1)? "": "s", sec, msec); } ns = select(FD_SETSIZE, &rfds, &wfds, &xfds, tp); #endif /*[*/ if (WAIT_BAD) { #if !defined(_WIN32) /*[*/ if (errno != EINTR) { xs_warning("process_events: select() failed: %s", strerror(errno)); } #else /*][*/ xs_warning("WaitForMultipleObjects failed: %s", win32_strerror(GetLastError())); #endif /*]*/ return true; } #if defined(_WIN32) /*[*/ vtrace("Got event 0x%lx\n", ret); #else /*][*/ vtrace("Got %u event%s\n", ns, (ns == 1)? "": "s"); #endif /*]*/ inputs_changed = false; /* Process the event(s) that occurred. */ #if defined(_WIN32) /*[*/ for (i = 0, ip = inputs; ip != NULL; ip = ip_next, i++) #else /*][*/ for (ip = inputs; ip != NULL; ip = ip_next) #endif /*]*/ { ip_next = ip->next; /* Check for input ready. */ if (((unsigned long)ip->condition & InputReadMask) && SOURCE_READY) { (*ip->proc)(ip->source, (ioid_t)ip); *processed_any = true; if (inputs_changed) { /* Other events may no longer be valid. Try again. */ return false; } } #if !defined(_WIN32) /*[*/ /* Check for output ready. */ if (((unsigned long)ip->condition & InputWriteMask) && FD_ISSET(ip->source, &wfds)) { (*ip->proc)(ip->source, (ioid_t)ip); *processed_any = true; if (inputs_changed) { /* Other events may no longer be valid. Try again. */ return false; } } /* Check for exception ready. */ if (((unsigned long)ip->condition & InputExceptMask) && FD_ISSET(ip->source, &xfds)) { (*ip->proc)(ip->source, (ioid_t)ip); *processed_any = true; if (inputs_changed) { /* Other events may no longer be valid. Try again. */ return false; } } #endif /*]*/ } /* See what's expired. */ if (timeouts != NULL) { GET_TS(&now); while ((t = timeouts) != NULL) { if (EXPIRED(t, now)) { timeouts = t->next; t->in_play = true; (*t->proc)((ioid_t)t); *processed_any = true; Free(t); } else { break; } } } /* If inputs have changed, retry. */ return !inputs_changed; } /* * Event dispatcher. * Processes all pending I/O and timeout events. * Waits for the first event if block is true. * Returns true if events were proccessed, false otherwise. */ bool process_events(bool block) { bool processed_any = false; bool any_this_time = false; bool done = false; /* Process events until no more are ready. */ while (!done) { if (run_tasks()) { return true; } /* Process some events. */ done = process_some_events(block, &any_this_time); /* Flush the lazy allocator ring. */ lazya_flush(); /* Don't block a second time. */ block = false; /* Record what happened this time. */ processed_any |= any_this_time; } return processed_any; } suite3270-4.1/Common/actions.c000066400000000000000000000244731413735575200161050ustar00rootroot00000000000000/* * Copyright (c) 1993-2016, 2018, 2020-2021 Paul Mattes. * Copyright (c) 1990, Jeff Sparkes. * Copyright (c) 1989, Georgia Tech Research Corporation (GTRC), Atlanta, GA * 30332. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the names of Paul Mattes, Jeff Sparkes, GTRC nor the names of * their contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES, JEFF SPARKES AND GTRC "AS IS" AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL PAUL MATTES, JEFF SPARKES OR GTRC BE * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. */ /* * actions.c * The actions table and action debugging code. */ #include "globals.h" #include "appres.h" #include "actions.h" #include "lazya.h" #include "popups.h" #include "resources.h" #include "task.h" #include "trace.h" #include "utils.h" #include "varbuf.h" #include "vstatus.h" llist_t actions_list = LLIST_INIT(actions_list); unsigned actions_list_count; enum iaction ia_cause; const char *ia_name[] = { "none", "string", "paste", "screen-redraw", "keypad", "default", "macro", "script", "peek", "typeahead", "file-transfer", "command", "keymap", "idle", "password", "ui", "httpd" }; static int keyboard_implicit_disables = 0; static int keyboard_explicit_disables = 0; const char *current_action_name; typedef struct { llist_t list; char *name; } suppress_t; static llist_t suppressed = LLIST_INIT(suppressed); static bool suppressed_initted = false; /* Initialize the list of suppressed actions. */ static void init_suppressed(const char *actions) { char *a; char *action; suppress_t *s; if (actions == NULL) { return; } a = lazya(NewString(actions)); while ((action = strtok(a, " \t\r\n")) != NULL) { size_t sl = strlen(action); action_elt_t *e; bool found = false; /* Prime for the next strtok() call. */ a = NULL; /* Chop off any trailing parentheses. */ if (sl > 2 && !strcmp(action + sl - 2, "()")) { sl -= 2; *(action + sl) = '\0'; } /* Make sure the action they are suppressing is real. */ FOREACH_LLIST(&actions_list, e, action_elt_t *) { if (!strcasecmp(e->t.name, action)) { found = true; break; } } FOREACH_LLIST_END(&actions_list, e, action_elt_t *); if (!found) { vtrace("Warning: action '%s' in %s not found\n", action, ResSuppressActions); continue; } /* Add it to the list. */ s = (suppress_t *)Malloc(sizeof(suppress_t) + sl + 1); s->name = (char *)(s + 1); strcpy(s->name, action); llist_init(&s->list); LLIST_APPEND(&s->list, suppressed); } } /* Look up an action name in the suppressed actions resource. */ static bool action_suppressed(const char *name) { suppress_t *s; if (!suppressed_initted) { init_suppressed(appres.suppress_actions); suppressed_initted = true; } if (llist_isempty(&suppressed)) { return false; } FOREACH_LLIST(&suppressed, s, suppress_t *) { if (!strcasecmp(name, s->name)) { return true; } } FOREACH_LLIST_END(&suppressed, s, suppress_t *); return false; } /* * Check the number of argument to an action, and possibly pop up a usage * message. * * Returns 0 if the argument count is correct, -1 otherwise. */ int check_argc(const char *aname, unsigned nargs, unsigned nargs_min, unsigned nargs_max) { if (nargs >= nargs_min && nargs <= nargs_max) { return 0; } if (nargs_min == nargs_max) { popup_an_error("%s() requires %d argument%s", aname, nargs_min, nargs_min == 1 ? "" : "s"); } else if (nargs_max == nargs_min + 1) { popup_an_error("%s() requires %d or %d arguments", aname, nargs_min, nargs_max); } else { popup_an_error("%s() requires %d to %d arguments", aname, nargs_min, nargs_max); } return -1; } /* * Trace the execution of an emulator action. */ void action_debug(const char *aname, ia_t ia, unsigned argc, const char **argv) { unsigned i; if (!toggled(TRACING)) { return; } vtrace("%s -> %s(", ia_name[(int)ia], aname); for (i = 0; i < argc; i++) { vtrace("%s%s", i? ", ": "", qscatv(argv[i])); } vtrace(")\n"); trace_rollover_check(); } /* * Display an error message about parameter names. */ bool action_args_are(const char *aname, ...) { va_list ap; const char *keyword; const char **keywords = NULL; int nkw = 0; int i; varbuf_t r; char *buf; va_start(ap, aname); while ((keyword = va_arg(ap, const char *)) != NULL) { keywords = (const char **)Realloc((void *)keywords, (nkw + 1) * sizeof(char *)); keywords[nkw++] = keyword; } if (nkw == 0) { return false; } vb_init(&r); for (i = 0; i < nkw; i++) { const char *sep = ""; if (nkw > 1) { if (i == nkw - 1) { sep = " or "; } else if (i > 0) { sep = ", "; } } vb_appendf(&r, "%s%s", sep, keywords[i]); } buf = vb_consume(&r); popup_an_error("%s(): Parameter must be %s", aname, buf); Free(buf); Free((void *)keywords); return false; } /* * Disable or re-enable the keyboard. */ void disable_keyboard(bool disable, bool explicit, const char *why) { bool disabled_before, disabled_after, would_enable; int *countp = explicit? &keyboard_explicit_disables: &keyboard_implicit_disables; int incr = disable? 1 : -1; if (*countp + incr < 0) { vtrace("Redundant %splicit keyboard enable ignored\n", explicit? "ex": "im"); return; } vtrace("Keyboard %sabled %splicitly by %s (%d->%d)", disable? "dis": "en", explicit? "ex": "im", why, *countp, *countp + incr); disabled_before = keyboard_explicit_disables || keyboard_implicit_disables; *countp += incr; disabled_after = keyboard_explicit_disables || keyboard_implicit_disables; would_enable = (*countp == 0); vtrace(", %s %sabled", (disabled_before == disabled_after)? "still": "now", disabled_after? "dis": "en"); if (would_enable && disabled_after) { vtrace(" %splicitly", explicit? "im": "ex"); } vtrace("\n"); st_changed(ST_KBD_DISABLE, keyboard_disabled()); } /* * Force a keyboard enable (both explicit and implicit). */ void force_enable_keyboard(void) { vtrace("Forcing keyboard enable\n"); keyboard_implicit_disables = 0; keyboard_explicit_disables = 0; st_changed(ST_KBD_DISABLE, keyboard_disabled()); } /* * Test for keyboard disable. */ bool keyboard_disabled(void) { return keyboard_implicit_disables || keyboard_explicit_disables; } /* * Run an action by entry. * This is where action suppression happens. */ bool run_action_entry(action_elt_t *e, enum iaction cause, unsigned count, const char **parms) { bool ret; if (action_suppressed(e->t.name)) { vtrace("%s() [suppressed]\n", e->t.name); return false; } if ((keyboard_explicit_disables || keyboard_implicit_disables) && IA_IS_KEY(cause)) { vtrace("%s() [suppressed, keyboard disabled]\n", e->t.name); vstatus_keyboard_disable_flash(); return false; } ia_cause = cause; current_action_name = e->t.name; ret = (*e->t.action)(cause, count, parms); current_action_name = NULL; return ret; } /* * Register a group of actions. * * Duplicate actions will override older ones. * The memory for the table is not kept, but the memory for the strings * referenced by the table will be re-used. */ void register_actions(action_table_t *new_actions, unsigned count) { unsigned i; for (i = 0; i < count; i++) { action_elt_t *e; action_elt_t *before; before = NULL; FOREACH_LLIST(&actions_list, e, action_elt_t *) { int cmp; cmp = strcasecmp(e->t.name, new_actions[i].name); if (cmp == 0) { /* Replace. */ e->t = new_actions[i]; /* struct copy */ return; } else if (cmp < 0) { /* Goes ahead of this one. */ before = e; break; } } FOREACH_LLIST_END(&actions_list, e, action_elt_t *); e = Malloc(sizeof(action_elt_t)); e->t = new_actions[i]; /* struct copy */ llist_init(&e->list); if (before) { /* Insert before found element. */ llist_insert_before(&e->list, &before->list); } else { /* Append. */ LLIST_APPEND(&e->list, actions_list); } actions_list_count++; } } /** * Compare two action names. * * @param[in] a First action name. * @param[in] b Second action name. * * @returns 0 if equal, -1 if a < b, 1 if a > b */ static int action_cmp(const void *a, const void *b) { return strcmp(*(const char **)a, *(const char **)b); } /** * Return the names of all defined actions. * * @returns Names of all actions. */ const char * all_actions(void) { static const char *actions = NULL; action_elt_t *e; const char **names; unsigned i; varbuf_t r; if (actions != NULL) { return actions; } /* Gather the names. */ names = Calloc(actions_list_count, sizeof(const char *)); i = 0; FOREACH_LLIST(&actions_list, e, action_elt_t *) { names[i++] = e->t.name; } FOREACH_LLIST_END(&actions_list, e, action_elt_t *); /* Sort them. */ qsort((void *)names, actions_list_count, sizeof(const char *), action_cmp); /* Emit them. */ vb_init(&r); for (i = 0; i < actions_list_count; i++) { vb_appendf(&r, "%s%s()", i? " ": "", names[i]); } actions = vb_consume(&r); vb_free(&r); /* Done. */ Free((void *)names); return actions; } suite3270-4.1/Common/apl.c000066400000000000000000000302521413735575200152110ustar00rootroot00000000000000/* * Copyright (c) 1993-2009, 2014-2018 Paul Mattes. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the names of Paul Mattes nor the names of his contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO * EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * apl.c * This module handles APL-specific actions. */ #include "globals.h" #include #include "3270ds.h" #include "apl.h" #include "unicodec.h" /* * APL translation table. * Translates a symbolic key name to a Unicode code point, and to an EBCDIC * value with a GE indicator. * * The UPRIV2 range is used to represent APL characters with no Unicode code * points (underlined alphabetics). Some fonts use circled alphabetics for * these, but this is non-standard. * * (1) Not on Code Page 310 * * Reference: https://aplwiki.com/UnicodeAplTable * https://en.wikipedia.org/wiki/Code_page_310 * https://www.tachyonsoft.com/cp00310.htm * * Note that Tachyonsoft and Wikipedia disagree on X'DB'. Wikipedia translates * it to U+0021 ('!'), but Tachyonsoft translates it to U+01c3, Latin Letter * Retroflex Click. I am going with Wikipedia for now. * * Note: This table is partially redundant with apl2uc[] in unicode.c, and * needs to be kept consistent with it. apl2uc[] has Unicode translations for * additional line-drawing code points that are not intended for keyboard * input. */ static struct { const char *name; ucs4_t ucs4; unsigned char ebc; bool ge; } au[] = { /* APL Name Unicode Value EBCDIC GE Unicode Name */ { "Aunderbar", UPRIV2 + 'A', 0x41, true }, { "Bunderbar", UPRIV2 + 'B', 0x42, true }, { "Cunderbar", UPRIV2 + 'C', 0x43, true }, { "Dunderbar", UPRIV2 + 'D', 0x44, true }, { "Eunderbar", UPRIV2 + 'E', 0x45, true }, { "Funderbar", UPRIV2 + 'F', 0x46, true }, { "Gunderbar", UPRIV2 + 'G', 0x47, true }, { "Hunderbar", UPRIV2 + 'H', 0x48, true }, { "Iunderbar", UPRIV2 + 'I', 0x49, true }, { "dot", '.', 0x4b, false }, /* Full Stop */ { "less", '<', 0x4c, false }, /* Less-than Sign */ { "leftparen", '(', 0x4d, false }, /* Left Parenthesis */ { "plus", '+', 0x4e, false }, /* Plus Sign */ { "Junderbar", UPRIV2 + 'J', 0x51, true }, { "Kunderbar", UPRIV2 + 'K', 0x52, true }, { "Lunderbar", UPRIV2 + 'L', 0x53, true }, { "Munderbar", UPRIV2 + 'M', 0x54, true }, { "Nunderbar", UPRIV2 + 'N', 0x55, true }, { "Ounderbar", UPRIV2 + 'O', 0x56, true }, { "Punderbar", UPRIV2 + 'P', 0x57, true }, { "Qunderbar", UPRIV2 + 'Q', 0x58, true }, { "Runderbar", UPRIV2 + 'R', 0x59, true }, { "star", '*', 0x5c, false }, /* Asterisk */ { "rightparen", ')', 0x5d, false }, /* Right Parentheses */ { "semicolon", ';', 0x5e, false }, /* Semicolon */ { "bar", '-', 0x60, false }, /* Hyphen-minus */ { "slash", '/', 0x61, false }, /* Solidus */ { "Sunderbar", UPRIV2 + 'S', 0x62, true }, { "Tunderbar", UPRIV2 + 'T', 0x63, true }, { "Uunderbar", UPRIV2 + 'U', 0x64, true }, { "Vunderbar", UPRIV2 + 'V', 0x65, true }, { "Wunderbar", UPRIV2 + 'W', 0x66, true }, { "Xunderbar", UPRIV2 + 'Z', 0x67, true }, { "Yunderbar", UPRIV2 + 'Y', 0x68, true }, { "Zunderbar", UPRIV2 + 'Z', 0x69, true }, { "comma", ',', 0x6b, false }, /* Comma */ { "underbar", '_', 0x6d, false }, /* Low Line */ { "greater", '>', 0x6e, false }, /* Greater-than Sign */ { "query", '?', 0x6f, false }, /* Question Mark */ { "diamond", 0x22c4, 0x70, true }, /* Diamond Operator */ { "upcaret", 0x2227, 0x71, true }, /* Logical AND */ { "diaeresis", 0x00a8, 0x72, true }, /* Diaeresis */ { "dieresis", 0x00a8, 0x72, true }, /* Diaeresis */ { "quadjot", 0x233b, 0x73, true }, /* APL Functional Symbol Quad Jot */ { "iotaunderbar", 0x2378, 0x74, true }, /* APL Functional Symbol Iota Underbar */ { "epsilonunderbar",0x2377, 0x75, true }, /* APL Functional Symbol Epsilon Underbar */ { "righttack", 0x22a2, 0x76, true }, /* Right Tack */ { "lefttack", 0x22a3, 0x77, true }, /* Left Tack */ { "downcaret", 0x2228, 0x78, true }, /* Logical Or */ { "colon", ':', 0x7a, false }, /* Colon */ { "quote", '\'', 0x7d, false }, /* Apostrophe */ { "equal", '=', 0x7e, false }, /* Equals Sign */ { "tilde", 0x223c, 0x80, true }, /* Tilde Operator */ { "uparrow", 0x2191, 0x8a, true }, /* Upwards Arrow */ { "downarrow", 0x2193, 0x8b, true }, /* Downwards Arrow */ { "notgreater", 0x2264, 0x8c, true }, /* Less-than Or Equal To */ { "upstile", 0x2308, 0x8d, true }, /* Left Ceiling */ { "downstile", 0x230a, 0x8e, true }, /* Left Floor */ { "rightarrow", 0x2192, 0x8f, true }, /* Rightwards Arrow */ { "quad", 0x2395, 0x90, true }, /* APL Functional Symbol Quad */ { "rightshoe", 0x2283, 0x9a, true }, /* Superset Of */ { "leftshoe", 0x2282, 0x9b, true }, /* Subset Of */ { "splat", 0x00a4, 0x9c, true }, /* Currency Sign */ { "circle", 0x25cb, 0x9d, true }, /* White Circle */ { "plusminus", 0x00b1, 0x9e, true }, /* Plus Minus Sign */ { "leftarrow", 0x2190, 0x9f, true }, /* Leftwards Arrow */ { "overbar", 0x00af, 0xa0, true }, /* Macron */ { "degree", 0x00b0, 0xa1, true }, /* Degree Sign */ { "upshoe", 0x2229, 0xaa, true }, /* Intersection */ { "downshoe", 0x222a, 0xab, true }, /* Union */ { "uptack", 0x22a5, 0xac, true }, /* Up Tack */ { "bracketleft", '[', 0xad, true }, /* Left Square Bracket */ { "leftbracket", '[', 0xad, true }, /* Left Square Bracket */ { "notless", 0x2265, 0xae, true }, /* Greater-than Or Equal To */ { "jot", 0x2218, 0xaf, true }, /* Ring operator */ { "alpha", 0x237a, 0xb0, true }, /* APL Functional Symbol Alpha */ { "epsilon", 0x220a, 0xb1, true }, /* Small Element Of */ { "iota", 0x2373, 0xb2, true }, /* APL Functional Symbol Iota */ { "rho", 0x2374, 0xb3, true }, /* APL Functional Symbol Rho */ { "omega", 0x2375, 0xb4, true }, /* APL Functional Symbol Omega */ { "multiply", 0x00d7, 0xb6, true }, /* Multiplication Sign */ { "times", 0x00d7, 0xb6, true }, /* Multiplication Sign */ { "slope", '\\', 0xb7, true }, /* Reverse Solidus */ { "divide", 0x00f7, 0xb8, true }, /* Division Sign */ { "del", 0x2207, 0xba, true }, /* Nabla */ { "delta", 0x2206, 0xbb, true }, /* Increment */ { "downtack", 0x22a4, 0xbc, true }, /* Down Tack */ { "bracketright", ']', 0xbd, true }, /* Right Square Bracket */ { "rightbracket", ']', 0xbd, true }, /* Right Square Bracket */ { "notequal", 0x2260, 0xbe, true }, /* Not Equal To */ { "stile", 0x2223, 0xbf, true }, /* Divides */ { "braceleft", '{', 0xc0, true }, /* Left Curly Bracket */ { "section", 0x00a7, 0xc8, true }, /* Section Sign */ { "upcarettilde", 0x2372, 0xca, true }, /* APL Functional Symbol Up Caret Tilde */ { "downcarettilde", 0x2371, 0xcb, true }, /* APL Functional Symbol Down Caret Tilde */ { "squad", 0x2337, 0xcc, true }, /* APL Functional Symbol Squish Quad */ { "circlestile", 0x233d, 0xcd, true }, /* APL Functional Symbol Circle Stile */ { "quadslope", 0x2342, 0xce, true }, /* APL Functional Symbol Quad Backslash */ { "slopequad", 0x2342, 0xce, true }, /* APL Functional Symbol Quad Backslash */ { "circleslope", 0x2349, 0xcf, true }, /* APL Functional Symbol Circle Backslash */ { "braceright", '}', 0xd0, true }, /* Right Curly Bracket */ { "paragraph", 0x00b6, 0xd8, true }, /* Pilcrow sign */ { "downtackup", 0x2336, 0xda, true }, /* APL Functional Symbol I-beam */ { "downtackuptack", 0x2336, 0xda, true }, /* APL Functional Symbol I-beam */ { "quotedot", '!', 0xdb, true }, /* Exclamation Mark */ { "delstile", 0x2352, 0xdc, true }, /* APL Functional Symbol Del Stile */ { "deltastile", 0x234b, 0xdd, true }, /* APL Functional Symbol Delta Stile */ { "quadquote", 0x235e, 0xde, true }, /* APL Functional Symbol Quote Quad */ { "upshoejot", 0x235d, 0xdf, true }, /* APL Functional Symbol Up Shoe Jot */ { "equalunderbar", 0x2261, 0xe0, true }, /* Identical To */ { "equiv", 0x2261, 0xe0, true }, /* Identical To */ { "diaeresisjot", 0x2364, 0xe4, true }, /* (1) APL Functional Symbol Jot Diaeresis */ { "dieresisjot", 0x2364, 0xe4, true }, /* (1) APL Functional Symbol Jot Diaeresis */ { "diaeresiscircle",0x2365, 0xe5, true }, /* (1) APL Functional Symbol Cicrle Diaeresis */ { "dieresiscircle", 0x2365, 0xe5, true }, /* (1) APL Functional Symbol Cicrle Diaeresis */ { "commabar", 0x236a, 0xe6, true }, /* (1) APL Functional Symbol Comma Bar */ { "euro", 0x20ac, 0xe7, true }, /* (1) Euro Sign */ { "slashbar", 0x233f, 0xea, true }, /* APL Functional Symbol Slash Bar */ { "slopebar", 0x2340, 0xeb, true }, /* APL Functional Symbol Backslash Bar */ { "diaeresisdot", 0x2235, 0xec, true }, /* Because */ { "dieresisdot", 0x2235, 0xec, true }, /* Because */ { "circlebar", 0x2296, 0xed, true }, /* Circled Minus */ { "quaddivide", 0x2339, 0xee, true }, /* APL Functional Symbol Quad Divide */ { "uptackjot", 0x2355, 0xef, true }, /* APL Functional Symbol Up Tack Jot */ { "deltilde", 0x236b, 0xfb, true }, /* APL Functional Symbol Del Tilde */ { "deltaunderbar", 0x2359, 0xfc, true }, /* APL Functional Symbol Delta Underbar */ { "circlestar", 0x235f, 0xfd, true }, /* APL Functional Symbol Circle Star */ { "downtackjot", 0x234e, 0xfe, true }, /* APL Functional Symbol Down Tack Jot */ { NULL, 0 } }; /* * Check the consistency of au[] and apl2uc[]. */ void check_apl_consistency(ucs4_t apl2uc[]) { int i; for (i = 0; au[i].name; i++) { if (au[i].ucs4 > 0x7f && au[i].ucs4 < UPRIV2) { assert(apl2uc[au[i].ebc] == au[i].ucs4); } } } /* * Translate a symbolic APL key name to a Unicode code point. */ ucs4_t apl_key_to_ucs4(const char *s, bool *is_ge) { int i; if (strncmp(s, "apl_", 4)) { return 0; } s += 4; for (i = 0; au[i].name; i++) { if (!strcmp(au[i].name, s)) { *is_ge = au[i].ge; return au[i].ucs4; } } return 0; } /* * Translate from a Unicode code point to APL character name (without the * "apl_" prefix). */ const char * ucs4_to_apl_key(ucs4_t ucs4) { int i; for (i = 0; au[i].name; i++) { if (au[i].ucs4 == ucs4) { return au[i].name; } } return NULL; } suite3270-4.1/Common/asprintf.c000066400000000000000000000057601413735575200162710ustar00rootroot00000000000000/* * Copyright (c) 2014-2015 Paul Mattes. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the names of Paul Mattes nor the names of his contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO * EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * asprintf.c * Implementations of vcsprintf, asprintf and vasprintf for * platforms that are missing them. */ #include "globals.h" #include "asprintf.h" #if !defined(_WIN32) /*[*/ /** * Linux implementation of the Windows vcsprintf() function. * Returns the number of bytes needed to represent a formatted string. * * @param[in] fmt printf format * @param[in] ap arguments * * @return number of bytes needed */ int vscprintf(const char *fmt, va_list ap) { return vsnprintf(NULL, 0, fmt, ap); } #endif /*]*/ #if !defined(HAVE_VASPRINTF) /*[*/ /** * vasprintf: print a string into an automatically malloc'd buffer, varargs * version * * @param[out] bufp returned buffer * @param[in] fmt printf format * @param[in] ap arguments * * @return length, not including NUL */ int my_vasprintf(char **bufp, const char *fmt, va_list ap) { va_list ap_copy; int buflen; char *buf; va_copy(ap_copy, ap); buflen = vscprintf(fmt, ap_copy); va_end(ap_copy); buf = malloc(buflen + 1); vsnprintf(buf, buflen + 1, fmt, ap); *bufp = buf; return buflen; } /** * asprintf: print a string into an automatically malloc'd buffer * * @param[out] bufp returned buffer * @param[in] fmt printf format * * @return length, not including NUL */ int my_asprintf(char **bufp, const char *fmt, ...) { va_list ap; int len; va_start(ap, fmt); len = my_vasprintf(bufp, fmt, ap); va_end(ap); return len; } #endif /*]*/ suite3270-4.1/Common/b3270/000077500000000000000000000000001413735575200150245ustar00rootroot00000000000000suite3270-4.1/Common/b3270/async.c000066400000000000000000000054021413735575200163060ustar00rootroot00000000000000/* * Copyright (c) 2015-2016, 2019 Paul Mattes. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the names of Paul Mattes nor the names of his contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO * EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * async.c * Asynchronous functions for b3270. */ #include "globals.h" #include "b3270proto.h" #include "ctlr.h" #include "lazya.h" #include "screen.h" #include "telnet_gui.h" #include "ui_stream.h" /* stubs1 */ bool screen_selected(int baddr _is_unused) { return false; } void ring_bell(void) { ui_vleaf(IndBell, NULL); } static int cw = 7; int *char_width = &cw; static int ch = 7; int *char_height = &ch; void blink_start(void) { } unsigned display_heightMM(void) { return 100; } unsigned display_height(void) { return 1; } unsigned display_widthMM(void) { return 100; } unsigned display_width(void) { return 1; } void mcursor_locked(void) { } void mcursor_normal(void) { } void mcursor_waiting(void) { } bool screen_obscured(void) { return false; } unsigned long screen_window_number(void) { return 0L; } bool screen_has_bg_color(void) { return true; } void screen_132(void) { } void screen_80(void) { } bool screen_new_display_charsets(const char *realname, const char *cpname) { return true; } void screen_system_fixup(void) { } void telnet_gui_connecting(const char *hostip, const char *portname) { ui_vleaf(IndConnectAttempt, AttrHostIp, hostip, AttrPort, portname, NULL); } suite3270-4.1/Common/b3270/b3270.c000066400000000000000000000623711413735575200157360ustar00rootroot00000000000000/* * Copyright (c) 1993-2009, 2013-2021 Paul Mattes. * Copyright (c) 1990, Jeff Sparkes. * Copyright (c) 1989, Georgia Tech Research Corporation (GTRC), Atlanta, * GA 30332. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the names of Paul Mattes, Jeff Sparkes, GTRC nor their * contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES, JEFF SPARKES AND GTRC "AS IS" * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL PAUL MATTES, JEFF SPARKES OR * GTRC BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, * OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * b3270.c * A GUI back-end for a 3270 Terminal Emulator * Main proceudre. */ #include "globals.h" #include #if !defined(_WIN32) /*[*/ # include # include #endif /*]*/ #include #include "appres.h" #include "3270ds.h" #include "resources.h" #include "actions.h" #include "b3270_popups.h" #include "b3270proto.h" #include "bind-opt.h" #include "boolstr.h" #include "bscreen.h" #include "b_password.h" #include "codepage.h" #include "ctlr.h" #include "ctlrc.h" #include "unicodec.h" #include "ft.h" #include "glue.h" #include "ui_stream.h" #include "host.h" #include "httpd-core.h" #include "httpd-nodes.h" #include "httpd-io.h" #include "idle.h" #include "kybd.h" #include "lazya.h" #include "login_macro.h" #include "min_version.h" #include "model.h" #include "names.h" #include "nvt.h" #include "nvt_gui.h" #include "opts.h" #include "popups.h" #include "pr3287_session.h" #include "print_screen.h" #include "product.h" #include "proxy.h" #include "proxy_toggle.h" #include "query.h" #include "save_restore.h" #include "screen.h" #include "selectc.h" #include "sio.h" #include "sio_glue.h" #include "sio_internal.h" #include "split_host.h" #include "stats.h" #include "status.h" #include "task.h" #include "telnet.h" #include "tls_passwd_gui.h" #include "toggles.h" #include "trace.h" #include "screentrace.h" #include "utils.h" #include "varbuf.h" #include "vstatus.h" #include "xio.h" #include "xscroll.h" #if defined(_WIN32) /*[*/ # include "w3misc.h" # include "windirs.h" # include "winvers.h" #endif /*]*/ #define STATS_POLL (2 * 1000) #if defined(_WIN32) /*[*/ char *instdir = NULL; char *mydesktop = NULL; char *mydocs3270 = NULL; char *commondocs3270 = NULL; unsigned windirs_flags; #endif /*]*/ static int brcvd = 0; static int rrcvd = 0; static int bsent = 0; static int rsent = 0; static ioid_t stats_ioid = NULL_IOID; static void b3270_toggle(toggle_index_t ix, enum toggle_type tt); static toggle_register_t toggles[] = { { MONOCASE, b3270_toggle, TOGGLE_NEED_INIT }, { ALT_CURSOR, b3270_toggle, TOGGLE_NEED_INIT }, { CURSOR_BLINK, b3270_toggle, TOGGLE_NEED_INIT }, { TRACING, b3270_toggle, TOGGLE_NEED_INIT }, { VISIBLE_CONTROL, b3270_toggle, TOGGLE_NEED_INIT }, { SCREEN_TRACE, b3270_toggle, TOGGLE_NEED_INIT }, { CROSSHAIR, b3270_toggle, TOGGLE_NEED_INIT }, { OVERLAY_PASTE, b3270_toggle, TOGGLE_NEED_INIT }, { TYPEAHEAD, b3270_toggle, TOGGLE_NEED_INIT }, { APL_MODE, b3270_toggle, TOGGLE_NEED_INIT }, { ALWAYS_INSERT, b3270_toggle, TOGGLE_NEED_INIT }, { SHOW_TIMING, b3270_toggle, TOGGLE_NEED_INIT }, }; static void b3270_register(void); static void b3270_toggle_notify(const char *name, const char *value, ia_t ia); void usage(const char *msg) { if (msg != NULL) { fprintf(stderr, "%s\n", msg); } fprintf(stderr, "Usage: %s [options] [profile-file.b3270]\n", programname); fprintf(stderr, "Use " OptHelp1 " for the list of options\n"); exit(1); } /* Dump the current send/receive statistics. */ static void dump_stats(void) { ui_vleaf(IndStats, AttrBytesReceived, lazyaf("%d", brcvd), AttrRecordsReceived, lazyaf("%d", rrcvd), AttrBytesSent, lazyaf("%d", bsent), AttrRecordsSent, lazyaf("%d", rsent), NULL); } /* Dump the current send/receive stats out if they have changed. */ static void stats_poll(ioid_t id _is_unused) { if (brcvd != ns_brcvd || rrcvd != ns_rrcvd || bsent != ns_bsent || rsent != ns_rsent) { brcvd = ns_brcvd; rrcvd = ns_rrcvd; bsent = ns_bsent; rsent = ns_rsent; dump_stats(); } stats_ioid = NULL_IOID; } /* Send/receive statistics have changed. */ void stats_poke(void) { /* Schedule a timeout. */ if (stats_ioid == NULL_IOID) { stats_ioid = AddTimeOut(STATS_POLL, stats_poll); } } /** * Respond to a change in the connection, 3270 mode, or line mode. */ static void b3270_connect(bool ignored) { static enum cstate old_cstate = NOT_CONNECTED; if (cstate == old_cstate) { return; } /* If just disconnected, dump final stats. */ if (cstate == NOT_CONNECTED && stats_ioid != NULL_IOID) { RemoveTimeOut(stats_ioid); stats_ioid = NULL_IOID; if (brcvd != ns_brcvd || rrcvd != ns_rrcvd || bsent != ns_bsent || rsent != ns_rsent) { brcvd = ns_brcvd; rrcvd = ns_rrcvd; bsent = ns_bsent; rsent = ns_rsent; dump_stats(); } } /* Tell the GUI about the new state. */ if (cstate == NOT_CONNECTED) { ui_vleaf(IndConnection, AttrState, state_name[(int)cstate], NULL); } else { char *cause = NewString(ia_name[connect_ia]); char *s = cause; char c; /* Make sure unlock state is set correctly. */ status_reset(); while ((c = *s)) { c = tolower((int)(unsigned char)c); if (c == ' ') { c = '-'; } *s++ = c; } ui_vleaf(IndConnection, AttrState, state_name[(int)cstate], AttrHost, current_host, AttrCause, cause, NULL); Free(cause); /* Clear the screen. */ if (old_cstate == NOT_CONNECTED) { ctlr_erase(true); } } /* If just connected, dump initial stats. */ if (cstate != NOT_CONNECTED && stats_ioid == NULL_IOID && (brcvd != ns_brcvd || rrcvd != ns_rrcvd || bsent != ns_bsent || rsent != ns_rsent)) { brcvd = ns_brcvd; rrcvd = ns_rrcvd; bsent = ns_bsent; rsent = ns_rsent; dump_stats(); } old_cstate = cstate; } static void b3270_secure(bool ignored) { static bool is_secure = false; if (net_secure_connection() == is_secure) { return; } is_secure = net_secure_connection(); ui_vleaf(IndTls, AttrSecure, ValTrueFalse(net_secure_connection()), AttrVerified, net_secure_connection()? ValTrueFalse(net_secure_unverified()): NULL, AttrSession, net_session_info(), AttrHostCert, net_server_cert_info(), NULL); } /* Report the terminal name. */ static void report_terminal_name(void) { static char *last_term_name = NULL; static bool last_override = false; if (last_term_name == NULL || strcmp(last_term_name, termtype) || last_override != (appres.termname != NULL)) { Replace(last_term_name, NewString(termtype)); last_override = appres.termname != NULL; ui_vleaf(IndTerminalName, AttrText, last_term_name, AttrOverride, ValTrueFalse(last_override), NULL); } } #if !defined(_WIN32) /*[*/ /* Empty SIGCHLD handler, ensuring that we can collect child exit status. */ static void sigchld_handler(int ignored) { # if !defined(_AIX) /*[*/ signal(SIGCHLD, sigchld_handler); # endif /*]*/ } #endif /*]*/ /* Dump the code page list. Called at initialization time. */ static void dump_codepages(void) { cpname_t *cpnames = get_cpnames(); if (cpnames != NULL) { int i; ui_vpush(IndCodePages, NULL); for (i = 0; cpnames[i].name != NULL; i++) { const char **params = Calloc(2 + (2 * cpnames[i].num_aliases) + 1, sizeof(char *)); int j; params[0] = "name"; params[1] = cpnames[i].name; for (j = 0; j < cpnames[i].num_aliases; j++) { params[2 + (j * 2)] = lazyaf("alias%d", j + 1); params[2 + (j * 2) + 1] = cpnames[i].aliases[j]; } ui_leaf(IndCodePage, params); Free((void *)params); } ui_pop(); free_cpnames(cpnames); } } /* Dump the model list. Called at initialization time. */ static void dump_models(void) { static struct { int model; int rows; int columns; } models[] = { { 2, MODEL_2_ROWS, MODEL_2_COLS }, { 3, MODEL_3_ROWS, MODEL_3_COLS }, { 4, MODEL_4_ROWS, MODEL_4_COLS }, { 5, MODEL_5_ROWS, MODEL_5_COLS }, { 0, 0, 0 } }; int i; ui_vpush(IndModels, NULL); for (i = 0; models[i].model != 0; i++) { ui_vleaf(IndModel, AttrModel, lazyaf("%d", models[i].model), AttrRows, lazyaf("%d", models[i].rows), AttrColumns, lazyaf("%d", models[i].columns), NULL); } ui_pop(); } /* Dump the proxy list. */ static void dump_proxies(void) { proxytype_t type; ui_vpush(IndProxies, NULL); for (type = PT_FIRST; type < PT_MAX; type++) { int default_port = proxy_default_port(type); ui_vleaf(IndProxy, AttrName, proxy_type_name(type), AttrUsername, ValTrueFalse(proxy_takes_username(type)), AttrPort, default_port? lazyaf("%d", default_port): NULL, NULL); } ui_pop(); } /* Dump the supported host prefix list. */ static void dump_prefixes(void) { ui_vleaf(IndPrefixes, AttrValue, host_prefixes(), NULL); } int main(int argc, char *argv[]) { const char *cl_hostname = NULL; toggle_index_t ix; #if defined(_WIN32) /*[*/ get_version_info(); if (!get_dirs("wc3270", &instdir, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, &windirs_flags)) { exit(1); } if (sockstart() < 0) { exit(1); } #endif /*]*/ /* * Call the module registration functions, to build up the tables of * actions, options and callbacks. */ codepage_register(); ctlr_register(); ft_register(); host_register(); idle_register(); kybd_register(); task_register(); query_register(); nvt_register(); pr3287_session_register(); print_screen_register(); b3270_register(); save_restore_register(); scroll_register(); toggles_register(); trace_register(); screentrace_register(); xio_register(); sio_glue_register(); hio_register(); proxy_register(); model_register(); net_register(); login_macro_register(); vstatus_register(); argc = parse_command_line(argc, (const char **)argv, &cl_hostname); if (cl_hostname != NULL) { usage("Unrecognized option(s)"); } check_min_version(appres.min_version); ui_io_init(); ui_vpush(IndInitialize, NULL); ui_vleaf(IndHello, AttrVersion, lazyaf("%d.%d.%d", our_major, our_minor, our_iteration), AttrBuild, build, AttrCopyright, lazyaf("\ Copyright © 1993-%s, Paul Mattes.\n\ Copyright © 1990, Jeff Sparkes.\n\ Copyright © 1989, Georgia Tech Research Corporation (GTRC), Atlanta, GA\n\ 30332.\n\ All rights reserved.\n\ \n\ Redistribution and use in source and binary forms, with or without\n\ modification, are permitted provided that the following conditions are met:\n\ * Redistributions of source code must retain the above copyright\n\ notice, this list of conditions and the following disclaimer.\n\ * Redistributions in binary form must reproduce the above copyright\n\ notice, this list of conditions and the following disclaimer in the\n\ documentation and/or other materials provided with the distribution.\n\ * Neither the names of Paul Mattes, Jeff Sparkes, GTRC nor the names of\n\ their contributors may be used to endorse or promote products derived\n\ from this software without specific prior written permission.\n\ \n\ THIS SOFTWARE IS PROVIDED BY PAUL MATTES, JEFF SPARKES AND GTRC \"AS IS\" AND\n\ ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n\ IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\n\ ARE DISCLAIMED. IN NO EVENT SHALL PAUL MATTES, JEFF SPARKES OR GTRC BE\n\ LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR\n\ CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF\n\ SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS\n\ INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN\n\ CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n\ ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n\ POSSIBILITY OF SUCH DAMAGE.", cyear), NULL); if (codepage_init(appres.codepage) != CS_OKAY) { xs_warning("Cannot find code page \"%s\"", appres.codepage); codepage_init(NULL); } dump_codepages(); dump_models(); dump_proxies(); dump_prefixes(); model_init(); status_reset(); /* * Slam ROWS and COLS to the max right now. The ctlr code goes to a lot of * trouble to make these defROWS and defCOLS, probably so a host that does * starts out with a blind Write without an Erase will get a Model 2, but * I will let someone complain about that if it comes up in practice. * * b3270_connect() does an implied EraseWriteAlternate when a host * connects, so that would need to change, too. */ ROWS = altROWS; COLS = altCOLS; screen_init(); ctlr_init(ALL_CHANGE); ctlr_reinit(ALL_CHANGE); report_terminal_name(); idle_init(); httpd_objects_init(); if (appres.httpd_port) { struct sockaddr *sa; socklen_t sa_len; if (!parse_bind_opt(appres.httpd_port, &sa, &sa_len)) { xs_warning("Invalid -httpd port \"%s\"", appres.httpd_port); } else { hio_init(sa, sa_len); } } ft_init(); hostfile_init(); #if !defined(_WIN32) /*[*/ /* Make sure we don't fall over any SIGPIPEs. */ signal(SIGPIPE, SIG_IGN); /* Collect child exit status. */ signal(SIGCHLD, sigchld_handler); #endif /*]*/ /* Handle initial toggle settings. */ initialize_toggles(); /* Send TLS set-up. */ ui_vleaf(IndTlsHello, AttrSupported, ValTrueFalse(sio_supported()), AttrProvider, sio_provider(), AttrOptions, sio_option_names(), NULL); /* * Register for extended toggle notifies, which will cause a dump of the * current values. * * Then dump the traditional toggles. */ register_extended_toggle_notify(b3270_toggle_notify); for (ix = MONOCASE; ix < N_TOGGLES; ix++) { if (toggle_supported(ix)) { b3270_toggle(ix, TT_INITIAL); } } /* Prepare to run a peer script. */ peer_script_init(); /* Done with initialization.*/ ui_pop(); popups_dump(); /* Process events forever. */ while (1) { process_events(true); screen_disp(false); } } /* * ClearRegion action: * ClearRegion row column rows columns * Row and column are 1-origin. * Used by the UI Cut action. */ static bool ClearRegion_action(ia_t ia, unsigned argc, const char **argv) { int row, column, rows, columns; int r, c; int baddr; int ba2; action_debug(AnClearRegion, ia, argc, argv); if (check_argc(AnClearRegion, argc, 4, 4) < 0) { return false; } row = atoi(argv[0]); column = atoi(argv[1]); rows = atoi(argv[2]); columns = atoi(argv[3]); if (row <= 0 || row > ROWS || column <= 0 || column > COLS) { popup_an_error(AnClearRegion "(): invalid coordinates"); } if (rows < 0 || columns < 0 || row - 1 + rows > ROWS || column - 1 + columns > COLS) { popup_an_error(AnClearRegion "(): invalid size"); } if (rows == 0 || columns == 0) { return true; } baddr = ROWCOL_TO_BA(row - 1, column - 1); for (r = row - 1; r < row - 1 + rows; r++) { for (c = column - 1; c < column - 1 + columns; c++) { baddr = ROWCOL_TO_BA(r, c); if (ea_buf[baddr].fa || FA_IS_PROTECTED(get_field_attribute(baddr)) || ea_buf[baddr].ec == EBC_so || ea_buf[baddr].ec == EBC_si) { continue; } switch (ctlr_dbcs_state(baddr)) { case DBCS_NONE: case DBCS_SB: ctlr_add(baddr, EBC_space, ea_buf[baddr].cs); break; case DBCS_LEFT: ctlr_add(baddr, EBC_space, ea_buf[baddr].cs); ba2 = baddr; INC_BA(ba2); ctlr_add(ba2, EBC_space, ea_buf[baddr].cs); break; case DBCS_RIGHT: ba2 = baddr; DEC_BA(ba2); ctlr_add(ba2, EBC_space, ea_buf[baddr].cs); ctlr_add(baddr, EBC_space, ea_buf[baddr].cs); break; default: break; } mdt_set(baddr); } } return true; } /* * Crash action. Used for debug purposes. */ static bool Crash_action(ia_t ia, unsigned argc, const char **argv) { action_debug(AnCrash, ia, argc, argv); if (check_argc(AnCrash, argc, 1, 1) < 0) { return false; } if (!strcasecmp(argv[0], KwAssert)) { assert(false); popup_an_error(AnCrash "(): Assert did not work"); } else if (!strcasecmp(argv[0], KwExit)) { exit(999); popup_an_error(AnCrash "(): Exit did not work"); } else if (!strcasecmp(argv[0], KwNull)) { char *s = NULL; char c; printf("%c\n", c = *s); popup_an_error(AnCrash "(): Null did not work"); } else { popup_an_error(AnCrash "(): Must specify " KwAssert ", " KwExit " or " KwNull); } return false; } #define STATUS_RECONNECTING "reconnecting" #define STATUS_RESOLVING "resolving" /* * ForceStatus action. Used for debug purposes. */ static bool ForceStatus_action(ia_t ia, unsigned argc, const char **argv) { static const char *reasons[] = { OiaLockDeferred, OiaLockInhibit, OiaLockMinus, OiaLockNotConnected, OiaLockOerr, OiaLockScrolled, OiaLockSyswait, OiaLockTwait, OiaLockDisabled, STATUS_RECONNECTING, STATUS_RESOLVING, NULL }; static const char *oerrs[] = { OiaOerrDbcs, OiaOerrNumeric, OiaOerrOverflow, OiaOerrProtected, NULL }; int reason; action_debug("ForceStatus", ia, argc, argv); if (check_argc("ForceStatus", argc, 1, 2) < 0) { return false; } for (reason = 0; reasons[reason] != NULL; reason++) { if (!strcasecmp(argv[0], reasons[reason])) { break; } } if (reasons[reason] == NULL) { popup_an_error("ForceStatus: Unknown reason '%s'", argv[0]); return false; } if (!strcmp(argv[0], OiaLockOerr)) { int oerr; if (argc < 2) { popup_an_error("ForceStatus: Reason '%s' requires an argument", reasons[reason]); return false; } for (oerr = 0; oerrs[oerr] != NULL; oerr++) { if (!strcasecmp(argv[1], oerrs[oerr])) { break; } } if (oerrs[oerr] == NULL) { popup_an_error("ForceStatus: Unknown %s type '%s'", reasons[reason], argv[1]); return false; } ui_vleaf(IndOia, AttrField, OiaLock, AttrValue, lazyaf("%s %s", reasons[reason], oerrs[oerr]), NULL); } else if (!strcmp(argv[0], OiaLockScrolled)) { int n; if (argc < 2) { popup_an_error("ForceStatus: Reason '%s' requires an argument", reasons[reason]); return false; } n = atoi(argv[1]); if (n < 1) { popup_an_error("Invalid %s amount '%s'", reasons[reason], argv[1]); return false; } ui_vleaf(IndOia, AttrField, OiaLock, AttrValue, lazyaf("%s %d", reasons[reason], n), NULL); } else if (argc > 1) { popup_an_error("ForceStatus: Reason '%s' does not take an argument", reasons[reason]); return false; } else { if (!strcmp(reasons[reason], STATUS_RECONNECTING)) { ui_vleaf(IndOia, AttrField, OiaLock, AttrValue, OiaLockNotConnected, NULL); ui_vleaf(IndConnection, AttrState, state_name[(int)RECONNECTING], NULL); } else if (!strcmp(reasons[reason], STATUS_RESOLVING)) { ui_vleaf(IndOia, AttrField, OiaLock, AttrValue, OiaLockNotConnected, NULL); ui_vleaf(IndConnection, AttrState, state_name[(int)RESOLVING], NULL); } else { ui_vleaf(IndOia, AttrField, OiaLock, AttrValue, reasons[reason], NULL); } } return true; } /** * xterm text escape * * @param[in] opcode Operation to perform * @param[in] text Associated text */ void xterm_text_gui(int code, const char *text) { if (code == 0 || code == 1) { ui_vleaf(IndIconName, AttrText, text, NULL); } if (code == 0 || code == 2) { ui_vleaf(IndWindowTitle, AttrText, text, NULL); } if (code == 50) { ui_vleaf(IndFont, AttrText, text, NULL); } } /** * Set product-specific appres defaults. */ void product_set_appres_defaults(void) { /* * Set defaults like x3270 -- operator error locks the keyboard. * But also set unlock_delay to false, to help with responsiveness. */ appres.oerr_lock = true; appres.interactive.save_lines = 4096; } /** * Handle a toggle change. * @param[in] ix Toggle index * @param[in] tt Toggle type */ static void b3270_toggle(toggle_index_t ix, enum toggle_type tt) { int i; if (tt != TT_INITIAL) { return; } for (i = 0; toggle_names[i].name; i++) { if (toggle_names[i].index == ix) { break; } } if (!toggle_names[i].name) { return; } ui_vleaf(IndSetting, AttrName, toggle_names[i].name, AttrValue, toggled(ix)? ValTrue: ValFalse, NULL); if (ix == TRACING) { ui_vleaf(IndTraceFile, AttrName, (toggled(ix) && tracefile_name != NULL)? tracefile_name: NULL, NULL); } if (ix == SHOW_TIMING && !toggled(SHOW_TIMING)) { status_untiming(); } } void menubar_retoggle(toggle_index_t ix) { b3270_toggle(ix, TT_INITIAL); } void menubar_as_set(bool sensitive _is_unused) { } /** * Handle a generic toggle change. */ static void b3270_toggle_notify(const char *name, const char *value, ia_t cause) { ui_vleaf(IndSetting, AttrName, name, AttrValue, value, AttrCause, ia_name[cause], NULL); } /** * TLS password GUI. * @param[out] buf Returned password * @param[in] size Buffer size * @param[in] again true if this is a re-prompt (old password was bad) * @return SP_SUCCESS if password entered, SP_FAILURE to abort, SP_PENDING to * indicate that a prompt was displayed and there is no answer yet, * SP_NOT_SUPPORTED to indicate that password prompting is not supported. */ tls_passwd_ret_t tls_passwd_gui_callback(char *buf, int size, bool again) { if (push_password(again)) { return SP_PENDING; } else { return SP_NOT_SUPPORTED; } } /* State change for the printer session. */ static void b3270_printer(bool on) { ui_vleaf(IndOia, AttrField, "printer-session", AttrValue, ValTrueFalse(on), AttrLu, on? pr3287_session_lu(): NULL, NULL); } /* State change for the terminal name. */ static void b3270_terminal_name(bool on _is_unused) { report_terminal_name(); } /* Give the model change logic permission to run. */ bool model_can_change(void) { return true; } /** * Main module registration. */ static void b3270_register(void) { static action_table_t actions[] = { { AnClearRegion, ClearRegion_action, 0 }, { AnCrash, Crash_action, ACTION_HIDDEN }, { "ForceStatus", ForceStatus_action, ACTION_HIDDEN }, }; static opt_t b3270_opts[] = { { OptCallback, OPT_STRING, false, ResCallback, aoffset(scripting.callback), NULL, "Callback address and port" }, { OptUtf8, OPT_BOOLEAN, true, ResUtf8, aoffset(utf8), NULL, "Force local codeset to be UTF-8" }, }; static res_t b3270_resources[] = { { ResCallback, aoffset(scripting.callback), XRM_STRING }, { ResIdleCommand,aoffset(idle_command), XRM_STRING }, { ResIdleCommandEnabled,aoffset(idle_command_enabled),XRM_BOOLEAN }, { ResIdleTimeout,aoffset(idle_timeout), XRM_STRING }, { ResUtf8, aoffset(utf8), XRM_BOOLEAN }, }; static xres_t b3270_xresources[] = { { ResPrintTextScreensPerPage, V_FLAT }, #if defined(_WIN32) /*[*/ { ResPrinterCodepage, V_FLAT }, { ResPrinterName, V_FLAT }, { ResPrintTextFont, V_FLAT }, { ResPrintTextHorizontalMargin, V_FLAT }, { ResPrintTextOrientation, V_FLAT }, { ResPrintTextSize, V_FLAT }, { ResPrintTextVerticalMargin, V_FLAT }, #else /*][*/ { ResPrintTextCommand, V_FLAT }, #endif /*]*/ }; /* Register the toggles. */ register_toggles(toggles, array_count(toggles)); /* Register for state changes. */ register_schange(ST_CONNECT, b3270_connect); register_schange(ST_NEGOTIATING, b3270_connect); register_schange(ST_3270_MODE, b3270_connect); register_schange(ST_LINE_MODE, b3270_connect); register_schange(ST_SECURE, b3270_secure); register_schange(ST_CODEPAGE, b3270_new_codepage); register_schange(ST_PRINTER, b3270_printer); register_schange(ST_TERMINAL_NAME, b3270_terminal_name); /* Register our actions. */ register_actions(actions, array_count(actions)); /* Register our options. */ register_opts(b3270_opts, array_count(b3270_opts)); /* Register our resources. */ register_resources(b3270_resources, array_count(b3270_resources)); register_xresources(b3270_xresources, array_count(b3270_xresources)); } suite3270-4.1/Common/b3270/b3270_files.mk000066400000000000000000000001701413735575200172720ustar00rootroot00000000000000# b3270-specific object files B3270_OBJECTS = async.o b3270.o ft.o password.o popups.o screen.o status.o \ ui_stream.o suite3270-4.1/Common/b3270/b_password.h000066400000000000000000000032111413735575200173350ustar00rootroot00000000000000/* * Copyright (c) 2017, 2020 Paul Mattes. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the names of Paul Mattes nor the names of his contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO * EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * b_password.h * TLS password for b3270. */ bool push_password(bool again); ia_t password_ia_restrict(const char *action); suite3270-4.1/Common/b3270/bscreen.h000066400000000000000000000031321413735575200166150ustar00rootroot00000000000000/* * Copyright (c) 2016, 2020 Paul Mattes. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the names of Paul Mattes nor the names of his contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO * EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * bscreen.h * b3270 screen declarations. */ void b3270_new_codepage(bool); suite3270-4.1/Common/b3270/ft.c000066400000000000000000000053701413735575200156060ustar00rootroot00000000000000/* * Copyright (c) 1996-2020, Paul Mattes. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the names of Paul Mattes, Dick Altenbern nor the names of * their contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO * EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * ft.c * UI back-end file transfer logic. */ #include "globals.h" #include "resources.h" #include "unicodec.h" #include "actions.h" #include "b3270proto.h" #include "ft.h" #include "ft_private.h" #include "ft_gui.h" #include "lazya.h" #include "ui_stream.h" void ft_gui_progress_popdown(void) { } void ft_gui_errmsg_prepare(char *msg) { } void ft_gui_clear_progress(void) { } void ft_gui_complete_popup(const char *msg, bool is_error) { ui_vleaf(IndFt, AttrState, "complete", AttrSuccess, ValTrueFalse(!is_error), AttrText, msg, AttrCause, ia_name[ft_cause], NULL); } void ft_gui_update_length(size_t length) { ui_vleaf(IndFt, AttrState, "running", AttrBytes, lazyaf("%lu", (unsigned long)length), AttrCause, ia_name[ft_cause], NULL); } void ft_gui_running(size_t length) { ui_vleaf(IndFt, AttrState, "running", AttrBytes, lazyaf("%lu", (unsigned long)length), AttrCause, ia_name[ft_cause], NULL); } void ft_gui_aborting(void) { ui_vleaf(IndFt, AttrState, "aborting", AttrCause, ia_name[ft_cause], NULL); } void ft_gui_awaiting(void) { ui_vleaf(IndFt, AttrState, "awaiting", AttrCause, ia_name[ft_cause], NULL); } suite3270-4.1/Common/b3270/localdefs.h000066400000000000000000000034631413735575200171370ustar00rootroot00000000000000/* * Copyright (c) 2000-2009, 2014-2015 Paul Mattes. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of Paul Mattes nor his contributors may be used * to endorse or promote products derived from this software without * specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. */ /* * localdefs.h * Local definitions for s3270. * * This file contains definitions for environment-specific * facilities, such as memory allocation, I/O registration, * and timers. */ /* Identify ourselves. */ #define S3270 1 #if defined(_WIN32) /*[*/ # define WS3270 1 #endif /*]*/ suite3270-4.1/Common/b3270/password.c000066400000000000000000000107271413735575200170410ustar00rootroot00000000000000/* * Copyright (c) 2017-2018, 2020 Paul Mattes. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the names of Paul Mattes nor the names of his contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO * EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * b_password.c * TLS password for b3270. */ #include "globals.h" #include #include "actions.h" #include "b_password.h" #include "lazya.h" #include "task.h" #include "telnet.h" #include "host.h" #include "trace.h" #include "utils.h" /* Macros. */ #define PASSWORD_PASSTHRU_NAME "TlsKeyPassword" #define PASSWORD_PASSTHRU_CALL PASSWORD_PASSTHRU_NAME "()" /* Globals. */ /* Statics. */ static void password_data(task_cbh handle, const char *buf, size_t len, bool success); static bool password_done(task_cbh handle, bool success, bool abort); /* Callback block for actions. */ static tcb_t password_cb = { "password", IA_PASSWORD, CB_NEW_TASKQ, password_data, password_done, NULL }; static char *password_result = NULL; /** * Callback for data returned to password. * * @param[in] handle Callback handle * @param[in] buf Buffer * @param[in] len Buffer length * @param[in] success True if data, false if error message */ static void password_data(task_cbh handle, const char *buf, size_t len, bool success) { if (handle != (tcb_t *)&password_cb) { vtrace("password_data: no match\n"); return; } Replace(password_result, xs_buffer("%.*s", (int)len, buf)); } /* * Timeout (asynchrous call) for password error. */ static void password_error(ioid_t ioid) { connect_error("%s", password_result? password_result: "Password failed"); Replace(password_result, NULL); } /** * Callback for completion of password pass-through command. * * @param[in] handle Callback handle * @param[in] success True if child succeeded * @param[in] abort True if aborting * * @return True if context is complete */ static bool password_done(task_cbh handle, bool success, bool abort) { if (handle != (tcb_t *)&password_cb) { vtrace("password_data: no match\n"); return true; } if (success) { net_password_continue(password_result); } else { vtrace("Password command failed%s%s\n", password_result? ": ": "", password_result? password_result: ""); AddTimeOut(1, password_error); } return true; } /** * Push a password command. * @return true if pass-through queued, false otherwise. */ bool push_password(bool again) { action_elt_t *e; bool found = false; char *cmd; FOREACH_LLIST(&actions_list, e, action_elt_t *) { if (!strcasecmp(e->t.name, PASSWORD_PASSTHRU_NAME)) { found = true; break; } } FOREACH_LLIST_END(&actions_list, e, action_elt_t *); if (!found) { return false; } /* No result yet. */ Replace(password_result, NULL); /* Push a callback with a macro. */ cmd = lazyaf("%s(%s)", PASSWORD_PASSTHRU_NAME, again? "again": ""); push_cb(cmd, strlen(cmd), &password_cb, (task_cbh)&password_cb); return true; } /** * Return restrictions based on a passthru command name. * @returns IA_NONE or IA_PASSWORD. */ ia_t password_ia_restrict(const char *action) { return strcasecmp(action, PASSWORD_PASSTHRU_NAME)? IA_NONE: IA_PASSWORD; } suite3270-4.1/Common/b3270/popups.c000066400000000000000000000110311413735575200165120ustar00rootroot00000000000000/* * Copyright (c) 2016, 2019-2021 Paul Mattes. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the names of Paul Mattes, Jeff Sparkes, GTRC nor their * contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO * EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * popups.c * A GUI back-end for a 3270 Terminal Emulator * Error and info pop-ups. */ #include "globals.h" #include "resources.h" #include "b3270proto.h" #include "lazya.h" #include "popups.h" #include "task.h" #include "trace.h" #include "ui_stream.h" #include "b3270_popups.h" bool error_popup_visible = false; const char *popup_separator = " "; typedef struct stored_popup { struct stored_popup *next; bool is_error; char *text; } stored_popup_t; static stored_popup_t *sp_first = NULL; static stored_popup_t *sp_last = NULL; static bool popups_ready = false; /* Store a pending pop-up. */ static void popup_store(bool is_error, char *text) { stored_popup_t *sp = (stored_popup_t *)Malloc(sizeof(stored_popup_t) + strlen(text) + 1); sp->is_error = is_error; sp->text = (char *)(sp + 1); strcpy(sp->text, text); sp->next = NULL; if (sp_last != NULL) { sp_last->next = sp; } else { sp_first = sp; } sp_last = sp; } /* Pop up an error message, given a va_list. */ void popup_a_vxerror(pae_t type, const char *fmt, va_list ap) { char *s; static const char *error_types[] = { PtConnectionError, PtError }; s = vlazyaf(fmt, ap); vtrace("Error: %s\n", s); if (task_redirect()) { task_error(s); } else if (!popups_ready) { popup_store(true, s); } else { ui_vleaf(IndPopup, AttrType, error_types[type], AttrText, s, NULL); } } /* Pop up an info message. */ void popup_an_info(const char *fmt, ...) { va_list ap; char *s; va_start(ap, fmt); s = vlazyaf(fmt, ap); va_end(ap); if (!popups_ready) { popup_store(true, s); } else { ui_vleaf(IndPopup, AttrType, PtInfo, AttrText, s, NULL); } } /* Output from an action. */ void action_output(const char *fmt, ...) { va_list ap; char *s; va_start(ap, fmt); s = vlazyaf(fmt, ap); va_end(ap); if (task_redirect()) { task_info("%s", s); } else { ui_vleaf(IndPopup, AttrType, PtResult, AttrText, s, NULL); } } /* Output from the printer process. */ void popup_printer_output(bool is_err, abort_callback_t *a _is_unused, const char *fmt, ...) { va_list ap; char *s; va_start(ap, fmt); s = vlazyaf(fmt, ap); va_end(ap); ui_vleaf(IndPopup, AttrType, PtPrinter, AttrError, ValTrueFalse(is_err), AttrText, s, NULL); } /* Output from a child process. */ void popup_child_output(bool is_err, abort_callback_t *a _is_unused, const char *fmt, ...) { va_list ap; char *s; va_start(ap, fmt); s = vlazyaf(fmt, ap); va_end(ap); ui_vleaf(IndPopup, AttrType, PtChild, AttrError, ValTrueFalse(is_err), AttrText, s, NULL); } void child_popup_init(void) { } /* Initialization is complete. */ void popups_dump(void) { stored_popup_t *sp; while ((sp = sp_first) != NULL) { ui_vleaf(IndPopup, AttrType, sp->is_error? PtError: PtInfo, AttrText, sp->text, NULL); sp_first = sp->next; Free(sp); } sp_last = NULL; popups_ready = true; } suite3270-4.1/Common/b3270/sb3270.py000077500000000000000000000163161413735575200163300ustar00rootroot00000000000000#!/usr/bin/env python # Python version of sb3270 (s3270 clone using b3270) from xml.parsers import expat import shlex, subprocess import sys import argparse import os import codecs # Process command-line arguments. parser = argparse.ArgumentParser() parser.add_argument("-debug", help="display debug information", action="store_true") parser.add_argument("-trace", help="trace b3270", action="store_true") args = parser.parse_args() # State class. Keeps track of the emulator state, produces the s3270 prompt. class State: def __init__(self): # Keyboard lock flag self.keyboardLock = False # Hostname self.host = "" # Connection state self.state = "" # Model number self.model = "" # Logical rows self.rows = 0 # Logical columns self.cols = 0 # Formatted state self.formatted = False # Cursor row and column self.row = 0 self.col = 0 # Prompt method def Prompt(self,time): s="" # 1 keyboard if (self.keyboardLock): s = s + "L " else: s = s + "U " # 2 formatted (not yet) if (self.formatted): s = s + "F " else: s = s + "U " # 3 protected (not possible, fake it) s = s + "U " # 4 connection if (self.host != ""): s = s + "C(" + self.host + ") " else: s = s + "N " # 5 state if (self.host != "" and self.state != ""): if ("nvt" in self.state): if ("char" in self.state): s = s + "C " else: s = s + "L " else: if ("3270" in self.state): s = s + "I " else: s = s + "P " else: s = s + "N " # 6 model s = s + self.model[9] + " " # 7 rows # 8 cols s = s + "{} {} ".format(self.rows, self.cols) # 9 cursor row (0-origin) # 10 cursor col (0-origin) s = s + "{} {} ".format(self.row, self.col) # 11 window number (0x0) s = s + "0x0 " # 12 timing s = s + time; return s # Debug output method, probably does not work on Windows. def Debug(text): global args if (args.debug): print("" + text + "") # XML parser class class Parser: # Constructor. def __init__(self, state): # Set up the expat object and handlers. self._parser = expat.ParserCreate("UTF-8") self._parser.StartElementHandler = self.start self._parser.EndElementHandler = self.end self._parser.CharacterDataHandler = self.data # Not time to read from stdin yet. self.canRead = False # Remember the state object. self.state = state # Check and reset the canRead flag. def CanRead(self): if (self.canRead): self.canRead = False return True else: return False # Push a line of input into the expat parser. def feed(self, data): self._parser.Parse(data, 0) # Clean up. def close(self): self._parser.Parse("", 1) # end of data del self._parser # get rid of circular references # Process the start of an element. This is where most of the logic is. def start(self, tag, attrs): Debug("START " + repr(tag) + " " + repr(attrs)) if (tag == "ready"): self.canRead = True if (tag == "run-result"): if ("text" in attrs): for line in attrs["text"].splitlines(): print("data: " + line) print(self.state.Prompt(attrs["time"])) if (attrs["success"] == "true"): print("ok") else: print("error") self.canRead = True if (tag == "oia"): # The only thing we care about in the OIA is the keyboard lock, # and we don't care what it is. if ("field" in attrs and attrs["field"] == "lock"): self.state.keyboardLock = "value" in attrs if (tag == "connection"): # Process the connection state. All we need is the host name, or # lack thereof. self.state.host = "" if ("host" in attrs): self.state.host = attrs["host"] self.state.state = "" if ("state" in attrs): self.state.state = attrs["state"] if (tag == "terminal-name"): # Process the model number. self.state.model = attrs["text"] if (tag == "erase"): if ("logical-rows" in attrs): self.state.rows = attrs["logical-rows"] if ("logical-cols" in attrs): self.state.cols = attrs["logical-cols"] if (tag == "formatted"): # Process the formatted indication. self.state.formatted = not ("state" in attrs and attrs["state"] == "false"); if (tag == "cursor" and "row" in attrs): # Process the cursor address. self.state.row = int(attrs["row"]) - 1 self.state.col = int(attrs["column"]) - 1 # Process the end of an element. def end(self, tag): Debug("END " + repr(tag)) if (tag == "initialize"): self.canRead = True # Process inter-element data. def data(self, data): Debug("DATA " + repr(data)) # Render a string safe for XML 1.0 def XmlSafe(s): r = "" named = { '&': "amp", '"': "quot", "'": "apos", '<': "lt", '>': "gt", } numerics = "\x09\x0a\x0d"; for c in s: if (c in named): r = r + "&" + named[c] + ";" elif (c in numerics): r = r + "&#" + str(ord(c)) + ";" elif (ord(c) < 32 or ord(c) == 0x7f or (ord(c) >= 0x86 and ord(c) <= 0x9f)): r = r + " " else: r = r + c return r # Create the state. s = State() # Create the parser. p = Parser(s) # Create the b3270 process. b3270 = "b3270" if (args.trace): command = [b3270,"-trace"] else: command = [b3270] command += ["-xrm","*unlockDelay: false","-xrm","*oerrLock: true"] Debug("Command line is: " + repr(command)) b = subprocess.Popen(command, stdin=subprocess.PIPE, stdout=subprocess.PIPE) b.stdin.write(b'\n') # Select from stdin and the parser until something breaks. while (True): if (p.CanRead()): Debug("Reading from stdin") text = sys.stdin.readline() Debug("Got " + repr(text)) if (text == ""): Debug("stdin EOF") b.stdin.write(b'\n') break text = XmlSafe(text.rstrip('\r\n')) Debug("Expanded text is " + repr(text)) if (sys.version_info.major >= 3): text = bytes(text, "UTF-8") b.stdin.write(b'\n') b.stdin.flush() Debug("Reading from b3270") line = b.stdout.readline() if (line == ""): Debug("b3270 EOF") p.close() break Debug("Got " + repr(line)) p.feed(line) # Clean up. b.terminate() suite3270-4.1/Common/b3270/screen.c000066400000000000000000000605251413735575200164570ustar00rootroot00000000000000/* * Copyright (c) 2015-2020 Paul Mattes. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the names of Paul Mattes nor the names of his contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO * EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * screen.c * b3270's screen update logic. */ #include "globals.h" #include "3270ds.h" #include "resources.h" #include "appres.h" #include "b3270proto.h" #include "ctlr.h" #include "ctlrc.h" #include "ui_stream.h" #include "lazya.h" #include "nvt.h" #include "screen.h" #include "see.h" #include "toggles.h" #include "trace.h" #include "unicodec.h" #include "utils.h" #include "utf8.h" #include "varbuf.h" #include "xscroll.h" /* Unicode circled A character. */ #define CIRCLED_A 0x24b6 /* * How many columns to span with redundant information to avoid near-adjacent * or elements. */ #define RED_SPAN 16 /* How many columns of attr diff to join with a text diff. */ #define AM_MAX 16 #define XX_UNDERLINE 0x0001 /* underlined */ #define XX_BLINK 0x0002 /* blinking */ #define XX_HIGHLIGHT 0x0004 /* highlighted */ #define XX_SELECTABLE 0x0008 /* lightpen selectable */ #define XX_REVERSE 0x0010 /* reverse video (3278) */ #define XX_WIDE 0x0020 /* double-width character (DBCS) */ #define XX_ORDER 0x0040 /* visible order */ #define XX_PUA 0x0080 /* private use area */ #define XX_NO_COPY 0x0100 /* do not copy into paste buffer */ #define XX_WRAP 0x0200 /* NVT text wrapped here */ typedef struct { u_int ccode; /* unicode character to display */ u_char fg; /* foreground color */ u_char bg; /* background color */ u_short gr; /* graphic representation */ } screen_t; /* Row-difference region. */ typedef struct _rowdiff { struct _rowdiff *next; int start_col; int width; enum { RD_ATTR, RD_TEXT } reason; } rowdiff_t; static int saved_rows = 0; static int saved_cols = 0; static int last_rows = 0; static int last_cols = 0; static struct ea *saved_ea = NULL; static screen_t *saved_s = NULL; static bool saved_ea_is_empty = false; static int sent_baddr = 0; static int saved_baddr = 0; static struct ea zero_ea; static bool cursor_enabled = true; static void screen_disp_cond(bool always); /* * Compare two screen_t's for equality. */ static bool ea_equal(screen_t *a, screen_t *b) { return !memcmp(a, b, sizeof(screen_t)); } /* * Compare just the attributes (not the character code) in two screen_t's * for equality. */ static bool ea_equal_attrs(screen_t *a, screen_t *b) { screen_t ax = *a; /* struct copy */ screen_t bx = *b; /* struct copy */ ax.ccode = bx.ccode = 0; return ea_equal(&ax, &bx); } static char * see_gr(u_short gr) { varbuf_t r; char *sep = ""; if (gr == 0) { return "default"; } vb_init(&r); if (gr & XX_UNDERLINE) { vb_appends(&r, "underline"); sep = ","; } if (gr & XX_BLINK) { vb_appendf(&r, "%sblink", sep); sep = ","; } if (gr & XX_HIGHLIGHT) { vb_appendf(&r, "%shighlight", sep); sep = ","; } if (gr & XX_SELECTABLE) { vb_appendf(&r, "%sselectable", sep); sep = ","; } if (gr & XX_REVERSE) { vb_appendf(&r, "%sreverse", sep); sep = ","; } if (gr & XX_WIDE) { vb_appendf(&r, "%swide", sep); sep = ","; } if (gr & XX_ORDER) { vb_appendf(&r, "%sorder", sep); sep = ","; } if (gr & XX_PUA) { vb_appendf(&r, "%sprivate-use", sep); sep = ","; } if (gr & XX_NO_COPY) { vb_appendf(&r, "%sno-copy", sep); sep = ","; } if (gr & XX_WRAP) { vb_appendf(&r, "%swrap", sep); sep = ","; } return lazya(vb_consume(&r)); } /* Save empty screen state. */ static void save_empty(void) { size_t se = ROWS * COLS * sizeof(struct ea); size_t ss = maxROWS * maxCOLS * sizeof(screen_t); int i; /* Zero saved_ea. */ Replace(saved_ea, (struct ea *)Malloc(se)); memset(saved_ea, 0, se); saved_rows = ROWS; saved_cols = COLS; saved_ea_is_empty = true; /* Erase saved_s. */ Replace(saved_s, (screen_t *)Malloc(ss)); memset(saved_s, 0, ss); for (i = 0; i < maxROWS * maxCOLS; i++) { saved_s[i].ccode = ' '; saved_s[i].fg = mode.m3279? HOST_COLOR_BLUE: HOST_COLOR_NEUTRAL_WHITE; saved_s[i].bg = HOST_COLOR_NEUTRAL_BLACK; } } /* Emit an erase indication. */ static void emit_erase(int rows, int cols) { bool switched = rows > 0 && cols > 0; ui_vleaf(IndErase, AttrLogicalRows, switched? lazyaf("%d", rows) : NULL, AttrLogicalColumns, switched? lazyaf("%d", cols) : NULL, AttrFg, mode.m3279? "blue": NULL, AttrBg, mode.m3279? "neutralBlack": NULL, NULL); } /* Toggle the VISIBLE_CONTROL setting. */ static void toggle_visibleControl(toggle_index_t ix _is_unused, enum toggle_type tt _is_unused) { screen_disp_cond(true); } /* Internal screen initialization. */ static void internal_screen_init(void) { ui_vleaf(IndScreenMode, AttrModel, lazyaf("%d", model_num), AttrRows, lazyaf("%d", maxROWS), AttrColumns, lazyaf("%d", maxCOLS), AttrColor, mode.m3279? ValTrue: ValFalse, AttrOversize, ov_rows || ov_cols? ValTrue: ValFalse, AttrExtended, mode.extended? ValTrue: ValFalse, NULL); emit_erase(maxROWS, maxCOLS); last_rows = maxROWS; last_cols = maxCOLS; scroll_buf_init(); /* XXX: What about changing the model? */ save_empty(); } /* Screen initialization. */ void screen_init(void) { static toggle_register_t toggles[] = { { VISIBLE_CONTROL, toggle_visibleControl, 0 } }; /* Register toggles. */ register_toggles(toggles, array_count(toggles)); /* Do internal initialization. */ internal_screen_init(); } /* Codepage change handler. */ void b3270_new_codepage(bool unused _is_unused) { screen_disp_cond(true); } /* * Map default 3279 colors. This code is duplicated three times. ;-( */ static int color_from_fa(unsigned char fa) { static int field_colors[4] = { HOST_COLOR_GREEN, /* default */ HOST_COLOR_RED, /* intensified */ HOST_COLOR_BLUE, /* protected */ HOST_COLOR_NEUTRAL_WHITE /* protected, intensified */ # define DEFCOLOR_MAP(f) \ ((((f) & FA_PROTECT) >> 4) | (((f) & FA_INT_HIGH_SEL) >> 3)) }; if (mode.m3279) { return field_colors[DEFCOLOR_MAP(fa)]; } else { return HOST_COLOR_NEUTRAL_WHITE; } } /* * Return a visible control character for a field attribute. */ static unsigned char visible_fa(unsigned char fa) { static unsigned char varr[32] = "0123456789ABCDEFGHIJKLMNOPQRSTUV"; unsigned ix; /* * This code knows that: * FA_PROTECT is 0b100000, and we map it to 0b010000 * FA_NUMERIC is 0b010000, and we map it to 0b001000 * FA_INTENSITY is 0b001100, and we map it to 0b000110 * FA_MODIFY is 0b000001, and we copy to 0b000001 */ ix = ((fa & (FA_PROTECT | FA_NUMERIC | FA_INTENSITY)) >> 1) | (fa & FA_MODIFY); return varr[ix]; } /* * Test a character for an APL underlined alphabetic mapped to a circled * alphabetic. */ static bool is_apl_underlined(unsigned char cs, unsigned long uc) { return ((cs & CS_GE) || ((cs & CS_MASK) == CS_APL)) && uc >= CIRCLED_A && uc < CIRCLED_A + 26; } /* * Remap a circled alphabetic to a plain alphabetic. */ static unsigned long uncircle(unsigned long uc) { return 'A' + (uc - CIRCLED_A); } /* * Render the screen into a buffer. * * ea: ROWS*COLS screen buffer to render * s: maxROWS*maxCOLS screen_t to render into */ void render_screen(struct ea *ea, screen_t *s) { int i; ucs4_t uc; int fa_addr = find_field_attribute(0); unsigned char fa = ea[fa_addr].fa; int fa_fg; int fa_bg; int fa_gr; bool fa_high; /* Start with all blanks, blue on black. */ memset(s, 0, maxROWS * maxCOLS * sizeof(screen_t)); for (i = 0; i < maxROWS * maxCOLS; i++) { s[i].ccode = ' '; s[i].fg = mode.m3279? HOST_COLOR_BLUE : HOST_COLOR_NEUTRAL_WHITE; s[i].bg = HOST_COLOR_NEUTRAL_BLACK; } if (ea[fa_addr].fg) { fa_fg = ea[fa_addr].fg & 0x0f; } else { fa_fg = color_from_fa(fa); } if (ea[fa_addr].bg) { fa_bg = ea[fa_addr].bg & 0x0f; } else { fa_bg = HOST_COLOR_NEUTRAL_BLACK; } if (ea[fa_addr].gr & GR_INTENSIFY) { fa_high = true; } else { fa_high = FA_IS_HIGH(fa); } fa_gr = ea[fa_addr].gr; for (i = 0; i < ROWS * COLS; i++) { int fg_color, bg_color; bool high; bool dbcs = false; bool order = false; bool extra_underline = false; bool pua = false; bool no_copy = false; uc = 0; if (ea[i].fa) { uc = ' '; fa = ea[i].fa; if (ea[i].fg) { fa_fg = ea[i].fg & 0x0f; } else { fa_fg = color_from_fa(fa); } if (ea[i].bg) { fa_bg = ea[i].bg & 0x0f; } else { fa_bg = HOST_COLOR_NEUTRAL_BLACK; } if (ea[i].gr & GR_INTENSIFY) { fa_high = true; } else { fa_high = FA_IS_HIGH(fa); } fa_gr = ea[i].gr; } else if (FA_IS_ZERO(fa)) { if (ctlr_dbcs_state(i) == DBCS_LEFT) { uc = 0x3000; dbcs = true; } else { uc = ' '; } } else { if (is_nvt(&ea[i], false, &uc)) { /* NVT-mode text. */ switch (ctlr_dbcs_state(i)) { case DBCS_RIGHT: uc = 0; dbcs = true; break; case DBCS_LEFT: dbcs = true; /* fall through */ default: break; } } else { /* Convert EBCDIC to Unicode. */ switch (ctlr_dbcs_state(i)) { case DBCS_NONE: case DBCS_SI: case DBCS_SB: switch (ea[i].ec) { case EBC_null: if (toggled(VISIBLE_CONTROL)) { uc = '.'; order = true; } else { uc = ' '; } break; case EBC_so: if (toggled(VISIBLE_CONTROL)) { uc = '<'; order = true; no_copy = true; } else { uc = ' '; } break; case EBC_si: if (toggled(VISIBLE_CONTROL)) { uc = '>'; order = true; no_copy = true; } else { uc = ' '; } break; case EBC_dup: uc = '*'; pua = true; order = true; break; case EBC_fm: uc = ';'; pua = true; order = true; break; } if (!order) { uc = ebcdic_to_unicode(ea[i].ec, ea[i].cs, EUO_APL_CIRCLED); if (is_apl_underlined(ea[i].cs, uc)) { uc = uncircle(uc); extra_underline = true; pua = true; } if (uc == 0) { uc = ' '; } } break; case DBCS_LEFT: uc = ebcdic_to_unicode((ea[i].ec << 8) | ea[i + 1].ec, CS_BASE, EUO_NONE); if (uc == 0) { uc = 0x3000; } dbcs = true; break; case DBCS_RIGHT: uc = 0; dbcs = true; break; default: uc = ' '; break; } } } if (ea[i].fg) { fg_color = ea[i].fg & 0x0f; } else { fg_color = fa_fg; } if (ea[i].bg) { bg_color = ea[i].bg & 0x0f; } else { bg_color = fa_bg; } if (ea[i].gr & GR_REVERSE) { int tmp; tmp = fg_color; fg_color = bg_color; bg_color = tmp; } if (ea[i].gr & GR_INTENSIFY) { high = true; } else { high = fa_high; } /* Draw this position. */ { int si = ((i / COLS) * maxCOLS) + (i % COLS); s[si].ccode = (toggled(VISIBLE_CONTROL) && ea[i].fa)? visible_fa(ea[i].fa): uc; s[si].fg = mode.m3279? fg_color: HOST_COLOR_NEUTRAL_WHITE; s[si].bg = mode.m3279? bg_color: HOST_COLOR_NEUTRAL_BLACK; if (!ea[i].fa && ((fa_gr | ea[i].gr) & GR_UNDERLINE)) { s[si].gr |= XX_UNDERLINE; } if ((fa_gr | ea[i].gr) & GR_BLINK) { s[si].gr |= XX_BLINK; } if (high) { s[si].gr |= XX_HIGHLIGHT; } if (FA_IS_SELECTABLE(fa)) { s[si].gr |= XX_SELECTABLE; } if (!mode.m3279 && ((fa_gr | ea[i].gr) & GR_REVERSE)) { s[si].gr |= XX_REVERSE; } if (dbcs) { s[si].gr |= XX_WIDE; } if (order || (toggled(VISIBLE_CONTROL) && ea[i].fa)) { s[si].gr |= XX_ORDER; } if (!ea[i].fa && extra_underline) { s[si].gr |= XX_UNDERLINE; } if (pua) { s[si].gr |= XX_PUA; } if (no_copy) { s[si].gr |= XX_NO_COPY; } if (ea[i].gr & GR_WRAP) { s[si].gr |= XX_WRAP; } } } } /* Generate one row's worth of raw diffs. */ static rowdiff_t * generate_rowdiffs(screen_t *oldr, screen_t *newr) { int col; rowdiff_t *diffs = NULL; rowdiff_t *last_diff = NULL; for (col = 0; col < maxCOLS; col++) { rowdiff_t *d; if (ea_equal(&oldr[col], &newr[col])) { continue; } d = (rowdiff_t *)Malloc(sizeof(rowdiff_t)); d->next = NULL; d->start_col = col; d->width = 1; if (oldr[col].ccode != newr[col].ccode) { /* Text diff. */ int xcol; d->reason = RD_TEXT; for (xcol = col + 1; xcol < maxCOLS; xcol++) { if (oldr[xcol].ccode != newr[xcol].ccode && ea_equal_attrs(&newr[col], &newr[xcol]) && ea_equal_attrs(&oldr[col], &oldr[xcol])) { d->width++; } else { break; } } } else { /* Attr diff. */ int xcol; d->reason = RD_ATTR; for (xcol = col + 1; xcol < maxCOLS; xcol++) { if (oldr[xcol].ccode == newr[xcol].ccode && ea_equal_attrs(&newr[col], &newr[xcol]) && ea_equal_attrs(&oldr[col], &oldr[xcol])) { d->width++; } else { break; } } } if (last_diff != NULL) { last_diff->next = d; } else { diffs = d; } last_diff = d; /* Skip over what we just generated. */ col += d->width - 1; } return diffs; } /* * Compare the attributes between the end of 'd' and the beginning of 'next'. */ static bool ea_equal_attrs_span(screen_t *oldr, screen_t *newr, rowdiff_t *d, rowdiff_t *next) { int i; for (i = d->start_col + d->width; i < next->start_col; i++) { if (!ea_equal_attrs(&oldr[i], &oldr[d->start_col]) || !ea_equal_attrs(&newr[i], &newr[d->start_col])) { return false; } } return true; } /* Merge adjacent sets of diffs to minimize output. */ static rowdiff_t * merge_adjacent(rowdiff_t *diffs, screen_t *oldr, screen_t *newr) { rowdiff_t *d; rowdiff_t *next; for (d = diffs; d != NULL; d = next) { next = d->next; if (next == NULL) { break; } /* * Merge two text diffs if they are joined by a span of RED_SPAN or * fewer matching cells and have the same attributes. * * But what if the intervening areas have different attributes from * the first text diff? */ if (d->reason == RD_TEXT && next->reason == RD_TEXT && next->start_col - (d->start_col + d->width) <= RED_SPAN && ea_equal_attrs(&oldr[d->start_col], &oldr[next->start_col]) && ea_equal_attrs(&newr[d->start_col], &newr[next->start_col]) && ea_equal_attrs_span(oldr, newr, d, next)) { rowdiff_t *nx; d->width = next->start_col + next->width - d->start_col; nx = next; d->next = next->next; Free(nx); /* Consider d again. */ next = d; continue; } /* * Merge a text diff with a small adjacent attr diff if their attrs * match. */ if (d->reason == RD_TEXT && next->reason == RD_ATTR && next->width <= AM_MAX && next->start_col == d->start_col + d->width && ea_equal_attrs(&oldr[d->start_col], &oldr[next->start_col]) && ea_equal_attrs(&newr[d->start_col], &newr[next->start_col])) { rowdiff_t *nx; d->width += next->width; nx = next; d->next = next->next; Free(nx); /* Consider d again. */ next = d; continue; } /* * Merge a small attr diff with an adjacent text diff if their attrs * match, changing to a text diff when merging. */ if (d->reason == RD_ATTR && d->width <= AM_MAX && next->reason == RD_TEXT && next->start_col == d->start_col + d->width && ea_equal_attrs(&oldr[d->start_col], &oldr[next->start_col]) && ea_equal_attrs(&newr[d->start_col], &newr[next->start_col])) { rowdiff_t *nx; d->reason = RD_TEXT; d->width += next->width; nx = next; d->next = next->next; Free(nx); /* Consider d again. */ next = d; continue; } } return diffs; } /* Emit encoded diffs. */ static void emit_rowdiffs(screen_t *oldr, screen_t *newr, rowdiff_t *diffs) { rowdiff_t *d; for (d = diffs; d != NULL; d = d->next) { const char *args[13]; /* col, fg, bg, gr, text, count, NULL */ int aix = 0; char *col_value; args[aix++] = AttrColumn; col_value = xs_buffer("%d", d->start_col + 1); args[aix++] = col_value; /* will explicitly lazya below */ if (oldr[d->start_col].fg != newr[d->start_col].fg) { args[aix++] = AttrFg; args[aix++] = see_color(0xf0 | newr[d->start_col].fg); } if (oldr[d->start_col].bg != newr[d->start_col].bg) { args[aix++] = AttrBg; args[aix++] = see_color(0xf0 | newr[d->start_col].bg); } if (oldr[d->start_col].gr != newr[d->start_col].gr) { args[aix++] = "gr"; args[aix++] = see_gr(newr[d->start_col].gr); } if (d->reason == RD_TEXT) { int i; varbuf_t r; char *ccode_value; char utf8_buf[6]; int utf8_len; vb_init(&r); for (i = 0; i < d->width; i++) { if (newr[d->start_col + i].ccode == 0) { /* DBCS right, skip it. */ continue; } utf8_len = unicode_to_utf8(newr[d->start_col + i].ccode, utf8_buf); vb_appendf(&r, "%.*s", utf8_len, utf8_buf); } args[aix++] = AttrText; ccode_value = vb_consume(&r); args[aix++] = ccode_value; lazya(ccode_value); } else { args[aix++] = "count"; args[aix++] = lazyaf("%d", d->width); } args[aix++] = NULL; ui_leaf((d->reason == RD_TEXT)? IndChar: IndAttr, args); lazya(col_value); } } static rowdiff_t * free_rowdiffs(rowdiff_t *diffs) { /* Free the diffs. */ while (diffs != NULL) { rowdiff_t *next = diffs->next; Free(diffs); diffs = next; } return NULL; } /* Emit one row's worth of diffs. */ static void emit_row(screen_t *oldr, screen_t *newr) { rowdiff_t *diffs = NULL; /* Construct the sets of raw diffs. */ diffs = generate_rowdiffs(oldr, newr); /* Merge adjacent diffs where it makes sense. */ diffs = merge_adjacent(diffs, oldr, newr); /* Emit the diffs. */ emit_rowdiffs(oldr, newr, diffs); /* Free the diffs. */ diffs = free_rowdiffs(diffs); } /* * Emit a cursor move indication, with or without its own screen update * wrapper. */ static void emit_cursor_cond(bool with_screen) { /* Check for a cursor move. */ if (cursor_enabled && sent_baddr != saved_baddr) { if (with_screen) { ui_vpush(IndScreen, NULL); } ui_vleaf(IndCursor, AttrEnabled, ValTrue, AttrRow, lazyaf("%d", (saved_baddr / COLS) + 1), AttrColumn, lazyaf("%d", (saved_baddr % COLS) + 1), NULL); sent_baddr = saved_baddr; if (with_screen) { ui_pop(); } } } /* * Emit the diff between two screens. */ static void emit_diff(screen_t *old, screen_t *new) { int row; ui_vpush(IndScreen, NULL); emit_cursor_cond(false); for (row = 0; row < maxROWS; row++) { if (memcmp(old + (row * maxCOLS), new + (row * maxCOLS), sizeof(screen_t) * maxCOLS)) { ui_vpush("row", AttrRow, lazyaf("%d", row + 1), NULL); emit_row(&old[row * maxCOLS], &new[row * maxCOLS]); ui_pop(); } } ui_pop(); } /* * Move the cursor. */ void cursor_move(int baddr) { saved_baddr = baddr; cursor_addr = baddr; } /* * Display a changed screen, perhaps unconditionally. */ static void screen_disp_cond(bool always) { bool sent_erase = false; size_t se = ROWS * COLS * sizeof(struct ea); size_t ss = maxROWS * maxCOLS * sizeof(screen_t); bool empty; int i; screen_t *s; static bool xformatted = false; /* Check for a size change. */ if (ROWS != last_rows || COLS != last_cols) { emit_erase(ROWS, COLS); last_rows = ROWS; last_cols = COLS; sent_erase = true; xformatted = false; save_empty(); } /* Check for no change. */ if (!always && saved_rows == ROWS && saved_cols == COLS && !memcmp(saved_ea, ea_buf, se)) { emit_cursor_cond(true); return; } /* Check for now empty. */ empty = true; for (i = 0; i < ROWS * COLS; i++) { if (memcmp(&ea_buf[i], &zero_ea, sizeof(struct ea))) { empty = false; break; } } if (empty) { if (!saved_ea_is_empty) { /* Screen was not empty -- erase it now. */ if (!sent_erase) { emit_erase(-1, -1); } xformatted = false; } /* Remember that the screen is empty. */ save_empty(); emit_cursor_cond(true); return; } if (formatted != xformatted) { ui_vleaf(IndFormatted, AttrState, formatted? ValTrue: ValFalse, NULL); xformatted = formatted; } /* Render the new screen. */ s = Malloc(ss); render_screen(ea_buf, s); /* Tell them what the screen looks like now. */ emit_diff(saved_s, s); /* Save the screen for next time. */ Replace(saved_ea, Malloc(se)); memcpy(saved_ea, ea_buf, se); saved_ea_is_empty = false; Replace(saved_s, s); saved_rows = ROWS; saved_cols = COLS; } /* * Display a changed screen. */ void screen_disp(bool erasing _is_unused) { screen_disp_cond(false); } /* * Scroll the screen. */ void screen_scroll(unsigned char fg, unsigned char bg) { int i; if (!fg) { fg = mode.m3279? HOST_COLOR_BLUE: HOST_COLOR_NEUTRAL_WHITE; } if (!bg) { bg = HOST_COLOR_NEUTRAL_BLACK; } /* Scroll saved_ea. */ if (!saved_ea_is_empty) { memmove(saved_ea, saved_ea + COLS, (ROWS - 1) * COLS * sizeof(struct ea)); memset(saved_ea + (ROWS - 1) * COLS, 0, COLS * sizeof(struct ea)); for (i = 0; i < COLS; i++) { saved_ea[((ROWS - 1) * COLS) + i].fg = 0xf0 | fg; saved_ea[((ROWS - 1) * COLS) + i].bg = 0xf0 | bg; } } /* Scroll saved_s. */ memmove(saved_s, saved_s + COLS, (maxROWS - 1) * maxCOLS * sizeof(screen_t)); memset(saved_s + (maxROWS - 1) * maxCOLS, 0, maxCOLS * sizeof(screen_t)); for (i = 0; i < maxCOLS; i++) { int j = ((maxROWS - 1) * maxCOLS) + i; saved_s[j].ccode = ' '; saved_s[j].fg = fg & ~0xf0; saved_s[j].bg = bg & ~0xf0; } /* Tell the UI. */ ui_vleaf(IndScroll, AttrFg, see_color(0xf0 | fg), AttrBg, see_color(0xf0 | bg), NULL); } /* Left-to-right swap support. */ void screen_flip(void) { flipped = !flipped; ui_vleaf(IndFlipped, AttrValue, flipped? ValTrue: ValFalse, NULL); } bool screen_flipped(void) { return flipped; } /* Scrollbar support. */ /* * Enable or disable the cursor (scrolling) */ void enable_cursor(bool on) { if (on != cursor_enabled) { if (!(cursor_enabled = on)) { ui_vpush(IndScreen, NULL); ui_vleaf(IndCursor, AttrEnabled, ValFalse, NULL); ui_pop(); sent_baddr = -1; } } } /** * Set the scrollbar thumb. * * @param[in] top Where the top of the scrollbar should be (percentage) * @param[in] shown How much of the scrollbar to show (percentage) * @param[in] saved Number of lines saved * @param[in] screen Size of a screen * @param[in] back Number of lines scrolled back * */ void screen_set_thumb(float top, float shown, int saved, int screen, int back) { static float last_top = -1.0; static float last_shown = -1.0; static int last_saved = -1; static int last_back = -1; if (top == last_top && shown == last_shown && saved == last_saved && back == last_back) { return; } last_top = top; last_shown = shown; last_saved = saved; last_back = back; ui_vleaf(IndThumb, AttrTop, lazyaf("%.5f", top), AttrShown, lazyaf("%.5f", shown), AttrSaved, lazyaf("%d", saved), AttrScreen, lazyaf("%d", screen), AttrBack, lazyaf("%d", back), NULL); } suite3270-4.1/Common/b3270/status.c000066400000000000000000000172741413735575200165260ustar00rootroot00000000000000/* * Copyright (c) 2015-2020 Paul Mattes. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the names of Paul Mattes nor the names of his contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO * EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * b_status.c * b3270 status line. */ #include "globals.h" #include "resources.h" #include "b3270proto.h" #include "ctlr.h" #include "kybd.h" #include "lazya.h" #include "screen.h" #include "status.h" #include "ui_stream.h" #include "utils.h" #define FLASH_MSEC 1000 typedef enum { K_NONE, K_MINUS, K_OERR, K_SYSWAIT, K_NOT_CONNECTED, K_INHIBIT, K_DEFERRED, K_TWAIT, K_FIELD, } oia_kybdlock_t; oia_kybdlock_t oia_kybdlock = K_NONE; static bool scrolled = false; static int scroll_n = -1; static char *saved_lock; static bool flashing = false; static ioid_t flashing_id = NULL_IOID; bool screen_suspend(void) { return false; } void status_compose(bool on, ucs4_t ucs4, enum keytype keytype) { static bool is_on = false; if (on == is_on) { return; } is_on = on; ui_vleaf(IndOia, AttrField, OiaCompose, AttrValue, ValTrueFalse(on), AttrChar, on? lazyaf("U+%04%x", ucs4): NULL, AttrType, on? ((keytype == KT_STD)? "std": "ge"): NULL, NULL); } static bool oia_undera = true; void status_ctlr_done(void) { if (oia_undera) { return; } oia_undera = true; ui_vleaf(IndOia, AttrField, OiaNotUndera, AttrValue, ValFalse, NULL); } void status_insert_mode(bool on) { static bool is_on = false; if (on == is_on) { return; } is_on = on; ui_vleaf(IndOia, AttrField, OiaInsert, AttrValue, ValTrueFalse(on), NULL); } void status_lu(const char *s) { static char *saved_lu = NULL; if (saved_lu == NULL && s == NULL) { return; } if (saved_lu != NULL && s != NULL && !strcmp(saved_lu, s)) { return; } if (s == NULL) { Replace(saved_lu, NULL); } else { Replace(saved_lu, NewString(s)); } ui_vleaf(IndOia, AttrField, OiaLu, AttrValue, s, NULL); } /* Display or buffer a new lock state. */ static void status_lock(char *msg) { Replace(saved_lock, msg); if (!scrolled && !flashing) { ui_vleaf(IndOia, AttrField, OiaLock, AttrValue, saved_lock, NULL); } } void status_minus(void) { if (oia_kybdlock == K_MINUS) { return; } oia_kybdlock = K_MINUS; status_lock(NewString(OiaLockMinus)); } void status_oerr(int error_type) { static const char *oerr_names[] = { OiaOerrProtected, OiaOerrNumeric, OiaOerrOverflow, OiaOerrDbcs }; char *name; oia_kybdlock = K_OERR; if (error_type >= 1 && error_type <= 4) { name = xs_buffer(OiaLockOerr " %s", oerr_names[error_type - 1]); } else { name = xs_buffer(OiaLockOerr " %d", error_type); } status_lock(name); } void status_reset(void) { if (!IN_3270 && !IN_NVT) { if (oia_kybdlock == K_NOT_CONNECTED) { return; } oia_kybdlock = K_NOT_CONNECTED; status_lock(NewString(OiaLockNotConnected)); } else if (kybdlock & KL_ENTER_INHIBIT) { if (oia_kybdlock == K_INHIBIT) { return; } oia_kybdlock = K_INHIBIT; status_lock(NewString(OiaLockInhibit)); } else if (kybdlock & KL_DEFERRED_UNLOCK) { if (oia_kybdlock == K_DEFERRED) { return; } oia_kybdlock = K_DEFERRED; status_lock(NewString(OiaLockDeferred)); } else if (kybdlock & KL_AWAITING_FIRST) { if (oia_kybdlock == K_FIELD) { return; } oia_kybdlock = K_FIELD; status_lock(NewString(OiaLockField)); } else { status_untiming(); if (oia_kybdlock == K_NONE) { return; } oia_kybdlock = K_NONE; status_lock(NULL); } } void status_reverse_mode(bool on) { static bool is_on = false; if (on == is_on) { return; } is_on = on; ui_vleaf(IndOia, AttrField, OiaReverseInput, AttrValue, ValTrueFalse(on), NULL); } void status_screentrace(int n) { ui_vleaf(IndOia, AttrField, OiaScreentrace, AttrValue, (n >= 0)? lazyaf("%d", n): NULL, NULL); } void status_script(bool on) { static bool is_on = false; if (on == is_on) { return; } is_on = on; ui_vleaf(IndOia, AttrField, OiaScript, AttrValue, ValTrueFalse(on), NULL); } void status_scrolled(int n) { if (n != 0) { if (scrolled && scroll_n == n) { return; } scrolled = true; scroll_n = n; if (!flashing) { ui_vleaf(IndOia, AttrField, OiaLock, AttrValue, lazyaf(OiaLockScrolled " %d", n), NULL); } } else { if (!scrolled) { return; } scrolled = false; scroll_n = -1; if (!flashing) { ui_vleaf(IndOia, AttrField, OiaLock, AttrValue, saved_lock, NULL); } } } /* A keyboard disable flash is done. */ static void flash_done(ioid_t id _is_unused) { flashing = false; flashing_id = NULL_IOID; if (scrolled) { int n = scroll_n; /* Restore the scroll message. */ scroll_n = -1; status_scrolled(n); } else { /* Restore the lock message. */ ui_vleaf(IndOia, AttrField, OiaLock, AttrValue, saved_lock, NULL); } } void status_keyboard_disable_flash(void) { if (!flashing) { ui_vleaf(IndOia, AttrField, OiaLock, AttrValue, OiaLockDisabled, NULL); } flashing = true; if (flashing_id != NULL_IOID) { RemoveTimeOut(flashing_id); } flashing_id = AddTimeOut(FLASH_MSEC, flash_done); } void status_syswait(void) { if (oia_kybdlock == K_SYSWAIT) { return; } oia_kybdlock = K_SYSWAIT; status_lock(NewString(OiaLockSyswait)); } static bool is_timed = false; void status_timing(struct timeval *t0, struct timeval *t1) { unsigned long cs; is_timed = true; cs = (t1->tv_sec - t0->tv_sec) * 10 + (t1->tv_usec - t0->tv_usec + 50000) / 100000; ui_vleaf(IndOia, AttrField, OiaTiming, AttrValue, lazyaf("%lu.%lu", cs / 10, cs % 10), NULL); } void status_untiming(void) { if (!is_timed) { return; } is_timed = false; ui_vleaf(IndOia, AttrField, OiaTiming, NULL); } void status_twait(void) { if (oia_kybdlock == K_TWAIT) { return; } oia_kybdlock = K_TWAIT; oia_undera = false; ui_vleaf(IndOia, AttrField, OiaNotUndera, AttrValue, ValTrue, NULL); status_lock(NewString(OiaLockTwait)); } void status_typeahead(bool on _is_unused) { static bool is_on = false; if (on == is_on) { return; } is_on = on; ui_vleaf(IndOia, AttrField, OiaTypeahead, AttrValue, ValTrueFalse(on), NULL); } suite3270-4.1/Common/b3270/ui_stream.c000066400000000000000000000526741413735575200171760ustar00rootroot00000000000000/* * Copyright (c) 2016-2020 Paul Mattes. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the names of Paul Mattes, Jeff Sparkes, GTRC nor their * contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO * EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * ui_stream.c * A GUI back-end for a 3270 Terminal Emulator * GUI data stream generation. */ #include "globals.h" #if !defined(_WIN32) /*[*/ # include # include # include # include #endif /*]*/ #include #include #include "actions.h" #include "appres.h" #include "3270ds.h" #include "b3270proto.h" #include "bind-opt.h" #include "b_password.h" #include "lazya.h" #include "popups.h" #include "resources.h" #include "screen.h" #include "task.h" #include "trace.h" #include "utils.h" #include "xio.h" #if defined(_WIN32) /*[*/ # include "w3misc.h" #endif /*]*/ #include "ui_stream.h" #define BOM_SIZE 3 #define INBUF_SIZE 8192 #if defined(_WIN32) /*[*/ static HANDLE peer_thread; static HANDLE peer_enable_event, peer_done_event; static char peer_buf[INBUF_SIZE]; int peer_nr; int peer_errno; #endif /*]*/ /* XML container stack. */ typedef struct _ui_container { struct _ui_container *next; char *name; } ui_container_t; static ui_container_t *ui_container; static int ui_depth; static XML_Parser parser; int input_nest = 0; /* Action state. */ typedef struct { char *tag; char *result; } ui_action_t; /* Callback blocks. */ static void ui_action_data(task_cbh handle, const char *buf, size_t len, bool success); static bool ui_action_done(task_cbh handle, bool success, bool abort); static tcb_t cb_keymap = { "ui", IA_KEYMAP, CB_UI | CB_NEW_TASKQ, ui_action_data, ui_action_done, NULL }; static tcb_t cb_macro = { "ui", IA_MACRO, CB_UI | CB_NEW_TASKQ, ui_action_data, ui_action_done, NULL }; static tcb_t cb_command = { "ui", IA_COMMAND, CB_UI | CB_NEW_TASKQ, ui_action_data, ui_action_done, NULL }; static tcb_t cb_keypad = { "ui", IA_KEYPAD, CB_UI | CB_NEW_TASKQ, ui_action_data, ui_action_done, NULL }; static tcb_t cb_ui = { "ui", IA_UI, CB_UI | CB_NEW_TASKQ, ui_action_data, ui_action_done, NULL }; static socket_t ui_socket = INVALID_SOCKET; /* Write to the UI socket. */ static void uprintf(const char *fmt, ...) { va_list ap; char *s; static bool eol = true; ssize_t nw; va_start(ap, fmt); s = xs_vbuffer(fmt, ap); va_end(ap); if (ui_socket != INVALID_SOCKET) { nw = send(ui_socket, s, strlen(s), 0); } else { nw = write(fileno(stdout), s, strlen(s)); } if (eol) { vtrace("ui> "); eol = false; } vtrace("%s", s); if (strlen(s) > 0 && s[strlen(s) - 1] == '\n') { eol = true; } Free(s); if (nw < 0) { vtrace("UI write failure: %s\n", #if defined(_WIN32) /*[*/ (ui_socket != INVALID_SOCKET)? win32_strerror(GetLastError()): #endif /*]*/ strerror(errno)); x3270_exit(1); } } /* Dump a string in HTML quoted format, if needed. */ static void xml_safe(const char *value) { char s; while ((s = *value++)) { unsigned char c = s; if ((c & 0x80) && (c < 0x86 || c > 0x9f)) { /* UTF-8 upper. */ uprintf("%c", c); } else if (c >= ' ' && c != 0x7f) { /* Printable, but might need quoting. */ switch (c) { case '<': uprintf("<"); break; case '>': uprintf(">"); break; case '"': uprintf("""); break; case '&': uprintf("&"); break; case '\'': uprintf("'"); break; default: uprintf("%c", c); break; } } else { /* * Not printable. XML 1.0 understands tabs, newlines and carriage * returns, and that's about it. */ switch (c) { case 9: case 10: case 13: uprintf("&#%u;", c); break; default: uprintf(" "); break; } } } } /* * Generate a GUI object, either leaf or container. * The name is followed by a NULL-terminated list of tags and values. */ static void ui_object(bool leaf, const char *name, const char *args[]) { const char *tag; int i = 0; uprintf("%*s<%s", ui_depth, "", name); while ((tag = args[i++]) != NULL) { const char *value = args[i++]; uprintf(" %s=\"", tag); xml_safe(value); uprintf("\""); } uprintf("%s>\n", leaf? "/": ""); } /* * Generate a GUI object, either leaf or container. * The name is followed by a NULL-terminated list of tags and values. */ static void ui_vobject(bool leaf, const char *name, va_list ap) { const char *tag; uprintf("%*s<%s", ui_depth, "", name); while ((tag = va_arg(ap, const char *)) != NULL) { const char *value = va_arg(ap, const char *); if (value) { uprintf(" %s=\"", tag); xml_safe(value); uprintf("\""); } } uprintf("%s>\n", leaf? "/": ""); } /* * Generate a GUI leaf object. */ void ui_leaf(const char *name, const char *args[]) { ui_object(true, name, args); } /* * Generate a GUI leaf object. * The name is followed by a NULL-terminated list of tags and values. */ void ui_vleaf(const char *name, ...) { va_list ap; va_start(ap, name); ui_vobject(true, name, ap); va_end(ap); } /* Remember a container name. */ static void push_name(const char *name) { ui_container_t *g; g = Malloc(sizeof(ui_container_t) + strlen(name) + 1); g->name = (char *)(g + 1); strcpy(g->name, name); g->next = ui_container; ui_container = g; ui_depth++; } /* * Start a container object. */ void ui_push(const char *name, const char *args[]) { /* Output the start of the object. */ ui_object(false, name, args); /* Remember the name. */ push_name(name); } /* * Start a container object. * The name is followed by a NULL-terminated list of tags and values. */ void ui_vpush(const char *name, ...) { va_list ap; /* Output the start of the object. */ va_start(ap, name); ui_vobject(false, name, ap); va_end(ap); /* Remember the name. */ push_name(name); } /* * End a container object. */ void ui_pop(void) { ui_container_t *g = ui_container; ui_depth--; uprintf("%*s\n", ui_depth, "", g->name); ui_container = g->next; Free(g); } /* Data callback. */ static void ui_action_data(task_cbh handle, const char *buf, size_t len, bool success) { ui_action_t *uia = (ui_action_t *)handle; if (uia->result) { uia->result = Realloc(uia->result, strlen(uia->result) + 1 + len + 1); sprintf(strchr(uia->result, '\0'), "\n%.*s", (int)len, buf); } else { uia->result = xs_buffer("%.*s", (int)len, buf); } } /* Completion callback. */ static bool ui_action_done(task_cbh handle, bool success, bool abort) { ui_action_t *uia = (ui_action_t *)handle; unsigned long msec = task_cb_msec(handle); /* * Repaint the screen, so the effect of the action can be seen before * we indicate that the action is complete. */ screen_disp(false); ui_vleaf(IndRunResult, AttrRTag, uia->tag, AttrSuccess, ValTrueFalse(success), AttrText, uia->result, AttrAbort, abort? ValTrue: NULL, AttrTime, lazyaf("%ld.%03ld", msec / 1000L, msec % 1000L), NULL); Replace(uia->result, NULL); Free(uia); return true; } /* Emit a warning about an unknown attribute. */ static void ui_unknown_attribute(const char *element, const char *attribute) { ui_vleaf(IndUiError, AttrFatal, ValFalse, AttrText, "unknown attribute", AttrElement, element, AttrAttribute, attribute, AttrLine, lazyaf("%d", XML_GetCurrentLineNumber(parser)), AttrColumn, lazyaf("%d", XML_GetCurrentColumnNumber(parser)), NULL); } /* Emit a warning about a missing attribute. */ static void ui_missing_attribute(const char *element, const char *attribute) { ui_vleaf(IndUiError, AttrFatal, ValFalse, AttrText, "missing attribute", AttrElement, element, AttrAttribute, attribute, AttrLine, lazyaf("%d", XML_GetCurrentLineNumber(parser)), AttrColumn, lazyaf("%d", XML_GetCurrentColumnNumber(parser)), NULL); } /* Execute the 'run' command. */ static void do_run(const char *cmd, const char **attrs) { const char *type = NULL; const char *tag = NULL; const char *command = NULL; int i; ui_action_t *uia; tcb_t *tcb; for (i = 0; attrs[i] != NULL; i += 2) { if (!strcasecmp(attrs[i], AttrType)) { type = attrs[i + 1]; } else if (!strcasecmp(attrs[i], AttrRTag)) { tag = attrs[i + 1]; } else if (!strcasecmp(attrs[i], AttrActions)) { command = attrs[i + 1]; } else { ui_unknown_attribute(OperRun, attrs[i]); } } if (command == NULL) { ui_missing_attribute(OperRun, AttrActions); return; } /* Run the command. */ uia = (ui_action_t *)Malloc(sizeof(ui_action_t) + (tag? (strlen(tag) + 1): 0)); uia->tag = tag? (char *)(uia + 1): NULL; if (tag) { strcpy(uia->tag, tag); } uia->result = NULL; if (type != NULL && !strcasecmp(type, "keymap")) { tcb = &cb_keymap; } else if (type != NULL && !strcasecmp(type, "command")) { tcb = &cb_command; } else if (type != NULL && !strcasecmp(type, "macro")) { tcb = &cb_macro; } else if (type != NULL && !strcasecmp(type, "keypad")) { tcb = &cb_keypad; } else { tcb = &cb_ui; } push_cb(command, strlen(command), tcb, (task_cbh)uia); } /* The (dummy) action for pass-through actions. */ static bool Passthru_action(ia_t ia, unsigned argc, const char **argv) { const char **args = (const char **)Malloc((5 + (argc * 2) + 1) * sizeof(char *)); unsigned in_ix = 0; int out_ix = 0; const char *passthru_tag; task_cbh *ret_cbh = NULL; /* Mark this action as waiting for a pass-through response. */ passthru_tag = task_set_passthru(&ret_cbh); /* Tell the UI we are waiting. */ args[out_ix++] = AttrAction; args[out_ix++] = current_action_name; args[out_ix++] = AttrPTag; args[out_ix++] = passthru_tag; if (ret_cbh != NULL) { ui_action_t *uia = (ui_action_t *)ret_cbh; if (uia->tag) { args[out_ix++] = AttrParentRTag; args[out_ix++] = uia->tag; } } for (in_ix = 0; in_ix < argc; in_ix++) { args[out_ix++] = lazyaf(AttrArg "%d", in_ix + 1); args[out_ix++] = argv[in_ix]; } args[out_ix] = NULL; ui_object(true, IndPassthru, args); return true; } /* Register a command. */ static void do_register(const char *cmd, const char **attrs) { const char *name = NULL; const char *help_text = NULL; const char *help_parms = NULL; int i; size_t j; action_table_t *a; for (i = 0; attrs[i] != NULL; i += 2) { if (!strcasecmp(attrs[i], AttrName)) { name = attrs[i + 1]; } else if (!strcasecmp(attrs[i], AttrHelpText)) { help_text = attrs[i + 1]; } else if (!strcasecmp(attrs[i], AttrHelpParms)) { help_parms = attrs[i + 1]; } else { ui_unknown_attribute(OperRegister, attrs[i]); } } if (name == NULL) { ui_missing_attribute(OperRegister, AttrName); return; } for (j = 0; name[j]; j++) { if (!isprint((unsigned char)name[j])) { ui_vleaf(IndUiError, AttrFatal, ValFalse, AttrText, "invalid name", AttrElement, OperRegister, AttrLine, lazyaf("%d", XML_GetCurrentLineNumber(parser)), AttrColumn, lazyaf("%d", XML_GetCurrentColumnNumber(parser)), NULL); return; } } a = (action_table_t *)Malloc(sizeof(action_table_t)); memset(a, 0, sizeof(action_table_t)); a[0].name = NewString(name); a[0].action = Passthru_action; a[0].flags = ACTION_KE; a[0].help_flags = 0; a[0].help_parms = help_parms? NewString(help_parms): NULL; a[0].help_text = help_text? NewString(help_text): NULL; a[0].ia_restrict = password_ia_restrict(name); register_actions(a, 1); } /* Complete a pass-through command. */ void do_passthru_complete(bool success, const char *cmd, const char **attrs) { const char *tag = NULL; const char *text = NULL; int i; for (i = 0; attrs[i] != NULL; i += 2) { if (!strcasecmp(AttrPTag, attrs[i])) { tag = attrs[i + 1]; } else if (!strcasecmp(AttrText, attrs[i])) { text = attrs[i + 1]; } else { ui_unknown_attribute(cmd, attrs[i]); } } if (tag == NULL) { ui_missing_attribute(cmd, AttrPTag); return; } if (!success && text == NULL) { ui_missing_attribute(cmd, AttrText); return; } /* Succeed. */ task_passthru_done(tag, success, text); } /* UI input processor. */ static void process_input(const char *buf, ssize_t nr) { if (XML_Parse(parser, buf, nr, 0) == 0) { ui_vleaf(IndUiError, AttrFatal, ValTrue, AttrText, xs_buffer("XML parsing error: %s", XML_ErrorString(XML_GetErrorCode(parser))), AttrLine, lazyaf("%d", XML_GetCurrentLineNumber(parser)), AttrColumn, lazyaf("%d", XML_GetCurrentColumnNumber(parser)), NULL); fprintf(stderr, "Fatal XML parsing error: %s\n", XML_ErrorString(XML_GetErrorCode(parser))); x3270_exit(1); } } /* UI input-ready function. */ static void ui_input(iosrc_t fd _is_unused, ioid_t id _is_unused) { ssize_t nr; char buf[INBUF_SIZE]; ssize_t nc; static ssize_t bom_count = 0; static char bom_read[BOM_SIZE]; static unsigned char bom_value[BOM_SIZE] = { 0xef, 0xbb, 0xbf }; /* Read the data. */ if (ui_socket != INVALID_SOCKET) { nr = recv(ui_socket, buf, INBUF_SIZE, 0); } else { #if !defined(_WIN32) /*[*/ nr = read(fileno(stdin), buf, INBUF_SIZE); #else /*][*/ nr = peer_nr; peer_nr = 0; if (nr < 0) { errno = peer_errno; } else { memcpy(buf, peer_buf, nr); SetEvent(peer_enable_event); } #endif /*]*/ } if (nr < 0) { #if !defined(_WIN32) /*[*/ popup_an_errno(errno, "UI input"); #else /*][*/ popup_an_error("UI input: %s\n", win32_strerror(GetLastError())); #endif /*]*/ fprintf(stderr, "UI read error\n"); x3270_exit(1); } if (nr == 0) { vtrace("UI input EOF, exiting\n"); if (input_nest) { ui_vleaf(IndUiError, AttrFatal, ValFalse, AttrText, "unclosed elements", AttrCount, lazyaf("%d", input_nest), AttrLine, lazyaf("%d", XML_GetCurrentLineNumber(parser)), AttrColumn, lazyaf("%d", XML_GetCurrentColumnNumber(parser)), NULL); } x3270_exit(0); } /* Trace it, skipping any initial newline. */ { int nrd = (int)nr; char *bufd = buf; if (bufd[0] == '\r') { nrd--; bufd++; } if (nrd > 0 && bufd[0] == '\n') { nrd--; bufd++; } vtrace("ui< %.*s", nrd, bufd); if (nrd == 0 || bufd[nrd - 1] != '\n') { vtrace("\n"); } } /* If we're past the BOM, process directly. */ if (bom_count >= BOM_SIZE) { process_input(buf, nr); return; } /* Copy into the bom_read buffer. */ nc = BOM_SIZE - bom_count; if (nc > nr) { nc = nr; } memcpy(bom_read + bom_count, buf, nc); bom_count += nc; /* * Check for a match. If not, process the (wrong) BOM, then whatever * else we read. */ if (memcmp(bom_read, bom_value, bom_count)) { /* No match. Process the mistaken BOM as regular input. */ process_input(bom_read, bom_count); /* No more BOM processing. */ bom_count = BOM_SIZE; } else { /* It matched so far. */ if (bom_count < BOM_SIZE) { /* But we're not done. */ return; } } /* Process what we read past the BOM. */ if (nr > nc) { process_input(buf + nc, nr - nc); } } #if defined(_WIN32) /*[*/ /* stdin input thread */ static DWORD WINAPI peer_read(LPVOID lpParameter _is_unused) { for (;;) { DWORD rv; rv = WaitForSingleObject(peer_enable_event, INFINITE); switch (rv) { case WAIT_ABANDONED: case WAIT_TIMEOUT: case WAIT_FAILED: peer_nr = -1; peer_errno = EINVAL; SetEvent(peer_done_event); break; case WAIT_OBJECT_0: peer_nr = read(0, peer_buf, sizeof(peer_buf)); if (peer_nr < 0) { peer_errno = errno; } SetEvent(peer_done_event); break; } } return 0; } #endif /*]*/ /** * Clean up the UI socket when exiting. * * @param[in] ignored */ static void ui_exiting(bool ignored) { while (ui_container) { ui_pop(); } } /** * XML start handler. */ static void xml_start(void *userData _is_unused, const XML_Char *name, const XML_Char **atts) { input_nest++; if (input_nest > 2) { ui_vleaf(IndUiError, AttrFatal, ValFalse, AttrText, "invalid nested element", AttrElement, name, AttrLine, lazyaf("%d", XML_GetCurrentLineNumber(parser)), AttrColumn, lazyaf("%d", XML_GetCurrentColumnNumber(parser)), NULL); return; } if (input_nest == 1) { int i; if (strcasecmp(name, DocIn)) { ui_vleaf(IndUiError, AttrFatal, ValTrue, AttrText, "unexpected document element (want " DocIn ")", AttrElement, name, AttrLine, lazyaf("%d", XML_GetCurrentLineNumber(parser)), AttrColumn, lazyaf("%d", XML_GetCurrentColumnNumber(parser)), NULL); fprintf(stderr, "UI document element error\n"); x3270_exit(1); } for (i = 0; atts[i] != NULL; i += 2) { ui_unknown_attribute(DocIn, atts[i]); } return; } if (!strcasecmp(name, OperRun)) { do_run(name, atts); } else if (!strcasecmp(name, OperRegister)) { do_register(name, atts); } else if (!strcasecmp(name, OperSucceed)) { do_passthru_complete(true, name, atts); } else if (!strcasecmp(name, OperFail)) { do_passthru_complete(false, name, atts); } else { ui_vleaf(IndUiError, AttrFatal, ValFalse, AttrText, "unrecognized element", AttrElement, name, AttrLine, lazyaf("%d", XML_GetCurrentLineNumber(parser)), AttrColumn, lazyaf("%d", XML_GetCurrentColumnNumber(parser)), NULL); } } /** * XML end handler. */ static void xml_end(void *userData _is_unused, const XML_Char *name) { if (!--input_nest) { x3270_exit(0); } } /** * XML plain data handler. */ static void xml_data(void *userData _is_unused, const XML_Char *s, int len) { bool nonwhite = false; int i; for (i = 0; i < len; i++) { if (!isspace((unsigned char)s[i])) { nonwhite = true; break; } } if (!nonwhite) { return; } ui_vleaf(IndUiError, AttrFatal, ValFalse, AttrText, "ignoring plain text", AttrLine, lazyaf("%d", XML_GetCurrentLineNumber(parser)), AttrColumn, lazyaf("%d", XML_GetCurrentColumnNumber(parser)), AttrCount, lazyaf("%d", len), NULL); } /** * Initialize the UI socket. * * @param[in] sa address and port to listen on * @param[in] sa_len length of sa */ void ui_io_init() { /* See if we need to call out or use stdin/stdout. */ if (appres.scripting.callback != NULL) { struct sockaddr *sa; socklen_t sa_len; if (!parse_bind_opt(appres.scripting.callback, &sa, &sa_len)) { Error("Cannot parse " ResCallback); } if ((ui_socket = socket(sa->sa_family, SOCK_STREAM, 0)) == INVALID_SOCKET) { #if !defined(_WIN32) /*[*/ perror("socket"); #else /*][*/ fprintf(stderr, "socket: %s\n", win32_strerror(WSAGetLastError())); fflush(stdout); #endif /*]*/ exit(1); } if (connect(ui_socket, sa, sa_len) < 0) { #if !defined(_WIN32) /*[*/ perror("connect"); #else /*][*/ fprintf(stderr, "connect: %s\n", win32_strerror(WSAGetLastError())); fflush(stdout); #endif /*]*/ exit(1); } } /* Create the XML parser. */ parser = XML_ParserCreate("UTF-8"); if (parser == NULL) { Error("Cannot create XML parser"); } XML_SetElementHandler(parser, xml_start, xml_end); XML_SetCharacterDataHandler(parser, xml_data); #if !defined(_WIN32) /*[*/ AddInput((ui_socket != INVALID_SOCKET)? ui_socket: fileno(stdin), ui_input); #else /*][*/ /* Set up the peer thread. */ if (ui_socket != INVALID_SOCKET) { AddInput(CreateEvent(NULL, FALSE, FALSE, NULL), ui_input); } else { peer_enable_event = CreateEvent(NULL, FALSE, FALSE, NULL); peer_done_event = CreateEvent(NULL, FALSE, FALSE, NULL); peer_thread = CreateThread(NULL, 0, peer_read, NULL, 0, NULL); if (peer_thread == NULL) { popup_an_error("Cannot create peer script thread: %s\n", win32_strerror(GetLastError())); } SetEvent(peer_enable_event); AddInput(peer_done_event, ui_input); } #endif /*]*/ /* Start the XML stream. */ uprintf("%c%c%c\n", 0xef, 0xbb, 0xbf); ui_vpush(DocOut, NULL); /* Set up a handler for exit. */ register_schange_ordered(ST_EXITING, ui_exiting, ORDER_LAST); } suite3270-4.1/Common/b8.c000066400000000000000000000056151413735575200147530ustar00rootroot00000000000000/* * Copyright (c) 2014-2015 Paul Mattes. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the names of Paul Mattes, Don Russell, Jeff Sparkes, GTRC * nor their contributors may be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO * EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * b8.c * 256-bit bitmap manipulation functions. */ #include "globals.h" #include #include "b8.h" /* Zero a bitmap. */ void b8_zero(b8_t *b) { int i; for (i = 0; i < NU8; i++) { b->u[i] = 0; } } /* 1's complement a bitmap. */ void b8_not(b8_t *b) { int i; for (i = 0; i < NU8; i++) { b->u[i] = ~b->u[i]; } } /* AND two objects. */ void b8_and(b8_t *r, b8_t *a, b8_t *b) { int i; for (i = 0; i < NU8; i++) { r->u[i] = a->u[i] & b->u[i]; } } /* Set a bit in a bitmap. */ void b8_set_bit(b8_t *b, unsigned bit) { if (bit < MX8) { b->u[bit / NB8] |= (uint64_t)1 << (bit % NB8); } } /* Test a bit in a bitmap. */ bool b8_bit_is_set(b8_t *b, unsigned bit) { if (bit < MX8) { return (b->u[bit / NB8] & ((uint64_t)1 << (bit % NB8))) != 0; } else { return false; } } /* Test a bitmap for all zeroes. */ bool b8_is_zero(b8_t *b) { int i; for (i = 0; i < NU8; i++) { if (b->u[i]) { return false; } } return true; } /* Copy one bitmap to another. */ void b8_copy(b8_t *to, b8_t *from) { *to = *from; /* struct copy */ } /* Check for bits added to a bitmap. */ bool b8_none_added(b8_t *want, b8_t *got) { b8_t t; /* * The basic arithmetic is: * !(got & ~want) */ b8_copy(&t, want); b8_not(&t); b8_and(&t, got, &t); return b8_is_zero(&t); } suite3270-4.1/Common/base64.c000066400000000000000000000116751413735575200155310ustar00rootroot00000000000000/* * Copyright (c) 2018 Paul Mattes. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the names of Paul Mattes nor the names of his contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO * EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * base64.c * Base64 encoding. */ #include "globals.h" #include "base64.h" #define BITS_PER_BYTE 8 #define BITS_PER_BASE64 6 #define MASK64 0x3f #define MASK256 0xff #define PAD_BITS 2 #define MAX_PAD 2 #define BYTES_PER_BLOCK 3 /* The output alphabet. */ static char *alphabet64 = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; /* * Encode a string in base64. * * Returns a malloc'd buffer. */ char * base64_encode(const char *s) { /* * We need one output character for every 6 bits of input, plus up to two * padding characters, plus a terminaing NUL. */ size_t nmalloc = (((strlen(s) * BITS_PER_BYTE) + (BITS_PER_BASE64 - 1)) / BITS_PER_BASE64) + MAX_PAD + 1; char *ret = Malloc(nmalloc); char *op = ret; char c; unsigned accum = 0; /* overflow bits */ int held_bits = 0; /* number of significant bits in 'accum' */ bool done = false; while (!done) { int i; unsigned over; unsigned pad_bits = 0; /* Get the next 3 octets. */ for (i = 0; i < BYTES_PER_BLOCK; i++) { if (!(c = *s++)) { done = true; break; } accum = (accum << BITS_PER_BYTE) | (unsigned char)c; held_bits += BITS_PER_BYTE; } /* Pad to an even multiple of 6. */ over = held_bits % BITS_PER_BASE64; if (over != 0) { pad_bits = BITS_PER_BASE64 - over; } accum <<= pad_bits; held_bits += pad_bits; /* Emit the base64. */ while (held_bits > 0) { *op++ = alphabet64[(accum >> BITS_PER_BASE64 * ((held_bits / BITS_PER_BASE64) - 1)) & MASK64]; held_bits -= BITS_PER_BASE64; } /* Emit padding indicators. */ while (pad_bits >= PAD_BITS) { *op++ = '='; pad_bits -= PAD_BITS; } /* Go around again. */ accum = 0; held_bits = 0; } *op = '\0'; return ret; } /* * Decode a base64 string. * * Returns a malloc'd buffer. */ char * base64_decode(const char *s) { /* Do a little overkill on the decode buffer. */ char *ret = Malloc(strlen(s) + 1); char *op = ret; char c; unsigned accum = 0; unsigned accum_bits = 0; int eq = 0; while ((c = *s++)) { if (c == '=') { /* Each '=' is 2 bits of padding. */ eq++; accum <<= PAD_BITS; accum_bits += PAD_BITS; } else { char *ix = strchr(alphabet64, c); if (eq > 0 || ix == NULL) { /* * Nothing can follow '=', and anything else needs to be in the * alphabet. */ Free(ret); return NULL; } accum = (accum << BITS_PER_BASE64) | (ix - alphabet64); accum_bits += BITS_PER_BASE64; } while (accum_bits >= BITS_PER_BYTE) { *op++ = (accum >> (accum_bits % BITS_PER_BYTE)) & MASK256; accum &= ~(MASK256 << (accum_bits % BITS_PER_BYTE)); accum_bits -= BITS_PER_BYTE; } if (eq > MAX_PAD) { /* No more than 2 '='. */ Free(ret); return NULL; } } *op = '\0'; return ret; } #if defined UNIT_TEST /*[*/ #include void * Malloc(size_t n) { return malloc(n); } void Free(void *buf) { free(buf); } int main(int argc, char *argv[]) { char *s[] = { "foobar", "x", "xy", "xyz", "abcãd", "username:password", "Bzz Bzz Bzz", NULL }; int i; for (i = 0; s[i] != NULL; i++) { char *b = base64_encode(s[i]); char *e = base64_decode(b); printf("'%s' -> '%s' -> '%s'\n", s[i], b, e); assert (!strcmp(s[i], e)); } assert(base64_decode("a=b") == NULL); assert(base64_decode("a===") == NULL); assert(base64_decode("[") == NULL); return 0; } #endif /*]*/ suite3270-4.1/Common/bind-opt.c000066400000000000000000000134241413735575200161530ustar00rootroot00000000000000/* * Copyright (c) 2014-2015, 2018-2019 Paul Mattes. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the names of Paul Mattes nor the names of his contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO * EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * bind-opt.c * Option parsing for -scriptport and -httpd. */ #include "globals.h" #include #include #if !defined(_WIN32) /*[*/ # include # include #endif /*]*/ #include "wincmn.h" #include "resolver.h" #include "utils.h" #include "bind-opt.h" typedef union { struct sockaddr_in v4; #if defined(X3270_IPV6) /*[*/ struct sockaddr_in6 v6; #endif /*]*/ } sau_t; /** * Parse a bind option for -httpd or -scriptport. * * Syntax: * or : * implies 127.0.0.1 * : * *: * implies 0.0.0.0 * []: * * So, to bind to INADDR_ANY, port 4080, specify: * *:4080 * or * 0.0.0.0:4080 * To bind to the same thing in IPv6, specify: * [::]:4080 * To bind to the IPv6 loopback address, specify: * [::1]:4080 * * It does not understand symbolic port names like 'telnet', and it does not * understand symbolic host names. * * @param[in] spec string to parse * @param[out] addr returned address * @param[out] addrlen returned length of address * * @return true if address parsed successfully, false otherwise */ bool parse_bind_opt(const char *spec, struct sockaddr **addr, socklen_t *addrlen) { size_t hlen; char *host_str; char *port_str; unsigned short port; rhp_t rv; int nr; /* Start with nothing. */ *addr = NULL; *addrlen = 0; if (spec == NULL || *spec == '\0') { return false; } /* Tease apart the syntax. */ if (spec[0] == '[') { char *rbrack = strchr(spec, ']'); /* We appear to have a hostname in square brackets. */ if (rbrack == NULL || rbrack == spec + 1 || *(rbrack + 1) != ':' || !*(rbrack + 2)) { return false; } hlen = rbrack - spec - 1; host_str = Malloc(hlen + 1); strncpy(host_str, spec + 1, hlen); host_str[hlen] = '\0'; port_str = Malloc(strlen(rbrack + 2) + 1); strcpy(port_str, rbrack + 2); } else { char *colon; /* No square brackets. Use the colon to split the address and port. */ colon = strchr(spec, ':'); if (colon == NULL) { /* Just a port. */ host_str = NewString("127.0.0.1"); port_str = NewString(spec); } else if (colon == spec) { /* Just a colon and a port. */ if (!*(colon + 1)) { return false; } host_str = NewString("127.0.0.1"); port_str = NewString(spec + 1); } else { /*
:. */ if (colon == NULL || colon == spec || !*(colon + 1)) { return false; } hlen = colon - spec; host_str = Malloc(hlen + 1); strncpy(host_str, spec, hlen); host_str[hlen] = '\0'; port_str = Malloc(strlen(colon + 1) + 1); strcpy(port_str, colon + 1); } } /* Translate '*'. */ if (!strcmp(host_str, "*")) { Free(host_str); host_str = NewString("0.0.0.0"); } /* Use the resolver to resolve the components we've split apart. */ *addr = Malloc(sizeof(sau_t)); rv = resolve_host_and_port(host_str, port_str, &port, *addr, sizeof(sau_t), addrlen, NULL, 1, &nr); Free(host_str); Free(port_str); if (RHP_IS_ERROR(rv)) { Free(*addr); *addr = NULL; return false; } return true; } /** * Return the canonical form of a bind option. * * @param[in] sa Sockaddr to encode * * @returns encoded address and port */ char * canonical_bind_opt(struct sockaddr *sa) { # define RET_LEN 128 char addrbuf[RET_LEN]; struct sockaddr_in *sin; struct sockaddr_in6 *sin6; switch (sa->sa_family) { case AF_INET: sin = (struct sockaddr_in *)sa; return xs_buffer("[%s]:%u", inet_ntop(sa->sa_family, &sin->sin_addr, addrbuf, RET_LEN), ntohs(sin->sin_port)); case AF_INET6: sin6 = (struct sockaddr_in6 *)sa; return xs_buffer("[%s]:%u", inet_ntop(sa->sa_family, &sin6->sin6_addr, addrbuf, RET_LEN), ntohs(sin6->sin6_port)); default: return NewString("unknown"); } } /** * Return the canonical form of a bind option, given a resource value. * * @param[in] res Resource value (might be NULL) * * @returns Canonical representation */ char * canonical_bind_opt_res(const char *res) { struct sockaddr *sa; socklen_t len; char *ret; if (res == NULL || !parse_bind_opt(res, &sa, &len)) { return NULL; } ret = canonical_bind_opt(sa); Free(sa); return ret; } suite3270-4.1/Common/boolstr.c000066400000000000000000000044101413735575200161160ustar00rootroot00000000000000/* * Copyright (c) 2018 Paul Mattes. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the names of Paul Mattes nor the names of his contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO * EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * boolstr.c * Boolean value parsing. */ #include "globals.h" #include "boolstr.h" /** * Parse a boolean string. * * @param[in] text String to parse. * @param[in] result Parsed value. * * @return NULL if parsed, error string if not */ const char * boolstr(const char *text, bool *result) { if (!strcasecmp(text, "true") || !strcasecmp(text, "t") || !strcasecmp(text, "set") || !strcasecmp(text, "on") || !strcasecmp(text, "1")) { *result = true; return NULL; } if (!strcasecmp(text, "false") || !strcasecmp(text, "f") || !strcasecmp(text, "clear") || !strcasecmp(text, "off") || !strcasecmp(text, "0")) { *result = false; return NULL; } return "value must be true or false"; } suite3270-4.1/Common/c3270/000077500000000000000000000000001413735575200150255ustar00rootroot00000000000000suite3270-4.1/Common/c3270/c3270.c000066400000000000000000001602671413735575200157430ustar00rootroot00000000000000/* * Copyright (c) 1993-2021 Paul Mattes. * Copyright (c) 1990, Jeff Sparkes. * Copyright (c) 1989, Georgia Tech Research Corporation (GTRC), Atlanta, GA * 30332. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the names of Paul Mattes, Jeff Sparkes, GTRC nor the names of * their contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES, JEFF SPARKES AND GTRC "AS IS" AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL PAUL MATTES, JEFF SPARKES OR GTRC BE * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. */ /* * c3270.c * A curses-based 3270 Terminal Emulator * A Windows console 3270 Terminal Emulator * Main proceudre. */ #include "globals.h" #if !defined(_WIN32) /*[*/ #include #include #include #endif /*]*/ #include #include #include #include "appres.h" #include "3270ds.h" #include "resources.h" #include "actions.h" #include "base64.h" #include "bind-opt.h" #include "boolstr.h" #include "codepage.h" #include "ckeypad.h" #include "cscreen.h" #include "cstatus.h" #include "ctlrc.h" #include "cmenubar.h" #include "unicodec.h" #include "ft.h" #include "glue.h" #include "glue_gui.h" #include "help.h" #include "host.h" #include "httpd-core.h" #include "httpd-nodes.h" #include "httpd-io.h" #include "icmdc.h" #include "idle.h" #include "keymap.h" #include "kybd.h" #include "lazya.h" #include "login_macro.h" #include "model.h" #include "names.h" #include "nvt.h" #include "opts.h" #include "popups.h" #include "pr3287_session.h" #include "print_screen.h" #include "product.h" #include "proxy_toggle.h" #include "query.h" #include "s3270_proto.h" #include "save_restore.h" #include "screen.h" #include "selectc.h" #include "sio_glue.h" #include "split_host.h" #include "status.h" #include "status_dump.h" #include "task.h" #include "telnet.h" #include "telnet_gui.h" #include "toggles.h" #include "trace.h" #include "screentrace.h" #include "utf8.h" #include "utils.h" #include "varbuf.h" #include "vstatus.h" #include "xio.h" #include "xpopen.h" #include "xscroll.h" #if defined(HAVE_LIBREADLINE) /*[*/ #include #if defined(HAVE_READLINE_HISTORY_H) /*[*/ #include #endif /*]*/ #endif /*]*/ #if defined(_WIN32) /*[*/ #include "relinkc.h" #include "w3misc.h" #include "wc3270.h" #include "windirs.h" #include "winvers.h" #endif /*]*/ #if defined(_WIN32) /*[*/ # define DELENV "WC3DEL" #endif /*]*/ #define PR3287_NAME "pr3287" #if !defined(_WIN32) /*[*/ # if defined(HAVE_LIBREADLINE) /*[*/ # define PROMPT_PRE xs_buffer("%c%s%c", '\001', \ screen_setaf(ACOLOR_BLUE), '\002') # define PROMPT_POST xs_buffer("%c%s%c", '\001', screen_op(), '\002') # else /*][*/ # define PROMPT_PRE screen_setaf(ACOLOR_BLUE) # define PROMPT_POST screen_op() # endif /*]*/ #else /*][*/ # define PROMPT_PRE "" # define PROMPT_POST "" #endif /*]*/ static void c3270_push_command(const char *s); static void interact(void); static void stop_pager(void); static void display_prompt(void); #if !defined(_WIN32) /*[*/ static bool merge_profile(void); #endif /*]*/ #if defined(HAVE_LIBREADLINE) /*[*/ static char **attempted_completion(); static char *completion_entry(const char *, int); static char *readline_command; static bool readline_done = false; #endif /*]*/ static bool color_prompt; /* Pager state. */ #if !defined(_WIN32) /*[*/ struct { FILE *fp; /* file pointer */ pid_t pid; /* process ID */ } pager = { NULL, 0 }; #else /*][*/ struct { int rows; /* current number of rows */ int cols; /* current number of colunns */ int rowcnt; /* number of rows displayed so far */ int nw; /* number of bytes written in the prompt */ char *residual; /* residual output */ bool flushing; /* true if 'q' selected and output is being discarded */ bool running; /* true if pager is active */ } pager = { 25, 80, 0, 0, NULL, false, false }; static void pager_key_done(void); static void pager_output(const char *s, bool success); #endif /*]*/ static bool any_error_output; static bool command_running = false; static bool command_output = false; static bool connect_once = false; #if !defined(_WIN32) /*[*/ # define PAGER_RUNNING (pager.pid != 0) #else /*][*/ # define PAGER_RUNNING (pager.residual != NULL) #endif /*][*/ #if !defined(_WIN32) /*[*/ static bool sigtstp_pending = false; static int signalpipe[2]; sigset_t pending_signals; static void synchronous_signal(iosrc_t fd, ioid_t id); static void common_handler(int signum); #else /*][*/ static void windows_sigint(iosrc_t fd, ioid_t id); static void windows_ctrlc(void); static HANDLE sigint_event; #endif /*]*/ static struct { char *string; /* current prompt text */ char *default_string; /* default prompt text */ bool displayed; } prompt = { NULL, NULL, false }; static char *error_pending = NULL; static bool exit_pending = false; static bool aux_input = false; static bool aux_pwinput = false; static void c3270_input(iosrc_t fd, ioid_t id); static ioid_t c3270_input_id = NULL_IOID; static task_cb_ir_state_t command_ir_state; #if defined(_WIN32) /*[*/ char *instdir = NULL; char *mydesktop = NULL; char *mydocs3270 = NULL; char *commondocs3270 = NULL; unsigned windirs_flags; static void start_auto_shortcut(int argc, char *argv[]); static struct { HANDLE thread; /* thread handle */ HANDLE enable_event; /* let the thread do a read */ HANDLE done_event; /* thread has read input */ enum imode { LINE, KEY } mode; /* input mode */ char buf[1024]; /* input buffer */ int nr; /* number of bytes read */ int error; /* error code */ } inthread; static DWORD WINAPI inthread_read(LPVOID lpParameter); # define PAGER_PROMPT "Press any key to continue . . . " #endif /*]*/ static bool glue_gui_xoutput(const char *s, bool success); static void command_setir(task_cbh handle, void *irhandle); static void *command_getir(task_cbh handle); static void command_setir_state(task_cbh handle, const char *name, void *state, ir_state_abort_cb abort_cb); static void *command_getir_state(task_cbh handle, const char *name); static void *command_irhandle; static irv_t command_irv = { command_setir, command_getir, command_setir_state, command_getir_state }; static void command_data(task_cbh handle, const char *buf, size_t len, bool success); static bool command_done(task_cbh handle, bool success, bool abort); static unsigned command_getflags(task_cbh handle); static void command_reqinput(task_cbh handle, const char *buf, size_t len, bool echo); /* Callback block for actions. */ static tcb_t command_cb = { "command", IA_COMMAND, CB_NEW_TASKQ, command_data, command_done, NULL, NULL, NULL, command_getflags, &command_irv, NULL, command_reqinput }; static void c3270_register(void); void usage(const char *msg) { if (msg != NULL) { fprintf(stderr, "%s\n", msg); } fprintf(stderr, "Usage: %s [options] [prefix:][LUname@]hostname[:port]\n", programname); fprintf(stderr, "Use " OptHelp1 " for the list of options\n"); exit(1); } /** * Wrapper for screen_suspend() that fixes up signal handling. */ static bool c3270_screen_suspend(void) { bool needed = screen_suspend(); if (needed) { #if !defined(_WIN32) /*[*/ /* screen_init/screen_resume reset these. */ signal(SIGINT, common_handler); signal(SIGTSTP, common_handler); #endif /*]*/ } return needed; } /* Make sure error messages are seen. */ static void pause_for_errors(void) { char s[10]; if (any_error_output) { c3270_screen_suspend(); printf("[Press ] "); fflush(stdout); if (fgets(s, sizeof(s), stdin) == NULL) { x3270_exit(1); } any_error_output = false; } } /* Callback for 3270-mode state changes. */ static void c3270_3270_mode(bool ignored) { if (x3270_exiting) { return; } if (CONNECTED || appres.disconnect_clear) { #if defined(C3270_80_132) /*[*/ if (appres.c3270.altscreen != NULL) { ctlr_erase(false); } else #endif /*]*/ { ctlr_erase(true); } } } /** * GUI redirect function for popup_an_error. * This handles asynchronous errors, such as file transfers that do not start * or abort. * * @param[in] s Text to display * @param[in] any_error true to set any_error_output * @returns true */ static bool glue_gui_error_cond(const char *s, bool set_any_error) { bool was_escaped = escaped; if (command_running || PAGER_RUNNING) { /* You can't interrupt a running command. */ if (error_pending != NULL) { char *xerror = xs_buffer("%s\n%s", error_pending, s); Replace(error_pending, xerror); } else { Replace(error_pending, NewString(s)); } return true; } if (!was_escaped) { c3270_screen_suspend(); } else { #if defined(_WIN32) /*[*/ /* * Send yourself an ESC to flush current input. * This needs to happen before displaying the text. */ screen_send_esc(); #endif /*]*/ } if (prompt.displayed) { printf("\n"); fflush(stdout); } #if !defined(_WIN32) /*[*/ printf("%s%s%s\n", color_prompt? screen_setaf(ACOLOR_RED): "", s, color_prompt? screen_op(): ""); #else /*][*/ screen_color(PC_ERROR); printf("%s", s); screen_color(PC_DEFAULT); printf("\n"); #endif /*]*/ fflush(stdout); if (set_any_error) { any_error_output = true; } if (was_escaped) { /* Interrupted the prompt. */ #if defined(HAVE_LIBREADLINE) /*[*/ /* Redisplay the prompt and any pending input. */ rl_forced_update_display(); #elif !defined(_WIN32) /*[*/ /* Discard any pending input. */ tcflush(0, TCIFLUSH); prompt.displayed = false; #else /*][*/ prompt.displayed = false; #endif /*]*/ } return true; } /* Callback for connection state changes. */ static void c3270_connect(bool ignored) { if (x3270_exiting) { return; } if (PCONNECTED) { macros_init(); } c3270_3270_mode(true); if (CONNECTED) { /* Clear the last 'Trying' text. */ status_push(NULL); return; } if (cstate == RESOLVING || cstate == TCP_PENDING) { return; } /* Not connected. */ if (!appres.secure && !PCONNECTED && !appres.interactive.reconnect) { glue_gui_error_cond("Disconnected.", false); } if (connect_once) { /* Exit after the connection is broken. */ if (command_running || PAGER_RUNNING) { /* Exit when the command and pager are complete. */ exit_pending = true; } else { /* Exit right now. */ screen_suspend(); #if !defined(_WIN32) /*[*/ if (prompt.displayed) { printf("\n"); fflush(stdout); } #else /*][*/ pause_for_errors(); #endif /*]*/ x3270_exit(0); } } } /* Callback for application exit. */ static void main_exiting(bool ignored) { if (escaped) { stop_pager(); #if defined(HAVE_LIBREADLINE) /*[*/ rl_callback_handler_remove(); #endif /*]*/ printf("\n"); } else { if (c3270_screen_suspend()) { screen_final(); } } } #if !defined(_WIN32) /*[*/ /* Empty SIGCHLD handler, ensuring that we can collect child exit status. */ static void sigchld_handler(int ignored) { #if !defined(_AIX) /*[*/ signal(SIGCHLD, sigchld_handler); #endif /*]*/ } #endif /*]*/ /** * Redirection for Warning. */ static void c3270_Warning(const char *s) { if (!escaped) { if (error_pending != NULL) { char *xerror = xs_buffer("%s\n%s", error_pending, s); Replace(error_pending, xerror); } else { Replace(error_pending, NewString(s)); } } else { fprintf(stderr, "Warning: %s\n", s); fflush(stderr); any_error_output = true; } } #if defined(_WIN32) /*[*/ /* * wc3270 version of Error, that makes sure the user has a chance to see the * error message before we close the window. */ static void c3270_Error(const char *s) { /* Dump the error on the console. */ fprintf(stderr, "Error: %s\n", s); fflush(stderr); /* Wait for the key, and then exit. */ x3270_exit(1); } /* Pause before exiting. */ static void exit_pause(bool mode _is_unused) { if (x3270_exit_code) { char buf[2]; printf("\n[Press ] "); fflush(stdout); fgets(buf, sizeof(buf), stdin); } } #endif /*]*/ int main(int argc, char *argv[]) { const char *cl_hostname = NULL; #if defined(_WIN32) /*[*/ char *delenv; int save_argc; char **save_argv; int i; #endif /*]*/ Warning_redirect = c3270_Warning; #if defined(_WIN32) /*[*/ /* Redirect Error() so we pause. */ Error_redirect = c3270_Error; /* Register a final exit function, so we pause. */ register_schange_ordered(ST_EXITING, exit_pause, ORDER_LAST); /* Get Windows version and directories. */ get_version_info(); if (!get_dirs("wc3270", &instdir, &mydesktop, NULL, NULL, NULL, NULL, NULL, &mydocs3270, &commondocs3270, &windirs_flags)) { x3270_exit(1); } /* Start Winsock. */ if (sockstart()) { x3270_exit(1); } #endif /*]*/ #if !defined(_WIN32) && !defined(CURSES_WIDE) /*[*/ /* Explicitly turn off DBCS if wide curses is not supported. */ dbcs_allowed = false; #endif /*]*/ /* * Call the module registration functions, to build up the tables of * actions, options and callbacks. */ c3270_register(); codepage_register(); ctlr_register(); ft_register(); help_register(); host_register(); icmd_register(); idle_register(); keymap_register(); keypad_register(); kybd_register(); task_register(); query_register(); menubar_register(); nvt_register(); pr3287_session_register(); print_screen_register(); save_restore_register(); #if defined(_WIN32) /*[*/ select_register(); #endif /*]*/ screen_register(); scroll_register(); toggles_register(); trace_register(); screentrace_register(); xio_register(); sio_glue_register(); hio_register(); proxy_register(); model_register(); net_register(); login_macro_register(); vstatus_register(); #if !defined(_WIN32) /*[*/ register_merge_profile(merge_profile); #endif #if defined(_WIN32) /*[*/ /* Save the command-line arguments for auto-shortcut mode. */ save_argc = argc; save_argv = (char **)Malloc((argc + 1) * sizeof(char *)); for (i = 0; i < argc; i++) { save_argv[i] = NewString(argv[i]); } save_argv[i] = NULL; #endif /*]*/ argc = parse_command_line(argc, (const char **)argv, &cl_hostname); printf("%s\n\nType 'show copyright' for full copyright information.\n\ Type 'help' for help information.\n\n", get_about()); #if defined(_WIN32) /*[*/ /* Delete the link file, if we've been told do. */ delenv = getenv(DELENV); if (delenv != NULL) { unlink(delenv); putenv(DELENV "="); } /* Check for auto-shortcut mode. */ if (appres.c3270.auto_shortcut) { start_auto_shortcut(save_argc, save_argv); exit(0); } #endif /*]*/ if (codepage_init(appres.codepage) != CS_OKAY) { xs_warning("Cannot find code page \"%s\"", appres.codepage); codepage_init(NULL); } model_init(); #if defined(HAVE_LIBREADLINE) /*[*/ /* Set up readline. */ rl_readline_name = "c3270"; rl_initialize(); rl_attempted_completion_function = attempted_completion; #if defined(RL_READLINE_VERSION) && (RL_READLINE_VERSION > 0x0402) /*[*/ rl_completion_entry_function = completion_entry; #else /*][*/ rl_completion_entry_function = (Function *)completion_entry; #endif /*]*/ #endif /*]*/ #if !defined(_WIN32) /*[*/ /* Set up the signal pipes. */ sigemptyset(&pending_signals); if (pipe(signalpipe) < 0) { perror("pipe"); exit(1); } fcntl(signalpipe[0], F_SETFD, 1); fcntl(signalpipe[1], F_SETFD, 1); AddInput(signalpipe[0], synchronous_signal); #else /*][*/ sigint_event = CreateEvent(NULL, FALSE, FALSE, NULL); AddInput(sigint_event, windows_sigint); screen_set_ctrlc_fn(windows_ctrlc); #endif /*]*/ /* Get the screen set up as early as possible. */ screen_init(); #if !defined(_WIN32) /*[*/ color_prompt = screen_has_ansi_color(); #endif /*]*/ if (appres.secure) { /* We don't allow a command line in secure mode. */ prompt.default_string = prompt.string = "[Press ] "; } else { prompt.default_string = prompt.string = color_prompt? xs_buffer("%s%s> %s", PROMPT_PRE, app, PROMPT_POST): xs_buffer("%s> ", app); } #if defined(_WIN32) /*[*/ /* Create a thread to read data from stdin. */ inthread.enable_event = CreateEvent(NULL, FALSE, FALSE, NULL); inthread.done_event = CreateEvent(NULL, FALSE, FALSE, NULL); inthread.thread = CreateThread(NULL, 0, inthread_read, NULL, 0, NULL); if (inthread.thread == NULL) { win32_perror("CreateThread failed"); exit(1); } c3270_input_id = AddInput(inthread.done_event, c3270_input); #endif /*]*/ idle_init(); keymap_init(); hostfile_init(); httpd_objects_init(); if (appres.httpd_port) { struct sockaddr *sa; socklen_t sa_len; if (!parse_bind_opt(appres.httpd_port, &sa, &sa_len)) { xs_warning("Invalid -httpd port \"%s\"", appres.httpd_port); } else { hio_init(sa, sa_len); } } ft_init(); #if !defined(_WIN32) /*[*/ /* Make sure we don't fall over any SIGPIPEs. */ signal(SIGPIPE, SIG_IGN); /* Make sure we can collect child exit status. */ signal(SIGCHLD, sigchld_handler); /* Handle run-time signals. */ signal(SIGINT, common_handler); signal(SIGTSTP, common_handler); #endif /*]*/ task_cb_init_ir_state(&command_ir_state); /* Handle initial toggle settings. */ initialize_toggles(); /* Set up the peer script. */ peer_script_init(); /* Set up macros. */ macros_init(); if (cl_hostname != NULL) { pause_for_errors(); /* Connect to the host. */ if (!appres.interactive.reconnect) { connect_once = true; } c3270_push_command(lazyaf(AnConnect "(\"%s\")", cl_hostname)); screen_resume(); } else { /* Drop to the prompt. */ if (!appres.secure) { interact(); } else { /* Blank screen. */ pause_for_errors(); screen_resume(); } } /* Process events forever. */ while (1) { /* Process some events. */ process_events(true); /* Update the screen. */ if (!escaped) { screen_disp(false); } /* * If an error popped up while initializing the screen, force an * escape. */ if (error_pending != NULL) { c3270_screen_suspend(); } /* Display the prompt. */ if (escaped && !prompt.displayed && !command_running && !PAGER_RUNNING) { interact(); } } } static void echo_mode(bool echo) { #if !defined(_WIN32) /*[*/ struct termios t; tcgetattr(0, &t); if (echo) { t.c_lflag |= ECHO; } else { t.c_lflag &= ~ECHO; } tcsetattr(0, TCSANOW, &t); #else /*][*/ screen_echo_mode(echo); #endif /*]*/ } #if !defined(_WIN32) /*[*/ /* Synchronous signal handler. */ static void synchronous_signal(iosrc_t fd, ioid_t id) { unsigned char dummy; int nr; sigset_t temp_sigset, old_sigset; bool got_sigint, got_sigtstp; /* Read the signal from the pipe. */ nr = read(signalpipe[0], &dummy, 1); if (nr < 0) { perror("signalpipe read"); exit(1); } if (!escaped) { vtrace("Ignoring synchronous signals\n"); return; } /* Collect pending signals. */ sigemptyset(&temp_sigset); sigaddset(&temp_sigset, SIGTSTP); sigaddset(&temp_sigset, SIGINT); sigemptyset(&old_sigset); sigprocmask(SIG_BLOCK, &temp_sigset, &old_sigset); got_sigint = sigismember(&pending_signals, SIGINT); sigdelset(&pending_signals, SIGINT); got_sigtstp = sigismember(&pending_signals, SIGTSTP); sigdelset(&pending_signals, SIGTSTP); sigprocmask(SIG_SETMASK, &old_sigset, NULL); /* Handle SIGINT first. */ if (got_sigint) { if (command_running) { vtrace("SIGINT while running an action\n"); abort_script_by_cb(command_cb.shortname); } else if (!aux_input) { vtrace("SIGINT at the normal prompt -- ignoring\n"); } else { vtrace("SIGINT with aux input -- aborting action\n"); #if defined(HAVE_LIBREADLINE) /*[*/ rl_callback_handler_remove(); #endif /*]*/ printf("\n"); fflush(stdout); aux_input = false; aux_pwinput = false; echo_mode(true); c3270_push_command(RESUME_INPUT "(" RESUME_INPUT_ABORT ")"); Replace(prompt.string, prompt.default_string); RemoveInput(c3270_input_id); c3270_input_id = NULL_IOID; prompt.displayed = false; /* And wait for it to complete before displaying a new prompt. */ } } /* Then handle SIGTSTP. */ if (got_sigtstp) { if (command_running) { /* Defer handling until command completes. */ vtrace("SIGTSTP while running an action -- deferring\n"); sigtstp_pending = true; } else { vtrace("SIGTSTP at the %s\n", (pager.pid == 0)? "prompt": "pager"); #if defined(HAVE_LIBREADLINE) /*[*/ rl_callback_handler_remove(); #endif /*]*/ kill(getpid(), SIGSTOP); /* Process stops here. The following is run when it resumes. */ if (!PAGER_RUNNING) { display_prompt(); } } } } /* Common signal handler. Writes to the pipe. */ static void common_handler(int signum) { char dummy = '\0'; sigset_t temp_sigset, old_sigset; ssize_t nw; /* Make sure this signal handler continues to be in effect. */ signal(signum, common_handler); /* Set this signal as pending, while holding off other signals. */ sigemptyset(&temp_sigset); sigaddset(&temp_sigset, SIGTSTP); sigaddset(&temp_sigset, SIGINT); sigemptyset(&old_sigset); sigprocmask(SIG_BLOCK, &temp_sigset, &old_sigset); sigaddset(&pending_signals, signum); sigprocmask(SIG_SETMASK, &old_sigset, NULL); /* Write to the pipe, so we process this synchronously. */ nw = write(signalpipe[1], &dummy, 1); assert(nw == 1); } #else /*][*/ /* Control-C handler. */ static void windows_ctrlc(void) { /* Signal the event. */ SetEvent(sigint_event); } /* Synchronous SIGINT handler. */ static void windows_sigint(iosrc_t fd, ioid_t id) { if (command_running) { vtrace("SIGINT while running an action\n"); abort_script_by_cb(command_cb.shortname); } else if (!aux_input) { vtrace("SIGINT at the normal prompt -- ignoring\n"); } else { vtrace("SIGINT with aux input -- handled when 0-length read arrives\n"); } } #endif /*]*/ #if defined(HAVE_LIBREADLINE) /*[*/ /* Readline completion handler -- a line of input has been collected. */ static void rl_handler(char *command) { readline_done = true; readline_command = command; rl_callback_handler_remove(); } #endif /*]*/ /* Display the prompt. */ static void display_prompt(void) { if (error_pending != NULL) { #if !defined(_WIN32) /*[*/ if (color_prompt) { printf("%s", screen_setaf(ACOLOR_RED)); } #else /*][*/ screen_color(PC_ERROR); #endif /*]*/ printf("%s", error_pending); #if !defined(_WIN32) /*[*/ if (color_prompt) { printf("%s", screen_op()); } #else /*][*/ screen_color(PC_DEFAULT); #endif /*]*/ printf("\n"); fflush(stdout); Replace(error_pending, NULL); } if (exit_pending) { #if defined(_WIN32) /*[*/ pause_for_errors(); #endif /*]*/ x3270_exit(0); } if (!appres.secure && !aux_input) { if (ft_state != FT_NONE) { #if !defined(_WIN32) /*[*/ if (color_prompt) { printf("%s", screen_setaf(ACOLOR_YELLOW)); } #else /*][*/ screen_color(PC_PROMPT); #endif /*]*/ printf("File transfer in progress. Use Transfer(Cancel) to " "cancel."); #if !defined(_WIN32) /*[*/ if (color_prompt) { printf("%s", screen_op()); } #else /*][*/ screen_color(PC_DEFAULT); #endif /*]*/ printf("\n"); fflush(stdout); } if (PCONNECTED) { #if !defined(_WIN32) /*[*/ if (color_prompt) { printf("%s", screen_setaf(ACOLOR_BLUE)); } #else /*][*/ screen_color(PC_PROMPT); #endif /*]*/ printf("Press to resume session."); #if !defined(_WIN32) /*[*/ if (color_prompt) { printf("%s", screen_op()); } #else /*][*/ screen_color(PC_DEFAULT); #endif /*]*/ printf("\n"); fflush(stdout); } } #if defined(HAVE_LIBREADLINE) /*[*/ rl_callback_handler_install(prompt.string, &rl_handler); #else /*][*/ # if defined(_WIN32) /*[*/ screen_color(PC_PROMPT); # endif fputs(prompt.string, stdout); fflush(stdout); # if defined(_WIN32) /*[*/ screen_color(PC_DEFAULT); # endif #endif /*]*/ #if !defined(_WIN32) /*[*/ signal(SIGTSTP, common_handler); signal(SIGINT, common_handler); #endif /*]*/ prompt.displayed = true; } #if defined(_WIN32) /*[*/ static void enable_input(enum imode mode) { vtrace("enable_input(%s)\n", (mode == LINE)? "LINE": "KEY"); inthread.mode = mode; SetEvent(inthread.enable_event); } #endif /*]*/ /* We've got console input. */ static void c3270_input(iosrc_t fd, ioid_t id) { #if !defined(HAVE_LIBREADLINE) && !defined(_WIN32) /*[*/ char inbuf[1024]; #endif /*]*/ char *command; char *s; size_t sl; #if defined(_WIN32) /*[*/ if (pager.residual != NULL) { pager_key_done(); return; } #endif /*]*/ /* Get the input. */ #if !defined(_WIN32) /*[*/ # if defined(HAVE_LIBREADLINE) /*[*/ rl_callback_read_char(); if (!readline_done) { /* More to collect. */ return; } command = readline_command; readline_done = false; # else /*][*/ command = fgets(inbuf, sizeof(inbuf), stdin); # endif /*]*/ RemoveInput(c3270_input_id); c3270_input_id = NULL_IOID; #else /*][*/ if (inthread.nr < 0) { vtrace("c3270_input: input failed\n"); enable_input(LINE); } vtrace("c3270_input: got %d bytes\n", inthread.nr); command = inthread.buf; #endif /*]*/ prompt.displayed = false; if (command == NULL) { /* EOF */ echo_mode(true); printf("\n"); fflush(stdout); exit(0); } #if defined(_WIN32) /*[*/ if (!command[0]) { /* * Windows returns 0 bytes to read(0) in two cases: ^Z+ and * ^C. Though the documentation says otherwise, there is no way to * distinguish them. So we simply re-post the read. */ if (aux_input) { /* Abort the input. */ vtrace("Aborting auxiliary input\n"); aux_input = false; aux_pwinput = false; echo_mode(true); c3270_push_command(RESUME_INPUT "(" RESUME_INPUT_ABORT ")"); Replace(prompt.string, prompt.default_string); } else { /* Get more input. */ printf("\n"); fflush(stdout); } goto done; } #endif /*]*/ s = command; if (!aux_input) { /* Strip all leading and trailing white space. */ while (isspace((unsigned char)*s)) { s++; } sl = strlen(s); while (sl && isspace((unsigned char)s[sl - 1])) { s[--sl] = '\0'; } } else { /* Strip any trailing newline. */ sl = strlen(s); if (sl && s[sl - 1] == '\n') { s[sl - 1] = '\0'; } } /* A null command while connected means resume the session. */ if (!aux_input && (!sl || appres.secure)) { if (PCONNECTED || appres.secure) { /* Stop interacting. */ screen_resume(); } goto done; } #if defined(HAVE_LIBREADLINE) /*[*/ /* Save this command in the history buffer. */ if (!aux_input) { add_history(s); } #endif /*]*/ /* "?" is an alias for "Help". */ if (!aux_input && !strcmp(s, "?")) { s = "Help()"; } /* Run the command. */ if (aux_input) { if (aux_pwinput) { printf("\n"); } fflush(stdout); aux_input = false; aux_pwinput = false; echo_mode(true); c3270_push_command(lazyaf(RESUME_INPUT "(%s)", *s? lazya(base64_encode(s)): "\"\"")); Replace(prompt.string, prompt.default_string); } else { c3270_push_command(s); } done: #if defined(HAVE_LIBREADLINE) /*[*/ Free(command); #endif /*]*/ s = s; /* to make the compiler happy */ } #if defined(_WIN32) /*[*/ /* * stdin input thread * * Endlessly: * - waits for inthread.enable_event * - reads from stdin * - leaves the input in inthread.buf and the length in inthread.nr * - sets inthread.done_event * * If inthread.mode is KEY, waits for a 'q' or other key instead of a * line of input, and leaves the result in inthread.buf. * If there is a read error, leaves -1 in inthread.nr and a Windows error code * in inthread.error. */ static DWORD WINAPI inthread_read(LPVOID lpParameter) { for (;;) { DWORD rv; rv = WaitForSingleObject(inthread.enable_event, INFINITE); switch (rv) { case WAIT_ABANDONED: case WAIT_TIMEOUT: case WAIT_FAILED: inthread.nr = -1; inthread.error = GetLastError(); SetEvent(inthread.done_event); break; case WAIT_OBJECT_0: if (inthread.mode == KEY) { if (screen_wait_for_key(NULL)) { inthread.buf[0] = 'q'; inthread.nr = 1; } else { inthread.nr = 0; } inthread.buf[inthread.nr] = '\0'; } else { inthread.nr = read(0, inthread.buf, sizeof(inthread.buf) - 1); if (inthread.nr <= 0) { inthread.error = GetLastError(); inthread.buf[0] = '\0'; } else { inthread.buf[inthread.nr] = '\0'; } } SetEvent(inthread.done_event); break; } } return 0; } #endif /*]*/ static void interact(void) { if (!prompt.displayed) { /* Display the prompt. */ display_prompt(); /* Wait for input. */ #if !defined(_WIN32) /*[*/ assert(c3270_input_id == NULL_IOID); c3270_input_id = AddInput(0, c3270_input); #else /*][*/ enable_input(LINE); #endif /*]*/ } } #if !defined(_WIN32) /*[*/ static void pager_exit(ioid_t id, int status) { vtrace("pager exited with status %d\n", status); if (pager.pid == 0) { sigtstp_pending = false; return; } pager.pid = 0; if (command_output || !CONNECTED) { /* Command produced output, or we are not connected any more. */ /* Process a pending stop. */ if (sigtstp_pending) { vtrace("Processing deferred SIGTSTP on pager exit\n"); sigtstp_pending = false; #if defined(HAVE_LIBREADLINE) /*[*/ rl_callback_handler_remove(); #endif /*]*/ kill(getpid(), SIGSTOP); } } else { /* Exit interactive mode. */ screen_resume(); } sigtstp_pending = false; } #endif /*]*/ /* A command is about to produce output. Start the pager. */ FILE * start_pager(void) { #if !defined(_WIN32) /*[*/ static char *lesspath = LESSPATH; static char *lesscmd = LESSPATH " -EXR"; static char *morepath = MOREPATH; static char *or_cat = " || cat"; char *pager_env; char *pager_cmd = NULL; if (pager.fp != NULL) { return pager.fp; } if ((pager_env = getenv("PAGER")) != NULL) { pager_cmd = pager_env; } else if (strlen(lesspath)) { pager_cmd = lesscmd; } else if (strlen(morepath)) { pager_cmd = morepath; } if (pager_cmd != NULL && strcmp(pager_cmd, "none")) { char *s; s = Malloc(strlen(pager_cmd) + strlen(or_cat) + 1); sprintf(s, "%s%s", pager_cmd, or_cat); pager.fp = xpopen(s, "w", &pager.pid); Free(s); if (pager.fp == NULL) { perror(pager_cmd); } else { AddChild(pager.pid, pager_exit); } } if (pager.fp == NULL) { pager.fp = stdout; } return pager.fp; #else /*][*/ if (!pager.running) { pager.rowcnt = 0; Replace(pager.residual, NULL); pager.flushing = false; pager.running = true; get_console_size(&pager.rows, &pager.cols); } return stdout; #endif /*]*/ } /* Stop the pager. */ static void stop_pager(void) { vtrace("stop pager\n"); #if !defined(_WIN32) /*[*/ if (pager.fp != NULL) { if (pager.fp != stdout) { xpclose(pager.fp, XPC_NOWAIT); } pager.fp = NULL; } #else /*][*/ pager.rowcnt = 0; Replace(pager.residual, NULL); pager.flushing = false; pager.running = false; #endif /*]*/ } #if defined(_WIN32) /*[*/ /* A key was pressed while the pager prompt was up. */ static void pager_key_done(void) { char *p; pager.flushing = inthread.buf[0] == 'q'; vtrace("Got pager key%s\n", pager.flushing? " (quit)": ""); /* Overwrite the prompt and reset. */ printf("\r%*s\r", (pager.nw > 0)? pager.nw: 79, ""); fflush(stdout); pager.rowcnt = 0; get_console_size(&pager.rows, &pager.cols); if (pager.flushing && !command_running) { /* Pressed 'q' and the command is complete. */ stop_pager(); return; } /* Dump what's remaining, which might leave more output pager.residual. */ p = pager.residual; pager.residual = NULL; pager_output(p, true); Free(p); } /* Write a line of output to the pager. */ void pager_output(const char *s, bool success) { if (pager.flushing) { /* They don't want to see any more. */ return; } if (pager.residual != NULL) { /* Output is pending already. */ vtrace("pager accumulate\n"); pager.residual = Realloc(pager.residual, strlen(pager.residual) + strlen(s) + 2); strcat(strcat(pager.residual, "\n"), s); return; } do { char *nl; size_t sl; /* Pause for a screenful. */ if (pager.rowcnt >= (pager.rows - 1)) { vtrace("pager pausing\n"); Replace(pager.residual, NewString(s)); screen_color(PC_PROMPT); pager.nw = printf(PAGER_PROMPT); fflush(stdout); screen_color(PC_DEFAULT); enable_input(KEY); return; } /* * Look for an embedded newline. If one is found, just print * up to it, so we can count the newline and possibly pause * partway through the string. */ screen_color(success? PC_NORMAL: PC_ERROR); nl = strchr(s, '\n'); if (nl != NULL) { sl = nl - s; printf("%.*s\n", (int)sl, s); s = nl + 1; } else { printf("%s\n", s); sl = strlen(s); s = NULL; } fflush(stdout); screen_color(PC_DEFAULT); /* Account for the newline. */ pager.rowcnt++; /* Account (conservatively) for any line wrap. */ pager.rowcnt += (int)(sl / pager.cols); } while (s != NULL); } #endif /*]*/ #if defined(HAVE_LIBREADLINE) /*[*/ static char **matches = NULL; static char **next_match; /* Generate a match list. */ static char ** attempted_completion(const char *text, int start, int end) { char *s; unsigned i, j; int match_count; action_elt_t *e; /* If this is not the first word, fail. */ s = rl_line_buffer; while (*s && isspace(*s)) { s++; } if (s - rl_line_buffer < start) { char *t = s; struct host *h; /* * If the first word is 'Connect' or 'Open', and the * completion is on the second word, expand from the * hostname list. */ /* See if we're in the second word. */ while (*t && !isspace(*t)) { t++; } while (*t && isspace(*t)) { t++; } if (t - rl_line_buffer < start) { return NULL; } /* * See if the first word is 'Open' or 'Connect'. In future, * we might do other expansions, and this code would need to * be generalized. */ if (!((!strncasecmp(s, AnOpen, 4) && isspace(*(s + 4))) || (!strncasecmp(s, AnConnect, 7) && isspace(*(s + 7))))) { return NULL; } /* Look for any matches. Note that these are case-sensitive. */ for (h = hosts, match_count = 0; h; h = h->next) { if (!strncmp(h->name, t, strlen(t))) { match_count++; } } if (!match_count) { return NULL; } /* Allocate the return array. */ next_match = matches = Malloc((match_count + 1) * sizeof(char **)); /* Scan again for matches to fill in the array. */ for (h = hosts, j = 0; h; h = h->next) { int skip = 0; if (strncmp(h->name, t, strlen(t))) { continue; } /* * Skip hostsfile entries that are duplicates of * RECENT entries we've already recorded. */ if (h->entry_type != RECENT) { for (i = 0; i < j; i++) { if (!strcmp(matches[i], h->name)) { skip = 1; break; } } } if (skip) { continue; } /* * If the string contains spaces, put it in double * quotes. Otherwise, just copy it. (Yes, this code * is fairly stupid, and can be fooled by other * whitespace and embedded double quotes.) */ if (strchr(h->name, ' ') != NULL) { matches[j] = Malloc(strlen(h->name) + 3); sprintf(matches[j], "\"%s\"", h->name); j++; } else { matches[j++] = NewString(h->name); } } matches[j] = NULL; return NULL; } /* Search for matches. */ match_count = 0; FOREACH_LLIST(&actions_list, e, action_elt_t *) { if (e->t.flags & ACTION_HIDDEN) { continue; } if (!strncasecmp(e->t.name, s, strlen(s))) { match_count++; } } FOREACH_LLIST_END(&actions_list, e, action_elt_t *); if (!match_count) { return NULL; } /* Return what we got. */ next_match = matches = Malloc((match_count + 1) * sizeof(char **)); j = 0; FOREACH_LLIST(&actions_list, e, action_elt_t *) { if (e->t.flags & ACTION_HIDDEN) { continue; } if (!strncasecmp(e->t.name, s, strlen(s))) { matches[j++] = NewString(e->t.name); } } FOREACH_LLIST_END(&actions_list, e, action_elt_t *); matches[j] = NULL; return NULL; } /* Return the match list. */ static char * completion_entry(const char *text, int state) { char *r; if (next_match == NULL) { return NULL; } if ((r = *next_match++) == NULL) { Free(matches); next_match = matches = NULL; return NULL; } else { return r; } } #endif /*]*/ /* c3270-specific actions. */ /* Break to the command prompt. */ static bool Escape_action(ia_t ia, unsigned argc, const char **argv) { action_debug(AnEscape, ia, argc, argv); if (check_argc(AnEscape, argc, 0, 1) < 0) { return false; } if (escaped && argc > 0) { popup_an_error("Cannot nest " AnEscape "()"); return false; } if (!escaped) { if (appres.secure && argc == 0) { /* Plain Escape() does nothing when secure. */ return true; } c3270_screen_suspend(); if (argc > 0) { c3270_push_command(argv[0]); } } return true; } /* Popup an informational message. */ void popup_an_info(const char *fmt, ...) { va_list args; static char vmsgbuf[4096]; size_t sl; /* Expand it. */ va_start(args, fmt); vsprintf(vmsgbuf, fmt, args); va_end(args); /* Remove trailing newlines. */ sl = strlen(vmsgbuf); while (sl && vmsgbuf[sl - 1] == '\n') { vmsgbuf[--sl] = '\0'; } /* Push it out. */ if (sl) { char *s; while ((s = strchr(vmsgbuf, '\n')) != NULL) { *s = ' '; } status_push(vmsgbuf); } } /** * Callback for data returned to action. * * @param[in] handle Callback handle * @param[in] buf Buffer * @param[in] len Buffer length * @param[in] success True if data, false if error message */ static void command_data(task_cbh handle, const char *buf, size_t len, bool success) { if (handle != (tcb_t *)&command_cb) { vtrace("command_data: no match\n"); return; } glue_gui_xoutput(lazyaf("%.*s", (int)len, buf), success); } /** * Callback for input request. * * @param[in] handle Callback handle * @param[in] buf Buffer * @param[in] len Buffer length * @param[in] echo True if input should be echoed */ static void command_reqinput(task_cbh handle, const char *buf, size_t len, bool echo) { char *p; if (handle != (tcb_t *)&command_cb) { vtrace("command_reqinput: no match\n"); return; } p = lazya(base64_decode(buf)); prompt.string = color_prompt? xs_buffer("%s%s%s", PROMPT_PRE, p, PROMPT_POST): NewString(p); aux_input = true; aux_pwinput = !echo; command_output = true; /* a white lie */ echo_mode(echo); } /** * Callback for completion of one command executed from the prompt. * * @param[in] handle Callback handle * @param[in] success True if child succeeded * @param[in] abort True if aborting * * @return True if context is complete */ static bool command_done(task_cbh handle, bool success, bool abort) { if (handle != (tcb_t *)&command_cb) { vtrace("command_data: no match\n"); return true; } vtrace("command complete\n"); command_running = false; #if defined(_WIN32) /*[*/ if (PAGER_RUNNING) { /* Pager is paused, don't do anything yet. */ return true; } #endif /*]*/ /* Send EOF to the pager. */ stop_pager(); #if !defined(_WIN32) /*[*/ if (PAGER_RUNNING) { /* Pager process is still running, don't do anything else yet. */ return true; } #endif /*]*/ /* The command from the prompt completed. */ if (command_output || !PCONNECTED) { /* Command produced output, or we are not connected any more. */ #if !defined(_WIN32) /*[*/ /* Process a pending stop. */ if (sigtstp_pending) { vtrace("Processing deferred SIGTSTP on command completion\n"); sigtstp_pending = false; # if defined(HAVE_LIBREADLINE) /*[*/ rl_callback_handler_remove(); # endif /*]*/ kill(getpid(), SIGSTOP); # if !defined(_WIN32) /*[*/ if (pager.pid != 0) { return true; } # endif /*]*/ } #endif /*]*/ } else { /* Exit interactive mode. */ screen_resume(); #if defined(_WIN32) /*[*/ signal(SIGINT, SIG_DFL); #endif /*]*/ } #if !defined(_WIN32) /*[*/ sigtstp_pending = false; #endif /*]*/ return true; } static unsigned command_getflags(task_cbh handle) { /* * INTERACTIVE: We understand [input] responses. * CONNECT_NONBLOCK: We do not want Connect()/Open() to block. * PWINPUT: We understand [pwinput] responses. */ return CBF_INTERACTIVE | CBF_CONNECT_NONBLOCK | CBF_PWINPUT; } /** * Set the pending input request. * * @param[in] handle Context * @param[in] irhandle Input request handle */ static void command_setir(task_cbh handle, void *irhandle) { command_irhandle = irhandle; } /** * Get the pending input request. * * @param[in] handle Context * * @returns input request handle */ static void * command_getir(task_cbh handle) { return command_irhandle; } /** * Set input request state. * * @param[in] handle CB handle * @param[in] name Input request type name * @param[in] state State to store * @param[in] abort Abort callback */ static void command_setir_state(task_cbh handle, const char *name, void *state, ir_state_abort_cb abort) { task_cb_set_ir_state(&command_ir_state, name, state, abort); } /** * Get input request state. * * @param[in] handle CB handle * @param[in] name Input request type name */ static void * command_getir_state(task_cbh handle, const char *name) { return task_cb_get_ir_state(&command_ir_state, name); } /** * Push a command. * * @param[in] s Text of action. */ static void c3270_push_command(const char *s) { command_running = true; command_output = false; #if defined(_WIN32) /*[*/ stop_pager(); get_console_size(&pager.rows, &pager.cols); #endif /*]*/ /* Push a callback with a macro. */ push_cb(s, strlen(s), &command_cb, (task_cbh)&command_cb); } #if !defined(_WIN32) /*[*/ /* Support for c3270 profiles. */ #define PROFILE_ENV "C3270PRO" #define NO_PROFILE_ENV "NOC3270PRO" #define DEFAULT_PROFILE "~/.c3270pro" /* Read in the .c3270pro file. */ static bool merge_profile(void) { const char *fname; char *profile_name; bool did_read = false; /* Check for the no-profile environment variable. */ if (getenv(NO_PROFILE_ENV) != NULL) { return did_read; } /* Read the file. */ fname = getenv(PROFILE_ENV); if (fname == NULL || *fname == '\0') { fname = DEFAULT_PROFILE; } profile_name = do_subst(fname, DS_VARS | DS_TILDE); did_read = read_resource_file(profile_name, false); Free(profile_name); return did_read; } #endif /*]*/ #if defined(_WIN32) /*[*/ /* Start a auto-shortcut-mode copy of wc3270.exe. */ static void start_auto_shortcut(int argc, char *argv[]) { char *tempdir; FILE *f; session_t s; HRESULT hres; char exepath[MAX_PATH]; char linkpath[MAX_PATH]; char sesspath[MAX_PATH]; char delenv[32 + MAX_PATH]; HINSTANCE h; char *cwd; varbuf_t r; int i; /* Make sure there is a session file. */ if (profile_path == NULL) { fprintf(stderr, "Can't use auto-shortcut mode without a " "session file\n"); fflush(stderr); return; } #if defined(AS_DEBUG) /*[*/ printf("Running auto-shortcut, profile path is %s\n", profile_path); fflush(stdout); #endif /*]*/ /* Read the session file into 's'. */ f = fopen(profile_path, "r"); if (f == NULL) { fprintf(stderr, "%s: %s\n", profile_path, strerror(errno)); fflush(stderr); x3270_exit(1); } memset(&s, '\0', sizeof(session_t)); if (read_session(f, &s, NULL) == 0) { fprintf(stderr, "%s: invalid format\n", profile_path); fflush(stderr); x3270_exit(1); } #if defined(AS_DEBUG) /*[*/ printf("Reading session file '%s'\n", profile_path); fflush(stdout); #endif /*]*/ /* Create the shortcut. */ tempdir = getenv("TEMP"); if (tempdir == NULL) { fprintf(stderr, "No %%TEMP%%?\n"); fflush(stderr); x3270_exit(1); } sprintf(linkpath, "%s\\wcsa%u.lnk", tempdir, getpid()); sprintf(exepath, "%s%s", instdir, "wc3270.exe"); #if defined(AS_DEBUG) /*[*/ printf("Executable path is '%s'\n", exepath); fflush(stdout); #endif /*]*/ if (GetFullPathName(profile_path, MAX_PATH, sesspath, NULL) == 0) { fprintf(stderr, "%s: Error %ld\n", profile_path, GetLastError()); fflush(stderr); x3270_exit(1); } /* * Copy the command-line arguments. Surround each argument with double * quotes, and hope that is sufficient. */ vb_init(&r); for (i = 1; i < argc; i++) { if (strcmp(argv[i], OptAutoShortcut) && strcmp(argv[i], profile_path)) { vb_appendf(&r, "\"%s\" ", argv[i]); } } vb_appendf(&r, OptNoAutoShortcut " \"%s\"", sesspath); #if defined(AS_DEBUG) /*[*/ printf("args are '%s'\n", vb_buf(&r)); fflush(stdout); #endif /*]*/ cwd = getcwd(NULL, 0); hres = create_shortcut(&s, /* session */ exepath, /* .exe */ linkpath, /* .lnk */ (char *)vb_buf(&r), /* args */ cwd /* cwd */); if (!SUCCEEDED(hres)) { fprintf(stderr, "Cannot create ShellLink '%s'\n", linkpath); fflush(stderr); x3270_exit(1); } vb_free(&r); #if defined(AS_DEBUG) /*[*/ printf("Created ShellLink '%s'\n", linkpath); fflush(stdout); #endif /*]*/ /* Execute it. */ sprintf(delenv, "%s=%s", DELENV, linkpath); putenv(delenv); h = ShellExecute(NULL, "open", linkpath, "", tempdir, SW_SHOW); if ((uintptr_t)h <= 32) { fprintf(stderr, "ShellExecute failed, error %d\n", (int)(uintptr_t)h); fflush(stderr); x3270_exit(1); } #if defined(AS_DEBUG) /*[*/ printf("Started ShellLink\n"); fflush(stdout); #endif /*]*/ exit(0); } /* Start a copy of the Session Wizard. */ void start_wizard(const char *session) { char *cmd; if (session != NULL) { cmd = xs_buffer("start \"wc3270 Session Wizard\" \"%swc3270wiz.exe\" " "-e \"%s\"", instdir, session); } else { cmd = xs_buffer("start \"wc3270 Session Wizard\" \"%swc3270wiz.exe\"", instdir); } system(cmd); Free(cmd); /* Get back mouse events */ screen_system_fixup(); } #endif /*]*/ /* Start a browser window to display c3270/wc3270 help. */ void start_html_help(void) { #if defined(HAVE_START) /*[*/ start_help(); #endif /*]*/ #if defined(_WIN32) /*[*/ /* Get back mouse events */ screen_system_fixup(); #endif /*]*/ } /* * Product information functions. */ bool product_has_display(void) { return true; } /** * Build options. * * @return Product-specific build options string, beginning with a space. */ const char * product_specific_build_options(void) { return #if defined(HAVE_LIBREADLINE) /*[*/ " --with-readline" #else /*][*/ " --without-readline" #endif /*]*/ #if !defined(_WIN32) /*[*/ # if defined(CURSES_WIDE) /*[*/ " --with-curses-wide" # else /*][*/ " --without-curses-wide" # endif /*]*/ #endif /*]*/ ; } bool product_auto_oversize(void) { return true; } /** * Set appres defaults that are specific to this product. */ void product_set_appres_defaults(void) { appres.oerr_lock = true; appres.interactive.compose_map = "latin1"; appres.interactive.do_confirms = true; appres.interactive.menubar = true; appres.interactive.save_lines = 4096; #if defined(_WIN32) /*[*/ appres.trace_monitor = true; set_toggle(UNDERSCORE, true); #else /*][*/ appres.c3270.meta_escape = "auto"; appres.c3270.curses_keypad = true; appres.c3270.mouse = true; #endif /*]*/ #if !defined(_WIN32) /*[*/ # if defined(CURSES_WIDE) /*[*/ appres.c3270.acs = true; # else /*][*/ appres.c3270.ascii_box_draw = true; # endif /*]*/ #endif /*]*/ set_toggle(SELECT_URL, true); } /* * Telnet GUI. */ void telnet_gui_connecting(const char *hostname, const char *portname) { popup_an_info("Trying %s, port %s...", hostname, portname); } /** * GUI redirect function for action_output. */ static bool glue_gui_xoutput(const char *s, bool success) { c3270_screen_suspend(); if (*s) { #if !defined(_WIN32) /*[*/ if (color_prompt) { fprintf(start_pager(), "%s%s%s\n", success? "": screen_setaf(ACOLOR_RED), s, success? "": screen_op()); } else { fprintf(start_pager(), "%s\n", s); } fflush(start_pager()); #else /*][*/ start_pager(); pager_output(s, success); #endif /*]*/ } command_output = true; /* any_error_output = true; */ /* XXX: Needed? */ return true; } /** * GUI redirect function for action_output. */ bool glue_gui_output(const char *s) { return glue_gui_xoutput(s, true); } /** * GUI redirect function for popup_an_error. * This handles asynchronous errors, such as file transfers that do not start * or abort. * * @param[in] s Text to display * @returns true */ bool glue_gui_error(const char *s) { return glue_gui_error_cond(s, true); } /** * c3270 main module registration. */ static void c3270_register(void) { static action_table_t actions[] = { { AnEscape, Escape_action, ACTION_KE } }; static opt_t c3270_opts[] = { { OptAllBold, OPT_BOOLEAN, true, ResAllBold, aoffset(c3270.all_bold_on), NULL, "Display all text in bold" }, { OptKeymap, OPT_STRING, false, ResKeymap, aoffset(interactive.key_map), "[,...]", "Keyboard map name(s)" }, { OptNoPrompt, OPT_BOOLEAN, true, ResNoPrompt, aoffset(secure), NULL, "Alias for -secure" }, { OptPrinterLu,OPT_STRING, false, ResPrinterLu, aoffset(interactive.printer_lu), "", "Automatically start a "PR3287_NAME" printer session to " }, { OptReconnect,OPT_BOOLEAN, true, ResReconnect, aoffset(interactive.reconnect), NULL, "Reconnect to host as soon as it disconnects" }, { OptSaveLines, OPT_INT, false, ResSaveLines, aoffset(interactive.save_lines), "", "Number of lines to save for scrolling" }, { OptSecure, OPT_BOOLEAN, true, ResSecure, aoffset(secure), NULL, "Restrict potentially-destructive user actions" }, { OptUtf8, OPT_BOOLEAN, true, ResUtf8, aoffset(utf8), NULL, "Force local codeset to be UTF-8" }, #if defined(C3270_80_132) /*[*/ { OptAltScreen,OPT_STRING, false, ResAltScreen, aoffset(c3270.altscreen), "", "String to switch terminal from 80-column mode to 132-column mode" }, { OptDefScreen,OPT_STRING, false, ResDefScreen, aoffset(c3270.defscreen), "", "String to switch terminal from 132-column mode to 80-column mode" }, #endif /*]*/ #if defined(HAVE_USE_DEFAULT_COLORS) /*[*/ { OptDefaultFgBg,OPT_BOOLEAN,true, ResDefaultFgBg, aoffset(c3270.default_fgbg), NULL, "Use terminal's default foreground and background colors" }, #endif /*]*/ #if !defined(_WIN32) /*[*/ { OptCbreak, OPT_BOOLEAN, true, ResCbreak, aoffset(c3270.cbreak_mode), NULL, "Force terminal CBREAK mode" }, { OptMono, OPT_BOOLEAN, true, ResMono, aoffset(interactive.mono), NULL, "Do not use terminal color capabilities" }, { OptReverseVideo,OPT_BOOLEAN,true,ResReverseVideo, aoffset(c3270.reverse_video), NULL, "Switch to black-on-white mode" }, #endif /*]*/ #if defined(_WIN32) /*[*/ { OptAutoShortcut,OPT_BOOLEAN, true, ResAutoShortcut, aoffset(c3270.auto_shortcut), NULL, "Run in auto-shortcut mode" }, { OptNoAutoShortcut,OPT_BOOLEAN,false,ResAutoShortcut, aoffset(c3270.auto_shortcut), NULL, "Do not run in auto-shortcut mode" }, { OptTitle, OPT_STRING, false, ResTitle, aoffset(c3270.title), "", "Set window title to " }, #endif /*]*/ }; static res_t c3270_resources[] = { { ResAllBold, aoffset(c3270.all_bold), XRM_STRING }, { ResAsciiBoxDraw,aoffset(c3270.ascii_box_draw),XRM_BOOLEAN }, { ResIdleCommand,aoffset(idle_command), XRM_STRING }, { ResIdleCommandEnabled,aoffset(idle_command_enabled),XRM_BOOLEAN }, { ResIdleTimeout,aoffset(idle_timeout), XRM_STRING }, { ResKeymap, aoffset(interactive.key_map), XRM_STRING }, { ResMenuBar, aoffset(interactive.menubar), XRM_BOOLEAN }, { ResNoPrompt, aoffset(secure), XRM_BOOLEAN }, { ResPrinterLu, aoffset(interactive.printer_lu),XRM_STRING }, { ResPrinterOptions,aoffset(interactive.printer_opts),XRM_STRING }, { ResReconnect, aoffset(interactive.reconnect),XRM_BOOLEAN }, { ResSaveLines, aoffset(interactive.save_lines),XRM_INT }, #if !defined(_WIN32) /*[*/ { ResCbreak, aoffset(c3270.cbreak_mode), XRM_BOOLEAN }, { ResCursesKeypad,aoffset(c3270.curses_keypad), XRM_BOOLEAN }, { ResMetaEscape,aoffset(c3270.meta_escape), XRM_STRING }, { ResMono, aoffset(interactive.mono), XRM_BOOLEAN }, { ResMouse, aoffset(c3270.mouse), XRM_BOOLEAN }, { ResReverseVideo,aoffset(c3270.reverse_video),XRM_BOOLEAN }, #endif /*]*/ #if defined(C3270_80_132) /*[*/ { ResAltScreen, aoffset(c3270.altscreen), XRM_STRING }, { ResDefScreen, aoffset(c3270.defscreen), XRM_STRING }, #endif /*]*/ #if defined(CURSES_WIDE) /*[*/ { ResAcs, aoffset(c3270.acs), XRM_BOOLEAN }, #endif /*]*/ #if defined(HAVE_USE_DEFAULT_COLORS) /*[*/ { ResDefaultFgBg,aoffset(c3270.default_fgbg), XRM_BOOLEAN }, # endif /*]*/ #if defined(_WIN32) /*[*/ { ResAutoShortcut,aoffset(c3270.auto_shortcut), XRM_BOOLEAN }, { ResBellMode, aoffset(c3270.bell_mode), XRM_STRING }, { ResLightPenPrimary,aoffset(c3270.lightpen_primary),XRM_BOOLEAN }, { ResTitle, aoffset(c3270.title), XRM_STRING }, { ResVisualBell,aoffset(interactive.visual_bell),XRM_BOOLEAN }, #endif /*]*/ }; static xres_t c3270_xresources[] = { { ResKeymap, V_WILD }, { ResAssocCommand, V_FLAT }, { ResLuCommandLine, V_FLAT }, { ResPrintTextScreensPerPage, V_FLAT }, { ResMessage, V_WILD }, #if defined(_WIN32) /*[*/ { ResPrinterCodepage, V_FLAT }, { ResPrinterCommand, V_FLAT }, { ResPrinterName, V_FLAT }, { ResPrintTextFont, V_FLAT }, { ResPrintTextHorizontalMargin, V_FLAT }, { ResPrintTextOrientation, V_FLAT }, { ResPrintTextSize, V_FLAT }, { ResPrintTextVerticalMargin, V_FLAT }, { ResHostColorForDefault, V_FLAT }, { ResHostColorForIntensified, V_FLAT }, { ResHostColorForProtected, V_FLAT }, { ResHostColorForProtectedIntensified,V_FLAT }, { ResConsoleColorForHostColor, V_COLOR }, #else /*][*/ { ResPrinterCommand, V_FLAT }, { ResPrintTextCommand, V_FLAT }, { ResCursesColorForDefault, V_FLAT }, { ResCursesColorForIntensified, V_FLAT }, { ResCursesColorForProtected, V_FLAT }, { ResCursesColorForProtectedIntensified,V_FLAT }, { ResCursesColorForHostColor, V_COLOR }, #endif /*]*/ }; static query_t queries[] = { { KwKeymap, keymap_dump, NULL, false, true }, { KwStatus, status_dump, NULL, false, true }, { KwStats, status_dump, NULL, true, true } }; /* Register for state changes. */ register_schange(ST_CONNECT, c3270_connect); register_schange(ST_3270_MODE, c3270_3270_mode); register_schange(ST_EXITING, main_exiting); /* Register our actions. */ register_actions(actions, array_count(actions)); /* Register our options. */ register_opts(c3270_opts, array_count(c3270_opts)); /* Register our resources. */ register_resources(c3270_resources, array_count(c3270_resources)); register_xresources(c3270_xresources, array_count(c3270_xresources)); /* Register our queries. */ register_queries(queries, array_count(queries)); } suite3270-4.1/Common/c3270/c3270.h000066400000000000000000000031331413735575200157340ustar00rootroot00000000000000/* * Copyright (c) 2020 Paul Mattes. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the names of Paul Mattes nor the names of his contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO * EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * c3270.h * Common declarations for c3270.c. */ extern void start_html_help(void); suite3270-4.1/Common/c3270/cmenubar.h000066400000000000000000000047361413735575200170040ustar00rootroot00000000000000/* * Copyright (c) 1995-2010, 2013-2015 Paul Mattes. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the names of Paul Mattes nor the names of his contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO * EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * cmenubar.h * Global declarations for c3270 menubar.c. */ typedef enum { MK_MOUSE = 1, /* ncurses mouse event */ MK_UP, /* cursor up */ MK_DOWN, /* cursor down */ MK_LEFT, /* cursor left */ MK_RIGHT, /* cursor right */ MK_HOME, /* home */ MK_END, /* end */ MK_ENTER, /* enter or return */ MK_NONE, /* no symbolic key code */ MK_OTHER /* anything else */ } menu_key_t; /* c3270 externs. */ # define MENU_IS_UP 0x1 # define KEYPAD_IS_UP 0x2 extern unsigned menu_is_up; extern void menu_init(void); bool menu_char(int row, int col, bool persistent, ucs4_t *u, bool *highlighted, unsigned char *acs); void menu_key(menu_key_t k, ucs4_t u); # if defined(_WIN32) /*[*/ void menu_click(int x, int y); # endif /*]*/ void popup_menu(int x, int click); void menu_cursor(int *row, int *col); void menubar_retoggle(toggle_index_t ix); void map_acs(unsigned char c, ucs4_t *u, unsigned char *acs); void menubar_register(void); suite3270-4.1/Common/c3270/cscreen.h000066400000000000000000000047361413735575200166320ustar00rootroot00000000000000/* * Copyright (c) 1999-2010, 2014-2015, 2018, 2020 Paul Mattes. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the names of Paul Mattes nor the names of his contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO * EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * cscreen.h * c3270/wc3270 screen declarations. */ extern bool escaped; #if defined(WC3270) /*[*/ extern int windows_cp; extern HWND console_window; #endif /*]*/ void screen_resume(void); FILE *start_pager(void); void screen_register(void); void screen_final(void); void screen_system_fixup(void); #if defined(WC3270) /*[*/ typedef enum { PC_DEFAULT, PC_PROMPT, PC_ERROR, PC_NORMAL } pc_t; void screen_color(pc_t sc); bool screen_wait_for_key(char *c); void screen_title(const char *text); typedef void (*ctrlc_fn_t)(void); void screen_set_ctrlc_fn(ctrlc_fn_t fn); void get_console_size(int *rows, int *cols); void screen_send_esc(void); void screen_echo_mode(bool echo); #endif /*]*/ #if !defined(_WIN32) /*[*/ bool screen_has_ansi_color(void); const char *screen_op(void); typedef enum { ACOLOR_BLUE, /* 34 */ ACOLOR_RED, /* 31 */ ACOLOR_YELLOW /* 33 */ } acolor_t; const char *screen_setaf(acolor_t color); #endif /*]*/ suite3270-4.1/Common/c3270/cstatus.h000066400000000000000000000031511413735575200166640ustar00rootroot00000000000000/* * Copyright (c) 1995-2009, 2015 Paul Mattes. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of Paul Mattes nor his contributors may be used * to endorse or promote products derived from this software without * specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. */ /* * cstatus.h * Extra global declarations for c3270 status.c. */ void status_push(char *msg); suite3270-4.1/Common/c3270/ft_gui.c000066400000000000000000000061141413735575200164500ustar00rootroot00000000000000/* * Copyright (c) 1996-2015, 2018 Paul Mattes. * Copyright (c) 1995, Dick Altenbern. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the names of Paul Mattes, Dick Altenbern nor the names of * their contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES AND DICK ALTENBERN "AS IS" AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL PAUL MATTES OR DICK ALTENBERN BE LIABLE FOR * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH * DAMAGE. */ /* * ft_gui.c * IND$FILE file transfer dialogs (c3270 version). */ #include "globals.h" #include #include "appres.h" #include "cscreen.h" #include "unicodec.h" #include "ft.h" #include "ft_private.h" #include "icmdc.h" #include "popups.h" #include "screen.h" #include "task.h" #include "utils.h" #include "ft_gui.h" /* Macros. */ /* Globals. */ /* Statics. */ /* Entry points called from the common FT logic. */ /* Pop down the transfer-in-progress pop-up. */ void ft_gui_progress_popdown(void) { } /* Massage a file transfer error message so it will fit in the pop-up. */ void ft_gui_errmsg_prepare(char *msg _is_unused) { } /* Clear out the progress display. */ void ft_gui_clear_progress(void) { popup_an_info(" "); } /* Pop up a completion message. */ void ft_gui_complete_popup(const char *msg, bool is_error) { if (is_error) { popup_an_error("%s", msg); } else { popup_an_info("%s", msg); } } /* Update the bytes-transferred count on the progress pop-up. */ void ft_gui_update_length(size_t length) { /* Put it in the OIA. */ popup_an_info("Transferred %lu bytes", (unsigned long)length); } /* Replace the 'waiting' pop-up with the 'in-progress' pop-up. */ void ft_gui_running(size_t length _is_unused) { ft_update_length(); } /* Process a protocol-generated abort. */ void ft_gui_aborting(void) { } /* Display an "Awaiting start of transfer" message. */ void ft_gui_awaiting(void) { popup_an_info("Awaiting start of transfer"); } suite3270-4.1/Common/c3270/help.c000066400000000000000000000377131413735575200161340ustar00rootroot00000000000000/* * Copyright (c) 2000-2009, 2013-2015, 2018, 2020 Paul Mattes. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the names of Paul Mattes nor the names of his contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO * EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * Help.c * Help information for c3270. */ #include "globals.h" #include "appres.h" #include "resources.h" #include "actions.h" #include "c3270.h" #include "glue.h" #include "help.h" #include "icmdc.h" #include "names.h" #include "popups.h" #include "screen.h" #include "utils.h" #if defined(_WIN32) /*[*/ # include "wc3270.h" #endif /*]*/ #define P_3270 0x0001 /* 3270 actions */ #define P_SCRIPTING 0x0002 /* scripting actions */ #define P_INTERACTIVE 0x0004 /* interactive (command-prompt) actions */ #define P_OPTIONS 0x0008 /* command-line options */ #define P_TRANSFER 0x0010 /* file transfer options */ #define P_HTML 0x0020 /* HTML help */ #if defined(WC3270) /*[*/ #define HELP_W "w" #else /*][*/ #define HELP_W "" #endif /*]*/ static struct { const char *name; const char *args; int purpose; const char *help; } cmd_help[] = { { AnAbort, NULL, P_SCRIPTING, "Abort pending scripts and macros" }, { AnAnsiText, NULL, P_SCRIPTING, "Dump pending NVT text" }, { AnAscii, NULL, P_SCRIPTING, "Screen contents in ASCII" }, { AnAscii, "", P_SCRIPTING, " bytes of screen contents from cursor, in ASCII" }, { AnAscii, ",,", P_SCRIPTING, " bytes of screen contents from , (0-origin), in ASCII" }, { AnAscii, ",,,", P_SCRIPTING, "x of screen contents from , (0-origin), in ASCII" }, { AnAscii1, ",,", P_SCRIPTING, " bytes of screen contents from , (1-origin), in ASCII" }, { AnAscii1, ",,,", P_SCRIPTING, "x of screen contents from , (1-origin), in ASCII" }, { AnAsciiField, NULL, P_SCRIPTING, "Contents of current field, in ASCII" }, { AnAttn, NULL, P_3270, "Send 3270 ATTN sequence (TELNET IP)" }, { AnBackSpace, NULL, P_3270, "Move cursor left" }, { AnBackTab, NULL, P_3270, "Move to previous field" }, { AnBell, NULL, P_SCRIPTING, "Ring the terminal bell" }, { AnCircumNot, NULL, P_3270, "Send ~ in NVT mode, notsign (X'5F', U+00AC) in 3270 mode" }, { AnClear, NULL, P_3270, "Send CLEAR AID (clear screen)" }, { AnClose, NULL, P_INTERACTIVE, "Alias for " AnDisconnect "()" }, { AnCloseScript, NULL, P_SCRIPTING, "Exit peer script" }, { AnCompose, NULL, P_INTERACTIVE, "Interpret next two keystrokes according to the compose map" }, { AnConnect, "[L:][Y:][A:][@][:][=]", P_INTERACTIVE, "Open connection to " }, #if defined(LOCAL_PROCESS) /*[*/ { AnConnect, "-e,[[,...]]", P_INTERACTIVE, "Open connection to a local shell or command" }, #endif /*]*/ #if defined(WC3270) /*[*/ { AnCopy, NULL, P_3270, "Copy selected text to Windows clipboard" }, #endif /*]*/ { AnCursorSelect, NULL, P_3270, "Light pen select at cursor location" }, #if defined(WC3270) /*[*/ { AnCut, NULL, P_3270, "Copy selected text to Windows clipboard, then erase" }, #endif /*]*/ { AnDelete, NULL, P_3270, "Delete character at cursor" }, { AnDeleteField, NULL, P_3270, "Erase field at cursor location (^U)" }, { AnDeleteWord, NULL, P_3270, "Erase word before cursor location (^W)" }, { AnDisconnect, NULL, P_INTERACTIVE, "Close connection to host" }, { AnDown, NULL, P_3270, "Move cursor down" }, { AnDup, NULL, P_3270, "3270 DUP key (X'1C')" }, { AnEbcdic, NULL, P_SCRIPTING, "Screen contents in EBCDIC" }, { AnEbcdic, "", P_SCRIPTING, " bytes of screen contents from cursor, in EBCDIC" }, { AnEbcdic, ",,", P_SCRIPTING, " bytes of screen contents from , (0-origin), in EBCDIC" }, { AnEbcdic, ",,,", P_SCRIPTING, "x of screen contents from , (0-origin), in EBCDIC" }, { AnEbcdic1, ",,", P_SCRIPTING, " bytes of screen contents from , (1-origin), in EBCDIC" }, { AnEbcdic1, ",,,", P_SCRIPTING, "x of screen contents from , (1-origin), in EBCDIC" }, { AnEbcdicField, NULL, P_SCRIPTING, "Contents of current field, in EBCDIC" }, { AnEnter, NULL, P_3270, "Send ENTER AID" }, { AnErase, NULL, P_3270, "Destructive backspace" }, { AnEraseEOF, NULL, P_3270, "Erase from cursor to end of field" }, { AnEraseInput, NULL, P_3270, "Erase all input fields" }, { AnEscape, NULL, P_INTERACTIVE, "Escape to '" HELP_W "c3270>' prompt" }, { AnExecute, "", P_SCRIPTING, "Execute a shell command" }, { "Exit", NULL, P_INTERACTIVE, "Exit " HELP_W "c3270" }, { AnExpect, "", P_SCRIPTING, "Wait for NVT output" }, { AnFieldEnd, NULL, P_3270, "Move to end of field" }, { AnFieldMark, NULL, P_3270, "3270 FIELD MARK key (X'1E')" }, { AnFlip, NULL, P_3270, "Flip display left-to-right" }, { AnHelp, "all|interactive|3270|scripting|transfer|", P_INTERACTIVE, "Get help" }, { AnHexString, "", P_3270|P_SCRIPTING, "Input field data in hex" }, { AnHome, NULL, P_3270, "Move cursor to first field" }, { Anignore, NULL, P_3270, "Do nothing" }, { "Info", "", P_SCRIPTING|P_INTERACTIVE, "Display text in OIA" }, { AnInsert, NULL, P_3270, "Set 3270 insert mode" }, { AnInterrupt, NULL, P_3270, "In NVT mode, send IAC IP" }, { AnKey, "|0x", P_3270, "Input one character" }, { AnKeyboardDisable, "[" ResTrue "|" ResFalse "|" KwForceEnable "]", P_SCRIPTING|P_INTERACTIVE, "Modify automatic script keyboard locking" }, { AnKeymap, "[]", P_SCRIPTING|P_INTERACTIVE, "Push temporary keymap, or pop if none specified" }, { AnKeypad, NULL, P_INTERACTIVE, "Pop up the 3270 keypad" }, { AnLeft, NULL, P_3270, "Move cursr left" }, { AnLeft2, NULL, P_3270, "Move cursor left 2 columns" }, { AnMacro, "", P_SCRIPTING, "Execute a predefined macro" }, { AnMenu, NULL, P_INTERACTIVE, "Pop up the command menu" }, { AnMoveCursor, ",", P_3270|P_SCRIPTING, "Move cursor to specific location (0-origin, deprecated)" }, { AnMoveCursor, "", P_3270|P_SCRIPTING, "Move cursor to a buffer offset (0-origin)" }, { AnMoveCursor1, ",", P_3270|P_SCRIPTING, "Move cursor to specific location (1-origin)" }, { AnNewline, NULL, P_3270, "Move cursor to first field in next row" }, { AnNextWord, NULL, P_3270, "Move cursor to next word" }, { AnOpen, NULL, P_INTERACTIVE, "Alias for " AnConnect "()" }, { AnPA, "", P_3270, "Send 3270 Program Attention" }, #if defined(WC3270) /*[*/ { "Paste", NULL, P_3270, "Paste clipboard contents" }, #endif /*]*/ { AnPF, "", P_3270, "Send 3270 PF AID" }, { AnPause, NULL, P_SCRIPTING, "Wait for 350ms" }, { AnPreviousWord, NULL, P_3270, "Move cursor to previous word" }, { AnPrinter, KwStart "[,lu]|" KwStop, P_3270|P_SCRIPTING|P_INTERACTIVE, "Start or stop " HELP_W "pr3287 printer session" }, { AnPrintText, "[" KwHtml "|" KwRtf ",][" KwModi ",][" KwCaption ",,][" KwReplace "|" KwAppend ",]" KwFile ",", P_INTERACTIVE|P_SCRIPTING, "Save screen image in a file" }, { AnPrintText, "[" KwModi ",][" KwCaption ",]," #if defined(WC3270) /*[*/ "[" KwDialog "|" KwNoDialog ",][]", #else /*][*/ "[]", #endif /*]*/ P_INTERACTIVE|P_SCRIPTING, "Print screen image" }, { AnPrompt, "[app-name]", P_SCRIPTING|P_INTERACTIVE, "Start an external prompt" }, { AnQuery, "", P_SCRIPTING|P_INTERACTIVE, "Query operational parameters" }, { AnQuit, NULL, P_INTERACTIVE, "Exit " HELP_W "3270" }, { AnReadBuffer, "[" KwAscii "|" KwEbcdic "|" KwUnicode "]", P_SCRIPTING, "Dump display buffer" }, { AnReadBuffer, "[" KwAscii "|" KwEbcdic "|" KwUnicode ",]" KwField, P_SCRIPTING, "Dump display buffer for current field" }, { AnReconnect, NULL, P_INTERACTIVE, "Reconnect to previous host" }, { AnRedraw, NULL, P_INTERACTIVE|P_3270, "Redraw screen" }, { AnReset, NULL, P_3270, "Clear keyboard lock" }, { AnRight, NULL, P_3270, "Move cursor right" }, { AnRight2, NULL, P_3270, "Move cursor right 2 columns" }, { AnScreenTrace, KwOn "[[," KwFile "],]", P_INTERACTIVE, "Save screen images to file" }, { AnScreenTrace, # if defined(_WIN32) /*[*/ KwOn "," KwPrinter "[,]", # else /*][*/ KwOn "," KwPrinter "[,]", # endif /*]*/ P_INTERACTIVE, "Save screen images to printer" }, { AnScreenTrace, KwOff, P_INTERACTIVE, "Stop saving screen images" }, { AnScript, "[" KwDashAsync ",][" KwDashNoLock ",][" KwDashSingle ",]" #if defined(_WIN32) /*[*/ "[" KwDashShareConsole ",]" #endif /*]*/ "[,...]", P_SCRIPTING, "Run a child script" }, { AnScroll, KwForward "|" KwBackward, P_INTERACTIVE, "Scroll screen" }, { AnSet, "[,value]", P_INTERACTIVE|P_SCRIPTING, "Change a setting or display all settings" }, { AnShow, KwCopyright "|" KwStatus "|" KwKeymap, P_INTERACTIVE, "Display status and settings" }, { AnSnap, "", P_SCRIPTING, "Screen snapshot manipulation" }, { AnSource, "", P_SCRIPTING|P_INTERACTIVE, "Read actions from file" }, { AnString, "", P_3270|P_SCRIPTING, "Input a string" }, { AnSysReq, NULL, P_3270, "Send 3270 Attention (TELNET ABORT or SYSREQ AID)" }, { AnTab, NULL, P_3270, "Move cursor to next field" }, { AnTemporaryComposeMap, "[]", P_SCRIPTING|P_INTERACTIVE, "Set or clear temporary compose map" }, { AnTemporaryKeymap, "[]", P_SCRIPTING|P_INTERACTIVE, "Alias for " AnKeymap "()" }, #if defined(WC3270) /*[*/ { AnTitle, "", P_SCRIPTING|P_INTERACTIVE, "Change window title" }, #endif /*]*/ { AnToggle, "[[,value]]", P_INTERACTIVE|P_SCRIPTING, "Change a toggle" }, { AnToggleInsert, NULL, P_3270, "Set or clear 3270 insert mode" }, { AnToggleReverse, NULL, P_3270, "Set or clear reverse-input mode" }, { AnTrace, KwOn "[,]|" KwOff, P_INTERACTIVE, "Configure tracing" }, { AnTransfer, "[]", P_INTERACTIVE, "IND$FILE file transfer (see 'help file-transfer')" }, { AnUp, NULL, P_3270, "Move cursor up" }, { AnWait, "", P_SCRIPTING, "Wait for host events" }, { NULL, NULL, 0, NULL } }; #if defined(HAVE_START) || defined(WC3270) /*[*/ static void html_help(bool); #endif /*]*/ static struct { const char *name; int flag; const char *text; const char **block; void (*fn)(bool); } help_subcommand[] = { #if defined(HAVE_START) /*[*/ { "online", P_HTML, NULL, NULL, html_help }, #endif /*]*/ { "all", -1, NULL, NULL, NULL }, { "3270", P_3270, NULL, NULL, NULL }, { "interactive", P_INTERACTIVE, NULL, NULL, NULL }, { "options", P_OPTIONS, NULL, NULL, &cmdline_help }, { "scripting", P_SCRIPTING, NULL, NULL, NULL }, { "file-transfer", P_TRANSFER, NULL, NULL, ft_help }, #if defined(WC3270) /*[*/ { "html", P_HTML, NULL, NULL, html_help }, #endif /*]*/ { NULL, 0, NULL } }; /* c3270-specific actions. */ static bool Help_action(ia_t ia, unsigned argc, const char **argv) { int i; int overall = -1; int match = 0; bool any = false; action_debug(AnHelp, ia, argc, argv); if (check_argc(AnHelp, argc, 0, 1) < 0) { return false; } if (argc != 1) { action_output( #if defined(HAVE_START) /*[*/ " help online launch online help\n" #endif /*]*/ " help all all actions\n" " help 3270 3270 actions\n" " help interactive interactive (command-prompt) actions\n" " help help for one \n" " help options command-line options\n" " help scripting scripting actions\n" " help file-transfer file transfer options\n" #if defined(WC3270) /*[*/ " help html alias for 'help online'\n" #endif /*]*/ ); return true; } /* The (hidden) verify option verifies the integrity of the help list. */ if (!strcmp(argv[0], "verify")) { action_elt_t *e; bool any = false; for (i = 0; cmd_help[i].name; i++) { bool found = false; FOREACH_LLIST(&actions_list, e, action_elt_t *) { if (!strcasecmp(cmd_help[i].name, e->t.name)) { found = true; break; } } FOREACH_LLIST_END(&actions_list, e, action_elt_t *); if (!found) { action_output("Help for nonexistent action: %s", cmd_help[i].name); any = true; } } if (!any) { action_output("No orphaned help messages."); } any = false; FOREACH_LLIST(&actions_list, e, action_elt_t *) { bool found = false; for (i = 0; cmd_help[i].name; i++) { if (!strcasecmp(cmd_help[i].name, e->t.name)) { found = true; break; } } if (!found) { action_output("No Help for %s", e->t.name); any = true; } } FOREACH_LLIST_END(&actions_list, e, action_elt_t *); if (!any) { printf("No orphaned actions.\n"); } return true; } /* Do a substring match on all of the actions. */ for (i = 0; cmd_help[i].name != NULL; i++) { if (!strncasecmp(cmd_help[i].name, argv[0], strlen(argv[0]))) { action_output(" %s(%s)\n %s", cmd_help[i].name, cmd_help[i].args? cmd_help[i].args: "", cmd_help[i].help? cmd_help[i].help: ""); any = true; } } if (any) { return true; } /* Check for an exact match on one of the topics. */ for (i = 0; help_subcommand[i].name != NULL; i++) { if (!strncasecmp(help_subcommand[i].name, argv[0], strlen(argv[0]))) { match = help_subcommand[i].flag; overall = i; break; } } if (!match) { action_output("No such command: %s", argv[0]); return false; } /* Matched on a topic. */ if (help_subcommand[overall].text != NULL) { /* One-line topic. */ action_output("%s", help_subcommand[overall].text); return true; } if (help_subcommand[overall].block != NULL) { int j; /* Multi-line topic. */ for (j = 0; help_subcommand[overall].block[j] != NULL; j++) { action_output("%s", help_subcommand[overall].block[j]); } return true; } if (help_subcommand[overall].fn != NULL) { /* Indirect output for topic. */ (*help_subcommand[overall].fn)(true); return true; } /* Category. */ for (i = 0; cmd_help[i].name != NULL; i++) { if (cmd_help[i].purpose & match) { action_output(" %s(%s)\n %s", cmd_help[i].name, cmd_help[i].args? cmd_help[i].args: "", cmd_help[i].help? cmd_help[i].help: ""); } } return true; } #if defined(HAVE_START) || defined(WC3270) /*[*/ static void html_help(bool ignored _is_unused) { start_html_help(); } #endif /*]*/ /** * Help module registration. */ void help_register(void) { static action_table_t help_actions[] = { { AnHelp, Help_action, ACTION_KE } }; /* Register the actions. */ register_actions(help_actions, array_count(help_actions)); } suite3270-4.1/Common/c3270/help.h000066400000000000000000000031361413735575200161310ustar00rootroot00000000000000/* * Copyright (c) 2000-2009, 2013-2015 Paul Mattes. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the names of Paul Mattes nor the names of his contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO * EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * help.h * Header file for help.c */ extern void help_register(void); suite3270-4.1/Common/c3270/keymap.c000066400000000000000000000646721413735575200164760ustar00rootroot00000000000000/* * Copyright (c) 2000-2009, 2013-2016, 2019-2021 Paul Mattes. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the names of Paul Mattes nor the names of his contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO * EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * keymap.c * A curses-based 3270 Terminal Emulator * Keyboard mapping */ #include "globals.h" #include #include "appres.h" #include "resources.h" #include "actions.h" #include "glue.h" #include "host.h" #include "keymap.h" #include "lazya.h" #include "names.h" #include "popups.h" #include "screen.h" #include "status.h" #include "task.h" #include "trace.h" #include "unicodec.h" #include "utils.h" #include "varbuf.h" #include "vstatus.h" #if defined(HAVE_NCURSESW_NCURSES_H) /*[*/ #include #elif defined(HAVE_NCURSES_NCURSES_H) /*][*/ #include #elif defined(HAVE_NCURSES_H) /*][*/ #include #else /*][*/ #include #endif /*]*/ #define KM_3270_ONLY 0x0010 /* used in 3270 mode only */ #define KM_NVT_ONLY 0x0020 /* used in NVT mode only */ #define KM_INACTIVE 0x0040 /* wrong NVT/3270 mode, or overridden */ #define KM_KEYMAP 0x8000 #define KM_HINTS (KM_CTRL|KM_ALT) typedef struct { int key; /* KEY_XXX or 0 */ int modifiers; /* KM_ALT */ ucs4_t ucs4; /* character value */ } k_t; struct keymap { struct keymap *next; struct keymap *successor; int ncodes; /* number of key codes */ k_t *codes; /* key codes */ int *hints; /* hints (flags) */ char *name; /* keymap name */ char *file; /* file path or resource name */ int line; /* keymap line number */ bool temp; /* temporary keymap? */ char *action; /* actions to perform */ }; #define IS_INACTIVE(k) ((k)->hints[0] & KM_INACTIVE) static struct keymap *master_keymap = NULL; static bool last_3270 = false; static bool last_nvt = false; static int lookup_ccode(const char *s); static void keymap_3270_mode(bool); #define codecmp(k1, k2, len) \ kvcmp((k1)->codes, (k2)->codes, len) static void read_one_keymap(const char *name, const char *fn, bool temp, const char *r0, int flags); static void clear_keymap(void); static void set_inactive(void); /* * Compare two k_t's. * Returns 0 if equal, nonzero if not. */ static int kcmp(k_t *a, k_t *b) { if (a->key && b->key && (a->key == b->key)) { return 0; } if (a->ucs4 && b->ucs4 && (a->ucs4 == b->ucs4) && (a->modifiers == b->modifiers)) { return 0; } /* Special case for both a and b empty. */ if (!a->key && !b->key && !a->ucs4 && !b->ucs4) { return 0; } return 1; } /* * Compare a vector of k_t's. */ static int kvcmp(k_t *a, k_t *b, int len) { int i; for (i = 0; i < len; i++) { if (kcmp(&a[i], &b[i])) return 1; } return 0; } /* * Parse a key definition. * Returns <0 for error, 1 for key found and parsed, 0 for nothing found. * Returns the balance of the string and the character code. * Is destructive. */ static int parse_keydef(char **str, k_t *ccode, int *hint) { char *s = *str; char *t; char *ks; int flags = 0; ks_t Ks; bool matched = false; ccode->key = 0; ccode->ucs4 = 0; ccode->modifiers = 0; /* Check for nothing. */ while (isspace((unsigned char)*s)) { s++; } if (!*s) { return 0; } *str = s; s = strstr(s, ""); if (s == NULL) { return -1; } ks = s + 5; *s = '\0'; s = *str; while (*s) { while (isspace((unsigned char)*s)) { s++; } if (!*s) { break; } if (!strncmp(s, "Alt", 3)) { ccode->modifiers |= KM_ALT; s += 3; } else if (!strncmp(s, "Ctrl", 4)) { flags |= KM_CTRL; s += 4; } else { return -2; } } s = ks; while (isspace((unsigned char)*s)) { s++; } if (!*s) { return -3; } t = s; while (*t && !isspace((unsigned char)*t)) { t++; } if (*t) { *t++ = '\0'; } if (!strncasecmp(s, "U+", 2) || !strncasecmp(s, "0x", 2)) { unsigned long u; char *ptr; /* Direct specification of Unicode. */ u = strtoul(s + 2, &ptr, 16); if (u == 0 || *ptr != '\0') { return -7; } ccode->ucs4 = (ucs4_t)u; matched = true; } if (!matched) { ucs4_t u; int consumed; enum me_fail error; /* * Convert local multibyte to Unicode. If the result is 1 * character in length, use that code. */ u = multibyte_to_unicode(s, strlen(s), &consumed, &error); if (u != 0 && (size_t)consumed == strlen(s)) { ccode->ucs4 = u; matched = true; } } if (!matched) { /* Try an HTML entity name or X11 keysym. */ Ks = string_to_key(s); if (Ks != KS_NONE) { ccode->ucs4 = Ks; matched = true; } } if (!matched) { int cc; /* Try for a curses key name. */ cc = lookup_ccode(s); if (cc == -1) { return -4; } if (flags || ccode->modifiers) { return -5; /* no Alt/Ctrl with KEY_XXX */ } ccode->key = cc; matched = true; } /* Apply Ctrl. */ if (ccode->ucs4) { if (flags & KM_CTRL) { if (ccode->ucs4 > 0x20 && ccode->ucs4 < 0x80) { ccode->ucs4 &= 0x1f; } else { return -6; /* Ctrl ASCII-7 only */ } } } /* Return the remaining string, and success. */ *str = t; *hint = flags; return 1; } static char *pk_errmsg[] = { "Missing ", "Unknown modifier", "Missing keysym", "Unknown keysym", "Can't use Ctrl or Alt modifier with curses symbol", "Ctrl modifier is restricted to ASCII-7 printable characters", "Invalid Unicode syntax" }; /* * Locate a keymap resource or file. * Returns 0 for do-nothing, 1 for success, -1 for error. * On success, returns the full name of the resource or file (which must be * freed) in '*fullname'. * On success, returns a resource string (which must be closed) or NULL * (indicating a file name to open is in *fullname) in '*r'. */ static int locate_keymap(const char *name, char **fullname, char **r) { char *rs; /* resource value */ char *fnx; /* expanded file name */ int a; /* access(fnx) */ /* Return nothing, to begin with. */ *fullname = NULL; *r = NULL; /* See if it's a resource. */ rs = get_fresource(ResKeymap ".%s", name); /* If there's a plain version, return it. */ if (rs != NULL) { *fullname = NewString(name); *r = NewString(rs); return 1; } /* See if it's a file. */ fnx = do_subst(name, DS_VARS | DS_TILDE); a = access(fnx, R_OK); /* If there's a plain version, return it. */ if (a == 0) { *fullname = fnx; return 1; } /* No dice. */ Free(fnx); return -1; } /* Add a keymap entry. */ static void add_keymap_entry(int ncodes, k_t *codes, int *hints, const char *name, const char *file, int line, bool temp, const char *action, struct keymap ***nextkp) { struct keymap *k; /* Allocate a new node. */ k = Malloc(sizeof(struct keymap)); k->next = NULL; k->successor = NULL; k->ncodes = ncodes; k->codes = Malloc(ncodes * sizeof(k_t)); memcpy(k->codes, codes, ncodes * sizeof(k_t)); k->hints = Malloc(ncodes * sizeof(int)); memcpy(k->hints, hints, ncodes * sizeof(int)); k->name = NewString(name); k->file = NewString(file); k->line = line; k->temp = temp; k->action = NewString(action); /* Link it in. */ **nextkp = k; *nextkp = &k->next; } /* * Read a keymap from a file. * Returns true for success, false for an error. * * Keymap files look suspiciously like x3270 keymaps, but aren't. */ static bool read_keymap(const char *name, bool temp) { char *name_3270 = xs_buffer("%s.3270", name); char *name_nvt = xs_buffer("%s.nvt", name); int rc, rc_3270, rc_nvt; char *fn, *fn_3270, *fn_nvt; char *r0, *r0_3270, *r0_nvt; if (master_keymap != NULL && !strcmp(name, master_keymap->name)) { popup_an_error("Duplicate keymap: %s", name); return false; } rc = locate_keymap(name, &fn, &r0); rc_3270 = locate_keymap(name_3270, &fn_3270, &r0_3270); rc_nvt = locate_keymap(name_nvt, &fn_nvt, &r0_nvt); if (rc < 0 && rc_3270 < 0 && rc_nvt < 0) { popup_an_error("No such keymap resource or file: %s", name); Free(name_3270); Free(name_nvt); return false; } if (rc >= 0) { read_one_keymap(name, fn, temp, r0, 0); Free(fn); Free(r0); } if (rc_3270 >= 0) { read_one_keymap(name_3270, fn_3270, temp, r0_3270, KM_3270_ONLY); Free(fn_3270); Free(r0_3270); } if (rc_nvt >= 0) { read_one_keymap(name_nvt, fn_nvt, temp, r0_nvt, KM_NVT_ONLY); Free(fn_nvt); Free(r0_nvt); } Free(name_3270); Free(name_nvt); return true; } /* * Read a keymap from a file. * Accumulates the keymap onto the list pointed to by nextkp. * Returns 0 for success, -1 for an error. * * Keymap files look suspiciously like x3270 keymaps, but aren't. */ static void read_one_keymap_internal(const char *name, const char *fn, bool temp, const char *r0, int flags, struct keymap ***nextkp) { char *r = NULL; /* resource value */ char *r_copy = NULL; /* initial value of r */ FILE *f = NULL; /* resource file */ char buf[1024]; /* file read buffer */ int line = 0; /* line number */ char *left, *right; /* chunks of line */ static int ncodes = 0; static int maxcodes = 0; static k_t *codes = NULL; static int *hints = NULL; int rc = 0; char *action_error; /* Find the resource or file. */ if (r0 != NULL) { r = r_copy = NewString(r0); } else { f = fopen(fn, "r"); if (f == NULL) { xs_warning("Cannot open file: %s", fn); return; } } while ((r != NULL)? (rc = split_dresource(&r, &left, &right)): fgets(buf, sizeof(buf), f) != NULL) { char *s; k_t ccode; int pkr; int hint; line++; /* Skip empty lines and comments. */ if (r == NULL) { s = buf; while (isspace((unsigned char)*s)) { s++; } if (!*s || *s == '!' || *s == '#') { continue; } } /* Split. */ if (rc < 0 || (r == NULL && split_dresource(&s, &left, &right) < 0)) { popup_an_error("Keymap %s, line %d: syntax error", fn, line); goto done; } if (!validate_command(right, (int)(right - left), &action_error)) { popup_an_error("Keymap %s, line %d: error:\n%s", fn, line, action_error); Free(action_error); goto done; } pkr = parse_keydef(&left, &ccode, &hint); if (pkr == 0) { popup_an_error("Keymap %s, line %d: Missing ", fn, line); goto done; } if (pkr < 0) { popup_an_error("Keymap %s, line %d: %s", fn, line, pk_errmsg[-1 - pkr]); goto done; } /* Accumulate keycodes. */ ncodes = 0; do { if (++ncodes > maxcodes) { maxcodes = ncodes; codes = Realloc(codes, maxcodes * sizeof(k_t)); hints = Realloc(hints, maxcodes * sizeof(int)); } codes[ncodes - 1] = ccode; /* struct copy */ hints[ncodes - 1] = hint; pkr = parse_keydef(&left, &ccode, &hint); if (pkr < 0) { popup_an_error("Keymap %s, line %d: %s", fn, line, pk_errmsg[-1 - pkr]); goto done; } } while (pkr != 0); /* Add it to the list. */ hints[0] |= flags; add_keymap_entry(ncodes, codes, hints, name, fn, line, temp, right, nextkp); } done: Free(r_copy); if (f != NULL) { fclose(f); } } /* * Read a keymap from a file. * Adds the keymap to the front of the 'master_keymap' list. * Returns 0 for success, -1 for an error. */ static void read_one_keymap(const char *name, const char *fn, bool temp, const char *r0, int flags) { struct keymap *one_master; struct keymap **one_nextk; /* Read in the keymap. */ one_master = NULL; one_nextk = &one_master; read_one_keymap_internal(name, fn, temp, r0, flags, &one_nextk); if (one_master == NULL) { /* Nothing added. */ return; } if (master_keymap == NULL) { /* Something added, nothing there before. */ master_keymap = one_master; return; } /* Insert this keymap ahead of the previous ones. */ *one_nextk = master_keymap; master_keymap = one_master; } /* Multi-key keymap support. */ static struct keymap *current_match = NULL; static int consumed = 0; static char *ignore = "[ignore]"; /* Find the shortest keymap with a longer match than k. */ static struct keymap * longer_match(struct keymap *k, int nc) { struct keymap *j; struct keymap *shortest = NULL; for (j = master_keymap; j != NULL; j = j->next) { if (IS_INACTIVE(j)) { continue; } if (j != k && j->ncodes > nc && !codecmp(j, k, nc)) { if (j->ncodes == nc+1) { return j; } if (shortest == NULL || j->ncodes < shortest->ncodes) { shortest = j; } } } return shortest; } /* * Helper function that returns a keymap action, sets the status line, and * traces the result. * * If s is NULL, then this is a failed initial lookup. * If s is 'ignore', then this is a lookup in progress (k non-NULL) or a * failed multi-key lookup (k NULL). * Otherwise, this is a successful lookup. */ static char * status_ret(char *s, struct keymap *k) { /* Set the compose indicator based on the new value of current_match. */ if (k != NULL) { vstatus_compose(true, ' ', KT_STD); } else { vstatus_compose(false, 0, KT_STD); } if (s != NULL && s != ignore) { vtrace(" %s:%d -> %s\n", current_match->file, current_match->line, s); } if ((current_match = k) == NULL) { consumed = 0; } return s; } /* Timeout for ambiguous keymaps. */ static struct keymap *timeout_match = NULL; static ioid_t kto = NULL_IOID; static void key_timeout(ioid_t id _is_unused) { vtrace("Timeout, using shortest keymap match\n"); kto = NULL_IOID; current_match = timeout_match; push_keymap_action(status_ret(timeout_match->action, NULL)); timeout_match = NULL; } static struct keymap * ambiguous(struct keymap *k, int nc) { struct keymap *j; if ((j = longer_match(k, nc)) != NULL) { vtrace(" ambiguous keymap match, shortest is %s:%d, setting timeout\n", j->file, j->line); timeout_match = k; kto = AddTimeOut(500L, key_timeout); } return j; } /* * Look up an key in the keymap, return the matching action if there is one. * * This code implements the mutli-key lookup, by returning dummy actions for * partial matches. * * It also handles keyboards that generate ESC for the Alt key. */ char * lookup_key(int kcode, ucs4_t ucs4, int modifiers) { struct keymap *j, *k; int n_shortest = 0; k_t code; code.key = kcode; code.ucs4 = ucs4; code.modifiers = modifiers; /* If there's a timeout pending, cancel it. */ if (kto != NULL_IOID) { RemoveTimeOut(kto); kto = NULL_IOID; timeout_match = NULL; } /* If there's no match pending, find the shortest one. */ if (current_match == NULL) { struct keymap *shortest = NULL; for (k = master_keymap; k != NULL; k = k->next) { if (IS_INACTIVE(k)) continue; if (!kcmp(&code, &k->codes[0])) { if (k->ncodes == 1) { shortest = k; break; } if (shortest == NULL || k->ncodes < shortest->ncodes) { shortest = k; n_shortest++; } } } if (shortest != NULL) { current_match = shortest; consumed = 0; } else { return NULL; } } /* See if this character matches the next one we want. */ if (!kcmp(&code, ¤t_match->codes[consumed])) { consumed++; if (consumed == current_match->ncodes) { /* Final match. */ j = ambiguous(current_match, consumed); if (j == NULL) { return status_ret(current_match->action, NULL); } else { return status_ret(ignore, j); } } else { /* Keep looking. */ vtrace(" partial keymap match in %s:%d %s\n", current_match->file, current_match->line, (n_shortest > 1)? " and other(s)": ""); return status_ret(ignore, current_match); } } /* It doesn't. Try for a better candidate. */ for (k = master_keymap; k != NULL; k = k->next) { if (IS_INACTIVE(k)) { continue; } if (k == current_match) { continue; } if (k->ncodes > consumed && !codecmp(k, current_match, consumed) && !kcmp(&k->codes[consumed], &code)) { consumed++; if (k->ncodes == consumed) { j = ambiguous(k, consumed); if (j == NULL) { current_match = k; return status_ret(k->action, NULL); } else { return status_ret(ignore, j); } } else { return status_ret(ignore, k); } } } /* Complain. */ beep(); vtrace(" keymap lookup failure after partial match\n"); return status_ret(ignore, NULL); } static struct { const char *name; int code; } ncurses_key[] = { { "BREAK", KEY_BREAK }, { "DOWN", KEY_DOWN }, { "UP", KEY_UP }, { "LEFT", KEY_LEFT }, { "RIGHT", KEY_RIGHT }, { "HOME", KEY_HOME }, { "BACKSPACE", KEY_BACKSPACE }, { "F0", KEY_F0 }, { "DL", KEY_DL }, { "IL", KEY_IL }, { "DC", KEY_DC }, { "IC", KEY_IC }, { "EIC", KEY_EIC }, { "CLEAR", KEY_CLEAR }, { "EOS", KEY_EOS }, { "EOL", KEY_EOL }, { "SF", KEY_SF }, { "SR", KEY_SR }, { "NPAGE", KEY_NPAGE }, { "PPAGE", KEY_PPAGE }, { "STAB", KEY_STAB }, { "CTAB", KEY_CTAB }, { "CATAB", KEY_CATAB }, { "ENTER", KEY_ENTER }, { "SRESET", KEY_SRESET }, { "RESET", KEY_RESET }, { "PRINT", KEY_PRINT }, { "LL", KEY_LL }, { "A1", KEY_A1 }, { "A3", KEY_A3 }, { "B2", KEY_B2 }, { "C1", KEY_C1 }, { "C3", KEY_C3 }, { "BTAB", KEY_BTAB }, { "BEG", KEY_BEG }, { "CANCEL", KEY_CANCEL }, { "CLOSE", KEY_CLOSE }, { "COMMAND", KEY_COMMAND }, { "COPY", KEY_COPY }, { "CREATE", KEY_CREATE }, { "END", KEY_END }, { "EXIT", KEY_EXIT }, { "FIND", KEY_FIND }, { "HELP", KEY_HELP }, { "MARK", KEY_MARK }, { "MESSAGE", KEY_MESSAGE }, { "MOVE", KEY_MOVE }, { "NEXT", KEY_NEXT }, { "OPEN", KEY_OPEN }, { "OPTIONS", KEY_OPTIONS }, { "PREVIOUS", KEY_PREVIOUS }, { "REDO", KEY_REDO }, { "REFERENCE", KEY_REFERENCE }, { "REFRESH", KEY_REFRESH }, { "REPLACE", KEY_REPLACE }, { "RESTART", KEY_RESTART }, { "RESUME", KEY_RESUME }, { "SAVE", KEY_SAVE }, { "SBEG", KEY_SBEG }, { "SCANCEL", KEY_SCANCEL }, { "SCOMMAND", KEY_SCOMMAND }, { "SCOPY", KEY_SCOPY }, { "SCREATE", KEY_SCREATE }, { "SDC", KEY_SDC }, { "SDL", KEY_SDL }, { "SELECT", KEY_SELECT }, { "SEND", KEY_SEND }, { "SEOL", KEY_SEOL }, { "SEXIT", KEY_SEXIT }, { "SFIND", KEY_SFIND }, { "SHELP", KEY_SHELP }, { "SHOME", KEY_SHOME }, { "SIC", KEY_SIC }, { "SLEFT", KEY_SLEFT }, { "SMESSAGE", KEY_SMESSAGE }, { "SMOVE", KEY_SMOVE }, { "SNEXT", KEY_SNEXT }, { "SOPTIONS", KEY_SOPTIONS }, { "SPREVIOUS", KEY_SPREVIOUS }, { "SPRINT", KEY_SPRINT }, { "SREDO", KEY_SREDO }, { "SREPLACE", KEY_SREPLACE }, { "SRIGHT", KEY_SRIGHT }, { "SRSUME", KEY_SRSUME }, { "SSAVE", KEY_SSAVE }, { "SSUSPEND", KEY_SSUSPEND }, { "SUNDO", KEY_SUNDO }, { "SUSPEND", KEY_SUSPEND }, { "UNDO", KEY_UNDO }, { NULL, 0 } }; /* Look up a curses symbolic key. */ static int lookup_ccode(const char *s) { int i; unsigned long f; char *ptr; for (i = 0; ncurses_key[i].name != NULL; i++) { if (!strcasecmp(s, ncurses_key[i].name)) { return ncurses_key[i].code; } } if (s[0] == 'F' && (f = strtoul(s + 1, &ptr, 10)) < 64 && ptr != s + 1 && *ptr == '\0') { return KEY_F(f); } return -1; } /* Look up a curses key code. */ static const char * lookup_cname(int ccode) { int i; for (i = 0; ncurses_key[i].name != NULL; i++) { if (ccode == ncurses_key[i].code) { return ncurses_key[i].name; } } for (i = 0; i < 64; i++) { if (ccode == KEY_F(i)) { static char buf[10]; sprintf(buf, "F%d", i); return buf; } } return NULL; } /** * Free a temporary keymap entry. */ static void free_keymap(struct keymap *k) { Free(k->codes); Free(k->hints); Free(k->name); Free(k->file); Free(k->action); Free(k); } /** * Push or pop a temporary keymap. */ static bool Keymap_action(ia_t ia, unsigned argc, const char **argv) { action_debug(AnKeymap, ia, argc, argv); if (check_argc(AnKeymap, argc, 0, 1) < 0) { return false; } if (argc > 0) { /* Push this keymap. */ if (!read_keymap(argv[0], true)) { return false; } /* Set the inactive flags. */ set_inactive(); } else { struct keymap *k; char *km_name = NULL; if (master_keymap == NULL || !master_keymap->temp) { return true; } km_name = NewString(master_keymap->name); /* Pop the top keymap. */ while ((k = master_keymap) != NULL) { if (!k->temp || strcmp(k->name, km_name)) { break; } master_keymap = k->next; free_keymap(k); } Free(km_name); /* Set the inactive flags. */ set_inactive(); } return true; } /** * Keymap module registrations. */ void keymap_register(void) { static action_table_t keymap_actions[] = { { AnKeymap, Keymap_action, ACTION_KE }, { AnTemporaryKeymap, Keymap_action, ACTION_KE } }; /* Register for state changes. */ register_schange(ST_3270_MODE, keymap_3270_mode); register_schange(ST_CONNECT, keymap_3270_mode); /* Register the actions. */ register_actions(keymap_actions, array_count(keymap_actions)); } /* Read each of the keymaps specified by the keymap resource. */ void keymap_init(void) { char *s0, *s; char *comma; /* In case this is a subsequent call, wipe out the current keymap. */ clear_keymap(); /* Read the base keymap. */ read_keymap("base", false); /* Read the user-defined keymaps. */ if (appres.interactive.key_map != NULL) { s = s0 = NewString(appres.interactive.key_map); while ((comma = strchr(s, ',')) != NULL) { *comma = '\0'; if (*s) { read_keymap(s, false); } s = comma + 1; } if (*s) { read_keymap(s, false); } Free(s0); } last_3270 = IN_3270; last_nvt = IN_NVT; set_inactive(); } /* Erase the current keymap. */ static void clear_keymap(void) { struct keymap *k, *next; for (k = master_keymap; k != NULL; k = next) { next = k->next; free_keymap(k); } master_keymap = NULL; } /* Set the inactive flags for the current keymap. */ static void set_inactive(void) { struct keymap *k, *j; /* Clear the inactive flags and successors. */ for (k = master_keymap; k != NULL; k = k->next) { k->hints[0] &= ~KM_INACTIVE; k->successor = NULL; } /* Turn off elements which have the wrong mode. */ for (k = master_keymap; k != NULL; k = k->next) { /* If the mode is wrong, turn it off. */ if ((!last_3270 && (k->hints[0] & KM_3270_ONLY)) || (!last_nvt && (k->hints[0] & KM_NVT_ONLY))) { k->hints[0] |= KM_INACTIVE; } } /* Compute superseded entries. */ for (k = master_keymap; k != NULL; k = k->next) { if (k->hints[0] & KM_INACTIVE) { continue; } for (j = k->next; j != NULL; j = j->next) { if (j->hints[0] & KM_INACTIVE) { continue; } /* It may supercede other entries. */ if (j->ncodes == k->ncodes && !codecmp(j, k, k->ncodes)) { j->hints[0] |= KM_INACTIVE; j->successor = k; } } } } /* 3270/NVT mode change. */ static void keymap_3270_mode(bool ignored _is_unused) { if (last_3270 != IN_3270 || last_nvt != IN_NVT) { last_3270 = IN_3270; last_nvt = IN_NVT; set_inactive(); } } /* * Decode a key. * Accepts a hint as to which form was used to specify it, if it came from a * keymap definition. */ const char * decode_key(int k, ucs4_t ucs4, int hint, char *buf) { const char *n; int len; char mb[16]; char *s = buf; if (k) { /* Curses key. */ if ((n = lookup_cname(k)) != NULL) { sprintf(buf, "%s", n); } else { sprintf(buf, "[unknown curses key 0x%x]", k); } return buf; } if (hint & KM_ALT) { s += sprintf(s, "Alt"); } if (ucs4 < ' ') { /* Control key. */ char *latin1_name = key_to_string(ucs4); if (latin1_name != NULL) { strcpy(buf, latin1_name); } else { sprintf(s, "Ctrl%c", (int)(ucs4 + '@') & 0xff); } return buf; } /* Special-case ':' and ' ' because of the keymap syntax. */ if (ucs4 == ':') { strcpy(s, "colon"); return buf; } if (ucs4 == ' ') { strcpy(s, "space"); return buf; } /* Convert from Unicode to local multi-byte. */ len = unicode_to_multibyte(ucs4, mb, sizeof(mb)); if (len > 0) { sprintf(s, "%s", mb); } else { sprintf(s, "U+%04x", k); } return buf; } /* Dump the current keymap. */ const char * keymap_dump(void) { varbuf_t r; struct keymap *k; char *s; size_t sl; vb_init(&r); for (k = master_keymap; k != NULL; k = k->next) { if (k->successor != NULL) { vb_appendf(&r, "[%s:%d%s] -- superseded by %s:%d --\n", k->file, k->line, k->temp? " temp": "", k->successor->file, k->successor->line); } else if (!IS_INACTIVE(k)) { int i; char buf[1024]; char *s = buf; char dbuf[128]; char *t = safe_string(k->action); for (i = 0; i < k->ncodes; i++) { s += sprintf(s, " %s", decode_key(k->codes[i].key, k->codes[i].ucs4, (k->hints[i] & KM_HINTS) | KM_KEYMAP | k->codes[i].modifiers, dbuf)); } vb_appendf(&r, "[%s:%d%s]%s: %s\n", k->file, k->line, k->temp? " temp": "", buf, t); Free(t); } } s = vb_consume(&r); sl = strlen(s); if (sl > 0 && s[sl - 1] == '\n') { s[sl - 1] = '\0'; } return lazya(s); } suite3270-4.1/Common/c3270/keypad.c000066400000000000000000000275771413735575200164700ustar00rootroot00000000000000/* * Copyright (c) 2009, 2013-2015, 2019-2020 Paul Mattes. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the names of Paul Mattes nor the names of his contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO * EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * keypad.c * A curses-based 3270 Terminal Emulator * Pop-up keypad */ #include "globals.h" #include "actions.h" #include "3270ds.h" #include "appres.h" #include "ckeypad.h" #include "cmenubar.h" #include "ctlrc.h" #include "names.h" #include "task.h" #if !defined(_WIN32) /*[*/ # if defined(HAVE_NCURSESW_NCURSES_H) /*[*/ # include # elif defined(HAVE_NCURSES_NCURSES_H) /*][*/ # include # elif defined(HAVE_NCURSES_H) /*][*/ # include # else /*][*/ # include # endif /*]*/ #endif /*]*/ /* Sensitivity map: A rectangular region and a callback function. */ typedef struct { unsigned char ul_x, ul_y; /* upper left corner */ unsigned char lr_x, lr_y; /* lower right corner */ char *callback; /* callback macro string */ } sens_t; /* Keymap descriptor for one character cell. */ typedef struct { unsigned char literal; /* literal character, or 0 */ unsigned char outline; /* box-drawing character (ACS notation) */ sens_t *sens; /* sensitivity map element, for highlighting */ } keypad_desc_t; /* Pull in the compiled keypad structures (sens, keypad_desc). */ #include "compiled_keypad.h" #define KEYPAD_HEIGHT (sizeof(keypad_desc)/sizeof(keypad_desc[0])) #define NUM_SENSE (sizeof(sens)/sizeof(sens[0])) static sens_t *current_sens = NULL; #if defined(XXX_DEBUG) || defined(YYY_DEBUG) || defined(ZZZ_DEBUG) static FILE *xxx = NULL; #endif /* Return the keypad character on top of the screen. */ bool keypad_char(int row, int col, ucs4_t *u, bool *highlighted, unsigned char *acs) { keypad_desc_t *d; if ((menu_is_up & KEYPAD_IS_UP) && (unsigned)row < KEYPAD_HEIGHT && col < MODEL_2_COLS) { d = &keypad_desc[row][col]; if (d->outline && d->outline != ' ') { map_acs(d->outline, u, acs); *highlighted = (d->sens != NULL) && (d->sens == current_sens); #ifdef XXX_DEBUG fprintf(xxx, "row %d col %d outline 0x%x !highlight\n", row, col, *u); #endif return true; } if (d->literal) { *u = d->literal; *highlighted = (d->sens != NULL) && (d->sens == current_sens); #ifdef XXX_DEBUG fprintf(xxx, "row %d col %d literal '%c' d->sens %p " "%s current_sens %p %s\n", row, col, *u, (void *)d->sens, d->sens? d->sens->callback: "(null)", (void *)current_sens, current_sens->callback); #endif return true; } } *u = 0; *highlighted = false; return false; } /* Report where to land the cursor when the keypad is up. */ void keypad_cursor(int *row, int *col) { if (menu_is_up & KEYPAD_IS_UP) { *row = current_sens->ul_y; *col = current_sens->ul_x; } else { *row = 0; *col = 0; } } /* Pop up the keypad. */ void pop_up_keypad(bool up) { if (up) { menu_is_up |= KEYPAD_IS_UP; current_sens = &sens[0]; #if defined(XXX_DEBUG) || defined(YYY_DEBUG) || defined(ZZZ_DEBUG) if (xxx == NULL) { xxx = fopen("/tmp/ccc", "a"); if (xxx == NULL) { perror("/tmp/ccc"); exit(1); } } #endif } else { menu_is_up &= ~KEYPAD_IS_UP; current_sens = NULL; } screen_changed = true; } /* * Find the center of a button. We deliberately round *up* here, so that when * two centers are compared, the bias is up and to the left. * * Here's the picture: * 0 +-----+ * 1 | a | * 2 | | +------+ * 3 +-----+ | c | * 4 | b | +------+ * 5 | | * 6 +-----+ * * We want 'a' to be chosen when going left from 'c'. * We round up to make the center of 'a' 2 (not 1), and the center of 'b' 5 * (not 4). The center of 'c' is 3. * Because of the round-up, 'a' is better centered than 'b'. */ static int find_center_x(sens_t *s) { return s->ul_x + ((s->lr_x - s->ul_x + 1) / 2); } static int find_center_y(sens_t *s) { return s->ul_y + ((s->lr_y - s->ul_y + 1) / 2); } /* * Find the best adjacent button. xinc and yinc indicate the search direction: * xinc yinc direction * 0 -1 up * 0 +1 down * -1 0 left * +1 0 right */ static void find_adjacent(int xinc, int yinc) { int ul_x, lr_x, ul_y, lr_y; # define N_MATCH 4 sens_t *matches[N_MATCH]; int n_matched = 0; if (yinc) { /* Searching up or down. Spread x out. */ ul_x = current_sens->ul_x - 1; lr_x = current_sens->lr_x + 1; if (yinc < 0) { /* Up. */ ul_y = current_sens->ul_y - 1; lr_y = current_sens->ul_y - 1; } else { /* Down. */ ul_y = current_sens->lr_y + 1; lr_y = current_sens->lr_y + 1; } } else { /* Searching left or right. Spread y out. */ ul_y = current_sens->ul_y - 1; lr_y = current_sens->lr_y + 1; if (xinc < 0) { /* Left. */ ul_x = current_sens->ul_x - 1; lr_x = current_sens->ul_x - 1; } else { /* Right. */ ul_x = current_sens->lr_x + 1; lr_x = current_sens->lr_x + 1; } } #if defined(YYY_DEBUG) fprintf(xxx, "ul_y %d ul_x %d lr_y %d lr_x %d\n", ul_y, ul_x, lr_y, lr_x); fflush(xxx); #endif while (true) { int x, y; for (y = ul_y; y <= lr_y; y++) { for (x = ul_x; x <= lr_x; x++) { #if defined(YYY_DEBUG) fprintf(xxx, "searching row %d col %d\n", x, y); fflush(xxx); #endif if (keypad_desc[y][x].sens != NULL && n_matched < N_MATCH) { int i; for (i = 0; i < n_matched; i++) { if (matches[i] == keypad_desc[y][x].sens) break; } if (i >= n_matched) { matches[n_matched++] = keypad_desc[y][x].sens; } } } } if (n_matched) { int i; #if defined(ZZZ_DEBUG) fprintf(xxx, "%d matches:", n_matched); for (i = 0; i < n_matched; i++) { fprintf(xxx, " %s", matches[i]->callback); } fprintf(xxx, "\n"); fflush(xxx); #endif if (n_matched == 0) current_sens = matches[0]; else { int overlap[N_MATCH]; int center[N_MATCH]; int best_o = -1; int best_c = -1; int tie = 0; int curr_center; /* Find the best match. */ for (i = 0; i < n_matched; i++) { int j; overlap[i] = 0; if (yinc) { /* * Scanning up/down, measure X * overlap. */ for (j = matches[i]->ul_x; j <= matches[i]->lr_x; j++) { if (j >= ul_x && j <= lr_x) { overlap[i]++; } if (j >= ul_x + 1 && j <= lr_x - 1) { overlap[i]++; } } } else { /* * Scanning left/right, measure * Y overlap. */ for (j = matches[i]->ul_y; j <= matches[i]->lr_y; j++) { if (j >= ul_y && j <= lr_y) { overlap[i]++; } if (j >= ul_y + 1 && j <= lr_y - 1) { overlap[i]++; } } } } for (i = 0; i < n_matched; i++) { if (best_o < 0 || overlap[i] > overlap[best_o]) best_o = i; } for (i = 0; i < n_matched; i++) { if (i != best_o && overlap[i] == overlap[best_o]) tie++; if (yinc) center[i] = find_center_x(matches[i]); else center[i] = find_center_y(matches[i]); } #if defined(ZZZ_DEBUG) fprintf(xxx, "overlaps:"); for (i = 0; i < n_matched; i++) { fprintf(xxx, " %d", overlap[i]); if (i == best_o) fprintf(xxx, "*"); } fprintf(xxx, ", tie %d\n", tie); fflush(xxx); #endif if (tie) { /* * Pick the best-centered match. * That's the one whose center is * closest to the center of the current * button. */ if (yinc) curr_center = find_center_x(current_sens); else curr_center = find_center_y(current_sens); #if defined(ZZZ_DEBUG) fprintf(xxx, "curr_center is %d\n", curr_center); fflush(xxx); #endif for (i = 0; i < n_matched; i++) { if (overlap[i] == overlap[best_o]) { if (best_c < 0 || abs(curr_center - center[i]) < abs(curr_center - center[best_c])) { #if defined(ZZZ_DEBUG) fprintf(xxx, "center '%s' (%d) is better\n", matches[i]->callback, center[i]); fflush(xxx); #endif best_c = i; } } } current_sens = matches[best_c]; } else current_sens = matches[best_o]; } break; } /* Keep looking. */ ul_x += xinc; lr_x += xinc; ul_y += yinc; lr_y += yinc; if (ul_x < 0 || lr_x >= MODEL_2_COLS || ul_y < 0 || (size_t)lr_y >= KEYPAD_HEIGHT) break; } } #if defined(_WIN32) /*[*/ void keypad_click(int x, int y) { size_t i; if (!(menu_is_up & KEYPAD_IS_UP)) return; /* Find it. */ for (i = 0; i < NUM_SENSE; i++) { if (x >= sens[i].ul_x && y >= sens[i].ul_y && x <= sens[i].lr_x && y <= sens[i].lr_y) { push_keypad_action(sens[i].callback); break; } } pop_up_keypad(false); } #endif /*]*/ /* Process a key event while the keypad is up. */ void keypad_key(int k, ucs4_t u) { if (!(menu_is_up & KEYPAD_IS_UP)) return; switch (k) { #if defined(NCURSES_MOUSE_VERSION) /*[*/ case MK_MOUSE: { MEVENT m; size_t i; if (getmouse(&m) != OK) return; if (!(m.bstate & (BUTTON1_PRESSED || BUTTON1_RELEASED))) return; /* Find it. */ for (i = 0; i < NUM_SENSE; i++) { if (m.x >= sens[i].ul_x && m.y >= sens[i].ul_y && m.x <= sens[i].lr_x && m.y <= sens[i].lr_y) { push_keypad_action(sens[i].callback); break; } } pop_up_keypad(false); break; } #endif /*]*/ case MK_UP: find_adjacent(0, -1); break; case MK_DOWN: find_adjacent(0, 1); break; case MK_LEFT: find_adjacent(-1, 0); break; case MK_RIGHT: find_adjacent(1, 0); break; case MK_HOME: /* Find the first entry. */ current_sens = &sens[0]; break; case MK_END: /* Find the last entry. */ current_sens = &sens[NUM_SENSE - 1]; break; case MK_ENTER: push_keypad_action(current_sens->callback); pop_up_keypad(false); break; case MK_NONE: switch (u) { case '\r': case '\n': push_keypad_action(current_sens->callback); break; default: break; } pop_up_keypad(false); break; default: case MK_OTHER: pop_up_keypad(false); break; } screen_changed = true; } bool Keypad_action(ia_t ia, unsigned argc, const char **argv) { action_debug(AnKeypad, ia, argc, argv); if (check_argc(AnKeypad, argc, 0, 0) < 0) { return false; } pop_up_keypad(true); return true; } /** * Keypad module registration. */ void keypad_register(void) { static action_table_t keypad_actions[] = { { AnKeypad, Keypad_action, ACTION_KE } }; /* Register the actions. */ register_actions(keypad_actions, array_count(keypad_actions)); } suite3270-4.1/Common/c3270/keypad.callbacks000066400000000000000000000006051413735575200201440ustar00rootroot00000000000000a PA(1) b PA(2) c Attn d PA(3) e EraseEOF f EraseInput g SysReq h Clear i Home j CursorSelect k Compose l Insert m Delete n Dup o FieldMark q Tab r Reset s BackTab t Newline u Enter v PF(13) w PF(14) x PF(15) y PF(16) z PF(17) A PF(18) B PF(19) C PF(20) D PF(21) E PF(22) F PF(23) G PF(24) H PF(1) I PF(2) J PF(3) K PF(4) L PF(5) M PF(6) N PF(7) O PF(8) P PF(9) Q PF(10) R PF(11) S PF(12) suite3270-4.1/Common/c3270/keypad.full000066400000000000000000000021561413735575200171720ustar00rootroot00000000000000 +--+--+--+--+--+--+--+--+--+--+--+--+ +------+------+ PF-|13|14|15|16|17|18|19|20|21|22|23|24| +------+------+ | PA1 | PA2 | +--+--+--+--+--+--+--+--+--+--+--+--+ | Home | | | | | PF-| 1| 2| 3| 4| 5| 6| 7| 8| 9|10|11|12| | | | +------+------+ +--+--+--+--+--+--+--+--+--+--+--+--+ +------+------+ | Attn | PA3 | |Cursor|Cmpose| | | | +-------+ +-------+ |Select| | +------+------+ | -->| | | |<-- | +------+------+ |Erase |Erase | +-------+ +-------+ |Insert|Delete| | EOF |Input | | | | | | | +------+------+ | <-+ | +------+------+ | Sys |Clear | +-------+ | Dup |Field | | Req | | +-------+ +-------+ | | Mark | +------+------+ | Reset | | Enter | +------+------+ +-------+ +-------+ suite3270-4.1/Common/c3270/keypad.labels000066400000000000000000000023361413735575200174720ustar00rootroot00000000000000 PF- 13 14 15 16 17 18 19 20 21 22 23 24 PA1 PA2 Home PF- 1 2 3 4 5 6 7 8 9 10 11 12 Attn PA3 Cursor Cmpose Select > < Erase Erase Insert Delete EOF Input < Sys Clear Dup Field Req Mark Reset Enter suite3270-4.1/Common/c3270/keypad.map000066400000000000000000000021571413735575200170060ustar00rootroot00000000000000 vv ww xx yy zz AA BB CC DD EE FF GG aaaaaa bbbbbb iiiiii aaaaaa bbbbbb HH II JJ KK LL MM NN OO PP QQ RR SS iiiiii cccccc dddddd jjjjjj kkkkkk cccccc dddddd jjjjjj kkkkkk qqqqqqq sssssss eeeeee ffffff llllll mmmmmm eeeeee ffffff ttttttt llllll mmmmmm ttttttt gggggg hhhhhh nnnnnn oooooo gggggg hhhhhh nnnnnn oooooo rrrrrrr uuuuuuu suite3270-4.1/Common/c3270/keypad.outline000066400000000000000000000023361413735575200177070ustar00rootroot00000000000000 sssssssssssssssss slqqwqqwqqwqqwqqwqqwqqwqqwqqwqqwqqwqqks sssssssssssssssss slqqqqqqwqqqqqqkss sx x x x x x x x x x x x xs slqqqqqqwqqqqqqks sx x xs stqqnqqnqqnqqnqqnqqnqqnqqnqqnqqnqqnqqus sx xssssssxs sx x xss sx x x x x x x x x x x x xs sx xssssssxs stqqqqqqnqqqqqqus smqqvqqvqqvqqvqqvqqvqqvqqvqqvqqvqqvqqjs stqqqqqqnqqqqqqus sx x xs sssssssssssssssssssssssssssssssssssssss sx x xs sx x xs slqqqqqqqks slqqqqqqqks sx x xs stqqqqqqnqqqqqqus sx qq x xs sx x qq xs stqqqqqqnqqqqqqus sx x xs smqqqqqqqjs stqqqqqqqus sx x xs sx x xs sx x xs sx x xs stqqqqqqnqqqqqqus sx qj xs stqqqqqqnqqqqqqus sx x xs sssssssssss smqqqqqqqjs sx x xs sx x xs slqqqqqqqks slqqqqqqqks sx x xs smqqqqqqvqqqqqqjs sx xs sx xs smqqqqqqvqqqqqqjs sssssssssssssssss smqqqqqqqjs smqqqqqqqjs sssssssssssssssss sssssssssss sssssssssss suite3270-4.1/Common/c3270/localdefs.h000066400000000000000000000037401413735575200171360ustar00rootroot00000000000000/* * Copyright (c) 2000-2009, 2013-2015 Paul Mattes. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the names of Paul Mattes nor the names of his contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO * EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * localdefs.h * Local definitions for c3270. * * This file contains definitions for environment-specific * facilities, such as memory allocation, I/O registration, * and timers. */ /* Identify ourselves. */ #define C3270 1 #if defined(_WIN32) /*[*/ # define WC3270 1 #endif /*]*/ /* Conditional 80/132 mode switch support. */ #if defined(BROKEN_NEWTERM) || defined(_WIN32) /*[*/ #undef C3270_80_132 #else /*][*/ #define C3270_80_132 1 #endif /*]*/ suite3270-4.1/Common/c3270/menubar.c000066400000000000000000000723471413735575200166370ustar00rootroot00000000000000/* * Copyright (c) 2010-2021 Paul Mattes. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the names of Paul Mattes nor the names of his contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO * EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * menubar.c * A curses-based 3270 Terminal Emulator * Menu system */ #include "globals.h" #include #include "appres.h" #include "3270ds.h" #include "resources.h" #include "ctlr.h" #include "actions.h" #include "c3270.h" #include "ckeypad.h" #include "cmenubar.h" #include "codepage.h" #include "cscreen.h" #include "ctlrc.h" #include "unicodec.h" /* must precede ft.h */ #include "ft.h" #include "glue.h" #include "host.h" #include "keymap.h" #include "kybd.h" #include "menubar.h" #include "names.h" #include "popups.h" #include "screen.h" #include "task.h" #include "toggles.h" #include "trace.h" #include "screentrace.h" #include "utils.h" #if defined(_WIN32) /*[*/ # include "wc3270.h" #endif /*]*/ #if !defined(_WIN32) /*[*/ # if defined(HAVE_NCURSESW_NCURSES_H) /*[*/ # include # elif defined(HAVE_NCURSES_NCURSES_H) /*][*/ # include # elif defined(HAVE_NCURSES_H) /*][*/ # include # else /*][*/ # include # endif /*]*/ #endif /*]*/ /* * The menus look like this: * * File Options Keymap * +----------+ * | Fubar | * |*Grill | * | Woohoo | * +----------+ */ #define MENU_WIDTH 10 typedef void (*menu_callback)(void *); typedef struct cmenu_item { struct cmenu_item *next; /* Next item in list. */ struct cmenu_item *prev; /* Next item in list. */ char *label; /* What to display. */ bool enabled; menu_callback action; /* What to do. */ void *param; /* Callback parameter. */ struct cmenu *cmenu; /* Backpointer to cmenu. */ } cmenu_item_t; typedef struct cmenu { struct cmenu *next; /* Next menu in list. */ struct cmenu *prev; char *title; /* Menu title. */ int offset; size_t width; menu_callback callback; void *param; cmenu_item_t *items; /* Items. */ cmenu_item_t *last; /* Last item. */ } cmenu_t; cmenu_t *menus; /* List of menus. */ cmenu_t *menu_last; /* Last menu. */ int current_offset; /* Offset to next menu. */ cmenu_t *current_menu; /* Currently displayed menu. */ cmenu_item_t*current_item; /* Currently highlighted item. */ menu_callback after_callback; void *after_param; ucs4_t menu_screen[MODEL_2_COLS * MODEL_2_ROWS]; unsigned char menu_rv[MODEL_2_COLS * MODEL_2_ROWS]; unsigned char menu_acs[MODEL_2_COLS * MODEL_2_ROWS]; ucs4_t menu_topline[MODEL_2_COLS]; unsigned menu_is_up = 0; /* Add a menu. */ cmenu_t * add_menu(char *title) { cmenu_t *c; c = (cmenu_t *)Malloc(sizeof(cmenu_t) + strlen(title) + 1); c->title = (char *)(c + 1); c->offset = current_offset; c->width = strlen(title) + 2; current_offset += MENU_WIDTH; strcpy(c->title, title); c->callback = NULL; c->param = NULL; c->items = NULL; c->last = NULL; c->prev = menu_last; c->next = NULL; if (menu_last != NULL) { menu_last->next = c; } else { menus = c; } menu_last = c; return c; } /* Remove a menu. */ static void remove_menu(cmenu_t *cmenu) { cmenu_t *c; cmenu_t *prev = NULL; cmenu_item_t *i; if (cmenu == NULL) { return; } /* Find the menu. */ for (c = menus; c != NULL; c = c->next) { if (c == cmenu) { break; } prev = c; } if (c == NULL) { return; } /* Free its items. */ while ((i = cmenu->items) != NULL) { Free(i->label); cmenu->items = i->next; Free(i); } /* Restore the linked list. */ if (prev != NULL) { prev->next = cmenu->next; } if (cmenu->next == NULL) { menu_last = prev; } /* Free it. */ Free(cmenu); /* Correct the offsets. */ current_offset = 0; for (c = menus; c != NULL; c = c->next) { c->offset = current_offset; current_offset += MENU_WIDTH; } } /* Add an item to a menu. */ cmenu_item_t * add_item(cmenu_t *cmenu, char *label, void (*action)(void *), void *param) { cmenu_item_t *i; i = (cmenu_item_t *)Malloc(sizeof(cmenu_item_t)); i->label = Malloc(strlen(label) + 1); strcpy(i->label, label); i->action = action; i->param = param; i->enabled = true; i->next = NULL; i->prev = cmenu->last; i->cmenu = cmenu; if (cmenu->last) { cmenu->last->next = i; } else { cmenu->items = i; } cmenu->last = i; if (strlen(label) + 2 > cmenu->width) { cmenu->width = strlen(label) + 2; } return i; } void enable_item(cmenu_item_t *i, bool enabled) { i->enabled = enabled; /* TODO: Do more here. */ } void rename_item(cmenu_item_t *i, char *name) { Replace(i->label, NewString(name)); if (strlen(name) + 2 > i->cmenu->width) { i->cmenu->width = strlen(name) + 2; } } void set_callback(cmenu_t *cmenu, void (*callback)(void *), void *param) { cmenu->callback = callback; cmenu->param = param; } void basic_menu_init(void) { memset(menu_screen, 0, sizeof(ucs4_t) * MODEL_2_COLS * MODEL_2_ROWS); memset(menu_rv, 0, sizeof(unsigned char) * MODEL_2_COLS * MODEL_2_ROWS); current_menu = NULL; current_item = NULL; menu_is_up &= ~MENU_IS_UP; pop_up_keypad(false); screen_changed = true; } /* Undraw a menu. */ void undraw_menu(cmenu_t *cmenu) { int row, col; cmenu_item_t *i; screen_changed = true; /* Unhighlight the menu title. */ for (col = cmenu->offset; col < cmenu->offset + MENU_WIDTH; col++) { menu_rv[(0 * MODEL_2_COLS) + col] = false; } if (!cmenu->items) { return; } /* Erase the top border. */ row = 1; for (col = cmenu->offset; (size_t)col < cmenu->offset + cmenu->width; col++) { menu_screen[(row * MODEL_2_COLS) + col] = 0; } /* Erase the menu items. */ row = 2; for (i = cmenu->items; i != NULL; i = i->next) { col = cmenu->offset; while ((size_t)col < cmenu->offset + cmenu->width + 2) { menu_screen[(row * MODEL_2_COLS) + col] = 0; menu_rv[(row * MODEL_2_COLS) + col] = false; col++; } row++; } /* Erase the bottom border. */ for (col = cmenu->offset; (size_t)col < cmenu->offset + cmenu->width; col++) { menu_screen[(row * MODEL_2_COLS) +col] = 0; } } /* Draw a menu. */ void draw_menu(cmenu_t *cmenu) { int row, col; cmenu_item_t *i; screen_changed = true; /* Highlight the title. */ row = 0; for (col = cmenu->offset; col < cmenu->offset + MENU_WIDTH - 1; col++) { menu_rv[(row * MODEL_2_COLS) + col] = true; } if (!cmenu->items) { return; } /* Draw the top border. */ row = 1; for (col = cmenu->offset; (size_t)col < cmenu->offset + cmenu->width; col++) { int ix = (row * MODEL_2_COLS) + col; if (col == cmenu->offset) { map_acs('l', &menu_screen[ix], &menu_acs[ix]); } else if ((size_t)col < cmenu->offset + cmenu->width - 1) { map_acs('q', &menu_screen[ix], &menu_acs[ix]); } else { map_acs('k', &menu_screen[ix], &menu_acs[ix]); } } /* Draw the items. */ row = 2; for (i = cmenu->items; i != NULL; i = i->next) { char *d; col = cmenu->offset; map_acs('x', &menu_screen[(row * MODEL_2_COLS) + col], &menu_acs[(row * MODEL_2_COLS) + col]); col++; /* start at column one */ for (d = i->label; *d; d++) { menu_screen[(row * MODEL_2_COLS) + col] = *d & 0xff; menu_rv[(row * MODEL_2_COLS) + col] = (i == current_item); col++; } while ((size_t)col < cmenu->offset + cmenu->width - 1) { menu_screen[(row * MODEL_2_COLS) + col] = ' '; menu_rv[(row * MODEL_2_COLS) + col] = (i == current_item); col++; } map_acs('x', &menu_screen[(row * MODEL_2_COLS) + col], &menu_acs[(row * MODEL_2_COLS) + col]); row++; } /* Draw the bottom border. */ for (col = cmenu->offset; (size_t)col < cmenu->offset + cmenu->width; col++) { int ix = (row * MODEL_2_COLS) + col; if (col == cmenu->offset) { map_acs('m', &menu_screen[ix], &menu_acs[ix]); } else if ((size_t)col < cmenu->offset + cmenu->width - 1) { map_acs('q', &menu_screen[ix], &menu_acs[ix]); } else { map_acs('j', &menu_screen[ix], &menu_acs[ix]); } } } #if defined(NCURSES_MOUSE_VERSION) || defined(_WIN32) /*[*/ /* * Find a mouse click in the menu hierarchy and act on it. * * Returns true if the coordinates are on a menu somewhere, false otherwise. */ bool find_mouse(int x, int y) { cmenu_t *c = NULL; cmenu_item_t *i = NULL; int row; /* It's gotta be in the ballpark. */ if (x >= MODEL_2_COLS || y >= MODEL_2_ROWS || menu_screen[(y * MODEL_2_COLS) + x] == 0) { return false; } if (y == 0) { /* Menu title. */ for (c = menus; c != NULL; c = c->next) { if (x >= c->offset && x < c->offset + MENU_WIDTH) { if (c == current_menu) { return false; } if (c->items == NULL) { goto selected; } if (c == current_menu) { return true; } undraw_menu(current_menu); current_menu = c; current_item = current_menu->items; while (current_item && !current_item->enabled) { current_item = current_item->next; } draw_menu(current_menu); return true; } } return false; } if (x < current_menu->offset || (size_t)x > current_menu->offset + current_menu->width) { return false; } if (y == 1) { /* top border */ return true; } row = 2; for (i = current_menu->items; i != NULL; i = i->next) { if (y == row) { break; } row++; } if (i != NULL) { if (i->enabled) { goto selected; } else { return true; } } if (y == row + 1) { return true; } return false; selected: if (i == NULL) { if (c->callback) { (*c->callback)(c->param); } } else { (*i->action)(i->param); } basic_menu_init(); if (after_callback != NULL) { (*after_callback)(after_param); after_callback = NULL; after_param = NULL; } return true; } #endif /*]*/ #if defined(_WIN32) /*[*/ void menu_click(int x, int y) { if (menu_is_up & KEYPAD_IS_UP) { keypad_click(x, y); return; } if (!find_mouse(x, y)) { basic_menu_init(); } } #endif /*]*/ /* * Handle a key event for a menu. * With ncurses, this can include mouse events. */ void menu_key(menu_key_t k, ucs4_t u) { cmenu_item_t *i; bool selected = false; if (menu_is_up & KEYPAD_IS_UP) { keypad_key(k, u); return; } switch (k) { #if defined(NCURSES_MOUSE_VERSION) /*[*/ case MK_MOUSE: { MEVENT m; if (getmouse(&m) != OK) { return; } if (!(m.bstate & (BUTTON1_PRESSED || BUTTON1_RELEASED))) { return; } /* See if it lands somewhere we can figure out. */ if (!find_mouse(m.x, m.y)) { basic_menu_init(); } break; } #endif /*]*/ case MK_UP: i = current_item; if (current_item && current_item->prev) { current_item = current_item->prev; while (current_item && !current_item->enabled) { current_item = current_item->prev; } if (current_item == NULL) { current_item = i; } else { draw_menu(current_menu); } } break; case MK_DOWN: i = current_item; if (current_item && current_item->next) { current_item = current_item->next; while (current_item && !current_item->enabled) { current_item = current_item->next; } if (current_item == NULL) { current_item = i; } else { draw_menu(current_menu); } } break; case MK_LEFT: undraw_menu(current_menu); if (current_menu->prev) { current_menu = current_menu->prev; } else { current_menu = menus; } current_item = current_menu->items; while (current_item && !current_item->enabled) { current_item = current_item->next; } draw_menu(current_menu); break; case MK_RIGHT: undraw_menu(current_menu); if (current_menu->next) { current_menu = current_menu->next; } else { current_menu = menus; } current_item = current_menu->items; while (current_item && !current_item->enabled) { current_item = current_item->next; } draw_menu(current_menu); break; case MK_HOME: if (current_item) { current_item = current_menu->items; while (current_item && !current_item->enabled) { current_item = current_item->next; } draw_menu(current_menu); } break; case MK_END: i = current_item; while (current_item) { current_item = current_item->next; if (current_item && current_item->enabled) { i = current_item; } } current_item = i; draw_menu(current_menu); break; case MK_ENTER: selected = true; break; case MK_NONE: switch (u) { case '\r': case '\n': selected = true; break; default: basic_menu_init(); } break; default: case MK_OTHER: basic_menu_init(); break; } if (selected) { if (current_item) { (*current_item->action)(current_item->param); } else if (!current_menu->items) { (*current_menu->callback)(current_menu->param); } basic_menu_init(); if (after_callback != NULL) { (*after_callback)(after_param); after_callback = NULL; after_param = NULL; } } screen_changed = true; } /* Report a character back to the screen drawing logic. */ bool menu_char(int row, int col, bool persistent, ucs4_t *u, bool *highlighted, unsigned char *acs) { if (menu_is_up & KEYPAD_IS_UP) { return keypad_char(row, col, u, highlighted, acs); } else if (col >= MODEL_2_COLS) { return false; } else if ((menu_is_up & MENU_IS_UP) && row < MODEL_2_ROWS && col < MODEL_2_COLS && menu_screen[(row * MODEL_2_COLS) + col]) { *u = menu_screen[(row * MODEL_2_COLS) + col]; *highlighted = menu_rv[(row * MODEL_2_COLS) + col]; *acs = menu_acs[(row * MODEL_2_COLS) + col]; return true; } else if (persistent && row == 0 && menu_topline[col]) { *u = menu_topline[col]; *highlighted = 0; return true; } else { *u = 0; *highlighted = false; return false; } } /* Report where to land the cursor when a menu is up. */ void menu_cursor(int *row, int *col) { if (menu_is_up & KEYPAD_IS_UP) { keypad_cursor(row, col); return; } if (menu_is_up & MENU_IS_UP) { *row = 0; *col = current_menu->offset; } else { *row = 0; *col = 0; } } /* Functions specific to c3270. */ static void fm_copyright(void *ignored _is_unused) { push_macro(AnEscape "(\"" AnShow "(" KwCopyright ")\")"); } static void fm_status(void *ignored _is_unused) { push_macro(AnEscape "(\"" AnShow "(" KwStatus ")\")"); } static void fm_about(void *ignored _is_unused) { push_macro(AnEscape "(\"" AnShow "(" KwAbout ")\")"); } static void fm_prompt(void *ignored _is_unused) { push_macro(AnEscape "()"); } static void fm_print(void *ignored _is_unused) { push_macro(AnPrintText "()"); } static void fm_xfer(void *ignored _is_unused) { if (ft_state == FT_NONE) { push_macro(AnEscape "(\"" AnTransfer "()\")"); } else { push_macro(AnTransfer "(" KwCancel ")"); } } static void fm_trace(void *ignored _is_unused) { if (toggled(TRACING)) { push_macro(AnTrace "(" KwOff ")"); } else { push_macro(AnTrace "(" KwOn ")"); } } static void fm_screentrace(void *ignored _is_unused) { if (toggled(SCREEN_TRACE)) { push_macro(AnScreenTrace "(" KwOff "," KwInfo ")"); } else { push_macro(AnScreenTrace "(" KwOn "," KwInfo ")"); } } static void fm_screentrace_printer(void *ignored _is_unused) { if (toggled(SCREEN_TRACE)) { push_macro(AnScreenTrace "(" KwOff "," KwInfo ")"); } else { push_macro(AnScreenTrace "(" KwOn "," KwInfo "," KwPrinter ")"); } } static void fm_save_input(void *ignored _is_unused) { push_macro(AnSaveInput "()"); } static void fm_restore_input(void *ignored _is_unused) { push_macro(AnRestoreInput "()"); } static void fm_keymap(void *ignored _is_unused) { push_macro(AnEscape "(\"" AnShow "(" KwKeymap ")\")"); } #if defined(HAVE_START) /*[*/ static void fm_help(void *ignored _is_unused) { start_html_help(); } #endif /*]*/ #if defined(_WIN32) /*[*/ static void fm_wizard(void *session) { start_wizard((char *)session); } #endif /*]*/ static void fm_reenable(void *ignored _is_unused) { push_macro(AnKeyboardDisable "(" KwForceEnable ")"); } static void fm_disconnect(void *ignored _is_unused) { push_macro(AnDisconnect "()"); } static void fm_quit(void *ignored _is_unused) { push_macro(AnQuit "()"); } /* File menu. */ typedef enum { FM_COPYRIGHT, FM_STATUS, FM_ABOUT, FM_PROMPT, FM_PRINT, FM_XFER, FM_TRACE, FM_SCREENTRACE, FM_SCREENTRACE_PRINTER, FM_SAVE_INPUT, FM_RESTORE_INPUT, FM_KEYMAP, #if defined(HAVE_START) /*[*/ FM_HELP, #endif /*]*/ #if defined(_WIN32) /*[*/ FM_WIZARD, FM_WIZARD_SESS, #endif /*]*/ FM_REENABLE, FM_DISC, FM_QUIT, FM_COUNT } file_menu_enum; cmenu_item_t *file_menu_items[FM_COUNT]; char *file_menu_names[FM_COUNT] = { "Copyright", "Status", #if !defined(_WIN32) /*[*/ "About c3270", "c3270> Prompt", #else /*][*/ "About wc3270", "wc3270> Prompt", #endif /*]*/ "Print Screen", "File Transfer", "Enable Tracing", "Save Screen Images in File", "Save Screen Images to Printer", "Save Input Fields", "Restore Input Fields", "Display Keymap", #if defined(HAVE_START) /*[*/ "Help", #endif /*]*/ #if defined(_WIN32) /*[*/ "Session Wizard", "Edit Session", #endif /*]*/ "Re-enable Keyboard", "Disconnect", "Quit" }; menu_callback file_menu_actions[FM_COUNT] = { fm_copyright, fm_status, fm_about, fm_prompt, fm_print, fm_xfer, fm_trace, fm_screentrace, fm_screentrace_printer, fm_save_input, fm_restore_input, fm_keymap, #if defined(HAVE_START) /*[*/ fm_help, #endif /*]*/ #if defined(_WIN32) /*[*/ fm_wizard, fm_wizard, #endif /*]*/ fm_reenable, fm_disconnect, fm_quit }; /* Options menu. */ typedef enum { OM_MONOCASE, OM_BLANKFILL, OM_TIMING, OM_CROSSHAIR, OM_UNDERSCORE, #if defined(WC3270) /*[*/ OM_CURSOR_BLINK, OM_MARGINED_PASTE, OM_OVERLAY_PASTE, #endif /*]*/ OM_VISIBLE_CONTROL, OM_TYPEAHEAD, OM_ALWAYS_INSERT, OM_COUNT } options_menu_enum; cmenu_item_t *options_menu_items[OM_COUNT]; toggle_index_t option_index[OM_COUNT] = { MONOCASE, BLANK_FILL, SHOW_TIMING, CROSSHAIR, UNDERSCORE, #if defined(WC3270) /*[*/ CURSOR_BLINK, MARGINED_PASTE, OVERLAY_PASTE, #endif /*]*/ VISIBLE_CONTROL, TYPEAHEAD, ALWAYS_INSERT }; char *option_names[OM_COUNT] = { "Monocase", "Blank Fill", "Show Timing", "Crosshair Cursor", "Underscore Mode", #if defined(WC3270) /*[*/ "Cursor Blink", "Margined Paste", "Overlay Paste", #endif /*]*/ "Visible Control", "Typeahead", "Default Insert Mode", }; cmenu_t *file_menu; cmenu_t *options_menu; cmenu_t *keypad_menu; cmenu_t *macros_menu; static struct macro_def **macro_save; static int n_ms; static void toggle_option(void *param) { int index = *(int *)param; do_toggle(index); } static void really_popup_keypad(void *ignored _is_unused) { pop_up_keypad(true); } static void popup_keypad(void *ignored _is_unused) { after_callback = really_popup_keypad; after_param = NULL; } /* Run an item from the Macros menu. */ static void run_macro(void *param) { struct macro_def *m = (struct macro_def *)param; push_macro(m->action); } /* Draw the top line (the menu bar). */ static void draw_topline(void) { int col, next_col; cmenu_t *c; memset(menu_topline, 0, sizeof(menu_topline)); col = 0; next_col = MENU_WIDTH; for (c = menus; c != NULL; c = c->next) { char *d; for (d = c->title; *d; d++) { menu_topline[col] = *d & 0xff; col++; } while (col < next_col) { menu_topline[col] = ' '; col++; } next_col += MENU_WIDTH; } } void menu_init(void) { int j; basic_menu_init(); file_menu = add_menu("File"); for (j = 0; j < FM_COUNT; j++) { if (appres.secure && (j == FM_PROMPT || j == FM_XFER || j == FM_TRACE)) { continue; } #if defined(WC3270) /*[*/ if (j == FM_WIZARD_SESS && profile_path == NULL) { continue; } if (j == FM_WIZARD_SESS) { char *text; text = xs_buffer("Edit Session %s", profile_name); file_menu_items[j] = add_item(file_menu, text, file_menu_actions[j], profile_path); } else #endif /*]*/ { file_menu_items[j] = add_item(file_menu, file_menu_names[j], file_menu_actions[j], NULL); } } options_menu = add_menu("Options"); for (j = 0; j < OM_COUNT; j++) { char *name; name = xs_buffer("%s %s", toggled(option_index[j])? "Disable": "Enable", option_names[j]); options_menu_items[j] = add_item(options_menu, name, toggle_option, &option_index[j]); Free(name); } keypad_menu = add_menu("Keypad"); set_callback(keypad_menu, popup_keypad, NULL); /* Draw the menu names on the top line. */ draw_topline(); } /* Connect state change callback for the menu bar. */ static void menubar_connect(bool connected) { static bool created_menu = false; if (connected) { if (macro_defs != NULL && !created_menu) { struct macro_def *m; /* Create the macros menu. */ macros_menu = add_menu("Macros"); n_ms = 0; for (m = macro_defs; m != NULL; m = m->next) { struct macro_def *mm = (struct macro_def *) Malloc(sizeof(struct macro_def) + strlen(m->name) + 1 + strlen(m->action) + 1); /* * Save a copy of the macro definition, since it could change * at any time. */ mm->name = (char *)(mm + 1); strcpy(mm->name, m->name); mm->action = mm->name + strlen(mm->name) + 1; strcpy(mm->action, m->action); add_item(macros_menu, m->name, run_macro, mm); macro_save = (struct macro_def **)Realloc(macro_save, (n_ms + 1) * sizeof(struct macro_def *)); macro_save[n_ms++] = mm; } /* Re-create the menu bar and force a screen redraw. */ draw_topline(); screen_changed = true; created_menu = true; } } else { int i; /* Free the saved macro definitions. */ for (i = 0; i < n_ms; i++) { Free(macro_save[i]); } Replace(macro_save, NULL); n_ms = 0; /* * Remove the macros menu, re-draw the menu bar and force a screen * redraw. */ remove_menu(macros_menu); macros_menu = NULL; draw_topline(); screen_changed = true; created_menu = false; } } void menubar_retoggle(toggle_index_t ix) { int j; char *s; if (!appres.interactive.menubar) { return; } /* Search the options menu. */ for (j = 0; j < OM_COUNT; j++) { if (option_index[j] == ix) { break; } } if (j < OM_COUNT) { s = xs_buffer("%sable %s", toggled(ix)? "Dis": "En", option_names[j]); rename_item(options_menu_items[j], s); Free(s); return; } if (ix == TRACING) { s = xs_buffer("%sable Tracing", (toggled(TRACING))? "Dis": "En"); rename_item(file_menu_items[FM_TRACE], s); Free(s); } if (ix == SCREEN_TRACE) { if (toggled(SCREEN_TRACE)) { switch (trace_get_screentrace_target()) { case TSS_FILE: rename_item(file_menu_items[FM_SCREENTRACE], "Stop Saving Screen Images"); enable_item(file_menu_items[FM_SCREENTRACE_PRINTER], false); break; case TSS_PRINTER: enable_item(file_menu_items[FM_SCREENTRACE], false); rename_item(file_menu_items[FM_SCREENTRACE_PRINTER], "Stop Saving Screen Images"); break; } } else { rename_item(file_menu_items[FM_SCREENTRACE], "Save Screen Images in File"); enable_item(file_menu_items[FM_SCREENTRACE], true); rename_item(file_menu_items[FM_SCREENTRACE_PRINTER], "Save Screen Images to Printer"); enable_item(file_menu_items[FM_SCREENTRACE_PRINTER], true); } } } /* Pop up a menu. */ void popup_menu(int x, int click) { cmenu_t *cmenu; cmenu_t *c; int row, col; int next_col; if (!appres.interactive.menubar) { return; } /* Find which menu to start with. */ for (cmenu = menus; cmenu != NULL; cmenu = cmenu->next) { if (x >= cmenu->offset && x < cmenu->offset + MENU_WIDTH) { break; } } if (cmenu == NULL) { return; } /* If it was a direct click, see if the menu has a direct callback. */ if (click && cmenu->callback != NULL) { (*cmenu->callback)(cmenu->param); if (after_callback != NULL) { (*after_callback)(after_param); after_callback = NULL; after_param = NULL; } return; } /* Start with nothing. */ basic_menu_init(); /* Switch the name of the File Transfer menu. */ if (!appres.secure) { rename_item(file_menu_items[FM_XFER], (ft_state == FT_NONE)? "File Transfer": "Cancel File Transfer"); } /* * Draw the menu names on the top line, with the active one highlighted. */ row = 0; col = 0; next_col = MENU_WIDTH; for (c = menus; c != NULL; c = c->next) { char *d; for (d = c->title; *d; d++) { menu_screen[(row * MODEL_2_COLS) + col] = *d & 0xff; menu_rv[(row * MODEL_2_COLS) + col] = (c == cmenu); col++; } while (col < next_col) { menu_screen[(row * MODEL_2_COLS) + col] = ' '; col++; } next_col += MENU_WIDTH; } current_menu = cmenu; /* Draw the current menu, with the active item highlighted. */ if (cmenu->items) { current_item = cmenu->items; while (current_item && !current_item->enabled) { current_item = current_item->next; } draw_menu(cmenu); } else { current_item = NULL; } /* We're up. */ menu_is_up |= MENU_IS_UP; } /* * Utility function to map ACS codes (l, m, j, etc.) to the right kind of * line-drawing character. */ void map_acs(unsigned char c, ucs4_t *u, unsigned char *is_acs) { #if defined(CURSES_WIDE) || defined(_WIN32) /*[*/ /* * If we have wide curses thus can do ACS, or if we are on Windows, * then do ASCII art only if the user requests it. * * Otherwise (no wide curses, no Windows), ASCII art is all we can do. */ if (appres.c3270.ascii_box_draw) #endif /*]*/ { /* ASCII art. */ *is_acs = 0; switch (c) { case 'l': case 'm': case 'k': case 'j': case 't': case 'u': case 'v': case 'w': case 'n': *u = '+'; break; case 'q': *u = '-'; break; case 'x': *u = '|'; break; case 's': *u = ' '; break; default: *u = '?'; break; } return; } #if defined(CURSES_WIDE) /*[*/ else if (appres.c3270.acs) { /* ncurses ACS. */ *is_acs = 1; switch (c) { case 'l': *u = ACS_ULCORNER; break; case 'm': *u = ACS_LLCORNER; break; case 'k': *u = ACS_URCORNER; break; case 'j': *u = ACS_LRCORNER; break; case 't': *u = ACS_LTEE; break; case 'u': *u = ACS_RTEE; break; case 'v': *u = ACS_BTEE; break; case 'w': *u = ACS_TTEE; break; case 'q': *u = ACS_HLINE; break; case 'x': *u = ACS_VLINE; break; case 'n': *u = ACS_PLUS; break; case 's': *u = ' '; *is_acs = 0; break; default: *u = '?'; *is_acs = 0; break; } } #endif /*]*/ #if defined(CURSES_WIDE) || defined(_WIN32) /*[*/ else { /* Unicode. */ *is_acs = 0; switch (c) { case 'l': *u = 0x250c; break; case 'm': *u = 0x2514; break; case 'k': *u = 0x2510; break; case 'j': *u = 0x2518; break; case 't': *u = 0x251c; break; case 'u': *u = 0x2524; break; case 'v': *u = 0x2534; break; case 'w': *u = 0x252c; break; case 'q': *u = 0x2500; break; case 'x': *u = 0x2502; break; case 'n': *u = 0x253c; break; case 's': *u = ' '; break; default: *u = '?'; break; } } #endif /*]*/ } bool Menu_action(ia_t ia, unsigned argc, const char **argv) { action_debug(AnMenu, ia, argc, argv); if (check_argc(AnMenu, argc, 0, 0) < 0) { return false; } popup_menu(0, false); return true; } void menubar_as_set(bool sensitive _is_unused) { /* Do nothing, there is no Abort Script. */ } /** * Menu bar module registration. */ void menubar_register(void) { static action_table_t menubar_actions[] = { { AnMenu, Menu_action, ACTION_KE } }; /* Register for events. */ register_schange_ordered(ST_CONNECT, menubar_connect, ORDER_LAST); /* Register our actions. */ register_actions(menubar_actions, array_count(menubar_actions)); } suite3270-4.1/Common/c3270/mkkeypad.c000066400000000000000000000136211413735575200170010ustar00rootroot00000000000000#include #include #include #include /* * Construct keypad data structures from a set of descriptor files. * * The files are: * keypad.labels * literal text to be drawn for the keypad * keypad.outline * outlines for the keys, ACS encoded ('l' for upper left, etc.) * keypad.map * sensitivity map for the keypad (aaaa is field 'a', etc.) * keypad.full * not used by this program, but gives the overall plan * * The result is an array of structures: * unsigned char literal; text from keypad.labels * unsigned char outline; ACS-encoded outline text * sens_t *sens; sensitivity, or NULL * * A sens_t is a structure: * unsigned char ul_x, ul_y; upper left corner * unsigned char lr_x, lr_y; lower right corner * unsigned char callback_name; 'a', 'b', etc. */ typedef struct sensmap { struct sensmap *next; unsigned char name; unsigned ul_x, ul_y, lr_x, lr_y; int index; char *callback; } sensmap_t; sensmap_t *sensmaps = NULL; sensmap_t *last_sensmap = NULL; int sensmap_count = 0; char *incdir = NULL; FILE *fopen_inc(const char *name) { FILE *f; char *path; if ((f = fopen(name, "r")) != NULL) { return f; } if (incdir == NULL) { return NULL; } path = malloc(strlen(incdir) + 1 + strlen(name) + 1); sprintf(path, "%s/%s", incdir, name); f = fopen(path, "r"); free(path); return f; } int main(int argc, char *argv[]) { FILE *callbacks; FILE *labels; FILE *outline; FILE *map; int c, d; unsigned x; unsigned y; sensmap_t *s; char buf[128]; int cbl = 0; if (argc > 1 && !strncmp(argv[1], "-I", 2)) { incdir = argv[1] + 2; } /* Open the files. */ labels = fopen_inc("keypad.labels"); if (labels == NULL) { perror("keypad.labels"); exit(1); } outline = fopen_inc("keypad.outline"); if (outline == NULL) { perror("keypad.outline"); exit(1); } map = fopen_inc("keypad.map"); if (map == NULL) { perror("keypad.map"); exit(1); } callbacks = fopen_inc("keypad.callbacks"); if (callbacks == NULL) { perror("keypad.callbacks"); exit(1); } /* Read in the map file first. */ x = 0; y = 0; while ((c = fgetc(map)) != EOF) { if (c == '\n') { y++; x = 0; continue; } if (c == ' ') { x++; continue; } for (s = sensmaps; s != NULL; s = s->next) { if (s->name == c) break; } if (s != NULL) { /* Seen it before. */ s->lr_x = x; s->lr_y = y; } else { s = (sensmap_t *)malloc(sizeof(sensmap_t)); if (s == NULL) { fprintf(stderr, "Out of memory.\n"); exit(1); } memset(s, '\0', sizeof(sensmap_t)); s->name = c; s->ul_x = s->lr_x = x; s->ul_y = s->lr_y = y; s->index = sensmap_count++; s->callback = NULL; s->next = NULL; if (last_sensmap) last_sensmap->next = s; else sensmaps = s; last_sensmap = s; last_sensmap = s; } x++; } fclose(map); /* Read in the callbacks. */ while (fgets(buf, sizeof(buf), callbacks) != NULL) { char *t; char c; size_t sl; cbl++; sl = strlen(buf); if (sl > 0 && buf[sl - 1] == '\n') buf[sl - 1] = '\0'; c = buf[0]; if (!isalnum((unsigned char)c)) { fprintf(stderr, "keypad.callbacks:%d Invalid callback character.\n", cbl); exit(1); } t = &buf[1]; while (*t && isspace((unsigned char)*t)) { t++; } if (!*t || !isalnum((unsigned char)*t)) { fprintf(stderr, "keypad.callbacks:%d Invalid callback string.\n", cbl); exit(1); } #if defined(MKK_DEBUG) /*[*/ fprintf(stderr, "line %d: name '%c', callback '%s'\n", cbl, c, t); #endif /*]*/ for (s = sensmaps; s != NULL; s = s->next) { if (s->name == c) { if (s->callback != NULL) { fprintf(stderr, "keypad.callbacks:%d Duplicate callback " "for '%c' (%s, %s).\n", cbl, c, s->callback, t); exit(1); } s->callback = malloc(strlen(t) + 1); if (s->callback == NULL) { fprintf(stderr, "Out of memory.\n"); exit(1); } strcpy(s->callback, t); break; } } if (s == NULL) { fprintf(stderr, "keypad.callbacks:%d: Callback '%c' for " "nonexistent map.\n", cbl, c); exit(1); } } fclose(callbacks); for (s = sensmaps; s != NULL; s = s->next) { if (s->callback == NULL) { fprintf(stderr, "Map '%c' has no callback.\n", s->name); exit(1); } } /* Dump out the sensmaps. */ printf("sens_t sens[%u] = {\n", sensmap_count); for (s = sensmaps; s != NULL; s = s->next) { printf(" { %2u, %2u, %2u, %2u, \"%s\" },\n", s->ul_x, s->ul_y, s->lr_x, s->lr_y, s->callback); } printf("};\n"); /* * Read in the label and outline files, and use them to dump out the * keypad_desc[]. */ labels = fopen_inc("keypad.labels"); if (labels == NULL) { perror("keypad.labels"); exit(1); } outline = fopen_inc("keypad.outline"); if (outline == NULL) { perror("keypad.outline"); exit(1); } printf("keypad_desc_t keypad_desc[%u][80] = {\n", y); printf("{ /* row 0 */\n"); x = 0; y = 0; while ((c = fgetc(labels)) != EOF) { d = fgetc(outline); if (c == '\n') { if (d != '\n') { fprintf(stderr, "labels and outline out of sync at line %d\n", y + 1); exit(1); } y++; x = 0; continue; } if (x == 0 && y != 0) printf("},\n{ /* row %u */\n", y); for (s = sensmaps; s != NULL; s = s->next) { if (x >= s->ul_x && y >= s->ul_y && x <= s->lr_x && y <= s->lr_y) { printf(" { '%c', '%c', &sens[%u] },\n", c, d, s->index); break; } } if (s == NULL) { if (c == ' ' && d == ' ') printf(" { 0, 0, NULL },\n"); else printf(" { '%c', '%c', NULL },\n", c, d); } x++; } if ((d = fgetc(outline)) != EOF) { fprintf(stderr, "labels and outline out of sync at EOF\n"); exit(1); } printf("} };\n"); fclose(labels); fclose(outline); return 0; } suite3270-4.1/Common/c3270/status_dump.c000066400000000000000000000215561413735575200175520ustar00rootroot00000000000000/* * Copyright (c) 1993-2019 Paul Mattes. * Copyright (c) 1990, Jeff Sparkes. * Copyright (c) 1989, Georgia Tech Research Corporation (GTRC), Atlanta, GA * 30332. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the names of Paul Mattes, Jeff Sparkes, GTRC nor the names of * their contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES, JEFF SPARKES AND GTRC "AS IS" AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL PAUL MATTES, JEFF SPARKES OR GTRC BE * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. */ /* * show_action.c * A curses-based 3270 Terminal Emulator * 'Show()' action. */ #include "globals.h" #include "3270ds.h" #include "actions.h" #include "appres.h" #include "codepage.h" #include "copyright.h" #include "cscreen.h" #include "host.h" #include "keymap.h" #include "lazya.h" #include "linemode.h" #include "popups.h" #include "query.h" #include "resources.h" #include "split_host.h" #include "status_dump.h" #include "telnet.h" #include "utf8.h" #include "utils.h" #include "varbuf.h" /* Return a time difference in English */ static char * hms(time_t ts) { time_t t, td; long hr, mn, sc; time(&t); td = t - ts; hr = (long)(td / 3600); mn = (td % 3600) / 60; sc = td % 60; if (hr > 0) { return lazyaf("%ld %s %ld %s %ld %s", hr, (hr == 1) ? get_message("hour") : get_message("hours"), mn, (mn == 1) ? get_message("minute") : get_message("minutes"), sc, (sc == 1) ? get_message("second") : get_message("seconds")); } else if (mn > 0) { return lazyaf("%ld %s %ld %s", mn, (mn == 1) ? get_message("minute") : get_message("minutes"), sc, (sc == 1) ? get_message("second") : get_message("seconds")); } else { return lazyaf("%ld %s", sc, (sc == 1) ? get_message("second") : get_message("seconds")); } } static void indent_dump(varbuf_t *r, const char *s) { const char *newline; while ((newline = strchr(s, '\n')) != NULL) { vb_appendf(r, " %.*s\n", (int)(newline - s), s); s = newline + 1; } vb_appendf(r, " %s\n", s); } const char * status_dump(void) { varbuf_t r; const char *emode, *ftype, *ts; const char *clu; const char *eopts; const char *bplu; const char *ptype; char *s; size_t sl; vb_init(&r); vb_appendf(&r, "%s\n", build); vb_appendf(&r, "%s %s: %d %s x %d %s, %s, %s\n", get_message("model"), model_name, maxCOLS, get_message("columns"), maxROWS, get_message("rows"), mode.m3279? get_message("fullColor"): get_message("mono"), (mode.extended && !HOST_FLAG(STD_DS_HOST))? get_message("extendedDs"): get_message("standardDs")); vb_appendf(&r, "%s %s\n", get_message("terminalName"), termtype); clu = net_query_lu_name(); if (clu != NULL && clu[0]) { vb_appendf(&r, "%s %s\n", get_message("luName"), clu); } bplu = net_query_bind_plu_name(); if (bplu != NULL && bplu[0]) { vb_appendf(&r, "%s %s\n", get_message("bindPluName"), bplu); } vb_appendf(&r, "%s %s (%s) %s\n", get_message("hostCodePage"), get_codepage_name(), dbcs? "DBCS": "SBCS", get_codepage_number()); vb_appendf(&r, "%s GCSGID %u, CPGID %u\n", get_message("sbcsCgcsgid"), (unsigned short)((cgcsgid >> 16) & 0xffff), (unsigned short)(cgcsgid & 0xffff)); if (dbcs) { vb_appendf(&r, "%s GCSGID %u, CPGID %u\n", get_message("dbcsCgcsgid"), (unsigned short)((cgcsgid_dbcs >> 16) & 0xffff), (unsigned short)(cgcsgid_dbcs & 0xffff)); } #if !defined(_WIN32) /*[*/ vb_appendf(&r, "%s %s\n", get_message("localeCodeset"), locale_codeset); vb_appendf(&r, "%s, wide curses %s\n", get_message("buildOpts"), # if defined(CURSES_WIDE) /*[*/ get_message("buildEnabled") # else /*][*/ get_message("buildDisabled") # endif /*]*/ ); #else /*][*/ vb_appendf(&r, "%s OEM %d ANSI %d\n", get_message("windowsCodePage"), windows_cp, GetACP()); #endif /*]*/ if (appres.interactive.key_map) { vb_appendf(&r, "%s %s\n", get_message("keyboardMap"), appres.interactive.key_map); } if (CONNECTED) { vb_appendf(&r, "%s %s\n", get_message("connectedTo"), #if defined(LOCAL_PROCESS) /*[*/ (local_process && !strlen(current_host))? "(shell)": #endif /*]*/ current_host); #if defined(LOCAL_PROCESS) /*[*/ if (!local_process) #endif /*]*/ { vb_appendf(&r, " %s %d\n", get_message("port"), current_port); } if (net_secure_connection()) { const char *session, *cert; vb_appendf(&r, " %s%s%s\n", get_message("secure"), net_secure_unverified()? ", ": "", net_secure_unverified()? get_message("unverified"): ""); vb_appendf(&r, " %s %s\n", get_message("provider"), net_sio_provider()); if ((session = net_session_info()) != NULL) { vb_appendf(&r, " %s\n", get_message("sessionInfo")); indent_dump(&r, session); } if ((cert = net_server_cert_info()) != NULL) { vb_appendf(&r, " %s\n", get_message("serverCert")); indent_dump(&r, cert); } } ptype = net_proxy_type(); if (ptype != NULL) { vb_appendf(&r, " %s %s %s %s %s %s", get_message("proxyType"), ptype, get_message("server"), net_proxy_host(), get_message("port"), net_proxy_port()); if (net_proxy_user() != NULL) { vb_appendf(&r, " %s %s", get_message("user"), net_proxy_user()); } vb_appendf(&r, "\n"); } ts = hms(ns_time); if (IN_E) { emode = "TN3270E "; } else { emode = ""; } if (IN_NVT) { if (linemode) { ftype = get_message("lineMode"); } else { ftype = get_message("charMode"); } vb_appendf(&r, " %s%s, %s\n", emode, ftype, ts); } else if (IN_SSCP) { vb_appendf(&r, " %s%s, %s\n", emode, get_message("sscpMode"), ts); } else if (IN_3270) { vb_appendf(&r, " %s%s, %s\n", emode, get_message("dsMode"), ts); } else if (cstate == CONNECTED_UNBOUND) { vb_appendf(&r, " %s%s, %s\n", emode, get_message("unboundMode"), ts); } else { vb_appendf(&r, " %s, %s\n", get_message("unnegotiated"), ts); } eopts = tn3270e_current_opts(); if (eopts != NULL) { vb_appendf(&r, " %s %s\n", get_message("tn3270eOpts"), eopts); } else if (IN_E) { vb_appendf(&r, " %s\n", get_message("tn3270eNoOpts")); } if (IN_3270) { vb_appendf(&r, "%s %d %s, %d %s\n%s %d %s, %d %s\n", get_message("sent"), ns_bsent, (ns_bsent == 1)? get_message("byte") : get_message("bytes"), ns_rsent, (ns_rsent == 1)? get_message("record") : get_message("records"), get_message("Received"), ns_brcvd, (ns_brcvd == 1)? get_message("byte"): get_message("bytes"), ns_rrcvd, (ns_rrcvd == 1)? get_message("record"): get_message("records")); } else { vb_appendf(&r, "%s %d %s, %s %d %s\n", get_message("sent"), ns_bsent, (ns_bsent == 1)? get_message("byte"): get_message("bytes"), get_message("received"), ns_brcvd, (ns_brcvd == 1)? get_message("byte"): get_message("bytes")); } if (IN_NVT) { struct ctl_char *c = linemode_chars(); int i; char buf[128]; char *s = buf; vb_appendf(&r, "%s\n", get_message("specialCharacters")); for (i = 0; c[i].name; i++) { if (i && !(i % 4)) { *s = '\0'; vb_appendf(&r, "%s\n", buf); s = buf; } s += sprintf(s, " %s %s", c[i].name, c[i].value); } if (s != buf) { *s = '\0'; vb_appendf(&r, "%s\n", buf); } } } else if (HALF_CONNECTED) { vb_appendf(&r, "%s %s\n", get_message("connectionPending"), current_host); } else if (host_reconnecting()) { vb_appendf(&r, "%s\n", get_message("reconnecting")); } else { vb_appendf(&r, "%s\n", get_message("notConnected")); } s = vb_consume(&r); sl = strlen(s); if (sl > 0 && s[sl - 1] == '\n') { s[sl - 1] = '\0'; } return lazya(s); } suite3270-4.1/Common/c3270/tls_passwd_gui.c000066400000000000000000000054161413735575200202260ustar00rootroot00000000000000/* * Copyright (c) 1993-2018, 2020 Paul Mattes. * Copyright (c) 2004, Don Russell. * Copyright (c) 1990, Jeff Sparkes. * Copyright (c) 1989, Georgia Tech Research Corporation (GTRC), Atlanta, * GA 30332. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the names of Paul Mattes, Don Russell, Jeff Sparkes, GTRC * nor their contributors may be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES, DON RUSSELL, JEFF SPARKES AND * GTRC "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL PAUL MATTES, * DON RUSSELL, JEFF SPARKES OR GTRC BE LIABLE FOR ANY DIRECT, INDIRECT, * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * tls_passwd_gui.c * TLS certificate password dialog for c3270. */ #include "globals.h" #include "appres.h" #include "host.h" #include "popups.h" #include "task.h" #include "telnet.h" #include "tls_passwd_gui.h" /* Statics. */ /* Proceed with password input. */ static bool tls_passwd_continue_input(void *handle, const char *text) { /* Send the password back to TLS. */ net_password_continue(text); return true; } /* Password input aborted. */ static void tls_passwd_abort_input(void *handle) { connect_error("Password input aborted"); host_disconnect(true); } /* Password callback. */ tls_passwd_ret_t tls_passwd_gui_callback(char *buf, int size, bool again) { if (again) { action_output("Password is incorrect."); } else { action_output("TLS certificate private key requires a password."); } if (task_request_input("Connect", "Enter password: ", tls_passwd_continue_input, tls_passwd_abort_input, NULL, true)) { return SP_PENDING; } return SP_FAILURE; } suite3270-4.1/Common/child.c000066400000000000000000000301031413735575200155130ustar00rootroot00000000000000/* * Copyright (c) 2001-2009, 2013, 2015, 2018-2020 Paul Mattes. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the names of Paul Mattes nor the names of his contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO * EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * child.c * Child process output support. */ #include "globals.h" #include #include #include #include "child.h" #include "popups.h" /* must be before child_popups.h */ #include "child_popups.h" #include "trace.h" #include "utils.h" #include "xio.h" #if defined(_WIN32) /*[*/ # include "w3misc.h" #endif /*]*/ #define CHILD_BUF 1024 static bool child_initted = false; static bool child_broken = false; static bool child_discarding = false; #if !defined(_WIN32) /*[*/ static int child_outpipe[2]; static int child_errpipe[2]; #else /*]*/ static HANDLE child_stdout_rd = INVALID_HANDLE_VALUE; static HANDLE child_stdout_wr = INVALID_HANDLE_VALUE; static HANDLE child_stderr_rd = INVALID_HANDLE_VALUE; static HANDLE child_stderr_wr = INVALID_HANDLE_VALUE; #endif /*]*/ #if !defined(_WIN32) /*[*/ static struct pr3o { int fd; /* file descriptor */ ioid_t input_id; /* input ID */ ioid_t timeout_id; /* timeout ID */ int count; /* input count */ char buf[CHILD_BUF]; /* input buffer */ } child_stdout = { -1, 0L, 0L, 0 }, child_stderr = { -1, 0L, 0L, 0 }; #else /*][*/ typedef struct { HANDLE pipe_handle; HANDLE enable_event; HANDLE done_event; HANDLE thread; char buf[CHILD_BUF]; DWORD nr; int error; bool is_stderr; } cr_t; cr_t cr_stdout, cr_stderr; #endif /*]*/ #if !defined(_WIN32) /*[*/ static void child_output(iosrc_t fd, ioid_t id); static void child_error(iosrc_t fd, ioid_t id); static void child_otimeout(ioid_t id); static void child_etimeout(ioid_t id); static void child_dump(struct pr3o *p, bool is_err); #endif /*]*/ #if defined(_WIN32) /*[*/ static DWORD WINAPI child_read_thread(LPVOID parameter); static void cr_output(iosrc_t fd, ioid_t id); #endif /*]*/ static void init_child(void) { #if defined(_WIN32) /*[*/ SECURITY_ATTRIBUTES sa; DWORD mode; #endif /*]*/ /* If initialization failed, there isn't much we can do. */ if (child_broken) { return; } #if !defined(_WIN32) /*[*/ /* Create pipes. */ if (pipe(child_outpipe) < 0) { popup_an_errno(errno, "pipe()"); child_broken = true; return; } if (pipe(child_errpipe) < 0) { popup_an_errno(errno, "pipe()"); close(child_outpipe[0]); close(child_outpipe[1]); child_broken = true; return; } vtrace("init_child: child_outpipe is %d %d\n", child_outpipe[0], child_outpipe[1]); /* Make sure their read ends are closed in child processes. */ fcntl(child_outpipe[0], F_SETFD, 1); fcntl(child_errpipe[0], F_SETFD, 1); /* Initialize the pop-ups. */ child_popup_init(); /* Express interest in their output. */ child_stdout.fd = child_outpipe[0]; child_stdout.input_id = AddInput(child_outpipe[0], child_output); child_stderr.fd = child_errpipe[0]; child_stderr.input_id = AddInput(child_errpipe[0], child_error); #else /*][*/ /* Create pipes. */ memset(&sa, 0, sizeof(sa)); sa.nLength = sizeof(SECURITY_ATTRIBUTES); sa.bInheritHandle = TRUE; sa.lpSecurityDescriptor = NULL; if (!CreatePipe(&child_stdout_rd, &child_stdout_wr, &sa, 0)) { popup_an_error("CreatePipe(stdout) failed: %s", win32_strerror(GetLastError())); child_broken = true; return; } if (!SetHandleInformation(child_stdout_rd, HANDLE_FLAG_INHERIT, 0)) { popup_an_error("SetHandleInformation(stdout) failed: %s", win32_strerror(GetLastError())); CloseHandle(child_stdout_rd); CloseHandle(child_stdout_wr); child_broken = true; return; } mode = PIPE_READMODE_BYTE; if (!SetNamedPipeHandleState(child_stdout_rd, &mode, NULL, NULL)) { popup_an_error("SetNamedPipeHandleState(stdout) failed: %s", win32_strerror(GetLastError())); CloseHandle(child_stdout_rd); CloseHandle(child_stdout_wr); child_broken = true; return; } if (!CreatePipe(&child_stderr_rd, &child_stderr_wr, &sa, 0)) { popup_an_error("CreatePipe(stderr) failed: %s", win32_strerror(GetLastError())); CloseHandle(child_stdout_rd); CloseHandle(child_stdout_wr); child_broken = true; return; } if (!SetHandleInformation(child_stderr_rd, HANDLE_FLAG_INHERIT, 0)) { popup_an_error("SetHandleInformation(stderr) failed: %s", win32_strerror(GetLastError())); CloseHandle(child_stdout_rd); CloseHandle(child_stdout_wr); CloseHandle(child_stderr_rd); CloseHandle(child_stderr_wr); child_broken = true; return; } mode = PIPE_READMODE_BYTE; if (!SetNamedPipeHandleState(child_stderr_rd, &mode, NULL, NULL)) { popup_an_error("SetNamedPipeHandleState(stderr) failed: %s", win32_strerror(GetLastError())); CloseHandle(child_stdout_rd); CloseHandle(child_stdout_wr); CloseHandle(child_stderr_rd); CloseHandle(child_stderr_wr); child_broken = true; return; } /* Initialize the pop-ups. */ child_popup_init(); /* Express interest in their output. */ cr_stdout.pipe_handle = child_stdout_rd; cr_stdout.enable_event = CreateEvent(NULL, FALSE, FALSE, NULL); cr_stdout.done_event = CreateEvent(NULL, FALSE, FALSE, NULL); cr_stdout.thread = CreateThread(NULL, 0, child_read_thread, &cr_stdout, 0, NULL); AddInput(cr_stdout.done_event, cr_output); SetEvent(cr_stdout.enable_event); cr_stderr.pipe_handle = child_stderr_rd; cr_stderr.enable_event = CreateEvent(NULL, FALSE, FALSE, NULL); cr_stderr.done_event = CreateEvent(NULL, FALSE, FALSE, NULL); cr_stderr.thread = CreateThread(NULL, 0, child_read_thread, &cr_stderr, 0, NULL); cr_stderr.is_stderr = true; AddInput(cr_stderr.done_event, cr_output); SetEvent(cr_stderr.enable_event); #endif /*]*/ child_initted = true; } #if !defined(_WIN32) /*[*/ /* * Fork a child process, with its stdout/stderr connected to pop-up windows. * Returns -1 for an error, 0 for child context, pid for parent context. */ int fork_child(void) { pid_t pid; /* Do initialization, if it hasn't been done already. */ if (!child_initted) { init_child(); } /* If output was being dumped, turn it back on now. */ if (child_discarding) { child_discarding = false; } /* Fork and rearrange output. */ pid = fork(); if (pid == 0) { /* Child. */ dup2(child_outpipe[1], 1); close(child_outpipe[1]); dup2(child_errpipe[1], 2); close(child_errpipe[1]); } return pid; } #else /*][*/ /* Get the stdout and sterr redirect handles. */ void get_child_handles(HANDLE *out, HANDLE *err) { /* Do initialization, if it hasn't been done already. */ if (!child_initted) { init_child(); } /* If output was being dumped, turn it back on now. */ if (child_discarding) { child_discarding = false; } /* Return the handles. */ *out = child_stdout_wr; *err = child_stderr_wr; } #endif /*]*/ #if !defined(_WIN32) /*[*/ /* There's data from a child. */ static void child_data(struct pr3o *p, bool is_err) { int space; ssize_t nr; /* * If we're discarding output, pull it in and drop it on the floor. */ if (child_discarding) { nr = read(p->fd, p->buf, CHILD_BUF); return; } /* Read whatever there is. */ space = CHILD_BUF - p->count - 1; nr = read(p->fd, p->buf + p->count, space); if (nr < 0) { popup_an_errno(errno, "child session pipe input"); return; } /* Add it to the buffer, and add a NULL. */ p->count += nr; p->buf[p->count] = '\0'; /* * If there's no more room in the buffer, dump it now. Otherwise, * give it a second to generate more output. */ if (p->count >= CHILD_BUF - 1) { child_dump(p, is_err); } else if (p->timeout_id == 0L) { p->timeout_id = AddTimeOut(1000, is_err? child_etimeout: child_otimeout); } } /* The child process has some output for us. */ static void child_output(iosrc_t fd _is_unused, ioid_t id _is_unused) { child_data(&child_stdout, false); } /* The child process has some error output for us. */ static void child_error(iosrc_t fd _is_unused, ioid_t id _is_unused) { child_data(&child_stderr, true); } /* Timeout from child output or error output. */ static void child_timeout(struct pr3o *p, bool is_err) { /* Forget the timeout ID. */ p->timeout_id = 0L; /* Dump the output. */ child_dump(p, is_err); } /* Timeout from child output. */ static void child_otimeout(ioid_t id _is_unused) { child_timeout(&child_stdout, false); } /* Timeout from child error output. */ static void child_etimeout(ioid_t id _is_unused) { child_timeout(&child_stderr, true); } /* * Abort button from child output. * Ignore output from the child process, so the user can abort it. */ void child_ignore_output(void) { /* Pitch pending output. */ child_stdout.count = 0; child_stderr.count = 0; /* Remove pendnig timeouts. */ if (child_stdout.timeout_id) { RemoveTimeOut(child_stdout.timeout_id); child_stdout.timeout_id = 0L; } if (child_stderr.timeout_id) { RemoveTimeOut(child_stderr.timeout_id); child_stderr.timeout_id = 0L; } /* Remember it. */ child_discarding = true; } /* Dump pending child process output. */ static void child_dump(struct pr3o *p, bool is_err) { if (p->count) { /* * Strip any trailing newline, and make sure the buffer is * NULL terminated. */ if (p->buf[p->count - 1] == '\n') { p->buf[--(p->count)] = '\0'; } else if (p->buf[p->count]) { p->buf[p->count] = '\0'; } /* Dump it and clear the buffer. */ popup_child_output(is_err, child_ignore_output, "%s", p->buf); p->count = 0; } } #endif /*]*/ #if defined(_WIN32) /*[*/ /* Read from the child's stdout or stderr. */ static DWORD WINAPI child_read_thread(LPVOID parameter) { cr_t *cr = (cr_t *)parameter; DWORD success; for (;;) { DWORD rv = WaitForSingleObject(cr->enable_event, INFINITE); switch (rv) { case WAIT_OBJECT_0: success = ReadFile(cr->pipe_handle, cr->buf, CHILD_BUF, &cr->nr, NULL); if (!success) { cr->nr = 0; cr->error = GetLastError(); } else { cr->error = 0; } SetEvent(cr->done_event); break; default: cr->nr = 0; cr->error = ERROR_NO_DATA; SetEvent(cr->done_event); break; } } return 0; } /* The child stdout or stderr thread produced output. */ static void cr_output(iosrc_t fd, ioid_t id) { cr_t *cr; /* Find the descriptor. */ if (fd == cr_stdout.done_event) { cr = &cr_stdout; } else if (fd == cr_stderr.done_event) { cr = &cr_stderr; } else { vtrace("cr_output: unknown handle\n"); return; } if (cr->nr == 0) { fprintf(stderr, "cr_output failed: error %s\n", win32_strerror(cr->error)); x3270_exit(1); } popup_child_output(cr->is_stderr, NULL, "%.*s", (int)cr->nr, cr->buf); /* Ready for more. */ SetEvent(cr->enable_event); } #endif /*]*/ suite3270-4.1/Common/childscript.c000066400000000000000000001072101413735575200167440ustar00rootroot00000000000000/* * Copyright (c) 1993-2016, 2018-2021 Paul Mattes. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the names of Paul Mattes nor the names of his contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO * EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * childscript.c * The Script() action. */ #include "globals.h" #include #include #if !defined(_WIN32) /*[*/ # include # include # include # include # include # include # include # include #endif /*]*/ #include "actions.h" #include "appres.h" #include "child.h" #include "popups.h" #include "child_popups.h" #include "childscript.h" #include "find_console.h" #include "httpd-core.h" #include "httpd-io.h" #include "lazya.h" #include "names.h" #include "peerscript.h" #include "s3270_proto.h" #include "task.h" #include "telnet_core.h" #include "trace.h" #include "utils.h" #include "varbuf.h" #include "w3misc.h" #define CHILD_BUF 1024 #define DELAYED_CLOSE_MS 3000 static void child_data(task_cbh handle, const char *buf, size_t len, bool success); static bool child_done(task_cbh handle, bool success, bool abort); static bool child_run(task_cbh handle, bool *success); static void child_closescript(task_cbh handle); static void child_setflags(task_cbh handle, unsigned flags); static unsigned child_getflags(task_cbh handle); static void child_setir(task_cbh handle, void *irhandle); static void *child_getir(task_cbh handle); static void child_setir_state(task_cbh handle, const char *name, void *state, ir_state_abort_cb abort_cb); static void *child_getir_state(task_cbh handle, const char *name); static const char *child_command(task_cbh handle); static void child_reqinput(task_cbh handle, const char *buf, size_t len, bool echo); static irv_t child_irv = { child_setir, child_getir, child_setir_state, child_getir_state }; /* Callback block for parent script. */ static tcb_t script_cb = { "child", IA_SCRIPT, 0, child_data, child_done, child_run, child_closescript, child_setflags, child_getflags, &child_irv, child_command, child_reqinput }; /* Asynchronous callback block for parent script. */ static tcb_t async_script_cb = { "child", IA_SCRIPT, CB_NEW_TASKQ, child_data, child_done, child_run, child_closescript, child_setflags, child_getflags, &child_irv, child_command, child_reqinput, }; #if !defined(_WIN32) /*[*/ /* Callback block for child (creates new taskq). */ static tcb_t child_cb = { "child", IA_SCRIPT, CB_NEW_TASKQ, child_data, child_done, child_run, child_closescript, child_setflags, child_getflags, &child_irv, child_command, child_reqinput }; #endif /*]*/ #if defined(_WIN32) /*[*/ /* Stdout read context. */ typedef struct { HANDLE pipe_rd_handle; /* read handle for pipe */ HANDLE pipe_wr_handle; /* write handle for pipe */ HANDLE enable_event; /* enable event (emulator to read thread) */ HANDLE done_event; /* done event (read thread to emulator) */ ioid_t done_id; /* I/O identifier for done event */ HANDLE read_thread; /* read thread */ char buf[CHILD_BUF]; /* input buffer */ DWORD nr; /* length of data in I/O buffer */ int error; /* error code for failed read */ bool dead; /* read thread has exited, set by read thread */ bool collected_eof; /* EOF collected by I/O function */ } cr_t; #endif /*]*/ typedef struct { peer_listen_t peer; hio_listener_t *httpd; } listeners_t; /* Child script context. */ typedef struct { llist_t llist; /* linkage */ char *parent_name; /* cb name */ char *command; /* command text */ bool is_async; /* true if script is async */ bool done; /* true if script is complete */ bool success; /* success or failure */ ioid_t exit_id; /* I/O identifier for child exit */ int exit_status; /* exit status */ bool enabled; /* enabled */ char *output_buf; /* output buffer */ size_t output_buflen; /* size of output buffer */ listeners_t listeners; /* listeners for child commands */ bool keyboard_lock; /* lock/unlock keyboard while running */ unsigned capabilities; /* self-reported capabilities */ void *irhandle; /* input request handle */ task_cb_ir_state_t ir_state; /* named input request state */ #if defined(_WIN32) /*[*/ DWORD pid; /* process ID */ HANDLE child_handle; /* status collection handle */ cr_t cr; /* stdout read context */ #else /*][*/ char *child_name; /* cb name */ pid_t pid; /* process ID */ int infd; /* input (to emulator) file descriptor */ int outfd; /* output (to script) file descriptor */ ioid_t id; /* input I/O identifier */ char *buf; /* pending command */ size_t buf_len; /* length of pending command */ int stdoutpipe; /* stdout pipe */ ioid_t stdout_id; /* stdout I/O identifier */ #endif /*]*/ } child_t; static llist_t child_scripts = LLIST_INIT(child_scripts); #if !defined(_WIN32) /*[*/ typedef struct { llist_t llist; /* linkage */ ioid_t id; /* I/O identifier for timeout */ listeners_t listeners; /* listeners */ } delayed_close_t; static llist_t delayed_closes = LLIST_INIT(delayed_closes); #endif /*]*/ /** * Free a child. * * @param[in,out] c Child. */ static void free_child(child_t *c) { llist_unlink(&c->llist); Replace(c->parent_name, NULL); Replace(c->command, NULL); #if !defined(_WIN32) /*[*/ Replace(c->child_name, NULL); #endif /*]*/ Replace(c->output_buf, NULL); Free(c); } /** * Close a set of listeners. * * @param[in] l Listeners. */ static void close_listeners(listeners_t *l) { if (l->httpd != NULL) { hio_stop_x(l->httpd); l->httpd = NULL; } if (l->peer != NULL) { peer_shutdown(l->peer); l->peer = NULL; } } #if !defined(_WIN32) /*[*/ /** * Run the next command in the child buffer. * * @param[in,out] c Child * * @return true if command was run. Command is deleted from the buffer. */ static bool run_next(child_t *c) { size_t cmdlen; char *name; /* Find a newline in the buffer. */ for (cmdlen = 0; cmdlen < c->buf_len; cmdlen++) { if (c->buf[cmdlen] == '\n') { break; } } if (cmdlen >= c->buf_len) { return false; } /* * Run the first command. * cmdlen is the number of characters in the command, not including the * newline. */ name = push_cb(c->buf, cmdlen, &child_cb, (task_cbh)c); Replace(c->child_name, NewString(name)); /* If there is more, shift it over. */ cmdlen++; /* count the newline */ if (c->buf_len > cmdlen) { memmove(c->buf, c->buf + cmdlen, c->buf_len - cmdlen); c->buf_len = c->buf_len - cmdlen; } else { Replace(c->buf, NULL); c->buf_len = 0; } return true; } /** * Delayed close of a child script listener. * * @param[in] id I/O identifier. */ static void delayed_close(ioid_t id) { delayed_close_t *dc; FOREACH_LLIST(&delayed_closes, dc, delayed_close_t *) { if (dc->id == id) { vtrace("Delayed shutdown of listeners\n"); close_listeners(&dc->listeners); llist_unlink(&dc->llist); Free(dc); return; } } FOREACH_LLIST_END(&delayed_closes, dc, delayed_close_t *); vtrace("Error: Delayed shutdown record not found\n"); } /** * Tear down a child. * * @param[in,out] c Child. */ static void close_child(child_t *c) { if (c->is_async && c->listeners.httpd != NULL) { delayed_close_t *dc = Calloc(sizeof(delayed_close_t), 1); /* * Delay the close. gnome-terminal, for example, forks and execs a * new process for the console. We need to wait a while for it to * connect. */ llist_init(&dc->llist); dc->listeners = c->listeners; /* struct copy */ LLIST_APPEND(&dc->llist, delayed_closes); dc->id = AddTimeOut(DELAYED_CLOSE_MS, delayed_close); } else { close_listeners(&c->listeners); } c->listeners.httpd = NULL; c->listeners.peer = NULL; if (c->infd != -1) { close(c->infd); c->infd = -1; } if (c->outfd != -1) { close(c->outfd); c->outfd = -1; } if (c->id != NULL_IOID) { RemoveInput(c->id); c->id = NULL_IOID; } Replace(c->buf, NULL); if (c->stdout_id != NULL_IOID) { RemoveInput(c->stdout_id); c->stdout_id = NULL_IOID; } if (c->stdoutpipe != -1) { close(c->stdoutpipe); c->stdoutpipe = -1; } if (c->irhandle != NULL) { task_abort_input_request_irhandle(c->irhandle); c->irhandle = NULL; } task_cb_abort_ir_state(&c->ir_state); /* Abort any pending child. */ if (c->child_name != NULL) { abort_queue(c->child_name); } } /** * Read the next command from a child pipe. * @param[in] fd File descriptor * @param[in] id I/O identifier */ static void child_input(iosrc_t fd _is_unused, ioid_t id) { child_t *c; bool found_child = false; char buf[8192]; size_t n2r; size_t nr; size_t i; /* Find the child. */ FOREACH_LLIST(&child_scripts, c, child_t *) { if (c->id == id) { found_child = true; break; } } FOREACH_LLIST_END(&child_scripts, c, child_t *); assert(found_child); /* Read input. */ n2r = sizeof(buf); nr = read(c->infd, buf, (int)n2r); assert(nr >= 0); vtrace("%s input complete, nr=%d\n", c->parent_name, (int)nr); if (nr == 0) { vtrace("%s script EOF\n", c->parent_name); close_child(c); if (c->exit_id == NULL_IOID) { c->done = true; task_activate((task_cbh *)c); } RemoveInput(c->id); c->id = NULL_IOID; close(c->infd); c->infd = -1; return; } /* Append, filtering out CRs. */ c->buf = Realloc(c->buf, c->buf_len + nr + 1); for (i = 0; i < nr; i++) { char ch = buf[i]; if (ch != '\r') { c->buf[c->buf_len++] = ch; } } /* Disable further input. */ if (c->id != NULL_IOID) { RemoveInput(c->id); c->id = NULL_IOID; } /* Run the next command, if we have it all. */ if (!run_next(c) && c->id == NULL_IOID) { /* Get more input. */ c->id = AddInput(c->infd, child_input); } } /** * Read output from a child script. * @param[in] fd File descriptor * @param[in] id I/O identifier */ static void child_stdout(iosrc_t fd _is_unused, ioid_t id) { child_t *c; bool found_child = false; char buf[8192]; size_t n2r; size_t nr; size_t new_buflen; /* Find the child. */ FOREACH_LLIST(&child_scripts, c, child_t *) { if (c->stdout_id == id) { found_child = true; break; } } FOREACH_LLIST_END(&child_scripts, c, child_t *); assert(found_child); /* Read input. */ n2r = sizeof(buf); nr = read(fd, buf, (int)n2r); assert(nr >= 0); vtrace("%s stdout read complete, nr=%d\n", c->parent_name, (int)nr); if (nr == 0) { vtrace("%s script stdout EOF\n", c->parent_name); RemoveInput(c->stdout_id); c->stdout_id = NULL_IOID; close(c->stdoutpipe); c->stdoutpipe = -1; return; } /* Save it. */ new_buflen = c->output_buflen + nr; c->output_buf = Realloc(c->output_buf, new_buflen + 1); memcpy(c->output_buf + c->output_buflen, buf, nr); c->output_buflen = new_buflen; c->output_buf[new_buflen] = '\0'; } #endif /*]*/ /** * Callback for data returned to child script command via a pipe. * * @param[in] handle Callback handle * @param[in] buf Buffer * @param[in] len Buffer length * @param[in] success True if data, false if error message */ static void child_data(task_cbh handle, const char *buf, size_t len, bool success) { #if !defined(_WIN32) /*[*/ child_t *c = (child_t *)handle; char *s = lazyaf(DATA_PREFIX "%.*s\n", (int)len, buf); ssize_t nw; nw = write(c->outfd, s, strlen(s)); if (nw != (ssize_t)strlen(s)) { vtrace("child_data: short write\n"); } #endif /*]*/ } /** * Callback for input request * * @param[in] handle Callback handle * @param[in] buf Buffer * @param[in] len Buffer length * @param[in] echo True to echo input */ static void child_reqinput(task_cbh handle, const char *buf, size_t len, bool echo) { #if !defined(_WIN32) /*[*/ child_t *c = (child_t *)handle; char *s = lazyaf("%s%.*s\n", echo? INPUT_PREFIX: PWINPUT_PREFIX, (int)len, buf); ssize_t nw; nw = write(c->outfd, s, strlen(s)); if (nw != (ssize_t)strlen(s)) { vtrace("child_reqinput: short write\n"); } #endif /*]*/ } /** * Callback for completion of one command executed from the child script in * s3270 mode. * * @param[in] handle Callback handle * @param[in] success True if child succeeded * @param[in] abort True if aborting * * @return True of script has terminated */ static bool child_done(task_cbh handle, bool success, bool abort) { child_t *c = (child_t *)handle; #if !defined(_WIN32) /*[*/ bool new_child; char *prompt; char *s; ssize_t nw; if (abort || !c->enabled) { close_listeners(&c->listeners); vtrace("%s terminating script process\n", c->parent_name); kill(c->pid, SIGTERM); if (c->keyboard_lock) { disable_keyboard(ENABLE, IMPLICIT, AnScript "() abort"); } return true; } /* Print the prompt. */ prompt = task_cb_prompt(handle); s = lazyaf("%s\n%s\n", prompt, success? "ok": "error"); vtrace("Output for %s: %s/%s\n", c->child_name, prompt, success? "ok": "error"); nw = write(c->outfd, s, strlen(s)); if (nw != (ssize_t)strlen(s)) { vtrace("child_done: short write\n"); } /* Run any pending command that we already read in. */ new_child = run_next(c); if (!new_child && c->id == NULL_IOID && c->infd != -1) { /* Allow more input. */ c->id = AddInput(c->infd, child_input); } /* * If there was a new child, we're still active. Otherwise, let our CB * be popped. */ return !new_child; #else /*][*/ if (abort) { close_listeners(&c->listeners); vtrace("%s terminating script process\n", c->parent_name); TerminateProcess(c->child_handle, 1); if (c->keyboard_lock) { disable_keyboard(ENABLE, IMPLICIT, AnScript "() abort"); } } return true; #endif /*]*/ } #if defined(_WIN32) /*[*/ static void cr_teardown(cr_t *cr) { if (cr->pipe_rd_handle != INVALID_HANDLE_VALUE) { CloseHandle(cr->pipe_rd_handle); cr->pipe_rd_handle = INVALID_HANDLE_VALUE; } if (cr->pipe_wr_handle != INVALID_HANDLE_VALUE) { CloseHandle(cr->pipe_wr_handle); cr->pipe_wr_handle = INVALID_HANDLE_VALUE; } if (cr->enable_event != INVALID_HANDLE_VALUE) { CloseHandle(cr->enable_event); cr->enable_event = INVALID_HANDLE_VALUE; } if (cr->done_event != INVALID_HANDLE_VALUE) { CloseHandle(cr->done_event); cr->done_event = INVALID_HANDLE_VALUE; } if (cr->done_id != NULL_IOID) { RemoveInput(cr->done_id); cr->done_id = NULL_IOID; } if (cr->read_thread != INVALID_HANDLE_VALUE) { CloseHandle(cr->read_thread); cr->read_thread = INVALID_HANDLE_VALUE; } } /** * Tear down a child. * * @param[in,out] c Child. */ static void close_child(child_t *c) { if (c->child_handle != INVALID_HANDLE_VALUE) { CloseHandle(c->child_handle); c->child_handle = INVALID_HANDLE_VALUE; } close_listeners(&c->listeners); cr_teardown(&c->cr); if (c->irhandle != NULL) { task_abort_input_request_irhandle(c->irhandle); c->irhandle = NULL; } task_cb_abort_ir_state(&c->ir_state); } /* * Collect output from the read thread. * Returns true if more input may be available. */ static bool cr_collect(child_t *c) { cr_t *cr = &c->cr; if (cr->nr != 0) { vtrace("Got %d bytes of script stdout/stderr\n", (int)cr->nr); if (cr->nr == 2 && !strncmp(cr->buf, "^C", 2)) { /* Hack, hack, hack. */ vtrace("Suppressing '^C' output from child\n"); } else { c->output_buf = Realloc(c->output_buf, c->output_buflen + cr->nr + 1); memcpy(c->output_buf + c->output_buflen, cr->buf, cr->nr); c->output_buflen += cr->nr; c->output_buf[c->output_buflen] = '\0'; } /* Ready for more. */ cr->nr = 0; } if (cr->dead) { if (cr->error != 0) { vtrace("Script stdout/stderr read failed: %s\n", win32_strerror(cr->error)); } cr->collected_eof = true; return false; } SetEvent(cr->enable_event); return true; } #endif /*]*/ /** * Run vector for child scripts. * * @param[in] handle Context. * @param[out] success Returned true if script succeeded. * * @return True if script is complete. */ static bool child_run(task_cbh handle, bool *success) { child_t *c = (child_t *)handle; if (c->done) { #if defined(_WIN32) /*[*/ /* Collect remaining output and let the read thread exit. */ cr_t *cr = &c->cr; if (!cr->collected_eof) { do { vtrace("Waiting for child final stdout/stderr\n"); WaitForSingleObject(cr->done_event, INFINITE); } while (cr_collect(c)); } #endif /*]*/ if (c->output_buflen) { /* Strip out CRs. */ char *tmp = Malloc(strlen(c->output_buf) + 1); char *s = c->output_buf; char *t = tmp; char c; while ((c = *s++) != '\0') { if (c != '\r') { *t++ = c; } } *t = '\0'; action_output("%s", tmp); Free(tmp); } close_child(c); if (!c->success) { #if !defined(_WIN32) /*[*/ if (WIFEXITED(c->exit_status)) { popup_an_error("Script exited with status %d", WEXITSTATUS(c->exit_status)); } else if (WIFSIGNALED(c->exit_status)) { popup_an_error("Script killed by signal %d", WTERMSIG(c->exit_status)); } else { popup_an_error("Script stopped by unknown status %d", c->exit_status); } #else /*][*/ popup_an_error("Script exited with status %d", c->exit_status); #endif /*]*/ } *success = c->success; if (c->keyboard_lock) { disable_keyboard(ENABLE, IMPLICIT, "Script() completion"); } free_child(c); return true; } return false; } /** * Close a running child script. * * @param[in] handle Child context */ static void child_closescript(task_cbh handle) { child_t *c = (child_t *)handle; c->enabled = false; } /** * Set capabilities flags. * * @param[in] handle Child context * @param[in] flags Flags */ static void child_setflags(task_cbh handle, unsigned flags) { child_t *c = (child_t *)handle; c->capabilities = flags; } /** * Get capabilities flags. * * @param[in] handle Child context * @returns flags */ static unsigned child_getflags(task_cbh handle) { child_t *c = (child_t *)handle; return c->capabilities; } /** * Set the pending input request. * * @param[in] handle Child context * @param[in] irhandle Input request handle */ static void child_setir(task_cbh handle, void *irhandle) { child_t *c = (child_t *)handle; c->irhandle = irhandle; } /** * Get the pending input request. * * @param[in] handle Child context * * @returns input request handle */ static void * child_getir(task_cbh handle) { child_t *c = (child_t *)handle; return c->irhandle; } /** * Set input request state. * * @param[in] handle CB handle * @param[in] name Input request type name * @param[in] state State to store * @param[in] abort Abort callback */ static void child_setir_state(task_cbh handle, const char *name, void *state, ir_state_abort_cb abort) { child_t *c = (child_t *)handle; task_cb_set_ir_state(&c->ir_state, name, state, abort); } /** * Get input request state. * * @param[in] handle CB handle * @param[in] name Input request type name * * @returns input request state */ static void * child_getir_state(task_cbh handle, const char *name) { child_t *c = (child_t *)handle; return task_cb_get_ir_state(&c->ir_state, name); } /** * Get the command text. * * @param[in] handle CB handle * * @returns command text, or NULL */ static const char * child_command(task_cbh handle) { child_t *c = (child_t *)handle; return c->command; } #if !defined(_WIN32) /*[*/ static void child_exited(ioid_t id, int status) { child_t *c; bool found_child = false; FOREACH_LLIST(&child_scripts, c, child_t *) { if (c->exit_id == id) { found_child = true; break; } } FOREACH_LLIST_END(&child_scripts, c, child_t *); if (!found_child) { vtrace("child_exited: no match\n"); return; } vtrace("%s script %d exited with status %d\n", (c->child_name != NULL) ? c->child_name : "socket", (int)c->pid, status); c->exit_status = status; if (status != 0) { c->success = false; } c->exit_id = NULL_IOID; if (c->id == NULL_IOID) { /* This task should be run. */ c->done = true; task_activate((task_cbh *)c); } } #endif /*]*/ #if defined(_WIN32) /*[*/ /* Process an event on a child script handle (a process exit). */ static void child_exited(iosrc_t fd _is_unused, ioid_t id _is_unused) { child_t *c; bool found_child = false; DWORD status; FOREACH_LLIST(&child_scripts, c, child_t *) { if (c->exit_id == id) { found_child = true; break; } } FOREACH_LLIST_END(&child_scripts, c, child_t *); if (!found_child) { vtrace("child_exited: no match\n"); return; } status = 0; if (GetExitCodeProcess(c->child_handle, &status) == 0) { popup_an_error("GetExitCodeProcess failed: %s", win32_strerror(GetLastError())); } else if (status != STILL_ACTIVE) { vtrace("%s script exited with status %d\n", c->parent_name, (unsigned)status); c->exit_status = status; if (status != 0) { c->success = false; } CloseHandle(c->child_handle); c->child_handle = INVALID_HANDLE_VALUE; RemoveInput(c->exit_id); c->exit_id = NULL_IOID; /* This task should be run. */ c->done = true; task_activate((task_cbh *)c); } } /* Read from the child's stdout or stderr. */ static DWORD WINAPI child_read_thread(LPVOID parameter) { child_t *child = (child_t *)parameter; cr_t *cr = &child->cr; DWORD success; bool done = false; while (!done) { switch (WaitForSingleObject(cr->enable_event, INFINITE)) { case WAIT_OBJECT_0: success = ReadFile(cr->pipe_rd_handle, cr->buf, CHILD_BUF, &cr->nr, NULL); if (!success) { /* Canceled or pipe broken. */ cr->error = GetLastError(); done = true; break; } SetEvent(cr->done_event); break; default: cr->error = GetLastError(); done = true; break; } } /* All done, I hope. */ cr->nr = 0; cr->dead = true; SetEvent(cr->done_event); return 0; } /* The child stdout/stderr thread produced output. */ static void cr_output(iosrc_t fd, ioid_t id) { child_t *c; bool found_child = false; /* Find the descriptor. */ FOREACH_LLIST(&child_scripts, c, child_t *) { if (c->cr.done_id == id) { found_child = true; break; } } FOREACH_LLIST_END(&child_scripts, c, child_t *); assert(found_child); /* Collect the output. */ cr_collect(c); } /* Set up the stdout reader context. */ static bool setup_cr(child_t *c) { cr_t *cr = &c->cr; SECURITY_ATTRIBUTES sa; DWORD mode; /* Create the pipe. */ memset(&sa, 0, sizeof(sa)); sa.nLength = sizeof(SECURITY_ATTRIBUTES); sa.bInheritHandle = TRUE; sa.lpSecurityDescriptor = NULL; if (!CreatePipe(&cr->pipe_rd_handle, &cr->pipe_wr_handle, &sa, 0)) { popup_an_error("CreatePipe() failed: %s", win32_strerror(GetLastError())); return false; } if (!SetHandleInformation(cr->pipe_rd_handle, HANDLE_FLAG_INHERIT, 0)) { popup_an_error("SetHandleInformation() failed: %s", win32_strerror(GetLastError())); CloseHandle(cr->pipe_rd_handle); CloseHandle(cr->pipe_wr_handle); return false; } mode = PIPE_READMODE_BYTE; if (!SetNamedPipeHandleState(cr->pipe_rd_handle, &mode, NULL, NULL)) { popup_an_error("SetNamedPipeHandleState(stdout) failed: %s", win32_strerror(GetLastError())); CloseHandle(cr->pipe_rd_handle); CloseHandle(cr->pipe_wr_handle); return false; } /* Express interest in their output. */ cr->enable_event = CreateEvent(NULL, FALSE, FALSE, NULL); cr->done_event = CreateEvent(NULL, FALSE, FALSE, NULL); cr->read_thread = CreateThread(NULL, 0, child_read_thread, c, 0, NULL); cr->done_id = AddInput(cr->done_event, cr_output); return true; } #endif /*]*/ /* "Script" action, runs a script as a child process. */ bool Script_action(ia_t ia, unsigned argc, const char **argv) { child_t *c; char *name; bool async = false; bool keyboard_lock = true; bool stdout_redirect = true; peer_listen_mode mode = PLM_MULTI; listeners_t listeners; varbuf_t r; unsigned i; unsigned short httpd_port; unsigned short script_port; struct sockaddr_in *sin; #if !defined(_WIN32) /*[*/ pid_t pid; int inpipe[2] = { -1, -1 }; int outpipe[2] = { -1, -1 }; int stdoutpipe[2]; #else /*][*/ bool share_console = false; STARTUPINFO startupinfo; PROCESS_INFORMATION process_information; char *args; cr_t *cr; #endif /*]*/ action_debug(AnScript, ia, argc, argv); for (;;) { if (argc < 1) { popup_an_error(AnScript "() requires at least one argument"); return false; } if (!strcasecmp(argv[0], KwDashAsync)) { async = true; keyboard_lock = false; argc--; argv++; } else if (!strcasecmp(argv[0], KwDashNoLock)) { keyboard_lock = false; argc--; argv++; } else if (!strcasecmp(argv[0], KwDashSingle)) { mode = PLM_SINGLE; argc--; argv++; } else if (!strcasecmp(argv[0], KwDashNoStdoutRedirect)) { stdout_redirect = false; argc--; argv++; #if defined(_WIN32) /*[*/ } else if (!strcasecmp(argv[0], KwDashShareConsole)) { share_console = true; argc--; argv++; #endif /*]*/ } else { break; } } listeners.peer = NULL; listeners.httpd = NULL; /* Set up X3270PORT or X3270URL for the child process. */ sin = (struct sockaddr_in *)Calloc(1, sizeof(struct sockaddr_in)); sin->sin_family = AF_INET; sin->sin_addr.s_addr = htonl(INADDR_LOOPBACK); sin->sin_port = 0; listeners.httpd = hio_init_x((struct sockaddr *)sin, sizeof(*sin)); if (listeners.httpd == NULL) { Free(sin); return false; } httpd_port = ntohs(sin->sin_port); Free(sin); sin = (struct sockaddr_in *)Calloc(1, sizeof(struct sockaddr_in)); sin->sin_family = AF_INET; sin->sin_addr.s_addr = htonl(INADDR_LOOPBACK); sin->sin_port = 0; listeners.peer = peer_init((struct sockaddr *)sin, sizeof(*sin), mode); if (listeners.peer == NULL) { hio_stop_x(listeners.httpd); Free(sin); return false; } script_port = ntohs(sin->sin_port); Free(sin); putenv(lazyaf(URL_ENV "=http://127.0.0.1:%u/3270/rest/", httpd_port)); putenv(lazyaf(PORT_ENV "=%d", script_port)); #if !defined(_WIN32) /*[*/ /* * Create pipes and stdout stream for the script process. * inpipe[] is read by x3270, written by the script * outpipe[] is written by x3270, read by the script */ if (pipe(inpipe) < 0) { popup_an_error("pipe() failed"); close_listeners(&listeners); return false; } if (pipe(outpipe) < 0) { popup_an_error("pipe() failed"); close(inpipe[0]); close(inpipe[1]); close_listeners(&listeners); return false; } /* Create a pipe to capture child stdout. */ if (pipe(stdoutpipe) < 0) { popup_an_error("pipe() failed"); close(outpipe[0]); close(outpipe[1]); close(inpipe[0]); close(inpipe[1]); close_listeners(&listeners); } /* Fork and exec the script process. */ if ((pid = fork()) < 0) { popup_an_error("fork() failed"); close(inpipe[0]); close(inpipe[1]); close(outpipe[0]); close(outpipe[1]); close(stdoutpipe[0]); close(stdoutpipe[1]); close_listeners(&listeners); return false; } /* Child processing. */ if (pid == 0) { char **child_argv; unsigned i; /* Become a process group. */ setsid(); /* Clean up the pipes. */ close(outpipe[1]); close(inpipe[0]); close(stdoutpipe[0]); /* Redirect output. */ if (stdout_redirect) { dup2(stdoutpipe[1], 1); } else { dup2(open("/dev/null", O_WRONLY), 1); } dup2(stdoutpipe[1], 2); /* Export the names of the pipes into the environment. */ putenv(xs_buffer(OUTPUT_ENV "=%d", outpipe[0])); putenv(xs_buffer(INPUT_ENV "=%d", inpipe[1])); /* Set up arguments. */ child_argv = (char **)Malloc((argc + 1) * sizeof(char *)); for (i = 0; i < argc; i++) { child_argv[i] = (char *)argv[i]; } child_argv[i] = NULL; /* Exec. */ execvp(argv[0], child_argv); fprintf(stderr, "exec(%s) failed\n", argv[0]); _exit(1); } c = (child_t *)Calloc(1, sizeof(child_t)); llist_init(&c->llist); LLIST_APPEND(&c->llist, child_scripts); c->success = true; c->done = false; c->buf = NULL; c->buf_len = 0; c->pid = pid; c->exit_id = AddChild(pid, child_exited); c->enabled = true; c->stdoutpipe = stdoutpipe[0]; task_cb_init_ir_state(&c->ir_state); /* Clean up our ends of the pipes. */ c->infd = inpipe[0]; close(inpipe[1]); c->outfd = outpipe[1]; close(outpipe[0]); close(stdoutpipe[1]); /* Link the listeners. */ c->listeners = listeners; /* struct copy */ /* Allow child pipe input. */ c->id = AddInput(c->infd, child_input); /* Capture child output. */ c->stdout_id = AddInput(c->stdoutpipe, child_stdout); #else /*]*/ /* Set up the stdout/stderr output pipes. */ c = (child_t *)Calloc(1, sizeof(child_t)); if (!setup_cr(c)) { Free(c); return false; } task_cb_init_ir_state(&c->ir_state); cr = &c->cr; /* Start the child process. */ memset(&startupinfo, '\0', sizeof(STARTUPINFO)); startupinfo.cb = sizeof(STARTUPINFO); if (stdout_redirect) { startupinfo.hStdOutput = cr->pipe_wr_handle; } startupinfo.hStdError = cr->pipe_wr_handle; startupinfo.dwFlags |= STARTF_USESTDHANDLES; memset(&process_information, '\0', sizeof(PROCESS_INFORMATION)); args = NewString(argv[0]); for (i = 1; i < argc; i++) { char *t; if (strchr(argv[i], ' ') != NULL && argv[i][0] != '"' && argv[i][strlen(argv[i]) - 1] != '"') { t = xs_buffer("%s \"%s\"", args, argv[i]); } else { t = xs_buffer("%s %s", args, argv[i]); } Free(args); args = t; } if (CreateProcess(NULL, args, NULL, NULL, TRUE, (stdout_redirect && !share_console)? DETACHED_PROCESS: 0, NULL, NULL, &startupinfo, &process_information) == 0) { popup_an_error("CreateProcess(%s) failed: %s", argv[0], win32_strerror(GetLastError())); close_listeners(&listeners); /* Let the read thread complete. */ CloseHandle(cr->pipe_wr_handle); cr->pipe_wr_handle = INVALID_HANDLE_VALUE; SetEvent(cr->enable_event); WaitForSingleObject(cr->done_event, INFINITE); cr_teardown(cr); Free(c); Free(args); return false; } Free(args); CloseHandle(process_information.hThread); CloseHandle(cr->pipe_wr_handle); cr->pipe_wr_handle = INVALID_HANDLE_VALUE; SetEvent(cr->enable_event); /* Create a new script description. */ llist_init(&c->llist); LLIST_APPEND(&c->llist, child_scripts); c->success = true; c->done = false; c->child_handle = process_information.hProcess; c->pid = (int)process_information.dwProcessId; c->listeners = listeners; /* struct copy */ c->enabled = true; /* * Wait for the child process to exit. * Note that this is an asynchronous event -- exits for multiple * children can happen in any order. */ c->exit_id = AddInput(process_information.hProcess, child_exited); #endif /*]*/ /* Save the arguments. */ vb_init(&r); for (i = 0; i < argc; i++) { if (i > 0) { vb_appends(&r, ","); } vb_appends(&r, argv[i]); } c->command = vb_consume(&r); /* Create the context. It will be idle. */ c->is_async = async; c->keyboard_lock = keyboard_lock; name = push_cb(NULL, 0, async? &async_script_cb: &script_cb, (task_cbh)c); Replace(c->parent_name, NewString(name)); vtrace("%s script process is %d\n", c->parent_name, (int)c->pid); if (keyboard_lock) { disable_keyboard(DISABLE, IMPLICIT, AnScript "() start"); } return true; } /* * Start an x3270if-based interactive console, optionally overriding the app * name used as the prompt. * * Prompt([prompt[,help-action][,i18n-file]]) */ bool Prompt_action(ia_t ia, unsigned argc, const char **argv) { const char *params[3] = { programname, NULL, NULL }; unsigned i; const char **nargv = NULL; int nargc = 0; #if !defined(_WIN32) /*[*/ console_desc_t *t; const char *errmsg; #endif /*]*/ action_debug(AnPrompt, ia, argc, argv); if (check_argc(AnPrompt, argc, 0, 3) < 0) { return false; } #if !defined(_WIN32) /*[*/ /* Find a console emulator to run the prompt in. */ t = find_console(&errmsg); if (t == NULL) { popup_an_error(AnPrompt "(): console program:\n%s", errmsg); return false; } /* Make sure x3270if is available. */ if (!find_in_path("x3270if")) { popup_an_error(AnPrompt "(): can't find x3270if"); return false; } #endif /*]*/ if (appres.alias != NULL) { params[0] = appres.alias; } #if defined(_WIN32) /*[*/ else { size_t sl = strlen(params[0]); if (sl > 4 && !strcasecmp(params[0] + sl - 4, ".exe")) { params[0] = lazyaf("%.*s", (int)(sl - 4), params[0]); } } #endif /*]*/ for (i = 0; i < argc; i++) { const char *in = argv[i]; char *new_param = lazya(NewString(argv[i])); char *out = new_param; char c; while ((c = *in++)) { if (c != '\'' && c != '"' && (i == 2 || !isspace((int)c))) { *out++ = c; } } *out = '\0'; if (strlen(new_param) > 0) { params[i] = new_param; } } array_add(&nargv, nargc++, KwDashAsync); array_add(&nargv, nargc++, KwDashSingle); #if !defined(_WIN32) /*[*/ nargc = console_args(t, lazyaf("%s>", params[0]), &nargv, nargc); array_add(&nargv, nargc++, "/bin/sh"); array_add(&nargv, nargc++, "-c"); array_add(&nargv, nargc++, lazyaf("x3270if -I '%s'%s%s || (echo 'Press '; read x)", params[0], (params[1] != NULL)? lazyaf(" -H '%s'", params[1]): "", (params[2] != NULL)? lazyaf(" -L '%s'", params[2]): "")); #else /*][*/ array_add(&nargv, nargc++, KwDashSingle); array_add(&nargv, nargc++, "cmd.exe"); array_add(&nargv, nargc++, "/c"); array_add(&nargv, nargc++, "start"); array_add(&nargv, nargc++, lazyaf("\"%s\"", params[0])); array_add(&nargv, nargc++, "/wait"); array_add(&nargv, nargc++, "x3270if.exe"); array_add(&nargv, nargc++, "-I"); array_add(&nargv, nargc++, params[0]); if (params[1] != NULL) { array_add(&nargv, nargc++, "-H"); array_add(&nargv, nargc++, params[1]); } if (params[2] != NULL) { array_add(&nargv, nargc++, "-L"); array_add(&nargv, nargc++, lazyaf("\"%s\"", params[2])); } #endif /*]*/ array_add(&nargv, nargc++, NULL); lazya((void *)nargv); return Script_action(ia, nargc - 1, nargv); } suite3270-4.1/Common/ckeypad.h000066400000000000000000000035711413735575200160660ustar00rootroot00000000000000/* * Copyright (c) 1995-2009, 2013-2015 Paul Mattes. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the names of Paul Mattes nor the names of his contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO * EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * ckeypad.h * Global declarations for c3270 keypad.c. */ bool keypad_char(int row, int col, ucs4_t *u, bool *highlighted, unsigned char *acs); void keypad_cursor(int *row, int *col); void pop_up_keypad(bool up); void keypad_key(int k, ucs4_t u); # if defined(_WIN32) /*[*/ void keypad_click(int x, int y); # endif /*]*/ void keypad_register(void); suite3270-4.1/Common/codepage.c000066400000000000000000000235051413735575200162070ustar00rootroot00000000000000/* * Copyright (c) 1993-2009, 2013-2016, 2018-2019 Paul Mattes. * Copyright (c) 1990, Jeff Sparkes. * Copyright (c) 1989, Georgia Tech Research Corporation (GTRC), Atlanta, GA * 30332. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the names of Paul Mattes, Jeff Sparkes, GTRC nor the names of * their contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES, JEFF SPARKES AND GTRC "AS IS" AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL PAUL MATTES, JEFF SPARKES OR GTRC BE * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. */ /* * codepage.c * This module handles host code pages. */ #include "globals.h" #include "3270ds.h" #include "resources.h" #include "appres.h" #include "actions.h" #include "codepage.h" #include "lazya.h" #include "popups.h" #include "screen.h" #include "toggles.h" #include "unicodec.h" #include "unicode_dbcs.h" #include "utf8.h" #include "utils.h" #include #if !defined(_WIN32) /*[*/ # include #endif /*]*/ #if defined(__CYGWIN__) /*[*/ # include #undef _WIN32 #endif /*]*/ #if defined(_WIN32) /*[*/ # define LOCAL_CODEPAGE appres.local_cp #else /*][*/ # define LOCAL_CODEPAGE 0 #endif /* Globals. */ bool codepage_changed = false; #define DEFAULT_CGEN 0x02b90000 #define DEFAULT_CSET 0x00000025 unsigned long cgcsgid = DEFAULT_CGEN | DEFAULT_CSET; unsigned long cgcsgid_dbcs = 0L; /* Statics. */ static enum cs_result codepage_init2(const char *cpname, const char *realname, const char *codepage, const char *cgcsgid, bool is_dbcs); static void set_cgcsgids(const char *spec); static bool set_cgcsgid(char *spec, unsigned long *idp); static void set_codepage_number(char *codepage); static void set_codepage_name(const char *cpname); static char *codepage_number = NULL; static char *codepage_name = NULL; static char *canon_codepage = NULL; /* * Change host code pages. */ enum cs_result codepage_init(const char *cpname) { enum cs_result rc; char *codeset_name; const char *codepage; const char *cgcsgid; const char *dbcs_cgcsgid = NULL; const char *realname; bool is_dbcs; #if !defined(_WIN32) /*[*/ /* Get all of the locale stuff right. */ setlocale(LC_ALL, ""); /* Figure out the locale code set (character set encoding). */ codeset_name = nl_langinfo(CODESET); # if defined(__CYGWIN__) /*[*/ /* * Cygwin's locale support is quite limited. If the locale * indicates "US-ASCII", which appears to be the only supported * encoding, ignore it and use the Windows ANSI code page, which * observation indicates is what is actually supported. * * Hopefully at some point Cygwin will start returning something * meaningful here and this logic will stop triggering. */ if (!strcmp(codeset_name, "US-ASCII")) { codeset_name = lazyaf("CP%d", GetACP()); } # endif /*]*/ #else /*][*/ codeset_name = lazyaf("CP%d", appres.local_cp); #endif /*]*/ set_codeset(codeset_name, appres.utf8); if (cpname == NULL) { cpname = "bracket"; } if (!set_uni(cpname, LOCAL_CODEPAGE, &codepage, &cgcsgid, &realname, &is_dbcs)) { return CS_NOTFOUND; } if (appres.sbcs_cgcsgid != NULL) { cgcsgid = appres.sbcs_cgcsgid; /* override */ } if (set_uni_dbcs(cpname, &dbcs_cgcsgid)) { if (appres.dbcs_cgcsgid != NULL) { dbcs_cgcsgid = appres.dbcs_cgcsgid; /* override */ } cgcsgid = lazyaf("%s+%s", cgcsgid, dbcs_cgcsgid); } rc = codepage_init2(cpname, realname, codepage, cgcsgid, is_dbcs); if (rc != CS_OKAY) { return rc; } return CS_OKAY; } /* Set a CGCSGID. Return true for success, false for failure. */ static bool set_cgcsgid(char *spec, unsigned long *r) { unsigned long cp; char *ptr; if (spec != NULL && (cp = strtoul(spec, &ptr, 0)) && ptr != spec && *ptr == '\0') { if (!(cp & ~0xffffL)) { *r = DEFAULT_CGEN | cp; } else { *r = cp; } return true; } else { return false; } } /* Set the CGCSGIDs. */ static void set_cgcsgids(const char *spec) { int n_ids = 0; char *spec_copy; char *buf; char *token; if (spec != NULL) { buf = spec_copy = NewString(spec); while (n_ids >= 0 && (token = strtok(buf, "+")) != NULL) { unsigned long *idp = NULL; buf = NULL; switch (n_ids) { case 0: idp = &cgcsgid; break; case 1: idp = &cgcsgid_dbcs; break; default: popup_an_error("Extra CGCSGID(s), ignoring"); break; } if (idp == NULL) break; if (!set_cgcsgid(token, idp)) { popup_an_error("Invalid CGCSGID '%s', ignoring", token); n_ids = -1; break; } n_ids++; } Free(spec_copy); if (n_ids > 0) { return; } } if (appres.sbcs_cgcsgid != NULL) { cgcsgid = strtoul(appres.sbcs_cgcsgid, NULL, 0); } else { cgcsgid = DEFAULT_CGEN | DEFAULT_CSET; } if (appres.dbcs_cgcsgid != NULL) { cgcsgid_dbcs = strtoul(appres.dbcs_cgcsgid, NULL, 0); } else { cgcsgid_dbcs = 0L; } } /* Set the codepage number. */ static void set_codepage_number(char *codepage) { if (codepage == NULL) { Replace(codepage_number, NewString("037")); return; } if (codepage_number == NULL || strcmp(codepage_number, codepage)) { Replace(codepage_number, NewString(codepage)); } } /** * Return the canonical form of a code page, given a resource value. * This is needed because the resource definition may be a valid alias, but * we always want to display and return the canonical name. * * @param[in] res Resource value, or NULL * * @returns Canonical representation. */ static char * canonical_cs(const char *res) { const char *canon; if (res == NULL) { return NULL; } canon = canonical_codepage(res); if (canon == NULL) { return NULL; } return NewString(canon); } /* Set the code page name. */ static void set_codepage_name(const char *cpname) { char *canon; if (cpname == NULL) { Replace(codepage_name, NewString("bracket")); codepage_changed = false; return; } canon = canonical_cs(cpname); if (canon == NULL) { canon = NewString(cpname); } if ((codepage_name != NULL && strcmp(codepage_name, canon)) || (appres.codepage != NULL && strcmp(appres.codepage, canon))) { Replace(codepage_name, canon); codepage_changed = true; } else { Free(canon); } } /* Code page init, part 2. */ static enum cs_result codepage_init2(const char *cpname, const char *realname, const char *codepage, const char *cgcsgid, bool is_dbcs) { /* Can't swap DBCS modes while connected. */ if (IN_3270 && is_dbcs != dbcs) { popup_an_error("Can't change DBCS modes while connected"); return CS_ILLEGAL; } if (!screen_new_display_charsets(realname, cpname)) { return CS_PREREQ; } /* Set the global DBCS mode. */ dbcs = is_dbcs; /* Set up the cgcsgids. */ set_cgcsgids(cgcsgid); /* Set up the code page number. */ set_codepage_number((char *)codepage); /* Set up the code page name. */ set_codepage_name(cpname); /* Remember the canonical code page name. */ Replace(canon_codepage, NewString(realname)); return CS_OKAY; } /* Return the current host codepage. */ const char * get_codepage_number(void) { return (codepage_number != NULL)? codepage_number: "037"; } /* Return the canonical host codepage name. */ const char * get_canonical_codepage(void) { return (canon_codepage != NULL)? canon_codepage: "cp037"; } /* Return the current code page name. */ const char * get_codepage_name(void) { return (codepage_name != NULL)? codepage_name: ((appres.codepage != NULL)? appres.codepage: "bracket"); } /** * Extended toggle for the host code page. * * @param[in] name Toggle name. * @param[in] value New value, might be NULL. * * @returns true for success, false for failure. */ static bool toggle_codepage(const char *name _is_unused, const char *value) { enum cs_result result; if (value == NULL) { value = "bracket"; } result = codepage_init(value); switch (result) { case CS_OKAY: st_changed(ST_CODEPAGE, true); codepage_changed = true; Replace(appres.codepage, canonical_cs(value)); return true; case CS_NOTFOUND: popup_an_error("Cannot find definition of host code page \"%s\"", value); return false; case CS_BAD: popup_an_error("Invalid code page definition for \"%s\"", value); return false; case CS_PREREQ: popup_an_error("No fonts for host code page \"%s\"", value); return false; default: case CS_ILLEGAL: /* error already popped up */ return false; } } /* * Codepage module registration. */ void codepage_register(void) { /* Register the toggle. */ register_extended_toggle(ResCodePage, toggle_codepage, NULL, canonical_cs, (void **)&appres.codepage, XRM_STRING); } suite3270-4.1/Common/common_files.mk000066400000000000000000000000761413735575200172750ustar00rootroot00000000000000# Object files common to all 3270 emulators COMMON_OBJECTS = suite3270-4.1/Common/config.guess000077500000000000000000001275341413735575200166230ustar00rootroot00000000000000#! /bin/sh # Attempt to guess a canonical system name. # Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, # 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008 # Free Software Foundation, Inc. timestamp='2008-01-23' # This file 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 2 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, write to the Free Software # Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA # 02110-1301, USA. # # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. # Originally written by Per Bothner . # Please send patches to . Submit a context # diff and a properly formatted ChangeLog entry. # # This script attempts to guess a canonical system name similar to # config.sub. If it succeeds, it prints the system name on stdout, and # exits with 0. Otherwise, it exits with 1. # # The plan is that this can be called by configure scripts if you # don't specify an explicit build system type. me=`echo "$0" | sed -e 's,.*/,,'` usage="\ Usage: $0 [OPTION] Output the configuration name of the system \`$me' is run on. Operation modes: -h, --help print this help, then exit -t, --time-stamp print date of last modification, then exit -v, --version print version number, then exit Report bugs and patches to ." version="\ GNU config.guess ($timestamp) Originally written by Per Bothner. Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." help=" Try \`$me --help' for more information." # Parse command line while test $# -gt 0 ; do case $1 in --time-stamp | --time* | -t ) echo "$timestamp" ; exit ;; --version | -v ) echo "$version" ; exit ;; --help | --h* | -h ) echo "$usage"; exit ;; -- ) # Stop option processing shift; break ;; - ) # Use stdin as input. break ;; -* ) echo "$me: invalid option $1$help" >&2 exit 1 ;; * ) break ;; esac done if test $# != 0; then echo "$me: too many arguments$help" >&2 exit 1 fi trap 'exit 1' 1 2 15 # CC_FOR_BUILD -- compiler used by this script. Note that the use of a # compiler to aid in system detection is discouraged as it requires # temporary files to be created and, as you can see below, it is a # headache to deal with in a portable fashion. # Historically, `CC_FOR_BUILD' used to be named `HOST_CC'. We still # use `HOST_CC' if defined, but it is deprecated. # Portable tmp directory creation inspired by the Autoconf team. set_cc_for_build=' trap "exitcode=\$?; (rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null) && exit \$exitcode" 0 ; trap "rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null; exit 1" 1 2 13 15 ; : ${TMPDIR=/tmp} ; { tmp=`(umask 077 && mktemp -d "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } || { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir $tmp) ; } || { tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir $tmp) && echo "Warning: creating insecure temp directory" >&2 ; } || { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; } ; dummy=$tmp/dummy ; tmpfiles="$dummy.c $dummy.o $dummy.rel $dummy" ; case $CC_FOR_BUILD,$HOST_CC,$CC in ,,) echo "int x;" > $dummy.c ; for c in cc gcc c89 c99 ; do if ($c -c -o $dummy.o $dummy.c) >/dev/null 2>&1 ; then CC_FOR_BUILD="$c"; break ; fi ; done ; if test x"$CC_FOR_BUILD" = x ; then CC_FOR_BUILD=no_compiler_found ; fi ;; ,,*) CC_FOR_BUILD=$CC ;; ,*,*) CC_FOR_BUILD=$HOST_CC ;; esac ; set_cc_for_build= ;' # This is needed to find uname on a Pyramid OSx when run in the BSD universe. # (ghazi@noc.rutgers.edu 1994-08-24) if (test -f /.attbin/uname) >/dev/null 2>&1 ; then PATH=$PATH:/.attbin ; export PATH fi UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown # Note: order is significant - the case branches are not exclusive. case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in *:NetBSD:*:*) # NetBSD (nbsd) targets should (where applicable) match one or # more of the tupples: *-*-netbsdelf*, *-*-netbsdaout*, # *-*-netbsdecoff* and *-*-netbsd*. For targets that recently # switched to ELF, *-*-netbsd* would select the old # object file format. This provides both forward # compatibility and a consistent mechanism for selecting the # object file format. # # Note: NetBSD doesn't particularly care about the vendor # portion of the name. We always set it to "unknown". sysctl="sysctl -n hw.machine_arch" UNAME_MACHINE_ARCH=`(/sbin/$sysctl 2>/dev/null || \ /usr/sbin/$sysctl 2>/dev/null || echo unknown)` case "${UNAME_MACHINE_ARCH}" in armeb) machine=armeb-unknown ;; arm*) machine=arm-unknown ;; sh3el) machine=shl-unknown ;; sh3eb) machine=sh-unknown ;; sh5el) machine=sh5le-unknown ;; *) machine=${UNAME_MACHINE_ARCH}-unknown ;; esac # The Operating System including object format, if it has switched # to ELF recently, or will in the future. case "${UNAME_MACHINE_ARCH}" in arm*|i386|m68k|ns32k|sh3*|sparc|vax) eval $set_cc_for_build if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \ | grep __ELF__ >/dev/null then # Once all utilities can be ECOFF (netbsdecoff) or a.out (netbsdaout). # Return netbsd for either. FIX? os=netbsd else os=netbsdelf fi ;; *) os=netbsd ;; esac # The OS release # Debian GNU/NetBSD machines have a different userland, and # thus, need a distinct triplet. However, they do not need # kernel version information, so it can be replaced with a # suitable tag, in the style of linux-gnu. case "${UNAME_VERSION}" in Debian*) release='-gnu' ;; *) release=`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'` ;; esac # Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM: # contains redundant information, the shorter form: # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used. echo "${machine}-${os}${release}" exit ;; *:OpenBSD:*:*) UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'` echo ${UNAME_MACHINE_ARCH}-unknown-openbsd${UNAME_RELEASE} exit ;; *:ekkoBSD:*:*) echo ${UNAME_MACHINE}-unknown-ekkobsd${UNAME_RELEASE} exit ;; *:SolidBSD:*:*) echo ${UNAME_MACHINE}-unknown-solidbsd${UNAME_RELEASE} exit ;; macppc:MirBSD:*:*) echo powerpc-unknown-mirbsd${UNAME_RELEASE} exit ;; *:MirBSD:*:*) echo ${UNAME_MACHINE}-unknown-mirbsd${UNAME_RELEASE} exit ;; alpha:OSF1:*:*) case $UNAME_RELEASE in *4.0) UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'` ;; *5.*) UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $4}'` ;; esac # According to Compaq, /usr/sbin/psrinfo has been available on # OSF/1 and Tru64 systems produced since 1995. I hope that # covers most systems running today. This code pipes the CPU # types through head -n 1, so we only detect the type of CPU 0. ALPHA_CPU_TYPE=`/usr/sbin/psrinfo -v | sed -n -e 's/^ The alpha \(.*\) processor.*$/\1/p' | head -n 1` case "$ALPHA_CPU_TYPE" in "EV4 (21064)") UNAME_MACHINE="alpha" ;; "EV4.5 (21064)") UNAME_MACHINE="alpha" ;; "LCA4 (21066/21068)") UNAME_MACHINE="alpha" ;; "EV5 (21164)") UNAME_MACHINE="alphaev5" ;; "EV5.6 (21164A)") UNAME_MACHINE="alphaev56" ;; "EV5.6 (21164PC)") UNAME_MACHINE="alphapca56" ;; "EV5.7 (21164PC)") UNAME_MACHINE="alphapca57" ;; "EV6 (21264)") UNAME_MACHINE="alphaev6" ;; "EV6.7 (21264A)") UNAME_MACHINE="alphaev67" ;; "EV6.8CB (21264C)") UNAME_MACHINE="alphaev68" ;; "EV6.8AL (21264B)") UNAME_MACHINE="alphaev68" ;; "EV6.8CX (21264D)") UNAME_MACHINE="alphaev68" ;; "EV6.9A (21264/EV69A)") UNAME_MACHINE="alphaev69" ;; "EV7 (21364)") UNAME_MACHINE="alphaev7" ;; "EV7.9 (21364A)") UNAME_MACHINE="alphaev79" ;; esac # A Pn.n version is a patched version. # A Vn.n version is a released version. # A Tn.n version is a released field test version. # A Xn.n version is an unreleased experimental baselevel. # 1.2 uses "1.2" for uname -r. echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[PVTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` exit ;; Alpha\ *:Windows_NT*:*) # How do we know it's Interix rather than the generic POSIX subsystem? # Should we change UNAME_MACHINE based on the output of uname instead # of the specific Alpha model? echo alpha-pc-interix exit ;; 21064:Windows_NT:50:3) echo alpha-dec-winnt3.5 exit ;; Amiga*:UNIX_System_V:4.0:*) echo m68k-unknown-sysv4 exit ;; *:[Aa]miga[Oo][Ss]:*:*) echo ${UNAME_MACHINE}-unknown-amigaos exit ;; *:[Mm]orph[Oo][Ss]:*:*) echo ${UNAME_MACHINE}-unknown-morphos exit ;; *:OS/390:*:*) echo i370-ibm-openedition exit ;; *:z/VM:*:*) echo s390-ibm-zvmoe exit ;; *:OS400:*:*) echo powerpc-ibm-os400 exit ;; arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*) echo arm-acorn-riscix${UNAME_RELEASE} exit ;; arm:riscos:*:*|arm:RISCOS:*:*) echo arm-unknown-riscos exit ;; SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*) echo hppa1.1-hitachi-hiuxmpp exit ;; Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*) # akee@wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE. if test "`(/bin/universe) 2>/dev/null`" = att ; then echo pyramid-pyramid-sysv3 else echo pyramid-pyramid-bsd fi exit ;; NILE*:*:*:dcosx) echo pyramid-pyramid-svr4 exit ;; DRS?6000:unix:4.0:6*) echo sparc-icl-nx6 exit ;; DRS?6000:UNIX_SV:4.2*:7* | DRS?6000:isis:4.2*:7*) case `/usr/bin/uname -p` in sparc) echo sparc-icl-nx7; exit ;; esac ;; sun4H:SunOS:5.*:*) echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*) echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; i86pc:SunOS:5.*:* | i86xen:SunOS:5.*:*) echo i386-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; sun4*:SunOS:6*:*) # According to config.sub, this is the proper way to canonicalize # SunOS6. Hard to guess exactly what SunOS6 will be like, but # it's likely to be more like Solaris than SunOS4. echo sparc-sun-solaris3`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; sun4*:SunOS:*:*) case "`/usr/bin/arch -k`" in Series*|S4*) UNAME_RELEASE=`uname -v` ;; esac # Japanese Language versions have a version number like `4.1.3-JL'. echo sparc-sun-sunos`echo ${UNAME_RELEASE}|sed -e 's/-/_/'` exit ;; sun3*:SunOS:*:*) echo m68k-sun-sunos${UNAME_RELEASE} exit ;; sun*:*:4.2BSD:*) UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null` test "x${UNAME_RELEASE}" = "x" && UNAME_RELEASE=3 case "`/bin/arch`" in sun3) echo m68k-sun-sunos${UNAME_RELEASE} ;; sun4) echo sparc-sun-sunos${UNAME_RELEASE} ;; esac exit ;; aushp:SunOS:*:*) echo sparc-auspex-sunos${UNAME_RELEASE} exit ;; # The situation for MiNT is a little confusing. The machine name # can be virtually everything (everything which is not # "atarist" or "atariste" at least should have a processor # > m68000). The system name ranges from "MiNT" over "FreeMiNT" # to the lowercase version "mint" (or "freemint"). Finally # the system name "TOS" denotes a system which is actually not # MiNT. But MiNT is downward compatible to TOS, so this should # be no problem. atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*) echo m68k-atari-mint${UNAME_RELEASE} exit ;; atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*) echo m68k-atari-mint${UNAME_RELEASE} exit ;; *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*) echo m68k-atari-mint${UNAME_RELEASE} exit ;; milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*) echo m68k-milan-mint${UNAME_RELEASE} exit ;; hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*) echo m68k-hades-mint${UNAME_RELEASE} exit ;; *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*) echo m68k-unknown-mint${UNAME_RELEASE} exit ;; m68k:machten:*:*) echo m68k-apple-machten${UNAME_RELEASE} exit ;; powerpc:machten:*:*) echo powerpc-apple-machten${UNAME_RELEASE} exit ;; RISC*:Mach:*:*) echo mips-dec-mach_bsd4.3 exit ;; RISC*:ULTRIX:*:*) echo mips-dec-ultrix${UNAME_RELEASE} exit ;; VAX*:ULTRIX*:*:*) echo vax-dec-ultrix${UNAME_RELEASE} exit ;; 2020:CLIX:*:* | 2430:CLIX:*:*) echo clipper-intergraph-clix${UNAME_RELEASE} exit ;; mips:*:*:UMIPS | mips:*:*:RISCos) eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #ifdef __cplusplus #include /* for printf() prototype */ int main (int argc, char *argv[]) { #else int main (argc, argv) int argc; char *argv[]; { #endif #if defined (host_mips) && defined (MIPSEB) #if defined (SYSTYPE_SYSV) printf ("mips-mips-riscos%ssysv\n", argv[1]); exit (0); #endif #if defined (SYSTYPE_SVR4) printf ("mips-mips-riscos%ssvr4\n", argv[1]); exit (0); #endif #if defined (SYSTYPE_BSD43) || defined(SYSTYPE_BSD) printf ("mips-mips-riscos%sbsd\n", argv[1]); exit (0); #endif #endif exit (-1); } EOF $CC_FOR_BUILD -o $dummy $dummy.c && dummyarg=`echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` && SYSTEM_NAME=`$dummy $dummyarg` && { echo "$SYSTEM_NAME"; exit; } echo mips-mips-riscos${UNAME_RELEASE} exit ;; Motorola:PowerMAX_OS:*:*) echo powerpc-motorola-powermax exit ;; Motorola:*:4.3:PL8-*) echo powerpc-harris-powermax exit ;; Night_Hawk:*:*:PowerMAX_OS | Synergy:PowerMAX_OS:*:*) echo powerpc-harris-powermax exit ;; Night_Hawk:Power_UNIX:*:*) echo powerpc-harris-powerunix exit ;; m88k:CX/UX:7*:*) echo m88k-harris-cxux7 exit ;; m88k:*:4*:R4*) echo m88k-motorola-sysv4 exit ;; m88k:*:3*:R3*) echo m88k-motorola-sysv3 exit ;; AViiON:dgux:*:*) # DG/UX returns AViiON for all architectures UNAME_PROCESSOR=`/usr/bin/uname -p` if [ $UNAME_PROCESSOR = mc88100 ] || [ $UNAME_PROCESSOR = mc88110 ] then if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx ] || \ [ ${TARGET_BINARY_INTERFACE}x = x ] then echo m88k-dg-dgux${UNAME_RELEASE} else echo m88k-dg-dguxbcs${UNAME_RELEASE} fi else echo i586-dg-dgux${UNAME_RELEASE} fi exit ;; M88*:DolphinOS:*:*) # DolphinOS (SVR3) echo m88k-dolphin-sysv3 exit ;; M88*:*:R3*:*) # Delta 88k system running SVR3 echo m88k-motorola-sysv3 exit ;; XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3) echo m88k-tektronix-sysv3 exit ;; Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD) echo m68k-tektronix-bsd exit ;; *:IRIX*:*:*) echo mips-sgi-irix`echo ${UNAME_RELEASE}|sed -e 's/-/_/g'` exit ;; ????????:AIX?:[12].1:2) # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX. echo romp-ibm-aix # uname -m gives an 8 hex-code CPU id exit ;; # Note that: echo "'`uname -s`'" gives 'AIX ' i*86:AIX:*:*) echo i386-ibm-aix exit ;; ia64:AIX:*:*) if [ -x /usr/bin/oslevel ] ; then IBM_REV=`/usr/bin/oslevel` else IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} fi echo ${UNAME_MACHINE}-ibm-aix${IBM_REV} exit ;; *:AIX:2:3) if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #include main() { if (!__power_pc()) exit(1); puts("powerpc-ibm-aix3.2.5"); exit(0); } EOF if $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` then echo "$SYSTEM_NAME" else echo rs6000-ibm-aix3.2.5 fi elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then echo rs6000-ibm-aix3.2.4 else echo rs6000-ibm-aix3.2 fi exit ;; *:AIX:*:[456]) IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'` if /usr/sbin/lsattr -El ${IBM_CPU_ID} | grep ' POWER' >/dev/null 2>&1; then IBM_ARCH=rs6000 else IBM_ARCH=powerpc fi if [ -x /usr/bin/oslevel ] ; then IBM_REV=`/usr/bin/oslevel` else IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} fi echo ${IBM_ARCH}-ibm-aix${IBM_REV} exit ;; *:AIX:*:*) echo rs6000-ibm-aix exit ;; ibmrt:4.4BSD:*|romp-ibm:BSD:*) echo romp-ibm-bsd4.4 exit ;; ibmrt:*BSD:*|romp-ibm:BSD:*) # covers RT/PC BSD and echo romp-ibm-bsd${UNAME_RELEASE} # 4.3 with uname added to exit ;; # report: romp-ibm BSD 4.3 *:BOSX:*:*) echo rs6000-bull-bosx exit ;; DPX/2?00:B.O.S.:*:*) echo m68k-bull-sysv3 exit ;; 9000/[34]??:4.3bsd:1.*:*) echo m68k-hp-bsd exit ;; hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*) echo m68k-hp-bsd4.4 exit ;; 9000/[34678]??:HP-UX:*:*) HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` case "${UNAME_MACHINE}" in 9000/31? ) HP_ARCH=m68000 ;; 9000/[34]?? ) HP_ARCH=m68k ;; 9000/[678][0-9][0-9]) if [ -x /usr/bin/getconf ]; then sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null` sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null` case "${sc_cpu_version}" in 523) HP_ARCH="hppa1.0" ;; # CPU_PA_RISC1_0 528) HP_ARCH="hppa1.1" ;; # CPU_PA_RISC1_1 532) # CPU_PA_RISC2_0 case "${sc_kernel_bits}" in 32) HP_ARCH="hppa2.0n" ;; 64) HP_ARCH="hppa2.0w" ;; '') HP_ARCH="hppa2.0" ;; # HP-UX 10.20 esac ;; esac fi if [ "${HP_ARCH}" = "" ]; then eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #define _HPUX_SOURCE #include #include int main () { #if defined(_SC_KERNEL_BITS) long bits = sysconf(_SC_KERNEL_BITS); #endif long cpu = sysconf (_SC_CPU_VERSION); switch (cpu) { case CPU_PA_RISC1_0: puts ("hppa1.0"); break; case CPU_PA_RISC1_1: puts ("hppa1.1"); break; case CPU_PA_RISC2_0: #if defined(_SC_KERNEL_BITS) switch (bits) { case 64: puts ("hppa2.0w"); break; case 32: puts ("hppa2.0n"); break; default: puts ("hppa2.0"); break; } break; #else /* !defined(_SC_KERNEL_BITS) */ puts ("hppa2.0"); break; #endif default: puts ("hppa1.0"); break; } exit (0); } EOF (CCOPTS= $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null) && HP_ARCH=`$dummy` test -z "$HP_ARCH" && HP_ARCH=hppa fi ;; esac if [ ${HP_ARCH} = "hppa2.0w" ] then eval $set_cc_for_build # hppa2.0w-hp-hpux* has a 64-bit kernel and a compiler generating # 32-bit code. hppa64-hp-hpux* has the same kernel and a compiler # generating 64-bit code. GNU and HP use different nomenclature: # # $ CC_FOR_BUILD=cc ./config.guess # => hppa2.0w-hp-hpux11.23 # $ CC_FOR_BUILD="cc +DA2.0w" ./config.guess # => hppa64-hp-hpux11.23 if echo __LP64__ | (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | grep __LP64__ >/dev/null then HP_ARCH="hppa2.0w" else HP_ARCH="hppa64" fi fi echo ${HP_ARCH}-hp-hpux${HPUX_REV} exit ;; ia64:HP-UX:*:*) HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` echo ia64-hp-hpux${HPUX_REV} exit ;; 3050*:HI-UX:*:*) eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #include int main () { long cpu = sysconf (_SC_CPU_VERSION); /* The order matters, because CPU_IS_HP_MC68K erroneously returns true for CPU_PA_RISC1_0. CPU_IS_PA_RISC returns correct results, however. */ if (CPU_IS_PA_RISC (cpu)) { switch (cpu) { case CPU_PA_RISC1_0: puts ("hppa1.0-hitachi-hiuxwe2"); break; case CPU_PA_RISC1_1: puts ("hppa1.1-hitachi-hiuxwe2"); break; case CPU_PA_RISC2_0: puts ("hppa2.0-hitachi-hiuxwe2"); break; default: puts ("hppa-hitachi-hiuxwe2"); break; } } else if (CPU_IS_HP_MC68K (cpu)) puts ("m68k-hitachi-hiuxwe2"); else puts ("unknown-hitachi-hiuxwe2"); exit (0); } EOF $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` && { echo "$SYSTEM_NAME"; exit; } echo unknown-hitachi-hiuxwe2 exit ;; 9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* ) echo hppa1.1-hp-bsd exit ;; 9000/8??:4.3bsd:*:*) echo hppa1.0-hp-bsd exit ;; *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*) echo hppa1.0-hp-mpeix exit ;; hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* ) echo hppa1.1-hp-osf exit ;; hp8??:OSF1:*:*) echo hppa1.0-hp-osf exit ;; i*86:OSF1:*:*) if [ -x /usr/sbin/sysversion ] ; then echo ${UNAME_MACHINE}-unknown-osf1mk else echo ${UNAME_MACHINE}-unknown-osf1 fi exit ;; parisc*:Lites*:*:*) echo hppa1.1-hp-lites exit ;; C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*) echo c1-convex-bsd exit ;; C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*) if getsysinfo -f scalar_acc then echo c32-convex-bsd else echo c2-convex-bsd fi exit ;; C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*) echo c34-convex-bsd exit ;; C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*) echo c38-convex-bsd exit ;; C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*) echo c4-convex-bsd exit ;; CRAY*Y-MP:*:*:*) echo ymp-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit ;; CRAY*[A-Z]90:*:*:*) echo ${UNAME_MACHINE}-cray-unicos${UNAME_RELEASE} \ | sed -e 's/CRAY.*\([A-Z]90\)/\1/' \ -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ \ -e 's/\.[^.]*$/.X/' exit ;; CRAY*TS:*:*:*) echo t90-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit ;; CRAY*T3E:*:*:*) echo alphaev5-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit ;; CRAY*SV1:*:*:*) echo sv1-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit ;; *:UNICOS/mp:*:*) echo craynv-cray-unicosmp${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit ;; F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*) FUJITSU_PROC=`uname -m | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'` echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" exit ;; 5000:UNIX_System_V:4.*:*) FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` FUJITSU_REL=`echo ${UNAME_RELEASE} | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/ /_/'` echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" exit ;; i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*) echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE} exit ;; sparc*:BSD/OS:*:*) echo sparc-unknown-bsdi${UNAME_RELEASE} exit ;; *:BSD/OS:*:*) echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE} exit ;; *:FreeBSD:*:*) case ${UNAME_MACHINE} in pc98) echo i386-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; amd64) echo x86_64-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; *) echo ${UNAME_MACHINE}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; esac exit ;; i*:CYGWIN*:*) echo ${UNAME_MACHINE}-pc-cygwin exit ;; *:MINGW*:*) echo ${UNAME_MACHINE}-pc-mingw32 exit ;; i*:windows32*:*) # uname -m includes "-pc" on this system. echo ${UNAME_MACHINE}-mingw32 exit ;; i*:PW*:*) echo ${UNAME_MACHINE}-pc-pw32 exit ;; *:Interix*:[3456]*) case ${UNAME_MACHINE} in x86) echo i586-pc-interix${UNAME_RELEASE} exit ;; EM64T | authenticamd) echo x86_64-unknown-interix${UNAME_RELEASE} exit ;; IA64) echo ia64-unknown-interix${UNAME_RELEASE} exit ;; esac ;; [345]86:Windows_95:* | [345]86:Windows_98:* | [345]86:Windows_NT:*) echo i${UNAME_MACHINE}-pc-mks exit ;; i*:Windows_NT*:* | Pentium*:Windows_NT*:*) # How do we know it's Interix rather than the generic POSIX subsystem? # It also conflicts with pre-2.0 versions of AT&T UWIN. Should we # UNAME_MACHINE based on the output of uname instead of i386? echo i586-pc-interix exit ;; i*:UWIN*:*) echo ${UNAME_MACHINE}-pc-uwin exit ;; amd64:CYGWIN*:*:* | x86_64:CYGWIN*:*:*) echo x86_64-unknown-cygwin exit ;; p*:CYGWIN*:*) echo powerpcle-unknown-cygwin exit ;; prep*:SunOS:5.*:*) echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; *:GNU:*:*) # the GNU system echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-gnu`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'` exit ;; *:GNU/*:*:*) # other systems with GNU libc and userland echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr '[A-Z]' '[a-z]'``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-gnu exit ;; i*86:Minix:*:*) echo ${UNAME_MACHINE}-pc-minix exit ;; arm*:Linux:*:*) eval $set_cc_for_build if echo __ARM_EABI__ | $CC_FOR_BUILD -E - 2>/dev/null \ | grep -q __ARM_EABI__ then echo ${UNAME_MACHINE}-unknown-linux-gnu else echo ${UNAME_MACHINE}-unknown-linux-gnueabi fi exit ;; avr32*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; cris:Linux:*:*) echo cris-axis-linux-gnu exit ;; crisv32:Linux:*:*) echo crisv32-axis-linux-gnu exit ;; frv:Linux:*:*) echo frv-unknown-linux-gnu exit ;; ia64:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; m32r*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; m68*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; mips:Linux:*:*) eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #undef CPU #undef mips #undef mipsel #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL) CPU=mipsel #else #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB) CPU=mips #else CPU= #endif #endif EOF eval "`$CC_FOR_BUILD -E $dummy.c 2>/dev/null | sed -n ' /^CPU/{ s: ::g p }'`" test x"${CPU}" != x && { echo "${CPU}-unknown-linux-gnu"; exit; } ;; mips64:Linux:*:*) eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #undef CPU #undef mips64 #undef mips64el #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL) CPU=mips64el #else #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB) CPU=mips64 #else CPU= #endif #endif EOF eval "`$CC_FOR_BUILD -E $dummy.c 2>/dev/null | sed -n ' /^CPU/{ s: ::g p }'`" test x"${CPU}" != x && { echo "${CPU}-unknown-linux-gnu"; exit; } ;; or32:Linux:*:*) echo or32-unknown-linux-gnu exit ;; ppc:Linux:*:*) echo powerpc-unknown-linux-gnu exit ;; ppc64:Linux:*:*) echo powerpc64-unknown-linux-gnu exit ;; alpha:Linux:*:*) case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in EV5) UNAME_MACHINE=alphaev5 ;; EV56) UNAME_MACHINE=alphaev56 ;; PCA56) UNAME_MACHINE=alphapca56 ;; PCA57) UNAME_MACHINE=alphapca56 ;; EV6) UNAME_MACHINE=alphaev6 ;; EV67) UNAME_MACHINE=alphaev67 ;; EV68*) UNAME_MACHINE=alphaev68 ;; esac objdump --private-headers /bin/sh | grep ld.so.1 >/dev/null if test "$?" = 0 ; then LIBC="libc1" ; else LIBC="" ; fi echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC} exit ;; parisc:Linux:*:* | hppa:Linux:*:*) # Look for CPU level case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in PA7*) echo hppa1.1-unknown-linux-gnu ;; PA8*) echo hppa2.0-unknown-linux-gnu ;; *) echo hppa-unknown-linux-gnu ;; esac exit ;; parisc64:Linux:*:* | hppa64:Linux:*:*) echo hppa64-unknown-linux-gnu exit ;; s390:Linux:*:* | s390x:Linux:*:*) echo ${UNAME_MACHINE}-ibm-linux exit ;; sh64*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; sh*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; sparc:Linux:*:* | sparc64:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; vax:Linux:*:*) echo ${UNAME_MACHINE}-dec-linux-gnu exit ;; x86_64:Linux:*:*) echo x86_64-unknown-linux-gnu exit ;; xtensa*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; i*86:Linux:*:*) # The BFD linker knows what the default object file format is, so # first see if it will tell us. cd to the root directory to prevent # problems with other programs or directories called `ld' in the path. # Set LC_ALL=C to ensure ld outputs messages in English. ld_supported_targets=`cd /; LC_ALL=C ld --help 2>&1 \ | sed -ne '/supported targets:/!d s/[ ][ ]*/ /g s/.*supported targets: *// s/ .*// p'` case "$ld_supported_targets" in elf32-i386) TENTATIVE="${UNAME_MACHINE}-pc-linux-gnu" ;; a.out-i386-linux) echo "${UNAME_MACHINE}-pc-linux-gnuaout" exit ;; coff-i386) echo "${UNAME_MACHINE}-pc-linux-gnucoff" exit ;; "") # Either a pre-BFD a.out linker (linux-gnuoldld) or # one that does not give us useful --help. echo "${UNAME_MACHINE}-pc-linux-gnuoldld" exit ;; esac # Determine whether the default compiler is a.out or elf eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #include #ifdef __ELF__ # ifdef __GLIBC__ # if __GLIBC__ >= 2 LIBC=gnu # else LIBC=gnulibc1 # endif # else LIBC=gnulibc1 # endif #else #if defined(__INTEL_COMPILER) || defined(__PGI) || defined(__SUNPRO_C) || defined(__SUNPRO_CC) LIBC=gnu #else LIBC=gnuaout #endif #endif #ifdef __dietlibc__ LIBC=dietlibc #endif EOF eval "`$CC_FOR_BUILD -E $dummy.c 2>/dev/null | sed -n ' /^LIBC/{ s: ::g p }'`" test x"${LIBC}" != x && { echo "${UNAME_MACHINE}-pc-linux-${LIBC}" exit } test x"${TENTATIVE}" != x && { echo "${TENTATIVE}"; exit; } ;; i*86:DYNIX/ptx:4*:*) # ptx 4.0 does uname -s correctly, with DYNIX/ptx in there. # earlier versions are messed up and put the nodename in both # sysname and nodename. echo i386-sequent-sysv4 exit ;; i*86:UNIX_SV:4.2MP:2.*) # Unixware is an offshoot of SVR4, but it has its own version # number series starting with 2... # I am not positive that other SVR4 systems won't match this, # I just have to hope. -- rms. # Use sysv4.2uw... so that sysv4* matches it. echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION} exit ;; i*86:OS/2:*:*) # If we were able to find `uname', then EMX Unix compatibility # is probably installed. echo ${UNAME_MACHINE}-pc-os2-emx exit ;; i*86:XTS-300:*:STOP) echo ${UNAME_MACHINE}-unknown-stop exit ;; i*86:atheos:*:*) echo ${UNAME_MACHINE}-unknown-atheos exit ;; i*86:syllable:*:*) echo ${UNAME_MACHINE}-pc-syllable exit ;; i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.0*:*) echo i386-unknown-lynxos${UNAME_RELEASE} exit ;; i*86:*DOS:*:*) echo ${UNAME_MACHINE}-pc-msdosdjgpp exit ;; i*86:*:4.*:* | i*86:SYSTEM_V:4.*:*) UNAME_REL=`echo ${UNAME_RELEASE} | sed 's/\/MP$//'` if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then echo ${UNAME_MACHINE}-univel-sysv${UNAME_REL} else echo ${UNAME_MACHINE}-pc-sysv${UNAME_REL} fi exit ;; i*86:*:5:[678]*) # UnixWare 7.x, OpenUNIX and OpenServer 6. case `/bin/uname -X | grep "^Machine"` in *486*) UNAME_MACHINE=i486 ;; *Pentium) UNAME_MACHINE=i586 ;; *Pent*|*Celeron) UNAME_MACHINE=i686 ;; esac echo ${UNAME_MACHINE}-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION} exit ;; i*86:*:3.2:*) if test -f /usr/options/cb.name; then UNAME_REL=`sed -n 's/.*Version //p' /dev/null >/dev/null ; then UNAME_REL=`(/bin/uname -X|grep Release|sed -e 's/.*= //')` (/bin/uname -X|grep i80486 >/dev/null) && UNAME_MACHINE=i486 (/bin/uname -X|grep '^Machine.*Pentium' >/dev/null) \ && UNAME_MACHINE=i586 (/bin/uname -X|grep '^Machine.*Pent *II' >/dev/null) \ && UNAME_MACHINE=i686 (/bin/uname -X|grep '^Machine.*Pentium Pro' >/dev/null) \ && UNAME_MACHINE=i686 echo ${UNAME_MACHINE}-pc-sco$UNAME_REL else echo ${UNAME_MACHINE}-pc-sysv32 fi exit ;; pc:*:*:*) # Left here for compatibility: # uname -m prints for DJGPP always 'pc', but it prints nothing about # the processor, so we play safe by assuming i386. echo i386-pc-msdosdjgpp exit ;; Intel:Mach:3*:*) echo i386-pc-mach3 exit ;; paragon:*:*:*) echo i860-intel-osf1 exit ;; i860:*:4.*:*) # i860-SVR4 if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then echo i860-stardent-sysv${UNAME_RELEASE} # Stardent Vistra i860-SVR4 else # Add other i860-SVR4 vendors below as they are discovered. echo i860-unknown-sysv${UNAME_RELEASE} # Unknown i860-SVR4 fi exit ;; mini*:CTIX:SYS*5:*) # "miniframe" echo m68010-convergent-sysv exit ;; mc68k:UNIX:SYSTEM5:3.51m) echo m68k-convergent-sysv exit ;; M680?0:D-NIX:5.3:*) echo m68k-diab-dnix exit ;; M68*:*:R3V[5678]*:*) test -r /sysV68 && { echo 'm68k-motorola-sysv'; exit; } ;; 3[345]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0 | SDS2:*:4.0:3.0 | SHG2:*:4.0:3.0 | S7501*:*:4.0:3.0) OS_REL='' test -r /etc/.relid \ && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ && { echo i486-ncr-sysv4.3${OS_REL}; exit; } /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;; 3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*) /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ && { echo i486-ncr-sysv4; exit; } ;; m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*) echo m68k-unknown-lynxos${UNAME_RELEASE} exit ;; mc68030:UNIX_System_V:4.*:*) echo m68k-atari-sysv4 exit ;; TSUNAMI:LynxOS:2.*:*) echo sparc-unknown-lynxos${UNAME_RELEASE} exit ;; rs6000:LynxOS:2.*:*) echo rs6000-unknown-lynxos${UNAME_RELEASE} exit ;; PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.0*:*) echo powerpc-unknown-lynxos${UNAME_RELEASE} exit ;; SM[BE]S:UNIX_SV:*:*) echo mips-dde-sysv${UNAME_RELEASE} exit ;; RM*:ReliantUNIX-*:*:*) echo mips-sni-sysv4 exit ;; RM*:SINIX-*:*:*) echo mips-sni-sysv4 exit ;; *:SINIX-*:*:*) if uname -p 2>/dev/null >/dev/null ; then UNAME_MACHINE=`(uname -p) 2>/dev/null` echo ${UNAME_MACHINE}-sni-sysv4 else echo ns32k-sni-sysv fi exit ;; PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort # says echo i586-unisys-sysv4 exit ;; *:UNIX_System_V:4*:FTX*) # From Gerald Hewes . # How about differentiating between stratus architectures? -djm echo hppa1.1-stratus-sysv4 exit ;; *:*:*:FTX*) # From seanf@swdc.stratus.com. echo i860-stratus-sysv4 exit ;; i*86:VOS:*:*) # From Paul.Green@stratus.com. echo ${UNAME_MACHINE}-stratus-vos exit ;; *:VOS:*:*) # From Paul.Green@stratus.com. echo hppa1.1-stratus-vos exit ;; mc68*:A/UX:*:*) echo m68k-apple-aux${UNAME_RELEASE} exit ;; news*:NEWS-OS:6*:*) echo mips-sony-newsos6 exit ;; R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*) if [ -d /usr/nec ]; then echo mips-nec-sysv${UNAME_RELEASE} else echo mips-unknown-sysv${UNAME_RELEASE} fi exit ;; BeBox:BeOS:*:*) # BeOS running on hardware made by Be, PPC only. echo powerpc-be-beos exit ;; BeMac:BeOS:*:*) # BeOS running on Mac or Mac clone, PPC only. echo powerpc-apple-beos exit ;; BePC:BeOS:*:*) # BeOS running on Intel PC compatible. echo i586-pc-beos exit ;; SX-4:SUPER-UX:*:*) echo sx4-nec-superux${UNAME_RELEASE} exit ;; SX-5:SUPER-UX:*:*) echo sx5-nec-superux${UNAME_RELEASE} exit ;; SX-6:SUPER-UX:*:*) echo sx6-nec-superux${UNAME_RELEASE} exit ;; SX-7:SUPER-UX:*:*) echo sx7-nec-superux${UNAME_RELEASE} exit ;; SX-8:SUPER-UX:*:*) echo sx8-nec-superux${UNAME_RELEASE} exit ;; SX-8R:SUPER-UX:*:*) echo sx8r-nec-superux${UNAME_RELEASE} exit ;; Power*:Rhapsody:*:*) echo powerpc-apple-rhapsody${UNAME_RELEASE} exit ;; *:Rhapsody:*:*) echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE} exit ;; *:Darwin:*:*) UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown case $UNAME_PROCESSOR in unknown) UNAME_PROCESSOR=powerpc ;; esac echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE} exit ;; *:procnto*:*:* | *:QNX:[0123456789]*:*) UNAME_PROCESSOR=`uname -p` if test "$UNAME_PROCESSOR" = "x86"; then UNAME_PROCESSOR=i386 UNAME_MACHINE=pc fi echo ${UNAME_PROCESSOR}-${UNAME_MACHINE}-nto-qnx${UNAME_RELEASE} exit ;; *:QNX:*:4*) echo i386-pc-qnx exit ;; NSE-?:NONSTOP_KERNEL:*:*) echo nse-tandem-nsk${UNAME_RELEASE} exit ;; NSR-?:NONSTOP_KERNEL:*:*) echo nsr-tandem-nsk${UNAME_RELEASE} exit ;; *:NonStop-UX:*:*) echo mips-compaq-nonstopux exit ;; BS2000:POSIX*:*:*) echo bs2000-siemens-sysv exit ;; DS/*:UNIX_System_V:*:*) echo ${UNAME_MACHINE}-${UNAME_SYSTEM}-${UNAME_RELEASE} exit ;; *:Plan9:*:*) # "uname -m" is not consistent, so use $cputype instead. 386 # is converted to i386 for consistency with other x86 # operating systems. if test "$cputype" = "386"; then UNAME_MACHINE=i386 else UNAME_MACHINE="$cputype" fi echo ${UNAME_MACHINE}-unknown-plan9 exit ;; *:TOPS-10:*:*) echo pdp10-unknown-tops10 exit ;; *:TENEX:*:*) echo pdp10-unknown-tenex exit ;; KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*) echo pdp10-dec-tops20 exit ;; XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*) echo pdp10-xkl-tops20 exit ;; *:TOPS-20:*:*) echo pdp10-unknown-tops20 exit ;; *:ITS:*:*) echo pdp10-unknown-its exit ;; SEI:*:*:SEIUX) echo mips-sei-seiux${UNAME_RELEASE} exit ;; *:DragonFly:*:*) echo ${UNAME_MACHINE}-unknown-dragonfly`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` exit ;; *:*VMS:*:*) UNAME_MACHINE=`(uname -p) 2>/dev/null` case "${UNAME_MACHINE}" in A*) echo alpha-dec-vms ; exit ;; I*) echo ia64-dec-vms ; exit ;; V*) echo vax-dec-vms ; exit ;; esac ;; *:XENIX:*:SysV) echo i386-pc-xenix exit ;; i*86:skyos:*:*) echo ${UNAME_MACHINE}-pc-skyos`echo ${UNAME_RELEASE}` | sed -e 's/ .*$//' exit ;; i*86:rdos:*:*) echo ${UNAME_MACHINE}-pc-rdos exit ;; esac #echo '(No uname command or uname output not recognized.)' 1>&2 #echo "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" 1>&2 eval $set_cc_for_build cat >$dummy.c < # include #endif main () { #if defined (sony) #if defined (MIPSEB) /* BFD wants "bsd" instead of "newsos". Perhaps BFD should be changed, I don't know.... */ printf ("mips-sony-bsd\n"); exit (0); #else #include printf ("m68k-sony-newsos%s\n", #ifdef NEWSOS4 "4" #else "" #endif ); exit (0); #endif #endif #if defined (__arm) && defined (__acorn) && defined (__unix) printf ("arm-acorn-riscix\n"); exit (0); #endif #if defined (hp300) && !defined (hpux) printf ("m68k-hp-bsd\n"); exit (0); #endif #if defined (NeXT) #if !defined (__ARCHITECTURE__) #define __ARCHITECTURE__ "m68k" #endif int version; version=`(hostinfo | sed -n 's/.*NeXT Mach \([0-9]*\).*/\1/p') 2>/dev/null`; if (version < 4) printf ("%s-next-nextstep%d\n", __ARCHITECTURE__, version); else printf ("%s-next-openstep%d\n", __ARCHITECTURE__, version); exit (0); #endif #if defined (MULTIMAX) || defined (n16) #if defined (UMAXV) printf ("ns32k-encore-sysv\n"); exit (0); #else #if defined (CMU) printf ("ns32k-encore-mach\n"); exit (0); #else printf ("ns32k-encore-bsd\n"); exit (0); #endif #endif #endif #if defined (__386BSD__) printf ("i386-pc-bsd\n"); exit (0); #endif #if defined (sequent) #if defined (i386) printf ("i386-sequent-dynix\n"); exit (0); #endif #if defined (ns32000) printf ("ns32k-sequent-dynix\n"); exit (0); #endif #endif #if defined (_SEQUENT_) struct utsname un; uname(&un); if (strncmp(un.version, "V2", 2) == 0) { printf ("i386-sequent-ptx2\n"); exit (0); } if (strncmp(un.version, "V1", 2) == 0) { /* XXX is V1 correct? */ printf ("i386-sequent-ptx1\n"); exit (0); } printf ("i386-sequent-ptx\n"); exit (0); #endif #if defined (vax) # if !defined (ultrix) # include # if defined (BSD) # if BSD == 43 printf ("vax-dec-bsd4.3\n"); exit (0); # else # if BSD == 199006 printf ("vax-dec-bsd4.3reno\n"); exit (0); # else printf ("vax-dec-bsd\n"); exit (0); # endif # endif # else printf ("vax-dec-bsd\n"); exit (0); # endif # else printf ("vax-dec-ultrix\n"); exit (0); # endif #endif #if defined (alliant) && defined (i860) printf ("i860-alliant-bsd\n"); exit (0); #endif exit (1); } EOF $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null && SYSTEM_NAME=`$dummy` && { echo "$SYSTEM_NAME"; exit; } # Apollos put the system type in the environment. test -d /usr/apollo && { echo ${ISP}-apollo-${SYSTYPE}; exit; } # Convex versions that predate uname can use getsysinfo(1) if [ -x /usr/convex/getsysinfo ] then case `getsysinfo -f cpu_type` in c1*) echo c1-convex-bsd exit ;; c2*) if getsysinfo -f scalar_acc then echo c32-convex-bsd else echo c2-convex-bsd fi exit ;; c34*) echo c34-convex-bsd exit ;; c38*) echo c38-convex-bsd exit ;; c4*) echo c4-convex-bsd exit ;; esac fi cat >&2 < in order to provide the needed information to handle your system. config.guess timestamp = $timestamp uname -m = `(uname -m) 2>/dev/null || echo unknown` uname -r = `(uname -r) 2>/dev/null || echo unknown` uname -s = `(uname -s) 2>/dev/null || echo unknown` uname -v = `(uname -v) 2>/dev/null || echo unknown` /usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null` /bin/uname -X = `(/bin/uname -X) 2>/dev/null` hostinfo = `(hostinfo) 2>/dev/null` /bin/universe = `(/bin/universe) 2>/dev/null` /usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null` /bin/arch = `(/bin/arch) 2>/dev/null` /usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null` /usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null` UNAME_MACHINE = ${UNAME_MACHINE} UNAME_RELEASE = ${UNAME_RELEASE} UNAME_SYSTEM = ${UNAME_SYSTEM} UNAME_VERSION = ${UNAME_VERSION} EOF exit 1 # Local variables: # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "timestamp='" # time-stamp-format: "%:y-%02m-%02d" # time-stamp-end: "'" # End: suite3270-4.1/Common/config.sub000077500000000000000000001011531413735575200162530ustar00rootroot00000000000000#! /bin/sh # Configuration validation subroutine script. # Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, # 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008 # Free Software Foundation, Inc. timestamp='2008-01-16' # This file is (in principle) common to ALL GNU software. # The presence of a machine in this file suggests that SOME GNU software # can handle that machine. It does not imply ALL GNU software can. # # This file 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 2 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, write to the Free Software # Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA # 02110-1301, USA. # # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. # Please send patches to . Submit a context # diff and a properly formatted ChangeLog entry. # # Configuration subroutine to validate and canonicalize a configuration type. # Supply the specified configuration type as an argument. # If it is invalid, we print an error message on stderr and exit with code 1. # Otherwise, we print the canonical config type on stdout and succeed. # This file is supposed to be the same for all GNU packages # and recognize all the CPU types, system types and aliases # that are meaningful with *any* GNU software. # Each package is responsible for reporting which valid configurations # it does not support. The user should be able to distinguish # a failure to support a valid configuration from a meaningless # configuration. # The goal of this file is to map all the various variations of a given # machine specification into a single specification in the form: # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM # or in some cases, the newer four-part form: # CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM # It is wrong to echo any other type of specification. me=`echo "$0" | sed -e 's,.*/,,'` usage="\ Usage: $0 [OPTION] CPU-MFR-OPSYS $0 [OPTION] ALIAS Canonicalize a configuration name. Operation modes: -h, --help print this help, then exit -t, --time-stamp print date of last modification, then exit -v, --version print version number, then exit Report bugs and patches to ." version="\ GNU config.sub ($timestamp) Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." help=" Try \`$me --help' for more information." # Parse command line while test $# -gt 0 ; do case $1 in --time-stamp | --time* | -t ) echo "$timestamp" ; exit ;; --version | -v ) echo "$version" ; exit ;; --help | --h* | -h ) echo "$usage"; exit ;; -- ) # Stop option processing shift; break ;; - ) # Use stdin as input. break ;; -* ) echo "$me: invalid option $1$help" exit 1 ;; *local*) # First pass through any local machine types. echo $1 exit ;; * ) break ;; esac done case $# in 0) echo "$me: missing argument$help" >&2 exit 1;; 1) ;; *) echo "$me: too many arguments$help" >&2 exit 1;; esac # Separate what the user gave into CPU-COMPANY and OS or KERNEL-OS (if any). # Here we must recognize all the valid KERNEL-OS combinations. maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'` case $maybe_os in nto-qnx* | linux-gnu* | linux-dietlibc | linux-newlib* | linux-uclibc* | \ uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* | \ storm-chaos* | os2-emx* | rtmk-nova*) os=-$maybe_os basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'` ;; *) basic_machine=`echo $1 | sed 's/-[^-]*$//'` if [ $basic_machine != $1 ] then os=`echo $1 | sed 's/.*-/-/'` else os=; fi ;; esac ### Let's recognize common machines as not being operating systems so ### that things like config.sub decstation-3100 work. We also ### recognize some manufacturers as not being operating systems, so we ### can provide default operating systems below. case $os in -sun*os*) # Prevent following clause from handling this invalid input. ;; -dec* | -mips* | -sequent* | -encore* | -pc532* | -sgi* | -sony* | \ -att* | -7300* | -3300* | -delta* | -motorola* | -sun[234]* | \ -unicom* | -ibm* | -next | -hp | -isi* | -apollo | -altos* | \ -convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\ -c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \ -harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \ -apple | -axis | -knuth | -cray) os= basic_machine=$1 ;; -sim | -cisco | -oki | -wec | -winbond) os= basic_machine=$1 ;; -scout) ;; -wrs) os=-vxworks basic_machine=$1 ;; -chorusos*) os=-chorusos basic_machine=$1 ;; -chorusrdb) os=-chorusrdb basic_machine=$1 ;; -hiux*) os=-hiuxwe2 ;; -sco6) os=-sco5v6 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco5) os=-sco3.2v5 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco4) os=-sco3.2v4 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco3.2.[4-9]*) os=`echo $os | sed -e 's/sco3.2./sco3.2v/'` basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco3.2v[4-9]*) # Don't forget version if it is 3.2v4 or newer. basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco5v6*) # Don't forget version if it is 3.2v4 or newer. basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco*) os=-sco3.2v2 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -udk*) basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -isc) os=-isc2.2 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -clix*) basic_machine=clipper-intergraph ;; -isc*) basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -lynx*) os=-lynxos ;; -ptx*) basic_machine=`echo $1 | sed -e 's/86-.*/86-sequent/'` ;; -windowsnt*) os=`echo $os | sed -e 's/windowsnt/winnt/'` ;; -psos*) os=-psos ;; -mint | -mint[0-9]*) basic_machine=m68k-atari os=-mint ;; esac # Decode aliases for certain CPU-COMPANY combinations. case $basic_machine in # Recognize the basic CPU types without company name. # Some are omitted here because they have special meanings below. 1750a | 580 \ | a29k \ | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \ | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \ | am33_2.0 \ | arc | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr | avr32 \ | bfin \ | c4x | clipper \ | d10v | d30v | dlx | dsp16xx \ | fido | fr30 | frv \ | h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \ | i370 | i860 | i960 | ia64 \ | ip2k | iq2000 \ | m32c | m32r | m32rle | m68000 | m68k | m88k \ | maxq | mb | microblaze | mcore | mep \ | mips | mipsbe | mipseb | mipsel | mipsle \ | mips16 \ | mips64 | mips64el \ | mips64vr | mips64vrel \ | mips64orion | mips64orionel \ | mips64vr4100 | mips64vr4100el \ | mips64vr4300 | mips64vr4300el \ | mips64vr5000 | mips64vr5000el \ | mips64vr5900 | mips64vr5900el \ | mipsisa32 | mipsisa32el \ | mipsisa32r2 | mipsisa32r2el \ | mipsisa64 | mipsisa64el \ | mipsisa64r2 | mipsisa64r2el \ | mipsisa64sb1 | mipsisa64sb1el \ | mipsisa64sr71k | mipsisa64sr71kel \ | mipstx39 | mipstx39el \ | mn10200 | mn10300 \ | mt \ | msp430 \ | nios | nios2 \ | ns16k | ns32k \ | or32 \ | pdp10 | pdp11 | pj | pjl \ | powerpc | powerpc64 | powerpc64le | powerpcle | ppcbe \ | pyramid \ | score \ | sh | sh[1234] | sh[24]a | sh[23]e | sh[34]eb | sheb | shbe | shle | sh[1234]le | sh3ele \ | sh64 | sh64le \ | sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet | sparclite \ | sparcv8 | sparcv9 | sparcv9b | sparcv9v \ | spu | strongarm \ | tahoe | thumb | tic4x | tic80 | tron \ | v850 | v850e \ | we32k \ | x86 | xc16x | xscale | xscalee[bl] | xstormy16 | xtensa \ | z8k) basic_machine=$basic_machine-unknown ;; m6811 | m68hc11 | m6812 | m68hc12) # Motorola 68HC11/12. basic_machine=$basic_machine-unknown os=-none ;; m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65 | z8k) ;; ms1) basic_machine=mt-unknown ;; # We use `pc' rather than `unknown' # because (1) that's what they normally are, and # (2) the word "unknown" tends to confuse beginning users. i*86 | x86_64) basic_machine=$basic_machine-pc ;; # Object if more than one company name word. *-*-*) echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 exit 1 ;; # Recognize the basic CPU types with company name. 580-* \ | a29k-* \ | alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \ | alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \ | alphapca5[67]-* | alpha64pca5[67]-* | arc-* \ | arm-* | armbe-* | armle-* | armeb-* | armv*-* \ | avr-* | avr32-* \ | bfin-* | bs2000-* \ | c[123]* | c30-* | [cjt]90-* | c4x-* | c54x-* | c55x-* | c6x-* \ | clipper-* | craynv-* | cydra-* \ | d10v-* | d30v-* | dlx-* \ | elxsi-* \ | f30[01]-* | f700-* | fido-* | fr30-* | frv-* | fx80-* \ | h8300-* | h8500-* \ | hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \ | i*86-* | i860-* | i960-* | ia64-* \ | ip2k-* | iq2000-* \ | m32c-* | m32r-* | m32rle-* \ | m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \ | m88110-* | m88k-* | maxq-* | mcore-* \ | mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \ | mips16-* \ | mips64-* | mips64el-* \ | mips64vr-* | mips64vrel-* \ | mips64orion-* | mips64orionel-* \ | mips64vr4100-* | mips64vr4100el-* \ | mips64vr4300-* | mips64vr4300el-* \ | mips64vr5000-* | mips64vr5000el-* \ | mips64vr5900-* | mips64vr5900el-* \ | mipsisa32-* | mipsisa32el-* \ | mipsisa32r2-* | mipsisa32r2el-* \ | mipsisa64-* | mipsisa64el-* \ | mipsisa64r2-* | mipsisa64r2el-* \ | mipsisa64sb1-* | mipsisa64sb1el-* \ | mipsisa64sr71k-* | mipsisa64sr71kel-* \ | mipstx39-* | mipstx39el-* \ | mmix-* \ | mt-* \ | msp430-* \ | nios-* | nios2-* \ | none-* | np1-* | ns16k-* | ns32k-* \ | orion-* \ | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \ | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* | ppcbe-* \ | pyramid-* \ | romp-* | rs6000-* \ | sh-* | sh[1234]-* | sh[24]a-* | sh[23]e-* | sh[34]eb-* | sheb-* | shbe-* \ | shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \ | sparc-* | sparc64-* | sparc64b-* | sparc64v-* | sparc86x-* | sparclet-* \ | sparclite-* \ | sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | strongarm-* | sv1-* | sx?-* \ | tahoe-* | thumb-* \ | tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \ | tron-* \ | v850-* | v850e-* | vax-* \ | we32k-* \ | x86-* | x86_64-* | xc16x-* | xps100-* | xscale-* | xscalee[bl]-* \ | xstormy16-* | xtensa*-* \ | ymp-* \ | z8k-*) ;; # Recognize the basic CPU types without company name, with glob match. xtensa*) basic_machine=$basic_machine-unknown ;; # Recognize the various machine names and aliases which stand # for a CPU type and a company and sometimes even an OS. 386bsd) basic_machine=i386-unknown os=-bsd ;; 3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc) basic_machine=m68000-att ;; 3b*) basic_machine=we32k-att ;; a29khif) basic_machine=a29k-amd os=-udi ;; abacus) basic_machine=abacus-unknown ;; adobe68k) basic_machine=m68010-adobe os=-scout ;; alliant | fx80) basic_machine=fx80-alliant ;; altos | altos3068) basic_machine=m68k-altos ;; am29k) basic_machine=a29k-none os=-bsd ;; amd64) basic_machine=x86_64-pc ;; amd64-*) basic_machine=x86_64-`echo $basic_machine | sed 's/^[^-]*-//'` ;; amdahl) basic_machine=580-amdahl os=-sysv ;; amiga | amiga-*) basic_machine=m68k-unknown ;; amigaos | amigados) basic_machine=m68k-unknown os=-amigaos ;; amigaunix | amix) basic_machine=m68k-unknown os=-sysv4 ;; apollo68) basic_machine=m68k-apollo os=-sysv ;; apollo68bsd) basic_machine=m68k-apollo os=-bsd ;; aux) basic_machine=m68k-apple os=-aux ;; balance) basic_machine=ns32k-sequent os=-dynix ;; blackfin) basic_machine=bfin-unknown os=-linux ;; blackfin-*) basic_machine=bfin-`echo $basic_machine | sed 's/^[^-]*-//'` os=-linux ;; c90) basic_machine=c90-cray os=-unicos ;; convex-c1) basic_machine=c1-convex os=-bsd ;; convex-c2) basic_machine=c2-convex os=-bsd ;; convex-c32) basic_machine=c32-convex os=-bsd ;; convex-c34) basic_machine=c34-convex os=-bsd ;; convex-c38) basic_machine=c38-convex os=-bsd ;; cray | j90) basic_machine=j90-cray os=-unicos ;; craynv) basic_machine=craynv-cray os=-unicosmp ;; cr16) basic_machine=cr16-unknown os=-elf ;; crds | unos) basic_machine=m68k-crds ;; crisv32 | crisv32-* | etraxfs*) basic_machine=crisv32-axis ;; cris | cris-* | etrax*) basic_machine=cris-axis ;; crx) basic_machine=crx-unknown os=-elf ;; da30 | da30-*) basic_machine=m68k-da30 ;; decstation | decstation-3100 | pmax | pmax-* | pmin | dec3100 | decstatn) basic_machine=mips-dec ;; decsystem10* | dec10*) basic_machine=pdp10-dec os=-tops10 ;; decsystem20* | dec20*) basic_machine=pdp10-dec os=-tops20 ;; delta | 3300 | motorola-3300 | motorola-delta \ | 3300-motorola | delta-motorola) basic_machine=m68k-motorola ;; delta88) basic_machine=m88k-motorola os=-sysv3 ;; djgpp) basic_machine=i586-pc os=-msdosdjgpp ;; dpx20 | dpx20-*) basic_machine=rs6000-bull os=-bosx ;; dpx2* | dpx2*-bull) basic_machine=m68k-bull os=-sysv3 ;; ebmon29k) basic_machine=a29k-amd os=-ebmon ;; elxsi) basic_machine=elxsi-elxsi os=-bsd ;; encore | umax | mmax) basic_machine=ns32k-encore ;; es1800 | OSE68k | ose68k | ose | OSE) basic_machine=m68k-ericsson os=-ose ;; fx2800) basic_machine=i860-alliant ;; genix) basic_machine=ns32k-ns ;; gmicro) basic_machine=tron-gmicro os=-sysv ;; go32) basic_machine=i386-pc os=-go32 ;; h3050r* | hiux*) basic_machine=hppa1.1-hitachi os=-hiuxwe2 ;; h8300hms) basic_machine=h8300-hitachi os=-hms ;; h8300xray) basic_machine=h8300-hitachi os=-xray ;; h8500hms) basic_machine=h8500-hitachi os=-hms ;; harris) basic_machine=m88k-harris os=-sysv3 ;; hp300-*) basic_machine=m68k-hp ;; hp300bsd) basic_machine=m68k-hp os=-bsd ;; hp300hpux) basic_machine=m68k-hp os=-hpux ;; hp3k9[0-9][0-9] | hp9[0-9][0-9]) basic_machine=hppa1.0-hp ;; hp9k2[0-9][0-9] | hp9k31[0-9]) basic_machine=m68000-hp ;; hp9k3[2-9][0-9]) basic_machine=m68k-hp ;; hp9k6[0-9][0-9] | hp6[0-9][0-9]) basic_machine=hppa1.0-hp ;; hp9k7[0-79][0-9] | hp7[0-79][0-9]) basic_machine=hppa1.1-hp ;; hp9k78[0-9] | hp78[0-9]) # FIXME: really hppa2.0-hp basic_machine=hppa1.1-hp ;; hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893) # FIXME: really hppa2.0-hp basic_machine=hppa1.1-hp ;; hp9k8[0-9][13679] | hp8[0-9][13679]) basic_machine=hppa1.1-hp ;; hp9k8[0-9][0-9] | hp8[0-9][0-9]) basic_machine=hppa1.0-hp ;; hppa-next) os=-nextstep3 ;; hppaosf) basic_machine=hppa1.1-hp os=-osf ;; hppro) basic_machine=hppa1.1-hp os=-proelf ;; i370-ibm* | ibm*) basic_machine=i370-ibm ;; # I'm not sure what "Sysv32" means. Should this be sysv3.2? i*86v32) basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` os=-sysv32 ;; i*86v4*) basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` os=-sysv4 ;; i*86v) basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` os=-sysv ;; i*86sol2) basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` os=-solaris2 ;; i386mach) basic_machine=i386-mach os=-mach ;; i386-vsta | vsta) basic_machine=i386-unknown os=-vsta ;; iris | iris4d) basic_machine=mips-sgi case $os in -irix*) ;; *) os=-irix4 ;; esac ;; isi68 | isi) basic_machine=m68k-isi os=-sysv ;; m68knommu) basic_machine=m68k-unknown os=-linux ;; m68knommu-*) basic_machine=m68k-`echo $basic_machine | sed 's/^[^-]*-//'` os=-linux ;; m88k-omron*) basic_machine=m88k-omron ;; magnum | m3230) basic_machine=mips-mips os=-sysv ;; merlin) basic_machine=ns32k-utek os=-sysv ;; mingw32) basic_machine=i386-pc os=-mingw32 ;; mingw32ce) basic_machine=arm-unknown os=-mingw32ce ;; miniframe) basic_machine=m68000-convergent ;; *mint | -mint[0-9]* | *MiNT | *MiNT[0-9]*) basic_machine=m68k-atari os=-mint ;; mips3*-*) basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'` ;; mips3*) basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`-unknown ;; monitor) basic_machine=m68k-rom68k os=-coff ;; morphos) basic_machine=powerpc-unknown os=-morphos ;; msdos) basic_machine=i386-pc os=-msdos ;; ms1-*) basic_machine=`echo $basic_machine | sed -e 's/ms1-/mt-/'` ;; mvs) basic_machine=i370-ibm os=-mvs ;; ncr3000) basic_machine=i486-ncr os=-sysv4 ;; netbsd386) basic_machine=i386-unknown os=-netbsd ;; netwinder) basic_machine=armv4l-rebel os=-linux ;; news | news700 | news800 | news900) basic_machine=m68k-sony os=-newsos ;; news1000) basic_machine=m68030-sony os=-newsos ;; news-3600 | risc-news) basic_machine=mips-sony os=-newsos ;; necv70) basic_machine=v70-nec os=-sysv ;; next | m*-next ) basic_machine=m68k-next case $os in -nextstep* ) ;; -ns2*) os=-nextstep2 ;; *) os=-nextstep3 ;; esac ;; nh3000) basic_machine=m68k-harris os=-cxux ;; nh[45]000) basic_machine=m88k-harris os=-cxux ;; nindy960) basic_machine=i960-intel os=-nindy ;; mon960) basic_machine=i960-intel os=-mon960 ;; nonstopux) basic_machine=mips-compaq os=-nonstopux ;; np1) basic_machine=np1-gould ;; nsr-tandem) basic_machine=nsr-tandem ;; op50n-* | op60c-*) basic_machine=hppa1.1-oki os=-proelf ;; openrisc | openrisc-*) basic_machine=or32-unknown ;; os400) basic_machine=powerpc-ibm os=-os400 ;; OSE68000 | ose68000) basic_machine=m68000-ericsson os=-ose ;; os68k) basic_machine=m68k-none os=-os68k ;; pa-hitachi) basic_machine=hppa1.1-hitachi os=-hiuxwe2 ;; paragon) basic_machine=i860-intel os=-osf ;; parisc) basic_machine=hppa-unknown os=-linux ;; parisc-*) basic_machine=hppa-`echo $basic_machine | sed 's/^[^-]*-//'` os=-linux ;; pbd) basic_machine=sparc-tti ;; pbb) basic_machine=m68k-tti ;; pc532 | pc532-*) basic_machine=ns32k-pc532 ;; pc98) basic_machine=i386-pc ;; pc98-*) basic_machine=i386-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pentium | p5 | k5 | k6 | nexgen | viac3) basic_machine=i586-pc ;; pentiumpro | p6 | 6x86 | athlon | athlon_*) basic_machine=i686-pc ;; pentiumii | pentium2 | pentiumiii | pentium3) basic_machine=i686-pc ;; pentium4) basic_machine=i786-pc ;; pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*) basic_machine=i586-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pentiumpro-* | p6-* | 6x86-* | athlon-*) basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*) basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pentium4-*) basic_machine=i786-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pn) basic_machine=pn-gould ;; power) basic_machine=power-ibm ;; ppc) basic_machine=powerpc-unknown ;; ppc-*) basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'` ;; ppcle | powerpclittle | ppc-le | powerpc-little) basic_machine=powerpcle-unknown ;; ppcle-* | powerpclittle-*) basic_machine=powerpcle-`echo $basic_machine | sed 's/^[^-]*-//'` ;; ppc64) basic_machine=powerpc64-unknown ;; ppc64-*) basic_machine=powerpc64-`echo $basic_machine | sed 's/^[^-]*-//'` ;; ppc64le | powerpc64little | ppc64-le | powerpc64-little) basic_machine=powerpc64le-unknown ;; ppc64le-* | powerpc64little-*) basic_machine=powerpc64le-`echo $basic_machine | sed 's/^[^-]*-//'` ;; ps2) basic_machine=i386-ibm ;; pw32) basic_machine=i586-unknown os=-pw32 ;; rdos) basic_machine=i386-pc os=-rdos ;; rom68k) basic_machine=m68k-rom68k os=-coff ;; rm[46]00) basic_machine=mips-siemens ;; rtpc | rtpc-*) basic_machine=romp-ibm ;; s390 | s390-*) basic_machine=s390-ibm ;; s390x | s390x-*) basic_machine=s390x-ibm ;; sa29200) basic_machine=a29k-amd os=-udi ;; sb1) basic_machine=mipsisa64sb1-unknown ;; sb1el) basic_machine=mipsisa64sb1el-unknown ;; sde) basic_machine=mipsisa32-sde os=-elf ;; sei) basic_machine=mips-sei os=-seiux ;; sequent) basic_machine=i386-sequent ;; sh) basic_machine=sh-hitachi os=-hms ;; sh5el) basic_machine=sh5le-unknown ;; sh64) basic_machine=sh64-unknown ;; sparclite-wrs | simso-wrs) basic_machine=sparclite-wrs os=-vxworks ;; sps7) basic_machine=m68k-bull os=-sysv2 ;; spur) basic_machine=spur-unknown ;; st2000) basic_machine=m68k-tandem ;; stratus) basic_machine=i860-stratus os=-sysv4 ;; sun2) basic_machine=m68000-sun ;; sun2os3) basic_machine=m68000-sun os=-sunos3 ;; sun2os4) basic_machine=m68000-sun os=-sunos4 ;; sun3os3) basic_machine=m68k-sun os=-sunos3 ;; sun3os4) basic_machine=m68k-sun os=-sunos4 ;; sun4os3) basic_machine=sparc-sun os=-sunos3 ;; sun4os4) basic_machine=sparc-sun os=-sunos4 ;; sun4sol2) basic_machine=sparc-sun os=-solaris2 ;; sun3 | sun3-*) basic_machine=m68k-sun ;; sun4) basic_machine=sparc-sun ;; sun386 | sun386i | roadrunner) basic_machine=i386-sun ;; sv1) basic_machine=sv1-cray os=-unicos ;; symmetry) basic_machine=i386-sequent os=-dynix ;; t3e) basic_machine=alphaev5-cray os=-unicos ;; t90) basic_machine=t90-cray os=-unicos ;; tic54x | c54x*) basic_machine=tic54x-unknown os=-coff ;; tic55x | c55x*) basic_machine=tic55x-unknown os=-coff ;; tic6x | c6x*) basic_machine=tic6x-unknown os=-coff ;; tile*) basic_machine=tile-unknown os=-linux-gnu ;; tx39) basic_machine=mipstx39-unknown ;; tx39el) basic_machine=mipstx39el-unknown ;; toad1) basic_machine=pdp10-xkl os=-tops20 ;; tower | tower-32) basic_machine=m68k-ncr ;; tpf) basic_machine=s390x-ibm os=-tpf ;; udi29k) basic_machine=a29k-amd os=-udi ;; ultra3) basic_machine=a29k-nyu os=-sym1 ;; v810 | necv810) basic_machine=v810-nec os=-none ;; vaxv) basic_machine=vax-dec os=-sysv ;; vms) basic_machine=vax-dec os=-vms ;; vpp*|vx|vx-*) basic_machine=f301-fujitsu ;; vxworks960) basic_machine=i960-wrs os=-vxworks ;; vxworks68) basic_machine=m68k-wrs os=-vxworks ;; vxworks29k) basic_machine=a29k-wrs os=-vxworks ;; w65*) basic_machine=w65-wdc os=-none ;; w89k-*) basic_machine=hppa1.1-winbond os=-proelf ;; xbox) basic_machine=i686-pc os=-mingw32 ;; xps | xps100) basic_machine=xps100-honeywell ;; ymp) basic_machine=ymp-cray os=-unicos ;; z8k-*-coff) basic_machine=z8k-unknown os=-sim ;; none) basic_machine=none-none os=-none ;; # Here we handle the default manufacturer of certain CPU types. It is in # some cases the only manufacturer, in others, it is the most popular. w89k) basic_machine=hppa1.1-winbond ;; op50n) basic_machine=hppa1.1-oki ;; op60c) basic_machine=hppa1.1-oki ;; romp) basic_machine=romp-ibm ;; mmix) basic_machine=mmix-knuth ;; rs6000) basic_machine=rs6000-ibm ;; vax) basic_machine=vax-dec ;; pdp10) # there are many clones, so DEC is not a safe bet basic_machine=pdp10-unknown ;; pdp11) basic_machine=pdp11-dec ;; we32k) basic_machine=we32k-att ;; sh[1234] | sh[24]a | sh[34]eb | sh[1234]le | sh[23]ele) basic_machine=sh-unknown ;; sparc | sparcv8 | sparcv9 | sparcv9b | sparcv9v) basic_machine=sparc-sun ;; cydra) basic_machine=cydra-cydrome ;; orion) basic_machine=orion-highlevel ;; orion105) basic_machine=clipper-highlevel ;; mac | mpw | mac-mpw) basic_machine=m68k-apple ;; pmac | pmac-mpw) basic_machine=powerpc-apple ;; *-unknown) # Make sure to match an already-canonicalized machine name. ;; *) echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 exit 1 ;; esac # Here we canonicalize certain aliases for manufacturers. case $basic_machine in *-digital*) basic_machine=`echo $basic_machine | sed 's/digital.*/dec/'` ;; *-commodore*) basic_machine=`echo $basic_machine | sed 's/commodore.*/cbm/'` ;; *) ;; esac # Decode manufacturer-specific aliases for certain operating systems. if [ x"$os" != x"" ] then case $os in # First match some system type aliases # that might get confused with valid system types. # -solaris* is a basic system type, with this one exception. -solaris1 | -solaris1.*) os=`echo $os | sed -e 's|solaris1|sunos4|'` ;; -solaris) os=-solaris2 ;; -svr4*) os=-sysv4 ;; -unixware*) os=-sysv4.2uw ;; -gnu/linux*) os=`echo $os | sed -e 's|gnu/linux|linux-gnu|'` ;; # First accept the basic system types. # The portable systems comes first. # Each alternative MUST END IN A *, to match a version number. # -sysv* is not here because it comes later, after sysvr4. -gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \ | -*vms* | -sco* | -esix* | -isc* | -aix* | -sunos | -sunos[34]*\ | -hpux* | -unos* | -osf* | -luna* | -dgux* | -solaris* | -sym* \ | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \ | -aos* \ | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \ | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \ | -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* \ | -openbsd* | -solidbsd* \ | -ekkobsd* | -kfreebsd* | -freebsd* | -riscix* | -lynxos* \ | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \ | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \ | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \ | -chorusos* | -chorusrdb* \ | -cygwin* | -pe* | -psos* | -moss* | -proelf* | -rtems* \ | -mingw32* | -linux-gnu* | -linux-newlib* | -linux-uclibc* \ | -uxpv* | -beos* | -mpeix* | -udk* \ | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \ | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \ | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \ | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \ | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \ | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \ | -skyos* | -haiku* | -rdos* | -toppers* | -drops*) # Remember, each alternative MUST END IN *, to match a version number. ;; -qnx*) case $basic_machine in x86-* | i*86-*) ;; *) os=-nto$os ;; esac ;; -nto-qnx*) ;; -nto*) os=`echo $os | sed -e 's|nto|nto-qnx|'` ;; -sim | -es1800* | -hms* | -xray | -os68k* | -none* | -v88r* \ | -windows* | -osx | -abug | -netware* | -os9* | -beos* | -haiku* \ | -macos* | -mpw* | -magic* | -mmixware* | -mon960* | -lnews*) ;; -mac*) os=`echo $os | sed -e 's|mac|macos|'` ;; -linux-dietlibc) os=-linux-dietlibc ;; -linux*) os=`echo $os | sed -e 's|linux|linux-gnu|'` ;; -sunos5*) os=`echo $os | sed -e 's|sunos5|solaris2|'` ;; -sunos6*) os=`echo $os | sed -e 's|sunos6|solaris3|'` ;; -opened*) os=-openedition ;; -os400*) os=-os400 ;; -wince*) os=-wince ;; -osfrose*) os=-osfrose ;; -osf*) os=-osf ;; -utek*) os=-bsd ;; -dynix*) os=-bsd ;; -acis*) os=-aos ;; -atheos*) os=-atheos ;; -syllable*) os=-syllable ;; -386bsd) os=-bsd ;; -ctix* | -uts*) os=-sysv ;; -nova*) os=-rtmk-nova ;; -ns2 ) os=-nextstep2 ;; -nsk*) os=-nsk ;; # Preserve the version number of sinix5. -sinix5.*) os=`echo $os | sed -e 's|sinix|sysv|'` ;; -sinix*) os=-sysv4 ;; -tpf*) os=-tpf ;; -triton*) os=-sysv3 ;; -oss*) os=-sysv3 ;; -svr4) os=-sysv4 ;; -svr3) os=-sysv3 ;; -sysvr4) os=-sysv4 ;; # This must come after -sysvr4. -sysv*) ;; -ose*) os=-ose ;; -es1800*) os=-ose ;; -xenix) os=-xenix ;; -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) os=-mint ;; -aros*) os=-aros ;; -kaos*) os=-kaos ;; -zvmoe) os=-zvmoe ;; -none) ;; *) # Get rid of the `-' at the beginning of $os. os=`echo $os | sed 's/[^-]*-//'` echo Invalid configuration \`$1\': system \`$os\' not recognized 1>&2 exit 1 ;; esac else # Here we handle the default operating systems that come with various machines. # The value should be what the vendor currently ships out the door with their # machine or put another way, the most popular os provided with the machine. # Note that if you're going to try to match "-MANUFACTURER" here (say, # "-sun"), then you have to tell the case statement up towards the top # that MANUFACTURER isn't an operating system. Otherwise, code above # will signal an error saying that MANUFACTURER isn't an operating # system, and we'll never get to this point. case $basic_machine in score-*) os=-elf ;; spu-*) os=-elf ;; *-acorn) os=-riscix1.2 ;; arm*-rebel) os=-linux ;; arm*-semi) os=-aout ;; c4x-* | tic4x-*) os=-coff ;; # This must come before the *-dec entry. pdp10-*) os=-tops20 ;; pdp11-*) os=-none ;; *-dec | vax-*) os=-ultrix4.2 ;; m68*-apollo) os=-domain ;; i386-sun) os=-sunos4.0.2 ;; m68000-sun) os=-sunos3 # This also exists in the configure program, but was not the # default. # os=-sunos4 ;; m68*-cisco) os=-aout ;; mep-*) os=-elf ;; mips*-cisco) os=-elf ;; mips*-*) os=-elf ;; or32-*) os=-coff ;; *-tti) # must be before sparc entry or we get the wrong os. os=-sysv3 ;; sparc-* | *-sun) os=-sunos4.1.1 ;; *-be) os=-beos ;; *-haiku) os=-haiku ;; *-ibm) os=-aix ;; *-knuth) os=-mmixware ;; *-wec) os=-proelf ;; *-winbond) os=-proelf ;; *-oki) os=-proelf ;; *-hp) os=-hpux ;; *-hitachi) os=-hiux ;; i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent) os=-sysv ;; *-cbm) os=-amigaos ;; *-dg) os=-dgux ;; *-dolphin) os=-sysv3 ;; m68k-ccur) os=-rtu ;; m88k-omron*) os=-luna ;; *-next ) os=-nextstep ;; *-sequent) os=-ptx ;; *-crds) os=-unos ;; *-ns) os=-genix ;; i370-*) os=-mvs ;; *-next) os=-nextstep3 ;; *-gould) os=-sysv ;; *-highlevel) os=-bsd ;; *-encore) os=-bsd ;; *-sgi) os=-irix ;; *-siemens) os=-sysv4 ;; *-masscomp) os=-rtu ;; f30[01]-fujitsu | f700-fujitsu) os=-uxpv ;; *-rom68k) os=-coff ;; *-*bug) os=-coff ;; *-apple) os=-macos ;; *-atari*) os=-mint ;; *) os=-none ;; esac fi # Here we handle the case where we know the os, and the CPU type, but not the # manufacturer. We pick the logical manufacturer. vendor=unknown case $basic_machine in *-unknown) case $os in -riscix*) vendor=acorn ;; -sunos*) vendor=sun ;; -aix*) vendor=ibm ;; -beos*) vendor=be ;; -hpux*) vendor=hp ;; -mpeix*) vendor=hp ;; -hiux*) vendor=hitachi ;; -unos*) vendor=crds ;; -dgux*) vendor=dg ;; -luna*) vendor=omron ;; -genix*) vendor=ns ;; -mvs* | -opened*) vendor=ibm ;; -os400*) vendor=ibm ;; -ptx*) vendor=sequent ;; -tpf*) vendor=ibm ;; -vxsim* | -vxworks* | -windiss*) vendor=wrs ;; -aux*) vendor=apple ;; -hms*) vendor=hitachi ;; -mpw* | -macos*) vendor=apple ;; -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) vendor=atari ;; -vos*) vendor=stratus ;; esac basic_machine=`echo $basic_machine | sed "s/unknown/$vendor/"` ;; esac echo $basic_machine$os exit # Local variables: # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "timestamp='" # time-stamp-format: "%:y-%02m-%02d" # time-stamp-end: "'" # End: suite3270-4.1/Common/copyright.c000066400000000000000000000074461413735575200164560ustar00rootroot00000000000000/* * Copyright (c) 1993-2018 Paul Mattes. * Copyright (c) 1990, Jeff Sparkes. * Copyright (c) 1989, Georgia Tech Research Corporation (GTRC), Atlanta, GA * 30332. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the names of Paul Mattes, Jeff Sparkes, GTRC nor the names of * their contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES, JEFF SPARKES AND GTRC "AS IS" AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL PAUL MATTES, JEFF SPARKES OR GTRC BE * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. */ /* * copyright.c * A 3270 Terminal Emulator * Copyright display */ #include "globals.h" #include "actions.h" #include "copyright.h" #include "utils.h" /** * Dump copyright information. */ const char * show_copyright(void) { static const char *copyright = NULL; if (copyright != NULL) { return copyright; } copyright = xs_buffer("\ %s\n\ \n\ Copyright (c) 1993-%s, Paul Mattes.\n\ Copyright (c) 1990, Jeff Sparkes.\n\ Copyright (c) 1989, Georgia Tech Research Corporation (GTRC), Atlanta, GA\n\ 30332.\n\ All rights reserved.\n\ \n\ Redistribution and use in source and binary forms, with or without\n\ modification, are permitted provided that the following conditions are met:\n\ * Redistributions of source code must retain the above copyright\n\ notice, this list of conditions and the following disclaimer.\n\ * Redistributions in binary form must reproduce the above copyright\n\ notice, this list of conditions and the following disclaimer in the\n\ documentation and/or other materials provided with the distribution.\n\ * Neither the names of Paul Mattes, Jeff Sparkes, GTRC nor the names of\n\ their contributors may be used to endorse or promote products derived\n\ from this software without specific prior written permission.\n\ \n\ THIS SOFTWARE IS PROVIDED BY PAUL MATTES, JEFF SPARKES AND GTRC \"AS IS\" AND\n\ ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n\ IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\n\ ARE DISCLAIMED. IN NO EVENT SHALL PAUL MATTES, JEFF SPARKES OR GTRC BE\n\ LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR\n\ CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF\n\ SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS\n\ INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN\n\ CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n\ ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n\ POSSIBILITY OF SUCH DAMAGE.", build, cyear); return copyright; } suite3270-4.1/Common/ctlr.c000066400000000000000000002151361413735575200154070ustar00rootroot00000000000000/* * Copyright (c) 1993-2009, 2013-2021 Paul Mattes. * Copyright (c) 1990, Jeff Sparkes. * Copyright (c) 1989, Georgia Tech Research Corporation (GTRC), Atlanta, GA * 30332. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the names of Paul Mattes, Jeff Sparkes, GTRC nor the names of * their contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES, JEFF SPARKES AND GTRC "AS IS" AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL PAUL MATTES, JEFF SPARKES OR GTRC BE * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. */ /* * ctlr.c * This module handles interpretation of the 3270 data stream and * maintenance of the 3270 device state. It was split out from * screen.c, which handles X operations. * */ #include "globals.h" #include #include "3270ds.h" #include "appres.h" #include "ctlr.h" #include "screen.h" #include "resources.h" #include "toggles.h" #include "actions.h" #include "codepage.h" #include "ctlrc.h" #include "unicodec.h" #include "ft.h" #include "ft_cut.h" #include "ft_dft.h" #include "host.h" #include "kybd.h" #include "lazya.h" #include "popups.h" #include "screen.h" #include "scroll.h" #include "see.h" #include "selectc.h" #include "sf.h" #include "tables.h" #include "task.h" #include "telnet_core.h" #include "telnet.h" #include "trace.h" #include "screentrace.h" #include "utils.h" #include "vstatus.h" /* Globals */ int ROWS, COLS; int maxROWS, maxCOLS; int defROWS, defCOLS; int altROWS, altCOLS; int ov_rows, ov_cols; bool ov_auto; int model_num; int cursor_addr, buffer_addr; bool screen_alt = false; /* alternate screen? */ bool is_altbuffer = false; struct ea *ea_buf; /* 3270 device buffer */ /* ea_buf[-1] is the dummy default field attribute */ struct ea *aea_buf; /* alternate 3270 extended attribute buffer */ bool formatted = false; /* set in screen_disp */ bool screen_changed = false; int first_changed = -1; int last_changed = -1; unsigned char reply_mode = SF_SRM_FIELD; int crm_nattr = 0; unsigned char crm_attr[16]; bool dbcs = false; xmode_t mode = { true, true }; /* Statics */ static unsigned char *zero_buf; /* empty buffer, for area clears */ static void set_formatted(void); static void ctlr_blanks(void); static bool trace_primed = false; static unsigned char default_fg; static unsigned char default_bg; static unsigned char default_gr; static unsigned char default_cs; static unsigned char default_ic; static void ctlr_negotiating(bool ignored); static void ctlr_connect(bool ignored); static int sscp_start; static void ctlr_add_ic(int baddr, unsigned char ic); static void ticking_stop(struct timeval *tp); /* * code_table is used to translate buffer addresses and attributes to the 3270 * datastream representation */ static unsigned char code_table[64] = { 0x40, 0xC1, 0xC2, 0xC3, 0xC4, 0xC5, 0xC6, 0xC7, 0xC8, 0xC9, 0x4A, 0x4B, 0x4C, 0x4D, 0x4E, 0x4F, 0x50, 0xD1, 0xD2, 0xD3, 0xD4, 0xD5, 0xD6, 0xD7, 0xD8, 0xD9, 0x5A, 0x5B, 0x5C, 0x5D, 0x5E, 0x5F, 0x60, 0x61, 0xE2, 0xE3, 0xE4, 0xE5, 0xE6, 0xE7, 0xE8, 0xE9, 0x6A, 0x6B, 0x6C, 0x6D, 0x6E, 0x6F, 0xF0, 0xF1, 0xF2, 0xF3, 0xF4, 0xF5, 0xF6, 0xF7, 0xF8, 0xF9, 0x7A, 0x7B, 0x7C, 0x7D, 0x7E, 0x7F, }; #define IsBlank(c) ((c == EBC_null) || (c == EBC_space)) #define ALL_CHANGED { \ screen_changed = true; \ if (IN_NVT) { first_changed = 0; last_changed = ROWS*COLS; } } #define REGION_CHANGED(f, l) { \ screen_changed = true; \ if (IN_NVT) { \ if (first_changed == -1 || f < first_changed) first_changed = f; \ if (last_changed == -1 || l > last_changed) last_changed = l; } } #define ONE_CHANGED(n) REGION_CHANGED(n, n+1) #define DECODE_BADDR(c1, c2) \ ((((c1) & 0xC0) == 0x00) ? \ (((c1) & 0x3F) << 8) | (c2) : \ (((c1) & 0x3F) << 6) | ((c2) & 0x3F)) #define ENCODE_BADDR(ptr, addr) { \ if ((ROWS * COLS) > 0x1000) { \ *(ptr)++ = ((addr) >> 8) & 0x3F; \ *(ptr)++ = (addr) & 0xFF; \ } else { \ *(ptr)++ = code_table[((addr) >> 6) & 0x3F]; \ *(ptr)++ = code_table[(addr) & 0x3F]; \ } \ } /** * Controller module registration. */ void ctlr_register(void) { /* Register callback routines. */ register_schange(ST_NEGOTIATING, ctlr_negotiating); register_schange(ST_CONNECT, ctlr_connect); register_schange(ST_3270_MODE, ctlr_connect); } /* * Initialize the emulated 3270 hardware. */ void ctlr_init(unsigned cmask) { ctlr_reinit(cmask); } /* * Reinitialize the emulated 3270 hardware. */ void ctlr_reinit(unsigned cmask) { static struct ea *real_ea_buf = NULL; static struct ea *real_aea_buf = NULL; if (cmask & MODEL_CHANGE) { /* Allocate buffers */ if (real_ea_buf) { Free((char *)real_ea_buf); } real_ea_buf = (struct ea *)Calloc(sizeof(struct ea), (maxROWS * maxCOLS) + 1); ea_buf = real_ea_buf + 1; if (real_aea_buf) { Free((char *)real_aea_buf); } real_aea_buf = (struct ea *)Calloc(sizeof(struct ea), (maxROWS * maxCOLS) + 1); aea_buf = real_aea_buf + 1; Replace(zero_buf, (unsigned char *)Calloc(sizeof(struct ea), maxROWS * maxCOLS)); cursor_addr = 0; buffer_addr = 0; ea_buf[-1].fa = FA_PRINTABLE | FA_MODIFY; aea_buf[-1].fa = FA_PRINTABLE | FA_MODIFY; } } /* * Deal with the relationships between model numbers and rows/cols. */ void set_rows_cols(int mn, int ovc, int ovr) { int defmod; if (ovc < 0 || ovr < 0) { ov_auto = true; ovc = 0; ovr = 0; } switch (mn) { case 2: maxCOLS = MODEL_2_COLS; maxROWS = MODEL_2_ROWS; model_num = 2; break; case 3: maxCOLS = MODEL_3_COLS; maxROWS = MODEL_3_ROWS; model_num = 3; break; case 4: maxCOLS = MODEL_4_COLS; maxROWS = MODEL_4_ROWS; model_num = 4; break; case 5: maxCOLS = MODEL_5_COLS; maxROWS = MODEL_5_ROWS; model_num = 5; break; default: defmod = 4; popup_an_error("Unknown model: %d\nDefaulting to %d", mn, defmod); set_rows_cols(defmod, ovc, ovr); return; } /* Apply oversize. */ ov_cols = 0; ov_rows = 0; if (ovc != 0 || ovr != 0) { if (ovc <= 0 || ovr <= 0) { popup_an_error("Invalid %s %dx%d:\nNegative or zero", ResOversize, ovc, ovr); } else if (ovc * ovr >= 0x4000) { popup_an_error("Invalid %s %dx%d:\nExceeds protocol limit", ResOversize, ovc, ovr); } else if (ovc > 0 && ovc < maxCOLS) { popup_an_error("Invalid %s cols (%d):\nLess than model %d cols " "(%d)", ResOversize, ovc, model_num, maxCOLS); } else if (ovr > 0 && ovr < maxROWS) { popup_an_error("Invalid %s rows (%d):\nLess than model %d rows " "(%d)", ResOversize, ovr, model_num, maxROWS); } else { ov_cols = maxCOLS = ovc; ov_rows = maxROWS = ovr; } } /* Update the model name. */ sprintf(model_name, "327%c-%d%s", mode.m3279 ? '9' : '8', model_num, mode.extended ? "-E" : ""); /* Make sure that the current rows/cols are still 24x80. */ COLS = defCOLS = MODEL_2_COLS; ROWS = defROWS = MODEL_2_ROWS; screen_alt = false; /* Set the defaults for the alternate screen size. */ altROWS = maxROWS; altCOLS = maxCOLS; /* The model changed. */ st_changed(ST_REMODEL, true); } /* * Stop the timeout in the OIA. * Called when there is an explicit Reset(). */ void ctlr_reset(void) { ticking_stop(NULL); vstatus_untiming(); } /* * Set the formatted screen flag. A formatted screen is a screen that * has at least one field somewhere on it. */ static void set_formatted(void) { int baddr; formatted = false; baddr = 0; do { if (ea_buf[baddr].fa) { formatted = true; break; } INC_BA(baddr); } while (baddr != 0); } /* * Called when protocol negotiation is in progress. */ static void ctlr_negotiating(bool ignored _is_unused) { ticking_start(true); } /* * Called when a host connects, disconnects, or changes NVT/3270 modes. */ static void ctlr_connect(bool ignored _is_unused) { ticking_stop(NULL); vstatus_untiming(); if (!IN_3270 || (IN_SSCP && (kybdlock & KL_OIA_TWAIT))) { kybdlock_clr(KL_OIA_TWAIT, "ctlr_connect"); vstatus_reset(); } default_fg = 0x00; default_bg = 0x00; default_gr = 0x00; default_cs = 0x00; default_ic = 0x00; reply_mode = SF_SRM_FIELD; crm_nattr = 0; /* On disconnect, reset the default and alternate dimensions. */ if (CONNECTED) { ctlr_enable_cursor(true, EC_CONNECT); } else { ctlr_enable_cursor(false, EC_CONNECT); defROWS = MODEL_2_ROWS; defCOLS = MODEL_2_COLS; altROWS = maxROWS; altCOLS = maxCOLS; } } /* * Find the buffer address of the field attribute for a given buffer address. * Returns -1 if the screen isn't formatted. */ int find_field_attribute_ea(int baddr, struct ea *ea) { int sbaddr; sbaddr = baddr; do { if (ea[baddr].fa) { return baddr; } DEC_BA(baddr); } while (baddr != sbaddr); return -1; } /* * Find the buffer address of the field attribute for a given buffer address. * Returns -1 if the screen isn't formatted. */ int find_field_attribute(int baddr) { if (!formatted) { return -1; } return find_field_attribute_ea(baddr, ea_buf); } /* * Find the field attribute for the given buffer address. Return its address * rather than its value. */ unsigned char get_field_attribute(register int baddr) { return ea_buf[find_field_attribute(baddr)].fa; } /* * Find the field attribute for the given buffer address, bounded by another * buffer address. Return the attribute in a parameter. * * Returns true if an attribute is found, false if boundary hit. */ bool get_bounded_field_attribute(register int baddr, register int bound, unsigned char *fa_out) { int sbaddr; if (!formatted) { *fa_out = ea_buf[-1].fa; return true; } sbaddr = baddr; do { if (ea_buf[baddr].fa) { *fa_out = ea_buf[baddr].fa; return true; } DEC_BA(baddr); } while (baddr != sbaddr && baddr != bound); /* Screen is unformatted (and 'formatted' is inaccurate). */ if (baddr == sbaddr) { *fa_out = ea_buf[-1].fa; return true; } /* Wrapped to boundary. */ return false; } /* * Given the address of a field attribute, return the address of the * extended attribute structure. */ struct ea * fa2ea(int baddr) { return &ea_buf[baddr]; } /* * Find the next unprotected field. Returns the address following the * unprotected attribute byte, or 0 if no nonzero-width unprotected field * can be found. */ int next_unprotected(int baddr0) { register int baddr, nbaddr; nbaddr = baddr0; do { baddr = nbaddr; INC_BA(nbaddr); if (ea_buf[baddr].fa && !FA_IS_PROTECTED(ea_buf[baddr].fa) && !ea_buf[nbaddr].fa) { return nbaddr; } } while (nbaddr != baddr0); return 0; } /* * Perform an erase command, which may include changing the (virtual) screen * size. */ void ctlr_erase(bool alt) { int newROWS, newCOLS; kybd_inhibit(false); ctlr_clear(true); /* Let a blocked task go. */ task_host_output(); if (alt) { newROWS = altROWS; newCOLS = altCOLS; } else { newROWS = defROWS; newCOLS = defCOLS; } if (alt == screen_alt && ROWS == newROWS && COLS == newCOLS) { return; } screen_disp(true); if (visible_control) { /* Blank the entire display. */ ctlr_blanks(); ROWS = maxROWS; COLS = maxCOLS; screen_disp(false); } ROWS = newROWS; COLS = newCOLS; if (visible_control) { /* Fill the active part of the screen with NULLs again. */ ctlr_clear(false); screen_disp(false); } screen_alt = alt; } /* * Interpret an incoming 3270 command. */ enum pds process_ds(unsigned char *buf, size_t buflen) { enum pds rv; if (!buflen) { return PDS_OKAY_NO_OUTPUT; } scroll_to_bottom(); switch (buf[0]) { /* 3270 command */ case CMD_EAU: /* erase all unprotected */ case SNA_CMD_EAU: ctlr_erase_all_unprotected(); trace_ds("< EraseAllUnprotected\n"); return PDS_OKAY_NO_OUTPUT; case CMD_EWA: /* erase/write alternate */ case SNA_CMD_EWA: ctlr_erase(true); trace_ds("< EraseWriteAlternate"); if ((rv = ctlr_write(buf, buflen, true)) < 0) { return rv; } return PDS_OKAY_NO_OUTPUT; case CMD_EW: /* erase/write */ case SNA_CMD_EW: ctlr_erase(false); trace_ds("< EraseWrite"); if ((rv = ctlr_write(buf, buflen, true)) < 0) { return rv; } return PDS_OKAY_NO_OUTPUT; case CMD_W: /* write */ case SNA_CMD_W: trace_ds("< Write"); if ((rv = ctlr_write(buf, buflen, false)) < 0) { return rv; } return PDS_OKAY_NO_OUTPUT; case CMD_RB: /* read buffer */ case SNA_CMD_RB: trace_ds("< ReadBuffer\n"); ctlr_read_buffer(aid); return PDS_OKAY_OUTPUT; case CMD_RM: /* read modifed */ case SNA_CMD_RM: trace_ds("< ReadModified\n"); ctlr_read_modified(aid, false); return PDS_OKAY_OUTPUT; case CMD_RMA: /* read modifed all */ case SNA_CMD_RMA: trace_ds("< ReadModifiedAll\n"); ctlr_read_modified(aid, true); return PDS_OKAY_OUTPUT; case CMD_WSF: /* write structured field */ case SNA_CMD_WSF: trace_ds("< WriteStructuredField"); return write_structured_field(buf, buflen); case CMD_NOP: /* no-op */ trace_ds("< NoOp\n"); return PDS_OKAY_NO_OUTPUT; default: /* unknown 3270 command */ popup_an_error("Unknown 3270 Data Stream command: 0x%X\n", buf[0]); return PDS_BAD_CMD; } } /* * Functions to insert SA attributes into the inbound data stream. */ static void insert_sa1(unsigned char attr, unsigned char value, unsigned char *currentp, bool *anyp) { if (value == *currentp) { return; } *currentp = value; space3270out(3); *obptr++ = ORDER_SA; *obptr++ = attr; *obptr++ = value; if (*anyp) { trace_ds("'"); } trace_ds(" SetAttribute(%s)", see_efa(attr, value)); *anyp = false; } /* * Translate an internal character set number to a 3270DS characte set number. */ static unsigned char host_cs(unsigned char cs) { switch (cs & CS_MASK) { case CS_APL: case CS_LINEDRAW: return 0xf0 | (cs & CS_MASK); case CS_DBCS: return 0xf8; default: return 0; } } static void insert_sa(int baddr, unsigned char *current_fgp, unsigned char *current_bgp, unsigned char *current_grp, unsigned char *current_csp, unsigned char *current_icp, bool *anyp) { if (reply_mode != SF_SRM_CHAR) { return; } if (memchr((char *)crm_attr, XA_FOREGROUND, crm_nattr)) { insert_sa1(XA_FOREGROUND, ea_buf[baddr].fg, current_fgp, anyp); } if (memchr((char *)crm_attr, XA_BACKGROUND, crm_nattr)) { insert_sa1(XA_BACKGROUND, ea_buf[baddr].bg, current_bgp, anyp); } if (memchr((char *)crm_attr, XA_HIGHLIGHTING, crm_nattr)) { unsigned char gr; gr = ea_buf[baddr].gr; if (gr) { gr |= 0xf0; } insert_sa1(XA_HIGHLIGHTING, gr, current_grp, anyp); } if (memchr((char *)crm_attr, XA_CHARSET, crm_nattr)) { insert_sa1(XA_CHARSET, host_cs(ea_buf[baddr].cs), current_csp, anyp); } } /* * Process a 3270 Read-Modified command and transmit the data back to the * host. */ void ctlr_read_modified(unsigned char aid_byte, bool all) { int baddr, sbaddr; bool send_data = true; bool short_read = false; unsigned char current_fg = 0x00; unsigned char current_bg = 0x00; unsigned char current_gr = 0x00; unsigned char current_cs = 0x00; unsigned char current_ic = 0x00; if (IN_SSCP && aid_byte != AID_ENTER) { return; } if (aid_byte == AID_SF) { dft_read_modified(); return; } trace_ds("> "); obptr = obuf; switch (aid_byte) { case AID_SYSREQ: /* test request */ space3270out(4); *obptr++ = EBC_soh; *obptr++ = EBC_percent; *obptr++ = EBC_slash; *obptr++ = EBC_stx; trace_ds("SysReq"); break; case AID_PA1: /* short-read AIDs */ case AID_PA2: case AID_PA3: case AID_CLEAR: if (!all) { short_read = true; } /* fall through... */ case AID_SELECT: /* No data on READ MODIFIED */ if (!all) { send_data = false; } /* fall through... */ default: /* ordinary AID */ if (!IN_SSCP) { space3270out(3); *obptr++ = aid_byte; trace_ds("%s", see_aid(aid_byte)); if (short_read) { goto rm_done; } ENCODE_BADDR(obptr, cursor_addr); trace_ds("%s", rcba(cursor_addr)); } else { space3270out(1); /* just in case */ } break; } baddr = 0; if (formatted) { /* find first field attribute */ do { if (ea_buf[baddr].fa) { break; } INC_BA(baddr); } while (baddr != 0); sbaddr = baddr; do { if (FA_IS_MODIFIED(ea_buf[baddr].fa)) { bool any = false; INC_BA(baddr); space3270out(3); *obptr++ = ORDER_SBA; ENCODE_BADDR(obptr, baddr); trace_ds(" SetBufferAddress%s", rcba(baddr)); while (!ea_buf[baddr].fa) { if (send_data && ea_buf[baddr].ec) { insert_sa(baddr, ¤t_fg, ¤t_bg, ¤t_gr, ¤t_cs, ¤t_ic, &any); if (ea_buf[baddr].cs & CS_GE) { space3270out(1); *obptr++ = ORDER_GE; if (any) { trace_ds("'"); } trace_ds(" GraphicEscape"); any = false; } space3270out(1); *obptr++ = ea_buf[baddr].ec; if (ea_buf[baddr].ec <= 0x3f || ea_buf[baddr].ec == 0xff) { if (any) { trace_ds("'"); } trace_ds(" %s", see_ebc(ea_buf[baddr].ec)); any = false; } else { if (!any) { trace_ds(" '"); } trace_ds("%s", see_ebc(ea_buf[baddr].ec)); any = true; } } INC_BA(baddr); } if (any) { trace_ds("'"); } } else { /* not modified - skip */ do { INC_BA(baddr); } while (!ea_buf[baddr].fa); } } while (baddr != sbaddr); } else { bool any = false; int nbytes = 0; /* * If we're in SSCP-LU mode, the starting point is where the * host left the cursor. */ if (IN_SSCP) { baddr = sscp_start; } do { if (ea_buf[baddr].ec) { insert_sa(baddr, ¤t_fg, ¤t_bg, ¤t_gr, ¤t_cs, ¤t_ic, &any); if (ea_buf[baddr].cs & CS_GE) { space3270out(1); *obptr++ = ORDER_GE; if (any) { trace_ds("' "); } trace_ds(" GraphicEscape "); any = false; } space3270out(1); *obptr++ = ea_buf[baddr].ec; if (ea_buf[baddr].ec <= 0x3f || ea_buf[baddr].ec == 0xff) { if (any) { trace_ds("'"); } trace_ds(" %s", see_ebc(ea_buf[baddr].ec)); any = false; } else { if (!any) { trace_ds(" '"); } trace_ds("%s", see_ebc(ea_buf[baddr].ec)); any = true; } nbytes++; } INC_BA(baddr); /* * If we're in SSCP-LU mode, end the return value at * 255 bytes, or where the screen wraps. */ if (IN_SSCP && (nbytes >= 255 || !baddr)) { break; } } while (baddr != 0); if (any) { trace_ds("'"); } } rm_done: trace_ds("\n"); net_output(); } /* * Process a 3270 Read-Buffer command and transmit the data back to the * host. */ void ctlr_read_buffer(unsigned char aid_byte) { int baddr; unsigned char fa; bool any = false; size_t attr_count = 0; unsigned char current_fg = 0x00; unsigned char current_bg = 0x00; unsigned char current_gr = 0x00; unsigned char current_cs = 0x00; unsigned char current_ic = 0x00; if (aid_byte == AID_SF) { dft_read_modified(); return; } trace_ds("> "); obptr = obuf; space3270out(3); *obptr++ = aid_byte; ENCODE_BADDR(obptr, cursor_addr); trace_ds("%s%s", see_aid(aid_byte), rcba(cursor_addr)); baddr = 0; do { if (ea_buf[baddr].fa) { if (reply_mode == SF_SRM_FIELD) { space3270out(2); *obptr++ = ORDER_SF; } else { space3270out(4); *obptr++ = ORDER_SFE; attr_count = obptr - obuf; *obptr++ = 1; /* for now */ *obptr++ = XA_3270; } fa = ea_buf[baddr].fa & ~FA_PRINTABLE; *obptr++ = code_table[fa]; if (any) { trace_ds("'"); } trace_ds(" StartField%s%s%s", (reply_mode == SF_SRM_FIELD) ? "" : "Extended", rcba(baddr), see_attr(fa)); if (reply_mode != SF_SRM_FIELD) { if (ea_buf[baddr].fg) { space3270out(2); *obptr++ = XA_FOREGROUND; *obptr++ = ea_buf[baddr].fg; trace_ds("%s", see_efa(XA_FOREGROUND, ea_buf[baddr].fg)); (*(obuf + attr_count))++; } if (ea_buf[baddr].bg) { space3270out(2); *obptr++ = XA_BACKGROUND; *obptr++ = ea_buf[baddr].bg; trace_ds("%s", see_efa(XA_BACKGROUND, ea_buf[baddr].bg)); (*(obuf + attr_count))++; } if (ea_buf[baddr].gr) { space3270out(2); *obptr++ = XA_HIGHLIGHTING; *obptr++ = ea_buf[baddr].gr | 0xf0; trace_ds("%s", see_efa(XA_HIGHLIGHTING, ea_buf[baddr].gr | 0xf0)); (*(obuf + attr_count))++; } if (ea_buf[baddr].cs & CS_MASK) { space3270out(2); *obptr++ = XA_CHARSET; *obptr++ = host_cs(ea_buf[baddr].cs); trace_ds("%s", see_efa(XA_CHARSET, host_cs(ea_buf[baddr].cs))); (*(obuf + attr_count))++; } } any = false; } else { insert_sa(baddr, ¤t_fg, ¤t_bg, ¤t_gr, ¤t_cs, ¤t_ic, &any); if (ea_buf[baddr].cs & CS_GE) { space3270out(1); *obptr++ = ORDER_GE; if (any) { trace_ds("'"); } trace_ds(" GraphicEscape"); any = false; } space3270out(1); *obptr++ = ea_buf[baddr].ec; if (ea_buf[baddr].ec <= 0x3f || ea_buf[baddr].ec == 0xff) { if (any) { trace_ds("'"); } trace_ds(" %s", see_ebc(ea_buf[baddr].ec)); any = false; } else { if (!any) { trace_ds(" '"); } trace_ds("%s", see_ebc(ea_buf[baddr].ec)); any = true; } } INC_BA(baddr); } while (baddr != 0); if (any) { trace_ds("'"); } trace_ds("\n"); net_output(); } /* * Construct a 3270 command to reproduce the current state of the display, if * formatted. */ void ctlr_snap_buffer(void) { int baddr = 0; size_t attr_count; unsigned char current_fg = 0x00; unsigned char current_bg = 0x00; unsigned char current_gr = 0x00; unsigned char current_cs = 0x00; unsigned char current_ic = 0x00; unsigned char av; space3270out(2); *obptr++ = screen_alt ? CMD_EWA : CMD_EW; *obptr++ = code_table[(kybdlock & (KL_OERR_MASK | KL_OIA_TWAIT | KL_OIA_LOCKED))? 0: WCC_KEYBOARD_RESTORE_BIT]; do { if (ea_buf[baddr].fa) { space3270out(4); *obptr++ = ORDER_SFE; attr_count = obptr - obuf; *obptr++ = 1; /* for now */ *obptr++ = XA_3270; *obptr++ = code_table[ea_buf[baddr].fa & ~FA_PRINTABLE]; if (ea_buf[baddr].fg) { space3270out(2); *obptr++ = XA_FOREGROUND; *obptr++ = ea_buf[baddr].fg; (*(obuf + attr_count))++; } if (ea_buf[baddr].bg) { space3270out(2); *obptr++ = XA_BACKGROUND; *obptr++ = ea_buf[baddr].fg; (*(obuf + attr_count))++; } if (ea_buf[baddr].gr) { space3270out(2); *obptr++ = XA_HIGHLIGHTING; *obptr++ = ea_buf[baddr].gr | 0xf0; (*(obuf + attr_count))++; } if (ea_buf[baddr].cs & CS_MASK) { space3270out(2); *obptr++ = XA_CHARSET; *obptr++ = host_cs(ea_buf[baddr].cs); (*(obuf + attr_count))++; } } else { av = ea_buf[baddr].fg; if (current_fg != av) { current_fg = av; space3270out(3); *obptr++ = ORDER_SA; *obptr++ = XA_FOREGROUND; *obptr++ = av; } av = ea_buf[baddr].bg; if (current_bg != av) { current_bg = av; space3270out(3); *obptr++ = ORDER_SA; *obptr++ = XA_BACKGROUND; *obptr++ = av; } av = ea_buf[baddr].gr; if (av) { av |= 0xf0; } if (current_gr != av) { current_gr = av; space3270out(3); *obptr++ = ORDER_SA; *obptr++ = XA_HIGHLIGHTING; *obptr++ = av; } av = ea_buf[baddr].cs & CS_MASK; if (av) { av = host_cs(av); } if (current_cs != av) { current_cs = av; space3270out(3); *obptr++ = ORDER_SA; *obptr++ = XA_CHARSET; *obptr++ = av; } av = ea_buf[baddr].ic; if (current_ic != av) { current_ic = av; space3270out(3); *obptr++ = ORDER_SA; *obptr++ = XA_INPUT_CONTROL; *obptr++ = av; } if (ea_buf[baddr].cs & CS_GE) { space3270out(1); *obptr++ = ORDER_GE; } space3270out(1); *obptr++ = ea_buf[baddr].ec; } INC_BA(baddr); } while (baddr != 0); space3270out(4); *obptr++ = ORDER_SBA; ENCODE_BADDR(obptr, cursor_addr); *obptr++ = ORDER_IC; } /* * Construct a 3270 command to reproduce the reply mode. * Returns a bool indicating if one is necessary. */ bool ctlr_snap_modes(void) { int i; if (!IN_3270 || reply_mode == SF_SRM_FIELD) { return false; } space3270out(6 + crm_nattr); *obptr++ = CMD_WSF; *obptr++ = 0x00; /* implicit length */ *obptr++ = 0x00; *obptr++ = SF_SET_REPLY_MODE; *obptr++ = 0x00; /* partition 0 */ *obptr++ = reply_mode; if (reply_mode == SF_SRM_CHAR) { for (i = 0; i < crm_nattr; i++) { *obptr++ = crm_attr[i]; } } return true; } /* * Construct a 3270 command to reproduce the current state of the display * in SSCP-LU mode. */ void ctlr_snap_buffer_sscp_lu(void) { int baddr = 0; /* Write out the screen contents once. */ do { if (ea_buf[baddr].ec == 0xff) { space3270out(1); *obptr++ = 0xff; } space3270out(1); *obptr++ = ea_buf[baddr].ec; INC_BA(baddr); } while (baddr != 0); /* Write them out again, until we hit where the cursor is. */ if (cursor_addr != baddr) { do { if (ea_buf[baddr].ec == 0xff) { space3270out(1); *obptr++ = 0xff; } space3270out(1); *obptr++ = ea_buf[baddr].ec; INC_BA(baddr); } while (baddr != cursor_addr); } } /* * Process a 3270 Erase All Unprotected command. */ void ctlr_erase_all_unprotected(void) { int baddr, sbaddr; unsigned char fa; bool f; kybd_inhibit(false); ALL_CHANGED; if (formatted) { /* find first field attribute */ baddr = 0; do { if (ea_buf[baddr].fa) { break; } INC_BA(baddr); } while (baddr != 0); sbaddr = baddr; f = false; do { fa = ea_buf[baddr].fa; if (!FA_IS_PROTECTED(fa)) { mdt_clear(baddr); do { INC_BA(baddr); if (!f) { cursor_move(baddr); f = true; } if (!ea_buf[baddr].fa) { ctlr_add(baddr, EBC_null, 0); } } while (!ea_buf[baddr].fa); } else { do { INC_BA(baddr); } while (!ea_buf[baddr].fa); } } while (baddr != sbaddr); if (!f) { cursor_move(0); } } else { ctlr_clear(true); } aid = AID_NO; do_reset(false); } /* * Process a 3270 Write command. */ enum pds ctlr_write(unsigned char buf[], size_t buflen, bool erase) { unsigned char *cp; int baddr; unsigned char current_fa; bool last_cmd; bool last_zpt; bool wcc_keyboard_restore, wcc_sound_alarm; bool ra_ge; int i; unsigned char na; int any_fa; unsigned char efa_fg; unsigned char efa_bg; unsigned char efa_gr; unsigned char efa_cs; unsigned char efa_ic; const char *paren = "("; enum { NONE, ORDER, SBA, TEXT, NULLCH } previous = NONE; enum pds rv = PDS_OKAY_NO_OUTPUT; int fa_addr; bool add_dbcs; unsigned char add_c1, add_c2 = 0; enum dbcs_state d; enum dbcs_why why = DBCS_FIELD; bool aborted = false; char mb[16]; bool insert_cursor = false; int ic_baddr = 0; #define END_TEXT0 { if (previous == TEXT) trace_ds("'"); } #define END_TEXT(cmd) { END_TEXT0; trace_ds(" %s", cmd); } /* XXX: Should there be a ctlr_add_cs call here? */ #define START_FIELD(fa) { \ current_fa = fa; \ ctlr_add_fa(buffer_addr, fa, 0); \ ctlr_add_cs(buffer_addr, 0); \ ctlr_add_fg(buffer_addr, 0); \ ctlr_add_bg(buffer_addr, 0); \ ctlr_add_gr(buffer_addr, 0); \ ctlr_add_ic(buffer_addr, 0); \ trace_ds("%s", see_attr(fa)); \ formatted = true; \ } kybd_inhibit(false); if (buflen < 2) { return PDS_BAD_CMD; } default_fg = 0; default_bg = 0; default_gr = 0; default_cs = 0; default_ic = 0; trace_primed = true; buffer_addr = cursor_addr; if (WCC_RESET(buf[1])) { if (erase) { reply_mode = SF_SRM_FIELD; } trace_ds("%sreset", paren); paren = ","; } wcc_sound_alarm = WCC_SOUND_ALARM(buf[1]); if (wcc_sound_alarm) { trace_ds("%salarm", paren); paren = ","; } wcc_keyboard_restore = WCC_KEYBOARD_RESTORE(buf[1]); if (wcc_keyboard_restore) { trace_ds("%srestore", paren); paren = ","; } if (WCC_RESET_MDT(buf[1])) { trace_ds("%sresetMDT", paren); paren = ","; baddr = 0; if (appres.modified_sel) { ALL_CHANGED; } do { if (ea_buf[baddr].fa) { mdt_clear(baddr); } INC_BA(baddr); } while (baddr != 0); } if (strcmp(paren, "(")) { trace_ds(")"); } last_cmd = true; last_zpt = false; current_fa = get_field_attribute(buffer_addr); #define ABORT_WRITEx { \ rv = PDS_BAD_ADDR; \ aborted = true; \ break; \ } #define ABORT_WRITE(s) { \ trace_ds(" [" s "; write aborted]\n"); \ ABORT_WRITEx; \ } \ for (cp = &buf[2]; !aborted && cp < (buf + buflen); cp++) { switch (*cp) { case ORDER_SF: /* start field */ END_TEXT("StartField"); if (previous != SBA) { trace_ds("%s", rcba(buffer_addr)); } previous = ORDER; cp++; /* skip field attribute */ START_FIELD(*cp); ctlr_add_fg(buffer_addr, 0); ctlr_add_bg(buffer_addr, 0); INC_BA(buffer_addr); last_cmd = true; last_zpt = false; break; case ORDER_SBA: /* set buffer address */ cp += 2; /* skip buffer address */ buffer_addr = DECODE_BADDR(*(cp-1), *cp); END_TEXT("SetBufferAddress"); previous = SBA; trace_ds("%s", rcba(buffer_addr)); if (buffer_addr >= COLS * ROWS) { trace_ds("COLS %d ROWS %d\n", COLS, ROWS); ABORT_WRITE("invalid SBA address"); } current_fa = get_field_attribute(buffer_addr); last_cmd = true; last_zpt = false; break; case ORDER_IC: /* insert cursor */ END_TEXT("InsertCursor"); if (previous != SBA) { trace_ds("%s", rcba(buffer_addr)); } previous = ORDER; insert_cursor = true; ic_baddr = buffer_addr; last_cmd = true; last_zpt = false; break; case ORDER_PT: /* program tab */ END_TEXT("ProgramTab"); previous = ORDER; /* * If the buffer address is the field attribute of * of an unprotected field, simply advance one * position. */ if (ea_buf[buffer_addr].fa && !FA_IS_PROTECTED(ea_buf[buffer_addr].fa)) { INC_BA(buffer_addr); last_zpt = false; last_cmd = true; break; } /* * Otherwise, advance to the first position of the * next unprotected field. */ baddr = next_unprotected(buffer_addr); if (baddr < buffer_addr) { baddr = 0; } /* * Null out the remainder of the current field -- even * if protected -- if the PT doesn't follow a command * or order, or (honestly) if the last order we saw was * a null-filling PT that left the buffer address at 0. * XXX: There's some funky DBCS rule here. */ if (!last_cmd || last_zpt) { trace_ds("(nulling)"); while ((buffer_addr != baddr) && (!ea_buf[buffer_addr].fa)) { ctlr_add(buffer_addr, EBC_null, 0); ctlr_add_cs(buffer_addr, 0); ctlr_add_fg(buffer_addr, 0); ctlr_add_bg(buffer_addr, 0); ctlr_add_gr(buffer_addr, 0); ctlr_add_ic(buffer_addr, 0); INC_BA(buffer_addr); } if (baddr == 0) { last_zpt = true; } } else { last_zpt = false; } buffer_addr = baddr; last_cmd = true; break; case ORDER_RA: /* repeat to address */ END_TEXT("RepeatToAddress"); cp += 2; /* skip buffer address */ baddr = DECODE_BADDR(*(cp-1), *cp); trace_ds("%s", rcba(baddr)); cp++; /* skip char to repeat */ add_dbcs = false; ra_ge = false; previous = ORDER; if (dbcs) { d = ctlr_lookleft_state(buffer_addr, &why); if (d == DBCS_RIGHT) { ABORT_WRITE("RA over right half of DBCS character"); } if (default_cs == CS_DBCS || d == DBCS_LEFT) { add_dbcs = true; } } if (add_dbcs) { if ((baddr - buffer_addr) % 2) { ABORT_WRITE("DBCS RA with odd length"); } add_c1 = *cp; cp++; if (cp >= buf + buflen) { ABORT_WRITE("missing second half of DBCS character"); } add_c2 = *cp; if (add_c1 == EBC_null) { switch (add_c2) { case EBC_null: case EBC_nl: case EBC_em: case EBC_ff: case EBC_cr: case EBC_dup: case EBC_fm: break; default: trace_ds(" [invalid DBCS RA control character " "X'%02x%02x'; write aborted]", add_c1, add_c2); ABORT_WRITEx; } } else if (add_c1 < 0x40 || add_c1 > 0xfe || add_c2 < 0x40 || add_c2 > 0xfe) { trace_ds(" [invalid DBCS RA character X'%02x%02x'; write " "aborted]", add_c1, add_c2); ABORT_WRITEx; } ebcdic_to_multibyte((add_c1 << 8) | add_c2, mb, sizeof(mb)); trace_ds("'%s'", mb); } else { if (*cp == ORDER_GE) { ra_ge = true; trace_ds("GraphicEscape"); cp++; } add_c1 = *cp; if (add_c1) { trace_ds("'"); } trace_ds("%s", see_ebc(add_c1)); if (add_c1) { trace_ds("'"); } } if (baddr >= COLS * ROWS) { ABORT_WRITE("invalid RA address"); } do { if (add_dbcs) { ctlr_add(buffer_addr, add_c1, default_cs); } else { if (ra_ge) { ctlr_add(buffer_addr, add_c1, CS_GE); } else if (default_cs) { ctlr_add(buffer_addr, add_c1, default_cs); } else { ctlr_add(buffer_addr, add_c1, 0); } } ctlr_add_fg(buffer_addr, default_fg); ctlr_add_gr(buffer_addr, default_gr); ctlr_add_ic(buffer_addr, default_ic); INC_BA(buffer_addr); if (add_dbcs) { ctlr_add(buffer_addr, add_c2, default_cs); ctlr_add_fg(buffer_addr, default_fg); ctlr_add_bg(buffer_addr, default_bg); ctlr_add_gr(buffer_addr, default_gr); ctlr_add_ic(buffer_addr, default_ic); INC_BA(buffer_addr); } } while (buffer_addr != baddr); current_fa = get_field_attribute(buffer_addr); last_cmd = true; last_zpt = false; break; case ORDER_EUA: /* erase unprotected to address */ cp += 2; /* skip buffer address */ baddr = DECODE_BADDR(*(cp-1), *cp); END_TEXT("EraseUnprotectedAll"); if (previous != SBA) { trace_ds("%s", rcba(baddr)); } previous = ORDER; if (baddr >= COLS * ROWS) { ABORT_WRITE("invalid EUA address"); } d = ctlr_lookleft_state(buffer_addr, &why); if (d == DBCS_RIGHT) { ABORT_WRITE("EUA overwriting right half of DBCS character"); } d = ctlr_lookleft_state(baddr, &why); if (d == DBCS_LEFT) { ABORT_WRITE("EUA overwriting left half of DBCS character"); } do { if (ea_buf[buffer_addr].fa) { current_fa = ea_buf[buffer_addr].fa; } else if (!FA_IS_PROTECTED(current_fa)) { ctlr_add(buffer_addr, EBC_null, CS_BASE); } INC_BA(buffer_addr); } while (buffer_addr != baddr); current_fa = get_field_attribute(buffer_addr); last_cmd = true; last_zpt = false; break; case ORDER_GE: /* graphic escape */ /* XXX: DBCS? */ END_TEXT("GraphicEscape "); cp++; /* skip char */ previous = ORDER; if (*cp) { trace_ds("'"); } trace_ds("%s", see_ebc(*cp)); if (*cp) { trace_ds("'"); } ctlr_add(buffer_addr, *cp, CS_GE); ctlr_add_fg(buffer_addr, default_fg); ctlr_add_bg(buffer_addr, default_bg); ctlr_add_gr(buffer_addr, default_gr); ctlr_add_ic(buffer_addr, default_ic); INC_BA(buffer_addr); current_fa = get_field_attribute(buffer_addr); last_cmd = false; last_zpt = false; break; case ORDER_MF: /* modify field */ END_TEXT("ModifyField"); if (previous != SBA) { trace_ds("%s", rcba(buffer_addr)); } previous = ORDER; cp++; na = *cp; if (ea_buf[buffer_addr].fa) { for (i = 0; i < (int)na; i++) { cp++; if (*cp == XA_3270) { trace_ds(" 3270"); cp++; ctlr_add_fa(buffer_addr, *cp, ea_buf[buffer_addr].cs); trace_ds("%s", see_attr(*cp)); } else if (*cp == XA_FOREGROUND) { trace_ds("%s", see_efa(*cp, *(cp + 1))); cp++; if (mode.m3279) { ctlr_add_fg(buffer_addr, *cp); } } else if (*cp == XA_BACKGROUND) { trace_ds("%s", see_efa(*cp, *(cp + 1))); cp++; if (mode.m3279) { ctlr_add_bg(buffer_addr, *cp); } } else if (*cp == XA_HIGHLIGHTING) { trace_ds("%s", see_efa(*cp, *(cp + 1))); cp++; ctlr_add_gr(buffer_addr, *cp & 0x0f); } else if (*cp == XA_CHARSET) { int cs = 0; trace_ds("%s", see_efa(*cp, *(cp + 1))); cp++; if (*cp == 0xf1) { cs = CS_APL; } else if (*cp == 0xf8) { cs = CS_DBCS; } ctlr_add_cs(buffer_addr, cs); } else if (*cp == XA_ALL) { trace_ds("%s", see_efa(*cp, *(cp + 1))); cp++; } else if (*cp == XA_INPUT_CONTROL) { trace_ds("%s", see_efa(*cp, *(cp + 1))); ctlr_add_ic(buffer_addr, (*(cp + 1) == 1)); cp++; } else { trace_ds("%s[unsupported]", see_efa(*cp, *(cp + 1))); cp++; } } INC_BA(buffer_addr); } else { cp += na * 2; } last_cmd = true; last_zpt = false; break; case ORDER_SFE: /* start field extended */ END_TEXT("StartFieldExtended"); if (previous != SBA) { trace_ds("%s", rcba(buffer_addr)); } previous = ORDER; cp++; /* skip order */ na = *cp; any_fa = 0; efa_fg = 0; efa_bg = 0; efa_gr = 0; efa_cs = 0; efa_ic = 0; for (i = 0; i < (int)na; i++) { cp++; if (*cp == XA_3270) { trace_ds(" 3270"); cp++; START_FIELD(*cp); any_fa++; } else if (*cp == XA_FOREGROUND) { trace_ds("%s", see_efa(*cp, *(cp + 1))); cp++; if (mode.m3279) { efa_fg = *cp; } } else if (*cp == XA_BACKGROUND) { trace_ds("%s", see_efa(*cp, *(cp + 1))); cp++; if (mode.m3279) { efa_bg = *cp; } } else if (*cp == XA_HIGHLIGHTING) { trace_ds("%s", see_efa(*cp, *(cp + 1))); cp++; efa_gr = *cp & 0x07; } else if (*cp == XA_CHARSET) { trace_ds("%s", see_efa(*cp, *(cp + 1))); cp++; if (*cp == 0xf1) { efa_cs = CS_APL; } else if (dbcs && (*cp == 0xf8)) { efa_cs = CS_DBCS; } else { efa_cs = CS_BASE; } } else if (*cp == XA_ALL) { trace_ds("%s", see_efa(*cp, *(cp + 1))); cp++; } else if (*cp == XA_INPUT_CONTROL) { trace_ds("%s", see_efa(*cp, *(cp + 1))); if (dbcs) { efa_ic = (*(cp + 1) == 1); } cp++; } else { trace_ds("%s[unsupported]", see_efa(*cp, *(cp + 1))); cp++; } } if (!any_fa) { START_FIELD(0); } ctlr_add_cs(buffer_addr, efa_cs); ctlr_add_fg(buffer_addr, efa_fg); ctlr_add_bg(buffer_addr, efa_bg); ctlr_add_gr(buffer_addr, efa_gr); ctlr_add_ic(buffer_addr, efa_ic); INC_BA(buffer_addr); last_cmd = true; last_zpt = false; break; case ORDER_SA: /* set attribute */ END_TEXT("SetAttribute"); previous = ORDER; cp++; if (*cp == XA_FOREGROUND) { trace_ds("%s", see_efa(*cp, *(cp + 1))); if (mode.m3279) { default_fg = *(cp + 1); } } else if (*cp == XA_BACKGROUND) { trace_ds("%s", see_efa(*cp, *(cp + 1))); if (mode.m3279) { default_bg = *(cp + 1); } } else if (*cp == XA_HIGHLIGHTING) { trace_ds("%s", see_efa(*cp, *(cp + 1))); default_gr = *(cp + 1) & 0x0f; } else if (*cp == XA_ALL) { trace_ds("%s", see_efa(*cp, *(cp + 1))); default_fg = 0; default_bg = 0; default_gr = 0; default_cs = 0; default_ic = 0; } else if (*cp == XA_CHARSET) { trace_ds("%s", see_efa(*cp, *(cp + 1))); switch (*(cp + 1)) { case 0xf1: default_cs = CS_APL; break; case 0xf8: default_cs = CS_DBCS; break; default: default_cs = CS_BASE; break; } } else if (*cp == XA_INPUT_CONTROL) { trace_ds("%s", see_efa(*cp, *(cp + 1))); if (*(cp + 1) == 1) { default_ic = 1; } else { default_ic = 0; } } else { trace_ds("%s[unsupported]", see_efa(*cp, *(cp + 1))); } cp++; last_cmd = true; last_zpt = false; break; case FCORDER_SUB: /* format control orders */ case FCORDER_DUP: case FCORDER_FM: case FCORDER_FF: case FCORDER_CR: case FCORDER_NL: case FCORDER_EM: case FCORDER_LF: case FCORDER_EO: END_TEXT(see_ebc(*cp)); previous = ORDER; d = ctlr_lookleft_state(buffer_addr, &why); if (default_cs == CS_DBCS || d != DBCS_NONE) { ABORT_WRITE("invalid format control order in DBCS field"); } ctlr_add(buffer_addr, *cp, default_cs); ctlr_add_fg(buffer_addr, default_fg); ctlr_add_bg(buffer_addr, default_bg); ctlr_add_gr(buffer_addr, default_gr); ctlr_add_ic(buffer_addr, default_ic); INC_BA(buffer_addr); last_cmd = true; last_zpt = false; break; case FCORDER_SO: /* Look left for errors. */ END_TEXT(see_ebc(*cp)); d = ctlr_lookleft_state(buffer_addr, &why); if (d == DBCS_RIGHT) { ABORT_WRITE("SO overwriting right half of DBCS character"); } if (d != DBCS_NONE && why == DBCS_FIELD) { ABORT_WRITE("SO in DBCS field"); } if (d != DBCS_NONE && why == DBCS_SUBFIELD) { ABORT_WRITE("double SO"); } /* All is well. */ previous = ORDER; ctlr_add(buffer_addr, *cp, default_cs); ctlr_add_fg(buffer_addr, default_fg); ctlr_add_bg(buffer_addr, default_bg); ctlr_add_gr(buffer_addr, default_gr); ctlr_add_ic(buffer_addr, default_ic); INC_BA(buffer_addr); last_cmd = true; last_zpt = false; break; case FCORDER_SI: /* Look left for errors. */ END_TEXT(see_ebc(*cp)); d = ctlr_lookleft_state(buffer_addr, &why); if (d == DBCS_RIGHT) { ABORT_WRITE("SI overwriting right half of DBCS character"); } if (d != DBCS_NONE && why == DBCS_FIELD) { ABORT_WRITE("SI in DBCS field"); } fa_addr = find_field_attribute(buffer_addr); baddr = buffer_addr; DEC_BA(baddr); while (!aborted && ((fa_addr >= 0 && baddr != fa_addr) || (fa_addr < 0 && baddr != ROWS*COLS - 1))) { if (ea_buf[baddr].ec == FCORDER_SI) { ABORT_WRITE("double SI"); } if (ea_buf[baddr].ec == FCORDER_SO) { break; } DEC_BA(baddr); } if (aborted) { break; } if (ea_buf[baddr].ec != FCORDER_SO) { ABORT_WRITE("SI without SO"); } /* All is well. */ previous = ORDER; ctlr_add(buffer_addr, *cp, default_cs); ctlr_add_fg(buffer_addr, default_fg); ctlr_add_bg(buffer_addr, default_bg); ctlr_add_gr(buffer_addr, default_gr); ctlr_add_ic(buffer_addr, default_ic); INC_BA(buffer_addr); last_cmd = true; last_zpt = false; break; case FCORDER_NULL: /* NULL or DBCS control char */ add_dbcs = false; d = ctlr_lookleft_state(buffer_addr, &why); if (d == DBCS_RIGHT) { ABORT_WRITE("NULL overwriting right half of DBCS character"); } if (d != DBCS_NONE || default_cs == CS_DBCS) { add_c1 = EBC_null; cp++; if (cp >= buf + buflen) { ABORT_WRITE("missing second half of DBCS character"); } add_c2 = *cp; switch (add_c2) { case EBC_null: case EBC_nl: case EBC_em: case EBC_ff: case EBC_cr: case EBC_dup: case EBC_fm: /* DBCS control code */ END_TEXT(see_ebc(add_c2)); add_dbcs = true; break; case ORDER_SF: case ORDER_SFE: /* Dead position */ END_TEXT("DeadNULL"); cp--; break; default: trace_ds(" [invalid DBCS control character X'%02x%02x'; " "write aborted]", add_c1, add_c2); ABORT_WRITEx; break; } if (aborted) { break; } } else { END_TEXT("NULL"); add_c1 = *cp; } previous = NULLCH; ctlr_add(buffer_addr, add_c1, default_cs); ctlr_add_fg(buffer_addr, default_fg); ctlr_add_bg(buffer_addr, default_bg); ctlr_add_gr(buffer_addr, default_gr); ctlr_add_ic(buffer_addr, default_ic); INC_BA(buffer_addr); if (add_dbcs) { ctlr_add(buffer_addr, add_c2, default_cs); ctlr_add_fg(buffer_addr, default_fg); ctlr_add_bg(buffer_addr, default_bg); ctlr_add_gr(buffer_addr, default_gr); ctlr_add_ic(buffer_addr, default_ic); INC_BA(buffer_addr); } last_cmd = false; last_zpt = false; break; default: /* enter character */ if (*cp <= 0x3F) { END_TEXT("UnsupportedOrder"); trace_ds("(%02X)", *cp); previous = ORDER; last_cmd = true; last_zpt = false; break; } if (previous != TEXT) { trace_ds(" '"); } previous = TEXT; add_dbcs = false; d = ctlr_lookleft_state(buffer_addr, &why); if (d == DBCS_RIGHT) { ABORT_WRITE("overwriting right half of DBCS character"); } if (d != DBCS_NONE || default_cs == CS_DBCS) { add_c1 = *cp; cp++; if (cp >= buf + buflen) { ABORT_WRITE("missing second half of DBCS character"); } add_c2 = *cp; if (add_c1 < 0x40 || add_c1 > 0xfe || add_c2 < 0x40 || add_c2 > 0xfe) { trace_ds(" [invalid DBCS character X'%02x%02x'; write " "aborted]", add_c1, add_c2); ABORT_WRITEx; } add_dbcs = true; ebcdic_to_multibyte((add_c1 << 8) | add_c2, mb, sizeof(mb)); trace_ds("%s", mb); } else { add_c1 = *cp; trace_ds("%s", see_ebc(*cp)); } ctlr_add(buffer_addr, add_c1, default_cs); ctlr_add_fg(buffer_addr, default_fg); ctlr_add_bg(buffer_addr, default_bg); ctlr_add_gr(buffer_addr, default_gr); ctlr_add_ic(buffer_addr, default_ic); INC_BA(buffer_addr); if (add_dbcs) { ctlr_add(buffer_addr, add_c2, default_cs); ctlr_add_fg(buffer_addr, default_fg); ctlr_add_bg(buffer_addr, default_bg); ctlr_add_gr(buffer_addr, default_gr); ctlr_add_ic(buffer_addr, default_ic); INC_BA(buffer_addr); } last_cmd = false; last_zpt = false; break; } } set_formatted(); END_TEXT0; trace_ds("\n"); if (insert_cursor) { cursor_move(ic_baddr); } kybdlock_clr(KL_AWAITING_FIRST, "ctlr_write"); if (wcc_keyboard_restore) { aid = AID_NO; do_reset(false); } else if (kybdlock & KL_OIA_TWAIT) { kybdlock_clr(KL_OIA_TWAIT, "ctlr_write"); vstatus_syswait(); } if (wcc_sound_alarm) { ring_bell(); } if (wcc_keyboard_restore) { ticking_stop(&net_last_recv_ts); } /* Set up the DBCS state. */ if (ctlr_dbcs_postprocess() < 0 && rv == PDS_OKAY_NO_OUTPUT) { rv = PDS_BAD_ADDR; } trace_primed = false; ps_process(); /* Let a blocked task go. */ task_host_output(); /* Tell 'em what happened. */ return rv; } #undef START_FIELDx #undef START_FIELD0 #undef START_FIELD #undef END_TEXT0 #undef END_TEXT #undef ABORT_WRITEx #undef ABORT_WRITE /* * Write SSCP-LU data, which is quite a bit dumber than regular 3270 * output. */ void ctlr_write_sscp_lu(unsigned char buf[], size_t buflen) { size_t i; unsigned char *cp = buf; int s_row; unsigned char c; int baddr; int text = false; /* * The 3174 Functionl Description says that anything but NL, NULL, FM, * or DUP is to be displayed as a graphic. However, to deal with * badly-behaved hosts, we filter out SF, IC and SBA sequences, and * we display other control codes as spaces. */ trace_ds("SSCP-LU data\n< "); for (i = 0; i < buflen; cp++, i++) { switch (*cp) { case FCORDER_NL: /* * Insert NULLs to the end of the line and advance to * the beginning of the next line. */ if (text) { trace_ds("'"); text = false; } trace_ds(" NL"); s_row = buffer_addr / COLS; while ((buffer_addr / COLS) == s_row) { ctlr_add(buffer_addr, EBC_null, default_cs); ctlr_add_fg(buffer_addr, default_fg); ctlr_add_bg(buffer_addr, default_bg); ctlr_add_gr(buffer_addr, default_gr); ctlr_add_ic(buffer_addr, default_ic); INC_BA(buffer_addr); } break; case ORDER_SF: /* Some hosts forget they're talking SSCP-LU. */ cp++; i++; if (text) { trace_ds("'"); text = false; } trace_ds(" SF%s %s [translated to space]\n", rcba(buffer_addr), see_attr(*cp)); ctlr_add(buffer_addr, EBC_space, default_cs); ctlr_add_fg(buffer_addr, default_fg); ctlr_add_bg(buffer_addr, default_bg); ctlr_add_gr(buffer_addr, default_gr); ctlr_add_ic(buffer_addr, default_ic); INC_BA(buffer_addr); break; case ORDER_IC: if (text) { trace_ds("'"); text = false; } trace_ds(" IC%s [ignored]\n", rcba(buffer_addr)); break; case ORDER_SBA: baddr = DECODE_BADDR(*(cp+1), *(cp+2)); trace_ds(" SBA%s [ignored]\n", rcba(baddr)); cp += 2; i += 2; break; case ORDER_GE: cp++; if (++i >= buflen) { break; } if (*cp <= 0x40) { c = EBC_space; } else { c = *cp; } if (text) { trace_ds("'"); text = false; } trace_ds(" GE '%s'", see_ebc(c)); ctlr_add(buffer_addr, c, CS_GE); ctlr_add_fg(buffer_addr, default_fg); ctlr_add_bg(buffer_addr, default_bg); ctlr_add_gr(buffer_addr, default_gr); ctlr_add_ic(buffer_addr, default_ic); INC_BA(buffer_addr); break; default: if (!text) { trace_ds(" '"); text = true; } trace_ds("%s", see_ebc(*cp)); ctlr_add(buffer_addr, *cp, default_cs); ctlr_add_fg(buffer_addr, default_fg); ctlr_add_bg(buffer_addr, default_bg); ctlr_add_gr(buffer_addr, default_gr); ctlr_add_ic(buffer_addr, default_ic); INC_BA(buffer_addr); break; } } if (text) { trace_ds("'"); } trace_ds("\n"); cursor_move(buffer_addr); sscp_start = buffer_addr; /* Unlock the keyboard. */ aid = AID_NO; do_reset(false); /* Let a blocked task go. */ task_host_output(); } /* * Determine the DBCS state of a buffer location strictly by looking left. * Used only to validate write operations. * Returns only DBCS_LEFT, DBCS_RIGHT or DBCS_NONE. * Also returns whether the location is part of a DBCS field (SFE with the * DBCS character set), DBCS subfield (to the right of an SO within a non-DBCS * field), or DBCS attribute (has the DBCS character set extended attribute * within a non-DBCS field). * * This function should be used only to determine the legality of adding a * DBCS or SBCS character at baddr. */ enum dbcs_state ctlr_lookleft_state(int baddr, enum dbcs_why *why) { int faddr; int fdist; int xaddr; bool si = false; #define AT_END(f, b) \ (((f) < 0 && (b) == ROWS*COLS - 1) || \ ((f) >= 0 && (b) == (f))) /* If we're not in DBCS state, everything is DBCS_NONE. */ if (!dbcs) { return DBCS_NONE; } /* Find the field attribute, if any. */ faddr = find_field_attribute(baddr); /* * First in precedence is a DBCS field. * DBCS SA and SO/SI inside a DBCS field are errors, but are considered * defective DBCS characters. */ if (ea_buf[faddr].cs == CS_DBCS) { *why = DBCS_FIELD; fdist = (baddr + ROWS*COLS) - faddr; return (fdist % 2)? DBCS_LEFT: DBCS_RIGHT; } /* * The DBCS attribute takes precedence next. * SO and SI can appear within such a region, but they are single-byte * characters which effectively split it. */ if (ea_buf[baddr].cs == CS_DBCS) { if (ea_buf[baddr].ec == EBC_so || ea_buf[baddr].ec == EBC_si) { return DBCS_NONE; } xaddr = baddr; while (!AT_END(faddr, xaddr) && ea_buf[xaddr].cs == CS_DBCS && ea_buf[xaddr].ec != EBC_so && ea_buf[xaddr].ec != EBC_si) { DEC_BA(xaddr); } *why = DBCS_ATTRIBUTE; fdist = (baddr + ROWS*COLS) - xaddr; return (fdist % 2)? DBCS_LEFT: DBCS_RIGHT; } /* * Finally, look for a SO not followed by an SI. */ xaddr = baddr; DEC_BA(xaddr); while (!AT_END(faddr, xaddr)) { if (ea_buf[xaddr].ec == EBC_si) { si = true; } else if (ea_buf[xaddr].ec == EBC_so) { if (si) { si = false; } else { *why = DBCS_SUBFIELD; fdist = (baddr + ROWS*COLS) - xaddr; return (fdist % 2)? DBCS_LEFT: DBCS_RIGHT; } } DEC_BA(xaddr); } /* Nada. */ return DBCS_NONE; } static bool valid_dbcs_char(unsigned char c1, unsigned char c2) { if (c1 >= 0x40 && c1 < 0xff && c2 >= 0x40 && c2 < 0xff) { return true; } if (c1 != 0x00 || c2 < 0x40 || c2 >= 0xff) { return false; } switch (c2) { case EBC_null: case EBC_nl: case EBC_em: case EBC_ff: case EBC_cr: case EBC_dup: case EBC_fm: return true; default: return false; } } /* * Post-process DBCS state in the buffer. * This has two purposes: * * - Required post-processing validation, per the data stream spec, which can * cause the write operation to be rejected. * - Setting up the value of the all the db fields in ea_buf. * * This function is called at the end of every 3270 write operation, and also * after each batch of NVT write operations. It could also be called after * significant keyboard operations, but that might be too expensive. * * Returns 0 for success, -1 for failure. */ int ctlr_dbcs_postprocess(void) { int baddr; /* current buffer address */ int faddr0; /* address of first field attribute */ int faddr; /* address of current field attribute */ int last_baddr; /* last buffer address to search */ int pbaddr = -1; /* previous buffer address */ int dbaddr = -1; /* first data position of current DBCS (sub-) field */ bool so = false, si = false; bool dbcs_field = false; int rc = 0; /* If we're not in DBCS mode, do nothing. */ if (!dbcs) { return 0; } /* * Find the field attribute for location 0. If unformatted, it's the * dummy at -1. Also compute the starting and ending points for the * scan: the first location after that field attribute. */ faddr0 = find_field_attribute(0); baddr = faddr0; INC_BA(baddr); if (faddr0 < 0) { last_baddr = 0; } else { last_baddr = faddr0; } faddr = faddr0; dbcs_field = (ea_buf[faddr].cs & CS_MASK) == CS_DBCS; do { if (ea_buf[baddr].fa) { faddr = baddr; ea_buf[faddr].db = DBCS_NONE; dbcs_field = (ea_buf[faddr].cs & CS_MASK) == CS_DBCS; if (dbcs_field) { dbaddr = baddr; INC_BA(dbaddr); } else { dbaddr = -1; } /* * An SI followed by a field attribute shouldn't be * displayed with a wide cursor. */ if (pbaddr >= 0 && ea_buf[pbaddr].db == DBCS_SI) { ea_buf[pbaddr].db = DBCS_NONE; } } else { switch (ea_buf[baddr].ec) { case EBC_so: /* Two SO's or SO in DBCS field are invalid. */ if (so || dbcs_field) { trace_ds("DBCS postprocess: invalid SO found at %s\n", rcba(baddr)); rc = -1; } else { dbaddr = baddr; INC_BA(dbaddr); } ea_buf[baddr].db = DBCS_NONE; so = true; si = false; break; case EBC_si: /* Two SI's or SI in DBCS field are invalid. */ if (si || dbcs_field) { trace_ds("Postprocess: Invalid SO found at %s\n", rcba(baddr)); rc = -1; ea_buf[baddr].db = DBCS_NONE; } else { ea_buf[baddr].db = DBCS_SI; } dbaddr = -1; si = true; so = false; break; default: /* Non-base CS in DBCS subfield is invalid. */ if (so && ea_buf[baddr].cs != CS_BASE) { trace_ds("DBCS postprocess: invalid character set found " "at %s\n", rcba(baddr)); rc = -1; ea_buf[baddr].cs = CS_BASE; } if ((ea_buf[baddr].cs & CS_MASK) == CS_DBCS) { /* Beginning or continuation of an SA DBCS subfield. */ if (dbaddr < 0) { dbaddr = baddr; } } else if (!so && !dbcs_field) { /* End of SA DBCS subfield. */ dbaddr = -1; } if (dbaddr >= 0) { /* Turn invalid characters into spaces, silently. */ if ((baddr + ROWS*COLS - dbaddr) % 2) { if (!valid_dbcs_char( ea_buf[pbaddr].ec, ea_buf[baddr].ec)) { ea_buf[pbaddr].ec = EBC_space; ea_buf[baddr].ec = EBC_space; } MAKE_RIGHT(baddr); } else { MAKE_LEFT(baddr); } } else { ea_buf[baddr].db = DBCS_NONE; } break; } } /* * Check for dead positions. * Turn them into NULLs, silently. */ if (pbaddr >= 0 && IS_LEFT(ea_buf[pbaddr].db) && !IS_RIGHT(ea_buf[baddr].db) && ea_buf[pbaddr].db != DBCS_DEAD) { if (!ea_buf[baddr].fa) { trace_ds("DBCS postprocess: dead position at %s\n", rcba(pbaddr)); rc = -1; } ea_buf[pbaddr].ec = EBC_null; ea_buf[pbaddr].db = DBCS_DEAD; } /* Check for SB's, which follow SIs. */ if (pbaddr >= 0 && ea_buf[pbaddr].db == DBCS_SI) { ea_buf[baddr].db = DBCS_SB; } /* Save this position as the previous and increment. */ pbaddr = baddr; INC_BA(baddr); } while (baddr != last_baddr); return rc; } /* * Process pending input. */ void ps_process(void) { while (run_ta()) ; /* Process file transfers. */ if (ft_state != FT_NONE && /* transfer in progress */ formatted && /* screen is formatted */ !screen_alt && /* 24x80 screen */ !kybdlock && /* keyboard not locked */ /* magic field */ ea_buf[1919].fa && FA_IS_SKIP(ea_buf[1919].fa)) { ft_cut_data(); } } /* * Tell me if there is any data on the screen. */ bool ctlr_any_data(void) { int i; if (ea_buf == NULL) { return false; } for (i = 0; i < ROWS*COLS; i++) { if (!IsBlank(ea_buf[i].ec) || (ea_buf[i].ucs4 != 0 && ea_buf[i].ucs4 != ' ' && ea_buf[i].ucs4 != 0x3000)) { return true; } } return false; } /* * Clear the text (non-status) portion of the display. Also resets the cursor * and buffer addresses and extended attributes. */ void ctlr_clear(bool can_snap) { /* Snap any data that is about to be lost into the trace file. */ if (ctlr_any_data()) { if (can_snap && !trace_skipping && toggled(SCREEN_TRACE)) { trace_screen(true); } scroll_save(maxROWS); } trace_skipping = false; /* Clear the screen. */ memset((char *)ea_buf, 0, ROWS*COLS*sizeof(struct ea)); ALL_CHANGED; cursor_move(0); buffer_addr = 0; unselect(0, ROWS*COLS); formatted = false; default_fg = 0; default_bg = 0; default_gr = 0; default_ic = 0; sscp_start = 0; } /* * Fill the screen buffer with blanks. */ static void ctlr_blanks(void) { int baddr; for (baddr = 0; baddr < maxROWS*maxCOLS; baddr++) { ea_buf[baddr].ec = EBC_space; } ALL_CHANGED; cursor_move(0); buffer_addr = 0; unselect(0, ROWS*COLS); formatted = false; } /* * Change a character in the 3270 buffer, EBCDIC mode. * Removes any field attribute defined at that location. */ void ctlr_add(int baddr, unsigned char c, unsigned char cs) { unsigned char oc = 0; if (ea_buf[baddr].fa || ea_buf[baddr].ucs4 || ((oc = ea_buf[baddr].ec) != c || ea_buf[baddr].cs != cs)) { if (trace_primed && !IsBlank(oc)) { if (toggled(SCREEN_TRACE)) { trace_screen(false); } scroll_save(maxROWS); trace_primed = false; } if (screen_selected(baddr)) { unselect(baddr, 1); } ONE_CHANGED(baddr); ea_buf[baddr].ec = c; ea_buf[baddr].cs = cs; ea_buf[baddr].fa = 0; ea_buf[baddr].ucs4 = 0; } } /* * Change a character in the 3270 buffer, NVT mode. * Removes any field attribute defined at that location. */ void ctlr_add_nvt(int baddr, ucs4_t ucs4, unsigned char cs) { if (ea_buf[baddr].fa || ea_buf[baddr].ucs4 != ucs4 || ea_buf[baddr].ec != 0 || ea_buf[baddr].cs != cs) { if (trace_primed && !IsBlank(ea_buf[baddr].ec)) { if (toggled(SCREEN_TRACE)) { trace_screen(false); } scroll_save(maxROWS); trace_primed = false; } if (screen_selected(baddr)) { unselect(baddr, 1); } ONE_CHANGED(baddr); ea_buf[baddr].ucs4 = ucs4; ea_buf[baddr].ec = 0; ea_buf[baddr].cs = cs; ea_buf[baddr].fa = 0; if (cs == CS_DBCS) { ea_buf[baddr].db = ucs4 == ' '? DBCS_RIGHT: DBCS_LEFT; } } } /* * Set a field attribute in the 3270 buffer. */ void ctlr_add_fa(int baddr, unsigned char fa, unsigned char cs) { /* Put a null in the display buffer. */ ctlr_add(baddr, EBC_null, cs); /* * Store the new attribute, setting the 'printable' bits so that the * value will be non-zero. */ ea_buf[baddr].fa = FA_PRINTABLE | (fa & FA_MASK); } /* * Change the character set for a field in the 3270 buffer. */ void ctlr_add_cs(int baddr, unsigned char cs) { if (ea_buf[baddr].cs != cs) { if (screen_selected(baddr)) { unselect(baddr, 1); } ONE_CHANGED(baddr); ea_buf[baddr].cs = cs; } } /* * Change the graphic rendition of a character in the 3270 buffer. */ void ctlr_add_gr(int baddr, unsigned char gr) { if (ea_buf[baddr].gr != gr) { if (screen_selected(baddr)) { unselect(baddr, 1); } ONE_CHANGED(baddr); ea_buf[baddr].gr = gr; if (gr & GR_BLINK) { blink_start(); } } } /* * Change the foreground color for a character in the 3270 buffer. */ void ctlr_add_fg(int baddr, unsigned char color) { if (!mode.m3279) { return; } if ((color & 0xf0) != 0xf0) { color = 0; } if (ea_buf[baddr].fg != color) { if (screen_selected(baddr)) { unselect(baddr, 1); } ONE_CHANGED(baddr); ea_buf[baddr].fg = color; } } /* * Change the background color for a character in the 3270 buffer. */ void ctlr_add_bg(int baddr, unsigned char color) { if (!mode.m3279) { return; } if ((color & 0xf0) != 0xf0) { color = 0; } if (ea_buf[baddr].bg != color) { if (screen_selected(baddr)) { unselect(baddr, 1); } ONE_CHANGED(baddr); ea_buf[baddr].bg = color; } } /* * Change the input control bit for a character in the 3270 buffer. */ static void ctlr_add_ic(int baddr, unsigned char ic) { ea_buf[baddr].ic = ic; } /* * Wrapping bersion of ctlr_bcopy. */ void ctlr_wrapping_memmove(int baddr_to, int baddr_from, int count) { /* * The 'to' region, the 'from' region, or both can wrap the screen, * and can overlap each other. memmove() is smart enough to deal with * overlaps, but not across a screen wrap. * * It's faster to figure out if none of this is true, then do a slow * location-at-a-time version only if it happens. */ if (baddr_from + count <= ROWS*COLS && baddr_to + count <= ROWS*COLS) { ctlr_bcopy(baddr_from, baddr_to, count, true); } else { int i, from, to; for (i = 0; i < count; i++) { if (baddr_to > baddr_from) { /* Shifting right, move left. */ to = (baddr_to + count - 1 - i) % ROWS*COLS; from = (baddr_from + count - 1 - i) % ROWS*COLS; } else { /* Shifting left, move right. */ to = (baddr_to + i) % ROWS*COLS; from = (baddr_from + i) % ROWS*COLS; } ctlr_bcopy(from, to, 1, true); } } } /* * Copy a block of characters in the 3270 buffer, optionally including all of * the extended attributes. (The character set, which is actually kept in the * extended attributes, is considered part of the characters here.) */ void ctlr_bcopy(int baddr_from, int baddr_to, int count, int move_ea) { /* Move the characters. */ if (memcmp((char *) &ea_buf[baddr_from], (char *) &ea_buf[baddr_to], count * sizeof(struct ea))) { memmove(&ea_buf[baddr_to], &ea_buf[baddr_from], count * sizeof(struct ea)); REGION_CHANGED(baddr_to, baddr_to + count); /* * For the time being, if any selected text shifts around on * the screen, unhighlight it. Eventually there should be * logic for preserving the highlight if the *all* of the * selected text moves. */ if (area_is_selected(baddr_to, count)) { unselect(baddr_to, count); } } /* XXX: What about move_ea? */ } /* * Erase a region of the 3270 buffer, optionally clearing extended attributes * as well. */ void ctlr_aclear(int baddr, int count, int clear_ea) { if (memcmp((char *)&ea_buf[baddr], (char *)zero_buf, count * sizeof(struct ea))) { memset((char *) &ea_buf[baddr], 0, count * sizeof(struct ea)); REGION_CHANGED(baddr, baddr + count); if (area_is_selected(baddr, count)) { unselect(baddr, count); } } /* XXX: What about clear_ea? */ } /* * Scroll the screen 1 row. * * This could be accomplished with ctlr_bcopy() and ctlr_aclear(), but this * operation is common enough to warrant a separate path. */ void ctlr_scroll(unsigned char fg, unsigned char bg) { int qty = (ROWS - 1) * COLS; bool obscured; int i; /* Make sure nothing is selected. (later this can be fixed) */ unselect(0, ROWS*COLS); /* Synchronize pending changes prior to this. */ obscured = screen_obscured(); if (!obscured && screen_changed) { screen_disp(false); } /* Move ea_buf. */ memmove(&ea_buf[0], &ea_buf[COLS], qty * sizeof(struct ea)); /* Clear the last line. */ memset((char *) &ea_buf[qty], 0, COLS * sizeof(struct ea)); if ((fg & 0xf0) != 0xf0) { fg = 0; } if ((bg & 0xf0) != 0xf0) { bg = 0; } for (i = 0; i < COLS; i++) { ea_buf[qty + i].fg = fg; ea_buf[qty + i].bg = bg; } /* Update the screen. */ if (obscured) { ALL_CHANGED; } else { screen_scroll(fg, bg); } } /* * Note that a particular region of the screen has changed. */ void ctlr_changed(int bstart, int bend) { REGION_CHANGED(bstart, bend); } /* * Swap the regular and alternate screen buffers */ void ctlr_altbuffer(bool alt) { struct ea *etmp; if (alt != is_altbuffer) { etmp = ea_buf; ea_buf = aea_buf; aea_buf = etmp; is_altbuffer = alt; ALL_CHANGED; unselect(0, ROWS*COLS); /* * There may be blinkers on the alternate screen; schedule one * iteration just in case. */ blink_start(); } } /* * Set or clear the MDT on an attribute */ void mdt_set(int baddr) { int faddr; faddr = find_field_attribute(baddr); if (faddr >= 0 && !(ea_buf[faddr].fa & FA_MODIFY)) { ea_buf[faddr].fa |= FA_MODIFY; if (appres.modified_sel) { ALL_CHANGED; } } } void mdt_clear(int baddr) { int faddr; faddr = find_field_attribute(baddr); if (faddr >= 0 && (ea_buf[faddr].fa & FA_MODIFY)) { ea_buf[faddr].fa &= ~FA_MODIFY; if (appres.modified_sel) { ALL_CHANGED; } } } /* * Support for screen-size swapping for scrolling */ void ctlr_shrink(void) { int baddr; for (baddr = 0; baddr < ROWS*COLS; baddr++) { if (!ea_buf[baddr].fa) { ea_buf[baddr].ec = visible_control? EBC_space : EBC_null; } } ALL_CHANGED; screen_disp(false); } /* * DBCS state query. * Returns: * DBCS_NONE: Buffer position is SBCS. * DBCS_LEFT: Buffer position is left half of a DBCS character. * DBCS_RIGHT: Buffer position is right half of a DBCS character. * DBCS_SI: Buffer position is the SI terminating a DBCS subfield (treated * as DBCS_LEFT for wide cursor tests) * DBCS_SB: Buffer position is an SBCS character after an SI (treated as * DBCS_RIGHT for wide cursor tests) * * Takes line-wrapping into account, which probably isn't done all that well. */ enum dbcs_state ctlr_dbcs_state_ea(int baddr, struct ea *ea) { return (ea[baddr].ucs4 || dbcs)? ea[baddr].db: DBCS_NONE; } enum dbcs_state ctlr_dbcs_state(int baddr) { return ctlr_dbcs_state_ea(baddr, ea_buf); } /* * Transaction timing. The time between sending an interrupt (PF, PA, Enter, * Clear) and the host unlocking the keyboard is indicated on the status line * to an accuracy of 0.1 seconds. If we don't repaint the screen before we see * the unlock, the time should be fairly accurate. */ static struct timeval t_start; static bool ticking = false; static bool mticking = false; static bool ticking_anyway = false; static ioid_t tick_id; static struct timeval t_want; /* Return the difference in milliseconds between two timevals. */ static long delta_msec(struct timeval *t1, struct timeval *t0) { return (t1->tv_sec - t0->tv_sec) * 1000 + (t1->tv_usec - t0->tv_usec + 500) / 1000; } static void keep_ticking(ioid_t id _is_unused) { struct timeval t1; long msec; do { gettimeofday(&t1, NULL); t_want.tv_sec++; msec = delta_msec(&t_want, &t1); } while (msec <= 0); tick_id = AddTimeOut(msec, keep_ticking); vstatus_timing(&t_start, &t1); } void ticking_start(bool anyway) { gettimeofday(&t_start, NULL); mticking = true; vstatus_untiming(); if (ticking) { RemoveTimeOut(tick_id); } ticking = true; ticking_anyway = anyway; tick_id = AddTimeOut(1000, keep_ticking); t_want = t_start; } static void ticking_stop(struct timeval *tp) { struct timeval t1; unsigned long cs; if (tp == NULL) { gettimeofday(&t1, NULL); tp = &t1; } if (mticking) { mticking = false; } else { return; } if (!ticking) { return; } RemoveTimeOut(tick_id); ticking = false; if (toggled(SHOW_TIMING) || ticking_anyway) { vstatus_timing(&t_start, tp); } cs = ((tp->tv_sec - t_start.tv_sec) * 1000000L) + (tp->tv_usec - t_start.tv_usec); vtrace("Host %s took %ld.%06lds to complete\n", ticking_anyway? "negotiation step": "operation", cs / 1000000L, cs % 1000000L); ticking_anyway = false; } /* * Queries. */ const char * ctlr_query_cur_size(void) { return lazyaf("rows %u columns %u", ROWS, COLS); } const char * ctlr_query_cur_size_old(void) { return lazyaf("%u %u", ROWS, COLS); } const char * ctlr_query_cursor(void) { return lazyaf("%u %u", cursor_addr / COLS, cursor_addr % COLS); } const char * ctlr_query_cursor1(void) { return lazyaf("row %u column %u offset %u", (cursor_addr / COLS) + 1, (cursor_addr % COLS) + 1, cursor_addr); } const char * ctlr_query_formatted(void) { return formatted? "formatted": "unformatted"; } const char * ctlr_query_max_size(void) { return lazyaf("rows %u columns %u", maxROWS, maxCOLS); } const char * ctlr_query_max_size_old(void) { return lazyaf("%u %u", maxROWS, maxCOLS); } /* * Cursor enable/disable. */ void ctlr_enable_cursor(bool enable, unsigned source) { static unsigned disables = 0; int new_disables; static const char *source_name[] = { NULL, "scroll", "nvt", NULL, "connect" }; vtrace("ctlr_enable_cursor(%s, %s)\n", enable? ResTrue: ResFalse, source_name[source]); /* Compute the new disable mask. */ if (enable) { new_disables = disables & ~source; } else { new_disables = disables | source; } if (!!disables ^ !!new_disables) { /* Overall state change. */ enable_cursor(!new_disables); } disables = new_disables; } suite3270-4.1/Common/event.c000066400000000000000000000113641413735575200155610ustar00rootroot00000000000000/* * Copyright (c) 1993-2015, 2019-2020 Paul Mattes. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the names of Paul Mattes nor the names of his contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO * EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * event.c * Event propagation. */ #include "globals.h" #include "telnet.h" #include "trace.h" #include "utils.h" typedef struct st_callback { llist_t list; schange_callback_t *func; unsigned short order; } st_callback_t; llist_t st_callbacks[N_ST]; static bool schange_initted = false; /* Callback initialization. */ static void init_schange(void) { if (!schange_initted) { int i; for (i = 0; i < N_ST; i++) { llist_init(&st_callbacks[i]); } schange_initted = true; } } /* * Register a function with a particular order. * 'order' can be: * ORDER_DONTCARE (65534) insert anywhere (will actually queue up before * any 'last') * ORDER_LAST (65535) insert last (the order of multiple 'lasts' is * undefined) * 0 through 65533 specific ordering */ void register_schange_ordered(enum st tx, schange_callback_t *func, unsigned short order) { st_callback_t *st; st_callback_t *before; /* Get the lists set up. */ init_schange(); st = (struct st_callback *)Malloc(sizeof(*st)); llist_init(&st->list); st->func = func; st->order = order; FOREACH_LLIST(&st_callbacks[tx], before, st_callback_t *) { if (order < before->order) { llist_insert_before(&st->list, &before->list); return; } } FOREACH_LLIST_END(&st_callbacks[tx], before, st_callback_t *); /* Put it at the end. */ LLIST_APPEND(&st->list, st_callbacks[tx]); } /* Register a function interested in a state change. */ void register_schange(enum st tx, schange_callback_t *func) { register_schange_ordered(tx, func, ORDER_DONTCARE); } /* Signal a state change. */ void st_changed(enum st tx, bool mode) { static const char *st_name[N_ST] = { "negotiating", "connect", "3270-mode", "line-mode", "remodel", "printer", "exiting", "codepage", "selecting", "secure", "kbd-disable", "terminal-name" }; struct st_callback *st; vtrace("st_changed(%s,%s)\n", st_name[tx], mode? "true": "false"); FOREACH_LLIST(&st_callbacks[tx], st, st_callback_t *) { (*st->func)(mode); } FOREACH_LLIST_END(&st_callbacks[tx], st, st_callback_t *); } /* Change connection state. */ void change_cstate(enum cstate new_cstate, const char *why) { enum cstate old_cstate = cstate; if (old_cstate == new_cstate) { return; } vtrace("cstate [%s] -> [%s] (%s)\n", state_name[cstate], state_name[new_cstate], why); cstate = new_cstate; /* Handle connected/not connected separately. */ if (cCONNECTED(old_cstate) != cCONNECTED(new_cstate) || cPCONNECTED(old_cstate) != cPCONNECTED(new_cstate)) { st_changed(ST_CONNECT, PCONNECTED); } switch (new_cstate) { case RESOLVING: case TCP_PENDING: case TLS_PENDING: case PROXY_PENDING: case TELNET_PENDING: st_changed(ST_NEGOTIATING, true); break; case CONNECTED_E_NVT: case CONNECTED_NVT: case CONNECTED_NVT_CHAR: st_changed(ST_LINE_MODE, cstate == CONNECTED_NVT || cstate == CONNECTED_E_NVT); /* fall through... */ case CONNECTED_3270: case CONNECTED_TN3270E: case CONNECTED_UNBOUND: case CONNECTED_SSCP: if (new_cstate == CONNECTED_UNBOUND) { st_changed(ST_NEGOTIATING, true); } st_changed(ST_3270_MODE, IN_3270); break; default: break; } } suite3270-4.1/Common/favicon.ico000066400000000000000000000310761413735575200164170ustar00rootroot00000000000000@@(2(@€2•¦²­·”¥±}Ÿ…˜¥yœr‡–Yn~e}Žbz‹bz‹bz‹hi€s‰™†š§·Âʤ°º“¢­{]t„Zp“¡t‰˜oƒ’s‡–r‡–r‡–n„”ay‰[t…bzŠd|j‘i‘ay‰m…”n…”rˆ˜u‹švŒœvŒ›wsŠšz†™¦£®·™£s…“Xn~DWgCVfShxYoXn\s„Yq‚]u…^v‡ax‰bzŠhg~f~Žhj€‘n…•m…”q‡—sŠ™xŽ}’¡…™§Šž«‚–¥Šž¬¡®“¦³”¦´’¥²•¨µ–¥sŠ™r‰˜rˆ˜o†•ƒ—¤†˜¤JarF]nH_qJbsQizRj{byŠf}Že|Œhi€p†•uŠ™yŽzŸ”¢•¤€•£}’¢~“¢‚—¥‚—¥‚—¦†š©ˆª‹ž¬‹Ÿ¬Ž¢¯Šž¬„˜§Ž¢¯£±‘¤±¢°“¥³‘¤²u‹›qˆ˜vŒœvŒ›wŒœ˜¨µ¯¼Å’¤¯g}iŽk‚’mƒ“tŠ™xŽœ„™§†›¨‡›©‡›©ˆœª‹ž¬‹Ÿ¬‡›ª„™§‚—¦„˜§€•¤€•¤~”£~”£{‘ |‘ |‘ –¥”£”£„™§†š©„˜§…™¨Ž¡¯‹ž­Šž­Ž¡¯–¨µŠž«uŠš~“¢–¥€•¤|‘¡†š¨“¦²½ÈÏ´ÁÊŽ¢¯¢°Ž¢¯£±“¥³’¥²’¦²”§´’¥³¡¯‹ž­‡œª€•¤zŸvŒœxŽvŒœsŠ™u‹št‰˜wtŠ™s‡–s…“yŠ—x‰–{Œ˜y‹—s…’i|ŠWgtz‹—Šž¬…˜¦†˜¤‹›¥’¥²…™§| †š©‡›©…™¨„˜§Šž¬’¥²¨¹Ã—ª·“¦³’¥²“¦³”§´’¥³Ž¡¯žª…—£‚”¡}s‡•k€eyˆ^p}SeqJ[iQbn7EP1;D!-6*      !+4>MZ *4& VeqŠ«{Ÿ€”£Œ ­¡®‹Ÿ­¡¯Ž¢°ÃÎÕ°¾È”¦³Ž¡¯’¦³˜ª·’¥³•§´]go8@I8>G;CJ.8A%/8&0"#&&!*&0".93@J;HQHVbTbm$,4   '*3;  " !!*Tbm„™¨~“¢ˆœªŽ¡¯¡¯”§´•¨µ¾Éѯ½Ç¡®•¨µ„• ZjuNZc$.7  KZf/9C&-!+5.;G8DNBOZK[hPcq_rhz‡kŒvŠ˜„—¤ŒŸ«œ®¹ž°¼}Š“P\fXcl+4=&/ !% $qƒ‘‰¬…™§¡¯£°˜«·›­¹‘ «©¸Â“¦³fqz  ",  fu€†–¡‚•¡”¢‡š¨…™¦ƒ—¦„˜¦‚—¥‰«¡¯“¦³—ª¶™«· ±¼£´À¦·Â¬¼Æ­½Ç·ÅÌQW]#/;E&# 9DLŠªŠž¬†›©¢°’¥³•¦³K`p€“Ÿœ®¸„”ž!)2 "-'2$+1;?BŠš¥œ®»—ª¶“¦³¢°¢°£°£±•¨µ—ª·—ª·¯º ±½Ÿ±½¢²¾¦·Á®¿È±ÁÊ‚Ž– &+7A ) **4=}‘ž£°‡œ©ˆœª¡¯Œž«CVeo†–„™¦‰œ©³ÀÈ„’œ8@I %1*6"*18u…¢´Àœ®º”§³“¥²¢¯ŒŸ­ŒŸ¬Ž¡®¡®¢¯“¥±’¤±–§³¡­‘¡¬”¤¯’Ÿw…‘-9C#.71>H*7C+)!)1?Iq…“Ž¢°‰ªˆ«’ G2;C-7?$.7*4%$  3@L~’Ÿ‘¥²†›©p‚6K\d{Œc{‹e}h€t‹š—©´P[d:CL+7A%.")%             8FQu…’s„‘GXf;O_e}e|Œd|Œf~Ži€l„“s‰™u‰˜.5; *            ! $ "    *#1="0<,;AVff~Že|hi€‘hj‘lƒ“j€u‰—|œŸ¤¨=DK)1$,4$-)$/*6 .:)5*6.<"3A$5C$6D&8E&8F%7F':I"2A#4C 1A,;+:)9*9 .,&&))!0"0%4Mcsh€i€‘lƒ’i€‘j’lƒ“k‚’k‚’e}Ž`w‡ž§­o|…–¢zˆ’YlzRfvRiyE\n?Vh9Pb7N`6L^5K].DU,BS-CT.CU/EV*?P)=O$8I"5E.?*9'6-*& $ " "'+!/Ndslƒ“k‚’m„”k‚’m„”n…”lƒ“k‚’i€]u†g|‹…˜¦e}Ž[s„Um~H`rE[m>Ug8N`4J\4J\0FW+AR.CT/EV-CT)=N';L%8I"5F-=&4!/) '  ! "  " # $Mbrkƒ’m„“lƒ’lƒ“k‚’n…•m„”j’g^v‡ezŠ€•£d|ŒTl}OgyF^pBYk=Tf8Oa4K\3J[.CU,AS/DU/EV)=N%9J%8I%8I$7H1B&6 -' ! !      !Tjzkƒ’lƒ“n…•o†•lƒ“n…•lƒ“he|Œax‰aw‡}‘ `xˆKcuKbtAXj,<"/) $ &   "   "^u„n…•m„”o†–p‡—n…”p‡—m„”hg~bz‹_u†”¢_u†QgyQi{JbsG^pF^oC[m;Rd9Oa6M^4J\5L^/EV(=N&:K%:K';L#7H 3C0@(6%4 - - -,!/+!.9?N\p‡–r‰˜p‡—n…•p‡—p‡—q‡—o†–j‘hayŠwŒšˆ›¨cyˆbxˆ`wˆXp€NfwLctE\m>Uf=Se:Pb4J\3J\/DV*?P';K%9I(0@#4C4HW`u…v‹švŒœt‹šr‰™qˆ˜qˆ—o†–m„”m„”k‚’hc{Œ„—¤h}‹F[lCWh?Te>Te:O`>TdDYjLbsLbrQfwWm}^u…\r‚Wm~Xo~Wm}Zp€Uk|NeuI`q@Ug?Ug?Vg6K]7K\I`pd{Šrˆ˜wxŽt‹šsŠ™t‹šuŒ›rˆ˜lƒ“j‘mƒ“j‘i€‘e~Žz𢱼ˆ›¨” q„’n€Žqƒ‘zŒ™’Ÿˆ™¦Œž«¡­¡­¢®¡­ŽŸª‹›§ˆ™¥‰š¥‰š¦Šœ¨†™¥†™¦…˜¥€”¡xŒšm‚’Um}e{‹u‹šzŸyŸxŽxu‹št‹štŠšwt‹šlƒ“j‘l‚’j‚‘f~Žc{‹yŒ™°À̵ÄΨ¹Ä—¦°‰•u„Ž_kuY`f^di^dh]dhV]bQY`JSYDOV=GN7>D4:@29C4;D5Dª»ÇªºÅ¨¸Ã¤µÀŸ²½œ¯»š¬¸˜«·•©µ—©¶’¥³¢°Œ ®Šž¬ˆœ«‡œª‡›ª‚–¥wœ).4      "                 ?DI§¸ÃªºÄ©¹Ä¦·Á¡²¾ž°¼˜ª·˜«·–ª¶–¨µ’¥²Ž¢¯‹Ÿ­Šž¬Š¬Šž«†š©ƒ—¦zž).4      "                   CIL¥·Â«¼ÅªºÄ¦¶Á¢³¾Ÿ±¼œ®º™«·”§´•§´‘¤±¢¯ŠŸ­‹ ­Šž¬ˆœ«–¤‚—¥}’¡'+0     # -:@)             Xci¨ºÅ­½ÇªºÅ¨¹Ã£´¿ž°»Ÿ±½™«·’¥³”§´“¦³¢° ®Œ ®Šž¬…š©‚—¥€”¤xž'+0     ! + $80                ju}¨¹Ä®¾ÈªºÄ¨¹Ä¤µÁŸ²½ž°¼™¬¸“¦³•§´“¦³‘¤²£°Ž¢¯ŒŸ®‰¬‡›©“£r‰˜¸ÃÌ)17      # .:              u†¤µÁ®¾ÈªºÄ¨¹Ä¤µÀ¡³¾®º™¬¸“¦³”¦³“¥²“¦³‘¤± ®Šž­ˆœª…™¨“£vŒ›¼ÆÏ+4<        5 &              x…Ž£µÀ­½ÇªºÄ¨¸Ã£´À ±½¯»š¬¸”§´“¦³”§´”§´‘¤²¢°ˆ«†›©ƒ˜¦~”£u‹›ºÅÍ6@G                &‰™£¥¶Á­½ÈªºÅ§¸Ã¤µÀ¡²¾¯»™«·”§´”§´“¦³•¨µ”§´’¥²Œ ®ˆœªƒ—¦”£x¼ÇÏ1: PA(1)\n\ Alt 2: PA(2)\n\ Alt 3: PA(3)\n\ Alt ^: Key(notsign)\n\ Ctrl c: Copy()\n\ Alt k: Keypad()\n\ Alt K: Keypad()\n\ Alt l: Redraw()\n\ Alt L: Redraw()\n\ Alt m: Compose()\n\ Alt M: Compose()\n\ Alt n: Menu()\n\ Alt N: Menu()\n\ Alt p: PrintText()\n\ Alt P: PrintText()\n\ Alt q: Quit()\n\ Alt Q: Quit()\n\ Ctrl v: Paste()\n\ Ctrl x: Cut()\n\ Ctrl ]: Escape()\n\ Shift F1: PF(13)\n\ Shift F2: PF(14)\n\ Shift F3: PF(15)\n\ Shift F4: PF(16)\n\ Shift F5: PF(17)\n\ Shift F6: PF(18)\n\ Shift F7: PF(19)\n\ Shift F8: PF(20)\n\ Shift F9: PF(21)\n\ Shift F10: PF(22)\n\ Shift F11: PF(23)\n\ Shift F12: PF(24)\n\ Shift ESCAPE: Key(0x1d)\n\ PRIOR: Scroll(backward)\n\ NEXT: Scroll(forward) keymap.base.3270: \n\ Ctrl a: Attn()\n\ Alt a: Attn()\n\ Alt A: Attn()\n\ Alt c: Clear()\n\ Alt C: Clear()\n\ Ctrl d: Dup()\n\ Alt d: Dup()\n\ Alt D: Dup()\n\ Ctrl f: FieldMark()\n\ Alt f: FieldMark()\n\ Alt F: FieldMark()\n\ Ctrl h: Erase()\n\ Alt i: Set(insertMode,true)\n\ Alt I: Set(insertMode,true)\n\ Ctrl i: Tab()\n\ Ctrl j: Newline()\n\ Ctrl l: Redraw()\n\ Ctrl m: Enter()\n\ Ctrl r: Reset()\n\ Alt r: Reset()\n\ Alt R: Reset()\n\ Ctrl u: DeleteField()\n\ INSERT: Toggle(insertMode)\n\ Shift TAB: BackTab()\n\ BACK: Erase()\n\ Shift END: EraseEOF()\n\ END: FieldEnd()\n\ Shift RIGHT: SelectRight()\n\ Ctrl RIGHT: NextWord()\n\ Shift LEFT: SelectLeft()\n\ Ctrl LEFT: PreviousWord()\n\ Shift UP: SelectUp()\n\ Shift DOWN: SelectDown() ! wc3270 keymap for more 3270-ish behavior: The Enter key is Newline and the ! Right-Ctrl key is Enter. x3270.keymap.rctrl.3270: \ RightCtrlCTRL: Enter()\n\ Return: Newline() ! Support for right-to-left languages. x3270.keymap.righttoleft: \ Alt v: Toggle(reverseInputMode)\n\ Alt x: Toggle(rightToLeftMode) #else x3270.keymap.base: \n\ Ctrl]: Escape()\n\ Escape: Escape()\n\ Ctrla Ctrla: Key(0x01)\n\ Ctrla Ctrl]: Key(0x1d)\n\ Ctrla c: Clear()\n\ Ctrla e: Escape()\n\ Ctrla i: Set(insertMode,true)\n\ Ctrla r: Reset()\n\ Ctrla k: Keypad()\n\ Ctrla l: Redraw()\n\ Ctrla m: Compose()\n\ Ctrla n: Menu()\n\ Ctrla p: PrintText()\n\ Ctrla q: Quit()\n\ Ctrla ^: Key(notsign)\n\ DC: Delete()\n\ UP: Up()\n\ DOWN: Down()\n\ LEFT: Left()\n\ RIGHT: Right()\n\ HOME: Home()\n\ Ctrla 1: PA(1)\n\ Ctrla 2: PA(2)\n\ Ctrla 3: PA(3)\n\ F1: PF(1)\n\ Ctrla F1: PF(13)\n\ F2: PF(2)\n\ Ctrla F2: PF(14)\n\ F3: PF(3)\n\ Ctrla F3: PF(15)\n\ F4: PF(4)\n\ Ctrla F4: PF(16)\n\ F5: PF(5)\n\ Ctrla F5: PF(17)\n\ F6: PF(6)\n\ Ctrla F6: PF(18)\n\ F7: PF(7)\n\ Ctrla F7: PF(19)\n\ F8: PF(8)\n\ Ctrla F8: PF(20)\n\ F9: PF(9)\n\ Ctrla F9: PF(21)\n\ F10: PF(10)\n\ Ctrla F10: PF(22)\n\ F11: PF(11)\n\ Ctrla F11: PF(23)\n\ F12: PF(12)\n\ Ctrla F12: PF(24)\n\ PPAGE: Scroll(backward)\n\ NPAGE: Scroll(forward) x3270.keymap.base.3270: \n\ Ctrla a: Attn()\n\ Ctrla Ctrli: BackTab()\n\ Ctrlc: Clear()\n\ Ctrld: Dup()\n\ Ctrlf: FieldMark()\n\ Ctrlh: Erase()\n\ Ctrli: Tab()\n\ Ctrlj: Newline()\n\ Ctrlk: Keypad()\n\ Ctrll: Redraw()\n\ Ctrlm: Enter()\n\ Ctrln: Menu()\n\ Ctrlr: Reset()\n\ Ctrlu: DeleteField()\n\ IC: Toggle(insertMode)\n\ BACKSPACE: Erase()\n\ END: FieldEnd() ! Support for right-to-left languages. x3270.keymap.righttoleft: \ Ctrla v: Toggle(reverseInputMode)\n\ Ctrla f: Toggle(rightToLeftMode) #endif ! (_WIN32) suite3270-4.1/Common/fb-common000066400000000000000000000051051413735575200160700ustar00rootroot00000000000000! ! Copyright (c) 1995-2015, 2021 Paul Mattes. ! All rights reserved. ! ! Redistribution and use in source and binary forms, with or without ! modification, are permitted provided that the following conditions are met: ! * Redistributions of source code must retain the above copyright ! notice, this list of conditions and the following disclaimer. ! * Redistributions in binary form must reproduce the above copyright ! notice, this list of conditions and the following disclaimer in the ! documentation and/or other materials provided with the distribution. ! * Neither the names of Paul Mattes nor the names of his contributors ! may be used to endorse or promote products derived from this software ! without specific prior written permission. ! ! THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS OR IMPLIED ! WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF ! MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO ! EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ! SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, ! PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; ! OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, ! WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR ! OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ! ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ! ! ! Common resource definitions ! ! Messages for file transfer x3270.message.ftComplete: Transfer complete, %i bytes transferred\n\ %sbytes/sec in %s mode x3270.message.ftUnable: Cannot begin transfer x3270.message.ftStartTimeout: Transfer did not start within 30s x3270.message.ftUserCancel: Transfer cancelled by user x3270.message.ftHostCancel: Transfer cancelled by host x3270.message.ftCutUnknownFrame: Unknown frame type from host x3270.message.ftCutUnknownControl: Unknown FT control code from host x3270.message.ftCutRetransmit: Transmission error x3270.message.ftCutConversionError: Data conversion error x3270.message.ftCutOversize: Illegal frame length x3270.message.ftDisconnected: Host disconnected, transfer cancelled x3270.message.ftNot3270: Not in 3270 mode, transfer cancelled x3270.message.ftDftUnknownOpen: Unknown DFT Open type from host ! Reasons that File transfer cannot start x3270.message.ftUnableLocked: keyboard locked x3270.message.ftUnableNot3270: not in 3270 mode x3270.message.ftUnableNoField: no input field x3270.message.ftUnableTooSmall: input field too small suite3270-4.1/Common/fb-composeMap000066400000000000000000000104621413735575200167050ustar00rootroot00000000000000! ! Copyright (c) 1995-2015, Paul Mattes. ! All rights reserved. ! ! Redistribution and use in source and binary forms, with or without ! modification, are permitted provided that the following conditions are met: ! * Redistributions of source code must retain the above copyright ! notice, this list of conditions and the following disclaimer. ! * Redistributions in binary form must reproduce the above copyright ! notice, this list of conditions and the following disclaimer in the ! documentation and/or other materials provided with the distribution. ! * Neither the names of Paul Mattes nor the names of his contributors ! may be used to endorse or promote products derived from this software ! without specific prior written permission. ! ! THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS OR IMPLIED ! WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF ! MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO ! EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ! SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, ! PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; ! OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, ! WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR ! OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ! ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ! ! Default compose-key map. ! Each line is of the form "keysym1 + keysym2 = keysym3", meaning "when the ! Compose key is pressed, followed by keysym1 and keysym2 (in either order), ! interpret it as keysym3." The definitions are case-sensitive. x3270.composeMap.latin1: \ c + bar = cent \n\ c + slash = cent \n\ L + minus = sterling \n\ Y + equal = yen \n\ S + S = section \n\ C + O = copyright \n\ a + underscore = ordfeminine \n\ less + less = guillemotleft \n\ R + O = registered \n\ plus + minus = plusminus \n\ o + underscore = masculine \n\ greater + greater = guillemotright \n\ 1 + 4 = onequarter \n\ 1 + 2 = onehalf \n\ 3 + 4 = threequarters \n\ bar + bar = brokenbar \n\ A + grave = Agrave \n\ A + apostrophe = Aacute \n\ A + asciicircum = Acircumflex \n\ A + asciitilde = Atilde \n\ A + quotedbl = Adiaeresis \n\ A + asterisk = Aring \n\ A + E = AE \n\ C + comma = Ccedilla \n\ C + apostrophe = Ccedilla \n\ E + grave = Egrave \n\ E + apostrophe = Eacute \n\ E + asciicircum = Ecircumflex \n\ E + quotedbl = Ediaeresis \n\ I + grave = Igrave \n\ I + apostrophe = Iacute \n\ I + asciicircum = Icircumflex \n\ I + quotedbl = Idiaeresis \n\ N + asciitilde = Ntilde \n\ O + grave = Ograve \n\ O + apostrophe = Oacute \n\ O + asciicircum = Ocircumflex \n\ O + asciitilde = Otilde \n\ O + quotedbl = Odiaeresis \n\ O + slash = Ooblique \n\ U + grave = Ugrave \n\ U + apostrophe = Uacute \n\ U + asciicircum = Ucircumflex \n\ U + quotedbl = Udiaeresis \n\ Y + apostrophe = Yacute \n\ s + s = ssharp \n\ a + grave = agrave \n\ a + apostrophe = aacute \n\ a + asciicircum = acircumflex \n\ a + asciitilde = atilde \n\ a + quotedbl = adiaeresis \n\ a + asterisk = aring \n\ a + e = ae \n\ c + comma = ccedilla \n\ c + apostrophe = ccedilla \n\ e + grave = egrave \n\ e + apostrophe = eacute \n\ e + asciicircum = ecircumflex \n\ e + quotedbl = ediaeresis \n\ i + grave = igrave \n\ i + apostrophe = iacute \n\ i + asciicircum = icircumflex \n\ i + quotedbl = idiaeresis \n\ n + asciitilde = ntilde \n\ o + grave = ograve \n\ o + apostrophe = oacute \n\ o + asciicircum = ocircumflex \n\ o + asciitilde = otilde \n\ o + quotedbl = odiaeresis \n\ o + slash = oslash \n\ u + grave = ugrave \n\ u + apostrophe = uacute \n\ u + asciicircum = ucircumflex \n\ u + quotedbl = udiaeresis \n\ y + apostrophe = yacute \n\ y + quotedbl = ydiaeresis \n\ apostrophe + apostrophe = apostrophe \n\ apostrophe + space = apostrophe \n\ asciicircum + asciicircum = asciicircum \n\ asciicircum + space = asciicircum \n\ asciitilde + asciitilde = asciitilde \n\ asciitilde + space = asciitilde \n\ grave + grave = grave \n\ grave + space = grave \n\ quotedbl + quotedbl = quotedbl \n\ quotedbl + space = quotedbl \n suite3270-4.1/Common/fb-messages000066400000000000000000000066021413735575200164120ustar00rootroot00000000000000! ! Copyright (c) 1995-2015, 2017-2019 Paul Mattes. ! All rights reserved. ! ! Redistribution and use in source and binary forms, with or without ! modification, are permitted provided that the following conditions are met: ! * Redistributions of source code must retain the above copyright ! notice, this list of conditions and the following disclaimer. ! * Redistributions in binary form must reproduce the above copyright ! notice, this list of conditions and the following disclaimer in the ! documentation and/or other materials provided with the distribution. ! * Neither the names of Paul Mattes nor the names of his contributors ! may be used to endorse or promote products derived from this software ! without specific prior written permission. ! ! THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS OR IMPLIED ! WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF ! MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO ! EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ! SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, ! PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; ! OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, ! WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR ! OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ! ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ! ! Common interactive messages (x3270, c3270) x3270.message.hour: hour x3270.message.hours: hours x3270.message.minute: minute x3270.message.minutes: minutes x3270.message.bindPluName: BIND PLU name: x3270.message.byte: byte x3270.message.bytes: bytes x3270.message.charMode: NVT character mode x3270.message.columns: columns x3270.message.connectedTo: Connected to: x3270.message.connectionPending: Connection pending to: x3270.message.dbcsCgcsgid: Host DBCS CGCSGID: x3270.message.defaultCharacterSet: Default (us) EBCDIC character set x3270.message.dsMode: 3270 mode x3270.message.extendedDs: extended data stream x3270.message.fullColor: color x3270.message.keyboardMap: Keyboard map: x3270.message.lineMode: NVT line mode x3270.message.localeCodeset: Locale codeset: x3270.message.luName: LU name: x3270.message.model: Model x3270.message.mono: monochrome x3270.message.reconnecting: Reconnection pending x3270.message.notConnected: Not connected x3270.message.port: Port: x3270.message.provider: Provider: x3270.message.proxyType: Proxy type: x3270.message.Received: Received x3270.message.received: received x3270.message.record: record x3270.message.rows: rows x3270.message.sbcsCgcsgid: Host SBCS CGCSGID: x3270.message.records: records x3270.message.second: second x3270.message.seconds: seconds x3270.message.secure: via TLS/SSL x3270.message.sent: Sent x3270.message.server: Server: x3270.message.serverCert: Host certificate: x3270.message.sessionInfo: Session information: x3270.message.specialCharacters: Special characters: x3270.message.sscpMode: SSCP-LU mode x3270.message.standardDs: standard data stream x3270.message.terminalName: Terminal name: x3270.message.tn3270eNoOpts: No TN3270E options x3270.message.tn3270eOpts: TN3270E options: x3270.message.unboundMode: unbound mode x3270.message.unverified: unverified x3270.message.user: User: suite3270-4.1/Common/fb-printSession000066400000000000000000000037371413735575200173110ustar00rootroot00000000000000! ! Copyright (c) 1995-2015, 2020 Paul Mattes. ! All rights reserved. ! ! Redistribution and use in source and binary forms, with or without ! modification, are permitted provided that the following conditions are met: ! * Redistributions of source code must retain the above copyright ! notice, this list of conditions and the following disclaimer. ! * Redistributions in binary form must reproduce the above copyright ! notice, this list of conditions and the following disclaimer in the ! documentation and/or other materials provided with the distribution. ! * Neither the names of Paul Mattes nor the names of his contributors ! may be used to endorse or promote products derived from this software ! without specific prior written permission. ! ! THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS OR IMPLIED ! WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF ! MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO ! EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ! SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, ! PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; ! OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, ! WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR ! OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ! ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ! ! Printer session commands x3270.printTextCommand: lpr -J "%E% screen" ! Printer session options #ifdef _WIN32 x3270.printer.assocCommandLine: pr3287.exe -assoc %L% %R% %P% %V% %S% %I% %O% %H% x3270.printer.luCommandLine: pr3287.exe %R% %P% %V% %S% %I% %O% %L%@%H% #else x3270.printer.command: lpr x3270.printer.assocCommandLine: pr3287 -assoc %L% -command "%C%" %R% %P% %V% %S% %O% "%H%" x3270.printer.luCommandLine: pr3287 -command "%C%" %R% %P% %V% %S% %O% "%L%@%H%" #endif ! (_WIN32) suite3270-4.1/Common/find_console.c000066400000000000000000000110351413735575200170750ustar00rootroot00000000000000/* * Copyright (c) 2019-2020 Paul Mattes. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the names of Paul Mattes nor the names of his contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO * EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * find_console.c * Console window support. */ #if defined(_WIN32) /*[*/ # error Not for Windows #endif /*]*/ #include "globals.h" #include "appres.h" #include "find_console.h" #include "lazya.h" #include "utils.h" /* Well-known consoles, in order of preference. */ static console_desc_t consoles[] = { { "gnome-terminal", "gnome-terminal --title " TITLE_SUBST " -- " COMMAND_SUBST }, { "konsole", "konsole --caption " TITLE_SUBST " -e " COMMAND_SUBST }, { "xfce4-terminal", "xfce4-terminal -T " TITLE_SUBST " -x " COMMAND_SUBST }, { "xterm", "xterm -sb -tn xterm-256color -rv -title " TITLE_SUBST " -e " COMMAND_SUBST }, { NULL, NULL } }; /* Find an executable in $PATH. */ bool find_in_path(const char *program) { char *path; char *colon; if (program[0] == '/') { return access(program, X_OK) == 0; } path = getenv("PATH"); while ((colon = strchr(path, ':')) != NULL) { if (colon != path) { char *xpath = lazyaf("%.*s/%s", (int)(colon - path), path, program); if (access(xpath, X_OK) == 0) { return true; } } path = colon + 1; } if (*path) { char *xpath = lazyaf("%s/%s", path, program); if (access(xpath, X_OK) == 0) { return true; } } return false; } /* Find the preferred console emulator for the prompt. */ console_desc_t * find_console(const char **errmsg) { int i; char *override = appres.interactive.console; char *pctc, *space, *dup; if (override == NULL) { /* No override. Find the best one. */ for (i = 0; consoles[i].program != NULL; i++) { if (find_in_path(consoles[i].program)) { return &consoles[i]; } } *errmsg = "None found"; return NULL; } if (strchr(override, ' ') == NULL) { /* They just specified the name. */ for (i = 0; consoles[i].program != NULL; i++) { if (!strcmp(override, consoles[i].program) && find_in_path(override)) { return &consoles[i]; } } *errmsg = "Specified name not found"; return NULL; } /* The specified a full override. */ pctc = strstr(override, " " COMMAND_SUBST); if (pctc == NULL || pctc[strlen(" " COMMAND_SUBST)] != '\0') { *errmsg = "Specified command does not end with " COMMAND_SUBST; return NULL; } space = strchr(override, ' '); dup = lazya(NewString(override)); dup[space - override] = '\0'; if (find_in_path(dup)) { static console_desc_t t_ret; t_ret.program = dup; t_ret.command_string = override; return &t_ret; } *errmsg = "Specified command not found"; return NULL; } /* Copy console arguments to an argv array. */ int console_args(console_desc_t *t, const char *title, const char ***s, int ix) { char *str = lazya(NewString(t->command_string)); char *saveptr; char *token; /* Split the command string into tokens. */ while ((token = strtok_r(str, " ", &saveptr)) != NULL) { str = NULL; if (!strcmp(token, TITLE_SUBST)) { array_add(s, ix++, title); } else if (strcmp(token, COMMAND_SUBST)) { array_add(s, ix++, token); } } return ix; } suite3270-4.1/Common/fprint_screen.c000066400000000000000000000503221413735575200172760ustar00rootroot00000000000000/* * Copyright (c) 1994-2015, 2018-2021 Paul Mattes. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the names of Paul Mattes nor the names of his contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO * EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * fprint_screen.c * Screen printing functions. */ #include "globals.h" #include #include "appres.h" #include "3270ds.h" #include "ctlr.h" #include "ctlrc.h" #include "resources.h" #include "fprint_screen.h" #if defined(_WIN32) /*[*/ # include "gdi_print.h" #endif /*]*/ #include "lazya.h" #include "nvt.h" #include "trace.h" #include "unicodec.h" #include "utf8.h" #include "utils.h" #include "varbuf.h" #include "vstatus.h" /* Typedefs */ typedef struct { ptype_t ptype; /* Type P_XXX (text, html, rtf) */ unsigned opts; /* FPS_XXX options */ bool need_separator; /* Pending page indicator */ bool broken; /* If set, output has failed already. */ int spp; /* Screens per page. */ int screens; /* Screen count this page. */ FILE *file; /* Stream to write to */ char *caption; /* Caption with %T% expanded */ char *printer_name; /* Printer name (used by GDI) */ } real_fps_t; /* Globals */ /* Statics */ /* * Map default 3279 colors. This code is duplicated three times. ;-( */ static int color_from_fa(unsigned char fa) { static int field_colors[4] = { HOST_COLOR_GREEN, /* default */ HOST_COLOR_RED, /* intensified */ HOST_COLOR_BLUE, /* protected */ HOST_COLOR_WHITE /* protected, intensified */ # define DEFCOLOR_MAP(f) \ ((((f) & FA_PROTECT) >> 4) | (((f) & FA_INT_HIGH_SEL) >> 3)) }; if (mode.m3279) { return field_colors[DEFCOLOR_MAP(fa)]; } else { return HOST_COLOR_GREEN; } } /* * Map 3279 colors onto HTML colors. */ static char * html_color(int color) { static char *html_color_map[] = { "black", "deepSkyBlue", "red", "pink", "green", "turquoise", "yellow", "white", "black", "blue3", "orange", "purple", "paleGreen", "paleTurquoise2", "grey", "white" }; if (color >= HOST_COLOR_NEUTRAL_BLACK && color <= HOST_COLOR_WHITE) { return html_color_map[color]; } else { return "black"; } } /* Convert a caption string to UTF-8 RTF. */ static char * rtf_caption(const char *caption) { ucs4_t u; int consumed; enum me_fail error; char mb[16]; varbuf_t r; vb_init(&r); while (*caption) { u = multibyte_to_unicode(caption, strlen(caption), &consumed, &error); if (u == 0) { break; } if (u & ~0x7f) { vb_appendf(&r, "\\u%u?", u); } else { unicode_to_multibyte(u, mb, sizeof(mb)); if (mb[0] == '\\' || mb[0] == '{' || mb[0] == '}') { vb_appendf(&r, "\\%c", mb[0]); } else if (mb[0] == '-') { vb_appends(&r, "\\_"); } else if (mb[0] == ' ') { vb_appends(&r, "\\~"); } else { vb_append(&r, &mb[0], 1); } } caption += consumed; } return vb_consume(&r); } /* Convert a caption string to UTF-8 HTML. */ static char * html_caption(const char *caption) { ucs4_t u; int consumed; enum me_fail error; char u8buf[16]; int nu8; varbuf_t r; vb_init(&r); while (*caption) { u = multibyte_to_unicode(caption, strlen(caption), &consumed, &error); if (u == 0) { break; } switch (u) { case '<': vb_appends(&r, "<"); break; case '>': vb_appends(&r, ">"); break; case '&': vb_appends(&r, "&"); break; default: nu8 = unicode_to_utf8(u, u8buf); vb_append(&r, u8buf, nu8); break; } caption += consumed; } return vb_consume(&r); } /* * Write a screen trace header to a stream. * Returns the context to use with subsequent calls. */ fps_status_t fprint_screen_start(FILE *f, ptype_t ptype, unsigned opts, const char *caption, const char *printer_name, fps_t *fps_ret, void *wait_context) { real_fps_t *fps; int rv = FPS_STATUS_SUCCESS; char *pt_spp; /* Non-text types can always generate blank output. */ if (ptype != P_TEXT) { opts |= FPS_EVEN_IF_EMPTY; } /* Reset and save the state. */ fps = (real_fps_t *)Malloc(sizeof(real_fps_t)); fps->ptype = ptype; fps->opts = opts; fps->need_separator = false; fps->broken = false; fps->spp = 1; fps->screens = 0; fps->file = f; if (caption != NULL) { char *xcaption; char *ts = strstr(caption, "%T%"); if (ts != NULL) { time_t t = time(NULL); struct tm *tm = localtime(&t); xcaption = xs_buffer("%.*s" "%04d-%02d-%02d %02d:%02d:%02d" "%s", (int)(ts - caption), caption, tm->tm_year + 1900, tm->tm_mon + 1, tm->tm_mday, tm->tm_hour, tm->tm_min, tm->tm_sec, ts + 3); } else { xcaption = NewString(caption); } fps->caption = xcaption; } else { fps->caption = NULL; } if (printer_name != NULL && printer_name[0]) { fps->printer_name = NewString(printer_name); } else { fps->printer_name = NULL; } switch (ptype) { case P_RTF: { char *pt_font = get_resource(ResPrintTextFont); char *pt_size = get_resource(ResPrintTextSize); int pt_nsize; if (pt_font == NULL) { pt_font = "Courier New"; } if (pt_size == NULL) { pt_size = "8"; } pt_nsize = atoi(pt_size); if (pt_nsize <= 0) { pt_nsize = 8; } if (fprintf(f, "{\\rtf1\\ansi\\ansicpg%u\\deff0\\deflang1033{" "\\fonttbl{\\f0\\fmodern\\fprq1\\fcharset0 %s;}}\n" "{\\colortbl ;\\red255\\green255\\blue255;\\red0\\green0\\blue0;}" "\\viewkind4\\uc1\\pard\\f0\\fs%d ", #if defined(_WIN32) /*[*/ GetACP(), #else /*][*/ 1252, /* the number doesn't matter */ #endif /*]*/ pt_font, pt_nsize * 2) < 0) { rv = FPS_STATUS_ERROR; } if (rv == FPS_STATUS_SUCCESS && fps->caption != NULL) { char *hcaption = rtf_caption(fps->caption); if (fprintf(f, "%s\\par\\par\n", hcaption) < 0) { rv = FPS_STATUS_ERROR; } Free(hcaption); } break; } case P_HTML: { char *hcaption = NULL; /* Make the caption HTML-safe. */ if (fps->caption != NULL) { hcaption = html_caption(fps->caption); } /* Print the preamble. */ if (!(opts & FPS_NO_HEADER) && fprintf(f, "\n" "\n" " \n" "\n" " \n") < 0) { rv = FPS_STATUS_ERROR; } if (rv == FPS_STATUS_SUCCESS && hcaption) { if (fprintf(f, "

%s

\n", hcaption) < 0) { rv = FPS_STATUS_ERROR; } Free(hcaption); } break; } case P_TEXT: if (fps->caption != NULL) { if (fprintf(f, "%s\n\n", fps->caption) < 0) { rv = FPS_STATUS_ERROR; } } break; case P_GDI: #if defined(_WIN32) /*[*/ switch (gdi_print_start(printer_name, opts, wait_context)) { case GDI_STATUS_SUCCESS: break; case GDI_STATUS_ERROR: rv = FPS_STATUS_ERROR; break; case GDI_STATUS_CANCEL: rv = FPS_STATUS_CANCEL; break; case GDI_STATUS_WAIT: rv = FPS_STATUS_WAIT; break; } #else /*][*/ assert(ptype != P_GDI); #endif /*]*/ break; case P_NONE: assert(ptype != P_NONE); break; } /* Set up screens-per-page. */ pt_spp = get_resource(ResPrintTextScreensPerPage); if (pt_spp != NULL) { fps->spp = atoi(pt_spp); if (fps->spp < 1 || fps->spp > 5) { fps->spp = 1; } } if (rv != FPS_STATUS_SUCCESS) { /* We've failed; there's no point in returning the context. */ Free(fps->caption); Free(fps->printer_name); Free(fps); *fps_ret = NULL; } else { *fps_ret = (fps_t)(void *)fps; } return rv; } #define FAIL do { \ rv = -1; \ goto done; \ } while(false) /* * Add a screen image to a stream. * * Returns 0 for no screen written, 1 for screen written, -1 for error. */ fps_status_t fprint_screen_body(fps_t ofps) { real_fps_t *fps = (real_fps_t *)(void *)ofps; register int i; ucs4_t uc; int nr = 0; bool any = false; int fa_addr; unsigned char fa; int fa_fg, current_fg; int fa_bg, current_bg; bool fa_high, current_high; bool fa_ital, current_ital; bool fa_underline, current_underline; bool fa_reverse, current_reverse; bool mi; #if defined(_WIN32) /*[*/ gdi_header_t h; #endif /*]*/ fps_status_t rv = FPS_STATUS_SUCCESS; struct ea *xea; int xrows; /* Quick short-circuit. */ if (fps == NULL || fps->broken) { return FPS_STATUS_ERROR; } if (fps->opts & FPS_OIA) { xea = (struct ea *)Calloc(1 + ((ROWS + 2) * COLS), sizeof(struct ea)); lazya(xea); memcpy(xea, ea_buf - 1, (1 + (ROWS * COLS)) * sizeof(struct ea)); xea++; vstatus_line(xea + (ROWS * COLS)); xrows = ROWS + 2; } else { xea = ea_buf; xrows = ROWS; } fa_addr = find_field_attribute(0); fa = xea[fa_addr].fa; mi = ((fps->opts & FPS_MODIFIED_ITALIC)) != 0; if (xea[fa_addr].fg) { fa_fg = xea[fa_addr].fg & 0x0f; } else { fa_fg = color_from_fa(fa); } current_fg = fa_fg; if (xea[fa_addr].bg) { fa_bg = xea[fa_addr].bg & 0x0f; } else { fa_bg = HOST_COLOR_BLACK; } current_bg = fa_bg; if (xea[fa_addr].gr & GR_INTENSIFY) { fa_high = true; } else { fa_high = FA_IS_HIGH(fa); } current_high = fa_high; fa_ital = mi && FA_IS_MODIFIED(fa); current_ital = fa_ital; fa_underline = xea[fa_addr].gr & GR_UNDERLINE; current_underline = fa_underline; fa_reverse = xea[fa_addr].gr & GR_REVERSE; current_reverse = fa_underline; switch (fps->ptype) { case P_RTF: if (fps->need_separator) { if (fps->screens < fps->spp) { if (fprintf(fps->file, "\\par\n") < 0) { FAIL; } } else { if (fprintf(fps->file, "\n\\page\n") < 0) { FAIL; } fps->screens = 0; } } if (current_high) { if (fprintf(fps->file, "\\b ") < 0) { FAIL; } } break; case P_HTML: if (fprintf(fps->file, " " "\n
" "
",
	       html_color(current_fg),
	       html_color(current_bg),
	       current_high? "bold": "normal",
	       current_ital? "italic": "normal",
	       current_underline? "underline": "none") < 0) {
	    FAIL;
	}
	break;
    case P_TEXT:
	if (fps->need_separator) {
	    if ((fps->opts & FPS_FF_SEP) && fps->screens >= fps->spp) {
		if (fputc('\f', fps->file) < 0) {
		    FAIL;
		}
		fps->screens = 0;
	    } else {
		for (i = 0; i < COLS; i++) {
		    if (fputc('=', fps->file) < 0) {
			FAIL;
		    }
		}
		if (fputc('\n', fps->file) < 0) {
		    FAIL;
		}
	    }
	}
	break;
#if defined(_WIN32) /*[*/
    case P_GDI:
	/*
	 * Write the current screen buffer to the file.
	 * We will read it back and print it when we are done.
	 */
	h.signature = GDI_SIGNATURE;
	h.rows = xrows;
	h.cols = COLS;
	if (fwrite(&h, sizeof(h), 1, fps->file) != 1) {
	    FAIL;
	}
	if (fwrite(xea, sizeof(struct ea), xrows * COLS, fps->file)
		    != xrows * COLS) {
	    FAIL;
	}
	fflush(fps->file);
	rv = FPS_STATUS_SUCCESS_WRITTEN;
	goto done;
#endif /*]*/
    default:
	break;
    }

    fps->need_separator = false;

    for (i = 0; i < xrows * COLS; i++) {
	char mb[16];
	int nmb;

	uc = 0;

	if (i && !(i % COLS)) {
	    if (fps->ptype == P_HTML) {
		if (fputc('\n', fps->file) < 0) {
		    FAIL;
		}
	    } else {
		nr++;
	    }
	}
	if (xea[i].fa) {
	    uc = ' ';
	    fa = xea[i].fa;
	    if (xea[i].fg) {
		fa_fg = xea[i].fg & 0x0f;
	    } else {
		fa_fg = color_from_fa(fa);
	    }
	    if (xea[i].bg) {
		fa_bg = xea[i].bg & 0x0f;
	    } else {
		fa_bg = HOST_COLOR_BLACK;
	    }
	    if (xea[i].gr & GR_INTENSIFY) {
		fa_high = true;
	    } else {
		fa_high = FA_IS_HIGH(fa);
	    }
	    fa_ital = mi && FA_IS_MODIFIED(fa);
	    fa_underline = xea[i].gr & GR_UNDERLINE;
	    fa_reverse = xea[i].gr & GR_REVERSE;
	}
	if (xea[i].gr & GR_RESET) {
	    /* Reset the FA attributes. */
	    fa = 0;
	    fa_fg = HOST_COLOR_NEUTRAL_BLACK;
	    fa_bg = HOST_COLOR_BLACK;
	    fa_high = false;
	    fa_ital = false;
	    fa_underline = false;
	    fa_reverse = false;
	}
	if (FA_IS_ZERO(fa) &&
		(FA_IS_PROTECTED(fa) ||
		 !(fps->opts & FPS_INCLUDE_ZERO_INPUT))) {
	    if (ctlr_dbcs_state(i) == DBCS_LEFT) {
		uc = 0x3000;
	    } else {
		uc = ' ';
	    }
	} else if (is_nvt(&xea[i], false, &uc)) {
	    /* NVT-mode text. */
	    if (ctlr_dbcs_state(i) == DBCS_RIGHT) {
		continue;
	    }
	} else {
	    /* Convert EBCDIC to Unicode. */
	    switch (ctlr_dbcs_state(i)) {
	    case DBCS_NONE:
	    case DBCS_SB:
		uc = ebcdic_to_unicode(xea[i].ec, xea[i].cs, EUO_NONE);
		if (uc == 0) {
		    uc = ' ';
		}
		break;
	    case DBCS_LEFT:
		uc = ebcdic_to_unicode((xea[i].ec << 8) | xea[i + 1].ec,
			CS_BASE, EUO_NONE);
		if (uc == 0) {
		    uc = 0x3000;
		}
		break;
	    case DBCS_RIGHT:
		/* skip altogether, we took care of it above */
		continue;
	    default:
		uc = ' ';
		break;
	    }
	}

	/* Translate to a type-specific format and write it out. */
	while (nr) {
	    if (fps->ptype == P_RTF)
		if (fprintf(fps->file, "\\par") < 0) {
		    FAIL;
		}
	    if (fputc('\n', fps->file) < 0) {
		FAIL;
	    }
	    nr--;
	}
	if (fps->ptype == P_RTF) {
	    bool high;
	    bool underline;
	    bool reverse;

	    if (xea[i].gr & GR_INTENSIFY) {
		high = true;
	    } else {
		high = fa_high;
	    }
	    if (high != current_high) {
		if (high) {
		    if (fprintf(fps->file, "\\b ") < 0) {
			FAIL;
		    }
		} else {
		    if (fprintf(fps->file, "\\b0 ") < 0) {
			FAIL;
		    }
		}
		current_high = high;
	    }
	    if (xea[i].gr & GR_UNDERLINE) {
		underline = true;
	    } else {
		underline = fa_underline;
	    }
	    if (underline != current_underline) {
		if (underline) {
		    if (fprintf(fps->file, "\\ul ") < 0) {
			FAIL;
		    }
		} else {
		    if (fprintf(fps->file, "\\ul0 ") < 0) {
			FAIL;
		    }
		}
		current_underline = underline;
	    }
	    if (xea[i].gr & GR_REVERSE) {
		reverse = true;
	    } else {
		reverse = fa_reverse;
	    }
	    if (i == cursor_addr) {
		reverse = !reverse;
	    }
	    if (reverse != current_reverse) {
		if (reverse) {
		    if (fprintf(fps->file, "\\cf1\\highlight2 ") < 0) {
			FAIL;
		    }
		} else {
		    if (fprintf(fps->file, "\\cf0\\highlight0 ") < 0) {
			FAIL;
		    }
		}
		current_reverse = reverse;
	    }
	}
	if (fps->ptype == P_HTML) {
	    int fg_color, bg_color;
	    bool high;
	    bool underline;

	    if (xea[i].fg) {
		fg_color = xea[i].fg & 0x0f;
	    } else {
		fg_color = fa_fg;
	    }
	    if (xea[i].bg) {
		bg_color = xea[i].bg & 0x0f;
	    } else {
		bg_color = fa_bg;
	    }
	    if (xea[i].gr & GR_REVERSE) {
		int tmp;

		tmp = fg_color;
		fg_color = bg_color;
		bg_color = tmp;
	    }

	    if (i == cursor_addr) {
		fg_color = (bg_color == HOST_COLOR_RED)?
		    HOST_COLOR_BLACK: bg_color;
		bg_color = HOST_COLOR_RED;
	    }
	    if (xea[i].gr & GR_INTENSIFY) {
		high = true;
	    } else {
		high = fa_high;
	    }
	    if (xea[i].gr & GR_UNDERLINE) {
		underline = true;
	    } else {
		underline = fa_underline;
	    }

	    if (fg_color != current_fg ||
		bg_color != current_bg ||
		high != current_high ||
		fa_ital != current_ital ||
		underline != current_underline) {
		if (fprintf(fps->file,
			    "",
			    html_color(fg_color),
			    html_color(bg_color),
			    high? "bold": "normal",
			    fa_ital? "italic": "normal",
			    underline? "underline": "none") < 0) {
		    FAIL;
		}
		current_fg = fg_color;
		current_bg = bg_color;
		current_high = high;
		current_ital = fa_ital;
		current_underline = underline;
	    }
	}
	any = true;
	if (fps->ptype == P_RTF) {
	    if (uc & ~0x7f) {
		if (fprintf(fps->file, "\\u%u?", uc) < 0) {
		    FAIL;
		}
	    } else {
		nmb = unicode_to_multibyte(uc, mb, sizeof(mb));
		if (mb[0] == '\\' || mb[0] == '{' || mb[0] == '}') {
		    if (fprintf(fps->file, "\\%c", mb[0]) < 0) {
			FAIL;
		    }
		} else if (mb[0] == '-') {
		    if (fprintf(fps->file, "\\_") < 0) {
			FAIL;
		    }
		} else if (mb[0] == ' ') {
		    if (fprintf(fps->file, "\\~") < 0) {
			FAIL;
		    }
		} else {
		    if (fputc(mb[0], fps->file) < 0) {
			FAIL;
		    }
		}
	    }
	} else if (fps->ptype == P_HTML) {
	    if (uc == '<') {
		if (fprintf(fps->file, "<") < 0) {
		    FAIL;
		}
	    } else if (uc == '&') {
		if (fprintf(fps->file, "&") < 0) {
		    FAIL;
		}
	    } else if (uc == '>') {
		if (fprintf(fps->file, ">") < 0) {
		    FAIL;
		}
	    } else {
		nmb = unicode_to_utf8(uc, mb);
		{
		    int k;

		    for (k = 0; k < nmb; k++) {
			if (fputc(mb[k], fps->file) < 0) {
			    FAIL;
			}
		    }
		}
	    }
	} else {
	    nmb = unicode_to_multibyte(uc, mb, sizeof(mb));
	    if (fputs(mb, fps->file) < 0) {
		FAIL;
	    }
	}
    }

    if (fps->ptype != P_HTML) {
	nr++;
    }
    if (!any && !(fps->opts & FPS_EVEN_IF_EMPTY) && fps->ptype == P_TEXT) {
	return FPS_STATUS_SUCCESS;
    }
    while (nr) {
	if (fps->ptype == P_RTF) {
	    if (fprintf(fps->file, "\\par") < 0) {
		FAIL;
	    }
	}
	if (fps->ptype == P_TEXT) {
	    if (fputc('\n', fps->file) < 0) {
		FAIL;
	    }
	}
	nr--;
    }
    if (fps->ptype == P_HTML) {
	if (fprintf(fps->file, "%s
\n", current_high? "": "") < 0) { FAIL; } } fps->need_separator = true; fps->screens++; rv = FPS_STATUS_SUCCESS_WRITTEN; /* wrote a screen */ done: if (FPS_IS_ERROR(rv)) { fps->broken = true; } return rv; } #undef FAIL /* * Finish writing a multi-screen image. * Returns 0 success, -1 for error. In either case, the context is freed. */ fps_status_t fprint_screen_done(fps_t *ofps) { real_fps_t *fps = (real_fps_t *)*(void **)ofps; int rv = FPS_STATUS_SUCCESS; if (fps == NULL) { return FPS_STATUS_ERROR; } if (!fps->broken) { switch (fps->ptype) { case P_RTF: if (fprintf(fps->file, "\n}\n%c", 0) < 0) { rv = FPS_STATUS_ERROR; } break; case P_HTML: if (!(fps->opts & FPS_NO_HEADER) && fprintf(fps->file, " \n\n") < 0) { rv = FPS_STATUS_ERROR; } break; #if defined(_WIN32) /*[*/ case P_GDI: vtrace("Printing to GDI printer\n"); if (gdi_print_finish(fps->file, fps->caption) < 0) { rv = FPS_STATUS_ERROR; } break; #endif /*]*/ default: break; } } /* Done with the context. */ Free(fps->caption); Free(fps->printer_name); memset(fps, '\0', sizeof(*fps)); Free(*(void **)ofps); *(void **)ofps = NULL; return rv; } /* * Write a header, screen image, and trailer to a file. */ fps_status_t fprint_screen(FILE *f, ptype_t ptype, unsigned opts, const char *caption, const char *printer_name, void *wait_context) { fps_t fps; fps_status_t srv; fps_status_t srv_body; srv = fprint_screen_start(f, ptype, opts, caption, printer_name, &fps, wait_context); if (FPS_IS_ERROR(srv) || srv == FPS_STATUS_WAIT) { return srv; } srv_body = fprint_screen_body(fps); if (FPS_IS_ERROR(srv_body)) { fprint_screen_done(&fps); return srv_body; } srv = fprint_screen_done(&fps); if (FPS_IS_ERROR(srv)) { return srv; } return srv_body; } suite3270-4.1/Common/ft.c000066400000000000000000001006451413735575200150520ustar00rootroot00000000000000/* * Copyright (c) 1996-2015, 2018-2021 Paul Mattes. * Copyright (c) 1995, Dick Altenbern. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the names of Paul Mattes, Dick Altenbern nor the names of * their contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES AND DICK ALTENBERN "AS IS" AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL PAUL MATTES OR DICK ALTENBERN BE LIABLE FOR * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH * DAMAGE. */ /* * ft.c * Common IND$FILE file transfer logic. */ #include "globals.h" #include #include #include #include "appres.h" #include "actions.h" #include "ft_cut.h" #include "ft_dft.h" #include "ft_private.h" /* must precede ft_gui.h */ #include "ft_gui.h" #include "unicodec.h" #include "ft.h" #include "host.h" #include "idle.h" #include "kybd.h" #include "names.h" #include "popups.h" #include "resources.h" #include "task.h" #include "toggles.h" #include "utils.h" #include "varbuf.h" /* Macros. */ /* Globals. */ enum ft_state ft_state = FT_NONE; /* File transfer state */ ft_conf_t *ftc; /* Current file transfer config */ enum iaction ft_cause; /* Cause of current file transfer */ /* Statics. */ static ft_conf_t transfer_ft_conf; /* FT config for Transfer() action */ static ft_conf_t gui_ft_conf; /* FT config for GUI (actually just c3270; x3270 uses its own) */ static bool gui_conf_initted = false; static struct timeval t0; /* Starting time */ /* Translation table: "ASCII" to EBCDIC, as seen by IND$FILE. */ unsigned char i_asc2ft[256] = { 0x00,0x01,0x02,0x03,0x37,0x2d,0x2e,0x2f,0x16,0x05,0x0a,0x0b,0x0c,0x0d,0x0e,0x0f, 0x10,0x11,0x12,0x13,0x3c,0x3d,0x32,0x26,0x18,0x19,0x3f,0x27,0x1c,0x1d,0x1e,0x1f, 0x40,0x5a,0x7f,0x7b,0x5b,0x6c,0x50,0x7d,0x4d,0x5d,0x5c,0x4e,0x6b,0x60,0x4b,0x61, 0xf0,0xf1,0xf2,0xf3,0xf4,0xf5,0xf6,0xf7,0xf8,0xf9,0x7a,0x5e,0x4c,0x7e,0x6e,0x6f, 0x7c,0xc1,0xc2,0xc3,0xc4,0xc5,0xc6,0xc7,0xc8,0xc9,0xd1,0xd2,0xd3,0xd4,0xd5,0xd6, 0xd7,0xd8,0xd9,0xe2,0xe3,0xe4,0xe5,0xe6,0xe7,0xe8,0xe9,0x4a,0xe0,0x4f,0x5f,0x6d, 0x79,0x81,0x82,0x83,0x84,0x85,0x86,0x87,0x88,0x89,0x91,0x92,0x93,0x94,0x95,0x96, 0x97,0x98,0x99,0xa2,0xa3,0xa4,0xa5,0xa6,0xa7,0xa8,0xa9,0xc0,0x6a,0xd0,0xa1,0x07, 0x20,0x21,0x22,0x23,0x24,0x15,0x06,0x17,0x28,0x29,0x2a,0x2b,0x2c,0x09,0x0a,0x1b, 0x30,0x31,0x1a,0x33,0x34,0x35,0x36,0x08,0x38,0x39,0x3a,0x3b,0x04,0x14,0x3e,0xe1, 0x41,0x42,0x43,0x44,0x45,0x46,0x47,0x48,0x49,0x51,0x52,0x53,0x54,0x55,0x56,0x57, 0x58,0x59,0x62,0x63,0x64,0x65,0x66,0x67,0x68,0x69,0x70,0x71,0x72,0x73,0x74,0x75, 0x76,0x77,0x78,0x80,0x8a,0x8b,0x8c,0x8d,0x8e,0x8f,0x90,0x9a,0x9b,0x9c,0x9d,0x9e, 0x9f,0xa0,0xaa,0xab,0xac,0xad,0xae,0xaf,0xb0,0xb1,0xb2,0xb3,0xb4,0xb5,0xb6,0xb7, 0xb8,0xb9,0xba,0xbb,0xbc,0xbd,0xbe,0xbf,0xca,0xcb,0xcc,0xcd,0xce,0xcf,0xda,0xdb, 0xdc,0xdd,0xde,0xdf,0xea,0xeb,0xec,0xed,0xee,0xef,0xfa,0xfb,0xfc,0xfd,0xfe,0xff}; /* Translation table: EBCDIC to "ASCII", as seen by IND$FILE. */ unsigned char i_ft2asc[256] = { 0x00,0x01,0x02,0x03,0x9c,0x09,0x86,0x7f,0x97,0x8d,0x0a,0x0b,0x0c,0x0d,0x0e,0x0f, 0x10,0x11,0x12,0x13,0x9d,0x85,0x08,0x87,0x18,0x19,0x92,0x8f,0x1c,0x1d,0x1e,0x1f, 0x80,0x81,0x82,0x83,0x84,0x00,0x17,0x1b,0x88,0x89,0x8a,0x8b,0x8c,0x05,0x06,0x07, 0x90,0x91,0x16,0x93,0x94,0x95,0x96,0x04,0x98,0x99,0x9a,0x9b,0x14,0x15,0x9e,0x1a, 0x20,0xa0,0xa1,0xa2,0xa3,0xa4,0xa5,0xa6,0xa7,0xa8,0x5b,0x2e,0x3c,0x28,0x2b,0x5d, 0x26,0xa9,0xaa,0xab,0xac,0xad,0xae,0xaf,0xb0,0xb1,0x21,0x24,0x2a,0x29,0x3b,0x5e, 0x2d,0x2f,0xb2,0xb3,0xb4,0xb5,0xb6,0xb7,0xb8,0xb9,0x7c,0x2c,0x25,0x5f,0x3e,0x3f, 0xba,0xbb,0xbc,0xbd,0xbe,0xbf,0xc0,0xc1,0xc2,0x60,0x3a,0x23,0x40,0x27,0x3d,0x22, 0xc3,0x61,0x62,0x63,0x64,0x65,0x66,0x67,0x68,0x69,0xc4,0xc5,0xc6,0xc7,0xc8,0xc9, 0xca,0x6a,0x6b,0x6c,0x6d,0x6e,0x6f,0x70,0x71,0x72,0xcb,0xcc,0xcd,0xce,0xcf,0xd0, 0xd1,0x7e,0x73,0x74,0x75,0x76,0x77,0x78,0x79,0x7a,0xd2,0xd3,0xd4,0xd5,0xd6,0xd7, 0xd8,0xd9,0xda,0xdb,0xdc,0xdd,0xde,0xdf,0xe0,0xe1,0xe2,0xe3,0xe4,0xe5,0xe6,0xe7, 0x7b,0x41,0x42,0x43,0x44,0x45,0x46,0x47,0x48,0x49,0xe8,0xe9,0xea,0xeb,0xec,0xed, 0x7d,0x4a,0x4b,0x4c,0x4d,0x4e,0x4f,0x50,0x51,0x52,0xee,0xef,0xf0,0xf1,0xf2,0xf3, 0x5c,0x9f,0x53,0x54,0x55,0x56,0x57,0x58,0x59,0x5a,0xf4,0xf5,0xf6,0xf7,0xf8,0xf9, 0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39,0xfa,0xfb,0xfc,0xfd,0xfe,0xff}; /* Keywords for the Transfer action. */ enum ft_parm_name { PARM_DIRECTION, PARM_HOST_FILE, PARM_LOCAL_FILE, PARM_HOST, PARM_MODE, PARM_CR, PARM_REMAP, PARM_EXIST, PARM_RECFM, PARM_LRECL, PARM_BLKSIZE, PARM_ALLOCATION, PARM_PRIMARY_SPACE, PARM_SECONDARY_SPACE, PARM_BUFFER_SIZE, PARM_AVBLOCK, #if defined(_WIN32) /*[*/ PARM_WINDOWS_CODEPAGE, #endif /*]*/ N_PARMS }; static struct { const char *name; char *value; const char *keyword[4]; } tp[N_PARMS] = { { "Direction", NULL, { "receive", "send" } }, { "HostFile" }, { "LocalFile" }, { "Host", NULL, { "tso", "vm", "cics" } }, { "Mode", NULL, { "ascii", "binary" } }, { "Cr", NULL, { "auto", "remove", "add", "keep" } }, { "Remap", NULL, { "yes", "no" } }, { "Exist", NULL, { "keep", "replace", "append" } }, { "Recfm", NULL, { "default", "fixed", "variable", "undefined" } }, { "Lrecl" }, { "Blksize" }, { "Allocation", NULL, { "default", "tracks", "cylinders", "avblock" } }, { "PrimarySpace" }, { "SecondarySpace" }, { "BufferSize" }, { "Avblock" }, #if defined(_WIN32) /*[*/ { "WindowsCodePage" }, #endif /*]*/ }; ft_tstate_t fts; static ioid_t ft_start_id = NULL_IOID; static void ft_connected(bool ignored); static void ft_in3270(bool ignored); static action_t Transfer_action; /* * Toggle the buffer size. */ static bool toggle_ft_buffer_size(const char *name _is_unused, const char *value) { unsigned long l; char *end; int bs; if (!*value) { appres.ft.dft_buffer_size = DFT_BUF; return true; } l = strtoul(value, &end, 10); bs = (int)l; if (*end != '\0' || (unsigned long)bs != l) { popup_an_error("Invalid %s value", ResUnlockDelay); return false; } if (bs < DFT_MIN_BUF || bs > DFT_MAX_BUF) { bs = DFT_BUF; } appres.ft.dft_buffer_size = bs; return true; } /** * File transfer module registration. */ void ft_register(void) { static action_table_t ft_actions[] = { { AnTransfer, Transfer_action, ACTION_KE } }; /* Register for state changes. */ register_schange(ST_CONNECT, ft_connected); register_schange(ST_3270_MODE, ft_in3270); /* Register actions. */ register_actions(ft_actions, array_count(ft_actions)); /* Register the toggles. */ register_extended_toggle(ResFtBufferSize, toggle_ft_buffer_size, NULL, NULL, (void **)&appres.ft.dft_buffer_size, XRM_INT); } /* Encode/decode for host type. */ bool ft_encode_host_type(const char *s, host_type_t *ht) { int k; for (k = 0; tp[PARM_HOST].keyword[k] != NULL && k < 4; k++) { if (!strncasecmp(s, tp[PARM_HOST].keyword[k], strlen(s))) { *ht = (host_type_t)k; return true; } } *ht = HT_TSO; return false; } const char * ft_decode_host_type(host_type_t ht) { if (ht < HT_TSO || ht > HT_CICS) { return "unknown"; } return tp[PARM_HOST].keyword[(int)ht]; } /* Encode/decode for recfm. */ bool ft_encode_recfm(const char *s, recfm_t *recfm) { int k; for (k = 0; tp[PARM_RECFM].keyword[k] != NULL && k < 4; k++) { if (!strncasecmp(s, tp[PARM_RECFM].keyword[k], strlen(s))) { *recfm = (recfm_t)k; return true; } } *recfm = DEFAULT_RECFM; return false; } const char * ft_decode_recfm(recfm_t recfm) { if (recfm < DEFAULT_RECFM || recfm > RECFM_UNDEFINED) { return "unknown"; } return tp[PARM_RECFM].keyword[(int)recfm]; } /* Encode/decode for units (allocation). */ bool ft_encode_units(const char *s, units_t *units) { int k; for (k = 0; tp[PARM_ALLOCATION].keyword[k] != NULL && k < 4; k++) { if (!strncasecmp(s, tp[PARM_ALLOCATION].keyword[k], strlen(s))) { *units = (units_t)k; return true; } } *units = DEFAULT_UNITS; return false; } const char * ft_decode_units(units_t units) { if (units < DEFAULT_UNITS || units > AVBLOCK) { return "unknown"; } return tp[PARM_ALLOCATION].keyword[(int)units]; } void ft_init(void) { /* * Do a dummy initialization of the Transfer action's ft_config, to catch * and display any errors in the resource defaults. */ ft_init_conf(&transfer_ft_conf); } /* * Initialize or re-initialize an ft_conf structure from the appres * defaults. */ void ft_init_conf(ft_conf_t *p) { /* Initialize the private state. */ p->receive_flag = true; p->host_type = HT_TSO; p->ascii_flag = true; p->cr_flag = p->ascii_flag; p->remap_flag = p->ascii_flag; p->allow_overwrite = false; p->append_flag = false; p->recfm = DEFAULT_RECFM; p->units = DEFAULT_UNITS; p->lrecl = 0; p->blksize = 0; p->primary_space = 0; p->secondary_space = 0; p->avblock = 0; p->dft_buffersize = set_dft_buffersize(0); #if defined(_WIN32) /*[*/ p->windows_codepage = appres.ft.codepage? appres.ft.codepage: appres.local_cp; #endif /*]*/ /* Apply resources. */ if (appres.ft.blksize) { p->blksize = appres.ft.blksize; } if (appres.ft.direction) { if (!strcasecmp(appres.ft.direction, "receive")) { p->receive_flag = true; } else if (!strcasecmp(appres.ft.direction, "send")) { p->receive_flag = false; } else { xs_warning("Invalid %s '%s', ignoring", ResFtDirection, appres.ft.direction); appres.ft.direction = NULL; } } if (appres.ft.host && !ft_encode_host_type(appres.ft.host, &p->host_type)) { xs_warning("Invalid %s '%s', ignoring", ResFtHost, appres.ft.host); appres.ft.host = NULL; } if (appres.ft.host_file) { Replace(p->host_filename, NewString(appres.ft.host_file)); } else { Replace(p->host_filename, NULL); } if (appres.ft.local_file) { Replace(p->local_filename, NewString(appres.ft.local_file)); } else { Replace(p->local_filename, NULL); } if (appres.ft.mode) { if (!strcasecmp(appres.ft.mode, "ascii")) { p->ascii_flag = true; } else if (!strcasecmp(appres.ft.mode, "binary")) { p->ascii_flag = false; } else { xs_warning("Invalid %s '%s', ignoring", ResFtMode, appres.ft.mode); appres.ft.host = NULL; } } if (appres.ft.cr) { /* must come after processing "ascii" */ if (!strcasecmp(appres.ft.cr, "auto")) { p->cr_flag = p->ascii_flag; } else if (!strcasecmp(appres.ft.cr, "add") || !strcasecmp(appres.ft.cr, "remove")) { p->cr_flag = true; } else if (!strcasecmp(appres.ft.cr, "keep")) { p->cr_flag = false; } else { xs_warning("Invalid %s '%s', ignoring", ResFtCr, appres.ft.cr); appres.ft.cr = NULL; } } if (appres.ft.remap) { if (!strcasecmp(appres.ft.remap, "yes")) { p->remap_flag = true; } else if (!strcasecmp(appres.ft.remap, "no")) { p->remap_flag = false; } else { xs_warning("Invalid %s '%s', ignoring", ResFtRemap, appres.ft.remap); appres.ft.remap = NULL; } } if (appres.ft.exist) { if (!strcasecmp(appres.ft.exist, "keep")) { p->allow_overwrite = false; p->append_flag = false; } else if (!strcasecmp(appres.ft.exist, "replace")) { p->allow_overwrite = true; p->append_flag = false; } else if (!strcasecmp(appres.ft.exist, "append")) { p->allow_overwrite = false; p->append_flag = true; } else { xs_warning("Invalid %s '%s', ignoring", ResFtExist, appres.ft.exist); appres.ft.exist = NULL; } } if (appres.ft.primary_space) { p->primary_space = appres.ft.primary_space; } if (appres.ft.recfm && !ft_encode_recfm(appres.ft.recfm, &p->recfm)) { xs_warning("Invalid %s '%s', ignoring", ResFtRecfm, appres.ft.recfm); appres.ft.recfm = NULL; } if (appres.ft.secondary_space) { p->secondary_space = appres.ft.secondary_space; } if (appres.ft.lrecl) { p->lrecl = appres.ft.lrecl; } if (appres.ft.allocation && !ft_encode_units(appres.ft.allocation, &p->units)) { xs_warning("Invalid %s '%s', ignoring", ResFtAllocation, appres.ft.allocation); appres.ft.allocation = NULL; } if (appres.ft.avblock) { p->avblock = appres.ft.avblock; } p->dft_buffersize = set_dft_buffersize(0); } /* Return the right value for fopen()ing the local file. */ static const char * ft_local_fflag(ft_conf_t *p) { static char ret[3]; int nr = 0; ret[nr++] = p->receive_flag? (p->append_flag? 'a': 'w' ): 'r'; if (!p->ascii_flag) { ret[nr++] = 'b'; } ret[nr] = '\0'; return ret; } /* Timeout function for stalled transfers. */ static void ft_didnt_start(ioid_t id _is_unused) { ft_start_id = NULL_IOID; if (fts.local_file != NULL) { fclose(fts.local_file); fts.local_file = NULL; if (ftc->receive_flag && !ftc->append_flag) { unlink(fts.resolved_local_filename); } } ft_complete(get_message("ftStartTimeout")); } /* External entry points called by ft_dft and ft_cut. */ /* Pop up a message, end the transfer. */ void ft_complete(const char *errmsg) { /* Close the local file. */ if (fts.local_file != NULL && fclose(fts.local_file) < 0) { popup_an_errno(errno, "close(%s)", fts.resolved_local_filename); } fts.local_file = NULL; /* Clean up the state. */ ft_state = FT_NONE; if (ft_start_id != NULL_IOID) { RemoveTimeOut(ft_start_id); ft_start_id = NULL_IOID; } /* Get the idle timeout going again. */ idle_ft_complete(); /* Pop down the in-progress shell. */ ft_gui_progress_popdown(); /* Pop up the text. */ if (errmsg != NULL) { char *msg_copy = NewString(errmsg); /* Make sure the error message will fit on the pop-up. */ ft_gui_errmsg_prepare(msg_copy); /* Clear out the progress display. */ ft_gui_clear_progress(); /* Pop up the error. */ ft_gui_complete_popup(msg_copy, true); Free(msg_copy); } else { struct timeval t1; double bytes_sec; char *buf; gettimeofday(&t1, NULL); bytes_sec = (double)fts.length / ((double)(t1.tv_sec - t0.tv_sec) + (double)(t1.tv_usec - t0.tv_usec) / 1.0e6); buf = xs_buffer(get_message("ftComplete"), fts.length, display_scale(bytes_sec), fts.is_cut ? "CUT" : "DFT"); ft_gui_clear_progress(); ft_gui_complete_popup(buf, false); Free(buf); } } /* Update the bytes-transferred count on the progress pop-up. */ void ft_update_length(void) { ft_gui_update_length(fts.length); } /* Process a transfer acknowledgement. */ void ft_running(bool is_cut) { if (ft_state == FT_AWAIT_ACK) { ft_state = FT_RUNNING; if (ft_start_id != NULL_IOID) { RemoveTimeOut(ft_start_id); ft_start_id = NULL_IOID; } } fts.is_cut = is_cut; gettimeofday(&t0, NULL); fts.length = 0; ft_gui_running(fts.length); } /* Process a protocol-generated abort. */ void ft_aborting(void) { if (ft_state == FT_RUNNING || ft_state == FT_ABORT_WAIT) { ft_state = FT_ABORT_SENT; ft_gui_aborting(); } } /* Process a disconnect abort. */ static void ft_connected(bool ignored _is_unused) { if (!CONNECTED && ft_state != FT_NONE) { ft_complete(get_message("ftDisconnected")); } } /* Process an abort from no longer being in 3270 mode. */ static void ft_in3270(bool ignored _is_unused) { if (!IN_3270 && ft_state != FT_NONE) { ft_complete(get_message("ftNot3270")); } } /* Resolve a local file name that might be a directory. */ char * ft_resolve_dir(ft_conf_t *p) { struct stat s; /* If the local file is a directory, append the host file name to it. */ if (stat(p->local_filename, &s) == 0 && (s.st_mode & S_IFDIR)) { return xs_buffer("%s%s%s", p->local_filename, #if defined(_WIN32) /*[*/ "\\", #else /*][*/ "/", #endif /*]*/ p->host_filename); } else { return NewString(p->local_filename); } } /* * Start a file transfer, based on the contents of an ft_state structure. * * This function will fail if the file exists and the overwrite flag is not * set. * * Returns the local file pointer, or NULL if the transfer could not start. * If an error is detected, it will call popup_an_error() with an appropriate * message. */ FILE * ft_go(ft_conf_t *p, enum iaction cause) { FILE *f; varbuf_t r; unsigned flen; /* Adjust the DFT buffer size. */ p->dft_buffersize = set_dft_buffersize(p->dft_buffersize); /* Resolve the local file name. */ Replace(fts.resolved_local_filename, ft_resolve_dir(p)); /* See if the local file can be overwritten. */ if (p->receive_flag && !p->append_flag && !p->allow_overwrite) { f = fopen(fts.resolved_local_filename, p->ascii_flag? "r": "rb"); if (f != NULL) { fclose(f); popup_an_error(AnTransfer "(): File exists"); return NULL; } } /* Open the local file. */ f = fopen(fts.resolved_local_filename, ft_local_fflag(p)); if (f == NULL) { popup_an_errno(errno, "Local file '%s'", fts.resolved_local_filename); return NULL; } /* Build the ind$file command */ vb_init(&r); vb_appendf(&r, "IND\\e005BFILE %s %s %s", p->receive_flag? "GET": "PUT", p->host_filename, (p->host_type != HT_TSO)? "(": ""); if (p->ascii_flag) { vb_appends(&r, "ASCII"); } else if (p->host_type == HT_CICS) { vb_appends(&r, "BINARY"); } if (p->ascii_flag && p->cr_flag) { vb_appends(&r, " CRLF"); } else if (p->host_type == HT_CICS) { vb_appends(&r, " NOCRLF"); } if (p->append_flag && !p->receive_flag) { vb_appends(&r, " APPEND"); } if (!p->receive_flag) { if (p->host_type == HT_TSO) { if (p->recfm != DEFAULT_RECFM) { /* RECFM Entered, process */ vb_appends(&r, " RECFM("); switch (p->recfm) { case RECFM_FIXED: vb_appends(&r, "F"); break; case RECFM_VARIABLE: vb_appends(&r, "V"); break; case RECFM_UNDEFINED: vb_appends(&r, "U"); break; default: break; }; vb_appends(&r, ")"); if (p->lrecl) { vb_appendf(&r, " LRECL(%d)", p->lrecl); } if (p->blksize) { vb_appendf(&r, " BLKSIZE(%d)", p->blksize); } } if (p->units != DEFAULT_UNITS) { /* Space Entered, processs it */ vb_appendf(&r, " SPACE(%d", p->primary_space); if (p->secondary_space) { vb_appendf(&r, ",%d", p->secondary_space); } vb_appends(&r, ")"); switch (p->units) { case TRACKS: vb_appends(&r, " TRACKS"); break; case CYLINDERS: vb_appends(&r, " CYLINDERS"); break; case AVBLOCK: vb_appendf(&r, " AVBLOCK(%d)", p->avblock); break; default: break; } } } else if (p->host_type == HT_VM) { if (p->recfm != DEFAULT_RECFM) { vb_appends(&r, " RECFM "); switch (p->recfm) { case RECFM_FIXED: vb_appends(&r, "F"); break; case RECFM_VARIABLE: vb_appends(&r, "V"); break; default: break; }; if (p->lrecl) { vb_appendf(&r, " LRECL %d", p->lrecl); } } } } vb_appends(&r, "\\n"); /* Erase the line and enter the command. */ flen = kybd_prime(); if (flen <= 0 || flen < vb_len(&r) - 1) { const char *why; vb_free(&r); if (f != NULL) { fclose(f); if (p->receive_flag && !p->append_flag) { unlink(fts.resolved_local_filename); } } switch (flen) { case KYP_LOCKED: why = get_message("ftUnableLocked"); break; case KYP_NOT_3270: why = get_message("ftUnableNot3270"); break; case KYP_NO_FIELD: why = get_message("ftUnableNoField"); break; default: why = get_message("ftUnableTooSmall"); break; } popup_an_error("%s: %s", get_message("ftUnable"), why); return NULL; } emulate_input(vb_buf(&r), vb_len(&r), false, false); vb_free(&r); /* Now proceed with this context. */ ftc = p; /* Finish common initialization. */ fts.last_cr = false; fts.is_cut = false; fts.last_dbcs = false; fts.dbcs_state = FT_DBCS_NONE; ft_state = FT_AWAIT_ACK; ft_cause = cause; idle_ft_start(); return f; } /* * Parse the keywords for the Transfer() action. * * Returns a pointer to the filled-out ft_state structure, or NULL for * errors. */ static ft_conf_t * parse_ft_keywords(unsigned argc, const char **argv) { ft_conf_t *p = &transfer_ft_conf; int i, k; unsigned j; char *ptr; long l; /* Unlike the GUIs, always set everything to defaults. */ ft_init_conf(p); p->is_action = true; for (i = 0; i < N_PARMS; i++) { Replace(tp[i].value, NULL); } /* The special keyword 'Defaults' means 'just use the defaults'. */ if (argc == 1 && !strcasecmp(argv[0], "Defaults")) { argc--; argv++; } /* See what they specified. */ for (j = 0; j < argc; j++) { for (i = 0; i < N_PARMS; i++) { char *eq; size_t kwlen; const char *value; eq = strchr(argv[j], '='); if (eq != NULL) { /* Using 'keyword=value' syntax. */ if (eq == argv[j] || !*(eq + 1)) { popup_an_error(AnTransfer "(): Invalid option syntax: '%s'", argv[j]); return NULL; } kwlen = eq - argv[j]; value = eq + 1; } else { /* Using 'keyword,value' syntax. */ kwlen = strlen(argv[j]); if (j == argc - 1) { popup_an_error(AnTransfer "(): missing value after '%s'", argv[j]); return NULL; } value = argv[j + 1]; } if (!strncasecmp(argv[j], tp[i].name, kwlen) && !tp[i].name[kwlen]) { if (tp[i].keyword[0]) { for (k = 0; tp[i].keyword[k] != NULL && k < 4; k++) { if (!strncasecmp(value, tp[i].keyword[k], strlen(value))) { break; } } if (k >= 4 || tp[i].keyword[k] == NULL) { popup_an_error(AnTransfer "(): Invalid option value: '%s'", value); return NULL; } } else switch (i) { case PARM_LRECL: case PARM_BLKSIZE: case PARM_PRIMARY_SPACE: case PARM_SECONDARY_SPACE: case PARM_BUFFER_SIZE: #if defined(_WIN32) /*[*/ case PARM_WINDOWS_CODEPAGE: #endif /*]*/ l = strtol(value, &ptr, 10); if (l <= 0 || ptr == value || *ptr) { popup_an_error(AnTransfer "(): Invalid option value: " "'%s'", value); return NULL; } break; default: break; } tp[i].value = NewString(value); if (eq == NULL) { /* Skip the parameter. */ j++; } break; } if (i >= N_PARMS) { popup_an_error(AnTransfer "(): Unknown option: '%s'", argv[j]); return NULL; } } } /* Transfer from keywords to the ft_state. */ if (tp[PARM_DIRECTION].value) { p->receive_flag = !strcasecmp(tp[PARM_DIRECTION].value, "receive"); } if (tp[PARM_HOST_FILE].value) { p->host_filename = NewString(tp[PARM_HOST_FILE].value); } if (tp[PARM_LOCAL_FILE].value) { p->local_filename = NewString(tp[PARM_LOCAL_FILE].value); } if (tp[PARM_HOST].value) { ft_encode_host_type(tp[PARM_HOST].value, &p->host_type); } if (tp[PARM_MODE].value) { p->ascii_flag = !strcasecmp(tp[PARM_MODE].value, "ascii"); } if (tp[PARM_CR].value) { if (!strcasecmp(tp[PARM_CR].value, "auto")) { p->cr_flag = p->ascii_flag; } else { if (!p->ascii_flag) { popup_an_error(AnTransfer "(): Invalid 'Cr' option for ASCII mode"); return NULL; } p->cr_flag = !strcasecmp(tp[PARM_CR].value, "remove") || !strcasecmp(tp[PARM_CR].value, "add"); } } if (p->ascii_flag && tp[PARM_REMAP].value) { p->remap_flag = !strcasecmp(tp[PARM_REMAP].value, "yes"); } if (tp[PARM_EXIST].value) { p->append_flag = !strcasecmp(tp[PARM_EXIST].value, "append"); p->allow_overwrite = !strcasecmp(tp[PARM_EXIST].value, "replace"); } if (tp[PARM_RECFM].value) { ft_encode_recfm(tp[PARM_RECFM].value, &p->recfm); } if (tp[PARM_LRECL].value) { p->lrecl = atoi(tp[PARM_LRECL].value); } if (tp[PARM_BLKSIZE].value) { p->blksize = atoi(tp[PARM_BLKSIZE].value); } if (tp[PARM_ALLOCATION].value) { ft_encode_units(tp[PARM_ALLOCATION].value, &p->units); } if (tp[PARM_PRIMARY_SPACE].value) { p->primary_space = atoi(tp[PARM_PRIMARY_SPACE].value); } if (tp[PARM_SECONDARY_SPACE].value) { p->secondary_space = atoi(tp[PARM_SECONDARY_SPACE].value); } if (tp[PARM_BUFFER_SIZE].value != NULL) { p->dft_buffersize = atoi(tp[PARM_BUFFER_SIZE].value); } if (tp[PARM_AVBLOCK].value) { p->avblock = atoi(tp[PARM_AVBLOCK].value); } #if defined(_WIN32) /*[*/ if (tp[PARM_WINDOWS_CODEPAGE].value != NULL) { p->windows_codepage = atoi(tp[PARM_WINDOWS_CODEPAGE].value); } #endif /*]*/ /* Check for required values. */ if (!p->host_filename) { popup_an_error(AnTransfer "(): Missing 'HostFile' option"); return NULL; } if (!p->local_filename) { popup_an_error(AnTransfer "(): Missing 'LocalFile' option"); return NULL; } if (p->host_type == HT_TSO && !p->receive_flag && p->units != DEFAULT_UNITS && p->primary_space <= 0) { popup_an_error(AnTransfer "(): Missing or invalid 'PrimarySpace'"); return NULL; } if (p->host_type == HT_TSO && !p->receive_flag && p->units == AVBLOCK && p->avblock <= 0) { popup_an_error(AnTransfer "(): Missing or invalid 'Avblock'"); return NULL; } /* Check for contradictory values. */ if (tp[PARM_CR].value && !p->ascii_flag) { popup_an_error(AnTransfer "(): 'Cr' is only for ASCII transfers"); return NULL; } if (tp[PARM_REMAP].value && !p->ascii_flag) { popup_an_error(AnTransfer "(): 'Remap' is only for ASCII transfers"); return NULL; } if (tp[PARM_RECFM].value && p->receive_flag) { popup_an_error(AnTransfer "(): 'Recfm' is only for sending files"); return NULL; } if (tp[PARM_RECFM].value && p->host_type != HT_TSO && p->host_type != HT_VM) { popup_an_error(AnTransfer "(): 'Recfm' is only for TSO and VM hosts"); return NULL; } if (tp[PARM_LRECL].value && p->receive_flag) { popup_an_error(AnTransfer "(): 'Lrecl' is only for sending files"); return NULL; } if (tp[PARM_BLKSIZE].value && p->receive_flag) { popup_an_error(AnTransfer "(): 'Blksize' is only for sending files"); return NULL; } if (tp[PARM_BLKSIZE].value && p->host_type != HT_TSO) { popup_an_error(AnTransfer "(): 'Blksize' is only for TSO hosts"); return NULL; } if (tp[PARM_ALLOCATION].value && p->receive_flag) { popup_an_error(AnTransfer "(): 'Allocation' is only for sending files"); return NULL; } if (tp[PARM_ALLOCATION].value && p->host_type != HT_TSO) { popup_an_error(AnTransfer "(): 'Allocation' is only for TSO hosts"); return NULL; } if (tp[PARM_PRIMARY_SPACE].value && p->receive_flag) { popup_an_error(AnTransfer "(): 'PrimarySpace' is only for sending files"); return NULL; } if (tp[PARM_PRIMARY_SPACE].value && p->host_type != HT_TSO) { popup_an_error(AnTransfer "(): 'PrimarySpace' is only for TSO hosts"); return NULL; } if (tp[PARM_SECONDARY_SPACE].value && p->receive_flag) { popup_an_error(AnTransfer "(): 'SecondarySpace' is only for sending files"); return NULL; } if (tp[PARM_SECONDARY_SPACE].value && p->host_type != HT_TSO) { popup_an_error(AnTransfer "(): 'SecondarySpace' is only for TSO hosts"); return NULL; } if (tp[PARM_AVBLOCK].value && p->receive_flag) { popup_an_error(AnTransfer "(): 'Avblock' is only for sending files"); return NULL; } if (tp[PARM_AVBLOCK].value && p->host_type != HT_TSO) { popup_an_error(AnTransfer "(): 'Avblock' is only for TSO hosts"); return NULL; } #if defined(_WIN32) /*[*/ if (tp[PARM_WINDOWS_CODEPAGE].value && !p->ascii_flag) { popup_an_error(AnTransfer "(): 'WindowsCodePage' is only for ASCII " "transfers"); return NULL; } #endif /*]*/ /* All set. */ return p; } /* Start a transfer. */ bool ft_start_backend(ft_conf_t *p, enum iaction cause) { fts.local_file = ft_go(p, cause); if (fts.local_file == NULL) { return false; } /* If interactive, tell the user we're waiting. */ ft_gui_awaiting(); /* Set a timeout for failed command start. */ ft_start_id = AddTimeOut(30 * 1000, ft_didnt_start); /* Success. */ return true; } /* * Script/macro action for file transfer. * Transfer(option=value[,...]) * Options are: * Direction=send|receive default receive * HostFile=name required * LocalFile=name required * Host=[tso|vm|cics] default tso * Mode=[ascii|binary] default ascii * Cr=[add|remove|keep] default add/remove * Remap=[yes|no] default yes * Exist=[keep|replace|append] default keep * Recfm=[default|fixed|variable|undefined] default default * Lrecl=n no default * Blksize=n no default * Allocation=[default|tracks|cylinders|avblock] default default * PrimarySpace=n no default * SecondarySpace=n no default * BufferSize no default * Avblock=n no default * WindowsCodePage=n no default */ static bool Transfer_action(ia_t ia, unsigned argc, const char **argv) { ft_conf_t *p = NULL; action_debug(AnTransfer, ia, argc, argv); /* Make sure we're connected. */ if (!IN_3270) { popup_an_error(AnTransfer "(): Not connected in 3270 mode"); return false; } /* Check for cancel first. */ if (argc == 1 && !strcasecmp(argv[0], KwCancel)) { if (ft_state == FT_NONE) { action_output("No transfer pending."); } else { if (ft_do_cancel()) { action_output("Canceled."); } else { action_output("Cancel initiated."); } } return true; } /* Check for interactive mode. */ if (argc == 0) { if (!gui_conf_initted) { ft_init_conf(&gui_ft_conf); gui_ft_conf.is_action = true; gui_conf_initted = true; } switch (ft_gui_interact(&gui_ft_conf)) { case FGI_NOP: /* Hope the defaults are enough. */ break; case FGI_SUCCESS: /* Proceed as specified in the ft_state. */ p = &gui_ft_conf; break; case FGI_ABORT: /* User said no. */ return false; case FGI_ASYNC: /* Asynchronous dialog running. */ return true; } } if (p == NULL) { /* Parse the keywords into the ft_state structure. */ p = parse_ft_keywords(argc, argv); if (p == NULL) { return false; } p->is_action = true; } /* Start the transfer. */ return ft_start_backend(p, ia); } /* * Cancel a file transfer. * * Returns true if the transfer if the cancellation is complete, false if it * is pending (because it must be coordinated with the host). */ bool ft_do_cancel(void) { if (ft_state == FT_RUNNING) { ft_state = FT_ABORT_WAIT; return false; } else { if (ft_state != FT_NONE) { ft_complete(get_message("ftUserCancel")); } return true; } } #if defined(_WIN32) /*[*/ /* * Windows character translation functions. * * These are wrappers around the existing functions in unicode.c, but they swap * the local codepage in and out to use the one specified for the transfer. * * On other platforms, these functions are #defined to their 'real' * counterparts. */ size_t ft_ebcdic_to_multibyte(ebc_t ebc, char mb[], size_t mb_len) { int local_cp = appres.local_cp; size_t rc; appres.local_cp = ftc->windows_codepage; rc = ebcdic_to_multibyte(ebc, mb, mb_len); appres.local_cp = local_cp; return rc; } int ft_unicode_to_multibyte(ucs4_t ucs4, char *mb, size_t mb_len) { int local_cp = appres.local_cp; int rc; appres.local_cp = ftc->windows_codepage; rc = unicode_to_multibyte(ucs4, mb, mb_len); appres.local_cp = local_cp; return rc; } ucs4_t ft_multibyte_to_unicode(const char *mb, size_t mb_len, int *consumedp, enum me_fail *errorp) { int local_cp = appres.local_cp; ucs4_t rc; appres.local_cp = ftc->windows_codepage; rc = multibyte_to_unicode(mb, mb_len, consumedp, errorp); appres.local_cp = local_cp; return rc; } #endif /*]*/ suite3270-4.1/Common/ft.inc000066400000000000000000000140001413735575200153660ustar00rootroot00000000000000XX_SH(File Transfer) The XX_FB(Transfer()) action implements XX_FB(IND$FILE) file transfer. This action requires that the XX_FB(IND$FILE) program be installed on the XX_SM(IBM) host, and that the 3270 cursor be located in a field that will accept a XX_SM(TSO) or XX_SM(VM/CMS) command. XX_LP ifelse(XX_PRODUCT,x3270,,XX_PRODUCT,s3270,,XX_PRODUCT,tcl3270,,`The XX_FB(Transfer()) action can be entered at the XX_FB(XX_PRODUCT>) prompt with no parameters, which will cause it to prompt interactively for the file names and options. It can also be invoked with parameters to define the entire transfer. ')dnl XX_LP Because of the complexity and number of options for file transfer, the parameters to the XX_FB(Transfer()) action can take the unique form of XX_FI(option)=XX_FI(value). They can also be given with their parameters separately. Options can appear in any order. Note that if the XX_FI(value) contains spaces (such as a VM/CMS file name), then the entire parameter must be quoted, e.g., XX_FB("hostfile=xxx foo a"). With sequential options, this would be XX_FB(`hostfile,"xxx foo a"'). The options are: XX_LP XX_TS(4,l c l l.) XX_TR(XX_TD(Option) XX_TD(Required?) XX_TD(Default) XX_TD(Other Values)) XX_T_() XX_TR(XX_TD(direction) XX_TD(No) XX_TD(receive) XX_TD(send)) XX_TR(XX_TD(hostfile) XX_TD(Yes) XX_TD(XX_NBSP) XX_TD(XX_NBSP)) XX_TR(XX_TD(localfile) XX_TD(Yes) XX_TD(XX_NBSP) XX_TD(XX_NBSP)) XX_TR(XX_TD(host) XX_TD(No) XX_TD(tso) `XX_TD(`vm, cics')') XX_TR(XX_TD(mode) XX_TD(No) XX_TD(ascii) XX_TD(binary)) XX_TR(XX_TD(cr) XX_TD(No) XX_TD(remove) `XX_TD(`add, keep')') XX_TR(XX_TD(remap) XX_TD(No) XX_TD(yes) XX_TD(no)) XX_TR(XX_TD(exist) XX_TD(No) XX_TD(keep) `XX_TD(`replace, append')') XX_TR(XX_TD(recfm) XX_TD(No) XX_TD(XX_NBSP) `XX_TD(`fixed, variable, undefined')') XX_TR(XX_TD(lrecl) XX_TD(No) XX_TD(XX_NBSP) XX_TD(XX_NBSP)) XX_TR(XX_TD(blksize) XX_TD(No) XX_TD(XX_NBSP) XX_TD(XX_NBSP)) XX_TR(XX_TD(allocation) XX_TD(No) XX_TD(XX_NBSP) `XX_TD(`tracks, cylinders, avblock')') XX_TR(XX_TD(primaryspace) XX_TD(Sometimes) XX_TD(XX_NBSP) XX_TD(XX_NBSP)) XX_TR(XX_TD(secondaryspace) XX_TD(No) XX_TD(XX_NBSP) XX_TD(XX_NBSP)) XX_TR(XX_TD(avblock) XX_TD(Sometimes) XX_TD(XX_NBSP) XX_TD(XX_NBSP)) XX_TR(XX_TD(buffersize) XX_TD(No) XX_TD(4096) XX_TD(XX_NBSP)) XX_TE() XX_LP The option details are as follows. XX_TPS()dnl XX_TP(XX_FB(direction)) XX_FB(send) to send a file to the host, XX_FB(receive) to receive a file from the host. XX_TP(XX_FB(hostfile)) The name of the file on the host. XX_TP(XX_FB(localfile)) The name of the file on the local workstation. XX_TP(XX_FB(host)) The type of host (which dictates the form of the XX_FB(IND$FILE) command): XX_FB(tso) (the default), XX_FB(vm) or XX_FB(cics). XX_TP(XX_FB(mode)) Use XX_FB(ascii) (the default) for a text file, which will be translated between XX_SM(EBCDIC) and XX_SM(ASCII) as necessary. Use XX_FB(binary) for non-text files. XX_TP(XX_FB(cr)) Controls how newline characters are handled when transferring XX_FB(mode=ascii) files. XX_FB(remove) (the default) strips newline characters in local files before transferring them to the host. XX_FB(add) adds newline characters to each host file record before transferring it to the local workstation. XX_FB(keep) preserves newline characters when transferring a local file to the host. XX_TP(XX_FB(remap)) Controls text translation for XX_FB(mode=ascii) files. The value XX_FB(yes) (the default) causes XX_PRODUCT to remap the text to ensure maximum compatibility between the workstation's character set and encoding and the host's XX_SM(EBCDIC) code page. The value XX_FB(no) causes XX_PRODUCT to pass the text to or from the host as-is, leaving all translation to the XX_FB(IND$FILE) program on the host. XX_TP(XX_FB(exist)) Controls what happens when the destination file already exists. XX_FB(keep) (the default) preserves the file, causing the XX_FB(Transfer()) action to fail. XX_FB(replace) overwrites the destination file with the source file. XX_FB(append) appends the source file to the destination file. XX_TP(XX_FB(recfm)) Controls the record format of files created on the host. (XX_SM(TSO) and XX_SM(VM) hosts only.) XX_FB(fixed) creates a file with fixed-length records. XX_FB(variable) creates a file with variable-length records. XX_FB(undefined) creates a file with undefined-length records (XX_SM(TSO) hosts only). The XX_FB(lrecl) option controls the record length or maximum record length for XX_FB(recfm=fixed) and XX_FB(recfm=variable) files, respectively. XX_TP(XX_FB(lrecl)) Specifies the record length (or maximum record length) for files created on the host. (XX_SM(TSO) and XX_SM(VM) hosts only.) XX_TP(XX_FB(blksize)) Specifies the block size for files created on the host. (XX_SM(TSO) and XX_SM(VM) hosts only.) XX_TP(XX_FB(allocation)) Specifies the units for the XX_FB(primaryspace) and XX_FB(secondaryspace) options: XX_FB(tracks), XX_FB(cylinders) or XX_FB(avblock). (XX_SM(TSO) hosts only.) XX_TP(XX_FB(primaryspace)) Primary allocation for a file. The units are given by the XX_FB(allocation) option. Required when the XX_FB(allocation) is specified as something other than XX_FB(default). (XX_SM(TSO) hosts only.) XX_TP(XX_FB(secondaryspace)) Secondary allocation for a file. The units are given by the XX_FB(allocation) option. (XX_SM(TSO) hosts only.) XX_TP(XX_FB(avblock)) Average block size, required when XX_FB(allocation) specifies XX_FB(avblock). (XX_SM(TSO) hosts only.) XX_TP(XX_FB(buffersize)) Buffer size for DFT-mode transfers. Can range from 256 to 32768. Larger values give better performance, but some hosts may not be able to support them. ifelse(XX_PLATFORM,windows,`XX_TP(XX_FB(windowscodepage)) Overrides the workstation code page used for XX_SM(ASCII) file transfers. By default, the system XX_SM(ANSI) code page is used. ')dnl XX_TPE()dnl XX_LP There are also resources that control the default values for each of the file transfer parameters. These resources have the same names as the XX_FB(Transfer()) keywords, but with XX_FB(ft) prepended and the option name capitalized. E.g., the default for the XX_FB(mode) keyword is the XX_FB(XX_PRODUCT.ftMode) resource. suite3270-4.1/Common/ft_cut.c000066400000000000000000000446001413735575200157230ustar00rootroot00000000000000/* * Copyright (c) 1996-2012, 2014-2015, 2018-2020 Paul Mattes. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the names of Paul Mattes nor the names of his contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO * EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * ft_cut.c * File transfer, data movement logic, CUT version */ #include #include "globals.h" #include "ctlr.h" #include "3270ds.h" #include "actions.h" #include "ctlrc.h" #include "ft_cut.h" #include "ft_cut_ds.h" #include "ft_private.h" #include "unicodec.h" #include "ft.h" #include "names.h" #include "tables.h" #include "trace.h" #include "utils.h" static bool cut_xfer_in_progress = false; /* Data stream conversion tables. */ #define NQ 4 /* number of quadrants */ #define NE 77 /* number of elements per quadrant */ #define OTHER_2 2 /* "OTHER 2" quadrant (includes NULL) */ #define XLATE_NULL 0xc1 /* translation of NULL */ static char alphas[NE + 1] = " ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789%&_()<+,-./:>?"; static struct { unsigned char selector; unsigned char xlate[NE]; } conv[NQ] = { { 0x5e, /* ';' */ { 0x40,0xc1,0xc2,0xc3, 0xc4,0xc5,0xc6,0xc7, 0xc8,0xc9,0xd1,0xd2, 0xd3,0xd4,0xd5,0xd6, 0xd7,0xd8,0xd9,0xe2, 0xe3,0xe4,0xe5,0xe6, 0xe7,0xe8,0xe9,0x81, 0x82,0x83,0x84,0x85, 0x86,0x87,0x88,0x89, 0x91,0x92,0x93,0x94, 0x95,0x96,0x97,0x98, 0x99,0xa2,0xa3,0xa4, 0xa5,0xa6,0xa7,0xa8, 0xa9,0xf0,0xf1,0xf2, 0xf3,0xf4,0xf5,0xf6, 0xf7,0xf8,0xf9,0x6c, 0x50,0x6d,0x4d,0x5d, 0x4c,0x4e,0x6b,0x60, 0x4b,0x61,0x7a,0x6e, 0x6f } }, { 0x7e, /* '=' */ { 0x20,0x41,0x42,0x43, 0x44,0x45,0x46,0x47, 0x48,0x49,0x4a,0x4b, 0x4c,0x4d,0x4e,0x4f, 0x50,0x51,0x52,0x53, 0x54,0x55,0x56,0x57, 0x58,0x59,0x5a,0x61, 0x62,0x63,0x64,0x65, 0x66,0x67,0x68,0x69, 0x6a,0x6b,0x6c,0x6d, 0x6e,0x6f,0x70,0x71, 0x72,0x73,0x74,0x75, 0x76,0x77,0x78,0x79, 0x7a,0x30,0x31,0x32, 0x33,0x34,0x35,0x36, 0x37,0x38,0x39,0x25, 0x26,0x27,0x28,0x29, 0x2a,0x2b,0x2c,0x2d, 0x2e,0x2f,0x3a,0x3b, 0x3f } }, { 0x5c, /* '*' */ { 0x00,0x00,0x01,0x02, 0x03,0x04,0x05,0x06, 0x07,0x08,0x09,0x0a, 0x0b,0x0c,0x0d,0x0e, 0x0f,0x10,0x11,0x12, 0x13,0x14,0x15,0x16, 0x17,0x18,0x19,0x00, 0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00, 0x00,0x3c,0x3d,0x3e, 0x00,0xfa,0xfb,0xfc, 0xfd,0xfe,0xff,0x7b, 0x7c,0x7d,0x7e,0x7f, 0x1a,0x1b,0x1c,0x1d, 0x1e,0x1f,0x00,0x00, 0x00 } }, { 0x7d, /* '\'' */ { 0x00,0xa0,0xa1,0xea, 0xeb,0xec,0xed,0xee, 0xef,0xe0,0xe1,0xaa, 0xab,0xac,0xad,0xae, 0xaf,0xb0,0xb1,0xb2, 0xb3,0xb4,0xb5,0xb6, 0xb7,0xb8,0xb9,0x80, 0x00,0xca,0xcb,0xcc, 0xcd,0xce,0xcf,0xc0, 0x00,0x8a,0x8b,0x8c, 0x8d,0x8e,0x8f,0x90, 0x00,0xda,0xdb,0xdc, 0xdd,0xde,0xdf,0xd0, 0x00,0x00,0x21,0x22, 0x23,0x24,0x5b,0x5c, 0x00,0x5e,0x5f,0x00, 0x9c,0x9d,0x9e,0x9f, 0xba,0xbb,0xbc,0xbd, 0xbe,0xbf,0x9a,0x9b, 0x00 } } }; static char table6[] = "abcdefghijklmnopqrstuvwxyz&-.,:+ABCDEFGHIJKLMNOPQRSTUVWXYZ012345"; static int quadrant = -1; static unsigned long expanded_length; static char *saved_errmsg = NULL; #define XLATE_NBUF 32 static int xlate_buffered = 0; /* buffer count */ static int xlate_buf_ix = 0; /* buffer index */ static unsigned char xlate_buf[XLATE_NBUF]; /* buffer */ static bool cut_eof = false; static void cut_control_code(void); static void cut_data_request(void); static void cut_retransmit(void); static void cut_data(void); static void cut_ack(void); static void cut_abort(const char *s, unsigned short reason); static unsigned from6(unsigned char c); static int xlate_getc(void); /* * Convert a buffer for uploading (host->local). * Returns the length of the converted data. * If there is a conversion error, calls cut_abort() and returns -1. */ static int upload_convert(unsigned char *buf, int len, unsigned char *obuf, size_t obuf_len) { unsigned char *ob0 = obuf; unsigned char *ob = ob0; size_t nx; while (len-- && obuf_len) { unsigned char c = *buf++; char *ixp; size_t ix; retry: if (quadrant < 0) { /* Find the quadrant. */ for (quadrant = 0; quadrant < NQ; quadrant++) { if (c == conv[quadrant].selector) { break; } } if (quadrant >= NQ) { cut_abort(get_message("ftCutConversionError"), SC_ABORT_XMIT); return -1; } continue; } /* Make sure it's in a valid range. */ if (c < 0x40 || c > 0xf9) { cut_abort(get_message("ftCutConversionError"), SC_ABORT_XMIT); return -1; } /* Translate to a quadrant index. */ ixp = strchr(alphas, ebc2asc0[c]); if (ixp == NULL) { /* Try a different quadrant. */ quadrant = -1; goto retry; } ix = ixp - alphas; /* * See if it's mapped by that quadrant, handling NULLs * specially. */ if (quadrant != OTHER_2 && c != XLATE_NULL && !conv[quadrant].xlate[ix]) { /* Try a different quadrant. */ quadrant = -1; goto retry; } /* Map it. */ c = conv[quadrant].xlate[ix]; if (ftc->ascii_flag && ftc->cr_flag && (c == '\r' || c == 0x1a)) { continue; } if (!(ftc->ascii_flag && ftc->remap_flag)) { /* No further translation necessary. */ *ob++ = c; obuf_len--; continue; } /* * Convert to local multi-byte. * We do that by inverting the host's EBCDIC-to-ASCII map, * getting back to EBCDIC, and converting to multi-byte from * there. */ switch (fts.dbcs_state) { case FT_DBCS_NONE: if (c == EBC_so) { fts.dbcs_state = FT_DBCS_SO; continue; } /* fall through to non-DBCS case below */ break; case FT_DBCS_SO: if (c == EBC_si) { fts.dbcs_state = FT_DBCS_NONE; } else { fts.dbcs_byte1 = i_asc2ft[c]; fts.dbcs_state = FT_DBCS_LEFT; } continue; case FT_DBCS_LEFT: if (c == EBC_si) { fts.dbcs_state = FT_DBCS_NONE; continue; } nx = ft_ebcdic_to_multibyte((fts.dbcs_byte1 << 8) | i_asc2ft[c], (char *)ob, obuf_len); if (nx && (ob[nx - 1] == '\0')) { nx--; } ob += nx; obuf_len -= nx; fts.dbcs_state = FT_DBCS_SO; continue; } if (c < 0x20 || ((c >= 0x80 && c < 0xa0 && c != 0x9f))) { /* * Control code, treat it as Unicode. * * Note that IND$FILE and the VM 'TYPE' command think * that EBCDIC X'E1' is a control code; IND$FILE maps * it onto ASCII 0x9f. So we skip it explicitly and * treat it as printable here. */ nx = ft_unicode_to_multibyte(c, (char *)ob, obuf_len); } else if (c == 0xff) { nx = ft_unicode_to_multibyte(0x9f, (char *)ob, obuf_len); } else { /* Displayable character, remap. */ c = i_asc2ft[c]; nx = ft_ebcdic_to_multibyte(c, (char *)ob, obuf_len); } if (nx && (ob[nx - 1] == '\0')) { nx--; } ob += nx; obuf_len -= nx; } return (int)(ob - ob0); } /* * Store a download (local->host) character. * Returns the number of bytes stored. */ static int store_download(unsigned char c, unsigned char *ob) { unsigned char *ixp; size_t ix; int oq; /* Quadrant already defined. */ if (quadrant >= 0) { ixp = (unsigned char *)memchr(conv[quadrant].xlate, c, NE); if (ixp != NULL) { ix = ixp - conv[quadrant].xlate; *ob++ = asc2ebc0[(int)alphas[ix]]; return 1; } } /* Locate a quadrant. */ oq = quadrant; for (quadrant = 0; quadrant < NQ; quadrant++) { if (quadrant == oq) { continue; } ixp = (unsigned char *)memchr(conv[quadrant].xlate, c, NE); if (ixp == NULL) { continue; } ix = ixp - conv[quadrant].xlate; *ob++ = conv[quadrant].selector; *ob++ = asc2ebc0[(int)alphas[ix]]; return 2; } quadrant = -1; fprintf(stderr, "Oops\n"); return 0; } /* Convert a buffer for downloading (local->host). */ static size_t download_convert(unsigned const char *buf, unsigned len, unsigned char *xobuf) { unsigned char *ob0 = xobuf; unsigned char *ob = ob0; while (len) { unsigned char c = *buf; int consumed; enum me_fail error; ebc_t e; ucs4_t u; /* Handle nulls separately. */ if (!c) { if (fts.last_dbcs) { ob += store_download(EBC_si, ob); fts.last_dbcs = false; } if (quadrant != OTHER_2) { quadrant = OTHER_2; *ob++ = conv[quadrant].selector; } *ob++ = XLATE_NULL; buf++; len--; continue; } if (!(ftc->ascii_flag && ftc->remap_flag)) { ob += store_download(c, ob); buf++; len--; continue; } /* * Translate. * * The host uses a fixed EBCDIC-to-ASCII translation table, * which was derived empirically into i_ft2asc/i_asc2ft. * Invert that so that when the host applies its conversion, * it gets the right EBCDIC code. * * DBCS is a guess at this point, assuming that SO and SI * are unmodified by IND$FILE. */ u = ft_multibyte_to_unicode((const char *)buf, len, &consumed, &error); if (u < 0x20 || ((u >= 0x80 && u < 0x9f))) { e = i_asc2ft[u]; } else if (u == 0x9f) { e = 0xff; } else { e = unicode_to_ebcdic(u); } if (e & 0xff00) { if (!fts.last_dbcs) { ob += store_download(EBC_so, ob); } ob += store_download(i_ft2asc[(e >> 8) & 0xff], ob); ob += store_download(i_ft2asc[e & 0xff], ob); fts.last_dbcs = true; } else { if (fts.last_dbcs) { ob += store_download(EBC_si, ob); fts.last_dbcs = false; } if (e == 0) { ob += store_download('?', ob); } else { ob += store_download(i_ft2asc[e], ob); } } buf += consumed; len -= consumed; } return ob - ob0; } /* * Main entry point from ctlr.c. * We have received what looks like an appropriate message from the host. */ void ft_cut_data(void) { switch (ea_buf[O_FRAME_TYPE].ec) { case FT_CONTROL_CODE: cut_control_code(); break; case FT_DATA_REQUEST: cut_data_request(); break; case FT_RETRANSMIT: cut_retransmit(); break; case FT_DATA: cut_data(); break; default: trace_ds("< FT unknown 0x%02x\n", ea_buf[O_FRAME_TYPE].ec); cut_abort(get_message("ftCutUnknownFrame"), SC_ABORT_XMIT); break; } } /* * Process a control code from the host. */ static void cut_control_code(void) { unsigned short code; char *buf; char *bp; int i; trace_ds("< FT CONTROL_CODE "); code = (ea_buf[O_CC_STATUS_CODE].ec << 8) | ea_buf[O_CC_STATUS_CODE + 1].ec; switch (code) { case SC_HOST_ACK: trace_ds("HOST_ACK\n"); cut_xfer_in_progress = true; expanded_length = 0; quadrant = -1; xlate_buffered = 0; xlate_buf_ix = 0; cut_eof = false; cut_ack(); ft_running(true); break; case SC_XFER_COMPLETE: trace_ds("XFER_COMPLETE\n"); cut_ack(); cut_xfer_in_progress = false; ft_complete(NULL); break; case SC_ABORT_FILE: case SC_ABORT_XMIT: trace_ds("ABORT\n"); cut_xfer_in_progress = false; cut_ack(); if (ft_state == FT_ABORT_SENT && saved_errmsg != NULL) { buf = saved_errmsg; saved_errmsg = NULL; } else { size_t mb_len = 161; bp = buf = Malloc(mb_len); for (i = 0; i < 80; i++) { size_t xlen; xlen = ft_ebcdic_to_multibyte(ea_buf[O_CC_MESSAGE + i].ec, bp, mb_len); if (xlen) { bp += xlen - 1; mb_len -= xlen - 1; } } *bp-- = '\0'; while (bp >= buf && *bp == ' ') { *bp-- = '\0'; } if (bp >= buf && *bp == '$') { *bp-- = '\0'; } while (bp >= buf && *bp == ' ') { *bp-- = '\0'; } if (!*buf) { strcpy(buf, get_message("ftHostCancel")); } } ft_complete(buf); Free(buf); break; default: trace_ds("unknown 0x%04x\n", code); cut_abort(get_message("ftCutUnknownControl"), SC_ABORT_XMIT); break; } } /* * Process a data request from the host. */ static void cut_data_request(void) { unsigned char seq = ea_buf[O_DR_FRAME_SEQ].ec; int count; unsigned char cs; int c; int i; unsigned char attr; trace_ds("< FT DATA_REQUEST %u\n", from6(seq)); if (ft_state == FT_ABORT_WAIT) { cut_abort(get_message("ftUserCancel"), SC_ABORT_FILE); return; } /* Copy data into the screen buffer. */ count = 0; while (count < O_UP_MAX && !cut_eof) { if ((c = xlate_getc()) == EOF) { cut_eof = true; break; } ctlr_add(O_UP_DATA + count, c, 0); count++; } /* Check for errors. */ if (ferror(fts.local_file)) { int j; char *msg; /* Clean out any data we may have written. */ for (j = 0; j < count; j++) { ctlr_add(O_UP_DATA + j, 0, 0); } /* Abort the transfer. */ msg = xs_buffer("read(%s): %s", ftc->local_filename, strerror(errno)); cut_abort(msg, SC_ABORT_FILE); Free(msg); return; } /* Send special data for EOF. */ if (!count && cut_eof) { ctlr_add(O_UP_DATA, EOF_DATA1, 0); ctlr_add(O_UP_DATA+1, EOF_DATA2, 0); count = 2; } /* Compute the other fields. */ ctlr_add(O_UP_FRAME_SEQ, seq, 0); cs = 0; for (i = 0; i < count; i++) { cs ^= ea_buf[O_UP_DATA + i].ec; } ctlr_add(O_UP_CSUM, asc2ebc0[(int)table6[cs & 0x3f]], 0); ctlr_add(O_UP_LEN, asc2ebc0[(int)table6[(count >> 6) & 0x3f]], 0); ctlr_add(O_UP_LEN+1, asc2ebc0[(int)table6[count & 0x3f]], 0); /* XXX: Change the data field attribute so it doesn't display. */ attr = ea_buf[O_DR_SF].fa; attr = (attr & ~FA_INTENSITY) | FA_INT_ZERO_NSEL; ctlr_add_fa(O_DR_SF, attr, 0); /* Send it up to the host. */ trace_ds("> FT DATA %u\n", from6(seq)); ft_update_length(); expanded_length += count; run_action(AnEnter, IA_FT, NULL, NULL); } /* * (Improperly) process a retransmit from the host. */ static void cut_retransmit(void) { trace_ds("< FT RETRANSMIT\n"); cut_abort(get_message("ftCutRetransmit"), SC_ABORT_XMIT); } /* * Convert an encoded integer. */ static unsigned from6(unsigned char c) { char *p; c = ebc2asc0[c]; p = strchr(table6, c); if (p == NULL) { return 0; } return (unsigned)(p - table6); } /* * Process data from the host. */ static void cut_data(void) { static unsigned char cvbuf[O_RESPONSE - O_DT_DATA]; static unsigned char cvobuf[4 * (O_RESPONSE - O_DT_DATA)]; unsigned short raw_length; int conv_length; register int i; trace_ds("< FT DATA\n"); if (ft_state == FT_ABORT_WAIT) { cut_abort(get_message("ftUserCancel"), SC_ABORT_FILE); return; } /* Copy and convert the data. */ raw_length = from6(ea_buf[O_DT_LEN].ec) << 6 | from6(ea_buf[O_DT_LEN + 1].ec); if ((int)raw_length > O_RESPONSE - O_DT_DATA) { cut_abort(get_message("ftCutOversize"), SC_ABORT_XMIT); return; } for (i = 0; i < (int)raw_length; i++) { cvbuf[i] = ea_buf[O_DT_DATA + i].ec; } if (raw_length == 2 && cvbuf[0] == EOF_DATA1 && cvbuf[1] == EOF_DATA2) { trace_ds("< FT EOF\n"); cut_ack(); return; } conv_length = upload_convert(cvbuf, raw_length, cvobuf, sizeof(cvobuf)); if (conv_length < 0) { return; } /* Write it to the file. */ if (fwrite((char *)cvobuf, conv_length, 1, fts.local_file) == 0) { char *msg; msg = xs_buffer("write(%s): %s", ftc->local_filename, strerror(errno)); cut_abort(msg, SC_ABORT_FILE); Free(msg); } else { fts.length += conv_length; ft_update_length(); cut_ack(); } } /* * Acknowledge a host command. */ static void cut_ack(void) { trace_ds("> FT ACK\n"); run_action(AnEnter, IA_FT, NULL, NULL); } /* * Abort a transfer in progress. */ static void cut_abort(const char *s, unsigned short reason) { /* Save the error message. */ Replace(saved_errmsg, NewString(s)); /* Send the abort sequence. */ ctlr_add(RO_FRAME_TYPE, RFT_CONTROL_CODE, 0); ctlr_add(RO_FRAME_SEQ, ea_buf[O_DT_FRAME_SEQ].ec, 0); ctlr_add(RO_REASON_CODE, HIGH8(reason), 0); ctlr_add(RO_REASON_CODE+1, LOW8(reason), 0); trace_ds("> FT CONTROL_CODE ABORT\n"); run_action(AnPF, IA_FT, "2", NULL); /* Update the in-progress pop-up. */ ft_aborting(); } /* * Get the next translated character from the local file. * Returns the character (in EBCDIC), or EOF. */ static int xlate_getc(void) { int r; int c; unsigned char cbuf[32]; size_t nc; int consumed; enum me_fail error; char mb[16]; int mb_len = 0; /* If there is a data buffered, return it. */ if (xlate_buffered) { r = xlate_buf[xlate_buf_ix]; xlate_buf_ix++; xlate_buffered--; return r; } if (ftc->ascii_flag) { /* * Get the next (possibly multi-byte) character from the file. */ do { c = fgetc(fts.local_file); if (c == EOF) { if (fts.last_dbcs) { fts.last_dbcs = false; return EBC_si; } return c; } fts.length++; mb[mb_len++] = c; error = ME_NONE; ft_multibyte_to_unicode(mb, mb_len, &consumed, &error); if (error == ME_INVALID) { mb[0] = '?'; mb_len = 1; error = ME_NONE; } } while (error == ME_SHORT); /* Expand it. */ if (ftc->ascii_flag && ftc->cr_flag && !fts.last_cr && c == '\n') { nc = download_convert((unsigned const char *)"\r", 1, cbuf); } else { nc = 0; fts.last_cr = (c == '\r'); } } else { /* Binary, just read it. */ c = fgetc(fts.local_file); if (c == EOF) return c; mb[0] = c; mb_len = 1; nc = 0; fts.length++; } /* Convert it. */ nc += download_convert((unsigned char *)mb, mb_len, &cbuf[nc]); /* Return it and buffer what's left. */ r = cbuf[0]; if (nc > 1) { size_t i; for (i = 1; i < nc; i++) { xlate_buf[xlate_buffered++] = cbuf[i]; } xlate_buf_ix = 0; } return r; } suite3270-4.1/Common/ft_dft.c000066400000000000000000000435121413735575200157060ustar00rootroot00000000000000/* * Copyright (c) 1993-2009, 2013-2016, 2019 Paul Mattes. * Copyright (c) 1995, Dick Altenbern. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the names of Paul Mattes, Dick Altenbern nor the names of * their contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES AND DICK ALTENBERN "AS IS" AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL PAUL MATTES OR DICK ALTENBERN BE LIABLE FOR * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH * DAMAGE. */ /* * ft_dft.c * File transfer: DFT-style data processing functions */ #include "globals.h" #include "appres.h" #include "3270ds.h" #include "ft_dft_ds.h" #include "kybd.h" #include "ft_dft.h" #include "ft_private.h" #include "unicodec.h" #include "ft.h" #include "telnet_core.h" #include "trace.h" #include "utils.h" #include /* Macros. */ #define OPEN_MSG "FT:MSG" /* Open request for message */ #define END_TRANSFER "TRANS03" /* Message for xfer complete */ #define DFT_MAX_UNGETC 32 /* Typedefs. */ struct data_buffer { char sf_length[2]; /* SF length = 0x0023 */ char sf_d0; /* 0xD0 */ char sf_request_type[2]; /* request type */ char compress_indic[2]; /* 0xc080 */ char begin_data; /* 0x61 */ char data_length[2]; /* Data Length in 3270 byte order+5 */ char data[256]; /* The actual data */ }; /* Globals. */ /* Statics. */ static bool message_flag = false; /* Open Request for msg received */ static int dft_eof; static unsigned long recnum; static char *abort_string = NULL; static unsigned char *dft_savebuf = NULL; static size_t dft_savebuf_len = 0; static size_t dft_savebuf_max = 0; static unsigned char dft_ungetc_cache[DFT_MAX_UNGETC]; static size_t dft_ungetc_count = 0; static void dft_abort(const char *s, unsigned short code); static void dft_close_request(void); static void dft_data_insert(struct data_buffer *data_bufr); static void dft_get_request(void); static void dft_insert_request(void); static void dft_open_request(unsigned short len, unsigned char *cp); static void dft_set_cur_req(void); /* Process a Transfer Data structured field from the host. */ void ft_dft_data(unsigned char *data, int length _is_unused) { struct data_buffer *data_bufr = (struct data_buffer *)data; unsigned short data_length, data_type; unsigned char *cp; if (ft_state == FT_NONE) { trace_ds(" (no transfer in progress)\n"); return; } /* Get the length. */ cp = (unsigned char *)(data_bufr->sf_length); GET16(data_length, cp); /* Get the function type. */ cp = (unsigned char *)(data_bufr->sf_request_type); GET16(data_type, cp); /* Handle the requests */ switch (data_type) { case TR_OPEN_REQ: dft_open_request(data_length, cp); break; case TR_INSERT_REQ: /* Insert Request */ dft_insert_request(); break; case TR_DATA_INSERT: dft_data_insert(data_bufr); break; case TR_SET_CUR_REQ: dft_set_cur_req(); break; case TR_GET_REQ: dft_get_request(); break; case TR_CLOSE_REQ: dft_close_request(); break; default: trace_ds(" Unsupported(0x%04x)\n", data_type); break; } } /* Process an Open request. */ static void dft_open_request(unsigned short len, unsigned char *cp) { char *name = "?"; char namebuf[8]; char *s; unsigned short recsz = 0; if (len == 0x23) { name = (char *)cp + 25; } else if (len == 0x29) { unsigned char *recszp; recszp = cp + 27; GET16(recsz, recszp); name = (char *)cp + 31; } else { dft_abort(get_message("ftDftUknownOpen"), TR_OPEN_REQ); return; } memcpy(namebuf, name, 7); namebuf[7] = '\0'; s = &namebuf[6]; while (s >= namebuf && *s == ' ') { *s-- = '\0'; } if (recsz) { trace_ds(" Open('%s',recsz=%u)\n", namebuf, recsz); } else { trace_ds(" Open('%s')\n", namebuf); } if (!strcmp(namebuf, OPEN_MSG)) { message_flag = true; } else { message_flag = false; ft_running(false); } dft_eof = false; recnum = 1; dft_ungetc_count = 0; /* Acknowledge the Open. */ trace_ds("> WriteStructuredField FileTransferData OpenAck\n"); obptr = obuf; space3270out(6); *obptr++ = AID_SF; SET16(obptr, 5); *obptr++ = SF_TRANSFER_DATA; SET16(obptr, 9); net_output(); } /* Process an Insert request. */ static void dft_insert_request(void) { trace_ds(" Insert\n"); /* Doesn't currently do anything. */ } /* Send an acknowledgement frame back. */ static void dft_data_ack(void) { trace_ds("> WriteStructuredField FileTransferData DataAck(rec=%lu)\n", recnum); obptr = obuf; space3270out(12); *obptr++ = AID_SF; SET16(obptr, 11); *obptr++ = SF_TRANSFER_DATA; SET16(obptr, TR_NORMAL_REPLY); SET16(obptr, TR_RECNUM_HDR); SET32(obptr, recnum); recnum++; net_output(); } /* Process a Data Insert request. */ static void dft_data_insert(struct data_buffer *data_bufr) { /* Received a data buffer, get the length and process it */ int my_length; unsigned char *cp; if (!message_flag && ft_state == FT_ABORT_WAIT) { dft_abort(get_message("ftUserCancel"), TR_DATA_INSERT); return; } cp = (unsigned char *) (data_bufr->data_length); /* Get the data length in native format. */ GET16(my_length, cp); /* Adjust for 5 extra count */ my_length -= 5; trace_ds(" Data(rec=%lu) %d bytes\n", recnum, my_length); /* * First, check to see if we have message data or file data. * Message data will result in a popup. */ if (message_flag) { /* Data is from a message */ unsigned char *msgp; unsigned char *dollarp; /* Ack the message. */ dft_data_ack(); /* Get storage to copy the message. */ msgp = (unsigned char *)Malloc(my_length + 1); /* Copy the message. */ memcpy(msgp, data_bufr->data, my_length); /* Null terminate the string. */ dollarp = (unsigned char *)memchr(msgp, '$', my_length); if (dollarp != NULL) { *dollarp = '\0'; } else { *(msgp + my_length) = '\0'; } /* If transfer completed ok, use our msg. */ if (memcmp(msgp, END_TRANSFER, strlen(END_TRANSFER)) == 0) { Free(msgp); ft_complete(NULL); } else if (ft_state == FT_ABORT_SENT && abort_string != NULL) { Free(msgp); ft_complete(abort_string); Replace(abort_string, NULL); } else { ft_complete((char *)msgp); Free(msgp); } return; } /* Process file data. */ if (my_length > 0) { size_t rv = 1; /* Write the data out to the file. */ if (ftc->ascii_flag && (ftc->remap_flag || ftc->cr_flag)) { size_t obuf_len = 4 * my_length; char *ob0 = Malloc(obuf_len); char *ob = ob0; unsigned char *s = (unsigned char *)data_bufr->data; unsigned len = my_length; size_t nx; /* Copy and convert data_bufr->data to ob0. */ while (len-- && obuf_len) { unsigned char c = *s++; /* Strip CR's and ^Z's. */ if (ftc->cr_flag && ((c == '\r' || c == 0x1a))) { continue; } if (!ftc->remap_flag) { *ob++ = c; obuf_len--; continue; } /* * Convert to local multi-byte. * We do that by inverting the host's * EBCDIC-to-ASCII map, getting back to * EBCDIC, and converting to multi-byte * from there. */ switch (fts.dbcs_state) { case FT_DBCS_NONE: if (c == EBC_so) { fts.dbcs_state = FT_DBCS_SO; continue; } /* * fall through to non-DBCS case below */ break; case FT_DBCS_SO: if (c == EBC_si) { fts.dbcs_state = FT_DBCS_NONE; } else { fts.dbcs_byte1 = i_asc2ft[c]; fts.dbcs_state = FT_DBCS_LEFT; } continue; case FT_DBCS_LEFT: if (c == EBC_si) { fts.dbcs_state = FT_DBCS_NONE; continue; } nx = ft_ebcdic_to_multibyte( (fts.dbcs_byte1 << 8) | i_asc2ft[c], (char *)ob, obuf_len); if (nx && (ob[nx - 1] == '\0')) { nx--; } ob += nx; obuf_len -= nx; fts.dbcs_state = FT_DBCS_SO; continue; } if (c < 0x20 || (c >= 0x80 && c < 0xa0 && c != 0x9f)) { /* * Control code, treat it as Unicode. * * Note that IND$FILE and the VM 'TYPE' * command think that EBCDIC X'E1' is * a control code; IND$FILE maps it * onto ASCII 0x9f. So we skip it * explicitly and treat it as printable * here. */ nx = ft_unicode_to_multibyte(c, ob, obuf_len); } else if (c == 0xff) { /* IND$FILE maps X'FF' to 0xff. We want U+009F. */ nx = ft_unicode_to_multibyte(0x9f, ob, obuf_len); } else { /* Displayable character, remap. */ c = i_asc2ft[c]; nx = ft_ebcdic_to_multibyte(c, (char *)ob, obuf_len); } if (nx && (ob[nx - 1] == '\0')) { nx--; } ob += nx; obuf_len -= nx; } /* Write the result to the file. */ if (ob - ob0) { rv = fwrite(ob0, ob - ob0, (size_t)1, fts.local_file); fts.length += ob - ob0; } Free(ob0); } else { /* Write the buffer to the file directly. */ rv = fwrite((char *)data_bufr->data, my_length, (size_t)1, fts.local_file); fts.length += my_length; } if (!rv) { /* write failed */ char *buf; buf = xs_buffer("write(%s): %s", ftc->local_filename, strerror(errno)); dft_abort(buf, TR_DATA_INSERT); Free(buf); } /* Add up amount transferred. */ ft_update_length(); } /* Send an acknowledgement frame back. */ dft_data_ack(); } /* Process a Set Cursor request. */ static void dft_set_cur_req(void) { trace_ds(" SetCursor\n"); /* Currently doesn't do anything. */ } /* Store a byte inthe input buffer or ungetc cache. */ static void store_inbyte(unsigned char c, unsigned char **bufptr, size_t *numbytes) { if (*numbytes) { *(*bufptr) = c; (*bufptr)++; (*numbytes)--; } else { dft_ungetc_cache[dft_ungetc_count++] = c; } } /* * Read a character from a local file in ASCII mode. * Stores the data in 'bufptr' and returns the number of bytes stored. * Returns -1 for EOF. */ static size_t dft_ascii_read(unsigned char *bufptr, size_t numbytes) { char inbuf[16]; int in_ix = 0; int c; enum me_fail error; ebc_t e; int consumed; ucs4_t u; /* Belt-n-suspenders. */ if (!numbytes) { return 0; } /* Return data from the ungetc cache first. */ if (dft_ungetc_count) { size_t nm = dft_ungetc_count; if (nm > numbytes) { nm = numbytes; } memcpy(bufptr, dft_ungetc_cache, nm); if (dft_ungetc_count > nm) { memmove(dft_ungetc_cache, &dft_ungetc_cache[nm], dft_ungetc_count - nm); } dft_ungetc_count -= nm; return nm; } if (ftc->remap_flag) { /* Read bytes until we have a legal multibyte sequence. */ do { int consumed; c = fgetc(fts.local_file); if (c == EOF) { if (fts.last_dbcs) { *bufptr = EBC_si; fts.last_dbcs = false; return 1; } return -1; } error = ME_NONE; inbuf[in_ix++] = c; ft_multibyte_to_unicode(inbuf, in_ix, &consumed, &error); if (error == ME_INVALID) { inbuf[0] = '?'; in_ix = 1; error = ME_NONE; } } while (error == ME_SHORT); } else { /* Get a byte from the file. */ c = fgetc(fts.local_file); if (c == EOF) { return -1; } } /* Expand NL to CR/LF. */ if (ftc->cr_flag && !fts.last_cr && c == '\n') { if (fts.last_dbcs) { *bufptr = EBC_si; dft_ungetc_cache[0] = '\r'; dft_ungetc_cache[1] = '\n'; dft_ungetc_count = 2; fts.last_dbcs = false; return 1; } else { *bufptr = '\r'; dft_ungetc_cache[0] = '\n'; dft_ungetc_count = 1; } return 1; } fts.last_cr = (c == '\r'); /* The no-remap case is pretty simple. */ if (!ftc->remap_flag) { *bufptr = c; return 1; } /* * Translate, inverting the host's fixed EBCDIC-to-ASCII conversion * table and applying the host code page. * Control codes are treated as Unicode and mapped directly. * We also handle DBCS here. */ u = ft_multibyte_to_unicode(inbuf, in_ix, &consumed, &error); if (u < 0x20 || ((u >= 0x80 && u < 0x9f))) { e = i_asc2ft[u]; } else if (u == 0x9f) { e = 0xff; } else { e = unicode_to_ebcdic(u); } if (e & 0xff00) { unsigned char *bp0 = bufptr; if (!fts.last_dbcs) { store_inbyte(EBC_so, &bufptr, &numbytes); } store_inbyte(i_ft2asc[(e >> 8) & 0xff], &bufptr, &numbytes); store_inbyte(i_ft2asc[e & 0xff], &bufptr, &numbytes); fts.last_dbcs = true; return bufptr - bp0; } else { unsigned char nc = e? i_ft2asc[e]: '?'; if (fts.last_dbcs) { *bufptr = EBC_si; dft_ungetc_cache[0] = nc; dft_ungetc_count = 1; fts.last_dbcs = false; } else { *bufptr = nc; } return 1; } } /* Process a Get request. */ static void dft_get_request(void) { size_t numbytes; size_t numread; size_t total_read = 0; unsigned char *bufptr; trace_ds(" Get\n"); if (!message_flag && ft_state == FT_ABORT_WAIT) { dft_abort(get_message("ftUserCancel"), TR_GET_REQ); return; } /* Read a buffer's worth. */ space3270out(ftc->dft_buffersize); numbytes = ftc->dft_buffersize - 27; /* always read 5 bytes less than we're allowed */ bufptr = obuf + 17; while (!dft_eof && numbytes) { if (ftc->ascii_flag && (ftc->remap_flag || ftc->cr_flag)) { numread = dft_ascii_read(bufptr, numbytes); if (numread == (size_t)-1) { dft_eof = true; break; } bufptr += numread; numbytes -= numread; total_read += numread; } else { /* Binary read. */ numread = fread(bufptr, 1, numbytes, fts.local_file); if (numread <= 0) { break; } bufptr += numread; numbytes -= numread; total_read += numread; if (feof(fts.local_file)) { dft_eof = true; } if (feof(fts.local_file) || ferror(fts.local_file)) { break; } } } /* Check for read error. */ if (ferror(fts.local_file)) { char *buf; buf = xs_buffer("read(%s): %s", ftc->local_filename, strerror(errno)); dft_abort(buf, TR_GET_REQ); Free(buf); return; } /* Set up SF header for Data or EOF. */ obptr = obuf; *obptr++ = AID_SF; obptr += 2; /* skip SF length for now */ *obptr++ = SF_TRANSFER_DATA; if (total_read) { trace_ds("> WriteStructuredField FileTransferData Data(rec=%lu) %d " "bytes\n", recnum, (int)total_read); SET16(obptr, TR_GET_REPLY); SET16(obptr, TR_RECNUM_HDR); SET32(obptr, recnum); recnum++; SET16(obptr, TR_NOT_COMPRESSED); *obptr++ = TR_BEGIN_DATA; SET16(obptr, total_read + 5); obptr += total_read; fts.length += total_read; } else { trace_ds("> WriteStructuredField FileTransferData EOF\n"); *obptr++ = HIGH8(TR_GET_REQ); *obptr++ = TR_ERROR_REPLY; SET16(obptr, TR_ERROR_HDR); SET16(obptr, TR_ERR_EOF); dft_eof = true; } /* Set the SF length. */ bufptr = obuf + 1; SET16(bufptr, obptr - (obuf + 1)); /* Save the data. */ dft_savebuf_len = obptr - obuf; if (dft_savebuf_len > dft_savebuf_max) { dft_savebuf_max = dft_savebuf_len; Replace(dft_savebuf, (unsigned char *)Malloc(dft_savebuf_max)); } memcpy(dft_savebuf, obuf, dft_savebuf_len); aid = AID_SF; /* Write the data. */ net_output(); ft_update_length(); } /* Process a Close request. */ static void dft_close_request(void) { /* * Recieved a close request from the system. * Return a close acknowledgement. */ trace_ds(" Close\n"); trace_ds("> WriteStructuredField FileTransferData CloseAck\n"); obptr = obuf; space3270out(6); *obptr++ = AID_SF; SET16(obptr, 5); /* length */ *obptr++ = SF_TRANSFER_DATA; SET16(obptr, TR_CLOSE_REPLY); net_output(); } /* Abort a transfer. */ static void dft_abort(const char *s, unsigned short code) { Replace(abort_string, NewString(s)); trace_ds("> WriteStructuredField FileTransferData Error\n"); obptr = obuf; space3270out(10); *obptr++ = AID_SF; SET16(obptr, 9); /* length */ *obptr++ = SF_TRANSFER_DATA; *obptr++ = HIGH8(code); *obptr++ = TR_ERROR_REPLY; SET16(obptr, TR_ERROR_HDR); SET16(obptr, TR_ERR_CMDFAIL); net_output(); /* Update the pop-up and state. */ ft_aborting(); } /* Processes a Read Modified command when there is upload data pending. */ void dft_read_modified(void) { if (dft_savebuf_len) { trace_ds("> WriteStructuredField FileTransferData\n"); obptr = obuf; space3270out(dft_savebuf_len); memcpy(obptr, dft_savebuf, dft_savebuf_len); obptr += dft_savebuf_len; net_output(); } } /* Default/bound the buffersize for generating a Query Reply. */ int set_dft_buffersize(int size) { /* * Pick the default: * - New resource * - Old resource * - Hard-coded default */ if (!size && !(size = appres.ft.dft_buffer_size)) { size = DFT_BUF; } /* Bound the result. */ if (size > DFT_MAX_BUF) { size = DFT_MAX_BUF; } if (size < DFT_MIN_BUF) { size = DFT_MIN_BUF; } return size; } suite3270-4.1/Common/ft_gui_stubs.c000066400000000000000000000041711413735575200171330ustar00rootroot00000000000000/* * Copyright (c) 1996-2015, 2018, 2020 Paul Mattes. * Copyright (c) 1995, Dick Altenbern. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the names of Paul Mattes, Dick Altenbern nor the names of * their contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES AND DICK ALTENBERN "AS IS" AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL PAUL MATTES OR DICK ALTENBERN BE LIABLE FOR * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH * DAMAGE. */ /* * ft_gui_stubs.c * Stubs for the file transfer GUI. */ #include "globals.h" #include "ft_private.h" #include "ft_gui.h" void ft_gui_progress_popdown(void) { } void ft_gui_errmsg_prepare(char *msg _is_unused) { } void ft_gui_clear_progress(void) { } void ft_gui_complete_popup(const char *msg _is_unused, bool is_error _is_unused) { } void ft_gui_update_length(size_t length _is_unused) { } void ft_gui_running(size_t length _is_unused) { } void ft_gui_aborting(void) { } void ft_gui_awaiting(void) { } suite3270-4.1/Common/gb_2312_80-1.ucm000066400000000000000000006436721413735575200165230ustar00rootroot00000000000000# ******************************************************************************* # * # * Copyright (C) 1997-2001, International Business Machines # * Corporation and others. All Rights Reserved. # * # ******************************************************************************* # File created on Wed 30 Aug,2000 # # File created from : GB2312.txt from Unicode.org # # Author : Raghuram Viswanadha, IBM # # General Notes: # This table contains the data on how Unicode characters map into # GB2312-80. # Original authors: # Ken Whistler , # Glenn Adams, # John H. Jenkin # # # "gb_2312_80-1" "AXXXX" 2 2 "MBCS" 0-20:2, 21-7e:1, 7f-ff:2 21-7e \x7e\x7e # CHARMAP # # #10646 GB2312-80 #_____ _________ \x21\x21 #|0 IDEOGRAPHIC SPACE \x21\x22 #|0 IDEOGRAPHIC COMMA \x21\x23 #|0 IDEOGRAPHIC FULL STOP \x21\x24 #|0 KATAKANA MIDDLE DOT \x21\x25 #|0 MODIFIER LETTER MACRON (Mandarin Chinese first tone) \x21\x26 #|0 CARON (Mandarin Chinese third tone) \x21\x27 #|0 DIAERESIS \x21\x28 #|0 DITTO MARK \x21\x29 #|0 IDEOGRAPHIC ITERATION MARK \x21\x2A #|0 HORIZONTAL BAR \x21\x2B #|0 FULLWIDTH TILDE \x21\x2C #|0 DOUBLE VERTICAL LINE \x21\x2D #|0 HORIZONTAL ELLIPSIS \x21\x2E #|0 LEFT SINGLE QUOTATION MARK \x21\x2F #|0 RIGHT SINGLE QUOTATION MARK \x21\x30 #|0 LEFT DOUBLE QUOTATION MARK \x21\x31 #|0 RIGHT DOUBLE QUOTATION MARK \x21\x32 #|0 LEFT TORTOISE SHELL BRACKET \x21\x33 #|0 RIGHT TORTOISE SHELL BRACKET \x21\x34 #|0 LEFT ANGLE BRACKET \x21\x35 #|0 RIGHT ANGLE BRACKET \x21\x36 #|0 LEFT DOUBLE ANGLE BRACKET \x21\x37 #|0 RIGHT DOUBLE ANGLE BRACKET \x21\x38 #|0 LEFT CORNER BRACKET \x21\x39 #|0 RIGHT CORNER BRACKET \x21\x3A #|0 LEFT WHITE CORNER BRACKET \x21\x3B #|0 RIGHT WHITE CORNER BRACKET \x21\x3C #|0 LEFT WHITE LENTICULAR BRACKET \x21\x3D #|0 RIGHT WHITE LENTICULAR BRACKET \x21\x3E #|0 LEFT BLACK LENTICULAR BRACKET \x21\x3F #|0 RIGHT BLACK LENTICULAR BRACKET \x21\x40 #|0 PLUS-MINUS SIGN \x21\x41 #|0 MULTIPLICATION SIGN \x21\x42 #|0 DIVISION SIGN \x21\x43 #|0 RATIO \x21\x44 #|0 LOGICAL AND \x21\x45 #|0 LOGICAL OR \x21\x46 #|0 N-ARY SUMMATION \x21\x47 #|0 N-ARY PRODUCT \x21\x48 #|0 UNION \x21\x49 #|0 INTERSECTION \x21\x4A #|0 ELEMENT OF \x21\x4B #|0 PROPORTION \x21\x4C #|0 SQUARE ROOT \x21\x4D #|0 UP TACK \x21\x4E #|0 PARALLEL TO \x21\x4F #|0 ANGLE \x21\x50 #|0 ARC \x21\x51 #|0 CIRCLED DOT OPERATOR \x21\x52 #|0 INTEGRAL \x21\x53 #|0 CONTOUR INTEGRAL \x21\x54 #|0 IDENTICAL TO \x21\x55 #|0 ALL EQUAL TO \x21\x56 #|0 ALMOST EQUAL TO \x21\x57 #|0 REVERSED TILDE \x21\x58 #|0 PROPORTIONAL TO \x21\x59 #|0 NOT EQUAL TO \x21\x5A #|0 NOT LESS-THAN \x21\x5B #|0 NOT GREATER-THAN \x21\x5C #|0 LESS-THAN OR EQUAL TO \x21\x5D #|0 GREATER-THAN OR EQUAL TO \x21\x5E #|0 INFINITY \x21\x5F #|0 BECAUSE \x21\x60 #|0 THEREFORE \x21\x61 #|0 MALE SIGN \x21\x62 #|0 FEMALE SIGN \x21\x63 #|0 DEGREE SIGN \x21\x64 #|0 PRIME \x21\x65 #|0 DOUBLE PRIME \x21\x66 #|0 DEGREE CELSIUS \x21\x67 #|0 FULLWIDTH DOLLAR SIGN \x21\x68 #|0 CURRENCY SIGN \x21\x69 #|0 FULLWIDTH CENT SIGN \x21\x6A #|0 FULLWIDTH POUND SIGN \x21\x6B #|0 PER MILLE SIGN \x21\x6C #|0 SECTION SIGN \x21\x6D #|0 NUMERO SIGN \x21\x6E #|0 WHITE STAR \x21\x6F #|0 BLACK STAR \x21\x70 #|0 WHITE CIRCLE \x21\x71 #|0 BLACK CIRCLE \x21\x72 #|0 BULLSEYE \x21\x73 #|0 WHITE DIAMOND \x21\x74 #|0 BLACK DIAMOND \x21\x75 #|0 WHITE SQUARE \x21\x76 #|0 BLACK SQUARE \x21\x77 #|0 WHITE UP-POINTING TRIANGLE \x21\x78 #|0 BLACK UP-POINTING TRIANGLE \x21\x79 #|0 REFERENCE MARK \x21\x7A #|0 RIGHTWARDS ARROW \x21\x7B #|0 LEFTWARDS ARROW \x21\x7C #|0 UPWARDS ARROW \x21\x7D #|0 DOWNWARDS ARROW \x21\x7E #|0 GETA MARK \x22\x31 #|0 DIGIT ONE FULL STOP \x22\x32 #|0 DIGIT TWO FULL STOP \x22\x33 #|0 DIGIT THREE FULL STOP \x22\x34 #|0 DIGIT FOUR FULL STOP \x22\x35 #|0 DIGIT FIVE FULL STOP \x22\x36 #|0 DIGIT SIX FULL STOP \x22\x37 #|0 DIGIT SEVEN FULL STOP \x22\x38 #|0 DIGIT EIGHT FULL STOP \x22\x39 #|0 DIGIT NINE FULL STOP \x22\x3A #|0 NUMBER TEN FULL STOP \x22\x3B #|0 NUMBER ELEVEN FULL STOP \x22\x3C #|0 NUMBER TWELVE FULL STOP \x22\x3D #|0 NUMBER THIRTEEN FULL STOP \x22\x3E #|0 NUMBER FOURTEEN FULL STOP \x22\x3F #|0 NUMBER FIFTEEN FULL STOP \x22\x40 #|0 NUMBER SIXTEEN FULL STOP \x22\x41 #|0 NUMBER SEVENTEEN FULL STOP \x22\x42 #|0 NUMBER EIGHTEEN FULL STOP \x22\x43 #|0 NUMBER NINETEEN FULL STOP \x22\x44 #|0 NUMBER TWENTY FULL STOP \x22\x45 #|0 PARENTHESIZED DIGIT ONE \x22\x46 #|0 PARENTHESIZED DIGIT TWO \x22\x47 #|0 PARENTHESIZED DIGIT THREE \x22\x48 #|0 PARENTHESIZED DIGIT FOUR \x22\x49 #|0 PARENTHESIZED DIGIT FIVE \x22\x4A #|0 PARENTHESIZED DIGIT SIX \x22\x4B #|0 PARENTHESIZED DIGIT SEVEN \x22\x4C #|0 PARENTHESIZED DIGIT EIGHT \x22\x4D #|0 PARENTHESIZED DIGIT NINE \x22\x4E #|0 PARENTHESIZED NUMBER TEN \x22\x4F #|0 PARENTHESIZED NUMBER ELEVEN \x22\x50 #|0 PARENTHESIZED NUMBER TWELVE \x22\x51 #|0 PARENTHESIZED NUMBER THIRTEEN \x22\x52 #|0 PARENTHESIZED NUMBER FOURTEEN \x22\x53 #|0 PARENTHESIZED NUMBER FIFTEEN \x22\x54 #|0 PARENTHESIZED NUMBER SIXTEEN \x22\x55 #|0 PARENTHESIZED NUMBER SEVENTEEN \x22\x56 #|0 PARENTHESIZED NUMBER EIGHTEEN \x22\x57 #|0 PARENTHESIZED NUMBER NINETEEN \x22\x58 #|0 PARENTHESIZED NUMBER TWENTY \x22\x59 #|0 CIRCLED DIGIT ONE \x22\x5A #|0 CIRCLED DIGIT TWO \x22\x5B #|0 CIRCLED DIGIT THREE \x22\x5C #|0 CIRCLED DIGIT FOUR \x22\x5D #|0 CIRCLED DIGIT FIVE \x22\x5E #|0 CIRCLED DIGIT SIX \x22\x5F #|0 CIRCLED DIGIT SEVEN \x22\x60 #|0 CIRCLED DIGIT EIGHT \x22\x61 #|0 CIRCLED DIGIT NINE \x22\x62 #|0 CIRCLED NUMBER TEN \x22\x65 #|0 PARENTHESIZED IDEOGRAPH ONE \x22\x66 #|0 PARENTHESIZED IDEOGRAPH TWO \x22\x67 #|0 PARENTHESIZED IDEOGRAPH THREE \x22\x68 #|0 PARENTHESIZED IDEOGRAPH FOUR \x22\x69 #|0 PARENTHESIZED IDEOGRAPH FIVE \x22\x6A #|0 PARENTHESIZED IDEOGRAPH SIX \x22\x6B #|0 PARENTHESIZED IDEOGRAPH SEVEN \x22\x6C #|0 PARENTHESIZED IDEOGRAPH EIGHT \x22\x6D #|0 PARENTHESIZED IDEOGRAPH NINE \x22\x6E #|0 PARENTHESIZED IDEOGRAPH TEN \x22\x71 #|0 ROMAN NUMERAL ONE \x22\x72 #|0 ROMAN NUMERAL TWO \x22\x73 #|0 ROMAN NUMERAL THREE \x22\x74 #|0 ROMAN NUMERAL FOUR \x22\x75 #|0 ROMAN NUMERAL FIVE \x22\x76 #|0 ROMAN NUMERAL SIX \x22\x77 #|0 ROMAN NUMERAL SEVEN \x22\x78 #|0 ROMAN NUMERAL EIGHT \x22\x79 #|0 ROMAN NUMERAL NINE \x22\x7A #|0 ROMAN NUMERAL TEN \x22\x7B #|0 ROMAN NUMERAL ELEVEN \x22\x7C #|0 ROMAN NUMERAL TWELVE \x23\x21 #|0 FULLWIDTH EXCLAMATION MARK \x23\x22 #|0 FULLWIDTH QUOTATION MARK \x23\x23 #|0 FULLWIDTH NUMBER SIGN \x23\x24 #|0 FULLWIDTH YEN SIGN \x23\x25 #|0 FULLWIDTH PERCENT SIGN \x23\x26 #|0 FULLWIDTH AMPERSAND \x23\x27 #|0 FULLWIDTH APOSTROPHE \x23\x28 #|0 FULLWIDTH LEFT PARENTHESIS \x23\x29 #|0 FULLWIDTH RIGHT PARENTHESIS \x23\x2A #|0 FULLWIDTH ASTERISK \x23\x2B #|0 FULLWIDTH PLUS SIGN \x23\x2C #|0 FULLWIDTH COMMA \x23\x2D #|0 FULLWIDTH HYPHEN-MINUS \x23\x2E #|0 FULLWIDTH FULL STOP \x23\x2F #|0 FULLWIDTH SOLIDUS \x23\x30 #|0 FULLWIDTH DIGIT ZERO \x23\x31 #|0 FULLWIDTH DIGIT ONE \x23\x32 #|0 FULLWIDTH DIGIT TWO \x23\x33 #|0 FULLWIDTH DIGIT THREE \x23\x34 #|0 FULLWIDTH DIGIT FOUR \x23\x35 #|0 FULLWIDTH DIGIT FIVE \x23\x36 #|0 FULLWIDTH DIGIT SIX \x23\x37 #|0 FULLWIDTH DIGIT SEVEN \x23\x38 #|0 FULLWIDTH DIGIT EIGHT \x23\x39 #|0 FULLWIDTH DIGIT NINE \x23\x3A #|0 FULLWIDTH COLON \x23\x3B #|0 FULLWIDTH SEMICOLON \x23\x3C #|0 FULLWIDTH LESS-THAN SIGN \x23\x3D #|0 FULLWIDTH EQUALS SIGN \x23\x3E #|0 FULLWIDTH GREATER-THAN SIGN \x23\x3F #|0 FULLWIDTH QUESTION MARK \x23\x40 #|0 FULLWIDTH COMMERCIAL AT \x23\x41 #|0 FULLWIDTH LATIN CAPITAL LETTER A \x23\x42 #|0 FULLWIDTH LATIN CAPITAL LETTER B \x23\x43 #|0 FULLWIDTH LATIN CAPITAL LETTER C \x23\x44 #|0 FULLWIDTH LATIN CAPITAL LETTER D \x23\x45 #|0 FULLWIDTH LATIN CAPITAL LETTER E \x23\x46 #|0 FULLWIDTH LATIN CAPITAL LETTER F \x23\x47 #|0 FULLWIDTH LATIN CAPITAL LETTER G \x23\x48 #|0 FULLWIDTH LATIN CAPITAL LETTER H \x23\x49 #|0 FULLWIDTH LATIN CAPITAL LETTER I \x23\x4A #|0 FULLWIDTH LATIN CAPITAL LETTER J \x23\x4B #|0 FULLWIDTH LATIN CAPITAL LETTER K \x23\x4C #|0 FULLWIDTH LATIN CAPITAL LETTER L \x23\x4D #|0 FULLWIDTH LATIN CAPITAL LETTER M \x23\x4E #|0 FULLWIDTH LATIN CAPITAL LETTER N \x23\x4F #|0 FULLWIDTH LATIN CAPITAL LETTER O \x23\x50 #|0 FULLWIDTH LATIN CAPITAL LETTER P \x23\x51 #|0 FULLWIDTH LATIN CAPITAL LETTER Q \x23\x52 #|0 FULLWIDTH LATIN CAPITAL LETTER R \x23\x53 #|0 FULLWIDTH LATIN CAPITAL LETTER S \x23\x54 #|0 FULLWIDTH LATIN CAPITAL LETTER T \x23\x55 #|0 FULLWIDTH LATIN CAPITAL LETTER U \x23\x56 #|0 FULLWIDTH LATIN CAPITAL LETTER V \x23\x57 #|0 FULLWIDTH LATIN CAPITAL LETTER W \x23\x58 #|0 FULLWIDTH LATIN CAPITAL LETTER X \x23\x59 #|0 FULLWIDTH LATIN CAPITAL LETTER Y \x23\x5A #|0 FULLWIDTH LATIN CAPITAL LETTER Z \x23\x5B #|0 FULLWIDTH LEFT SQUARE BRACKET \x23\x5C #|0 FULLWIDTH REVERSE SOLIDUS \x23\x5D #|0 FULLWIDTH RIGHT SQUARE BRACKET \x23\x5E #|0 FULLWIDTH CIRCUMFLEX ACCENT \x23\x5F #|0 FULLWIDTH LOW LINE \x23\x60 #|0 FULLWIDTH GRAVE ACCENT \x23\x61 #|0 FULLWIDTH LATIN SMALL LETTER A \x23\x62 #|0 FULLWIDTH LATIN SMALL LETTER B \x23\x63 #|0 FULLWIDTH LATIN SMALL LETTER C \x23\x64 #|0 FULLWIDTH LATIN SMALL LETTER D \x23\x65 #|0 FULLWIDTH LATIN SMALL LETTER E \x23\x66 #|0 FULLWIDTH LATIN SMALL LETTER F \x23\x67 #|0 FULLWIDTH LATIN SMALL LETTER G \x23\x68 #|0 FULLWIDTH LATIN SMALL LETTER H \x23\x69 #|0 FULLWIDTH LATIN SMALL LETTER I \x23\x6A #|0 FULLWIDTH LATIN SMALL LETTER J \x23\x6B #|0 FULLWIDTH LATIN SMALL LETTER K \x23\x6C #|0 FULLWIDTH LATIN SMALL LETTER L \x23\x6D #|0 FULLWIDTH LATIN SMALL LETTER M \x23\x6E #|0 FULLWIDTH LATIN SMALL LETTER N \x23\x6F #|0 FULLWIDTH LATIN SMALL LETTER O \x23\x70 #|0 FULLWIDTH LATIN SMALL LETTER P \x23\x71 #|0 FULLWIDTH LATIN SMALL LETTER Q \x23\x72 #|0 FULLWIDTH LATIN SMALL LETTER R \x23\x73 #|0 FULLWIDTH LATIN SMALL LETTER S \x23\x74 #|0 FULLWIDTH LATIN SMALL LETTER T \x23\x75 #|0 FULLWIDTH LATIN SMALL LETTER U \x23\x76 #|0 FULLWIDTH LATIN SMALL LETTER V \x23\x77 #|0 FULLWIDTH LATIN SMALL LETTER W \x23\x78 #|0 FULLWIDTH LATIN SMALL LETTER X \x23\x79 #|0 FULLWIDTH LATIN SMALL LETTER Y \x23\x7A #|0 FULLWIDTH LATIN SMALL LETTER Z \x23\x7B #|0 FULLWIDTH LEFT CURLY BRACKET \x23\x7C #|0 FULLWIDTH VERTICAL LINE \x23\x7D #|0 FULLWIDTH RIGHT CURLY BRACKET \x23\x7E #|0 FULLWIDTH MACRON \x24\x21 #|0 HIRAGANA LETTER SMALL A \x24\x22 #|0 HIRAGANA LETTER A \x24\x23 #|0 HIRAGANA LETTER SMALL I \x24\x24 #|0 HIRAGANA LETTER I \x24\x25 #|0 HIRAGANA LETTER SMALL U \x24\x26 #|0 HIRAGANA LETTER U \x24\x27 #|0 HIRAGANA LETTER SMALL E \x24\x28 #|0 HIRAGANA LETTER E \x24\x29 #|0 HIRAGANA LETTER SMALL O \x24\x2A #|0 HIRAGANA LETTER O \x24\x2B #|0 HIRAGANA LETTER KA \x24\x2C #|0 HIRAGANA LETTER GA \x24\x2D #|0 HIRAGANA LETTER KI \x24\x2E #|0 HIRAGANA LETTER GI \x24\x2F #|0 HIRAGANA LETTER KU \x24\x30 #|0 HIRAGANA LETTER GU \x24\x31 #|0 HIRAGANA LETTER KE \x24\x32 #|0 HIRAGANA LETTER GE \x24\x33 #|0 HIRAGANA LETTER KO \x24\x34 #|0 HIRAGANA LETTER GO \x24\x35 #|0 HIRAGANA LETTER SA \x24\x36 #|0 HIRAGANA LETTER ZA \x24\x37 #|0 HIRAGANA LETTER SI \x24\x38 #|0 HIRAGANA LETTER ZI \x24\x39 #|0 HIRAGANA LETTER SU \x24\x3A #|0 HIRAGANA LETTER ZU \x24\x3B #|0 HIRAGANA LETTER SE \x24\x3C #|0 HIRAGANA LETTER ZE \x24\x3D #|0 HIRAGANA LETTER SO \x24\x3E #|0 HIRAGANA LETTER ZO \x24\x3F #|0 HIRAGANA LETTER TA \x24\x40 #|0 HIRAGANA LETTER DA \x24\x41 #|0 HIRAGANA LETTER TI \x24\x42 #|0 HIRAGANA LETTER DI \x24\x43 #|0 HIRAGANA LETTER SMALL TU \x24\x44 #|0 HIRAGANA LETTER TU \x24\x45 #|0 HIRAGANA LETTER DU \x24\x46 #|0 HIRAGANA LETTER TE \x24\x47 #|0 HIRAGANA LETTER DE \x24\x48 #|0 HIRAGANA LETTER TO \x24\x49 #|0 HIRAGANA LETTER DO \x24\x4A #|0 HIRAGANA LETTER NA \x24\x4B #|0 HIRAGANA LETTER NI \x24\x4C #|0 HIRAGANA LETTER NU \x24\x4D #|0 HIRAGANA LETTER NE \x24\x4E #|0 HIRAGANA LETTER NO \x24\x4F #|0 HIRAGANA LETTER HA \x24\x50 #|0 HIRAGANA LETTER BA \x24\x51 #|0 HIRAGANA LETTER PA \x24\x52 #|0 HIRAGANA LETTER HI \x24\x53 #|0 HIRAGANA LETTER BI \x24\x54 #|0 HIRAGANA LETTER PI \x24\x55 #|0 HIRAGANA LETTER HU \x24\x56 #|0 HIRAGANA LETTER BU \x24\x57 #|0 HIRAGANA LETTER PU \x24\x58 #|0 HIRAGANA LETTER HE \x24\x59 #|0 HIRAGANA LETTER BE \x24\x5A #|0 HIRAGANA LETTER PE \x24\x5B #|0 HIRAGANA LETTER HO \x24\x5C #|0 HIRAGANA LETTER BO \x24\x5D #|0 HIRAGANA LETTER PO \x24\x5E #|0 HIRAGANA LETTER MA \x24\x5F #|0 HIRAGANA LETTER MI \x24\x60 #|0 HIRAGANA LETTER MU \x24\x61 #|0 HIRAGANA LETTER ME \x24\x62 #|0 HIRAGANA LETTER MO \x24\x63 #|0 HIRAGANA LETTER SMALL YA \x24\x64 #|0 HIRAGANA LETTER YA \x24\x65 #|0 HIRAGANA LETTER SMALL YU \x24\x66 #|0 HIRAGANA LETTER YU \x24\x67 #|0 HIRAGANA LETTER SMALL YO \x24\x68 #|0 HIRAGANA LETTER YO \x24\x69 #|0 HIRAGANA LETTER RA \x24\x6A #|0 HIRAGANA LETTER RI \x24\x6B #|0 HIRAGANA LETTER RU \x24\x6C #|0 HIRAGANA LETTER RE \x24\x6D #|0 HIRAGANA LETTER RO \x24\x6E #|0 HIRAGANA LETTER SMALL WA \x24\x6F #|0 HIRAGANA LETTER WA \x24\x70 #|0 HIRAGANA LETTER WI \x24\x71 #|0 HIRAGANA LETTER WE \x24\x72 #|0 HIRAGANA LETTER WO \x24\x73 #|0 HIRAGANA LETTER N \x25\x21 #|0 KATAKANA LETTER SMALL A \x25\x22 #|0 KATAKANA LETTER A \x25\x23 #|0 KATAKANA LETTER SMALL I \x25\x24 #|0 KATAKANA LETTER I \x25\x25 #|0 KATAKANA LETTER SMALL U \x25\x26 #|0 KATAKANA LETTER U \x25\x27 #|0 KATAKANA LETTER SMALL E \x25\x28 #|0 KATAKANA LETTER E \x25\x29 #|0 KATAKANA LETTER SMALL O \x25\x2A #|0 KATAKANA LETTER O \x25\x2B #|0 KATAKANA LETTER KA \x25\x2C #|0 KATAKANA LETTER GA \x25\x2D #|0 KATAKANA LETTER KI \x25\x2E #|0 KATAKANA LETTER GI \x25\x2F #|0 KATAKANA LETTER KU \x25\x30 #|0 KATAKANA LETTER GU \x25\x31 #|0 KATAKANA LETTER KE \x25\x32 #|0 KATAKANA LETTER GE \x25\x33 #|0 KATAKANA LETTER KO \x25\x34 #|0 KATAKANA LETTER GO \x25\x35 #|0 KATAKANA LETTER SA \x25\x36 #|0 KATAKANA LETTER ZA \x25\x37 #|0 KATAKANA LETTER SI \x25\x38 #|0 KATAKANA LETTER ZI \x25\x39 #|0 KATAKANA LETTER SU \x25\x3A #|0 KATAKANA LETTER ZU \x25\x3B #|0 KATAKANA LETTER SE \x25\x3C #|0 KATAKANA LETTER ZE \x25\x3D #|0 KATAKANA LETTER SO \x25\x3E #|0 KATAKANA LETTER ZO \x25\x3F #|0 KATAKANA LETTER TA \x25\x40 #|0 KATAKANA LETTER DA \x25\x41 #|0 KATAKANA LETTER TI \x25\x42 #|0 KATAKANA LETTER DI \x25\x43 #|0 KATAKANA LETTER SMALL TU \x25\x44 #|0 KATAKANA LETTER TU \x25\x45 #|0 KATAKANA LETTER DU \x25\x46 #|0 KATAKANA LETTER TE \x25\x47 #|0 KATAKANA LETTER DE \x25\x48 #|0 KATAKANA LETTER TO \x25\x49 #|0 KATAKANA LETTER DO \x25\x4A #|0 KATAKANA LETTER NA \x25\x4B #|0 KATAKANA LETTER NI \x25\x4C #|0 KATAKANA LETTER NU \x25\x4D #|0 KATAKANA LETTER NE \x25\x4E #|0 KATAKANA LETTER NO \x25\x4F #|0 KATAKANA LETTER HA \x25\x50 #|0 KATAKANA LETTER BA \x25\x51 #|0 KATAKANA LETTER PA \x25\x52 #|0 KATAKANA LETTER HI \x25\x53 #|0 KATAKANA LETTER BI \x25\x54 #|0 KATAKANA LETTER PI \x25\x55 #|0 KATAKANA LETTER HU \x25\x56 #|0 KATAKANA LETTER BU \x25\x57 #|0 KATAKANA LETTER PU \x25\x58 #|0 KATAKANA LETTER HE \x25\x59 #|0 KATAKANA LETTER BE \x25\x5A #|0 KATAKANA LETTER PE \x25\x5B #|0 KATAKANA LETTER HO \x25\x5C #|0 KATAKANA LETTER BO \x25\x5D #|0 KATAKANA LETTER PO \x25\x5E #|0 KATAKANA LETTER MA \x25\x5F #|0 KATAKANA LETTER MI \x25\x60 #|0 KATAKANA LETTER MU \x25\x61 #|0 KATAKANA LETTER ME \x25\x62 #|0 KATAKANA LETTER MO \x25\x63 #|0 KATAKANA LETTER SMALL YA \x25\x64 #|0 KATAKANA LETTER YA \x25\x65 #|0 KATAKANA LETTER SMALL YU \x25\x66 #|0 KATAKANA LETTER YU \x25\x67 #|0 KATAKANA LETTER SMALL YO \x25\x68 #|0 KATAKANA LETTER YO \x25\x69 #|0 KATAKANA LETTER RA \x25\x6A #|0 KATAKANA LETTER RI \x25\x6B #|0 KATAKANA LETTER RU \x25\x6C #|0 KATAKANA LETTER RE \x25\x6D #|0 KATAKANA LETTER RO \x25\x6E #|0 KATAKANA LETTER SMALL WA \x25\x6F #|0 KATAKANA LETTER WA \x25\x70 #|0 KATAKANA LETTER WI \x25\x71 #|0 KATAKANA LETTER WE \x25\x72 #|0 KATAKANA LETTER WO \x25\x73 #|0 KATAKANA LETTER N \x25\x74 #|0 KATAKANA LETTER VU \x25\x75 #|0 KATAKANA LETTER SMALL KA \x25\x76 #|0 KATAKANA LETTER SMALL KE \x26\x21 #|0 GREEK CAPITAL LETTER ALPHA \x26\x22 #|0 GREEK CAPITAL LETTER BETA \x26\x23 #|0 GREEK CAPITAL LETTER GAMMA \x26\x24 #|0 GREEK CAPITAL LETTER DELTA \x26\x25 #|0 GREEK CAPITAL LETTER EPSILON \x26\x26 #|0 GREEK CAPITAL LETTER ZETA \x26\x27 #|0 GREEK CAPITAL LETTER ETA \x26\x28 #|0 GREEK CAPITAL LETTER THETA \x26\x29 #|0 GREEK CAPITAL LETTER IOTA \x26\x2A #|0 GREEK CAPITAL LETTER KAPPA \x26\x2B #|0 GREEK CAPITAL LETTER LAMDA \x26\x2C #|0 GREEK CAPITAL LETTER MU \x26\x2D #|0 GREEK CAPITAL LETTER NU \x26\x2E #|0 GREEK CAPITAL LETTER XI \x26\x2F #|0 GREEK CAPITAL LETTER OMICRON \x26\x30 #|0 GREEK CAPITAL LETTER PI \x26\x31 #|0 GREEK CAPITAL LETTER RHO \x26\x32 #|0 GREEK CAPITAL LETTER SIGMA \x26\x33 #|0 GREEK CAPITAL LETTER TAU \x26\x34 #|0 GREEK CAPITAL LETTER UPSILON \x26\x35 #|0 GREEK CAPITAL LETTER PHI \x26\x36 #|0 GREEK CAPITAL LETTER CHI \x26\x37 #|0 GREEK CAPITAL LETTER PSI \x26\x38 #|0 GREEK CAPITAL LETTER OMEGA \x26\x41 #|0 GREEK SMALL LETTER ALPHA \x26\x42 #|0 GREEK SMALL LETTER BETA \x26\x43 #|0 GREEK SMALL LETTER GAMMA \x26\x44 #|0 GREEK SMALL LETTER DELTA \x26\x45 #|0 GREEK SMALL LETTER EPSILON \x26\x46 #|0 GREEK SMALL LETTER ZETA \x26\x47 #|0 GREEK SMALL LETTER ETA \x26\x48 #|0 GREEK SMALL LETTER THETA \x26\x49 #|0 GREEK SMALL LETTER IOTA \x26\x4A #|0 GREEK SMALL LETTER KAPPA \x26\x4B #|0 GREEK SMALL LETTER LAMDA \x26\x4C #|0 GREEK SMALL LETTER MU \x26\x4D #|0 GREEK SMALL LETTER NU \x26\x4E #|0 GREEK SMALL LETTER XI \x26\x4F #|0 GREEK SMALL LETTER OMICRON \x26\x50 #|0 GREEK SMALL LETTER PI \x26\x51 #|0 GREEK SMALL LETTER RHO \x26\x52 #|0 GREEK SMALL LETTER SIGMA \x26\x53 #|0 GREEK SMALL LETTER TAU \x26\x54 #|0 GREEK SMALL LETTER UPSILON \x26\x55 #|0 GREEK SMALL LETTER PHI \x26\x56 #|0 GREEK SMALL LETTER CHI \x26\x57 #|0 GREEK SMALL LETTER PSI \x26\x58 #|0 GREEK SMALL LETTER OMEGA \x27\x21 #|0 CYRILLIC CAPITAL LETTER A \x27\x22 #|0 CYRILLIC CAPITAL LETTER BE \x27\x23 #|0 CYRILLIC CAPITAL LETTER VE \x27\x24 #|0 CYRILLIC CAPITAL LETTER GHE \x27\x25 #|0 CYRILLIC CAPITAL LETTER DE \x27\x26 #|0 CYRILLIC CAPITAL LETTER IE \x27\x27 #|0 CYRILLIC CAPITAL LETTER IO \x27\x28 #|0 CYRILLIC CAPITAL LETTER ZHE \x27\x29 #|0 CYRILLIC CAPITAL LETTER ZE \x27\x2A #|0 CYRILLIC CAPITAL LETTER I \x27\x2B #|0 CYRILLIC CAPITAL LETTER SHORT I \x27\x2C #|0 CYRILLIC CAPITAL LETTER KA \x27\x2D #|0 CYRILLIC CAPITAL LETTER EL \x27\x2E #|0 CYRILLIC CAPITAL LETTER EM \x27\x2F #|0 CYRILLIC CAPITAL LETTER EN \x27\x30 #|0 CYRILLIC CAPITAL LETTER O \x27\x31 #|0 CYRILLIC CAPITAL LETTER PE \x27\x32 #|0 CYRILLIC CAPITAL LETTER ER \x27\x33 #|0 CYRILLIC CAPITAL LETTER ES \x27\x34 #|0 CYRILLIC CAPITAL LETTER TE \x27\x35 #|0 CYRILLIC CAPITAL LETTER U \x27\x36 #|0 CYRILLIC CAPITAL LETTER EF \x27\x37 #|0 CYRILLIC CAPITAL LETTER HA \x27\x38 #|0 CYRILLIC CAPITAL LETTER TSE \x27\x39 #|0 CYRILLIC CAPITAL LETTER CHE \x27\x3A #|0 CYRILLIC CAPITAL LETTER SHA \x27\x3B #|0 CYRILLIC CAPITAL LETTER SHCHA \x27\x3C #|0 CYRILLIC CAPITAL LETTER HARD SIGN \x27\x3D #|0 CYRILLIC CAPITAL LETTER YERU \x27\x3E #|0 CYRILLIC CAPITAL LETTER SOFT SIGN \x27\x3F #|0 CYRILLIC CAPITAL LETTER E \x27\x40 #|0 CYRILLIC CAPITAL LETTER YU \x27\x41 #|0 CYRILLIC CAPITAL LETTER YA \x27\x51 #|0 CYRILLIC SMALL LETTER A \x27\x52 #|0 CYRILLIC SMALL LETTER BE \x27\x53 #|0 CYRILLIC SMALL LETTER VE \x27\x54 #|0 CYRILLIC SMALL LETTER GHE \x27\x55 #|0 CYRILLIC SMALL LETTER DE \x27\x56 #|0 CYRILLIC SMALL LETTER IE \x27\x57 #|0 CYRILLIC SMALL LETTER IO \x27\x58 #|0 CYRILLIC SMALL LETTER ZHE \x27\x59 #|0 CYRILLIC SMALL LETTER ZE \x27\x5A #|0 CYRILLIC SMALL LETTER I \x27\x5B #|0 CYRILLIC SMALL LETTER SHORT I \x27\x5C #|0 CYRILLIC SMALL LETTER KA \x27\x5D #|0 CYRILLIC SMALL LETTER EL \x27\x5E #|0 CYRILLIC SMALL LETTER EM \x27\x5F #|0 CYRILLIC SMALL LETTER EN \x27\x60 #|0 CYRILLIC SMALL LETTER O \x27\x61 #|0 CYRILLIC SMALL LETTER PE \x27\x62 #|0 CYRILLIC SMALL LETTER ER \x27\x63 #|0 CYRILLIC SMALL LETTER ES \x27\x64 #|0 CYRILLIC SMALL LETTER TE \x27\x65 #|0 CYRILLIC SMALL LETTER U \x27\x66 #|0 CYRILLIC SMALL LETTER EF \x27\x67 #|0 CYRILLIC SMALL LETTER HA \x27\x68 #|0 CYRILLIC SMALL LETTER TSE \x27\x69 #|0 CYRILLIC SMALL LETTER CHE \x27\x6A #|0 CYRILLIC SMALL LETTER SHA \x27\x6B #|0 CYRILLIC SMALL LETTER SHCHA \x27\x6C #|0 CYRILLIC SMALL LETTER HARD SIGN \x27\x6D #|0 CYRILLIC SMALL LETTER YERU \x27\x6E #|0 CYRILLIC SMALL LETTER SOFT SIGN \x27\x6F #|0 CYRILLIC SMALL LETTER E \x27\x70 #|0 CYRILLIC SMALL LETTER YU \x27\x71 #|0 CYRILLIC SMALL LETTER YA \x28\x21 #|0 LATIN SMALL LETTER A WITH MACRON \x28\x22 #|0 LATIN SMALL LETTER A WITH ACUTE \x28\x23 #|0 LATIN SMALL LETTER A WITH CARON \x28\x24 #|0 LATIN SMALL LETTER A WITH GRAVE \x28\x25 #|0 LATIN SMALL LETTER E WITH MACRON \x28\x26 #|0 LATIN SMALL LETTER E WITH ACUTE \x28\x27 #|0 LATIN SMALL LETTER E WITH CARON \x28\x28 #|0 LATIN SMALL LETTER E WITH GRAVE \x28\x29 #|0 LATIN SMALL LETTER I WITH MACRON \x28\x2A #|0 LATIN SMALL LETTER I WITH ACUTE \x28\x2B #|0 LATIN SMALL LETTER I WITH CARON \x28\x2C #|0 LATIN SMALL LETTER I WITH GRAVE \x28\x2D #|0 LATIN SMALL LETTER O WITH MACRON \x28\x2E #|0 LATIN SMALL LETTER O WITH ACUTE \x28\x2F #|0 LATIN SMALL LETTER O WITH CARON \x28\x30 #|0 LATIN SMALL LETTER O WITH GRAVE \x28\x31 #|0 LATIN SMALL LETTER U WITH MACRON \x28\x32 #|0 LATIN SMALL LETTER U WITH ACUTE \x28\x33 #|0 LATIN SMALL LETTER U WITH CARON \x28\x34 #|0 LATIN SMALL LETTER U WITH GRAVE \x28\x35 #|0 LATIN SMALL LETTER U WITH DIAERESIS AND MACRON \x28\x36 #|0 LATIN SMALL LETTER U WITH DIAERESIS AND ACUTE \x28\x37 #|0 LATIN SMALL LETTER U WITH DIAERESIS AND CARON \x28\x38 #|0 LATIN SMALL LETTER U WITH DIAERESIS AND GRAVE \x28\x39 #|0 LATIN SMALL LETTER U WITH DIAERESIS \x28\x3A #|0 LATIN SMALL LETTER E WITH CIRCUMFLEX \x28\x45 #|0 BOPOMOFO LETTER B \x28\x46 #|0 BOPOMOFO LETTER P \x28\x47 #|0 BOPOMOFO LETTER M \x28\x48 #|0 BOPOMOFO LETTER F \x28\x49 #|0 BOPOMOFO LETTER D \x28\x4A #|0 BOPOMOFO LETTER T \x28\x4B #|0 BOPOMOFO LETTER N \x28\x4C #|0 BOPOMOFO LETTER L \x28\x4D #|0 BOPOMOFO LETTER G \x28\x4E #|0 BOPOMOFO LETTER K \x28\x4F #|0 BOPOMOFO LETTER H \x28\x50 #|0 BOPOMOFO LETTER J \x28\x51 #|0 BOPOMOFO LETTER Q \x28\x52 #|0 BOPOMOFO LETTER X \x28\x53 #|0 BOPOMOFO LETTER ZH \x28\x54 #|0 BOPOMOFO LETTER CH \x28\x55 #|0 BOPOMOFO LETTER SH \x28\x56 #|0 BOPOMOFO LETTER R \x28\x57 #|0 BOPOMOFO LETTER Z \x28\x58 #|0 BOPOMOFO LETTER C \x28\x59 #|0 BOPOMOFO LETTER S \x28\x5A #|0 BOPOMOFO LETTER A \x28\x5B #|0 BOPOMOFO LETTER O \x28\x5C #|0 BOPOMOFO LETTER E \x28\x5D #|0 BOPOMOFO LETTER EH \x28\x5E #|0 BOPOMOFO LETTER AI \x28\x5F #|0 BOPOMOFO LETTER EI \x28\x60 #|0 BOPOMOFO LETTER AU \x28\x61 #|0 BOPOMOFO LETTER OU \x28\x62 #|0 BOPOMOFO LETTER AN \x28\x63 #|0 BOPOMOFO LETTER EN \x28\x64 #|0 BOPOMOFO LETTER ANG \x28\x65 #|0 BOPOMOFO LETTER ENG \x28\x66 #|0 BOPOMOFO LETTER ER \x28\x67 #|0 BOPOMOFO LETTER I \x28\x68 #|0 BOPOMOFO LETTER U \x28\x69 #|0 BOPOMOFO LETTER IU \x29\x24 #|0 BOX DRAWINGS LIGHT HORIZONTAL \x29\x25 #|0 BOX DRAWINGS HEAVY HORIZONTAL \x29\x26 #|0 BOX DRAWINGS LIGHT VERTICAL \x29\x27 #|0 BOX DRAWINGS HEAVY VERTICAL \x29\x28 #|0 BOX DRAWINGS LIGHT TRIPLE DASH HORIZONTAL \x29\x29 #|0 BOX DRAWINGS HEAVY TRIPLE DASH HORIZONTAL \x29\x2A #|0 BOX DRAWINGS LIGHT TRIPLE DASH VERTICAL \x29\x2B #|0 BOX DRAWINGS HEAVY TRIPLE DASH VERTICAL \x29\x2C #|0 BOX DRAWINGS LIGHT QUADRUPLE DASH HORIZONTAL \x29\x2D #|0 BOX DRAWINGS HEAVY QUADRUPLE DASH HORIZONTAL \x29\x2E #|0 BOX DRAWINGS LIGHT QUADRUPLE DASH VERTICAL \x29\x2F #|0 BOX DRAWINGS HEAVY QUADRUPLE DASH VERTICAL \x29\x30 #|0 BOX DRAWINGS LIGHT DOWN AND RIGHT \x29\x31 #|0 BOX DRAWINGS DOWN LIGHT AND RIGHT HEAVY \x29\x32 #|0 BOX DRAWINGS DOWN HEAVY AND RIGHT LIGHT \x29\x33 #|0 BOX DRAWINGS HEAVY DOWN AND RIGHT \x29\x34 #|0 BOX DRAWINGS LIGHT DOWN AND LEFT \x29\x35 #|0 BOX DRAWINGS DOWN LIGHT AND LEFT HEAVY \x29\x36 #|0 BOX DRAWINGS DOWN HEAVY AND LEFT LIGHT \x29\x37 #|0 BOX DRAWINGS HEAVY DOWN AND LEFT \x29\x38 #|0 BOX DRAWINGS LIGHT UP AND RIGHT \x29\x39 #|0 BOX DRAWINGS UP LIGHT AND RIGHT HEAVY \x29\x3A #|0 BOX DRAWINGS UP HEAVY AND RIGHT LIGHT \x29\x3B #|0 BOX DRAWINGS HEAVY UP AND RIGHT \x29\x3C #|0 BOX DRAWINGS LIGHT UP AND LEFT \x29\x3D #|0 BOX DRAWINGS UP LIGHT AND LEFT HEAVY \x29\x3E #|0 BOX DRAWINGS UP HEAVY AND LEFT LIGHT \x29\x3F #|0 BOX DRAWINGS HEAVY UP AND LEFT \x29\x40 #|0 BOX DRAWINGS LIGHT VERTICAL AND RIGHT \x29\x41 #|0 BOX DRAWINGS VERTICAL LIGHT AND RIGHT HEAVY \x29\x42 #|0 BOX DRAWINGS UP HEAVY AND RIGHT DOWN LIGHT \x29\x43 #|0 BOX DRAWINGS DOWN HEAVY AND RIGHT UP LIGHT \x29\x44 #|0 BOX DRAWINGS VERTICAL HEAVY AND RIGHT LIGHT \x29\x45 #|0 BOX DRAWINGS DOWN LIGHT AND RIGHT UP HEAVY \x29\x46 #|0 BOX DRAWINGS UP LIGHT AND RIGHT DOWN HEAVY \x29\x47 #|0 BOX DRAWINGS HEAVY VERTICAL AND RIGHT \x29\x48 #|0 BOX DRAWINGS LIGHT VERTICAL AND LEFT \x29\x49 #|0 BOX DRAWINGS VERTICAL LIGHT AND LEFT HEAVY \x29\x4A #|0 BOX DRAWINGS UP HEAVY AND LEFT DOWN LIGHT \x29\x4B #|0 BOX DRAWINGS DOWN HEAVY AND LEFT UP LIGHT \x29\x4C #|0 BOX DRAWINGS VERTICAL HEAVY AND LEFT LIGHT \x29\x4D #|0 BOX DRAWINGS DOWN LIGHT AND LEFT UP HEAVY \x29\x4E #|0 BOX DRAWINGS UP LIGHT AND LEFT DOWN HEAVY \x29\x4F #|0 BOX DRAWINGS HEAVY VERTICAL AND LEFT \x29\x50 #|0 BOX DRAWINGS LIGHT DOWN AND HORIZONTAL \x29\x51 #|0 BOX DRAWINGS LEFT HEAVY AND RIGHT DOWN LIGHT \x29\x52 #|0 BOX DRAWINGS RIGHT HEAVY AND LEFT DOWN LIGHT \x29\x53 #|0 BOX DRAWINGS DOWN LIGHT AND HORIZONTAL HEAVY \x29\x54 #|0 BOX DRAWINGS DOWN HEAVY AND HORIZONTAL LIGHT \x29\x55 #|0 BOX DRAWINGS RIGHT LIGHT AND LEFT DOWN HEAVY \x29\x56 #|0 BOX DRAWINGS LEFT LIGHT AND RIGHT DOWN HEAVY \x29\x57 #|0 BOX DRAWINGS HEAVY DOWN AND HORIZONTAL \x29\x58 #|0 BOX DRAWINGS LIGHT UP AND HORIZONTAL \x29\x59 #|0 BOX DRAWINGS LEFT HEAVY AND RIGHT UP LIGHT \x29\x5A #|0 BOX DRAWINGS RIGHT HEAVY AND LEFT UP LIGHT \x29\x5B #|0 BOX DRAWINGS UP LIGHT AND HORIZONTAL HEAVY \x29\x5C #|0 BOX DRAWINGS UP HEAVY AND HORIZONTAL LIGHT \x29\x5D #|0 BOX DRAWINGS RIGHT LIGHT AND LEFT UP HEAVY \x29\x5E #|0 BOX DRAWINGS LEFT LIGHT AND RIGHT UP HEAVY \x29\x5F #|0 BOX DRAWINGS HEAVY UP AND HORIZONTAL \x29\x60 #|0 BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL \x29\x61 #|0 BOX DRAWINGS LEFT HEAVY AND RIGHT VERTICAL LIGHT \x29\x62 #|0 BOX DRAWINGS RIGHT HEAVY AND LEFT VERTICAL LIGHT \x29\x63 #|0 BOX DRAWINGS VERTICAL LIGHT AND HORIZONTAL HEAVY \x29\x64 #|0 BOX DRAWINGS UP HEAVY AND DOWN HORIZONTAL LIGHT \x29\x65 #|0 BOX DRAWINGS DOWN HEAVY AND UP HORIZONTAL LIGHT \x29\x66 #|0 BOX DRAWINGS VERTICAL HEAVY AND HORIZONTAL LIGHT \x29\x67 #|0 BOX DRAWINGS LEFT UP HEAVY AND RIGHT DOWN LIGHT \x29\x68 #|0 BOX DRAWINGS RIGHT UP HEAVY AND LEFT DOWN LIGHT \x29\x69 #|0 BOX DRAWINGS LEFT DOWN HEAVY AND RIGHT UP LIGHT \x29\x6A #|0 BOX DRAWINGS RIGHT DOWN HEAVY AND LEFT UP LIGHT \x29\x6B #|0 BOX DRAWINGS DOWN LIGHT AND UP HORIZONTAL HEAVY \x29\x6C #|0 BOX DRAWINGS UP LIGHT AND DOWN HORIZONTAL HEAVY \x29\x6D #|0 BOX DRAWINGS RIGHT LIGHT AND LEFT VERTICAL HEAVY \x29\x6E #|0 BOX DRAWINGS LEFT LIGHT AND RIGHT VERTICAL HEAVY \x29\x6F #|0 BOX DRAWINGS HEAVY VERTICAL AND HORIZONTAL \x30\x21 #|0 \x30\x22 #|0 \x30\x23 #|0 \x30\x24 #|0 \x30\x25 #|0 \x30\x26 #|0 \x30\x27 #|0 \x30\x28 #|0 \x30\x29 #|0 \x30\x2A #|0 \x30\x2B #|0 \x30\x2C #|0 \x30\x2D #|0 \x30\x2E #|0 \x30\x2F #|0 \x30\x30 #|0 \x30\x31 #|0 \x30\x32 #|0 \x30\x33 #|0 \x30\x34 #|0 \x30\x35 #|0 \x30\x36 #|0 \x30\x37 #|0 \x30\x38 #|0 \x30\x39 #|0 \x30\x3A #|0 \x30\x3B #|0 \x30\x3C #|0 \x30\x3D #|0 \x30\x3E #|0 \x30\x3F #|0 \x30\x40 #|0 \x30\x41 #|0 \x30\x42 #|0 \x30\x43 #|0 \x30\x44 #|0 \x30\x45 #|0 \x30\x46 #|0 \x30\x47 #|0 \x30\x48 #|0 \x30\x49 #|0 \x30\x4A #|0 \x30\x4B #|0 \x30\x4C #|0 \x30\x4D #|0 \x30\x4E #|0 \x30\x4F #|0 \x30\x50 #|0 \x30\x51 #|0 \x30\x52 #|0 \x30\x53 #|0 \x30\x54 #|0 \x30\x55 #|0 \x30\x56 #|0 \x30\x57 #|0 \x30\x58 #|0 \x30\x59 #|0 \x30\x5A #|0 \x30\x5B #|0 \x30\x5C #|0 \x30\x5D #|0 \x30\x5E #|0 \x30\x5F #|0 \x30\x60 #|0 \x30\x61 #|0 \x30\x62 #|0 \x30\x63 #|0 \x30\x64 #|0 \x30\x65 #|0 \x30\x66 #|0 \x30\x67 #|0 \x30\x68 #|0 \x30\x69 #|0 \x30\x6A #|0 \x30\x6B #|0 \x30\x6C #|0 \x30\x6D #|0 \x30\x6E #|0 \x30\x6F #|0 \x30\x70 #|0 \x30\x71 #|0 \x30\x72 #|0 \x30\x73 #|0 \x30\x74 #|0 \x30\x75 #|0 \x30\x76 #|0 \x30\x77 #|0 \x30\x78 #|0 \x30\x79 #|0 \x30\x7A #|0 \x30\x7B #|0 \x30\x7C #|0 \x30\x7D #|0 \x30\x7E #|0 \x31\x21 #|0 \x31\x22 #|0 \x31\x23 #|0 \x31\x24 #|0 \x31\x25 #|0 \x31\x26 #|0 \x31\x27 #|0 \x31\x28 #|0 \x31\x29 #|0 \x31\x2A #|0 \x31\x2B #|0 \x31\x2C #|0 \x31\x2D #|0 \x31\x2E #|0 \x31\x2F #|0 \x31\x30 #|0 \x31\x31 #|0 \x31\x32 #|0 \x31\x33 #|0 \x31\x34 #|0 \x31\x35 #|0 \x31\x36 #|0 \x31\x37 #|0 \x31\x38 #|0 \x31\x39 #|0 \x31\x3A #|0 \x31\x3B #|0 \x31\x3C #|0 \x31\x3D #|0 \x31\x3E #|0 \x31\x3F #|0 \x31\x40 #|0 \x31\x41 #|0 \x31\x42 #|0 \x31\x43 #|0 \x31\x44 #|0 \x31\x45 #|0 \x31\x46 #|0 \x31\x47 #|0 \x31\x48 #|0 \x31\x49 #|0 \x31\x4A #|0 \x31\x4B #|0 \x31\x4C #|0 \x31\x4D #|0 \x31\x4E #|0 \x31\x4F #|0 \x31\x50 #|0 \x31\x51 #|0 \x31\x52 #|0 \x31\x53 #|0 \x31\x54 #|0 \x31\x55 #|0 \x31\x56 #|0 \x31\x57 #|0 \x31\x58 #|0 \x31\x59 #|0 \x31\x5A #|0 \x31\x5B #|0 \x31\x5C #|0 \x31\x5D #|0 \x31\x5E #|0 \x31\x5F #|0 \x31\x60 #|0 \x31\x61 #|0 \x31\x62 #|0 \x31\x63 #|0 \x31\x64 #|0 \x31\x65 #|0 \x31\x66 #|0 \x31\x67 #|0 \x31\x68 #|0 \x31\x69 #|0 \x31\x6A #|0 \x31\x6B #|0 \x31\x6C #|0 \x31\x6D #|0 \x31\x6E #|0 \x31\x6F #|0 \x31\x70 #|0 \x31\x71 #|0 \x31\x72 #|0 \x31\x73 #|0 \x31\x74 #|0 \x31\x75 #|0 \x31\x76 #|0 \x31\x77 #|0 \x31\x78 #|0 \x31\x79 #|0 \x31\x7A #|0 \x31\x7B #|0 \x31\x7C #|0 \x31\x7D #|0 \x31\x7E #|0 \x32\x21 #|0 \x32\x22 #|0 \x32\x23 #|0 \x32\x24 #|0 \x32\x25 #|0 \x32\x26 #|0 \x32\x27 #|0 \x32\x28 #|0 \x32\x29 #|0 \x32\x2A #|0 \x32\x2B #|0 \x32\x2C #|0 \x32\x2D #|0 \x32\x2E #|0 \x32\x2F #|0 \x32\x30 #|0 \x32\x31 #|0 \x32\x32 #|0 \x32\x33 #|0 \x32\x34 #|0 \x32\x35 #|0 \x32\x36 #|0 \x32\x37 #|0 \x32\x38 #|0 \x32\x39 #|0 \x32\x3A #|0 \x32\x3B #|0 \x32\x3C #|0 \x32\x3D #|0 \x32\x3E #|0 \x32\x3F #|0 \x32\x40 #|0 \x32\x41 #|0 \x32\x42 #|0 \x32\x43 #|0 \x32\x44 #|0 \x32\x45 #|0 \x32\x46 #|0 \x32\x47 #|0 \x32\x48 #|0 \x32\x49 #|0 \x32\x4A #|0 \x32\x4B #|0 \x32\x4C #|0 \x32\x4D #|0 \x32\x4E #|0 \x32\x4F #|0 \x32\x50 #|0 \x32\x51 #|0 \x32\x52 #|0 \x32\x53 #|0 \x32\x54 #|0 \x32\x55 #|0 \x32\x56 #|0 \x32\x57 #|0 \x32\x58 #|0 \x32\x59 #|0 \x32\x5A #|0 \x32\x5B #|0 \x32\x5C #|0 \x32\x5D #|0 \x32\x5E #|0 \x32\x5F #|0 \x32\x60 #|0 \x32\x61 #|0 \x32\x62 #|0 \x32\x63 #|0 \x32\x64 #|0 \x32\x65 #|0 \x32\x66 #|0 \x32\x67 #|0 \x32\x68 #|0 \x32\x69 #|0 \x32\x6A #|0 \x32\x6B #|0 \x32\x6C #|0 \x32\x6D #|0 \x32\x6E #|0 \x32\x6F #|0 \x32\x70 #|0 \x32\x71 #|0 \x32\x72 #|0 \x32\x73 #|0 \x32\x74 #|0 \x32\x75 #|0 \x32\x76 #|0 \x32\x77 #|0 \x32\x78 #|0 \x32\x79 #|0 \x32\x7A #|0 \x32\x7B #|0 \x32\x7C #|0 \x32\x7D #|0 \x32\x7E #|0 \x33\x21 #|0 \x33\x22 #|0 \x33\x23 #|0 \x33\x24 #|0 \x33\x25 #|0 \x33\x26 #|0 \x33\x27 #|0 \x33\x28 #|0 \x33\x29 #|0 \x33\x2A #|0 \x33\x2B #|0 \x33\x2C #|0 \x33\x2D #|0 \x33\x2E #|0 \x33\x2F #|0 \x33\x30 #|0 \x33\x31 #|0 \x33\x32 #|0 \x33\x33 #|0 \x33\x34 #|0 \x33\x35 #|0 \x33\x36 #|0 \x33\x37 #|0 \x33\x38 #|0 \x33\x39 #|0 \x33\x3A #|0 \x33\x3B #|0 \x33\x3C #|0 \x33\x3D #|0 \x33\x3E #|0 \x33\x3F #|0 \x33\x40 #|0 \x33\x41 #|0 \x33\x42 #|0 \x33\x43 #|0 \x33\x44 #|0 \x33\x45 #|0 \x33\x46 #|0 \x33\x47 #|0 \x33\x48 #|0 \x33\x49 #|0 \x33\x4A #|0 \x33\x4B #|0 \x33\x4C #|0 \x33\x4D #|0 \x33\x4E #|0 \x33\x4F #|0 \x33\x50 #|0 \x33\x51 #|0 \x33\x52 #|0 \x33\x53 #|0 \x33\x54 #|0 \x33\x55 #|0 \x33\x56 #|0 \x33\x57 #|0 \x33\x58 #|0 \x33\x59 #|0 \x33\x5A #|0 \x33\x5B #|0 \x33\x5C #|0 \x33\x5D #|0 \x33\x5E #|0 \x33\x5F #|0 \x33\x60 #|0 \x33\x61 #|0 \x33\x62 #|0 \x33\x63 #|0 \x33\x64 #|0 \x33\x65 #|0 \x33\x66 #|0 \x33\x67 #|0 \x33\x68 #|0 \x33\x69 #|0 \x33\x6A #|0 \x33\x6B #|0 \x33\x6C #|0 \x33\x6D #|0 \x33\x6E #|0 \x33\x6F #|0 \x33\x70 #|0 \x33\x71 #|0 \x33\x72 #|0 \x33\x73 #|0 \x33\x74 #|0 \x33\x75 #|0 \x33\x76 #|0 \x33\x77 #|0 \x33\x78 #|0 \x33\x79 #|0 \x33\x7A #|0 \x33\x7B #|0 \x33\x7C #|0 \x33\x7D #|0 \x33\x7E #|0 \x34\x21 #|0 \x34\x22 #|0 \x34\x23 #|0 \x34\x24 #|0 \x34\x25 #|0 \x34\x26 #|0 \x34\x27 #|0 \x34\x28 #|0 \x34\x29 #|0 \x34\x2A #|0 \x34\x2B #|0 \x34\x2C #|0 \x34\x2D #|0 \x34\x2E #|0 \x34\x2F #|0 \x34\x30 #|0 \x34\x31 #|0 \x34\x32 #|0 \x34\x33 #|0 \x34\x34 #|0 \x34\x35 #|0 \x34\x36 #|0 \x34\x37 #|0 \x34\x38 #|0 \x34\x39 #|0 \x34\x3A #|0 \x34\x3B #|0 \x34\x3C #|0 \x34\x3D #|0 \x34\x3E #|0 \x34\x3F #|0 \x34\x40 #|0 \x34\x41 #|0 \x34\x42 #|0 \x34\x43 #|0 \x34\x44 #|0 \x34\x45 #|0 \x34\x46 #|0 \x34\x47 #|0 \x34\x48 #|0 \x34\x49 #|0 \x34\x4A #|0 \x34\x4B #|0 \x34\x4C #|0 \x34\x4D #|0 \x34\x4E #|0 \x34\x4F #|0 \x34\x50 #|0 \x34\x51 #|0 \x34\x52 #|0 \x34\x53 #|0 \x34\x54 #|0 \x34\x55 #|0 \x34\x56 #|0 \x34\x57 #|0 \x34\x58 #|0 \x34\x59 #|0 \x34\x5A #|0 \x34\x5B #|0 \x34\x5C #|0 \x34\x5D #|0 \x34\x5E #|0 \x34\x5F #|0 \x34\x60 #|0 \x34\x61 #|0 \x34\x62 #|0 \x34\x63 #|0 \x34\x64 #|0 \x34\x65 #|0 \x34\x66 #|0 \x34\x67 #|0 \x34\x68 #|0 \x34\x69 #|0 \x34\x6A #|0 \x34\x6B #|0 \x34\x6C #|0 \x34\x6D #|0 \x34\x6E #|0 \x34\x6F #|0 \x34\x70 #|0 \x34\x71 #|0 \x34\x72 #|0 \x34\x73 #|0 \x34\x74 #|0 \x34\x75 #|0 \x34\x76 #|0 \x34\x77 #|0 \x34\x78 #|0 \x34\x79 #|0 \x34\x7A #|0 \x34\x7B #|0 \x34\x7C #|0 \x34\x7D #|0 \x34\x7E #|0 \x35\x21 #|0 \x35\x22 #|0 \x35\x23 #|0 \x35\x24 #|0 \x35\x25 #|0 \x35\x26 #|0 \x35\x27 #|0 \x35\x28 #|0 \x35\x29 #|0 \x35\x2A #|0 \x35\x2B #|0 \x35\x2C #|0 \x35\x2D #|0 \x35\x2E #|0 \x35\x2F #|0 \x35\x30 #|0 \x35\x31 #|0 \x35\x32 #|0 \x35\x33 #|0 \x35\x34 #|0 \x35\x35 #|0 \x35\x36 #|0 \x35\x37 #|0 \x35\x38 #|0 \x35\x39 #|0 \x35\x3A #|0 \x35\x3B #|0 \x35\x3C #|0 \x35\x3D #|0 \x35\x3E #|0 \x35\x3F #|0 \x35\x40 #|0 \x35\x41 #|0 \x35\x42 #|0 \x35\x43 #|0 \x35\x44 #|0 \x35\x45 #|0 \x35\x46 #|0 \x35\x47 #|0 \x35\x48 #|0 \x35\x49 #|0 \x35\x4A #|0 \x35\x4B #|0 \x35\x4C #|0 \x35\x4D #|0 \x35\x4E #|0 \x35\x4F #|0 \x35\x50 #|0 \x35\x51 #|0 \x35\x52 #|0 \x35\x53 #|0 \x35\x54 #|0 \x35\x55 #|0 \x35\x56 #|0 \x35\x57 #|0 \x35\x58 #|0 \x35\x59 #|0 \x35\x5A #|0 \x35\x5B #|0 \x35\x5C #|0 \x35\x5D #|0 \x35\x5E #|0 \x35\x5F #|0 \x35\x60 #|0 \x35\x61 #|0 \x35\x62 #|0 \x35\x63 #|0 \x35\x64 #|0 \x35\x65 #|0 \x35\x66 #|0 \x35\x67 #|0 \x35\x68 #|0 \x35\x69 #|0 \x35\x6A #|0 \x35\x6B #|0 \x35\x6C #|0 \x35\x6D #|0 \x35\x6E #|0 \x35\x6F #|0 \x35\x70 #|0 \x35\x71 #|0 \x35\x72 #|0 \x35\x73 #|0 \x35\x74 #|0 \x35\x75 #|0 \x35\x76 #|0 \x35\x77 #|0 \x35\x78 #|0 \x35\x79 #|0 \x35\x7A #|0 \x35\x7B #|0 \x35\x7C #|0 \x35\x7D #|0 \x35\x7E #|0 \x36\x21 #|0 \x36\x22 #|0 \x36\x23 #|0 \x36\x24 #|0 \x36\x25 #|0 \x36\x26 #|0 \x36\x27 #|0 \x36\x28 #|0 \x36\x29 #|0 \x36\x2A #|0 \x36\x2B #|0 \x36\x2C #|0 \x36\x2D #|0 \x36\x2E #|0 \x36\x2F #|0 \x36\x30 #|0 \x36\x31 #|0 \x36\x32 #|0 \x36\x33 #|0 \x36\x34 #|0 \x36\x35 #|0 \x36\x36 #|0 \x36\x37 #|0 \x36\x38 #|0 \x36\x39 #|0 \x36\x3A #|0 \x36\x3B #|0 \x36\x3C #|0 \x36\x3D #|0 \x36\x3E #|0 \x36\x3F #|0 \x36\x40 #|0 \x36\x41 #|0 \x36\x42 #|0 \x36\x43 #|0 \x36\x44 #|0 \x36\x45 #|0 \x36\x46 #|0 \x36\x47 #|0 \x36\x48 #|0 \x36\x49 #|0 \x36\x4A #|0 \x36\x4B #|0 \x36\x4C #|0 \x36\x4D #|0 \x36\x4E #|0 \x36\x4F #|0 \x36\x50 #|0 \x36\x51 #|0 \x36\x52 #|0 \x36\x53 #|0 \x36\x54 #|0 \x36\x55 #|0 \x36\x56 #|0 \x36\x57 #|0 \x36\x58 #|0 \x36\x59 #|0 \x36\x5A #|0 \x36\x5B #|0 \x36\x5C #|0 \x36\x5D #|0 \x36\x5E #|0 \x36\x5F #|0 \x36\x60 #|0 \x36\x61 #|0 \x36\x62 #|0 \x36\x63 #|0 \x36\x64 #|0 \x36\x65 #|0 \x36\x66 #|0 \x36\x67 #|0 \x36\x68 #|0 \x36\x69 #|0 \x36\x6A #|0 \x36\x6B #|0 \x36\x6C #|0 \x36\x6D #|0 \x36\x6E #|0 \x36\x6F #|0 \x36\x70 #|0 \x36\x71 #|0 \x36\x72 #|0 \x36\x73 #|0 \x36\x74 #|0 \x36\x75 #|0 \x36\x76 #|0 \x36\x77 #|0 \x36\x78 #|0 \x36\x79 #|0 \x36\x7A #|0 \x36\x7B #|0 \x36\x7C #|0 \x36\x7D #|0 \x36\x7E #|0 \x37\x21 #|0 \x37\x22 #|0 \x37\x23 #|0 \x37\x24 #|0 \x37\x25 #|0 \x37\x26 #|0 \x37\x27 #|0 \x37\x28 #|0 \x37\x29 #|0 \x37\x2A #|0 \x37\x2B #|0 \x37\x2C #|0 \x37\x2D #|0 \x37\x2E #|0 \x37\x2F #|0 \x37\x30 #|0 \x37\x31 #|0 \x37\x32 #|0 \x37\x33 #|0 \x37\x34 #|0 \x37\x35 #|0 \x37\x36 #|0 \x37\x37 #|0 \x37\x38 #|0 \x37\x39 #|0 \x37\x3A #|0 \x37\x3B #|0 \x37\x3C #|0 \x37\x3D #|0 \x37\x3E #|0 \x37\x3F #|0 \x37\x40 #|0 \x37\x41 #|0 \x37\x42 #|0 \x37\x43 #|0 \x37\x44 #|0 \x37\x45 #|0 \x37\x46 #|0 \x37\x47 #|0 \x37\x48 #|0 \x37\x49 #|0 \x37\x4A #|0 \x37\x4B #|0 \x37\x4C #|0 \x37\x4D #|0 \x37\x4E #|0 \x37\x4F #|0 \x37\x50 #|0 \x37\x51 #|0 \x37\x52 #|0 \x37\x53 #|0 \x37\x54 #|0 \x37\x55 #|0 \x37\x56 #|0 \x37\x57 #|0 \x37\x58 #|0 \x37\x59 #|0 \x37\x5A #|0 \x37\x5B #|0 \x37\x5C #|0 \x37\x5D #|0 \x37\x5E #|0 \x37\x5F #|0 \x37\x60 #|0 \x37\x61 #|0 \x37\x62 #|0 \x37\x63 #|0 \x37\x64 #|0 \x37\x65 #|0 \x37\x66 #|0 \x37\x67 #|0 \x37\x68 #|0 \x37\x69 #|0 \x37\x6A #|0 \x37\x6B #|0 \x37\x6C #|0 \x37\x6D #|0 \x37\x6E #|0 \x37\x6F #|0 \x37\x70 #|0 \x37\x71 #|0 \x37\x72 #|0 \x37\x73 #|0 \x37\x74 #|0 \x37\x75 #|0 \x37\x76 #|0 \x37\x77 #|0 \x37\x78 #|0 \x37\x79 #|0 \x37\x7A #|0 \x37\x7B #|0 \x37\x7C #|0 \x37\x7D #|0 \x37\x7E #|0 \x38\x21 #|0 \x38\x22 #|0 \x38\x23 #|0 \x38\x24 #|0 \x38\x25 #|0 \x38\x26 #|0 \x38\x27 #|0 \x38\x28 #|0 \x38\x29 #|0 \x38\x2A #|0 \x38\x2B #|0 \x38\x2C #|0 \x38\x2D #|0 \x38\x2E #|0 \x38\x2F #|0 \x38\x30 #|0 \x38\x31 #|0 \x38\x32 #|0 \x38\x33 #|0 \x38\x34 #|0 \x38\x35 #|0 \x38\x36 #|0 \x38\x37 #|0 \x38\x38 #|0 \x38\x39 #|0 \x38\x3A #|0 \x38\x3B #|0 \x38\x3C #|0 \x38\x3D #|0 \x38\x3E #|0 \x38\x3F #|0 \x38\x40 #|0 \x38\x41 #|0 \x38\x42 #|0 \x38\x43 #|0 \x38\x44 #|0 \x38\x45 #|0 \x38\x46 #|0 \x38\x47 #|0 \x38\x48 #|0 \x38\x49 #|0 \x38\x4A #|0 \x38\x4B #|0 \x38\x4C #|0 \x38\x4D #|0 \x38\x4E #|0 \x38\x4F #|0 \x38\x50 #|0 \x38\x51 #|0 \x38\x52 #|0 \x38\x53 #|0 \x38\x54 #|0 \x38\x55 #|0 \x38\x56 #|0 \x38\x57 #|0 \x38\x58 #|0 \x38\x59 #|0 \x38\x5A #|0 \x38\x5B #|0 \x38\x5C #|0 \x38\x5D #|0 \x38\x5E #|0 \x38\x5F #|0 \x38\x60 #|0 \x38\x61 #|0 \x38\x62 #|0 \x38\x63 #|0 \x38\x64 #|0 \x38\x65 #|0 \x38\x66 #|0 \x38\x67 #|0 \x38\x68 #|0 \x38\x69 #|0 \x38\x6A #|0 \x38\x6B #|0 \x38\x6C #|0 \x38\x6D #|0 \x38\x6E #|0 \x38\x6F #|0 \x38\x70 #|0 \x38\x71 #|0 \x38\x72 #|0 \x38\x73 #|0 \x38\x74 #|0 \x38\x75 #|0 \x38\x76 #|0 \x38\x77 #|0 \x38\x78 #|0 \x38\x79 #|0 \x38\x7A #|0 \x38\x7B #|0 \x38\x7C #|0 \x38\x7D #|0 \x38\x7E #|0 \x39\x21 #|0 \x39\x22 #|0 \x39\x23 #|0 \x39\x24 #|0 \x39\x25 #|0 \x39\x26 #|0 \x39\x27 #|0 \x39\x28 #|0 \x39\x29 #|0 \x39\x2A #|0 \x39\x2B #|0 \x39\x2C #|0 \x39\x2D #|0 \x39\x2E #|0 \x39\x2F #|0 \x39\x30 #|0 \x39\x31 #|0 \x39\x32 #|0 \x39\x33 #|0 \x39\x34 #|0 \x39\x35 #|0 \x39\x36 #|0 \x39\x37 #|0 \x39\x38 #|0 \x39\x39 #|0 \x39\x3A #|0 \x39\x3B #|0 \x39\x3C #|0 \x39\x3D #|0 \x39\x3E #|0 \x39\x3F #|0 \x39\x40 #|0 \x39\x41 #|0 \x39\x42 #|0 \x39\x43 #|0 \x39\x44 #|0 \x39\x45 #|0 \x39\x46 #|0 \x39\x47 #|0 \x39\x48 #|0 \x39\x49 #|0 \x39\x4A #|0 \x39\x4B #|0 \x39\x4C #|0 \x39\x4D #|0 \x39\x4E #|0 \x39\x4F #|0 \x39\x50 #|0 \x39\x51 #|0 \x39\x52 #|0 \x39\x53 #|0 \x39\x54 #|0 \x39\x55 #|0 \x39\x56 #|0 \x39\x57 #|0 \x39\x58 #|0 \x39\x59 #|0 \x39\x5A #|0 \x39\x5B #|0 \x39\x5C #|0 \x39\x5D #|0 \x39\x5E #|0 \x39\x5F #|0 \x39\x60 #|0 \x39\x61 #|0 \x39\x62 #|0 \x39\x63 #|0 \x39\x64 #|0 \x39\x65 #|0 \x39\x66 #|0 \x39\x67 #|0 \x39\x68 #|0 \x39\x69 #|0 \x39\x6A #|0 \x39\x6B #|0 \x39\x6C #|0 \x39\x6D #|0 \x39\x6E #|0 \x39\x6F #|0 \x39\x70 #|0 \x39\x71 #|0 \x39\x72 #|0 \x39\x73 #|0 \x39\x74 #|0 \x39\x75 #|0 \x39\x76 #|0 \x39\x77 #|0 \x39\x78 #|0 \x39\x79 #|0 \x39\x7A #|0 \x39\x7B #|0 \x39\x7C #|0 \x39\x7D #|0 \x39\x7E #|0 \x3A\x21 #|0 \x3A\x22 #|0 \x3A\x23 #|0 \x3A\x24 #|0 \x3A\x25 #|0 \x3A\x26 #|0 \x3A\x27 #|0 \x3A\x28 #|0 \x3A\x29 #|0 \x3A\x2A #|0 \x3A\x2B #|0 \x3A\x2C #|0 \x3A\x2D #|0 \x3A\x2E #|0 \x3A\x2F #|0 \x3A\x30 #|0 \x3A\x31 #|0 \x3A\x32 #|0 \x3A\x33 #|0 \x3A\x34 #|0 \x3A\x35 #|0 \x3A\x36 #|0 \x3A\x37 #|0 \x3A\x38 #|0 \x3A\x39 #|0 \x3A\x3A #|0 \x3A\x3B #|0 \x3A\x3C #|0 \x3A\x3D #|0 \x3A\x3E #|0 \x3A\x3F #|0 \x3A\x40 #|0 \x3A\x41 #|0 \x3A\x42 #|0 \x3A\x43 #|0 \x3A\x44 #|0 \x3A\x45 #|0 \x3A\x46 #|0 \x3A\x47 #|0 \x3A\x48 #|0 \x3A\x49 #|0 \x3A\x4A #|0 \x3A\x4B #|0 \x3A\x4C #|0 \x3A\x4D #|0 \x3A\x4E #|0 \x3A\x4F #|0 \x3A\x50 #|0 \x3A\x51 #|0 \x3A\x52 #|0 \x3A\x53 #|0 \x3A\x54 #|0 \x3A\x55 #|0 \x3A\x56 #|0 \x3A\x57 #|0 \x3A\x58 #|0 \x3A\x59 #|0 \x3A\x5A #|0 \x3A\x5B #|0 \x3A\x5C #|0 \x3A\x5D #|0 \x3A\x5E #|0 \x3A\x5F #|0 \x3A\x60 #|0 \x3A\x61 #|0 \x3A\x62 #|0 \x3A\x63 #|0 \x3A\x64 #|0 \x3A\x65 #|0 \x3A\x66 #|0 \x3A\x67 #|0 \x3A\x68 #|0 \x3A\x69 #|0 \x3A\x6A #|0 \x3A\x6B #|0 \x3A\x6C #|0 \x3A\x6D #|0 \x3A\x6E #|0 \x3A\x6F #|0 \x3A\x70 #|0 \x3A\x71 #|0 \x3A\x72 #|0 \x3A\x73 #|0 \x3A\x74 #|0 \x3A\x75 #|0 \x3A\x76 #|0 \x3A\x77 #|0 \x3A\x78 #|0 \x3A\x79 #|0 \x3A\x7A #|0 \x3A\x7B #|0 \x3A\x7C #|0 \x3A\x7D #|0 \x3A\x7E #|0 \x3B\x21 #|0 \x3B\x22 #|0 \x3B\x23 #|0 \x3B\x24 #|0 \x3B\x25 #|0 \x3B\x26 #|0 \x3B\x27 #|0 \x3B\x28 #|0 \x3B\x29 #|0 \x3B\x2A #|0 \x3B\x2B #|0 \x3B\x2C #|0 \x3B\x2D #|0 \x3B\x2E #|0 \x3B\x2F #|0 \x3B\x30 #|0 \x3B\x31 #|0 \x3B\x32 #|0 \x3B\x33 #|0 \x3B\x34 #|0 \x3B\x35 #|0 \x3B\x36 #|0 \x3B\x37 #|0 \x3B\x38 #|0 \x3B\x39 #|0 \x3B\x3A #|0 \x3B\x3B #|0 \x3B\x3C #|0 \x3B\x3D #|0 \x3B\x3E #|0 \x3B\x3F #|0 \x3B\x40 #|0 \x3B\x41 #|0 \x3B\x42 #|0 \x3B\x43 #|0 \x3B\x44 #|0 \x3B\x45 #|0 \x3B\x46 #|0 \x3B\x47 #|0 \x3B\x48 #|0 \x3B\x49 #|0 \x3B\x4A #|0 \x3B\x4B #|0 \x3B\x4C #|0 \x3B\x4D #|0 \x3B\x4E #|0 \x3B\x4F #|0 \x3B\x50 #|0 \x3B\x51 #|0 \x3B\x52 #|0 \x3B\x53 #|0 \x3B\x54 #|0 \x3B\x55 #|0 \x3B\x56 #|0 \x3B\x57 #|0 \x3B\x58 #|0 \x3B\x59 #|0 \x3B\x5A #|0 \x3B\x5B #|0 \x3B\x5C #|0 \x3B\x5D #|0 \x3B\x5E #|0 \x3B\x5F #|0 \x3B\x60 #|0 \x3B\x61 #|0 \x3B\x62 #|0 \x3B\x63 #|0 \x3B\x64 #|0 \x3B\x65 #|0 \x3B\x66 #|0 \x3B\x67 #|0 \x3B\x68 #|0 \x3B\x69 #|0 \x3B\x6A #|0 \x3B\x6B #|0 \x3B\x6C #|0 \x3B\x6D #|0 \x3B\x6E #|0 \x3B\x6F #|0 \x3B\x70 #|0 \x3B\x71 #|0 \x3B\x72 #|0 \x3B\x73 #|0 \x3B\x74 #|0 \x3B\x75 #|0 \x3B\x76 #|0 \x3B\x77 #|0 \x3B\x78 #|0 \x3B\x79 #|0 \x3B\x7A #|0 \x3B\x7B #|0 \x3B\x7C #|0 \x3B\x7D #|0 \x3B\x7E #|0 \x3C\x21 #|0 \x3C\x22 #|0 \x3C\x23 #|0 \x3C\x24 #|0 \x3C\x25 #|0 \x3C\x26 #|0 \x3C\x27 #|0 \x3C\x28 #|0 \x3C\x29 #|0 \x3C\x2A #|0 \x3C\x2B #|0 \x3C\x2C #|0 \x3C\x2D #|0 \x3C\x2E #|0 \x3C\x2F #|0 \x3C\x30 #|0 \x3C\x31 #|0 \x3C\x32 #|0 \x3C\x33 #|0 \x3C\x34 #|0 \x3C\x35 #|0 \x3C\x36 #|0 \x3C\x37 #|0 \x3C\x38 #|0 \x3C\x39 #|0 \x3C\x3A #|0 \x3C\x3B #|0 \x3C\x3C #|0 \x3C\x3D #|0 \x3C\x3E #|0 \x3C\x3F #|0 \x3C\x40 #|0 \x3C\x41 #|0 \x3C\x42 #|0 \x3C\x43 #|0 \x3C\x44 #|0 \x3C\x45 #|0 \x3C\x46 #|0 \x3C\x47 #|0 \x3C\x48 #|0 \x3C\x49 #|0 \x3C\x4A #|0 \x3C\x4B #|0 \x3C\x4C #|0 \x3C\x4D #|0 \x3C\x4E #|0 \x3C\x4F #|0 \x3C\x50 #|0 \x3C\x51 #|0 \x3C\x52 #|0 \x3C\x53 #|0 \x3C\x54 #|0 \x3C\x55 #|0 \x3C\x56 #|0 \x3C\x57 #|0 \x3C\x58 #|0 \x3C\x59 #|0 \x3C\x5A #|0 \x3C\x5B #|0 \x3C\x5C #|0 \x3C\x5D #|0 \x3C\x5E #|0 \x3C\x5F #|0 \x3C\x60 #|0 \x3C\x61 #|0 \x3C\x62 #|0 \x3C\x63 #|0 \x3C\x64 #|0 \x3C\x65 #|0 \x3C\x66 #|0 \x3C\x67 #|0 \x3C\x68 #|0 \x3C\x69 #|0 \x3C\x6A #|0 \x3C\x6B #|0 \x3C\x6C #|0 \x3C\x6D #|0 \x3C\x6E #|0 \x3C\x6F #|0 \x3C\x70 #|0 \x3C\x71 #|0 \x3C\x72 #|0 \x3C\x73 #|0 \x3C\x74 #|0 \x3C\x75 #|0 \x3C\x76 #|0 \x3C\x77 #|0 \x3C\x78 #|0 \x3C\x79 #|0 \x3C\x7A #|0 \x3C\x7B #|0 \x3C\x7C #|0 \x3C\x7D #|0 \x3C\x7E #|0 \x3D\x21 #|0 \x3D\x22 #|0 \x3D\x23 #|0 \x3D\x24 #|0 \x3D\x25 #|0 \x3D\x26 #|0 \x3D\x27 #|0 \x3D\x28 #|0 \x3D\x29 #|0 \x3D\x2A #|0 \x3D\x2B #|0 \x3D\x2C #|0 \x3D\x2D #|0 \x3D\x2E #|0 \x3D\x2F #|0 \x3D\x30 #|0 \x3D\x31 #|0 \x3D\x32 #|0 \x3D\x33 #|0 \x3D\x34 #|0 \x3D\x35 #|0 \x3D\x36 #|0 \x3D\x37 #|0 \x3D\x38 #|0 \x3D\x39 #|0 \x3D\x3A #|0 \x3D\x3B #|0 \x3D\x3C #|0 \x3D\x3D #|0 \x3D\x3E #|0 \x3D\x3F #|0 \x3D\x40 #|0 \x3D\x41 #|0 \x3D\x42 #|0 \x3D\x43 #|0 \x3D\x44 #|0 \x3D\x45 #|0 \x3D\x46 #|0 \x3D\x47 #|0 \x3D\x48 #|0 \x3D\x49 #|0 \x3D\x4A #|0 \x3D\x4B #|0 \x3D\x4C #|0 \x3D\x4D #|0 \x3D\x4E #|0 \x3D\x4F #|0 \x3D\x50 #|0 \x3D\x51 #|0 \x3D\x52 #|0 \x3D\x53 #|0 \x3D\x54 #|0 \x3D\x55 #|0 \x3D\x56 #|0 \x3D\x57 #|0 \x3D\x58 #|0 \x3D\x59 #|0 \x3D\x5A #|0 \x3D\x5B #|0 \x3D\x5C #|0 \x3D\x5D #|0 \x3D\x5E #|0 \x3D\x5F #|0 \x3D\x60 #|0 \x3D\x61 #|0 \x3D\x62 #|0 \x3D\x63 #|0 \x3D\x64 #|0 \x3D\x65 #|0 \x3D\x66 #|0 \x3D\x67 #|0 \x3D\x68 #|0 \x3D\x69 #|0 \x3D\x6A #|0 \x3D\x6B #|0 \x3D\x6C #|0 \x3D\x6D #|0 \x3D\x6E #|0 \x3D\x6F #|0 \x3D\x70 #|0 \x3D\x71 #|0 \x3D\x72 #|0 \x3D\x73 #|0 \x3D\x74 #|0 \x3D\x75 #|0 \x3D\x76 #|0 \x3D\x77 #|0 \x3D\x78 #|0 \x3D\x79 #|0 \x3D\x7A #|0 \x3D\x7B #|0 \x3D\x7C #|0 \x3D\x7D #|0 \x3D\x7E #|0 \x3E\x21 #|0 \x3E\x22 #|0 \x3E\x23 #|0 \x3E\x24 #|0 \x3E\x25 #|0 \x3E\x26 #|0 \x3E\x27 #|0 \x3E\x28 #|0 \x3E\x29 #|0 \x3E\x2A #|0 \x3E\x2B #|0 \x3E\x2C #|0 \x3E\x2D #|0 \x3E\x2E #|0 \x3E\x2F #|0 \x3E\x30 #|0 \x3E\x31 #|0 \x3E\x32 #|0 \x3E\x33 #|0 \x3E\x34 #|0 \x3E\x35 #|0 \x3E\x36 #|0 \x3E\x37 #|0 \x3E\x38 #|0 \x3E\x39 #|0 \x3E\x3A #|0 \x3E\x3B #|0 \x3E\x3C #|0 \x3E\x3D #|0 \x3E\x3E #|0 \x3E\x3F #|0 \x3E\x40 #|0 \x3E\x41 #|0 \x3E\x42 #|0 \x3E\x43 #|0 \x3E\x44 #|0 \x3E\x45 #|0 \x3E\x46 #|0 \x3E\x47 #|0 \x3E\x48 #|0 \x3E\x49 #|0 \x3E\x4A #|0 \x3E\x4B #|0 \x3E\x4C #|0 \x3E\x4D #|0 \x3E\x4E #|0 \x3E\x4F #|0 \x3E\x50 #|0 \x3E\x51 #|0 \x3E\x52 #|0 \x3E\x53 #|0 \x3E\x54 #|0 \x3E\x55 #|0 \x3E\x56 #|0 \x3E\x57 #|0 \x3E\x58 #|0 \x3E\x59 #|0 \x3E\x5A #|0 \x3E\x5B #|0 \x3E\x5C #|0 \x3E\x5D #|0 \x3E\x5E #|0 \x3E\x5F #|0 \x3E\x60 #|0 \x3E\x61 #|0 \x3E\x62 #|0 \x3E\x63 #|0 \x3E\x64 #|0 \x3E\x65 #|0 \x3E\x66 #|0 \x3E\x67 #|0 \x3E\x68 #|0 \x3E\x69 #|0 \x3E\x6A #|0 \x3E\x6B #|0 \x3E\x6C #|0 \x3E\x6D #|0 \x3E\x6E #|0 \x3E\x6F #|0 \x3E\x70 #|0 \x3E\x71 #|0 \x3E\x72 #|0 \x3E\x73 #|0 \x3E\x74 #|0 \x3E\x75 #|0 \x3E\x76 #|0 \x3E\x77 #|0 \x3E\x78 #|0 \x3E\x79 #|0 \x3E\x7A #|0 \x3E\x7B #|0 \x3E\x7C #|0 \x3E\x7D #|0 \x3E\x7E #|0 \x3F\x21 #|0 \x3F\x22 #|0 \x3F\x23 #|0 \x3F\x24 #|0 \x3F\x25 #|0 \x3F\x26 #|0 \x3F\x27 #|0 \x3F\x28 #|0 \x3F\x29 #|0 \x3F\x2A #|0 \x3F\x2B #|0 \x3F\x2C #|0 \x3F\x2D #|0 \x3F\x2E #|0 \x3F\x2F #|0 \x3F\x30 #|0 \x3F\x31 #|0 \x3F\x32 #|0 \x3F\x33 #|0 \x3F\x34 #|0 \x3F\x35 #|0 \x3F\x36 #|0 \x3F\x37 #|0 \x3F\x38 #|0 \x3F\x39 #|0 \x3F\x3A #|0 \x3F\x3B #|0 \x3F\x3C #|0 \x3F\x3D #|0 \x3F\x3E #|0 \x3F\x3F #|0 \x3F\x40 #|0 \x3F\x41 #|0 \x3F\x42 #|0 \x3F\x43 #|0 \x3F\x44 #|0 \x3F\x45 #|0 \x3F\x46 #|0 \x3F\x47 #|0 \x3F\x48 #|0 \x3F\x49 #|0 \x3F\x4A #|0 \x3F\x4B #|0 \x3F\x4C #|0 \x3F\x4D #|0 \x3F\x4E #|0 \x3F\x4F #|0 \x3F\x50 #|0 \x3F\x51 #|0 \x3F\x52 #|0 \x3F\x53 #|0 \x3F\x54 #|0 \x3F\x55 #|0 \x3F\x56 #|0 \x3F\x57 #|0 \x3F\x58 #|0 \x3F\x59 #|0 \x3F\x5A #|0 \x3F\x5B #|0 \x3F\x5C #|0 \x3F\x5D #|0 \x3F\x5E #|0 \x3F\x5F #|0 \x3F\x60 #|0 \x3F\x61 #|0 \x3F\x62 #|0 \x3F\x63 #|0 \x3F\x64 #|0 \x3F\x65 #|0 \x3F\x66 #|0 \x3F\x67 #|0 \x3F\x68 #|0 \x3F\x69 #|0 \x3F\x6A #|0 \x3F\x6B #|0 \x3F\x6C #|0 \x3F\x6D #|0 \x3F\x6E #|0 \x3F\x6F #|0 \x3F\x70 #|0 \x3F\x71 #|0 \x3F\x72 #|0 \x3F\x73 #|0 \x3F\x74 #|0 \x3F\x75 #|0 \x3F\x76 #|0 \x3F\x77 #|0 \x3F\x78 #|0 \x3F\x79 #|0 \x3F\x7A #|0 \x3F\x7B #|0 \x3F\x7C #|0 \x3F\x7D #|0 \x3F\x7E #|0 \x40\x21 #|0 \x40\x22 #|0 \x40\x23 #|0 \x40\x24 #|0 \x40\x25 #|0 \x40\x26 #|0 \x40\x27 #|0 \x40\x28 #|0 \x40\x29 #|0 \x40\x2A #|0 \x40\x2B #|0 \x40\x2C #|0 \x40\x2D #|0 \x40\x2E #|0 \x40\x2F #|0 \x40\x30 #|0 \x40\x31 #|0 \x40\x32 #|0 \x40\x33 #|0 \x40\x34 #|0 \x40\x35 #|0 \x40\x36 #|0 \x40\x37 #|0 \x40\x38 #|0 \x40\x39 #|0 \x40\x3A #|0 \x40\x3B #|0 \x40\x3C #|0 \x40\x3D #|0 \x40\x3E #|0 \x40\x3F #|0 \x40\x40 #|0 \x40\x41 #|0 \x40\x42 #|0 \x40\x43 #|0 \x40\x44 #|0 \x40\x45 #|0 \x40\x46 #|0 \x40\x47 #|0 \x40\x48 #|0 \x40\x49 #|0 \x40\x4A #|0 \x40\x4B #|0 \x40\x4C #|0 \x40\x4D #|0 \x40\x4E #|0 \x40\x4F #|0 \x40\x50 #|0 \x40\x51 #|0 \x40\x52 #|0 \x40\x53 #|0 \x40\x54 #|0 \x40\x55 #|0 \x40\x56 #|0 \x40\x57 #|0 \x40\x58 #|0 \x40\x59 #|0 \x40\x5A #|0 \x40\x5B #|0 \x40\x5C #|0 \x40\x5D #|0 \x40\x5E #|0 \x40\x5F #|0 \x40\x60 #|0 \x40\x61 #|0 \x40\x62 #|0 \x40\x63 #|0 \x40\x64 #|0 \x40\x65 #|0 \x40\x66 #|0 \x40\x67 #|0 \x40\x68 #|0 \x40\x69 #|0 \x40\x6A #|0 \x40\x6B #|0 \x40\x6C #|0 \x40\x6D #|0 \x40\x6E #|0 \x40\x6F #|0 \x40\x70 #|0 \x40\x71 #|0 \x40\x72 #|0 \x40\x73 #|0 \x40\x74 #|0 \x40\x75 #|0 \x40\x76 #|0 \x40\x77 #|0 \x40\x78 #|0 \x40\x79 #|0 \x40\x7A #|0 \x40\x7B #|0 \x40\x7C #|0 \x40\x7D #|0 \x40\x7E #|0 \x41\x21 #|0 \x41\x22 #|0 \x41\x23 #|0 \x41\x24 #|0 \x41\x25 #|0 \x41\x26 #|0 \x41\x27 #|0 \x41\x28 #|0 \x41\x29 #|0 \x41\x2A #|0 \x41\x2B #|0 \x41\x2C #|0 \x41\x2D #|0 \x41\x2E #|0 \x41\x2F #|0 \x41\x30 #|0 \x41\x31 #|0 \x41\x32 #|0 \x41\x33 #|0 \x41\x34 #|0 \x41\x35 #|0 \x41\x36 #|0 \x41\x37 #|0 \x41\x38 #|0 \x41\x39 #|0 \x41\x3A #|0 \x41\x3B #|0 \x41\x3C #|0 \x41\x3D #|0 \x41\x3E #|0 \x41\x3F #|0 \x41\x40 #|0 \x41\x41 #|0 \x41\x42 #|0 \x41\x43 #|0 \x41\x44 #|0 \x41\x45 #|0 \x41\x46 #|0 \x41\x47 #|0 \x41\x48 #|0 \x41\x49 #|0 \x41\x4A #|0 \x41\x4B #|0 \x41\x4C #|0 \x41\x4D #|0 \x41\x4E #|0 \x41\x4F #|0 \x41\x50 #|0 \x41\x51 #|0 \x41\x52 #|0 \x41\x53 #|0 \x41\x54 #|0 \x41\x55 #|0 \x41\x56 #|0 \x41\x57 #|0 \x41\x58 #|0 \x41\x59 #|0 \x41\x5A #|0 \x41\x5B #|0 \x41\x5C #|0 \x41\x5D #|0 \x41\x5E #|0 \x41\x5F #|0 \x41\x60 #|0 \x41\x61 #|0 \x41\x62 #|0 \x41\x63 #|0 \x41\x64 #|0 \x41\x65 #|0 \x41\x66 #|0 \x41\x67 #|0 \x41\x68 #|0 \x41\x69 #|0 \x41\x6A #|0 \x41\x6B #|0 \x41\x6C #|0 \x41\x6D #|0 \x41\x6E #|0 \x41\x6F #|0 \x41\x70 #|0 \x41\x71 #|0 \x41\x72 #|0 \x41\x73 #|0 \x41\x74 #|0 \x41\x75 #|0 \x41\x76 #|0 \x41\x77 #|0 \x41\x78 #|0 \x41\x79 #|0 \x41\x7A #|0 \x41\x7B #|0 \x41\x7C #|0 \x41\x7D #|0 \x41\x7E #|0 \x42\x21 #|0 \x42\x22 #|0 \x42\x23 #|0 \x42\x24 #|0 \x42\x25 #|0 \x42\x26 #|0 \x42\x27 #|0 \x42\x28 #|0 \x42\x29 #|0 \x42\x2A #|0 \x42\x2B #|0 \x42\x2C #|0 \x42\x2D #|0 \x42\x2E #|0 \x42\x2F #|0 \x42\x30 #|0 \x42\x31 #|0 \x42\x32 #|0 \x42\x33 #|0 \x42\x34 #|0 \x42\x35 #|0 \x42\x36 #|0 \x42\x37 #|0 \x42\x38 #|0 \x42\x39 #|0 \x42\x3A #|0 \x42\x3B #|0 \x42\x3C #|0 \x42\x3D #|0 \x42\x3E #|0 \x42\x3F #|0 \x42\x40 #|0 \x42\x41 #|0 \x42\x42 #|0 \x42\x43 #|0 \x42\x44 #|0 \x42\x45 #|0 \x42\x46 #|0 \x42\x47 #|0 \x42\x48 #|0 \x42\x49 #|0 \x42\x4A #|0 \x42\x4B #|0 \x42\x4C #|0 \x42\x4D #|0 \x42\x4E #|0 \x42\x4F #|0 \x42\x50 #|0 \x42\x51 #|0 \x42\x52 #|0 \x42\x53 #|0 \x42\x54 #|0 \x42\x55 #|0 \x42\x56 #|0 \x42\x57 #|0 \x42\x58 #|0 \x42\x59 #|0 \x42\x5A #|0 \x42\x5B #|0 \x42\x5C #|0 \x42\x5D #|0 \x42\x5E #|0 \x42\x5F #|0 \x42\x60 #|0 \x42\x61 #|0 \x42\x62 #|0 \x42\x63 #|0 \x42\x64 #|0 \x42\x65 #|0 \x42\x66 #|0 \x42\x67 #|0 \x42\x68 #|0 \x42\x69 #|0 \x42\x6A #|0 \x42\x6B #|0 \x42\x6C #|0 \x42\x6D #|0 \x42\x6E #|0 \x42\x6F #|0 \x42\x70 #|0 \x42\x71 #|0 \x42\x72 #|0 \x42\x73 #|0 \x42\x74 #|0 \x42\x75 #|0 \x42\x76 #|0 \x42\x77 #|0 \x42\x78 #|0 \x42\x79 #|0 \x42\x7A #|0 \x42\x7B #|0 \x42\x7C #|0 \x42\x7D #|0 \x42\x7E #|0 \x43\x21 #|0 \x43\x22 #|0 \x43\x23 #|0 \x43\x24 #|0 \x43\x25 #|0 \x43\x26 #|0 \x43\x27 #|0 \x43\x28 #|0 \x43\x29 #|0 \x43\x2A #|0 \x43\x2B #|0 \x43\x2C #|0 \x43\x2D #|0 \x43\x2E #|0 \x43\x2F #|0 \x43\x30 #|0 \x43\x31 #|0 \x43\x32 #|0 \x43\x33 #|0 \x43\x34 #|0 \x43\x35 #|0 \x43\x36 #|0 \x43\x37 #|0 \x43\x38 #|0 \x43\x39 #|0 \x43\x3A #|0 \x43\x3B #|0 \x43\x3C #|0 \x43\x3D #|0 \x43\x3E #|0 \x43\x3F #|0 \x43\x40 #|0 \x43\x41 #|0 \x43\x42 #|0 \x43\x43 #|0 \x43\x44 #|0 \x43\x45 #|0 \x43\x46 #|0 \x43\x47 #|0 \x43\x48 #|0 \x43\x49 #|0 \x43\x4A #|0 \x43\x4B #|0 \x43\x4C #|0 \x43\x4D #|0 \x43\x4E #|0 \x43\x4F #|0 \x43\x50 #|0 \x43\x51 #|0 \x43\x52 #|0 \x43\x53 #|0 \x43\x54 #|0 \x43\x55 #|0 \x43\x56 #|0 \x43\x57 #|0 \x43\x58 #|0 \x43\x59 #|0 \x43\x5A #|0 \x43\x5B #|0 \x43\x5C #|0 \x43\x5D #|0 \x43\x5E #|0 \x43\x5F #|0 \x43\x60 #|0 \x43\x61 #|0 \x43\x62 #|0 \x43\x63 #|0 \x43\x64 #|0 \x43\x65 #|0 \x43\x66 #|0 \x43\x67 #|0 \x43\x68 #|0 \x43\x69 #|0 \x43\x6A #|0 \x43\x6B #|0 \x43\x6C #|0 \x43\x6D #|0 \x43\x6E #|0 \x43\x6F #|0 \x43\x70 #|0 \x43\x71 #|0 \x43\x72 #|0 \x43\x73 #|0 \x43\x74 #|0 \x43\x75 #|0 \x43\x76 #|0 \x43\x77 #|0 \x43\x78 #|0 \x43\x79 #|0 \x43\x7A #|0 \x43\x7B #|0 \x43\x7C #|0 \x43\x7D #|0 \x43\x7E #|0 \x44\x21 #|0 \x44\x22 #|0 \x44\x23 #|0 \x44\x24 #|0 \x44\x25 #|0 \x44\x26 #|0 \x44\x27 #|0 \x44\x28 #|0 \x44\x29 #|0 \x44\x2A #|0 \x44\x2B #|0 \x44\x2C #|0 \x44\x2D #|0 \x44\x2E #|0 \x44\x2F #|0 \x44\x30 #|0 \x44\x31 #|0 \x44\x32 #|0 \x44\x33 #|0 \x44\x34 #|0 \x44\x35 #|0 \x44\x36 #|0 \x44\x37 #|0 \x44\x38 #|0 \x44\x39 #|0 \x44\x3A #|0 \x44\x3B #|0 \x44\x3C #|0 \x44\x3D #|0 \x44\x3E #|0 \x44\x3F #|0 \x44\x40 #|0 \x44\x41 #|0 \x44\x42 #|0 \x44\x43 #|0 \x44\x44 #|0 \x44\x45 #|0 \x44\x46 #|0 \x44\x47 #|0 \x44\x48 #|0 \x44\x49 #|0 \x44\x4A #|0 \x44\x4B #|0 \x44\x4C #|0 \x44\x4D #|0 \x44\x4E #|0 \x44\x4F #|0 \x44\x50 #|0 \x44\x51 #|0 \x44\x52 #|0 \x44\x53 #|0 \x44\x54 #|0 \x44\x55 #|0 \x44\x56 #|0 \x44\x57 #|0 \x44\x58 #|0 \x44\x59 #|0 \x44\x5A #|0 \x44\x5B #|0 \x44\x5C #|0 \x44\x5D #|0 \x44\x5E #|0 \x44\x5F #|0 \x44\x60 #|0 \x44\x61 #|0 \x44\x62 #|0 \x44\x63 #|0 \x44\x64 #|0 \x44\x65 #|0 \x44\x66 #|0 \x44\x67 #|0 \x44\x68 #|0 \x44\x69 #|0 \x44\x6A #|0 \x44\x6B #|0 \x44\x6C #|0 \x44\x6D #|0 \x44\x6E #|0 \x44\x6F #|0 \x44\x70 #|0 \x44\x71 #|0 \x44\x72 #|0 \x44\x73 #|0 \x44\x74 #|0 \x44\x75 #|0 \x44\x76 #|0 \x44\x77 #|0 \x44\x78 #|0 \x44\x79 #|0 \x44\x7A #|0 \x44\x7B #|0 \x44\x7C #|0 \x44\x7D #|0 \x44\x7E #|0 \x45\x21 #|0 \x45\x22 #|0 \x45\x23 #|0 \x45\x24 #|0 \x45\x25 #|0 \x45\x26 #|0 \x45\x27 #|0 \x45\x28 #|0 \x45\x29 #|0 \x45\x2A #|0 \x45\x2B #|0 \x45\x2C #|0 \x45\x2D #|0 \x45\x2E #|0 \x45\x2F #|0 \x45\x30 #|0 \x45\x31 #|0 \x45\x32 #|0 \x45\x33 #|0 \x45\x34 #|0 \x45\x35 #|0 \x45\x36 #|0 \x45\x37 #|0 \x45\x38 #|0 \x45\x39 #|0 \x45\x3A #|0 \x45\x3B #|0 \x45\x3C #|0 \x45\x3D #|0 \x45\x3E #|0 \x45\x3F #|0 \x45\x40 #|0 \x45\x41 #|0 \x45\x42 #|0 \x45\x43 #|0 \x45\x44 #|0 \x45\x45 #|0 \x45\x46 #|0 \x45\x47 #|0 \x45\x48 #|0 \x45\x49 #|0 \x45\x4A #|0 \x45\x4B #|0 \x45\x4C #|0 \x45\x4D #|0 \x45\x4E #|0 \x45\x4F #|0 \x45\x50 #|0 \x45\x51 #|0 \x45\x52 #|0 \x45\x53 #|0 \x45\x54 #|0 \x45\x55 #|0 \x45\x56 #|0 \x45\x57 #|0 \x45\x58 #|0 \x45\x59 #|0 \x45\x5A #|0 \x45\x5B #|0 \x45\x5C #|0 \x45\x5D #|0 \x45\x5E #|0 \x45\x5F #|0 \x45\x60 #|0 \x45\x61 #|0 \x45\x62 #|0 \x45\x63 #|0 \x45\x64 #|0 \x45\x65 #|0 \x45\x66 #|0 \x45\x67 #|0 \x45\x68 #|0 \x45\x69 #|0 \x45\x6A #|0 \x45\x6B #|0 \x45\x6C #|0 \x45\x6D #|0 \x45\x6E #|0 \x45\x6F #|0 \x45\x70 #|0 \x45\x71 #|0 \x45\x72 #|0 \x45\x73 #|0 \x45\x74 #|0 \x45\x75 #|0 \x45\x76 #|0 \x45\x77 #|0 \x45\x78 #|0 \x45\x79 #|0 \x45\x7A #|0 \x45\x7B #|0 \x45\x7C #|0 \x45\x7D #|0 \x45\x7E #|0 \x46\x21 #|0 \x46\x22 #|0 \x46\x23 #|0 \x46\x24 #|0 \x46\x25 #|0 \x46\x26 #|0 \x46\x27 #|0 \x46\x28 #|0 \x46\x29 #|0 \x46\x2A #|0 \x46\x2B #|0 \x46\x2C #|0 \x46\x2D #|0 \x46\x2E #|0 \x46\x2F #|0 \x46\x30 #|0 \x46\x31 #|0 \x46\x32 #|0 \x46\x33 #|0 \x46\x34 #|0 \x46\x35 #|0 \x46\x36 #|0 \x46\x37 #|0 \x46\x38 #|0 \x46\x39 #|0 \x46\x3A #|0 \x46\x3B #|0 \x46\x3C #|0 \x46\x3D #|0 \x46\x3E #|0 \x46\x3F #|0 \x46\x40 #|0 \x46\x41 #|0 \x46\x42 #|0 \x46\x43 #|0 \x46\x44 #|0 \x46\x45 #|0 \x46\x46 #|0 \x46\x47 #|0 \x46\x48 #|0 \x46\x49 #|0 \x46\x4A #|0 \x46\x4B #|0 \x46\x4C #|0 \x46\x4D #|0 \x46\x4E #|0 \x46\x4F #|0 \x46\x50 #|0 \x46\x51 #|0 \x46\x52 #|0 \x46\x53 #|0 \x46\x54 #|0 \x46\x55 #|0 \x46\x56 #|0 \x46\x57 #|0 \x46\x58 #|0 \x46\x59 #|0 \x46\x5A #|0 \x46\x5B #|0 \x46\x5C #|0 \x46\x5D #|0 \x46\x5E #|0 \x46\x5F #|0 \x46\x60 #|0 \x46\x61 #|0 \x46\x62 #|0 \x46\x63 #|0 \x46\x64 #|0 \x46\x65 #|0 \x46\x66 #|0 \x46\x67 #|0 \x46\x68 #|0 \x46\x69 #|0 \x46\x6A #|0 \x46\x6B #|0 \x46\x6C #|0 \x46\x6D #|0 \x46\x6E #|0 \x46\x6F #|0 \x46\x70 #|0 \x46\x71 #|0 \x46\x72 #|0 \x46\x73 #|0 \x46\x74 #|0 \x46\x75 #|0 \x46\x76 #|0 \x46\x77 #|0 \x46\x78 #|0 \x46\x79 #|0 \x46\x7A #|0 \x46\x7B #|0 \x46\x7C #|0 \x46\x7D #|0 \x46\x7E #|0 \x47\x21 #|0 \x47\x22 #|0 \x47\x23 #|0 \x47\x24 #|0 \x47\x25 #|0 \x47\x26 #|0 \x47\x27 #|0 \x47\x28 #|0 \x47\x29 #|0 \x47\x2A #|0 \x47\x2B #|0 \x47\x2C #|0 \x47\x2D #|0 \x47\x2E #|0 \x47\x2F #|0 \x47\x30 #|0 \x47\x31 #|0 \x47\x32 #|0 \x47\x33 #|0 \x47\x34 #|0 \x47\x35 #|0 \x47\x36 #|0 \x47\x37 #|0 \x47\x38 #|0 \x47\x39 #|0 \x47\x3A #|0 \x47\x3B #|0 \x47\x3C #|0 \x47\x3D #|0 \x47\x3E #|0 \x47\x3F #|0 \x47\x40 #|0 \x47\x41 #|0 \x47\x42 #|0 \x47\x43 #|0 \x47\x44 #|0 \x47\x45 #|0 \x47\x46 #|0 \x47\x47 #|0 \x47\x48 #|0 \x47\x49 #|0 \x47\x4A #|0 \x47\x4B #|0 \x47\x4C #|0 \x47\x4D #|0 \x47\x4E #|0 \x47\x4F #|0 \x47\x50 #|0 \x47\x51 #|0 \x47\x52 #|0 \x47\x53 #|0 \x47\x54 #|0 \x47\x55 #|0 \x47\x56 #|0 \x47\x57 #|0 \x47\x58 #|0 \x47\x59 #|0 \x47\x5A #|0 \x47\x5B #|0 \x47\x5C #|0 \x47\x5D #|0 \x47\x5E #|0 \x47\x5F #|0 \x47\x60 #|0 \x47\x61 #|0 \x47\x62 #|0 \x47\x63 #|0 \x47\x64 #|0 \x47\x65 #|0 \x47\x66 #|0 \x47\x67 #|0 \x47\x68 #|0 \x47\x69 #|0 \x47\x6A #|0 \x47\x6B #|0 \x47\x6C #|0 \x47\x6D #|0 \x47\x6E #|0 \x47\x6F #|0 \x47\x70 #|0 \x47\x71 #|0 \x47\x72 #|0 \x47\x73 #|0 \x47\x74 #|0 \x47\x75 #|0 \x47\x76 #|0 \x47\x77 #|0 \x47\x78 #|0 \x47\x79 #|0 \x47\x7A #|0 \x47\x7B #|0 \x47\x7C #|0 \x47\x7D #|0 \x47\x7E #|0 \x48\x21 #|0 \x48\x22 #|0 \x48\x23 #|0 \x48\x24 #|0 \x48\x25 #|0 \x48\x26 #|0 \x48\x27 #|0 \x48\x28 #|0 \x48\x29 #|0 \x48\x2A #|0 \x48\x2B #|0 \x48\x2C #|0 \x48\x2D #|0 \x48\x2E #|0 \x48\x2F #|0 \x48\x30 #|0 \x48\x31 #|0 \x48\x32 #|0 \x48\x33 #|0 \x48\x34 #|0 \x48\x35 #|0 \x48\x36 #|0 \x48\x37 #|0 \x48\x38 #|0 \x48\x39 #|0 \x48\x3A #|0 \x48\x3B #|0 \x48\x3C #|0 \x48\x3D #|0 \x48\x3E #|0 \x48\x3F #|0 \x48\x40 #|0 \x48\x41 #|0 \x48\x42 #|0 \x48\x43 #|0 \x48\x44 #|0 \x48\x45 #|0 \x48\x46 #|0 \x48\x47 #|0 \x48\x48 #|0 \x48\x49 #|0 \x48\x4A #|0 \x48\x4B #|0 \x48\x4C #|0 \x48\x4D #|0 \x48\x4E #|0 \x48\x4F #|0 \x48\x50 #|0 \x48\x51 #|0 \x48\x52 #|0 \x48\x53 #|0 \x48\x54 #|0 \x48\x55 #|0 \x48\x56 #|0 \x48\x57 #|0 \x48\x58 #|0 \x48\x59 #|0 \x48\x5A #|0 \x48\x5B #|0 \x48\x5C #|0 \x48\x5D #|0 \x48\x5E #|0 \x48\x5F #|0 \x48\x60 #|0 \x48\x61 #|0 \x48\x62 #|0 \x48\x63 #|0 \x48\x64 #|0 \x48\x65 #|0 \x48\x66 #|0 \x48\x67 #|0 \x48\x68 #|0 \x48\x69 #|0 \x48\x6A #|0 \x48\x6B #|0 \x48\x6C #|0 \x48\x6D #|0 \x48\x6E #|0 \x48\x6F #|0 \x48\x70 #|0 \x48\x71 #|0 \x48\x72 #|0 \x48\x73 #|0 \x48\x74 #|0 \x48\x75 #|0 \x48\x76 #|0 \x48\x77 #|0 \x48\x78 #|0 \x48\x79 #|0 \x48\x7A #|0 \x48\x7B #|0 \x48\x7C #|0 \x48\x7D #|0 \x48\x7E #|0 \x49\x21 #|0 \x49\x22 #|0 \x49\x23 #|0 \x49\x24 #|0 \x49\x25 #|0 \x49\x26 #|0 \x49\x27 #|0 \x49\x28 #|0 \x49\x29 #|0 \x49\x2A #|0 \x49\x2B #|0 \x49\x2C #|0 \x49\x2D #|0 \x49\x2E #|0 \x49\x2F #|0 \x49\x30 #|0 \x49\x31 #|0 \x49\x32 #|0 \x49\x33 #|0 \x49\x34 #|0 \x49\x35 #|0 \x49\x36 #|0 \x49\x37 #|0 \x49\x38 #|0 \x49\x39 #|0 \x49\x3A #|0 \x49\x3B #|0 \x49\x3C #|0 \x49\x3D #|0 \x49\x3E #|0 \x49\x3F #|0 \x49\x40 #|0 \x49\x41 #|0 \x49\x42 #|0 \x49\x43 #|0 \x49\x44 #|0 \x49\x45 #|0 \x49\x46 #|0 \x49\x47 #|0 \x49\x48 #|0 \x49\x49 #|0 \x49\x4A #|0 \x49\x4B #|0 \x49\x4C #|0 \x49\x4D #|0 \x49\x4E #|0 \x49\x4F #|0 \x49\x50 #|0 \x49\x51 #|0 \x49\x52 #|0 \x49\x53 #|0 \x49\x54 #|0 \x49\x55 #|0 \x49\x56 #|0 \x49\x57 #|0 \x49\x58 #|0 \x49\x59 #|0 \x49\x5A #|0 \x49\x5B #|0 \x49\x5C #|0 \x49\x5D #|0 \x49\x5E #|0 \x49\x5F #|0 \x49\x60 #|0 \x49\x61 #|0 \x49\x62 #|0 \x49\x63 #|0 \x49\x64 #|0 \x49\x65 #|0 \x49\x66 #|0 \x49\x67 #|0 \x49\x68 #|0 \x49\x69 #|0 \x49\x6A #|0 \x49\x6B #|0 \x49\x6C #|0 \x49\x6D #|0 \x49\x6E #|0 \x49\x6F #|0 \x49\x70 #|0 \x49\x71 #|0 \x49\x72 #|0 \x49\x73 #|0 \x49\x74 #|0 \x49\x75 #|0 \x49\x76 #|0 \x49\x77 #|0 \x49\x78 #|0 \x49\x79 #|0 \x49\x7A #|0 \x49\x7B #|0 \x49\x7C #|0 \x49\x7D #|0 \x49\x7E #|0 \x4A\x21 #|0 \x4A\x22 #|0 \x4A\x23 #|0 \x4A\x24 #|0 \x4A\x25 #|0 \x4A\x26 #|0 \x4A\x27 #|0 \x4A\x28 #|0 \x4A\x29 #|0 \x4A\x2A #|0 \x4A\x2B #|0 \x4A\x2C #|0 \x4A\x2D #|0 \x4A\x2E #|0 \x4A\x2F #|0 \x4A\x30 #|0 \x4A\x31 #|0 \x4A\x32 #|0 \x4A\x33 #|0 \x4A\x34 #|0 \x4A\x35 #|0 \x4A\x36 #|0 \x4A\x37 #|0 \x4A\x38 #|0 \x4A\x39 #|0 \x4A\x3A #|0 \x4A\x3B #|0 \x4A\x3C #|0 \x4A\x3D #|0 \x4A\x3E #|0 \x4A\x3F #|0 \x4A\x40 #|0 \x4A\x41 #|0 \x4A\x42 #|0 \x4A\x43 #|0 \x4A\x44 #|0 \x4A\x45 #|0 \x4A\x46 #|0 \x4A\x47 #|0 \x4A\x48 #|0 \x4A\x49 #|0 \x4A\x4A #|0 \x4A\x4B #|0 \x4A\x4C #|0 \x4A\x4D #|0 \x4A\x4E #|0 \x4A\x4F #|0 \x4A\x50 #|0 \x4A\x51 #|0 \x4A\x52 #|0 \x4A\x53 #|0 \x4A\x54 #|0 \x4A\x55 #|0 \x4A\x56 #|0 \x4A\x57 #|0 \x4A\x58 #|0 \x4A\x59 #|0 \x4A\x5A #|0 \x4A\x5B #|0 \x4A\x5C #|0 \x4A\x5D #|0 \x4A\x5E #|0 \x4A\x5F #|0 \x4A\x60 #|0 \x4A\x61 #|0 \x4A\x62 #|0 \x4A\x63 #|0 \x4A\x64 #|0 \x4A\x65 #|0 \x4A\x66 #|0 \x4A\x67 #|0 \x4A\x68 #|0 \x4A\x69 #|0 \x4A\x6A #|0 \x4A\x6B #|0 \x4A\x6C #|0 \x4A\x6D #|0 \x4A\x6E #|0 \x4A\x6F #|0 \x4A\x70 #|0 \x4A\x71 #|0 \x4A\x72 #|0 \x4A\x73 #|0 \x4A\x74 #|0 \x4A\x75 #|0 \x4A\x76 #|0 \x4A\x77 #|0 \x4A\x78 #|0 \x4A\x79 #|0 \x4A\x7A #|0 \x4A\x7B #|0 \x4A\x7C #|0 \x4A\x7D #|0 \x4A\x7E #|0 \x4B\x21 #|0 \x4B\x22 #|0 \x4B\x23 #|0 \x4B\x24 #|0 \x4B\x25 #|0 \x4B\x26 #|0 \x4B\x27 #|0 \x4B\x28 #|0 \x4B\x29 #|0 \x4B\x2A #|0 \x4B\x2B #|0 \x4B\x2C #|0 \x4B\x2D #|0 \x4B\x2E #|0 \x4B\x2F #|0 \x4B\x30 #|0 \x4B\x31 #|0 \x4B\x32 #|0 \x4B\x33 #|0 \x4B\x34 #|0 \x4B\x35 #|0 \x4B\x36 #|0 \x4B\x37 #|0 \x4B\x38 #|0 \x4B\x39 #|0 \x4B\x3A #|0 \x4B\x3B #|0 \x4B\x3C #|0 \x4B\x3D #|0 \x4B\x3E #|0 \x4B\x3F #|0 \x4B\x40 #|0 \x4B\x41 #|0 \x4B\x42 #|0 \x4B\x43 #|0 \x4B\x44 #|0 \x4B\x45 #|0 \x4B\x46 #|0 \x4B\x47 #|0 \x4B\x48 #|0 \x4B\x49 #|0 \x4B\x4A #|0 \x4B\x4B #|0 \x4B\x4C #|0 \x4B\x4D #|0 \x4B\x4E #|0 \x4B\x4F #|0 \x4B\x50 #|0 \x4B\x51 #|0 \x4B\x52 #|0 \x4B\x53 #|0 \x4B\x54 #|0 \x4B\x55 #|0 \x4B\x56 #|0 \x4B\x57 #|0 \x4B\x58 #|0 \x4B\x59 #|0 \x4B\x5A #|0 \x4B\x5B #|0 \x4B\x5C #|0 \x4B\x5D #|0 \x4B\x5E #|0 \x4B\x5F #|0 \x4B\x60 #|0 \x4B\x61 #|0 \x4B\x62 #|0 \x4B\x63 #|0 \x4B\x64 #|0 \x4B\x65 #|0 \x4B\x66 #|0 \x4B\x67 #|0 \x4B\x68 #|0 \x4B\x69 #|0 \x4B\x6A #|0 \x4B\x6B #|0 \x4B\x6C #|0 \x4B\x6D #|0 \x4B\x6E #|0 \x4B\x6F #|0 \x4B\x70 #|0 \x4B\x71 #|0 \x4B\x72 #|0 \x4B\x73 #|0 \x4B\x74 #|0 \x4B\x75 #|0 \x4B\x76 #|0 \x4B\x77 #|0 \x4B\x78 #|0 \x4B\x79 #|0 \x4B\x7A #|0 \x4B\x7B #|0 \x4B\x7C #|0 \x4B\x7D #|0 \x4B\x7E #|0 \x4C\x21 #|0 \x4C\x22 #|0 \x4C\x23 #|0 \x4C\x24 #|0 \x4C\x25 #|0 \x4C\x26 #|0 \x4C\x27 #|0 \x4C\x28 #|0 \x4C\x29 #|0 \x4C\x2A #|0 \x4C\x2B #|0 \x4C\x2C #|0 \x4C\x2D #|0 \x4C\x2E #|0 \x4C\x2F #|0 \x4C\x30 #|0 \x4C\x31 #|0 \x4C\x32 #|0 \x4C\x33 #|0 \x4C\x34 #|0 \x4C\x35 #|0 \x4C\x36 #|0 \x4C\x37 #|0 \x4C\x38 #|0 \x4C\x39 #|0 \x4C\x3A #|0 \x4C\x3B #|0 \x4C\x3C #|0 \x4C\x3D #|0 \x4C\x3E #|0 \x4C\x3F #|0 \x4C\x40 #|0 \x4C\x41 #|0 \x4C\x42 #|0 \x4C\x43 #|0 \x4C\x44 #|0 \x4C\x45 #|0 \x4C\x46 #|0 \x4C\x47 #|0 \x4C\x48 #|0 \x4C\x49 #|0 \x4C\x4A #|0 \x4C\x4B #|0 \x4C\x4C #|0 \x4C\x4D #|0 \x4C\x4E #|0 \x4C\x4F #|0 \x4C\x50 #|0 \x4C\x51 #|0 \x4C\x52 #|0 \x4C\x53 #|0 \x4C\x54 #|0 \x4C\x55 #|0 \x4C\x56 #|0 \x4C\x57 #|0 \x4C\x58 #|0 \x4C\x59 #|0 \x4C\x5A #|0 \x4C\x5B #|0 \x4C\x5C #|0 \x4C\x5D #|0 \x4C\x5E #|0 \x4C\x5F #|0 \x4C\x60 #|0 \x4C\x61 #|0 \x4C\x62 #|0 \x4C\x63 #|0 \x4C\x64 #|0 \x4C\x65 #|0 \x4C\x66 #|0 \x4C\x67 #|0 \x4C\x68 #|0 \x4C\x69 #|0 \x4C\x6A #|0 \x4C\x6B #|0 \x4C\x6C #|0 \x4C\x6D #|0 \x4C\x6E #|0 \x4C\x6F #|0 \x4C\x70 #|0 \x4C\x71 #|0 \x4C\x72 #|0 \x4C\x73 #|0 \x4C\x74 #|0 \x4C\x75 #|0 \x4C\x76 #|0 \x4C\x77 #|0 \x4C\x78 #|0 \x4C\x79 #|0 \x4C\x7A #|0 \x4C\x7B #|0 \x4C\x7C #|0 \x4C\x7D #|0 \x4C\x7E #|0 \x4D\x21 #|0 \x4D\x22 #|0 \x4D\x23 #|0 \x4D\x24 #|0 \x4D\x25 #|0 \x4D\x26 #|0 \x4D\x27 #|0 \x4D\x28 #|0 \x4D\x29 #|0 \x4D\x2A #|0 \x4D\x2B #|0 \x4D\x2C #|0 \x4D\x2D #|0 \x4D\x2E #|0 \x4D\x2F #|0 \x4D\x30 #|0 \x4D\x31 #|0 \x4D\x32 #|0 \x4D\x33 #|0 \x4D\x34 #|0 \x4D\x35 #|0 \x4D\x36 #|0 \x4D\x37 #|0 \x4D\x38 #|0 \x4D\x39 #|0 \x4D\x3A #|0 \x4D\x3B #|0 \x4D\x3C #|0 \x4D\x3D #|0 \x4D\x3E #|0 \x4D\x3F #|0 \x4D\x40 #|0 \x4D\x41 #|0 \x4D\x42 #|0 \x4D\x43 #|0 \x4D\x44 #|0 \x4D\x45 #|0 \x4D\x46 #|0 \x4D\x47 #|0 \x4D\x48 #|0 \x4D\x49 #|0 \x4D\x4A #|0 \x4D\x4B #|0 \x4D\x4C #|0 \x4D\x4D #|0 \x4D\x4E #|0 \x4D\x4F #|0 \x4D\x50 #|0 \x4D\x51 #|0 \x4D\x52 #|0 \x4D\x53 #|0 \x4D\x54 #|0 \x4D\x55 #|0 \x4D\x56 #|0 \x4D\x57 #|0 \x4D\x58 #|0 \x4D\x59 #|0 \x4D\x5A #|0 \x4D\x5B #|0 \x4D\x5C #|0 \x4D\x5D #|0 \x4D\x5E #|0 \x4D\x5F #|0 \x4D\x60 #|0 \x4D\x61 #|0 \x4D\x62 #|0 \x4D\x63 #|0 \x4D\x64 #|0 \x4D\x65 #|0 \x4D\x66 #|0 \x4D\x67 #|0 \x4D\x68 #|0 \x4D\x69 #|0 \x4D\x6A #|0 \x4D\x6B #|0 \x4D\x6C #|0 \x4D\x6D #|0 \x4D\x6E #|0 \x4D\x6F #|0 \x4D\x70 #|0 \x4D\x71 #|0 \x4D\x72 #|0 \x4D\x73 #|0 \x4D\x74 #|0 \x4D\x75 #|0 \x4D\x76 #|0 \x4D\x77 #|0 \x4D\x78 #|0 \x4D\x79 #|0 \x4D\x7A #|0 \x4D\x7B #|0 \x4D\x7C #|0 \x4D\x7D #|0 \x4D\x7E #|0 \x4E\x21 #|0 \x4E\x22 #|0 \x4E\x23 #|0 \x4E\x24 #|0 \x4E\x25 #|0 \x4E\x26 #|0 \x4E\x27 #|0 \x4E\x28 #|0 \x4E\x29 #|0 \x4E\x2A #|0 \x4E\x2B #|0 \x4E\x2C #|0 \x4E\x2D #|0 \x4E\x2E #|0 \x4E\x2F #|0 \x4E\x30 #|0 \x4E\x31 #|0 \x4E\x32 #|0 \x4E\x33 #|0 \x4E\x34 #|0 \x4E\x35 #|0 \x4E\x36 #|0 \x4E\x37 #|0 \x4E\x38 #|0 \x4E\x39 #|0 \x4E\x3A #|0 \x4E\x3B #|0 \x4E\x3C #|0 \x4E\x3D #|0 \x4E\x3E #|0 \x4E\x3F #|0 \x4E\x40 #|0 \x4E\x41 #|0 \x4E\x42 #|0 \x4E\x43 #|0 \x4E\x44 #|0 \x4E\x45 #|0 \x4E\x46 #|0 \x4E\x47 #|0 \x4E\x48 #|0 \x4E\x49 #|0 \x4E\x4A #|0 \x4E\x4B #|0 \x4E\x4C #|0 \x4E\x4D #|0 \x4E\x4E #|0 \x4E\x4F #|0 \x4E\x50 #|0 \x4E\x51 #|0 \x4E\x52 #|0 \x4E\x53 #|0 \x4E\x54 #|0 \x4E\x55 #|0 \x4E\x56 #|0 \x4E\x57 #|0 \x4E\x58 #|0 \x4E\x59 #|0 \x4E\x5A #|0 \x4E\x5B #|0 \x4E\x5C #|0 \x4E\x5D #|0 \x4E\x5E #|0 \x4E\x5F #|0 \x4E\x60 #|0 \x4E\x61 #|0 \x4E\x62 #|0 \x4E\x63 #|0 \x4E\x64 #|0 \x4E\x65 #|0 \x4E\x66 #|0 \x4E\x67 #|0 \x4E\x68 #|0 \x4E\x69 #|0 \x4E\x6A #|0 \x4E\x6B #|0 \x4E\x6C #|0 \x4E\x6D #|0 \x4E\x6E #|0 \x4E\x6F #|0 \x4E\x70 #|0 \x4E\x71 #|0 \x4E\x72 #|0 \x4E\x73 #|0 \x4E\x74 #|0 \x4E\x75 #|0 \x4E\x76 #|0 \x4E\x77 #|0 \x4E\x78 #|0 \x4E\x79 #|0 \x4E\x7A #|0 \x4E\x7B #|0 \x4E\x7C #|0 \x4E\x7D #|0 \x4E\x7E #|0 \x4F\x21 #|0 \x4F\x22 #|0 \x4F\x23 #|0 \x4F\x24 #|0 \x4F\x25 #|0 \x4F\x26 #|0 \x4F\x27 #|0 \x4F\x28 #|0 \x4F\x29 #|0 \x4F\x2A #|0 \x4F\x2B #|0 \x4F\x2C #|0 \x4F\x2D #|0 \x4F\x2E #|0 \x4F\x2F #|0 \x4F\x30 #|0 \x4F\x31 #|0 \x4F\x32 #|0 \x4F\x33 #|0 \x4F\x34 #|0 \x4F\x35 #|0 \x4F\x36 #|0 \x4F\x37 #|0 \x4F\x38 #|0 \x4F\x39 #|0 \x4F\x3A #|0 \x4F\x3B #|0 \x4F\x3C #|0 \x4F\x3D #|0 \x4F\x3E #|0 \x4F\x3F #|0 \x4F\x40 #|0 \x4F\x41 #|0 \x4F\x42 #|0 \x4F\x43 #|0 \x4F\x44 #|0 \x4F\x45 #|0 \x4F\x46 #|0 \x4F\x47 #|0 \x4F\x48 #|0 \x4F\x49 #|0 \x4F\x4A #|0 \x4F\x4B #|0 \x4F\x4C #|0 \x4F\x4D #|0 \x4F\x4E #|0 \x4F\x4F #|0 \x4F\x50 #|0 \x4F\x51 #|0 \x4F\x52 #|0 \x4F\x53 #|0 \x4F\x54 #|0 \x4F\x55 #|0 \x4F\x56 #|0 \x4F\x57 #|0 \x4F\x58 #|0 \x4F\x59 #|0 \x4F\x5A #|0 \x4F\x5B #|0 \x4F\x5C #|0 \x4F\x5D #|0 \x4F\x5E #|0 \x4F\x5F #|0 \x4F\x60 #|0 \x4F\x61 #|0 \x4F\x62 #|0 \x4F\x63 #|0 \x4F\x64 #|0 \x4F\x65 #|0 \x4F\x66 #|0 \x4F\x67 #|0 \x4F\x68 #|0 \x4F\x69 #|0 \x4F\x6A #|0 \x4F\x6B #|0 \x4F\x6C #|0 \x4F\x6D #|0 \x4F\x6E #|0 \x4F\x6F #|0 \x4F\x70 #|0 \x4F\x71 #|0 \x4F\x72 #|0 \x4F\x73 #|0 \x4F\x74 #|0 \x4F\x75 #|0 \x4F\x76 #|0 \x4F\x77 #|0 \x4F\x78 #|0 \x4F\x79 #|0 \x4F\x7A #|0 \x4F\x7B #|0 \x4F\x7C #|0 \x4F\x7D #|0 \x4F\x7E #|0 \x50\x21 #|0 \x50\x22 #|0 \x50\x23 #|0 \x50\x24 #|0 \x50\x25 #|0 \x50\x26 #|0 \x50\x27 #|0 \x50\x28 #|0 \x50\x29 #|0 \x50\x2A #|0 \x50\x2B #|0 \x50\x2C #|0 \x50\x2D #|0 \x50\x2E #|0 \x50\x2F #|0 \x50\x30 #|0 \x50\x31 #|0 \x50\x32 #|0 \x50\x33 #|0 \x50\x34 #|0 \x50\x35 #|0 \x50\x36 #|0 \x50\x37 #|0 \x50\x38 #|0 \x50\x39 #|0 \x50\x3A #|0 \x50\x3B #|0 \x50\x3C #|0 \x50\x3D #|0 \x50\x3E #|0 \x50\x3F #|0 \x50\x40 #|0 \x50\x41 #|0 \x50\x42 #|0 \x50\x43 #|0 \x50\x44 #|0 \x50\x45 #|0 \x50\x46 #|0 \x50\x47 #|0 \x50\x48 #|0 \x50\x49 #|0 \x50\x4A #|0 \x50\x4B #|0 \x50\x4C #|0 \x50\x4D #|0 \x50\x4E #|0 \x50\x4F #|0 \x50\x50 #|0 \x50\x51 #|0 \x50\x52 #|0 \x50\x53 #|0 \x50\x54 #|0 \x50\x55 #|0 \x50\x56 #|0 \x50\x57 #|0 \x50\x58 #|0 \x50\x59 #|0 \x50\x5A #|0 \x50\x5B #|0 \x50\x5C #|0 \x50\x5D #|0 \x50\x5E #|0 \x50\x5F #|0 \x50\x60 #|0 \x50\x61 #|0 \x50\x62 #|0 \x50\x63 #|0 \x50\x64 #|0 \x50\x65 #|0 \x50\x66 #|0 \x50\x67 #|0 \x50\x68 #|0 \x50\x69 #|0 \x50\x6A #|0 \x50\x6B #|0 \x50\x6C #|0 \x50\x6D #|0 \x50\x6E #|0 \x50\x6F #|0 \x50\x70 #|0 \x50\x71 #|0 \x50\x72 #|0 \x50\x73 #|0 \x50\x74 #|0 \x50\x75 #|0 \x50\x76 #|0 \x50\x77 #|0 \x50\x78 #|0 \x50\x79 #|0 \x50\x7A #|0 \x50\x7B #|0 \x50\x7C #|0 \x50\x7D #|0 \x50\x7E #|0 \x51\x21 #|0 \x51\x22 #|0 \x51\x23 #|0 \x51\x24 #|0 \x51\x25 #|0 \x51\x26 #|0 \x51\x27 #|0 \x51\x28 #|0 \x51\x29 #|0 \x51\x2A #|0 \x51\x2B #|0 \x51\x2C #|0 \x51\x2D #|0 \x51\x2E #|0 \x51\x2F #|0 \x51\x30 #|0 \x51\x31 #|0 \x51\x32 #|0 \x51\x33 #|0 \x51\x34 #|0 \x51\x35 #|0 \x51\x36 #|0 \x51\x37 #|0 \x51\x38 #|0 \x51\x39 #|0 \x51\x3A #|0 \x51\x3B #|0 \x51\x3C #|0 \x51\x3D #|0 \x51\x3E #|0 \x51\x3F #|0 \x51\x40 #|0 \x51\x41 #|0 \x51\x42 #|0 \x51\x43 #|0 \x51\x44 #|0 \x51\x45 #|0 \x51\x46 #|0 \x51\x47 #|0 \x51\x48 #|0 \x51\x49 #|0 \x51\x4A #|0 \x51\x4B #|0 \x51\x4C #|0 \x51\x4D #|0 \x51\x4E #|0 \x51\x4F #|0 \x51\x50 #|0 \x51\x51 #|0 \x51\x52 #|0 \x51\x53 #|0 \x51\x54 #|0 \x51\x55 #|0 \x51\x56 #|0 \x51\x57 #|0 \x51\x58 #|0 \x51\x59 #|0 \x51\x5A #|0 \x51\x5B #|0 \x51\x5C #|0 \x51\x5D #|0 \x51\x5E #|0 \x51\x5F #|0 \x51\x60 #|0 \x51\x61 #|0 \x51\x62 #|0 \x51\x63 #|0 \x51\x64 #|0 \x51\x65 #|0 \x51\x66 #|0 \x51\x67 #|0 \x51\x68 #|0 \x51\x69 #|0 \x51\x6A #|0 \x51\x6B #|0 \x51\x6C #|0 \x51\x6D #|0 \x51\x6E #|0 \x51\x6F #|0 \x51\x70 #|0 \x51\x71 #|0 \x51\x72 #|0 \x51\x73 #|0 \x51\x74 #|0 \x51\x75 #|0 \x51\x76 #|0 \x51\x77 #|0 \x51\x78 #|0 \x51\x79 #|0 \x51\x7A #|0 \x51\x7B #|0 \x51\x7C #|0 \x51\x7D #|0 \x51\x7E #|0 \x52\x21 #|0 \x52\x22 #|0 \x52\x23 #|0 \x52\x24 #|0 \x52\x25 #|0 \x52\x26 #|0 \x52\x27 #|0 \x52\x28 #|0 \x52\x29 #|0 \x52\x2A #|0 \x52\x2B #|0 \x52\x2C #|0 \x52\x2D #|0 \x52\x2E #|0 \x52\x2F #|0 \x52\x30 #|0 \x52\x31 #|0 \x52\x32 #|0 \x52\x33 #|0 \x52\x34 #|0 \x52\x35 #|0 \x52\x36 #|0 \x52\x37 #|0 \x52\x38 #|0 \x52\x39 #|0 \x52\x3A #|0 \x52\x3B #|0 \x52\x3C #|0 \x52\x3D #|0 \x52\x3E #|0 \x52\x3F #|0 \x52\x40 #|0 \x52\x41 #|0 \x52\x42 #|0 \x52\x43 #|0 \x52\x44 #|0 \x52\x45 #|0 \x52\x46 #|0 \x52\x47 #|0 \x52\x48 #|0 \x52\x49 #|0 \x52\x4A #|0 \x52\x4B #|0 \x52\x4C #|0 \x52\x4D #|0 \x52\x4E #|0 \x52\x4F #|0 \x52\x50 #|0 \x52\x51 #|0 \x52\x52 #|0 \x52\x53 #|0 \x52\x54 #|0 \x52\x55 #|0 \x52\x56 #|0 \x52\x57 #|0 \x52\x58 #|0 \x52\x59 #|0 \x52\x5A #|0 \x52\x5B #|0 \x52\x5C #|0 \x52\x5D #|0 \x52\x5E #|0 \x52\x5F #|0 \x52\x60 #|0 \x52\x61 #|0 \x52\x62 #|0 \x52\x63 #|0 \x52\x64 #|0 \x52\x65 #|0 \x52\x66 #|0 \x52\x67 #|0 \x52\x68 #|0 \x52\x69 #|0 \x52\x6A #|0 \x52\x6B #|0 \x52\x6C #|0 \x52\x6D #|0 \x52\x6E #|0 \x52\x6F #|0 \x52\x70 #|0 \x52\x71 #|0 \x52\x72 #|0 \x52\x73 #|0 \x52\x74 #|0 \x52\x75 #|0 \x52\x76 #|0 \x52\x77 #|0 \x52\x78 #|0 \x52\x79 #|0 \x52\x7A #|0 \x52\x7B #|0 \x52\x7C #|0 \x52\x7D #|0 \x52\x7E #|0 \x53\x21 #|0 \x53\x22 #|0 \x53\x23 #|0 \x53\x24 #|0 \x53\x25 #|0 \x53\x26 #|0 \x53\x27 #|0 \x53\x28 #|0 \x53\x29 #|0 \x53\x2A #|0 \x53\x2B #|0 \x53\x2C #|0 \x53\x2D #|0 \x53\x2E #|0 \x53\x2F #|0 \x53\x30 #|0 \x53\x31 #|0 \x53\x32 #|0 \x53\x33 #|0 \x53\x34 #|0 \x53\x35 #|0 \x53\x36 #|0 \x53\x37 #|0 \x53\x38 #|0 \x53\x39 #|0 \x53\x3A #|0 \x53\x3B #|0 \x53\x3C #|0 \x53\x3D #|0 \x53\x3E #|0 \x53\x3F #|0 \x53\x40 #|0 \x53\x41 #|0 \x53\x42 #|0 \x53\x43 #|0 \x53\x44 #|0 \x53\x45 #|0 \x53\x46 #|0 \x53\x47 #|0 \x53\x48 #|0 \x53\x49 #|0 \x53\x4A #|0 \x53\x4B #|0 \x53\x4C #|0 \x53\x4D #|0 \x53\x4E #|0 \x53\x4F #|0 \x53\x50 #|0 \x53\x51 #|0 \x53\x52 #|0 \x53\x53 #|0 \x53\x54 #|0 \x53\x55 #|0 \x53\x56 #|0 \x53\x57 #|0 \x53\x58 #|0 \x53\x59 #|0 \x53\x5A #|0 \x53\x5B #|0 \x53\x5C #|0 \x53\x5D #|0 \x53\x5E #|0 \x53\x5F #|0 \x53\x60 #|0 \x53\x61 #|0 \x53\x62 #|0 \x53\x63 #|0 \x53\x64 #|0 \x53\x65 #|0 \x53\x66 #|0 \x53\x67 #|0 \x53\x68 #|0 \x53\x69 #|0 \x53\x6A #|0 \x53\x6B #|0 \x53\x6C #|0 \x53\x6D #|0 \x53\x6E #|0 \x53\x6F #|0 \x53\x70 #|0 \x53\x71 #|0 \x53\x72 #|0 \x53\x73 #|0 \x53\x74 #|0 \x53\x75 #|0 \x53\x76 #|0 \x53\x77 #|0 \x53\x78 #|0 \x53\x79 #|0 \x53\x7A #|0 \x53\x7B #|0 \x53\x7C #|0 \x53\x7D #|0 \x53\x7E #|0 \x54\x21 #|0 \x54\x22 #|0 \x54\x23 #|0 \x54\x24 #|0 \x54\x25 #|0 \x54\x26 #|0 \x54\x27 #|0 \x54\x28 #|0 \x54\x29 #|0 \x54\x2A #|0 \x54\x2B #|0 \x54\x2C #|0 \x54\x2D #|0 \x54\x2E #|0 \x54\x2F #|0 \x54\x30 #|0 \x54\x31 #|0 \x54\x32 #|0 \x54\x33 #|0 \x54\x34 #|0 \x54\x35 #|0 \x54\x36 #|0 \x54\x37 #|0 \x54\x38 #|0 \x54\x39 #|0 \x54\x3A #|0 \x54\x3B #|0 \x54\x3C #|0 \x54\x3D #|0 \x54\x3E #|0 \x54\x3F #|0 \x54\x40 #|0 \x54\x41 #|0 \x54\x42 #|0 \x54\x43 #|0 \x54\x44 #|0 \x54\x45 #|0 \x54\x46 #|0 \x54\x47 #|0 \x54\x48 #|0 \x54\x49 #|0 \x54\x4A #|0 \x54\x4B #|0 \x54\x4C #|0 \x54\x4D #|0 \x54\x4E #|0 \x54\x4F #|0 \x54\x50 #|0 \x54\x51 #|0 \x54\x52 #|0 \x54\x53 #|0 \x54\x54 #|0 \x54\x55 #|0 \x54\x56 #|0 \x54\x57 #|0 \x54\x58 #|0 \x54\x59 #|0 \x54\x5A #|0 \x54\x5B #|0 \x54\x5C #|0 \x54\x5D #|0 \x54\x5E #|0 \x54\x5F #|0 \x54\x60 #|0 \x54\x61 #|0 \x54\x62 #|0 \x54\x63 #|0 \x54\x64 #|0 \x54\x65 #|0 \x54\x66 #|0 \x54\x67 #|0 \x54\x68 #|0 \x54\x69 #|0 \x54\x6A #|0 \x54\x6B #|0 \x54\x6C #|0 \x54\x6D #|0 \x54\x6E #|0 \x54\x6F #|0 \x54\x70 #|0 \x54\x71 #|0 \x54\x72 #|0 \x54\x73 #|0 \x54\x74 #|0 \x54\x75 #|0 \x54\x76 #|0 \x54\x77 #|0 \x54\x78 #|0 \x54\x79 #|0 \x54\x7A #|0 \x54\x7B #|0 \x54\x7C #|0 \x54\x7D #|0 \x54\x7E #|0 \x55\x21 #|0 \x55\x22 #|0 \x55\x23 #|0 \x55\x24 #|0 \x55\x25 #|0 \x55\x26 #|0 \x55\x27 #|0 \x55\x28 #|0 \x55\x29 #|0 \x55\x2A #|0 \x55\x2B #|0 \x55\x2C #|0 \x55\x2D #|0 \x55\x2E #|0 \x55\x2F #|0 \x55\x30 #|0 \x55\x31 #|0 \x55\x32 #|0 \x55\x33 #|0 \x55\x34 #|0 \x55\x35 #|0 \x55\x36 #|0 \x55\x37 #|0 \x55\x38 #|0 \x55\x39 #|0 \x55\x3A #|0 \x55\x3B #|0 \x55\x3C #|0 \x55\x3D #|0 \x55\x3E #|0 \x55\x3F #|0 \x55\x40 #|0 \x55\x41 #|0 \x55\x42 #|0 \x55\x43 #|0 \x55\x44 #|0 \x55\x45 #|0 \x55\x46 #|0 \x55\x47 #|0 \x55\x48 #|0 \x55\x49 #|0 \x55\x4A #|0 \x55\x4B #|0 \x55\x4C #|0 \x55\x4D #|0 \x55\x4E #|0 \x55\x4F #|0 \x55\x50 #|0 \x55\x51 #|0 \x55\x52 #|0 \x55\x53 #|0 \x55\x54 #|0 \x55\x55 #|0 \x55\x56 #|0 \x55\x57 #|0 \x55\x58 #|0 \x55\x59 #|0 \x55\x5A #|0 \x55\x5B #|0 \x55\x5C #|0 \x55\x5D #|0 \x55\x5E #|0 \x55\x5F #|0 \x55\x60 #|0 \x55\x61 #|0 \x55\x62 #|0 \x55\x63 #|0 \x55\x64 #|0 \x55\x65 #|0 \x55\x66 #|0 \x55\x67 #|0 \x55\x68 #|0 \x55\x69 #|0 \x55\x6A #|0 \x55\x6B #|0 \x55\x6C #|0 \x55\x6D #|0 \x55\x6E #|0 \x55\x6F #|0 \x55\x70 #|0 \x55\x71 #|0 \x55\x72 #|0 \x55\x73 #|0 \x55\x74 #|0 \x55\x75 #|0 \x55\x76 #|0 \x55\x77 #|0 \x55\x78 #|0 \x55\x79 #|0 \x55\x7A #|0 \x55\x7B #|0 \x55\x7C #|0 \x55\x7D #|0 \x55\x7E #|0 \x56\x21 #|0 \x56\x22 #|0 \x56\x23 #|0 \x56\x24 #|0 \x56\x25 #|0 \x56\x26 #|0 \x56\x27 #|0 \x56\x28 #|0 \x56\x29 #|0 \x56\x2A #|0 \x56\x2B #|0 \x56\x2C #|0 \x56\x2D #|0 \x56\x2E #|0 \x56\x2F #|0 \x56\x30 #|0 \x56\x31 #|0 \x56\x32 #|0 \x56\x33 #|0 \x56\x34 #|0 \x56\x35 #|0 \x56\x36 #|0 \x56\x37 #|0 \x56\x38 #|0 \x56\x39 #|0 \x56\x3A #|0 \x56\x3B #|0 \x56\x3C #|0 \x56\x3D #|0 \x56\x3E #|0 \x56\x3F #|0 \x56\x40 #|0 \x56\x41 #|0 \x56\x42 #|0 \x56\x43 #|0 \x56\x44 #|0 \x56\x45 #|0 \x56\x46 #|0 \x56\x47 #|0 \x56\x48 #|0 \x56\x49 #|0 \x56\x4A #|0 \x56\x4B #|0 \x56\x4C #|0 \x56\x4D #|0 \x56\x4E #|0 \x56\x4F #|0 \x56\x50 #|0 \x56\x51 #|0 \x56\x52 #|0 \x56\x53 #|0 \x56\x54 #|0 \x56\x55 #|0 \x56\x56 #|0 \x56\x57 #|0 \x56\x58 #|0 \x56\x59 #|0 \x56\x5A #|0 \x56\x5B #|0 \x56\x5C #|0 \x56\x5D #|0 \x56\x5E #|0 \x56\x5F #|0 \x56\x60 #|0 \x56\x61 #|0 \x56\x62 #|0 \x56\x63 #|0 \x56\x64 #|0 \x56\x65 #|0 \x56\x66 #|0 \x56\x67 #|0 \x56\x68 #|0 \x56\x69 #|0 \x56\x6A #|0 \x56\x6B #|0 \x56\x6C #|0 \x56\x6D #|0 \x56\x6E #|0 \x56\x6F #|0 \x56\x70 #|0 \x56\x71 #|0 \x56\x72 #|0 \x56\x73 #|0 \x56\x74 #|0 \x56\x75 #|0 \x56\x76 #|0 \x56\x77 #|0 \x56\x78 #|0 \x56\x79 #|0 \x56\x7A #|0 \x56\x7B #|0 \x56\x7C #|0 \x56\x7D #|0 \x56\x7E #|0 \x57\x21 #|0 \x57\x22 #|0 \x57\x23 #|0 \x57\x24 #|0 \x57\x25 #|0 \x57\x26 #|0 \x57\x27 #|0 \x57\x28 #|0 \x57\x29 #|0 \x57\x2A #|0 \x57\x2B #|0 \x57\x2C #|0 \x57\x2D #|0 \x57\x2E #|0 \x57\x2F #|0 \x57\x30 #|0 \x57\x31 #|0 \x57\x32 #|0 \x57\x33 #|0 \x57\x34 #|0 \x57\x35 #|0 \x57\x36 #|0 \x57\x37 #|0 \x57\x38 #|0 \x57\x39 #|0 \x57\x3A #|0 \x57\x3B #|0 \x57\x3C #|0 \x57\x3D #|0 \x57\x3E #|0 \x57\x3F #|0 \x57\x40 #|0 \x57\x41 #|0 \x57\x42 #|0 \x57\x43 #|0 \x57\x44 #|0 \x57\x45 #|0 \x57\x46 #|0 \x57\x47 #|0 \x57\x48 #|0 \x57\x49 #|0 \x57\x4A #|0 \x57\x4B #|0 \x57\x4C #|0 \x57\x4D #|0 \x57\x4E #|0 \x57\x4F #|0 \x57\x50 #|0 \x57\x51 #|0 \x57\x52 #|0 \x57\x53 #|0 \x57\x54 #|0 \x57\x55 #|0 \x57\x56 #|0 \x57\x57 #|0 \x57\x58 #|0 \x57\x59 #|0 \x57\x5A #|0 \x57\x5B #|0 \x57\x5C #|0 \x57\x5D #|0 \x57\x5E #|0 \x57\x5F #|0 \x57\x60 #|0 \x57\x61 #|0 \x57\x62 #|0 \x57\x63 #|0 \x57\x64 #|0 \x57\x65 #|0 \x57\x66 #|0 \x57\x67 #|0 \x57\x68 #|0 \x57\x69 #|0 \x57\x6A #|0 \x57\x6B #|0 \x57\x6C #|0 \x57\x6D #|0 \x57\x6E #|0 \x57\x6F #|0 \x57\x70 #|0 \x57\x71 #|0 \x57\x72 #|0 \x57\x73 #|0 \x57\x74 #|0 \x57\x75 #|0 \x57\x76 #|0 \x57\x77 #|0 \x57\x78 #|0 \x57\x79 #|0 \x58\x21 #|0 \x58\x22 #|0 \x58\x23 #|0 \x58\x24 #|0 \x58\x25 #|0 \x58\x26 #|0 \x58\x27 #|0 \x58\x28 #|0 \x58\x29 #|0 \x58\x2A #|0 \x58\x2B #|0 \x58\x2C #|0 \x58\x2D #|0 \x58\x2E #|0 \x58\x2F #|0 \x58\x30 #|0 \x58\x31 #|0 \x58\x32 #|0 \x58\x33 #|0 \x58\x34 #|0 \x58\x35 #|0 \x58\x36 #|0 \x58\x37 #|0 \x58\x38 #|0 \x58\x39 #|0 \x58\x3A #|0 \x58\x3B #|0 \x58\x3C #|0 \x58\x3D #|0 \x58\x3E #|0 \x58\x3F #|0 \x58\x40 #|0 \x58\x41 #|0 \x58\x42 #|0 \x58\x43 #|0 \x58\x44 #|0 \x58\x45 #|0 \x58\x46 #|0 \x58\x47 #|0 \x58\x48 #|0 \x58\x49 #|0 \x58\x4A #|0 \x58\x4B #|0 \x58\x4C #|0 \x58\x4D #|0 \x58\x4E #|0 \x58\x4F #|0 \x58\x50 #|0 \x58\x51 #|0 \x58\x52 #|0 \x58\x53 #|0 \x58\x54 #|0 \x58\x55 #|0 \x58\x56 #|0 \x58\x57 #|0 \x58\x58 #|0 \x58\x59 #|0 \x58\x5A #|0 \x58\x5B #|0 \x58\x5C #|0 \x58\x5D #|0 \x58\x5E #|0 \x58\x5F #|0 \x58\x60 #|0 \x58\x61 #|0 \x58\x62 #|0 \x58\x63 #|0 \x58\x64 #|0 \x58\x65 #|0 \x58\x66 #|0 \x58\x67 #|0 \x58\x68 #|0 \x58\x69 #|0 \x58\x6A #|0 \x58\x6B #|0 \x58\x6C #|0 \x58\x6D #|0 \x58\x6E #|0 \x58\x6F #|0 \x58\x70 #|0 \x58\x71 #|0 \x58\x72 #|0 \x58\x73 #|0 \x58\x74 #|0 \x58\x75 #|0 \x58\x76 #|0 \x58\x77 #|0 \x58\x78 #|0 \x58\x79 #|0 \x58\x7A #|0 \x58\x7B #|0 \x58\x7C #|0 \x58\x7D #|0 \x58\x7E #|0 \x59\x21 #|0 \x59\x22 #|0 \x59\x23 #|0 \x59\x24 #|0 \x59\x25 #|0 \x59\x26 #|0 \x59\x27 #|0 \x59\x28 #|0 \x59\x29 #|0 \x59\x2A #|0 \x59\x2B #|0 \x59\x2C #|0 \x59\x2D #|0 \x59\x2E #|0 \x59\x2F #|0 \x59\x30 #|0 \x59\x31 #|0 \x59\x32 #|0 \x59\x33 #|0 \x59\x34 #|0 \x59\x35 #|0 \x59\x36 #|0 \x59\x37 #|0 \x59\x38 #|0 \x59\x39 #|0 \x59\x3A #|0 \x59\x3B #|0 \x59\x3C #|0 \x59\x3D #|0 \x59\x3E #|0 \x59\x3F #|0 \x59\x40 #|0 \x59\x41 #|0 \x59\x42 #|0 \x59\x43 #|0 \x59\x44 #|0 \x59\x45 #|0 \x59\x46 #|0 \x59\x47 #|0 \x59\x48 #|0 \x59\x49 #|0 \x59\x4A #|0 \x59\x4B #|0 \x59\x4C #|0 \x59\x4D #|0 \x59\x4E #|0 \x59\x4F #|0 \x59\x50 #|0 \x59\x51 #|0 \x59\x52 #|0 \x59\x53 #|0 \x59\x54 #|0 \x59\x55 #|0 \x59\x56 #|0 \x59\x57 #|0 \x59\x58 #|0 \x59\x59 #|0 \x59\x5A #|0 \x59\x5B #|0 \x59\x5C #|0 \x59\x5D #|0 \x59\x5E #|0 \x59\x5F #|0 \x59\x60 #|0 \x59\x61 #|0 \x59\x62 #|0 \x59\x63 #|0 \x59\x64 #|0 \x59\x65 #|0 \x59\x66 #|0 \x59\x67 #|0 \x59\x68 #|0 \x59\x69 #|0 \x59\x6A #|0 \x59\x6B #|0 \x59\x6C #|0 \x59\x6D #|0 \x59\x6E #|0 \x59\x6F #|0 \x59\x70 #|0 \x59\x71 #|0 \x59\x72 #|0 \x59\x73 #|0 \x59\x74 #|0 \x59\x75 #|0 \x59\x76 #|0 \x59\x77 #|0 \x59\x78 #|0 \x59\x79 #|0 \x59\x7A #|0 \x59\x7B #|0 \x59\x7C #|0 \x59\x7D #|0 \x59\x7E #|0 \x5A\x21 #|0 \x5A\x22 #|0 \x5A\x23 #|0 \x5A\x24 #|0 \x5A\x25 #|0 \x5A\x26 #|0 \x5A\x27 #|0 \x5A\x28 #|0 \x5A\x29 #|0 \x5A\x2A #|0 \x5A\x2B #|0 \x5A\x2C #|0 \x5A\x2D #|0 \x5A\x2E #|0 \x5A\x2F #|0 \x5A\x30 #|0 \x5A\x31 #|0 \x5A\x32 #|0 \x5A\x33 #|0 \x5A\x34 #|0 \x5A\x35 #|0 \x5A\x36 #|0 \x5A\x37 #|0 \x5A\x38 #|0 \x5A\x39 #|0 \x5A\x3A #|0 \x5A\x3B #|0 \x5A\x3C #|0 \x5A\x3D #|0 \x5A\x3E #|0 \x5A\x3F #|0 \x5A\x40 #|0 \x5A\x41 #|0 \x5A\x42 #|0 \x5A\x43 #|0 \x5A\x44 #|0 \x5A\x45 #|0 \x5A\x46 #|0 \x5A\x47 #|0 \x5A\x48 #|0 \x5A\x49 #|0 \x5A\x4A #|0 \x5A\x4B #|0 \x5A\x4C #|0 \x5A\x4D #|0 \x5A\x4E #|0 \x5A\x4F #|0 \x5A\x50 #|0 \x5A\x51 #|0 \x5A\x52 #|0 \x5A\x53 #|0 \x5A\x54 #|0 \x5A\x55 #|0 \x5A\x56 #|0 \x5A\x57 #|0 \x5A\x58 #|0 \x5A\x59 #|0 \x5A\x5A #|0 \x5A\x5B #|0 \x5A\x5C #|0 \x5A\x5D #|0 \x5A\x5E #|0 \x5A\x5F #|0 \x5A\x60 #|0 \x5A\x61 #|0 \x5A\x62 #|0 \x5A\x63 #|0 \x5A\x64 #|0 \x5A\x65 #|0 \x5A\x66 #|0 \x5A\x67 #|0 \x5A\x68 #|0 \x5A\x69 #|0 \x5A\x6A #|0 \x5A\x6B #|0 \x5A\x6C #|0 \x5A\x6D #|0 \x5A\x6E #|0 \x5A\x6F #|0 \x5A\x70 #|0 \x5A\x71 #|0 \x5A\x72 #|0 \x5A\x73 #|0 \x5A\x74 #|0 \x5A\x75 #|0 \x5A\x76 #|0 \x5A\x77 #|0 \x5A\x78 #|0 \x5A\x79 #|0 \x5A\x7A #|0 \x5A\x7B #|0 \x5A\x7C #|0 \x5A\x7D #|0 \x5A\x7E #|0 \x5B\x21 #|0 \x5B\x22 #|0 \x5B\x23 #|0 \x5B\x24 #|0 \x5B\x25 #|0 \x5B\x26 #|0 \x5B\x27 #|0 \x5B\x28 #|0 \x5B\x29 #|0 \x5B\x2A #|0 \x5B\x2B #|0 \x5B\x2C #|0 \x5B\x2D #|0 \x5B\x2E #|0 \x5B\x2F #|0 \x5B\x30 #|0 \x5B\x31 #|0 \x5B\x32 #|0 \x5B\x33 #|0 \x5B\x34 #|0 \x5B\x35 #|0 \x5B\x36 #|0 \x5B\x37 #|0 \x5B\x38 #|0 \x5B\x39 #|0 \x5B\x3A #|0 \x5B\x3B #|0 \x5B\x3C #|0 \x5B\x3D #|0 \x5B\x3E #|0 \x5B\x3F #|0 \x5B\x40 #|0 \x5B\x41 #|0 \x5B\x42 #|0 \x5B\x43 #|0 \x5B\x44 #|0 \x5B\x45 #|0 \x5B\x46 #|0 \x5B\x47 #|0 \x5B\x48 #|0 \x5B\x49 #|0 \x5B\x4A #|0 \x5B\x4B #|0 \x5B\x4C #|0 \x5B\x4D #|0 \x5B\x4E #|0 \x5B\x4F #|0 \x5B\x50 #|0 \x5B\x51 #|0 \x5B\x52 #|0 \x5B\x53 #|0 \x5B\x54 #|0 \x5B\x55 #|0 \x5B\x56 #|0 \x5B\x57 #|0 \x5B\x58 #|0 \x5B\x59 #|0 \x5B\x5A #|0 \x5B\x5B #|0 \x5B\x5C #|0 \x5B\x5D #|0 \x5B\x5E #|0 \x5B\x5F #|0 \x5B\x60 #|0 \x5B\x61 #|0 \x5B\x62 #|0 \x5B\x63 #|0 \x5B\x64 #|0 \x5B\x65 #|0 \x5B\x66 #|0 \x5B\x67 #|0 \x5B\x68 #|0 \x5B\x69 #|0 \x5B\x6A #|0 \x5B\x6B #|0 \x5B\x6C #|0 \x5B\x6D #|0 \x5B\x6E #|0 \x5B\x6F #|0 \x5B\x70 #|0 \x5B\x71 #|0 \x5B\x72 #|0 \x5B\x73 #|0 \x5B\x74 #|0 \x5B\x75 #|0 \x5B\x76 #|0 \x5B\x77 #|0 \x5B\x78 #|0 \x5B\x79 #|0 \x5B\x7A #|0 \x5B\x7B #|0 \x5B\x7C #|0 \x5B\x7D #|0 \x5B\x7E #|0 \x5C\x21 #|0 \x5C\x22 #|0 \x5C\x23 #|0 \x5C\x24 #|0 \x5C\x25 #|0 \x5C\x26 #|0 \x5C\x27 #|0 \x5C\x28 #|0 \x5C\x29 #|0 \x5C\x2A #|0 \x5C\x2B #|0 \x5C\x2C #|0 \x5C\x2D #|0 \x5C\x2E #|0 \x5C\x2F #|0 \x5C\x30 #|0 \x5C\x31 #|0 \x5C\x32 #|0 \x5C\x33 #|0 \x5C\x34 #|0 \x5C\x35 #|0 \x5C\x36 #|0 \x5C\x37 #|0 \x5C\x38 #|0 \x5C\x39 #|0 \x5C\x3A #|0 \x5C\x3B #|0 \x5C\x3C #|0 \x5C\x3D #|0 \x5C\x3E #|0 \x5C\x3F #|0 \x5C\x40 #|0 \x5C\x41 #|0 \x5C\x42 #|0 \x5C\x43 #|0 \x5C\x44 #|0 \x5C\x45 #|0 \x5C\x46 #|0 \x5C\x47 #|0 \x5C\x48 #|0 \x5C\x49 #|0 \x5C\x4A #|0 \x5C\x4B #|0 \x5C\x4C #|0 \x5C\x4D #|0 \x5C\x4E #|0 \x5C\x4F #|0 \x5C\x50 #|0 \x5C\x51 #|0 \x5C\x52 #|0 \x5C\x53 #|0 \x5C\x54 #|0 \x5C\x55 #|0 \x5C\x56 #|0 \x5C\x57 #|0 \x5C\x58 #|0 \x5C\x59 #|0 \x5C\x5A #|0 \x5C\x5B #|0 \x5C\x5C #|0 \x5C\x5D #|0 \x5C\x5E #|0 \x5C\x5F #|0 \x5C\x60 #|0 \x5C\x61 #|0 \x5C\x62 #|0 \x5C\x63 #|0 \x5C\x64 #|0 \x5C\x65 #|0 \x5C\x66 #|0 \x5C\x67 #|0 \x5C\x68 #|0 \x5C\x69 #|0 \x5C\x6A #|0 \x5C\x6B #|0 \x5C\x6C #|0 \x5C\x6D #|0 \x5C\x6E #|0 \x5C\x6F #|0 \x5C\x70 #|0 \x5C\x71 #|0 \x5C\x72 #|0 \x5C\x73 #|0 \x5C\x74 #|0 \x5C\x75 #|0 \x5C\x76 #|0 \x5C\x77 #|0 \x5C\x78 #|0 \x5C\x79 #|0 \x5C\x7A #|0 \x5C\x7B #|0 \x5C\x7C #|0 \x5C\x7D #|0 \x5C\x7E #|0 \x5D\x21 #|0 \x5D\x22 #|0 \x5D\x23 #|0 \x5D\x24 #|0 \x5D\x25 #|0 \x5D\x26 #|0 \x5D\x27 #|0 \x5D\x28 #|0 \x5D\x29 #|0 \x5D\x2A #|0 \x5D\x2B #|0 \x5D\x2C #|0 \x5D\x2D #|0 \x5D\x2E #|0 \x5D\x2F #|0 \x5D\x30 #|0 \x5D\x31 #|0 \x5D\x32 #|0 \x5D\x33 #|0 \x5D\x34 #|0 \x5D\x35 #|0 \x5D\x36 #|0 \x5D\x37 #|0 \x5D\x38 #|0 \x5D\x39 #|0 \x5D\x3A #|0 \x5D\x3B #|0 \x5D\x3C #|0 \x5D\x3D #|0 \x5D\x3E #|0 \x5D\x3F #|0 \x5D\x40 #|0 \x5D\x41 #|0 \x5D\x42 #|0 \x5D\x43 #|0 \x5D\x44 #|0 \x5D\x45 #|0 \x5D\x46 #|0 \x5D\x47 #|0 \x5D\x48 #|0 \x5D\x49 #|0 \x5D\x4A #|0 \x5D\x4B #|0 \x5D\x4C #|0 \x5D\x4D #|0 \x5D\x4E #|0 \x5D\x4F #|0 \x5D\x50 #|0 \x5D\x51 #|0 \x5D\x52 #|0 \x5D\x53 #|0 \x5D\x54 #|0 \x5D\x55 #|0 \x5D\x56 #|0 \x5D\x57 #|0 \x5D\x58 #|0 \x5D\x59 #|0 \x5D\x5A #|0 \x5D\x5B #|0 \x5D\x5C #|0 \x5D\x5D #|0 \x5D\x5E #|0 \x5D\x5F #|0 \x5D\x60 #|0 \x5D\x61 #|0 \x5D\x62 #|0 \x5D\x63 #|0 \x5D\x64 #|0 \x5D\x65 #|0 \x5D\x66 #|0 \x5D\x67 #|0 \x5D\x68 #|0 \x5D\x69 #|0 \x5D\x6A #|0 \x5D\x6B #|0 \x5D\x6C #|0 \x5D\x6D #|0 \x5D\x6E #|0 \x5D\x6F #|0 \x5D\x70 #|0 \x5D\x71 #|0 \x5D\x72 #|0 \x5D\x73 #|0 \x5D\x74 #|0 \x5D\x75 #|0 \x5D\x76 #|0 \x5D\x77 #|0 \x5D\x78 #|0 \x5D\x79 #|0 \x5D\x7A #|0 \x5D\x7B #|0 \x5D\x7C #|0 \x5D\x7D #|0 \x5D\x7E #|0 \x5E\x21 #|0 \x5E\x22 #|0 \x5E\x23 #|0 \x5E\x24 #|0 \x5E\x25 #|0 \x5E\x26 #|0 \x5E\x27 #|0 \x5E\x28 #|0 \x5E\x29 #|0 \x5E\x2A #|0 \x5E\x2B #|0 \x5E\x2C #|0 \x5E\x2D #|0 \x5E\x2E #|0 \x5E\x2F #|0 \x5E\x30 #|0 \x5E\x31 #|0 \x5E\x32 #|0 \x5E\x33 #|0 \x5E\x34 #|0 \x5E\x35 #|0 \x5E\x36 #|0 \x5E\x37 #|0 \x5E\x38 #|0 \x5E\x39 #|0 \x5E\x3A #|0 \x5E\x3B #|0 \x5E\x3C #|0 \x5E\x3D #|0 \x5E\x3E #|0 \x5E\x3F #|0 \x5E\x40 #|0 \x5E\x41 #|0 \x5E\x42 #|0 \x5E\x43 #|0 \x5E\x44 #|0 \x5E\x45 #|0 \x5E\x46 #|0 \x5E\x47 #|0 \x5E\x48 #|0 \x5E\x49 #|0 \x5E\x4A #|0 \x5E\x4B #|0 \x5E\x4C #|0 \x5E\x4D #|0 \x5E\x4E #|0 \x5E\x4F #|0 \x5E\x50 #|0 \x5E\x51 #|0 \x5E\x52 #|0 \x5E\x53 #|0 \x5E\x54 #|0 \x5E\x55 #|0 \x5E\x56 #|0 \x5E\x57 #|0 \x5E\x58 #|0 \x5E\x59 #|0 \x5E\x5A #|0 \x5E\x5B #|0 \x5E\x5C #|0 \x5E\x5D #|0 \x5E\x5E #|0 \x5E\x5F #|0 \x5E\x60 #|0 \x5E\x61 #|0 \x5E\x62 #|0 \x5E\x63 #|0 \x5E\x64 #|0 \x5E\x65 #|0 \x5E\x66 #|0 \x5E\x67 #|0 \x5E\x68 #|0 \x5E\x69 #|0 \x5E\x6A #|0 \x5E\x6B #|0 \x5E\x6C #|0 \x5E\x6D #|0 \x5E\x6E #|0 \x5E\x6F #|0 \x5E\x70 #|0 \x5E\x71 #|0 \x5E\x72 #|0 \x5E\x73 #|0 \x5E\x74 #|0 \x5E\x75 #|0 \x5E\x76 #|0 \x5E\x77 #|0 \x5E\x78 #|0 \x5E\x79 #|0 \x5E\x7A #|0 \x5E\x7B #|0 \x5E\x7C #|0 \x5E\x7D #|0 \x5E\x7E #|0 \x5F\x21 #|0 \x5F\x22 #|0 \x5F\x23 #|0 \x5F\x24 #|0 \x5F\x25 #|0 \x5F\x26 #|0 \x5F\x27 #|0 \x5F\x28 #|0 \x5F\x29 #|0 \x5F\x2A #|0 \x5F\x2B #|0 \x5F\x2C #|0 \x5F\x2D #|0 \x5F\x2E #|0 \x5F\x2F #|0 \x5F\x30 #|0 \x5F\x31 #|0 \x5F\x32 #|0 \x5F\x33 #|0 \x5F\x34 #|0 \x5F\x35 #|0 \x5F\x36 #|0 \x5F\x37 #|0 \x5F\x38 #|0 \x5F\x39 #|0 \x5F\x3A #|0 \x5F\x3B #|0 \x5F\x3C #|0 \x5F\x3D #|0 \x5F\x3E #|0 \x5F\x3F #|0 \x5F\x40 #|0 \x5F\x41 #|0 \x5F\x42 #|0 \x5F\x43 #|0 \x5F\x44 #|0 \x5F\x45 #|0 \x5F\x46 #|0 \x5F\x47 #|0 \x5F\x48 #|0 \x5F\x49 #|0 \x5F\x4A #|0 \x5F\x4B #|0 \x5F\x4C #|0 \x5F\x4D #|0 \x5F\x4E #|0 \x5F\x4F #|0 \x5F\x50 #|0 \x5F\x51 #|0 \x5F\x52 #|0 \x5F\x53 #|0 \x5F\x54 #|0 \x5F\x55 #|0 \x5F\x56 #|0 \x5F\x57 #|0 \x5F\x58 #|0 \x5F\x59 #|0 \x5F\x5A #|0 \x5F\x5B #|0 \x5F\x5C #|0 \x5F\x5D #|0 \x5F\x5E #|0 \x5F\x5F #|0 \x5F\x60 #|0 \x5F\x61 #|0 \x5F\x62 #|0 \x5F\x63 #|0 \x5F\x64 #|0 \x5F\x65 #|0 \x5F\x66 #|0 \x5F\x67 #|0 \x5F\x68 #|0 \x5F\x69 #|0 \x5F\x6A #|0 \x5F\x6B #|0 \x5F\x6C #|0 \x5F\x6D #|0 \x5F\x6E #|0 \x5F\x6F #|0 \x5F\x70 #|0 \x5F\x71 #|0 \x5F\x72 #|0 \x5F\x73 #|0 \x5F\x74 #|0 \x5F\x75 #|0 \x5F\x76 #|0 \x5F\x77 #|0 \x5F\x78 #|0 \x5F\x79 #|0 \x5F\x7A #|0 \x5F\x7B #|0 \x5F\x7C #|0 \x5F\x7D #|0 \x5F\x7E #|0 \x60\x21 #|0 \x60\x22 #|0 \x60\x23 #|0 \x60\x24 #|0 \x60\x25 #|0 \x60\x26 #|0 \x60\x27 #|0 \x60\x28 #|0 \x60\x29 #|0 \x60\x2A #|0 \x60\x2B #|0 \x60\x2C #|0 \x60\x2D #|0 \x60\x2E #|0 \x60\x2F #|0 \x60\x30 #|0 \x60\x31 #|0 \x60\x32 #|0 \x60\x33 #|0 \x60\x34 #|0 \x60\x35 #|0 \x60\x36 #|0 \x60\x37 #|0 \x60\x38 #|0 \x60\x39 #|0 \x60\x3A #|0 \x60\x3B #|0 \x60\x3C #|0 \x60\x3D #|0 \x60\x3E #|0 \x60\x3F #|0 \x60\x40 #|0 \x60\x41 #|0 \x60\x42 #|0 \x60\x43 #|0 \x60\x44 #|0 \x60\x45 #|0 \x60\x46 #|0 \x60\x47 #|0 \x60\x48 #|0 \x60\x49 #|0 \x60\x4A #|0 \x60\x4B #|0 \x60\x4C #|0 \x60\x4D #|0 \x60\x4E #|0 \x60\x4F #|0 \x60\x50 #|0 \x60\x51 #|0 \x60\x52 #|0 \x60\x53 #|0 \x60\x54 #|0 \x60\x55 #|0 \x60\x56 #|0 \x60\x57 #|0 \x60\x58 #|0 \x60\x59 #|0 \x60\x5A #|0 \x60\x5B #|0 \x60\x5C #|0 \x60\x5D #|0 \x60\x5E #|0 \x60\x5F #|0 \x60\x60 #|0 \x60\x61 #|0 \x60\x62 #|0 \x60\x63 #|0 \x60\x64 #|0 \x60\x65 #|0 \x60\x66 #|0 \x60\x67 #|0 \x60\x68 #|0 \x60\x69 #|0 \x60\x6A #|0 \x60\x6B #|0 \x60\x6C #|0 \x60\x6D #|0 \x60\x6E #|0 \x60\x6F #|0 \x60\x70 #|0 \x60\x71 #|0 \x60\x72 #|0 \x60\x73 #|0 \x60\x74 #|0 \x60\x75 #|0 \x60\x76 #|0 \x60\x77 #|0 \x60\x78 #|0 \x60\x79 #|0 \x60\x7A #|0 \x60\x7B #|0 \x60\x7C #|0 \x60\x7D #|0 \x60\x7E #|0 \x61\x21 #|0 \x61\x22 #|0 \x61\x23 #|0 \x61\x24 #|0 \x61\x25 #|0 \x61\x26 #|0 \x61\x27 #|0 \x61\x28 #|0 \x61\x29 #|0 \x61\x2A #|0 \x61\x2B #|0 \x61\x2C #|0 \x61\x2D #|0 \x61\x2E #|0 \x61\x2F #|0 \x61\x30 #|0 \x61\x31 #|0 \x61\x32 #|0 \x61\x33 #|0 \x61\x34 #|0 \x61\x35 #|0 \x61\x36 #|0 \x61\x37 #|0 \x61\x38 #|0 \x61\x39 #|0 \x61\x3A #|0 \x61\x3B #|0 \x61\x3C #|0 \x61\x3D #|0 \x61\x3E #|0 \x61\x3F #|0 \x61\x40 #|0 \x61\x41 #|0 \x61\x42 #|0 \x61\x43 #|0 \x61\x44 #|0 \x61\x45 #|0 \x61\x46 #|0 \x61\x47 #|0 \x61\x48 #|0 \x61\x49 #|0 \x61\x4A #|0 \x61\x4B #|0 \x61\x4C #|0 \x61\x4D #|0 \x61\x4E #|0 \x61\x4F #|0 \x61\x50 #|0 \x61\x51 #|0 \x61\x52 #|0 \x61\x53 #|0 \x61\x54 #|0 \x61\x55 #|0 \x61\x56 #|0 \x61\x57 #|0 \x61\x58 #|0 \x61\x59 #|0 \x61\x5A #|0 \x61\x5B #|0 \x61\x5C #|0 \x61\x5D #|0 \x61\x5E #|0 \x61\x5F #|0 \x61\x60 #|0 \x61\x61 #|0 \x61\x62 #|0 \x61\x63 #|0 \x61\x64 #|0 \x61\x65 #|0 \x61\x66 #|0 \x61\x67 #|0 \x61\x68 #|0 \x61\x69 #|0 \x61\x6A #|0 \x61\x6B #|0 \x61\x6C #|0 \x61\x6D #|0 \x61\x6E #|0 \x61\x6F #|0 \x61\x70 #|0 \x61\x71 #|0 \x61\x72 #|0 \x61\x73 #|0 \x61\x74 #|0 \x61\x75 #|0 \x61\x76 #|0 \x61\x77 #|0 \x61\x78 #|0 \x61\x79 #|0 \x61\x7A #|0 \x61\x7B #|0 \x61\x7C #|0 \x61\x7D #|0 \x61\x7E #|0 \x62\x21 #|0 \x62\x22 #|0 \x62\x23 #|0 \x62\x24 #|0 \x62\x25 #|0 \x62\x26 #|0 \x62\x27 #|0 \x62\x28 #|0 \x62\x29 #|0 \x62\x2A #|0 \x62\x2B #|0 \x62\x2C #|0 \x62\x2D #|0 \x62\x2E #|0 \x62\x2F #|0 \x62\x30 #|0 \x62\x31 #|0 \x62\x32 #|0 \x62\x33 #|0 \x62\x34 #|0 \x62\x35 #|0 \x62\x36 #|0 \x62\x37 #|0 \x62\x38 #|0 \x62\x39 #|0 \x62\x3A #|0 \x62\x3B #|0 \x62\x3C #|0 \x62\x3D #|0 \x62\x3E #|0 \x62\x3F #|0 \x62\x40 #|0 \x62\x41 #|0 \x62\x42 #|0 \x62\x43 #|0 \x62\x44 #|0 \x62\x45 #|0 \x62\x46 #|0 \x62\x47 #|0 \x62\x48 #|0 \x62\x49 #|0 \x62\x4A #|0 \x62\x4B #|0 \x62\x4C #|0 \x62\x4D #|0 \x62\x4E #|0 \x62\x4F #|0 \x62\x50 #|0 \x62\x51 #|0 \x62\x52 #|0 \x62\x53 #|0 \x62\x54 #|0 \x62\x55 #|0 \x62\x56 #|0 \x62\x57 #|0 \x62\x58 #|0 \x62\x59 #|0 \x62\x5A #|0 \x62\x5B #|0 \x62\x5C #|0 \x62\x5D #|0 \x62\x5E #|0 \x62\x5F #|0 \x62\x60 #|0 \x62\x61 #|0 \x62\x62 #|0 \x62\x63 #|0 \x62\x64 #|0 \x62\x65 #|0 \x62\x66 #|0 \x62\x67 #|0 \x62\x68 #|0 \x62\x69 #|0 \x62\x6A #|0 \x62\x6B #|0 \x62\x6C #|0 \x62\x6D #|0 \x62\x6E #|0 \x62\x6F #|0 \x62\x70 #|0 \x62\x71 #|0 \x62\x72 #|0 \x62\x73 #|0 \x62\x74 #|0 \x62\x75 #|0 \x62\x76 #|0 \x62\x77 #|0 \x62\x78 #|0 \x62\x79 #|0 \x62\x7A #|0 \x62\x7B #|0 \x62\x7C #|0 \x62\x7D #|0 \x62\x7E #|0 \x63\x21 #|0 \x63\x22 #|0 \x63\x23 #|0 \x63\x24 #|0 \x63\x25 #|0 \x63\x26 #|0 \x63\x27 #|0 \x63\x28 #|0 \x63\x29 #|0 \x63\x2A #|0 \x63\x2B #|0 \x63\x2C #|0 \x63\x2D #|0 \x63\x2E #|0 \x63\x2F #|0 \x63\x30 #|0 \x63\x31 #|0 \x63\x32 #|0 \x63\x33 #|0 \x63\x34 #|0 \x63\x35 #|0 \x63\x36 #|0 \x63\x37 #|0 \x63\x38 #|0 \x63\x39 #|0 \x63\x3A #|0 \x63\x3B #|0 \x63\x3C #|0 \x63\x3D #|0 \x63\x3E #|0 \x63\x3F #|0 \x63\x40 #|0 \x63\x41 #|0 \x63\x42 #|0 \x63\x43 #|0 \x63\x44 #|0 \x63\x45 #|0 \x63\x46 #|0 \x63\x47 #|0 \x63\x48 #|0 \x63\x49 #|0 \x63\x4A #|0 \x63\x4B #|0 \x63\x4C #|0 \x63\x4D #|0 \x63\x4E #|0 \x63\x4F #|0 \x63\x50 #|0 \x63\x51 #|0 \x63\x52 #|0 \x63\x53 #|0 \x63\x54 #|0 \x63\x55 #|0 \x63\x56 #|0 \x63\x57 #|0 \x63\x58 #|0 \x63\x59 #|0 \x63\x5A #|0 \x63\x5B #|0 \x63\x5C #|0 \x63\x5D #|0 \x63\x5E #|0 \x63\x5F #|0 \x63\x60 #|0 \x63\x61 #|0 \x63\x62 #|0 \x63\x63 #|0 \x63\x64 #|0 \x63\x65 #|0 \x63\x66 #|0 \x63\x67 #|0 \x63\x68 #|0 \x63\x69 #|0 \x63\x6A #|0 \x63\x6B #|0 \x63\x6C #|0 \x63\x6D #|0 \x63\x6E #|0 \x63\x6F #|0 \x63\x70 #|0 \x63\x71 #|0 \x63\x72 #|0 \x63\x73 #|0 \x63\x74 #|0 \x63\x75 #|0 \x63\x76 #|0 \x63\x77 #|0 \x63\x78 #|0 \x63\x79 #|0 \x63\x7A #|0 \x63\x7B #|0 \x63\x7C #|0 \x63\x7D #|0 \x63\x7E #|0 \x64\x21 #|0 \x64\x22 #|0 \x64\x23 #|0 \x64\x24 #|0 \x64\x25 #|0 \x64\x26 #|0 \x64\x27 #|0 \x64\x28 #|0 \x64\x29 #|0 \x64\x2A #|0 \x64\x2B #|0 \x64\x2C #|0 \x64\x2D #|0 \x64\x2E #|0 \x64\x2F #|0 \x64\x30 #|0 \x64\x31 #|0 \x64\x32 #|0 \x64\x33 #|0 \x64\x34 #|0 \x64\x35 #|0 \x64\x36 #|0 \x64\x37 #|0 \x64\x38 #|0 \x64\x39 #|0 \x64\x3A #|0 \x64\x3B #|0 \x64\x3C #|0 \x64\x3D #|0 \x64\x3E #|0 \x64\x3F #|0 \x64\x40 #|0 \x64\x41 #|0 \x64\x42 #|0 \x64\x43 #|0 \x64\x44 #|0 \x64\x45 #|0 \x64\x46 #|0 \x64\x47 #|0 \x64\x48 #|0 \x64\x49 #|0 \x64\x4A #|0 \x64\x4B #|0 \x64\x4C #|0 \x64\x4D #|0 \x64\x4E #|0 \x64\x4F #|0 \x64\x50 #|0 \x64\x51 #|0 \x64\x52 #|0 \x64\x53 #|0 \x64\x54 #|0 \x64\x55 #|0 \x64\x56 #|0 \x64\x57 #|0 \x64\x58 #|0 \x64\x59 #|0 \x64\x5A #|0 \x64\x5B #|0 \x64\x5C #|0 \x64\x5D #|0 \x64\x5E #|0 \x64\x5F #|0 \x64\x60 #|0 \x64\x61 #|0 \x64\x62 #|0 \x64\x63 #|0 \x64\x64 #|0 \x64\x65 #|0 \x64\x66 #|0 \x64\x67 #|0 \x64\x68 #|0 \x64\x69 #|0 \x64\x6A #|0 \x64\x6B #|0 \x64\x6C #|0 \x64\x6D #|0 \x64\x6E #|0 \x64\x6F #|0 \x64\x70 #|0 \x64\x71 #|0 \x64\x72 #|0 \x64\x73 #|0 \x64\x74 #|0 \x64\x75 #|0 \x64\x76 #|0 \x64\x77 #|0 \x64\x78 #|0 \x64\x79 #|0 \x64\x7A #|0 \x64\x7B #|0 \x64\x7C #|0 \x64\x7D #|0 \x64\x7E #|0 \x65\x21 #|0 \x65\x22 #|0 \x65\x23 #|0 \x65\x24 #|0 \x65\x25 #|0 \x65\x26 #|0 \x65\x27 #|0 \x65\x28 #|0 \x65\x29 #|0 \x65\x2A #|0 \x65\x2B #|0 \x65\x2C #|0 \x65\x2D #|0 \x65\x2E #|0 \x65\x2F #|0 \x65\x30 #|0 \x65\x31 #|0 \x65\x32 #|0 \x65\x33 #|0 \x65\x34 #|0 \x65\x35 #|0 \x65\x36 #|0 \x65\x37 #|0 \x65\x38 #|0 \x65\x39 #|0 \x65\x3A #|0 \x65\x3B #|0 \x65\x3C #|0 \x65\x3D #|0 \x65\x3E #|0 \x65\x3F #|0 \x65\x40 #|0 \x65\x41 #|0 \x65\x42 #|0 \x65\x43 #|0 \x65\x44 #|0 \x65\x45 #|0 \x65\x46 #|0 \x65\x47 #|0 \x65\x48 #|0 \x65\x49 #|0 \x65\x4A #|0 \x65\x4B #|0 \x65\x4C #|0 \x65\x4D #|0 \x65\x4E #|0 \x65\x4F #|0 \x65\x50 #|0 \x65\x51 #|0 \x65\x52 #|0 \x65\x53 #|0 \x65\x54 #|0 \x65\x55 #|0 \x65\x56 #|0 \x65\x57 #|0 \x65\x58 #|0 \x65\x59 #|0 \x65\x5A #|0 \x65\x5B #|0 \x65\x5C #|0 \x65\x5D #|0 \x65\x5E #|0 \x65\x5F #|0 \x65\x60 #|0 \x65\x61 #|0 \x65\x62 #|0 \x65\x63 #|0 \x65\x64 #|0 \x65\x65 #|0 \x65\x66 #|0 \x65\x67 #|0 \x65\x68 #|0 \x65\x69 #|0 \x65\x6A #|0 \x65\x6B #|0 \x65\x6C #|0 \x65\x6D #|0 \x65\x6E #|0 \x65\x6F #|0 \x65\x70 #|0 \x65\x71 #|0 \x65\x72 #|0 \x65\x73 #|0 \x65\x74 #|0 \x65\x75 #|0 \x65\x76 #|0 \x65\x77 #|0 \x65\x78 #|0 \x65\x79 #|0 \x65\x7A #|0 \x65\x7B #|0 \x65\x7C #|0 \x65\x7D #|0 \x65\x7E #|0 \x66\x21 #|0 \x66\x22 #|0 \x66\x23 #|0 \x66\x24 #|0 \x66\x25 #|0 \x66\x26 #|0 \x66\x27 #|0 \x66\x28 #|0 \x66\x29 #|0 \x66\x2A #|0 \x66\x2B #|0 \x66\x2C #|0 \x66\x2D #|0 \x66\x2E #|0 \x66\x2F #|0 \x66\x30 #|0 \x66\x31 #|0 \x66\x32 #|0 \x66\x33 #|0 \x66\x34 #|0 \x66\x35 #|0 \x66\x36 #|0 \x66\x37 #|0 \x66\x38 #|0 \x66\x39 #|0 \x66\x3A #|0 \x66\x3B #|0 \x66\x3C #|0 \x66\x3D #|0 \x66\x3E #|0 \x66\x3F #|0 \x66\x40 #|0 \x66\x41 #|0 \x66\x42 #|0 \x66\x43 #|0 \x66\x44 #|0 \x66\x45 #|0 \x66\x46 #|0 \x66\x47 #|0 \x66\x48 #|0 \x66\x49 #|0 \x66\x4A #|0 \x66\x4B #|0 \x66\x4C #|0 \x66\x4D #|0 \x66\x4E #|0 \x66\x4F #|0 \x66\x50 #|0 \x66\x51 #|0 \x66\x52 #|0 \x66\x53 #|0 \x66\x54 #|0 \x66\x55 #|0 \x66\x56 #|0 \x66\x57 #|0 \x66\x58 #|0 \x66\x59 #|0 \x66\x5A #|0 \x66\x5B #|0 \x66\x5C #|0 \x66\x5D #|0 \x66\x5E #|0 \x66\x5F #|0 \x66\x60 #|0 \x66\x61 #|0 \x66\x62 #|0 \x66\x63 #|0 \x66\x64 #|0 \x66\x65 #|0 \x66\x66 #|0 \x66\x67 #|0 \x66\x68 #|0 \x66\x69 #|0 \x66\x6A #|0 \x66\x6B #|0 \x66\x6C #|0 \x66\x6D #|0 \x66\x6E #|0 \x66\x6F #|0 \x66\x70 #|0 \x66\x71 #|0 \x66\x72 #|0 \x66\x73 #|0 \x66\x74 #|0 \x66\x75 #|0 \x66\x76 #|0 \x66\x77 #|0 \x66\x78 #|0 \x66\x79 #|0 \x66\x7A #|0 \x66\x7B #|0 \x66\x7C #|0 \x66\x7D #|0 \x66\x7E #|0 \x67\x21 #|0 \x67\x22 #|0 \x67\x23 #|0 \x67\x24 #|0 \x67\x25 #|0 \x67\x26 #|0 \x67\x27 #|0 \x67\x28 #|0 \x67\x29 #|0 \x67\x2A #|0 \x67\x2B #|0 \x67\x2C #|0 \x67\x2D #|0 \x67\x2E #|0 \x67\x2F #|0 \x67\x30 #|0 \x67\x31 #|0 \x67\x32 #|0 \x67\x33 #|0 \x67\x34 #|0 \x67\x35 #|0 \x67\x36 #|0 \x67\x37 #|0 \x67\x38 #|0 \x67\x39 #|0 \x67\x3A #|0 \x67\x3B #|0 \x67\x3C #|0 \x67\x3D #|0 \x67\x3E #|0 \x67\x3F #|0 \x67\x40 #|0 \x67\x41 #|0 \x67\x42 #|0 \x67\x43 #|0 \x67\x44 #|0 \x67\x45 #|0 \x67\x46 #|0 \x67\x47 #|0 \x67\x48 #|0 \x67\x49 #|0 \x67\x4A #|0 \x67\x4B #|0 \x67\x4C #|0 \x67\x4D #|0 \x67\x4E #|0 \x67\x4F #|0 \x67\x50 #|0 \x67\x51 #|0 \x67\x52 #|0 \x67\x53 #|0 \x67\x54 #|0 \x67\x55 #|0 \x67\x56 #|0 \x67\x57 #|0 \x67\x58 #|0 \x67\x59 #|0 \x67\x5A #|0 \x67\x5B #|0 \x67\x5C #|0 \x67\x5D #|0 \x67\x5E #|0 \x67\x5F #|0 \x67\x60 #|0 \x67\x61 #|0 \x67\x62 #|0 \x67\x63 #|0 \x67\x64 #|0 \x67\x65 #|0 \x67\x66 #|0 \x67\x67 #|0 \x67\x68 #|0 \x67\x69 #|0 \x67\x6A #|0 \x67\x6B #|0 \x67\x6C #|0 \x67\x6D #|0 \x67\x6E #|0 \x67\x6F #|0 \x67\x70 #|0 \x67\x71 #|0 \x67\x72 #|0 \x67\x73 #|0 \x67\x74 #|0 \x67\x75 #|0 \x67\x76 #|0 \x67\x77 #|0 \x67\x78 #|0 \x67\x79 #|0 \x67\x7A #|0 \x67\x7B #|0 \x67\x7C #|0 \x67\x7D #|0 \x67\x7E #|0 \x68\x21 #|0 \x68\x22 #|0 \x68\x23 #|0 \x68\x24 #|0 \x68\x25 #|0 \x68\x26 #|0 \x68\x27 #|0 \x68\x28 #|0 \x68\x29 #|0 \x68\x2A #|0 \x68\x2B #|0 \x68\x2C #|0 \x68\x2D #|0 \x68\x2E #|0 \x68\x2F #|0 \x68\x30 #|0 \x68\x31 #|0 \x68\x32 #|0 \x68\x33 #|0 \x68\x34 #|0 \x68\x35 #|0 \x68\x36 #|0 \x68\x37 #|0 \x68\x38 #|0 \x68\x39 #|0 \x68\x3A #|0 \x68\x3B #|0 \x68\x3C #|0 \x68\x3D #|0 \x68\x3E #|0 \x68\x3F #|0 \x68\x40 #|0 \x68\x41 #|0 \x68\x42 #|0 \x68\x43 #|0 \x68\x44 #|0 \x68\x45 #|0 \x68\x46 #|0 \x68\x47 #|0 \x68\x48 #|0 \x68\x49 #|0 \x68\x4A #|0 \x68\x4B #|0 \x68\x4C #|0 \x68\x4D #|0 \x68\x4E #|0 \x68\x4F #|0 \x68\x50 #|0 \x68\x51 #|0 \x68\x52 #|0 \x68\x53 #|0 \x68\x54 #|0 \x68\x55 #|0 \x68\x56 #|0 \x68\x57 #|0 \x68\x58 #|0 \x68\x59 #|0 \x68\x5A #|0 \x68\x5B #|0 \x68\x5C #|0 \x68\x5D #|0 \x68\x5E #|0 \x68\x5F #|0 \x68\x60 #|0 \x68\x61 #|0 \x68\x62 #|0 \x68\x63 #|0 \x68\x64 #|0 \x68\x65 #|0 \x68\x66 #|0 \x68\x67 #|0 \x68\x68 #|0 \x68\x69 #|0 \x68\x6A #|0 \x68\x6B #|0 \x68\x6C #|0 \x68\x6D #|0 \x68\x6E #|0 \x68\x6F #|0 \x68\x70 #|0 \x68\x71 #|0 \x68\x72 #|0 \x68\x73 #|0 \x68\x74 #|0 \x68\x75 #|0 \x68\x76 #|0 \x68\x77 #|0 \x68\x78 #|0 \x68\x79 #|0 \x68\x7A #|0 \x68\x7B #|0 \x68\x7C #|0 \x68\x7D #|0 \x68\x7E #|0 \x69\x21 #|0 \x69\x22 #|0 \x69\x23 #|0 \x69\x24 #|0 \x69\x25 #|0 \x69\x26 #|0 \x69\x27 #|0 \x69\x28 #|0 \x69\x29 #|0 \x69\x2A #|0 \x69\x2B #|0 \x69\x2C #|0 \x69\x2D #|0 \x69\x2E #|0 \x69\x2F #|0 \x69\x30 #|0 \x69\x31 #|0 \x69\x32 #|0 \x69\x33 #|0 \x69\x34 #|0 \x69\x35 #|0 \x69\x36 #|0 \x69\x37 #|0 \x69\x38 #|0 \x69\x39 #|0 \x69\x3A #|0 \x69\x3B #|0 \x69\x3C #|0 \x69\x3D #|0 \x69\x3E #|0 \x69\x3F #|0 \x69\x40 #|0 \x69\x41 #|0 \x69\x42 #|0 \x69\x43 #|0 \x69\x44 #|0 \x69\x45 #|0 \x69\x46 #|0 \x69\x47 #|0 \x69\x48 #|0 \x69\x49 #|0 \x69\x4A #|0 \x69\x4B #|0 \x69\x4C #|0 \x69\x4D #|0 \x69\x4E #|0 \x69\x4F #|0 \x69\x50 #|0 \x69\x51 #|0 \x69\x52 #|0 \x69\x53 #|0 \x69\x54 #|0 \x69\x55 #|0 \x69\x56 #|0 \x69\x57 #|0 \x69\x58 #|0 \x69\x59 #|0 \x69\x5A #|0 \x69\x5B #|0 \x69\x5C #|0 \x69\x5D #|0 \x69\x5E #|0 \x69\x5F #|0 \x69\x60 #|0 \x69\x61 #|0 \x69\x62 #|0 \x69\x63 #|0 \x69\x64 #|0 \x69\x65 #|0 \x69\x66 #|0 \x69\x67 #|0 \x69\x68 #|0 \x69\x69 #|0 \x69\x6A #|0 \x69\x6B #|0 \x69\x6C #|0 \x69\x6D #|0 \x69\x6E #|0 \x69\x6F #|0 \x69\x70 #|0 \x69\x71 #|0 \x69\x72 #|0 \x69\x73 #|0 \x69\x74 #|0 \x69\x75 #|0 \x69\x76 #|0 \x69\x77 #|0 \x69\x78 #|0 \x69\x79 #|0 \x69\x7A #|0 \x69\x7B #|0 \x69\x7C #|0 \x69\x7D #|0 \x69\x7E #|0 \x6A\x21 #|0 \x6A\x22 #|0 \x6A\x23 #|0 \x6A\x24 #|0 \x6A\x25 #|0 \x6A\x26 #|0 \x6A\x27 #|0 \x6A\x28 #|0 \x6A\x29 #|0 \x6A\x2A #|0 \x6A\x2B #|0 \x6A\x2C #|0 \x6A\x2D #|0 \x6A\x2E #|0 \x6A\x2F #|0 \x6A\x30 #|0 \x6A\x31 #|0 \x6A\x32 #|0 \x6A\x33 #|0 \x6A\x34 #|0 \x6A\x35 #|0 \x6A\x36 #|0 \x6A\x37 #|0 \x6A\x38 #|0 \x6A\x39 #|0 \x6A\x3A #|0 \x6A\x3B #|0 \x6A\x3C #|0 \x6A\x3D #|0 \x6A\x3E #|0 \x6A\x3F #|0 \x6A\x40 #|0 \x6A\x41 #|0 \x6A\x42 #|0 \x6A\x43 #|0 \x6A\x44 #|0 \x6A\x45 #|0 \x6A\x46 #|0 \x6A\x47 #|0 \x6A\x48 #|0 \x6A\x49 #|0 \x6A\x4A #|0 \x6A\x4B #|0 \x6A\x4C #|0 \x6A\x4D #|0 \x6A\x4E #|0 \x6A\x4F #|0 \x6A\x50 #|0 \x6A\x51 #|0 \x6A\x52 #|0 \x6A\x53 #|0 \x6A\x54 #|0 \x6A\x55 #|0 \x6A\x56 #|0 \x6A\x57 #|0 \x6A\x58 #|0 \x6A\x59 #|0 \x6A\x5A #|0 \x6A\x5B #|0 \x6A\x5C #|0 \x6A\x5D #|0 \x6A\x5E #|0 \x6A\x5F #|0 \x6A\x60 #|0 \x6A\x61 #|0 \x6A\x62 #|0 \x6A\x63 #|0 \x6A\x64 #|0 \x6A\x65 #|0 \x6A\x66 #|0 \x6A\x67 #|0 \x6A\x68 #|0 \x6A\x69 #|0 \x6A\x6A #|0 \x6A\x6B #|0 \x6A\x6C #|0 \x6A\x6D #|0 \x6A\x6E #|0 \x6A\x6F #|0 \x6A\x70 #|0 \x6A\x71 #|0 \x6A\x72 #|0 \x6A\x73 #|0 \x6A\x74 #|0 \x6A\x75 #|0 \x6A\x76 #|0 \x6A\x77 #|0 \x6A\x78 #|0 \x6A\x79 #|0 \x6A\x7A #|0 \x6A\x7B #|0 \x6A\x7C #|0 \x6A\x7D #|0 \x6A\x7E #|0 \x6B\x21 #|0 \x6B\x22 #|0 \x6B\x23 #|0 \x6B\x24 #|0 \x6B\x25 #|0 \x6B\x26 #|0 \x6B\x27 #|0 \x6B\x28 #|0 \x6B\x29 #|0 \x6B\x2A #|0 \x6B\x2B #|0 \x6B\x2C #|0 \x6B\x2D #|0 \x6B\x2E #|0 \x6B\x2F #|0 \x6B\x30 #|0 \x6B\x31 #|0 \x6B\x32 #|0 \x6B\x33 #|0 \x6B\x34 #|0 \x6B\x35 #|0 \x6B\x36 #|0 \x6B\x37 #|0 \x6B\x38 #|0 \x6B\x39 #|0 \x6B\x3A #|0 \x6B\x3B #|0 \x6B\x3C #|0 \x6B\x3D #|0 \x6B\x3E #|0 \x6B\x3F #|0 \x6B\x40 #|0 \x6B\x41 #|0 \x6B\x42 #|0 \x6B\x43 #|0 \x6B\x44 #|0 \x6B\x45 #|0 \x6B\x46 #|0 \x6B\x47 #|0 \x6B\x48 #|0 \x6B\x49 #|0 \x6B\x4A #|0 \x6B\x4B #|0 \x6B\x4C #|0 \x6B\x4D #|0 \x6B\x4E #|0 \x6B\x4F #|0 \x6B\x50 #|0 \x6B\x51 #|0 \x6B\x52 #|0 \x6B\x53 #|0 \x6B\x54 #|0 \x6B\x55 #|0 \x6B\x56 #|0 \x6B\x57 #|0 \x6B\x58 #|0 \x6B\x59 #|0 \x6B\x5A #|0 \x6B\x5B #|0 \x6B\x5C #|0 \x6B\x5D #|0 \x6B\x5E #|0 \x6B\x5F #|0 \x6B\x60 #|0 \x6B\x61 #|0 \x6B\x62 #|0 \x6B\x63 #|0 \x6B\x64 #|0 \x6B\x65 #|0 \x6B\x66 #|0 \x6B\x67 #|0 \x6B\x68 #|0 \x6B\x69 #|0 \x6B\x6A #|0 \x6B\x6B #|0 \x6B\x6C #|0 \x6B\x6D #|0 \x6B\x6E #|0 \x6B\x6F #|0 \x6B\x70 #|0 \x6B\x71 #|0 \x6B\x72 #|0 \x6B\x73 #|0 \x6B\x74 #|0 \x6B\x75 #|0 \x6B\x76 #|0 \x6B\x77 #|0 \x6B\x78 #|0 \x6B\x79 #|0 \x6B\x7A #|0 \x6B\x7B #|0 \x6B\x7C #|0 \x6B\x7D #|0 \x6B\x7E #|0 \x6C\x21 #|0 \x6C\x22 #|0 \x6C\x23 #|0 \x6C\x24 #|0 \x6C\x25 #|0 \x6C\x26 #|0 \x6C\x27 #|0 \x6C\x28 #|0 \x6C\x29 #|0 \x6C\x2A #|0 \x6C\x2B #|0 \x6C\x2C #|0 \x6C\x2D #|0 \x6C\x2E #|0 \x6C\x2F #|0 \x6C\x30 #|0 \x6C\x31 #|0 \x6C\x32 #|0 \x6C\x33 #|0 \x6C\x34 #|0 \x6C\x35 #|0 \x6C\x36 #|0 \x6C\x37 #|0 \x6C\x38 #|0 \x6C\x39 #|0 \x6C\x3A #|0 \x6C\x3B #|0 \x6C\x3C #|0 \x6C\x3D #|0 \x6C\x3E #|0 \x6C\x3F #|0 \x6C\x40 #|0 \x6C\x41 #|0 \x6C\x42 #|0 \x6C\x43 #|0 \x6C\x44 #|0 \x6C\x45 #|0 \x6C\x46 #|0 \x6C\x47 #|0 \x6C\x48 #|0 \x6C\x49 #|0 \x6C\x4A #|0 \x6C\x4B #|0 \x6C\x4C #|0 \x6C\x4D #|0 \x6C\x4E #|0 \x6C\x4F #|0 \x6C\x50 #|0 \x6C\x51 #|0 \x6C\x52 #|0 \x6C\x53 #|0 \x6C\x54 #|0 \x6C\x55 #|0 \x6C\x56 #|0 \x6C\x57 #|0 \x6C\x58 #|0 \x6C\x59 #|0 \x6C\x5A #|0 \x6C\x5B #|0 \x6C\x5C #|0 \x6C\x5D #|0 \x6C\x5E #|0 \x6C\x5F #|0 \x6C\x60 #|0 \x6C\x61 #|0 \x6C\x62 #|0 \x6C\x63 #|0 \x6C\x64 #|0 \x6C\x65 #|0 \x6C\x66 #|0 \x6C\x67 #|0 \x6C\x68 #|0 \x6C\x69 #|0 \x6C\x6A #|0 \x6C\x6B #|0 \x6C\x6C #|0 \x6C\x6D #|0 \x6C\x6E #|0 \x6C\x6F #|0 \x6C\x70 #|0 \x6C\x71 #|0 \x6C\x72 #|0 \x6C\x73 #|0 \x6C\x74 #|0 \x6C\x75 #|0 \x6C\x76 #|0 \x6C\x77 #|0 \x6C\x78 #|0 \x6C\x79 #|0 \x6C\x7A #|0 \x6C\x7B #|0 \x6C\x7C #|0 \x6C\x7D #|0 \x6C\x7E #|0 \x6D\x21 #|0 \x6D\x22 #|0 \x6D\x23 #|0 \x6D\x24 #|0 \x6D\x25 #|0 \x6D\x26 #|0 \x6D\x27 #|0 \x6D\x28 #|0 \x6D\x29 #|0 \x6D\x2A #|0 \x6D\x2B #|0 \x6D\x2C #|0 \x6D\x2D #|0 \x6D\x2E #|0 \x6D\x2F #|0 \x6D\x30 #|0 \x6D\x31 #|0 \x6D\x32 #|0 \x6D\x33 #|0 \x6D\x34 #|0 \x6D\x35 #|0 \x6D\x36 #|0 \x6D\x37 #|0 \x6D\x38 #|0 \x6D\x39 #|0 \x6D\x3A #|0 \x6D\x3B #|0 \x6D\x3C #|0 \x6D\x3D #|0 \x6D\x3E #|0 \x6D\x3F #|0 \x6D\x40 #|0 \x6D\x41 #|0 \x6D\x42 #|0 \x6D\x43 #|0 \x6D\x44 #|0 \x6D\x45 #|0 \x6D\x46 #|0 \x6D\x47 #|0 \x6D\x48 #|0 \x6D\x49 #|0 \x6D\x4A #|0 \x6D\x4B #|0 \x6D\x4C #|0 \x6D\x4D #|0 \x6D\x4E #|0 \x6D\x4F #|0 \x6D\x50 #|0 \x6D\x51 #|0 \x6D\x52 #|0 \x6D\x53 #|0 \x6D\x54 #|0 \x6D\x55 #|0 \x6D\x56 #|0 \x6D\x57 #|0 \x6D\x58 #|0 \x6D\x59 #|0 \x6D\x5A #|0 \x6D\x5B #|0 \x6D\x5C #|0 \x6D\x5D #|0 \x6D\x5E #|0 \x6D\x5F #|0 \x6D\x60 #|0 \x6D\x61 #|0 \x6D\x62 #|0 \x6D\x63 #|0 \x6D\x64 #|0 \x6D\x65 #|0 \x6D\x66 #|0 \x6D\x67 #|0 \x6D\x68 #|0 \x6D\x69 #|0 \x6D\x6A #|0 \x6D\x6B #|0 \x6D\x6C #|0 \x6D\x6D #|0 \x6D\x6E #|0 \x6D\x6F #|0 \x6D\x70 #|0 \x6D\x71 #|0 \x6D\x72 #|0 \x6D\x73 #|0 \x6D\x74 #|0 \x6D\x75 #|0 \x6D\x76 #|0 \x6D\x77 #|0 \x6D\x78 #|0 \x6D\x79 #|0 \x6D\x7A #|0 \x6D\x7B #|0 \x6D\x7C #|0 \x6D\x7D #|0 \x6D\x7E #|0 \x6E\x21 #|0 \x6E\x22 #|0 \x6E\x23 #|0 \x6E\x24 #|0 \x6E\x25 #|0 \x6E\x26 #|0 \x6E\x27 #|0 \x6E\x28 #|0 \x6E\x29 #|0 \x6E\x2A #|0 \x6E\x2B #|0 \x6E\x2C #|0 \x6E\x2D #|0 \x6E\x2E #|0 \x6E\x2F #|0 \x6E\x30 #|0 \x6E\x31 #|0 \x6E\x32 #|0 \x6E\x33 #|0 \x6E\x34 #|0 \x6E\x35 #|0 \x6E\x36 #|0 \x6E\x37 #|0 \x6E\x38 #|0 \x6E\x39 #|0 \x6E\x3A #|0 \x6E\x3B #|0 \x6E\x3C #|0 \x6E\x3D #|0 \x6E\x3E #|0 \x6E\x3F #|0 \x6E\x40 #|0 \x6E\x41 #|0 \x6E\x42 #|0 \x6E\x43 #|0 \x6E\x44 #|0 \x6E\x45 #|0 \x6E\x46 #|0 \x6E\x47 #|0 \x6E\x48 #|0 \x6E\x49 #|0 \x6E\x4A #|0 \x6E\x4B #|0 \x6E\x4C #|0 \x6E\x4D #|0 \x6E\x4E #|0 \x6E\x4F #|0 \x6E\x50 #|0 \x6E\x51 #|0 \x6E\x52 #|0 \x6E\x53 #|0 \x6E\x54 #|0 \x6E\x55 #|0 \x6E\x56 #|0 \x6E\x57 #|0 \x6E\x58 #|0 \x6E\x59 #|0 \x6E\x5A #|0 \x6E\x5B #|0 \x6E\x5C #|0 \x6E\x5D #|0 \x6E\x5E #|0 \x6E\x5F #|0 \x6E\x60 #|0 \x6E\x61 #|0 \x6E\x62 #|0 \x6E\x63 #|0 \x6E\x64 #|0 \x6E\x65 #|0 \x6E\x66 #|0 \x6E\x67 #|0 \x6E\x68 #|0 \x6E\x69 #|0 \x6E\x6A #|0 \x6E\x6B #|0 \x6E\x6C #|0 \x6E\x6D #|0 \x6E\x6E #|0 \x6E\x6F #|0 \x6E\x70 #|0 \x6E\x71 #|0 \x6E\x72 #|0 \x6E\x73 #|0 \x6E\x74 #|0 \x6E\x75 #|0 \x6E\x76 #|0 \x6E\x77 #|0 \x6E\x78 #|0 \x6E\x79 #|0 \x6E\x7A #|0 \x6E\x7B #|0 \x6E\x7C #|0 \x6E\x7D #|0 \x6E\x7E #|0 \x6F\x21 #|0 \x6F\x22 #|0 \x6F\x23 #|0 \x6F\x24 #|0 \x6F\x25 #|0 \x6F\x26 #|0 \x6F\x27 #|0 \x6F\x28 #|0 \x6F\x29 #|0 \x6F\x2A #|0 \x6F\x2B #|0 \x6F\x2C #|0 \x6F\x2D #|0 \x6F\x2E #|0 \x6F\x2F #|0 \x6F\x30 #|0 \x6F\x31 #|0 \x6F\x32 #|0 \x6F\x33 #|0 \x6F\x34 #|0 \x6F\x35 #|0 \x6F\x36 #|0 \x6F\x37 #|0 \x6F\x38 #|0 \x6F\x39 #|0 \x6F\x3A #|0 \x6F\x3B #|0 \x6F\x3C #|0 \x6F\x3D #|0 \x6F\x3E #|0 \x6F\x3F #|0 \x6F\x40 #|0 \x6F\x41 #|0 \x6F\x42 #|0 \x6F\x43 #|0 \x6F\x44 #|0 \x6F\x45 #|0 \x6F\x46 #|0 \x6F\x47 #|0 \x6F\x48 #|0 \x6F\x49 #|0 \x6F\x4A #|0 \x6F\x4B #|0 \x6F\x4C #|0 \x6F\x4D #|0 \x6F\x4E #|0 \x6F\x4F #|0 \x6F\x50 #|0 \x6F\x51 #|0 \x6F\x52 #|0 \x6F\x53 #|0 \x6F\x54 #|0 \x6F\x55 #|0 \x6F\x56 #|0 \x6F\x57 #|0 \x6F\x58 #|0 \x6F\x59 #|0 \x6F\x5A #|0 \x6F\x5B #|0 \x6F\x5C #|0 \x6F\x5D #|0 \x6F\x5E #|0 \x6F\x5F #|0 \x6F\x60 #|0 \x6F\x61 #|0 \x6F\x62 #|0 \x6F\x63 #|0 \x6F\x64 #|0 \x6F\x65 #|0 \x6F\x66 #|0 \x6F\x67 #|0 \x6F\x68 #|0 \x6F\x69 #|0 \x6F\x6A #|0 \x6F\x6B #|0 \x6F\x6C #|0 \x6F\x6D #|0 \x6F\x6E #|0 \x6F\x6F #|0 \x6F\x70 #|0 \x6F\x71 #|0 \x6F\x72 #|0 \x6F\x73 #|0 \x6F\x74 #|0 \x6F\x75 #|0 \x6F\x76 #|0 \x6F\x77 #|0 \x6F\x78 #|0 \x6F\x79 #|0 \x6F\x7A #|0 \x6F\x7B #|0 \x6F\x7C #|0 \x6F\x7D #|0 \x6F\x7E #|0 \x70\x21 #|0 \x70\x22 #|0 \x70\x23 #|0 \x70\x24 #|0 \x70\x25 #|0 \x70\x26 #|0 \x70\x27 #|0 \x70\x28 #|0 \x70\x29 #|0 \x70\x2A #|0 \x70\x2B #|0 \x70\x2C #|0 \x70\x2D #|0 \x70\x2E #|0 \x70\x2F #|0 \x70\x30 #|0 \x70\x31 #|0 \x70\x32 #|0 \x70\x33 #|0 \x70\x34 #|0 \x70\x35 #|0 \x70\x36 #|0 \x70\x37 #|0 \x70\x38 #|0 \x70\x39 #|0 \x70\x3A #|0 \x70\x3B #|0 \x70\x3C #|0 \x70\x3D #|0 \x70\x3E #|0 \x70\x3F #|0 \x70\x40 #|0 \x70\x41 #|0 \x70\x42 #|0 \x70\x43 #|0 \x70\x44 #|0 \x70\x45 #|0 \x70\x46 #|0 \x70\x47 #|0 \x70\x48 #|0 \x70\x49 #|0 \x70\x4A #|0 \x70\x4B #|0 \x70\x4C #|0 \x70\x4D #|0 \x70\x4E #|0 \x70\x4F #|0 \x70\x50 #|0 \x70\x51 #|0 \x70\x52 #|0 \x70\x53 #|0 \x70\x54 #|0 \x70\x55 #|0 \x70\x56 #|0 \x70\x57 #|0 \x70\x58 #|0 \x70\x59 #|0 \x70\x5A #|0 \x70\x5B #|0 \x70\x5C #|0 \x70\x5D #|0 \x70\x5E #|0 \x70\x5F #|0 \x70\x60 #|0 \x70\x61 #|0 \x70\x62 #|0 \x70\x63 #|0 \x70\x64 #|0 \x70\x65 #|0 \x70\x66 #|0 \x70\x67 #|0 \x70\x68 #|0 \x70\x69 #|0 \x70\x6A #|0 \x70\x6B #|0 \x70\x6C #|0 \x70\x6D #|0 \x70\x6E #|0 \x70\x6F #|0 \x70\x70 #|0 \x70\x71 #|0 \x70\x72 #|0 \x70\x73 #|0 \x70\x74 #|0 \x70\x75 #|0 \x70\x76 #|0 \x70\x77 #|0 \x70\x78 #|0 \x70\x79 #|0 \x70\x7A #|0 \x70\x7B #|0 \x70\x7C #|0 \x70\x7D #|0 \x70\x7E #|0 \x71\x21 #|0 \x71\x22 #|0 \x71\x23 #|0 \x71\x24 #|0 \x71\x25 #|0 \x71\x26 #|0 \x71\x27 #|0 \x71\x28 #|0 \x71\x29 #|0 \x71\x2A #|0 \x71\x2B #|0 \x71\x2C #|0 \x71\x2D #|0 \x71\x2E #|0 \x71\x2F #|0 \x71\x30 #|0 \x71\x31 #|0 \x71\x32 #|0 \x71\x33 #|0 \x71\x34 #|0 \x71\x35 #|0 \x71\x36 #|0 \x71\x37 #|0 \x71\x38 #|0 \x71\x39 #|0 \x71\x3A #|0 \x71\x3B #|0 \x71\x3C #|0 \x71\x3D #|0 \x71\x3E #|0 \x71\x3F #|0 \x71\x40 #|0 \x71\x41 #|0 \x71\x42 #|0 \x71\x43 #|0 \x71\x44 #|0 \x71\x45 #|0 \x71\x46 #|0 \x71\x47 #|0 \x71\x48 #|0 \x71\x49 #|0 \x71\x4A #|0 \x71\x4B #|0 \x71\x4C #|0 \x71\x4D #|0 \x71\x4E #|0 \x71\x4F #|0 \x71\x50 #|0 \x71\x51 #|0 \x71\x52 #|0 \x71\x53 #|0 \x71\x54 #|0 \x71\x55 #|0 \x71\x56 #|0 \x71\x57 #|0 \x71\x58 #|0 \x71\x59 #|0 \x71\x5A #|0 \x71\x5B #|0 \x71\x5C #|0 \x71\x5D #|0 \x71\x5E #|0 \x71\x5F #|0 \x71\x60 #|0 \x71\x61 #|0 \x71\x62 #|0 \x71\x63 #|0 \x71\x64 #|0 \x71\x65 #|0 \x71\x66 #|0 \x71\x67 #|0 \x71\x68 #|0 \x71\x69 #|0 \x71\x6A #|0 \x71\x6B #|0 \x71\x6C #|0 \x71\x6D #|0 \x71\x6E #|0 \x71\x6F #|0 \x71\x70 #|0 \x71\x71 #|0 \x71\x72 #|0 \x71\x73 #|0 \x71\x74 #|0 \x71\x75 #|0 \x71\x76 #|0 \x71\x77 #|0 \x71\x78 #|0 \x71\x79 #|0 \x71\x7A #|0 \x71\x7B #|0 \x71\x7C #|0 \x71\x7D #|0 \x71\x7E #|0 \x72\x21 #|0 \x72\x22 #|0 \x72\x23 #|0 \x72\x24 #|0 \x72\x25 #|0 \x72\x26 #|0 \x72\x27 #|0 \x72\x28 #|0 \x72\x29 #|0 \x72\x2A #|0 \x72\x2B #|0 \x72\x2C #|0 \x72\x2D #|0 \x72\x2E #|0 \x72\x2F #|0 \x72\x30 #|0 \x72\x31 #|0 \x72\x32 #|0 \x72\x33 #|0 \x72\x34 #|0 \x72\x35 #|0 \x72\x36 #|0 \x72\x37 #|0 \x72\x38 #|0 \x72\x39 #|0 \x72\x3A #|0 \x72\x3B #|0 \x72\x3C #|0 \x72\x3D #|0 \x72\x3E #|0 \x72\x3F #|0 \x72\x40 #|0 \x72\x41 #|0 \x72\x42 #|0 \x72\x43 #|0 \x72\x44 #|0 \x72\x45 #|0 \x72\x46 #|0 \x72\x47 #|0 \x72\x48 #|0 \x72\x49 #|0 \x72\x4A #|0 \x72\x4B #|0 \x72\x4C #|0 \x72\x4D #|0 \x72\x4E #|0 \x72\x4F #|0 \x72\x50 #|0 \x72\x51 #|0 \x72\x52 #|0 \x72\x53 #|0 \x72\x54 #|0 \x72\x55 #|0 \x72\x56 #|0 \x72\x57 #|0 \x72\x58 #|0 \x72\x59 #|0 \x72\x5A #|0 \x72\x5B #|0 \x72\x5C #|0 \x72\x5D #|0 \x72\x5E #|0 \x72\x5F #|0 \x72\x60 #|0 \x72\x61 #|0 \x72\x62 #|0 \x72\x63 #|0 \x72\x64 #|0 \x72\x65 #|0 \x72\x66 #|0 \x72\x67 #|0 \x72\x68 #|0 \x72\x69 #|0 \x72\x6A #|0 \x72\x6B #|0 \x72\x6C #|0 \x72\x6D #|0 \x72\x6E #|0 \x72\x6F #|0 \x72\x70 #|0 \x72\x71 #|0 \x72\x72 #|0 \x72\x73 #|0 \x72\x74 #|0 \x72\x75 #|0 \x72\x76 #|0 \x72\x77 #|0 \x72\x78 #|0 \x72\x79 #|0 \x72\x7A #|0 \x72\x7B #|0 \x72\x7C #|0 \x72\x7D #|0 \x72\x7E #|0 \x73\x21 #|0 \x73\x22 #|0 \x73\x23 #|0 \x73\x24 #|0 \x73\x25 #|0 \x73\x26 #|0 \x73\x27 #|0 \x73\x28 #|0 \x73\x29 #|0 \x73\x2A #|0 \x73\x2B #|0 \x73\x2C #|0 \x73\x2D #|0 \x73\x2E #|0 \x73\x2F #|0 \x73\x30 #|0 \x73\x31 #|0 \x73\x32 #|0 \x73\x33 #|0 \x73\x34 #|0 \x73\x35 #|0 \x73\x36 #|0 \x73\x37 #|0 \x73\x38 #|0 \x73\x39 #|0 \x73\x3A #|0 \x73\x3B #|0 \x73\x3C #|0 \x73\x3D #|0 \x73\x3E #|0 \x73\x3F #|0 \x73\x40 #|0 \x73\x41 #|0 \x73\x42 #|0 \x73\x43 #|0 \x73\x44 #|0 \x73\x45 #|0 \x73\x46 #|0 \x73\x47 #|0 \x73\x48 #|0 \x73\x49 #|0 \x73\x4A #|0 \x73\x4B #|0 \x73\x4C #|0 \x73\x4D #|0 \x73\x4E #|0 \x73\x4F #|0 \x73\x50 #|0 \x73\x51 #|0 \x73\x52 #|0 \x73\x53 #|0 \x73\x54 #|0 \x73\x55 #|0 \x73\x56 #|0 \x73\x57 #|0 \x73\x58 #|0 \x73\x59 #|0 \x73\x5A #|0 \x73\x5B #|0 \x73\x5C #|0 \x73\x5D #|0 \x73\x5E #|0 \x73\x5F #|0 \x73\x60 #|0 \x73\x61 #|0 \x73\x62 #|0 \x73\x63 #|0 \x73\x64 #|0 \x73\x65 #|0 \x73\x66 #|0 \x73\x67 #|0 \x73\x68 #|0 \x73\x69 #|0 \x73\x6A #|0 \x73\x6B #|0 \x73\x6C #|0 \x73\x6D #|0 \x73\x6E #|0 \x73\x6F #|0 \x73\x70 #|0 \x73\x71 #|0 \x73\x72 #|0 \x73\x73 #|0 \x73\x74 #|0 \x73\x75 #|0 \x73\x76 #|0 \x73\x77 #|0 \x73\x78 #|0 \x73\x79 #|0 \x73\x7A #|0 \x73\x7B #|0 \x73\x7C #|0 \x73\x7D #|0 \x73\x7E #|0 \x74\x21 #|0 \x74\x22 #|0 \x74\x23 #|0 \x74\x24 #|0 \x74\x25 #|0 \x74\x26 #|0 \x74\x27 #|0 \x74\x28 #|0 \x74\x29 #|0 \x74\x2A #|0 \x74\x2B #|0 \x74\x2C #|0 \x74\x2D #|0 \x74\x2E #|0 \x74\x2F #|0 \x74\x30 #|0 \x74\x31 #|0 \x74\x32 #|0 \x74\x33 #|0 \x74\x34 #|0 \x74\x35 #|0 \x74\x36 #|0 \x74\x37 #|0 \x74\x38 #|0 \x74\x39 #|0 \x74\x3A #|0 \x74\x3B #|0 \x74\x3C #|0 \x74\x3D #|0 \x74\x3E #|0 \x74\x3F #|0 \x74\x40 #|0 \x74\x41 #|0 \x74\x42 #|0 \x74\x43 #|0 \x74\x44 #|0 \x74\x45 #|0 \x74\x46 #|0 \x74\x47 #|0 \x74\x48 #|0 \x74\x49 #|0 \x74\x4A #|0 \x74\x4B #|0 \x74\x4C #|0 \x74\x4D #|0 \x74\x4E #|0 \x74\x4F #|0 \x74\x50 #|0 \x74\x51 #|0 \x74\x52 #|0 \x74\x53 #|0 \x74\x54 #|0 \x74\x55 #|0 \x74\x56 #|0 \x74\x57 #|0 \x74\x58 #|0 \x74\x59 #|0 \x74\x5A #|0 \x74\x5B #|0 \x74\x5C #|0 \x74\x5D #|0 \x74\x5E #|0 \x74\x5F #|0 \x74\x60 #|0 \x74\x61 #|0 \x74\x62 #|0 \x74\x63 #|0 \x74\x64 #|0 \x74\x65 #|0 \x74\x66 #|0 \x74\x67 #|0 \x74\x68 #|0 \x74\x69 #|0 \x74\x6A #|0 \x74\x6B #|0 \x74\x6C #|0 \x74\x6D #|0 \x74\x6E #|0 \x74\x6F #|0 \x74\x70 #|0 \x74\x71 #|0 \x74\x72 #|0 \x74\x73 #|0 \x74\x74 #|0 \x74\x75 #|0 \x74\x76 #|0 \x74\x77 #|0 \x74\x78 #|0 \x74\x79 #|0 \x74\x7A #|0 \x74\x7B #|0 \x74\x7C #|0 \x74\x7D #|0 \x74\x7E #|0 \x75\x21 #|0 \x75\x22 #|0 \x75\x23 #|0 \x75\x24 #|0 \x75\x25 #|0 \x75\x26 #|0 \x75\x27 #|0 \x75\x28 #|0 \x75\x29 #|0 \x75\x2A #|0 \x75\x2B #|0 \x75\x2C #|0 \x75\x2D #|0 \x75\x2E #|0 \x75\x2F #|0 \x75\x30 #|0 \x75\x31 #|0 \x75\x32 #|0 \x75\x33 #|0 \x75\x34 #|0 \x75\x35 #|0 \x75\x36 #|0 \x75\x37 #|0 \x75\x38 #|0 \x75\x39 #|0 \x75\x3A #|0 \x75\x3B #|0 \x75\x3C #|0 \x75\x3D #|0 \x75\x3E #|0 \x75\x3F #|0 \x75\x40 #|0 \x75\x41 #|0 \x75\x42 #|0 \x75\x43 #|0 \x75\x44 #|0 \x75\x45 #|0 \x75\x46 #|0 \x75\x47 #|0 \x75\x48 #|0 \x75\x49 #|0 \x75\x4A #|0 \x75\x4B #|0 \x75\x4C #|0 \x75\x4D #|0 \x75\x4E #|0 \x75\x4F #|0 \x75\x50 #|0 \x75\x51 #|0 \x75\x52 #|0 \x75\x53 #|0 \x75\x54 #|0 \x75\x55 #|0 \x75\x56 #|0 \x75\x57 #|0 \x75\x58 #|0 \x75\x59 #|0 \x75\x5A #|0 \x75\x5B #|0 \x75\x5C #|0 \x75\x5D #|0 \x75\x5E #|0 \x75\x5F #|0 \x75\x60 #|0 \x75\x61 #|0 \x75\x62 #|0 \x75\x63 #|0 \x75\x64 #|0 \x75\x65 #|0 \x75\x66 #|0 \x75\x67 #|0 \x75\x68 #|0 \x75\x69 #|0 \x75\x6A #|0 \x75\x6B #|0 \x75\x6C #|0 \x75\x6D #|0 \x75\x6E #|0 \x75\x6F #|0 \x75\x70 #|0 \x75\x71 #|0 \x75\x72 #|0 \x75\x73 #|0 \x75\x74 #|0 \x75\x75 #|0 \x75\x76 #|0 \x75\x77 #|0 \x75\x78 #|0 \x75\x79 #|0 \x75\x7A #|0 \x75\x7B #|0 \x75\x7C #|0 \x75\x7D #|0 \x75\x7E #|0 \x76\x21 #|0 \x76\x22 #|0 \x76\x23 #|0 \x76\x24 #|0 \x76\x25 #|0 \x76\x26 #|0 \x76\x27 #|0 \x76\x28 #|0 \x76\x29 #|0 \x76\x2A #|0 \x76\x2B #|0 \x76\x2C #|0 \x76\x2D #|0 \x76\x2E #|0 \x76\x2F #|0 \x76\x30 #|0 \x76\x31 #|0 \x76\x32 #|0 \x76\x33 #|0 \x76\x34 #|0 \x76\x35 #|0 \x76\x36 #|0 \x76\x37 #|0 \x76\x38 #|0 \x76\x39 #|0 \x76\x3A #|0 \x76\x3B #|0 \x76\x3C #|0 \x76\x3D #|0 \x76\x3E #|0 \x76\x3F #|0 \x76\x40 #|0 \x76\x41 #|0 \x76\x42 #|0 \x76\x43 #|0 \x76\x44 #|0 \x76\x45 #|0 \x76\x46 #|0 \x76\x47 #|0 \x76\x48 #|0 \x76\x49 #|0 \x76\x4A #|0 \x76\x4B #|0 \x76\x4C #|0 \x76\x4D #|0 \x76\x4E #|0 \x76\x4F #|0 \x76\x50 #|0 \x76\x51 #|0 \x76\x52 #|0 \x76\x53 #|0 \x76\x54 #|0 \x76\x55 #|0 \x76\x56 #|0 \x76\x57 #|0 \x76\x58 #|0 \x76\x59 #|0 \x76\x5A #|0 \x76\x5B #|0 \x76\x5C #|0 \x76\x5D #|0 \x76\x5E #|0 \x76\x5F #|0 \x76\x60 #|0 \x76\x61 #|0 \x76\x62 #|0 \x76\x63 #|0 \x76\x64 #|0 \x76\x65 #|0 \x76\x66 #|0 \x76\x67 #|0 \x76\x68 #|0 \x76\x69 #|0 \x76\x6A #|0 \x76\x6B #|0 \x76\x6C #|0 \x76\x6D #|0 \x76\x6E #|0 \x76\x6F #|0 \x76\x70 #|0 \x76\x71 #|0 \x76\x72 #|0 \x76\x73 #|0 \x76\x74 #|0 \x76\x75 #|0 \x76\x76 #|0 \x76\x77 #|0 \x76\x78 #|0 \x76\x79 #|0 \x76\x7A #|0 \x76\x7B #|0 \x76\x7C #|0 \x76\x7D #|0 \x76\x7E #|0 \x77\x21 #|0 \x77\x22 #|0 \x77\x23 #|0 \x77\x24 #|0 \x77\x25 #|0 \x77\x26 #|0 \x77\x27 #|0 \x77\x28 #|0 \x77\x29 #|0 \x77\x2A #|0 \x77\x2B #|0 \x77\x2C #|0 \x77\x2D #|0 \x77\x2E #|0 \x77\x2F #|0 \x77\x30 #|0 \x77\x31 #|0 \x77\x32 #|0 \x77\x33 #|0 \x77\x34 #|0 \x77\x35 #|0 \x77\x36 #|0 \x77\x37 #|0 \x77\x38 #|0 \x77\x39 #|0 \x77\x3A #|0 \x77\x3B #|0 \x77\x3C #|0 \x77\x3D #|0 \x77\x3E #|0 \x77\x3F #|0 \x77\x40 #|0 \x77\x41 #|0 \x77\x42 #|0 \x77\x43 #|0 \x77\x44 #|0 \x77\x45 #|0 \x77\x46 #|0 \x77\x47 #|0 \x77\x48 #|0 \x77\x49 #|0 \x77\x4A #|0 \x77\x4B #|0 \x77\x4C #|0 \x77\x4D #|0 \x77\x4E #|0 \x77\x4F #|0 \x77\x50 #|0 \x77\x51 #|0 \x77\x52 #|0 \x77\x53 #|0 \x77\x54 #|0 \x77\x55 #|0 \x77\x56 #|0 \x77\x57 #|0 \x77\x58 #|0 \x77\x59 #|0 \x77\x5A #|0 \x77\x5B #|0 \x77\x5C #|0 \x77\x5D #|0 \x77\x5E #|0 \x77\x5F #|0 \x77\x60 #|0 \x77\x61 #|0 \x77\x62 #|0 \x77\x63 #|0 \x77\x64 #|0 \x77\x65 #|0 \x77\x66 #|0 \x77\x67 #|0 \x77\x68 #|0 \x77\x69 #|0 \x77\x6A #|0 \x77\x6B #|0 \x77\x6C #|0 \x77\x6D #|0 \x77\x6E #|0 \x77\x6F #|0 \x77\x70 #|0 \x77\x71 #|0 \x77\x72 #|0 \x77\x73 #|0 \x77\x74 #|0 \x77\x75 #|0 \x77\x76 #|0 \x77\x77 #|0 \x77\x78 #|0 \x77\x79 #|0 \x77\x7A #|0 \x77\x7B #|0 \x77\x7C #|0 \x77\x7D #|0 \x77\x7E #|0 # END CHARMAP # #________________________________________________________________________ suite3270-4.1/Common/glue.c000066400000000000000000001144321413735575200153740ustar00rootroot00000000000000/* * Copyright (c) 1993-2020 Paul Mattes. * Copyright (c) 1990, Jeff Sparkes. * Copyright (c) 1989, Georgia Tech Research Corporation (GTRC), Atlanta, GA * 30332. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the names of Paul Mattes, Jeff Sparkes, GTRC nor the names of * their contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES, JEFF SPARKES AND GTRC "AS IS" AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL PAUL MATTES, JEFF SPARKES OR GTRC BE * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. */ /* * glue.c * Common initialization logic, command-line parsing, reading * resources, etc. */ #include "globals.h" #if !defined(_WIN32) /*[*/ #include #endif /*]*/ #include #include #include "appres.h" #include "3270ds.h" #include "resources.h" #include "actions.h" #include "boolstr.h" #include "codepage.h" #include "popups.h" /* must come before child_popups.h */ #include "child_popups.h" #include "ctlrc.h" #include "glue.h" #include "glue_gui.h" #include "host.h" #include "kybd.h" #include "nvt.h" #include "opts.h" #include "product.h" #include "readres.h" #include "screen.h" #include "selectc.h" #include "sio.h" #include "task.h" #include "telnet.h" #include "toggles.h" #include "trace.h" #include "unicodec.h" #include "utils.h" #include "xio.h" #if defined(_WIN32) /*[*/ # include "winvers.h" #endif /*]*/ #define LAST_ARG "--" /* Typedefs */ typedef const char *ccp_t; /* Statics */ static void no_minus(const char *arg); #if defined(LOCAL_PROCESS) /*[*/ static void parse_local_process(int *argcp, const char **argv, const char **cmds); #endif /*]*/ static void set_appres_defaults(void); static void parse_options(int *argcp, const char **argv, bool warn); static void parse_set_clear(int *argcp, const char **argv, bool warn); static int parse_model_number(char *m); static void xparse_xrm(const char *arg, const char *where, bool warn); static merge_profile_t *merge_profilep = NULL; static char *session_suffix[4]; static size_t session_suffix_len[4]; static int n_session_suffixes; static opt_t *sorted_help = NULL; unsigned sorted_help_count = 0; /* Globals */ const char *programname; char full_model_name[13] = "IBM-"; char *model_name = &full_model_name[4]; AppRes appres; bool exiting = false; char *command_string = NULL; char *profile_name = NULL; char *profile_path = NULL; /* Register a profile merge function. */ void register_merge_profile(merge_profile_t *m) { merge_profilep = m; } /* Add a session suffix to the list. */ static void add_session_suffix(char *suffix) { session_suffix[n_session_suffixes] = suffix; session_suffix_len[n_session_suffixes++] = strlen(suffix); } /* Check a name for ending in a session suffix. */ static int check_session_suffix(const char *name) { int i; size_t sl = strlen(name); for (i = 0; i < n_session_suffixes; i++) { if (sl > session_suffix_len[i] && !strcasecmp(name + sl - session_suffix_len[i], session_suffix[i])) { return i; } } return -1; } /* Parse the command line and read in any session file. */ int parse_command_line(int argc, const char **argv, const char **cl_hostname) { size_t cl; int i; int hn_argc; size_t xcmd_len = 0; char *xcmd; int xargc; const char **xargv; bool read_session_or_profile = false; int suffix_match = -1; /* Figure out who we are */ #if defined(_WIN32) /*[*/ programname = strrchr(argv[0], '\\'); if (programname == NULL) { /* '/' is the alternate directory separator. */ programname = strrchr(argv[0], '/'); } #else /*][*/ programname = strrchr(argv[0], '/'); #endif /*]*/ if (programname != NULL) { char *path = getenv("PATH"); /* Add our path to $PATH so we can find x3270if. */ putenv(xs_buffer("PATH=%.*s%s%s", (int)(programname - argv[0]), argv[0], path? ":": "", path? path: "")); ++programname; } else { programname = argv[0]; } /* Save the command string for tracing purposes. */ cl = strlen(programname); for (i = 0; i < argc; i++) { cl += 1 + strlen(argv[i]); } cl++; command_string = Malloc(cl); strcpy(command_string, programname); for (i = 0; i < argc; i++) { strcat(strcat(command_string, " "), argv[i]); } /* * Save the command-line options so they can be reapplied after * the session file or profile has been read in. */ xcmd_len = 0; for (i = 0; i < argc; i++) { xcmd_len += strlen(argv[i]) + 1; } xcmd = Malloc(xcmd_len + 1); xargv = (const char **)Malloc((argc + 1) * sizeof(char *)); xcmd_len = 0; for (i = 0; i < argc; i++) { xargv[i] = xcmd + xcmd_len; strcpy(xcmd + xcmd_len, argv[i]); xcmd_len += strlen(argv[i]) + 1; } xargv[i] = NULL; *(xcmd + xcmd_len) = '\0'; xargc = argc; #if defined(LOCAL_PROCESS) /*[*/ /* Pick out the -e option. */ parse_local_process(&argc, argv, cl_hostname); #endif /*]*/ /* Set the defaults. */ set_appres_defaults(); /* Parse command-line options. */ parse_options(&argc, argv, true); /* Pick out the remaining -set and -clear toggle options. */ parse_set_clear(&argc, argv, true); /* Now figure out if there's a hostname. */ for (hn_argc = 1; hn_argc < argc; hn_argc++) { if (!strcmp(argv[hn_argc], LAST_ARG)) { break; } } /* Verify command-line syntax. */ switch (hn_argc) { case 1: break; case 2: no_minus(argv[1]); *cl_hostname = argv[1]; break; case 3: no_minus(argv[1]); no_minus(argv[2]); *cl_hostname = xs_buffer("%s:%s", argv[1], argv[2]); break; default: usage("Too many command-line arguments"); break; } /* Delete the host name and any "--". */ if (argv[hn_argc] != NULL && !strcmp(argv[hn_argc], LAST_ARG)) { hn_argc++; } if (hn_argc > 1) { for (i = 1; i < argc - hn_argc + 2; i++) { argv[i] = argv[i + hn_argc - 1]; } } /* Merge in the session. */ if (n_session_suffixes == 0) { add_session_suffix(xs_buffer(".%s", app)); #if defined(_WIN32) /*[*/ add_session_suffix(xs_buffer(".%s", app + 1)); add_session_suffix(xs_buffer(".%.3s", app)); #endif /*]*/ if (appres.alias != NULL) { add_session_suffix(xs_buffer(".%s", appres.alias)); } } if (*cl_hostname != NULL && (suffix_match = check_session_suffix(*cl_hostname)) >= 0) { const char *pname; if (!read_resource_file(*cl_hostname, true)) { x3270_exit(1); } read_session_or_profile = true; pname = strrchr(*cl_hostname, '\\'); if (pname != NULL) { pname++; } else { pname = *cl_hostname; } profile_name = NewString(pname); Replace(profile_path, NewString(*cl_hostname)); profile_name[strlen(profile_name) - session_suffix_len[suffix_match]] = '\0'; *cl_hostname = appres.hostname; /* might be NULL */ } else { /* There is no session file. */ /* For c3270 only, read in the c3270 profile (~/.c3270pro). */ if (merge_profilep != NULL) { read_session_or_profile = (*merge_profilep)(); } /* * If there was a hostname resource defined somewhere, but not * as a positional command-line argument, pretend it was one, * so we will connect to it at start-up. */ if (*cl_hostname == NULL && appres.hostname != NULL) { *cl_hostname = appres.hostname; } } /* * Now parse the command-line arguments again, so they take * precedence over the session file or profile. */ if (read_session_or_profile) { parse_options(&xargc, xargv, false); parse_set_clear(&xargc, xargv, false); } /* Can't free xcmd, parts of it are still in use. */ Free((char *)xargv); /* * All right, we have all of the resources defined. * Sort out the contradictory and implicit settings. */ if (*cl_hostname == NULL) { appres.once = false; } if (!appres.debug_tracing) { /* debug_tracing was explicitly cleared */ set_toggle(TRACING, false); } #if defined(_WIN32) /*[*/ if (appres.utf8) { /* utf8 overrides local_cp */ appres.local_cp = CP_UTF8; } #endif /*]*/ /* * Handle the deprecated 'charset' resource. * It's an alias for 'codePage', but it doesn't override it. */ if (appres.codepage == NULL) { appres.codepage = appres.charset; } if (appres.codepage == NULL) { appres.codepage = NewString("bracket"); } appres.termname = clean_termname(appres.termname); return argc; } /* * Initialize the model number and oversize. This needs to happen before the * screen is initialized. */ void model_init(void) { int model_number; int ovc, ovr; /* * Sort out model and color modes, based on the model number resource. */ model_number = parse_model_number(appres.model); if (model_number < 0) { popup_an_error("Invalid model number: %s", appres.model); model_number = 0; } if (!model_number) { model_number = 4; } if (appres.interactive.mono) { mode.m3279 = false; } if (!mode.extended) { appres.oversize = NULL; } ovc = 0; ovr = 0; if (mode.extended && appres.oversize != NULL) { if (product_auto_oversize() && !strcasecmp(appres.oversize, "auto")) { ovc = -1; ovr = -1; } else { int x_ovc, x_ovr; char junk; if (sscanf(appres.oversize, "%dx%d%c", &x_ovc, &x_ovr, &junk) == 2) { ovc = x_ovc; ovr = x_ovr; } else { xs_warning("Invalid %s value '%s'", ResOversize, appres.oversize); } } } set_rows_cols(model_number, ovc, ovr); net_set_default_termtype(); } static void no_minus(const char *arg) { if (arg[0] == '-') { usage(xs_buffer("Unknown or incomplete option: %s", arg)); } } #if defined(LOCAL_PROCESS) /*[*/ /* * Pick out the -e option. */ static void parse_local_process(int *argcp, const char **argv, const char **cmds) { int i, j; int e_len = -1; char *cmds_buf = NULL; for (i = 1; i < *argcp; i++) { if (strcmp(argv[i], OptLocalProcess)) { continue; } /* Matched. Copy 'em. */ e_len = strlen(OptLocalProcess) + 1; for (j = i+1; j < *argcp; j++) { e_len += 1 + strlen(argv[j]); } e_len++; cmds_buf = Malloc(e_len); strcpy(cmds_buf, OptLocalProcess); for (j = i+1; j < *argcp; j++) { strcat(strcat(cmds_buf, " "), argv[j]); } /* Stamp out the remaining args. */ *argcp = i; argv[i] = NULL; break; } *cmds = cmds_buf; } #endif /*]*/ static void set_appres_defaults(void) { /* Set the defaults. */ mode.extended = true; mode.m3279 = true; appres.debug_tracing = true; appres.conf_dir = LIBX3270DIR; appres.model = NewString("3279-4-E"); appres.hostsfile = NULL; appres.port = "23"; /* Do this when we finally deprecate 'charset'. */ /* appres.codepage = NewString("bracket"); */ appres.termname = NULL; appres.macros = NULL; #if !defined(_WIN32) /*[*/ appres.trace_dir = NewString("/tmp"); #endif /*]*/ appres.oversize = NULL; appres.bind_limit = true; appres.new_environ = true; appres.max_recent = 5; appres.ft.dft_buffer_size = DFT_BUF; appres.linemode.icrnl = true; appres.linemode.onlcr = true; appres.linemode.erase = NewString("^H"); appres.linemode.kill = NewString("^U"); appres.linemode.werase = NewString("^W"); appres.linemode.rprnt = NewString("^R"); appres.linemode.lnext = NewString("^V"); appres.linemode.intr = NewString("^C"); appres.linemode.quit = NewString("^\\"); appres.linemode.eof = NewString("^D"); appres.unlock_delay = false; appres.unlock_delay_ms = 350; set_toggle(AID_WAIT, true); set_toggle(TYPEAHEAD, true); set_toggle(BLANK_FILL, true); set_toggle(OVERLAY_PASTE, true); #if defined(_WIN32) /*[*/ appres.local_cp = GetACP(); #endif /*]*/ appres.tls.verify_host_cert = true; appres.tls.starttls = true; #if defined(_WIN32) /*[*/ appres.interactive.print_dialog = product_has_display(); #endif /*]*/ appres.interactive.no_telnet_input_mode = NewString("line"); /* Let the product set the ones it wants. */ product_set_appres_defaults(); } #define PR3287_NAME "pr3287" static opt_t base_opts[] = { { OptAlias, OPT_STRING, false, ResAlias, aoffset(alias), "", "Define application alias for -xrm and session file suffix" }, { OptCharset, OPT_STRING, false, ResCodePage, aoffset(codepage), NULL, NULL }, { OptClear, OPT_SKIP2, false, NULL, NULL, "", "Turn on " }, { OptCodePage, OPT_STRING, false, ResCodePage, aoffset(codepage), "", "Use host ECBDIC code page "}, { OptConnectTimeout, OPT_INT,false,ResConnectTimeout,aoffset(connect_timeout), "", "Timeout for host connect requests" }, { OptDevName, OPT_STRING, false, ResDevName, aoffset(devname), "", "Device name (workstation ID) for RFC 4777" }, #if defined(LOCAL_PROCESS) /*[*/ { OptLocalProcess,OPT_SKIP2,false, NULL, NULL, " [...]", "Run instead of making TELNET connection" }, #endif /*]*/ { OptHostsFile,OPT_STRING, false, ResHostsFile, aoffset(hostsfile), "", "Use as the ibm_hosts file" }, { OptHttpd, OPT_STRING, false, ResHttpd, aoffset(httpd_port), "[:]", "TCP port to listen on for http requests" }, #if defined(_WIN32) /*[*/ { OptLocalCp, OPT_INT, false, ResLocalCp, aoffset(local_cp), "", "Use instead of ANSI codepage for local I/O" }, #endif /*]*/ { OptLoginMacro, OPT_STRING, false, ResLoginMacro, aoffset(login_macro), "Action([arg[,arg...]]) [...]" }, { OptMinVersion,OPT_STRING, false, ResMinVersion,aoffset(min_version), "", "Fail unless at this version or greater" }, { OptModel, OPT_STRING, false, ResModel, aoffset(model), "[327{8,9}-]", "Emulate a 3278 or 3279 model " }, { OptNvtMode, OPT_BOOLEAN, true, ResNvtMode, aoffset(nvt_mode), NULL, "Begin in NVT mode" }, { OptOversize, OPT_STRING, false, ResOversize, aoffset(oversize), "x", "Larger screen dimensions" }, { OptPort, OPT_STRING, false, ResPort, aoffset(port), "", "Default TELNET port" }, { OptProxy, OPT_STRING, false, ResProxy, aoffset(proxy), ":[:]", "Proxy type and server" }, { OptScriptPort,OPT_STRING, false, ResScriptPort, aoffset(script_port), "[:]", "TCP port to listen on for script commands" }, { OptScriptPortOnce,OPT_BOOLEAN,true,ResScriptPortOnce,aoffset(script_port_once), NULL, "Accept one script connection, then exit" }, { OptSet, OPT_SKIP2, false, NULL, NULL, "", "Turn on " }, { OptSocket, OPT_BOOLEAN, true, ResSocket, aoffset(socket), NULL, "Create socket for script control" }, { OptTermName, OPT_STRING, false, ResTermName, aoffset(termname), "", "Send as TELNET terminal name" }, { OptTrace, OPT_BOOLEAN, true, ResTrace, toggle_aoffset(TRACING), NULL, "Enable tracing" }, { OptTraceFile,OPT_STRING, false, ResTraceFile, aoffset(trace_file), "", "Write traces to " }, { OptTraceFileSize,OPT_STRING,false,ResTraceFileSize,aoffset(trace_file_size), "[KM]", "Limit trace file to bytes" }, { OptUser, OPT_STRING, false, ResUser, aoffset(user), "", "User name for RFC 4777" }, { OptV, OPT_V, false, NULL, NULL, NULL, "Display build options and character sets" }, { OptVersion, OPT_V, false, NULL, NULL, NULL, "Display build options and character sets" }, { OptHelp1, OPT_HELP, false, NULL, NULL, NULL, "Display command-line help" }, { OptHelp2, OPT_HELP, false, NULL, NULL, NULL, "Display command-line help" }, #if defined(_WIN32) /*[*/ { OptHelp3, OPT_HELP, false, NULL, NULL, NULL, "Display command-line help" }, #endif /*]*/ { "-xrm", OPT_XRM, false, NULL, NULL, "'*.: '", "Set to " }, { LAST_ARG, OPT_DONE, false, NULL, NULL, NULL, "Terminate argument list" } }; typedef struct optlist { struct optlist *next; opt_t *opts; unsigned count; } optlist_t; static optlist_t first_optlist = { NULL, base_opts, array_count(base_opts) }; static optlist_t *optlist = &first_optlist; static optlist_t **last_optlist = &first_optlist.next; /* * Register an additional set of options. */ void register_opts(opt_t *opts, unsigned num_opts) { optlist_t *o; o = Malloc(sizeof(optlist_t)); o->next = NULL; o->opts = opts; o->count = num_opts; *last_optlist = o; last_optlist = &o->next; } /* * Pick out command-line options and set up appres. */ static void parse_options(int *argcp, const char **argv, bool warn) { int i; unsigned j; int argc_out = 0; const char **argv_out = (const char **) Malloc((*argcp + 1) * sizeof(char *)); optlist_t *o; opt_t *opts; /* Parse the command-line options. */ argv_out[argc_out++] = argv[0]; for (i = 1; i < *argcp; i++) { bool found = false; for (o = optlist; o != NULL && !found; o = o->next) { opts = o->opts; for (j = 0; j < o->count; j++) { if (!strcmp(argv[i], opts[j].name)) { found = true; break; } } } if (!found) { argv_out[argc_out++] = argv[i]; continue; } switch (opts[j].type) { case OPT_BOOLEAN: *(bool *)opts[j].aoff = opts[j].flag; if (opts[j].res_name != NULL) { add_resource(NewString(opts[j].name), opts[j].flag? "true": "false"); } break; case OPT_STRING: if (i == *argcp - 1) { /* missing arg */ popup_an_error("Missing value for '%s'", argv[i]); continue; } *(const char **)opts[j].aoff = NewString(argv[++i]); if (opts[j].res_name != NULL) { add_resource(NewString(opts[j].res_name), NewString(argv[i])); } break; case OPT_XRM: if (i == *argcp - 1) { /* missing arg */ popup_an_error("Missing value for '%s'", argv[i]); continue; } xparse_xrm(argv[++i], "-xrm", warn); break; case OPT_SKIP2: argv_out[argc_out++] = argv[i++]; if (i < *argcp) { argv_out[argc_out++] = argv[i]; } break; case OPT_NOP: break; case OPT_INT: if (i == *argcp - 1) { /* missing arg */ popup_an_error("Missing value for '%s'", argv[i]); continue; } *(int *)opts[j].aoff = atoi(argv[++i]); if (opts[j].res_name != NULL) { add_resource(NewString(opts[j].name), NewString(argv[i])); } break; case OPT_V: dump_version(); break; case OPT_HELP: cmdline_help(false); exit(0); break; case OPT_DONE: while (i < *argcp) { argv_out[argc_out++] = argv[i++]; } break; } } *argcp = argc_out; argv_out[argc_out] = NULL; memcpy((char *)argv, (char *)argv_out, (argc_out + 1) * sizeof(char *)); Free((char *)argv_out); } /* Comparison function for help qsort. */ static int help_cmp(const void *p1, const void *p2) { const opt_t *s1 = (const opt_t *)p1; const opt_t *s2 = (const opt_t *)p2; const char *n1 = s1->name; const char *n2 = s2->name; /* Test for equality first. */ if (!strcmp(n1, n2)) { return 0; } /* '--' is always last. */ if (!strcmp(n1, "--")) { return 1; } if (!strcmp(n2, "--")) { return -1; } /* Skip leading dashes. */ while (*n1 == '-') { n1++; } while (*n2 == '-') { n2++; } /* Do case-instensitive string compare. */ return strcasecmp(n1, n2); } /** * Sort the list of command-line options, for display purposes. */ static void sort_help(void) { optlist_t *o; unsigned j; int oix = 0; if (sorted_help != NULL) { return; } /* Count how many slots we need. */ for (o = optlist; o != NULL; o = o->next) { sorted_help_count += o->count; } /* Fill in the array of elements. */ sorted_help = (opt_t *)Malloc(sorted_help_count * sizeof(opt_t)); for (o = optlist; o != NULL; o = o->next) { for (j = 0; j < o->count; j++) { if (o->opts[j].help_text != NULL) { sorted_help[oix++] = o->opts[j]; } else { sorted_help_count--; } } } /* Sort it. */ qsort((void *)sorted_help, sorted_help_count, sizeof(opt_t), help_cmp); } /* Disply command-line help. */ void cmdline_help(bool as_action) { unsigned i; if (!as_action) { fprintf(stderr, "Usage: " "%s [options] [[prefix:][LUname@]hostname[:port]]\n", programname); fprintf(stderr, "Options:\n"); } sort_help(); for (i = 0; i < sorted_help_count; i++) { char *h = sorted_help[i].help_opts; char *ht; char *hx = NULL; char *star; if (sorted_help[i].type == OPT_XRM && h != NULL && (star = strchr(h, '*')) != NULL) { ht = hx = xs_buffer("%.*s%s%s", (int)(star - h), h, app, star + 1); } else { ht = h; } if (as_action) { action_output(" %s%s%s", sorted_help[i].name, ht? " ": "", ht? ht: ""); action_output(" %s", sorted_help[i].help_text); } else { fprintf(stderr, " %s%s%s\n %s\n", sorted_help[i].name, ht? " ": "", ht? ht: "", sorted_help[i].help_text); } if (hx != NULL) { Free(hx); } } } /* Comparison function for toggle name qsort. */ static int name_cmp(const void *p1, const void *p2) { const char *s1 = *(char *const *)p1; const char *s2 = *(char *const *)p2; return strcmp(s1, s2); } /* * Pick out -set and -clear toggle options. */ static void parse_set_clear(int *argcp, const char **argv, bool warn) { int i, j; int argc_out = 0; const char **argv_out = (const char **) Malloc((*argcp + 1) * sizeof(char *)); argv_out[argc_out++] = argv[0]; for (i = 1; i < *argcp; i++) { bool is_set = false; const char *eq = NULL; size_t nlen; if (!strcmp(argv[i], OptSet)) { is_set = true; } else if (strcmp(argv[i], OptClear)) { argv_out[argc_out++] = argv[i]; continue; } if (i == *argcp - 1) { /* missing arg */ continue; } /* Delete the argument. */ i++; if (argv[i][0] != '=' && (eq = strchr(argv[i], '=')) != NULL) { /* -set foo=bar */ if (!is_set) { fprintf(stderr, "Error: " OptClear " parameter cannot include a value\n"); exit(1); } nlen = eq - argv[i]; } else { nlen = strlen(argv[i]); } for (j = 0; toggle_names[j].name != NULL; j++) { if (!toggle_supported(toggle_names[j].index)) { continue; } if (!strcasecmp(argv[i], toggle_names[j].name) && toggle_names[j].name[nlen] == '\0') { bool value; if (eq == NULL) { value = is_set; } else { const char *err = boolstr(eq + 1, &value); if (err != NULL) { fprintf(stderr, "Error: " OptSet " %s: %s\n", argv[i], err); exit(1); } } appres.toggle[toggle_names[j].index] = value; break; } } if (toggle_names[j].name == NULL) { bool bool_only = !is_set || !eq; int xt = init_extended_toggle(argv[i], nlen, bool_only, eq? eq + 1: (is_set? ResTrue: ResFalse), NULL); if (xt < 0) { fprintf(stderr, "Error: " OptSet " %s: invalid value\n", argv[i]); exit(1); } if (xt == 0) { ccp_t *tn; int ntn = 0; int nx; char **nxnames; nxnames = extended_toggle_names(&nx, bool_only); tn = (ccp_t *)Calloc(N_TOGGLES + nx, sizeof(ccp_t)); for (j = 0; toggle_names[j].name != NULL; j++) { if (!toggle_supported(toggle_names[j].index)) { continue; } if (!toggle_names[j].is_alias) { tn[ntn++] = toggle_names[j].name; } } memcpy((void *)(tn + ntn), nxnames, nx * sizeof(ccp_t)); ntn += nx; qsort((void *)tn, ntn, sizeof(const char *), name_cmp); fprintf(stderr, "Unknown %stoggle '%.*s'. Toggle names are:\n", bool_only? "Boolean ": "", (int)nlen, argv[i]); for (j = 0; j < ntn; j++) { fprintf(stderr, " %s", tn[j]); } fprintf(stderr, "\n"); Free((void *)tn); exit(1); } } } *argcp = argc_out; argv_out[argc_out] = NULL; memcpy((char *)argv, (char *)argv_out, (argc_out + 1) * sizeof(char *)); Free((char *)argv_out); } /* * Parse the model number. * Returns -1 (error), 0 (default), or the specified number. */ static int parse_model_number(char *m) { size_t sl; int n; sl = strlen(m); /* An empty model number is no good. */ if (!sl) { return 0; } if (sl > 1) { /* * If it's longer than one character, it needs to start with * '327[89]', and it sets the m3279 resource. */ if (!strncmp(m, "3278", 4)) { mode.m3279 = false; } else if (!strncmp(m, "3279", 4)) { mode.m3279 = true; } else { return -1; } m += 4; sl -= 4; /* Check more syntax. -E is allowed, but ignored. */ switch (m[0]) { case '\0': /* Use default model number. */ return 0; case '-': /* Model number specified. */ m++; sl--; break; default: return -1; } switch (sl) { case 1: /* n */ break; case 3: /* n-E */ if (strcasecmp(m + 1, "-E")) { return -1; } break; default: return -1; } } /* Check the numeric model number. */ n = atoi(m); if (n >= 2 && n <= 5) { return n; } else { return -1; } } /* * Parse '-xrm' options. * Understands only: * {c,s,tcl}3270.: value * *: value * Class names need not apply. */ static res_t base_resources[] = { { ResAlias, aoffset(alias), XRM_STRING }, { ResBindLimit, aoffset(bind_limit), XRM_BOOLEAN }, { ResBindUnlock, aoffset(bind_unlock), XRM_BOOLEAN }, { ResBsdTm, aoffset(bsd_tm), XRM_BOOLEAN }, { ResCharset, aoffset(charset), XRM_STRING }, { ResCodePage, aoffset(codepage), XRM_STRING }, { ResConfDir, aoffset(conf_dir), XRM_STRING }, { ResConnectTimeout,aoffset(connect_timeout),XRM_INT }, { ResCrosshairColor,aoffset(interactive.crosshair_color), XRM_STRING }, { ResConsole,aoffset(interactive.console), XRM_STRING }, { ResDbcsCgcsgid, aoffset(dbcs_cgcsgid), XRM_STRING }, { ResDevName, aoffset(devname), XRM_STRING }, { ResEof, aoffset(linemode.eof), XRM_STRING }, { ResErase, aoffset(linemode.erase), XRM_STRING }, { ResFtAllocation, aoffset(ft.allocation), XRM_STRING }, { ResFtAvblock, aoffset(ft.avblock), XRM_INT }, { ResFtBlksize, aoffset(ft.blksize), XRM_INT }, { ResFtBufferSize,aoffset(ft.dft_buffer_size),XRM_INT }, #if defined(_WIN32) /*[*/ { ResFtWindowsCodePage,aoffset(ft.codepage),XRM_INT }, #endif /*]*/ { ResFtCr, aoffset(ft.cr), XRM_STRING }, { ResFtDirection, aoffset(ft.direction), XRM_STRING }, { ResFtExist, aoffset(ft.exist), XRM_STRING }, { ResFtHost, aoffset(ft.host), XRM_STRING }, { ResFtHostFile, aoffset(ft.host_file), XRM_STRING }, { ResFtLocalFile, aoffset(ft.local_file), XRM_STRING }, { ResFtLrecl, aoffset(ft.lrecl), XRM_INT }, { ResFtMode, aoffset(ft.mode), XRM_STRING }, { ResFtPrimarySpace,aoffset(ft.primary_space),XRM_INT }, { ResFtRecfm, aoffset(ft.recfm), XRM_STRING }, { ResFtRemap, aoffset(ft.remap), XRM_STRING }, { ResFtSecondarySpace,aoffset(ft.secondary_space),XRM_INT }, { ResHostname, aoffset(hostname), XRM_STRING }, { ResHostsFile, aoffset(hostsfile), XRM_STRING }, { ResHttpd, aoffset(httpd_port), XRM_STRING }, { ResIcrnl, aoffset(linemode.icrnl), XRM_BOOLEAN }, { ResInlcr, aoffset(linemode.inlcr), XRM_BOOLEAN }, { ResOnlcr, aoffset(linemode.onlcr), XRM_BOOLEAN }, { ResIntr, aoffset(linemode.intr), XRM_STRING }, { ResKill, aoffset(linemode.kill), XRM_STRING }, { ResLnext, aoffset(linemode.lnext), XRM_STRING }, #if defined(_WIN32) /*[*/ { ResLocalCp, aoffset(local_cp), XRM_INT }, #endif /*]*/ { ResLoginMacro,aoffset(login_macro), XRM_STRING }, { ResMacros, aoffset(macros), XRM_STRING }, { ResModel, aoffset(model), XRM_STRING }, { ResModifiedSel, aoffset(modified_sel), XRM_BOOLEAN }, { ResNewEnviron,aoffset(new_environ), XRM_BOOLEAN }, { ResNopSeconds,aoffset(nop_seconds), XRM_INT }, { ResNoTelnetInputMode,aoffset(interactive.no_telnet_input_mode), XRM_STRING }, { ResNumericLock, aoffset(numeric_lock), XRM_BOOLEAN }, { ResOerrLock, aoffset(oerr_lock), XRM_BOOLEAN }, { ResOversize, aoffset(oversize), XRM_STRING }, { ResPort, aoffset(port), XRM_STRING }, #if defined(_WIN32) /*[*/ { ResPrintDialog, aoffset(interactive.print_dialog), XRM_BOOLEAN }, #endif /*]*/ { ResProxy, aoffset(proxy), XRM_STRING }, { ResQrBgColor, aoffset(qr_bg_color), XRM_BOOLEAN }, { ResQuit, aoffset(linemode.quit), XRM_STRING }, { ResRprnt, aoffset(linemode.rprnt), XRM_STRING }, { ResScreenTraceFile,aoffset(screentrace.file),XRM_STRING }, { ResScreenTraceTarget,aoffset(screentrace.target),XRM_STRING }, { ResScreenTraceType,aoffset(screentrace.type),XRM_STRING }, { ResSecure, aoffset(secure), XRM_BOOLEAN }, { ResSbcsCgcsgid, aoffset(sbcs_cgcsgid), XRM_STRING }, { ResScriptPort,aoffset(script_port), XRM_STRING }, { ResScriptPortOnce,aoffset(script_port_once), XRM_BOOLEAN }, { ResSuppressActions,aoffset(suppress_actions),XRM_STRING }, { ResTermName, aoffset(termname), XRM_STRING }, { ResTraceDir, aoffset(trace_dir), XRM_STRING }, { ResTraceFile, aoffset(trace_file), XRM_STRING }, { ResTraceFileSize,aoffset(trace_file_size), XRM_STRING }, { ResTraceMonitor,aoffset(trace_monitor), XRM_BOOLEAN }, { ResUnlockDelay,aoffset(unlock_delay), XRM_BOOLEAN }, { ResUnlockDelayMs,aoffset(unlock_delay_ms), XRM_INT }, { ResWerase, aoffset(linemode.werase),XRM_STRING } }; typedef struct reslist { struct reslist *next; res_t *resources; unsigned count; } reslist_t; static reslist_t first_reslist = { NULL, base_resources, array_count(base_resources) }; static reslist_t *reslist = &first_reslist; static reslist_t **last_reslist = &first_reslist.next; /* * Register an additional set of resources. */ void register_resources(res_t *res, unsigned num_res) { reslist_t *r; r = Malloc(sizeof(reslist_t)); r->next = NULL; r->resources = res; r->count = num_res; *last_reslist = r; last_reslist = &r->next; } /* * Compare two strings, allowing the second to differ by uppercasing the * first character of the second. */ static int strncapcmp(const char *known, const char *unknown, size_t unk_len) { if (unk_len != strlen(known)) { return -1; } if (!strncmp(known, unknown, unk_len)) { return 0; } if (unk_len > 1 && unknown[0] == toupper((unsigned char)known[0]) && !strncmp(known + 1, unknown + 1, unk_len - 1)) { return 0; } return -1; } typedef struct xreslist { struct xreslist *next; xres_t *xresources; unsigned count; } xreslist_t; static xreslist_t *xreslist = NULL; static xreslist_t **last_xreslist = &xreslist; void register_xresources(xres_t *xres, unsigned num_xres) { xreslist_t *x; x = Malloc(sizeof(xreslist_t)); x->next = NULL; x->xresources = xres; x->count = num_xres; *last_xreslist = x; last_xreslist = &x->next; } struct host_color host_color[] = { { "NeutralBlack", HOST_COLOR_NEUTRAL_BLACK }, { "Blue", HOST_COLOR_BLUE }, { "Red", HOST_COLOR_RED }, { "Pink", HOST_COLOR_PINK }, { "Green", HOST_COLOR_GREEN }, { "Turquoise", HOST_COLOR_TURQUOISE }, { "Yellow", HOST_COLOR_YELLOW }, { "NeutralWhite", HOST_COLOR_NEUTRAL_WHITE }, { "Black", HOST_COLOR_BLACK }, { "DeepBlue", HOST_COLOR_DEEP_BLUE }, { "Orange", HOST_COLOR_ORANGE }, { "Purple", HOST_COLOR_PURPLE }, { "PaleGreen", HOST_COLOR_PALE_GREEN }, { "PaleTurquoise", HOST_COLOR_PALE_TURQUOISE }, { "Grey", HOST_COLOR_GREY }, { "Gray", HOST_COLOR_GREY }, /* alias */ { "White", HOST_COLOR_WHITE }, { NULL, 0 } }; /* * Validate a resource that is fetched explicitly, rather than via appres. */ static int valid_explicit(const char *resname, size_t len) { xreslist_t *x; unsigned i; int j; for (x = xreslist; x != NULL; x = x->next) { for (i = 0; i < x->count; i++) { size_t sl = strlen(x->xresources[i].name); switch (x->xresources[i].type) { case V_FLAT: /* Exact match. */ if (len == sl && !strncmp(x->xresources[i].name, resname, sl)) { return 0; } break; case V_WILD: /* xxx.* match. */ if (len > sl + 1 && resname[sl] == '.' && !strncmp(x->xresources[i].name, resname, sl)) { return 0; } break; case V_COLOR: /* xxx or xxx match. */ for (j = 0; host_color[j].name != NULL; j++) { char *xbuf; xbuf = xs_buffer("%s%s", x->xresources[i].name, host_color[j].name); if (strlen(xbuf) == len && !strncmp(xbuf, resname, len)) { Free(xbuf); return 0; } Free(xbuf); xbuf = xs_buffer("%s%d", x->xresources[i].name, host_color[j].index); if (strlen(xbuf) == len && !strncmp(xbuf, resname, len)) { Free(xbuf); return 0; } Free(xbuf); } break; } } } return -1; } static void xparse_xrm(const char *arg, const char *where, bool warn) { const char *name; size_t rnlen; const char *s; unsigned i; char *t; void *address = NULL; enum resource_type type = XRM_STRING; bool quoted; char c; reslist_t *r; char *hide; bool arbitrary = false; const char *errmsg; /* Validate and split. */ if (validate_and_split_resource(where, arg, &name, &rnlen, &s) < 0) { return; } /* Look up the name. */ for (r = reslist; r != NULL; r = r->next) { bool found = false; for (i = 0; i < r->count && !found; i++) { if (!strncapcmp(r->resources[i].name, name, rnlen)) { address = r->resources[i].address; type = r->resources[i].type; found = true; break; } } } if (address == NULL) { for (i = 0; toggle_names[i].name != NULL; i++) { if (!toggle_supported(toggle_names[i].index)) { continue; } if (!strncapcmp(toggle_names[i].name, name, rnlen)) { address = &appres.toggle[toggle_names[i].index]; type = XRM_BOOLEAN; break; } } } if (address == NULL && valid_explicit(name, rnlen) == 0) { /* Handle resources that are accessed only via get_resource(). */ address = &hide; type = XRM_STRING; arbitrary = true; } if (address == NULL) { if (warn) { xs_warning("%s: Unknown resource name: %.*s", where, (int)rnlen, name); } return; } switch (type) { case XRM_BOOLEAN: if ((errmsg = boolstr(s, (bool *)address)) != NULL) { if (warn) { xs_warning("%s %s", where, errmsg); } *(bool *)address = false; } break; case XRM_STRING: t = Malloc(strlen(s) + 1); *(char **)address = t; quoted = false; #if defined(_WIN32) /*[*/ /* * Ugly hack to allow unquoted UNC-path printer names from older * versions of the Session Wizard to continue to work, even though the * rules now require quoted backslashes in resource values. */ if (!strncapcmp(ResPrinterName, name, rnlen) && s[0] == '\\' && s[1] == '\\' && s[2] != '\\' && strchr(s + 2, '\\') != NULL) { strcpy(t, s); break; } #endif /*]*/ while ((c = *s++) != '\0') { if (quoted) { switch (c) { case 'b': *t++ = '\b'; break; case 'f': *t++ = '\f'; break; case 'n': *t++ = '\n'; break; case 'r': *t++ = '\r'; break; case 't': *t++ = '\t'; break; case '\\': /* Quote the backslash. */ *t++ = '\\'; break; default: /* Eat the backslash. */ *t++ = c; break; } quoted = false; } else if (c == '\\') { quoted = true; } else { *t++ = c; } } *t = '\0'; break; case XRM_INT: { long n; char *ptr; n = strtol(s, &ptr, 0); if (*ptr != '\0') { if (warn) { xs_warning("%s: Invalid Integer value: %s", where, s); } } else { *(int *)address = (int)n; } break; } } /* Add a new, arbitrarily-named resource. */ if (arbitrary) { char *rsname; rsname = Malloc(rnlen + 1); strncpy(rsname, name, rnlen); rsname[rnlen] = '\0'; add_resource(rsname, hide); } } void parse_xrm(const char *arg, const char *where) { xparse_xrm(arg, where, true); } /* * Clean up a string for display (undo what parse_xrm does). */ char * safe_string(const char *s) { char *t = Malloc(1); int tlen = 1; *t = '\0'; /* * Translate the string to UCS4 a character at a time. * If the result is a control code or backslash, expand it. * Otherwise, translate it back to the local encoding and * append it to the output. */ while (*s) { ucs4_t u; int consumed; enum me_fail error; u = multibyte_to_unicode(s, strlen(s), &consumed, &error); if (u == 0) { break; } if (u < ' ') { char c = 0; int inc = 0; switch (u) { case '\b': c = 'b'; inc = 2; break; case '\f': c = 'f'; inc = 2; break; case '\n': c = 'n'; inc = 2; break; case '\r': c = 'r'; inc = 2; break; case '\t': c = 't'; inc = 2; break; default: inc = 6; break; } t = Realloc(t, tlen + inc); if (inc == 2) { *(t + tlen - 1) = '\\'; *(t + tlen) = c; } else { sprintf(t, "\\u%04x", u); } tlen += inc; } else { t = Realloc(t, tlen + consumed); memcpy(t + tlen - 1, s, consumed); tlen += consumed; } s += consumed; } *(t + tlen - 1) = '\0'; return t; } /* Read resources from a file. */ bool read_resource_file(const char *filename, bool fatal) { return read_resource_filex(filename, fatal); } /* Screen globals. */ bool visible_control = false; bool flipped = false; suite3270-4.1/Common/glue_gui_stubs.c000066400000000000000000000034321413735575200174550ustar00rootroot00000000000000/* * Copyright (c) 2015, 2018 Paul Mattes. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the names of Paul Mattes nor the names of his contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO * EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * glue_gui_stubs.c * Stubs for GUI-specific functions called from the glue logic. */ #include "globals.h" #include "glue_gui.h" bool glue_gui_output(const char *s _is_unused) { return false; } bool glue_gui_error(const char *s _is_unused) { return false; } suite3270-4.1/Common/host.c000066400000000000000000000613611413735575200154170ustar00rootroot00000000000000/* * Copyright (c) 1993-2020 Paul Mattes. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the names of Paul Mattes nor the names of his contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO * EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * host.c * This module handles the ibm_hosts file, connecting to and * disconnecting from hosts, and state changes on the host * connection. */ #include "globals.h" #include "appres.h" #include "resources.h" #include #include "actions.h" #include "boolstr.h" #include "host.h" #include "host_gui.h" #include "login_macro.h" #include "names.h" #include "popups.h" #include "product.h" #include "split_host.h" #include "task.h" #include "telnet.h" #include "telnet_core.h" #include "toggles.h" #include "trace.h" #include "screentrace.h" #include "utils.h" #include "xio.h" #include #define RECONNECT_MS 2000 /* 2 sec before reconnecting to host */ #define RECONNECT_ERR_MS 5000 /* 5 sec before reconnecting to host */ #define MAX_RECENT 20 /* upper limit on appres.max_recent */ enum cstate cstate = NOT_CONNECTED; unsigned host_flags = 0; #define LUNAME_SIZE 1024 char luname[LUNAME_SIZE+1]; char *connected_lu = NULL; char *connected_type = NULL; bool ever_3270 = false; char *current_host = NULL; char *full_current_host = NULL; unsigned short current_port; char *reconnect_host = NULL; char *qualified_host = NULL; enum iaction connect_ia = IA_NONE; struct host *hosts = NULL; static struct host *last_host = NULL; static iosrc_t net_sock = INVALID_IOSRC; static ioid_t reconnect_id = NULL_IOID; static char *host_ps = NULL; static void save_recent(const char *); static void try_reconnect(ioid_t id); static action_t Connect_action; static action_t Disconnect_action; static action_t Reconnect_action; static action_t SubjectNames_action; static char * stoken(char **s) { char *r; char *ss = *s; if (!*ss) { return NULL; } r = ss; while (*ss && *ss != ' ' && *ss != '\t') { ss++; } if (*ss) { *ss++ = '\0'; while (*ss == ' ' || *ss == '\t') { ss++; } } *s = ss; return r; } /* * Read the hosts file. */ static void read_hosts_file(void) { FILE *hf; char buf[1024]; struct host *h; char *hostfile_name; /* This only applies to emulators with displays. */ if (!product_has_display()) { return; } hostfile_name = appres.hostsfile; if (hostfile_name == NULL) { hostfile_name = xs_buffer("%s/ibm_hosts", appres.conf_dir); } else { hostfile_name = do_subst(appres.hostsfile, DS_VARS | DS_TILDE); } hf = fopen(hostfile_name, "r"); if (hf != NULL) { while (fgets(buf, sizeof(buf), hf)) { char *s = buf; char *name, *entry_type, *hostname; char *slash; if (strlen(buf) > (unsigned)1 && buf[strlen(buf) - 1] == '\n') { buf[strlen(buf) - 1] = '\0'; } while (isspace((unsigned char)*s)) { s++; } if (!*s || *s == '#') { continue; } name = stoken(&s); entry_type = stoken(&s); hostname = stoken(&s); if (!name || !entry_type || !hostname) { popup_an_error("Bad %s syntax, entry skipped", ResHostsFile); continue; } h = (struct host *)Malloc(sizeof(*h)); if (!split_hier(NewString(name), &h->name, &h->parents)) { Free(h); continue; } h->hostname = NewString(hostname); /* * Quick syntax extension to allow the hosts file to * specify a port as host/port. */ if ((slash = strchr(h->hostname, '/'))) { *slash = ':'; } if (!strcmp(entry_type, "primary")) { h->entry_type = PRIMARY; } else { h->entry_type = ALIAS; } if (*s) { h->loginstring = NewString(s); } else { h->loginstring = NULL; } h->prev = last_host; h->next = NULL; if (last_host) { last_host->next = h; } else { hosts = h; } last_host = h; } fclose(hf); } else if (appres.hostsfile != NULL) { popup_an_errno(errno, "Cannot open " ResHostsFile " '%s'", appres.hostsfile); } Free(hostfile_name); /* * Read the recent-connection file, and prepend it to the hosts list. */ save_recent(NULL); } /** * State change callback for emulator exit. * * @param[in] mode Unused. */ static void host_exiting(bool mode _is_unused) { /* Disconnect from the host gracefully. */ host_disconnect(false); } /** * Set a host flag. * * @param[in] flag Flag to set. */ void host_set_flag(int flag) { host_flags |= 1 << flag; } /* * Cancel any pending reconnect attempt. */ static void host_cancel_reconnect(void) { if (reconnect_id != NULL_IOID) { RemoveTimeOut(reconnect_id); reconnect_id = NULL_IOID; assert(cstate == RECONNECTING); change_cstate(NOT_CONNECTED, "host_cancel_reconnect"); } } /** * Toggle the reconnect flag. * * @param[in] name Toggle name. * @param[in] value New value. * * @return true if sucessful */ static bool set_reconnect(const char *name _is_unused, const char *value) { bool previous = appres.interactive.reconnect; const char *errmsg; if ((errmsg = boolstr(value, &appres.interactive.reconnect)) != NULL) { popup_an_error("%s", errmsg); return false; } if (appres.interactive.reconnect != previous && !appres.interactive.reconnect) { host_cancel_reconnect(); } return true; } /** * Hosts module registration. */ void host_register(void) { static action_table_t host_actions[] = { { AnClose, Disconnect_action, ACTION_KE }, { AnConnect, Connect_action, ACTION_KE }, { AnDisconnect, Disconnect_action, ACTION_KE }, { AnOpen, Connect_action, ACTION_KE }, { AnReconnect, Reconnect_action, ACTION_KE }, { AnSubjectNames,SubjectNames_action, ACTION_KE } }; /* Register for events. */ register_schange(ST_EXITING, host_exiting); /* Register our toggles. */ register_extended_toggle(ResReconnect, set_reconnect, NULL, NULL, (void **)&appres.interactive.reconnect, XRM_BOOLEAN); /* Register our actions. */ register_actions(host_actions, array_count(host_actions)); } /** * Read in the hosts file. */ void hostfile_init(void) { static bool hostfile_initted = false; if (hostfile_initted) { return; } read_hosts_file(); hostfile_initted = true; } /* * Look up a host in the list. Turns aliases into real hostnames, and * finds loginstrings. */ static int hostfile_lookup(const char *name, char **hostname, char **loginstring) { struct host *h; hostfile_init(); for (h = hosts; h != NULL; h = h->next) { if (h->entry_type == RECENT) { continue; } if (!strcmp(name, h->name)) { *hostname = h->hostname; if (h->loginstring != NULL) { *loginstring = h->loginstring; } else { *loginstring = appres.login_macro; } return 1; } } return 0; } #if defined(LOCAL_PROCESS) /*[*/ /* Recognize and translate "-e" options. */ static const char * parse_localprocess(const char *s) { int sl = strlen(OptLocalProcess); if (!strncmp(s, OptLocalProcess, sl)) { if (s[sl] == ' ') { return(s + sl + 1); } else if (s[sl] == '\0') { char *r; r = getenv("SHELL"); if (r != NULL) { return r; } else { return "/bin/sh"; } } } return NULL; } #endif /*]*/ /* * Strip qualifiers from a hostname. * Returns the hostname part in a newly-malloc'd string. * 'needed' is returned true if anything was actually stripped. * Returns NULL if there is a syntax error. */ static char * split_host(char *s, unsigned *flags, char *xluname, char **port, char **accept, bool *needed) { char *lu; char *host; char *error; *flags = 0; *needed = false; /* Call the sane, new version. */ if (!new_split_host(s, &lu, &host, port, accept, flags, &error)) { popup_an_error("%s", error); Free(error); return NULL; } if (lu) { strncpy(xluname, lu, LUNAME_SIZE); xluname[LUNAME_SIZE] = '\0'; } else { *xluname = '\0'; } *needed = (strcmp(s, host) != 0); return host; } /* * Network connect/disconnect operations, combined with X input operations. * * Returns true for success, false for error. * Sets 'reconnect_host', 'current_host' and 'full_current_host' as * side-effects. */ bool host_connect(const char *n, enum iaction ia) { char *nb; /* name buffer */ char *s; /* temporary */ const char *chost; /* to whom we will connect */ char *target_name; char *ps = NULL; char *port = NULL; char *accept = NULL; const char *localprocess_cmd = NULL; bool has_colons = false; net_connect_t nc; if (cstate == RECONNECTING) { popup_an_error("Reconnect in progress"); return false; } if (PCONNECTED) { popup_an_error("Already connected"); return true; } /* Skip leading blanks. */ while (*n == ' ') { n++; } if (!*n) { popup_an_error("Invalid (empty) hostname"); return false; } /* Save in a modifiable buffer. */ nb = NewString(n); /* Strip trailing blanks. */ s = nb + strlen(nb) - 1; while (*s == ' ') { *s-- = '\0'; } /* Remember this hostname, as the last hostname we connected to. */ Replace(reconnect_host, NewString(nb)); /* Remember this hostname in the recent connection list and file. */ save_recent(nb); #if defined(LOCAL_PROCESS) /*[*/ if ((localprocess_cmd = parse_localprocess(nb)) != NULL) { chost = localprocess_cmd; port = appres.port; } else #endif /*]*/ { bool needed; /* Strip off and remember leading qualifiers. */ if ((s = split_host(nb, &host_flags, luname, &port, &accept, &needed)) == NULL) { goto failure; } /* Look up the name in the hosts file. */ if (!needed && hostfile_lookup(s, &target_name, &ps)) { /* * Rescan for qualifiers. * Qualifiers, LU names, ports and accept names are all * overridden by the hosts file. */ Free(s); if (!(s = split_host(target_name, &host_flags, luname, &port, &accept, &needed))) { goto failure; } } chost = s; /* Default the port. */ if (port == NULL) { port = appres.port; } } /* * Store the original name in globals, even if we fail the connect later: * current_host is the hostname part, stripped of qualifiers, luname * and port number * full_current_host is the entire string, for use in reconnecting */ if (n != full_current_host) { Replace(full_current_host, NewString(n)); } Replace(current_host, NULL); if (localprocess_cmd != NULL) { if (full_current_host[strlen(OptLocalProcess)] != '\0') { current_host = NewString(full_current_host + strlen(OptLocalProcess) + 1); } else { current_host = NewString("default shell"); } } else { current_host = s; } has_colons = (strchr(chost, ':') != NULL); Replace(qualified_host, xs_buffer("%s%s%s%s%s:%s%s%s", HOST_FLAG(TLS_HOST)? "L:": "", HOST_FLAG(NO_VERIFY_CERT_HOST)? "Y:": "", has_colons? "[": "", chost, has_colons? "]": "", port, (accept != NULL)? "=": "", (accept != NULL)? accept: "")); /* Attempt contact. */ ever_3270 = false; nc = net_connect(chost, port, accept, localprocess_cmd != NULL, &net_sock); if (nc == NC_FAILED) { if (!host_gui_connect()) { if (appres.interactive.reconnect) { reconnect_id = AddTimeOut(RECONNECT_ERR_MS, try_reconnect); change_cstate(RECONNECTING, "host_connect"); } } /* Redundantly signal a disconnect. */ change_cstate(NOT_CONNECTED, "host_connect"); goto failure; } /* Save the pending string. */ if (ps == NULL) { ps = appres.login_macro; } host_ps = NewString(ps); /* Still thinking about it? */ connect_ia = ia; if (nc == NC_RESOLVING) { change_cstate(RESOLVING, "host_connect"); goto success; } if (nc == NC_TLS_PASS) { change_cstate(TLS_PASS, "host_connect"); goto success; } /* Success. */ /* Set pending string. */ Replace(host_ps, NULL); if (ps == NULL) { ps = appres.login_macro; } if (ps != NULL) { login_macro(ps); } /* Prepare Xt for I/O. */ if (net_sock != INVALID_IOSRC) { x_add_input(net_sock); } /* Set state and tell the world. */ if (nc == NC_CONNECT_PENDING) { change_cstate(TCP_PENDING, "host_connect"); } else { /* cstate == NC_CONNECTED */ if (appres.nvt_mode || HOST_FLAG(ANSI_HOST)) { change_cstate(CONNECTED_NVT, "host_connect"); } else { change_cstate(TELNET_PENDING, "host_connect"); } host_gui_connect_initial(); } success: if (nb != NULL) { Free(nb); } return true; failure: if (nb != NULL) { Free(nb); } return false; } /* Process a new connection, when it happens after TLS validation. */ void host_new_connection(bool pending) { /* Set state and tell the world. */ if (pending) { change_cstate(TCP_PENDING, "host_new_connection"); } else { if (appres.nvt_mode || HOST_FLAG(ANSI_HOST)) { change_cstate(CONNECTED_NVT, "host_new_connection"); } else { change_cstate(TELNET_PENDING, "host_new_connection"); } host_gui_connect_initial(); } } /* Continue a connection after hostname resolution completes. */ void host_continue_connect(iosrc_t iosrc, net_connect_t nc) { char *ps = host_ps; /* Set pending string. */ if (ps == NULL) { ps = appres.login_macro; } if (ps != NULL) { login_macro(ps); } /* Prepare Xt for I/O. */ net_sock = iosrc; if (net_sock != INVALID_IOSRC) { x_add_input(net_sock); } /* Set state and tell the world. */ if (nc == NC_CONNECT_PENDING) { change_cstate(TCP_PENDING, "host_continue_connect"); } else { /* cstate == NC_CONNECTED */ if (appres.nvt_mode || HOST_FLAG(ANSI_HOST)) { change_cstate(CONNECTED_NVT, "host_continue_connect"); } else { change_cstate(TELNET_PENDING, "host_continue_connect"); } host_gui_connect_initial(); } } /* * Reconnect to the last host. * Returns true if connection initiated, false otherwise. */ static bool host_reconnect(void) { if (current_host == NULL) { return false; } return host_connect(reconnect_host, connect_ia); } /* * Called from timer to attempt an automatic reconnection. */ static void try_reconnect(ioid_t id _is_unused) { reconnect_id = NULL_IOID; assert(cstate == RECONNECTING); change_cstate(NOT_CONNECTED, "try_reconnect"); host_reconnect(); } void host_disconnect(bool failed) { if (cstate <= RECONNECTING) { return; } x_remove_input(); net_disconnect(true); net_sock = INVALID_IOSRC; if (!host_gui_disconnect()) { if (appres.interactive.reconnect && reconnect_id == NULL_IOID) { /* Schedule an automatic reconnection. */ reconnect_id = AddTimeOut(failed? RECONNECT_ERR_MS: RECONNECT_MS, try_reconnect); change_cstate(RECONNECTING, "host_disconnect"); } } /* * Remember a disconnect from NVT mode, to keep screen tracing * in sync. */ if (IN_NVT && toggled(SCREEN_TRACE)) { trace_nvt_disc(); } if (cstate != RECONNECTING) { change_cstate(NOT_CONNECTED, "host_disconnect"); /* Forget pending state. */ Replace(host_ps, NULL); } /* No more host, no more host flags. */ host_flags = 0; net_set_default_termtype(); } /* The host has entered 3270 or NVT mode, or switched between them. */ void host_in3270(enum cstate new_cstate) { ever_3270 = cIN_3270(new_cstate); change_cstate(new_cstate, "host_in3270"); } void host_connected(void) { change_cstate(TELNET_PENDING, "host_connected"); host_gui_connected(); } /* Swap out net_sock. */ void host_newfd(iosrc_t s) { /* Shut off the old. */ x_remove_input(); /* Turn on the new. */ net_sock = s; x_add_input(net_sock); } /* Comparison function for the qsort. */ static int host_compare(const void *e1, const void *e2) { const struct host *h1 = *(const struct host **)e1; const struct host *h2 = *(const struct host **)e2; int r; if (h1->connect_time > h2->connect_time) { r = -1; } else if (h1->connect_time < h2->connect_time) { r = 1; } else { r = 0; } #if defined(CFDEBUG) /*[*/ printf("%s %ld %d %s %ld\n", h1->name, h1->connect_time, r, h2->name, h2->connect_time); #endif /*]*/ return r; } #if defined(CFDEBUG) /*[*/ static void dump_array(const char *when, struct host **array, int nh) { int i; printf("%s\n", when); for (i = 0; i < nh; i++) { printf(" %15s %ld\n", array[i]->name, array[i]->connect_time); } } #endif /*]*/ /* Save the most recent host in the recent host list. */ static void save_recent(const char *hn) { struct host *h; int nih = 0; struct host *r_start = NULL; char *lcf_name = NULL; FILE *lcf = NULL; struct host **h_array = NULL; int nh = 0; int i; time_t t = time(NULL); int n_recent; /* Don't let the user go overboard on the recent hosts list. */ if (appres.max_recent > MAX_RECENT) { appres.max_recent = MAX_RECENT; } /* * Copy the ibm_hosts into the array, and point r_start at the first * recent-host entry. */ for (h = hosts; h != NULL; h = h->next) { if (h->entry_type == RECENT) { r_start = h; break; } h_array = (struct host **) Realloc(h_array, (nh + 1) * sizeof(struct host *)); h_array[nh++] = h; nih++; } /* * Allocate a new entry and add it to the array, just under the * ibm_hosts and before the first recent entry. */ if (hn != NULL) { h = (struct host *)Malloc(sizeof(*h)); h->name = NewString(hn); h->parents = NULL; h->hostname = NewString(hn); h->entry_type = RECENT; h->loginstring = NULL; h->connect_time = t; h_array = (struct host **) Realloc(h_array, (nh + 1) * sizeof(struct host *)); h_array[nh++] = h; } /* Append the existing recent entries to the array. */ for (h = r_start; h != NULL; h = h->next) { h_array = (struct host **) Realloc(h_array, (nh + 1) * sizeof(struct host *)); h_array[nh++] = h; } /* * Read the last-connection file, to capture the any changes made by * other instances of x3270. */ if (appres.connectfile_name != NULL && strcasecmp(appres.connectfile_name, "none")) { lcf_name = do_subst(appres.connectfile_name, DS_VARS | DS_TILDE); lcf = fopen(lcf_name, "r"); } if (lcf != NULL) { char buf[1024]; while (fgets(buf, sizeof(buf), lcf) != NULL) { size_t sl; time_t connect_time; char *ptr; /* Pick apart the entry. */ sl = strlen(buf); if (buf[sl - 1] == '\n') { buf[sl-- - 1] = '\0'; } if (!sl || buf[0] == '#' || (connect_time = strtoul(buf, &ptr, 10)) == 0L || ptr == buf || *ptr != ' ' || !*(ptr + 1)) { continue; } h = (struct host *)Malloc(sizeof(*h)); h->name = NewString(ptr + 1); h->parents = NULL; h->hostname = NewString(ptr + 1); h->entry_type = RECENT; h->loginstring = NULL; h->connect_time = connect_time; h_array = (struct host **) Realloc(h_array, (nh + 1) * sizeof(struct host *)); h_array[nh++] = h; } fclose(lcf); } /* * Sort the recent hosts, in reverse order by connect time. */ #if defined(CFDEBUG) /*[*/ dump_array("before", h_array, nh); #endif /*]*/ qsort(h_array + nih, nh - nih, sizeof(struct host *), host_compare); #if defined(CFDEBUG) /*[*/ dump_array("after", h_array, nh); #endif /*]*/ /* * Filter out duplicate names in the recent host list. * At the same time, limit the size of the recent list to MAX_RECENT. */ n_recent = 0; for (i = nih; i < nh; i++) { bool delete = false; if (n_recent >= appres.max_recent) { delete = true; } else { int j; for (j = nih; j < i; j++) { if (h_array[j] != NULL && !strcmp(h_array[i]->name, h_array[j]->name)) { delete = true; break; } } } if (delete) { Free(h_array[i]->name); Free(h_array[i]->hostname); Free(h_array[i]); h_array[i] = NULL; } else { n_recent++; } } /* Create a new host list from what's left. */ hosts = NULL; last_host = NULL; for (i = 0; i < nh; i++) { if ((h = h_array[i]) != NULL) { h->next = NULL; if (last_host != NULL) { last_host->next = h; } h->prev = last_host; last_host = h; if (hosts == NULL) { hosts = h; } } } /* No need for the array any more. */ Free(h_array); h_array = NULL; /* Rewrite the file. */ if (lcf_name != NULL) { lcf = fopen(lcf_name, "w"); if (lcf != NULL) { fprintf(lcf, "# Automatically generated %s# by %s\n\ # Do not edit!\n", ctime(&t), build); for (h = hosts; h != NULL; h = h->next) { if (h->entry_type == RECENT) { fprintf(lcf, "%lu %s\n", (unsigned long)h->connect_time, h->name); } } fclose(lcf); } } if (lcf_name != NULL) { Free(lcf_name); } } /* Explicit connect/disconnect actions. */ static bool Connect_action(ia_t ia, unsigned argc, const char **argv) { action_debug(AnConnect, ia, argc, argv); if (check_argc(AnConnect, argc, 1, 1) < 0) { return false; } if (!host_connect(argv[0], ia)) { return false; } /* * If not called from a keymap and the connection was successful (or * half-successful), pause the script until we are connected and * we have identified the host type. * * The reason for the check against keymaps is so the GUI doesn't stall * if someone puts a Connect() in a keymap. This is an imperfect check, * since someone could put a Source() in a keymap for a file that includes * a Connect(), and it would still stall here. */ if (!task_nonblocking_connect() && !IA_IS_KEY(ia)) { task_connect_wait(); } return true; } static bool Reconnect_action(ia_t ia, unsigned argc, const char **argv) { action_debug(AnReconnect, ia, argc, argv); if (check_argc(AnReconnect, argc, 0, 0) < 0) { return false; } if (PCONNECTED) { popup_an_error(AnReconnect "(): Already connected"); return false; } if (current_host == NULL) { popup_an_error(AnReconnect "(): No previous host to connect to"); return false; } host_reconnect(); /* * If called from a script and the connection was successful (or * half-successful), pause the script until we are connected and * we have identified the host type. * * The reason for the check against keymaps is so the GUI doesn't stall * if someone puts a Reconnect() in a keymap. This is an imperfect check, * since someone could put a Source() in a keymap for a file that includes * a Reconnect(), and it would still stall here. */ if (!IA_IS_KEY(ia)) { task_connect_wait(); } return cstate != NOT_CONNECTED; } static bool Disconnect_action(ia_t ia, unsigned argc, const char **argv) { action_debug(AnDisconnect, ia, argc, argv); if (check_argc(AnDisconnect, argc, 0, 0) < 0) { return false; } host_disconnect(false); return true; } /* * Display the subject names for a host. */ static bool SubjectNames_action(ia_t ia, unsigned argc, const char **argv) { char *s; action_debug(AnSubjectNames, ia, argc, argv); if (check_argc(AnSubjectNames, argc, 1, 1) < 0) { return false; } /* * Run the following commands in a macro: * Connect(Y:) * Wait(InputField) # needed for the c3270> prompt, which * # does non-blocking connects * Show(TlsSubjectNames) * Disconnect() */ s = xs_buffer(AnConnect "(Y:%s) " AnWait "(" KwInputField ") " AnShow "(" KwTlsSubjectNames ") " AnDisconnect "()", argv[0]); push_stack_macro(s); Free(s); return true; } bool host_reconnecting(void) { return cstate == RECONNECTING; } suite3270-4.1/Common/host_gui_stubs.c000066400000000000000000000035321413735575200174770ustar00rootroot00000000000000/* * Copyright (c) 1993-2015 Paul Mattes. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the names of Paul Mattes nor the names of his contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO * EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * host_gui_stubs.c * Stubs for GUI-specific functions called from the host * connect/disconnect logic. */ #include "globals.h" #include "host_gui.h" bool host_gui_connect(void) { return false; } void host_gui_connect_initial(void) { } bool host_gui_disconnect(void) { return false; } void host_gui_connected(void) { } suite3270-4.1/Common/html.m4000066400000000000000000000067601413735575200155060ustar00rootroot00000000000000dnl Copyright (c) 2000-2013, Paul Mattes. dnl All rights reserved. dnl dnl Redistribution and use in source and binary forms, with or without dnl modification, are permitted provided that the following conditions are met: dnl * Redistributions of source code must retain the above copyright dnl notice, this list of conditions and the following disclaimer. dnl * Redistributions in binary form must reproduce the above copyright dnl notice, this list of conditions and the following disclaimer in the dnl documentation and/or other materials provided with the distribution. dnl * Neither the names of Paul Mattes nor the names of his contributors dnl may be used to endorse or promote products derived from this software dnl without specific prior written permission. dnl dnl THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS OR IMPLIED dnl WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF dnl MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO dnl EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, dnl SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED dnl TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR dnl PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF dnl LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING dnl NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS dnl SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. dnl dnl Man page macros in m4, produces html output changequote(<,>)dnl define(XX_POSESSIVE,$1's)dnl define(XX_DQUOTED,``$1'')dnl changequote(`,')dnl changecom()dnl define(XX_TH)dnl define(XX_XL,`translit($1,` ()/',-)')dnl define(XX_XR,`$1
')dnl define(XX_SH,`dnl divert(1)dnl XX_XR($1) divert(2)dnl

$1

')dnl define(XX_SM,$1)dnl define(XX_LP,

)dnl define(XX_IP,

)dnl define(XX_BR,
)dnl define(XX_RS,

$1
)dnl define(XX_TS,)dnl define(XX_TR,$1)dnl define(XX_TD,)dnl define(XX_TDH,)dnl define(XX_T_)dnl define(XX_TC,
$1
)dnl define(XX_TE,
$1$1
)dnl define(XX_TPS,
)dnl define(XX_TPE,
)dnl define(XX_TP,
$1
)dnl define(XX_PP,

)dnl define(XX_DASH,`-')dnl define(XX_DASHED,`-'$1)dnl define(XX_FI,$1)dnl define(XX_FB,$1)dnl define(XX_NBSP, )dnl define(XX_LT,<)dnl define(XX_BS,\)dnl define(XX_TARGET,)dnl define(XX_LINK,$2)dnl define(XX_COPY,` © ')dnl define(XX_BACKSLASH,``\''$1)dnl define(XX_NOT,¬)dnl define(XX_HO,$1)dnl define(XX_HY,$1$2)dnl dnl Stream 1 has the table of contents, stream 2 the body, stream 3 the tail divert(1)dnl XX_PAGENAME Manual Page

XX_PAGENAME Manual Page


Note: This page is no longer being maintained for XX_PAGENAME 4.0 and later. Please refer to the the x3270 Wiki for up-to-date documentation.


Contents

divert(3)dnl
This HTML document and the accompanying troff document were generated with a set of write-only m4 macros and the powerful vi editor.
Last modified XX_DATE.
divert(2)dnl
dnl suite3270-4.1/Common/html/000077500000000000000000000000001413735575200152335ustar00rootroot00000000000000suite3270-4.1/Common/html/x3270.xbm000066400000000000000000000043441413735575200165330ustar00rootroot00000000000000#define x3270_width 50 #define x3270_height 50 static unsigned char x3270_bits[] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0xe0, 0xff, 0xff, 0xff, 0xff, 0x1f, 0x00, 0xf0, 0xff, 0xaf, 0xfe, 0xff, 0xe7, 0x00, 0xf0, 0xff, 0xff, 0xff, 0xff, 0x07, 0x00, 0xf8, 0xab, 0xaa, 0xaa, 0xea, 0x0f, 0x00, 0xf8, 0x55, 0x55, 0x55, 0xd5, 0x0f, 0x00, 0xf8, 0xaa, 0xaa, 0xaa, 0xaa, 0x0f, 0x00, 0x78, 0x55, 0x55, 0x55, 0x55, 0x0f, 0x00, 0xf8, 0xaa, 0xaa, 0xaa, 0xaa, 0x0f, 0x00, 0x78, 0x55, 0x55, 0x55, 0x55, 0x0f, 0x00, 0xf8, 0xaa, 0xaa, 0xaa, 0xaa, 0x0f, 0x00, 0x78, 0x55, 0x55, 0x55, 0x55, 0x0f, 0x00, 0xf8, 0xaa, 0xaa, 0xaa, 0xaa, 0x0f, 0x00, 0x78, 0x55, 0x55, 0x55, 0x55, 0x0f, 0x00, 0xf8, 0xaa, 0xaa, 0xaa, 0xaa, 0x0f, 0x00, 0x78, 0x55, 0x55, 0x55, 0x55, 0x0f, 0x00, 0xf8, 0xfa, 0xff, 0xff, 0xbf, 0x0f, 0x00, 0x78, 0xed, 0x62, 0x0c, 0x73, 0x0f, 0x00, 0xf8, 0x5a, 0xdf, 0x7b, 0xad, 0x0f, 0x00, 0x78, 0xb5, 0xe7, 0xbc, 0x6d, 0x0f, 0x00, 0xf8, 0x5a, 0x5f, 0xdf, 0xed, 0x0f, 0x00, 0x78, 0xed, 0x62, 0xd8, 0x73, 0x0f, 0x00, 0xf8, 0xfa, 0xff, 0xff, 0xff, 0x0f, 0x00, 0xf8, 0x55, 0x55, 0x55, 0xd5, 0x0f, 0x00, 0xf8, 0xab, 0xaa, 0xaa, 0xea, 0x0f, 0x00, 0xf0, 0xff, 0xff, 0xff, 0x7f, 0x06, 0x00, 0xf0, 0xff, 0xff, 0xff, 0x7f, 0x06, 0x00, 0xe0, 0xff, 0xff, 0xff, 0xff, 0x07, 0x00, 0x80, 0xff, 0xff, 0xff, 0xff, 0x18, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x40, 0x00, 0xc0, 0xff, 0xff, 0xff, 0xff, 0x43, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x43, 0x00, 0x10, 0x44, 0x44, 0x44, 0x84, 0x42, 0x00, 0x08, 0x11, 0x11, 0x11, 0x41, 0x42, 0x00, 0x84, 0x88, 0x88, 0x88, 0x48, 0x42, 0x00, 0x24, 0x22, 0x22, 0x22, 0x22, 0xfe, 0x00, 0xfc, 0xff, 0xff, 0xff, 0x1f, 0x03, 0x00, 0x04, 0x00, 0x00, 0x00, 0xd0, 0x00, 0x00, 0xfc, 0xff, 0xff, 0xff, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; suite3270-4.1/Common/httpd-core.c000066400000000000000000001451671413735575200165220ustar00rootroot00000000000000/* * Copyright (c) 2014-2015, 2019-2020 Paul Mattes. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the names of Paul Mattes nor the names of his contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO * EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * httpd-core.c * x3270 webserver, main protocol module */ #include "globals.h" #include #include #include "appres.h" #include "asprintf.h" #include "lazya.h" #include "trace.h" #include "utils.h" #include "varbuf.h" #include "httpd-core.h" #include "httpd-io.h" #define DIRLIST_NLEN 14 /* Typedefs */ typedef enum { /* Print mode: */ HP_SEND, /* Send directly */ HP_BUFFER /* Buffer */ } httpd_print_t; typedef enum { /* Error type: */ ERRMODE_NON_HTTP, /* The request makes no sense at all -- it might not even be HTTP. Don't bother with an HTTP header in the response. */ ERRMODE_FATAL, /* The request appears to be HTTP, but processing cannot continue. Wrap the response in HTTP. */ ERRMODE_NONFATAL /* The request cannot be satisfied, but if this is a persistent connection, keep it open. */ } errmode_t; typedef enum { /* Supported verbs: */ VERB_GET, /* GET */ VERB_HEAD, /* HEAD */ VERB_OTHER /* anything else */ } verb_t; /* fields */ typedef struct _field { /* HTTP request fields (name: value) */ struct _field *next; /* linkage */ char *name; /* name */ char *value; /* value */ } field_t; /* Per-request state */ typedef struct { varbuf_t print_buf; /* pending output */ #define MAX_HTTPD_REQUEST (8192 - 1) char request_buf[MAX_HTTPD_REQUEST + 1]; /* request buffer */ int nr; /* length of input up through blank line */ bool saw_first; /* we have digested the first line of the request */ int rll; /* length of each request line parsed */ verb_t verb; /* parsed verb */ bool http_1_0; /* is the client speaking HTTP 1.0? */ bool persistent; /* is the client expecting a persistent connection? */ char *uri; /* start of URI */ char *query; /* query */ field_t *queries; /* list of query values */ char *fragment; /* fragment */ char *fields_start; /* start of fields */ field_t *fields; /* field values */ char *location; /* real location for 301 errors */ struct _httpd_reg *async_node; /* asynchronous event node */ size_t it_offset; /* input trace offset */ size_t ot_offset; /* output trace offset */ } request_t; /* connection state */ typedef struct { /* Global state */ void *mhandle; /* the handle from the main procedure */ bool cr; /* last character seen was a CR */ unsigned long seq; /* connection sequence number, for tracing */ /* Per-request state */ request_t request; } httpd_t; /* object registry */ typedef enum { OR_DIR, /* Directory */ OR_FIXED, /* object has fixed value */ OR_FIXED_BINARY, /* object has fixed binary value */ OR_DYN_TERM, /* object is dynamic, terminal */ OR_DYN_NONTERM /* object is dynamic, non-terminal */ } or_t; typedef struct _httpd_reg { struct _httpd_reg *next; /* linkage */ const char *path; /* full path, including leading / */ const char *desc; /* description, for directory display */ const char *alias; /* alias, for directory display */ content_t content_type; const char *content_str; unsigned flags; /* HF_xxx */ or_t type; union { const char *fixed; /* fixed html */ struct { const unsigned char *fixed; unsigned length; } fixed_binary; /* fixed binary */ reg_dyn_t *dyn; /* dynamic output */ } u; } httpd_reg_t; /* Globals */ /* Statics */ static httpd_reg_t *httpd_reg; static unsigned long httpd_seq = 0; /* Code */ /** * Expand an HTTP status code to a string. * * @param[in] status_code * * @return Expanded text */ static const char * status_text(int status_code) { switch (status_code) { case 200: return "OK"; case 301: return "Moved Permanently"; case 400: return "Bad Request"; case 404: return "Not Found"; case 409: return "Conflict"; case 500: return "Internal Server Error"; case 501: return "Not implemented"; default: return "Unknown"; } } /** * Trace network data. * * @param[in] direction Descriptive string for data direction * @param[in] buf Data buffer * @param[in] len Length of data * @param[in,out] doffset Display offset */ static void httpd_data_trace(httpd_t *h, const char *direction, const char *buf, size_t len, size_t *doffset) { size_t i; #define BPL 16 unsigned char linebuf[BPL]; size_t j; for (i = 0; i < len; i++) { if (!(i % BPL)) { if (i) { vtrace(" "); for (j = 0; j < BPL; j++) { vtrace("%c", iscntrl(linebuf[j])? '.': linebuf[j]); } } vtrace("%sh%s [%lu] 0x%04x", i? "\n": "", direction, h->seq, (unsigned)(*doffset + i)); } vtrace(" %02x", (unsigned char)buf[i]); linebuf[i % BPL] = buf[i]; } /* Space over the missing data bytes on the line. */ if (i % BPL) { vtrace("%*s", (int)((BPL - (i % BPL)) * 3 + 1), ""); } else { vtrace(" "); } /* Trace the last chunk of data as text. */ for (j = 0; j < ((i % BPL)? (i % BPL): BPL); j++) { vtrace("%c", iscntrl(linebuf[j])? '.': linebuf[j]); } vtrace("\n"); *doffset += len; } /** * Send data on a connection. * * @param[in] h State * @param[in] buf Data buffer * @param[in] len Data buffer length */ static void httpd_send(httpd_t *h, const char *buf, size_t len) { httpd_data_trace(h, ">", buf, len, &h->request.ot_offset); hio_send(h->mhandle, buf, len); } /** * Transfer data to the HTTPD socket or the deferred output buffer. * * @param[in,out] h State * @param[in] type How to print (send immediate or buffer) * @param[in] buf Buffer to print * @param[in] len Length of buffer */ static void httpd_print_buf(httpd_t *h, httpd_print_t type, const char *buf, size_t len) { request_t *r = &h->request; if (type == HP_SEND) { httpd_send(h, buf, len); } else { vb_append(&r->print_buf, buf, len); } } /** * Print HTTPD response text, varargs interface. * * Responsible for expanding newlines to CR/LF pairs and directing the output * to the correct socket. * * @param[in,out] h State * @param[in] type How to print (send immediate or buffer) * @param[in] format printf()-style format * @param[in] ap varargs */ static void httpd_vprint(httpd_t *h, httpd_print_t type, const char *format, va_list ap) { char *buf; size_t sl; char *sp; /* pointer through the string */ /* Expand the text. */ buf = xs_vbuffer(format, ap); sl = strlen(buf); /* Write it in chunks, doing CR/LF expansion. */ sp = buf; while (sl > 0) { char *nl; /* location of next newline */ ssize_t wlen; /* number of bytes before the newline */ bool crlf; /* true if newline found */ nl = strchr(sp, '\n'); if (nl != NULL) { wlen = nl - sp; crlf = true; } else { wlen = sl; crlf = false; } if (wlen) { /* Send the text up to (but not including) the newline. */ httpd_print_buf(h, type, sp, wlen); /* Account for the bytes written. */ sp += wlen; sl -= wlen; } if (crlf) { /* Expand the newline to CR/LF. */ httpd_print_buf(h, type, "\r\n", 2); /* Account for the newline. */ sp++; sl--; } } Free(buf); } /** * Print HTTPD response text * * Responsible for expanding newlines to CR/LF pairs and directing the output * to the correct socket. * * @param[in,out] h State * @param[in] type How to print (send immediate or buffer) * @param[in] format printf()-style format */ static void httpd_print(httpd_t *h, httpd_print_t type, const char *format, ...) { va_list ap; va_start(ap, format); httpd_vprint(h, type, format, ap); va_end(ap); } /** * Dump out a Content-Length string. * * This helps ensure that a typical response comes in just three chunks: * HTTP header (except for Content-Length) * Content-Length and the double CR+LF * Body * * @param[in] h State * @param[in] len Length */ static void httpd_content_len(httpd_t *h, size_t len) { char *cl; /* Do our own CR+LF expansion and send directly. */ cl = lazyaf("Content-Length: %u\r\n\r\n", (unsigned)len); httpd_send(h, cl, strlen(cl)); } /** * Dump the buffered http_print() data. * * @param[in,out] h State */ typedef enum { DUMP_WITH_LENGTH, DUMP_WITHOUT_LENGTH } dump_t; static void httpd_print_dump(httpd_t *h, dump_t type) { request_t *r = &h->request; if (type == DUMP_WITH_LENGTH) { httpd_content_len(h, vb_len(&r->print_buf)); } if (vb_len(&r->print_buf)) { httpd_send(h, vb_buf(&r->print_buf), vb_len(&r->print_buf)); } vb_reset(&r->print_buf); } /** * Free a collection of fields. * * @param[in,out] fp pointer to list of fields */ static void free_fields(field_t **fp) { field_t *f; while ((f = *fp) != NULL) { field_t *g = f; *fp = f->next; Free(g); } } /** * Reinitialize the HTTPD request state. * * We do this when we close a connection, and when we complete a request on * a persistent connection. * * @param[in,out] r request state */ static void httpd_reinit_request(request_t *r) { r->nr = 0; r->saw_first = false; r->rll = 0; r->http_1_0 = false; r->persistent = true; free_fields(&r->fields); r->fields_start = NULL; free_fields(&r->queries); vb_reset(&r->print_buf); r->verb = VERB_OTHER; r->it_offset = 0; r->ot_offset = 0; } /** * Initialize the HTTPD request state. * * This is done with fresh connection, so there is no previous state to * clean up. * * @param[out] r request state */ static void httpd_init_request(request_t *r) { memset(r, 0, sizeof(*r)); httpd_reinit_request(r); } /** * Free HTTPD request state. * * @param[in] r Request */ static void httpd_free_request(request_t *r) { /* Free the print buffer. */ vb_free(&r->print_buf); /* Reinitialize everthing. */ httpd_reinit_request(r); } /** * Initialize the entire HTTPD state for a connection. * * @param[in,out] h state * @param[in] mhandle main logic handle */ static void httpd_init_state(httpd_t *h, void *mhandle) { httpd_init_request(&h->request); h->cr = false; h->mhandle = mhandle; h->seq = httpd_seq++; } /** * Write the HTTP header. * * @param[in] h State * @param[in] status_code HTTP status code * @param[in] do_close true if we should send 'Connection: close' * @param[in] content_type Value for Content-Type field */ static void httpd_http_header(httpd_t *h, int status_code, bool do_close, const char *content_type) { request_t *r = &h->request; time_t t; char *a; vtrace("h> [%lu] Response: %d %s\n", h->seq, status_code, status_text(status_code)); httpd_print(h, HP_BUFFER, "HTTP/1.1 %d %s\n", status_code, status_text(status_code)); t = time(NULL); a = asctime(gmtime(&t)); httpd_print(h, HP_BUFFER, "Date: %.*s UTC\n", strlen(a) - 1, a); httpd_print(h, HP_BUFFER, "Server: %s\n", build); if (do_close) { httpd_print(h, HP_BUFFER, "Connection: close\n"); } if (status_code == 301 && r->location != NULL) { httpd_print(h, HP_BUFFER, "Location: %s\n", r->location); } httpd_print(h, HP_BUFFER, "Content-Type: %s\n", content_type); /* Now write it. */ httpd_print_dump(h, DUMP_WITHOUT_LENGTH); } /** * Write the standard trailer. * * The trailer includes the bracket. * * @param[in] h State * @param[in] type Print type (send or buffer) */ static void httpd_html_trailer(httpd_t *h, httpd_print_t type) { httpd_print(h, type, "\n"); httpd_print(h, type, "
\n"); httpd_print(h, type, " %s - x3270.bgp.nu\n", build); httpd_print(h, type, " \n"); } /** * Fail an HTTP request, varargs interface * * @param[in,out] h State * @param[in] mode Error mode (how far we got before the error) * @param[in] content_type Content type CT_xxx * @param[in] status_code HTTP status code * @param[in] verb Request verb * @param[in] format printf format for extended error message * @param[in] ap printf args * * @return httpd_status_t */ static httpd_status_t httpd_verror(httpd_t *h, errmode_t mode, content_t content_type, int status_code, verb_t verb, const char *format, va_list ap) { static const char *type_map[] = { "text/html", "text/plain", "application/json", "text/plain" }; request_t *r = &h->request; /* If the request wasn't complete junk, wrap the error response in HTTP. */ if (mode != ERRMODE_NON_HTTP) { httpd_http_header(h, status_code, mode <= ERRMODE_FATAL, lazyaf("%s; charset=iso8859-1", type_map[content_type])); } else { vtrace("h> [%lu] Response: %d %s\n", h->seq, status_code, status_text(status_code)); } /* * For (apparent) HTTP connections, buffer the body of the error message * so we can send a Content-Length field. Otherwise, send it straight out. * * If we ever are in danger of sending anything larger than the output * buffer in an error message, we can used chunked encoding. */ if (mode == ERRMODE_NON_HTTP) { httpd_print(h, HP_BUFFER, "\n"); } if (verb != VERB_HEAD) { /* Generate the body. */ switch (content_type) { case CT_HTML: httpd_print(h, HP_BUFFER, "\n"); httpd_print(h, HP_BUFFER, "\n"); httpd_print(h, HP_BUFFER, " \n"); httpd_print(h, HP_BUFFER, " %d %s\n", status_code, status_text(status_code)); httpd_print(h, HP_BUFFER, " \n"); httpd_print(h, HP_BUFFER, " \n"); httpd_print(h, HP_BUFFER, "

%d %s

\n", status_code, status_text(status_code)); httpd_vprint(h, HP_BUFFER, format, ap); httpd_html_trailer(h, HP_BUFFER); httpd_print(h, HP_BUFFER, "\n"); break; case CT_TEXT: httpd_vprint(h, HP_BUFFER, format, ap); break; case CT_JSON: { char *buf = xs_vbuffer(format, ap); size_t sl = strlen(buf); if (sl > 2 && !strcmp(buf + sl - 2, ",\n")) { sl -= 2; } if (sl) { httpd_print(h, HP_BUFFER, "{\n\ \"result\": [\n\ %.*s\n\ ]\n\ }\n", (int)sl, buf); } } break; case CT_BINARY: break; } /* * Dump the Content-Length (if HTTP) now and terminate the response * header. */ httpd_print_dump(h, (mode > ERRMODE_NON_HTTP)? DUMP_WITH_LENGTH: DUMP_WITHOUT_LENGTH); } /* * If this is a fatal error, or if the connection is not persistent, close * the connection. */ if (mode <= ERRMODE_FATAL || !r->persistent) { return HS_ERROR_CLOSE; } else { httpd_reinit_request(r); return HS_ERROR_OPEN; } } /** * Fail an HTTP request. * * @param[in,out] h State * @param[in] mode Error mode (how far we got before the error) * @param[in] content_type Content type CT_xxx * @param[in] status_code HTTP status code * @param[in] format printf format for extended error message * * @return httpd_status_t */ static httpd_status_t httpd_error(httpd_t *h, errmode_t mode, content_t content_type, int status_code, const char *format, ...) { request_t *r = &h->request; va_list ap; httpd_status_t rv; va_start(ap, format); rv = httpd_verror(h, mode, content_type, status_code, r->verb, format, ap); va_end(ap); return rv; } /** * Parse a number inline in a string. * * @param[in] s String to parse * @param[out] nlp Returned length of number (number of bytes) * @param[out] np Returned numeric value * * @return false for no valid number present, true for success */ static bool httpd_parse_number(const char *s, size_t *nlp, unsigned long *np) { unsigned long int u; char *end; u = strtoul(s, &end, 10); if ((u == ULONG_MAX && errno == ERANGE) || end == s) { *nlp = 0; *np = 0; return false; } *nlp = end - s; *np = u; return true; } /** * Partially validate the first line of a request. * * As a side-effect, remember the verb in r->verb, and the URI in r->uri. * * The request is in r->request_buf[], NULL terminated, with the length * (not including the NULL) in r->nr. * * @param[in,out] h State * * @return httpd_status_t */ static int httpd_digest_request_line(httpd_t *h) { request_t *r = &h->request; char *verb; char *protocol; char *junk; size_t major_len, minor_len; unsigned long major, minor; errmode_t errmode; int i; char *rq; static const char *known_verbs[] = { "GET", "HEAD", "POST", "PUT", "DELETE", "CONNECT", "OPTIONS", "TRACE", NULL }; static const char *supported_verbs[] = { /* Must use same order as the http_verb enumeration. */ "GET", "HEAD", NULL }; static char http_token[] = "HTTP/"; # define HTTP_TOKEN_SIZE (sizeof(http_token) - 1) static char *whitespace = " \t\f\v"; /* Until we find HTTP/, errors are junk. */ errmode = ERRMODE_NON_HTTP; rq = r->request_buf; vtrace("h< [%lu] Request: %s\n", h->seq, rq); /* * We need to see something that looks like: * [http/n.n] */ /* White space at the beginning of the input is bad. */ if (isspace((unsigned char)rq[0])) { return httpd_error(h, errmode, CT_HTML, 400, "

Invalid request " "syntax.

\n

Whitespace at the beginning of the " "request.

"); } /* We expect two or three tokens. */ verb = strtok(rq, whitespace); r->uri = strtok(NULL, whitespace); protocol = strtok(NULL, whitespace); if (protocol != NULL) { junk = strtok(NULL, whitespace); } else { junk = NULL; } if (verb == NULL || r->uri == NULL || junk != NULL) { return httpd_error(h, errmode, CT_HTML, 400, "

Invalid request " "syntax.

\n

Invalid number of tokens.

"); } /* * Check the syntax of the protocol version. */ if (protocol != NULL) { if (strncasecmp(protocol, http_token, HTTP_TOKEN_SIZE) || !httpd_parse_number(protocol + HTTP_TOKEN_SIZE, &major_len, &major) || protocol[HTTP_TOKEN_SIZE + major_len] != '.' || !httpd_parse_number(protocol + HTTP_TOKEN_SIZE + major_len + 1, &minor_len, &minor)) { if (!strcmp(verb, "HEAD")) { r->verb = VERB_HEAD; } return httpd_error(h, errmode, CT_HTML, 400, "Invalid protocol '%s'.", protocol); } r->http_1_0 = (major == 1 && minor == 0); r->persistent = !r->http_1_0; errmode = ERRMODE_FATAL; } else { /* No third token. Assume HTTP 1.0. */ r->http_1_0 = true; r->persistent = false; } /* Check the verb. */ for (i = 0; known_verbs[i] != NULL; i++) { if (!strcmp(verb, known_verbs[i])) { break; } } if (known_verbs[i] == NULL) { return httpd_error(h, errmode, CT_HTML, 400, "Unknown verb '%s'.", verb); } for (i = 0; supported_verbs[i] != NULL; i++) { if (!strcmp(verb, supported_verbs[i])) { r->verb = i; break; } } if (supported_verbs[i] == NULL) { return httpd_error(h, errmode, CT_HTML, 501, "Unsupported verb '%s'.", verb); } return HS_CONTINUE; } /** * Translate a hex digit to a number. * * @param[in] c Digit character * * @return Value, or -1 if not a valid digit */ static int hex_digit(char c) { static const char *xlc = "0123456789abcdef"; static const char *xuc = "0123456789ABCDEF"; char *x; x = strchr(xlc, c); if (x != NULL) { return (int)(x - xlc); } x = strchr(xuc, c); if (x != NULL) { return (int)(x - xuc); } return -1; } /** * Do percent substitution decoding on a URI element. * * @param[in] uri URI to parse * @param[in] len Length of URI * @param[in] plus Translate '+' to ' ' as well * * @return Translated, newly-allocated and NULL-terminated URI, or NULL if * there is a syntax error */ static char * percent_decode(const char *uri, size_t len, bool plus) { enum { PS_BASE, /* base state */ PS_PCT, /* saw % */ PS_HEX1 /* saw % and one hex digit */ } state = PS_BASE; int hex1 = 0, hex2; const char *s; char c; varbuf_t r; char xc; vb_init(&r); /* Walk and translate. */ s = uri; while (s < uri + len) { c = *s++; switch (state) { case PS_BASE: if (c == '%') { state = PS_PCT; } else { if (plus && c == '+') { vb_appends(&r, " "); } else { vb_append(&r, &c, 1); } } break; case PS_PCT: hex1 = hex_digit(c); if (hex1 < 0) { vb_free(&r); return NULL; } state = PS_HEX1; break; case PS_HEX1: hex2 = hex_digit(c); if (hex2 < 0) { vb_free(&r); return NULL; } xc = (hex1 << 4) | hex2; vb_append(&r, &xc, 1); state = PS_BASE; break; } } /* If we end with a partially-digested sequence, fail. */ if (state != PS_BASE) { vb_free(&r); return NULL; } /* Done. */ return vb_consume(&r); } /** * Validate a registered path. * * @param[in] path * * @return !=0 for success, 0 for failure */ static int httpd_valid_path(const char *path) { const char *s; int nsl; char c; /* Check for NULL pointer. */ if (path == NULL) { return 0; } s = path; nsl = 0; while ((c = *s) != '\0') { if (c == '/') { /* We see a slash. */ if (nsl) { /* Two slashes in a row. */ return 0; } else { /* Remember the slash we saw. */ nsl++; } } else { /* Not a slash. */ /* Path must begin with a slash. */ if (s == path) { return 0; } nsl = 0; } s++; } /* Path must not be empty. */ if (s == path) { return 0; } /* Path must not end with a slash. */ if (c == '/') { return 0; } /* Okay. */ return 1; } /** * Register a dynamic object. * * @param[in] path Path, must include leading / * @param[in] desc Description * @param[in] content_type Content type CT_xxx * @param[in] content_str Content-Type value * @param[in] flags Flags * @param[in] dyn Callback to produce output * @param[in] type Object type (terminal or nonterminal) * * @return handle for further operations */ static void * httpd_register_dyn(const char *path, const char *desc, content_t content_type, const char *content_str, unsigned flags, reg_dyn_t *dyn, or_t type) { httpd_reg_t *reg; if (!httpd_valid_path(path)) { return NULL; } reg = Calloc(1, sizeof(*reg)); reg->path = path; reg->desc = desc; reg->type = type; reg->content_type = content_type; reg->content_str = content_str; reg->flags = flags; reg->u.dyn = dyn; reg->next = httpd_reg; httpd_reg = reg; return reg; } /** * Reply to a successful URI lookup. * * @param[in,out] h State * @param[in] reg Registry entry * @param[in] uri URI * * @return httpd_status_t */ static httpd_status_t httpd_reply(httpd_t *h, httpd_reg_t *reg, const char *uri) { request_t *r = &h->request; const char *nonterm; switch (reg->type) { case OR_DYN_TERM: case OR_DYN_NONTERM: /* Save state. */ r->async_node = reg; /* * Call the dynamic function. * It's responsible for calling httpd_dyn_complete() or * httpd_dyn_error(). */ nonterm = uri + strlen(reg->path); if (*nonterm == '/') { nonterm++; } return (*reg->u.dyn)(nonterm, h); default: break; } httpd_http_header(h, 200, !r->persistent, reg->content_str); httpd_print(h, HP_SEND, "Cache-Control: max-age=43200\n"); switch (r->verb) { case VERB_GET: case VERB_OTHER: /* Generate the body. */ if (reg->content_type == CT_HTML) { httpd_print(h, HP_BUFFER, "\n"); httpd_print(h, HP_BUFFER, "\n"); } switch (reg->type) { case OR_FIXED: httpd_print(h, HP_BUFFER, "%s", reg->u.fixed); break; case OR_FIXED_BINARY: httpd_content_len(h, reg->u.fixed_binary.length); httpd_send(h, (char *)reg->u.fixed_binary.fixed, reg->u.fixed_binary.length); break; case OR_DYN_TERM: case OR_DYN_NONTERM: case OR_DIR: /* Can't happen. */ break; } if (reg->content_type == CT_HTML) { if (reg->flags & HF_TRAILER) { httpd_html_trailer(h, HP_BUFFER); } httpd_print(h, HP_BUFFER, "\n"); } /* Dump the Content-Length now and terminate the response header. */ if (reg->type != OR_FIXED_BINARY) { httpd_print_dump(h, DUMP_WITH_LENGTH); } break; case VERB_HEAD: httpd_print(h, HP_SEND, "\n"); break; } /* If the connection is not persistent, close the connection. */ if (!r->persistent) { return HS_SUCCESS_CLOSE; } else { httpd_reinit_request(r); return HS_SUCCESS_OPEN; } } /** * List a directory as the response. * * @param[in,out] h State * @param[in] uri URI matched * * @return httpd_status_t */ static httpd_status_t httpd_dirlist(httpd_t *h, const char *uri) { request_t *r = &h->request; char *q_uri; httpd_reg_t *reg; httpd_http_header(h, 200, !r->persistent, "text/html; charset=iso8859-1"); switch (r->verb) { case VERB_GET: case VERB_OTHER: /* Generate the body. */ q_uri = html_quote(uri); httpd_print(h, HP_BUFFER, "\n"); httpd_print(h, HP_BUFFER, "\n"); httpd_print(h, HP_BUFFER, " \n"); httpd_print(h, HP_BUFFER, " Directory of %s\n", q_uri); httpd_print(h, HP_BUFFER, " \n"); httpd_print(h, HP_BUFFER, " \n"); httpd_print(h, HP_BUFFER, "

Directory of %s

\n", q_uri); Free(q_uri); for (reg = httpd_reg; reg != NULL; reg = reg->next) { if (!strncmp(reg->path, uri, strlen(uri)) && strchr(reg->path + strlen(uri), '/') == NULL && !(reg->flags & HF_HIDDEN)) { size_t nlen; char *q1, *q2; nlen = strlen(reg->path + strlen(uri)); if (reg->type == OR_DIR || reg->type == OR_DYN_NONTERM) { nlen++; } if (nlen > DIRLIST_NLEN) { nlen = 2; } else { nlen = DIRLIST_NLEN + 2 - nlen; } httpd_print(h, HP_BUFFER, "

%s%s", (q1 = html_quote(reg->alias? reg->alias: reg->path)), (reg->type == OR_DIR && !reg->alias)? "/": "", (q2 = html_quote(reg->path + strlen(uri))), (reg->type == OR_DIR || reg->type == OR_DYN_NONTERM)? "/": ""); Free(q1); Free(q2); while (nlen--) { httpd_print(h, HP_BUFFER, " "); } httpd_print(h, HP_BUFFER, "%s

\n", reg->desc); } } httpd_html_trailer(h, HP_BUFFER); httpd_print(h, HP_BUFFER, "\n"); /* Dump the Content-Length now and terminate the response header. */ httpd_print_dump(h, DUMP_WITH_LENGTH); break; case VERB_HEAD: httpd_print(h, HP_SEND, "\n"); break; } /* If the connection is not persistent, close the connection. */ if (!r->persistent) { return HS_SUCCESS_CLOSE; } else { httpd_reinit_request(r); return HS_SUCCESS_OPEN; } } /** * Look up the value of a field. * * @param[in] name Field name * * @return Field value, or NULL */ static const char * lookup_field(const char *name, field_t *f) { while (f != NULL) { if (!strcasecmp(f->name, name)) { return f->value; } f = f->next; } return NULL; } /** * Redirect a directory name by appending a '/'. * * @param[in,out] h State * @param[in] uri URI matched * * @return httpd_status_t */ static httpd_status_t httpd_redirect(httpd_t *h, const char *uri) { request_t *r = &h->request; const char *host = lookup_field("Host", r->fields); if (host == NULL) { return httpd_error(h, ERRMODE_NONFATAL, CT_HTML, 404, "Document not found."); } r->location = xs_buffer("http://%s%s/", host, uri); httpd_error(h, ERRMODE_NONFATAL, CT_HTML, 301, "The document has moved " "here..", host, uri); Free(r->location); r->location = NULL; if (!r->persistent) { return HS_SUCCESS_CLOSE; } else { httpd_reinit_request(r); return HS_SUCCESS_OPEN; } } /** * URI not found * * @param[in,out] h State * @param[in] uri URI not matched * * @return httpd_status_t */ static httpd_status_t httpd_notfound(httpd_t *h, const char *uri) { request_t *r = &h->request; char *q_uri = html_quote(uri); httpd_error(h, ERRMODE_NONFATAL, CT_HTML, 404, "The requested URL %s was not found on this server.", q_uri); Free(q_uri); if (!r->persistent) { return HS_SUCCESS_CLOSE; } else { httpd_reinit_request(r); return HS_SUCCESS_OPEN; } } /** * Compare a candidate URI to a target URI. * * @param[in] candidate Candidate URI * @param[in] target Target URI * * @return 0 for success, 1 for failure */ static int uricmp(const char *candidate, const char *target) { const char *cp = candidate; const char *tp = target; char c, t; c = *cp++; t = *tp++; while (c != '\0' && t != '\0') { if (c != t) { return 1; } /* * Allow a single '/' in the target to match multiple '/'s in the * candidate. */ if (c == '/') { while ((c = *cp++) == '/') { } } else { c = *cp++; } t = *tp++; } /* If we exhausted the target, we succeeded. */ return !(c == '\0' && t == '\0'); } /** * Compare a candidate URI to a partial target URI. * * @param[in] candidate Candidate URI * @param[in] target Target URI * @param[out] canonp Returned canonical candidate URI * * @return 0 for success, 1 for failure */ static int uricmpp(const char *candidate, const char *target, char **canonp) { const char *cp = candidate; const char *tp = target; char c, t; char *canon = Malloc(strlen(candidate) + 1); char *retp = canon; /* Compare until we exhaust the target. */ c = *cp++; t = *tp++; while (c != '\0' && t != '\0') { if (c != t) { Free(canon); return 1; } *retp++ = c; /* * Allow a single '/' in the target to match multiple '/'s in the * candidate. Copy only the first. */ if (c == '/') { while (c == '/') { c = *cp++; } } else { c = *cp++; } t = *tp++; } if (t != '\0' || (c != '\0' && c != '/')) { Free(canon); return 1; } if (c == '/') { /* Copy one trailing '/'. */ *retp++ = c; while ((c = *cp++) == '/') { } /* Copy the rest. */ *retp++ = c; if (c != '\0') { while ((c = *cp++) != '\0') { *retp++ = c; } *retp = '\0'; } } *canonp = canon; return 0; } /** * Look up a URI in the registry and act on it. * * @param[in,out] h State * @param[in] uri URI to look up, NULL terminated * * @return httpd_status_t */ static httpd_status_t httpd_lookup_uri(httpd_t *h, const char *uri) { httpd_reg_t *reg; char *canon; if (!uricmp(uri, "/")) { return httpd_dirlist(h, "/"); } /* Look for an exact match. */ for (reg = httpd_reg; reg != NULL; reg = reg->next) { switch (reg->type) { case OR_DIR: if (!uricmp(uri, reg->path)) { /* Directory without trailing slash. */ return httpd_redirect(h, uri); } if (uri[strlen(uri) - 1] == '/') { char *copy = NewString(uri); size_t sl = strlen(uri); /* Directory with trailing slash(es). */ while (copy[sl - 1] == '/') { copy[--sl] = '\0'; } if (!uricmp(copy, reg->path)) { Free(copy); return httpd_dirlist(h, uri); } } break; case OR_FIXED: case OR_FIXED_BINARY: case OR_DYN_TERM: /* Terminal object. */ if (!uricmp(uri, reg->path)) { return httpd_reply(h, reg, uri); } break; case OR_DYN_NONTERM: /* Nonterminal object. */ if (!uricmpp(uri, reg->path, &canon)) { httpd_status_t s = httpd_reply(h, reg, canon); Free(canon); return s; } break; } } /* Not found. */ return httpd_notfound(h, uri); } /** * Parse the query field for a URL. * * @param[in] h State * @param[in] query Raw query string from request */ static void parse_queries(httpd_t *h, const char *query) { const char *s = query; field_t *f; field_t *f_last = NULL; bool last = false; char *eov; /* Split the string at each '&'. */ for (s = query; !last; s = eov + 1) { char *eq; char *name; char *value; eov = strchr(s, '&'); if (!eov) { eov = strchr(s, '\0'); last = true; } eq = strchr(s, '='); if (eq == NULL || eq == s || eq > eov) { continue; } name = percent_decode(s, eq - s, false); value = percent_decode(eq + 1, eov - (eq + 1), true); f = Malloc(sizeof(*f) + strlen(name) + 1 + strlen(value) + 1); f->next = NULL; f->name = (char *)(f + 1); strcpy(f->name, name); f->value = f->name + strlen(name) + 1; strcpy(f->value, value); Free(name); Free(value); if (f_last) { f_last->next = f; } else { h->request.queries = f; } f_last = f; } } /** * Digest the entire request. * * The entire text is in r->request_buf, NULL terminated, including newline * characters. The length of the request, not including the NULL, is in * r->nr. The fields in the request are pointed to by f->fields_start. * * @param[in,out] h State * * @return httpd_status_t */ static httpd_status_t httpd_digest_request(httpd_t *h) { request_t *r = &h->request; char *s = r->fields_start; char *cand_uri; char *uri; const char *connection; httpd_status_t rv; char *query; char *fragment; /* * Parse the fields. * We ignore fields we don't understand. * We require, but actually pay no attention to, the host field. * We understand 'connection: close', but ignore other 'connection:' * values. The close state is left in r->persistent. * I'm sure this is HTTP 1.1 blasphemy. */ while (*s) { while (*s != '\n') { char *field_name = s; size_t field_name_len; char *value; size_t value_len; field_t *f; /* The field name needs to start with a non-space, non-colon. */ if (iscntrl((unsigned char)*s) || isspace((unsigned char)*s) || *s == ':') { return httpd_error(h, ERRMODE_FATAL, CT_HTML, 400, "Malformed " "field name in request."); } /* Parse the rest of the name. */ while (*s != '\n' && *s != ':' && !isspace((unsigned char)*s)) { if (iscntrl((unsigned char)*s)) { return httpd_error(h, ERRMODE_FATAL, CT_HTML, 400, "Malformed field name in request."); } s++; } field_name_len = s - field_name; /* Skip spaces after the name (technically illegal). */ while (*s != '\n' && isspace((unsigned char)*s)) { s++; } /* Now we need a colon. */ if (*s != ':') { return httpd_error(h, ERRMODE_FATAL, CT_HTML, 400, "Malformed " "field (missing colon) in request."); } s++; /* Skip spaces after the colon. */ while (*s != '\n' && isspace((unsigned char)*s)) { s++; } /* What's after that whitespace is the value. */ value = s; while (*s != '\n') { s++; } value_len = s - value; /* Trim trailing spaces from the value. */ while (value_len && isspace((unsigned char)value[value_len - 1])) { value_len--; } if (value_len == 0) { return httpd_error(h, ERRMODE_FATAL, CT_HTML, 400, "Malformed " "field (missing value) in request."); } /* Store it. */ f = Malloc(sizeof(*f) + field_name_len + 1 + value_len + 1); f->name = (char *)(f + 1); strncpy(f->name, field_name, field_name_len); f->name[field_name_len] = '\0'; f->value = f->name + field_name_len + 1; strncpy(f->value, value, value_len); f->value[value_len] = '\0'; /* Choke on duplicates. */ if (lookup_field(f->name, r->fields) != NULL) { return httpd_error(h, ERRMODE_FATAL, CT_HTML, 400, "Duplicate " "field in request."); } /* Link it in. */ f->next = r->fields; r->fields = f; } s++; } /* For HTTP 1.1, require a 'Host:' field. */ if (!r->http_1_0 && lookup_field("Host", r->fields) == NULL) { return httpd_error(h, ERRMODE_FATAL, CT_HTML, 400, "Missing hostname."); } /* Check for connection close request. */ if ((connection = lookup_field("Connection", r->fields)) != NULL && !strcasecmp(connection, "close")) { r->persistent = false; } /* * Split the URI at '?' or '#' before doing percent decodes. * This allows '?' and '#' to be percent-encoded in any of the elements. */ query = strchr(r->uri, '?'); fragment = strchr(r->uri, '#'); if (query && (!fragment || query < fragment)) { *query = '\0'; r->query = query + 1; if (fragment) { *fragment = '\0'; r->fragment = fragment + 1; } } if (fragment && (!query || fragment < query)) { *fragment = '\0'; r->fragment = fragment + 1; } /* Do percent substitution on the URI. */ cand_uri = percent_decode(r->uri, strlen(r->uri), false); if (cand_uri == NULL) { return httpd_error(h, ERRMODE_FATAL, CT_HTML, 400, "Invalid URI (percent substution error)."); } /* * Parse the URI. * We understand requests that start with '/', which are relative to our * root. (After that, we expect '3270/'.) * We understand requests that start with 'http:///', and * ignore everything through . * Anything else we barf on. */ if (strlen(cand_uri) > 7 && !strncasecmp(cand_uri, "http://", 7)) { char *slash = strchr(cand_uri + 7, '/'); if (slash == NULL) { Free(cand_uri); return httpd_error(h, ERRMODE_FATAL, CT_HTML, 400, "Invalid URI " "syntax after http://."); } else { uri = slash; } } else { uri = cand_uri; } if (uri[0] != '/') { Free(cand_uri); return httpd_error(h, ERRMODE_FATAL, CT_HTML, 400, "Invalid URI"); } /* Pick apart the query fields. */ if (r->query) { parse_queries(h, r->query); } /* * Now we have a URI in what seems like valid form. * Search the registry for a match. */ rv = httpd_lookup_uri(h, cand_uri); Free(cand_uri); return rv; } /** * Process a byte of incoming HTTP data. * * @param[in,out] h State * @param[in] c Next input character * * @return httpd_status_t */ static int httpd_input_char(httpd_t *h, char c) { request_t *r = &h->request; /* * CRLF processing. We translate CRs into Newlines, and ignore LFs * after CRs. */ if (h->cr) { h->cr = false; /* CR followed by LF. Ignore the LF. */ if (c == '\n') { return HS_CONTINUE; } } if (c == '\r') { h->cr = true; /* Treat CRs as Newline characters. */ c = '\n'; } /* If there's no room to store the character, we're done. */ if (r->nr >= MAX_HTTPD_REQUEST) { return httpd_error(h, r->saw_first? ERRMODE_FATAL: ERRMODE_NON_HTTP, CT_HTML, 400, "The request is too big."); } /* Store the character. */ r->request_buf[r->nr++] = c; /* Check for a newline. */ if (c == '\n') { if (r->rll == 0) { /* Empty line: digest the entire request. */ if (!r->saw_first) { return httpd_error(h, ERRMODE_FATAL, CT_HTML, 400, "Missing request."); } r->request_buf[r->nr] = '\0'; return httpd_digest_request(h); } else { /* Beginning of new line; set the length to 0. */ r->rll = 0; /* If this is the first line, validate it. */ if (!r->saw_first) { r->request_buf[r->nr - 1] = '\0'; r->fields_start = &r->request_buf[r->nr]; r->saw_first = true; return httpd_digest_request_line(h); } } } else { /* Non-newline character: increment the line length. */ r->rll++; } /* Not done yet. */ return HS_CONTINUE; } /***************************************************************************** * Functions called by the main logic. *****************************************************************************/ /** * Register a directory (give its description) * * @param[in] path Path, must include leading / * @param[in] desc Description * * @return handle for further operations */ void * httpd_register_dir(const char *path, const char *desc) { httpd_reg_t *reg; if (!httpd_valid_path(path)) { return NULL; } reg = Calloc(1, sizeof(*reg)); reg->path = path; reg->desc = desc; reg->type = OR_DIR; reg->next = httpd_reg; httpd_reg = reg; return reg; } /** * Register a fixed-content object. * * @param[in] path Path, must include leading / * @param[in] desc Description * @param[in] content_type Content type CT_xxx * @param[in] content_str Content-Type value * @param[in] flags Flags * @param[in] fixed Fixed text to return * * @return handle for further operations */ void * httpd_register_fixed(const char *path, const char *desc, content_t content_type, const char *content_str, unsigned flags, const char *fixed) { httpd_reg_t *reg; if (!httpd_valid_path(path)) { return NULL; } reg = Calloc(1, sizeof(*reg)); reg->path = path; reg->desc = desc; reg->type = OR_FIXED; reg->content_type = content_type; reg->content_str = content_str; reg->flags = flags; reg->u.fixed = fixed; reg->next = httpd_reg; httpd_reg = reg; return reg; } /** * Register a fixed-content binary object. * * @param[in] path Path, must include leading / * @param[in] desc Description * @param[in] content_type Content type CT_xxx * @param[in] content_str Content-Type value * @param[in] flags Flags * @param[in] fixed Fixed text to return * @param[in] length Length of text * * @return handle for further operations */ void * httpd_register_fixed_binary(const char *path, const char *desc, content_t content_type, const char *content_str, unsigned flags, const unsigned char *fixed, unsigned length) { httpd_reg_t *reg; if (!httpd_valid_path(path)) { return NULL; } reg = Calloc(1, sizeof(*reg)); reg->path = path; reg->desc = desc; reg->type = OR_FIXED_BINARY; reg->content_type = content_type; reg->content_str = content_str; reg->flags = flags; reg->u.fixed_binary.fixed = fixed; reg->u.fixed_binary.length = length; reg->next = httpd_reg; httpd_reg = reg; return reg; } /** * Register a dynamic terminal object. * * @param[in] path Path, must include leading / * @param[in] desc Description * @param[in] content_type Content type CT_xxx * @param[in] content_str Content-Type value * @param[in] flags Flags * @param[in] dyn Callback to produce output * * @return handle for further operations */ void * httpd_register_dyn_term(const char *path, const char *desc, content_t content_type, const char *content_str, unsigned flags, reg_dyn_t *dyn) { return httpd_register_dyn(path, desc, content_type, content_str, flags, dyn, OR_DYN_TERM); } /** * Register a dynamic nonterminal object. * * @param[in] path Path, must include leading / * @param[in] desc Description * @param[in] content_type Content type CT_xxx * @param[in] content_str Content-Type value * @param[in] flags Flags * @param[in] dyn Callback to produce output * * @return handle for further operations */ void * httpd_register_dyn_nonterm(const char *path, const char *desc, content_t content_type, const char *content_str, unsigned flags, reg_dyn_t *dyn) { return httpd_register_dyn(path, desc, content_type, content_str, flags, dyn, OR_DYN_NONTERM); } /** * Register an alias for a node, displayed in the directory entry. * * @param[in] nhandle Node handle returned from httpd_register_xxx() * @param[in] text Alternate text to display */ void httpd_set_alias(void *nhandle, const char *text) { httpd_reg_t *reg = nhandle; if (reg) { reg->alias = text; } } /** * Initialize a new connection. * * Called when a connection is accepted. * * @param[in] mhandle Handle from main process * @param[in] client_name Client name, for debug * * @return handle for further operations */ void * httpd_new(void *mhandle, const char *client_name) { httpd_t *h; h = Malloc(sizeof(httpd_t)); memset(h, 0, sizeof(*h)); httpd_init_state(h, mhandle); vtrace("h< [%lu] New session from %s\n", h->seq, client_name); return h; } /** * Process incoming HTTP data. * * Called with data read from the HTTP socket. * * @param[in] dhandle handle returned by httpd_new * @param[in] data data buffer * @param[in] len length of data in buffer * * @return httpd_status_t */ httpd_status_t httpd_input(void *dhandle, const char *data, size_t len) { httpd_t *h = (httpd_t *)dhandle; request_t *r = &h->request; size_t i; httpd_status_t rv = HS_CONTINUE; httpd_data_trace(h, "<", data, len, &r->it_offset); /* Process a byte at a time, skipping CRs. */ for (i = 0; i < len; i++) { switch ((rv = httpd_input_char(h, data[i]))) { case HS_CONTINUE: /* Keep parsing. */ continue; case HS_SUCCESS_OPEN: httpd_reinit_request(r); return rv; case HS_ERROR_OPEN: /* Request failed, but keep the socket open. */ httpd_reinit_request(r); /* fall through */ case HS_ERROR_CLOSE: /* Request failed, close the socket. */ case HS_SUCCESS_CLOSE: /* Request succeeded, close the socket. */ case HS_PENDING: /* Request pending, hold off further input. */ return rv; } } /* Success, at least so far. */ return rv; } /** * Close the HTTPD connection. * * @param[in] dhandle Handle returned by httpd_new * @param[in] why Reason (for debug) */ void httpd_close(void *dhandle, const char *why) { httpd_t *h = dhandle; vtrace("h> [%lu] Close: %s\n", h->seq, why); /* Wipe the existing request state. */ httpd_free_request(&h->request); /* Free it. */ memset(h, 0, sizeof(*h)); Free(h); } /** * Map a dhandle (handle returned from httpd_new()) onto an mhandle (handle * passed into httpd_new()). * * This is a helper function used during async processing. * * @param[in] dhandle Daemon handle * * @return Main handle */ void * httpd_mhandle(void *dhandle) { httpd_t *h = dhandle; return h->mhandle; } /***************************************************************************** * Functions called by methods. *****************************************************************************/ /** * Successfully complete a dynamic HTTP request. * * Called from a synchronous method or an asynchronous completion function. * Writes the entire response back to the socket. * * @param[in] dhandle handle returned by httpd_new * @param[in] format printf format string * * @return httpd_status_t, suitable for return from completion function * (HS_SUCCESS_OPEN or HS_SUCCESS_CLOSE). */ httpd_status_t httpd_dyn_complete(void *dhandle, const char *format, ...) { httpd_t *h = (httpd_t *)dhandle; request_t *r = &h->request; httpd_reg_t *reg = r->async_node; va_list ap; /* Un-mark the node. */ r->async_node = NULL; /* Generate the output. */ httpd_http_header(h, 200, !r->persistent, reg->content_str); httpd_print(h, HP_SEND, "Cache-Control: no-store\n"); switch (r->verb) { case VERB_GET: case VERB_OTHER: /* Generate the body. */ if (reg->content_type == CT_HTML) { httpd_print(h, HP_BUFFER, "\n"); httpd_print(h, HP_BUFFER, "\n"); } va_start(ap, format); httpd_vprint(h, HP_BUFFER, format, ap); va_end(ap); if (reg->content_type == CT_HTML) { if (reg->flags & HF_TRAILER) { httpd_html_trailer(h, HP_BUFFER); } httpd_print(h, HP_BUFFER, "\n"); } /* Dump the Content-Length now and terminate the response header. */ httpd_print_dump(h, DUMP_WITH_LENGTH); break; case VERB_HEAD: httpd_print(h, HP_SEND, "\n"); break; } /* Return status. */ if (!r->persistent) { return HS_SUCCESS_CLOSE; } else { httpd_reinit_request(r); return HS_SUCCESS_OPEN; } } /** * Unsuccessfully complete a dynamic HTTP request. * * Called from a synchronous method or an asynchronous completion function. * Writes the entire response back to the socket. * * @param[in] dhandle Connection handle * @param[in] content_type Content type * @param[in] status_code HTTP error code * @param[in] format text to display * * @return httpd_status_t, suitable for return from completion function * (HS_ERROR_OPEN or HS_ERROR_CLOSE). */ httpd_status_t httpd_dyn_error(void *dhandle, content_t content_type, int status_code, const char *format, ...) { httpd_t *h = dhandle; request_t *r = &h->request; va_list ap; httpd_status_t rv; /* Un-mark the node. */ r->async_node = NULL; va_start(ap, format); rv = httpd_verror(h, ERRMODE_NONFATAL, content_type, status_code, r->verb, format, ap); va_end(ap); return rv; } /** * Quote text to pass transparently through to HTML. * * @param[in] text Text to expand * * @return Expanded text, needs to be freed afterward */ char * html_quote(const char *text) { varbuf_t r; char c; vb_init(&r); while ((c = *text++)) { switch (c) { case '&': vb_appends(&r, "&"); break; case '<': vb_appends(&r, "<"); break; case '>': vb_appends(&r, ">"); break; case '"': vb_appends(&r, """); break; default: vb_append(&r, &c, 1); break; } } return vb_consume(&r); } /** * Quote a URI. Uses percent encoding. * * @param[in] uri URI to quote * * @return Expanded URI, needs to be freed afterward */ char * uri_quote(const char *text) { varbuf_t r; char c; vb_init(&r); while ((c = *text++)) { if (c > ' ' && c < 0x7f && c != '%') { vb_append(&r, &c, 1); } else { vb_appendf(&r, "%%%02x", c & 0xff); } } return vb_consume(&r); } /** * Fetch a query from the current request. * * @param[in] dhandle Connection handle * @param[in] name Name of item to fetch * * @return Query value, or NULL */ const char * httpd_fetch_query(void *dhandle, const char *name) { httpd_t *h = dhandle; request_t *r = &h->request; field_t *f; for (f = r->queries; f != NULL; f = f->next) { if (!strcmp(f->name, name)) { return f->value; } } return NULL; } suite3270-4.1/Common/httpd-io.c000066400000000000000000000450341413735575200161710ustar00rootroot00000000000000/* * Copyright (c) 2014-2016, 2018-2021 Paul Mattes. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the names of Paul Mattes nor the names of his contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO * EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * httpd-io.c * x3270 webserver, I/O module */ #include "globals.h" #if !defined(_WIN32) /*[*/ # include # include # include # include #endif /*]*/ #include #include #include #include #include "appres.h" #include "bind-opt.h" #include "lazya.h" #include "popups.h" #include "resources.h" #include "task.h" #include "toggles.h" #include "trace.h" #include "utils.h" #include "varbuf.h" #include "httpd-core.h" #include "httpd-io.h" #include "httpd-nodes.h" #if defined(_WIN32) /*[*/ # include "w3misc.h" # include "winprint.h" #endif /*]*/ #define IDLE_MAX 15 struct hio_listener { llist_t link; /* list linkage */ int n_sessions; socket_t listen_s; #if defined(_WIN32) /*[*/ HANDLE listen_event; #endif /*]*/ ioid_t listen_id; char *desc; }; static hio_listener_t *global_listener = NULL; static llist_t listeners = LLIST_INIT(listeners); #define N_SESSIONS 32 typedef struct { llist_t link; /* list linkage */ socket_t s; /* socket */ #if defined(_WIN32) /*[*/ HANDLE event; #endif /*]*/ void *dhandle; /* httpd protocol handle */ int idle; ioid_t ioid; /* AddInput ID */ ioid_t toid; /* AddTimeOut ID */ struct { /* pending command state: */ sendto_callback_t *callback; /* callback function */ content_t content_type; /* content type */ varbuf_t result; /* accumulated result data */ bool done; /* is the command done? */ } pending; hio_listener_t *listener; } session_t; llist_t sessions = LLIST_INIT(sessions); /** * Return the text for the most recent socket error. * * @return Error text */ static const char * socket_errtext(void) { #if !defined(_WIN32) /*[*/ return strerror(errno); #else /*][*/ return win32_strerror(GetLastError()); #endif /*]*/ } /** * Close the session associated with a particular socket. * Called from the HTTPD logic when a fatal error or EOF occurs. * * @param[in] session Session */ static void hio_socket_close(session_t *session) { SOCK_CLOSE(session->s); if (session->ioid != NULL_IOID) { RemoveInput(session->ioid); } if (session->toid != NULL_IOID) { RemoveTimeOut(session->toid); } #if defined(_WIN32) /*[*/ CloseHandle(session->event); #endif /*]*/ vb_free(&session->pending.result); llist_unlink(&session->link); Free(session); if (session->listener != NULL) { session->listener->n_sessions--; } } /** * httpd timeout. * * @param[in] id timeout ID */ static void hio_timeout(ioid_t id) { session_t *session; session = NULL; FOREACH_LLIST(&sessions, session, session_t *) { if (session->toid == id) { break; } } FOREACH_LLIST_END(&sessions, session, session_t *); if (session == NULL) { vtrace("httpd mystery timeout\n"); return; } session->toid = NULL_IOID; httpd_close(session->dhandle, "timeout"); hio_socket_close(session); } /** * New inbound data for an httpd connection. * * @param[in] fd socket file descriptor * @param[in] id I/O ID */ void hio_socket_input(iosrc_t fd, ioid_t id) { session_t *session; char buf[1024]; ssize_t nr; session = NULL; FOREACH_LLIST(&sessions, session, session_t *) { if (session->ioid == id) { break; } } FOREACH_LLIST_END(&sessions, session, session_t *); if (session == NULL) { vtrace("httpd mystery input\n"); return; } /* Move this session to the front of the list. */ llist_unlink(&session->link); LLIST_PREPEND(&session->link, sessions); session->idle = 0; if (session->toid != NULL_IOID) { RemoveTimeOut(session->toid); session->toid = NULL_IOID; } nr = recv(session->s, buf, sizeof(buf), 0); if (nr <= 0) { const char *ebuf; bool harmless = false; if (nr < 0) { if (socket_errno() == SE_EWOULDBLOCK) { harmless = true; } ebuf = lazyaf("recv error: %s", socket_errtext()); vtrace("httpd %s%s\n", ebuf, harmless? " (harmless)": ""); } else { ebuf = "session EOF"; } if (!harmless) { httpd_close(session->dhandle, ebuf); hio_socket_close(session); } } else { httpd_status_t rv; rv = httpd_input(session->dhandle, buf, nr); if (rv < 0) { httpd_close(session->dhandle, "protocol error"); hio_socket_close(session); } else if (rv == HS_PENDING) { /* Stop input on this socket. */ RemoveInput(session->ioid); session->ioid = NULL_IOID; } else if (session->toid == NULL_IOID) { /* Leave input enabled and start the timeout. */ session->toid = AddTimeOut(IDLE_MAX * 1000, hio_timeout); } } } /** * New inbound connection for httpd. * * @param[in] fd socket file descriptor * @param[in] id I/O ID */ void hio_connection(iosrc_t fd, ioid_t id) { hio_listener_t *l; bool found = false; socket_t t; union { struct sockaddr sa; struct sockaddr_in sin; #if defined(X3270_IPV6) /*[*/ struct sockaddr_in6 sin6; #endif /*]*/ } sa; socklen_t len; char hostbuf[128]; session_t *session; /* Find the listener. */ FOREACH_LLIST(&listeners, l, hio_listener_t *) { if (l->listen_id == id) { found = true; break; } } FOREACH_LLIST_END(&sessions, session, session_t *); if (!found) { vtrace("httpd accept: session not found\n"); return; } /* Accept the connection. */ len = sizeof(sa); t = accept(l->listen_s, &sa.sa, &len); if (t == INVALID_SOCKET) { vtrace("httpd accept error: %s%s\n", socket_errtext(), (socket_errno() == SE_EWOULDBLOCK)? " (harmless)": ""); return; } if (l->n_sessions >= N_SESSIONS) { vtrace("Too many connections.\n"); SOCK_CLOSE(t); return; } #if !defined(_WIN32) /*[*/ fcntl(t, F_SETFD, 1); #endif /*]*/ session = Malloc(sizeof(session_t)); memset(session, 0, sizeof(session_t)); session->listener = l; vb_init(&session->pending.result); session->s = t; #if defined(_WIN32) /*[*/ session->event = CreateEvent(NULL, FALSE, FALSE, NULL); if (session->event == NULL) { vtrace("httpd: can't create socket handle\n"); SOCK_CLOSE(t); Free(session); return; } if (WSAEventSelect(session->s, session->event, FD_READ | FD_CLOSE) != 0) { vtrace("httpd: Can't set socket handle events\n"); CloseHandle(session->event); SOCK_CLOSE(t); Free(session); return; } #endif /*]*/ if (sa.sa.sa_family == AF_INET) { session->dhandle = httpd_new(session, lazyaf("%s:%u", inet_ntop(AF_INET, &sa.sin.sin_addr, hostbuf, sizeof(hostbuf)), ntohs(sa.sin.sin_port))); } #if defined(X3270_IPV6) /*[*/ else if (sa.sa.sa_family == AF_INET6) { session->dhandle = httpd_new(session, lazyaf("%s:%u", inet_ntop(AF_INET6, &sa.sin6.sin6_addr, hostbuf, sizeof(hostbuf)), ntohs(sa.sin6.sin6_port))); } #endif /*]*/ else { session->dhandle = httpd_new(session, "???"); } #if !defined(_WIN32) /*[*/ session->ioid = AddInput(t, hio_socket_input); #else /*][*/ session->ioid = AddInput(session->event, hio_socket_input); #endif /*]*/ /* Set the timeout for the first line of input. */ session->toid = AddTimeOut(IDLE_MAX * 1000, hio_timeout); LLIST_APPEND(&session->link, sessions); l->n_sessions++; } /** * Initialize an httpd socket. * * @param[in] sa address and port to listen on * @param[in] sa_len length of sa * * @returns listen context */ hio_listener_t * hio_init_x(struct sockaddr *sa, socklen_t sa_len) { int on = 1; char hostbuf[128]; hio_listener_t *l = Calloc(sizeof(hio_listener_t), 1); llist_init(&l->link); #if !defined(_WIN32) /*[*/ l->listen_s = socket(sa->sa_family, SOCK_STREAM, 0); #else /*][*/ l->listen_s = WSASocket(sa->sa_family, SOCK_STREAM, 0, NULL, 0, WSA_FLAG_NO_HANDLE_INHERIT); #endif /*]*/ if (l->listen_s == INVALID_SOCKET) { popup_an_error("httpd socket: %s", socket_errtext()); goto fail; } if (setsockopt(l->listen_s, SOL_SOCKET, SO_REUSEADDR, (char *)&on, sizeof(on)) < 0) { popup_an_error("httpd setsockopt: %s", socket_errtext()); SOCK_CLOSE(l->listen_s); l->listen_s = INVALID_SOCKET; goto fail; } if (bind(l->listen_s, sa, sa_len) < 0) { popup_an_error("httpd bind: %s", socket_errtext()); SOCK_CLOSE(l->listen_s); l->listen_s = INVALID_SOCKET; goto fail; } if (getsockname(l->listen_s, sa, &sa_len) < 0) { popup_an_error("httpd getsockname: %s", socket_errtext()); SOCK_CLOSE(l->listen_s); l->listen_s = INVALID_SOCKET; goto fail; } if (listen(l->listen_s, 10) < 0) { popup_an_error("httpd listen: %s", socket_errtext()); SOCK_CLOSE(l->listen_s); l->listen_s = INVALID_SOCKET; goto fail; } #if !defined(_WIN32) /*[*/ fcntl(l->listen_s, F_SETFD, 1); #endif /*]*/ #if defined(_WIN32) /*[*/ l->listen_event = CreateEvent(NULL, FALSE, FALSE, NULL); if (l->listen_event == NULL) { popup_an_error("httpd: cannot create listen handle"); SOCK_CLOSE(l->listen_s); l->listen_s = INVALID_SOCKET; goto fail; } if (WSAEventSelect(l->listen_s, l->listen_event, FD_ACCEPT) != 0) { popup_an_error("httpd: WSAEventSelect failed: %s", socket_errtext()); CloseHandle(l->listen_event); l->listen_event = INVALID_HANDLE_VALUE; SOCK_CLOSE(l->listen_s); l->listen_s = INVALID_SOCKET; goto fail; } l->listen_id = AddInput(l->listen_event, hio_connection); #else /*][*/ l->listen_id = AddInput(l->listen_s, hio_connection); #endif /*]*/ LLIST_APPEND(&l->link, listeners); if (sa->sa_family == AF_INET) { struct sockaddr_in *sin = (struct sockaddr_in *)sa; l->desc = xs_buffer("%s:%u", inet_ntop(sa->sa_family, &sin->sin_addr, hostbuf, sizeof(hostbuf)), ntohs(sin->sin_port)); vtrace("Listening for HTTP on %s\n", l->desc); } #if defined(X3270_IPV6) /*[*/ else if (sa->sa_family == AF_INET6) { struct sockaddr_in6 *sin6 = (struct sockaddr_in6 *)sa; l->desc = xs_buffer("[%s]:%u", inet_ntop(sa->sa_family, &sin6->sin6_addr, hostbuf, sizeof(hostbuf)), ntohs(sin6->sin6_port)); vtrace("Listening for HTTP on %s\n", l->desc); } #endif /*]*/ goto done; fail: Free(l); l = NULL; done: return l; } /** * Initialize the global httpd socket. * * @param[in] sa address and port to listen on * @param[in] sa_len length of sa */ void hio_init(struct sockaddr *sa, socklen_t sa_len) { if (global_listener == NULL) { global_listener = hio_init_x(sa, sa_len); Free(sa); } } /** * Stop listening globally for HTTP connections. */ void hio_stop_x(hio_listener_t *l) { session_t *session; if (l->listen_id == NULL_IOID) { return; } RemoveInput(l->listen_id); l->listen_id = NULL_IOID; SOCK_CLOSE(l->listen_s); l->listen_s = INVALID_SOCKET; #if defined(_WIN32) /*[*/ CloseHandle(l->listen_event); l->listen_event = INVALID_HANDLE_VALUE; #endif /*]*/ /* Detach any sessions. */ FOREACH_LLIST(&sessions, session, session_t *) { if (session->listener == l) { session->listener = NULL; } } FOREACH_LLIST_END(&sessions, session, session_t *); l->n_sessions = 0; vtrace("Stopped listening for HTTP connections on %s\n", l->desc); Replace(l->desc, NULL); llist_unlink(&l->link); Free(l); } /** * Stop listening for HTTP connections. */ void hio_stop(void) { if (global_listener != NULL) { hio_stop_x(global_listener); global_listener = NULL; } } /** * Send output on an http session. * * @param[in] mhandle our handle * @param[in] buf buffer to transmit * @param[in] len length of buffer */ void hio_send(void *mhandle, const char *buf, size_t len) { session_t *s = mhandle; ssize_t nw; nw = send(s->s, buf, (int)len, 0); if (nw < 0) { vtrace("http send error: %s\n", socket_errtext()); } } /** * Incremental data callback from x3270 back to httpd. * * @param[in] handle handle * @param[in] buf buffer * @param[in] len size of buffer * @param[in] success true if data, false if error message */ static void hio_data(task_cbh handle, const char *buf, size_t len, bool success) { session_t *s = handle; if (s->pending.content_type == CT_HTML) { size_t i; char c; /* Quote HTML in the response. */ for (i = 0; i < len; i++) { c = buf[i]; switch (c) { case '&': vb_appends(&s->pending.result, "&"); break; case '<': vb_appends(&s->pending.result, "<"); break; case '>': vb_appends(&s->pending.result, ">"); break; case '"': vb_appends(&s->pending.result, """); break; default: vb_append(&s->pending.result, &c, 1); break; } } } else if (s->pending.content_type == CT_JSON) { size_t i; char c; /* Quote JSON in the response. */ vb_appends(&s->pending.result, " \""); for (i = 0; i < len; i++) { c = buf[i]; switch (c) { case '"': vb_appends(&s->pending.result, "\\\""); break; case '\\': vb_appends(&s->pending.result, "\\\\"); break; case '\r': vb_appends(&s->pending.result, "\\r"); break; case '\n': vb_appends(&s->pending.result, "\\n"); break; case '\t': vb_appends(&s->pending.result, "\\t"); break; case '\f': vb_appends(&s->pending.result, "\\f"); break; default: vb_append(&s->pending.result, &c, 1); break; } } vb_appends(&s->pending.result, "\","); } else { /* Plain text. */ vb_append(&s->pending.result, buf, len); } vb_appends(&s->pending.result, "\n"); } /** * Completion callback from x3270 back to httpd. * * @param[in] handle handle * @param[in] success true if command succeeded * @param[in] abort true if aborting * * @return True if the context is complete */ static bool hio_complete(task_cbh handle, bool success, bool abort) { session_t *s = handle; char *prompt = task_cb_prompt(handle); /* We're done. */ s->pending.done = true; /* Pass the result up to the node. */ s->pending.callback(s->dhandle, success? SC_SUCCESS: SC_USER_ERROR, vb_buf(&s->pending.result), vb_len(&s->pending.result), prompt, strlen(prompt)); /* Get ready for the next command. */ vb_reset(&s->pending.result); /* This is always the end of the command. */ return true; } /** * Send a command to x3270. * * @param[in] cmd command to send, not including the newline and * @param[in] callback callback function for completion * @param[in] handle handle to pass to completion callback function * @param[in] content_type How to handle content * * @return sendto_t */ sendto_t hio_to3270(const char *cmd, sendto_callback_t *callback, void *dhandle, content_t content_type) { static tcb_t httpd_cb = { "httpd", IA_HTTPD, CB_NEW_TASKQ, hio_data, hio_complete, NULL }; size_t sl; session_t *s = httpd_mhandle(dhandle); sl = strlen(cmd); if (sl == 0) { /* No empty commands, please. */ return SENDTO_INVALID; } /* Remove any trailing NL or CR/LF. */ if (cmd[sl - 1] == '\n') { sl--; } if (sl && cmd[sl - 1] == '\r') { sl--; } if (!sl || strchr(cmd, '\r') != NULL || strchr(cmd, '\n') != NULL) { /* No empty commands, and no embedded CRs or LFs. */ return SENDTO_INVALID; } /* Enqueue the command. */ s->pending.callback = callback; s->pending.content_type = content_type; s->pending.done = false; push_cb(cmd, sl, &httpd_cb, s); /* * It's possible for the command to have completed already. * If so, return SENDTO_COMPLETE. * Otherwise, it's just queued; return SENDTO_PENDING. */ return s->pending.done? SENDTO_COMPLETE: SENDTO_PENDING; } /** * Asynchronous completion. * * @param[in] dhandle State * @param[in] rv Completion status */ void hio_async_done(void *dhandle, httpd_status_t rv) { session_t *session = httpd_mhandle(dhandle); if (rv < 0) { hio_socket_close(session); return; } /* Allow more input. */ if (session->ioid == NULL_IOID) { #if !defined(_WIN32) /*[*/ session->ioid = AddInput(session->s, hio_socket_input); #else /*][*/ session->ioid = AddInput(session->event, hio_socket_input); #endif /*]*/ } /* * Set a timeout for that input to arrive. We didn't set this timeout * as soon as the last input arrived, because it might have taken us a * long time to proces the last request. */ if (session->toid == NULL_IOID) { session->toid = AddTimeOut(IDLE_MAX * 1000, hio_timeout); } } /** * Upcall for toggling the global HTTP listener on and off. * * @param[in] name Name of toggle * @param[in] value Toggle value * @param[out] canonical_value Returned canonical form of value * @returns true if toggle changed successfully */ static bool hio_toggle_upcall(const char *name, const char *value) { struct sockaddr *sa; socklen_t sa_len; hio_stop(); if (value == NULL || !*value) { Replace(appres.httpd_port, NULL); return true; } if (!parse_bind_opt(value, &sa, &sa_len)) { popup_an_error("Invalid %s: %s", name, value); return false; } Replace(appres.httpd_port, canonical_bind_opt(sa)); hio_init(sa, sa_len); return true; } /** * Register httpd with the rest of the system. */ void hio_register(void) { register_extended_toggle(ResHttpd, hio_toggle_upcall, NULL, canonical_bind_opt_res, (void **)&appres.httpd_port, XRM_STRING); } suite3270-4.1/Common/httpd-nodes.c000066400000000000000000000371031413735575200166700ustar00rootroot00000000000000/* * Copyright (c) 2014-2019, 2021 Paul Mattes. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the names of Paul Mattes nor the names of his contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO * EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * httpd-nodes.c * x3270 webserver, methods for HTTP objects */ #include "globals.h" #if !defined(_WIN32) /*[*/ # include # include # include # include #endif /*]*/ #include #include #include #include "fprint_screen.h" #include "varbuf.h" #include "httpd-core.h" #include "httpd-io.h" #include "httpd-nodes.h" #if defined(_WIN32) /*[*/ # include "winprint.h" #endif /*]*/ extern unsigned char favicon[]; extern unsigned favicon_size; /** * Capture the screen image. * * @param[in] d Session handle * @param[out] image Image in HTML, if succeeded; must free when finished * @param[out] status Error code, if failed * * @return true for success, false for failure */ static bool hn_image(void *dhandle, varbuf_t *image, httpd_status_t *status) { httpd_status_t rv; int fd; FILE *f; char *temp_name; char buf[8192]; /* Open the temporary file. */ #if defined(_WIN32) /*[*/ fd = win_mkstemp(&temp_name, P_HTML); #else /*][*/ temp_name = NewString("/tmp/x3hXXXXXX"); fd = mkstemp(temp_name); #endif /*]*/ if (fd < 0) { rv = httpd_dyn_error(dhandle, CT_HTML, 400, "Internal error (open)"); unlink(temp_name); Free(temp_name); *status = rv; return false; } f = fdopen(fd, "w+"); if (f == NULL) { rv = httpd_dyn_error(dhandle, CT_HTML, 400, "Internal error (fdopen)"); close(fd); unlink(temp_name); Free(temp_name); *status = rv; return false; } /* Write the screen to it in HTML. */ switch (fprint_screen(f, P_HTML, FPS_NO_HEADER | FPS_OIA, NULL, NULL, NULL)) { case FPS_STATUS_SUCCESS: case FPS_STATUS_SUCCESS_WRITTEN: break; case FPS_STATUS_ERROR: case FPS_STATUS_CANCEL: rv = httpd_dyn_error(dhandle, CT_HTML, 400, "Internal error (fprint_screen)"); fclose(f); unlink(temp_name); Free(temp_name); *status = rv; return false; case FPS_STATUS_WAIT: assert(false); return false; } /* Read it back into a varbuf_t. */ fflush(f); rewind(f); vb_init(image); while (fgets(buf, sizeof(buf), f) != NULL) { vb_appends(image, buf); } /* Dispose of the file. */ fclose(f); unlink(temp_name); Free(temp_name); /* Success. */ return true; } /** * Callback for the screen image dynamic node. * * @param[in] uri URI * @param[in] dhandle Session handle * * @return httpd_status_t */ static httpd_status_t hn_screen_image(const char *uri, void *dhandle) { httpd_status_t rv; varbuf_t r; /* Get the image. */ if (hn_image(dhandle, &r, &rv)) { /* Success: Write the response. */ rv = httpd_dyn_complete(dhandle, "\n\ 3270 Screen Image\n\ \n\ \n\ %.*s\n", (int)vb_len(&r), vb_buf(&r)); vb_free(&r); } return rv; } /* The tiny HTML form on the interactive page. */ #define CMD_FORM \ "
\n\ Action and parameters:
\n\ \n\ \n\
\n" /** * Completion callback for the interactive form. * * @param[in] dhandle daemon handle * @param[in] cbs completion status * @param[in] buf data buffer * @param[in] len length of data buffer * @param[in] sl_buf status-line buffer * @param[in] sl_len length of status-line buffer */ static void dyn_form_complete(void *dhandle, sendto_cbs_t cbs, const char *buf, size_t len, const char *sl_buf, size_t sl_len) { varbuf_t r; httpd_status_t rv = HS_CONTINUE; switch (cbs) { case SC_SUCCESS: if (hn_image(dhandle, &r, &rv)) { if (len) { rv = httpd_dyn_complete(dhandle, "\n\ Interactive Form\n\ \n\ \n" CMD_FORM "
\n\ %s\n\

Status

\n\
%.*s
\n\

Result

\n\
%.*s
", vb_buf(&r), sl_len, sl_buf, len, buf); } else { rv = httpd_dyn_complete(dhandle, "\n\ Interactive Form\n\ \n\ \n" CMD_FORM "
\n\ %s\n\

Status

\n\
%.*s
\n\

Result

\n\ (none)", vb_buf(&r), sl_len, sl_buf); } vb_free(&r); } break; case SC_USER_ERROR: rv = httpd_dyn_error(dhandle, CT_HTML, 400, "%.*s", len, buf); break; case SC_SYSTEM_ERROR: rv = httpd_dyn_error(dhandle, CT_HTML, 500, "%.*s", len, buf); break; } hio_async_done(dhandle, rv); } /** * Callback for the interactive form dynamic node. * * @param[in] uri URI * @param[in] dhandle Session handle * * @return httpd_status_t */ static httpd_status_t hn_interact(const char *uri, void *dhandle) { const char *action; httpd_status_t rv; varbuf_t r; /* If the specified an action, execute it. */ action = httpd_fetch_query(dhandle, "action"); if (action && *action) { switch (hio_to3270(action, dyn_form_complete, dhandle, CT_TEXT)) { case SENDTO_COMPLETE: return HS_SUCCESS_OPEN; /* not strictly accurate */ case SENDTO_PENDING: return HS_PENDING; case SENDTO_INVALID: return httpd_dyn_error(dhandle, CT_HTML, 400, "Invalid 3270 action.\n"); default: case SENDTO_FAILURE: return httpd_dyn_error(dhandle, CT_HTML, 500, "Processing error.\n"); } } /* Otherwise, display the empty form. */ if (!hn_image(dhandle, &r, &rv)) { return rv; } rv = httpd_dyn_complete(dhandle, "\n\ Interactive Form\n\ \n\ \n" CMD_FORM "
\n\ %s\n", vb_buf(&r)); vb_free(&r); return rv; } /** * Completion callback for the 3270 text command node (/3270/rest/text). * * @param[in] dhandle Session handle * @param[in] cbs Request status * @param[in] buf Result / explanatory text buffer * @param[in] len Result / explanatory text buffer length * @param[in] sl_buf Status line buffer (ignored) * @param[in] sl_len Status line length (ignored) */ static void rest_dyn_text_complete(void *dhandle, sendto_cbs_t cbs, const char *buf, size_t len, const char *sl_buf, size_t sl_len) { httpd_status_t rv = HS_CONTINUE; switch (cbs) { case SC_SUCCESS: rv = httpd_dyn_complete(dhandle, "%.*s", len, buf); break; case SC_USER_ERROR: rv = httpd_dyn_error(dhandle, CT_TEXT, 400, "%.*s", len, buf); break; case SC_SYSTEM_ERROR: rv = httpd_dyn_error(dhandle, CT_TEXT, 400, "%.*s", len, buf); break; } hio_async_done(dhandle, rv); } /** * Callback for the REST API plain-text nonterminal dynamic node * (/3270/rest/text). * * @param[in] url URL fragment * @param[in] dhandle daemon handle * * @return httpd_status_t */ static httpd_status_t rest_text_dyn(const char *url, void *dhandle) { if (!*url) { return httpd_dyn_error(dhandle, CT_TEXT, 400, "Missing 3270 action.\n"); } switch (hio_to3270(url, rest_dyn_text_complete, dhandle, CT_TEXT)) { case SENDTO_COMPLETE: return HS_SUCCESS_OPEN; /* not strictly accurate */ case SENDTO_PENDING: return HS_PENDING; case SENDTO_INVALID: return httpd_dyn_error(dhandle, CT_TEXT, 400, "Invalid 3270 action.\n"); default: case SENDTO_FAILURE: return httpd_dyn_error(dhandle, CT_TEXT, 500, "Processing error.\n"); } } /** * Completion callback for the 3270 text command node (/3270/rest/stext). * * @param[in] dhandle daemon handle * @param[in] cbs completion status * @param[in] buf data buffer * @param[in] len length of data buffer * @param[in] sl_buf status-line buffer * @param[in] sl_len length of status-line buffer */ static void rest_dyn_status_text_complete(void *dhandle, sendto_cbs_t cbs, const char *buf, size_t len, const char *sl_buf, size_t sl_len) { httpd_status_t rv = HS_CONTINUE; switch (cbs) { case SC_SUCCESS: rv = httpd_dyn_complete(dhandle, "%.*s\n%.*s", sl_len, sl_buf, len, buf); break; case SC_USER_ERROR: rv = httpd_dyn_error(dhandle, CT_TEXT, 400, "%.*s", len, buf); break; case SC_SYSTEM_ERROR: rv = httpd_dyn_error(dhandle, CT_TEXT, 500, "%.*s", len, buf); break; } hio_async_done(dhandle, rv); } /** * Callback for the REST API plain-text plus status nonterminal dynamic node * (/3270/rest/stext). * * @param[in] url URL fragment * @param[in] dhandle daemon handle * * @return httpd_status_t */ static httpd_status_t rest_status_text_dyn(const char *url, void *dhandle) { if (!*url) { return httpd_dyn_error(dhandle, CT_TEXT, 400, "Missing 3270 action.\n"); } switch (hio_to3270(url, rest_dyn_status_text_complete, dhandle, CT_TEXT)) { case SENDTO_COMPLETE: return HS_SUCCESS_OPEN; /* not strictly accurate */ case SENDTO_PENDING: return HS_PENDING; case SENDTO_INVALID: return httpd_dyn_error(dhandle, CT_TEXT, 400, "Invalid 3270 action.\n"); default: case SENDTO_FAILURE: return httpd_dyn_error(dhandle, CT_TEXT, 500, "Processing error.\n"); } } /** * Completion callback for the 3270 html command node (/3270/rest/html). * * @param[in] dhandle daemon handle * @param[in] cbs completion status * @param[in] buf data buffer * @param[in] len length of data buffer * @param[in] sl_buf status-line buffer * @param[in] sl_len length of status-line buffer */ static void rest_dyn_html_complete(void *dhandle, sendto_cbs_t cbs, const char *buf, size_t len, const char *sl_buf, size_t sl_len) { httpd_status_t rv = HS_CONTINUE; switch (cbs) { case SC_SUCCESS: if (len) { rv = httpd_dyn_complete(dhandle, "\n\ Success\n\ \n\ \n\

Success

\n\

Status

\n\
%.*s
\n\

Result

\n\
%.*s
", sl_len, sl_buf, len, buf); } else { rv = httpd_dyn_complete(dhandle, "\n\ Success\n\ \n\ \n\

Success

\n\

Status

\n\
%.*s
\n\

Result

\n\ (none)", sl_len, sl_buf); } break; case SC_USER_ERROR: rv = httpd_dyn_error(dhandle, CT_HTML, 400, "%.*s", len, buf); break; case SC_SYSTEM_ERROR: rv = httpd_dyn_error(dhandle, CT_HTML, 500, "%.*s", len, buf); break; } hio_async_done(dhandle, rv); } /** * Completion callback for the 3270 json command node (/3270/rest/json). * * @param[in] dhandle daemon handle * @param[in] cbs completion status * @param[in] buf data buffer * @param[in] len length of data buffer * @param[in] sl_buf status-line buffer * @param[in] sl_len length of status-line buffer */ static void rest_dyn_json_complete(void *dhandle, sendto_cbs_t cbs, const char *buf, size_t len, const char *sl_buf, size_t sl_len) { httpd_status_t rv = HS_CONTINUE; switch (cbs) { case SC_SUCCESS: if (len) { if (len > 2 && !strcmp(buf + len - 2, ",\n")) { len -= 2; } rv = httpd_dyn_complete(dhandle, "{\n\ \"status\": \"%.*s\",\n\ \"result\": [\n\ %.*s\n\ ]\n\ }\n", sl_len, sl_buf, len, buf); } else { rv = httpd_dyn_complete(dhandle, "{\n\ \"status\": \"%.*s\",\n\ \"result\": null\n\ }\n", sl_len, sl_buf); } break; case SC_USER_ERROR: rv = httpd_dyn_error(dhandle, CT_JSON, 400, "%.*s", len, buf); break; case SC_SYSTEM_ERROR: rv = httpd_dyn_error(dhandle, CT_JSON, 500, "%.*s", len, buf); break; } hio_async_done(dhandle, rv); } /** * Callback for the REST API HTML nonterminal dynamic node (/3270/rest/html). * * @param[in] url URL fragment * @param[in] dhandle daemon handle * * @return httpd_status_t */ static httpd_status_t rest_html_dyn(const char *url, void *dhandle) { if (!*url) { return httpd_dyn_error(dhandle, CT_HTML, 400, "Missing 3270 action.\n"); } switch (hio_to3270(url, rest_dyn_html_complete, dhandle, CT_HTML)) { case SENDTO_COMPLETE: return HS_SUCCESS_OPEN; /* not strictly accurate */ case SENDTO_PENDING: return HS_PENDING; case SENDTO_INVALID: return httpd_dyn_error(dhandle, CT_HTML, 400, "Invalid 3270 action.\n"); default: case SENDTO_FAILURE: return httpd_dyn_error(dhandle, CT_HTML, 500, "Processing error.\n"); } } /** * Callback for the REST API JSON nonterminal dynamic node (/3270/rest/json). * * @param[in] url URL fragment * @param[in] dhandle daemon handle * * @return httpd_status_t */ static httpd_status_t rest_json_dyn(const char *url, void *dhandle) { if (!*url) { return httpd_dyn_error(dhandle, CT_JSON, 400, "Missing 3270 action.\n"); } switch (hio_to3270(url, rest_dyn_json_complete, dhandle, CT_JSON)) { case SENDTO_COMPLETE: return HS_SUCCESS_OPEN; /* not strictly accurate */ case SENDTO_PENDING: return HS_PENDING; case SENDTO_INVALID: return httpd_dyn_error(dhandle, CT_JSON, 400, "Invalid 3270 action.\n"); default: case SENDTO_FAILURE: return httpd_dyn_error(dhandle, CT_JSON, 500, "Processing error.\n"); } } /** * Initialize the HTTP object hierarchy. */ void httpd_objects_init(void) { static bool initted = false; void *nhandle; if (initted) { return; } initted = true; httpd_register_dir("/3270", "Emulator state"); httpd_register_dyn_term("/3270/screen.html", "Screen image", CT_HTML, "text/html; charset=utf-8", HF_TRAILER, hn_screen_image); httpd_register_dyn_term("/3270/interact.html", "Interactive form", CT_HTML, "text/html; charset=utf-8", HF_TRAILER, hn_interact); httpd_register_dir("/3270/rest", "REST interface"); httpd_register_fixed_binary("/favicon.ico", "Browser icon", CT_BINARY, "image/vnd.microsoft.icon", HF_HIDDEN, favicon, favicon_size); nhandle = httpd_register_dyn_nonterm("/3270/rest/text", "REST plain text interface", CT_TEXT, "text/plain; charset=utf-8", HF_NONE, rest_text_dyn); httpd_set_alias(nhandle, "text/Query()"); nhandle = httpd_register_dyn_nonterm("/3270/rest/stext", "REST plain text interface with status line", CT_TEXT, "text/plain; charset=utf-8", HF_NONE, rest_status_text_dyn); httpd_set_alias(nhandle, "stext/Query()"); nhandle = httpd_register_dyn_nonterm("/3270/rest/html", "REST HTML interface", CT_HTML, "text/html; charset=utf-8", HF_TRAILER, rest_html_dyn); httpd_set_alias(nhandle, "html/Query()"); nhandle = httpd_register_dyn_nonterm("/3270/rest/json", "REST JSON interface", CT_JSON, "application/json; charset=utf-8", HF_NONE, rest_json_dyn); httpd_set_alias(nhandle, "json/Query()"); } suite3270-4.1/Common/ibm-1027_P100-1995.ucm000066400000000000000000000133661413735575200172510ustar00rootroot00000000000000# *************************************************************************** # * # * Copyright (C) 1995-2002, International Business Machines # * Corporation and others. All Rights Reserved. # * # *************************************************************************** # # File created by rptp2ucm (compiled on Dec 3 2002) # from source files 34B00403.RPMAP100 and 040334B0.TPMAP100 # "ibm-1027_P100-1995" "AXXXX" 1 1 "SBCS" \x3F "EBCDIC" "ibm-1027_STD" CHARMAP \x00 |0 \x01 |0 \x02 |0 \x03 |0 \x37 |0 \x2D |0 \x2E |0 \x2F |0 \x16 |0 \x05 |0 \x25 |0 \x0B |0 \x0C |0 \x0D |0 \x0E |0 \x0F |0 \x10 |0 \x11 |0 \x12 |0 \x13 |0 \x3C |0 \x3D |0 \x32 |0 \x26 |0 \x18 |0 \x19 |0 \x3F |0 \x27 |0 \x1C |0 \x1D |0 \x1E |0 \x1F |0 \x40 |0 \x5A |0 \x7F |0 \x7B |0 \x5B |0 \x6C |0 \x50 |0 \x7D |0 \x4D |0 \x5D |0 \x5C |0 \x4E |0 \x6B |0 \x60 |0 \x4B |0 \x61 |0 \xF0 |0 \xF1 |0 \xF2 |0 \xF3 |0 \xF4 |0 \xF5 |0 \xF6 |0 \xF7 |0 \xF8 |0 \xF9 |0 \x7A |0 \x5E |0 \x4C |0 \x7E |0 \x6E |0 \x6F |0 \x7C |0 \xC1 |0 \xC2 |0 \xC3 |0 \xC4 |0 \xC5 |0 \xC6 |0 \xC7 |0 \xC8 |0 \xC9 |0 \xD1 |0 \xD2 |0 \xD3 |0 \xD4 |0 \xD5 |0 \xD6 |0 \xD7 |0 \xD8 |0 \xD9 |0 \xE2 |0 \xE3 |0 \xE4 |0 \xE5 |0 \xE6 |0 \xE7 |0 \xE8 |0 \xE9 |0 \xAD |0 \xE0 |0 \xBD |0 \xB0 |0 \x6D |0 \x79 |0 \x81 |0 \x82 |0 \x83 |0 \x84 |0 \x85 |0 \x86 |0 \x87 |0 \x88 |0 \x89 |0 \x91 |0 \x92 |0 \x93 |0 \x94 |0 \x95 |0 \x96 |0 \x97 |0 \x98 |0 \x99 |0 \xA2 |0 \xA3 |0 \xA4 |0 \xA5 |0 \xA6 |0 \xA7 |0 \xA8 |0 \xA9 |0 \xC0 |0 \x4F |0 \xD0 |0 \xA1 |0 \x07 |0 \x20 |0 \x21 |0 \x22 |0 \x23 |0 \x24 |0 \x15 |0 \x06 |0 \x17 |0 \x28 |0 \x29 |0 \x2A |0 \x2B |0 \x2C |0 \x09 |0 \x0A |0 \x1B |0 \x30 |0 \x31 |0 \x1A |0 \x33 |0 \x34 |0 \x35 |0 \x36 |0 \x08 |0 \x38 |0 \x39 |0 \x3A |0 \x3B |0 \x04 |0 \x14 |0 \x3E |0 \xFF |0 \x4A |0 \xB1 |0 \xB2 |0 \x5F |0 \xA0 |0 \x5A |1 \x7F |1 \x7B |1 \x5B |1 \x6C |1 \x50 |1 \x7D |1 \x4D |1 \x5D |1 \x5C |1 \x4E |1 \x6B |1 \x60 |1 \x4B |1 \x61 |1 \xF0 |1 \xF1 |1 \xF2 |1 \xF3 |1 \xF4 |1 \xF5 |1 \xF6 |1 \xF7 |1 \xF8 |1 \xF9 |1 \x7A |1 \x5E |1 \x4C |1 \x7E |1 \x6E |1 \x6F |1 \x7C |1 \xC1 |1 \xC2 |1 \xC3 |1 \xC4 |1 \xC5 |1 \xC6 |1 \xC7 |1 \xC8 |1 \xC9 |1 \xD1 |1 \xD2 |1 \xD3 |1 \xD4 |1 \xD5 |1 \xD6 |1 \xD7 |1 \xD8 |1 \xD9 |1 \xE2 |1 \xE3 |1 \xE4 |1 \xE5 |1 \xE6 |1 \xE7 |1 \xE8 |1 \xE9 |1 \xAD |1 \xE0 |1 \xBD |1 \xB0 |1 \x6D |1 \x79 |1 \x81 |1 \x82 |1 \x83 |1 \x84 |1 \x85 |1 \x86 |1 \x87 |1 \x88 |1 \x89 |1 \x91 |1 \x92 |1 \x93 |1 \x94 |1 \x95 |1 \x96 |1 \x97 |1 \x98 |1 \x99 |1 \xA2 |1 \xA3 |1 \xA4 |1 \xA5 |1 \xA6 |1 \xA7 |1 \xA8 |1 \xA9 |1 \xC0 |1 \x4F |1 \xD0 |1 \xA1 |1 \x42 |0 \x43 |0 \x44 |0 \x45 |0 \x46 |0 \x47 |0 \x48 |0 \x49 |0 \x51 |0 \x52 |0 \x53 |0 \x54 |0 \x55 |0 \x56 |0 \x57 |0 \x58 |0 \x59 |0 \x62 |0 \x63 |0 \x64 |0 \x65 |0 \x66 |0 \x67 |0 \x68 |0 \x69 |0 \x70 |0 \x71 |0 \x72 |0 \x73 |0 \x74 |0 \x75 |0 \x76 |0 \x77 |0 \x78 |0 \x8A |0 \x8B |0 \x8C |0 \x8D |0 \x8E |0 \x8F |0 \x9A |0 \x9B |0 \x9C |0 \x9D |0 \x9E |0 \x9F |0 \xAA |0 \xAB |0 \xAC |0 \xAE |0 \xAF |0 \xB3 |0 \xB4 |0 \xB5 |0 \xB6 |0 \xB7 |0 \xB8 |0 \xB9 |0 \xBA |0 \xBB |0 \xBC |0 \xBE |0 \xBF |0 END CHARMAP suite3270-4.1/Common/ibm-1385_P100-1997.ucm000066400000000000000000016425221413735575200172650ustar00rootroot00000000000000# *************************************************************************** # * # * Copyright (C) 1995-2002, International Business Machines # * Corporation and others. All Rights Reserved. # * # *************************************************************************** # # File created by rptp2ucm (compiled on Dec 27 2002) # from source files 34B00569.RPMAP100 and 056934B0.TPMAP100 # "ibm-1385_P100-1997" "AXXXX" 2 2 "DBCS" \xA1\xA1 "ASCII" "ibm-1385_VPUA" 0-80:2, 81-fe:1, ff:2 40-7e, 80-fe CHARMAP \xA1\xE8 |0 \xA1\xEC |0 \xA1\xA7 |0 \xA1\xE3 |0 \xA1\xC0 |0 \xA3\xA7 |0 \xA1\xC1 |0 \xA8\xA4 |0 \xA8\xA2 |0 \xA8\xA8 |0 \xA8\xA6 |0 \xA8\xBA |0 \xA8\xAC |0 \xA8\xAA |0 \xA8\xB0 |0 \xA8\xAE |0 \xA1\xC2 |0 \xA8\xB4 |0 \xA8\xB2 |0 \xA8\xB9 |0 \xA8\xA1 |0 \xA8\xA5 |0 \xA8\xA7 |0 \xA8\xA9 |0 \xA8\xBD |0 \xA8\xBE |0 \xA8\xAD |0 \xA8\xB1 |0 \xA8\xA3 |0 \xA8\xAB |0 \xA8\xAF |0 \xA8\xB3 |0 \xA8\xB5 |0 \xA8\xB6 |0 \xA8\xB7 |0 \xA8\xB8 |0 \xA8\xBB |0 \xA8\xC0 |0 \xA1\xA6 |0 \xA1\xA5 |0 \xA8\x40 |0 \xA8\x41 |0 \xA8\x42 |0 \xA6\xA1 |0 \xA6\xA2 |0 \xA6\xA3 |0 \xA6\xA4 |0 \xA6\xA5 |0 \xA6\xA6 |0 \xA6\xA7 |0 \xA6\xA8 |0 \xA6\xA9 |0 \xA6\xAA |0 \xA6\xAB |0 \xA6\xAC |0 \xA6\xAD |0 \xA6\xAE |0 \xA6\xAF |0 \xA6\xB0 |0 \xA6\xB1 |0 \xA6\xB2 |0 \xA6\xB3 |0 \xA6\xB4 |0 \xA6\xB5 |0 \xA6\xB6 |0 \xA6\xB7 |0 \xA6\xB8 |0 \xA6\xC1 |0 \xA6\xC2 |0 \xA6\xC3 |0 \xA6\xC4 |0 \xA6\xC5 |0 \xA6\xC6 |0 \xA6\xC7 |0 \xA6\xC8 |0 \xA6\xC9 |0 \xA6\xCA |0 \xA6\xCB |0 \xA6\xCC |0 \xA6\xCD |0 \xA6\xCE |0 \xA6\xCF |0 \xA6\xD0 |0 \xA6\xD1 |0 \xA6\xD2 |0 \xA6\xD3 |0 \xA6\xD4 |0 \xA6\xD5 |0 \xA6\xD6 |0 \xA6\xD7 |0 \xA6\xD8 |0 \xA7\xA7 |0 \xA7\xA1 |0 \xA7\xA2 |0 \xA7\xA3 |0 \xA7\xA4 |0 \xA7\xA5 |0 \xA7\xA6 |0 \xA7\xA8 |0 \xA7\xA9 |0 \xA7\xAA |0 \xA7\xAB |0 \xA7\xAC |0 \xA7\xAD |0 \xA7\xAE |0 \xA7\xAF |0 \xA7\xB0 |0 \xA7\xB1 |0 \xA7\xB2 |0 \xA7\xB3 |0 \xA7\xB4 |0 \xA7\xB5 |0 \xA7\xB6 |0 \xA7\xB7 |0 \xA7\xB8 |0 \xA7\xB9 |0 \xA7\xBA |0 \xA7\xBB |0 \xA7\xBC |0 \xA7\xBD |0 \xA7\xBE |0 \xA7\xBF |0 \xA7\xC0 |0 \xA7\xC1 |0 \xA7\xD1 |0 \xA7\xD2 |0 \xA7\xD3 |0 \xA7\xD4 |0 \xA7\xD5 |0 \xA7\xD6 |0 \xA7\xD8 |0 \xA7\xD9 |0 \xA7\xDA |0 \xA7\xDB |0 \xA7\xDC |0 \xA7\xDD |0 \xA7\xDE |0 \xA7\xDF |0 \xA7\xE0 |0 \xA7\xE1 |0 \xA7\xE2 |0 \xA7\xE3 |0 \xA7\xE4 |0 \xA7\xE5 |0 \xA7\xE6 |0 \xA7\xE7 |0 \xA7\xE8 |0 \xA7\xE9 |0 \xA7\xEA |0 \xA7\xEB |0 \xA7\xEC |0 \xA7\xED |0 \xA7\xEE |0 \xA7\xEF |0 \xA7\xF0 |0 \xA7\xF1 |0 \xA7\xD7 |0 \xA9\x5C |0 \xA8\x43 |0 \xA8\x44 |0 \xA1\xAA |0 \xA1\xAC |0 \xA1\xAE |0 \xA1\xAF |0 \xA1\xB0 |0 \xA1\xB1 |0 \xA8\x45 |0 \xA1\xAD |0 \xA1\xEB |0 \xA1\xE4 |0 \xA1\xE5 |0 \xA8\x46 |0 \xA1\xF9 |0 \xA1\xE6 |0 \xA8\x47 |0 \xA8\x48 |0 \xA1\xED |0 \xA9\x59 |0 \xA2\xF1 |0 \xA2\xF2 |0 \xA2\xF3 |0 \xA2\xF4 |0 \xA2\xF5 |0 \xA2\xF6 |0 \xA2\xF7 |0 \xA2\xF8 |0 \xA2\xF9 |0 \xA2\xFA |0 \xA2\xFB |0 \xA2\xFC |0 \xA2\xA1 |0 \xA2\xA2 |0 \xA2\xA3 |0 \xA2\xA4 |0 \xA2\xA5 |0 \xA2\xA6 |0 \xA2\xA7 |0 \xA2\xA8 |0 \xA2\xA9 |0 \xA2\xAA |0 \xA1\xFB |0 \xA1\xFC |0 \xA1\xFA |0 \xA1\xFD |0 \xA8\x49 |0 \xA8\x4A |0 \xA8\x4B |0 \xA8\x4C |0 \xA1\xCA |0 \xA1\xC7 |0 \xA1\xC6 |0 \xA8\x4D |0 \xA1\xCC |0 \xA1\xD8 |0 \xA1\xDE |0 \xA8\x4E |0 \xA1\xCF |0 \xA8\x4F |0 \xA1\xCE |0 \xA1\xC4 |0 \xA1\xC5 |0 \xA1\xC9 |0 \xA1\xC8 |0 \xA1\xD2 |0 \xA1\xD3 |0 \xA1\xE0 |0 \xA1\xDF |0 \xA1\xC3 |0 \xA1\xCB |0 \xA1\xD7 |0 \xA1\xD6 |0 \xA1\xD5 |0 \xA8\x50 |0 \xA1\xD9 |0 \xA1\xD4 |0 \xA1\xDC |0 \xA1\xDD |0 \xA8\x51 |0 \xA8\x52 |0 \xA1\xDA |0 \xA1\xDB |0 \xA8\x92 |0 \xA1\xD1 |0 \xA1\xCD |0 \xA8\x53 |0 \xA1\xD0 |0 \xA2\xD9 |0 \xA2\xDA |0 \xA2\xDB |0 \xA2\xDC |0 \xA2\xDD |0 \xA2\xDE |0 \xA2\xDF |0 \xA2\xE0 |0 \xA2\xE1 |0 \xA2\xE2 |0 \xA2\xC5 |0 \xA2\xC6 |0 \xA2\xC7 |0 \xA2\xC8 |0 \xA2\xC9 |0 \xA2\xCA |0 \xA2\xCB |0 \xA2\xCC |0 \xA2\xCD |0 \xA2\xCE |0 \xA2\xCF |0 \xA2\xD0 |0 \xA2\xD1 |0 \xA2\xD2 |0 \xA2\xD3 |0 \xA2\xD4 |0 \xA2\xD5 |0 \xA2\xD6 |0 \xA2\xD7 |0 \xA2\xD8 |0 \xA2\xB1 |0 \xA2\xB2 |0 \xA2\xB3 |0 \xA2\xB4 |0 \xA2\xB5 |0 \xA2\xB6 |0 \xA2\xB7 |0 \xA2\xB8 |0 \xA2\xB9 |0 \xA2\xBA |0 \xA2\xBB |0 \xA2\xBC |0 \xA2\xBD |0 \xA2\xBE |0 \xA2\xBF |0 \xA2\xC0 |0 \xA2\xC1 |0 \xA2\xC2 |0 \xA2\xC3 |0 \xA2\xC4 |0 \xA9\xA4 |0 \xA9\xA5 |0 \xA9\xA6 |0 \xA9\xA7 |0 \xA9\xA8 |0 \xA9\xA9 |0 \xA9\xAA |0 \xA9\xAB |0 \xA9\xAC |0 \xA9\xAD |0 \xA9\xAE |0 \xA9\xAF |0 \xA9\xB0 |0 \xA9\xB1 |0 \xA9\xB2 |0 \xA9\xB3 |0 \xA9\xB4 |0 \xA9\xB5 |0 \xA9\xB6 |0 \xA9\xB7 |0 \xA9\xB8 |0 \xA9\xB9 |0 \xA9\xBA |0 \xA9\xBB |0 \xA9\xBC |0 \xA9\xBD |0 \xA9\xBE |0 \xA9\xBF |0 \xA9\xC0 |0 \xA9\xC1 |0 \xA9\xC2 |0 \xA9\xC3 |0 \xA9\xC4 |0 \xA9\xC5 |0 \xA9\xC6 |0 \xA9\xC7 |0 \xA9\xC8 |0 \xA9\xC9 |0 \xA9\xCA |0 \xA9\xCB |0 \xA9\xCC |0 \xA9\xCD |0 \xA9\xCE |0 \xA9\xCF |0 \xA9\xD0 |0 \xA9\xD1 |0 \xA9\xD2 |0 \xA9\xD3 |0 \xA9\xD4 |0 \xA9\xD5 |0 \xA9\xD6 |0 \xA9\xD7 |0 \xA9\xD8 |0 \xA9\xD9 |0 \xA9\xDA |0 \xA9\xDB |0 \xA9\xDC |0 \xA9\xDD |0 \xA9\xDE |0 \xA9\xDF |0 \xA9\xE0 |0 \xA9\xE1 |0 \xA9\xE2 |0 \xA9\xE3 |0 \xA9\xE4 |0 \xA9\xE5 |0 \xA9\xE6 |0 \xA9\xE7 |0 \xA9\xE8 |0 \xA9\xE9 |0 \xA9\xEA |0 \xA9\xEB |0 \xA9\xEC |0 \xA9\xED |0 \xA9\xEE |0 \xA9\xEF |0 \xA8\x54 |0 \xA8\x55 |0 \xA8\x56 |0 \xA8\x57 |0 \xA8\x58 |0 \xA8\x59 |0 \xA8\x5A |0 \xA8\x5B |0 \xA8\x5C |0 \xA8\x5D |0 \xA8\x5E |0 \xA8\x5F |0 \xA8\x60 |0 \xA8\x61 |0 \xA8\x62 |0 \xA8\x63 |0 \xA8\x64 |0 \xA8\x65 |0 \xA8\x66 |0 \xA8\x67 |0 \xA8\x68 |0 \xA8\x69 |0 \xA8\x6A |0 \xA8\x6B |0 \xA8\x6C |0 \xA8\x6D |0 \xA8\x6E |0 \xA8\x6F |0 \xA8\x70 |0 \xA8\x71 |0 \xA8\x72 |0 \xA8\x73 |0 \xA8\x74 |0 \xA8\x75 |0 \xA8\x76 |0 \xA8\x77 |0 \xA8\x78 |0 \xA8\x79 |0 \xA8\x7A |0 \xA8\x7B |0 \xA8\x7C |0 \xA8\x7D |0 \xA8\x7E |0 \xA8\x80 |0 \xA8\x81 |0 \xA8\x82 |0 \xA8\x83 |0 \xA8\x84 |0 \xA8\x85 |0 \xA8\x86 |0 \xA8\x87 |0 \xA8\x88 |0 \xA8\x89 |0 \xA8\x8A |0 \xA1\xF6 |0 \xA1\xF5 |0 \xA1\xF8 |0 \xA1\xF7 |0 \xA8\x8B |0 \xA8\x8C |0 \xA1\xF4 |0 \xA1\xF3 |0 \xA1\xF0 |0 \xA1\xF2 |0 \xA1\xF1 |0 \xA8\x8D |0 \xA8\x8E |0 \xA8\x8F |0 \xA8\x90 |0 \xA1\xEF |0 \xA1\xEE |0 \xA8\x91 |0 \xA1\xE2 |0 \xA1\xE1 |0 \xA1\xA1 |0 \xA1\xA2 |0 \xA1\xA3 |0 \xA1\xA8 |0 \xA1\xA9 |0 \xA9\x65 |0 \xA9\x96 |0 \xA1\xB4 |0 \xA1\xB5 |0 \xA1\xB6 |0 \xA1\xB7 |0 \xA1\xB8 |0 \xA1\xB9 |0 \xA1\xBA |0 \xA1\xBB |0 \xA1\xBE |0 \xA1\xBF |0 \xA8\x93 |0 \xA1\xFE |0 \xA1\xB2 |0 \xA1\xB3 |0 \xA1\xBC |0 \xA1\xBD |0 \xA8\x94 |0 \xA8\x95 |0 \xA9\x40 |0 \xA9\x41 |0 \xA9\x42 |0 \xA9\x43 |0 \xA9\x44 |0 \xA9\x45 |0 \xA9\x46 |0 \xA9\x47 |0 \xA9\x48 |0 \xA4\xA1 |0 \xA4\xA2 |0 \xA4\xA3 |0 \xA4\xA4 |0 \xA4\xA5 |0 \xA4\xA6 |0 \xA4\xA7 |0 \xA4\xA8 |0 \xA4\xA9 |0 \xA4\xAA |0 \xA4\xAB |0 \xA4\xAC |0 \xA4\xAD |0 \xA4\xAE |0 \xA4\xAF |0 \xA4\xB0 |0 \xA4\xB1 |0 \xA4\xB2 |0 \xA4\xB3 |0 \xA4\xB4 |0 \xA4\xB5 |0 \xA4\xB6 |0 \xA4\xB7 |0 \xA4\xB8 |0 \xA4\xB9 |0 \xA4\xBA |0 \xA4\xBB |0 \xA4\xBC |0 \xA4\xBD |0 \xA4\xBE |0 \xA4\xBF |0 \xA4\xC0 |0 \xA4\xC1 |0 \xA4\xC2 |0 \xA4\xC3 |0 \xA4\xC4 |0 \xA4\xC5 |0 \xA4\xC6 |0 \xA4\xC7 |0 \xA4\xC8 |0 \xA4\xC9 |0 \xA4\xCA |0 \xA4\xCB |0 \xA4\xCC |0 \xA4\xCD |0 \xA4\xCE |0 \xA4\xCF |0 \xA4\xD0 |0 \xA4\xD1 |0 \xA4\xD2 |0 \xA4\xD3 |0 \xA4\xD4 |0 \xA4\xD5 |0 \xA4\xD6 |0 \xA4\xD7 |0 \xA4\xD8 |0 \xA4\xD9 |0 \xA4\xDA |0 \xA4\xDB |0 \xA4\xDC |0 \xA4\xDD |0 \xA4\xDE |0 \xA4\xDF |0 \xA4\xE0 |0 \xA4\xE1 |0 \xA4\xE2 |0 \xA4\xE3 |0 \xA4\xE4 |0 \xA4\xE5 |0 \xA4\xE6 |0 \xA4\xE7 |0 \xA4\xE8 |0 \xA4\xE9 |0 \xA4\xEA |0 \xA4\xEB |0 \xA4\xEC |0 \xA4\xED |0 \xA4\xEE |0 \xA4\xEF |0 \xA4\xF0 |0 \xA4\xF1 |0 \xA4\xF2 |0 \xA4\xF3 |0 \xA9\x61 |0 \xA9\x62 |0 \xA9\x66 |0 \xA9\x67 |0 \xA5\xA1 |0 \xA5\xA2 |0 \xA5\xA3 |0 \xA5\xA4 |0 \xA5\xA5 |0 \xA5\xA6 |0 \xA5\xA7 |0 \xA5\xA8 |0 \xA5\xA9 |0 \xA5\xAA |0 \xA5\xAB |0 \xA5\xAC |0 \xA5\xAD |0 \xA5\xAE |0 \xA5\xAF |0 \xA5\xB0 |0 \xA5\xB1 |0 \xA5\xB2 |0 \xA5\xB3 |0 \xA5\xB4 |0 \xA5\xB5 |0 \xA5\xB6 |0 \xA5\xB7 |0 \xA5\xB8 |0 \xA5\xB9 |0 \xA5\xBA |0 \xA5\xBB |0 \xA5\xBC |0 \xA5\xBD |0 \xA5\xBE |0 \xA5\xBF |0 \xA5\xC0 |0 \xA5\xC1 |0 \xA5\xC2 |0 \xA5\xC3 |0 \xA5\xC4 |0 \xA5\xC5 |0 \xA5\xC6 |0 \xA5\xC7 |0 \xA5\xC8 |0 \xA5\xC9 |0 \xA5\xCA |0 \xA5\xCB |0 \xA5\xCC |0 \xA5\xCD |0 \xA5\xCE |0 \xA5\xCF |0 \xA5\xD0 |0 \xA5\xD1 |0 \xA5\xD2 |0 \xA5\xD3 |0 \xA5\xD4 |0 \xA5\xD5 |0 \xA5\xD6 |0 \xA5\xD7 |0 \xA5\xD8 |0 \xA5\xD9 |0 \xA5\xDA |0 \xA5\xDB |0 \xA5\xDC |0 \xA5\xDD |0 \xA5\xDE |0 \xA5\xDF |0 \xA5\xE0 |0 \xA5\xE1 |0 \xA5\xE2 |0 \xA5\xE3 |0 \xA5\xE4 |0 \xA5\xE5 |0 \xA5\xE6 |0 \xA5\xE7 |0 \xA5\xE8 |0 \xA5\xE9 |0 \xA5\xEA |0 \xA5\xEB |0 \xA5\xEC |0 \xA5\xED |0 \xA5\xEE |0 \xA5\xEF |0 \xA5\xF0 |0 \xA5\xF1 |0 \xA5\xF2 |0 \xA5\xF3 |0 \xA5\xF4 |0 \xA5\xF5 |0 \xA5\xF6 |0 \xA1\xA4 |0 \xA9\x60 |0 \xA9\x63 |0 \xA9\x64 |0 \xA8\xC5 |0 \xA8\xC6 |0 \xA8\xC7 |0 \xA8\xC8 |0 \xA8\xC9 |0 \xA8\xCA |0 \xA8\xCB |0 \xA8\xCC |0 \xA8\xCD |0 \xA8\xCE |0 \xA8\xCF |0 \xA8\xD0 |0 \xA8\xD1 |0 \xA8\xD2 |0 \xA8\xD3 |0 \xA8\xD4 |0 \xA8\xD5 |0 \xA8\xD6 |0 \xA8\xD7 |0 \xA8\xD8 |0 \xA8\xD9 |0 \xA8\xDA |0 \xA8\xDB |0 \xA8\xDC |0 \xA8\xDD |0 \xA8\xDE |0 \xA8\xDF |0 \xA8\xE0 |0 \xA8\xE1 |0 \xA8\xE2 |0 \xA8\xE3 |0 \xA8\xE4 |0 \xA8\xE5 |0 \xA8\xE6 |0 \xA8\xE7 |0 \xA8\xE8 |0 \xA8\xE9 |0 \xA2\xE5 |0 \xA2\xE6 |0 \xA2\xE7 |0 \xA2\xE8 |0 \xA2\xE9 |0 \xA2\xEA |0 \xA2\xEB |0 \xA2\xEC |0 \xA2\xED |0 \xA2\xEE |0 \xA9\x5A |0 \xA9\x49 |0 \xA9\x4A |0 \xA9\x4B |0 \xA9\x4C |0 \xA9\x4D |0 \xA9\x4E |0 \xA9\x4F |0 \xA9\x50 |0 \xA9\x51 |0 \xA9\x52 |0 \xA9\x53 |0 \xA9\x54 |0 \xD2\xBB |0 \xB6\xA1 |0 \x81\x40 |0 \xC6\xDF |0 \x81\x41 |0 \x81\x42 |0 \x81\x43 |0 \xCD\xF2 |0 \xD5\xC9 |0 \xC8\xFD |0 \xC9\xCF |0 \xCF\xC2 |0 \xD8\xA2 |0 \xB2\xBB |0 \xD3\xEB |0 \x81\x44 |0 \xD8\xA4 |0 \xB3\xF3 |0 \x81\x45 |0 \xD7\xA8 |0 \xC7\xD2 |0 \xD8\xA7 |0 \xCA\xC0 |0 \x81\x46 |0 \xC7\xF0 |0 \xB1\xFB |0 \xD2\xB5 |0 \xB4\xD4 |0 \xB6\xAB |0 \xCB\xBF |0 \xD8\xA9 |0 \x81\x47 |0 \x81\x48 |0 \x81\x49 |0 \xB6\xAA |0 \x81\x4A |0 \xC1\xBD |0 \xD1\xCF |0 \x81\x4B |0 \xC9\xA5 |0 \xD8\xAD |0 \x81\x4C |0 \xB8\xF6 |0 \xD1\xBE |0 \xE3\xDC |0 \xD6\xD0 |0 \x81\x4D |0 \x81\x4E |0 \xB7\xE1 |0 \x81\x4F |0 \xB4\xAE |0 \x81\x50 |0 \xC1\xD9 |0 \x81\x51 |0 \xD8\xBC |0 \x81\x52 |0 \xCD\xE8 |0 \xB5\xA4 |0 \xCE\xAA |0 \xD6\xF7 |0 \x81\x53 |0 \xC0\xF6 |0 \xBE\xD9 |0 \xD8\xAF |0 \x81\x54 |0 \x81\x55 |0 \x81\x56 |0 \xC4\xCB |0 \x81\x57 |0 \xBE\xC3 |0 \x81\x58 |0 \xD8\xB1 |0 \xC3\xB4 |0 \xD2\xE5 |0 \x81\x59 |0 \xD6\xAE |0 \xCE\xDA |0 \xD5\xA7 |0 \xBA\xF5 |0 \xB7\xA6 |0 \xC0\xD6 |0 \x81\x5A |0 \xC6\xB9 |0 \xC5\xD2 |0 \xC7\xC7 |0 \x81\x5B |0 \xB9\xD4 |0 \x81\x5C |0 \xB3\xCB |0 \xD2\xD2 |0 \x81\x5D |0 \x81\x5E |0 \xD8\xBF |0 \xBE\xC5 |0 \xC6\xF2 |0 \xD2\xB2 |0 \xCF\xB0 |0 \xCF\xE7 |0 \x81\x5F |0 \x81\x60 |0 \x81\x61 |0 \x81\x62 |0 \xCA\xE9 |0 \x81\x63 |0 \x81\x64 |0 \xD8\xC0 |0 \x81\x65 |0 \x81\x66 |0 \x81\x67 |0 \x81\x68 |0 \x81\x69 |0 \x81\x6A |0 \xC2\xF2 |0 \xC2\xD2 |0 \x81\x6B |0 \xC8\xE9 |0 \x81\x6C |0 \x81\x6D |0 \x81\x6E |0 \x81\x6F |0 \x81\x70 |0 \x81\x71 |0 \x81\x72 |0 \x81\x73 |0 \x81\x74 |0 \x81\x75 |0 \xC7\xAC |0 \x81\x76 |0 \x81\x77 |0 \x81\x78 |0 \x81\x79 |0 \x81\x7A |0 \x81\x7B |0 \x81\x7C |0 \xC1\xCB |0 \x81\x7D |0 \xD3\xE8 |0 \xD5\xF9 |0 \x81\x7E |0 \xCA\xC2 |0 \xB6\xFE |0 \xD8\xA1 |0 \xD3\xDA |0 \xBF\xF7 |0 \x81\x80 |0 \xD4\xC6 |0 \xBB\xA5 |0 \xD8\xC1 |0 \xCE\xE5 |0 \xBE\xAE |0 \x81\x81 |0 \x81\x82 |0 \xD8\xA8 |0 \x81\x83 |0 \xD1\xC7 |0 \xD0\xA9 |0 \x81\x84 |0 \x81\x85 |0 \x81\x86 |0 \xD8\xBD |0 \xD9\xEF |0 \xCD\xF6 |0 \xBF\xBA |0 \x81\x87 |0 \xBD\xBB |0 \xBA\xA5 |0 \xD2\xE0 |0 \xB2\xFA |0 \xBA\xE0 |0 \xC4\xB6 |0 \x81\x88 |0 \xCF\xED |0 \xBE\xA9 |0 \xCD\xA4 |0 \xC1\xC1 |0 \x81\x89 |0 \x81\x8A |0 \x81\x8B |0 \xC7\xD7 |0 \xD9\xF1 |0 \x81\x8C |0 \xD9\xF4 |0 \x81\x8D |0 \x81\x8E |0 \x81\x8F |0 \x81\x90 |0 \xC8\xCB |0 \xD8\xE9 |0 \x81\x91 |0 \x81\x92 |0 \x81\x93 |0 \xD2\xDA |0 \xCA\xB2 |0 \xC8\xCA |0 \xD8\xEC |0 \xD8\xEA |0 \xD8\xC6 |0 \xBD\xF6 |0 \xC6\xCD |0 \xB3\xF0 |0 \x81\x94 |0 \xD8\xEB |0 \xBD\xF1 |0 \xBD\xE9 |0 \x81\x95 |0 \xC8\xD4 |0 \xB4\xD3 |0 \x81\x96 |0 \x81\x97 |0 \xC2\xD8 |0 \x81\x98 |0 \xB2\xD6 |0 \xD7\xD0 |0 \xCA\xCB |0 \xCB\xFB |0 \xD5\xCC |0 \xB8\xB6 |0 \xCF\xC9 |0 \x81\x99 |0 \x81\x9A |0 \x81\x9B |0 \xD9\xDA |0 \xD8\xF0 |0 \xC7\xAA |0 \x81\x9C |0 \xD8\xEE |0 \x81\x9D |0 \xB4\xFA |0 \xC1\xEE |0 \xD2\xD4 |0 \x81\x9E |0 \x81\x9F |0 \xD8\xED |0 \x81\xA0 |0 \xD2\xC7 |0 \xD8\xEF |0 \xC3\xC7 |0 \x81\xA1 |0 \x81\xA2 |0 \x81\xA3 |0 \xD1\xF6 |0 \x81\xA4 |0 \xD6\xD9 |0 \xD8\xF2 |0 \x81\xA5 |0 \xD8\xF5 |0 \xBC\xFE |0 \xBC\xDB |0 \x81\xA6 |0 \x81\xA7 |0 \x81\xA8 |0 \xC8\xCE |0 \x81\xA9 |0 \xB7\xDD |0 \x81\xAA |0 \xB7\xC2 |0 \x81\xAB |0 \xC6\xF3 |0 \x81\xAC |0 \x81\xAD |0 \x81\xAE |0 \x81\xAF |0 \x81\xB0 |0 \x81\xB1 |0 \x81\xB2 |0 \xD8\xF8 |0 \xD2\xC1 |0 \x81\xB3 |0 \x81\xB4 |0 \xCE\xE9 |0 \xBC\xBF |0 \xB7\xFC |0 \xB7\xA5 |0 \xD0\xDD |0 \x81\xB5 |0 \x81\xB6 |0 \x81\xB7 |0 \x81\xB8 |0 \x81\xB9 |0 \xD6\xDA |0 \xD3\xC5 |0 \xBB\xEF |0 \xBB\xE1 |0 \xD8\xF1 |0 \x81\xBA |0 \x81\xBB |0 \xC9\xA1 |0 \xCE\xB0 |0 \xB4\xAB |0 \x81\xBC |0 \xD8\xF3 |0 \x81\xBD |0 \xC9\xCB |0 \xD8\xF6 |0 \xC2\xD7 |0 \xD8\xF7 |0 \x81\xBE |0 \x81\xBF |0 \xCE\xB1 |0 \xD8\xF9 |0 \x81\xC0 |0 \x81\xC1 |0 \x81\xC2 |0 \xB2\xAE |0 \xB9\xC0 |0 \x81\xC3 |0 \xD9\xA3 |0 \x81\xC4 |0 \xB0\xE9 |0 \x81\xC5 |0 \xC1\xE6 |0 \x81\xC6 |0 \xC9\xEC |0 \x81\xC7 |0 \xCB\xC5 |0 \x81\xC8 |0 \xCB\xC6 |0 \xD9\xA4 |0 \x81\xC9 |0 \x81\xCA |0 \x81\xCB |0 \x81\xCC |0 \x81\xCD |0 \xB5\xE8 |0 \x81\xCE |0 \x81\xCF |0 \xB5\xAB |0 \x81\xD0 |0 \x81\xD1 |0 \x81\xD2 |0 \x81\xD3 |0 \x81\xD4 |0 \x81\xD5 |0 \xCE\xBB |0 \xB5\xCD |0 \xD7\xA1 |0 \xD7\xF4 |0 \xD3\xD3 |0 \x81\xD6 |0 \xCC\xE5 |0 \x81\xD7 |0 \xBA\xCE |0 \x81\xD8 |0 \xD9\xA2 |0 \xD9\xDC |0 \xD3\xE0 |0 \xD8\xFD |0 \xB7\xF0 |0 \xD7\xF7 |0 \xD8\xFE |0 \xD8\xFA |0 \xD9\xA1 |0 \xC4\xE3 |0 \x81\xD9 |0 \x81\xDA |0 \xD3\xB6 |0 \xD8\xF4 |0 \xD9\xDD |0 \x81\xDB |0 \xD8\xFB |0 \x81\xDC |0 \xC5\xE5 |0 \x81\xDD |0 \x81\xDE |0 \xC0\xD0 |0 \x81\xDF |0 \x81\xE0 |0 \xD1\xF0 |0 \xB0\xDB |0 \x81\xE1 |0 \x81\xE2 |0 \xBC\xD1 |0 \xD9\xA6 |0 \x81\xE3 |0 \xD9\xA5 |0 \x81\xE4 |0 \x81\xE5 |0 \x81\xE6 |0 \x81\xE7 |0 \xD9\xAC |0 \xD9\xAE |0 \x81\xE8 |0 \xD9\xAB |0 \xCA\xB9 |0 \x81\xE9 |0 \x81\xEA |0 \x81\xEB |0 \xD9\xA9 |0 \xD6\xB6 |0 \x81\xEC |0 \x81\xED |0 \x81\xEE |0 \xB3\xDE |0 \xD9\xA8 |0 \x81\xEF |0 \xC0\xFD |0 \x81\xF0 |0 \xCA\xCC |0 \x81\xF1 |0 \xD9\xAA |0 \x81\xF2 |0 \xD9\xA7 |0 \x81\xF3 |0 \x81\xF4 |0 \xD9\xB0 |0 \x81\xF5 |0 \x81\xF6 |0 \xB6\xB1 |0 \x81\xF7 |0 \x81\xF8 |0 \x81\xF9 |0 \xB9\xA9 |0 \x81\xFA |0 \xD2\xC0 |0 \x81\xFB |0 \x81\xFC |0 \xCF\xC0 |0 \x81\xFD |0 \x81\xFE |0 \xC2\xC2 |0 \x82\x40 |0 \xBD\xC4 |0 \xD5\xEC |0 \xB2\xE0 |0 \xC7\xC8 |0 \xBF\xEB |0 \xD9\xAD |0 \x82\x41 |0 \xD9\xAF |0 \x82\x42 |0 \xCE\xEA |0 \xBA\xEE |0 \x82\x43 |0 \x82\x44 |0 \x82\x45 |0 \x82\x46 |0 \x82\x47 |0 \xC7\xD6 |0 \x82\x48 |0 \x82\x49 |0 \x82\x4A |0 \x82\x4B |0 \x82\x4C |0 \x82\x4D |0 \x82\x4E |0 \x82\x4F |0 \x82\x50 |0 \xB1\xE3 |0 \x82\x51 |0 \x82\x52 |0 \x82\x53 |0 \xB4\xD9 |0 \xB6\xED |0 \xD9\xB4 |0 \x82\x54 |0 \x82\x55 |0 \x82\x56 |0 \x82\x57 |0 \xBF\xA1 |0 \x82\x58 |0 \x82\x59 |0 \x82\x5A |0 \xD9\xDE |0 \xC7\xCE |0 \xC0\xFE |0 \xD9\xB8 |0 \x82\x5B |0 \x82\x5C |0 \x82\x5D |0 \x82\x5E |0 \x82\x5F |0 \xCB\xD7 |0 \xB7\xFD |0 \x82\x60 |0 \xD9\xB5 |0 \x82\x61 |0 \xD9\xB7 |0 \xB1\xA3 |0 \xD3\xE1 |0 \xD9\xB9 |0 \x82\x62 |0 \xD0\xC5 |0 \x82\x63 |0 \xD9\xB6 |0 \x82\x64 |0 \x82\x65 |0 \xD9\xB1 |0 \x82\x66 |0 \xD9\xB2 |0 \xC1\xA9 |0 \xD9\xB3 |0 \x82\x67 |0 \x82\x68 |0 \xBC\xF3 |0 \xD0\xDE |0 \xB8\xA9 |0 \x82\x69 |0 \xBE\xE3 |0 \x82\x6A |0 \xD9\xBD |0 \x82\x6B |0 \x82\x6C |0 \x82\x6D |0 \x82\x6E |0 \xD9\xBA |0 \x82\x6F |0 \xB0\xB3 |0 \x82\x70 |0 \x82\x71 |0 \x82\x72 |0 \xD9\xC2 |0 \x82\x73 |0 \x82\x74 |0 \x82\x75 |0 \x82\x76 |0 \x82\x77 |0 \x82\x78 |0 \x82\x79 |0 \x82\x7A |0 \x82\x7B |0 \x82\x7C |0 \x82\x7D |0 \x82\x7E |0 \x82\x80 |0 \xD9\xC4 |0 \xB1\xB6 |0 \x82\x81 |0 \xD9\xBF |0 \x82\x82 |0 \x82\x83 |0 \xB5\xB9 |0 \x82\x84 |0 \xBE\xF3 |0 \x82\x85 |0 \x82\x86 |0 \x82\x87 |0 \xCC\xC8 |0 \xBA\xF2 |0 \xD2\xD0 |0 \x82\x88 |0 \xD9\xC3 |0 \x82\x89 |0 \x82\x8A |0 \xBD\xE8 |0 \x82\x8B |0 \xB3\xAB |0 \x82\x8C |0 \x82\x8D |0 \x82\x8E |0 \xD9\xC5 |0 \xBE\xEB |0 \x82\x8F |0 \xD9\xC6 |0 \xD9\xBB |0 \xC4\xDF |0 \x82\x90 |0 \xD9\xBE |0 \xD9\xC1 |0 \xD9\xC0 |0 \x82\x91 |0 \x82\x92 |0 \x82\x93 |0 \x82\x94 |0 \x82\x95 |0 \x82\x96 |0 \x82\x97 |0 \x82\x98 |0 \x82\x99 |0 \x82\x9A |0 \x82\x9B |0 \xD5\xAE |0 \x82\x9C |0 \xD6\xB5 |0 \x82\x9D |0 \xC7\xE3 |0 \x82\x9E |0 \x82\x9F |0 \x82\xA0 |0 \x82\xA1 |0 \xD9\xC8 |0 \x82\xA2 |0 \x82\xA3 |0 \x82\xA4 |0 \xBC\xD9 |0 \xD9\xCA |0 \x82\xA5 |0 \x82\xA6 |0 \x82\xA7 |0 \xD9\xBC |0 \x82\xA8 |0 \xD9\xCB |0 \xC6\xAB |0 \x82\xA9 |0 \x82\xAA |0 \x82\xAB |0 \x82\xAC |0 \x82\xAD |0 \xD9\xC9 |0 \x82\xAE |0 \x82\xAF |0 \x82\xB0 |0 \x82\xB1 |0 \xD7\xF6 |0 \x82\xB2 |0 \xCD\xA3 |0 \x82\xB3 |0 \x82\xB4 |0 \x82\xB5 |0 \x82\xB6 |0 \x82\xB7 |0 \x82\xB8 |0 \x82\xB9 |0 \x82\xBA |0 \xBD\xA1 |0 \x82\xBB |0 \x82\xBC |0 \x82\xBD |0 \x82\xBE |0 \x82\xBF |0 \x82\xC0 |0 \xD9\xCC |0 \x82\xC1 |0 \x82\xC2 |0 \x82\xC3 |0 \x82\xC4 |0 \x82\xC5 |0 \x82\xC6 |0 \x82\xC7 |0 \x82\xC8 |0 \x82\xC9 |0 \xC5\xBC |0 \xCD\xB5 |0 \x82\xCA |0 \x82\xCB |0 \x82\xCC |0 \xD9\xCD |0 \x82\xCD |0 \x82\xCE |0 \xD9\xC7 |0 \xB3\xA5 |0 \xBF\xFE |0 \x82\xCF |0 \x82\xD0 |0 \x82\xD1 |0 \x82\xD2 |0 \xB8\xB5 |0 \x82\xD3 |0 \x82\xD4 |0 \xC0\xFC |0 \x82\xD5 |0 \x82\xD6 |0 \x82\xD7 |0 \x82\xD8 |0 \xB0\xF8 |0 \x82\xD9 |0 \x82\xDA |0 \x82\xDB |0 \x82\xDC |0 \x82\xDD |0 \x82\xDE |0 \x82\xDF |0 \x82\xE0 |0 \x82\xE1 |0 \x82\xE2 |0 \x82\xE3 |0 \x82\xE4 |0 \x82\xE5 |0 \x82\xE6 |0 \x82\xE7 |0 \x82\xE8 |0 \x82\xE9 |0 \x82\xEA |0 \x82\xEB |0 \x82\xEC |0 \x82\xED |0 \xB4\xF6 |0 \x82\xEE |0 \xD9\xCE |0 \x82\xEF |0 \xD9\xCF |0 \xB4\xA2 |0 \xD9\xD0 |0 \x82\xF0 |0 \x82\xF1 |0 \xB4\xDF |0 \x82\xF2 |0 \x82\xF3 |0 \x82\xF4 |0 \x82\xF5 |0 \x82\xF6 |0 \xB0\xC1 |0 \x82\xF7 |0 \x82\xF8 |0 \x82\xF9 |0 \x82\xFA |0 \x82\xFB |0 \x82\xFC |0 \x82\xFD |0 \xD9\xD1 |0 \xC9\xB5 |0 \x82\xFE |0 \x83\x40 |0 \x83\x41 |0 \x83\x42 |0 \x83\x43 |0 \x83\x44 |0 \x83\x45 |0 \x83\x46 |0 \x83\x47 |0 \x83\x48 |0 \x83\x49 |0 \x83\x4A |0 \x83\x4B |0 \x83\x4C |0 \x83\x4D |0 \x83\x4E |0 \x83\x4F |0 \x83\x50 |0 \x83\x51 |0 \xCF\xF1 |0 \x83\x52 |0 \x83\x53 |0 \x83\x54 |0 \x83\x55 |0 \x83\x56 |0 \x83\x57 |0 \xD9\xD2 |0 \x83\x58 |0 \x83\x59 |0 \x83\x5A |0 \xC1\xC5 |0 \x83\x5B |0 \x83\x5C |0 \x83\x5D |0 \x83\x5E |0 \x83\x5F |0 \x83\x60 |0 \x83\x61 |0 \x83\x62 |0 \x83\x63 |0 \x83\x64 |0 \x83\x65 |0 \xD9\xD6 |0 \xC9\xAE |0 \x83\x66 |0 \x83\x67 |0 \x83\x68 |0 \x83\x69 |0 \xD9\xD5 |0 \xD9\xD4 |0 \xD9\xD7 |0 \x83\x6A |0 \x83\x6B |0 \x83\x6C |0 \x83\x6D |0 \xCB\xDB |0 \x83\x6E |0 \xBD\xA9 |0 \x83\x6F |0 \x83\x70 |0 \x83\x71 |0 \x83\x72 |0 \x83\x73 |0 \xC6\xA7 |0 \x83\x74 |0 \x83\x75 |0 \x83\x76 |0 \x83\x77 |0 \x83\x78 |0 \x83\x79 |0 \x83\x7A |0 \x83\x7B |0 \x83\x7C |0 \x83\x7D |0 \xD9\xD3 |0 \xD9\xD8 |0 \x83\x7E |0 \x83\x80 |0 \x83\x81 |0 \xD9\xD9 |0 \x83\x82 |0 \x83\x83 |0 \x83\x84 |0 \x83\x85 |0 \x83\x86 |0 \x83\x87 |0 \xC8\xE5 |0 \x83\x88 |0 \x83\x89 |0 \x83\x8A |0 \x83\x8B |0 \x83\x8C |0 \x83\x8D |0 \x83\x8E |0 \x83\x8F |0 \x83\x90 |0 \x83\x91 |0 \x83\x92 |0 \x83\x93 |0 \x83\x94 |0 \x83\x95 |0 \xC0\xDC |0 \x83\x96 |0 \x83\x97 |0 \x83\x98 |0 \x83\x99 |0 \x83\x9A |0 \x83\x9B |0 \x83\x9C |0 \x83\x9D |0 \x83\x9E |0 \x83\x9F |0 \x83\xA0 |0 \x83\xA1 |0 \x83\xA2 |0 \x83\xA3 |0 \x83\xA4 |0 \x83\xA5 |0 \x83\xA6 |0 \x83\xA7 |0 \x83\xA8 |0 \x83\xA9 |0 \x83\xAA |0 \x83\xAB |0 \x83\xAC |0 \x83\xAD |0 \x83\xAE |0 \x83\xAF |0 \x83\xB0 |0 \x83\xB1 |0 \x83\xB2 |0 \xB6\xF9 |0 \xD8\xA3 |0 \xD4\xCA |0 \x83\xB3 |0 \xD4\xAA |0 \xD0\xD6 |0 \xB3\xE4 |0 \xD5\xD7 |0 \x83\xB4 |0 \xCF\xC8 |0 \xB9\xE2 |0 \x83\xB5 |0 \xBF\xCB |0 \x83\xB6 |0 \xC3\xE2 |0 \x83\xB7 |0 \x83\xB8 |0 \x83\xB9 |0 \xB6\xD2 |0 \x83\xBA |0 \x83\xBB |0 \xCD\xC3 |0 \xD9\xEE |0 \xD9\xF0 |0 \x83\xBC |0 \x83\xBD |0 \x83\xBE |0 \xB5\xB3 |0 \x83\xBF |0 \xB6\xB5 |0 \x83\xC0 |0 \x83\xC1 |0 \x83\xC2 |0 \x83\xC3 |0 \x83\xC4 |0 \xBE\xA4 |0 \x83\xC5 |0 \x83\xC6 |0 \xC8\xEB |0 \x83\xC7 |0 \x83\xC8 |0 \xC8\xAB |0 \x83\xC9 |0 \x83\xCA |0 \xB0\xCB |0 \xB9\xAB |0 \xC1\xF9 |0 \xD9\xE2 |0 \x83\xCB |0 \xC0\xBC |0 \xB9\xB2 |0 \x83\xCC |0 \xB9\xD8 |0 \xD0\xCB |0 \xB1\xF8 |0 \xC6\xE4 |0 \xBE\xDF |0 \xB5\xE4 |0 \xD7\xC8 |0 \x83\xCD |0 \xD1\xF8 |0 \xBC\xE6 |0 \xCA\xDE |0 \x83\xCE |0 \x83\xCF |0 \xBC\xBD |0 \xD9\xE6 |0 \xD8\xE7 |0 \x83\xD0 |0 \x83\xD1 |0 \xC4\xDA |0 \x83\xD2 |0 \x83\xD3 |0 \xB8\xD4 |0 \xC8\xBD |0 \x83\xD4 |0 \x83\xD5 |0 \xB2\xE1 |0 \xD4\xD9 |0 \x83\xD6 |0 \x83\xD7 |0 \x83\xD8 |0 \x83\xD9 |0 \xC3\xB0 |0 \x83\xDA |0 \x83\xDB |0 \xC3\xE1 |0 \xDA\xA2 |0 \xC8\xDF |0 \x83\xDC |0 \xD0\xB4 |0 \x83\xDD |0 \xBE\xFC |0 \xC5\xA9 |0 \x83\xDE |0 \x83\xDF |0 \x83\xE0 |0 \xB9\xDA |0 \x83\xE1 |0 \xDA\xA3 |0 \x83\xE2 |0 \xD4\xA9 |0 \xDA\xA4 |0 \x83\xE3 |0 \x83\xE4 |0 \x83\xE5 |0 \x83\xE6 |0 \x83\xE7 |0 \xD9\xFB |0 \xB6\xAC |0 \x83\xE8 |0 \x83\xE9 |0 \xB7\xEB |0 \xB1\xF9 |0 \xD9\xFC |0 \xB3\xE5 |0 \xBE\xF6 |0 \x83\xEA |0 \xBF\xF6 |0 \xD2\xB1 |0 \xC0\xE4 |0 \x83\xEB |0 \x83\xEC |0 \x83\xED |0 \xB6\xB3 |0 \xD9\xFE |0 \xD9\xFD |0 \x83\xEE |0 \x83\xEF |0 \xBE\xBB |0 \x83\xF0 |0 \x83\xF1 |0 \x83\xF2 |0 \xC6\xE0 |0 \x83\xF3 |0 \xD7\xBC |0 \xDA\xA1 |0 \x83\xF4 |0 \xC1\xB9 |0 \x83\xF5 |0 \xB5\xF2 |0 \xC1\xE8 |0 \x83\xF6 |0 \x83\xF7 |0 \xBC\xF5 |0 \x83\xF8 |0 \xB4\xD5 |0 \x83\xF9 |0 \x83\xFA |0 \x83\xFB |0 \x83\xFC |0 \x83\xFD |0 \x83\xFE |0 \x84\x40 |0 \x84\x41 |0 \x84\x42 |0 \xC1\xDD |0 \x84\x43 |0 \xC4\xFD |0 \x84\x44 |0 \x84\x45 |0 \xBC\xB8 |0 \xB7\xB2 |0 \x84\x46 |0 \x84\x47 |0 \xB7\xEF |0 \x84\x48 |0 \x84\x49 |0 \x84\x4A |0 \x84\x4B |0 \x84\x4C |0 \x84\x4D |0 \xD9\xEC |0 \x84\x4E |0 \xC6\xBE |0 \x84\x4F |0 \xBF\xAD |0 \xBB\xCB |0 \x84\x50 |0 \x84\x51 |0 \xB5\xCA |0 \x84\x52 |0 \xDB\xC9 |0 \xD0\xD7 |0 \x84\x53 |0 \xCD\xB9 |0 \xB0\xBC |0 \xB3\xF6 |0 \xBB\xF7 |0 \xDB\xCA |0 \xBA\xAF |0 \x84\x54 |0 \xD4\xE4 |0 \xB5\xB6 |0 \xB5\xF3 |0 \xD8\xD6 |0 \xC8\xD0 |0 \x84\x55 |0 \x84\x56 |0 \xB7\xD6 |0 \xC7\xD0 |0 \xD8\xD7 |0 \x84\x57 |0 \xBF\xAF |0 \x84\x58 |0 \x84\x59 |0 \xDB\xBB |0 \xD8\xD8 |0 \x84\x5A |0 \x84\x5B |0 \xD0\xCC |0 \xBB\xAE |0 \x84\x5C |0 \x84\x5D |0 \x84\x5E |0 \xEB\xBE |0 \xC1\xD0 |0 \xC1\xF5 |0 \xD4\xF2 |0 \xB8\xD5 |0 \xB4\xB4 |0 \x84\x5F |0 \xB3\xF5 |0 \x84\x60 |0 \x84\x61 |0 \xC9\xBE |0 \x84\x62 |0 \x84\x63 |0 \x84\x64 |0 \xC5\xD0 |0 \x84\x65 |0 \x84\x66 |0 \x84\x67 |0 \xC5\xD9 |0 \xC0\xFB |0 \x84\x68 |0 \xB1\xF0 |0 \x84\x69 |0 \xD8\xD9 |0 \xB9\xCE |0 \x84\x6A |0 \xB5\xBD |0 \x84\x6B |0 \x84\x6C |0 \xD8\xDA |0 \x84\x6D |0 \x84\x6E |0 \xD6\xC6 |0 \xCB\xA2 |0 \xC8\xAF |0 \xC9\xB2 |0 \xB4\xCC |0 \xBF\xCC |0 \x84\x6F |0 \xB9\xF4 |0 \x84\x70 |0 \xD8\xDB |0 \xD8\xDC |0 \xB6\xE7 |0 \xBC\xC1 |0 \xCC\xEA |0 \x84\x71 |0 \x84\x72 |0 \x84\x73 |0 \x84\x74 |0 \x84\x75 |0 \x84\x76 |0 \xCF\xF7 |0 \x84\x77 |0 \xD8\xDD |0 \xC7\xB0 |0 \x84\x78 |0 \x84\x79 |0 \xB9\xD0 |0 \xBD\xA3 |0 \x84\x7A |0 \x84\x7B |0 \xCC\xDE |0 \x84\x7C |0 \xC6\xCA |0 \x84\x7D |0 \x84\x7E |0 \x84\x80 |0 \x84\x81 |0 \x84\x82 |0 \xD8\xE0 |0 \x84\x83 |0 \xD8\xDE |0 \x84\x84 |0 \x84\x85 |0 \xD8\xDF |0 \x84\x86 |0 \x84\x87 |0 \x84\x88 |0 \xB0\xFE |0 \x84\x89 |0 \xBE\xE7 |0 \x84\x8A |0 \xCA\xA3 |0 \xBC\xF4 |0 \x84\x8B |0 \x84\x8C |0 \x84\x8D |0 \x84\x8E |0 \xB8\xB1 |0 \x84\x8F |0 \x84\x90 |0 \xB8\xEE |0 \x84\x91 |0 \x84\x92 |0 \x84\x93 |0 \x84\x94 |0 \x84\x95 |0 \x84\x96 |0 \x84\x97 |0 \x84\x98 |0 \x84\x99 |0 \x84\x9A |0 \xD8\xE2 |0 \x84\x9B |0 \xBD\xCB |0 \x84\x9C |0 \xD8\xE4 |0 \xD8\xE3 |0 \x84\x9D |0 \x84\x9E |0 \x84\x9F |0 \x84\xA0 |0 \x84\xA1 |0 \xC5\xFC |0 \x84\xA2 |0 \x84\xA3 |0 \x84\xA4 |0 \x84\xA5 |0 \x84\xA6 |0 \x84\xA7 |0 \x84\xA8 |0 \xD8\xE5 |0 \x84\xA9 |0 \x84\xAA |0 \xD8\xE6 |0 \x84\xAB |0 \x84\xAC |0 \x84\xAD |0 \x84\xAE |0 \x84\xAF |0 \x84\xB0 |0 \x84\xB1 |0 \xC1\xA6 |0 \x84\xB2 |0 \xC8\xB0 |0 \xB0\xEC |0 \xB9\xA6 |0 \xBC\xD3 |0 \xCE\xF1 |0 \xDB\xBD |0 \xC1\xD3 |0 \x84\xB3 |0 \x84\xB4 |0 \x84\xB5 |0 \x84\xB6 |0 \xB6\xAF |0 \xD6\xFA |0 \xC5\xAC |0 \xBD\xD9 |0 \xDB\xBE |0 \xDB\xBF |0 \x84\xB7 |0 \x84\xB8 |0 \x84\xB9 |0 \xC0\xF8 |0 \xBE\xA2 |0 \xC0\xCD |0 \x84\xBA |0 \x84\xBB |0 \x84\xBC |0 \x84\xBD |0 \x84\xBE |0 \x84\xBF |0 \x84\xC0 |0 \x84\xC1 |0 \x84\xC2 |0 \x84\xC3 |0 \xDB\xC0 |0 \xCA\xC6 |0 \x84\xC4 |0 \x84\xC5 |0 \x84\xC6 |0 \xB2\xAA |0 \x84\xC7 |0 \x84\xC8 |0 \x84\xC9 |0 \xD3\xC2 |0 \x84\xCA |0 \xC3\xE3 |0 \x84\xCB |0 \xD1\xAB |0 \x84\xCC |0 \x84\xCD |0 \x84\xCE |0 \x84\xCF |0 \xDB\xC2 |0 \x84\xD0 |0 \xC0\xD5 |0 \x84\xD1 |0 \x84\xD2 |0 \x84\xD3 |0 \xDB\xC3 |0 \x84\xD4 |0 \xBF\xB1 |0 \x84\xD5 |0 \x84\xD6 |0 \x84\xD7 |0 \x84\xD8 |0 \x84\xD9 |0 \x84\xDA |0 \xC4\xBC |0 \x84\xDB |0 \x84\xDC |0 \x84\xDD |0 \x84\xDE |0 \xC7\xDA |0 \x84\xDF |0 \x84\xE0 |0 \x84\xE1 |0 \x84\xE2 |0 \x84\xE3 |0 \x84\xE4 |0 \x84\xE5 |0 \x84\xE6 |0 \x84\xE7 |0 \x84\xE8 |0 \x84\xE9 |0 \xDB\xC4 |0 \x84\xEA |0 \x84\xEB |0 \x84\xEC |0 \x84\xED |0 \x84\xEE |0 \x84\xEF |0 \x84\xF0 |0 \x84\xF1 |0 \xD9\xE8 |0 \xC9\xD7 |0 \x84\xF2 |0 \x84\xF3 |0 \x84\xF4 |0 \xB9\xB4 |0 \xCE\xF0 |0 \xD4\xC8 |0 \x84\xF5 |0 \x84\xF6 |0 \x84\xF7 |0 \x84\xF8 |0 \xB0\xFC |0 \xB4\xD2 |0 \x84\xF9 |0 \xD0\xD9 |0 \x84\xFA |0 \x84\xFB |0 \x84\xFC |0 \x84\xFD |0 \xD9\xE9 |0 \x84\xFE |0 \xDE\xCB |0 \xD9\xEB |0 \x85\x40 |0 \x85\x41 |0 \x85\x42 |0 \x85\x43 |0 \xD8\xB0 |0 \xBB\xAF |0 \xB1\xB1 |0 \x85\x44 |0 \xB3\xD7 |0 \xD8\xCE |0 \x85\x45 |0 \x85\x46 |0 \xD4\xD1 |0 \x85\x47 |0 \x85\x48 |0 \xBD\xB3 |0 \xBF\xEF |0 \x85\x49 |0 \xCF\xBB |0 \x85\x4A |0 \x85\x4B |0 \xD8\xD0 |0 \x85\x4C |0 \x85\x4D |0 \x85\x4E |0 \xB7\xCB |0 \x85\x4F |0 \x85\x50 |0 \x85\x51 |0 \xD8\xD1 |0 \x85\x52 |0 \x85\x53 |0 \x85\x54 |0 \x85\x55 |0 \x85\x56 |0 \x85\x57 |0 \x85\x58 |0 \x85\x59 |0 \x85\x5A |0 \x85\x5B |0 \xC6\xA5 |0 \xC7\xF8 |0 \xD2\xBD |0 \x85\x5C |0 \x85\x5D |0 \xD8\xD2 |0 \xC4\xE4 |0 \x85\x5E |0 \xCA\xAE |0 \x85\x5F |0 \xC7\xA7 |0 \x85\x60 |0 \xD8\xA6 |0 \x85\x61 |0 \xC9\xFD |0 \xCE\xE7 |0 \xBB\xDC |0 \xB0\xEB |0 \x85\x62 |0 \x85\x63 |0 \x85\x64 |0 \xBB\xAA |0 \xD0\xAD |0 \x85\x65 |0 \xB1\xB0 |0 \xD7\xE4 |0 \xD7\xBF |0 \x85\x66 |0 \xB5\xA5 |0 \xC2\xF4 |0 \xC4\xCF |0 \x85\x67 |0 \x85\x68 |0 \xB2\xA9 |0 \x85\x69 |0 \xB2\xB7 |0 \x85\x6A |0 \xB1\xE5 |0 \xDF\xB2 |0 \xD5\xBC |0 \xBF\xA8 |0 \xC2\xAC |0 \xD8\xD5 |0 \xC2\xB1 |0 \x85\x6B |0 \xD8\xD4 |0 \xCE\xD4 |0 \x85\x6C |0 \xDA\xE0 |0 \x85\x6D |0 \xCE\xC0 |0 \x85\x6E |0 \x85\x6F |0 \xD8\xB4 |0 \xC3\xAE |0 \xD3\xA1 |0 \xCE\xA3 |0 \x85\x70 |0 \xBC\xB4 |0 \xC8\xB4 |0 \xC2\xD1 |0 \x85\x71 |0 \xBE\xED |0 \xD0\xB6 |0 \x85\x72 |0 \xDA\xE1 |0 \x85\x73 |0 \x85\x74 |0 \x85\x75 |0 \x85\x76 |0 \xC7\xE4 |0 \x85\x77 |0 \x85\x78 |0 \xB3\xA7 |0 \x85\x79 |0 \xB6\xF2 |0 \xCC\xFC |0 \xC0\xFA |0 \x85\x7A |0 \x85\x7B |0 \xC0\xF7 |0 \x85\x7C |0 \xD1\xB9 |0 \xD1\xE1 |0 \xD8\xC7 |0 \x85\x7D |0 \x85\x7E |0 \x85\x80 |0 \x85\x81 |0 \x85\x82 |0 \x85\x83 |0 \x85\x84 |0 \xB2\xDE |0 \x85\x85 |0 \x85\x86 |0 \xC0\xE5 |0 \x85\x87 |0 \xBA\xF1 |0 \x85\x88 |0 \x85\x89 |0 \xD8\xC8 |0 \x85\x8A |0 \xD4\xAD |0 \x85\x8B |0 \x85\x8C |0 \xCF\xE1 |0 \xD8\xC9 |0 \x85\x8D |0 \xD8\xCA |0 \xCF\xC3 |0 \x85\x8E |0 \xB3\xF8 |0 \xBE\xC7 |0 \x85\x8F |0 \x85\x90 |0 \x85\x91 |0 \x85\x92 |0 \xD8\xCB |0 \x85\x93 |0 \x85\x94 |0 \x85\x95 |0 \x85\x96 |0 \x85\x97 |0 \x85\x98 |0 \x85\x99 |0 \xDB\xCC |0 \x85\x9A |0 \x85\x9B |0 \x85\x9C |0 \x85\x9D |0 \xC8\xA5 |0 \x85\x9E |0 \x85\x9F |0 \x85\xA0 |0 \xCF\xD8 |0 \x85\xA1 |0 \xC8\xFE |0 \xB2\xCE |0 \x85\xA2 |0 \x85\xA3 |0 \x85\xA4 |0 \x85\xA5 |0 \x85\xA6 |0 \xD3\xD6 |0 \xB2\xE6 |0 \xBC\xB0 |0 \xD3\xD1 |0 \xCB\xAB |0 \xB7\xB4 |0 \x85\xA7 |0 \x85\xA8 |0 \x85\xA9 |0 \xB7\xA2 |0 \x85\xAA |0 \x85\xAB |0 \xCA\xE5 |0 \x85\xAC |0 \xC8\xA1 |0 \xCA\xDC |0 \xB1\xE4 |0 \xD0\xF0 |0 \x85\xAD |0 \xC5\xD1 |0 \x85\xAE |0 \x85\xAF |0 \x85\xB0 |0 \xDB\xC5 |0 \xB5\xFE |0 \x85\xB1 |0 \x85\xB2 |0 \xBF\xDA |0 \xB9\xC5 |0 \xBE\xE4 |0 \xC1\xED |0 \x85\xB3 |0 \xDF\xB6 |0 \xDF\xB5 |0 \xD6\xBB |0 \xBD\xD0 |0 \xD5\xD9 |0 \xB0\xC8 |0 \xB6\xA3 |0 \xBF\xC9 |0 \xCC\xA8 |0 \xDF\xB3 |0 \xCA\xB7 |0 \xD3\xD2 |0 \x85\xB4 |0 \xD8\xCF |0 \xD2\xB6 |0 \xBA\xC5 |0 \xCB\xBE |0 \xCC\xBE |0 \x85\xB5 |0 \xDF\xB7 |0 \xB5\xF0 |0 \xDF\xB4 |0 \x85\xB6 |0 \x85\xB7 |0 \x85\xB8 |0 \xD3\xF5 |0 \x85\xB9 |0 \xB3\xD4 |0 \xB8\xF7 |0 \x85\xBA |0 \xDF\xBA |0 \x85\xBB |0 \xBA\xCF |0 \xBC\xAA |0 \xB5\xF5 |0 \x85\xBC |0 \xCD\xAC |0 \xC3\xFB |0 \xBA\xF3 |0 \xC0\xF4 |0 \xCD\xC2 |0 \xCF\xF2 |0 \xDF\xB8 |0 \xCF\xC5 |0 \x85\xBD |0 \xC2\xC0 |0 \xDF\xB9 |0 \xC2\xF0 |0 \x85\xBE |0 \x85\xBF |0 \x85\xC0 |0 \xBE\xFD |0 \x85\xC1 |0 \xC1\xDF |0 \xCD\xCC |0 \xD2\xF7 |0 \xB7\xCD |0 \xDF\xC1 |0 \x85\xC2 |0 \xDF\xC4 |0 \x85\xC3 |0 \x85\xC4 |0 \xB7\xF1 |0 \xB0\xC9 |0 \xB6\xD6 |0 \xB7\xD4 |0 \x85\xC5 |0 \xBA\xAC |0 \xCC\xFD |0 \xBF\xD4 |0 \xCB\xB1 |0 \xC6\xF4 |0 \x85\xC6 |0 \xD6\xA8 |0 \xDF\xC5 |0 \x85\xC7 |0 \xCE\xE2 |0 \xB3\xB3 |0 \x85\xC8 |0 \x85\xC9 |0 \xCE\xFC |0 \xB4\xB5 |0 \x85\xCA |0 \xCE\xC7 |0 \xBA\xF0 |0 \x85\xCB |0 \xCE\xE1 |0 \x85\xCC |0 \xD1\xBD |0 \x85\xCD |0 \x85\xCE |0 \xDF\xC0 |0 \x85\xCF |0 \x85\xD0 |0 \xB4\xF4 |0 \x85\xD1 |0 \xB3\xCA |0 \x85\xD2 |0 \xB8\xE6 |0 \xDF\xBB |0 \x85\xD3 |0 \x85\xD4 |0 \x85\xD5 |0 \x85\xD6 |0 \xC4\xC5 |0 \x85\xD7 |0 \xDF\xBC |0 \xDF\xBD |0 \xDF\xBE |0 \xC5\xBB |0 \xDF\xBF |0 \xDF\xC2 |0 \xD4\xB1 |0 \xDF\xC3 |0 \x85\xD8 |0 \xC7\xBA |0 \xCE\xD8 |0 \x85\xD9 |0 \x85\xDA |0 \x85\xDB |0 \x85\xDC |0 \x85\xDD |0 \xC4\xD8 |0 \x85\xDE |0 \xDF\xCA |0 \x85\xDF |0 \xDF\xCF |0 \x85\xE0 |0 \xD6\xDC |0 \x85\xE1 |0 \x85\xE2 |0 \x85\xE3 |0 \x85\xE4 |0 \x85\xE5 |0 \x85\xE6 |0 \x85\xE7 |0 \x85\xE8 |0 \xDF\xC9 |0 \xDF\xDA |0 \xCE\xB6 |0 \x85\xE9 |0 \xBA\xC7 |0 \xDF\xCE |0 \xDF\xC8 |0 \xC5\xDE |0 \x85\xEA |0 \x85\xEB |0 \xC9\xEB |0 \xBA\xF4 |0 \xC3\xFC |0 \x85\xEC |0 \x85\xED |0 \xBE\xD7 |0 \x85\xEE |0 \xDF\xC6 |0 \x85\xEF |0 \xDF\xCD |0 \x85\xF0 |0 \xC5\xD8 |0 \x85\xF1 |0 \x85\xF2 |0 \x85\xF3 |0 \x85\xF4 |0 \xD5\xA6 |0 \xBA\xCD |0 \x85\xF5 |0 \xBE\xCC |0 \xD3\xBD |0 \xB8\xC0 |0 \x85\xF6 |0 \xD6\xE4 |0 \x85\xF7 |0 \xDF\xC7 |0 \xB9\xBE |0 \xBF\xA7 |0 \x85\xF8 |0 \x85\xF9 |0 \xC1\xFC |0 \xDF\xCB |0 \xDF\xCC |0 \x85\xFA |0 \xDF\xD0 |0 \x85\xFB |0 \x85\xFC |0 \x85\xFD |0 \x85\xFE |0 \x86\x40 |0 \xDF\xDB |0 \xDF\xE5 |0 \x86\x41 |0 \xDF\xD7 |0 \xDF\xD6 |0 \xD7\xC9 |0 \xDF\xE3 |0 \xDF\xE4 |0 \xE5\xEB |0 \xD2\xA7 |0 \xDF\xD2 |0 \x86\x42 |0 \xBF\xA9 |0 \x86\x43 |0 \xD4\xDB |0 \x86\x44 |0 \xBF\xC8 |0 \xDF\xD4 |0 \x86\x45 |0 \x86\x46 |0 \x86\x47 |0 \xCF\xCC |0 \x86\x48 |0 \x86\x49 |0 \xDF\xDD |0 \x86\x4A |0 \xD1\xCA |0 \x86\x4B |0 \xDF\xDE |0 \xB0\xA7 |0 \xC6\xB7 |0 \xDF\xD3 |0 \x86\x4C |0 \xBA\xE5 |0 \x86\x4D |0 \xB6\xDF |0 \xCD\xDB |0 \xB9\xFE |0 \xD4\xD5 |0 \x86\x4E |0 \x86\x4F |0 \xDF\xDF |0 \xCF\xEC |0 \xB0\xA5 |0 \xDF\xE7 |0 \xDF\xD1 |0 \xD1\xC6 |0 \xDF\xD5 |0 \xDF\xD8 |0 \xDF\xD9 |0 \xDF\xDC |0 \x86\x50 |0 \xBB\xA9 |0 \x86\x51 |0 \xDF\xE0 |0 \xDF\xE1 |0 \x86\x52 |0 \xDF\xE2 |0 \xDF\xE6 |0 \xDF\xE8 |0 \xD3\xB4 |0 \x86\x53 |0 \x86\x54 |0 \x86\x55 |0 \x86\x56 |0 \x86\x57 |0 \xB8\xE7 |0 \xC5\xB6 |0 \xDF\xEA |0 \xC9\xDA |0 \xC1\xA8 |0 \xC4\xC4 |0 \x86\x58 |0 \x86\x59 |0 \xBF\xDE |0 \xCF\xF8 |0 \x86\x5A |0 \x86\x5B |0 \x86\x5C |0 \xD5\xDC |0 \xDF\xEE |0 \x86\x5D |0 \x86\x5E |0 \x86\x5F |0 \x86\x60 |0 \x86\x61 |0 \x86\x62 |0 \xB2\xB8 |0 \x86\x63 |0 \xBA\xDF |0 \xDF\xEC |0 \x86\x64 |0 \xDB\xC1 |0 \x86\x65 |0 \xD1\xE4 |0 \x86\x66 |0 \x86\x67 |0 \x86\x68 |0 \x86\x69 |0 \xCB\xF4 |0 \xB4\xBD |0 \x86\x6A |0 \xB0\xA6 |0 \x86\x6B |0 \x86\x6C |0 \x86\x6D |0 \x86\x6E |0 \x86\x6F |0 \xDF\xF1 |0 \xCC\xC6 |0 \xDF\xF2 |0 \x86\x70 |0 \x86\x71 |0 \xDF\xED |0 \x86\x72 |0 \x86\x73 |0 \x86\x74 |0 \x86\x75 |0 \x86\x76 |0 \x86\x77 |0 \xDF\xE9 |0 \x86\x78 |0 \x86\x79 |0 \x86\x7A |0 \x86\x7B |0 \xDF\xEB |0 \x86\x7C |0 \xDF\xEF |0 \xDF\xF0 |0 \xBB\xBD |0 \x86\x7D |0 \x86\x7E |0 \xDF\xF3 |0 \x86\x80 |0 \x86\x81 |0 \xDF\xF4 |0 \x86\x82 |0 \xBB\xA3 |0 \x86\x83 |0 \xCA\xDB |0 \xCE\xA8 |0 \xE0\xA7 |0 \xB3\xAA |0 \x86\x84 |0 \xE0\xA6 |0 \x86\x85 |0 \x86\x86 |0 \x86\x87 |0 \xE0\xA1 |0 \x86\x88 |0 \x86\x89 |0 \x86\x8A |0 \x86\x8B |0 \xDF\xFE |0 \x86\x8C |0 \xCD\xD9 |0 \xDF\xFC |0 \x86\x8D |0 \xDF\xFA |0 \x86\x8E |0 \xBF\xD0 |0 \xD7\xC4 |0 \x86\x8F |0 \xC9\xCC |0 \x86\x90 |0 \x86\x91 |0 \xDF\xF8 |0 \xB0\xA1 |0 \x86\x92 |0 \x86\x93 |0 \x86\x94 |0 \x86\x95 |0 \x86\x96 |0 \xDF\xFD |0 \x86\x97 |0 \x86\x98 |0 \x86\x99 |0 \x86\x9A |0 \xDF\xFB |0 \xE0\xA2 |0 \x86\x9B |0 \x86\x9C |0 \x86\x9D |0 \x86\x9E |0 \x86\x9F |0 \xE0\xA8 |0 \x86\xA0 |0 \x86\xA1 |0 \x86\xA2 |0 \x86\xA3 |0 \xB7\xC8 |0 \x86\xA4 |0 \x86\xA5 |0 \xC6\xA1 |0 \xC9\xB6 |0 \xC0\xB2 |0 \xDF\xF5 |0 \x86\xA6 |0 \x86\xA7 |0 \xC5\xBE |0 \x86\xA8 |0 \xD8\xC4 |0 \xDF\xF9 |0 \xC4\xF6 |0 \x86\xA9 |0 \x86\xAA |0 \x86\xAB |0 \x86\xAC |0 \x86\xAD |0 \x86\xAE |0 \xE0\xA3 |0 \xE0\xA4 |0 \xE0\xA5 |0 \xD0\xA5 |0 \x86\xAF |0 \x86\xB0 |0 \xE0\xB4 |0 \xCC\xE4 |0 \x86\xB1 |0 \xE0\xB1 |0 \x86\xB2 |0 \xBF\xA6 |0 \xE0\xAF |0 \xCE\xB9 |0 \xE0\xAB |0 \xC9\xC6 |0 \x86\xB3 |0 \x86\xB4 |0 \xC0\xAE |0 \xE0\xAE |0 \xBA\xED |0 \xBA\xB0 |0 \xE0\xA9 |0 \x86\xB5 |0 \x86\xB6 |0 \x86\xB7 |0 \xDF\xF6 |0 \x86\xB8 |0 \xE0\xB3 |0 \x86\xB9 |0 \x86\xBA |0 \xE0\xB8 |0 \x86\xBB |0 \x86\xBC |0 \x86\xBD |0 \xB4\xAD |0 \xE0\xB9 |0 \x86\xBE |0 \x86\xBF |0 \xCF\xB2 |0 \xBA\xC8 |0 \x86\xC0 |0 \xE0\xB0 |0 \x86\xC1 |0 \x86\xC2 |0 \x86\xC3 |0 \x86\xC4 |0 \x86\xC5 |0 \x86\xC6 |0 \x86\xC7 |0 \xD0\xFA |0 \x86\xC8 |0 \x86\xC9 |0 \x86\xCA |0 \x86\xCB |0 \x86\xCC |0 \x86\xCD |0 \x86\xCE |0 \x86\xCF |0 \x86\xD0 |0 \xE0\xAC |0 \x86\xD1 |0 \xD4\xFB |0 \x86\xD2 |0 \xDF\xF7 |0 \x86\xD3 |0 \xC5\xE7 |0 \x86\xD4 |0 \xE0\xAD |0 \x86\xD5 |0 \xD3\xF7 |0 \x86\xD6 |0 \xE0\xB6 |0 \xE0\xB7 |0 \x86\xD7 |0 \x86\xD8 |0 \x86\xD9 |0 \x86\xDA |0 \x86\xDB |0 \xE0\xC4 |0 \xD0\xE1 |0 \x86\xDC |0 \x86\xDD |0 \x86\xDE |0 \xE0\xBC |0 \x86\xDF |0 \x86\xE0 |0 \xE0\xC9 |0 \xE0\xCA |0 \x86\xE1 |0 \x86\xE2 |0 \x86\xE3 |0 \xE0\xBE |0 \xE0\xAA |0 \xC9\xA4 |0 \xE0\xC1 |0 \x86\xE4 |0 \xE0\xB2 |0 \x86\xE5 |0 \x86\xE6 |0 \x86\xE7 |0 \x86\xE8 |0 \x86\xE9 |0 \xCA\xC8 |0 \xE0\xC3 |0 \x86\xEA |0 \xE0\xB5 |0 \x86\xEB |0 \xCE\xCB |0 \x86\xEC |0 \xCB\xC3 |0 \xE0\xCD |0 \xE0\xC6 |0 \xE0\xC2 |0 \x86\xED |0 \xE0\xCB |0 \x86\xEE |0 \xE0\xBA |0 \xE0\xBF |0 \xE0\xC0 |0 \x86\xEF |0 \x86\xF0 |0 \xE0\xC5 |0 \x86\xF1 |0 \x86\xF2 |0 \xE0\xC7 |0 \xE0\xC8 |0 \x86\xF3 |0 \xE0\xCC |0 \x86\xF4 |0 \xE0\xBB |0 \x86\xF5 |0 \x86\xF6 |0 \x86\xF7 |0 \x86\xF8 |0 \x86\xF9 |0 \xCB\xD4 |0 \xE0\xD5 |0 \x86\xFA |0 \xE0\xD6 |0 \xE0\xD2 |0 \x86\xFB |0 \x86\xFC |0 \x86\xFD |0 \x86\xFE |0 \x87\x40 |0 \x87\x41 |0 \xE0\xD0 |0 \xBC\xCE |0 \x87\x42 |0 \x87\x43 |0 \xE0\xD1 |0 \x87\x44 |0 \xB8\xC2 |0 \xD8\xC5 |0 \x87\x45 |0 \x87\x46 |0 \x87\x47 |0 \x87\x48 |0 \x87\x49 |0 \x87\x4A |0 \x87\x4B |0 \x87\x4C |0 \xD0\xEA |0 \x87\x4D |0 \x87\x4E |0 \xC2\xEF |0 \x87\x4F |0 \x87\x50 |0 \xE0\xCF |0 \xE0\xBD |0 \x87\x51 |0 \x87\x52 |0 \x87\x53 |0 \xE0\xD4 |0 \xE0\xD3 |0 \x87\x54 |0 \x87\x55 |0 \xE0\xD7 |0 \x87\x56 |0 \x87\x57 |0 \x87\x58 |0 \x87\x59 |0 \xE0\xDC |0 \xE0\xD8 |0 \x87\x5A |0 \x87\x5B |0 \x87\x5C |0 \xD6\xF6 |0 \xB3\xB0 |0 \x87\x5D |0 \xD7\xEC |0 \x87\x5E |0 \xCB\xBB |0 \x87\x5F |0 \x87\x60 |0 \xE0\xDA |0 \x87\x61 |0 \xCE\xFB |0 \x87\x62 |0 \x87\x63 |0 \x87\x64 |0 \xBA\xD9 |0 \x87\x65 |0 \x87\x66 |0 \x87\x67 |0 \x87\x68 |0 \x87\x69 |0 \x87\x6A |0 \x87\x6B |0 \x87\x6C |0 \x87\x6D |0 \x87\x6E |0 \x87\x6F |0 \x87\x70 |0 \xE0\xE1 |0 \xE0\xDD |0 \xD2\xAD |0 \x87\x71 |0 \x87\x72 |0 \x87\x73 |0 \x87\x74 |0 \x87\x75 |0 \xE0\xE2 |0 \x87\x76 |0 \x87\x77 |0 \xE0\xDB |0 \xE0\xD9 |0 \xE0\xDF |0 \x87\x78 |0 \x87\x79 |0 \xE0\xE0 |0 \x87\x7A |0 \x87\x7B |0 \x87\x7C |0 \x87\x7D |0 \x87\x7E |0 \xE0\xDE |0 \x87\x80 |0 \xE0\xE4 |0 \x87\x81 |0 \x87\x82 |0 \x87\x83 |0 \xC6\xF7 |0 \xD8\xAC |0 \xD4\xEB |0 \xE0\xE6 |0 \xCA\xC9 |0 \x87\x84 |0 \x87\x85 |0 \x87\x86 |0 \x87\x87 |0 \xE0\xE5 |0 \x87\x88 |0 \x87\x89 |0 \x87\x8A |0 \x87\x8B |0 \xB8\xC1 |0 \x87\x8C |0 \x87\x8D |0 \x87\x8E |0 \x87\x8F |0 \xE0\xE7 |0 \xE0\xE8 |0 \x87\x90 |0 \x87\x91 |0 \x87\x92 |0 \x87\x93 |0 \x87\x94 |0 \x87\x95 |0 \x87\x96 |0 \x87\x97 |0 \xE0\xE9 |0 \xE0\xE3 |0 \x87\x98 |0 \x87\x99 |0 \x87\x9A |0 \x87\x9B |0 \x87\x9C |0 \x87\x9D |0 \x87\x9E |0 \xBA\xBF |0 \xCC\xE7 |0 \x87\x9F |0 \x87\xA0 |0 \x87\xA1 |0 \xE0\xEA |0 \x87\xA2 |0 \x87\xA3 |0 \x87\xA4 |0 \x87\xA5 |0 \x87\xA6 |0 \x87\xA7 |0 \x87\xA8 |0 \x87\xA9 |0 \x87\xAA |0 \x87\xAB |0 \x87\xAC |0 \x87\xAD |0 \x87\xAE |0 \x87\xAF |0 \x87\xB0 |0 \xCF\xF9 |0 \x87\xB1 |0 \x87\xB2 |0 \x87\xB3 |0 \x87\xB4 |0 \x87\xB5 |0 \x87\xB6 |0 \x87\xB7 |0 \x87\xB8 |0 \x87\xB9 |0 \x87\xBA |0 \x87\xBB |0 \xE0\xEB |0 \x87\xBC |0 \x87\xBD |0 \x87\xBE |0 \x87\xBF |0 \x87\xC0 |0 \x87\xC1 |0 \x87\xC2 |0 \xC8\xC2 |0 \x87\xC3 |0 \x87\xC4 |0 \x87\xC5 |0 \x87\xC6 |0 \xBD\xC0 |0 \x87\xC7 |0 \x87\xC8 |0 \x87\xC9 |0 \x87\xCA |0 \x87\xCB |0 \x87\xCC |0 \x87\xCD |0 \x87\xCE |0 \x87\xCF |0 \x87\xD0 |0 \x87\xD1 |0 \x87\xD2 |0 \x87\xD3 |0 \xC4\xD2 |0 \x87\xD4 |0 \x87\xD5 |0 \x87\xD6 |0 \x87\xD7 |0 \x87\xD8 |0 \x87\xD9 |0 \x87\xDA |0 \x87\xDB |0 \x87\xDC |0 \xE0\xEC |0 \x87\xDD |0 \x87\xDE |0 \xE0\xED |0 \x87\xDF |0 \x87\xE0 |0 \xC7\xF4 |0 \xCB\xC4 |0 \x87\xE1 |0 \xE0\xEE |0 \xBB\xD8 |0 \xD8\xB6 |0 \xD2\xF2 |0 \xE0\xEF |0 \xCD\xC5 |0 \x87\xE2 |0 \xB6\xDA |0 \x87\xE3 |0 \x87\xE4 |0 \x87\xE5 |0 \x87\xE6 |0 \x87\xE7 |0 \x87\xE8 |0 \xE0\xF1 |0 \x87\xE9 |0 \xD4\xB0 |0 \x87\xEA |0 \x87\xEB |0 \xC0\xA7 |0 \xB4\xD1 |0 \x87\xEC |0 \x87\xED |0 \xCE\xA7 |0 \xE0\xF0 |0 \x87\xEE |0 \x87\xEF |0 \x87\xF0 |0 \xE0\xF2 |0 \xB9\xCC |0 \x87\xF1 |0 \x87\xF2 |0 \xB9\xFA |0 \xCD\xBC |0 \xE0\xF3 |0 \x87\xF3 |0 \x87\xF4 |0 \x87\xF5 |0 \xC6\xD4 |0 \xE0\xF4 |0 \x87\xF6 |0 \xD4\xB2 |0 \x87\xF7 |0 \xC8\xA6 |0 \xE0\xF6 |0 \xE0\xF5 |0 \x87\xF8 |0 \x87\xF9 |0 \x87\xFA |0 \x87\xFB |0 \x87\xFC |0 \x87\xFD |0 \x87\xFE |0 \x88\x40 |0 \x88\x41 |0 \x88\x42 |0 \x88\x43 |0 \x88\x44 |0 \x88\x45 |0 \x88\x46 |0 \x88\x47 |0 \x88\x48 |0 \x88\x49 |0 \xE0\xF7 |0 \x88\x4A |0 \x88\x4B |0 \xCD\xC1 |0 \x88\x4C |0 \x88\x4D |0 \x88\x4E |0 \xCA\xA5 |0 \x88\x4F |0 \x88\x50 |0 \x88\x51 |0 \x88\x52 |0 \xD4\xDA |0 \xDB\xD7 |0 \xDB\xD9 |0 \x88\x53 |0 \xDB\xD8 |0 \xB9\xE7 |0 \xDB\xDC |0 \xDB\xDD |0 \xB5\xD8 |0 \x88\x54 |0 \x88\x55 |0 \xDB\xDA |0 \x88\x56 |0 \x88\x57 |0 \x88\x58 |0 \x88\x59 |0 \x88\x5A |0 \xDB\xDB |0 \xB3\xA1 |0 \xDB\xDF |0 \x88\x5B |0 \x88\x5C |0 \xBB\xF8 |0 \x88\x5D |0 \xD6\xB7 |0 \x88\x5E |0 \xDB\xE0 |0 \x88\x5F |0 \x88\x60 |0 \x88\x61 |0 \x88\x62 |0 \xBE\xF9 |0 \x88\x63 |0 \x88\x64 |0 \xB7\xBB |0 \x88\x65 |0 \xDB\xD0 |0 \xCC\xAE |0 \xBF\xB2 |0 \xBB\xB5 |0 \xD7\xF8 |0 \xBF\xD3 |0 \x88\x66 |0 \x88\x67 |0 \x88\x68 |0 \x88\x69 |0 \x88\x6A |0 \xBF\xE9 |0 \x88\x6B |0 \x88\x6C |0 \xBC\xE1 |0 \xCC\xB3 |0 \xDB\xDE |0 \xB0\xD3 |0 \xCE\xEB |0 \xB7\xD8 |0 \xD7\xB9 |0 \xC6\xC2 |0 \x88\x6D |0 \x88\x6E |0 \xC0\xA4 |0 \x88\x6F |0 \xCC\xB9 |0 \x88\x70 |0 \xDB\xE7 |0 \xDB\xE1 |0 \xC6\xBA |0 \xDB\xE3 |0 \x88\x71 |0 \xDB\xE8 |0 \x88\x72 |0 \xC5\xF7 |0 \x88\x73 |0 \x88\x74 |0 \x88\x75 |0 \xDB\xEA |0 \x88\x76 |0 \x88\x77 |0 \xDB\xE9 |0 \xBF\xC0 |0 \x88\x78 |0 \x88\x79 |0 \x88\x7A |0 \xDB\xE6 |0 \xDB\xE5 |0 \x88\x7B |0 \x88\x7C |0 \x88\x7D |0 \x88\x7E |0 \x88\x80 |0 \xB4\xB9 |0 \xC0\xAC |0 \xC2\xA2 |0 \xDB\xE2 |0 \xDB\xE4 |0 \x88\x81 |0 \x88\x82 |0 \x88\x83 |0 \x88\x84 |0 \xD0\xCD |0 \xDB\xED |0 \x88\x85 |0 \x88\x86 |0 \x88\x87 |0 \x88\x88 |0 \x88\x89 |0 \xC0\xDD |0 \xDB\xF2 |0 \x88\x8A |0 \x88\x8B |0 \x88\x8C |0 \x88\x8D |0 \x88\x8E |0 \x88\x8F |0 \x88\x90 |0 \xB6\xE2 |0 \x88\x91 |0 \x88\x92 |0 \x88\x93 |0 \x88\x94 |0 \xDB\xF3 |0 \xDB\xD2 |0 \xB9\xB8 |0 \xD4\xAB |0 \xDB\xEC |0 \x88\x95 |0 \xBF\xD1 |0 \xDB\xF0 |0 \x88\x96 |0 \xDB\xD1 |0 \x88\x97 |0 \xB5\xE6 |0 \x88\x98 |0 \xDB\xEB |0 \xBF\xE5 |0 \x88\x99 |0 \x88\x9A |0 \x88\x9B |0 \xDB\xEE |0 \x88\x9C |0 \xDB\xF1 |0 \x88\x9D |0 \x88\x9E |0 \x88\x9F |0 \xDB\xF9 |0 \x88\xA0 |0 \x88\xA1 |0 \x88\xA2 |0 \x88\xA3 |0 \x88\xA4 |0 \x88\xA5 |0 \x88\xA6 |0 \x88\xA7 |0 \x88\xA8 |0 \xB9\xA1 |0 \xB0\xA3 |0 \x88\xA9 |0 \x88\xAA |0 \x88\xAB |0 \x88\xAC |0 \x88\xAD |0 \x88\xAE |0 \x88\xAF |0 \xC2\xF1 |0 \x88\xB0 |0 \x88\xB1 |0 \xB3\xC7 |0 \xDB\xEF |0 \x88\xB2 |0 \x88\xB3 |0 \xDB\xF8 |0 \x88\xB4 |0 \xC6\xD2 |0 \xDB\xF4 |0 \x88\xB5 |0 \x88\xB6 |0 \xDB\xF5 |0 \xDB\xF7 |0 \xDB\xF6 |0 \x88\xB7 |0 \x88\xB8 |0 \xDB\xFE |0 \x88\xB9 |0 \xD3\xF2 |0 \xB2\xBA |0 \x88\xBA |0 \x88\xBB |0 \x88\xBC |0 \xDB\xFD |0 \x88\xBD |0 \x88\xBE |0 \x88\xBF |0 \x88\xC0 |0 \x88\xC1 |0 \x88\xC2 |0 \x88\xC3 |0 \x88\xC4 |0 \xDC\xA4 |0 \x88\xC5 |0 \xDB\xFB |0 \x88\xC6 |0 \x88\xC7 |0 \x88\xC8 |0 \x88\xC9 |0 \xDB\xFA |0 \x88\xCA |0 \x88\xCB |0 \x88\xCC |0 \xDB\xFC |0 \xC5\xE0 |0 \xBB\xF9 |0 \x88\xCD |0 \x88\xCE |0 \xDC\xA3 |0 \x88\xCF |0 \x88\xD0 |0 \xDC\xA5 |0 \x88\xD1 |0 \xCC\xC3 |0 \x88\xD2 |0 \x88\xD3 |0 \x88\xD4 |0 \xB6\xD1 |0 \xDD\xC0 |0 \x88\xD5 |0 \x88\xD6 |0 \x88\xD7 |0 \xDC\xA1 |0 \x88\xD8 |0 \xDC\xA2 |0 \x88\xD9 |0 \x88\xDA |0 \x88\xDB |0 \xC7\xB5 |0 \x88\xDC |0 \x88\xDD |0 \x88\xDE |0 \xB6\xE9 |0 \x88\xDF |0 \x88\xE0 |0 \x88\xE1 |0 \xDC\xA7 |0 \x88\xE2 |0 \x88\xE3 |0 \x88\xE4 |0 \x88\xE5 |0 \xDC\xA6 |0 \x88\xE6 |0 \xDC\xA9 |0 \xB1\xA4 |0 \x88\xE7 |0 \x88\xE8 |0 \xB5\xCC |0 \x88\xE9 |0 \x88\xEA |0 \x88\xEB |0 \x88\xEC |0 \x88\xED |0 \xBF\xB0 |0 \x88\xEE |0 \x88\xEF |0 \x88\xF0 |0 \x88\xF1 |0 \x88\xF2 |0 \xD1\xDF |0 \x88\xF3 |0 \x88\xF4 |0 \x88\xF5 |0 \x88\xF6 |0 \xB6\xC2 |0 \x88\xF7 |0 \x88\xF8 |0 \x88\xF9 |0 \x88\xFA |0 \x88\xFB |0 \x88\xFC |0 \x88\xFD |0 \x88\xFE |0 \x89\x40 |0 \x89\x41 |0 \x89\x42 |0 \x89\x43 |0 \x89\x44 |0 \x89\x45 |0 \xDC\xA8 |0 \x89\x46 |0 \x89\x47 |0 \x89\x48 |0 \x89\x49 |0 \x89\x4A |0 \x89\x4B |0 \x89\x4C |0 \xCB\xFA |0 \xEB\xF3 |0 \x89\x4D |0 \x89\x4E |0 \x89\x4F |0 \xCB\xDC |0 \x89\x50 |0 \x89\x51 |0 \xCB\xFE |0 \x89\x52 |0 \x89\x53 |0 \x89\x54 |0 \xCC\xC1 |0 \x89\x55 |0 \x89\x56 |0 \x89\x57 |0 \x89\x58 |0 \x89\x59 |0 \xC8\xFB |0 \x89\x5A |0 \x89\x5B |0 \x89\x5C |0 \x89\x5D |0 \x89\x5E |0 \x89\x5F |0 \xDC\xAA |0 \x89\x60 |0 \x89\x61 |0 \x89\x62 |0 \x89\x63 |0 \x89\x64 |0 \xCC\xEE |0 \xDC\xAB |0 \x89\x65 |0 \x89\x66 |0 \x89\x67 |0 \x89\x68 |0 \x89\x69 |0 \x89\x6A |0 \x89\x6B |0 \x89\x6C |0 \x89\x6D |0 \x89\x6E |0 \x89\x6F |0 \x89\x70 |0 \x89\x71 |0 \x89\x72 |0 \x89\x73 |0 \x89\x74 |0 \x89\x75 |0 \xDB\xD3 |0 \x89\x76 |0 \xDC\xAF |0 \xDC\xAC |0 \x89\x77 |0 \xBE\xB3 |0 \x89\x78 |0 \xCA\xFB |0 \x89\x79 |0 \x89\x7A |0 \x89\x7B |0 \xDC\xAD |0 \x89\x7C |0 \x89\x7D |0 \x89\x7E |0 \x89\x80 |0 \x89\x81 |0 \x89\x82 |0 \x89\x83 |0 \x89\x84 |0 \xC9\xCA |0 \xC4\xB9 |0 \x89\x85 |0 \x89\x86 |0 \x89\x87 |0 \x89\x88 |0 \x89\x89 |0 \xC7\xBD |0 \xDC\xAE |0 \x89\x8A |0 \x89\x8B |0 \x89\x8C |0 \xD4\xF6 |0 \xD0\xE6 |0 \x89\x8D |0 \x89\x8E |0 \x89\x8F |0 \x89\x90 |0 \x89\x91 |0 \x89\x92 |0 \x89\x93 |0 \x89\x94 |0 \xC4\xAB |0 \xB6\xD5 |0 \x89\x95 |0 \x89\x96 |0 \x89\x97 |0 \x89\x98 |0 \x89\x99 |0 \x89\x9A |0 \x89\x9B |0 \x89\x9C |0 \x89\x9D |0 \x89\x9E |0 \x89\x9F |0 \x89\xA0 |0 \x89\xA1 |0 \x89\xA2 |0 \x89\xA3 |0 \x89\xA4 |0 \x89\xA5 |0 \x89\xA6 |0 \xDB\xD4 |0 \x89\xA7 |0 \x89\xA8 |0 \x89\xA9 |0 \x89\xAA |0 \xB1\xDA |0 \x89\xAB |0 \x89\xAC |0 \x89\xAD |0 \xDB\xD5 |0 \x89\xAE |0 \x89\xAF |0 \x89\xB0 |0 \x89\xB1 |0 \x89\xB2 |0 \x89\xB3 |0 \x89\xB4 |0 \x89\xB5 |0 \x89\xB6 |0 \x89\xB7 |0 \x89\xB8 |0 \xDB\xD6 |0 \x89\xB9 |0 \x89\xBA |0 \x89\xBB |0 \xBA\xBE |0 \x89\xBC |0 \x89\xBD |0 \x89\xBE |0 \x89\xBF |0 \x89\xC0 |0 \x89\xC1 |0 \x89\xC2 |0 \x89\xC3 |0 \x89\xC4 |0 \x89\xC5 |0 \x89\xC6 |0 \x89\xC7 |0 \x89\xC8 |0 \x89\xC9 |0 \xC8\xC0 |0 \x89\xCA |0 \x89\xCB |0 \x89\xCC |0 \x89\xCD |0 \x89\xCE |0 \x89\xCF |0 \xCA\xBF |0 \xC8\xC9 |0 \x89\xD0 |0 \xD7\xB3 |0 \x89\xD1 |0 \xC9\xF9 |0 \x89\xD2 |0 \x89\xD3 |0 \xBF\xC7 |0 \x89\xD4 |0 \x89\xD5 |0 \xBA\xF8 |0 \x89\xD6 |0 \x89\xD7 |0 \xD2\xBC |0 \x89\xD8 |0 \x89\xD9 |0 \x89\xDA |0 \x89\xDB |0 \x89\xDC |0 \x89\xDD |0 \x89\xDE |0 \x89\xDF |0 \xE2\xBA |0 \x89\xE0 |0 \xB4\xA6 |0 \x89\xE1 |0 \x89\xE2 |0 \xB1\xB8 |0 \x89\xE3 |0 \x89\xE4 |0 \x89\xE5 |0 \x89\xE6 |0 \x89\xE7 |0 \xB8\xB4 |0 \x89\xE8 |0 \xCF\xC4 |0 \x89\xE9 |0 \x89\xEA |0 \x89\xEB |0 \x89\xEC |0 \xD9\xE7 |0 \xCF\xA6 |0 \xCD\xE2 |0 \x89\xED |0 \x89\xEE |0 \xD9\xED |0 \xB6\xE0 |0 \x89\xEF |0 \xD2\xB9 |0 \x89\xF0 |0 \x89\xF1 |0 \xB9\xBB |0 \x89\xF2 |0 \x89\xF3 |0 \x89\xF4 |0 \x89\xF5 |0 \xE2\xB9 |0 \xE2\xB7 |0 \x89\xF6 |0 \xB4\xF3 |0 \x89\xF7 |0 \xCC\xEC |0 \xCC\xAB |0 \xB7\xF2 |0 \x89\xF8 |0 \xD8\xB2 |0 \xD1\xEB |0 \xBA\xBB |0 \x89\xF9 |0 \xCA\xA7 |0 \x89\xFA |0 \x89\xFB |0 \xCD\xB7 |0 \x89\xFC |0 \x89\xFD |0 \xD2\xC4 |0 \xBF\xE4 |0 \xBC\xD0 |0 \xB6\xE1 |0 \x89\xFE |0 \xDE\xC5 |0 \x8A\x40 |0 \x8A\x41 |0 \x8A\x42 |0 \x8A\x43 |0 \xDE\xC6 |0 \xDB\xBC |0 \x8A\x44 |0 \xD1\xD9 |0 \x8A\x45 |0 \x8A\x46 |0 \xC6\xE6 |0 \xC4\xCE |0 \xB7\xEE |0 \x8A\x47 |0 \xB7\xDC |0 \x8A\x48 |0 \x8A\x49 |0 \xBF\xFC |0 \xD7\xE0 |0 \x8A\x4A |0 \xC6\xF5 |0 \x8A\x4B |0 \x8A\x4C |0 \xB1\xBC |0 \xDE\xC8 |0 \xBD\xB1 |0 \xCC\xD7 |0 \xDE\xCA |0 \x8A\x4D |0 \xDE\xC9 |0 \x8A\x4E |0 \x8A\x4F |0 \x8A\x50 |0 \x8A\x51 |0 \x8A\x52 |0 \xB5\xEC |0 \x8A\x53 |0 \xC9\xDD |0 \x8A\x54 |0 \x8A\x55 |0 \xB0\xC2 |0 \x8A\x56 |0 \x8A\x57 |0 \x8A\x58 |0 \x8A\x59 |0 \x8A\x5A |0 \x8A\x5B |0 \x8A\x5C |0 \x8A\x5D |0 \x8A\x5E |0 \x8A\x5F |0 \x8A\x60 |0 \x8A\x61 |0 \x8A\x62 |0 \xC5\xAE |0 \xC5\xAB |0 \x8A\x63 |0 \xC4\xCC |0 \x8A\x64 |0 \xBC\xE9 |0 \xCB\xFD |0 \x8A\x65 |0 \x8A\x66 |0 \x8A\x67 |0 \xBA\xC3 |0 \x8A\x68 |0 \x8A\x69 |0 \x8A\x6A |0 \xE5\xF9 |0 \xC8\xE7 |0 \xE5\xFA |0 \xCD\xFD |0 \x8A\x6B |0 \xD7\xB1 |0 \xB8\xBE |0 \xC2\xE8 |0 \x8A\x6C |0 \xC8\xD1 |0 \x8A\x6D |0 \x8A\x6E |0 \xE5\xFB |0 \x8A\x6F |0 \x8A\x70 |0 \x8A\x71 |0 \x8A\x72 |0 \xB6\xCA |0 \xBC\xCB |0 \x8A\x73 |0 \x8A\x74 |0 \xD1\xFD |0 \xE6\xA1 |0 \x8A\x75 |0 \xC3\xEE |0 \x8A\x76 |0 \x8A\x77 |0 \x8A\x78 |0 \x8A\x79 |0 \xE6\xA4 |0 \x8A\x7A |0 \x8A\x7B |0 \x8A\x7C |0 \x8A\x7D |0 \xE5\xFE |0 \xE6\xA5 |0 \xCD\xD7 |0 \x8A\x7E |0 \x8A\x80 |0 \xB7\xC1 |0 \xE5\xFC |0 \xE5\xFD |0 \xE6\xA3 |0 \x8A\x81 |0 \x8A\x82 |0 \xC4\xDD |0 \xE6\xA8 |0 \x8A\x83 |0 \x8A\x84 |0 \xE6\xA7 |0 \x8A\x85 |0 \x8A\x86 |0 \x8A\x87 |0 \x8A\x88 |0 \x8A\x89 |0 \x8A\x8A |0 \xC3\xC3 |0 \x8A\x8B |0 \xC6\xDE |0 \x8A\x8C |0 \x8A\x8D |0 \xE6\xAA |0 \x8A\x8E |0 \x8A\x8F |0 \x8A\x90 |0 \x8A\x91 |0 \x8A\x92 |0 \x8A\x93 |0 \x8A\x94 |0 \xC4\xB7 |0 \x8A\x95 |0 \x8A\x96 |0 \x8A\x97 |0 \xE6\xA2 |0 \xCA\xBC |0 \x8A\x98 |0 \x8A\x99 |0 \x8A\x9A |0 \x8A\x9B |0 \xBD\xE3 |0 \xB9\xC3 |0 \xE6\xA6 |0 \xD0\xD5 |0 \xCE\xAF |0 \x8A\x9C |0 \x8A\x9D |0 \xE6\xA9 |0 \xE6\xB0 |0 \x8A\x9E |0 \xD2\xA6 |0 \x8A\x9F |0 \xBD\xAA |0 \xE6\xAD |0 \x8A\xA0 |0 \x8A\xA1 |0 \x8A\xA2 |0 \x8A\xA3 |0 \x8A\xA4 |0 \xE6\xAF |0 \x8A\xA5 |0 \xC0\xD1 |0 \x8A\xA6 |0 \x8A\xA7 |0 \xD2\xCC |0 \x8A\xA8 |0 \x8A\xA9 |0 \x8A\xAA |0 \xBC\xA7 |0 \x8A\xAB |0 \x8A\xAC |0 \x8A\xAD |0 \x8A\xAE |0 \x8A\xAF |0 \x8A\xB0 |0 \x8A\xB1 |0 \x8A\xB2 |0 \x8A\xB3 |0 \x8A\xB4 |0 \x8A\xB5 |0 \x8A\xB6 |0 \xE6\xB1 |0 \x8A\xB7 |0 \xD2\xF6 |0 \x8A\xB8 |0 \x8A\xB9 |0 \x8A\xBA |0 \xD7\xCB |0 \x8A\xBB |0 \xCD\xFE |0 \x8A\xBC |0 \xCD\xDE |0 \xC2\xA6 |0 \xE6\xAB |0 \xE6\xAC |0 \xBD\xBF |0 \xE6\xAE |0 \xE6\xB3 |0 \x8A\xBD |0 \x8A\xBE |0 \xE6\xB2 |0 \x8A\xBF |0 \x8A\xC0 |0 \x8A\xC1 |0 \x8A\xC2 |0 \xE6\xB6 |0 \x8A\xC3 |0 \xE6\xB8 |0 \x8A\xC4 |0 \x8A\xC5 |0 \x8A\xC6 |0 \x8A\xC7 |0 \xC4\xEF |0 \x8A\xC8 |0 \x8A\xC9 |0 \x8A\xCA |0 \xC4\xC8 |0 \x8A\xCB |0 \x8A\xCC |0 \xBE\xEA |0 \xC9\xEF |0 \x8A\xCD |0 \x8A\xCE |0 \xE6\xB7 |0 \x8A\xCF |0 \xB6\xF0 |0 \x8A\xD0 |0 \x8A\xD1 |0 \x8A\xD2 |0 \xC3\xE4 |0 \x8A\xD3 |0 \x8A\xD4 |0 \x8A\xD5 |0 \x8A\xD6 |0 \x8A\xD7 |0 \x8A\xD8 |0 \x8A\xD9 |0 \xD3\xE9 |0 \xE6\xB4 |0 \x8A\xDA |0 \xE6\xB5 |0 \x8A\xDB |0 \xC8\xA2 |0 \x8A\xDC |0 \x8A\xDD |0 \x8A\xDE |0 \x8A\xDF |0 \x8A\xE0 |0 \xE6\xBD |0 \x8A\xE1 |0 \x8A\xE2 |0 \x8A\xE3 |0 \xE6\xB9 |0 \x8A\xE4 |0 \x8A\xE5 |0 \x8A\xE6 |0 \x8A\xE7 |0 \x8A\xE8 |0 \xC6\xC5 |0 \x8A\xE9 |0 \x8A\xEA |0 \xCD\xF1 |0 \xE6\xBB |0 \x8A\xEB |0 \x8A\xEC |0 \x8A\xED |0 \x8A\xEE |0 \x8A\xEF |0 \x8A\xF0 |0 \x8A\xF1 |0 \x8A\xF2 |0 \x8A\xF3 |0 \x8A\xF4 |0 \xE6\xBC |0 \x8A\xF5 |0 \x8A\xF6 |0 \x8A\xF7 |0 \x8A\xF8 |0 \xBB\xE9 |0 \x8A\xF9 |0 \x8A\xFA |0 \x8A\xFB |0 \x8A\xFC |0 \x8A\xFD |0 \x8A\xFE |0 \x8B\x40 |0 \xE6\xBE |0 \x8B\x41 |0 \x8B\x42 |0 \x8B\x43 |0 \x8B\x44 |0 \xE6\xBA |0 \x8B\x45 |0 \x8B\x46 |0 \xC0\xB7 |0 \x8B\x47 |0 \x8B\x48 |0 \x8B\x49 |0 \x8B\x4A |0 \x8B\x4B |0 \x8B\x4C |0 \x8B\x4D |0 \x8B\x4E |0 \x8B\x4F |0 \xD3\xA4 |0 \xE6\xBF |0 \xC9\xF4 |0 \xE6\xC3 |0 \x8B\x50 |0 \x8B\x51 |0 \xE6\xC4 |0 \x8B\x52 |0 \x8B\x53 |0 \x8B\x54 |0 \x8B\x55 |0 \xD0\xF6 |0 \x8B\x56 |0 \x8B\x57 |0 \x8B\x58 |0 \x8B\x59 |0 \x8B\x5A |0 \x8B\x5B |0 \x8B\x5C |0 \x8B\x5D |0 \x8B\x5E |0 \x8B\x5F |0 \x8B\x60 |0 \x8B\x61 |0 \x8B\x62 |0 \x8B\x63 |0 \x8B\x64 |0 \x8B\x65 |0 \x8B\x66 |0 \x8B\x67 |0 \xC3\xBD |0 \x8B\x68 |0 \x8B\x69 |0 \x8B\x6A |0 \x8B\x6B |0 \x8B\x6C |0 \x8B\x6D |0 \x8B\x6E |0 \xC3\xC4 |0 \xE6\xC2 |0 \x8B\x6F |0 \x8B\x70 |0 \x8B\x71 |0 \x8B\x72 |0 \x8B\x73 |0 \x8B\x74 |0 \x8B\x75 |0 \x8B\x76 |0 \x8B\x77 |0 \x8B\x78 |0 \x8B\x79 |0 \x8B\x7A |0 \x8B\x7B |0 \x8B\x7C |0 \xE6\xC1 |0 \x8B\x7D |0 \x8B\x7E |0 \x8B\x80 |0 \x8B\x81 |0 \x8B\x82 |0 \x8B\x83 |0 \x8B\x84 |0 \xE6\xC7 |0 \xCF\xB1 |0 \x8B\x85 |0 \xEB\xF4 |0 \x8B\x86 |0 \x8B\x87 |0 \xE6\xCA |0 \x8B\x88 |0 \x8B\x89 |0 \x8B\x8A |0 \x8B\x8B |0 \x8B\x8C |0 \xE6\xC5 |0 \x8B\x8D |0 \x8B\x8E |0 \xBC\xDE |0 \xC9\xA9 |0 \x8B\x8F |0 \x8B\x90 |0 \x8B\x91 |0 \x8B\x92 |0 \x8B\x93 |0 \x8B\x94 |0 \xBC\xB5 |0 \x8B\x95 |0 \x8B\x96 |0 \xCF\xD3 |0 \x8B\x97 |0 \x8B\x98 |0 \x8B\x99 |0 \x8B\x9A |0 \x8B\x9B |0 \xE6\xC8 |0 \x8B\x9C |0 \xE6\xC9 |0 \x8B\x9D |0 \xE6\xCE |0 \x8B\x9E |0 \xE6\xD0 |0 \x8B\x9F |0 \x8B\xA0 |0 \x8B\xA1 |0 \xE6\xD1 |0 \x8B\xA2 |0 \x8B\xA3 |0 \x8B\xA4 |0 \xE6\xCB |0 \xB5\xD5 |0 \x8B\xA5 |0 \xE6\xCC |0 \x8B\xA6 |0 \x8B\xA7 |0 \xE6\xCF |0 \x8B\xA8 |0 \x8B\xA9 |0 \xC4\xDB |0 \x8B\xAA |0 \xE6\xC6 |0 \x8B\xAB |0 \x8B\xAC |0 \x8B\xAD |0 \x8B\xAE |0 \x8B\xAF |0 \xE6\xCD |0 \x8B\xB0 |0 \x8B\xB1 |0 \x8B\xB2 |0 \x8B\xB3 |0 \x8B\xB4 |0 \x8B\xB5 |0 \x8B\xB6 |0 \x8B\xB7 |0 \x8B\xB8 |0 \x8B\xB9 |0 \x8B\xBA |0 \x8B\xBB |0 \x8B\xBC |0 \x8B\xBD |0 \x8B\xBE |0 \x8B\xBF |0 \x8B\xC0 |0 \x8B\xC1 |0 \x8B\xC2 |0 \x8B\xC3 |0 \x8B\xC4 |0 \x8B\xC5 |0 \x8B\xC6 |0 \xE6\xD2 |0 \x8B\xC7 |0 \x8B\xC8 |0 \x8B\xC9 |0 \x8B\xCA |0 \x8B\xCB |0 \x8B\xCC |0 \x8B\xCD |0 \x8B\xCE |0 \x8B\xCF |0 \x8B\xD0 |0 \x8B\xD1 |0 \x8B\xD2 |0 \xE6\xD4 |0 \xE6\xD3 |0 \x8B\xD3 |0 \x8B\xD4 |0 \x8B\xD5 |0 \x8B\xD6 |0 \x8B\xD7 |0 \x8B\xD8 |0 \x8B\xD9 |0 \x8B\xDA |0 \x8B\xDB |0 \x8B\xDC |0 \x8B\xDD |0 \x8B\xDE |0 \x8B\xDF |0 \x8B\xE0 |0 \x8B\xE1 |0 \x8B\xE2 |0 \x8B\xE3 |0 \x8B\xE4 |0 \x8B\xE5 |0 \x8B\xE6 |0 \x8B\xE7 |0 \x8B\xE8 |0 \x8B\xE9 |0 \x8B\xEA |0 \x8B\xEB |0 \x8B\xEC |0 \xE6\xD5 |0 \x8B\xED |0 \xD9\xF8 |0 \x8B\xEE |0 \x8B\xEF |0 \xE6\xD6 |0 \x8B\xF0 |0 \x8B\xF1 |0 \x8B\xF2 |0 \x8B\xF3 |0 \x8B\xF4 |0 \x8B\xF5 |0 \x8B\xF6 |0 \x8B\xF7 |0 \xE6\xD7 |0 \x8B\xF8 |0 \x8B\xF9 |0 \x8B\xFA |0 \x8B\xFB |0 \x8B\xFC |0 \x8B\xFD |0 \x8B\xFE |0 \x8C\x40 |0 \x8C\x41 |0 \x8C\x42 |0 \x8C\x43 |0 \x8C\x44 |0 \x8C\x45 |0 \x8C\x46 |0 \x8C\x47 |0 \xD7\xD3 |0 \xE6\xDD |0 \x8C\x48 |0 \xE6\xDE |0 \xBF\xD7 |0 \xD4\xD0 |0 \x8C\x49 |0 \xD7\xD6 |0 \xB4\xE6 |0 \xCB\xEF |0 \xE6\xDA |0 \xD8\xC3 |0 \xD7\xCE |0 \xD0\xA2 |0 \x8C\x4A |0 \xC3\xCF |0 \x8C\x4B |0 \x8C\x4C |0 \xE6\xDF |0 \xBC\xBE |0 \xB9\xC2 |0 \xE6\xDB |0 \xD1\xA7 |0 \x8C\x4D |0 \x8C\x4E |0 \xBA\xA2 |0 \xC2\xCF |0 \x8C\x4F |0 \xD8\xAB |0 \x8C\x50 |0 \x8C\x51 |0 \x8C\x52 |0 \xCA\xEB |0 \xE5\xEE |0 \x8C\x53 |0 \xE6\xDC |0 \x8C\x54 |0 \xB7\xF5 |0 \x8C\x55 |0 \x8C\x56 |0 \x8C\x57 |0 \x8C\x58 |0 \xC8\xE6 |0 \x8C\x59 |0 \x8C\x5A |0 \xC4\xF5 |0 \x8C\x5B |0 \x8C\x5C |0 \xE5\xB2 |0 \xC4\xFE |0 \x8C\x5D |0 \xCB\xFC |0 \xE5\xB3 |0 \xD5\xAC |0 \x8C\x5E |0 \xD3\xEE |0 \xCA\xD8 |0 \xB0\xB2 |0 \x8C\x5F |0 \xCB\xCE |0 \xCD\xEA |0 \x8C\x60 |0 \x8C\x61 |0 \xBA\xEA |0 \x8C\x62 |0 \x8C\x63 |0 \x8C\x64 |0 \xE5\xB5 |0 \x8C\x65 |0 \xE5\xB4 |0 \x8C\x66 |0 \xD7\xDA |0 \xB9\xD9 |0 \xD6\xE6 |0 \xB6\xA8 |0 \xCD\xF0 |0 \xD2\xCB |0 \xB1\xA6 |0 \xCA\xB5 |0 \x8C\x67 |0 \xB3\xE8 |0 \xC9\xF3 |0 \xBF\xCD |0 \xD0\xFB |0 \xCA\xD2 |0 \xE5\xB6 |0 \xBB\xC2 |0 \x8C\x68 |0 \x8C\x69 |0 \x8C\x6A |0 \xCF\xDC |0 \xB9\xAC |0 \x8C\x6B |0 \x8C\x6C |0 \x8C\x6D |0 \x8C\x6E |0 \xD4\xD7 |0 \x8C\x6F |0 \x8C\x70 |0 \xBA\xA6 |0 \xD1\xE7 |0 \xCF\xFC |0 \xBC\xD2 |0 \x8C\x71 |0 \xE5\xB7 |0 \xC8\xDD |0 \x8C\x72 |0 \x8C\x73 |0 \x8C\x74 |0 \xBF\xED |0 \xB1\xF6 |0 \xCB\xDE |0 \x8C\x75 |0 \x8C\x76 |0 \xBC\xC5 |0 \x8C\x77 |0 \xBC\xC4 |0 \xD2\xFA |0 \xC3\xDC |0 \xBF\xDC |0 \x8C\x78 |0 \x8C\x79 |0 \x8C\x7A |0 \x8C\x7B |0 \xB8\xBB |0 \x8C\x7C |0 \x8C\x7D |0 \x8C\x7E |0 \xC3\xC2 |0 \x8C\x80 |0 \xBA\xAE |0 \xD4\xA2 |0 \x8C\x81 |0 \x8C\x82 |0 \x8C\x83 |0 \x8C\x84 |0 \x8C\x85 |0 \x8C\x86 |0 \x8C\x87 |0 \x8C\x88 |0 \x8C\x89 |0 \xC7\xDE |0 \xC4\xAF |0 \xB2\xEC |0 \x8C\x8A |0 \xB9\xD1 |0 \x8C\x8B |0 \x8C\x8C |0 \xE5\xBB |0 \xC1\xC8 |0 \x8C\x8D |0 \x8C\x8E |0 \xD5\xAF |0 \x8C\x8F |0 \x8C\x90 |0 \x8C\x91 |0 \x8C\x92 |0 \x8C\x93 |0 \xE5\xBC |0 \x8C\x94 |0 \xE5\xBE |0 \x8C\x95 |0 \x8C\x96 |0 \x8C\x97 |0 \x8C\x98 |0 \x8C\x99 |0 \x8C\x9A |0 \x8C\x9B |0 \xB4\xE7 |0 \xB6\xD4 |0 \xCB\xC2 |0 \xD1\xB0 |0 \xB5\xBC |0 \x8C\x9C |0 \x8C\x9D |0 \xCA\xD9 |0 \x8C\x9E |0 \xB7\xE2 |0 \x8C\x9F |0 \x8C\xA0 |0 \xC9\xE4 |0 \x8C\xA1 |0 \xBD\xAB |0 \x8C\xA2 |0 \x8C\xA3 |0 \xCE\xBE |0 \xD7\xF0 |0 \x8C\xA4 |0 \x8C\xA5 |0 \x8C\xA6 |0 \x8C\xA7 |0 \xD0\xA1 |0 \x8C\xA8 |0 \xC9\xD9 |0 \x8C\xA9 |0 \x8C\xAA |0 \xB6\xFB |0 \xE6\xD8 |0 \xBC\xE2 |0 \x8C\xAB |0 \xB3\xBE |0 \x8C\xAC |0 \xC9\xD0 |0 \x8C\xAD |0 \xE6\xD9 |0 \xB3\xA2 |0 \x8C\xAE |0 \x8C\xAF |0 \x8C\xB0 |0 \x8C\xB1 |0 \xDE\xCC |0 \x8C\xB2 |0 \xD3\xC8 |0 \xDE\xCD |0 \x8C\xB3 |0 \xD2\xA2 |0 \x8C\xB4 |0 \x8C\xB5 |0 \x8C\xB6 |0 \x8C\xB7 |0 \xDE\xCE |0 \x8C\xB8 |0 \x8C\xB9 |0 \x8C\xBA |0 \x8C\xBB |0 \xBE\xCD |0 \x8C\xBC |0 \x8C\xBD |0 \xDE\xCF |0 \x8C\xBE |0 \x8C\xBF |0 \x8C\xC0 |0 \xCA\xAC |0 \xD2\xFC |0 \xB3\xDF |0 \xE5\xEA |0 \xC4\xE1 |0 \xBE\xA1 |0 \xCE\xB2 |0 \xC4\xF2 |0 \xBE\xD6 |0 \xC6\xA8 |0 \xB2\xE3 |0 \x8C\xC1 |0 \x8C\xC2 |0 \xBE\xD3 |0 \x8C\xC3 |0 \x8C\xC4 |0 \xC7\xFC |0 \xCC\xEB |0 \xBD\xEC |0 \xCE\xDD |0 \x8C\xC5 |0 \x8C\xC6 |0 \xCA\xBA |0 \xC6\xC1 |0 \xE5\xEC |0 \xD0\xBC |0 \x8C\xC7 |0 \x8C\xC8 |0 \x8C\xC9 |0 \xD5\xB9 |0 \x8C\xCA |0 \x8C\xCB |0 \x8C\xCC |0 \xE5\xED |0 \x8C\xCD |0 \x8C\xCE |0 \x8C\xCF |0 \x8C\xD0 |0 \xCA\xF4 |0 \x8C\xD1 |0 \xCD\xC0 |0 \xC2\xC5 |0 \x8C\xD2 |0 \xE5\xEF |0 \x8C\xD3 |0 \xC2\xC4 |0 \xE5\xF0 |0 \x8C\xD4 |0 \x8C\xD5 |0 \x8C\xD6 |0 \x8C\xD7 |0 \x8C\xD8 |0 \x8C\xD9 |0 \x8C\xDA |0 \xE5\xF8 |0 \xCD\xCD |0 \x8C\xDB |0 \xC9\xBD |0 \x8C\xDC |0 \x8C\xDD |0 \x8C\xDE |0 \x8C\xDF |0 \x8C\xE0 |0 \x8C\xE1 |0 \x8C\xE2 |0 \xD2\xD9 |0 \xE1\xA8 |0 \x8C\xE3 |0 \x8C\xE4 |0 \x8C\xE5 |0 \x8C\xE6 |0 \xD3\xEC |0 \x8C\xE7 |0 \xCB\xEA |0 \xC6\xF1 |0 \x8C\xE8 |0 \x8C\xE9 |0 \x8C\xEA |0 \x8C\xEB |0 \x8C\xEC |0 \xE1\xAC |0 \x8C\xED |0 \x8C\xEE |0 \x8C\xEF |0 \xE1\xA7 |0 \xE1\xA9 |0 \x8C\xF0 |0 \x8C\xF1 |0 \xE1\xAA |0 \xE1\xAF |0 \x8C\xF2 |0 \x8C\xF3 |0 \xB2\xED |0 \x8C\xF4 |0 \xE1\xAB |0 \xB8\xDA |0 \xE1\xAD |0 \xE1\xAE |0 \xE1\xB0 |0 \xB5\xBA |0 \xE1\xB1 |0 \x8C\xF5 |0 \x8C\xF6 |0 \x8C\xF7 |0 \x8C\xF8 |0 \x8C\xF9 |0 \xE1\xB3 |0 \xE1\xB8 |0 \x8C\xFA |0 \x8C\xFB |0 \x8C\xFC |0 \x8C\xFD |0 \x8C\xFE |0 \xD1\xD2 |0 \x8D\x40 |0 \xE1\xB6 |0 \xE1\xB5 |0 \xC1\xEB |0 \x8D\x41 |0 \x8D\x42 |0 \x8D\x43 |0 \xE1\xB7 |0 \x8D\x44 |0 \xD4\xC0 |0 \x8D\x45 |0 \xE1\xB2 |0 \x8D\x46 |0 \xE1\xBA |0 \xB0\xB6 |0 \x8D\x47 |0 \x8D\x48 |0 \x8D\x49 |0 \x8D\x4A |0 \xE1\xB4 |0 \x8D\x4B |0 \xBF\xF9 |0 \x8D\x4C |0 \xE1\xB9 |0 \x8D\x4D |0 \x8D\x4E |0 \xE1\xBB |0 \x8D\x4F |0 \x8D\x50 |0 \x8D\x51 |0 \x8D\x52 |0 \x8D\x53 |0 \x8D\x54 |0 \xE1\xBE |0 \x8D\x55 |0 \x8D\x56 |0 \x8D\x57 |0 \x8D\x58 |0 \x8D\x59 |0 \x8D\x5A |0 \xE1\xBC |0 \x8D\x5B |0 \x8D\x5C |0 \x8D\x5D |0 \x8D\x5E |0 \x8D\x5F |0 \x8D\x60 |0 \xD6\xC5 |0 \x8D\x61 |0 \x8D\x62 |0 \x8D\x63 |0 \x8D\x64 |0 \x8D\x65 |0 \x8D\x66 |0 \x8D\x67 |0 \xCF\xBF |0 \x8D\x68 |0 \x8D\x69 |0 \xE1\xBD |0 \xE1\xBF |0 \xC2\xCD |0 \x8D\x6A |0 \xB6\xEB |0 \x8D\x6B |0 \xD3\xF8 |0 \x8D\x6C |0 \x8D\x6D |0 \xC7\xCD |0 \x8D\x6E |0 \x8D\x6F |0 \xB7\xE5 |0 \x8D\x70 |0 \x8D\x71 |0 \x8D\x72 |0 \x8D\x73 |0 \x8D\x74 |0 \x8D\x75 |0 \x8D\x76 |0 \x8D\x77 |0 \x8D\x78 |0 \x8D\x79 |0 \xBE\xFE |0 \x8D\x7A |0 \x8D\x7B |0 \x8D\x7C |0 \x8D\x7D |0 \x8D\x7E |0 \x8D\x80 |0 \xE1\xC0 |0 \xE1\xC1 |0 \x8D\x81 |0 \x8D\x82 |0 \xE1\xC7 |0 \xB3\xE7 |0 \x8D\x83 |0 \x8D\x84 |0 \x8D\x85 |0 \x8D\x86 |0 \x8D\x87 |0 \x8D\x88 |0 \xC6\xE9 |0 \x8D\x89 |0 \x8D\x8A |0 \x8D\x8B |0 \x8D\x8C |0 \x8D\x8D |0 \xB4\xDE |0 \x8D\x8E |0 \xD1\xC2 |0 \x8D\x8F |0 \x8D\x90 |0 \x8D\x91 |0 \x8D\x92 |0 \xE1\xC8 |0 \x8D\x93 |0 \x8D\x94 |0 \xE1\xC6 |0 \x8D\x95 |0 \x8D\x96 |0 \x8D\x97 |0 \x8D\x98 |0 \x8D\x99 |0 \xE1\xC5 |0 \x8D\x9A |0 \xE1\xC3 |0 \xE1\xC2 |0 \x8D\x9B |0 \xB1\xC0 |0 \x8D\x9C |0 \x8D\x9D |0 \x8D\x9E |0 \xD5\xB8 |0 \xE1\xC4 |0 \x8D\x9F |0 \x8D\xA0 |0 \x8D\xA1 |0 \x8D\xA2 |0 \x8D\xA3 |0 \xE1\xCB |0 \x8D\xA4 |0 \x8D\xA5 |0 \x8D\xA6 |0 \x8D\xA7 |0 \x8D\xA8 |0 \x8D\xA9 |0 \x8D\xAA |0 \x8D\xAB |0 \xE1\xCC |0 \xE1\xCA |0 \x8D\xAC |0 \x8D\xAD |0 \x8D\xAE |0 \x8D\xAF |0 \x8D\xB0 |0 \x8D\xB1 |0 \x8D\xB2 |0 \x8D\xB3 |0 \xEF\xFA |0 \x8D\xB4 |0 \x8D\xB5 |0 \xE1\xD3 |0 \xE1\xD2 |0 \xC7\xB6 |0 \x8D\xB6 |0 \x8D\xB7 |0 \x8D\xB8 |0 \x8D\xB9 |0 \x8D\xBA |0 \x8D\xBB |0 \x8D\xBC |0 \x8D\xBD |0 \x8D\xBE |0 \x8D\xBF |0 \x8D\xC0 |0 \xE1\xC9 |0 \x8D\xC1 |0 \x8D\xC2 |0 \xE1\xCE |0 \x8D\xC3 |0 \xE1\xD0 |0 \x8D\xC4 |0 \x8D\xC5 |0 \x8D\xC6 |0 \x8D\xC7 |0 \x8D\xC8 |0 \x8D\xC9 |0 \x8D\xCA |0 \x8D\xCB |0 \x8D\xCC |0 \x8D\xCD |0 \x8D\xCE |0 \xE1\xD4 |0 \x8D\xCF |0 \xE1\xD1 |0 \xE1\xCD |0 \x8D\xD0 |0 \x8D\xD1 |0 \xE1\xCF |0 \x8D\xD2 |0 \x8D\xD3 |0 \x8D\xD4 |0 \x8D\xD5 |0 \xE1\xD5 |0 \x8D\xD6 |0 \x8D\xD7 |0 \x8D\xD8 |0 \x8D\xD9 |0 \x8D\xDA |0 \x8D\xDB |0 \x8D\xDC |0 \x8D\xDD |0 \x8D\xDE |0 \x8D\xDF |0 \x8D\xE0 |0 \x8D\xE1 |0 \x8D\xE2 |0 \xE1\xD6 |0 \x8D\xE3 |0 \x8D\xE4 |0 \x8D\xE5 |0 \x8D\xE6 |0 \x8D\xE7 |0 \x8D\xE8 |0 \x8D\xE9 |0 \x8D\xEA |0 \x8D\xEB |0 \x8D\xEC |0 \x8D\xED |0 \x8D\xEE |0 \x8D\xEF |0 \x8D\xF0 |0 \x8D\xF1 |0 \x8D\xF2 |0 \x8D\xF3 |0 \x8D\xF4 |0 \x8D\xF5 |0 \x8D\xF6 |0 \x8D\xF7 |0 \x8D\xF8 |0 \xE1\xD7 |0 \x8D\xF9 |0 \x8D\xFA |0 \x8D\xFB |0 \xE1\xD8 |0 \x8D\xFC |0 \x8D\xFD |0 \x8D\xFE |0 \x8E\x40 |0 \x8E\x41 |0 \x8E\x42 |0 \x8E\x43 |0 \x8E\x44 |0 \x8E\x45 |0 \x8E\x46 |0 \x8E\x47 |0 \x8E\x48 |0 \x8E\x49 |0 \x8E\x4A |0 \x8E\x4B |0 \x8E\x4C |0 \x8E\x4D |0 \x8E\x4E |0 \x8E\x4F |0 \x8E\x50 |0 \x8E\x51 |0 \x8E\x52 |0 \x8E\x53 |0 \x8E\x54 |0 \x8E\x55 |0 \xE1\xDA |0 \x8E\x56 |0 \x8E\x57 |0 \x8E\x58 |0 \x8E\x59 |0 \x8E\x5A |0 \x8E\x5B |0 \x8E\x5C |0 \x8E\x5D |0 \x8E\x5E |0 \x8E\x5F |0 \x8E\x60 |0 \x8E\x61 |0 \x8E\x62 |0 \xE1\xDB |0 \x8E\x63 |0 \x8E\x64 |0 \x8E\x65 |0 \x8E\x66 |0 \x8E\x67 |0 \x8E\x68 |0 \x8E\x69 |0 \xCE\xA1 |0 \x8E\x6A |0 \x8E\x6B |0 \x8E\x6C |0 \x8E\x6D |0 \x8E\x6E |0 \x8E\x6F |0 \x8E\x70 |0 \x8E\x71 |0 \x8E\x72 |0 \x8E\x73 |0 \x8E\x74 |0 \x8E\x75 |0 \x8E\x76 |0 \xE7\xDD |0 \x8E\x77 |0 \xB4\xA8 |0 \xD6\xDD |0 \x8E\x78 |0 \x8E\x79 |0 \xD1\xB2 |0 \xB3\xB2 |0 \x8E\x7A |0 \x8E\x7B |0 \xB9\xA4 |0 \xD7\xF3 |0 \xC7\xC9 |0 \xBE\xDE |0 \xB9\xAE |0 \x8E\x7C |0 \xCE\xD7 |0 \x8E\x7D |0 \x8E\x7E |0 \xB2\xEE |0 \xDB\xCF |0 \x8E\x80 |0 \xBC\xBA |0 \xD2\xD1 |0 \xCB\xC8 |0 \xB0\xCD |0 \x8E\x81 |0 \x8E\x82 |0 \xCF\xEF |0 \x8E\x83 |0 \x8E\x84 |0 \x8E\x85 |0 \x8E\x86 |0 \x8E\x87 |0 \xD9\xE3 |0 \xBD\xED |0 \x8E\x88 |0 \x8E\x89 |0 \xB1\xD2 |0 \xCA\xD0 |0 \xB2\xBC |0 \x8E\x8A |0 \xCB\xA7 |0 \xB7\xAB |0 \x8E\x8B |0 \xCA\xA6 |0 \x8E\x8C |0 \x8E\x8D |0 \x8E\x8E |0 \xCF\xA3 |0 \x8E\x8F |0 \x8E\x90 |0 \xE0\xF8 |0 \xD5\xCA |0 \xE0\xFB |0 \x8E\x91 |0 \x8E\x92 |0 \xE0\xFA |0 \xC5\xC1 |0 \xCC\xFB |0 \x8E\x93 |0 \xC1\xB1 |0 \xE0\xF9 |0 \xD6\xE3 |0 \xB2\xAF |0 \xD6\xC4 |0 \xB5\xDB |0 \x8E\x94 |0 \x8E\x95 |0 \x8E\x96 |0 \x8E\x97 |0 \x8E\x98 |0 \x8E\x99 |0 \x8E\x9A |0 \x8E\x9B |0 \xB4\xF8 |0 \xD6\xA1 |0 \x8E\x9C |0 \x8E\x9D |0 \x8E\x9E |0 \x8E\x9F |0 \x8E\xA0 |0 \xCF\xAF |0 \xB0\xEF |0 \x8E\xA1 |0 \x8E\xA2 |0 \xE0\xFC |0 \x8E\xA3 |0 \x8E\xA4 |0 \x8E\xA5 |0 \x8E\xA6 |0 \x8E\xA7 |0 \xE1\xA1 |0 \xB3\xA3 |0 \x8E\xA8 |0 \x8E\xA9 |0 \xE0\xFD |0 \xE0\xFE |0 \xC3\xB1 |0 \x8E\xAA |0 \x8E\xAB |0 \x8E\xAC |0 \x8E\xAD |0 \xC3\xDD |0 \x8E\xAE |0 \xE1\xA2 |0 \xB7\xF9 |0 \x8E\xAF |0 \x8E\xB0 |0 \x8E\xB1 |0 \x8E\xB2 |0 \x8E\xB3 |0 \x8E\xB4 |0 \xBB\xCF |0 \x8E\xB5 |0 \x8E\xB6 |0 \x8E\xB7 |0 \x8E\xB8 |0 \x8E\xB9 |0 \x8E\xBA |0 \x8E\xBB |0 \xE1\xA3 |0 \xC4\xBB |0 \x8E\xBC |0 \x8E\xBD |0 \x8E\xBE |0 \x8E\xBF |0 \x8E\xC0 |0 \xE1\xA4 |0 \x8E\xC1 |0 \x8E\xC2 |0 \xE1\xA5 |0 \x8E\xC3 |0 \x8E\xC4 |0 \xE1\xA6 |0 \xB4\xB1 |0 \x8E\xC5 |0 \x8E\xC6 |0 \x8E\xC7 |0 \x8E\xC8 |0 \x8E\xC9 |0 \x8E\xCA |0 \x8E\xCB |0 \x8E\xCC |0 \x8E\xCD |0 \x8E\xCE |0 \x8E\xCF |0 \x8E\xD0 |0 \x8E\xD1 |0 \x8E\xD2 |0 \x8E\xD3 |0 \xB8\xC9 |0 \xC6\xBD |0 \xC4\xEA |0 \x8E\xD4 |0 \xB2\xA2 |0 \x8E\xD5 |0 \xD0\xD2 |0 \x8E\xD6 |0 \xE7\xDB |0 \xBB\xC3 |0 \xD3\xD7 |0 \xD3\xC4 |0 \x8E\xD7 |0 \xB9\xE3 |0 \xE2\xCF |0 \x8E\xD8 |0 \x8E\xD9 |0 \x8E\xDA |0 \xD7\xAF |0 \x8E\xDB |0 \xC7\xEC |0 \xB1\xD3 |0 \x8E\xDC |0 \x8E\xDD |0 \xB4\xB2 |0 \xE2\xD1 |0 \x8E\xDE |0 \x8E\xDF |0 \x8E\xE0 |0 \xD0\xF2 |0 \xC2\xAE |0 \xE2\xD0 |0 \x8E\xE1 |0 \xBF\xE2 |0 \xD3\xA6 |0 \xB5\xD7 |0 \xE2\xD2 |0 \xB5\xEA |0 \x8E\xE2 |0 \xC3\xED |0 \xB8\xFD |0 \x8E\xE3 |0 \xB8\xAE |0 \x8E\xE4 |0 \xC5\xD3 |0 \xB7\xCF |0 \xE2\xD4 |0 \x8E\xE5 |0 \x8E\xE6 |0 \x8E\xE7 |0 \x8E\xE8 |0 \xE2\xD3 |0 \xB6\xC8 |0 \xD7\xF9 |0 \x8E\xE9 |0 \x8E\xEA |0 \x8E\xEB |0 \x8E\xEC |0 \x8E\xED |0 \xCD\xA5 |0 \x8E\xEE |0 \x8E\xEF |0 \x8E\xF0 |0 \x8E\xF1 |0 \x8E\xF2 |0 \xE2\xD8 |0 \x8E\xF3 |0 \xE2\xD6 |0 \xCA\xFC |0 \xBF\xB5 |0 \xD3\xB9 |0 \xE2\xD5 |0 \x8E\xF4 |0 \x8E\xF5 |0 \x8E\xF6 |0 \x8E\xF7 |0 \xE2\xD7 |0 \x8E\xF8 |0 \x8E\xF9 |0 \x8E\xFA |0 \x8E\xFB |0 \x8E\xFC |0 \x8E\xFD |0 \x8E\xFE |0 \x8F\x40 |0 \x8F\x41 |0 \x8F\x42 |0 \xC1\xAE |0 \xC0\xC8 |0 \x8F\x43 |0 \x8F\x44 |0 \x8F\x45 |0 \x8F\x46 |0 \x8F\x47 |0 \x8F\x48 |0 \xE2\xDB |0 \xE2\xDA |0 \xC0\xAA |0 \x8F\x49 |0 \x8F\x4A |0 \xC1\xCE |0 \x8F\x4B |0 \x8F\x4C |0 \x8F\x4D |0 \x8F\x4E |0 \xE2\xDC |0 \x8F\x4F |0 \x8F\x50 |0 \x8F\x51 |0 \x8F\x52 |0 \x8F\x53 |0 \x8F\x54 |0 \x8F\x55 |0 \x8F\x56 |0 \x8F\x57 |0 \x8F\x58 |0 \x8F\x59 |0 \x8F\x5A |0 \xE2\xDD |0 \x8F\x5B |0 \xE2\xDE |0 \x8F\x5C |0 \x8F\x5D |0 \x8F\x5E |0 \x8F\x5F |0 \x8F\x60 |0 \x8F\x61 |0 \x8F\x62 |0 \x8F\x63 |0 \x8F\x64 |0 \xDB\xC8 |0 \x8F\x65 |0 \xD1\xD3 |0 \xCD\xA2 |0 \x8F\x66 |0 \x8F\x67 |0 \xBD\xA8 |0 \x8F\x68 |0 \x8F\x69 |0 \x8F\x6A |0 \xDE\xC3 |0 \xD8\xA5 |0 \xBF\xAA |0 \xDB\xCD |0 \xD2\xEC |0 \xC6\xFA |0 \xC5\xAA |0 \x8F\x6B |0 \x8F\x6C |0 \x8F\x6D |0 \xDE\xC4 |0 \x8F\x6E |0 \xB1\xD7 |0 \xDF\xAE |0 \x8F\x6F |0 \x8F\x70 |0 \x8F\x71 |0 \xCA\xBD |0 \x8F\x72 |0 \xDF\xB1 |0 \x8F\x73 |0 \xB9\xAD |0 \x8F\x74 |0 \xD2\xFD |0 \x8F\x75 |0 \xB8\xA5 |0 \xBA\xEB |0 \x8F\x76 |0 \x8F\x77 |0 \xB3\xDA |0 \x8F\x78 |0 \x8F\x79 |0 \x8F\x7A |0 \xB5\xDC |0 \xD5\xC5 |0 \x8F\x7B |0 \x8F\x7C |0 \x8F\x7D |0 \x8F\x7E |0 \xC3\xD6 |0 \xCF\xD2 |0 \xBB\xA1 |0 \x8F\x80 |0 \xE5\xF3 |0 \xE5\xF2 |0 \x8F\x81 |0 \x8F\x82 |0 \xE5\xF4 |0 \x8F\x83 |0 \xCD\xE4 |0 \x8F\x84 |0 \xC8\xF5 |0 \x8F\x85 |0 \x8F\x86 |0 \x8F\x87 |0 \x8F\x88 |0 \x8F\x89 |0 \x8F\x8A |0 \x8F\x8B |0 \xB5\xAF |0 \xC7\xBF |0 \x8F\x8C |0 \xE5\xF6 |0 \x8F\x8D |0 \x8F\x8E |0 \x8F\x8F |0 \xEC\xB0 |0 \x8F\x90 |0 \x8F\x91 |0 \x8F\x92 |0 \x8F\x93 |0 \x8F\x94 |0 \x8F\x95 |0 \x8F\x96 |0 \x8F\x97 |0 \x8F\x98 |0 \x8F\x99 |0 \x8F\x9A |0 \x8F\x9B |0 \x8F\x9C |0 \x8F\x9D |0 \x8F\x9E |0 \xE5\xE6 |0 \x8F\x9F |0 \xB9\xE9 |0 \xB5\xB1 |0 \x8F\xA0 |0 \xC2\xBC |0 \xE5\xE8 |0 \xE5\xE7 |0 \xE5\xE9 |0 \x8F\xA1 |0 \x8F\xA2 |0 \x8F\xA3 |0 \x8F\xA4 |0 \xD2\xCD |0 \x8F\xA5 |0 \x8F\xA6 |0 \x8F\xA7 |0 \xE1\xEA |0 \xD0\xCE |0 \x8F\xA8 |0 \xCD\xAE |0 \x8F\xA9 |0 \xD1\xE5 |0 \x8F\xAA |0 \x8F\xAB |0 \xB2\xCA |0 \xB1\xEB |0 \x8F\xAC |0 \xB1\xF2 |0 \xC5\xED |0 \x8F\xAD |0 \x8F\xAE |0 \xD5\xC3 |0 \xD3\xB0 |0 \x8F\xAF |0 \xE1\xDC |0 \x8F\xB0 |0 \x8F\xB1 |0 \x8F\xB2 |0 \xE1\xDD |0 \x8F\xB3 |0 \xD2\xDB |0 \x8F\xB4 |0 \xB3\xB9 |0 \xB1\xCB |0 \x8F\xB5 |0 \x8F\xB6 |0 \x8F\xB7 |0 \xCD\xF9 |0 \xD5\xF7 |0 \xE1\xDE |0 \x8F\xB8 |0 \xBE\xB6 |0 \xB4\xFD |0 \x8F\xB9 |0 \xE1\xDF |0 \xBA\xDC |0 \xE1\xE0 |0 \xBB\xB2 |0 \xC2\xC9 |0 \xE1\xE1 |0 \x8F\xBA |0 \x8F\xBB |0 \x8F\xBC |0 \xD0\xEC |0 \x8F\xBD |0 \xCD\xBD |0 \x8F\xBE |0 \x8F\xBF |0 \xE1\xE2 |0 \x8F\xC0 |0 \xB5\xC3 |0 \xC5\xC7 |0 \xE1\xE3 |0 \x8F\xC1 |0 \x8F\xC2 |0 \xE1\xE4 |0 \x8F\xC3 |0 \x8F\xC4 |0 \x8F\xC5 |0 \x8F\xC6 |0 \xD3\xF9 |0 \x8F\xC7 |0 \x8F\xC8 |0 \x8F\xC9 |0 \x8F\xCA |0 \x8F\xCB |0 \x8F\xCC |0 \xE1\xE5 |0 \x8F\xCD |0 \xD1\xAD |0 \x8F\xCE |0 \x8F\xCF |0 \xE1\xE6 |0 \xCE\xA2 |0 \x8F\xD0 |0 \x8F\xD1 |0 \x8F\xD2 |0 \x8F\xD3 |0 \x8F\xD4 |0 \x8F\xD5 |0 \xE1\xE7 |0 \x8F\xD6 |0 \xB5\xC2 |0 \x8F\xD7 |0 \x8F\xD8 |0 \x8F\xD9 |0 \x8F\xDA |0 \xE1\xE8 |0 \xBB\xD5 |0 \x8F\xDB |0 \x8F\xDC |0 \x8F\xDD |0 \x8F\xDE |0 \x8F\xDF |0 \xD0\xC4 |0 \xE2\xE0 |0 \xB1\xD8 |0 \xD2\xE4 |0 \x8F\xE0 |0 \x8F\xE1 |0 \xE2\xE1 |0 \x8F\xE2 |0 \x8F\xE3 |0 \xBC\xC9 |0 \xC8\xCC |0 \x8F\xE4 |0 \xE2\xE3 |0 \xEC\xFE |0 \xEC\xFD |0 \xDF\xAF |0 \x8F\xE5 |0 \x8F\xE6 |0 \x8F\xE7 |0 \xE2\xE2 |0 \xD6\xBE |0 \xCD\xFC |0 \xC3\xA6 |0 \x8F\xE8 |0 \x8F\xE9 |0 \x8F\xEA |0 \xE3\xC3 |0 \x8F\xEB |0 \x8F\xEC |0 \xD6\xD2 |0 \xE2\xE7 |0 \x8F\xED |0 \x8F\xEE |0 \xE2\xE8 |0 \x8F\xEF |0 \x8F\xF0 |0 \xD3\xC7 |0 \x8F\xF1 |0 \x8F\xF2 |0 \xE2\xEC |0 \xBF\xEC |0 \x8F\xF3 |0 \xE2\xED |0 \xE2\xE5 |0 \x8F\xF4 |0 \x8F\xF5 |0 \xB3\xC0 |0 \x8F\xF6 |0 \x8F\xF7 |0 \x8F\xF8 |0 \xC4\xEE |0 \x8F\xF9 |0 \x8F\xFA |0 \xE2\xEE |0 \x8F\xFB |0 \x8F\xFC |0 \xD0\xC3 |0 \x8F\xFD |0 \xBA\xF6 |0 \xE2\xE9 |0 \xB7\xDE |0 \xBB\xB3 |0 \xCC\xAC |0 \xCB\xCB |0 \xE2\xE4 |0 \xE2\xE6 |0 \xE2\xEA |0 \xE2\xEB |0 \x8F\xFE |0 \x90\x40 |0 \x90\x41 |0 \xE2\xF7 |0 \x90\x42 |0 \x90\x43 |0 \xE2\xF4 |0 \xD4\xF5 |0 \xE2\xF3 |0 \x90\x44 |0 \x90\x45 |0 \xC5\xAD |0 \x90\x46 |0 \xD5\xFA |0 \xC5\xC2 |0 \xB2\xC0 |0 \x90\x47 |0 \x90\x48 |0 \xE2\xEF |0 \x90\x49 |0 \xE2\xF2 |0 \xC1\xAF |0 \xCB\xBC |0 \x90\x4A |0 \x90\x4B |0 \xB5\xA1 |0 \xE2\xF9 |0 \x90\x4C |0 \x90\x4D |0 \x90\x4E |0 \xBC\xB1 |0 \xE2\xF1 |0 \xD0\xD4 |0 \xD4\xB9 |0 \xE2\xF5 |0 \xB9\xD6 |0 \xE2\xF6 |0 \x90\x4F |0 \x90\x50 |0 \x90\x51 |0 \xC7\xD3 |0 \x90\x52 |0 \x90\x53 |0 \x90\x54 |0 \x90\x55 |0 \x90\x56 |0 \xE2\xF0 |0 \x90\x57 |0 \x90\x58 |0 \x90\x59 |0 \x90\x5A |0 \x90\x5B |0 \xD7\xDC |0 \xED\xA1 |0 \x90\x5C |0 \x90\x5D |0 \xE2\xF8 |0 \x90\x5E |0 \xED\xA5 |0 \xE2\xFE |0 \xCA\xD1 |0 \x90\x5F |0 \x90\x60 |0 \x90\x61 |0 \x90\x62 |0 \x90\x63 |0 \x90\x64 |0 \x90\x65 |0 \xC1\xB5 |0 \x90\x66 |0 \xBB\xD0 |0 \x90\x67 |0 \x90\x68 |0 \xBF\xD6 |0 \x90\x69 |0 \xBA\xE3 |0 \x90\x6A |0 \x90\x6B |0 \xCB\xA1 |0 \x90\x6C |0 \x90\x6D |0 \x90\x6E |0 \xED\xA6 |0 \xED\xA3 |0 \x90\x6F |0 \x90\x70 |0 \xED\xA2 |0 \x90\x71 |0 \x90\x72 |0 \x90\x73 |0 \x90\x74 |0 \xBB\xD6 |0 \xED\xA7 |0 \xD0\xF4 |0 \x90\x75 |0 \x90\x76 |0 \xED\xA4 |0 \xBA\xDE |0 \xB6\xF7 |0 \xE3\xA1 |0 \xB6\xB2 |0 \xCC\xF1 |0 \xB9\xA7 |0 \x90\x77 |0 \xCF\xA2 |0 \xC7\xA1 |0 \x90\x78 |0 \x90\x79 |0 \xBF\xD2 |0 \x90\x7A |0 \x90\x7B |0 \xB6\xF1 |0 \x90\x7C |0 \xE2\xFA |0 \xE2\xFB |0 \xE2\xFD |0 \xE2\xFC |0 \xC4\xD5 |0 \xE3\xA2 |0 \x90\x7D |0 \xD3\xC1 |0 \x90\x7E |0 \x90\x80 |0 \x90\x81 |0 \xE3\xA7 |0 \xC7\xC4 |0 \x90\x82 |0 \x90\x83 |0 \x90\x84 |0 \x90\x85 |0 \xCF\xA4 |0 \x90\x86 |0 \x90\x87 |0 \xE3\xA9 |0 \xBA\xB7 |0 \x90\x88 |0 \x90\x89 |0 \x90\x8A |0 \x90\x8B |0 \xE3\xA8 |0 \x90\x8C |0 \xBB\xDA |0 \x90\x8D |0 \xE3\xA3 |0 \x90\x8E |0 \x90\x8F |0 \x90\x90 |0 \xE3\xA4 |0 \xE3\xAA |0 \x90\x91 |0 \xE3\xA6 |0 \x90\x92 |0 \xCE\xF2 |0 \xD3\xC6 |0 \x90\x93 |0 \x90\x94 |0 \xBB\xBC |0 \x90\x95 |0 \x90\x96 |0 \xD4\xC3 |0 \x90\x97 |0 \xC4\xFA |0 \x90\x98 |0 \x90\x99 |0 \xED\xA8 |0 \xD0\xFC |0 \xE3\xA5 |0 \x90\x9A |0 \xC3\xF5 |0 \x90\x9B |0 \xE3\xAD |0 \xB1\xAF |0 \x90\x9C |0 \xE3\xB2 |0 \x90\x9D |0 \x90\x9E |0 \x90\x9F |0 \xBC\xC2 |0 \x90\xA0 |0 \x90\xA1 |0 \xE3\xAC |0 \xB5\xBF |0 \x90\xA2 |0 \x90\xA3 |0 \x90\xA4 |0 \x90\xA5 |0 \x90\xA6 |0 \x90\xA7 |0 \x90\xA8 |0 \x90\xA9 |0 \xC7\xE9 |0 \xE3\xB0 |0 \x90\xAA |0 \x90\xAB |0 \x90\xAC |0 \xBE\xAA |0 \xCD\xEF |0 \x90\xAD |0 \x90\xAE |0 \x90\xAF |0 \x90\xB0 |0 \x90\xB1 |0 \xBB\xF3 |0 \x90\xB2 |0 \x90\xB3 |0 \x90\xB4 |0 \xCC\xE8 |0 \x90\xB5 |0 \x90\xB6 |0 \xE3\xAF |0 \x90\xB7 |0 \xE3\xB1 |0 \x90\xB8 |0 \xCF\xA7 |0 \xE3\xAE |0 \x90\xB9 |0 \xCE\xA9 |0 \xBB\xDD |0 \x90\xBA |0 \x90\xBB |0 \x90\xBC |0 \x90\xBD |0 \x90\xBE |0 \xB5\xEB |0 \xBE\xE5 |0 \xB2\xD2 |0 \xB3\xCD |0 \x90\xBF |0 \xB1\xB9 |0 \xE3\xAB |0 \xB2\xD1 |0 \xB5\xAC |0 \xB9\xDF |0 \xB6\xE8 |0 \x90\xC0 |0 \x90\xC1 |0 \xCF\xEB |0 \xE3\xB7 |0 \x90\xC2 |0 \xBB\xCC |0 \x90\xC3 |0 \x90\xC4 |0 \xC8\xC7 |0 \xD0\xCA |0 \x90\xC5 |0 \x90\xC6 |0 \x90\xC7 |0 \x90\xC8 |0 \x90\xC9 |0 \xE3\xB8 |0 \xB3\xEE |0 \x90\xCA |0 \x90\xCB |0 \x90\xCC |0 \x90\xCD |0 \xED\xA9 |0 \x90\xCE |0 \xD3\xFA |0 \xD3\xE4 |0 \x90\xCF |0 \x90\xD0 |0 \x90\xD1 |0 \xED\xAA |0 \xE3\xB9 |0 \xD2\xE2 |0 \x90\xD2 |0 \x90\xD3 |0 \x90\xD4 |0 \x90\xD5 |0 \x90\xD6 |0 \xE3\xB5 |0 \x90\xD7 |0 \x90\xD8 |0 \x90\xD9 |0 \x90\xDA |0 \xD3\xDE |0 \x90\xDB |0 \x90\xDC |0 \x90\xDD |0 \x90\xDE |0 \xB8\xD0 |0 \xE3\xB3 |0 \x90\xDF |0 \x90\xE0 |0 \xE3\xB6 |0 \xB7\xDF |0 \x90\xE1 |0 \xE3\xB4 |0 \xC0\xA2 |0 \x90\xE2 |0 \x90\xE3 |0 \x90\xE4 |0 \xE3\xBA |0 \x90\xE5 |0 \x90\xE6 |0 \x90\xE7 |0 \x90\xE8 |0 \x90\xE9 |0 \x90\xEA |0 \x90\xEB |0 \x90\xEC |0 \x90\xED |0 \x90\xEE |0 \x90\xEF |0 \x90\xF0 |0 \x90\xF1 |0 \x90\xF2 |0 \x90\xF3 |0 \x90\xF4 |0 \x90\xF5 |0 \x90\xF6 |0 \x90\xF7 |0 \xD4\xB8 |0 \x90\xF8 |0 \x90\xF9 |0 \x90\xFA |0 \x90\xFB |0 \x90\xFC |0 \x90\xFD |0 \x90\xFE |0 \x91\x40 |0 \xB4\xC8 |0 \x91\x41 |0 \xE3\xBB |0 \x91\x42 |0 \xBB\xC5 |0 \x91\x43 |0 \xC9\xF7 |0 \x91\x44 |0 \x91\x45 |0 \xC9\xE5 |0 \x91\x46 |0 \x91\x47 |0 \x91\x48 |0 \xC4\xBD |0 \x91\x49 |0 \x91\x4A |0 \x91\x4B |0 \x91\x4C |0 \x91\x4D |0 \x91\x4E |0 \x91\x4F |0 \xED\xAB |0 \x91\x50 |0 \x91\x51 |0 \x91\x52 |0 \x91\x53 |0 \xC2\xFD |0 \x91\x54 |0 \x91\x55 |0 \x91\x56 |0 \x91\x57 |0 \xBB\xDB |0 \xBF\xAE |0 \x91\x58 |0 \x91\x59 |0 \x91\x5A |0 \x91\x5B |0 \x91\x5C |0 \x91\x5D |0 \x91\x5E |0 \xCE\xBF |0 \x91\x5F |0 \x91\x60 |0 \x91\x61 |0 \x91\x62 |0 \xE3\xBC |0 \x91\x63 |0 \xBF\xB6 |0 \x91\x64 |0 \x91\x65 |0 \x91\x66 |0 \x91\x67 |0 \x91\x68 |0 \x91\x69 |0 \x91\x6A |0 \x91\x6B |0 \x91\x6C |0 \x91\x6D |0 \x91\x6E |0 \x91\x6F |0 \x91\x70 |0 \x91\x71 |0 \x91\x72 |0 \x91\x73 |0 \x91\x74 |0 \x91\x75 |0 \x91\x76 |0 \xB1\xEF |0 \x91\x77 |0 \x91\x78 |0 \xD4\xF7 |0 \x91\x79 |0 \x91\x7A |0 \x91\x7B |0 \x91\x7C |0 \x91\x7D |0 \xE3\xBE |0 \x91\x7E |0 \x91\x80 |0 \x91\x81 |0 \x91\x82 |0 \x91\x83 |0 \x91\x84 |0 \x91\x85 |0 \x91\x86 |0 \xED\xAD |0 \x91\x87 |0 \x91\x88 |0 \x91\x89 |0 \x91\x8A |0 \x91\x8B |0 \x91\x8C |0 \x91\x8D |0 \x91\x8E |0 \x91\x8F |0 \xE3\xBF |0 \xBA\xA9 |0 \xED\xAC |0 \x91\x90 |0 \x91\x91 |0 \xE3\xBD |0 \x91\x92 |0 \x91\x93 |0 \x91\x94 |0 \x91\x95 |0 \x91\x96 |0 \x91\x97 |0 \x91\x98 |0 \x91\x99 |0 \x91\x9A |0 \x91\x9B |0 \xE3\xC0 |0 \x91\x9C |0 \x91\x9D |0 \x91\x9E |0 \x91\x9F |0 \x91\xA0 |0 \x91\xA1 |0 \xBA\xB6 |0 \x91\xA2 |0 \x91\xA3 |0 \x91\xA4 |0 \xB6\xAE |0 \x91\xA5 |0 \x91\xA6 |0 \x91\xA7 |0 \x91\xA8 |0 \x91\xA9 |0 \xD0\xB8 |0 \x91\xAA |0 \xB0\xC3 |0 \xED\xAE |0 \x91\xAB |0 \x91\xAC |0 \x91\xAD |0 \x91\xAE |0 \x91\xAF |0 \xED\xAF |0 \xC0\xC1 |0 \x91\xB0 |0 \xE3\xC1 |0 \x91\xB1 |0 \x91\xB2 |0 \x91\xB3 |0 \x91\xB4 |0 \x91\xB5 |0 \x91\xB6 |0 \x91\xB7 |0 \x91\xB8 |0 \x91\xB9 |0 \x91\xBA |0 \x91\xBB |0 \x91\xBC |0 \x91\xBD |0 \x91\xBE |0 \x91\xBF |0 \x91\xC0 |0 \x91\xC1 |0 \xC5\xB3 |0 \x91\xC2 |0 \x91\xC3 |0 \x91\xC4 |0 \x91\xC5 |0 \x91\xC6 |0 \x91\xC7 |0 \x91\xC8 |0 \x91\xC9 |0 \x91\xCA |0 \x91\xCB |0 \x91\xCC |0 \x91\xCD |0 \x91\xCE |0 \x91\xCF |0 \xE3\xC2 |0 \x91\xD0 |0 \x91\xD1 |0 \x91\xD2 |0 \x91\xD3 |0 \x91\xD4 |0 \x91\xD5 |0 \x91\xD6 |0 \x91\xD7 |0 \x91\xD8 |0 \xDC\xB2 |0 \x91\xD9 |0 \x91\xDA |0 \x91\xDB |0 \x91\xDC |0 \x91\xDD |0 \x91\xDE |0 \xED\xB0 |0 \x91\xDF |0 \xB8\xEA |0 \x91\xE0 |0 \xCE\xEC |0 \xEA\xA7 |0 \xD0\xE7 |0 \xCA\xF9 |0 \xC8\xD6 |0 \xCF\xB7 |0 \xB3\xC9 |0 \xCE\xD2 |0 \xBD\xE4 |0 \x91\xE1 |0 \x91\xE2 |0 \xE3\xDE |0 \xBB\xF2 |0 \xEA\xA8 |0 \xD5\xBD |0 \x91\xE3 |0 \xC6\xDD |0 \xEA\xA9 |0 \x91\xE4 |0 \x91\xE5 |0 \x91\xE6 |0 \xEA\xAA |0 \x91\xE7 |0 \xEA\xAC |0 \xEA\xAB |0 \x91\xE8 |0 \xEA\xAE |0 \xEA\xAD |0 \x91\xE9 |0 \x91\xEA |0 \x91\xEB |0 \x91\xEC |0 \xBD\xD8 |0 \x91\xED |0 \xEA\xAF |0 \x91\xEE |0 \xC2\xBE |0 \x91\xEF |0 \x91\xF0 |0 \x91\xF1 |0 \x91\xF2 |0 \xB4\xC1 |0 \xB4\xF7 |0 \x91\xF3 |0 \x91\xF4 |0 \xBB\xA7 |0 \x91\xF5 |0 \x91\xF6 |0 \x91\xF7 |0 \x91\xF8 |0 \x91\xF9 |0 \xEC\xE6 |0 \xEC\xE5 |0 \xB7\xBF |0 \xCB\xF9 |0 \xB1\xE2 |0 \x91\xFA |0 \xEC\xE7 |0 \x91\xFB |0 \x91\xFC |0 \x91\xFD |0 \xC9\xC8 |0 \xEC\xE8 |0 \xEC\xE9 |0 \x91\xFE |0 \xCA\xD6 |0 \xDE\xD0 |0 \xB2\xC5 |0 \xD4\xFA |0 \x92\x40 |0 \x92\x41 |0 \xC6\xCB |0 \xB0\xC7 |0 \xB4\xF2 |0 \xC8\xD3 |0 \x92\x42 |0 \x92\x43 |0 \x92\x44 |0 \xCD\xD0 |0 \x92\x45 |0 \x92\x46 |0 \xBF\xB8 |0 \x92\x47 |0 \x92\x48 |0 \x92\x49 |0 \x92\x4A |0 \x92\x4B |0 \x92\x4C |0 \x92\x4D |0 \xBF\xDB |0 \x92\x4E |0 \x92\x4F |0 \xC7\xA4 |0 \xD6\xB4 |0 \x92\x50 |0 \xC0\xA9 |0 \xDE\xD1 |0 \xC9\xA8 |0 \xD1\xEF |0 \xC5\xA4 |0 \xB0\xE7 |0 \xB3\xB6 |0 \xC8\xC5 |0 \x92\x51 |0 \x92\x52 |0 \xB0\xE2 |0 \x92\x53 |0 \x92\x54 |0 \xB7\xF6 |0 \x92\x55 |0 \x92\x56 |0 \xC5\xFA |0 \x92\x57 |0 \x92\x58 |0 \xB6\xF3 |0 \x92\x59 |0 \xD5\xD2 |0 \xB3\xD0 |0 \xBC\xBC |0 \x92\x5A |0 \x92\x5B |0 \x92\x5C |0 \xB3\xAD |0 \x92\x5D |0 \x92\x5E |0 \x92\x5F |0 \x92\x60 |0 \xBE\xF1 |0 \xB0\xD1 |0 \x92\x61 |0 \x92\x62 |0 \x92\x63 |0 \x92\x64 |0 \x92\x65 |0 \x92\x66 |0 \xD2\xD6 |0 \xCA\xE3 |0 \xD7\xA5 |0 \x92\x67 |0 \xCD\xB6 |0 \xB6\xB6 |0 \xBF\xB9 |0 \xD5\xDB |0 \x92\x68 |0 \xB8\xA7 |0 \xC5\xD7 |0 \x92\x69 |0 \x92\x6A |0 \x92\x6B |0 \xDE\xD2 |0 \xBF\xD9 |0 \xC2\xD5 |0 \xC7\xC0 |0 \x92\x6C |0 \xBB\xA4 |0 \xB1\xA8 |0 \x92\x6D |0 \x92\x6E |0 \xC5\xEA |0 \x92\x6F |0 \x92\x70 |0 \xC5\xFB |0 \xCC\xA7 |0 \x92\x71 |0 \x92\x72 |0 \x92\x73 |0 \x92\x74 |0 \xB1\xA7 |0 \x92\x75 |0 \x92\x76 |0 \x92\x77 |0 \xB5\xD6 |0 \x92\x78 |0 \x92\x79 |0 \x92\x7A |0 \xC4\xA8 |0 \x92\x7B |0 \xDE\xD3 |0 \xD1\xBA |0 \xB3\xE9 |0 \x92\x7C |0 \xC3\xF2 |0 \x92\x7D |0 \x92\x7E |0 \xB7\xF7 |0 \x92\x80 |0 \xD6\xF4 |0 \xB5\xA3 |0 \xB2\xF0 |0 \xC4\xB4 |0 \xC4\xE9 |0 \xC0\xAD |0 \xDE\xD4 |0 \x92\x81 |0 \xB0\xE8 |0 \xC5\xC4 |0 \xC1\xE0 |0 \x92\x82 |0 \xB9\xD5 |0 \x92\x83 |0 \xBE\xDC |0 \xCD\xD8 |0 \xB0\xCE |0 \x92\x84 |0 \xCD\xCF |0 \xDE\xD6 |0 \xBE\xD0 |0 \xD7\xBE |0 \xDE\xD5 |0 \xD5\xD0 |0 \xB0\xDD |0 \x92\x85 |0 \x92\x86 |0 \xC4\xE2 |0 \x92\x87 |0 \x92\x88 |0 \xC2\xA3 |0 \xBC\xF0 |0 \x92\x89 |0 \xD3\xB5 |0 \xC0\xB9 |0 \xC5\xA1 |0 \xB2\xA6 |0 \xD4\xF1 |0 \x92\x8A |0 \x92\x8B |0 \xC0\xA8 |0 \xCA\xC3 |0 \xDE\xD7 |0 \xD5\xFC |0 \x92\x8C |0 \xB9\xB0 |0 \x92\x8D |0 \xC8\xAD |0 \xCB\xA9 |0 \x92\x8E |0 \xDE\xD9 |0 \xBF\xBD |0 \x92\x8F |0 \x92\x90 |0 \x92\x91 |0 \x92\x92 |0 \xC6\xB4 |0 \xD7\xA7 |0 \xCA\xB0 |0 \xC4\xC3 |0 \x92\x93 |0 \xB3\xD6 |0 \xB9\xD2 |0 \x92\x94 |0 \x92\x95 |0 \x92\x96 |0 \x92\x97 |0 \xD6\xB8 |0 \xEA\xFC |0 \xB0\xB4 |0 \x92\x98 |0 \x92\x99 |0 \x92\x9A |0 \x92\x9B |0 \xBF\xE6 |0 \x92\x9C |0 \x92\x9D |0 \xCC\xF4 |0 \x92\x9E |0 \x92\x9F |0 \x92\xA0 |0 \x92\xA1 |0 \xCD\xDA |0 \x92\xA2 |0 \x92\xA3 |0 \x92\xA4 |0 \xD6\xBF |0 \xC2\xCE |0 \x92\xA5 |0 \xCE\xCE |0 \xCC\xA2 |0 \xD0\xAE |0 \xC4\xD3 |0 \xB5\xB2 |0 \xDE\xD8 |0 \xD5\xF5 |0 \xBC\xB7 |0 \xBB\xD3 |0 \x92\xA6 |0 \x92\xA7 |0 \xB0\xA4 |0 \x92\xA8 |0 \xC5\xB2 |0 \xB4\xEC |0 \x92\xA9 |0 \x92\xAA |0 \x92\xAB |0 \xD5\xF1 |0 \x92\xAC |0 \x92\xAD |0 \xEA\xFD |0 \x92\xAE |0 \x92\xAF |0 \x92\xB0 |0 \x92\xB1 |0 \x92\xB2 |0 \x92\xB3 |0 \xDE\xDA |0 \xCD\xA6 |0 \x92\xB4 |0 \x92\xB5 |0 \xCD\xEC |0 \x92\xB6 |0 \x92\xB7 |0 \x92\xB8 |0 \x92\xB9 |0 \xCE\xE6 |0 \xDE\xDC |0 \x92\xBA |0 \xCD\xB1 |0 \xC0\xA6 |0 \x92\xBB |0 \x92\xBC |0 \xD7\xBD |0 \x92\xBD |0 \xDE\xDB |0 \xB0\xC6 |0 \xBA\xB4 |0 \xC9\xD3 |0 \xC4\xF3 |0 \xBE\xE8 |0 \x92\xBE |0 \x92\xBF |0 \x92\xC0 |0 \x92\xC1 |0 \xB2\xB6 |0 \x92\xC2 |0 \x92\xC3 |0 \x92\xC4 |0 \x92\xC5 |0 \x92\xC6 |0 \x92\xC7 |0 \x92\xC8 |0 \x92\xC9 |0 \xC0\xCC |0 \xCB\xF0 |0 \x92\xCA |0 \xBC\xF1 |0 \xBB\xBB |0 \xB5\xB7 |0 \x92\xCB |0 \x92\xCC |0 \x92\xCD |0 \xC5\xF5 |0 \x92\xCE |0 \xDE\xE6 |0 \x92\xCF |0 \x92\xD0 |0 \x92\xD1 |0 \xDE\xE3 |0 \xBE\xDD |0 \x92\xD2 |0 \x92\xD3 |0 \xDE\xDF |0 \x92\xD4 |0 \x92\xD5 |0 \x92\xD6 |0 \x92\xD7 |0 \xB4\xB7 |0 \xBD\xDD |0 \x92\xD8 |0 \x92\xD9 |0 \xDE\xE0 |0 \xC4\xED |0 \x92\xDA |0 \x92\xDB |0 \x92\xDC |0 \x92\xDD |0 \xCF\xC6 |0 \x92\xDE |0 \xB5\xE0 |0 \x92\xDF |0 \x92\xE0 |0 \x92\xE1 |0 \x92\xE2 |0 \xB6\xDE |0 \xCA\xDA |0 \xB5\xF4 |0 \xDE\xE5 |0 \x92\xE3 |0 \xD5\xC6 |0 \x92\xE4 |0 \xDE\xE1 |0 \xCC\xCD |0 \xC6\xFE |0 \x92\xE5 |0 \xC5\xC5 |0 \x92\xE6 |0 \x92\xE7 |0 \x92\xE8 |0 \xD2\xB4 |0 \x92\xE9 |0 \xBE\xF2 |0 \x92\xEA |0 \x92\xEB |0 \x92\xEC |0 \x92\xED |0 \x92\xEE |0 \x92\xEF |0 \x92\xF0 |0 \xC2\xD3 |0 \x92\xF1 |0 \xCC\xBD |0 \xB3\xB8 |0 \x92\xF2 |0 \xBD\xD3 |0 \x92\xF3 |0 \xBF\xD8 |0 \xCD\xC6 |0 \xD1\xDA |0 \xB4\xEB |0 \x92\xF4 |0 \xDE\xE4 |0 \xDE\xDD |0 \xDE\xE7 |0 \x92\xF5 |0 \xEA\xFE |0 \x92\xF6 |0 \x92\xF7 |0 \xC2\xB0 |0 \xDE\xE2 |0 \x92\xF8 |0 \x92\xF9 |0 \xD6\xC0 |0 \xB5\xA7 |0 \x92\xFA |0 \xB2\xF4 |0 \x92\xFB |0 \xDE\xE8 |0 \x92\xFC |0 \xDE\xF2 |0 \x92\xFD |0 \x92\xFE |0 \x93\x40 |0 \x93\x41 |0 \x93\x42 |0 \xDE\xED |0 \x93\x43 |0 \xDE\xF1 |0 \x93\x44 |0 \x93\x45 |0 \xC8\xE0 |0 \x93\x46 |0 \x93\x47 |0 \x93\x48 |0 \xD7\xE1 |0 \xDE\xEF |0 \xC3\xE8 |0 \xCC\xE1 |0 \x93\x49 |0 \xB2\xE5 |0 \x93\x4A |0 \x93\x4B |0 \x93\x4C |0 \xD2\xBE |0 \x93\x4D |0 \x93\x4E |0 \x93\x4F |0 \x93\x50 |0 \x93\x51 |0 \x93\x52 |0 \x93\x53 |0 \xDE\xEE |0 \x93\x54 |0 \xDE\xEB |0 \xCE\xD5 |0 \x93\x55 |0 \xB4\xA7 |0 \x93\x56 |0 \x93\x57 |0 \x93\x58 |0 \x93\x59 |0 \x93\x5A |0 \xBF\xAB |0 \xBE\xBE |0 \x93\x5B |0 \x93\x5C |0 \xBD\xD2 |0 \x93\x5D |0 \x93\x5E |0 \x93\x5F |0 \x93\x60 |0 \xDE\xE9 |0 \x93\x61 |0 \xD4\xAE |0 \x93\x62 |0 \xDE\xDE |0 \x93\x63 |0 \xDE\xEA |0 \x93\x64 |0 \x93\x65 |0 \x93\x66 |0 \x93\x67 |0 \xC0\xBF |0 \x93\x68 |0 \xDE\xEC |0 \xB2\xF3 |0 \xB8\xE9 |0 \xC2\xA7 |0 \x93\x69 |0 \x93\x6A |0 \xBD\xC1 |0 \x93\x6B |0 \x93\x6C |0 \x93\x6D |0 \x93\x6E |0 \x93\x6F |0 \xDE\xF5 |0 \xDE\xF8 |0 \x93\x70 |0 \x93\x71 |0 \xB2\xAB |0 \xB4\xA4 |0 \x93\x72 |0 \x93\x73 |0 \xB4\xEA |0 \xC9\xA6 |0 \x93\x74 |0 \x93\x75 |0 \x93\x76 |0 \x93\x77 |0 \x93\x78 |0 \x93\x79 |0 \xDE\xF6 |0 \xCB\xD1 |0 \x93\x7A |0 \xB8\xE3 |0 \x93\x7B |0 \xDE\xF7 |0 \xDE\xFA |0 \x93\x7C |0 \x93\x7D |0 \x93\x7E |0 \x93\x80 |0 \xDE\xF9 |0 \x93\x81 |0 \x93\x82 |0 \x93\x83 |0 \xCC\xC2 |0 \x93\x84 |0 \xB0\xE1 |0 \xB4\xEE |0 \x93\x85 |0 \x93\x86 |0 \x93\x87 |0 \x93\x88 |0 \x93\x89 |0 \x93\x8A |0 \xE5\xBA |0 \x93\x8B |0 \x93\x8C |0 \x93\x8D |0 \x93\x8E |0 \x93\x8F |0 \xD0\xAF |0 \x93\x90 |0 \x93\x91 |0 \xB2\xEB |0 \x93\x92 |0 \xEB\xA1 |0 \x93\x93 |0 \xDE\xF4 |0 \x93\x94 |0 \x93\x95 |0 \xC9\xE3 |0 \xDE\xF3 |0 \xB0\xDA |0 \xD2\xA1 |0 \xB1\xF7 |0 \x93\x96 |0 \xCC\xAF |0 \x93\x97 |0 \x93\x98 |0 \x93\x99 |0 \x93\x9A |0 \x93\x9B |0 \x93\x9C |0 \x93\x9D |0 \xDE\xF0 |0 \x93\x9E |0 \xCB\xA4 |0 \x93\x9F |0 \x93\xA0 |0 \x93\xA1 |0 \xD5\xAA |0 \x93\xA2 |0 \x93\xA3 |0 \x93\xA4 |0 \x93\xA5 |0 \x93\xA6 |0 \xDE\xFB |0 \x93\xA7 |0 \x93\xA8 |0 \x93\xA9 |0 \x93\xAA |0 \x93\xAB |0 \x93\xAC |0 \x93\xAD |0 \x93\xAE |0 \xB4\xDD |0 \x93\xAF |0 \xC4\xA6 |0 \x93\xB0 |0 \x93\xB1 |0 \x93\xB2 |0 \xDE\xFD |0 \x93\xB3 |0 \x93\xB4 |0 \x93\xB5 |0 \x93\xB6 |0 \x93\xB7 |0 \x93\xB8 |0 \x93\xB9 |0 \x93\xBA |0 \x93\xBB |0 \x93\xBC |0 \xC3\xFE |0 \xC4\xA1 |0 \xDF\xA1 |0 \x93\xBD |0 \x93\xBE |0 \x93\xBF |0 \x93\xC0 |0 \x93\xC1 |0 \x93\xC2 |0 \x93\xC3 |0 \xC1\xCC |0 \x93\xC4 |0 \xDE\xFC |0 \xBE\xEF |0 \x93\xC5 |0 \xC6\xB2 |0 \x93\xC6 |0 \x93\xC7 |0 \x93\xC8 |0 \x93\xC9 |0 \x93\xCA |0 \x93\xCB |0 \x93\xCC |0 \x93\xCD |0 \x93\xCE |0 \xB3\xC5 |0 \xC8\xF6 |0 \x93\xCF |0 \x93\xD0 |0 \xCB\xBA |0 \xDE\xFE |0 \x93\xD1 |0 \x93\xD2 |0 \xDF\xA4 |0 \x93\xD3 |0 \x93\xD4 |0 \x93\xD5 |0 \x93\xD6 |0 \xD7\xB2 |0 \x93\xD7 |0 \x93\xD8 |0 \x93\xD9 |0 \x93\xDA |0 \x93\xDB |0 \xB3\xB7 |0 \x93\xDC |0 \x93\xDD |0 \x93\xDE |0 \x93\xDF |0 \xC1\xC3 |0 \x93\xE0 |0 \x93\xE1 |0 \xC7\xCB |0 \xB2\xA5 |0 \xB4\xE9 |0 \x93\xE2 |0 \xD7\xAB |0 \x93\xE3 |0 \x93\xE4 |0 \x93\xE5 |0 \x93\xE6 |0 \xC4\xEC |0 \x93\xE7 |0 \xDF\xA2 |0 \xDF\xA3 |0 \x93\xE8 |0 \xDF\xA5 |0 \x93\xE9 |0 \xBA\xB3 |0 \x93\xEA |0 \x93\xEB |0 \x93\xEC |0 \xDF\xA6 |0 \x93\xED |0 \xC0\xDE |0 \x93\xEE |0 \x93\xEF |0 \xC9\xC3 |0 \x93\xF0 |0 \x93\xF1 |0 \x93\xF2 |0 \x93\xF3 |0 \x93\xF4 |0 \x93\xF5 |0 \x93\xF6 |0 \xB2\xD9 |0 \xC7\xE6 |0 \x93\xF7 |0 \xDF\xA7 |0 \x93\xF8 |0 \xC7\xDC |0 \x93\xF9 |0 \x93\xFA |0 \x93\xFB |0 \x93\xFC |0 \xDF\xA8 |0 \xEB\xA2 |0 \x93\xFD |0 \x93\xFE |0 \x94\x40 |0 \x94\x41 |0 \x94\x42 |0 \xCB\xD3 |0 \x94\x43 |0 \x94\x44 |0 \x94\x45 |0 \xDF\xAA |0 \x94\x46 |0 \xDF\xA9 |0 \x94\x47 |0 \xB2\xC1 |0 \x94\x48 |0 \x94\x49 |0 \x94\x4A |0 \x94\x4B |0 \x94\x4C |0 \x94\x4D |0 \x94\x4E |0 \x94\x4F |0 \x94\x50 |0 \x94\x51 |0 \x94\x52 |0 \x94\x53 |0 \x94\x54 |0 \x94\x55 |0 \x94\x56 |0 \x94\x57 |0 \x94\x58 |0 \x94\x59 |0 \x94\x5A |0 \x94\x5B |0 \x94\x5C |0 \x94\x5D |0 \x94\x5E |0 \x94\x5F |0 \x94\x60 |0 \xC5\xCA |0 \x94\x61 |0 \x94\x62 |0 \x94\x63 |0 \x94\x64 |0 \x94\x65 |0 \x94\x66 |0 \x94\x67 |0 \x94\x68 |0 \xDF\xAB |0 \x94\x69 |0 \x94\x6A |0 \x94\x6B |0 \x94\x6C |0 \x94\x6D |0 \x94\x6E |0 \x94\x6F |0 \x94\x70 |0 \xD4\xDC |0 \x94\x71 |0 \x94\x72 |0 \x94\x73 |0 \x94\x74 |0 \x94\x75 |0 \xC8\xC1 |0 \x94\x76 |0 \x94\x77 |0 \x94\x78 |0 \x94\x79 |0 \x94\x7A |0 \x94\x7B |0 \x94\x7C |0 \x94\x7D |0 \x94\x7E |0 \x94\x80 |0 \x94\x81 |0 \x94\x82 |0 \xDF\xAC |0 \x94\x83 |0 \x94\x84 |0 \x94\x85 |0 \x94\x86 |0 \x94\x87 |0 \xBE\xF0 |0 \x94\x88 |0 \x94\x89 |0 \xDF\xAD |0 \xD6\xA7 |0 \x94\x8A |0 \x94\x8B |0 \x94\x8C |0 \x94\x8D |0 \xEA\xB7 |0 \xEB\xB6 |0 \xCA\xD5 |0 \x94\x8E |0 \xD8\xFC |0 \xB8\xC4 |0 \x94\x8F |0 \xB9\xA5 |0 \x94\x90 |0 \x94\x91 |0 \xB7\xC5 |0 \xD5\xFE |0 \x94\x92 |0 \x94\x93 |0 \x94\x94 |0 \x94\x95 |0 \x94\x96 |0 \xB9\xCA |0 \x94\x97 |0 \x94\x98 |0 \xD0\xA7 |0 \xF4\xCD |0 \x94\x99 |0 \x94\x9A |0 \xB5\xD0 |0 \x94\x9B |0 \x94\x9C |0 \xC3\xF4 |0 \x94\x9D |0 \xBE\xC8 |0 \x94\x9E |0 \x94\x9F |0 \x94\xA0 |0 \xEB\xB7 |0 \xB0\xBD |0 \x94\xA1 |0 \x94\xA2 |0 \xBD\xCC |0 \x94\xA3 |0 \xC1\xB2 |0 \x94\xA4 |0 \xB1\xD6 |0 \xB3\xA8 |0 \x94\xA5 |0 \x94\xA6 |0 \x94\xA7 |0 \xB8\xD2 |0 \xC9\xA2 |0 \x94\xA8 |0 \x94\xA9 |0 \xB6\xD8 |0 \x94\xAA |0 \x94\xAB |0 \x94\xAC |0 \x94\xAD |0 \xEB\xB8 |0 \xBE\xB4 |0 \x94\xAE |0 \x94\xAF |0 \x94\xB0 |0 \xCA\xFD |0 \x94\xB1 |0 \xC7\xC3 |0 \x94\xB2 |0 \xD5\xFB |0 \x94\xB3 |0 \x94\xB4 |0 \xB7\xF3 |0 \x94\xB5 |0 \x94\xB6 |0 \x94\xB7 |0 \x94\xB8 |0 \x94\xB9 |0 \x94\xBA |0 \x94\xBB |0 \x94\xBC |0 \x94\xBD |0 \x94\xBE |0 \x94\xBF |0 \x94\xC0 |0 \x94\xC1 |0 \x94\xC2 |0 \x94\xC3 |0 \xCE\xC4 |0 \x94\xC4 |0 \x94\xC5 |0 \x94\xC6 |0 \xD5\xAB |0 \xB1\xF3 |0 \x94\xC7 |0 \x94\xC8 |0 \x94\xC9 |0 \xEC\xB3 |0 \xB0\xDF |0 \x94\xCA |0 \xEC\xB5 |0 \x94\xCB |0 \x94\xCC |0 \x94\xCD |0 \xB6\xB7 |0 \x94\xCE |0 \xC1\xCF |0 \x94\xCF |0 \xF5\xFA |0 \xD0\xB1 |0 \x94\xD0 |0 \x94\xD1 |0 \xD5\xE5 |0 \x94\xD2 |0 \xCE\xD3 |0 \x94\xD3 |0 \x94\xD4 |0 \xBD\xEF |0 \xB3\xE2 |0 \x94\xD5 |0 \xB8\xAB |0 \x94\xD6 |0 \xD5\xB6 |0 \x94\xD7 |0 \xED\xBD |0 \x94\xD8 |0 \xB6\xCF |0 \x94\xD9 |0 \xCB\xB9 |0 \xD0\xC2 |0 \x94\xDA |0 \x94\xDB |0 \x94\xDC |0 \x94\xDD |0 \x94\xDE |0 \x94\xDF |0 \x94\xE0 |0 \x94\xE1 |0 \xB7\xBD |0 \x94\xE2 |0 \x94\xE3 |0 \xEC\xB6 |0 \xCA\xA9 |0 \x94\xE4 |0 \x94\xE5 |0 \x94\xE6 |0 \xC5\xD4 |0 \x94\xE7 |0 \xEC\xB9 |0 \xEC\xB8 |0 \xC2\xC3 |0 \xEC\xB7 |0 \x94\xE8 |0 \x94\xE9 |0 \x94\xEA |0 \x94\xEB |0 \xD0\xFD |0 \xEC\xBA |0 \x94\xEC |0 \xEC\xBB |0 \xD7\xE5 |0 \x94\xED |0 \x94\xEE |0 \xEC\xBC |0 \x94\xEF |0 \x94\xF0 |0 \x94\xF1 |0 \xEC\xBD |0 \xC6\xEC |0 \x94\xF2 |0 \x94\xF3 |0 \x94\xF4 |0 \x94\xF5 |0 \x94\xF6 |0 \x94\xF7 |0 \x94\xF8 |0 \x94\xF9 |0 \xCE\xDE |0 \x94\xFA |0 \xBC\xC8 |0 \x94\xFB |0 \x94\xFC |0 \xC8\xD5 |0 \xB5\xA9 |0 \xBE\xC9 |0 \xD6\xBC |0 \xD4\xE7 |0 \x94\xFD |0 \x94\xFE |0 \xD1\xAE |0 \xD0\xF1 |0 \xEA\xB8 |0 \xEA\xB9 |0 \xEA\xBA |0 \xBA\xB5 |0 \x95\x40 |0 \x95\x41 |0 \x95\x42 |0 \x95\x43 |0 \xCA\xB1 |0 \xBF\xF5 |0 \x95\x44 |0 \x95\x45 |0 \xCD\xFA |0 \x95\x46 |0 \x95\x47 |0 \x95\x48 |0 \x95\x49 |0 \x95\x4A |0 \xEA\xC0 |0 \x95\x4B |0 \xB0\xBA |0 \xEA\xBE |0 \x95\x4C |0 \x95\x4D |0 \xC0\xA5 |0 \x95\x4E |0 \x95\x4F |0 \x95\x50 |0 \xEA\xBB |0 \x95\x51 |0 \xB2\xFD |0 \x95\x52 |0 \xC3\xF7 |0 \xBB\xE8 |0 \x95\x53 |0 \x95\x54 |0 \x95\x55 |0 \xD2\xD7 |0 \xCE\xF4 |0 \xEA\xBF |0 \x95\x56 |0 \x95\x57 |0 \x95\x58 |0 \xEA\xBC |0 \x95\x59 |0 \x95\x5A |0 \x95\x5B |0 \xEA\xC3 |0 \x95\x5C |0 \xD0\xC7 |0 \xD3\xB3 |0 \x95\x5D |0 \x95\x5E |0 \x95\x5F |0 \x95\x60 |0 \xB4\xBA |0 \x95\x61 |0 \xC3\xC1 |0 \xD7\xF2 |0 \x95\x62 |0 \x95\x63 |0 \x95\x64 |0 \x95\x65 |0 \xD5\xD1 |0 \x95\x66 |0 \xCA\xC7 |0 \x95\x67 |0 \xEA\xC5 |0 \x95\x68 |0 \x95\x69 |0 \xEA\xC4 |0 \xEA\xC7 |0 \xEA\xC6 |0 \x95\x6A |0 \x95\x6B |0 \x95\x6C |0 \x95\x6D |0 \x95\x6E |0 \xD6\xE7 |0 \x95\x6F |0 \xCF\xD4 |0 \x95\x70 |0 \x95\x71 |0 \xEA\xCB |0 \x95\x72 |0 \xBB\xCE |0 \x95\x73 |0 \x95\x74 |0 \x95\x75 |0 \x95\x76 |0 \x95\x77 |0 \x95\x78 |0 \x95\x79 |0 \xBD\xFA |0 \xC9\xCE |0 \x95\x7A |0 \x95\x7B |0 \xEA\xCC |0 \x95\x7C |0 \x95\x7D |0 \xC9\xB9 |0 \xCF\xFE |0 \xEA\xCA |0 \xD4\xCE |0 \xEA\xCD |0 \xEA\xCF |0 \x95\x7E |0 \x95\x80 |0 \xCD\xED |0 \x95\x81 |0 \x95\x82 |0 \x95\x83 |0 \x95\x84 |0 \xEA\xC9 |0 \x95\x85 |0 \xEA\xCE |0 \x95\x86 |0 \x95\x87 |0 \xCE\xEE |0 \x95\x88 |0 \xBB\xDE |0 \x95\x89 |0 \xB3\xBF |0 \x95\x8A |0 \x95\x8B |0 \x95\x8C |0 \x95\x8D |0 \x95\x8E |0 \xC6\xD5 |0 \xBE\xB0 |0 \xCE\xFA |0 \x95\x8F |0 \x95\x90 |0 \x95\x91 |0 \xC7\xE7 |0 \x95\x92 |0 \xBE\xA7 |0 \xEA\xD0 |0 \x95\x93 |0 \x95\x94 |0 \xD6\xC7 |0 \x95\x95 |0 \x95\x96 |0 \x95\x97 |0 \xC1\xC0 |0 \x95\x98 |0 \x95\x99 |0 \x95\x9A |0 \xD4\xDD |0 \x95\x9B |0 \xEA\xD1 |0 \x95\x9C |0 \x95\x9D |0 \xCF\xBE |0 \x95\x9E |0 \x95\x9F |0 \x95\xA0 |0 \x95\xA1 |0 \xEA\xD2 |0 \x95\xA2 |0 \x95\xA3 |0 \x95\xA4 |0 \x95\xA5 |0 \xCA\xEE |0 \x95\xA6 |0 \x95\xA7 |0 \x95\xA8 |0 \x95\xA9 |0 \xC5\xAF |0 \xB0\xB5 |0 \x95\xAA |0 \x95\xAB |0 \x95\xAC |0 \x95\xAD |0 \x95\xAE |0 \xEA\xD4 |0 \x95\xAF |0 \x95\xB0 |0 \x95\xB1 |0 \x95\xB2 |0 \x95\xB3 |0 \x95\xB4 |0 \x95\xB5 |0 \x95\xB6 |0 \x95\xB7 |0 \xEA\xD3 |0 \xF4\xDF |0 \x95\xB8 |0 \x95\xB9 |0 \x95\xBA |0 \x95\xBB |0 \x95\xBC |0 \xC4\xBA |0 \x95\xBD |0 \x95\xBE |0 \x95\xBF |0 \x95\xC0 |0 \x95\xC1 |0 \xB1\xA9 |0 \x95\xC2 |0 \x95\xC3 |0 \x95\xC4 |0 \x95\xC5 |0 \xE5\xDF |0 \x95\xC6 |0 \x95\xC7 |0 \x95\xC8 |0 \x95\xC9 |0 \xEA\xD5 |0 \x95\xCA |0 \x95\xCB |0 \x95\xCC |0 \x95\xCD |0 \x95\xCE |0 \x95\xCF |0 \x95\xD0 |0 \x95\xD1 |0 \x95\xD2 |0 \x95\xD3 |0 \x95\xD4 |0 \x95\xD5 |0 \x95\xD6 |0 \x95\xD7 |0 \x95\xD8 |0 \x95\xD9 |0 \x95\xDA |0 \x95\xDB |0 \x95\xDC |0 \x95\xDD |0 \x95\xDE |0 \x95\xDF |0 \x95\xE0 |0 \x95\xE1 |0 \x95\xE2 |0 \x95\xE3 |0 \xCA\xEF |0 \x95\xE4 |0 \xEA\xD6 |0 \xEA\xD7 |0 \xC6\xD8 |0 \x95\xE5 |0 \x95\xE6 |0 \x95\xE7 |0 \x95\xE8 |0 \x95\xE9 |0 \x95\xEA |0 \x95\xEB |0 \x95\xEC |0 \xEA\xD8 |0 \x95\xED |0 \x95\xEE |0 \xEA\xD9 |0 \x95\xEF |0 \x95\xF0 |0 \x95\xF1 |0 \x95\xF2 |0 \x95\xF3 |0 \x95\xF4 |0 \xD4\xBB |0 \x95\xF5 |0 \xC7\xFA |0 \xD2\xB7 |0 \xB8\xFC |0 \x95\xF6 |0 \x95\xF7 |0 \xEA\xC2 |0 \x95\xF8 |0 \xB2\xDC |0 \x95\xF9 |0 \x95\xFA |0 \xC2\xFC |0 \x95\xFB |0 \xD4\xF8 |0 \xCC\xE6 |0 \xD7\xEE |0 \x95\xFC |0 \x95\xFD |0 \x95\xFE |0 \x96\x40 |0 \x96\x41 |0 \x96\x42 |0 \x96\x43 |0 \xD4\xC2 |0 \xD3\xD0 |0 \xEB\xC3 |0 \xC5\xF3 |0 \x96\x44 |0 \xB7\xFE |0 \x96\x45 |0 \x96\x46 |0 \xEB\xD4 |0 \x96\x47 |0 \x96\x48 |0 \x96\x49 |0 \xCB\xB7 |0 \xEB\xDE |0 \x96\x4A |0 \xC0\xCA |0 \x96\x4B |0 \x96\x4C |0 \x96\x4D |0 \xCD\xFB |0 \x96\x4E |0 \xB3\xAF |0 \x96\x4F |0 \xC6\xDA |0 \x96\x50 |0 \x96\x51 |0 \x96\x52 |0 \x96\x53 |0 \x96\x54 |0 \x96\x55 |0 \xEB\xFC |0 \x96\x56 |0 \xC4\xBE |0 \x96\x57 |0 \xCE\xB4 |0 \xC4\xA9 |0 \xB1\xBE |0 \xD4\xFD |0 \x96\x58 |0 \xCA\xF5 |0 \x96\x59 |0 \xD6\xEC |0 \x96\x5A |0 \x96\x5B |0 \xC6\xD3 |0 \xB6\xE4 |0 \x96\x5C |0 \x96\x5D |0 \x96\x5E |0 \x96\x5F |0 \xBB\xFA |0 \x96\x60 |0 \x96\x61 |0 \xD0\xE0 |0 \x96\x62 |0 \x96\x63 |0 \xC9\xB1 |0 \x96\x64 |0 \xD4\xD3 |0 \xC8\xA8 |0 \x96\x65 |0 \x96\x66 |0 \xB8\xCB |0 \x96\x67 |0 \xE8\xBE |0 \xC9\xBC |0 \x96\x68 |0 \x96\x69 |0 \xE8\xBB |0 \x96\x6A |0 \xC0\xEE |0 \xD0\xD3 |0 \xB2\xC4 |0 \xB4\xE5 |0 \x96\x6B |0 \xE8\xBC |0 \x96\x6C |0 \x96\x6D |0 \xD5\xC8 |0 \x96\x6E |0 \x96\x6F |0 \x96\x70 |0 \x96\x71 |0 \x96\x72 |0 \xB6\xC5 |0 \x96\x73 |0 \xE8\xBD |0 \xCA\xF8 |0 \xB8\xDC |0 \xCC\xF5 |0 \x96\x74 |0 \x96\x75 |0 \x96\x76 |0 \xC0\xB4 |0 \x96\x77 |0 \x96\x78 |0 \xD1\xEE |0 \xE8\xBF |0 \xE8\xC2 |0 \x96\x79 |0 \x96\x7A |0 \xBA\xBC |0 \x96\x7B |0 \xB1\xAD |0 \xBD\xDC |0 \x96\x7C |0 \xEA\xBD |0 \xE8\xC3 |0 \x96\x7D |0 \xE8\xC6 |0 \x96\x7E |0 \xE8\xCB |0 \x96\x80 |0 \x96\x81 |0 \x96\x82 |0 \x96\x83 |0 \xE8\xCC |0 \x96\x84 |0 \xCB\xC9 |0 \xB0\xE5 |0 \x96\x85 |0 \xBC\xAB |0 \x96\x86 |0 \x96\x87 |0 \xB9\xB9 |0 \x96\x88 |0 \x96\x89 |0 \xE8\xC1 |0 \x96\x8A |0 \xCD\xF7 |0 \x96\x8B |0 \xE8\xCA |0 \x96\x8C |0 \x96\x8D |0 \x96\x8E |0 \x96\x8F |0 \xCE\xF6 |0 \x96\x90 |0 \x96\x91 |0 \x96\x92 |0 \x96\x93 |0 \xD5\xED |0 \x96\x94 |0 \xC1\xD6 |0 \xE8\xC4 |0 \x96\x95 |0 \xC3\xB6 |0 \x96\x96 |0 \xB9\xFB |0 \xD6\xA6 |0 \xE8\xC8 |0 \x96\x97 |0 \x96\x98 |0 \x96\x99 |0 \xCA\xE0 |0 \xD4\xE6 |0 \x96\x9A |0 \xE8\xC0 |0 \x96\x9B |0 \xE8\xC5 |0 \xE8\xC7 |0 \x96\x9C |0 \xC7\xB9 |0 \xB7\xE3 |0 \x96\x9D |0 \xE8\xC9 |0 \x96\x9E |0 \xBF\xDD |0 \xE8\xD2 |0 \x96\x9F |0 \x96\xA0 |0 \xE8\xD7 |0 \x96\xA1 |0 \xE8\xD5 |0 \xBC\xDC |0 \xBC\xCF |0 \xE8\xDB |0 \x96\xA2 |0 \x96\xA3 |0 \x96\xA4 |0 \x96\xA5 |0 \x96\xA6 |0 \x96\xA7 |0 \x96\xA8 |0 \x96\xA9 |0 \xE8\xDE |0 \x96\xAA |0 \xE8\xDA |0 \xB1\xFA |0 \x96\xAB |0 \x96\xAC |0 \x96\xAD |0 \x96\xAE |0 \x96\xAF |0 \x96\xB0 |0 \x96\xB1 |0 \x96\xB2 |0 \x96\xB3 |0 \x96\xB4 |0 \xB0\xD8 |0 \xC4\xB3 |0 \xB8\xCC |0 \xC6\xE2 |0 \xC8\xBE |0 \xC8\xE1 |0 \x96\xB5 |0 \x96\xB6 |0 \x96\xB7 |0 \xE8\xCF |0 \xE8\xD4 |0 \xE8\xD6 |0 \x96\xB8 |0 \xB9\xF1 |0 \xE8\xD8 |0 \xD7\xF5 |0 \x96\xB9 |0 \xC4\xFB |0 \x96\xBA |0 \xE8\xDC |0 \x96\xBB |0 \x96\xBC |0 \xB2\xE9 |0 \x96\xBD |0 \x96\xBE |0 \x96\xBF |0 \xE8\xD1 |0 \x96\xC0 |0 \x96\xC1 |0 \xBC\xED |0 \x96\xC2 |0 \x96\xC3 |0 \xBF\xC2 |0 \xE8\xCD |0 \xD6\xF9 |0 \x96\xC4 |0 \xC1\xF8 |0 \xB2\xF1 |0 \x96\xC5 |0 \x96\xC6 |0 \x96\xC7 |0 \x96\xC8 |0 \x96\xC9 |0 \x96\xCA |0 \x96\xCB |0 \x96\xCC |0 \xE8\xDF |0 \x96\xCD |0 \xCA\xC1 |0 \xE8\xD9 |0 \x96\xCE |0 \x96\xCF |0 \x96\xD0 |0 \x96\xD1 |0 \xD5\xA4 |0 \x96\xD2 |0 \xB1\xEA |0 \xD5\xBB |0 \xE8\xCE |0 \xE8\xD0 |0 \xB6\xB0 |0 \xE8\xD3 |0 \x96\xD3 |0 \xE8\xDD |0 \xC0\xB8 |0 \x96\xD4 |0 \xCA\xF7 |0 \x96\xD5 |0 \xCB\xA8 |0 \x96\xD6 |0 \x96\xD7 |0 \xC6\xDC |0 \xC0\xF5 |0 \x96\xD8 |0 \x96\xD9 |0 \x96\xDA |0 \x96\xDB |0 \x96\xDC |0 \xE8\xE9 |0 \x96\xDD |0 \x96\xDE |0 \x96\xDF |0 \xD0\xA3 |0 \x96\xE0 |0 \x96\xE1 |0 \x96\xE2 |0 \x96\xE3 |0 \x96\xE4 |0 \x96\xE5 |0 \x96\xE6 |0 \xE8\xF2 |0 \xD6\xEA |0 \x96\xE7 |0 \x96\xE8 |0 \x96\xE9 |0 \x96\xEA |0 \x96\xEB |0 \x96\xEC |0 \x96\xED |0 \xE8\xE0 |0 \xE8\xE1 |0 \x96\xEE |0 \x96\xEF |0 \x96\xF0 |0 \xD1\xF9 |0 \xBA\xCB |0 \xB8\xF9 |0 \x96\xF1 |0 \x96\xF2 |0 \xB8\xF1 |0 \xD4\xD4 |0 \xE8\xEF |0 \x96\xF3 |0 \xE8\xEE |0 \xE8\xEC |0 \xB9\xF0 |0 \xCC\xD2 |0 \xE8\xE6 |0 \xCE\xA6 |0 \xBF\xF2 |0 \x96\xF4 |0 \xB0\xB8 |0 \xE8\xF1 |0 \xE8\xF0 |0 \x96\xF5 |0 \xD7\xC0 |0 \x96\xF6 |0 \xE8\xE4 |0 \x96\xF7 |0 \xCD\xA9 |0 \xC9\xA3 |0 \x96\xF8 |0 \xBB\xB8 |0 \xBD\xDB |0 \xE8\xEA |0 \x96\xF9 |0 \x96\xFA |0 \x96\xFB |0 \x96\xFC |0 \x96\xFD |0 \x96\xFE |0 \x97\x40 |0 \x97\x41 |0 \x97\x42 |0 \x97\x43 |0 \xE8\xE2 |0 \xE8\xE3 |0 \xE8\xE5 |0 \xB5\xB5 |0 \xE8\xE7 |0 \xC7\xC5 |0 \xE8\xEB |0 \xE8\xED |0 \xBD\xB0 |0 \xD7\xAE |0 \x97\x44 |0 \xE8\xF8 |0 \x97\x45 |0 \x97\x46 |0 \x97\x47 |0 \x97\x48 |0 \x97\x49 |0 \x97\x4A |0 \x97\x4B |0 \x97\x4C |0 \xE8\xF5 |0 \x97\x4D |0 \xCD\xB0 |0 \xE8\xF6 |0 \x97\x4E |0 \x97\x4F |0 \x97\x50 |0 \x97\x51 |0 \x97\x52 |0 \x97\x53 |0 \x97\x54 |0 \x97\x55 |0 \x97\x56 |0 \xC1\xBA |0 \x97\x57 |0 \xE8\xE8 |0 \x97\x58 |0 \xC3\xB7 |0 \xB0\xF0 |0 \x97\x59 |0 \x97\x5A |0 \x97\x5B |0 \x97\x5C |0 \x97\x5D |0 \x97\x5E |0 \x97\x5F |0 \x97\x60 |0 \xE8\xF4 |0 \x97\x61 |0 \x97\x62 |0 \x97\x63 |0 \xE8\xF7 |0 \x97\x64 |0 \x97\x65 |0 \x97\x66 |0 \xB9\xA3 |0 \x97\x67 |0 \x97\x68 |0 \x97\x69 |0 \x97\x6A |0 \x97\x6B |0 \x97\x6C |0 \x97\x6D |0 \x97\x6E |0 \x97\x6F |0 \x97\x70 |0 \xC9\xD2 |0 \x97\x71 |0 \x97\x72 |0 \x97\x73 |0 \xC3\xCE |0 \xCE\xE0 |0 \xC0\xE6 |0 \x97\x74 |0 \x97\x75 |0 \x97\x76 |0 \x97\x77 |0 \xCB\xF3 |0 \x97\x78 |0 \xCC\xDD |0 \xD0\xB5 |0 \x97\x79 |0 \x97\x7A |0 \xCA\xE1 |0 \x97\x7B |0 \xE8\xF3 |0 \x97\x7C |0 \x97\x7D |0 \x97\x7E |0 \x97\x80 |0 \x97\x81 |0 \x97\x82 |0 \x97\x83 |0 \x97\x84 |0 \x97\x85 |0 \x97\x86 |0 \xBC\xEC |0 \x97\x87 |0 \xE8\xF9 |0 \x97\x88 |0 \x97\x89 |0 \x97\x8A |0 \x97\x8B |0 \x97\x8C |0 \x97\x8D |0 \xC3\xDE |0 \x97\x8E |0 \xC6\xE5 |0 \x97\x8F |0 \xB9\xF7 |0 \x97\x90 |0 \x97\x91 |0 \x97\x92 |0 \x97\x93 |0 \xB0\xF4 |0 \x97\x94 |0 \x97\x95 |0 \xD7\xD8 |0 \x97\x96 |0 \x97\x97 |0 \xBC\xAC |0 \x97\x98 |0 \xC5\xEF |0 \x97\x99 |0 \x97\x9A |0 \x97\x9B |0 \x97\x9C |0 \x97\x9D |0 \xCC\xC4 |0 \x97\x9E |0 \x97\x9F |0 \xE9\xA6 |0 \x97\xA0 |0 \x97\xA1 |0 \x97\xA2 |0 \x97\xA3 |0 \x97\xA4 |0 \x97\xA5 |0 \x97\xA6 |0 \x97\xA7 |0 \x97\xA8 |0 \x97\xA9 |0 \xC9\xAD |0 \x97\xAA |0 \xE9\xA2 |0 \xC0\xE2 |0 \x97\xAB |0 \x97\xAC |0 \x97\xAD |0 \xBF\xC3 |0 \x97\xAE |0 \x97\xAF |0 \x97\xB0 |0 \xE8\xFE |0 \xB9\xD7 |0 \x97\xB1 |0 \xE8\xFB |0 \x97\xB2 |0 \x97\xB3 |0 \x97\xB4 |0 \x97\xB5 |0 \xE9\xA4 |0 \x97\xB6 |0 \x97\xB7 |0 \x97\xB8 |0 \xD2\xCE |0 \x97\xB9 |0 \x97\xBA |0 \x97\xBB |0 \x97\xBC |0 \x97\xBD |0 \xE9\xA3 |0 \x97\xBE |0 \xD6\xB2 |0 \xD7\xB5 |0 \x97\xBF |0 \xE9\xA7 |0 \x97\xC0 |0 \xBD\xB7 |0 \x97\xC1 |0 \x97\xC2 |0 \x97\xC3 |0 \x97\xC4 |0 \x97\xC5 |0 \x97\xC6 |0 \x97\xC7 |0 \x97\xC8 |0 \x97\xC9 |0 \x97\xCA |0 \x97\xCB |0 \x97\xCC |0 \xE8\xFC |0 \xE8\xFD |0 \x97\xCD |0 \x97\xCE |0 \x97\xCF |0 \xE9\xA1 |0 \x97\xD0 |0 \x97\xD1 |0 \x97\xD2 |0 \x97\xD3 |0 \x97\xD4 |0 \x97\xD5 |0 \x97\xD6 |0 \x97\xD7 |0 \xCD\xD6 |0 \x97\xD8 |0 \x97\xD9 |0 \xD2\xAC |0 \x97\xDA |0 \x97\xDB |0 \x97\xDC |0 \xE9\xB2 |0 \x97\xDD |0 \x97\xDE |0 \x97\xDF |0 \x97\xE0 |0 \xE9\xA9 |0 \x97\xE1 |0 \x97\xE2 |0 \x97\xE3 |0 \xB4\xAA |0 \x97\xE4 |0 \xB4\xBB |0 \x97\xE5 |0 \x97\xE6 |0 \xE9\xAB |0 \x97\xE7 |0 \x97\xE8 |0 \x97\xE9 |0 \x97\xEA |0 \x97\xEB |0 \x97\xEC |0 \x97\xED |0 \x97\xEE |0 \x97\xEF |0 \x97\xF0 |0 \x97\xF1 |0 \x97\xF2 |0 \x97\xF3 |0 \x97\xF4 |0 \x97\xF5 |0 \x97\xF6 |0 \x97\xF7 |0 \xD0\xA8 |0 \x97\xF8 |0 \x97\xF9 |0 \xE9\xA5 |0 \x97\xFA |0 \x97\xFB |0 \xB3\xFE |0 \x97\xFC |0 \x97\xFD |0 \xE9\xAC |0 \xC0\xE3 |0 \x97\xFE |0 \xE9\xAA |0 \x98\x40 |0 \x98\x41 |0 \xE9\xB9 |0 \x98\x42 |0 \x98\x43 |0 \xE9\xB8 |0 \x98\x44 |0 \x98\x45 |0 \x98\x46 |0 \x98\x47 |0 \xE9\xAE |0 \x98\x48 |0 \x98\x49 |0 \xE8\xFA |0 \x98\x4A |0 \x98\x4B |0 \xE9\xA8 |0 \x98\x4C |0 \x98\x4D |0 \x98\x4E |0 \x98\x4F |0 \x98\x50 |0 \xBF\xAC |0 \xE9\xB1 |0 \xE9\xBA |0 \x98\x51 |0 \x98\x52 |0 \xC2\xA5 |0 \x98\x53 |0 \x98\x54 |0 \x98\x55 |0 \xE9\xAF |0 \x98\x56 |0 \xB8\xC5 |0 \x98\x57 |0 \xE9\xAD |0 \x98\x58 |0 \xD3\xDC |0 \xE9\xB4 |0 \xE9\xB5 |0 \xE9\xB7 |0 \x98\x59 |0 \x98\x5A |0 \x98\x5B |0 \xE9\xC7 |0 \x98\x5C |0 \x98\x5D |0 \x98\x5E |0 \x98\x5F |0 \x98\x60 |0 \x98\x61 |0 \xC0\xC6 |0 \xE9\xC5 |0 \x98\x62 |0 \x98\x63 |0 \xE9\xB0 |0 \x98\x64 |0 \x98\x65 |0 \xE9\xBB |0 \xB0\xF1 |0 \x98\x66 |0 \x98\x67 |0 \x98\x68 |0 \x98\x69 |0 \x98\x6A |0 \x98\x6B |0 \x98\x6C |0 \x98\x6D |0 \x98\x6E |0 \x98\x6F |0 \xE9\xBC |0 \xD5\xA5 |0 \x98\x70 |0 \x98\x71 |0 \xE9\xBE |0 \x98\x72 |0 \xE9\xBF |0 \x98\x73 |0 \x98\x74 |0 \x98\x75 |0 \xE9\xC1 |0 \x98\x76 |0 \x98\x77 |0 \xC1\xF1 |0 \x98\x78 |0 \x98\x79 |0 \xC8\xB6 |0 \x98\x7A |0 \x98\x7B |0 \x98\x7C |0 \xE9\xBD |0 \x98\x7D |0 \x98\x7E |0 \x98\x80 |0 \x98\x81 |0 \x98\x82 |0 \xE9\xC2 |0 \x98\x83 |0 \x98\x84 |0 \x98\x85 |0 \x98\x86 |0 \x98\x87 |0 \x98\x88 |0 \x98\x89 |0 \x98\x8A |0 \xE9\xC3 |0 \x98\x8B |0 \xE9\xB3 |0 \x98\x8C |0 \xE9\xB6 |0 \x98\x8D |0 \xBB\xB1 |0 \x98\x8E |0 \x98\x8F |0 \x98\x90 |0 \xE9\xC0 |0 \x98\x91 |0 \x98\x92 |0 \x98\x93 |0 \x98\x94 |0 \x98\x95 |0 \x98\x96 |0 \xBC\xF7 |0 \x98\x97 |0 \x98\x98 |0 \x98\x99 |0 \xE9\xC4 |0 \xE9\xC6 |0 \x98\x9A |0 \x98\x9B |0 \x98\x9C |0 \x98\x9D |0 \x98\x9E |0 \x98\x9F |0 \x98\xA0 |0 \x98\xA1 |0 \x98\xA2 |0 \x98\xA3 |0 \x98\xA4 |0 \x98\xA5 |0 \xE9\xCA |0 \x98\xA6 |0 \x98\xA7 |0 \x98\xA8 |0 \x98\xA9 |0 \xE9\xCE |0 \x98\xAA |0 \x98\xAB |0 \x98\xAC |0 \x98\xAD |0 \x98\xAE |0 \x98\xAF |0 \x98\xB0 |0 \x98\xB1 |0 \x98\xB2 |0 \x98\xB3 |0 \xB2\xDB |0 \x98\xB4 |0 \xE9\xC8 |0 \x98\xB5 |0 \x98\xB6 |0 \x98\xB7 |0 \x98\xB8 |0 \x98\xB9 |0 \x98\xBA |0 \x98\xBB |0 \x98\xBC |0 \x98\xBD |0 \x98\xBE |0 \xB7\xAE |0 \x98\xBF |0 \x98\xC0 |0 \x98\xC1 |0 \x98\xC2 |0 \x98\xC3 |0 \x98\xC4 |0 \x98\xC5 |0 \x98\xC6 |0 \x98\xC7 |0 \x98\xC8 |0 \x98\xC9 |0 \x98\xCA |0 \xE9\xCB |0 \xE9\xCC |0 \x98\xCB |0 \x98\xCC |0 \x98\xCD |0 \x98\xCE |0 \x98\xCF |0 \x98\xD0 |0 \xD5\xC1 |0 \x98\xD1 |0 \xC4\xA3 |0 \x98\xD2 |0 \x98\xD3 |0 \x98\xD4 |0 \x98\xD5 |0 \x98\xD6 |0 \x98\xD7 |0 \xE9\xD8 |0 \x98\xD8 |0 \xBA\xE1 |0 \x98\xD9 |0 \x98\xDA |0 \x98\xDB |0 \x98\xDC |0 \xE9\xC9 |0 \x98\xDD |0 \xD3\xA3 |0 \x98\xDE |0 \x98\xDF |0 \x98\xE0 |0 \xE9\xD4 |0 \x98\xE1 |0 \x98\xE2 |0 \x98\xE3 |0 \x98\xE4 |0 \x98\xE5 |0 \x98\xE6 |0 \x98\xE7 |0 \xE9\xD7 |0 \xE9\xD0 |0 \x98\xE8 |0 \x98\xE9 |0 \x98\xEA |0 \x98\xEB |0 \x98\xEC |0 \xE9\xCF |0 \x98\xED |0 \x98\xEE |0 \xC7\xC1 |0 \x98\xEF |0 \x98\xF0 |0 \x98\xF1 |0 \x98\xF2 |0 \x98\xF3 |0 \x98\xF4 |0 \x98\xF5 |0 \x98\xF6 |0 \xE9\xD2 |0 \x98\xF7 |0 \x98\xF8 |0 \x98\xF9 |0 \x98\xFA |0 \x98\xFB |0 \x98\xFC |0 \x98\xFD |0 \xE9\xD9 |0 \xB3\xC8 |0 \x98\xFE |0 \xE9\xD3 |0 \x99\x40 |0 \x99\x41 |0 \x99\x42 |0 \x99\x43 |0 \x99\x44 |0 \xCF\xF0 |0 \x99\x45 |0 \x99\x46 |0 \x99\x47 |0 \xE9\xCD |0 \x99\x48 |0 \x99\x49 |0 \x99\x4A |0 \x99\x4B |0 \x99\x4C |0 \x99\x4D |0 \x99\x4E |0 \x99\x4F |0 \x99\x50 |0 \x99\x51 |0 \x99\x52 |0 \xB3\xF7 |0 \x99\x53 |0 \x99\x54 |0 \x99\x55 |0 \x99\x56 |0 \x99\x57 |0 \x99\x58 |0 \x99\x59 |0 \xE9\xD6 |0 \x99\x5A |0 \x99\x5B |0 \xE9\xDA |0 \x99\x5C |0 \x99\x5D |0 \x99\x5E |0 \xCC\xB4 |0 \x99\x5F |0 \x99\x60 |0 \x99\x61 |0 \xCF\xAD |0 \x99\x62 |0 \x99\x63 |0 \x99\x64 |0 \x99\x65 |0 \x99\x66 |0 \x99\x67 |0 \x99\x68 |0 \x99\x69 |0 \x99\x6A |0 \xE9\xD5 |0 \x99\x6B |0 \xE9\xDC |0 \xE9\xDB |0 \x99\x6C |0 \x99\x6D |0 \x99\x6E |0 \x99\x6F |0 \x99\x70 |0 \xE9\xDE |0 \x99\x71 |0 \x99\x72 |0 \x99\x73 |0 \x99\x74 |0 \x99\x75 |0 \x99\x76 |0 \x99\x77 |0 \x99\x78 |0 \xE9\xD1 |0 \x99\x79 |0 \x99\x7A |0 \x99\x7B |0 \x99\x7C |0 \x99\x7D |0 \x99\x7E |0 \x99\x80 |0 \x99\x81 |0 \xE9\xDD |0 \x99\x82 |0 \xE9\xDF |0 \xC3\xCA |0 \x99\x83 |0 \x99\x84 |0 \x99\x85 |0 \x99\x86 |0 \x99\x87 |0 \x99\x88 |0 \x99\x89 |0 \x99\x8A |0 \x99\x8B |0 \x99\x8C |0 \x99\x8D |0 \x99\x8E |0 \x99\x8F |0 \x99\x90 |0 \x99\x91 |0 \x99\x92 |0 \x99\x93 |0 \x99\x94 |0 \x99\x95 |0 \x99\x96 |0 \x99\x97 |0 \x99\x98 |0 \x99\x99 |0 \x99\x9A |0 \x99\x9B |0 \x99\x9C |0 \x99\x9D |0 \x99\x9E |0 \x99\x9F |0 \x99\xA0 |0 \x99\xA1 |0 \x99\xA2 |0 \x99\xA3 |0 \x99\xA4 |0 \x99\xA5 |0 \x99\xA6 |0 \x99\xA7 |0 \x99\xA8 |0 \x99\xA9 |0 \x99\xAA |0 \x99\xAB |0 \x99\xAC |0 \x99\xAD |0 \x99\xAE |0 \x99\xAF |0 \x99\xB0 |0 \x99\xB1 |0 \x99\xB2 |0 \x99\xB3 |0 \x99\xB4 |0 \x99\xB5 |0 \x99\xB6 |0 \x99\xB7 |0 \x99\xB8 |0 \x99\xB9 |0 \x99\xBA |0 \x99\xBB |0 \x99\xBC |0 \x99\xBD |0 \x99\xBE |0 \x99\xBF |0 \x99\xC0 |0 \x99\xC1 |0 \x99\xC2 |0 \x99\xC3 |0 \x99\xC4 |0 \x99\xC5 |0 \x99\xC6 |0 \x99\xC7 |0 \x99\xC8 |0 \x99\xC9 |0 \x99\xCA |0 \x99\xCB |0 \x99\xCC |0 \x99\xCD |0 \x99\xCE |0 \x99\xCF |0 \x99\xD0 |0 \x99\xD1 |0 \x99\xD2 |0 \x99\xD3 |0 \x99\xD4 |0 \x99\xD5 |0 \x99\xD6 |0 \x99\xD7 |0 \x99\xD8 |0 \x99\xD9 |0 \x99\xDA |0 \x99\xDB |0 \x99\xDC |0 \x99\xDD |0 \x99\xDE |0 \x99\xDF |0 \x99\xE0 |0 \x99\xE1 |0 \x99\xE2 |0 \x99\xE3 |0 \x99\xE4 |0 \x99\xE5 |0 \x99\xE6 |0 \x99\xE7 |0 \x99\xE8 |0 \x99\xE9 |0 \x99\xEA |0 \x99\xEB |0 \x99\xEC |0 \x99\xED |0 \x99\xEE |0 \x99\xEF |0 \x99\xF0 |0 \x99\xF1 |0 \x99\xF2 |0 \x99\xF3 |0 \x99\xF4 |0 \x99\xF5 |0 \xC7\xB7 |0 \xB4\xCE |0 \xBB\xB6 |0 \xD0\xC0 |0 \xEC\xA3 |0 \x99\xF6 |0 \x99\xF7 |0 \xC5\xB7 |0 \x99\xF8 |0 \x99\xF9 |0 \x99\xFA |0 \x99\xFB |0 \x99\xFC |0 \x99\xFD |0 \x99\xFE |0 \x9A\x40 |0 \x9A\x41 |0 \x9A\x42 |0 \xD3\xFB |0 \x9A\x43 |0 \x9A\x44 |0 \x9A\x45 |0 \x9A\x46 |0 \xEC\xA4 |0 \x9A\x47 |0 \xEC\xA5 |0 \xC6\xDB |0 \x9A\x48 |0 \x9A\x49 |0 \x9A\x4A |0 \xBF\xEE |0 \x9A\x4B |0 \x9A\x4C |0 \x9A\x4D |0 \x9A\x4E |0 \xEC\xA6 |0 \x9A\x4F |0 \x9A\x50 |0 \xEC\xA7 |0 \xD0\xAA |0 \x9A\x51 |0 \xC7\xB8 |0 \x9A\x52 |0 \x9A\x53 |0 \xB8\xE8 |0 \x9A\x54 |0 \x9A\x55 |0 \x9A\x56 |0 \x9A\x57 |0 \x9A\x58 |0 \x9A\x59 |0 \x9A\x5A |0 \x9A\x5B |0 \x9A\x5C |0 \x9A\x5D |0 \x9A\x5E |0 \x9A\x5F |0 \xEC\xA8 |0 \x9A\x60 |0 \x9A\x61 |0 \x9A\x62 |0 \x9A\x63 |0 \x9A\x64 |0 \x9A\x65 |0 \x9A\x66 |0 \x9A\x67 |0 \xD6\xB9 |0 \xD5\xFD |0 \xB4\xCB |0 \xB2\xBD |0 \xCE\xE4 |0 \xC6\xE7 |0 \x9A\x68 |0 \x9A\x69 |0 \xCD\xE1 |0 \x9A\x6A |0 \x9A\x6B |0 \x9A\x6C |0 \x9A\x6D |0 \x9A\x6E |0 \x9A\x6F |0 \x9A\x70 |0 \x9A\x71 |0 \x9A\x72 |0 \x9A\x73 |0 \x9A\x74 |0 \x9A\x75 |0 \x9A\x76 |0 \x9A\x77 |0 \xB4\xF5 |0 \x9A\x78 |0 \xCB\xC0 |0 \xBC\xDF |0 \x9A\x79 |0 \x9A\x7A |0 \x9A\x7B |0 \x9A\x7C |0 \xE9\xE2 |0 \xE9\xE3 |0 \xD1\xEA |0 \xE9\xE5 |0 \x9A\x7D |0 \xB4\xF9 |0 \xE9\xE4 |0 \x9A\x7E |0 \xD1\xB3 |0 \xCA\xE2 |0 \xB2\xD0 |0 \x9A\x80 |0 \xE9\xE8 |0 \x9A\x81 |0 \x9A\x82 |0 \x9A\x83 |0 \x9A\x84 |0 \xE9\xE6 |0 \xE9\xE7 |0 \x9A\x85 |0 \x9A\x86 |0 \xD6\xB3 |0 \x9A\x87 |0 \x9A\x88 |0 \x9A\x89 |0 \xE9\xE9 |0 \xE9\xEA |0 \x9A\x8A |0 \x9A\x8B |0 \x9A\x8C |0 \x9A\x8D |0 \x9A\x8E |0 \xE9\xEB |0 \x9A\x8F |0 \x9A\x90 |0 \x9A\x91 |0 \x9A\x92 |0 \x9A\x93 |0 \x9A\x94 |0 \x9A\x95 |0 \x9A\x96 |0 \xE9\xEC |0 \x9A\x97 |0 \x9A\x98 |0 \x9A\x99 |0 \x9A\x9A |0 \x9A\x9B |0 \x9A\x9C |0 \x9A\x9D |0 \x9A\x9E |0 \xEC\xAF |0 \xC5\xB9 |0 \xB6\xCE |0 \x9A\x9F |0 \xD2\xF3 |0 \x9A\xA0 |0 \x9A\xA1 |0 \x9A\xA2 |0 \x9A\xA3 |0 \x9A\xA4 |0 \x9A\xA5 |0 \x9A\xA6 |0 \xB5\xEE |0 \x9A\xA7 |0 \xBB\xD9 |0 \xEC\xB1 |0 \x9A\xA8 |0 \x9A\xA9 |0 \xD2\xE3 |0 \x9A\xAA |0 \x9A\xAB |0 \x9A\xAC |0 \x9A\xAD |0 \x9A\xAE |0 \xCE\xE3 |0 \x9A\xAF |0 \xC4\xB8 |0 \x9A\xB0 |0 \xC3\xBF |0 \x9A\xB1 |0 \x9A\xB2 |0 \xB6\xBE |0 \xD8\xB9 |0 \xB1\xC8 |0 \xB1\xCF |0 \xB1\xD1 |0 \xC5\xFE |0 \x9A\xB3 |0 \xB1\xD0 |0 \x9A\xB4 |0 \xC3\xAB |0 \x9A\xB5 |0 \x9A\xB6 |0 \x9A\xB7 |0 \x9A\xB8 |0 \x9A\xB9 |0 \xD5\xB1 |0 \x9A\xBA |0 \x9A\xBB |0 \x9A\xBC |0 \x9A\xBD |0 \x9A\xBE |0 \x9A\xBF |0 \x9A\xC0 |0 \x9A\xC1 |0 \xEB\xA4 |0 \xBA\xC1 |0 \x9A\xC2 |0 \x9A\xC3 |0 \x9A\xC4 |0 \xCC\xBA |0 \x9A\xC5 |0 \x9A\xC6 |0 \x9A\xC7 |0 \xEB\xA5 |0 \x9A\xC8 |0 \xEB\xA7 |0 \x9A\xC9 |0 \x9A\xCA |0 \x9A\xCB |0 \xEB\xA8 |0 \x9A\xCC |0 \x9A\xCD |0 \x9A\xCE |0 \xEB\xA6 |0 \x9A\xCF |0 \x9A\xD0 |0 \x9A\xD1 |0 \x9A\xD2 |0 \x9A\xD3 |0 \x9A\xD4 |0 \x9A\xD5 |0 \xEB\xA9 |0 \xEB\xAB |0 \xEB\xAA |0 \x9A\xD6 |0 \x9A\xD7 |0 \x9A\xD8 |0 \x9A\xD9 |0 \x9A\xDA |0 \xEB\xAC |0 \x9A\xDB |0 \xCA\xCF |0 \xD8\xB5 |0 \xC3\xF1 |0 \x9A\xDC |0 \xC3\xA5 |0 \xC6\xF8 |0 \xEB\xAD |0 \xC4\xCA |0 \x9A\xDD |0 \xEB\xAE |0 \xEB\xAF |0 \xEB\xB0 |0 \xB7\xD5 |0 \x9A\xDE |0 \x9A\xDF |0 \x9A\xE0 |0 \xB7\xFA |0 \x9A\xE1 |0 \xEB\xB1 |0 \xC7\xE2 |0 \x9A\xE2 |0 \xEB\xB3 |0 \x9A\xE3 |0 \xBA\xA4 |0 \xD1\xF5 |0 \xB0\xB1 |0 \xEB\xB2 |0 \xEB\xB4 |0 \x9A\xE4 |0 \x9A\xE5 |0 \x9A\xE6 |0 \xB5\xAA |0 \xC2\xC8 |0 \xC7\xE8 |0 \x9A\xE7 |0 \xEB\xB5 |0 \x9A\xE8 |0 \xCB\xAE |0 \xE3\xDF |0 \x9A\xE9 |0 \x9A\xEA |0 \xD3\xC0 |0 \x9A\xEB |0 \x9A\xEC |0 \x9A\xED |0 \x9A\xEE |0 \xD9\xDB |0 \x9A\xEF |0 \x9A\xF0 |0 \xCD\xA1 |0 \xD6\xAD |0 \xC7\xF3 |0 \x9A\xF1 |0 \x9A\xF2 |0 \x9A\xF3 |0 \xD9\xE0 |0 \xBB\xE3 |0 \x9A\xF4 |0 \xBA\xBA |0 \xE3\xE2 |0 \x9A\xF5 |0 \x9A\xF6 |0 \x9A\xF7 |0 \x9A\xF8 |0 \x9A\xF9 |0 \xCF\xAB |0 \x9A\xFA |0 \x9A\xFB |0 \x9A\xFC |0 \xE3\xE0 |0 \xC9\xC7 |0 \x9A\xFD |0 \xBA\xB9 |0 \x9A\xFE |0 \x9B\x40 |0 \x9B\x41 |0 \xD1\xB4 |0 \xE3\xE1 |0 \xC8\xEA |0 \xB9\xAF |0 \xBD\xAD |0 \xB3\xD8 |0 \xCE\xDB |0 \x9B\x42 |0 \x9B\x43 |0 \xCC\xC0 |0 \x9B\x44 |0 \x9B\x45 |0 \x9B\x46 |0 \xE3\xE8 |0 \xE3\xE9 |0 \xCD\xF4 |0 \x9B\x47 |0 \x9B\x48 |0 \x9B\x49 |0 \x9B\x4A |0 \x9B\x4B |0 \xCC\xAD |0 \x9B\x4C |0 \xBC\xB3 |0 \x9B\x4D |0 \xE3\xEA |0 \x9B\x4E |0 \xE3\xEB |0 \x9B\x4F |0 \x9B\x50 |0 \xD0\xDA |0 \x9B\x51 |0 \x9B\x52 |0 \x9B\x53 |0 \xC6\xFB |0 \xB7\xDA |0 \x9B\x54 |0 \x9B\x55 |0 \xC7\xDF |0 \xD2\xCA |0 \xCE\xD6 |0 \x9B\x56 |0 \xE3\xE4 |0 \xE3\xEC |0 \x9B\x57 |0 \xC9\xF2 |0 \xB3\xC1 |0 \x9B\x58 |0 \x9B\x59 |0 \xE3\xE7 |0 \x9B\x5A |0 \x9B\x5B |0 \xC6\xE3 |0 \xE3\xE5 |0 \x9B\x5C |0 \x9B\x5D |0 \xED\xB3 |0 \xE3\xE6 |0 \x9B\x5E |0 \x9B\x5F |0 \x9B\x60 |0 \x9B\x61 |0 \xC9\xB3 |0 \x9B\x62 |0 \xC5\xE6 |0 \x9B\x63 |0 \x9B\x64 |0 \x9B\x65 |0 \xB9\xB5 |0 \x9B\x66 |0 \xC3\xBB |0 \x9B\x67 |0 \xE3\xE3 |0 \xC5\xBD |0 \xC1\xA4 |0 \xC2\xD9 |0 \xB2\xD7 |0 \x9B\x68 |0 \xE3\xED |0 \xBB\xA6 |0 \xC4\xAD |0 \x9B\x69 |0 \xE3\xF0 |0 \xBE\xDA |0 \x9B\x6A |0 \x9B\x6B |0 \xE3\xFB |0 \xE3\xF5 |0 \xBA\xD3 |0 \x9B\x6C |0 \x9B\x6D |0 \x9B\x6E |0 \x9B\x6F |0 \xB7\xD0 |0 \xD3\xCD |0 \x9B\x70 |0 \xD6\xCE |0 \xD5\xD3 |0 \xB9\xC1 |0 \xD5\xB4 |0 \xD1\xD8 |0 \x9B\x71 |0 \x9B\x72 |0 \x9B\x73 |0 \x9B\x74 |0 \xD0\xB9 |0 \xC7\xF6 |0 \x9B\x75 |0 \x9B\x76 |0 \x9B\x77 |0 \xC8\xAA |0 \xB2\xB4 |0 \x9B\x78 |0 \xC3\xDA |0 \x9B\x79 |0 \x9B\x7A |0 \x9B\x7B |0 \xE3\xEE |0 \x9B\x7C |0 \x9B\x7D |0 \xE3\xFC |0 \xE3\xEF |0 \xB7\xA8 |0 \xE3\xF7 |0 \xE3\xF4 |0 \x9B\x7E |0 \x9B\x80 |0 \x9B\x81 |0 \xB7\xBA |0 \x9B\x82 |0 \x9B\x83 |0 \xC5\xA2 |0 \x9B\x84 |0 \xE3\xF6 |0 \xC5\xDD |0 \xB2\xA8 |0 \xC6\xFC |0 \x9B\x85 |0 \xC4\xE0 |0 \x9B\x86 |0 \x9B\x87 |0 \xD7\xA2 |0 \x9B\x88 |0 \xC0\xE1 |0 \xE3\xF9 |0 \x9B\x89 |0 \x9B\x8A |0 \xE3\xFA |0 \xE3\xFD |0 \xCC\xA9 |0 \xE3\xF3 |0 \x9B\x8B |0 \xD3\xBE |0 \x9B\x8C |0 \xB1\xC3 |0 \xED\xB4 |0 \xE3\xF1 |0 \xE3\xF2 |0 \x9B\x8D |0 \xE3\xF8 |0 \xD0\xBA |0 \xC6\xC3 |0 \xD4\xF3 |0 \xE3\xFE |0 \x9B\x8E |0 \x9B\x8F |0 \xBD\xE0 |0 \x9B\x90 |0 \x9B\x91 |0 \xE4\xA7 |0 \x9B\x92 |0 \x9B\x93 |0 \xE4\xA6 |0 \x9B\x94 |0 \x9B\x95 |0 \x9B\x96 |0 \xD1\xF3 |0 \xE4\xA3 |0 \x9B\x97 |0 \xE4\xA9 |0 \x9B\x98 |0 \x9B\x99 |0 \x9B\x9A |0 \xC8\xF7 |0 \x9B\x9B |0 \x9B\x9C |0 \x9B\x9D |0 \x9B\x9E |0 \xCF\xB4 |0 \x9B\x9F |0 \xE4\xA8 |0 \xE4\xAE |0 \xC2\xE5 |0 \x9B\xA0 |0 \x9B\xA1 |0 \xB6\xB4 |0 \x9B\xA2 |0 \x9B\xA3 |0 \x9B\xA4 |0 \x9B\xA5 |0 \x9B\xA6 |0 \x9B\xA7 |0 \xBD\xF2 |0 \x9B\xA8 |0 \xE4\xA2 |0 \x9B\xA9 |0 \x9B\xAA |0 \xBA\xE9 |0 \xE4\xAA |0 \x9B\xAB |0 \x9B\xAC |0 \xE4\xAC |0 \x9B\xAD |0 \x9B\xAE |0 \xB6\xFD |0 \xD6\xDE |0 \xE4\xB2 |0 \x9B\xAF |0 \xE4\xAD |0 \x9B\xB0 |0 \x9B\xB1 |0 \x9B\xB2 |0 \xE4\xA1 |0 \x9B\xB3 |0 \xBB\xEE |0 \xCD\xDD |0 \xC7\xA2 |0 \xC5\xC9 |0 \x9B\xB4 |0 \x9B\xB5 |0 \xC1\xF7 |0 \x9B\xB6 |0 \xE4\xA4 |0 \x9B\xB7 |0 \xC7\xB3 |0 \xBD\xAC |0 \xBD\xBD |0 \xE4\xA5 |0 \x9B\xB8 |0 \xD7\xC7 |0 \xB2\xE2 |0 \x9B\xB9 |0 \xE4\xAB |0 \xBC\xC3 |0 \xE4\xAF |0 \x9B\xBA |0 \xBB\xEB |0 \xE4\xB0 |0 \xC5\xA8 |0 \xE4\xB1 |0 \x9B\xBB |0 \x9B\xBC |0 \x9B\xBD |0 \x9B\xBE |0 \xD5\xE3 |0 \xBF\xA3 |0 \x9B\xBF |0 \xE4\xBA |0 \x9B\xC0 |0 \xE4\xB7 |0 \x9B\xC1 |0 \xE4\xBB |0 \x9B\xC2 |0 \x9B\xC3 |0 \xE4\xBD |0 \x9B\xC4 |0 \x9B\xC5 |0 \xC6\xD6 |0 \x9B\xC6 |0 \x9B\xC7 |0 \xBA\xC6 |0 \xC0\xCB |0 \x9B\xC8 |0 \x9B\xC9 |0 \x9B\xCA |0 \xB8\xA1 |0 \xE4\xB4 |0 \x9B\xCB |0 \x9B\xCC |0 \x9B\xCD |0 \x9B\xCE |0 \xD4\xA1 |0 \x9B\xCF |0 \x9B\xD0 |0 \xBA\xA3 |0 \xBD\xFE |0 \x9B\xD1 |0 \x9B\xD2 |0 \x9B\xD3 |0 \xE4\xBC |0 \x9B\xD4 |0 \x9B\xD5 |0 \x9B\xD6 |0 \x9B\xD7 |0 \x9B\xD8 |0 \xCD\xBF |0 \x9B\xD9 |0 \x9B\xDA |0 \xC4\xF9 |0 \x9B\xDB |0 \x9B\xDC |0 \xCF\xFB |0 \xC9\xE6 |0 \x9B\xDD |0 \x9B\xDE |0 \xD3\xBF |0 \x9B\xDF |0 \xCF\xD1 |0 \x9B\xE0 |0 \x9B\xE1 |0 \xE4\xB3 |0 \x9B\xE2 |0 \xE4\xB8 |0 \xE4\xB9 |0 \xCC\xE9 |0 \x9B\xE3 |0 \x9B\xE4 |0 \x9B\xE5 |0 \x9B\xE6 |0 \x9B\xE7 |0 \xCC\xCE |0 \x9B\xE8 |0 \xC0\xD4 |0 \xE4\xB5 |0 \xC1\xB0 |0 \xE4\xB6 |0 \xCE\xD0 |0 \x9B\xE9 |0 \xBB\xC1 |0 \xB5\xD3 |0 \x9B\xEA |0 \xC8\xF3 |0 \xBD\xA7 |0 \xD5\xC7 |0 \xC9\xAC |0 \xB8\xA2 |0 \xE4\xCA |0 \x9B\xEB |0 \x9B\xEC |0 \xE4\xCC |0 \xD1\xC4 |0 \x9B\xED |0 \x9B\xEE |0 \xD2\xBA |0 \x9B\xEF |0 \x9B\xF0 |0 \xBA\xAD |0 \x9B\xF1 |0 \x9B\xF2 |0 \xBA\xD4 |0 \x9B\xF3 |0 \x9B\xF4 |0 \x9B\xF5 |0 \x9B\xF6 |0 \x9B\xF7 |0 \x9B\xF8 |0 \xE4\xC3 |0 \xB5\xED |0 \x9B\xF9 |0 \x9B\xFA |0 \x9B\xFB |0 \xD7\xCD |0 \xE4\xC0 |0 \xCF\xFD |0 \xE4\xBF |0 \x9B\xFC |0 \x9B\xFD |0 \x9B\xFE |0 \xC1\xDC |0 \xCC\xCA |0 \x9C\x40 |0 \x9C\x41 |0 \x9C\x42 |0 \x9C\x43 |0 \xCA\xE7 |0 \x9C\x44 |0 \x9C\x45 |0 \x9C\x46 |0 \x9C\x47 |0 \xC4\xD7 |0 \x9C\x48 |0 \xCC\xD4 |0 \xE4\xC8 |0 \x9C\x49 |0 \x9C\x4A |0 \x9C\x4B |0 \xE4\xC7 |0 \xE4\xC1 |0 \x9C\x4C |0 \xE4\xC4 |0 \xB5\xAD |0 \x9C\x4D |0 \x9C\x4E |0 \xD3\xD9 |0 \x9C\x4F |0 \xE4\xC6 |0 \x9C\x50 |0 \x9C\x51 |0 \x9C\x52 |0 \x9C\x53 |0 \xD2\xF9 |0 \xB4\xE3 |0 \x9C\x54 |0 \xBB\xB4 |0 \x9C\x55 |0 \x9C\x56 |0 \xC9\xEE |0 \x9C\x57 |0 \xB4\xBE |0 \x9C\x58 |0 \x9C\x59 |0 \x9C\x5A |0 \xBB\xEC |0 \x9C\x5B |0 \xD1\xCD |0 \x9C\x5C |0 \xCC\xED |0 \xED\xB5 |0 \x9C\x5D |0 \x9C\x5E |0 \x9C\x5F |0 \x9C\x60 |0 \x9C\x61 |0 \x9C\x62 |0 \x9C\x63 |0 \x9C\x64 |0 \xC7\xE5 |0 \x9C\x65 |0 \x9C\x66 |0 \x9C\x67 |0 \x9C\x68 |0 \xD4\xA8 |0 \x9C\x69 |0 \xE4\xCB |0 \xD7\xD5 |0 \xE4\xC2 |0 \x9C\x6A |0 \xBD\xA5 |0 \xE4\xC5 |0 \x9C\x6B |0 \x9C\x6C |0 \xD3\xE6 |0 \x9C\x6D |0 \xE4\xC9 |0 \xC9\xF8 |0 \x9C\x6E |0 \x9C\x6F |0 \xE4\xBE |0 \x9C\x70 |0 \x9C\x71 |0 \xD3\xE5 |0 \x9C\x72 |0 \x9C\x73 |0 \xC7\xFE |0 \xB6\xC9 |0 \x9C\x74 |0 \xD4\xFC |0 \xB2\xB3 |0 \xE4\xD7 |0 \x9C\x75 |0 \x9C\x76 |0 \x9C\x77 |0 \xCE\xC2 |0 \x9C\x78 |0 \xE4\xCD |0 \x9C\x79 |0 \xCE\xBC |0 \x9C\x7A |0 \xB8\xDB |0 \x9C\x7B |0 \x9C\x7C |0 \xE4\xD6 |0 \x9C\x7D |0 \xBF\xCA |0 \x9C\x7E |0 \x9C\x80 |0 \x9C\x81 |0 \xD3\xCE |0 \x9C\x82 |0 \xC3\xEC |0 \x9C\x83 |0 \x9C\x84 |0 \x9C\x85 |0 \x9C\x86 |0 \x9C\x87 |0 \x9C\x88 |0 \x9C\x89 |0 \x9C\x8A |0 \xC5\xC8 |0 \xE4\xD8 |0 \x9C\x8B |0 \x9C\x8C |0 \x9C\x8D |0 \x9C\x8E |0 \x9C\x8F |0 \x9C\x90 |0 \x9C\x91 |0 \x9C\x92 |0 \xCD\xC4 |0 \xE4\xCF |0 \x9C\x93 |0 \x9C\x94 |0 \x9C\x95 |0 \x9C\x96 |0 \xE4\xD4 |0 \xE4\xD5 |0 \x9C\x97 |0 \xBA\xFE |0 \x9C\x98 |0 \xCF\xE6 |0 \x9C\x99 |0 \x9C\x9A |0 \xD5\xBF |0 \x9C\x9B |0 \x9C\x9C |0 \x9C\x9D |0 \xE4\xD2 |0 \x9C\x9E |0 \x9C\x9F |0 \x9C\xA0 |0 \x9C\xA1 |0 \x9C\xA2 |0 \x9C\xA3 |0 \x9C\xA4 |0 \x9C\xA5 |0 \x9C\xA6 |0 \x9C\xA7 |0 \x9C\xA8 |0 \xE4\xD0 |0 \x9C\xA9 |0 \x9C\xAA |0 \xE4\xCE |0 \x9C\xAB |0 \x9C\xAC |0 \x9C\xAD |0 \x9C\xAE |0 \x9C\xAF |0 \x9C\xB0 |0 \x9C\xB1 |0 \x9C\xB2 |0 \x9C\xB3 |0 \x9C\xB4 |0 \x9C\xB5 |0 \x9C\xB6 |0 \x9C\xB7 |0 \x9C\xB8 |0 \x9C\xB9 |0 \xCD\xE5 |0 \xCA\xAA |0 \x9C\xBA |0 \x9C\xBB |0 \x9C\xBC |0 \xC0\xA3 |0 \x9C\xBD |0 \xBD\xA6 |0 \xE4\xD3 |0 \x9C\xBE |0 \x9C\xBF |0 \xB8\xC8 |0 \x9C\xC0 |0 \x9C\xC1 |0 \x9C\xC2 |0 \x9C\xC3 |0 \x9C\xC4 |0 \xE4\xE7 |0 \xD4\xB4 |0 \x9C\xC5 |0 \x9C\xC6 |0 \x9C\xC7 |0 \x9C\xC8 |0 \x9C\xC9 |0 \x9C\xCA |0 \x9C\xCB |0 \xE4\xDB |0 \x9C\xCC |0 \x9C\xCD |0 \x9C\xCE |0 \xC1\xEF |0 \x9C\xCF |0 \x9C\xD0 |0 \xE4\xE9 |0 \x9C\xD1 |0 \x9C\xD2 |0 \xD2\xE7 |0 \x9C\xD3 |0 \x9C\xD4 |0 \xE4\xDF |0 \x9C\xD5 |0 \xE4\xE0 |0 \x9C\xD6 |0 \x9C\xD7 |0 \xCF\xAA |0 \x9C\xD8 |0 \x9C\xD9 |0 \x9C\xDA |0 \x9C\xDB |0 \xCB\xDD |0 \x9C\xDC |0 \xE4\xDA |0 \xE4\xD1 |0 \x9C\xDD |0 \xE4\xE5 |0 \x9C\xDE |0 \xC8\xDC |0 \xE4\xE3 |0 \x9C\xDF |0 \x9C\xE0 |0 \xC4\xE7 |0 \xE4\xE2 |0 \x9C\xE1 |0 \xE4\xE1 |0 \x9C\xE2 |0 \x9C\xE3 |0 \x9C\xE4 |0 \xB3\xFC |0 \xE4\xE8 |0 \x9C\xE5 |0 \x9C\xE6 |0 \x9C\xE7 |0 \x9C\xE8 |0 \xB5\xE1 |0 \x9C\xE9 |0 \x9C\xEA |0 \x9C\xEB |0 \xD7\xCC |0 \x9C\xEC |0 \x9C\xED |0 \x9C\xEE |0 \xE4\xE6 |0 \x9C\xEF |0 \xBB\xAC |0 \x9C\xF0 |0 \xD7\xD2 |0 \xCC\xCF |0 \xEB\xF8 |0 \x9C\xF1 |0 \xE4\xE4 |0 \x9C\xF2 |0 \x9C\xF3 |0 \xB9\xF6 |0 \x9C\xF4 |0 \x9C\xF5 |0 \x9C\xF6 |0 \xD6\xCD |0 \xE4\xD9 |0 \xE4\xDC |0 \xC2\xFA |0 \xE4\xDE |0 \x9C\xF7 |0 \xC2\xCB |0 \xC0\xC4 |0 \xC2\xD0 |0 \x9C\xF8 |0 \xB1\xF5 |0 \xCC\xB2 |0 \x9C\xF9 |0 \x9C\xFA |0 \x9C\xFB |0 \x9C\xFC |0 \x9C\xFD |0 \x9C\xFE |0 \x9D\x40 |0 \x9D\x41 |0 \x9D\x42 |0 \x9D\x43 |0 \xB5\xCE |0 \x9D\x44 |0 \x9D\x45 |0 \x9D\x46 |0 \x9D\x47 |0 \xE4\xEF |0 \x9D\x48 |0 \x9D\x49 |0 \x9D\x4A |0 \x9D\x4B |0 \x9D\x4C |0 \x9D\x4D |0 \x9D\x4E |0 \x9D\x4F |0 \xC6\xAF |0 \x9D\x50 |0 \x9D\x51 |0 \x9D\x52 |0 \xC6\xE1 |0 \x9D\x53 |0 \x9D\x54 |0 \xE4\xF5 |0 \x9D\x55 |0 \x9D\x56 |0 \x9D\x57 |0 \x9D\x58 |0 \x9D\x59 |0 \xC2\xA9 |0 \x9D\x5A |0 \x9D\x5B |0 \x9D\x5C |0 \xC0\xEC |0 \xD1\xDD |0 \xE4\xEE |0 \x9D\x5D |0 \x9D\x5E |0 \x9D\x5F |0 \x9D\x60 |0 \x9D\x61 |0 \x9D\x62 |0 \x9D\x63 |0 \x9D\x64 |0 \x9D\x65 |0 \x9D\x66 |0 \xC4\xAE |0 \x9D\x67 |0 \x9D\x68 |0 \x9D\x69 |0 \xE4\xED |0 \x9D\x6A |0 \x9D\x6B |0 \x9D\x6C |0 \x9D\x6D |0 \xE4\xF6 |0 \xE4\xF4 |0 \xC2\xFE |0 \x9D\x6E |0 \xE4\xDD |0 \x9D\x6F |0 \xE4\xF0 |0 \x9D\x70 |0 \xCA\xFE |0 \x9D\x71 |0 \xD5\xC4 |0 \x9D\x72 |0 \x9D\x73 |0 \xE4\xF1 |0 \x9D\x74 |0 \x9D\x75 |0 \x9D\x76 |0 \x9D\x77 |0 \x9D\x78 |0 \x9D\x79 |0 \x9D\x7A |0 \xD1\xFA |0 \x9D\x7B |0 \x9D\x7C |0 \x9D\x7D |0 \x9D\x7E |0 \x9D\x80 |0 \x9D\x81 |0 \x9D\x82 |0 \xE4\xEB |0 \xE4\xEC |0 \x9D\x83 |0 \x9D\x84 |0 \x9D\x85 |0 \xE4\xF2 |0 \x9D\x86 |0 \xCE\xAB |0 \x9D\x87 |0 \x9D\x88 |0 \x9D\x89 |0 \x9D\x8A |0 \x9D\x8B |0 \x9D\x8C |0 \x9D\x8D |0 \x9D\x8E |0 \x9D\x8F |0 \x9D\x90 |0 \xC5\xCB |0 \x9D\x91 |0 \x9D\x92 |0 \x9D\x93 |0 \xC7\xB1 |0 \x9D\x94 |0 \xC2\xBA |0 \x9D\x95 |0 \x9D\x96 |0 \x9D\x97 |0 \xE4\xEA |0 \x9D\x98 |0 \x9D\x99 |0 \x9D\x9A |0 \xC1\xCA |0 \x9D\x9B |0 \x9D\x9C |0 \x9D\x9D |0 \x9D\x9E |0 \x9D\x9F |0 \x9D\xA0 |0 \xCC\xB6 |0 \xB3\xB1 |0 \x9D\xA1 |0 \x9D\xA2 |0 \x9D\xA3 |0 \xE4\xFB |0 \x9D\xA4 |0 \xE4\xF3 |0 \x9D\xA5 |0 \x9D\xA6 |0 \x9D\xA7 |0 \xE4\xFA |0 \x9D\xA8 |0 \xE4\xFD |0 \x9D\xA9 |0 \xE4\xFC |0 \x9D\xAA |0 \x9D\xAB |0 \x9D\xAC |0 \x9D\xAD |0 \x9D\xAE |0 \x9D\xAF |0 \x9D\xB0 |0 \xB3\xCE |0 \x9D\xB1 |0 \x9D\xB2 |0 \x9D\xB3 |0 \xB3\xBA |0 \xE4\xF7 |0 \x9D\xB4 |0 \x9D\xB5 |0 \xE4\xF9 |0 \xE4\xF8 |0 \xC5\xEC |0 \x9D\xB6 |0 \x9D\xB7 |0 \x9D\xB8 |0 \x9D\xB9 |0 \x9D\xBA |0 \x9D\xBB |0 \x9D\xBC |0 \x9D\xBD |0 \x9D\xBE |0 \x9D\xBF |0 \x9D\xC0 |0 \x9D\xC1 |0 \x9D\xC2 |0 \xC0\xBD |0 \x9D\xC3 |0 \x9D\xC4 |0 \x9D\xC5 |0 \x9D\xC6 |0 \xD4\xE8 |0 \x9D\xC7 |0 \x9D\xC8 |0 \x9D\xC9 |0 \x9D\xCA |0 \x9D\xCB |0 \xE5\xA2 |0 \x9D\xCC |0 \x9D\xCD |0 \x9D\xCE |0 \x9D\xCF |0 \x9D\xD0 |0 \x9D\xD1 |0 \x9D\xD2 |0 \x9D\xD3 |0 \x9D\xD4 |0 \x9D\xD5 |0 \x9D\xD6 |0 \xB0\xC4 |0 \x9D\xD7 |0 \x9D\xD8 |0 \xE5\xA4 |0 \x9D\xD9 |0 \x9D\xDA |0 \xE5\xA3 |0 \x9D\xDB |0 \x9D\xDC |0 \x9D\xDD |0 \x9D\xDE |0 \x9D\xDF |0 \x9D\xE0 |0 \xBC\xA4 |0 \x9D\xE1 |0 \xE5\xA5 |0 \x9D\xE2 |0 \x9D\xE3 |0 \x9D\xE4 |0 \x9D\xE5 |0 \x9D\xE6 |0 \x9D\xE7 |0 \xE5\xA1 |0 \x9D\xE8 |0 \x9D\xE9 |0 \x9D\xEA |0 \x9D\xEB |0 \x9D\xEC |0 \x9D\xED |0 \x9D\xEE |0 \xE4\xFE |0 \xB1\xF4 |0 \x9D\xEF |0 \x9D\xF0 |0 \x9D\xF1 |0 \x9D\xF2 |0 \x9D\xF3 |0 \x9D\xF4 |0 \x9D\xF5 |0 \x9D\xF6 |0 \x9D\xF7 |0 \x9D\xF8 |0 \x9D\xF9 |0 \xE5\xA8 |0 \x9D\xFA |0 \xE5\xA9 |0 \xE5\xA6 |0 \x9D\xFB |0 \x9D\xFC |0 \x9D\xFD |0 \x9D\xFE |0 \x9E\x40 |0 \x9E\x41 |0 \x9E\x42 |0 \x9E\x43 |0 \x9E\x44 |0 \x9E\x45 |0 \x9E\x46 |0 \x9E\x47 |0 \xE5\xA7 |0 \xE5\xAA |0 \x9E\x48 |0 \x9E\x49 |0 \x9E\x4A |0 \x9E\x4B |0 \x9E\x4C |0 \x9E\x4D |0 \x9E\x4E |0 \x9E\x4F |0 \x9E\x50 |0 \x9E\x51 |0 \x9E\x52 |0 \x9E\x53 |0 \x9E\x54 |0 \x9E\x55 |0 \x9E\x56 |0 \x9E\x57 |0 \x9E\x58 |0 \x9E\x59 |0 \x9E\x5A |0 \x9E\x5B |0 \x9E\x5C |0 \x9E\x5D |0 \x9E\x5E |0 \x9E\x5F |0 \x9E\x60 |0 \x9E\x61 |0 \x9E\x62 |0 \x9E\x63 |0 \x9E\x64 |0 \x9E\x65 |0 \x9E\x66 |0 \x9E\x67 |0 \x9E\x68 |0 \xC6\xD9 |0 \x9E\x69 |0 \x9E\x6A |0 \x9E\x6B |0 \x9E\x6C |0 \x9E\x6D |0 \x9E\x6E |0 \x9E\x6F |0 \x9E\x70 |0 \xE5\xAB |0 \xE5\xAD |0 \x9E\x71 |0 \x9E\x72 |0 \x9E\x73 |0 \x9E\x74 |0 \x9E\x75 |0 \x9E\x76 |0 \x9E\x77 |0 \xE5\xAC |0 \x9E\x78 |0 \x9E\x79 |0 \x9E\x7A |0 \x9E\x7B |0 \x9E\x7C |0 \x9E\x7D |0 \x9E\x7E |0 \x9E\x80 |0 \x9E\x81 |0 \x9E\x82 |0 \x9E\x83 |0 \x9E\x84 |0 \x9E\x85 |0 \x9E\x86 |0 \x9E\x87 |0 \x9E\x88 |0 \x9E\x89 |0 \xE5\xAF |0 \x9E\x8A |0 \x9E\x8B |0 \x9E\x8C |0 \xE5\xAE |0 \x9E\x8D |0 \x9E\x8E |0 \x9E\x8F |0 \x9E\x90 |0 \x9E\x91 |0 \x9E\x92 |0 \x9E\x93 |0 \x9E\x94 |0 \x9E\x95 |0 \x9E\x96 |0 \x9E\x97 |0 \x9E\x98 |0 \x9E\x99 |0 \x9E\x9A |0 \x9E\x9B |0 \x9E\x9C |0 \x9E\x9D |0 \x9E\x9E |0 \xB9\xE0 |0 \x9E\x9F |0 \x9E\xA0 |0 \xE5\xB0 |0 \x9E\xA1 |0 \x9E\xA2 |0 \x9E\xA3 |0 \x9E\xA4 |0 \x9E\xA5 |0 \x9E\xA6 |0 \x9E\xA7 |0 \x9E\xA8 |0 \x9E\xA9 |0 \x9E\xAA |0 \x9E\xAB |0 \x9E\xAC |0 \x9E\xAD |0 \x9E\xAE |0 \xE5\xB1 |0 \x9E\xAF |0 \x9E\xB0 |0 \x9E\xB1 |0 \x9E\xB2 |0 \x9E\xB3 |0 \x9E\xB4 |0 \x9E\xB5 |0 \x9E\xB6 |0 \x9E\xB7 |0 \x9E\xB8 |0 \x9E\xB9 |0 \x9E\xBA |0 \xBB\xF0 |0 \xEC\xE1 |0 \xC3\xF0 |0 \x9E\xBB |0 \xB5\xC6 |0 \xBB\xD2 |0 \x9E\xBC |0 \x9E\xBD |0 \x9E\xBE |0 \x9E\xBF |0 \xC1\xE9 |0 \xD4\xEE |0 \x9E\xC0 |0 \xBE\xC4 |0 \x9E\xC1 |0 \x9E\xC2 |0 \x9E\xC3 |0 \xD7\xC6 |0 \x9E\xC4 |0 \xD4\xD6 |0 \xB2\xD3 |0 \xEC\xBE |0 \x9E\xC5 |0 \x9E\xC6 |0 \x9E\xC7 |0 \x9E\xC8 |0 \xEA\xC1 |0 \x9E\xC9 |0 \x9E\xCA |0 \x9E\xCB |0 \xC2\xAF |0 \xB4\xB6 |0 \x9E\xCC |0 \x9E\xCD |0 \x9E\xCE |0 \xD1\xD7 |0 \x9E\xCF |0 \x9E\xD0 |0 \x9E\xD1 |0 \xB3\xB4 |0 \x9E\xD2 |0 \xC8\xB2 |0 \xBF\xBB |0 \xEC\xC0 |0 \x9E\xD3 |0 \x9E\xD4 |0 \xD6\xCB |0 \x9E\xD5 |0 \x9E\xD6 |0 \xEC\xBF |0 \xEC\xC1 |0 \x9E\xD7 |0 \x9E\xD8 |0 \x9E\xD9 |0 \x9E\xDA |0 \x9E\xDB |0 \x9E\xDC |0 \x9E\xDD |0 \x9E\xDE |0 \x9E\xDF |0 \x9E\xE0 |0 \x9E\xE1 |0 \x9E\xE2 |0 \x9E\xE3 |0 \xEC\xC5 |0 \xBE\xE6 |0 \xCC\xBF |0 \xC5\xDA |0 \xBE\xBC |0 \x9E\xE4 |0 \xEC\xC6 |0 \x9E\xE5 |0 \xB1\xFE |0 \x9E\xE6 |0 \x9E\xE7 |0 \x9E\xE8 |0 \xEC\xC4 |0 \xD5\xA8 |0 \xB5\xE3 |0 \x9E\xE9 |0 \xEC\xC2 |0 \xC1\xB6 |0 \xB3\xE3 |0 \x9E\xEA |0 \x9E\xEB |0 \xEC\xC3 |0 \xCB\xB8 |0 \xC0\xC3 |0 \xCC\xFE |0 \x9E\xEC |0 \x9E\xED |0 \x9E\xEE |0 \x9E\xEF |0 \xC1\xD2 |0 \x9E\xF0 |0 \xEC\xC8 |0 \x9E\xF1 |0 \x9E\xF2 |0 \x9E\xF3 |0 \x9E\xF4 |0 \x9E\xF5 |0 \x9E\xF6 |0 \x9E\xF7 |0 \x9E\xF8 |0 \x9E\xF9 |0 \x9E\xFA |0 \x9E\xFB |0 \x9E\xFC |0 \x9E\xFD |0 \xBA\xE6 |0 \xC0\xD3 |0 \x9E\xFE |0 \xD6\xF2 |0 \x9F\x40 |0 \x9F\x41 |0 \x9F\x42 |0 \xD1\xCC |0 \x9F\x43 |0 \x9F\x44 |0 \x9F\x45 |0 \x9F\x46 |0 \xBF\xBE |0 \x9F\x47 |0 \xB7\xB3 |0 \xC9\xD5 |0 \xEC\xC7 |0 \xBB\xE2 |0 \x9F\x48 |0 \xCC\xCC |0 \xBD\xFD |0 \xC8\xC8 |0 \x9F\x49 |0 \xCF\xA9 |0 \x9F\x4A |0 \x9F\x4B |0 \x9F\x4C |0 \x9F\x4D |0 \x9F\x4E |0 \x9F\x4F |0 \x9F\x50 |0 \xCD\xE9 |0 \x9F\x51 |0 \xC5\xEB |0 \x9F\x52 |0 \x9F\x53 |0 \x9F\x54 |0 \xB7\xE9 |0 \x9F\x55 |0 \x9F\x56 |0 \x9F\x57 |0 \x9F\x58 |0 \x9F\x59 |0 \x9F\x5A |0 \x9F\x5B |0 \x9F\x5C |0 \x9F\x5D |0 \x9F\x5E |0 \x9F\x5F |0 \xD1\xC9 |0 \xBA\xB8 |0 \x9F\x60 |0 \x9F\x61 |0 \x9F\x62 |0 \x9F\x63 |0 \x9F\x64 |0 \xEC\xC9 |0 \x9F\x65 |0 \x9F\x66 |0 \xEC\xCA |0 \x9F\x67 |0 \xBB\xC0 |0 \xEC\xCB |0 \x9F\x68 |0 \xEC\xE2 |0 \xB1\xBA |0 \xB7\xD9 |0 \x9F\x69 |0 \x9F\x6A |0 \x9F\x6B |0 \x9F\x6C |0 \x9F\x6D |0 \x9F\x6E |0 \x9F\x6F |0 \x9F\x70 |0 \x9F\x71 |0 \x9F\x72 |0 \x9F\x73 |0 \xBD\xB9 |0 \x9F\x74 |0 \x9F\x75 |0 \x9F\x76 |0 \x9F\x77 |0 \x9F\x78 |0 \x9F\x79 |0 \x9F\x7A |0 \x9F\x7B |0 \xEC\xCC |0 \xD1\xE6 |0 \xEC\xCD |0 \x9F\x7C |0 \x9F\x7D |0 \x9F\x7E |0 \x9F\x80 |0 \xC8\xBB |0 \x9F\x81 |0 \x9F\x82 |0 \x9F\x83 |0 \x9F\x84 |0 \x9F\x85 |0 \x9F\x86 |0 \x9F\x87 |0 \x9F\x88 |0 \x9F\x89 |0 \x9F\x8A |0 \x9F\x8B |0 \x9F\x8C |0 \x9F\x8D |0 \x9F\x8E |0 \xEC\xD1 |0 \x9F\x8F |0 \x9F\x90 |0 \x9F\x91 |0 \x9F\x92 |0 \xEC\xD3 |0 \x9F\x93 |0 \xBB\xCD |0 \x9F\x94 |0 \xBC\xE5 |0 \x9F\x95 |0 \x9F\x96 |0 \x9F\x97 |0 \x9F\x98 |0 \x9F\x99 |0 \x9F\x9A |0 \x9F\x9B |0 \x9F\x9C |0 \x9F\x9D |0 \x9F\x9E |0 \x9F\x9F |0 \x9F\xA0 |0 \x9F\xA1 |0 \xEC\xCF |0 \x9F\xA2 |0 \xC9\xB7 |0 \x9F\xA3 |0 \x9F\xA4 |0 \x9F\xA5 |0 \x9F\xA6 |0 \x9F\xA7 |0 \xC3\xBA |0 \x9F\xA8 |0 \xEC\xE3 |0 \xD5\xD5 |0 \xEC\xD0 |0 \x9F\xA9 |0 \x9F\xAA |0 \x9F\xAB |0 \x9F\xAC |0 \x9F\xAD |0 \xD6\xF3 |0 \x9F\xAE |0 \x9F\xAF |0 \x9F\xB0 |0 \xEC\xD2 |0 \xEC\xCE |0 \x9F\xB1 |0 \x9F\xB2 |0 \x9F\xB3 |0 \x9F\xB4 |0 \xEC\xD4 |0 \x9F\xB5 |0 \xEC\xD5 |0 \x9F\xB6 |0 \x9F\xB7 |0 \xC9\xBF |0 \x9F\xB8 |0 \x9F\xB9 |0 \x9F\xBA |0 \x9F\xBB |0 \x9F\xBC |0 \x9F\xBD |0 \xCF\xA8 |0 \x9F\xBE |0 \x9F\xBF |0 \x9F\xC0 |0 \x9F\xC1 |0 \x9F\xC2 |0 \xD0\xDC |0 \x9F\xC3 |0 \x9F\xC4 |0 \x9F\xC5 |0 \x9F\xC6 |0 \xD1\xAC |0 \x9F\xC7 |0 \x9F\xC8 |0 \x9F\xC9 |0 \x9F\xCA |0 \xC8\xDB |0 \x9F\xCB |0 \x9F\xCC |0 \x9F\xCD |0 \xEC\xD6 |0 \xCE\xF5 |0 \x9F\xCE |0 \x9F\xCF |0 \x9F\xD0 |0 \x9F\xD1 |0 \x9F\xD2 |0 \xCA\xEC |0 \xEC\xDA |0 \x9F\xD3 |0 \x9F\xD4 |0 \x9F\xD5 |0 \x9F\xD6 |0 \x9F\xD7 |0 \x9F\xD8 |0 \x9F\xD9 |0 \xEC\xD9 |0 \x9F\xDA |0 \x9F\xDB |0 \x9F\xDC |0 \xB0\xBE |0 \x9F\xDD |0 \x9F\xDE |0 \x9F\xDF |0 \x9F\xE0 |0 \x9F\xE1 |0 \x9F\xE2 |0 \xEC\xD7 |0 \x9F\xE3 |0 \xEC\xD8 |0 \x9F\xE4 |0 \x9F\xE5 |0 \x9F\xE6 |0 \xEC\xE4 |0 \x9F\xE7 |0 \x9F\xE8 |0 \x9F\xE9 |0 \x9F\xEA |0 \x9F\xEB |0 \x9F\xEC |0 \x9F\xED |0 \x9F\xEE |0 \x9F\xEF |0 \xC8\xBC |0 \x9F\xF0 |0 \x9F\xF1 |0 \x9F\xF2 |0 \x9F\xF3 |0 \x9F\xF4 |0 \x9F\xF5 |0 \x9F\xF6 |0 \x9F\xF7 |0 \x9F\xF8 |0 \x9F\xF9 |0 \xC1\xC7 |0 \x9F\xFA |0 \x9F\xFB |0 \x9F\xFC |0 \x9F\xFD |0 \x9F\xFE |0 \xEC\xDC |0 \xD1\xE0 |0 \xA0\x40 |0 \xA0\x41 |0 \xA0\x42 |0 \xA0\x43 |0 \xA0\x44 |0 \xA0\x45 |0 \xA0\x46 |0 \xA0\x47 |0 \xA0\x48 |0 \xA0\x49 |0 \xEC\xDB |0 \xA0\x4A |0 \xA0\x4B |0 \xA0\x4C |0 \xA0\x4D |0 \xD4\xEF |0 \xA0\x4E |0 \xEC\xDD |0 \xA0\x4F |0 \xA0\x50 |0 \xA0\x51 |0 \xA0\x52 |0 \xA0\x53 |0 \xA0\x54 |0 \xDB\xC6 |0 \xA0\x55 |0 \xA0\x56 |0 \xA0\x57 |0 \xA0\x58 |0 \xA0\x59 |0 \xA0\x5A |0 \xA0\x5B |0 \xA0\x5C |0 \xA0\x5D |0 \xA0\x5E |0 \xEC\xDE |0 \xA0\x5F |0 \xA0\x60 |0 \xA0\x61 |0 \xA0\x62 |0 \xA0\x63 |0 \xA0\x64 |0 \xA0\x65 |0 \xA0\x66 |0 \xA0\x67 |0 \xA0\x68 |0 \xA0\x69 |0 \xA0\x6A |0 \xB1\xAC |0 \xA0\x6B |0 \xA0\x6C |0 \xA0\x6D |0 \xA0\x6E |0 \xA0\x6F |0 \xA0\x70 |0 \xA0\x71 |0 \xA0\x72 |0 \xA0\x73 |0 \xA0\x74 |0 \xA0\x75 |0 \xA0\x76 |0 \xA0\x77 |0 \xA0\x78 |0 \xA0\x79 |0 \xA0\x7A |0 \xA0\x7B |0 \xA0\x7C |0 \xA0\x7D |0 \xA0\x7E |0 \xA0\x80 |0 \xA0\x81 |0 \xEC\xDF |0 \xA0\x82 |0 \xA0\x83 |0 \xA0\x84 |0 \xA0\x85 |0 \xA0\x86 |0 \xA0\x87 |0 \xA0\x88 |0 \xA0\x89 |0 \xA0\x8A |0 \xA0\x8B |0 \xEC\xE0 |0 \xA0\x8C |0 \xD7\xA6 |0 \xA0\x8D |0 \xC5\xC0 |0 \xA0\x8E |0 \xA0\x8F |0 \xA0\x90 |0 \xEB\xBC |0 \xB0\xAE |0 \xA0\x91 |0 \xA0\x92 |0 \xA0\x93 |0 \xBE\xF4 |0 \xB8\xB8 |0 \xD2\xAF |0 \xB0\xD6 |0 \xB5\xF9 |0 \xA0\x94 |0 \xD8\xB3 |0 \xA0\x95 |0 \xCB\xAC |0 \xA0\x96 |0 \xE3\xDD |0 \xA0\x97 |0 \xA0\x98 |0 \xA0\x99 |0 \xA0\x9A |0 \xA0\x9B |0 \xA0\x9C |0 \xA0\x9D |0 \xC6\xAC |0 \xB0\xE6 |0 \xA0\x9E |0 \xA0\x9F |0 \xA0\xA0 |0 \xC5\xC6 |0 \xEB\xB9 |0 \xA0\xA1 |0 \xA0\xA2 |0 \xA0\xA3 |0 \xA0\xA4 |0 \xEB\xBA |0 \xA0\xA5 |0 \xA0\xA6 |0 \xA0\xA7 |0 \xEB\xBB |0 \xA0\xA8 |0 \xA0\xA9 |0 \xD1\xC0 |0 \xA0\xAA |0 \xC5\xA3 |0 \xA0\xAB |0 \xEA\xF2 |0 \xA0\xAC |0 \xC4\xB2 |0 \xA0\xAD |0 \xC4\xB5 |0 \xC0\xCE |0 \xA0\xAE |0 \xA0\xAF |0 \xA0\xB0 |0 \xEA\xF3 |0 \xC4\xC1 |0 \xA0\xB1 |0 \xCE\xEF |0 \xA0\xB2 |0 \xA0\xB3 |0 \xA0\xB4 |0 \xA0\xB5 |0 \xEA\xF0 |0 \xEA\xF4 |0 \xA0\xB6 |0 \xA0\xB7 |0 \xC9\xFC |0 \xA0\xB8 |0 \xA0\xB9 |0 \xC7\xA3 |0 \xA0\xBA |0 \xA0\xBB |0 \xA0\xBC |0 \xCC\xD8 |0 \xCE\xFE |0 \xA0\xBD |0 \xA0\xBE |0 \xA0\xBF |0 \xEA\xF5 |0 \xEA\xF6 |0 \xCF\xAC |0 \xC0\xE7 |0 \xA0\xC0 |0 \xA0\xC1 |0 \xEA\xF7 |0 \xA0\xC2 |0 \xA0\xC3 |0 \xA0\xC4 |0 \xA0\xC5 |0 \xA0\xC6 |0 \xB6\xBF |0 \xEA\xF8 |0 \xA0\xC7 |0 \xEA\xF9 |0 \xA0\xC8 |0 \xEA\xFA |0 \xA0\xC9 |0 \xA0\xCA |0 \xEA\xFB |0 \xA0\xCB |0 \xA0\xCC |0 \xA0\xCD |0 \xA0\xCE |0 \xA0\xCF |0 \xA0\xD0 |0 \xA0\xD1 |0 \xA0\xD2 |0 \xA0\xD3 |0 \xA0\xD4 |0 \xA0\xD5 |0 \xA0\xD6 |0 \xEA\xF1 |0 \xA0\xD7 |0 \xA0\xD8 |0 \xA0\xD9 |0 \xA0\xDA |0 \xA0\xDB |0 \xA0\xDC |0 \xA0\xDD |0 \xA0\xDE |0 \xA0\xDF |0 \xA0\xE0 |0 \xA0\xE1 |0 \xA0\xE2 |0 \xC8\xAE |0 \xE1\xEB |0 \xA0\xE3 |0 \xB7\xB8 |0 \xE1\xEC |0 \xA0\xE4 |0 \xA0\xE5 |0 \xA0\xE6 |0 \xE1\xED |0 \xA0\xE7 |0 \xD7\xB4 |0 \xE1\xEE |0 \xE1\xEF |0 \xD3\xCC |0 \xA0\xE8 |0 \xA0\xE9 |0 \xA0\xEA |0 \xA0\xEB |0 \xA0\xEC |0 \xA0\xED |0 \xA0\xEE |0 \xE1\xF1 |0 \xBF\xF1 |0 \xE1\xF0 |0 \xB5\xD2 |0 \xA0\xEF |0 \xA0\xF0 |0 \xA0\xF1 |0 \xB1\xB7 |0 \xA0\xF2 |0 \xA0\xF3 |0 \xA0\xF4 |0 \xA0\xF5 |0 \xE1\xF3 |0 \xE1\xF2 |0 \xA0\xF6 |0 \xBA\xFC |0 \xA0\xF7 |0 \xE1\xF4 |0 \xA0\xF8 |0 \xA0\xF9 |0 \xA0\xFA |0 \xA0\xFB |0 \xB9\xB7 |0 \xA0\xFC |0 \xBE\xD1 |0 \xA0\xFD |0 \xA0\xFE |0 \xAA\x40 |0 \xAA\x41 |0 \xC4\xFC |0 \xAA\x42 |0 \xBA\xDD |0 \xBD\xC6 |0 \xAA\x43 |0 \xAA\x44 |0 \xAA\x45 |0 \xAA\x46 |0 \xAA\x47 |0 \xAA\x48 |0 \xE1\xF5 |0 \xE1\xF7 |0 \xAA\x49 |0 \xAA\x4A |0 \xB6\xC0 |0 \xCF\xC1 |0 \xCA\xA8 |0 \xE1\xF6 |0 \xD5\xF8 |0 \xD3\xFC |0 \xE1\xF8 |0 \xE1\xFC |0 \xE1\xF9 |0 \xAA\x4B |0 \xAA\x4C |0 \xE1\xFA |0 \xC0\xEA |0 \xAA\x4D |0 \xE1\xFE |0 \xE2\xA1 |0 \xC0\xC7 |0 \xAA\x4E |0 \xAA\x4F |0 \xAA\x50 |0 \xAA\x51 |0 \xE1\xFB |0 \xAA\x52 |0 \xE1\xFD |0 \xAA\x53 |0 \xAA\x54 |0 \xAA\x55 |0 \xAA\x56 |0 \xAA\x57 |0 \xAA\x58 |0 \xE2\xA5 |0 \xAA\x59 |0 \xAA\x5A |0 \xAA\x5B |0 \xC1\xD4 |0 \xAA\x5C |0 \xAA\x5D |0 \xAA\x5E |0 \xAA\x5F |0 \xE2\xA3 |0 \xAA\x60 |0 \xE2\xA8 |0 \xB2\xFE |0 \xE2\xA2 |0 \xAA\x61 |0 \xAA\x62 |0 \xAA\x63 |0 \xC3\xCD |0 \xB2\xC2 |0 \xE2\xA7 |0 \xE2\xA6 |0 \xAA\x64 |0 \xAA\x65 |0 \xE2\xA4 |0 \xE2\xA9 |0 \xAA\x66 |0 \xAA\x67 |0 \xE2\xAB |0 \xAA\x68 |0 \xAA\x69 |0 \xAA\x6A |0 \xD0\xC9 |0 \xD6\xED |0 \xC3\xA8 |0 \xE2\xAC |0 \xAA\x6B |0 \xCF\xD7 |0 \xAA\x6C |0 \xAA\x6D |0 \xE2\xAE |0 \xAA\x6E |0 \xAA\x6F |0 \xBA\xEF |0 \xAA\x70 |0 \xAA\x71 |0 \xE9\xE0 |0 \xE2\xAD |0 \xE2\xAA |0 \xAA\x72 |0 \xAA\x73 |0 \xAA\x74 |0 \xAA\x75 |0 \xBB\xAB |0 \xD4\xB3 |0 \xAA\x76 |0 \xAA\x77 |0 \xAA\x78 |0 \xAA\x79 |0 \xAA\x7A |0 \xAA\x7B |0 \xAA\x7C |0 \xAA\x7D |0 \xAA\x7E |0 \xAA\x80 |0 \xAA\x81 |0 \xAA\x82 |0 \xAA\x83 |0 \xE2\xB0 |0 \xAA\x84 |0 \xAA\x85 |0 \xE2\xAF |0 \xAA\x86 |0 \xE9\xE1 |0 \xAA\x87 |0 \xAA\x88 |0 \xAA\x89 |0 \xAA\x8A |0 \xE2\xB1 |0 \xAA\x8B |0 \xAA\x8C |0 \xAA\x8D |0 \xAA\x8E |0 \xAA\x8F |0 \xAA\x90 |0 \xAA\x91 |0 \xAA\x92 |0 \xE2\xB2 |0 \xAA\x93 |0 \xAA\x94 |0 \xAA\x95 |0 \xAA\x96 |0 \xAA\x97 |0 \xAA\x98 |0 \xAA\x99 |0 \xAA\x9A |0 \xAA\x9B |0 \xAA\x9C |0 \xAA\x9D |0 \xE2\xB3 |0 \xCC\xA1 |0 \xAA\x9E |0 \xE2\xB4 |0 \xAA\x9F |0 \xAA\xA0 |0 \xAB\x40 |0 \xAB\x41 |0 \xAB\x42 |0 \xAB\x43 |0 \xAB\x44 |0 \xAB\x45 |0 \xAB\x46 |0 \xAB\x47 |0 \xAB\x48 |0 \xAB\x49 |0 \xAB\x4A |0 \xAB\x4B |0 \xE2\xB5 |0 \xAB\x4C |0 \xAB\x4D |0 \xAB\x4E |0 \xAB\x4F |0 \xAB\x50 |0 \xD0\xFE |0 \xAB\x51 |0 \xAB\x52 |0 \xC2\xCA |0 \xAB\x53 |0 \xD3\xF1 |0 \xAB\x54 |0 \xCD\xF5 |0 \xAB\x55 |0 \xAB\x56 |0 \xE7\xE0 |0 \xAB\x57 |0 \xAB\x58 |0 \xE7\xE1 |0 \xAB\x59 |0 \xAB\x5A |0 \xAB\x5B |0 \xAB\x5C |0 \xBE\xC1 |0 \xAB\x5D |0 \xAB\x5E |0 \xAB\x5F |0 \xAB\x60 |0 \xC2\xEA |0 \xAB\x61 |0 \xAB\x62 |0 \xAB\x63 |0 \xE7\xE4 |0 \xAB\x64 |0 \xAB\x65 |0 \xE7\xE3 |0 \xAB\x66 |0 \xAB\x67 |0 \xAB\x68 |0 \xAB\x69 |0 \xAB\x6A |0 \xAB\x6B |0 \xCD\xE6 |0 \xAB\x6C |0 \xC3\xB5 |0 \xAB\x6D |0 \xAB\x6E |0 \xE7\xE2 |0 \xBB\xB7 |0 \xCF\xD6 |0 \xAB\x6F |0 \xC1\xE1 |0 \xE7\xE9 |0 \xAB\x70 |0 \xAB\x71 |0 \xAB\x72 |0 \xE7\xE8 |0 \xAB\x73 |0 \xAB\x74 |0 \xE7\xF4 |0 \xB2\xA3 |0 \xAB\x75 |0 \xAB\x76 |0 \xAB\x77 |0 \xAB\x78 |0 \xE7\xEA |0 \xAB\x79 |0 \xE7\xE6 |0 \xAB\x7A |0 \xAB\x7B |0 \xAB\x7C |0 \xAB\x7D |0 \xAB\x7E |0 \xE7\xEC |0 \xE7\xEB |0 \xC9\xBA |0 \xAB\x80 |0 \xAB\x81 |0 \xD5\xE4 |0 \xAB\x82 |0 \xE7\xE5 |0 \xB7\xA9 |0 \xE7\xE7 |0 \xAB\x83 |0 \xAB\x84 |0 \xAB\x85 |0 \xAB\x86 |0 \xAB\x87 |0 \xAB\x88 |0 \xAB\x89 |0 \xE7\xEE |0 \xAB\x8A |0 \xAB\x8B |0 \xAB\x8C |0 \xAB\x8D |0 \xE7\xF3 |0 \xAB\x8E |0 \xD6\xE9 |0 \xAB\x8F |0 \xAB\x90 |0 \xAB\x91 |0 \xAB\x92 |0 \xE7\xED |0 \xAB\x93 |0 \xE7\xF2 |0 \xAB\x94 |0 \xE7\xF1 |0 \xAB\x95 |0 \xAB\x96 |0 \xAB\x97 |0 \xB0\xE0 |0 \xAB\x98 |0 \xAB\x99 |0 \xAB\x9A |0 \xAB\x9B |0 \xE7\xF5 |0 \xAB\x9C |0 \xAB\x9D |0 \xAB\x9E |0 \xAB\x9F |0 \xAB\xA0 |0 \xAC\x40 |0 \xAC\x41 |0 \xAC\x42 |0 \xAC\x43 |0 \xAC\x44 |0 \xAC\x45 |0 \xAC\x46 |0 \xAC\x47 |0 \xAC\x48 |0 \xAC\x49 |0 \xAC\x4A |0 \xC7\xF2 |0 \xAC\x4B |0 \xC0\xC5 |0 \xC0\xED |0 \xAC\x4C |0 \xAC\x4D |0 \xC1\xF0 |0 \xE7\xF0 |0 \xAC\x4E |0 \xAC\x4F |0 \xAC\x50 |0 \xAC\x51 |0 \xE7\xF6 |0 \xCB\xF6 |0 \xAC\x52 |0 \xAC\x53 |0 \xAC\x54 |0 \xAC\x55 |0 \xAC\x56 |0 \xAC\x57 |0 \xAC\x58 |0 \xAC\x59 |0 \xAC\x5A |0 \xE8\xA2 |0 \xE8\xA1 |0 \xAC\x5B |0 \xAC\x5C |0 \xAC\x5D |0 \xAC\x5E |0 \xAC\x5F |0 \xAC\x60 |0 \xD7\xC1 |0 \xAC\x61 |0 \xAC\x62 |0 \xE7\xFA |0 \xE7\xF9 |0 \xAC\x63 |0 \xE7\xFB |0 \xAC\x64 |0 \xE7\xF7 |0 \xAC\x65 |0 \xE7\xFE |0 \xAC\x66 |0 \xE7\xFD |0 \xAC\x67 |0 \xE7\xFC |0 \xAC\x68 |0 \xAC\x69 |0 \xC1\xD5 |0 \xC7\xD9 |0 \xC5\xFD |0 \xC5\xC3 |0 \xAC\x6A |0 \xAC\x6B |0 \xAC\x6C |0 \xAC\x6D |0 \xAC\x6E |0 \xC7\xED |0 \xAC\x6F |0 \xAC\x70 |0 \xAC\x71 |0 \xAC\x72 |0 \xE8\xA3 |0 \xAC\x73 |0 \xAC\x74 |0 \xAC\x75 |0 \xAC\x76 |0 \xAC\x77 |0 \xAC\x78 |0 \xAC\x79 |0 \xAC\x7A |0 \xAC\x7B |0 \xAC\x7C |0 \xAC\x7D |0 \xAC\x7E |0 \xAC\x80 |0 \xAC\x81 |0 \xAC\x82 |0 \xAC\x83 |0 \xAC\x84 |0 \xAC\x85 |0 \xAC\x86 |0 \xE8\xA6 |0 \xAC\x87 |0 \xE8\xA5 |0 \xAC\x88 |0 \xE8\xA7 |0 \xBA\xF7 |0 \xE7\xF8 |0 \xE8\xA4 |0 \xAC\x89 |0 \xC8\xF0 |0 \xC9\xAA |0 \xAC\x8A |0 \xAC\x8B |0 \xAC\x8C |0 \xAC\x8D |0 \xAC\x8E |0 \xAC\x8F |0 \xAC\x90 |0 \xAC\x91 |0 \xAC\x92 |0 \xAC\x93 |0 \xAC\x94 |0 \xAC\x95 |0 \xAC\x96 |0 \xE8\xA9 |0 \xAC\x97 |0 \xAC\x98 |0 \xB9\xE5 |0 \xAC\x99 |0 \xAC\x9A |0 \xAC\x9B |0 \xAC\x9C |0 \xAC\x9D |0 \xD1\xFE |0 \xE8\xA8 |0 \xAC\x9E |0 \xAC\x9F |0 \xAC\xA0 |0 \xAD\x40 |0 \xAD\x41 |0 \xAD\x42 |0 \xE8\xAA |0 \xAD\x43 |0 \xE8\xAD |0 \xE8\xAE |0 \xAD\x44 |0 \xC1\xA7 |0 \xAD\x45 |0 \xAD\x46 |0 \xAD\x47 |0 \xE8\xAF |0 \xAD\x48 |0 \xAD\x49 |0 \xAD\x4A |0 \xE8\xB0 |0 \xAD\x4B |0 \xAD\x4C |0 \xE8\xAC |0 \xAD\x4D |0 \xE8\xB4 |0 \xAD\x4E |0 \xAD\x4F |0 \xAD\x50 |0 \xAD\x51 |0 \xAD\x52 |0 \xAD\x53 |0 \xAD\x54 |0 \xAD\x55 |0 \xAD\x56 |0 \xAD\x57 |0 \xAD\x58 |0 \xE8\xAB |0 \xAD\x59 |0 \xE8\xB1 |0 \xAD\x5A |0 \xAD\x5B |0 \xAD\x5C |0 \xAD\x5D |0 \xAD\x5E |0 \xAD\x5F |0 \xAD\x60 |0 \xAD\x61 |0 \xE8\xB5 |0 \xE8\xB2 |0 \xE8\xB3 |0 \xAD\x62 |0 \xAD\x63 |0 \xAD\x64 |0 \xAD\x65 |0 \xAD\x66 |0 \xAD\x67 |0 \xAD\x68 |0 \xAD\x69 |0 \xAD\x6A |0 \xAD\x6B |0 \xAD\x6C |0 \xAD\x6D |0 \xAD\x6E |0 \xAD\x6F |0 \xAD\x70 |0 \xAD\x71 |0 \xE8\xB7 |0 \xAD\x72 |0 \xAD\x73 |0 \xAD\x74 |0 \xAD\x75 |0 \xAD\x76 |0 \xAD\x77 |0 \xAD\x78 |0 \xAD\x79 |0 \xAD\x7A |0 \xAD\x7B |0 \xAD\x7C |0 \xAD\x7D |0 \xAD\x7E |0 \xAD\x80 |0 \xAD\x81 |0 \xAD\x82 |0 \xAD\x83 |0 \xAD\x84 |0 \xAD\x85 |0 \xAD\x86 |0 \xAD\x87 |0 \xAD\x88 |0 \xAD\x89 |0 \xE8\xB6 |0 \xAD\x8A |0 \xAD\x8B |0 \xAD\x8C |0 \xAD\x8D |0 \xAD\x8E |0 \xAD\x8F |0 \xAD\x90 |0 \xAD\x91 |0 \xAD\x92 |0 \xB9\xCF |0 \xAD\x93 |0 \xF0\xAC |0 \xAD\x94 |0 \xF0\xAD |0 \xAD\x95 |0 \xC6\xB0 |0 \xB0\xEA |0 \xC8\xBF |0 \xAD\x96 |0 \xCD\xDF |0 \xAD\x97 |0 \xAD\x98 |0 \xAD\x99 |0 \xAD\x9A |0 \xAD\x9B |0 \xAD\x9C |0 \xAD\x9D |0 \xCE\xCD |0 \xEA\xB1 |0 \xAD\x9E |0 \xAD\x9F |0 \xAD\xA0 |0 \xAE\x40 |0 \xEA\xB2 |0 \xAE\x41 |0 \xC6\xBF |0 \xB4\xC9 |0 \xAE\x42 |0 \xAE\x43 |0 \xAE\x44 |0 \xAE\x45 |0 \xAE\x46 |0 \xAE\x47 |0 \xAE\x48 |0 \xEA\xB3 |0 \xAE\x49 |0 \xAE\x4A |0 \xAE\x4B |0 \xAE\x4C |0 \xD5\xE7 |0 \xAE\x4D |0 \xAE\x4E |0 \xAE\x4F |0 \xAE\x50 |0 \xAE\x51 |0 \xAE\x52 |0 \xAE\x53 |0 \xAE\x54 |0 \xDD\xF9 |0 \xAE\x55 |0 \xEA\xB4 |0 \xAE\x56 |0 \xEA\xB5 |0 \xAE\x57 |0 \xEA\xB6 |0 \xAE\x58 |0 \xAE\x59 |0 \xAE\x5A |0 \xAE\x5B |0 \xB8\xCA |0 \xDF\xB0 |0 \xC9\xF5 |0 \xAE\x5C |0 \xCC\xF0 |0 \xAE\x5D |0 \xAE\x5E |0 \xC9\xFA |0 \xAE\x5F |0 \xAE\x60 |0 \xAE\x61 |0 \xAE\x62 |0 \xAE\x63 |0 \xC9\xFB |0 \xAE\x64 |0 \xAE\x65 |0 \xD3\xC3 |0 \xCB\xA6 |0 \xAE\x66 |0 \xB8\xA6 |0 \xF0\xAE |0 \xB1\xC2 |0 \xAE\x67 |0 \xE5\xB8 |0 \xCC\xEF |0 \xD3\xC9 |0 \xBC\xD7 |0 \xC9\xEA |0 \xAE\x68 |0 \xB5\xE7 |0 \xAE\x69 |0 \xC4\xD0 |0 \xB5\xE9 |0 \xAE\x6A |0 \xEE\xAE |0 \xBB\xAD |0 \xAE\x6B |0 \xAE\x6C |0 \xE7\xDE |0 \xAE\x6D |0 \xEE\xAF |0 \xAE\x6E |0 \xAE\x6F |0 \xAE\x70 |0 \xAE\x71 |0 \xB3\xA9 |0 \xAE\x72 |0 \xAE\x73 |0 \xEE\xB2 |0 \xAE\x74 |0 \xAE\x75 |0 \xEE\xB1 |0 \xBD\xE7 |0 \xAE\x76 |0 \xEE\xB0 |0 \xCE\xB7 |0 \xAE\x77 |0 \xAE\x78 |0 \xAE\x79 |0 \xAE\x7A |0 \xC5\xCF |0 \xAE\x7B |0 \xAE\x7C |0 \xAE\x7D |0 \xAE\x7E |0 \xC1\xF4 |0 \xDB\xCE |0 \xEE\xB3 |0 \xD0\xF3 |0 \xAE\x80 |0 \xAE\x81 |0 \xAE\x82 |0 \xAE\x83 |0 \xAE\x84 |0 \xAE\x85 |0 \xAE\x86 |0 \xAE\x87 |0 \xC2\xD4 |0 \xC6\xE8 |0 \xAE\x88 |0 \xAE\x89 |0 \xAE\x8A |0 \xB7\xAC |0 \xAE\x8B |0 \xAE\x8C |0 \xAE\x8D |0 \xAE\x8E |0 \xAE\x8F |0 \xAE\x90 |0 \xAE\x91 |0 \xEE\xB4 |0 \xAE\x92 |0 \xB3\xEB |0 \xAE\x93 |0 \xAE\x94 |0 \xAE\x95 |0 \xBB\xFB |0 \xEE\xB5 |0 \xAE\x96 |0 \xAE\x97 |0 \xAE\x98 |0 \xAE\x99 |0 \xAE\x9A |0 \xE7\xDC |0 \xAE\x9B |0 \xAE\x9C |0 \xAE\x9D |0 \xEE\xB6 |0 \xAE\x9E |0 \xAE\x9F |0 \xBD\xAE |0 \xAE\xA0 |0 \xAF\x40 |0 \xAF\x41 |0 \xAF\x42 |0 \xF1\xE2 |0 \xAF\x43 |0 \xAF\x44 |0 \xAF\x45 |0 \xCA\xE8 |0 \xAF\x46 |0 \xD2\xC9 |0 \xF0\xDA |0 \xAF\x47 |0 \xF0\xDB |0 \xAF\x48 |0 \xF0\xDC |0 \xC1\xC6 |0 \xAF\x49 |0 \xB8\xED |0 \xBE\xCE |0 \xAF\x4A |0 \xAF\x4B |0 \xF0\xDE |0 \xAF\x4C |0 \xC5\xB1 |0 \xF0\xDD |0 \xD1\xF1 |0 \xAF\x4D |0 \xF0\xE0 |0 \xB0\xCC |0 \xBD\xEA |0 \xAF\x4E |0 \xAF\x4F |0 \xAF\x50 |0 \xAF\x51 |0 \xAF\x52 |0 \xD2\xDF |0 \xF0\xDF |0 \xAF\x53 |0 \xB4\xAF |0 \xB7\xE8 |0 \xF0\xE6 |0 \xF0\xE5 |0 \xC6\xA3 |0 \xF0\xE1 |0 \xF0\xE2 |0 \xB4\xC3 |0 \xAF\x54 |0 \xAF\x55 |0 \xF0\xE3 |0 \xD5\xEE |0 \xAF\x56 |0 \xAF\x57 |0 \xCC\xDB |0 \xBE\xD2 |0 \xBC\xB2 |0 \xAF\x58 |0 \xAF\x59 |0 \xAF\x5A |0 \xF0\xE8 |0 \xF0\xE7 |0 \xF0\xE4 |0 \xB2\xA1 |0 \xAF\x5B |0 \xD6\xA2 |0 \xD3\xB8 |0 \xBE\xB7 |0 \xC8\xAC |0 \xAF\x5C |0 \xAF\x5D |0 \xF0\xEA |0 \xAF\x5E |0 \xAF\x5F |0 \xAF\x60 |0 \xAF\x61 |0 \xD1\xF7 |0 \xAF\x62 |0 \xD6\xCC |0 \xBA\xDB |0 \xF0\xE9 |0 \xAF\x63 |0 \xB6\xBB |0 \xAF\x64 |0 \xAF\x65 |0 \xCD\xB4 |0 \xAF\x66 |0 \xAF\x67 |0 \xC6\xA6 |0 \xAF\x68 |0 \xAF\x69 |0 \xAF\x6A |0 \xC1\xA1 |0 \xF0\xEB |0 \xF0\xEE |0 \xAF\x6B |0 \xF0\xED |0 \xF0\xF0 |0 \xF0\xEC |0 \xAF\x6C |0 \xBB\xBE |0 \xF0\xEF |0 \xAF\x6D |0 \xAF\x6E |0 \xAF\x6F |0 \xAF\x70 |0 \xCC\xB5 |0 \xF0\xF2 |0 \xAF\x71 |0 \xAF\x72 |0 \xB3\xD5 |0 \xAF\x73 |0 \xAF\x74 |0 \xAF\x75 |0 \xAF\x76 |0 \xB1\xD4 |0 \xAF\x77 |0 \xAF\x78 |0 \xF0\xF3 |0 \xAF\x79 |0 \xAF\x7A |0 \xF0\xF4 |0 \xF0\xF6 |0 \xB4\xE1 |0 \xAF\x7B |0 \xF0\xF1 |0 \xAF\x7C |0 \xF0\xF7 |0 \xAF\x7D |0 \xAF\x7E |0 \xAF\x80 |0 \xAF\x81 |0 \xF0\xFA |0 \xAF\x82 |0 \xF0\xF8 |0 \xAF\x83 |0 \xAF\x84 |0 \xAF\x85 |0 \xF0\xF5 |0 \xAF\x86 |0 \xAF\x87 |0 \xAF\x88 |0 \xAF\x89 |0 \xF0\xFD |0 \xAF\x8A |0 \xF0\xF9 |0 \xF0\xFC |0 \xF0\xFE |0 \xAF\x8B |0 \xF1\xA1 |0 \xAF\x8C |0 \xAF\x8D |0 \xAF\x8E |0 \xCE\xC1 |0 \xF1\xA4 |0 \xAF\x8F |0 \xF1\xA3 |0 \xAF\x90 |0 \xC1\xF6 |0 \xF0\xFB |0 \xCA\xDD |0 \xAF\x91 |0 \xAF\x92 |0 \xB4\xF1 |0 \xB1\xF1 |0 \xCC\xB1 |0 \xAF\x93 |0 \xF1\xA6 |0 \xAF\x94 |0 \xAF\x95 |0 \xF1\xA7 |0 \xAF\x96 |0 \xAF\x97 |0 \xF1\xAC |0 \xD5\xCE |0 \xF1\xA9 |0 \xAF\x98 |0 \xAF\x99 |0 \xC8\xB3 |0 \xAF\x9A |0 \xAF\x9B |0 \xAF\x9C |0 \xF1\xA2 |0 \xAF\x9D |0 \xF1\xAB |0 \xF1\xA8 |0 \xF1\xA5 |0 \xAF\x9E |0 \xAF\x9F |0 \xF1\xAA |0 \xAF\xA0 |0 \xB0\x40 |0 \xB0\x41 |0 \xB0\x42 |0 \xB0\x43 |0 \xB0\x44 |0 \xB0\x45 |0 \xB0\x46 |0 \xB0\xA9 |0 \xF1\xAD |0 \xB0\x47 |0 \xB0\x48 |0 \xB0\x49 |0 \xB0\x4A |0 \xB0\x4B |0 \xB0\x4C |0 \xF1\xAF |0 \xB0\x4D |0 \xF1\xB1 |0 \xB0\x4E |0 \xB0\x4F |0 \xB0\x50 |0 \xB0\x51 |0 \xB0\x52 |0 \xF1\xB0 |0 \xB0\x53 |0 \xF1\xAE |0 \xB0\x54 |0 \xB0\x55 |0 \xB0\x56 |0 \xB0\x57 |0 \xD1\xA2 |0 \xB0\x58 |0 \xB0\x59 |0 \xB0\x5A |0 \xB0\x5B |0 \xB0\x5C |0 \xB0\x5D |0 \xB0\x5E |0 \xF1\xB2 |0 \xB0\x5F |0 \xB0\x60 |0 \xB0\x61 |0 \xF1\xB3 |0 \xB0\x62 |0 \xB0\x63 |0 \xB0\x64 |0 \xB0\x65 |0 \xB0\x66 |0 \xB0\x67 |0 \xB0\x68 |0 \xB0\x69 |0 \xB9\xEF |0 \xB0\x6A |0 \xB0\x6B |0 \xB5\xC7 |0 \xB0\x6C |0 \xB0\xD7 |0 \xB0\xD9 |0 \xB0\x6D |0 \xB0\x6E |0 \xB0\x6F |0 \xD4\xED |0 \xB0\x70 |0 \xB5\xC4 |0 \xB0\x71 |0 \xBD\xD4 |0 \xBB\xCA |0 \xF0\xA7 |0 \xB0\x72 |0 \xB0\x73 |0 \xB8\xDE |0 \xB0\x74 |0 \xB0\x75 |0 \xF0\xA8 |0 \xB0\x76 |0 \xB0\x77 |0 \xB0\xA8 |0 \xB0\x78 |0 \xF0\xA9 |0 \xB0\x79 |0 \xB0\x7A |0 \xCD\xEE |0 \xB0\x7B |0 \xB0\x7C |0 \xF0\xAA |0 \xB0\x7D |0 \xB0\x7E |0 \xB0\x80 |0 \xB0\x81 |0 \xB0\x82 |0 \xB0\x83 |0 \xB0\x84 |0 \xB0\x85 |0 \xB0\x86 |0 \xB0\x87 |0 \xF0\xAB |0 \xB0\x88 |0 \xB0\x89 |0 \xB0\x8A |0 \xB0\x8B |0 \xB0\x8C |0 \xB0\x8D |0 \xB0\x8E |0 \xB0\x8F |0 \xB0\x90 |0 \xC6\xA4 |0 \xB0\x91 |0 \xB0\x92 |0 \xD6\xE5 |0 \xF1\xE4 |0 \xB0\x93 |0 \xF1\xE5 |0 \xB0\x94 |0 \xB0\x95 |0 \xB0\x96 |0 \xB0\x97 |0 \xB0\x98 |0 \xB0\x99 |0 \xB0\x9A |0 \xB0\x9B |0 \xB0\x9C |0 \xB0\x9D |0 \xC3\xF3 |0 \xB0\x9E |0 \xB0\x9F |0 \xD3\xDB |0 \xB0\xA0 |0 \xB1\x40 |0 \xD6\xD1 |0 \xC5\xE8 |0 \xB1\x41 |0 \xD3\xAF |0 \xB1\x42 |0 \xD2\xE6 |0 \xB1\x43 |0 \xB1\x44 |0 \xEE\xC1 |0 \xB0\xBB |0 \xD5\xB5 |0 \xD1\xCE |0 \xBC\xE0 |0 \xBA\xD0 |0 \xB1\x45 |0 \xBF\xF8 |0 \xB1\x46 |0 \xB8\xC7 |0 \xB5\xC1 |0 \xC5\xCC |0 \xB1\x47 |0 \xB1\x48 |0 \xCA\xA2 |0 \xB1\x49 |0 \xB1\x4A |0 \xB1\x4B |0 \xC3\xCB |0 \xB1\x4C |0 \xB1\x4D |0 \xB1\x4E |0 \xB1\x4F |0 \xB1\x50 |0 \xEE\xC2 |0 \xB1\x51 |0 \xB1\x52 |0 \xB1\x53 |0 \xB1\x54 |0 \xB1\x55 |0 \xB1\x56 |0 \xB1\x57 |0 \xB1\x58 |0 \xC4\xBF |0 \xB6\xA2 |0 \xB1\x59 |0 \xED\xEC |0 \xC3\xA4 |0 \xB1\x5A |0 \xD6\xB1 |0 \xB1\x5B |0 \xB1\x5C |0 \xB1\x5D |0 \xCF\xE0 |0 \xED\xEF |0 \xB1\x5E |0 \xB1\x5F |0 \xC5\xCE |0 \xB1\x60 |0 \xB6\xDC |0 \xB1\x61 |0 \xB1\x62 |0 \xCA\xA1 |0 \xB1\x63 |0 \xB1\x64 |0 \xED\xED |0 \xB1\x65 |0 \xB1\x66 |0 \xED\xF0 |0 \xED\xF1 |0 \xC3\xBC |0 \xB1\x67 |0 \xBF\xB4 |0 \xB1\x68 |0 \xED\xEE |0 \xB1\x69 |0 \xB1\x6A |0 \xB1\x6B |0 \xB1\x6C |0 \xB1\x6D |0 \xB1\x6E |0 \xB1\x6F |0 \xB1\x70 |0 \xB1\x71 |0 \xB1\x72 |0 \xB1\x73 |0 \xED\xF4 |0 \xED\xF2 |0 \xB1\x74 |0 \xB1\x75 |0 \xB1\x76 |0 \xB1\x77 |0 \xD5\xE6 |0 \xC3\xDF |0 \xB1\x78 |0 \xED\xF3 |0 \xB1\x79 |0 \xB1\x7A |0 \xB1\x7B |0 \xED\xF6 |0 \xB1\x7C |0 \xD5\xA3 |0 \xD1\xA3 |0 \xB1\x7D |0 \xB1\x7E |0 \xB1\x80 |0 \xED\xF5 |0 \xB1\x81 |0 \xC3\xD0 |0 \xB1\x82 |0 \xB1\x83 |0 \xB1\x84 |0 \xB1\x85 |0 \xB1\x86 |0 \xED\xF7 |0 \xBF\xF4 |0 \xBE\xEC |0 \xED\xF8 |0 \xB1\x87 |0 \xCC\xF7 |0 \xB1\x88 |0 \xD1\xDB |0 \xB1\x89 |0 \xB1\x8A |0 \xB1\x8B |0 \xD7\xC5 |0 \xD5\xF6 |0 \xB1\x8C |0 \xED\xFC |0 \xB1\x8D |0 \xB1\x8E |0 \xB1\x8F |0 \xED\xFB |0 \xB1\x90 |0 \xB1\x91 |0 \xB1\x92 |0 \xB1\x93 |0 \xB1\x94 |0 \xB1\x95 |0 \xB1\x96 |0 \xB1\x97 |0 \xED\xF9 |0 \xED\xFA |0 \xB1\x98 |0 \xB1\x99 |0 \xB1\x9A |0 \xB1\x9B |0 \xB1\x9C |0 \xB1\x9D |0 \xB1\x9E |0 \xB1\x9F |0 \xED\xFD |0 \xBE\xA6 |0 \xB1\xA0 |0 \xB2\x40 |0 \xB2\x41 |0 \xB2\x42 |0 \xB2\x43 |0 \xCB\xAF |0 \xEE\xA1 |0 \xB6\xBD |0 \xB2\x44 |0 \xEE\xA2 |0 \xC4\xC0 |0 \xB2\x45 |0 \xED\xFE |0 \xB2\x46 |0 \xB2\x47 |0 \xBD\xDE |0 \xB2\xC7 |0 \xB2\x48 |0 \xB2\x49 |0 \xB2\x4A |0 \xB2\x4B |0 \xB2\x4C |0 \xB2\x4D |0 \xB2\x4E |0 \xB2\x4F |0 \xB2\x50 |0 \xB2\x51 |0 \xB2\x52 |0 \xB2\x53 |0 \xB6\xC3 |0 \xB2\x54 |0 \xB2\x55 |0 \xB2\x56 |0 \xEE\xA5 |0 \xD8\xBA |0 \xEE\xA3 |0 \xEE\xA6 |0 \xB2\x57 |0 \xB2\x58 |0 \xB2\x59 |0 \xC3\xE9 |0 \xB3\xF2 |0 \xB2\x5A |0 \xB2\x5B |0 \xB2\x5C |0 \xB2\x5D |0 \xB2\x5E |0 \xB2\x5F |0 \xEE\xA7 |0 \xEE\xA4 |0 \xCF\xB9 |0 \xB2\x60 |0 \xB2\x61 |0 \xEE\xA8 |0 \xC2\xF7 |0 \xB2\x62 |0 \xB2\x63 |0 \xB2\x64 |0 \xB2\x65 |0 \xB2\x66 |0 \xB2\x67 |0 \xB2\x68 |0 \xB2\x69 |0 \xB2\x6A |0 \xB2\x6B |0 \xB2\x6C |0 \xB2\x6D |0 \xEE\xA9 |0 \xEE\xAA |0 \xB2\x6E |0 \xDE\xAB |0 \xB2\x6F |0 \xB2\x70 |0 \xC6\xB3 |0 \xB2\x71 |0 \xC7\xC6 |0 \xB2\x72 |0 \xD6\xF5 |0 \xB5\xC9 |0 \xB2\x73 |0 \xCB\xB2 |0 \xB2\x74 |0 \xB2\x75 |0 \xB2\x76 |0 \xEE\xAB |0 \xB2\x77 |0 \xB2\x78 |0 \xCD\xAB |0 \xB2\x79 |0 \xEE\xAC |0 \xB2\x7A |0 \xB2\x7B |0 \xB2\x7C |0 \xB2\x7D |0 \xB2\x7E |0 \xD5\xB0 |0 \xB2\x80 |0 \xEE\xAD |0 \xB2\x81 |0 \xF6\xC4 |0 \xB2\x82 |0 \xB2\x83 |0 \xB2\x84 |0 \xB2\x85 |0 \xB2\x86 |0 \xB2\x87 |0 \xB2\x88 |0 \xB2\x89 |0 \xB2\x8A |0 \xB2\x8B |0 \xB2\x8C |0 \xB2\x8D |0 \xB2\x8E |0 \xDB\xC7 |0 \xB2\x8F |0 \xB2\x90 |0 \xB2\x91 |0 \xB2\x92 |0 \xB2\x93 |0 \xB2\x94 |0 \xB2\x95 |0 \xB2\x96 |0 \xB2\x97 |0 \xB4\xA3 |0 \xB2\x98 |0 \xB2\x99 |0 \xB2\x9A |0 \xC3\xAC |0 \xF1\xE6 |0 \xB2\x9B |0 \xB2\x9C |0 \xB2\x9D |0 \xB2\x9E |0 \xB2\x9F |0 \xCA\xB8 |0 \xD2\xD3 |0 \xB2\xA0 |0 \xD6\xAA |0 \xB3\x40 |0 \xEF\xF2 |0 \xB3\x41 |0 \xBE\xD8 |0 \xB3\x42 |0 \xBD\xC3 |0 \xEF\xF3 |0 \xB6\xCC |0 \xB0\xAB |0 \xB3\x43 |0 \xB3\x44 |0 \xB3\x45 |0 \xB3\x46 |0 \xCA\xAF |0 \xB3\x47 |0 \xB3\x48 |0 \xED\xB6 |0 \xB3\x49 |0 \xED\xB7 |0 \xB3\x4A |0 \xB3\x4B |0 \xB3\x4C |0 \xB3\x4D |0 \xCE\xF9 |0 \xB7\xAF |0 \xBF\xF3 |0 \xED\xB8 |0 \xC2\xEB |0 \xC9\xB0 |0 \xB3\x4E |0 \xB3\x4F |0 \xB3\x50 |0 \xB3\x51 |0 \xB3\x52 |0 \xB3\x53 |0 \xED\xB9 |0 \xB3\x54 |0 \xB3\x55 |0 \xC6\xF6 |0 \xBF\xB3 |0 \xB3\x56 |0 \xB3\x57 |0 \xB3\x58 |0 \xED\xBC |0 \xC5\xF8 |0 \xB3\x59 |0 \xD1\xD0 |0 \xB3\x5A |0 \xD7\xA9 |0 \xED\xBA |0 \xED\xBB |0 \xB3\x5B |0 \xD1\xE2 |0 \xB3\x5C |0 \xED\xBF |0 \xED\xC0 |0 \xB3\x5D |0 \xED\xC4 |0 \xB3\x5E |0 \xB3\x5F |0 \xB3\x60 |0 \xED\xC8 |0 \xB3\x61 |0 \xED\xC6 |0 \xED\xCE |0 \xD5\xE8 |0 \xB3\x62 |0 \xED\xC9 |0 \xB3\x63 |0 \xB3\x64 |0 \xED\xC7 |0 \xED\xBE |0 \xB3\x65 |0 \xB3\x66 |0 \xC5\xE9 |0 \xB3\x67 |0 \xB3\x68 |0 \xB3\x69 |0 \xC6\xC6 |0 \xB3\x6A |0 \xB3\x6B |0 \xC9\xE9 |0 \xD4\xD2 |0 \xED\xC1 |0 \xED\xC2 |0 \xED\xC3 |0 \xED\xC5 |0 \xB3\x6C |0 \xC0\xF9 |0 \xB3\x6D |0 \xB4\xA1 |0 \xB3\x6E |0 \xB3\x6F |0 \xB3\x70 |0 \xB3\x71 |0 \xB9\xE8 |0 \xB3\x72 |0 \xED\xD0 |0 \xB3\x73 |0 \xB3\x74 |0 \xB3\x75 |0 \xB3\x76 |0 \xED\xD1 |0 \xB3\x77 |0 \xED\xCA |0 \xB3\x78 |0 \xED\xCF |0 \xB3\x79 |0 \xCE\xF8 |0 \xB3\x7A |0 \xB3\x7B |0 \xCB\xB6 |0 \xED\xCC |0 \xED\xCD |0 \xB3\x7C |0 \xB3\x7D |0 \xB3\x7E |0 \xB3\x80 |0 \xB3\x81 |0 \xCF\xF5 |0 \xB3\x82 |0 \xB3\x83 |0 \xB3\x84 |0 \xB3\x85 |0 \xB3\x86 |0 \xB3\x87 |0 \xB3\x88 |0 \xB3\x89 |0 \xB3\x8A |0 \xB3\x8B |0 \xB3\x8C |0 \xB3\x8D |0 \xED\xD2 |0 \xC1\xF2 |0 \xD3\xB2 |0 \xED\xCB |0 \xC8\xB7 |0 \xB3\x8E |0 \xB3\x8F |0 \xB3\x90 |0 \xB3\x91 |0 \xB3\x92 |0 \xB3\x93 |0 \xB3\x94 |0 \xB3\x95 |0 \xBC\xEF |0 \xB3\x96 |0 \xB3\x97 |0 \xB3\x98 |0 \xB3\x99 |0 \xC5\xF0 |0 \xB3\x9A |0 \xB3\x9B |0 \xB3\x9C |0 \xB3\x9D |0 \xB3\x9E |0 \xB3\x9F |0 \xB3\xA0 |0 \xB4\x40 |0 \xB4\x41 |0 \xB4\x42 |0 \xED\xD6 |0 \xB4\x43 |0 \xB5\xEF |0 \xB4\x44 |0 \xB4\x45 |0 \xC2\xB5 |0 \xB0\xAD |0 \xCB\xE9 |0 \xB4\x46 |0 \xB4\x47 |0 \xB1\xAE |0 \xB4\x48 |0 \xED\xD4 |0 \xB4\x49 |0 \xB4\x4A |0 \xB4\x4B |0 \xCD\xEB |0 \xB5\xE2 |0 \xB4\x4C |0 \xED\xD5 |0 \xED\xD3 |0 \xED\xD7 |0 \xB4\x4D |0 \xB4\x4E |0 \xB5\xFA |0 \xB4\x4F |0 \xED\xD8 |0 \xB4\x50 |0 \xED\xD9 |0 \xB4\x51 |0 \xED\xDC |0 \xB4\x52 |0 \xB1\xCC |0 \xB4\x53 |0 \xB4\x54 |0 \xB4\x55 |0 \xB4\x56 |0 \xB4\x57 |0 \xB4\x58 |0 \xB4\x59 |0 \xB4\x5A |0 \xC5\xF6 |0 \xBC\xEE |0 \xED\xDA |0 \xCC\xBC |0 \xB2\xEA |0 \xB4\x5B |0 \xB4\x5C |0 \xB4\x5D |0 \xB4\x5E |0 \xED\xDB |0 \xB4\x5F |0 \xB4\x60 |0 \xB4\x61 |0 \xB4\x62 |0 \xC4\xEB |0 \xB4\x63 |0 \xB4\x64 |0 \xB4\xC5 |0 \xB4\x65 |0 \xB4\x66 |0 \xB4\x67 |0 \xB0\xF5 |0 \xB4\x68 |0 \xB4\x69 |0 \xB4\x6A |0 \xED\xDF |0 \xC0\xDA |0 \xB4\xE8 |0 \xB4\x6B |0 \xB4\x6C |0 \xB4\x6D |0 \xB4\x6E |0 \xC5\xCD |0 \xB4\x6F |0 \xB4\x70 |0 \xB4\x71 |0 \xED\xDD |0 \xBF\xC4 |0 \xB4\x72 |0 \xB4\x73 |0 \xB4\x74 |0 \xED\xDE |0 \xB4\x75 |0 \xB4\x76 |0 \xB4\x77 |0 \xB4\x78 |0 \xB4\x79 |0 \xB4\x7A |0 \xB4\x7B |0 \xB4\x7C |0 \xB4\x7D |0 \xB4\x7E |0 \xB4\x80 |0 \xB4\x81 |0 \xB4\x82 |0 \xB4\x83 |0 \xC4\xA5 |0 \xB4\x84 |0 \xB4\x85 |0 \xB4\x86 |0 \xED\xE0 |0 \xB4\x87 |0 \xB4\x88 |0 \xB4\x89 |0 \xB4\x8A |0 \xB4\x8B |0 \xED\xE1 |0 \xB4\x8C |0 \xED\xE3 |0 \xB4\x8D |0 \xB4\x8E |0 \xC1\xD7 |0 \xB4\x8F |0 \xB4\x90 |0 \xBB\xC7 |0 \xB4\x91 |0 \xB4\x92 |0 \xB4\x93 |0 \xB4\x94 |0 \xB4\x95 |0 \xB4\x96 |0 \xBD\xB8 |0 \xB4\x97 |0 \xB4\x98 |0 \xB4\x99 |0 \xED\xE2 |0 \xB4\x9A |0 \xB4\x9B |0 \xB4\x9C |0 \xB4\x9D |0 \xB4\x9E |0 \xB4\x9F |0 \xB4\xA0 |0 \xB5\x40 |0 \xB5\x41 |0 \xB5\x42 |0 \xB5\x43 |0 \xB5\x44 |0 \xB5\x45 |0 \xED\xE4 |0 \xB5\x46 |0 \xB5\x47 |0 \xB5\x48 |0 \xB5\x49 |0 \xB5\x4A |0 \xB5\x4B |0 \xB5\x4C |0 \xB5\x4D |0 \xB5\x4E |0 \xB5\x4F |0 \xED\xE6 |0 \xB5\x50 |0 \xB5\x51 |0 \xB5\x52 |0 \xB5\x53 |0 \xB5\x54 |0 \xED\xE5 |0 \xB5\x55 |0 \xB5\x56 |0 \xB5\x57 |0 \xB5\x58 |0 \xB5\x59 |0 \xB5\x5A |0 \xB5\x5B |0 \xB5\x5C |0 \xB5\x5D |0 \xB5\x5E |0 \xB5\x5F |0 \xB5\x60 |0 \xB5\x61 |0 \xB5\x62 |0 \xB5\x63 |0 \xED\xE7 |0 \xB5\x64 |0 \xB5\x65 |0 \xB5\x66 |0 \xB5\x67 |0 \xB5\x68 |0 \xCA\xBE |0 \xEC\xEA |0 \xC0\xF1 |0 \xB5\x69 |0 \xC9\xE7 |0 \xB5\x6A |0 \xEC\xEB |0 \xC6\xEE |0 \xB5\x6B |0 \xB5\x6C |0 \xB5\x6D |0 \xB5\x6E |0 \xEC\xEC |0 \xB5\x6F |0 \xC6\xED |0 \xEC\xED |0 \xB5\x70 |0 \xB5\x71 |0 \xB5\x72 |0 \xB5\x73 |0 \xB5\x74 |0 \xB5\x75 |0 \xB5\x76 |0 \xB5\x77 |0 \xB5\x78 |0 \xEC\xF0 |0 \xB5\x79 |0 \xB5\x7A |0 \xD7\xE6 |0 \xEC\xF3 |0 \xB5\x7B |0 \xB5\x7C |0 \xEC\xF1 |0 \xEC\xEE |0 \xEC\xEF |0 \xD7\xA3 |0 \xC9\xF1 |0 \xCB\xEE |0 \xEC\xF4 |0 \xB5\x7D |0 \xEC\xF2 |0 \xB5\x7E |0 \xB5\x80 |0 \xCF\xE9 |0 \xB5\x81 |0 \xEC\xF6 |0 \xC6\xB1 |0 \xB5\x82 |0 \xB5\x83 |0 \xB5\x84 |0 \xB5\x85 |0 \xBC\xC0 |0 \xB5\x86 |0 \xEC\xF5 |0 \xB5\x87 |0 \xB5\x88 |0 \xB5\x89 |0 \xB5\x8A |0 \xB5\x8B |0 \xB5\x8C |0 \xB5\x8D |0 \xB5\xBB |0 \xBB\xF6 |0 \xB5\x8E |0 \xEC\xF7 |0 \xB5\x8F |0 \xB5\x90 |0 \xB5\x91 |0 \xB5\x92 |0 \xB5\x93 |0 \xD9\xF7 |0 \xBD\xFB |0 \xB5\x94 |0 \xB5\x95 |0 \xC2\xBB |0 \xEC\xF8 |0 \xB5\x96 |0 \xB5\x97 |0 \xB5\x98 |0 \xB5\x99 |0 \xEC\xF9 |0 \xB5\x9A |0 \xB5\x9B |0 \xB5\x9C |0 \xB5\x9D |0 \xB8\xA3 |0 \xB5\x9E |0 \xB5\x9F |0 \xB5\xA0 |0 \xB6\x40 |0 \xB6\x41 |0 \xB6\x42 |0 \xB6\x43 |0 \xB6\x44 |0 \xB6\x45 |0 \xB6\x46 |0 \xEC\xFA |0 \xB6\x47 |0 \xB6\x48 |0 \xB6\x49 |0 \xB6\x4A |0 \xB6\x4B |0 \xB6\x4C |0 \xB6\x4D |0 \xB6\x4E |0 \xB6\x4F |0 \xB6\x50 |0 \xB6\x51 |0 \xB6\x52 |0 \xEC\xFB |0 \xB6\x53 |0 \xB6\x54 |0 \xB6\x55 |0 \xB6\x56 |0 \xB6\x57 |0 \xB6\x58 |0 \xB6\x59 |0 \xB6\x5A |0 \xB6\x5B |0 \xB6\x5C |0 \xB6\x5D |0 \xEC\xFC |0 \xB6\x5E |0 \xB6\x5F |0 \xB6\x60 |0 \xB6\x61 |0 \xB6\x62 |0 \xD3\xED |0 \xD8\xAE |0 \xC0\xEB |0 \xB6\x63 |0 \xC7\xDD |0 \xBA\xCC |0 \xB6\x64 |0 \xD0\xE3 |0 \xCB\xBD |0 \xB6\x65 |0 \xCD\xBA |0 \xB6\x66 |0 \xB6\x67 |0 \xB8\xD1 |0 \xB6\x68 |0 \xB6\x69 |0 \xB1\xFC |0 \xB6\x6A |0 \xC7\xEF |0 \xB6\x6B |0 \xD6\xD6 |0 \xB6\x6C |0 \xB6\x6D |0 \xB6\x6E |0 \xBF\xC6 |0 \xC3\xEB |0 \xB6\x6F |0 \xB6\x70 |0 \xEF\xF5 |0 \xB6\x71 |0 \xB6\x72 |0 \xC3\xD8 |0 \xB6\x73 |0 \xB6\x74 |0 \xB6\x75 |0 \xB6\x76 |0 \xB6\x77 |0 \xB6\x78 |0 \xD7\xE2 |0 \xB6\x79 |0 \xB6\x7A |0 \xB6\x7B |0 \xEF\xF7 |0 \xB3\xD3 |0 \xB6\x7C |0 \xC7\xD8 |0 \xD1\xED |0 \xB6\x7D |0 \xD6\xC8 |0 \xB6\x7E |0 \xEF\xF8 |0 \xB6\x80 |0 \xEF\xF6 |0 \xB6\x81 |0 \xBB\xFD |0 \xB3\xC6 |0 \xB6\x82 |0 \xB6\x83 |0 \xB6\x84 |0 \xB6\x85 |0 \xB6\x86 |0 \xB6\x87 |0 \xB6\x88 |0 \xBD\xD5 |0 \xB6\x89 |0 \xB6\x8A |0 \xD2\xC6 |0 \xB6\x8B |0 \xBB\xE0 |0 \xB6\x8C |0 \xB6\x8D |0 \xCF\xA1 |0 \xB6\x8E |0 \xEF\xFC |0 \xEF\xFB |0 \xB6\x8F |0 \xB6\x90 |0 \xEF\xF9 |0 \xB6\x91 |0 \xB6\x92 |0 \xB6\x93 |0 \xB6\x94 |0 \xB3\xCC |0 \xB6\x95 |0 \xC9\xD4 |0 \xCB\xB0 |0 \xB6\x96 |0 \xB6\x97 |0 \xB6\x98 |0 \xB6\x99 |0 \xB6\x9A |0 \xEF\xFE |0 \xB6\x9B |0 \xB6\x9C |0 \xB0\xDE |0 \xB6\x9D |0 \xB6\x9E |0 \xD6\xC9 |0 \xB6\x9F |0 \xB6\xA0 |0 \xB7\x40 |0 \xEF\xFD |0 \xB7\x41 |0 \xB3\xED |0 \xB7\x42 |0 \xB7\x43 |0 \xF6\xD5 |0 \xB7\x44 |0 \xB7\x45 |0 \xB7\x46 |0 \xB7\x47 |0 \xB7\x48 |0 \xB7\x49 |0 \xB7\x4A |0 \xB7\x4B |0 \xB7\x4C |0 \xB7\x4D |0 \xB7\x4E |0 \xB7\x4F |0 \xB7\x50 |0 \xB7\x51 |0 \xB7\x52 |0 \xCE\xC8 |0 \xB7\x53 |0 \xB7\x54 |0 \xB7\x55 |0 \xF0\xA2 |0 \xB7\x56 |0 \xF0\xA1 |0 \xB7\x57 |0 \xB5\xBE |0 \xBC\xDA |0 \xBB\xFC |0 \xB7\x58 |0 \xB8\xE5 |0 \xB7\x59 |0 \xB7\x5A |0 \xB7\x5B |0 \xB7\x5C |0 \xB7\x5D |0 \xB7\x5E |0 \xC4\xC2 |0 \xB7\x5F |0 \xB7\x60 |0 \xB7\x61 |0 \xB7\x62 |0 \xB7\x63 |0 \xB7\x64 |0 \xB7\x65 |0 \xB7\x66 |0 \xB7\x67 |0 \xB7\x68 |0 \xF0\xA3 |0 \xB7\x69 |0 \xB7\x6A |0 \xB7\x6B |0 \xB7\x6C |0 \xB7\x6D |0 \xCB\xEB |0 \xB7\x6E |0 \xB7\x6F |0 \xB7\x70 |0 \xB7\x71 |0 \xB7\x72 |0 \xB7\x73 |0 \xB7\x74 |0 \xB7\x75 |0 \xB7\x76 |0 \xB7\x77 |0 \xB7\x78 |0 \xB7\x79 |0 \xB7\x7A |0 \xB7\x7B |0 \xB7\x7C |0 \xB7\x7D |0 \xB7\x7E |0 \xB7\x80 |0 \xB7\x81 |0 \xB7\x82 |0 \xB7\x83 |0 \xB7\x84 |0 \xB7\x85 |0 \xB7\x86 |0 \xF0\xA6 |0 \xB7\x87 |0 \xB7\x88 |0 \xB7\x89 |0 \xD1\xA8 |0 \xB7\x8A |0 \xBE\xBF |0 \xC7\xEE |0 \xF1\xB6 |0 \xF1\xB7 |0 \xBF\xD5 |0 \xB7\x8B |0 \xB7\x8C |0 \xB7\x8D |0 \xB7\x8E |0 \xB4\xA9 |0 \xF1\xB8 |0 \xCD\xBB |0 \xB7\x8F |0 \xC7\xD4 |0 \xD5\xAD |0 \xB7\x90 |0 \xF1\xB9 |0 \xB7\x91 |0 \xF1\xBA |0 \xB7\x92 |0 \xB7\x93 |0 \xB7\x94 |0 \xB7\x95 |0 \xC7\xCF |0 \xB7\x96 |0 \xB7\x97 |0 \xB7\x98 |0 \xD2\xA4 |0 \xD6\xCF |0 \xB7\x99 |0 \xB7\x9A |0 \xF1\xBB |0 \xBD\xD1 |0 \xB4\xB0 |0 \xBE\xBD |0 \xB7\x9B |0 \xB7\x9C |0 \xB7\x9D |0 \xB4\xDC |0 \xCE\xD1 |0 \xB7\x9E |0 \xBF\xDF |0 \xF1\xBD |0 \xB7\x9F |0 \xB7\xA0 |0 \xB8\x40 |0 \xB8\x41 |0 \xBF\xFA |0 \xF1\xBC |0 \xB8\x42 |0 \xF1\xBF |0 \xB8\x43 |0 \xB8\x44 |0 \xB8\x45 |0 \xF1\xBE |0 \xF1\xC0 |0 \xB8\x46 |0 \xB8\x47 |0 \xB8\x48 |0 \xB8\x49 |0 \xB8\x4A |0 \xF1\xC1 |0 \xB8\x4B |0 \xB8\x4C |0 \xB8\x4D |0 \xB8\x4E |0 \xB8\x4F |0 \xB8\x50 |0 \xB8\x51 |0 \xB8\x52 |0 \xB8\x53 |0 \xB8\x54 |0 \xB8\x55 |0 \xC1\xFE |0 \xB8\x56 |0 \xB8\x57 |0 \xB8\x58 |0 \xB8\x59 |0 \xB8\x5A |0 \xB8\x5B |0 \xB8\x5C |0 \xB8\x5D |0 \xB8\x5E |0 \xB8\x5F |0 \xB8\x60 |0 \xC1\xA2 |0 \xB8\x61 |0 \xB8\x62 |0 \xB8\x63 |0 \xB8\x64 |0 \xB8\x65 |0 \xB8\x66 |0 \xB8\x67 |0 \xB8\x68 |0 \xB8\x69 |0 \xB8\x6A |0 \xCA\xFA |0 \xB8\x6B |0 \xB8\x6C |0 \xD5\xBE |0 \xB8\x6D |0 \xB8\x6E |0 \xB8\x6F |0 \xB8\x70 |0 \xBE\xBA |0 \xBE\xB9 |0 \xD5\xC2 |0 \xB8\x71 |0 \xB8\x72 |0 \xBF\xA2 |0 \xB8\x73 |0 \xCD\xAF |0 \xF1\xB5 |0 \xB8\x74 |0 \xB8\x75 |0 \xB8\x76 |0 \xB8\x77 |0 \xB8\x78 |0 \xB8\x79 |0 \xBD\xDF |0 \xB8\x7A |0 \xB6\xCB |0 \xB8\x7B |0 \xB8\x7C |0 \xB8\x7D |0 \xB8\x7E |0 \xB8\x80 |0 \xB8\x81 |0 \xB8\x82 |0 \xB8\x83 |0 \xB8\x84 |0 \xD6\xF1 |0 \xF3\xC3 |0 \xB8\x85 |0 \xB8\x86 |0 \xF3\xC4 |0 \xB8\x87 |0 \xB8\xCD |0 \xB8\x88 |0 \xB8\x89 |0 \xB8\x8A |0 \xF3\xC6 |0 \xF3\xC7 |0 \xB8\x8B |0 \xB0\xCA |0 \xB8\x8C |0 \xF3\xC5 |0 \xB8\x8D |0 \xF3\xC9 |0 \xCB\xF1 |0 \xB8\x8E |0 \xB8\x8F |0 \xB8\x90 |0 \xF3\xCB |0 \xB8\x91 |0 \xD0\xA6 |0 \xB8\x92 |0 \xB8\x93 |0 \xB1\xCA |0 \xF3\xC8 |0 \xB8\x94 |0 \xB8\x95 |0 \xB8\x96 |0 \xF3\xCF |0 \xB8\x97 |0 \xB5\xD1 |0 \xB8\x98 |0 \xB8\x99 |0 \xF3\xD7 |0 \xB8\x9A |0 \xF3\xD2 |0 \xB8\x9B |0 \xB8\x9C |0 \xB8\x9D |0 \xF3\xD4 |0 \xF3\xD3 |0 \xB7\xFB |0 \xB8\x9E |0 \xB1\xBF |0 \xB8\x9F |0 \xF3\xCE |0 \xF3\xCA |0 \xB5\xDA |0 \xB8\xA0 |0 \xF3\xD0 |0 \xB9\x40 |0 \xB9\x41 |0 \xF3\xD1 |0 \xB9\x42 |0 \xF3\xD5 |0 \xB9\x43 |0 \xB9\x44 |0 \xB9\x45 |0 \xB9\x46 |0 \xF3\xCD |0 \xB9\x47 |0 \xBC\xE3 |0 \xB9\x48 |0 \xC1\xFD |0 \xB9\x49 |0 \xF3\xD6 |0 \xB9\x4A |0 \xB9\x4B |0 \xB9\x4C |0 \xB9\x4D |0 \xB9\x4E |0 \xB9\x4F |0 \xF3\xDA |0 \xB9\x50 |0 \xF3\xCC |0 \xB9\x51 |0 \xB5\xC8 |0 \xB9\x52 |0 \xBD\xEE |0 \xF3\xDC |0 \xB9\x53 |0 \xB9\x54 |0 \xB7\xA4 |0 \xBF\xF0 |0 \xD6\xFE |0 \xCD\xB2 |0 \xB9\x55 |0 \xB4\xF0 |0 \xB9\x56 |0 \xB2\xDF |0 \xB9\x57 |0 \xF3\xD8 |0 \xB9\x58 |0 \xF3\xD9 |0 \xC9\xB8 |0 \xB9\x59 |0 \xF3\xDD |0 \xB9\x5A |0 \xB9\x5B |0 \xF3\xDE |0 \xB9\x5C |0 \xF3\xE1 |0 \xB9\x5D |0 \xB9\x5E |0 \xB9\x5F |0 \xB9\x60 |0 \xB9\x61 |0 \xB9\x62 |0 \xB9\x63 |0 \xB9\x64 |0 \xB9\x65 |0 \xB9\x66 |0 \xB9\x67 |0 \xF3\xDF |0 \xB9\x68 |0 \xB9\x69 |0 \xF3\xE3 |0 \xF3\xE2 |0 \xB9\x6A |0 \xB9\x6B |0 \xF3\xDB |0 \xB9\x6C |0 \xBF\xEA |0 \xB9\x6D |0 \xB3\xEF |0 \xB9\x6E |0 \xF3\xE0 |0 \xB9\x6F |0 \xB9\x70 |0 \xC7\xA9 |0 \xB9\x71 |0 \xBC\xF2 |0 \xB9\x72 |0 \xB9\x73 |0 \xB9\x74 |0 \xB9\x75 |0 \xF3\xEB |0 \xB9\x76 |0 \xB9\x77 |0 \xB9\x78 |0 \xB9\x79 |0 \xB9\x7A |0 \xB9\x7B |0 \xB9\x7C |0 \xB9\xBF |0 \xB9\x7D |0 \xB9\x7E |0 \xF3\xE4 |0 \xB9\x80 |0 \xB9\x81 |0 \xB9\x82 |0 \xB2\xAD |0 \xBB\xFE |0 \xB9\x83 |0 \xCB\xE3 |0 \xB9\x84 |0 \xB9\x85 |0 \xB9\x86 |0 \xB9\x87 |0 \xF3\xED |0 \xF3\xE9 |0 \xB9\x88 |0 \xB9\x89 |0 \xB9\x8A |0 \xB9\xDC |0 \xF3\xEE |0 \xB9\x8B |0 \xB9\x8C |0 \xB9\x8D |0 \xF3\xE5 |0 \xF3\xE6 |0 \xF3\xEA |0 \xC2\xE1 |0 \xF3\xEC |0 \xF3\xEF |0 \xF3\xE8 |0 \xBC\xFD |0 \xB9\x8E |0 \xB9\x8F |0 \xB9\x90 |0 \xCF\xE4 |0 \xB9\x91 |0 \xB9\x92 |0 \xF3\xF0 |0 \xB9\x93 |0 \xB9\x94 |0 \xB9\x95 |0 \xF3\xE7 |0 \xB9\x96 |0 \xB9\x97 |0 \xB9\x98 |0 \xB9\x99 |0 \xB9\x9A |0 \xB9\x9B |0 \xB9\x9C |0 \xB9\x9D |0 \xF3\xF2 |0 \xB9\x9E |0 \xB9\x9F |0 \xB9\xA0 |0 \xBA\x40 |0 \xD7\xAD |0 \xC6\xAA |0 \xBA\x41 |0 \xBA\x42 |0 \xBA\x43 |0 \xBA\x44 |0 \xF3\xF3 |0 \xBA\x45 |0 \xBA\x46 |0 \xBA\x47 |0 \xBA\x48 |0 \xF3\xF1 |0 \xBA\x49 |0 \xC2\xA8 |0 \xBA\x4A |0 \xBA\x4B |0 \xBA\x4C |0 \xBA\x4D |0 \xBA\x4E |0 \xB8\xDD |0 \xF3\xF5 |0 \xBA\x4F |0 \xBA\x50 |0 \xF3\xF4 |0 \xBA\x51 |0 \xBA\x52 |0 \xBA\x53 |0 \xB4\xDB |0 \xBA\x54 |0 \xBA\x55 |0 \xBA\x56 |0 \xF3\xF6 |0 \xF3\xF7 |0 \xBA\x57 |0 \xBA\x58 |0 \xBA\x59 |0 \xF3\xF8 |0 \xBA\x5A |0 \xBA\x5B |0 \xBA\x5C |0 \xC0\xBA |0 \xBA\x5D |0 \xBA\x5E |0 \xC0\xE9 |0 \xBA\x5F |0 \xBA\x60 |0 \xBA\x61 |0 \xBA\x62 |0 \xBA\x63 |0 \xC5\xF1 |0 \xBA\x64 |0 \xBA\x65 |0 \xBA\x66 |0 \xBA\x67 |0 \xF3\xFB |0 \xBA\x68 |0 \xF3\xFA |0 \xBA\x69 |0 \xBA\x6A |0 \xBA\x6B |0 \xBA\x6C |0 \xBA\x6D |0 \xBA\x6E |0 \xBA\x6F |0 \xBA\x70 |0 \xB4\xD8 |0 \xBA\x71 |0 \xBA\x72 |0 \xBA\x73 |0 \xF3\xFE |0 \xF3\xF9 |0 \xBA\x74 |0 \xBA\x75 |0 \xF3\xFC |0 \xBA\x76 |0 \xBA\x77 |0 \xBA\x78 |0 \xBA\x79 |0 \xBA\x7A |0 \xBA\x7B |0 \xF3\xFD |0 \xBA\x7C |0 \xBA\x7D |0 \xBA\x7E |0 \xBA\x80 |0 \xBA\x81 |0 \xBA\x82 |0 \xBA\x83 |0 \xBA\x84 |0 \xF4\xA1 |0 \xBA\x85 |0 \xBA\x86 |0 \xBA\x87 |0 \xBA\x88 |0 \xBA\x89 |0 \xBA\x8A |0 \xF4\xA3 |0 \xBB\xC9 |0 \xBA\x8B |0 \xBA\x8C |0 \xF4\xA2 |0 \xBA\x8D |0 \xBA\x8E |0 \xBA\x8F |0 \xBA\x90 |0 \xBA\x91 |0 \xBA\x92 |0 \xBA\x93 |0 \xBA\x94 |0 \xBA\x95 |0 \xBA\x96 |0 \xBA\x97 |0 \xBA\x98 |0 \xBA\x99 |0 \xF4\xA4 |0 \xBA\x9A |0 \xBA\x9B |0 \xBA\x9C |0 \xBA\x9D |0 \xBA\x9E |0 \xBA\x9F |0 \xB2\xBE |0 \xF4\xA6 |0 \xF4\xA5 |0 \xBA\xA0 |0 \xBB\x40 |0 \xBB\x41 |0 \xBB\x42 |0 \xBB\x43 |0 \xBB\x44 |0 \xBB\x45 |0 \xBB\x46 |0 \xBB\x47 |0 \xBB\x48 |0 \xBB\x49 |0 \xBC\xAE |0 \xBB\x4A |0 \xBB\x4B |0 \xBB\x4C |0 \xBB\x4D |0 \xBB\x4E |0 \xBB\x4F |0 \xBB\x50 |0 \xBB\x51 |0 \xBB\x52 |0 \xBB\x53 |0 \xBB\x54 |0 \xBB\x55 |0 \xBB\x56 |0 \xBB\x57 |0 \xBB\x58 |0 \xBB\x59 |0 \xBB\x5A |0 \xBB\x5B |0 \xBB\x5C |0 \xBB\x5D |0 \xBB\x5E |0 \xBB\x5F |0 \xBB\x60 |0 \xBB\x61 |0 \xBB\x62 |0 \xBB\x63 |0 \xBB\x64 |0 \xBB\x65 |0 \xBB\x66 |0 \xBB\x67 |0 \xBB\x68 |0 \xBB\x69 |0 \xBB\x6A |0 \xBB\x6B |0 \xBB\x6C |0 \xBB\x6D |0 \xBB\x6E |0 \xC3\xD7 |0 \xD9\xE1 |0 \xBB\x6F |0 \xBB\x70 |0 \xBB\x71 |0 \xBB\x72 |0 \xBB\x73 |0 \xBB\x74 |0 \xC0\xE0 |0 \xF4\xCC |0 \xD7\xD1 |0 \xBB\x75 |0 \xBB\x76 |0 \xBB\x77 |0 \xBB\x78 |0 \xBB\x79 |0 \xBB\x7A |0 \xBB\x7B |0 \xBB\x7C |0 \xBB\x7D |0 \xBB\x7E |0 \xBB\x80 |0 \xB7\xDB |0 \xBB\x81 |0 \xBB\x82 |0 \xBB\x83 |0 \xBB\x84 |0 \xBB\x85 |0 \xBB\x86 |0 \xBB\x87 |0 \xF4\xCE |0 \xC1\xA3 |0 \xBB\x88 |0 \xBB\x89 |0 \xC6\xC9 |0 \xBB\x8A |0 \xB4\xD6 |0 \xD5\xB3 |0 \xBB\x8B |0 \xBB\x8C |0 \xBB\x8D |0 \xF4\xD0 |0 \xF4\xCF |0 \xF4\xD1 |0 \xCB\xDA |0 \xBB\x8E |0 \xBB\x8F |0 \xF4\xD2 |0 \xBB\x90 |0 \xD4\xC1 |0 \xD6\xE0 |0 \xBB\x91 |0 \xBB\x92 |0 \xBB\x93 |0 \xBB\x94 |0 \xB7\xE0 |0 \xBB\x95 |0 \xBB\x96 |0 \xBB\x97 |0 \xC1\xB8 |0 \xBB\x98 |0 \xBB\x99 |0 \xC1\xBB |0 \xF4\xD3 |0 \xBE\xAC |0 \xBB\x9A |0 \xBB\x9B |0 \xBB\x9C |0 \xBB\x9D |0 \xBB\x9E |0 \xB4\xE2 |0 \xBB\x9F |0 \xBB\xA0 |0 \xF4\xD4 |0 \xF4\xD5 |0 \xBE\xAB |0 \xBC\x40 |0 \xBC\x41 |0 \xF4\xD6 |0 \xBC\x42 |0 \xBC\x43 |0 \xBC\x44 |0 \xF4\xDB |0 \xBC\x45 |0 \xF4\xD7 |0 \xF4\xDA |0 \xBC\x46 |0 \xBA\xFD |0 \xBC\x47 |0 \xF4\xD8 |0 \xF4\xD9 |0 \xBC\x48 |0 \xBC\x49 |0 \xBC\x4A |0 \xBC\x4B |0 \xBC\x4C |0 \xBC\x4D |0 \xBC\x4E |0 \xB8\xE2 |0 \xCC\xC7 |0 \xF4\xDC |0 \xBC\x4F |0 \xB2\xDA |0 \xBC\x50 |0 \xBC\x51 |0 \xC3\xD3 |0 \xBC\x52 |0 \xBC\x53 |0 \xD4\xE3 |0 \xBF\xB7 |0 \xBC\x54 |0 \xBC\x55 |0 \xBC\x56 |0 \xBC\x57 |0 \xBC\x58 |0 \xBC\x59 |0 \xBC\x5A |0 \xF4\xDD |0 \xBC\x5B |0 \xBC\x5C |0 \xBC\x5D |0 \xBC\x5E |0 \xBC\x5F |0 \xBC\x60 |0 \xC5\xB4 |0 \xBC\x61 |0 \xBC\x62 |0 \xBC\x63 |0 \xBC\x64 |0 \xBC\x65 |0 \xBC\x66 |0 \xBC\x67 |0 \xBC\x68 |0 \xF4\xE9 |0 \xBC\x69 |0 \xBC\x6A |0 \xCF\xB5 |0 \xBC\x6B |0 \xBC\x6C |0 \xBC\x6D |0 \xBC\x6E |0 \xBC\x6F |0 \xBC\x70 |0 \xBC\x71 |0 \xBC\x72 |0 \xBC\x73 |0 \xBC\x74 |0 \xBC\x75 |0 \xBC\x76 |0 \xBC\x77 |0 \xBC\x78 |0 \xCE\xC9 |0 \xBC\x79 |0 \xBC\x7A |0 \xBC\x7B |0 \xBC\x7C |0 \xBC\x7D |0 \xBC\x7E |0 \xBC\x80 |0 \xBC\x81 |0 \xBC\x82 |0 \xBC\x83 |0 \xBC\x84 |0 \xBC\x85 |0 \xBC\x86 |0 \xBC\x87 |0 \xBC\x88 |0 \xBC\x89 |0 \xBC\x8A |0 \xBC\x8B |0 \xBC\x8C |0 \xBC\x8D |0 \xBC\x8E |0 \xCB\xD8 |0 \xBC\x8F |0 \xCB\xF7 |0 \xBC\x90 |0 \xBC\x91 |0 \xBC\x92 |0 \xBC\x93 |0 \xBD\xF4 |0 \xBC\x94 |0 \xBC\x95 |0 \xBC\x96 |0 \xD7\xCF |0 \xBC\x97 |0 \xBC\x98 |0 \xBC\x99 |0 \xC0\xDB |0 \xBC\x9A |0 \xBC\x9B |0 \xBC\x9C |0 \xBC\x9D |0 \xBC\x9E |0 \xBC\x9F |0 \xBC\xA0 |0 \xBD\x40 |0 \xBD\x41 |0 \xBD\x42 |0 \xBD\x43 |0 \xBD\x44 |0 \xBD\x45 |0 \xBD\x46 |0 \xBD\x47 |0 \xBD\x48 |0 \xBD\x49 |0 \xBD\x4A |0 \xBD\x4B |0 \xBD\x4C |0 \xBD\x4D |0 \xBD\x4E |0 \xBD\x4F |0 \xBD\x50 |0 \xBD\x51 |0 \xBD\x52 |0 \xBD\x53 |0 \xBD\x54 |0 \xBD\x55 |0 \xBD\x56 |0 \xBD\x57 |0 \xBD\x58 |0 \xBD\x59 |0 \xBD\x5A |0 \xBD\x5B |0 \xBD\x5C |0 \xBD\x5D |0 \xBD\x5E |0 \xBD\x5F |0 \xBD\x60 |0 \xBD\x61 |0 \xBD\x62 |0 \xBD\x63 |0 \xBD\x64 |0 \xBD\x65 |0 \xBD\x66 |0 \xBD\x67 |0 \xBD\x68 |0 \xBD\x69 |0 \xBD\x6A |0 \xBD\x6B |0 \xBD\x6C |0 \xBD\x6D |0 \xBD\x6E |0 \xBD\x6F |0 \xBD\x70 |0 \xBD\x71 |0 \xBD\x72 |0 \xBD\x73 |0 \xBD\x74 |0 \xBD\x75 |0 \xBD\x76 |0 \xD0\xF5 |0 \xBD\x77 |0 \xBD\x78 |0 \xBD\x79 |0 \xBD\x7A |0 \xBD\x7B |0 \xBD\x7C |0 \xBD\x7D |0 \xBD\x7E |0 \xF4\xEA |0 \xBD\x80 |0 \xBD\x81 |0 \xBD\x82 |0 \xBD\x83 |0 \xBD\x84 |0 \xBD\x85 |0 \xBD\x86 |0 \xBD\x87 |0 \xBD\x88 |0 \xBD\x89 |0 \xBD\x8A |0 \xBD\x8B |0 \xBD\x8C |0 \xBD\x8D |0 \xBD\x8E |0 \xBD\x8F |0 \xBD\x90 |0 \xBD\x91 |0 \xBD\x92 |0 \xBD\x93 |0 \xBD\x94 |0 \xBD\x95 |0 \xBD\x96 |0 \xBD\x97 |0 \xBD\x98 |0 \xBD\x99 |0 \xBD\x9A |0 \xBD\x9B |0 \xBD\x9C |0 \xBD\x9D |0 \xBD\x9E |0 \xBD\x9F |0 \xBD\xA0 |0 \xBE\x40 |0 \xBE\x41 |0 \xBE\x42 |0 \xBE\x43 |0 \xBE\x44 |0 \xBE\x45 |0 \xBE\x46 |0 \xBE\x47 |0 \xBE\x48 |0 \xBE\x49 |0 \xBE\x4A |0 \xBE\x4B |0 \xBE\x4C |0 \xF4\xEB |0 \xBE\x4D |0 \xBE\x4E |0 \xBE\x4F |0 \xBE\x50 |0 \xBE\x51 |0 \xBE\x52 |0 \xBE\x53 |0 \xF4\xEC |0 \xBE\x54 |0 \xBE\x55 |0 \xBE\x56 |0 \xBE\x57 |0 \xBE\x58 |0 \xBE\x59 |0 \xBE\x5A |0 \xBE\x5B |0 \xBE\x5C |0 \xBE\x5D |0 \xBE\x5E |0 \xBE\x5F |0 \xBE\x60 |0 \xBE\x61 |0 \xBE\x62 |0 \xBE\x63 |0 \xBE\x64 |0 \xBE\x65 |0 \xBE\x66 |0 \xBE\x67 |0 \xBE\x68 |0 \xBE\x69 |0 \xBE\x6A |0 \xBE\x6B |0 \xBE\x6C |0 \xBE\x6D |0 \xBE\x6E |0 \xBE\x6F |0 \xBE\x70 |0 \xBE\x71 |0 \xBE\x72 |0 \xBE\x73 |0 \xBE\x74 |0 \xBE\x75 |0 \xBE\x76 |0 \xBE\x77 |0 \xBE\x78 |0 \xBE\x79 |0 \xBE\x7A |0 \xBE\x7B |0 \xBE\x7C |0 \xBE\x7D |0 \xBE\x7E |0 \xBE\x80 |0 \xBE\x81 |0 \xBE\x82 |0 \xBE\x83 |0 \xBE\x84 |0 \xBE\x85 |0 \xBE\x86 |0 \xBE\x87 |0 \xBE\x88 |0 \xBE\x89 |0 \xBE\x8A |0 \xBE\x8B |0 \xBE\x8C |0 \xBE\x8D |0 \xBE\x8E |0 \xBE\x8F |0 \xBE\x90 |0 \xBE\x91 |0 \xBE\x92 |0 \xBE\x93 |0 \xBE\x94 |0 \xBE\x95 |0 \xBE\x96 |0 \xBE\x97 |0 \xBE\x98 |0 \xBE\x99 |0 \xBE\x9A |0 \xBE\x9B |0 \xBE\x9C |0 \xBE\x9D |0 \xBE\x9E |0 \xBE\x9F |0 \xBE\xA0 |0 \xBF\x40 |0 \xBF\x41 |0 \xBF\x42 |0 \xBF\x43 |0 \xBF\x44 |0 \xBF\x45 |0 \xBF\x46 |0 \xBF\x47 |0 \xBF\x48 |0 \xBF\x49 |0 \xBF\x4A |0 \xBF\x4B |0 \xBF\x4C |0 \xBF\x4D |0 \xBF\x4E |0 \xBF\x4F |0 \xBF\x50 |0 \xBF\x51 |0 \xBF\x52 |0 \xBF\x53 |0 \xBF\x54 |0 \xBF\x55 |0 \xBF\x56 |0 \xBF\x57 |0 \xBF\x58 |0 \xBF\x59 |0 \xBF\x5A |0 \xBF\x5B |0 \xBF\x5C |0 \xBF\x5D |0 \xBF\x5E |0 \xBF\x5F |0 \xBF\x60 |0 \xBF\x61 |0 \xBF\x62 |0 \xBF\x63 |0 \xBF\x64 |0 \xBF\x65 |0 \xBF\x66 |0 \xBF\x67 |0 \xBF\x68 |0 \xBF\x69 |0 \xBF\x6A |0 \xBF\x6B |0 \xBF\x6C |0 \xBF\x6D |0 \xBF\x6E |0 \xBF\x6F |0 \xBF\x70 |0 \xBF\x71 |0 \xBF\x72 |0 \xBF\x73 |0 \xBF\x74 |0 \xBF\x75 |0 \xBF\x76 |0 \xBF\x77 |0 \xBF\x78 |0 \xBF\x79 |0 \xBF\x7A |0 \xBF\x7B |0 \xBF\x7C |0 \xBF\x7D |0 \xBF\x7E |0 \xBF\x80 |0 \xF7\xE3 |0 \xBF\x81 |0 \xBF\x82 |0 \xBF\x83 |0 \xBF\x84 |0 \xBF\x85 |0 \xB7\xB1 |0 \xBF\x86 |0 \xBF\x87 |0 \xBF\x88 |0 \xBF\x89 |0 \xBF\x8A |0 \xF4\xED |0 \xBF\x8B |0 \xBF\x8C |0 \xBF\x8D |0 \xBF\x8E |0 \xBF\x8F |0 \xBF\x90 |0 \xBF\x91 |0 \xBF\x92 |0 \xBF\x93 |0 \xBF\x94 |0 \xBF\x95 |0 \xBF\x96 |0 \xBF\x97 |0 \xBF\x98 |0 \xBF\x99 |0 \xBF\x9A |0 \xBF\x9B |0 \xBF\x9C |0 \xBF\x9D |0 \xBF\x9E |0 \xBF\x9F |0 \xBF\xA0 |0 \xC0\x40 |0 \xC0\x41 |0 \xC0\x42 |0 \xC0\x43 |0 \xC0\x44 |0 \xC0\x45 |0 \xC0\x46 |0 \xC0\x47 |0 \xC0\x48 |0 \xC0\x49 |0 \xC0\x4A |0 \xC0\x4B |0 \xC0\x4C |0 \xC0\x4D |0 \xC0\x4E |0 \xC0\x4F |0 \xC0\x50 |0 \xC0\x51 |0 \xC0\x52 |0 \xC0\x53 |0 \xC0\x54 |0 \xC0\x55 |0 \xC0\x56 |0 \xC0\x57 |0 \xC0\x58 |0 \xC0\x59 |0 \xC0\x5A |0 \xC0\x5B |0 \xC0\x5C |0 \xC0\x5D |0 \xC0\x5E |0 \xC0\x5F |0 \xC0\x60 |0 \xC0\x61 |0 \xC0\x62 |0 \xC0\x63 |0 \xD7\xEB |0 \xC0\x64 |0 \xC0\x65 |0 \xC0\x66 |0 \xC0\x67 |0 \xC0\x68 |0 \xC0\x69 |0 \xC0\x6A |0 \xC0\x6B |0 \xC0\x6C |0 \xC0\x6D |0 \xC0\x6E |0 \xC0\x6F |0 \xC0\x70 |0 \xC0\x71 |0 \xC0\x72 |0 \xC0\x73 |0 \xC0\x74 |0 \xC0\x75 |0 \xC0\x76 |0 \xC0\x77 |0 \xC0\x78 |0 \xC0\x79 |0 \xC0\x7A |0 \xC0\x7B |0 \xF4\xEE |0 \xC0\x7C |0 \xC0\x7D |0 \xC0\x7E |0 \xE6\xF9 |0 \xBE\xC0 |0 \xE6\xFA |0 \xBA\xEC |0 \xE6\xFB |0 \xCF\xCB |0 \xE6\xFC |0 \xD4\xBC |0 \xBC\xB6 |0 \xE6\xFD |0 \xE6\xFE |0 \xBC\xCD |0 \xC8\xD2 |0 \xCE\xB3 |0 \xE7\xA1 |0 \xC0\x80 |0 \xB4\xBF |0 \xE7\xA2 |0 \xC9\xB4 |0 \xB8\xD9 |0 \xC4\xC9 |0 \xC0\x81 |0 \xD7\xDD |0 \xC2\xDA |0 \xB7\xD7 |0 \xD6\xBD |0 \xCE\xC6 |0 \xB7\xC4 |0 \xC0\x82 |0 \xC0\x83 |0 \xC5\xA6 |0 \xE7\xA3 |0 \xCF\xDF |0 \xE7\xA4 |0 \xE7\xA5 |0 \xE7\xA6 |0 \xC1\xB7 |0 \xD7\xE9 |0 \xC9\xF0 |0 \xCF\xB8 |0 \xD6\xAF |0 \xD6\xD5 |0 \xE7\xA7 |0 \xB0\xED |0 \xE7\xA8 |0 \xE7\xA9 |0 \xC9\xDC |0 \xD2\xEF |0 \xBE\xAD |0 \xE7\xAA |0 \xB0\xF3 |0 \xC8\xDE |0 \xBD\xE1 |0 \xE7\xAB |0 \xC8\xC6 |0 \xC0\x84 |0 \xE7\xAC |0 \xBB\xE6 |0 \xB8\xF8 |0 \xD1\xA4 |0 \xE7\xAD |0 \xC2\xE7 |0 \xBE\xF8 |0 \xBD\xCA |0 \xCD\xB3 |0 \xE7\xAE |0 \xE7\xAF |0 \xBE\xEE |0 \xD0\xE5 |0 \xC0\x85 |0 \xCB\xE7 |0 \xCC\xD0 |0 \xBC\xCC |0 \xE7\xB0 |0 \xBC\xA8 |0 \xD0\xF7 |0 \xE7\xB1 |0 \xC0\x86 |0 \xD0\xF8 |0 \xE7\xB2 |0 \xE7\xB3 |0 \xB4\xC2 |0 \xE7\xB4 |0 \xE7\xB5 |0 \xC9\xFE |0 \xCE\xAC |0 \xC3\xE0 |0 \xE7\xB7 |0 \xB1\xC1 |0 \xB3\xF1 |0 \xC0\x87 |0 \xE7\xB8 |0 \xE7\xB9 |0 \xD7\xDB |0 \xD5\xC0 |0 \xE7\xBA |0 \xC2\xCC |0 \xD7\xBA |0 \xE7\xBB |0 \xE7\xBC |0 \xE7\xBD |0 \xBC\xEA |0 \xC3\xE5 |0 \xC0\xC2 |0 \xE7\xBE |0 \xE7\xBF |0 \xBC\xA9 |0 \xC0\x88 |0 \xE7\xC0 |0 \xE7\xC1 |0 \xE7\xB6 |0 \xB6\xD0 |0 \xE7\xC2 |0 \xC0\x89 |0 \xE7\xC3 |0 \xE7\xC4 |0 \xBB\xBA |0 \xB5\xDE |0 \xC2\xC6 |0 \xB1\xE0 |0 \xE7\xC5 |0 \xD4\xB5 |0 \xE7\xC6 |0 \xB8\xBF |0 \xE7\xC8 |0 \xE7\xC7 |0 \xB7\xEC |0 \xC0\x8A |0 \xE7\xC9 |0 \xB2\xF8 |0 \xE7\xCA |0 \xE7\xCB |0 \xE7\xCC |0 \xE7\xCD |0 \xE7\xCE |0 \xE7\xCF |0 \xE7\xD0 |0 \xD3\xA7 |0 \xCB\xF5 |0 \xE7\xD1 |0 \xE7\xD2 |0 \xE7\xD3 |0 \xE7\xD4 |0 \xC9\xC9 |0 \xE7\xD5 |0 \xE7\xD6 |0 \xE7\xD7 |0 \xE7\xD8 |0 \xE7\xD9 |0 \xBD\xC9 |0 \xE7\xDA |0 \xF3\xBE |0 \xC0\x8B |0 \xB8\xD7 |0 \xC0\x8C |0 \xC8\xB1 |0 \xC0\x8D |0 \xC0\x8E |0 \xC0\x8F |0 \xC0\x90 |0 \xC0\x91 |0 \xC0\x92 |0 \xC0\x93 |0 \xF3\xBF |0 \xC0\x94 |0 \xF3\xC0 |0 \xF3\xC1 |0 \xC0\x95 |0 \xC0\x96 |0 \xC0\x97 |0 \xC0\x98 |0 \xC0\x99 |0 \xC0\x9A |0 \xC0\x9B |0 \xC0\x9C |0 \xC0\x9D |0 \xC0\x9E |0 \xB9\xDE |0 \xCD\xF8 |0 \xC0\x9F |0 \xC0\xA0 |0 \xD8\xE8 |0 \xBA\xB1 |0 \xC1\x40 |0 \xC2\xDE |0 \xEE\xB7 |0 \xC1\x41 |0 \xB7\xA3 |0 \xC1\x42 |0 \xC1\x43 |0 \xC1\x44 |0 \xC1\x45 |0 \xEE\xB9 |0 \xC1\x46 |0 \xEE\xB8 |0 \xB0\xD5 |0 \xC1\x47 |0 \xC1\x48 |0 \xC1\x49 |0 \xC1\x4A |0 \xC1\x4B |0 \xEE\xBB |0 \xD5\xD6 |0 \xD7\xEF |0 \xC1\x4C |0 \xC1\x4D |0 \xC1\x4E |0 \xD6\xC3 |0 \xC1\x4F |0 \xC1\x50 |0 \xEE\xBD |0 \xCA\xF0 |0 \xC1\x51 |0 \xEE\xBC |0 \xC1\x52 |0 \xC1\x53 |0 \xC1\x54 |0 \xC1\x55 |0 \xEE\xBE |0 \xC1\x56 |0 \xC1\x57 |0 \xC1\x58 |0 \xC1\x59 |0 \xEE\xC0 |0 \xC1\x5A |0 \xC1\x5B |0 \xEE\xBF |0 \xC1\x5C |0 \xC1\x5D |0 \xC1\x5E |0 \xC1\x5F |0 \xC1\x60 |0 \xC1\x61 |0 \xC1\x62 |0 \xC1\x63 |0 \xD1\xF2 |0 \xC1\x64 |0 \xC7\xBC |0 \xC1\x65 |0 \xC3\xC0 |0 \xC1\x66 |0 \xC1\x67 |0 \xC1\x68 |0 \xC1\x69 |0 \xC1\x6A |0 \xB8\xE1 |0 \xC1\x6B |0 \xC1\x6C |0 \xC1\x6D |0 \xC1\x6E |0 \xC1\x6F |0 \xC1\xE7 |0 \xC1\x70 |0 \xC1\x71 |0 \xF4\xC6 |0 \xD0\xDF |0 \xF4\xC7 |0 \xC1\x72 |0 \xCF\xDB |0 \xC1\x73 |0 \xC1\x74 |0 \xC8\xBA |0 \xC1\x75 |0 \xC1\x76 |0 \xF4\xC8 |0 \xC1\x77 |0 \xC1\x78 |0 \xC1\x79 |0 \xC1\x7A |0 \xC1\x7B |0 \xC1\x7C |0 \xC1\x7D |0 \xF4\xC9 |0 \xF4\xCA |0 \xC1\x7E |0 \xF4\xCB |0 \xC1\x80 |0 \xC1\x81 |0 \xC1\x82 |0 \xC1\x83 |0 \xC1\x84 |0 \xD9\xFA |0 \xB8\xFE |0 \xC1\x85 |0 \xC1\x86 |0 \xE5\xF1 |0 \xD3\xF0 |0 \xC1\x87 |0 \xF4\xE0 |0 \xC1\x88 |0 \xCE\xCC |0 \xC1\x89 |0 \xC1\x8A |0 \xC1\x8B |0 \xB3\xE1 |0 \xC1\x8C |0 \xC1\x8D |0 \xC1\x8E |0 \xC1\x8F |0 \xF1\xB4 |0 \xC1\x90 |0 \xD2\xEE |0 \xC1\x91 |0 \xF4\xE1 |0 \xC1\x92 |0 \xC1\x93 |0 \xC1\x94 |0 \xC1\x95 |0 \xC1\x96 |0 \xCF\xE8 |0 \xF4\xE2 |0 \xC1\x97 |0 \xC1\x98 |0 \xC7\xCC |0 \xC1\x99 |0 \xC1\x9A |0 \xC1\x9B |0 \xC1\x9C |0 \xC1\x9D |0 \xC1\x9E |0 \xB5\xD4 |0 \xB4\xE4 |0 \xF4\xE4 |0 \xC1\x9F |0 \xC1\xA0 |0 \xC2\x40 |0 \xF4\xE3 |0 \xF4\xE5 |0 \xC2\x41 |0 \xC2\x42 |0 \xF4\xE6 |0 \xC2\x43 |0 \xC2\x44 |0 \xC2\x45 |0 \xC2\x46 |0 \xF4\xE7 |0 \xC2\x47 |0 \xBA\xB2 |0 \xB0\xBF |0 \xC2\x48 |0 \xF4\xE8 |0 \xC2\x49 |0 \xC2\x4A |0 \xC2\x4B |0 \xC2\x4C |0 \xC2\x4D |0 \xC2\x4E |0 \xC2\x4F |0 \xB7\xAD |0 \xD2\xED |0 \xC2\x50 |0 \xC2\x51 |0 \xC2\x52 |0 \xD2\xAB |0 \xC0\xCF |0 \xC2\x53 |0 \xBF\xBC |0 \xEB\xA3 |0 \xD5\xDF |0 \xEA\xC8 |0 \xC2\x54 |0 \xC2\x55 |0 \xC2\x56 |0 \xC2\x57 |0 \xF1\xF3 |0 \xB6\xF8 |0 \xCB\xA3 |0 \xC2\x58 |0 \xC2\x59 |0 \xC4\xCD |0 \xC2\x5A |0 \xF1\xE7 |0 \xC2\x5B |0 \xF1\xE8 |0 \xB8\xFB |0 \xF1\xE9 |0 \xBA\xC4 |0 \xD4\xC5 |0 \xB0\xD2 |0 \xC2\x5C |0 \xC2\x5D |0 \xF1\xEA |0 \xC2\x5E |0 \xC2\x5F |0 \xC2\x60 |0 \xF1\xEB |0 \xC2\x61 |0 \xF1\xEC |0 \xC2\x62 |0 \xC2\x63 |0 \xF1\xED |0 \xF1\xEE |0 \xF1\xEF |0 \xF1\xF1 |0 \xF1\xF0 |0 \xC5\xD5 |0 \xC2\x64 |0 \xC2\x65 |0 \xC2\x66 |0 \xC2\x67 |0 \xC2\x68 |0 \xC2\x69 |0 \xF1\xF2 |0 \xC2\x6A |0 \xB6\xFA |0 \xC2\x6B |0 \xF1\xF4 |0 \xD2\xAE |0 \xDE\xC7 |0 \xCB\xCA |0 \xC2\x6C |0 \xC2\x6D |0 \xB3\xDC |0 \xC2\x6E |0 \xB5\xA2 |0 \xC2\x6F |0 \xB9\xA2 |0 \xC2\x70 |0 \xC2\x71 |0 \xC4\xF4 |0 \xF1\xF5 |0 \xC2\x72 |0 \xC2\x73 |0 \xF1\xF6 |0 \xC2\x74 |0 \xC2\x75 |0 \xC2\x76 |0 \xC1\xC4 |0 \xC1\xFB |0 \xD6\xB0 |0 \xF1\xF7 |0 \xC2\x77 |0 \xC2\x78 |0 \xC2\x79 |0 \xC2\x7A |0 \xF1\xF8 |0 \xC2\x7B |0 \xC1\xAA |0 \xC2\x7C |0 \xC2\x7D |0 \xC2\x7E |0 \xC6\xB8 |0 \xC2\x80 |0 \xBE\xDB |0 \xC2\x81 |0 \xC2\x82 |0 \xC2\x83 |0 \xC2\x84 |0 \xC2\x85 |0 \xC2\x86 |0 \xC2\x87 |0 \xC2\x88 |0 \xC2\x89 |0 \xC2\x8A |0 \xC2\x8B |0 \xC2\x8C |0 \xC2\x8D |0 \xC2\x8E |0 \xF1\xF9 |0 \xB4\xCF |0 \xC2\x8F |0 \xC2\x90 |0 \xC2\x91 |0 \xC2\x92 |0 \xC2\x93 |0 \xC2\x94 |0 \xF1\xFA |0 \xC2\x95 |0 \xC2\x96 |0 \xC2\x97 |0 \xC2\x98 |0 \xC2\x99 |0 \xC2\x9A |0 \xC2\x9B |0 \xC2\x9C |0 \xC2\x9D |0 \xC2\x9E |0 \xC2\x9F |0 \xC2\xA0 |0 \xC3\x40 |0 \xED\xB2 |0 \xED\xB1 |0 \xC3\x41 |0 \xC3\x42 |0 \xCB\xE0 |0 \xD2\xDE |0 \xC3\x43 |0 \xCB\xC1 |0 \xD5\xD8 |0 \xC3\x44 |0 \xC8\xE2 |0 \xC3\x45 |0 \xC0\xDF |0 \xBC\xA1 |0 \xC3\x46 |0 \xC3\x47 |0 \xC3\x48 |0 \xC3\x49 |0 \xC3\x4A |0 \xC3\x4B |0 \xEB\xC1 |0 \xC3\x4C |0 \xC3\x4D |0 \xD0\xA4 |0 \xC3\x4E |0 \xD6\xE2 |0 \xC3\x4F |0 \xB6\xC7 |0 \xB8\xD8 |0 \xEB\xC0 |0 \xB8\xCE |0 \xC3\x50 |0 \xEB\xBF |0 \xB3\xA6 |0 \xB9\xC9 |0 \xD6\xAB |0 \xC3\x51 |0 \xB7\xF4 |0 \xB7\xCA |0 \xC3\x52 |0 \xC3\x53 |0 \xC3\x54 |0 \xBC\xE7 |0 \xB7\xBE |0 \xEB\xC6 |0 \xC3\x55 |0 \xEB\xC7 |0 \xB0\xB9 |0 \xBF\xCF |0 \xC3\x56 |0 \xEB\xC5 |0 \xD3\xFD |0 \xC3\x57 |0 \xEB\xC8 |0 \xC3\x58 |0 \xC3\x59 |0 \xEB\xC9 |0 \xC3\x5A |0 \xC3\x5B |0 \xB7\xCE |0 \xC3\x5C |0 \xEB\xC2 |0 \xEB\xC4 |0 \xC9\xF6 |0 \xD6\xD7 |0 \xD5\xCD |0 \xD0\xB2 |0 \xEB\xCF |0 \xCE\xB8 |0 \xEB\xD0 |0 \xC3\x5D |0 \xB5\xA8 |0 \xC3\x5E |0 \xC3\x5F |0 \xC3\x60 |0 \xC3\x61 |0 \xC3\x62 |0 \xB1\xB3 |0 \xEB\xD2 |0 \xCC\xA5 |0 \xC3\x63 |0 \xC3\x64 |0 \xC3\x65 |0 \xC3\x66 |0 \xC3\x67 |0 \xC3\x68 |0 \xC3\x69 |0 \xC5\xD6 |0 \xEB\xD3 |0 \xC3\x6A |0 \xEB\xD1 |0 \xC5\xDF |0 \xEB\xCE |0 \xCA\xA4 |0 \xEB\xD5 |0 \xB0\xFB |0 \xC3\x6B |0 \xC3\x6C |0 \xBA\xFA |0 \xC3\x6D |0 \xC3\x6E |0 \xD8\xB7 |0 \xF1\xE3 |0 \xC3\x6F |0 \xEB\xCA |0 \xEB\xCB |0 \xEB\xCC |0 \xEB\xCD |0 \xEB\xD6 |0 \xE6\xC0 |0 \xEB\xD9 |0 \xC3\x70 |0 \xBF\xE8 |0 \xD2\xC8 |0 \xEB\xD7 |0 \xEB\xDC |0 \xB8\xEC |0 \xEB\xD8 |0 \xC3\x71 |0 \xBD\xBA |0 \xC3\x72 |0 \xD0\xD8 |0 \xC3\x73 |0 \xB0\xB7 |0 \xC3\x74 |0 \xEB\xDD |0 \xC4\xDC |0 \xC3\x75 |0 \xC3\x76 |0 \xC3\x77 |0 \xC3\x78 |0 \xD6\xAC |0 \xC3\x79 |0 \xC3\x7A |0 \xC3\x7B |0 \xB4\xE0 |0 \xC3\x7C |0 \xC3\x7D |0 \xC2\xF6 |0 \xBC\xB9 |0 \xC3\x7E |0 \xC3\x80 |0 \xEB\xDA |0 \xEB\xDB |0 \xD4\xE0 |0 \xC6\xEA |0 \xC4\xD4 |0 \xEB\xDF |0 \xC5\xA7 |0 \xD9\xF5 |0 \xC3\x81 |0 \xB2\xB1 |0 \xC3\x82 |0 \xEB\xE4 |0 \xC3\x83 |0 \xBD\xC5 |0 \xC3\x84 |0 \xC3\x85 |0 \xC3\x86 |0 \xEB\xE2 |0 \xC3\x87 |0 \xC3\x88 |0 \xC3\x89 |0 \xC3\x8A |0 \xC3\x8B |0 \xC3\x8C |0 \xC3\x8D |0 \xC3\x8E |0 \xC3\x8F |0 \xC3\x90 |0 \xC3\x91 |0 \xC3\x92 |0 \xC3\x93 |0 \xEB\xE3 |0 \xC3\x94 |0 \xC3\x95 |0 \xB8\xAC |0 \xC3\x96 |0 \xCD\xD1 |0 \xEB\xE5 |0 \xC3\x97 |0 \xC3\x98 |0 \xC3\x99 |0 \xEB\xE1 |0 \xC3\x9A |0 \xC1\xB3 |0 \xC3\x9B |0 \xC3\x9C |0 \xC3\x9D |0 \xC3\x9E |0 \xC3\x9F |0 \xC6\xA2 |0 \xC3\xA0 |0 \xC4\x40 |0 \xC4\x41 |0 \xC4\x42 |0 \xC4\x43 |0 \xC4\x44 |0 \xC4\x45 |0 \xCC\xF3 |0 \xC4\x46 |0 \xEB\xE6 |0 \xC4\x47 |0 \xC0\xB0 |0 \xD2\xB8 |0 \xEB\xE7 |0 \xC4\x48 |0 \xC4\x49 |0 \xC4\x4A |0 \xB8\xAF |0 \xB8\xAD |0 \xC4\x4B |0 \xEB\xE8 |0 \xC7\xBB |0 \xCD\xF3 |0 \xC4\x4C |0 \xC4\x4D |0 \xC4\x4E |0 \xEB\xEA |0 \xEB\xEB |0 \xC4\x4F |0 \xC4\x50 |0 \xC4\x51 |0 \xC4\x52 |0 \xC4\x53 |0 \xEB\xED |0 \xC4\x54 |0 \xC4\x55 |0 \xC4\x56 |0 \xC4\x57 |0 \xD0\xC8 |0 \xC4\x58 |0 \xEB\xF2 |0 \xC4\x59 |0 \xEB\xEE |0 \xC4\x5A |0 \xC4\x5B |0 \xC4\x5C |0 \xEB\xF1 |0 \xC8\xF9 |0 \xC4\x5D |0 \xD1\xFC |0 \xEB\xEC |0 \xC4\x5E |0 \xC4\x5F |0 \xEB\xE9 |0 \xC4\x60 |0 \xC4\x61 |0 \xC4\x62 |0 \xC4\x63 |0 \xB8\xB9 |0 \xCF\xD9 |0 \xC4\xE5 |0 \xEB\xEF |0 \xEB\xF0 |0 \xCC\xDA |0 \xCD\xC8 |0 \xB0\xF2 |0 \xC4\x64 |0 \xEB\xF6 |0 \xC4\x65 |0 \xC4\x66 |0 \xC4\x67 |0 \xC4\x68 |0 \xC4\x69 |0 \xEB\xF5 |0 \xC4\x6A |0 \xB2\xB2 |0 \xC4\x6B |0 \xC4\x6C |0 \xC4\x6D |0 \xC4\x6E |0 \xB8\xE0 |0 \xC4\x6F |0 \xEB\xF7 |0 \xC4\x70 |0 \xC4\x71 |0 \xC4\x72 |0 \xC4\x73 |0 \xC4\x74 |0 \xC4\x75 |0 \xB1\xEC |0 \xC4\x76 |0 \xC4\x77 |0 \xCC\xC5 |0 \xC4\xA4 |0 \xCF\xA5 |0 \xC4\x78 |0 \xC4\x79 |0 \xC4\x7A |0 \xC4\x7B |0 \xC4\x7C |0 \xEB\xF9 |0 \xC4\x7D |0 \xC4\x7E |0 \xEC\xA2 |0 \xC4\x80 |0 \xC5\xF2 |0 \xC4\x81 |0 \xEB\xFA |0 \xC4\x82 |0 \xC4\x83 |0 \xC4\x84 |0 \xC4\x85 |0 \xC4\x86 |0 \xC4\x87 |0 \xC4\x88 |0 \xC4\x89 |0 \xC9\xC5 |0 \xC4\x8A |0 \xC4\x8B |0 \xC4\x8C |0 \xC4\x8D |0 \xC4\x8E |0 \xC4\x8F |0 \xE2\xDF |0 \xEB\xFE |0 \xC4\x90 |0 \xC4\x91 |0 \xC4\x92 |0 \xC4\x93 |0 \xCD\xCE |0 \xEC\xA1 |0 \xB1\xDB |0 \xD3\xB7 |0 \xC4\x94 |0 \xC4\x95 |0 \xD2\xDC |0 \xC4\x96 |0 \xC4\x97 |0 \xC4\x98 |0 \xEB\xFD |0 \xC4\x99 |0 \xEB\xFB |0 \xC4\x9A |0 \xC4\x9B |0 \xC4\x9C |0 \xC4\x9D |0 \xC4\x9E |0 \xC4\x9F |0 \xC4\xA0 |0 \xC5\x40 |0 \xC5\x41 |0 \xC5\x42 |0 \xC5\x43 |0 \xC5\x44 |0 \xC5\x45 |0 \xC5\x46 |0 \xC5\x47 |0 \xC5\x48 |0 \xC5\x49 |0 \xC5\x4A |0 \xC5\x4B |0 \xC5\x4C |0 \xC5\x4D |0 \xC5\x4E |0 \xB3\xBC |0 \xC5\x4F |0 \xC5\x50 |0 \xC5\x51 |0 \xEA\xB0 |0 \xC5\x52 |0 \xC5\x53 |0 \xD7\xD4 |0 \xC5\x54 |0 \xF4\xAB |0 \xB3\xF4 |0 \xC5\x55 |0 \xC5\x56 |0 \xC5\x57 |0 \xC5\x58 |0 \xC5\x59 |0 \xD6\xC1 |0 \xD6\xC2 |0 \xC5\x5A |0 \xC5\x5B |0 \xC5\x5C |0 \xC5\x5D |0 \xC5\x5E |0 \xC5\x5F |0 \xD5\xE9 |0 \xBE\xCA |0 \xC5\x60 |0 \xF4\xA7 |0 \xC5\x61 |0 \xD2\xA8 |0 \xF4\xA8 |0 \xF4\xA9 |0 \xC5\x62 |0 \xF4\xAA |0 \xBE\xCB |0 \xD3\xDF |0 \xC5\x63 |0 \xC5\x64 |0 \xC5\x65 |0 \xC5\x66 |0 \xC5\x67 |0 \xC9\xE0 |0 \xC9\xE1 |0 \xC5\x68 |0 \xC5\x69 |0 \xF3\xC2 |0 \xC5\x6A |0 \xCA\xE6 |0 \xC5\x6B |0 \xCC\xF2 |0 \xC5\x6C |0 \xC5\x6D |0 \xC5\x6E |0 \xC5\x6F |0 \xC5\x70 |0 \xC5\x71 |0 \xE2\xB6 |0 \xCB\xB4 |0 \xC5\x72 |0 \xCE\xE8 |0 \xD6\xDB |0 \xC5\x73 |0 \xF4\xAD |0 \xF4\xAE |0 \xF4\xAF |0 \xC5\x74 |0 \xC5\x75 |0 \xC5\x76 |0 \xC5\x77 |0 \xF4\xB2 |0 \xC5\x78 |0 \xBA\xBD |0 \xF4\xB3 |0 \xB0\xE3 |0 \xF4\xB0 |0 \xC5\x79 |0 \xF4\xB1 |0 \xBD\xA2 |0 \xB2\xD5 |0 \xC5\x7A |0 \xF4\xB6 |0 \xF4\xB7 |0 \xB6\xE6 |0 \xB2\xB0 |0 \xCF\xCF |0 \xF4\xB4 |0 \xB4\xAC |0 \xC5\x7B |0 \xF4\xB5 |0 \xC5\x7C |0 \xC5\x7D |0 \xF4\xB8 |0 \xC5\x7E |0 \xC5\x80 |0 \xC5\x81 |0 \xC5\x82 |0 \xC5\x83 |0 \xF4\xB9 |0 \xC5\x84 |0 \xC5\x85 |0 \xCD\xA7 |0 \xC5\x86 |0 \xF4\xBA |0 \xC5\x87 |0 \xF4\xBB |0 \xC5\x88 |0 \xC5\x89 |0 \xC5\x8A |0 \xF4\xBC |0 \xC5\x8B |0 \xC5\x8C |0 \xC5\x8D |0 \xC5\x8E |0 \xC5\x8F |0 \xC5\x90 |0 \xC5\x91 |0 \xC5\x92 |0 \xCB\xD2 |0 \xC5\x93 |0 \xF4\xBD |0 \xC5\x94 |0 \xC5\x95 |0 \xC5\x96 |0 \xC5\x97 |0 \xF4\xBE |0 \xC5\x98 |0 \xC5\x99 |0 \xC5\x9A |0 \xC5\x9B |0 \xC5\x9C |0 \xC5\x9D |0 \xC5\x9E |0 \xC5\x9F |0 \xF4\xBF |0 \xC5\xA0 |0 \xC6\x40 |0 \xC6\x41 |0 \xC6\x42 |0 \xC6\x43 |0 \xF4\xDE |0 \xC1\xBC |0 \xBC\xE8 |0 \xC6\x44 |0 \xC9\xAB |0 \xD1\xDE |0 \xE5\xF5 |0 \xC6\x45 |0 \xC6\x46 |0 \xC6\x47 |0 \xC6\x48 |0 \xDC\xB3 |0 \xD2\xD5 |0 \xC6\x49 |0 \xC6\x4A |0 \xDC\xB4 |0 \xB0\xAC |0 \xDC\xB5 |0 \xC6\x4B |0 \xC6\x4C |0 \xBD\xDA |0 \xC6\x4D |0 \xDC\xB9 |0 \xC6\x4E |0 \xC6\x4F |0 \xC6\x50 |0 \xD8\xC2 |0 \xC6\x51 |0 \xDC\xB7 |0 \xD3\xF3 |0 \xC6\x52 |0 \xC9\xD6 |0 \xDC\xBA |0 \xDC\xB6 |0 \xC6\x53 |0 \xDC\xBB |0 \xC3\xA2 |0 \xC6\x54 |0 \xC6\x55 |0 \xC6\x56 |0 \xC6\x57 |0 \xDC\xBC |0 \xDC\xC5 |0 \xDC\xBD |0 \xC6\x58 |0 \xC6\x59 |0 \xCE\xDF |0 \xD6\xA5 |0 \xC6\x5A |0 \xDC\xCF |0 \xC6\x5B |0 \xDC\xCD |0 \xC6\x5C |0 \xC6\x5D |0 \xDC\xD2 |0 \xBD\xE6 |0 \xC2\xAB |0 \xC6\x5E |0 \xDC\xB8 |0 \xDC\xCB |0 \xDC\xCE |0 \xDC\xBE |0 \xB7\xD2 |0 \xB0\xC5 |0 \xDC\xC7 |0 \xD0\xBE |0 \xDC\xC1 |0 \xBB\xA8 |0 \xC6\x5F |0 \xB7\xBC |0 \xDC\xCC |0 \xC6\x60 |0 \xC6\x61 |0 \xDC\xC6 |0 \xDC\xBF |0 \xC7\xDB |0 \xC6\x62 |0 \xC6\x63 |0 \xC6\x64 |0 \xD1\xBF |0 \xDC\xC0 |0 \xC6\x65 |0 \xC6\x66 |0 \xDC\xCA |0 \xC6\x67 |0 \xC6\x68 |0 \xDC\xD0 |0 \xC6\x69 |0 \xC6\x6A |0 \xCE\xAD |0 \xDC\xC2 |0 \xC6\x6B |0 \xDC\xC3 |0 \xDC\xC8 |0 \xDC\xC9 |0 \xB2\xD4 |0 \xDC\xD1 |0 \xCB\xD5 |0 \xC6\x6C |0 \xD4\xB7 |0 \xDC\xDB |0 \xDC\xDF |0 \xCC\xA6 |0 \xDC\xE6 |0 \xC6\x6D |0 \xC3\xE7 |0 \xDC\xDC |0 \xC6\x6E |0 \xC6\x6F |0 \xBF\xC1 |0 \xDC\xD9 |0 \xC6\x70 |0 \xB0\xFA |0 \xB9\xB6 |0 \xDC\xE5 |0 \xDC\xD3 |0 \xC6\x71 |0 \xDC\xC4 |0 \xDC\xD6 |0 \xC8\xF4 |0 \xBF\xE0 |0 \xC6\x72 |0 \xC6\x73 |0 \xC6\x74 |0 \xC6\x75 |0 \xC9\xBB |0 \xC6\x76 |0 \xC6\x77 |0 \xC6\x78 |0 \xB1\xBD |0 \xC6\x79 |0 \xD3\xA2 |0 \xC6\x7A |0 \xC6\x7B |0 \xDC\xDA |0 \xC6\x7C |0 \xC6\x7D |0 \xDC\xD5 |0 \xC6\x7E |0 \xC6\xBB |0 \xC6\x80 |0 \xDC\xDE |0 \xC6\x81 |0 \xC6\x82 |0 \xC6\x83 |0 \xC6\x84 |0 \xC6\x85 |0 \xD7\xC2 |0 \xC3\xAF |0 \xB7\xB6 |0 \xC7\xD1 |0 \xC3\xA9 |0 \xDC\xE2 |0 \xDC\xD8 |0 \xDC\xEB |0 \xDC\xD4 |0 \xC6\x86 |0 \xC6\x87 |0 \xDC\xDD |0 \xC6\x88 |0 \xBE\xA5 |0 \xDC\xD7 |0 \xC6\x89 |0 \xDC\xE0 |0 \xC6\x8A |0 \xC6\x8B |0 \xDC\xE3 |0 \xDC\xE4 |0 \xC6\x8C |0 \xDC\xF8 |0 \xC6\x8D |0 \xC6\x8E |0 \xDC\xE1 |0 \xDD\xA2 |0 \xDC\xE7 |0 \xC6\x8F |0 \xC6\x90 |0 \xC6\x91 |0 \xC6\x92 |0 \xC6\x93 |0 \xC6\x94 |0 \xC6\x95 |0 \xC6\x96 |0 \xC6\x97 |0 \xC6\x98 |0 \xBC\xEB |0 \xB4\xC4 |0 \xC6\x99 |0 \xC6\x9A |0 \xC3\xA3 |0 \xB2\xE7 |0 \xDC\xFA |0 \xC6\x9B |0 \xDC\xF2 |0 \xC6\x9C |0 \xDC\xEF |0 \xC6\x9D |0 \xDC\xFC |0 \xDC\xEE |0 \xD2\xF0 |0 \xB2\xE8 |0 \xC6\x9E |0 \xC8\xD7 |0 \xC8\xE3 |0 \xDC\xFB |0 \xC6\x9F |0 \xDC\xED |0 \xC6\xA0 |0 \xC7\x40 |0 \xC7\x41 |0 \xDC\xF7 |0 \xC7\x42 |0 \xC7\x43 |0 \xDC\xF5 |0 \xC7\x44 |0 \xC7\x45 |0 \xBE\xA3 |0 \xDC\xF4 |0 \xC7\x46 |0 \xB2\xDD |0 \xC7\x47 |0 \xC7\x48 |0 \xC7\x49 |0 \xC7\x4A |0 \xC7\x4B |0 \xDC\xF3 |0 \xBC\xF6 |0 \xDC\xE8 |0 \xBB\xC4 |0 \xC7\x4C |0 \xC0\xF3 |0 \xC7\x4D |0 \xC7\x4E |0 \xC7\x4F |0 \xC7\x50 |0 \xC7\x51 |0 \xBC\xD4 |0 \xDC\xE9 |0 \xDC\xEA |0 \xC7\x52 |0 \xDC\xF1 |0 \xDC\xF6 |0 \xDC\xF9 |0 \xB5\xB4 |0 \xC7\x53 |0 \xC8\xD9 |0 \xBB\xE7 |0 \xDC\xFE |0 \xDC\xFD |0 \xD3\xAB |0 \xDD\xA1 |0 \xDD\xA3 |0 \xDD\xA5 |0 \xD2\xF1 |0 \xDD\xA4 |0 \xDD\xA6 |0 \xDD\xA7 |0 \xD2\xA9 |0 \xC7\x54 |0 \xC7\x55 |0 \xC7\x56 |0 \xC7\x57 |0 \xC7\x58 |0 \xC7\x59 |0 \xC7\x5A |0 \xBA\xC9 |0 \xDD\xA9 |0 \xC7\x5B |0 \xC7\x5C |0 \xDD\xB6 |0 \xDD\xB1 |0 \xDD\xB4 |0 \xC7\x5D |0 \xC7\x5E |0 \xC7\x5F |0 \xC7\x60 |0 \xC7\x61 |0 \xC7\x62 |0 \xC7\x63 |0 \xDD\xB0 |0 \xC6\xCE |0 \xC7\x64 |0 \xC7\x65 |0 \xC0\xF2 |0 \xC7\x66 |0 \xC7\x67 |0 \xC7\x68 |0 \xC7\x69 |0 \xC9\xAF |0 \xC7\x6A |0 \xC7\x6B |0 \xC7\x6C |0 \xDC\xEC |0 \xDD\xAE |0 \xC7\x6D |0 \xC7\x6E |0 \xC7\x6F |0 \xC7\x70 |0 \xDD\xB7 |0 \xC7\x71 |0 \xC7\x72 |0 \xDC\xF0 |0 \xDD\xAF |0 \xC7\x73 |0 \xDD\xB8 |0 \xC7\x74 |0 \xDD\xAC |0 \xC7\x75 |0 \xC7\x76 |0 \xC7\x77 |0 \xC7\x78 |0 \xC7\x79 |0 \xC7\x7A |0 \xC7\x7B |0 \xDD\xB9 |0 \xDD\xB3 |0 \xDD\xAD |0 \xC4\xAA |0 \xC7\x7C |0 \xC7\x7D |0 \xC7\x7E |0 \xC7\x80 |0 \xDD\xA8 |0 \xC0\xB3 |0 \xC1\xAB |0 \xDD\xAA |0 \xDD\xAB |0 \xC7\x81 |0 \xDD\xB2 |0 \xBB\xF1 |0 \xDD\xB5 |0 \xD3\xA8 |0 \xDD\xBA |0 \xC7\x82 |0 \xDD\xBB |0 \xC3\xA7 |0 \xC7\x83 |0 \xC7\x84 |0 \xDD\xD2 |0 \xDD\xBC |0 \xC7\x85 |0 \xC7\x86 |0 \xC7\x87 |0 \xDD\xD1 |0 \xC7\x88 |0 \xB9\xBD |0 \xC7\x89 |0 \xC7\x8A |0 \xBE\xD5 |0 \xC7\x8B |0 \xBE\xFA |0 \xC7\x8C |0 \xC7\x8D |0 \xBA\xCA |0 \xC7\x8E |0 \xC7\x8F |0 \xC7\x90 |0 \xC7\x91 |0 \xDD\xCA |0 \xC7\x92 |0 \xDD\xC5 |0 \xC7\x93 |0 \xDD\xBF |0 \xC7\x94 |0 \xC7\x95 |0 \xC7\x96 |0 \xB2\xCB |0 \xDD\xC3 |0 \xC7\x97 |0 \xDD\xCB |0 \xB2\xA4 |0 \xDD\xD5 |0 \xC7\x98 |0 \xC7\x99 |0 \xC7\x9A |0 \xDD\xBE |0 \xC7\x9B |0 \xC7\x9C |0 \xC7\x9D |0 \xC6\xD0 |0 \xDD\xD0 |0 \xC7\x9E |0 \xC7\x9F |0 \xC7\xA0 |0 \xC8\x40 |0 \xC8\x41 |0 \xDD\xD4 |0 \xC1\xE2 |0 \xB7\xC6 |0 \xC8\x42 |0 \xC8\x43 |0 \xC8\x44 |0 \xC8\x45 |0 \xC8\x46 |0 \xDD\xCE |0 \xDD\xCF |0 \xC8\x47 |0 \xC8\x48 |0 \xC8\x49 |0 \xDD\xC4 |0 \xC8\x4A |0 \xC8\x4B |0 \xC8\x4C |0 \xDD\xBD |0 \xC8\x4D |0 \xDD\xCD |0 \xCC\xD1 |0 \xC8\x4E |0 \xDD\xC9 |0 \xC8\x4F |0 \xC8\x50 |0 \xC8\x51 |0 \xC8\x52 |0 \xDD\xC2 |0 \xC3\xC8 |0 \xC6\xBC |0 \xCE\xAE |0 \xDD\xCC |0 \xC8\x53 |0 \xDD\xC8 |0 \xC8\x54 |0 \xC8\x55 |0 \xC8\x56 |0 \xC8\x57 |0 \xC8\x58 |0 \xC8\x59 |0 \xDD\xC1 |0 \xC8\x5A |0 \xC8\x5B |0 \xC8\x5C |0 \xDD\xC6 |0 \xC2\xDC |0 \xC8\x5D |0 \xC8\x5E |0 \xC8\x5F |0 \xC8\x60 |0 \xC8\x61 |0 \xC8\x62 |0 \xD3\xA9 |0 \xD3\xAA |0 \xDD\xD3 |0 \xCF\xF4 |0 \xC8\xF8 |0 \xC8\x63 |0 \xC8\x64 |0 \xC8\x65 |0 \xC8\x66 |0 \xC8\x67 |0 \xC8\x68 |0 \xC8\x69 |0 \xC8\x6A |0 \xDD\xE6 |0 \xC8\x6B |0 \xC8\x6C |0 \xC8\x6D |0 \xC8\x6E |0 \xC8\x6F |0 \xC8\x70 |0 \xDD\xC7 |0 \xC8\x71 |0 \xC8\x72 |0 \xC8\x73 |0 \xDD\xE0 |0 \xC2\xE4 |0 \xC8\x74 |0 \xC8\x75 |0 \xC8\x76 |0 \xC8\x77 |0 \xC8\x78 |0 \xC8\x79 |0 \xC8\x7A |0 \xC8\x7B |0 \xDD\xE1 |0 \xC8\x7C |0 \xC8\x7D |0 \xC8\x7E |0 \xC8\x80 |0 \xC8\x81 |0 \xC8\x82 |0 \xC8\x83 |0 \xC8\x84 |0 \xC8\x85 |0 \xC8\x86 |0 \xDD\xD7 |0 \xC8\x87 |0 \xC8\x88 |0 \xC8\x89 |0 \xC8\x8A |0 \xC8\x8B |0 \xD6\xF8 |0 \xC8\x8C |0 \xDD\xD9 |0 \xDD\xD8 |0 \xB8\xF0 |0 \xDD\xD6 |0 \xC8\x8D |0 \xC8\x8E |0 \xC8\x8F |0 \xC8\x90 |0 \xC6\xCF |0 \xC8\x91 |0 \xB6\xAD |0 \xC8\x92 |0 \xC8\x93 |0 \xC8\x94 |0 \xC8\x95 |0 \xC8\x96 |0 \xDD\xE2 |0 \xC8\x97 |0 \xBA\xF9 |0 \xD4\xE1 |0 \xDD\xE7 |0 \xC8\x98 |0 \xC8\x99 |0 \xC8\x9A |0 \xB4\xD0 |0 \xC8\x9B |0 \xDD\xDA |0 \xC8\x9C |0 \xBF\xFB |0 \xDD\xE3 |0 \xC8\x9D |0 \xDD\xDF |0 \xC8\x9E |0 \xDD\xDD |0 \xC8\x9F |0 \xC8\xA0 |0 \xC9\x40 |0 \xC9\x41 |0 \xC9\x42 |0 \xC9\x43 |0 \xC9\x44 |0 \xB5\xD9 |0 \xC9\x45 |0 \xC9\x46 |0 \xC9\x47 |0 \xC9\x48 |0 \xDD\xDB |0 \xDD\xDC |0 \xDD\xDE |0 \xC9\x49 |0 \xBD\xAF |0 \xDD\xE4 |0 \xC9\x4A |0 \xDD\xE5 |0 \xC9\x4B |0 \xC9\x4C |0 \xC9\x4D |0 \xC9\x4E |0 \xC9\x4F |0 \xC9\x50 |0 \xC9\x51 |0 \xC9\x52 |0 \xDD\xF5 |0 \xC9\x53 |0 \xC3\xC9 |0 \xC9\x54 |0 \xC9\x55 |0 \xCB\xE2 |0 \xC9\x56 |0 \xC9\x57 |0 \xC9\x58 |0 \xC9\x59 |0 \xDD\xF2 |0 \xC9\x5A |0 \xC9\x5B |0 \xC9\x5C |0 \xC9\x5D |0 \xC9\x5E |0 \xC9\x5F |0 \xC9\x60 |0 \xC9\x61 |0 \xC9\x62 |0 \xC9\x63 |0 \xC9\x64 |0 \xC9\x65 |0 \xC9\x66 |0 \xD8\xE1 |0 \xC9\x67 |0 \xC9\x68 |0 \xC6\xD1 |0 \xC9\x69 |0 \xDD\xF4 |0 \xC9\x6A |0 \xC9\x6B |0 \xC9\x6C |0 \xD5\xF4 |0 \xDD\xF3 |0 \xDD\xF0 |0 \xC9\x6D |0 \xC9\x6E |0 \xDD\xEC |0 \xC9\x6F |0 \xDD\xEF |0 \xC9\x70 |0 \xDD\xE8 |0 \xC9\x71 |0 \xC9\x72 |0 \xD0\xEE |0 \xC9\x73 |0 \xC9\x74 |0 \xC9\x75 |0 \xC9\x76 |0 \xC8\xD8 |0 \xDD\xEE |0 \xC9\x77 |0 \xC9\x78 |0 \xDD\xE9 |0 \xC9\x79 |0 \xC9\x7A |0 \xDD\xEA |0 \xCB\xF2 |0 \xC9\x7B |0 \xDD\xED |0 \xC9\x7C |0 \xC9\x7D |0 \xB1\xCD |0 \xC9\x7E |0 \xC9\x80 |0 \xC9\x81 |0 \xC9\x82 |0 \xC9\x83 |0 \xC9\x84 |0 \xC0\xB6 |0 \xC9\x85 |0 \xBC\xBB |0 \xDD\xF1 |0 \xC9\x86 |0 \xC9\x87 |0 \xDD\xF7 |0 \xC9\x88 |0 \xDD\xF6 |0 \xDD\xEB |0 \xC9\x89 |0 \xC9\x8A |0 \xC9\x8B |0 \xC9\x8C |0 \xC9\x8D |0 \xC5\xEE |0 \xC9\x8E |0 \xC9\x8F |0 \xC9\x90 |0 \xDD\xFB |0 \xC9\x91 |0 \xC9\x92 |0 \xC9\x93 |0 \xC9\x94 |0 \xC9\x95 |0 \xC9\x96 |0 \xC9\x97 |0 \xC9\x98 |0 \xC9\x99 |0 \xC9\x9A |0 \xC9\x9B |0 \xDE\xA4 |0 \xC9\x9C |0 \xC9\x9D |0 \xDE\xA3 |0 \xC9\x9E |0 \xC9\x9F |0 \xC9\xA0 |0 \xCA\x40 |0 \xCA\x41 |0 \xCA\x42 |0 \xCA\x43 |0 \xCA\x44 |0 \xCA\x45 |0 \xCA\x46 |0 \xCA\x47 |0 \xCA\x48 |0 \xDD\xF8 |0 \xCA\x49 |0 \xCA\x4A |0 \xCA\x4B |0 \xCA\x4C |0 \xC3\xEF |0 \xCA\x4D |0 \xC2\xFB |0 \xCA\x4E |0 \xCA\x4F |0 \xCA\x50 |0 \xD5\xE1 |0 \xCA\x51 |0 \xCA\x52 |0 \xCE\xB5 |0 \xCA\x53 |0 \xCA\x54 |0 \xCA\x55 |0 \xCA\x56 |0 \xDD\xFD |0 \xCA\x57 |0 \xB2\xCC |0 \xCA\x58 |0 \xCA\x59 |0 \xCA\x5A |0 \xCA\x5B |0 \xCA\x5C |0 \xCA\x5D |0 \xCA\x5E |0 \xCA\x5F |0 \xCA\x60 |0 \xC4\xE8 |0 \xCA\xDF |0 \xCA\x61 |0 \xCA\x62 |0 \xCA\x63 |0 \xCA\x64 |0 \xCA\x65 |0 \xCA\x66 |0 \xCA\x67 |0 \xCA\x68 |0 \xCA\x69 |0 \xCA\x6A |0 \xC7\xBE |0 \xDD\xFA |0 \xDD\xFC |0 \xDD\xFE |0 \xDE\xA2 |0 \xB0\xAA |0 \xB1\xCE |0 \xCA\x6B |0 \xCA\x6C |0 \xCA\x6D |0 \xCA\x6E |0 \xCA\x6F |0 \xDE\xAC |0 \xCA\x70 |0 \xCA\x71 |0 \xCA\x72 |0 \xCA\x73 |0 \xDE\xA6 |0 \xBD\xB6 |0 \xC8\xEF |0 \xCA\x74 |0 \xCA\x75 |0 \xCA\x76 |0 \xCA\x77 |0 \xCA\x78 |0 \xCA\x79 |0 \xCA\x7A |0 \xCA\x7B |0 \xCA\x7C |0 \xCA\x7D |0 \xCA\x7E |0 \xDE\xA1 |0 \xCA\x80 |0 \xCA\x81 |0 \xDE\xA5 |0 \xCA\x82 |0 \xCA\x83 |0 \xCA\x84 |0 \xCA\x85 |0 \xDE\xA9 |0 \xCA\x86 |0 \xCA\x87 |0 \xCA\x88 |0 \xCA\x89 |0 \xCA\x8A |0 \xDE\xA8 |0 \xCA\x8B |0 \xCA\x8C |0 \xCA\x8D |0 \xDE\xA7 |0 \xCA\x8E |0 \xCA\x8F |0 \xCA\x90 |0 \xCA\x91 |0 \xCA\x92 |0 \xCA\x93 |0 \xCA\x94 |0 \xCA\x95 |0 \xCA\x96 |0 \xDE\xAD |0 \xCA\x97 |0 \xD4\xCC |0 \xCA\x98 |0 \xCA\x99 |0 \xCA\x9A |0 \xCA\x9B |0 \xDE\xB3 |0 \xDE\xAA |0 \xDE\xAE |0 \xCA\x9C |0 \xCA\x9D |0 \xC0\xD9 |0 \xCA\x9E |0 \xCA\x9F |0 \xCA\xA0 |0 \xCB\x40 |0 \xCB\x41 |0 \xB1\xA1 |0 \xDE\xB6 |0 \xCB\x42 |0 \xDE\xB1 |0 \xCB\x43 |0 \xCB\x44 |0 \xCB\x45 |0 \xCB\x46 |0 \xCB\x47 |0 \xCB\x48 |0 \xCB\x49 |0 \xDE\xB2 |0 \xCB\x4A |0 \xCB\x4B |0 \xCB\x4C |0 \xCB\x4D |0 \xCB\x4E |0 \xCB\x4F |0 \xCB\x50 |0 \xCB\x51 |0 \xCB\x52 |0 \xCB\x53 |0 \xCB\x54 |0 \xD1\xA6 |0 \xDE\xB5 |0 \xCB\x55 |0 \xCB\x56 |0 \xCB\x57 |0 \xCB\x58 |0 \xCB\x59 |0 \xCB\x5A |0 \xCB\x5B |0 \xDE\xAF |0 \xCB\x5C |0 \xCB\x5D |0 \xCB\x5E |0 \xDE\xB0 |0 \xCB\x5F |0 \xD0\xBD |0 \xCB\x60 |0 \xCB\x61 |0 \xCB\x62 |0 \xDE\xB4 |0 \xCA\xED |0 \xDE\xB9 |0 \xCB\x63 |0 \xCB\x64 |0 \xCB\x65 |0 \xCB\x66 |0 \xCB\x67 |0 \xCB\x68 |0 \xDE\xB8 |0 \xCB\x69 |0 \xDE\xB7 |0 \xCB\x6A |0 \xCB\x6B |0 \xCB\x6C |0 \xCB\x6D |0 \xCB\x6E |0 \xCB\x6F |0 \xCB\x70 |0 \xDE\xBB |0 \xCB\x71 |0 \xCB\x72 |0 \xCB\x73 |0 \xCB\x74 |0 \xCB\x75 |0 \xCB\x76 |0 \xCB\x77 |0 \xBD\xE5 |0 \xCB\x78 |0 \xCB\x79 |0 \xCB\x7A |0 \xCB\x7B |0 \xCB\x7C |0 \xB2\xD8 |0 \xC3\xEA |0 \xCB\x7D |0 \xCB\x7E |0 \xDE\xBA |0 \xCB\x80 |0 \xC5\xBA |0 \xCB\x81 |0 \xCB\x82 |0 \xCB\x83 |0 \xCB\x84 |0 \xCB\x85 |0 \xCB\x86 |0 \xDE\xBC |0 \xCB\x87 |0 \xCB\x88 |0 \xCB\x89 |0 \xCB\x8A |0 \xCB\x8B |0 \xCB\x8C |0 \xCB\x8D |0 \xCC\xD9 |0 \xCB\x8E |0 \xCB\x8F |0 \xCB\x90 |0 \xCB\x91 |0 \xB7\xAA |0 \xCB\x92 |0 \xCB\x93 |0 \xCB\x94 |0 \xCB\x95 |0 \xCB\x96 |0 \xCB\x97 |0 \xCB\x98 |0 \xCB\x99 |0 \xCB\x9A |0 \xCB\x9B |0 \xCB\x9C |0 \xCB\x9D |0 \xCB\x9E |0 \xCB\x9F |0 \xCB\xA0 |0 \xCC\x40 |0 \xCC\x41 |0 \xD4\xE5 |0 \xCC\x42 |0 \xCC\x43 |0 \xCC\x44 |0 \xDE\xBD |0 \xCC\x45 |0 \xCC\x46 |0 \xCC\x47 |0 \xCC\x48 |0 \xCC\x49 |0 \xDE\xBF |0 \xCC\x4A |0 \xCC\x4B |0 \xCC\x4C |0 \xCC\x4D |0 \xCC\x4E |0 \xCC\x4F |0 \xCC\x50 |0 \xCC\x51 |0 \xCC\x52 |0 \xCC\x53 |0 \xCC\x54 |0 \xC4\xA2 |0 \xCC\x55 |0 \xCC\x56 |0 \xCC\x57 |0 \xCC\x58 |0 \xDE\xC1 |0 \xCC\x59 |0 \xCC\x5A |0 \xCC\x5B |0 \xCC\x5C |0 \xCC\x5D |0 \xCC\x5E |0 \xCC\x5F |0 \xCC\x60 |0 \xCC\x61 |0 \xCC\x62 |0 \xCC\x63 |0 \xCC\x64 |0 \xCC\x65 |0 \xCC\x66 |0 \xCC\x67 |0 \xCC\x68 |0 \xDE\xBE |0 \xCC\x69 |0 \xDE\xC0 |0 \xCC\x6A |0 \xCC\x6B |0 \xCC\x6C |0 \xCC\x6D |0 \xCC\x6E |0 \xCC\x6F |0 \xCC\x70 |0 \xCC\x71 |0 \xCC\x72 |0 \xCC\x73 |0 \xCC\x74 |0 \xCC\x75 |0 \xCC\x76 |0 \xCC\x77 |0 \xD5\xBA |0 \xCC\x78 |0 \xCC\x79 |0 \xCC\x7A |0 \xDE\xC2 |0 \xCC\x7B |0 \xCC\x7C |0 \xCC\x7D |0 \xCC\x7E |0 \xCC\x80 |0 \xCC\x81 |0 \xCC\x82 |0 \xCC\x83 |0 \xCC\x84 |0 \xCC\x85 |0 \xCC\x86 |0 \xCC\x87 |0 \xCC\x88 |0 \xCC\x89 |0 \xCC\x8A |0 \xCC\x8B |0 \xF2\xAE |0 \xBB\xA2 |0 \xC2\xB2 |0 \xC5\xB0 |0 \xC2\xC7 |0 \xCC\x8C |0 \xCC\x8D |0 \xF2\xAF |0 \xCC\x8E |0 \xCC\x8F |0 \xCC\x90 |0 \xCC\x91 |0 \xCC\x92 |0 \xD0\xE9 |0 \xCC\x93 |0 \xCC\x94 |0 \xCC\x95 |0 \xD3\xDD |0 \xCC\x96 |0 \xCC\x97 |0 \xCC\x98 |0 \xEB\xBD |0 \xCC\x99 |0 \xCC\x9A |0 \xCC\x9B |0 \xCC\x9C |0 \xCC\x9D |0 \xCC\x9E |0 \xCC\x9F |0 \xCC\xA0 |0 \xB3\xE6 |0 \xF2\xB0 |0 \xCD\x40 |0 \xF2\xB1 |0 \xCD\x41 |0 \xCD\x42 |0 \xCA\xAD |0 \xCD\x43 |0 \xCD\x44 |0 \xCD\x45 |0 \xCD\x46 |0 \xCD\x47 |0 \xCD\x48 |0 \xCD\x49 |0 \xBA\xE7 |0 \xF2\xB3 |0 \xF2\xB5 |0 \xF2\xB4 |0 \xCB\xE4 |0 \xCF\xBA |0 \xF2\xB2 |0 \xCA\xB4 |0 \xD2\xCF |0 \xC2\xEC |0 \xCD\x4A |0 \xCD\x4B |0 \xCD\x4C |0 \xCD\x4D |0 \xCD\x4E |0 \xCD\x4F |0 \xCD\x50 |0 \xCE\xC3 |0 \xF2\xB8 |0 \xB0\xF6 |0 \xF2\xB7 |0 \xCD\x51 |0 \xCD\x52 |0 \xCD\x53 |0 \xCD\x54 |0 \xCD\x55 |0 \xF2\xBE |0 \xCD\x56 |0 \xB2\xCF |0 \xCD\x57 |0 \xCD\x58 |0 \xCD\x59 |0 \xCD\x5A |0 \xCD\x5B |0 \xCD\x5C |0 \xD1\xC1 |0 \xF2\xBA |0 \xCD\x5D |0 \xCD\x5E |0 \xCD\x5F |0 \xCD\x60 |0 \xCD\x61 |0 \xF2\xBC |0 \xD4\xE9 |0 \xCD\x62 |0 \xCD\x63 |0 \xF2\xBB |0 \xF2\xB6 |0 \xF2\xBF |0 \xF2\xBD |0 \xCD\x64 |0 \xF2\xB9 |0 \xCD\x65 |0 \xCD\x66 |0 \xF2\xC7 |0 \xF2\xC4 |0 \xF2\xC6 |0 \xCD\x67 |0 \xCD\x68 |0 \xF2\xCA |0 \xF2\xC2 |0 \xF2\xC0 |0 \xCD\x69 |0 \xCD\x6A |0 \xCD\x6B |0 \xF2\xC5 |0 \xCD\x6C |0 \xCD\x6D |0 \xCD\x6E |0 \xCD\x6F |0 \xCD\x70 |0 \xD6\xFB |0 \xCD\x71 |0 \xCD\x72 |0 \xCD\x73 |0 \xF2\xC1 |0 \xCD\x74 |0 \xC7\xF9 |0 \xC9\xDF |0 \xCD\x75 |0 \xF2\xC8 |0 \xB9\xC6 |0 \xB5\xB0 |0 \xCD\x76 |0 \xCD\x77 |0 \xF2\xC3 |0 \xF2\xC9 |0 \xF2\xD0 |0 \xF2\xD6 |0 \xCD\x78 |0 \xCD\x79 |0 \xBB\xD7 |0 \xCD\x7A |0 \xCD\x7B |0 \xCD\x7C |0 \xF2\xD5 |0 \xCD\xDC |0 \xCD\x7D |0 \xD6\xEB |0 \xCD\x7E |0 \xCD\x80 |0 \xF2\xD2 |0 \xF2\xD4 |0 \xCD\x81 |0 \xCD\x82 |0 \xCD\x83 |0 \xCD\x84 |0 \xB8\xF2 |0 \xCD\x85 |0 \xCD\x86 |0 \xCD\x87 |0 \xCD\x88 |0 \xF2\xCB |0 \xCD\x89 |0 \xCD\x8A |0 \xCD\x8B |0 \xF2\xCE |0 \xC2\xF9 |0 \xCD\x8C |0 \xD5\xDD |0 \xF2\xCC |0 \xF2\xCD |0 \xF2\xCF |0 \xF2\xD3 |0 \xCD\x8D |0 \xCD\x8E |0 \xCD\x8F |0 \xF2\xD9 |0 \xD3\xBC |0 \xCD\x90 |0 \xCD\x91 |0 \xCD\x92 |0 \xCD\x93 |0 \xB6\xEA |0 \xCD\x94 |0 \xCA\xF1 |0 \xCD\x95 |0 \xB7\xE4 |0 \xF2\xD7 |0 \xCD\x96 |0 \xCD\x97 |0 \xCD\x98 |0 \xF2\xD8 |0 \xF2\xDA |0 \xF2\xDD |0 \xF2\xDB |0 \xCD\x99 |0 \xCD\x9A |0 \xF2\xDC |0 \xCD\x9B |0 \xCD\x9C |0 \xCD\x9D |0 \xCD\x9E |0 \xD1\xD1 |0 \xF2\xD1 |0 \xCD\x9F |0 \xCD\xC9 |0 \xCD\xA0 |0 \xCE\xCF |0 \xD6\xA9 |0 \xCE\x40 |0 \xF2\xE3 |0 \xCE\x41 |0 \xC3\xDB |0 \xCE\x42 |0 \xF2\xE0 |0 \xCE\x43 |0 \xCE\x44 |0 \xC0\xAF |0 \xF2\xEC |0 \xF2\xDE |0 \xCE\x45 |0 \xF2\xE1 |0 \xCE\x46 |0 \xCE\x47 |0 \xCE\x48 |0 \xF2\xE8 |0 \xCE\x49 |0 \xCE\x4A |0 \xCE\x4B |0 \xCE\x4C |0 \xF2\xE2 |0 \xCE\x4D |0 \xCE\x4E |0 \xF2\xE7 |0 \xCE\x4F |0 \xCE\x50 |0 \xF2\xE6 |0 \xCE\x51 |0 \xCE\x52 |0 \xF2\xE9 |0 \xCE\x53 |0 \xCE\x54 |0 \xCE\x55 |0 \xF2\xDF |0 \xCE\x56 |0 \xCE\x57 |0 \xF2\xE4 |0 \xF2\xEA |0 \xCE\x58 |0 \xCE\x59 |0 \xCE\x5A |0 \xCE\x5B |0 \xCE\x5C |0 \xCE\x5D |0 \xCE\x5E |0 \xD3\xAC |0 \xF2\xE5 |0 \xB2\xF5 |0 \xCE\x5F |0 \xCE\x60 |0 \xF2\xF2 |0 \xCE\x61 |0 \xD0\xAB |0 \xCE\x62 |0 \xCE\x63 |0 \xCE\x64 |0 \xCE\x65 |0 \xF2\xF5 |0 \xCE\x66 |0 \xCE\x67 |0 \xCE\x68 |0 \xBB\xC8 |0 \xCE\x69 |0 \xF2\xF9 |0 \xCE\x6A |0 \xCE\x6B |0 \xCE\x6C |0 \xCE\x6D |0 \xCE\x6E |0 \xCE\x6F |0 \xF2\xF0 |0 \xCE\x70 |0 \xCE\x71 |0 \xF2\xF6 |0 \xF2\xF8 |0 \xF2\xFA |0 \xCE\x72 |0 \xCE\x73 |0 \xCE\x74 |0 \xCE\x75 |0 \xCE\x76 |0 \xCE\x77 |0 \xCE\x78 |0 \xCE\x79 |0 \xF2\xF3 |0 \xCE\x7A |0 \xF2\xF1 |0 \xCE\x7B |0 \xCE\x7C |0 \xCE\x7D |0 \xBA\xFB |0 \xCE\x7E |0 \xB5\xFB |0 \xCE\x80 |0 \xCE\x81 |0 \xCE\x82 |0 \xCE\x83 |0 \xF2\xEF |0 \xF2\xF7 |0 \xF2\xED |0 \xF2\xEE |0 \xCE\x84 |0 \xCE\x85 |0 \xCE\x86 |0 \xF2\xEB |0 \xF3\xA6 |0 \xCE\x87 |0 \xF3\xA3 |0 \xCE\x88 |0 \xCE\x89 |0 \xF3\xA2 |0 \xCE\x8A |0 \xCE\x8B |0 \xF2\xF4 |0 \xCE\x8C |0 \xC8\xDA |0 \xCE\x8D |0 \xCE\x8E |0 \xCE\x8F |0 \xCE\x90 |0 \xCE\x91 |0 \xF2\xFB |0 \xCE\x92 |0 \xCE\x93 |0 \xCE\x94 |0 \xF3\xA5 |0 \xCE\x95 |0 \xCE\x96 |0 \xCE\x97 |0 \xCE\x98 |0 \xCE\x99 |0 \xCE\x9A |0 \xCE\x9B |0 \xC3\xF8 |0 \xCE\x9C |0 \xCE\x9D |0 \xCE\x9E |0 \xCE\x9F |0 \xCE\xA0 |0 \xCF\x40 |0 \xCF\x41 |0 \xCF\x42 |0 \xF2\xFD |0 \xCF\x43 |0 \xCF\x44 |0 \xF3\xA7 |0 \xF3\xA9 |0 \xF3\xA4 |0 \xCF\x45 |0 \xF2\xFC |0 \xCF\x46 |0 \xCF\x47 |0 \xCF\x48 |0 \xF3\xAB |0 \xCF\x49 |0 \xF3\xAA |0 \xCF\x4A |0 \xCF\x4B |0 \xCF\x4C |0 \xCF\x4D |0 \xC2\xDD |0 \xCF\x4E |0 \xCF\x4F |0 \xF3\xAE |0 \xCF\x50 |0 \xCF\x51 |0 \xF3\xB0 |0 \xCF\x52 |0 \xCF\x53 |0 \xCF\x54 |0 \xCF\x55 |0 \xCF\x56 |0 \xF3\xA1 |0 \xCF\x57 |0 \xCF\x58 |0 \xCF\x59 |0 \xF3\xB1 |0 \xF3\xAC |0 \xCF\x5A |0 \xCF\x5B |0 \xCF\x5C |0 \xCF\x5D |0 \xCF\x5E |0 \xF3\xAF |0 \xF2\xFE |0 \xF3\xAD |0 \xCF\x5F |0 \xCF\x60 |0 \xCF\x61 |0 \xCF\x62 |0 \xCF\x63 |0 \xCF\x64 |0 \xCF\x65 |0 \xF3\xB2 |0 \xCF\x66 |0 \xCF\x67 |0 \xCF\x68 |0 \xCF\x69 |0 \xF3\xB4 |0 \xCF\x6A |0 \xCF\x6B |0 \xCF\x6C |0 \xCF\x6D |0 \xF3\xA8 |0 \xCF\x6E |0 \xCF\x6F |0 \xCF\x70 |0 \xCF\x71 |0 \xF3\xB3 |0 \xCF\x72 |0 \xCF\x73 |0 \xCF\x74 |0 \xF3\xB5 |0 \xCF\x75 |0 \xCF\x76 |0 \xCF\x77 |0 \xCF\x78 |0 \xCF\x79 |0 \xCF\x7A |0 \xCF\x7B |0 \xCF\x7C |0 \xCF\x7D |0 \xCF\x7E |0 \xD0\xB7 |0 \xCF\x80 |0 \xCF\x81 |0 \xCF\x82 |0 \xCF\x83 |0 \xF3\xB8 |0 \xCF\x84 |0 \xCF\x85 |0 \xCF\x86 |0 \xCF\x87 |0 \xD9\xF9 |0 \xCF\x88 |0 \xCF\x89 |0 \xCF\x8A |0 \xCF\x8B |0 \xCF\x8C |0 \xCF\x8D |0 \xF3\xB9 |0 \xCF\x8E |0 \xCF\x8F |0 \xCF\x90 |0 \xCF\x91 |0 \xCF\x92 |0 \xCF\x93 |0 \xCF\x94 |0 \xCF\x95 |0 \xF3\xB7 |0 \xCF\x96 |0 \xC8\xE4 |0 \xF3\xB6 |0 \xCF\x97 |0 \xCF\x98 |0 \xCF\x99 |0 \xCF\x9A |0 \xF3\xBA |0 \xCF\x9B |0 \xCF\x9C |0 \xCF\x9D |0 \xCF\x9E |0 \xCF\x9F |0 \xF3\xBB |0 \xB4\xC0 |0 \xCF\xA0 |0 \xD0\x40 |0 \xD0\x41 |0 \xD0\x42 |0 \xD0\x43 |0 \xD0\x44 |0 \xD0\x45 |0 \xD0\x46 |0 \xD0\x47 |0 \xD0\x48 |0 \xD0\x49 |0 \xD0\x4A |0 \xD0\x4B |0 \xD0\x4C |0 \xD0\x4D |0 \xEE\xC3 |0 \xD0\x4E |0 \xD0\x4F |0 \xD0\x50 |0 \xD0\x51 |0 \xD0\x52 |0 \xD0\x53 |0 \xF3\xBC |0 \xD0\x54 |0 \xD0\x55 |0 \xF3\xBD |0 \xD0\x56 |0 \xD0\x57 |0 \xD0\x58 |0 \xD1\xAA |0 \xD0\x59 |0 \xD0\x5A |0 \xD0\x5B |0 \xF4\xAC |0 \xD0\xC6 |0 \xD0\x5C |0 \xD0\x5D |0 \xD0\x5E |0 \xD0\x5F |0 \xD0\x60 |0 \xD0\x61 |0 \xD0\xD0 |0 \xD1\xDC |0 \xD0\x62 |0 \xD0\x63 |0 \xD0\x64 |0 \xD0\x65 |0 \xD0\x66 |0 \xD0\x67 |0 \xCF\xCE |0 \xD0\x68 |0 \xD0\x69 |0 \xBD\xD6 |0 \xD0\x6A |0 \xD1\xC3 |0 \xD0\x6B |0 \xD0\x6C |0 \xD0\x6D |0 \xD0\x6E |0 \xD0\x6F |0 \xD0\x70 |0 \xD0\x71 |0 \xBA\xE2 |0 \xE1\xE9 |0 \xD2\xC2 |0 \xF1\xC2 |0 \xB2\xB9 |0 \xD0\x72 |0 \xD0\x73 |0 \xB1\xED |0 \xF1\xC3 |0 \xD0\x74 |0 \xC9\xC0 |0 \xB3\xC4 |0 \xD0\x75 |0 \xD9\xF2 |0 \xD0\x76 |0 \xCB\xA5 |0 \xD0\x77 |0 \xF1\xC4 |0 \xD0\x78 |0 \xD0\x79 |0 \xD0\x7A |0 \xD0\x7B |0 \xD6\xD4 |0 \xD0\x7C |0 \xD0\x7D |0 \xD0\x7E |0 \xD0\x80 |0 \xD0\x81 |0 \xF1\xC5 |0 \xF4\xC0 |0 \xF1\xC6 |0 \xD0\x82 |0 \xD4\xAC |0 \xF1\xC7 |0 \xD0\x83 |0 \xB0\xC0 |0 \xF4\xC1 |0 \xD0\x84 |0 \xD0\x85 |0 \xF4\xC2 |0 \xD0\x86 |0 \xD0\x87 |0 \xB4\xFC |0 \xD0\x88 |0 \xC5\xDB |0 \xD0\x89 |0 \xD0\x8A |0 \xD0\x8B |0 \xD0\x8C |0 \xCC\xBB |0 \xD0\x8D |0 \xD0\x8E |0 \xD0\x8F |0 \xD0\xE4 |0 \xD0\x90 |0 \xD0\x91 |0 \xD0\x92 |0 \xD0\x93 |0 \xD0\x94 |0 \xCD\xE0 |0 \xD0\x95 |0 \xD0\x96 |0 \xD0\x97 |0 \xD0\x98 |0 \xD0\x99 |0 \xF1\xC8 |0 \xD0\x9A |0 \xD9\xF3 |0 \xD0\x9B |0 \xD0\x9C |0 \xD0\x9D |0 \xD0\x9E |0 \xD0\x9F |0 \xD0\xA0 |0 \xB1\xBB |0 \xD1\x40 |0 \xCF\xAE |0 \xD1\x41 |0 \xD1\x42 |0 \xD1\x43 |0 \xB8\xA4 |0 \xD1\x44 |0 \xD1\x45 |0 \xD1\x46 |0 \xD1\x47 |0 \xD1\x48 |0 \xF1\xCA |0 \xD1\x49 |0 \xD1\x4A |0 \xD1\x4B |0 \xD1\x4C |0 \xF1\xCB |0 \xD1\x4D |0 \xD1\x4E |0 \xD1\x4F |0 \xD1\x50 |0 \xB2\xC3 |0 \xC1\xD1 |0 \xD1\x51 |0 \xD1\x52 |0 \xD7\xB0 |0 \xF1\xC9 |0 \xD1\x53 |0 \xD1\x54 |0 \xF1\xCC |0 \xD1\x55 |0 \xD1\x56 |0 \xD1\x57 |0 \xD1\x58 |0 \xF1\xCE |0 \xD1\x59 |0 \xD1\x5A |0 \xD1\x5B |0 \xD9\xF6 |0 \xD1\x5C |0 \xD2\xE1 |0 \xD4\xA3 |0 \xD1\x5D |0 \xD1\x5E |0 \xF4\xC3 |0 \xC8\xB9 |0 \xD1\x5F |0 \xD1\x60 |0 \xD1\x61 |0 \xD1\x62 |0 \xD1\x63 |0 \xF4\xC4 |0 \xD1\x64 |0 \xD1\x65 |0 \xF1\xCD |0 \xF1\xCF |0 \xBF\xE3 |0 \xF1\xD0 |0 \xD1\x66 |0 \xD1\x67 |0 \xF1\xD4 |0 \xD1\x68 |0 \xD1\x69 |0 \xD1\x6A |0 \xD1\x6B |0 \xD1\x6C |0 \xD1\x6D |0 \xD1\x6E |0 \xF1\xD6 |0 \xF1\xD1 |0 \xD1\x6F |0 \xC9\xD1 |0 \xC5\xE1 |0 \xD1\x70 |0 \xD1\x71 |0 \xD1\x72 |0 \xC2\xE3 |0 \xB9\xFC |0 \xD1\x73 |0 \xD1\x74 |0 \xF1\xD3 |0 \xD1\x75 |0 \xF1\xD5 |0 \xD1\x76 |0 \xD1\x77 |0 \xD1\x78 |0 \xB9\xD3 |0 \xD1\x79 |0 \xD1\x7A |0 \xD1\x7B |0 \xD1\x7C |0 \xD1\x7D |0 \xD1\x7E |0 \xD1\x80 |0 \xF1\xDB |0 \xD1\x81 |0 \xD1\x82 |0 \xD1\x83 |0 \xD1\x84 |0 \xD1\x85 |0 \xBA\xD6 |0 \xD1\x86 |0 \xB0\xFD |0 \xF1\xD9 |0 \xD1\x87 |0 \xD1\x88 |0 \xD1\x89 |0 \xD1\x8A |0 \xD1\x8B |0 \xF1\xD8 |0 \xF1\xD2 |0 \xF1\xDA |0 \xD1\x8C |0 \xD1\x8D |0 \xD1\x8E |0 \xD1\x8F |0 \xD1\x90 |0 \xF1\xD7 |0 \xD1\x91 |0 \xD1\x92 |0 \xD1\x93 |0 \xC8\xEC |0 \xD1\x94 |0 \xD1\x95 |0 \xD1\x96 |0 \xD1\x97 |0 \xCD\xCA |0 \xF1\xDD |0 \xD1\x98 |0 \xD1\x99 |0 \xD1\x9A |0 \xD1\x9B |0 \xE5\xBD |0 \xD1\x9C |0 \xD1\x9D |0 \xD1\x9E |0 \xF1\xDC |0 \xD1\x9F |0 \xF1\xDE |0 \xD1\xA0 |0 \xD2\x40 |0 \xD2\x41 |0 \xD2\x42 |0 \xD2\x43 |0 \xD2\x44 |0 \xD2\x45 |0 \xD2\x46 |0 \xD2\x47 |0 \xD2\x48 |0 \xF1\xDF |0 \xD2\x49 |0 \xD2\x4A |0 \xCF\xE5 |0 \xD2\x4B |0 \xD2\x4C |0 \xD2\x4D |0 \xD2\x4E |0 \xD2\x4F |0 \xD2\x50 |0 \xD2\x51 |0 \xD2\x52 |0 \xD2\x53 |0 \xD2\x54 |0 \xD2\x55 |0 \xD2\x56 |0 \xD2\x57 |0 \xD2\x58 |0 \xD2\x59 |0 \xD2\x5A |0 \xD2\x5B |0 \xD2\x5C |0 \xD2\x5D |0 \xD2\x5E |0 \xD2\x5F |0 \xD2\x60 |0 \xD2\x61 |0 \xD2\x62 |0 \xD2\x63 |0 \xF4\xC5 |0 \xBD\xF3 |0 \xD2\x64 |0 \xD2\x65 |0 \xD2\x66 |0 \xD2\x67 |0 \xD2\x68 |0 \xD2\x69 |0 \xF1\xE0 |0 \xD2\x6A |0 \xD2\x6B |0 \xD2\x6C |0 \xD2\x6D |0 \xD2\x6E |0 \xD2\x6F |0 \xD2\x70 |0 \xD2\x71 |0 \xD2\x72 |0 \xD2\x73 |0 \xD2\x74 |0 \xD2\x75 |0 \xD2\x76 |0 \xD2\x77 |0 \xD2\x78 |0 \xD2\x79 |0 \xD2\x7A |0 \xD2\x7B |0 \xD2\x7C |0 \xD2\x7D |0 \xF1\xE1 |0 \xD2\x7E |0 \xD2\x80 |0 \xD2\x81 |0 \xCE\xF7 |0 \xD2\x82 |0 \xD2\xAA |0 \xD2\x83 |0 \xF1\xFB |0 \xD2\x84 |0 \xD2\x85 |0 \xB8\xB2 |0 \xD2\x86 |0 \xD2\x87 |0 \xD2\x88 |0 \xD2\x89 |0 \xD2\x8A |0 \xD2\x8B |0 \xD2\x8C |0 \xD2\x8D |0 \xD2\x8E |0 \xD2\x8F |0 \xD2\x90 |0 \xD2\x91 |0 \xD2\x92 |0 \xD2\x93 |0 \xD2\x94 |0 \xD2\x95 |0 \xD2\x96 |0 \xD2\x97 |0 \xD2\x98 |0 \xD2\x99 |0 \xD2\x9A |0 \xD2\x9B |0 \xD2\x9C |0 \xD2\x9D |0 \xD2\x9E |0 \xD2\x9F |0 \xD2\xA0 |0 \xD3\x40 |0 \xD3\x41 |0 \xD3\x42 |0 \xD3\x43 |0 \xD3\x44 |0 \xD3\x45 |0 \xD3\x46 |0 \xD3\x47 |0 \xD3\x48 |0 \xD3\x49 |0 \xD3\x4A |0 \xD3\x4B |0 \xD3\x4C |0 \xD3\x4D |0 \xD3\x4E |0 \xD3\x4F |0 \xD3\x50 |0 \xD3\x51 |0 \xD3\x52 |0 \xD3\x53 |0 \xD3\x54 |0 \xD3\x55 |0 \xD3\x56 |0 \xD3\x57 |0 \xD3\x58 |0 \xD3\x59 |0 \xD3\x5A |0 \xD3\x5B |0 \xD3\x5C |0 \xD3\x5D |0 \xD3\x5E |0 \xBC\xFB |0 \xB9\xDB |0 \xD3\x5F |0 \xB9\xE6 |0 \xC3\xD9 |0 \xCA\xD3 |0 \xEA\xE8 |0 \xC0\xC0 |0 \xBE\xF5 |0 \xEA\xE9 |0 \xEA\xEA |0 \xEA\xEB |0 \xD3\x60 |0 \xEA\xEC |0 \xEA\xED |0 \xEA\xEE |0 \xEA\xEF |0 \xBD\xC7 |0 \xD3\x61 |0 \xD3\x62 |0 \xD3\x63 |0 \xF5\xFB |0 \xD3\x64 |0 \xD3\x65 |0 \xD3\x66 |0 \xF5\xFD |0 \xD3\x67 |0 \xF5\xFE |0 \xD3\x68 |0 \xF5\xFC |0 \xD3\x69 |0 \xD3\x6A |0 \xD3\x6B |0 \xD3\x6C |0 \xBD\xE2 |0 \xD3\x6D |0 \xF6\xA1 |0 \xB4\xA5 |0 \xD3\x6E |0 \xD3\x6F |0 \xD3\x70 |0 \xD3\x71 |0 \xF6\xA2 |0 \xD3\x72 |0 \xD3\x73 |0 \xD3\x74 |0 \xF6\xA3 |0 \xD3\x75 |0 \xD3\x76 |0 \xD3\x77 |0 \xEC\xB2 |0 \xD3\x78 |0 \xD3\x79 |0 \xD3\x7A |0 \xD3\x7B |0 \xD3\x7C |0 \xD3\x7D |0 \xD3\x7E |0 \xD3\x80 |0 \xD3\x81 |0 \xD3\x82 |0 \xD3\x83 |0 \xD3\x84 |0 \xD1\xD4 |0 \xD3\x85 |0 \xD3\x86 |0 \xD3\x87 |0 \xD3\x88 |0 \xD3\x89 |0 \xD3\x8A |0 \xD9\xEA |0 \xD3\x8B |0 \xD3\x8C |0 \xD3\x8D |0 \xD3\x8E |0 \xD3\x8F |0 \xD3\x90 |0 \xD3\x91 |0 \xD3\x92 |0 \xD3\x93 |0 \xD3\x94 |0 \xD3\x95 |0 \xD3\x96 |0 \xD3\x97 |0 \xD3\x98 |0 \xD3\x99 |0 \xD3\x9A |0 \xD3\x9B |0 \xD3\x9C |0 \xD3\x9D |0 \xD3\x9E |0 \xD3\x9F |0 \xD3\xA0 |0 \xD4\x40 |0 \xD4\x41 |0 \xD4\x42 |0 \xD4\x43 |0 \xD4\x44 |0 \xD4\x45 |0 \xD4\x46 |0 \xD4\x47 |0 \xD4\x48 |0 \xD4\x49 |0 \xD4\x4A |0 \xD4\x4B |0 \xD4\x4C |0 \xD4\x4D |0 \xD4\x4E |0 \xD4\x4F |0 \xD4\x50 |0 \xD4\x51 |0 \xD4\x52 |0 \xD4\x53 |0 \xD4\x54 |0 \xD4\x55 |0 \xD4\x56 |0 \xD4\x57 |0 \xD4\x58 |0 \xD4\x59 |0 \xD4\x5A |0 \xD4\x5B |0 \xD4\x5C |0 \xD4\x5D |0 \xD4\x5E |0 \xD4\x5F |0 \xF6\xA4 |0 \xD4\x60 |0 \xD4\x61 |0 \xD4\x62 |0 \xD4\x63 |0 \xD4\x64 |0 \xD4\x65 |0 \xD4\x66 |0 \xD4\x67 |0 \xD4\x68 |0 \xEE\xBA |0 \xD4\x69 |0 \xD4\x6A |0 \xD4\x6B |0 \xD4\x6C |0 \xD4\x6D |0 \xD4\x6E |0 \xD4\x6F |0 \xD4\x70 |0 \xD4\x71 |0 \xD4\x72 |0 \xD4\x73 |0 \xD4\x74 |0 \xD4\x75 |0 \xD4\x76 |0 \xD4\x77 |0 \xD4\x78 |0 \xD4\x79 |0 \xD4\x7A |0 \xD4\x7B |0 \xD4\x7C |0 \xD4\x7D |0 \xD4\x7E |0 \xD4\x80 |0 \xD4\x81 |0 \xD4\x82 |0 \xD4\x83 |0 \xD4\x84 |0 \xD4\x85 |0 \xD4\x86 |0 \xD4\x87 |0 \xD4\x88 |0 \xD4\x89 |0 \xD4\x8A |0 \xD4\x8B |0 \xD4\x8C |0 \xD4\x8D |0 \xD4\x8E |0 \xD4\x8F |0 \xD4\x90 |0 \xD4\x91 |0 \xD4\x92 |0 \xD4\x93 |0 \xD4\x94 |0 \xD4\x95 |0 \xD4\x96 |0 \xD4\x97 |0 \xD4\x98 |0 \xD4\x99 |0 \xD5\xB2 |0 \xD4\x9A |0 \xD4\x9B |0 \xD4\x9C |0 \xD4\x9D |0 \xD4\x9E |0 \xD4\x9F |0 \xD4\xA0 |0 \xD5\x40 |0 \xD5\x41 |0 \xD5\x42 |0 \xD5\x43 |0 \xD5\x44 |0 \xD5\x45 |0 \xD5\x46 |0 \xD5\x47 |0 \xD3\xFE |0 \xCC\xDC |0 \xD5\x48 |0 \xD5\x49 |0 \xD5\x4A |0 \xD5\x4B |0 \xD5\x4C |0 \xD5\x4D |0 \xD5\x4E |0 \xD5\x4F |0 \xCA\xC4 |0 \xD5\x50 |0 \xD5\x51 |0 \xD5\x52 |0 \xD5\x53 |0 \xD5\x54 |0 \xD5\x55 |0 \xD5\x56 |0 \xD5\x57 |0 \xD5\x58 |0 \xD5\x59 |0 \xD5\x5A |0 \xD5\x5B |0 \xD5\x5C |0 \xD5\x5D |0 \xD5\x5E |0 \xD5\x5F |0 \xD5\x60 |0 \xD5\x61 |0 \xD5\x62 |0 \xD5\x63 |0 \xD5\x64 |0 \xD5\x65 |0 \xD5\x66 |0 \xD5\x67 |0 \xD5\x68 |0 \xD5\x69 |0 \xD5\x6A |0 \xD5\x6B |0 \xD5\x6C |0 \xD5\x6D |0 \xD5\x6E |0 \xD5\x6F |0 \xD5\x70 |0 \xD5\x71 |0 \xD5\x72 |0 \xD5\x73 |0 \xD5\x74 |0 \xD5\x75 |0 \xD5\x76 |0 \xD5\x77 |0 \xD5\x78 |0 \xD5\x79 |0 \xD5\x7A |0 \xD5\x7B |0 \xD5\x7C |0 \xD5\x7D |0 \xD5\x7E |0 \xD5\x80 |0 \xD5\x81 |0 \xD5\x82 |0 \xD5\x83 |0 \xD5\x84 |0 \xD5\x85 |0 \xD5\x86 |0 \xD5\x87 |0 \xD5\x88 |0 \xD5\x89 |0 \xD5\x8A |0 \xD5\x8B |0 \xD5\x8C |0 \xD5\x8D |0 \xD5\x8E |0 \xD5\x8F |0 \xD5\x90 |0 \xD5\x91 |0 \xD5\x92 |0 \xD5\x93 |0 \xD5\x94 |0 \xD5\x95 |0 \xD5\x96 |0 \xD5\x97 |0 \xD5\x98 |0 \xD5\x99 |0 \xD5\x9A |0 \xD5\x9B |0 \xD5\x9C |0 \xD5\x9D |0 \xD5\x9E |0 \xD5\x9F |0 \xD5\xA0 |0 \xD6\x40 |0 \xD6\x41 |0 \xD6\x42 |0 \xD6\x43 |0 \xD6\x44 |0 \xD6\x45 |0 \xD6\x46 |0 \xD6\x47 |0 \xD6\x48 |0 \xD6\x49 |0 \xD6\x4A |0 \xD6\x4B |0 \xD6\x4C |0 \xD6\x4D |0 \xD6\x4E |0 \xD6\x4F |0 \xD6\x50 |0 \xD6\x51 |0 \xD6\x52 |0 \xD6\x53 |0 \xD6\x54 |0 \xD6\x55 |0 \xD6\x56 |0 \xD6\x57 |0 \xD6\x58 |0 \xD6\x59 |0 \xD6\x5A |0 \xD6\x5B |0 \xD6\x5C |0 \xD6\x5D |0 \xD6\x5E |0 \xD6\x5F |0 \xD6\x60 |0 \xD6\x61 |0 \xD6\x62 |0 \xE5\xC0 |0 \xD6\x63 |0 \xD6\x64 |0 \xD6\x65 |0 \xD6\x66 |0 \xD6\x67 |0 \xD6\x68 |0 \xD6\x69 |0 \xD6\x6A |0 \xD6\x6B |0 \xD6\x6C |0 \xD6\x6D |0 \xD6\x6E |0 \xD6\x6F |0 \xD6\x70 |0 \xD6\x71 |0 \xD6\x72 |0 \xD6\x73 |0 \xD6\x74 |0 \xD6\x75 |0 \xD6\x76 |0 \xD6\x77 |0 \xD6\x78 |0 \xD6\x79 |0 \xD6\x7A |0 \xD6\x7B |0 \xD6\x7C |0 \xD6\x7D |0 \xD6\x7E |0 \xD6\x80 |0 \xD6\x81 |0 \xF6\xA5 |0 \xD6\x82 |0 \xD6\x83 |0 \xD6\x84 |0 \xD6\x85 |0 \xD6\x86 |0 \xD6\x87 |0 \xD6\x88 |0 \xD6\x89 |0 \xD6\x8A |0 \xD6\x8B |0 \xD6\x8C |0 \xD6\x8D |0 \xD6\x8E |0 \xD6\x8F |0 \xD6\x90 |0 \xD6\x91 |0 \xD6\x92 |0 \xD6\x93 |0 \xD6\x94 |0 \xD6\x95 |0 \xD6\x96 |0 \xD6\x97 |0 \xD6\x98 |0 \xD6\x99 |0 \xD6\x9A |0 \xD6\x9B |0 \xD6\x9C |0 \xD6\x9D |0 \xD6\x9E |0 \xD6\x9F |0 \xD6\xA0 |0 \xD7\x40 |0 \xD7\x41 |0 \xD7\x42 |0 \xD7\x43 |0 \xD7\x44 |0 \xD7\x45 |0 \xD7\x46 |0 \xD7\x47 |0 \xD7\x48 |0 \xD7\x49 |0 \xD7\x4A |0 \xD7\x4B |0 \xD7\x4C |0 \xD7\x4D |0 \xD7\x4E |0 \xD7\x4F |0 \xD7\x50 |0 \xD7\x51 |0 \xD7\x52 |0 \xD7\x53 |0 \xD7\x54 |0 \xD7\x55 |0 \xD7\x56 |0 \xD7\x57 |0 \xD7\x58 |0 \xD7\x59 |0 \xD7\x5A |0 \xD7\x5B |0 \xD7\x5C |0 \xD7\x5D |0 \xD7\x5E |0 \xD7\x5F |0 \xBE\xAF |0 \xD7\x60 |0 \xD7\x61 |0 \xD7\x62 |0 \xD7\x63 |0 \xD7\x64 |0 \xC6\xA9 |0 \xD7\x65 |0 \xD7\x66 |0 \xD7\x67 |0 \xD7\x68 |0 \xD7\x69 |0 \xD7\x6A |0 \xD7\x6B |0 \xD7\x6C |0 \xD7\x6D |0 \xD7\x6E |0 \xD7\x6F |0 \xD7\x70 |0 \xD7\x71 |0 \xD7\x72 |0 \xD7\x73 |0 \xD7\x74 |0 \xD7\x75 |0 \xD7\x76 |0 \xD7\x77 |0 \xD7\x78 |0 \xD7\x79 |0 \xD7\x7A |0 \xD7\x7B |0 \xD7\x7C |0 \xD7\x7D |0 \xD7\x7E |0 \xD7\x80 |0 \xD7\x81 |0 \xD7\x82 |0 \xD7\x83 |0 \xD7\x84 |0 \xD7\x85 |0 \xD7\x86 |0 \xD7\x87 |0 \xD7\x88 |0 \xD7\x89 |0 \xD7\x8A |0 \xD7\x8B |0 \xD7\x8C |0 \xD7\x8D |0 \xD7\x8E |0 \xD7\x8F |0 \xD7\x90 |0 \xD7\x91 |0 \xD7\x92 |0 \xD7\x93 |0 \xD7\x94 |0 \xD7\x95 |0 \xD7\x96 |0 \xD7\x97 |0 \xD7\x98 |0 \xDA\xA5 |0 \xBC\xC6 |0 \xB6\xA9 |0 \xB8\xBC |0 \xC8\xCF |0 \xBC\xA5 |0 \xDA\xA6 |0 \xDA\xA7 |0 \xCC\xD6 |0 \xC8\xC3 |0 \xDA\xA8 |0 \xC6\xFD |0 \xD7\x99 |0 \xD1\xB5 |0 \xD2\xE9 |0 \xD1\xB6 |0 \xBC\xC7 |0 \xD7\x9A |0 \xBD\xB2 |0 \xBB\xE4 |0 \xDA\xA9 |0 \xDA\xAA |0 \xD1\xC8 |0 \xDA\xAB |0 \xD0\xED |0 \xB6\xEF |0 \xC2\xDB |0 \xD7\x9B |0 \xCB\xCF |0 \xB7\xED |0 \xC9\xE8 |0 \xB7\xC3 |0 \xBE\xF7 |0 \xD6\xA4 |0 \xDA\xAC |0 \xDA\xAD |0 \xC6\xC0 |0 \xD7\xE7 |0 \xCA\xB6 |0 \xD7\x9C |0 \xD5\xA9 |0 \xCB\xDF |0 \xD5\xEF |0 \xDA\xAE |0 \xD6\xDF |0 \xB4\xCA |0 \xDA\xB0 |0 \xDA\xAF |0 \xD7\x9D |0 \xD2\xEB |0 \xDA\xB1 |0 \xDA\xB2 |0 \xDA\xB3 |0 \xCA\xD4 |0 \xDA\xB4 |0 \xCA\xAB |0 \xDA\xB5 |0 \xDA\xB6 |0 \xB3\xCF |0 \xD6\xEF |0 \xDA\xB7 |0 \xBB\xB0 |0 \xB5\xAE |0 \xDA\xB8 |0 \xDA\xB9 |0 \xB9\xEE |0 \xD1\xAF |0 \xD2\xE8 |0 \xDA\xBA |0 \xB8\xC3 |0 \xCF\xEA |0 \xB2\xEF |0 \xDA\xBB |0 \xDA\xBC |0 \xD7\x9E |0 \xBD\xEB |0 \xCE\xDC |0 \xD3\xEF |0 \xDA\xBD |0 \xCE\xF3 |0 \xDA\xBE |0 \xD3\xD5 |0 \xBB\xE5 |0 \xDA\xBF |0 \xCB\xB5 |0 \xCB\xD0 |0 \xDA\xC0 |0 \xC7\xEB |0 \xD6\xEE |0 \xDA\xC1 |0 \xC5\xB5 |0 \xB6\xC1 |0 \xDA\xC2 |0 \xB7\xCC |0 \xBF\xCE |0 \xDA\xC3 |0 \xDA\xC4 |0 \xCB\xAD |0 \xDA\xC5 |0 \xB5\xF7 |0 \xDA\xC6 |0 \xC1\xC2 |0 \xD7\xBB |0 \xDA\xC7 |0 \xCC\xB8 |0 \xD7\x9F |0 \xD2\xEA |0 \xC4\xB1 |0 \xDA\xC8 |0 \xB5\xFD |0 \xBB\xD1 |0 \xDA\xC9 |0 \xD0\xB3 |0 \xDA\xCA |0 \xDA\xCB |0 \xCE\xBD |0 \xDA\xCC |0 \xDA\xCD |0 \xDA\xCE |0 \xB2\xF7 |0 \xDA\xD1 |0 \xDA\xCF |0 \xD1\xE8 |0 \xDA\xD0 |0 \xC3\xD5 |0 \xDA\xD2 |0 \xD7\xA0 |0 \xDA\xD3 |0 \xDA\xD4 |0 \xDA\xD5 |0 \xD0\xBB |0 \xD2\xA5 |0 \xB0\xF9 |0 \xDA\xD6 |0 \xC7\xAB |0 \xDA\xD7 |0 \xBD\xF7 |0 \xC3\xA1 |0 \xDA\xD8 |0 \xDA\xD9 |0 \xC3\xFD |0 \xCC\xB7 |0 \xDA\xDA |0 \xDA\xDB |0 \xC0\xBE |0 \xC6\xD7 |0 \xDA\xDC |0 \xDA\xDD |0 \xC7\xB4 |0 \xDA\xDE |0 \xDA\xDF |0 \xB9\xC8 |0 \xD8\x40 |0 \xD8\x41 |0 \xD8\x42 |0 \xD8\x43 |0 \xD8\x44 |0 \xD8\x45 |0 \xD8\x46 |0 \xD8\x47 |0 \xD8\x48 |0 \xBB\xED |0 \xD8\x49 |0 \xD8\x4A |0 \xD8\x4B |0 \xD8\x4C |0 \xB6\xB9 |0 \xF4\xF8 |0 \xD8\x4D |0 \xF4\xF9 |0 \xD8\x4E |0 \xD8\x4F |0 \xCD\xE3 |0 \xD8\x50 |0 \xD8\x51 |0 \xD8\x52 |0 \xD8\x53 |0 \xD8\x54 |0 \xD8\x55 |0 \xD8\x56 |0 \xD8\x57 |0 \xF5\xB9 |0 \xD8\x58 |0 \xD8\x59 |0 \xD8\x5A |0 \xD8\x5B |0 \xEB\xE0 |0 \xD8\x5C |0 \xD8\x5D |0 \xD8\x5E |0 \xD8\x5F |0 \xD8\x60 |0 \xD8\x61 |0 \xCF\xF3 |0 \xBB\xBF |0 \xD8\x62 |0 \xD8\x63 |0 \xD8\x64 |0 \xD8\x65 |0 \xD8\x66 |0 \xD8\x67 |0 \xD8\x68 |0 \xBA\xC0 |0 \xD4\xA5 |0 \xD8\x69 |0 \xD8\x6A |0 \xD8\x6B |0 \xD8\x6C |0 \xD8\x6D |0 \xD8\x6E |0 \xD8\x6F |0 \xE1\xD9 |0 \xD8\x70 |0 \xD8\x71 |0 \xD8\x72 |0 \xD8\x73 |0 \xF5\xF4 |0 \xB1\xAA |0 \xB2\xF2 |0 \xD8\x74 |0 \xD8\x75 |0 \xD8\x76 |0 \xD8\x77 |0 \xD8\x78 |0 \xD8\x79 |0 \xD8\x7A |0 \xF5\xF5 |0 \xD8\x7B |0 \xD8\x7C |0 \xF5\xF7 |0 \xD8\x7D |0 \xD8\x7E |0 \xD8\x80 |0 \xBA\xD1 |0 \xF5\xF6 |0 \xD8\x81 |0 \xC3\xB2 |0 \xD8\x82 |0 \xD8\x83 |0 \xD8\x84 |0 \xD8\x85 |0 \xD8\x86 |0 \xD8\x87 |0 \xD8\x88 |0 \xF5\xF9 |0 \xD8\x89 |0 \xD8\x8A |0 \xD8\x8B |0 \xF5\xF8 |0 \xD8\x8C |0 \xD8\x8D |0 \xD8\x8E |0 \xD8\x8F |0 \xD8\x90 |0 \xD8\x91 |0 \xD8\x92 |0 \xD8\x93 |0 \xD8\x94 |0 \xD8\x95 |0 \xD8\x96 |0 \xD8\x97 |0 \xD8\x98 |0 \xD8\x99 |0 \xD8\x9A |0 \xD8\x9B |0 \xD8\x9C |0 \xD8\x9D |0 \xD8\x9E |0 \xD8\x9F |0 \xD8\xA0 |0 \xD9\x40 |0 \xD9\x41 |0 \xD9\x42 |0 \xD9\x43 |0 \xD9\x44 |0 \xD9\x45 |0 \xD9\x46 |0 \xD9\x47 |0 \xD9\x48 |0 \xD9\x49 |0 \xD9\x4A |0 \xD9\x4B |0 \xD9\x4C |0 \xD9\x4D |0 \xD9\x4E |0 \xD9\x4F |0 \xD9\x50 |0 \xD9\x51 |0 \xD9\x52 |0 \xD9\x53 |0 \xD9\x54 |0 \xD9\x55 |0 \xD9\x56 |0 \xD9\x57 |0 \xD9\x58 |0 \xD9\x59 |0 \xD9\x5A |0 \xD9\x5B |0 \xD9\x5C |0 \xD9\x5D |0 \xD9\x5E |0 \xD9\x5F |0 \xD9\x60 |0 \xD9\x61 |0 \xD9\x62 |0 \xD9\x63 |0 \xD9\x64 |0 \xD9\x65 |0 \xD9\x66 |0 \xD9\x67 |0 \xD9\x68 |0 \xD9\x69 |0 \xD9\x6A |0 \xD9\x6B |0 \xD9\x6C |0 \xD9\x6D |0 \xD9\x6E |0 \xD9\x6F |0 \xD9\x70 |0 \xD9\x71 |0 \xD9\x72 |0 \xD9\x73 |0 \xD9\x74 |0 \xD9\x75 |0 \xD9\x76 |0 \xD9\x77 |0 \xD9\x78 |0 \xD9\x79 |0 \xD9\x7A |0 \xD9\x7B |0 \xD9\x7C |0 \xD9\x7D |0 \xD9\x7E |0 \xD9\x80 |0 \xD9\x81 |0 \xD9\x82 |0 \xD9\x83 |0 \xD9\x84 |0 \xD9\x85 |0 \xD9\x86 |0 \xD9\x87 |0 \xD9\x88 |0 \xD9\x89 |0 \xD9\x8A |0 \xD9\x8B |0 \xD9\x8C |0 \xD9\x8D |0 \xD9\x8E |0 \xD9\x8F |0 \xD9\x90 |0 \xD9\x91 |0 \xD9\x92 |0 \xD9\x93 |0 \xD9\x94 |0 \xD9\x95 |0 \xD9\x96 |0 \xD9\x97 |0 \xD9\x98 |0 \xD9\x99 |0 \xD9\x9A |0 \xD9\x9B |0 \xD9\x9C |0 \xD9\x9D |0 \xD9\x9E |0 \xD9\x9F |0 \xD9\xA0 |0 \xDA\x40 |0 \xDA\x41 |0 \xDA\x42 |0 \xDA\x43 |0 \xDA\x44 |0 \xDA\x45 |0 \xDA\x46 |0 \xDA\x47 |0 \xDA\x48 |0 \xDA\x49 |0 \xDA\x4A |0 \xDA\x4B |0 \xDA\x4C |0 \xDA\x4D |0 \xDA\x4E |0 \xB1\xB4 |0 \xD5\xEA |0 \xB8\xBA |0 \xDA\x4F |0 \xB9\xB1 |0 \xB2\xC6 |0 \xD4\xF0 |0 \xCF\xCD |0 \xB0\xDC |0 \xD5\xCB |0 \xBB\xF5 |0 \xD6\xCA |0 \xB7\xB7 |0 \xCC\xB0 |0 \xC6\xB6 |0 \xB1\xE1 |0 \xB9\xBA |0 \xD6\xFC |0 \xB9\xE1 |0 \xB7\xA1 |0 \xBC\xFA |0 \xEA\xDA |0 \xEA\xDB |0 \xCC\xF9 |0 \xB9\xF3 |0 \xEA\xDC |0 \xB4\xFB |0 \xC3\xB3 |0 \xB7\xD1 |0 \xBA\xD8 |0 \xEA\xDD |0 \xD4\xF4 |0 \xEA\xDE |0 \xBC\xD6 |0 \xBB\xDF |0 \xEA\xDF |0 \xC1\xDE |0 \xC2\xB8 |0 \xD4\xDF |0 \xD7\xCA |0 \xEA\xE0 |0 \xEA\xE1 |0 \xEA\xE4 |0 \xEA\xE2 |0 \xEA\xE3 |0 \xC9\xDE |0 \xB8\xB3 |0 \xB6\xC4 |0 \xEA\xE5 |0 \xCA\xEA |0 \xC9\xCD |0 \xB4\xCD |0 \xDA\x50 |0 \xDA\x51 |0 \xE2\xD9 |0 \xC5\xE2 |0 \xEA\xE6 |0 \xC0\xB5 |0 \xDA\x52 |0 \xD7\xB8 |0 \xEA\xE7 |0 \xD7\xAC |0 \xC8\xFC |0 \xD8\xD3 |0 \xD8\xCD |0 \xD4\xDE |0 \xDA\x53 |0 \xD4\xF9 |0 \xC9\xC4 |0 \xD3\xAE |0 \xB8\xD3 |0 \xB3\xE0 |0 \xDA\x54 |0 \xC9\xE2 |0 \xF4\xF6 |0 \xDA\x55 |0 \xDA\x56 |0 \xDA\x57 |0 \xBA\xD5 |0 \xDA\x58 |0 \xF4\xF7 |0 \xDA\x59 |0 \xDA\x5A |0 \xD7\xDF |0 \xDA\x5B |0 \xDA\x5C |0 \xF4\xF1 |0 \xB8\xB0 |0 \xD5\xD4 |0 \xB8\xCF |0 \xC6\xF0 |0 \xDA\x5D |0 \xDA\x5E |0 \xDA\x5F |0 \xDA\x60 |0 \xDA\x61 |0 \xDA\x62 |0 \xDA\x63 |0 \xDA\x64 |0 \xDA\x65 |0 \xB3\xC3 |0 \xDA\x66 |0 \xDA\x67 |0 \xF4\xF2 |0 \xB3\xAC |0 \xDA\x68 |0 \xDA\x69 |0 \xDA\x6A |0 \xDA\x6B |0 \xD4\xBD |0 \xC7\xF7 |0 \xDA\x6C |0 \xDA\x6D |0 \xDA\x6E |0 \xDA\x6F |0 \xDA\x70 |0 \xF4\xF4 |0 \xDA\x71 |0 \xDA\x72 |0 \xF4\xF3 |0 \xDA\x73 |0 \xDA\x74 |0 \xDA\x75 |0 \xDA\x76 |0 \xDA\x77 |0 \xDA\x78 |0 \xDA\x79 |0 \xDA\x7A |0 \xDA\x7B |0 \xDA\x7C |0 \xCC\xCB |0 \xDA\x7D |0 \xDA\x7E |0 \xDA\x80 |0 \xC8\xA4 |0 \xDA\x81 |0 \xDA\x82 |0 \xDA\x83 |0 \xDA\x84 |0 \xDA\x85 |0 \xDA\x86 |0 \xDA\x87 |0 \xDA\x88 |0 \xDA\x89 |0 \xDA\x8A |0 \xDA\x8B |0 \xDA\x8C |0 \xDA\x8D |0 \xF4\xF5 |0 \xDA\x8E |0 \xD7\xE3 |0 \xC5\xBF |0 \xF5\xC0 |0 \xDA\x8F |0 \xDA\x90 |0 \xF5\xBB |0 \xDA\x91 |0 \xF5\xC3 |0 \xDA\x92 |0 \xF5\xC2 |0 \xDA\x93 |0 \xD6\xBA |0 \xF5\xC1 |0 \xDA\x94 |0 \xDA\x95 |0 \xDA\x96 |0 \xD4\xBE |0 \xF5\xC4 |0 \xDA\x97 |0 \xF5\xCC |0 \xDA\x98 |0 \xDA\x99 |0 \xDA\x9A |0 \xDA\x9B |0 \xB0\xCF |0 \xB5\xF8 |0 \xDA\x9C |0 \xF5\xC9 |0 \xF5\xCA |0 \xDA\x9D |0 \xC5\xDC |0 \xDA\x9E |0 \xDA\x9F |0 \xDA\xA0 |0 \xDB\x40 |0 \xF5\xC5 |0 \xF5\xC6 |0 \xDB\x41 |0 \xDB\x42 |0 \xF5\xC7 |0 \xF5\xCB |0 \xDB\x43 |0 \xBE\xE0 |0 \xF5\xC8 |0 \xB8\xFA |0 \xDB\x44 |0 \xDB\x45 |0 \xDB\x46 |0 \xF5\xD0 |0 \xF5\xD3 |0 \xDB\x47 |0 \xDB\x48 |0 \xDB\x49 |0 \xBF\xE7 |0 \xDB\x4A |0 \xB9\xF2 |0 \xF5\xBC |0 \xF5\xCD |0 \xDB\x4B |0 \xDB\x4C |0 \xC2\xB7 |0 \xDB\x4D |0 \xDB\x4E |0 \xDB\x4F |0 \xCC\xF8 |0 \xDB\x50 |0 \xBC\xF9 |0 \xDB\x51 |0 \xF5\xCE |0 \xF5\xCF |0 \xF5\xD1 |0 \xB6\xE5 |0 \xF5\xD2 |0 \xDB\x52 |0 \xF5\xD5 |0 \xDB\x53 |0 \xDB\x54 |0 \xDB\x55 |0 \xDB\x56 |0 \xDB\x57 |0 \xDB\x58 |0 \xDB\x59 |0 \xF5\xBD |0 \xDB\x5A |0 \xDB\x5B |0 \xDB\x5C |0 \xF5\xD4 |0 \xD3\xBB |0 \xDB\x5D |0 \xB3\xEC |0 \xDB\x5E |0 \xDB\x5F |0 \xCC\xA4 |0 \xDB\x60 |0 \xDB\x61 |0 \xDB\x62 |0 \xDB\x63 |0 \xF5\xD6 |0 \xDB\x64 |0 \xDB\x65 |0 \xDB\x66 |0 \xDB\x67 |0 \xDB\x68 |0 \xDB\x69 |0 \xDB\x6A |0 \xDB\x6B |0 \xF5\xD7 |0 \xBE\xE1 |0 \xF5\xD8 |0 \xDB\x6C |0 \xDB\x6D |0 \xCC\xDF |0 \xF5\xDB |0 \xDB\x6E |0 \xDB\x6F |0 \xDB\x70 |0 \xDB\x71 |0 \xDB\x72 |0 \xB2\xC8 |0 \xD7\xD9 |0 \xDB\x73 |0 \xF5\xD9 |0 \xDB\x74 |0 \xF5\xDA |0 \xF5\xDC |0 \xDB\x75 |0 \xF5\xE2 |0 \xDB\x76 |0 \xDB\x77 |0 \xDB\x78 |0 \xF5\xE0 |0 \xDB\x79 |0 \xDB\x7A |0 \xDB\x7B |0 \xF5\xDF |0 \xF5\xDD |0 \xDB\x7C |0 \xDB\x7D |0 \xF5\xE1 |0 \xDB\x7E |0 \xDB\x80 |0 \xF5\xDE |0 \xF5\xE4 |0 \xF5\xE5 |0 \xDB\x81 |0 \xCC\xE3 |0 \xDB\x82 |0 \xDB\x83 |0 \xE5\xBF |0 \xB5\xB8 |0 \xF5\xE3 |0 \xF5\xE8 |0 \xCC\xA3 |0 \xDB\x84 |0 \xDB\x85 |0 \xDB\x86 |0 \xDB\x87 |0 \xDB\x88 |0 \xF5\xE6 |0 \xF5\xE7 |0 \xDB\x89 |0 \xDB\x8A |0 \xDB\x8B |0 \xDB\x8C |0 \xDB\x8D |0 \xDB\x8E |0 \xF5\xBE |0 \xDB\x8F |0 \xDB\x90 |0 \xDB\x91 |0 \xDB\x92 |0 \xDB\x93 |0 \xDB\x94 |0 \xDB\x95 |0 \xDB\x96 |0 \xDB\x97 |0 \xDB\x98 |0 \xDB\x99 |0 \xDB\x9A |0 \xB1\xC4 |0 \xDB\x9B |0 \xDB\x9C |0 \xF5\xBF |0 \xDB\x9D |0 \xDB\x9E |0 \xB5\xC5 |0 \xB2\xE4 |0 \xDB\x9F |0 \xF5\xEC |0 \xF5\xE9 |0 \xDB\xA0 |0 \xB6\xD7 |0 \xDC\x40 |0 \xF5\xED |0 \xDC\x41 |0 \xF5\xEA |0 \xDC\x42 |0 \xDC\x43 |0 \xDC\x44 |0 \xDC\x45 |0 \xDC\x46 |0 \xF5\xEB |0 \xDC\x47 |0 \xDC\x48 |0 \xB4\xDA |0 \xDC\x49 |0 \xD4\xEA |0 \xDC\x4A |0 \xDC\x4B |0 \xDC\x4C |0 \xF5\xEE |0 \xDC\x4D |0 \xB3\xF9 |0 \xDC\x4E |0 \xDC\x4F |0 \xDC\x50 |0 \xDC\x51 |0 \xDC\x52 |0 \xDC\x53 |0 \xDC\x54 |0 \xF5\xEF |0 \xF5\xF1 |0 \xDC\x55 |0 \xDC\x56 |0 \xDC\x57 |0 \xF5\xF0 |0 \xDC\x58 |0 \xDC\x59 |0 \xDC\x5A |0 \xDC\x5B |0 \xDC\x5C |0 \xDC\x5D |0 \xDC\x5E |0 \xF5\xF2 |0 \xDC\x5F |0 \xF5\xF3 |0 \xDC\x60 |0 \xDC\x61 |0 \xDC\x62 |0 \xDC\x63 |0 \xDC\x64 |0 \xDC\x65 |0 \xDC\x66 |0 \xDC\x67 |0 \xDC\x68 |0 \xDC\x69 |0 \xDC\x6A |0 \xDC\x6B |0 \xC9\xED |0 \xB9\xAA |0 \xDC\x6C |0 \xDC\x6D |0 \xC7\xFB |0 \xDC\x6E |0 \xDC\x6F |0 \xB6\xE3 |0 \xDC\x70 |0 \xDC\x71 |0 \xDC\x72 |0 \xDC\x73 |0 \xDC\x74 |0 \xDC\x75 |0 \xDC\x76 |0 \xCC\xC9 |0 \xDC\x77 |0 \xDC\x78 |0 \xDC\x79 |0 \xDC\x7A |0 \xDC\x7B |0 \xDC\x7C |0 \xDC\x7D |0 \xDC\x7E |0 \xDC\x80 |0 \xDC\x81 |0 \xDC\x82 |0 \xDC\x83 |0 \xDC\x84 |0 \xDC\x85 |0 \xDC\x86 |0 \xDC\x87 |0 \xDC\x88 |0 \xDC\x89 |0 \xDC\x8A |0 \xEA\xA6 |0 \xDC\x8B |0 \xDC\x8C |0 \xDC\x8D |0 \xDC\x8E |0 \xDC\x8F |0 \xDC\x90 |0 \xDC\x91 |0 \xDC\x92 |0 \xDC\x93 |0 \xDC\x94 |0 \xDC\x95 |0 \xDC\x96 |0 \xDC\x97 |0 \xDC\x98 |0 \xDC\x99 |0 \xDC\x9A |0 \xDC\x9B |0 \xDC\x9C |0 \xDC\x9D |0 \xDC\x9E |0 \xDC\x9F |0 \xDC\xA0 |0 \xDD\x40 |0 \xDD\x41 |0 \xDD\x42 |0 \xDD\x43 |0 \xDD\x44 |0 \xDD\x45 |0 \xDD\x46 |0 \xDD\x47 |0 \xDD\x48 |0 \xDD\x49 |0 \xDD\x4A |0 \xDD\x4B |0 \xDD\x4C |0 \xDD\x4D |0 \xDD\x4E |0 \xDD\x4F |0 \xDD\x50 |0 \xDD\x51 |0 \xDD\x52 |0 \xDD\x53 |0 \xDD\x54 |0 \xDD\x55 |0 \xDD\x56 |0 \xDD\x57 |0 \xDD\x58 |0 \xDD\x59 |0 \xDD\x5A |0 \xDD\x5B |0 \xDD\x5C |0 \xDD\x5D |0 \xDD\x5E |0 \xDD\x5F |0 \xDD\x60 |0 \xDD\x61 |0 \xDD\x62 |0 \xDD\x63 |0 \xDD\x64 |0 \xDD\x65 |0 \xDD\x66 |0 \xDD\x67 |0 \xDD\x68 |0 \xDD\x69 |0 \xDD\x6A |0 \xDD\x6B |0 \xDD\x6C |0 \xDD\x6D |0 \xDD\x6E |0 \xDD\x6F |0 \xDD\x70 |0 \xDD\x71 |0 \xDD\x72 |0 \xDD\x73 |0 \xDD\x74 |0 \xDD\x75 |0 \xDD\x76 |0 \xDD\x77 |0 \xDD\x78 |0 \xDD\x79 |0 \xDD\x7A |0 \xDD\x7B |0 \xDD\x7C |0 \xDD\x7D |0 \xDD\x7E |0 \xDD\x80 |0 \xDD\x81 |0 \xDD\x82 |0 \xDD\x83 |0 \xDD\x84 |0 \xDD\x85 |0 \xDD\x86 |0 \xDD\x87 |0 \xDD\x88 |0 \xDD\x89 |0 \xDD\x8A |0 \xDD\x8B |0 \xDD\x8C |0 \xDD\x8D |0 \xDD\x8E |0 \xDD\x8F |0 \xDD\x90 |0 \xDD\x91 |0 \xDD\x92 |0 \xDD\x93 |0 \xDD\x94 |0 \xDD\x95 |0 \xDD\x96 |0 \xDD\x97 |0 \xDD\x98 |0 \xDD\x99 |0 \xDD\x9A |0 \xDD\x9B |0 \xDD\x9C |0 \xDD\x9D |0 \xDD\x9E |0 \xDD\x9F |0 \xDD\xA0 |0 \xDE\x40 |0 \xDE\x41 |0 \xDE\x42 |0 \xDE\x43 |0 \xDE\x44 |0 \xDE\x45 |0 \xDE\x46 |0 \xDE\x47 |0 \xDE\x48 |0 \xDE\x49 |0 \xDE\x4A |0 \xDE\x4B |0 \xDE\x4C |0 \xDE\x4D |0 \xDE\x4E |0 \xDE\x4F |0 \xDE\x50 |0 \xDE\x51 |0 \xDE\x52 |0 \xDE\x53 |0 \xDE\x54 |0 \xDE\x55 |0 \xDE\x56 |0 \xDE\x57 |0 \xDE\x58 |0 \xDE\x59 |0 \xDE\x5A |0 \xDE\x5B |0 \xDE\x5C |0 \xDE\x5D |0 \xDE\x5E |0 \xDE\x5F |0 \xDE\x60 |0 \xB3\xB5 |0 \xD4\xFE |0 \xB9\xEC |0 \xD0\xF9 |0 \xDE\x61 |0 \xE9\xED |0 \xD7\xAA |0 \xE9\xEE |0 \xC2\xD6 |0 \xC8\xED |0 \xBA\xE4 |0 \xE9\xEF |0 \xE9\xF0 |0 \xE9\xF1 |0 \xD6\xE1 |0 \xE9\xF2 |0 \xE9\xF3 |0 \xE9\xF5 |0 \xE9\xF4 |0 \xE9\xF6 |0 \xE9\xF7 |0 \xC7\xE1 |0 \xE9\xF8 |0 \xD4\xD8 |0 \xE9\xF9 |0 \xBD\xCE |0 \xDE\x62 |0 \xE9\xFA |0 \xE9\xFB |0 \xBD\xCF |0 \xE9\xFC |0 \xB8\xA8 |0 \xC1\xBE |0 \xE9\xFD |0 \xB1\xB2 |0 \xBB\xD4 |0 \xB9\xF5 |0 \xE9\xFE |0 \xDE\x63 |0 \xEA\xA1 |0 \xEA\xA2 |0 \xEA\xA3 |0 \xB7\xF8 |0 \xBC\xAD |0 \xDE\x64 |0 \xCA\xE4 |0 \xE0\xCE |0 \xD4\xAF |0 \xCF\xBD |0 \xD5\xB7 |0 \xEA\xA4 |0 \xD5\xDE |0 \xEA\xA5 |0 \xD0\xC1 |0 \xB9\xBC |0 \xDE\x65 |0 \xB4\xC7 |0 \xB1\xD9 |0 \xDE\x66 |0 \xDE\x67 |0 \xDE\x68 |0 \xC0\xB1 |0 \xDE\x69 |0 \xDE\x6A |0 \xDE\x6B |0 \xDE\x6C |0 \xB1\xE6 |0 \xB1\xE7 |0 \xDE\x6D |0 \xB1\xE8 |0 \xDE\x6E |0 \xDE\x6F |0 \xDE\x70 |0 \xDE\x71 |0 \xB3\xBD |0 \xC8\xE8 |0 \xDE\x72 |0 \xDE\x73 |0 \xDE\x74 |0 \xDE\x75 |0 \xE5\xC1 |0 \xDE\x76 |0 \xDE\x77 |0 \xB1\xDF |0 \xDE\x78 |0 \xDE\x79 |0 \xDE\x7A |0 \xC1\xC9 |0 \xB4\xEF |0 \xDE\x7B |0 \xDE\x7C |0 \xC7\xA8 |0 \xD3\xD8 |0 \xDE\x7D |0 \xC6\xF9 |0 \xD1\xB8 |0 \xDE\x7E |0 \xB9\xFD |0 \xC2\xF5 |0 \xDE\x80 |0 \xDE\x81 |0 \xDE\x82 |0 \xDE\x83 |0 \xDE\x84 |0 \xD3\xAD |0 \xDE\x85 |0 \xD4\xCB |0 \xBD\xFC |0 \xDE\x86 |0 \xE5\xC2 |0 \xB7\xB5 |0 \xE5\xC3 |0 \xDE\x87 |0 \xDE\x88 |0 \xBB\xB9 |0 \xD5\xE2 |0 \xDE\x89 |0 \xBD\xF8 |0 \xD4\xB6 |0 \xCE\xA5 |0 \xC1\xAC |0 \xB3\xD9 |0 \xDE\x8A |0 \xDE\x8B |0 \xCC\xF6 |0 \xDE\x8C |0 \xE5\xC6 |0 \xE5\xC4 |0 \xE5\xC8 |0 \xDE\x8D |0 \xE5\xCA |0 \xE5\xC7 |0 \xB5\xCF |0 \xC6\xC8 |0 \xDE\x8E |0 \xB5\xFC |0 \xE5\xC5 |0 \xDE\x8F |0 \xCA\xF6 |0 \xDE\x90 |0 \xDE\x91 |0 \xE5\xC9 |0 \xDE\x92 |0 \xDE\x93 |0 \xDE\x94 |0 \xC3\xD4 |0 \xB1\xC5 |0 \xBC\xA3 |0 \xDE\x95 |0 \xDE\x96 |0 \xDE\x97 |0 \xD7\xB7 |0 \xDE\x98 |0 \xDE\x99 |0 \xCD\xCB |0 \xCB\xCD |0 \xCA\xCA |0 \xCC\xD3 |0 \xE5\xCC |0 \xE5\xCB |0 \xC4\xE6 |0 \xDE\x9A |0 \xDE\x9B |0 \xD1\xA1 |0 \xD1\xB7 |0 \xE5\xCD |0 \xDE\x9C |0 \xE5\xD0 |0 \xDE\x9D |0 \xCD\xB8 |0 \xD6\xF0 |0 \xE5\xCF |0 \xB5\xDD |0 \xDE\x9E |0 \xCD\xBE |0 \xDE\x9F |0 \xE5\xD1 |0 \xB6\xBA |0 \xDE\xA0 |0 \xDF\x40 |0 \xCD\xA8 |0 \xB9\xE4 |0 \xDF\x41 |0 \xCA\xC5 |0 \xB3\xD1 |0 \xCB\xD9 |0 \xD4\xEC |0 \xE5\xD2 |0 \xB7\xEA |0 \xDF\x42 |0 \xDF\x43 |0 \xDF\x44 |0 \xE5\xCE |0 \xDF\x45 |0 \xDF\x46 |0 \xDF\x47 |0 \xDF\x48 |0 \xDF\x49 |0 \xDF\x4A |0 \xE5\xD5 |0 \xB4\xFE |0 \xE5\xD6 |0 \xDF\x4B |0 \xDF\x4C |0 \xDF\x4D |0 \xDF\x4E |0 \xDF\x4F |0 \xE5\xD3 |0 \xE5\xD4 |0 \xDF\x50 |0 \xD2\xDD |0 \xDF\x51 |0 \xDF\x52 |0 \xC2\xDF |0 \xB1\xC6 |0 \xDF\x53 |0 \xD3\xE2 |0 \xDF\x54 |0 \xDF\x55 |0 \xB6\xDD |0 \xCB\xEC |0 \xDF\x56 |0 \xE5\xD7 |0 \xDF\x57 |0 \xDF\x58 |0 \xD3\xF6 |0 \xDF\x59 |0 \xDF\x5A |0 \xDF\x5B |0 \xDF\x5C |0 \xDF\x5D |0 \xB1\xE9 |0 \xDF\x5E |0 \xB6\xF4 |0 \xE5\xDA |0 \xE5\xD8 |0 \xE5\xD9 |0 \xB5\xC0 |0 \xDF\x5F |0 \xDF\x60 |0 \xDF\x61 |0 \xD2\xC5 |0 \xE5\xDC |0 \xDF\x62 |0 \xDF\x63 |0 \xE5\xDE |0 \xDF\x64 |0 \xDF\x65 |0 \xDF\x66 |0 \xDF\x67 |0 \xDF\x68 |0 \xDF\x69 |0 \xE5\xDD |0 \xC7\xB2 |0 \xDF\x6A |0 \xD2\xA3 |0 \xDF\x6B |0 \xDF\x6C |0 \xE5\xDB |0 \xDF\x6D |0 \xDF\x6E |0 \xDF\x6F |0 \xDF\x70 |0 \xD4\xE2 |0 \xD5\xDA |0 \xDF\x71 |0 \xDF\x72 |0 \xDF\x73 |0 \xDF\x74 |0 \xDF\x75 |0 \xE5\xE0 |0 \xD7\xF1 |0 \xDF\x76 |0 \xDF\x77 |0 \xDF\x78 |0 \xDF\x79 |0 \xDF\x7A |0 \xDF\x7B |0 \xDF\x7C |0 \xE5\xE1 |0 \xDF\x7D |0 \xB1\xDC |0 \xD1\xFB |0 \xDF\x7E |0 \xE5\xE2 |0 \xE5\xE4 |0 \xDF\x80 |0 \xDF\x81 |0 \xDF\x82 |0 \xDF\x83 |0 \xE5\xE3 |0 \xDF\x84 |0 \xDF\x85 |0 \xE5\xE5 |0 \xDF\x86 |0 \xDF\x87 |0 \xDF\x88 |0 \xDF\x89 |0 \xDF\x8A |0 \xD2\xD8 |0 \xDF\x8B |0 \xB5\xCB |0 \xDF\x8C |0 \xE7\xDF |0 \xDF\x8D |0 \xDA\xF5 |0 \xDF\x8E |0 \xDA\xF8 |0 \xDF\x8F |0 \xDA\xF6 |0 \xDF\x90 |0 \xDA\xF7 |0 \xDF\x91 |0 \xDF\x92 |0 \xDF\x93 |0 \xDA\xFA |0 \xD0\xCF |0 \xC4\xC7 |0 \xDF\x94 |0 \xDF\x95 |0 \xB0\xEE |0 \xDF\x96 |0 \xDF\x97 |0 \xDF\x98 |0 \xD0\xB0 |0 \xDF\x99 |0 \xDA\xF9 |0 \xDF\x9A |0 \xD3\xCA |0 \xBA\xAA |0 \xDB\xA2 |0 \xC7\xF1 |0 \xDF\x9B |0 \xDA\xFC |0 \xDA\xFB |0 \xC9\xDB |0 \xDA\xFD |0 \xDF\x9C |0 \xDB\xA1 |0 \xD7\xDE |0 \xDA\xFE |0 \xC1\xDA |0 \xDF\x9D |0 \xDF\x9E |0 \xDB\xA5 |0 \xDF\x9F |0 \xDF\xA0 |0 \xD3\xF4 |0 \xE0\x40 |0 \xE0\x41 |0 \xDB\xA7 |0 \xDB\xA4 |0 \xE0\x42 |0 \xDB\xA8 |0 \xE0\x43 |0 \xE0\x44 |0 \xBD\xBC |0 \xE0\x45 |0 \xE0\x46 |0 \xE0\x47 |0 \xC0\xC9 |0 \xDB\xA3 |0 \xDB\xA6 |0 \xD6\xA3 |0 \xE0\x48 |0 \xDB\xA9 |0 \xE0\x49 |0 \xE0\x4A |0 \xE0\x4B |0 \xDB\xAD |0 \xE0\x4C |0 \xE0\x4D |0 \xE0\x4E |0 \xDB\xAE |0 \xDB\xAC |0 \xBA\xC2 |0 \xE0\x4F |0 \xE0\x50 |0 \xE0\x51 |0 \xBF\xA4 |0 \xDB\xAB |0 \xE0\x52 |0 \xE0\x53 |0 \xE0\x54 |0 \xDB\xAA |0 \xD4\xC7 |0 \xB2\xBF |0 \xE0\x55 |0 \xE0\x56 |0 \xDB\xAF |0 \xE0\x57 |0 \xB9\xF9 |0 \xE0\x58 |0 \xDB\xB0 |0 \xE0\x59 |0 \xE0\x5A |0 \xE0\x5B |0 \xE0\x5C |0 \xB3\xBB |0 \xE0\x5D |0 \xE0\x5E |0 \xE0\x5F |0 \xB5\xA6 |0 \xE0\x60 |0 \xE0\x61 |0 \xE0\x62 |0 \xE0\x63 |0 \xB6\xBC |0 \xDB\xB1 |0 \xE0\x64 |0 \xE0\x65 |0 \xE0\x66 |0 \xB6\xF5 |0 \xE0\x67 |0 \xDB\xB2 |0 \xE0\x68 |0 \xE0\x69 |0 \xE0\x6A |0 \xE0\x6B |0 \xE0\x6C |0 \xE0\x6D |0 \xE0\x6E |0 \xE0\x6F |0 \xE0\x70 |0 \xE0\x71 |0 \xE0\x72 |0 \xE0\x73 |0 \xE0\x74 |0 \xE0\x75 |0 \xE0\x76 |0 \xE0\x77 |0 \xE0\x78 |0 \xE0\x79 |0 \xE0\x7A |0 \xE0\x7B |0 \xB1\xC9 |0 \xE0\x7C |0 \xE0\x7D |0 \xE0\x7E |0 \xE0\x80 |0 \xDB\xB4 |0 \xE0\x81 |0 \xE0\x82 |0 \xE0\x83 |0 \xDB\xB3 |0 \xDB\xB5 |0 \xE0\x84 |0 \xE0\x85 |0 \xE0\x86 |0 \xE0\x87 |0 \xE0\x88 |0 \xE0\x89 |0 \xE0\x8A |0 \xE0\x8B |0 \xE0\x8C |0 \xE0\x8D |0 \xE0\x8E |0 \xDB\xB7 |0 \xE0\x8F |0 \xDB\xB6 |0 \xE0\x90 |0 \xE0\x91 |0 \xE0\x92 |0 \xE0\x93 |0 \xE0\x94 |0 \xE0\x95 |0 \xE0\x96 |0 \xDB\xB8 |0 \xE0\x97 |0 \xE0\x98 |0 \xE0\x99 |0 \xE0\x9A |0 \xE0\x9B |0 \xE0\x9C |0 \xE0\x9D |0 \xE0\x9E |0 \xE0\x9F |0 \xDB\xB9 |0 \xE0\xA0 |0 \xE1\x40 |0 \xDB\xBA |0 \xE1\x41 |0 \xE1\x42 |0 \xD3\xCF |0 \xF4\xFA |0 \xC7\xF5 |0 \xD7\xC3 |0 \xC5\xE4 |0 \xF4\xFC |0 \xF4\xFD |0 \xF4\xFB |0 \xE1\x43 |0 \xBE\xC6 |0 \xE1\x44 |0 \xE1\x45 |0 \xE1\x46 |0 \xE1\x47 |0 \xD0\xEF |0 \xE1\x48 |0 \xE1\x49 |0 \xB7\xD3 |0 \xE1\x4A |0 \xE1\x4B |0 \xD4\xCD |0 \xCC\xAA |0 \xE1\x4C |0 \xE1\x4D |0 \xF5\xA2 |0 \xF5\xA1 |0 \xBA\xA8 |0 \xF4\xFE |0 \xCB\xD6 |0 \xE1\x4E |0 \xE1\x4F |0 \xE1\x50 |0 \xF5\xA4 |0 \xC0\xD2 |0 \xE1\x51 |0 \xB3\xEA |0 \xE1\x52 |0 \xCD\xAA |0 \xF5\xA5 |0 \xF5\xA3 |0 \xBD\xB4 |0 \xF5\xA8 |0 \xE1\x53 |0 \xF5\xA9 |0 \xBD\xCD |0 \xC3\xB8 |0 \xBF\xE1 |0 \xCB\xE1 |0 \xF5\xAA |0 \xE1\x54 |0 \xE1\x55 |0 \xE1\x56 |0 \xF5\xA6 |0 \xF5\xA7 |0 \xC4\xF0 |0 \xE1\x57 |0 \xE1\x58 |0 \xE1\x59 |0 \xE1\x5A |0 \xE1\x5B |0 \xF5\xAC |0 \xE1\x5C |0 \xB4\xBC |0 \xE1\x5D |0 \xD7\xED |0 \xE1\x5E |0 \xB4\xD7 |0 \xF5\xAB |0 \xF5\xAE |0 \xE1\x5F |0 \xE1\x60 |0 \xF5\xAD |0 \xF5\xAF |0 \xD0\xD1 |0 \xE1\x61 |0 \xE1\x62 |0 \xE1\x63 |0 \xE1\x64 |0 \xE1\x65 |0 \xE1\x66 |0 \xE1\x67 |0 \xC3\xD1 |0 \xC8\xA9 |0 \xE1\x68 |0 \xE1\x69 |0 \xE1\x6A |0 \xE1\x6B |0 \xE1\x6C |0 \xE1\x6D |0 \xF5\xB0 |0 \xF5\xB1 |0 \xE1\x6E |0 \xE1\x6F |0 \xE1\x70 |0 \xE1\x71 |0 \xE1\x72 |0 \xE1\x73 |0 \xF5\xB2 |0 \xE1\x74 |0 \xE1\x75 |0 \xF5\xB3 |0 \xF5\xB4 |0 \xF5\xB5 |0 \xE1\x76 |0 \xE1\x77 |0 \xE1\x78 |0 \xE1\x79 |0 \xF5\xB7 |0 \xF5\xB6 |0 \xE1\x7A |0 \xE1\x7B |0 \xE1\x7C |0 \xE1\x7D |0 \xF5\xB8 |0 \xE1\x7E |0 \xE1\x80 |0 \xE1\x81 |0 \xE1\x82 |0 \xE1\x83 |0 \xE1\x84 |0 \xE1\x85 |0 \xE1\x86 |0 \xE1\x87 |0 \xE1\x88 |0 \xE1\x89 |0 \xE1\x8A |0 \xB2\xC9 |0 \xE1\x8B |0 \xD3\xD4 |0 \xCA\xCD |0 \xE1\x8C |0 \xC0\xEF |0 \xD6\xD8 |0 \xD2\xB0 |0 \xC1\xBF |0 \xE1\x8D |0 \xBD\xF0 |0 \xE1\x8E |0 \xE1\x8F |0 \xE1\x90 |0 \xE1\x91 |0 \xE1\x92 |0 \xE1\x93 |0 \xE1\x94 |0 \xE1\x95 |0 \xE1\x96 |0 \xE1\x97 |0 \xB8\xAA |0 \xE1\x98 |0 \xE1\x99 |0 \xE1\x9A |0 \xE1\x9B |0 \xE1\x9C |0 \xE1\x9D |0 \xE1\x9E |0 \xE1\x9F |0 \xE1\xA0 |0 \xE2\x40 |0 \xE2\x41 |0 \xE2\x42 |0 \xE2\x43 |0 \xE2\x44 |0 \xE2\x45 |0 \xE2\x46 |0 \xE2\x47 |0 \xE2\x48 |0 \xE2\x49 |0 \xE2\x4A |0 \xE2\x4B |0 \xE2\x4C |0 \xE2\x4D |0 \xE2\x4E |0 \xE2\x4F |0 \xE2\x50 |0 \xE2\x51 |0 \xE2\x52 |0 \xE2\x53 |0 \xE2\x54 |0 \xE2\x55 |0 \xE2\x56 |0 \xE2\x57 |0 \xE2\x58 |0 \xE2\x59 |0 \xE2\x5A |0 \xE2\x5B |0 \xE2\x5C |0 \xE2\x5D |0 \xE2\x5E |0 \xE2\x5F |0 \xE2\x60 |0 \xE2\x61 |0 \xE2\x62 |0 \xE2\x63 |0 \xE2\x64 |0 \xE2\x65 |0 \xE2\x66 |0 \xE2\x67 |0 \xE2\x68 |0 \xE2\x69 |0 \xE2\x6A |0 \xE2\x6B |0 \xE2\x6C |0 \xE2\x6D |0 \xE2\x6E |0 \xE2\x6F |0 \xE2\x70 |0 \xE2\x71 |0 \xE2\x72 |0 \xE2\x73 |0 \xE2\x74 |0 \xE2\x75 |0 \xE2\x76 |0 \xE2\x77 |0 \xE2\x78 |0 \xE2\x79 |0 \xE2\x7A |0 \xE2\x7B |0 \xE2\x7C |0 \xE2\x7D |0 \xE2\x7E |0 \xE2\x80 |0 \xE2\x81 |0 \xE2\x82 |0 \xE2\x83 |0 \xE2\x84 |0 \xE2\x85 |0 \xE2\x86 |0 \xE2\x87 |0 \xE2\x88 |0 \xE2\x89 |0 \xE2\x8A |0 \xE2\x8B |0 \xE2\x8C |0 \xE2\x8D |0 \xE2\x8E |0 \xE2\x8F |0 \xE2\x90 |0 \xE2\x91 |0 \xE2\x92 |0 \xE2\x93 |0 \xE2\x94 |0 \xE2\x95 |0 \xE2\x96 |0 \xE2\x97 |0 \xE2\x98 |0 \xE2\x99 |0 \xE2\x9A |0 \xE2\x9B |0 \xE2\x9C |0 \xE2\x9D |0 \xE2\x9E |0 \xE2\x9F |0 \xE2\xA0 |0 \xE3\x40 |0 \xE3\x41 |0 \xE3\x42 |0 \xE3\x43 |0 \xE3\x44 |0 \xE3\x45 |0 \xE3\x46 |0 \xE3\x47 |0 \xE3\x48 |0 \xE3\x49 |0 \xE3\x4A |0 \xE3\x4B |0 \xE3\x4C |0 \xE3\x4D |0 \xE3\x4E |0 \xE3\x4F |0 \xE3\x50 |0 \xE3\x51 |0 \xE3\x52 |0 \xE3\x53 |0 \xE3\x54 |0 \xE3\x55 |0 \xE3\x56 |0 \xE3\x57 |0 \xE3\x58 |0 \xE3\x59 |0 \xE3\x5A |0 \xE3\x5B |0 \xE3\x5C |0 \xE3\x5D |0 \xE3\x5E |0 \xE3\x5F |0 \xE3\x60 |0 \xE3\x61 |0 \xE3\x62 |0 \xE3\x63 |0 \xE3\x64 |0 \xE3\x65 |0 \xE3\x66 |0 \xE3\x67 |0 \xE3\x68 |0 \xE3\x69 |0 \xE3\x6A |0 \xE3\x6B |0 \xE3\x6C |0 \xE3\x6D |0 \xBC\xF8 |0 \xE3\x6E |0 \xE3\x6F |0 \xE3\x70 |0 \xE3\x71 |0 \xE3\x72 |0 \xE3\x73 |0 \xE3\x74 |0 \xE3\x75 |0 \xE3\x76 |0 \xE3\x77 |0 \xE3\x78 |0 \xE3\x79 |0 \xE3\x7A |0 \xE3\x7B |0 \xE3\x7C |0 \xE3\x7D |0 \xE3\x7E |0 \xE3\x80 |0 \xE3\x81 |0 \xE3\x82 |0 \xE3\x83 |0 \xE3\x84 |0 \xE3\x85 |0 \xE3\x86 |0 \xE3\x87 |0 \xF6\xC6 |0 \xE3\x88 |0 \xE3\x89 |0 \xE3\x8A |0 \xE3\x8B |0 \xE3\x8C |0 \xE3\x8D |0 \xE3\x8E |0 \xE3\x8F |0 \xE3\x90 |0 \xE3\x91 |0 \xE3\x92 |0 \xE3\x93 |0 \xE3\x94 |0 \xE3\x95 |0 \xE3\x96 |0 \xE3\x97 |0 \xE3\x98 |0 \xE3\x99 |0 \xE3\x9A |0 \xE3\x9B |0 \xE3\x9C |0 \xE3\x9D |0 \xE3\x9E |0 \xE3\x9F |0 \xE3\xA0 |0 \xE4\x40 |0 \xE4\x41 |0 \xE4\x42 |0 \xE4\x43 |0 \xE4\x44 |0 \xE4\x45 |0 \xF6\xC7 |0 \xE4\x46 |0 \xE4\x47 |0 \xE4\x48 |0 \xE4\x49 |0 \xE4\x4A |0 \xE4\x4B |0 \xE4\x4C |0 \xE4\x4D |0 \xE4\x4E |0 \xE4\x4F |0 \xE4\x50 |0 \xE4\x51 |0 \xE4\x52 |0 \xE4\x53 |0 \xE4\x54 |0 \xE4\x55 |0 \xE4\x56 |0 \xE4\x57 |0 \xE4\x58 |0 \xE4\x59 |0 \xE4\x5A |0 \xE4\x5B |0 \xE4\x5C |0 \xE4\x5D |0 \xE4\x5E |0 \xF6\xC8 |0 \xE4\x5F |0 \xE4\x60 |0 \xE4\x61 |0 \xE4\x62 |0 \xE4\x63 |0 \xE4\x64 |0 \xE4\x65 |0 \xE4\x66 |0 \xE4\x67 |0 \xE4\x68 |0 \xE4\x69 |0 \xE4\x6A |0 \xE4\x6B |0 \xE4\x6C |0 \xE4\x6D |0 \xE4\x6E |0 \xE4\x6F |0 \xE4\x70 |0 \xE4\x71 |0 \xE4\x72 |0 \xE4\x73 |0 \xE4\x74 |0 \xE4\x75 |0 \xE4\x76 |0 \xE4\x77 |0 \xE4\x78 |0 \xE4\x79 |0 \xE4\x7A |0 \xE4\x7B |0 \xE4\x7C |0 \xE4\x7D |0 \xE4\x7E |0 \xE4\x80 |0 \xE4\x81 |0 \xE4\x82 |0 \xE4\x83 |0 \xE4\x84 |0 \xE4\x85 |0 \xE4\x86 |0 \xE4\x87 |0 \xE4\x88 |0 \xE4\x89 |0 \xE4\x8A |0 \xE4\x8B |0 \xE4\x8C |0 \xE4\x8D |0 \xE4\x8E |0 \xE4\x8F |0 \xE4\x90 |0 \xE4\x91 |0 \xE4\x92 |0 \xE4\x93 |0 \xE4\x94 |0 \xE4\x95 |0 \xE4\x96 |0 \xE4\x97 |0 \xE4\x98 |0 \xE4\x99 |0 \xE4\x9A |0 \xE4\x9B |0 \xE4\x9C |0 \xE4\x9D |0 \xE4\x9E |0 \xE4\x9F |0 \xE4\xA0 |0 \xE5\x40 |0 \xE5\x41 |0 \xE5\x42 |0 \xE5\x43 |0 \xE5\x44 |0 \xE5\x45 |0 \xE5\x46 |0 \xE5\x47 |0 \xE5\x48 |0 \xE5\x49 |0 \xE5\x4A |0 \xE5\x4B |0 \xE5\x4C |0 \xE5\x4D |0 \xE5\x4E |0 \xE5\x4F |0 \xE5\x50 |0 \xE5\x51 |0 \xE5\x52 |0 \xE5\x53 |0 \xE5\x54 |0 \xE5\x55 |0 \xE5\x56 |0 \xE5\x57 |0 \xE5\x58 |0 \xE5\x59 |0 \xE5\x5A |0 \xE5\x5B |0 \xE5\x5C |0 \xE5\x5D |0 \xE5\x5E |0 \xE5\x5F |0 \xE5\x60 |0 \xE5\x61 |0 \xE5\x62 |0 \xE5\x63 |0 \xE5\x64 |0 \xE5\x65 |0 \xE5\x66 |0 \xE5\x67 |0 \xE5\x68 |0 \xE5\x69 |0 \xE5\x6A |0 \xE5\x6B |0 \xE5\x6C |0 \xE5\x6D |0 \xE5\x6E |0 \xE5\x6F |0 \xE5\x70 |0 \xE5\x71 |0 \xE5\x72 |0 \xE5\x73 |0 \xF6\xC9 |0 \xE5\x74 |0 \xE5\x75 |0 \xE5\x76 |0 \xE5\x77 |0 \xE5\x78 |0 \xE5\x79 |0 \xE5\x7A |0 \xE5\x7B |0 \xE5\x7C |0 \xE5\x7D |0 \xE5\x7E |0 \xE5\x80 |0 \xE5\x81 |0 \xE5\x82 |0 \xE5\x83 |0 \xE5\x84 |0 \xE5\x85 |0 \xE5\x86 |0 \xE5\x87 |0 \xE5\x88 |0 \xE5\x89 |0 \xE5\x8A |0 \xE5\x8B |0 \xE5\x8C |0 \xE5\x8D |0 \xE5\x8E |0 \xE5\x8F |0 \xE5\x90 |0 \xE5\x91 |0 \xE5\x92 |0 \xE5\x93 |0 \xE5\x94 |0 \xE5\x95 |0 \xE5\x96 |0 \xE5\x97 |0 \xE5\x98 |0 \xE5\x99 |0 \xE5\x9A |0 \xE5\x9B |0 \xE5\x9C |0 \xE5\x9D |0 \xE5\x9E |0 \xE5\x9F |0 \xF6\xCA |0 \xE5\xA0 |0 \xE6\x40 |0 \xE6\x41 |0 \xE6\x42 |0 \xE6\x43 |0 \xE6\x44 |0 \xE6\x45 |0 \xE6\x46 |0 \xE6\x47 |0 \xE6\x48 |0 \xE6\x49 |0 \xE6\x4A |0 \xE6\x4B |0 \xE6\x4C |0 \xE6\x4D |0 \xE6\x4E |0 \xE6\x4F |0 \xE6\x50 |0 \xE6\x51 |0 \xE6\x52 |0 \xE6\x53 |0 \xE6\x54 |0 \xE6\x55 |0 \xE6\x56 |0 \xE6\x57 |0 \xE6\x58 |0 \xE6\x59 |0 \xE6\x5A |0 \xE6\x5B |0 \xE6\x5C |0 \xE6\x5D |0 \xE6\x5E |0 \xE6\x5F |0 \xE6\x60 |0 \xE6\x61 |0 \xE6\x62 |0 \xF6\xCC |0 \xE6\x63 |0 \xE6\x64 |0 \xE6\x65 |0 \xE6\x66 |0 \xE6\x67 |0 \xE6\x68 |0 \xE6\x69 |0 \xE6\x6A |0 \xE6\x6B |0 \xE6\x6C |0 \xE6\x6D |0 \xE6\x6E |0 \xE6\x6F |0 \xE6\x70 |0 \xE6\x71 |0 \xE6\x72 |0 \xE6\x73 |0 \xE6\x74 |0 \xE6\x75 |0 \xE6\x76 |0 \xE6\x77 |0 \xE6\x78 |0 \xE6\x79 |0 \xE6\x7A |0 \xE6\x7B |0 \xE6\x7C |0 \xE6\x7D |0 \xE6\x7E |0 \xE6\x80 |0 \xE6\x81 |0 \xE6\x82 |0 \xE6\x83 |0 \xE6\x84 |0 \xE6\x85 |0 \xE6\x86 |0 \xE6\x87 |0 \xE6\x88 |0 \xE6\x89 |0 \xE6\x8A |0 \xE6\x8B |0 \xE6\x8C |0 \xE6\x8D |0 \xE6\x8E |0 \xE6\x8F |0 \xE6\x90 |0 \xE6\x91 |0 \xE6\x92 |0 \xE6\x93 |0 \xE6\x94 |0 \xE6\x95 |0 \xE6\x96 |0 \xE6\x97 |0 \xE6\x98 |0 \xE6\x99 |0 \xE6\x9A |0 \xE6\x9B |0 \xE6\x9C |0 \xE6\x9D |0 \xF6\xCB |0 \xE6\x9E |0 \xE6\x9F |0 \xE6\xA0 |0 \xE7\x40 |0 \xE7\x41 |0 \xE7\x42 |0 \xE7\x43 |0 \xE7\x44 |0 \xE7\x45 |0 \xE7\x46 |0 \xE7\x47 |0 \xF7\xE9 |0 \xE7\x48 |0 \xE7\x49 |0 \xE7\x4A |0 \xE7\x4B |0 \xE7\x4C |0 \xE7\x4D |0 \xE7\x4E |0 \xE7\x4F |0 \xE7\x50 |0 \xE7\x51 |0 \xE7\x52 |0 \xE7\x53 |0 \xE7\x54 |0 \xE7\x55 |0 \xE7\x56 |0 \xE7\x57 |0 \xE7\x58 |0 \xE7\x59 |0 \xE7\x5A |0 \xE7\x5B |0 \xE7\x5C |0 \xE7\x5D |0 \xE7\x5E |0 \xE7\x5F |0 \xE7\x60 |0 \xE7\x61 |0 \xE7\x62 |0 \xE7\x63 |0 \xE7\x64 |0 \xE7\x65 |0 \xE7\x66 |0 \xE7\x67 |0 \xE7\x68 |0 \xE7\x69 |0 \xE7\x6A |0 \xE7\x6B |0 \xE7\x6C |0 \xE7\x6D |0 \xE7\x6E |0 \xE7\x6F |0 \xE7\x70 |0 \xE7\x71 |0 \xE7\x72 |0 \xE7\x73 |0 \xE7\x74 |0 \xE7\x75 |0 \xE7\x76 |0 \xE7\x77 |0 \xE7\x78 |0 \xE7\x79 |0 \xE7\x7A |0 \xE7\x7B |0 \xE7\x7C |0 \xE7\x7D |0 \xE7\x7E |0 \xE7\x80 |0 \xE7\x81 |0 \xE7\x82 |0 \xE7\x83 |0 \xE7\x84 |0 \xE7\x85 |0 \xE7\x86 |0 \xE7\x87 |0 \xE7\x88 |0 \xE7\x89 |0 \xE7\x8A |0 \xE7\x8B |0 \xE7\x8C |0 \xE7\x8D |0 \xE7\x8E |0 \xE7\x8F |0 \xE7\x90 |0 \xE7\x91 |0 \xE7\x92 |0 \xE7\x93 |0 \xE7\x94 |0 \xE7\x95 |0 \xE7\x96 |0 \xE7\x97 |0 \xE7\x98 |0 \xE7\x99 |0 \xE7\x9A |0 \xE7\x9B |0 \xE7\x9C |0 \xE7\x9D |0 \xE7\x9E |0 \xE7\x9F |0 \xE7\xA0 |0 \xE8\x40 |0 \xE8\x41 |0 \xE8\x42 |0 \xE8\x43 |0 \xE8\x44 |0 \xE8\x45 |0 \xE8\x46 |0 \xE8\x47 |0 \xE8\x48 |0 \xE8\x49 |0 \xE8\x4A |0 \xE8\x4B |0 \xE8\x4C |0 \xE8\x4D |0 \xE8\x4E |0 \xF6\xCD |0 \xE8\x4F |0 \xE8\x50 |0 \xE8\x51 |0 \xE8\x52 |0 \xE8\x53 |0 \xE8\x54 |0 \xE8\x55 |0 \xE8\x56 |0 \xE8\x57 |0 \xE8\x58 |0 \xE8\x59 |0 \xE8\x5A |0 \xE8\x5B |0 \xE8\x5C |0 \xE8\x5D |0 \xE8\x5E |0 \xE8\x5F |0 \xE8\x60 |0 \xE8\x61 |0 \xE8\x62 |0 \xE8\x63 |0 \xE8\x64 |0 \xE8\x65 |0 \xE8\x66 |0 \xE8\x67 |0 \xE8\x68 |0 \xE8\x69 |0 \xE8\x6A |0 \xE8\x6B |0 \xE8\x6C |0 \xE8\x6D |0 \xE8\x6E |0 \xE8\x6F |0 \xE8\x70 |0 \xE8\x71 |0 \xE8\x72 |0 \xE8\x73 |0 \xE8\x74 |0 \xE8\x75 |0 \xE8\x76 |0 \xE8\x77 |0 \xE8\x78 |0 \xE8\x79 |0 \xE8\x7A |0 \xF6\xCE |0 \xE8\x7B |0 \xE8\x7C |0 \xE8\x7D |0 \xE8\x7E |0 \xE8\x80 |0 \xE8\x81 |0 \xE8\x82 |0 \xE8\x83 |0 \xE8\x84 |0 \xE8\x85 |0 \xE8\x86 |0 \xE8\x87 |0 \xE8\x88 |0 \xE8\x89 |0 \xE8\x8A |0 \xE8\x8B |0 \xE8\x8C |0 \xE8\x8D |0 \xE8\x8E |0 \xE8\x8F |0 \xE8\x90 |0 \xE8\x91 |0 \xE8\x92 |0 \xE8\x93 |0 \xE8\x94 |0 \xEE\xC4 |0 \xEE\xC5 |0 \xEE\xC6 |0 \xD5\xEB |0 \xB6\xA4 |0 \xEE\xC8 |0 \xEE\xC7 |0 \xEE\xC9 |0 \xEE\xCA |0 \xC7\xA5 |0 \xEE\xCB |0 \xEE\xCC |0 \xE8\x95 |0 \xB7\xB0 |0 \xB5\xF6 |0 \xEE\xCD |0 \xEE\xCF |0 \xE8\x96 |0 \xEE\xCE |0 \xE8\x97 |0 \xB8\xC6 |0 \xEE\xD0 |0 \xEE\xD1 |0 \xEE\xD2 |0 \xB6\xDB |0 \xB3\xAE |0 \xD6\xD3 |0 \xC4\xC6 |0 \xB1\xB5 |0 \xB8\xD6 |0 \xEE\xD3 |0 \xEE\xD4 |0 \xD4\xBF |0 \xC7\xD5 |0 \xBE\xFB |0 \xCE\xD9 |0 \xB9\xB3 |0 \xEE\xD6 |0 \xEE\xD5 |0 \xEE\xD8 |0 \xEE\xD7 |0 \xC5\xA5 |0 \xEE\xD9 |0 \xEE\xDA |0 \xC7\xAE |0 \xEE\xDB |0 \xC7\xAF |0 \xEE\xDC |0 \xB2\xA7 |0 \xEE\xDD |0 \xEE\xDE |0 \xEE\xDF |0 \xEE\xE0 |0 \xEE\xE1 |0 \xD7\xEA |0 \xEE\xE2 |0 \xEE\xE3 |0 \xBC\xD8 |0 \xEE\xE4 |0 \xD3\xCB |0 \xCC\xFA |0 \xB2\xAC |0 \xC1\xE5 |0 \xEE\xE5 |0 \xC7\xA6 |0 \xC3\xAD |0 \xE8\x98 |0 \xEE\xE6 |0 \xEE\xE7 |0 \xEE\xE8 |0 \xEE\xE9 |0 \xEE\xEA |0 \xEE\xEB |0 \xEE\xEC |0 \xE8\x99 |0 \xEE\xED |0 \xEE\xEE |0 \xEE\xEF |0 \xE8\x9A |0 \xE8\x9B |0 \xEE\xF0 |0 \xEE\xF1 |0 \xEE\xF2 |0 \xEE\xF4 |0 \xEE\xF3 |0 \xE8\x9C |0 \xEE\xF5 |0 \xCD\xAD |0 \xC2\xC1 |0 \xEE\xF6 |0 \xEE\xF7 |0 \xEE\xF8 |0 \xD5\xA1 |0 \xEE\xF9 |0 \xCF\xB3 |0 \xEE\xFA |0 \xEE\xFB |0 \xE8\x9D |0 \xEE\xFC |0 \xEE\xFD |0 \xEF\xA1 |0 \xEE\xFE |0 \xEF\xA2 |0 \xB8\xF5 |0 \xC3\xFA |0 \xEF\xA3 |0 \xEF\xA4 |0 \xBD\xC2 |0 \xD2\xBF |0 \xB2\xF9 |0 \xEF\xA5 |0 \xEF\xA6 |0 \xEF\xA7 |0 \xD2\xF8 |0 \xEF\xA8 |0 \xD6\xFD |0 \xEF\xA9 |0 \xC6\xCC |0 \xE8\x9E |0 \xEF\xAA |0 \xEF\xAB |0 \xC1\xB4 |0 \xEF\xAC |0 \xCF\xFA |0 \xCB\xF8 |0 \xEF\xAE |0 \xEF\xAD |0 \xB3\xFA |0 \xB9\xF8 |0 \xEF\xAF |0 \xEF\xB0 |0 \xD0\xE2 |0 \xEF\xB1 |0 \xEF\xB2 |0 \xB7\xE6 |0 \xD0\xBF |0 \xEF\xB3 |0 \xEF\xB4 |0 \xEF\xB5 |0 \xC8\xF1 |0 \xCC\xE0 |0 \xEF\xB6 |0 \xEF\xB7 |0 \xEF\xB8 |0 \xEF\xB9 |0 \xEF\xBA |0 \xD5\xE0 |0 \xEF\xBB |0 \xB4\xED |0 \xC3\xAA |0 \xEF\xBC |0 \xE8\x9F |0 \xEF\xBD |0 \xEF\xBE |0 \xEF\xBF |0 \xE8\xA0 |0 \xCE\xFD |0 \xEF\xC0 |0 \xC2\xE0 |0 \xB4\xB8 |0 \xD7\xB6 |0 \xBD\xF5 |0 \xE9\x40 |0 \xCF\xC7 |0 \xEF\xC3 |0 \xEF\xC1 |0 \xEF\xC2 |0 \xEF\xC4 |0 \xB6\xA7 |0 \xBC\xFC |0 \xBE\xE2 |0 \xC3\xCC |0 \xEF\xC5 |0 \xEF\xC6 |0 \xE9\x41 |0 \xEF\xC7 |0 \xEF\xCF |0 \xEF\xC8 |0 \xEF\xC9 |0 \xEF\xCA |0 \xC7\xC2 |0 \xEF\xF1 |0 \xB6\xCD |0 \xEF\xCB |0 \xE9\x42 |0 \xEF\xCC |0 \xEF\xCD |0 \xB6\xC6 |0 \xC3\xBE |0 \xEF\xCE |0 \xE9\x43 |0 \xEF\xD0 |0 \xEF\xD1 |0 \xEF\xD2 |0 \xD5\xF2 |0 \xE9\x44 |0 \xEF\xD3 |0 \xC4\xF7 |0 \xE9\x45 |0 \xEF\xD4 |0 \xC4\xF8 |0 \xEF\xD5 |0 \xEF\xD6 |0 \xB8\xE4 |0 \xB0\xF7 |0 \xEF\xD7 |0 \xEF\xD8 |0 \xEF\xD9 |0 \xE9\x46 |0 \xEF\xDA |0 \xEF\xDB |0 \xEF\xDC |0 \xEF\xDD |0 \xE9\x47 |0 \xEF\xDE |0 \xBE\xB5 |0 \xEF\xE1 |0 \xEF\xDF |0 \xEF\xE0 |0 \xE9\x48 |0 \xEF\xE2 |0 \xEF\xE3 |0 \xC1\xCD |0 \xEF\xE4 |0 \xEF\xE5 |0 \xEF\xE6 |0 \xEF\xE7 |0 \xEF\xE8 |0 \xEF\xE9 |0 \xEF\xEA |0 \xEF\xEB |0 \xEF\xEC |0 \xC0\xD8 |0 \xE9\x49 |0 \xEF\xED |0 \xC1\xAD |0 \xEF\xEE |0 \xEF\xEF |0 \xEF\xF0 |0 \xE9\x4A |0 \xE9\x4B |0 \xCF\xE2 |0 \xE9\x4C |0 \xE9\x4D |0 \xE9\x4E |0 \xE9\x4F |0 \xE9\x50 |0 \xE9\x51 |0 \xE9\x52 |0 \xE9\x53 |0 \xB3\xA4 |0 \xE9\x54 |0 \xE9\x55 |0 \xE9\x56 |0 \xE9\x57 |0 \xE9\x58 |0 \xE9\x59 |0 \xE9\x5A |0 \xE9\x5B |0 \xE9\x5C |0 \xE9\x5D |0 \xE9\x5E |0 \xE9\x5F |0 \xE9\x60 |0 \xE9\x61 |0 \xE9\x62 |0 \xE9\x63 |0 \xE9\x64 |0 \xE9\x65 |0 \xE9\x66 |0 \xE9\x67 |0 \xE9\x68 |0 \xE9\x69 |0 \xE9\x6A |0 \xE9\x6B |0 \xE9\x6C |0 \xE9\x6D |0 \xE9\x6E |0 \xE9\x6F |0 \xE9\x70 |0 \xE9\x71 |0 \xE9\x72 |0 \xE9\x73 |0 \xE9\x74 |0 \xE9\x75 |0 \xE9\x76 |0 \xE9\x77 |0 \xE9\x78 |0 \xE9\x79 |0 \xE9\x7A |0 \xE9\x7B |0 \xE9\x7C |0 \xE9\x7D |0 \xE9\x7E |0 \xE9\x80 |0 \xE9\x81 |0 \xE9\x82 |0 \xE9\x83 |0 \xE9\x84 |0 \xE9\x85 |0 \xE9\x86 |0 \xE9\x87 |0 \xE9\x88 |0 \xE9\x89 |0 \xE9\x8A |0 \xE9\x8B |0 \xE9\x8C |0 \xE9\x8D |0 \xE9\x8E |0 \xE9\x8F |0 \xE9\x90 |0 \xE9\x91 |0 \xE9\x92 |0 \xE9\x93 |0 \xE9\x94 |0 \xE9\x95 |0 \xE9\x96 |0 \xE9\x97 |0 \xE9\x98 |0 \xE9\x99 |0 \xE9\x9A |0 \xE9\x9B |0 \xE9\x9C |0 \xE9\x9D |0 \xE9\x9E |0 \xE9\x9F |0 \xE9\xA0 |0 \xEA\x40 |0 \xEA\x41 |0 \xEA\x42 |0 \xEA\x43 |0 \xEA\x44 |0 \xEA\x45 |0 \xEA\x46 |0 \xEA\x47 |0 \xEA\x48 |0 \xEA\x49 |0 \xEA\x4A |0 \xEA\x4B |0 \xEA\x4C |0 \xEA\x4D |0 \xEA\x4E |0 \xEA\x4F |0 \xEA\x50 |0 \xEA\x51 |0 \xEA\x52 |0 \xEA\x53 |0 \xEA\x54 |0 \xEA\x55 |0 \xEA\x56 |0 \xEA\x57 |0 \xEA\x58 |0 \xEA\x59 |0 \xEA\x5A |0 \xEA\x5B |0 \xC3\xC5 |0 \xE3\xC5 |0 \xC9\xC1 |0 \xE3\xC6 |0 \xEA\x5C |0 \xB1\xD5 |0 \xCE\xCA |0 \xB4\xB3 |0 \xC8\xF2 |0 \xE3\xC7 |0 \xCF\xD0 |0 \xE3\xC8 |0 \xBC\xE4 |0 \xE3\xC9 |0 \xE3\xCA |0 \xC3\xC6 |0 \xD5\xA2 |0 \xC4\xD6 |0 \xB9\xEB |0 \xCE\xC5 |0 \xE3\xCB |0 \xC3\xF6 |0 \xE3\xCC |0 \xEA\x5D |0 \xB7\xA7 |0 \xB8\xF3 |0 \xBA\xD2 |0 \xE3\xCD |0 \xE3\xCE |0 \xD4\xC4 |0 \xE3\xCF |0 \xEA\x5E |0 \xE3\xD0 |0 \xD1\xCB |0 \xE3\xD1 |0 \xE3\xD2 |0 \xE3\xD3 |0 \xE3\xD4 |0 \xD1\xD6 |0 \xE3\xD5 |0 \xB2\xFB |0 \xC0\xBB |0 \xE3\xD6 |0 \xEA\x5F |0 \xC0\xAB |0 \xE3\xD7 |0 \xE3\xD8 |0 \xE3\xD9 |0 \xEA\x60 |0 \xE3\xDA |0 \xE3\xDB |0 \xEA\x61 |0 \xB8\xB7 |0 \xDA\xE2 |0 \xEA\x62 |0 \xB6\xD3 |0 \xEA\x63 |0 \xDA\xE4 |0 \xDA\xE3 |0 \xEA\x64 |0 \xEA\x65 |0 \xEA\x66 |0 \xEA\x67 |0 \xEA\x68 |0 \xEA\x69 |0 \xEA\x6A |0 \xDA\xE6 |0 \xEA\x6B |0 \xEA\x6C |0 \xEA\x6D |0 \xC8\xEE |0 \xEA\x6E |0 \xEA\x6F |0 \xDA\xE5 |0 \xB7\xC0 |0 \xD1\xF4 |0 \xD2\xF5 |0 \xD5\xF3 |0 \xBD\xD7 |0 \xEA\x70 |0 \xEA\x71 |0 \xEA\x72 |0 \xEA\x73 |0 \xD7\xE8 |0 \xDA\xE8 |0 \xDA\xE7 |0 \xEA\x74 |0 \xB0\xA2 |0 \xCD\xD3 |0 \xEA\x75 |0 \xDA\xE9 |0 \xEA\x76 |0 \xB8\xBD |0 \xBC\xCA |0 \xC2\xBD |0 \xC2\xA4 |0 \xB3\xC2 |0 \xDA\xEA |0 \xEA\x77 |0 \xC2\xAA |0 \xC4\xB0 |0 \xBD\xB5 |0 \xEA\x78 |0 \xEA\x79 |0 \xCF\xDE |0 \xEA\x7A |0 \xEA\x7B |0 \xEA\x7C |0 \xDA\xEB |0 \xC9\xC2 |0 \xEA\x7D |0 \xEA\x7E |0 \xEA\x80 |0 \xEA\x81 |0 \xEA\x82 |0 \xB1\xDD |0 \xEA\x83 |0 \xEA\x84 |0 \xEA\x85 |0 \xDA\xEC |0 \xEA\x86 |0 \xB6\xB8 |0 \xD4\xBA |0 \xEA\x87 |0 \xB3\xFD |0 \xEA\x88 |0 \xEA\x89 |0 \xDA\xED |0 \xD4\xC9 |0 \xCF\xD5 |0 \xC5\xE3 |0 \xEA\x8A |0 \xDA\xEE |0 \xEA\x8B |0 \xEA\x8C |0 \xEA\x8D |0 \xEA\x8E |0 \xEA\x8F |0 \xDA\xEF |0 \xEA\x90 |0 \xDA\xF0 |0 \xC1\xEA |0 \xCC\xD5 |0 \xCF\xDD |0 \xEA\x91 |0 \xEA\x92 |0 \xEA\x93 |0 \xEA\x94 |0 \xEA\x95 |0 \xEA\x96 |0 \xEA\x97 |0 \xEA\x98 |0 \xEA\x99 |0 \xEA\x9A |0 \xEA\x9B |0 \xEA\x9C |0 \xEA\x9D |0 \xD3\xE7 |0 \xC2\xA1 |0 \xEA\x9E |0 \xDA\xF1 |0 \xEA\x9F |0 \xEA\xA0 |0 \xCB\xE5 |0 \xEB\x40 |0 \xDA\xF2 |0 \xEB\x41 |0 \xCB\xE6 |0 \xD2\xFE |0 \xEB\x42 |0 \xEB\x43 |0 \xEB\x44 |0 \xB8\xF4 |0 \xEB\x45 |0 \xEB\x46 |0 \xDA\xF3 |0 \xB0\xAF |0 \xCF\xB6 |0 \xEB\x47 |0 \xEB\x48 |0 \xD5\xCF |0 \xEB\x49 |0 \xEB\x4A |0 \xEB\x4B |0 \xEB\x4C |0 \xEB\x4D |0 \xEB\x4E |0 \xEB\x4F |0 \xEB\x50 |0 \xEB\x51 |0 \xEB\x52 |0 \xCB\xED |0 \xEB\x53 |0 \xEB\x54 |0 \xEB\x55 |0 \xEB\x56 |0 \xEB\x57 |0 \xEB\x58 |0 \xEB\x59 |0 \xEB\x5A |0 \xDA\xF4 |0 \xEB\x5B |0 \xEB\x5C |0 \xE3\xC4 |0 \xEB\x5D |0 \xEB\x5E |0 \xC1\xA5 |0 \xEB\x5F |0 \xEB\x60 |0 \xF6\xBF |0 \xEB\x61 |0 \xEB\x62 |0 \xF6\xC0 |0 \xF6\xC1 |0 \xC4\xD1 |0 \xEB\x63 |0 \xC8\xB8 |0 \xD1\xE3 |0 \xEB\x64 |0 \xEB\x65 |0 \xD0\xDB |0 \xD1\xC5 |0 \xBC\xAF |0 \xB9\xCD |0 \xEB\x66 |0 \xEF\xF4 |0 \xEB\x67 |0 \xEB\x68 |0 \xB4\xC6 |0 \xD3\xBA |0 \xF6\xC2 |0 \xB3\xFB |0 \xEB\x69 |0 \xEB\x6A |0 \xF6\xC3 |0 \xEB\x6B |0 \xEB\x6C |0 \xB5\xF1 |0 \xEB\x6D |0 \xEB\x6E |0 \xEB\x6F |0 \xEB\x70 |0 \xEB\x71 |0 \xEB\x72 |0 \xEB\x73 |0 \xEB\x74 |0 \xEB\x75 |0 \xEB\x76 |0 \xF6\xC5 |0 \xEB\x77 |0 \xEB\x78 |0 \xEB\x79 |0 \xEB\x7A |0 \xEB\x7B |0 \xEB\x7C |0 \xEB\x7D |0 \xD3\xEA |0 \xF6\xA7 |0 \xD1\xA9 |0 \xEB\x7E |0 \xEB\x80 |0 \xEB\x81 |0 \xEB\x82 |0 \xF6\xA9 |0 \xEB\x83 |0 \xEB\x84 |0 \xEB\x85 |0 \xF6\xA8 |0 \xEB\x86 |0 \xEB\x87 |0 \xC1\xE3 |0 \xC0\xD7 |0 \xEB\x88 |0 \xB1\xA2 |0 \xEB\x89 |0 \xEB\x8A |0 \xEB\x8B |0 \xEB\x8C |0 \xCE\xED |0 \xEB\x8D |0 \xD0\xE8 |0 \xF6\xAB |0 \xEB\x8E |0 \xEB\x8F |0 \xCF\xF6 |0 \xEB\x90 |0 \xF6\xAA |0 \xD5\xF0 |0 \xF6\xAC |0 \xC3\xB9 |0 \xEB\x91 |0 \xEB\x92 |0 \xEB\x93 |0 \xBB\xF4 |0 \xF6\xAE |0 \xF6\xAD |0 \xEB\x94 |0 \xEB\x95 |0 \xEB\x96 |0 \xC4\xDE |0 \xEB\x97 |0 \xEB\x98 |0 \xC1\xD8 |0 \xEB\x99 |0 \xEB\x9A |0 \xEB\x9B |0 \xEB\x9C |0 \xEB\x9D |0 \xCB\xAA |0 \xEB\x9E |0 \xCF\xBC |0 \xEB\x9F |0 \xEB\xA0 |0 \xEC\x40 |0 \xEC\x41 |0 \xEC\x42 |0 \xEC\x43 |0 \xEC\x44 |0 \xEC\x45 |0 \xEC\x46 |0 \xEC\x47 |0 \xEC\x48 |0 \xF6\xAF |0 \xEC\x49 |0 \xEC\x4A |0 \xF6\xB0 |0 \xEC\x4B |0 \xEC\x4C |0 \xF6\xB1 |0 \xEC\x4D |0 \xC2\xB6 |0 \xEC\x4E |0 \xEC\x4F |0 \xEC\x50 |0 \xEC\x51 |0 \xEC\x52 |0 \xB0\xD4 |0 \xC5\xF9 |0 \xEC\x53 |0 \xEC\x54 |0 \xEC\x55 |0 \xEC\x56 |0 \xF6\xB2 |0 \xEC\x57 |0 \xEC\x58 |0 \xEC\x59 |0 \xEC\x5A |0 \xEC\x5B |0 \xEC\x5C |0 \xEC\x5D |0 \xEC\x5E |0 \xEC\x5F |0 \xEC\x60 |0 \xEC\x61 |0 \xEC\x62 |0 \xEC\x63 |0 \xEC\x64 |0 \xEC\x65 |0 \xEC\x66 |0 \xEC\x67 |0 \xEC\x68 |0 \xEC\x69 |0 \xC7\xE0 |0 \xF6\xA6 |0 \xEC\x6A |0 \xEC\x6B |0 \xBE\xB8 |0 \xEC\x6C |0 \xEC\x6D |0 \xBE\xB2 |0 \xEC\x6E |0 \xB5\xE5 |0 \xEC\x6F |0 \xEC\x70 |0 \xB7\xC7 |0 \xEC\x71 |0 \xBF\xBF |0 \xC3\xD2 |0 \xC3\xE6 |0 \xEC\x72 |0 \xEC\x73 |0 \xD8\xCC |0 \xEC\x74 |0 \xEC\x75 |0 \xEC\x76 |0 \xB8\xEF |0 \xEC\x77 |0 \xEC\x78 |0 \xEC\x79 |0 \xEC\x7A |0 \xEC\x7B |0 \xEC\x7C |0 \xEC\x7D |0 \xEC\x7E |0 \xEC\x80 |0 \xBD\xF9 |0 \xD1\xA5 |0 \xEC\x81 |0 \xB0\xD0 |0 \xEC\x82 |0 \xEC\x83 |0 \xEC\x84 |0 \xEC\x85 |0 \xEC\x86 |0 \xF7\xB0 |0 \xEC\x87 |0 \xEC\x88 |0 \xEC\x89 |0 \xEC\x8A |0 \xEC\x8B |0 \xEC\x8C |0 \xEC\x8D |0 \xEC\x8E |0 \xF7\xB1 |0 \xEC\x8F |0 \xEC\x90 |0 \xEC\x91 |0 \xEC\x92 |0 \xEC\x93 |0 \xD0\xAC |0 \xEC\x94 |0 \xB0\xB0 |0 \xEC\x95 |0 \xEC\x96 |0 \xEC\x97 |0 \xF7\xB2 |0 \xF7\xB3 |0 \xEC\x98 |0 \xF7\xB4 |0 \xEC\x99 |0 \xEC\x9A |0 \xEC\x9B |0 \xC7\xCA |0 \xEC\x9C |0 \xEC\x9D |0 \xEC\x9E |0 \xEC\x9F |0 \xEC\xA0 |0 \xED\x40 |0 \xED\x41 |0 \xBE\xCF |0 \xED\x42 |0 \xED\x43 |0 \xF7\xB7 |0 \xED\x44 |0 \xED\x45 |0 \xED\x46 |0 \xED\x47 |0 \xED\x48 |0 \xED\x49 |0 \xED\x4A |0 \xF7\xB6 |0 \xED\x4B |0 \xB1\xDE |0 \xED\x4C |0 \xF7\xB5 |0 \xED\x4D |0 \xED\x4E |0 \xF7\xB8 |0 \xED\x4F |0 \xF7\xB9 |0 \xED\x50 |0 \xED\x51 |0 \xED\x52 |0 \xED\x53 |0 \xED\x54 |0 \xED\x55 |0 \xED\x56 |0 \xED\x57 |0 \xED\x58 |0 \xED\x59 |0 \xED\x5A |0 \xED\x5B |0 \xED\x5C |0 \xED\x5D |0 \xED\x5E |0 \xED\x5F |0 \xED\x60 |0 \xED\x61 |0 \xED\x62 |0 \xED\x63 |0 \xED\x64 |0 \xED\x65 |0 \xED\x66 |0 \xED\x67 |0 \xED\x68 |0 \xED\x69 |0 \xED\x6A |0 \xED\x6B |0 \xED\x6C |0 \xED\x6D |0 \xED\x6E |0 \xED\x6F |0 \xED\x70 |0 \xED\x71 |0 \xED\x72 |0 \xED\x73 |0 \xED\x74 |0 \xED\x75 |0 \xED\x76 |0 \xED\x77 |0 \xED\x78 |0 \xED\x79 |0 \xED\x7A |0 \xED\x7B |0 \xED\x7C |0 \xED\x7D |0 \xED\x7E |0 \xED\x80 |0 \xED\x81 |0 \xCE\xA4 |0 \xC8\xCD |0 \xED\x82 |0 \xBA\xAB |0 \xE8\xB8 |0 \xE8\xB9 |0 \xE8\xBA |0 \xBE\xC2 |0 \xED\x83 |0 \xED\x84 |0 \xED\x85 |0 \xED\x86 |0 \xED\x87 |0 \xD2\xF4 |0 \xED\x88 |0 \xD4\xCF |0 \xC9\xD8 |0 \xED\x89 |0 \xED\x8A |0 \xED\x8B |0 \xED\x8C |0 \xED\x8D |0 \xED\x8E |0 \xED\x8F |0 \xED\x90 |0 \xED\x91 |0 \xED\x92 |0 \xED\x93 |0 \xED\x94 |0 \xED\x95 |0 \xED\x96 |0 \xED\x97 |0 \xED\x98 |0 \xED\x99 |0 \xED\x9A |0 \xED\x9B |0 \xED\x9C |0 \xED\x9D |0 \xED\x9E |0 \xED\x9F |0 \xED\xA0 |0 \xEE\x40 |0 \xEE\x41 |0 \xEE\x42 |0 \xEE\x43 |0 \xEE\x44 |0 \xEE\x45 |0 \xEE\x46 |0 \xEE\x47 |0 \xEE\x48 |0 \xEE\x49 |0 \xEE\x4A |0 \xEE\x4B |0 \xEE\x4C |0 \xEE\x4D |0 \xEE\x4E |0 \xEE\x4F |0 \xEE\x50 |0 \xEE\x51 |0 \xEE\x52 |0 \xEE\x53 |0 \xEE\x54 |0 \xEE\x55 |0 \xEE\x56 |0 \xEE\x57 |0 \xEE\x58 |0 \xEE\x59 |0 \xEE\x5A |0 \xEE\x5B |0 \xEE\x5C |0 \xEE\x5D |0 \xEE\x5E |0 \xEE\x5F |0 \xEE\x60 |0 \xEE\x61 |0 \xEE\x62 |0 \xEE\x63 |0 \xEE\x64 |0 \xEE\x65 |0 \xEE\x66 |0 \xEE\x67 |0 \xEE\x68 |0 \xEE\x69 |0 \xEE\x6A |0 \xEE\x6B |0 \xEE\x6C |0 \xEE\x6D |0 \xEE\x6E |0 \xEE\x6F |0 \xEE\x70 |0 \xEE\x71 |0 \xEE\x72 |0 \xEE\x73 |0 \xEE\x74 |0 \xEE\x75 |0 \xEE\x76 |0 \xEE\x77 |0 \xEE\x78 |0 \xEE\x79 |0 \xEE\x7A |0 \xEE\x7B |0 \xEE\x7C |0 \xEE\x7D |0 \xEE\x7E |0 \xEE\x80 |0 \xEE\x81 |0 \xEE\x82 |0 \xEE\x83 |0 \xEE\x84 |0 \xEE\x85 |0 \xEE\x86 |0 \xEE\x87 |0 \xEE\x88 |0 \xEE\x89 |0 \xEE\x8A |0 \xEE\x8B |0 \xEE\x8C |0 \xEE\x8D |0 \xEE\x8E |0 \xEE\x8F |0 \xEE\x90 |0 \xEE\x91 |0 \xEE\x92 |0 \xEE\x93 |0 \xEE\x94 |0 \xEE\x95 |0 \xEE\x96 |0 \xEE\x97 |0 \xEE\x98 |0 \xEE\x99 |0 \xEE\x9A |0 \xEE\x9B |0 \xEE\x9C |0 \xEE\x9D |0 \xEE\x9E |0 \xEE\x9F |0 \xEE\xA0 |0 \xEF\x40 |0 \xEF\x41 |0 \xEF\x42 |0 \xEF\x43 |0 \xEF\x44 |0 \xEF\x45 |0 \xD2\xB3 |0 \xB6\xA5 |0 \xC7\xEA |0 \xF1\xFC |0 \xCF\xEE |0 \xCB\xB3 |0 \xD0\xEB |0 \xE7\xEF |0 \xCD\xE7 |0 \xB9\xCB |0 \xB6\xD9 |0 \xF1\xFD |0 \xB0\xE4 |0 \xCB\xCC |0 \xF1\xFE |0 \xD4\xA4 |0 \xC2\xAD |0 \xC1\xEC |0 \xC6\xC4 |0 \xBE\xB1 |0 \xF2\xA1 |0 \xBC\xD5 |0 \xEF\x46 |0 \xF2\xA2 |0 \xF2\xA3 |0 \xEF\x47 |0 \xF2\xA4 |0 \xD2\xC3 |0 \xC6\xB5 |0 \xEF\x48 |0 \xCD\xC7 |0 \xF2\xA5 |0 \xEF\x49 |0 \xD3\xB1 |0 \xBF\xC5 |0 \xCC\xE2 |0 \xEF\x4A |0 \xF2\xA6 |0 \xF2\xA7 |0 \xD1\xD5 |0 \xB6\xEE |0 \xF2\xA8 |0 \xF2\xA9 |0 \xB5\xDF |0 \xF2\xAA |0 \xF2\xAB |0 \xEF\x4B |0 \xB2\xFC |0 \xF2\xAC |0 \xF2\xAD |0 \xC8\xA7 |0 \xEF\x4C |0 \xEF\x4D |0 \xEF\x4E |0 \xEF\x4F |0 \xEF\x50 |0 \xEF\x51 |0 \xEF\x52 |0 \xEF\x53 |0 \xEF\x54 |0 \xEF\x55 |0 \xEF\x56 |0 \xEF\x57 |0 \xEF\x58 |0 \xEF\x59 |0 \xEF\x5A |0 \xEF\x5B |0 \xEF\x5C |0 \xEF\x5D |0 \xEF\x5E |0 \xEF\x5F |0 \xEF\x60 |0 \xEF\x61 |0 \xEF\x62 |0 \xEF\x63 |0 \xEF\x64 |0 \xEF\x65 |0 \xEF\x66 |0 \xEF\x67 |0 \xEF\x68 |0 \xEF\x69 |0 \xEF\x6A |0 \xEF\x6B |0 \xEF\x6C |0 \xEF\x6D |0 \xEF\x6E |0 \xEF\x6F |0 \xEF\x70 |0 \xEF\x71 |0 \xB7\xE7 |0 \xEF\x72 |0 \xEF\x73 |0 \xEC\xA9 |0 \xEC\xAA |0 \xEC\xAB |0 \xEF\x74 |0 \xEC\xAC |0 \xEF\x75 |0 \xEF\x76 |0 \xC6\xAE |0 \xEC\xAD |0 \xEC\xAE |0 \xEF\x77 |0 \xEF\x78 |0 \xEF\x79 |0 \xB7\xC9 |0 \xCA\xB3 |0 \xEF\x7A |0 \xEF\x7B |0 \xEF\x7C |0 \xEF\x7D |0 \xEF\x7E |0 \xEF\x80 |0 \xEF\x81 |0 \xE2\xB8 |0 \xF7\xCF |0 \xEF\x82 |0 \xEF\x83 |0 \xEF\x84 |0 \xEF\x85 |0 \xEF\x86 |0 \xEF\x87 |0 \xEF\x88 |0 \xEF\x89 |0 \xEF\x8A |0 \xEF\x8B |0 \xEF\x8C |0 \xEF\x8D |0 \xEF\x8E |0 \xEF\x8F |0 \xEF\x90 |0 \xEF\x91 |0 \xEF\x92 |0 \xEF\x93 |0 \xEF\x94 |0 \xEF\x95 |0 \xEF\x96 |0 \xEF\x97 |0 \xEF\x98 |0 \xEF\x99 |0 \xEF\x9A |0 \xEF\x9B |0 \xEF\x9C |0 \xEF\x9D |0 \xEF\x9E |0 \xEF\x9F |0 \xEF\xA0 |0 \xF0\x40 |0 \xF0\x41 |0 \xF0\x42 |0 \xF0\x43 |0 \xF0\x44 |0 \xF7\xD0 |0 \xF0\x45 |0 \xF0\x46 |0 \xB2\xCD |0 \xF0\x47 |0 \xF0\x48 |0 \xF0\x49 |0 \xF0\x4A |0 \xF0\x4B |0 \xF0\x4C |0 \xF0\x4D |0 \xF0\x4E |0 \xF0\x4F |0 \xF0\x50 |0 \xF0\x51 |0 \xF0\x52 |0 \xF0\x53 |0 \xF0\x54 |0 \xF0\x55 |0 \xF0\x56 |0 \xF0\x57 |0 \xF0\x58 |0 \xF0\x59 |0 \xF0\x5A |0 \xF0\x5B |0 \xF0\x5C |0 \xF0\x5D |0 \xF0\x5E |0 \xF0\x5F |0 \xF0\x60 |0 \xF0\x61 |0 \xF0\x62 |0 \xF0\x63 |0 \xF7\xD1 |0 \xF0\x64 |0 \xF0\x65 |0 \xF0\x66 |0 \xF0\x67 |0 \xF0\x68 |0 \xF0\x69 |0 \xF0\x6A |0 \xF0\x6B |0 \xF0\x6C |0 \xF0\x6D |0 \xF0\x6E |0 \xF0\x6F |0 \xF0\x70 |0 \xF0\x71 |0 \xF0\x72 |0 \xF0\x73 |0 \xF0\x74 |0 \xF0\x75 |0 \xF0\x76 |0 \xF0\x77 |0 \xF0\x78 |0 \xF0\x79 |0 \xF0\x7A |0 \xF0\x7B |0 \xF0\x7C |0 \xF0\x7D |0 \xF0\x7E |0 \xF0\x80 |0 \xF0\x81 |0 \xF0\x82 |0 \xF0\x83 |0 \xF0\x84 |0 \xF0\x85 |0 \xF0\x86 |0 \xF0\x87 |0 \xF0\x88 |0 \xF0\x89 |0 \xF7\xD3 |0 \xF7\xD2 |0 \xF0\x8A |0 \xF0\x8B |0 \xF0\x8C |0 \xF0\x8D |0 \xF0\x8E |0 \xF0\x8F |0 \xF0\x90 |0 \xF0\x91 |0 \xF0\x92 |0 \xF0\x93 |0 \xF0\x94 |0 \xF0\x95 |0 \xF0\x96 |0 \xE2\xBB |0 \xF0\x97 |0 \xBC\xA2 |0 \xF0\x98 |0 \xE2\xBC |0 \xE2\xBD |0 \xE2\xBE |0 \xE2\xBF |0 \xE2\xC0 |0 \xE2\xC1 |0 \xB7\xB9 |0 \xD2\xFB |0 \xBD\xA4 |0 \xCA\xCE |0 \xB1\xA5 |0 \xCB\xC7 |0 \xF0\x99 |0 \xE2\xC2 |0 \xB6\xFC |0 \xC8\xC4 |0 \xE2\xC3 |0 \xF0\x9A |0 \xF0\x9B |0 \xBD\xC8 |0 \xF0\x9C |0 \xB1\xFD |0 \xE2\xC4 |0 \xF0\x9D |0 \xB6\xF6 |0 \xE2\xC5 |0 \xC4\xD9 |0 \xF0\x9E |0 \xF0\x9F |0 \xE2\xC6 |0 \xCF\xDA |0 \xB9\xDD |0 \xE2\xC7 |0 \xC0\xA1 |0 \xF0\xA0 |0 \xE2\xC8 |0 \xB2\xF6 |0 \xF1\x40 |0 \xE2\xC9 |0 \xF1\x41 |0 \xC1\xF3 |0 \xE2\xCA |0 \xE2\xCB |0 \xC2\xF8 |0 \xE2\xCC |0 \xE2\xCD |0 \xE2\xCE |0 \xCA\xD7 |0 \xD8\xB8 |0 \xD9\xE5 |0 \xCF\xE3 |0 \xF1\x42 |0 \xF1\x43 |0 \xF1\x44 |0 \xF1\x45 |0 \xF1\x46 |0 \xF1\x47 |0 \xF1\x48 |0 \xF1\x49 |0 \xF1\x4A |0 \xF1\x4B |0 \xF1\x4C |0 \xF0\xA5 |0 \xF1\x4D |0 \xF1\x4E |0 \xDC\xB0 |0 \xF1\x4F |0 \xF1\x50 |0 \xF1\x51 |0 \xF1\x52 |0 \xF1\x53 |0 \xF1\x54 |0 \xF1\x55 |0 \xF1\x56 |0 \xF1\x57 |0 \xF1\x58 |0 \xF1\x59 |0 \xF1\x5A |0 \xF1\x5B |0 \xF1\x5C |0 \xF1\x5D |0 \xF1\x5E |0 \xF1\x5F |0 \xF1\x60 |0 \xF1\x61 |0 \xF1\x62 |0 \xF1\x63 |0 \xF1\x64 |0 \xF1\x65 |0 \xF1\x66 |0 \xF1\x67 |0 \xF1\x68 |0 \xF1\x69 |0 \xF1\x6A |0 \xF1\x6B |0 \xF1\x6C |0 \xF1\x6D |0 \xF1\x6E |0 \xF1\x6F |0 \xF1\x70 |0 \xF1\x71 |0 \xF1\x72 |0 \xF1\x73 |0 \xF1\x74 |0 \xF1\x75 |0 \xF1\x76 |0 \xF1\x77 |0 \xF1\x78 |0 \xF1\x79 |0 \xF1\x7A |0 \xF1\x7B |0 \xF1\x7C |0 \xF1\x7D |0 \xF1\x7E |0 \xF1\x80 |0 \xF1\x81 |0 \xF1\x82 |0 \xF1\x83 |0 \xF1\x84 |0 \xF1\x85 |0 \xF1\x86 |0 \xF1\x87 |0 \xF1\x88 |0 \xF1\x89 |0 \xF1\x8A |0 \xF1\x8B |0 \xF1\x8C |0 \xF1\x8D |0 \xF1\x8E |0 \xF1\x8F |0 \xF1\x90 |0 \xF1\x91 |0 \xF1\x92 |0 \xF1\x93 |0 \xF1\x94 |0 \xF1\x95 |0 \xF1\x96 |0 \xF1\x97 |0 \xF1\x98 |0 \xF1\x99 |0 \xF1\x9A |0 \xF1\x9B |0 \xF1\x9C |0 \xF1\x9D |0 \xF1\x9E |0 \xF1\x9F |0 \xF1\xA0 |0 \xF2\x40 |0 \xF2\x41 |0 \xF2\x42 |0 \xF2\x43 |0 \xF2\x44 |0 \xF2\x45 |0 \xF2\x46 |0 \xF2\x47 |0 \xF2\x48 |0 \xF2\x49 |0 \xF2\x4A |0 \xF2\x4B |0 \xF2\x4C |0 \xF2\x4D |0 \xF2\x4E |0 \xF2\x4F |0 \xF2\x50 |0 \xF2\x51 |0 \xF2\x52 |0 \xF2\x53 |0 \xF2\x54 |0 \xF2\x55 |0 \xF2\x56 |0 \xF2\x57 |0 \xF2\x58 |0 \xF2\x59 |0 \xF2\x5A |0 \xF2\x5B |0 \xF2\x5C |0 \xF2\x5D |0 \xF2\x5E |0 \xF2\x5F |0 \xF2\x60 |0 \xF2\x61 |0 \xF2\x62 |0 \xF2\x63 |0 \xF2\x64 |0 \xF2\x65 |0 \xF2\x66 |0 \xF2\x67 |0 \xF2\x68 |0 \xF2\x69 |0 \xF2\x6A |0 \xF2\x6B |0 \xF2\x6C |0 \xF2\x6D |0 \xF2\x6E |0 \xF2\x6F |0 \xF2\x70 |0 \xF2\x71 |0 \xF2\x72 |0 \xF2\x73 |0 \xF2\x74 |0 \xF2\x75 |0 \xF2\x76 |0 \xF2\x77 |0 \xF2\x78 |0 \xF2\x79 |0 \xF2\x7A |0 \xF2\x7B |0 \xF2\x7C |0 \xF2\x7D |0 \xF2\x7E |0 \xF2\x80 |0 \xF2\x81 |0 \xF2\x82 |0 \xF2\x83 |0 \xF2\x84 |0 \xF2\x85 |0 \xF2\x86 |0 \xF2\x87 |0 \xF2\x88 |0 \xF2\x89 |0 \xF2\x8A |0 \xF2\x8B |0 \xF2\x8C |0 \xF2\x8D |0 \xF2\x8E |0 \xF2\x8F |0 \xF2\x90 |0 \xF2\x91 |0 \xF2\x92 |0 \xF2\x93 |0 \xF2\x94 |0 \xF2\x95 |0 \xF2\x96 |0 \xF2\x97 |0 \xF2\x98 |0 \xF2\x99 |0 \xF2\x9A |0 \xF2\x9B |0 \xF2\x9C |0 \xF2\x9D |0 \xF2\x9E |0 \xF2\x9F |0 \xF2\xA0 |0 \xF3\x40 |0 \xF3\x41 |0 \xF3\x42 |0 \xF3\x43 |0 \xF3\x44 |0 \xF3\x45 |0 \xF3\x46 |0 \xF3\x47 |0 \xF3\x48 |0 \xF3\x49 |0 \xF3\x4A |0 \xF3\x4B |0 \xF3\x4C |0 \xF3\x4D |0 \xF3\x4E |0 \xF3\x4F |0 \xF3\x50 |0 \xF3\x51 |0 \xC2\xED |0 \xD4\xA6 |0 \xCD\xD4 |0 \xD1\xB1 |0 \xB3\xDB |0 \xC7\xFD |0 \xF3\x52 |0 \xB2\xB5 |0 \xC2\xBF |0 \xE6\xE0 |0 \xCA\xBB |0 \xE6\xE1 |0 \xE6\xE2 |0 \xBE\xD4 |0 \xE6\xE3 |0 \xD7\xA4 |0 \xCD\xD5 |0 \xE6\xE5 |0 \xBC\xDD |0 \xE6\xE4 |0 \xE6\xE6 |0 \xE6\xE7 |0 \xC2\xEE |0 \xF3\x53 |0 \xBD\xBE |0 \xE6\xE8 |0 \xC2\xE6 |0 \xBA\xA7 |0 \xE6\xE9 |0 \xF3\x54 |0 \xE6\xEA |0 \xB3\xD2 |0 \xD1\xE9 |0 \xF3\x55 |0 \xF3\x56 |0 \xBF\xA5 |0 \xE6\xEB |0 \xC6\xEF |0 \xE6\xEC |0 \xE6\xED |0 \xF3\x57 |0 \xF3\x58 |0 \xE6\xEE |0 \xC6\xAD |0 \xE6\xEF |0 \xF3\x59 |0 \xC9\xA7 |0 \xE6\xF0 |0 \xE6\xF1 |0 \xE6\xF2 |0 \xE5\xB9 |0 \xE6\xF3 |0 \xE6\xF4 |0 \xC2\xE2 |0 \xE6\xF5 |0 \xE6\xF6 |0 \xD6\xE8 |0 \xE6\xF7 |0 \xF3\x5A |0 \xE6\xF8 |0 \xB9\xC7 |0 \xF3\x5B |0 \xF3\x5C |0 \xF3\x5D |0 \xF3\x5E |0 \xF3\x5F |0 \xF3\x60 |0 \xF3\x61 |0 \xF7\xBB |0 \xF7\xBA |0 \xF3\x62 |0 \xF3\x63 |0 \xF3\x64 |0 \xF3\x65 |0 \xF7\xBE |0 \xF7\xBC |0 \xBA\xA1 |0 \xF3\x66 |0 \xF7\xBF |0 \xF3\x67 |0 \xF7\xC0 |0 \xF3\x68 |0 \xF3\x69 |0 \xF3\x6A |0 \xF7\xC2 |0 \xF7\xC1 |0 \xF7\xC4 |0 \xF3\x6B |0 \xF3\x6C |0 \xF7\xC3 |0 \xF3\x6D |0 \xF3\x6E |0 \xF3\x6F |0 \xF3\x70 |0 \xF3\x71 |0 \xF7\xC5 |0 \xF7\xC6 |0 \xF3\x72 |0 \xF3\x73 |0 \xF3\x74 |0 \xF3\x75 |0 \xF7\xC7 |0 \xF3\x76 |0 \xCB\xE8 |0 \xF3\x77 |0 \xF3\x78 |0 \xF3\x79 |0 \xF3\x7A |0 \xB8\xDF |0 \xF3\x7B |0 \xF3\x7C |0 \xF3\x7D |0 \xF3\x7E |0 \xF3\x80 |0 \xF3\x81 |0 \xF7\xD4 |0 \xF3\x82 |0 \xF7\xD5 |0 \xF3\x83 |0 \xF3\x84 |0 \xF3\x85 |0 \xF3\x86 |0 \xF7\xD6 |0 \xF3\x87 |0 \xF3\x88 |0 \xF3\x89 |0 \xF3\x8A |0 \xF7\xD8 |0 \xF3\x8B |0 \xF7\xDA |0 \xF3\x8C |0 \xF7\xD7 |0 \xF3\x8D |0 \xF3\x8E |0 \xF3\x8F |0 \xF3\x90 |0 \xF3\x91 |0 \xF3\x92 |0 \xF3\x93 |0 \xF3\x94 |0 \xF3\x95 |0 \xF7\xDB |0 \xF3\x96 |0 \xF7\xD9 |0 \xF3\x97 |0 \xF3\x98 |0 \xF3\x99 |0 \xF3\x9A |0 \xF3\x9B |0 \xF3\x9C |0 \xF3\x9D |0 \xD7\xD7 |0 \xF3\x9E |0 \xF3\x9F |0 \xF3\xA0 |0 \xF4\x40 |0 \xF7\xDC |0 \xF4\x41 |0 \xF4\x42 |0 \xF4\x43 |0 \xF4\x44 |0 \xF4\x45 |0 \xF4\x46 |0 \xF7\xDD |0 \xF4\x47 |0 \xF4\x48 |0 \xF4\x49 |0 \xF7\xDE |0 \xF4\x4A |0 \xF4\x4B |0 \xF4\x4C |0 \xF4\x4D |0 \xF4\x4E |0 \xF4\x4F |0 \xF4\x50 |0 \xF4\x51 |0 \xF4\x52 |0 \xF4\x53 |0 \xF4\x54 |0 \xF7\xDF |0 \xF4\x55 |0 \xF4\x56 |0 \xF4\x57 |0 \xF7\xE0 |0 \xF4\x58 |0 \xF4\x59 |0 \xF4\x5A |0 \xF4\x5B |0 \xF4\x5C |0 \xF4\x5D |0 \xF4\x5E |0 \xF4\x5F |0 \xF4\x60 |0 \xF4\x61 |0 \xF4\x62 |0 \xDB\xCB |0 \xF4\x63 |0 \xF4\x64 |0 \xD8\xAA |0 \xF4\x65 |0 \xF4\x66 |0 \xF4\x67 |0 \xF4\x68 |0 \xF4\x69 |0 \xF4\x6A |0 \xF4\x6B |0 \xF4\x6C |0 \xE5\xF7 |0 \xB9\xED |0 \xF4\x6D |0 \xF4\x6E |0 \xF4\x6F |0 \xF4\x70 |0 \xBF\xFD |0 \xBB\xEA |0 \xF7\xC9 |0 \xC6\xC7 |0 \xF7\xC8 |0 \xF4\x71 |0 \xF7\xCA |0 \xF7\xCC |0 \xF7\xCB |0 \xF4\x72 |0 \xF4\x73 |0 \xF4\x74 |0 \xF7\xCD |0 \xF4\x75 |0 \xCE\xBA |0 \xF4\x76 |0 \xF7\xCE |0 \xF4\x77 |0 \xF4\x78 |0 \xC4\xA7 |0 \xF4\x79 |0 \xF4\x7A |0 \xF4\x7B |0 \xF4\x7C |0 \xF4\x7D |0 \xF4\x7E |0 \xF4\x80 |0 \xF4\x81 |0 \xF4\x82 |0 \xF4\x83 |0 \xF4\x84 |0 \xF4\x85 |0 \xF4\x86 |0 \xF4\x87 |0 \xF4\x88 |0 \xF4\x89 |0 \xF4\x8A |0 \xF4\x8B |0 \xF4\x8C |0 \xF4\x8D |0 \xF4\x8E |0 \xF4\x8F |0 \xF4\x90 |0 \xF4\x91 |0 \xF4\x92 |0 \xF4\x93 |0 \xF4\x94 |0 \xF4\x95 |0 \xF4\x96 |0 \xF4\x97 |0 \xF4\x98 |0 \xF4\x99 |0 \xF4\x9A |0 \xF4\x9B |0 \xF4\x9C |0 \xF4\x9D |0 \xF4\x9E |0 \xF4\x9F |0 \xF4\xA0 |0 \xF5\x40 |0 \xF5\x41 |0 \xF5\x42 |0 \xF5\x43 |0 \xF5\x44 |0 \xF5\x45 |0 \xF5\x46 |0 \xF5\x47 |0 \xF5\x48 |0 \xF5\x49 |0 \xF5\x4A |0 \xF5\x4B |0 \xF5\x4C |0 \xF5\x4D |0 \xF5\x4E |0 \xF5\x4F |0 \xF5\x50 |0 \xF5\x51 |0 \xF5\x52 |0 \xF5\x53 |0 \xF5\x54 |0 \xF5\x55 |0 \xF5\x56 |0 \xF5\x57 |0 \xF5\x58 |0 \xF5\x59 |0 \xF5\x5A |0 \xF5\x5B |0 \xF5\x5C |0 \xF5\x5D |0 \xF5\x5E |0 \xF5\x5F |0 \xF5\x60 |0 \xF5\x61 |0 \xF5\x62 |0 \xF5\x63 |0 \xF5\x64 |0 \xF5\x65 |0 \xF5\x66 |0 \xF5\x67 |0 \xF5\x68 |0 \xF5\x69 |0 \xF5\x6A |0 \xF5\x6B |0 \xF5\x6C |0 \xF5\x6D |0 \xF5\x6E |0 \xF5\x6F |0 \xF5\x70 |0 \xF5\x71 |0 \xF5\x72 |0 \xF5\x73 |0 \xF5\x74 |0 \xF5\x75 |0 \xF5\x76 |0 \xF5\x77 |0 \xF5\x78 |0 \xF5\x79 |0 \xF5\x7A |0 \xF5\x7B |0 \xF5\x7C |0 \xF5\x7D |0 \xF5\x7E |0 \xF5\x80 |0 \xF5\x81 |0 \xF5\x82 |0 \xF5\x83 |0 \xF5\x84 |0 \xF5\x85 |0 \xF5\x86 |0 \xF5\x87 |0 \xF5\x88 |0 \xF5\x89 |0 \xF5\x8A |0 \xF5\x8B |0 \xF5\x8C |0 \xF5\x8D |0 \xF5\x8E |0 \xF5\x8F |0 \xF5\x90 |0 \xF5\x91 |0 \xF5\x92 |0 \xF5\x93 |0 \xF5\x94 |0 \xF5\x95 |0 \xF5\x96 |0 \xF5\x97 |0 \xF5\x98 |0 \xF5\x99 |0 \xF5\x9A |0 \xF5\x9B |0 \xF5\x9C |0 \xF5\x9D |0 \xF5\x9E |0 \xF5\x9F |0 \xF5\xA0 |0 \xF6\x40 |0 \xF6\x41 |0 \xF6\x42 |0 \xF6\x43 |0 \xF6\x44 |0 \xF6\x45 |0 \xF6\x46 |0 \xF6\x47 |0 \xF6\x48 |0 \xF6\x49 |0 \xF6\x4A |0 \xF6\x4B |0 \xF6\x4C |0 \xF6\x4D |0 \xF6\x4E |0 \xF6\x4F |0 \xF6\x50 |0 \xF6\x51 |0 \xF6\x52 |0 \xF6\x53 |0 \xF6\x54 |0 \xF6\x55 |0 \xF6\x56 |0 \xF6\x57 |0 \xF6\x58 |0 \xF6\x59 |0 \xF6\x5A |0 \xF6\x5B |0 \xF6\x5C |0 \xF6\x5D |0 \xF6\x5E |0 \xF6\x5F |0 \xF6\x60 |0 \xF6\x61 |0 \xF6\x62 |0 \xF6\x63 |0 \xF6\x64 |0 \xF6\x65 |0 \xF6\x66 |0 \xF6\x67 |0 \xF6\x68 |0 \xF6\x69 |0 \xF6\x6A |0 \xF6\x6B |0 \xF6\x6C |0 \xF6\x6D |0 \xF6\x6E |0 \xF6\x6F |0 \xF6\x70 |0 \xF6\x71 |0 \xF6\x72 |0 \xF6\x73 |0 \xF6\x74 |0 \xF6\x75 |0 \xF6\x76 |0 \xF6\x77 |0 \xF6\x78 |0 \xF6\x79 |0 \xF6\x7A |0 \xF6\x7B |0 \xF6\x7C |0 \xF6\x7D |0 \xF6\x7E |0 \xF6\x80 |0 \xF6\x81 |0 \xF6\x82 |0 \xF6\x83 |0 \xF6\x84 |0 \xF6\x85 |0 \xF6\x86 |0 \xF6\x87 |0 \xF6\x88 |0 \xF6\x89 |0 \xF6\x8A |0 \xF6\x8B |0 \xF6\x8C |0 \xF6\x8D |0 \xF6\x8E |0 \xF6\x8F |0 \xF6\x90 |0 \xF6\x91 |0 \xF6\x92 |0 \xF6\x93 |0 \xF6\x94 |0 \xF6\x95 |0 \xF6\x96 |0 \xF6\x97 |0 \xF6\x98 |0 \xF6\x99 |0 \xF6\x9A |0 \xF6\x9B |0 \xF6\x9C |0 \xF6\x9D |0 \xF6\x9E |0 \xF6\x9F |0 \xF6\xA0 |0 \xF7\x40 |0 \xF7\x41 |0 \xF7\x42 |0 \xF7\x43 |0 \xF7\x44 |0 \xF7\x45 |0 \xF7\x46 |0 \xF7\x47 |0 \xF7\x48 |0 \xF7\x49 |0 \xF7\x4A |0 \xF7\x4B |0 \xF7\x4C |0 \xF7\x4D |0 \xF7\x4E |0 \xF7\x4F |0 \xF7\x50 |0 \xF7\x51 |0 \xF7\x52 |0 \xF7\x53 |0 \xF7\x54 |0 \xF7\x55 |0 \xF7\x56 |0 \xF7\x57 |0 \xF7\x58 |0 \xF7\x59 |0 \xF7\x5A |0 \xF7\x5B |0 \xF7\x5C |0 \xF7\x5D |0 \xF7\x5E |0 \xF7\x5F |0 \xF7\x60 |0 \xF7\x61 |0 \xF7\x62 |0 \xF7\x63 |0 \xF7\x64 |0 \xF7\x65 |0 \xF7\x66 |0 \xF7\x67 |0 \xF7\x68 |0 \xF7\x69 |0 \xF7\x6A |0 \xF7\x6B |0 \xF7\x6C |0 \xF7\x6D |0 \xF7\x6E |0 \xF7\x6F |0 \xF7\x70 |0 \xF7\x71 |0 \xF7\x72 |0 \xF7\x73 |0 \xF7\x74 |0 \xF7\x75 |0 \xF7\x76 |0 \xF7\x77 |0 \xF7\x78 |0 \xF7\x79 |0 \xF7\x7A |0 \xF7\x7B |0 \xF7\x7C |0 \xF7\x7D |0 \xF7\x7E |0 \xF7\x80 |0 \xD3\xE3 |0 \xF7\x81 |0 \xF7\x82 |0 \xF6\xCF |0 \xF7\x83 |0 \xC2\xB3 |0 \xF6\xD0 |0 \xF7\x84 |0 \xF7\x85 |0 \xF6\xD1 |0 \xF6\xD2 |0 \xF6\xD3 |0 \xF6\xD4 |0 \xF7\x86 |0 \xF7\x87 |0 \xF6\xD6 |0 \xF7\x88 |0 \xB1\xAB |0 \xF6\xD7 |0 \xF7\x89 |0 \xF6\xD8 |0 \xF6\xD9 |0 \xF6\xDA |0 \xF7\x8A |0 \xF6\xDB |0 \xF6\xDC |0 \xF7\x8B |0 \xF7\x8C |0 \xF7\x8D |0 \xF7\x8E |0 \xF6\xDD |0 \xF6\xDE |0 \xCF\xCA |0 \xF7\x8F |0 \xF6\xDF |0 \xF6\xE0 |0 \xF6\xE1 |0 \xF6\xE2 |0 \xF6\xE3 |0 \xF6\xE4 |0 \xC0\xF0 |0 \xF6\xE5 |0 \xF6\xE6 |0 \xF6\xE7 |0 \xF6\xE8 |0 \xF6\xE9 |0 \xF7\x90 |0 \xF6\xEA |0 \xF7\x91 |0 \xF6\xEB |0 \xF6\xEC |0 \xF7\x92 |0 \xF6\xED |0 \xF6\xEE |0 \xF6\xEF |0 \xF6\xF0 |0 \xF6\xF1 |0 \xF6\xF2 |0 \xF6\xF3 |0 \xF6\xF4 |0 \xBE\xA8 |0 \xF7\x93 |0 \xF6\xF5 |0 \xF6\xF6 |0 \xF6\xF7 |0 \xF6\xF8 |0 \xF7\x94 |0 \xF7\x95 |0 \xF7\x96 |0 \xF7\x97 |0 \xF7\x98 |0 \xC8\xFA |0 \xF6\xF9 |0 \xF6\xFA |0 \xF6\xFB |0 \xF6\xFC |0 \xF7\x99 |0 \xF7\x9A |0 \xF6\xFD |0 \xF6\xFE |0 \xF7\xA1 |0 \xF7\xA2 |0 \xF7\xA3 |0 \xF7\xA4 |0 \xF7\xA5 |0 \xF7\x9B |0 \xF7\x9C |0 \xF7\xA6 |0 \xF7\xA7 |0 \xF7\xA8 |0 \xB1\xEE |0 \xF7\xA9 |0 \xF7\xAA |0 \xF7\xAB |0 \xF7\x9D |0 \xF7\x9E |0 \xF7\xAC |0 \xF7\xAD |0 \xC1\xDB |0 \xF7\xAE |0 \xF7\x9F |0 \xF7\xA0 |0 \xF7\xAF |0 \xF8\x40 |0 \xF8\x41 |0 \xF8\x42 |0 \xF8\x43 |0 \xF8\x44 |0 \xF8\x45 |0 \xF8\x46 |0 \xF8\x47 |0 \xF8\x48 |0 \xF8\x49 |0 \xF8\x4A |0 \xF8\x4B |0 \xF8\x4C |0 \xF8\x4D |0 \xF8\x4E |0 \xF8\x4F |0 \xF8\x50 |0 \xF8\x51 |0 \xF8\x52 |0 \xF8\x53 |0 \xF8\x54 |0 \xF8\x55 |0 \xF8\x56 |0 \xF8\x57 |0 \xF8\x58 |0 \xF8\x59 |0 \xF8\x5A |0 \xF8\x5B |0 \xF8\x5C |0 \xF8\x5D |0 \xF8\x5E |0 \xF8\x5F |0 \xF8\x60 |0 \xF8\x61 |0 \xF8\x62 |0 \xF8\x63 |0 \xF8\x64 |0 \xF8\x65 |0 \xF8\x66 |0 \xF8\x67 |0 \xF8\x68 |0 \xF8\x69 |0 \xF8\x6A |0 \xF8\x6B |0 \xF8\x6C |0 \xF8\x6D |0 \xF8\x6E |0 \xF8\x6F |0 \xF8\x70 |0 \xF8\x71 |0 \xF8\x72 |0 \xF8\x73 |0 \xF8\x74 |0 \xF8\x75 |0 \xF8\x76 |0 \xF8\x77 |0 \xF8\x78 |0 \xF8\x79 |0 \xF8\x7A |0 \xF8\x7B |0 \xF8\x7C |0 \xF8\x7D |0 \xF8\x7E |0 \xF8\x80 |0 \xF8\x81 |0 \xF8\x82 |0 \xF8\x83 |0 \xF8\x84 |0 \xF8\x85 |0 \xF8\x86 |0 \xF8\x87 |0 \xF8\x88 |0 \xF8\x89 |0 \xF8\x8A |0 \xF8\x8B |0 \xF8\x8C |0 \xF8\x8D |0 \xF8\x8E |0 \xF8\x8F |0 \xF8\x90 |0 \xF8\x91 |0 \xF8\x92 |0 \xF8\x93 |0 \xF8\x94 |0 \xF8\x95 |0 \xF8\x96 |0 \xF8\x97 |0 \xF8\x98 |0 \xF8\x99 |0 \xF8\x9A |0 \xF8\x9B |0 \xF8\x9C |0 \xF8\x9D |0 \xF8\x9E |0 \xF8\x9F |0 \xF8\xA0 |0 \xF9\x40 |0 \xF9\x41 |0 \xF9\x42 |0 \xF9\x43 |0 \xF9\x44 |0 \xF9\x45 |0 \xF9\x46 |0 \xF9\x47 |0 \xF9\x48 |0 \xF9\x49 |0 \xF9\x4A |0 \xF9\x4B |0 \xF9\x4C |0 \xF9\x4D |0 \xF9\x4E |0 \xF9\x4F |0 \xF9\x50 |0 \xF9\x51 |0 \xF9\x52 |0 \xF9\x53 |0 \xF9\x54 |0 \xF9\x55 |0 \xF9\x56 |0 \xF9\x57 |0 \xF9\x58 |0 \xF9\x59 |0 \xF9\x5A |0 \xF9\x5B |0 \xF9\x5C |0 \xF9\x5D |0 \xF9\x5E |0 \xF9\x5F |0 \xF9\x60 |0 \xF9\x61 |0 \xF9\x62 |0 \xF9\x63 |0 \xF9\x64 |0 \xF9\x65 |0 \xF9\x66 |0 \xF9\x67 |0 \xF9\x68 |0 \xF9\x69 |0 \xF9\x6A |0 \xF9\x6B |0 \xF9\x6C |0 \xF9\x6D |0 \xF9\x6E |0 \xF9\x6F |0 \xF9\x70 |0 \xF9\x71 |0 \xF9\x72 |0 \xF9\x73 |0 \xF9\x74 |0 \xF9\x75 |0 \xF9\x76 |0 \xF9\x77 |0 \xF9\x78 |0 \xF9\x79 |0 \xF9\x7A |0 \xF9\x7B |0 \xF9\x7C |0 \xF9\x7D |0 \xF9\x7E |0 \xF9\x80 |0 \xF9\x81 |0 \xF9\x82 |0 \xF9\x83 |0 \xF9\x84 |0 \xF9\x85 |0 \xF9\x86 |0 \xF9\x87 |0 \xF9\x88 |0 \xF9\x89 |0 \xF9\x8A |0 \xF9\x8B |0 \xF9\x8C |0 \xF9\x8D |0 \xF9\x8E |0 \xF9\x8F |0 \xF9\x90 |0 \xF9\x91 |0 \xF9\x92 |0 \xF9\x93 |0 \xF9\x94 |0 \xF9\x95 |0 \xF9\x96 |0 \xF9\x97 |0 \xF9\x98 |0 \xF9\x99 |0 \xF9\x9A |0 \xF9\x9B |0 \xF9\x9C |0 \xF9\x9D |0 \xF9\x9E |0 \xF9\x9F |0 \xF9\xA0 |0 \xFA\x40 |0 \xFA\x41 |0 \xFA\x42 |0 \xFA\x43 |0 \xFA\x44 |0 \xFA\x45 |0 \xFA\x46 |0 \xFA\x47 |0 \xFA\x48 |0 \xFA\x49 |0 \xFA\x4A |0 \xFA\x4B |0 \xFA\x4C |0 \xFA\x4D |0 \xFA\x4E |0 \xFA\x4F |0 \xFA\x50 |0 \xFA\x51 |0 \xFA\x52 |0 \xFA\x53 |0 \xFA\x54 |0 \xFA\x55 |0 \xFA\x56 |0 \xFA\x57 |0 \xFA\x58 |0 \xFA\x59 |0 \xFA\x5A |0 \xFA\x5B |0 \xFA\x5C |0 \xFA\x5D |0 \xFA\x5E |0 \xFA\x5F |0 \xFA\x60 |0 \xFA\x61 |0 \xFA\x62 |0 \xFA\x63 |0 \xFA\x64 |0 \xFA\x65 |0 \xFA\x66 |0 \xFA\x67 |0 \xFA\x68 |0 \xFA\x69 |0 \xFA\x6A |0 \xFA\x6B |0 \xFA\x6C |0 \xFA\x6D |0 \xFA\x6E |0 \xFA\x6F |0 \xFA\x70 |0 \xFA\x71 |0 \xFA\x72 |0 \xFA\x73 |0 \xFA\x74 |0 \xFA\x75 |0 \xFA\x76 |0 \xFA\x77 |0 \xFA\x78 |0 \xFA\x79 |0 \xFA\x7A |0 \xFA\x7B |0 \xFA\x7C |0 \xFA\x7D |0 \xFA\x7E |0 \xFA\x80 |0 \xFA\x81 |0 \xFA\x82 |0 \xFA\x83 |0 \xFA\x84 |0 \xFA\x85 |0 \xFA\x86 |0 \xFA\x87 |0 \xFA\x88 |0 \xFA\x89 |0 \xFA\x8A |0 \xFA\x8B |0 \xFA\x8C |0 \xFA\x8D |0 \xFA\x8E |0 \xFA\x8F |0 \xFA\x90 |0 \xFA\x91 |0 \xFA\x92 |0 \xFA\x93 |0 \xFA\x94 |0 \xFA\x95 |0 \xFA\x96 |0 \xFA\x97 |0 \xFA\x98 |0 \xFA\x99 |0 \xFA\x9A |0 \xFA\x9B |0 \xFA\x9C |0 \xFA\x9D |0 \xFA\x9E |0 \xFA\x9F |0 \xFA\xA0 |0 \xFB\x40 |0 \xFB\x41 |0 \xFB\x42 |0 \xFB\x43 |0 \xFB\x44 |0 \xFB\x45 |0 \xFB\x46 |0 \xFB\x47 |0 \xFB\x48 |0 \xFB\x49 |0 \xFB\x4A |0 \xFB\x4B |0 \xFB\x4C |0 \xFB\x4D |0 \xFB\x4E |0 \xFB\x4F |0 \xFB\x50 |0 \xFB\x51 |0 \xFB\x52 |0 \xFB\x53 |0 \xFB\x54 |0 \xFB\x55 |0 \xFB\x56 |0 \xFB\x57 |0 \xFB\x58 |0 \xFB\x59 |0 \xFB\x5A |0 \xFB\x5B |0 \xC4\xF1 |0 \xF0\xAF |0 \xBC\xA6 |0 \xF0\xB0 |0 \xC3\xF9 |0 \xFB\x5C |0 \xC5\xB8 |0 \xD1\xBB |0 \xFB\x5D |0 \xF0\xB1 |0 \xF0\xB2 |0 \xF0\xB3 |0 \xF0\xB4 |0 \xF0\xB5 |0 \xD1\xBC |0 \xFB\x5E |0 \xD1\xEC |0 \xFB\x5F |0 \xF0\xB7 |0 \xF0\xB6 |0 \xD4\xA7 |0 \xFB\x60 |0 \xCD\xD2 |0 \xF0\xB8 |0 \xF0\xBA |0 \xF0\xB9 |0 \xF0\xBB |0 \xF0\xBC |0 \xFB\x61 |0 \xFB\x62 |0 \xB8\xEB |0 \xF0\xBD |0 \xBA\xE8 |0 \xFB\x63 |0 \xF0\xBE |0 \xF0\xBF |0 \xBE\xE9 |0 \xF0\xC0 |0 \xB6\xEC |0 \xF0\xC1 |0 \xF0\xC2 |0 \xF0\xC3 |0 \xF0\xC4 |0 \xC8\xB5 |0 \xF0\xC5 |0 \xF0\xC6 |0 \xFB\x64 |0 \xF0\xC7 |0 \xC5\xF4 |0 \xFB\x65 |0 \xF0\xC8 |0 \xFB\x66 |0 \xFB\x67 |0 \xFB\x68 |0 \xF0\xC9 |0 \xFB\x69 |0 \xF0\xCA |0 \xF7\xBD |0 \xFB\x6A |0 \xF0\xCB |0 \xF0\xCC |0 \xF0\xCD |0 \xFB\x6B |0 \xF0\xCE |0 \xFB\x6C |0 \xFB\x6D |0 \xFB\x6E |0 \xFB\x6F |0 \xF0\xCF |0 \xBA\xD7 |0 \xFB\x70 |0 \xF0\xD0 |0 \xF0\xD1 |0 \xF0\xD2 |0 \xF0\xD3 |0 \xF0\xD4 |0 \xF0\xD5 |0 \xF0\xD6 |0 \xF0\xD8 |0 \xFB\x71 |0 \xFB\x72 |0 \xD3\xA5 |0 \xF0\xD7 |0 \xFB\x73 |0 \xF0\xD9 |0 \xFB\x74 |0 \xFB\x75 |0 \xFB\x76 |0 \xFB\x77 |0 \xFB\x78 |0 \xFB\x79 |0 \xFB\x7A |0 \xFB\x7B |0 \xFB\x7C |0 \xFB\x7D |0 \xF5\xBA |0 \xC2\xB9 |0 \xFB\x7E |0 \xFB\x80 |0 \xF7\xE4 |0 \xFB\x81 |0 \xFB\x82 |0 \xFB\x83 |0 \xFB\x84 |0 \xF7\xE5 |0 \xF7\xE6 |0 \xFB\x85 |0 \xFB\x86 |0 \xF7\xE7 |0 \xFB\x87 |0 \xFB\x88 |0 \xFB\x89 |0 \xFB\x8A |0 \xFB\x8B |0 \xFB\x8C |0 \xF7\xE8 |0 \xC2\xB4 |0 \xFB\x8D |0 \xFB\x8E |0 \xFB\x8F |0 \xFB\x90 |0 \xFB\x91 |0 \xFB\x92 |0 \xFB\x93 |0 \xFB\x94 |0 \xFB\x95 |0 \xF7\xEA |0 \xFB\x96 |0 \xF7\xEB |0 \xFB\x97 |0 \xFB\x98 |0 \xFB\x99 |0 \xFB\x9A |0 \xFB\x9B |0 \xFB\x9C |0 \xC2\xF3 |0 \xFB\x9D |0 \xFB\x9E |0 \xFB\x9F |0 \xFB\xA0 |0 \xFC\x40 |0 \xFC\x41 |0 \xFC\x42 |0 \xFC\x43 |0 \xFC\x44 |0 \xFC\x45 |0 \xFC\x46 |0 \xFC\x47 |0 \xFC\x48 |0 \xF4\xF0 |0 \xFC\x49 |0 \xFC\x4A |0 \xFC\x4B |0 \xF4\xEF |0 \xFC\x4C |0 \xFC\x4D |0 \xC2\xE9 |0 \xFC\x4E |0 \xF7\xE1 |0 \xF7\xE2 |0 \xFC\x4F |0 \xFC\x50 |0 \xFC\x51 |0 \xFC\x52 |0 \xFC\x53 |0 \xBB\xC6 |0 \xFC\x54 |0 \xFC\x55 |0 \xFC\x56 |0 \xFC\x57 |0 \xD9\xE4 |0 \xFC\x58 |0 \xFC\x59 |0 \xFC\x5A |0 \xCA\xF2 |0 \xC0\xE8 |0 \xF0\xA4 |0 \xFC\x5B |0 \xBA\xDA |0 \xFC\x5C |0 \xFC\x5D |0 \xC7\xAD |0 \xFC\x5E |0 \xFC\x5F |0 \xFC\x60 |0 \xC4\xAC |0 \xFC\x61 |0 \xFC\x62 |0 \xF7\xEC |0 \xF7\xED |0 \xF7\xEE |0 \xFC\x63 |0 \xF7\xF0 |0 \xF7\xEF |0 \xFC\x64 |0 \xF7\xF1 |0 \xFC\x65 |0 \xFC\x66 |0 \xF7\xF4 |0 \xFC\x67 |0 \xF7\xF3 |0 \xFC\x68 |0 \xF7\xF2 |0 \xF7\xF5 |0 \xFC\x69 |0 \xFC\x6A |0 \xFC\x6B |0 \xFC\x6C |0 \xF7\xF6 |0 \xFC\x6D |0 \xFC\x6E |0 \xFC\x6F |0 \xFC\x70 |0 \xFC\x71 |0 \xFC\x72 |0 \xFC\x73 |0 \xFC\x74 |0 \xFC\x75 |0 \xED\xE9 |0 \xFC\x76 |0 \xED\xEA |0 \xED\xEB |0 \xFC\x77 |0 \xF6\xBC |0 \xFC\x78 |0 \xFC\x79 |0 \xFC\x7A |0 \xFC\x7B |0 \xFC\x7C |0 \xFC\x7D |0 \xFC\x7E |0 \xFC\x80 |0 \xFC\x81 |0 \xFC\x82 |0 \xFC\x83 |0 \xFC\x84 |0 \xF6\xBD |0 \xFC\x85 |0 \xF6\xBE |0 \xB6\xA6 |0 \xFC\x86 |0 \xD8\xBE |0 \xFC\x87 |0 \xFC\x88 |0 \xB9\xC4 |0 \xFC\x89 |0 \xFC\x8A |0 \xFC\x8B |0 \xD8\xBB |0 \xFC\x8C |0 \xDC\xB1 |0 \xFC\x8D |0 \xFC\x8E |0 \xFC\x8F |0 \xFC\x90 |0 \xFC\x91 |0 \xFC\x92 |0 \xCA\xF3 |0 \xFC\x93 |0 \xF7\xF7 |0 \xFC\x94 |0 \xFC\x95 |0 \xFC\x96 |0 \xFC\x97 |0 \xFC\x98 |0 \xFC\x99 |0 \xFC\x9A |0 \xFC\x9B |0 \xFC\x9C |0 \xF7\xF8 |0 \xFC\x9D |0 \xFC\x9E |0 \xF7\xF9 |0 \xFC\x9F |0 \xFC\xA0 |0 \xFD\x40 |0 \xFD\x41 |0 \xFD\x42 |0 \xFD\x43 |0 \xFD\x44 |0 \xF7\xFB |0 \xFD\x45 |0 \xF7\xFA |0 \xFD\x46 |0 \xB1\xC7 |0 \xFD\x47 |0 \xF7\xFC |0 \xF7\xFD |0 \xFD\x48 |0 \xFD\x49 |0 \xFD\x4A |0 \xFD\x4B |0 \xFD\x4C |0 \xF7\xFE |0 \xFD\x4D |0 \xFD\x4E |0 \xFD\x4F |0 \xFD\x50 |0 \xFD\x51 |0 \xFD\x52 |0 \xFD\x53 |0 \xFD\x54 |0 \xFD\x55 |0 \xFD\x56 |0 \xFD\x57 |0 \xC6\xEB |0 \xEC\xB4 |0 \xFD\x58 |0 \xFD\x59 |0 \xFD\x5A |0 \xFD\x5B |0 \xFD\x5C |0 \xFD\x5D |0 \xFD\x5E |0 \xFD\x5F |0 \xFD\x60 |0 \xFD\x61 |0 \xFD\x62 |0 \xFD\x63 |0 \xFD\x64 |0 \xFD\x65 |0 \xFD\x66 |0 \xFD\x67 |0 \xFD\x68 |0 \xFD\x69 |0 \xFD\x6A |0 \xFD\x6B |0 \xFD\x6C |0 \xFD\x6D |0 \xFD\x6E |0 \xFD\x6F |0 \xFD\x70 |0 \xFD\x71 |0 \xFD\x72 |0 \xFD\x73 |0 \xFD\x74 |0 \xFD\x75 |0 \xFD\x76 |0 \xFD\x77 |0 \xFD\x78 |0 \xFD\x79 |0 \xFD\x7A |0 \xFD\x7B |0 \xFD\x7C |0 \xFD\x7D |0 \xFD\x7E |0 \xFD\x80 |0 \xFD\x81 |0 \xFD\x82 |0 \xFD\x83 |0 \xFD\x84 |0 \xFD\x85 |0 \xB3\xDD |0 \xF6\xB3 |0 \xFD\x86 |0 \xFD\x87 |0 \xF6\xB4 |0 \xC1\xE4 |0 \xF6\xB5 |0 \xF6\xB6 |0 \xF6\xB7 |0 \xF6\xB8 |0 \xF6\xB9 |0 \xF6\xBA |0 \xC8\xA3 |0 \xF6\xBB |0 \xFD\x88 |0 \xFD\x89 |0 \xFD\x8A |0 \xFD\x8B |0 \xFD\x8C |0 \xFD\x8D |0 \xFD\x8E |0 \xFD\x8F |0 \xFD\x90 |0 \xFD\x91 |0 \xFD\x92 |0 \xFD\x93 |0 \xC1\xFA |0 \xB9\xA8 |0 \xED\xE8 |0 \xFD\x94 |0 \xFD\x95 |0 \xFD\x96 |0 \xB9\xEA |0 \xD9\xDF |0 \xFD\x97 |0 \xFD\x98 |0 \xFD\x99 |0 \xFD\x9A |0 \xFD\x9B |0 \xAA\xA1 |0 \xAA\xA2 |0 \xAA\xA3 |0 \xAA\xA4 |0 \xAA\xA5 |0 \xAA\xA6 |0 \xAA\xA7 |0 \xAA\xA8 |0 \xAA\xA9 |0 \xAA\xAA |0 \xAA\xAB |0 \xAA\xAC |0 \xAA\xAD |0 \xAA\xAE |0 \xAA\xAF |0 \xAA\xB0 |0 \xAA\xB1 |0 \xAA\xB2 |0 \xAA\xB3 |0 \xAA\xB4 |0 \xAA\xB5 |0 \xAA\xB6 |0 \xAA\xB7 |0 \xAA\xB8 |0 \xAA\xB9 |0 \xAA\xBA |0 \xAA\xBB |0 \xAA\xBC |0 \xAA\xBD |0 \xAA\xBE |0 \xAA\xBF |0 \xAA\xC0 |0 \xAA\xC1 |0 \xAA\xC2 |0 \xAA\xC3 |0 \xAA\xC4 |0 \xAA\xC5 |0 \xAA\xC6 |0 \xAA\xC7 |0 \xAA\xC8 |0 \xAA\xC9 |0 \xAA\xCA |0 \xAA\xCB |0 \xAA\xCC |0 \xAA\xCD |0 \xAA\xCE |0 \xAA\xCF |0 \xAA\xD0 |0 \xAA\xD1 |0 \xAA\xD2 |0 \xAA\xD3 |0 \xAA\xD4 |0 \xAA\xD5 |0 \xAA\xD6 |0 \xAA\xD7 |0 \xAA\xD8 |0 \xAA\xD9 |0 \xAA\xDA |0 \xAA\xDB |0 \xAA\xDC |0 \xAA\xDD |0 \xAA\xDE |0 \xAA\xDF |0 \xAA\xE0 |0 \xAA\xE1 |0 \xAA\xE2 |0 \xAA\xE3 |0 \xAA\xE4 |0 \xAA\xE5 |0 \xAA\xE6 |0 \xAA\xE7 |0 \xAA\xE8 |0 \xAA\xE9 |0 \xAA\xEA |0 \xAA\xEB |0 \xAA\xEC |0 \xAA\xED |0 \xAA\xEE |0 \xAA\xEF |0 \xAA\xF0 |0 \xAA\xF1 |0 \xAA\xF2 |0 \xAA\xF3 |0 \xAA\xF4 |0 \xAA\xF5 |0 \xAA\xF6 |0 \xAA\xF7 |0 \xAA\xF8 |0 \xAA\xF9 |0 \xAA\xFA |0 \xAA\xFB |0 \xAA\xFC |0 \xAA\xFD |0 \xAA\xFE |0 \xAB\xA1 |0 \xAB\xA2 |0 \xAB\xA3 |0 \xAB\xA4 |0 \xAB\xA5 |0 \xAB\xA6 |0 \xAB\xA7 |0 \xAB\xA8 |0 \xAB\xA9 |0 \xAB\xAA |0 \xAB\xAB |0 \xAB\xAC |0 \xAB\xAD |0 \xAB\xAE |0 \xAB\xAF |0 \xAB\xB0 |0 \xAB\xB1 |0 \xAB\xB2 |0 \xAB\xB3 |0 \xAB\xB4 |0 \xAB\xB5 |0 \xAB\xB6 |0 \xAB\xB7 |0 \xAB\xB8 |0 \xAB\xB9 |0 \xAB\xBA |0 \xAB\xBB |0 \xAB\xBC |0 \xAB\xBD |0 \xAB\xBE |0 \xAB\xBF |0 \xAB\xC0 |0 \xAB\xC1 |0 \xAB\xC2 |0 \xAB\xC3 |0 \xAB\xC4 |0 \xAB\xC5 |0 \xAB\xC6 |0 \xAB\xC7 |0 \xAB\xC8 |0 \xAB\xC9 |0 \xAB\xCA |0 \xAB\xCB |0 \xAB\xCC |0 \xAB\xCD |0 \xAB\xCE |0 \xAB\xCF |0 \xAB\xD0 |0 \xAB\xD1 |0 \xAB\xD2 |0 \xAB\xD3 |0 \xAB\xD4 |0 \xAB\xD5 |0 \xAB\xD6 |0 \xAB\xD7 |0 \xAB\xD8 |0 \xAB\xD9 |0 \xAB\xDA |0 \xAB\xDB |0 \xAB\xDC |0 \xAB\xDD |0 \xAB\xDE |0 \xAB\xDF |0 \xAB\xE0 |0 \xAB\xE1 |0 \xAB\xE2 |0 \xAB\xE3 |0 \xAB\xE4 |0 \xAB\xE5 |0 \xAB\xE6 |0 \xAB\xE7 |0 \xAB\xE8 |0 \xAB\xE9 |0 \xAB\xEA |0 \xAB\xEB |0 \xAB\xEC |0 \xAB\xED |0 \xAB\xEE |0 \xAB\xEF |0 \xAB\xF0 |0 \xAB\xF1 |0 \xAB\xF2 |0 \xAB\xF3 |0 \xAB\xF4 |0 \xAB\xF5 |0 \xAB\xF6 |0 \xAB\xF7 |0 \xAB\xF8 |0 \xAB\xF9 |0 \xAB\xFA |0 \xAB\xFB |0 \xAB\xFC |0 \xAB\xFD |0 \xAB\xFE |0 \xAC\xA1 |0 \xAC\xA2 |0 \xAC\xA3 |0 \xAC\xA4 |0 \xAC\xA5 |0 \xAC\xA6 |0 \xAC\xA7 |0 \xAC\xA8 |0 \xAC\xA9 |0 \xAC\xAA |0 \xAC\xAB |0 \xAC\xAC |0 \xAC\xAD |0 \xAC\xAE |0 \xAC\xAF |0 \xAC\xB0 |0 \xAC\xB1 |0 \xAC\xB2 |0 \xAC\xB3 |0 \xAC\xB4 |0 \xAC\xB5 |0 \xAC\xB6 |0 \xAC\xB7 |0 \xAC\xB8 |0 \xAC\xB9 |0 \xAC\xBA |0 \xAC\xBB |0 \xAC\xBC |0 \xAC\xBD |0 \xAC\xBE |0 \xAC\xBF |0 \xAC\xC0 |0 \xAC\xC1 |0 \xAC\xC2 |0 \xAC\xC3 |0 \xAC\xC4 |0 \xAC\xC5 |0 \xAC\xC6 |0 \xAC\xC7 |0 \xAC\xC8 |0 \xAC\xC9 |0 \xAC\xCA |0 \xAC\xCB |0 \xAC\xCC |0 \xAC\xCD |0 \xAC\xCE |0 \xAC\xCF |0 \xAC\xD0 |0 \xAC\xD1 |0 \xAC\xD2 |0 \xAC\xD3 |0 \xAC\xD4 |0 \xAC\xD5 |0 \xAC\xD6 |0 \xAC\xD7 |0 \xAC\xD8 |0 \xAC\xD9 |0 \xAC\xDA |0 \xAC\xDB |0 \xAC\xDC |0 \xAC\xDD |0 \xAC\xDE |0 \xAC\xDF |0 \xAC\xE0 |0 \xAC\xE1 |0 \xAC\xE2 |0 \xAC\xE3 |0 \xAC\xE4 |0 \xAC\xE5 |0 \xAC\xE6 |0 \xAC\xE7 |0 \xAC\xE8 |0 \xAC\xE9 |0 \xAC\xEA |0 \xAC\xEB |0 \xAC\xEC |0 \xAC\xED |0 \xAC\xEE |0 \xAC\xEF |0 \xAC\xF0 |0 \xAC\xF1 |0 \xAC\xF2 |0 \xAC\xF3 |0 \xAC\xF4 |0 \xAC\xF5 |0 \xAC\xF6 |0 \xAC\xF7 |0 \xAC\xF8 |0 \xAC\xF9 |0 \xAC\xFA |0 \xAC\xFB |0 \xAC\xFC |0 \xAC\xFD |0 \xAC\xFE |0 \xAD\xA1 |0 \xAD\xA2 |0 \xAD\xA3 |0 \xAD\xA4 |0 \xAD\xA5 |0 \xAD\xA6 |0 \xAD\xA7 |0 \xAD\xA8 |0 \xAD\xA9 |0 \xAD\xAA |0 \xAD\xAB |0 \xAD\xAC |0 \xAD\xAD |0 \xAD\xAE |0 \xAD\xAF |0 \xAD\xB0 |0 \xAD\xB1 |0 \xAD\xB2 |0 \xAD\xB3 |0 \xAD\xB4 |0 \xAD\xB5 |0 \xAD\xB6 |0 \xAD\xB7 |0 \xAD\xB8 |0 \xAD\xB9 |0 \xAD\xBA |0 \xAD\xBB |0 \xAD\xBC |0 \xAD\xBD |0 \xAD\xBE |0 \xAD\xBF |0 \xAD\xC0 |0 \xAD\xC1 |0 \xAD\xC2 |0 \xAD\xC3 |0 \xAD\xC4 |0 \xAD\xC5 |0 \xAD\xC6 |0 \xAD\xC7 |0 \xAD\xC8 |0 \xAD\xC9 |0 \xAD\xCA |0 \xAD\xCB |0 \xAD\xCC |0 \xAD\xCD |0 \xAD\xCE |0 \xAD\xCF |0 \xAD\xD0 |0 \xAD\xD1 |0 \xAD\xD2 |0 \xAD\xD3 |0 \xAD\xD4 |0 \xAD\xD5 |0 \xAD\xD6 |0 \xAD\xD7 |0 \xAD\xD8 |0 \xAD\xD9 |0 \xAD\xDA |0 \xAD\xDB |0 \xAD\xDC |0 \xAD\xDD |0 \xAD\xDE |0 \xAD\xDF |0 \xAD\xE0 |0 \xAD\xE1 |0 \xAD\xE2 |0 \xAD\xE3 |0 \xAD\xE4 |0 \xAD\xE5 |0 \xAD\xE6 |0 \xAD\xE7 |0 \xAD\xE8 |0 \xAD\xE9 |0 \xAD\xEA |0 \xAD\xEB |0 \xAD\xEC |0 \xAD\xED |0 \xAD\xEE |0 \xAD\xEF |0 \xAD\xF0 |0 \xAD\xF1 |0 \xAD\xF2 |0 \xAD\xF3 |0 \xAD\xF4 |0 \xAD\xF5 |0 \xAD\xF6 |0 \xAD\xF7 |0 \xAD\xF8 |0 \xAD\xF9 |0 \xAD\xFA |0 \xAD\xFB |0 \xAD\xFC |0 \xAD\xFD |0 \xAD\xFE |0 \xAE\xA1 |0 \xAE\xA2 |0 \xAE\xA3 |0 \xAE\xA4 |0 \xAE\xA5 |0 \xAE\xA6 |0 \xAE\xA7 |0 \xAE\xA8 |0 \xAE\xA9 |0 \xAE\xAA |0 \xAE\xAB |0 \xAE\xAC |0 \xAE\xAD |0 \xAE\xAE |0 \xAE\xAF |0 \xAE\xB0 |0 \xAE\xB1 |0 \xAE\xB2 |0 \xAE\xB3 |0 \xAE\xB4 |0 \xAE\xB5 |0 \xAE\xB6 |0 \xAE\xB7 |0 \xAE\xB8 |0 \xAE\xB9 |0 \xAE\xBA |0 \xAE\xBB |0 \xAE\xBC |0 \xAE\xBD |0 \xAE\xBE |0 \xAE\xBF |0 \xAE\xC0 |0 \xAE\xC1 |0 \xAE\xC2 |0 \xAE\xC3 |0 \xAE\xC4 |0 \xAE\xC5 |0 \xAE\xC6 |0 \xAE\xC7 |0 \xAE\xC8 |0 \xAE\xC9 |0 \xAE\xCA |0 \xAE\xCB |0 \xAE\xCC |0 \xAE\xCD |0 \xAE\xCE |0 \xAE\xCF |0 \xAE\xD0 |0 \xAE\xD1 |0 \xAE\xD2 |0 \xAE\xD3 |0 \xAE\xD4 |0 \xAE\xD5 |0 \xAE\xD6 |0 \xAE\xD7 |0 \xAE\xD8 |0 \xAE\xD9 |0 \xAE\xDA |0 \xAE\xDB |0 \xAE\xDC |0 \xAE\xDD |0 \xAE\xDE |0 \xAE\xDF |0 \xAE\xE0 |0 \xAE\xE1 |0 \xAE\xE2 |0 \xAE\xE3 |0 \xAE\xE4 |0 \xAE\xE5 |0 \xAE\xE6 |0 \xAE\xE7 |0 \xAE\xE8 |0 \xAE\xE9 |0 \xAE\xEA |0 \xAE\xEB |0 \xAE\xEC |0 \xAE\xED |0 \xAE\xEE |0 \xAE\xEF |0 \xAE\xF0 |0 \xAE\xF1 |0 \xAE\xF2 |0 \xAE\xF3 |0 \xAE\xF4 |0 \xAE\xF5 |0 \xAE\xF6 |0 \xAE\xF7 |0 \xAE\xF8 |0 \xAE\xF9 |0 \xAE\xFA |0 \xAE\xFB |0 \xAE\xFC |0 \xAE\xFD |0 \xAE\xFE |0 \xAF\xA1 |0 \xAF\xA2 |0 \xAF\xA3 |0 \xAF\xA4 |0 \xAF\xA5 |0 \xAF\xA6 |0 \xAF\xA7 |0 \xAF\xA8 |0 \xAF\xA9 |0 \xAF\xAA |0 \xAF\xAB |0 \xAF\xAC |0 \xAF\xAD |0 \xAF\xAE |0 \xAF\xAF |0 \xAF\xB0 |0 \xAF\xB1 |0 \xAF\xB2 |0 \xAF\xB3 |0 \xAF\xB4 |0 \xAF\xB5 |0 \xAF\xB6 |0 \xAF\xB7 |0 \xAF\xB8 |0 \xAF\xB9 |0 \xAF\xBA |0 \xAF\xBB |0 \xAF\xBC |0 \xAF\xBD |0 \xAF\xBE |0 \xAF\xBF |0 \xAF\xC0 |0 \xAF\xC1 |0 \xAF\xC2 |0 \xAF\xC3 |0 \xAF\xC4 |0 \xAF\xC5 |0 \xAF\xC6 |0 \xAF\xC7 |0 \xAF\xC8 |0 \xAF\xC9 |0 \xAF\xCA |0 \xAF\xCB |0 \xAF\xCC |0 \xAF\xCD |0 \xAF\xCE |0 \xAF\xCF |0 \xAF\xD0 |0 \xAF\xD1 |0 \xAF\xD2 |0 \xAF\xD3 |0 \xAF\xD4 |0 \xAF\xD5 |0 \xAF\xD6 |0 \xAF\xD7 |0 \xAF\xD8 |0 \xAF\xD9 |0 \xAF\xDA |0 \xAF\xDB |0 \xAF\xDC |0 \xAF\xDD |0 \xAF\xDE |0 \xAF\xDF |0 \xAF\xE0 |0 \xAF\xE1 |0 \xAF\xE2 |0 \xAF\xE3 |0 \xAF\xE4 |0 \xAF\xE5 |0 \xAF\xE6 |0 \xAF\xE7 |0 \xAF\xE8 |0 \xAF\xE9 |0 \xAF\xEA |0 \xAF\xEB |0 \xAF\xEC |0 \xAF\xED |0 \xAF\xEE |0 \xAF\xEF |0 \xAF\xF0 |0 \xAF\xF1 |0 \xAF\xF2 |0 \xAF\xF3 |0 \xAF\xF4 |0 \xAF\xF5 |0 \xAF\xF6 |0 \xAF\xF7 |0 \xAF\xF8 |0 \xAF\xF9 |0 \xAF\xFA |0 \xAF\xFB |0 \xAF\xFC |0 \xAF\xFD |0 \xAF\xFE |0 \xF8\xA1 |0 \xF8\xA2 |0 \xF8\xA3 |0 \xF8\xA4 |0 \xF8\xA5 |0 \xF8\xA6 |0 \xF8\xA7 |0 \xF8\xA8 |0 \xF8\xA9 |0 \xF8\xAA |0 \xF8\xAB |0 \xF8\xAC |0 \xF8\xAD |0 \xF8\xAE |0 \xF8\xAF |0 \xF8\xB0 |0 \xF8\xB1 |0 \xF8\xB2 |0 \xF8\xB3 |0 \xF8\xB4 |0 \xF8\xB5 |0 \xF8\xB6 |0 \xF8\xB7 |0 \xF8\xB8 |0 \xF8\xB9 |0 \xF8\xBA |0 \xF8\xBB |0 \xF8\xBC |0 \xF8\xBD |0 \xF8\xBE |0 \xF8\xBF |0 \xF8\xC0 |0 \xF8\xC1 |0 \xF8\xC2 |0 \xF8\xC3 |0 \xF8\xC4 |0 \xF8\xC5 |0 \xF8\xC6 |0 \xF8\xC7 |0 \xF8\xC8 |0 \xF8\xC9 |0 \xF8\xCA |0 \xF8\xCB |0 \xF8\xCC |0 \xF8\xCD |0 \xF8\xCE |0 \xF8\xCF |0 \xF8\xD0 |0 \xF8\xD1 |0 \xF8\xD2 |0 \xF8\xD3 |0 \xF8\xD4 |0 \xF8\xD5 |0 \xF8\xD6 |0 \xF8\xD7 |0 \xF8\xD8 |0 \xF8\xD9 |0 \xF8\xDA |0 \xF8\xDB |0 \xF8\xDC |0 \xF8\xDD |0 \xF8\xDE |0 \xF8\xDF |0 \xF8\xE0 |0 \xF8\xE1 |0 \xF8\xE2 |0 \xF8\xE3 |0 \xF8\xE4 |0 \xF8\xE5 |0 \xF8\xE6 |0 \xF8\xE7 |0 \xF8\xE8 |0 \xF8\xE9 |0 \xF8\xEA |0 \xF8\xEB |0 \xF8\xEC |0 \xF8\xED |0 \xF8\xEE |0 \xF8\xEF |0 \xF8\xF0 |0 \xF8\xF1 |0 \xF8\xF2 |0 \xF8\xF3 |0 \xF8\xF4 |0 \xF8\xF5 |0 \xF8\xF6 |0 \xF8\xF7 |0 \xF8\xF8 |0 \xF8\xF9 |0 \xF8\xFA |0 \xF8\xFB |0 \xF8\xFC |0 \xF8\xFD |0 \xF8\xFE |0 \xF9\xA1 |0 \xF9\xA2 |0 \xF9\xA3 |0 \xF9\xA4 |0 \xF9\xA5 |0 \xF9\xA6 |0 \xF9\xA7 |0 \xF9\xA8 |0 \xF9\xA9 |0 \xF9\xAA |0 \xF9\xAB |0 \xF9\xAC |0 \xF9\xAD |0 \xF9\xAE |0 \xF9\xAF |0 \xF9\xB0 |0 \xF9\xB1 |0 \xF9\xB2 |0 \xF9\xB3 |0 \xF9\xB4 |0 \xF9\xB5 |0 \xF9\xB6 |0 \xF9\xB7 |0 \xF9\xB8 |0 \xF9\xB9 |0 \xF9\xBA |0 \xF9\xBB |0 \xF9\xBC |0 \xF9\xBD |0 \xF9\xBE |0 \xF9\xBF |0 \xF9\xC0 |0 \xF9\xC1 |0 \xF9\xC2 |0 \xF9\xC3 |0 \xF9\xC4 |0 \xF9\xC5 |0 \xF9\xC6 |0 \xF9\xC7 |0 \xF9\xC8 |0 \xF9\xC9 |0 \xF9\xCA |0 \xF9\xCB |0 \xF9\xCC |0 \xF9\xCD |0 \xF9\xCE |0 \xF9\xCF |0 \xF9\xD0 |0 \xF9\xD1 |0 \xF9\xD2 |0 \xF9\xD3 |0 \xF9\xD4 |0 \xF9\xD5 |0 \xF9\xD6 |0 \xF9\xD7 |0 \xF9\xD8 |0 \xF9\xD9 |0 \xF9\xDA |0 \xF9\xDB |0 \xF9\xDC |0 \xF9\xDD |0 \xF9\xDE |0 \xF9\xDF |0 \xF9\xE0 |0 \xF9\xE1 |0 \xF9\xE2 |0 \xF9\xE3 |0 \xF9\xE4 |0 \xF9\xE5 |0 \xF9\xE6 |0 \xF9\xE7 |0 \xF9\xE8 |0 \xF9\xE9 |0 \xF9\xEA |0 \xF9\xEB |0 \xF9\xEC |0 \xF9\xED |0 \xF9\xEE |0 \xF9\xEF |0 \xF9\xF0 |0 \xF9\xF1 |0 \xF9\xF2 |0 \xF9\xF3 |0 \xF9\xF4 |0 \xF9\xF5 |0 \xF9\xF6 |0 \xF9\xF7 |0 \xF9\xF8 |0 \xF9\xF9 |0 \xF9\xFA |0 \xF9\xFB |0 \xF9\xFC |0 \xF9\xFD |0 \xF9\xFE |0 \xFA\xA1 |0 \xFA\xA2 |0 \xFA\xA3 |0 \xFA\xA4 |0 \xFA\xA5 |0 \xFA\xA6 |0 \xFA\xA7 |0 \xFA\xA8 |0 \xFA\xA9 |0 \xFA\xAA |0 \xFA\xAB |0 \xFA\xAC |0 \xFA\xAD |0 \xFA\xAE |0 \xFA\xAF |0 \xFA\xB0 |0 \xFA\xB1 |0 \xFA\xB2 |0 \xFA\xB3 |0 \xFA\xB4 |0 \xFA\xB5 |0 \xFA\xB6 |0 \xFA\xB7 |0 \xFA\xB8 |0 \xFA\xB9 |0 \xFA\xBA |0 \xFA\xBB |0 \xFA\xBC |0 \xFA\xBD |0 \xFA\xBE |0 \xFA\xBF |0 \xFA\xC0 |0 \xFA\xC1 |0 \xFA\xC2 |0 \xFA\xC3 |0 \xFA\xC4 |0 \xFA\xC5 |0 \xFA\xC6 |0 \xFA\xC7 |0 \xFA\xC8 |0 \xFA\xC9 |0 \xFA\xCA |0 \xFA\xCB |0 \xFA\xCC |0 \xFA\xCD |0 \xFA\xCE |0 \xFA\xCF |0 \xFA\xD0 |0 \xFA\xD1 |0 \xFA\xD2 |0 \xFA\xD3 |0 \xFA\xD4 |0 \xFA\xD5 |0 \xFA\xD6 |0 \xFA\xD7 |0 \xFA\xD8 |0 \xFA\xD9 |0 \xFA\xDA |0 \xFA\xDB |0 \xFA\xDC |0 \xFA\xDD |0 \xFA\xDE |0 \xFA\xDF |0 \xFA\xE0 |0 \xFA\xE1 |0 \xFA\xE2 |0 \xFA\xE3 |0 \xFA\xE4 |0 \xFA\xE5 |0 \xFA\xE6 |0 \xFA\xE7 |0 \xFA\xE8 |0 \xFA\xE9 |0 \xFA\xEA |0 \xFA\xEB |0 \xFA\xEC |0 \xFA\xED |0 \xFA\xEE |0 \xFA\xEF |0 \xFA\xF0 |0 \xFA\xF1 |0 \xFA\xF2 |0 \xFA\xF3 |0 \xFA\xF4 |0 \xFA\xF5 |0 \xFA\xF6 |0 \xFA\xF7 |0 \xFA\xF8 |0 \xFA\xF9 |0 \xFA\xFA |0 \xFA\xFB |0 \xFA\xFC |0 \xFA\xFD |0 \xFA\xFE |0 \xFB\xA1 |0 \xFB\xA2 |0 \xFB\xA3 |0 \xFB\xA4 |0 \xFB\xA5 |0 \xFB\xA6 |0 \xFB\xA7 |0 \xFB\xA8 |0 \xFB\xA9 |0 \xFB\xAA |0 \xFB\xAB |0 \xFB\xAC |0 \xFB\xAD |0 \xFB\xAE |0 \xFB\xAF |0 \xFB\xB0 |0 \xFB\xB1 |0 \xFB\xB2 |0 \xFB\xB3 |0 \xFB\xB4 |0 \xFB\xB5 |0 \xFB\xB6 |0 \xFB\xB7 |0 \xFB\xB8 |0 \xFB\xB9 |0 \xFB\xBA |0 \xFB\xBB |0 \xFB\xBC |0 \xFB\xBD |0 \xFB\xBE |0 \xFB\xBF |0 \xFB\xC0 |0 \xFB\xC1 |0 \xFB\xC2 |0 \xFB\xC3 |0 \xFB\xC4 |0 \xFB\xC5 |0 \xFB\xC6 |0 \xFB\xC7 |0 \xFB\xC8 |0 \xFB\xC9 |0 \xFB\xCA |0 \xFB\xCB |0 \xFB\xCC |0 \xFB\xCD |0 \xFB\xCE |0 \xFB\xCF |0 \xFB\xD0 |0 \xFB\xD1 |0 \xFB\xD2 |0 \xFB\xD3 |0 \xFB\xD4 |0 \xFB\xD5 |0 \xFB\xD6 |0 \xFB\xD7 |0 \xFB\xD8 |0 \xFB\xD9 |0 \xFB\xDA |0 \xFB\xDB |0 \xFB\xDC |0 \xFB\xDD |0 \xFB\xDE |0 \xFB\xDF |0 \xFB\xE0 |0 \xFB\xE1 |0 \xFB\xE2 |0 \xFB\xE3 |0 \xFB\xE4 |0 \xFB\xE5 |0 \xFB\xE6 |0 \xFB\xE7 |0 \xFB\xE8 |0 \xFB\xE9 |0 \xFB\xEA |0 \xFB\xEB |0 \xFB\xEC |0 \xFB\xED |0 \xFB\xEE |0 \xFB\xEF |0 \xFB\xF0 |0 \xFB\xF1 |0 \xFB\xF2 |0 \xFB\xF3 |0 \xFB\xF4 |0 \xFB\xF5 |0 \xFB\xF6 |0 \xFB\xF7 |0 \xFB\xF8 |0 \xFB\xF9 |0 \xFB\xFA |0 \xFB\xFB |0 \xFB\xFC |0 \xFB\xFD |0 \xFB\xFE |0 \xFC\xA1 |0 \xFC\xA2 |0 \xFC\xA3 |0 \xFC\xA4 |0 \xFC\xA5 |0 \xFC\xA6 |0 \xFC\xA7 |0 \xFC\xA8 |0 \xFC\xA9 |0 \xFC\xAA |0 \xFC\xAB |0 \xFC\xAC |0 \xFC\xAD |0 \xFC\xAE |0 \xFC\xAF |0 \xFC\xB0 |0 \xFC\xB1 |0 \xFC\xB2 |0 \xFC\xB3 |0 \xFC\xB4 |0 \xFC\xB5 |0 \xFC\xB6 |0 \xFC\xB7 |0 \xFC\xB8 |0 \xFC\xB9 |0 \xFC\xBA |0 \xFC\xBB |0 \xFC\xBC |0 \xFC\xBD |0 \xFC\xBE |0 \xFC\xBF |0 \xFC\xC0 |0 \xFC\xC1 |0 \xFC\xC2 |0 \xFC\xC3 |0 \xFC\xC4 |0 \xFC\xC5 |0 \xFC\xC6 |0 \xFC\xC7 |0 \xFC\xC8 |0 \xFC\xC9 |0 \xFC\xCA |0 \xFC\xCB |0 \xFC\xCC |0 \xFC\xCD |0 \xFC\xCE |0 \xFC\xCF |0 \xFC\xD0 |0 \xFC\xD1 |0 \xFC\xD2 |0 \xFC\xD3 |0 \xFC\xD4 |0 \xFC\xD5 |0 \xFC\xD6 |0 \xFC\xD7 |0 \xFC\xD8 |0 \xFC\xD9 |0 \xFC\xDA |0 \xFC\xDB |0 \xFC\xDC |0 \xFC\xDD |0 \xFC\xDE |0 \xFC\xDF |0 \xFC\xE0 |0 \xFC\xE1 |0 \xFC\xE2 |0 \xFC\xE3 |0 \xFC\xE4 |0 \xFC\xE5 |0 \xFC\xE6 |0 \xFC\xE7 |0 \xFC\xE8 |0 \xFC\xE9 |0 \xFC\xEA |0 \xFC\xEB |0 \xFC\xEC |0 \xFC\xED |0 \xFC\xEE |0 \xFC\xEF |0 \xFC\xF0 |0 \xFC\xF1 |0 \xFC\xF2 |0 \xFC\xF3 |0 \xFC\xF4 |0 \xFC\xF5 |0 \xFC\xF6 |0 \xFC\xF7 |0 \xFC\xF8 |0 \xFC\xF9 |0 \xFC\xFA |0 \xFC\xFB |0 \xFC\xFC |0 \xFC\xFD |0 \xFC\xFE |0 \xFD\xA1 |0 \xFD\xA2 |0 \xFD\xA3 |0 \xFD\xA4 |0 \xFD\xA5 |0 \xFD\xA6 |0 \xFD\xA7 |0 \xFD\xA8 |0 \xFD\xA9 |0 \xFD\xAA |0 \xFD\xAB |0 \xFD\xAC |0 \xFD\xAD |0 \xFD\xAE |0 \xFD\xAF |0 \xFD\xB0 |0 \xFD\xB1 |0 \xFD\xB2 |0 \xFD\xB3 |0 \xFD\xB4 |0 \xFD\xB5 |0 \xFD\xB6 |0 \xFD\xB7 |0 \xFD\xB8 |0 \xFD\xB9 |0 \xFD\xBA |0 \xFD\xBB |0 \xFD\xBC |0 \xFD\xBD |0 \xFD\xBE |0 \xFD\xBF |0 \xFD\xC0 |0 \xFD\xC1 |0 \xFD\xC2 |0 \xFD\xC3 |0 \xFD\xC4 |0 \xFD\xC5 |0 \xFD\xC6 |0 \xFD\xC7 |0 \xFD\xC8 |0 \xFD\xC9 |0 \xFD\xCA |0 \xFD\xCB |0 \xFD\xCC |0 \xFD\xCD |0 \xFD\xCE |0 \xFD\xCF |0 \xFD\xD0 |0 \xFD\xD1 |0 \xFD\xD2 |0 \xFD\xD3 |0 \xFD\xD4 |0 \xFD\xD5 |0 \xFD\xD6 |0 \xFD\xD7 |0 \xFD\xD8 |0 \xFD\xD9 |0 \xFD\xDA |0 \xFD\xDB |0 \xFD\xDC |0 \xFD\xDD |0 \xFD\xDE |0 \xFD\xDF |0 \xFD\xE0 |0 \xFD\xE1 |0 \xFD\xE2 |0 \xFD\xE3 |0 \xFD\xE4 |0 \xFD\xE5 |0 \xFD\xE6 |0 \xFD\xE7 |0 \xFD\xE8 |0 \xFD\xE9 |0 \xFD\xEA |0 \xFD\xEB |0 \xFD\xEC |0 \xFD\xED |0 \xFD\xEE |0 \xFD\xEF |0 \xFD\xF0 |0 \xFD\xF1 |0 \xFD\xF2 |0 \xFD\xF3 |0 \xFD\xF4 |0 \xFD\xF5 |0 \xFD\xF6 |0 \xFD\xF7 |0 \xFD\xF8 |0 \xFD\xF9 |0 \xFD\xFA |0 \xFD\xFB |0 \xFD\xFC |0 \xFD\xFD |0 \xFD\xFE |0 \xFE\xA1 |0 \xFE\xA2 |0 \xFE\xA3 |0 \xFE\xA4 |0 \xFE\xA5 |0 \xFE\xA6 |0 \xFE\xA7 |0 \xFE\xA8 |0 \xFE\xA9 |0 \xFE\xAA |0 \xFE\xAB |0 \xFE\xAC |0 \xFE\xAD |0 \xFE\xAE |0 \xFE\xAF |0 \xFE\xB0 |0 \xFE\xB1 |0 \xFE\xB2 |0 \xFE\xB3 |0 \xFE\xB4 |0 \xFE\xB5 |0 \xFE\xB6 |0 \xFE\xB7 |0 \xFE\xB8 |0 \xFE\xB9 |0 \xFE\xBA |0 \xFE\xBB |0 \xFE\xBC |0 \xFE\xBD |0 \xFE\xBE |0 \xFE\xBF |0 \xFE\xC0 |0 \xFE\xC1 |0 \xFE\xC2 |0 \xFE\xC3 |0 \xFE\xC4 |0 \xFE\xC5 |0 \xFE\xC6 |0 \xFE\xC7 |0 \xFE\xC8 |0 \xFE\xC9 |0 \xFE\xCA |0 \xFE\xCB |0 \xFE\xCC |0 \xFE\xCD |0 \xFE\xCE |0 \xFE\xCF |0 \xFE\xD0 |0 \xFE\xD1 |0 \xFE\xD2 |0 \xFE\xD3 |0 \xFE\xD4 |0 \xFE\xD5 |0 \xFE\xD6 |0 \xFE\xD7 |0 \xFE\xD8 |0 \xFE\xD9 |0 \xFE\xDA |0 \xFE\xDB |0 \xFE\xDC |0 \xFE\xDD |0 \xFE\xDE |0 \xFE\xDF |0 \xFE\xE0 |0 \xFE\xE1 |0 \xFE\xE2 |0 \xFE\xE3 |0 \xFE\xE4 |0 \xFE\xE5 |0 \xFE\xE6 |0 \xFE\xE7 |0 \xFE\xE8 |0 \xFE\xE9 |0 \xFE\xEA |0 \xFE\xEB |0 \xFE\xEC |0 \xFE\xED |0 \xFE\xEE |0 \xFE\xEF |0 \xFE\xF0 |0 \xFE\xF1 |0 \xFE\xF2 |0 \xFE\xF3 |0 \xFE\xF4 |0 \xFE\xF5 |0 \xFE\xF6 |0 \xFE\xF7 |0 \xFE\xF8 |0 \xFE\xF9 |0 \xFE\xFA |0 \xFE\xFB |0 \xFE\xFC |0 \xFE\xFD |0 \xFE\xFE |0 \xA1\x40 |0 \xA1\x41 |0 \xA1\x42 |0 \xA1\x43 |0 \xA1\x44 |0 \xA1\x45 |0 \xA1\x46 |0 \xA1\x47 |0 \xA1\x48 |0 \xA1\x49 |0 \xA1\x4A |0 \xA1\x4B |0 \xA1\x4C |0 \xA1\x4D |0 \xA1\x4E |0 \xA1\x4F |0 \xA1\x50 |0 \xA1\x51 |0 \xA1\x52 |0 \xA1\x53 |0 \xA1\x54 |0 \xA1\x55 |0 \xA1\x56 |0 \xA1\x57 |0 \xA1\x58 |0 \xA1\x59 |0 \xA1\x5A |0 \xA1\x5B |0 \xA1\x5C |0 \xA1\x5D |0 \xA1\x5E |0 \xA1\x5F |0 \xA1\x60 |0 \xA1\x61 |0 \xA1\x62 |0 \xA1\x63 |0 \xA1\x64 |0 \xA1\x65 |0 \xA1\x66 |0 \xA1\x67 |0 \xA1\x68 |0 \xA1\x69 |0 \xA1\x6A |0 \xA1\x6B |0 \xA1\x6C |0 \xA1\x6D |0 \xA1\x6E |0 \xA1\x6F |0 \xA1\x70 |0 \xA1\x71 |0 \xA1\x72 |0 \xA1\x73 |0 \xA1\x74 |0 \xA1\x75 |0 \xA1\x76 |0 \xA1\x77 |0 \xA1\x78 |0 \xA1\x79 |0 \xA1\x7A |0 \xA1\x7B |0 \xA1\x7C |0 \xA1\x7D |0 \xA1\x7E |0 \xA1\x80 |0 \xA1\x81 |0 \xA1\x82 |0 \xA1\x83 |0 \xA1\x84 |0 \xA1\x85 |0 \xA1\x86 |0 \xA1\x87 |0 \xA1\x88 |0 \xA1\x89 |0 \xA1\x8A |0 \xA1\x8B |0 \xA1\x8C |0 \xA1\x8D |0 \xA1\x8E |0 \xA1\x8F |0 \xA1\x90 |0 \xA1\x91 |0 \xA1\x92 |0 \xA1\x93 |0 \xA1\x94 |0 \xA1\x95 |0 \xA1\x96 |0 \xA1\x97 |0 \xA1\x98 |0 \xA1\x99 |0 \xA1\x9A |0 \xA1\x9B |0 \xA1\x9C |0 \xA1\x9D |0 \xA1\x9E |0 \xA1\x9F |0 \xA1\xA0 |0 \xA2\x40 |0 \xA2\x41 |0 \xA2\x42 |0 \xA2\x43 |0 \xA2\x44 |0 \xA2\x45 |0 \xA2\x46 |0 \xA2\x47 |0 \xA2\x48 |0 \xA2\x49 |0 \xA2\x4A |0 \xA2\x4B |0 \xA2\x4C |0 \xA2\x4D |0 \xA2\x4E |0 \xA2\x4F |0 \xA2\x50 |0 \xA2\x51 |0 \xA2\x52 |0 \xA2\x53 |0 \xA2\x54 |0 \xA2\x55 |0 \xA2\x56 |0 \xA2\x57 |0 \xA2\x58 |0 \xA2\x59 |0 \xA2\x5A |0 \xA2\x5B |0 \xA2\x5C |0 \xA2\x5D |0 \xA2\x5E |0 \xA2\x5F |0 \xA2\x60 |0 \xA2\x61 |0 \xA2\x62 |0 \xA2\x63 |0 \xA2\x64 |0 \xA2\x65 |0 \xA2\x66 |0 \xA2\x67 |0 \xA2\x68 |0 \xA2\x69 |0 \xA2\x6A |0 \xA2\x6B |0 \xA2\x6C |0 \xA2\x6D |0 \xA2\x6E |0 \xA2\x6F |0 \xA2\x70 |0 \xA2\x71 |0 \xA2\x72 |0 \xA2\x73 |0 \xA2\x74 |0 \xA2\x75 |0 \xA2\x76 |0 \xA2\x77 |0 \xA2\x78 |0 \xA2\x79 |0 \xA2\x7A |0 \xA2\x7B |0 \xA2\x7C |0 \xA2\x7D |0 \xA2\x7E |0 \xA2\x80 |0 \xA2\x81 |0 \xA2\x82 |0 \xA2\x83 |0 \xA2\x84 |0 \xA2\x85 |0 \xA2\x86 |0 \xA2\x87 |0 \xA2\x88 |0 \xA2\x89 |0 \xA2\x8A |0 \xA2\x8B |0 \xA2\x8C |0 \xA2\x8D |0 \xA2\x8E |0 \xA2\x8F |0 \xA2\x90 |0 \xA2\x91 |0 \xA2\x92 |0 \xA2\x93 |0 \xA2\x94 |0 \xA2\x95 |0 \xA2\x96 |0 \xA2\x97 |0 \xA2\x98 |0 \xA2\x99 |0 \xA2\x9A |0 \xA2\x9B |0 \xA2\x9C |0 \xA2\x9D |0 \xA2\x9E |0 \xA2\x9F |0 \xA2\xA0 |0 \xA3\x40 |0 \xA3\x41 |0 \xA3\x42 |0 \xA3\x43 |0 \xA3\x44 |0 \xA3\x45 |0 \xA3\x46 |0 \xA3\x47 |0 \xA3\x48 |0 \xA3\x49 |0 \xA3\x4A |0 \xA3\x4B |0 \xA3\x4C |0 \xA3\x4D |0 \xA3\x4E |0 \xA3\x4F |0 \xA3\x50 |0 \xA3\x51 |0 \xA3\x52 |0 \xA3\x53 |0 \xA3\x54 |0 \xA3\x55 |0 \xA3\x56 |0 \xA3\x57 |0 \xA3\x58 |0 \xA3\x59 |0 \xA3\x5A |0 \xA3\x5B |0 \xA3\x5C |0 \xA3\x5D |0 \xA3\x5E |0 \xA3\x5F |0 \xA3\x60 |0 \xA3\x61 |0 \xA3\x62 |0 \xA3\x63 |0 \xA3\x64 |0 \xA3\x65 |0 \xA3\x66 |0 \xA3\x67 |0 \xA3\x68 |0 \xA3\x69 |0 \xA3\x6A |0 \xA3\x6B |0 \xA3\x6C |0 \xA3\x6D |0 \xA3\x6E |0 \xA3\x6F |0 \xA3\x70 |0 \xA3\x71 |0 \xA3\x72 |0 \xA3\x73 |0 \xA3\x74 |0 \xA3\x75 |0 \xA3\x76 |0 \xA3\x77 |0 \xA3\x78 |0 \xA3\x79 |0 \xA3\x7A |0 \xA3\x7B |0 \xA3\x7C |0 \xA3\x7D |0 \xA3\x7E |0 \xA3\x80 |0 \xA3\x81 |0 \xA3\x82 |0 \xA3\x83 |0 \xA3\x84 |0 \xA3\x85 |0 \xA3\x86 |0 \xA3\x87 |0 \xA3\x88 |0 \xA3\x89 |0 \xA3\x8A |0 \xA3\x8B |0 \xA3\x8C |0 \xA3\x8D |0 \xA3\x8E |0 \xA3\x8F |0 \xA3\x90 |0 \xA3\x91 |0 \xA3\x92 |0 \xA3\x93 |0 \xA3\x94 |0 \xA3\x95 |0 \xA3\x96 |0 \xA3\x97 |0 \xA3\x98 |0 \xA3\x99 |0 \xA3\x9A |0 \xA3\x9B |0 \xA3\x9C |0 \xA3\x9D |0 \xA3\x9E |0 \xA3\x9F |0 \xA3\xA0 |0 \xA4\x40 |0 \xA4\x41 |0 \xA4\x42 |0 \xA4\x43 |0 \xA4\x44 |0 \xA4\x45 |0 \xA4\x46 |0 \xA4\x47 |0 \xA4\x48 |0 \xA4\x49 |0 \xA4\x4A |0 \xA4\x4B |0 \xA4\x4C |0 \xA4\x4D |0 \xA4\x4E |0 \xA4\x4F |0 \xA4\x50 |0 \xA4\x51 |0 \xA4\x52 |0 \xA4\x53 |0 \xA4\x54 |0 \xA4\x55 |0 \xA4\x56 |0 \xA4\x57 |0 \xA4\x58 |0 \xA4\x59 |0 \xA4\x5A |0 \xA4\x5B |0 \xA4\x5C |0 \xA4\x5D |0 \xA4\x5E |0 \xA4\x5F |0 \xA4\x60 |0 \xA4\x61 |0 \xA4\x62 |0 \xA4\x63 |0 \xA4\x64 |0 \xA4\x65 |0 \xA4\x66 |0 \xA4\x67 |0 \xA4\x68 |0 \xA4\x69 |0 \xA4\x6A |0 \xA4\x6B |0 \xA4\x6C |0 \xA4\x6D |0 \xA4\x6E |0 \xA4\x6F |0 \xA4\x70 |0 \xA4\x71 |0 \xA4\x72 |0 \xA4\x73 |0 \xA4\x74 |0 \xA4\x75 |0 \xA4\x76 |0 \xA4\x77 |0 \xA4\x78 |0 \xA4\x79 |0 \xA4\x7A |0 \xA4\x7B |0 \xA4\x7C |0 \xA4\x7D |0 \xA4\x7E |0 \xA4\x80 |0 \xA4\x81 |0 \xA4\x82 |0 \xA4\x83 |0 \xA4\x84 |0 \xA4\x85 |0 \xA4\x86 |0 \xA4\x87 |0 \xA4\x88 |0 \xA4\x89 |0 \xA4\x8A |0 \xA4\x8B |0 \xA4\x8C |0 \xA4\x8D |0 \xA4\x8E |0 \xA4\x8F |0 \xA4\x90 |0 \xA4\x91 |0 \xA4\x92 |0 \xA4\x93 |0 \xA4\x94 |0 \xA4\x95 |0 \xA4\x96 |0 \xA4\x97 |0 \xA4\x98 |0 \xA4\x99 |0 \xA4\x9A |0 \xA4\x9B |0 \xA4\x9C |0 \xA4\x9D |0 \xA4\x9E |0 \xA4\x9F |0 \xA4\xA0 |0 \xA5\x40 |0 \xA5\x41 |0 \xA5\x42 |0 \xA5\x43 |0 \xA5\x44 |0 \xA5\x45 |0 \xA5\x46 |0 \xA5\x47 |0 \xA5\x48 |0 \xA5\x49 |0 \xA5\x4A |0 \xA5\x4B |0 \xA5\x4C |0 \xA5\x4D |0 \xA5\x4E |0 \xA5\x4F |0 \xA5\x50 |0 \xA5\x51 |0 \xA5\x52 |0 \xA5\x53 |0 \xA5\x54 |0 \xA5\x55 |0 \xA5\x56 |0 \xA5\x57 |0 \xA5\x58 |0 \xA5\x59 |0 \xA5\x5A |0 \xA5\x5B |0 \xA5\x5C |0 \xA5\x5D |0 \xA5\x5E |0 \xA5\x5F |0 \xA5\x60 |0 \xA5\x61 |0 \xA5\x62 |0 \xA5\x63 |0 \xA5\x64 |0 \xA5\x65 |0 \xA5\x66 |0 \xA5\x67 |0 \xA5\x68 |0 \xA5\x69 |0 \xA5\x6A |0 \xA5\x6B |0 \xA5\x6C |0 \xA5\x6D |0 \xA5\x6E |0 \xA5\x6F |0 \xA5\x70 |0 \xA5\x71 |0 \xA5\x72 |0 \xA5\x73 |0 \xA5\x74 |0 \xA5\x75 |0 \xA5\x76 |0 \xA5\x77 |0 \xA5\x78 |0 \xA5\x79 |0 \xA5\x7A |0 \xA5\x7B |0 \xA5\x7C |0 \xA5\x7D |0 \xA5\x7E |0 \xA5\x80 |0 \xA5\x81 |0 \xA5\x82 |0 \xA5\x83 |0 \xA5\x84 |0 \xA5\x85 |0 \xA5\x86 |0 \xA5\x87 |0 \xA5\x88 |0 \xA5\x89 |0 \xA5\x8A |0 \xA5\x8B |0 \xA5\x8C |0 \xA5\x8D |0 \xA5\x8E |0 \xA5\x8F |0 \xA5\x90 |0 \xA5\x91 |0 \xA5\x92 |0 \xA5\x93 |0 \xA5\x94 |0 \xA5\x95 |0 \xA5\x96 |0 \xA5\x97 |0 \xA5\x98 |0 \xA5\x99 |0 \xA5\x9A |0 \xA5\x9B |0 \xA5\x9C |0 \xA5\x9D |0 \xA5\x9E |0 \xA5\x9F |0 \xA5\xA0 |0 \xA6\x40 |0 \xA6\x41 |0 \xA6\x42 |0 \xA6\x43 |0 \xA6\x44 |0 \xA6\x45 |0 \xA6\x46 |0 \xA6\x47 |0 \xA6\x48 |0 \xA6\x49 |0 \xA6\x4A |0 \xA6\x4B |0 \xA6\x4C |0 \xA6\x4D |0 \xA6\x4E |0 \xA6\x4F |0 \xA6\x50 |0 \xA6\x51 |0 \xA6\x52 |0 \xA6\x53 |0 \xA6\x54 |0 \xA6\x55 |0 \xA6\x56 |0 \xA6\x57 |0 \xA6\x58 |0 \xA6\x59 |0 \xA6\x5A |0 \xA6\x5B |0 \xA6\x5C |0 \xA6\x5D |0 \xA6\x5E |0 \xA6\x5F |0 \xA6\x60 |0 \xA6\x61 |0 \xA6\x62 |0 \xA6\x63 |0 \xA6\x64 |0 \xA6\x65 |0 \xA6\x66 |0 \xA6\x67 |0 \xA6\x68 |0 \xA6\x69 |0 \xA6\x6A |0 \xA6\x6B |0 \xA6\x6C |0 \xA6\x6D |0 \xA6\x6E |0 \xA6\x6F |0 \xA6\x70 |0 \xA6\x71 |0 \xA6\x72 |0 \xA6\x73 |0 \xA6\x74 |0 \xA6\x75 |0 \xA6\x76 |0 \xA6\x77 |0 \xA6\x78 |0 \xA6\x79 |0 \xA6\x7A |0 \xA6\x7B |0 \xA6\x7C |0 \xA6\x7D |0 \xA6\x7E |0 \xA6\x80 |0 \xA6\x81 |0 \xA6\x82 |0 \xA6\x83 |0 \xA6\x84 |0 \xA6\x85 |0 \xA6\x86 |0 \xA6\x87 |0 \xA6\x88 |0 \xA6\x89 |0 \xA6\x8A |0 \xA6\x8B |0 \xA6\x8C |0 \xA6\x8D |0 \xA6\x8E |0 \xA6\x8F |0 \xA6\x90 |0 \xA6\x91 |0 \xA6\x92 |0 \xA6\x93 |0 \xA6\x94 |0 \xA6\x95 |0 \xA6\x96 |0 \xA6\x97 |0 \xA6\x98 |0 \xA6\x99 |0 \xA6\x9A |0 \xA6\x9B |0 \xA6\x9C |0 \xA6\x9D |0 \xA6\x9E |0 \xA6\x9F |0 \xA6\xA0 |0 \xA7\x40 |0 \xA7\x41 |0 \xA7\x42 |0 \xA7\x43 |0 \xA7\x44 |0 \xA7\x45 |0 \xA7\x46 |0 \xA7\x47 |0 \xA7\x48 |0 \xA7\x49 |0 \xA7\x4A |0 \xA7\x4B |0 \xA7\x4C |0 \xA7\x4D |0 \xA7\x4E |0 \xA7\x4F |0 \xA7\x50 |0 \xA7\x51 |0 \xA7\x52 |0 \xA7\x53 |0 \xA7\x54 |0 \xA7\x55 |0 \xA7\x56 |0 \xA7\x57 |0 \xA7\x58 |0 \xA7\x59 |0 \xA7\x5A |0 \xA7\x5B |0 \xA7\x5C |0 \xA7\x5D |0 \xA7\x5E |0 \xA7\x5F |0 \xA7\x60 |0 \xA7\x61 |0 \xA7\x62 |0 \xA7\x63 |0 \xA7\x64 |0 \xA7\x65 |0 \xA7\x66 |0 \xA7\x67 |0 \xA7\x68 |0 \xA7\x69 |0 \xA7\x6A |0 \xA7\x6B |0 \xA7\x6C |0 \xA7\x6D |0 \xA7\x6E |0 \xA7\x6F |0 \xA7\x70 |0 \xA7\x71 |0 \xA7\x72 |0 \xA7\x73 |0 \xA7\x74 |0 \xA7\x75 |0 \xA7\x76 |0 \xA7\x77 |0 \xA7\x78 |0 \xA7\x79 |0 \xA7\x7A |0 \xA7\x7B |0 \xA7\x7C |0 \xA7\x7D |0 \xA7\x7E |0 \xA7\x80 |0 \xA7\x81 |0 \xA7\x82 |0 \xA7\x83 |0 \xA7\x84 |0 \xA7\x85 |0 \xA7\x86 |0 \xA7\x87 |0 \xA7\x88 |0 \xA7\x89 |0 \xA7\x8A |0 \xA7\x8B |0 \xA7\x8C |0 \xA7\x8D |0 \xA7\x8E |0 \xA7\x8F |0 \xA7\x90 |0 \xA7\x91 |0 \xA7\x92 |0 \xA7\x93 |0 \xA7\x94 |0 \xA7\x95 |0 \xA7\x96 |0 \xA7\x97 |0 \xA7\x98 |0 \xA7\x99 |0 \xA7\x9A |0 \xA7\x9B |0 \xA7\x9C |0 \xA7\x9D |0 \xA7\x9E |0 \xA7\x9F |0 \xA7\xA0 |0 \xA8\xBC |0 \xA8\xBF |0 \xA9\x89 |0 \xA9\x8A |0 \xA9\x8B |0 \xA9\x8C |0 \xA9\x8D |0 \xA9\x8E |0 \xA9\x8F |0 \xA9\x90 |0 \xA9\x91 |0 \xA9\x92 |0 \xA9\x93 |0 \xA9\x94 |0 \xA9\x95 |0 \xFE\x50 |0 \xFE\x51 |0 \xFE\x52 |0 \xFE\x53 |0 \xFE\x54 |0 \xFE\x55 |0 \xFE\x56 |0 \xFE\x57 |0 \xFE\x58 |0 \xFE\x59 |0 \xFE\x5A |0 \xFE\x5B |0 \xFE\x5C |0 \xFE\x5D |0 \xFE\x5E |0 \xFE\x5F |0 \xFE\x60 |0 \xFE\x61 |0 \xFE\x62 |0 \xFE\x63 |0 \xFE\x64 |0 \xFE\x65 |0 \xFE\x66 |0 \xFE\x67 |0 \xFE\x68 |0 \xFE\x69 |0 \xFE\x6A |0 \xFE\x6B |0 \xFE\x6C |0 \xFE\x6D |0 \xFE\x6E |0 \xFE\x6F |0 \xFE\x70 |0 \xFE\x71 |0 \xFE\x72 |0 \xFE\x73 |0 \xFE\x74 |0 \xFE\x75 |0 \xFE\x76 |0 \xFE\x77 |0 \xFE\x78 |0 \xFE\x79 |0 \xFE\x7A |0 \xFE\x7B |0 \xFE\x7C |0 \xFE\x7D |0 \xFE\x7E |0 \xFE\x80 |0 \xFE\x81 |0 \xFE\x82 |0 \xFE\x83 |0 \xFE\x84 |0 \xFE\x85 |0 \xFE\x86 |0 \xFE\x87 |0 \xFE\x88 |0 \xFE\x89 |0 \xFE\x8A |0 \xFE\x8B |0 \xFE\x8C |0 \xFE\x8D |0 \xFE\x8E |0 \xFE\x8F |0 \xFE\x90 |0 \xFE\x91 |0 \xFE\x92 |0 \xFE\x93 |0 \xFE\x94 |0 \xFE\x95 |0 \xFE\x96 |0 \xFE\x97 |0 \xFE\x98 |0 \xFE\x99 |0 \xFE\x9A |0 \xFE\x9B |0 \xFE\x9C |0 \xFE\x9D |0 \xFE\x9E |0 \xFE\x9F |0 \xFE\xA0 |0 \xA3\xA4 |1 \xD9\xDA |1 \xFD\x9C |0 \xFD\x9D |0 \xFD\x9E |0 \xFD\x9F |0 \xFD\xA0 |0 \xFE\x40 |0 \xFE\x41 |0 \xFE\x42 |0 \xFE\x43 |0 \xFE\x44 |0 \xFE\x45 |0 \xFE\x46 |0 \xFE\x47 |0 \xFE\x48 |0 \xFE\x49 |0 \xFE\x4A |0 \xFE\x4B |0 \xFE\x4C |0 \xFE\x4D |0 \xFE\x4E |0 \xFE\x4F |0 \xA9\x55 |0 \xA6\xF2 |0 \xA6\xF4 |0 \xA6\xF5 |0 \xA6\xE0 |0 \xA6\xE1 |0 \xA6\xF0 |0 \xA6\xF1 |0 \xA6\xE2 |0 \xA6\xE3 |0 \xA6\xEE |0 \xA6\xEF |0 \xA6\xE6 |0 \xA6\xE7 |0 \xA6\xE4 |0 \xA6\xE5 |0 \xA6\xE8 |0 \xA6\xE9 |0 \xA6\xEA |0 \xA6\xEB |0 \xA9\x68 |0 \xA9\x69 |0 \xA9\x6A |0 \xA9\x6B |0 \xA9\x6C |0 \xA9\x6D |0 \xA9\x6E |0 \xA9\x6F |0 \xA9\x70 |0 \xA9\x71 |0 \xA9\x72 |0 \xA9\x73 |0 \xA9\x74 |0 \xA9\x75 |0 \xA9\x76 |0 \xA9\x77 |0 \xA9\x78 |0 \xA9\x79 |0 \xA9\x7A |0 \xA9\x7B |0 \xA9\x7C |0 \xA9\x7D |0 \xA9\x7E |0 \xA9\x80 |0 \xA9\x81 |0 \xA9\x82 |0 \xA9\x83 |0 \xA9\x84 |0 \xA9\x85 |0 \xA9\x86 |0 \xA9\x87 |0 \xA9\x88 |0 \xA3\xA1 |0 \xA3\xA2 |0 \xA3\xA3 |0 \xA1\xE7 |0 \xA3\xA5 |0 \xA3\xA6 |0 \xA8\x46 |1 \xA3\xA8 |0 \xA3\xA9 |0 \xA3\xAA |0 \xA3\xAB |0 \xA3\xAC |0 \xA3\xAD |0 \xA3\xAE |0 \xA3\xAF |0 \xA3\xB0 |0 \xA3\xB1 |0 \xA3\xB2 |0 \xA3\xB3 |0 \xA3\xB4 |0 \xA3\xB5 |0 \xA3\xB6 |0 \xA3\xB7 |0 \xA3\xB8 |0 \xA3\xB9 |0 \xA3\xBA |0 \xA3\xBB |0 \xA3\xBC |0 \xA3\xBD |0 \xA3\xBE |0 \xA3\xBF |0 \xA3\xC0 |0 \xA3\xC1 |0 \xA3\xC2 |0 \xA3\xC3 |0 \xA3\xC4 |0 \xA3\xC5 |0 \xA3\xC6 |0 \xA3\xC7 |0 \xA3\xC8 |0 \xA3\xC9 |0 \xA3\xCA |0 \xA3\xCB |0 \xA3\xCC |0 \xA3\xCD |0 \xA3\xCE |0 \xA3\xCF |0 \xA3\xD0 |0 \xA3\xD1 |0 \xA3\xD2 |0 \xA3\xD3 |0 \xA3\xD4 |0 \xA3\xD5 |0 \xA3\xD6 |0 \xA3\xD7 |0 \xA3\xD8 |0 \xA3\xD9 |0 \xA3\xDA |0 \xA3\xDB |0 \xA3\xDC |0 \xA3\xDD |0 \xA3\xDE |0 \xA3\xDF |0 \xA3\xE0 |0 \xA3\xE1 |0 \xA3\xE2 |0 \xA3\xE3 |0 \xA3\xE4 |0 \xA3\xE5 |0 \xA3\xE6 |0 \xA3\xE7 |0 \xA3\xE8 |0 \xA3\xE9 |0 \xA3\xEA |0 \xA3\xEB |0 \xA3\xEC |0 \xA3\xED |0 \xA3\xEE |0 \xA3\xEF |0 \xA3\xF0 |0 \xA3\xF1 |0 \xA3\xF2 |0 \xA3\xF3 |0 \xA3\xF4 |0 \xA3\xF5 |0 \xA3\xF6 |0 \xA3\xF7 |0 \xA3\xF8 |0 \xA3\xF9 |0 \xA3\xFA |0 \xA3\xFB |0 \xA3\xFC |0 \xA3\xFD |0 \xA1\xAB |0 \xA1\xE9 |0 \xA1\xEA |0 \xA9\x56 |0 \xA3\xFE |0 \xA9\x57 |0 \xA3\xA4 |0 END CHARMAP suite3270-4.1/Common/ibm-1388_P103-2001.ucm000066400000000000000000024724311413735575200172450ustar00rootroot00000000000000# *************************************************************************** # * # * Copyright (C) 1995-2002, International Business Machines # * Corporation and others. All Rights Reserved. # * # *************************************************************************** # # File created by rptp2ucm (compiled on Dec 3 2002) # from source files 44B0056C.RPMAP103 and 056C44B0.TPMAP103 # "ibm-1388_P103-2001" "AXXXX" 2 1 "EBCDIC_STATEFUL" \xFE\xFE \x3F "EBCDIC" "ibm-1388_VPUA" CHARMAP \x00 |0 \x01 |0 \x02 |0 \x03 |0 \x37 |0 \x2D |0 \x2E |0 \x2F |0 \x16 |0 \x05 |0 \x25 |0 \x0B |0 \x0C |0 \x0D |0 \x3F |2 \x3F |2 \x10 |0 \x11 |0 \x12 |0 \x13 |0 \x3C |0 \x3D |0 \x32 |0 \x26 |0 \x18 |0 \x19 |0 \x3F |0 \x27 |0 \x1C |0 \x1D |0 \x1E |0 \x1F |0 \x40 |0 \x5A |0 \x7F |0 \x7B |0 \xE0 |0 \x6C |0 \x50 |0 \x7D |0 \x4D |0 \x5D |0 \x5C |0 \x4E |0 \x6B |0 \x60 |0 \x4B |0 \x61 |0 \xF0 |0 \xF1 |0 \xF2 |0 \xF3 |0 \xF4 |0 \xF5 |0 \xF6 |0 \xF7 |0 \xF8 |0 \xF9 |0 \x7A |0 \x5E |0 \x4C |0 \x7E |0 \x6E |0 \x6F |0 \x7C |0 \xC1 |0 \xC2 |0 \xC3 |0 \xC4 |0 \xC5 |0 \xC6 |0 \xC7 |0 \xC8 |0 \xC9 |0 \xD1 |0 \xD2 |0 \xD3 |0 \xD4 |0 \xD5 |0 \xD6 |0 \xD7 |0 \xD8 |0 \xD9 |0 \xE2 |0 \xE3 |0 \xE4 |0 \xE5 |0 \xE6 |0 \xE7 |0 \xE8 |0 \xE9 |0 \xBA |0 \xB2 |0 \xBB |0 \xB0 |0 \x6D |0 \x79 |0 \x81 |0 \x82 |0 \x83 |0 \x84 |0 \x85 |0 \x86 |0 \x87 |0 \x88 |0 \x89 |0 \x91 |0 \x92 |0 \x93 |0 \x94 |0 \x95 |0 \x96 |0 \x97 |0 \x98 |0 \x99 |0 \xA2 |0 \xA3 |0 \xA4 |0 \xA5 |0 \xA6 |0 \xA7 |0 \xA8 |0 \xA9 |0 \xC0 |0 \x4F |0 \xD0 |0 \xA0 |0 \x07 |0 \x20 |0 \x21 |0 \x22 |0 \x23 |0 \x24 |0 \x15 |0 \x06 |0 \x17 |0 \x28 |0 \x29 |0 \x2A |0 \x2B |0 \x2C |0 \x09 |0 \x0A |0 \x1B |0 \x30 |0 \x31 |0 \x1A |0 \x33 |0 \x34 |0 \x35 |0 \x36 |0 \x08 |0 \x38 |0 \x39 |0 \x3A |0 \x3B |0 \x04 |0 \x14 |0 \x3E |0 \xFF |0 \x3F |2 \x3F |2 \x3F |2 \x4A |0 \x45\x88 |0 \x5B |0 \x6A |0 \x44\x6A |0 \x44\x60 |0 \x3F |2 \x3F |2 \x3F |2 \x5F |0 \x3F |2 \x3F |2 \x3F |2 \x44\xED |0 \x44\x4B |0 \x3F |2 \x3F |2 \x44\x50 |0 \x3F |2 \x3F |2 \x43\x45 |0 \x3F |2 \x3F |2 \x3F |2 \x3F |2 \x3F |2 \x3F |2 \x3F |2 \x3F |2 \x3F |2 \x3F |2 \x3F |2 \x3F |2 \x3F |2 \x3F |2 \x3F |2 \x3F |2 \x3F |2 \x3F |2 \x3F |2 \x3F |2 \x3F |2 \x3F |2 \x3F |2 \x3F |2 \x3F |2 \x3F |2 \x3F |2 \x3F |2 \x3F |2 \x3F |2 \x3F |2 \x44\x7A |0 \x3F |2 \x3F |2 \x3F |2 \x3F |2 \x3F |2 \x3F |2 \x3F |2 \x3F |2 \x46\x44 |0 \x46\x42 |0 \x3F |2 \x3F |2 \x3F |2 \x3F |2 \x3F |2 \x3F |2 \x46\x48 |0 \x46\x46 |0 \x46\x5A |0 \x3F |2 \x46\x4C |0 \x46\x4A |0 \x3F |2 \x3F |2 \x3F |2 \x3F |2 \x46\x50 |0 \x46\x4E |0 \x3F |2 \x3F |2 \x3F |2 \x44\x7B |0 \x3F |2 \x46\x54 |0 \x46\x52 |0 \x3F |2 \x46\x59 |0 \x3F |2 \x3F |2 \x3F |2 \x46\x41 |0 \x46\x45 |0 \x46\x47 |0 \x46\x49 |0 \x46\x5D |0 \x46\x5E |0 \x46\x4D |0 \x46\x51 |0 \x46\x43 |0 \x46\x4B |0 \x46\x4F |0 \x46\x53 |0 \x46\x55 |0 \x46\x56 |0 \x46\x57 |0 \x46\x58 |0 \x46\x5F |0 \x46\x5B |0 \x46\x60 |0 \x45\x46 |0 \x45\x45 |0 \xCD\x41 |0 \xCD\x42 |0 \xCD\x43 |0 \x41\x61 |0 \x41\x62 |0 \x41\x63 |0 \x41\x64 |0 \x41\x65 |0 \x41\x66 |0 \x41\x67 |0 \x41\x68 |0 \x41\x69 |0 \x41\x6A |0 \x41\x6B |0 \x41\x6C |0 \x41\x6D |0 \x41\x6E |0 \x41\x6F |0 \x41\x70 |0 \x41\x71 |0 \x41\x72 |0 \x41\x73 |0 \x41\x74 |0 \x41\x75 |0 \x41\x76 |0 \x41\x77 |0 \x41\x78 |0 \x41\x41 |0 \x41\x42 |0 \x41\x43 |0 \x41\x44 |0 \x41\x45 |0 \x41\x46 |0 \x41\x47 |0 \x41\x48 |0 \x41\x49 |0 \x41\x4A |0 \x41\x4B |0 \x41\x4C |0 \x41\x4D |0 \x41\x4E |0 \x41\x4F |0 \x41\x50 |0 \x41\x51 |0 \x41\x52 |0 \x41\x53 |0 \x41\x54 |0 \x41\x55 |0 \x41\x56 |0 \x41\x57 |0 \x41\x58 |0 \x41\xC6 |0 \x41\xC0 |0 \x41\xC1 |0 \x41\xC2 |0 \x41\xC3 |0 \x41\xC4 |0 \x41\xC5 |0 \x41\xC7 |0 \x41\xC8 |0 \x41\xC9 |0 \x41\xCA |0 \x41\xCB |0 \x41\xCC |0 \x41\xCD |0 \x41\xCE |0 \x41\xCF |0 \x41\xD0 |0 \x41\xD1 |0 \x41\xD2 |0 \x41\xD3 |0 \x41\xD4 |0 \x41\xD5 |0 \x41\xD6 |0 \x41\xD7 |0 \x41\xD8 |0 \x41\xD9 |0 \x41\xDA |0 \x41\xDB |0 \x41\xDC |0 \x41\xDD |0 \x41\xDE |0 \x41\xDF |0 \x41\xE0 |0 \x41\x80 |0 \x41\x81 |0 \x41\x82 |0 \x41\x83 |0 \x41\x84 |0 \x41\x85 |0 \x41\x87 |0 \x41\x88 |0 \x41\x89 |0 \x41\x8A |0 \x41\x8B |0 \x41\x8C |0 \x41\x8D |0 \x41\x8E |0 \x41\x8F |0 \x41\x90 |0 \x41\x91 |0 \x41\x92 |0 \x41\x93 |0 \x41\x94 |0 \x41\x95 |0 \x41\x96 |0 \x41\x97 |0 \x41\x98 |0 \x41\x99 |0 \x41\x9A |0 \x41\x9B |0 \x41\x9C |0 \x41\x9D |0 \x41\x9E |0 \x41\x9F |0 \x41\xA0 |0 \x41\x86 |0 \x47\x5D |0 \x47\x5E |0 \x47\x5F |0 \x47\x60 |0 \x47\x61 |0 \x47\x62 |0 \x47\x63 |0 \x47\x64 |0 \x47\x65 |0 \x47\x66 |0 \x47\x67 |0 \x47\x68 |0 \x47\x69 |0 \x47\x6A |0 \x47\x6B |0 \x47\x6C |0 \x47\x6D |0 \x47\x6E |0 \x47\x6F |0 \x47\x70 |0 \x47\x71 |0 \x47\x72 |0 \x47\x73 |0 \x47\x74 |0 \x47\x75 |0 \x47\x76 |0 \x47\x77 |0 \x47\x78 |0 \x47\x79 |0 \x47\x7A |0 \x47\x7B |0 \x47\x7C |0 \x47\x7D |0 \x47\x7E |0 \x47\x7F |0 \x47\x80 |0 \x47\x81 |0 \x47\x82 |0 \x47\x83 |0 \x47\x84 |0 \x47\x85 |0 \x47\x86 |0 \x47\x87 |0 \x47\x88 |0 \x47\x89 |0 \x47\x8A |0 \x47\x8B |0 \x47\x8C |0 \x47\x8D |0 \x47\x8E |0 \x47\x8F |0 \x47\x90 |0 \x47\x91 |0 \x47\x92 |0 \x47\x93 |0 \x47\x94 |0 \x47\x95 |0 \x47\x96 |0 \x47\x97 |0 \x47\x98 |0 \x47\x99 |0 \x47\x9A |0 \x47\x9B |0 \x47\x9C |0 \x47\x9D |0 \x47\x9E |0 \x47\x9F |0 \x47\xA0 |0 \x47\xA1 |0 \x47\xA2 |0 \x47\xA3 |0 \x47\xA4 |0 \x47\xA5 |0 \x47\xA6 |0 \x47\xA7 |0 \x47\xA8 |0 \x47\xA9 |0 \x47\xAA |0 \x47\xAB |0 \x47\xAC |0 \x47\xAD |0 \x47\xAE |0 \x47\xAF |0 \x47\xB0 |0 \x47\xB1 |0 \x47\xB2 |0 \x47\xB3 |0 \x47\xB4 |0 \x47\xB5 |0 \x47\xB6 |0 \x47\xB7 |0 \x47\xB8 |0 \x47\xB9 |0 \x47\xBA |0 \x47\xBB |0 \x47\xBC |0 \x47\xBD |0 \x47\xBE |0 \x47\xBF |0 \x47\xC0 |0 \x47\xC1 |0 \x47\xC2 |0 \x47\xC3 |0 \x47\xC4 |0 \x47\xC5 |0 \x47\xC6 |0 \x47\xC7 |0 \x47\xC8 |0 \x47\xC9 |0 \x47\xCA |0 \x47\xCB |0 \x47\xCC |0 \x47\xCD |0 \x47\xCE |0 \x47\xCF |0 \x47\xD0 |0 \x47\xD1 |0 \x47\xD2 |0 \x47\xD3 |0 \x47\xD4 |0 \x47\xD5 |0 \x47\xD6 |0 \x47\xD7 |0 \x47\xD8 |0 \x47\xD9 |0 \x47\xDA |0 \x47\xDB |0 \x47\xDC |0 \x47\xDD |0 \x47\xDE |0 \x47\xDF |0 \x47\xE0 |0 \x47\xE1 |0 \x47\xE2 |0 \x47\xE3 |0 \x47\xE4 |0 \x47\xE5 |0 \x47\xE6 |0 \x47\xE7 |0 \x47\xE8 |0 \x47\xE9 |0 \x47\xEA |0 \x47\xEB |0 \x47\xEC |0 \x47\xED |0 \x47\xEE |0 \x47\xEF |0 \x47\xF0 |0 \x47\xF1 |0 \x47\xF2 |0 \x47\xF3 |0 \x47\xF4 |0 \x47\xF5 |0 \x47\xF6 |0 \x47\xF7 |0 \x47\xF8 |0 \x47\xF9 |0 \x47\xFA |0 \x47\xFB |0 \x47\xFC |0 \x47\xFD |0 \x47\xFE |0 \x48\x41 |0 \x48\x42 |0 \x48\x43 |0 \x48\x44 |0 \x48\x45 |0 \x48\x46 |0 \x48\x47 |0 \x48\x48 |0 \x48\x49 |0 \x48\x4A |0 \x48\x4B |0 \x48\x4C |0 \x48\x4D |0 \x48\x4E |0 \x48\x4F |0 \x48\x50 |0 \x48\x51 |0 \x48\x52 |0 \x48\x53 |0 \x48\x54 |0 \x48\x55 |0 \x48\x56 |0 \x48\x57 |0 \x48\x58 |0 \x48\x59 |0 \x48\x5A |0 \x48\x5B |0 \x48\x5C |0 \x48\x5D |0 \x48\x5E |0 \x48\x5F |0 \x48\x60 |0 \x48\x61 |0 \x48\x62 |0 \x48\x63 |0 \x48\x64 |0 \x48\x65 |0 \x48\x66 |0 \x48\x67 |0 \x48\x68 |0 \x48\x69 |0 \x48\x6A |0 \x48\x6B |0 \x48\x6C |0 \x48\x6D |0 \x48\x6E |0 \x48\x6F |0 \x48\x70 |0 \x48\x71 |0 \x48\x72 |0 \x48\x73 |0 \x48\x74 |0 \x48\x75 |0 \x48\x76 |0 \x48\x77 |0 \x48\x78 |0 \x48\x79 |0 \x48\x7A |0 \x48\x7B |0 \x48\x7C |0 \x48\x7D |0 \x48\x7E |0 \x48\x7F |0 \x48\x80 |0 \x48\x81 |0 \x48\x82 |0 \x48\x83 |0 \x48\x84 |0 \x48\x85 |0 \x48\x86 |0 \x48\x87 |0 \x48\x88 |0 \x48\x89 |0 \x48\x8A |0 \x48\x8B |0 \x48\x8C |0 \x48\x8D |0 \x48\x8E |0 \x48\x8F |0 \x48\x90 |0 \x48\x91 |0 \x48\x92 |0 \x48\x93 |0 \x48\x94 |0 \x48\x95 |0 \x48\x96 |0 \x48\x97 |0 \x48\x98 |0 \x48\x99 |0 \x48\x9A |0 \x48\x9B |0 \x48\x9C |0 \x48\x9D |0 \x48\x9E |0 \x6D\x41 |0 \x6D\x42 |0 \x6D\x43 |0 \x6D\x44 |0 \x6D\x45 |0 \x6D\x46 |0 \x6D\x47 |0 \x6D\x48 |0 \x6D\x49 |0 \x6D\x4A |0 \x6D\x4B |0 \x6D\x4C |0 \x6D\x4D |0 \x6D\x4E |0 \x6D\x4F |0 \x6D\x50 |0 \x6D\x51 |0 \x6D\x52 |0 \x6D\x53 |0 \x6D\x54 |0 \x6D\x55 |0 \x6D\x56 |0 \x6D\x57 |0 \x6D\x58 |0 \x6D\x59 |0 \x6D\x5A |0 \x6D\x5B |0 \x6D\x5C |0 \x6D\x5D |0 \x6D\x5E |0 \x6D\x5F |0 \x6D\x60 |0 \x6D\x61 |0 \x6D\x62 |0 \x6D\x63 |0 \x6D\x64 |0 \x6D\x65 |0 \x6D\x66 |0 \x6D\x67 |0 \x6D\x68 |0 \x6D\x69 |0 \x6D\x6A |0 \x6D\x6B |0 \x6D\x6C |0 \x6D\x6D |0 \x6D\x6E |0 \x6D\x6F |0 \x6D\x70 |0 \x6D\x71 |0 \x6D\x72 |0 \x6D\x73 |0 \x6D\x74 |0 \x6D\x75 |0 \x6D\x76 |0 \x6D\x77 |0 \x6D\x78 |0 \x6D\x79 |0 \x6D\x7A |0 \x6D\x7B |0 \x6D\x7C |0 \x6D\x7D |0 \x6D\x7E |0 \x6D\x7F |0 \x6D\x80 |0 \x6D\x81 |0 \x6D\x82 |0 \x6D\x83 |0 \x6D\x84 |0 \x6D\x85 |0 \x6D\x86 |0 \x6D\x87 |0 \x6D\x88 |0 \x6D\x89 |0 \x6D\x8A |0 \x6D\x8B |0 \x6D\x8C |0 \x6D\x8D |0 \x6D\x8E |0 \x6D\x8F |0 \x6D\x90 |0 \x6D\x91 |0 \x6D\x92 |0 \x6D\x93 |0 \x6D\x94 |0 \x6D\x95 |0 \x6D\x96 |0 \x6D\x97 |0 \x6D\x98 |0 \x6D\x99 |0 \x6D\x9A |0 \x6D\x9B |0 \x6D\x9C |0 \x6D\x9D |0 \x6D\x9E |0 \x6D\x9F |0 \x6D\xA0 |0 \x6D\xA1 |0 \x6D\xA2 |0 \x6D\xA3 |0 \x6D\xA4 |0 \x6D\xA5 |0 \x6D\xA6 |0 \x6D\xA7 |0 \x6D\xA8 |0 \x6D\xA9 |0 \x6D\xAA |0 \x6D\xAB |0 \x6D\xAC |0 \x6D\xAD |0 \x6D\xAE |0 \x6D\xAF |0 \x6D\xB0 |0 \x6D\xB1 |0 \x6D\xB2 |0 \x6D\xB3 |0 \x6D\xB4 |0 \x6D\xB5 |0 \x6D\xB6 |0 \x6D\xB7 |0 \x6D\xB8 |0 \x6D\xB9 |0 \x6D\xBA |0 \x6D\xBB |0 \x6D\xBC |0 \x6D\xBD |0 \x6D\xBE |0 \x6D\xBF |0 \x6D\xC0 |0 \x6D\xC1 |0 \x6D\xC2 |0 \x6D\xC3 |0 \x6D\xC4 |0 \x6D\xC5 |0 \x6D\xC6 |0 \x6D\xC7 |0 \x6D\xC8 |0 \x6D\xC9 |0 \x6D\xCA |0 \x6D\xCB |0 \x6D\xCC |0 \x6D\xCD |0 \x6D\xCE |0 \x6D\xCF |0 \x6D\xD0 |0 \x6D\xD1 |0 \x6D\xD2 |0 \x6D\xD3 |0 \x6D\xD4 |0 \x6D\xD5 |0 \x6D\xD6 |0 \x6D\xD7 |0 \x6D\xD8 |0 \x6D\xD9 |0 \x6D\xDA |0 \x6D\xDB |0 \x6D\xDC |0 \x6D\xDD |0 \x6D\xDE |0 \x6D\xDF |0 \x6D\xE0 |0 \x6D\xE1 |0 \x6D\xE2 |0 \x6D\xE3 |0 \x6D\xE4 |0 \x6D\xE5 |0 \x6D\xE6 |0 \x6D\xE7 |0 \x6D\xE8 |0 \x6D\xE9 |0 \x6D\xEA |0 \x6D\xEB |0 \x6D\xEC |0 \x6D\xED |0 \x6D\xEE |0 \x6D\xEF |0 \x6D\xF0 |0 \x6D\xF1 |0 \x6D\xF2 |0 \x6D\xF3 |0 \x6D\xF4 |0 \x6D\xF5 |0 \x6D\xF6 |0 \x6D\xF7 |0 \x6D\xF8 |0 \x6D\xF9 |0 \x6D\xFA |0 \x6D\xFB |0 \x6D\xFC |0 \x6D\xFD |0 \x6D\xFE |0 \x6E\x41 |0 \x6E\x42 |0 \x6E\x43 |0 \x6E\x44 |0 \x6E\x45 |0 \x6E\x46 |0 \x6E\x47 |0 \x6E\x48 |0 \x6E\x49 |0 \x6E\x4A |0 \x6E\x4B |0 \x6E\x4C |0 \x6E\x4D |0 \x6E\x4E |0 \x6E\x4F |0 \x6E\x50 |0 \x6E\x51 |0 \x6E\x52 |0 \x6E\x53 |0 \x6E\x54 |0 \x6E\x55 |0 \x6E\x56 |0 \x6E\x57 |0 \x6E\x58 |0 \x6E\x59 |0 \x6E\x5A |0 \x6E\x5B |0 \x6E\x5C |0 \x6E\x5D |0 \x6E\x5E |0 \x6E\x5F |0 \x6E\x60 |0 \x6E\x61 |0 \x6E\x62 |0 \x6E\x63 |0 \x6E\x64 |0 \x6E\x65 |0 \x6E\x66 |0 \x6E\x67 |0 \x6E\x68 |0 \x6E\x69 |0 \x6E\x6A |0 \x6E\x6B |0 \x6E\x6C |0 \x6E\x6D |0 \x6E\x6E |0 \x6E\x6F |0 \x6E\x70 |0 \x6E\x71 |0 \x6E\x72 |0 \x6E\x73 |0 \x6E\x74 |0 \x6E\x75 |0 \x6E\x76 |0 \x6E\x77 |0 \x6E\x78 |0 \x6E\x79 |0 \x6E\x7A |0 \x6E\x7B |0 \x6E\x7C |0 \x6E\x7D |0 \x6E\x7E |0 \x6E\x7F |0 \x6E\x80 |0 \x6E\x81 |0 \x6E\x82 |0 \x6E\x83 |0 \x6E\x84 |0 \x6E\x85 |0 \x6E\x86 |0 \x6E\x87 |0 \x6E\x88 |0 \x6E\x89 |0 \x6E\x8A |0 \x6E\x8B |0 \x6E\x8C |0 \x6E\x8D |0 \x6E\x8E |0 \x6E\x8F |0 \x6E\x90 |0 \x6E\x91 |0 \x6E\x92 |0 \x6E\x93 |0 \x6E\x94 |0 \x6E\x95 |0 \x6E\x96 |0 \x6E\x97 |0 \x6E\x98 |0 \x6E\x99 |0 \x6E\x9A |0 \x6E\x9B |0 \x6E\x9C |0 \x6E\x9D |0 \x6E\x9E |0 \x6E\x9F |0 \x6E\xA0 |0 \x6E\xA1 |0 \x6E\xA2 |0 \x6E\xA3 |0 \x6E\xA4 |0 \x6E\xA5 |0 \x6E\xA6 |0 \x6E\xA7 |0 \x6E\xA8 |0 \x6E\xA9 |0 \x6E\xAA |0 \x6E\xAB |0 \x6E\xAC |0 \x6E\xAD |0 \x6E\xAE |0 \x6E\xAF |0 \x6E\xB0 |0 \x6E\xB1 |0 \x6E\xB2 |0 \x6E\xB3 |0 \x6E\xB4 |0 \x6E\xB5 |0 \x6E\xB6 |0 \x6E\xB7 |0 \x6E\xB8 |0 \x6E\xB9 |0 \x6E\xBA |0 \x6E\xBB |0 \x6E\xBC |0 \x6E\xBD |0 \x6E\xBE |0 \x6E\xBF |0 \x6E\xC0 |0 \x6E\xC1 |0 \x6E\xC2 |0 \x6E\xC3 |0 \x6E\xC4 |0 \x6E\xC5 |0 \x6E\xC6 |0 \x6E\xC7 |0 \x6E\xC8 |0 \x6E\xC9 |0 \x6E\xCA |0 \x6E\xCB |0 \x6E\xCC |0 \x6E\xCD |0 \x6E\xCE |0 \x6E\xCF |0 \x6E\xD0 |0 \x6E\xD1 |0 \x6E\xD2 |0 \x6E\xD3 |0 \x6E\xD4 |0 \x6E\xD5 |0 \x6E\xD6 |0 \x6E\xD7 |0 \x6E\xD8 |0 \x6E\xD9 |0 \x6E\xDA |0 \x6E\xDB |0 \x6E\xDC |0 \x6E\xDD |0 \x6E\xDE |0 \x6E\xDF |0 \x6E\xE0 |0 \x6E\xE1 |0 \x6E\xE2 |0 \x6E\xE3 |0 \x6E\xE4 |0 \x6E\xE5 |0 \x6E\xE6 |0 \x6E\xE7 |0 \x6E\xE8 |0 \x6E\xE9 |0 \x6E\xEA |0 \x6E\xEB |0 \x6E\xEC |0 \x6E\xED |0 \x6E\xEE |0 \x6E\xEF |0 \x6E\xF0 |0 \x6E\xF1 |0 \x6E\xF2 |0 \x6E\xF3 |0 \x6E\xF4 |0 \x6E\xF5 |0 \x6E\xF6 |0 \x6E\xF7 |0 \x6E\xF8 |0 \x6E\xF9 |0 \x6E\xFA |0 \x6E\xFB |0 \x6E\xFC |0 \x6E\xFD |0 \x6E\xFE |0 \x6F\x41 |0 \x6F\x42 |0 \x6F\x43 |0 \x6F\x44 |0 \x6F\x45 |0 \x6F\x46 |0 \x6F\x47 |0 \x6F\x48 |0 \x6F\x49 |0 \x6F\x4A |0 \x6F\x4B |0 \x6F\x4C |0 \x6F\x4D |0 \x6F\x4E |0 \x6F\x4F |0 \x6F\x50 |0 \x6F\x51 |0 \x6F\x52 |0 \x6F\x53 |0 \x6F\x54 |0 \x6F\x55 |0 \x6F\x56 |0 \x6F\x57 |0 \x6F\x58 |0 \x6F\x59 |0 \x6F\x5A |0 \x6F\x5B |0 \x6F\x5C |0 \x6F\x5D |0 \x6F\x5E |0 \x6F\x5F |0 \x6F\x60 |0 \x6F\x61 |0 \x6F\x62 |0 \x6F\x63 |0 \x6F\x64 |0 \x6F\x65 |0 \x6F\x66 |0 \x6F\x67 |0 \x6F\x68 |0 \x6F\x69 |0 \x6F\x6A |0 \x6F\x6B |0 \x6F\x6C |0 \x6F\x6D |0 \x6F\x6E |0 \x6F\x6F |0 \x6F\x70 |0 \x6F\x71 |0 \x6F\x72 |0 \x6F\x73 |0 \x6F\x74 |0 \x44\x5A |0 \xCD\x44 |0 \xCD\x45 |0 \x44\x4A |0 \x44\x7C |0 \x44\x61 |0 \x44\x71 |0 \x44\x62 |0 \x44\x72 |0 \x44\x7E |0 \x44\x7F |0 \x45\x8B |0 \x44\xEE |0 \x44\xEF |0 \xCD\x46 |0 \x44\x6B |0 \xA1 |0 \x45\xEB |0 \x44\x4E |0 \xCD\x47 |0 \xCD\x48 |0 \x44\x6E |0 \x44\x6F |0 \x41\xF1 |0 \x41\xF2 |0 \x41\xF3 |0 \x41\xF4 |0 \x41\xF5 |0 \x41\xF6 |0 \x41\xF7 |0 \x41\xF8 |0 \x41\xF9 |0 \x41\xFA |0 \x41\xFB |0 \x41\xFC |0 \x41\xB1 |0 \x41\xB2 |0 \x41\xB3 |0 \x41\xB4 |0 \x41\xB5 |0 \x41\xB6 |0 \x41\xB7 |0 \x41\xB8 |0 \x41\xB9 |0 \x41\xBA |0 \x44\xF1 |0 \x44\xF2 |0 \x44\xF0 |0 \x44\xF3 |0 \xCD\x49 |0 \xCD\x4A |0 \xCD\x4B |0 \xCD\x4C |0 \x45\x69 |0 \x45\x66 |0 \x45\x65 |0 \xCD\x4D |0 \x45\x6B |0 \x45\x77 |0 \x44\x4D |0 \xCD\x4E |0 \x45\x6E |0 \xCD\x4F |0 \x45\x6D |0 \x45\x63 |0 \x45\x64 |0 \x45\x68 |0 \x45\x67 |0 \x45\x71 |0 \x45\x72 |0 \x44\x68 |0 \x44\x78 |0 \x45\x62 |0 \x45\x6A |0 \x45\x76 |0 \x45\x75 |0 \x45\x74 |0 \xCD\x50 |0 \x44\x4C |0 \x45\x73 |0 \x44\x67 |0 \x44\x77 |0 \xCD\x51 |0 \xCD\x52 |0 \x45\x79 |0 \x45\x7A |0 \xCD\x90 |0 \x45\x70 |0 \x45\x6C |0 \xCD\x53 |0 \x45\x6F |0 \x45\xE1 |0 \x45\xE2 |0 \x45\xE3 |0 \x45\xE4 |0 \x45\xE5 |0 \x45\xE6 |0 \x45\xE7 |0 \x45\xE8 |0 \x45\xE9 |0 \x45\xEA |0 \x45\xC5 |0 \x45\xC6 |0 \x45\xC7 |0 \x45\xC8 |0 \x45\xC9 |0 \x45\xCA |0 \x45\xCB |0 \x45\xCC |0 \x45\xCD |0 \x45\xCE |0 \x45\xCF |0 \x45\xD0 |0 \x45\xD1 |0 \x45\xD2 |0 \x45\xD3 |0 \x45\xD4 |0 \x45\xD5 |0 \x45\xD6 |0 \x45\xD7 |0 \x45\xD8 |0 \x45\xB1 |0 \x45\xB2 |0 \x45\xB3 |0 \x45\xB4 |0 \x45\xB5 |0 \x45\xB6 |0 \x45\xB7 |0 \x45\xB8 |0 \x45\xB9 |0 \x45\xBA |0 \x45\xBB |0 \x45\xBC |0 \x45\xBD |0 \x45\xBE |0 \x45\xBF |0 \x45\xC0 |0 \x45\xC1 |0 \x45\xC2 |0 \x45\xC3 |0 \x45\xC4 |0 \x46\xA4 |0 \x46\xA5 |0 \x46\xA6 |0 \x46\xA7 |0 \x46\xA8 |0 \x46\xA9 |0 \x46\xAA |0 \x46\xAB |0 \x46\xAC |0 \x46\xAD |0 \x46\xAE |0 \x46\xAF |0 \x46\xB0 |0 \x46\xB1 |0 \x46\xB2 |0 \x46\xB3 |0 \x46\xB4 |0 \x46\xB5 |0 \x46\xB6 |0 \x46\xB7 |0 \x46\xB8 |0 \x46\xB9 |0 \x46\xBA |0 \x46\xBB |0 \x46\xBC |0 \x46\xBD |0 \x46\xBE |0 \x46\xBF |0 \x46\xC0 |0 \x46\xC1 |0 \x46\xC2 |0 \x46\xC3 |0 \x46\xC4 |0 \x46\xC5 |0 \x46\xC6 |0 \x46\xC7 |0 \x46\xC8 |0 \x46\xC9 |0 \x46\xCA |0 \x46\xCB |0 \x46\xCC |0 \x46\xCD |0 \x46\xCE |0 \x46\xCF |0 \x46\xD0 |0 \x46\xD1 |0 \x46\xD2 |0 \x46\xD3 |0 \x46\xD4 |0 \x46\xD5 |0 \x46\xD6 |0 \x46\xD7 |0 \x46\xD8 |0 \x46\xD9 |0 \x46\xDA |0 \x46\xDB |0 \x46\xDC |0 \x46\xDD |0 \x46\xDE |0 \x46\xDF |0 \x46\xE0 |0 \x46\xE1 |0 \x46\xE2 |0 \x46\xE3 |0 \x46\xE4 |0 \x46\xE5 |0 \x46\xE6 |0 \x46\xE7 |0 \x46\xE8 |0 \x46\xE9 |0 \x46\xEA |0 \x46\xEB |0 \x46\xEC |0 \x46\xED |0 \x46\xEE |0 \x46\xEF |0 \xCD\x54 |0 \xCD\x55 |0 \xCD\x56 |0 \xCD\x57 |0 \xCD\x58 |0 \xCD\x59 |0 \xCD\x5A |0 \xCD\x5B |0 \xCD\x5C |0 \xCD\x5D |0 \xCD\x5E |0 \xCD\x5F |0 \xCD\x60 |0 \xCD\x61 |0 \xCD\x62 |0 \xCD\x63 |0 \xCD\x64 |0 \xCD\x65 |0 \xCD\x66 |0 \xCD\x67 |0 \xCD\x68 |0 \xCD\x69 |0 \xCD\x6A |0 \xCD\x6B |0 \xCD\x6C |0 \xCD\x6D |0 \xCD\x6E |0 \xCD\x6F |0 \xCD\x70 |0 \xCD\x71 |0 \xCD\x72 |0 \xCD\x73 |0 \xCD\x74 |0 \xCD\x75 |0 \xCD\x76 |0 \xCD\x77 |0 \xCD\x78 |0 \xCD\x79 |0 \xCD\x7A |0 \xCD\x7B |0 \xCD\x7C |0 \xCD\x7D |0 \xCD\x7E |0 \xCD\x7F |0 \xCD\x81 |0 \xCD\x82 |0 \xCD\x83 |0 \xCD\x84 |0 \xCD\x85 |0 \xCD\x86 |0 \xCD\x87 |0 \xCD\x88 |0 \xCD\x89 |0 \xCD\x8A |0 \x44\xEA |0 \x44\xE9 |0 \x44\xE3 |0 \x44\xE2 |0 \x44\xEC |0 \x44\xEB |0 \x44\xE8 |0 \x44\xE7 |0 \x44\xE0 |0 \x44\xE4 |0 \x44\xE1 |0 \xCD\x8B |0 \xCD\x8C |0 \xCD\x8D |0 \xCD\x8E |0 \x44\xE6 |0 \x44\xE5 |0 \xCD\x8F |0 \x44\x79 |0 \x44\x69 |0 \xCE\x56 |0 \xCE\x5A |0 \xCE\x5D |0 \xCE\x5E |0 \xCE\x63 |0 \xCE\x64 |0 \xCE\x71 |0 \xCE\x74 |0 \xCE\x77 |0 \xCE\x79 |0 \xCE\x7A |0 \xCE\x7B |0 \xCE\x7F |0 \xCE\x8A |0 \xCD\xCA |0 \xCD\xCB |0 \xCD\xCC |0 \xCD\xCD |0 \xCD\xCE |0 \xCD\xCF |0 \xCD\xD0 |0 \xCD\xD1 |0 \xCD\xD2 |0 \xCD\xD3 |0 \xCD\xD4 |0 \xCD\xD5 |0 \x40\x40 |0 \x43\x44 |0 \x43\x41 |0 \x44\x5B |0 \x44\x5D |0 \x44\x5E |0 \x44\x5F |0 \x44\x64 |0 \x44\x74 |0 \x44\x65 |0 \x44\x75 |0 \x43\x42 |0 \x43\x43 |0 \x44\x42 |0 \x44\x43 |0 \x44\x66 |0 \x44\x76 |0 \x44\x6C |0 \x44\x7D |0 \x44\x63 |0 \x44\x73 |0 \x45\x5B |0 \x45\x5C |0 \xCD\x91 |0 \xCD\x92 |0 \xCD\x93 |0 \xCD\x94 |0 \xCD\x95 |0 \xCD\x96 |0 \xCD\x97 |0 \xCD\x98 |0 \xCD\x99 |0 \xCD\x9A |0 \xCD\x9B |0 \xCD\xC9 |0 \x44\x47 |0 \x44\x81 |0 \x44\x48 |0 \x44\x82 |0 \x44\x49 |0 \x44\x83 |0 \x44\x51 |0 \x44\x84 |0 \x44\x52 |0 \x44\x85 |0 \x44\x86 |0 \x44\xC0 |0 \x44\x87 |0 \x44\xC1 |0 \x44\x88 |0 \x44\xC2 |0 \x44\x89 |0 \x44\xC3 |0 \x44\x8A |0 \x44\xC4 |0 \x44\x8C |0 \x44\xC5 |0 \x44\x8D |0 \x44\xC6 |0 \x44\x8E |0 \x44\xC7 |0 \x44\x8F |0 \x44\xC8 |0 \x44\x90 |0 \x44\xC9 |0 \x44\x91 |0 \x44\xCA |0 \x44\x92 |0 \x44\xCB |0 \x44\x56 |0 \x44\x93 |0 \x44\xCC |0 \x44\x94 |0 \x44\xCD |0 \x44\x95 |0 \x44\xCE |0 \x44\x96 |0 \x44\x97 |0 \x44\x98 |0 \x44\x99 |0 \x44\x9A |0 \x44\x9D |0 \x44\xCF |0 \x44\xD5 |0 \x44\x9E |0 \x44\xD0 |0 \x44\xD6 |0 \x44\x9F |0 \x44\xD1 |0 \x44\xD7 |0 \x44\xA2 |0 \x44\xD2 |0 \x44\xD8 |0 \x44\xA3 |0 \x44\xD3 |0 \x44\xD9 |0 \x44\xA4 |0 \x44\xA5 |0 \x44\xA6 |0 \x44\xA7 |0 \x44\xA8 |0 \x44\x53 |0 \x44\xA9 |0 \x44\x54 |0 \x44\xAA |0 \x44\x55 |0 \x44\xAC |0 \x44\xAD |0 \x44\xAE |0 \x44\xAF |0 \x44\xBA |0 \x44\xBB |0 \x44\x57 |0 \x44\xBC |0 \x44\xDA |0 \x44\xDB |0 \x44\x46 |0 \x44\xBD |0 \x43\xBE |0 \x43\xBF |0 \x44\xDC |0 \x44\xDD |0 \x43\x47 |0 \x43\x81 |0 \x43\x48 |0 \x43\x82 |0 \x43\x49 |0 \x43\x83 |0 \x43\x51 |0 \x43\x84 |0 \x43\x52 |0 \x43\x85 |0 \x43\x86 |0 \x43\xC0 |0 \x43\x87 |0 \x43\xC1 |0 \x43\x88 |0 \x43\xC2 |0 \x43\x89 |0 \x43\xC3 |0 \x43\x8A |0 \x43\xC4 |0 \x43\x8C |0 \x43\xC5 |0 \x43\x8D |0 \x43\xC6 |0 \x43\x8E |0 \x43\xC7 |0 \x43\x8F |0 \x43\xC8 |0 \x43\x90 |0 \x43\xC9 |0 \x43\x91 |0 \x43\xCA |0 \x43\x92 |0 \x43\xCB |0 \x43\x56 |0 \x43\x93 |0 \x43\xCC |0 \x43\x94 |0 \x43\xCD |0 \x43\x95 |0 \x43\xCE |0 \x43\x96 |0 \x43\x97 |0 \x43\x98 |0 \x43\x99 |0 \x43\x9A |0 \x43\x9D |0 \x43\xCF |0 \x43\xD5 |0 \x43\x9E |0 \x43\xD0 |0 \x43\xD6 |0 \x43\x9F |0 \x43\xD1 |0 \x43\xD7 |0 \x43\xA2 |0 \x43\xD2 |0 \x43\xD8 |0 \x43\xA3 |0 \x43\xD3 |0 \x43\xD9 |0 \x43\xA4 |0 \x43\xA5 |0 \x43\xA6 |0 \x43\xA7 |0 \x43\xA8 |0 \x43\x53 |0 \x43\xA9 |0 \x43\x54 |0 \x43\xAA |0 \x43\x55 |0 \x43\xAC |0 \x43\xAD |0 \x43\xAE |0 \x43\xAF |0 \x43\xBA |0 \x43\xBB |0 \x43\x57 |0 \x43\xBC |0 \x43\xDA |0 \x43\xDB |0 \x43\x46 |0 \x43\xBD |0 \x43\xD4 |0 \x43\x59 |0 \x43\x5A |0 \x43\x45 |1 \x43\x58 |0 \x43\xDC |0 \x43\xDD |0 \x46\x65 |0 \x46\x66 |0 \x46\x67 |0 \x46\x68 |0 \x46\x69 |0 \x46\x6A |0 \x46\x6B |0 \x46\x6C |0 \x46\x6D |0 \x46\x6E |0 \x46\x6F |0 \x46\x70 |0 \x46\x71 |0 \x46\x72 |0 \x46\x73 |0 \x46\x74 |0 \x46\x75 |0 \x46\x76 |0 \x46\x77 |0 \x46\x78 |0 \x46\x79 |0 \x46\x7A |0 \x46\x7B |0 \x46\x7C |0 \x46\x7D |0 \x46\x7E |0 \x46\x7F |0 \x46\x80 |0 \x46\x81 |0 \x46\x82 |0 \x46\x83 |0 \x46\x84 |0 \x46\x85 |0 \x46\x86 |0 \x46\x87 |0 \x46\x88 |0 \x46\x89 |0 \x45\xF1 |0 \x45\xF2 |0 \x45\xF3 |0 \x45\xF4 |0 \x45\xF5 |0 \x45\xF6 |0 \x45\xF7 |0 \x45\xF8 |0 \x45\xF9 |0 \x45\xFA |0 \x44\x6D |0 \xCD\x9C |0 \xCD\x9D |0 \xCD\x9E |0 \xCD\x9F |0 \xCD\xA0 |0 \xCD\xA1 |0 \xCD\xA2 |0 \xCD\xA3 |0 \xCD\xA4 |0 \xCD\xA5 |0 \xCD\xA6 |0 \xCD\xA7 |0 \xCF\x41 |0 \xCF\x42 |0 \xCF\x43 |0 \xCF\x44 |0 \xCF\x45 |0 \xCF\x46 |0 \xCF\x47 |0 \xCF\x48 |0 \xCF\x49 |0 \xCF\x4A |0 \xCF\x4B |0 \xCF\x4C |0 \xCF\x4D |0 \xCF\x4E |0 \xCF\x4F |0 \xCF\x50 |0 \xCF\x51 |0 \xCF\x52 |0 \xCF\x53 |0 \xCF\x54 |0 \xCF\x55 |0 \xCF\x56 |0 \xCF\x57 |0 \xCF\x58 |0 \xCF\x59 |0 \xCF\x5A |0 \xCF\x5B |0 \xCF\x5C |0 \xCF\x5D |0 \xCF\x5E |0 \xCF\x5F |0 \xCF\x60 |0 \xCF\x61 |0 \xCF\x62 |0 \xCF\x63 |0 \xCF\x64 |0 \xCF\x65 |0 \xCF\x66 |0 \xCF\x67 |0 \xCF\x68 |0 \xCF\x69 |0 \xCF\x6A |0 \xCF\x6B |0 \xCF\x6C |0 \xCF\x6D |0 \xCF\x6E |0 \xCF\x6F |0 \xCF\x70 |0 \xCF\x71 |0 \xCF\x72 |0 \xCF\x73 |0 \xCF\x74 |0 \xCF\x75 |0 \xCF\x76 |0 \xCF\x77 |0 \xCF\x78 |0 \xCF\x79 |0 \xCF\x7A |0 \xCF\x7B |0 \xCF\x7C |0 \xCF\x7D |0 \xCF\x7E |0 \xCF\x7F |0 \xCF\x80 |0 \xCF\x81 |0 \xCF\x82 |0 \xCF\x83 |0 \xCF\x84 |0 \xCF\x85 |0 \xCF\x86 |0 \xCF\x87 |0 \xCE\x5C |0 \xCF\x88 |0 \xCF\x89 |0 \xCF\x8A |0 \xCF\x8B |0 \xCF\x8C |0 \xCF\x8D |0 \xCF\x8E |0 \xCF\x8F |0 \xCF\x90 |0 \xCF\x91 |0 \xCF\x92 |0 \xCF\x93 |0 \xCF\x94 |0 \xCF\x95 |0 \xCF\x96 |0 \xCF\x97 |0 \xCF\x98 |0 \xCF\x99 |0 \xCF\x9A |0 \xCF\x9B |0 \xCF\x9C |0 \xCF\x9D |0 \xCF\x9E |0 \xCF\x9F |0 \xCF\xA0 |0 \xCF\xA1 |0 \xCF\xA2 |0 \xCF\xA3 |0 \xCF\xA4 |0 \xCF\xA5 |0 \xCF\xA6 |0 \xCF\xA7 |0 \xCF\xA8 |0 \xCF\xA9 |0 \xCF\xAA |0 \xCF\xAB |0 \xCF\xAC |0 \xCF\xAD |0 \xCF\xAE |0 \xCF\xAF |0 \xCF\xB0 |0 \xCF\xB1 |0 \xCF\xB2 |0 \xCE\x5B |0 \xCF\xB3 |0 \xCF\xB4 |0 \xCF\xB5 |0 \xCF\xB6 |0 \xCF\xB7 |0 \xCF\xB8 |0 \xCF\xB9 |0 \xCF\xBA |0 \xCF\xBB |0 \xCF\xBC |0 \xCF\xBD |0 \xCF\xBE |0 \xCF\xBF |0 \xCF\xC0 |0 \xCF\xC1 |0 \xCF\xC2 |0 \xCF\xC3 |0 \xCF\xC4 |0 \xCF\xC5 |0 \xCF\xC6 |0 \xCF\xC7 |0 \xCF\xC8 |0 \xCF\xC9 |0 \xCF\xCA |0 \xCF\xCB |0 \xCF\xCC |0 \xCF\xCD |0 \xCF\xCE |0 \xCF\xCF |0 \xCF\xD0 |0 \xCF\xD1 |0 \xCF\xD2 |0 \xCF\xD3 |0 \xCF\xD4 |0 \xCF\xD5 |0 \xCF\xD6 |0 \xCF\xD7 |0 \xCF\xD8 |0 \xCF\xD9 |0 \xCF\xDA |0 \xCF\xDB |0 \xCF\xDC |0 \xCF\xDD |0 \xCF\xDE |0 \xCF\xDF |0 \xCF\xE0 |0 \xCF\xE1 |0 \xCF\xE2 |0 \xCF\xE3 |0 \xCF\xE4 |0 \xCF\xE5 |0 \xCF\xE6 |0 \xCF\xE7 |0 \xCF\xE8 |0 \xCF\xE9 |0 \xCF\xEA |0 \xCF\xEB |0 \xCF\xEC |0 \xCF\xED |0 \xCF\xEE |0 \xCF\xEF |0 \xCF\xF0 |0 \xCF\xF1 |0 \xCF\xF2 |0 \xCF\xF3 |0 \xCF\xF4 |0 \xCF\xF5 |0 \xCF\xF6 |0 \xCF\xF7 |0 \xCF\xF8 |0 \xCF\xF9 |0 \xCF\xFA |0 \xCF\xFB |0 \xCF\xFC |0 \xCF\xFD |0 \xCF\xFE |0 \xD0\x41 |0 \xD0\x42 |0 \xD0\x43 |0 \xD0\x44 |0 \xD0\x45 |0 \xD0\x46 |0 \xD0\x47 |0 \xD0\x48 |0 \xD0\x49 |0 \xD0\x4A |0 \xD0\x4B |0 \xD0\x4C |0 \xD0\x4D |0 \xD0\x4E |0 \xD0\x4F |0 \xD0\x50 |0 \xD0\x51 |0 \xD0\x52 |0 \xD0\x53 |0 \xD0\x54 |0 \xD0\x55 |0 \xD0\x56 |0 \xD0\x57 |0 \xD0\x58 |0 \xD0\x59 |0 \xD0\x5A |0 \xD0\x5B |0 \xD0\x5C |0 \xD0\x5D |0 \xD0\x5E |0 \xD0\x5F |0 \xD0\x60 |0 \xD0\x61 |0 \xD0\x62 |0 \xD0\x63 |0 \xD0\x64 |0 \xD0\x65 |0 \xD0\x66 |0 \xD0\x67 |0 \xD0\x68 |0 \xD0\x69 |0 \xD0\x6A |0 \xD0\x6B |0 \xD0\x6C |0 \xD0\x6D |0 \xD0\x6E |0 \xD0\x6F |0 \xD0\x70 |0 \xD0\x71 |0 \xD0\x72 |0 \xD0\x73 |0 \xD0\x74 |0 \xD0\x75 |0 \xD0\x76 |0 \xD0\x77 |0 \xD0\x78 |0 \xD0\x79 |0 \xD0\x7A |0 \xD0\x7B |0 \xD0\x7C |0 \xD0\x7D |0 \xD0\x7E |0 \xD0\x7F |0 \xD0\x80 |0 \xD0\x81 |0 \xD0\x82 |0 \xD0\x83 |0 \xD0\x84 |0 \xD0\x85 |0 \xD0\x86 |0 \xD0\x87 |0 \xD0\x88 |0 \xD0\x89 |0 \xD0\x8A |0 \xD0\x8B |0 \xD0\x8C |0 \xD0\x8D |0 \xD0\x8E |0 \xD0\x8F |0 \xD0\x90 |0 \xD0\x91 |0 \xD0\x92 |0 \xD0\x93 |0 \xD0\x94 |0 \xD0\x95 |0 \xD0\x96 |0 \xD0\x97 |0 \xD0\x98 |0 \xD0\x99 |0 \xD0\x9A |0 \xD0\x9B |0 \xD0\x9C |0 \xD0\x9D |0 \xD0\x9E |0 \xD0\x9F |0 \xD0\xA0 |0 \xD0\xA1 |0 \xD0\xA2 |0 \xD0\xA3 |0 \xD0\xA4 |0 \xD0\xA5 |0 \xD0\xA6 |0 \xD0\xA7 |0 \xD0\xA8 |0 \xD0\xA9 |0 \xD0\xAA |0 \xD0\xAB |0 \xD0\xAC |0 \xD0\xAD |0 \xD0\xAE |0 \xD0\xAF |0 \xD0\xB0 |0 \xD0\xB1 |0 \xD0\xB2 |0 \xD0\xB3 |0 \xD0\xB4 |0 \xD0\xB5 |0 \xD0\xB6 |0 \xD0\xB7 |0 \xD0\xB8 |0 \xD0\xB9 |0 \xD0\xBA |0 \xD0\xBB |0 \xD0\xBC |0 \xD0\xBD |0 \xD0\xBE |0 \xD0\xBF |0 \xD0\xC0 |0 \xD0\xC1 |0 \xD0\xC2 |0 \xD0\xC3 |0 \xD0\xC4 |0 \xD0\xC5 |0 \xD0\xC6 |0 \xD0\xC7 |0 \xD0\xC8 |0 \xD0\xC9 |0 \xD0\xCA |0 \xD0\xCB |0 \xD0\xCC |0 \xD0\xCD |0 \xD0\xCE |0 \xD0\xCF |0 \xD0\xD0 |0 \xD0\xD1 |0 \xD0\xD2 |0 \xD0\xD3 |0 \xD0\xD4 |0 \xD0\xD5 |0 \xD0\xD6 |0 \xD0\xD7 |0 \xD0\xD8 |0 \xD0\xD9 |0 \xD0\xDA |0 \xD0\xDB |0 \xD0\xDC |0 \xD0\xDD |0 \xD0\xDE |0 \xD0\xDF |0 \xD0\xE0 |0 \xD0\xE1 |0 \xD0\xE2 |0 \xD0\xE3 |0 \xD0\xE4 |0 \xD0\xE5 |0 \xD0\xE6 |0 \xD0\xE7 |0 \xD0\xE8 |0 \xD0\xE9 |0 \xD0\xEA |0 \xD0\xEB |0 \xD0\xEC |0 \xD0\xED |0 \xD0\xEE |0 \xD0\xEF |0 \xD0\xF0 |0 \xD0\xF1 |0 \xD0\xF2 |0 \xD0\xF3 |0 \xD0\xF4 |0 \xD0\xF5 |0 \xD0\xF6 |0 \xD0\xF7 |0 \xD0\xF8 |0 \xD0\xF9 |0 \xD0\xFA |0 \xD0\xFB |0 \xD0\xFC |0 \xD0\xFD |0 \xD0\xFE |0 \xD1\x41 |0 \xD1\x42 |0 \xD1\x43 |0 \xD1\x44 |0 \xD1\x45 |0 \xD1\x46 |0 \xD1\x47 |0 \xD1\x48 |0 \xD1\x49 |0 \xD1\x4A |0 \xD1\x4B |0 \xD1\x4C |0 \xD1\x4D |0 \xD1\x4E |0 \xD1\x4F |0 \xD1\x50 |0 \xD1\x51 |0 \xD1\x52 |0 \xD1\x53 |0 \xD1\x54 |0 \xD1\x55 |0 \xD1\x56 |0 \xD1\x57 |0 \xD1\x58 |0 \xD1\x59 |0 \xD1\x5A |0 \xD1\x5B |0 \xD1\x5C |0 \xD1\x5D |0 \xD1\x5E |0 \xD1\x5F |0 \xD1\x60 |0 \xCE\x60 |0 \xD1\x61 |0 \xD1\x62 |0 \xD1\x63 |0 \xD1\x64 |0 \xD1\x65 |0 \xD1\x66 |0 \xD1\x67 |0 \xD1\x68 |0 \xD1\x69 |0 \xD1\x6A |0 \xD1\x6B |0 \xD1\x6C |0 \xD1\x6D |0 \xD1\x6E |0 \xD1\x6F |0 \xD1\x70 |0 \xD1\x71 |0 \xD1\x72 |0 \xD1\x73 |0 \xD1\x74 |0 \xD1\x75 |0 \xD1\x76 |0 \xD1\x77 |0 \xD1\x78 |0 \xD1\x79 |0 \xD1\x7A |0 \xD1\x7B |0 \xD1\x7C |0 \xD1\x7D |0 \xD1\x7E |0 \xD1\x7F |0 \xD1\x80 |0 \xD1\x81 |0 \xD1\x82 |0 \xD1\x83 |0 \xD1\x84 |0 \xD1\x85 |0 \xD1\x86 |0 \xD1\x87 |0 \xD1\x88 |0 \xD1\x89 |0 \xD1\x8A |0 \xD1\x8B |0 \xD1\x8C |0 \xD1\x8D |0 \xD1\x8E |0 \xD1\x8F |0 \xD1\x90 |0 \xD1\x91 |0 \xD1\x92 |0 \xD1\x93 |0 \xD1\x94 |0 \xD1\x95 |0 \xD1\x96 |0 \xD1\x97 |0 \xD1\x98 |0 \xD1\x99 |0 \xD1\x9A |0 \xD1\x9B |0 \xD1\x9C |0 \xD1\x9D |0 \xD1\x9E |0 \xD1\x9F |0 \xD1\xA0 |0 \xD1\xA1 |0 \xD1\xA2 |0 \xD1\xA3 |0 \xD1\xA4 |0 \xD1\xA5 |0 \xD1\xA6 |0 \xD1\xA7 |0 \xD1\xA8 |0 \xD1\xA9 |0 \xD1\xAA |0 \xD1\xAB |0 \xD1\xAC |0 \xD1\xAD |0 \xD1\xAE |0 \xD1\xAF |0 \xD1\xB0 |0 \xD1\xB1 |0 \xD1\xB2 |0 \xD1\xB3 |0 \xD1\xB4 |0 \xD1\xB5 |0 \xD1\xB6 |0 \xD1\xB7 |0 \xD1\xB8 |0 \xD1\xB9 |0 \xD1\xBA |0 \xD1\xBB |0 \xD1\xBC |0 \xD1\xBD |0 \xD1\xBE |0 \xD1\xBF |0 \xD1\xC0 |0 \xD1\xC1 |0 \xD1\xC2 |0 \xD1\xC3 |0 \xD1\xC4 |0 \xD1\xC5 |0 \xD1\xC6 |0 \xD1\xC7 |0 \xD1\xC8 |0 \xD1\xC9 |0 \xD1\xCA |0 \xD1\xCB |0 \xD1\xCC |0 \xD1\xCD |0 \xD1\xCE |0 \xD1\xCF |0 \xCE\x62 |0 \xD1\xD0 |0 \xD1\xD1 |0 \xD1\xD2 |0 \xD1\xD3 |0 \xD1\xD4 |0 \xD1\xD5 |0 \xD1\xD6 |0 \xD1\xD7 |0 \xD1\xD8 |0 \xD1\xD9 |0 \xD1\xDA |0 \xCE\x61 |0 \xD1\xDB |0 \xD1\xDC |0 \xD1\xDD |0 \xD1\xDE |0 \xD1\xDF |0 \xD1\xE0 |0 \xD1\xE1 |0 \xD1\xE2 |0 \xD1\xE3 |0 \xD1\xE4 |0 \xD1\xE5 |0 \xD1\xE6 |0 \xD1\xE7 |0 \xD1\xE8 |0 \xD1\xE9 |0 \xD1\xEA |0 \xD1\xEB |0 \xD1\xEC |0 \xD1\xED |0 \xD1\xEE |0 \xD1\xEF |0 \xD1\xF0 |0 \xD1\xF1 |0 \xD1\xF2 |0 \xD1\xF3 |0 \xD1\xF4 |0 \xD1\xF5 |0 \xD1\xF6 |0 \xD1\xF7 |0 \xD1\xF8 |0 \xD1\xF9 |0 \xD1\xFA |0 \xD1\xFB |0 \xD1\xFC |0 \xD1\xFD |0 \xD1\xFE |0 \xD2\x41 |0 \xD2\x42 |0 \xD2\x43 |0 \xD2\x44 |0 \xD2\x45 |0 \xD2\x46 |0 \xD2\x47 |0 \xD2\x48 |0 \xD2\x49 |0 \xD2\x4A |0 \xD2\x4B |0 \xD2\x4C |0 \xD2\x4D |0 \xD2\x4E |0 \xD2\x4F |0 \xD2\x50 |0 \xD2\x51 |0 \xD2\x52 |0 \xD2\x53 |0 \xD2\x54 |0 \xD2\x55 |0 \xD2\x56 |0 \xD2\x57 |0 \xD2\x58 |0 \xD2\x59 |0 \xD2\x5A |0 \xD2\x5B |0 \xD2\x5C |0 \xD2\x5D |0 \xD2\x5E |0 \xD2\x5F |0 \xD2\x60 |0 \xD2\x61 |0 \xD2\x62 |0 \xD2\x63 |0 \xD2\x64 |0 \xD2\x65 |0 \xD2\x66 |0 \xD2\x67 |0 \xD2\x68 |0 \xD2\x69 |0 \xD2\x6A |0 \xD2\x6B |0 \xD2\x6C |0 \xD2\x6D |0 \xD2\x6E |0 \xD2\x6F |0 \xD2\x70 |0 \xD2\x71 |0 \xD2\x72 |0 \xD2\x73 |0 \xD2\x74 |0 \xD2\x75 |0 \xD2\x76 |0 \xD2\x77 |0 \xD2\x78 |0 \xD2\x79 |0 \xD2\x7A |0 \xD2\x7B |0 \xD2\x7C |0 \xD2\x7D |0 \xD2\x7E |0 \xD2\x7F |0 \xD2\x80 |0 \xD2\x81 |0 \xD2\x82 |0 \xD2\x83 |0 \xD2\x84 |0 \xD2\x85 |0 \xD2\x86 |0 \xD2\x87 |0 \xD2\x88 |0 \xD2\x89 |0 \xD2\x8A |0 \xD2\x8B |0 \xD2\x8C |0 \xD2\x8D |0 \xD2\x8E |0 \xD2\x8F |0 \xD2\x90 |0 \xD2\x91 |0 \xD2\x92 |0 \xD2\x93 |0 \xD2\x94 |0 \xD2\x95 |0 \xD2\x96 |0 \xD2\x97 |0 \xD2\x98 |0 \xD2\x99 |0 \xD2\x9A |0 \xD2\x9B |0 \xD2\x9C |0 \xD2\x9D |0 \xD2\x9E |0 \xD2\x9F |0 \xD2\xA0 |0 \xD2\xA1 |0 \xD2\xA2 |0 \xD2\xA3 |0 \xD2\xA4 |0 \xD2\xA5 |0 \xD2\xA6 |0 \xD2\xA7 |0 \xD2\xA8 |0 \xD2\xA9 |0 \xD2\xAA |0 \xD2\xAB |0 \xD2\xAC |0 \xD2\xAD |0 \xD2\xAE |0 \xD2\xAF |0 \xD2\xB0 |0 \xD2\xB1 |0 \xD2\xB2 |0 \xD2\xB3 |0 \xD2\xB4 |0 \xD2\xB5 |0 \xD2\xB6 |0 \xD2\xB7 |0 \xD2\xB8 |0 \xD2\xB9 |0 \xD2\xBA |0 \xD2\xBB |0 \xD2\xBC |0 \xD2\xBD |0 \xD2\xBE |0 \xD2\xBF |0 \xD2\xC0 |0 \xD2\xC1 |0 \xD2\xC2 |0 \xD2\xC3 |0 \xD2\xC4 |0 \xD2\xC5 |0 \xD2\xC6 |0 \xD2\xC7 |0 \xD2\xC8 |0 \xD2\xC9 |0 \xD2\xCA |0 \xD2\xCB |0 \xD2\xCC |0 \xD2\xCD |0 \xD2\xCE |0 \xD2\xCF |0 \xD2\xD0 |0 \xD2\xD1 |0 \xD2\xD2 |0 \xD2\xD3 |0 \xD2\xD4 |0 \xD2\xD5 |0 \xD2\xD6 |0 \xD2\xD7 |0 \xD2\xD8 |0 \xD2\xD9 |0 \xD2\xDA |0 \xD2\xDB |0 \xD2\xDC |0 \xD2\xDD |0 \xD2\xDE |0 \xD2\xDF |0 \xD2\xE0 |0 \xD2\xE1 |0 \xD2\xE2 |0 \xD2\xE3 |0 \xD2\xE4 |0 \xD2\xE5 |0 \xD2\xE6 |0 \xD2\xE7 |0 \xD2\xE8 |0 \xD2\xE9 |0 \xD2\xEA |0 \xD2\xEB |0 \xD2\xEC |0 \xD2\xED |0 \xD2\xEE |0 \xD2\xEF |0 \xD2\xF0 |0 \xD2\xF1 |0 \xD2\xF2 |0 \xD2\xF3 |0 \xD2\xF4 |0 \xD2\xF5 |0 \xD2\xF6 |0 \xD2\xF7 |0 \xD2\xF8 |0 \xD2\xF9 |0 \xD2\xFA |0 \xD2\xFB |0 \xD2\xFC |0 \xD2\xFD |0 \xD2\xFE |0 \xD3\x41 |0 \xD3\x42 |0 \xD3\x43 |0 \xD3\x44 |0 \xD3\x45 |0 \xD3\x46 |0 \xD3\x47 |0 \xD3\x48 |0 \xD3\x49 |0 \xD3\x4A |0 \xD3\x4B |0 \xD3\x4C |0 \xD3\x4D |0 \xD3\x4E |0 \xD3\x4F |0 \xD3\x50 |0 \xD3\x51 |0 \xD3\x52 |0 \xD3\x53 |0 \xD3\x54 |0 \xD3\x55 |0 \xD3\x56 |0 \xD3\x57 |0 \xD3\x58 |0 \xD3\x59 |0 \xD3\x5A |0 \xD3\x5B |0 \xD3\x5C |0 \xD3\x5D |0 \xD3\x5E |0 \xD3\x5F |0 \xD3\x60 |0 \xD3\x61 |0 \xD3\x62 |0 \xD3\x63 |0 \xD3\x64 |0 \xD3\x65 |0 \xD3\x66 |0 \xD3\x67 |0 \xD3\x68 |0 \xD3\x69 |0 \xD3\x6A |0 \xD3\x6B |0 \xD3\x6C |0 \xD3\x6D |0 \xD3\x6E |0 \xD3\x6F |0 \xD3\x70 |0 \xD3\x71 |0 \xD3\x72 |0 \xD3\x73 |0 \xD3\x74 |0 \xD3\x75 |0 \xD3\x76 |0 \xD3\x77 |0 \xD3\x78 |0 \xD3\x79 |0 \xD3\x7A |0 \xD3\x7B |0 \xD3\x7C |0 \xD3\x7D |0 \xD3\x7E |0 \xD3\x7F |0 \xD3\x80 |0 \xD3\x81 |0 \xD3\x82 |0 \xD3\x83 |0 \xD3\x84 |0 \xD3\x85 |0 \xD3\x86 |0 \xD3\x87 |0 \xD3\x88 |0 \xD3\x89 |0 \xD3\x8A |0 \xD3\x8B |0 \xD3\x8C |0 \xD3\x8D |0 \xD3\x8E |0 \xD3\x8F |0 \xD3\x90 |0 \xD3\x91 |0 \xD3\x92 |0 \xD3\x93 |0 \xD3\x94 |0 \xD3\x95 |0 \xD3\x96 |0 \xD3\x97 |0 \xD3\x98 |0 \xD3\x99 |0 \xD3\x9A |0 \xD3\x9B |0 \xD3\x9C |0 \xD3\x9D |0 \xD3\x9E |0 \xD3\x9F |0 \xD3\xA0 |0 \xD3\xA1 |0 \xD3\xA2 |0 \xD3\xA3 |0 \xD3\xA4 |0 \xD3\xA5 |0 \xD3\xA6 |0 \xD3\xA7 |0 \xD3\xA8 |0 \xD3\xA9 |0 \xD3\xAA |0 \xD3\xAB |0 \xD3\xAC |0 \xD3\xAD |0 \xD3\xAE |0 \xD3\xAF |0 \xD3\xB0 |0 \xD3\xB1 |0 \xD3\xB2 |0 \xD3\xB3 |0 \xD3\xB4 |0 \xD3\xB5 |0 \xD3\xB6 |0 \xD3\xB7 |0 \xD3\xB8 |0 \xD3\xB9 |0 \xD3\xBA |0 \xD3\xBB |0 \xD3\xBC |0 \xD3\xBD |0 \xD3\xBE |0 \xD3\xBF |0 \xD3\xC0 |0 \xD3\xC1 |0 \xD3\xC2 |0 \xD3\xC3 |0 \xD3\xC4 |0 \xD3\xC5 |0 \xD3\xC6 |0 \xD3\xC7 |0 \xD3\xC8 |0 \xD3\xC9 |0 \xD3\xCA |0 \xD3\xCB |0 \xD3\xCC |0 \xD3\xCD |0 \xD3\xCE |0 \xD3\xCF |0 \xD3\xD0 |0 \xD3\xD1 |0 \xD3\xD2 |0 \xD3\xD3 |0 \xD3\xD4 |0 \xD3\xD5 |0 \xD3\xD6 |0 \xD3\xD7 |0 \xD3\xD8 |0 \xD3\xD9 |0 \xD3\xDA |0 \xD3\xDB |0 \xD3\xDC |0 \xD3\xDD |0 \xD3\xDE |0 \xD3\xDF |0 \xD3\xE0 |0 \xD3\xE1 |0 \xD3\xE2 |0 \xD3\xE3 |0 \xD3\xE4 |0 \xD3\xE5 |0 \xD3\xE6 |0 \xD3\xE7 |0 \xD3\xE8 |0 \xD3\xE9 |0 \xD3\xEA |0 \xD3\xEB |0 \xD3\xEC |0 \xD3\xED |0 \xD3\xEE |0 \xD3\xEF |0 \xD3\xF0 |0 \xD3\xF1 |0 \xD3\xF2 |0 \xD3\xF3 |0 \xD3\xF4 |0 \xD3\xF5 |0 \xD3\xF6 |0 \xD3\xF7 |0 \xD3\xF8 |0 \xD3\xF9 |0 \xD3\xFA |0 \xD3\xFB |0 \xD3\xFC |0 \xD3\xFD |0 \xD3\xFE |0 \xD4\x41 |0 \xD4\x42 |0 \xD4\x43 |0 \xD4\x44 |0 \xD4\x45 |0 \xD4\x46 |0 \xD4\x47 |0 \xD4\x48 |0 \xD4\x49 |0 \xD4\x4A |0 \xD4\x4B |0 \xD4\x4C |0 \xD4\x4D |0 \xD4\x4E |0 \xD4\x4F |0 \xD4\x50 |0 \xD4\x51 |0 \xD4\x52 |0 \xD4\x53 |0 \xD4\x54 |0 \xD4\x55 |0 \xD4\x56 |0 \xD4\x57 |0 \xD4\x58 |0 \xD4\x59 |0 \xD4\x5A |0 \xD4\x5B |0 \xD4\x5C |0 \xD4\x5D |0 \xD4\x5E |0 \xD4\x5F |0 \xD4\x60 |0 \xD4\x61 |0 \xD4\x62 |0 \xD4\x63 |0 \xD4\x64 |0 \xD4\x65 |0 \xD4\x66 |0 \xD4\x67 |0 \xD4\x68 |0 \xD4\x69 |0 \xD4\x6A |0 \xD4\x6B |0 \xD4\x6C |0 \xD4\x6D |0 \xD4\x6E |0 \xD4\x6F |0 \xD4\x70 |0 \xD4\x71 |0 \xD4\x72 |0 \xD4\x73 |0 \xD4\x74 |0 \xD4\x75 |0 \xD4\x76 |0 \xD4\x77 |0 \xD4\x78 |0 \xD4\x79 |0 \xD4\x7A |0 \xD4\x7B |0 \xD4\x7C |0 \xD4\x7D |0 \xD4\x7E |0 \xD4\x7F |0 \xD4\x80 |0 \xD4\x81 |0 \xD4\x82 |0 \xD4\x83 |0 \xD4\x84 |0 \xD4\x85 |0 \xD4\x86 |0 \xD4\x87 |0 \xD4\x88 |0 \xD4\x89 |0 \xD4\x8A |0 \xD4\x8B |0 \xD4\x8C |0 \xD4\x8D |0 \xD4\x8E |0 \xD4\x8F |0 \xD4\x90 |0 \xD4\x91 |0 \xD4\x92 |0 \xD4\x93 |0 \xD4\x94 |0 \xD4\x95 |0 \xD4\x96 |0 \xD4\x97 |0 \xD4\x98 |0 \xD4\x99 |0 \xD4\x9A |0 \xD4\x9B |0 \xD4\x9C |0 \xD4\x9D |0 \xD4\x9E |0 \xD4\x9F |0 \xD4\xA0 |0 \xD4\xA1 |0 \xD4\xA2 |0 \xD4\xA3 |0 \xD4\xA4 |0 \xD4\xA5 |0 \xD4\xA6 |0 \xD4\xA7 |0 \xD4\xA8 |0 \xD4\xA9 |0 \xD4\xAA |0 \xD4\xAB |0 \xD4\xAC |0 \xD4\xAD |0 \xD4\xAE |0 \xD4\xAF |0 \xD4\xB0 |0 \xD4\xB1 |0 \xD4\xB2 |0 \xD4\xB3 |0 \xD4\xB4 |0 \xD4\xB5 |0 \xD4\xB6 |0 \xD4\xB7 |0 \xD4\xB8 |0 \xD4\xB9 |0 \xD4\xBA |0 \xD4\xBB |0 \xD4\xBC |0 \xD4\xBD |0 \xD4\xBE |0 \xD4\xBF |0 \xD4\xC0 |0 \xD4\xC1 |0 \xD4\xC2 |0 \xD4\xC3 |0 \xD4\xC4 |0 \xD4\xC5 |0 \xD4\xC6 |0 \xD4\xC7 |0 \xD4\xC8 |0 \xD4\xC9 |0 \xD4\xCA |0 \xD4\xCB |0 \xD4\xCC |0 \xD4\xCD |0 \xD4\xCE |0 \xD4\xCF |0 \xD4\xD0 |0 \xD4\xD1 |0 \xD4\xD2 |0 \xD4\xD3 |0 \xD4\xD4 |0 \xD4\xD5 |0 \xD4\xD6 |0 \xD4\xD7 |0 \xD4\xD8 |0 \xD4\xD9 |0 \xD4\xDA |0 \xD4\xDB |0 \xD4\xDC |0 \xD4\xDD |0 \xD4\xDE |0 \xD4\xDF |0 \xD4\xE0 |0 \xD4\xE1 |0 \xD4\xE2 |0 \xD4\xE3 |0 \xD4\xE4 |0 \xD4\xE5 |0 \xD4\xE6 |0 \xD4\xE7 |0 \xD4\xE8 |0 \xD4\xE9 |0 \xD4\xEA |0 \xD4\xEB |0 \xD4\xEC |0 \xD4\xED |0 \xD4\xEE |0 \xD4\xEF |0 \xD4\xF0 |0 \xD4\xF1 |0 \xD4\xF2 |0 \xD4\xF3 |0 \xD4\xF4 |0 \xD4\xF5 |0 \xD4\xF6 |0 \xD4\xF7 |0 \xD4\xF8 |0 \xD4\xF9 |0 \xD4\xFA |0 \xD4\xFB |0 \xD4\xFC |0 \xD4\xFD |0 \xD4\xFE |0 \xD5\x41 |0 \xD5\x42 |0 \xD5\x43 |0 \xD5\x44 |0 \xD5\x45 |0 \xD5\x46 |0 \xD5\x47 |0 \xD5\x48 |0 \xD5\x49 |0 \xD5\x4A |0 \xD5\x4B |0 \xD5\x4C |0 \xD5\x4D |0 \xD5\x4E |0 \xD5\x4F |0 \xD5\x50 |0 \xD5\x51 |0 \xD5\x52 |0 \xD5\x53 |0 \xD5\x54 |0 \xD5\x55 |0 \xD5\x56 |0 \xD5\x57 |0 \xD5\x58 |0 \xD5\x59 |0 \xD5\x5A |0 \xD5\x5B |0 \xD5\x5C |0 \xD5\x5D |0 \xD5\x5E |0 \xD5\x5F |0 \xD5\x60 |0 \xD5\x61 |0 \xD5\x62 |0 \xD5\x63 |0 \xD5\x64 |0 \xD5\x65 |0 \xD5\x66 |0 \xD5\x67 |0 \xD5\x68 |0 \xD5\x69 |0 \xD5\x6A |0 \xD5\x6B |0 \xD5\x6C |0 \xD5\x6D |0 \xD5\x6E |0 \xD5\x6F |0 \xD5\x70 |0 \xD5\x71 |0 \xD5\x72 |0 \xD5\x73 |0 \xD5\x74 |0 \xD5\x75 |0 \xD5\x76 |0 \xD5\x77 |0 \xD5\x78 |0 \xD5\x79 |0 \xD5\x7A |0 \xD5\x7B |0 \xD5\x7C |0 \xD5\x7D |0 \xD5\x7E |0 \xD5\x7F |0 \xD5\x80 |0 \xD5\x81 |0 \xD5\x82 |0 \xD5\x83 |0 \xD5\x84 |0 \xD5\x85 |0 \xD5\x86 |0 \xD5\x87 |0 \xD5\x88 |0 \xD5\x89 |0 \xD5\x8A |0 \xD5\x8B |0 \xD5\x8C |0 \xD5\x8D |0 \xD5\x8E |0 \xD5\x8F |0 \xD5\x90 |0 \xD5\x91 |0 \xD5\x92 |0 \xD5\x93 |0 \xD5\x94 |0 \xD5\x95 |0 \xD5\x96 |0 \xD5\x97 |0 \xD5\x98 |0 \xD5\x99 |0 \xD5\x9A |0 \xD5\x9B |0 \xD5\x9C |0 \xD5\x9D |0 \xD5\x9E |0 \xD5\x9F |0 \xD5\xA0 |0 \xD5\xA1 |0 \xD5\xA2 |0 \xD5\xA3 |0 \xD5\xA4 |0 \xD5\xA5 |0 \xD5\xA6 |0 \xD5\xA7 |0 \xD5\xA8 |0 \xD5\xA9 |0 \xD5\xAA |0 \xD5\xAB |0 \xD5\xAC |0 \xD5\xAD |0 \xD5\xAE |0 \xD5\xAF |0 \xD5\xB0 |0 \xD5\xB1 |0 \xD5\xB2 |0 \xD5\xB3 |0 \xD5\xB4 |0 \xD5\xB5 |0 \xD5\xB6 |0 \xD5\xB7 |0 \xD5\xB8 |0 \xD5\xB9 |0 \xD5\xBA |0 \xD5\xBB |0 \xD5\xBC |0 \xD5\xBD |0 \xD5\xBE |0 \xD5\xBF |0 \xD5\xC0 |0 \xD5\xC1 |0 \xD5\xC2 |0 \xD5\xC3 |0 \xD5\xC4 |0 \xD5\xC5 |0 \xD5\xC6 |0 \xD5\xC7 |0 \xD5\xC8 |0 \xD5\xC9 |0 \xD5\xCA |0 \xD5\xCB |0 \xD5\xCC |0 \xD5\xCD |0 \xD5\xCE |0 \xD5\xCF |0 \xD5\xD0 |0 \xD5\xD1 |0 \xD5\xD2 |0 \xD5\xD3 |0 \xD5\xD4 |0 \xD5\xD5 |0 \xD5\xD6 |0 \xD5\xD7 |0 \xD5\xD8 |0 \xD5\xD9 |0 \xD5\xDA |0 \xD5\xDB |0 \xD5\xDC |0 \xD5\xDD |0 \xD5\xDE |0 \xD5\xDF |0 \xCE\x66 |0 \xD5\xE0 |0 \xD5\xE1 |0 \xD5\xE2 |0 \xD5\xE3 |0 \xD5\xE4 |0 \xD5\xE5 |0 \xD5\xE6 |0 \xD5\xE7 |0 \xD5\xE8 |0 \xD5\xE9 |0 \xD5\xEA |0 \xD5\xEB |0 \xD5\xEC |0 \xD5\xED |0 \xD5\xEE |0 \xD5\xEF |0 \xD5\xF0 |0 \xD5\xF1 |0 \xD5\xF2 |0 \xD5\xF3 |0 \xD5\xF4 |0 \xD5\xF5 |0 \xD5\xF6 |0 \xD5\xF7 |0 \xD5\xF8 |0 \xD5\xF9 |0 \xD5\xFA |0 \xD5\xFB |0 \xD5\xFC |0 \xD5\xFD |0 \xD5\xFE |0 \xD6\x41 |0 \xD6\x42 |0 \xD6\x43 |0 \xD6\x44 |0 \xD6\x45 |0 \xD6\x46 |0 \xD6\x47 |0 \xD6\x48 |0 \xD6\x49 |0 \xD6\x4A |0 \xD6\x4B |0 \xD6\x4C |0 \xD6\x4D |0 \xD6\x4E |0 \xD6\x4F |0 \xD6\x50 |0 \xD6\x51 |0 \xD6\x52 |0 \xD6\x53 |0 \xD6\x54 |0 \xD6\x55 |0 \xD6\x56 |0 \xD6\x57 |0 \xD6\x58 |0 \xD6\x59 |0 \xD6\x5A |0 \xD6\x5B |0 \xD6\x5C |0 \xD6\x5D |0 \xD6\x5E |0 \xD6\x5F |0 \xD6\x60 |0 \xD6\x61 |0 \xD6\x62 |0 \xD6\x63 |0 \xD6\x64 |0 \xD6\x65 |0 \xD6\x66 |0 \xD6\x67 |0 \xD6\x68 |0 \xD6\x69 |0 \xD6\x6A |0 \xD6\x6B |0 \xD6\x6C |0 \xD6\x6D |0 \xD6\x6E |0 \xD6\x6F |0 \xD6\x70 |0 \xD6\x71 |0 \xD6\x72 |0 \xD6\x73 |0 \xD6\x74 |0 \xD6\x75 |0 \xD6\x76 |0 \xCE\x65 |0 \xD6\x77 |0 \xD6\x78 |0 \xD6\x79 |0 \xD6\x7A |0 \xD6\x7B |0 \xD6\x7C |0 \xD6\x7D |0 \xD6\x7E |0 \xD6\x7F |0 \xD6\x80 |0 \xD6\x81 |0 \xD6\x82 |0 \xD6\x83 |0 \xD6\x84 |0 \xD6\x85 |0 \xD6\x86 |0 \xD6\x87 |0 \xD6\x88 |0 \xD6\x89 |0 \xD6\x8A |0 \xD6\x8B |0 \xD6\x8C |0 \xD6\x8D |0 \xD6\x8E |0 \xD6\x8F |0 \xD6\x90 |0 \xD6\x91 |0 \xD6\x92 |0 \xD6\x93 |0 \xD6\x94 |0 \xD6\x95 |0 \xD6\x96 |0 \xD6\x97 |0 \xD6\x98 |0 \xD6\x99 |0 \xD6\x9A |0 \xD6\x9B |0 \xD6\x9C |0 \xD6\x9D |0 \xD6\x9E |0 \xD6\x9F |0 \xD6\xA0 |0 \xD6\xA1 |0 \xD6\xA2 |0 \xD6\xA3 |0 \xD6\xA4 |0 \xD6\xA5 |0 \xD6\xA6 |0 \xD6\xA7 |0 \xD6\xA8 |0 \xD6\xA9 |0 \xD6\xAA |0 \xD6\xAB |0 \xD6\xAC |0 \xD6\xAD |0 \xD6\xAE |0 \xD6\xAF |0 \xD6\xB0 |0 \xD6\xB1 |0 \xD6\xB2 |0 \xD6\xB3 |0 \xD6\xB4 |0 \xD6\xB5 |0 \xD6\xB6 |0 \xD6\xB7 |0 \xD6\xB8 |0 \xD6\xB9 |0 \xD6\xBA |0 \xD6\xBB |0 \xD6\xBC |0 \xD6\xBD |0 \xD6\xBE |0 \xD6\xBF |0 \xD6\xC0 |0 \xD6\xC1 |0 \xD6\xC2 |0 \xD6\xC3 |0 \xD6\xC4 |0 \xD6\xC5 |0 \xD6\xC6 |0 \xD6\xC7 |0 \xD6\xC8 |0 \xD6\xC9 |0 \xD6\xCA |0 \xD6\xCB |0 \xD6\xCC |0 \xD6\xCD |0 \xD6\xCE |0 \xD6\xCF |0 \xD6\xD0 |0 \xD6\xD1 |0 \xD6\xD2 |0 \xD6\xD3 |0 \xD6\xD4 |0 \xD6\xD5 |0 \xD6\xD6 |0 \xCE\x68 |0 \xCE\x6B |0 \xD6\xD7 |0 \xD6\xD8 |0 \xD6\xD9 |0 \xD6\xDA |0 \xD6\xDB |0 \xD6\xDC |0 \xD6\xDD |0 \xD6\xDE |0 \xD6\xDF |0 \xD6\xE0 |0 \xD6\xE1 |0 \xD6\xE2 |0 \xD6\xE3 |0 \xD6\xE4 |0 \xCE\x69 |0 \xD6\xE5 |0 \xD6\xE6 |0 \xD6\xE7 |0 \xD6\xE8 |0 \xD6\xE9 |0 \xD6\xEA |0 \xD6\xEB |0 \xD6\xEC |0 \xD6\xED |0 \xD6\xEE |0 \xD6\xEF |0 \xD6\xF0 |0 \xD6\xF1 |0 \xD6\xF2 |0 \xD6\xF3 |0 \xD6\xF4 |0 \xD6\xF5 |0 \xD6\xF6 |0 \xD6\xF7 |0 \xD6\xF8 |0 \xD6\xF9 |0 \xD6\xFA |0 \xD6\xFB |0 \xD6\xFC |0 \xD6\xFD |0 \xD6\xFE |0 \xD7\x41 |0 \xD7\x42 |0 \xD7\x43 |0 \xD7\x44 |0 \xD7\x45 |0 \xD7\x46 |0 \xD7\x47 |0 \xD7\x48 |0 \xD7\x49 |0 \xD7\x4A |0 \xD7\x4B |0 \xD7\x4C |0 \xD7\x4D |0 \xD7\x4E |0 \xD7\x4F |0 \xD7\x50 |0 \xD7\x51 |0 \xD7\x52 |0 \xD7\x53 |0 \xD7\x54 |0 \xD7\x55 |0 \xD7\x56 |0 \xD7\x57 |0 \xD7\x58 |0 \xD7\x59 |0 \xD7\x5A |0 \xD7\x5B |0 \xD7\x5C |0 \xD7\x5D |0 \xD7\x5E |0 \xD7\x5F |0 \xD7\x60 |0 \xD7\x61 |0 \xD7\x62 |0 \xD7\x63 |0 \xD7\x64 |0 \xD7\x65 |0 \xD7\x66 |0 \xD7\x67 |0 \xD7\x68 |0 \xD7\x69 |0 \xD7\x6A |0 \xD7\x6B |0 \xD7\x6C |0 \xD7\x6D |0 \xD7\x6E |0 \xD7\x6F |0 \xD7\x70 |0 \xD7\x71 |0 \xD7\x72 |0 \xD7\x73 |0 \xD7\x74 |0 \xD7\x75 |0 \xD7\x76 |0 \xD7\x77 |0 \xD7\x78 |0 \xD7\x79 |0 \xD7\x7A |0 \xD7\x7B |0 \xD7\x7C |0 \xD7\x7D |0 \xD7\x7E |0 \xD7\x7F |0 \xD7\x80 |0 \xD7\x81 |0 \xD7\x82 |0 \xD7\x83 |0 \xD7\x84 |0 \xD7\x85 |0 \xD7\x86 |0 \xD7\x87 |0 \xD7\x88 |0 \xD7\x89 |0 \xD7\x8A |0 \xD7\x8B |0 \xD7\x8C |0 \xD7\x8D |0 \xD7\x8E |0 \xD7\x8F |0 \xD7\x90 |0 \xD7\x91 |0 \xD7\x92 |0 \xD7\x93 |0 \xD7\x94 |0 \xD7\x95 |0 \xD7\x96 |0 \xD7\x97 |0 \xD7\x98 |0 \xD7\x99 |0 \xD7\x9A |0 \xD7\x9B |0 \xD7\x9C |0 \xD7\x9D |0 \xD7\x9E |0 \xD7\x9F |0 \xD7\xA0 |0 \xD7\xA1 |0 \xD7\xA2 |0 \xD7\xA3 |0 \xD7\xA4 |0 \xD7\xA5 |0 \xD7\xA6 |0 \xD7\xA7 |0 \xD7\xA8 |0 \xD7\xA9 |0 \xD7\xAA |0 \xD7\xAB |0 \xD7\xAC |0 \xD7\xAD |0 \xD7\xAE |0 \xD7\xAF |0 \xD7\xB0 |0 \xD7\xB1 |0 \xD7\xB2 |0 \xD7\xB3 |0 \xD7\xB4 |0 \xD7\xB5 |0 \xD7\xB6 |0 \xD7\xB7 |0 \xD7\xB8 |0 \xD7\xB9 |0 \xCE\x6A |0 \xD7\xBA |0 \xD7\xBB |0 \xD7\xBC |0 \xD7\xBD |0 \xD7\xBE |0 \xD7\xBF |0 \xD7\xC0 |0 \xD7\xC1 |0 \xD7\xC2 |0 \xD7\xC3 |0 \xD7\xC4 |0 \xD7\xC5 |0 \xD7\xC6 |0 \xD7\xC7 |0 \xD7\xC8 |0 \xD7\xC9 |0 \xD7\xCA |0 \xD7\xCB |0 \xD7\xCC |0 \xD7\xCD |0 \xD7\xCE |0 \xD7\xCF |0 \xD7\xD0 |0 \xD7\xD1 |0 \xD7\xD2 |0 \xD7\xD3 |0 \xD7\xD4 |0 \xD7\xD5 |0 \xD7\xD6 |0 \xD7\xD7 |0 \xD7\xD8 |0 \xD7\xD9 |0 \xD7\xDA |0 \xD7\xDB |0 \xD7\xDC |0 \xD7\xDD |0 \xD7\xDE |0 \xD7\xDF |0 \xD7\xE0 |0 \xD7\xE1 |0 \xD7\xE2 |0 \xD7\xE3 |0 \xD7\xE4 |0 \xD7\xE5 |0 \xD7\xE6 |0 \xD7\xE7 |0 \xD7\xE8 |0 \xD7\xE9 |0 \xD7\xEA |0 \xD7\xEB |0 \xD7\xEC |0 \xD7\xED |0 \xD7\xEE |0 \xD7\xEF |0 \xD7\xF0 |0 \xD7\xF1 |0 \xD7\xF2 |0 \xD7\xF3 |0 \xD7\xF4 |0 \xD7\xF5 |0 \xD7\xF6 |0 \xD7\xF7 |0 \xD7\xF8 |0 \xD7\xF9 |0 \xD7\xFA |0 \xD7\xFB |0 \xD7\xFC |0 \xD7\xFD |0 \xD7\xFE |0 \xD8\x41 |0 \xD8\x42 |0 \xD8\x43 |0 \xD8\x44 |0 \xD8\x45 |0 \xD8\x46 |0 \xD8\x47 |0 \xD8\x48 |0 \xD8\x49 |0 \xD8\x4A |0 \xD8\x4B |0 \xD8\x4C |0 \xD8\x4D |0 \xD8\x4E |0 \xD8\x4F |0 \xD8\x50 |0 \xD8\x51 |0 \xD8\x52 |0 \xD8\x53 |0 \xD8\x54 |0 \xD8\x55 |0 \xD8\x56 |0 \xD8\x57 |0 \xD8\x58 |0 \xD8\x59 |0 \xD8\x5A |0 \xD8\x5B |0 \xD8\x5C |0 \xD8\x5D |0 \xD8\x5E |0 \xD8\x5F |0 \xD8\x60 |0 \xD8\x61 |0 \xD8\x62 |0 \xD8\x63 |0 \xD8\x64 |0 \xD8\x65 |0 \xD8\x66 |0 \xD8\x67 |0 \xD8\x68 |0 \xD8\x69 |0 \xD8\x6A |0 \xD8\x6B |0 \xD8\x6C |0 \xD8\x6D |0 \xD8\x6E |0 \xD8\x6F |0 \xD8\x70 |0 \xD8\x71 |0 \xD8\x72 |0 \xD8\x73 |0 \xD8\x74 |0 \xD8\x75 |0 \xD8\x76 |0 \xD8\x77 |0 \xD8\x78 |0 \xD8\x79 |0 \xD8\x7A |0 \xD8\x7B |0 \xD8\x7C |0 \xD8\x7D |0 \xD8\x7E |0 \xD8\x7F |0 \xD8\x80 |0 \xD8\x81 |0 \xD8\x82 |0 \xD8\x83 |0 \xD8\x84 |0 \xD8\x85 |0 \xD8\x86 |0 \xD8\x87 |0 \xD8\x88 |0 \xD8\x89 |0 \xD8\x8A |0 \xD8\x8B |0 \xD8\x8C |0 \xD8\x8D |0 \xD8\x8E |0 \xD8\x8F |0 \xD8\x90 |0 \xD8\x91 |0 \xD8\x92 |0 \xD8\x93 |0 \xD8\x94 |0 \xD8\x95 |0 \xD8\x96 |0 \xD8\x97 |0 \xD8\x98 |0 \xD8\x99 |0 \xD8\x9A |0 \xD8\x9B |0 \xD8\x9C |0 \xD8\x9D |0 \xD8\x9E |0 \xD8\x9F |0 \xD8\xA0 |0 \xD8\xA1 |0 \xD8\xA2 |0 \xD8\xA3 |0 \xD8\xA4 |0 \xD8\xA5 |0 \xD8\xA6 |0 \xD8\xA7 |0 \xD8\xA8 |0 \xD8\xA9 |0 \xD8\xAA |0 \xD8\xAB |0 \xD8\xAC |0 \xD8\xAD |0 \xD8\xAE |0 \xD8\xAF |0 \xD8\xB0 |0 \xD8\xB1 |0 \xD8\xB2 |0 \xD8\xB3 |0 \xD8\xB4 |0 \xD8\xB5 |0 \xD8\xB6 |0 \xD8\xB7 |0 \xD8\xB8 |0 \xD8\xB9 |0 \xD8\xBA |0 \xD8\xBB |0 \xD8\xBC |0 \xD8\xBD |0 \xD8\xBE |0 \xD8\xBF |0 \xD8\xC0 |0 \xD8\xC1 |0 \xD8\xC2 |0 \xD8\xC3 |0 \xD8\xC4 |0 \xD8\xC5 |0 \xD8\xC6 |0 \xD8\xC7 |0 \xD8\xC8 |0 \xD8\xC9 |0 \xD8\xCA |0 \xD8\xCB |0 \xD8\xCC |0 \xD8\xCD |0 \xD8\xCE |0 \xD8\xCF |0 \xD8\xD0 |0 \xD8\xD1 |0 \xD8\xD2 |0 \xD8\xD3 |0 \xD8\xD4 |0 \xD8\xD5 |0 \xCE\x6E |0 \xD8\xD6 |0 \xD8\xD7 |0 \xD8\xD8 |0 \xD8\xD9 |0 \xD8\xDA |0 \xD8\xDB |0 \xD8\xDC |0 \xD8\xDD |0 \xD8\xDE |0 \xD8\xDF |0 \xD8\xE0 |0 \xD8\xE1 |0 \xD8\xE2 |0 \xD8\xE3 |0 \xD8\xE4 |0 \xD8\xE5 |0 \xD8\xE6 |0 \xD8\xE7 |0 \xD8\xE8 |0 \xD8\xE9 |0 \xD8\xEA |0 \xD8\xEB |0 \xD8\xEC |0 \xD8\xED |0 \xD8\xEE |0 \xD8\xEF |0 \xD8\xF0 |0 \xD8\xF1 |0 \xD8\xF2 |0 \xD8\xF3 |0 \xD8\xF4 |0 \xD8\xF5 |0 \xD8\xF6 |0 \xD8\xF7 |0 \xD8\xF8 |0 \xD8\xF9 |0 \xD8\xFA |0 \xD8\xFB |0 \xD8\xFC |0 \xD8\xFD |0 \xD8\xFE |0 \xD9\x41 |0 \xD9\x42 |0 \xD9\x43 |0 \xD9\x44 |0 \xD9\x45 |0 \xD9\x46 |0 \xD9\x47 |0 \xD9\x48 |0 \xD9\x49 |0 \xD9\x4A |0 \xD9\x4B |0 \xD9\x4C |0 \xD9\x4D |0 \xD9\x4E |0 \xD9\x4F |0 \xD9\x50 |0 \xD9\x51 |0 \xD9\x52 |0 \xD9\x53 |0 \xD9\x54 |0 \xD9\x55 |0 \xD9\x56 |0 \xD9\x57 |0 \xD9\x58 |0 \xD9\x59 |0 \xD9\x5A |0 \xD9\x5B |0 \xD9\x5C |0 \xD9\x5D |0 \xD9\x5E |0 \xD9\x5F |0 \xD9\x60 |0 \xD9\x61 |0 \xD9\x62 |0 \xD9\x63 |0 \xD9\x64 |0 \xD9\x65 |0 \xD9\x66 |0 \xD9\x67 |0 \xD9\x68 |0 \xD9\x69 |0 \xD9\x6A |0 \xD9\x6B |0 \xD9\x6C |0 \xD9\x6D |0 \xD9\x6E |0 \xD9\x6F |0 \xD9\x70 |0 \xD9\x71 |0 \xD9\x72 |0 \xD9\x73 |0 \xD9\x74 |0 \xD9\x75 |0 \xD9\x76 |0 \xD9\x77 |0 \xD9\x78 |0 \xD9\x79 |0 \xD9\x7A |0 \xD9\x7B |0 \xD9\x7C |0 \xD9\x7D |0 \xD9\x7E |0 \xD9\x7F |0 \xD9\x80 |0 \xD9\x81 |0 \xD9\x82 |0 \xD9\x83 |0 \xD9\x84 |0 \xD9\x85 |0 \xD9\x86 |0 \xD9\x87 |0 \xD9\x88 |0 \xD9\x89 |0 \xD9\x8A |0 \xD9\x8B |0 \xD9\x8C |0 \xD9\x8D |0 \xD9\x8E |0 \xD9\x8F |0 \xD9\x90 |0 \xD9\x91 |0 \xD9\x92 |0 \xD9\x93 |0 \xD9\x94 |0 \xD9\x95 |0 \xD9\x96 |0 \xD9\x97 |0 \xD9\x98 |0 \xD9\x99 |0 \xD9\x9A |0 \xD9\x9B |0 \xD9\x9C |0 \xD9\x9D |0 \xD9\x9E |0 \xD9\x9F |0 \xD9\xA0 |0 \xD9\xA1 |0 \xD9\xA2 |0 \xD9\xA3 |0 \xD9\xA4 |0 \xD9\xA5 |0 \xD9\xA6 |0 \xD9\xA7 |0 \xD9\xA8 |0 \xD9\xA9 |0 \xD9\xAA |0 \xD9\xAB |0 \xD9\xAC |0 \xD9\xAD |0 \xD9\xAE |0 \xD9\xAF |0 \xD9\xB0 |0 \xD9\xB1 |0 \xD9\xB2 |0 \xD9\xB3 |0 \xD9\xB4 |0 \xD9\xB5 |0 \xD9\xB6 |0 \xD9\xB7 |0 \xD9\xB8 |0 \xD9\xB9 |0 \xD9\xBA |0 \xD9\xBB |0 \xD9\xBC |0 \xD9\xBD |0 \xD9\xBE |0 \xD9\xBF |0 \xD9\xC0 |0 \xD9\xC1 |0 \xD9\xC2 |0 \xD9\xC3 |0 \xD9\xC4 |0 \xD9\xC5 |0 \xD9\xC6 |0 \xD9\xC7 |0 \xD9\xC8 |0 \xD9\xC9 |0 \xD9\xCA |0 \xD9\xCB |0 \xD9\xCC |0 \xD9\xCD |0 \xD9\xCE |0 \xD9\xCF |0 \xD9\xD0 |0 \xD9\xD1 |0 \xD9\xD2 |0 \xD9\xD3 |0 \xD9\xD4 |0 \xD9\xD5 |0 \xD9\xD6 |0 \xD9\xD7 |0 \xD9\xD8 |0 \xD9\xD9 |0 \xD9\xDA |0 \xD9\xDB |0 \xD9\xDC |0 \xD9\xDD |0 \xD9\xDE |0 \xD9\xDF |0 \xD9\xE0 |0 \xD9\xE1 |0 \xD9\xE2 |0 \xD9\xE3 |0 \xD9\xE4 |0 \xD9\xE5 |0 \xD9\xE6 |0 \xD9\xE7 |0 \xD9\xE8 |0 \xD9\xE9 |0 \xD9\xEA |0 \xD9\xEB |0 \xD9\xEC |0 \xD9\xED |0 \xD9\xEE |0 \xD9\xEF |0 \xD9\xF0 |0 \xD9\xF1 |0 \xD9\xF2 |0 \xD9\xF3 |0 \xD9\xF4 |0 \xD9\xF5 |0 \xD9\xF6 |0 \xD9\xF7 |0 \xD9\xF8 |0 \xD9\xF9 |0 \xD9\xFA |0 \xD9\xFB |0 \xD9\xFC |0 \xD9\xFD |0 \xD9\xFE |0 \xDA\x41 |0 \xDA\x42 |0 \xDA\x43 |0 \xDA\x44 |0 \xDA\x45 |0 \xDA\x46 |0 \xDA\x47 |0 \xDA\x48 |0 \xDA\x49 |0 \xDA\x4A |0 \xDA\x4B |0 \xDA\x4C |0 \xDA\x4D |0 \xDA\x4E |0 \xDA\x4F |0 \xDA\x50 |0 \xDA\x51 |0 \xDA\x52 |0 \xDA\x53 |0 \xDA\x54 |0 \xDA\x55 |0 \xDA\x56 |0 \xDA\x57 |0 \xDA\x58 |0 \xDA\x59 |0 \xDA\x5A |0 \xDA\x5B |0 \xDA\x5C |0 \xDA\x5D |0 \xDA\x5E |0 \xDA\x5F |0 \xDA\x60 |0 \xDA\x61 |0 \xDA\x62 |0 \xDA\x63 |0 \xDA\x64 |0 \xDA\x65 |0 \xDA\x66 |0 \xDA\x67 |0 \xDA\x68 |0 \xDA\x69 |0 \xDA\x6A |0 \xDA\x6B |0 \xDA\x6C |0 \xDA\x6D |0 \xDA\x6E |0 \xDA\x6F |0 \xDA\x70 |0 \xDA\x71 |0 \xDA\x72 |0 \xDA\x73 |0 \xDA\x74 |0 \xDA\x75 |0 \xDA\x76 |0 \xDA\x77 |0 \xDA\x78 |0 \xCE\x6F |0 \xDA\x79 |0 \xDA\x7A |0 \xDA\x7B |0 \xDA\x7C |0 \xDA\x7D |0 \xDA\x7E |0 \xDA\x7F |0 \xDA\x80 |0 \xDA\x81 |0 \xDA\x82 |0 \xDA\x83 |0 \xDA\x84 |0 \xDA\x85 |0 \xDA\x86 |0 \xDA\x87 |0 \xDA\x88 |0 \xDA\x89 |0 \xDA\x8A |0 \xDA\x8B |0 \xDA\x8C |0 \xDA\x8D |0 \xDA\x8E |0 \xDA\x8F |0 \xDA\x90 |0 \xDA\x91 |0 \xDA\x92 |0 \xDA\x93 |0 \xDA\x94 |0 \xDA\x95 |0 \xDA\x96 |0 \xDA\x97 |0 \xDA\x98 |0 \xDA\x99 |0 \xDA\x9A |0 \xDA\x9B |0 \xDA\x9C |0 \xDA\x9D |0 \xDA\x9E |0 \xDA\x9F |0 \xDA\xA0 |0 \xDA\xA1 |0 \xDA\xA2 |0 \xDA\xA3 |0 \xDA\xA4 |0 \xDA\xA5 |0 \xDA\xA6 |0 \xDA\xA7 |0 \xDA\xA8 |0 \xDA\xA9 |0 \xDA\xAA |0 \xDA\xAB |0 \xDA\xAC |0 \xDA\xAD |0 \xDA\xAE |0 \xDA\xAF |0 \xDA\xB0 |0 \xDA\xB1 |0 \xDA\xB2 |0 \xDA\xB3 |0 \xDA\xB4 |0 \xDA\xB5 |0 \xDA\xB6 |0 \xDA\xB7 |0 \xDA\xB8 |0 \xDA\xB9 |0 \xDA\xBA |0 \xDA\xBB |0 \xDA\xBC |0 \xDA\xBD |0 \xDA\xBE |0 \xDA\xBF |0 \xDA\xC0 |0 \xDA\xC1 |0 \xDA\xC2 |0 \xDA\xC3 |0 \xDA\xC4 |0 \xDA\xC5 |0 \xDA\xC6 |0 \xDA\xC7 |0 \xDA\xC8 |0 \xDA\xC9 |0 \xDA\xCA |0 \xDA\xCB |0 \xDA\xCC |0 \xDA\xCD |0 \xDA\xCE |0 \xDA\xCF |0 \xDA\xD0 |0 \xDA\xD1 |0 \xDA\xD2 |0 \xDA\xD3 |0 \xDA\xD4 |0 \xDA\xD5 |0 \xDA\xD6 |0 \xDA\xD7 |0 \xDA\xD8 |0 \xDA\xD9 |0 \xDA\xDA |0 \xDA\xDB |0 \xDA\xDC |0 \xDA\xDD |0 \xDA\xDE |0 \xDA\xDF |0 \xDA\xE0 |0 \xDA\xE1 |0 \xDA\xE2 |0 \xDA\xE3 |0 \xDA\xE4 |0 \xDA\xE5 |0 \xDA\xE6 |0 \xDA\xE7 |0 \xDA\xE8 |0 \xDA\xE9 |0 \xCE\x70 |0 \xDA\xEA |0 \xDA\xEB |0 \xDA\xEC |0 \xDA\xED |0 \xDA\xEE |0 \xDA\xEF |0 \xDA\xF0 |0 \xDA\xF1 |0 \xDA\xF2 |0 \xDA\xF3 |0 \xDA\xF4 |0 \xDA\xF5 |0 \xDA\xF6 |0 \xDA\xF7 |0 \xDA\xF8 |0 \xDA\xF9 |0 \xDA\xFA |0 \xDA\xFB |0 \xDA\xFC |0 \xDA\xFD |0 \xDA\xFE |0 \xDB\x41 |0 \xDB\x42 |0 \xDB\x43 |0 \xDB\x44 |0 \xDB\x45 |0 \xDB\x46 |0 \xDB\x47 |0 \xDB\x48 |0 \xDB\x49 |0 \xDB\x4A |0 \xDB\x4B |0 \xDB\x4C |0 \xDB\x4D |0 \xDB\x4E |0 \xDB\x4F |0 \xDB\x50 |0 \xDB\x51 |0 \xDB\x52 |0 \xDB\x53 |0 \xDB\x54 |0 \xDB\x55 |0 \xDB\x56 |0 \xDB\x57 |0 \xDB\x58 |0 \xDB\x59 |0 \xDB\x5A |0 \xDB\x5B |0 \xDB\x5C |0 \xDB\x5D |0 \xDB\x5E |0 \xDB\x5F |0 \xDB\x60 |0 \xDB\x61 |0 \xDB\x62 |0 \xDB\x63 |0 \xDB\x64 |0 \xDB\x65 |0 \xDB\x66 |0 \xDB\x67 |0 \xDB\x68 |0 \xDB\x69 |0 \xDB\x6A |0 \xDB\x6B |0 \xDB\x6C |0 \xDB\x6D |0 \xDB\x6E |0 \xDB\x6F |0 \xDB\x70 |0 \xDB\x71 |0 \xDB\x72 |0 \xDB\x73 |0 \xDB\x74 |0 \xDB\x75 |0 \xDB\x76 |0 \xDB\x77 |0 \xDB\x78 |0 \xDB\x79 |0 \xDB\x7A |0 \xDB\x7B |0 \xDB\x7C |0 \xDB\x7D |0 \xDB\x7E |0 \xDB\x7F |0 \xDB\x80 |0 \xDB\x81 |0 \xDB\x82 |0 \xDB\x83 |0 \xDB\x84 |0 \xDB\x85 |0 \xDB\x86 |0 \xDB\x87 |0 \xDB\x88 |0 \xDB\x89 |0 \xDB\x8A |0 \xDB\x8B |0 \xDB\x8C |0 \xDB\x8D |0 \xDB\x8E |0 \xDB\x8F |0 \xDB\x90 |0 \xDB\x91 |0 \xDB\x92 |0 \xDB\x93 |0 \xDB\x94 |0 \xDB\x95 |0 \xDB\x96 |0 \xDB\x97 |0 \xDB\x98 |0 \xDB\x99 |0 \xDB\x9A |0 \xDB\x9B |0 \xDB\x9C |0 \xDB\x9D |0 \xDB\x9E |0 \xDB\x9F |0 \xDB\xA0 |0 \xDB\xA1 |0 \xDB\xA2 |0 \xDB\xA3 |0 \xDB\xA4 |0 \xDB\xA5 |0 \xDB\xA6 |0 \xDB\xA7 |0 \xDB\xA8 |0 \xDB\xA9 |0 \xDB\xAA |0 \xDB\xAB |0 \xDB\xAC |0 \xDB\xAD |0 \xDB\xAE |0 \xDB\xAF |0 \xDB\xB0 |0 \xDB\xB1 |0 \xDB\xB2 |0 \xDB\xB3 |0 \xDB\xB4 |0 \xDB\xB5 |0 \xDB\xB6 |0 \xDB\xB7 |0 \xDB\xB8 |0 \xDB\xB9 |0 \xDB\xBA |0 \xDB\xBB |0 \xDB\xBC |0 \xDB\xBD |0 \xDB\xBE |0 \xDB\xBF |0 \xDB\xC0 |0 \xDB\xC1 |0 \xDB\xC2 |0 \xDB\xC3 |0 \xDB\xC4 |0 \xDB\xC5 |0 \xDB\xC6 |0 \xDB\xC7 |0 \xDB\xC8 |0 \xDB\xC9 |0 \xDB\xCA |0 \xDB\xCB |0 \xDB\xCC |0 \xDB\xCD |0 \xDB\xCE |0 \xDB\xCF |0 \xDB\xD0 |0 \xDB\xD1 |0 \xDB\xD2 |0 \xDB\xD3 |0 \xDB\xD4 |0 \xDB\xD5 |0 \xDB\xD6 |0 \xDB\xD7 |0 \xDB\xD8 |0 \xDB\xD9 |0 \xDB\xDA |0 \xDB\xDB |0 \xDB\xDC |0 \xDB\xDD |0 \xDB\xDE |0 \xDB\xDF |0 \xDB\xE0 |0 \xDB\xE1 |0 \xDB\xE2 |0 \xDB\xE3 |0 \xDB\xE4 |0 \xDB\xE5 |0 \xDB\xE6 |0 \xDB\xE7 |0 \xDB\xE8 |0 \xDB\xE9 |0 \xDB\xEA |0 \xDB\xEB |0 \xDB\xEC |0 \xDB\xED |0 \xDB\xEE |0 \xDB\xEF |0 \xDB\xF0 |0 \xDB\xF1 |0 \xDB\xF2 |0 \xDB\xF3 |0 \xDB\xF4 |0 \xDB\xF5 |0 \xDB\xF6 |0 \xDB\xF7 |0 \xDB\xF8 |0 \xDB\xF9 |0 \xDB\xFA |0 \xDB\xFB |0 \xDB\xFC |0 \xDB\xFD |0 \xDB\xFE |0 \xDC\x41 |0 \xDC\x42 |0 \xDC\x43 |0 \xDC\x44 |0 \xDC\x45 |0 \xDC\x46 |0 \xDC\x47 |0 \xDC\x48 |0 \xDC\x49 |0 \xDC\x4A |0 \xDC\x4B |0 \xDC\x4C |0 \xDC\x4D |0 \xDC\x4E |0 \xDC\x4F |0 \xDC\x50 |0 \xDC\x51 |0 \xDC\x52 |0 \xDC\x53 |0 \xDC\x54 |0 \xDC\x55 |0 \xDC\x56 |0 \xDC\x57 |0 \xDC\x58 |0 \xDC\x59 |0 \xDC\x5A |0 \xDC\x5B |0 \xDC\x5C |0 \xDC\x5D |0 \xDC\x5E |0 \xDC\x5F |0 \xDC\x60 |0 \xDC\x61 |0 \xDC\x62 |0 \xDC\x63 |0 \xDC\x64 |0 \xDC\x65 |0 \xDC\x66 |0 \xDC\x67 |0 \xDC\x68 |0 \xDC\x69 |0 \xDC\x6A |0 \xDC\x6B |0 \xDC\x6C |0 \xDC\x6D |0 \xDC\x6E |0 \xDC\x6F |0 \xDC\x70 |0 \xDC\x71 |0 \xDC\x72 |0 \xDC\x73 |0 \xDC\x74 |0 \xDC\x75 |0 \xDC\x76 |0 \xDC\x77 |0 \xDC\x78 |0 \xDC\x79 |0 \xDC\x7A |0 \xDC\x7B |0 \xDC\x7C |0 \xDC\x7D |0 \xDC\x7E |0 \xDC\x7F |0 \xDC\x80 |0 \xDC\x81 |0 \xDC\x82 |0 \xDC\x83 |0 \xDC\x84 |0 \xDC\x85 |0 \xDC\x86 |0 \xDC\x87 |0 \xDC\x88 |0 \xDC\x89 |0 \xDC\x8A |0 \xDC\x8B |0 \xDC\x8C |0 \xDC\x8D |0 \xDC\x8E |0 \xDC\x8F |0 \xDC\x90 |0 \xDC\x91 |0 \xDC\x92 |0 \xDC\x93 |0 \xDC\x94 |0 \xDC\x95 |0 \xDC\x96 |0 \xDC\x97 |0 \xDC\x98 |0 \xDC\x99 |0 \xDC\x9A |0 \xDC\x9B |0 \xDC\x9C |0 \xDC\x9D |0 \xDC\x9E |0 \xDC\x9F |0 \xDC\xA0 |0 \xDC\xA1 |0 \xDC\xA2 |0 \xDC\xA3 |0 \xDC\xA4 |0 \xDC\xA5 |0 \xDC\xA6 |0 \xDC\xA7 |0 \xDC\xA8 |0 \xDC\xA9 |0 \xDC\xAA |0 \xDC\xAB |0 \xDC\xAC |0 \xDC\xAD |0 \xDC\xAE |0 \xDC\xAF |0 \xDC\xB0 |0 \xDC\xB1 |0 \xDC\xB2 |0 \xDC\xB3 |0 \xDC\xB4 |0 \xDC\xB5 |0 \xDC\xB6 |0 \xDC\xB7 |0 \xDC\xB8 |0 \xDC\xB9 |0 \xDC\xBA |0 \xDC\xBB |0 \xDC\xBC |0 \xDC\xBD |0 \xDC\xBE |0 \xDC\xBF |0 \xDC\xC0 |0 \xDC\xC1 |0 \xDC\xC2 |0 \xDC\xC3 |0 \xDC\xC4 |0 \xDC\xC5 |0 \xDC\xC6 |0 \xDC\xC7 |0 \xDC\xC8 |0 \xDC\xC9 |0 \xDC\xCA |0 \xDC\xCB |0 \xDC\xCC |0 \xDC\xCD |0 \xDC\xCE |0 \xDC\xCF |0 \xDC\xD0 |0 \xDC\xD1 |0 \xDC\xD2 |0 \xDC\xD3 |0 \xDC\xD4 |0 \xDC\xD5 |0 \xDC\xD6 |0 \xDC\xD7 |0 \xDC\xD8 |0 \xDC\xD9 |0 \xDC\xDA |0 \xDC\xDB |0 \xDC\xDC |0 \xDC\xDD |0 \xDC\xDE |0 \xDC\xDF |0 \xDC\xE0 |0 \xDC\xE1 |0 \xDC\xE2 |0 \xDC\xE3 |0 \xDC\xE4 |0 \xDC\xE5 |0 \xDC\xE6 |0 \xDC\xE7 |0 \xDC\xE8 |0 \xDC\xE9 |0 \xDC\xEA |0 \xDC\xEB |0 \xDC\xEC |0 \xDC\xED |0 \xDC\xEE |0 \xDC\xEF |0 \xDC\xF0 |0 \xDC\xF1 |0 \xDC\xF2 |0 \xDC\xF3 |0 \xDC\xF4 |0 \xDC\xF5 |0 \xDC\xF6 |0 \xDC\xF7 |0 \xDC\xF8 |0 \xDC\xF9 |0 \xDC\xFA |0 \xDC\xFB |0 \xDC\xFC |0 \xDC\xFD |0 \xDC\xFE |0 \xDD\x41 |0 \xDD\x42 |0 \xDD\x43 |0 \xDD\x44 |0 \xDD\x45 |0 \xDD\x46 |0 \xDD\x47 |0 \xDD\x48 |0 \xDD\x49 |0 \xDD\x4A |0 \xDD\x4B |0 \xDD\x4C |0 \xDD\x4D |0 \xDD\x4E |0 \xDD\x4F |0 \xDD\x50 |0 \xDD\x51 |0 \xDD\x52 |0 \xDD\x53 |0 \xDD\x54 |0 \xDD\x55 |0 \xDD\x56 |0 \xDD\x57 |0 \xDD\x58 |0 \xDD\x59 |0 \xDD\x5A |0 \xDD\x5B |0 \xDD\x5C |0 \xDD\x5D |0 \xDD\x5E |0 \xDD\x5F |0 \xDD\x60 |0 \xDD\x61 |0 \xDD\x62 |0 \xDD\x63 |0 \xDD\x64 |0 \xDD\x65 |0 \xDD\x66 |0 \xDD\x67 |0 \xDD\x68 |0 \xDD\x69 |0 \xDD\x6A |0 \xDD\x6B |0 \xDD\x6C |0 \xDD\x6D |0 \xDD\x6E |0 \xDD\x6F |0 \xDD\x70 |0 \xDD\x71 |0 \xDD\x72 |0 \xDD\x73 |0 \xDD\x74 |0 \xDD\x75 |0 \xDD\x76 |0 \xDD\x77 |0 \xDD\x78 |0 \xDD\x79 |0 \xDD\x7A |0 \xDD\x7B |0 \xDD\x7C |0 \xDD\x7D |0 \xDD\x7E |0 \xDD\x7F |0 \xDD\x80 |0 \xDD\x81 |0 \xDD\x82 |0 \xDD\x83 |0 \xDD\x84 |0 \xDD\x85 |0 \xDD\x86 |0 \xDD\x87 |0 \xDD\x88 |0 \xDD\x89 |0 \xDD\x8A |0 \xDD\x8B |0 \xDD\x8C |0 \xDD\x8D |0 \xDD\x8E |0 \xDD\x8F |0 \xDD\x90 |0 \xDD\x91 |0 \xDD\x92 |0 \xDD\x93 |0 \xDD\x94 |0 \xDD\x95 |0 \xDD\x96 |0 \xDD\x97 |0 \xDD\x98 |0 \xDD\x99 |0 \xDD\x9A |0 \xDD\x9B |0 \xDD\x9C |0 \xDD\x9D |0 \xDD\x9E |0 \xDD\x9F |0 \xDD\xA0 |0 \xDD\xA1 |0 \xDD\xA2 |0 \xDD\xA3 |0 \xDD\xA4 |0 \xDD\xA5 |0 \xDD\xA6 |0 \xDD\xA7 |0 \xDD\xA8 |0 \xDD\xA9 |0 \xDD\xAA |0 \xDD\xAB |0 \xDD\xAC |0 \xDD\xAD |0 \xDD\xAE |0 \xDD\xAF |0 \xDD\xB0 |0 \xDD\xB1 |0 \xDD\xB2 |0 \xDD\xB3 |0 \xDD\xB4 |0 \xDD\xB5 |0 \xDD\xB6 |0 \xDD\xB7 |0 \xDD\xB8 |0 \xDD\xB9 |0 \xDD\xBA |0 \xDD\xBB |0 \xDD\xBC |0 \xDD\xBD |0 \xDD\xBE |0 \xDD\xBF |0 \xDD\xC0 |0 \xDD\xC1 |0 \xDD\xC2 |0 \xDD\xC3 |0 \xDD\xC4 |0 \xDD\xC5 |0 \xDD\xC6 |0 \xDD\xC7 |0 \xDD\xC8 |0 \xDD\xC9 |0 \xDD\xCA |0 \xDD\xCB |0 \xDD\xCC |0 \xDD\xCD |0 \xDD\xCE |0 \xDD\xCF |0 \xDD\xD0 |0 \xDD\xD1 |0 \xDD\xD2 |0 \xDD\xD3 |0 \xDD\xD4 |0 \xDD\xD5 |0 \xDD\xD6 |0 \xDD\xD7 |0 \xDD\xD8 |0 \xDD\xD9 |0 \xDD\xDA |0 \xDD\xDB |0 \xDD\xDC |0 \xDD\xDD |0 \xDD\xDE |0 \xDD\xDF |0 \xDD\xE0 |0 \xDD\xE1 |0 \xDD\xE2 |0 \xDD\xE3 |0 \xDD\xE4 |0 \xDD\xE5 |0 \xDD\xE6 |0 \xDD\xE7 |0 \xDD\xE8 |0 \xDD\xE9 |0 \xDD\xEA |0 \xDD\xEB |0 \xDD\xEC |0 \xDD\xED |0 \xDD\xEE |0 \xDD\xEF |0 \xDD\xF0 |0 \xDD\xF1 |0 \xDD\xF2 |0 \xDD\xF3 |0 \xDD\xF4 |0 \xDD\xF5 |0 \xDD\xF6 |0 \xDD\xF7 |0 \xDD\xF8 |0 \xDD\xF9 |0 \xDD\xFA |0 \xDD\xFB |0 \xDD\xFC |0 \xDD\xFD |0 \xDD\xFE |0 \xDE\x41 |0 \xDE\x42 |0 \xDE\x43 |0 \xDE\x44 |0 \xDE\x45 |0 \xDE\x46 |0 \xDE\x47 |0 \xDE\x48 |0 \xDE\x49 |0 \xDE\x4A |0 \xDE\x4B |0 \xDE\x4C |0 \xDE\x4D |0 \xDE\x4E |0 \xDE\x4F |0 \xDE\x50 |0 \xDE\x51 |0 \xDE\x52 |0 \xDE\x53 |0 \xDE\x54 |0 \xDE\x55 |0 \xDE\x56 |0 \xDE\x57 |0 \xDE\x58 |0 \xDE\x59 |0 \xDE\x5A |0 \xDE\x5B |0 \xDE\x5C |0 \xDE\x5D |0 \xDE\x5E |0 \xDE\x5F |0 \xDE\x60 |0 \xDE\x61 |0 \xDE\x62 |0 \xDE\x63 |0 \xDE\x64 |0 \xDE\x65 |0 \xDE\x66 |0 \xDE\x67 |0 \xDE\x68 |0 \xDE\x69 |0 \xDE\x6A |0 \xDE\x6B |0 \xDE\x6C |0 \xDE\x6D |0 \xDE\x6E |0 \xDE\x6F |0 \xDE\x70 |0 \xDE\x71 |0 \xDE\x72 |0 \xDE\x73 |0 \xDE\x74 |0 \xDE\x75 |0 \xDE\x76 |0 \xDE\x77 |0 \xDE\x78 |0 \xDE\x79 |0 \xDE\x7A |0 \xDE\x7B |0 \xDE\x7C |0 \xDE\x7D |0 \xDE\x7E |0 \xDE\x7F |0 \xDE\x80 |0 \xDE\x81 |0 \xDE\x82 |0 \xDE\x83 |0 \xDE\x84 |0 \xDE\x85 |0 \xDE\x86 |0 \xDE\x87 |0 \xDE\x88 |0 \xDE\x89 |0 \xDE\x8A |0 \xDE\x8B |0 \xDE\x8C |0 \xDE\x8D |0 \xDE\x8E |0 \xDE\x8F |0 \xDE\x90 |0 \xDE\x91 |0 \xDE\x92 |0 \xDE\x93 |0 \xDE\x94 |0 \xDE\x95 |0 \xDE\x96 |0 \xDE\x97 |0 \xDE\x98 |0 \xDE\x99 |0 \xDE\x9A |0 \xDE\x9B |0 \xDE\x9C |0 \xDE\x9D |0 \xDE\x9E |0 \xDE\x9F |0 \xDE\xA0 |0 \xDE\xA1 |0 \xDE\xA2 |0 \xDE\xA3 |0 \xDE\xA4 |0 \xDE\xA5 |0 \xDE\xA6 |0 \xDE\xA7 |0 \xDE\xA8 |0 \xDE\xA9 |0 \xDE\xAA |0 \xDE\xAB |0 \xDE\xAC |0 \xDE\xAD |0 \xDE\xAE |0 \xDE\xAF |0 \xDE\xB0 |0 \xDE\xB1 |0 \xDE\xB2 |0 \xDE\xB3 |0 \xDE\xB4 |0 \xDE\xB5 |0 \xDE\xB6 |0 \xDE\xB7 |0 \xDE\xB8 |0 \xDE\xB9 |0 \xDE\xBA |0 \xDE\xBB |0 \xDE\xBC |0 \xDE\xBD |0 \xDE\xBE |0 \xDE\xBF |0 \xDE\xC0 |0 \xDE\xC1 |0 \xDE\xC2 |0 \xDE\xC3 |0 \xDE\xC4 |0 \xDE\xC5 |0 \xDE\xC6 |0 \xDE\xC7 |0 \xDE\xC8 |0 \xDE\xC9 |0 \xDE\xCA |0 \xDE\xCB |0 \xDE\xCC |0 \xDE\xCD |0 \xDE\xCE |0 \xDE\xCF |0 \xDE\xD0 |0 \xDE\xD1 |0 \xDE\xD2 |0 \xDE\xD3 |0 \xDE\xD4 |0 \xDE\xD5 |0 \xDE\xD6 |0 \xDE\xD7 |0 \xDE\xD8 |0 \xDE\xD9 |0 \xDE\xDA |0 \xDE\xDB |0 \xDE\xDC |0 \xDE\xDD |0 \xDE\xDE |0 \xDE\xDF |0 \xDE\xE0 |0 \xDE\xE1 |0 \xDE\xE2 |0 \xDE\xE3 |0 \xDE\xE4 |0 \xDE\xE5 |0 \xDE\xE6 |0 \xDE\xE7 |0 \xDE\xE8 |0 \xDE\xE9 |0 \xDE\xEA |0 \xDE\xEB |0 \xDE\xEC |0 \xDE\xED |0 \xDE\xEE |0 \xDE\xEF |0 \xDE\xF0 |0 \xDE\xF1 |0 \xDE\xF2 |0 \xDE\xF3 |0 \xDE\xF4 |0 \xDE\xF5 |0 \xDE\xF6 |0 \xDE\xF7 |0 \xDE\xF8 |0 \xDE\xF9 |0 \xDE\xFA |0 \xDE\xFB |0 \xDE\xFC |0 \xDE\xFD |0 \xDE\xFE |0 \xDF\x41 |0 \xDF\x42 |0 \xDF\x43 |0 \xDF\x44 |0 \xDF\x45 |0 \xDF\x46 |0 \xDF\x47 |0 \xDF\x48 |0 \xDF\x49 |0 \xDF\x4A |0 \xDF\x4B |0 \xDF\x4C |0 \xDF\x4D |0 \xDF\x4E |0 \xDF\x4F |0 \xDF\x50 |0 \xDF\x51 |0 \xDF\x52 |0 \xDF\x53 |0 \xDF\x54 |0 \xDF\x55 |0 \xDF\x56 |0 \xDF\x57 |0 \xDF\x58 |0 \xDF\x59 |0 \xDF\x5A |0 \xDF\x5B |0 \xDF\x5C |0 \xDF\x5D |0 \xDF\x5E |0 \xDF\x5F |0 \xDF\x60 |0 \xDF\x61 |0 \xDF\x62 |0 \xDF\x63 |0 \xDF\x64 |0 \xDF\x65 |0 \xDF\x66 |0 \xDF\x67 |0 \xDF\x68 |0 \xDF\x69 |0 \xDF\x6A |0 \xDF\x6B |0 \xDF\x6C |0 \xDF\x6D |0 \xDF\x6E |0 \xDF\x6F |0 \xDF\x70 |0 \xDF\x71 |0 \xDF\x72 |0 \xDF\x73 |0 \xDF\x74 |0 \xDF\x75 |0 \xDF\x76 |0 \xDF\x77 |0 \xDF\x78 |0 \xDF\x79 |0 \xDF\x7A |0 \xDF\x7B |0 \xDF\x7C |0 \xDF\x7D |0 \xDF\x7E |0 \xDF\x7F |0 \xDF\x80 |0 \xDF\x81 |0 \xDF\x82 |0 \xDF\x83 |0 \xDF\x84 |0 \xDF\x85 |0 \xDF\x86 |0 \xDF\x87 |0 \xDF\x88 |0 \xDF\x89 |0 \xDF\x8A |0 \xDF\x8B |0 \xDF\x8C |0 \xDF\x8D |0 \xDF\x8E |0 \xDF\x8F |0 \xDF\x90 |0 \xDF\x91 |0 \xDF\x92 |0 \xDF\x93 |0 \xDF\x94 |0 \xDF\x95 |0 \xDF\x96 |0 \xDF\x97 |0 \xDF\x98 |0 \xDF\x99 |0 \xDF\x9A |0 \xDF\x9B |0 \xDF\x9C |0 \xDF\x9D |0 \xDF\x9E |0 \xDF\x9F |0 \xDF\xA0 |0 \xDF\xA1 |0 \xDF\xA2 |0 \xDF\xA3 |0 \xDF\xA4 |0 \xDF\xA5 |0 \xDF\xA6 |0 \xDF\xA7 |0 \xDF\xA8 |0 \xCE\x75 |0 \xDF\xA9 |0 \xDF\xAA |0 \xDF\xAB |0 \xDF\xAC |0 \xDF\xAD |0 \xDF\xAE |0 \xDF\xAF |0 \xDF\xB0 |0 \xDF\xB1 |0 \xDF\xB2 |0 \xDF\xB3 |0 \xDF\xB4 |0 \xDF\xB5 |0 \xDF\xB6 |0 \xDF\xB7 |0 \xDF\xB8 |0 \xDF\xB9 |0 \xDF\xBA |0 \xDF\xBB |0 \xDF\xBC |0 \xDF\xBD |0 \xDF\xBE |0 \xDF\xBF |0 \xDF\xC0 |0 \xDF\xC1 |0 \xDF\xC2 |0 \xDF\xC3 |0 \xDF\xC4 |0 \xDF\xC5 |0 \xDF\xC6 |0 \xDF\xC7 |0 \xDF\xC8 |0 \xDF\xC9 |0 \xDF\xCA |0 \xDF\xCB |0 \xDF\xCC |0 \xDF\xCD |0 \xDF\xCE |0 \xDF\xCF |0 \xDF\xD0 |0 \xDF\xD1 |0 \xDF\xD2 |0 \xDF\xD3 |0 \xDF\xD4 |0 \xDF\xD5 |0 \xDF\xD6 |0 \xDF\xD7 |0 \xDF\xD8 |0 \xDF\xD9 |0 \xDF\xDA |0 \xDF\xDB |0 \xDF\xDC |0 \xDF\xDD |0 \xDF\xDE |0 \xDF\xDF |0 \xDF\xE0 |0 \xDF\xE1 |0 \xDF\xE2 |0 \xDF\xE3 |0 \xDF\xE4 |0 \xDF\xE5 |0 \xDF\xE6 |0 \xDF\xE7 |0 \xDF\xE8 |0 \xDF\xE9 |0 \xDF\xEA |0 \xDF\xEB |0 \xDF\xEC |0 \xDF\xED |0 \xDF\xEE |0 \xDF\xEF |0 \xDF\xF0 |0 \xDF\xF1 |0 \xDF\xF2 |0 \xDF\xF3 |0 \xDF\xF4 |0 \xDF\xF5 |0 \xDF\xF6 |0 \xDF\xF7 |0 \xDF\xF8 |0 \xDF\xF9 |0 \xDF\xFA |0 \xDF\xFB |0 \xDF\xFC |0 \xDF\xFD |0 \xDF\xFE |0 \xE0\x41 |0 \xE0\x42 |0 \xE0\x43 |0 \xE0\x44 |0 \xE0\x45 |0 \xE0\x46 |0 \xE0\x47 |0 \xE0\x48 |0 \xE0\x49 |0 \xE0\x4A |0 \xE0\x4B |0 \xE0\x4C |0 \xE0\x4D |0 \xE0\x4E |0 \xE0\x4F |0 \xE0\x50 |0 \xE0\x51 |0 \xE0\x52 |0 \xE0\x53 |0 \xE0\x54 |0 \xE0\x55 |0 \xE0\x56 |0 \xE0\x57 |0 \xE0\x58 |0 \xE0\x59 |0 \xE0\x5A |0 \xE0\x5B |0 \xE0\x5C |0 \xE0\x5D |0 \xE0\x5E |0 \xE0\x5F |0 \xE0\x60 |0 \xE0\x61 |0 \xE0\x62 |0 \xE0\x63 |0 \xE0\x64 |0 \xE0\x65 |0 \xE0\x66 |0 \xE0\x67 |0 \xE0\x68 |0 \xE0\x69 |0 \xE0\x6A |0 \xE0\x6B |0 \xE0\x6C |0 \xE0\x6D |0 \xE0\x6E |0 \xE0\x6F |0 \xE0\x70 |0 \xE0\x71 |0 \xE0\x72 |0 \xE0\x73 |0 \xE0\x74 |0 \xE0\x75 |0 \xE0\x76 |0 \xE0\x77 |0 \xE0\x78 |0 \xE0\x79 |0 \xE0\x7A |0 \xE0\x7B |0 \xE0\x7C |0 \xE0\x7D |0 \xE0\x7E |0 \xE0\x7F |0 \xE0\x80 |0 \xE0\x81 |0 \xE0\x82 |0 \xE0\x83 |0 \xE0\x84 |0 \xE0\x85 |0 \xE0\x86 |0 \xE0\x87 |0 \xE0\x88 |0 \xE0\x89 |0 \xE0\x8A |0 \xE0\x8B |0 \xE0\x8C |0 \xE0\x8D |0 \xE0\x8E |0 \xE0\x8F |0 \xE0\x90 |0 \xE0\x91 |0 \xE0\x92 |0 \xE0\x93 |0 \xE0\x94 |0 \xE0\x95 |0 \xE0\x96 |0 \xE0\x97 |0 \xE0\x98 |0 \xE0\x99 |0 \xE0\x9A |0 \xE0\x9B |0 \xE0\x9C |0 \xE0\x9D |0 \xE0\x9E |0 \xE0\x9F |0 \xE0\xA0 |0 \xE0\xA1 |0 \xE0\xA2 |0 \xE0\xA3 |0 \xE0\xA4 |0 \xE0\xA5 |0 \xE0\xA6 |0 \xE0\xA7 |0 \xE0\xA8 |0 \xE0\xA9 |0 \xE0\xAA |0 \xE0\xAB |0 \xE0\xAC |0 \xE0\xAD |0 \xE0\xAE |0 \xE0\xAF |0 \xE0\xB0 |0 \xE0\xB1 |0 \xE0\xB2 |0 \xE0\xB3 |0 \xE0\xB4 |0 \xE0\xB5 |0 \xE0\xB6 |0 \xE0\xB7 |0 \xE0\xB8 |0 \xE0\xB9 |0 \xE0\xBA |0 \xE0\xBB |0 \xE0\xBC |0 \xE0\xBD |0 \xE0\xBE |0 \xE0\xBF |0 \xE0\xC0 |0 \xE0\xC1 |0 \xE0\xC2 |0 \xE0\xC3 |0 \xE0\xC4 |0 \xE0\xC5 |0 \xE0\xC6 |0 \xE0\xC7 |0 \xE0\xC8 |0 \xE0\xC9 |0 \xE0\xCA |0 \xE0\xCB |0 \xE0\xCC |0 \xE0\xCD |0 \xE0\xCE |0 \xE0\xCF |0 \xE0\xD0 |0 \xE0\xD1 |0 \xE0\xD2 |0 \xE0\xD3 |0 \xE0\xD4 |0 \xE0\xD5 |0 \xE0\xD6 |0 \xE0\xD7 |0 \xE0\xD8 |0 \xE0\xD9 |0 \xE0\xDA |0 \xE0\xDB |0 \xE0\xDC |0 \xE0\xDD |0 \xE0\xDE |0 \xE0\xDF |0 \xE0\xE0 |0 \xE0\xE1 |0 \xE0\xE2 |0 \xE0\xE3 |0 \xE0\xE4 |0 \xE0\xE5 |0 \xE0\xE6 |0 \xE0\xE7 |0 \xE0\xE8 |0 \xE0\xE9 |0 \xE0\xEA |0 \xE0\xEB |0 \xE0\xEC |0 \xE0\xED |0 \xE0\xEE |0 \xE0\xEF |0 \xE0\xF0 |0 \xE0\xF1 |0 \xE0\xF2 |0 \xCE\x76 |0 \xE0\xF3 |0 \xE0\xF4 |0 \xE0\xF5 |0 \xE0\xF6 |0 \xE0\xF7 |0 \xE0\xF8 |0 \xE0\xF9 |0 \xE0\xFA |0 \xE0\xFB |0 \xE0\xFC |0 \xE0\xFD |0 \xE0\xFE |0 \xE1\x41 |0 \xE1\x42 |0 \xE1\x43 |0 \xE1\x44 |0 \xE1\x45 |0 \xE1\x46 |0 \xE1\x47 |0 \xE1\x48 |0 \xE1\x49 |0 \xE1\x4A |0 \xE1\x4B |0 \xE1\x4C |0 \xE1\x4D |0 \xE1\x4E |0 \xE1\x4F |0 \xE1\x50 |0 \xE1\x51 |0 \xE1\x52 |0 \xE1\x53 |0 \xE1\x54 |0 \xE1\x55 |0 \xE1\x56 |0 \xE1\x57 |0 \xE1\x58 |0 \xE1\x59 |0 \xE1\x5A |0 \xE1\x5B |0 \xE1\x5C |0 \xE1\x5D |0 \xE1\x5E |0 \xE1\x5F |0 \xE1\x60 |0 \xE1\x61 |0 \xE1\x62 |0 \xE1\x63 |0 \xE1\x64 |0 \xE1\x65 |0 \xE1\x66 |0 \xE1\x67 |0 \xE1\x68 |0 \xE1\x69 |0 \xE1\x6A |0 \xE1\x6B |0 \xE1\x6C |0 \xE1\x6D |0 \xE1\x6E |0 \xE1\x6F |0 \xE1\x70 |0 \xE1\x71 |0 \xE1\x72 |0 \xE1\x73 |0 \xE1\x74 |0 \xE1\x75 |0 \xE1\x76 |0 \xE1\x77 |0 \xE1\x78 |0 \xE1\x79 |0 \xE1\x7A |0 \xE1\x7B |0 \xE1\x7C |0 \xE1\x7D |0 \xE1\x7E |0 \xE1\x7F |0 \xE1\x80 |0 \xE1\x81 |0 \xE1\x82 |0 \xE1\x83 |0 \xE1\x84 |0 \xE1\x85 |0 \xE1\x86 |0 \xE1\x87 |0 \xE1\x88 |0 \xE1\x89 |0 \xE1\x8A |0 \xE1\x8B |0 \xE1\x8C |0 \xE1\x8D |0 \xE1\x8E |0 \xE1\x8F |0 \xE1\x90 |0 \xE1\x91 |0 \xE1\x92 |0 \xE1\x93 |0 \xE1\x94 |0 \xE1\x95 |0 \xE1\x96 |0 \xE1\x97 |0 \xE1\x98 |0 \xE1\x99 |0 \xE1\x9A |0 \xE1\x9B |0 \xE1\x9C |0 \xE1\x9D |0 \xE1\x9E |0 \xE1\x9F |0 \xE1\xA0 |0 \xE1\xA1 |0 \xE1\xA2 |0 \xE1\xA3 |0 \xE1\xA4 |0 \xE1\xA5 |0 \xE1\xA6 |0 \xE1\xA7 |0 \xE1\xA8 |0 \xE1\xA9 |0 \xE1\xAA |0 \xE1\xAB |0 \xE1\xAC |0 \xE1\xAD |0 \xE1\xAE |0 \xE1\xAF |0 \xE1\xB0 |0 \xE1\xB1 |0 \xE1\xB2 |0 \xE1\xB3 |0 \xE1\xB4 |0 \xE1\xB5 |0 \xE1\xB6 |0 \xE1\xB7 |0 \xE1\xB8 |0 \xE1\xB9 |0 \xE1\xBA |0 \xE1\xBB |0 \xE1\xBC |0 \xE1\xBD |0 \xE1\xBE |0 \xE1\xBF |0 \xE1\xC0 |0 \xE1\xC1 |0 \xE1\xC2 |0 \xE1\xC3 |0 \xE1\xC4 |0 \xE1\xC5 |0 \xE1\xC6 |0 \xE1\xC7 |0 \xE1\xC8 |0 \xE1\xC9 |0 \xE1\xCA |0 \xE1\xCB |0 \xE1\xCC |0 \xE1\xCD |0 \xE1\xCE |0 \xE1\xCF |0 \xE1\xD0 |0 \xE1\xD1 |0 \xE1\xD2 |0 \xE1\xD3 |0 \xE1\xD4 |0 \xE1\xD5 |0 \xE1\xD6 |0 \xE1\xD7 |0 \xE1\xD8 |0 \xE1\xD9 |0 \xE1\xDA |0 \xE1\xDB |0 \xE1\xDC |0 \xE1\xDD |0 \xE1\xDE |0 \xE1\xDF |0 \xE1\xE0 |0 \xE1\xE1 |0 \xE1\xE2 |0 \xE1\xE3 |0 \xE1\xE4 |0 \xE1\xE5 |0 \xE1\xE6 |0 \xE1\xE7 |0 \xE1\xE8 |0 \xE1\xE9 |0 \xE1\xEA |0 \xE1\xEB |0 \xE1\xEC |0 \xE1\xED |0 \xE1\xEE |0 \xE1\xEF |0 \xE1\xF0 |0 \xE1\xF1 |0 \xE1\xF2 |0 \xE1\xF3 |0 \xE1\xF4 |0 \xE1\xF5 |0 \xE1\xF6 |0 \xE1\xF7 |0 \xE1\xF8 |0 \xE1\xF9 |0 \xE1\xFA |0 \xE1\xFB |0 \xE1\xFC |0 \xE1\xFD |0 \xE1\xFE |0 \xE2\x41 |0 \xE2\x42 |0 \xE2\x43 |0 \xE2\x44 |0 \xE2\x45 |0 \xE2\x46 |0 \xE2\x47 |0 \xE2\x48 |0 \xE2\x49 |0 \xE2\x4A |0 \xE2\x4B |0 \xE2\x4C |0 \xE2\x4D |0 \xE2\x4E |0 \xE2\x4F |0 \xE2\x50 |0 \xE2\x51 |0 \xE2\x52 |0 \xE2\x53 |0 \xE2\x54 |0 \xE2\x55 |0 \xE2\x56 |0 \xE2\x57 |0 \xE2\x58 |0 \xE2\x59 |0 \xE2\x5A |0 \xE2\x5B |0 \xE2\x5C |0 \xE2\x5D |0 \xE2\x5E |0 \xE2\x5F |0 \xE2\x60 |0 \xE2\x61 |0 \xE2\x62 |0 \xE2\x63 |0 \xE2\x64 |0 \xE2\x65 |0 \xE2\x66 |0 \xE2\x67 |0 \xE2\x68 |0 \xE2\x69 |0 \xE2\x6A |0 \xE2\x6B |0 \xE2\x6C |0 \xE2\x6D |0 \xE2\x6E |0 \xE2\x6F |0 \xE2\x70 |0 \xE2\x71 |0 \xE2\x72 |0 \xE2\x73 |0 \xE2\x74 |0 \xE2\x75 |0 \xE2\x76 |0 \xE2\x77 |0 \xE2\x78 |0 \xE2\x79 |0 \xE2\x7A |0 \xE2\x7B |0 \xE2\x7C |0 \xE2\x7D |0 \xE2\x7E |0 \xE2\x7F |0 \xE2\x80 |0 \xE2\x81 |0 \xE2\x82 |0 \xE2\x83 |0 \xE2\x84 |0 \xE2\x85 |0 \xE2\x86 |0 \xE2\x87 |0 \xE2\x88 |0 \xE2\x89 |0 \xE2\x8A |0 \xE2\x8B |0 \xE2\x8C |0 \xE2\x8D |0 \xE2\x8E |0 \xE2\x8F |0 \xE2\x90 |0 \xE2\x91 |0 \xE2\x92 |0 \xE2\x93 |0 \xE2\x94 |0 \xE2\x95 |0 \xE2\x96 |0 \xE2\x97 |0 \xE2\x98 |0 \xE2\x99 |0 \xE2\x9A |0 \xE2\x9B |0 \xE2\x9C |0 \xE2\x9D |0 \xE2\x9E |0 \xE2\x9F |0 \xE2\xA0 |0 \xE2\xA1 |0 \xE2\xA2 |0 \xE2\xA3 |0 \xE2\xA4 |0 \xE2\xA5 |0 \xE2\xA6 |0 \xE2\xA7 |0 \xE2\xA8 |0 \xE2\xA9 |0 \xE2\xAA |0 \xE2\xAB |0 \xE2\xAC |0 \xE2\xAD |0 \xE2\xAE |0 \xE2\xAF |0 \xE2\xB0 |0 \xE2\xB1 |0 \xE2\xB2 |0 \xE2\xB3 |0 \xE2\xB4 |0 \xE2\xB5 |0 \xE2\xB6 |0 \xE2\xB7 |0 \xE2\xB8 |0 \xE2\xB9 |0 \xE2\xBA |0 \xE2\xBB |0 \xE2\xBC |0 \xE2\xBD |0 \xE2\xBE |0 \xE2\xBF |0 \xE2\xC0 |0 \xE2\xC1 |0 \xE2\xC2 |0 \xE2\xC3 |0 \xE2\xC4 |0 \xE2\xC5 |0 \xE2\xC6 |0 \xE2\xC7 |0 \xE2\xC8 |0 \xE2\xC9 |0 \xE2\xCA |0 \xE2\xCB |0 \xE2\xCC |0 \xE2\xCD |0 \xE2\xCE |0 \xE2\xCF |0 \xE2\xD0 |0 \xE2\xD1 |0 \xE2\xD2 |0 \xE2\xD3 |0 \xE2\xD4 |0 \xE2\xD5 |0 \xE2\xD6 |0 \xE2\xD7 |0 \xE2\xD8 |0 \xE2\xD9 |0 \xE2\xDA |0 \xE2\xDB |0 \xE2\xDC |0 \xE2\xDD |0 \xE2\xDE |0 \xE2\xDF |0 \xE2\xE0 |0 \xE2\xE1 |0 \xE2\xE2 |0 \xE2\xE3 |0 \xE2\xE4 |0 \xE2\xE5 |0 \xE2\xE6 |0 \xE2\xE7 |0 \xE2\xE8 |0 \xE2\xE9 |0 \xE2\xEA |0 \xE2\xEB |0 \xE2\xEC |0 \xE2\xED |0 \xE2\xEE |0 \xE2\xEF |0 \xE2\xF0 |0 \xE2\xF1 |0 \xE2\xF2 |0 \xE2\xF3 |0 \xE2\xF4 |0 \xE2\xF5 |0 \xE2\xF6 |0 \xE2\xF7 |0 \xE2\xF8 |0 \xE2\xF9 |0 \xE2\xFA |0 \xE2\xFB |0 \xE2\xFC |0 \xE2\xFD |0 \xE2\xFE |0 \xE3\x41 |0 \xE3\x42 |0 \xE3\x43 |0 \xE3\x44 |0 \xE3\x45 |0 \xE3\x46 |0 \xE3\x47 |0 \xE3\x48 |0 \xE3\x49 |0 \xE3\x4A |0 \xE3\x4B |0 \xE3\x4C |0 \xE3\x4D |0 \xE3\x4E |0 \xE3\x4F |0 \xE3\x50 |0 \xE3\x51 |0 \xE3\x52 |0 \xE3\x53 |0 \xE3\x54 |0 \xE3\x55 |0 \xE3\x56 |0 \xE3\x57 |0 \xE3\x58 |0 \xE3\x59 |0 \xE3\x5A |0 \xE3\x5B |0 \xE3\x5C |0 \xE3\x5D |0 \xE3\x5E |0 \xE3\x5F |0 \xE3\x60 |0 \xE3\x61 |0 \xE3\x62 |0 \xE3\x63 |0 \xE3\x64 |0 \xE3\x65 |0 \xE3\x66 |0 \xE3\x67 |0 \xE3\x68 |0 \xE3\x69 |0 \xE3\x6A |0 \xE3\x6B |0 \xE3\x6C |0 \xE3\x6D |0 \xE3\x6E |0 \xE3\x6F |0 \xE3\x70 |0 \xE3\x71 |0 \xE3\x72 |0 \xE3\x73 |0 \xE3\x74 |0 \xE3\x75 |0 \xE3\x76 |0 \xE3\x77 |0 \xE3\x78 |0 \xE3\x79 |0 \xE3\x7A |0 \xE3\x7B |0 \xE3\x7C |0 \xE3\x7D |0 \xE3\x7E |0 \xE3\x7F |0 \xE3\x80 |0 \xE3\x81 |0 \xE3\x82 |0 \xE3\x83 |0 \xE3\x84 |0 \xE3\x85 |0 \xE3\x86 |0 \xE3\x87 |0 \xE3\x88 |0 \xE3\x89 |0 \xE3\x8A |0 \xE3\x8B |0 \xE3\x8C |0 \xE3\x8D |0 \xE3\x8E |0 \xE3\x8F |0 \xCE\x78 |0 \xE3\x90 |0 \xE3\x91 |0 \xE3\x92 |0 \xE3\x93 |0 \xE3\x94 |0 \xE3\x95 |0 \xE3\x96 |0 \xE3\x97 |0 \xE3\x98 |0 \xE3\x99 |0 \xE3\x9A |0 \xE3\x9B |0 \xE3\x9C |0 \xE3\x9D |0 \xE3\x9E |0 \xE3\x9F |0 \xE3\xA0 |0 \xE3\xA1 |0 \xE3\xA2 |0 \xE3\xA3 |0 \xE3\xA4 |0 \xE3\xA5 |0 \xE3\xA6 |0 \xE3\xA7 |0 \xE3\xA8 |0 \xE3\xA9 |0 \xE3\xAA |0 \xE3\xAB |0 \xE3\xAC |0 \xE3\xAD |0 \xE3\xAE |0 \xE3\xAF |0 \xE3\xB0 |0 \xE3\xB1 |0 \xE3\xB2 |0 \xE3\xB3 |0 \xE3\xB4 |0 \xE3\xB5 |0 \xE3\xB6 |0 \xE3\xB7 |0 \xE3\xB8 |0 \xE3\xB9 |0 \xE3\xBA |0 \xE3\xBB |0 \xE3\xBC |0 \xE3\xBD |0 \xE3\xBE |0 \xE3\xBF |0 \xE3\xC0 |0 \xE3\xC1 |0 \xE3\xC2 |0 \xE3\xC3 |0 \xE3\xC4 |0 \xE3\xC5 |0 \xE3\xC6 |0 \xE3\xC7 |0 \xE3\xC8 |0 \xE3\xC9 |0 \xE3\xCA |0 \xE3\xCB |0 \xE3\xCC |0 \xE3\xCD |0 \xE3\xCE |0 \xE3\xCF |0 \xE3\xD0 |0 \xE3\xD1 |0 \xE3\xD2 |0 \xE3\xD3 |0 \xE3\xD4 |0 \xE3\xD5 |0 \xE3\xD6 |0 \xE3\xD7 |0 \xE3\xD8 |0 \xE3\xD9 |0 \xE3\xDA |0 \xE3\xDB |0 \xE3\xDC |0 \xE3\xDD |0 \xE3\xDE |0 \xE3\xDF |0 \xE3\xE0 |0 \xE3\xE1 |0 \xE3\xE2 |0 \xE3\xE3 |0 \xE3\xE4 |0 \xE3\xE5 |0 \xE3\xE6 |0 \xE3\xE7 |0 \xE3\xE8 |0 \xE3\xE9 |0 \xE3\xEA |0 \xE3\xEB |0 \xE3\xEC |0 \xE3\xED |0 \xE3\xEE |0 \xE3\xEF |0 \xE3\xF0 |0 \xE3\xF1 |0 \xE3\xF2 |0 \xE3\xF3 |0 \xE3\xF4 |0 \xE3\xF5 |0 \xE3\xF6 |0 \xE3\xF7 |0 \xE3\xF8 |0 \xE3\xF9 |0 \xE3\xFA |0 \xE3\xFB |0 \xE3\xFC |0 \xE3\xFD |0 \xE3\xFE |0 \xE4\x41 |0 \xE4\x42 |0 \xE4\x43 |0 \xE4\x44 |0 \xE4\x45 |0 \xCE\x7E |0 \xE4\x46 |0 \xE4\x47 |0 \xE4\x48 |0 \xE4\x49 |0 \xCE\x7D |0 \xE4\x4A |0 \xE4\x4B |0 \xE4\x4C |0 \xE4\x4D |0 \xE4\x4E |0 \xE4\x4F |0 \xE4\x50 |0 \xE4\x51 |0 \xE4\x52 |0 \xE4\x53 |0 \xE4\x54 |0 \xE4\x55 |0 \xE4\x56 |0 \xE4\x57 |0 \xE4\x58 |0 \xE4\x59 |0 \xE4\x5A |0 \xE4\x5B |0 \xE4\x5C |0 \xE4\x5D |0 \xE4\x5E |0 \xE4\x5F |0 \xE4\x60 |0 \xE4\x61 |0 \xE4\x62 |0 \xE4\x63 |0 \xE4\x64 |0 \xE4\x65 |0 \xE4\x66 |0 \xE4\x67 |0 \xE4\x68 |0 \xE4\x69 |0 \xE4\x6A |0 \xE4\x6B |0 \xE4\x6C |0 \xE4\x6D |0 \xE4\x6E |0 \xE4\x6F |0 \xE4\x70 |0 \xE4\x71 |0 \xE4\x72 |0 \xE4\x73 |0 \xE4\x74 |0 \xCE\x81 |0 \xE4\x75 |0 \xE4\x76 |0 \xE4\x77 |0 \xE4\x78 |0 \xE4\x79 |0 \xE4\x7A |0 \xE4\x7B |0 \xE4\x7C |0 \xE4\x7D |0 \xE4\x7E |0 \xE4\x7F |0 \xE4\x80 |0 \xE4\x81 |0 \xE4\x82 |0 \xE4\x83 |0 \xE4\x84 |0 \xE4\x85 |0 \xE4\x86 |0 \xE4\x87 |0 \xE4\x88 |0 \xE4\x89 |0 \xE4\x8A |0 \xE4\x8B |0 \xE4\x8C |0 \xE4\x8D |0 \xE4\x8E |0 \xE4\x8F |0 \xE4\x90 |0 \xE4\x91 |0 \xE4\x92 |0 \xE4\x93 |0 \xE4\x94 |0 \xE4\x95 |0 \xE4\x96 |0 \xE4\x97 |0 \xE4\x98 |0 \xE4\x99 |0 \xE4\x9A |0 \xE4\x9B |0 \xE4\x9C |0 \xE4\x9D |0 \xE4\x9E |0 \xE4\x9F |0 \xE4\xA0 |0 \xE4\xA1 |0 \xE4\xA2 |0 \xE4\xA3 |0 \xE4\xA4 |0 \xE4\xA5 |0 \xE4\xA6 |0 \xE4\xA7 |0 \xE4\xA8 |0 \xE4\xA9 |0 \xE4\xAA |0 \xE4\xAB |0 \xE4\xAC |0 \xE4\xAD |0 \xE4\xAE |0 \xE4\xAF |0 \xE4\xB0 |0 \xE4\xB1 |0 \xE4\xB2 |0 \xE4\xB3 |0 \xE4\xB4 |0 \xE4\xB5 |0 \xE4\xB6 |0 \xE4\xB7 |0 \xE4\xB8 |0 \xE4\xB9 |0 \xE4\xBA |0 \xE4\xBB |0 \xE4\xBC |0 \xE4\xBD |0 \xE4\xBE |0 \xE4\xBF |0 \xE4\xC0 |0 \xE4\xC1 |0 \xE4\xC2 |0 \xE4\xC3 |0 \xE4\xC4 |0 \xE4\xC5 |0 \xE4\xC6 |0 \xE4\xC7 |0 \xE4\xC8 |0 \xE4\xC9 |0 \xE4\xCA |0 \xE4\xCB |0 \xE4\xCC |0 \xE4\xCD |0 \xE4\xCE |0 \xE4\xCF |0 \xE4\xD0 |0 \xE4\xD1 |0 \xE4\xD2 |0 \xE4\xD3 |0 \xE4\xD4 |0 \xE4\xD5 |0 \xE4\xD6 |0 \xE4\xD7 |0 \xE4\xD8 |0 \xE4\xD9 |0 \xE4\xDA |0 \xE4\xDB |0 \xE4\xDC |0 \xE4\xDD |0 \xE4\xDE |0 \xE4\xDF |0 \xE4\xE0 |0 \xE4\xE1 |0 \xE4\xE2 |0 \xE4\xE3 |0 \xE4\xE4 |0 \xE4\xE5 |0 \xE4\xE6 |0 \xE4\xE7 |0 \xE4\xE8 |0 \xE4\xE9 |0 \xE4\xEA |0 \xE4\xEB |0 \xE4\xEC |0 \xE4\xED |0 \xE4\xEE |0 \xE4\xEF |0 \xE4\xF0 |0 \xE4\xF1 |0 \xE4\xF2 |0 \xE4\xF3 |0 \xE4\xF4 |0 \xE4\xF5 |0 \xE4\xF6 |0 \xE4\xF7 |0 \xE4\xF8 |0 \xE4\xF9 |0 \xE4\xFA |0 \xE4\xFB |0 \xE4\xFC |0 \xE4\xFD |0 \xE4\xFE |0 \xE5\x41 |0 \xE5\x42 |0 \xE5\x43 |0 \xE5\x44 |0 \xE5\x45 |0 \xE5\x46 |0 \xE5\x47 |0 \xE5\x48 |0 \xE5\x49 |0 \xE5\x4A |0 \xE5\x4B |0 \xE5\x4C |0 \xE5\x4D |0 \xE5\x4E |0 \xE5\x4F |0 \xE5\x50 |0 \xE5\x51 |0 \xE5\x52 |0 \xE5\x53 |0 \xE5\x54 |0 \xE5\x55 |0 \xE5\x56 |0 \xE5\x57 |0 \xE5\x58 |0 \xE5\x59 |0 \xE5\x5A |0 \xE5\x5B |0 \xE5\x5C |0 \xE5\x5D |0 \xE5\x5E |0 \xE5\x5F |0 \xE5\x60 |0 \xE5\x61 |0 \xE5\x62 |0 \xE5\x63 |0 \xE5\x64 |0 \xE5\x65 |0 \xE5\x66 |0 \xE5\x67 |0 \xE5\x68 |0 \xE5\x69 |0 \xE5\x6A |0 \xE5\x6B |0 \xE5\x6C |0 \xE5\x6D |0 \xE5\x6E |0 \xE5\x6F |0 \xE5\x70 |0 \xE5\x71 |0 \xE5\x72 |0 \xE5\x73 |0 \xE5\x74 |0 \xE5\x75 |0 \xE5\x76 |0 \xE5\x77 |0 \xE5\x78 |0 \xE5\x79 |0 \xE5\x7A |0 \xE5\x7B |0 \xE5\x7C |0 \xE5\x7D |0 \xE5\x7E |0 \xE5\x7F |0 \xE5\x80 |0 \xE5\x81 |0 \xE5\x82 |0 \xE5\x83 |0 \xE5\x84 |0 \xE5\x85 |0 \xE5\x86 |0 \xE5\x87 |0 \xE5\x88 |0 \xE5\x89 |0 \xE5\x8A |0 \xE5\x8B |0 \xE5\x8C |0 \xE5\x8D |0 \xE5\x8E |0 \xE5\x8F |0 \xE5\x90 |0 \xE5\x91 |0 \xE5\x92 |0 \xE5\x93 |0 \xE5\x94 |0 \xE5\x95 |0 \xE5\x96 |0 \xE5\x97 |0 \xE5\x98 |0 \xE5\x99 |0 \xE5\x9A |0 \xE5\x9B |0 \xE5\x9C |0 \xE5\x9D |0 \xE5\x9E |0 \xE5\x9F |0 \xE5\xA0 |0 \xE5\xA1 |0 \xE5\xA2 |0 \xE5\xA3 |0 \xE5\xA4 |0 \xE5\xA5 |0 \xE5\xA6 |0 \xE5\xA7 |0 \xE5\xA8 |0 \xE5\xA9 |0 \xE5\xAA |0 \xE5\xAB |0 \xE5\xAC |0 \xE5\xAD |0 \xE5\xAE |0 \xCE\x82 |0 \xE5\xAF |0 \xE5\xB0 |0 \xE5\xB1 |0 \xE5\xB2 |0 \xE5\xB3 |0 \xE5\xB4 |0 \xE5\xB5 |0 \xE5\xB6 |0 \xE5\xB7 |0 \xE5\xB8 |0 \xE5\xB9 |0 \xE5\xBA |0 \xE5\xBB |0 \xE5\xBC |0 \xE5\xBD |0 \xE5\xBE |0 \xE5\xBF |0 \xE5\xC0 |0 \xE5\xC1 |0 \xE5\xC2 |0 \xE5\xC3 |0 \xE5\xC4 |0 \xE5\xC5 |0 \xE5\xC6 |0 \xE5\xC7 |0 \xE5\xC8 |0 \xE5\xC9 |0 \xE5\xCA |0 \xE5\xCB |0 \xE5\xCC |0 \xE5\xCD |0 \xE5\xCE |0 \xE5\xCF |0 \xE5\xD0 |0 \xE5\xD1 |0 \xE5\xD2 |0 \xE5\xD3 |0 \xE5\xD4 |0 \xE5\xD5 |0 \xE5\xD6 |0 \xE5\xD7 |0 \xE5\xD8 |0 \xE5\xD9 |0 \xE5\xDA |0 \xE5\xDB |0 \xE5\xDC |0 \xE5\xDD |0 \xE5\xDE |0 \xE5\xDF |0 \xE5\xE0 |0 \xE5\xE1 |0 \xE5\xE2 |0 \xE5\xE3 |0 \xE5\xE4 |0 \xE5\xE5 |0 \xE5\xE6 |0 \xE5\xE7 |0 \xE5\xE8 |0 \xE5\xE9 |0 \xE5\xEA |0 \xE5\xEB |0 \xE5\xEC |0 \xE5\xED |0 \xE5\xEE |0 \xE5\xEF |0 \xE5\xF0 |0 \xE5\xF1 |0 \xE5\xF2 |0 \xE5\xF3 |0 \xE5\xF4 |0 \xE5\xF5 |0 \xE5\xF6 |0 \xE5\xF7 |0 \xE5\xF8 |0 \xE5\xF9 |0 \xE5\xFA |0 \xE5\xFB |0 \xE5\xFC |0 \xE5\xFD |0 \xE5\xFE |0 \xE6\x41 |0 \xE6\x42 |0 \xE6\x43 |0 \xE6\x44 |0 \xE6\x45 |0 \xE6\x46 |0 \xE6\x47 |0 \xE6\x48 |0 \xE6\x49 |0 \xE6\x4A |0 \xE6\x4B |0 \xE6\x4C |0 \xE6\x4D |0 \xE6\x4E |0 \xE6\x4F |0 \xE6\x50 |0 \xE6\x51 |0 \xE6\x52 |0 \xE6\x53 |0 \xE6\x54 |0 \xE6\x55 |0 \xE6\x56 |0 \xE6\x57 |0 \xE6\x58 |0 \xE6\x59 |0 \xE6\x5A |0 \xE6\x5B |0 \xE6\x5C |0 \xE6\x5D |0 \xE6\x5E |0 \xE6\x5F |0 \xE6\x60 |0 \xE6\x61 |0 \xE6\x62 |0 \xE6\x63 |0 \xE6\x64 |0 \xE6\x65 |0 \xE6\x66 |0 \xE6\x67 |0 \xE6\x68 |0 \xE6\x69 |0 \xE6\x6A |0 \xE6\x6B |0 \xE6\x6C |0 \xE6\x6D |0 \xE6\x6E |0 \xE6\x6F |0 \xE6\x70 |0 \xE6\x71 |0 \xE6\x72 |0 \xE6\x73 |0 \xE6\x74 |0 \xE6\x75 |0 \xE6\x76 |0 \xE6\x77 |0 \xE6\x78 |0 \xE6\x79 |0 \xE6\x7A |0 \xE6\x7B |0 \xE6\x7C |0 \xE6\x7D |0 \xE6\x7E |0 \xE6\x7F |0 \xE6\x80 |0 \xE6\x81 |0 \xE6\x82 |0 \xE6\x83 |0 \xE6\x84 |0 \xE6\x85 |0 \xE6\x86 |0 \xE6\x87 |0 \xE6\x88 |0 \xE6\x89 |0 \xE6\x8A |0 \xE6\x8B |0 \xE6\x8C |0 \xE6\x8D |0 \xE6\x8E |0 \xE6\x8F |0 \xE6\x90 |0 \xE6\x91 |0 \xE6\x92 |0 \xE6\x93 |0 \xE6\x94 |0 \xE6\x95 |0 \xE6\x96 |0 \xE6\x97 |0 \xE6\x98 |0 \xE6\x99 |0 \xE6\x9A |0 \xE6\x9B |0 \xE6\x9C |0 \xE6\x9D |0 \xE6\x9E |0 \xE6\x9F |0 \xE6\xA0 |0 \xE6\xA1 |0 \xE6\xA2 |0 \xE6\xA3 |0 \xE6\xA4 |0 \xE6\xA5 |0 \xE6\xA6 |0 \xE6\xA7 |0 \xE6\xA8 |0 \xE6\xA9 |0 \xE6\xAA |0 \xE6\xAB |0 \xE6\xAC |0 \xE6\xAD |0 \xE6\xAE |0 \xE6\xAF |0 \xE6\xB0 |0 \xE6\xB1 |0 \xE6\xB2 |0 \xE6\xB3 |0 \xE6\xB4 |0 \xE6\xB5 |0 \xE6\xB6 |0 \xE6\xB7 |0 \xE6\xB8 |0 \xE6\xB9 |0 \xE6\xBA |0 \xE6\xBB |0 \xE6\xBC |0 \xE6\xBD |0 \xE6\xBE |0 \xE6\xBF |0 \xE6\xC0 |0 \xE6\xC1 |0 \xE6\xC2 |0 \xE6\xC3 |0 \xE6\xC4 |0 \xE6\xC5 |0 \xE6\xC6 |0 \xE6\xC7 |0 \xE6\xC8 |0 \xE6\xC9 |0 \xE6\xCA |0 \xE6\xCB |0 \xE6\xCC |0 \xE6\xCD |0 \xE6\xCE |0 \xE6\xCF |0 \xE6\xD0 |0 \xE6\xD1 |0 \xE6\xD2 |0 \xE6\xD3 |0 \xE6\xD4 |0 \xE6\xD5 |0 \xE6\xD6 |0 \xE6\xD7 |0 \xE6\xD8 |0 \xE6\xD9 |0 \xE6\xDA |0 \xE6\xDB |0 \xE6\xDC |0 \xE6\xDD |0 \xE6\xDE |0 \xE6\xDF |0 \xE6\xE0 |0 \xE6\xE1 |0 \xE6\xE2 |0 \xE6\xE3 |0 \xE6\xE4 |0 \xE6\xE5 |0 \xE6\xE6 |0 \xE6\xE7 |0 \xE6\xE8 |0 \xE6\xE9 |0 \xE6\xEA |0 \xE6\xEB |0 \xE6\xEC |0 \xE6\xED |0 \xE6\xEE |0 \xE6\xEF |0 \xE6\xF0 |0 \xE6\xF1 |0 \xE6\xF2 |0 \xE6\xF3 |0 \xE6\xF4 |0 \xE6\xF5 |0 \xE6\xF6 |0 \xE6\xF7 |0 \xE6\xF8 |0 \xE6\xF9 |0 \xE6\xFA |0 \xE6\xFB |0 \xE6\xFC |0 \xE6\xFD |0 \xE6\xFE |0 \xE7\x41 |0 \xE7\x42 |0 \xE7\x43 |0 \xE7\x44 |0 \xE7\x45 |0 \xE7\x46 |0 \xE7\x47 |0 \xE7\x48 |0 \xE7\x49 |0 \xE7\x4A |0 \xE7\x4B |0 \xE7\x4C |0 \xE7\x4D |0 \xE7\x4E |0 \xE7\x4F |0 \xE7\x50 |0 \xE7\x51 |0 \xE7\x52 |0 \xE7\x53 |0 \xE7\x54 |0 \xE7\x55 |0 \xE7\x56 |0 \xE7\x57 |0 \xE7\x58 |0 \xE7\x59 |0 \xE7\x5A |0 \xE7\x5B |0 \xE7\x5C |0 \xE7\x5D |0 \xE7\x5E |0 \xE7\x5F |0 \xE7\x60 |0 \xE7\x61 |0 \xE7\x62 |0 \xE7\x63 |0 \xE7\x64 |0 \xE7\x65 |0 \xE7\x66 |0 \xE7\x67 |0 \xE7\x68 |0 \xE7\x69 |0 \xE7\x6A |0 \xE7\x6B |0 \xE7\x6C |0 \xE7\x6D |0 \xE7\x6E |0 \xE7\x6F |0 \xE7\x70 |0 \xE7\x71 |0 \xE7\x72 |0 \xE7\x73 |0 \xE7\x74 |0 \xE7\x75 |0 \xE7\x76 |0 \xE7\x77 |0 \xE7\x78 |0 \xE7\x79 |0 \xE7\x7A |0 \xE7\x7B |0 \xE7\x7C |0 \xE7\x7D |0 \xE7\x7E |0 \xE7\x7F |0 \xE7\x80 |0 \xE7\x81 |0 \xE7\x82 |0 \xE7\x83 |0 \xE7\x84 |0 \xE7\x85 |0 \xE7\x86 |0 \xE7\x87 |0 \xE7\x88 |0 \xE7\x89 |0 \xE7\x8A |0 \xE7\x8B |0 \xE7\x8C |0 \xE7\x8D |0 \xE7\x8E |0 \xE7\x8F |0 \xE7\x90 |0 \xE7\x91 |0 \xE7\x92 |0 \xE7\x93 |0 \xE7\x94 |0 \xE7\x95 |0 \xE7\x96 |0 \xE7\x97 |0 \xE7\x98 |0 \xE7\x99 |0 \xE7\x9A |0 \xE7\x9B |0 \xE7\x9C |0 \xE7\x9D |0 \xE7\x9E |0 \xE7\x9F |0 \xE7\xA0 |0 \xE7\xA1 |0 \xE7\xA2 |0 \xE7\xA3 |0 \xE7\xA4 |0 \xE7\xA5 |0 \xE7\xA6 |0 \xE7\xA7 |0 \xCE\x84 |0 \xE7\xA8 |0 \xE7\xA9 |0 \xE7\xAA |0 \xE7\xAB |0 \xE7\xAC |0 \xE7\xAD |0 \xE7\xAE |0 \xE7\xAF |0 \xE7\xB0 |0 \xE7\xB1 |0 \xE7\xB2 |0 \xE7\xB3 |0 \xE7\xB4 |0 \xE7\xB5 |0 \xE7\xB6 |0 \xE7\xB7 |0 \xE7\xB8 |0 \xE7\xB9 |0 \xE7\xBA |0 \xE7\xBB |0 \xCE\x83 |0 \xE7\xBC |0 \xE7\xBD |0 \xE7\xBE |0 \xE7\xBF |0 \xE7\xC0 |0 \xE7\xC1 |0 \xE7\xC2 |0 \xE7\xC3 |0 \xE7\xC4 |0 \xE7\xC5 |0 \xE7\xC6 |0 \xE7\xC7 |0 \xE7\xC8 |0 \xE7\xC9 |0 \xE7\xCA |0 \xE7\xCB |0 \xE7\xCC |0 \xE7\xCD |0 \xE7\xCE |0 \xE7\xCF |0 \xE7\xD0 |0 \xE7\xD1 |0 \xE7\xD2 |0 \xE7\xD3 |0 \xE7\xD4 |0 \xE7\xD5 |0 \xE7\xD6 |0 \xE7\xD7 |0 \xE7\xD8 |0 \xE7\xD9 |0 \xE7\xDA |0 \xE7\xDB |0 \xE7\xDC |0 \xE7\xDD |0 \xE7\xDE |0 \xE7\xDF |0 \xE7\xE0 |0 \xE7\xE1 |0 \xE7\xE2 |0 \xE7\xE3 |0 \xE7\xE4 |0 \xE7\xE5 |0 \xE7\xE6 |0 \xE7\xE7 |0 \xE7\xE8 |0 \xE7\xE9 |0 \xE7\xEA |0 \xE7\xEB |0 \xE7\xEC |0 \xE7\xED |0 \xE7\xEE |0 \xE7\xEF |0 \xE7\xF0 |0 \xE7\xF1 |0 \xE7\xF2 |0 \xE7\xF3 |0 \xE7\xF4 |0 \xE7\xF5 |0 \xE7\xF6 |0 \xE7\xF7 |0 \xE7\xF8 |0 \xE7\xF9 |0 \xE7\xFA |0 \xE7\xFB |0 \xE7\xFC |0 \xE7\xFD |0 \xE7\xFE |0 \xE8\x41 |0 \xE8\x42 |0 \xE8\x43 |0 \xE8\x44 |0 \xE8\x45 |0 \xE8\x46 |0 \xE8\x47 |0 \xE8\x48 |0 \xE8\x49 |0 \xE8\x4A |0 \xE8\x4B |0 \xE8\x4C |0 \xE8\x4D |0 \xE8\x4E |0 \xE8\x4F |0 \xE8\x50 |0 \xE8\x51 |0 \xE8\x52 |0 \xE8\x53 |0 \xE8\x54 |0 \xE8\x55 |0 \xE8\x56 |0 \xE8\x57 |0 \xE8\x58 |0 \xE8\x59 |0 \xE8\x5A |0 \xE8\x5B |0 \xE8\x5C |0 \xE8\x5D |0 \xE8\x5E |0 \xE8\x5F |0 \xE8\x60 |0 \xE8\x61 |0 \xE8\x62 |0 \xE8\x63 |0 \xE8\x64 |0 \xE8\x65 |0 \xE8\x66 |0 \xE8\x67 |0 \xE8\x68 |0 \xE8\x69 |0 \xE8\x6A |0 \xE8\x6B |0 \xE8\x6C |0 \xE8\x6D |0 \xE8\x6E |0 \xE8\x6F |0 \xE8\x70 |0 \xE8\x71 |0 \xE8\x72 |0 \xE8\x73 |0 \xE8\x74 |0 \xE8\x75 |0 \xE8\x76 |0 \xE8\x77 |0 \xE8\x78 |0 \xE8\x79 |0 \xE8\x7A |0 \xE8\x7B |0 \xE8\x7C |0 \xE8\x7D |0 \xE8\x7E |0 \xE8\x7F |0 \xE8\x80 |0 \xE8\x81 |0 \xE8\x82 |0 \xE8\x83 |0 \xE8\x84 |0 \xE8\x85 |0 \xE8\x86 |0 \xE8\x87 |0 \xE8\x88 |0 \xE8\x89 |0 \xE8\x8A |0 \xE8\x8B |0 \xE8\x8C |0 \xE8\x8D |0 \xE8\x8E |0 \xE8\x8F |0 \xE8\x90 |0 \xE8\x91 |0 \xE8\x92 |0 \xE8\x93 |0 \xE8\x94 |0 \xE8\x95 |0 \xE8\x96 |0 \xE8\x97 |0 \xE8\x98 |0 \xE8\x99 |0 \xE8\x9A |0 \xE8\x9B |0 \xE8\x9C |0 \xE8\x9D |0 \xE8\x9E |0 \xE8\x9F |0 \xE8\xA0 |0 \xE8\xA1 |0 \xE8\xA2 |0 \xE8\xA3 |0 \xE8\xA4 |0 \xE8\xA5 |0 \xE8\xA6 |0 \xE8\xA7 |0 \xE8\xA8 |0 \xE8\xA9 |0 \xE8\xAA |0 \xE8\xAB |0 \xE8\xAC |0 \xE8\xAD |0 \xE8\xAE |0 \xE8\xAF |0 \xE8\xB0 |0 \xE8\xB1 |0 \xE8\xB2 |0 \xE8\xB3 |0 \xE8\xB4 |0 \xE8\xB5 |0 \xE8\xB6 |0 \xE8\xB7 |0 \xE8\xB8 |0 \xE8\xB9 |0 \xE8\xBA |0 \xE8\xBB |0 \xE8\xBC |0 \xE8\xBD |0 \xE8\xBE |0 \xCE\x86 |0 \xE8\xBF |0 \xE8\xC0 |0 \xE8\xC1 |0 \xE8\xC2 |0 \xE8\xC3 |0 \xCE\x87 |0 \xE8\xC4 |0 \xE8\xC5 |0 \xE8\xC6 |0 \xE8\xC7 |0 \xE8\xC8 |0 \xE8\xC9 |0 \xE8\xCA |0 \xE8\xCB |0 \xE8\xCC |0 \xE8\xCD |0 \xE8\xCE |0 \xE8\xCF |0 \xE8\xD0 |0 \xE8\xD1 |0 \xE8\xD2 |0 \xE8\xD3 |0 \xE8\xD4 |0 \xE8\xD5 |0 \xE8\xD6 |0 \xE8\xD7 |0 \xE8\xD8 |0 \xE8\xD9 |0 \xE8\xDA |0 \xE8\xDB |0 \xE8\xDC |0 \xE8\xDD |0 \xE8\xDE |0 \xE8\xDF |0 \xE8\xE0 |0 \xE8\xE1 |0 \xE8\xE2 |0 \xE8\xE3 |0 \xE8\xE4 |0 \xE8\xE5 |0 \xE8\xE6 |0 \xE8\xE7 |0 \xE8\xE8 |0 \xE8\xE9 |0 \xE8\xEA |0 \xE8\xEB |0 \xE8\xEC |0 \xE8\xED |0 \xE8\xEE |0 \xE8\xEF |0 \xE8\xF0 |0 \xE8\xF1 |0 \xE8\xF2 |0 \xE8\xF3 |0 \xE8\xF4 |0 \xE8\xF5 |0 \xE8\xF6 |0 \xE8\xF7 |0 \xE8\xF8 |0 \xE8\xF9 |0 \xE8\xFA |0 \xE8\xFB |0 \xE8\xFC |0 \xE8\xFD |0 \xE8\xFE |0 \xE9\x41 |0 \xE9\x42 |0 \xE9\x43 |0 \xE9\x44 |0 \xE9\x45 |0 \xE9\x46 |0 \xE9\x47 |0 \xE9\x48 |0 \xE9\x49 |0 \xE9\x4A |0 \xE9\x4B |0 \xE9\x4C |0 \xE9\x4D |0 \xE9\x4E |0 \xE9\x4F |0 \xE9\x50 |0 \xE9\x51 |0 \xE9\x52 |0 \xE9\x53 |0 \xE9\x54 |0 \xE9\x55 |0 \xE9\x56 |0 \xE9\x57 |0 \xCE\x88 |0 \xE9\x58 |0 \xE9\x59 |0 \xE9\x5A |0 \xE9\x5B |0 \xE9\x5C |0 \xE9\x5D |0 \xE9\x5E |0 \xE9\x5F |0 \xE9\x60 |0 \xE9\x61 |0 \xE9\x62 |0 \xE9\x63 |0 \xE9\x64 |0 \xE9\x65 |0 \xE9\x66 |0 \xE9\x67 |0 \xCE\x89 |0 \xE9\x68 |0 \xE9\x69 |0 \xE9\x6A |0 \xE9\x6B |0 \xE9\x6C |0 \xE9\x6D |0 \xE9\x6E |0 \xE9\x6F |0 \xE9\x70 |0 \xE9\x71 |0 \xE9\x72 |0 \xE9\x73 |0 \xE9\x74 |0 \xE9\x75 |0 \xE9\x76 |0 \xE9\x77 |0 \xE9\x78 |0 \xE9\x79 |0 \xE9\x7A |0 \xE9\x7B |0 \xE9\x7C |0 \xE9\x7D |0 \xE9\x7E |0 \xE9\x7F |0 \xE9\x80 |0 \xE9\x81 |0 \xE9\x82 |0 \xE9\x83 |0 \xE9\x84 |0 \xE9\x85 |0 \xE9\x86 |0 \xE9\x87 |0 \xE9\x88 |0 \xE9\x89 |0 \xE9\x8A |0 \xE9\x8B |0 \xE9\x8C |0 \xE9\x8D |0 \xE9\x8E |0 \xE9\x8F |0 \xE9\x90 |0 \xE9\x91 |0 \xE9\x92 |0 \xE9\x93 |0 \xE9\x94 |0 \xE9\x95 |0 \xE9\x96 |0 \xE9\x97 |0 \xE9\x98 |0 \xE9\x99 |0 \xE9\x9A |0 \xE9\x9B |0 \xE9\x9C |0 \xE9\x9D |0 \xE9\x9E |0 \xE9\x9F |0 \xE9\xA0 |0 \xE9\xA1 |0 \xE9\xA2 |0 \xE9\xA3 |0 \xE9\xA4 |0 \xE9\xA5 |0 \xE9\xA6 |0 \xE9\xA7 |0 \xE9\xA8 |0 \xE9\xA9 |0 \xE9\xAA |0 \xE9\xAB |0 \xE9\xAC |0 \xE9\xAD |0 \xE9\xAE |0 \xE9\xAF |0 \xE9\xB0 |0 \xE9\xB1 |0 \xE9\xB2 |0 \xE9\xB3 |0 \xE9\xB4 |0 \xE9\xB5 |0 \xE9\xB6 |0 \xE9\xB7 |0 \xE9\xB8 |0 \xE9\xB9 |0 \xE9\xBA |0 \xE9\xBB |0 \xE9\xBC |0 \xE9\xBD |0 \xE9\xBE |0 \xE9\xBF |0 \xE9\xC0 |0 \xE9\xC1 |0 \xE9\xC2 |0 \xE9\xC3 |0 \xE9\xC4 |0 \xE9\xC5 |0 \xE9\xC6 |0 \xE9\xC7 |0 \xE9\xC8 |0 \xE9\xC9 |0 \xE9\xCA |0 \xE9\xCB |0 \xE9\xCC |0 \xE9\xCD |0 \xE9\xCE |0 \xE9\xCF |0 \xE9\xD0 |0 \xE9\xD1 |0 \xE9\xD2 |0 \xE9\xD3 |0 \xE9\xD4 |0 \xE9\xD5 |0 \xE9\xD6 |0 \xE9\xD7 |0 \xE9\xD8 |0 \xE9\xD9 |0 \xE9\xDA |0 \xE9\xDB |0 \xE9\xDC |0 \xE9\xDD |0 \xE9\xDE |0 \xE9\xDF |0 \xE9\xE0 |0 \xE9\xE1 |0 \xE9\xE2 |0 \xE9\xE3 |0 \xE9\xE4 |0 \xE9\xE5 |0 \xE9\xE6 |0 \xE9\xE7 |0 \xE9\xE8 |0 \xE9\xE9 |0 \xE9\xEA |0 \xE9\xEB |0 \xE9\xEC |0 \xE9\xED |0 \xE9\xEE |0 \xE9\xEF |0 \xE9\xF0 |0 \xE9\xF1 |0 \xE9\xF2 |0 \xE9\xF3 |0 \xE9\xF4 |0 \xE9\xF5 |0 \xE9\xF6 |0 \xE9\xF7 |0 \xE9\xF8 |0 \xE9\xF9 |0 \xE9\xFA |0 \xE9\xFB |0 \xE9\xFC |0 \xE9\xFD |0 \xE9\xFE |0 \xEA\x41 |0 \xEA\x42 |0 \xEA\x43 |0 \xEA\x44 |0 \xEA\x45 |0 \xEA\x46 |0 \xEA\x47 |0 \xEA\x48 |0 \xEA\x49 |0 \xEA\x4A |0 \xEA\x4B |0 \xEA\x4C |0 \xEA\x4D |0 \xEA\x4E |0 \xEA\x4F |0 \xEA\x50 |0 \xEA\x51 |0 \xEA\x52 |0 \xEA\x53 |0 \xEA\x54 |0 \xEA\x55 |0 \xEA\x56 |0 \xEA\x57 |0 \xEA\x58 |0 \xEA\x59 |0 \xEA\x5A |0 \xEA\x5B |0 \xEA\x5C |0 \xEA\x5D |0 \xEA\x5E |0 \xEA\x5F |0 \xEA\x60 |0 \xEA\x61 |0 \xEA\x62 |0 \xEA\x63 |0 \xEA\x64 |0 \xEA\x65 |0 \xEA\x66 |0 \xEA\x67 |0 \xEA\x68 |0 \xEA\x69 |0 \xEA\x6A |0 \xEA\x6B |0 \xEA\x6C |0 \xEA\x6D |0 \xEA\x6E |0 \xEA\x6F |0 \xEA\x70 |0 \xEA\x71 |0 \xEA\x72 |0 \xEA\x73 |0 \xEA\x74 |0 \xEA\x75 |0 \xEA\x76 |0 \xEA\x77 |0 \xEA\x78 |0 \xEA\x79 |0 \xEA\x7A |0 \xEA\x7B |0 \xEA\x7C |0 \xEA\x7D |0 \xEA\x7E |0 \xEA\x7F |0 \xEA\x80 |0 \xEA\x81 |0 \xEA\x82 |0 \xEA\x83 |0 \xEA\x84 |0 \xEA\x85 |0 \xEA\x86 |0 \xEA\x87 |0 \xEA\x88 |0 \xEA\x89 |0 \xEA\x8A |0 \xEA\x8B |0 \xEA\x8C |0 \xEA\x8D |0 \xEA\x8E |0 \xEA\x8F |0 \xEA\x90 |0 \xEA\x91 |0 \xEA\x92 |0 \xEA\x93 |0 \xEA\x94 |0 \xEA\x95 |0 \xEA\x96 |0 \xEA\x97 |0 \xEA\x98 |0 \xEA\x99 |0 \xEA\x9A |0 \xEA\x9B |0 \xEA\x9C |0 \xEA\x9D |0 \xEA\x9E |0 \xEA\x9F |0 \xEA\xA0 |0 \xEA\xA1 |0 \xEA\xA2 |0 \xEA\xA3 |0 \xEA\xA4 |0 \xEA\xA5 |0 \xEA\xA6 |0 \xEA\xA7 |0 \xEA\xA8 |0 \xEA\xA9 |0 \xEA\xAA |0 \xEA\xAB |0 \xEA\xAC |0 \xEA\xAD |0 \xEA\xAE |0 \xEA\xAF |0 \xEA\xB0 |0 \xEA\xB1 |0 \xEA\xB2 |0 \xEA\xB3 |0 \xEA\xB4 |0 \xEA\xB5 |0 \xEA\xB6 |0 \xEA\xB7 |0 \xEA\xB8 |0 \xEA\xB9 |0 \xEA\xBA |0 \xEA\xBB |0 \xEA\xBC |0 \xEA\xBD |0 \xEA\xBE |0 \xEA\xBF |0 \xEA\xC0 |0 \xEA\xC1 |0 \xEA\xC2 |0 \xEA\xC3 |0 \xEA\xC4 |0 \xEA\xC5 |0 \xEA\xC6 |0 \xEA\xC7 |0 \xEA\xC8 |0 \xEA\xC9 |0 \xEA\xCA |0 \xEA\xCB |0 \xEA\xCC |0 \xEA\xCD |0 \xEA\xCE |0 \xEA\xCF |0 \xEA\xD0 |0 \xEA\xD1 |0 \xEA\xD2 |0 \xEA\xD3 |0 \xEA\xD4 |0 \xEA\xD5 |0 \xEA\xD6 |0 \xEA\xD7 |0 \xEA\xD8 |0 \xEA\xD9 |0 \xEA\xDA |0 \xEA\xDB |0 \xEA\xDC |0 \xEA\xDD |0 \xEA\xDE |0 \xEA\xDF |0 \xEA\xE0 |0 \xEA\xE1 |0 \xEA\xE2 |0 \xEA\xE3 |0 \xEA\xE4 |0 \xEA\xE5 |0 \xEA\xE6 |0 \xEA\xE7 |0 \xEA\xE8 |0 \xEA\xE9 |0 \xEA\xEA |0 \xEA\xEB |0 \xEA\xEC |0 \xEA\xED |0 \xEA\xEE |0 \xEA\xEF |0 \xEA\xF0 |0 \xEA\xF1 |0 \xEA\xF2 |0 \xEA\xF3 |0 \xEA\xF4 |0 \xEA\xF5 |0 \xEA\xF6 |0 \xEA\xF7 |0 \xEA\xF8 |0 \xEA\xF9 |0 \xEA\xFA |0 \xEA\xFB |0 \xEA\xFC |0 \xEA\xFD |0 \xEA\xFE |0 \xEB\x41 |0 \xEB\x42 |0 \xEB\x43 |0 \xEB\x44 |0 \xEB\x45 |0 \xEB\x46 |0 \xEB\x47 |0 \xEB\x48 |0 \xEB\x49 |0 \xEB\x4A |0 \xEB\x4B |0 \xEB\x4C |0 \xEB\x4D |0 \xEB\x4E |0 \xEB\x4F |0 \xEB\x50 |0 \xEB\x51 |0 \xEB\x52 |0 \xEB\x53 |0 \xEB\x54 |0 \xEB\x55 |0 \xEB\x56 |0 \xEB\x57 |0 \xEB\x58 |0 \xEB\x59 |0 \xEB\x5A |0 \xEB\x5B |0 \xEB\x5C |0 \xEB\x5D |0 \xEB\x5E |0 \xEB\x5F |0 \xEB\x60 |0 \xEB\x61 |0 \xEB\x62 |0 \xEB\x63 |0 \xEB\x64 |0 \xEB\x65 |0 \xEB\x66 |0 \xEB\x67 |0 \xEB\x68 |0 \xEB\x69 |0 \xEB\x6A |0 \xEB\x6B |0 \xEB\x6C |0 \xEB\x6D |0 \xEB\x6E |0 \xEB\x6F |0 \xEB\x70 |0 \xEB\x71 |0 \xEB\x72 |0 \xEB\x73 |0 \xEB\x74 |0 \xEB\x75 |0 \xEB\x76 |0 \xEB\x77 |0 \xEB\x78 |0 \xEB\x79 |0 \xEB\x7A |0 \xEB\x7B |0 \xEB\x7C |0 \xEB\x7D |0 \xEB\x7E |0 \xEB\x7F |0 \xEB\x80 |0 \xEB\x81 |0 \xEB\x82 |0 \xEB\x83 |0 \xEB\x84 |0 \xEB\x85 |0 \xEB\x86 |0 \xEB\x87 |0 \xEB\x88 |0 \xEB\x89 |0 \xEB\x8A |0 \xEB\x8B |0 \xEB\x8C |0 \xEB\x8D |0 \xEB\x8E |0 \xEB\x8F |0 \xEB\x90 |0 \xEB\x91 |0 \xEB\x92 |0 \xEB\x93 |0 \xEB\x94 |0 \xEB\x95 |0 \xEB\x96 |0 \xEB\x97 |0 \xEB\x98 |0 \xEB\x99 |0 \xEB\x9A |0 \xEB\x9B |0 \xEB\x9C |0 \xEB\x9D |0 \xEB\x9E |0 \xEB\x9F |0 \xEB\xA0 |0 \xEB\xA1 |0 \xEB\xA2 |0 \xEB\xA3 |0 \xEB\xA4 |0 \xCE\x8B |0 \xEB\xA5 |0 \xEB\xA6 |0 \xEB\xA7 |0 \xEB\xA8 |0 \xEB\xA9 |0 \xEB\xAA |0 \xEB\xAB |0 \xEB\xAC |0 \xEB\xAD |0 \xEB\xAE |0 \xEB\xAF |0 \xEB\xB0 |0 \xEB\xB1 |0 \xEB\xB2 |0 \xEB\xB3 |0 \xEB\xB4 |0 \xEB\xB5 |0 \xEB\xB6 |0 \xEB\xB7 |0 \xEB\xB8 |0 \xEB\xB9 |0 \xEB\xBA |0 \xEB\xBB |0 \xEB\xBC |0 \xEB\xBD |0 \xEB\xBE |0 \xEB\xBF |0 \xEB\xC0 |0 \xEB\xC1 |0 \xEB\xC2 |0 \xEB\xC3 |0 \xEB\xC4 |0 \xEB\xC5 |0 \xEB\xC6 |0 \xEB\xC7 |0 \xEB\xC8 |0 \xEB\xC9 |0 \xEB\xCA |0 \xEB\xCB |0 \xEB\xCC |0 \xEB\xCD |0 \xEB\xCE |0 \xEB\xCF |0 \xEB\xD0 |0 \xEB\xD1 |0 \xEB\xD2 |0 \xEB\xD3 |0 \xEB\xD4 |0 \xEB\xD5 |0 \xEB\xD6 |0 \xCE\x8C |0 \xEB\xD7 |0 \xEB\xD8 |0 \xCE\x8D |0 \xEB\xD9 |0 \xEB\xDA |0 \xEB\xDB |0 \xEB\xDC |0 \xCE\x8E |0 \xCE\x8F |0 \xEB\xDD |0 \xCE\x90 |0 \xCE\x91 |0 \xEB\xDE |0 \xEB\xDF |0 \xEB\xE0 |0 \xEB\xE1 |0 \xEB\xE2 |0 \xEB\xE3 |0 \xEB\xE4 |0 \xEB\xE5 |0 \xEB\xE6 |0 \xEB\xE7 |0 \xEB\xE8 |0 \xEB\xE9 |0 \xEB\xEA |0 \xEB\xEB |0 \xEB\xEC |0 \xEB\xED |0 \xEB\xEE |0 \xEB\xEF |0 \xEB\xF0 |0 \xEB\xF1 |0 \xCE\x93 |0 \xEB\xF2 |0 \xEB\xF3 |0 \xEB\xF4 |0 \xCE\x92 |0 \xEB\xF5 |0 \xEB\xF6 |0 \xEB\xF7 |0 \xEB\xF8 |0 \xEB\xF9 |0 \xEB\xFA |0 \xEB\xFB |0 \xEB\xFC |0 \xEB\xFD |0 \xEB\xFE |0 \xEC\x41 |0 \xEC\x42 |0 \xEC\x43 |0 \xEC\x44 |0 \xEC\x45 |0 \xEC\x46 |0 \xEC\x47 |0 \xEC\x48 |0 \xEC\x49 |0 \xEC\x4A |0 \xEC\x4B |0 \xEC\x4C |0 \xCE\x95 |0 \xCE\x94 |0 \xEC\x4D |0 \xEC\x4E |0 \xEC\x4F |0 \xEC\x50 |0 \xEC\x51 |0 \xEC\x52 |0 \xEC\x53 |0 \xEC\x54 |0 \xEC\x55 |0 \xEC\x56 |0 \xEC\x57 |0 \xEC\x58 |0 \xEC\x59 |0 \xEC\x5A |0 \xEC\x5B |0 \xEC\x5C |0 \xEC\x5D |0 \xEC\x5E |0 \xEC\x5F |0 \xEC\x60 |0 \xEC\x61 |0 \xEC\x62 |0 \xEC\x63 |0 \xEC\x64 |0 \xEC\x65 |0 \xEC\x66 |0 \xEC\x67 |0 \xEC\x68 |0 \xEC\x69 |0 \xEC\x6A |0 \xEC\x6B |0 \xEC\x6C |0 \xEC\x6D |0 \xEC\x6E |0 \xEC\x6F |0 \xEC\x70 |0 \xEC\x71 |0 \xEC\x72 |0 \xEC\x73 |0 \xEC\x74 |0 \xEC\x75 |0 \xEC\x76 |0 \xEC\x77 |0 \xEC\x78 |0 \xEC\x79 |0 \xEC\x7A |0 \xEC\x7B |0 \xEC\x7C |0 \xEC\x7D |0 \xEC\x7E |0 \xEC\x7F |0 \xEC\x80 |0 \xEC\x81 |0 \xEC\x82 |0 \xEC\x83 |0 \xEC\x84 |0 \xEC\x85 |0 \xEC\x86 |0 \xEC\x87 |0 \xEC\x88 |0 \xEC\x89 |0 \xEC\x8A |0 \xEC\x8B |0 \xEC\x8C |0 \xEC\x8D |0 \xEC\x8E |0 \xEC\x8F |0 \xEC\x90 |0 \xEC\x91 |0 \xEC\x92 |0 \xEC\x93 |0 \xEC\x94 |0 \xEC\x95 |0 \xEC\x96 |0 \xEC\x97 |0 \xEC\x98 |0 \xEC\x99 |0 \xEC\x9A |0 \xEC\x9B |0 \xEC\x9C |0 \xEC\x9D |0 \xEC\x9E |0 \xEC\x9F |0 \xEC\xA0 |0 \xEC\xA1 |0 \xEC\xA2 |0 \xEC\xA3 |0 \xEC\xA4 |0 \xEC\xA5 |0 \xEC\xA6 |0 \xEC\xA7 |0 \xEC\xA8 |0 \xEC\xA9 |0 \xEC\xAA |0 \xEC\xAB |0 \xEC\xAC |0 \xEC\xAD |0 \xEC\xAE |0 \xEC\xAF |0 \xEC\xB0 |0 \xEC\xB1 |0 \xEC\xB2 |0 \xEC\xB3 |0 \xEC\xB4 |0 \xEC\xB5 |0 \xEC\xB6 |0 \xEC\xB7 |0 \xEC\xB8 |0 \xEC\xB9 |0 \xEC\xBA |0 \xEC\xBB |0 \xEC\xBC |0 \xEC\xBD |0 \xEC\xBE |0 \xEC\xBF |0 \xEC\xC0 |0 \xEC\xC1 |0 \xEC\xC2 |0 \xEC\xC3 |0 \xEC\xC4 |0 \xEC\xC5 |0 \xEC\xC6 |0 \xEC\xC7 |0 \xEC\xC8 |0 \xEC\xC9 |0 \xEC\xCA |0 \xEC\xCB |0 \xEC\xCC |0 \xEC\xCD |0 \xEC\xCE |0 \xEC\xCF |0 \xEC\xD0 |0 \xEC\xD1 |0 \xEC\xD2 |0 \xEC\xD3 |0 \xEC\xD4 |0 \xEC\xD5 |0 \xEC\xD6 |0 \xEC\xD7 |0 \xEC\xD8 |0 \xEC\xD9 |0 \xEC\xDA |0 \xEC\xDB |0 \xEC\xDC |0 \xEC\xDD |0 \xEC\xDE |0 \xEC\xDF |0 \xEC\xE0 |0 \xEC\xE1 |0 \xEC\xE2 |0 \xEC\xE3 |0 \xEC\xE4 |0 \xEC\xE5 |0 \xEC\xE6 |0 \xEC\xE7 |0 \xEC\xE8 |0 \xEC\xE9 |0 \xEC\xEA |0 \xEC\xEB |0 \xEC\xEC |0 \xEC\xED |0 \xEC\xEE |0 \xEC\xEF |0 \xEC\xF0 |0 \xEC\xF1 |0 \xEC\xF2 |0 \xEC\xF3 |0 \xEC\xF4 |0 \xEC\xF5 |0 \xEC\xF6 |0 \xEC\xF7 |0 \xEC\xF8 |0 \xEC\xF9 |0 \xEC\xFA |0 \xEC\xFB |0 \xEC\xFC |0 \xEC\xFD |0 \xEC\xFE |0 \xED\x41 |0 \xED\x42 |0 \xED\x43 |0 \xED\x44 |0 \xED\x45 |0 \xED\x46 |0 \xED\x47 |0 \xED\x48 |0 \xED\x49 |0 \xED\x4A |0 \xED\x4B |0 \xED\x4C |0 \xED\x4D |0 \xED\x4E |0 \xED\x4F |0 \xED\x50 |0 \xED\x51 |0 \xED\x52 |0 \xED\x53 |0 \xED\x54 |0 \xED\x55 |0 \xED\x56 |0 \xED\x57 |0 \xED\x58 |0 \xED\x59 |0 \xED\x5A |0 \xED\x5B |0 \xED\x5C |0 \xED\x5D |0 \xED\x5E |0 \xED\x5F |0 \xED\x60 |0 \xED\x61 |0 \xED\x62 |0 \xED\x63 |0 \xED\x64 |0 \xED\x65 |0 \xED\x66 |0 \xED\x67 |0 \xED\x68 |0 \xED\x69 |0 \xED\x6A |0 \xED\x6B |0 \xED\x6C |0 \xED\x6D |0 \xED\x6E |0 \xED\x6F |0 \xED\x70 |0 \xED\x71 |0 \xED\x72 |0 \xED\x73 |0 \xED\x74 |0 \xED\x75 |0 \xED\x76 |0 \xED\x77 |0 \xED\x78 |0 \xED\x79 |0 \xED\x7A |0 \xED\x7B |0 \xED\x7C |0 \xED\x7D |0 \xED\x7E |0 \xED\x7F |0 \xED\x80 |0 \xED\x81 |0 \xED\x82 |0 \xED\x83 |0 \xED\x84 |0 \xED\x85 |0 \xED\x86 |0 \xED\x87 |0 \xED\x88 |0 \xED\x89 |0 \xED\x8A |0 \xED\x8B |0 \xED\x8C |0 \xED\x8D |0 \xED\x8E |0 \xED\x8F |0 \xED\x90 |0 \xED\x91 |0 \xED\x92 |0 \xED\x93 |0 \xED\x94 |0 \xED\x95 |0 \xED\x96 |0 \xED\x97 |0 \xED\x98 |0 \xED\x99 |0 \xED\x9A |0 \xED\x9B |0 \xED\x9C |0 \xED\x9D |0 \xED\x9E |0 \xED\x9F |0 \xED\xA0 |0 \xED\xA1 |0 \xED\xA2 |0 \xED\xA3 |0 \xED\xA4 |0 \xED\xA5 |0 \xED\xA6 |0 \xED\xA7 |0 \xED\xA8 |0 \xED\xA9 |0 \xED\xAA |0 \xED\xAB |0 \xED\xAC |0 \xED\xAD |0 \xED\xAE |0 \xED\xAF |0 \xED\xB0 |0 \xED\xB1 |0 \xED\xB2 |0 \xED\xB3 |0 \xED\xB4 |0 \xED\xB5 |0 \xED\xB6 |0 \xED\xB7 |0 \xED\xB8 |0 \xED\xB9 |0 \xED\xBA |0 \xED\xBB |0 \xED\xBC |0 \xED\xBD |0 \xED\xBE |0 \xED\xBF |0 \xED\xC0 |0 \xED\xC1 |0 \xED\xC2 |0 \xED\xC3 |0 \xED\xC4 |0 \xED\xC5 |0 \xED\xC6 |0 \xED\xC7 |0 \xED\xC8 |0 \xED\xC9 |0 \xED\xCA |0 \xED\xCB |0 \xED\xCC |0 \xED\xCD |0 \xED\xCE |0 \xED\xCF |0 \xED\xD0 |0 \xED\xD1 |0 \xED\xD2 |0 \xED\xD3 |0 \xED\xD4 |0 \xED\xD5 |0 \xED\xD6 |0 \xED\xD7 |0 \xED\xD8 |0 \xED\xD9 |0 \xED\xDA |0 \xED\xDB |0 \xED\xDC |0 \xED\xDD |0 \xED\xDE |0 \xED\xDF |0 \xED\xE0 |0 \xED\xE1 |0 \xED\xE2 |0 \xED\xE3 |0 \xED\xE4 |0 \xED\xE5 |0 \xED\xE6 |0 \xED\xE7 |0 \xED\xE8 |0 \xED\xE9 |0 \xED\xEA |0 \xED\xEB |0 \xED\xEC |0 \xED\xED |0 \xED\xEE |0 \xED\xEF |0 \xED\xF0 |0 \xED\xF1 |0 \xED\xF2 |0 \xED\xF3 |0 \xED\xF4 |0 \xED\xF5 |0 \xED\xF6 |0 \xED\xF7 |0 \xED\xF8 |0 \xED\xF9 |0 \xED\xFA |0 \xED\xFB |0 \xED\xFC |0 \xED\xFD |0 \xED\xFE |0 \xEE\x41 |0 \xEE\x42 |0 \xEE\x43 |0 \xEE\x44 |0 \xEE\x45 |0 \xEE\x46 |0 \xEE\x47 |0 \xEE\x48 |0 \xEE\x49 |0 \xEE\x4A |0 \xEE\x4B |0 \xEE\x4C |0 \xEE\x4D |0 \xEE\x4E |0 \xEE\x4F |0 \xEE\x50 |0 \xEE\x51 |0 \xEE\x52 |0 \xEE\x53 |0 \xEE\x54 |0 \xEE\x55 |0 \xEE\x56 |0 \xEE\x57 |0 \xEE\x58 |0 \xEE\x59 |0 \xEE\x5A |0 \xEE\x5B |0 \xEE\x5C |0 \xEE\x5D |0 \xEE\x5E |0 \xEE\x5F |0 \xEE\x60 |0 \xEE\x61 |0 \xEE\x62 |0 \xEE\x63 |0 \xEE\x64 |0 \xEE\x65 |0 \xEE\x66 |0 \xEE\x67 |0 \xEE\x68 |0 \xEE\x69 |0 \xEE\x6A |0 \xEE\x6B |0 \xEE\x6C |0 \xEE\x6D |0 \xEE\x6E |0 \xEE\x6F |0 \xEE\x70 |0 \xEE\x71 |0 \xEE\x72 |0 \xEE\x73 |0 \xEE\x74 |0 \xEE\x75 |0 \xEE\x76 |0 \xEE\x77 |0 \xEE\x78 |0 \xEE\x79 |0 \xEE\x7A |0 \xEE\x7B |0 \xEE\x7C |0 \xEE\x7D |0 \xEE\x7E |0 \xEE\x7F |0 \xEE\x80 |0 \xEE\x81 |0 \xEE\x82 |0 \xEE\x83 |0 \xEE\x84 |0 \xEE\x85 |0 \xEE\x86 |0 \xEE\x87 |0 \xEE\x88 |0 \xEE\x89 |0 \xEE\x8A |0 \xEE\x8B |0 \xEE\x8C |0 \xEE\x8D |0 \xEE\x8E |0 \xEE\x8F |0 \xEE\x90 |0 \xEE\x91 |0 \xEE\x92 |0 \xEE\x93 |0 \xEE\x94 |0 \xEE\x95 |0 \xEE\x96 |0 \xEE\x97 |0 \xEE\x98 |0 \xEE\x99 |0 \xEE\x9A |0 \xEE\x9B |0 \xEE\x9C |0 \xEE\x9D |0 \xEE\x9E |0 \xEE\x9F |0 \xEE\xA0 |0 \xEE\xA1 |0 \xEE\xA2 |0 \xEE\xA3 |0 \xEE\xA4 |0 \xEE\xA5 |0 \xEE\xA6 |0 \xEE\xA7 |0 \xEE\xA8 |0 \xEE\xA9 |0 \xEE\xAA |0 \xEE\xAB |0 \xEE\xAC |0 \xEE\xAD |0 \xEE\xAE |0 \xEE\xAF |0 \xEE\xB0 |0 \xEE\xB1 |0 \xEE\xB2 |0 \xEE\xB3 |0 \xEE\xB4 |0 \xEE\xB5 |0 \xEE\xB6 |0 \xEE\xB7 |0 \xEE\xB8 |0 \xEE\xB9 |0 \xEE\xBA |0 \xEE\xBB |0 \xEE\xBC |0 \xEE\xBD |0 \xEE\xBE |0 \xEE\xBF |0 \xEE\xC0 |0 \xEE\xC1 |0 \xEE\xC2 |0 \xEE\xC3 |0 \xEE\xC4 |0 \xEE\xC5 |0 \xEE\xC6 |0 \xEE\xC7 |0 \xEE\xC8 |0 \xEE\xC9 |0 \xEE\xCA |0 \xEE\xCB |0 \xEE\xCC |0 \xEE\xCD |0 \xEE\xCE |0 \xEE\xCF |0 \xEE\xD0 |0 \xEE\xD1 |0 \xEE\xD2 |0 \xEE\xD3 |0 \xEE\xD4 |0 \xEE\xD5 |0 \xEE\xD6 |0 \xEE\xD7 |0 \xEE\xD8 |0 \xEE\xD9 |0 \xEE\xDA |0 \xEE\xDB |0 \xEE\xDC |0 \xEE\xDD |0 \xEE\xDE |0 \xEE\xDF |0 \xEE\xE0 |0 \xEE\xE1 |0 \xEE\xE2 |0 \xEE\xE3 |0 \xEE\xE4 |0 \xEE\xE5 |0 \xEE\xE6 |0 \xEE\xE7 |0 \xEE\xE8 |0 \xEE\xE9 |0 \xEE\xEA |0 \xEE\xEB |0 \xEE\xEC |0 \xEE\xED |0 \xEE\xEE |0 \xEE\xEF |0 \xEE\xF0 |0 \xEE\xF1 |0 \xEE\xF2 |0 \xEE\xF3 |0 \xEE\xF4 |0 \xEE\xF5 |0 \xEE\xF6 |0 \xEE\xF7 |0 \xEE\xF8 |0 \xEE\xF9 |0 \xEE\xFA |0 \xEE\xFB |0 \xEE\xFC |0 \xEE\xFD |0 \xEE\xFE |0 \xEF\x41 |0 \xEF\x42 |0 \xEF\x43 |0 \xEF\x44 |0 \xEF\x45 |0 \xEF\x46 |0 \xEF\x47 |0 \xEF\x48 |0 \xEF\x49 |0 \xEF\x4A |0 \xEF\x4B |0 \xEF\x4C |0 \xEF\x4D |0 \xEF\x4E |0 \xEF\x4F |0 \xEF\x50 |0 \xEF\x51 |0 \xEF\x52 |0 \xEF\x53 |0 \xEF\x54 |0 \xEF\x55 |0 \xEF\x56 |0 \xEF\x57 |0 \xEF\x58 |0 \xEF\x59 |0 \xEF\x5A |0 \xEF\x5B |0 \xEF\x5C |0 \xEF\x5D |0 \xEF\x5E |0 \xEF\x5F |0 \xEF\x60 |0 \xEF\x61 |0 \xEF\x62 |0 \xEF\x63 |0 \xEF\x64 |0 \xEF\x65 |0 \xEF\x66 |0 \xEF\x67 |0 \xEF\x68 |0 \xEF\x69 |0 \xEF\x6A |0 \xEF\x6B |0 \xEF\x6C |0 \xEF\x6D |0 \xEF\x6E |0 \xEF\x6F |0 \xEF\x70 |0 \xEF\x71 |0 \xEF\x72 |0 \xEF\x73 |0 \xEF\x74 |0 \xEF\x75 |0 \xEF\x76 |0 \xEF\x77 |0 \xEF\x78 |0 \xEF\x79 |0 \xEF\x7A |0 \xEF\x7B |0 \xEF\x7C |0 \xEF\x7D |0 \xEF\x7E |0 \xEF\x7F |0 \xEF\x80 |0 \xEF\x81 |0 \xEF\x82 |0 \xEF\x83 |0 \xEF\x84 |0 \xEF\x85 |0 \xEF\x86 |0 \xEF\x87 |0 \xEF\x88 |0 \xEF\x89 |0 \xEF\x8A |0 \xEF\x8B |0 \xEF\x8C |0 \xEF\x8D |0 \xEF\x8E |0 \xEF\x8F |0 \xEF\x90 |0 \xEF\x91 |0 \xEF\x92 |0 \xEF\x93 |0 \xEF\x94 |0 \xEF\x95 |0 \xEF\x96 |0 \xEF\x97 |0 \xEF\x98 |0 \xEF\x99 |0 \xEF\x9A |0 \xEF\x9B |0 \xEF\x9C |0 \xEF\x9D |0 \xEF\x9E |0 \xEF\x9F |0 \xEF\xA0 |0 \xEF\xA1 |0 \xEF\xA2 |0 \xEF\xA3 |0 \xEF\xA4 |0 \xEF\xA5 |0 \xEF\xA6 |0 \xEF\xA7 |0 \xEF\xA8 |0 \xEF\xA9 |0 \xEF\xAA |0 \xEF\xAB |0 \xEF\xAC |0 \xEF\xAD |0 \xEF\xAE |0 \xEF\xAF |0 \xEF\xB0 |0 \xEF\xB1 |0 \xEF\xB2 |0 \xEF\xB3 |0 \xEF\xB4 |0 \xEF\xB5 |0 \xEF\xB6 |0 \xEF\xB7 |0 \xEF\xB8 |0 \xEF\xB9 |0 \xEF\xBA |0 \xEF\xBB |0 \xEF\xBC |0 \xEF\xBD |0 \xEF\xBE |0 \xEF\xBF |0 \xEF\xC0 |0 \xEF\xC1 |0 \xEF\xC2 |0 \xEF\xC3 |0 \xEF\xC4 |0 \xEF\xC5 |0 \xEF\xC6 |0 \xEF\xC7 |0 \xEF\xC8 |0 \xEF\xC9 |0 \xEF\xCA |0 \xEF\xCB |0 \xEF\xCC |0 \xEF\xCD |0 \xEF\xCE |0 \xEF\xCF |0 \xEF\xD0 |0 \xEF\xD1 |0 \xCE\x9C |0 \xEF\xD2 |0 \xEF\xD3 |0 \xEF\xD4 |0 \xEF\xD5 |0 \xEF\xD6 |0 \xEF\xD7 |0 \xEF\xD8 |0 \xEF\xD9 |0 \xEF\xDA |0 \xEF\xDB |0 \xEF\xDC |0 \xEF\xDD |0 \xEF\xDE |0 \xEF\xDF |0 \xEF\xE0 |0 \xEF\xE1 |0 \xEF\xE2 |0 \xEF\xE3 |0 \xEF\xE4 |0 \xEF\xE5 |0 \xEF\xE6 |0 \xEF\xE7 |0 \xEF\xE8 |0 \xEF\xE9 |0 \xEF\xEA |0 \xEF\xEB |0 \xEF\xEC |0 \xEF\xED |0 \xEF\xEE |0 \xEF\xEF |0 \xEF\xF0 |0 \xEF\xF1 |0 \xEF\xF2 |0 \xEF\xF3 |0 \xEF\xF4 |0 \xEF\xF5 |0 \xEF\xF6 |0 \xEF\xF7 |0 \xEF\xF8 |0 \xCE\x99 |0 \xCE\x9A |0 \xCE\x9B |0 \xCE\x9D |0 \xCE\x98 |0 \xEF\xF9 |0 \xEF\xFA |0 \xEF\xFB |0 \xEF\xFC |0 \xEF\xFD |0 \xEF\xFE |0 \xF6\x41 |0 \xF6\x42 |0 \xF6\x43 |0 \xF6\x44 |0 \xF6\x45 |0 \xF6\x46 |0 \xF6\x47 |0 \xF6\x48 |0 \xF6\x49 |0 \xF6\x4A |0 \xF6\x4B |0 \xF6\x4C |0 \xF6\x4D |0 \xF6\x4E |0 \xF6\x4F |0 \xF6\x50 |0 \xF6\x51 |0 \xF6\x52 |0 \xF6\x53 |0 \xF6\x54 |0 \xF6\x55 |0 \xF6\x56 |0 \xF6\x57 |0 \xF6\x58 |0 \xF6\x59 |0 \xF6\x5A |0 \xF6\x5B |0 \xF6\x5C |0 \xF6\x5D |0 \xF6\x5E |0 \xF6\x5F |0 \xF6\x60 |0 \xF6\x61 |0 \xF6\x62 |0 \xF6\x63 |0 \xF6\x64 |0 \xF6\x65 |0 \xF6\x66 |0 \xF6\x67 |0 \xF6\x68 |0 \xF6\x69 |0 \xF6\x6A |0 \xF6\x6B |0 \xF6\x6C |0 \xF6\x6D |0 \xF6\x6E |0 \xF6\x6F |0 \xF6\x70 |0 \xF6\x71 |0 \xF6\x72 |0 \xF6\x73 |0 \xF6\x74 |0 \xF6\x75 |0 \xF6\x76 |0 \xF6\x77 |0 \xF6\x78 |0 \xF6\x79 |0 \xF6\x7A |0 \xF6\x7B |0 \xF6\x7C |0 \xF6\x7D |0 \xF6\x7E |0 \xF6\x7F |0 \xF6\x80 |0 \xF6\x81 |0 \xF6\x82 |0 \xF6\x83 |0 \xF6\x84 |0 \xF6\x85 |0 \xF6\x86 |0 \xF6\x87 |0 \xF6\x88 |0 \xF6\x89 |0 \xF6\x8A |0 \xF6\x8B |0 \xF6\x8C |0 \xF6\x8D |0 \xF6\x8E |0 \xF6\x8F |0 \xF6\x90 |0 \xF6\x91 |0 \xF6\x92 |0 \xF6\x93 |0 \xF6\x94 |0 \xF6\x95 |0 \xF6\x96 |0 \xF6\x97 |0 \xF6\x98 |0 \xF6\x99 |0 \xF6\x9A |0 \xF6\x9B |0 \xF6\x9C |0 \xF6\x9D |0 \xF6\x9E |0 \xF6\x9F |0 \xF6\xA0 |0 \xF6\xA1 |0 \xF6\xA2 |0 \xF6\xA3 |0 \xF6\xA4 |0 \xF6\xA5 |0 \xF6\xA6 |0 \xF6\xA7 |0 \xF6\xA8 |0 \xF6\xA9 |0 \xCE\x9E |0 \xCE\x9F |0 \xCE\xA0 |0 \xCE\xA1 |0 \xCE\xA2 |0 \xCE\xA3 |0 \xCE\xA4 |0 \xF6\xAA |0 \xF6\xAB |0 \xF6\xAC |0 \xF6\xAD |0 \xF6\xAE |0 \xF6\xAF |0 \xF6\xB0 |0 \xF6\xB1 |0 \xF6\xB2 |0 \xF6\xB3 |0 \xF6\xB4 |0 \xF6\xB5 |0 \xF6\xB6 |0 \xF6\xB7 |0 \xF6\xB8 |0 \xF6\xB9 |0 \xF6\xBA |0 \xF6\xBB |0 \xF6\xBC |0 \xF6\xBD |0 \xF6\xBE |0 \xF6\xBF |0 \xF6\xC0 |0 \xF6\xC1 |0 \xF6\xC2 |0 \xF6\xC3 |0 \xF6\xC4 |0 \xF6\xC5 |0 \xF6\xC6 |0 \xF6\xC7 |0 \xF6\xC8 |0 \xF6\xC9 |0 \xF6\xCA |0 \xF6\xCB |0 \xF6\xCC |0 \xF6\xCD |0 \xF6\xCE |0 \xF6\xCF |0 \xF6\xD0 |0 \xF6\xD1 |0 \xF6\xD2 |0 \xF6\xD3 |0 \xF6\xD4 |0 \xF6\xD5 |0 \xF6\xD6 |0 \xF6\xD7 |0 \xF6\xD8 |0 \xF6\xD9 |0 \xF6\xDA |0 \xF6\xDB |0 \xF6\xDC |0 \xF6\xDD |0 \xF6\xDE |0 \xF6\xDF |0 \xF6\xE0 |0 \xF6\xE1 |0 \xF6\xE2 |0 \xF6\xE3 |0 \xF6\xE4 |0 \xF6\xE5 |0 \xF6\xE6 |0 \xF6\xE7 |0 \xF6\xE8 |0 \xF6\xE9 |0 \xF6\xEA |0 \xF6\xEB |0 \xF6\xEC |0 \xF6\xED |0 \xF6\xEE |0 \xF6\xEF |0 \xF6\xF0 |0 \xF6\xF1 |0 \xF6\xF2 |0 \xF6\xF3 |0 \xF6\xF4 |0 \xF6\xF5 |0 \xF6\xF6 |0 \xF6\xF7 |0 \xF6\xF8 |0 \xF6\xF9 |0 \xF6\xFA |0 \xF6\xFB |0 \xF6\xFC |0 \xF6\xFD |0 \xF6\xFE |0 \xF7\x41 |0 \xF7\x42 |0 \xF7\x43 |0 \xF7\x44 |0 \xF7\x45 |0 \xF7\x46 |0 \xF7\x47 |0 \xF7\x48 |0 \xF7\x49 |0 \xF7\x4A |0 \xF7\x4B |0 \xF7\x4C |0 \xF7\x4D |0 \xF7\x4E |0 \xF7\x4F |0 \xF7\x50 |0 \xF7\x51 |0 \xF7\x52 |0 \xF7\x53 |0 \xF7\x54 |0 \xF7\x55 |0 \xF7\x56 |0 \xF7\x57 |0 \xF7\x58 |0 \xF7\x59 |0 \xF7\x5A |0 \xF7\x5B |0 \xF7\x5C |0 \xF7\x5D |0 \xF7\x5E |0 \xF7\x5F |0 \xF7\x60 |0 \xF7\x61 |0 \xF7\x62 |0 \xF7\x63 |0 \xF7\x64 |0 \xF7\x65 |0 \xF7\x66 |0 \xF7\x67 |0 \xF7\x68 |0 \xF7\x69 |0 \xF7\x6A |0 \xF7\x6B |0 \xF7\x6C |0 \xF7\x6D |0 \xF7\x6E |0 \xF7\x6F |0 \xF7\x70 |0 \xF7\x71 |0 \xF7\x72 |0 \xF7\x73 |0 \xF7\x74 |0 \xF7\x75 |0 \xF7\x76 |0 \xF7\x77 |0 \xF7\x78 |0 \xF7\x79 |0 \xF7\x7A |0 \xF7\x7B |0 \xF7\x7C |0 \xF7\x7D |0 \xF7\x7E |0 \xF7\x7F |0 \xCE\xA5 |0 \xF7\x80 |0 \xF7\x81 |0 \xF7\x82 |0 \xF7\x83 |0 \xF7\x84 |0 \xF7\x85 |0 \xF7\x86 |0 \xF7\x87 |0 \xF7\x88 |0 \xF7\x89 |0 \xF7\x8A |0 \xF7\x8B |0 \xF7\x8C |0 \xF7\x8D |0 \xF7\x8E |0 \xF7\x8F |0 \xF7\x90 |0 \x59\xBA |0 \x4B\xA0 |0 \x81\x41 |0 \x53\xDE |0 \x81\x42 |0 \x81\x43 |0 \x81\x44 |0 \x57\x93 |0 \x5B\x69 |0 \x54\xFC |0 \x55\x6F |0 \x58\x62 |0 \x5C\xA1 |0 \x49\xBA |0 \x5A\x8C |0 \x81\x45 |0 \x5C\xA3 |0 \x4A\x94 |0 \x81\x46 |0 \x5C\x48 |0 \x54\x72 |0 \x5C\xA6 |0 \x55\xBF |0 \x81\x47 |0 \x54\x91 |0 \x49\x9C |0 \x59\xB4 |0 \x4A\xD3 |0 \x4B\xAA |0 \x56\x5F |0 \x5C\xA8 |0 \x81\x48 |0 \x81\x49 |0 \x81\x4A |0 \x4B\xA9 |0 \x81\x4B |0 \x51\x5D |0 \x59\x6F |0 \x81\x4C |0 \x55\x45 |0 \x5C\xAC |0 \x81\x4D |0 \x4C\xF5 |0 \x59\x5E |0 \x62\x7C |0 \x5B\xCF |0 \x81\x4E |0 \x81\x4F |0 \x4C\x82 |0 \x81\x50 |0 \x4A\xAD |0 \x81\x51 |0 \x51\x79 |0 \x81\x52 |0 \x5C\xBB |0 \x81\x53 |0 \x57\x89 |0 \x4B\x44 |0 \x57\xA9 |0 \x5B\xF6 |0 \x81\x54 |0 \x50\xF5 |0 \x4F\xD8 |0 \x5C\xAE |0 \x81\x55 |0 \x81\x56 |0 \x81\x57 |0 \x52\xCA |0 \x81\x58 |0 \x4F\xC2 |0 \x81\x59 |0 \x5C\xB0 |0 \x52\x54 |0 \x59\xE4 |0 \x81\x5A |0 \x5B\xAD |0 \x57\xD9 |0 \x5B\x47 |0 \x4D\xF4 |0 \x4C\x46 |0 \x50\xD5 |0 \x81\x5B |0 \x53\xB8 |0 \x53\x72 |0 \x54\x67 |0 \x81\x5C |0 \x4D\x74 |0 \x81\x5D |0 \x4A\x6B |0 \x59\xD1 |0 \x81\x5E |0 \x81\x5F |0 \x5C\xBE |0 \x4F\xC4 |0 \x53\xF1 |0 \x59\xB1 |0 \x58\x50 |0 \x58\x88 |0 \x81\x60 |0 \x81\x61 |0 \x81\x62 |0 \x81\x63 |0 \x55\xE8 |0 \x81\x64 |0 \x81\x65 |0 \x5C\xBF |0 \x81\x66 |0 \x81\x67 |0 \x81\x68 |0 \x81\x69 |0 \x81\x6A |0 \x81\x6B |0 \x51\xF1 |0 \x51\xD1 |0 \x81\x6C |0 \x54\xE8 |0 \x81\x6D |0 \x81\x6E |0 \x81\x6F |0 \x81\x70 |0 \x81\x71 |0 \x81\x72 |0 \x81\x73 |0 \x81\x74 |0 \x81\x75 |0 \x81\x76 |0 \x54\x4C |0 \x81\x77 |0 \x81\x78 |0 \x81\x79 |0 \x81\x7A |0 \x81\x7B |0 \x81\x7C |0 \x81\x7D |0 \x51\x6B |0 \x81\x7E |0 \x5A\x89 |0 \x5B\x9A |0 \x81\x7F |0 \x55\xC1 |0 \x4B\xFD |0 \x5C\xA0 |0 \x5A\x7A |0 \x50\x98 |0 \x81\x81 |0 \x5A\xC5 |0 \x4E\x45 |0 \x5C\xC0 |0 \x57\xE4 |0 \x4F\xAD |0 \x81\x82 |0 \x81\x83 |0 \x5C\xA7 |0 \x81\x84 |0 \x59\x67 |0 \x58\xA8 |0 \x81\x85 |0 \x81\x86 |0 \x81\x87 |0 \x5C\xBC |0 \x5D\x90 |0 \x57\x97 |0 \x50\x5A |0 \x81\x88 |0 \x4F\x5B |0 \x4D\xA4 |0 \x59\xDF |0 \x49\xF9 |0 \x4D\xDF |0 \x52\xB5 |0 \x81\x89 |0 \x58\x8E |0 \x4F\xA8 |0 \x57\x44 |0 \x51\x61 |0 \x81\x8A |0 \x81\x8B |0 \x81\x8C |0 \x54\x77 |0 \x5D\x92 |0 \x81\x8D |0 \x5D\x95 |0 \x81\x8E |0 \x81\x8F |0 \x81\x90 |0 \x81\x91 |0 \x54\xCA |0 \x5C\xE8 |0 \x81\x92 |0 \x81\x93 |0 \x81\x94 |0 \x59\xD9 |0 \x55\xB1 |0 \x54\xC9 |0 \x5C\xEB |0 \x5C\xE9 |0 \x5C\xC5 |0 \x4F\x97 |0 \x53\xCC |0 \x4A\x91 |0 \x81\x95 |0 \x5C\xEA |0 \x4F\x92 |0 \x4F\x8A |0 \x81\x96 |0 \x54\xD3 |0 \x4A\xD2 |0 \x81\x97 |0 \x81\x98 |0 \x51\xD7 |0 \x81\x99 |0 \x49\xD5 |0 \x5C\x70 |0 \x55\xCA |0 \x56\x9C |0 \x5B\x6C |0 \x4C\xB5 |0 \x58\x69 |0 \x81\x9A |0 \x81\x9B |0 \x81\x9C |0 \x5D\x7A |0 \x5C\xEF |0 \x54\x4A |0 \x81\x9D |0 \x5C\xED |0 \x81\x9E |0 \x4A\xF9 |0 \x51\x8F |0 \x59\xD3 |0 \x81\x9F |0 \x81\xA0 |0 \x5C\xEC |0 \x81\xA1 |0 \x59\xC6 |0 \x5C\xEE |0 \x52\x67 |0 \x81\xA2 |0 \x81\xA3 |0 \x81\xA4 |0 \x59\x97 |0 \x81\xA5 |0 \x5B\xD8 |0 \x5C\xF1 |0 \x81\xA6 |0 \x5C\xF4 |0 \x4E\xFD |0 \x4E\xDA |0 \x81\xA7 |0 \x81\xA8 |0 \x81\xA9 |0 \x54\xCD |0 \x81\xAA |0 \x4C\x7D |0 \x81\xAB |0 \x4C\x62 |0 \x81\xAC |0 \x53\xF2 |0 \x81\xAD |0 \x81\xAE |0 \x81\xAF |0 \x81\xB0 |0 \x81\xB1 |0 \x81\xB2 |0 \x81\xB3 |0 \x5C\xF7 |0 \x59\xC0 |0 \x81\xB4 |0 \x81\xB5 |0 \x57\xE8 |0 \x4E\xBE |0 \x4C\x9D |0 \x4C\x45 |0 \x58\xDC |0 \x81\xB6 |0 \x81\xB7 |0 \x81\xB8 |0 \x81\xB9 |0 \x81\xBA |0 \x5B\xD9 |0 \x5A\x65 |0 \x4E\x90 |0 \x4E\x82 |0 \x5C\xF0 |0 \x81\xBB |0 \x81\xBC |0 \x55\x41 |0 \x57\xAF |0 \x4A\xAA |0 \x81\xBD |0 \x5C\xF2 |0 \x81\xBE |0 \x55\x6B |0 \x5C\xF5 |0 \x51\xD6 |0 \x5C\xF6 |0 \x81\xBF |0 \x81\xC0 |0 \x57\xB0 |0 \x5C\xF8 |0 \x81\xC1 |0 \x81\xC2 |0 \x81\xC3 |0 \x49\xAD |0 \x4D\x60 |0 \x81\xC4 |0 \x5D\x43 |0 \x81\xC5 |0 \x48\xE8 |0 \x81\xC6 |0 \x51\x87 |0 \x81\xC7 |0 \x55\x8D |0 \x81\xC8 |0 \x56\x65 |0 \x81\xC9 |0 \x56\x66 |0 \x5D\x44 |0 \x81\xCA |0 \x81\xCB |0 \x81\xCC |0 \x81\xCD |0 \x81\xCE |0 \x4B\x89 |0 \x81\xCF |0 \x81\xD0 |0 \x4B\x4B |0 \x81\xD1 |0 \x81\xD2 |0 \x81\xD3 |0 \x81\xD4 |0 \x81\xD5 |0 \x81\xD6 |0 \x57\xBA |0 \x4B\x6D |0 \x5C\x41 |0 \x5C\x95 |0 \x5A\x73 |0 \x81\xD7 |0 \x56\xE4 |0 \x81\xD8 |0 \x4D\xCD |0 \x81\xD9 |0 \x5D\x42 |0 \x5D\x7C |0 \x5A\x81 |0 \x5C\xFC |0 \x4C\x91 |0 \x5C\x98 |0 \x5C\xFD |0 \x5C\xF9 |0 \x5D\x41 |0 \x52\xE2 |0 \x81\xDA |0 \x81\xDB |0 \x5A\x56 |0 \x5C\xF3 |0 \x5D\x7D |0 \x81\xDC |0 \x5C\xFA |0 \x81\xDD |0 \x53\x86 |0 \x81\xDE |0 \x81\xDF |0 \x50\xCF |0 \x81\xE0 |0 \x81\xE1 |0 \x59\x91 |0 \x48\xDA |0 \x81\xE2 |0 \x81\xE3 |0 \x4E\xD0 |0 \x5D\x46 |0 \x81\xE4 |0 \x5D\x45 |0 \x81\xE5 |0 \x81\xE6 |0 \x81\xE7 |0 \x81\xE8 |0 \x5D\x4C |0 \x5D\x4E |0 \x81\xE9 |0 \x5D\x4B |0 \x55\xB8 |0 \x81\xEA |0 \x81\xEB |0 \x81\xEC |0 \x5D\x49 |0 \x5B\xB5 |0 \x81\xED |0 \x81\xEE |0 \x81\xEF |0 \x4A\x7E |0 \x5D\x48 |0 \x81\xF0 |0 \x50\xFC |0 \x81\xF1 |0 \x55\xCB |0 \x81\xF2 |0 \x5D\x4A |0 \x81\xF3 |0 \x5D\x47 |0 \x81\xF4 |0 \x81\xF5 |0 \x5D\x50 |0 \x81\xF6 |0 \x81\xF7 |0 \x4B\xB0 |0 \x81\xF8 |0 \x81\xF9 |0 \x81\xFA |0 \x4D\x49 |0 \x81\xFB |0 \x59\xBF |0 \x81\xFC |0 \x81\xFD |0 \x58\x60 |0 \x82\x41 |0 \x82\x42 |0 \x51\xC1 |0 \x82\x43 |0 \x4F\x64 |0 \x5B\x8D |0 \x49\xDF |0 \x54\x68 |0 \x50\x8C |0 \x5D\x4D |0 \x82\x44 |0 \x5D\x4F |0 \x82\x45 |0 \x57\xE9 |0 \x4D\xED |0 \x82\x46 |0 \x82\x47 |0 \x82\x48 |0 \x82\x49 |0 \x82\x4A |0 \x54\x76 |0 \x82\x4B |0 \x82\x4C |0 \x82\x4D |0 \x82\x4E |0 \x82\x4F |0 \x82\x50 |0 \x82\x51 |0 \x82\x52 |0 \x82\x53 |0 \x49\x84 |0 \x82\x54 |0 \x82\x55 |0 \x82\x56 |0 \x4A\xD8 |0 \x4B\xEC |0 \x5D\x54 |0 \x82\x57 |0 \x82\x58 |0 \x82\x59 |0 \x82\x5A |0 \x50\x41 |0 \x82\x5B |0 \x82\x5C |0 \x82\x5D |0 \x5D\x7E |0 \x54\x6E |0 \x50\xFD |0 \x5D\x58 |0 \x82\x5E |0 \x82\x5F |0 \x82\x60 |0 \x82\x61 |0 \x82\x62 |0 \x56\x77 |0 \x4C\x9E |0 \x82\x63 |0 \x5D\x55 |0 \x82\x64 |0 \x5D\x57 |0 \x49\x43 |0 \x5A\x82 |0 \x5D\x59 |0 \x82\x65 |0 \x58\xC4 |0 \x82\x66 |0 \x5D\x56 |0 \x82\x67 |0 \x82\x68 |0 \x5D\x51 |0 \x82\x69 |0 \x5D\x52 |0 \x51\x49 |0 \x5D\x53 |0 \x82\x6A |0 \x82\x6B |0 \x4E\xF2 |0 \x58\xDD |0 \x4C\xA8 |0 \x82\x6C |0 \x4F\xE2 |0 \x82\x6D |0 \x5D\x5D |0 \x82\x6E |0 \x82\x6F |0 \x82\x70 |0 \x82\x71 |0 \x5D\x5A |0 \x82\x72 |0 \x48\xB2 |0 \x82\x73 |0 \x82\x74 |0 \x82\x75 |0 \x5D\x62 |0 \x82\x76 |0 \x82\x77 |0 \x82\x78 |0 \x82\x79 |0 \x82\x7A |0 \x82\x7B |0 \x82\x7C |0 \x82\x7D |0 \x82\x7E |0 \x82\x7F |0 \x82\x81 |0 \x82\x82 |0 \x82\x83 |0 \x5D\x64 |0 \x49\x56 |0 \x82\x84 |0 \x5D\x5F |0 \x82\x85 |0 \x82\x86 |0 \x4B\x59 |0 \x82\x87 |0 \x4F\xF2 |0 \x82\x88 |0 \x82\x89 |0 \x82\x8A |0 \x56\xC7 |0 \x4D\xF1 |0 \x59\xCF |0 \x82\x8B |0 \x5D\x63 |0 \x82\x8C |0 \x82\x8D |0 \x4F\x89 |0 \x82\x8E |0 \x4A\x4B |0 \x82\x8F |0 \x82\x90 |0 \x82\x91 |0 \x5D\x65 |0 \x4F\xEA |0 \x82\x92 |0 \x5D\x66 |0 \x5D\x5B |0 \x52\xDE |0 \x82\x93 |0 \x5D\x5E |0 \x5D\x61 |0 \x5D\x60 |0 \x82\x94 |0 \x82\x95 |0 \x82\x96 |0 \x82\x97 |0 \x82\x98 |0 \x82\x99 |0 \x82\x9A |0 \x82\x9B |0 \x82\x9C |0 \x82\x9D |0 \x82\x9E |0 \x5B\x4E |0 \x82\x9F |0 \x5B\xB4 |0 \x82\xA0 |0 \x54\x84 |0 \x82\xA1 |0 \x82\xA2 |0 \x82\xA3 |0 \x82\xA4 |0 \x5D\x68 |0 \x82\xA5 |0 \x82\xA6 |0 \x82\xA7 |0 \x4E\xD8 |0 \x5D\x6A |0 \x82\xA8 |0 \x82\xA9 |0 \x82\xAA |0 \x5D\x5C |0 \x82\xAB |0 \x5D\x6B |0 \x53\xAA |0 \x82\xAC |0 \x82\xAD |0 \x82\xAE |0 \x82\xAF |0 \x82\xB0 |0 \x5D\x69 |0 \x82\xB1 |0 \x82\xB2 |0 \x82\xB3 |0 \x82\xB4 |0 \x5C\x97 |0 \x82\xB5 |0 \x57\x43 |0 \x82\xB6 |0 \x82\xB7 |0 \x82\xB8 |0 \x82\xB9 |0 \x82\xBA |0 \x82\xBB |0 \x82\xBC |0 \x82\xBD |0 \x4F\x41 |0 \x82\xBE |0 \x82\xBF |0 \x82\xC0 |0 \x82\xC1 |0 \x82\xC2 |0 \x82\xC3 |0 \x5D\x6C |0 \x82\xC4 |0 \x82\xC5 |0 \x82\xC6 |0 \x82\xC7 |0 \x82\xC8 |0 \x82\xC9 |0 \x82\xCA |0 \x82\xCB |0 \x82\xCC |0 \x53\x5C |0 \x57\x55 |0 \x82\xCD |0 \x82\xCE |0 \x82\xCF |0 \x5D\x6D |0 \x82\xD0 |0 \x82\xD1 |0 \x5D\x67 |0 \x4A\x45 |0 \x50\x9F |0 \x82\xD2 |0 \x82\xD3 |0 \x82\xD4 |0 \x82\xD5 |0 \x4C\xB4 |0 \x82\xD6 |0 \x82\xD7 |0 \x50\xFB |0 \x82\xD8 |0 \x82\xD9 |0 \x82\xDA |0 \x82\xDB |0 \x48\xF7 |0 \x82\xDC |0 \x82\xDD |0 \x82\xDE |0 \x82\xDF |0 \x82\xE0 |0 \x82\xE1 |0 \x82\xE2 |0 \x82\xE3 |0 \x82\xE4 |0 \x82\xE5 |0 \x82\xE6 |0 \x82\xE7 |0 \x82\xE8 |0 \x82\xE9 |0 \x82\xEA |0 \x82\xEB |0 \x82\xEC |0 \x82\xED |0 \x82\xEE |0 \x82\xEF |0 \x82\xF0 |0 \x4A\xF5 |0 \x82\xF1 |0 \x5D\x6E |0 \x82\xF2 |0 \x5D\x6F |0 \x4A\xA1 |0 \x5D\x70 |0 \x82\xF3 |0 \x82\xF4 |0 \x4A\xDE |0 \x82\xF5 |0 \x82\xF6 |0 \x82\xF7 |0 \x82\xF8 |0 \x82\xF9 |0 \x48\xC0 |0 \x82\xFA |0 \x82\xFB |0 \x82\xFC |0 \x82\xFD |0 \x83\x41 |0 \x83\x42 |0 \x83\x43 |0 \x5D\x71 |0 \x55\x55 |0 \x83\x44 |0 \x83\x45 |0 \x83\x46 |0 \x83\x47 |0 \x83\x48 |0 \x83\x49 |0 \x83\x4A |0 \x83\x4B |0 \x83\x4C |0 \x83\x4D |0 \x83\x4E |0 \x83\x4F |0 \x83\x50 |0 \x83\x51 |0 \x83\x52 |0 \x83\x53 |0 \x83\x54 |0 \x83\x55 |0 \x83\x56 |0 \x58\x92 |0 \x83\x57 |0 \x83\x58 |0 \x83\x59 |0 \x83\x5A |0 \x83\x5B |0 \x83\x5C |0 \x5D\x72 |0 \x83\x5D |0 \x83\x5E |0 \x83\x5F |0 \x51\x65 |0 \x83\x60 |0 \x83\x61 |0 \x83\x62 |0 \x83\x63 |0 \x83\x64 |0 \x83\x65 |0 \x83\x66 |0 \x83\x67 |0 \x83\x68 |0 \x83\x69 |0 \x83\x6A |0 \x5D\x76 |0 \x55\x4E |0 \x83\x6B |0 \x83\x6C |0 \x83\x6D |0 \x83\x6E |0 \x5D\x75 |0 \x5D\x74 |0 \x5D\x77 |0 \x83\x6F |0 \x83\x70 |0 \x83\x71 |0 \x83\x72 |0 \x56\x7B |0 \x83\x73 |0 \x4F\x49 |0 \x83\x74 |0 \x83\x75 |0 \x83\x76 |0 \x83\x77 |0 \x83\x78 |0 \x53\xA6 |0 \x83\x79 |0 \x83\x7A |0 \x83\x7B |0 \x83\x7C |0 \x83\x7D |0 \x83\x7E |0 \x83\x7F |0 \x83\x81 |0 \x83\x82 |0 \x83\x83 |0 \x5D\x73 |0 \x5D\x78 |0 \x83\x84 |0 \x83\x85 |0 \x83\x86 |0 \x5D\x79 |0 \x83\x87 |0 \x83\x88 |0 \x83\x89 |0 \x83\x8A |0 \x83\x8B |0 \x83\x8C |0 \x54\xE4 |0 \x83\x8D |0 \x83\x8E |0 \x83\x8F |0 \x83\x90 |0 \x83\x91 |0 \x83\x92 |0 \x83\x93 |0 \x83\x94 |0 \x83\x95 |0 \x83\x96 |0 \x83\x97 |0 \x83\x98 |0 \x83\x99 |0 \x83\x9A |0 \x50\xDB |0 \x83\x9B |0 \x83\x9C |0 \x83\x9D |0 \x83\x9E |0 \x83\x9F |0 \x83\xA0 |0 \x83\xA1 |0 \x83\xA2 |0 \x83\xA3 |0 \x83\xA4 |0 \x83\xA5 |0 \x83\xA6 |0 \x83\xA7 |0 \x83\xA8 |0 \x83\xA9 |0 \x83\xAA |0 \x83\xAB |0 \x83\xAC |0 \x83\xAD |0 \x83\xAE |0 \x83\xAF |0 \x83\xB0 |0 \x83\xB1 |0 \x83\xB2 |0 \x83\xB3 |0 \x83\xB4 |0 \x83\xB5 |0 \x83\xB6 |0 \x83\xB7 |0 \x4B\xF8 |0 \x5C\xA2 |0 \x5A\xC9 |0 \x83\xB8 |0 \x5A\xA9 |0 \x58\xD5 |0 \x4A\x85 |0 \x5B\x77 |0 \x83\xB9 |0 \x58\x68 |0 \x4D\x83 |0 \x83\xBA |0 \x50\x6B |0 \x83\xBB |0 \x52\x83 |0 \x83\xBC |0 \x83\xBD |0 \x83\xBE |0 \x4B\xD1 |0 \x83\xBF |0 \x83\xC0 |0 \x57\x63 |0 \x5D\x8F |0 \x5D\x91 |0 \x83\xC1 |0 \x83\xC2 |0 \x83\xC3 |0 \x4B\x53 |0 \x83\xC4 |0 \x4B\xB4 |0 \x83\xC5 |0 \x83\xC6 |0 \x83\xC7 |0 \x83\xC8 |0 \x83\xC9 |0 \x4F\xA3 |0 \x83\xCA |0 \x83\xCB |0 \x54\xEA |0 \x83\xCC |0 \x83\xCD |0 \x54\xAA |0 \x83\xCE |0 \x83\xCF |0 \x48\xCA |0 \x4D\x4B |0 \x51\x9A |0 \x5D\x83 |0 \x83\xD0 |0 \x50\xBB |0 \x4D\x52 |0 \x83\xD1 |0 \x4D\x78 |0 \x58\xCA |0 \x49\x99 |0 \x53\xE3 |0 \x4F\xDE |0 \x4B\x85 |0 \x5C\x68 |0 \x83\xD2 |0 \x59\x99 |0 \x4E\xE5 |0 \x55\xDD |0 \x83\xD3 |0 \x83\xD4 |0 \x4E\xBC |0 \x5D\x87 |0 \x5C\xE6 |0 \x83\xD5 |0 \x83\xD6 |0 \x52\xD9 |0 \x83\xD7 |0 \x83\xD8 |0 \x4C\xD3 |0 \x54\xBC |0 \x83\xD9 |0 \x83\xDA |0 \x49\xE0 |0 \x5A\xD8 |0 \x83\xDB |0 \x83\xDC |0 \x83\xDD |0 \x83\xDE |0 \x52\x50 |0 \x83\xDF |0 \x83\xE0 |0 \x52\x82 |0 \x5D\xA1 |0 \x54\xDE |0 \x83\xE1 |0 \x58\xB3 |0 \x83\xE2 |0 \x4F\xFB |0 \x53\x49 |0 \x83\xE3 |0 \x83\xE4 |0 \x83\xE5 |0 \x4D\x7A |0 \x83\xE6 |0 \x5D\xA2 |0 \x83\xE7 |0 \x5A\xA8 |0 \x5D\xA3 |0 \x83\xE8 |0 \x83\xE9 |0 \x83\xEA |0 \x83\xEB |0 \x83\xEC |0 \x5D\x9C |0 \x4B\xAB |0 \x83\xED |0 \x83\xEE |0 \x4C\x8C |0 \x49\x9A |0 \x5D\x9D |0 \x4A\x86 |0 \x4F\xF5 |0 \x83\xEF |0 \x50\x97 |0 \x59\xB0 |0 \x50\xE3 |0 \x83\xF0 |0 \x83\xF1 |0 \x83\xF2 |0 \x4B\xB2 |0 \x5D\x9F |0 \x5D\x9E |0 \x83\xF3 |0 \x83\xF4 |0 \x4F\xBA |0 \x83\xF5 |0 \x83\xF6 |0 \x83\xF7 |0 \x53\xDF |0 \x83\xF8 |0 \x5C\x5C |0 \x5D\xA0 |0 \x83\xF9 |0 \x51\x59 |0 \x83\xFA |0 \x4B\x93 |0 \x51\x89 |0 \x83\xFB |0 \x83\xFC |0 \x4E\xF4 |0 \x83\xFD |0 \x4A\xD4 |0 \x84\x41 |0 \x84\x42 |0 \x84\x43 |0 \x84\x44 |0 \x84\x45 |0 \x84\x46 |0 \x84\x47 |0 \x84\x48 |0 \x84\x49 |0 \x51\x7D |0 \x84\x4A |0 \x52\xFC |0 \x84\x4B |0 \x84\x4C |0 \x4E\xB7 |0 \x4C\x52 |0 \x84\x4D |0 \x84\x4E |0 \x4C\x90 |0 \x84\x4F |0 \x84\x50 |0 \x84\x51 |0 \x84\x52 |0 \x84\x53 |0 \x84\x54 |0 \x5D\x8D |0 \x84\x55 |0 \x53\xBD |0 \x84\x56 |0 \x50\x4D |0 \x4E\x6B |0 \x84\x57 |0 \x84\x58 |0 \x4B\x6A |0 \x84\x59 |0 \x5E\x69 |0 \x58\xD6 |0 \x84\x5A |0 \x57\x59 |0 \x48\xBB |0 \x4A\x97 |0 \x4E\x98 |0 \x5E\x6A |0 \x4D\xAE |0 \x84\x5B |0 \x5A\xE3 |0 \x4B\x56 |0 \x4B\x94 |0 \x5C\xD5 |0 \x54\xCF |0 \x84\x5C |0 \x84\x5D |0 \x4C\x76 |0 \x54\x70 |0 \x5C\xD6 |0 \x84\x5E |0 \x50\x4F |0 \x84\x5F |0 \x84\x60 |0 \x5E\x5B |0 \x5C\xD7 |0 \x84\x61 |0 \x84\x62 |0 \x58\xCB |0 \x4E\x4E |0 \x84\x63 |0 \x84\x64 |0 \x84\x65 |0 \x66\x5E |0 \x51\x70 |0 \x51\x96 |0 \x5A\xF1 |0 \x4C\xD4 |0 \x4A\xB3 |0 \x84\x66 |0 \x4A\x96 |0 \x84\x67 |0 \x84\x68 |0 \x55\x5E |0 \x84\x69 |0 \x84\x6A |0 \x84\x6B |0 \x53\x70 |0 \x84\x6C |0 \x84\x6D |0 \x84\x6E |0 \x53\x79 |0 \x50\xFA |0 \x84\x6F |0 \x49\x91 |0 \x84\x70 |0 \x5C\xD8 |0 \x4D\x6E |0 \x84\x71 |0 \x4B\x5D |0 \x84\x72 |0 \x84\x73 |0 \x5C\xD9 |0 \x84\x74 |0 \x84\x75 |0 \x5B\xC5 |0 \x56\x42 |0 \x54\xAE |0 \x55\x52 |0 \x4A\xCB |0 \x50\x6C |0 \x84\x76 |0 \x4D\x95 |0 \x84\x77 |0 \x5C\xDA |0 \x5C\xDB |0 \x4B\xE6 |0 \x4E\xC0 |0 \x56\xE9 |0 \x84\x78 |0 \x84\x79 |0 \x84\x7A |0 \x84\x7B |0 \x84\x7C |0 \x84\x7D |0 \x58\x98 |0 \x84\x7E |0 \x5C\xDC |0 \x54\x50 |0 \x84\x7F |0 \x84\x81 |0 \x4D\x70 |0 \x4F\x43 |0 \x84\x82 |0 \x84\x83 |0 \x56\xDD |0 \x84\x84 |0 \x53\xC9 |0 \x84\x85 |0 \x84\x86 |0 \x84\x87 |0 \x84\x88 |0 \x84\x89 |0 \x5C\xDF |0 \x84\x8A |0 \x5C\xDD |0 \x84\x8B |0 \x84\x8C |0 \x5C\xDE |0 \x84\x8D |0 \x84\x8E |0 \x84\x8F |0 \x48\xFD |0 \x84\x90 |0 \x4F\xE6 |0 \x84\x91 |0 \x55\xA2 |0 \x4E\xF3 |0 \x84\x92 |0 \x84\x93 |0 \x84\x94 |0 \x84\x95 |0 \x4C\xB0 |0 \x84\x96 |0 \x84\x97 |0 \x4C\xED |0 \x84\x98 |0 \x84\x99 |0 \x84\x9A |0 \x84\x9B |0 \x84\x9C |0 \x84\x9D |0 \x84\x9E |0 \x84\x9F |0 \x84\xA0 |0 \x84\xA1 |0 \x5C\xE1 |0 \x84\xA2 |0 \x4F\x6B |0 \x84\xA3 |0 \x5C\xE3 |0 \x5C\xE2 |0 \x84\xA4 |0 \x84\xA5 |0 \x84\xA6 |0 \x84\xA7 |0 \x84\xA8 |0 \x53\x9D |0 \x84\xA9 |0 \x84\xAA |0 \x84\xAB |0 \x84\xAC |0 \x84\xAD |0 \x84\xAE |0 \x84\xAF |0 \x5C\xE4 |0 \x84\xB0 |0 \x84\xB1 |0 \x5C\xE5 |0 \x84\xB2 |0 \x84\xB3 |0 \x84\xB4 |0 \x84\xB5 |0 \x84\xB6 |0 \x84\xB7 |0 \x84\xB8 |0 \x51\x46 |0 \x84\xB9 |0 \x54\xAF |0 \x48\xEB |0 \x4D\x46 |0 \x4E\xD2 |0 \x57\xF0 |0 \x5E\x5D |0 \x51\x73 |0 \x84\xBA |0 \x84\xBB |0 \x84\xBC |0 \x84\xBD |0 \x4B\xAE |0 \x5B\xF9 |0 \x53\x4C |0 \x4F\x79 |0 \x5E\x5E |0 \x5E\x5F |0 \x84\xBE |0 \x84\xBF |0 \x84\xC0 |0 \x50\xF7 |0 \x4F\xA1 |0 \x50\xCC |0 \x84\xC1 |0 \x84\xC2 |0 \x84\xC3 |0 \x84\xC4 |0 \x84\xC5 |0 \x84\xC6 |0 \x84\xC7 |0 \x84\xC8 |0 \x84\xC9 |0 \x84\xCA |0 \x5E\x60 |0 \x55\xC5 |0 \x84\xCB |0 \x84\xCC |0 \x84\xCD |0 \x49\xA9 |0 \x84\xCE |0 \x84\xCF |0 \x84\xD0 |0 \x5A\x62 |0 \x84\xD1 |0 \x52\x84 |0 \x84\xD2 |0 \x59\x4B |0 \x84\xD3 |0 \x84\xD4 |0 \x84\xD5 |0 \x84\xD6 |0 \x5E\x62 |0 \x84\xD7 |0 \x50\xD4 |0 \x84\xD8 |0 \x84\xD9 |0 \x84\xDA |0 \x5E\x63 |0 \x84\xDB |0 \x50\x51 |0 \x84\xDC |0 \x84\xDD |0 \x84\xDE |0 \x84\xDF |0 \x84\xE0 |0 \x84\xE1 |0 \x52\xBB |0 \x84\xE2 |0 \x84\xE3 |0 \x84\xE4 |0 \x84\xE5 |0 \x54\x7A |0 \x84\xE6 |0 \x84\xE7 |0 \x84\xE8 |0 \x84\xE9 |0 \x84\xEA |0 \x84\xEB |0 \x84\xEC |0 \x84\xED |0 \x84\xEE |0 \x84\xEF |0 \x84\xF0 |0 \x5E\x64 |0 \x84\xF1 |0 \x84\xF2 |0 \x84\xF3 |0 \x84\xF4 |0 \x84\xF5 |0 \x84\xF6 |0 \x84\xF7 |0 \x84\xF8 |0 \x5D\x89 |0 \x55\x77 |0 \x84\xF9 |0 \x84\xFA |0 \x84\xFB |0 \x4D\x54 |0 \x57\xEF |0 \x5A\xC7 |0 \x84\xFC |0 \x84\xFD |0 \x85\x41 |0 \x85\x42 |0 \x48\xFB |0 \x4A\xD1 |0 \x85\x43 |0 \x58\xD8 |0 \x85\x44 |0 \x85\x45 |0 \x85\x46 |0 \x85\x47 |0 \x5D\x8A |0 \x85\x48 |0 \x5F\xCA |0 \x5D\x8C |0 \x85\x49 |0 \x85\x4A |0 \x85\x4B |0 \x85\x4C |0 \x5C\xAF |0 \x4E\x4F |0 \x49\x51 |0 \x85\x4D |0 \x4A\x77 |0 \x5C\xCD |0 \x85\x4E |0 \x85\x4F |0 \x5A\xD0 |0 \x85\x50 |0 \x85\x51 |0 \x4F\x53 |0 \x50\x90 |0 \x85\x52 |0 \x58\x5B |0 \x85\x53 |0 \x85\x54 |0 \x5C\xCF |0 \x85\x55 |0 \x85\x56 |0 \x85\x57 |0 \x4C\x6B |0 \x85\x58 |0 \x85\x59 |0 \x85\x5A |0 \x5C\xD0 |0 \x85\x5B |0 \x85\x5C |0 \x85\x5D |0 \x85\x5E |0 \x85\x5F |0 \x85\x60 |0 \x85\x61 |0 \x85\x62 |0 \x85\x63 |0 \x85\x64 |0 \x53\xA4 |0 \x54\x99 |0 \x59\xBC |0 \x85\x65 |0 \x85\x66 |0 \x5C\xD1 |0 \x52\xE3 |0 \x85\x67 |0 \x55\xAD |0 \x85\x68 |0 \x54\x47 |0 \x85\x69 |0 \x5C\xA5 |0 \x85\x6A |0 \x55\x9E |0 \x57\xE6 |0 \x4E\x7C |0 \x48\xEA |0 \x85\x6B |0 \x85\x6C |0 \x85\x6D |0 \x4E\x4A |0 \x58\xAC |0 \x85\x6E |0 \x49\x50 |0 \x5C\x85 |0 \x5C\x5F |0 \x85\x6F |0 \x4B\x45 |0 \x51\xF3 |0 \x52\xCE |0 \x85\x70 |0 \x85\x71 |0 \x49\xA8 |0 \x85\x72 |0 \x49\xB6 |0 \x85\x73 |0 \x49\x86 |0 \x60\x52 |0 \x5B\x5C |0 \x50\x48 |0 \x51\xAB |0 \x5C\xD4 |0 \x51\xB0 |0 \x85\x74 |0 \x5C\xD3 |0 \x57\xD3 |0 \x85\x75 |0 \x5D\xDF |0 \x85\x76 |0 \x57\xBF |0 \x85\x77 |0 \x85\x78 |0 \x5C\xB3 |0 \x52\x4E |0 \x5A\x41 |0 \x57\xA2 |0 \x85\x79 |0 \x4E\xB3 |0 \x54\xB3 |0 \x51\xD0 |0 \x85\x7A |0 \x4F\xEC |0 \x58\xB5 |0 \x85\x7B |0 \x5D\xE0 |0 \x85\x7C |0 \x85\x7D |0 \x85\x7E |0 \x85\x7F |0 \x54\x85 |0 \x85\x81 |0 \x85\x82 |0 \x4A\x47 |0 \x85\x83 |0 \x4B\xF1 |0 \x56\xFB |0 \x50\xF9 |0 \x85\x84 |0 \x85\x85 |0 \x50\xF6 |0 \x85\x86 |0 \x59\x59 |0 \x59\x82 |0 \x5C\xC6 |0 \x85\x87 |0 \x85\x88 |0 \x85\x89 |0 \x85\x8A |0 \x85\x8B |0 \x85\x8C |0 \x85\x8D |0 \x49\xDD |0 \x85\x8E |0 \x85\x8F |0 \x50\xE4 |0 \x85\x90 |0 \x4D\xF0 |0 \x85\x91 |0 \x85\x92 |0 \x5C\xC7 |0 \x85\x93 |0 \x5A\xAC |0 \x85\x94 |0 \x85\x95 |0 \x58\x82 |0 \x5C\xC8 |0 \x85\x96 |0 \x5C\xC9 |0 \x58\x63 |0 \x85\x97 |0 \x4A\x99 |0 \x4F\xC6 |0 \x85\x98 |0 \x85\x99 |0 \x85\x9A |0 \x85\x9B |0 \x5C\xCA |0 \x85\x9C |0 \x85\x9D |0 \x85\x9E |0 \x85\x9F |0 \x85\xA0 |0 \x85\xA1 |0 \x85\xA2 |0 \x5E\x6C |0 \x85\xA3 |0 \x85\xA4 |0 \x85\xA5 |0 \x85\xA6 |0 \x54\xA4 |0 \x85\xA7 |0 \x85\xA8 |0 \x85\xA9 |0 \x58\x78 |0 \x85\xAA |0 \x54\xFD |0 \x49\xCD |0 \x85\xAB |0 \x85\xAC |0 \x85\xAD |0 \x85\xAE |0 \x85\xAF |0 \x5A\x76 |0 \x49\xE5 |0 \x4E\xAF |0 \x5A\x71 |0 \x56\x4B |0 \x4C\x54 |0 \x85\xB0 |0 \x85\xB1 |0 \x85\xB2 |0 \x4C\x42 |0 \x85\xB3 |0 \x85\xB4 |0 \x55\xE4 |0 \x85\xB5 |0 \x54\xA0 |0 \x55\xDB |0 \x49\x85 |0 \x58\xEF |0 \x85\xB6 |0 \x53\x71 |0 \x85\xB7 |0 \x85\xB8 |0 \x85\xB9 |0 \x5E\x65 |0 \x4B\x9F |0 \x85\xBA |0 \x85\xBB |0 \x50\x7A |0 \x4D\x65 |0 \x4F\xE3 |0 \x51\x8E |0 \x85\xBC |0 \x60\x56 |0 \x60\x55 |0 \x5B\xBA |0 \x4F\x70 |0 \x5B\x79 |0 \x48\xC7 |0 \x4B\xA2 |0 \x50\x69 |0 \x56\xA7 |0 \x60\x53 |0 \x55\xB6 |0 \x5A\x72 |0 \x85\xBD |0 \x5C\xCE |0 \x59\xB5 |0 \x4D\xC4 |0 \x56\x5E |0 \x56\xBD |0 \x85\xBE |0 \x60\x57 |0 \x4B\x91 |0 \x60\x54 |0 \x85\xBF |0 \x85\xC0 |0 \x85\xC1 |0 \x5A\x96 |0 \x85\xC2 |0 \x4A\x74 |0 \x4C\xF6 |0 \x85\xC3 |0 \x60\x5A |0 \x85\xC4 |0 \x4D\xCE |0 \x4E\xA9 |0 \x4B\x96 |0 \x85\xC5 |0 \x57\x4C |0 \x52\x9C |0 \x4D\xF2 |0 \x50\xF3 |0 \x57\x62 |0 \x58\x93 |0 \x60\x58 |0 \x58\x65 |0 \x85\xC6 |0 \x51\xBF |0 \x60\x59 |0 \x51\xEF |0 \x85\xC7 |0 \x85\xC8 |0 \x85\xC9 |0 \x4F\xFC |0 \x85\xCA |0 \x51\x7F |0 \x57\x6C |0 \x59\xF6 |0 \x4C\x6D |0 \x60\x61 |0 \x85\xCB |0 \x60\x64 |0 \x85\xCC |0 \x85\xCD |0 \x4C\x92 |0 \x48\xC8 |0 \x4B\xD5 |0 \x4C\x74 |0 \x85\xCE |0 \x4D\xAB |0 \x56\xFC |0 \x50\x74 |0 \x56\x51 |0 \x53\xF3 |0 \x85\xCF |0 \x5B\xA7 |0 \x60\x65 |0 \x85\xD0 |0 \x57\xE1 |0 \x4A\x53 |0 \x85\xD1 |0 \x85\xD2 |0 \x57\xFB |0 \x4A\xB4 |0 \x85\xD3 |0 \x57\xC6 |0 \x4D\xEF |0 \x85\xD4 |0 \x57\xE0 |0 \x85\xD5 |0 \x59\x5D |0 \x85\xD6 |0 \x85\xD7 |0 \x60\x60 |0 \x85\xD8 |0 \x85\xD9 |0 \x4A\xF3 |0 \x85\xDA |0 \x4A\x6A |0 \x85\xDB |0 \x4C\xE5 |0 \x60\x5B |0 \x85\xDC |0 \x85\xDD |0 \x85\xDE |0 \x85\xDF |0 \x52\xC4 |0 \x85\xE0 |0 \x60\x5C |0 \x60\x5D |0 \x60\x5E |0 \x53\x5B |0 \x60\x5F |0 \x60\x62 |0 \x5A\xB0 |0 \x60\x63 |0 \x85\xE1 |0 \x54\x5A |0 \x57\xD7 |0 \x85\xE2 |0 \x85\xE3 |0 \x85\xE4 |0 \x85\xE5 |0 \x85\xE6 |0 \x52\xD7 |0 \x85\xE7 |0 \x60\x6A |0 \x85\xE8 |0 \x60\x6F |0 \x85\xE9 |0 \x5B\xDB |0 \x85\xEA |0 \x85\xEB |0 \x85\xEC |0 \x85\xED |0 \x85\xEE |0 \x85\xEF |0 \x85\xF0 |0 \x85\xF1 |0 \x60\x69 |0 \x60\x7A |0 \x57\xB5 |0 \x85\xF2 |0 \x4D\xC6 |0 \x60\x6E |0 \x60\x68 |0 \x53\x7E |0 \x85\xF3 |0 \x85\xF4 |0 \x55\x8C |0 \x4D\xF3 |0 \x52\x9D |0 \x85\xF5 |0 \x85\xF6 |0 \x4F\xD6 |0 \x85\xF7 |0 \x60\x66 |0 \x85\xF8 |0 \x60\x6D |0 \x85\xF9 |0 \x53\x78 |0 \x85\xFA |0 \x85\xFB |0 \x85\xFC |0 \x85\xFD |0 \x5B\x46 |0 \x4D\xCC |0 \x86\x41 |0 \x4F\xCB |0 \x5A\x5D |0 \x4C\xBF |0 \x86\x42 |0 \x5B\xE3 |0 \x86\x43 |0 \x60\x67 |0 \x4D\x5E |0 \x50\x47 |0 \x86\x44 |0 \x86\x45 |0 \x51\x9D |0 \x60\x6B |0 \x60\x6C |0 \x86\x46 |0 \x60\x70 |0 \x86\x47 |0 \x86\x48 |0 \x86\x49 |0 \x86\x4A |0 \x86\x4B |0 \x60\x7B |0 \x60\x86 |0 \x86\x4C |0 \x60\x77 |0 \x60\x76 |0 \x5C\x69 |0 \x60\x84 |0 \x60\x85 |0 \x63\x8C |0 \x59\xA6 |0 \x60\x72 |0 \x86\x4D |0 \x50\x49 |0 \x86\x4E |0 \x5A\xDA |0 \x86\x4F |0 \x50\x68 |0 \x60\x74 |0 \x86\x50 |0 \x86\x51 |0 \x86\x52 |0 \x58\x6C |0 \x86\x53 |0 \x86\x54 |0 \x60\x7D |0 \x86\x55 |0 \x59\x6A |0 \x86\x56 |0 \x60\x7E |0 \x48\xA6 |0 \x53\xB6 |0 \x60\x73 |0 \x86\x57 |0 \x4D\xE4 |0 \x86\x58 |0 \x4B\xDE |0 \x57\x7B |0 \x4D\x9F |0 \x5A\xD4 |0 \x86\x59 |0 \x86\x5A |0 \x60\x7F |0 \x58\x8D |0 \x48\xA4 |0 \x60\x88 |0 \x60\x71 |0 \x59\x66 |0 \x60\x75 |0 \x60\x78 |0 \x60\x79 |0 \x60\x7C |0 \x86\x5B |0 \x4E\x49 |0 \x86\x5C |0 \x60\x81 |0 \x60\x82 |0 \x86\x5D |0 \x60\x83 |0 \x60\x87 |0 \x60\x89 |0 \x5A\x54 |0 \x86\x5E |0 \x86\x5F |0 \x86\x60 |0 \x86\x61 |0 \x86\x62 |0 \x4C\xE6 |0 \x53\x56 |0 \x60\x8B |0 \x55\x7A |0 \x51\x48 |0 \x52\xC3 |0 \x86\x63 |0 \x86\x64 |0 \x50\x7E |0 \x58\x99 |0 \x86\x65 |0 \x86\x66 |0 \x86\x67 |0 \x5B\x7C |0 \x60\x8F |0 \x86\x68 |0 \x86\x69 |0 \x86\x6A |0 \x86\x6B |0 \x86\x6C |0 \x86\x6D |0 \x49\xB7 |0 \x86\x6E |0 \x4D\xDE |0 \x60\x8D |0 \x86\x6F |0 \x5E\x61 |0 \x86\x70 |0 \x59\x85 |0 \x86\x71 |0 \x86\x72 |0 \x86\x73 |0 \x86\x74 |0 \x56\x95 |0 \x4A\xBC |0 \x86\x75 |0 \x48\xA5 |0 \x86\x76 |0 \x86\x77 |0 \x86\x78 |0 \x86\x79 |0 \x86\x7A |0 \x60\x92 |0 \x56\xC5 |0 \x60\x93 |0 \x86\x7B |0 \x86\x7C |0 \x60\x8E |0 \x86\x7D |0 \x86\x7E |0 \x86\x7F |0 \x86\x81 |0 \x86\x82 |0 \x86\x83 |0 \x60\x8A |0 \x86\x84 |0 \x86\x85 |0 \x86\x86 |0 \x86\x87 |0 \x60\x8C |0 \x86\x88 |0 \x60\x90 |0 \x60\x91 |0 \x4E\x5D |0 \x86\x89 |0 \x86\x8A |0 \x60\x94 |0 \x86\x8B |0 \x86\x8C |0 \x60\x95 |0 \x86\x8D |0 \x4E\x43 |0 \x86\x8E |0 \x55\xDA |0 \x57\xA7 |0 \x60\xA6 |0 \x4A\x4A |0 \x86\x8F |0 \x60\xA5 |0 \x86\x90 |0 \x86\x91 |0 \x86\x92 |0 \x60\xA0 |0 \x86\x93 |0 \x86\x94 |0 \x86\x95 |0 \x86\x96 |0 \x60\x9F |0 \x86\x97 |0 \x57\x79 |0 \x60\x9D |0 \x86\x98 |0 \x60\x9B |0 \x86\x99 |0 \x50\x70 |0 \x5C\x64 |0 \x86\x9A |0 \x55\x6C |0 \x86\x9B |0 \x86\x9C |0 \x60\x99 |0 \x48\xA0 |0 \x86\x9D |0 \x86\x9E |0 \x86\x9F |0 \x86\xA0 |0 \x86\xA1 |0 \x60\x9E |0 \x86\xA2 |0 \x86\xA3 |0 \x86\xA4 |0 \x86\xA5 |0 \x60\x9C |0 \x60\xA1 |0 \x86\xA6 |0 \x86\xA7 |0 \x86\xA8 |0 \x86\xA9 |0 \x86\xAA |0 \x60\xA7 |0 \x86\xAB |0 \x86\xAC |0 \x86\xAD |0 \x86\xAE |0 \x4C\x68 |0 \x86\xAF |0 \x86\xB0 |0 \x53\xA0 |0 \x55\x56 |0 \x50\xB1 |0 \x60\x96 |0 \x86\xB1 |0 \x86\xB2 |0 \x53\x5E |0 \x86\xB3 |0 \x5C\xC3 |0 \x60\x9A |0 \x52\xF5 |0 \x86\xB4 |0 \x86\xB5 |0 \x86\xB6 |0 \x86\xB7 |0 \x86\xB8 |0 \x86\xB9 |0 \x60\xA2 |0 \x60\xA3 |0 \x60\xA4 |0 \x58\xA4 |0 \x86\xBA |0 \x86\xBB |0 \x60\xB3 |0 \x56\xE3 |0 \x86\xBC |0 \x60\xB0 |0 \x86\xBD |0 \x50\x46 |0 \x60\xAE |0 \x57\xB8 |0 \x60\xAA |0 \x55\x66 |0 \x86\xBE |0 \x86\xBF |0 \x50\xAD |0 \x60\xAD |0 \x4D\xEC |0 \x4D\xAF |0 \x60\xA8 |0 \x86\xC0 |0 \x86\xC1 |0 \x86\xC2 |0 \x60\x97 |0 \x86\xC3 |0 \x60\xB2 |0 \x86\xC4 |0 \x86\xC5 |0 \x60\xB7 |0 \x86\xC6 |0 \x86\xC7 |0 \x86\xC8 |0 \x4A\xAC |0 \x60\xB8 |0 \x86\xC9 |0 \x86\xCA |0 \x58\x52 |0 \x4D\xC7 |0 \x86\xCB |0 \x60\xAF |0 \x86\xCC |0 \x86\xCD |0 \x86\xCE |0 \x86\xCF |0 \x86\xD0 |0 \x86\xD1 |0 \x86\xD2 |0 \x58\xF9 |0 \x86\xD3 |0 \x86\xD4 |0 \x86\xD5 |0 \x86\xD6 |0 \x86\xD7 |0 \x86\xD8 |0 \x86\xD9 |0 \x86\xDA |0 \x86\xDB |0 \x60\xAB |0 \x86\xDC |0 \x5A\xFA |0 \x86\xDD |0 \x60\x98 |0 \x86\xDE |0 \x53\x88 |0 \x86\xDF |0 \x60\xAC |0 \x86\xE0 |0 \x5A\x98 |0 \x86\xE1 |0 \x60\xB5 |0 \x60\xB6 |0 \x86\xE2 |0 \x86\xE3 |0 \x86\xE4 |0 \x86\xE5 |0 \x86\xE6 |0 \x60\xC3 |0 \x58\xE0 |0 \x86\xE7 |0 \x86\xE8 |0 \x86\xE9 |0 \x60\xBB |0 \x86\xEA |0 \x86\xEB |0 \x60\xC8 |0 \x60\xC9 |0 \x86\xEC |0 \x86\xED |0 \x86\xEE |0 \x60\xBD |0 \x60\xA9 |0 \x55\x44 |0 \x60\xC0 |0 \x86\xEF |0 \x60\xB1 |0 \x86\xF0 |0 \x86\xF1 |0 \x86\xF2 |0 \x86\xF3 |0 \x86\xF4 |0 \x55\xC7 |0 \x60\xC2 |0 \x86\xF5 |0 \x60\xB4 |0 \x86\xF6 |0 \x57\xCA |0 \x86\xF7 |0 \x56\x63 |0 \x60\xCC |0 \x60\xC5 |0 \x60\xC1 |0 \x86\xF8 |0 \x60\xCA |0 \x86\xF9 |0 \x60\xB9 |0 \x60\xBE |0 \x60\xBF |0 \x86\xFA |0 \x86\xFB |0 \x60\xC4 |0 \x86\xFC |0 \x86\xFD |0 \x60\xC6 |0 \x60\xC7 |0 \x87\x41 |0 \x60\xCB |0 \x87\x42 |0 \x60\xBA |0 \x87\x43 |0 \x87\x44 |0 \x87\x45 |0 \x87\x46 |0 \x87\x47 |0 \x56\x74 |0 \x60\xD4 |0 \x87\x48 |0 \x60\xD5 |0 \x60\xD1 |0 \x87\x49 |0 \x87\x4A |0 \x87\x4B |0 \x87\x4C |0 \x87\x4D |0 \x87\x4E |0 \x60\xCF |0 \x4E\xCD |0 \x87\x4F |0 \x87\x50 |0 \x60\xD0 |0 \x87\x51 |0 \x4C\xC1 |0 \x5C\xC4 |0 \x87\x52 |0 \x87\x53 |0 \x87\x54 |0 \x87\x55 |0 \x87\x56 |0 \x87\x57 |0 \x87\x58 |0 \x87\x59 |0 \x58\xE9 |0 \x87\x5A |0 \x87\x5B |0 \x51\xEE |0 \x87\x5C |0 \x87\x5D |0 \x60\xCE |0 \x60\xBC |0 \x87\x5E |0 \x87\x5F |0 \x87\x60 |0 \x60\xD3 |0 \x60\xD2 |0 \x87\x61 |0 \x87\x62 |0 \x60\xD6 |0 \x87\x63 |0 \x87\x64 |0 \x87\x65 |0 \x87\x66 |0 \x60\xDB |0 \x60\xD7 |0 \x87\x67 |0 \x87\x68 |0 \x87\x69 |0 \x5B\xF5 |0 \x4A\x50 |0 \x87\x6A |0 \x5C\x8D |0 \x87\x6B |0 \x56\x5B |0 \x87\x6C |0 \x87\x6D |0 \x60\xD9 |0 \x87\x6E |0 \x57\xFA |0 \x87\x6F |0 \x87\x70 |0 \x87\x71 |0 \x4D\xD8 |0 \x87\x72 |0 \x87\x73 |0 \x87\x74 |0 \x87\x75 |0 \x87\x76 |0 \x87\x77 |0 \x87\x78 |0 \x87\x79 |0 \x87\x7A |0 \x87\x7B |0 \x87\x7C |0 \x87\x7D |0 \x60\xE0 |0 \x60\xDC |0 \x59\xAC |0 \x87\x7E |0 \x87\x7F |0 \x87\x81 |0 \x87\x82 |0 \x87\x83 |0 \x60\xE1 |0 \x87\x84 |0 \x87\x85 |0 \x60\xDA |0 \x60\xD8 |0 \x60\xDE |0 \x87\x86 |0 \x87\x87 |0 \x60\xDF |0 \x87\x88 |0 \x87\x89 |0 \x87\x8A |0 \x87\x8B |0 \x87\x8C |0 \x60\xDD |0 \x87\x8D |0 \x60\xE3 |0 \x87\x8E |0 \x87\x8F |0 \x87\x90 |0 \x53\xF6 |0 \x5C\xAB |0 \x5A\xEA |0 \x60\xE5 |0 \x55\xC8 |0 \x87\x91 |0 \x87\x92 |0 \x87\x93 |0 \x87\x94 |0 \x60\xE4 |0 \x87\x95 |0 \x87\x96 |0 \x87\x97 |0 \x87\x98 |0 \x4C\xC0 |0 \x87\x99 |0 \x87\x9A |0 \x87\x9B |0 \x87\x9C |0 \x60\xE6 |0 \x60\xE7 |0 \x87\x9D |0 \x87\x9E |0 \x87\x9F |0 \x87\xA0 |0 \x87\xA1 |0 \x87\xA2 |0 \x87\xA3 |0 \x87\xA4 |0 \x60\xE8 |0 \x60\xE2 |0 \x87\xA5 |0 \x87\xA6 |0 \x87\xA7 |0 \x87\xA8 |0 \x87\xA9 |0 \x87\xAA |0 \x87\xAB |0 \x4D\xBE |0 \x56\xE6 |0 \x87\xAC |0 \x87\xAD |0 \x87\xAE |0 \x60\xE9 |0 \x87\xAF |0 \x87\xB0 |0 \x87\xB1 |0 \x87\xB2 |0 \x87\xB3 |0 \x87\xB4 |0 \x87\xB5 |0 \x87\xB6 |0 \x87\xB7 |0 \x87\xB8 |0 \x87\xB9 |0 \x87\xBA |0 \x87\xBB |0 \x87\xBC |0 \x87\xBD |0 \x58\x9A |0 \x87\xBE |0 \x87\xBF |0 \x87\xC0 |0 \x87\xC1 |0 \x87\xC2 |0 \x87\xC3 |0 \x87\xC4 |0 \x87\xC5 |0 \x87\xC6 |0 \x87\xC7 |0 \x87\xC8 |0 \x60\xEA |0 \x87\xC9 |0 \x87\xCA |0 \x87\xCB |0 \x87\xCC |0 \x87\xCD |0 \x87\xCE |0 \x87\xCF |0 \x54\xC1 |0 \x87\xD0 |0 \x87\xD1 |0 \x87\xD2 |0 \x87\xD3 |0 \x4F\x60 |0 \x87\xD4 |0 \x87\xD5 |0 \x87\xD6 |0 \x87\xD7 |0 \x87\xD8 |0 \x87\xD9 |0 \x87\xDA |0 \x87\xDB |0 \x87\xDC |0 \x87\xDD |0 \x87\xDE |0 \x87\xDF |0 \x87\xE0 |0 \x52\xD1 |0 \x87\xE1 |0 \x87\xE2 |0 \x87\xE3 |0 \x87\xE4 |0 \x87\xE5 |0 \x87\xE6 |0 \x87\xE7 |0 \x87\xE8 |0 \x87\xE9 |0 \x60\xEB |0 \x87\xEA |0 \x87\xEB |0 \x60\xEC |0 \x87\xEC |0 \x87\xED |0 \x54\x95 |0 \x56\x64 |0 \x87\xEE |0 \x60\xED |0 \x4E\x78 |0 \x5C\xB5 |0 \x59\xF1 |0 \x60\xEE |0 \x57\x65 |0 \x87\xEF |0 \x4B\xD9 |0 \x87\xF0 |0 \x87\xF1 |0 \x87\xF2 |0 \x87\xF3 |0 \x87\xF4 |0 \x87\xF5 |0 \x60\xF0 |0 \x87\xF6 |0 \x5A\xAF |0 \x87\xF7 |0 \x87\xF8 |0 \x50\xA6 |0 \x4A\xD0 |0 \x87\xF9 |0 \x87\xFA |0 \x57\xA6 |0 \x60\xEF |0 \x87\xFB |0 \x87\xFC |0 \x87\xFD |0 \x60\xF1 |0 \x4D\x6C |0 \x88\x41 |0 \x88\x42 |0 \x4D\x9B |0 \x57\x5C |0 \x60\xF2 |0 \x88\x43 |0 \x88\x44 |0 \x88\x45 |0 \x53\xD3 |0 \x60\xF3 |0 \x88\x46 |0 \x5A\xB1 |0 \x88\x47 |0 \x54\xA5 |0 \x60\xF5 |0 \x60\xF4 |0 \x88\x48 |0 \x88\x49 |0 \x88\x4A |0 \x88\x4B |0 \x88\x4C |0 \x88\x4D |0 \x88\x4E |0 \x88\x4F |0 \x88\x50 |0 \x88\x51 |0 \x88\x52 |0 \x88\x53 |0 \x88\x54 |0 \x88\x55 |0 \x88\x56 |0 \x88\x57 |0 \x88\x58 |0 \x60\xF6 |0 \x88\x59 |0 \x88\x5A |0 \x57\x61 |0 \x88\x5B |0 \x88\x5C |0 \x88\x5D |0 \x55\xA4 |0 \x88\x5E |0 \x88\x5F |0 \x88\x60 |0 \x88\x61 |0 \x5A\xD9 |0 \x5E\x77 |0 \x5E\x79 |0 \x88\x62 |0 \x5E\x78 |0 \x4D\x88 |0 \x5E\x7C |0 \x5E\x7D |0 \x4B\x78 |0 \x88\x63 |0 \x88\x64 |0 \x5E\x7A |0 \x88\x65 |0 \x88\x66 |0 \x88\x67 |0 \x88\x68 |0 \x88\x69 |0 \x5E\x7B |0 \x4A\x41 |0 \x5E\x7F |0 \x88\x6A |0 \x88\x6B |0 \x4E\x99 |0 \x88\x6C |0 \x5B\xB6 |0 \x88\x6D |0 \x5E\x81 |0 \x88\x6E |0 \x88\x6F |0 \x88\x70 |0 \x88\x71 |0 \x4F\xF8 |0 \x88\x72 |0 \x88\x73 |0 \x4C\x5B |0 \x88\x74 |0 \x5E\x70 |0 \x56\xAD |0 \x50\x52 |0 \x4E\x55 |0 \x5C\x99 |0 \x50\x73 |0 \x88\x75 |0 \x88\x76 |0 \x88\x77 |0 \x88\x78 |0 \x88\x79 |0 \x50\x8A |0 \x88\x7A |0 \x88\x7B |0 \x4E\xE0 |0 \x56\xB2 |0 \x5E\x7E |0 \x48\xD2 |0 \x57\xEA |0 \x4C\x78 |0 \x5C\x59 |0 \x53\xC1 |0 \x88\x7C |0 \x88\x7D |0 \x50\xA3 |0 \x88\x7E |0 \x56\xB8 |0 \x88\x7F |0 \x5E\x88 |0 \x5E\x82 |0 \x53\xB9 |0 \x5E\x84 |0 \x88\x81 |0 \x5E\x89 |0 \x88\x82 |0 \x53\x98 |0 \x88\x83 |0 \x88\x84 |0 \x88\x85 |0 \x5E\x8B |0 \x88\x86 |0 \x88\x87 |0 \x5E\x8A |0 \x50\x60 |0 \x88\x88 |0 \x88\x89 |0 \x88\x8A |0 \x5E\x87 |0 \x5E\x86 |0 \x88\x8B |0 \x88\x8C |0 \x88\x8D |0 \x88\x8E |0 \x88\x8F |0 \x4A\xB8 |0 \x50\xAB |0 \x51\xA1 |0 \x5E\x83 |0 \x5E\x85 |0 \x88\x90 |0 \x88\x91 |0 \x88\x92 |0 \x88\x93 |0 \x58\xCC |0 \x5E\x8E |0 \x88\x94 |0 \x88\x95 |0 \x88\x96 |0 \x88\x97 |0 \x88\x98 |0 \x50\xDC |0 \x5E\x93 |0 \x88\x99 |0 \x88\x9A |0 \x88\x9B |0 \x88\x9C |0 \x88\x9D |0 \x88\x9E |0 \x88\x9F |0 \x4B\xE1 |0 \x88\xA0 |0 \x88\xA1 |0 \x88\xA2 |0 \x88\xA3 |0 \x5E\x94 |0 \x5E\x72 |0 \x4D\x58 |0 \x5A\xAA |0 \x5E\x8D |0 \x88\xA4 |0 \x50\x71 |0 \x5E\x91 |0 \x88\xA5 |0 \x5E\x71 |0 \x88\xA6 |0 \x4B\x87 |0 \x88\xA7 |0 \x5E\x8C |0 \x50\x86 |0 \x88\xA8 |0 \x88\xA9 |0 \x88\xAA |0 \x5E\x8F |0 \x88\xAB |0 \x5E\x92 |0 \x88\xAC |0 \x88\xAD |0 \x88\xAE |0 \x5E\x9A |0 \x88\xAF |0 \x88\xB0 |0 \x88\xB1 |0 \x88\xB2 |0 \x88\xB3 |0 \x88\xB4 |0 \x88\xB5 |0 \x88\xB6 |0 \x88\xB7 |0 \x4D\x41 |0 \x48\xA2 |0 \x88\xB8 |0 \x88\xB9 |0 \x88\xBA |0 \x88\xBB |0 \x88\xBC |0 \x88\xBD |0 \x88\xBE |0 \x51\xF0 |0 \x88\xBF |0 \x88\xC0 |0 \x4A\x67 |0 \x5E\x90 |0 \x88\xC1 |0 \x88\xC2 |0 \x5E\x99 |0 \x88\xC3 |0 \x53\xD1 |0 \x5E\x95 |0 \x88\xC4 |0 \x88\xC5 |0 \x5E\x96 |0 \x5E\x98 |0 \x5E\x97 |0 \x88\xC6 |0 \x88\xC7 |0 \x5E\x9F |0 \x88\xC8 |0 \x5A\x93 |0 \x49\xB9 |0 \x88\xC9 |0 \x88\xCA |0 \x88\xCB |0 \x5E\x9E |0 \x88\xCC |0 \x88\xCD |0 \x88\xCE |0 \x88\xCF |0 \x88\xD0 |0 \x88\xD1 |0 \x88\xD2 |0 \x88\xD3 |0 \x5E\xA3 |0 \x88\xD4 |0 \x5E\x9C |0 \x88\xD5 |0 \x88\xD6 |0 \x88\xD7 |0 \x88\xD8 |0 \x5E\x9B |0 \x88\xD9 |0 \x88\xDA |0 \x88\xDB |0 \x5E\x9D |0 \x53\x81 |0 \x4E\x9A |0 \x88\xDC |0 \x88\xDD |0 \x5E\xA2 |0 \x88\xDE |0 \x88\xDF |0 \x5E\xA4 |0 \x88\xE0 |0 \x56\xC2 |0 \x88\xE1 |0 \x88\xE2 |0 \x88\xE3 |0 \x4B\xD0 |0 \x5F\x60 |0 \x88\xE4 |0 \x88\xE5 |0 \x88\xE6 |0 \x5E\xA0 |0 \x88\xE7 |0 \x5E\xA1 |0 \x88\xE8 |0 \x88\xE9 |0 \x88\xEA |0 \x54\x55 |0 \x88\xEB |0 \x88\xEC |0 \x88\xED |0 \x4B\xE8 |0 \x88\xEE |0 \x88\xEF |0 \x88\xF0 |0 \x5E\xA6 |0 \x88\xF1 |0 \x88\xF2 |0 \x88\xF3 |0 \x88\xF4 |0 \x5E\xA5 |0 \x88\xF5 |0 \x5E\xA8 |0 \x49\x44 |0 \x88\xF6 |0 \x88\xF7 |0 \x4B\x6C |0 \x88\xF8 |0 \x88\xF9 |0 \x88\xFA |0 \x88\xFB |0 \x88\xFC |0 \x50\x50 |0 \x88\xFD |0 \x89\x41 |0 \x89\x42 |0 \x89\x43 |0 \x89\x44 |0 \x59\x7F |0 \x89\x45 |0 \x89\x46 |0 \x89\x47 |0 \x89\x48 |0 \x4B\xC1 |0 \x89\x49 |0 \x89\x4A |0 \x89\x4B |0 \x89\x4C |0 \x89\x4D |0 \x89\x4E |0 \x89\x4F |0 \x89\x50 |0 \x89\x51 |0 \x89\x52 |0 \x89\x53 |0 \x89\x54 |0 \x89\x55 |0 \x89\x56 |0 \x5E\xA7 |0 \x89\x57 |0 \x89\x58 |0 \x89\x59 |0 \x89\x5A |0 \x89\x5B |0 \x89\x5C |0 \x89\x5D |0 \x56\x9B |0 \x66\x94 |0 \x89\x5E |0 \x89\x5F |0 \x89\x60 |0 \x56\x7C |0 \x89\x61 |0 \x89\x62 |0 \x56\x9F |0 \x89\x63 |0 \x89\x64 |0 \x89\x65 |0 \x56\xC0 |0 \x89\x66 |0 \x89\x67 |0 \x89\x68 |0 \x89\x69 |0 \x89\x6A |0 \x54\xFA |0 \x89\x6B |0 \x89\x6C |0 \x89\x6D |0 \x89\x6E |0 \x89\x6F |0 \x89\x70 |0 \x5E\xA9 |0 \x89\x71 |0 \x89\x72 |0 \x89\x73 |0 \x89\x74 |0 \x89\x75 |0 \x56\xED |0 \x5E\xAA |0 \x89\x76 |0 \x89\x77 |0 \x89\x78 |0 \x89\x79 |0 \x89\x7A |0 \x89\x7B |0 \x89\x7C |0 \x89\x7D |0 \x89\x7E |0 \x89\x7F |0 \x89\x81 |0 \x89\x82 |0 \x89\x83 |0 \x89\x84 |0 \x89\x85 |0 \x89\x86 |0 \x89\x87 |0 \x5E\x73 |0 \x89\x88 |0 \x5E\xAE |0 \x5E\xAB |0 \x89\x89 |0 \x4F\xB2 |0 \x89\x8A |0 \x55\xFA |0 \x89\x8B |0 \x89\x8C |0 \x89\x8D |0 \x5E\xAC |0 \x89\x8E |0 \x89\x8F |0 \x89\x90 |0 \x89\x91 |0 \x89\x92 |0 \x89\x93 |0 \x89\x94 |0 \x89\x95 |0 \x55\x6A |0 \x52\xB8 |0 \x89\x96 |0 \x89\x97 |0 \x89\x98 |0 \x89\x99 |0 \x89\x9A |0 \x54\x5D |0 \x5E\xAD |0 \x89\x9B |0 \x89\x9C |0 \x89\x9D |0 \x5A\xF5 |0 \x58\xE5 |0 \x89\x9E |0 \x89\x9F |0 \x89\xA0 |0 \x89\xA1 |0 \x89\xA2 |0 \x89\xA3 |0 \x89\xA4 |0 \x89\xA5 |0 \x52\xAA |0 \x4B\xD4 |0 \x89\xA6 |0 \x89\xA7 |0 \x89\xA8 |0 \x89\xA9 |0 \x89\xAA |0 \x89\xAB |0 \x89\xAC |0 \x89\xAD |0 \x89\xAE |0 \x89\xAF |0 \x89\xB0 |0 \x89\xB1 |0 \x89\xB2 |0 \x89\xB3 |0 \x89\xB4 |0 \x89\xB5 |0 \x89\xB6 |0 \x89\xB7 |0 \x5E\x74 |0 \x89\xB8 |0 \x89\xB9 |0 \x89\xBA |0 \x89\xBB |0 \x49\x7A |0 \x89\xBC |0 \x89\xBD |0 \x89\xBE |0 \x5E\x75 |0 \x89\xBF |0 \x89\xC0 |0 \x89\xC1 |0 \x89\xC2 |0 \x89\xC3 |0 \x89\xC4 |0 \x89\xC5 |0 \x89\xC6 |0 \x89\xC7 |0 \x89\xC8 |0 \x89\xC9 |0 \x5E\x76 |0 \x89\xCA |0 \x89\xCB |0 \x89\xCC |0 \x4D\xBD |0 \x89\xCD |0 \x89\xCE |0 \x89\xCF |0 \x89\xD0 |0 \x89\xD1 |0 \x89\xD2 |0 \x89\xD3 |0 \x89\xD4 |0 \x89\xD5 |0 \x89\xD6 |0 \x89\xD7 |0 \x89\xD8 |0 \x89\xD9 |0 \x89\xDA |0 \x54\xBF |0 \x89\xDB |0 \x89\xDC |0 \x89\xDD |0 \x89\xDE |0 \x89\xDF |0 \x89\xE0 |0 \x55\xBE |0 \x54\xC8 |0 \x89\xE1 |0 \x5C\x53 |0 \x89\xE2 |0 \x55\x9A |0 \x89\xE3 |0 \x89\xE4 |0 \x50\x67 |0 \x89\xE5 |0 \x89\xE6 |0 \x4D\xF7 |0 \x89\xE7 |0 \x89\xE8 |0 \x59\xBB |0 \x89\xE9 |0 \x89\xEA |0 \x89\xEB |0 \x89\xEC |0 \x89\xED |0 \x89\xEE |0 \x89\xEF |0 \x89\xF0 |0 \x61\xB9 |0 \x89\xF1 |0 \x4A\xA5 |0 \x89\xF2 |0 \x89\xF3 |0 \x49\x58 |0 \x89\xF4 |0 \x89\xF5 |0 \x89\xF6 |0 \x89\xF7 |0 \x89\xF8 |0 \x4C\xB3 |0 \x89\xF9 |0 \x58\x64 |0 \x89\xFA |0 \x89\xFB |0 \x89\xFC |0 \x89\xFD |0 \x5D\x88 |0 \x58\x46 |0 \x57\x83 |0 \x8A\x41 |0 \x8A\x42 |0 \x5D\x8E |0 \x4B\xDF |0 \x8A\x43 |0 \x59\xB8 |0 \x8A\x44 |0 \x8A\x45 |0 \x4D\x5B |0 \x8A\x46 |0 \x8A\x47 |0 \x8A\x48 |0 \x8A\x49 |0 \x61\xB8 |0 \x61\xB6 |0 \x8A\x4A |0 \x4A\xF2 |0 \x8A\x4B |0 \x56\xEB |0 \x56\xAA |0 \x4C\x93 |0 \x8A\x4C |0 \x5C\xB1 |0 \x59\x8C |0 \x4D\xBA |0 \x8A\x4D |0 \x55\xA6 |0 \x8A\x4E |0 \x8A\x4F |0 \x57\x57 |0 \x8A\x50 |0 \x8A\x51 |0 \x59\xC3 |0 \x50\x85 |0 \x4E\xCF |0 \x4B\xE0 |0 \x8A\x52 |0 \x5F\xC4 |0 \x8A\x53 |0 \x8A\x54 |0 \x8A\x55 |0 \x8A\x56 |0 \x5F\xC5 |0 \x5E\x5C |0 \x8A\x57 |0 \x59\x79 |0 \x8A\x58 |0 \x8A\x59 |0 \x53\xE5 |0 \x52\xCD |0 \x4C\x8F |0 \x8A\x5A |0 \x4C\x7C |0 \x8A\x5B |0 \x8A\x5C |0 \x50\x9D |0 \x5C\x81 |0 \x8A\x5D |0 \x53\xF4 |0 \x8A\x5E |0 \x8A\x5F |0 \x49\x5C |0 \x5F\xC7 |0 \x4F\x51 |0 \x56\xD6 |0 \x5F\xC9 |0 \x8A\x60 |0 \x5F\xC8 |0 \x8A\x61 |0 \x8A\x62 |0 \x8A\x63 |0 \x8A\x64 |0 \x8A\x65 |0 \x4B\x8D |0 \x8A\x66 |0 \x55\x7D |0 \x8A\x67 |0 \x8A\x68 |0 \x48\xC1 |0 \x8A\x69 |0 \x8A\x6A |0 \x8A\x6B |0 \x8A\x6C |0 \x8A\x6D |0 \x8A\x6E |0 \x8A\x6F |0 \x8A\x70 |0 \x8A\x71 |0 \x8A\x72 |0 \x8A\x73 |0 \x8A\x74 |0 \x8A\x75 |0 \x53\x4E |0 \x53\x4B |0 \x8A\x76 |0 \x52\xCB |0 \x8A\x77 |0 \x4E\xE8 |0 \x56\x9E |0 \x8A\x78 |0 \x8A\x79 |0 \x8A\x7A |0 \x4D\xC2 |0 \x8A\x7B |0 \x8A\x7C |0 \x8A\x7D |0 \x63\x9A |0 \x54\xE6 |0 \x63\x9B |0 \x57\x9E |0 \x8A\x7E |0 \x5C\x51 |0 \x4C\xBD |0 \x51\xE7 |0 \x8A\x7F |0 \x54\xD0 |0 \x8A\x81 |0 \x8A\x82 |0 \x63\x9C |0 \x8A\x83 |0 \x8A\x84 |0 \x8A\x85 |0 \x8A\x86 |0 \x4B\xC9 |0 \x4E\xCA |0 \x8A\x87 |0 \x8A\x88 |0 \x59\x9E |0 \x63\xA0 |0 \x8A\x89 |0 \x52\x8F |0 \x8A\x8A |0 \x8A\x8B |0 \x8A\x8C |0 \x8A\x8D |0 \x63\xA3 |0 \x8A\x8E |0 \x8A\x8F |0 \x8A\x90 |0 \x8A\x91 |0 \x63\x9F |0 \x63\xA4 |0 \x57\x77 |0 \x8A\x92 |0 \x8A\x93 |0 \x4C\x61 |0 \x63\x9D |0 \x63\x9E |0 \x63\xA2 |0 \x8A\x94 |0 \x8A\x95 |0 \x52\xDC |0 \x63\xA7 |0 \x8A\x96 |0 \x8A\x97 |0 \x63\xA6 |0 \x8A\x98 |0 \x8A\x99 |0 \x8A\x9A |0 \x8A\x9B |0 \x8A\x9C |0 \x8A\x9D |0 \x52\x63 |0 \x8A\x9E |0 \x53\xDD |0 \x8A\x9F |0 \x8A\xA0 |0 \x63\xA9 |0 \x8A\xA1 |0 \x8A\xA2 |0 \x8A\xA3 |0 \x8A\xA4 |0 \x8A\xA5 |0 \x8A\xA6 |0 \x8A\xA7 |0 \x52\xB6 |0 \x8A\xA8 |0 \x8A\xA9 |0 \x8A\xAA |0 \x63\xA1 |0 \x55\xBB |0 \x8A\xAB |0 \x8A\xAC |0 \x8A\xAD |0 \x8A\xAE |0 \x4F\x84 |0 \x4D\x63 |0 \x63\xA5 |0 \x58\xD4 |0 \x57\xAE |0 \x8A\xAF |0 \x8A\xB0 |0 \x63\xA8 |0 \x63\xAF |0 \x8A\xB1 |0 \x59\xA5 |0 \x8A\xB2 |0 \x4F\x4A |0 \x63\xAC |0 \x8A\xB3 |0 \x8A\xB4 |0 \x8A\xB5 |0 \x8A\xB6 |0 \x8A\xB7 |0 \x63\xAE |0 \x8A\xB8 |0 \x50\xD0 |0 \x8A\xB9 |0 \x8A\xBA |0 \x59\xCB |0 \x8A\xBB |0 \x8A\xBC |0 \x8A\xBD |0 \x4E\xA6 |0 \x8A\xBE |0 \x8A\xBF |0 \x8A\xC0 |0 \x8A\xC1 |0 \x8A\xC2 |0 \x8A\xC3 |0 \x8A\xC4 |0 \x8A\xC5 |0 \x8A\xC6 |0 \x8A\xC7 |0 \x8A\xC8 |0 \x8A\xC9 |0 \x63\xB0 |0 \x8A\xCA |0 \x59\xF5 |0 \x8A\xCB |0 \x8A\xCC |0 \x8A\xCD |0 \x5C\x6B |0 \x8A\xCE |0 \x57\x9F |0 \x8A\xCF |0 \x57\x7E |0 \x51\xA5 |0 \x63\xAA |0 \x63\xAB |0 \x4F\x5F |0 \x63\xAD |0 \x63\xB2 |0 \x8A\xD0 |0 \x8A\xD1 |0 \x63\xB1 |0 \x8A\xD2 |0 \x8A\xD3 |0 \x8A\xD4 |0 \x8A\xD5 |0 \x63\xB5 |0 \x8A\xD6 |0 \x63\xB7 |0 \x8A\xD7 |0 \x8A\xD8 |0 \x8A\xD9 |0 \x8A\xDA |0 \x52\xEE |0 \x8A\xDB |0 \x8A\xDC |0 \x8A\xDD |0 \x52\xC7 |0 \x8A\xDE |0 \x8A\xDF |0 \x4F\xE9 |0 \x55\x90 |0 \x8A\xE0 |0 \x8A\xE1 |0 \x63\xB6 |0 \x8A\xE2 |0 \x4B\xEF |0 \x8A\xE3 |0 \x8A\xE4 |0 \x8A\xE5 |0 \x52\x85 |0 \x8A\xE6 |0 \x8A\xE7 |0 \x8A\xE8 |0 \x8A\xE9 |0 \x8A\xEA |0 \x8A\xEB |0 \x8A\xEC |0 \x5A\x8A |0 \x63\xB3 |0 \x8A\xED |0 \x63\xB4 |0 \x8A\xEE |0 \x54\xA1 |0 \x8A\xEF |0 \x8A\xF0 |0 \x8A\xF1 |0 \x8A\xF2 |0 \x8A\xF3 |0 \x63\xBC |0 \x8A\xF4 |0 \x8A\xF5 |0 \x8A\xF6 |0 \x63\xB8 |0 \x8A\xF7 |0 \x8A\xF8 |0 \x8A\xF9 |0 \x8A\xFA |0 \x8A\xFB |0 \x53\xC4 |0 \x8A\xFC |0 \x8A\xFD |0 \x57\x92 |0 \x63\xBA |0 \x8B\x41 |0 \x8B\x42 |0 \x8B\x43 |0 \x8B\x44 |0 \x8B\x45 |0 \x8B\x46 |0 \x8B\x47 |0 \x8B\x48 |0 \x8B\x49 |0 \x8B\x4A |0 \x63\xBB |0 \x8B\x4B |0 \x8B\x4C |0 \x8B\x4D |0 \x8B\x4E |0 \x4E\x8A |0 \x8B\x4F |0 \x8B\x50 |0 \x8B\x51 |0 \x8B\x52 |0 \x8B\x53 |0 \x8B\x54 |0 \x8B\x55 |0 \x63\xBD |0 \x8B\x56 |0 \x8B\x57 |0 \x8B\x58 |0 \x8B\x59 |0 \x63\xB9 |0 \x8B\x5A |0 \x8B\x5B |0 \x50\xB6 |0 \x8B\x5C |0 \x8B\x5D |0 \x8B\x5E |0 \x8B\x5F |0 \x8B\x60 |0 \x8B\x61 |0 \x8B\x62 |0 \x8B\x63 |0 \x8B\x64 |0 \x5A\x44 |0 \x63\xBE |0 \x55\x95 |0 \x63\xC2 |0 \x8B\x65 |0 \x8B\x66 |0 \x63\xC3 |0 \x8B\x67 |0 \x8B\x68 |0 \x8B\x69 |0 \x8B\x6A |0 \x58\xF5 |0 \x8B\x6B |0 \x8B\x6C |0 \x8B\x6D |0 \x8B\x6E |0 \x8B\x6F |0 \x8B\x70 |0 \x8B\x71 |0 \x8B\x72 |0 \x8B\x73 |0 \x8B\x74 |0 \x8B\x75 |0 \x8B\x76 |0 \x8B\x77 |0 \x8B\x78 |0 \x8B\x79 |0 \x8B\x7A |0 \x8B\x7B |0 \x8B\x7C |0 \x52\x5D |0 \x8B\x7D |0 \x8B\x7E |0 \x8B\x7F |0 \x8B\x81 |0 \x8B\x82 |0 \x8B\x83 |0 \x8B\x84 |0 \x52\x64 |0 \x63\xC1 |0 \x8B\x85 |0 \x8B\x86 |0 \x8B\x87 |0 \x8B\x88 |0 \x8B\x89 |0 \x8B\x8A |0 \x8B\x8B |0 \x8B\x8C |0 \x8B\x8D |0 \x8B\x8E |0 \x8B\x8F |0 \x8B\x90 |0 \x8B\x91 |0 \x8B\x92 |0 \x63\xC0 |0 \x8B\x93 |0 \x8B\x94 |0 \x8B\x95 |0 \x8B\x96 |0 \x8B\x97 |0 \x8B\x98 |0 \x8B\x99 |0 \x63\xC6 |0 \x58\x51 |0 \x8B\x9A |0 \x66\x95 |0 \x8B\x9B |0 \x8B\x9C |0 \x63\xC9 |0 \x8B\x9D |0 \x8B\x9E |0 \x8B\x9F |0 \x8B\xA0 |0 \x8B\xA1 |0 \x63\xC4 |0 \x8B\xA2 |0 \x8B\xA3 |0 \x4E\xDD |0 \x55\x49 |0 \x8B\xA4 |0 \x8B\xA5 |0 \x8B\xA6 |0 \x8B\xA7 |0 \x8B\xA8 |0 \x8B\xA9 |0 \x4E\xB4 |0 \x8B\xAA |0 \x8B\xAB |0 \x58\x73 |0 \x8B\xAC |0 \x8B\xAD |0 \x8B\xAE |0 \x8B\xAF |0 \x8B\xB0 |0 \x63\xC7 |0 \x8B\xB1 |0 \x63\xC8 |0 \x8B\xB2 |0 \x63\xCD |0 \x8B\xB3 |0 \x63\xCF |0 \x8B\xB4 |0 \x8B\xB5 |0 \x8B\xB6 |0 \x63\xD0 |0 \x8B\xB7 |0 \x8B\xB8 |0 \x8B\xB9 |0 \x63\xCA |0 \x4B\x75 |0 \x8B\xBA |0 \x63\xCB |0 \x8B\xBB |0 \x8B\xBC |0 \x63\xCE |0 \x8B\xBD |0 \x8B\xBE |0 \x52\xDA |0 \x8B\xBF |0 \x63\xC5 |0 \x8B\xC0 |0 \x8B\xC1 |0 \x8B\xC2 |0 \x8B\xC3 |0 \x8B\xC4 |0 \x63\xCC |0 \x8B\xC5 |0 \x8B\xC6 |0 \x8B\xC7 |0 \x8B\xC8 |0 \x8B\xC9 |0 \x8B\xCA |0 \x8B\xCB |0 \x8B\xCC |0 \x8B\xCD |0 \x8B\xCE |0 \x8B\xCF |0 \x8B\xD0 |0 \x8B\xD1 |0 \x8B\xD2 |0 \x8B\xD3 |0 \x8B\xD4 |0 \x8B\xD5 |0 \x8B\xD6 |0 \x8B\xD7 |0 \x8B\xD8 |0 \x8B\xD9 |0 \x8B\xDA |0 \x8B\xDB |0 \x63\xD1 |0 \x8B\xDC |0 \x8B\xDD |0 \x8B\xDE |0 \x8B\xDF |0 \x8B\xE0 |0 \x8B\xE1 |0 \x8B\xE2 |0 \x8B\xE3 |0 \x8B\xE4 |0 \x8B\xE5 |0 \x8B\xE6 |0 \x8B\xE7 |0 \x63\xD3 |0 \x63\xD2 |0 \x8B\xE8 |0 \x8B\xE9 |0 \x8B\xEA |0 \x8B\xEB |0 \x8B\xEC |0 \x8B\xED |0 \x8B\xEE |0 \x8B\xEF |0 \x8B\xF0 |0 \x8B\xF1 |0 \x8B\xF2 |0 \x8B\xF3 |0 \x8B\xF4 |0 \x8B\xF5 |0 \x8B\xF6 |0 \x8B\xF7 |0 \x8B\xF8 |0 \x8B\xF9 |0 \x8B\xFA |0 \x8B\xFB |0 \x8B\xFC |0 \x8B\xFD |0 \x8C\x41 |0 \x8C\x42 |0 \x8C\x43 |0 \x8C\x44 |0 \x63\xD4 |0 \x8C\x45 |0 \x5D\x99 |0 \x8C\x46 |0 \x8C\x47 |0 \x63\xD5 |0 \x8C\x48 |0 \x8C\x49 |0 \x8C\x4A |0 \x8C\x4B |0 \x8C\x4C |0 \x8C\x4D |0 \x8C\x4E |0 \x8C\x4F |0 \x63\xD6 |0 \x8C\x50 |0 \x8C\x51 |0 \x8C\x52 |0 \x8C\x53 |0 \x8C\x54 |0 \x8C\x55 |0 \x8C\x56 |0 \x8C\x57 |0 \x8C\x58 |0 \x8C\x59 |0 \x8C\x5A |0 \x8C\x5B |0 \x8C\x5C |0 \x8C\x5D |0 \x8C\x5E |0 \x5C\x73 |0 \x63\xDC |0 \x8C\x5F |0 \x63\xDD |0 \x50\x77 |0 \x5A\xCF |0 \x8C\x60 |0 \x5C\x76 |0 \x4A\xE5 |0 \x56\x90 |0 \x63\xD9 |0 \x5C\xC2 |0 \x5C\x6E |0 \x58\xA1 |0 \x8C\x61 |0 \x52\x6F |0 \x8C\x62 |0 \x8C\x63 |0 \x63\xDE |0 \x4E\xBD |0 \x4D\x62 |0 \x63\xDA |0 \x59\x47 |0 \x8C\x64 |0 \x8C\x65 |0 \x4D\xA1 |0 \x51\xCE |0 \x8C\x66 |0 \x5C\xAA |0 \x8C\x67 |0 \x8C\x68 |0 \x8C\x69 |0 \x55\xEA |0 \x63\x8F |0 \x8C\x6A |0 \x63\xDB |0 \x8C\x6B |0 \x4C\x96 |0 \x8C\x6C |0 \x8C\x6D |0 \x8C\x6E |0 \x8C\x6F |0 \x54\xE5 |0 \x8C\x70 |0 \x8C\x71 |0 \x52\xF4 |0 \x8C\x72 |0 \x8C\x73 |0 \x63\x52 |0 \x52\xFD |0 \x8C\x74 |0 \x56\x9D |0 \x63\x53 |0 \x5B\x4C |0 \x8C\x75 |0 \x5A\x8F |0 \x55\xD7 |0 \x48\xB1 |0 \x8C\x76 |0 \x56\x6E |0 \x57\x8B |0 \x8C\x77 |0 \x8C\x78 |0 \x4D\xE9 |0 \x8C\x79 |0 \x8C\x7A |0 \x8C\x7B |0 \x63\x55 |0 \x8C\x7C |0 \x63\x54 |0 \x8C\x7D |0 \x5C\x7A |0 \x4D\x79 |0 \x5B\xE5 |0 \x4B\xA7 |0 \x57\x91 |0 \x59\xCA |0 \x49\x46 |0 \x55\xB4 |0 \x8C\x7E |0 \x4A\x89 |0 \x55\x94 |0 \x50\x6D |0 \x58\xFA |0 \x55\xD1 |0 \x63\x56 |0 \x4E\x62 |0 \x8C\x7F |0 \x8C\x81 |0 \x8C\x82 |0 \x58\x7C |0 \x4D\x4C |0 \x8C\x83 |0 \x8C\x84 |0 \x8C\x85 |0 \x8C\x86 |0 \x5A\xD6 |0 \x8C\x87 |0 \x8C\x88 |0 \x4D\xA5 |0 \x59\x88 |0 \x58\x9D |0 \x4E\xD1 |0 \x8C\x89 |0 \x63\x57 |0 \x54\xDC |0 \x8C\x8A |0 \x8C\x8B |0 \x8C\x8C |0 \x50\x8E |0 \x49\x97 |0 \x56\x7E |0 \x8C\x8D |0 \x8C\x8E |0 \x4E\xC4 |0 \x8C\x8F |0 \x4E\xC3 |0 \x59\xF9 |0 \x52\x7C |0 \x50\x7C |0 \x8C\x90 |0 \x8C\x91 |0 \x8C\x92 |0 \x8C\x93 |0 \x4C\xBA |0 \x8C\x94 |0 \x8C\x95 |0 \x8C\x96 |0 \x52\x62 |0 \x8C\x97 |0 \x4D\xAD |0 \x5A\xA1 |0 \x8C\x98 |0 \x8C\x99 |0 \x8C\x9A |0 \x8C\x9B |0 \x8C\x9C |0 \x8C\x9D |0 \x8C\x9E |0 \x8C\x9F |0 \x8C\xA0 |0 \x54\x7E |0 \x52\xAE |0 \x49\xEB |0 \x8C\xA1 |0 \x4D\x71 |0 \x8C\xA2 |0 \x8C\xA3 |0 \x63\x5B |0 \x51\x68 |0 \x8C\xA4 |0 \x8C\xA5 |0 \x5B\x4F |0 \x8C\xA6 |0 \x8C\xA7 |0 \x8C\xA8 |0 \x8C\xA9 |0 \x8C\xAA |0 \x63\x5C |0 \x8C\xAB |0 \x63\x5E |0 \x8C\xAC |0 \x8C\xAD |0 \x8C\xAE |0 \x8C\xAF |0 \x8C\xB0 |0 \x8C\xB1 |0 \x8C\xB2 |0 \x4A\xE6 |0 \x4B\xD3 |0 \x56\x62 |0 \x59\x50 |0 \x4B\x5C |0 \x8C\xB3 |0 \x8C\xB4 |0 \x55\xD8 |0 \x8C\xB5 |0 \x4C\x83 |0 \x8C\xB6 |0 \x8C\xB7 |0 \x55\x85 |0 \x8C\xB8 |0 \x4F\x4B |0 \x8C\xB9 |0 \x8C\xBA |0 \x57\xBD |0 \x5C\x91 |0 \x8C\xBB |0 \x8C\xBC |0 \x8C\xBD |0 \x8C\xBE |0 \x58\xA0 |0 \x8C\xBF |0 \x55\x79 |0 \x8C\xC0 |0 \x8C\xC1 |0 \x4B\xFA |0 \x63\xD7 |0 \x4E\xE1 |0 \x8C\xC2 |0 \x4A\x5E |0 \x8C\xC3 |0 \x55\x70 |0 \x8C\xC4 |0 \x63\xD8 |0 \x4A\x42 |0 \x8C\xC5 |0 \x8C\xC6 |0 \x8C\xC7 |0 \x8C\xC8 |0 \x5F\xCB |0 \x8C\xC9 |0 \x5A\x68 |0 \x5F\xCC |0 \x8C\xCA |0 \x59\xA1 |0 \x8C\xCB |0 \x8C\xCC |0 \x8C\xCD |0 \x8C\xCE |0 \x5F\xCD |0 \x8C\xCF |0 \x8C\xD0 |0 \x8C\xD1 |0 \x8C\xD2 |0 \x4F\xCC |0 \x8C\xD3 |0 \x8C\xD4 |0 \x5F\xCE |0 \x8C\xD5 |0 \x8C\xD6 |0 \x8C\xD7 |0 \x55\xAB |0 \x59\xFB |0 \x4A\x7F |0 \x63\x8B |0 \x52\xE0 |0 \x4F\xA0 |0 \x57\xB1 |0 \x52\xF1 |0 \x4F\xD5 |0 \x53\xA7 |0 \x49\xE2 |0 \x8C\xD8 |0 \x8C\xD9 |0 \x4F\xD2 |0 \x8C\xDA |0 \x8C\xDB |0 \x54\x9D |0 \x56\xEA |0 \x4F\x8D |0 \x57\xDC |0 \x8C\xDC |0 \x8C\xDD |0 \x55\xB9 |0 \x53\xC0 |0 \x63\x8D |0 \x58\xBB |0 \x8C\xDE |0 \x8C\xDF |0 \x8C\xE0 |0 \x5B\x59 |0 \x8C\xE1 |0 \x8C\xE2 |0 \x8C\xE3 |0 \x63\x8E |0 \x8C\xE4 |0 \x8C\xE5 |0 \x8C\xE6 |0 \x8C\xE7 |0 \x55\xF3 |0 \x8C\xE8 |0 \x57\x60 |0 \x51\xC4 |0 \x8C\xE9 |0 \x63\x90 |0 \x8C\xEA |0 \x51\xC3 |0 \x63\x91 |0 \x8C\xEB |0 \x8C\xEC |0 \x8C\xED |0 \x8C\xEE |0 \x8C\xEF |0 \x8C\xF0 |0 \x8C\xF1 |0 \x63\x99 |0 \x57\x6D |0 \x8C\xF2 |0 \x55\x5D |0 \x8C\xF3 |0 \x8C\xF4 |0 \x8C\xF5 |0 \x8C\xF6 |0 \x8C\xF7 |0 \x8C\xF8 |0 \x8C\xF9 |0 \x59\xD8 |0 \x61\x48 |0 \x8C\xFA |0 \x8C\xFB |0 \x8C\xFC |0 \x8C\xFD |0 \x5A\x8D |0 \x8D\x41 |0 \x56\x8B |0 \x53\xF0 |0 \x8D\x42 |0 \x8D\x43 |0 \x8D\x44 |0 \x8D\x45 |0 \x8D\x46 |0 \x61\x4C |0 \x8D\x47 |0 \x8D\x48 |0 \x8D\x49 |0 \x61\x47 |0 \x61\x49 |0 \x8D\x4A |0 \x8D\x4B |0 \x61\x4A |0 \x61\x4F |0 \x8D\x4C |0 \x8D\x4D |0 \x49\xEC |0 \x8D\x4E |0 \x61\x4B |0 \x4C\xD9 |0 \x61\x4D |0 \x61\x4E |0 \x61\x50 |0 \x4B\x5A |0 \x61\x51 |0 \x8D\x4F |0 \x8D\x50 |0 \x8D\x51 |0 \x8D\x52 |0 \x8D\x53 |0 \x61\x53 |0 \x61\x58 |0 \x8D\x54 |0 \x8D\x55 |0 \x8D\x56 |0 \x8D\x57 |0 \x8D\x58 |0 \x59\x72 |0 \x8D\x59 |0 \x61\x56 |0 \x61\x55 |0 \x51\x8C |0 \x8D\x5A |0 \x8D\x5B |0 \x8D\x5C |0 \x61\x57 |0 \x8D\x5D |0 \x5A\xBF |0 \x8D\x5E |0 \x61\x52 |0 \x8D\x5F |0 \x61\x5A |0 \x48\xB5 |0 \x8D\x60 |0 \x8D\x61 |0 \x8D\x62 |0 \x8D\x63 |0 \x61\x54 |0 \x8D\x64 |0 \x50\x9A |0 \x8D\x65 |0 \x61\x59 |0 \x8D\x66 |0 \x8D\x67 |0 \x61\x5B |0 \x8D\x68 |0 \x8D\x69 |0 \x8D\x6A |0 \x8D\x6B |0 \x8D\x6C |0 \x8D\x6D |0 \x61\x5E |0 \x8D\x6E |0 \x8D\x6F |0 \x8D\x70 |0 \x8D\x71 |0 \x8D\x72 |0 \x8D\x73 |0 \x61\x5C |0 \x8D\x74 |0 \x8D\x75 |0 \x8D\x76 |0 \x8D\x77 |0 \x8D\x78 |0 \x8D\x79 |0 \x5B\xC4 |0 \x8D\x7A |0 \x8D\x7B |0 \x8D\x7C |0 \x8D\x7D |0 \x8D\x7E |0 \x8D\x7F |0 \x8D\x81 |0 \x58\x5F |0 \x8D\x82 |0 \x8D\x83 |0 \x61\x5D |0 \x61\x5F |0 \x51\xCC |0 \x8D\x84 |0 \x4B\xEA |0 \x8D\x85 |0 \x5A\x99 |0 \x8D\x86 |0 \x8D\x87 |0 \x54\x6D |0 \x8D\x88 |0 \x8D\x89 |0 \x4C\x86 |0 \x8D\x8A |0 \x8D\x8B |0 \x8D\x8C |0 \x8D\x8D |0 \x8D\x8E |0 \x8D\x8F |0 \x8D\x90 |0 \x8D\x91 |0 \x8D\x92 |0 \x8D\x93 |0 \x4F\xFD |0 \x8D\x94 |0 \x8D\x95 |0 \x8D\x96 |0 \x8D\x97 |0 \x8D\x98 |0 \x8D\x99 |0 \x61\x60 |0 \x61\x61 |0 \x8D\x9A |0 \x8D\x9B |0 \x61\x67 |0 \x4A\x88 |0 \x8D\x9C |0 \x8D\x9D |0 \x8D\x9E |0 \x8D\x9F |0 \x8D\xA0 |0 \x8D\xA1 |0 \x53\xE8 |0 \x8D\xA2 |0 \x8D\xA3 |0 \x8D\xA4 |0 \x8D\xA5 |0 \x8D\xA6 |0 \x4A\xDD |0 \x8D\xA7 |0 \x59\x62 |0 \x8D\xA8 |0 \x8D\xA9 |0 \x8D\xAA |0 \x8D\xAB |0 \x61\x68 |0 \x8D\xAC |0 \x8D\xAD |0 \x61\x66 |0 \x8D\xAE |0 \x8D\xAF |0 \x8D\xB0 |0 \x8D\xB1 |0 \x8D\xB2 |0 \x61\x65 |0 \x8D\xB3 |0 \x61\x63 |0 \x61\x62 |0 \x8D\xB4 |0 \x49\x60 |0 \x8D\xB5 |0 \x8D\xB6 |0 \x8D\xB7 |0 \x5B\x58 |0 \x61\x64 |0 \x8D\xB8 |0 \x8D\xB9 |0 \x8D\xBA |0 \x8D\xBB |0 \x8D\xBC |0 \x61\x6B |0 \x8D\xBD |0 \x8D\xBE |0 \x8D\xBF |0 \x8D\xC0 |0 \x8D\xC1 |0 \x8D\xC2 |0 \x8D\xC3 |0 \x8D\xC4 |0 \x61\x6C |0 \x61\x6A |0 \x8D\xC5 |0 \x8D\xC6 |0 \x8D\xC7 |0 \x8D\xC8 |0 \x8D\xC9 |0 \x8D\xCA |0 \x8D\xCB |0 \x8D\xCC |0 \x68\x9B |0 \x8D\xCD |0 \x8D\xCE |0 \x61\x73 |0 \x61\x72 |0 \x54\x56 |0 \x8D\xCF |0 \x8D\xD0 |0 \x8D\xD1 |0 \x8D\xD2 |0 \x8D\xD3 |0 \x8D\xD4 |0 \x8D\xD5 |0 \x8D\xD6 |0 \x8D\xD7 |0 \x8D\xD8 |0 \x8D\xD9 |0 \x61\x69 |0 \x8D\xDA |0 \x8D\xDB |0 \x61\x6E |0 \x8D\xDC |0 \x61\x70 |0 \x8D\xDD |0 \x8D\xDE |0 \x8D\xDF |0 \x8D\xE0 |0 \x8D\xE1 |0 \x8D\xE2 |0 \x8D\xE3 |0 \x8D\xE4 |0 \x8D\xE5 |0 \x8D\xE6 |0 \x8D\xE7 |0 \x61\x74 |0 \x8D\xE8 |0 \x61\x71 |0 \x61\x6D |0 \x8D\xE9 |0 \x8D\xEA |0 \x61\x6F |0 \x8D\xEB |0 \x8D\xEC |0 \x8D\xED |0 \x8D\xEE |0 \x61\x75 |0 \x8D\xEF |0 \x8D\xF0 |0 \x8D\xF1 |0 \x8D\xF2 |0 \x8D\xF3 |0 \x8D\xF4 |0 \x8D\xF5 |0 \x8D\xF6 |0 \x8D\xF7 |0 \x8D\xF8 |0 \x8D\xF9 |0 \x8D\xFA |0 \x8D\xFB |0 \x61\x76 |0 \x8D\xFC |0 \x8D\xFD |0 \x8E\x41 |0 \x8E\x42 |0 \x8E\x43 |0 \x8E\x44 |0 \x8E\x45 |0 \x8E\x46 |0 \x8E\x47 |0 \x8E\x48 |0 \x8E\x49 |0 \x8E\x4A |0 \x8E\x4B |0 \x8E\x4C |0 \x8E\x4D |0 \x8E\x4E |0 \x8E\x4F |0 \x8E\x50 |0 \x8E\x51 |0 \x8E\x52 |0 \x8E\x53 |0 \x8E\x54 |0 \x61\x77 |0 \x8E\x55 |0 \x8E\x56 |0 \x8E\x57 |0 \x61\x78 |0 \x8E\x58 |0 \x8E\x59 |0 \x8E\x5A |0 \x8E\x5B |0 \x8E\x5C |0 \x8E\x5D |0 \x8E\x5E |0 \x8E\x5F |0 \x8E\x60 |0 \x8E\x61 |0 \x8E\x62 |0 \x8E\x63 |0 \x8E\x64 |0 \x8E\x65 |0 \x8E\x66 |0 \x8E\x67 |0 \x8E\x68 |0 \x8E\x69 |0 \x8E\x6A |0 \x8E\x6B |0 \x8E\x6C |0 \x8E\x6D |0 \x8E\x6E |0 \x8E\x6F |0 \x8E\x70 |0 \x61\x7A |0 \x8E\x71 |0 \x8E\x72 |0 \x8E\x73 |0 \x8E\x74 |0 \x8E\x75 |0 \x8E\x76 |0 \x8E\x77 |0 \x8E\x78 |0 \x8E\x79 |0 \x8E\x7A |0 \x8E\x7B |0 \x8E\x7C |0 \x8E\x7D |0 \x61\x7B |0 \x8E\x7E |0 \x8E\x7F |0 \x8E\x81 |0 \x8E\x82 |0 \x8E\x83 |0 \x8E\x84 |0 \x8E\x85 |0 \x57\xA0 |0 \x8E\x86 |0 \x8E\x87 |0 \x8E\x88 |0 \x8E\x89 |0 \x8E\x8A |0 \x8E\x8B |0 \x8E\x8C |0 \x8E\x8D |0 \x8E\x8E |0 \x8E\x8F |0 \x8E\x90 |0 \x8E\x91 |0 \x8E\x92 |0 \x64\x7D |0 \x8E\x93 |0 \x4A\xA7 |0 \x5B\xDC |0 \x8E\x94 |0 \x8E\x95 |0 \x59\x52 |0 \x4A\x52 |0 \x8E\x96 |0 \x8E\x97 |0 \x4D\x44 |0 \x5C\x94 |0 \x54\x69 |0 \x4F\xDD |0 \x4D\x4E |0 \x8E\x98 |0 \x57\xD6 |0 \x8E\x99 |0 \x8E\x9A |0 \x49\xED |0 \x5E\x6F |0 \x8E\x9B |0 \x4E\xB9 |0 \x59\xD0 |0 \x56\x68 |0 \x48\xCC |0 \x8E\x9C |0 \x8E\x9D |0 \x58\x90 |0 \x8E\x9E |0 \x8E\x9F |0 \x8E\xA0 |0 \x8E\xA1 |0 \x8E\xA2 |0 \x5D\x84 |0 \x4F\x8E |0 \x8E\xA3 |0 \x8E\xA4 |0 \x49\x72 |0 \x55\xCF |0 \x49\xBB |0 \x8E\xA5 |0 \x56\x47 |0 \x4C\x4B |0 \x8E\xA6 |0 \x55\xA5 |0 \x8E\xA7 |0 \x8E\xA8 |0 \x8E\xA9 |0 \x58\x43 |0 \x8E\xAA |0 \x8E\xAB |0 \x60\xF7 |0 \x5B\x6A |0 \x60\xFA |0 \x8E\xAC |0 \x8E\xAD |0 \x60\xF9 |0 \x53\x61 |0 \x56\xFA |0 \x8E\xAE |0 \x51\x51 |0 \x60\xF8 |0 \x5B\xE2 |0 \x49\xAE |0 \x5B\xC3 |0 \x4B\x7B |0 \x8E\xAF |0 \x8E\xB0 |0 \x8E\xB1 |0 \x8E\xB2 |0 \x8E\xB3 |0 \x8E\xB4 |0 \x8E\xB5 |0 \x8E\xB6 |0 \x4A\xF7 |0 \x5B\xA0 |0 \x8E\xB7 |0 \x8E\xB8 |0 \x8E\xB9 |0 \x8E\xBA |0 \x8E\xBB |0 \x58\x4F |0 \x48\xEE |0 \x8E\xBC |0 \x8E\xBD |0 \x60\xFB |0 \x8E\xBE |0 \x8E\xBF |0 \x8E\xC0 |0 \x8E\xC1 |0 \x8E\xC2 |0 \x61\x41 |0 \x4A\x43 |0 \x8E\xC3 |0 \x8E\xC4 |0 \x60\xFC |0 \x60\xFD |0 \x52\x51 |0 \x8E\xC5 |0 \x8E\xC6 |0 \x8E\xC7 |0 \x8E\xC8 |0 \x52\x7D |0 \x8E\xC9 |0 \x61\x42 |0 \x4C\x9A |0 \x8E\xCA |0 \x8E\xCB |0 \x8E\xCC |0 \x8E\xCD |0 \x8E\xCE |0 \x8E\xCF |0 \x4E\x6F |0 \x8E\xD0 |0 \x8E\xD1 |0 \x8E\xD2 |0 \x8E\xD3 |0 \x8E\xD4 |0 \x8E\xD5 |0 \x8E\xD6 |0 \x61\x43 |0 \x52\xBA |0 \x8E\xD7 |0 \x8E\xD8 |0 \x8E\xD9 |0 \x8E\xDA |0 \x8E\xDB |0 \x61\x44 |0 \x8E\xDC |0 \x8E\xDD |0 \x61\x45 |0 \x8E\xDE |0 \x8E\xDF |0 \x61\x46 |0 \x4A\xB0 |0 \x8E\xE0 |0 \x8E\xE1 |0 \x8E\xE2 |0 \x8E\xE3 |0 \x8E\xE4 |0 \x8E\xE5 |0 \x8E\xE6 |0 \x8E\xE7 |0 \x8E\xE8 |0 \x8E\xE9 |0 \x8E\xEA |0 \x8E\xEB |0 \x8E\xEC |0 \x8E\xED |0 \x8E\xEE |0 \x4C\xC8 |0 \x53\xBC |0 \x52\xE9 |0 \x8E\xEF |0 \x49\xA1 |0 \x8E\xF0 |0 \x58\xD1 |0 \x8E\xF1 |0 \x64\x7B |0 \x4E\x63 |0 \x5A\x77 |0 \x5A\x64 |0 \x8E\xF2 |0 \x4D\x84 |0 \x61\xCE |0 \x8E\xF3 |0 \x8E\xF4 |0 \x8E\xF5 |0 \x5C\x4F |0 \x8E\xF6 |0 \x54\x8D |0 \x49\x73 |0 \x8E\xF7 |0 \x8E\xF8 |0 \x4A\xB1 |0 \x61\xD0 |0 \x8E\xF9 |0 \x8E\xFA |0 \x8E\xFB |0 \x58\xF1 |0 \x51\xAD |0 \x61\xCF |0 \x8E\xFC |0 \x50\x83 |0 \x5A\x46 |0 \x4B\x77 |0 \x61\xD1 |0 \x4B\x8B |0 \x8E\xFD |0 \x52\x8E |0 \x4C\xFC |0 \x8F\x41 |0 \x4C\xAD |0 \x8F\x42 |0 \x53\x73 |0 \x4C\x6F |0 \x61\xD3 |0 \x8F\x43 |0 \x8F\x44 |0 \x8F\x45 |0 \x8F\x46 |0 \x61\xD2 |0 \x4B\xC7 |0 \x5C\x9A |0 \x8F\x47 |0 \x8F\x48 |0 \x8F\x49 |0 \x8F\x4A |0 \x8F\x4B |0 \x57\x45 |0 \x8F\x4C |0 \x8F\x4D |0 \x8F\x4E |0 \x8F\x4F |0 \x8F\x50 |0 \x61\xD7 |0 \x8F\x51 |0 \x61\xD5 |0 \x55\xFB |0 \x50\x55 |0 \x5A\x59 |0 \x61\xD4 |0 \x8F\x52 |0 \x8F\x53 |0 \x8F\x54 |0 \x8F\x55 |0 \x61\xD6 |0 \x8F\x56 |0 \x8F\x57 |0 \x8F\x58 |0 \x8F\x59 |0 \x8F\x5A |0 \x8F\x5B |0 \x8F\x5C |0 \x8F\x5D |0 \x8F\x5E |0 \x8F\x5F |0 \x51\x4E |0 \x50\xC7 |0 \x8F\x60 |0 \x8F\x61 |0 \x8F\x62 |0 \x8F\x63 |0 \x8F\x64 |0 \x8F\x65 |0 \x61\xDA |0 \x61\xD9 |0 \x50\xA9 |0 \x8F\x66 |0 \x8F\x67 |0 \x51\x6E |0 \x8F\x68 |0 \x8F\x69 |0 \x8F\x6A |0 \x8F\x6B |0 \x61\xDB |0 \x8F\x6C |0 \x8F\x6D |0 \x8F\x6E |0 \x8F\x6F |0 \x8F\x70 |0 \x8F\x71 |0 \x8F\x72 |0 \x8F\x73 |0 \x8F\x74 |0 \x8F\x75 |0 \x8F\x76 |0 \x8F\x77 |0 \x61\xDC |0 \x8F\x78 |0 \x61\xDD |0 \x8F\x79 |0 \x8F\x7A |0 \x8F\x7B |0 \x8F\x7C |0 \x8F\x7D |0 \x8F\x7E |0 \x8F\x7F |0 \x8F\x81 |0 \x8F\x82 |0 \x5E\x68 |0 \x8F\x83 |0 \x59\x73 |0 \x57\x42 |0 \x8F\x84 |0 \x8F\x85 |0 \x4F\x48 |0 \x8F\x86 |0 \x8F\x87 |0 \x8F\x88 |0 \x5F\xC2 |0 \x5C\xA4 |0 \x50\x4A |0 \x5E\x6D |0 \x59\xEB |0 \x53\xF9 |0 \x53\x4A |0 \x8F\x89 |0 \x8F\x8A |0 \x8F\x8B |0 \x5F\xC3 |0 \x8F\x8C |0 \x49\x77 |0 \x60\x4E |0 \x8F\x8D |0 \x8F\x8E |0 \x8F\x8F |0 \x55\xBC |0 \x8F\x90 |0 \x60\x51 |0 \x8F\x91 |0 \x4D\x4D |0 \x8F\x92 |0 \x59\xFC |0 \x8F\x93 |0 \x4C\xA4 |0 \x4D\xEA |0 \x8F\x94 |0 \x8F\x95 |0 \x4A\x7A |0 \x8F\x96 |0 \x8F\x97 |0 \x8F\x98 |0 \x4B\x7C |0 \x5B\x65 |0 \x8F\x99 |0 \x8F\x9A |0 \x8F\x9B |0 \x8F\x9C |0 \x52\x76 |0 \x58\x72 |0 \x4E\x41 |0 \x8F\x9D |0 \x63\x94 |0 \x63\x93 |0 \x8F\x9E |0 \x8F\x9F |0 \x63\x95 |0 \x8F\xA0 |0 \x57\x85 |0 \x8F\xA1 |0 \x54\xF4 |0 \x8F\xA2 |0 \x8F\xA3 |0 \x8F\xA4 |0 \x8F\xA5 |0 \x8F\xA6 |0 \x8F\xA7 |0 \x8F\xA8 |0 \x4B\x4F |0 \x54\x5F |0 \x8F\xA9 |0 \x63\x97 |0 \x8F\xAA |0 \x8F\xAB |0 \x8F\xAC |0 \x66\xAF |0 \x8F\xAD |0 \x8F\xAE |0 \x8F\xAF |0 \x8F\xB0 |0 \x8F\xB1 |0 \x8F\xB2 |0 \x8F\xB3 |0 \x8F\xB4 |0 \x8F\xB5 |0 \x8F\xB6 |0 \x8F\xB7 |0 \x8F\xB8 |0 \x8F\xB9 |0 \x8F\xBA |0 \x8F\xBB |0 \x63\x87 |0 \x8F\xBC |0 \x4D\x8A |0 \x4B\x51 |0 \x8F\xBD |0 \x51\xBB |0 \x63\x89 |0 \x63\x88 |0 \x63\x8A |0 \x8F\xBE |0 \x8F\xBF |0 \x8F\xC0 |0 \x8F\xC1 |0 \x59\xCC |0 \x8F\xC2 |0 \x8F\xC3 |0 \x8F\xC4 |0 \x61\x8B |0 \x58\xCD |0 \x8F\xC5 |0 \x57\x4E |0 \x8F\xC6 |0 \x59\x86 |0 \x8F\xC7 |0 \x8F\xC8 |0 \x49\xC9 |0 \x49\x8C |0 \x8F\xC9 |0 \x49\x93 |0 \x53\x8E |0 \x8F\xCA |0 \x8F\xCB |0 \x5B\x63 |0 \x5A\x50 |0 \x8F\xCC |0 \x61\x7C |0 \x8F\xCD |0 \x8F\xCE |0 \x8F\xCF |0 \x61\x7D |0 \x8F\xD0 |0 \x59\xDA |0 \x8F\xD1 |0 \x4A\x59 |0 \x49\x6B |0 \x8F\xD2 |0 \x8F\xD3 |0 \x8F\xD4 |0 \x57\x9A |0 \x5B\x98 |0 \x61\x7E |0 \x8F\xD5 |0 \x4F\xB5 |0 \x4A\xFC |0 \x8F\xD6 |0 \x61\x7F |0 \x4D\xDB |0 \x61\x81 |0 \x4E\x52 |0 \x51\xC8 |0 \x61\x82 |0 \x8F\xD7 |0 \x8F\xD8 |0 \x8F\xD9 |0 \x58\xEB |0 \x8F\xDA |0 \x57\x5D |0 \x8F\xDB |0 \x8F\xDC |0 \x61\x83 |0 \x8F\xDD |0 \x4B\x63 |0 \x53\x67 |0 \x61\x84 |0 \x8F\xDE |0 \x8F\xDF |0 \x61\x85 |0 \x8F\xE0 |0 \x8F\xE1 |0 \x8F\xE2 |0 \x8F\xE3 |0 \x5A\x9A |0 \x8F\xE4 |0 \x8F\xE5 |0 \x8F\xE6 |0 \x8F\xE7 |0 \x8F\xE8 |0 \x8F\xE9 |0 \x61\x86 |0 \x8F\xEA |0 \x59\x4D |0 \x8F\xEB |0 \x8F\xEC |0 \x61\x87 |0 \x57\xA1 |0 \x8F\xED |0 \x8F\xEE |0 \x8F\xEF |0 \x8F\xF0 |0 \x8F\xF1 |0 \x8F\xF2 |0 \x61\x88 |0 \x8F\xF3 |0 \x4B\x62 |0 \x8F\xF4 |0 \x8F\xF5 |0 \x8F\xF6 |0 \x8F\xF7 |0 \x61\x89 |0 \x4E\x75 |0 \x8F\xF8 |0 \x8F\xF9 |0 \x8F\xFA |0 \x8F\xFB |0 \x8F\xFC |0 \x58\xC3 |0 \x61\xDF |0 \x49\x78 |0 \x59\xE3 |0 \x8F\xFD |0 \x90\x41 |0 \x61\xE0 |0 \x90\x42 |0 \x90\x43 |0 \x4E\xC8 |0 \x54\xCB |0 \x90\x44 |0 \x61\xE2 |0 \x66\xFD |0 \x66\xFC |0 \x60\x4F |0 \x90\x45 |0 \x90\x46 |0 \x90\x47 |0 \x61\xE1 |0 \x5B\xBD |0 \x57\x9D |0 \x52\x46 |0 \x90\x48 |0 \x90\x49 |0 \x90\x4A |0 \x62\x63 |0 \x90\x4B |0 \x90\x4C |0 \x5B\xD1 |0 \x61\xE6 |0 \x90\x4D |0 \x90\x4E |0 \x61\xE7 |0 \x90\x4F |0 \x90\x50 |0 \x5A\x67 |0 \x90\x51 |0 \x90\x52 |0 \x61\xEB |0 \x50\x8D |0 \x90\x53 |0 \x61\xEC |0 \x61\xE4 |0 \x90\x54 |0 \x90\x55 |0 \x4A\x60 |0 \x90\x56 |0 \x90\x57 |0 \x90\x58 |0 \x52\xED |0 \x90\x59 |0 \x90\x5A |0 \x61\xED |0 \x90\x5B |0 \x90\x5C |0 \x58\xC2 |0 \x90\x5D |0 \x4D\xF5 |0 \x61\xE8 |0 \x4C\x7E |0 \x4E\x53 |0 \x56\xAB |0 \x56\x6B |0 \x61\xE3 |0 \x61\xE5 |0 \x61\xE9 |0 \x61\xEA |0 \x90\x5E |0 \x90\x5F |0 \x90\x60 |0 \x61\xF6 |0 \x90\x61 |0 \x90\x62 |0 \x61\xF3 |0 \x5A\xF4 |0 \x61\xF2 |0 \x90\x63 |0 \x90\x64 |0 \x53\x4D |0 \x90\x65 |0 \x5B\x9B |0 \x53\x62 |0 \x49\xBF |0 \x90\x66 |0 \x90\x67 |0 \x61\xEE |0 \x90\x68 |0 \x61\xF1 |0 \x51\x4F |0 \x56\x5C |0 \x90\x69 |0 \x90\x6A |0 \x4B\x41 |0 \x61\xF8 |0 \x90\x6B |0 \x90\x6C |0 \x90\x6D |0 \x4E\xB0 |0 \x61\xF0 |0 \x58\xD3 |0 \x5A\xB8 |0 \x61\xF4 |0 \x4D\x76 |0 \x61\xF5 |0 \x90\x6E |0 \x90\x6F |0 \x90\x70 |0 \x54\x73 |0 \x90\x71 |0 \x90\x72 |0 \x90\x73 |0 \x90\x74 |0 \x90\x75 |0 \x61\xEF |0 \x90\x76 |0 \x90\x77 |0 \x90\x78 |0 \x90\x79 |0 \x90\x7A |0 \x5C\x7C |0 \x67\x41 |0 \x90\x7B |0 \x90\x7C |0 \x61\xF7 |0 \x90\x7D |0 \x67\x45 |0 \x61\xFD |0 \x55\xD0 |0 \x90\x7E |0 \x90\x7F |0 \x90\x81 |0 \x90\x82 |0 \x90\x83 |0 \x90\x84 |0 \x90\x85 |0 \x51\x55 |0 \x90\x86 |0 \x4E\x70 |0 \x90\x87 |0 \x90\x88 |0 \x50\x76 |0 \x90\x89 |0 \x4D\xE2 |0 \x90\x8A |0 \x90\x8B |0 \x56\x41 |0 \x90\x8C |0 \x90\x8D |0 \x90\x8E |0 \x67\x46 |0 \x67\x43 |0 \x90\x8F |0 \x90\x90 |0 \x67\x42 |0 \x90\x91 |0 \x90\x92 |0 \x90\x93 |0 \x90\x94 |0 \x4E\x76 |0 \x67\x47 |0 \x58\xF3 |0 \x90\x95 |0 \x90\x96 |0 \x67\x44 |0 \x4D\xDD |0 \x4B\xF6 |0 \x62\x41 |0 \x4B\xB1 |0 \x56\xF0 |0 \x4D\x47 |0 \x90\x97 |0 \x58\x42 |0 \x54\x41 |0 \x90\x98 |0 \x90\x99 |0 \x50\x72 |0 \x90\x9A |0 \x90\x9B |0 \x4B\xF0 |0 \x90\x9C |0 \x61\xF9 |0 \x61\xFA |0 \x61\xFC |0 \x61\xFB |0 \x52\xD4 |0 \x62\x42 |0 \x90\x9D |0 \x5A\x61 |0 \x90\x9E |0 \x90\x9F |0 \x90\xA0 |0 \x62\x47 |0 \x54\x64 |0 \x90\xA1 |0 \x90\xA2 |0 \x90\xA3 |0 \x90\xA4 |0 \x58\x44 |0 \x90\xA5 |0 \x90\xA6 |0 \x62\x49 |0 \x4D\xB6 |0 \x90\xA7 |0 \x90\xA8 |0 \x90\xA9 |0 \x90\xAA |0 \x62\x48 |0 \x90\xAB |0 \x4E\x7A |0 \x90\xAC |0 \x62\x43 |0 \x90\xAD |0 \x90\xAE |0 \x90\xAF |0 \x62\x44 |0 \x62\x4A |0 \x90\xB0 |0 \x62\x46 |0 \x90\xB1 |0 \x57\xF1 |0 \x5A\x66 |0 \x90\xB2 |0 \x90\xB3 |0 \x4E\x5C |0 \x90\xB4 |0 \x90\xB5 |0 \x5A\xC2 |0 \x90\xB6 |0 \x52\xF9 |0 \x90\xB7 |0 \x90\xB8 |0 \x67\x48 |0 \x58\xFB |0 \x62\x45 |0 \x90\xB9 |0 \x52\x96 |0 \x90\xBA |0 \x62\x4D |0 \x49\x4F |0 \x90\xBB |0 \x62\x52 |0 \x90\xBC |0 \x90\xBD |0 \x90\xBE |0 \x4E\xC1 |0 \x90\xBF |0 \x90\xC0 |0 \x62\x4C |0 \x4B\x5F |0 \x90\xC1 |0 \x90\xC2 |0 \x90\xC3 |0 \x90\xC4 |0 \x90\xC5 |0 \x90\xC6 |0 \x90\xC7 |0 \x90\xC8 |0 \x54\x8A |0 \x62\x50 |0 \x90\xC9 |0 \x90\xCA |0 \x90\xCB |0 \x4F\xA9 |0 \x57\x90 |0 \x90\xCC |0 \x90\xCD |0 \x90\xCE |0 \x90\xCF |0 \x90\xD0 |0 \x4E\x94 |0 \x90\xD1 |0 \x90\xD2 |0 \x90\xD3 |0 \x56\xE7 |0 \x90\xD4 |0 \x90\xD5 |0 \x62\x4F |0 \x90\xD6 |0 \x62\x51 |0 \x90\xD7 |0 \x58\x47 |0 \x62\x4E |0 \x90\xD8 |0 \x57\xA8 |0 \x4E\x7D |0 \x90\xD9 |0 \x90\xDA |0 \x90\xDB |0 \x90\xDC |0 \x90\xDD |0 \x4B\x8C |0 \x4F\xE4 |0 \x49\xD1 |0 \x4A\x6D |0 \x90\xDE |0 \x49\x59 |0 \x62\x4B |0 \x49\xD0 |0 \x4B\x4C |0 \x4D\x7F |0 \x4B\xE7 |0 \x90\xDF |0 \x90\xE0 |0 \x58\x8C |0 \x62\x57 |0 \x90\xE1 |0 \x4E\x6C |0 \x90\xE2 |0 \x90\xE3 |0 \x54\xC6 |0 \x58\xC9 |0 \x90\xE4 |0 \x90\xE5 |0 \x90\xE6 |0 \x90\xE7 |0 \x90\xE8 |0 \x62\x58 |0 \x4A\x8F |0 \x90\xE9 |0 \x90\xEA |0 \x90\xEB |0 \x90\xEC |0 \x67\x49 |0 \x90\xED |0 \x5A\x9B |0 \x5A\x85 |0 \x90\xEE |0 \x90\xEF |0 \x90\xF0 |0 \x67\x4A |0 \x62\x59 |0 \x59\xE1 |0 \x90\xF1 |0 \x90\xF2 |0 \x90\xF3 |0 \x90\xF4 |0 \x90\xF5 |0 \x62\x55 |0 \x90\xF6 |0 \x90\xF7 |0 \x90\xF8 |0 \x90\xF9 |0 \x5A\x7E |0 \x90\xFA |0 \x90\xFB |0 \x90\xFC |0 \x90\xFD |0 \x4C\xCF |0 \x62\x53 |0 \x91\x41 |0 \x91\x42 |0 \x62\x56 |0 \x4C\x7F |0 \x91\x43 |0 \x62\x54 |0 \x50\xA1 |0 \x91\x44 |0 \x91\x45 |0 \x91\x46 |0 \x62\x5A |0 \x91\x47 |0 \x91\x48 |0 \x91\x49 |0 \x91\x4A |0 \x91\x4B |0 \x91\x4C |0 \x91\x4D |0 \x91\x4E |0 \x91\x4F |0 \x91\x50 |0 \x91\x51 |0 \x91\x52 |0 \x91\x53 |0 \x91\x54 |0 \x91\x55 |0 \x91\x56 |0 \x91\x57 |0 \x91\x58 |0 \x91\x59 |0 \x5A\xB7 |0 \x91\x5A |0 \x91\x5B |0 \x91\x5C |0 \x91\x5D |0 \x91\x5E |0 \x91\x5F |0 \x91\x60 |0 \x91\x61 |0 \x4A\xC7 |0 \x91\x62 |0 \x62\x5B |0 \x91\x63 |0 \x4E\x65 |0 \x91\x64 |0 \x55\x98 |0 \x91\x65 |0 \x91\x66 |0 \x55\x86 |0 \x91\x67 |0 \x91\x68 |0 \x91\x69 |0 \x52\xBC |0 \x91\x6A |0 \x91\x6B |0 \x91\x6C |0 \x91\x6D |0 \x91\x6E |0 \x91\x6F |0 \x91\x70 |0 \x67\x4B |0 \x91\x71 |0 \x91\x72 |0 \x91\x73 |0 \x91\x74 |0 \x51\xFC |0 \x91\x75 |0 \x91\x76 |0 \x91\x77 |0 \x91\x78 |0 \x4E\x7B |0 \x50\x4E |0 \x91\x79 |0 \x91\x7A |0 \x91\x7B |0 \x91\x7C |0 \x91\x7D |0 \x91\x7E |0 \x91\x7F |0 \x57\xBE |0 \x91\x81 |0 \x91\x82 |0 \x91\x83 |0 \x91\x84 |0 \x62\x5C |0 \x91\x85 |0 \x50\x56 |0 \x91\x86 |0 \x91\x87 |0 \x91\x88 |0 \x91\x89 |0 \x91\x8A |0 \x91\x8B |0 \x91\x8C |0 \x91\x8D |0 \x91\x8E |0 \x91\x8F |0 \x91\x90 |0 \x91\x91 |0 \x91\x92 |0 \x91\x93 |0 \x91\x94 |0 \x91\x95 |0 \x91\x96 |0 \x91\x97 |0 \x91\x98 |0 \x49\x90 |0 \x91\x99 |0 \x91\x9A |0 \x5A\xF6 |0 \x91\x9B |0 \x91\x9C |0 \x91\x9D |0 \x91\x9E |0 \x91\x9F |0 \x62\x5E |0 \x91\xA0 |0 \x91\xA1 |0 \x91\xA2 |0 \x91\xA3 |0 \x91\xA4 |0 \x91\xA5 |0 \x91\xA6 |0 \x91\xA7 |0 \x67\x4D |0 \x91\xA8 |0 \x91\xA9 |0 \x91\xAA |0 \x91\xAB |0 \x91\xAC |0 \x91\xAD |0 \x91\xAE |0 \x91\xAF |0 \x91\xB0 |0 \x62\x5F |0 \x4D\xA8 |0 \x67\x4C |0 \x91\xB1 |0 \x91\xB2 |0 \x62\x5D |0 \x91\xB3 |0 \x91\xB4 |0 \x91\xB5 |0 \x91\xB6 |0 \x91\xB7 |0 \x91\xB8 |0 \x91\xB9 |0 \x91\xBA |0 \x91\xBB |0 \x91\xBC |0 \x62\x60 |0 \x91\xBD |0 \x91\xBE |0 \x91\xBF |0 \x91\xC0 |0 \x91\xC1 |0 \x91\xC2 |0 \x4D\xB5 |0 \x91\xC3 |0 \x91\xC4 |0 \x91\xC5 |0 \x4B\xAD |0 \x91\xC6 |0 \x91\xC7 |0 \x91\xC8 |0 \x91\xC9 |0 \x91\xCA |0 \x58\xB7 |0 \x91\xCB |0 \x48\xC2 |0 \x67\x4E |0 \x91\xCC |0 \x91\xCD |0 \x91\xCE |0 \x91\xCF |0 \x91\xD0 |0 \x67\x4F |0 \x50\xC0 |0 \x91\xD1 |0 \x62\x61 |0 \x91\xD2 |0 \x91\xD3 |0 \x91\xD4 |0 \x91\xD5 |0 \x91\xD6 |0 \x91\xD7 |0 \x91\xD8 |0 \x91\xD9 |0 \x91\xDA |0 \x91\xDB |0 \x91\xDC |0 \x91\xDD |0 \x91\xDE |0 \x91\xDF |0 \x91\xE0 |0 \x91\xE1 |0 \x91\xE2 |0 \x53\x53 |0 \x91\xE3 |0 \x91\xE4 |0 \x91\xE5 |0 \x91\xE6 |0 \x91\xE7 |0 \x91\xE8 |0 \x91\xE9 |0 \x91\xEA |0 \x91\xEB |0 \x91\xEC |0 \x91\xED |0 \x91\xEE |0 \x91\xEF |0 \x91\xF0 |0 \x62\x62 |0 \x91\xF1 |0 \x91\xF2 |0 \x91\xF3 |0 \x91\xF4 |0 \x91\xF5 |0 \x91\xF6 |0 \x91\xF7 |0 \x91\xF8 |0 \x91\xF9 |0 \x5E\xB1 |0 \x91\xFA |0 \x91\xFB |0 \x91\xFC |0 \x91\xFD |0 \x92\x41 |0 \x92\x42 |0 \x67\x50 |0 \x92\x43 |0 \x4C\xE9 |0 \x92\x44 |0 \x57\xEB |0 \x65\xA6 |0 \x58\xE6 |0 \x55\xF8 |0 \x54\xD5 |0 \x58\x57 |0 \x4A\x69 |0 \x57\xD1 |0 \x4F\x85 |0 \x92\x45 |0 \x92\x46 |0 \x62\x7E |0 \x4E\x93 |0 \x65\xA7 |0 \x5B\x5D |0 \x92\x47 |0 \x53\xDC |0 \x65\xA8 |0 \x92\x48 |0 \x92\x49 |0 \x92\x4A |0 \x65\xA9 |0 \x92\x4B |0 \x65\xAB |0 \x65\xAA |0 \x92\x4C |0 \x65\xAD |0 \x65\xAC |0 \x92\x4D |0 \x92\x4E |0 \x92\x4F |0 \x92\x50 |0 \x4F\x78 |0 \x92\x51 |0 \x65\xAE |0 \x92\x52 |0 \x51\xBD |0 \x92\x53 |0 \x92\x54 |0 \x92\x55 |0 \x92\x56 |0 \x4A\xC0 |0 \x4A\xF6 |0 \x92\x57 |0 \x92\x58 |0 \x4E\x47 |0 \x92\x59 |0 \x92\x5A |0 \x92\x5B |0 \x92\x5C |0 \x92\x5D |0 \x66\xE5 |0 \x66\xE4 |0 \x4C\x5F |0 \x56\x9A |0 \x49\x83 |0 \x92\x5E |0 \x66\xE6 |0 \x92\x5F |0 \x92\x60 |0 \x92\x61 |0 \x55\x68 |0 \x66\xE7 |0 \x66\xE8 |0 \x92\x62 |0 \x55\xD5 |0 \x5F\xCF |0 \x49\xC4 |0 \x5A\xF9 |0 \x92\x63 |0 \x92\x64 |0 \x53\xCA |0 \x48\xC6 |0 \x4A\xF1 |0 \x54\xD2 |0 \x92\x65 |0 \x92\x66 |0 \x92\x67 |0 \x57\x70 |0 \x92\x68 |0 \x92\x69 |0 \x50\x58 |0 \x92\x6A |0 \x92\x6B |0 \x92\x6C |0 \x92\x6D |0 \x92\x6E |0 \x92\x6F |0 \x92\x70 |0 \x50\x7B |0 \x92\x71 |0 \x92\x72 |0 \x54\x44 |0 \x5B\xB3 |0 \x92\x73 |0 \x50\xA8 |0 \x5F\xD0 |0 \x55\x48 |0 \x59\x90 |0 \x53\x44 |0 \x48\xE6 |0 \x4A\x56 |0 \x54\xC4 |0 \x92\x74 |0 \x92\x75 |0 \x48\xE1 |0 \x92\x76 |0 \x92\x77 |0 \x4C\x97 |0 \x92\x78 |0 \x92\x79 |0 \x53\x9B |0 \x92\x7A |0 \x92\x7B |0 \x4B\xF2 |0 \x92\x7C |0 \x5B\x72 |0 \x4A\x70 |0 \x4E\xBB |0 \x92\x7D |0 \x92\x7E |0 \x92\x7F |0 \x4A\x4D |0 \x92\x81 |0 \x92\x82 |0 \x92\x83 |0 \x92\x84 |0 \x4F\xF0 |0 \x48\xD0 |0 \x92\x85 |0 \x92\x86 |0 \x92\x87 |0 \x92\x88 |0 \x92\x89 |0 \x92\x8A |0 \x59\xD5 |0 \x55\xE2 |0 \x5C\x45 |0 \x92\x8B |0 \x57\x56 |0 \x4B\xB5 |0 \x50\x59 |0 \x5B\x7B |0 \x92\x8C |0 \x4C\xA6 |0 \x53\x77 |0 \x92\x8D |0 \x92\x8E |0 \x92\x8F |0 \x5F\xD1 |0 \x50\x79 |0 \x51\xD4 |0 \x54\x60 |0 \x92\x90 |0 \x4E\x44 |0 \x49\x48 |0 \x92\x91 |0 \x92\x92 |0 \x53\x8B |0 \x92\x93 |0 \x92\x94 |0 \x53\x9C |0 \x56\xA6 |0 \x92\x95 |0 \x92\x96 |0 \x92\x97 |0 \x92\x98 |0 \x49\x47 |0 \x92\x99 |0 \x92\x9A |0 \x92\x9B |0 \x4B\x76 |0 \x92\x9C |0 \x92\x9D |0 \x92\x9E |0 \x52\xA7 |0 \x92\x9F |0 \x5F\xD2 |0 \x59\x5A |0 \x4A\x8A |0 \x92\xA0 |0 \x52\x93 |0 \x92\xA1 |0 \x92\xA2 |0 \x4C\x98 |0 \x92\xA3 |0 \x5B\xF3 |0 \x4B\x43 |0 \x49\xEF |0 \x52\xB3 |0 \x52\xE8 |0 \x50\xAC |0 \x5F\xD3 |0 \x92\xA4 |0 \x48\xE7 |0 \x53\x64 |0 \x51\x81 |0 \x92\xA5 |0 \x4D\x75 |0 \x92\xA6 |0 \x4F\xDB |0 \x57\x78 |0 \x48\xCD |0 \x92\xA7 |0 \x57\x6F |0 \x5F\xD5 |0 \x4F\xCF |0 \x5C\x5E |0 \x5F\xD4 |0 \x5B\x70 |0 \x48\xDC |0 \x92\xA8 |0 \x92\xA9 |0 \x52\xE1 |0 \x92\xAA |0 \x92\xAB |0 \x51\xA2 |0 \x4E\xEF |0 \x92\xAC |0 \x5A\x55 |0 \x50\xB8 |0 \x53\x41 |0 \x49\xA5 |0 \x5A\xF0 |0 \x92\xAD |0 \x92\xAE |0 \x50\xA7 |0 \x55\xC2 |0 \x5F\xD6 |0 \x5B\x9D |0 \x92\xAF |0 \x4D\x50 |0 \x92\xB0 |0 \x54\xAC |0 \x56\x49 |0 \x92\xB1 |0 \x5F\xD8 |0 \x50\x5D |0 \x92\xB2 |0 \x92\xB3 |0 \x92\xB4 |0 \x92\xB5 |0 \x53\xB3 |0 \x5C\x47 |0 \x55\xAF |0 \x52\xC2 |0 \x92\xB6 |0 \x4A\x76 |0 \x4D\x72 |0 \x92\xB7 |0 \x92\xB8 |0 \x92\xB9 |0 \x92\xBA |0 \x5B\xB7 |0 \x65\xFB |0 \x48\xB3 |0 \x92\xBB |0 \x92\xBC |0 \x92\xBD |0 \x92\xBE |0 \x50\x87 |0 \x92\xBF |0 \x92\xC0 |0 \x56\xF3 |0 \x92\xC1 |0 \x92\xC2 |0 \x92\xC3 |0 \x92\xC4 |0 \x57\x7A |0 \x92\xC5 |0 \x92\xC6 |0 \x92\xC7 |0 \x5B\xBE |0 \x51\xCD |0 \x92\xC8 |0 \x57\xCD |0 \x56\xA1 |0 \x58\xAD |0 \x52\xD2 |0 \x4B\x52 |0 \x5F\xD7 |0 \x5B\x96 |0 \x4E\xB6 |0 \x4E\x73 |0 \x92\xC9 |0 \x92\xCA |0 \x48\xA3 |0 \x92\xCB |0 \x53\x52 |0 \x4A\xEB |0 \x92\xCC |0 \x92\xCD |0 \x92\xCE |0 \x5B\x92 |0 \x92\xCF |0 \x92\xD0 |0 \x65\xFC |0 \x92\xD1 |0 \x92\xD2 |0 \x92\xD3 |0 \x92\xD4 |0 \x92\xD5 |0 \x92\xD6 |0 \x5F\xD9 |0 \x57\x46 |0 \x92\xD7 |0 \x92\xD8 |0 \x57\x8D |0 \x92\xD9 |0 \x92\xDA |0 \x92\xDB |0 \x92\xDC |0 \x57\xE5 |0 \x5F\xDB |0 \x92\xDD |0 \x57\x51 |0 \x50\xA5 |0 \x92\xDE |0 \x92\xDF |0 \x5C\x5D |0 \x92\xE0 |0 \x5F\xDA |0 \x48\xC5 |0 \x4D\xB3 |0 \x55\x73 |0 \x52\xF2 |0 \x4F\xE7 |0 \x92\xE1 |0 \x92\xE2 |0 \x92\xE3 |0 \x92\xE4 |0 \x49\xB5 |0 \x92\xE5 |0 \x92\xE6 |0 \x92\xE7 |0 \x92\xE8 |0 \x92\xE9 |0 \x92\xEA |0 \x92\xEB |0 \x92\xEC |0 \x50\xCB |0 \x56\x91 |0 \x92\xED |0 \x4E\xF0 |0 \x4E\x5B |0 \x4B\x57 |0 \x92\xEE |0 \x92\xEF |0 \x92\xF0 |0 \x53\x96 |0 \x92\xF1 |0 \x5F\xE5 |0 \x92\xF2 |0 \x92\xF3 |0 \x92\xF4 |0 \x5F\xE2 |0 \x4F\xDC |0 \x92\xF5 |0 \x92\xF6 |0 \x5F\xDE |0 \x92\xF7 |0 \x92\xF8 |0 \x92\xF9 |0 \x92\xFA |0 \x4A\xB6 |0 \x4F\x7D |0 \x92\xFB |0 \x92\xFC |0 \x5F\xDF |0 \x52\xEC |0 \x92\xFD |0 \x93\x41 |0 \x93\x42 |0 \x93\x43 |0 \x58\x66 |0 \x93\x44 |0 \x4B\x81 |0 \x93\x45 |0 \x93\x46 |0 \x93\x47 |0 \x93\x48 |0 \x4B\xDD |0 \x55\xD9 |0 \x4B\x95 |0 \x5F\xE4 |0 \x93\x49 |0 \x5B\x66 |0 \x93\x4A |0 \x5F\xE0 |0 \x56\xCC |0 \x53\xFD |0 \x93\x4B |0 \x53\x65 |0 \x93\x4C |0 \x93\x4D |0 \x93\x4E |0 \x59\xB3 |0 \x93\x4F |0 \x4F\xF1 |0 \x93\x50 |0 \x93\x51 |0 \x93\x52 |0 \x93\x53 |0 \x93\x54 |0 \x93\x55 |0 \x93\x56 |0 \x51\xD2 |0 \x93\x57 |0 \x56\xBC |0 \x4A\x58 |0 \x93\x58 |0 \x4F\x73 |0 \x93\x59 |0 \x50\x78 |0 \x57\x66 |0 \x59\x7A |0 \x4A\xEA |0 \x93\x5A |0 \x5F\xE3 |0 \x5F\xDC |0 \x5F\xE6 |0 \x93\x5B |0 \x65\xFD |0 \x93\x5C |0 \x93\x5D |0 \x51\xAF |0 \x5F\xE1 |0 \x93\x5E |0 \x93\x5F |0 \x5B\xBF |0 \x4B\x47 |0 \x93\x60 |0 \x49\xF3 |0 \x93\x61 |0 \x5F\xE7 |0 \x93\x62 |0 \x5F\xF1 |0 \x93\x63 |0 \x93\x64 |0 \x93\x65 |0 \x93\x66 |0 \x93\x67 |0 \x5F\xEC |0 \x93\x68 |0 \x5F\xF0 |0 \x93\x69 |0 \x93\x6A |0 \x54\xDF |0 \x93\x6B |0 \x93\x6C |0 \x93\x6D |0 \x5C\x82 |0 \x5F\xEE |0 \x52\x89 |0 \x56\xE0 |0 \x93\x6E |0 \x49\xE4 |0 \x93\x6F |0 \x93\x70 |0 \x93\x71 |0 \x59\xBD |0 \x93\x72 |0 \x93\x73 |0 \x93\x74 |0 \x93\x75 |0 \x93\x76 |0 \x93\x77 |0 \x93\x78 |0 \x5F\xED |0 \x93\x79 |0 \x5F\xEA |0 \x57\xD4 |0 \x93\x7A |0 \x4A\xA6 |0 \x93\x7B |0 \x93\x7C |0 \x93\x7D |0 \x93\x7E |0 \x93\x7F |0 \x50\x4B |0 \x4F\xBD |0 \x93\x81 |0 \x93\x82 |0 \x4F\x72 |0 \x93\x83 |0 \x93\x84 |0 \x93\x85 |0 \x93\x86 |0 \x5F\xE8 |0 \x93\x87 |0 \x5A\xAD |0 \x93\x88 |0 \x5F\xDD |0 \x93\x89 |0 \x5F\xE9 |0 \x93\x8A |0 \x93\x8B |0 \x93\x8C |0 \x93\x8D |0 \x50\xBE |0 \x93\x8E |0 \x5F\xEB |0 \x49\xF2 |0 \x4C\xE8 |0 \x51\xA6 |0 \x93\x8F |0 \x93\x90 |0 \x4F\x61 |0 \x93\x91 |0 \x93\x92 |0 \x93\x93 |0 \x93\x94 |0 \x93\x95 |0 \x5F\xF4 |0 \x5F\xF7 |0 \x93\x96 |0 \x93\x97 |0 \x49\xAA |0 \x4A\xA3 |0 \x93\x98 |0 \x93\x99 |0 \x4A\xE9 |0 \x55\x46 |0 \x93\x9A |0 \x93\x9B |0 \x93\x9C |0 \x93\x9D |0 \x93\x9E |0 \x93\x9F |0 \x5F\xF5 |0 \x56\x71 |0 \x93\xA0 |0 \x4C\xE2 |0 \x93\xA1 |0 \x5F\xF6 |0 \x5F\xF9 |0 \x93\xA2 |0 \x93\xA3 |0 \x93\xA4 |0 \x93\xA5 |0 \x5F\xF8 |0 \x93\xA6 |0 \x93\xA7 |0 \x93\xA8 |0 \x56\xC1 |0 \x93\xA9 |0 \x48\xE0 |0 \x4A\xED |0 \x93\xAA |0 \x93\xAB |0 \x93\xAC |0 \x93\xAD |0 \x93\xAE |0 \x93\xAF |0 \x63\x5A |0 \x93\xB0 |0 \x93\xB1 |0 \x93\xB2 |0 \x93\xB3 |0 \x93\xB4 |0 \x58\xAE |0 \x93\xB5 |0 \x93\xB6 |0 \x49\xEA |0 \x93\xB7 |0 \x66\x41 |0 \x93\xB8 |0 \x5F\xF3 |0 \x93\xB9 |0 \x93\xBA |0 \x55\x84 |0 \x5F\xF2 |0 \x48\xD9 |0 \x59\xA0 |0 \x49\x98 |0 \x93\xBB |0 \x56\xAE |0 \x93\xBC |0 \x93\xBD |0 \x93\xBE |0 \x93\xBF |0 \x93\xC0 |0 \x93\xC1 |0 \x93\xC2 |0 \x5F\xEF |0 \x93\xC3 |0 \x56\x44 |0 \x93\xC4 |0 \x93\xC5 |0 \x93\xC6 |0 \x5B\x4A |0 \x93\xC7 |0 \x93\xC8 |0 \x93\xC9 |0 \x93\xCA |0 \x93\xCB |0 \x5F\xFA |0 \x93\xCC |0 \x93\xCD |0 \x93\xCE |0 \x93\xCF |0 \x93\xD0 |0 \x93\xD1 |0 \x93\xD2 |0 \x93\xD3 |0 \x4A\xDC |0 \x93\xD4 |0 \x52\xA5 |0 \x93\xD5 |0 \x93\xD6 |0 \x93\xD7 |0 \x5F\xFC |0 \x93\xD8 |0 \x93\xD9 |0 \x93\xDA |0 \x93\xDB |0 \x93\xDC |0 \x93\xDD |0 \x93\xDE |0 \x93\xDF |0 \x93\xE0 |0 \x93\xE1 |0 \x52\x9F |0 \x52\xA0 |0 \x60\x41 |0 \x93\xE2 |0 \x93\xE3 |0 \x93\xE4 |0 \x93\xE5 |0 \x93\xE6 |0 \x93\xE7 |0 \x93\xE8 |0 \x51\x6C |0 \x93\xE9 |0 \x5F\xFB |0 \x4F\xEE |0 \x93\xEA |0 \x53\xB1 |0 \x93\xEB |0 \x93\xEC |0 \x93\xED |0 \x93\xEE |0 \x93\xEF |0 \x93\xF0 |0 \x93\xF1 |0 \x93\xF2 |0 \x93\xF3 |0 \x4A\x65 |0 \x54\xF5 |0 \x93\xF4 |0 \x93\xF5 |0 \x56\x5A |0 \x5F\xFD |0 \x93\xF6 |0 \x93\xF7 |0 \x60\x44 |0 \x93\xF8 |0 \x93\xF9 |0 \x93\xFA |0 \x93\xFB |0 \x5C\x52 |0 \x93\xFC |0 \x93\xFD |0 \x94\x41 |0 \x94\x42 |0 \x94\x43 |0 \x4A\x57 |0 \x94\x44 |0 \x94\x45 |0 \x94\x46 |0 \x94\x47 |0 \x51\x63 |0 \x94\x48 |0 \x94\x49 |0 \x54\x6B |0 \x49\xA4 |0 \x4A\xE8 |0 \x94\x4A |0 \x5C\x4B |0 \x94\x4B |0 \x94\x4C |0 \x94\x4D |0 \x94\x4E |0 \x52\xEB |0 \x94\x4F |0 \x60\x42 |0 \x60\x43 |0 \x94\x50 |0 \x60\x45 |0 \x94\x51 |0 \x4D\xB2 |0 \x94\x52 |0 \x94\x53 |0 \x94\x54 |0 \x60\x46 |0 \x94\x55 |0 \x50\xDD |0 \x94\x56 |0 \x94\x57 |0 \x55\x63 |0 \x94\x58 |0 \x94\x59 |0 \x94\x5A |0 \x94\x5B |0 \x94\x5C |0 \x94\x5D |0 \x94\x5E |0 \x49\xD8 |0 \x54\x87 |0 \x94\x5F |0 \x60\x47 |0 \x94\x60 |0 \x54\x7C |0 \x94\x61 |0 \x94\x62 |0 \x94\x63 |0 \x94\x64 |0 \x60\x48 |0 \x66\x42 |0 \x94\x65 |0 \x94\x66 |0 \x94\x67 |0 \x94\x68 |0 \x94\x69 |0 \x56\x73 |0 \x94\x6A |0 \x94\x6B |0 \x94\x6C |0 \x60\x4A |0 \x94\x6D |0 \x60\x49 |0 \x94\x6E |0 \x49\xC0 |0 \x94\x6F |0 \x94\x70 |0 \x94\x71 |0 \x94\x72 |0 \x94\x73 |0 \x94\x74 |0 \x94\x75 |0 \x94\x76 |0 \x94\x77 |0 \x94\x78 |0 \x94\x79 |0 \x94\x7A |0 \x94\x7B |0 \x94\x7C |0 \x94\x7D |0 \x94\x7E |0 \x94\x7F |0 \x94\x81 |0 \x94\x82 |0 \x94\x83 |0 \x94\x84 |0 \x94\x85 |0 \x94\x86 |0 \x94\x87 |0 \x94\x88 |0 \x53\x6A |0 \x94\x89 |0 \x94\x8A |0 \x94\x8B |0 \x94\x8C |0 \x94\x8D |0 \x94\x8E |0 \x94\x8F |0 \x94\x90 |0 \x60\x4B |0 \x94\x91 |0 \x94\x92 |0 \x94\x93 |0 \x94\x94 |0 \x94\x95 |0 \x94\x96 |0 \x94\x97 |0 \x94\x98 |0 \x5A\xDB |0 \x94\x99 |0 \x94\x9A |0 \x94\x9B |0 \x94\x9C |0 \x94\x9D |0 \x54\xC0 |0 \x94\x9E |0 \x94\x9F |0 \x94\xA0 |0 \x94\xA1 |0 \x94\xA2 |0 \x94\xA3 |0 \x94\xA4 |0 \x94\xA5 |0 \x94\xA6 |0 \x94\xA7 |0 \x94\xA8 |0 \x94\xA9 |0 \x60\x4C |0 \x94\xAA |0 \x94\xAB |0 \x94\xAC |0 \x94\xAD |0 \x94\xAE |0 \x4F\xEF |0 \x94\xAF |0 \x94\xB0 |0 \x60\x4D |0 \x5B\xA6 |0 \x94\xB1 |0 \x94\xB2 |0 \x94\xB3 |0 \x94\xB4 |0 \x65\xB6 |0 \x66\x56 |0 \x55\xD4 |0 \x94\xB5 |0 \x5C\xFB |0 \x4C\xC3 |0 \x94\xB6 |0 \x4D\x45 |0 \x94\xB7 |0 \x94\xB8 |0 \x4C\x65 |0 \x5B\x9F |0 \x94\xB9 |0 \x94\xBA |0 \x94\xBB |0 \x94\xBC |0 \x94\xBD |0 \x4D\x6A |0 \x94\xBE |0 \x94\xBF |0 \x58\xA6 |0 \x6A\xCC |0 \x94\xC0 |0 \x94\xC1 |0 \x4B\x70 |0 \x94\xC2 |0 \x94\xC3 |0 \x52\x95 |0 \x94\xC4 |0 \x4F\xC7 |0 \x94\xC5 |0 \x94\xC6 |0 \x94\xC7 |0 \x66\x57 |0 \x48\xBC |0 \x94\xC8 |0 \x94\xC9 |0 \x4F\x6C |0 \x94\xCA |0 \x51\x52 |0 \x94\xCB |0 \x49\x76 |0 \x4A\x48 |0 \x94\xCC |0 \x94\xCD |0 \x94\xCE |0 \x4C\xD1 |0 \x55\x42 |0 \x94\xCF |0 \x94\xD0 |0 \x4B\xD7 |0 \x94\xD1 |0 \x94\xD2 |0 \x94\xD3 |0 \x94\xD4 |0 \x66\x58 |0 \x4F\xB3 |0 \x94\xD5 |0 \x94\xD6 |0 \x94\xD7 |0 \x55\xFC |0 \x94\xD8 |0 \x54\x63 |0 \x94\xD9 |0 \x5B\x9C |0 \x94\xDA |0 \x94\xDB |0 \x4C\x94 |0 \x94\xDC |0 \x94\xDD |0 \x94\xDE |0 \x94\xDF |0 \x94\xE0 |0 \x94\xE1 |0 \x94\xE2 |0 \x94\xE3 |0 \x94\xE4 |0 \x94\xE5 |0 \x94\xE6 |0 \x94\xE7 |0 \x94\xE8 |0 \x94\xE9 |0 \x94\xEA |0 \x57\xC3 |0 \x94\xEB |0 \x94\xEC |0 \x94\xED |0 \x5B\x4B |0 \x49\x94 |0 \x94\xEE |0 \x94\xEF |0 \x94\xF0 |0 \x66\xB2 |0 \x48\xDE |0 \x94\xF1 |0 \x66\xB4 |0 \x94\xF2 |0 \x94\xF3 |0 \x94\xF4 |0 \x4B\xB6 |0 \x94\xF5 |0 \x51\x6F |0 \x94\xF6 |0 \x6B\x9B |0 \x58\xB0 |0 \x94\xF7 |0 \x94\xF8 |0 \x5B\x86 |0 \x94\xF9 |0 \x57\xD2 |0 \x94\xFA |0 \x94\xFB |0 \x4F\x90 |0 \x4A\x83 |0 \x94\xFC |0 \x4C\xAA |0 \x94\xFD |0 \x5B\x56 |0 \x95\x41 |0 \x67\x5D |0 \x95\x42 |0 \x4B\xCE |0 \x95\x43 |0 \x56\x59 |0 \x58\xC1 |0 \x95\x44 |0 \x95\x45 |0 \x95\x46 |0 \x95\x47 |0 \x95\x48 |0 \x95\x49 |0 \x95\x4A |0 \x95\x4B |0 \x4C\x5D |0 \x95\x4C |0 \x95\x4D |0 \x66\xB5 |0 \x55\xA8 |0 \x95\x4E |0 \x95\x4F |0 \x95\x50 |0 \x53\x74 |0 \x95\x51 |0 \x66\xB8 |0 \x66\xB7 |0 \x51\xC2 |0 \x66\xB6 |0 \x95\x52 |0 \x95\x53 |0 \x95\x54 |0 \x95\x55 |0 \x58\xFC |0 \x66\xB9 |0 \x95\x56 |0 \x66\xBA |0 \x5C\x86 |0 \x95\x57 |0 \x95\x58 |0 \x66\xBB |0 \x95\x59 |0 \x95\x5A |0 \x95\x5B |0 \x66\xBC |0 \x53\xEB |0 \x95\x5C |0 \x95\x5D |0 \x95\x5E |0 \x95\x5F |0 \x95\x60 |0 \x95\x61 |0 \x95\x62 |0 \x95\x63 |0 \x57\xDD |0 \x95\x64 |0 \x4E\xC7 |0 \x95\x65 |0 \x95\x66 |0 \x54\xD4 |0 \x4B\x49 |0 \x4F\xC8 |0 \x5B\xBB |0 \x5A\xE6 |0 \x95\x67 |0 \x95\x68 |0 \x59\x4E |0 \x58\xF0 |0 \x65\xB7 |0 \x65\xB8 |0 \x65\xB9 |0 \x4D\xB4 |0 \x95\x69 |0 \x95\x6A |0 \x95\x6B |0 \x95\x6C |0 \x55\xB0 |0 \x50\x96 |0 \x95\x6D |0 \x95\x6E |0 \x57\x9B |0 \x95\x6F |0 \x95\x70 |0 \x95\x71 |0 \x95\x72 |0 \x95\x73 |0 \x65\xBF |0 \x95\x74 |0 \x48\xB9 |0 \x65\xBD |0 \x95\x75 |0 \x95\x76 |0 \x50\xA4 |0 \x95\x77 |0 \x95\x78 |0 \x95\x79 |0 \x65\xBA |0 \x95\x7A |0 \x49\xFC |0 \x95\x7B |0 \x52\x98 |0 \x4E\x89 |0 \x95\x7C |0 \x95\x7D |0 \x95\x7E |0 \x59\xD6 |0 \x57\xF3 |0 \x65\xBE |0 \x95\x7F |0 \x95\x81 |0 \x95\x82 |0 \x65\xBB |0 \x95\x83 |0 \x95\x84 |0 \x95\x85 |0 \x65\xC2 |0 \x95\x86 |0 \x58\xC6 |0 \x5A\x53 |0 \x95\x87 |0 \x95\x88 |0 \x95\x89 |0 \x95\x8A |0 \x4A\xB9 |0 \x95\x8B |0 \x52\x61 |0 \x5C\x93 |0 \x95\x8C |0 \x95\x8D |0 \x95\x8E |0 \x95\x8F |0 \x5B\x71 |0 \x95\x90 |0 \x55\xC6 |0 \x95\x91 |0 \x65\xC4 |0 \x95\x92 |0 \x95\x93 |0 \x65\xC3 |0 \x65\xC6 |0 \x65\xC5 |0 \x95\x94 |0 \x95\x95 |0 \x95\x96 |0 \x95\x97 |0 \x95\x98 |0 \x5B\xE6 |0 \x95\x99 |0 \x58\x74 |0 \x95\x9A |0 \x95\x9B |0 \x65\xCA |0 \x95\x9C |0 \x4E\x6E |0 \x95\x9D |0 \x95\x9E |0 \x95\x9F |0 \x95\xA0 |0 \x95\xA1 |0 \x95\xA2 |0 \x95\xA3 |0 \x4F\x9B |0 \x55\x6E |0 \x95\xA4 |0 \x95\xA5 |0 \x65\xCB |0 \x95\xA6 |0 \x95\xA7 |0 \x55\x59 |0 \x58\x9F |0 \x65\xC9 |0 \x5A\xCD |0 \x65\xCC |0 \x65\xCE |0 \x95\xA8 |0 \x95\xA9 |0 \x57\x8E |0 \x95\xAA |0 \x95\xAB |0 \x95\xAC |0 \x95\xAD |0 \x65\xC8 |0 \x95\xAE |0 \x65\xCD |0 \x95\xAF |0 \x95\xB0 |0 \x57\xED |0 \x95\xB1 |0 \x4E\x7E |0 \x95\xB2 |0 \x4A\x5F |0 \x95\xB3 |0 \x95\xB4 |0 \x95\xB5 |0 \x95\xB6 |0 \x95\xB7 |0 \x53\xD4 |0 \x4F\xAF |0 \x57\xF9 |0 \x95\xB8 |0 \x95\xB9 |0 \x95\xBA |0 \x54\x88 |0 \x95\xBB |0 \x4F\xA6 |0 \x65\xCF |0 \x95\xBC |0 \x95\xBD |0 \x5B\xC6 |0 \x95\xBE |0 \x95\xBF |0 \x95\xC0 |0 \x51\x60 |0 \x95\xC1 |0 \x95\xC2 |0 \x95\xC3 |0 \x5A\xDC |0 \x95\xC4 |0 \x65\xD0 |0 \x95\xC5 |0 \x95\xC6 |0 \x58\x5E |0 \x95\xC7 |0 \x95\xC8 |0 \x95\xC9 |0 \x95\xCA |0 \x65\xD1 |0 \x95\xCB |0 \x95\xCC |0 \x95\xCD |0 \x95\xCE |0 \x55\xED |0 \x95\xCF |0 \x95\xD0 |0 \x95\xD1 |0 \x95\xD2 |0 \x53\x4F |0 \x48\xB4 |0 \x95\xD3 |0 \x95\xD4 |0 \x95\xD5 |0 \x95\xD6 |0 \x95\xD7 |0 \x65\xD3 |0 \x95\xD8 |0 \x95\xD9 |0 \x95\xDA |0 \x95\xDB |0 \x95\xDC |0 \x95\xDD |0 \x95\xDE |0 \x95\xDF |0 \x95\xE0 |0 \x65\xD2 |0 \x6A\xDE |0 \x95\xE1 |0 \x95\xE2 |0 \x95\xE3 |0 \x95\xE4 |0 \x95\xE5 |0 \x52\xB9 |0 \x95\xE6 |0 \x95\xE7 |0 \x95\xE8 |0 \x95\xE9 |0 \x95\xEA |0 \x49\x49 |0 \x95\xEB |0 \x95\xEC |0 \x95\xED |0 \x95\xEE |0 \x63\x7F |0 \x95\xEF |0 \x95\xF0 |0 \x95\xF1 |0 \x95\xF2 |0 \x65\xD4 |0 \x95\xF3 |0 \x95\xF4 |0 \x95\xF5 |0 \x95\xF6 |0 \x95\xF7 |0 \x95\xF8 |0 \x95\xF9 |0 \x95\xFA |0 \x95\xFB |0 \x95\xFC |0 \x95\xFD |0 \x96\x41 |0 \x96\x42 |0 \x96\x43 |0 \x96\x44 |0 \x96\x45 |0 \x96\x46 |0 \x96\x47 |0 \x96\x48 |0 \x96\x49 |0 \x96\x4A |0 \x96\x4B |0 \x96\x4C |0 \x96\x4D |0 \x96\x4E |0 \x96\x4F |0 \x55\xEE |0 \x96\x50 |0 \x65\xD5 |0 \x65\xD6 |0 \x53\xD7 |0 \x96\x51 |0 \x96\x52 |0 \x96\x53 |0 \x96\x54 |0 \x96\x55 |0 \x96\x56 |0 \x96\x57 |0 \x96\x58 |0 \x65\xD7 |0 \x96\x59 |0 \x96\x5A |0 \x65\xD8 |0 \x96\x5B |0 \x96\x5C |0 \x96\x5D |0 \x96\x5E |0 \x96\x5F |0 \x96\x60 |0 \x5A\xBA |0 \x96\x61 |0 \x54\x9B |0 \x59\xB6 |0 \x4C\xFB |0 \x96\x62 |0 \x96\x63 |0 \x65\xC1 |0 \x96\x64 |0 \x49\xDB |0 \x96\x65 |0 \x96\x66 |0 \x51\xFB |0 \x96\x67 |0 \x5A\xF7 |0 \x56\xE5 |0 \x5C\x8F |0 \x96\x68 |0 \x96\x69 |0 \x96\x6A |0 \x96\x6B |0 \x96\x6C |0 \x96\x6D |0 \x96\x6E |0 \x5A\xC1 |0 \x5A\x70 |0 \x66\x63 |0 \x53\x94 |0 \x96\x6F |0 \x4C\x9F |0 \x96\x70 |0 \x96\x71 |0 \x66\x74 |0 \x96\x72 |0 \x96\x73 |0 \x96\x74 |0 \x56\x57 |0 \x66\x7E |0 \x96\x75 |0 \x50\xC9 |0 \x96\x76 |0 \x96\x77 |0 \x96\x78 |0 \x57\x9C |0 \x96\x79 |0 \x4A\x4F |0 \x96\x7A |0 \x53\xD9 |0 \x96\x7B |0 \x96\x7C |0 \x96\x7D |0 \x96\x7E |0 \x96\x7F |0 \x96\x81 |0 \x66\x9D |0 \x96\x82 |0 \x52\xBD |0 \x96\x83 |0 \x57\xB3 |0 \x52\xA8 |0 \x49\x5E |0 \x5A\xFC |0 \x96\x84 |0 \x55\xF4 |0 \x96\x85 |0 \x5B\xEB |0 \x96\x86 |0 \x96\x87 |0 \x53\xD2 |0 \x4B\xE3 |0 \x96\x88 |0 \x96\x89 |0 \x96\x8A |0 \x96\x8B |0 \x4E\x9B |0 \x96\x8C |0 \x96\x8D |0 \x58\xDF |0 \x96\x8E |0 \x96\x8F |0 \x55\x51 |0 \x96\x90 |0 \x5A\xD2 |0 \x54\xA7 |0 \x96\x91 |0 \x96\x92 |0 \x4C\xCA |0 \x96\x93 |0 \x64\xBD |0 \x55\x5C |0 \x96\x94 |0 \x96\x95 |0 \x64\xBA |0 \x96\x96 |0 \x50\xED |0 \x58\xD2 |0 \x49\xC3 |0 \x4A\xE4 |0 \x96\x97 |0 \x64\xBB |0 \x96\x98 |0 \x96\x99 |0 \x5B\x68 |0 \x96\x9A |0 \x96\x9B |0 \x96\x9C |0 \x96\x9D |0 \x96\x9E |0 \x4B\xC4 |0 \x96\x9F |0 \x64\xBC |0 \x55\xF7 |0 \x4C\xDB |0 \x56\xF4 |0 \x96\xA0 |0 \x96\xA1 |0 \x96\xA2 |0 \x50\xB3 |0 \x96\xA3 |0 \x96\xA4 |0 \x59\x8F |0 \x64\xBE |0 \x64\xC1 |0 \x96\xA5 |0 \x96\xA6 |0 \x4D\xBB |0 \x96\xA7 |0 \x49\x4D |0 \x4F\x7C |0 \x96\xA8 |0 \x65\xBC |0 \x64\xC2 |0 \x96\xA9 |0 \x64\xC5 |0 \x96\xAA |0 \x64\xCA |0 \x96\xAB |0 \x96\xAC |0 \x96\xAD |0 \x96\xAE |0 \x64\xCB |0 \x96\xAF |0 \x56\x69 |0 \x48\xE4 |0 \x96\xB0 |0 \x4E\xAA |0 \x96\xB1 |0 \x96\xB2 |0 \x4D\x59 |0 \x96\xB3 |0 \x96\xB4 |0 \x64\xC0 |0 \x96\xB5 |0 \x57\x98 |0 \x96\xB6 |0 \x64\xC9 |0 \x96\xB7 |0 \x96\xB8 |0 \x96\xB9 |0 \x96\xBA |0 \x57\xF5 |0 \x96\xBB |0 \x96\xBC |0 \x96\xBD |0 \x96\xBE |0 \x5B\x8E |0 \x96\xBF |0 \x51\x76 |0 \x64\xC3 |0 \x96\xC0 |0 \x52\x56 |0 \x96\xC1 |0 \x4D\x9C |0 \x5B\xA5 |0 \x64\xC7 |0 \x96\xC2 |0 \x96\xC3 |0 \x96\xC4 |0 \x55\xDF |0 \x5A\xE5 |0 \x96\xC5 |0 \x64\xBF |0 \x96\xC6 |0 \x64\xC4 |0 \x64\xC6 |0 \x96\xC7 |0 \x54\x59 |0 \x4C\x84 |0 \x96\xC8 |0 \x64\xC8 |0 \x96\xC9 |0 \x50\x7D |0 \x64\xD1 |0 \x96\xCA |0 \x96\xCB |0 \x64\xD6 |0 \x96\xCC |0 \x64\xD4 |0 \x4E\xDB |0 \x4E\xCE |0 \x64\xDA |0 \x96\xCD |0 \x96\xCE |0 \x96\xCF |0 \x96\xD0 |0 \x96\xD1 |0 \x96\xD2 |0 \x96\xD3 |0 \x96\xD4 |0 \x64\xDD |0 \x96\xD5 |0 \x64\xD9 |0 \x49\x9B |0 \x96\xD6 |0 \x96\xD7 |0 \x96\xD8 |0 \x96\xD9 |0 \x96\xDA |0 \x96\xDB |0 \x96\xDC |0 \x96\xDD |0 \x96\xDE |0 \x96\xDF |0 \x48\xD7 |0 \x52\xB2 |0 \x4C\xCB |0 \x53\xE1 |0 \x54\xBD |0 \x54\xE0 |0 \x96\xE0 |0 \x96\xE1 |0 \x96\xE2 |0 \x64\xCE |0 \x64\xD3 |0 \x64\xD5 |0 \x96\xE3 |0 \x4D\x92 |0 \x64\xD7 |0 \x5C\x96 |0 \x96\xE4 |0 \x52\xFA |0 \x96\xE5 |0 \x64\xDB |0 \x96\xE6 |0 \x96\xE7 |0 \x49\xE8 |0 \x96\xE8 |0 \x96\xE9 |0 \x96\xEA |0 \x64\xD0 |0 \x96\xEB |0 \x96\xEC |0 \x4E\xEC |0 \x96\xED |0 \x96\xEE |0 \x50\x62 |0 \x64\xCC |0 \x5B\xF8 |0 \x96\xEF |0 \x51\x99 |0 \x49\xF0 |0 \x96\xF0 |0 \x96\xF1 |0 \x96\xF2 |0 \x96\xF3 |0 \x96\xF4 |0 \x96\xF5 |0 \x96\xF6 |0 \x96\xF7 |0 \x64\xDE |0 \x96\xF8 |0 \x55\xC0 |0 \x64\xD8 |0 \x96\xF9 |0 \x96\xFA |0 \x96\xFB |0 \x96\xFC |0 \x5B\x44 |0 \x96\xFD |0 \x49\x8B |0 \x5B\x5B |0 \x64\xCD |0 \x64\xCF |0 \x4B\xAF |0 \x64\xD2 |0 \x97\x41 |0 \x64\xDC |0 \x50\xB7 |0 \x97\x42 |0 \x55\xF6 |0 \x97\x43 |0 \x56\x48 |0 \x97\x44 |0 \x97\x45 |0 \x53\xDB |0 \x50\xF4 |0 \x97\x46 |0 \x97\x47 |0 \x97\x48 |0 \x97\x49 |0 \x97\x4A |0 \x64\xE8 |0 \x97\x4B |0 \x97\x4C |0 \x97\x4D |0 \x58\xA2 |0 \x97\x4E |0 \x97\x4F |0 \x97\x50 |0 \x97\x51 |0 \x97\x52 |0 \x97\x53 |0 \x97\x54 |0 \x64\xF1 |0 \x5B\xE9 |0 \x97\x55 |0 \x97\x56 |0 \x97\x57 |0 \x97\x58 |0 \x97\x59 |0 \x97\x5A |0 \x97\x5B |0 \x64\xDF |0 \x64\xE0 |0 \x97\x5C |0 \x97\x5D |0 \x97\x5E |0 \x59\x9A |0 \x4D\xCA |0 \x4C\xF8 |0 \x97\x5F |0 \x97\x60 |0 \x4C\xF0 |0 \x5A\xD3 |0 \x64\xEE |0 \x97\x61 |0 \x64\xED |0 \x64\xEB |0 \x4D\x91 |0 \x56\xD1 |0 \x64\xE5 |0 \x57\xA5 |0 \x50\x93 |0 \x97\x62 |0 \x48\xB7 |0 \x64\xF0 |0 \x64\xEF |0 \x97\x63 |0 \x5C\x60 |0 \x97\x64 |0 \x64\xE3 |0 \x97\x65 |0 \x57\x49 |0 \x55\x43 |0 \x97\x66 |0 \x4E\x58 |0 \x4F\x7B |0 \x64\xE9 |0 \x97\x67 |0 \x97\x68 |0 \x97\x69 |0 \x97\x6A |0 \x97\x6B |0 \x97\x6C |0 \x97\x6D |0 \x97\x6E |0 \x97\x6F |0 \x97\x70 |0 \x64\xE1 |0 \x64\xE2 |0 \x64\xE4 |0 \x4B\x55 |0 \x64\xE6 |0 \x54\x65 |0 \x64\xEA |0 \x64\xEC |0 \x4F\x50 |0 \x5C\x4E |0 \x97\x71 |0 \x64\xF7 |0 \x97\x72 |0 \x97\x73 |0 \x97\x74 |0 \x97\x75 |0 \x97\x76 |0 \x97\x77 |0 \x97\x78 |0 \x97\x79 |0 \x64\xF4 |0 \x97\x7A |0 \x57\x50 |0 \x64\xF5 |0 \x97\x7B |0 \x97\x7C |0 \x97\x7D |0 \x97\x7E |0 \x97\x7F |0 \x97\x81 |0 \x97\x82 |0 \x97\x83 |0 \x97\x84 |0 \x51\x5A |0 \x97\x85 |0 \x64\xE7 |0 \x97\x86 |0 \x52\x57 |0 \x48\xEF |0 \x97\x87 |0 \x97\x88 |0 \x97\x89 |0 \x97\x8A |0 \x97\x8B |0 \x97\x8C |0 \x97\x8D |0 \x97\x8E |0 \x64\xF3 |0 \x97\x8F |0 \x97\x90 |0 \x97\x91 |0 \x64\xF6 |0 \x97\x92 |0 \x97\x93 |0 \x97\x94 |0 \x4D\x43 |0 \x97\x95 |0 \x97\x96 |0 \x97\x97 |0 \x97\x98 |0 \x97\x99 |0 \x97\x9A |0 \x97\x9B |0 \x97\x9C |0 \x97\x9D |0 \x97\x9E |0 \x55\x72 |0 \x97\x9F |0 \x97\xA0 |0 \x97\xA1 |0 \x52\x6E |0 \x57\xDF |0 \x50\xE5 |0 \x97\xA2 |0 \x97\xA3 |0 \x97\xA4 |0 \x97\xA5 |0 \x56\x94 |0 \x97\xA6 |0 \x56\xDC |0 \x58\xB4 |0 \x97\xA7 |0 \x97\xA8 |0 \x55\xE0 |0 \x97\xA9 |0 \x64\xF2 |0 \x97\xAA |0 \x97\xAB |0 \x97\xAC |0 \x97\xAD |0 \x97\xAE |0 \x97\xAF |0 \x97\xB0 |0 \x97\xB1 |0 \x97\xB2 |0 \x97\xB3 |0 \x4E\xEB |0 \x97\xB4 |0 \x64\xF8 |0 \x97\xB5 |0 \x97\xB6 |0 \x97\xB7 |0 \x97\xB8 |0 \x97\xB9 |0 \x97\xBA |0 \x52\x7E |0 \x97\xBB |0 \x53\xE4 |0 \x97\xBC |0 \x4D\x98 |0 \x97\xBD |0 \x97\xBE |0 \x97\xBF |0 \x97\xC0 |0 \x48\xF3 |0 \x97\xC1 |0 \x97\xC2 |0 \x5C\x78 |0 \x97\xC3 |0 \x97\xC4 |0 \x4E\xAB |0 \x97\xC5 |0 \x53\x90 |0 \x97\xC6 |0 \x97\xC7 |0 \x97\xC8 |0 \x97\xC9 |0 \x97\xCA |0 \x56\xC3 |0 \x97\xCB |0 \x97\xCC |0 \x65\x46 |0 \x97\xCD |0 \x97\xCE |0 \x97\xCF |0 \x97\xD0 |0 \x97\xD1 |0 \x97\xD2 |0 \x97\xD3 |0 \x97\xD4 |0 \x97\xD5 |0 \x97\xD6 |0 \x55\x4D |0 \x97\xD7 |0 \x65\x42 |0 \x50\xE1 |0 \x97\xD8 |0 \x97\xD9 |0 \x97\xDA |0 \x50\x63 |0 \x97\xDB |0 \x97\xDC |0 \x97\xDD |0 \x64\xFD |0 \x4D\x77 |0 \x97\xDE |0 \x64\xFA |0 \x97\xDF |0 \x97\xE0 |0 \x97\xE1 |0 \x97\xE2 |0 \x65\x44 |0 \x97\xE3 |0 \x97\xE4 |0 \x97\xE5 |0 \x59\xCD |0 \x97\xE6 |0 \x97\xE7 |0 \x97\xE8 |0 \x97\xE9 |0 \x97\xEA |0 \x65\x43 |0 \x97\xEB |0 \x5B\xB1 |0 \x5C\x55 |0 \x97\xEC |0 \x65\x47 |0 \x97\xED |0 \x4F\x57 |0 \x97\xEE |0 \x97\xEF |0 \x97\xF0 |0 \x97\xF1 |0 \x97\xF2 |0 \x97\xF3 |0 \x97\xF4 |0 \x97\xF5 |0 \x97\xF6 |0 \x97\xF7 |0 \x97\xF8 |0 \x97\xF9 |0 \x64\xFB |0 \x64\xFC |0 \x97\xFA |0 \x97\xFB |0 \x97\xFC |0 \x65\x41 |0 \x97\xFD |0 \x98\x41 |0 \x98\x42 |0 \x98\x43 |0 \x98\x44 |0 \x98\x45 |0 \x98\x46 |0 \x98\x47 |0 \x57\x76 |0 \x98\x48 |0 \x98\x49 |0 \x59\xAB |0 \x98\x4A |0 \x98\x4B |0 \x98\x4C |0 \x65\x52 |0 \x98\x4D |0 \x98\x4E |0 \x98\x4F |0 \x98\x50 |0 \x65\x49 |0 \x98\x51 |0 \x98\x52 |0 \x98\x53 |0 \x4A\xA9 |0 \x98\x54 |0 \x4A\xBA |0 \x98\x55 |0 \x98\x56 |0 \x65\x4B |0 \x98\x57 |0 \x98\x58 |0 \x98\x59 |0 \x98\x5A |0 \x98\x5B |0 \x98\x5C |0 \x98\x5D |0 \x98\x5E |0 \x98\x5F |0 \x98\x60 |0 \x98\x61 |0 \x98\x62 |0 \x98\x63 |0 \x98\x64 |0 \x98\x65 |0 \x98\x66 |0 \x98\x67 |0 \x58\xA7 |0 \x98\x68 |0 \x98\x69 |0 \x65\x45 |0 \x98\x6A |0 \x98\x6B |0 \x4A\x9F |0 \x98\x6C |0 \x98\x6D |0 \x65\x4C |0 \x50\xE2 |0 \x98\x6E |0 \x65\x4A |0 \x98\x6F |0 \x98\x70 |0 \x65\x59 |0 \x98\x71 |0 \x98\x72 |0 \x65\x58 |0 \x98\x73 |0 \x98\x74 |0 \x98\x75 |0 \x98\x76 |0 \x65\x4E |0 \x98\x77 |0 \x98\x78 |0 \x64\xF9 |0 \x98\x79 |0 \x98\x7A |0 \x65\x48 |0 \x98\x7B |0 \x98\x7C |0 \x98\x7D |0 \x98\x7E |0 \x98\x7F |0 \x50\x4C |0 \x65\x51 |0 \x65\x5A |0 \x98\x81 |0 \x98\x82 |0 \x51\xA4 |0 \x98\x83 |0 \x98\x84 |0 \x98\x85 |0 \x65\x4F |0 \x98\x86 |0 \x4C\xC4 |0 \x98\x87 |0 \x65\x4D |0 \x98\x88 |0 \x5A\x7C |0 \x65\x54 |0 \x65\x55 |0 \x65\x57 |0 \x98\x89 |0 \x98\x8A |0 \x98\x8B |0 \x65\x67 |0 \x98\x8C |0 \x98\x8D |0 \x98\x8E |0 \x98\x8F |0 \x98\x90 |0 \x98\x91 |0 \x50\xC5 |0 \x65\x65 |0 \x98\x92 |0 \x98\x93 |0 \x65\x50 |0 \x98\x94 |0 \x98\x95 |0 \x65\x5B |0 \x48\xF0 |0 \x98\x96 |0 \x98\x97 |0 \x98\x98 |0 \x98\x99 |0 \x98\x9A |0 \x98\x9B |0 \x98\x9C |0 \x98\x9D |0 \x98\x9E |0 \x98\x9F |0 \x65\x5C |0 \x5B\x45 |0 \x98\xA0 |0 \x98\xA1 |0 \x65\x5E |0 \x98\xA2 |0 \x65\x5F |0 \x98\xA3 |0 \x98\xA4 |0 \x98\xA5 |0 \x65\x61 |0 \x98\xA6 |0 \x98\xA7 |0 \x51\x92 |0 \x98\xA8 |0 \x98\xA9 |0 \x54\xB5 |0 \x98\xAA |0 \x98\xAB |0 \x98\xAC |0 \x65\x5D |0 \x98\xAD |0 \x98\xAE |0 \x98\xAF |0 \x98\xB0 |0 \x98\xB1 |0 \x65\x62 |0 \x98\xB2 |0 \x98\xB3 |0 \x98\xB4 |0 \x98\xB5 |0 \x98\xB6 |0 \x98\xB7 |0 \x98\xB8 |0 \x98\xB9 |0 \x65\x63 |0 \x98\xBA |0 \x65\x53 |0 \x98\xBB |0 \x65\x56 |0 \x98\xBC |0 \x4E\x51 |0 \x98\xBD |0 \x98\xBE |0 \x98\xBF |0 \x65\x60 |0 \x98\xC0 |0 \x98\xC1 |0 \x98\xC2 |0 \x98\xC3 |0 \x98\xC4 |0 \x98\xC5 |0 \x4E\xF6 |0 \x98\xC6 |0 \x98\xC7 |0 \x98\xC8 |0 \x65\x64 |0 \x65\x66 |0 \x98\xC9 |0 \x98\xCA |0 \x98\xCB |0 \x98\xCC |0 \x98\xCD |0 \x98\xCE |0 \x98\xCF |0 \x98\xD0 |0 \x98\xD1 |0 \x98\xD2 |0 \x98\xD3 |0 \x98\xD4 |0 \x65\x6A |0 \x98\xD5 |0 \x98\xD6 |0 \x98\xD7 |0 \x98\xD8 |0 \x65\x6E |0 \x98\xD9 |0 \x98\xDA |0 \x98\xDB |0 \x98\xDC |0 \x98\xDD |0 \x98\xDE |0 \x98\xDF |0 \x98\xE0 |0 \x98\xE1 |0 \x98\xE2 |0 \x49\xDA |0 \x98\xE3 |0 \x65\x68 |0 \x98\xE4 |0 \x98\xE5 |0 \x98\xE6 |0 \x98\xE7 |0 \x98\xE8 |0 \x98\xE9 |0 \x98\xEA |0 \x98\xEB |0 \x98\xEC |0 \x98\xED |0 \x4C\x4E |0 \x98\xEE |0 \x98\xEF |0 \x98\xF0 |0 \x98\xF1 |0 \x98\xF2 |0 \x98\xF3 |0 \x98\xF4 |0 \x98\xF5 |0 \x98\xF6 |0 \x98\xF7 |0 \x98\xF8 |0 \x98\xF9 |0 \x65\x6B |0 \x65\x6C |0 \x98\xFA |0 \x98\xFB |0 \x98\xFC |0 \x98\xFD |0 \x99\x41 |0 \x99\x42 |0 \x5B\x61 |0 \x99\x43 |0 \x52\xA2 |0 \x99\x44 |0 \x99\x45 |0 \x99\x46 |0 \x99\x47 |0 \x99\x48 |0 \x99\x49 |0 \x65\x78 |0 \x99\x4A |0 \x4D\xE0 |0 \x99\x4B |0 \x99\x4C |0 \x99\x4D |0 \x99\x4E |0 \x65\x69 |0 \x99\x4F |0 \x5A\x43 |0 \x99\x50 |0 \x99\x51 |0 \x99\x52 |0 \x65\x74 |0 \x99\x53 |0 \x99\x54 |0 \x99\x55 |0 \x99\x56 |0 \x99\x57 |0 \x99\x58 |0 \x99\x59 |0 \x65\x77 |0 \x65\x70 |0 \x99\x5A |0 \x99\x5B |0 \x99\x5C |0 \x99\x5D |0 \x99\x5E |0 \x65\x6F |0 \x99\x5F |0 \x99\x60 |0 \x54\x61 |0 \x99\x61 |0 \x99\x62 |0 \x99\x63 |0 \x99\x64 |0 \x99\x65 |0 \x99\x66 |0 \x99\x67 |0 \x99\x68 |0 \x65\x72 |0 \x99\x69 |0 \x99\x6A |0 \x99\x6B |0 \x99\x6C |0 \x99\x6D |0 \x99\x6E |0 \x99\x6F |0 \x65\x79 |0 \x4A\x68 |0 \x99\x70 |0 \x65\x73 |0 \x99\x71 |0 \x99\x72 |0 \x99\x73 |0 \x99\x74 |0 \x99\x75 |0 \x58\x91 |0 \x99\x76 |0 \x99\x77 |0 \x99\x78 |0 \x65\x6D |0 \x99\x79 |0 \x99\x7A |0 \x99\x7B |0 \x99\x7C |0 \x99\x7D |0 \x99\x7E |0 \x99\x7F |0 \x99\x81 |0 \x99\x82 |0 \x99\x83 |0 \x99\x84 |0 \x4A\x98 |0 \x99\x85 |0 \x99\x86 |0 \x99\x87 |0 \x99\x88 |0 \x99\x89 |0 \x99\x8A |0 \x99\x8B |0 \x65\x76 |0 \x99\x8C |0 \x99\x8D |0 \x65\x7A |0 \x99\x8E |0 \x99\x8F |0 \x99\x90 |0 \x56\xB3 |0 \x99\x91 |0 \x99\x92 |0 \x99\x93 |0 \x58\x4D |0 \x99\x94 |0 \x99\x95 |0 \x99\x96 |0 \x99\x97 |0 \x99\x98 |0 \x99\x99 |0 \x99\x9A |0 \x99\x9B |0 \x99\x9C |0 \x65\x75 |0 \x99\x9D |0 \x65\x7C |0 \x65\x7B |0 \x99\x9E |0 \x99\x9F |0 \x99\xA0 |0 \x99\xA1 |0 \x99\xA2 |0 \x65\x7E |0 \x99\xA3 |0 \x99\xA4 |0 \x99\xA5 |0 \x99\xA6 |0 \x99\xA7 |0 \x99\xA8 |0 \x99\xA9 |0 \x99\xAA |0 \x65\x71 |0 \x99\xAB |0 \x99\xAC |0 \x99\xAD |0 \x99\xAE |0 \x99\xAF |0 \x99\xB0 |0 \x99\xB1 |0 \x99\xB2 |0 \x65\x7D |0 \x99\xB3 |0 \x65\x7F |0 \x52\x6A |0 \x99\xB4 |0 \x99\xB5 |0 \x99\xB6 |0 \x99\xB7 |0 \x99\xB8 |0 \x99\xB9 |0 \x99\xBA |0 \x99\xBB |0 \x99\xBC |0 \x99\xBD |0 \x99\xBE |0 \x99\xBF |0 \x99\xC0 |0 \x99\xC1 |0 \x99\xC2 |0 \x99\xC3 |0 \x99\xC4 |0 \x99\xC5 |0 \x99\xC6 |0 \x99\xC7 |0 \x99\xC8 |0 \x99\xC9 |0 \x99\xCA |0 \x99\xCB |0 \x99\xCC |0 \x99\xCD |0 \x99\xCE |0 \x99\xCF |0 \x99\xD0 |0 \x99\xD1 |0 \x99\xD2 |0 \x99\xD3 |0 \x99\xD4 |0 \x99\xD5 |0 \x99\xD6 |0 \x99\xD7 |0 \x99\xD8 |0 \x99\xD9 |0 \x99\xDA |0 \x99\xDB |0 \x99\xDC |0 \x99\xDD |0 \x99\xDE |0 \x99\xDF |0 \x99\xE0 |0 \x99\xE1 |0 \x99\xE2 |0 \x99\xE3 |0 \x99\xE4 |0 \x99\xE5 |0 \x99\xE6 |0 \x99\xE7 |0 \x99\xE8 |0 \x99\xE9 |0 \x99\xEA |0 \x99\xEB |0 \x99\xEC |0 \x99\xED |0 \x99\xEE |0 \x99\xEF |0 \x99\xF0 |0 \x99\xF1 |0 \x99\xF2 |0 \x99\xF3 |0 \x99\xF4 |0 \x99\xF5 |0 \x99\xF6 |0 \x99\xF7 |0 \x99\xF8 |0 \x99\xF9 |0 \x99\xFA |0 \x99\xFB |0 \x99\xFC |0 \x99\xFD |0 \x9A\x41 |0 \x9A\x42 |0 \x9A\x43 |0 \x9A\x44 |0 \x9A\x45 |0 \x9A\x46 |0 \x9A\x47 |0 \x9A\x48 |0 \x9A\x49 |0 \x9A\x4A |0 \x9A\x4B |0 \x9A\x4C |0 \x9A\x4D |0 \x9A\x4E |0 \x9A\x4F |0 \x9A\x50 |0 \x9A\x51 |0 \x9A\x52 |0 \x9A\x53 |0 \x9A\x54 |0 \x9A\x55 |0 \x9A\x56 |0 \x9A\x57 |0 \x9A\x58 |0 \x9A\x59 |0 \x9A\x5A |0 \x9A\x5B |0 \x9A\x5C |0 \x9A\x5D |0 \x9A\x5E |0 \x9A\x5F |0 \x9A\x60 |0 \x9A\x61 |0 \x9A\x62 |0 \x9A\x63 |0 \x9A\x64 |0 \x9A\x65 |0 \x9A\x66 |0 \x9A\x67 |0 \x9A\x68 |0 \x9A\x69 |0 \x54\x57 |0 \x4A\xCD |0 \x4E\x56 |0 \x58\xBF |0 \x66\xA2 |0 \x9A\x6A |0 \x9A\x6B |0 \x53\x57 |0 \x9A\x6C |0 \x9A\x6D |0 \x9A\x6E |0 \x9A\x6F |0 \x9A\x70 |0 \x9A\x71 |0 \x9A\x72 |0 \x9A\x73 |0 \x9A\x74 |0 \x9A\x75 |0 \x5A\x9C |0 \x9A\x76 |0 \x9A\x77 |0 \x9A\x78 |0 \x9A\x79 |0 \x66\xA3 |0 \x9A\x7A |0 \x66\xA4 |0 \x53\xDA |0 \x9A\x7B |0 \x9A\x7C |0 \x9A\x7D |0 \x50\x8F |0 \x9A\x7E |0 \x9A\x7F |0 \x9A\x81 |0 \x9A\x82 |0 \x66\xA5 |0 \x9A\x83 |0 \x9A\x84 |0 \x66\xA6 |0 \x58\xA9 |0 \x9A\x85 |0 \x54\x58 |0 \x9A\x86 |0 \x9A\x87 |0 \x4C\xE7 |0 \x9A\x88 |0 \x9A\x89 |0 \x9A\x8A |0 \x9A\x8B |0 \x9A\x8C |0 \x9A\x8D |0 \x9A\x8E |0 \x9A\x8F |0 \x9A\x90 |0 \x9A\x91 |0 \x9A\x92 |0 \x9A\x93 |0 \x66\xA7 |0 \x9A\x94 |0 \x9A\x95 |0 \x9A\x96 |0 \x9A\x97 |0 \x9A\x98 |0 \x9A\x99 |0 \x9A\x9A |0 \x9A\x9B |0 \x5B\xB8 |0 \x5B\x9E |0 \x4A\xCA |0 \x49\xBC |0 \x57\xE3 |0 \x53\xE6 |0 \x9A\x9C |0 \x9A\x9D |0 \x57\x82 |0 \x9A\x9E |0 \x9A\x9F |0 \x9A\xA0 |0 \x9A\xA1 |0 \x9A\xA2 |0 \x9A\xA3 |0 \x9A\xA4 |0 \x9A\xA5 |0 \x9A\xA6 |0 \x9A\xA7 |0 \x9A\xA8 |0 \x9A\xA9 |0 \x9A\xAA |0 \x9A\xAB |0 \x4A\xF4 |0 \x9A\xAC |0 \x56\x60 |0 \x4E\xDE |0 \x9A\xAD |0 \x9A\xAE |0 \x9A\xAF |0 \x9A\xB0 |0 \x65\x83 |0 \x65\x84 |0 \x59\x8B |0 \x65\x86 |0 \x9A\xB1 |0 \x4A\xF8 |0 \x65\x85 |0 \x9A\xB2 |0 \x59\x53 |0 \x55\xE1 |0 \x49\xCF |0 \x9A\xB3 |0 \x65\x89 |0 \x9A\xB4 |0 \x9A\xB5 |0 \x9A\xB6 |0 \x9A\xB7 |0 \x65\x87 |0 \x65\x88 |0 \x9A\xB8 |0 \x9A\xB9 |0 \x5B\xB2 |0 \x9A\xBA |0 \x9A\xBB |0 \x9A\xBC |0 \x65\x8A |0 \x65\x8B |0 \x9A\xBD |0 \x9A\xBE |0 \x9A\xBF |0 \x9A\xC0 |0 \x9A\xC1 |0 \x65\x8C |0 \x9A\xC2 |0 \x9A\xC3 |0 \x9A\xC4 |0 \x9A\xC5 |0 \x9A\xC6 |0 \x9A\xC7 |0 \x9A\xC8 |0 \x9A\xC9 |0 \x65\x8D |0 \x9A\xCA |0 \x9A\xCB |0 \x9A\xCC |0 \x9A\xCD |0 \x9A\xCE |0 \x9A\xCF |0 \x9A\xD0 |0 \x9A\xD1 |0 \x66\xAE |0 \x53\x59 |0 \x4B\xCD |0 \x9A\xD2 |0 \x59\xF2 |0 \x9A\xD3 |0 \x9A\xD4 |0 \x9A\xD5 |0 \x9A\xD6 |0 \x9A\xD7 |0 \x9A\xD8 |0 \x9A\xD9 |0 \x4B\x8F |0 \x9A\xDA |0 \x4E\x79 |0 \x66\xB0 |0 \x9A\xDB |0 \x9A\xDC |0 \x59\xE2 |0 \x9A\xDD |0 \x9A\xDE |0 \x9A\xDF |0 \x9A\xE0 |0 \x9A\xE1 |0 \x57\xE2 |0 \x9A\xE2 |0 \x52\xB7 |0 \x9A\xE3 |0 \x52\x5F |0 \x9A\xE4 |0 \x9A\xE5 |0 \x4B\xBD |0 \x5C\xB8 |0 \x49\x68 |0 \x49\x6F |0 \x49\x71 |0 \x53\x9F |0 \x9A\xE6 |0 \x49\x70 |0 \x9A\xE7 |0 \x52\x4B |0 \x9A\xE8 |0 \x9A\xE9 |0 \x9A\xEA |0 \x9A\xEB |0 \x9A\xEC |0 \x5B\x51 |0 \x9A\xED |0 \x9A\xEE |0 \x9A\xEF |0 \x9A\xF0 |0 \x9A\xF1 |0 \x9A\xF2 |0 \x9A\xF3 |0 \x9A\xF4 |0 \x66\x44 |0 \x4D\xC0 |0 \x9A\xF5 |0 \x9A\xF6 |0 \x9A\xF7 |0 \x56\xB9 |0 \x9A\xF8 |0 \x9A\xF9 |0 \x9A\xFA |0 \x66\x45 |0 \x9A\xFB |0 \x66\x47 |0 \x9A\xFC |0 \x9A\xFD |0 \x9B\x41 |0 \x66\x48 |0 \x9B\x42 |0 \x9B\x43 |0 \x9B\x44 |0 \x66\x46 |0 \x9B\x45 |0 \x9B\x46 |0 \x9B\x47 |0 \x9B\x48 |0 \x9B\x49 |0 \x9B\x4A |0 \x9B\x4B |0 \x66\x49 |0 \x66\x4B |0 \x66\x4A |0 \x9B\x4C |0 \x9B\x4D |0 \x9B\x4E |0 \x9B\x4F |0 \x9B\x50 |0 \x66\x4C |0 \x9B\x51 |0 \x55\xCE |0 \x5C\xB4 |0 \x52\x92 |0 \x9B\x52 |0 \x52\x45 |0 \x53\xF7 |0 \x66\x4D |0 \x52\xC9 |0 \x9B\x53 |0 \x66\x4E |0 \x66\x4F |0 \x66\x50 |0 \x4C\x75 |0 \x9B\x54 |0 \x9B\x55 |0 \x9B\x56 |0 \x4C\x9B |0 \x9B\x57 |0 \x66\x51 |0 \x54\x83 |0 \x9B\x58 |0 \x66\x53 |0 \x9B\x59 |0 \x4D\xA3 |0 \x59\x96 |0 \x48\xB0 |0 \x66\x52 |0 \x66\x54 |0 \x9B\x5A |0 \x9B\x5B |0 \x9B\x5C |0 \x4B\x4A |0 \x51\xC7 |0 \x54\x89 |0 \x9B\x5D |0 \x66\x55 |0 \x9B\x5E |0 \x56\x4E |0 \x62\x7F |0 \x9B\x5F |0 \x9B\x60 |0 \x5A\x60 |0 \x9B\x61 |0 \x9B\x62 |0 \x9B\x63 |0 \x9B\x64 |0 \x5D\x7B |0 \x9B\x65 |0 \x9B\x66 |0 \x57\x41 |0 \x5B\xAC |0 \x54\x94 |0 \x9B\x67 |0 \x9B\x68 |0 \x9B\x69 |0 \x5D\x81 |0 \x4E\x84 |0 \x9B\x6A |0 \x4D\xB9 |0 \x62\x83 |0 \x9B\x6B |0 \x9B\x6C |0 \x9B\x6D |0 \x9B\x6E |0 \x9B\x6F |0 \x58\x4B |0 \x9B\x70 |0 \x9B\x71 |0 \x9B\x72 |0 \x62\x81 |0 \x55\x67 |0 \x9B\x73 |0 \x4D\xB8 |0 \x9B\x74 |0 \x9B\x75 |0 \x9B\x76 |0 \x59\x54 |0 \x62\x82 |0 \x54\xE9 |0 \x4D\x4F |0 \x4F\x4D |0 \x4A\x78 |0 \x57\xDA |0 \x9B\x77 |0 \x9B\x78 |0 \x56\xBF |0 \x9B\x79 |0 \x9B\x7A |0 \x9B\x7B |0 \x62\x89 |0 \x62\x8A |0 \x57\x95 |0 \x9B\x7C |0 \x9B\x7D |0 \x9B\x7E |0 \x9B\x7F |0 \x9B\x81 |0 \x56\xAC |0 \x9B\x82 |0 \x4E\xB2 |0 \x9B\x83 |0 \x62\x8B |0 \x9B\x84 |0 \x62\x8C |0 \x9B\x85 |0 \x9B\x86 |0 \x58\xD9 |0 \x9B\x87 |0 \x9B\x88 |0 \x9B\x89 |0 \x53\xFA |0 \x4C\x7A |0 \x9B\x8A |0 \x9B\x8B |0 \x54\x7F |0 \x59\xC9 |0 \x57\xD5 |0 \x9B\x8C |0 \x62\x85 |0 \x62\x8D |0 \x9B\x8D |0 \x55\x93 |0 \x4A\x61 |0 \x9B\x8E |0 \x9B\x8F |0 \x62\x88 |0 \x9B\x90 |0 \x9B\x91 |0 \x53\xE2 |0 \x62\x86 |0 \x9B\x92 |0 \x9B\x93 |0 \x67\x53 |0 \x62\x87 |0 \x9B\x94 |0 \x9B\x95 |0 \x9B\x96 |0 \x9B\x97 |0 \x55\x53 |0 \x9B\x98 |0 \x53\x87 |0 \x9B\x99 |0 \x9B\x9A |0 \x9B\x9B |0 \x4D\x55 |0 \x9B\x9C |0 \x52\x5B |0 \x9B\x9D |0 \x62\x84 |0 \x53\x5D |0 \x51\x44 |0 \x51\xD8 |0 \x49\xD6 |0 \x9B\x9E |0 \x62\x8E |0 \x4E\x46 |0 \x52\xAC |0 \x9B\x9F |0 \x62\x91 |0 \x4F\xD9 |0 \x9B\xA0 |0 \x9B\xA1 |0 \x62\x9C |0 \x62\x96 |0 \x4D\xD2 |0 \x9B\xA2 |0 \x9B\xA3 |0 \x9B\xA4 |0 \x9B\xA5 |0 \x4C\x70 |0 \x5A\x6D |0 \x9B\xA6 |0 \x5B\xCD |0 \x5B\x73 |0 \x4D\x61 |0 \x5B\x54 |0 \x59\x78 |0 \x9B\xA7 |0 \x9B\xA8 |0 \x9B\xA9 |0 \x9B\xAA |0 \x58\xB8 |0 \x54\x97 |0 \x9B\xAB |0 \x9B\xAC |0 \x9B\xAD |0 \x54\xA9 |0 \x49\xB3 |0 \x9B\xAE |0 \x52\x7A |0 \x9B\xAF |0 \x9B\xB0 |0 \x9B\xB1 |0 \x62\x8F |0 \x9B\xB2 |0 \x9B\xB3 |0 \x62\x9D |0 \x62\x90 |0 \x4C\x48 |0 \x62\x98 |0 \x62\x95 |0 \x9B\xB4 |0 \x9B\xB5 |0 \x9B\xB6 |0 \x4C\x5A |0 \x9B\xB7 |0 \x9B\xB8 |0 \x53\x42 |0 \x9B\xB9 |0 \x62\x97 |0 \x53\x7D |0 \x49\xA7 |0 \x53\xFB |0 \x9B\xBA |0 \x52\xDF |0 \x9B\xBB |0 \x9B\xBC |0 \x5C\x42 |0 \x9B\xBD |0 \x50\xE0 |0 \x62\x9A |0 \x9B\xBE |0 \x9B\xBF |0 \x62\x9B |0 \x62\x9E |0 \x56\xA8 |0 \x62\x94 |0 \x9B\xC0 |0 \x5A\x5E |0 \x9B\xC1 |0 \x49\x63 |0 \x67\x54 |0 \x62\x92 |0 \x62\x93 |0 \x9B\xC2 |0 \x62\x99 |0 \x58\xB9 |0 \x53\xC2 |0 \x5A\xF2 |0 \x62\x9F |0 \x9B\xC3 |0 \x9B\xC4 |0 \x4F\x81 |0 \x9B\xC5 |0 \x9B\xC6 |0 \x62\xA6 |0 \x9B\xC7 |0 \x9B\xC8 |0 \x62\xA5 |0 \x9B\xC9 |0 \x9B\xCA |0 \x9B\xCB |0 \x59\x94 |0 \x62\xA2 |0 \x9B\xCC |0 \x62\xA8 |0 \x9B\xCD |0 \x9B\xCE |0 \x9B\xCF |0 \x54\xF6 |0 \x9B\xD0 |0 \x9B\xD1 |0 \x9B\xD2 |0 \x9B\xD3 |0 \x58\x54 |0 \x9B\xD4 |0 \x62\xA7 |0 \x62\xAD |0 \x51\xE4 |0 \x9B\xD5 |0 \x9B\xD6 |0 \x4B\xB3 |0 \x9B\xD7 |0 \x9B\xD8 |0 \x9B\xD9 |0 \x9B\xDA |0 \x9B\xDB |0 \x9B\xDC |0 \x4F\x93 |0 \x9B\xDD |0 \x62\xA1 |0 \x9B\xDE |0 \x9B\xDF |0 \x4D\xE8 |0 \x62\xA9 |0 \x9B\xE0 |0 \x9B\xE1 |0 \x62\xAB |0 \x9B\xE2 |0 \x9B\xE3 |0 \x4B\xFC |0 \x5B\xDD |0 \x62\xB1 |0 \x9B\xE4 |0 \x62\xAC |0 \x9B\xE5 |0 \x9B\xE6 |0 \x9B\xE7 |0 \x62\xA0 |0 \x9B\xE8 |0 \x4E\x8F |0 \x57\x7D |0 \x54\x42 |0 \x53\x69 |0 \x9B\xE9 |0 \x9B\xEA |0 \x51\x98 |0 \x9B\xEB |0 \x62\xA3 |0 \x9B\xEC |0 \x54\x53 |0 \x4F\x4C |0 \x4F\x5D |0 \x62\xA4 |0 \x9B\xED |0 \x5C\x67 |0 \x49\xE1 |0 \x9B\xEE |0 \x62\xAA |0 \x4E\xC2 |0 \x62\xAE |0 \x9B\xEF |0 \x4E\x8C |0 \x62\xAF |0 \x53\x48 |0 \x62\xB0 |0 \x9B\xF0 |0 \x9B\xF1 |0 \x9B\xF2 |0 \x9B\xF3 |0 \x5B\x84 |0 \x50\x43 |0 \x9B\xF4 |0 \x62\xB9 |0 \x9B\xF5 |0 \x62\xB6 |0 \x9B\xF6 |0 \x62\xBA |0 \x9B\xF7 |0 \x9B\xF8 |0 \x62\xBC |0 \x9B\xF9 |0 \x9B\xFA |0 \x53\xD5 |0 \x9B\xFB |0 \x9B\xFC |0 \x4D\xC5 |0 \x50\xCA |0 \x9B\xFD |0 \x9C\x41 |0 \x9C\x42 |0 \x4C\xA0 |0 \x62\xB3 |0 \x9C\x43 |0 \x9C\x44 |0 \x9C\x45 |0 \x9C\x46 |0 \x5A\xA0 |0 \x9C\x47 |0 \x9C\x48 |0 \x4D\xA2 |0 \x4F\x9F |0 \x9C\x49 |0 \x9C\x4A |0 \x9C\x4B |0 \x62\xBB |0 \x9C\x4C |0 \x9C\x4D |0 \x9C\x4E |0 \x9C\x4F |0 \x9C\x50 |0 \x57\x5F |0 \x9C\x51 |0 \x9C\x52 |0 \x52\xF8 |0 \x9C\x53 |0 \x9C\x54 |0 \x58\x9C |0 \x55\x87 |0 \x9C\x55 |0 \x9C\x56 |0 \x5A\x5F |0 \x9C\x57 |0 \x58\x71 |0 \x9C\x58 |0 \x9C\x59 |0 \x62\xB2 |0 \x9C\x5A |0 \x62\xB7 |0 \x62\xB8 |0 \x56\xE8 |0 \x9C\x5B |0 \x9C\x5C |0 \x9C\x5D |0 \x9C\x5E |0 \x9C\x5F |0 \x56\xCD |0 \x9C\x60 |0 \x50\xD3 |0 \x62\xB4 |0 \x51\x50 |0 \x62\xB5 |0 \x57\xCF |0 \x9C\x61 |0 \x4E\x61 |0 \x4B\x73 |0 \x9C\x62 |0 \x54\xF2 |0 \x4F\x47 |0 \x5B\x67 |0 \x55\x4C |0 \x4C\xA1 |0 \x62\xC9 |0 \x9C\x63 |0 \x9C\x64 |0 \x62\xCB |0 \x59\x64 |0 \x9C\x65 |0 \x9C\x66 |0 \x59\xB9 |0 \x9C\x67 |0 \x9C\x68 |0 \x4D\xAC |0 \x9C\x69 |0 \x9C\x6A |0 \x4D\xD3 |0 \x9C\x6B |0 \x9C\x6C |0 \x9C\x6D |0 \x9C\x6E |0 \x9C\x6F |0 \x9C\x70 |0 \x62\xC2 |0 \x4B\x8E |0 \x9C\x71 |0 \x9C\x72 |0 \x9C\x73 |0 \x5C\x6D |0 \x62\xBF |0 \x58\x9E |0 \x62\xBE |0 \x9C\x74 |0 \x9C\x75 |0 \x9C\x76 |0 \x51\x7C |0 \x56\xC9 |0 \x9C\x77 |0 \x9C\x78 |0 \x9C\x79 |0 \x9C\x7A |0 \x55\xE6 |0 \x9C\x7B |0 \x9C\x7C |0 \x9C\x7D |0 \x9C\x7E |0 \x52\xD6 |0 \x9C\x7F |0 \x56\xD3 |0 \x62\xC7 |0 \x9C\x81 |0 \x9C\x82 |0 \x9C\x83 |0 \x62\xC6 |0 \x62\xC0 |0 \x9C\x84 |0 \x62\xC3 |0 \x4B\x4D |0 \x9C\x85 |0 \x9C\x86 |0 \x5A\x79 |0 \x9C\x87 |0 \x62\xC5 |0 \x9C\x88 |0 \x9C\x89 |0 \x9C\x8A |0 \x9C\x8B |0 \x59\xF8 |0 \x4A\xE2 |0 \x9C\x8C |0 \x4E\x54 |0 \x9C\x8D |0 \x9C\x8E |0 \x55\x8F |0 \x9C\x8F |0 \x4A\xBD |0 \x9C\x90 |0 \x9C\x91 |0 \x9C\x92 |0 \x4E\x8D |0 \x9C\x93 |0 \x59\x6D |0 \x9C\x94 |0 \x56\xEC |0 \x67\x55 |0 \x9C\x95 |0 \x9C\x96 |0 \x9C\x97 |0 \x9C\x98 |0 \x9C\x99 |0 \x9C\x9A |0 \x9C\x9B |0 \x9C\x9C |0 \x54\x86 |0 \x9C\x9D |0 \x9C\x9E |0 \x9C\x9F |0 \x9C\xA0 |0 \x5A\xA7 |0 \x9C\xA1 |0 \x62\xCA |0 \x5C\x75 |0 \x62\xC1 |0 \x9C\xA2 |0 \x4F\x45 |0 \x62\xC4 |0 \x9C\xA3 |0 \x9C\xA4 |0 \x5A\x87 |0 \x9C\xA5 |0 \x62\xC8 |0 \x55\x99 |0 \x9C\xA6 |0 \x9C\xA7 |0 \x62\xBD |0 \x9C\xA8 |0 \x9C\xA9 |0 \x5A\x86 |0 \x9C\xAA |0 \x9C\xAB |0 \x54\x9F |0 \x4B\xC8 |0 \x9C\xAC |0 \x5A\xFB |0 \x49\xB2 |0 \x62\xD6 |0 \x9C\xAD |0 \x9C\xAE |0 \x9C\xAF |0 \x57\xC1 |0 \x9C\xB0 |0 \x62\xCC |0 \x9C\xB1 |0 \x57\xBB |0 \x9C\xB2 |0 \x4C\xDA |0 \x9C\xB3 |0 \x9C\xB4 |0 \x62\xD5 |0 \x9C\xB5 |0 \x50\x6A |0 \x9C\xB6 |0 \x9C\xB7 |0 \x9C\xB8 |0 \x5A\x6E |0 \x9C\xB9 |0 \x52\x8D |0 \x9C\xBA |0 \x9C\xBB |0 \x9C\xBC |0 \x9C\xBD |0 \x9C\xBE |0 \x9C\xBF |0 \x9C\xC0 |0 \x9C\xC1 |0 \x53\x68 |0 \x62\xD7 |0 \x9C\xC2 |0 \x9C\xC3 |0 \x9C\xC4 |0 \x9C\xC5 |0 \x9C\xC6 |0 \x9C\xC7 |0 \x9C\xC8 |0 \x9C\xC9 |0 \x57\x64 |0 \x62\xCE |0 \x9C\xCA |0 \x9C\xCB |0 \x9C\xCC |0 \x9C\xCD |0 \x62\xD3 |0 \x62\xD4 |0 \x9C\xCE |0 \x4D\xFD |0 \x9C\xCF |0 \x58\x87 |0 \x9C\xD0 |0 \x9C\xD1 |0 \x5B\x5F |0 \x9C\xD2 |0 \x9C\xD3 |0 \x9C\xD4 |0 \x62\xD1 |0 \x9C\xD5 |0 \x9C\xD6 |0 \x9C\xD7 |0 \x9C\xD8 |0 \x9C\xD9 |0 \x9C\xDA |0 \x9C\xDB |0 \x9C\xDC |0 \x9C\xDD |0 \x9C\xDE |0 \x9C\xDF |0 \x62\xCF |0 \x9C\xE0 |0 \x9C\xE1 |0 \x62\xCD |0 \x9C\xE2 |0 \x9C\xE3 |0 \x9C\xE4 |0 \x9C\xE5 |0 \x9C\xE6 |0 \x9C\xE7 |0 \x9C\xE8 |0 \x9C\xE9 |0 \x9C\xEA |0 \x9C\xEB |0 \x9C\xEC |0 \x9C\xED |0 \x9C\xEE |0 \x9C\xEF |0 \x9C\xF0 |0 \x57\x86 |0 \x55\xA9 |0 \x9C\xF1 |0 \x9C\xF2 |0 \x9C\xF3 |0 \x50\xA2 |0 \x9C\xF4 |0 \x4F\x46 |0 \x62\xD2 |0 \x9C\xF5 |0 \x9C\xF6 |0 \x4C\xC7 |0 \x9C\xF7 |0 \x9C\xF8 |0 \x9C\xF9 |0 \x9C\xFA |0 \x9C\xFB |0 \x62\xE6 |0 \x5A\xB3 |0 \x9C\xFC |0 \x9C\xFD |0 \x9D\x41 |0 \x9D\x42 |0 \x9D\x43 |0 \x9D\x44 |0 \x9D\x45 |0 \x62\xDA |0 \x9D\x46 |0 \x9D\x47 |0 \x9D\x48 |0 \x51\x90 |0 \x9D\x49 |0 \x9D\x4A |0 \x62\xE8 |0 \x9D\x4B |0 \x9D\x4C |0 \x59\xE6 |0 \x9D\x4D |0 \x9D\x4E |0 \x62\xDE |0 \x9D\x4F |0 \x62\xDF |0 \x9D\x50 |0 \x9D\x51 |0 \x58\x4A |0 \x9D\x52 |0 \x9D\x53 |0 \x9D\x54 |0 \x9D\x55 |0 \x56\x7D |0 \x9D\x56 |0 \x62\xD9 |0 \x62\xD0 |0 \x9D\x57 |0 \x62\xE4 |0 \x9D\x58 |0 \x54\xDB |0 \x62\xE2 |0 \x9D\x59 |0 \x9D\x5A |0 \x52\xE6 |0 \x62\xE1 |0 \x9D\x5B |0 \x62\xE0 |0 \x9D\x5C |0 \x9D\x5D |0 \x9D\x5E |0 \x4A\x9D |0 \x62\xE7 |0 \x9D\x5F |0 \x9D\x60 |0 \x9D\x61 |0 \x9D\x62 |0 \x4B\x82 |0 \x9D\x63 |0 \x9D\x64 |0 \x9D\x65 |0 \x5C\x6C |0 \x9D\x66 |0 \x9D\x67 |0 \x9D\x68 |0 \x62\xE5 |0 \x9D\x69 |0 \x4E\x4C |0 \x9D\x6A |0 \x5C\x72 |0 \x56\xCE |0 \x66\x99 |0 \x9D\x6B |0 \x62\xE3 |0 \x9D\x6C |0 \x9D\x6D |0 \x4D\x97 |0 \x9D\x6E |0 \x9D\x6F |0 \x9D\x70 |0 \x5B\xCC |0 \x62\xD8 |0 \x62\xDB |0 \x51\xF9 |0 \x62\xDD |0 \x9D\x71 |0 \x51\xCA |0 \x50\xC3 |0 \x51\xCF |0 \x9D\x72 |0 \x49\x96 |0 \x56\xB1 |0 \x9D\x73 |0 \x9D\x74 |0 \x9D\x75 |0 \x9D\x76 |0 \x9D\x77 |0 \x9D\x78 |0 \x9D\x79 |0 \x9D\x7A |0 \x9D\x7B |0 \x9D\x7C |0 \x4B\x6E |0 \x9D\x7D |0 \x9D\x7E |0 \x9D\x7F |0 \x9D\x81 |0 \x62\xEE |0 \x9D\x82 |0 \x9D\x83 |0 \x9D\x84 |0 \x9D\x85 |0 \x9D\x86 |0 \x9D\x87 |0 \x9D\x88 |0 \x9D\x89 |0 \x53\xAE |0 \x9D\x8A |0 \x9D\x8B |0 \x9D\x8C |0 \x53\xE0 |0 \x9D\x8D |0 \x9D\x8E |0 \x62\xF4 |0 \x9D\x8F |0 \x9D\x90 |0 \x9D\x91 |0 \x9D\x92 |0 \x9D\x93 |0 \x51\xA8 |0 \x9D\x94 |0 \x9D\x95 |0 \x9D\x96 |0 \x50\xEB |0 \x59\x7D |0 \x62\xED |0 \x9D\x97 |0 \x9D\x98 |0 \x9D\x99 |0 \x9D\x9A |0 \x9D\x9B |0 \x9D\x9C |0 \x9D\x9D |0 \x9D\x9E |0 \x9D\x9F |0 \x9D\xA0 |0 \x52\xAD |0 \x9D\xA1 |0 \x9D\xA2 |0 \x9D\xA3 |0 \x62\xEC |0 \x9D\xA4 |0 \x9D\xA5 |0 \x9D\xA6 |0 \x9D\xA7 |0 \x62\xF5 |0 \x62\xF3 |0 \x51\xFD |0 \x9D\xA8 |0 \x62\xDC |0 \x9D\xA9 |0 \x62\xEF |0 \x9D\xAA |0 \x55\xFD |0 \x9D\xAB |0 \x5B\x64 |0 \x9D\xAC |0 \x9D\xAD |0 \x62\xF0 |0 \x9D\xAE |0 \x9D\xAF |0 \x9D\xB0 |0 \x9D\xB1 |0 \x9D\xB2 |0 \x9D\xB3 |0 \x9D\xB4 |0 \x59\x9B |0 \x9D\xB5 |0 \x9D\xB6 |0 \x9D\xB7 |0 \x9D\xB8 |0 \x9D\xB9 |0 \x9D\xBA |0 \x9D\xBB |0 \x62\xEA |0 \x62\xEB |0 \x9D\xBC |0 \x9D\xBD |0 \x9D\xBE |0 \x62\xF1 |0 \x9D\xBF |0 \x57\xAA |0 \x9D\xC0 |0 \x9D\xC1 |0 \x9D\xC2 |0 \x9D\xC3 |0 \x9D\xC4 |0 \x9D\xC5 |0 \x9D\xC6 |0 \x9D\xC7 |0 \x9D\xC8 |0 \x9D\xC9 |0 \x53\x6B |0 \x9D\xCA |0 \x9D\xCB |0 \x9D\xCC |0 \x54\x51 |0 \x9D\xCD |0 \x51\xB9 |0 \x9D\xCE |0 \x9D\xCF |0 \x9D\xD0 |0 \x62\xE9 |0 \x9D\xD1 |0 \x9D\xD2 |0 \x9D\xD3 |0 \x51\x6A |0 \x9D\xD4 |0 \x9D\xD5 |0 \x9D\xD6 |0 \x9D\xD7 |0 \x9D\xD8 |0 \x9D\xD9 |0 \x56\xB5 |0 \x4A\x51 |0 \x9D\xDA |0 \x9D\xDB |0 \x9D\xDC |0 \x62\xFA |0 \x9D\xDD |0 \x62\xF2 |0 \x9D\xDE |0 \x9D\xDF |0 \x9D\xE0 |0 \x62\xF9 |0 \x9D\xE1 |0 \x62\xFC |0 \x9D\xE2 |0 \x62\xFB |0 \x9D\xE3 |0 \x9D\xE4 |0 \x9D\xE5 |0 \x9D\xE6 |0 \x9D\xE7 |0 \x9D\xE8 |0 \x9D\xE9 |0 \x4A\x6E |0 \x9D\xEA |0 \x9D\xEB |0 \x9D\xEC |0 \x4A\x5A |0 \x62\xF6 |0 \x9D\xED |0 \x9D\xEE |0 \x62\xF8 |0 \x62\xF7 |0 \x53\x8D |0 \x9D\xEF |0 \x9D\xF0 |0 \x9D\xF1 |0 \x9D\xF2 |0 \x9D\xF3 |0 \x9D\xF4 |0 \x9D\xF5 |0 \x9D\xF6 |0 \x9D\xF7 |0 \x9D\xF8 |0 \x9D\xF9 |0 \x9D\xFA |0 \x9D\xFB |0 \x50\xBC |0 \x9D\xFC |0 \x9D\xFD |0 \x9E\x41 |0 \x9E\x42 |0 \x5A\xE7 |0 \x9E\x43 |0 \x9E\x44 |0 \x9E\x45 |0 \x9E\x46 |0 \x9E\x47 |0 \x63\x42 |0 \x9E\x48 |0 \x9E\x49 |0 \x9E\x4A |0 \x9E\x4B |0 \x9E\x4C |0 \x9E\x4D |0 \x9E\x4E |0 \x9E\x4F |0 \x9E\x50 |0 \x9E\x51 |0 \x9E\x52 |0 \x48\xC3 |0 \x9E\x53 |0 \x9E\x54 |0 \x63\x44 |0 \x9E\x55 |0 \x9E\x56 |0 \x63\x43 |0 \x9E\x57 |0 \x9E\x58 |0 \x9E\x59 |0 \x9E\x5A |0 \x9E\x5B |0 \x9E\x5C |0 \x4E\xA3 |0 \x9E\x5D |0 \x63\x45 |0 \x9E\x5E |0 \x9E\x5F |0 \x9E\x60 |0 \x9E\x61 |0 \x9E\x62 |0 \x9E\x63 |0 \x63\x41 |0 \x9E\x64 |0 \x9E\x65 |0 \x9E\x66 |0 \x9E\x67 |0 \x9E\x68 |0 \x9E\x69 |0 \x9E\x6A |0 \x62\xFD |0 \x49\x95 |0 \x9E\x6B |0 \x9E\x6C |0 \x9E\x6D |0 \x9E\x6E |0 \x9E\x6F |0 \x9E\x70 |0 \x9E\x71 |0 \x9E\x72 |0 \x9E\x73 |0 \x9E\x74 |0 \x9E\x75 |0 \x63\x48 |0 \x9E\x76 |0 \x63\x49 |0 \x63\x46 |0 \x9E\x77 |0 \x9E\x78 |0 \x9E\x79 |0 \x9E\x7A |0 \x9E\x7B |0 \x9E\x7C |0 \x9E\x7D |0 \x9E\x7E |0 \x9E\x7F |0 \x9E\x81 |0 \x9E\x82 |0 \x9E\x83 |0 \x63\x47 |0 \x63\x4A |0 \x9E\x84 |0 \x9E\x85 |0 \x9E\x86 |0 \x9E\x87 |0 \x9E\x88 |0 \x9E\x89 |0 \x9E\x8A |0 \x9E\x8B |0 \x9E\x8C |0 \x9E\x8D |0 \x9E\x8E |0 \x9E\x8F |0 \x9E\x90 |0 \x9E\x91 |0 \x9E\x92 |0 \x9E\x93 |0 \x9E\x94 |0 \x9E\x95 |0 \x9E\x96 |0 \x9E\x97 |0 \x9E\x98 |0 \x9E\x99 |0 \x9E\x9A |0 \x9E\x9B |0 \x9E\x9C |0 \x9E\x9D |0 \x9E\x9E |0 \x9E\x9F |0 \x9E\xA0 |0 \x9E\xA1 |0 \x9E\xA2 |0 \x9E\xA3 |0 \x9E\xA4 |0 \x53\xD8 |0 \x9E\xA5 |0 \x9E\xA6 |0 \x9E\xA7 |0 \x9E\xA8 |0 \x9E\xA9 |0 \x9E\xAA |0 \x9E\xAB |0 \x9E\xAC |0 \x63\x4B |0 \x63\x4D |0 \x9E\xAD |0 \x9E\xAE |0 \x9E\xAF |0 \x9E\xB0 |0 \x9E\xB1 |0 \x9E\xB2 |0 \x9E\xB3 |0 \x63\x4C |0 \x9E\xB4 |0 \x9E\xB5 |0 \x9E\xB6 |0 \x9E\xB7 |0 \x9E\xB8 |0 \x9E\xB9 |0 \x9E\xBA |0 \x9E\xBB |0 \x9E\xBC |0 \x9E\xBD |0 \x9E\xBE |0 \x9E\xBF |0 \x9E\xC0 |0 \x9E\xC1 |0 \x9E\xC2 |0 \x9E\xC3 |0 \x9E\xC4 |0 \x63\x4F |0 \x9E\xC5 |0 \x9E\xC6 |0 \x9E\xC7 |0 \x63\x4E |0 \x9E\xC8 |0 \x9E\xC9 |0 \x9E\xCA |0 \x9E\xCB |0 \x9E\xCC |0 \x9E\xCD |0 \x9E\xCE |0 \x9E\xCF |0 \x9E\xD0 |0 \x9E\xD1 |0 \x9E\xD2 |0 \x9E\xD3 |0 \x9E\xD4 |0 \x9E\xD5 |0 \x9E\xD6 |0 \x9E\xD7 |0 \x9E\xD8 |0 \x9E\xD9 |0 \x4D\x81 |0 \x9E\xDA |0 \x9E\xDB |0 \x63\x50 |0 \x9E\xDC |0 \x9E\xDD |0 \x9E\xDE |0 \x9E\xDF |0 \x9E\xE0 |0 \x9E\xE1 |0 \x9E\xE2 |0 \x9E\xE3 |0 \x9E\xE4 |0 \x9E\xE5 |0 \x9E\xE6 |0 \x9E\xE7 |0 \x9E\xE8 |0 \x9E\xE9 |0 \x63\x51 |0 \x9E\xEA |0 \x9E\xEB |0 \x9E\xEC |0 \x9E\xED |0 \x9E\xEE |0 \x9E\xEF |0 \x9E\xF0 |0 \x9E\xF1 |0 \x9E\xF2 |0 \x9E\xF3 |0 \x9E\xF4 |0 \x9E\xF5 |0 \x4E\x91 |0 \x66\xE0 |0 \x52\x91 |0 \x9E\xF6 |0 \x4B\x66 |0 \x4E\x72 |0 \x9E\xF7 |0 \x9E\xF8 |0 \x9E\xF9 |0 \x9E\xFA |0 \x51\x8A |0 \x5A\xED |0 \x9E\xFB |0 \x4F\xC3 |0 \x9E\xFC |0 \x9E\xFD |0 \x9F\x41 |0 \x5C\x66 |0 \x9F\x42 |0 \x5A\xD5 |0 \x49\xD2 |0 \x66\xBD |0 \x9F\x43 |0 \x9F\x44 |0 \x9F\x45 |0 \x9F\x46 |0 \x65\xC0 |0 \x9F\x47 |0 \x9F\x48 |0 \x9F\x49 |0 \x51\xAE |0 \x4A\xB5 |0 \x9F\x4A |0 \x9F\x4B |0 \x9F\x4C |0 \x59\x77 |0 \x9F\x4D |0 \x9F\x4E |0 \x9F\x4F |0 \x4A\x54 |0 \x9F\x50 |0 \x54\xB1 |0 \x50\x5B |0 \x66\xBF |0 \x9F\x51 |0 \x9F\x52 |0 \x5B\xCA |0 \x9F\x53 |0 \x9F\x54 |0 \x66\xBE |0 \x66\xC0 |0 \x9F\x55 |0 \x9F\x56 |0 \x9F\x57 |0 \x9F\x58 |0 \x9F\x59 |0 \x9F\x5A |0 \x9F\x5B |0 \x9F\x5C |0 \x9F\x5D |0 \x9F\x5E |0 \x9F\x5F |0 \x9F\x60 |0 \x9F\x61 |0 \x66\xC4 |0 \x4F\xE5 |0 \x56\xBE |0 \x53\x7A |0 \x4F\xBB |0 \x9F\x62 |0 \x66\xC5 |0 \x9F\x63 |0 \x49\x9F |0 \x9F\x64 |0 \x9F\x65 |0 \x9F\x66 |0 \x66\xC3 |0 \x5B\x48 |0 \x4B\x84 |0 \x9F\x67 |0 \x66\xC1 |0 \x51\x56 |0 \x4A\x84 |0 \x9F\x68 |0 \x9F\x69 |0 \x66\xC2 |0 \x56\x58 |0 \x50\xC2 |0 \x56\xFD |0 \x9F\x6A |0 \x9F\x6B |0 \x9F\x6C |0 \x9F\x6D |0 \x51\x72 |0 \x9F\x6E |0 \x66\xC7 |0 \x9F\x6F |0 \x9F\x70 |0 \x9F\x71 |0 \x9F\x72 |0 \x9F\x73 |0 \x9F\x74 |0 \x9F\x75 |0 \x9F\x76 |0 \x9F\x77 |0 \x9F\x78 |0 \x9F\x79 |0 \x9F\x7A |0 \x9F\x7B |0 \x4D\xE5 |0 \x50\xD2 |0 \x9F\x7C |0 \x5B\xF1 |0 \x9F\x7D |0 \x9F\x7E |0 \x9F\x7F |0 \x59\x6C |0 \x9F\x81 |0 \x9F\x82 |0 \x9F\x83 |0 \x9F\x84 |0 \x50\x5E |0 \x9F\x85 |0 \x4C\x53 |0 \x55\x75 |0 \x66\xC6 |0 \x4E\x83 |0 \x9F\x86 |0 \x56\xCB |0 \x4F\x9E |0 \x54\xC7 |0 \x9F\x87 |0 \x58\x49 |0 \x9F\x88 |0 \x9F\x89 |0 \x9F\x8A |0 \x9F\x8B |0 \x9F\x8C |0 \x9F\x8D |0 \x9F\x8E |0 \x57\x8A |0 \x9F\x8F |0 \x53\x8C |0 \x9F\x90 |0 \x9F\x91 |0 \x9F\x92 |0 \x4C\x8A |0 \x9F\x93 |0 \x9F\x94 |0 \x9F\x95 |0 \x9F\x96 |0 \x9F\x97 |0 \x9F\x98 |0 \x9F\x99 |0 \x9F\x9A |0 \x9F\x9B |0 \x9F\x9C |0 \x9F\x9D |0 \x59\x69 |0 \x4D\xB7 |0 \x9F\x9E |0 \x9F\x9F |0 \x9F\xA0 |0 \x9F\xA1 |0 \x9F\xA2 |0 \x66\xC8 |0 \x9F\xA3 |0 \x9F\xA4 |0 \x66\xC9 |0 \x9F\xA5 |0 \x4E\x60 |0 \x66\xCA |0 \x9F\xA6 |0 \x66\xE1 |0 \x49\x5A |0 \x4C\x79 |0 \x9F\xA7 |0 \x9F\xA8 |0 \x9F\xA9 |0 \x9F\xAA |0 \x9F\xAB |0 \x9F\xAC |0 \x9F\xAD |0 \x9F\xAE |0 \x9F\xAF |0 \x9F\xB0 |0 \x9F\xB1 |0 \x4F\x59 |0 \x9F\xB2 |0 \x9F\xB3 |0 \x9F\xB4 |0 \x9F\xB5 |0 \x9F\xB6 |0 \x9F\xB7 |0 \x9F\xB8 |0 \x9F\xB9 |0 \x66\xCB |0 \x59\x87 |0 \x66\xCC |0 \x9F\xBA |0 \x9F\xBB |0 \x9F\xBC |0 \x9F\xBD |0 \x54\xBA |0 \x9F\xBE |0 \x9F\xBF |0 \x9F\xC0 |0 \x9F\xC1 |0 \x9F\xC2 |0 \x9F\xC3 |0 \x9F\xC4 |0 \x9F\xC5 |0 \x9F\xC6 |0 \x9F\xC7 |0 \x9F\xC8 |0 \x9F\xC9 |0 \x9F\xCA |0 \x9F\xCB |0 \x66\xD0 |0 \x9F\xCC |0 \x9F\xCD |0 \x9F\xCE |0 \x9F\xCF |0 \x66\xD2 |0 \x9F\xD0 |0 \x4E\x6D |0 \x9F\xD1 |0 \x4E\xE4 |0 \x9F\xD2 |0 \x9F\xD3 |0 \x9F\xD4 |0 \x9F\xD5 |0 \x9F\xD6 |0 \x9F\xD7 |0 \x9F\xD8 |0 \x9F\xD9 |0 \x9F\xDA |0 \x9F\xDB |0 \x9F\xDC |0 \x9F\xDD |0 \x9F\xDE |0 \x66\xCE |0 \x9F\xDF |0 \x55\x57 |0 \x9F\xE0 |0 \x9F\xE1 |0 \x9F\xE2 |0 \x9F\xE3 |0 \x9F\xE4 |0 \x52\x5A |0 \x9F\xE5 |0 \x66\xE2 |0 \x5B\x75 |0 \x66\xCF |0 \x9F\xE6 |0 \x9F\xE7 |0 \x9F\xE8 |0 \x9F\xE9 |0 \x9F\xEA |0 \x5B\xF2 |0 \x9F\xEB |0 \x9F\xEC |0 \x9F\xED |0 \x66\xD1 |0 \x66\xCD |0 \x9F\xEE |0 \x9F\xEF |0 \x9F\xF0 |0 \x9F\xF1 |0 \x66\xD3 |0 \x9F\xF2 |0 \x66\xD4 |0 \x9F\xF3 |0 \x9F\xF4 |0 \x55\x5F |0 \x9F\xF5 |0 \x9F\xF6 |0 \x9F\xF7 |0 \x9F\xF8 |0 \x9F\xF9 |0 \x9F\xFA |0 \x58\x48 |0 \x9F\xFB |0 \x9F\xFC |0 \x9F\xFD |0 \xA0\x41 |0 \xA0\x42 |0 \x58\xDB |0 \xA0\x43 |0 \xA0\x44 |0 \xA0\x45 |0 \xA0\x46 |0 \x59\x4C |0 \xA0\x47 |0 \xA0\x48 |0 \xA0\x49 |0 \xA0\x4A |0 \x54\xDA |0 \xA0\x4B |0 \xA0\x4C |0 \xA0\x4D |0 \x66\xD5 |0 \x57\xF4 |0 \xA0\x4E |0 \xA0\x4F |0 \xA0\x50 |0 \xA0\x51 |0 \xA0\x52 |0 \x55\xEB |0 \x66\xD9 |0 \xA0\x53 |0 \xA0\x54 |0 \xA0\x55 |0 \xA0\x56 |0 \xA0\x57 |0 \xA0\x58 |0 \xA0\x59 |0 \x66\xD8 |0 \xA0\x5A |0 \xA0\x5B |0 \xA0\x5C |0 \x48\xBD |0 \xA0\x5D |0 \xA0\x5E |0 \xA0\x5F |0 \xA0\x60 |0 \xA0\x61 |0 \xA0\x62 |0 \x66\xD6 |0 \xA0\x63 |0 \x66\xD7 |0 \xA0\x64 |0 \xA0\x65 |0 \xA0\x66 |0 \x66\xE3 |0 \xA0\x67 |0 \xA0\x68 |0 \xA0\x69 |0 \xA0\x6A |0 \xA0\x6B |0 \xA0\x6C |0 \xA0\x6D |0 \xA0\x6E |0 \xA0\x6F |0 \x54\xBB |0 \xA0\x70 |0 \xA0\x71 |0 \xA0\x72 |0 \xA0\x73 |0 \xA0\x74 |0 \xA0\x75 |0 \xA0\x76 |0 \xA0\x77 |0 \xA0\x78 |0 \xA0\x79 |0 \x51\x67 |0 \xA0\x7A |0 \xA0\x7B |0 \xA0\x7C |0 \xA0\x7D |0 \xA0\x7E |0 \x66\xDB |0 \x59\x81 |0 \xA0\x7F |0 \xA0\x81 |0 \xA0\x82 |0 \xA0\x83 |0 \xA0\x84 |0 \xA0\x85 |0 \xA0\x86 |0 \xA0\x87 |0 \xA0\x88 |0 \xA0\x89 |0 \x66\xDA |0 \xA0\x8A |0 \xA0\x8B |0 \xA0\x8C |0 \xA0\x8D |0 \x5A\xEE |0 \xA0\x8E |0 \x66\xDC |0 \xA0\x8F |0 \xA0\x90 |0 \xA0\x91 |0 \xA0\x92 |0 \xA0\x93 |0 \xA0\x94 |0 \x5E\x66 |0 \xA0\x95 |0 \xA0\x96 |0 \xA0\x97 |0 \xA0\x98 |0 \xA0\x99 |0 \xA0\x9A |0 \xA0\x9B |0 \xA0\x9C |0 \xA0\x9D |0 \xA0\x9E |0 \x66\xDD |0 \xA0\x9F |0 \xA0\xA0 |0 \xA0\xA1 |0 \xA0\xA2 |0 \xA0\xA3 |0 \xA0\xA4 |0 \xA0\xA5 |0 \xA0\xA6 |0 \xA0\xA7 |0 \xA0\xA8 |0 \xA0\xA9 |0 \xA0\xAA |0 \x49\x4C |0 \xA0\xAB |0 \xA0\xAC |0 \xA0\xAD |0 \xA0\xAE |0 \xA0\xAF |0 \xA0\xB0 |0 \xA0\xB1 |0 \xA0\xB2 |0 \xA0\xB3 |0 \xA0\xB4 |0 \xA0\xB5 |0 \xA0\xB6 |0 \xA0\xB7 |0 \xA0\xB8 |0 \xA0\xB9 |0 \xA0\xBA |0 \xA0\xBB |0 \xA0\xBC |0 \xA0\xBD |0 \xA0\xBE |0 \xA0\xBF |0 \xA0\xC0 |0 \x66\xDE |0 \xA0\xC1 |0 \xA0\xC2 |0 \xA0\xC3 |0 \xA0\xC4 |0 \xA0\xC5 |0 \xA0\xC6 |0 \xA0\xC7 |0 \xA0\xC8 |0 \xA0\xC9 |0 \xA0\xCA |0 \x66\xDF |0 \xA0\xCB |0 \x5C\x46 |0 \xA0\xCC |0 \x53\x60 |0 \xA0\xCD |0 \xA0\xCE |0 \xA0\xCF |0 \x66\x5C |0 \x48\xAD |0 \xA0\xD0 |0 \xA0\xD1 |0 \xA0\xD2 |0 \x4F\xF3 |0 \x4C\xB7 |0 \x59\xAE |0 \x48\xD5 |0 \x4B\x9A |0 \xA0\xD3 |0 \x5C\xB2 |0 \xA0\xD4 |0 \x56\x4C |0 \xA0\xD5 |0 \x62\x7D |0 \xA0\xD6 |0 \xA0\xD7 |0 \xA0\xD8 |0 \xA0\xD9 |0 \xA0\xDA |0 \xA0\xDB |0 \xA0\xDC |0 \x53\xAB |0 \x48\xE5 |0 \xA0\xDD |0 \xA0\xDE |0 \xA0\xDF |0 \x53\x66 |0 \x66\x59 |0 \xA0\xE0 |0 \xA0\xE1 |0 \xA0\xE2 |0 \xA0\xE3 |0 \x66\x5A |0 \xA0\xE4 |0 \xA0\xE5 |0 \xA0\xE6 |0 \x66\x5B |0 \xA0\xE7 |0 \xA0\xE8 |0 \x59\x60 |0 \xA0\xE9 |0 \x53\x43 |0 \xA0\xEA |0 \x65\xF1 |0 \xA0\xEB |0 \x52\xB1 |0 \xA0\xEC |0 \x52\xB4 |0 \x50\xCD |0 \xA0\xED |0 \xA0\xEE |0 \xA0\xEF |0 \x65\xF2 |0 \x52\xC0 |0 \xA0\xF0 |0 \x57\xEE |0 \xA0\xF1 |0 \xA0\xF2 |0 \xA0\xF3 |0 \xA0\xF4 |0 \x65\xEF |0 \x65\xF3 |0 \xA0\xF5 |0 \xA0\xF6 |0 \x55\x9D |0 \xA0\xF7 |0 \xA0\xF8 |0 \x54\x43 |0 \xA0\xF9 |0 \xA0\xFA |0 \xA0\xFB |0 \x56\xD7 |0 \x57\xFD |0 \xA0\xFC |0 \xA0\xFD |0 \xA1\x41 |0 \x65\xF4 |0 \x65\xF5 |0 \x58\x4C |0 \x50\xE6 |0 \xA1\x42 |0 \xA1\x43 |0 \x65\xF6 |0 \xA1\x44 |0 \xA1\x45 |0 \xA1\x46 |0 \xA1\x47 |0 \xA1\x48 |0 \x4B\xBE |0 \x65\xF7 |0 \xA1\x49 |0 \x65\xF8 |0 \xA1\x4A |0 \x65\xF9 |0 \xA1\x4B |0 \xA1\x4C |0 \x65\xFA |0 \xA1\x4D |0 \xA1\x4E |0 \xA1\x4F |0 \xA1\x50 |0 \xA1\x51 |0 \xA1\x52 |0 \xA1\x53 |0 \xA1\x54 |0 \xA1\x55 |0 \xA1\x56 |0 \xA1\x57 |0 \xA1\x58 |0 \x65\xF0 |0 \xA1\x59 |0 \xA1\x5A |0 \xA1\x5B |0 \xA1\x5C |0 \xA1\x5D |0 \xA1\x5E |0 \xA1\x5F |0 \xA1\x60 |0 \xA1\x61 |0 \xA1\x62 |0 \xA1\x63 |0 \xA1\x64 |0 \x54\xAD |0 \x61\x8C |0 \xA1\x65 |0 \x4C\x58 |0 \x61\x8D |0 \xA1\x66 |0 \xA1\x67 |0 \xA1\x68 |0 \x61\x8E |0 \xA1\x69 |0 \x5C\x54 |0 \x61\x8F |0 \x61\x90 |0 \x5A\x6C |0 \xA1\x6A |0 \xA1\x6B |0 \xA1\x6C |0 \xA1\x6D |0 \xA1\x6E |0 \xA1\x6F |0 \xA1\x70 |0 \x61\x92 |0 \x50\x92 |0 \x61\x91 |0 \x4B\x72 |0 \xA1\x71 |0 \xA1\x72 |0 \xA1\x73 |0 \x49\x57 |0 \xA1\x74 |0 \xA1\x75 |0 \xA1\x76 |0 \xA1\x77 |0 \x61\x94 |0 \x61\x93 |0 \xA1\x78 |0 \x4D\xFB |0 \xA1\x79 |0 \x61\x95 |0 \xA1\x7A |0 \xA1\x7B |0 \xA1\x7C |0 \xA1\x7D |0 \x4D\x57 |0 \xA1\x7E |0 \x4F\xD0 |0 \xA1\x7F |0 \xA1\x81 |0 \xA1\x82 |0 \xA1\x83 |0 \x52\xFB |0 \xA1\x84 |0 \x4D\xDC |0 \x4F\x66 |0 \xA1\x85 |0 \xA1\x86 |0 \xA1\x87 |0 \xA1\x88 |0 \xA1\x89 |0 \xA1\x8A |0 \x61\x96 |0 \x61\x98 |0 \xA1\x8B |0 \xA1\x8C |0 \x4B\xBF |0 \x58\x61 |0 \x55\xA7 |0 \x61\x97 |0 \x5B\x99 |0 \x5A\x9D |0 \x61\x99 |0 \x61\x9D |0 \x61\x9A |0 \xA1\x8D |0 \xA1\x8E |0 \x61\x9B |0 \x50\xE9 |0 \xA1\x8F |0 \x61\x9F |0 \x61\xA0 |0 \x50\xC6 |0 \xA1\x90 |0 \xA1\x91 |0 \xA1\x92 |0 \xA1\x93 |0 \x61\x9C |0 \xA1\x94 |0 \x61\x9E |0 \xA1\x95 |0 \xA1\x96 |0 \xA1\x97 |0 \xA1\x98 |0 \xA1\x99 |0 \xA1\x9A |0 \x61\xA4 |0 \xA1\x9B |0 \xA1\x9C |0 \xA1\x9D |0 \x51\x74 |0 \xA1\x9E |0 \xA1\x9F |0 \xA1\xA0 |0 \xA1\xA1 |0 \x61\xA2 |0 \xA1\xA2 |0 \x61\xA7 |0 \x49\xFD |0 \x61\xA1 |0 \xA1\xA3 |0 \xA1\xA4 |0 \xA1\xA5 |0 \x52\x6D |0 \x49\xC1 |0 \x61\xA6 |0 \x61\xA5 |0 \xA1\xA6 |0 \xA1\xA7 |0 \x61\xA3 |0 \x61\xA8 |0 \xA1\xA8 |0 \xA1\xA9 |0 \x61\xAA |0 \xA1\xAA |0 \xA1\xAB |0 \xA1\xAC |0 \x58\xC8 |0 \x5B\xEC |0 \x52\x48 |0 \x61\xAB |0 \xA1\xAD |0 \x58\x77 |0 \xA1\xAE |0 \xA1\xAF |0 \x61\xAD |0 \xA1\xB0 |0 \xA1\xB1 |0 \x4D\xEE |0 \xA1\xB2 |0 \xA1\xB3 |0 \x65\x81 |0 \x61\xAC |0 \x61\xA9 |0 \xA1\xB4 |0 \xA1\xB5 |0 \xA1\xB6 |0 \xA1\xB7 |0 \x4E\x4B |0 \x5A\xB2 |0 \xA1\xB8 |0 \xA1\xB9 |0 \xA1\xBA |0 \xA1\xBB |0 \xA1\xBC |0 \xA1\xBD |0 \xA1\xBE |0 \xA1\xBF |0 \xA1\xC0 |0 \xA1\xC1 |0 \xA1\xC2 |0 \xA1\xC3 |0 \xA1\xC4 |0 \x61\xAF |0 \xA1\xC5 |0 \xA1\xC6 |0 \x61\xAE |0 \xA1\xC7 |0 \x65\x82 |0 \xA1\xC8 |0 \xA1\xC9 |0 \xA1\xCA |0 \xA1\xCB |0 \x61\xB0 |0 \xA1\xCC |0 \xA1\xCD |0 \xA1\xCE |0 \xA1\xCF |0 \xA1\xD0 |0 \xA1\xD1 |0 \xA1\xD2 |0 \xA1\xD3 |0 \x61\xB1 |0 \xA1\xD4 |0 \xA1\xD5 |0 \xA1\xD6 |0 \xA1\xD7 |0 \xA1\xD8 |0 \xA1\xD9 |0 \xA1\xDA |0 \xA1\xDB |0 \xA1\xDC |0 \xA1\xDD |0 \xA1\xDE |0 \x61\xB2 |0 \x56\xA0 |0 \xA1\xDF |0 \x61\xB3 |0 \xA1\xE0 |0 \xA1\xE1 |0 \xA1\xE2 |0 \xA1\xE3 |0 \xA1\xE4 |0 \xA1\xE5 |0 \xA1\xE6 |0 \xA1\xE7 |0 \xA1\xE8 |0 \xA1\xE9 |0 \xA1\xEA |0 \xA1\xEB |0 \xA1\xEC |0 \xA1\xED |0 \x61\xB4 |0 \xA1\xEE |0 \xA1\xEF |0 \xA1\xF0 |0 \xA1\xF1 |0 \xA1\xF2 |0 \x58\xFD |0 \xA1\xF3 |0 \xA1\xF4 |0 \x51\xC9 |0 \xA1\xF5 |0 \x5A\x92 |0 \xA1\xF6 |0 \x57\x96 |0 \xA1\xF7 |0 \xA1\xF8 |0 \x64\x81 |0 \xA1\xF9 |0 \xA1\xFA |0 \x64\x82 |0 \xA1\xFB |0 \xA1\xFC |0 \xA1\xFD |0 \xA2\x41 |0 \x4F\xC0 |0 \xA2\x42 |0 \xA2\x43 |0 \xA2\x44 |0 \xA2\x45 |0 \x51\xE9 |0 \xA2\x46 |0 \xA2\x47 |0 \xA2\x48 |0 \x64\x85 |0 \xA2\x49 |0 \xA2\x4A |0 \x64\x84 |0 \xA2\x4B |0 \xA2\x4C |0 \xA2\x4D |0 \xA2\x4E |0 \xA2\x4F |0 \xA2\x50 |0 \x57\x87 |0 \xA2\x51 |0 \x52\x55 |0 \xA2\x52 |0 \xA2\x53 |0 \x64\x83 |0 \x4E\x57 |0 \x58\x76 |0 \xA2\x54 |0 \x51\x82 |0 \x64\x8A |0 \xA2\x55 |0 \xA2\x56 |0 \xA2\x57 |0 \x64\x89 |0 \xA2\x58 |0 \xA2\x59 |0 \x64\x95 |0 \x49\xA2 |0 \xA2\x5A |0 \xA2\x5B |0 \xA2\x5C |0 \xA2\x5D |0 \x64\x8B |0 \xA2\x5E |0 \x64\x87 |0 \xA2\x5F |0 \xA2\x60 |0 \xA2\x61 |0 \xA2\x62 |0 \xA2\x63 |0 \x64\x8D |0 \x64\x8C |0 \x55\x5A |0 \xA2\x64 |0 \xA2\x65 |0 \x5B\x85 |0 \xA2\x66 |0 \x64\x86 |0 \x4C\x49 |0 \x64\x88 |0 \xA2\x67 |0 \xA2\x68 |0 \xA2\x69 |0 \xA2\x6A |0 \xA2\x6B |0 \xA2\x6C |0 \xA2\x6D |0 \x64\x8F |0 \xA2\x6E |0 \xA2\x6F |0 \xA2\x70 |0 \xA2\x71 |0 \x64\x94 |0 \xA2\x72 |0 \x5B\xE8 |0 \xA2\x73 |0 \xA2\x74 |0 \xA2\x75 |0 \xA2\x76 |0 \x64\x8E |0 \xA2\x77 |0 \x64\x93 |0 \xA2\x78 |0 \x64\x92 |0 \xA2\x79 |0 \xA2\x7A |0 \xA2\x7B |0 \x48\xDF |0 \xA2\x7C |0 \xA2\x7D |0 \xA2\x7E |0 \xA2\x7F |0 \x64\x96 |0 \xA2\x81 |0 \xA2\x82 |0 \xA2\x83 |0 \xA2\x84 |0 \xA2\x85 |0 \xA2\x86 |0 \xA2\x87 |0 \xA2\x88 |0 \xA2\x89 |0 \xA2\x8A |0 \xA2\x8B |0 \xA2\x8C |0 \xA2\x8D |0 \xA2\x8E |0 \xA2\x8F |0 \xA2\x90 |0 \x54\x93 |0 \xA2\x91 |0 \x50\xC4 |0 \x50\xEC |0 \xA2\x92 |0 \xA2\x93 |0 \x51\x91 |0 \x64\x91 |0 \xA2\x94 |0 \xA2\x95 |0 \xA2\x96 |0 \xA2\x97 |0 \x64\x97 |0 \x56\x97 |0 \xA2\x98 |0 \xA2\x99 |0 \xA2\x9A |0 \xA2\x9B |0 \xA2\x9C |0 \xA2\x9D |0 \xA2\x9E |0 \xA2\x9F |0 \xA2\xA0 |0 \x64\xA1 |0 \x64\xA0 |0 \xA2\xA1 |0 \xA2\xA2 |0 \xA2\xA3 |0 \xA2\xA4 |0 \xA2\xA5 |0 \xA2\xA6 |0 \x5C\x61 |0 \xA2\xA7 |0 \xA2\xA8 |0 \x64\x9B |0 \x64\x9A |0 \xA2\xA9 |0 \x64\x9C |0 \xA2\xAA |0 \x64\x98 |0 \xA2\xAB |0 \x64\x9F |0 \xA2\xAC |0 \x64\x9E |0 \xA2\xAD |0 \x64\x9D |0 \xA2\xAE |0 \xA2\xAF |0 \x51\x75 |0 \x54\x79 |0 \x53\x9E |0 \x53\x63 |0 \xA2\xB0 |0 \xA2\xB1 |0 \xA2\xB2 |0 \xA2\xB3 |0 \xA2\xB4 |0 \x54\x8E |0 \xA2\xB5 |0 \xA2\xB6 |0 \xA2\xB7 |0 \xA2\xB8 |0 \x64\xA2 |0 \xA2\xB9 |0 \xA2\xBA |0 \xA2\xBB |0 \xA2\xBC |0 \xA2\xBD |0 \xA2\xBE |0 \xA2\xBF |0 \xA2\xC0 |0 \xA2\xC1 |0 \xA2\xC2 |0 \xA2\xC3 |0 \xA2\xC4 |0 \xA2\xC5 |0 \xA2\xC6 |0 \xA2\xC7 |0 \xA2\xC8 |0 \xA2\xC9 |0 \xA2\xCA |0 \xA2\xCB |0 \x64\xA5 |0 \xA2\xCC |0 \x64\xA4 |0 \xA2\xCD |0 \x64\xA6 |0 \x4D\xF6 |0 \x64\x99 |0 \x64\xA3 |0 \xA2\xCE |0 \x54\xEF |0 \x55\x4A |0 \xA2\xCF |0 \xA2\xD0 |0 \xA2\xD1 |0 \xA2\xD2 |0 \xA2\xD3 |0 \xA2\xD4 |0 \xA2\xD5 |0 \xA2\xD6 |0 \xA2\xD7 |0 \xA2\xD8 |0 \xA2\xD9 |0 \xA2\xDA |0 \xA2\xDB |0 \x64\xA8 |0 \xA2\xDC |0 \xA2\xDD |0 \x4D\x86 |0 \xA2\xDE |0 \xA2\xDF |0 \xA2\xE0 |0 \xA2\xE1 |0 \xA2\xE2 |0 \x59\x9F |0 \x64\xA7 |0 \xA2\xE3 |0 \xA2\xE4 |0 \xA2\xE5 |0 \xA2\xE6 |0 \xA2\xE7 |0 \xA2\xE8 |0 \x64\xA9 |0 \xA2\xE9 |0 \x64\xAC |0 \x64\xAD |0 \xA2\xEA |0 \x51\x47 |0 \xA2\xEB |0 \xA2\xEC |0 \xA2\xED |0 \x64\xAE |0 \xA2\xEE |0 \xA2\xEF |0 \xA2\xF0 |0 \x64\xAF |0 \xA2\xF1 |0 \xA2\xF2 |0 \x64\xAB |0 \xA2\xF3 |0 \x64\xB3 |0 \xA2\xF4 |0 \xA2\xF5 |0 \xA2\xF6 |0 \xA2\xF7 |0 \xA2\xF8 |0 \xA2\xF9 |0 \xA2\xFA |0 \xA2\xFB |0 \xA2\xFC |0 \xA2\xFD |0 \xA3\x41 |0 \x64\xAA |0 \xA3\x42 |0 \x64\xB0 |0 \xA3\x43 |0 \xA3\x44 |0 \xA3\x45 |0 \xA3\x46 |0 \xA3\x47 |0 \xA3\x48 |0 \xA3\x49 |0 \xA3\x4A |0 \x64\xB4 |0 \x64\xB1 |0 \x64\xB2 |0 \xA3\x4B |0 \xA3\x4C |0 \xA3\x4D |0 \xA3\x4E |0 \xA3\x4F |0 \xA3\x50 |0 \xA3\x51 |0 \xA3\x52 |0 \xA3\x53 |0 \xA3\x54 |0 \xA3\x55 |0 \xA3\x56 |0 \xA3\x57 |0 \xA3\x58 |0 \xA3\x59 |0 \xA3\x5A |0 \x64\xB6 |0 \xA3\x5B |0 \xA3\x5C |0 \xA3\x5D |0 \xA3\x5E |0 \xA3\x5F |0 \xA3\x60 |0 \xA3\x61 |0 \xA3\x62 |0 \xA3\x63 |0 \xA3\x64 |0 \xA3\x65 |0 \xA3\x66 |0 \xA3\x67 |0 \xA3\x68 |0 \xA3\x69 |0 \xA3\x6A |0 \xA3\x6B |0 \xA3\x6C |0 \xA3\x6D |0 \xA3\x6E |0 \xA3\x6F |0 \xA3\x70 |0 \xA3\x71 |0 \x64\xB5 |0 \xA3\x72 |0 \xA3\x73 |0 \xA3\x74 |0 \xA3\x75 |0 \xA3\x76 |0 \xA3\x77 |0 \xA3\x78 |0 \xA3\x79 |0 \xA3\x7A |0 \x4D\x6F |0 \xA3\x7B |0 \x68\xAB |0 \xA3\x7C |0 \x68\xAC |0 \xA3\x7D |0 \x53\xAF |0 \x48\xE9 |0 \x54\xBE |0 \xA3\x7E |0 \x57\x7F |0 \xA3\x7F |0 \xA3\x81 |0 \xA3\x82 |0 \xA3\x83 |0 \xA3\x84 |0 \xA3\x85 |0 \xA3\x86 |0 \x57\xCC |0 \x65\xB0 |0 \xA3\x87 |0 \xA3\x88 |0 \xA3\x89 |0 \xA3\x8A |0 \x65\xB1 |0 \xA3\x8B |0 \x53\xBE |0 \x4A\xC8 |0 \xA3\x8C |0 \xA3\x8D |0 \xA3\x8E |0 \xA3\x8F |0 \xA3\x90 |0 \xA3\x91 |0 \xA3\x92 |0 \x65\xB2 |0 \xA3\x93 |0 \xA3\x94 |0 \xA3\x95 |0 \xA3\x96 |0 \x5B\x88 |0 \xA3\x97 |0 \xA3\x98 |0 \xA3\x99 |0 \xA3\x9A |0 \xA3\x9B |0 \xA3\x9C |0 \xA3\x9D |0 \xA3\x9E |0 \x5F\x9A |0 \xA3\x9F |0 \x65\xB3 |0 \xA3\xA0 |0 \x65\xB4 |0 \xA3\xA1 |0 \x65\xB5 |0 \xA3\xA2 |0 \xA3\xA3 |0 \xA3\xA4 |0 \xA3\xA5 |0 \x4C\xC9 |0 \x60\x50 |0 \x55\x96 |0 \xA3\xA6 |0 \x56\xEF |0 \xA3\xA7 |0 \xA3\xA8 |0 \x55\x9B |0 \xA3\xA9 |0 \xA3\xAA |0 \xA3\xAB |0 \xA3\xAC |0 \xA3\xAD |0 \x55\x9C |0 \xA3\xAE |0 \xA3\xAF |0 \x5A\x63 |0 \x56\x46 |0 \xA3\xB0 |0 \x4C\xA5 |0 \x68\xAD |0 \x49\x62 |0 \xA3\xB1 |0 \x63\x58 |0 \x56\xEE |0 \x5A\x69 |0 \x4E\xD6 |0 \x55\x8B |0 \xA3\xB2 |0 \x4B\x88 |0 \xA3\xB3 |0 \x52\xCF |0 \x4B\x8A |0 \xA3\xB4 |0 \x67\xAD |0 \x4E\x4D |0 \xA3\xB5 |0 \xA3\xB6 |0 \x64\x7E |0 \xA3\xB7 |0 \x67\xAE |0 \xA3\xB8 |0 \xA3\xB9 |0 \xA3\xBA |0 \xA3\xBB |0 \x4A\x49 |0 \xA3\xBC |0 \xA3\xBD |0 \x67\xB1 |0 \xA3\xBE |0 \xA3\xBF |0 \x67\xB0 |0 \x4F\x88 |0 \xA3\xC0 |0 \x67\xAF |0 \x57\xB6 |0 \xA3\xC1 |0 \xA3\xC2 |0 \xA3\xC3 |0 \xA3\xC4 |0 \x53\x6F |0 \xA3\xC5 |0 \xA3\xC6 |0 \xA3\xC7 |0 \xA3\xC8 |0 \x51\x95 |0 \x5E\x6E |0 \x67\xB2 |0 \x58\xF2 |0 \xA3\xC9 |0 \xA3\xCA |0 \xA3\xCB |0 \xA3\xCC |0 \xA3\xCD |0 \xA3\xCE |0 \xA3\xCF |0 \xA3\xD0 |0 \x51\xD3 |0 \x53\xE7 |0 \xA3\xD1 |0 \xA3\xD2 |0 \xA3\xD3 |0 \x4C\x4C |0 \xA3\xD4 |0 \xA3\xD5 |0 \xA3\xD6 |0 \xA3\xD7 |0 \xA3\xD8 |0 \xA3\xD9 |0 \xA3\xDA |0 \x67\xB3 |0 \xA3\xDB |0 \x4A\x8C |0 \xA3\xDC |0 \xA3\xDD |0 \xA3\xDE |0 \x4E\x9C |0 \x67\xB4 |0 \xA3\xDF |0 \xA3\xE0 |0 \xA3\xE1 |0 \xA3\xE2 |0 \xA3\xE3 |0 \x64\x7C |0 \xA3\xE4 |0 \xA3\xE5 |0 \xA3\xE6 |0 \x67\xB5 |0 \xA3\xE7 |0 \xA3\xE8 |0 \x4F\x4E |0 \xA3\xE9 |0 \xA3\xEA |0 \xA3\xEB |0 \xA3\xEC |0 \x69\x83 |0 \xA3\xED |0 \xA3\xEE |0 \xA3\xEF |0 \x55\xE7 |0 \xA3\xF0 |0 \x59\xC8 |0 \x68\xD9 |0 \xA3\xF1 |0 \x68\xDA |0 \xA3\xF2 |0 \x68\xDB |0 \x51\x66 |0 \xA3\xF3 |0 \x4C\xEC |0 \x4F\xCD |0 \xA3\xF4 |0 \xA3\xF5 |0 \x68\xDD |0 \xA3\xF6 |0 \x53\x51 |0 \x68\xDC |0 \x59\x92 |0 \xA3\xF7 |0 \x68\xDF |0 \x48\xCB |0 \x4F\x8B |0 \xA3\xF8 |0 \xA3\xF9 |0 \xA3\xFA |0 \xA3\xFB |0 \xA3\xFC |0 \x59\xDE |0 \x68\xDE |0 \xA3\xFD |0 \x4A\xAE |0 \x4C\x89 |0 \x68\xE5 |0 \x68\xE4 |0 \x53\xA2 |0 \x68\xE0 |0 \x68\xE1 |0 \x4A\xC2 |0 \xA4\x41 |0 \xA4\x42 |0 \x68\xE2 |0 \x5B\x8F |0 \xA4\x43 |0 \xA4\x44 |0 \x56\xDA |0 \x4F\xD1 |0 \x4E\xB1 |0 \xA4\x45 |0 \xA4\x46 |0 \xA4\x47 |0 \x68\xE7 |0 \x68\xE6 |0 \x68\xE3 |0 \x49\xA0 |0 \xA4\x48 |0 \x5B\xA1 |0 \x5A\x58 |0 \x4F\xB6 |0 \x54\xAB |0 \xA4\x49 |0 \xA4\x4A |0 \x68\xE9 |0 \xA4\x4B |0 \xA4\x4C |0 \xA4\x4D |0 \xA4\x4E |0 \x59\x98 |0 \xA4\x4F |0 \x5B\xCB |0 \x4D\xDA |0 \x68\xE8 |0 \xA4\x50 |0 \x4B\xBA |0 \xA4\x51 |0 \xA4\x52 |0 \x57\x54 |0 \xA4\x53 |0 \xA4\x54 |0 \x53\xA5 |0 \xA4\x55 |0 \xA4\x56 |0 \xA4\x57 |0 \x51\x41 |0 \x68\xEA |0 \x68\xED |0 \xA4\x58 |0 \x68\xEC |0 \x68\xEF |0 \x68\xEB |0 \xA4\x59 |0 \x4E\x5E |0 \x68\xEE |0 \xA4\x5A |0 \xA4\x5B |0 \xA4\x5C |0 \xA4\x5D |0 \x56\xB4 |0 \x68\xF1 |0 \xA4\x5E |0 \xA4\x5F |0 \x4A\x75 |0 \xA4\x60 |0 \xA4\x61 |0 \xA4\x62 |0 \xA4\x63 |0 \x49\x74 |0 \xA4\x64 |0 \xA4\x65 |0 \x68\xF2 |0 \xA4\x66 |0 \xA4\x67 |0 \x68\xF3 |0 \x68\xF5 |0 \x4A\xE0 |0 \xA4\x68 |0 \x68\xF0 |0 \xA4\x69 |0 \x68\xF6 |0 \xA4\x6A |0 \xA4\x6B |0 \xA4\x6C |0 \xA4\x6D |0 \x68\xF9 |0 \xA4\x6E |0 \x68\xF7 |0 \xA4\x6F |0 \xA4\x70 |0 \xA4\x71 |0 \x68\xF4 |0 \xA4\x72 |0 \xA4\x73 |0 \xA4\x74 |0 \xA4\x75 |0 \x68\xFC |0 \xA4\x76 |0 \x68\xF8 |0 \x68\xFB |0 \x68\xFD |0 \xA4\x77 |0 \x69\x41 |0 \xA4\x78 |0 \xA4\x79 |0 \xA4\x7A |0 \x57\xC0 |0 \x69\x44 |0 \xA4\x7B |0 \x69\x43 |0 \xA4\x7C |0 \x51\x97 |0 \x68\xFA |0 \x55\xDC |0 \xA4\x7D |0 \xA4\x7E |0 \x4A\xF0 |0 \x49\x92 |0 \x56\xB0 |0 \xA4\x7F |0 \x69\x46 |0 \xA4\x81 |0 \xA4\x82 |0 \x69\x47 |0 \xA4\x83 |0 \xA4\x84 |0 \x69\x4C |0 \x5B\x6E |0 \x69\x49 |0 \xA4\x85 |0 \xA4\x86 |0 \x54\xB2 |0 \xA4\x87 |0 \xA4\x88 |0 \xA4\x89 |0 \x69\x42 |0 \xA4\x8A |0 \x69\x4B |0 \x69\x48 |0 \x69\x45 |0 \xA4\x8B |0 \xA4\x8C |0 \x69\x4A |0 \xA4\x8D |0 \xA4\x8E |0 \xA4\x8F |0 \xA4\x90 |0 \xA4\x91 |0 \xA4\x92 |0 \xA4\x93 |0 \xA4\x94 |0 \x48\xA8 |0 \x69\x4D |0 \xA4\x95 |0 \xA4\x96 |0 \xA4\x97 |0 \xA4\x98 |0 \xA4\x99 |0 \xA4\x9A |0 \x69\x4F |0 \xA4\x9B |0 \x69\x51 |0 \xA4\x9C |0 \xA4\x9D |0 \xA4\x9E |0 \xA4\x9F |0 \xA4\xA0 |0 \x69\x50 |0 \xA4\xA1 |0 \x69\x4E |0 \xA4\xA2 |0 \xA4\xA3 |0 \xA4\xA4 |0 \xA4\xA5 |0 \x59\x42 |0 \xA4\xA6 |0 \xA4\xA7 |0 \xA4\xA8 |0 \xA4\xA9 |0 \xA4\xAA |0 \xA4\xAB |0 \xA4\xAC |0 \x69\x52 |0 \xA4\xAD |0 \xA4\xAE |0 \xA4\xAF |0 \x69\x53 |0 \xA4\xB0 |0 \xA4\xB1 |0 \xA4\xB2 |0 \xA4\xB3 |0 \xA4\xB4 |0 \xA4\xB5 |0 \xA4\xB6 |0 \xA4\xB7 |0 \x4D\x90 |0 \xA4\xB8 |0 \xA4\xB9 |0 \x4B\x67 |0 \xA4\xBA |0 \x48\xD6 |0 \x48\xD8 |0 \xA4\xBB |0 \xA4\xBC |0 \xA4\xBD |0 \x5A\xEC |0 \xA4\xBE |0 \x4B\x64 |0 \xA4\xBF |0 \x4F\x74 |0 \x4E\x6A |0 \x68\xA6 |0 \xA4\xC0 |0 \xA4\xC1 |0 \x4C\xDD |0 \xA4\xC2 |0 \xA4\xC3 |0 \x68\xA7 |0 \xA4\xC4 |0 \xA4\xC5 |0 \x48\xA7 |0 \xA4\xC6 |0 \x68\xA8 |0 \xA4\xC7 |0 \xA4\xC8 |0 \x57\x8F |0 \xA4\xC9 |0 \xA4\xCA |0 \x68\xA9 |0 \xA4\xCB |0 \xA4\xCC |0 \xA4\xCD |0 \xA4\xCE |0 \xA4\xCF |0 \xA4\xD0 |0 \xA4\xD1 |0 \xA4\xD2 |0 \xA4\xD3 |0 \xA4\xD4 |0 \x68\xAA |0 \xA4\xD5 |0 \xA4\xD6 |0 \xA4\xD7 |0 \xA4\xD8 |0 \xA4\xD9 |0 \xA4\xDA |0 \xA4\xDB |0 \xA4\xDC |0 \xA4\xDD |0 \x53\xA3 |0 \xA4\xDE |0 \xA4\xDF |0 \x5B\xE4 |0 \x69\x85 |0 \xA4\xE0 |0 \x69\x86 |0 \xA4\xE1 |0 \xA4\xE2 |0 \xA4\xE3 |0 \xA4\xE4 |0 \xA4\xE5 |0 \xA4\xE6 |0 \xA4\xE7 |0 \xA4\xE8 |0 \xA4\xE9 |0 \xA4\xEA |0 \x52\x94 |0 \xA4\xEB |0 \xA4\xEC |0 \x5A\x7B |0 \xA4\xED |0 \xA4\xEE |0 \x5B\xD0 |0 \x53\x89 |0 \xA4\xEF |0 \x5A\x4F |0 \xA4\xF0 |0 \x59\xE5 |0 \xA4\xF1 |0 \xA4\xF2 |0 \x67\xC0 |0 \x48\xBA |0 \x5B\x55 |0 \x59\x6E |0 \x4E\xDF |0 \x4D\xCF |0 \xA4\xF3 |0 \x50\x99 |0 \xA4\xF4 |0 \x4C\xC6 |0 \x4B\x61 |0 \x53\x6C |0 \xA4\xF5 |0 \xA4\xF6 |0 \x55\xA1 |0 \xA4\xF7 |0 \xA4\xF8 |0 \xA4\xF9 |0 \x52\x6B |0 \xA4\xFA |0 \xA4\xFB |0 \xA4\xFC |0 \xA4\xFD |0 \xA5\x41 |0 \x67\xC1 |0 \xA5\x42 |0 \xA5\x43 |0 \xA5\x44 |0 \xA5\x45 |0 \xA5\x46 |0 \xA5\x47 |0 \xA5\x48 |0 \xA5\x49 |0 \x52\xBE |0 \x4B\xA1 |0 \xA5\x4A |0 \x67\x8D |0 \x52\x44 |0 \xA5\x4B |0 \x5B\xB0 |0 \xA5\x4C |0 \xA5\x4D |0 \xA5\x4E |0 \x58\x81 |0 \x67\x90 |0 \xA5\x4F |0 \xA5\x50 |0 \x53\x6E |0 \xA5\x51 |0 \x4B\xDB |0 \xA5\x52 |0 \xA5\x53 |0 \x55\xA0 |0 \xA5\x54 |0 \xA5\x55 |0 \x67\x8E |0 \xA5\x56 |0 \xA5\x57 |0 \x67\x91 |0 \x67\x92 |0 \x52\x5C |0 \xA5\x58 |0 \x50\x54 |0 \xA5\x59 |0 \x67\x8F |0 \xA5\x5A |0 \xA5\x5B |0 \xA5\x5C |0 \xA5\x5D |0 \xA5\x5E |0 \xA5\x5F |0 \xA5\x60 |0 \xA5\x61 |0 \xA5\x62 |0 \xA5\x63 |0 \xA5\x64 |0 \x67\x95 |0 \x67\x93 |0 \xA5\x65 |0 \xA5\x66 |0 \xA5\x67 |0 \xA5\x68 |0 \x5B\x87 |0 \x52\x7F |0 \xA5\x69 |0 \x67\x94 |0 \xA5\x6A |0 \xA5\x6B |0 \xA5\x6C |0 \x67\x97 |0 \xA5\x6D |0 \x5B\x43 |0 \x59\x43 |0 \xA5\x6E |0 \xA5\x6F |0 \xA5\x70 |0 \x67\x96 |0 \xA5\x71 |0 \x52\x70 |0 \xA5\x72 |0 \xA5\x73 |0 \xA5\x74 |0 \xA5\x75 |0 \xA5\x76 |0 \x67\x98 |0 \x50\x95 |0 \x4F\xEB |0 \x67\x99 |0 \xA5\x77 |0 \x56\xF6 |0 \xA5\x78 |0 \x59\x7B |0 \xA5\x79 |0 \xA5\x7A |0 \xA5\x7B |0 \x5C\x65 |0 \x5B\x97 |0 \xA5\x7C |0 \x67\x9D |0 \xA5\x7D |0 \xA5\x7E |0 \xA5\x7F |0 \x67\x9C |0 \xA5\x81 |0 \xA5\x82 |0 \xA5\x83 |0 \xA5\x84 |0 \xA5\x85 |0 \xA5\x86 |0 \xA5\x87 |0 \xA5\x88 |0 \x67\x9A |0 \x67\x9B |0 \xA5\x89 |0 \xA5\x8A |0 \xA5\x8B |0 \xA5\x8C |0 \xA5\x8D |0 \xA5\x8E |0 \xA5\x8F |0 \xA5\x90 |0 \x67\x9E |0 \x4F\xA5 |0 \xA5\x91 |0 \xA5\x92 |0 \xA5\x93 |0 \xA5\x94 |0 \xA5\x95 |0 \x56\x4F |0 \x67\xA0 |0 \x4B\xBC |0 \xA5\x96 |0 \x67\xA1 |0 \x52\xBF |0 \xA5\x97 |0 \x67\x9F |0 \xA5\x98 |0 \xA5\x99 |0 \x4F\x7E |0 \x49\xC6 |0 \xA5\x9A |0 \xA5\x9B |0 \xA5\x9C |0 \xA5\x9D |0 \xA5\x9E |0 \xA5\x9F |0 \xA5\xA0 |0 \xA5\xA1 |0 \xA5\xA2 |0 \xA5\xA3 |0 \xA5\xA4 |0 \xA5\xA5 |0 \x4B\xC2 |0 \xA5\xA6 |0 \xA5\xA7 |0 \xA5\xA8 |0 \x67\xA4 |0 \x5C\xB9 |0 \x67\xA2 |0 \x67\xA5 |0 \xA5\xA9 |0 \xA5\xAA |0 \xA5\xAB |0 \x52\x8A |0 \x4A\x93 |0 \xA5\xAC |0 \xA5\xAD |0 \xA5\xAE |0 \xA5\xAF |0 \xA5\xB0 |0 \xA5\xB1 |0 \x67\xA6 |0 \x67\xA3 |0 \x58\x59 |0 \xA5\xB2 |0 \xA5\xB3 |0 \x67\xA7 |0 \x51\xF6 |0 \xA5\xB4 |0 \xA5\xB5 |0 \xA5\xB6 |0 \xA5\xB7 |0 \xA5\xB8 |0 \xA5\xB9 |0 \xA5\xBA |0 \xA5\xBB |0 \xA5\xBC |0 \xA5\xBD |0 \xA5\xBE |0 \xA5\xBF |0 \x67\xA8 |0 \x67\xA9 |0 \xA5\xC0 |0 \x5F\xAA |0 \xA5\xC1 |0 \xA5\xC2 |0 \x53\xB2 |0 \xA5\xC3 |0 \x54\x66 |0 \xA5\xC4 |0 \x5B\xF4 |0 \x4B\x69 |0 \xA5\xC5 |0 \x56\x52 |0 \xA5\xC6 |0 \xA5\xC7 |0 \xA5\xC8 |0 \x67\xAA |0 \xA5\xC9 |0 \xA5\xCA |0 \x57\x4B |0 \xA5\xCB |0 \x67\xAB |0 \xA5\xCC |0 \xA5\xCD |0 \xA5\xCE |0 \xA5\xCF |0 \xA5\xD0 |0 \x5B\x50 |0 \xA5\xD1 |0 \x67\xAC |0 \xA5\xD2 |0 \x6B\xC3 |0 \xA5\xD3 |0 \xA5\xD4 |0 \xA5\xD5 |0 \xA5\xD6 |0 \xA5\xD7 |0 \xA5\xD8 |0 \xA5\xD9 |0 \xA5\xDA |0 \xA5\xDB |0 \xA5\xDC |0 \xA5\xDD |0 \xA5\xDE |0 \xA5\xDF |0 \x5E\x67 |0 \xA5\xE0 |0 \xA5\xE1 |0 \xA5\xE2 |0 \xA5\xE3 |0 \xA5\xE4 |0 \xA5\xE5 |0 \xA5\xE6 |0 \xA5\xE7 |0 \xA5\xE8 |0 \x4A\xA2 |0 \xA5\xE9 |0 \xA5\xEA |0 \xA5\xEB |0 \x52\x4C |0 \x69\x87 |0 \xA5\xEC |0 \xA5\xED |0 \xA5\xEE |0 \xA5\xEF |0 \xA5\xF0 |0 \x55\xB7 |0 \x59\xD2 |0 \xA5\xF1 |0 \x5B\xA9 |0 \xA5\xF2 |0 \x68\x93 |0 \xA5\xF3 |0 \x4F\xD7 |0 \xA5\xF4 |0 \x4F\x63 |0 \x68\x94 |0 \x4B\xCB |0 \x48\xAA |0 \xA5\xF5 |0 \xA5\xF6 |0 \xA5\xF7 |0 \xA5\xF8 |0 \x55\xAE |0 \xA5\xF9 |0 \xA5\xFA |0 \x67\x56 |0 \xA5\xFB |0 \x67\x57 |0 \xA5\xFC |0 \xA5\xFD |0 \xA6\x41 |0 \xA6\x42 |0 \x57\xF8 |0 \x4C\x4F |0 \x50\x94 |0 \x67\x58 |0 \x51\xEA |0 \x55\x50 |0 \xA6\x43 |0 \xA6\x44 |0 \xA6\x45 |0 \xA6\x46 |0 \xA6\x47 |0 \xA6\x48 |0 \x67\x59 |0 \xA6\x49 |0 \xA6\x4A |0 \x53\xF5 |0 \x50\x53 |0 \xA6\x4B |0 \xA6\x4C |0 \xA6\x4D |0 \x67\x5C |0 \x53\x99 |0 \xA6\x4E |0 \x59\x70 |0 \xA6\x4F |0 \x5C\x49 |0 \x67\x5A |0 \x67\x5B |0 \xA6\x50 |0 \x59\x83 |0 \xA6\x51 |0 \x67\x5F |0 \x67\x60 |0 \xA6\x52 |0 \x67\x64 |0 \xA6\x53 |0 \xA6\x54 |0 \xA6\x55 |0 \x67\x68 |0 \xA6\x56 |0 \x67\x66 |0 \x67\x6E |0 \x5B\x89 |0 \xA6\x57 |0 \x67\x69 |0 \xA6\x58 |0 \xA6\x59 |0 \x67\x67 |0 \x67\x5E |0 \xA6\x5A |0 \xA6\x5B |0 \x53\x8A |0 \xA6\x5C |0 \xA6\x5D |0 \xA6\x5E |0 \x53\xC5 |0 \xA6\x5F |0 \xA6\x60 |0 \x55\x8A |0 \x5A\xD1 |0 \x67\x61 |0 \x67\x62 |0 \x67\x63 |0 \x67\x65 |0 \xA6\x61 |0 \x50\xF8 |0 \xA6\x62 |0 \x4A\xA0 |0 \xA6\x63 |0 \xA6\x64 |0 \xA6\x65 |0 \xA6\x66 |0 \x4D\x89 |0 \xA6\x67 |0 \x67\x70 |0 \xA6\x68 |0 \xA6\x69 |0 \xA6\x6A |0 \xA6\x6B |0 \x67\x71 |0 \xA6\x6C |0 \x67\x6A |0 \xA6\x6D |0 \x67\x6F |0 \xA6\x6E |0 \x57\xF7 |0 \xA6\x6F |0 \xA6\x70 |0 \x56\x56 |0 \x67\x6C |0 \x67\x6D |0 \xA6\x71 |0 \xA6\x72 |0 \xA6\x73 |0 \xA6\x74 |0 \xA6\x75 |0 \x58\x96 |0 \xA6\x76 |0 \xA6\x77 |0 \xA6\x78 |0 \xA6\x79 |0 \xA6\x7A |0 \xA6\x7B |0 \xA6\x7C |0 \xA6\x7D |0 \xA6\x7E |0 \xA6\x7F |0 \xA6\x81 |0 \xA6\x82 |0 \x67\x72 |0 \x51\x93 |0 \x5A\x52 |0 \x67\x6B |0 \x54\xB6 |0 \xA6\x83 |0 \xA6\x84 |0 \xA6\x85 |0 \xA6\x86 |0 \xA6\x87 |0 \xA6\x88 |0 \xA6\x89 |0 \xA6\x8A |0 \x4E\xEE |0 \xA6\x8B |0 \xA6\x8C |0 \xA6\x8D |0 \xA6\x8E |0 \x53\x91 |0 \xA6\x8F |0 \xA6\x90 |0 \xA6\x91 |0 \xA6\x92 |0 \xA6\x93 |0 \xA6\x94 |0 \xA6\x95 |0 \xA6\x96 |0 \xA6\x97 |0 \xA6\x98 |0 \x67\x76 |0 \xA6\x99 |0 \x4B\x90 |0 \xA6\x9A |0 \xA6\x9B |0 \x51\xB4 |0 \x48\xAC |0 \x56\x8A |0 \xA6\x9C |0 \xA6\x9D |0 \x49\x4E |0 \xA6\x9E |0 \x67\x74 |0 \xA6\x9F |0 \xA6\xA0 |0 \xA6\xA1 |0 \x57\x8C |0 \x4B\x83 |0 \xA6\xA2 |0 \x67\x75 |0 \x67\x73 |0 \x67\x77 |0 \xA6\xA3 |0 \xA6\xA4 |0 \x4B\x9B |0 \xA6\xA5 |0 \x67\x78 |0 \xA6\xA6 |0 \x67\x79 |0 \xA6\xA7 |0 \x67\x7C |0 \xA6\xA8 |0 \x49\x6C |0 \xA6\xA9 |0 \xA6\xAA |0 \xA6\xAB |0 \xA6\xAC |0 \xA6\xAD |0 \xA6\xAE |0 \xA6\xAF |0 \xA6\xB0 |0 \x53\x97 |0 \x4E\xED |0 \x67\x7A |0 \x56\xBB |0 \x49\xE9 |0 \xA6\xB1 |0 \xA6\xB2 |0 \xA6\xB3 |0 \xA6\xB4 |0 \x67\x7B |0 \xA6\xB5 |0 \xA6\xB6 |0 \xA6\xB7 |0 \xA6\xB8 |0 \x52\xEA |0 \xA6\xB9 |0 \xA6\xBA |0 \x4A\xC4 |0 \xA6\xBB |0 \xA6\xBC |0 \xA6\xBD |0 \x48\xF4 |0 \xA6\xBE |0 \xA6\xBF |0 \xA6\xC0 |0 \x67\x7F |0 \x50\xD9 |0 \x4A\xE7 |0 \xA6\xC1 |0 \xA6\xC2 |0 \xA6\xC3 |0 \xA6\xC4 |0 \x53\x6D |0 \xA6\xC5 |0 \xA6\xC6 |0 \xA6\xC7 |0 \x67\x7D |0 \x50\x64 |0 \xA6\xC8 |0 \xA6\xC9 |0 \xA6\xCA |0 \x67\x7E |0 \xA6\xCB |0 \xA6\xCC |0 \xA6\xCD |0 \xA6\xCE |0 \xA6\xCF |0 \xA6\xD0 |0 \xA6\xD1 |0 \xA6\xD2 |0 \xA6\xD3 |0 \xA6\xD4 |0 \xA6\xD5 |0 \xA6\xD6 |0 \xA6\xD7 |0 \xA6\xD8 |0 \x52\xA4 |0 \xA6\xD9 |0 \xA6\xDA |0 \xA6\xDB |0 \x67\x81 |0 \xA6\xDC |0 \xA6\xDD |0 \xA6\xDE |0 \xA6\xDF |0 \xA6\xE0 |0 \x67\x82 |0 \xA6\xE1 |0 \x67\x84 |0 \xA6\xE2 |0 \xA6\xE3 |0 \x51\x77 |0 \xA6\xE4 |0 \xA6\xE5 |0 \x4E\x67 |0 \xA6\xE6 |0 \xA6\xE7 |0 \xA6\xE8 |0 \xA6\xE9 |0 \xA6\xEA |0 \xA6\xEB |0 \x4F\x58 |0 \xA6\xEC |0 \xA6\xED |0 \xA6\xEE |0 \x67\x83 |0 \xA6\xEF |0 \xA6\xF0 |0 \xA6\xF1 |0 \xA6\xF2 |0 \xA6\xF3 |0 \xA6\xF4 |0 \xA6\xF5 |0 \xA6\xF6 |0 \xA6\xF7 |0 \xA6\xF8 |0 \xA6\xF9 |0 \xA6\xFA |0 \xA6\xFB |0 \x67\x85 |0 \xA6\xFC |0 \xA6\xFD |0 \xA7\x41 |0 \xA7\x42 |0 \xA7\x43 |0 \xA7\x44 |0 \xA7\x45 |0 \xA7\x46 |0 \xA7\x47 |0 \xA7\x48 |0 \x67\x87 |0 \xA7\x49 |0 \xA7\x4A |0 \xA7\x4B |0 \xA7\x4C |0 \xA7\x4D |0 \x67\x86 |0 \xA7\x4E |0 \xA7\x4F |0 \xA7\x50 |0 \xA7\x51 |0 \xA7\x52 |0 \xA7\x53 |0 \xA7\x54 |0 \xA7\x55 |0 \xA7\x56 |0 \xA7\x57 |0 \xA7\x58 |0 \xA7\x59 |0 \xA7\x5A |0 \xA7\x5B |0 \xA7\x5C |0 \x67\x88 |0 \xA7\x5D |0 \xA7\x5E |0 \xA7\x5F |0 \xA7\x60 |0 \xA7\x61 |0 \x55\xBD |0 \x66\xE9 |0 \x50\xF0 |0 \xA7\x62 |0 \x55\x88 |0 \xA7\x63 |0 \x66\xEA |0 \x53\xED |0 \xA7\x64 |0 \xA7\x65 |0 \xA7\x66 |0 \xA7\x67 |0 \x66\xEB |0 \xA7\x68 |0 \x53\xEC |0 \x66\xEC |0 \xA7\x69 |0 \xA7\x6A |0 \xA7\x6B |0 \xA7\x6C |0 \xA7\x6D |0 \xA7\x6E |0 \xA7\x6F |0 \xA7\x70 |0 \xA7\x71 |0 \x66\xEF |0 \xA7\x72 |0 \xA7\x73 |0 \x5C\x87 |0 \x66\xF2 |0 \xA7\x74 |0 \xA7\x75 |0 \x66\xF0 |0 \x66\xED |0 \x66\xEE |0 \x5C\x43 |0 \x55\x92 |0 \x56\x8F |0 \x66\xF3 |0 \xA7\x76 |0 \x66\xF1 |0 \xA7\x77 |0 \xA7\x78 |0 \x58\x8A |0 \xA7\x79 |0 \x66\xF5 |0 \x53\xB0 |0 \xA7\x7A |0 \xA7\x7B |0 \xA7\x7C |0 \xA7\x7D |0 \x4E\xBF |0 \xA7\x7E |0 \x66\xF4 |0 \xA7\x7F |0 \xA7\x81 |0 \xA7\x82 |0 \xA7\x83 |0 \xA7\x84 |0 \xA7\x85 |0 \xA7\x86 |0 \x4B\x5B |0 \x4E\x97 |0 \xA7\x87 |0 \x66\xF6 |0 \xA7\x88 |0 \xA7\x89 |0 \xA7\x8A |0 \xA7\x8B |0 \xA7\x8C |0 \x5D\x98 |0 \x4F\x9C |0 \xA7\x8D |0 \xA7\x8E |0 \x51\xBA |0 \x66\xF7 |0 \xA7\x8F |0 \xA7\x90 |0 \xA7\x91 |0 \xA7\x92 |0 \x66\xF8 |0 \xA7\x93 |0 \xA7\x94 |0 \xA7\x95 |0 \xA7\x96 |0 \x4C\xA2 |0 \xA7\x97 |0 \xA7\x98 |0 \xA7\x99 |0 \xA7\x9A |0 \xA7\x9B |0 \xA7\x9C |0 \xA7\x9D |0 \xA7\x9E |0 \xA7\x9F |0 \xA7\xA0 |0 \x66\xF9 |0 \xA7\xA1 |0 \xA7\xA2 |0 \xA7\xA3 |0 \xA7\xA4 |0 \xA7\xA5 |0 \xA7\xA6 |0 \xA7\xA7 |0 \xA7\xA8 |0 \xA7\xA9 |0 \xA7\xAA |0 \xA7\xAB |0 \xA7\xAC |0 \x66\xFA |0 \xA7\xAD |0 \xA7\xAE |0 \xA7\xAF |0 \xA7\xB0 |0 \xA7\xB1 |0 \xA7\xB2 |0 \xA7\xB3 |0 \xA7\xB4 |0 \xA7\xB5 |0 \xA7\xB6 |0 \xA7\xB7 |0 \x66\xFB |0 \xA7\xB8 |0 \xA7\xB9 |0 \xA7\xBA |0 \xA7\xBB |0 \xA7\xBC |0 \x5A\x8E |0 \x5C\xAD |0 \x50\xEA |0 \xA7\xBD |0 \x54\x7D |0 \x4D\xCB |0 \xA7\xBE |0 \x58\xE2 |0 \x56\x5D |0 \xA7\xBF |0 \x57\x5A |0 \xA7\xC0 |0 \xA7\xC1 |0 \x4C\xD0 |0 \xA7\xC2 |0 \xA7\xC3 |0 \x49\x9D |0 \xA7\xC4 |0 \x54\x90 |0 \xA7\xC5 |0 \x5B\xD5 |0 \xA7\xC6 |0 \xA7\xC7 |0 \xA7\xC8 |0 \x50\x66 |0 \x52\x8C |0 \xA7\xC9 |0 \xA7\xCA |0 \x68\x96 |0 \xA7\xCB |0 \xA7\xCC |0 \x52\x78 |0 \xA7\xCD |0 \xA7\xCE |0 \xA7\xCF |0 \xA7\xD0 |0 \xA7\xD1 |0 \xA7\xD2 |0 \x5C\x83 |0 \xA7\xD3 |0 \xA7\xD4 |0 \xA7\xD5 |0 \x68\x98 |0 \x4A\x73 |0 \xA7\xD6 |0 \x54\x78 |0 \x59\x8E |0 \xA7\xD7 |0 \x5B\xC7 |0 \xA7\xD8 |0 \x68\x99 |0 \xA7\xD9 |0 \x68\x97 |0 \xA7\xDA |0 \x4E\x9E |0 \x4A\x66 |0 \xA7\xDB |0 \xA7\xDC |0 \xA7\xDD |0 \xA7\xDE |0 \xA7\xDF |0 \xA7\xE0 |0 \xA7\xE1 |0 \x4F\x75 |0 \xA7\xE2 |0 \xA7\xE3 |0 \x59\xC5 |0 \xA7\xE4 |0 \x4E\x81 |0 \xA7\xE5 |0 \xA7\xE6 |0 \x58\x41 |0 \xA7\xE7 |0 \x68\x9D |0 \x68\x9C |0 \xA7\xE8 |0 \xA7\xE9 |0 \x68\x9A |0 \xA7\xEA |0 \xA7\xEB |0 \xA7\xEC |0 \xA7\xED |0 \x4A\x6C |0 \xA7\xEE |0 \x55\x74 |0 \x56\x50 |0 \xA7\xEF |0 \xA7\xF0 |0 \xA7\xF1 |0 \xA7\xF2 |0 \xA7\xF3 |0 \x68\x9F |0 \xA7\xF4 |0 \xA7\xF5 |0 \x48\xDD |0 \xA7\xF6 |0 \xA7\xF7 |0 \x5B\xC8 |0 \xA7\xF8 |0 \xA7\xF9 |0 \xA7\xFA |0 \x68\x9E |0 \xA7\xFB |0 \x4A\x8E |0 \xA7\xFC |0 \xA7\xFD |0 \x6B\xD4 |0 \xA8\x41 |0 \xA8\x42 |0 \xA8\x43 |0 \xA8\x44 |0 \xA8\x45 |0 \xA8\x46 |0 \xA8\x47 |0 \xA8\x48 |0 \xA8\x49 |0 \xA8\x4A |0 \xA8\x4B |0 \xA8\x4C |0 \xA8\x4D |0 \xA8\x4E |0 \xA8\x4F |0 \x57\xC7 |0 \xA8\x50 |0 \xA8\x51 |0 \xA8\x52 |0 \x68\xA1 |0 \xA8\x53 |0 \x68\xA0 |0 \xA8\x54 |0 \x4B\x5E |0 \x4E\xD9 |0 \x4E\x9D |0 \xA8\x55 |0 \x4C\xE4 |0 \xA8\x56 |0 \xA8\x57 |0 \xA8\x58 |0 \xA8\x59 |0 \xA8\x5A |0 \xA8\x5B |0 \x52\xC1 |0 \xA8\x5C |0 \xA8\x5D |0 \xA8\x5E |0 \xA8\x5F |0 \xA8\x60 |0 \xA8\x61 |0 \xA8\x62 |0 \xA8\x63 |0 \xA8\x64 |0 \xA8\x65 |0 \x68\xA2 |0 \xA8\x66 |0 \xA8\x67 |0 \xA8\x68 |0 \xA8\x69 |0 \xA8\x6A |0 \x56\x8C |0 \xA8\x6B |0 \xA8\x6C |0 \xA8\x6D |0 \xA8\x6E |0 \xA8\x6F |0 \xA8\x70 |0 \xA8\x71 |0 \xA8\x72 |0 \xA8\x73 |0 \xA8\x74 |0 \xA8\x75 |0 \xA8\x76 |0 \xA8\x77 |0 \xA8\x78 |0 \xA8\x79 |0 \xA8\x7A |0 \xA8\x7B |0 \xA8\x7C |0 \xA8\x7D |0 \xA8\x7E |0 \xA8\x7F |0 \xA8\x81 |0 \xA8\x82 |0 \xA8\x83 |0 \x68\xA5 |0 \xA8\x84 |0 \xA8\x85 |0 \xA8\x86 |0 \x59\x48 |0 \xA8\x87 |0 \x4F\xBE |0 \x54\x8F |0 \x69\x56 |0 \x69\x57 |0 \x50\x75 |0 \xA8\x88 |0 \xA8\x89 |0 \xA8\x8A |0 \xA8\x8B |0 \x4A\xA8 |0 \x69\x58 |0 \x57\x5B |0 \xA8\x8C |0 \x54\x74 |0 \x5B\x4D |0 \xA8\x8D |0 \x69\x59 |0 \xA8\x8E |0 \x69\x5A |0 \xA8\x8F |0 \xA8\x90 |0 \xA8\x91 |0 \xA8\x92 |0 \x54\x6F |0 \xA8\x93 |0 \xA8\x94 |0 \xA8\x95 |0 \x59\xA3 |0 \x5B\xCE |0 \xA8\x96 |0 \xA8\x97 |0 \x69\x5B |0 \x4F\x71 |0 \x4A\xAF |0 \x4F\xBC |0 \xA8\x98 |0 \xA8\x99 |0 \xA8\x9A |0 \x4A\xDB |0 \x57\xD0 |0 \xA8\x9B |0 \x50\x7F |0 \x69\x5D |0 \xA8\x9C |0 \xA8\x9D |0 \xA8\x9E |0 \xA8\x9F |0 \x50\x9B |0 \x69\x5C |0 \xA8\xA0 |0 \x69\x5F |0 \xA8\xA1 |0 \xA8\xA2 |0 \xA8\xA3 |0 \x69\x5E |0 \x69\x60 |0 \xA8\xA4 |0 \xA8\xA5 |0 \xA8\xA6 |0 \xA8\xA7 |0 \xA8\xA8 |0 \x69\x61 |0 \xA8\xA9 |0 \xA8\xAA |0 \xA8\xAB |0 \xA8\xAC |0 \xA8\xAD |0 \xA8\xAE |0 \xA8\xAF |0 \xA8\xB0 |0 \xA8\xB1 |0 \xA8\xB2 |0 \xA8\xB3 |0 \x51\x9F |0 \xA8\xB4 |0 \xA8\xB5 |0 \xA8\xB6 |0 \xA8\xB7 |0 \xA8\xB8 |0 \xA8\xB9 |0 \xA8\xBA |0 \xA8\xBB |0 \xA8\xBC |0 \xA8\xBD |0 \xA8\xBE |0 \x51\x42 |0 \xA8\xBF |0 \xA8\xC0 |0 \xA8\xC1 |0 \xA8\xC2 |0 \xA8\xC3 |0 \xA8\xC4 |0 \xA8\xC5 |0 \xA8\xC6 |0 \xA8\xC7 |0 \xA8\xC8 |0 \x55\xF9 |0 \xA8\xC9 |0 \xA8\xCA |0 \x5B\x5E |0 \xA8\xCB |0 \xA8\xCC |0 \xA8\xCD |0 \xA8\xCE |0 \x4F\xB9 |0 \x4F\xB8 |0 \x5B\x62 |0 \xA8\xCF |0 \xA8\xD0 |0 \x50\x42 |0 \xA8\xD1 |0 \x57\x4F |0 \x69\x55 |0 \xA8\xD2 |0 \xA8\xD3 |0 \xA8\xD4 |0 \xA8\xD5 |0 \xA8\xD6 |0 \xA8\xD7 |0 \x4F\x7F |0 \xA8\xD8 |0 \x4B\xCA |0 \xA8\xD9 |0 \xA8\xDA |0 \xA8\xDB |0 \xA8\xDC |0 \xA8\xDD |0 \xA8\xDE |0 \xA8\xDF |0 \xA8\xE0 |0 \xA8\xE1 |0 \x5B\xF0 |0 \x6A\x63 |0 \xA8\xE2 |0 \xA8\xE3 |0 \x6A\x64 |0 \xA8\xE4 |0 \x4C\xCC |0 \xA8\xE5 |0 \xA8\xE6 |0 \xA8\xE7 |0 \x6A\x66 |0 \x6A\x67 |0 \xA8\xE8 |0 \x48\xC9 |0 \xA8\xE9 |0 \x6A\x65 |0 \xA8\xEA |0 \x6A\x69 |0 \x56\x92 |0 \xA8\xEB |0 \xA8\xEC |0 \xA8\xED |0 \x6A\x6B |0 \xA8\xEE |0 \x58\xA5 |0 \xA8\xEF |0 \xA8\xF0 |0 \x49\x6A |0 \x6A\x68 |0 \xA8\xF1 |0 \xA8\xF2 |0 \xA8\xF3 |0 \x6A\x6F |0 \xA8\xF4 |0 \x4B\x71 |0 \xA8\xF5 |0 \xA8\xF6 |0 \x6A\x77 |0 \xA8\xF7 |0 \x6A\x72 |0 \xA8\xF8 |0 \xA8\xF9 |0 \xA8\xFA |0 \x6A\x74 |0 \x6A\x73 |0 \x4C\x9C |0 \xA8\xFB |0 \x49\x5F |0 \xA8\xFC |0 \x6A\x6E |0 \x6A\x6A |0 \x4B\x7A |0 \xA8\xFD |0 \x6A\x70 |0 \xA9\x41 |0 \xA9\x42 |0 \x6A\x71 |0 \xA9\x43 |0 \x6A\x75 |0 \xA9\x44 |0 \xA9\x45 |0 \xA9\x46 |0 \xA9\x47 |0 \x6A\x6D |0 \xA9\x48 |0 \x4E\xE2 |0 \xA9\x49 |0 \x51\x9E |0 \xA9\x4A |0 \x6A\x76 |0 \xA9\x4B |0 \xA9\x4C |0 \xA9\x4D |0 \xA9\x4E |0 \xA9\x4F |0 \xA9\x50 |0 \x6A\x7A |0 \xA9\x51 |0 \x6A\x6C |0 \xA9\x52 |0 \x4B\x68 |0 \xA9\x53 |0 \x4F\x8F |0 \x6A\x7C |0 \xA9\x54 |0 \xA9\x55 |0 \x4C\x44 |0 \x50\x91 |0 \x5B\xFD |0 \x57\x52 |0 \xA9\x56 |0 \x4A\xEF |0 \xA9\x57 |0 \x49\xDE |0 \xA9\x58 |0 \x6A\x78 |0 \xA9\x59 |0 \x6A\x79 |0 \x55\x58 |0 \xA9\x5A |0 \x6A\x7D |0 \xA9\x5B |0 \xA9\x5C |0 \x6A\x7E |0 \xA9\x5D |0 \x6A\x82 |0 \xA9\x5E |0 \xA9\x5F |0 \xA9\x60 |0 \xA9\x61 |0 \xA9\x62 |0 \xA9\x63 |0 \xA9\x64 |0 \xA9\x65 |0 \xA9\x66 |0 \xA9\x67 |0 \xA9\x68 |0 \x6A\x7F |0 \xA9\x69 |0 \xA9\x6A |0 \x6A\x84 |0 \x6A\x83 |0 \xA9\x6B |0 \xA9\x6C |0 \x6A\x7B |0 \xA9\x6D |0 \x50\x8B |0 \xA9\x6E |0 \x4A\x90 |0 \xA9\x6F |0 \x6A\x81 |0 \xA9\x70 |0 \xA9\x71 |0 \x54\x49 |0 \xA9\x72 |0 \x4E\xF1 |0 \xA9\x73 |0 \xA9\x74 |0 \xA9\x75 |0 \xA9\x76 |0 \x6A\x8C |0 \xA9\x77 |0 \xA9\x78 |0 \xA9\x79 |0 \xA9\x7A |0 \xA9\x7B |0 \xA9\x7C |0 \xA9\x7D |0 \x4D\x5F |0 \xA9\x7E |0 \xA9\x7F |0 \x6A\x85 |0 \xA9\x81 |0 \xA9\x82 |0 \xA9\x83 |0 \x49\xAC |0 \x4E\x9F |0 \xA9\x84 |0 \x56\x84 |0 \xA9\x85 |0 \xA9\x86 |0 \xA9\x87 |0 \xA9\x88 |0 \x6A\x8E |0 \x6A\x8A |0 \xA9\x89 |0 \xA9\x8A |0 \xA9\x8B |0 \x4D\x7C |0 \x6A\x8F |0 \xA9\x8C |0 \xA9\x8D |0 \xA9\x8E |0 \x6A\x86 |0 \x6A\x87 |0 \x6A\x8B |0 \x51\xE0 |0 \x6A\x8D |0 \x6A\x90 |0 \x6A\x89 |0 \x4E\xFC |0 \xA9\x8F |0 \xA9\x90 |0 \xA9\x91 |0 \x58\x85 |0 \xA9\x92 |0 \xA9\x93 |0 \x6A\x91 |0 \xA9\x94 |0 \xA9\x95 |0 \xA9\x96 |0 \x6A\x88 |0 \xA9\x97 |0 \xA9\x98 |0 \xA9\x99 |0 \xA9\x9A |0 \xA9\x9B |0 \xA9\x9C |0 \xA9\x9D |0 \xA9\x9E |0 \x6A\x93 |0 \xA9\x9F |0 \xA9\xA0 |0 \xA9\xA1 |0 \xA9\xA2 |0 \x5C\x4D |0 \x53\xA9 |0 \xA9\xA3 |0 \xA9\xA4 |0 \xA9\xA5 |0 \xA9\xA6 |0 \x6A\x94 |0 \xA9\xA7 |0 \xA9\xA8 |0 \xA9\xA9 |0 \xA9\xAA |0 \x6A\x92 |0 \xA9\xAB |0 \x51\xA7 |0 \xA9\xAC |0 \xA9\xAD |0 \xA9\xAE |0 \xA9\xAF |0 \xA9\xB0 |0 \x4C\xDC |0 \x6A\x96 |0 \xA9\xB1 |0 \xA9\xB2 |0 \x6A\x95 |0 \xA9\xB3 |0 \xA9\xB4 |0 \xA9\xB5 |0 \x4A\xDA |0 \xA9\xB6 |0 \xA9\xB7 |0 \xA9\xB8 |0 \x6A\x97 |0 \x6A\x98 |0 \xA9\xB9 |0 \xA9\xBA |0 \xA9\xBB |0 \x6A\x99 |0 \xA9\xBC |0 \xA9\xBD |0 \xA9\xBE |0 \x50\xB9 |0 \xA9\xBF |0 \xA9\xC0 |0 \x50\xE8 |0 \xA9\xC1 |0 \xA9\xC2 |0 \xA9\xC3 |0 \xA9\xC4 |0 \xA9\xC5 |0 \x53\x92 |0 \xA9\xC6 |0 \xA9\xC7 |0 \xA9\xC8 |0 \xA9\xC9 |0 \x6A\x9C |0 \xA9\xCA |0 \x6A\x9B |0 \xA9\xCB |0 \xA9\xCC |0 \xA9\xCD |0 \xA9\xCE |0 \xA9\xCF |0 \xA9\xD0 |0 \xA9\xD1 |0 \xA9\xD2 |0 \x4A\xD7 |0 \xA9\xD3 |0 \xA9\xD4 |0 \xA9\xD5 |0 \x6A\x9F |0 \x6A\x9A |0 \xA9\xD6 |0 \xA9\xD7 |0 \x6A\x9D |0 \xA9\xD8 |0 \xA9\xD9 |0 \xA9\xDA |0 \xA9\xDB |0 \xA9\xDC |0 \xA9\xDD |0 \x6A\x9E |0 \xA9\xDE |0 \xA9\xDF |0 \xA9\xE0 |0 \xA9\xE1 |0 \xA9\xE2 |0 \xA9\xE3 |0 \xA9\xE4 |0 \xA9\xE5 |0 \x6A\xA0 |0 \xA9\xE6 |0 \xA9\xE7 |0 \xA9\xE8 |0 \xA9\xE9 |0 \xA9\xEA |0 \xA9\xEB |0 \x6A\xA2 |0 \x4E\x69 |0 \xA9\xEC |0 \xA9\xED |0 \x6A\xA1 |0 \xA9\xEE |0 \xA9\xEF |0 \xA9\xF0 |0 \xA9\xF1 |0 \xA9\xF2 |0 \xA9\xF3 |0 \xA9\xF4 |0 \xA9\xF5 |0 \xA9\xF6 |0 \xA9\xF7 |0 \xA9\xF8 |0 \xA9\xF9 |0 \xA9\xFA |0 \x6A\xA3 |0 \xA9\xFB |0 \xA9\xFC |0 \xA9\xFD |0 \xAA\x41 |0 \xAA\x42 |0 \xAA\x43 |0 \x49\xBD |0 \x6A\xA5 |0 \x6A\xA4 |0 \xAA\x44 |0 \xAA\x45 |0 \xAA\x46 |0 \xAA\x47 |0 \xAA\x48 |0 \xAA\x49 |0 \xAA\x4A |0 \xAA\x4B |0 \xAA\x4C |0 \xAA\x4D |0 \xAA\x4E |0 \x4E\xAD |0 \xAA\x4F |0 \xAA\x50 |0 \xAA\x51 |0 \xAA\x52 |0 \xAA\x53 |0 \xAA\x54 |0 \xAA\x55 |0 \xAA\x56 |0 \xAA\x57 |0 \xAA\x58 |0 \xAA\x59 |0 \xAA\x5A |0 \xAA\x5B |0 \xAA\x5C |0 \xAA\x5D |0 \xAA\x5E |0 \xAA\x5F |0 \xAA\x60 |0 \xAA\x61 |0 \xAA\x62 |0 \xAA\x63 |0 \xAA\x64 |0 \xAA\x65 |0 \xAA\x66 |0 \xAA\x67 |0 \xAA\x68 |0 \xAA\x69 |0 \xAA\x6A |0 \xAA\x6B |0 \xAA\x6C |0 \xAA\x6D |0 \xAA\x6E |0 \xAA\x6F |0 \xAA\x70 |0 \xAA\x71 |0 \xAA\x72 |0 \xAA\x73 |0 \x52\x77 |0 \x5D\x82 |0 \xAA\x74 |0 \xAA\x75 |0 \xAA\x76 |0 \xAA\x77 |0 \xAA\x78 |0 \xAA\x79 |0 \x50\xDF |0 \x6A\xCB |0 \x5C\x71 |0 \xAA\x7A |0 \xAA\x7B |0 \xAA\x7C |0 \xAA\x7D |0 \xAA\x7E |0 \xAA\x7F |0 \xAA\x81 |0 \xAA\x82 |0 \xAA\x83 |0 \xAA\x84 |0 \xAA\x85 |0 \x4C\x7B |0 \xAA\x86 |0 \xAA\x87 |0 \xAA\x88 |0 \xAA\x89 |0 \xAA\x8A |0 \xAA\x8B |0 \xAA\x8C |0 \x6A\xCD |0 \x51\x43 |0 \xAA\x8D |0 \xAA\x8E |0 \x53\xC8 |0 \xAA\x8F |0 \x4A\xD5 |0 \x5B\x53 |0 \xAA\x90 |0 \xAA\x91 |0 \xAA\x92 |0 \x6A\xCF |0 \x6A\xCE |0 \x6A\xD0 |0 \x56\x7A |0 \xAA\x93 |0 \xAA\x94 |0 \x6A\xD1 |0 \xAA\x95 |0 \x5A\xC0 |0 \x5B\xDF |0 \xAA\x96 |0 \xAA\x97 |0 \xAA\x98 |0 \xAA\x99 |0 \x4C\x81 |0 \xAA\x9A |0 \xAA\x9B |0 \xAA\x9C |0 \x51\x58 |0 \xAA\x9D |0 \xAA\x9E |0 \x51\x5B |0 \x6A\xD2 |0 \x4F\xAB |0 \xAA\x9F |0 \xAA\xA0 |0 \xAA\xA1 |0 \xAA\xA2 |0 \xAA\xA3 |0 \x4A\xE1 |0 \xAA\xA4 |0 \xAA\xA5 |0 \x6A\xD3 |0 \x6A\xD4 |0 \x4F\xAA |0 \xAA\xA6 |0 \xAA\xA7 |0 \x6A\xD5 |0 \xAA\xA8 |0 \xAA\xA9 |0 \xAA\xAA |0 \x6A\xDA |0 \xAA\xAB |0 \x6A\xD6 |0 \x6A\xD9 |0 \xAA\xAC |0 \x4D\xFC |0 \xAA\xAD |0 \x6A\xD7 |0 \x6A\xD8 |0 \xAA\xAE |0 \xAA\xAF |0 \xAA\xB0 |0 \xAA\xB1 |0 \xAA\xB2 |0 \xAA\xB3 |0 \xAA\xB4 |0 \x4C\xE1 |0 \x56\xC6 |0 \x6A\xDB |0 \xAA\xB5 |0 \x49\xD9 |0 \xAA\xB6 |0 \xAA\xB7 |0 \x52\x73 |0 \xAA\xB8 |0 \xAA\xB9 |0 \x5A\xE2 |0 \x50\x57 |0 \xAA\xBA |0 \xAA\xBB |0 \xAA\xBC |0 \xAA\xBD |0 \xAA\xBE |0 \xAA\xBF |0 \xAA\xC0 |0 \x6A\xDC |0 \xAA\xC1 |0 \xAA\xC2 |0 \xAA\xC3 |0 \xAA\xC4 |0 \xAA\xC5 |0 \xAA\xC6 |0 \x53\x54 |0 \xAA\xC7 |0 \xAA\xC8 |0 \xAA\xC9 |0 \xAA\xCA |0 \xAA\xCB |0 \xAA\xCC |0 \xAA\xCD |0 \xAA\xCE |0 \x6A\xE8 |0 \xAA\xCF |0 \xAA\xD0 |0 \x58\x55 |0 \xAA\xD1 |0 \xAA\xD2 |0 \xAA\xD3 |0 \xAA\xD4 |0 \xAA\xD5 |0 \xAA\xD6 |0 \xAA\xD7 |0 \xAA\xD8 |0 \xAA\xD9 |0 \xAA\xDA |0 \xAA\xDB |0 \xAA\xDC |0 \xAA\xDD |0 \xAA\xDE |0 \x57\xC8 |0 \xAA\xDF |0 \xAA\xE0 |0 \xAA\xE1 |0 \xAA\xE2 |0 \xAA\xE3 |0 \xAA\xE4 |0 \xAA\xE5 |0 \xAA\xE6 |0 \xAA\xE7 |0 \xAA\xE8 |0 \xAA\xE9 |0 \xAA\xEA |0 \xAA\xEB |0 \xAA\xEC |0 \xAA\xED |0 \xAA\xEE |0 \xAA\xEF |0 \xAA\xF0 |0 \xAA\xF1 |0 \xAA\xF2 |0 \xAA\xF3 |0 \x56\x78 |0 \xAA\xF4 |0 \x56\x98 |0 \xAA\xF5 |0 \xAA\xF6 |0 \xAA\xF7 |0 \xAA\xF8 |0 \x4F\x95 |0 \xAA\xF9 |0 \xAA\xFA |0 \xAA\xFB |0 \x5C\x6F |0 \xAA\xFC |0 \xAA\xFD |0 \xAB\x41 |0 \x50\xDA |0 \xAB\x42 |0 \xAB\x43 |0 \xAB\x44 |0 \xAB\x45 |0 \xAB\x46 |0 \xAB\x47 |0 \xAB\x48 |0 \xAB\x49 |0 \xAB\x4A |0 \xAB\x4B |0 \xAB\x4C |0 \xAB\x4D |0 \xAB\x4E |0 \xAB\x4F |0 \xAB\x50 |0 \xAB\x51 |0 \xAB\x52 |0 \xAB\x53 |0 \xAB\x54 |0 \xAB\x55 |0 \xAB\x56 |0 \xAB\x57 |0 \xAB\x58 |0 \xAB\x59 |0 \xAB\x5A |0 \xAB\x5B |0 \xAB\x5C |0 \xAB\x5D |0 \xAB\x5E |0 \xAB\x5F |0 \xAB\x60 |0 \xAB\x61 |0 \xAB\x62 |0 \xAB\x63 |0 \xAB\x64 |0 \xAB\x65 |0 \xAB\x66 |0 \xAB\x67 |0 \xAB\x68 |0 \xAB\x69 |0 \xAB\x6A |0 \xAB\x6B |0 \xAB\x6C |0 \xAB\x6D |0 \xAB\x6E |0 \xAB\x6F |0 \xAB\x70 |0 \xAB\x71 |0 \xAB\x72 |0 \xAB\x73 |0 \xAB\x74 |0 \xAB\x75 |0 \xAB\x76 |0 \xAB\x77 |0 \xAB\x78 |0 \xAB\x79 |0 \xAB\x7A |0 \xAB\x7B |0 \xAB\x7C |0 \xAB\x7D |0 \xAB\x7E |0 \xAB\x7F |0 \x58\xF4 |0 \xAB\x81 |0 \xAB\x82 |0 \xAB\x83 |0 \xAB\x84 |0 \xAB\x85 |0 \xAB\x86 |0 \xAB\x87 |0 \xAB\x88 |0 \x6A\xE9 |0 \xAB\x89 |0 \xAB\x8A |0 \xAB\x8B |0 \xAB\x8C |0 \xAB\x8D |0 \xAB\x8E |0 \xAB\x8F |0 \xAB\x90 |0 \xAB\x91 |0 \xAB\x92 |0 \xAB\x93 |0 \xAB\x94 |0 \xAB\x95 |0 \xAB\x96 |0 \xAB\x97 |0 \xAB\x98 |0 \xAB\x99 |0 \xAB\x9A |0 \xAB\x9B |0 \xAB\x9C |0 \xAB\x9D |0 \xAB\x9E |0 \xAB\x9F |0 \xAB\xA0 |0 \xAB\xA1 |0 \xAB\xA2 |0 \xAB\xA3 |0 \xAB\xA4 |0 \xAB\xA5 |0 \xAB\xA6 |0 \xAB\xA7 |0 \xAB\xA8 |0 \xAB\xA9 |0 \xAB\xAA |0 \xAB\xAB |0 \xAB\xAC |0 \xAB\xAD |0 \xAB\xAE |0 \xAB\xAF |0 \xAB\xB0 |0 \xAB\xB1 |0 \xAB\xB2 |0 \xAB\xB3 |0 \xAB\xB4 |0 \xAB\xB5 |0 \xAB\xB6 |0 \x6A\xEA |0 \xAB\xB7 |0 \xAB\xB8 |0 \xAB\xB9 |0 \xAB\xBA |0 \xAB\xBB |0 \xAB\xBC |0 \xAB\xBD |0 \x6A\xEB |0 \xAB\xBE |0 \xAB\xBF |0 \xAB\xC0 |0 \xAB\xC1 |0 \xAB\xC2 |0 \xAB\xC3 |0 \xAB\xC4 |0 \xAB\xC5 |0 \xAB\xC6 |0 \xAB\xC7 |0 \xAB\xC8 |0 \xAB\xC9 |0 \xAB\xCA |0 \xAB\xCB |0 \xAB\xCC |0 \xAB\xCD |0 \xAB\xCE |0 \xAB\xCF |0 \xAB\xD0 |0 \xAB\xD1 |0 \xAB\xD2 |0 \xAB\xD3 |0 \xAB\xD4 |0 \xAB\xD5 |0 \xAB\xD6 |0 \xAB\xD7 |0 \xAB\xD8 |0 \xAB\xD9 |0 \xAB\xDA |0 \xAB\xDB |0 \xAB\xDC |0 \xAB\xDD |0 \xAB\xDE |0 \xAB\xDF |0 \xAB\xE0 |0 \xAB\xE1 |0 \xAB\xE2 |0 \xAB\xE3 |0 \xAB\xE4 |0 \xAB\xE5 |0 \xAB\xE6 |0 \xAB\xE7 |0 \xAB\xE8 |0 \xAB\xE9 |0 \xAB\xEA |0 \xAB\xEB |0 \xAB\xEC |0 \xAB\xED |0 \xAB\xEE |0 \xAB\xEF |0 \xAB\xF0 |0 \xAB\xF1 |0 \xAB\xF2 |0 \xAB\xF3 |0 \xAB\xF4 |0 \xAB\xF5 |0 \xAB\xF6 |0 \xAB\xF7 |0 \xAB\xF8 |0 \xAB\xF9 |0 \xAB\xFA |0 \xAB\xFB |0 \xAB\xFC |0 \xAB\xFD |0 \xAC\x41 |0 \xAC\x42 |0 \xAC\x43 |0 \xAC\x44 |0 \xAC\x45 |0 \xAC\x46 |0 \xAC\x47 |0 \xAC\x48 |0 \xAC\x49 |0 \xAC\x4A |0 \xAC\x4B |0 \xAC\x4C |0 \xAC\x4D |0 \xAC\x4E |0 \xAC\x4F |0 \xAC\x50 |0 \xAC\x51 |0 \xAC\x52 |0 \xAC\x53 |0 \xAC\x54 |0 \xAC\x55 |0 \xAC\x56 |0 \xAC\x57 |0 \xAC\x58 |0 \xAC\x59 |0 \xAC\x5A |0 \xAC\x5B |0 \xAC\x5C |0 \xAC\x5D |0 \xAC\x5E |0 \xAC\x5F |0 \xAC\x60 |0 \xAC\x61 |0 \xAC\x62 |0 \xAC\x63 |0 \xAC\x64 |0 \xAC\x65 |0 \xAC\x66 |0 \xAC\x67 |0 \xAC\x68 |0 \xAC\x69 |0 \xAC\x6A |0 \xAC\x6B |0 \xAC\x6C |0 \xAC\x6D |0 \xAC\x6E |0 \xAC\x6F |0 \xAC\x70 |0 \xAC\x71 |0 \xAC\x72 |0 \xAC\x73 |0 \xAC\x74 |0 \xAC\x75 |0 \xAC\x76 |0 \xAC\x77 |0 \xAC\x78 |0 \xAC\x79 |0 \xAC\x7A |0 \xAC\x7B |0 \xAC\x7C |0 \xAC\x7D |0 \xAC\x7E |0 \xAC\x7F |0 \xAC\x81 |0 \xAC\x82 |0 \xAC\x83 |0 \xAC\x84 |0 \xAC\x85 |0 \xAC\x86 |0 \xAC\x87 |0 \xAC\x88 |0 \xAC\x89 |0 \xAC\x8A |0 \xAC\x8B |0 \xAC\x8C |0 \xAC\x8D |0 \x6C\x84 |0 \xAC\x8E |0 \xAC\x8F |0 \xAC\x90 |0 \xAC\x91 |0 \xAC\x92 |0 \x4C\x51 |0 \xAC\x93 |0 \xAC\x94 |0 \xAC\x95 |0 \xAC\x96 |0 \xAC\x97 |0 \x6A\xEC |0 \xAC\x98 |0 \xAC\x99 |0 \xAC\x9A |0 \xAC\x9B |0 \xAC\x9C |0 \xAC\x9D |0 \xAC\x9E |0 \xAC\x9F |0 \xAC\xA0 |0 \xAC\xA1 |0 \xAC\xA2 |0 \xAC\xA3 |0 \xAC\xA4 |0 \xAC\xA5 |0 \xAC\xA6 |0 \xAC\xA7 |0 \xAC\xA8 |0 \xAC\xA9 |0 \xAC\xAA |0 \xAC\xAB |0 \xAC\xAC |0 \xAC\xAD |0 \xAC\xAE |0 \xAC\xAF |0 \xAC\xB0 |0 \xAC\xB1 |0 \xAC\xB2 |0 \xAC\xB3 |0 \xAC\xB4 |0 \xAC\xB5 |0 \xAC\xB6 |0 \xAC\xB7 |0 \xAC\xB8 |0 \xAC\xB9 |0 \xAC\xBA |0 \xAC\xBB |0 \xAC\xBC |0 \xAC\xBD |0 \xAC\xBE |0 \xAC\xBF |0 \xAC\xC0 |0 \xAC\xC1 |0 \xAC\xC2 |0 \xAC\xC3 |0 \xAC\xC4 |0 \xAC\xC5 |0 \xAC\xC6 |0 \xAC\xC7 |0 \xAC\xC8 |0 \xAC\xC9 |0 \xAC\xCA |0 \xAC\xCB |0 \xAC\xCC |0 \xAC\xCD |0 \xAC\xCE |0 \xAC\xCF |0 \xAC\xD0 |0 \xAC\xD1 |0 \x5C\x8C |0 \xAC\xD2 |0 \xAC\xD3 |0 \xAC\xD4 |0 \xAC\xD5 |0 \xAC\xD6 |0 \xAC\xD7 |0 \xAC\xD8 |0 \xAC\xD9 |0 \xAC\xDA |0 \xAC\xDB |0 \xAC\xDC |0 \xAC\xDD |0 \xAC\xDE |0 \xAC\xDF |0 \xAC\xE0 |0 \xAC\xE1 |0 \xAC\xE2 |0 \xAC\xE3 |0 \xAC\xE4 |0 \xAC\xE5 |0 \xAC\xE6 |0 \xAC\xE7 |0 \xAC\xE8 |0 \xAC\xE9 |0 \x6A\xED |0 \xAC\xEA |0 \xAC\xEB |0 \xAC\xEC |0 \x63\xF8 |0 \x4F\xBF |0 \x63\xF9 |0 \x4D\xEB |0 \x63\xFA |0 \x58\x6B |0 \x63\xFB |0 \x5A\xBB |0 \x4E\xB5 |0 \x63\xFC |0 \x63\xFD |0 \x4E\xCC |0 \x54\xD1 |0 \x57\xB2 |0 \x64\x41 |0 \xAC\xED |0 \x4A\xBE |0 \x64\x42 |0 \x55\x54 |0 \x4C\xD8 |0 \x52\xC8 |0 \xAC\xEE |0 \x5C\x7D |0 \x51\xD9 |0 \x4C\x77 |0 \x5B\xBC |0 \x57\xC5 |0 \x4C\x64 |0 \xAC\xEF |0 \xAC\xF0 |0 \x53\x46 |0 \x64\x43 |0 \x58\x7F |0 \x64\x44 |0 \x64\x45 |0 \x64\x46 |0 \x51\x57 |0 \x5C\x8A |0 \x55\x91 |0 \x58\x58 |0 \x5B\xAE |0 \x5B\xD4 |0 \x64\x47 |0 \x48\xEC |0 \x64\x48 |0 \x64\x49 |0 \x55\x7C |0 \x59\xEE |0 \x4F\xAC |0 \x64\x4A |0 \x48\xF2 |0 \x54\xDD |0 \x4F\x82 |0 \x64\x4B |0 \x54\xC5 |0 \xAC\xF1 |0 \x64\x4C |0 \x4E\x87 |0 \x4C\xF7 |0 \x59\x44 |0 \x64\x4D |0 \x51\xE6 |0 \x4F\xF7 |0 \x4F\x6A |0 \x57\x53 |0 \x64\x4E |0 \x64\x4F |0 \x4F\xED |0 \x58\xE4 |0 \xAC\xF2 |0 \x56\x88 |0 \x56\xCF |0 \x4E\xCB |0 \x64\x50 |0 \x4E\xA7 |0 \x58\xF6 |0 \x64\x51 |0 \xAC\xF3 |0 \x58\xF7 |0 \x64\x52 |0 \x64\x53 |0 \x4A\xC1 |0 \x64\x54 |0 \x64\x55 |0 \x55\x9F |0 \x57\xAB |0 \x52\x81 |0 \x64\x57 |0 \x49\x61 |0 \x4A\x92 |0 \xAC\xF4 |0 \x64\x58 |0 \x64\x59 |0 \x5C\x7B |0 \x5B\x60 |0 \x64\x5A |0 \x51\xCB |0 \x5C\x5A |0 \x64\x5B |0 \x64\x5C |0 \x64\x5D |0 \x4E\xE9 |0 \x52\x86 |0 \x50\xC1 |0 \x64\x5E |0 \x64\x5F |0 \x4E\xA8 |0 \xAC\xF5 |0 \x64\x60 |0 \x64\x61 |0 \x64\x56 |0 \x4B\xCF |0 \x64\x62 |0 \xAC\xF6 |0 \x64\x63 |0 \x64\x64 |0 \x4E\x5A |0 \x4B\x7E |0 \x51\xC5 |0 \x49\x81 |0 \x64\x65 |0 \x5A\xB4 |0 \x64\x66 |0 \x4C\xBE |0 \x64\x68 |0 \x64\x67 |0 \x4C\x8D |0 \xAC\xF7 |0 \x64\x69 |0 \x49\xF7 |0 \x64\x6A |0 \x64\x6B |0 \x64\x6C |0 \x64\x6D |0 \x64\x6E |0 \x64\x6F |0 \x64\x70 |0 \x5A\x47 |0 \x56\x96 |0 \x64\x71 |0 \x64\x72 |0 \x64\x73 |0 \x64\x74 |0 \x55\x69 |0 \x64\x75 |0 \x64\x76 |0 \x64\x77 |0 \x64\x78 |0 \x64\x79 |0 \x4F\x69 |0 \x64\x7A |0 \x6A\x5E |0 \xAC\xF8 |0 \x4C\xD6 |0 \xAC\xF9 |0 \x54\xB0 |0 \xAC\xFA |0 \xAC\xFB |0 \xAC\xFC |0 \xAC\xFD |0 \xAD\x41 |0 \xAD\x42 |0 \xAD\x43 |0 \x6A\x5F |0 \xAD\x44 |0 \x6A\x60 |0 \x6A\x61 |0 \xAD\x45 |0 \xAD\x46 |0 \xAD\x47 |0 \xAD\x48 |0 \xAD\x49 |0 \xAD\x4A |0 \xAD\x4B |0 \xAD\x4C |0 \xAD\x4D |0 \xAD\x4E |0 \x4D\x7E |0 \x57\x99 |0 \xAD\x4F |0 \xAD\x50 |0 \x5C\xE7 |0 \x4D\xB0 |0 \xAD\x51 |0 \x51\xDD |0 \x67\xB6 |0 \xAD\x52 |0 \x4C\x43 |0 \xAD\x53 |0 \xAD\x54 |0 \xAD\x55 |0 \xAD\x56 |0 \x67\xB8 |0 \xAD\x57 |0 \x67\xB7 |0 \x48\xD4 |0 \xAD\x58 |0 \xAD\x59 |0 \xAD\x5A |0 \xAD\x5B |0 \xAD\x5C |0 \x67\xBA |0 \x5B\x76 |0 \x5C\x90 |0 \xAD\x5D |0 \xAD\x5E |0 \xAD\x5F |0 \x5B\xC2 |0 \xAD\x60 |0 \xAD\x61 |0 \x67\xBC |0 \x55\xEF |0 \xAD\x62 |0 \x67\xBB |0 \xAD\x63 |0 \xAD\x64 |0 \xAD\x65 |0 \xAD\x66 |0 \x67\xBD |0 \xAD\x67 |0 \xAD\x68 |0 \xAD\x69 |0 \xAD\x6A |0 \x67\xBF |0 \xAD\x6B |0 \xAD\x6C |0 \x67\xBE |0 \xAD\x6D |0 \xAD\x6E |0 \xAD\x6F |0 \xAD\x70 |0 \xAD\x71 |0 \xAD\x72 |0 \xAD\x73 |0 \xAD\x74 |0 \x59\x93 |0 \xAD\x75 |0 \x54\x5C |0 \xAD\x76 |0 \x52\x60 |0 \xAD\x77 |0 \xAD\x78 |0 \xAD\x79 |0 \xAD\x7A |0 \xAD\x7B |0 \x4C\xE0 |0 \xAD\x7C |0 \xAD\x7D |0 \xAD\x7E |0 \xAD\x7F |0 \xAD\x81 |0 \x51\x88 |0 \xAD\x82 |0 \xAD\x83 |0 \x6A\xC5 |0 \x58\xDE |0 \x6A\xC6 |0 \xAD\x84 |0 \x58\x7B |0 \xAD\x85 |0 \xAD\x86 |0 \x54\xB9 |0 \xAD\x87 |0 \xAD\x88 |0 \x6A\xC7 |0 \xAD\x89 |0 \xAD\x8A |0 \xAD\x8B |0 \xAD\x8C |0 \xAD\x8D |0 \xAD\x8E |0 \xAD\x8F |0 \x6A\xC8 |0 \x6A\xC9 |0 \xAD\x90 |0 \x6A\xCA |0 \xAD\x91 |0 \xAD\x92 |0 \xAD\x93 |0 \xAD\x94 |0 \xAD\x95 |0 \x5D\x9B |0 \x4C\xFD |0 \xAD\x96 |0 \xAD\x97 |0 \x63\x92 |0 \x5A\x91 |0 \xAD\x98 |0 \x6A\xDF |0 \xAD\x99 |0 \x57\xCB |0 \xAD\x9A |0 \xAD\x9B |0 \xAD\x9C |0 \x4A\x82 |0 \xAD\x9D |0 \xAD\x9E |0 \xAD\x9F |0 \xAD\xA0 |0 \x69\x54 |0 \xAD\xA1 |0 \x59\xED |0 \xAD\xA2 |0 \x6A\xE0 |0 \xAD\xA3 |0 \xAD\xA4 |0 \xAD\xA5 |0 \xAD\xA6 |0 \xAD\xA7 |0 \x58\x89 |0 \x6A\xE1 |0 \xAD\xA8 |0 \xAD\xA9 |0 \x54\x6C |0 \xAD\xAA |0 \xAD\xAB |0 \xAD\xAC |0 \xAD\xAD |0 \xAD\xAE |0 \xAD\xAF |0 \x4B\x74 |0 \x4A\xE3 |0 \x6A\xE3 |0 \xAD\xB0 |0 \xAD\xB1 |0 \xAD\xB2 |0 \x6A\xE2 |0 \x6A\xE4 |0 \xAD\xB3 |0 \xAD\xB4 |0 \x6A\xE5 |0 \xAD\xB5 |0 \xAD\xB6 |0 \xAD\xB7 |0 \xAD\xB8 |0 \x6A\xE6 |0 \xAD\xB9 |0 \x4D\xB1 |0 \x48\xBE |0 \xAD\xBA |0 \x6A\xE7 |0 \xAD\xBB |0 \xAD\xBC |0 \xAD\xBD |0 \xAD\xBE |0 \xAD\xBF |0 \xAD\xC0 |0 \xAD\xC1 |0 \x4C\x4D |0 \x59\xEC |0 \xAD\xC2 |0 \xAD\xC3 |0 \xAD\xC4 |0 \x59\xAA |0 \x50\xCE |0 \xAD\xC5 |0 \x50\x5C |0 \x66\x43 |0 \x5B\x7F |0 \x65\xC7 |0 \xAD\xC6 |0 \xAD\xC7 |0 \xAD\xC8 |0 \xAD\xC9 |0 \x69\x94 |0 \x4B\xF7 |0 \x56\x43 |0 \xAD\xCA |0 \xAD\xCB |0 \x52\xCC |0 \xAD\xCC |0 \x69\x88 |0 \xAD\xCD |0 \x69\x89 |0 \x4C\xFA |0 \x69\x8A |0 \x4D\xC3 |0 \x5A\xC4 |0 \x48\xD1 |0 \xAD\xCE |0 \xAD\xCF |0 \x69\x8B |0 \xAD\xD0 |0 \xAD\xD1 |0 \xAD\xD2 |0 \x69\x8C |0 \xAD\xD3 |0 \x69\x8D |0 \xAD\xD4 |0 \xAD\xD5 |0 \x69\x8E |0 \x69\x8F |0 \x69\x90 |0 \x69\x92 |0 \x69\x91 |0 \x53\x75 |0 \xAD\xD6 |0 \xAD\xD7 |0 \xAD\xD8 |0 \xAD\xD9 |0 \xAD\xDA |0 \xAD\xDB |0 \x69\x93 |0 \xAD\xDC |0 \x4B\xF9 |0 \xAD\xDD |0 \x69\x95 |0 \x59\xAD |0 \x5F\xC6 |0 \x56\x6A |0 \xAD\xDE |0 \xAD\xDF |0 \x4A\x7C |0 \xAD\xE0 |0 \x4B\x42 |0 \xAD\xE1 |0 \x4D\x42 |0 \xAD\xE2 |0 \xAD\xE3 |0 \x52\xF3 |0 \x69\x96 |0 \xAD\xE4 |0 \xAD\xE5 |0 \x69\x97 |0 \xAD\xE6 |0 \xAD\xE7 |0 \xAD\xE8 |0 \x51\x64 |0 \x51\x9C |0 \x5B\xAF |0 \x69\x98 |0 \xAD\xE9 |0 \xAD\xEA |0 \xAD\xEB |0 \xAD\xEC |0 \x69\x99 |0 \xAD\xED |0 \x51\x4A |0 \xAD\xEE |0 \xAD\xEF |0 \xAD\xF0 |0 \x53\xB7 |0 \xAD\xF1 |0 \x4F\xDA |0 \xAD\xF2 |0 \xAD\xF3 |0 \xAD\xF4 |0 \xAD\xF5 |0 \xAD\xF6 |0 \xAD\xF7 |0 \xAD\xF8 |0 \xAD\xF9 |0 \xAD\xFA |0 \xAD\xFB |0 \xAD\xFC |0 \xAD\xFD |0 \xAE\x41 |0 \xAE\x42 |0 \x69\x9A |0 \x4A\xCE |0 \xAE\x43 |0 \xAE\x44 |0 \xAE\x45 |0 \xAE\x46 |0 \xAE\x47 |0 \xAE\x48 |0 \x69\x9B |0 \xAE\x49 |0 \xAE\x4A |0 \xAE\x4B |0 \xAE\x4C |0 \xAE\x4D |0 \xAE\x4E |0 \xAE\x4F |0 \xAE\x50 |0 \xAE\x51 |0 \xAE\x52 |0 \xAE\x53 |0 \xAE\x54 |0 \xAE\x55 |0 \x67\x52 |0 \x67\x51 |0 \xAE\x56 |0 \xAE\x57 |0 \x56\x81 |0 \x59\xDD |0 \xAE\x58 |0 \x56\x61 |0 \x5B\x78 |0 \xAE\x59 |0 \x54\xE1 |0 \xAE\x5A |0 \x50\xDE |0 \x4E\xA0 |0 \xAE\x5B |0 \xAE\x5C |0 \xAE\x5D |0 \xAE\x5E |0 \xAE\x5F |0 \xAE\x60 |0 \x66\x61 |0 \xAE\x61 |0 \xAE\x62 |0 \x58\xA3 |0 \xAE\x63 |0 \x5B\xE1 |0 \xAE\x64 |0 \x4B\xC6 |0 \x4C\xD7 |0 \x66\x60 |0 \x4C\xCD |0 \xAE\x65 |0 \x66\x5F |0 \x4A\x46 |0 \x4D\x69 |0 \x5B\xAA |0 \xAE\x66 |0 \x4C\x95 |0 \x4C\x6A |0 \xAE\x67 |0 \xAE\x68 |0 \xAE\x69 |0 \x4E\xE6 |0 \x4C\x5E |0 \x66\x66 |0 \xAE\x6A |0 \x66\x67 |0 \x48\xB8 |0 \x50\x6F |0 \xAE\x6B |0 \x66\x65 |0 \x5A\x9E |0 \xAE\x6C |0 \x66\x68 |0 \xAE\x6D |0 \xAE\x6E |0 \x66\x69 |0 \xAE\x6F |0 \xAE\x70 |0 \x4C\x6E |0 \xAE\x71 |0 \x66\x62 |0 \x66\x64 |0 \x55\x97 |0 \x5B\xD6 |0 \x5B\x6D |0 \x58\xB1 |0 \x66\x6F |0 \x57\xB7 |0 \x66\x70 |0 \xAE\x72 |0 \x4B\x48 |0 \xAE\x73 |0 \xAE\x74 |0 \xAE\x75 |0 \xAE\x76 |0 \xAE\x77 |0 \x49\x53 |0 \x66\x72 |0 \x56\xA4 |0 \xAE\x78 |0 \xAE\x79 |0 \xAE\x7A |0 \xAE\x7B |0 \xAE\x7C |0 \xAE\x7D |0 \xAE\x7E |0 \x53\x76 |0 \x66\x73 |0 \xAE\x7F |0 \x66\x71 |0 \x53\x7F |0 \x66\x6E |0 \x55\xA3 |0 \x66\x75 |0 \x48\xFA |0 \xAE\x81 |0 \xAE\x82 |0 \x4D\xF9 |0 \xAE\x83 |0 \xAE\x84 |0 \x5C\xB6 |0 \x69\x84 |0 \xAE\x85 |0 \x66\x6A |0 \x66\x6B |0 \x66\x6C |0 \x66\x6D |0 \x66\x76 |0 \x63\xBF |0 \x66\x79 |0 \xAE\x86 |0 \x50\x89 |0 \x59\xC7 |0 \x66\x77 |0 \x66\x7C |0 \x4C\xEB |0 \x66\x78 |0 \xAE\x87 |0 \x4F\x5A |0 \xAE\x88 |0 \x58\xD7 |0 \xAE\x89 |0 \x48\xB6 |0 \xAE\x8A |0 \x66\x7D |0 \x52\xDB |0 \xAE\x8B |0 \xAE\x8C |0 \xAE\x8D |0 \xAE\x8E |0 \x5B\xAB |0 \xAE\x8F |0 \xAE\x90 |0 \xAE\x91 |0 \x4A\xDF |0 \xAE\x92 |0 \xAE\x93 |0 \x51\xF5 |0 \x4E\xB8 |0 \xAE\x94 |0 \xAE\x95 |0 \x66\x7A |0 \x66\x7B |0 \x5A\xDF |0 \x53\xE9 |0 \x52\xD3 |0 \x66\x7F |0 \x53\x47 |0 \x5D\x96 |0 \xAE\x96 |0 \x49\xB0 |0 \xAE\x97 |0 \x66\x85 |0 \xAE\x98 |0 \x4F\x65 |0 \xAE\x99 |0 \xAE\x9A |0 \xAE\x9B |0 \x66\x83 |0 \xAE\x9C |0 \xAE\x9D |0 \xAE\x9E |0 \xAE\x9F |0 \xAE\xA0 |0 \xAE\xA1 |0 \xAE\xA2 |0 \xAE\xA3 |0 \xAE\xA4 |0 \xAE\xA5 |0 \xAE\xA6 |0 \xAE\xA7 |0 \xAE\xA8 |0 \x66\x84 |0 \xAE\xA9 |0 \xAE\xAA |0 \x4C\xAB |0 \xAE\xAB |0 \x57\x71 |0 \x66\x86 |0 \xAE\xAC |0 \xAE\xAD |0 \xAE\xAE |0 \x66\x82 |0 \xAE\xAF |0 \x51\x53 |0 \xAE\xB0 |0 \xAE\xB1 |0 \xAE\xB2 |0 \xAE\xB3 |0 \xAE\xB4 |0 \x53\xA1 |0 \xAE\xB5 |0 \xAE\xB6 |0 \xAE\xB7 |0 \xAE\xB8 |0 \xAE\xB9 |0 \xAE\xBA |0 \xAE\xBB |0 \x56\xF2 |0 \xAE\xBC |0 \x66\x87 |0 \xAE\xBD |0 \x50\xAF |0 \x59\xB7 |0 \x66\x88 |0 \xAE\xBE |0 \xAE\xBF |0 \xAE\xC0 |0 \x4C\xAE |0 \x4C\xAC |0 \xAE\xC1 |0 \x66\x89 |0 \x54\x5B |0 \x57\x94 |0 \xAE\xC2 |0 \xAE\xC3 |0 \xAE\xC4 |0 \x66\x8B |0 \x66\x8C |0 \xAE\xC5 |0 \xAE\xC6 |0 \xAE\xC7 |0 \xAE\xC8 |0 \xAE\xC9 |0 \x66\x8E |0 \xAE\xCA |0 \xAE\xCB |0 \xAE\xCC |0 \xAE\xCD |0 \x58\xC7 |0 \xAE\xCE |0 \x66\x93 |0 \xAE\xCF |0 \x66\x8F |0 \xAE\xD0 |0 \xAE\xD1 |0 \xAE\xD2 |0 \x66\x92 |0 \x54\xF8 |0 \xAE\xD3 |0 \x59\x9D |0 \x66\x8D |0 \xAE\xD4 |0 \xAE\xD5 |0 \x66\x8A |0 \xAE\xD6 |0 \xAE\xD7 |0 \xAE\xD8 |0 \xAE\xD9 |0 \x4C\xB8 |0 \x58\x79 |0 \x52\xE4 |0 \x66\x90 |0 \x66\x91 |0 \x56\xD9 |0 \x57\x68 |0 \x48\xF1 |0 \xAE\xDA |0 \x66\x97 |0 \xAE\xDB |0 \xAE\xDC |0 \xAE\xDD |0 \xAE\xDE |0 \xAE\xDF |0 \x66\x96 |0 \xAE\xE0 |0 \x49\xB1 |0 \xAE\xE1 |0 \xAE\xE2 |0 \xAE\xE3 |0 \xAE\xE4 |0 \x4C\xDF |0 \xAE\xE5 |0 \x66\x98 |0 \xAE\xE6 |0 \xAE\xE7 |0 \xAE\xE8 |0 \xAE\xE9 |0 \xAE\xEA |0 \xAE\xEB |0 \x49\x8D |0 \xAE\xEC |0 \xAE\xED |0 \x56\xC4 |0 \x52\xA3 |0 \x58\x45 |0 \xAE\xEE |0 \xAE\xEF |0 \xAE\xF0 |0 \xAE\xF1 |0 \xAE\xF2 |0 \x66\x9A |0 \xAE\xF3 |0 \xAE\xF4 |0 \x66\xA1 |0 \xAE\xF5 |0 \x53\x93 |0 \xAE\xF6 |0 \x66\x9B |0 \xAE\xF7 |0 \xAE\xF8 |0 \xAE\xF9 |0 \xAE\xFA |0 \xAE\xFB |0 \xAE\xFC |0 \xAE\xFD |0 \xAF\x41 |0 \x55\x65 |0 \xAF\x42 |0 \xAF\x43 |0 \xAF\x44 |0 \xAF\x45 |0 \xAF\x46 |0 \xAF\x47 |0 \x61\xDE |0 \x66\x9F |0 \xAF\x48 |0 \xAF\x49 |0 \xAF\x4A |0 \xAF\x4B |0 \x57\x6E |0 \x66\xA0 |0 \x49\x7B |0 \x5A\x57 |0 \xAF\x4C |0 \xAF\x4D |0 \x59\xDB |0 \xAF\x4E |0 \xAF\x4F |0 \xAF\x50 |0 \x66\x9E |0 \xAF\x51 |0 \x66\x9C |0 \xAF\x52 |0 \xAF\x53 |0 \xAF\x54 |0 \xAF\x55 |0 \xAF\x56 |0 \xAF\x57 |0 \xAF\x58 |0 \xAF\x59 |0 \xAF\x5A |0 \xAF\x5B |0 \xAF\x5C |0 \xAF\x5D |0 \xAF\x5E |0 \xAF\x5F |0 \xAF\x60 |0 \xAF\x61 |0 \xAF\x62 |0 \xAF\x63 |0 \xAF\x64 |0 \xAF\x65 |0 \xAF\x66 |0 \xAF\x67 |0 \x4A\x5C |0 \xAF\x68 |0 \xAF\x69 |0 \xAF\x6A |0 \x65\xAF |0 \xAF\x6B |0 \xAF\x6C |0 \x5C\x74 |0 \xAF\x6D |0 \x6A\xAA |0 \x4A\x95 |0 \xAF\x6E |0 \xAF\x6F |0 \xAF\x70 |0 \xAF\x71 |0 \xAF\x72 |0 \x5B\xC0 |0 \x5B\xC1 |0 \xAF\x73 |0 \xAF\x74 |0 \xAF\x75 |0 \xAF\x76 |0 \xAF\x77 |0 \xAF\x78 |0 \x5B\x8A |0 \x4F\xC9 |0 \xAF\x79 |0 \x6A\xA6 |0 \xAF\x7A |0 \x59\xA7 |0 \x6A\xA7 |0 \x6A\xA8 |0 \xAF\x7B |0 \x6A\xA9 |0 \x4F\xCA |0 \x5A\x7F |0 \xAF\x7C |0 \xAF\x7D |0 \xAF\x7E |0 \xAF\x7F |0 \xAF\x81 |0 \x55\x81 |0 \x55\x82 |0 \xAF\x82 |0 \xAF\x83 |0 \x6A\x62 |0 \xAF\x84 |0 \x55\xE5 |0 \xAF\x85 |0 \x56\xF1 |0 \xAF\x86 |0 \xAF\x87 |0 \xAF\x88 |0 \xAF\x89 |0 \xAF\x8A |0 \xAF\x8B |0 \x61\xB5 |0 \x56\x54 |0 \xAF\x8C |0 \x57\xE7 |0 \x5B\xDA |0 \xAF\x8D |0 \x6A\xAC |0 \x6A\xAD |0 \x6A\xAE |0 \xAF\x8E |0 \xAF\x8F |0 \xAF\x90 |0 \xAF\x91 |0 \x6A\xB1 |0 \xAF\x92 |0 \x4D\xBC |0 \x6A\xB2 |0 \x48\xE2 |0 \x6A\xAF |0 \xAF\x93 |0 \x6A\xB0 |0 \x4F\x42 |0 \x49\xD4 |0 \xAF\x94 |0 \x6A\xB5 |0 \x6A\xB6 |0 \x4B\xE5 |0 \x49\xAF |0 \x58\x6F |0 \x6A\xB3 |0 \x4A\xAB |0 \xAF\x95 |0 \x6A\xB4 |0 \xAF\x96 |0 \xAF\x97 |0 \x6A\xB7 |0 \xAF\x98 |0 \xAF\x99 |0 \xAF\x9A |0 \xAF\x9B |0 \xAF\x9C |0 \x6A\xB8 |0 \xAF\x9D |0 \xAF\x9E |0 \x57\x47 |0 \xAF\x9F |0 \x6A\xB9 |0 \xAF\xA0 |0 \x6A\xBA |0 \xAF\xA1 |0 \xAF\xA2 |0 \xAF\xA3 |0 \x6A\xBB |0 \xAF\xA4 |0 \xAF\xA5 |0 \xAF\xA6 |0 \xAF\xA7 |0 \xAF\xA8 |0 \xAF\xA9 |0 \xAF\xAA |0 \xAF\xAB |0 \x56\x72 |0 \xAF\xAC |0 \x6A\xBC |0 \xAF\xAD |0 \xAF\xAE |0 \xAF\xAF |0 \xAF\xB0 |0 \x6A\xBD |0 \xAF\xB1 |0 \xAF\xB2 |0 \xAF\xB3 |0 \xAF\xB4 |0 \xAF\xB5 |0 \xAF\xB6 |0 \xAF\xB7 |0 \xAF\xB8 |0 \x6A\xBE |0 \xAF\xB9 |0 \xAF\xBA |0 \xAF\xBB |0 \xAF\xBC |0 \xAF\xBD |0 \x6A\xDD |0 \x51\x5C |0 \x4E\xE7 |0 \xAF\xBE |0 \x55\x4B |0 \x59\x7E |0 \x63\x96 |0 \xAF\xBF |0 \xAF\xC0 |0 \xAF\xC1 |0 \xAF\xC2 |0 \x5E\xB2 |0 \x59\xD4 |0 \xAF\xC3 |0 \xAF\xC4 |0 \x5E\xB3 |0 \x48\xAB |0 \x5E\xB4 |0 \xAF\xC5 |0 \xAF\xC6 |0 \x4F\x7A |0 \xAF\xC7 |0 \x5E\xB8 |0 \xAF\xC8 |0 \xAF\xC9 |0 \xAF\xCA |0 \x5C\xC1 |0 \xAF\xCB |0 \x5E\xB6 |0 \x5A\x94 |0 \xAF\xCC |0 \x55\x76 |0 \x5E\xB9 |0 \x5E\xB5 |0 \xAF\xCD |0 \x5E\xBA |0 \x52\x42 |0 \xAF\xCE |0 \xAF\xCF |0 \xAF\xD0 |0 \xAF\xD1 |0 \x5E\xBB |0 \x5E\xC4 |0 \x5E\xBC |0 \xAF\xD2 |0 \xAF\xD3 |0 \x57\xDE |0 \x5B\xA4 |0 \xAF\xD4 |0 \x5E\xCE |0 \xAF\xD5 |0 \x5E\xCC |0 \xAF\xD6 |0 \xAF\xD7 |0 \x5E\xD1 |0 \x4F\x87 |0 \x51\xAA |0 \xAF\xD8 |0 \x5E\xB7 |0 \x5E\xCA |0 \x5E\xCD |0 \x5E\xBD |0 \x4C\x72 |0 \x48\xC4 |0 \x5E\xC6 |0 \x58\xBD |0 \x5E\xC0 |0 \x4E\x48 |0 \xAF\xD9 |0 \x4C\x5C |0 \x5E\xCB |0 \xAF\xDA |0 \xAF\xDB |0 \x5E\xC5 |0 \x5E\xBE |0 \x54\x7B |0 \xAF\xDC |0 \xAF\xDD |0 \xAF\xDE |0 \x59\x5F |0 \x5E\xBF |0 \xAF\xDF |0 \xAF\xE0 |0 \x5E\xC9 |0 \xAF\xE1 |0 \xAF\xE2 |0 \x5E\xCF |0 \xAF\xE3 |0 \xAF\xE4 |0 \x57\xAC |0 \x5E\xC1 |0 \xAF\xE5 |0 \x5E\xC2 |0 \x5E\xC7 |0 \x5E\xC8 |0 \x49\xD3 |0 \x5E\xD0 |0 \x56\x75 |0 \xAF\xE6 |0 \x5A\xB6 |0 \x5E\xDA |0 \x5E\xDE |0 \x56\xA5 |0 \x5E\xE5 |0 \xAF\xE7 |0 \x52\x88 |0 \x5E\xDB |0 \xAF\xE8 |0 \xAF\xE9 |0 \x50\x61 |0 \x5E\xD8 |0 \xAF\xEA |0 \x48\xF9 |0 \x4D\x56 |0 \x5E\xE4 |0 \x5E\xD2 |0 \xAF\xEB |0 \x5E\xC3 |0 \x5E\xD5 |0 \x54\xF3 |0 \x50\x81 |0 \xAF\xEC |0 \xAF\xED |0 \xAF\xEE |0 \xAF\xEF |0 \x55\x5B |0 \xAF\xF0 |0 \xAF\xF1 |0 \xAF\xF2 |0 \x49\x5D |0 \xAF\xF3 |0 \x5A\x42 |0 \xAF\xF4 |0 \xAF\xF5 |0 \x5E\xD9 |0 \xAF\xF6 |0 \xAF\xF7 |0 \x5E\xD4 |0 \xAF\xF8 |0 \x53\xBA |0 \xAF\xF9 |0 \x5E\xDD |0 \xAF\xFA |0 \xAF\xFB |0 \xAF\xFC |0 \xAF\xFD |0 \xB0\x41 |0 \x5C\x62 |0 \x52\x4F |0 \x4C\x56 |0 \x54\x71 |0 \x52\x49 |0 \x5E\xE1 |0 \x5E\xD7 |0 \x5E\xEA |0 \x5E\xD3 |0 \xB0\x42 |0 \xB0\x43 |0 \x5E\xDC |0 \xB0\x44 |0 \x4F\xA4 |0 \x5E\xD6 |0 \xB0\x45 |0 \x5E\xDF |0 \xB0\x46 |0 \xB0\x47 |0 \x5E\xE2 |0 \x5E\xE3 |0 \xB0\x48 |0 \x5E\xF7 |0 \xB0\x49 |0 \xB0\x4A |0 \x5E\xE0 |0 \x5F\x42 |0 \x5E\xE6 |0 \xB0\x4B |0 \xB0\x4C |0 \xB0\x4D |0 \xB0\x4E |0 \xB0\x4F |0 \xB0\x50 |0 \xB0\x51 |0 \xB0\x52 |0 \xB0\x53 |0 \xB0\x54 |0 \x4E\xEA |0 \x4A\xC3 |0 \xB0\x55 |0 \xB0\x56 |0 \x52\x43 |0 \x49\xE6 |0 \x5E\xF9 |0 \xB0\x57 |0 \x5E\xF1 |0 \xB0\x58 |0 \x5E\xEE |0 \xB0\x59 |0 \x5E\xFB |0 \x5E\xED |0 \x59\xEF |0 \x49\xE7 |0 \xB0\x5A |0 \x54\xD6 |0 \x54\xE2 |0 \x5E\xFA |0 \xB0\x5B |0 \x5E\xEC |0 \xB0\x5C |0 \xB0\x5D |0 \xB0\x5E |0 \x5E\xF6 |0 \xB0\x5F |0 \xB0\x60 |0 \x5E\xF4 |0 \xB0\x61 |0 \xB0\x62 |0 \x4F\xA2 |0 \x5E\xF3 |0 \xB0\x63 |0 \x49\xDC |0 \xB0\x64 |0 \xB0\x65 |0 \xB0\x66 |0 \xB0\x67 |0 \xB0\x68 |0 \x5E\xF2 |0 \x4E\xF5 |0 \x5E\xE7 |0 \x4E\x64 |0 \xB0\x69 |0 \x50\xF2 |0 \xB0\x6A |0 \xB0\x6B |0 \xB0\x6C |0 \xB0\x6D |0 \xB0\x6E |0 \x4E\xD3 |0 \x5E\xE8 |0 \x5E\xE9 |0 \xB0\x6F |0 \x5E\xF0 |0 \x5E\xF5 |0 \x5E\xF8 |0 \x4B\x54 |0 \xB0\x70 |0 \x54\xD8 |0 \x4E\x88 |0 \x5E\xFD |0 \x5E\xFC |0 \x5A\x4B |0 \x5F\x41 |0 \x5F\x43 |0 \x5F\x45 |0 \x59\xF0 |0 \x5F\x44 |0 \x5F\x46 |0 \x5F\x47 |0 \x59\xA8 |0 \xB0\x71 |0 \xB0\x72 |0 \xB0\x73 |0 \xB0\x74 |0 \xB0\x75 |0 \xB0\x76 |0 \xB0\x77 |0 \x4D\xC8 |0 \x5F\x49 |0 \xB0\x78 |0 \xB0\x79 |0 \x5F\x56 |0 \x5F\x51 |0 \x5F\x54 |0 \xB0\x7A |0 \xB0\x7B |0 \xB0\x7C |0 \xB0\x7D |0 \xB0\x7E |0 \xB0\x7F |0 \xB0\x81 |0 \x5F\x50 |0 \x53\xCD |0 \xB0\x82 |0 \xB0\x83 |0 \x50\xF1 |0 \xB0\x84 |0 \xB0\x85 |0 \xB0\x86 |0 \xB0\x87 |0 \x55\x4F |0 \xB0\x88 |0 \xB0\x89 |0 \xB0\x8A |0 \x5E\xEB |0 \x5F\x4E |0 \xB0\x8B |0 \xB0\x8C |0 \xB0\x8D |0 \xB0\x8E |0 \x5F\x57 |0 \xB0\x8F |0 \xB0\x90 |0 \x5E\xEF |0 \x5F\x4F |0 \xB0\x91 |0 \x5F\x58 |0 \xB0\x92 |0 \x5F\x4C |0 \xB0\x93 |0 \xB0\x94 |0 \xB0\x95 |0 \xB0\x96 |0 \xB0\x97 |0 \xB0\x98 |0 \xB0\x99 |0 \x5F\x59 |0 \x5F\x53 |0 \x5F\x4D |0 \x52\xA9 |0 \xB0\x9A |0 \xB0\x9B |0 \xB0\x9C |0 \xB0\x9D |0 \x5F\x48 |0 \x50\xB2 |0 \x51\x4B |0 \x5F\x4A |0 \x5F\x4B |0 \xB0\x9E |0 \x5F\x52 |0 \x4E\x92 |0 \x5F\x55 |0 \x5A\x48 |0 \x5F\x5A |0 \xB0\x9F |0 \x5F\x5B |0 \x52\x47 |0 \xB0\xA0 |0 \xB0\xA1 |0 \x5F\x72 |0 \x5F\x5C |0 \xB0\xA2 |0 \xB0\xA3 |0 \xB0\xA4 |0 \x5F\x71 |0 \xB0\xA5 |0 \x4D\x5D |0 \xB0\xA6 |0 \xB0\xA7 |0 \x4F\xD4 |0 \xB0\xA8 |0 \x4F\xF9 |0 \xB0\xA9 |0 \xB0\xAA |0 \x4D\xC9 |0 \xB0\xAB |0 \xB0\xAC |0 \xB0\xAD |0 \xB0\xAE |0 \x5F\x6A |0 \xB0\xAF |0 \x5F\x65 |0 \xB0\xB0 |0 \x5F\x5F |0 \xB0\xB1 |0 \xB0\xB2 |0 \xB0\xB3 |0 \x49\xCA |0 \x5F\x63 |0 \xB0\xB4 |0 \x5F\x6B |0 \x49\xA3 |0 \x5F\x75 |0 \xB0\xB5 |0 \xB0\xB6 |0 \xB0\xB7 |0 \x5F\x5E |0 \xB0\xB8 |0 \xB0\xB9 |0 \xB0\xBA |0 \x53\xCF |0 \x5F\x70 |0 \xB0\xBB |0 \xB0\xBC |0 \xB0\xBD |0 \xB0\xBE |0 \xB0\xBF |0 \x5F\x74 |0 \x51\x83 |0 \x4C\x66 |0 \xB0\xC0 |0 \xB0\xC1 |0 \xB0\xC2 |0 \xB0\xC3 |0 \xB0\xC4 |0 \x5F\x6E |0 \x5F\x6F |0 \xB0\xC5 |0 \xB0\xC6 |0 \xB0\xC7 |0 \x5F\x64 |0 \xB0\xC8 |0 \xB0\xC9 |0 \xB0\xCA |0 \x5F\x5D |0 \xB0\xCB |0 \x5F\x6D |0 \x56\xD0 |0 \xB0\xCC |0 \x5F\x69 |0 \xB0\xCD |0 \xB0\xCE |0 \xB0\xCF |0 \xB0\xD0 |0 \x5F\x62 |0 \x52\x68 |0 \x53\xBB |0 \x57\xAD |0 \x5F\x6C |0 \xB0\xD1 |0 \x5F\x68 |0 \xB0\xD2 |0 \xB0\xD3 |0 \xB0\xD4 |0 \xB0\xD5 |0 \xB0\xD6 |0 \xB0\xD7 |0 \x5F\x61 |0 \xB0\xD8 |0 \xB0\xD9 |0 \xB0\xDA |0 \x5F\x66 |0 \x51\xDB |0 \xB0\xDB |0 \xB0\xDC |0 \xB0\xDD |0 \xB0\xDE |0 \xB0\xDF |0 \xB0\xE0 |0 \x5A\x49 |0 \x5A\x4A |0 \x5F\x73 |0 \x58\x95 |0 \x54\xF7 |0 \xB0\xE1 |0 \xB0\xE2 |0 \xB0\xE3 |0 \xB0\xE4 |0 \xB0\xE5 |0 \xB0\xE6 |0 \xB0\xE7 |0 \xB0\xE8 |0 \x5F\x87 |0 \xB0\xE9 |0 \xB0\xEA |0 \xB0\xEB |0 \xB0\xEC |0 \xB0\xED |0 \xB0\xEE |0 \x5F\x67 |0 \xB0\xEF |0 \xB0\xF0 |0 \xB0\xF1 |0 \x5F\x81 |0 \x51\xE3 |0 \xB0\xF2 |0 \xB0\xF3 |0 \xB0\xF4 |0 \xB0\xF5 |0 \xB0\xF6 |0 \xB0\xF7 |0 \xB0\xF8 |0 \xB0\xF9 |0 \x5F\x82 |0 \xB0\xFA |0 \xB0\xFB |0 \xB0\xFC |0 \xB0\xFD |0 \xB1\x41 |0 \xB1\x42 |0 \xB1\x43 |0 \xB1\x44 |0 \xB1\x45 |0 \xB1\x46 |0 \x5F\x77 |0 \xB1\x47 |0 \xB1\x48 |0 \xB1\x49 |0 \xB1\x4A |0 \xB1\x4B |0 \x5B\xF7 |0 \xB1\x4C |0 \x5F\x79 |0 \x5F\x78 |0 \x4C\xEF |0 \x5F\x76 |0 \xB1\x4D |0 \xB1\x4E |0 \xB1\x4F |0 \xB1\x50 |0 \x53\xCE |0 \xB1\x51 |0 \x4B\xAC |0 \xB1\x52 |0 \xB1\x53 |0 \xB1\x54 |0 \xB1\x55 |0 \xB1\x56 |0 \x5F\x83 |0 \xB1\x57 |0 \x4D\xF8 |0 \x5A\xE0 |0 \x5F\x88 |0 \xB1\x58 |0 \xB1\x59 |0 \xB1\x5A |0 \x4A\xCF |0 \xB1\x5B |0 \x5F\x7A |0 \xB1\x5C |0 \x50\x9C |0 \x5F\x84 |0 \xB1\x5D |0 \x5F\x7F |0 \xB1\x5E |0 \x5F\x7D |0 \xB1\x5F |0 \xB1\x60 |0 \xB1\x61 |0 \xB1\x62 |0 \xB1\x63 |0 \xB1\x64 |0 \xB1\x65 |0 \x4B\x79 |0 \xB1\x66 |0 \xB1\x67 |0 \xB1\x68 |0 \xB1\x69 |0 \x5F\x7B |0 \x5F\x7C |0 \x5F\x7E |0 \xB1\x6A |0 \x4F\x4F |0 \x5F\x85 |0 \xB1\x6B |0 \x5F\x86 |0 \xB1\x6C |0 \xB1\x6D |0 \xB1\x6E |0 \xB1\x6F |0 \xB1\x70 |0 \xB1\x71 |0 \xB1\x72 |0 \xB1\x73 |0 \x5F\x96 |0 \xB1\x74 |0 \x52\x69 |0 \xB1\x75 |0 \xB1\x76 |0 \x56\x83 |0 \xB1\x77 |0 \xB1\x78 |0 \xB1\x79 |0 \xB1\x7A |0 \x5F\x93 |0 \xB1\x7B |0 \xB1\x7C |0 \xB1\x7D |0 \xB1\x7E |0 \xB1\x7F |0 \xB1\x81 |0 \xB1\x82 |0 \xB1\x83 |0 \xB1\x84 |0 \xB1\x85 |0 \xB1\x86 |0 \xB1\x87 |0 \xB1\x88 |0 \x5C\xE0 |0 \xB1\x89 |0 \xB1\x8A |0 \x53\xD0 |0 \xB1\x8B |0 \x5F\x95 |0 \xB1\x8C |0 \xB1\x8D |0 \xB1\x8E |0 \x5B\x95 |0 \x5F\x94 |0 \x5F\x91 |0 \xB1\x8F |0 \xB1\x90 |0 \x5F\x8D |0 \xB1\x91 |0 \x5F\x90 |0 \xB1\x92 |0 \x5F\x89 |0 \xB1\x93 |0 \xB1\x94 |0 \x58\xED |0 \xB1\x95 |0 \xB1\x96 |0 \xB1\x97 |0 \xB1\x98 |0 \x54\xD7 |0 \x5F\x8F |0 \xB1\x99 |0 \xB1\x9A |0 \x5F\x8A |0 \xB1\x9B |0 \xB1\x9C |0 \x5F\x8B |0 \x56\x93 |0 \xB1\x9D |0 \x5F\x8E |0 \xB1\x9E |0 \xB1\x9F |0 \x49\x6D |0 \xB1\xA0 |0 \xB1\xA1 |0 \xB1\xA2 |0 \xB1\xA3 |0 \xB1\xA4 |0 \xB1\xA5 |0 \x50\xB5 |0 \xB1\xA6 |0 \x4E\xBA |0 \x5F\x92 |0 \xB1\xA7 |0 \xB1\xA8 |0 \x5F\x98 |0 \xB1\xA9 |0 \x5F\x97 |0 \x5F\x8C |0 \xB1\xAA |0 \xB1\xAB |0 \xB1\xAC |0 \xB1\xAD |0 \xB1\xAE |0 \x53\x8F |0 \xB1\xAF |0 \xB1\xB0 |0 \xB1\xB1 |0 \x5F\x9C |0 \xB1\xB2 |0 \xB1\xB3 |0 \xB1\xB4 |0 \xB1\xB5 |0 \xB1\xB6 |0 \xB1\xB7 |0 \xB1\xB8 |0 \xB1\xB9 |0 \xB1\xBA |0 \xB1\xBB |0 \xB1\xBC |0 \x5F\xA3 |0 \xB1\xBD |0 \xB1\xBE |0 \x5F\xA2 |0 \xB1\xBF |0 \xB1\xC0 |0 \xB1\xC1 |0 \xB1\xC2 |0 \xB1\xC3 |0 \xB1\xC4 |0 \xB1\xC5 |0 \xB1\xC6 |0 \xB1\xC7 |0 \xB1\xC8 |0 \xB1\xC9 |0 \xB1\xCA |0 \x5F\x99 |0 \xB1\xCB |0 \xB1\xCC |0 \xB1\xCD |0 \xB1\xCE |0 \x52\x90 |0 \xB1\xCF |0 \x51\xFA |0 \xB1\xD0 |0 \xB1\xD1 |0 \xB1\xD2 |0 \x5B\x82 |0 \xB1\xD3 |0 \xB1\xD4 |0 \x57\xB4 |0 \xB1\xD5 |0 \xB1\xD6 |0 \xB1\xD7 |0 \xB1\xD8 |0 \x5F\x9E |0 \xB1\xD9 |0 \x49\xCB |0 \xB1\xDA |0 \xB1\xDB |0 \xB1\xDC |0 \xB1\xDD |0 \xB1\xDE |0 \xB1\xDF |0 \xB1\xE0 |0 \xB1\xE1 |0 \xB1\xE2 |0 \x52\xE7 |0 \x55\xDE |0 \xB1\xE3 |0 \xB1\xE4 |0 \xB1\xE5 |0 \xB1\xE6 |0 \xB1\xE7 |0 \xB1\xE8 |0 \xB1\xE9 |0 \xB1\xEA |0 \xB1\xEB |0 \xB1\xEC |0 \x54\x5E |0 \x5F\x9B |0 \x5F\x9D |0 \x5F\x9F |0 \x5F\xA1 |0 \x48\xA9 |0 \x49\x6E |0 \xB1\xED |0 \xB1\xEE |0 \xB1\xEF |0 \xB1\xF0 |0 \xB1\xF1 |0 \x5F\xAB |0 \xB1\xF2 |0 \xB1\xF3 |0 \xB1\xF4 |0 \xB1\xF5 |0 \x5F\xA5 |0 \x4F\x56 |0 \x54\xEE |0 \xB1\xF6 |0 \xB1\xF7 |0 \xB1\xF8 |0 \xB1\xF9 |0 \xB1\xFA |0 \xB1\xFB |0 \xB1\xFC |0 \xB1\xFD |0 \xB2\x41 |0 \xB2\x42 |0 \xB2\x43 |0 \x5F\xA0 |0 \xB2\x44 |0 \xB2\x45 |0 \x5F\xA4 |0 \xB2\x46 |0 \xB2\x47 |0 \xB2\x48 |0 \xB2\x49 |0 \x5F\xA8 |0 \xB2\x4A |0 \xB2\x4B |0 \xB2\x4C |0 \xB2\x4D |0 \xB2\x4E |0 \x5F\xA7 |0 \xB2\x4F |0 \xB2\x50 |0 \xB2\x51 |0 \x5F\xA6 |0 \xB2\x52 |0 \xB2\x53 |0 \xB2\x54 |0 \xB2\x55 |0 \xB2\x56 |0 \xB2\x57 |0 \xB2\x58 |0 \xB2\x59 |0 \xB2\x5A |0 \x5F\xAC |0 \xB2\x5B |0 \x5A\xCB |0 \xB2\x5C |0 \xB2\x5D |0 \xB2\x5E |0 \xB2\x5F |0 \x5F\xB2 |0 \x5F\xA9 |0 \x5F\xAD |0 \xB2\x60 |0 \xB2\x61 |0 \x50\xD8 |0 \xB2\x62 |0 \xB2\x63 |0 \xB2\x64 |0 \xB2\x65 |0 \xB2\x66 |0 \x49\x41 |0 \x5F\xB5 |0 \xB2\x67 |0 \x5F\xB0 |0 \xB2\x68 |0 \xB2\x69 |0 \xB2\x6A |0 \xB2\x6B |0 \xB2\x6C |0 \xB2\x6D |0 \xB2\x6E |0 \x5F\xB1 |0 \xB2\x6F |0 \xB2\x70 |0 \xB2\x71 |0 \xB2\x72 |0 \xB2\x73 |0 \xB2\x74 |0 \xB2\x75 |0 \xB2\x76 |0 \xB2\x77 |0 \xB2\x78 |0 \xB2\x79 |0 \x59\x46 |0 \x5F\xB4 |0 \xB2\x7A |0 \xB2\x7B |0 \xB2\x7C |0 \xB2\x7D |0 \xB2\x7E |0 \xB2\x7F |0 \xB2\x81 |0 \x5F\xAE |0 \xB2\x82 |0 \xB2\x83 |0 \xB2\x84 |0 \x5F\xAF |0 \xB2\x85 |0 \x58\xBC |0 \xB2\x86 |0 \xB2\x87 |0 \xB2\x88 |0 \x5F\xB3 |0 \x55\xEC |0 \x5F\xB8 |0 \xB2\x89 |0 \xB2\x8A |0 \xB2\x8B |0 \xB2\x8C |0 \xB2\x8D |0 \xB2\x8E |0 \x5F\xB7 |0 \xB2\x8F |0 \x5F\xB6 |0 \xB2\x90 |0 \xB2\x91 |0 \xB2\x92 |0 \xB2\x93 |0 \xB2\x94 |0 \xB2\x95 |0 \xB2\x96 |0 \x5F\xBA |0 \xB2\x97 |0 \xB2\x98 |0 \xB2\x99 |0 \xB2\x9A |0 \xB2\x9B |0 \xB2\x9C |0 \xB2\x9D |0 \x4F\x86 |0 \xB2\x9E |0 \xB2\x9F |0 \xB2\xA0 |0 \xB2\xA1 |0 \xB2\xA2 |0 \x49\xD7 |0 \x52\x8B |0 \xB2\xA3 |0 \xB2\xA4 |0 \x5F\xB9 |0 \xB2\xA5 |0 \x53\x5A |0 \xB2\xA6 |0 \xB2\xA7 |0 \xB2\xA8 |0 \xB2\xA9 |0 \xB2\xAA |0 \xB2\xAB |0 \x5F\xBB |0 \xB2\xAC |0 \xB2\xAD |0 \xB2\xAE |0 \xB2\xAF |0 \xB2\xB0 |0 \xB2\xB1 |0 \xB2\xB2 |0 \x56\xD8 |0 \xB2\xB3 |0 \xB2\xB4 |0 \xB2\xB5 |0 \xB2\xB6 |0 \x4C\x4A |0 \xB2\xB7 |0 \xB2\xB8 |0 \xB2\xB9 |0 \xB2\xBA |0 \xB2\xBB |0 \xB2\xBC |0 \xB2\xBD |0 \xB2\xBE |0 \xB2\xBF |0 \xB2\xC0 |0 \xB2\xC1 |0 \xB2\xC2 |0 \xB2\xC3 |0 \xB2\xC4 |0 \xB2\xC5 |0 \xB2\xC6 |0 \xB2\xC7 |0 \x5A\xE4 |0 \xB2\xC8 |0 \xB2\xC9 |0 \xB2\xCA |0 \x5F\xBC |0 \xB2\xCB |0 \xB2\xCC |0 \xB2\xCD |0 \xB2\xCE |0 \xB2\xCF |0 \x5F\xBE |0 \xB2\xD0 |0 \xB2\xD1 |0 \xB2\xD2 |0 \xB2\xD3 |0 \xB2\xD4 |0 \xB2\xD5 |0 \xB2\xD6 |0 \xB2\xD7 |0 \xB2\xD8 |0 \xB2\xD9 |0 \xB2\xDA |0 \x52\xA1 |0 \xB2\xDB |0 \xB2\xDC |0 \xB2\xDD |0 \xB2\xDE |0 \x5F\xC0 |0 \xB2\xDF |0 \xB2\xE0 |0 \xB2\xE1 |0 \xB2\xE2 |0 \xB2\xE3 |0 \xB2\xE4 |0 \xB2\xE5 |0 \xB2\xE6 |0 \xB2\xE7 |0 \xB2\xE8 |0 \xB2\xE9 |0 \xB2\xEA |0 \xB2\xEB |0 \xB2\xEC |0 \xB2\xED |0 \xB2\xEE |0 \x5F\xBD |0 \xB2\xEF |0 \x5F\xBF |0 \xB2\xF0 |0 \xB2\xF1 |0 \xB2\xF2 |0 \xB2\xF3 |0 \xB2\xF4 |0 \xB2\xF5 |0 \xB2\xF6 |0 \xB2\xF7 |0 \xB2\xF8 |0 \xB2\xF9 |0 \xB2\xFA |0 \xB2\xFB |0 \xB2\xFC |0 \xB2\xFD |0 \x5B\x5A |0 \xB3\x41 |0 \xB3\x42 |0 \xB3\x43 |0 \x5F\xC1 |0 \xB3\x44 |0 \xB3\x45 |0 \xB3\x46 |0 \xB3\x47 |0 \xB3\x48 |0 \xB3\x49 |0 \xB3\x4A |0 \xB3\x4B |0 \xB3\x4C |0 \xB3\x4D |0 \xB3\x4E |0 \xB3\x4F |0 \xB3\x50 |0 \xB3\x51 |0 \xB3\x52 |0 \xB3\x53 |0 \x69\xAD |0 \x4E\x42 |0 \x51\xB1 |0 \x53\x50 |0 \x51\xC6 |0 \xB3\x54 |0 \xB3\x55 |0 \x69\xAE |0 \xB3\x56 |0 \xB3\x57 |0 \xB3\x58 |0 \xB3\x59 |0 \xB3\x5A |0 \x58\xE8 |0 \xB3\x5B |0 \xB3\x5C |0 \xB3\x5D |0 \x5A\x7D |0 \xB3\x5E |0 \xB3\x5F |0 \xB3\x60 |0 \x66\x5D |0 \xB3\x61 |0 \xB3\x62 |0 \xB3\x63 |0 \xB3\x64 |0 \xB3\x65 |0 \xB3\x66 |0 \xB3\x67 |0 \xB3\x68 |0 \x4A\x87 |0 \x69\xAF |0 \xB3\x69 |0 \x69\xB0 |0 \xB3\x6A |0 \xB3\x6B |0 \x55\xAC |0 \xB3\x6C |0 \xB3\x6D |0 \xB3\x6E |0 \xB3\x6F |0 \xB3\x70 |0 \xB3\x71 |0 \xB3\x72 |0 \x4D\xE6 |0 \x69\xB2 |0 \x69\xB4 |0 \x69\xB3 |0 \x56\x85 |0 \x58\x5A |0 \x69\xB1 |0 \x55\xB3 |0 \x59\xCE |0 \x51\xEB |0 \xB3\x73 |0 \xB3\x74 |0 \xB3\x75 |0 \xB3\x76 |0 \xB3\x77 |0 \xB3\x78 |0 \xB3\x79 |0 \x57\xC2 |0 \x69\xB7 |0 \x48\xF5 |0 \x69\xB6 |0 \xB3\x7A |0 \xB3\x7B |0 \xB3\x7C |0 \xB3\x7D |0 \xB3\x7E |0 \x69\xBD |0 \xB3\x7F |0 \x49\xCE |0 \xB3\x81 |0 \xB3\x82 |0 \xB3\x83 |0 \xB3\x84 |0 \xB3\x85 |0 \xB3\x86 |0 \x59\x61 |0 \x69\xB9 |0 \xB3\x87 |0 \xB3\x88 |0 \xB3\x89 |0 \xB3\x8A |0 \xB3\x8B |0 \x69\xBB |0 \x5A\xE8 |0 \xB3\x8C |0 \xB3\x8D |0 \x69\xBA |0 \x69\xB5 |0 \x69\xBE |0 \x69\xBC |0 \xB3\x8E |0 \x69\xB8 |0 \xB3\x8F |0 \xB3\x90 |0 \x69\xC6 |0 \x69\xC3 |0 \x69\xC5 |0 \xB3\x91 |0 \xB3\x92 |0 \x69\xC9 |0 \x69\xC1 |0 \x69\xBF |0 \xB3\x93 |0 \xB3\x94 |0 \xB3\x95 |0 \x69\xC4 |0 \xB3\x96 |0 \xB3\x97 |0 \xB3\x98 |0 \xB3\x99 |0 \xB3\x9A |0 \x5B\xFA |0 \xB3\x9B |0 \xB3\x9C |0 \xB3\x9D |0 \x69\xC0 |0 \xB3\x9E |0 \x54\x9A |0 \x55\x7F |0 \xB3\x9F |0 \x69\xC7 |0 \x4D\x66 |0 \x4B\x50 |0 \xB3\xA0 |0 \xB3\xA1 |0 \x69\xC2 |0 \x69\xC8 |0 \x69\xCF |0 \x69\xD5 |0 \xB3\xA2 |0 \xB3\xA3 |0 \x4E\x77 |0 \xB3\xA4 |0 \xB3\xA5 |0 \xB3\xA6 |0 \x69\xD4 |0 \x57\x7C |0 \xB3\xA7 |0 \x5B\xEA |0 \xB3\xA8 |0 \xB3\xA9 |0 \x69\xD1 |0 \x69\xD3 |0 \xB3\xAA |0 \xB3\xAB |0 \xB3\xAC |0 \xB3\xAD |0 \x4C\xF1 |0 \xB3\xAE |0 \xB3\xAF |0 \xB3\xB0 |0 \xB3\xB1 |0 \x69\xCA |0 \xB3\xB2 |0 \xB3\xB3 |0 \xB3\xB4 |0 \x69\xCD |0 \x51\xF8 |0 \xB3\xB5 |0 \x5B\x7D |0 \x69\xCB |0 \x69\xCC |0 \x69\xCE |0 \x69\xD2 |0 \xB3\xB6 |0 \xB3\xB7 |0 \xB3\xB8 |0 \x69\xD8 |0 \x5A\x5C |0 \xB3\xB9 |0 \xB3\xBA |0 \xB3\xBB |0 \xB3\xBC |0 \x4B\xE9 |0 \xB3\xBD |0 \x55\xF0 |0 \xB3\xBE |0 \x4C\x85 |0 \x69\xD6 |0 \xB3\xBF |0 \xB3\xC0 |0 \xB3\xC1 |0 \x69\xD7 |0 \x69\xD9 |0 \x69\xDC |0 \x69\xDA |0 \xB3\xC2 |0 \xB3\xC3 |0 \x69\xDB |0 \xB3\xC4 |0 \xB3\xC5 |0 \xB3\xC6 |0 \xB3\xC7 |0 \x59\x71 |0 \x69\xD0 |0 \xB3\xC8 |0 \x57\x69 |0 \xB3\xC9 |0 \x57\xCE |0 \x5B\xA8 |0 \xB3\xCA |0 \x69\xE2 |0 \xB3\xCB |0 \x52\x7B |0 \xB3\xCC |0 \x69\xDF |0 \xB3\xCD |0 \xB3\xCE |0 \x50\xAE |0 \x69\xEB |0 \x69\xDD |0 \xB3\xCF |0 \x69\xE0 |0 \xB3\xD0 |0 \xB3\xD1 |0 \xB3\xD2 |0 \x69\xE7 |0 \xB3\xD3 |0 \xB3\xD4 |0 \xB3\xD5 |0 \xB3\xD6 |0 \x69\xE1 |0 \xB3\xD7 |0 \xB3\xD8 |0 \x69\xE6 |0 \xB3\xD9 |0 \xB3\xDA |0 \x69\xE5 |0 \xB3\xDB |0 \xB3\xDC |0 \x69\xE8 |0 \xB3\xDD |0 \xB3\xDE |0 \xB3\xDF |0 \x69\xDE |0 \xB3\xE0 |0 \xB3\xE1 |0 \x69\xE3 |0 \x69\xE9 |0 \xB3\xE2 |0 \xB3\xE3 |0 \xB3\xE4 |0 \xB3\xE5 |0 \xB3\xE6 |0 \xB3\xE7 |0 \xB3\xE8 |0 \x5A\x4C |0 \x69\xE4 |0 \x49\xF4 |0 \xB3\xE9 |0 \xB3\xEA |0 \x69\xF1 |0 \xB3\xEB |0 \x58\xAA |0 \xB3\xEC |0 \xB3\xED |0 \xB3\xEE |0 \xB3\xEF |0 \x69\xF4 |0 \xB3\xF0 |0 \xB3\xF1 |0 \xB3\xF2 |0 \x4E\x68 |0 \xB3\xF3 |0 \x69\xF8 |0 \xB3\xF4 |0 \xB3\xF5 |0 \xB3\xF6 |0 \xB3\xF7 |0 \xB3\xF8 |0 \xB3\xF9 |0 \x69\xEF |0 \xB3\xFA |0 \xB3\xFB |0 \x69\xF5 |0 \x69\xF7 |0 \x69\xF9 |0 \xB3\xFC |0 \xB3\xFD |0 \xB4\x41 |0 \xB4\x42 |0 \xB4\x43 |0 \xB4\x44 |0 \xB4\x45 |0 \xB4\x46 |0 \x69\xF2 |0 \xB4\x47 |0 \x69\xF0 |0 \xB4\x48 |0 \xB4\x49 |0 \xB4\x4A |0 \x4D\xFA |0 \xB4\x4B |0 \x4B\x9C |0 \xB4\x4C |0 \xB4\x4D |0 \xB4\x4E |0 \xB4\x4F |0 \x69\xEE |0 \x69\xF6 |0 \x69\xEC |0 \x69\xED |0 \xB4\x50 |0 \xB4\x51 |0 \xB4\x52 |0 \x69\xEA |0 \x6A\x46 |0 \xB4\x53 |0 \x6A\x43 |0 \xB4\x54 |0 \xB4\x55 |0 \x6A\x42 |0 \xB4\x56 |0 \xB4\x57 |0 \x69\xF3 |0 \xB4\x58 |0 \x54\xD9 |0 \xB4\x59 |0 \xB4\x5A |0 \xB4\x5B |0 \xB4\x5C |0 \xB4\x5D |0 \x69\xFA |0 \xB4\x5E |0 \xB4\x5F |0 \xB4\x60 |0 \x6A\x45 |0 \xB4\x61 |0 \xB4\x62 |0 \xB4\x63 |0 \xB4\x64 |0 \xB4\x65 |0 \xB4\x66 |0 \xB4\x67 |0 \x52\x99 |0 \xB4\x68 |0 \xB4\x69 |0 \xB4\x6A |0 \xB4\x6B |0 \xB4\x6C |0 \xB4\x6D |0 \xB4\x6E |0 \xB4\x6F |0 \x69\xFC |0 \xB4\x70 |0 \xB4\x71 |0 \x6A\x47 |0 \x6A\x49 |0 \x6A\x44 |0 \xB4\x72 |0 \x69\xFB |0 \xB4\x73 |0 \xB4\x74 |0 \xB4\x75 |0 \x6A\x4B |0 \xB4\x76 |0 \x6A\x4A |0 \xB4\x77 |0 \xB4\x78 |0 \xB4\x79 |0 \xB4\x7A |0 \x51\xDC |0 \xB4\x7B |0 \xB4\x7C |0 \x6A\x4E |0 \xB4\x7D |0 \xB4\x7E |0 \x6A\x50 |0 \xB4\x7F |0 \xB4\x81 |0 \xB4\x82 |0 \xB4\x83 |0 \xB4\x84 |0 \x6A\x41 |0 \xB4\x85 |0 \xB4\x86 |0 \xB4\x87 |0 \x6A\x51 |0 \x6A\x4C |0 \xB4\x88 |0 \xB4\x89 |0 \xB4\x8A |0 \xB4\x8B |0 \xB4\x8C |0 \x6A\x4F |0 \x69\xFD |0 \x6A\x4D |0 \xB4\x8D |0 \xB4\x8E |0 \xB4\x8F |0 \xB4\x90 |0 \xB4\x91 |0 \xB4\x92 |0 \xB4\x93 |0 \x6A\x52 |0 \xB4\x94 |0 \xB4\x95 |0 \xB4\x96 |0 \xB4\x97 |0 \x6A\x54 |0 \xB4\x98 |0 \xB4\x99 |0 \xB4\x9A |0 \xB4\x9B |0 \x6A\x48 |0 \xB4\x9C |0 \xB4\x9D |0 \xB4\x9E |0 \xB4\x9F |0 \x6A\x53 |0 \xB4\xA0 |0 \xB4\xA1 |0 \xB4\xA2 |0 \x6A\x55 |0 \xB4\xA3 |0 \xB4\xA4 |0 \xB4\xA5 |0 \xB4\xA6 |0 \xB4\xA7 |0 \xB4\xA8 |0 \xB4\xA9 |0 \xB4\xAA |0 \xB4\xAB |0 \xB4\xAC |0 \x58\xB6 |0 \xB4\xAD |0 \xB4\xAE |0 \xB4\xAF |0 \xB4\xB0 |0 \x6A\x58 |0 \xB4\xB1 |0 \xB4\xB2 |0 \xB4\xB3 |0 \xB4\xB4 |0 \x5D\x9A |0 \xB4\xB5 |0 \xB4\xB6 |0 \xB4\xB7 |0 \xB4\xB8 |0 \xB4\xB9 |0 \xB4\xBA |0 \x6A\x59 |0 \xB4\xBB |0 \xB4\xBC |0 \xB4\xBD |0 \xB4\xBE |0 \xB4\xBF |0 \xB4\xC0 |0 \xB4\xC1 |0 \xB4\xC2 |0 \x6A\x57 |0 \xB4\xC3 |0 \x54\xE3 |0 \x6A\x56 |0 \xB4\xC4 |0 \xB4\xC5 |0 \xB4\xC6 |0 \xB4\xC7 |0 \x6A\x5A |0 \xB4\xC8 |0 \xB4\xC9 |0 \xB4\xCA |0 \xB4\xCB |0 \xB4\xCC |0 \x6A\x5B |0 \x4A\xBF |0 \xB4\xCD |0 \xB4\xCE |0 \xB4\xCF |0 \xB4\xD0 |0 \xB4\xD1 |0 \xB4\xD2 |0 \xB4\xD3 |0 \xB4\xD4 |0 \xB4\xD5 |0 \xB4\xD6 |0 \xB4\xD7 |0 \xB4\xD8 |0 \xB4\xD9 |0 \xB4\xDA |0 \xB4\xDB |0 \x67\xC2 |0 \xB4\xDC |0 \xB4\xDD |0 \xB4\xDE |0 \xB4\xDF |0 \xB4\xE0 |0 \xB4\xE1 |0 \x6A\x5C |0 \xB4\xE2 |0 \xB4\xE3 |0 \x6A\x5D |0 \xB4\xE4 |0 \xB4\xE5 |0 \xB4\xE6 |0 \x59\x4A |0 \xB4\xE7 |0 \xB4\xE8 |0 \xB4\xE9 |0 \x6A\xAB |0 \x58\xC5 |0 \xB4\xEA |0 \xB4\xEB |0 \xB4\xEC |0 \xB4\xED |0 \xB4\xEE |0 \xB4\xEF |0 \x58\xCF |0 \x59\x7C |0 \xB4\xF0 |0 \xB4\xF1 |0 \xB4\xF2 |0 \xB4\xF3 |0 \xB4\xF4 |0 \xB4\xF5 |0 \x58\x6E |0 \xB4\xF6 |0 \xB4\xF7 |0 \x4F\x76 |0 \xB4\xF8 |0 \x59\x63 |0 \xB4\xF9 |0 \xB4\xFA |0 \xB4\xFB |0 \xB4\xFC |0 \xB4\xFD |0 \xB5\x41 |0 \xB5\x42 |0 \x4D\xE1 |0 \x61\x8A |0 \x59\xC1 |0 \x69\x62 |0 \x49\xB8 |0 \xB5\x43 |0 \xB5\x44 |0 \x49\x8E |0 \x69\x63 |0 \xB5\x45 |0 \x55\x60 |0 \x4A\x64 |0 \xB5\x46 |0 \x5D\x93 |0 \xB5\x47 |0 \x56\x45 |0 \xB5\x48 |0 \x69\x64 |0 \xB5\x49 |0 \xB5\x4A |0 \xB5\x4B |0 \xB5\x4C |0 \x5B\xD3 |0 \xB5\x4D |0 \xB5\x4E |0 \xB5\x4F |0 \xB5\x50 |0 \xB5\x51 |0 \x69\x65 |0 \x6A\xBF |0 \x69\x66 |0 \xB5\x52 |0 \x5A\xAB |0 \x69\x67 |0 \xB5\x53 |0 \x48\xBF |0 \x6A\xC0 |0 \xB5\x54 |0 \xB5\x55 |0 \x6A\xC1 |0 \xB5\x56 |0 \xB5\x57 |0 \x4A\xFB |0 \xB5\x58 |0 \x53\x7B |0 \xB5\x59 |0 \xB5\x5A |0 \xB5\x5B |0 \xB5\x5C |0 \x56\xBA |0 \xB5\x5D |0 \xB5\x5E |0 \xB5\x5F |0 \x58\xE3 |0 \xB5\x60 |0 \xB5\x61 |0 \xB5\x62 |0 \xB5\x63 |0 \xB5\x64 |0 \x57\x81 |0 \xB5\x65 |0 \xB5\x66 |0 \xB5\x67 |0 \xB5\x68 |0 \xB5\x69 |0 \x69\x68 |0 \xB5\x6A |0 \x5D\x94 |0 \xB5\x6B |0 \xB5\x6C |0 \xB5\x6D |0 \xB5\x6E |0 \xB5\x6F |0 \xB5\x70 |0 \x49\x5B |0 \xB5\x71 |0 \x58\x4E |0 \xB5\x72 |0 \xB5\x73 |0 \xB5\x74 |0 \x4C\xA3 |0 \xB5\x75 |0 \xB5\x76 |0 \xB5\x77 |0 \xB5\x78 |0 \xB5\x79 |0 \x69\x6A |0 \xB5\x7A |0 \xB5\x7B |0 \xB5\x7C |0 \xB5\x7D |0 \x69\x6B |0 \xB5\x7E |0 \xB5\x7F |0 \xB5\x81 |0 \xB5\x82 |0 \x49\xC2 |0 \x51\x71 |0 \xB5\x83 |0 \xB5\x84 |0 \x5C\x50 |0 \x69\x69 |0 \xB5\x85 |0 \xB5\x86 |0 \x69\x6C |0 \xB5\x87 |0 \xB5\x88 |0 \xB5\x89 |0 \xB5\x8A |0 \x69\x6E |0 \xB5\x8B |0 \xB5\x8C |0 \xB5\x8D |0 \x5D\x97 |0 \xB5\x8E |0 \x59\xE0 |0 \x5A\xA2 |0 \xB5\x8F |0 \xB5\x90 |0 \x6A\xC2 |0 \x54\xB8 |0 \xB5\x91 |0 \xB5\x92 |0 \xB5\x93 |0 \xB5\x94 |0 \xB5\x95 |0 \x6A\xC3 |0 \xB5\x96 |0 \xB5\x97 |0 \x69\x6D |0 \x69\x6F |0 \x50\x84 |0 \x69\x70 |0 \xB5\x98 |0 \xB5\x99 |0 \x69\x74 |0 \xB5\x9A |0 \xB5\x9B |0 \xB5\x9C |0 \xB5\x9D |0 \xB5\x9E |0 \xB5\x9F |0 \xB5\xA0 |0 \x69\x76 |0 \x69\x71 |0 \xB5\xA1 |0 \x55\x71 |0 \x53\x82 |0 \xB5\xA2 |0 \xB5\xA3 |0 \xB5\xA4 |0 \x51\xE2 |0 \x4D\x9D |0 \xB5\xA5 |0 \xB5\xA6 |0 \x69\x73 |0 \xB5\xA7 |0 \x69\x75 |0 \xB5\xA8 |0 \xB5\xA9 |0 \xB5\xAA |0 \x4D\x73 |0 \xB5\xAB |0 \xB5\xAC |0 \xB5\xAD |0 \xB5\xAE |0 \xB5\xAF |0 \xB5\xB0 |0 \xB5\xB1 |0 \x69\x7B |0 \xB5\xB2 |0 \xB5\xB3 |0 \xB5\xB4 |0 \xB5\xB5 |0 \xB5\xB6 |0 \x4D\xD5 |0 \xB5\xB7 |0 \x48\xFC |0 \x69\x79 |0 \xB5\xB8 |0 \xB5\xB9 |0 \xB5\xBA |0 \xB5\xBB |0 \xB5\xBC |0 \x69\x78 |0 \x69\x72 |0 \x69\x7A |0 \xB5\xBD |0 \xB5\xBE |0 \xB5\xBF |0 \xB5\xC0 |0 \xB5\xC1 |0 \x69\x77 |0 \xB5\xC2 |0 \xB5\xC3 |0 \xB5\xC4 |0 \x54\xEB |0 \xB5\xC5 |0 \xB5\xC6 |0 \xB5\xC7 |0 \xB5\xC8 |0 \x57\x6A |0 \x69\x7D |0 \xB5\xC9 |0 \xB5\xCA |0 \xB5\xCB |0 \xB5\xCC |0 \x63\x5D |0 \xB5\xCD |0 \xB5\xCE |0 \xB5\xCF |0 \x69\x7C |0 \xB5\xD0 |0 \x69\x7E |0 \xB5\xD1 |0 \xB5\xD2 |0 \xB5\xD3 |0 \xB5\xD4 |0 \xB5\xD5 |0 \xB5\xD6 |0 \xB5\xD7 |0 \xB5\xD8 |0 \xB5\xD9 |0 \xB5\xDA |0 \x69\x7F |0 \xB5\xDB |0 \xB5\xDC |0 \x58\x86 |0 \xB5\xDD |0 \xB5\xDE |0 \xB5\xDF |0 \xB5\xE0 |0 \xB5\xE1 |0 \xB5\xE2 |0 \xB5\xE3 |0 \xB5\xE4 |0 \xB5\xE5 |0 \xB5\xE6 |0 \xB5\xE7 |0 \xB5\xE8 |0 \xB5\xE9 |0 \xB5\xEA |0 \xB5\xEB |0 \xB5\xEC |0 \xB5\xED |0 \xB5\xEE |0 \xB5\xEF |0 \xB5\xF0 |0 \xB5\xF1 |0 \xB5\xF2 |0 \xB5\xF3 |0 \xB5\xF4 |0 \xB5\xF5 |0 \x6A\xC4 |0 \x4F\x94 |0 \xB5\xF6 |0 \xB5\xF7 |0 \xB5\xF8 |0 \xB5\xF9 |0 \xB5\xFA |0 \xB5\xFB |0 \x69\x81 |0 \xB5\xFC |0 \xB5\xFD |0 \xB6\x41 |0 \xB6\x42 |0 \xB6\x43 |0 \xB6\x44 |0 \xB6\x45 |0 \xB6\x46 |0 \xB6\x47 |0 \xB6\x48 |0 \xB6\x49 |0 \xB6\x4A |0 \xB6\x4B |0 \xB6\x4C |0 \xB6\x4D |0 \xB6\x4E |0 \xB6\x4F |0 \xB6\x50 |0 \xB6\x51 |0 \xB6\x52 |0 \x69\x82 |0 \xB6\x53 |0 \xB6\x54 |0 \xB6\x55 |0 \x57\xF6 |0 \xB6\x56 |0 \x59\xA9 |0 \xB6\x57 |0 \x69\x9C |0 \xB6\x58 |0 \xB6\x59 |0 \x4C\xB1 |0 \xB6\x5A |0 \xB6\x5B |0 \xB6\x5C |0 \xB6\x5D |0 \xB6\x5E |0 \xB6\x5F |0 \xB6\x60 |0 \xB6\x61 |0 \xB6\x62 |0 \xB6\x63 |0 \xB6\x64 |0 \xB6\x65 |0 \xB6\x66 |0 \xB6\x67 |0 \xB6\x68 |0 \xB6\x69 |0 \xB6\x6A |0 \xB6\x6B |0 \xB6\x6C |0 \xB6\x6D |0 \xB6\x6E |0 \xB6\x6F |0 \xB6\x70 |0 \xB6\x71 |0 \xB6\x72 |0 \xB6\x73 |0 \xB6\x74 |0 \xB6\x75 |0 \xB6\x76 |0 \xB6\x77 |0 \xB6\x78 |0 \xB6\x79 |0 \xB6\x7A |0 \xB6\x7B |0 \xB6\x7C |0 \xB6\x7D |0 \xB6\x7E |0 \xB6\x7F |0 \xB6\x81 |0 \xB6\x82 |0 \xB6\x83 |0 \xB6\x84 |0 \xB6\x85 |0 \xB6\x86 |0 \xB6\x87 |0 \xB6\x88 |0 \xB6\x89 |0 \xB6\x8A |0 \xB6\x8B |0 \xB6\x8C |0 \xB6\x8D |0 \xB6\x8E |0 \xB6\x8F |0 \xB6\x90 |0 \xB6\x91 |0 \xB6\x92 |0 \xB6\x93 |0 \xB6\x94 |0 \x4E\xFA |0 \x4D\x7B |0 \xB6\x95 |0 \x4D\x87 |0 \x52\x79 |0 \x55\xD2 |0 \x65\xE7 |0 \x50\xBF |0 \x4F\xF4 |0 \x65\xE8 |0 \x65\xE9 |0 \x65\xEA |0 \xB6\x96 |0 \x65\xEB |0 \x65\xEC |0 \x65\xED |0 \x65\xEE |0 \x4F\x67 |0 \xB6\x97 |0 \xB6\x98 |0 \xB6\x99 |0 \x6B\x9C |0 \xB6\x9A |0 \xB6\x9B |0 \xB6\x9C |0 \x6B\x9E |0 \xB6\x9D |0 \x6B\x9F |0 \xB6\x9E |0 \x6B\x9D |0 \xB6\x9F |0 \xB6\xA0 |0 \xB6\xA1 |0 \xB6\xA2 |0 \x4F\x83 |0 \xB6\xA3 |0 \x6B\xA0 |0 \x4A\xA4 |0 \xB6\xA4 |0 \xB6\xA5 |0 \xB6\xA6 |0 \xB6\xA7 |0 \x6B\xA1 |0 \xB6\xA8 |0 \xB6\xA9 |0 \xB6\xAA |0 \x6B\xA2 |0 \xB6\xAB |0 \xB6\xAC |0 \xB6\xAD |0 \x66\xB1 |0 \xB6\xAE |0 \xB6\xAF |0 \xB6\xB0 |0 \xB6\xB1 |0 \xB6\xB2 |0 \xB6\xB3 |0 \xB6\xB4 |0 \xB6\xB5 |0 \xB6\xB6 |0 \xB6\xB7 |0 \xB6\xB8 |0 \xB6\xB9 |0 \x59\x74 |0 \xB6\xBA |0 \xB6\xBB |0 \xB6\xBC |0 \xB6\xBD |0 \xB6\xBE |0 \xB6\xBF |0 \x5D\x8B |0 \xB6\xC0 |0 \xB6\xC1 |0 \xB6\xC2 |0 \xB6\xC3 |0 \xB6\xC4 |0 \xB6\xC5 |0 \xB6\xC6 |0 \xB6\xC7 |0 \xB6\xC8 |0 \xB6\xC9 |0 \xB6\xCA |0 \xB6\xCB |0 \xB6\xCC |0 \xB6\xCD |0 \xB6\xCE |0 \xB6\xCF |0 \xB6\xD0 |0 \xB6\xD1 |0 \xB6\xD2 |0 \xB6\xD3 |0 \xB6\xD4 |0 \xB6\xD5 |0 \xB6\xD6 |0 \xB6\xD7 |0 \xB6\xD8 |0 \xB6\xD9 |0 \xB6\xDA |0 \xB6\xDB |0 \xB6\xDC |0 \xB6\xDD |0 \xB6\xDE |0 \xB6\xDF |0 \xB6\xE0 |0 \xB6\xE1 |0 \xB6\xE2 |0 \xB6\xE3 |0 \xB6\xE4 |0 \xB6\xE5 |0 \xB6\xE6 |0 \xB6\xE7 |0 \xB6\xE8 |0 \xB6\xE9 |0 \xB6\xEA |0 \xB6\xEB |0 \xB6\xEC |0 \xB6\xED |0 \xB6\xEE |0 \xB6\xEF |0 \xB6\xF0 |0 \xB6\xF1 |0 \xB6\xF2 |0 \xB6\xF3 |0 \xB6\xF4 |0 \xB6\xF5 |0 \x6B\xA3 |0 \xB6\xF6 |0 \xB6\xF7 |0 \xB6\xF8 |0 \xB6\xF9 |0 \xB6\xFA |0 \xB6\xFB |0 \xB6\xFC |0 \xB6\xFD |0 \xB7\x41 |0 \x67\xB9 |0 \xB7\x42 |0 \xB7\x43 |0 \xB7\x44 |0 \xB7\x45 |0 \xB7\x46 |0 \xB7\x47 |0 \xB7\x48 |0 \xB7\x49 |0 \xB7\x4A |0 \xB7\x4B |0 \xB7\x4C |0 \xB7\x4D |0 \xB7\x4E |0 \xB7\x4F |0 \xB7\x50 |0 \xB7\x51 |0 \xB7\x52 |0 \xB7\x53 |0 \xB7\x54 |0 \xB7\x55 |0 \xB7\x56 |0 \xB7\x57 |0 \xB7\x58 |0 \xB7\x59 |0 \xB7\x5A |0 \xB7\x5B |0 \xB7\x5C |0 \xB7\x5D |0 \xB7\x5E |0 \xB7\x5F |0 \xB7\x60 |0 \xB7\x61 |0 \xB7\x62 |0 \xB7\x63 |0 \xB7\x64 |0 \xB7\x65 |0 \xB7\x66 |0 \xB7\x67 |0 \xB7\x68 |0 \xB7\x69 |0 \xB7\x6A |0 \xB7\x6B |0 \xB7\x6C |0 \xB7\x6D |0 \xB7\x6E |0 \xB7\x6F |0 \xB7\x70 |0 \xB7\x71 |0 \x5B\x52 |0 \xB7\x72 |0 \xB7\x73 |0 \xB7\x74 |0 \xB7\x75 |0 \xB7\x76 |0 \xB7\x77 |0 \xB7\x78 |0 \xB7\x79 |0 \xB7\x7A |0 \xB7\x7B |0 \xB7\x7C |0 \xB7\x7D |0 \xB7\x7E |0 \xB7\x7F |0 \xB7\x81 |0 \x5A\x9F |0 \x56\xDB |0 \xB7\x82 |0 \xB7\x83 |0 \xB7\x84 |0 \xB7\x85 |0 \xB7\x86 |0 \xB7\x87 |0 \xB7\x88 |0 \xB7\x89 |0 \x55\xC3 |0 \xB7\x8A |0 \xB7\x8B |0 \xB7\x8C |0 \xB7\x8D |0 \xB7\x8E |0 \xB7\x8F |0 \xB7\x90 |0 \xB7\x91 |0 \xB7\x92 |0 \xB7\x93 |0 \xB7\x94 |0 \xB7\x95 |0 \xB7\x96 |0 \xB7\x97 |0 \xB7\x98 |0 \xB7\x99 |0 \xB7\x9A |0 \xB7\x9B |0 \xB7\x9C |0 \xB7\x9D |0 \xB7\x9E |0 \xB7\x9F |0 \xB7\xA0 |0 \xB7\xA1 |0 \xB7\xA2 |0 \xB7\xA3 |0 \xB7\xA4 |0 \xB7\xA5 |0 \xB7\xA6 |0 \xB7\xA7 |0 \xB7\xA8 |0 \xB7\xA9 |0 \xB7\xAA |0 \xB7\xAB |0 \xB7\xAC |0 \xB7\xAD |0 \xB7\xAE |0 \xB7\xAF |0 \xB7\xB0 |0 \xB7\xB1 |0 \xB7\xB2 |0 \xB7\xB3 |0 \xB7\xB4 |0 \xB7\xB5 |0 \xB7\xB6 |0 \xB7\xB7 |0 \xB7\xB8 |0 \xB7\xB9 |0 \xB7\xBA |0 \xB7\xBB |0 \xB7\xBC |0 \xB7\xBD |0 \xB7\xBE |0 \xB7\xBF |0 \xB7\xC0 |0 \xB7\xC1 |0 \xB7\xC2 |0 \xB7\xC3 |0 \xB7\xC4 |0 \xB7\xC5 |0 \xB7\xC6 |0 \xB7\xC7 |0 \xB7\xC8 |0 \xB7\xC9 |0 \xB7\xCA |0 \xB7\xCB |0 \xB7\xCC |0 \xB7\xCD |0 \xB7\xCE |0 \xB7\xCF |0 \xB7\xD0 |0 \xB7\xD1 |0 \xB7\xD2 |0 \xB7\xD3 |0 \xB7\xD4 |0 \xB7\xD5 |0 \xB7\xD6 |0 \xB7\xD7 |0 \xB7\xD8 |0 \xB7\xD9 |0 \xB7\xDA |0 \xB7\xDB |0 \xB7\xDC |0 \xB7\xDD |0 \xB7\xDE |0 \xB7\xDF |0 \xB7\xE0 |0 \xB7\xE1 |0 \xB7\xE2 |0 \xB7\xE3 |0 \xB7\xE4 |0 \xB7\xE5 |0 \xB7\xE6 |0 \xB7\xE7 |0 \xB7\xE8 |0 \xB7\xE9 |0 \xB7\xEA |0 \xB7\xEB |0 \xB7\xEC |0 \xB7\xED |0 \xB7\xEE |0 \xB7\xEF |0 \xB7\xF0 |0 \xB7\xF1 |0 \xB7\xF2 |0 \xB7\xF3 |0 \xB7\xF4 |0 \xB7\xF5 |0 \xB7\xF6 |0 \xB7\xF7 |0 \xB7\xF8 |0 \xB7\xF9 |0 \xB7\xFA |0 \xB7\xFB |0 \xB7\xFC |0 \x63\x60 |0 \xB7\xFD |0 \xB8\x41 |0 \xB8\x42 |0 \xB8\x43 |0 \xB8\x44 |0 \xB8\x45 |0 \xB8\x46 |0 \xB8\x47 |0 \xB8\x48 |0 \xB8\x49 |0 \xB8\x4A |0 \xB8\x4B |0 \xB8\x4C |0 \xB8\x4D |0 \xB8\x4E |0 \xB8\x4F |0 \xB8\x50 |0 \xB8\x51 |0 \xB8\x52 |0 \xB8\x53 |0 \xB8\x54 |0 \xB8\x55 |0 \xB8\x56 |0 \xB8\x57 |0 \xB8\x58 |0 \xB8\x59 |0 \xB8\x5A |0 \xB8\x5B |0 \xB8\x5C |0 \xB8\x5D |0 \x6B\xA4 |0 \xB8\x5E |0 \xB8\x5F |0 \xB8\x60 |0 \xB8\x61 |0 \xB8\x62 |0 \xB8\x63 |0 \xB8\x64 |0 \xB8\x65 |0 \xB8\x66 |0 \xB8\x67 |0 \xB8\x68 |0 \xB8\x69 |0 \xB8\x6A |0 \xB8\x6B |0 \xB8\x6C |0 \xB8\x6D |0 \xB8\x6E |0 \xB8\x6F |0 \xB8\x70 |0 \xB8\x71 |0 \xB8\x72 |0 \xB8\x73 |0 \xB8\x74 |0 \xB8\x75 |0 \xB8\x76 |0 \xB8\x77 |0 \xB8\x78 |0 \xB8\x79 |0 \xB8\x7A |0 \xB8\x7B |0 \xB8\x7C |0 \xB8\x7D |0 \xB8\x7E |0 \xB8\x7F |0 \xB8\x81 |0 \xB8\x82 |0 \xB8\x83 |0 \xB8\x84 |0 \xB8\x85 |0 \xB8\x86 |0 \xB8\x87 |0 \xB8\x88 |0 \xB8\x89 |0 \xB8\x8A |0 \xB8\x8B |0 \xB8\x8C |0 \xB8\x8D |0 \xB8\x8E |0 \xB8\x8F |0 \xB8\x90 |0 \xB8\x91 |0 \xB8\x92 |0 \xB8\x93 |0 \xB8\x94 |0 \xB8\x95 |0 \xB8\x96 |0 \xB8\x97 |0 \xB8\x98 |0 \xB8\x99 |0 \xB8\x9A |0 \xB8\x9B |0 \xB8\x9C |0 \xB8\x9D |0 \x4F\xAE |0 \xB8\x9E |0 \xB8\x9F |0 \xB8\xA0 |0 \xB8\xA1 |0 \xB8\xA2 |0 \x53\xA8 |0 \xB8\xA3 |0 \xB8\xA4 |0 \xB8\xA5 |0 \xB8\xA6 |0 \xB8\xA7 |0 \xB8\xA8 |0 \xB8\xA9 |0 \xB8\xAA |0 \xB8\xAB |0 \xB8\xAC |0 \xB8\xAD |0 \xB8\xAE |0 \xB8\xAF |0 \xB8\xB0 |0 \xB8\xB1 |0 \xB8\xB2 |0 \xB8\xB3 |0 \xB8\xB4 |0 \xB8\xB5 |0 \xB8\xB6 |0 \xB8\xB7 |0 \xB8\xB8 |0 \xB8\xB9 |0 \xB8\xBA |0 \xB8\xBB |0 \xB8\xBC |0 \xB8\xBD |0 \xB8\xBE |0 \xB8\xBF |0 \xB8\xC0 |0 \xB8\xC1 |0 \xB8\xC2 |0 \xB8\xC3 |0 \xB8\xC4 |0 \xB8\xC5 |0 \xB8\xC6 |0 \xB8\xC7 |0 \xB8\xC8 |0 \xB8\xC9 |0 \xB8\xCA |0 \xB8\xCB |0 \xB8\xCC |0 \xB8\xCD |0 \xB8\xCE |0 \xB8\xCF |0 \xB8\xD0 |0 \xB8\xD1 |0 \xB8\xD2 |0 \xB8\xD3 |0 \xB8\xD4 |0 \xB8\xD5 |0 \x5D\xA4 |0 \x4E\xC5 |0 \x4B\xA8 |0 \x4C\xBB |0 \x54\xCE |0 \x4E\xA4 |0 \x5D\xA5 |0 \x5D\xA6 |0 \x56\xD5 |0 \x54\xC2 |0 \x5D\xA7 |0 \x53\xFC |0 \xB8\xD6 |0 \x59\x55 |0 \x59\xE8 |0 \x59\x56 |0 \x4E\xC6 |0 \xB8\xD7 |0 \x4F\x52 |0 \x4E\x85 |0 \x5D\xA8 |0 \x5D\xA9 |0 \x59\x68 |0 \x5D\xAA |0 \x58\xEC |0 \x4B\xEE |0 \x51\xDA |0 \xB8\xD8 |0 \x56\x6F |0 \x4C\x8E |0 \x55\x89 |0 \x4C\x63 |0 \x4F\xF6 |0 \x5B\xA3 |0 \x5D\xAB |0 \x5D\xAC |0 \x53\xBF |0 \x5C\x88 |0 \x55\xB5 |0 \xB8\xD9 |0 \x5B\x49 |0 \x56\x7F |0 \x5B\x90 |0 \x5D\xAD |0 \x5B\xDE |0 \x4A\xC9 |0 \x5D\xAF |0 \x5D\xAE |0 \xB8\xDA |0 \x59\xEA |0 \x5D\xB0 |0 \x5D\xB1 |0 \x5D\xB2 |0 \x55\xD3 |0 \x5D\xB3 |0 \x55\xAA |0 \x5D\xB4 |0 \x5D\xB5 |0 \x4A\x6F |0 \x5B\xEE |0 \x5D\xB6 |0 \x4E\x50 |0 \x4B\x4E |0 \x5D\xB7 |0 \x5D\xB8 |0 \x4D\x8F |0 \x59\x4F |0 \x59\xE7 |0 \x5D\xB9 |0 \x4C\xC2 |0 \x58\x8B |0 \x49\xEE |0 \x5D\xBA |0 \x5D\xBB |0 \xB8\xDB |0 \x4F\x8C |0 \x57\xDB |0 \x5A\x90 |0 \x5D\xBC |0 \x57\xF2 |0 \x5D\xBD |0 \x5A\x75 |0 \x4E\x86 |0 \x5D\xBE |0 \x56\x55 |0 \x56\x70 |0 \x5D\xBF |0 \x54\x8C |0 \x5B\xED |0 \x5D\xC0 |0 \x53\x55 |0 \x4B\xC0 |0 \x5D\xC1 |0 \x4C\x6C |0 \x50\x6E |0 \x5D\xC2 |0 \x5D\xC3 |0 \x56\x4D |0 \x5D\xC4 |0 \x4B\x98 |0 \x5D\xC5 |0 \x51\x62 |0 \x5C\x5B |0 \x5D\xC6 |0 \x56\xB7 |0 \xB8\xDC |0 \x59\xE9 |0 \x52\xB0 |0 \x5D\xC7 |0 \x4B\x9E |0 \x4E\x71 |0 \x5D\xC8 |0 \x58\xB2 |0 \x5D\xC9 |0 \x5D\xCA |0 \x57\xBC |0 \x5D\xCB |0 \x5D\xCC |0 \x5D\xCD |0 \x49\xF6 |0 \x5D\xD0 |0 \x5D\xCE |0 \x59\x89 |0 \x5D\xCF |0 \x52\x75 |0 \x5D\xD1 |0 \xB8\xDD |0 \x5D\xD2 |0 \x5D\xD3 |0 \x5D\xD4 |0 \x58\xBA |0 \x59\xA4 |0 \x48\xF8 |0 \x5D\xD5 |0 \x54\x4B |0 \x5D\xD6 |0 \x4F\x98 |0 \x52\x41 |0 \x5D\xD7 |0 \x5D\xD8 |0 \x52\x9E |0 \x56\xB6 |0 \x5D\xD9 |0 \x5D\xDA |0 \x50\xBD |0 \x53\xD6 |0 \x5D\xDB |0 \x5D\xDC |0 \x54\x54 |0 \x5D\xDD |0 \x5D\xDE |0 \x4D\x68 |0 \xB8\xDE |0 \xB8\xDF |0 \xB8\xE0 |0 \xB8\xE1 |0 \xB8\xE2 |0 \xB8\xE3 |0 \xB8\xE4 |0 \xB8\xE5 |0 \xB8\xE6 |0 \x4E\x8E |0 \xB8\xE7 |0 \xB8\xE8 |0 \xB8\xE9 |0 \xB8\xEA |0 \x4B\xB8 |0 \x6A\xF7 |0 \xB8\xEB |0 \x6A\xF8 |0 \xB8\xEC |0 \xB8\xED |0 \x57\x84 |0 \xB8\xEE |0 \xB8\xEF |0 \xB8\xF0 |0 \xB8\xF1 |0 \xB8\xF2 |0 \xB8\xF3 |0 \xB8\xF4 |0 \xB8\xF5 |0 \x6B\x59 |0 \xB8\xF6 |0 \xB8\xF7 |0 \xB8\xF8 |0 \xB8\xF9 |0 \x66\x81 |0 \xB8\xFA |0 \xB8\xFB |0 \xB8\xFC |0 \xB8\xFD |0 \xB9\x41 |0 \xB9\x42 |0 \x58\x94 |0 \x4E\x5F |0 \xB9\x43 |0 \xB9\x44 |0 \xB9\x45 |0 \xB9\x46 |0 \xB9\x47 |0 \xB9\x48 |0 \xB9\x49 |0 \x4D\xBF |0 \x5A\xA4 |0 \xB9\x4A |0 \xB9\x4B |0 \xB9\x4C |0 \xB9\x4D |0 \xB9\x4E |0 \xB9\x4F |0 \xB9\x50 |0 \x61\x79 |0 \xB9\x51 |0 \xB9\x52 |0 \xB9\x53 |0 \xB9\x54 |0 \x6B\x95 |0 \x49\x4A |0 \x49\xF1 |0 \xB9\x55 |0 \xB9\x56 |0 \xB9\x57 |0 \xB9\x58 |0 \xB9\x59 |0 \xB9\x5A |0 \xB9\x5B |0 \x6B\x96 |0 \xB9\x5C |0 \xB9\x5D |0 \x6B\x98 |0 \xB9\x5E |0 \xB9\x5F |0 \xB9\x60 |0 \x4D\xD0 |0 \x6B\x97 |0 \xB9\x61 |0 \x52\x52 |0 \xB9\x62 |0 \xB9\x63 |0 \xB9\x64 |0 \xB9\x65 |0 \xB9\x66 |0 \xB9\x67 |0 \xB9\x68 |0 \x6B\x9A |0 \xB9\x69 |0 \xB9\x6A |0 \xB9\x6B |0 \x6B\x99 |0 \xB9\x6C |0 \xB9\x6D |0 \xB9\x6E |0 \xB9\x6F |0 \xB9\x70 |0 \xB9\x71 |0 \xB9\x72 |0 \xB9\x73 |0 \xB9\x74 |0 \xB9\x75 |0 \xB9\x76 |0 \xB9\x77 |0 \xB9\x78 |0 \xB9\x79 |0 \xB9\x7A |0 \xB9\x7B |0 \xB9\x7C |0 \xB9\x7D |0 \xB9\x7E |0 \xB9\x7F |0 \xB9\x81 |0 \xB9\x82 |0 \xB9\x83 |0 \xB9\x84 |0 \xB9\x85 |0 \xB9\x86 |0 \xB9\x87 |0 \xB9\x88 |0 \xB9\x89 |0 \xB9\x8A |0 \xB9\x8B |0 \xB9\x8C |0 \xB9\x8D |0 \xB9\x8E |0 \xB9\x8F |0 \xB9\x90 |0 \xB9\x91 |0 \xB9\x92 |0 \xB9\x93 |0 \xB9\x94 |0 \xB9\x95 |0 \xB9\x96 |0 \xB9\x97 |0 \xB9\x98 |0 \xB9\x99 |0 \xB9\x9A |0 \xB9\x9B |0 \xB9\x9C |0 \xB9\x9D |0 \xB9\x9E |0 \xB9\x9F |0 \xB9\xA0 |0 \xB9\xA1 |0 \xB9\xA2 |0 \xB9\xA3 |0 \xB9\xA4 |0 \xB9\xA5 |0 \xB9\xA6 |0 \xB9\xA7 |0 \xB9\xA8 |0 \xB9\xA9 |0 \xB9\xAA |0 \xB9\xAB |0 \xB9\xAC |0 \xB9\xAD |0 \xB9\xAE |0 \xB9\xAF |0 \xB9\xB0 |0 \xB9\xB1 |0 \xB9\xB2 |0 \xB9\xB3 |0 \xB9\xB4 |0 \xB9\xB5 |0 \xB9\xB6 |0 \xB9\xB7 |0 \xB9\xB8 |0 \xB9\xB9 |0 \xB9\xBA |0 \xB9\xBB |0 \xB9\xBC |0 \xB9\xBD |0 \xB9\xBE |0 \xB9\xBF |0 \xB9\xC0 |0 \xB9\xC1 |0 \xB9\xC2 |0 \xB9\xC3 |0 \xB9\xC4 |0 \xB9\xC5 |0 \xB9\xC6 |0 \xB9\xC7 |0 \xB9\xC8 |0 \xB9\xC9 |0 \xB9\xCA |0 \xB9\xCB |0 \xB9\xCC |0 \xB9\xCD |0 \xB9\xCE |0 \xB9\xCF |0 \xB9\xD0 |0 \xB9\xD1 |0 \xB9\xD2 |0 \xB9\xD3 |0 \xB9\xD4 |0 \xB9\xD5 |0 \xB9\xD6 |0 \xB9\xD7 |0 \xB9\xD8 |0 \xB9\xD9 |0 \xB9\xDA |0 \xB9\xDB |0 \xB9\xDC |0 \xB9\xDD |0 \xB9\xDE |0 \xB9\xDF |0 \xB9\xE0 |0 \xB9\xE1 |0 \xB9\xE2 |0 \xB9\xE3 |0 \xB9\xE4 |0 \xB9\xE5 |0 \xB9\xE6 |0 \xB9\xE7 |0 \xB9\xE8 |0 \xB9\xE9 |0 \xB9\xEA |0 \xB9\xEB |0 \xB9\xEC |0 \xB9\xED |0 \xB9\xEE |0 \xB9\xEF |0 \xB9\xF0 |0 \x49\x54 |0 \x5B\x8B |0 \x4C\xB9 |0 \xB9\xF1 |0 \x4D\x51 |0 \x49\xC5 |0 \x5A\xEF |0 \x58\x6D |0 \x48\xDB |0 \x5B\x6B |0 \x4E\x96 |0 \x5B\xC9 |0 \x4C\x57 |0 \x56\xAF |0 \x53\xB5 |0 \x49\x82 |0 \x4D\x5A |0 \x5B\xFB |0 \x4D\x82 |0 \x4C\x41 |0 \x4E\xF9 |0 \x65\xD9 |0 \x65\xDA |0 \x56\xF8 |0 \x4D\x94 |0 \x65\xDB |0 \x4A\xFA |0 \x52\x53 |0 \x4C\x71 |0 \x4D\xD7 |0 \x65\xDC |0 \x5A\xF3 |0 \x65\xDD |0 \x4E\xD5 |0 \x4E\x7F |0 \x65\xDE |0 \x51\x7E |0 \x51\xB7 |0 \x5A\xDE |0 \x5C\x6A |0 \x65\xDF |0 \x65\xE0 |0 \x65\xE3 |0 \x65\xE1 |0 \x65\xE2 |0 \x55\x7E |0 \x4C\xB2 |0 \x4B\xC3 |0 \x65\xE4 |0 \x55\xE9 |0 \x55\x6D |0 \x4A\xCC |0 \xB9\xF2 |0 \xB9\xF3 |0 \x61\xD8 |0 \x53\x83 |0 \x65\xE5 |0 \x50\xB4 |0 \xB9\xF4 |0 \x5C\x58 |0 \x65\xE6 |0 \x5C\x4C |0 \x54\xFB |0 \x5C\xD2 |0 \x5C\xCC |0 \x5A\xDD |0 \xB9\xF5 |0 \x5A\xF8 |0 \x55\x64 |0 \x5A\x4E |0 \x4C\xD2 |0 \x4A\x81 |0 \xB9\xF6 |0 \x55\x83 |0 \x6A\xF5 |0 \xB9\xF7 |0 \xB9\xF8 |0 \xB9\xF9 |0 \x4D\xD4 |0 \xB9\xFA |0 \x6A\xF6 |0 \xB9\xFB |0 \xB9\xFC |0 \x5C\x7F |0 \xB9\xFD |0 \xBA\x41 |0 \x6A\xF0 |0 \x4C\xAF |0 \x5B\x74 |0 \x4C\xCE |0 \x53\xEF |0 \xBA\x42 |0 \xBA\x43 |0 \xBA\x44 |0 \xBA\x45 |0 \xBA\x46 |0 \xBA\x47 |0 \xBA\x48 |0 \xBA\x49 |0 \xBA\x4A |0 \x4A\x63 |0 \xBA\x4B |0 \xBA\x4C |0 \x6A\xF1 |0 \x4A\x4C |0 \xBA\x4D |0 \xBA\x4E |0 \xBA\x4F |0 \xBA\x50 |0 \x5A\xBC |0 \x54\x98 |0 \xBA\x51 |0 \xBA\x52 |0 \xBA\x53 |0 \xBA\x54 |0 \xBA\x55 |0 \x6A\xF3 |0 \xBA\x56 |0 \xBA\x57 |0 \x6A\xF2 |0 \xBA\x58 |0 \xBA\x59 |0 \xBA\x5A |0 \xBA\x5B |0 \xBA\x5C |0 \xBA\x5D |0 \xBA\x5E |0 \xBA\x5F |0 \xBA\x60 |0 \xBA\x61 |0 \x56\xCA |0 \xBA\x62 |0 \xBA\x63 |0 \xBA\x64 |0 \x54\xA3 |0 \xBA\x65 |0 \xBA\x66 |0 \xBA\x67 |0 \xBA\x68 |0 \xBA\x69 |0 \xBA\x6A |0 \xBA\x6B |0 \xBA\x6C |0 \xBA\x6D |0 \xBA\x6E |0 \xBA\x6F |0 \xBA\x70 |0 \xBA\x71 |0 \x6A\xF4 |0 \xBA\x72 |0 \x5C\x84 |0 \x53\x5F |0 \x6B\x60 |0 \xBA\x73 |0 \xBA\x74 |0 \x6B\x5B |0 \xBA\x75 |0 \x6B\x63 |0 \xBA\x76 |0 \x6B\x62 |0 \xBA\x77 |0 \x5B\xB9 |0 \x6B\x61 |0 \xBA\x78 |0 \xBA\x79 |0 \xBA\x7A |0 \x5A\xBD |0 \x6B\x64 |0 \xBA\x7B |0 \x6B\x6C |0 \xBA\x7C |0 \xBA\x7D |0 \xBA\x7E |0 \xBA\x7F |0 \x48\xCE |0 \x4B\x99 |0 \xBA\x81 |0 \x6B\x69 |0 \x6B\x6A |0 \xBA\x82 |0 \x53\x7C |0 \xBA\x83 |0 \xBA\x84 |0 \xBA\x85 |0 \xBA\x86 |0 \x6B\x65 |0 \x6B\x66 |0 \xBA\x87 |0 \xBA\x88 |0 \x6B\x67 |0 \x6B\x6B |0 \xBA\x89 |0 \x4F\xDF |0 \x6B\x68 |0 \x4C\xF9 |0 \xBA\x8A |0 \xBA\x8B |0 \xBA\x8C |0 \x6B\x70 |0 \x6B\x73 |0 \xBA\x8D |0 \xBA\x8E |0 \xBA\x8F |0 \x50\x88 |0 \xBA\x90 |0 \x4D\x93 |0 \x6B\x5C |0 \x6B\x6D |0 \xBA\x91 |0 \xBA\x92 |0 \x51\xB6 |0 \xBA\x93 |0 \xBA\x94 |0 \xBA\x95 |0 \x56\xF7 |0 \xBA\x96 |0 \x4E\xF8 |0 \xBA\x97 |0 \x6B\x6E |0 \x6B\x6F |0 \x6B\x71 |0 \x4B\xE4 |0 \x6B\x72 |0 \xBA\x98 |0 \x6B\x75 |0 \xBA\x99 |0 \xBA\x9A |0 \xBA\x9B |0 \xBA\x9C |0 \xBA\x9D |0 \xBA\x9E |0 \xBA\x9F |0 \x6B\x5D |0 \xBA\xA0 |0 \xBA\xA1 |0 \xBA\xA2 |0 \x6B\x74 |0 \x5A\x5B |0 \xBA\xA3 |0 \x4A\x8D |0 \xBA\xA4 |0 \xBA\xA5 |0 \x56\xA3 |0 \xBA\xA6 |0 \xBA\xA7 |0 \xBA\xA8 |0 \xBA\xA9 |0 \x6B\x76 |0 \xBA\xAA |0 \xBA\xAB |0 \xBA\xAC |0 \xBA\xAD |0 \xBA\xAE |0 \xBA\xAF |0 \xBA\xB0 |0 \xBA\xB1 |0 \x6B\x77 |0 \x4F\xE0 |0 \x6B\x78 |0 \xBA\xB2 |0 \xBA\xB3 |0 \x56\xDE |0 \x6B\x7B |0 \xBA\xB4 |0 \xBA\xB5 |0 \xBA\xB6 |0 \xBA\xB7 |0 \xBA\xB8 |0 \x49\xC7 |0 \x5C\x79 |0 \xBA\xB9 |0 \x6B\x79 |0 \xBA\xBA |0 \x6B\x7A |0 \x6B\x7C |0 \xBA\xBB |0 \x6B\x83 |0 \xBA\xBC |0 \xBA\xBD |0 \xBA\xBE |0 \x6B\x81 |0 \xBA\xBF |0 \xBA\xC0 |0 \xBA\xC1 |0 \x6B\x7F |0 \x6B\x7D |0 \xBA\xC2 |0 \xBA\xC3 |0 \x6B\x82 |0 \xBA\xC4 |0 \xBA\xC5 |0 \x6B\x7E |0 \x6B\x85 |0 \x6B\x86 |0 \xBA\xC6 |0 \x56\xE2 |0 \xBA\xC7 |0 \xBA\xC8 |0 \x63\x5F |0 \x4B\x58 |0 \x6B\x84 |0 \x6B\x89 |0 \x56\xA2 |0 \xBA\xC9 |0 \xBA\xCA |0 \xBA\xCB |0 \xBA\xCC |0 \xBA\xCD |0 \x6B\x87 |0 \x6B\x88 |0 \xBA\xCE |0 \xBA\xCF |0 \xBA\xD0 |0 \xBA\xD1 |0 \xBA\xD2 |0 \xBA\xD3 |0 \x6B\x5E |0 \xBA\xD4 |0 \xBA\xD5 |0 \xBA\xD6 |0 \xBA\xD7 |0 \xBA\xD8 |0 \xBA\xD9 |0 \xBA\xDA |0 \xBA\xDB |0 \xBA\xDC |0 \xBA\xDD |0 \xBA\xDE |0 \xBA\xDF |0 \x49\x64 |0 \xBA\xE0 |0 \xBA\xE1 |0 \x6B\x5F |0 \xBA\xE2 |0 \xBA\xE3 |0 \x4B\x65 |0 \x49\xE3 |0 \xBA\xE4 |0 \x6B\x8D |0 \x6B\x8A |0 \xBA\xE5 |0 \x4B\xD6 |0 \xBA\xE6 |0 \x6B\x8E |0 \xBA\xE7 |0 \x6B\x8B |0 \xBA\xE8 |0 \xBA\xE9 |0 \xBA\xEA |0 \xBA\xEB |0 \xBA\xEC |0 \x6B\x8C |0 \xBA\xED |0 \xBA\xEE |0 \x4A\xD9 |0 \xBA\xEF |0 \x5A\xE9 |0 \xBA\xF0 |0 \xBA\xF1 |0 \xBA\xF2 |0 \x6B\x8F |0 \xBA\xF3 |0 \x4A\x9A |0 \xBA\xF4 |0 \xBA\xF5 |0 \xBA\xF6 |0 \xBA\xF7 |0 \xBA\xF8 |0 \xBA\xF9 |0 \xBA\xFA |0 \x6B\x90 |0 \x6B\x92 |0 \xBA\xFB |0 \xBA\xFC |0 \xBA\xFD |0 \x6B\x91 |0 \xBB\x41 |0 \xBB\x42 |0 \xBB\x43 |0 \xBB\x44 |0 \xBB\x45 |0 \xBB\x46 |0 \xBB\x47 |0 \x6B\x93 |0 \xBB\x48 |0 \x6B\x94 |0 \xBB\x49 |0 \xBB\x4A |0 \xBB\x4B |0 \xBB\x4C |0 \xBB\x4D |0 \xBB\x4E |0 \xBB\x4F |0 \xBB\x50 |0 \xBB\x51 |0 \xBB\x52 |0 \xBB\x53 |0 \xBB\x54 |0 \x55\x8E |0 \x4D\x4A |0 \xBB\x55 |0 \xBB\x56 |0 \x54\x9C |0 \xBB\x57 |0 \xBB\x58 |0 \x4B\xE2 |0 \xBB\x59 |0 \xBB\x5A |0 \xBB\x5B |0 \xBB\x5C |0 \xBB\x5D |0 \xBB\x5E |0 \xBB\x5F |0 \x56\xC8 |0 \xBB\x60 |0 \xBB\x61 |0 \xBB\x62 |0 \xBB\x63 |0 \xBB\x64 |0 \xBB\x65 |0 \xBB\x66 |0 \xBB\x67 |0 \xBB\x68 |0 \xBB\x69 |0 \xBB\x6A |0 \xBB\x6B |0 \xBB\x6C |0 \xBB\x6D |0 \xBB\x6E |0 \xBB\x6F |0 \xBB\x70 |0 \xBB\x71 |0 \xBB\x72 |0 \x65\xA5 |0 \xBB\x73 |0 \xBB\x74 |0 \xBB\x75 |0 \xBB\x76 |0 \xBB\x77 |0 \xBB\x78 |0 \xBB\x79 |0 \xBB\x7A |0 \xBB\x7B |0 \xBB\x7C |0 \xBB\x7D |0 \xBB\x7E |0 \xBB\x7F |0 \xBB\x81 |0 \xBB\x82 |0 \xBB\x83 |0 \xBB\x84 |0 \xBB\x85 |0 \xBB\x86 |0 \xBB\x87 |0 \xBB\x88 |0 \xBB\x89 |0 \xBB\x8A |0 \xBB\x8B |0 \xBB\x8C |0 \xBB\x8D |0 \xBB\x8E |0 \xBB\x8F |0 \xBB\x90 |0 \xBB\x91 |0 \xBB\x92 |0 \xBB\x93 |0 \xBB\x94 |0 \xBB\x95 |0 \xBB\x96 |0 \xBB\x97 |0 \xBB\x98 |0 \xBB\x99 |0 \xBB\x9A |0 \xBB\x9B |0 \xBB\x9C |0 \xBB\x9D |0 \xBB\x9E |0 \xBB\x9F |0 \xBB\xA0 |0 \xBB\xA1 |0 \xBB\xA2 |0 \xBB\xA3 |0 \xBB\xA4 |0 \xBB\xA5 |0 \xBB\xA6 |0 \xBB\xA7 |0 \xBB\xA8 |0 \xBB\xA9 |0 \xBB\xAA |0 \xBB\xAB |0 \xBB\xAC |0 \xBB\xAD |0 \xBB\xAE |0 \xBB\xAF |0 \xBB\xB0 |0 \xBB\xB1 |0 \xBB\xB2 |0 \xBB\xB3 |0 \xBB\xB4 |0 \xBB\xB5 |0 \xBB\xB6 |0 \xBB\xB7 |0 \xBB\xB8 |0 \xBB\xB9 |0 \xBB\xBA |0 \xBB\xBB |0 \xBB\xBC |0 \xBB\xBD |0 \xBB\xBE |0 \xBB\xBF |0 \xBB\xC0 |0 \xBB\xC1 |0 \xBB\xC2 |0 \xBB\xC3 |0 \xBB\xC4 |0 \xBB\xC5 |0 \xBB\xC6 |0 \xBB\xC7 |0 \xBB\xC8 |0 \xBB\xC9 |0 \xBB\xCA |0 \xBB\xCB |0 \xBB\xCC |0 \xBB\xCD |0 \xBB\xCE |0 \xBB\xCF |0 \xBB\xD0 |0 \xBB\xD1 |0 \xBB\xD2 |0 \xBB\xD3 |0 \xBB\xD4 |0 \xBB\xD5 |0 \xBB\xD6 |0 \xBB\xD7 |0 \xBB\xD8 |0 \xBB\xD9 |0 \xBB\xDA |0 \xBB\xDB |0 \xBB\xDC |0 \xBB\xDD |0 \xBB\xDE |0 \xBB\xDF |0 \xBB\xE0 |0 \xBB\xE1 |0 \xBB\xE2 |0 \xBB\xE3 |0 \xBB\xE4 |0 \xBB\xE5 |0 \xBB\xE6 |0 \xBB\xE7 |0 \xBB\xE8 |0 \xBB\xE9 |0 \xBB\xEA |0 \xBB\xEB |0 \xBB\xEC |0 \xBB\xED |0 \xBB\xEE |0 \xBB\xEF |0 \xBB\xF0 |0 \xBB\xF1 |0 \xBB\xF2 |0 \xBB\xF3 |0 \xBB\xF4 |0 \xBB\xF5 |0 \xBB\xF6 |0 \xBB\xF7 |0 \xBB\xF8 |0 \xBB\xF9 |0 \xBB\xFA |0 \xBB\xFB |0 \xBB\xFC |0 \xBB\xFD |0 \xBC\x41 |0 \xBC\x42 |0 \xBC\x43 |0 \xBC\x44 |0 \xBC\x45 |0 \xBC\x46 |0 \xBC\x47 |0 \xBC\x48 |0 \xBC\x49 |0 \xBC\x4A |0 \xBC\x4B |0 \xBC\x4C |0 \xBC\x4D |0 \x4A\x55 |0 \x5A\xFD |0 \x4D\x8D |0 \x58\xF8 |0 \xBC\x4E |0 \x65\x8E |0 \x5C\x4A |0 \x65\x8F |0 \x51\xD5 |0 \x54\xEC |0 \x4D\xE3 |0 \x65\x90 |0 \x65\x91 |0 \x65\x92 |0 \x5B\xE0 |0 \x65\x93 |0 \x65\x94 |0 \x65\x96 |0 \x65\x95 |0 \x65\x97 |0 \x65\x98 |0 \x54\x82 |0 \x65\x99 |0 \x5A\xD7 |0 \x65\x9A |0 \x4F\x6E |0 \xBC\x4F |0 \x65\x9B |0 \x65\x9C |0 \x4F\x6F |0 \x65\x9D |0 \x4C\xA7 |0 \x51\x5E |0 \x65\x9E |0 \x49\x52 |0 \x4E\x74 |0 \x4D\x96 |0 \x65\x9F |0 \xBC\x50 |0 \x65\xA0 |0 \x65\xA1 |0 \x65\xA2 |0 \x4C\x99 |0 \x4E\xAC |0 \xBC\x51 |0 \x55\xE3 |0 \x60\xCD |0 \x5A\xAE |0 \x58\x5D |0 \x5B\x57 |0 \x65\xA3 |0 \x5B\x7E |0 \x65\xA4 |0 \x58\xC0 |0 \x4D\x5C |0 \xBC\x52 |0 \x4A\xC6 |0 \x49\x79 |0 \xBC\x53 |0 \xBC\x54 |0 \xBC\x55 |0 \x50\xB0 |0 \xBC\x56 |0 \xBC\x57 |0 \xBC\x58 |0 \xBC\x59 |0 \x49\x87 |0 \x49\x88 |0 \xBC\x5A |0 \x49\x89 |0 \xBC\x5B |0 \xBC\x5C |0 \xBC\x5D |0 \xBC\x5E |0 \x4A\x5D |0 \x54\xE7 |0 \xBC\x5F |0 \xBC\x60 |0 \xBC\x61 |0 \xBC\x62 |0 \x63\x61 |0 \xBC\x63 |0 \xBC\x64 |0 \x49\x7F |0 \xBC\x65 |0 \xBC\x66 |0 \xBC\x67 |0 \x51\x69 |0 \x4A\xEE |0 \xBC\x68 |0 \xBC\x69 |0 \x54\x48 |0 \x5A\x78 |0 \xBC\x6A |0 \x53\xF8 |0 \x59\x58 |0 \xBC\x6B |0 \x4D\x9E |0 \x51\xF4 |0 \xBC\x6C |0 \xBC\x6D |0 \xBC\x6E |0 \xBC\x6F |0 \xBC\x70 |0 \x5A\x4D |0 \xBC\x71 |0 \x5A\xCA |0 \x4F\x9D |0 \xBC\x72 |0 \x63\x62 |0 \x4C\x55 |0 \x63\x63 |0 \xBC\x73 |0 \xBC\x74 |0 \x4E\x59 |0 \x5B\x83 |0 \xBC\x75 |0 \x4F\x99 |0 \x5A\xB5 |0 \x57\xA4 |0 \x51\x4C |0 \x4A\x79 |0 \xBC\x76 |0 \xBC\x77 |0 \x56\xF5 |0 \xBC\x78 |0 \x63\x66 |0 \x63\x64 |0 \x63\x68 |0 \xBC\x79 |0 \x63\x6A |0 \x63\x67 |0 \x4B\x6F |0 \x53\xC7 |0 \xBC\x7A |0 \x4B\x9D |0 \x63\x65 |0 \xBC\x7B |0 \x55\xF5 |0 \xBC\x7C |0 \xBC\x7D |0 \x63\x69 |0 \xBC\x7E |0 \xBC\x7F |0 \xBC\x81 |0 \x52\x74 |0 \x49\x65 |0 \x4E\xA2 |0 \xBC\x82 |0 \xBC\x83 |0 \xBC\x84 |0 \x5C\x57 |0 \xBC\x85 |0 \xBC\x86 |0 \x57\x6B |0 \x56\x6D |0 \x55\xC9 |0 \x56\xD2 |0 \x63\x6C |0 \x63\x6B |0 \x52\xE5 |0 \xBC\x87 |0 \xBC\x88 |0 \x59\x41 |0 \x59\x57 |0 \x63\x6D |0 \xBC\x89 |0 \x63\x70 |0 \xBC\x8A |0 \x57\x58 |0 \x5B\xEF |0 \x63\x6F |0 \x4B\x7D |0 \xBC\x8B |0 \x57\x5E |0 \xBC\x8C |0 \x63\x71 |0 \x4B\xB9 |0 \xBC\x8D |0 \xBC\x8E |0 \x57\x48 |0 \x4D\x85 |0 \xBC\x8F |0 \x55\xC4 |0 \x4A\x71 |0 \x56\x79 |0 \x5A\xEB |0 \x63\x72 |0 \x4C\x8B |0 \xBC\x90 |0 \xBC\x91 |0 \xBC\x92 |0 \x63\x6E |0 \xBC\x93 |0 \xBC\x94 |0 \xBC\x95 |0 \xBC\x96 |0 \xBC\x97 |0 \xBC\x98 |0 \x63\x75 |0 \x4A\xFD |0 \x63\x76 |0 \xBC\x99 |0 \xBC\x9A |0 \xBC\x9B |0 \xBC\x9C |0 \xBC\x9D |0 \x63\x73 |0 \x63\x74 |0 \xBC\x9E |0 \x59\xDC |0 \xBC\x9F |0 \xBC\xA0 |0 \x51\xDE |0 \x49\x66 |0 \xBC\xA1 |0 \x5A\x83 |0 \xBC\xA2 |0 \xBC\xA3 |0 \x4B\xDC |0 \x56\x8D |0 \xBC\xA4 |0 \x63\x77 |0 \xBC\xA5 |0 \xBC\xA6 |0 \x5A\x97 |0 \xBC\xA7 |0 \xBC\xA8 |0 \xBC\xA9 |0 \xBC\xAA |0 \xBC\xAB |0 \x49\x8A |0 \xBC\xAC |0 \x4B\xF3 |0 \x63\x7A |0 \x63\x78 |0 \x63\x79 |0 \x4B\x60 |0 \xBC\xAD |0 \xBC\xAE |0 \xBC\xAF |0 \x59\xC4 |0 \x63\x7C |0 \xBC\xB0 |0 \xBC\xB1 |0 \x63\x7E |0 \xBC\xB2 |0 \xBC\xB3 |0 \xBC\xB4 |0 \xBC\xB5 |0 \xBC\xB6 |0 \xBC\xB7 |0 \x63\x7D |0 \x54\x52 |0 \xBC\xB8 |0 \x59\xA2 |0 \xBC\xB9 |0 \xBC\xBA |0 \x63\x7B |0 \xBC\xBB |0 \xBC\xBC |0 \xBC\xBD |0 \xBC\xBE |0 \x5A\xE1 |0 \x5B\x7A |0 \xBC\xBF |0 \xBC\xC0 |0 \xBC\xC1 |0 \xBC\xC2 |0 \xBC\xC3 |0 \x63\x81 |0 \x5C\x92 |0 \xBC\xC4 |0 \xBC\xC5 |0 \xBC\xC6 |0 \xBC\xC7 |0 \xBC\xC8 |0 \xBC\xC9 |0 \xBC\xCA |0 \x63\x82 |0 \xBC\xCB |0 \x49\x7C |0 \x59\x9C |0 \xBC\xCC |0 \x63\x83 |0 \x63\x85 |0 \xBC\xCD |0 \xBC\xCE |0 \xBC\xCF |0 \xBC\xD0 |0 \x63\x84 |0 \xBC\xD1 |0 \xBC\xD2 |0 \x63\x86 |0 \xBC\xD3 |0 \xBC\xD4 |0 \xBC\xD5 |0 \xBC\xD6 |0 \xBC\xD7 |0 \x59\xD7 |0 \xBC\xD8 |0 \x4B\x6B |0 \xBC\xD9 |0 \x64\x7F |0 \xBC\xDA |0 \x5D\xF4 |0 \xBC\xDB |0 \x5D\xF7 |0 \xBC\xDC |0 \x5D\xF5 |0 \xBC\xDD |0 \x5D\xF6 |0 \xBC\xDE |0 \xBC\xDF |0 \xBC\xE0 |0 \x5D\xF9 |0 \x58\xCE |0 \x52\xC6 |0 \xBC\xE1 |0 \xBC\xE2 |0 \x48\xED |0 \xBC\xE3 |0 \xBC\xE4 |0 \xBC\xE5 |0 \x58\xAF |0 \xBC\xE6 |0 \x5D\xF8 |0 \xBC\xE7 |0 \x5A\x6A |0 \x4D\xA9 |0 \x5E\x42 |0 \x54\x92 |0 \xBC\xE8 |0 \x5D\xFB |0 \x5D\xFA |0 \x55\x7B |0 \x5D\xFC |0 \xBC\xE9 |0 \x5E\x41 |0 \x5C\x7E |0 \x5D\xFD |0 \x51\x7A |0 \xBC\xEA |0 \xBC\xEB |0 \x5E\x45 |0 \xBC\xEC |0 \xBC\xED |0 \x5A\x95 |0 \xBC\xEE |0 \xBC\xEF |0 \x5E\x47 |0 \x5E\x44 |0 \xBC\xF0 |0 \x5E\x48 |0 \xBC\xF1 |0 \xBC\xF2 |0 \x4F\x5C |0 \xBC\xF3 |0 \xBC\xF4 |0 \xBC\xF5 |0 \x50\xC8 |0 \x5E\x43 |0 \x5E\x46 |0 \x5B\xA2 |0 \xBC\xF6 |0 \x5E\x49 |0 \xBC\xF7 |0 \xBC\xF8 |0 \xBC\xF9 |0 \x5E\x4D |0 \xBC\xFA |0 \xBC\xFB |0 \xBC\xFC |0 \x5E\x4E |0 \x5E\x4C |0 \x4D\xC1 |0 \xBC\xFD |0 \xBD\x41 |0 \xBD\x42 |0 \x50\x44 |0 \x5E\x4B |0 \xBD\x43 |0 \xBD\x44 |0 \xBD\x45 |0 \x5E\x4A |0 \x5A\xC6 |0 \x49\xBE |0 \xBD\x46 |0 \xBD\x47 |0 \x5E\x4F |0 \xBD\x48 |0 \x4D\x9A |0 \xBD\x49 |0 \x5E\x50 |0 \xBD\x4A |0 \xBD\x4B |0 \xBD\x4C |0 \xBD\x4D |0 \x4A\x5B |0 \xBD\x4E |0 \xBD\x4F |0 \xBD\x50 |0 \x4B\x46 |0 \xBD\x51 |0 \xBD\x52 |0 \xBD\x53 |0 \xBD\x54 |0 \x4B\xBB |0 \x5E\x51 |0 \xBD\x55 |0 \xBD\x56 |0 \xBD\x57 |0 \x4B\xF4 |0 \xBD\x58 |0 \x5E\x52 |0 \xBD\x59 |0 \xBD\x5A |0 \xBD\x5B |0 \xBD\x5C |0 \xBD\x5D |0 \xBD\x5E |0 \xBD\x5F |0 \xBD\x60 |0 \xBD\x61 |0 \xBD\x62 |0 \xBD\x63 |0 \xBD\x64 |0 \xBD\x65 |0 \xBD\x66 |0 \xBD\x67 |0 \xBD\x68 |0 \xBD\x69 |0 \xBD\x6A |0 \xBD\x6B |0 \xBD\x6C |0 \x49\x69 |0 \xBD\x6D |0 \xBD\x6E |0 \xBD\x6F |0 \xBD\x70 |0 \x5E\x54 |0 \xBD\x71 |0 \xBD\x72 |0 \xBD\x73 |0 \x5E\x53 |0 \x5E\x55 |0 \xBD\x74 |0 \xBD\x75 |0 \xBD\x76 |0 \xBD\x77 |0 \xBD\x78 |0 \xBD\x79 |0 \xBD\x7A |0 \xBD\x7B |0 \xBD\x7C |0 \xBD\x7D |0 \xBD\x7E |0 \x5E\x57 |0 \xBD\x7F |0 \x5E\x56 |0 \xBD\x81 |0 \xBD\x82 |0 \xBD\x83 |0 \xBD\x84 |0 \xBD\x85 |0 \xBD\x86 |0 \xBD\x87 |0 \x5E\x58 |0 \xBD\x88 |0 \xBD\x89 |0 \xBD\x8A |0 \xBD\x8B |0 \xBD\x8C |0 \xBD\x8D |0 \xBD\x8E |0 \xBD\x8F |0 \xBD\x90 |0 \x5E\x59 |0 \xBD\x91 |0 \xBD\x92 |0 \x5E\x5A |0 \xBD\x93 |0 \xBD\x94 |0 \x5A\x6F |0 \x6A\xF9 |0 \x54\x96 |0 \x5C\x63 |0 \x53\x85 |0 \x6A\xFB |0 \x6A\xFC |0 \x6A\xFA |0 \xBD\x95 |0 \x4F\xC5 |0 \xBD\x96 |0 \xBD\x97 |0 \xBD\x98 |0 \xBD\x99 |0 \x58\xEE |0 \xBD\x9A |0 \xBD\x9B |0 \x4C\x73 |0 \xBD\x9C |0 \xBD\x9D |0 \x5A\xCC |0 \x56\xA9 |0 \xBD\x9E |0 \xBD\x9F |0 \x6B\x42 |0 \x6B\x41 |0 \x4D\xA7 |0 \x6A\xFD |0 \x56\x76 |0 \xBD\xA0 |0 \xBD\xA1 |0 \xBD\xA2 |0 \x6B\x44 |0 \x50\xD1 |0 \xBD\xA3 |0 \x4A\x8B |0 \xBD\xA4 |0 \x57\x4A |0 \x6B\x45 |0 \x6B\x43 |0 \x4F\x54 |0 \x6B\x48 |0 \xBD\xA5 |0 \x6B\x49 |0 \x4F\x6D |0 \x52\x58 |0 \x50\x82 |0 \x56\x82 |0 \x6B\x4A |0 \xBD\xA6 |0 \xBD\xA7 |0 \xBD\xA8 |0 \x6B\x46 |0 \x6B\x47 |0 \x52\xEF |0 \xBD\xA9 |0 \xBD\xAA |0 \xBD\xAB |0 \xBD\xAC |0 \xBD\xAD |0 \x6B\x4C |0 \xBD\xAE |0 \x4A\xBB |0 \xBD\xAF |0 \x5C\x8E |0 \xBD\xB0 |0 \x4A\xD6 |0 \x6B\x4B |0 \x6B\x4E |0 \xBD\xB1 |0 \xBD\xB2 |0 \x6B\x4D |0 \x6B\x4F |0 \x58\xD0 |0 \xBD\xB3 |0 \xBD\xB4 |0 \xBD\xB5 |0 \xBD\xB6 |0 \xBD\xB7 |0 \xBD\xB8 |0 \xBD\xB9 |0 \x52\x71 |0 \x54\xA8 |0 \xBD\xBA |0 \xBD\xBB |0 \xBD\xBC |0 \xBD\xBD |0 \xBD\xBE |0 \xBD\xBF |0 \x6B\x50 |0 \x6B\x51 |0 \xBD\xC0 |0 \xBD\xC1 |0 \xBD\xC2 |0 \xBD\xC3 |0 \xBD\xC4 |0 \xBD\xC5 |0 \x6B\x52 |0 \xBD\xC6 |0 \xBD\xC7 |0 \x6B\x53 |0 \x6B\x54 |0 \x6B\x55 |0 \xBD\xC8 |0 \xBD\xC9 |0 \xBD\xCA |0 \xBD\xCB |0 \x6B\x57 |0 \x6B\x56 |0 \xBD\xCC |0 \xBD\xCD |0 \xBD\xCE |0 \xBD\xCF |0 \x6B\x58 |0 \xBD\xD0 |0 \xBD\xD1 |0 \xBD\xD2 |0 \xBD\xD3 |0 \xBD\xD4 |0 \xBD\xD5 |0 \xBD\xD6 |0 \xBD\xD7 |0 \xBD\xD8 |0 \xBD\xD9 |0 \xBD\xDA |0 \xBD\xDB |0 \x49\xC8 |0 \xBD\xDC |0 \x5A\x74 |0 \x55\xCC |0 \xBD\xDD |0 \x50\xEE |0 \x5B\xD7 |0 \x59\xAF |0 \x51\x5F |0 \xBD\xDE |0 \x4F\x91 |0 \xBD\xDF |0 \xBD\xE0 |0 \xBD\xE1 |0 \xBD\xE2 |0 \xBD\xE3 |0 \xBD\xE4 |0 \xBD\xE5 |0 \xBD\xE6 |0 \xBD\xE7 |0 \xBD\xE8 |0 \x4C\xA9 |0 \xBD\xE9 |0 \xBD\xEA |0 \xBD\xEB |0 \xBD\xEC |0 \xBD\xED |0 \xBD\xEE |0 \xBD\xEF |0 \xBD\xF0 |0 \xBD\xF1 |0 \xBD\xF2 |0 \xBD\xF3 |0 \xBD\xF4 |0 \xBD\xF5 |0 \xBD\xF6 |0 \xBD\xF7 |0 \xBD\xF8 |0 \xBD\xF9 |0 \xBD\xFA |0 \xBD\xFB |0 \xBD\xFC |0 \xBD\xFD |0 \xBE\x41 |0 \xBE\x42 |0 \xBE\x43 |0 \xBE\x44 |0 \xBE\x45 |0 \xBE\x46 |0 \xBE\x47 |0 \xBE\x48 |0 \xBE\x49 |0 \xBE\x4A |0 \xBE\x4B |0 \xBE\x4C |0 \xBE\x4D |0 \xBE\x4E |0 \xBE\x4F |0 \xBE\x50 |0 \xBE\x51 |0 \xBE\x52 |0 \xBE\x53 |0 \xBE\x54 |0 \xBE\x55 |0 \xBE\x56 |0 \xBE\x57 |0 \xBE\x58 |0 \xBE\x59 |0 \xBE\x5A |0 \xBE\x5B |0 \xBE\x5C |0 \xBE\x5D |0 \xBE\x5E |0 \xBE\x5F |0 \xBE\x60 |0 \xBE\x61 |0 \xBE\x62 |0 \xBE\x63 |0 \xBE\x64 |0 \xBE\x65 |0 \xBE\x66 |0 \xBE\x67 |0 \xBE\x68 |0 \xBE\x69 |0 \xBE\x6A |0 \xBE\x6B |0 \xBE\x6C |0 \xBE\x6D |0 \xBE\x6E |0 \xBE\x6F |0 \xBE\x70 |0 \xBE\x71 |0 \xBE\x72 |0 \xBE\x73 |0 \xBE\x74 |0 \xBE\x75 |0 \xBE\x76 |0 \xBE\x77 |0 \xBE\x78 |0 \xBE\x79 |0 \xBE\x7A |0 \xBE\x7B |0 \xBE\x7C |0 \xBE\x7D |0 \xBE\x7E |0 \xBE\x7F |0 \xBE\x81 |0 \xBE\x82 |0 \xBE\x83 |0 \xBE\x84 |0 \xBE\x85 |0 \xBE\x86 |0 \xBE\x87 |0 \xBE\x88 |0 \xBE\x89 |0 \xBE\x8A |0 \xBE\x8B |0 \xBE\x8C |0 \xBE\x8D |0 \xBE\x8E |0 \xBE\x8F |0 \xBE\x90 |0 \xBE\x91 |0 \xBE\x92 |0 \xBE\x93 |0 \xBE\x94 |0 \xBE\x95 |0 \xBE\x96 |0 \xBE\x97 |0 \xBE\x98 |0 \xBE\x99 |0 \xBE\x9A |0 \xBE\x9B |0 \xBE\x9C |0 \xBE\x9D |0 \xBE\x9E |0 \xBE\x9F |0 \xBE\xA0 |0 \xBE\xA1 |0 \xBE\xA2 |0 \xBE\xA3 |0 \xBE\xA4 |0 \xBE\xA5 |0 \xBE\xA6 |0 \xBE\xA7 |0 \xBE\xA8 |0 \xBE\xA9 |0 \xBE\xAA |0 \xBE\xAB |0 \xBE\xAC |0 \xBE\xAD |0 \xBE\xAE |0 \xBE\xAF |0 \xBE\xB0 |0 \xBE\xB1 |0 \xBE\xB2 |0 \xBE\xB3 |0 \xBE\xB4 |0 \xBE\xB5 |0 \xBE\xB6 |0 \xBE\xB7 |0 \xBE\xB8 |0 \xBE\xB9 |0 \xBE\xBA |0 \xBE\xBB |0 \xBE\xBC |0 \xBE\xBD |0 \xBE\xBE |0 \xBE\xBF |0 \xBE\xC0 |0 \xBE\xC1 |0 \xBE\xC2 |0 \xBE\xC3 |0 \x4E\xF7 |0 \xBE\xC4 |0 \xBE\xC5 |0 \xBE\xC6 |0 \xBE\xC7 |0 \xBE\xC8 |0 \xBE\xC9 |0 \xBE\xCA |0 \xBE\xCB |0 \xBE\xCC |0 \xBE\xCD |0 \xBE\xCE |0 \xBE\xCF |0 \xBE\xD0 |0 \xBE\xD1 |0 \xBE\xD2 |0 \xBE\xD3 |0 \xBE\xD4 |0 \xBE\xD5 |0 \xBE\xD6 |0 \xBE\xD7 |0 \xBE\xD8 |0 \xBE\xD9 |0 \xBE\xDA |0 \xBE\xDB |0 \xBE\xDC |0 \x6B\xC5 |0 \xBE\xDD |0 \xBE\xDE |0 \xBE\xDF |0 \xBE\xE0 |0 \xBE\xE1 |0 \xBE\xE2 |0 \xBE\xE3 |0 \xBE\xE4 |0 \xBE\xE5 |0 \xBE\xE6 |0 \xBE\xE7 |0 \xBE\xE8 |0 \xBE\xE9 |0 \xBE\xEA |0 \xBE\xEB |0 \xBE\xEC |0 \xBE\xED |0 \xBE\xEE |0 \xBE\xEF |0 \xBE\xF0 |0 \xBE\xF1 |0 \xBE\xF2 |0 \xBE\xF3 |0 \xBE\xF4 |0 \xBE\xF5 |0 \xBE\xF6 |0 \xBE\xF7 |0 \xBE\xF8 |0 \xBE\xF9 |0 \xBE\xFA |0 \xBE\xFB |0 \x6B\xC6 |0 \xBE\xFC |0 \xBE\xFD |0 \xBF\x41 |0 \xBF\x42 |0 \xBF\x43 |0 \xBF\x44 |0 \xBF\x45 |0 \xBF\x46 |0 \xBF\x47 |0 \xBF\x48 |0 \xBF\x49 |0 \xBF\x4A |0 \xBF\x4B |0 \xBF\x4C |0 \xBF\x4D |0 \xBF\x4E |0 \xBF\x4F |0 \xBF\x50 |0 \xBF\x51 |0 \xBF\x52 |0 \xBF\x53 |0 \xBF\x54 |0 \xBF\x55 |0 \xBF\x56 |0 \xBF\x57 |0 \x6B\xC7 |0 \xBF\x58 |0 \xBF\x59 |0 \xBF\x5A |0 \xBF\x5B |0 \xBF\x5C |0 \xBF\x5D |0 \xBF\x5E |0 \xBF\x5F |0 \xBF\x60 |0 \xBF\x61 |0 \xBF\x62 |0 \xBF\x63 |0 \xBF\x64 |0 \xBF\x65 |0 \xBF\x66 |0 \xBF\x67 |0 \xBF\x68 |0 \xBF\x69 |0 \xBF\x6A |0 \xBF\x6B |0 \xBF\x6C |0 \xBF\x6D |0 \xBF\x6E |0 \xBF\x6F |0 \xBF\x70 |0 \xBF\x71 |0 \xBF\x72 |0 \xBF\x73 |0 \xBF\x74 |0 \xBF\x75 |0 \xBF\x76 |0 \xBF\x77 |0 \xBF\x78 |0 \xBF\x79 |0 \xBF\x7A |0 \xBF\x7B |0 \xBF\x7C |0 \xBF\x7D |0 \xBF\x7E |0 \xBF\x7F |0 \xBF\x81 |0 \xBF\x82 |0 \xBF\x83 |0 \xBF\x84 |0 \xBF\x85 |0 \xBF\x86 |0 \xBF\x87 |0 \xBF\x88 |0 \xBF\x89 |0 \xBF\x8A |0 \xBF\x8B |0 \xBF\x8C |0 \xBF\x8D |0 \xBF\x8E |0 \xBF\x8F |0 \xBF\x90 |0 \xBF\x91 |0 \xBF\x92 |0 \xBF\x93 |0 \xBF\x94 |0 \xBF\x95 |0 \xBF\x96 |0 \xBF\x97 |0 \xBF\x98 |0 \xBF\x99 |0 \xBF\x9A |0 \xBF\x9B |0 \xBF\x9C |0 \xBF\x9D |0 \xBF\x9E |0 \xBF\x9F |0 \xBF\xA0 |0 \xBF\xA1 |0 \xBF\xA2 |0 \xBF\xA3 |0 \xBF\xA4 |0 \xBF\xA5 |0 \xBF\xA6 |0 \xBF\xA7 |0 \xBF\xA8 |0 \xBF\xA9 |0 \xBF\xAA |0 \xBF\xAB |0 \xBF\xAC |0 \xBF\xAD |0 \xBF\xAE |0 \xBF\xAF |0 \xBF\xB0 |0 \xBF\xB1 |0 \xBF\xB2 |0 \xBF\xB3 |0 \xBF\xB4 |0 \xBF\xB5 |0 \xBF\xB6 |0 \xBF\xB7 |0 \xBF\xB8 |0 \xBF\xB9 |0 \xBF\xBA |0 \xBF\xBB |0 \xBF\xBC |0 \xBF\xBD |0 \xBF\xBE |0 \xBF\xBF |0 \xBF\xC0 |0 \xBF\xC1 |0 \xBF\xC2 |0 \xBF\xC3 |0 \xBF\xC4 |0 \xBF\xC5 |0 \xBF\xC6 |0 \xBF\xC7 |0 \xBF\xC8 |0 \xBF\xC9 |0 \xBF\xCA |0 \xBF\xCB |0 \xBF\xCC |0 \xBF\xCD |0 \x6B\xC8 |0 \xBF\xCE |0 \xBF\xCF |0 \xBF\xD0 |0 \xBF\xD1 |0 \xBF\xD2 |0 \xBF\xD3 |0 \xBF\xD4 |0 \xBF\xD5 |0 \xBF\xD6 |0 \xBF\xD7 |0 \xBF\xD8 |0 \xBF\xD9 |0 \xBF\xDA |0 \xBF\xDB |0 \xBF\xDC |0 \xBF\xDD |0 \xBF\xDE |0 \xBF\xDF |0 \xBF\xE0 |0 \xBF\xE1 |0 \xBF\xE2 |0 \xBF\xE3 |0 \xBF\xE4 |0 \xBF\xE5 |0 \xBF\xE6 |0 \xBF\xE7 |0 \xBF\xE8 |0 \xBF\xE9 |0 \xBF\xEA |0 \xBF\xEB |0 \xBF\xEC |0 \xBF\xED |0 \xBF\xEE |0 \xBF\xEF |0 \xBF\xF0 |0 \xBF\xF1 |0 \xBF\xF2 |0 \xBF\xF3 |0 \xBF\xF4 |0 \xBF\xF5 |0 \xBF\xF6 |0 \xBF\xF7 |0 \xBF\xF8 |0 \x6B\xC9 |0 \xBF\xF9 |0 \xBF\xFA |0 \xBF\xFB |0 \xBF\xFC |0 \xBF\xFD |0 \xC0\x41 |0 \xC0\x42 |0 \xC0\x43 |0 \xC0\x44 |0 \xC0\x45 |0 \xC0\x46 |0 \xC0\x47 |0 \xC0\x48 |0 \xC0\x49 |0 \xC0\x4A |0 \xC0\x4B |0 \xC0\x4C |0 \xC0\x4D |0 \xC0\x4E |0 \xC0\x4F |0 \xC0\x50 |0 \xC0\x51 |0 \xC0\x52 |0 \xC0\x53 |0 \xC0\x54 |0 \xC0\x55 |0 \xC0\x56 |0 \xC0\x57 |0 \xC0\x58 |0 \xC0\x59 |0 \xC0\x5A |0 \xC0\x5B |0 \xC0\x5C |0 \xC0\x5D |0 \xC0\x5E |0 \xC0\x5F |0 \x6B\xCB |0 \xC0\x60 |0 \xC0\x61 |0 \xC0\x62 |0 \xC0\x63 |0 \xC0\x64 |0 \xC0\x65 |0 \xC0\x66 |0 \xC0\x67 |0 \xC0\x68 |0 \xC0\x69 |0 \xC0\x6A |0 \xC0\x6B |0 \xC0\x6C |0 \xC0\x6D |0 \xC0\x6E |0 \xC0\x6F |0 \xC0\x70 |0 \xC0\x71 |0 \xC0\x72 |0 \xC0\x73 |0 \xC0\x74 |0 \xC0\x75 |0 \xC0\x76 |0 \xC0\x77 |0 \xC0\x78 |0 \xC0\x79 |0 \xC0\x7A |0 \xC0\x7B |0 \xC0\x7C |0 \xC0\x7D |0 \xC0\x7E |0 \xC0\x7F |0 \xC0\x81 |0 \xC0\x82 |0 \xC0\x83 |0 \xC0\x84 |0 \xC0\x85 |0 \xC0\x86 |0 \xC0\x87 |0 \xC0\x88 |0 \xC0\x89 |0 \xC0\x8A |0 \xC0\x8B |0 \xC0\x8C |0 \xC0\x8D |0 \xC0\x8E |0 \xC0\x8F |0 \xC0\x90 |0 \xC0\x91 |0 \xC0\x92 |0 \xC0\x93 |0 \xC0\x94 |0 \xC0\x95 |0 \xC0\x96 |0 \xC0\x97 |0 \xC0\x98 |0 \xC0\x99 |0 \xC0\x9A |0 \x6B\xCA |0 \xC0\x9B |0 \xC0\x9C |0 \xC0\x9D |0 \xC0\x9E |0 \xC0\x9F |0 \xC0\xA0 |0 \xC0\xA1 |0 \xC0\xA2 |0 \xC0\xA3 |0 \xC0\xA4 |0 \xC0\xA5 |0 \x6C\x8A |0 \xC0\xA6 |0 \xC0\xA7 |0 \xC0\xA8 |0 \xC0\xA9 |0 \xC0\xAA |0 \xC0\xAB |0 \xC0\xAC |0 \xC0\xAD |0 \xC0\xAE |0 \xC0\xAF |0 \xC0\xB0 |0 \xC0\xB1 |0 \xC0\xB2 |0 \xC0\xB3 |0 \xC0\xB4 |0 \xC0\xB5 |0 \xC0\xB6 |0 \xC0\xB7 |0 \xC0\xB8 |0 \xC0\xB9 |0 \xC0\xBA |0 \xC0\xBB |0 \xC0\xBC |0 \xC0\xBD |0 \xC0\xBE |0 \xC0\xBF |0 \xC0\xC0 |0 \xC0\xC1 |0 \xC0\xC2 |0 \xC0\xC3 |0 \xC0\xC4 |0 \xC0\xC5 |0 \xC0\xC6 |0 \xC0\xC7 |0 \xC0\xC8 |0 \xC0\xC9 |0 \xC0\xCA |0 \xC0\xCB |0 \xC0\xCC |0 \xC0\xCD |0 \xC0\xCE |0 \xC0\xCF |0 \xC0\xD0 |0 \xC0\xD1 |0 \xC0\xD2 |0 \xC0\xD3 |0 \xC0\xD4 |0 \xC0\xD5 |0 \xC0\xD6 |0 \xC0\xD7 |0 \xC0\xD8 |0 \xC0\xD9 |0 \xC0\xDA |0 \xC0\xDB |0 \xC0\xDC |0 \xC0\xDD |0 \xC0\xDE |0 \xC0\xDF |0 \xC0\xE0 |0 \xC0\xE1 |0 \xC0\xE2 |0 \xC0\xE3 |0 \xC0\xE4 |0 \xC0\xE5 |0 \xC0\xE6 |0 \xC0\xE7 |0 \xC0\xE8 |0 \xC0\xE9 |0 \xC0\xEA |0 \xC0\xEB |0 \xC0\xEC |0 \xC0\xED |0 \xC0\xEE |0 \xC0\xEF |0 \xC0\xF0 |0 \xC0\xF1 |0 \xC0\xF2 |0 \xC0\xF3 |0 \xC0\xF4 |0 \xC0\xF5 |0 \xC0\xF6 |0 \xC0\xF7 |0 \xC0\xF8 |0 \xC0\xF9 |0 \xC0\xFA |0 \xC0\xFB |0 \xC0\xFC |0 \xC0\xFD |0 \xC1\x41 |0 \xC1\x42 |0 \xC1\x43 |0 \xC1\x44 |0 \xC1\x45 |0 \xC1\x46 |0 \xC1\x47 |0 \xC1\x48 |0 \xC1\x49 |0 \xC1\x4A |0 \xC1\x4B |0 \xC1\x4C |0 \xC1\x4D |0 \xC1\x4E |0 \xC1\x4F |0 \x6B\xCC |0 \xC1\x50 |0 \xC1\x51 |0 \xC1\x52 |0 \xC1\x53 |0 \xC1\x54 |0 \xC1\x55 |0 \xC1\x56 |0 \xC1\x57 |0 \xC1\x58 |0 \xC1\x59 |0 \xC1\x5A |0 \xC1\x5B |0 \xC1\x5C |0 \xC1\x5D |0 \xC1\x5E |0 \xC1\x5F |0 \xC1\x60 |0 \xC1\x61 |0 \xC1\x62 |0 \xC1\x63 |0 \xC1\x64 |0 \xC1\x65 |0 \xC1\x66 |0 \xC1\x67 |0 \xC1\x68 |0 \xC1\x69 |0 \xC1\x6A |0 \xC1\x6B |0 \xC1\x6C |0 \xC1\x6D |0 \xC1\x6E |0 \xC1\x6F |0 \xC1\x70 |0 \xC1\x71 |0 \xC1\x72 |0 \xC1\x73 |0 \xC1\x74 |0 \xC1\x75 |0 \xC1\x76 |0 \xC1\x77 |0 \xC1\x78 |0 \xC1\x79 |0 \xC1\x7A |0 \xC1\x7B |0 \x6B\xCD |0 \xC1\x7C |0 \xC1\x7D |0 \xC1\x7E |0 \xC1\x7F |0 \xC1\x81 |0 \xC1\x82 |0 \xC1\x83 |0 \xC1\x84 |0 \xC1\x85 |0 \xC1\x86 |0 \xC1\x87 |0 \xC1\x88 |0 \xC1\x89 |0 \xC1\x8A |0 \xC1\x8B |0 \xC1\x8C |0 \xC1\x8D |0 \xC1\x8E |0 \xC1\x8F |0 \xC1\x90 |0 \xC1\x91 |0 \xC1\x92 |0 \xC1\x93 |0 \xC1\x94 |0 \xC1\x95 |0 \x67\xC3 |0 \x67\xC4 |0 \x67\xC5 |0 \x5B\x8C |0 \x4B\xA3 |0 \x67\xC7 |0 \x67\xC6 |0 \x67\xC8 |0 \x67\xC9 |0 \x54\x45 |0 \x67\xCA |0 \x67\xCB |0 \xC1\x96 |0 \x4C\x50 |0 \x4B\x97 |0 \x67\xCC |0 \x67\xCE |0 \xC1\x97 |0 \x67\xCD |0 \xC1\x98 |0 \x4C\xC5 |0 \x67\xCF |0 \x67\xD0 |0 \x67\xD1 |0 \x4B\xDA |0 \x4A\x4E |0 \x5B\xD2 |0 \x52\xC5 |0 \x49\x55 |0 \x4C\xD5 |0 \x67\xD2 |0 \x67\xD3 |0 \x5A\xBE |0 \x54\x75 |0 \x4F\xFA |0 \x57\xD8 |0 \x4D\x53 |0 \x67\xD5 |0 \x67\xD4 |0 \x67\xD7 |0 \x67\xD6 |0 \x53\x45 |0 \x67\xD8 |0 \x67\xD9 |0 \x54\x4E |0 \x67\xDA |0 \x54\x4F |0 \x67\xDB |0 \x49\xA6 |0 \x67\xDC |0 \x67\xDD |0 \x67\xDE |0 \x67\xDF |0 \x67\xE0 |0 \x5C\x8B |0 \x67\xE1 |0 \x67\xE2 |0 \x4E\xD7 |0 \x67\xE3 |0 \x5A\x6B |0 \x56\xF9 |0 \x49\xAB |0 \x51\x86 |0 \x67\xE4 |0 \x54\x46 |0 \x52\x4D |0 \xC1\x99 |0 \x67\xE5 |0 \x67\xE6 |0 \x67\xE7 |0 \x67\xE8 |0 \x67\xE9 |0 \x67\xEA |0 \x67\xEB |0 \xC1\x9A |0 \x67\xEC |0 \x67\xED |0 \x67\xEE |0 \xC1\x9B |0 \xC1\x9C |0 \x67\xEF |0 \x67\xF0 |0 \x67\xF1 |0 \x67\xF3 |0 \x67\xF2 |0 \xC1\x9D |0 \x67\xF4 |0 \x57\x4D |0 \x51\xC0 |0 \x67\xF5 |0 \x67\xF6 |0 \x67\xF7 |0 \x5B\x41 |0 \x67\xF8 |0 \x58\x53 |0 \x67\xF9 |0 \x67\xFA |0 \xC1\x9E |0 \x67\xFB |0 \x67\xFC |0 \x68\x41 |0 \x67\xFD |0 \x68\x42 |0 \x4C\xF4 |0 \x52\x9B |0 \x68\x43 |0 \x68\x44 |0 \x4F\x62 |0 \x59\xBE |0 \x49\xF8 |0 \x68\x45 |0 \x68\x46 |0 \x68\x47 |0 \x59\xF7 |0 \x68\x48 |0 \x5B\xFC |0 \x68\x49 |0 \x53\xCB |0 \xC1\x9F |0 \x68\x4A |0 \x68\x4B |0 \x51\x54 |0 \x68\x4C |0 \x58\x9B |0 \x56\x99 |0 \x68\x4E |0 \x68\x4D |0 \x4A\x9B |0 \x4D\x99 |0 \x68\x4F |0 \x68\x50 |0 \x58\xE1 |0 \x68\x51 |0 \x68\x52 |0 \x4C\x87 |0 \x58\xBE |0 \x68\x53 |0 \x68\x54 |0 \x68\x55 |0 \x54\xF0 |0 \x56\xDF |0 \x68\x56 |0 \x68\x57 |0 \x68\x58 |0 \x68\x59 |0 \x68\x5A |0 \x5B\x81 |0 \x68\x5B |0 \x4A\xEC |0 \x52\x4A |0 \x68\x5C |0 \xC1\xA0 |0 \x68\x5D |0 \x68\x5E |0 \x68\x5F |0 \xC1\xA1 |0 \x57\xFC |0 \x68\x60 |0 \x51\xDF |0 \x4A\xB7 |0 \x5C\x56 |0 \x4F\x96 |0 \xC1\xA2 |0 \x58\x67 |0 \x68\x63 |0 \x68\x61 |0 \x68\x62 |0 \x68\x64 |0 \x4B\xA6 |0 \x4E\xFB |0 \x4F\xE1 |0 \x52\x6C |0 \x68\x65 |0 \x68\x66 |0 \xC1\xA3 |0 \x68\x67 |0 \x68\x6F |0 \x68\x68 |0 \x68\x69 |0 \x68\x6A |0 \x54\x62 |0 \x68\x92 |0 \x4B\xCC |0 \x68\x6B |0 \xC1\xA4 |0 \x68\x6C |0 \x68\x6D |0 \x4B\xC5 |0 \x52\x5E |0 \x68\x6E |0 \xC1\xA5 |0 \x68\x70 |0 \x68\x71 |0 \x68\x72 |0 \x5B\x93 |0 \xC1\xA6 |0 \x68\x73 |0 \x52\xF6 |0 \xC1\xA7 |0 \x68\x74 |0 \x52\xF7 |0 \x68\x75 |0 \x68\x76 |0 \x4C\xE3 |0 \x48\xF6 |0 \x68\x77 |0 \x68\x78 |0 \x68\x79 |0 \xC1\xA8 |0 \x68\x7A |0 \x68\x7B |0 \x68\x7C |0 \x68\x7D |0 \xC1\xA9 |0 \x68\x7E |0 \x4F\xB4 |0 \x68\x82 |0 \x68\x7F |0 \x68\x81 |0 \xC1\xAA |0 \x68\x83 |0 \x68\x84 |0 \x51\x6D |0 \x68\x85 |0 \x68\x86 |0 \x68\x87 |0 \x68\x88 |0 \x68\x89 |0 \x68\x8A |0 \x68\x8B |0 \x68\x8C |0 \x68\x8D |0 \x50\xD7 |0 \xC1\xAB |0 \x68\x8E |0 \x51\x4D |0 \x68\x8F |0 \x68\x90 |0 \x68\x91 |0 \xC1\xAC |0 \xC1\xAD |0 \x58\x83 |0 \xC1\xAE |0 \xC1\xAF |0 \xC1\xB0 |0 \xC1\xB1 |0 \xC1\xB2 |0 \xC1\xB3 |0 \xC1\xB4 |0 \xC1\xB5 |0 \x4A\x44 |0 \xC1\xB6 |0 \xC1\xB7 |0 \xC1\xB8 |0 \xC1\xB9 |0 \xC1\xBA |0 \xC1\xBB |0 \xC1\xBC |0 \xC1\xBD |0 \xC1\xBE |0 \xC1\xBF |0 \xC1\xC0 |0 \xC1\xC1 |0 \xC1\xC2 |0 \xC1\xC3 |0 \xC1\xC4 |0 \xC1\xC5 |0 \xC1\xC6 |0 \xC1\xC7 |0 \xC1\xC8 |0 \xC1\xC9 |0 \xC1\xCA |0 \xC1\xCB |0 \xC1\xCC |0 \xC1\xCD |0 \xC1\xCE |0 \xC1\xCF |0 \xC1\xD0 |0 \xC1\xD1 |0 \xC1\xD2 |0 \xC1\xD3 |0 \xC1\xD4 |0 \xC1\xD5 |0 \xC1\xD6 |0 \xC1\xD7 |0 \xC1\xD8 |0 \xC1\xD9 |0 \xC1\xDA |0 \xC1\xDB |0 \xC1\xDC |0 \xC1\xDD |0 \xC1\xDE |0 \xC1\xDF |0 \xC1\xE0 |0 \xC1\xE1 |0 \xC1\xE2 |0 \xC1\xE3 |0 \xC1\xE4 |0 \xC1\xE5 |0 \xC1\xE6 |0 \xC1\xE7 |0 \xC1\xE8 |0 \xC1\xE9 |0 \xC1\xEA |0 \xC1\xEB |0 \xC1\xEC |0 \xC1\xED |0 \xC1\xEE |0 \xC1\xEF |0 \xC1\xF0 |0 \xC1\xF1 |0 \xC1\xF2 |0 \xC1\xF3 |0 \xC1\xF4 |0 \xC1\xF5 |0 \xC1\xF6 |0 \xC1\xF7 |0 \xC1\xF8 |0 \xC1\xF9 |0 \xC1\xFA |0 \xC1\xFB |0 \xC1\xFC |0 \xC1\xFD |0 \xC2\x41 |0 \xC2\x42 |0 \xC2\x43 |0 \xC2\x44 |0 \xC2\x45 |0 \xC2\x46 |0 \xC2\x47 |0 \xC2\x48 |0 \xC2\x49 |0 \xC2\x4A |0 \xC2\x4B |0 \xC2\x4C |0 \xC2\x4D |0 \xC2\x4E |0 \xC2\x4F |0 \xC2\x50 |0 \xC2\x51 |0 \xC2\x52 |0 \xC2\x53 |0 \xC2\x54 |0 \xC2\x55 |0 \xC2\x56 |0 \xC2\x57 |0 \xC2\x58 |0 \xC2\x59 |0 \xC2\x5A |0 \xC2\x5B |0 \xC2\x5C |0 \xC2\x5D |0 \xC2\x5E |0 \xC2\x5F |0 \xC2\x60 |0 \x52\x65 |0 \x62\x65 |0 \x55\x61 |0 \x62\x66 |0 \xC2\x61 |0 \x49\x75 |0 \x57\xC9 |0 \x4A\xB2 |0 \x54\xF1 |0 \x62\x67 |0 \x58\x70 |0 \x62\x68 |0 \x4E\xE3 |0 \x62\x69 |0 \x62\x6A |0 \x52\x66 |0 \x5B\x42 |0 \x52\xD5 |0 \x4D\x8C |0 \x57\xC4 |0 \x62\x6B |0 \x52\x97 |0 \x62\x6C |0 \xC2\x62 |0 \x4C\x47 |0 \x4C\xF2 |0 \x4D\xD1 |0 \x62\x6D |0 \x62\x6E |0 \x5A\xC3 |0 \x62\x6F |0 \xC2\x63 |0 \x62\x70 |0 \x59\x6B |0 \x62\x71 |0 \x62\x72 |0 \x62\x73 |0 \x62\x74 |0 \x59\x76 |0 \x62\x75 |0 \x49\xFA |0 \x50\xBA |0 \x62\x76 |0 \xC2\x64 |0 \x50\xAA |0 \x62\x77 |0 \x62\x78 |0 \x62\x79 |0 \xC2\x65 |0 \x62\x7A |0 \x62\x7B |0 \xC2\x66 |0 \x4C\xB6 |0 \x5D\xE1 |0 \xC2\x67 |0 \x4B\xD2 |0 \xC2\x68 |0 \x5D\xE3 |0 \x5D\xE2 |0 \xC2\x69 |0 \xC2\x6A |0 \xC2\x6B |0 \xC2\x6C |0 \xC2\x6D |0 \xC2\x6E |0 \xC2\x6F |0 \x5D\xE5 |0 \xC2\x70 |0 \xC2\x71 |0 \xC2\x72 |0 \x54\xED |0 \xC2\x73 |0 \xC2\x74 |0 \x5D\xE4 |0 \x4C\x60 |0 \x59\x95 |0 \x59\xF4 |0 \x5B\x94 |0 \x4F\x77 |0 \xC2\x75 |0 \xC2\x76 |0 \xC2\x77 |0 \xC2\x78 |0 \x5C\x89 |0 \x5D\xE7 |0 \x5D\xE6 |0 \xC2\x79 |0 \x48\xA1 |0 \x57\x73 |0 \xC2\x7A |0 \x5D\xE8 |0 \xC2\x7B |0 \x4C\xBC |0 \x4E\xC9 |0 \x51\xBC |0 \x51\xA3 |0 \x4A\x62 |0 \x5D\xE9 |0 \xC2\x7C |0 \x51\xA9 |0 \x52\xAF |0 \x4F\x55 |0 \xC2\x7D |0 \xC2\x7E |0 \x58\x7E |0 \xC2\x7F |0 \xC2\x81 |0 \xC2\x82 |0 \x5D\xEA |0 \x55\x62 |0 \xC2\x83 |0 \xC2\x84 |0 \xC2\x85 |0 \xC2\x86 |0 \xC2\x87 |0 \x49\x7D |0 \xC2\x88 |0 \xC2\x89 |0 \xC2\x8A |0 \x5D\xEB |0 \xC2\x8B |0 \x4B\xB7 |0 \x5A\xB9 |0 \xC2\x8C |0 \x4A\x9E |0 \xC2\x8D |0 \xC2\x8E |0 \x5D\xEC |0 \x5A\xC8 |0 \x58\x75 |0 \x53\x84 |0 \xC2\x8F |0 \x5D\xED |0 \xC2\x90 |0 \xC2\x91 |0 \xC2\x92 |0 \xC2\x93 |0 \xC2\x94 |0 \x5D\xEE |0 \xC2\x95 |0 \x5D\xEF |0 \x51\x8B |0 \x56\xD4 |0 \x58\x7D |0 \xC2\x96 |0 \xC2\x97 |0 \xC2\x98 |0 \xC2\x99 |0 \xC2\x9A |0 \xC2\x9B |0 \xC2\x9C |0 \xC2\x9D |0 \xC2\x9E |0 \xC2\x9F |0 \xC2\xA0 |0 \xC2\xA1 |0 \xC2\xA2 |0 \x5A\x88 |0 \x51\xA0 |0 \xC2\xA3 |0 \x5D\xF0 |0 \xC2\xA4 |0 \xC2\xA5 |0 \x56\x86 |0 \xC2\xA6 |0 \x5D\xF1 |0 \xC2\xA7 |0 \x56\x87 |0 \x59\xFD |0 \xC2\xA8 |0 \xC2\xA9 |0 \xC2\xAA |0 \x4C\xF3 |0 \xC2\xAB |0 \xC2\xAC |0 \x5D\xF2 |0 \x48\xAE |0 \x58\x56 |0 \xC2\xAD |0 \xC2\xAE |0 \x5B\x6F |0 \xC2\xAF |0 \xC2\xB0 |0 \xC2\xB1 |0 \xC2\xB2 |0 \xC2\xB3 |0 \xC2\xB4 |0 \xC2\xB5 |0 \xC2\xB6 |0 \xC2\xB7 |0 \xC2\xB8 |0 \x56\x8E |0 \xC2\xB9 |0 \xC2\xBA |0 \xC2\xBB |0 \xC2\xBC |0 \xC2\xBD |0 \xC2\xBE |0 \xC2\xBF |0 \xC2\xC0 |0 \x5D\xF3 |0 \xC2\xC1 |0 \xC2\xC2 |0 \x62\x64 |0 \xC2\xC3 |0 \xC2\xC4 |0 \x51\x45 |0 \xC2\xC5 |0 \xC2\xC6 |0 \x6B\xBE |0 \xC2\xC7 |0 \xC2\xC8 |0 \x6B\xBF |0 \x6B\xC0 |0 \x52\xD0 |0 \xC2\xC9 |0 \x54\xB7 |0 \x59\x84 |0 \xC2\xCA |0 \xC2\xCB |0 \x58\xDA |0 \x59\x65 |0 \x4E\xAE |0 \x4D\x6D |0 \xC2\xCC |0 \x68\x95 |0 \xC2\xCD |0 \xC2\xCE |0 \x4A\xC5 |0 \x5A\x5A |0 \x6B\xC1 |0 \x4A\x9C |0 \xC2\xCF |0 \xC2\xD0 |0 \x6B\xC2 |0 \xC2\xD1 |0 \xC2\xD2 |0 \x4B\x92 |0 \xC2\xD3 |0 \xC2\xD4 |0 \xC2\xD5 |0 \xC2\xD6 |0 \xC2\xD7 |0 \xC2\xD8 |0 \xC2\xD9 |0 \xC2\xDA |0 \xC2\xDB |0 \xC2\xDC |0 \x6B\xC4 |0 \xC2\xDD |0 \xC2\xDE |0 \xC2\xDF |0 \xC2\xE0 |0 \xC2\xE1 |0 \xC2\xE2 |0 \xC2\xE3 |0 \x5A\x8B |0 \x6B\xA6 |0 \x59\x49 |0 \xC2\xE4 |0 \xC2\xE5 |0 \xC2\xE6 |0 \xC2\xE7 |0 \x6B\xA8 |0 \xC2\xE8 |0 \xC2\xE9 |0 \xC2\xEA |0 \x6B\xA7 |0 \xC2\xEB |0 \xC2\xEC |0 \x51\x84 |0 \x50\xD6 |0 \xC2\xED |0 \x49\x42 |0 \xC2\xEE |0 \xC2\xEF |0 \xC2\xF0 |0 \xC2\xF1 |0 \x57\xEC |0 \xC2\xF2 |0 \x58\xE7 |0 \x6B\xAA |0 \xC2\xF3 |0 \xC2\xF4 |0 \x58\x97 |0 \xC2\xF5 |0 \x6B\xA9 |0 \x5B\x91 |0 \x6B\xAB |0 \x52\x59 |0 \xC2\xF6 |0 \xC2\xF7 |0 \xC2\xF8 |0 \x4E\x95 |0 \x6B\xAD |0 \x6B\xAC |0 \xC2\xF9 |0 \xC2\xFA |0 \xC2\xFB |0 \x52\xDD |0 \xC2\xFC |0 \xC2\xFD |0 \x51\x78 |0 \xC3\x41 |0 \xC3\x42 |0 \xC3\x43 |0 \xC3\x44 |0 \xC3\x45 |0 \x56\x4A |0 \xC3\x46 |0 \x58\x5C |0 \xC3\x47 |0 \xC3\x48 |0 \xC3\x49 |0 \xC3\x4A |0 \xC3\x4B |0 \xC3\x4C |0 \xC3\x4D |0 \xC3\x4E |0 \xC3\x4F |0 \xC3\x50 |0 \xC3\x51 |0 \x6B\xAE |0 \xC3\x52 |0 \xC3\x53 |0 \x6B\xAF |0 \xC3\x54 |0 \xC3\x55 |0 \x6B\xB0 |0 \xC3\x56 |0 \x51\xB5 |0 \xC3\x57 |0 \xC3\x58 |0 \xC3\x59 |0 \xC3\x5A |0 \xC3\x5B |0 \x48\xD3 |0 \x53\x9A |0 \xC3\x5C |0 \xC3\x5D |0 \xC3\x5E |0 \xC3\x5F |0 \x6B\xB1 |0 \xC3\x60 |0 \xC3\x61 |0 \xC3\x62 |0 \xC3\x63 |0 \xC3\x64 |0 \xC3\x65 |0 \xC3\x66 |0 \xC3\x67 |0 \xC3\x68 |0 \xC3\x69 |0 \xC3\x6A |0 \xC3\x6B |0 \xC3\x6C |0 \xC3\x6D |0 \xC3\x6E |0 \xC3\x6F |0 \xC3\x70 |0 \xC3\x71 |0 \xC3\x72 |0 \x54\x81 |0 \x6B\xA5 |0 \xC3\x73 |0 \xC3\x74 |0 \x4F\xB7 |0 \xC3\x75 |0 \xC3\x76 |0 \x4F\xB1 |0 \xC3\x77 |0 \x4B\x86 |0 \xC3\x78 |0 \xC3\x79 |0 \x4C\x67 |0 \xC3\x7A |0 \x50\x5F |0 \x52\x72 |0 \x52\x87 |0 \xC3\x7B |0 \xC3\x7C |0 \x5C\xCB |0 \xC3\x7D |0 \xC3\x7E |0 \xC3\x7F |0 \x4C\xEE |0 \xC3\x81 |0 \xC3\x82 |0 \xC3\x83 |0 \xC3\x84 |0 \xC3\x85 |0 \xC3\x86 |0 \xC3\x87 |0 \xC3\x88 |0 \xC3\x89 |0 \x4F\x9A |0 \x59\x45 |0 \xC3\x8A |0 \x48\xCF |0 \xC3\x8B |0 \xC3\x8C |0 \xC3\x8D |0 \xC3\x8E |0 \xC3\x8F |0 \x6C\x50 |0 \xC3\x90 |0 \xC3\x91 |0 \xC3\x92 |0 \xC3\x93 |0 \xC3\x94 |0 \xC3\x95 |0 \xC3\x96 |0 \xC3\x97 |0 \x6C\x51 |0 \xC3\x98 |0 \xC3\x99 |0 \xC3\x9A |0 \xC3\x9B |0 \xC3\x9C |0 \x58\xAB |0 \xC3\x9D |0 \x48\xAF |0 \xC3\x9E |0 \xC3\x9F |0 \xC3\xA0 |0 \x6C\x52 |0 \x6C\x53 |0 \xC3\xA1 |0 \x6C\x54 |0 \xC3\xA2 |0 \xC3\xA3 |0 \xC3\xA4 |0 \x54\x6A |0 \xC3\xA5 |0 \xC3\xA6 |0 \xC3\xA7 |0 \xC3\xA8 |0 \xC3\xA9 |0 \xC3\xAA |0 \xC3\xAB |0 \x4F\xCE |0 \xC3\xAC |0 \xC3\xAD |0 \x6C\x57 |0 \xC3\xAE |0 \xC3\xAF |0 \xC3\xB0 |0 \xC3\xB1 |0 \xC3\xB2 |0 \xC3\xB3 |0 \xC3\xB4 |0 \x6C\x56 |0 \xC3\xB5 |0 \x49\x7E |0 \xC3\xB6 |0 \x6C\x55 |0 \xC3\xB7 |0 \xC3\xB8 |0 \x6C\x58 |0 \xC3\xB9 |0 \x6C\x59 |0 \xC3\xBA |0 \xC3\xBB |0 \xC3\xBC |0 \xC3\xBD |0 \xC3\xBE |0 \xC3\xBF |0 \xC3\xC0 |0 \xC3\xC1 |0 \xC3\xC2 |0 \xC3\xC3 |0 \xC3\xC4 |0 \xC3\xC5 |0 \xC3\xC6 |0 \xC3\xC7 |0 \xC3\xC8 |0 \xC3\xC9 |0 \xC3\xCA |0 \xC3\xCB |0 \xC3\xCC |0 \xC3\xCD |0 \xC3\xCE |0 \xC3\xCF |0 \xC3\xD0 |0 \xC3\xD1 |0 \xC3\xD2 |0 \xC3\xD3 |0 \xC3\xD4 |0 \xC3\xD5 |0 \xC3\xD6 |0 \xC3\xD7 |0 \xC3\xD8 |0 \xC3\xD9 |0 \xC3\xDA |0 \xC3\xDB |0 \xC3\xDC |0 \xC3\xDD |0 \xC3\xDE |0 \xC3\xDF |0 \xC3\xE0 |0 \xC3\xE1 |0 \xC3\xE2 |0 \xC3\xE3 |0 \xC3\xE4 |0 \xC3\xE5 |0 \xC3\xE6 |0 \xC3\xE7 |0 \xC3\xE8 |0 \xC3\xE9 |0 \xC3\xEA |0 \x57\xA3 |0 \x54\xCC |0 \xC3\xEB |0 \x4D\xAA |0 \x64\xB7 |0 \x64\xB8 |0 \x64\xB9 |0 \x4F\xC1 |0 \xC3\xEC |0 \xC3\xED |0 \xC3\xEE |0 \xC3\xEF |0 \xC3\xF0 |0 \x59\xF3 |0 \xC3\xF1 |0 \x5A\xCE |0 \x55\x78 |0 \xC3\xF2 |0 \xC3\xF3 |0 \xC3\xF4 |0 \xC3\xF5 |0 \xC3\xF6 |0 \xC3\xF7 |0 \xC3\xF8 |0 \xC3\xF9 |0 \xC3\xFA |0 \xC3\xFB |0 \xC3\xFC |0 \xC3\xFD |0 \xC4\x41 |0 \xC4\x42 |0 \xC4\x43 |0 \xC4\x44 |0 \xC4\x45 |0 \xC4\x46 |0 \xC4\x47 |0 \xC4\x48 |0 \xC4\x49 |0 \xC4\x4A |0 \xC4\x4B |0 \xC4\x4C |0 \xC4\x4D |0 \xC4\x4E |0 \xC4\x4F |0 \xC4\x50 |0 \xC4\x51 |0 \xC4\x52 |0 \xC4\x53 |0 \xC4\x54 |0 \xC4\x55 |0 \xC4\x56 |0 \xC4\x57 |0 \xC4\x58 |0 \xC4\x59 |0 \xC4\x5A |0 \xC4\x5B |0 \xC4\x5C |0 \xC4\x5D |0 \xC4\x5E |0 \xC4\x5F |0 \xC4\x60 |0 \xC4\x61 |0 \xC4\x62 |0 \xC4\x63 |0 \xC4\x64 |0 \xC4\x65 |0 \xC4\x66 |0 \xC4\x67 |0 \xC4\x68 |0 \xC4\x69 |0 \xC4\x6A |0 \xC4\x6B |0 \xC4\x6C |0 \xC4\x6D |0 \xC4\x6E |0 \xC4\x6F |0 \xC4\x70 |0 \xC4\x71 |0 \xC4\x72 |0 \xC4\x73 |0 \xC4\x74 |0 \xC4\x75 |0 \xC4\x76 |0 \xC4\x77 |0 \xC4\x78 |0 \xC4\x79 |0 \xC4\x7A |0 \xC4\x7B |0 \xC4\x7C |0 \xC4\x7D |0 \xC4\x7E |0 \xC4\x7F |0 \xC4\x81 |0 \xC4\x82 |0 \xC4\x83 |0 \xC4\x84 |0 \xC4\x85 |0 \xC4\x86 |0 \xC4\x87 |0 \xC4\x88 |0 \xC4\x89 |0 \xC4\x8A |0 \xC4\x8B |0 \xC4\x8C |0 \xC4\x8D |0 \xC4\x8E |0 \xC4\x8F |0 \xC4\x90 |0 \xC4\x91 |0 \xC4\x92 |0 \xC4\x93 |0 \xC4\x94 |0 \xC4\x95 |0 \xC4\x96 |0 \xC4\x97 |0 \xC4\x98 |0 \xC4\x99 |0 \xC4\x9A |0 \xC4\x9B |0 \xC4\x9C |0 \xC4\x9D |0 \xC4\x9E |0 \xC4\x9F |0 \xC4\xA0 |0 \xC4\xA1 |0 \xC4\xA2 |0 \xC4\xA3 |0 \xC4\xA4 |0 \xC4\xA5 |0 \xC4\xA6 |0 \xC4\xA7 |0 \xC4\xA8 |0 \xC4\xA9 |0 \xC4\xAA |0 \xC4\xAB |0 \xC4\xAC |0 \xC4\xAD |0 \xC4\xAE |0 \xC4\xAF |0 \xC4\xB0 |0 \xC4\xB1 |0 \xC4\xB2 |0 \xC4\xB3 |0 \x59\xB2 |0 \x4B\xA4 |0 \x54\x8B |0 \x69\x9D |0 \x58\x8F |0 \x56\x53 |0 \x58\xEA |0 \x64\x90 |0 \x57\x88 |0 \x4D\x6B |0 \x4B\xD8 |0 \x69\x9E |0 \x48\xE3 |0 \x56\x6C |0 \x69\x9F |0 \x5A\xA3 |0 \x51\xAC |0 \x51\x8D |0 \x53\xC3 |0 \x4F\xB0 |0 \x69\xA0 |0 \x4E\xD4 |0 \xC4\xB4 |0 \x69\xA1 |0 \x69\xA2 |0 \xC4\xB5 |0 \x69\xA3 |0 \x59\xC2 |0 \x53\xB4 |0 \xC4\xB6 |0 \x57\x67 |0 \x69\xA4 |0 \xC4\xB7 |0 \x5A\x51 |0 \x50\x65 |0 \x56\xE1 |0 \xC4\xB8 |0 \x69\xA5 |0 \x69\xA6 |0 \x59\x75 |0 \x4B\xED |0 \x69\xA7 |0 \x69\xA8 |0 \x4B\x7F |0 \x69\xA9 |0 \x69\xAA |0 \xC4\xB9 |0 \x49\xFB |0 \x69\xAB |0 \x69\xAC |0 \x54\xA6 |0 \xC4\xBA |0 \xC4\xBB |0 \xC4\xBC |0 \xC4\xBD |0 \xC4\xBE |0 \xC4\xBF |0 \xC4\xC0 |0 \xC4\xC1 |0 \xC4\xC2 |0 \xC4\xC3 |0 \xC4\xC4 |0 \xC4\xC5 |0 \xC4\xC6 |0 \xC4\xC7 |0 \xC4\xC8 |0 \xC4\xC9 |0 \xC4\xCA |0 \xC4\xCB |0 \xC4\xCC |0 \xC4\xCD |0 \xC4\xCE |0 \xC4\xCF |0 \xC4\xD0 |0 \xC4\xD1 |0 \xC4\xD2 |0 \xC4\xD3 |0 \xC4\xD4 |0 \xC4\xD5 |0 \xC4\xD6 |0 \xC4\xD7 |0 \xC4\xD8 |0 \xC4\xD9 |0 \xC4\xDA |0 \xC4\xDB |0 \xC4\xDC |0 \xC4\xDD |0 \xC4\xDE |0 \xC4\xDF |0 \x4C\x88 |0 \xC4\xE0 |0 \xC4\xE1 |0 \x66\xA8 |0 \x66\xA9 |0 \x66\xAA |0 \xC4\xE2 |0 \x66\xAB |0 \xC4\xE3 |0 \xC4\xE4 |0 \x53\xAD |0 \x66\xAC |0 \x66\xAD |0 \xC4\xE5 |0 \xC4\xE6 |0 \xC4\xE7 |0 \x4C\x69 |0 \x55\xB2 |0 \xC4\xE8 |0 \xC4\xE9 |0 \xC4\xEA |0 \xC4\xEB |0 \xC4\xEC |0 \xC4\xED |0 \xC4\xEE |0 \x61\xB7 |0 \x6C\x6F |0 \xC4\xEF |0 \xC4\xF0 |0 \xC4\xF1 |0 \xC4\xF2 |0 \xC4\xF3 |0 \xC4\xF4 |0 \xC4\xF5 |0 \xC4\xF6 |0 \xC4\xF7 |0 \xC4\xF8 |0 \xC4\xF9 |0 \xC4\xFA |0 \xC4\xFB |0 \xC4\xFC |0 \xC4\xFD |0 \xC5\x41 |0 \xC5\x42 |0 \xC5\x43 |0 \xC5\x44 |0 \xC5\x45 |0 \xC5\x46 |0 \xC5\x47 |0 \xC5\x48 |0 \xC5\x49 |0 \xC5\x4A |0 \xC5\x4B |0 \xC5\x4C |0 \xC5\x4D |0 \xC5\x4E |0 \xC5\x4F |0 \xC5\x50 |0 \xC5\x51 |0 \xC5\x52 |0 \xC5\x53 |0 \xC5\x54 |0 \xC5\x55 |0 \x6C\x70 |0 \xC5\x56 |0 \xC5\x57 |0 \x49\xCC |0 \xC5\x58 |0 \xC5\x59 |0 \xC5\x5A |0 \xC5\x5B |0 \xC5\x5C |0 \xC5\x5D |0 \xC5\x5E |0 \xC5\x5F |0 \xC5\x60 |0 \xC5\x61 |0 \xC5\x62 |0 \xC5\x63 |0 \xC5\x64 |0 \xC5\x65 |0 \xC5\x66 |0 \xC5\x67 |0 \xC5\x68 |0 \xC5\x69 |0 \xC5\x6A |0 \xC5\x6B |0 \xC5\x6C |0 \xC5\x6D |0 \xC5\x6E |0 \xC5\x6F |0 \xC5\x70 |0 \xC5\x71 |0 \xC5\x72 |0 \xC5\x73 |0 \xC5\x74 |0 \x6C\x71 |0 \xC5\x75 |0 \xC5\x76 |0 \xC5\x77 |0 \xC5\x78 |0 \xC5\x79 |0 \xC5\x7A |0 \xC5\x7B |0 \xC5\x7C |0 \xC5\x7D |0 \xC5\x7E |0 \xC5\x7F |0 \xC5\x81 |0 \xC5\x82 |0 \xC5\x83 |0 \xC5\x84 |0 \xC5\x85 |0 \xC5\x86 |0 \xC5\x87 |0 \xC5\x88 |0 \xC5\x89 |0 \xC5\x8A |0 \xC5\x8B |0 \xC5\x8C |0 \xC5\x8D |0 \xC5\x8E |0 \xC5\x8F |0 \xC5\x90 |0 \xC5\x91 |0 \xC5\x92 |0 \xC5\x93 |0 \xC5\x94 |0 \xC5\x95 |0 \xC5\x96 |0 \xC5\x97 |0 \xC5\x98 |0 \xC5\x99 |0 \xC5\x9A |0 \x6C\x73 |0 \x6C\x72 |0 \xC5\x9B |0 \xC5\x9C |0 \xC5\x9D |0 \xC5\x9E |0 \xC5\x9F |0 \xC5\xA0 |0 \xC5\xA1 |0 \xC5\xA2 |0 \xC5\xA3 |0 \xC5\xA4 |0 \xC5\xA5 |0 \xC5\xA6 |0 \xC5\xA7 |0 \x61\xBA |0 \xC5\xA8 |0 \x4E\xA1 |0 \xC5\xA9 |0 \x61\xBB |0 \x61\xBC |0 \x61\xBD |0 \x61\xBE |0 \x61\xBF |0 \x61\xC0 |0 \x4C\x59 |0 \x59\xFA |0 \x4F\x44 |0 \x55\xCD |0 \x49\x45 |0 \x56\x67 |0 \xC5\xAA |0 \x61\xC1 |0 \x4B\xFB |0 \x54\xC3 |0 \x61\xC2 |0 \xC5\xAB |0 \xC5\xAC |0 \x4F\x68 |0 \xC5\xAD |0 \x49\x9E |0 \x61\xC3 |0 \xC5\xAE |0 \x4B\xF5 |0 \x61\xC4 |0 \x52\xD8 |0 \xC5\xAF |0 \xC5\xB0 |0 \x61\xC5 |0 \x58\x7A |0 \x4D\x7D |0 \x61\xC6 |0 \x50\xA0 |0 \xC5\xB1 |0 \x61\xC7 |0 \x49\xF5 |0 \xC5\xB2 |0 \x61\xC8 |0 \xC5\xB3 |0 \x51\x94 |0 \x61\xC9 |0 \x61\xCA |0 \x51\xF7 |0 \x61\xCB |0 \x61\xCC |0 \x61\xCD |0 \x55\xD6 |0 \x5C\xB7 |0 \x5D\x86 |0 \x58\x84 |0 \xC5\xB4 |0 \xC5\xB5 |0 \xC5\xB6 |0 \xC5\xB7 |0 \xC5\xB8 |0 \xC5\xB9 |0 \xC5\xBA |0 \xC5\xBB |0 \xC5\xBC |0 \xC5\xBD |0 \xC5\xBE |0 \x68\xA4 |0 \xC5\xBF |0 \xC5\xC0 |0 \x5E\xAF |0 \xC5\xC1 |0 \xC5\xC2 |0 \xC5\xC3 |0 \xC5\xC4 |0 \xC5\xC5 |0 \xC5\xC6 |0 \xC5\xC7 |0 \xC5\xC8 |0 \xC5\xC9 |0 \xC5\xCA |0 \xC5\xCB |0 \xC5\xCC |0 \xC5\xCD |0 \xC5\xCE |0 \xC5\xCF |0 \xC5\xD0 |0 \xC5\xD1 |0 \xC5\xD2 |0 \xC5\xD3 |0 \xC5\xD4 |0 \xC5\xD5 |0 \xC5\xD6 |0 \xC5\xD7 |0 \xC5\xD8 |0 \xC5\xD9 |0 \xC5\xDA |0 \xC5\xDB |0 \xC5\xDC |0 \xC5\xDD |0 \xC5\xDE |0 \xC5\xDF |0 \xC5\xE0 |0 \xC5\xE1 |0 \xC5\xE2 |0 \xC5\xE3 |0 \xC5\xE4 |0 \xC5\xE5 |0 \xC5\xE6 |0 \xC5\xE7 |0 \xC5\xE8 |0 \xC5\xE9 |0 \xC5\xEA |0 \xC5\xEB |0 \xC5\xEC |0 \xC5\xED |0 \xC5\xEE |0 \xC5\xEF |0 \xC5\xF0 |0 \xC5\xF1 |0 \xC5\xF2 |0 \xC5\xF3 |0 \xC5\xF4 |0 \xC5\xF5 |0 \xC5\xF6 |0 \xC5\xF7 |0 \xC5\xF8 |0 \xC5\xF9 |0 \xC5\xFA |0 \xC5\xFB |0 \xC5\xFC |0 \xC5\xFD |0 \xC6\x41 |0 \xC6\x42 |0 \xC6\x43 |0 \xC6\x44 |0 \xC6\x45 |0 \xC6\x46 |0 \xC6\x47 |0 \xC6\x48 |0 \xC6\x49 |0 \xC6\x4A |0 \xC6\x4B |0 \xC6\x4C |0 \xC6\x4D |0 \xC6\x4E |0 \xC6\x4F |0 \xC6\x50 |0 \xC6\x51 |0 \xC6\x52 |0 \xC6\x53 |0 \xC6\x54 |0 \xC6\x55 |0 \xC6\x56 |0 \xC6\x57 |0 \xC6\x58 |0 \xC6\x59 |0 \xC6\x5A |0 \xC6\x5B |0 \xC6\x5C |0 \xC6\x5D |0 \xC6\x5E |0 \xC6\x5F |0 \xC6\x60 |0 \xC6\x61 |0 \xC6\x62 |0 \xC6\x63 |0 \xC6\x64 |0 \xC6\x65 |0 \xC6\x66 |0 \xC6\x67 |0 \xC6\x68 |0 \xC6\x69 |0 \xC6\x6A |0 \xC6\x6B |0 \xC6\x6C |0 \xC6\x6D |0 \xC6\x6E |0 \xC6\x6F |0 \xC6\x70 |0 \xC6\x71 |0 \xC6\x72 |0 \xC6\x73 |0 \xC6\x74 |0 \xC6\x75 |0 \xC6\x76 |0 \xC6\x77 |0 \xC6\x78 |0 \xC6\x79 |0 \xC6\x7A |0 \xC6\x7B |0 \xC6\x7C |0 \xC6\x7D |0 \xC6\x7E |0 \xC6\x7F |0 \xC6\x81 |0 \xC6\x82 |0 \xC6\x83 |0 \xC6\x84 |0 \xC6\x85 |0 \xC6\x86 |0 \xC6\x87 |0 \xC6\x88 |0 \xC6\x89 |0 \xC6\x8A |0 \xC6\x8B |0 \xC6\x8C |0 \xC6\x8D |0 \xC6\x8E |0 \xC6\x8F |0 \xC6\x90 |0 \xC6\x91 |0 \xC6\x92 |0 \xC6\x93 |0 \xC6\x94 |0 \xC6\x95 |0 \xC6\x96 |0 \xC6\x97 |0 \xC6\x98 |0 \xC6\x99 |0 \xC6\x9A |0 \xC6\x9B |0 \xC6\x9C |0 \xC6\x9D |0 \xC6\x9E |0 \xC6\x9F |0 \xC6\xA0 |0 \xC6\xA1 |0 \xC6\xA2 |0 \xC6\xA3 |0 \xC6\xA4 |0 \xC6\xA5 |0 \xC6\xA6 |0 \xC6\xA7 |0 \xC6\xA8 |0 \xC6\xA9 |0 \xC6\xAA |0 \xC6\xAB |0 \xC6\xAC |0 \xC6\xAD |0 \xC6\xAE |0 \xC6\xAF |0 \xC6\xB0 |0 \xC6\xB1 |0 \xC6\xB2 |0 \xC6\xB3 |0 \xC6\xB4 |0 \xC6\xB5 |0 \xC6\xB6 |0 \xC6\xB7 |0 \xC6\xB8 |0 \xC6\xB9 |0 \xC6\xBA |0 \xC6\xBB |0 \xC6\xBC |0 \xC6\xBD |0 \xC6\xBE |0 \xC6\xBF |0 \xC6\xC0 |0 \xC6\xC1 |0 \xC6\xC2 |0 \xC6\xC3 |0 \xC6\xC4 |0 \xC6\xC5 |0 \xC6\xC6 |0 \xC6\xC7 |0 \x51\xEC |0 \x5A\xA5 |0 \x57\x74 |0 \x59\x51 |0 \x4A\x7B |0 \x54\x9E |0 \xC6\xC8 |0 \x49\xB4 |0 \x51\xBE |0 \x63\xDF |0 \x55\xBA |0 \x63\xE0 |0 \x63\xE1 |0 \x4F\xD3 |0 \x63\xE2 |0 \x5C\x44 |0 \x57\x75 |0 \x63\xE4 |0 \x4E\xDC |0 \x63\xE3 |0 \x63\xE5 |0 \x63\xE6 |0 \x51\xED |0 \xC6\xC9 |0 \x4F\x5E |0 \x63\xE7 |0 \x51\xE5 |0 \x4D\xA6 |0 \x63\xE8 |0 \xC6\xCA |0 \x63\xE9 |0 \x4A\x72 |0 \x59\x8A |0 \xC6\xCB |0 \xC6\xCC |0 \x50\x45 |0 \x63\xEA |0 \x53\xEE |0 \x63\xEB |0 \x63\xEC |0 \xC6\xCD |0 \xC6\xCE |0 \x63\xED |0 \x53\xAC |0 \x63\xEE |0 \xC6\xCF |0 \x55\x47 |0 \x63\xEF |0 \x63\xF0 |0 \x63\xF1 |0 \x63\x59 |0 \x63\xF2 |0 \x63\xF3 |0 \x51\xE1 |0 \x63\xF4 |0 \x63\xF5 |0 \x5B\xE7 |0 \x63\xF6 |0 \xC6\xD0 |0 \x63\xF7 |0 \x4D\x67 |0 \xC6\xD1 |0 \xC6\xD2 |0 \xC6\xD3 |0 \xC6\xD4 |0 \xC6\xD5 |0 \xC6\xD6 |0 \xC6\xD7 |0 \x6C\x5B |0 \x6C\x5A |0 \xC6\xD8 |0 \xC6\xD9 |0 \xC6\xDA |0 \xC6\xDB |0 \x6C\x5E |0 \x6C\x5C |0 \x4D\xA0 |0 \xC6\xDC |0 \x6C\x5F |0 \xC6\xDD |0 \x6C\x60 |0 \xC6\xDE |0 \xC6\xDF |0 \xC6\xE0 |0 \x6C\x62 |0 \x6C\x61 |0 \x6C\x64 |0 \xC6\xE1 |0 \xC6\xE2 |0 \x6C\x63 |0 \xC6\xE3 |0 \xC6\xE4 |0 \xC6\xE5 |0 \xC6\xE6 |0 \xC6\xE7 |0 \x6C\x65 |0 \x6C\x66 |0 \xC6\xE8 |0 \xC6\xE9 |0 \xC6\xEA |0 \xC6\xEB |0 \x6C\x67 |0 \xC6\xEC |0 \x56\x89 |0 \xC6\xED |0 \xC6\xEE |0 \xC6\xEF |0 \xC6\xF0 |0 \x4C\xDE |0 \xC6\xF1 |0 \xC6\xF2 |0 \xC6\xF3 |0 \xC6\xF4 |0 \xC6\xF5 |0 \xC6\xF6 |0 \x6C\x74 |0 \xC6\xF7 |0 \x6C\x75 |0 \xC6\xF8 |0 \xC6\xF9 |0 \xC6\xFA |0 \xC6\xFB |0 \x6C\x76 |0 \xC6\xFC |0 \xC6\xFD |0 \xC7\x41 |0 \xC7\x42 |0 \x6C\x78 |0 \xC7\x43 |0 \x6C\x7A |0 \xC7\x44 |0 \x6C\x77 |0 \xC7\x45 |0 \xC7\x46 |0 \xC7\x47 |0 \xC7\x48 |0 \xC7\x49 |0 \xC7\x4A |0 \xC7\x4B |0 \xC7\x4C |0 \xC7\x4D |0 \x6C\x7B |0 \xC7\x4E |0 \x6C\x79 |0 \xC7\x4F |0 \xC7\x50 |0 \xC7\x51 |0 \xC7\x52 |0 \xC7\x53 |0 \xC7\x54 |0 \xC7\x55 |0 \x5C\x77 |0 \xC7\x56 |0 \xC7\x57 |0 \xC7\x58 |0 \xC7\x59 |0 \x6C\x7C |0 \xC7\x5A |0 \xC7\x5B |0 \xC7\x5C |0 \xC7\x5D |0 \xC7\x5E |0 \xC7\x5F |0 \x6C\x7D |0 \xC7\x60 |0 \xC7\x61 |0 \xC7\x62 |0 \x6C\x7E |0 \xC7\x63 |0 \xC7\x64 |0 \xC7\x65 |0 \xC7\x66 |0 \xC7\x67 |0 \xC7\x68 |0 \xC7\x69 |0 \xC7\x6A |0 \xC7\x6B |0 \xC7\x6C |0 \xC7\x6D |0 \x6C\x7F |0 \xC7\x6E |0 \xC7\x6F |0 \xC7\x70 |0 \x6C\x81 |0 \xC7\x71 |0 \xC7\x72 |0 \xC7\x73 |0 \xC7\x74 |0 \xC7\x75 |0 \xC7\x76 |0 \xC7\x77 |0 \xC7\x78 |0 \xC7\x79 |0 \xC7\x7A |0 \xC7\x7B |0 \x5E\x6B |0 \xC7\x7C |0 \xC7\x7D |0 \x5C\xA9 |0 \xC7\x7E |0 \xC7\x7F |0 \xC7\x81 |0 \xC7\x82 |0 \xC7\x83 |0 \xC7\x84 |0 \xC7\x85 |0 \xC7\x86 |0 \x63\x98 |0 \x4D\x8E |0 \xC7\x87 |0 \xC7\x88 |0 \xC7\x89 |0 \xC7\x8A |0 \x50\x9E |0 \x4E\x8B |0 \x6C\x69 |0 \x53\xC6 |0 \x6C\x68 |0 \xC7\x8B |0 \x6C\x6A |0 \x6C\x6C |0 \x6C\x6B |0 \xC7\x8C |0 \xC7\x8D |0 \xC7\x8E |0 \x6C\x6D |0 \xC7\x8F |0 \x57\xB9 |0 \xC7\x90 |0 \x6C\x6E |0 \xC7\x91 |0 \xC7\x92 |0 \x52\xA6 |0 \xC7\x93 |0 \xC7\x94 |0 \xC7\x95 |0 \xC7\x96 |0 \xC7\x97 |0 \xC7\x98 |0 \xC7\x99 |0 \xC7\x9A |0 \xC7\x9B |0 \xC7\x9C |0 \xC7\x9D |0 \xC7\x9E |0 \xC7\x9F |0 \xC7\xA0 |0 \xC7\xA1 |0 \xC7\xA2 |0 \xC7\xA3 |0 \xC7\xA4 |0 \xC7\xA5 |0 \xC7\xA6 |0 \xC7\xA7 |0 \xC7\xA8 |0 \xC7\xA9 |0 \xC7\xAA |0 \xC7\xAB |0 \xC7\xAC |0 \xC7\xAD |0 \xC7\xAE |0 \xC7\xAF |0 \xC7\xB0 |0 \xC7\xB1 |0 \xC7\xB2 |0 \xC7\xB3 |0 \xC7\xB4 |0 \xC7\xB5 |0 \xC7\xB6 |0 \xC7\xB7 |0 \xC7\xB8 |0 \xC7\xB9 |0 \xC7\xBA |0 \xC7\xBB |0 \xC7\xBC |0 \xC7\xBD |0 \xC7\xBE |0 \xC7\xBF |0 \xC7\xC0 |0 \xC7\xC1 |0 \xC7\xC2 |0 \xC7\xC3 |0 \xC7\xC4 |0 \xC7\xC5 |0 \xC7\xC6 |0 \xC7\xC7 |0 \xC7\xC8 |0 \xC7\xC9 |0 \xC7\xCA |0 \xC7\xCB |0 \xC7\xCC |0 \xC7\xCD |0 \xC7\xCE |0 \xC7\xCF |0 \xC7\xD0 |0 \xC7\xD1 |0 \xC7\xD2 |0 \xC7\xD3 |0 \xC7\xD4 |0 \xC7\xD5 |0 \xC7\xD6 |0 \xC7\xD7 |0 \xC7\xD8 |0 \xC7\xD9 |0 \xC7\xDA |0 \xC7\xDB |0 \xC7\xDC |0 \xC7\xDD |0 \xC7\xDE |0 \xC7\xDF |0 \xC7\xE0 |0 \xC7\xE1 |0 \xC7\xE2 |0 \xC7\xE3 |0 \xC7\xE4 |0 \xC7\xE5 |0 \xC7\xE6 |0 \xC7\xE7 |0 \xC7\xE8 |0 \xC7\xE9 |0 \xC7\xEA |0 \xC7\xEB |0 \xC7\xEC |0 \xC7\xED |0 \xC7\xEE |0 \xC7\xEF |0 \xC7\xF0 |0 \xC7\xF1 |0 \xC7\xF2 |0 \xC7\xF3 |0 \xC7\xF4 |0 \xC7\xF5 |0 \xC7\xF6 |0 \xC7\xF7 |0 \xC7\xF8 |0 \xC7\xF9 |0 \xC7\xFA |0 \xC7\xFB |0 \xC7\xFC |0 \xC7\xFD |0 \xC8\x41 |0 \xC8\x42 |0 \xC8\x43 |0 \xC8\x44 |0 \xC8\x45 |0 \xC8\x46 |0 \xC8\x47 |0 \xC8\x48 |0 \xC8\x49 |0 \xC8\x4A |0 \xC8\x4B |0 \xC8\x4C |0 \xC8\x4D |0 \xC8\x4E |0 \xC8\x4F |0 \xC8\x50 |0 \xC8\x51 |0 \xC8\x52 |0 \xC8\x53 |0 \xC8\x54 |0 \xC8\x55 |0 \xC8\x56 |0 \xC8\x57 |0 \xC8\x58 |0 \xC8\x59 |0 \xC8\x5A |0 \xC8\x5B |0 \xC8\x5C |0 \xC8\x5D |0 \xC8\x5E |0 \xC8\x5F |0 \xC8\x60 |0 \xC8\x61 |0 \xC8\x62 |0 \xC8\x63 |0 \xC8\x64 |0 \xC8\x65 |0 \xC8\x66 |0 \xC8\x67 |0 \xC8\x68 |0 \xC8\x69 |0 \xC8\x6A |0 \xC8\x6B |0 \xC8\x6C |0 \xC8\x6D |0 \xC8\x6E |0 \xC8\x6F |0 \xC8\x70 |0 \xC8\x71 |0 \xC8\x72 |0 \xC8\x73 |0 \xC8\x74 |0 \xC8\x75 |0 \xC8\x76 |0 \xC8\x77 |0 \xC8\x78 |0 \xC8\x79 |0 \xC8\x7A |0 \xC8\x7B |0 \xC8\x7C |0 \xC8\x7D |0 \xC8\x7E |0 \xC8\x7F |0 \xC8\x81 |0 \xC8\x82 |0 \xC8\x83 |0 \xC8\x84 |0 \xC8\x85 |0 \xC8\x86 |0 \xC8\x87 |0 \xC8\x88 |0 \xC8\x89 |0 \xC8\x8A |0 \xC8\x8B |0 \xC8\x8C |0 \xC8\x8D |0 \xC8\x8E |0 \xC8\x8F |0 \xC8\x90 |0 \xC8\x91 |0 \xC8\x92 |0 \xC8\x93 |0 \xC8\x94 |0 \xC8\x95 |0 \xC8\x96 |0 \xC8\x97 |0 \xC8\x98 |0 \xC8\x99 |0 \xC8\x9A |0 \xC8\x9B |0 \xC8\x9C |0 \xC8\x9D |0 \xC8\x9E |0 \xC8\x9F |0 \xC8\xA0 |0 \xC8\xA1 |0 \xC8\xA2 |0 \xC8\xA3 |0 \xC8\xA4 |0 \xC8\xA5 |0 \xC8\xA6 |0 \xC8\xA7 |0 \xC8\xA8 |0 \xC8\xA9 |0 \xC8\xAA |0 \xC8\xAB |0 \xC8\xAC |0 \xC8\xAD |0 \xC8\xAE |0 \xC8\xAF |0 \xC8\xB0 |0 \xC8\xB1 |0 \xC8\xB2 |0 \xC8\xB3 |0 \xC8\xB4 |0 \xC8\xB5 |0 \xC8\xB6 |0 \xC8\xB7 |0 \xC8\xB8 |0 \xC8\xB9 |0 \xC8\xBA |0 \xC8\xBB |0 \xC8\xBC |0 \xC8\xBD |0 \xC8\xBE |0 \xC8\xBF |0 \xC8\xC0 |0 \xC8\xC1 |0 \xC8\xC2 |0 \xC8\xC3 |0 \xC8\xC4 |0 \xC8\xC5 |0 \xC8\xC6 |0 \xC8\xC7 |0 \xC8\xC8 |0 \xC8\xC9 |0 \xC8\xCA |0 \xC8\xCB |0 \xC8\xCC |0 \xC8\xCD |0 \xC8\xCE |0 \xC8\xCF |0 \xC8\xD0 |0 \xC8\xD1 |0 \xC8\xD2 |0 \xC8\xD3 |0 \xC8\xD4 |0 \xC8\xD5 |0 \xC8\xD6 |0 \xC8\xD7 |0 \xC8\xD8 |0 \xC8\xD9 |0 \xC8\xDA |0 \xC8\xDB |0 \xC8\xDC |0 \xC8\xDD |0 \xC8\xDE |0 \xC8\xDF |0 \xC8\xE0 |0 \xC8\xE1 |0 \xC8\xE2 |0 \xC8\xE3 |0 \xC8\xE4 |0 \xC8\xE5 |0 \xC8\xE6 |0 \xC8\xE7 |0 \xC8\xE8 |0 \xC8\xE9 |0 \xC8\xEA |0 \xC8\xEB |0 \xC8\xEC |0 \xC8\xED |0 \xC8\xEE |0 \xC8\xEF |0 \xC8\xF0 |0 \xC8\xF1 |0 \xC8\xF2 |0 \xC8\xF3 |0 \xC8\xF4 |0 \xC8\xF5 |0 \xC8\xF6 |0 \xC8\xF7 |0 \xC8\xF8 |0 \xC8\xF9 |0 \xC8\xFA |0 \xC8\xFB |0 \xC8\xFC |0 \xC8\xFD |0 \x5A\x84 |0 \xC9\x41 |0 \xC9\x42 |0 \x6B\xCE |0 \xC9\x43 |0 \x51\xB2 |0 \x6B\xCF |0 \xC9\x44 |0 \xC9\x45 |0 \x6B\xD0 |0 \x6B\xD1 |0 \x6B\xD2 |0 \x6B\xD3 |0 \xC9\x46 |0 \xC9\x47 |0 \x6B\xD5 |0 \xC9\x48 |0 \x49\x4B |0 \x6B\xD6 |0 \xC9\x49 |0 \x6B\xD7 |0 \x6B\xD8 |0 \x6B\xD9 |0 \xC9\x4A |0 \x6B\xDA |0 \x6B\xDB |0 \xC9\x4B |0 \xC9\x4C |0 \xC9\x4D |0 \xC9\x4E |0 \x6B\xDC |0 \x6B\xDD |0 \x58\x6A |0 \xC9\x4F |0 \x6B\xDE |0 \x6B\xDF |0 \x6B\xE0 |0 \x6B\xE1 |0 \x6B\xE2 |0 \x6B\xE3 |0 \x50\xEF |0 \x6B\xE4 |0 \x6B\xE5 |0 \x6B\xE6 |0 \x6B\xE7 |0 \x6B\xE8 |0 \xC9\x50 |0 \x6B\xE9 |0 \xC9\x51 |0 \x6B\xEA |0 \x6B\xEB |0 \xC9\x52 |0 \x6B\xEC |0 \x6B\xED |0 \x6B\xEE |0 \x6B\xEF |0 \x6B\xF0 |0 \x6B\xF1 |0 \x6B\xF2 |0 \x6B\xF3 |0 \x4F\xA7 |0 \xC9\x53 |0 \x6B\xF4 |0 \x6B\xF5 |0 \x6B\xF6 |0 \x6B\xF7 |0 \xC9\x54 |0 \xC9\x55 |0 \xC9\x56 |0 \xC9\x57 |0 \xC9\x58 |0 \x54\xF9 |0 \x6B\xF8 |0 \x6B\xF9 |0 \x6B\xFA |0 \x6B\xFB |0 \xC9\x59 |0 \xC9\x5A |0 \x6B\xFC |0 \x6B\xFD |0 \x6C\x41 |0 \x6C\x42 |0 \x6C\x43 |0 \x6C\x44 |0 \x6C\x45 |0 \xC9\x5B |0 \xC9\x5C |0 \x6C\x46 |0 \x6C\x47 |0 \x6C\x48 |0 \x49\x8F |0 \x6C\x49 |0 \x6C\x4A |0 \x6C\x4B |0 \xC9\x5D |0 \xC9\x5E |0 \x6C\x4C |0 \x6C\x4D |0 \x51\x7B |0 \x6C\x4E |0 \xC9\x5F |0 \xC9\x60 |0 \x6C\x4F |0 \xC9\x61 |0 \xC9\x62 |0 \xC9\x63 |0 \xC9\x64 |0 \xC9\x65 |0 \xC9\x66 |0 \xC9\x67 |0 \xC9\x68 |0 \xC9\x69 |0 \xC9\x6A |0 \xC9\x6B |0 \xC9\x6C |0 \xC9\x6D |0 \xC9\x6E |0 \xC9\x6F |0 \xC9\x70 |0 \xC9\x71 |0 \xC9\x72 |0 \xC9\x73 |0 \xC9\x74 |0 \xC9\x75 |0 \xC9\x76 |0 \xC9\x77 |0 \xC9\x78 |0 \xC9\x79 |0 \xC9\x7A |0 \xC9\x7B |0 \xC9\x7C |0 \xC9\x7D |0 \xC9\x7E |0 \xC9\x7F |0 \xC9\x81 |0 \xC9\x82 |0 \xC9\x83 |0 \xC9\x84 |0 \xC9\x85 |0 \xC9\x86 |0 \xC9\x87 |0 \xC9\x88 |0 \xC9\x89 |0 \xC9\x8A |0 \xC9\x8B |0 \xC9\x8C |0 \xC9\x8D |0 \xC9\x8E |0 \xC9\x8F |0 \xC9\x90 |0 \xC9\x91 |0 \xC9\x92 |0 \xC9\x93 |0 \xC9\x94 |0 \xC9\x95 |0 \xC9\x96 |0 \xC9\x97 |0 \xC9\x98 |0 \xC9\x99 |0 \xC9\x9A |0 \xC9\x9B |0 \xC9\x9C |0 \xC9\x9D |0 \xC9\x9E |0 \xC9\x9F |0 \xC9\xA0 |0 \xC9\xA1 |0 \xC9\xA2 |0 \xC9\xA3 |0 \xC9\xA4 |0 \xC9\xA5 |0 \xC9\xA6 |0 \xC9\xA7 |0 \xC9\xA8 |0 \xC9\xA9 |0 \xC9\xAA |0 \xC9\xAB |0 \xC9\xAC |0 \xC9\xAD |0 \xC9\xAE |0 \xC9\xAF |0 \xC9\xB0 |0 \xC9\xB1 |0 \xC9\xB2 |0 \xC9\xB3 |0 \xC9\xB4 |0 \xC9\xB5 |0 \xC9\xB6 |0 \xC9\xB7 |0 \xC9\xB8 |0 \xC9\xB9 |0 \xC9\xBA |0 \xC9\xBB |0 \xC9\xBC |0 \xC9\xBD |0 \xC9\xBE |0 \xC9\xBF |0 \xC9\xC0 |0 \xC9\xC1 |0 \xC9\xC2 |0 \xC9\xC3 |0 \xC9\xC4 |0 \xC9\xC5 |0 \xC9\xC6 |0 \xC9\xC7 |0 \xC9\xC8 |0 \xC9\xC9 |0 \xC9\xCA |0 \xC9\xCB |0 \xC9\xCC |0 \xC9\xCD |0 \xC9\xCE |0 \xC9\xCF |0 \xC9\xD0 |0 \xC9\xD1 |0 \xC9\xD2 |0 \xC9\xD3 |0 \xC9\xD4 |0 \xC9\xD5 |0 \xC9\xD6 |0 \xC9\xD7 |0 \xC9\xD8 |0 \xC9\xD9 |0 \xC9\xDA |0 \xC9\xDB |0 \xC9\xDC |0 \xC9\xDD |0 \xC9\xDE |0 \xC9\xDF |0 \xC9\xE0 |0 \xC9\xE1 |0 \xC9\xE2 |0 \xC9\xE3 |0 \xC9\xE4 |0 \xC9\xE5 |0 \xC9\xE6 |0 \xC9\xE7 |0 \xC9\xE8 |0 \xC9\xE9 |0 \xC9\xEA |0 \xC9\xEB |0 \xC9\xEC |0 \xC9\xED |0 \xC9\xEE |0 \xC9\xEF |0 \xC9\xF0 |0 \xC9\xF1 |0 \xC9\xF2 |0 \xC9\xF3 |0 \xC9\xF4 |0 \xC9\xF5 |0 \xC9\xF6 |0 \xC9\xF7 |0 \xC9\xF8 |0 \xC9\xF9 |0 \xC9\xFA |0 \xC9\xFB |0 \xC9\xFC |0 \xC9\xFD |0 \xCA\x41 |0 \xCA\x42 |0 \xCA\x43 |0 \xCA\x44 |0 \xCA\x45 |0 \xCA\x46 |0 \xCA\x47 |0 \xCA\x48 |0 \xCA\x49 |0 \xCA\x4A |0 \xCA\x4B |0 \xCA\x4C |0 \xCA\x4D |0 \xCA\x4E |0 \xCA\x4F |0 \xCA\x50 |0 \xCA\x51 |0 \xCA\x52 |0 \xCA\x53 |0 \xCA\x54 |0 \xCA\x55 |0 \xCA\x56 |0 \xCA\x57 |0 \xCA\x58 |0 \xCA\x59 |0 \xCA\x5A |0 \xCA\x5B |0 \xCA\x5C |0 \xCA\x5D |0 \xCA\x5E |0 \xCA\x5F |0 \xCA\x60 |0 \xCA\x61 |0 \xCA\x62 |0 \xCA\x63 |0 \xCA\x64 |0 \xCA\x65 |0 \xCA\x66 |0 \xCA\x67 |0 \xCA\x68 |0 \xCA\x69 |0 \xCA\x6A |0 \xCA\x6B |0 \xCA\x6C |0 \xCA\x6D |0 \xCA\x6E |0 \xCA\x6F |0 \xCA\x70 |0 \xCA\x71 |0 \xCA\x72 |0 \xCA\x73 |0 \xCA\x74 |0 \xCA\x75 |0 \xCA\x76 |0 \xCA\x77 |0 \xCA\x78 |0 \xCA\x79 |0 \xCA\x7A |0 \xCA\x7B |0 \xCA\x7C |0 \xCA\x7D |0 \xCA\x7E |0 \xCA\x7F |0 \xCA\x81 |0 \xCA\x82 |0 \xCA\x83 |0 \xCA\x84 |0 \xCA\x85 |0 \xCA\x86 |0 \xCA\x87 |0 \xCA\x88 |0 \xCA\x89 |0 \xCA\x8A |0 \xCA\x8B |0 \xCA\x8C |0 \xCA\x8D |0 \xCA\x8E |0 \xCA\x8F |0 \xCA\x90 |0 \xCA\x91 |0 \xCA\x92 |0 \xCA\x93 |0 \xCA\x94 |0 \xCA\x95 |0 \xCA\x96 |0 \xCA\x97 |0 \xCA\x98 |0 \xCA\x99 |0 \xCA\x9A |0 \xCA\x9B |0 \xCA\x9C |0 \xCA\x9D |0 \xCA\x9E |0 \xCA\x9F |0 \xCA\xA0 |0 \xCA\xA1 |0 \xCA\xA2 |0 \xCA\xA3 |0 \xCA\xA4 |0 \xCA\xA5 |0 \xCA\xA6 |0 \xCA\xA7 |0 \xCA\xA8 |0 \xCA\xA9 |0 \xCA\xAA |0 \xCA\xAB |0 \xCA\xAC |0 \xCA\xAD |0 \xCA\xAE |0 \xCA\xAF |0 \xCA\xB0 |0 \xCA\xB1 |0 \xCA\xB2 |0 \xCA\xB3 |0 \xCA\xB4 |0 \xCA\xB5 |0 \xCA\xB6 |0 \xCA\xB7 |0 \xCA\xB8 |0 \xCA\xB9 |0 \xCA\xBA |0 \xCA\xBB |0 \xCA\xBC |0 \xCA\xBD |0 \xCA\xBE |0 \xCA\xBF |0 \xCA\xC0 |0 \xCA\xC1 |0 \xCA\xC2 |0 \xCA\xC3 |0 \xCA\xC4 |0 \xCA\xC5 |0 \xCA\xC6 |0 \xCA\xC7 |0 \xCA\xC8 |0 \xCA\xC9 |0 \xCA\xCA |0 \xCA\xCB |0 \xCA\xCC |0 \xCA\xCD |0 \xCA\xCE |0 \xCA\xCF |0 \xCA\xD0 |0 \xCA\xD1 |0 \xCA\xD2 |0 \xCA\xD3 |0 \xCA\xD4 |0 \xCA\xD5 |0 \xCA\xD6 |0 \xCA\xD7 |0 \xCA\xD8 |0 \xCA\xD9 |0 \xCA\xDA |0 \xCA\xDB |0 \xCA\xDC |0 \xCA\xDD |0 \xCA\xDE |0 \xCA\xDF |0 \xCA\xE0 |0 \xCA\xE1 |0 \x52\xF0 |0 \x68\xAE |0 \x4E\xA5 |0 \x68\xAF |0 \x52\x9A |0 \xCA\xE2 |0 \x53\x58 |0 \x59\x5B |0 \xCA\xE3 |0 \x68\xB0 |0 \x68\xB1 |0 \x68\xB2 |0 \x68\xB3 |0 \x68\xB4 |0 \x59\x5C |0 \xCA\xE4 |0 \x59\x8D |0 \xCA\xE5 |0 \x68\xB6 |0 \x68\xB5 |0 \x5A\xA6 |0 \xCA\xE6 |0 \x57\x72 |0 \x68\xB7 |0 \x68\xB9 |0 \x68\xB8 |0 \x68\xBA |0 \x68\xBB |0 \xCA\xE7 |0 \xCA\xE8 |0 \x4C\xEA |0 \x68\xBC |0 \x4D\xE7 |0 \xCA\xE9 |0 \x68\xBD |0 \x68\xBE |0 \x4F\xE8 |0 \x68\xBF |0 \x4B\xEB |0 \x68\xC0 |0 \x68\xC1 |0 \x68\xC2 |0 \x68\xC3 |0 \x54\xB4 |0 \x68\xC4 |0 \x68\xC5 |0 \xCA\xEA |0 \x68\xC6 |0 \x53\x95 |0 \xCA\xEB |0 \x68\xC7 |0 \xCA\xEC |0 \xCA\xED |0 \xCA\xEE |0 \x68\xC8 |0 \xCA\xEF |0 \x68\xC9 |0 \x6C\x5D |0 \xCA\xF0 |0 \x68\xCA |0 \x68\xCB |0 \x68\xCC |0 \xCA\xF1 |0 \x68\xCD |0 \xCA\xF2 |0 \xCA\xF3 |0 \xCA\xF4 |0 \xCA\xF5 |0 \x68\xCE |0 \x4D\xD6 |0 \xCA\xF6 |0 \x68\xCF |0 \x68\xD0 |0 \x68\xD1 |0 \x68\xD2 |0 \x68\xD3 |0 \x68\xD4 |0 \x68\xD5 |0 \x68\xD7 |0 \xCA\xF7 |0 \xCA\xF8 |0 \x5A\x45 |0 \x68\xD6 |0 \xCA\xF9 |0 \x68\xD8 |0 \xCA\xFA |0 \xCA\xFB |0 \xCA\xFC |0 \xCA\xFD |0 \xCB\x41 |0 \xCB\x42 |0 \xCB\x43 |0 \xCB\x44 |0 \xCB\x45 |0 \xCB\x46 |0 \x6B\x5A |0 \x51\xB8 |0 \xCB\x47 |0 \xCB\x48 |0 \x6C\x85 |0 \xCB\x49 |0 \xCB\x4A |0 \xCB\x4B |0 \xCB\x4C |0 \x6C\x86 |0 \x6C\x87 |0 \xCB\x4D |0 \xCB\x4E |0 \x6C\x88 |0 \xCB\x4F |0 \xCB\x50 |0 \xCB\x51 |0 \xCB\x52 |0 \xCB\x53 |0 \xCB\x54 |0 \x6C\x89 |0 \x51\xB3 |0 \xCB\x55 |0 \xCB\x56 |0 \xCB\x57 |0 \xCB\x58 |0 \xCB\x59 |0 \xCB\x5A |0 \xCB\x5B |0 \xCB\x5C |0 \xCB\x5D |0 \x6C\x8B |0 \xCB\x5E |0 \x6C\x8C |0 \xCB\x5F |0 \xCB\x60 |0 \xCB\x61 |0 \xCB\x62 |0 \xCB\x63 |0 \xCB\x64 |0 \x51\xF2 |0 \xCB\x65 |0 \xCB\x66 |0 \xCB\x67 |0 \xCB\x68 |0 \xCB\x69 |0 \xCB\x6A |0 \xCB\x6B |0 \xCB\x6C |0 \xCB\x6D |0 \xCB\x6E |0 \xCB\x6F |0 \xCB\x70 |0 \xCB\x71 |0 \x6A\xEF |0 \xCB\x72 |0 \xCB\x73 |0 \xCB\x74 |0 \x6A\xEE |0 \xCB\x75 |0 \xCB\x76 |0 \x51\xE8 |0 \xCB\x77 |0 \x6C\x82 |0 \x6C\x83 |0 \xCB\x78 |0 \xCB\x79 |0 \xCB\x7A |0 \xCB\x7B |0 \xCB\x7C |0 \x4E\x66 |0 \xCB\x7D |0 \xCB\x7E |0 \xCB\x7F |0 \xCB\x81 |0 \x5D\x85 |0 \xCB\x82 |0 \xCB\x83 |0 \xCB\x84 |0 \x55\xF1 |0 \x50\xE7 |0 \x68\xA3 |0 \xCB\x85 |0 \x4D\xD9 |0 \xCB\x86 |0 \xCB\x87 |0 \x54\x4D |0 \xCB\x88 |0 \xCB\x89 |0 \xCB\x8A |0 \x52\xAB |0 \xCB\x8B |0 \xCB\x8C |0 \x6C\x8D |0 \x6C\x8E |0 \x6C\x8F |0 \xCB\x8D |0 \x6C\x91 |0 \x6C\x90 |0 \xCB\x8E |0 \x6C\x92 |0 \xCB\x8F |0 \xCB\x90 |0 \x6C\x95 |0 \xCB\x91 |0 \x6C\x94 |0 \xCB\x92 |0 \x6C\x93 |0 \x6C\x96 |0 \xCB\x93 |0 \xCB\x94 |0 \xCB\x95 |0 \xCB\x96 |0 \x6C\x97 |0 \xCB\x97 |0 \xCB\x98 |0 \xCB\x99 |0 \xCB\x9A |0 \xCB\x9B |0 \xCB\x9C |0 \xCB\x9D |0 \xCB\x9E |0 \xCB\x9F |0 \x67\x8A |0 \xCB\xA0 |0 \x67\x8B |0 \x67\x8C |0 \xCB\xA1 |0 \x6B\xBB |0 \xCB\xA2 |0 \xCB\xA3 |0 \xCB\xA4 |0 \xCB\xA5 |0 \xCB\xA6 |0 \xCB\xA7 |0 \xCB\xA8 |0 \xCB\xA9 |0 \xCB\xAA |0 \xCB\xAB |0 \xCB\xAC |0 \xCB\xAD |0 \x6B\xBC |0 \xCB\xAE |0 \x6B\xBD |0 \x4B\xA5 |0 \xCB\xAF |0 \x5C\xBD |0 \xCB\xB0 |0 \xCB\xB1 |0 \x4D\x64 |0 \xCB\xB2 |0 \xCB\xB3 |0 \xCB\xB4 |0 \x5C\xBA |0 \xCB\xB5 |0 \x5E\xB0 |0 \xCB\xB6 |0 \xCB\xB7 |0 \xCB\xB8 |0 \xCB\xB9 |0 \xCB\xBA |0 \xCB\xBB |0 \x55\xF2 |0 \xCB\xBC |0 \x6C\x98 |0 \xCB\xBD |0 \xCB\xBE |0 \xCB\xBF |0 \xCB\xC0 |0 \xCB\xC1 |0 \xCB\xC2 |0 \xCB\xC3 |0 \xCB\xC4 |0 \xCB\xC5 |0 \x6C\x99 |0 \xCB\xC6 |0 \xCB\xC7 |0 \x6C\x9A |0 \xCB\xC8 |0 \xCB\xC9 |0 \xCB\xCA |0 \xCB\xCB |0 \xCB\xCC |0 \xCB\xCD |0 \xCB\xCE |0 \x6C\x9C |0 \xCB\xCF |0 \x6C\x9B |0 \xCB\xD0 |0 \x49\x67 |0 \xCB\xD1 |0 \x6C\x9D |0 \x6C\x9E |0 \xCB\xD2 |0 \xCB\xD3 |0 \xCB\xD4 |0 \xCB\xD5 |0 \xCB\xD6 |0 \x6C\x9F |0 \xCB\xD7 |0 \xCB\xD8 |0 \xCB\xD9 |0 \xCB\xDA |0 \xCB\xDB |0 \xCB\xDC |0 \xCB\xDD |0 \xCB\xDE |0 \xCB\xDF |0 \xCB\xE0 |0 \xCB\xE1 |0 \x53\xEA |0 \x66\xB3 |0 \xCB\xE2 |0 \xCB\xE3 |0 \xCB\xE4 |0 \xCB\xE5 |0 \xCB\xE6 |0 \xCB\xE7 |0 \xCB\xE8 |0 \xCB\xE9 |0 \xCB\xEA |0 \xCB\xEB |0 \xCB\xEC |0 \xCB\xED |0 \xCB\xEE |0 \xCB\xEF |0 \xCB\xF0 |0 \xCB\xF1 |0 \xCB\xF2 |0 \xCB\xF3 |0 \xCB\xF4 |0 \xCB\xF5 |0 \xCB\xF6 |0 \xCB\xF7 |0 \xCB\xF8 |0 \xCB\xF9 |0 \xCB\xFA |0 \xCB\xFB |0 \xCB\xFC |0 \xCB\xFD |0 \xCC\x41 |0 \xCC\x42 |0 \xCC\x43 |0 \xCC\x44 |0 \xCC\x45 |0 \xCC\x46 |0 \xCC\x47 |0 \xCC\x48 |0 \xCC\x49 |0 \xCC\x4A |0 \xCC\x4B |0 \xCC\x4C |0 \xCC\x4D |0 \xCC\x4E |0 \xCC\x4F |0 \xCC\x50 |0 \xCC\x51 |0 \x4A\x7D |0 \x6B\xB2 |0 \xCC\x52 |0 \xCC\x53 |0 \x6B\xB3 |0 \x51\x85 |0 \x6B\xB4 |0 \x6B\xB5 |0 \x6B\xB6 |0 \x6B\xB7 |0 \x6B\xB8 |0 \x6B\xB9 |0 \x54\xA2 |0 \x6B\xBA |0 \xCC\x54 |0 \xCC\x55 |0 \xCC\x56 |0 \xCC\x57 |0 \xCC\x58 |0 \xCC\x59 |0 \xCC\x5A |0 \xCC\x5B |0 \xCC\x5C |0 \xCC\x5D |0 \xCC\x5E |0 \xCC\x5F |0 \x51\x9B |0 \x4D\x48 |0 \x67\x89 |0 \xCC\x60 |0 \xCC\x61 |0 \xCC\x62 |0 \x4D\x8B |0 \x5D\x7F |0 \xCC\x63 |0 \xCC\x64 |0 \xCC\x65 |0 \xCC\x66 |0 \xCC\x67 |0 \x6F\x75 |0 \x6F\x76 |0 \x6F\x77 |0 \x6F\x78 |0 \x6F\x79 |0 \x6F\x7A |0 \x6F\x7B |0 \x6F\x7C |0 \x6F\x7D |0 \x6F\x7E |0 \x6F\x7F |0 \x6F\x80 |0 \x6F\x81 |0 \x6F\x82 |0 \x6F\x83 |0 \x6F\x84 |0 \x6F\x85 |0 \x6F\x86 |0 \x6F\x87 |0 \x6F\x88 |0 \x6F\x89 |0 \x6F\x8A |0 \x6F\x8B |0 \x6F\x8C |0 \x6F\x8D |0 \x6F\x8E |0 \x6F\x8F |0 \x6F\x90 |0 \x6F\x91 |0 \x6F\x92 |0 \x6F\x93 |0 \x6F\x94 |0 \x6F\x95 |0 \x6F\x96 |0 \x6F\x97 |0 \x6F\x98 |0 \x6F\x99 |0 \x6F\x9A |0 \x6F\x9B |0 \x6F\x9C |0 \x6F\x9D |0 \x6F\x9E |0 \x6F\x9F |0 \x6F\xA0 |0 \x6F\xA1 |0 \x6F\xA2 |0 \x6F\xA3 |0 \x6F\xA4 |0 \x6F\xA5 |0 \x6F\xA6 |0 \x6F\xA7 |0 \x6F\xA8 |0 \x6F\xA9 |0 \x6F\xAA |0 \x6F\xAB |0 \x6F\xAC |0 \x6F\xAD |0 \x6F\xAE |0 \x6F\xAF |0 \x6F\xB0 |0 \x6F\xB1 |0 \x6F\xB2 |0 \x6F\xB3 |0 \x6F\xB4 |0 \x6F\xB5 |0 \x6F\xB6 |0 \x6F\xB7 |0 \x6F\xB8 |0 \x6F\xB9 |0 \x6F\xBA |0 \x6F\xBB |0 \x6F\xBC |0 \x6F\xBD |0 \x6F\xBE |0 \x6F\xBF |0 \x6F\xC0 |0 \x6F\xC1 |0 \x6F\xC2 |0 \x6F\xC3 |0 \x6F\xC4 |0 \x6F\xC5 |0 \x6F\xC6 |0 \x6F\xC7 |0 \x6F\xC8 |0 \x6F\xC9 |0 \x6F\xCA |0 \x6F\xCB |0 \x6F\xCC |0 \x6F\xCD |0 \x6F\xCE |0 \x6F\xCF |0 \x6F\xD0 |0 \x6F\xD1 |0 \x6F\xD2 |0 \x6F\xD3 |0 \x6F\xD4 |0 \x6F\xD5 |0 \x6F\xD6 |0 \x6F\xD7 |0 \x6F\xD8 |0 \x6F\xD9 |0 \x6F\xDA |0 \x6F\xDB |0 \x6F\xDC |0 \x6F\xDD |0 \x6F\xDE |0 \x6F\xDF |0 \x6F\xE0 |0 \x6F\xE1 |0 \x6F\xE2 |0 \x6F\xE3 |0 \x6F\xE4 |0 \x6F\xE5 |0 \x6F\xE6 |0 \x6F\xE7 |0 \x6F\xE8 |0 \x6F\xE9 |0 \x6F\xEA |0 \x6F\xEB |0 \x6F\xEC |0 \x6F\xED |0 \x6F\xEE |0 \x6F\xEF |0 \x6F\xF0 |0 \x6F\xF1 |0 \x6F\xF2 |0 \x6F\xF3 |0 \x6F\xF4 |0 \x6F\xF5 |0 \x6F\xF6 |0 \x6F\xF7 |0 \x6F\xF8 |0 \x6F\xF9 |0 \x6F\xFA |0 \x6F\xFB |0 \x6F\xFC |0 \x6F\xFD |0 \x6F\xFE |0 \x70\x41 |0 \x70\x42 |0 \x70\x43 |0 \x70\x44 |0 \x70\x45 |0 \x70\x46 |0 \x70\x47 |0 \x70\x48 |0 \x70\x49 |0 \x70\x4A |0 \x70\x4B |0 \x70\x4C |0 \x70\x4D |0 \x70\x4E |0 \x70\x4F |0 \x70\x50 |0 \x70\x51 |0 \x70\x52 |0 \x70\x53 |0 \x70\x54 |0 \x70\x55 |0 \x70\x56 |0 \x70\x57 |0 \x70\x58 |0 \x70\x59 |0 \x70\x5A |0 \x70\x5B |0 \x70\x5C |0 \x70\x5D |0 \x70\x5E |0 \x70\x5F |0 \x70\x60 |0 \x70\x61 |0 \x70\x62 |0 \x70\x63 |0 \x70\x64 |0 \x70\x65 |0 \x70\x66 |0 \x70\x67 |0 \x70\x68 |0 \x70\x69 |0 \x70\x6A |0 \x70\x6B |0 \x70\x6C |0 \x70\x6D |0 \x70\x6E |0 \x70\x6F |0 \x70\x70 |0 \x70\x71 |0 \x70\x72 |0 \x70\x73 |0 \x70\x74 |0 \x70\x75 |0 \x70\x76 |0 \x70\x77 |0 \x70\x78 |0 \x70\x79 |0 \x70\x7A |0 \x70\x7B |0 \x70\x7C |0 \x70\x7D |0 \x70\x7E |0 \x70\x7F |0 \x70\x80 |0 \x70\x81 |0 \x70\x82 |0 \x70\x83 |0 \x70\x84 |0 \x70\x85 |0 \x70\x86 |0 \x70\x87 |0 \x70\x88 |0 \x70\x89 |0 \x70\x8A |0 \x70\x8B |0 \x70\x8C |0 \x70\x8D |0 \x70\x8E |0 \x70\x8F |0 \x70\x90 |0 \x70\x91 |0 \x70\x92 |0 \x70\x93 |0 \x70\x94 |0 \x70\x95 |0 \x70\x96 |0 \x70\x97 |0 \x70\x98 |0 \x70\x99 |0 \x70\x9A |0 \x70\x9B |0 \x70\x9C |0 \x70\x9D |0 \x70\x9E |0 \x70\x9F |0 \x70\xA0 |0 \x70\xA1 |0 \x70\xA2 |0 \x70\xA3 |0 \x70\xA4 |0 \x70\xA5 |0 \x70\xA6 |0 \x70\xA7 |0 \x70\xA8 |0 \x70\xA9 |0 \x70\xAA |0 \x70\xAB |0 \x70\xAC |0 \x70\xAD |0 \x70\xAE |0 \x70\xAF |0 \x70\xB0 |0 \x70\xB1 |0 \x70\xB2 |0 \x70\xB3 |0 \x70\xB4 |0 \x70\xB5 |0 \x70\xB6 |0 \x70\xB7 |0 \x70\xB8 |0 \x70\xB9 |0 \x70\xBA |0 \x70\xBB |0 \x70\xBC |0 \x70\xBD |0 \x70\xBE |0 \x70\xBF |0 \x70\xC0 |0 \x70\xC1 |0 \x70\xC2 |0 \x70\xC3 |0 \x70\xC4 |0 \x70\xC5 |0 \x70\xC6 |0 \x70\xC7 |0 \x70\xC8 |0 \x70\xC9 |0 \x70\xCA |0 \x70\xCB |0 \x70\xCC |0 \x70\xCD |0 \x70\xCE |0 \x70\xCF |0 \x70\xD0 |0 \x70\xD1 |0 \x70\xD2 |0 \x70\xD3 |0 \x70\xD4 |0 \x70\xD5 |0 \x70\xD6 |0 \x70\xD7 |0 \x70\xD8 |0 \x70\xD9 |0 \x70\xDA |0 \x70\xDB |0 \x70\xDC |0 \x70\xDD |0 \x70\xDE |0 \x70\xDF |0 \x70\xE0 |0 \x70\xE1 |0 \x70\xE2 |0 \x70\xE3 |0 \x70\xE4 |0 \x70\xE5 |0 \x70\xE6 |0 \x70\xE7 |0 \x70\xE8 |0 \x70\xE9 |0 \x70\xEA |0 \x70\xEB |0 \x70\xEC |0 \x70\xED |0 \x70\xEE |0 \x70\xEF |0 \x70\xF0 |0 \x70\xF1 |0 \x70\xF2 |0 \x70\xF3 |0 \x70\xF4 |0 \x70\xF5 |0 \x70\xF6 |0 \x70\xF7 |0 \x70\xF8 |0 \x70\xF9 |0 \x70\xFA |0 \x70\xFB |0 \x70\xFC |0 \x70\xFD |0 \x70\xFE |0 \x71\x41 |0 \x71\x42 |0 \x71\x43 |0 \x71\x44 |0 \x71\x45 |0 \x71\x46 |0 \x71\x47 |0 \x71\x48 |0 \x71\x49 |0 \x71\x4A |0 \x71\x4B |0 \x71\x4C |0 \x71\x4D |0 \x71\x4E |0 \x71\x4F |0 \x71\x50 |0 \x71\x51 |0 \x71\x52 |0 \x71\x53 |0 \x71\x54 |0 \x71\x55 |0 \x71\x56 |0 \x71\x57 |0 \x71\x58 |0 \x71\x59 |0 \x71\x5A |0 \x71\x5B |0 \x71\x5C |0 \x71\x5D |0 \x71\x5E |0 \x71\x5F |0 \x71\x60 |0 \x71\x61 |0 \x71\x62 |0 \x71\x63 |0 \x71\x64 |0 \x71\x65 |0 \x71\x66 |0 \x71\x67 |0 \x71\x68 |0 \x71\x69 |0 \x71\x6A |0 \x71\x6B |0 \x71\x6C |0 \x71\x6D |0 \x71\x6E |0 \x71\x6F |0 \x71\x70 |0 \x71\x71 |0 \x71\x72 |0 \x71\x73 |0 \x71\x74 |0 \x71\x75 |0 \x71\x76 |0 \x71\x77 |0 \x71\x78 |0 \x71\x79 |0 \x71\x7A |0 \x71\x7B |0 \x71\x7C |0 \x71\x7D |0 \x71\x7E |0 \x71\x7F |0 \x71\x80 |0 \x71\x81 |0 \x71\x82 |0 \x71\x83 |0 \x71\x84 |0 \x71\x85 |0 \x71\x86 |0 \x71\x87 |0 \x71\x88 |0 \x71\x89 |0 \x71\x8A |0 \x71\x8B |0 \x71\x8C |0 \x71\x8D |0 \x71\x8E |0 \x71\x8F |0 \x71\x90 |0 \x71\x91 |0 \x71\x92 |0 \x71\x93 |0 \x71\x94 |0 \x71\x95 |0 \x71\x96 |0 \x71\x97 |0 \x71\x98 |0 \x71\x99 |0 \x71\x9A |0 \x71\x9B |0 \x71\x9C |0 \x71\x9D |0 \x71\x9E |0 \x71\x9F |0 \x71\xA0 |0 \x71\xA1 |0 \x71\xA2 |0 \x71\xA3 |0 \x71\xA4 |0 \x71\xA5 |0 \x71\xA6 |0 \x71\xA7 |0 \x71\xA8 |0 \x71\xA9 |0 \x71\xAA |0 \x71\xAB |0 \x71\xAC |0 \x71\xAD |0 \x71\xAE |0 \x71\xAF |0 \x71\xB0 |0 \x71\xB1 |0 \x71\xB2 |0 \x71\xB3 |0 \x71\xB4 |0 \x71\xB5 |0 \x71\xB6 |0 \x71\xB7 |0 \x71\xB8 |0 \x71\xB9 |0 \x71\xBA |0 \x71\xBB |0 \x71\xBC |0 \x71\xBD |0 \x71\xBE |0 \x71\xBF |0 \x71\xC0 |0 \x71\xC1 |0 \x71\xC2 |0 \x71\xC3 |0 \x71\xC4 |0 \x71\xC5 |0 \x71\xC6 |0 \x71\xC7 |0 \x71\xC8 |0 \x71\xC9 |0 \x71\xCA |0 \x71\xCB |0 \x71\xCC |0 \x71\xCD |0 \x71\xCE |0 \x71\xCF |0 \x71\xD0 |0 \x71\xD1 |0 \x71\xD2 |0 \x71\xD3 |0 \x71\xD4 |0 \x71\xD5 |0 \x71\xD6 |0 \x71\xD7 |0 \x71\xD8 |0 \x71\xD9 |0 \x71\xDA |0 \x71\xDB |0 \x71\xDC |0 \x71\xDD |0 \x71\xDE |0 \x71\xDF |0 \x71\xE0 |0 \x71\xE1 |0 \x71\xE2 |0 \x71\xE3 |0 \x71\xE4 |0 \x71\xE5 |0 \x71\xE6 |0 \x71\xE7 |0 \x71\xE8 |0 \x71\xE9 |0 \x71\xEA |0 \x71\xEB |0 \x71\xEC |0 \x71\xED |0 \x71\xEE |0 \x71\xEF |0 \x71\xF0 |0 \x71\xF1 |0 \x71\xF2 |0 \x71\xF3 |0 \x71\xF4 |0 \x71\xF5 |0 \x71\xF6 |0 \x71\xF7 |0 \x71\xF8 |0 \x71\xF9 |0 \x71\xFA |0 \x71\xFB |0 \x71\xFC |0 \x71\xFD |0 \x71\xFE |0 \x72\x41 |0 \x72\x42 |0 \x72\x43 |0 \x72\x44 |0 \x72\x45 |0 \x72\x46 |0 \x72\x47 |0 \x72\x48 |0 \x72\x49 |0 \x72\x4A |0 \x72\x4B |0 \x72\x4C |0 \x72\x4D |0 \x72\x4E |0 \x72\x4F |0 \x72\x50 |0 \x72\x51 |0 \x72\x52 |0 \x72\x53 |0 \x72\x54 |0 \x72\x55 |0 \x72\x56 |0 \x72\x57 |0 \x72\x58 |0 \x72\x59 |0 \x72\x5A |0 \x72\x5B |0 \x72\x5C |0 \x72\x5D |0 \x72\x5E |0 \x72\x5F |0 \x72\x60 |0 \x72\x61 |0 \x72\x62 |0 \x72\x63 |0 \x72\x64 |0 \x72\x65 |0 \x72\x66 |0 \x72\x67 |0 \x72\x68 |0 \x72\x69 |0 \x72\x6A |0 \x72\x6B |0 \x72\x6C |0 \x72\x6D |0 \x72\x6E |0 \x72\x6F |0 \x72\x70 |0 \x72\x71 |0 \x72\x72 |0 \x72\x73 |0 \x72\x74 |0 \x72\x75 |0 \x72\x76 |0 \x72\x77 |0 \x72\x78 |0 \x72\x79 |0 \x72\x7A |0 \x72\x7B |0 \x72\x7C |0 \x72\x7D |0 \x72\x7E |0 \x72\x7F |0 \x72\x80 |0 \x72\x81 |0 \x72\x82 |0 \x72\x83 |0 \x72\x84 |0 \x72\x85 |0 \x72\x86 |0 \x72\x87 |0 \x72\x88 |0 \x72\x89 |0 \x72\x8A |0 \x72\x8B |0 \x72\x8C |0 \x72\x8D |0 \x72\x8E |0 \x72\x8F |0 \x72\x90 |0 \x72\x91 |0 \x72\x92 |0 \x72\x93 |0 \x72\x94 |0 \x72\x95 |0 \x72\x96 |0 \x72\x97 |0 \x72\x98 |0 \x72\x99 |0 \x72\x9A |0 \x72\x9B |0 \x72\x9C |0 \x72\x9D |0 \x72\x9E |0 \x72\x9F |0 \x72\xA0 |0 \x72\xA1 |0 \x72\xA2 |0 \x72\xA3 |0 \x72\xA4 |0 \x72\xA5 |0 \x72\xA6 |0 \x72\xA7 |0 \x72\xA8 |0 \x72\xA9 |0 \x72\xAA |0 \x72\xAB |0 \x72\xAC |0 \x72\xAD |0 \x72\xAE |0 \x72\xAF |0 \x72\xB0 |0 \x72\xB1 |0 \x72\xB2 |0 \x72\xB3 |0 \x72\xB4 |0 \x72\xB5 |0 \x72\xB6 |0 \x72\xB7 |0 \x72\xB8 |0 \x72\xB9 |0 \x72\xBA |0 \x72\xBB |0 \x72\xBC |0 \x72\xBD |0 \x72\xBE |0 \x72\xBF |0 \x72\xC0 |0 \x72\xC1 |0 \x72\xC2 |0 \x72\xC3 |0 \x72\xC4 |0 \x72\xC5 |0 \x72\xC6 |0 \x72\xC7 |0 \x72\xC8 |0 \x72\xC9 |0 \x72\xCA |0 \x72\xCB |0 \x72\xCC |0 \x72\xCD |0 \x72\xCE |0 \x72\xCF |0 \x72\xD0 |0 \x72\xD1 |0 \x72\xD2 |0 \x72\xD3 |0 \x72\xD4 |0 \x72\xD5 |0 \x72\xD6 |0 \x72\xD7 |0 \x72\xD8 |0 \x72\xD9 |0 \x72\xDA |0 \x72\xDB |0 \x72\xDC |0 \x72\xDD |0 \x72\xDE |0 \x72\xDF |0 \x72\xE0 |0 \x72\xE1 |0 \x72\xE2 |0 \x72\xE3 |0 \x72\xE4 |0 \x72\xE5 |0 \x72\xE6 |0 \x72\xE7 |0 \x72\xE8 |0 \x72\xE9 |0 \x72\xEA |0 \x72\xEB |0 \x72\xEC |0 \x72\xED |0 \x72\xEE |0 \x72\xEF |0 \x72\xF0 |0 \x72\xF1 |0 \x72\xF2 |0 \x72\xF3 |0 \x72\xF4 |0 \x72\xF5 |0 \x72\xF6 |0 \x72\xF7 |0 \x72\xF8 |0 \x72\xF9 |0 \x72\xFA |0 \x72\xFB |0 \x72\xFC |0 \x72\xFD |0 \x72\xFE |0 \x73\x41 |0 \x73\x42 |0 \x73\x43 |0 \x73\x44 |0 \x73\x45 |0 \x73\x46 |0 \x73\x47 |0 \x73\x48 |0 \x73\x49 |0 \x73\x4A |0 \x73\x4B |0 \x73\x4C |0 \x73\x4D |0 \x73\x4E |0 \x73\x4F |0 \x73\x50 |0 \x73\x51 |0 \x73\x52 |0 \x73\x53 |0 \x73\x54 |0 \x73\x55 |0 \x73\x56 |0 \x73\x57 |0 \x73\x58 |0 \x73\x59 |0 \x73\x5A |0 \x73\x5B |0 \x73\x5C |0 \x73\x5D |0 \x73\x5E |0 \x73\x5F |0 \x73\x60 |0 \x73\x61 |0 \x73\x62 |0 \x73\x63 |0 \x73\x64 |0 \x73\x65 |0 \x73\x66 |0 \x73\x67 |0 \x73\x68 |0 \x73\x69 |0 \x73\x6A |0 \x73\x6B |0 \x73\x6C |0 \x73\x6D |0 \x73\x6E |0 \x73\x6F |0 \x73\x70 |0 \x73\x71 |0 \x73\x72 |0 \x73\x73 |0 \x73\x74 |0 \x73\x75 |0 \x73\x76 |0 \x73\x77 |0 \x73\x78 |0 \x73\x79 |0 \x73\x7A |0 \x73\x7B |0 \x73\x7C |0 \x73\x7D |0 \x73\x7E |0 \x73\x7F |0 \x73\x80 |0 \x73\x81 |0 \x73\x82 |0 \x73\x83 |0 \x73\x84 |0 \x73\x85 |0 \x73\x86 |0 \x73\x87 |0 \x73\x88 |0 \x73\x89 |0 \x73\x8A |0 \x73\x8B |0 \x73\x8C |0 \x73\x8D |0 \x73\x8E |0 \x73\x8F |0 \x73\x90 |0 \x73\x91 |0 \x73\x92 |0 \x73\x93 |0 \x73\x94 |0 \x73\x95 |0 \x73\x96 |0 \x73\x97 |0 \x73\x98 |0 \x73\x99 |0 \x73\x9A |0 \x73\x9B |0 \x73\x9C |0 \x73\x9D |0 \x73\x9E |0 \x73\x9F |0 \x73\xA0 |0 \x73\xA1 |0 \x73\xA2 |0 \x73\xA3 |0 \x73\xA4 |0 \x73\xA5 |0 \x73\xA6 |0 \x73\xA7 |0 \x73\xA8 |0 \x73\xA9 |0 \x73\xAA |0 \x73\xAB |0 \x73\xAC |0 \x73\xAD |0 \x73\xAE |0 \x73\xAF |0 \x73\xB0 |0 \x73\xB1 |0 \x73\xB2 |0 \x73\xB3 |0 \x73\xB4 |0 \x73\xB5 |0 \x73\xB6 |0 \x73\xB7 |0 \x73\xB8 |0 \x73\xB9 |0 \x73\xBA |0 \x73\xBB |0 \x73\xBC |0 \x73\xBD |0 \x73\xBE |0 \x73\xBF |0 \x73\xC0 |0 \x73\xC1 |0 \x73\xC2 |0 \x73\xC3 |0 \x73\xC4 |0 \x73\xC5 |0 \x73\xC6 |0 \x73\xC7 |0 \x73\xC8 |0 \x73\xC9 |0 \x73\xCA |0 \x73\xCB |0 \x73\xCC |0 \x73\xCD |0 \x73\xCE |0 \x73\xCF |0 \x73\xD0 |0 \x73\xD1 |0 \x73\xD2 |0 \x73\xD3 |0 \x73\xD4 |0 \x73\xD5 |0 \x73\xD6 |0 \x73\xD7 |0 \x73\xD8 |0 \x73\xD9 |0 \x73\xDA |0 \x73\xDB |0 \x73\xDC |0 \x73\xDD |0 \x73\xDE |0 \x73\xDF |0 \x73\xE0 |0 \x73\xE1 |0 \x73\xE2 |0 \x73\xE3 |0 \x73\xE4 |0 \x73\xE5 |0 \x73\xE6 |0 \x73\xE7 |0 \x73\xE8 |0 \x73\xE9 |0 \x73\xEA |0 \x73\xEB |0 \x73\xEC |0 \x73\xED |0 \x73\xEE |0 \x73\xEF |0 \x73\xF0 |0 \x73\xF1 |0 \x73\xF2 |0 \x73\xF3 |0 \x73\xF4 |0 \x73\xF5 |0 \x73\xF6 |0 \x73\xF7 |0 \x73\xF8 |0 \x73\xF9 |0 \x73\xFA |0 \x73\xFB |0 \x73\xFC |0 \x73\xFD |0 \x73\xFE |0 \x74\x41 |0 \x74\x42 |0 \x74\x43 |0 \x74\x44 |0 \x74\x45 |0 \x74\x46 |0 \x74\x47 |0 \x74\x48 |0 \x74\x49 |0 \x74\x4A |0 \x74\x4B |0 \x74\x4C |0 \x74\x4D |0 \x74\x4E |0 \x74\x4F |0 \x74\x50 |0 \x74\x51 |0 \x74\x52 |0 \x74\x53 |0 \x74\x54 |0 \x74\x55 |0 \x74\x56 |0 \x74\x57 |0 \x74\x58 |0 \x74\x59 |0 \x74\x5A |0 \x74\x5B |0 \x74\x5C |0 \x74\x5D |0 \x74\x5E |0 \x74\x5F |0 \x74\x60 |0 \x74\x61 |0 \x74\x62 |0 \x74\x63 |0 \x74\x64 |0 \x74\x65 |0 \x74\x66 |0 \x74\x67 |0 \x74\x68 |0 \x74\x69 |0 \x74\x6A |0 \x74\x6B |0 \x74\x6C |0 \x74\x6D |0 \x74\x6E |0 \x74\x6F |0 \x74\x70 |0 \x74\x71 |0 \x74\x72 |0 \x74\x73 |0 \x74\x74 |0 \x74\x75 |0 \x74\x76 |0 \x74\x77 |0 \x74\x78 |0 \x74\x79 |0 \x74\x7A |0 \x74\x7B |0 \x74\x7C |0 \x74\x7D |0 \x74\x7E |0 \x74\x7F |0 \x74\x80 |0 \x74\x81 |0 \x74\x82 |0 \x74\x83 |0 \x74\x84 |0 \x74\x85 |0 \x74\x86 |0 \x74\x87 |0 \x74\x88 |0 \x74\x89 |0 \x74\x8A |0 \x74\x8B |0 \x74\x8C |0 \x74\x8D |0 \x74\x8E |0 \x74\x8F |0 \x74\x90 |0 \x74\x91 |0 \x74\x92 |0 \x74\x93 |0 \x74\x94 |0 \x74\x95 |0 \x74\x96 |0 \x74\x97 |0 \x74\x98 |0 \x74\x99 |0 \x74\x9A |0 \x74\x9B |0 \x74\x9C |0 \x74\x9D |0 \x74\x9E |0 \x74\x9F |0 \x74\xA0 |0 \x74\xA1 |0 \x74\xA2 |0 \x74\xA3 |0 \x74\xA4 |0 \x74\xA5 |0 \x74\xA6 |0 \x74\xA7 |0 \x74\xA8 |0 \x74\xA9 |0 \x74\xAA |0 \x74\xAB |0 \x74\xAC |0 \x74\xAD |0 \x74\xAE |0 \x74\xAF |0 \x74\xB0 |0 \x74\xB1 |0 \x74\xB2 |0 \x74\xB3 |0 \x74\xB4 |0 \x74\xB5 |0 \x74\xB6 |0 \x74\xB7 |0 \x74\xB8 |0 \x74\xB9 |0 \x74\xBA |0 \x74\xBB |0 \x74\xBC |0 \x74\xBD |0 \x74\xBE |0 \x74\xBF |0 \x74\xC0 |0 \x74\xC1 |0 \x74\xC2 |0 \x74\xC3 |0 \x74\xC4 |0 \x74\xC5 |0 \x74\xC6 |0 \x74\xC7 |0 \x74\xC8 |0 \x74\xC9 |0 \x74\xCA |0 \x74\xCB |0 \x74\xCC |0 \x74\xCD |0 \x74\xCE |0 \x74\xCF |0 \x74\xD0 |0 \x74\xD1 |0 \x74\xD2 |0 \x74\xD3 |0 \x74\xD4 |0 \x74\xD5 |0 \x74\xD6 |0 \x74\xD7 |0 \x74\xD8 |0 \x74\xD9 |0 \x74\xDA |0 \x74\xDB |0 \x74\xDC |0 \x74\xDD |0 \x74\xDE |0 \x74\xDF |0 \x74\xE0 |0 \x74\xE1 |0 \x74\xE2 |0 \x74\xE3 |0 \x74\xE4 |0 \x74\xE5 |0 \x74\xE6 |0 \x74\xE7 |0 \x74\xE8 |0 \x74\xE9 |0 \x74\xEA |0 \x74\xEB |0 \x74\xEC |0 \x74\xED |0 \x74\xEE |0 \x74\xEF |0 \x74\xF0 |0 \x74\xF1 |0 \x74\xF2 |0 \x74\xF3 |0 \x74\xF4 |0 \x74\xF5 |0 \x74\xF6 |0 \x74\xF7 |0 \x74\xF8 |0 \x74\xF9 |0 \x74\xFA |0 \x74\xFB |0 \x74\xFC |0 \x74\xFD |0 \x74\xFE |0 \x75\x41 |0 \x75\x42 |0 \x75\x43 |0 \x75\x44 |0 \x75\x45 |0 \x75\x46 |0 \x75\x47 |0 \x75\x48 |0 \x75\x49 |0 \x75\x4A |0 \x75\x4B |0 \x75\x4C |0 \x75\x4D |0 \x75\x4E |0 \x75\x4F |0 \x75\x50 |0 \x75\x51 |0 \x75\x52 |0 \x75\x53 |0 \x75\x54 |0 \x75\x55 |0 \x75\x56 |0 \x75\x57 |0 \x75\x58 |0 \x75\x59 |0 \x75\x5A |0 \x75\x5B |0 \x75\x5C |0 \x75\x5D |0 \x75\x5E |0 \x75\x5F |0 \x75\x60 |0 \x75\x61 |0 \x75\x62 |0 \x75\x63 |0 \x75\x64 |0 \x75\x65 |0 \x75\x66 |0 \x75\x67 |0 \x75\x68 |0 \x75\x69 |0 \x75\x6A |0 \x75\x6B |0 \x75\x6C |0 \x75\x6D |0 \x75\x6E |0 \x75\x6F |0 \x75\x70 |0 \x75\x71 |0 \x75\x72 |0 \x75\x73 |0 \x75\x74 |0 \x75\x75 |0 \x75\x76 |0 \x75\x77 |0 \x75\x78 |0 \x75\x79 |0 \x75\x7A |0 \x75\x7B |0 \x75\x7C |0 \x75\x7D |0 \x75\x7E |0 \x75\x7F |0 \x75\x80 |0 \x75\x81 |0 \x75\x82 |0 \x75\x83 |0 \x75\x84 |0 \x75\x85 |0 \x75\x86 |0 \x75\x87 |0 \x75\x88 |0 \x75\x89 |0 \x75\x8A |0 \x75\x8B |0 \x75\x8C |0 \x75\x8D |0 \x75\x8E |0 \x75\x8F |0 \x75\x90 |0 \x75\x91 |0 \x75\x92 |0 \x75\x93 |0 \x75\x94 |0 \x75\x95 |0 \x75\x96 |0 \x75\x97 |0 \x75\x98 |0 \x75\x99 |0 \x75\x9A |0 \x75\x9B |0 \x75\x9C |0 \x75\x9D |0 \x75\x9E |0 \x75\x9F |0 \x75\xA0 |0 \x75\xA1 |0 \x75\xA2 |0 \x75\xA3 |0 \x75\xA4 |0 \x75\xA5 |0 \x75\xA6 |0 \x75\xA7 |0 \x75\xA8 |0 \x75\xA9 |0 \x75\xAA |0 \x75\xAB |0 \x75\xAC |0 \x75\xAD |0 \x75\xAE |0 \x75\xAF |0 \x75\xB0 |0 \x75\xB1 |0 \x75\xB2 |0 \x75\xB3 |0 \x75\xB4 |0 \x75\xB5 |0 \x75\xB6 |0 \x75\xB7 |0 \x75\xB8 |0 \x75\xB9 |0 \x75\xBA |0 \x75\xBB |0 \x75\xBC |0 \x75\xBD |0 \x75\xBE |0 \x75\xBF |0 \x75\xC0 |0 \x75\xC1 |0 \x75\xC2 |0 \x75\xC3 |0 \x75\xC4 |0 \x75\xC5 |0 \x75\xC6 |0 \x75\xC7 |0 \x75\xC8 |0 \x75\xC9 |0 \x75\xCA |0 \x75\xCB |0 \x75\xCC |0 \x75\xCD |0 \x75\xCE |0 \x75\xCF |0 \x75\xD0 |0 \x76\x41 |0 \x76\x42 |0 \x76\x43 |0 \x76\x44 |0 \x76\x45 |0 \x76\x46 |0 \x76\x47 |0 \x76\x48 |0 \x76\x49 |0 \x76\x4A |0 \x76\x4B |0 \x76\x4C |0 \x76\x4D |0 \x76\x4E |0 \x76\x4F |0 \x76\x50 |0 \x76\x51 |0 \x76\x52 |0 \x76\x53 |0 \x76\x54 |0 \x76\x55 |0 \x76\x56 |0 \x76\x57 |0 \x76\x58 |0 \x76\x59 |0 \x76\x5A |0 \x76\x5B |0 \x76\x5C |0 \x76\x5D |0 \x76\x5E |0 \x76\x5F |0 \x76\x60 |0 \x76\x61 |0 \x76\x62 |0 \x76\x63 |0 \x76\x64 |0 \x76\x65 |0 \x76\x66 |0 \x76\x67 |0 \x76\x68 |0 \x76\x69 |0 \x76\x6A |0 \x76\x6B |0 \x76\x6C |0 \x76\x6D |0 \x76\x6E |0 \x76\x6F |0 \x76\x70 |0 \x76\x71 |0 \x76\x72 |0 \x76\x73 |0 \x76\x74 |0 \x76\x75 |0 \x76\x76 |0 \x76\x77 |0 \x76\x78 |0 \x76\x79 |0 \x76\x7A |0 \x76\x7B |0 \x76\x7C |0 \x76\x7D |0 \x76\x7E |0 \x76\x7F |0 \x76\x81 |0 \x76\x82 |0 \x76\x83 |0 \x76\x84 |0 \x76\x85 |0 \x76\x86 |0 \x76\x87 |0 \x76\x88 |0 \x76\x89 |0 \x76\x8A |0 \x76\x8B |0 \x76\x8C |0 \x76\x8D |0 \x76\x8E |0 \x76\x8F |0 \x76\x90 |0 \x76\x91 |0 \x76\x92 |0 \x76\x93 |0 \x76\x94 |0 \x76\x95 |0 \x76\x96 |0 \x76\x97 |0 \x76\x98 |0 \x76\x99 |0 \x76\x9A |0 \x76\x9B |0 \x76\x9C |0 \x76\x9D |0 \x76\x9E |0 \x76\x9F |0 \x76\xA0 |0 \x76\xA1 |0 \x76\xA2 |0 \x76\xA3 |0 \x76\xA4 |0 \x76\xA5 |0 \x76\xA6 |0 \x76\xA7 |0 \x76\xA8 |0 \x76\xA9 |0 \x76\xAA |0 \x76\xAB |0 \x76\xAC |0 \x76\xAD |0 \x76\xAE |0 \x76\xAF |0 \x76\xB0 |0 \x76\xB1 |0 \x76\xB2 |0 \x76\xB3 |0 \x76\xB4 |0 \x76\xB5 |0 \x76\xB6 |0 \x76\xB7 |0 \x76\xB8 |0 \x76\xB9 |0 \x76\xBA |0 \x76\xBB |0 \x76\xBC |0 \x76\xBD |0 \x76\xBE |0 \x76\xBF |0 \x76\xC0 |0 \x76\xC1 |0 \x76\xC2 |0 \x76\xC3 |0 \x76\xC4 |0 \x76\xC5 |0 \x76\xC6 |0 \x76\xC7 |0 \x76\xC8 |0 \x76\xC9 |0 \x76\xCA |0 \x76\xCB |0 \x76\xCC |0 \x76\xCD |0 \x76\xCE |0 \x76\xCF |0 \x76\xD0 |0 \x76\xD1 |0 \x76\xD2 |0 \x76\xD3 |0 \x76\xD4 |0 \x76\xD5 |0 \x76\xD6 |0 \x76\xD7 |0 \x76\xD8 |0 \x76\xD9 |0 \x76\xDA |0 \x76\xDB |0 \x76\xDC |0 \x76\xDD |0 \x76\xDE |0 \x76\xDF |0 \x76\xE0 |0 \x76\xE1 |0 \x76\xE2 |0 \x76\xE3 |0 \x76\xE4 |0 \x76\xE5 |0 \x76\xE6 |0 \x76\xE7 |0 \x76\xE8 |0 \x76\xE9 |0 \x76\xEA |0 \x76\xEB |0 \x76\xEC |0 \x76\xED |0 \x76\xEE |0 \x76\xEF |0 \x76\xF0 |0 \x76\xF1 |0 \x76\xF2 |0 \x76\xF3 |0 \x76\xF4 |0 \x76\xF5 |0 \x76\xF6 |0 \x76\xF7 |0 \x76\xF8 |0 \x76\xF9 |0 \x76\xFA |0 \x76\xFB |0 \x76\xFC |0 \x76\xFD |0 \x77\x41 |0 \x77\x42 |0 \x77\x43 |0 \x77\x44 |0 \x77\x45 |0 \x77\x46 |0 \x77\x47 |0 \x77\x48 |0 \x77\x49 |0 \x77\x4A |0 \x77\x4B |0 \x77\x4C |0 \x77\x4D |0 \x77\x4E |0 \x77\x4F |0 \x77\x50 |0 \x77\x51 |0 \x77\x52 |0 \x77\x53 |0 \x77\x54 |0 \x77\x55 |0 \x77\x56 |0 \x77\x57 |0 \x77\x58 |0 \x77\x59 |0 \x77\x5A |0 \x77\x5B |0 \x77\x5C |0 \x77\x5D |0 \x77\x5E |0 \x77\x5F |0 \x77\x60 |0 \x77\x61 |0 \x77\x62 |0 \x77\x63 |0 \x77\x64 |0 \x77\x65 |0 \x77\x66 |0 \x77\x67 |0 \x77\x68 |0 \x77\x69 |0 \x77\x6A |0 \x77\x6B |0 \x77\x6C |0 \x77\x6D |0 \x77\x6E |0 \x77\x6F |0 \x77\x70 |0 \x77\x71 |0 \x77\x72 |0 \x77\x73 |0 \x77\x74 |0 \x77\x75 |0 \x77\x76 |0 \x77\x77 |0 \x77\x78 |0 \x77\x79 |0 \x77\x7A |0 \x77\x7B |0 \x77\x7C |0 \x77\x7D |0 \x77\x7E |0 \x77\x7F |0 \x77\x81 |0 \x77\x82 |0 \x77\x83 |0 \x77\x84 |0 \x77\x85 |0 \x77\x86 |0 \x77\x87 |0 \x77\x88 |0 \x77\x89 |0 \x77\x8A |0 \x77\x8B |0 \x77\x8C |0 \x77\x8D |0 \x77\x8E |0 \x77\x8F |0 \x77\x90 |0 \x77\x91 |0 \x77\x92 |0 \x77\x93 |0 \x77\x94 |0 \x77\x95 |0 \x77\x96 |0 \x77\x97 |0 \x77\x98 |0 \x77\x99 |0 \x77\x9A |0 \x77\x9B |0 \x77\x9C |0 \x77\x9D |0 \x77\x9E |0 \x77\x9F |0 \x77\xA0 |0 \x77\xA1 |0 \x77\xA2 |0 \x77\xA3 |0 \x77\xA4 |0 \x77\xA5 |0 \x77\xA6 |0 \x77\xA7 |0 \x77\xA8 |0 \x77\xA9 |0 \x77\xAA |0 \x77\xAB |0 \x77\xAC |0 \x77\xAD |0 \x77\xAE |0 \x77\xAF |0 \x77\xB0 |0 \x77\xB1 |0 \x77\xB2 |0 \x77\xB3 |0 \x77\xB4 |0 \x77\xB5 |0 \x77\xB6 |0 \x77\xB7 |0 \x77\xB8 |0 \x77\xB9 |0 \x77\xBA |0 \x77\xBB |0 \x77\xBC |0 \x77\xBD |0 \x77\xBE |0 \x77\xBF |0 \x77\xC0 |0 \x77\xC1 |0 \x77\xC2 |0 \x77\xC3 |0 \x77\xC4 |0 \x77\xC5 |0 \x77\xC6 |0 \x77\xC7 |0 \x77\xC8 |0 \x77\xC9 |0 \x77\xCA |0 \x77\xCB |0 \x77\xCC |0 \x77\xCD |0 \x77\xCE |0 \x77\xCF |0 \x77\xD0 |0 \x77\xD1 |0 \x77\xD2 |0 \x77\xD3 |0 \x77\xD4 |0 \x77\xD5 |0 \x77\xD6 |0 \x77\xD7 |0 \x77\xD8 |0 \x77\xD9 |0 \x77\xDA |0 \x77\xDB |0 \x77\xDC |0 \x77\xDD |0 \x77\xDE |0 \x77\xDF |0 \x77\xE0 |0 \x77\xE1 |0 \x77\xE2 |0 \x77\xE3 |0 \x77\xE4 |0 \x77\xE5 |0 \x77\xE6 |0 \x77\xE7 |0 \x77\xE8 |0 \x77\xE9 |0 \x77\xEA |0 \x77\xEB |0 \x77\xEC |0 \x77\xED |0 \x77\xEE |0 \x77\xEF |0 \x77\xF0 |0 \x77\xF1 |0 \x77\xF2 |0 \x77\xF3 |0 \x77\xF4 |0 \x77\xF5 |0 \x77\xF6 |0 \x77\xF7 |0 \x77\xF8 |0 \x77\xF9 |0 \x77\xFA |0 \x77\xFB |0 \x77\xFC |0 \x77\xFD |0 \x78\x41 |0 \x78\x42 |0 \x78\x43 |0 \x78\x44 |0 \x78\x45 |0 \x78\x46 |0 \x78\x47 |0 \x78\x48 |0 \x78\x49 |0 \x78\x4A |0 \x78\x4B |0 \x78\x4C |0 \x78\x4D |0 \x78\x4E |0 \x78\x4F |0 \x78\x50 |0 \x78\x51 |0 \x78\x52 |0 \x78\x53 |0 \x78\x54 |0 \x78\x55 |0 \x78\x56 |0 \x78\x57 |0 \x78\x58 |0 \x78\x59 |0 \x78\x5A |0 \x78\x5B |0 \x78\x5C |0 \x78\x5D |0 \x78\x5E |0 \x78\x5F |0 \x78\x60 |0 \x78\x61 |0 \x78\x62 |0 \x78\x63 |0 \x78\x64 |0 \x78\x65 |0 \x78\x66 |0 \x78\x67 |0 \x78\x68 |0 \x78\x69 |0 \x78\x6A |0 \x78\x6B |0 \x78\x6C |0 \x78\x6D |0 \x78\x6E |0 \x78\x6F |0 \x78\x70 |0 \x78\x71 |0 \x78\x72 |0 \x78\x73 |0 \x78\x74 |0 \x78\x75 |0 \x78\x76 |0 \x78\x77 |0 \x78\x78 |0 \x78\x79 |0 \x78\x7A |0 \x78\x7B |0 \x78\x7C |0 \x78\x7D |0 \x78\x7E |0 \x78\x7F |0 \x78\x81 |0 \x78\x82 |0 \x78\x83 |0 \x78\x84 |0 \x78\x85 |0 \x78\x86 |0 \x78\x87 |0 \x78\x88 |0 \x78\x89 |0 \x78\x8A |0 \x78\x8B |0 \x78\x8C |0 \x78\x8D |0 \x78\x8E |0 \x78\x8F |0 \x78\x90 |0 \x78\x91 |0 \x78\x92 |0 \x78\x93 |0 \x78\x94 |0 \x78\x95 |0 \x78\x96 |0 \x78\x97 |0 \x78\x98 |0 \x78\x99 |0 \x78\x9A |0 \x78\x9B |0 \x78\x9C |0 \x78\x9D |0 \x78\x9E |0 \x78\x9F |0 \x78\xA0 |0 \x78\xA1 |0 \x78\xA2 |0 \x78\xA3 |0 \x78\xA4 |0 \x78\xA5 |0 \x78\xA6 |0 \x78\xA7 |0 \x78\xA8 |0 \x78\xA9 |0 \x78\xAA |0 \x78\xAB |0 \x78\xAC |0 \x78\xAD |0 \x78\xAE |0 \x78\xAF |0 \x78\xB0 |0 \x78\xB1 |0 \x78\xB2 |0 \x78\xB3 |0 \x78\xB4 |0 \x78\xB5 |0 \x78\xB6 |0 \x78\xB7 |0 \x78\xB8 |0 \x78\xB9 |0 \x78\xBA |0 \x78\xBB |0 \x78\xBC |0 \x78\xBD |0 \x78\xBE |0 \x78\xBF |0 \x78\xC0 |0 \x78\xC1 |0 \x78\xC2 |0 \x78\xC3 |0 \x78\xC4 |0 \x78\xC5 |0 \x78\xC6 |0 \x78\xC7 |0 \x78\xC8 |0 \x78\xC9 |0 \x78\xCA |0 \x78\xCB |0 \x78\xCC |0 \x78\xCD |0 \x78\xCE |0 \x78\xCF |0 \x78\xD0 |0 \x78\xD1 |0 \x78\xD2 |0 \x78\xD3 |0 \x78\xD4 |0 \x78\xD5 |0 \x78\xD6 |0 \x78\xD7 |0 \x78\xD8 |0 \x78\xD9 |0 \x78\xDA |0 \x78\xDB |0 \x78\xDC |0 \x78\xDD |0 \x78\xDE |0 \x78\xDF |0 \x78\xE0 |0 \x78\xE1 |0 \x78\xE2 |0 \x78\xE3 |0 \x78\xE4 |0 \x78\xE5 |0 \x78\xE6 |0 \x78\xE7 |0 \x78\xE8 |0 \x78\xE9 |0 \x78\xEA |0 \x78\xEB |0 \x78\xEC |0 \x78\xED |0 \x78\xEE |0 \x78\xEF |0 \x78\xF0 |0 \x78\xF1 |0 \x78\xF2 |0 \x78\xF3 |0 \x78\xF4 |0 \x78\xF5 |0 \x78\xF6 |0 \x78\xF7 |0 \x78\xF8 |0 \x78\xF9 |0 \x78\xFA |0 \x78\xFB |0 \x78\xFC |0 \x78\xFD |0 \x79\x41 |0 \x79\x42 |0 \x79\x43 |0 \x79\x44 |0 \x79\x45 |0 \x79\x46 |0 \x79\x47 |0 \x79\x48 |0 \x79\x49 |0 \x79\x4A |0 \x79\x4B |0 \x79\x4C |0 \x79\x4D |0 \x79\x4E |0 \x79\x4F |0 \x79\x50 |0 \x79\x51 |0 \x79\x52 |0 \x79\x53 |0 \x79\x54 |0 \x79\x55 |0 \x79\x56 |0 \x79\x57 |0 \x79\x58 |0 \x79\x59 |0 \x79\x5A |0 \x79\x5B |0 \x79\x5C |0 \x79\x5D |0 \x79\x5E |0 \x79\x5F |0 \x79\x60 |0 \x79\x61 |0 \x79\x62 |0 \x79\x63 |0 \x79\x64 |0 \x79\x65 |0 \x79\x66 |0 \x79\x67 |0 \x79\x68 |0 \x79\x69 |0 \x79\x6A |0 \x79\x6B |0 \x79\x6C |0 \x79\x6D |0 \x79\x6E |0 \x79\x6F |0 \x79\x70 |0 \x79\x71 |0 \x79\x72 |0 \x79\x73 |0 \x79\x74 |0 \x79\x75 |0 \x79\x76 |0 \x79\x77 |0 \x79\x78 |0 \x79\x79 |0 \x79\x7A |0 \x79\x7B |0 \x79\x7C |0 \x79\x7D |0 \x79\x7E |0 \x79\x7F |0 \x79\x81 |0 \x79\x82 |0 \x79\x83 |0 \x79\x84 |0 \x79\x85 |0 \x79\x86 |0 \x79\x87 |0 \x79\x88 |0 \x79\x89 |0 \x79\x8A |0 \x79\x8B |0 \x79\x8C |0 \x79\x8D |0 \x79\x8E |0 \x79\x8F |0 \x79\x90 |0 \x79\x91 |0 \x79\x92 |0 \x79\x93 |0 \x79\x94 |0 \x79\x95 |0 \x79\x96 |0 \x79\x97 |0 \x79\x98 |0 \x79\x99 |0 \x79\x9A |0 \x79\x9B |0 \x79\x9C |0 \x79\x9D |0 \x79\x9E |0 \x79\x9F |0 \x79\xA0 |0 \x79\xA1 |0 \x79\xA2 |0 \x79\xA3 |0 \x79\xA4 |0 \x79\xA5 |0 \x79\xA6 |0 \x79\xA7 |0 \x79\xA8 |0 \x79\xA9 |0 \x79\xAA |0 \x79\xAB |0 \x79\xAC |0 \x79\xAD |0 \x79\xAE |0 \x79\xAF |0 \x79\xB0 |0 \x79\xB1 |0 \x79\xB2 |0 \x79\xB3 |0 \x79\xB4 |0 \x79\xB5 |0 \x79\xB6 |0 \x79\xB7 |0 \x79\xB8 |0 \x79\xB9 |0 \x79\xBA |0 \x79\xBB |0 \x79\xBC |0 \x79\xBD |0 \x79\xBE |0 \x79\xBF |0 \x79\xC0 |0 \x79\xC1 |0 \x79\xC2 |0 \x79\xC3 |0 \x79\xC4 |0 \x79\xC5 |0 \x79\xC6 |0 \x79\xC7 |0 \x79\xC8 |0 \x79\xC9 |0 \x79\xCA |0 \x79\xCB |0 \x79\xCC |0 \x79\xCD |0 \x79\xCE |0 \x79\xCF |0 \x79\xD0 |0 \x79\xD1 |0 \x79\xD2 |0 \x79\xD3 |0 \x79\xD4 |0 \x79\xD5 |0 \x79\xD6 |0 \x79\xD7 |0 \x79\xD8 |0 \x79\xD9 |0 \x79\xDA |0 \x79\xDB |0 \x79\xDC |0 \x79\xDD |0 \x79\xDE |0 \x79\xDF |0 \x79\xE0 |0 \x79\xE1 |0 \x79\xE2 |0 \x79\xE3 |0 \x79\xE4 |0 \x79\xE5 |0 \x79\xE6 |0 \x79\xE7 |0 \x79\xE8 |0 \x79\xE9 |0 \x79\xEA |0 \x79\xEB |0 \x79\xEC |0 \x79\xED |0 \x79\xEE |0 \x79\xEF |0 \x79\xF0 |0 \x79\xF1 |0 \x79\xF2 |0 \x79\xF3 |0 \x79\xF4 |0 \x79\xF5 |0 \x79\xF6 |0 \x79\xF7 |0 \x79\xF8 |0 \x79\xF9 |0 \x79\xFA |0 \x79\xFB |0 \x79\xFC |0 \x79\xFD |0 \x7A\x41 |0 \x7A\x42 |0 \x7A\x43 |0 \x7A\x44 |0 \x7A\x45 |0 \x7A\x46 |0 \x7A\x47 |0 \x7A\x48 |0 \x7A\x49 |0 \x7A\x4A |0 \x7A\x4B |0 \x7A\x4C |0 \x7A\x4D |0 \x7A\x4E |0 \x7A\x4F |0 \x7A\x50 |0 \x7A\x51 |0 \x7A\x52 |0 \x7A\x53 |0 \x7A\x54 |0 \x7A\x55 |0 \x7A\x56 |0 \x7A\x57 |0 \x7A\x58 |0 \x7A\x59 |0 \x7A\x5A |0 \x7A\x5B |0 \x7A\x5C |0 \x7A\x5D |0 \x7A\x5E |0 \x7A\x5F |0 \x7A\x60 |0 \x7A\x61 |0 \x7A\x62 |0 \x7A\x63 |0 \x7A\x64 |0 \x7A\x65 |0 \x7A\x66 |0 \x7A\x67 |0 \x7A\x68 |0 \x7A\x69 |0 \x7A\x6A |0 \x7A\x6B |0 \x7A\x6C |0 \x7A\x6D |0 \x7A\x6E |0 \x7A\x6F |0 \x7A\x70 |0 \x7A\x71 |0 \x7A\x72 |0 \x7A\x73 |0 \x7A\x74 |0 \x7A\x75 |0 \x7A\x76 |0 \x7A\x77 |0 \x7A\x78 |0 \x7A\x79 |0 \x7A\x7A |0 \x7A\x7B |0 \x7A\x7C |0 \x7A\x7D |0 \x7A\x7E |0 \x7A\x7F |0 \x7A\x81 |0 \x7A\x82 |0 \x7A\x83 |0 \x7A\x84 |0 \x7A\x85 |0 \x7A\x86 |0 \x7A\x87 |0 \x7A\x88 |0 \x7A\x89 |0 \x7A\x8A |0 \x7A\x8B |0 \x7A\x8C |0 \x7A\x8D |0 \x7A\x8E |0 \x7A\x8F |0 \x7A\x90 |0 \x7A\x91 |0 \x7A\x92 |0 \x7A\x93 |0 \x7A\x94 |0 \x7A\x95 |0 \x7A\x96 |0 \x7A\x97 |0 \x7A\x98 |0 \x7A\x99 |0 \x7A\x9A |0 \x7A\x9B |0 \x7A\x9C |0 \x7A\x9D |0 \x7A\x9E |0 \x7A\x9F |0 \x7A\xA0 |0 \x7A\xA1 |0 \x7A\xA2 |0 \x7A\xA3 |0 \x7A\xA4 |0 \x7A\xA5 |0 \x7A\xA6 |0 \x7A\xA7 |0 \x7A\xA8 |0 \x7A\xA9 |0 \x7A\xAA |0 \x7A\xAB |0 \x7A\xAC |0 \x7A\xAD |0 \x7A\xAE |0 \x7A\xAF |0 \x7A\xB0 |0 \x7A\xB1 |0 \x7A\xB2 |0 \x7A\xB3 |0 \x7A\xB4 |0 \x7A\xB5 |0 \x7A\xB6 |0 \x7A\xB7 |0 \x7A\xB8 |0 \x7A\xB9 |0 \x7A\xBA |0 \x7A\xBB |0 \x7A\xBC |0 \x7A\xBD |0 \x7A\xBE |0 \x7A\xBF |0 \x7A\xC0 |0 \x7A\xC1 |0 \x7A\xC2 |0 \x7A\xC3 |0 \x7A\xC4 |0 \x7A\xC5 |0 \x7A\xC6 |0 \x7A\xC7 |0 \x7A\xC8 |0 \x7A\xC9 |0 \x7A\xCA |0 \x7A\xCB |0 \x7A\xCC |0 \x7A\xCD |0 \x7A\xCE |0 \x7A\xCF |0 \x7A\xD0 |0 \x7A\xD1 |0 \x7A\xD2 |0 \x7A\xD3 |0 \x7A\xD4 |0 \x7A\xD5 |0 \x7A\xD6 |0 \x7A\xD7 |0 \x7A\xD8 |0 \x7A\xD9 |0 \x7A\xDA |0 \x7A\xDB |0 \x7A\xDC |0 \x7A\xDD |0 \x7A\xDE |0 \x7A\xDF |0 \x7A\xE0 |0 \x7A\xE1 |0 \x7A\xE2 |0 \x7A\xE3 |0 \x7A\xE4 |0 \x7A\xE5 |0 \x7A\xE6 |0 \x7A\xE7 |0 \x7A\xE8 |0 \x7A\xE9 |0 \x7A\xEA |0 \x7A\xEB |0 \x7A\xEC |0 \x7A\xED |0 \x7A\xEE |0 \x7A\xEF |0 \x7A\xF0 |0 \x7A\xF1 |0 \x7A\xF2 |0 \x7A\xF3 |0 \x7A\xF4 |0 \x7A\xF5 |0 \x7A\xF6 |0 \x7A\xF7 |0 \x7A\xF8 |0 \x7A\xF9 |0 \x7A\xFA |0 \x7A\xFB |0 \x7A\xFC |0 \x7A\xFD |0 \x7B\x41 |0 \x7B\x42 |0 \x7B\x43 |0 \x7B\x44 |0 \x7B\x45 |0 \x7B\x46 |0 \x7B\x47 |0 \x7B\x48 |0 \x7B\x49 |0 \x7B\x4A |0 \x7B\x4B |0 \x7B\x4C |0 \x7B\x4D |0 \x7B\x4E |0 \x7B\x4F |0 \x7B\x50 |0 \x7B\x51 |0 \x7B\x52 |0 \x7B\x53 |0 \x7B\x54 |0 \x7B\x55 |0 \x7B\x56 |0 \x7B\x57 |0 \x7B\x58 |0 \x7B\x59 |0 \x7B\x5A |0 \x7B\x5B |0 \x7B\x5C |0 \x7B\x5D |0 \x7B\x5E |0 \x7B\x5F |0 \x7B\x60 |0 \x7B\x61 |0 \x7B\x62 |0 \x7B\x63 |0 \x7B\x64 |0 \x7B\x65 |0 \x7B\x66 |0 \x7B\x67 |0 \x7B\x68 |0 \x7B\x69 |0 \x7B\x6A |0 \x7B\x6B |0 \x7B\x6C |0 \x7B\x6D |0 \x7B\x6E |0 \x7B\x6F |0 \x7B\x70 |0 \x7B\x71 |0 \x7B\x72 |0 \x7B\x73 |0 \x7B\x74 |0 \x7B\x75 |0 \x7B\x76 |0 \x7B\x77 |0 \x7B\x78 |0 \x7B\x79 |0 \x7B\x7A |0 \x7B\x7B |0 \x7B\x7C |0 \x7B\x7D |0 \x7B\x7E |0 \x7B\x7F |0 \x7B\x81 |0 \x7B\x82 |0 \x7B\x83 |0 \x7B\x84 |0 \x7B\x85 |0 \x7B\x86 |0 \x7B\x87 |0 \x7B\x88 |0 \x7B\x89 |0 \x7B\x8A |0 \x7B\x8B |0 \x7B\x8C |0 \x7B\x8D |0 \x7B\x8E |0 \x7B\x8F |0 \x7B\x90 |0 \x7B\x91 |0 \x7B\x92 |0 \x7B\x93 |0 \x7B\x94 |0 \x7B\x95 |0 \x7B\x96 |0 \x7B\x97 |0 \x7B\x98 |0 \x7B\x99 |0 \x7B\x9A |0 \x7B\x9B |0 \x7B\x9C |0 \x7B\x9D |0 \x7B\x9E |0 \x7B\x9F |0 \x7B\xA0 |0 \x7B\xA1 |0 \x7B\xA2 |0 \x7B\xA3 |0 \x7B\xA4 |0 \x7B\xA5 |0 \x7B\xA6 |0 \x7B\xA7 |0 \x7B\xA8 |0 \x7B\xA9 |0 \x7B\xAA |0 \x7B\xAB |0 \x7B\xAC |0 \x7B\xAD |0 \x7B\xAE |0 \x7B\xAF |0 \x7B\xB0 |0 \x7B\xB1 |0 \x7B\xB2 |0 \x7B\xB3 |0 \x7B\xB4 |0 \x7B\xB5 |0 \x7B\xB6 |0 \x7B\xB7 |0 \x7B\xB8 |0 \x7B\xB9 |0 \x7B\xBA |0 \x7B\xBB |0 \x7B\xBC |0 \x7B\xBD |0 \x7B\xBE |0 \x7B\xBF |0 \x7B\xC0 |0 \x7B\xC1 |0 \x7B\xC2 |0 \x7B\xC3 |0 \x7B\xC4 |0 \x7B\xC5 |0 \x7B\xC6 |0 \x7B\xC7 |0 \x7B\xC8 |0 \x7B\xC9 |0 \x7B\xCA |0 \x7B\xCB |0 \x7B\xCC |0 \x7B\xCD |0 \x7B\xCE |0 \x7B\xCF |0 \x7B\xD0 |0 \x7B\xD1 |0 \x7B\xD2 |0 \x7B\xD3 |0 \x7B\xD4 |0 \x7B\xD5 |0 \x7B\xD6 |0 \x7B\xD7 |0 \x7B\xD8 |0 \x7B\xD9 |0 \x7B\xDA |0 \x7B\xDB |0 \x7B\xDC |0 \x7B\xDD |0 \x7B\xDE |0 \x7B\xDF |0 \x7B\xE0 |0 \x7B\xE1 |0 \x7B\xE2 |0 \x7B\xE3 |0 \x7B\xE4 |0 \x7B\xE5 |0 \x7B\xE6 |0 \x7B\xE7 |0 \x7B\xE8 |0 \x7B\xE9 |0 \x7B\xEA |0 \x7B\xEB |0 \x7B\xEC |0 \x7B\xED |0 \x7B\xEE |0 \x7B\xEF |0 \x7B\xF0 |0 \x7B\xF1 |0 \x7B\xF2 |0 \x7B\xF3 |0 \x7B\xF4 |0 \x7B\xF5 |0 \x7B\xF6 |0 \x7B\xF7 |0 \x7B\xF8 |0 \x7B\xF9 |0 \x7B\xFA |0 \x7B\xFB |0 \x7B\xFC |0 \x7B\xFD |0 \x7C\x41 |0 \x7C\x42 |0 \x7C\x43 |0 \x7C\x44 |0 \x7C\x45 |0 \x7C\x46 |0 \x7C\x47 |0 \x7C\x48 |0 \x7C\x49 |0 \x7C\x4A |0 \x7C\x4B |0 \x7C\x4C |0 \x7C\x4D |0 \x7C\x4E |0 \x7C\x4F |0 \x7C\x50 |0 \x7C\x51 |0 \x7C\x52 |0 \x7C\x53 |0 \x7C\x54 |0 \x7C\x55 |0 \x7C\x56 |0 \x7C\x57 |0 \x7C\x58 |0 \x7C\x59 |0 \x7C\x5A |0 \x7C\x5B |0 \x7C\x5C |0 \x7C\x5D |0 \x7C\x5E |0 \x7C\x5F |0 \x7C\x60 |0 \x7C\x61 |0 \x7C\x62 |0 \x7C\x63 |0 \x7C\x64 |0 \x7C\x65 |0 \x7C\x66 |0 \x7C\x67 |0 \x7C\x68 |0 \x7C\x69 |0 \x7C\x6A |0 \x7C\x6B |0 \x7C\x6C |0 \x7C\x6D |0 \x7C\x6E |0 \x7C\x6F |0 \x7C\x70 |0 \x7C\x71 |0 \x7C\x72 |0 \x7C\x73 |0 \x7C\x74 |0 \x7C\x75 |0 \x7C\x76 |0 \x7C\x77 |0 \x7C\x78 |0 \x7C\x79 |0 \x7C\x7A |0 \x7C\x7B |0 \x7C\x7C |0 \x7C\x7D |0 \x7C\x7E |0 \x7C\x7F |0 \x7C\x81 |0 \x7C\x82 |0 \x7C\x83 |0 \x7C\x84 |0 \x7C\x85 |0 \x7C\x86 |0 \x7C\x87 |0 \x7C\x88 |0 \x7C\x89 |0 \x7C\x8A |0 \x7C\x8B |0 \x7C\x8C |0 \x7C\x8D |0 \x7C\x8E |0 \x7C\x8F |0 \x7C\x90 |0 \x7C\x91 |0 \x7C\x92 |0 \x7C\x93 |0 \x7C\x94 |0 \x7C\x95 |0 \x7C\x96 |0 \x7C\x97 |0 \x7C\x98 |0 \x7C\x99 |0 \x7C\x9A |0 \x7C\x9B |0 \x7C\x9C |0 \x7C\x9D |0 \x7C\x9E |0 \x7C\x9F |0 \x7C\xA0 |0 \x7C\xA1 |0 \x7C\xA2 |0 \x7C\xA3 |0 \x7C\xA4 |0 \x7C\xA5 |0 \x7C\xA6 |0 \x7C\xA7 |0 \x7C\xA8 |0 \x7C\xA9 |0 \x7C\xAA |0 \x7C\xAB |0 \x7C\xAC |0 \x7C\xAD |0 \x7C\xAE |0 \x7C\xAF |0 \x7C\xB0 |0 \x7C\xB1 |0 \x7C\xB2 |0 \x7C\xB3 |0 \x7C\xB4 |0 \x7C\xB5 |0 \x7C\xB6 |0 \x7C\xB7 |0 \x7C\xB8 |0 \x7C\xB9 |0 \x7C\xBA |0 \x7C\xBB |0 \x7C\xBC |0 \x7C\xBD |0 \x7C\xBE |0 \x7C\xBF |0 \x7C\xC0 |0 \x7C\xC1 |0 \x7C\xC2 |0 \x7C\xC3 |0 \x7C\xC4 |0 \x7C\xC5 |0 \x7C\xC6 |0 \x7C\xC7 |0 \x7C\xC8 |0 \x7C\xC9 |0 \x7C\xCA |0 \x7C\xCB |0 \x7C\xCC |0 \x7C\xCD |0 \x7C\xCE |0 \x7C\xCF |0 \x7C\xD0 |0 \x7C\xD1 |0 \x7C\xD2 |0 \x7C\xD3 |0 \x7C\xD4 |0 \x7C\xD5 |0 \x7C\xD6 |0 \x7C\xD7 |0 \x7C\xD8 |0 \x7C\xD9 |0 \x7C\xDA |0 \x7C\xDB |0 \x7C\xDC |0 \x7C\xDD |0 \x7C\xDE |0 \x7C\xDF |0 \x7C\xE0 |0 \x7C\xE1 |0 \x7C\xE2 |0 \x7C\xE3 |0 \x7C\xE4 |0 \x7C\xE5 |0 \x7C\xE6 |0 \x7C\xE7 |0 \x7C\xE8 |0 \x7C\xE9 |0 \x7C\xEA |0 \x7C\xEB |0 \x7C\xEC |0 \x7C\xED |0 \x7C\xEE |0 \x7C\xEF |0 \x7C\xF0 |0 \x7C\xF1 |0 \x7C\xF2 |0 \x7C\xF3 |0 \x7C\xF4 |0 \x7C\xF5 |0 \x7C\xF6 |0 \x7C\xF7 |0 \x7C\xF8 |0 \x7C\xF9 |0 \x7C\xFA |0 \x7C\xFB |0 \x7C\xFC |0 \x7C\xFD |0 \x7D\x41 |0 \x7D\x42 |0 \x7D\x43 |0 \x7D\x44 |0 \x7D\x45 |0 \x7D\x46 |0 \x7D\x47 |0 \x7D\x48 |0 \x7D\x49 |0 \x7D\x4A |0 \x7D\x4B |0 \x7D\x4C |0 \x7D\x4D |0 \x7D\x4E |0 \x7D\x4F |0 \x7D\x50 |0 \x7D\x51 |0 \x7D\x52 |0 \x7D\x53 |0 \x7D\x54 |0 \x7D\x55 |0 \x7D\x56 |0 \x7D\x57 |0 \x7D\x58 |0 \x7D\x59 |0 \x7D\x5A |0 \x7D\x5B |0 \x7D\x5C |0 \x7D\x5D |0 \x7D\x5E |0 \x7D\x5F |0 \x7D\x60 |0 \x7D\x61 |0 \x7D\x62 |0 \x7D\x63 |0 \x7D\x64 |0 \x7D\x65 |0 \x7D\x66 |0 \x7D\x67 |0 \x7D\x68 |0 \x7D\x69 |0 \x7D\x6A |0 \x7D\x6B |0 \x7D\x6C |0 \x7D\x6D |0 \x7D\x6E |0 \x7D\x6F |0 \x7D\x70 |0 \x7D\x71 |0 \x7D\x72 |0 \x7D\x73 |0 \x7D\x74 |0 \x7D\x75 |0 \x7D\x76 |0 \x7D\x77 |0 \x7D\x78 |0 \x7D\x79 |0 \x7D\x7A |0 \x7D\x7B |0 \x7D\x7C |0 \x7D\x7D |0 \x7D\x7E |0 \x7D\x7F |0 \x7D\x81 |0 \x7D\x82 |0 \x7D\x83 |0 \x7D\x84 |0 \x7D\x85 |0 \x7D\x86 |0 \x7D\x87 |0 \x7D\x88 |0 \x7D\x89 |0 \x7D\x8A |0 \x7D\x8B |0 \x7D\x8C |0 \x7D\x8D |0 \x7D\x8E |0 \x7D\x8F |0 \x7D\x90 |0 \x7D\x91 |0 \x7D\x92 |0 \x7D\x93 |0 \x7D\x94 |0 \x7D\x95 |0 \x7D\x96 |0 \x7D\x97 |0 \x7D\x98 |0 \x7D\x99 |0 \x7D\x9A |0 \x7D\x9B |0 \x7D\x9C |0 \x7D\x9D |0 \x7D\x9E |0 \x7D\x9F |0 \x7D\xA0 |0 \x7D\xA1 |0 \x7D\xA2 |0 \x7D\xA3 |0 \x7D\xA4 |0 \x7D\xA5 |0 \x7D\xA6 |0 \x7D\xA7 |0 \x7D\xA8 |0 \x7D\xA9 |0 \x7D\xAA |0 \x7D\xAB |0 \x7D\xAC |0 \x7D\xAD |0 \x7D\xAE |0 \x7D\xAF |0 \x7D\xB0 |0 \x7D\xB1 |0 \x7D\xB2 |0 \x7D\xB3 |0 \x7D\xB4 |0 \x7D\xB5 |0 \x7D\xB6 |0 \x7D\xB7 |0 \x7D\xB8 |0 \x7D\xB9 |0 \x7D\xBA |0 \x7D\xBB |0 \x7D\xBC |0 \x7D\xBD |0 \x7D\xBE |0 \x7D\xBF |0 \x7D\xC0 |0 \x7D\xC1 |0 \x7D\xC2 |0 \x7D\xC3 |0 \x7D\xC4 |0 \x7D\xC5 |0 \x7D\xC6 |0 \x7D\xC7 |0 \x7D\xC8 |0 \x7D\xC9 |0 \x7D\xCA |0 \x7D\xCB |0 \x7D\xCC |0 \x7D\xCD |0 \x7D\xCE |0 \x7D\xCF |0 \x7D\xD0 |0 \x7D\xD1 |0 \x7D\xD2 |0 \x7D\xD3 |0 \x7D\xD4 |0 \x7D\xD5 |0 \x7D\xD6 |0 \x7D\xD7 |0 \x7D\xD8 |0 \x7D\xD9 |0 \x7D\xDA |0 \x7D\xDB |0 \x7D\xDC |0 \x7D\xDD |0 \x7D\xDE |0 \x7D\xDF |0 \x7D\xE0 |0 \x7D\xE1 |0 \x7D\xE2 |0 \x7D\xE3 |0 \x7D\xE4 |0 \x7D\xE5 |0 \x7D\xE6 |0 \x7D\xE7 |0 \x7D\xE8 |0 \x7D\xE9 |0 \x7D\xEA |0 \x7D\xEB |0 \x7D\xEC |0 \x7D\xED |0 \x7D\xEE |0 \x7D\xEF |0 \x7D\xF0 |0 \x7D\xF1 |0 \x7D\xF2 |0 \x7D\xF3 |0 \x7D\xF4 |0 \x7D\xF5 |0 \x7D\xF6 |0 \x7D\xF7 |0 \x7D\xF8 |0 \x7D\xF9 |0 \x7D\xFA |0 \x7D\xFB |0 \x7D\xFC |0 \x7D\xFD |0 \x7E\x41 |0 \x7E\x42 |0 \x7E\x43 |0 \x7E\x44 |0 \x7E\x45 |0 \x7E\x46 |0 \x7E\x47 |0 \x7E\x48 |0 \x7E\x49 |0 \x7E\x4A |0 \x7E\x4B |0 \x7E\x4C |0 \x7E\x4D |0 \x7E\x4E |0 \x7E\x4F |0 \x7E\x50 |0 \x7E\x51 |0 \x7E\x52 |0 \x7E\x53 |0 \x7E\x54 |0 \x7E\x55 |0 \x7E\x56 |0 \x7E\x57 |0 \x7E\x58 |0 \x7E\x59 |0 \x7E\x5A |0 \x7E\x5B |0 \x7E\x5C |0 \x7E\x5D |0 \x7E\x5E |0 \x7E\x5F |0 \x7E\x60 |0 \x7E\x61 |0 \x7E\x62 |0 \x7E\x63 |0 \x7E\x64 |0 \x7E\x65 |0 \x7E\x66 |0 \x7E\x67 |0 \x7E\x68 |0 \x7E\x69 |0 \x7E\x6A |0 \x7E\x6B |0 \x7E\x6C |0 \x7E\x6D |0 \x7E\x6E |0 \x7E\x6F |0 \x7E\x70 |0 \x7E\x71 |0 \x7E\x72 |0 \x7E\x73 |0 \x7E\x74 |0 \x7E\x75 |0 \x7E\x76 |0 \x7E\x77 |0 \x7E\x78 |0 \x7E\x79 |0 \x7E\x7A |0 \x7E\x7B |0 \x7E\x7C |0 \x7E\x7D |0 \x7E\x7E |0 \x7E\x7F |0 \x7E\x81 |0 \x7E\x82 |0 \x7E\x83 |0 \x7E\x84 |0 \x7E\x85 |0 \x7E\x86 |0 \x7E\x87 |0 \x7E\x88 |0 \x7E\x89 |0 \x7E\x8A |0 \x7E\x8B |0 \x7E\x8C |0 \x7E\x8D |0 \x7E\x8E |0 \x7E\x8F |0 \x7E\x90 |0 \x7E\x91 |0 \x7E\x92 |0 \x7E\x93 |0 \x7E\x94 |0 \x7E\x95 |0 \x7E\x96 |0 \x7E\x97 |0 \x7E\x98 |0 \x7E\x99 |0 \x7E\x9A |0 \x7E\x9B |0 \x7E\x9C |0 \x7E\x9D |0 \x7E\x9E |0 \x7E\x9F |0 \x7E\xA0 |0 \x7E\xA1 |0 \x7E\xA2 |0 \x7E\xA3 |0 \x7E\xA4 |0 \x7E\xA5 |0 \x7E\xA6 |0 \x7E\xA7 |0 \x7E\xA8 |0 \x7E\xA9 |0 \x7E\xAA |0 \x7E\xAB |0 \x7E\xAC |0 \x7E\xAD |0 \x7E\xAE |0 \x7E\xAF |0 \x7E\xB0 |0 \x7E\xB1 |0 \x7E\xB2 |0 \x7E\xB3 |0 \x7E\xB4 |0 \x7E\xB5 |0 \x7E\xB6 |0 \x7E\xB7 |0 \x7E\xB8 |0 \x7E\xB9 |0 \x7E\xBA |0 \x7E\xBB |0 \x7E\xBC |0 \x7E\xBD |0 \x7E\xBE |0 \x7E\xBF |0 \x7E\xC0 |0 \x7E\xC1 |0 \x7E\xC2 |0 \x7E\xC3 |0 \x7E\xC4 |0 \x7E\xC5 |0 \x7E\xC6 |0 \x7E\xC7 |0 \x7E\xC8 |0 \x7E\xC9 |0 \x7E\xCA |0 \x7E\xCB |0 \x7E\xCC |0 \x7E\xCD |0 \x7E\xCE |0 \x7E\xCF |0 \x7E\xD0 |0 \x7E\xD1 |0 \x7E\xD2 |0 \x7E\xD3 |0 \x7E\xD4 |0 \x7E\xD5 |0 \x7E\xD6 |0 \x7E\xD7 |0 \x7E\xD8 |0 \x7E\xD9 |0 \x7E\xDA |0 \x7E\xDB |0 \x7E\xDC |0 \x7E\xDD |0 \x7E\xDE |0 \x7E\xDF |0 \x7E\xE0 |0 \x7E\xE1 |0 \x7E\xE2 |0 \x7E\xE3 |0 \x7E\xE4 |0 \x7E\xE5 |0 \x7E\xE6 |0 \x7E\xE7 |0 \x7E\xE8 |0 \x7E\xE9 |0 \x7E\xEA |0 \x7E\xEB |0 \x7E\xEC |0 \x7E\xED |0 \x7E\xEE |0 \x7E\xEF |0 \x7E\xF0 |0 \x7E\xF1 |0 \x7E\xF2 |0 \x7E\xF3 |0 \x7E\xF4 |0 \x7E\xF5 |0 \x7E\xF6 |0 \x7E\xF7 |0 \x7E\xF8 |0 \x7E\xF9 |0 \x7E\xFA |0 \x7E\xFB |0 \x7E\xFC |0 \x7E\xFD |0 \x7F\x41 |0 \x7F\x42 |0 \x7F\x43 |0 \x7F\x44 |0 \x7F\x45 |0 \x7F\x46 |0 \x7F\x47 |0 \x7F\x48 |0 \x7F\x49 |0 \x7F\x4A |0 \x7F\x4B |0 \x7F\x4C |0 \x7F\x4D |0 \x7F\x4E |0 \x7F\x4F |0 \x7F\x50 |0 \x7F\x51 |0 \x7F\x52 |0 \x7F\x53 |0 \x7F\x54 |0 \x7F\x55 |0 \x7F\x56 |0 \x7F\x57 |0 \x7F\x58 |0 \x7F\x59 |0 \x7F\x5A |0 \x7F\x5B |0 \x7F\x5C |0 \x7F\x5D |0 \x7F\x5E |0 \x7F\x5F |0 \x7F\x60 |0 \x7F\x61 |0 \x7F\x62 |0 \x7F\x63 |0 \x7F\x64 |0 \x7F\x65 |0 \x7F\x66 |0 \x7F\x67 |0 \x7F\x68 |0 \x7F\x69 |0 \x7F\x6A |0 \x7F\x6B |0 \x7F\x6C |0 \x7F\x6D |0 \x7F\x6E |0 \x7F\x6F |0 \x7F\x70 |0 \x7F\x71 |0 \x7F\x72 |0 \x7F\x73 |0 \x7F\x74 |0 \x7F\x75 |0 \x7F\x76 |0 \x7F\x77 |0 \x7F\x78 |0 \x7F\x79 |0 \x7F\x7A |0 \x7F\x7B |0 \x7F\x7C |0 \x7F\x7D |0 \x7F\x7E |0 \x7F\x7F |0 \x7F\x81 |0 \x7F\x82 |0 \x7F\x83 |0 \x7F\x84 |0 \x7F\x85 |0 \x7F\x86 |0 \x7F\x87 |0 \x7F\x88 |0 \x7F\x89 |0 \x7F\x8A |0 \x7F\x8B |0 \x7F\x8C |0 \x7F\x8D |0 \x7F\x8E |0 \x7F\x8F |0 \x7F\x90 |0 \x7F\x91 |0 \x7F\x92 |0 \x7F\x93 |0 \x7F\x94 |0 \x7F\x95 |0 \x7F\x96 |0 \x7F\x97 |0 \x7F\x98 |0 \x7F\x99 |0 \x7F\x9A |0 \x7F\x9B |0 \x7F\x9C |0 \x7F\x9D |0 \x7F\x9E |0 \x7F\x9F |0 \x7F\xA0 |0 \x7F\xA1 |0 \x7F\xA2 |0 \x7F\xA3 |0 \x7F\xA4 |0 \x7F\xA5 |0 \x7F\xA6 |0 \x7F\xA7 |0 \x7F\xA8 |0 \x7F\xA9 |0 \x7F\xAA |0 \x7F\xAB |0 \x7F\xAC |0 \x7F\xAD |0 \x7F\xAE |0 \x7F\xAF |0 \x7F\xB0 |0 \x7F\xB1 |0 \x7F\xB2 |0 \x7F\xB3 |0 \x7F\xB4 |0 \x7F\xB5 |0 \x7F\xB6 |0 \x7F\xB7 |0 \x7F\xB8 |0 \x7F\xB9 |0 \x7F\xBA |0 \x7F\xBB |0 \x7F\xBC |0 \x7F\xBD |0 \x7F\xBE |0 \x7F\xBF |0 \x7F\xC0 |0 \x7F\xC1 |0 \x7F\xC2 |0 \x7F\xC3 |0 \x7F\xC4 |0 \x7F\xC5 |0 \x7F\xC6 |0 \x7F\xC7 |0 \x7F\xC8 |0 \x7F\xC9 |0 \x7F\xCA |0 \x7F\xCB |0 \x7F\xCC |0 \x7F\xCD |0 \x7F\xCE |0 \x7F\xCF |0 \x7F\xD0 |0 \x7F\xD1 |0 \x7F\xD2 |0 \x7F\xD3 |0 \x7F\xD4 |0 \x7F\xD5 |0 \x7F\xD6 |0 \x7F\xD7 |0 \x7F\xD8 |0 \x7F\xD9 |0 \x7F\xDA |0 \x7F\xDB |0 \x7F\xDC |0 \x7F\xDD |0 \x7F\xDE |0 \x7F\xDF |0 \x7F\xE0 |0 \x7F\xE1 |0 \x7F\xE2 |0 \x7F\xE3 |0 \x7F\xE4 |0 \x7F\xE5 |0 \x7F\xE6 |0 \x7F\xE7 |0 \x7F\xE8 |0 \x7F\xE9 |0 \x7F\xEA |0 \x7F\xEB |0 \x7F\xEC |0 \x7F\xED |0 \x7F\xEE |0 \x7F\xEF |0 \x7F\xF0 |0 \x7F\xF1 |0 \x7F\xF2 |0 \x7F\xF3 |0 \x7F\xF4 |0 \x7F\xF5 |0 \x7F\xF6 |0 \x7F\xF7 |0 \x7F\xF8 |0 \x7F\xF9 |0 \x7F\xFA |0 \x7F\xFB |0 \x7F\xFC |0 \x7F\xFD |0 \x80\x41 |0 \x80\x42 |0 \x80\x43 |0 \x80\x44 |0 \x80\x45 |0 \x80\x46 |0 \x80\x47 |0 \x80\x48 |0 \x80\x49 |0 \x80\x4A |0 \x80\x4B |0 \x80\x4C |0 \x80\x4D |0 \x80\x4E |0 \xFC\x90 |0 \xFC\x91 |0 \xFC\x92 |0 \xFC\x93 |0 \xFC\x94 |0 \xFC\x95 |0 \xFC\x96 |0 \xFC\x97 |0 \xFC\x98 |0 \xFC\x99 |0 \x46\x5C |0 \xCE\x57 |0 \xCE\x58 |0 \xCE\x59 |0 \xCE\x5F |0 \xCE\x67 |0 \xCE\x6C |0 \xCE\x6D |0 \xCE\x72 |0 \xCE\x73 |0 \xCE\x7C |0 \xCE\x85 |0 \xCE\x96 |0 \xCE\x97 |0 \xCE\xA6 |0 \x43\x5B |0 \x44\x5C |0 \xCE\x41 |0 \xCE\x42 |0 \xCE\x43 |0 \xCE\x44 |0 \xCE\x45 |0 \xCE\x46 |0 \xCE\x47 |0 \xCE\x48 |0 \xCE\x49 |0 \xCE\x4A |0 \xCE\x4B |0 \xCE\x4C |0 \xCE\x4D |0 \xCE\x4E |0 \xCE\x4F |0 \xCE\x50 |0 \xCE\x51 |0 \xCE\x52 |0 \xCE\x53 |0 \xCE\x54 |0 \xCE\x55 |0 \xF8\x47 |0 \xF8\x48 |0 \xF8\x49 |0 \xF8\x4A |0 \xF8\x6B |0 \xF8\x6C |0 \xF8\x6D |0 \xF8\x6E |0 \xF8\x7F |0 \xF8\x80 |0 \xF8\x81 |0 \xF8\x82 |0 \xF8\x83 |0 \xF8\x84 |0 \xF8\x85 |0 \xF8\x86 |0 \xF8\x9B |0 \xF8\x9C |0 \xF8\x9D |0 \xF8\x9E |0 \xF8\xC4 |0 \xF8\xC5 |0 \xF8\xC6 |0 \xF8\xC7 |0 \xF8\xC8 |0 \xF8\xC9 |0 \xF8\xCA |0 \xF8\xCB |0 \xF8\xCC |0 \xF8\xCD |0 \xF8\xCE |0 \xF8\xCF |0 \xF8\xD0 |0 \xF8\xD1 |0 \xF8\xD2 |0 \xF8\xD3 |0 \xF8\xD4 |0 \xF8\xD5 |0 \xF8\xD6 |0 \xF8\xD7 |0 \xF8\xD8 |0 \xF8\xD9 |0 \xF8\xDA |0 \xF8\xDB |0 \xF8\xDC |0 \xF8\xDD |0 \xF8\xDE |0 \xF8\xDF |0 \xF8\xE0 |0 \xF8\xE1 |0 \xF8\xE2 |0 \xF8\xE3 |0 \xF8\xE4 |0 \xF8\xE5 |0 \xF8\xE6 |0 \xF8\xE7 |0 \xF8\xE8 |0 \xF8\xE9 |0 \xF8\xEA |0 \xF8\xEB |0 \xF8\xEC |0 \xF8\xED |0 \xF8\xEE |0 \xF8\xEF |0 \xF8\xF0 |0 \xCD\xA8 |0 \x47\x51 |0 \x47\x52 |0 \x47\x53 |0 \x47\x41 |0 \x47\x42 |0 \x47\x4F |0 \x47\x50 |0 \x47\x43 |0 \x47\x44 |0 \x47\x4D |0 \x47\x4E |0 \x47\x47 |0 \x47\x48 |0 \x47\x45 |0 \x47\x46 |0 \x47\x49 |0 \x47\x4A |0 \x47\x4B |0 \x47\x4C |0 \xCD\xA9 |0 \xCD\xAA |0 \xCD\xAB |0 \xCD\xAC |0 \xCD\xAD |0 \xCD\xAE |0 \xCD\xAF |0 \xCD\xB0 |0 \xCD\xB1 |0 \xCD\xB2 |0 \xCD\xB3 |0 \xCD\xB4 |0 \xCD\xB5 |0 \xCD\xB6 |0 \xCD\xB7 |0 \xCD\xB8 |0 \xCD\xB9 |0 \xCD\xBA |0 \xCD\xBB |0 \xCD\xBC |0 \xCD\xBD |0 \xCD\xBE |0 \xCD\xBF |0 \xCD\xC0 |0 \xCD\xC1 |0 \xCD\xC2 |0 \xCD\xC3 |0 \xCD\xC4 |0 \xCD\xC5 |0 \xCD\xC6 |0 \xCD\xC7 |0 \xCD\xC8 |0 \xFB\xD0 |0 \xFB\xD1 |0 \xFB\xD2 |0 \xFB\xD3 |0 \xFB\xD4 |0 \xFB\xD5 |0 \xFB\xD6 |0 \xFB\xD7 |0 \xFB\xD8 |0 \xFB\xD9 |0 \xFB\xDC |0 \xFB\xDD |0 \xFB\xDE |0 \xFB\xDF |0 \xFB\xE4 |0 \xFB\xE5 |0 \xFB\xE6 |0 \xFB\xE7 |0 \xFB\xE8 |0 \xFB\xE9 |0 \xFB\xEA |0 \xFB\xEB |0 \xFB\xEC |0 \xFB\xED |0 \xFB\xEE |0 \xFB\xEF |0 \xFB\xF0 |0 \xFB\xF1 |0 \xFB\xF4 |0 \xFB\xF5 |0 \xFB\xF6 |0 \xFB\xF7 |0 \xFB\xF8 |0 \xFB\xF9 |0 \xFB\xFA |0 \xFB\xFB |0 \xFB\xFC |0 \xFB\xFD |0 \xFB\xFE |0 \xFC\x41 |0 \xFC\x52 |0 \xFC\x53 |0 \xFC\x54 |0 \xFC\x55 |0 \xFC\x56 |0 \xFC\x57 |0 \xFC\x58 |0 \xFC\x59 |0 \xFC\x5A |0 \xFC\x5B |0 \xFC\x5C |0 \xFC\x5D |0 \xFC\x5E |0 \xFC\x5F |0 \xFC\x60 |0 \xFC\x61 |0 \xFC\x62 |0 \xFC\x63 |0 \xFC\x64 |0 \xFC\x65 |0 \xFC\x66 |0 \xFC\x67 |0 \xFC\x68 |0 \xFC\x69 |0 \xFC\x6A |0 \xFC\x6B |0 \xFC\x6C |0 \xFC\x6D |0 \xFC\x6E |0 \xFC\x6F |0 \xFC\x70 |0 \xFC\x71 |0 \xFC\x72 |0 \xFC\x73 |0 \xFC\x74 |0 \xFC\x75 |0 \xFC\x76 |0 \xFC\x77 |0 \xFC\x78 |0 \xFC\x79 |0 \xFC\x7A |0 \xFC\x7B |0 \xFC\x7C |0 \xFC\x7D |0 \xFC\x84 |0 \xFC\x85 |0 \x42\x5A |0 \x42\x7F |0 \x42\x7B |0 \x42\xE0 |0 \x42\x6C |0 \x42\x50 |0 \x42\x7D |0 \x42\x4D |0 \x42\x5D |0 \x42\x5C |0 \x42\x4E |0 \x42\x6B |0 \x42\x60 |0 \x42\x4B |0 \x42\x61 |0 \x42\xF0 |0 \x42\xF1 |0 \x42\xF2 |0 \x42\xF3 |0 \x42\xF4 |0 \x42\xF5 |0 \x42\xF6 |0 \x42\xF7 |0 \x42\xF8 |0 \x42\xF9 |0 \x42\x7A |0 \x42\x5E |0 \x42\x4C |0 \x42\x7E |0 \x42\x6E |0 \x42\x6F |0 \x42\x7C |0 \x42\xC1 |0 \x42\xC2 |0 \x42\xC3 |0 \x42\xC4 |0 \x42\xC5 |0 \x42\xC6 |0 \x42\xC7 |0 \x42\xC8 |0 \x42\xC9 |0 \x42\xD1 |0 \x42\xD2 |0 \x42\xD3 |0 \x42\xD4 |0 \x42\xD5 |0 \x42\xD6 |0 \x42\xD7 |0 \x42\xD8 |0 \x42\xD9 |0 \x42\xE2 |0 \x42\xE3 |0 \x42\xE4 |0 \x42\xE5 |0 \x42\xE6 |0 \x42\xE7 |0 \x42\xE8 |0 \x42\xE9 |0 \x44\x44 |0 \x43\xE0 |0 \x44\x45 |0 \x44\x70 |0 \x42\x6D |0 \x42\x79 |0 \x42\x81 |0 \x42\x82 |0 \x42\x83 |0 \x42\x84 |0 \x42\x85 |0 \x42\x86 |0 \x42\x87 |0 \x42\x88 |0 \x42\x89 |0 \x42\x91 |0 \x42\x92 |0 \x42\x93 |0 \x42\x94 |0 \x42\x95 |0 \x42\x96 |0 \x42\x97 |0 \x42\x98 |0 \x42\x99 |0 \x42\xA2 |0 \x42\xA3 |0 \x42\xA4 |0 \x42\xA5 |0 \x42\xA6 |0 \x42\xA7 |0 \x42\xA8 |0 \x42\xA9 |0 \x42\xC0 |0 \x42\x4F |0 \x42\xD0 |0 \x43\xA1 |0 \x43\x4A |0 \x42\x4A |0 \x42\x5F |0 \x42\xA1 |0 \x42\x6A |0 \x42\x5B |0 END CHARMAP suite3270-4.1/Common/ibm-300_P110-1997.ucm000066400000000000000000007113641413735575200171700ustar00rootroot00000000000000# *************************************************************************** # * # * Copyright (C) 1995-2002, International Business Machines # * Corporation and others. All Rights Reserved. # * # *************************************************************************** # # File created by rptp2ucm (compiled on Dec 3 2002) # from source files 34B0012C.RPMAP110 and 012C34B0.TPMAP110 # "ibm-300_P110-1997" "AXXXX" 2 2 "DBCS" \xFE\xFE "ASCII" "ibm-300_VPUA" CHARMAP \x42\x6A |0 \x44\x6A |0 \x44\x60 |0 \x44\xED |0 \x44\x4B |0 \x44\x50 |0 \x43\x79 |0 \x44\x7A |0 \x44\x7B |0 \x41\x61 |0 \x41\x62 |0 \x41\x63 |0 \x41\x64 |0 \x41\x65 |0 \x41\x66 |0 \x41\x67 |0 \x41\x68 |0 \x41\x69 |0 \x41\x6A |0 \x41\x6B |0 \x41\x6C |0 \x41\x6D |0 \x41\x6E |0 \x41\x6F |0 \x41\x70 |0 \x41\x71 |0 \x41\x72 |0 \x41\x73 |0 \x41\x74 |0 \x41\x75 |0 \x41\x76 |0 \x41\x77 |0 \x41\x78 |0 \x41\x41 |0 \x41\x42 |0 \x41\x43 |0 \x41\x44 |0 \x41\x45 |0 \x41\x46 |0 \x41\x47 |0 \x41\x48 |0 \x41\x49 |0 \x41\x4A |0 \x41\x4B |0 \x41\x4C |0 \x41\x4D |0 \x41\x4E |0 \x41\x4F |0 \x41\x50 |0 \x41\x51 |0 \x41\x52 |0 \x41\x53 |0 \x41\x54 |0 \x41\x55 |0 \x41\x56 |0 \x41\x57 |0 \x41\x58 |0 \x41\xC6 |0 \x41\xC0 |0 \x41\xC1 |0 \x41\xC2 |0 \x41\xC3 |0 \x41\xC4 |0 \x41\xC5 |0 \x41\xC7 |0 \x41\xC8 |0 \x41\xC9 |0 \x41\xCA |0 \x41\xCB |0 \x41\xCC |0 \x41\xCD |0 \x41\xCE |0 \x41\xCF |0 \x41\xD0 |0 \x41\xD1 |0 \x41\xD2 |0 \x41\xD3 |0 \x41\xD4 |0 \x41\xD5 |0 \x41\xD6 |0 \x41\xD7 |0 \x41\xD8 |0 \x41\xD9 |0 \x41\xDA |0 \x41\xDB |0 \x41\xDC |0 \x41\xDD |0 \x41\xDE |0 \x41\xDF |0 \x41\xE0 |0 \x41\x80 |0 \x41\x81 |0 \x41\x82 |0 \x41\x83 |0 \x41\x84 |0 \x41\x85 |0 \x41\x87 |0 \x41\x88 |0 \x41\x89 |0 \x41\x8A |0 \x41\x8B |0 \x41\x8C |0 \x41\x8D |0 \x41\x8E |0 \x41\x8F |0 \x41\x90 |0 \x41\x91 |0 \x41\x92 |0 \x41\x93 |0 \x41\x94 |0 \x41\x95 |0 \x41\x96 |0 \x41\x97 |0 \x41\x98 |0 \x41\x99 |0 \x41\x9A |0 \x41\x9B |0 \x41\x9C |0 \x41\x9D |0 \x41\x9E |0 \x41\x9F |0 \x41\xA0 |0 \x41\x86 |0 \x44\x5A |0 \x44\x4A |0 \x44\x7C |0 \x44\x61 |0 \x44\x71 |0 \x44\x62 |0 \x44\x72 |0 \x43\x77 |0 \x43\x78 |0 \x44\x7E |0 \x44\x7F |0 \x43\x73 |0 \x44\xEE |0 \x44\xEF |0 \x44\x6B |0 \x44\x4E |0 \x44\x6E |0 \x44\x6F |0 \x43\x72 |0 \x41\xF1 |0 \x41\xF2 |0 \x41\xF3 |0 \x41\xF4 |0 \x41\xF5 |0 \x41\xF6 |0 \x41\xF7 |0 \x41\xF8 |0 \x41\xF9 |0 \x41\xFA |0 \x41\xB1 |0 \x41\xB2 |0 \x41\xB3 |0 \x41\xB4 |0 \x41\xB5 |0 \x41\xB6 |0 \x41\xB7 |0 \x41\xB8 |0 \x41\xB9 |0 \x41\xBA |0 \x44\xF1 |0 \x44\xF2 |0 \x44\xF0 |0 \x44\xF3 |0 \x43\x6E |0 \x43\x6F |0 \x43\x70 |0 \x43\x4E |0 \x43\x71 |0 \x43\x4F |0 \x43\x64 |0 \x43\x65 |0 \x42\x60 |0 \x43\x5F |0 \x43\x61 |0 \x44\x4D |0 \x43\x4B |0 \x43\x6C |0 \x43\x6D |0 \x43\x6B |0 \x43\x6A |0 \x43\x62 |0 \x43\x63 |0 \x44\x68 |0 \x44\x78 |0 \x43\x60 |0 \x43\x5C |0 \x44\x4C |0 \x43\x5B |0 \x44\x67 |0 \x44\x77 |0 \x43\x5D |0 \x43\x5E |0 \x43\x68 |0 \x43\x69 |0 \x43\x66 |0 \x43\x67 |0 \x43\x4C |0 \x43\x4D |0 \x43\x7C |0 \x43\xB7 |0 \x43\x7D |0 \x43\xB8 |0 \x43\x7E |0 \x43\xB9 |0 \x43\x7F |0 \x43\xE1 |0 \x43\xB1 |0 \x43\xE3 |0 \x43\xB0 |0 \x43\xE2 |0 \x43\xB2 |0 \x43\xEE |0 \x43\xE9 |0 \x43\xE4 |0 \x43\xB4 |0 \x43\xF0 |0 \x43\xEB |0 \x43\xE6 |0 \x43\xB3 |0 \x43\xEA |0 \x43\xEF |0 \x43\xE5 |0 \x43\xB5 |0 \x43\xEC |0 \x43\xF1 |0 \x43\xE7 |0 \x43\xB6 |0 \x43\xED |0 \x43\xF2 |0 \x43\xE8 |0 \x44\xEA |0 \x44\xE9 |0 \x44\xE3 |0 \x44\xE2 |0 \x44\xEC |0 \x44\xEB |0 \x44\xE8 |0 \x44\xE7 |0 \x44\xE0 |0 \x44\xE4 |0 \x44\xE1 |0 \x43\x7A |0 \x44\xE6 |0 \x44\xE5 |0 \x44\x79 |0 \x44\x69 |0 \x43\x76 |0 \x43\x75 |0 \x43\x74 |0 \x40\x40 |0 \x43\x44 |0 \x43\x41 |0 \x44\x5B |0 \x44\x5D |0 \x44\x5E |0 \x44\x5F |0 \x44\x64 |0 \x44\x74 |0 \x44\x65 |0 \x44\x75 |0 \x43\x42 |0 \x43\x43 |0 \x44\x42 |0 \x44\x43 |0 \x44\x66 |0 \x44\x76 |0 \x44\x6C |0 \x44\x7D |0 \x44\x63 |0 \x44\x73 |0 \x43\xA1 |0 \x44\x47 |0 \x44\x81 |0 \x44\x48 |0 \x44\x82 |0 \x44\x49 |0 \x44\x83 |0 \x44\x51 |0 \x44\x84 |0 \x44\x52 |0 \x44\x85 |0 \x44\x86 |0 \x44\xC0 |0 \x44\x87 |0 \x44\xC1 |0 \x44\x88 |0 \x44\xC2 |0 \x44\x89 |0 \x44\xC3 |0 \x44\x8A |0 \x44\xC4 |0 \x44\x8C |0 \x44\xC5 |0 \x44\x8D |0 \x44\xC6 |0 \x44\x8E |0 \x44\xC7 |0 \x44\x8F |0 \x44\xC8 |0 \x44\x90 |0 \x44\xC9 |0 \x44\x91 |0 \x44\xCA |0 \x44\x92 |0 \x44\xCB |0 \x44\x56 |0 \x44\x93 |0 \x44\xCC |0 \x44\x94 |0 \x44\xCD |0 \x44\x95 |0 \x44\xCE |0 \x44\x96 |0 \x44\x97 |0 \x44\x98 |0 \x44\x99 |0 \x44\x9A |0 \x44\x9D |0 \x44\xCF |0 \x44\xD5 |0 \x44\x9E |0 \x44\xD0 |0 \x44\xD6 |0 \x44\x9F |0 \x44\xD1 |0 \x44\xD7 |0 \x44\xA2 |0 \x44\xD2 |0 \x44\xD8 |0 \x44\xA3 |0 \x44\xD3 |0 \x44\xD9 |0 \x44\xA4 |0 \x44\xA5 |0 \x44\xA6 |0 \x44\xA7 |0 \x44\xA8 |0 \x44\x53 |0 \x44\xA9 |0 \x44\x54 |0 \x44\xAA |0 \x44\x55 |0 \x44\xAC |0 \x44\xAD |0 \x44\xAE |0 \x44\xAF |0 \x44\xBA |0 \x44\xBB |0 \x44\x57 |0 \x44\xBC |0 \x44\xDA |0 \x44\xDB |0 \x44\x46 |0 \x44\xBD |0 \x43\xBE |0 \x43\xBF |0 \x44\xDC |0 \x44\xDD |0 \x43\x47 |0 \x43\x81 |0 \x43\x48 |0 \x43\x82 |0 \x43\x49 |0 \x43\x83 |0 \x43\x51 |0 \x43\x84 |0 \x43\x52 |0 \x43\x85 |0 \x43\x86 |0 \x43\xC0 |0 \x43\x87 |0 \x43\xC1 |0 \x43\x88 |0 \x43\xC2 |0 \x43\x89 |0 \x43\xC3 |0 \x43\x8A |0 \x43\xC4 |0 \x43\x8C |0 \x43\xC5 |0 \x43\x8D |0 \x43\xC6 |0 \x43\x8E |0 \x43\xC7 |0 \x43\x8F |0 \x43\xC8 |0 \x43\x90 |0 \x43\xC9 |0 \x43\x91 |0 \x43\xCA |0 \x43\x92 |0 \x43\xCB |0 \x43\x56 |0 \x43\x93 |0 \x43\xCC |0 \x43\x94 |0 \x43\xCD |0 \x43\x95 |0 \x43\xCE |0 \x43\x96 |0 \x43\x97 |0 \x43\x98 |0 \x43\x99 |0 \x43\x9A |0 \x43\x9D |0 \x43\xCF |0 \x43\xD5 |0 \x43\x9E |0 \x43\xD0 |0 \x43\xD6 |0 \x43\x9F |0 \x43\xD1 |0 \x43\xD7 |0 \x43\xA2 |0 \x43\xD2 |0 \x43\xD8 |0 \x43\xA3 |0 \x43\xD3 |0 \x43\xD9 |0 \x43\xA4 |0 \x43\xA5 |0 \x43\xA6 |0 \x43\xA7 |0 \x43\xA8 |0 \x43\x53 |0 \x43\xA9 |0 \x43\x54 |0 \x43\xAA |0 \x43\x55 |0 \x43\xAC |0 \x43\xAD |0 \x43\xAE |0 \x43\xAF |0 \x43\xBA |0 \x43\xBB |0 \x43\x57 |0 \x43\xBC |0 \x43\xDA |0 \x43\xDB |0 \x43\x46 |0 \x43\xBD |0 \x43\xD4 |0 \x43\x59 |0 \x43\x5A |0 \x43\x45 |0 \x43\x58 |0 \x43\xDC |0 \x43\xDD |0 \x44\x6D |0 \x45\x41 |0 \x4B\xCE |0 \x45\x47 |0 \x45\x4D |0 \x49\xD3 |0 \x45\x43 |0 \x45\x5E |0 \x45\x5F |0 \x46\xAF |0 \x47\x89 |0 \x56\x42 |0 \x4D\xEC |0 \x4F\x97 |0 \x56\x43 |0 \x46\x9B |0 \x57\x75 |0 \x4D\x56 |0 \x50\xC5 |0 \x4F\x62 |0 \x48\x83 |0 \x48\x7C |0 \x56\x44 |0 \x56\x45 |0 \x45\x5C |0 \x56\x46 |0 \x4C\xB8 |0 \x56\x47 |0 \x46\x7A |0 \x48\xAB |0 \x47\x62 |0 \x54\xC8 |0 \x56\x48 |0 \x56\x49 |0 \x4B\x9F |0 \x45\x8A |0 \x45\xD8 |0 \x55\xA9 |0 \x54\xA5 |0 \x4F\x6C |0 \x62\xD0 |0 \x56\x4A |0 \x49\x47 |0 \x56\x4B |0 \x4B\xBD |0 \x45\x49 |0 \x4E\xB5 |0 \x47\x49 |0 \x56\x4C |0 \x4B\xBF |0 \x4A\x98 |0 \x49\x70 |0 \x47\xC0 |0 \x56\x4D |0 \x56\x4E |0 \x4B\xB1 |0 \x47\xC2 |0 \x48\x96 |0 \x56\x4F |0 \x45\xCE |0 \x45\x42 |0 \x56\x50 |0 \x49\x9D |0 \x4B\x74 |0 \x45\x45 |0 \x45\x6D |0 \x4B\xE4 |0 \x50\xE8 |0 \x55\xDC |0 \x48\x67 |0 \x56\x52 |0 \x51\x67 |0 \x56\x53 |0 \x4C\xCE |0 \x56\x54 |0 \x47\x8E |0 \x4F\x7F |0 \x4F\xFA |0 \x4B\xAC |0 \x4B\x73 |0 \x45\x75 |0 \x4E\x52 |0 \x49\x9C |0 \x56\x55 |0 \x56\x56 |0 \x56\x57 |0 \x45\x93 |0 \x53\xD9 |0 \x47\x76 |0 \x56\x5C |0 \x56\x5A |0 \x56\x5B |0 \x50\x85 |0 \x45\xE0 |0 \x48\x4B |0 \x56\x59 |0 \x56\x58 |0 \x4B\xE5 |0 \x54\x65 |0 \x48\xB5 |0 \x47\x55 |0 \x56\x5E |0 \x47\x5D |0 \x48\xA2 |0 \x44\x5C |0 \x56\x5F |0 \x56\x61 |0 \x56\x5D |0 \x45\x9A |0 \x49\xC3 |0 \x46\xF6 |0 \x56\x60 |0 \x4D\x71 |0 \x4D\xED |0 \x48\x69 |0 \x48\xB2 |0 \x53\x41 |0 \x4A\x55 |0 \x56\x62 |0 \x56\x65 |0 \x47\xD2 |0 \x56\x66 |0 \x56\x63 |0 \x45\xB2 |0 \x4D\x99 |0 \x4E\x9F |0 \x4A\x83 |0 \x50\xF6 |0 \x4A\x81 |0 \x45\xBD |0 \x56\x64 |0 \x48\xD9 |0 \x49\xA6 |0 \x56\x68 |0 \x49\xC9 |0 \x54\x4A |0 \x46\xF4 |0 \x56\x6A |0 \x50\x8A |0 \x4B\xBC |0 \x54\x61 |0 \x4E\xDF |0 \x4E\xFE |0 \x56\x6C |0 \x47\xC8 |0 \x48\xA4 |0 \x46\xE0 |0 \x45\x76 |0 \x4C\xE6 |0 \x46\x96 |0 \x47\x70 |0 \x56\x6E |0 \x56\x6B |0 \x49\xC1 |0 \x56\x67 |0 \x56\x6F |0 \x45\x94 |0 \x56\x69 |0 \x56\x6D |0 \x56\x79 |0 \x56\x7C |0 \x56\x7A |0 \x48\x76 |0 \x4B\x94 |0 \x51\xE2 |0 \x56\x77 |0 \x54\x62 |0 \x48\xB6 |0 \x4F\x98 |0 \x56\x7D |0 \x56\x72 |0 \x56\x71 |0 \x4A\x46 |0 \x4F\xC2 |0 \x56\x73 |0 \x4F\x8D |0 \x56\x70 |0 \x56\x7B |0 \x56\x7E |0 \x56\x76 |0 \x56\x74 |0 \x48\xBC |0 \x4A\x9E |0 \x52\xEC |0 \x47\x5A |0 \x56\x78 |0 \x56\x75 |0 \x53\xB9 |0 \x53\xE3 |0 \x4F\x8C |0 \x55\x7C |0 \x4B\x4C |0 \x48\x51 |0 \x4A\x6A |0 \x54\xC7 |0 \x52\x94 |0 \x46\x60 |0 \x56\x86 |0 \x56\x80 |0 \x56\x85 |0 \x56\x83 |0 \x56\x7F |0 \x4E\x97 |0 \x56\x81 |0 \x56\x84 |0 \x56\x82 |0 \x45\xAA |0 \x53\xC4 |0 \x52\xEC |1 \x45\xA5 |0 \x4B\x4A |0 \x56\x87 |0 \x56\x88 |0 \x46\xDE |0 \x56\x96 |0 \x4C\xE1 |0 \x4D\xB1 |0 \x51\xF8 |0 \x50\xF9 |0 \x4E\x67 |0 \x56\x95 |0 \x56\x94 |0 \x56\x8F |0 \x56\x99 |0 \x45\xD6 |0 \x49\xFA |0 \x4A\xC4 |0 \x56\xA1 |0 \x56\x97 |0 \x4B\x6A |0 \x56\x8C |0 \x53\x43 |0 \x4C\xAE |0 \x56\x89 |0 \x56\x98 |0 \x4A\xD0 |0 \x56\x90 |0 \x56\x91 |0 \x55\x69 |0 \x48\x7D |0 \x56\x8E |0 \x52\xF1 |0 \x56\x8B |0 \x56\x92 |0 \x56\x8D |0 \x4D\x51 |0 \x56\x93 |0 \x4F\xF9 |0 \x4F\x63 |0 \x52\xFA |0 \x56\x8A |0 \x56\xA4 |0 \x56\x9A |0 \x56\xA2 |0 \x56\x9B |0 \x56\x9E |0 \x4D\xFB |0 \x50\x49 |0 \x56\x9D |0 \x56\x9C |0 \x56\xA0 |0 \x56\x9F |0 \x4E\x70 |0 \x46\x81 |0 \x56\xA5 |0 \x56\xA3 |0 \x54\xD2 |0 \x49\x43 |0 \x4F\x95 |0 \x50\xC3 |0 \x56\xA6 |0 \x50\x59 |0 \x56\xA7 |0 \x56\xAA |0 \x4E\xE7 |0 \x4F\xC3 |0 \x56\xA8 |0 \x50\x9C |0 \x46\xAC |0 \x56\xA9 |0 \x4C\x43 |0 \x54\xDA |0 \x56\xAD |0 \x56\xB0 |0 \x56\xAB |0 \x4B\x58 |0 \x4C\x5B |0 \x4A\x43 |0 \x56\xB1 |0 \x4F\xC9 |0 \x56\xAE |0 \x56\xAF |0 \x48\xEC |0 \x4B\xBA |0 \x55\xAD |0 \x4A\xBB |0 \x52\xD4 |0 \x56\xB5 |0 \x4D\x82 |0 \x56\xB3 |0 \x56\xB7 |0 \x56\xB4 |0 \x4E\x84 |0 \x56\xB6 |0 \x56\xB8 |0 \x56\xB2 |0 \x56\xBA |0 \x56\xB9 |0 \x55\x78 |0 \x49\xCA |0 \x56\xBC |0 \x56\xBD |0 \x45\x4E |0 \x56\xBB |0 \x54\x6F |0 \x56\xC0 |0 \x56\xBF |0 \x56\xC1 |0 \x52\x90 |0 \x56\xBE |0 \x4A\xA2 |0 \x56\xC2 |0 \x47\xDA |0 \x54\xBD |0 \x56\xC4 |0 \x56\xC3 |0 \x56\xC6 |0 \x56\xC5 |0 \x56\xC7 |0 \x56\xC8 |0 \x4C\x91 |0 \x46\x95 |0 \x4B\xE8 |0 \x48\xC9 |0 \x4D\xF3 |0 \x55\x5A |0 \x47\xA2 |0 \x45\x9E |0 \x56\xC9 |0 \x47\x9E |0 \x56\xCA |0 \x4B\x56 |0 \x50\x50 |0 \x46\x9F |0 \x56\xCB |0 \x56\xCC |0 \x49\x4B |0 \x51\xBE |0 \x56\xCD |0 \x56\xCE |0 \x46\x65 |0 \x46\xB1 |0 \x56\xCF |0 \x56\xD0 |0 \x45\x48 |0 \x46\xBB |0 \x45\x46 |0 \x56\xD1 |0 \x47\xB3 |0 \x46\x49 |0 \x4F\x67 |0 \x47\xAF |0 \x47\xC9 |0 \x48\xF4 |0 \x56\xD2 |0 \x56\xD3 |0 \x45\x8E |0 \x46\x45 |0 \x56\xD6 |0 \x4E\xA1 |0 \x56\xD5 |0 \x48\xEB |0 \x56\xD7 |0 \x61\x9D |0 \x56\xD8 |0 \x4F\x8F |0 \x56\xD9 |0 \x56\xDA |0 \x56\xDB |0 \x52\x7E |0 \x48\xC4 |0 \x56\xDC |0 \x4E\x7B |0 \x56\xDF |0 \x56\xDD |0 \x54\x67 |0 \x56\xDE |0 \x48\x78 |0 \x56\xE0 |0 \x56\xE1 |0 \x56\xE2 |0 \x4B\xDE |0 \x56\xE6 |0 \x56\xE4 |0 \x56\xE5 |0 \x56\xE3 |0 \x50\xC9 |0 \x56\xE7 |0 \x51\x46 |0 \x48\xFC |0 \x56\xE9 |0 \x56\xE8 |0 \x52\xDC |0 \x56\xEA |0 \x4F\x80 |0 \x56\xEB |0 \x55\xF9 |0 \x53\x44 |0 \x4B\xE6 |0 \x57\x77 |0 \x56\xEC |0 \x68\x84 |0 \x4E\xD9 |0 \x56\xED |0 \x4D\xE1 |0 \x48\xE6 |0 \x55\x8A |0 \x56\xEE |0 \x54\x9E |0 \x56\xEF |0 \x56\xF0 |0 \x56\xF1 |0 \x51\xAC |0 \x56\xF2 |0 \x51\xEC |0 \x50\xCF |0 \x50\xE6 |0 \x45\x9B |0 \x4B\xB6 |0 \x56\xF3 |0 \x4C\x50 |0 \x4F\x44 |0 \x56\xF4 |0 \x45\xB4 |0 \x47\x65 |0 \x4B\x9B |0 \x4C\xD7 |0 \x56\xF5 |0 \x54\xE3 |0 \x4C\x52 |0 \x56\xF6 |0 \x56\xF7 |0 \x4B\xB4 |0 \x47\x4B |0 \x49\x5C |0 \x46\xDD |0 \x56\xF8 |0 \x45\xBC |0 \x56\xF9 |0 \x56\xFA |0 \x4C\xDD |0 \x56\xFB |0 \x46\xC4 |0 \x48\xCF |0 \x4B\x6B |0 \x56\xFC |0 \x4B\xC0 |0 \x4B\xF5 |0 \x53\x79 |0 \x56\xFD |0 \x47\x4D |0 \x4A\x90 |0 \x56\xFE |0 \x51\xAE |0 \x45\xAF |0 \x57\x41 |0 \x57\x43 |0 \x51\x99 |0 \x49\xC7 |0 \x54\x81 |1 \x57\x42 |0 \x4C\xD3 |0 \x47\x66 |0 \x54\x81 |0 \x57\x48 |0 \x57\x45 |0 \x4B\x4E |0 \x4D\x85 |0 \x57\x44 |0 \x47\xD6 |0 \x57\x46 |0 \x57\x47 |0 \x4B\xE1 |0 \x57\x4A |0 \x57\x49 |0 \x55\xD6 |0 \x49\xF0 |0 \x57\x4C |0 \x51\x85 |0 \x57\x4B |0 \x57\x4E |0 \x57\x4D |0 \x55\x80 |0 \x45\xF7 |0 \x57\x4F |0 \x48\x70 |0 \x45\x9F |0 \x4E\x68 |0 \x57\x50 |0 \x46\x71 |0 \x4A\x64 |0 \x54\xC6 |0 \x57\x51 |0 \x57\x52 |0 \x5F\xAA |0 \x4D\x92 |0 \x48\xA9 |0 \x57\x54 |0 \x49\x78 |0 \x57\x53 |0 \x55\x6A |0 \x57\x56 |0 \x57\x55 |0 \x54\xB1 |0 \x4E\xEF |0 \x46\x9C |0 \x48\xCE |0 \x57\x57 |0 \x53\xD6 |0 \x45\xE4 |0 \x53\x92 |0 \x4B\x9A |0 \x46\xED |0 \x57\x58 |0 \x45\xB5 |0 \x57\x59 |0 \x4A\xE1 |0 \x57\x5C |0 \x47\xEE |0 \x57\x5A |0 \x49\x9F |0 \x57\x5B |0 \x4C\x7E |0 \x49\x7A |0 \x57\x5D |0 \x57\x5E |0 \x57\x5F |0 \x57\x60 |0 \x54\x70 |0 \x51\xE9 |0 \x52\x97 |0 \x57\x61 |0 \x4F\x5B |0 \x4E\xCB |0 \x4A\xA8 |0 \x57\x62 |0 \x57\x63 |0 \x57\x64 |0 \x57\x66 |0 \x57\x68 |0 \x57\x67 |0 \x57\x69 |0 \x45\x90 |0 \x45\x5A |0 \x54\x57 |0 \x57\x6A |0 \x51\xB7 |0 \x4E\x6B |0 \x4D\x4D |0 \x57\x6C |0 \x57\x6B |0 \x55\xED |0 \x57\x6D |0 \x57\x6E |0 \x57\x6F |0 \x57\x70 |0 \x4F\xD1 |0 \x45\x54 |0 \x4A\x87 |0 \x50\xF1 |0 \x57\x71 |0 \x45\x4A |0 \x45\x4C |0 \x57\x72 |0 \x57\x73 |0 \x4E\x47 |0 \x45\xDF |0 \x57\x74 |0 \x47\x90 |0 \x57\x76 |0 \x53\xAD |0 \x4A\xF2 |0 \x49\x96 |0 \x47\xD7 |0 \x45\x59 |0 \x48\xE3 |0 \x45\xF6 |0 \x51\xC0 |0 \x57\x79 |0 \x49\xEE |0 \x53\xDB |0 \x57\x7A |0 \x57\x7B |0 \x4C\x82 |0 \x47\x99 |0 \x4B\x91 |0 \x57\x7C |0 \x4B\x6D |0 \x4A\xA4 |0 \x4C\xF5 |0 \x57\x7D |0 \x4E\x79 |0 \x57\x7E |0 \x53\xE2 |0 \x57\x7F |0 \x53\x52 |0 \x57\x80 |0 \x57\x81 |0 \x4F\x55 |0 \x49\x42 |0 \x45\x74 |0 \x57\x82 |0 \x57\x84 |0 \x57\x83 |0 \x51\x78 |0 \x53\x67 |0 \x53\xB7 |0 \x57\x85 |0 \x57\x86 |0 \x57\x87 |0 \x4C\x8E |0 \x57\x88 |0 \x4A\xCA |0 \x48\xD2 |0 \x57\x89 |0 \x48\xF5 |0 \x50\xA5 |0 \x48\x5C |0 \x46\xD4 |0 \x4B\x71 |0 \x47\xF9 |0 \x47\x91 |0 \x4F\xA5 |0 \x46\xA6 |0 \x48\x4C |0 \x50\xF5 |0 \x55\xB2 |0 \x57\x8B |0 \x57\x8C |0 \x51\x94 |0 \x53\xF5 |0 \x45\x88 |0 \x45\xD4 |0 \x4C\x8B |0 \x57\x91 |0 \x4F\x71 |0 \x4E\x41 |0 \x4D\xD5 |0 \x4F\x86 |0 \x57\x92 |0 \x57\x90 |0 \x47\xC6 |0 \x47\x78 |0 \x50\x42 |0 \x47\xD9 |0 \x48\x5A |0 \x4F\x59 |0 \x48\xE2 |0 \x45\xF0 |0 \x57\x93 |0 \x57\x94 |0 \x55\xEA |0 \x47\xBA |0 \x45\xA0 |0 \x45\x7E |0 \x53\xD3 |0 \x55\xBC |0 \x46\x6D |0 \x45\xF3 |0 \x51\xAF |0 \x50\xC6 |0 \x4E\xB2 |0 \x46\xA5 |0 \x47\xCF |0 \x57\x9D |0 \x50\x7A |0 \x53\xE1 |0 \x4C\x4F |0 \x57\x9C |0 \x49\xCB |0 \x57\x97 |0 \x57\x98 |0 \x57\x9A |0 \x57\x9B |0 \x4B\x98 |0 \x49\xC4 |0 \x53\xE5 |0 \x57\x99 |0 \x57\x95 |0 \x47\xF6 |0 \x57\x96 |0 \x4B\x50 |0 \x50\x73 |0 \x4F\x56 |0 \x4A\xEE |0 \x49\x54 |0 \x57\x9E |0 \x50\xB0 |0 \x57\xA2 |0 \x48\xA1 |0 \x54\x8D |0 \x57\xA5 |0 \x57\xA3 |0 \x47\x7F |0 \x57\xA0 |0 \x57\xAA |0 \x57\xA4 |0 \x57\xA7 |0 \x4A\xF6 |0 \x49\xB0 |0 \x57\xA8 |0 \x57\xAB |0 \x57\xAD |0 \x57\xAE |0 \x4F\x50 |0 \x45\x7A |0 \x57\xA1 |0 \x57\x9F |0 \x57\xAC |0 \x57\xA6 |0 \x57\xA9 |0 \x57\xB2 |0 \x57\xBC |0 \x57\xB4 |0 \x57\xB9 |0 \x57\xBD |0 \x57\xBA |0 \x57\xB5 |0 \x57\xB1 |0 \x4C\xDE |0 \x53\xE9 |0 \x57\xB3 |0 \x57\xB0 |0 \x52\xB1 |0 \x57\xBE |0 \x4E\xF9 |0 \x45\xD0 |0 \x57\xBB |0 \x57\xB6 |0 \x57\xAF |0 \x57\xB8 |0 \x4A\x6B |0 \x57\xB7 |0 \x46\xCB |0 \x57\xC7 |0 \x57\xBF |0 \x57\xC1 |0 \x55\x68 |0 \x55\xF0 |0 \x57\xC6 |0 \x57\xC5 |0 \x47\x47 |0 \x54\x7C |0 \x57\xC4 |0 \x57\xC0 |0 \x4C\xDB |0 \x51\xB8 |0 \x4F\x76 |0 \x57\xC2 |0 \x4B\xAB |0 \x57\xC3 |0 \x54\xD4 |0 \x57\xCC |0 \x4B\xE0 |0 \x4D\x43 |0 \x57\xD2 |0 \x57\xD1 |0 \x57\xC8 |0 \x54\x78 |0 \x57\xC9 |0 \x53\x83 |0 \x57\xCE |0 \x46\xBE |0 \x57\xCB |0 \x46\xE4 |0 \x47\xE4 |0 \x57\xCF |0 \x57\xD0 |0 \x57\xCD |0 \x57\xD3 |0 \x54\xD4 |1 \x57\xCA |0 \x57\xD8 |0 \x57\xDD |0 \x57\xD9 |0 \x57\xD5 |0 \x57\xDF |0 \x46\xB3 |0 \x57\xDE |0 \x57\xE1 |0 \x52\x53 |0 \x57\xD6 |0 \x55\x58 |0 \x57\xDA |0 \x57\xD4 |0 \x52\xB5 |0 \x45\xD1 |0 \x54\x75 |0 \x57\xDB |0 \x57\xD7 |0 \x4F\xD3 |0 \x57\xE2 |0 \x57\xE0 |0 \x51\x68 |0 \x4D\x6D |0 \x4C\x5F |0 \x57\xDC |0 \x4E\xB9 |0 \x48\xD3 |0 \x57\xE5 |0 \x57\xE3 |0 \x58\x58 |0 \x57\xE8 |0 \x52\xA2 |0 \x57\xE6 |0 \x57\xE4 |0 \x4B\x5E |0 \x57\xE7 |0 \x57\xEB |0 \x57\xE9 |0 \x57\xEE |0 \x57\xED |0 \x50\x63 |0 \x47\x7E |0 \x57\xEA |0 \x57\xEC |0 \x54\xEC |0 \x50\xF3 |0 \x57\xEF |0 \x52\xCA |0 \x57\xF8 |0 \x50\xCA |0 \x57\xF3 |0 \x54\x7F |0 \x57\xF2 |0 \x57\xF4 |0 \x52\x9B |0 \x50\x62 |0 \x57\xF0 |0 \x57\xF1 |0 \x54\x7D |0 \x57\xF6 |0 \x45\xFC |0 \x57\xFA |0 \x57\xF5 |0 \x57\xF9 |0 \x4E\x6D |0 \x55\xF1 |0 \x55\x82 |0 \x57\xFE |0 \x57\xF7 |0 \x55\xD8 |0 \x58\x41 |0 \x57\xFD |0 \x57\xFC |0 \x54\x7D |1 \x58\x42 |0 \x51\x90 |0 \x58\x43 |0 \x58\x44 |0 \x58\x46 |0 \x58\x45 |0 \x58\x49 |0 \x58\x4C |0 \x58\x4A |0 \x58\x48 |0 \x58\x4B |0 \x58\x47 |0 \x51\x90 |1 \x58\x4D |0 \x58\x4F |0 \x58\x4E |0 \x58\x50 |0 \x56\xD4 |0 \x50\x65 |0 \x45\x44 |0 \x46\xA9 |0 \x4A\x49 |0 \x47\xF0 |0 \x58\x51 |0 \x4B\x44 |0 \x4A\xFA |0 \x47\xC1 |0 \x58\x52 |0 \x4A\x94 |0 \x45\x8F |0 \x58\x53 |0 \x52\x66 |0 \x53\xCF |0 \x58\x54 |0 \x58\x56 |0 \x58\x55 |0 \x51\xBD |0 \x58\x57 |0 \x4F\x49 |0 \x47\xE1 |0 \x54\xE7 |0 \x58\x5A |0 \x58\x59 |0 \x58\x5B |0 \x46\x84 |0 \x58\x5C |0 \x47\x82 |0 \x47\xCD |0 \x49\xE6 |0 \x45\xC2 |0 \x51\xD1 |0 \x58\x5D |0 \x58\x5F |0 \x58\x61 |0 \x45\xEC |0 \x49\xAE |0 \x4C\x55 |0 \x58\x5E |0 \x58\x62 |0 \x4E\x8D |0 \x4E\xF3 |0 \x58\x60 |0 \x58\x65 |0 \x53\xA6 |0 \x58\x63 |0 \x51\xC4 |0 \x53\x98 |0 \x49\x49 |0 \x58\x66 |0 \x4B\xC9 |0 \x58\x64 |0 \x58\x67 |0 \x46\xE6 |0 \x58\x68 |0 \x58\x69 |0 \x54\x66 |0 \x47\xCE |0 \x58\x6A |0 \x58\x6D |0 \x58\x6C |0 \x53\xCD |0 \x58\x6B |0 \x58\x71 |0 \x58\x6E |0 \x58\x6F |0 \x58\x73 |0 \x58\x70 |0 \x4E\xAC |0 \x45\xDB |0 \x58\x74 |0 \x58\x75 |0 \x58\x72 |0 \x58\x76 |0 \x4D\xF4 |0 \x48\xE9 |0 \x51\x7E |0 \x58\x79 |0 \x4F\x48 |0 \x4D\x57 |0 \x4D\xAC |0 \x46\xF1 |0 \x46\xA3 |0 \x46\x9D |0 \x49\x7F |0 \x4A\xE7 |0 \x53\x71 |0 \x58\x78 |0 \x58\x7A |0 \x53\xB0 |0 \x58\x7B |0 \x53\xA7 |0 \x58\x7C |0 \x4B\x61 |0 \x4F\xAC |0 \x4E\x53 |0 \x50\xA4 |0 \x49\xB8 |0 \x45\xD9 |0 \x54\xF6 |0 \x4A\x7C |0 \x58\x80 |0 \x53\x9F |0 \x4B\xEB |0 \x50\x53 |0 \x58\x7D |0 \x4E\xC6 |0 \x58\x81 |0 \x4C\xCB |0 \x48\x6A |0 \x52\xF8 |0 \x4F\x6F |0 \x46\x57 |0 \x53\xC1 |0 \x4F\x5E |1 \x58\x7E |0 \x47\x43 |0 \x4F\x5E |0 \x58\x83 |0 \x58\x86 |0 \x4D\x89 |0 \x58\x84 |0 \x52\x79 |0 \x4A\x95 |0 \x58\x85 |0 \x4E\xBE |0 \x46\x4D |0 \x51\x50 |0 \x58\x8A |0 \x58\x87 |0 \x4A\xFC |0 \x58\x88 |0 \x58\x8B |0 \x58\x8C |0 \x52\x89 |0 \x58\x89 |0 \x58\x8D |0 \x58\x8E |0 \x55\x52 |0 \x54\x88 |0 \x4B\x95 |0 \x58\x8F |0 \x4E\x8E |0 \x4E\xC8 |0 \x51\x96 |0 \x58\x91 |0 \x58\x90 |0 \x55\xB9 |0 \x58\x92 |0 \x58\x94 |0 \x58\x93 |0 \x58\x96 |0 \x58\x95 |0 \x58\x97 |0 \x58\x98 |0 \x58\x99 |0 \x46\x7D |0 \x51\x4F |0 \x4C\x9F |0 \x58\x9A |0 \x49\x6C |0 \x4E\xB0 |0 \x47\x75 |0 \x58\x9B |0 \x58\x9C |0 \x50\x77 |0 \x58\x9D |0 \x58\x9E |0 \x52\x75 |0 \x58\x9F |0 \x47\x6F |0 \x58\xA0 |0 \x58\xA1 |0 \x49\x7E |0 \x58\xA2 |0 \x4A\xC3 |0 \x46\x94 |0 \x52\xC8 |0 \x54\xDD |0 \x45\xFE |0 \x58\xA3 |0 \x48\xC8 |0 \x4B\x8B |0 \x58\xA5 |0 \x45\x5B |0 \x46\x8A |0 \x45\xAB |0 \x45\x73 |0 \x58\xA6 |0 \x58\xA7 |0 \x47\x92 |0 \x49\x41 |0 \x58\xA8 |0 \x51\x47 |0 \x58\xA9 |0 \x58\xAA |0 \x52\xF2 |0 \x4D\x69 |0 \x45\xE6 |0 \x4D\xB2 |0 \x51\x8F |0 \x4C\x53 |0 \x58\xAC |0 \x4C\x64 |0 \x58\xAD |0 \x52\x84 |0 \x58\xAB |0 \x55\x83 |0 \x58\xAF |0 \x58\xAE |0 \x58\xB0 |0 \x58\xB1 |0 \x58\xB4 |0 \x58\xB3 |0 \x58\xB2 |0 \x46\xE5 |0 \x58\xB5 |0 \x4E\xCA |0 \x58\xB7 |0 \x4E\xBB |0 \x58\xB6 |0 \x4E\xDD |0 \x46\x99 |0 \x4D\x90 |0 \x58\xB8 |0 \x46\x9E |0 \x58\xB9 |0 \x4B\xF8 |0 \x51\xA2 |0 \x55\x4D |0 \x50\x43 |0 \x58\xBA |0 \x53\x95 |0 \x53\xD1 |0 \x4A\x66 |0 \x58\xBB |0 \x58\xBC |0 \x58\xBD |0 \x58\xBE |0 \x4D\x9E |0 \x50\xEC |0 \x53\x7F |0 \x58\xBF |0 \x4B\xDC |0 \x58\xC0 |0 \x49\xA3 |0 \x53\xAF |0 \x58\xC1 |0 \x4C\xC1 |0 \x49\x90 |0 \x54\x9C |0 \x53\xF2 |0 \x4F\xF1 |0 \x48\x4F |0 \x58\xC3 |0 \x58\xC4 |0 \x51\x84 |0 \x52\x55 |0 \x55\xDE |0 \x58\xC2 |0 \x55\x8C |0 \x4A\xB3 |0 \x51\x79 |0 \x52\xB9 |0 \x4B\x42 |0 \x4C\x65 |0 \x55\x7A |0 \x58\xCA |0 \x58\xC7 |0 \x4B\x54 |0 \x58\xC9 |0 \x58\xC8 |0 \x58\xC6 |0 \x52\x4C |0 \x58\xC5 |0 \x54\x9F |0 \x50\xB5 |0 \x58\xCE |0 \x58\xCF |0 \x54\x98 |0 \x58\xCB |0 \x50\xF8 |0 \x4E\xCC |0 \x58\xCD |0 \x4A\x77 |0 \x58\xD0 |0 \x49\x6F |0 \x58\xD1 |0 \x58\xCC |0 \x54\x54 |0 \x4D\x80 |0 \x58\xD2 |0 \x48\x55 |0 \x58\xD3 |0 \x58\xD8 |0 \x58\xD4 |0 \x4E\x89 |0 \x58\xD7 |0 \x53\xE0 |0 \x58\xD6 |0 \x4E\xC3 |0 \x58\xD5 |0 \x58\xDD |0 \x58\xDA |0 \x55\x67 |0 \x58\xD9 |0 \x58\xDB |0 \x58\xDC |0 \x58\xDE |0 \x58\xDF |0 \x4F\x8B |0 \x58\xE1 |0 \x58\xE0 |0 \x58\xE2 |0 \x4D\xE4 |0 \x58\xE4 |0 \x52\xEA |0 \x55\xE8 |0 \x58\xE3 |0 \x58\xE5 |0 \x58\xE6 |0 \x58\xE9 |0 \x58\xE7 |0 \x58\xE8 |0 \x45\x64 |0 \x58\xEA |0 \x4B\xD9 |0 \x58\xEB |0 \x58\xEC |0 \x48\xF2 |0 \x4A\x41 |0 \x52\x58 |0 \x58\xEE |0 \x4F\xF2 |0 \x45\xF4 |0 \x4F\x83 |0 \x4A\xEC |0 \x4E\xAF |0 \x58\xEF |0 \x45\xBE |0 \x58\xF0 |0 \x4C\x5E |0 \x58\xF1 |0 \x59\x5B |0 \x58\xF2 |0 \x58\xF3 |0 \x58\xF4 |0 \x58\xF5 |0 \x58\xF6 |0 \x58\xF7 |0 \x48\x6F |0 \x46\xD5 |0 \x46\xF0 |0 \x45\xA8 |0 \x52\x4D |0 \x48\xC5 |0 \x4C\x75 |0 \x46\xC8 |0 \x51\x5C |0 \x47\xDD |0 \x49\xA2 |0 \x4D\x64 |0 \x45\xE7 |0 \x50\xAB |0 \x4D\x8B |0 \x49\x4D |0 \x45\xED |0 \x4A\xDE |0 \x49\x8F |0 \x47\xB8 |0 \x4F\x7A |0 \x58\xF8 |0 \x45\x92 |0 \x4E\xD4 |0 \x49\x68 |0 \x50\x78 |0 \x52\xEF |0 \x46\x86 |0 \x58\xF9 |0 \x48\x89 |0 \x48\x82 |0 \x58\xFC |0 \x4F\xE9 |0 \x58\xFA |0 \x49\xDF |0 \x4A\x84 |0 \x4A\x56 |0 \x58\xFB |0 \x58\xFD |0 \x45\xAC |0 \x59\x41 |0 \x4B\x81 |0 \x55\xF4 |0 \x52\x44 |0 \x59\x42 |0 \x47\xF8 |0 \x4B\x59 |0 \x59\x43 |0 \x4B\x93 |0 \x52\xB8 |0 \x59\x46 |0 \x59\x45 |0 \x59\x47 |0 \x51\xFC |0 \x4F\xA9 |0 \x5C\x7E |0 \x49\x87 |0 \x59\x48 |0 \x59\x44 |0 \x4C\x7A |0 \x59\x49 |0 \x59\x4A |0 \x55\x56 |0 \x59\x4B |0 \x4B\x60 |0 \x46\xA0 |0 \x46\x56 |0 \x46\xB2 |0 \x4D\x76 |0 \x49\xFB |0 \x49\x8A |0 \x59\x4C |0 \x49\x59 |0 \x59\x4D |0 \x59\x4E |0 \x51\x89 |0 \x4C\xEF |0 \x4D\x5F |0 \x59\x4F |0 \x48\xAE |0 \x45\x5D |0 \x48\x4A |0 \x59\x50 |0 \x53\xC0 |0 \x48\x71 |0 \x59\x51 |0 \x59\x52 |0 \x59\x53 |0 \x53\xAE |0 \x59\x54 |0 \x68\x80 |0 \x4B\xEE |0 \x59\x55 |0 \x51\x5D |0 \x4C\x6B |0 \x49\xCE |0 \x4A\x86 |0 \x4F\xB9 |0 \x45\xC8 |0 \x4C\xC6 |0 \x48\x8B |0 \x59\x56 |0 \x48\x5E |0 \x59\x57 |0 \x4D\x94 |0 \x4D\xA7 |0 \x45\xE9 |0 \x55\xBA |0 \x59\x58 |0 \x54\x43 |0 \x59\x5A |0 \x54\xB2 |0 \x59\x59 |0 \x48\xDD |0 \x54\x43 |1 \x47\x6D |0 \x53\xFB |0 \x55\xC0 |0 \x55\xC0 |1 \x4A\x8E |0 \x4C\xA2 |0 \x59\x5C |0 \x59\x5D |0 \x4F\xDD |0 \x45\x65 |0 \x59\x5E |0 \x59\x5F |0 \x59\x60 |0 \x47\x4A |0 \x52\x5A |0 \x59\x61 |0 \x45\x72 |0 \x59\x67 |0 \x54\xB9 |0 \x45\xBF |0 \x59\x63 |0 \x50\xD5 |0 \x52\x62 |0 \x4D\x46 |0 \x59\x65 |0 \x59\x66 |0 \x47\x48 |0 \x59\x68 |0 \x59\x64 |0 \x59\x6A |0 \x59\x62 |0 \x59\x69 |0 \x59\x6B |0 \x59\x6C |0 \x4F\x96 |0 \x51\xB3 |0 \x4F\x9D |0 \x59\x6D |0 \x59\x72 |0 \x59\x71 |0 \x4A\xAC |0 \x48\xFE |0 \x59\x70 |0 \x45\x6F |0 \x59\x6F |0 \x50\x72 |0 \x59\x6E |0 \x4C\x7F |0 \x59\x73 |0 \x45\x7F |0 \x59\x77 |0 \x51\x4D |0 \x59\x74 |0 \x50\x74 |0 \x54\xF1 |0 \x59\x7C |0 \x59\x7B |0 \x59\x7A |0 \x59\x76 |0 \x59\x75 |0 \x59\x79 |0 \x59\x78 |0 \x4F\x5F |0 \x59\x84 |0 \x59\x83 |0 \x59\x7D |0 \x59\x82 |0 \x49\x8C |0 \x59\x7E |0 \x59\x7F |0 \x59\x81 |0 \x50\x9E |0 \x59\x85 |0 \x59\x87 |0 \x4E\xD3 |0 \x59\x86 |0 \x59\x88 |0 \x59\x8B |0 \x59\x8A |0 \x59\x89 |0 \x47\xD1 |0 \x59\x8C |0 \x59\x8F |0 \x59\x8E |0 \x59\x8D |0 \x59\x90 |0 \x59\x91 |0 \x59\x92 |0 \x59\x93 |0 \x59\x95 |0 \x4C\xE8 |0 \x59\x94 |0 \x4F\x84 |0 \x59\x96 |0 \x49\xCF |0 \x52\x81 |0 \x59\x97 |0 \x59\x99 |0 \x59\x98 |0 \x51\xDF |0 \x59\x9A |0 \x45\x67 |0 \x47\x41 |0 \x4D\x47 |0 \x4C\x67 |0 \x45\x6A |0 \x48\x5B |0 \x4C\xA3 |0 \x4A\x52 |0 \x59\x9B |0 \x49\x8B |0 \x47\xAD |0 \x4A\x4B |0 \x4A\xE6 |0 \x4E\x7D |0 \x59\x9C |0 \x53\xCB |0 \x48\x93 |0 \x4E\x46 |0 \x4A\x7D |0 \x45\x53 |0 \x47\x6B |0 \x4F\x75 |0 \x59\x9D |0 \x4A\xB5 |0 \x59\xA0 |0 \x51\xC7 |0 \x59\x9F |0 \x59\x9E |0 \x59\xA1 |0 \x48\x9C |0 \x52\xAF |0 \x4A\x44 |0 \x4B\x53 |0 \x49\x60 |0 \x49\x82 |0 \x4D\xC5 |0 \x59\xA2 |0 \x54\xBE |0 \x46\xEF |0 \x4C\x85 |0 \x59\xA5 |0 \x59\xA4 |0 \x59\xA3 |0 \x4A\x5E |0 \x59\xA6 |0 \x49\x6B |0 \x59\xA7 |0 \x59\xA9 |0 \x4C\xCA |0 \x59\xA8 |0 \x54\x83 |0 \x48\xDE |0 \x59\xAA |0 \x4E\x7F |0 \x59\xAB |0 \x4A\x6F |0 \x45\x8D |0 \x45\x60 |0 \x59\xAC |0 \x59\xAD |0 \x45\xA9 |0 \x48\xDA |0 \x59\xAE |0 \x50\xA2 |0 \x4D\xAF |0 \x52\x5F |0 \x4B\x57 |0 \x59\xAF |0 \x4B\x92 |0 \x45\xB7 |0 \x48\x50 |0 \x55\x8D |0 \x4A\xED |0 \x4D\x4F |0 \x4B\x64 |0 \x55\x4F |0 \x48\x54 |0 \x51\x5A |0 \x45\x51 |0 \x59\xB0 |0 \x45\xDE |0 \x48\xB1 |0 \x45\xF8 |0 \x48\xE0 |0 \x4E\xEB |0 \x50\xC1 |0 \x46\x9A |0 \x4C\x5D |0 \x59\xB1 |0 \x59\xB2 |0 \x4B\xC7 |0 \x59\xB3 |0 \x4E\xDB |0 \x4E\xA7 |0 \x59\xB5 |0 \x59\xB4 |0 \x54\xAD |0 \x53\x6C |0 \x59\xB7 |0 \x59\xB8 |0 \x59\xB6 |0 \x55\xAF |0 \x55\x62 |0 \x59\xBA |0 \x59\xB9 |0 \x50\xE9 |0 \x59\xBB |0 \x59\xBC |0 \x59\xBD |0 \x59\xBE |0 \x59\xBF |0 \x59\xC0 |0 \x59\xC1 |0 \x47\xD0 |0 \x50\x5B |0 \x52\xD6 |0 \x46\x66 |0 \x4B\xAF |0 \x55\x64 |0 \x54\x4B |0 \x51\xD9 |0 \x4B\x47 |0 \x59\xC2 |0 \x54\xBF |0 \x59\xC3 |0 \x50\xCD |0 \x59\xC4 |0 \x56\x41 |0 \x56\x51 |0 \x46\x8F |0 \x50\xE1 |0 \x59\xC5 |0 \x4B\x63 |0 \x51\xE5 |0 \x46\xDA |0 \x59\xC6 |0 \x54\xAC |0 \x45\xD3 |0 \x55\x97 |0 \x4C\x9B |0 \x59\xC7 |0 \x47\xE6 |0 \x4E\x42 |0 \x53\x6B |0 \x59\xC8 |0 \x59\xC9 |0 \x59\xCA |0 \x4B\x6E |0 \x59\xCB |0 \x48\xBA |0 \x46\xD2 |0 \x59\xCC |0 \x52\xE0 |0 \x4A\xD4 |0 \x59\xCD |0 \x53\xC7 |0 \x59\xCE |0 \x53\x85 |0 \x59\xCF |0 \x59\xD0 |0 \x59\xD1 |0 \x46\x5F |0 \x59\xD2 |0 \x59\xD3 |0 \x59\xD4 |0 \x59\xD5 |0 \x59\xD6 |0 \x59\xD7 |0 \x46\x90 |0 \x45\xE1 |0 \x59\xD8 |0 \x4D\xCD |0 \x51\x59 |0 \x4E\x86 |0 \x4E\x88 |0 \x52\x9C |0 \x49\x64 |0 \x49\x5E |0 \x59\xD9 |0 \x59\xDA |0 \x49\x5D |0 \x47\x72 |0 \x59\xDD |0 \x4C\xEA |0 \x4A\x61 |0 \x59\xDC |0 \x59\xDB |0 \x4E\x60 |0 \x48\xA3 |0 \x59\xE0 |0 \x59\xDF |0 \x59\xDE |0 \x49\x91 |0 \x45\xE5 |0 \x50\xB3 |0 \x59\xE1 |0 \x4C\x6C |0 \x48\xFB |0 \x47\xE8 |0 \x59\xE4 |0 \x59\xE2 |0 \x59\xE3 |0 \x59\xE5 |0 \x46\x98 |0 \x59\xE6 |0 \x4A\x70 |0 \x4E\xF5 |0 \x59\xE7 |0 \x4B\x5D |0 \x46\x54 |0 \x4C\x74 |0 \x59\xE8 |0 \x48\xF8 |0 \x59\xE9 |0 \x55\xE0 |0 \x46\xE7 |0 \x47\xCA |0 \x50\x97 |0 \x4B\xD7 |0 \x59\xEA |0 \x46\x61 |0 \x4C\x45 |0 \x4E\xA3 |0 \x48\x95 |0 \x59\xF0 |0 \x59\xF1 |0 \x46\x4F |0 \x59\xEC |0 \x4C\x60 |0 \x59\xEF |0 \x59\xEE |0 \x4A\xAE |0 \x59\xED |0 \x59\xEB |0 \x50\x56 |0 \x59\xF2 |0 \x59\xF7 |0 \x59\xFD |0 \x59\xF5 |0 \x4C\xD6 |0 \x59\xFA |0 \x4E\xF0 |0 \x59\xF4 |0 \x59\xF9 |0 \x50\x9F |0 \x46\xAD |0 \x50\x81 |0 \x59\xF3 |0 \x47\xCC |0 \x59\xFC |0 \x46\x6E |0 \x54\xDE |0 \x59\xF6 |0 \x4E\x71 |0 \x59\xFB |0 \x55\x42 |0 \x59\xF8 |0 \x59\xFE |0 \x5A\x42 |0 \x52\x56 |0 \x5A\x4C |0 \x5A\x49 |0 \x5A\x48 |0 \x4B\xCA |0 \x5A\x4A |0 \x4B\xD5 |0 \x47\xC7 |0 \x52\x98 |0 \x5A\x50 |0 \x5A\x41 |0 \x5A\x44 |0 \x5A\x47 |0 \x5A\x43 |0 \x55\x94 |0 \x5A\x4B |0 \x5A\x4D |0 \x4E\xCE |0 \x53\xB8 |0 \x4C\x81 |0 \x5A\x45 |0 \x5A\x4F |0 \x5A\x4E |0 \x49\x4E |0 \x4B\xB0 |0 \x53\x84 |0 \x46\x43 |0 \x5A\x46 |0 \x5A\x52 |0 \x5A\x53 |0 \x5A\x55 |0 \x5A\x51 |0 \x54\x69 |0 \x5A\x57 |0 \x5A\x5C |0 \x4D\xE3 |0 \x55\x44 |0 \x5A\x5A |0 \x50\x91 |0 \x5A\x58 |0 \x5A\x59 |0 \x5A\x54 |0 \x5A\x56 |0 \x4A\xB1 |0 \x4D\xD8 |0 \x4D\xEB |0 \x48\x73 |0 \x5A\x5B |0 \x4B\xCD |0 \x49\x65 |0 \x4C\x9D |0 \x52\x76 |0 \x53\xA3 |0 \x5A\x64 |0 \x55\x54 |0 \x5A\x5E |0 \x51\x45 |0 \x5A\x62 |0 \x48\x5F |0 \x5A\x63 |0 \x4E\x65 |0 \x4E\x78 |0 \x5A\x61 |0 \x5A\x65 |0 \x5A\x66 |0 \x54\x9D |0 \x4E\xD7 |0 \x5A\x5F |0 \x4F\xE0 |0 \x5A\x60 |0 \x5A\x5D |0 \x4B\x68 |0 \x55\x4A |0 \x50\x6E |0 \x54\xB8 |0 \x5A\x73 |0 \x5A\x68 |0 \x48\xB3 |0 \x5A\x6E |0 \x5A\x6B |0 \x5A\x6C |0 \x54\x72 |0 \x5A\x6F |0 \x5A\x72 |0 \x5A\x6D |0 \x52\x82 |0 \x5A\x70 |0 \x5A\x6A |0 \x53\xC8 |0 \x50\x98 |0 \x5A\x74 |0 \x5A\x75 |0 \x47\x63 |0 \x5A\x76 |0 \x5A\x69 |0 \x52\xB2 |0 \x45\xC6 |0 \x47\xF7 |0 \x5A\x67 |0 \x5A\x71 |0 \x5A\x7B |0 \x5A\x7A |0 \x5A\x80 |0 \x5A\x7E |0 \x5A\x81 |0 \x5A\x79 |0 \x5A\x7F |0 \x5A\x84 |0 \x5A\x7C |0 \x51\xE3 |0 \x5A\x85 |0 \x5A\x86 |0 \x5A\x77 |0 \x4C\xBE |0 \x5A\x7D |0 \x48\xFD |0 \x53\x8E |0 \x5A\x78 |0 \x4A\x76 |0 \x5A\x92 |0 \x52\xE3 |0 \x5A\x8A |0 \x5A\x8B |0 \x5A\x8C |0 \x5A\x83 |0 \x5A\x91 |0 \x4D\xDB |0 \x4D\xD3 |0 \x5A\x82 |0 \x4E\xB6 |0 \x52\x8A |0 \x5A\x8D |0 \x4C\x49 |0 \x5A\x8F |0 \x4F\xAD |0 \x5A\x90 |0 \x5A\x87 |0 \x5A\x8E |0 \x5A\x93 |0 \x48\xA8 |0 \x5A\x89 |0 \x53\xF4 |0 \x50\x7C |0 \x5A\x88 |0 \x5A\x99 |0 \x4F\x4A |0 \x55\x5B |0 \x5A\x9A |0 \x5A\x98 |0 \x5A\x96 |0 \x5A\x94 |0 \x5A\x95 |0 \x55\xCF |0 \x4F\xFC |0 \x53\xC2 |0 \x51\x75 |0 \x5A\x9B |0 \x5A\x97 |0 \x5A\x9C |0 \x47\xBE |0 \x4E\x6C |0 \x5A\xA3 |0 \x51\xA5 |0 \x5A\xA1 |0 \x5A\xA2 |0 \x4E\xA4 |0 \x5A\xA0 |0 \x5A\x9F |0 \x5A\x9E |0 \x5A\xA4 |0 \x5A\x9D |0 \x5A\xA6 |0 \x4E\xF2 |0 \x5A\xA8 |0 \x5A\xA7 |0 \x51\x53 |0 \x5A\xA9 |0 \x5A\xAB |0 \x5A\xAA |0 \x4D\xC6 |0 \x5A\xAD |0 \x5A\xAF |0 \x5A\xAC |0 \x5A\xB0 |0 \x5A\xAE |0 \x5A\xB1 |0 \x5A\xB2 |0 \x5A\xB3 |0 \x51\x61 |0 \x54\x60 |0 \x5A\xB4 |0 \x51\x7F |0 \x45\xBA |0 \x49\xDE |0 \x4D\xA0 |0 \x5A\xB5 |0 \x5A\xB6 |0 \x4D\x7F |0 \x55\x95 |0 \x5A\xB7 |0 \x64\x6E |0 \x5A\xB8 |0 \x54\xD9 |0 \x5A\xB9 |0 \x47\x64 |0 \x5A\xBA |0 \x5A\xBB |0 \x4F\x92 |0 \x5A\xBC |0 \x5A\xBD |0 \x5A\xBE |0 \x50\x92 |0 \x45\xCF |0 \x4C\x44 |0 \x47\xDC |0 \x45\x8C |0 \x5A\xBF |0 \x4D\xCA |0 \x65\x5D |0 \x50\xAD |0 \x45\xCB |0 \x49\xF1 |0 \x5A\xC0 |0 \x47\xEA |0 \x49\x81 |0 \x55\xD5 |0 \x5A\xC3 |0 \x5A\xC1 |0 \x5A\xC4 |0 \x5A\xC2 |0 \x5A\xC5 |0 \x54\xB7 |0 \x4C\x69 |0 \x4D\x7A |0 \x4C\x76 |0 \x5A\xC6 |0 \x5A\xCA |0 \x4C\x48 |0 \x48\xF7 |0 \x5A\xC7 |0 \x5A\xCD |0 \x4E\xC0 |0 \x5A\xC8 |0 \x4E\xE3 |0 \x4D\x66 |0 \x5A\xC9 |0 \x5A\xCB |0 \x5A\xCE |0 \x47\x51 |0 \x5A\xCC |0 \x4A\x67 |0 \x49\x8D |0 \x5A\xDC |0 \x4A\x85 |0 \x4E\x7E |0 \x5A\xDA |0 \x4F\xA6 |0 \x5A\xD3 |0 \x4C\x86 |0 \x4B\x90 |0 \x51\xE0 |0 \x5A\xD1 |0 \x49\xE1 |0 \x4D\x53 |0 \x5A\xD9 |0 \x4A\xA1 |0 \x5A\xD4 |0 \x5A\xDB |0 \x5A\xD5 |0 \x5A\xDD |0 \x5A\xD8 |0 \x53\x45 |0 \x4F\xBA |0 \x5A\xD2 |0 \x53\xA2 |0 \x5A\xD0 |0 \x4F\x61 |0 \x4B\xDB |0 \x5A\xD7 |0 \x5A\xCF |0 \x50\x45 |0 \x52\x5C |0 \x4B\xFD |0 \x5A\xD6 |0 \x4E\xE2 |0 \x4D\x77 |0 \x48\xE5 |0 \x4F\xC5 |0 \x4E\xE5 |0 \x5A\xDF |0 \x5A\xE4 |0 \x5A\xE0 |0 \x50\x8D |0 \x5A\xE5 |0 \x4F\x9E |0 \x55\xB5 |0 \x4D\xD7 |0 \x5A\xE6 |0 \x46\xD8 |0 \x5A\xE2 |0 \x47\xB6 |0 \x5A\xE3 |0 \x54\x89 |0 \x5A\xDE |0 \x4F\xDB |0 \x4B\x82 |0 \x55\xB1 |0 \x5A\xE1 |0 \x4F\x81 |0 \x54\x8F |0 \x48\xF6 |0 \x53\x87 |0 \x52\xA8 |0 \x5A\xE9 |0 \x55\x55 |0 \x53\xA0 |0 \x55\x7D |0 \x5A\xE8 |0 \x5A\xEA |0 \x5A\xE7 |0 \x4C\x41 |0 \x55\x46 |0 \x4D\xDD |0 \x52\x85 |0 \x4B\xB3 |0 \x5A\xF5 |0 \x5A\xF4 |0 \x4E\xD6 |0 \x54\x93 |0 \x5A\xEF |0 \x4D\x8F |0 \x4F\xC0 |0 \x54\xC0 |0 \x5A\xED |0 \x4D\xC3 |0 \x4C\x61 |0 \x5A\xF2 |0 \x4E\xEC |0 \x5A\xEC |0 \x5A\xF1 |0 \x4C\xFA |0 \x5A\xEB |0 \x4D\x44 |0 \x4A\xE3 |0 \x5A\xF3 |0 \x55\xE6 |0 \x4B\x4F |0 \x4B\x7F |0 \x5A\xF0 |0 \x47\xA8 |0 \x4C\xAC |0 \x48\xD5 |0 \x55\xD0 |0 \x4A\x60 |0 \x5A\xEE |0 \x55\x41 |0 \x4D\xC1 |0 \x54\xCD |0 \x5A\xF6 |0 \x54\xA3 |0 \x5A\xF7 |0 \x5A\xF9 |0 \x4E\xFD |0 \x5B\x42 |0 \x5A\xFA |0 \x5A\xFD |0 \x4B\xCF |0 \x49\xB9 |0 \x5A\xFE |0 \x4C\xF2 |0 \x4C\x46 |0 \x49\xAA |0 \x4D\x60 |0 \x5A\xFC |0 \x5A\xF8 |0 \x4B\xF2 |0 \x4A\xD5 |0 \x5A\xFB |0 \x5B\x41 |0 \x4F\x7E |0 \x5B\x44 |0 \x4B\xD8 |0 \x5B\x4B |0 \x5B\x45 |0 \x54\xA3 |1 \x5B\x4C |0 \x5B\x49 |0 \x5B\x48 |0 \x5B\x46 |0 \x5B\x4A |0 \x4D\xC8 |0 \x52\x8F |0 \x5B\x43 |0 \x5B\x47 |0 \x4E\x49 |0 \x50\xA3 |0 \x4E\x8C |0 \x5B\x4D |0 \x54\xCD |1 \x4D\xCB |0 \x5B\x50 |0 \x5B\x4E |0 \x48\xD1 |0 \x5B\x4F |0 \x5B\x51 |0 \x55\xF5 |0 \x51\xEF |0 \x4A\x74 |0 \x5B\x5A |0 \x53\xDE |0 \x5B\x57 |0 \x5B\x55 |0 \x53\x48 |0 \x5B\x53 |0 \x55\xDB |0 \x4E\x7A |0 \x5B\x58 |0 \x5B\x59 |0 \x51\xE1 |0 \x4E\x62 |0 \x4C\x77 |0 \x53\x72 |0 \x4E\xC7 |0 \x5B\x52 |0 \x5B\x56 |0 \x5B\x5B |0 \x51\x4E |0 \x5B\x62 |0 \x5B\x5E |0 \x5B\x5F |0 \x49\x9B |0 \x5B\x54 |0 \x5B\x5D |0 \x5B\x60 |0 \x5B\x61 |0 \x5B\x5C |0 \x5B\x65 |0 \x5B\x66 |0 \x55\x43 |0 \x5B\x67 |0 \x4F\xD6 |0 \x5B\x64 |0 \x4F\xCD |0 \x5B\x68 |0 \x5B\x63 |0 \x5B\x6B |0 \x5B\x69 |0 \x5B\x6A |0 \x5B\x6C |0 \x5B\x6E |0 \x55\xF6 |0 \x5B\x6D |0 \x5B\x72 |0 \x5B\x6F |0 \x5B\x70 |0 \x5B\x71 |0 \x5B\x72 |1 \x5B\x74 |0 \x5B\x73 |0 \x52\x7F |0 \x5B\x75 |0 \x5B\x76 |0 \x47\x7B |0 \x5B\x77 |0 \x5B\x78 |0 \x5B\x7A |0 \x5B\x79 |0 \x5B\x7B |0 \x48\x8F |0 \x4B\xC5 |0 \x48\xAF |0 \x45\xC7 |0 \x4A\xF7 |0 \x5B\x7D |0 \x5B\x80 |0 \x5B\x7E |0 \x46\x47 |0 \x4C\x5C |0 \x5B\x82 |0 \x5B\x7F |0 \x4B\x8A |0 \x5B\x81 |0 \x47\xA5 |0 \x5B\x83 |0 \x51\xB1 |0 \x4F\xCF |0 \x4A\xC9 |0 \x49\xF2 |0 \x47\xB0 |0 \x46\xCC |0 \x5B\x84 |0 \x47\x7C |0 \x4B\xF3 |0 \x49\x51 |0 \x5B\x85 |0 \x5B\x86 |0 \x5B\x87 |0 \x45\xCA |0 \x58\xED |0 \x46\x8E |0 \x51\x9D |0 \x47\xDB |0 \x4B\x80 |0 \x52\xE4 |0 \x4E\x83 |0 \x46\x4E |0 \x5B\x89 |0 \x4B\xD1 |0 \x5B\x8A |0 \x55\x81 |0 \x54\xCF |0 \x51\x41 |0 \x51\xC2 |0 \x5B\x8B |0 \x4E\xFC |0 \x49\x89 |0 \x4E\xA5 |0 \x45\x87 |0 \x5B\x8C |0 \x45\xCD |0 \x4D\xA4 |0 \x48\x88 |0 \x5B\x8F |0 \x5B\x8D |0 \x5B\x90 |0 \x4A\xCF |0 \x5B\x8E |0 \x4D\x7B |0 \x5B\x91 |0 \x4A\xDC |0 \x5B\x92 |0 \x4D\xAB |0 \x5B\x93 |0 \x51\x65 |0 \x5B\x95 |0 \x5B\x94 |0 \x4B\x77 |0 \x45\x62 |0 \x4D\x9D |0 \x4C\x7B |0 \x4D\x6A |0 \x46\xE9 |0 \x4D\x67 |0 \x47\xEC |0 \x5B\x96 |0 \x4F\xA3 |0 \x5B\x9C |0 \x5B\x97 |0 \x5B\x99 |0 \x5B\x9B |0 \x4F\xE7 |0 \x46\xFE |0 \x5B\x9D |0 \x52\x8E |0 \x46\xD1 |0 \x45\xA6 |0 \x54\xE8 |0 \x47\xE9 |0 \x4C\x59 |0 \x5B\x98 |0 \x5B\xA3 |0 \x5B\xA1 |0 \x47\xA9 |0 \x47\xAC |0 \x5B\xA4 |0 \x46\x62 |0 \x55\x9D |0 \x48\xE8 |0 \x45\xB3 |0 \x5B\xA0 |0 \x4B\xBB |0 \x52\xEB |0 \x5B\xA2 |0 \x5B\x9F |0 \x51\x93 |0 \x4F\x9F |0 \x4C\x98 |0 \x5B\x9E |0 \x52\x51 |0 \x46\x51 |0 \x48\xB0 |0 \x5B\xA5 |0 \x5B\xA6 |0 \x4B\xB2 |0 \x51\xEA |0 \x54\xC3 |0 \x5B\xA8 |0 \x5B\xAB |0 \x5B\xAD |0 \x5B\xA9 |0 \x4F\xCE |0 \x5B\xAC |0 \x5B\xAA |0 \x5B\xA7 |0 \x55\x6D |0 \x50\xA0 |0 \x51\xB2 |0 \x4C\xB6 |0 \x49\xF8 |0 \x49\x93 |0 \x5B\xB0 |0 \x5B\xAF |0 \x47\x95 |0 \x4A\xF8 |0 \x46\xA8 |0 \x4C\x83 |0 \x5B\xB1 |0 \x5B\xB3 |0 \x4F\x46 |0 \x5B\xB2 |0 \x4E\xD1 |0 \x4F\xAB |0 \x4F\xBE |0 \x4D\x6C |0 \x4B\xE2 |0 \x5B\xB5 |0 \x5B\xB4 |0 \x5B\xB7 |0 \x5B\xB6 |0 \x4C\xC7 |0 \x50\xCC |0 \x50\x93 |0 \x4A\xFE |0 \x5B\xB8 |0 \x4C\xB2 |0 \x5B\xBF |0 \x52\x43 |0 \x5B\xBE |0 \x5B\xBD |0 \x5B\xBB |0 \x5B\xBA |0 \x5B\xB9 |0 \x4C\x56 |0 \x5B\xBC |0 \x5B\xC0 |0 \x51\x52 |0 \x5B\xC1 |0 \x4B\xFE |0 \x52\xA6 |0 \x51\xCC |0 \x5B\xC2 |0 \x5B\xC3 |0 \x5B\xC4 |0 \x49\xB6 |0 \x4E\xBC |0 \x4A\x6D |0 \x5B\xC5 |0 \x5B\xC6 |0 \x47\x9D |0 \x4E\xD2 |0 \x5B\xC7 |0 \x53\x97 |0 \x57\x8D |0 \x49\x5F |0 \x51\x66 |0 \x4B\xC3 |0 \x46\xF5 |0 \x56\xAC |0 \x45\x61 |0 \x46\x85 |0 \x4B\xC4 |0 \x47\xD4 |0 \x5B\xC8 |0 \x54\xFD |0 \x4F\xA4 |0 \x55\xF3 |0 \x5B\xCA |0 \x48\x6E |0 \x47\xBB |0 \x47\x5C |0 \x5B\xCB |0 \x46\x8B |0 \x5B\xCD |0 \x5B\xCE |0 \x45\x6C |0 \x49\xC6 |0 \x47\x46 |0 \x45\x66 |0 \x48\xF9 |0 \x5B\xD0 |0 \x4D\x42 |0 \x4E\xA2 |0 \x5B\xD2 |0 \x5B\xD3 |0 \x5B\xD4 |0 \x4D\x96 |0 \x50\xF0 |0 \x5B\xD1 |0 \x53\x4F |0 \x5B\xD5 |0 \x46\x68 |0 \x4E\x51 |0 \x50\xD0 |0 \x46\xBC |0 \x45\x56 |0 \x54\xC1 |0 \x50\xF4 |0 \x5B\xD7 |0 \x52\x5D |0 \x5B\xD6 |0 \x4B\x4B |0 \x54\x80 |0 \x47\x5E |0 \x51\xA6 |0 \x52\x91 |0 \x5B\xD9 |0 \x46\x76 |0 \x5B\xD8 |0 \x5B\xDE |0 \x50\x8B |0 \x4C\x63 |0 \x5B\xDC |0 \x45\x57 |0 \x5B\x9A |0 \x5B\xE0 |0 \x4A\xA6 |0 \x52\x80 |0 \x54\xDF |0 \x45\x78 |0 \x46\xB4 |0 \x5B\xDB |0 \x52\x5E |0 \x5B\xDA |0 \x5B\xDF |0 \x54\xF2 |0 \x4A\xE2 |0 \x4F\x78 |0 \x45\xA2 |0 \x49\xD9 |0 \x47\xB9 |0 \x46\x72 |0 \x4F\xD2 |0 \x5B\xE2 |0 \x52\xD0 |0 \x5B\xE1 |0 \x5B\xDD |0 \x50\x61 |0 \x54\xC9 |0 \x5B\xE6 |0 \x4E\xE8 |0 \x5B\xE4 |0 \x5B\xE9 |0 \x5B\xF2 |0 \x5B\xE3 |0 \x5B\xF0 |0 \x55\xCD |0 \x4A\x7F |0 \x5B\xF4 |0 \x52\xD9 |0 \x5B\xF1 |0 \x49\x80 |0 \x50\x4A |0 \x4E\xC1 |0 \x48\x9B |0 \x4D\xEA |0 \x4F\xD8 |0 \x4E\xE1 |0 \x5B\xED |0 \x54\xF3 |0 \x5B\xEE |0 \x5B\xEB |0 \x5B\xEA |0 \x5B\xE8 |0 \x5B\xE7 |0 \x5B\xEF |0 \x5B\xE5 |0 \x4B\xEA |0 \x46\xEA |0 \x47\xA7 |0 \x51\xF1 |0 \x47\x73 |0 \x50\x54 |0 \x4A\xC1 |0 \x5B\xF3 |0 \x52\xD1 |0 \x47\xD3 |0 \x45\xFA |0 \x51\xF1 |1 \x50\xE3 |0 \x4D\xCC |0 \x47\x9B |0 \x5B\xF5 |0 \x48\xBF |0 \x52\x42 |0 \x52\xDE |0 \x48\x56 |0 \x52\xE2 |0 \x5B\xFA |0 \x55\xDA |0 \x4B\x9E |0 \x46\x67 |0 \x47\xDE |0 \x4D\xE0 |0 \x5B\xF8 |0 \x50\xD6 |0 \x49\xAB |0 \x4A\xDA |0 \x5B\xF9 |0 \x5B\xF6 |0 \x48\xF1 |0 \x5B\xF7 |0 \x5B\xFB |0 \x49\xC0 |0 \x48\x79 |0 \x5B\xEC |0 \x53\x6D |0 \x53\x4B |0 \x5B\xFD |0 \x47\x71 |0 \x4D\x88 |0 \x51\xF3 |0 \x5B\xFC |0 \x50\x46 |0 \x5C\x4B |0 \x4E\x77 |0 \x5C\x41 |0 \x5C\x44 |0 \x5C\x42 |0 \x4E\x44 |0 \x5C\x48 |0 \x47\x98 |0 \x5B\xFE |0 \x5B\xFE |1 \x5C\x45 |0 \x50\xDA |0 \x5C\x47 |0 \x52\xCC |0 \x53\xBC |0 \x4E\x92 |0 \x5C\x43 |0 \x52\xC6 |0 \x50\xAC |0 \x58\xA4 |0 \x52\xD3 |0 \x48\x58 |0 \x5C\x46 |0 \x51\xE4 |0 \x46\x82 |0 \x53\x59 |0 \x53\x61 |0 \x5C\x4C |0 \x49\xAD |0 \x5C\x4A |0 \x5C\x4D |0 \x5C\x49 |0 \x4E\xB1 |0 \x5C\x60 |0 \x53\x86 |0 \x55\xCA |0 \x5C\x50 |0 \x4E\xF1 |0 \x5C\x56 |0 \x5C\x5F |0 \x4B\x5A |0 \x5C\x57 |0 \x5C\x59 |0 \x54\xC2 |0 \x5C\x52 |0 \x4B\xEF |0 \x4E\xA9 |0 \x5C\x5E |0 \x5C\x54 |0 \x5C\x5D |0 \x5C\x58 |0 \x45\x9D |0 \x5C\x5B |0 \x53\x75 |0 \x54\x94 |0 \x55\xB6 |0 \x54\x68 |0 \x5C\x4F |0 \x5C\x5C |0 \x4F\xF7 |0 \x5C\x51 |0 \x4D\xFD |0 \x5C\x55 |0 \x47\xC5 |0 \x4B\xA0 |0 \x5C\x4E |0 \x5C\x5A |0 \x4F\xED |0 \x53\x70 |0 \x51\x63 |0 \x48\x6D |0 \x5C\x63 |0 \x5C\x61 |0 \x5C\x64 |0 \x53\xFA |0 \x5C\x53 |0 \x5C\x65 |0 \x5C\x62 |0 \x5C\x71 |0 \x54\xA7 |0 \x5C\x69 |0 \x52\xED |0 \x5C\x6F |0 \x4C\xBA |0 \x51\xD7 |0 \x52\x95 |0 \x5C\x6B |0 \x55\xC5 |0 \x5C\x70 |0 \x53\x4C |0 \x54\xE2 |0 \x5C\x73 |0 \x5C\x72 |0 \x4A\xDF |0 \x52\x7C |0 \x4D\x93 |0 \x5C\x6E |0 \x5C\x6C |0 \x54\xA2 |0 \x45\x6B |0 \x53\xEF |0 \x4F\xAE |0 \x52\xB3 |0 \x5C\x6D |0 \x49\xB7 |0 \x5C\x68 |0 \x5C\x6A |0 \x5C\x67 |0 \x52\xBA |0 \x47\x61 |0 \x5C\x74 |0 \x5C\x75 |0 \x4C\x42 |0 \x4B\x52 |0 \x49\xEB |0 \x54\x76 |0 \x55\xC7 |0 \x5C\x86 |0 \x5C\x79 |0 \x4D\x7E |0 \x5C\x85 |0 \x5C\x84 |0 \x53\x8D |0 \x51\x4A |0 \x5C\x80 |0 \x5C\x76 |0 \x53\xB2 |0 \x5C\x82 |0 \x5C\x7C |0 \x5C\x77 |0 \x5C\x7A |0 \x5C\x83 |0 \x4D\xB9 |0 \x5C\x7F |0 \x47\x96 |0 \x4E\xFA |0 \x52\xDB |0 \x5C\x7D |0 \x54\x8C |0 \x5C\x7B |0 \x48\x48 |0 \x68\x81 |0 \x5C\x81 |0 \x5C\x87 |0 \x5C\x90 |0 \x5C\x8F |0 \x5C\x89 |0 \x5C\x94 |0 \x5C\x92 |0 \x5C\x8E |0 \x5C\x8D |0 \x4B\x5C |0 \x4D\xB7 |0 \x5C\x8C |0 \x5C\x8A |0 \x53\xBB |0 \x5C\x95 |0 \x49\x4F |0 \x5C\x9D |0 \x5C\x97 |0 \x5C\x99 |0 \x5C\x93 |0 \x53\x8B |0 \x49\x66 |0 \x5C\x8B |0 \x5C\x91 |0 \x53\x9B |0 \x48\x64 |0 \x5C\x96 |0 \x5C\x98 |0 \x48\xDC |0 \x45\xF2 |0 \x4B\x6F |0 \x5C\x88 |0 \x5C\x9A |0 \x55\x85 |0 \x5C\x9F |0 \x5C\xA7 |0 \x46\xCF |0 \x4E\x69 |0 \x4B\xBE |0 \x5C\x9C |0 \x5C\xA6 |0 \x5C\xA1 |0 \x5C\xA5 |0 \x45\x89 |0 \x4B\xC2 |0 \x5C\xA3 |0 \x45\x79 |0 \x55\xD4 |0 \x5C\xA2 |0 \x5C\xA4 |0 \x5C\x9B |0 \x5C\xA8 |0 \x5C\xA9 |0 \x5C\xA0 |0 \x5C\xAF |0 \x4F\xB2 |0 \x4F\xF5 |0 \x5C\xAC |0 \x5C\xAB |0 \x55\xEE |0 \x5C\xAA |0 \x5C\xB0 |0 \x4D\x55 |0 \x5C\x9E |0 \x5C\xAD |0 \x5C\xAE |0 \x5C\xB2 |0 \x5C\xB1 |0 \x54\x5D |0 \x5C\xB6 |0 \x5C\xB5 |0 \x5C\xB3 |0 \x5C\xB7 |0 \x5C\xB4 |0 \x52\x8B |0 \x5C\xBA |0 \x55\x86 |0 \x5C\xBB |0 \x4D\xA6 |0 \x5C\xB8 |0 \x53\x62 |0 \x5C\xB9 |0 \x5C\xBC |0 \x51\xC5 |0 \x5C\xBF |0 \x5C\xC2 |0 \x52\xEE |0 \x4E\xDE |0 \x5C\xC0 |0 \x5C\xC1 |0 \x5C\xC3 |0 \x5C\xC4 |0 \x55\xF7 |0 \x5C\xC5 |0 \x4C\xB5 |0 \x45\x97 |0 \x4B\x9D |0 \x4A\xA0 |0 \x4B\xF6 |0 \x5C\xC7 |0 \x5C\xC6 |0 \x5C\xC8 |0 \x51\x7D |0 \x4C\xF8 |0 \x4E\xFB |0 \x5C\xCC |0 \x5C\xCB |0 \x5C\xCD |0 \x46\xF7 |0 \x54\x87 |0 \x5C\xCE |0 \x4D\x4E |0 \x5C\xD0 |0 \x5C\xCF |0 \x5C\xD1 |0 \x5C\xD2 |0 \x5C\xD3 |0 \x48\xD8 |0 \x45\x77 |0 \x4D\x4C |0 \x45\xB1 |0 \x47\xD8 |0 \x55\x8E |0 \x4A\x9F |0 \x48\xE4 |0 \x49\x55 |0 \x5C\xD4 |0 \x5C\xD5 |0 \x49\x99 |0 \x5C\xD6 |0 \x5C\xD7 |0 \x5C\xD9 |0 \x5C\xD8 |0 \x4F\x42 |0 \x53\xA4 |0 \x48\x65 |0 \x49\x92 |0 \x5C\xDA |0 \x5C\xDC |0 \x4E\x73 |0 \x5C\xDB |0 \x5C\xDD |0 \x5C\xDE |0 \x5C\xDF |0 \x5C\xE0 |0 \x5C\xE1 |0 \x5C\xE2 |0 \x5C\xE3 |0 \x5C\xE4 |0 \x54\x59 |0 \x47\xED |0 \x5C\xE5 |0 \x49\xE9 |0 \x50\xC0 |0 \x5C\xE6 |0 \x48\x49 |0 \x58\x7F |0 \x4A\x5B |0 \x5C\xE7 |0 \x5C\xE8 |0 \x49\x69 |0 \x49\xF5 |0 \x4C\x97 |0 \x5C\xE9 |0 \x47\x4E |0 \x5C\xEA |0 \x53\xD7 |0 \x46\xE2 |0 \x5C\xEB |0 \x5C\xED |0 \x5C\xEC |0 \x5C\xEF |0 \x5C\xEE |0 \x5C\xF0 |0 \x48\x8E |0 \x47\x56 |0 \x5C\xF1 |0 \x5C\xF2 |0 \x45\xB9 |0 \x5C\xF3 |0 \x5C\xF5 |0 \x5C\xF4 |0 \x45\x9C |0 \x4C\xA4 |0 \x45\xFB |0 \x55\x6E |0 \x5C\xF6 |0 \x53\x4D |0 \x4D\x84 |0 \x49\xA0 |0 \x50\x5E |0 \x50\x6A |0 \x5C\xF8 |0 \x4E\xC4 |0 \x4E\x82 |0 \x5C\xF9 |0 \x55\x5E |0 \x5C\xF7 |0 \x45\xAD |0 \x45\xE8 |0 \x5C\xFA |0 \x5D\x45 |0 \x52\xB4 |0 \x5C\xFE |0 \x50\xD2 |0 \x50\xC8 |0 \x5D\x46 |0 \x47\xA4 |0 \x49\x4C |0 \x5D\x44 |0 \x5D\x42 |0 \x5C\xFB |0 \x55\xD9 |0 \x5C\xFD |0 \x4C\x8F |0 \x55\x98 |0 \x5C\xFC |0 \x5D\x48 |0 \x5D\x47 |0 \x4F\xF8 |0 \x47\xFD |0 \x4E\xAD |0 \x5D\x41 |0 \x5D\x43 |0 \x50\x75 |0 \x45\x85 |0 \x53\xEC |0 \x5D\x4D |0 \x5D\x50 |0 \x46\x5A |0 \x4E\xAA |0 \x46\x5C |0 \x5D\x52 |0 \x45\x84 |0 \x46\xC6 |0 \x5D\x4B |0 \x5D\x51 |0 \x4E\x6F |0 \x4A\x58 |0 \x5D\x49 |0 \x5D\x4C |0 \x46\xEE |0 \x4D\xB8 |0 \x51\xFD |0 \x54\xD7 |0 \x46\x4A |0 \x55\xC6 |0 \x5D\x55 |0 \x5D\x4E |0 \x5D\x53 |0 \x5D\x4F |0 \x4E\x87 |0 \x46\xCA |0 \x4D\x4B |0 \x4E\x56 |0 \x49\x44 |0 \x5D\x56 |0 \x5D\x54 |0 \x46\xF3 |0 \x5D\x4A |0 \x4F\x57 |0 \x5D\x58 |0 \x45\xDA |0 \x5D\x5E |0 \x5D\x5D |0 \x4A\x4E |0 \x52\xB6 |0 \x54\x50 |0 \x4D\x98 |0 \x5D\x57 |0 \x45\xDC |0 \x50\xB7 |0 \x4F\xD4 |0 \x5D\x5A |0 \x4B\x72 |0 \x5D\x5C |0 \x52\xAC |0 \x5D\x59 |0 \x50\xBC |0 \x47\xB4 |0 \x5D\x5B |0 \x4A\x72 |0 \x46\xFC |0 \x4C\xC9 |0 \x46\x8D |0 \x5D\x66 |0 \x5D\x64 |0 \x45\xEA |0 \x5D\x5F |0 \x5D\x63 |0 \x46\x6B |0 \x46\xEB |0 \x4A\x9D |0 \x55\xCC |0 \x4A\x8C |0 \x5D\x62 |0 \x4B\x7E |0 \x45\xA7 |0 \x4D\x41 |0 \x5D\x65 |0 \x5D\x6A |0 \x5D\x60 |0 \x48\x6B |0 \x4F\x7D |0 \x5D\x67 |0 \x5D\x61 |0 \x5D\x68 |0 \x5D\x6B |0 \x4D\xDA |0 \x5D\x69 |0 \x55\x50 |0 \x5D\x72 |0 \x4F\x91 |0 \x4A\x45 |0 \x5D\x6F |0 \x5D\x73 |0 \x4E\x74 |0 \x4A\x88 |0 \x5D\x7C |0 \x5D\x75 |0 \x5D\x71 |0 \x52\xC7 |0 \x5D\x78 |0 \x5D\x74 |0 \x4A\xBF |0 \x5D\x7B |0 \x5D\x82 |0 \x55\xE1 |0 \x5D\x7E |0 \x5D\x77 |0 \x4C\xA5 |0 \x5D\x81 |0 \x5D\x70 |0 \x5D\x79 |0 \x5D\x83 |0 \x55\x4E |0 \x5D\x76 |0 \x5D\x84 |0 \x47\x77 |0 \x5D\x7F |0 \x48\x94 |0 \x48\xEA |0 \x4B\x46 |0 \x5D\x7A |0 \x5D\x6C |0 \x5D\x7D |0 \x4A\x91 |0 \x5D\x80 |0 \x45\x96 |0 \x54\x41 |0 \x47\x69 |0 \x4A\xC0 |0 \x5D\x6D |0 \x48\x92 |0 \x51\x98 |0 \x51\x64 |0 \x5D\x87 |0 \x50\xE4 |0 \x47\x8A |0 \x5D\x99 |0 \x5D\x92 |0 \x52\x7A |0 \x45\xD2 |0 \x5D\x8C |0 \x5D\x98 |0 \x4E\x43 |0 \x51\xA0 |0 \x5D\x93 |0 \x49\x50 |0 \x5D\x8F |0 \x49\x45 |0 \x5D\x85 |0 \x5D\x6E |0 \x48\xC6 |0 \x5D\x9A |0 \x5D\x8A |0 \x5D\x96 |0 \x5D\x95 |0 \x5D\x8B |0 \x5D\x94 |0 \x4C\x88 |0 \x5D\x91 |0 \x5D\x97 |0 \x4D\x52 |0 \x51\x55 |0 \x53\xF3 |0 \x5D\x8E |0 \x5D\x89 |0 \x4F\xBD |0 \x5D\x8D |0 \x5D\x86 |0 \x48\xBD |0 \x5D\x88 |0 \x5D\x90 |0 \x4D\x6B |0 \x4C\x90 |0 \x47\x5B |0 \x5D\x9B |0 \x54\xFA |0 \x5D\xA5 |0 \x47\xFC |0 \x46\xCE |0 \x5D\x9D |0 \x4D\xC4 |0 \x4A\x4D |0 \x5D\xA8 |0 \x52\x71 |0 \x53\x76 |0 \x5D\x9C |0 \x5D\xA0 |0 \x5D\xA2 |0 \x48\xBE |0 \x5D\x9E |0 \x54\x97 |0 \x5D\x9F |0 \x5D\xA6 |0 \x5D\xA7 |0 \x5D\xA1 |0 \x4E\xE6 |0 \x52\xA9 |0 \x48\x57 |0 \x5D\xB3 |0 \x4B\xA2 |0 \x52\x4A |0 \x5D\xA3 |0 \x5D\xA4 |0 \x47\xA3 |0 \x4D\xA1 |0 \x5D\xAB |0 \x5D\xB1 |0 \x5D\xAF |0 \x4F\xB7 |0 \x5D\xB7 |0 \x5D\xAC |0 \x5D\xAD |0 \x5D\xB4 |0 \x4B\x78 |0 \x4F\xBC |0 \x4D\xAE |0 \x54\xD0 |0 \x50\xC4 |0 \x55\x75 |0 \x5D\xB6 |0 \x49\xED |0 \x54\xA1 |0 \x50\x8E |0 \x4F\x58 |0 \x54\xE0 |0 \x4F\x6E |0 \x4E\x8A |0 \x5D\xB0 |0 \x5D\xB2 |0 \x4D\x73 |0 \x5D\xB5 |0 \x5D\xAE |0 \x5D\xA9 |0 \x5D\xAA |0 \x54\xFA |1 \x4A\xC2 |0 \x5D\xC3 |0 \x5D\xBD |0 \x4D\xC0 |0 \x46\xC2 |0 \x4A\xD2 |0 \x5D\xC7 |0 \x5D\xBE |0 \x4C\x93 |0 \x5D\xBC |0 \x54\x46 |0 \x5D\xBF |0 \x5D\xBA |0 \x5D\xB9 |0 \x5D\xC2 |0 \x5D\xBB |0 \x55\xA0 |0 \x5D\xC0 |0 \x48\x87 |0 \x5D\xB8 |0 \x5D\xC1 |0 \x5D\xC5 |0 \x5D\xC6 |0 \x54\xBA |0 \x5D\xCB |0 \x5D\xC9 |0 \x4E\x4B |0 \x5D\xCE |0 \x55\x89 |0 \x5D\xC8 |0 \x5D\xCA |0 \x5D\xCC |0 \x4B\xD0 |0 \x50\xBE |0 \x5D\xCF |0 \x4A\xCE |0 \x5D\xC4 |0 \x5D\xD4 |0 \x5D\xD1 |0 \x5D\xD3 |0 \x5D\xCD |0 \x5D\xD0 |0 \x53\x80 |0 \x50\x7E |0 \x51\xD2 |0 \x55\xA3 |0 \x5D\xD2 |0 \x5D\xD6 |0 \x4D\xD4 |0 \x50\x55 |0 \x5D\xE2 |0 \x5D\xD5 |0 \x66\x58 |0 \x5D\xDB |0 \x51\x87 |0 \x5D\xDD |0 \x5D\xD7 |0 \x55\x50 |1 \x5D\xD8 |0 \x5D\xD9 |0 \x5D\xDA |0 \x5D\xDE |0 \x5D\xDC |0 \x55\xD1 |0 \x5D\xE4 |0 \x5D\xE0 |0 \x5D\xDF |0 \x52\xB0 |0 \x53\x5C |0 \x5D\xE1 |0 \x4F\xDE |0 \x52\xAE |0 \x5D\xE3 |0 \x46\x5B |0 \x5D\xE5 |0 \x5D\xE7 |0 \x5D\xE6 |0 \x53\xEA |0 \x5D\xE8 |0 \x4B\x96 |0 \x5D\xE9 |0 \x47\x85 |0 \x4B\x65 |0 \x4A\xF5 |0 \x54\x73 |0 \x54\x6A |0 \x4C\xBC |0 \x5D\xEA |0 \x49\x7D |0 \x4F\xCB |0 \x4D\xAD |0 \x4F\xEE |0 \x5D\xEB |0 \x5D\xED |0 \x5D\xEE |0 \x48\x61 |0 \x5D\xF0 |0 \x5D\xEC |0 \x52\xCD |0 \x5D\xEF |0 \x47\x88 |0 \x49\xD7 |0 \x52\x9E |0 \x4D\xD1 |0 \x5D\xF2 |0 \x50\x99 |0 \x5D\xF3 |0 \x53\x8C |0 \x5D\xF1 |0 \x5D\xF7 |0 \x55\x87 |0 \x5D\xF8 |0 \x5D\xF6 |0 \x5D\xF4 |0 \x5D\xF5 |0 \x53\xEE |0 \x5D\xFA |0 \x54\x4F |0 \x5D\xF9 |0 \x47\x5F |0 \x4D\xE6 |0 \x53\xEE |1 \x47\xEF |0 \x49\x83 |0 \x5D\xFC |0 \x5D\xFD |0 \x4C\x6F |0 \x5E\x42 |0 \x54\x90 |0 \x68\x85 |0 \x5E\x43 |0 \x4B\xDD |0 \x5D\xFB |0 \x5E\x41 |0 \x54\xEA |0 \x53\x57 |0 \x5D\xFE |0 \x47\x42 |0 \x54\xA0 |0 \x5E\x44 |0 \x4C\x4C |0 \x55\x90 |0 \x5E\x47 |0 \x5E\x45 |0 \x46\x7F |0 \x5E\x46 |0 \x52\x9D |0 \x5E\x48 |0 \x4F\x68 |0 \x4E\xBF |0 \x54\xBB |0 \x5E\x4A |0 \x47\xD5 |0 \x5E\x4C |0 \x5E\x4D |0 \x5E\x4B |0 \x49\xD5 |0 \x4E\xF8 |0 \x5E\x50 |0 \x5E\x53 |0 \x4A\x79 |0 \x5E\x4E |0 \x5E\x51 |0 \x50\x47 |0 \x5E\x52 |0 \x57\xFB |0 \x5E\x55 |0 \x4C\x66 |0 \x54\xCE |0 \x5E\x4F |0 \x5E\x56 |0 \x54\xE6 |0 \x57\x8F |0 \x5E\x54 |0 \x5E\x59 |0 \x5E\x57 |0 \x5E\x58 |0 \x5E\x5A |0 \x5E\x5B |0 \x4A\xD9 |0 \x5E\x5C |0 \x5E\x5D |0 \x53\x7C |0 \x5E\x5E |0 \x4C\x87 |0 \x5E\x60 |0 \x5E\x5F |0 \x5E\x61 |0 \x5E\x62 |0 \x53\xA9 |0 \x45\xCC |0 \x50\x96 |0 \x5E\x63 |0 \x5E\x64 |0 \x52\xDD |0 \x4C\x79 |0 \x5E\x65 |0 \x5E\x66 |0 \x5E\x67 |0 \x47\x67 |0 \x4A\xBD |0 \x5E\x68 |0 \x55\x6F |0 \x55\xDD |0 \x5E\x69 |0 \x53\xFC |0 \x49\x73 |0 \x55\xB7 |0 \x4A\xAF |0 \x50\x9A |0 \x55\xC4 |0 \x48\x7B |0 \x46\x52 |0 \x51\x58 |0 \x5E\x6A |0 \x46\xA2 |0 \x54\x8A |0 \x5E\x6B |0 \x53\x54 |0 \x5E\x6C |0 \x5E\x6E |0 \x5E\x6D |0 \x5E\x6F |0 \x5E\x70 |0 \x4F\xDC |0 \x5E\x71 |0 \x5E\x72 |0 \x4A\xC5 |0 \x4C\xA7 |0 \x5E\x73 |0 \x5E\x74 |0 \x48\x52 |0 \x5E\x79 |0 \x5E\x75 |0 \x4E\x5A |0 \x5E\x76 |0 \x5E\x78 |0 \x5E\x77 |0 \x5E\x7A |0 \x51\xDB |0 \x5E\x7B |0 \x52\x74 |0 \x4E\xCF |0 \x50\xDC |0 \x5E\x7D |0 \x5E\x7E |0 \x5E\x7C |0 \x4A\x7B |0 \x4A\xDB |0 \x4C\x9E |0 \x5E\x80 |0 \x52\xFE |0 \x5E\x7F |0 \x50\x6F |0 \x54\xD6 |0 \x5E\x82 |0 \x5E\x84 |0 \x5E\x81 |0 \x4A\x51 |0 \x5E\x83 |0 \x5E\x85 |0 \x4E\x9D |0 \x5E\x86 |0 \x5E\x8B |0 \x5E\x88 |0 \x49\xC5 |0 \x4F\xD0 |0 \x4F\x45 |0 \x5E\x89 |0 \x5E\x87 |0 \x50\x4F |0 \x53\xDD |0 \x5E\x8C |0 \x4C\x5A |0 \x4E\x95 |0 \x51\x9F |0 \x5E\x8E |0 \x5E\x8D |0 \x5E\x8F |0 \x4F\x65 |0 \x5E\x92 |0 \x5E\x91 |0 \x5E\x93 |0 \x4D\x61 |0 \x5E\x96 |0 \x5E\x94 |0 \x5E\x95 |0 \x51\xCB |0 \x5E\x97 |0 \x4C\x6E |0 \x47\x83 |0 \x45\xFD |0 \x49\xB1 |0 \x4D\xE9 |0 \x4E\x4C |0 \x4A\xF9 |0 \x5E\x9A |0 \x5E\x9C |0 \x5E\x99 |0 \x5E\x9D |0 \x4C\x9A |0 \x5E\x98 |0 \x5E\x9E |0 \x53\x99 |0 \x4D\x5D |0 \x5E\x9B |0 \x5E\xA2 |0 \x5E\x9F |0 \x5E\xA5 |0 \x4B\x99 |0 \x5E\xA1 |0 \x5E\xA0 |0 \x4C\xB9 |0 \x50\x66 |0 \x5E\xA3 |0 \x5E\xA4 |0 \x5E\xA8 |0 \x5E\xA6 |0 \x46\xB7 |0 \x48\xDB |0 \x5E\xA9 |0 \x45\xEB |0 \x5E\xA7 |0 \x50\xF7 |0 \x4E\x5C |0 \x5E\xAC |0 \x5E\xAA |0 \x5E\xAD |0 \x5E\xAB |0 \x5E\xAE |0 \x5E\xAF |0 \x54\x53 |0 \x4C\xD8 |0 \x52\xA3 |0 \x52\x9F |0 \x5E\xB0 |0 \x5E\xB2 |0 \x5E\xB5 |0 \x5E\xB1 |0 \x5E\xB4 |0 \x53\xF1 |0 \x4F\x52 |0 \x5E\xB6 |0 \x4B\x5B |0 \x5E\xB3 |0 \x50\x8C |0 \x5E\xBC |0 \x5E\xB9 |0 \x5E\xBB |0 \x5E\xB7 |0 \x5E\xBA |0 \x5E\xBE |0 \x5E\xB8 |0 \x51\x88 |0 \x68\x83 |0 \x5E\xBF |0 \x52\x8C |0 \x5E\xBD |0 \x50\x4D |0 \x5E\xC1 |0 \x5E\xC0 |0 \x5E\xC2 |0 \x5E\xC3 |0 \x4A\xB9 |0 \x52\x49 |0 \x5E\xC4 |0 \x5E\xC5 |0 \x5E\xC6 |0 \x4E\x64 |0 \x5E\xC7 |0 \x54\x52 |0 \x5E\xC8 |0 \x49\xC2 |0 \x5E\xC9 |0 \x5E\xCA |0 \x5E\xCB |0 \x5E\xCC |0 \x5E\xCE |0 \x5E\xCD |0 \x4C\xD4 |0 \x5E\xCF |0 \x5E\xD0 |0 \x5E\xD1 |0 \x5E\xD3 |0 \x5E\xD2 |0 \x5E\xD4 |0 \x5E\xD6 |0 \x5E\xD5 |0 \x5E\xD7 |0 \x54\x95 |0 \x5E\xD8 |0 \x53\xE6 |0 \x4B\x55 |0 \x4B\x66 |0 \x52\xA7 |0 \x5E\xD9 |0 \x45\x99 |0 \x45\xC0 |0 \x55\xD7 |0 \x5E\xDA |0 \x45\xB6 |0 \x4D\x58 |0 \x5E\xDB |0 \x58\xFE |0 \x45\x63 |0 \x46\x7C |0 \x48\xA0 |0 \x49\x67 |0 \x45\x7C |0 \x57\x65 |0 \x45\x55 |0 \x46\x77 |0 \x5E\xDC |0 \x5E\xDD |0 \x5E\xE1 |0 \x5E\xE0 |0 \x5E\xDF |0 \x5B\x7C |0 \x47\xAE |0 \x5E\xDE |0 \x55\x8F |0 \x47\x8B |0 \x4E\xDC |0 \x47\xAB |0 \x5E\xE3 |0 \x5E\xE2 |0 \x4D\x72 |0 \x50\x86 |0 \x49\xFE |0 \x55\x9A |0 \x5E\xE4 |0 \x4C\xF0 |0 \x51\xB4 |0 \x5E\xE5 |0 \x52\xFD |0 \x48\xB9 |0 \x5E\xE6 |0 \x5E\xE9 |0 \x5E\xE7 |0 \x4A\xA9 |0 \x4E\x54 |0 \x5E\xE8 |0 \x5E\xEB |0 \x50\xDD |0 \x5E\xEA |0 \x50\xD4 |0 \x5E\xEC |0 \x5E\xED |0 \x5E\xEE |0 \x5E\xF0 |0 \x5E\xEF |0 \x4E\xA0 |0 \x51\x71 |0 \x55\xB0 |0 \x4C\xB4 |0 \x5E\xF1 |0 \x5E\xF2 |0 \x5E\xF3 |0 \x5E\xF5 |0 \x5E\xF4 |0 \x50\xCE |0 \x5E\xFD |0 \x4D\x97 |0 \x5E\xF7 |0 \x5E\xF9 |0 \x5E\xFB |0 \x54\xE1 |0 \x5E\xFC |0 \x5E\xFA |0 \x51\x42 |0 \x5E\xF6 |0 \x5E\xF8 |0 \x49\xBF |0 \x4E\x4A |0 \x5F\x41 |0 \x5E\xFE |0 \x5F\x42 |0 \x51\x82 |0 \x53\xFD |0 \x55\x49 |0 \x5F\x43 |0 \x4C\x47 |0 \x5F\x45 |0 \x51\x74 |0 \x5F\x44 |0 \x54\xA4 |0 \x5F\x4A |0 \x5F\x4C |0 \x5F\x4D |0 \x50\x89 |0 \x5F\x4B |0 \x5F\x48 |0 \x5F\x46 |0 \x5F\x47 |0 \x5F\x49 |0 \x5F\x4F |0 \x5F\x4E |0 \x52\x4F |0 \x5F\x50 |0 \x5F\x52 |0 \x5F\x53 |0 \x5F\x54 |0 \x5F\x55 |0 \x54\xA4 |1 \x5F\x51 |0 \x5F\x57 |0 \x5F\x56 |0 \x5F\x58 |0 \x4B\xB7 |0 \x5F\x5C |0 \x5F\x59 |0 \x5F\x5A |0 \x54\x47 |0 \x53\xAA |0 \x53\x7E |0 \x5F\x5B |0 \x5F\x5D |0 \x5F\x5E |0 \x5F\x5F |0 \x5F\x62 |0 \x5F\x60 |0 \x5F\x61 |0 \x5F\x63 |0 \x5F\x64 |0 \x5F\x65 |0 \x5F\x66 |0 \x5F\x67 |0 \x53\x9A |0 \x46\x4B |0 \x46\xE8 |0 \x5F\x68 |0 \x46\x59 |0 \x45\x4B |0 \x5F\x6A |0 \x5F\x69 |0 \x5F\x6B |0 \x45\xEF |0 \x4A\xB0 |0 \x4C\xBB |0 \x5F\x6C |0 \x5F\x6D |0 \x52\x99 |0 \x52\xA4 |0 \x4E\x81 |0 \x53\x96 |0 \x5F\x6E |0 \x5F\x6F |0 \x5F\x72 |0 \x5F\x70 |0 \x5F\x71 |0 \x5F\x73 |0 \x49\xDA |0 \x5F\x74 |0 \x5F\x75 |0 \x68\x68 |0 \x5F\x76 |0 \x5F\x77 |0 \x5F\x78 |0 \x4D\xC7 |0 \x5F\x79 |0 \x53\xBA |0 \x50\x57 |0 \x51\xB5 |0 \x47\x74 |0 \x5F\x7B |0 \x5F\x7D |0 \x5F\x7C |0 \x4D\x65 |0 \x48\x44 |0 \x5C\xC9 |0 \x5F\x7E |0 \x4B\x84 |0 \x5F\x7F |0 \x49\xE3 |0 \x48\x90 |0 \x5F\x80 |0 \x53\xF7 |0 \x5F\x81 |0 \x46\x75 |0 \x50\x80 |0 \x46\x74 |0 \x46\x78 |0 \x5F\x83 |0 \x50\x82 |0 \x48\x47 |0 \x5F\x86 |0 \x5F\x85 |0 \x5F\x84 |0 \x52\xBC |0 \x4D\xA2 |0 \x45\x52 |0 \x5F\x8B |0 \x51\xCA |0 \x46\x42 |0 \x4E\x6A |0 \x5F\x87 |0 \x5F\x89 |0 \x5F\x8A |0 \x5F\x88 |0 \x5F\x8C |0 \x5F\x8D |0 \x4E\x5F |0 \x49\xA5 |0 \x47\xAA |0 \x5F\x8E |0 \x5F\x8F |0 \x5F\x90 |0 \x5F\x93 |0 \x52\x6C |0 \x4A\x73 |0 \x5F\x94 |0 \x4A\x96 |0 \x5F\x91 |0 \x5F\x92 |0 \x5F\x97 |0 \x5F\x96 |0 \x5F\x95 |0 \x5F\x99 |0 \x5F\x98 |0 \x5F\x9A |0 \x5F\x9C |0 \x5F\x9B |0 \x55\x72 |0 \x4D\xB0 |0 \x52\x7D |0 \x5F\x9D |0 \x4F\x9B |0 \x5F\x9E |0 \x5F\x9F |0 \x5F\xA3 |0 \x5F\xA1 |0 \x5F\xA2 |0 \x5F\xA0 |0 \x5F\xA4 |0 \x5F\xA5 |0 \x53\x50 |0 \x5F\xA6 |0 \x50\xED |0 \x5F\xA7 |0 \x46\xC1 |0 \x5F\xA8 |0 \x45\xB0 |0 \x55\xC9 |0 \x4E\x4D |0 \x4A\x82 |0 \x5F\xA9 |0 \x51\xBB |0 \x45\x80 |0 \x5F\xAB |0 \x49\x5B |0 \x5F\xAC |0 \x5F\xAD |0 \x46\xD3 |0 \x4C\xC3 |0 \x5F\xB0 |0 \x5F\xAE |0 \x4D\x45 |0 \x54\xB4 |0 \x52\x48 |0 \x4C\xC2 |0 \x4A\xBE |0 \x50\xDF |0 \x5F\xAF |0 \x5F\xB1 |0 \x5F\xB2 |0 \x49\x76 |0 \x5F\xB3 |0 \x49\x84 |0 \x4A\xEF |0 \x53\x69 |0 \x52\xBF |0 \x5F\xB4 |0 \x5F\xB6 |0 \x5F\xB9 |0 \x4F\x4E |0 \x5F\xB7 |0 \x51\x95 |0 \x5F\xBA |0 \x53\x56 |0 \x5F\xB5 |0 \x51\x7B |0 \x4F\xB1 |0 \x52\xD2 |0 \x54\x5B |0 \x5F\xB8 |0 \x5F\xBB |0 \x4D\xF8 |0 \x50\x7D |0 \x5F\xBD |0 \x5F\xBE |0 \x5F\xBC |0 \x48\x7A |0 \x5F\xC4 |0 \x5F\xC3 |0 \x4A\x62 |0 \x5F\xC5 |0 \x5F\xC0 |0 \x5F\xC6 |0 \x5F\xC1 |0 \x4B\x9C |0 \x5F\xBF |0 \x5F\xC2 |0 \x5F\xC9 |0 \x5F\xC8 |0 \x49\xB4 |0 \x5F\xC7 |0 \x48\xAA |0 \x5F\xCB |0 \x5F\xCA |0 \x51\xB0 |0 \x5F\xCC |0 \x4C\x9C |0 \x5F\xCD |0 \x4D\xF0 |0 \x5F\xCE |0 \x51\xB9 |0 \x51\x4C |0 \x5F\xD0 |0 \x5F\xCF |0 \x5F\xD1 |0 \x48\x53 |0 \x49\x58 |0 \x46\x63 |0 \x5F\xD3 |0 \x53\xD2 |0 \x51\x92 |0 \x4E\xD8 |0 \x4F\xEB |0 \x48\x8C |0 \x55\x5C |0 \x5F\xD8 |0 \x4C\xDC |0 \x53\x65 |0 \x5F\xD7 |0 \x4C\xEB |0 \x45\xA1 |0 \x5F\xD6 |0 \x5F\xD4 |0 \x4F\x89 |0 \x49\xF9 |0 \x4D\xBF |0 \x4C\x71 |0 \x55\x53 |0 \x52\xD8 |0 \x5F\xDA |0 \x50\xE7 |0 \x4D\x75 |0 \x50\xAE |0 \x4F\x87 |0 \x5F\xDB |0 \x52\x86 |0 \x4B\xA7 |0 \x45\x8B |0 \x5F\xDC |0 \x5F\xDF |0 \x5F\xDE |0 \x55\xAA |0 \x4F\xD7 |0 \x5F\xE0 |0 \x54\xF5 |0 \x50\xFA |0 \x55\x53 |1 \x5F\xE1 |0 \x53\x6A |0 \x5F\xE2 |0 \x55\x5D |0 \x54\x63 |0 \x53\xD0 |0 \x45\xF1 |0 \x46\xC3 |0 \x5F\xE3 |0 \x46\x58 |0 \x48\xED |0 \x4D\xBA |0 \x5F\xE4 |0 \x4C\x70 |0 \x4D\x83 |0 \x54\xB5 |0 \x5F\xE7 |0 \x50\x8F |0 \x4C\x8A |0 \x5F\xE5 |0 \x4D\x9F |0 \x5F\xE6 |0 \x4B\xDF |0 \x49\x75 |0 \x52\x64 |0 \x5F\xE8 |0 \x47\xF4 |0 \x5F\xE9 |0 \x47\xC4 |0 \x47\xFA |0 \x50\x87 |0 \x5F\xEA |0 \x5F\xEB |0 \x4D\xCF |0 \x52\x96 |0 \x5F\xEC |0 \x53\x66 |0 \x46\x92 |0 \x5F\xED |0 \x47\x6A |0 \x5F\xEF |0 \x5F\xF0 |0 \x4D\xBE |0 \x4F\xC7 |0 \x5F\xEE |0 \x4F\xD5 |0 \x4E\x94 |0 \x48\xD4 |0 \x5F\xF1 |0 \x52\xBE |0 \x5F\xF3 |0 \x48\x91 |0 \x52\x54 |0 \x50\xB8 |0 \x50\x9B |0 \x5F\xF2 |0 \x5F\xF5 |0 \x5F\xF4 |0 \x4E\x98 |0 \x5F\xF6 |0 \x4F\x5C |0 \x5F\xF8 |0 \x4B\x86 |0 \x49\x86 |0 \x5F\xF9 |0 \x47\x8D |0 \x5F\xFA |0 \x4E\x91 |0 \x4A\xFD |0 \x51\x69 |0 \x54\x99 |0 \x5F\xFB |0 \x4F\xB0 |0 \x4B\xE9 |0 \x5F\xFC |0 \x5F\xFE |0 \x60\x41 |0 \x5F\xFD |0 \x50\xA6 |0 \x60\x42 |0 \x4A\x65 |0 \x50\xAA |0 \x49\xA7 |0 \x60\x43 |0 \x60\x44 |0 \x55\x9E |0 \x60\x47 |0 \x60\x46 |0 \x60\x49 |0 \x60\x48 |0 \x60\x4A |0 \x52\xF0 |0 \x60\x4B |0 \x45\xDD |0 \x60\x4C |0 \x60\x4D |0 \x60\x4F |0 \x60\x4E |0 \x60\x51 |0 \x60\x50 |0 \x60\x52 |0 \x60\x53 |0 \x49\xE7 |0 \x60\x54 |0 \x66\xC1 |0 \x47\x6E |0 \x60\x55 |0 \x60\x56 |0 \x54\x6B |0 \x4D\x50 |0 \x60\x57 |0 \x60\x58 |0 \x51\xC8 |0 \x60\x5A |0 \x60\x5B |0 \x48\xEF |0 \x60\x5C |0 \x49\x71 |0 \x60\x5D |0 \x45\xF5 |0 \x54\x5C |0 \x52\x87 |0 \x60\x5E |0 \x54\xD5 |0 \x60\x62 |0 \x51\xCF |0 \x60\x61 |0 \x60\x60 |0 \x60\x5F |0 \x49\xB5 |0 \x53\xE7 |0 \x60\x65 |0 \x4F\x41 |0 \x60\x66 |0 \x47\xE0 |0 \x52\xF4 |0 \x4F\xD9 |0 \x60\x68 |0 \x46\x7E |0 \x60\x63 |0 \x60\x67 |0 \x60\x64 |0 \x49\x6E |0 \x60\x6C |0 \x4A\xC7 |0 \x4D\x9B |0 \x46\xA7 |0 \x4B\x8F |0 \x60\x6B |0 \x60\x6A |0 \x52\xF5 |0 \x60\x69 |0 \x4B\x45 |0 \x4B\x7C |0 \x49\xD0 |0 \x46\xC9 |0 \x60\x6D |0 \x54\x84 |0 \x50\x48 |0 \x53\x4E |0 \x60\x73 |0 \x60\x71 |0 \x60\x72 |0 \x60\x70 |0 \x60\x6E |0 \x60\x6F |0 \x55\x9B |0 \x4F\x51 |0 \x55\xA4 |0 \x60\x77 |0 \x60\x7B |0 \x60\x7A |0 \x4E\xE0 |0 \x4C\xCC |0 \x48\x43 |0 \x60\x75 |0 \x60\x7C |0 \x60\x79 |0 \x60\x78 |0 \x60\x74 |0 \x60\x82 |0 \x60\x76 |0 \x46\xF2 |0 \x54\xCA |0 \x51\x8D |0 \x4A\xFB |0 \x60\x80 |0 \x50\x5C |0 \x47\xA1 |0 \x51\xE8 |0 \x49\xE8 |0 \x60\x81 |0 \x4F\xB6 |0 \x49\xA8 |0 \x60\x7E |0 \x60\x7F |0 \x60\x7D |0 \x60\x83 |0 \x48\x75 |0 \x4A\xD8 |0 \x60\x87 |0 \x60\x85 |0 \x60\x84 |0 \x54\x44 |0 \x60\x8C |0 \x60\x8E |0 \x60\x86 |0 \x60\x89 |0 \x60\x8B |0 \x60\x8D |0 \x4F\x53 |0 \x57\x8A |0 \x60\x8A |0 \x60\x88 |0 \x51\x7C |0 \x54\xCA |1 \x60\x92 |0 \x4B\xEC |0 \x60\x8F |0 \x60\x90 |0 \x60\x91 |0 \x60\x94 |0 \x60\x93 |0 \x51\xAB |0 \x60\x95 |0 \x52\x70 |0 \x4F\x4C |0 \x60\x96 |0 \x60\x98 |0 \x60\x97 |0 \x4D\xFE |0 \x51\xF2 |0 \x60\x9A |0 \x4F\x99 |0 \x60\x99 |0 \x60\x9B |0 \x60\x9C |0 \x4C\xEE |0 \x52\xAA |0 \x60\x9D |0 \x60\x9E |0 \x46\x6F |0 \x60\x9F |0 \x4F\xF0 |0 \x55\xE7 |0 \x4E\x85 |0 \x60\xA0 |0 \x48\x9E |0 \x4F\xCC |0 \x53\xC9 |0 \x60\xA1 |0 \x4C\xA9 |0 \x4C\x4B |0 \x4D\x59 |0 \x4B\xF7 |0 \x4F\xC8 |0 \x4B\xFB |0 \x60\xA5 |0 \x60\xA3 |0 \x60\xA2 |0 \x52\xAB |0 \x4B\xD4 |0 \x60\xA7 |0 \x60\xA4 |0 \x60\xA6 |0 \x60\xAB |0 \x60\xAA |0 \x60\xA9 |0 \x60\xA8 |0 \x60\xAC |0 \x60\xAE |0 \x46\x6C |0 \x51\xBC |0 \x60\xB0 |0 \x60\xAF |0 \x54\x71 |0 \x51\x60 |0 \x60\xB1 |0 \x48\x84 |0 \x60\xB3 |0 \x60\xB4 |0 \x54\x92 |0 \x51\x8C |0 \x51\x4B |0 \x60\xB2 |0 \x4E\xC5 |0 \x60\xB5 |0 \x60\xB6 |0 \x60\xB7 |0 \x60\xB8 |0 \x46\xC7 |0 \x52\xC2 |0 \x48\xFA |0 \x51\xFE |0 \x46\xDB |0 \x60\xBA |0 \x47\xBD |0 \x4B\x67 |0 \x60\xB9 |0 \x60\xBD |0 \x4C\xF9 |0 \x49\xE2 |0 \x4F\xB5 |0 \x47\xA6 |0 \x60\xBC |0 \x4F\x47 |0 \x4C\x78 |0 \x46\x80 |0 \x49\xF3 |0 \x4F\xF3 |0 \x60\xBB |0 \x47\x9F |0 \x48\x77 |0 \x4C\xF4 |0 \x4A\xF0 |0 \x55\x92 |0 \x60\xC0 |0 \x51\x48 |0 \x47\x68 |0 \x60\xC1 |0 \x4E\x59 |0 \x60\xC3 |0 \x4C\xE4 |0 \x4C\xBD |0 \x60\xC2 |0 \x49\xF4 |0 \x55\x63 |0 \x46\xB9 |0 \x60\xBE |0 \x60\xC5 |0 \x60\xC4 |0 \x60\xBF |0 \x46\x88 |0 \x60\xC9 |0 \x60\xCC |0 \x46\xBF |0 \x60\xC8 |0 \x60\xD0 |0 \x60\xC6 |0 \x50\x6D |0 \x4C\xE7 |0 \x4E\xF7 |0 \x60\xCD |0 \x47\x57 |0 \x60\xCA |0 \x60\xCB |0 \x48\x81 |0 \x52\x68 |0 \x60\xC7 |0 \x4A\xE4 |0 \x4A\xF3 |0 \x49\xF6 |0 \x54\xED |0 \x60\xCF |0 \x53\x74 |0 \x60\xCE |0 \x4A\x4A |0 \x47\xCB |0 \x54\xEB |0 \x50\x70 |0 \x60\xDC |0 \x60\xDA |0 \x60\xD8 |0 \x60\xD2 |0 \x60\xD7 |0 \x51\xA3 |0 \x48\x80 |0 \x60\xD1 |0 \x60\xD9 |0 \x60\xDD |0 \x48\xCB |0 \x4A\x53 |0 \x4D\xC9 |0 \x60\xD3 |0 \x60\xD4 |0 \x60\xDB |0 \x54\xD3 |0 \x54\xA6 |0 \x60\xD6 |0 \x49\xDC |0 \x48\x9D |0 \x60\xD5 |0 \x4B\x97 |0 \x53\x7D |0 \x47\x93 |0 \x48\xA5 |0 \x4A\x9B |0 \x60\xDE |0 \x60\xE1 |0 \x60\xDF |0 \x46\x87 |0 \x60\xE8 |0 \x60\xE0 |0 \x60\xE3 |0 \x4A\x80 |0 \x60\xE7 |0 \x60\xE2 |0 \x48\x4E |0 \x4C\xFC |0 \x55\x6B |0 \x4E\x9A |0 \x60\xE6 |0 \x48\x60 |0 \x60\xE4 |0 \x4B\xAA |0 \x48\x59 |0 \x60\xE9 |0 \x60\xEE |0 \x60\xEA |0 \x60\xE5 |0 \x60\xEC |0 \x52\xE6 |0 \x4F\x6B |0 \x60\xED |0 \x60\xEB |0 \x5B\xCC |0 \x55\xA8 |0 \x4E\x93 |0 \x49\xE4 |0 \x49\xF7 |0 \x60\xF2 |0 \x60\xF9 |0 \x60\xF4 |0 \x60\xF8 |0 \x60\xF6 |0 \x60\xEF |0 \x60\xF5 |0 \x60\xF3 |0 \x48\x66 |0 \x47\x59 |0 \x60\xF7 |0 \x60\xF0 |0 \x60\xF1 |1 \x48\x68 |0 \x53\x73 |0 \x52\xDA |0 \x60\xFD |0 \x48\x9A |0 \x51\xD4 |0 \x60\xFB |0 \x60\xFE |0 \x61\x41 |0 \x60\xFA |0 \x60\xFC |0 \x52\xDA |1 \x60\xF1 |0 \x61\x42 |0 \x61\x45 |0 \x61\x44 |0 \x53\x73 |1 \x4D\x9A |0 \x4B\x69 |0 \x61\x43 |0 \x61\x47 |0 \x61\x46 |0 \x61\x48 |0 \x61\x4A |0 \x55\xEB |0 \x61\x4B |0 \x52\x78 |0 \x61\x4C |0 \x51\xBF |0 \x61\x4E |0 \x61\x4D |0 \x55\xFA |0 \x52\x73 |0 \x61\x4F |0 \x61\x50 |0 \x61\x51 |0 \x61\x52 |0 \x61\x53 |0 \x53\x9C |0 \x50\x84 |0 \x61\x54 |0 \x61\x55 |0 \x61\x56 |0 \x61\x57 |0 \x61\x58 |0 \x54\xCB |0 \x61\x59 |0 \x51\x6E |0 \x61\x5A |0 \x61\x5C |0 \x61\x5B |0 \x61\x5D |0 \x61\x5E |0 \x61\x5F |0 \x61\x61 |0 \x61\x60 |0 \x61\x62 |0 \x4C\x4E |0 \x55\xEF |0 \x46\x8C |0 \x4F\x82 |0 \x4C\x99 |0 \x55\x79 |0 \x55\xA5 |0 \x61\x63 |0 \x5A\xA5 |0 \x61\x64 |0 \x61\x66 |0 \x4D\xFA |0 \x61\x65 |0 \x61\x67 |0 \x61\x68 |0 \x4A\xD1 |0 \x61\x69 |0 \x45\x7D |0 \x61\x6A |0 \x61\x6D |0 \x61\x6C |0 \x61\x6B |0 \x61\x6E |0 \x61\x6F |0 \x47\xB1 |0 \x55\x96 |0 \x45\x98 |0 \x61\x71 |0 \x61\x70 |0 \x61\x72 |0 \x61\x74 |0 \x61\x75 |0 \x61\x73 |0 \x47\x8F |0 \x4F\xFB |0 \x61\x78 |0 \x61\x79 |0 \x61\x7A |0 \x4D\x9C |0 \x4A\x69 |0 \x54\xF9 |0 \x61\x7B |0 \x4F\x69 |0 \x61\x7C |0 \x61\x7D |0 \x61\x7E |0 \x55\x8B |0 \x54\xB6 |0 \x61\x7F |0 \x61\x80 |0 \x51\xF6 |0 \x4D\xB5 |0 \x52\xA0 |0 \x49\x85 |0 \x47\x60 |0 \x61\x81 |0 \x46\x70 |0 \x53\xDC |0 \x61\x82 |0 \x51\xE6 |0 \x49\x8E |0 \x61\x83 |0 \x49\x9A |0 \x4F\xEC |0 \x54\xE4 |0 \x61\x84 |0 \x61\x85 |0 \x61\x86 |0 \x61\x87 |0 \x4C\xAB |0 \x4E\x99 |0 \x61\x89 |0 \x55\xB8 |0 \x61\x88 |0 \x61\x8B |0 \x61\x8A |0 \x61\x8C |0 \x4B\xB5 |0 \x61\x8D |0 \x54\x79 |0 \x48\xBB |0 \x61\x8E |0 \x4B\x89 |0 \x61\x8F |0 \x61\x90 |0 \x53\xCA |0 \x61\x93 |0 \x61\x92 |0 \x61\x91 |0 \x4D\xA8 |0 \x61\x94 |0 \x48\xD7 |0 \x61\x95 |0 \x61\x96 |0 \x53\xE4 |0 \x61\x97 |0 \x61\x98 |0 \x61\x99 |0 \x53\xB6 |0 \x4B\x41 |0 \x4A\x42 |0 \x55\x7F |0 \x4E\x50 |0 \x61\x9A |0 \x52\x67 |0 \x52\x6A |0 \x61\x9B |0 \x52\x92 |0 \x4C\x8C |0 \x4C\xC5 |0 \x53\x82 |0 \x49\x7B |0 \x4B\x79 |0 \x4C\xFB |0 \x61\x9E |0 \x61\x9C |0 \x50\xEB |0 \x52\xD5 |0 \x48\xAC |0 \x54\x51 |0 \x50\x4E |0 \x4D\xF6 |0 \x61\xA3 |0 \x4E\x9B |0 \x4A\xB2 |0 \x52\x63 |0 \x52\x88 |0 \x61\xA1 |0 \x61\xA4 |0 \x61\x9F |0 \x61\xA2 |0 \x50\xB6 |0 \x4D\x63 |0 \x4E\xE9 |0 \x61\xA0 |0 \x61\xA6 |0 \x61\xA7 |0 \x4E\xAB |0 \x4B\xE3 |0 \x61\xB0 |0 \x47\x4F |0 \x48\x74 |0 \x50\x51 |0 \x55\xEC |0 \x47\xE3 |0 \x50\x79 |0 \x61\xA5 |0 \x53\x5E |0 \x4D\x5C |0 \x61\xA8 |0 \x61\xA9 |0 \x4C\x96 |0 \x61\xAA |0 \x4A\xB4 |0 \x4C\xB3 |0 \x55\xE9 |0 \x61\xAD |0 \x61\xB0 |1 \x61\xAC |0 \x61\xAB |0 \x52\xC4 |0 \x4D\x62 |0 \x61\xAF |0 \x61\xAE |0 \x52\x47 |0 \x4C\xAF |0 \x61\xB4 |0 \x61\xB3 |0 \x61\xB5 |0 \x51\xCE |0 \x61\xB2 |0 \x4B\xA4 |0 \x61\xB1 |0 \x61\xB6 |0 \x4D\xB6 |0 \x4C\xA0 |0 \x52\x6F |0 \x52\x9A |0 \x61\xBA |0 \x61\xBB |0 \x61\xB7 |0 \x61\xB8 |0 \x61\xB9 |0 \x51\xD8 |0 \x61\xBF |0 \x61\xBD |0 \x51\x91 |0 \x4D\x8A |0 \x50\x60 |0 \x61\xBC |0 \x61\xBE |0 \x61\xC1 |0 \x4E\xF6 |0 \x61\xC2 |0 \x61\xC4 |0 \x50\x76 |0 \x61\xC0 |0 \x61\xC3 |0 \x61\xCA |0 \x61\xC7 |0 \x61\xC6 |0 \x53\x5F |0 \x61\xC8 |0 \x61\xC9 |0 \x54\x74 |0 \x61\xC5 |0 \x61\xCB |0 \x61\xCC |0 \x61\xCD |0 \x4D\xBD |0 \x61\xCE |0 \x61\xCF |0 \x61\xD0 |0 \x61\xD1 |0 \x61\xD2 |0 \x4A\x47 |0 \x53\x8A |0 \x51\x73 |0 \x4C\xD0 |0 \x45\xC3 |0 \x4D\xB3 |0 \x4A\x48 |0 \x4C\x6A |0 \x61\xD3 |0 \x61\xD4 |0 \x4A\x89 |0 \x61\xD5 |0 \x61\xD6 |0 \x61\xD7 |0 \x61\xD8 |0 \x53\x58 |0 \x46\x6A |0 \x57\x78 |0 \x62\xBA |0 \x50\x94 |0 \x61\xD9 |0 \x4C\x58 |0 \x61\xDA |0 \x61\xDB |0 \x61\xDC |0 \x4E\x5B |0 \x4C\xAA |0 \x4F\xC1 |0 \x4F\xB8 |0 \x4A\x63 |0 \x4B\xB8 |0 \x61\xDD |0 \x48\x9F |0 \x61\xDE |0 \x49\x56 |0 \x61\xDF |0 \x61\xE1 |0 \x54\xDB |0 \x4B\x87 |0 \x53\xAC |0 \x61\xE0 |0 \x46\x7B |0 \x61\xE2 |0 \x4D\xFC |0 \x54\xAE |0 \x61\xE3 |0 \x61\xE4 |0 \x61\xE5 |0 \x61\xE6 |0 \x61\xE8 |0 \x61\xE7 |0 \x4C\x4A |0 \x61\xE9 |0 \x61\xEA |0 \x61\xEB |0 \x55\xB4 |0 \x45\xC4 |0 \x61\xEC |0 \x47\xC3 |0 \x4D\x54 |0 \x61\xED |0 \x53\xC5 |0 \x61\xEE |0 \x51\x9A |0 \x61\xEF |0 \x61\xF0 |0 \x4E\xBD |0 \x49\x72 |0 \x61\xF2 |0 \x4F\x7B |0 \x4A\xDD |0 \x61\xF1 |0 \x61\xF4 |0 \x54\x42 |0 \x4F\xE5 |0 \x46\xD9 |0 \x46\x83 |0 \x49\x53 |0 \x4D\xD0 |0 \x61\xF3 |0 \x4E\xBA |0 \x4E\x5D |0 \x50\x4B |0 \x61\xF9 |0 \x55\x59 |0 \x52\xD7 |0 \x4A\xB8 |0 \x62\x46 |0 \x53\x77 |0 \x62\x43 |0 \x62\x41 |0 \x61\xF7 |0 \x61\xF5 |0 \x61\xF6 |0 \x46\xD6 |0 \x4A\x5F |0 \x54\xB0 |0 \x4D\x5A |0 \x45\xEE |0 \x61\xFB |0 \x61\xFA |0 \x61\xFE |0 \x62\x44 |0 \x61\xFD |0 \x61\xF8 |0 \x46\x46 |0 \x61\xFC |0 \x54\x7A |0 \x4B\xD3 |0 \x62\x42 |0 \x62\x45 |0 \x4E\xC9 |0 \x62\x4A |0 \x53\xF6 |0 \x62\x52 |0 \x50\xE2 |0 \x62\x58 |0 \x47\x4C |0 \x62\x51 |0 \x62\x50 |0 \x62\x4B |0 \x54\x7B |0 \x62\x49 |0 \x62\x47 |0 \x49\x77 |0 \x4D\xF7 |0 \x62\x4D |0 \x62\x4C |0 \x62\x4F |0 \x53\xB3 |1 \x48\x42 |0 \x53\xB3 |0 \x51\x5F |0 \x62\x4E |0 \x46\xDC |0 \x4B\x62 |0 \x62\x48 |0 \x62\x5F |0 \x62\x5A |0 \x4B\xA1 |0 \x49\xE0 |0 \x62\x5D |0 \x62\x5B |0 \x62\x62 |0 \x54\x86 |0 \x62\x63 |0 \x62\x5C |0 \x62\x59 |0 \x62\x60 |0 \x62\x57 |0 \x62\x53 |0 \x51\xEE |0 \x62\x55 |0 \x62\x61 |0 \x62\x56 |0 \x62\x64 |0 \x62\x54 |0 \x54\xB3 |0 \x52\xC9 |0 \x62\x5E |0 \x62\x75 |0 \x62\x6E |0 \x47\x53 |0 \x62\x67 |0 \x46\xD7 |0 \x4C\x73 |0 \x62\x68 |0 \x4C\x51 |0 \x51\x80 |0 \x62\x6C |0 \x4B\xA8 |0 \x53\xD4 |0 \x62\x70 |0 \x51\x6A |0 \x54\xE9 |0 \x4B\x6C |0 \x51\x6D |0 \x48\xCC |0 \x62\x71 |0 \x62\x65 |0 \x62\x74 |0 \x62\x69 |0 \x62\x76 |0 \x62\x6A |0 \x62\x6B |0 \x54\xF7 |0 \x62\x6F |0 \x52\xC9 |1 \x62\x6D |0 \x50\xDB |0 \x62\x72 |0 \x54\x82 |0 \x62\x66 |0 \x62\x73 |0 \x54\xD8 |0 \x49\x4A |0 \x62\x77 |0 \x4B\x75 |0 \x4F\x7C |0 \x62\x85 |0 \x62\x84 |0 \x62\x79 |0 \x47\xF2 |0 \x62\x82 |0 \x62\x7E |0 \x45\xF9 |0 \x55\x9F |0 \x4A\x59 |0 \x48\xDF |0 \x55\x47 |0 \x62\x78 |0 \x50\x71 |0 \x4E\x72 |0 \x62\x81 |0 \x62\x7C |0 \x4F\x79 |0 \x51\x6C |0 \x62\x7F |0 \x62\x83 |0 \x54\x4E |0 \x50\xD9 |0 \x62\x7B |0 \x62\x7D |0 \x50\xE0 |0 \x62\x80 |0 \x62\x7A |0 \x53\xF8 |0 \x4F\x93 |0 \x4F\xE3 |0 \x50\x95 |0 \x52\x59 |0 \x62\x89 |0 \x62\x93 |0 \x62\x90 |0 \x49\xB2 |0 \x62\x8A |0 \x4A\xBA |0 \x62\x87 |0 \x62\x8C |0 \x50\xB9 |0 \x62\x88 |0 \x62\x8F |0 \x4C\x94 |0 \x62\x91 |0 \x50\x83 |0 \x62\x86 |0 \x4F\x6D |0 \x62\x8B |0 \x62\x8E |0 \x4F\x9A |0 \x62\x92 |0 \x62\x94 |0 \x62\x8D |0 \x52\x7B |0 \x50\x88 |0 \x4B\xF4 |0 \x62\x96 |0 \x51\x8B |0 \x62\x95 |0 \x52\xBD |0 \x62\x9D |0 \x55\x6C |0 \x55\x7B |0 \x62\x9C |0 \x62\x9B |0 \x62\x97 |0 \x62\x98 |0 \x54\x9A |0 \x62\x9A |0 \x54\xA8 |0 \x53\xF8 |1 \x4F\xA1 |0 \x62\x99 |0 \x4E\x8B |0 \x46\x5E |0 \x54\xD1 |0 \x62\xA0 |0 \x62\xA5 |0 \x52\xF7 |0 \x62\xA4 |0 \x53\xA8 |0 \x62\xA6 |0 \x62\xA7 |0 \x55\x65 |0 \x62\x9E |0 \x62\xA9 |0 \x54\x91 |0 \x62\xA3 |0 \x62\xA1 |0 \x62\x9F |0 \x62\xA2 |0 \x50\xDE |0 \x54\xF0 |0 \x51\xD3 |0 \x62\xA8 |0 \x62\xB0 |0 \x62\xB6 |0 \x62\xB7 |0 \x62\xAA |0 \x4A\x92 |0 \x62\xB4 |0 \x62\xAC |0 \x62\xAE |0 \x62\xB8 |0 \x62\xAD |0 \x62\xB1 |0 \x4C\xEC |0 \x51\xAD |0 \x62\xB2 |0 \x62\xB5 |0 \x62\xAB |0 \x4F\xBF |0 \x62\xAF |0 \x4C\xF1 |0 \x54\x5A |0 \x49\x98 |0 \x46\xE1 |0 \x62\xB3 |0 \x53\xF9 |0 \x62\xBB |0 \x62\xBF |0 \x62\xBD |0 \x4F\xBB |0 \x62\xBC |0 \x4E\xED |0 \x62\xBE |0 \x62\xC0 |0 \x62\xC1 |0 \x62\xC4 |0 \x62\xC2 |0 \x45\x68 |0 \x62\xC3 |0 \x4F\xF6 |0 \x4C\x95 |0 \x55\xE2 |0 \x62\xC5 |0 \x53\xED |0 \x50\x5F |0 \x62\xC9 |0 \x54\x96 |0 \x4E\xDA |0 \x4C\xBF |0 \x62\xC6 |0 \x62\xC8 |0 \x62\xC7 |0 \x5C\xBD |0 \x5C\xBE |0 \x62\xCB |0 \x62\xCA |0 \x4C\xA6 |0 \x5F\x82 |0 \x62\xCC |0 \x62\xCD |0 \x62\xCF |0 \x4A\xAB |0 \x52\x60 |0 \x52\xFB |0 \x62\xD1 |0 \x4F\x72 |0 \x52\x50 |0 \x55\x88 |0 \x62\xD2 |0 \x62\xD3 |0 \x4B\xCB |0 \x62\xD4 |0 \x51\xB6 |0 \x51\x44 |0 \x4F\xAA |0 \x62\xD8 |0 \x62\xDA |0 \x62\xD5 |0 \x4F\x5D |0 \x62\xD6 |0 \x55\xA2 |0 \x62\xD7 |0 \x62\xD9 |0 \x62\xE3 |0 \x62\xDC |0 \x62\xDF |0 \x62\xDB |0 \x62\xDD |0 \x62\xDE |0 \x4F\xEA |0 \x62\xE0 |0 \x53\xD8 |0 \x4D\xF9 |0 \x62\xE1 |0 \x62\xE4 |0 \x55\xBB |0 \x62\xE9 |0 \x62\xE5 |0 \x62\xE8 |0 \x55\xC2 |0 \x62\xE6 |0 \x62\xE7 |0 \x4E\x66 |0 \x53\xA5 |0 \x4F\x74 |0 \x52\x4E |0 \x62\xF3 |0 \x62\xEF |0 \x55\x99 |0 \x62\xED |0 \x4E\xCD |0 \x62\xEE |0 \x62\xEB |0 \x62\xEC |0 \x62\xF1 |0 \x62\xF4 |0 \x62\xF2 |0 \x62\xF0 |0 \x62\xEA |0 \x54\xDC |0 \x62\xFA |0 \x53\xA1 |0 \x62\xF8 |0 \x62\xF9 |0 \x62\xF5 |0 \x52\x6D |0 \x62\xF7 |0 \x62\xF6 |0 \x53\xE8 |0 \x52\xA1 |0 \x62\xFD |0 \x62\xFE |0 \x63\x49 |0 \x53\x47 |0 \x63\x42 |0 \x63\x48 |0 \x62\xFB |0 \x63\x46 |0 \x63\x4A |0 \x51\xC3 |0 \x63\x43 |0 \x63\x45 |0 \x63\x47 |0 \x63\x41 |0 \x4E\x6E |0 \x62\xFC |0 \x63\x4B |0 \x63\x44 |0 \x48\xC2 |0 \x63\x4E |0 \x63\x4C |0 \x63\x55 |0 \x63\x4F |0 \x63\x57 |0 \x51\xD6 |0 \x63\x59 |0 \x63\x51 |0 \x63\x52 |0 \x63\x56 |0 \x63\x4D |0 \x54\xF4 |0 \x63\x50 |0 \x63\x53 |0 \x63\x58 |0 \x63\x5C |0 \x53\xE8 |1 \x63\x5A |0 \x63\x5B |0 \x63\x63 |0 \x63\x64 |0 \x50\x90 |0 \x51\xC6 |0 \x63\x62 |0 \x55\xBD |0 \x63\x5E |0 \x63\x61 |0 \x63\x5D |0 \x63\x5F |0 \x63\x65 |0 \x63\x66 |0 \x63\x60 |0 \x52\xA1 |1 \x63\x68 |0 \x63\x67 |0 \x53\x51 |0 \x63\x69 |0 \x63\x6A |0 \x63\x6B |0 \x63\x6C |0 \x63\x6D |0 \x4B\x43 |0 \x63\x6E |0 \x63\x6F |0 \x4B\x88 |0 \x45\xA4 |0 \x63\x70 |0 \x63\x71 |0 \x48\x6C |0 \x4B\xA5 |0 \x63\x72 |0 \x47\x80 |0 \x4D\xA5 |0 \x63\x73 |0 \x4B\xED |0 \x63\x74 |0 \x4A\xEA |0 \x46\xC0 |0 \x63\x75 |0 \x4F\x54 |0 \x63\x7A |0 \x63\x78 |0 \x52\xE9 |0 \x63\x79 |0 \x63\x77 |0 \x4A\xA7 |0 \x63\x76 |0 \x63\x7B |0 \x4F\x6A |0 \x4A\x54 |0 \x63\x82 |0 \x63\x7E |0 \x4A\x57 |0 \x63\x7D |0 \x63\x80 |0 \x63\x7C |0 \x63\x81 |0 \x63\x83 |0 \x4B\x8D |0 \x63\x7F |0 \x54\xC5 |0 \x63\x86 |0 \x4F\x5A |0 \x63\x85 |0 \x54\x48 |0 \x63\x84 |0 \x49\xBD |0 \x4F\x60 |0 \x63\x87 |0 \x63\x88 |0 \x48\x98 |0 \x49\xA4 |0 \x63\x89 |0 \x46\xF8 |0 \x63\x8A |0 \x63\x8B |0 \x49\x6A |0 \x63\x8C |0 \x4F\x8A |0 \x54\x4D |0 \x63\x91 |0 \x63\x92 |0 \x4F\xA8 |0 \x53\x49 |0 \x63\x90 |0 \x4F\x43 |0 \x63\x8D |0 \x63\x8F |0 \x45\x7B |0 \x4C\x8D |0 \x63\x8E |0 \x63\x93 |0 \x4B\x51 |0 \x63\x97 |0 \x63\x94 |0 \x54\x5E |0 \x51\xBA |0 \x63\x98 |0 \x51\xDA |0 \x63\x96 |0 \x63\x99 |0 \x63\x9A |0 \x63\x95 |0 \x63\x9B |0 \x63\x9E |0 \x63\xA0 |0 \x63\x9D |0 \x63\x9C |0 \x63\x9F |0 \x50\x6B |0 \x63\xA2 |0 \x63\xA1 |0 \x54\x6C |0 \x63\xA4 |0 \x54\xAF |0 \x63\xA3 |0 \x63\xA7 |0 \x63\xA5 |0 \x63\xA6 |0 \x63\xA8 |0 \x63\xA9 |0 \x4D\xDF |0 \x63\xAA |0 \x63\xAB |0 \x63\xAC |0 \x45\x58 |0 \x46\x55 |0 \x63\xAD |0 \x4D\xF2 |0 \x4B\xFA |0 \x63\xAE |0 \x63\xAF |0 \x45\xBB |0 \x46\xFB |0 \x63\xB0 |0 \x4A\x50 |0 \x53\xEB |0 \x63\xB1 |0 \x4A\x4C |0 \x63\xB2 |0 \x63\xB4 |0 \x4E\xD0 |0 \x63\xB3 |0 \x48\x85 |0 \x63\xB5 |0 \x63\xB6 |0 \x63\xB7 |0 \x48\x7E |0 \x63\xB8 |0 \x63\xBA |0 \x63\xB9 |0 \x63\xBB |0 \x47\x7D |0 \x63\xBC |0 \x53\x60 |0 \x63\xBD |0 \x47\xB7 |0 \x4C\xD1 |0 \x63\xBE |0 \x63\xBF |0 \x63\xC0 |0 \x47\x9A |0 \x4F\xC4 |0 \x63\xC1 |0 \x45\xC9 |0 \x50\xF2 |0 \x63\xC4 |0 \x49\xD2 |0 \x63\xC3 |0 \x63\xC5 |0 \x4B\xC8 |0 \x63\xC2 |0 \x4A\xB6 |0 \x47\x94 |0 \x63\xC6 |0 \x63\xC7 |0 \x50\xEF |0 \x54\xCC |0 \x63\xC8 |0 \x4A\x71 |0 \x45\xE2 |0 \x4A\x9A |0 \x4B\xAD |0 \x4C\xDF |0 \x63\xC9 |0 \x63\xCB |0 \x4D\x68 |0 \x4F\x66 |0 \x49\xBA |0 \x63\xCA |0 \x63\xCE |0 \x63\xCF |0 \x51\x76 |0 \x55\xE3 |0 \x63\xCD |0 \x4F\x88 |0 \x49\xFD |0 \x63\xCC |0 \x4E\x90 |0 \x51\xC1 |0 \x63\xD3 |0 \x54\xFB |0 \x49\x48 |0 \x4C\xB0 |0 \x50\xD3 |0 \x63\xD2 |0 \x63\xD1 |0 \x51\x8E |0 \x4B\x5F |0 \x47\x50 |0 \x4D\x8D |0 \x4D\xE7 |0 \x63\xD4 |0 \x63\xD0 |0 \x63\xD6 |0 \x63\xD7 |0 \x63\xD5 |0 \x4E\xB4 |0 \x4D\x8C |0 \x4B\x76 |0 \x4A\x7E |0 \x63\xDA |0 \x4F\xA0 |0 \x4F\xA2 |0 \x4A\xCB |0 \x63\xDD |0 \x48\xE7 |0 \x46\xFD |0 \x63\xD9 |0 \x63\xDE |0 \x4D\x91 |0 \x63\xDB |0 \x63\xDC |0 \x63\xDF |0 \x63\xD8 |0 \x49\x52 |0 \x4A\x4F |0 \x4B\x83 |0 \x49\xD6 |0 \x55\xF2 |0 \x52\x65 |0 \x63\xE1 |0 \x46\x89 |0 \x63\xE3 |0 \x50\xB2 |0 \x49\x63 |0 \x4A\xE8 |0 \x63\xE0 |0 \x63\xE2 |0 \x4B\xC1 |0 \x51\x81 |0 \x48\xF3 |0 \x63\xE4 |0 \x63\xF2 |0 \x55\x70 |0 \x63\xF1 |0 \x63\xED |0 \x63\xEA |0 \x63\xEC |0 \x63\xEB |0 \x63\xE7 |0 \x52\x46 |0 \x63\xE6 |0 \x4E\x96 |0 \x4E\x9C |0 \x4F\x9C |0 \x63\xE8 |0 \x63\xE5 |0 \x63\xEF |0 \x63\xF0 |0 \x47\xE2 |0 \x55\xAB |0 \x4F\xE1 |0 \x4F\x4D |0 \x54\xE5 |0 \x55\x73 |0 \x4F\xE2 |0 \x63\xF4 |0 \x63\xF3 |0 \x52\xF9 |0 \x63\xF7 |0 \x63\xE9 |0 \x63\xF6 |0 \x63\xF8 |0 \x49\x7C |0 \x63\xF5 |0 \x4A\x6E |0 \x4D\xBB |0 \x63\xF9 |0 \x4D\x7D |0 \x63\xFD |0 \x53\x81 |0 \x63\xFE |0 \x55\xA1 |0 \x63\xFA |0 \x4D\x87 |0 \x64\x41 |0 \x63\xFB |0 \x64\x46 |0 \x64\x42 |0 \x64\x44 |0 \x64\x43 |0 \x64\x45 |0 \x64\x47 |0 \x4A\x75 |0 \x64\x49 |0 \x64\x48 |0 \x4E\x4F |0 \x64\x4C |0 \x4A\xD7 |0 \x64\x4B |0 \x64\x4D |0 \x64\x4E |0 \x47\x81 |0 \x61\x76 |0 \x4B\x7B |0 \x64\x4A |0 \x49\xDB |0 \x64\x4F |0 \x64\x50 |0 \x64\x51 |0 \x51\x6B |0 \x5B\x88 |0 \x64\x52 |0 \x64\x53 |0 \x53\xFE |0 \x64\x55 |0 \x64\x56 |0 \x64\x57 |0 \x64\x54 |0 \x64\x58 |0 \x45\x81 |0 \x64\x59 |0 \x64\x5B |0 \x64\x5A |0 \x4A\x99 |0 \x64\x5C |0 \x46\x48 |0 \x64\x5D |0 \x64\x5E |0 \x64\x5F |0 \x64\x60 |0 \x4C\xCF |0 \x49\x94 |0 \x64\x61 |0 \x4C\x68 |0 \x53\x55 |0 \x64\x62 |0 \x64\x63 |0 \x55\x93 |0 \x64\x64 |0 \x64\x65 |0 \x64\x66 |0 \x64\x68 |0 \x64\x67 |0 \x64\x69 |0 \x50\x64 |0 \x64\x6A |0 \x64\x6B |0 \x64\x6D |0 \x64\x6C |0 \x49\xEA |0 \x46\xB6 |0 \x49\xC8 |0 \x49\xAF |0 \x4A\xF1 |0 \x4D\xA3 |0 \x4A\xEB |0 \x4A\x5D |0 \x64\x70 |0 \x49\xA1 |0 \x4B\xD2 |0 \x64\x6F |0 \x64\x71 |0 \x4C\x62 |0 \x4D\xEF |0 \x64\x73 |0 \x64\x74 |0 \x48\x7F |0 \x64\x76 |0 \x49\x74 |0 \x4A\xF4 |0 \x46\xD0 |0 \x50\x7B |0 \x64\x72 |0 \x48\x72 |0 \x46\x41 |0 \x64\x75 |0 \x55\xF8 |0 \x4B\x4D |0 \x50\x67 |0 \x46\x50 |0 \x64\x77 |0 \x4F\xFD |0 \x64\x79 |0 \x64\x78 |0 \x53\x9E |0 \x50\xD7 |0 \x64\x7B |0 \x4D\xEE |0 \x4F\x94 |0 \x4A\xAD |0 \x4F\x4F |0 \x47\xE5 |0 \x64\x7A |0 \x55\x66 |0 \x4F\xA7 |0 \x46\xEC |0 \x52\xC1 |0 \x64\x7C |0 \x64\x7D |0 \x64\x7F |0 \x64\x80 |0 \x4E\x8F |0 \x64\x7E |0 \x53\x5A |0 \x55\x74 |0 \x64\x81 |0 \x4C\x7C |0 \x64\x82 |0 \x55\x84 |0 \x64\x84 |0 \x64\x83 |0 \x64\x86 |0 \x64\x85 |0 \x64\x87 |0 \x64\x88 |0 \x64\x89 |0 \x46\xF9 |0 \x51\x51 |0 \x64\x8A |0 \x53\xCC |0 \x64\x8B |0 \x4A\xAA |0 \x64\x8C |0 \x51\xC9 |0 \x50\xEE |0 \x64\x8D |0 \x48\xD0 |0 \x64\x8F |0 \x4A\x78 |0 \x46\xDF |0 \x51\xDE |0 \x4C\xED |0 \x55\x61 |0 \x46\xFA |0 \x64\x92 |0 \x64\x91 |0 \x64\x90 |0 \x64\x98 |0 \x64\x96 |0 \x64\x93 |0 \x64\x95 |0 \x64\x94 |0 \x64\x97 |0 \x4D\xC2 |0 \x64\x9B |0 \x4C\xCD |0 \x64\x9C |0 \x55\xCB |0 \x64\x99 |0 \x64\x9A |0 \x47\x84 |0 \x50\xB4 |0 \x50\xD1 |0 \x64\x9D |0 \x64\x9F |0 \x64\x9E |0 \x64\xA0 |0 \x4C\xA8 |0 \x4D\x7C |0 \x64\xA3 |0 \x64\xA1 |0 \x64\xA2 |0 \x64\xA4 |0 \x50\xFC |0 \x64\xA7 |0 \x64\xA8 |0 \x64\xA6 |0 \x64\xA5 |0 \x55\xA7 |0 \x64\xAA |0 \x64\xAE |0 \x64\xAB |0 \x64\xA9 |0 \x64\xAC |0 \x64\xAD |0 \x64\xB2 |0 \x64\xAF |0 \x53\x68 |0 \x64\xB1 |0 \x64\xB3 |0 \x64\xB0 |0 \x64\xB5 |0 \x52\xF6 |0 \x64\xB4 |0 \x64\xB7 |0 \x64\xB8 |0 \x64\xBA |0 \x64\xB9 |0 \x64\xB6 |0 \x64\xBC |0 \x64\xBB |0 \x4C\xA1 |0 \x64\xBE |0 \x64\xBD |0 \x64\xBF |0 \x64\xC0 |0 \x64\xC1 |0 \x64\xC2 |0 \x47\x9C |0 \x50\x44 |0 \x53\x53 |0 \x53\x7A |0 \x64\xC3 |0 \x64\xC4 |0 \x53\x53 |1 \x64\xC6 |0 \x64\xC5 |0 \x64\xC7 |0 \x46\x53 |0 \x64\xC8 |0 \x4D\xAA |0 \x48\x97 |0 \x64\xC9 |0 \x4E\x55 |0 \x64\xCA |0 \x4C\xB1 |0 \x47\x52 |0 \x64\xCB |0 \x64\xCE |0 \x4B\xA6 |0 \x64\xCD |0 \x64\xCC |0 \x48\xA6 |0 \x64\xCF |0 \x4A\x5A |0 \x64\xD2 |0 \x4D\x6E |0 \x64\xD0 |0 \x64\xD1 |0 \x64\xD4 |0 \x64\xD5 |0 \x4A\x68 |0 \x64\xD3 |0 \x64\xD7 |0 \x51\x5B |0 \x64\xD6 |0 \x47\x87 |0 \x64\xD8 |0 \x64\xD9 |0 \x4E\xF4 |0 \x48\xB7 |0 \x55\xA6 |0 \x64\xDA |0 \x46\x93 |0 \x64\xDC |0 \x64\xDB |0 \x64\xDF |0 \x50\x6C |0 \x64\xDE |0 \x50\xFE |0 \x64\xDD |0 \x64\xE1 |0 \x64\xE0 |0 \x64\xE2 |0 \x54\xEE |0 \x64\xE3 |0 \x64\xE4 |0 \x64\xE5 |0 \x50\xA9 |0 \x52\xE1 |0 \x64\xE6 |0 \x64\xE7 |0 \x64\xE8 |0 \x4D\x5E |0 \x64\xE9 |0 \x4D\x74 |0 \x64\xEA |0 \x64\xEB |0 \x64\xED |0 \x64\xEC |0 \x64\xEE |0 \x61\x49 |0 \x64\xEF |0 \x47\xDF |0 \x52\xE5 |0 \x48\x45 |0 \x64\xF0 |0 \x45\xD5 |0 \x47\xF5 |0 \x48\x41 |0 \x54\x7E |0 \x55\xDF |0 \x49\xCD |0 \x50\x68 |0 \x4B\xA9 |0 \x46\x73 |0 \x48\xD6 |0 \x64\xF2 |0 \x64\xF4 |0 \x64\xF3 |0 \x53\x5D |0 \x64\xF6 |0 \x4E\x9E |0 \x49\xEF |0 \x53\xDF |0 \x64\xF5 |0 \x4A\x9C |0 \x64\xF7 |0 \x4E\x58 |0 \x64\xFA |0 \x64\xF9 |0 \x54\xA9 |0 \x49\xD1 |0 \x4B\x49 |0 \x47\x44 |0 \x4C\x72 |0 \x64\xF8 |0 \x4B\xFC |0 \x65\x44 |0 \x65\x41 |0 \x64\xFD |0 \x4B\xDA |0 \x50\xBB |0 \x64\xFB |0 \x51\x5E |0 \x48\xF0 |0 \x64\xFC |0 \x65\x43 |0 \x4F\xB3 |0 \x4F\xCA |0 \x45\xE3 |0 \x53\xB1 |0 \x65\x42 |0 \x48\xCD |0 \x45\xB8 |0 \x64\xFE |0 \x4D\xCE |0 \x47\x54 |0 \x65\x45 |0 \x4F\x77 |0 \x4A\xD3 |0 \x46\x69 |0 \x54\x85 |0 \x65\x46 |0 \x4A\xD6 |0 \x65\x47 |0 \x55\xAC |0 \x65\x4E |0 \x54\xF8 |0 \x4C\xF7 |0 \x4C\x6D |0 \x49\xEC |0 \x65\x4D |0 \x4A\x8B |0 \x46\xAB |0 \x50\x5D |0 \x48\x8D |0 \x65\x48 |0 \x65\x4A |0 \x65\x4B |0 \x65\x4C |0 \x45\x50 |0 \x46\xA4 |0 \x49\xBC |0 \x65\x4F |0 \x65\x50 |0 \x52\xF3 |0 \x54\x55 |0 \x65\x51 |0 \x46\xE3 |0 \x54\x4C |0 \x4E\xC2 |0 \x68\x82 |0 \x65\x53 |0 \x65\x52 |0 \x49\xCC |0 \x51\x43 |0 \x54\x58 |0 \x65\x54 |0 \x65\x57 |0 \x52\x6E |0 \x65\x55 |0 \x53\x5B |0 \x48\x5D |0 \x4C\xDA |0 \x52\x6B |0 \x65\x59 |0 \x4C\xC4 |0 \x65\x5B |0 \x53\x7B |0 \x65\x58 |0 \x60\x45 |0 \x4D\xA9 |0 \x51\x86 |0 \x65\x5A |0 \x50\xEA |0 \x65\x5C |0 \x4C\x92 |0 \x48\x46 |0 \x46\xC5 |0 \x51\xA8 |0 \x4E\xB8 |0 \x65\x5E |0 \x65\x5F |0 \x65\x60 |0 \x4D\x81 |0 \x49\xB3 |0 \x50\x52 |0 \x45\x6E |0 \x65\x63 |0 \x65\x64 |0 \x49\x9E |0 \x65\x61 |0 \x65\x62 |0 \x45\x95 |0 \x51\x62 |0 \x4C\xB7 |0 \x49\x95 |0 \x45\x4F |0 \x65\x65 |0 \x65\x68 |0 \x65\x67 |0 \x65\x69 |0 \x65\x6B |0 \x51\x54 |0 \x65\x6C |0 \x65\x6A |0 \x4F\x73 |0 \x65\x6D |0 \x55\x48 |0 \x52\xBB |0 \x47\xF3 |0 \x55\x91 |0 \x47\x58 |0 \x4E\x7C |0 \x65\x6E |0 \x65\x6F |0 \x4B\xAE |0 \x65\x70 |0 \x65\x71 |0 \x65\x72 |0 \x50\xBD |0 \x51\x49 |0 \x65\x74 |0 \x65\x73 |0 \x4D\x86 |0 \x51\xEB |0 \x48\x99 |0 \x65\x77 |0 \x51\xA9 |0 \x65\x76 |0 \x65\x75 |0 \x51\x6F |0 \x51\x70 |0 \x53\x78 |0 \x51\xFA |0 \x53\x6F |0 \x65\x78 |0 \x50\x7F |0 \x65\x7B |0 \x65\x79 |0 \x50\x7F |1 \x65\x7A |0 \x51\xFA |1 \x65\x7D |0 \x65\x7C |0 \x50\xC2 |0 \x65\x7E |0 \x65\x7F |0 \x65\x80 |0 \x53\x46 |0 \x53\xBF |0 \x4D\x79 |0 \x52\x52 |0 \x65\x81 |0 \x47\x6C |0 \x45\xA3 |0 \x45\x69 |0 \x47\xB5 |0 \x65\x82 |0 \x45\x86 |0 \x65\x87 |0 \x65\x85 |0 \x4F\xF4 |0 \x65\x83 |0 \x65\x84 |0 \x4A\xCC |0 \x49\x88 |0 \x65\x86 |0 \x65\x88 |0 \x65\x89 |0 \x4C\xE3 |0 \x65\x8D |0 \x65\x8F |0 \x53\x4A |0 \x4B\xF0 |0 \x65\x8A |0 \x65\x8C |0 \x65\x8B |0 \x65\x8E |0 \x51\xD0 |0 \x65\x92 |0 \x65\x90 |0 \x65\x95 |0 \x4E\x63 |0 \x53\x8F |0 \x65\x93 |0 \x52\x69 |0 \x65\x94 |0 \x65\x97 |0 \x65\x91 |0 \x65\x98 |0 \x65\x96 |0 \x45\xAE |0 \x55\xBF |0 \x65\xA6 |0 \x65\x9B |0 \x65\x9F |0 \x65\xA4 |0 \x65\x9E |0 \x45\xD7 |0 \x65\x9A |0 \x65\xA0 |0 \x65\x9C |0 \x65\xA7 |0 \x65\xA1 |0 \x65\xA2 |0 \x65\xA5 |0 \x65\x99 |0 \x65\xA3 |0 \x65\xA9 |0 \x49\xD4 |0 \x53\x93 |0 \x4E\xA8 |0 \x65\x9D |0 \x4F\xB4 |0 \x65\xA8 |0 \x48\x63 |0 \x65\xAC |0 \x65\xAD |0 \x51\x83 |0 \x47\x8C |0 \x4C\xE2 |0 \x48\xC0 |0 \x52\x4B |0 \x4C\xAD |0 \x65\xAF |0 \x65\xB1 |0 \x65\xAE |0 \x4D\xDC |0 \x4E\x80 |0 \x65\xB0 |0 \x65\xAA |0 \x65\xAB |0 \x4D\x48 |0 \x65\xBB |0 \x65\xBA |0 \x65\xB3 |0 \x65\xB7 |0 \x54\x49 |0 \x65\xBD |0 \x65\xB9 |0 \x65\xB5 |0 \x65\xB6 |0 \x65\xBC |0 \x52\xC0 |0 \x65\xB4 |0 \x65\xB2 |0 \x53\x63 |0 \x4D\x6F |0 \x55\xBE |0 \x48\xC1 |0 \x51\xE7 |0 \x53\x94 |0 \x65\xC2 |0 \x65\xC5 |0 \x46\xA1 |0 \x65\xC9 |0 \x65\xCE |0 \x55\xD2 |0 \x65\xC0 |0 \x53\x90 |0 \x54\xEF |0 \x65\xC7 |0 \x65\xCB |0 \x65\xCC |0 \x65\xC8 |0 \x4E\x57 |0 \x65\xC3 |0 \x65\xCA |0 \x65\xCD |0 \x65\xC1 |0 \x4B\x8E |0 \x53\xF0 |0 \x52\x57 |0 \x4F\xE6 |0 \x52\x83 |0 \x50\xB1 |0 \x48\x86 |0 \x65\xBF |0 \x65\xBE |0 \x65\xCF |0 \x65\xC4 |0 \x51\xF7 |0 \x4B\x48 |0 \x55\xD3 |0 \x54\xAA |0 \x65\xD4 |0 \x65\xD5 |0 \x48\xC7 |0 \x52\xAD |0 \x65\xD1 |0 \x4F\x70 |0 \x65\xD3 |0 \x65\xD0 |0 \x4E\x45 |0 \x65\xD2 |0 \x53\xBD |0 \x49\x62 |0 \x65\xDA |0 \x4D\x70 |0 \x51\x97 |0 \x54\xFE |0 \x65\xD8 |0 \x54\x6D |0 \x53\x6E |0 \x65\xD9 |0 \x4C\x89 |0 \x65\xD7 |0 \x65\xD6 |0 \x65\xE2 |0 \x65\xDD |0 \x65\xDB |0 \x65\xE5 |0 \x50\x41 |0 \x65\xDC |0 \x65\xDE |0 \x65\xE1 |0 \x65\xE3 |0 \x65\xE4 |0 \x4A\x8D |0 \x65\xE6 |0 \x65\xE0 |0 \x65\xDF |0 \x65\xE8 |0 \x65\xEC |0 \x65\xED |0 \x51\xCD |0 \x65\xEA |0 \x65\xE9 |0 \x4C\xC8 |0 \x52\xCF |0 \x65\xE7 |0 \x65\xEB |0 \x65\xEF |0 \x65\xF0 |0 \x51\x56 |0 \x65\xEE |0 \x53\x88 |0 \x65\xF1 |0 \x65\xF2 |0 \x65\xF5 |0 \x65\xF4 |0 \x65\xF6 |0 \x4E\x4E |0 \x65\xF3 |0 \x52\x41 |0 \x65\xF8 |0 \x65\xF7 |0 \x65\xFB |0 \x65\xF9 |0 \x65\xFA |0 \x65\xFC |0 \x65\xFE |0 \x65\xFD |0 \x66\x41 |0 \x66\x44 |0 \x66\x43 |0 \x66\x45 |0 \x66\x42 |0 \x66\x46 |0 \x45\x83 |0 \x46\xAA |0 \x66\x47 |0 \x51\x9C |0 \x66\x48 |0 \x4B\x7D |0 \x66\x49 |0 \x46\xCD |0 \x54\x5F |0 \x4D\xD9 |0 \x66\x4A |0 \x45\xC1 |0 \x66\x4B |0 \x66\x4C |0 \x66\x4D |0 \x66\x4E |0 \x66\x4F |0 \x45\xC5 |0 \x4A\xE9 |0 \x54\x9B |0 \x51\x72 |0 \x66\x51 |0 \x66\x50 |0 \x66\x52 |0 \x51\x77 |0 \x66\x55 |0 \x66\x54 |0 \x66\x53 |0 \x66\x56 |0 \x66\x59 |0 \x53\x64 |0 \x66\x57 |0 \x66\x5B |0 \x66\x5A |0 \x66\x5D |0 \x66\x5C |0 \x66\x5E |0 \x4B\xCC |0 \x66\x5F |0 \x66\x60 |0 \x66\x62 |0 \x66\x61 |0 \x47\x86 |0 \x66\x63 |0 \x66\x64 |0 \x45\x91 |0 \x66\x65 |0 \x66\x66 |0 \x47\xBC |0 \x4F\xEF |0 \x46\xAE |0 \x4F\xE8 |0 \x66\x67 |0 \x4B\x8C |0 \x66\x6A |0 \x66\x69 |0 \x49\xE5 |0 \x66\x68 |0 \x48\xAD |0 \x51\x57 |0 \x66\x6B |0 \x66\x6C |0 \x52\x72 |0 \x66\x6D |0 \x49\xD8 |0 \x4C\x84 |0 \x49\x6D |0 \x4F\xFE |0 \x66\x6E |0 \x55\xC3 |0 \x66\x71 |0 \x4C\xD2 |0 \x66\x70 |0 \x4E\x61 |0 \x50\xC7 |0 \x4A\xB7 |0 \x66\x6F |0 \x49\x61 |0 \x4A\x6C |0 \x47\xBF |0 \x4B\xB9 |0 \x46\x5D |0 \x4C\xE5 |0 \x4A\x93 |0 \x66\x73 |0 \x66\x72 |0 \x49\xA9 |0 \x4E\x76 |0 \x50\x5A |0 \x66\x76 |0 \x66\x77 |0 \x66\x75 |0 \x53\xC3 |0 \x47\x97 |0 \x4B\xF9 |0 \x66\x79 |0 \x4E\xAE |0 \x4C\xE0 |0 \x66\x7A |0 \x65\x56 |0 \x66\x7B |0 \x66\x7F |0 \x66\x7E |0 \x66\x7C |0 \x66\x7D |0 \x66\x80 |0 \x66\x81 |0 \x55\x45 |0 \x66\x82 |0 \x66\x83 |0 \x4F\xDA |0 \x4E\xD5 |0 \x4F\x64 |0 \x51\xA4 |0 \x45\x70 |0 \x47\x45 |0 \x47\xA0 |0 \x4C\x4D |0 \x54\x77 |0 \x66\x85 |0 \x52\xB7 |0 \x52\x5B |0 \x66\x84 |0 \x4A\x8A |0 \x66\x86 |0 \x63\x54 |0 \x66\x88 |0 \x51\xFB |0 \x66\x87 |0 \x49\x97 |0 \x49\x5A |0 \x49\xDD |0 \x49\xBB |0 \x52\xA5 |0 \x4F\x90 |0 \x4A\xBC |0 \x50\x69 |0 \x4B\xD6 |0 \x66\x89 |0 \x45\x82 |0 \x47\xFB |0 \x66\x8A |0 \x66\x8B |0 \x4D\xDE |0 \x66\x8C |0 \x4F\x4B |0 \x66\x8E |0 \x66\x90 |0 \x66\x92 |0 \x66\x91 |0 \x66\x8F |0 \x66\x93 |0 \x66\x8D |0 \x4D\xE8 |0 \x4E\xE4 |0 \x66\x94 |0 \x4E\x48 |0 \x66\x95 |0 \x66\x96 |0 \x4B\xC6 |0 \x66\x97 |0 \x5B\xCF |0 \x66\x98 |0 \x66\x99 |0 \x66\x9A |0 \x66\x9B |0 \x66\xA0 |0 \x66\x9E |0 \x66\x9D |0 \x66\x9C |0 \x66\x9F |0 \x66\xA1 |0 \x66\xA2 |0 \x66\xA3 |0 \x66\xA4 |0 \x46\x4C |0 \x66\xA5 |0 \x48\xC3 |0 \x46\x44 |0 \x66\xA6 |0 \x48\xE1 |0 \x66\xA7 |0 \x68\x52 |0 \x46\x91 |0 \x66\xA8 |0 \x66\xA9 |0 \x66\xAA |0 \x4A\xA3 |0 \x53\xB5 |0 \x66\xAB |0 \x52\xCE |0 \x4D\xF1 |0 \x66\xAC |0 \x66\xB0 |0 \x66\xAE |0 \x66\xAF |0 \x54\x45 |0 \x66\xAD |0 \x52\x77 |0 \x66\xB1 |0 \x50\x4C |0 \x66\xB2 |0 \x66\xB3 |0 \x52\xE7 |0 \x66\xB4 |0 \x51\xED |0 \x66\xB7 |0 \x66\xB6 |0 \x66\xB5 |0 \x63\xFC |0 \x54\x8B |0 \x66\xB8 |0 \x66\xB9 |0 \x66\xBA |0 \x66\xBB |0 \x66\xBC |0 \x66\xBD |0 \x4E\x75 |0 \x66\xBE |0 \x66\xBF |0 \x4F\xDF |0 \x66\xC0 |0 \x48\x4D |0 \x66\xC2 |0 \x52\xFC |0 \x55\x77 |0 \x4A\x5C |0 \x4C\xD9 |0 \x4D\x5B |0 \x49\x46 |0 \x4A\x97 |0 \x47\xB2 |0 \x46\xB0 |0 \x54\x56 |0 \x66\xC3 |0 \x4D\x4A |0 \x53\x9D |0 \x55\x57 |0 \x51\x7A |0 \x55\xE4 |0 \x4A\xCD |0 \x66\xC4 |0 \x66\xC6 |0 \x66\xC5 |0 \x4E\xB3 |0 \x47\xEB |0 \x4E\xB3 |1 \x55\x76 |0 \x66\xC7 |0 \x50\xFB |0 \x66\xC8 |1 \x53\xAB |0 \x4A\x7A |0 \x66\xC8 |0 \x51\xDC |0 \x66\xCA |0 \x47\xFE |0 \x47\xF1 |0 \x54\x8E |0 \x66\xC9 |0 \x48\xB8 |0 \x4A\xE5 |0 \x66\xCB |0 \x4C\x57 |0 \x55\xC1 |1 \x55\xC1 |0 \x46\xBA |0 \x66\xCC |0 \x4E\xEE |0 \x66\xCD |0 \x66\xCE |0 \x66\xCF |0 \x66\xD0 |0 \x66\xD2 |0 \x66\xD1 |0 \x47\xE7 |0 \x66\xD3 |0 \x66\xD4 |0 \x66\xD5 |0 \x66\xD6 |0 \x66\xD8 |0 \x66\xD7 |0 \x66\xD9 |0 \x48\x8A |0 \x66\xDA |0 \x46\xB8 |0 \x53\xCE |0 \x66\xDC |0 \x66\xDE |0 \x66\xDB |0 \x5C\xCA |0 \x46\xB5 |0 \x4B\xA3 |0 \x52\x45 |0 \x4A\x8F |0 \x4D\x49 |0 \x49\x57 |0 \x66\xE0 |0 \x50\xBF |0 \x54\xBC |0 \x49\x79 |0 \x50\xA7 |0 \x55\xB3 |0 \x66\xE2 |0 \x55\x4B |0 \x66\xE3 |0 \x66\xE4 |0 \x66\xE1 |0 \x66\xE8 |0 \x66\xEA |0 \x66\xE7 |0 \x66\xE9 |0 \x66\xE5 |0 \x48\x62 |0 \x66\xEB |0 \x66\xEC |0 \x66\xED |0 \x66\xEE |0 \x66\xEF |0 \x66\xF1 |0 \x66\xF0 |0 \x66\xF3 |0 \x66\xF5 |0 \x66\xF2 |0 \x66\xF4 |0 \x52\xE8 |0 \x66\xF6 |0 \x51\xD5 |0 \x49\xBE |0 \x66\xF7 |0 \x66\xF8 |0 \x46\xBD |0 \x66\xF9 |0 \x66\xFA |0 \x4B\x85 |0 \x46\x64 |0 \x66\xFB |0 \x66\xFC |0 \x52\xDF |0 \x50\xA1 |0 \x66\xFD |0 \x55\xE5 |0 \x4D\xE5 |0 \x49\xAC |0 \x4C\xFE |0 \x4F\x85 |0 \x4D\xF5 |0 \x67\x44 |0 \x49\xFC |0 \x53\xBE |0 \x67\x43 |0 \x67\x41 |0 \x67\x42 |0 \x66\xFE |0 \x67\x47 |0 \x67\x45 |0 \x67\x46 |0 \x67\x48 |0 \x67\x49 |0 \x67\x4B |0 \x67\x4A |0 \x4C\xC0 |0 \x67\x4C |0 \x67\x4E |0 \x50\x58 |0 \x67\x4D |0 \x4D\xD2 |0 \x48\xB4 |0 \x67\x4F |0 \x53\xDA |0 \x67\x50 |0 \x4E\x5E |0 \x67\x51 |0 \x67\x56 |0 \x67\x52 |0 \x67\x54 |0 \x67\x55 |0 \x67\x53 |0 \x67\x58 |0 \x67\x59 |0 \x53\xDA |1 \x67\x57 |0 \x67\x5B |0 \x4C\xD5 |0 \x67\x5A |0 \x67\x5C |0 \x67\x5D |0 \x67\x60 |0 \x67\x5F |0 \x67\x5E |0 \x67\x61 |0 \x67\x62 |0 \x4A\xA5 |0 \x67\x63 |0 \x67\x64 |0 \x55\x9C |0 \x67\x65 |0 \x67\x66 |0 \x52\xC5 |0 \x67\x67 |0 \x67\x6A |0 \x67\x68 |0 \x67\x69 |0 \x45\x71 |0 \x67\x6B |0 \x67\x6C |0 \x67\x6D |0 \x67\x6E |0 \x67\x6F |0 \x67\x70 |0 \x67\x71 |0 \x4C\xF6 |0 \x67\x73 |0 \x50\x9D |0 \x67\x74 |0 \x67\x72 |0 \x67\x76 |0 \x67\x75 |0 \x67\x77 |0 \x67\x78 |0 \x67\x79 |0 \x67\x7A |0 \x67\x7B |0 \x67\x7C |0 \x67\x7D |0 \x67\x7E |0 \x67\x7F |0 \x67\x80 |0 \x67\x81 |0 \x67\x82 |0 \x67\x83 |0 \x67\x84 |0 \x67\x85 |0 \x67\x86 |0 \x67\x87 |0 \x67\x88 |0 \x4A\xC8 |0 \x52\xCB |0 \x50\xA8 |0 \x67\x8A |0 \x67\x89 |0 \x4D\xB4 |0 \x67\x8B |0 \x67\x8C |0 \x53\x89 |0 \x67\x8D |0 \x4D\xE2 |0 \x67\x8E |0 \x48\xEE |0 \x51\xF4 |0 \x67\x91 |0 \x67\x90 |0 \x67\x8F |0 \x67\x94 |0 \x4F\x8E |0 \x67\x93 |0 \x67\x95 |0 \x52\x8D |0 \x67\x92 |0 \x67\x96 |0 \x67\x97 |0 \x67\x98 |0 \x67\x99 |0 \x67\x9A |0 \x55\xCE |0 \x4E\xB7 |0 \x53\x91 |0 \x4C\xE9 |0 \x67\x9B |0 \x67\x9C |0 \x67\xA0 |0 \x67\x9F |0 \x67\x9D |0 \x67\xA1 |0 \x4F\xC6 |0 \x67\x9E |0 \x67\xA2 |0 \x67\xA3 |0 \x67\xA4 |0 \x67\xA8 |0 \x4F\xE4 |0 \x50\xD8 |0 \x67\xA9 |0 \x67\xA6 |0 \x67\xA5 |0 \x67\xA7 |0 \x4D\x78 |0 \x55\x51 |0 \x67\xAB |0 \x67\xAC |0 \x67\xAA |0 \x67\xB1 |0 \x67\xAD |0 \x67\xB5 |0 \x67\xB6 |0 \x67\xB2 |0 \x67\xB8 |0 \x67\xB4 |0 \x55\x71 |0 \x52\x93 |0 \x67\xB7 |0 \x67\xB3 |0 \x67\xB0 |0 \x67\xAF |0 \x67\xAE |0 \x67\xBC |0 \x67\xBB |0 \x67\xBA |0 \x54\x6E |0 \x67\xB9 |0 \x55\xC8 |0 \x67\xBD |0 \x67\xBF |0 \x53\xD5 |0 \x51\xF0 |0 \x54\xAB |0 \x67\xC1 |0 \x67\xC0 |0 \x67\xBE |0 \x55\x60 |0 \x53\xC6 |0 \x55\x4C |0 \x67\xC2 |0 \x67\xC3 |0 \x67\xC4 |0 \x67\xC5 |0 \x67\xC6 |0 \x47\x79 |0 \x67\xC8 |0 \x4D\x95 |0 \x67\xC7 |0 \x67\xC9 |0 \x67\xCA |0 \x4E\xA6 |0 \x4B\x70 |0 \x54\xC4 |0 \x67\xCC |0 \x67\xCD |0 \x51\xA1 |0 \x54\xFC |0 \x67\xCB |0 \x54\x64 |0 \x67\xD4 |0 \x67\xD3 |0 \x52\xC3 |0 \x67\xD2 |0 \x67\xD1 |0 \x67\xCF |0 \x4C\x54 |0 \x67\xCE |0 \x50\xBA |0 \x67\xD0 |0 \x4D\xD6 |0 \x67\xD8 |0 \x67\xD6 |0 \x67\xD5 |0 \x67\xD7 |0 \x67\xD9 |0 \x67\xDA |0 \x67\xDF |0 \x67\xDE |0 \x67\xDD |0 \x4B\xE7 |0 \x67\xDB |0 \x67\xDC |0 \x50\xFD |0 \x55\x7E |0 \x67\xE0 |0 \x67\xE4 |0 \x51\x8A |0 \x67\xE5 |0 \x67\xE2 |0 \x67\xE1 |0 \x67\xE6 |0 \x67\xE3 |0 \x53\x42 |0 \x4D\x8E |0 \x67\xE7 |0 \x67\xE8 |0 \x67\xE9 |0 \x67\xEA |0 \x50\xE5 |0 \x67\xEB |0 \x47\x7A |0 \x67\xEF |0 \x67\xF0 |0 \x67\xEE |0 \x67\xED |0 \x67\xF3 |0 \x67\xEC |0 \x67\xF1 |0 \x67\xF2 |0 \x67\xF6 |0 \x54\x64 |1 \x67\xF5 |0 \x67\xF8 |0 \x67\xF9 |0 \x67\xFA |0 \x4B\xF1 |0 \x67\xF7 |0 \x4B\x7A |0 \x50\xAF |0 \x67\xFB |0 \x67\xFE |0 \x67\xFC |0 \x67\xFD |0 \x68\x41 |0 \x68\x42 |0 \x4C\x7D |0 \x68\x43 |0 \x4C\x7D |1 \x68\x44 |0 \x46\x97 |0 \x68\x45 |0 \x68\x46 |0 \x68\x47 |0 \x68\x48 |0 \x68\x4A |0 \x51\xF9 |0 \x51\x9E |0 \x68\x49 |0 \x4C\xF3 |0 \x68\x4B |0 \x51\x9B |0 \x68\x4C |0 \x4A\xE0 |0 \x53\xB4 |0 \x68\x4E |0 \x68\x4F |0 \x52\x61 |1 \x55\x5F |1 \x68\x4D |0 \x52\x61 |0 \x55\x5F |0 \x48\xA7 |0 \x68\x50 |0 \x68\x51 |0 \x4E\xEA |0 \x4A\xC6 |0 \x68\x53 |0 \x55\xAE |0 \x51\xA7 |0 \x68\x54 |0 \x68\x55 |0 \x68\x56 |0 \x46\x79 |0 \x68\x57 |0 \x5E\x90 |0 \x4D\xBC |0 \x51\xDD |0 \x68\x58 |0 \x68\x5A |0 \x68\x59 |0 \x68\x5B |0 \x68\x5C |0 \x68\x5D |0 \x68\x5E |0 \x68\x5F |0 \x68\x60 |0 \x68\x61 |0 \x68\x62 |0 \x68\x63 |0 \x68\x64 |0 \x68\x65 |0 \x68\x66 |0 \x68\x67 |0 \x51\xAA |0 \x4F\xAF |0 \x68\x69 |0 \x50\xCB |0 \x68\x6A |0 \x68\x6B |0 \x4C\xFD |0 \x68\x6C |0 \x68\x6D |0 \x51\xF5 |0 \x68\x6E |0 \x68\x6F |0 \x68\x70 |0 \x68\x71 |0 \x68\x73 |0 \x68\x74 |0 \x68\x75 |0 \x4C\x80 |0 \x68\x72 |0 \x68\x76 |0 \x68\x77 |0 \x68\x79 |0 \x68\x78 |0 \x68\x7B |0 \x68\x7C |0 \x68\x7A |0 \x48\xCA |0 \x68\x7D |0 \x68\x7E |0 \x5F\xF7 |0 \x68\x7F |0 \x69\x41 |0 \x69\x42 |0 \x69\x43 |0 \x69\x44 |0 \x69\x45 |0 \x69\x46 |0 \x69\x47 |0 \x69\x48 |0 \x69\x49 |0 \x69\x4A |0 \x69\x4B |0 \x69\x4C |0 \x69\x4D |0 \x69\x4E |0 \x69\x4F |0 \x69\x50 |0 \x69\x51 |0 \x69\x52 |0 \x69\x53 |0 \x69\x54 |0 \x69\x55 |0 \x69\x56 |0 \x69\x57 |0 \x69\x58 |0 \x69\x59 |0 \x69\x5A |0 \x69\x5B |0 \x69\x5C |0 \x69\x5D |0 \x69\x5E |0 \x69\x5F |0 \x69\x60 |0 \x69\x61 |0 \x69\x62 |0 \x69\x63 |0 \x69\x64 |0 \x69\x65 |0 \x69\x66 |0 \x69\x67 |0 \x69\x68 |0 \x69\x69 |0 \x69\x6A |0 \x69\x6B |0 \x69\x6C |0 \x69\x6D |0 \x69\x6E |0 \x69\x6F |0 \x69\x70 |0 \x69\x71 |0 \x69\x72 |0 \x69\x73 |0 \x69\x74 |0 \x69\x75 |0 \x69\x76 |0 \x69\x77 |0 \x69\x78 |0 \x69\x79 |0 \x69\x7A |0 \x69\x7B |0 \x69\x7C |0 \x69\x7D |0 \x69\x7E |0 \x69\x7F |0 \x69\x80 |0 \x69\x81 |0 \x69\x82 |0 \x69\x83 |0 \x69\x84 |0 \x69\x85 |0 \x69\x86 |0 \x69\x87 |0 \x69\x88 |0 \x69\x89 |0 \x69\x8A |0 \x69\x8B |0 \x69\x8C |0 \x69\x8D |0 \x69\x8E |0 \x69\x8F |0 \x69\x90 |0 \x69\x91 |0 \x69\x92 |0 \x69\x93 |0 \x69\x94 |0 \x69\x95 |0 \x69\x96 |0 \x69\x97 |0 \x69\x98 |0 \x69\x99 |0 \x69\x9A |0 \x69\x9B |0 \x69\x9C |0 \x69\x9D |0 \x69\x9E |0 \x69\x9F |0 \x69\xA0 |0 \x69\xA1 |0 \x69\xA2 |0 \x69\xA3 |0 \x69\xA4 |0 \x69\xA5 |0 \x69\xA6 |0 \x69\xA7 |0 \x69\xA8 |0 \x69\xA9 |0 \x69\xAA |0 \x69\xAB |0 \x69\xAC |0 \x69\xAD |0 \x69\xAE |0 \x69\xAF |0 \x69\xB0 |0 \x69\xB1 |0 \x69\xB2 |0 \x69\xB3 |0 \x69\xB4 |0 \x69\xB5 |0 \x69\xB6 |0 \x69\xB7 |0 \x69\xB8 |0 \x69\xB9 |0 \x69\xBA |0 \x69\xBB |0 \x69\xBC |0 \x69\xBD |0 \x69\xBE |0 \x69\xBF |0 \x69\xC0 |0 \x69\xC1 |0 \x69\xC2 |0 \x69\xC3 |0 \x69\xC4 |0 \x69\xC5 |0 \x69\xC6 |0 \x69\xC7 |0 \x69\xC8 |0 \x69\xC9 |0 \x69\xCA |0 \x69\xCB |0 \x69\xCC |0 \x69\xCD |0 \x69\xCE |0 \x69\xCF |0 \x69\xD0 |0 \x69\xD1 |0 \x69\xD2 |0 \x69\xD3 |0 \x69\xD4 |0 \x69\xD5 |0 \x69\xD6 |0 \x69\xD7 |0 \x69\xD8 |0 \x69\xD9 |0 \x69\xDA |0 \x69\xDB |0 \x69\xDC |0 \x69\xDD |0 \x69\xDE |0 \x69\xDF |0 \x69\xE0 |0 \x69\xE1 |0 \x69\xE2 |0 \x69\xE3 |0 \x69\xE4 |0 \x69\xE5 |0 \x69\xE6 |0 \x69\xE7 |0 \x69\xE8 |0 \x69\xE9 |0 \x69\xEA |0 \x69\xEB |0 \x69\xEC |0 \x69\xED |0 \x69\xEE |0 \x69\xEF |0 \x69\xF0 |0 \x69\xF1 |0 \x69\xF2 |0 \x69\xF3 |0 \x69\xF4 |0 \x69\xF5 |0 \x69\xF6 |0 \x69\xF7 |0 \x69\xF8 |0 \x69\xF9 |0 \x69\xFA |0 \x69\xFB |0 \x69\xFC |0 \x69\xFD |0 \x69\xFE |0 \x6A\x41 |0 \x6A\x42 |0 \x6A\x43 |0 \x6A\x44 |0 \x6A\x45 |0 \x6A\x46 |0 \x6A\x47 |0 \x6A\x48 |0 \x6A\x49 |0 \x6A\x4A |0 \x6A\x4B |0 \x6A\x4C |0 \x6A\x4D |0 \x6A\x4E |0 \x6A\x4F |0 \x6A\x50 |0 \x6A\x51 |0 \x6A\x52 |0 \x6A\x53 |0 \x6A\x54 |0 \x6A\x55 |0 \x6A\x56 |0 \x6A\x57 |0 \x6A\x58 |0 \x6A\x59 |0 \x6A\x5A |0 \x6A\x5B |0 \x6A\x5C |0 \x6A\x5D |0 \x6A\x5E |0 \x6A\x5F |0 \x6A\x60 |0 \x6A\x61 |0 \x6A\x62 |0 \x6A\x63 |0 \x6A\x64 |0 \x6A\x65 |0 \x6A\x66 |0 \x6A\x67 |0 \x6A\x68 |0 \x6A\x69 |0 \x6A\x6A |0 \x6A\x6B |0 \x6A\x6C |0 \x6A\x6D |0 \x6A\x6E |0 \x6A\x6F |0 \x6A\x70 |0 \x6A\x71 |0 \x6A\x72 |0 \x6A\x73 |0 \x6A\x74 |0 \x6A\x75 |0 \x6A\x76 |0 \x6A\x77 |0 \x6A\x78 |0 \x6A\x79 |0 \x6A\x7A |0 \x6A\x7B |0 \x6A\x7C |0 \x6A\x7D |0 \x6A\x7E |0 \x6A\x7F |0 \x6A\x80 |0 \x6A\x81 |0 \x6A\x82 |0 \x6A\x83 |0 \x6A\x84 |0 \x6A\x85 |0 \x6A\x86 |0 \x6A\x87 |0 \x6A\x88 |0 \x6A\x89 |0 \x6A\x8A |0 \x6A\x8B |0 \x6A\x8C |0 \x6A\x8D |0 \x6A\x8E |0 \x6A\x8F |0 \x6A\x90 |0 \x6A\x91 |0 \x6A\x92 |0 \x6A\x93 |0 \x6A\x94 |0 \x6A\x95 |0 \x6A\x96 |0 \x6A\x97 |0 \x6A\x98 |0 \x6A\x99 |0 \x6A\x9A |0 \x6A\x9B |0 \x6A\x9C |0 \x6A\x9D |0 \x6A\x9E |0 \x6A\x9F |0 \x6A\xA0 |0 \x6A\xA1 |0 \x6A\xA2 |0 \x6A\xA3 |0 \x6A\xA4 |0 \x6A\xA5 |0 \x6A\xA6 |0 \x6A\xA7 |0 \x6A\xA8 |0 \x6A\xA9 |0 \x6A\xAA |0 \x6A\xAB |0 \x6A\xAC |0 \x6A\xAD |0 \x6A\xAE |0 \x6A\xAF |0 \x6A\xB0 |0 \x6A\xB1 |0 \x6A\xB2 |0 \x6A\xB3 |0 \x6A\xB4 |0 \x6A\xB5 |0 \x6A\xB6 |0 \x6A\xB7 |0 \x6A\xB8 |0 \x6A\xB9 |0 \x6A\xBA |0 \x6A\xBB |0 \x6A\xBC |0 \x6A\xBD |0 \x6A\xBE |0 \x6A\xBF |0 \x6A\xC0 |0 \x6A\xC1 |0 \x6A\xC2 |0 \x6A\xC3 |0 \x6A\xC4 |0 \x6A\xC5 |0 \x6A\xC6 |0 \x6A\xC7 |0 \x6A\xC8 |0 \x6A\xC9 |0 \x6A\xCA |0 \x6A\xCB |0 \x6A\xCC |0 \x6A\xCD |0 \x6A\xCE |0 \x6A\xCF |0 \x6A\xD0 |0 \x6A\xD1 |0 \x6A\xD2 |0 \x6A\xD3 |0 \x6A\xD4 |0 \x6A\xD5 |0 \x6A\xD6 |0 \x6A\xD7 |0 \x6A\xD8 |0 \x6A\xD9 |0 \x6A\xDA |0 \x6A\xDB |0 \x6A\xDC |0 \x6A\xDD |0 \x6A\xDE |0 \x6A\xDF |0 \x6A\xE0 |0 \x6A\xE1 |0 \x6A\xE2 |0 \x6A\xE3 |0 \x6A\xE4 |0 \x6A\xE5 |0 \x6A\xE6 |0 \x6A\xE7 |0 \x6A\xE8 |0 \x6A\xE9 |0 \x6A\xEA |0 \x6A\xEB |0 \x6A\xEC |0 \x6A\xED |0 \x6A\xEE |0 \x6A\xEF |0 \x6A\xF0 |0 \x6A\xF1 |0 \x6A\xF2 |0 \x6A\xF3 |0 \x6A\xF4 |0 \x6A\xF5 |0 \x6A\xF6 |0 \x6A\xF7 |0 \x6A\xF8 |0 \x6A\xF9 |0 \x6A\xFA |0 \x6A\xFB |0 \x6A\xFC |0 \x6A\xFD |0 \x6A\xFE |0 \x6B\x41 |0 \x6B\x42 |0 \x6B\x43 |0 \x6B\x44 |0 \x6B\x45 |0 \x6B\x46 |0 \x6B\x47 |0 \x6B\x48 |0 \x6B\x49 |0 \x6B\x4A |0 \x6B\x4B |0 \x6B\x4C |0 \x6B\x4D |0 \x6B\x4E |0 \x6B\x4F |0 \x6B\x50 |0 \x6B\x51 |0 \x6B\x52 |0 \x6B\x53 |0 \x6B\x54 |0 \x6B\x55 |0 \x6B\x56 |0 \x6B\x57 |0 \x6B\x58 |0 \x6B\x59 |0 \x6B\x5A |0 \x6B\x5B |0 \x6B\x5C |0 \x6B\x5D |0 \x6B\x5E |0 \x6B\x5F |0 \x6B\x60 |0 \x6B\x61 |0 \x6B\x62 |0 \x6B\x63 |0 \x6B\x64 |0 \x6B\x65 |0 \x6B\x66 |0 \x6B\x67 |0 \x6B\x68 |0 \x6B\x69 |0 \x6B\x6A |0 \x6B\x6B |0 \x6B\x6C |0 \x6B\x6D |0 \x6B\x6E |0 \x6B\x6F |0 \x6B\x70 |0 \x6B\x71 |0 \x6B\x72 |0 \x6B\x73 |0 \x6B\x74 |0 \x6B\x75 |0 \x6B\x76 |0 \x6B\x77 |0 \x6B\x78 |0 \x6B\x79 |0 \x6B\x7A |0 \x6B\x7B |0 \x6B\x7C |0 \x6B\x7D |0 \x6B\x7E |0 \x6B\x7F |0 \x6B\x80 |0 \x6B\x81 |0 \x6B\x82 |0 \x6B\x83 |0 \x6B\x84 |0 \x6B\x85 |0 \x6B\x86 |0 \x6B\x87 |0 \x6B\x88 |0 \x6B\x89 |0 \x6B\x8A |0 \x6B\x8B |0 \x6B\x8C |0 \x6B\x8D |0 \x6B\x8E |0 \x6B\x8F |0 \x6B\x90 |0 \x6B\x91 |0 \x6B\x92 |0 \x6B\x93 |0 \x6B\x94 |0 \x6B\x95 |0 \x6B\x96 |0 \x6B\x97 |0 \x6B\x98 |0 \x6B\x99 |0 \x6B\x9A |0 \x6B\x9B |0 \x6B\x9C |0 \x6B\x9D |0 \x6B\x9E |0 \x6B\x9F |0 \x6B\xA0 |0 \x6B\xA1 |0 \x6B\xA2 |0 \x6B\xA3 |0 \x6B\xA4 |0 \x6B\xA5 |0 \x6B\xA6 |0 \x6B\xA7 |0 \x6B\xA8 |0 \x6B\xA9 |0 \x6B\xAA |0 \x6B\xAB |0 \x6B\xAC |0 \x6B\xAD |0 \x6B\xAE |0 \x6B\xAF |0 \x6B\xB0 |0 \x6B\xB1 |0 \x6B\xB2 |0 \x6B\xB3 |0 \x6B\xB4 |0 \x6B\xB5 |0 \x6B\xB6 |0 \x6B\xB7 |0 \x6B\xB8 |0 \x6B\xB9 |0 \x6B\xBA |0 \x6B\xBB |0 \x6B\xBC |0 \x6B\xBD |0 \x6B\xBE |0 \x6B\xBF |0 \x6B\xC0 |0 \x6B\xC1 |0 \x6B\xC2 |0 \x6B\xC3 |0 \x6B\xC4 |0 \x6B\xC5 |0 \x6B\xC6 |0 \x6B\xC7 |0 \x6B\xC8 |0 \x6B\xC9 |0 \x6B\xCA |0 \x6B\xCB |0 \x6B\xCC |0 \x6B\xCD |0 \x6B\xCE |0 \x6B\xCF |0 \x6B\xD0 |0 \x6B\xD1 |0 \x6B\xD2 |0 \x6B\xD3 |0 \x6B\xD4 |0 \x6B\xD5 |0 \x6B\xD6 |0 \x6B\xD7 |0 \x6B\xD8 |0 \x6B\xD9 |0 \x6B\xDA |0 \x6B\xDB |0 \x6B\xDC |0 \x6B\xDD |0 \x6B\xDE |0 \x6B\xDF |0 \x6B\xE0 |0 \x6B\xE1 |0 \x6B\xE2 |0 \x6B\xE3 |0 \x6B\xE4 |0 \x6B\xE5 |0 \x6B\xE6 |0 \x6B\xE7 |0 \x6B\xE8 |0 \x6B\xE9 |0 \x6B\xEA |0 \x6B\xEB |0 \x6B\xEC |0 \x6B\xED |0 \x6B\xEE |0 \x6B\xEF |0 \x6B\xF0 |0 \x6B\xF1 |0 \x6B\xF2 |0 \x6B\xF3 |0 \x6B\xF4 |0 \x6B\xF5 |0 \x6B\xF6 |0 \x6B\xF7 |0 \x6B\xF8 |0 \x6B\xF9 |0 \x6B\xFA |0 \x6B\xFB |0 \x6B\xFC |0 \x6B\xFD |0 \x6B\xFE |0 \x6C\x41 |0 \x6C\x42 |0 \x6C\x43 |0 \x6C\x44 |0 \x6C\x45 |0 \x6C\x46 |0 \x6C\x47 |0 \x6C\x48 |0 \x6C\x49 |0 \x6C\x4A |0 \x6C\x4B |0 \x6C\x4C |0 \x6C\x4D |0 \x6C\x4E |0 \x6C\x4F |0 \x6C\x50 |0 \x6C\x51 |0 \x6C\x52 |0 \x6C\x53 |0 \x6C\x54 |0 \x6C\x55 |0 \x6C\x56 |0 \x6C\x57 |0 \x6C\x58 |0 \x6C\x59 |0 \x6C\x5A |0 \x6C\x5B |0 \x6C\x5C |0 \x6C\x5D |0 \x6C\x5E |0 \x6C\x5F |0 \x6C\x60 |0 \x6C\x61 |0 \x6C\x62 |0 \x6C\x63 |0 \x6C\x64 |0 \x6C\x65 |0 \x6C\x66 |0 \x6C\x67 |0 \x6C\x68 |0 \x6C\x69 |0 \x6C\x6A |0 \x6C\x6B |0 \x6C\x6C |0 \x6C\x6D |0 \x6C\x6E |0 \x6C\x6F |0 \x6C\x70 |0 \x6C\x71 |0 \x6C\x72 |0 \x6C\x73 |0 \x6C\x74 |0 \x6C\x75 |0 \x6C\x76 |0 \x6C\x77 |0 \x6C\x78 |0 \x6C\x79 |0 \x6C\x7A |0 \x6C\x7B |0 \x6C\x7C |0 \x6C\x7D |0 \x6C\x7E |0 \x6C\x7F |0 \x6C\x80 |0 \x6C\x81 |0 \x6C\x82 |0 \x6C\x83 |0 \x6C\x84 |0 \x6C\x85 |0 \x6C\x86 |0 \x6C\x87 |0 \x6C\x88 |0 \x6C\x89 |0 \x6C\x8A |0 \x6C\x8B |0 \x6C\x8C |0 \x6C\x8D |0 \x6C\x8E |0 \x6C\x8F |0 \x6C\x90 |0 \x6C\x91 |0 \x6C\x92 |0 \x6C\x93 |0 \x6C\x94 |0 \x6C\x95 |0 \x6C\x96 |0 \x6C\x97 |0 \x6C\x98 |0 \x6C\x99 |0 \x6C\x9A |0 \x6C\x9B |0 \x6C\x9C |0 \x6C\x9D |0 \x6C\x9E |0 \x6C\x9F |0 \x6C\xA0 |0 \x6C\xA1 |0 \x6C\xA2 |0 \x6C\xA3 |0 \x6C\xA4 |0 \x6C\xA5 |0 \x6C\xA6 |0 \x6C\xA7 |0 \x6C\xA8 |0 \x6C\xA9 |0 \x6C\xAA |0 \x6C\xAB |0 \x6C\xAC |0 \x6C\xAD |0 \x6C\xAE |0 \x6C\xAF |0 \x6C\xB0 |0 \x6C\xB1 |0 \x6C\xB2 |0 \x6C\xB3 |0 \x6C\xB4 |0 \x6C\xB5 |0 \x6C\xB6 |0 \x6C\xB7 |0 \x6C\xB8 |0 \x6C\xB9 |0 \x6C\xBA |0 \x6C\xBB |0 \x6C\xBC |0 \x6C\xBD |0 \x6C\xBE |0 \x6C\xBF |0 \x6C\xC0 |0 \x6C\xC1 |0 \x6C\xC2 |0 \x6C\xC3 |0 \x6C\xC4 |0 \x6C\xC5 |0 \x6C\xC6 |0 \x6C\xC7 |0 \x6C\xC8 |0 \x6C\xC9 |0 \x6C\xCA |0 \x6C\xCB |0 \x6C\xCC |0 \x6C\xCD |0 \x6C\xCE |0 \x6C\xCF |0 \x6C\xD0 |0 \x6C\xD1 |0 \x6C\xD2 |0 \x6C\xD3 |0 \x6C\xD4 |0 \x6C\xD5 |0 \x6C\xD6 |0 \x6C\xD7 |0 \x6C\xD8 |0 \x6C\xD9 |0 \x6C\xDA |0 \x6C\xDB |0 \x6C\xDC |0 \x6C\xDD |0 \x6C\xDE |0 \x6C\xDF |0 \x6C\xE0 |0 \x6C\xE1 |0 \x6C\xE2 |0 \x6C\xE3 |0 \x6C\xE4 |0 \x6C\xE5 |0 \x6C\xE6 |0 \x6C\xE7 |0 \x6C\xE8 |0 \x6C\xE9 |0 \x6C\xEA |0 \x6C\xEB |0 \x6C\xEC |0 \x6C\xED |0 \x6C\xEE |0 \x6C\xEF |0 \x6C\xF0 |0 \x6C\xF1 |0 \x6C\xF2 |0 \x6C\xF3 |0 \x6C\xF4 |0 \x6C\xF5 |0 \x6C\xF6 |0 \x6C\xF7 |0 \x6C\xF8 |0 \x6C\xF9 |0 \x6C\xFA |0 \x6C\xFB |0 \x6C\xFC |0 \x6C\xFD |0 \x6C\xFE |0 \x6D\x41 |0 \x6D\x42 |0 \x6D\x43 |0 \x6D\x44 |0 \x6D\x45 |0 \x6D\x46 |0 \x6D\x47 |0 \x6D\x48 |0 \x6D\x49 |0 \x6D\x4A |0 \x6D\x4B |0 \x6D\x4C |0 \x6D\x4D |0 \x6D\x4E |0 \x6D\x4F |0 \x6D\x50 |0 \x6D\x51 |0 \x6D\x52 |0 \x6D\x53 |0 \x6D\x54 |0 \x6D\x55 |0 \x6D\x56 |0 \x6D\x57 |0 \x6D\x58 |0 \x6D\x59 |0 \x6D\x5A |0 \x6D\x5B |0 \x6D\x5C |0 \x6D\x5D |0 \x6D\x5E |0 \x6D\x5F |0 \x6D\x60 |0 \x6D\x61 |0 \x6D\x62 |0 \x6D\x63 |0 \x6D\x64 |0 \x6D\x65 |0 \x6D\x66 |0 \x6D\x67 |0 \x6D\x68 |0 \x6D\x69 |0 \x6D\x6A |0 \x6D\x6B |0 \x6D\x6C |0 \x6D\x6D |0 \x6D\x6E |0 \x6D\x6F |0 \x6D\x70 |0 \x6D\x71 |0 \x6D\x72 |0 \x6D\x73 |0 \x6D\x74 |0 \x6D\x75 |0 \x6D\x76 |0 \x6D\x77 |0 \x6D\x78 |0 \x6D\x79 |0 \x6D\x7A |0 \x6D\x7B |0 \x6D\x7C |0 \x6D\x7D |0 \x6D\x7E |0 \x6D\x7F |0 \x6D\x80 |0 \x6D\x81 |0 \x6D\x82 |0 \x6D\x83 |0 \x6D\x84 |0 \x6D\x85 |0 \x6D\x86 |0 \x6D\x87 |0 \x6D\x88 |0 \x6D\x89 |0 \x6D\x8A |0 \x6D\x8B |0 \x6D\x8C |0 \x6D\x8D |0 \x6D\x8E |0 \x6D\x8F |0 \x6D\x90 |0 \x6D\x91 |0 \x6D\x92 |0 \x6D\x93 |0 \x6D\x94 |0 \x6D\x95 |0 \x6D\x96 |0 \x6D\x97 |0 \x6D\x98 |0 \x6D\x99 |0 \x6D\x9A |0 \x6D\x9B |0 \x6D\x9C |0 \x6D\x9D |0 \x6D\x9E |0 \x6D\x9F |0 \x6D\xA0 |0 \x6D\xA1 |0 \x6D\xA2 |0 \x6D\xA3 |0 \x6D\xA4 |0 \x6D\xA5 |0 \x6D\xA6 |0 \x6D\xA7 |0 \x6D\xA8 |0 \x6D\xA9 |0 \x6D\xAA |0 \x6D\xAB |0 \x6D\xAC |0 \x6D\xAD |0 \x6D\xAE |0 \x6D\xAF |0 \x6D\xB0 |0 \x6D\xB1 |0 \x6D\xB2 |0 \x6D\xB3 |0 \x6D\xB4 |0 \x6D\xB5 |0 \x6D\xB6 |0 \x6D\xB7 |0 \x6D\xB8 |0 \x6D\xB9 |0 \x6D\xBA |0 \x6D\xBB |0 \x6D\xBC |0 \x6D\xBD |0 \x6D\xBE |0 \x6D\xBF |0 \x6D\xC0 |0 \x6D\xC1 |0 \x6D\xC2 |0 \x6D\xC3 |0 \x6D\xC4 |0 \x6D\xC5 |0 \x6D\xC6 |0 \x6D\xC7 |0 \x6D\xC8 |0 \x6D\xC9 |0 \x6D\xCA |0 \x6D\xCB |0 \x6D\xCC |0 \x6D\xCD |0 \x6D\xCE |0 \x6D\xCF |0 \x6D\xD0 |0 \x6D\xD1 |0 \x6D\xD2 |0 \x6D\xD3 |0 \x6D\xD4 |0 \x6D\xD5 |0 \x6D\xD6 |0 \x6D\xD7 |0 \x6D\xD8 |0 \x6D\xD9 |0 \x6D\xDA |0 \x6D\xDB |0 \x6D\xDC |0 \x6D\xDD |0 \x6D\xDE |0 \x6D\xDF |0 \x6D\xE0 |0 \x6D\xE1 |0 \x6D\xE2 |0 \x6D\xE3 |0 \x6D\xE4 |0 \x6D\xE5 |0 \x6D\xE6 |0 \x6D\xE7 |0 \x6D\xE8 |0 \x6D\xE9 |0 \x6D\xEA |0 \x6D\xEB |0 \x6D\xEC |0 \x6D\xED |0 \x6D\xEE |0 \x6D\xEF |0 \x6D\xF0 |0 \x6D\xF1 |0 \x6D\xF2 |0 \x6D\xF3 |0 \x6D\xF4 |0 \x6D\xF5 |0 \x6D\xF6 |0 \x6D\xF7 |0 \x6D\xF8 |0 \x6D\xF9 |0 \x6D\xFA |0 \x6D\xFB |0 \x6D\xFC |0 \x6D\xFD |0 \x6D\xFE |0 \x6E\x41 |0 \x6E\x42 |0 \x6E\x43 |0 \x6E\x44 |0 \x6E\x45 |0 \x6E\x46 |0 \x6E\x47 |0 \x6E\x48 |0 \x6E\x49 |0 \x6E\x4A |0 \x6E\x4B |0 \x6E\x4C |0 \x6E\x4D |0 \x6E\x4E |0 \x6E\x4F |0 \x6E\x50 |0 \x6E\x51 |0 \x6E\x52 |0 \x6E\x53 |0 \x6E\x54 |0 \x6E\x55 |0 \x6E\x56 |0 \x6E\x57 |0 \x6E\x58 |0 \x6E\x59 |0 \x6E\x5A |0 \x6E\x5B |0 \x6E\x5C |0 \x6E\x5D |0 \x6E\x5E |0 \x6E\x5F |0 \x6E\x60 |0 \x6E\x61 |0 \x6E\x62 |0 \x6E\x63 |0 \x6E\x64 |0 \x6E\x65 |0 \x6E\x66 |0 \x6E\x67 |0 \x6E\x68 |0 \x6E\x69 |0 \x6E\x6A |0 \x6E\x6B |0 \x6E\x6C |0 \x6E\x6D |0 \x6E\x6E |0 \x6E\x6F |0 \x6E\x70 |0 \x6E\x71 |0 \x6E\x72 |0 \x6E\x73 |0 \x6E\x74 |0 \x6E\x75 |0 \x6E\x76 |0 \x6E\x77 |0 \x6E\x78 |0 \x6E\x79 |0 \x6E\x7A |0 \x6E\x7B |0 \x6E\x7C |0 \x6E\x7D |0 \x6E\x7E |0 \x6E\x7F |0 \x6E\x80 |0 \x6E\x81 |0 \x6E\x82 |0 \x6E\x83 |0 \x6E\x84 |0 \x6E\x85 |0 \x6E\x86 |0 \x6E\x87 |0 \x6E\x88 |0 \x6E\x89 |0 \x6E\x8A |0 \x6E\x8B |0 \x6E\x8C |0 \x6E\x8D |0 \x6E\x8E |0 \x6E\x8F |0 \x6E\x90 |0 \x6E\x91 |0 \x6E\x92 |0 \x6E\x93 |0 \x6E\x94 |0 \x6E\x95 |0 \x6E\x96 |0 \x6E\x97 |0 \x6E\x98 |0 \x6E\x99 |0 \x6E\x9A |0 \x6E\x9B |0 \x6E\x9C |0 \x6E\x9D |0 \x6E\x9E |0 \x6E\x9F |0 \x6E\xA0 |0 \x6E\xA1 |0 \x6E\xA2 |0 \x6E\xA3 |0 \x6E\xA4 |0 \x6E\xA5 |0 \x6E\xA6 |0 \x6E\xA7 |0 \x6E\xA8 |0 \x6E\xA9 |0 \x6E\xAA |0 \x6E\xAB |0 \x6E\xAC |0 \x6E\xAD |0 \x6E\xAE |0 \x6E\xAF |0 \x6E\xB0 |0 \x6E\xB1 |0 \x6E\xB2 |0 \x6E\xB3 |0 \x6E\xB4 |0 \x6E\xB5 |0 \x6E\xB6 |0 \x6E\xB7 |0 \x6E\xB8 |0 \x6E\xB9 |0 \x6E\xBA |0 \x6E\xBB |0 \x6E\xBC |0 \x6E\xBD |0 \x6E\xBE |0 \x6E\xBF |0 \x6E\xC0 |0 \x6E\xC1 |0 \x6E\xC2 |0 \x6E\xC3 |0 \x6E\xC4 |0 \x6E\xC5 |0 \x6E\xC6 |0 \x6E\xC7 |0 \x6E\xC8 |0 \x6E\xC9 |0 \x6E\xCA |0 \x6E\xCB |0 \x6E\xCC |0 \x6E\xCD |0 \x6E\xCE |0 \x6E\xCF |0 \x6E\xD0 |0 \x6E\xD1 |0 \x6E\xD2 |0 \x6E\xD3 |0 \x6E\xD4 |0 \x6E\xD5 |0 \x6E\xD6 |0 \x6E\xD7 |0 \x6E\xD8 |0 \x6E\xD9 |0 \x6E\xDA |0 \x6E\xDB |0 \x6E\xDC |0 \x6E\xDD |0 \x6E\xDE |0 \x6E\xDF |0 \x6E\xE0 |0 \x6E\xE1 |0 \x6E\xE2 |0 \x6E\xE3 |0 \x6E\xE4 |0 \x6E\xE5 |0 \x6E\xE6 |0 \x6E\xE7 |0 \x6E\xE8 |0 \x6E\xE9 |0 \x6E\xEA |0 \x6E\xEB |0 \x6E\xEC |0 \x6E\xED |0 \x6E\xEE |0 \x6E\xEF |0 \x6E\xF0 |0 \x6E\xF1 |0 \x6E\xF2 |0 \x6E\xF3 |0 \x6E\xF4 |0 \x6E\xF5 |0 \x6E\xF6 |0 \x6E\xF7 |0 \x6E\xF8 |0 \x6E\xF9 |0 \x6E\xFA |0 \x6E\xFB |0 \x6E\xFC |0 \x6E\xFD |0 \x6E\xFE |0 \x6F\x41 |0 \x6F\x42 |0 \x6F\x43 |0 \x6F\x44 |0 \x6F\x45 |0 \x6F\x46 |0 \x6F\x47 |0 \x6F\x48 |0 \x6F\x49 |0 \x6F\x4A |0 \x6F\x4B |0 \x6F\x4C |0 \x6F\x4D |0 \x6F\x4E |0 \x6F\x4F |0 \x6F\x50 |0 \x6F\x51 |0 \x6F\x52 |0 \x6F\x53 |0 \x6F\x54 |0 \x6F\x55 |0 \x6F\x56 |0 \x6F\x57 |0 \x6F\x58 |0 \x6F\x59 |0 \x6F\x5A |0 \x6F\x5B |0 \x6F\x5C |0 \x6F\x5D |0 \x6F\x5E |0 \x6F\x5F |0 \x6F\x60 |0 \x6F\x61 |0 \x6F\x62 |0 \x6F\x63 |0 \x6F\x64 |0 \x6F\x65 |0 \x6F\x66 |0 \x6F\x67 |0 \x6F\x68 |0 \x6F\x69 |0 \x6F\x6A |0 \x6F\x6B |0 \x6F\x6C |0 \x6F\x6D |0 \x6F\x6E |0 \x6F\x6F |0 \x6F\x70 |0 \x6F\x71 |0 \x6F\x72 |0 \x6F\x73 |0 \x6F\x74 |0 \x6F\x75 |0 \x6F\x76 |0 \x6F\x77 |0 \x6F\x78 |0 \x6F\x79 |0 \x6F\x7A |0 \x6F\x7B |0 \x6F\x7C |0 \x6F\x7D |0 \x6F\x7E |0 \x6F\x7F |0 \x6F\x80 |0 \x6F\x81 |0 \x6F\x82 |0 \x6F\x83 |0 \x6F\x84 |0 \x6F\x85 |0 \x6F\x86 |0 \x6F\x87 |0 \x6F\x88 |0 \x6F\x89 |0 \x6F\x8A |0 \x6F\x8B |0 \x6F\x8C |0 \x6F\x8D |0 \x6F\x8E |0 \x6F\x8F |0 \x6F\x90 |0 \x6F\x91 |0 \x6F\x92 |0 \x6F\x93 |0 \x6F\x94 |0 \x6F\x95 |0 \x6F\x96 |0 \x6F\x97 |0 \x6F\x98 |0 \x6F\x99 |0 \x6F\x9A |0 \x6F\x9B |0 \x6F\x9C |0 \x6F\x9D |0 \x6F\x9E |0 \x6F\x9F |0 \x6F\xA0 |0 \x6F\xA1 |0 \x6F\xA2 |0 \x6F\xA3 |0 \x6F\xA4 |0 \x6F\xA5 |0 \x6F\xA6 |0 \x6F\xA7 |0 \x6F\xA8 |0 \x6F\xA9 |0 \x6F\xAA |0 \x6F\xAB |0 \x6F\xAC |0 \x6F\xAD |0 \x6F\xAE |0 \x6F\xAF |0 \x6F\xB0 |0 \x6F\xB1 |0 \x6F\xB2 |0 \x6F\xB3 |0 \x6F\xB4 |0 \x6F\xB5 |0 \x6F\xB6 |0 \x6F\xB7 |0 \x6F\xB8 |0 \x6F\xB9 |0 \x6F\xBA |0 \x6F\xBB |0 \x6F\xBC |0 \x6F\xBD |0 \x6F\xBE |0 \x6F\xBF |0 \x6F\xC0 |0 \x6F\xC1 |0 \x6F\xC2 |0 \x6F\xC3 |0 \x6F\xC4 |0 \x6F\xC5 |0 \x6F\xC6 |0 \x6F\xC7 |0 \x6F\xC8 |0 \x6F\xC9 |0 \x6F\xCA |0 \x6F\xCB |0 \x6F\xCC |0 \x6F\xCD |0 \x6F\xCE |0 \x6F\xCF |0 \x6F\xD0 |0 \x6F\xD1 |0 \x6F\xD2 |0 \x6F\xD3 |0 \x6F\xD4 |0 \x6F\xD5 |0 \x6F\xD6 |0 \x6F\xD7 |0 \x6F\xD8 |0 \x6F\xD9 |0 \x6F\xDA |0 \x6F\xDB |0 \x6F\xDC |0 \x6F\xDD |0 \x6F\xDE |0 \x6F\xDF |0 \x6F\xE0 |0 \x6F\xE1 |0 \x6F\xE2 |0 \x6F\xE3 |0 \x6F\xE4 |0 \x6F\xE5 |0 \x6F\xE6 |0 \x6F\xE7 |0 \x6F\xE8 |0 \x6F\xE9 |0 \x6F\xEA |0 \x6F\xEB |0 \x6F\xEC |0 \x6F\xED |0 \x6F\xEE |0 \x6F\xEF |0 \x6F\xF0 |0 \x6F\xF1 |0 \x6F\xF2 |0 \x6F\xF3 |0 \x6F\xF4 |0 \x6F\xF5 |0 \x6F\xF6 |0 \x6F\xF7 |0 \x6F\xF8 |0 \x6F\xF9 |0 \x6F\xFA |0 \x6F\xFB |0 \x6F\xFC |0 \x6F\xFD |0 \x6F\xFE |0 \x70\x41 |0 \x70\x42 |0 \x70\x43 |0 \x70\x44 |0 \x70\x45 |0 \x70\x46 |0 \x70\x47 |0 \x70\x48 |0 \x70\x49 |0 \x70\x4A |0 \x70\x4B |0 \x70\x4C |0 \x70\x4D |0 \x70\x4E |0 \x70\x4F |0 \x70\x50 |0 \x70\x51 |0 \x70\x52 |0 \x70\x53 |0 \x70\x54 |0 \x70\x55 |0 \x70\x56 |0 \x70\x57 |0 \x70\x58 |0 \x70\x59 |0 \x70\x5A |0 \x70\x5B |0 \x70\x5C |0 \x70\x5D |0 \x70\x5E |0 \x70\x5F |0 \x70\x60 |0 \x70\x61 |0 \x70\x62 |0 \x70\x63 |0 \x70\x64 |0 \x70\x65 |0 \x70\x66 |0 \x70\x67 |0 \x70\x68 |0 \x70\x69 |0 \x70\x6A |0 \x70\x6B |0 \x70\x6C |0 \x70\x6D |0 \x70\x6E |0 \x70\x6F |0 \x70\x70 |0 \x70\x71 |0 \x70\x72 |0 \x70\x73 |0 \x70\x74 |0 \x70\x75 |0 \x70\x76 |0 \x70\x77 |0 \x70\x78 |0 \x70\x79 |0 \x70\x7A |0 \x70\x7B |0 \x70\x7C |0 \x70\x7D |0 \x70\x7E |0 \x70\x7F |0 \x70\x80 |0 \x70\x81 |0 \x70\x82 |0 \x70\x83 |0 \x70\x84 |0 \x70\x85 |0 \x70\x86 |0 \x70\x87 |0 \x70\x88 |0 \x70\x89 |0 \x70\x8A |0 \x70\x8B |0 \x70\x8C |0 \x70\x8D |0 \x70\x8E |0 \x70\x8F |0 \x70\x90 |0 \x70\x91 |0 \x70\x92 |0 \x70\x93 |0 \x70\x94 |0 \x70\x95 |0 \x70\x96 |0 \x70\x97 |0 \x70\x98 |0 \x70\x99 |0 \x70\x9A |0 \x70\x9B |0 \x70\x9C |0 \x70\x9D |0 \x70\x9E |0 \x70\x9F |0 \x70\xA0 |0 \x70\xA1 |0 \x70\xA2 |0 \x70\xA3 |0 \x70\xA4 |0 \x70\xA5 |0 \x70\xA6 |0 \x70\xA7 |0 \x70\xA8 |0 \x70\xA9 |0 \x70\xAA |0 \x70\xAB |0 \x70\xAC |0 \x70\xAD |0 \x70\xAE |0 \x70\xAF |0 \x70\xB0 |0 \x70\xB1 |0 \x70\xB2 |0 \x70\xB3 |0 \x70\xB4 |0 \x70\xB5 |0 \x70\xB6 |0 \x70\xB7 |0 \x70\xB8 |0 \x70\xB9 |0 \x70\xBA |0 \x70\xBB |0 \x70\xBC |0 \x70\xBD |0 \x70\xBE |0 \x70\xBF |0 \x70\xC0 |0 \x70\xC1 |0 \x70\xC2 |0 \x70\xC3 |0 \x70\xC4 |0 \x70\xC5 |0 \x70\xC6 |0 \x70\xC7 |0 \x70\xC8 |0 \x70\xC9 |0 \x70\xCA |0 \x70\xCB |0 \x70\xCC |0 \x70\xCD |0 \x70\xCE |0 \x70\xCF |0 \x70\xD0 |0 \x70\xD1 |0 \x70\xD2 |0 \x70\xD3 |0 \x70\xD4 |0 \x70\xD5 |0 \x70\xD6 |0 \x70\xD7 |0 \x70\xD8 |0 \x70\xD9 |0 \x70\xDA |0 \x70\xDB |0 \x70\xDC |0 \x70\xDD |0 \x70\xDE |0 \x70\xDF |0 \x70\xE0 |0 \x70\xE1 |0 \x70\xE2 |0 \x70\xE3 |0 \x70\xE4 |0 \x70\xE5 |0 \x70\xE6 |0 \x70\xE7 |0 \x70\xE8 |0 \x70\xE9 |0 \x70\xEA |0 \x70\xEB |0 \x70\xEC |0 \x70\xED |0 \x70\xEE |0 \x70\xEF |0 \x70\xF0 |0 \x70\xF1 |0 \x70\xF2 |0 \x70\xF3 |0 \x70\xF4 |0 \x70\xF5 |0 \x70\xF6 |0 \x70\xF7 |0 \x70\xF8 |0 \x70\xF9 |0 \x70\xFA |0 \x70\xFB |0 \x70\xFC |0 \x70\xFD |0 \x70\xFE |0 \x71\x41 |0 \x71\x42 |0 \x71\x43 |0 \x71\x44 |0 \x71\x45 |0 \x71\x46 |0 \x71\x47 |0 \x71\x48 |0 \x71\x49 |0 \x71\x4A |0 \x71\x4B |0 \x71\x4C |0 \x71\x4D |0 \x71\x4E |0 \x71\x4F |0 \x71\x50 |0 \x71\x51 |0 \x71\x52 |0 \x71\x53 |0 \x71\x54 |0 \x71\x55 |0 \x71\x56 |0 \x71\x57 |0 \x71\x58 |0 \x71\x59 |0 \x71\x5A |0 \x71\x5B |0 \x71\x5C |0 \x71\x5D |0 \x71\x5E |0 \x71\x5F |0 \x71\x60 |0 \x71\x61 |0 \x71\x62 |0 \x71\x63 |0 \x71\x64 |0 \x71\x65 |0 \x71\x66 |0 \x71\x67 |0 \x71\x68 |0 \x71\x69 |0 \x71\x6A |0 \x71\x6B |0 \x71\x6C |0 \x71\x6D |0 \x71\x6E |0 \x71\x6F |0 \x71\x70 |0 \x71\x71 |0 \x71\x72 |0 \x71\x73 |0 \x71\x74 |0 \x71\x75 |0 \x71\x76 |0 \x71\x77 |0 \x71\x78 |0 \x71\x79 |0 \x71\x7A |0 \x71\x7B |0 \x71\x7C |0 \x71\x7D |0 \x71\x7E |0 \x71\x7F |0 \x71\x80 |0 \x71\x81 |0 \x71\x82 |0 \x71\x83 |0 \x71\x84 |0 \x71\x85 |0 \x71\x86 |0 \x71\x87 |0 \x71\x88 |0 \x71\x89 |0 \x71\x8A |0 \x71\x8B |0 \x71\x8C |0 \x71\x8D |0 \x71\x8E |0 \x71\x8F |0 \x71\x90 |0 \x71\x91 |0 \x71\x92 |0 \x71\x93 |0 \x71\x94 |0 \x71\x95 |0 \x71\x96 |0 \x71\x97 |0 \x71\x98 |0 \x71\x99 |0 \x71\x9A |0 \x71\x9B |0 \x71\x9C |0 \x71\x9D |0 \x71\x9E |0 \x71\x9F |0 \x71\xA0 |0 \x71\xA1 |0 \x71\xA2 |0 \x71\xA3 |0 \x71\xA4 |0 \x71\xA5 |0 \x71\xA6 |0 \x71\xA7 |0 \x71\xA8 |0 \x71\xA9 |0 \x71\xAA |0 \x71\xAB |0 \x71\xAC |0 \x71\xAD |0 \x71\xAE |0 \x71\xAF |0 \x71\xB0 |0 \x71\xB1 |0 \x71\xB2 |0 \x71\xB3 |0 \x71\xB4 |0 \x71\xB5 |0 \x71\xB6 |0 \x71\xB7 |0 \x71\xB8 |0 \x71\xB9 |0 \x71\xBA |0 \x71\xBB |0 \x71\xBC |0 \x71\xBD |0 \x71\xBE |0 \x71\xBF |0 \x71\xC0 |0 \x71\xC1 |0 \x71\xC2 |0 \x71\xC3 |0 \x71\xC4 |0 \x71\xC5 |0 \x71\xC6 |0 \x71\xC7 |0 \x71\xC8 |0 \x71\xC9 |0 \x71\xCA |0 \x71\xCB |0 \x71\xCC |0 \x71\xCD |0 \x71\xCE |0 \x71\xCF |0 \x71\xD0 |0 \x71\xD1 |0 \x71\xD2 |0 \x71\xD3 |0 \x71\xD4 |0 \x71\xD5 |0 \x71\xD6 |0 \x71\xD7 |0 \x71\xD8 |0 \x71\xD9 |0 \x71\xDA |0 \x71\xDB |0 \x71\xDC |0 \x71\xDD |0 \x71\xDE |0 \x71\xDF |0 \x71\xE0 |0 \x71\xE1 |0 \x71\xE2 |0 \x71\xE3 |0 \x71\xE4 |0 \x71\xE5 |0 \x71\xE6 |0 \x71\xE7 |0 \x71\xE8 |0 \x71\xE9 |0 \x71\xEA |0 \x71\xEB |0 \x71\xEC |0 \x71\xED |0 \x71\xEE |0 \x71\xEF |0 \x71\xF0 |0 \x71\xF1 |0 \x71\xF2 |0 \x71\xF3 |0 \x71\xF4 |0 \x71\xF5 |0 \x71\xF6 |0 \x71\xF7 |0 \x71\xF8 |0 \x71\xF9 |0 \x71\xFA |0 \x71\xFB |0 \x71\xFC |0 \x71\xFD |0 \x71\xFE |0 \x72\x41 |0 \x72\x42 |0 \x72\x43 |0 \x72\x44 |0 \x72\x45 |0 \x72\x46 |0 \x72\x47 |0 \x72\x48 |0 \x72\x49 |0 \x72\x4A |0 \x72\x4B |0 \x72\x4C |0 \x72\x4D |0 \x72\x4E |0 \x72\x4F |0 \x72\x50 |0 \x72\x51 |0 \x72\x52 |0 \x72\x53 |0 \x72\x54 |0 \x72\x55 |0 \x72\x56 |0 \x72\x57 |0 \x72\x58 |0 \x72\x59 |0 \x72\x5A |0 \x72\x5B |0 \x72\x5C |0 \x72\x5D |0 \x72\x5E |0 \x72\x5F |0 \x72\x60 |0 \x72\x61 |0 \x72\x62 |0 \x72\x63 |0 \x72\x64 |0 \x72\x65 |0 \x72\x66 |0 \x72\x67 |0 \x72\x68 |0 \x72\x69 |0 \x72\x6A |0 \x72\x6B |0 \x72\x6C |0 \x72\x6D |0 \x72\x6E |0 \x72\x6F |0 \x72\x70 |0 \x72\x71 |0 \x72\x72 |0 \x72\x73 |0 \x72\x74 |0 \x72\x75 |0 \x72\x76 |0 \x72\x77 |0 \x72\x78 |0 \x72\x79 |0 \x72\x7A |0 \x72\x7B |0 \x72\x7C |0 \x72\x7D |0 \x72\x7E |0 \x72\x7F |0 \x72\x80 |0 \x72\x81 |0 \x72\x82 |0 \x72\x83 |0 \x72\x84 |0 \x72\x85 |0 \x72\x86 |0 \x72\x87 |0 \x72\x88 |0 \x72\x89 |0 \x72\x8A |0 \x72\x8B |0 \x72\x8C |0 \x72\x8D |0 \x72\x8E |0 \x72\x8F |0 \x72\x90 |0 \x72\x91 |0 \x72\x92 |0 \x72\x93 |0 \x72\x94 |0 \x72\x95 |0 \x72\x96 |0 \x72\x97 |0 \x72\x98 |0 \x72\x99 |0 \x72\x9A |0 \x72\x9B |0 \x72\x9C |0 \x72\x9D |0 \x72\x9E |0 \x72\x9F |0 \x72\xA0 |0 \x72\xA1 |0 \x72\xA2 |0 \x72\xA3 |0 \x72\xA4 |0 \x72\xA5 |0 \x72\xA6 |0 \x72\xA7 |0 \x72\xA8 |0 \x72\xA9 |0 \x72\xAA |0 \x72\xAB |0 \x72\xAC |0 \x72\xAD |0 \x72\xAE |0 \x72\xAF |0 \x72\xB0 |0 \x72\xB1 |0 \x72\xB2 |0 \x72\xB3 |0 \x72\xB4 |0 \x72\xB5 |0 \x72\xB6 |0 \x72\xB7 |0 \x72\xB8 |0 \x72\xB9 |0 \x72\xBA |0 \x72\xBB |0 \x72\xBC |0 \x72\xBD |0 \x72\xBE |0 \x72\xBF |0 \x72\xC0 |0 \x72\xC1 |0 \x72\xC2 |0 \x72\xC3 |0 \x72\xC4 |0 \x72\xC5 |0 \x72\xC6 |0 \x72\xC7 |0 \x72\xC8 |0 \x72\xC9 |0 \x72\xCA |0 \x72\xCB |0 \x72\xCC |0 \x72\xCD |0 \x72\xCE |0 \x72\xCF |0 \x72\xD0 |0 \x72\xD1 |0 \x72\xD2 |0 \x72\xD3 |0 \x72\xD4 |0 \x72\xD5 |0 \x72\xD6 |0 \x72\xD7 |0 \x72\xD8 |0 \x72\xD9 |0 \x72\xDA |0 \x72\xDB |0 \x72\xDC |0 \x72\xDD |0 \x72\xDE |0 \x72\xDF |0 \x72\xE0 |0 \x72\xE1 |0 \x72\xE2 |0 \x72\xE3 |0 \x72\xE4 |0 \x72\xE5 |0 \x72\xE6 |0 \x72\xE7 |0 \x72\xE8 |0 \x72\xE9 |0 \x72\xEA |0 \x72\xEB |0 \x72\xEC |0 \x72\xED |0 \x72\xEE |0 \x72\xEF |0 \x72\xF0 |0 \x72\xF1 |0 \x72\xF2 |0 \x72\xF3 |0 \x72\xF4 |0 \x72\xF5 |0 \x72\xF6 |0 \x72\xF7 |0 \x72\xF8 |0 \x72\xF9 |0 \x72\xFA |0 \x72\xFB |0 \x72\xFC |0 \x72\xFD |0 \x72\xFE |0 \x73\x41 |0 \x73\x42 |0 \x73\x43 |0 \x73\x44 |0 \x73\x45 |0 \x73\x46 |0 \x73\x47 |0 \x73\x48 |0 \x73\x49 |0 \x73\x4A |0 \x73\x4B |0 \x73\x4C |0 \x73\x4D |0 \x73\x4E |0 \x73\x4F |0 \x73\x50 |0 \x73\x51 |0 \x73\x52 |0 \x73\x53 |0 \x73\x54 |0 \x73\x55 |0 \x73\x56 |0 \x73\x57 |0 \x73\x58 |0 \x73\x59 |0 \x73\x5A |0 \x73\x5B |0 \x73\x5C |0 \x73\x5D |0 \x73\x5E |0 \x73\x5F |0 \x73\x60 |0 \x73\x61 |0 \x73\x62 |0 \x73\x63 |0 \x73\x64 |0 \x73\x65 |0 \x73\x66 |0 \x73\x67 |0 \x73\x68 |0 \x73\x69 |0 \x73\x6A |0 \x73\x6B |0 \x73\x6C |0 \x73\x6D |0 \x73\x6E |0 \x73\x6F |0 \x73\x70 |0 \x73\x71 |0 \x73\x72 |0 \x73\x73 |0 \x73\x74 |0 \x73\x75 |0 \x73\x76 |0 \x73\x77 |0 \x73\x78 |0 \x73\x79 |0 \x73\x7A |0 \x73\x7B |0 \x73\x7C |0 \x73\x7D |0 \x73\x7E |0 \x73\x7F |0 \x73\x80 |0 \x73\x81 |0 \x73\x82 |0 \x73\x83 |0 \x73\x84 |0 \x73\x85 |0 \x73\x86 |0 \x73\x87 |0 \x73\x88 |0 \x73\x89 |0 \x73\x8A |0 \x73\x8B |0 \x73\x8C |0 \x73\x8D |0 \x73\x8E |0 \x73\x8F |0 \x73\x90 |0 \x73\x91 |0 \x73\x92 |0 \x73\x93 |0 \x73\x94 |0 \x73\x95 |0 \x73\x96 |0 \x73\x97 |0 \x73\x98 |0 \x73\x99 |0 \x73\x9A |0 \x73\x9B |0 \x73\x9C |0 \x73\x9D |0 \x73\x9E |0 \x73\x9F |0 \x73\xA0 |0 \x73\xA1 |0 \x73\xA2 |0 \x73\xA3 |0 \x73\xA4 |0 \x73\xA5 |0 \x73\xA6 |0 \x73\xA7 |0 \x73\xA8 |0 \x73\xA9 |0 \x73\xAA |0 \x73\xAB |0 \x73\xAC |0 \x73\xAD |0 \x73\xAE |0 \x73\xAF |0 \x73\xB0 |0 \x73\xB1 |0 \x73\xB2 |0 \x73\xB3 |0 \x73\xB4 |0 \x73\xB5 |0 \x73\xB6 |0 \x73\xB7 |0 \x73\xB8 |0 \x73\xB9 |0 \x73\xBA |0 \x73\xBB |0 \x73\xBC |0 \x73\xBD |0 \x73\xBE |0 \x73\xBF |0 \x73\xC0 |0 \x73\xC1 |0 \x73\xC2 |0 \x73\xC3 |0 \x73\xC4 |0 \x73\xC5 |0 \x73\xC6 |0 \x73\xC7 |0 \x73\xC8 |0 \x73\xC9 |0 \x73\xCA |0 \x73\xCB |0 \x73\xCC |0 \x73\xCD |0 \x73\xCE |0 \x73\xCF |0 \x73\xD0 |0 \x73\xD1 |0 \x73\xD2 |0 \x73\xD3 |0 \x73\xD4 |0 \x73\xD5 |0 \x73\xD6 |0 \x73\xD7 |0 \x73\xD8 |0 \x73\xD9 |0 \x73\xDA |0 \x73\xDB |0 \x73\xDC |0 \x73\xDD |0 \x73\xDE |0 \x73\xDF |0 \x73\xE0 |0 \x73\xE1 |0 \x73\xE2 |0 \x73\xE3 |0 \x73\xE4 |0 \x73\xE5 |0 \x73\xE6 |0 \x73\xE7 |0 \x73\xE8 |0 \x73\xE9 |0 \x73\xEA |0 \x73\xEB |0 \x73\xEC |0 \x73\xED |0 \x73\xEE |0 \x73\xEF |0 \x73\xF0 |0 \x73\xF1 |0 \x73\xF2 |0 \x73\xF3 |0 \x73\xF4 |0 \x73\xF5 |0 \x73\xF6 |0 \x73\xF7 |0 \x73\xF8 |0 \x73\xF9 |0 \x73\xFA |0 \x73\xFB |0 \x73\xFC |0 \x73\xFD |0 \x73\xFE |0 \x74\x41 |0 \x74\x42 |0 \x74\x43 |0 \x74\x44 |0 \x74\x45 |0 \x74\x46 |0 \x74\x47 |0 \x74\x48 |0 \x74\x49 |0 \x74\x4A |0 \x74\x4B |0 \x74\x4C |0 \x74\x4D |0 \x74\x4E |0 \x74\x4F |0 \x74\x50 |0 \x74\x51 |0 \x74\x52 |0 \x74\x53 |0 \x74\x54 |0 \x74\x55 |0 \x74\x56 |0 \x74\x57 |0 \x74\x58 |0 \x74\x59 |0 \x74\x5A |0 \x74\x5B |0 \x74\x5C |0 \x74\x5D |0 \x74\x5E |0 \x74\x5F |0 \x74\x60 |0 \x74\x61 |0 \x74\x62 |0 \x74\x63 |0 \x74\x64 |0 \x74\x65 |0 \x74\x66 |0 \x74\x67 |0 \x74\x68 |0 \x74\x69 |0 \x74\x6A |0 \x74\x6B |0 \x74\x6C |0 \x74\x6D |0 \x74\x6E |0 \x74\x6F |0 \x74\x70 |0 \x74\x71 |0 \x74\x72 |0 \x74\x73 |0 \x74\x74 |0 \x74\x75 |0 \x74\x76 |0 \x74\x77 |0 \x74\x78 |0 \x74\x79 |0 \x74\x7A |0 \x74\x7B |0 \x74\x7C |0 \x74\x7D |0 \x74\x7E |0 \x74\x7F |0 \x74\x80 |0 \x74\x81 |0 \x74\x82 |0 \x74\x83 |0 \x74\x84 |0 \x74\x85 |0 \x74\x86 |0 \x74\x87 |0 \x74\x88 |0 \x74\x89 |0 \x74\x8A |0 \x74\x8B |0 \x74\x8C |0 \x74\x8D |0 \x74\x8E |0 \x74\x8F |0 \x74\x90 |0 \x74\x91 |0 \x74\x92 |0 \x74\x93 |0 \x74\x94 |0 \x74\x95 |0 \x74\x96 |0 \x74\x97 |0 \x74\x98 |0 \x74\x99 |0 \x74\x9A |0 \x74\x9B |0 \x74\x9C |0 \x74\x9D |0 \x74\x9E |0 \x74\x9F |0 \x74\xA0 |0 \x74\xA1 |0 \x74\xA2 |0 \x74\xA3 |0 \x74\xA4 |0 \x74\xA5 |0 \x74\xA6 |0 \x74\xA7 |0 \x74\xA8 |0 \x74\xA9 |0 \x74\xAA |0 \x74\xAB |0 \x74\xAC |0 \x74\xAD |0 \x74\xAE |0 \x74\xAF |0 \x74\xB0 |0 \x74\xB1 |0 \x74\xB2 |0 \x74\xB3 |0 \x74\xB4 |0 \x74\xB5 |0 \x74\xB6 |0 \x74\xB7 |0 \x74\xB8 |0 \x74\xB9 |0 \x74\xBA |0 \x74\xBB |0 \x74\xBC |0 \x74\xBD |0 \x74\xBE |0 \x74\xBF |0 \x74\xC0 |0 \x74\xC1 |0 \x74\xC2 |0 \x74\xC3 |0 \x74\xC4 |0 \x74\xC5 |0 \x74\xC6 |0 \x74\xC7 |0 \x74\xC8 |0 \x74\xC9 |0 \x74\xCA |0 \x74\xCB |0 \x74\xCC |0 \x74\xCD |0 \x74\xCE |0 \x74\xCF |0 \x74\xD0 |0 \x74\xD1 |0 \x74\xD2 |0 \x74\xD3 |0 \x74\xD4 |0 \x74\xD5 |0 \x74\xD6 |0 \x74\xD7 |0 \x74\xD8 |0 \x74\xD9 |0 \x74\xDA |0 \x74\xDB |0 \x74\xDC |0 \x74\xDD |0 \x74\xDE |0 \x74\xDF |0 \x74\xE0 |0 \x74\xE1 |0 \x74\xE2 |0 \x74\xE3 |0 \x74\xE4 |0 \x74\xE5 |0 \x74\xE6 |0 \x74\xE7 |0 \x74\xE8 |0 \x74\xE9 |0 \x74\xEA |0 \x74\xEB |0 \x74\xEC |0 \x74\xED |0 \x74\xEE |0 \x74\xEF |0 \x74\xF0 |0 \x74\xF1 |0 \x74\xF2 |0 \x74\xF3 |0 \x74\xF4 |0 \x74\xF5 |0 \x74\xF6 |0 \x74\xF7 |0 \x74\xF8 |0 \x74\xF9 |0 \x74\xFA |0 \x74\xFB |0 \x74\xFC |0 \x74\xFD |0 \x74\xFE |0 \x75\x41 |0 \x75\x42 |0 \x75\x43 |0 \x75\x44 |0 \x75\x45 |0 \x75\x46 |0 \x75\x47 |0 \x75\x48 |0 \x75\x49 |0 \x75\x4A |0 \x75\x4B |0 \x75\x4C |0 \x75\x4D |0 \x75\x4E |0 \x75\x4F |0 \x75\x50 |0 \x75\x51 |0 \x75\x52 |0 \x75\x53 |0 \x75\x54 |0 \x75\x55 |0 \x75\x56 |0 \x75\x57 |0 \x75\x58 |0 \x75\x59 |0 \x75\x5A |0 \x75\x5B |0 \x75\x5C |0 \x75\x5D |0 \x75\x5E |0 \x75\x5F |0 \x75\x60 |0 \x75\x61 |0 \x75\x62 |0 \x75\x63 |0 \x75\x64 |0 \x75\x65 |0 \x75\x66 |0 \x75\x67 |0 \x75\x68 |0 \x75\x69 |0 \x75\x6A |0 \x75\x6B |0 \x75\x6C |0 \x75\x6D |0 \x75\x6E |0 \x75\x6F |0 \x75\x70 |0 \x75\x71 |0 \x75\x72 |0 \x75\x73 |0 \x75\x74 |0 \x75\x75 |0 \x75\x76 |0 \x75\x77 |0 \x75\x78 |0 \x75\x79 |0 \x75\x7A |0 \x75\x7B |0 \x75\x7C |0 \x75\x7D |0 \x75\x7E |0 \x75\x7F |0 \x75\x80 |0 \x75\x81 |0 \x75\x82 |0 \x75\x83 |0 \x75\x84 |0 \x75\x85 |0 \x75\x86 |0 \x75\x87 |0 \x75\x88 |0 \x75\x89 |0 \x75\x8A |0 \x75\x8B |0 \x75\x8C |0 \x75\x8D |0 \x75\x8E |0 \x75\x8F |0 \x75\x90 |0 \x75\x91 |0 \x75\x92 |0 \x75\x93 |0 \x75\x94 |0 \x75\x95 |0 \x75\x96 |0 \x75\x97 |0 \x75\x98 |0 \x75\x99 |0 \x75\x9A |0 \x75\x9B |0 \x75\x9C |0 \x75\x9D |0 \x75\x9E |0 \x75\x9F |0 \x75\xA0 |0 \x75\xA1 |0 \x75\xA2 |0 \x75\xA3 |0 \x75\xA4 |0 \x75\xA5 |0 \x75\xA6 |0 \x75\xA7 |0 \x75\xA8 |0 \x75\xA9 |0 \x75\xAA |0 \x75\xAB |0 \x75\xAC |0 \x75\xAD |0 \x75\xAE |0 \x75\xAF |0 \x75\xB0 |0 \x75\xB1 |0 \x75\xB2 |0 \x75\xB3 |0 \x75\xB4 |0 \x75\xB5 |0 \x75\xB6 |0 \x75\xB7 |0 \x75\xB8 |0 \x75\xB9 |0 \x75\xBA |0 \x75\xBB |0 \x75\xBC |0 \x75\xBD |0 \x75\xBE |0 \x75\xBF |0 \x75\xC0 |0 \x75\xC1 |0 \x75\xC2 |0 \x75\xC3 |0 \x75\xC4 |0 \x75\xC5 |0 \x75\xC6 |0 \x75\xC7 |0 \x75\xC8 |0 \x75\xC9 |0 \x75\xCA |0 \x75\xCB |0 \x75\xCC |0 \x75\xCD |0 \x75\xCE |0 \x75\xCF |0 \x75\xD0 |0 \x75\xD1 |0 \x75\xD2 |0 \x75\xD3 |0 \x75\xD4 |0 \x75\xD5 |0 \x75\xD6 |0 \x75\xD7 |0 \x75\xD8 |0 \x75\xD9 |0 \x75\xDA |0 \x75\xDB |0 \x75\xDC |0 \x75\xDD |0 \x75\xDE |0 \x75\xDF |0 \x75\xE0 |0 \x75\xE1 |0 \x75\xE2 |0 \x75\xE3 |0 \x75\xE4 |0 \x75\xE5 |0 \x75\xE6 |0 \x75\xE7 |0 \x75\xE8 |0 \x75\xE9 |0 \x75\xEA |0 \x75\xEB |0 \x75\xEC |0 \x75\xED |0 \x75\xEE |0 \x75\xEF |0 \x75\xF0 |0 \x75\xF1 |0 \x75\xF2 |0 \x75\xF3 |0 \x75\xF4 |0 \x75\xF5 |0 \x75\xF6 |0 \x75\xF7 |0 \x75\xF8 |0 \x75\xF9 |0 \x75\xFA |0 \x75\xFB |0 \x75\xFC |0 \x75\xFD |0 \x75\xFE |0 \x76\x41 |0 \x76\x42 |0 \x76\x43 |0 \x76\x44 |0 \x76\x45 |0 \x76\x46 |0 \x76\x47 |0 \x76\x48 |0 \x76\x49 |0 \x76\x4A |0 \x76\x4B |0 \x76\x4C |0 \x76\x4D |0 \x76\x4E |0 \x76\x4F |0 \x76\x50 |0 \x76\x51 |0 \x76\x52 |0 \x76\x53 |0 \x76\x54 |0 \x76\x55 |0 \x76\x56 |0 \x76\x57 |0 \x76\x58 |0 \x76\x59 |0 \x76\x5A |0 \x76\x5B |0 \x76\x5C |0 \x76\x5D |0 \x76\x5E |0 \x76\x5F |0 \x76\x60 |0 \x76\x61 |0 \x76\x62 |0 \x76\x63 |0 \x76\x64 |0 \x76\x65 |0 \x76\x66 |0 \x76\x67 |0 \x76\x68 |0 \x76\x69 |0 \x76\x6A |0 \x76\x6B |0 \x76\x6C |0 \x76\x6D |0 \x76\x6E |0 \x76\x6F |0 \x76\x70 |0 \x76\x71 |0 \x76\x72 |0 \x76\x73 |0 \x76\x74 |0 \x76\x75 |0 \x76\x76 |0 \x76\x77 |0 \x76\x78 |0 \x76\x79 |0 \x76\x7A |0 \x76\x7B |0 \x76\x7C |0 \x76\x7D |0 \x76\x7E |0 \x76\x7F |0 \x76\x80 |0 \x76\x81 |0 \x76\x82 |0 \x76\x83 |0 \x76\x84 |0 \x76\x85 |0 \x76\x86 |0 \x76\x87 |0 \x76\x88 |0 \x76\x89 |0 \x76\x8A |0 \x76\x8B |0 \x76\x8C |0 \x76\x8D |0 \x76\x8E |0 \x76\x8F |0 \x76\x90 |0 \x76\x91 |0 \x76\x92 |0 \x76\x93 |0 \x76\x94 |0 \x76\x95 |0 \x76\x96 |0 \x76\x97 |0 \x76\x98 |0 \x76\x99 |0 \x76\x9A |0 \x76\x9B |0 \x76\x9C |0 \x76\x9D |0 \x76\x9E |0 \x76\x9F |0 \x76\xA0 |0 \x76\xA1 |0 \x76\xA2 |0 \x76\xA3 |0 \x76\xA4 |0 \x76\xA5 |0 \x76\xA6 |0 \x76\xA7 |0 \x76\xA8 |0 \x76\xA9 |0 \x76\xAA |0 \x76\xAB |0 \x76\xAC |0 \x76\xAD |0 \x76\xAE |0 \x76\xAF |0 \x76\xB0 |0 \x76\xB1 |0 \x76\xB2 |0 \x76\xB3 |0 \x76\xB4 |0 \x76\xB5 |0 \x76\xB6 |0 \x76\xB7 |0 \x76\xB8 |0 \x76\xB9 |0 \x76\xBA |0 \x76\xBB |0 \x76\xBC |0 \x76\xBD |0 \x76\xBE |0 \x76\xBF |0 \x76\xC0 |0 \x76\xC1 |0 \x76\xC2 |0 \x76\xC3 |0 \x76\xC4 |0 \x76\xC5 |0 \x76\xC6 |0 \x76\xC7 |0 \x76\xC8 |0 \x76\xC9 |0 \x76\xCA |0 \x76\xCB |0 \x76\xCC |0 \x76\xCD |0 \x76\xCE |0 \x76\xCF |0 \x76\xD0 |0 \x76\xD1 |0 \x76\xD2 |0 \x76\xD3 |0 \x76\xD4 |0 \x76\xD5 |0 \x76\xD6 |0 \x76\xD7 |0 \x76\xD8 |0 \x76\xD9 |0 \x76\xDA |0 \x76\xDB |0 \x76\xDC |0 \x76\xDD |0 \x76\xDE |0 \x76\xDF |0 \x76\xE0 |0 \x76\xE1 |0 \x76\xE2 |0 \x76\xE3 |0 \x76\xE4 |0 \x76\xE5 |0 \x76\xE6 |0 \x76\xE7 |0 \x76\xE8 |0 \x76\xE9 |0 \x76\xEA |0 \x76\xEB |0 \x76\xEC |0 \x76\xED |0 \x76\xEE |0 \x76\xEF |0 \x76\xF0 |0 \x76\xF1 |0 \x76\xF2 |0 \x76\xF3 |0 \x76\xF4 |0 \x76\xF5 |0 \x76\xF6 |0 \x76\xF7 |0 \x76\xF8 |0 \x76\xF9 |0 \x76\xFA |0 \x76\xFB |0 \x76\xFC |0 \x76\xFD |0 \x76\xFE |0 \x77\x41 |0 \x77\x42 |0 \x77\x43 |0 \x77\x44 |0 \x77\x45 |0 \x77\x46 |0 \x77\x47 |0 \x77\x48 |0 \x77\x49 |0 \x77\x4A |0 \x77\x4B |0 \x77\x4C |0 \x77\x4D |0 \x77\x4E |0 \x77\x4F |0 \x77\x50 |0 \x77\x51 |0 \x77\x52 |0 \x77\x53 |0 \x77\x54 |0 \x77\x55 |0 \x77\x56 |0 \x77\x57 |0 \x77\x58 |0 \x77\x59 |0 \x77\x5A |0 \x77\x5B |0 \x77\x5C |0 \x77\x5D |0 \x77\x5E |0 \x77\x5F |0 \x77\x60 |0 \x77\x61 |0 \x77\x62 |0 \x77\x63 |0 \x77\x64 |0 \x77\x65 |0 \x77\x66 |0 \x77\x67 |0 \x77\x68 |0 \x77\x69 |0 \x77\x6A |0 \x77\x6B |0 \x77\x6C |0 \x77\x6D |0 \x77\x6E |0 \x77\x6F |0 \x77\x70 |0 \x77\x71 |0 \x77\x72 |0 \x77\x73 |0 \x77\x74 |0 \x77\x75 |0 \x77\x76 |0 \x77\x77 |0 \x77\x78 |0 \x77\x79 |0 \x77\x7A |0 \x77\x7B |0 \x77\x7C |0 \x77\x7D |0 \x77\x7E |0 \x77\x7F |0 \x77\x80 |0 \x77\x81 |0 \x77\x82 |0 \x77\x83 |0 \x77\x84 |0 \x77\x85 |0 \x77\x86 |0 \x77\x87 |0 \x77\x88 |0 \x77\x89 |0 \x77\x8A |0 \x77\x8B |0 \x77\x8C |0 \x77\x8D |0 \x77\x8E |0 \x77\x8F |0 \x77\x90 |0 \x77\x91 |0 \x77\x92 |0 \x77\x93 |0 \x77\x94 |0 \x77\x95 |0 \x77\x96 |0 \x77\x97 |0 \x77\x98 |0 \x77\x99 |0 \x77\x9A |0 \x77\x9B |0 \x77\x9C |0 \x77\x9D |0 \x77\x9E |0 \x77\x9F |0 \x77\xA0 |0 \x77\xA1 |0 \x77\xA2 |0 \x77\xA3 |0 \x77\xA4 |0 \x77\xA5 |0 \x77\xA6 |0 \x77\xA7 |0 \x77\xA8 |0 \x77\xA9 |0 \x77\xAA |0 \x77\xAB |0 \x77\xAC |0 \x77\xAD |0 \x77\xAE |0 \x77\xAF |0 \x77\xB0 |0 \x77\xB1 |0 \x77\xB2 |0 \x77\xB3 |0 \x77\xB4 |0 \x77\xB5 |0 \x77\xB6 |0 \x77\xB7 |0 \x77\xB8 |0 \x77\xB9 |0 \x77\xBA |0 \x77\xBB |0 \x77\xBC |0 \x77\xBD |0 \x77\xBE |0 \x77\xBF |0 \x77\xC0 |0 \x77\xC1 |0 \x77\xC2 |0 \x77\xC3 |0 \x77\xC4 |0 \x77\xC5 |0 \x77\xC6 |0 \x77\xC7 |0 \x77\xC8 |0 \x77\xC9 |0 \x77\xCA |0 \x77\xCB |0 \x77\xCC |0 \x77\xCD |0 \x77\xCE |0 \x77\xCF |0 \x77\xD0 |0 \x77\xD1 |0 \x77\xD2 |0 \x77\xD3 |0 \x77\xD4 |0 \x77\xD5 |0 \x77\xD6 |0 \x77\xD7 |0 \x77\xD8 |0 \x77\xD9 |0 \x77\xDA |0 \x77\xDB |0 \x77\xDC |0 \x77\xDD |0 \x77\xDE |0 \x77\xDF |0 \x77\xE0 |0 \x77\xE1 |0 \x77\xE2 |0 \x77\xE3 |0 \x77\xE4 |0 \x77\xE5 |0 \x77\xE6 |0 \x77\xE7 |0 \x77\xE8 |0 \x77\xE9 |0 \x77\xEA |0 \x77\xEB |0 \x77\xEC |0 \x77\xED |0 \x77\xEE |0 \x77\xEF |0 \x77\xF0 |0 \x77\xF1 |0 \x77\xF2 |0 \x77\xF3 |0 \x77\xF4 |0 \x77\xF5 |0 \x77\xF6 |0 \x77\xF7 |0 \x77\xF8 |0 \x77\xF9 |0 \x77\xFA |0 \x77\xFB |0 \x77\xFC |0 \x77\xFD |0 \x77\xFE |0 \x78\x41 |0 \x78\x42 |0 \x78\x43 |0 \x78\x44 |0 \x78\x45 |0 \x78\x46 |0 \x78\x47 |0 \x78\x48 |0 \x78\x49 |0 \x78\x4A |0 \x78\x4B |0 \x78\x4C |0 \x78\x4D |0 \x78\x4E |0 \x78\x4F |0 \x78\x50 |0 \x78\x51 |0 \x78\x52 |0 \x78\x53 |0 \x78\x54 |0 \x78\x55 |0 \x78\x56 |0 \x78\x57 |0 \x78\x58 |0 \x78\x59 |0 \x78\x5A |0 \x78\x5B |0 \x78\x5C |0 \x78\x5D |0 \x78\x5E |0 \x78\x5F |0 \x78\x60 |0 \x78\x61 |0 \x78\x62 |0 \x78\x63 |0 \x78\x64 |0 \x78\x65 |0 \x78\x66 |0 \x78\x67 |0 \x78\x68 |0 \x78\x69 |0 \x78\x6A |0 \x78\x6B |0 \x78\x6C |0 \x78\x6D |0 \x78\x6E |0 \x78\x6F |0 \x78\x70 |0 \x78\x71 |0 \x78\x72 |0 \x78\x73 |0 \x78\x74 |0 \x78\x75 |0 \x78\x76 |0 \x78\x77 |0 \x78\x78 |0 \x78\x79 |0 \x78\x7A |0 \x78\x7B |0 \x78\x7C |0 \x78\x7D |0 \x78\x7E |0 \x78\x7F |0 \x78\x80 |0 \x78\x81 |0 \x78\x82 |0 \x78\x83 |0 \x78\x84 |0 \x78\x85 |0 \x78\x86 |0 \x78\x87 |0 \x78\x88 |0 \x78\x89 |0 \x78\x8A |0 \x78\x8B |0 \x78\x8C |0 \x78\x8D |0 \x78\x8E |0 \x78\x8F |0 \x78\x90 |0 \x78\x91 |0 \x78\x92 |0 \x78\x93 |0 \x78\x94 |0 \x78\x95 |0 \x78\x96 |0 \x78\x97 |0 \x78\x98 |0 \x78\x99 |0 \x78\x9A |0 \x78\x9B |0 \x78\x9C |0 \x78\x9D |0 \x78\x9E |0 \x78\x9F |0 \x78\xA0 |0 \x78\xA1 |0 \x78\xA2 |0 \x78\xA3 |0 \x78\xA4 |0 \x78\xA5 |0 \x78\xA6 |0 \x78\xA7 |0 \x78\xA8 |0 \x78\xA9 |0 \x78\xAA |0 \x78\xAB |0 \x78\xAC |0 \x78\xAD |0 \x78\xAE |0 \x78\xAF |0 \x78\xB0 |0 \x78\xB1 |0 \x78\xB2 |0 \x78\xB3 |0 \x78\xB4 |0 \x78\xB5 |0 \x78\xB6 |0 \x78\xB7 |0 \x78\xB8 |0 \x78\xB9 |0 \x78\xBA |0 \x78\xBB |0 \x78\xBC |0 \x78\xBD |0 \x78\xBE |0 \x78\xBF |0 \x78\xC0 |0 \x78\xC1 |0 \x78\xC2 |0 \x78\xC3 |0 \x78\xC4 |0 \x78\xC5 |0 \x78\xC6 |0 \x78\xC7 |0 \x78\xC8 |0 \x78\xC9 |0 \x78\xCA |0 \x78\xCB |0 \x78\xCC |0 \x78\xCD |0 \x78\xCE |0 \x78\xCF |0 \x78\xD0 |0 \x78\xD1 |0 \x78\xD2 |0 \x78\xD3 |0 \x78\xD4 |0 \x78\xD5 |0 \x78\xD6 |0 \x78\xD7 |0 \x78\xD8 |0 \x78\xD9 |0 \x78\xDA |0 \x78\xDB |0 \x78\xDC |0 \x78\xDD |0 \x78\xDE |0 \x78\xDF |0 \x78\xE0 |0 \x78\xE1 |0 \x78\xE2 |0 \x78\xE3 |0 \x78\xE4 |0 \x78\xE5 |0 \x78\xE6 |0 \x78\xE7 |0 \x78\xE8 |0 \x78\xE9 |0 \x78\xEA |0 \x78\xEB |0 \x78\xEC |0 \x78\xED |0 \x78\xEE |0 \x78\xEF |0 \x78\xF0 |0 \x78\xF1 |0 \x78\xF2 |0 \x78\xF3 |0 \x78\xF4 |0 \x78\xF5 |0 \x78\xF6 |0 \x78\xF7 |0 \x78\xF8 |0 \x78\xF9 |0 \x78\xFA |0 \x78\xFB |0 \x78\xFC |0 \x78\xFD |0 \x78\xFE |0 \x79\x41 |0 \x79\x42 |0 \x79\x43 |0 \x79\x44 |0 \x79\x45 |0 \x79\x46 |0 \x79\x47 |0 \x79\x48 |0 \x79\x49 |0 \x79\x4A |0 \x79\x4B |0 \x79\x4C |0 \x79\x4D |0 \x79\x4E |0 \x79\x4F |0 \x79\x50 |0 \x79\x51 |0 \x79\x52 |0 \x79\x53 |0 \x79\x54 |0 \x79\x55 |0 \x79\x56 |0 \x79\x57 |0 \x79\x58 |0 \x79\x59 |0 \x79\x5A |0 \x79\x5B |0 \x79\x5C |0 \x79\x5D |0 \x79\x5E |0 \x79\x5F |0 \x79\x60 |0 \x79\x61 |0 \x79\x62 |0 \x79\x63 |0 \x79\x64 |0 \x79\x65 |0 \x79\x66 |0 \x79\x67 |0 \x79\x68 |0 \x79\x69 |0 \x79\x6A |0 \x79\x6B |0 \x79\x6C |0 \x79\x6D |0 \x79\x6E |0 \x79\x6F |0 \x79\x70 |0 \x79\x71 |0 \x79\x72 |0 \x79\x73 |0 \x79\x74 |0 \x79\x75 |0 \x79\x76 |0 \x79\x77 |0 \x79\x78 |0 \x79\x79 |0 \x79\x7A |0 \x79\x7B |0 \x79\x7C |0 \x79\x7D |0 \x79\x7E |0 \x79\x7F |0 \x79\x80 |0 \x79\x81 |0 \x79\x82 |0 \x79\x83 |0 \x79\x84 |0 \x79\x85 |0 \x79\x86 |0 \x79\x87 |0 \x79\x88 |0 \x79\x89 |0 \x79\x8A |0 \x79\x8B |0 \x79\x8C |0 \x79\x8D |0 \x79\x8E |0 \x79\x8F |0 \x79\x90 |0 \x79\x91 |0 \x79\x92 |0 \x79\x93 |0 \x79\x94 |0 \x79\x95 |0 \x79\x96 |0 \x79\x97 |0 \x79\x98 |0 \x79\x99 |0 \x79\x9A |0 \x79\x9B |0 \x79\x9C |0 \x79\x9D |0 \x79\x9E |0 \x79\x9F |0 \x79\xA0 |0 \x79\xA1 |0 \x79\xA2 |0 \x79\xA3 |0 \x79\xA4 |0 \x79\xA5 |0 \x79\xA6 |0 \x79\xA7 |0 \x79\xA8 |0 \x79\xA9 |0 \x79\xAA |0 \x79\xAB |0 \x79\xAC |0 \x79\xAD |0 \x79\xAE |0 \x79\xAF |0 \x79\xB0 |0 \x79\xB1 |0 \x79\xB2 |0 \x79\xB3 |0 \x79\xB4 |0 \x79\xB5 |0 \x79\xB6 |0 \x79\xB7 |0 \x79\xB8 |0 \x79\xB9 |0 \x79\xBA |0 \x79\xBB |0 \x79\xBC |0 \x79\xBD |0 \x79\xBE |0 \x79\xBF |0 \x79\xC0 |0 \x79\xC1 |0 \x79\xC2 |0 \x79\xC3 |0 \x79\xC4 |0 \x79\xC5 |0 \x79\xC6 |0 \x79\xC7 |0 \x79\xC8 |0 \x79\xC9 |0 \x79\xCA |0 \x79\xCB |0 \x79\xCC |0 \x79\xCD |0 \x79\xCE |0 \x79\xCF |0 \x79\xD0 |0 \x79\xD1 |0 \x79\xD2 |0 \x79\xD3 |0 \x79\xD4 |0 \x79\xD5 |0 \x79\xD6 |0 \x79\xD7 |0 \x79\xD8 |0 \x79\xD9 |0 \x79\xDA |0 \x79\xDB |0 \x79\xDC |0 \x79\xDD |0 \x79\xDE |0 \x79\xDF |0 \x79\xE0 |0 \x79\xE1 |0 \x79\xE2 |0 \x79\xE3 |0 \x79\xE4 |0 \x79\xE5 |0 \x79\xE6 |0 \x79\xE7 |0 \x79\xE8 |0 \x79\xE9 |0 \x79\xEA |0 \x79\xEB |0 \x79\xEC |0 \x79\xED |0 \x79\xEE |0 \x79\xEF |0 \x79\xF0 |0 \x79\xF1 |0 \x79\xF2 |0 \x79\xF3 |0 \x79\xF4 |0 \x79\xF5 |0 \x79\xF6 |0 \x79\xF7 |0 \x79\xF8 |0 \x79\xF9 |0 \x79\xFA |0 \x79\xFB |0 \x79\xFC |0 \x79\xFD |0 \x79\xFE |0 \x7A\x41 |0 \x7A\x42 |0 \x7A\x43 |0 \x7A\x44 |0 \x7A\x45 |0 \x7A\x46 |0 \x7A\x47 |0 \x7A\x48 |0 \x7A\x49 |0 \x7A\x4A |0 \x7A\x4B |0 \x7A\x4C |0 \x7A\x4D |0 \x7A\x4E |0 \x7A\x4F |0 \x7A\x50 |0 \x7A\x51 |0 \x7A\x52 |0 \x7A\x53 |0 \x7A\x54 |0 \x7A\x55 |0 \x7A\x56 |0 \x7A\x57 |0 \x7A\x58 |0 \x7A\x59 |0 \x7A\x5A |0 \x7A\x5B |0 \x7A\x5C |0 \x7A\x5D |0 \x7A\x5E |0 \x7A\x5F |0 \x7A\x60 |0 \x7A\x61 |0 \x7A\x62 |0 \x7A\x63 |0 \x7A\x64 |0 \x7A\x65 |0 \x7A\x66 |0 \x7A\x67 |0 \x7A\x68 |0 \x7A\x69 |0 \x7A\x6A |0 \x7A\x6B |0 \x7A\x6C |0 \x7A\x6D |0 \x7A\x6E |0 \x7A\x6F |0 \x7A\x70 |0 \x7A\x71 |0 \x7A\x72 |0 \x7A\x73 |0 \x7A\x74 |0 \x7A\x75 |0 \x7A\x76 |0 \x7A\x77 |0 \x7A\x78 |0 \x7A\x79 |0 \x7A\x7A |0 \x7A\x7B |0 \x7A\x7C |0 \x7A\x7D |0 \x7A\x7E |0 \x7A\x7F |0 \x7A\x80 |0 \x7A\x81 |0 \x7A\x82 |0 \x7A\x83 |0 \x7A\x84 |0 \x7A\x85 |0 \x7A\x86 |0 \x7A\x87 |0 \x7A\x88 |0 \x7A\x89 |0 \x7A\x8A |0 \x7A\x8B |0 \x7A\x8C |0 \x7A\x8D |0 \x7A\x8E |0 \x7A\x8F |0 \x7A\x90 |0 \x7A\x91 |0 \x7A\x92 |0 \x7A\x93 |0 \x7A\x94 |0 \x7A\x95 |0 \x7A\x96 |0 \x7A\x97 |0 \x7A\x98 |0 \x7A\x99 |0 \x7A\x9A |0 \x7A\x9B |0 \x7A\x9C |0 \x7A\x9D |0 \x7A\x9E |0 \x7A\x9F |0 \x7A\xA0 |0 \x7A\xA1 |0 \x7A\xA2 |0 \x7A\xA3 |0 \x7A\xA4 |0 \x7A\xA5 |0 \x7A\xA6 |0 \x7A\xA7 |0 \x7A\xA8 |0 \x7A\xA9 |0 \x7A\xAA |0 \x7A\xAB |0 \x7A\xAC |0 \x7A\xAD |0 \x7A\xAE |0 \x7A\xAF |0 \x7A\xB0 |0 \x7A\xB1 |0 \x7A\xB2 |0 \x7A\xB3 |0 \x7A\xB4 |0 \x7A\xB5 |0 \x7A\xB6 |0 \x7A\xB7 |0 \x7A\xB8 |0 \x7A\xB9 |0 \x7A\xBA |0 \x7A\xBB |0 \x7A\xBC |0 \x7A\xBD |0 \x7A\xBE |0 \x7A\xBF |0 \x7A\xC0 |0 \x7A\xC1 |0 \x7A\xC2 |0 \x7A\xC3 |0 \x7A\xC4 |0 \x7A\xC5 |0 \x7A\xC6 |0 \x7A\xC7 |0 \x7A\xC8 |0 \x7A\xC9 |0 \x7A\xCA |0 \x7A\xCB |0 \x7A\xCC |0 \x7A\xCD |0 \x7A\xCE |0 \x7A\xCF |0 \x7A\xD0 |0 \x7A\xD1 |0 \x7A\xD2 |0 \x7A\xD3 |0 \x7A\xD4 |0 \x7A\xD5 |0 \x7A\xD6 |0 \x7A\xD7 |0 \x7A\xD8 |0 \x7A\xD9 |0 \x7A\xDA |0 \x7A\xDB |0 \x7A\xDC |0 \x7A\xDD |0 \x7A\xDE |0 \x7A\xDF |0 \x7A\xE0 |0 \x7A\xE1 |0 \x7A\xE2 |0 \x7A\xE3 |0 \x7A\xE4 |0 \x7A\xE5 |0 \x7A\xE6 |0 \x7A\xE7 |0 \x7A\xE8 |0 \x7A\xE9 |0 \x7A\xEA |0 \x7A\xEB |0 \x7A\xEC |0 \x7A\xED |0 \x7A\xEE |0 \x7A\xEF |0 \x7A\xF0 |0 \x7A\xF1 |0 \x7A\xF2 |0 \x7A\xF3 |0 \x7A\xF4 |0 \x7A\xF5 |0 \x7A\xF6 |0 \x7A\xF7 |0 \x7A\xF8 |0 \x7A\xF9 |0 \x7A\xFA |0 \x7A\xFB |0 \x7A\xFC |0 \x7A\xFD |0 \x7A\xFE |0 \x7B\x41 |0 \x7B\x42 |0 \x7B\x43 |0 \x7B\x44 |0 \x7B\x45 |0 \x7B\x46 |0 \x7B\x47 |0 \x7B\x48 |0 \x7B\x49 |0 \x7B\x4A |0 \x7B\x4B |0 \x7B\x4C |0 \x7B\x4D |0 \x7B\x4E |0 \x7B\x4F |0 \x7B\x50 |0 \x7B\x51 |0 \x7B\x52 |0 \x7B\x53 |0 \x7B\x54 |0 \x7B\x55 |0 \x7B\x56 |0 \x7B\x57 |0 \x7B\x58 |0 \x7B\x59 |0 \x7B\x5A |0 \x7B\x5B |0 \x7B\x5C |0 \x7B\x5D |0 \x7B\x5E |0 \x7B\x5F |0 \x7B\x60 |0 \x7B\x61 |0 \x7B\x62 |0 \x7B\x63 |0 \x7B\x64 |0 \x7B\x65 |0 \x7B\x66 |0 \x7B\x67 |0 \x7B\x68 |0 \x7B\x69 |0 \x7B\x6A |0 \x7B\x6B |0 \x7B\x6C |0 \x7B\x6D |0 \x7B\x6E |0 \x7B\x6F |0 \x7B\x70 |0 \x7B\x71 |0 \x7B\x72 |0 \x7B\x73 |0 \x7B\x74 |0 \x7B\x75 |0 \x7B\x76 |0 \x7B\x77 |0 \x7B\x78 |0 \x7B\x79 |0 \x7B\x7A |0 \x7B\x7B |0 \x7B\x7C |0 \x7B\x7D |0 \x7B\x7E |0 \x7B\x7F |0 \x7B\x80 |0 \x7B\x81 |0 \x7B\x82 |0 \x7B\x83 |0 \x7B\x84 |0 \x7B\x85 |0 \x7B\x86 |0 \x7B\x87 |0 \x7B\x88 |0 \x7B\x89 |0 \x7B\x8A |0 \x7B\x8B |0 \x7B\x8C |0 \x7B\x8D |0 \x7B\x8E |0 \x7B\x8F |0 \x7B\x90 |0 \x7B\x91 |0 \x7B\x92 |0 \x7B\x93 |0 \x7B\x94 |0 \x7B\x95 |0 \x7B\x96 |0 \x7B\x97 |0 \x7B\x98 |0 \x7B\x99 |0 \x7B\x9A |0 \x7B\x9B |0 \x7B\x9C |0 \x7B\x9D |0 \x7B\x9E |0 \x7B\x9F |0 \x7B\xA0 |0 \x7B\xA1 |0 \x7B\xA2 |0 \x7B\xA3 |0 \x7B\xA4 |0 \x7B\xA5 |0 \x7B\xA6 |0 \x7B\xA7 |0 \x7B\xA8 |0 \x7B\xA9 |0 \x7B\xAA |0 \x7B\xAB |0 \x7B\xAC |0 \x7B\xAD |0 \x7B\xAE |0 \x7B\xAF |0 \x7B\xB0 |0 \x7B\xB1 |0 \x7B\xB2 |0 \x7B\xB3 |0 \x7B\xB4 |0 \x7B\xB5 |0 \x7B\xB6 |0 \x7B\xB7 |0 \x7B\xB8 |0 \x7B\xB9 |0 \x7B\xBA |0 \x7B\xBB |0 \x7B\xBC |0 \x7B\xBD |0 \x7B\xBE |0 \x7B\xBF |0 \x7B\xC0 |0 \x7B\xC1 |0 \x7B\xC2 |0 \x7B\xC3 |0 \x7B\xC4 |0 \x7B\xC5 |0 \x7B\xC6 |0 \x7B\xC7 |0 \x7B\xC8 |0 \x7B\xC9 |0 \x7B\xCA |0 \x7B\xCB |0 \x7B\xCC |0 \x7B\xCD |0 \x7B\xCE |0 \x7B\xCF |0 \x7B\xD0 |0 \x7B\xD1 |0 \x7B\xD2 |0 \x7B\xD3 |0 \x7B\xD4 |0 \x7B\xD5 |0 \x7B\xD6 |0 \x7B\xD7 |0 \x7B\xD8 |0 \x7B\xD9 |0 \x7B\xDA |0 \x7B\xDB |0 \x7B\xDC |0 \x7B\xDD |0 \x7B\xDE |0 \x7B\xDF |0 \x7B\xE0 |0 \x7B\xE1 |0 \x7B\xE2 |0 \x7B\xE3 |0 \x7B\xE4 |0 \x7B\xE5 |0 \x7B\xE6 |0 \x7B\xE7 |0 \x7B\xE8 |0 \x7B\xE9 |0 \x7B\xEA |0 \x7B\xEB |0 \x7B\xEC |0 \x7B\xED |0 \x7B\xEE |0 \x7B\xEF |0 \x7B\xF0 |0 \x7B\xF1 |0 \x7B\xF2 |0 \x7B\xF3 |0 \x7B\xF4 |0 \x7B\xF5 |0 \x7B\xF6 |0 \x7B\xF7 |0 \x7B\xF8 |0 \x7B\xF9 |0 \x7B\xFA |0 \x7B\xFB |0 \x7B\xFC |0 \x7B\xFD |0 \x7B\xFE |0 \x7C\x41 |0 \x7C\x42 |0 \x7C\x43 |0 \x7C\x44 |0 \x7C\x45 |0 \x7C\x46 |0 \x7C\x47 |0 \x7C\x48 |0 \x7C\x49 |0 \x7C\x4A |0 \x7C\x4B |0 \x7C\x4C |0 \x7C\x4D |0 \x7C\x4E |0 \x7C\x4F |0 \x7C\x50 |0 \x7C\x51 |0 \x7C\x52 |0 \x7C\x53 |0 \x7C\x54 |0 \x7C\x55 |0 \x7C\x56 |0 \x7C\x57 |0 \x7C\x58 |0 \x7C\x59 |0 \x7C\x5A |0 \x7C\x5B |0 \x7C\x5C |0 \x7C\x5D |0 \x7C\x5E |0 \x7C\x5F |0 \x7C\x60 |0 \x7C\x61 |0 \x7C\x62 |0 \x7C\x63 |0 \x7C\x64 |0 \x7C\x65 |0 \x7C\x66 |0 \x7C\x67 |0 \x7C\x68 |0 \x7C\x69 |0 \x7C\x6A |0 \x7C\x6B |0 \x7C\x6C |0 \x7C\x6D |0 \x7C\x6E |0 \x7C\x6F |0 \x7C\x70 |0 \x7C\x71 |0 \x7C\x72 |0 \x7C\x73 |0 \x7C\x74 |0 \x7C\x75 |0 \x7C\x76 |0 \x7C\x77 |0 \x7C\x78 |0 \x7C\x79 |0 \x7C\x7A |0 \x7C\x7B |0 \x7C\x7C |0 \x7C\x7D |0 \x7C\x7E |0 \x7C\x7F |0 \x7C\x80 |0 \x7C\x81 |0 \x7C\x82 |0 \x7C\x83 |0 \x7C\x84 |0 \x7C\x85 |0 \x7C\x86 |0 \x7C\x87 |0 \x7C\x88 |0 \x7C\x89 |0 \x7C\x8A |0 \x7C\x8B |0 \x7C\x8C |0 \x7C\x8D |0 \x7C\x8E |0 \x7C\x8F |0 \x7C\x90 |0 \x7C\x91 |0 \x7C\x92 |0 \x7C\x93 |0 \x7C\x94 |0 \x7C\x95 |0 \x7C\x96 |0 \x7C\x97 |0 \x7C\x98 |0 \x7C\x99 |0 \x7C\x9A |0 \x7C\x9B |0 \x7C\x9C |0 \x7C\x9D |0 \x7C\x9E |0 \x7C\x9F |0 \x7C\xA0 |0 \x7C\xA1 |0 \x7C\xA2 |0 \x7C\xA3 |0 \x7C\xA4 |0 \x7C\xA5 |0 \x7C\xA6 |0 \x7C\xA7 |0 \x7C\xA8 |0 \x7C\xA9 |0 \x7C\xAA |0 \x7C\xAB |0 \x7C\xAC |0 \x7C\xAD |0 \x7C\xAE |0 \x7C\xAF |0 \x7C\xB0 |0 \x7C\xB1 |0 \x7C\xB2 |0 \x7C\xB3 |0 \x7C\xB4 |0 \x7C\xB5 |0 \x7C\xB6 |0 \x7C\xB7 |0 \x7C\xB8 |0 \x7C\xB9 |0 \x7C\xBA |0 \x7C\xBB |0 \x7C\xBC |0 \x7C\xBD |0 \x7C\xBE |0 \x7C\xBF |0 \x7C\xC0 |0 \x7C\xC1 |0 \x7C\xC2 |0 \x7C\xC3 |0 \x7C\xC4 |0 \x7C\xC5 |0 \x7C\xC6 |0 \x7C\xC7 |0 \x7C\xC8 |0 \x7C\xC9 |0 \x7C\xCA |0 \x7C\xCB |0 \x7C\xCC |0 \x7C\xCD |0 \x7C\xCE |0 \x7C\xCF |0 \x7C\xD0 |0 \x7C\xD1 |0 \x7C\xD2 |0 \x7C\xD3 |0 \x7C\xD4 |0 \x7C\xD5 |0 \x7C\xD6 |0 \x7C\xD7 |0 \x7C\xD8 |0 \x7C\xD9 |0 \x7C\xDA |0 \x7C\xDB |0 \x7C\xDC |0 \x7C\xDD |0 \x7C\xDE |0 \x7C\xDF |0 \x7C\xE0 |0 \x7C\xE1 |0 \x7C\xE2 |0 \x7C\xE3 |0 \x7C\xE4 |0 \x7C\xE5 |0 \x7C\xE6 |0 \x7C\xE7 |0 \x7C\xE8 |0 \x7C\xE9 |0 \x7C\xEA |0 \x7C\xEB |0 \x7C\xEC |0 \x7C\xED |0 \x7C\xEE |0 \x7C\xEF |0 \x7C\xF0 |0 \x7C\xF1 |0 \x7C\xF2 |0 \x7C\xF3 |0 \x7C\xF4 |0 \x7C\xF5 |0 \x7C\xF6 |0 \x7C\xF7 |0 \x7C\xF8 |0 \x7C\xF9 |0 \x7C\xFA |0 \x7C\xFB |0 \x7C\xFC |0 \x7C\xFD |0 \x7C\xFE |0 \x7D\x41 |0 \x7D\x42 |0 \x7D\x43 |0 \x7D\x44 |0 \x7D\x45 |0 \x7D\x46 |0 \x7D\x47 |0 \x7D\x48 |0 \x7D\x49 |0 \x7D\x4A |0 \x7D\x4B |0 \x7D\x4C |0 \x7D\x4D |0 \x7D\x4E |0 \x7D\x4F |0 \x7D\x50 |0 \x7D\x51 |0 \x7D\x52 |0 \x7D\x53 |0 \x7D\x54 |0 \x7D\x55 |0 \x7D\x56 |0 \x7D\x57 |0 \x7D\x58 |0 \x7D\x59 |0 \x7D\x5A |0 \x7D\x5B |0 \x7D\x5C |0 \x7D\x5D |0 \x7D\x5E |0 \x7D\x5F |0 \x7D\x60 |0 \x7D\x61 |0 \x7D\x62 |0 \x7D\x63 |0 \x7D\x64 |0 \x7D\x65 |0 \x7D\x66 |0 \x7D\x67 |0 \x7D\x68 |0 \x7D\x69 |0 \x7D\x6A |0 \x7D\x6B |0 \x7D\x6C |0 \x7D\x6D |0 \x7D\x6E |0 \x7D\x6F |0 \x7D\x70 |0 \x7D\x71 |0 \x7D\x72 |0 \x7D\x73 |0 \x7D\x74 |0 \x7D\x75 |0 \x7D\x76 |0 \x7D\x77 |0 \x7D\x78 |0 \x7D\x79 |0 \x7D\x7A |0 \x7D\x7B |0 \x7D\x7C |0 \x7D\x7D |0 \x7D\x7E |0 \x7D\x7F |0 \x7D\x80 |0 \x7D\x81 |0 \x7D\x82 |0 \x7D\x83 |0 \x7D\x84 |0 \x7D\x85 |0 \x7D\x86 |0 \x7D\x87 |0 \x7D\x88 |0 \x7D\x89 |0 \x7D\x8A |0 \x7D\x8B |0 \x7D\x8C |0 \x7D\x8D |0 \x7D\x8E |0 \x7D\x8F |0 \x7D\x90 |0 \x7D\x91 |0 \x7D\x92 |0 \x7D\x93 |0 \x7D\x94 |0 \x7D\x95 |0 \x7D\x96 |0 \x7D\x97 |0 \x7D\x98 |0 \x7D\x99 |0 \x7D\x9A |0 \x7D\x9B |0 \x7D\x9C |0 \x7D\x9D |0 \x7D\x9E |0 \x7D\x9F |0 \x7D\xA0 |0 \x7D\xA1 |0 \x7D\xA2 |0 \x7D\xA3 |0 \x7D\xA4 |0 \x7D\xA5 |0 \x7D\xA6 |0 \x7D\xA7 |0 \x7D\xA8 |0 \x7D\xA9 |0 \x7D\xAA |0 \x7D\xAB |0 \x7D\xAC |0 \x7D\xAD |0 \x7D\xAE |0 \x7D\xAF |0 \x7D\xB0 |0 \x7D\xB1 |0 \x7D\xB2 |0 \x7D\xB3 |0 \x7D\xB4 |0 \x7D\xB5 |0 \x7D\xB6 |0 \x7D\xB7 |0 \x7D\xB8 |0 \x7D\xB9 |0 \x7D\xBA |0 \x7D\xBB |0 \x7D\xBC |0 \x7D\xBD |0 \x7D\xBE |0 \x7D\xBF |0 \x7D\xC0 |0 \x7D\xC1 |0 \x7D\xC2 |0 \x7D\xC3 |0 \x7D\xC4 |0 \x7D\xC5 |0 \x7D\xC6 |0 \x7D\xC7 |0 \x7D\xC8 |0 \x7D\xC9 |0 \x7D\xCA |0 \x7D\xCB |0 \x7D\xCC |0 \x7D\xCD |0 \x7D\xCE |0 \x7D\xCF |0 \x7D\xD0 |0 \x7D\xD1 |0 \x7D\xD2 |0 \x7D\xD3 |0 \x7D\xD4 |0 \x7D\xD5 |0 \x7D\xD6 |0 \x7D\xD7 |0 \x7D\xD8 |0 \x7D\xD9 |0 \x7D\xDA |0 \x7D\xDB |0 \x7D\xDC |0 \x7D\xDD |0 \x7D\xDE |0 \x7D\xDF |0 \x7D\xE0 |0 \x7D\xE1 |0 \x7D\xE2 |0 \x7D\xE3 |0 \x7D\xE4 |0 \x7D\xE5 |0 \x7D\xE6 |0 \x7D\xE7 |0 \x7D\xE8 |0 \x7D\xE9 |0 \x7D\xEA |0 \x7D\xEB |0 \x7D\xEC |0 \x7D\xED |0 \x7D\xEE |0 \x7D\xEF |0 \x7D\xF0 |0 \x7D\xF1 |0 \x7D\xF2 |0 \x7D\xF3 |0 \x7D\xF4 |0 \x7D\xF5 |0 \x7D\xF6 |0 \x7D\xF7 |0 \x7D\xF8 |0 \x7D\xF9 |0 \x7D\xFA |0 \x7D\xFB |0 \x7D\xFC |0 \x7D\xFD |0 \x7D\xFE |0 \x7E\x41 |0 \x7E\x42 |0 \x7E\x43 |0 \x7E\x44 |0 \x7E\x45 |0 \x7E\x46 |0 \x7E\x47 |0 \x7E\x48 |0 \x7E\x49 |0 \x7E\x4A |0 \x7E\x4B |0 \x7E\x4C |0 \x7E\x4D |0 \x7E\x4E |0 \x7E\x4F |0 \x7E\x50 |0 \x7E\x51 |0 \x7E\x52 |0 \x7E\x53 |0 \x7E\x54 |0 \x7E\x55 |0 \x7E\x56 |0 \x7E\x57 |0 \x7E\x58 |0 \x7E\x59 |0 \x7E\x5A |0 \x7E\x5B |0 \x7E\x5C |0 \x7E\x5D |0 \x7E\x5E |0 \x7E\x5F |0 \x7E\x60 |0 \x7E\x61 |0 \x7E\x62 |0 \x7E\x63 |0 \x7E\x64 |0 \x7E\x65 |0 \x7E\x66 |0 \x7E\x67 |0 \x7E\x68 |0 \x7E\x69 |0 \x7E\x6A |0 \x7E\x6B |0 \x7E\x6C |0 \x7E\x6D |0 \x7E\x6E |0 \x7E\x6F |0 \x7E\x70 |0 \x7E\x71 |0 \x7E\x72 |0 \x7E\x73 |0 \x7E\x74 |0 \x7E\x75 |0 \x7E\x76 |0 \x7E\x77 |0 \x7E\x78 |0 \x7E\x79 |0 \x7E\x7A |0 \x7E\x7B |0 \x7E\x7C |0 \x7E\x7D |0 \x7E\x7E |0 \x7E\x7F |0 \x7E\x80 |0 \x7E\x81 |0 \x7E\x82 |0 \x7E\x83 |0 \x7E\x84 |0 \x7E\x85 |0 \x7E\x86 |0 \x7E\x87 |0 \x7E\x88 |0 \x7E\x89 |0 \x7E\x8A |0 \x7E\x8B |0 \x7E\x8C |0 \x7E\x8D |0 \x7E\x8E |0 \x7E\x8F |0 \x7E\x90 |0 \x7E\x91 |0 \x7E\x92 |0 \x7E\x93 |0 \x7E\x94 |0 \x7E\x95 |0 \x7E\x96 |0 \x7E\x97 |0 \x7E\x98 |0 \x7E\x99 |0 \x7E\x9A |0 \x7E\x9B |0 \x7E\x9C |0 \x7E\x9D |0 \x7E\x9E |0 \x7E\x9F |0 \x7E\xA0 |0 \x7E\xA1 |0 \x7E\xA2 |0 \x7E\xA3 |0 \x7E\xA4 |0 \x7E\xA5 |0 \x7E\xA6 |0 \x7E\xA7 |0 \x7E\xA8 |0 \x7E\xA9 |0 \x7E\xAA |0 \x7E\xAB |0 \x7E\xAC |0 \x7E\xAD |0 \x7E\xAE |0 \x7E\xAF |0 \x7E\xB0 |0 \x7E\xB1 |0 \x7E\xB2 |0 \x7E\xB3 |0 \x7E\xB4 |0 \x7E\xB5 |0 \x7E\xB6 |0 \x7E\xB7 |0 \x7E\xB8 |0 \x7E\xB9 |0 \x7E\xBA |0 \x7E\xBB |0 \x7E\xBC |0 \x7E\xBD |0 \x7E\xBE |0 \x7E\xBF |0 \x7E\xC0 |0 \x7E\xC1 |0 \x7E\xC2 |0 \x7E\xC3 |0 \x7E\xC4 |0 \x7E\xC5 |0 \x7E\xC6 |0 \x7E\xC7 |0 \x7E\xC8 |0 \x7E\xC9 |0 \x7E\xCA |0 \x7E\xCB |0 \x7E\xCC |0 \x7E\xCD |0 \x7E\xCE |0 \x7E\xCF |0 \x7E\xD0 |0 \x7E\xD1 |0 \x7E\xD2 |0 \x7E\xD3 |0 \x7E\xD4 |0 \x7E\xD5 |0 \x7E\xD6 |0 \x7E\xD7 |0 \x7E\xD8 |0 \x7E\xD9 |0 \x7E\xDA |0 \x7E\xDB |0 \x7E\xDC |0 \x7E\xDD |0 \x7E\xDE |0 \x7E\xDF |0 \x7E\xE0 |0 \x7E\xE1 |0 \x7E\xE2 |0 \x7E\xE3 |0 \x7E\xE4 |0 \x7E\xE5 |0 \x7E\xE6 |0 \x7E\xE7 |0 \x7E\xE8 |0 \x7E\xE9 |0 \x7E\xEA |0 \x7E\xEB |0 \x7E\xEC |0 \x7E\xED |0 \x7E\xEE |0 \x7E\xEF |0 \x7E\xF0 |0 \x7E\xF1 |0 \x7E\xF2 |0 \x7E\xF3 |0 \x7E\xF4 |0 \x7E\xF5 |0 \x7E\xF6 |0 \x7E\xF7 |0 \x7E\xF8 |0 \x7E\xF9 |0 \x7E\xFA |0 \x7E\xFB |0 \x7E\xFC |0 \x7E\xFD |0 \x7E\xFE |0 \x7F\x41 |0 \x7F\x42 |0 \x7F\x43 |0 \x7F\x44 |0 \x7F\x45 |0 \x7F\x46 |0 \x7F\x47 |0 \x7F\x48 |0 \x7F\x49 |0 \x7F\x4A |0 \x7F\x4B |0 \x7F\x4C |0 \x7F\x4D |0 \x7F\x4E |0 \x7F\x4F |0 \x7F\x50 |0 \x7F\x51 |0 \x7F\x52 |0 \x7F\x53 |0 \x7F\x54 |0 \x7F\x55 |0 \x7F\x56 |0 \x7F\x57 |0 \x7F\x58 |0 \x7F\x59 |0 \x7F\x5A |0 \x7F\x5B |0 \x7F\x5C |0 \x7F\x5D |0 \x7F\x5E |0 \x7F\x5F |0 \x7F\x60 |0 \x7F\x61 |0 \x7F\x62 |0 \x7F\x63 |0 \x7F\x64 |0 \x7F\x65 |0 \x7F\x66 |0 \x7F\x67 |0 \x7F\x68 |0 \x7F\x69 |0 \x7F\x6A |0 \x7F\x6B |0 \x7F\x6C |0 \x7F\x6D |0 \x7F\x6E |0 \x7F\x6F |0 \x7F\x70 |0 \x7F\x71 |0 \x7F\x72 |0 \x7F\x73 |0 \x7F\x74 |0 \x7F\x75 |0 \x7F\x76 |0 \x7F\x77 |0 \x7F\x78 |0 \x7F\x79 |0 \x7F\x7A |0 \x7F\x7B |0 \x7F\x7C |0 \x7F\x7D |0 \x7F\x7E |0 \x7F\x7F |0 \x7F\x80 |0 \x7F\x81 |0 \x7F\x82 |0 \x7F\x83 |0 \x7F\x84 |0 \x7F\x85 |0 \x7F\x86 |0 \x7F\x87 |0 \x7F\x88 |0 \x7F\x89 |0 \x7F\x8A |0 \x7F\x8B |0 \x7F\x8C |0 \x7F\x8D |0 \x7F\x8E |0 \x7F\x8F |0 \x7F\x90 |0 \x7F\x91 |0 \x7F\x92 |0 \x7F\x93 |0 \x7F\x94 |0 \x7F\x95 |0 \x7F\x96 |0 \x7F\x97 |0 \x7F\x98 |0 \x7F\x99 |0 \x7F\x9A |0 \x7F\x9B |0 \x7F\x9C |0 \x7F\x9D |0 \x7F\x9E |0 \x7F\x9F |0 \x7F\xA0 |0 \x7F\xA1 |0 \x7F\xA2 |0 \x7F\xA3 |0 \x7F\xA4 |0 \x7F\xA5 |0 \x7F\xA6 |0 \x7F\xA7 |0 \x7F\xA8 |0 \x7F\xA9 |0 \x7F\xAA |0 \x7F\xAB |0 \x7F\xAC |0 \x7F\xAD |0 \x7F\xAE |0 \x7F\xAF |0 \x7F\xB0 |0 \x7F\xB1 |0 \x7F\xB2 |0 \x7F\xB3 |0 \x7F\xB4 |0 \x7F\xB5 |0 \x7F\xB6 |0 \x7F\xB7 |0 \x7F\xB8 |0 \x7F\xB9 |0 \x7F\xBA |0 \x7F\xBB |0 \x7F\xBC |0 \x7F\xBD |0 \x7F\xBE |0 \x7F\xBF |0 \x7F\xC0 |0 \x7F\xC1 |0 \x7F\xC2 |0 \x7F\xC3 |0 \x7F\xC4 |0 \x7F\xC5 |0 \x7F\xC6 |0 \x7F\xC7 |0 \x7F\xC8 |0 \x7F\xC9 |0 \x7F\xCA |0 \x7F\xCB |0 \x7F\xCC |0 \x7F\xCD |0 \x7F\xCE |0 \x7F\xCF |0 \x7F\xD0 |0 \x7F\xD1 |0 \x7F\xD2 |0 \x7F\xD3 |0 \x7F\xD4 |0 \x7F\xD5 |0 \x7F\xD6 |0 \x7F\xD7 |0 \x7F\xD8 |0 \x7F\xD9 |0 \x7F\xDA |0 \x7F\xDB |0 \x7F\xDC |0 \x7F\xDD |0 \x7F\xDE |0 \x7F\xDF |0 \x7F\xE0 |0 \x7F\xE1 |0 \x7F\xE2 |0 \x7F\xE3 |0 \x7F\xE4 |0 \x7F\xE5 |0 \x7F\xE6 |0 \x7F\xE7 |0 \x7F\xE8 |0 \x7F\xE9 |0 \x7F\xEA |0 \x7F\xEB |0 \x7F\xEC |0 \x7F\xED |0 \x7F\xEE |0 \x7F\xEF |0 \x7F\xF0 |0 \x7F\xF1 |0 \x7F\xF2 |0 \x7F\xF3 |0 \x7F\xF4 |0 \x7F\xF5 |0 \x7F\xF6 |0 \x7F\xF7 |0 \x7F\xF8 |0 \x7F\xF9 |0 \x7F\xFA |0 \x7F\xFB |0 \x7F\xFC |0 \x7F\xFD |0 \x7F\xFE |0 \x44\x6E |1 \x5B\xC9 |0 \x66\x74 |0 \x57\x8E |0 \x58\x77 |0 \x58\x82 |0 \x59\x80 |0 \x5B\xAE |0 \x5C\x66 |0 \x5C\x78 |0 \x5E\x49 |0 \x5E\x8A |0 \x5F\x7A |0 \x5F\xD2 |0 \x5F\xD5 |0 \x5F\xD9 |0 \x5F\xDD |0 \x60\x59 |0 \x60\xAD |0 \x61\x77 |0 \x62\xB9 |0 \x62\xCE |0 \x62\xE2 |0 \x63\xEE |0 \x64\x8E |0 \x64\xF1 |0 \x65\x49 |0 \x65\x66 |0 \x65\xB8 |0 \x65\xC6 |0 \x66\x78 |0 \x66\xDD |0 \x66\xDF |0 \x66\xE6 |0 \x67\xF4 |0 \x42\x5A |0 \x42\x7F |0 \x42\x7B |0 \x42\xE0 |0 \x42\x6C |0 \x42\x50 |0 \x42\x7D |0 \x42\x4D |0 \x42\x5D |0 \x42\x5C |0 \x42\x4E |0 \x42\x6B |0 \x42\x4B |0 \x42\x61 |0 \x42\xF0 |0 \x42\xF1 |0 \x42\xF2 |0 \x42\xF3 |0 \x42\xF4 |0 \x42\xF5 |0 \x42\xF6 |0 \x42\xF7 |0 \x42\xF8 |0 \x42\xF9 |0 \x42\x7A |0 \x42\x5E |0 \x42\x4C |0 \x42\x7E |0 \x42\x6E |0 \x42\x6F |0 \x42\x7C |0 \x42\xC1 |0 \x42\xC2 |0 \x42\xC3 |0 \x42\xC4 |0 \x42\xC5 |0 \x42\xC6 |0 \x42\xC7 |0 \x42\xC8 |0 \x42\xC9 |0 \x42\xD1 |0 \x42\xD2 |0 \x42\xD3 |0 \x42\xD4 |0 \x42\xD5 |0 \x42\xD6 |0 \x42\xD7 |0 \x42\xD8 |0 \x42\xD9 |0 \x42\xE2 |0 \x42\xE3 |0 \x42\xE4 |0 \x42\xE5 |0 \x42\xE6 |0 \x42\xE7 |0 \x42\xE8 |0 \x42\xE9 |0 \x44\x44 |0 \x43\xE0 |0 \x44\x45 |0 \x44\x70 |0 \x42\x6D |0 \x42\x79 |0 \x42\x81 |0 \x42\x82 |0 \x42\x83 |0 \x42\x84 |0 \x42\x85 |0 \x42\x86 |0 \x42\x87 |0 \x42\x88 |0 \x42\x89 |0 \x42\x91 |0 \x42\x92 |0 \x42\x93 |0 \x42\x94 |0 \x42\x95 |0 \x42\x96 |0 \x42\x97 |0 \x42\x98 |0 \x42\x99 |0 \x42\xA2 |0 \x42\xA3 |0 \x42\xA4 |0 \x42\xA5 |0 \x42\xA6 |0 \x42\xA7 |0 \x42\xA8 |0 \x42\xA9 |0 \x42\xC0 |0 \x42\x4F |0 \x42\xD0 |0 \x43\x4A |0 \x42\x4A |0 \x42\x5F |0 \x42\xA1 |0 \x42\x5B |0 END CHARMAP suite3270-4.1/Common/ibm-837_P100-2000.ucm000066400000000000000000005567201413735575200171610ustar00rootroot00000000000000# ******************************************************************************* # * # * Copyright (C) 1995-2001, International Business Machines # * Corporation and others. All Rights Reserved. # * # ******************************************************************************* # # File created by rptp2ucm (compiled on Feb 23 2001) # from source files 34B00345.RPMAP100 and 034534B0.TPMAP100 # "ibm-837_P100-2000" "AXXXX" 2 2 "DBCS" \xFE\xFE "ASCII" "ibm-837_VPUA" CHARMAP \x45\x88 |0 \x44\x6A |0 \x44\x60 |0 \x44\xED |0 \x44\x4B |0 \x44\x50 |0 \x44\x7A |0 \x46\x44 |0 \x46\x42 |0 \x46\x48 |0 \x46\x46 |0 \x46\x5A |0 \x46\x4C |0 \x46\x4A |0 \x46\x50 |0 \x46\x4E |0 \x44\x7B |0 \x46\x54 |0 \x46\x52 |0 \x46\x59 |0 \x46\x41 |0 \x46\x45 |0 \x46\x47 |0 \x46\x49 |0 \x46\x4D |0 \x46\x51 |0 \x46\x43 |0 \x46\x4B |0 \x46\x4F |0 \x46\x53 |0 \x46\x55 |0 \x46\x56 |0 \x46\x57 |0 \x46\x58 |0 \x45\x46 |0 \x45\x45 |0 \x41\x61 |0 \x41\x62 |0 \x41\x63 |0 \x41\x64 |0 \x41\x65 |0 \x41\x66 |0 \x41\x67 |0 \x41\x68 |0 \x41\x69 |0 \x41\x6A |0 \x41\x6B |0 \x41\x6C |0 \x41\x6D |0 \x41\x6E |0 \x41\x6F |0 \x41\x70 |0 \x41\x71 |0 \x41\x72 |0 \x41\x73 |0 \x41\x74 |0 \x41\x75 |0 \x41\x76 |0 \x41\x77 |0 \x41\x78 |0 \x41\x41 |0 \x41\x42 |0 \x41\x43 |0 \x41\x44 |0 \x41\x45 |0 \x41\x46 |0 \x41\x47 |0 \x41\x48 |0 \x41\x49 |0 \x41\x4A |0 \x41\x4B |0 \x41\x4C |0 \x41\x4D |0 \x41\x4E |0 \x41\x4F |0 \x41\x50 |0 \x41\x51 |0 \x41\x52 |0 \x41\x53 |0 \x41\x54 |0 \x41\x55 |0 \x41\x56 |0 \x41\x57 |0 \x41\x58 |0 \x41\xC6 |0 \x41\xC0 |0 \x41\xC1 |0 \x41\xC2 |0 \x41\xC3 |0 \x41\xC4 |0 \x41\xC5 |0 \x41\xC7 |0 \x41\xC8 |0 \x41\xC9 |0 \x41\xCA |0 \x41\xCB |0 \x41\xCC |0 \x41\xCD |0 \x41\xCE |0 \x41\xCF |0 \x41\xD0 |0 \x41\xD1 |0 \x41\xD2 |0 \x41\xD3 |0 \x41\xD4 |0 \x41\xD5 |0 \x41\xD6 |0 \x41\xD7 |0 \x41\xD8 |0 \x41\xD9 |0 \x41\xDA |0 \x41\xDB |0 \x41\xDC |0 \x41\xDD |0 \x41\xDE |0 \x41\xDF |0 \x41\xE0 |0 \x41\x80 |0 \x41\x81 |0 \x41\x82 |0 \x41\x83 |0 \x41\x84 |0 \x41\x85 |0 \x41\x87 |0 \x41\x88 |0 \x41\x89 |0 \x41\x8A |0 \x41\x8B |0 \x41\x8C |0 \x41\x8D |0 \x41\x8E |0 \x41\x8F |0 \x41\x90 |0 \x41\x91 |0 \x41\x92 |0 \x41\x93 |0 \x41\x94 |0 \x41\x95 |0 \x41\x96 |0 \x41\x97 |0 \x41\x98 |0 \x41\x99 |0 \x41\x9A |0 \x41\x9B |0 \x41\x9C |0 \x41\x9D |0 \x41\x9E |0 \x41\x9F |0 \x41\xA0 |0 \x41\x86 |0 \x44\x5A |0 \x44\x4A |0 \x44\x7C |0 \x44\x61 |0 \x44\x71 |0 \x44\x62 |0 \x44\x72 |0 \x44\x7E |0 \x44\x7F |0 \x45\x8B |0 \x44\xEE |0 \x44\xEF |0 \x44\x6B |0 \x44\x4E |0 \x44\x6E |0 \x44\x6F |0 \x41\xF1 |0 \x41\xF2 |0 \x41\xF3 |0 \x41\xF4 |0 \x41\xF5 |0 \x41\xF6 |0 \x41\xF7 |0 \x41\xF8 |0 \x41\xF9 |0 \x41\xFA |0 \x41\xFB |0 \x41\xFC |0 \x41\xB1 |0 \x41\xB2 |0 \x41\xB3 |0 \x41\xB4 |0 \x41\xB5 |0 \x41\xB6 |0 \x41\xB7 |0 \x41\xB8 |0 \x41\xB9 |0 \x41\xBA |0 \x44\xF1 |0 \x44\xF2 |0 \x44\xF0 |0 \x44\xF3 |0 \x45\x69 |0 \x45\x66 |0 \x45\x65 |0 \x45\x6B |0 \x45\x77 |0 \x44\x4D |0 \x45\x6E |0 \x45\x6D |0 \x45\x63 |0 \x45\x64 |0 \x45\x68 |0 \x45\x67 |0 \x45\x71 |0 \x45\x72 |0 \x44\x68 |0 \x44\x78 |0 \x45\x62 |0 \x45\x6A |0 \x45\x76 |0 \x45\x75 |0 \x45\x74 |0 \x44\x4C |0 \x45\x73 |0 \x44\x67 |0 \x44\x77 |0 \x45\x79 |0 \x45\x7A |0 \x45\x70 |0 \x45\x6C |0 \x45\x6F |0 \x45\xE1 |0 \x45\xE2 |0 \x45\xE3 |0 \x45\xE4 |0 \x45\xE5 |0 \x45\xE6 |0 \x45\xE7 |0 \x45\xE8 |0 \x45\xE9 |0 \x45\xEA |0 \x45\xC5 |0 \x45\xC6 |0 \x45\xC7 |0 \x45\xC8 |0 \x45\xC9 |0 \x45\xCA |0 \x45\xCB |0 \x45\xCC |0 \x45\xCD |0 \x45\xCE |0 \x45\xCF |0 \x45\xD0 |0 \x45\xD1 |0 \x45\xD2 |0 \x45\xD3 |0 \x45\xD4 |0 \x45\xD5 |0 \x45\xD6 |0 \x45\xD7 |0 \x45\xD8 |0 \x45\xB1 |0 \x45\xB2 |0 \x45\xB3 |0 \x45\xB4 |0 \x45\xB5 |0 \x45\xB6 |0 \x45\xB7 |0 \x45\xB8 |0 \x45\xB9 |0 \x45\xBA |0 \x45\xBB |0 \x45\xBC |0 \x45\xBD |0 \x45\xBE |0 \x45\xBF |0 \x45\xC0 |0 \x45\xC1 |0 \x45\xC2 |0 \x45\xC3 |0 \x45\xC4 |0 \x46\xA4 |0 \x46\xA5 |0 \x46\xA6 |0 \x46\xA7 |0 \x46\xA8 |0 \x46\xA9 |0 \x46\xAA |0 \x46\xAB |0 \x46\xAC |0 \x46\xAD |0 \x46\xAE |0 \x46\xAF |0 \x46\xB0 |0 \x46\xB1 |0 \x46\xB2 |0 \x46\xB3 |0 \x46\xB4 |0 \x46\xB5 |0 \x46\xB6 |0 \x46\xB7 |0 \x46\xB8 |0 \x46\xB9 |0 \x46\xBA |0 \x46\xBB |0 \x46\xBC |0 \x46\xBD |0 \x46\xBE |0 \x46\xBF |0 \x46\xC0 |0 \x46\xC1 |0 \x46\xC2 |0 \x46\xC3 |0 \x46\xC4 |0 \x46\xC5 |0 \x46\xC6 |0 \x46\xC7 |0 \x46\xC8 |0 \x46\xC9 |0 \x46\xCA |0 \x46\xCB |0 \x46\xCC |0 \x46\xCD |0 \x46\xCE |0 \x46\xCF |0 \x46\xD0 |0 \x46\xD1 |0 \x46\xD2 |0 \x46\xD3 |0 \x46\xD4 |0 \x46\xD5 |0 \x46\xD6 |0 \x46\xD7 |0 \x46\xD8 |0 \x46\xD9 |0 \x46\xDA |0 \x46\xDB |0 \x46\xDC |0 \x46\xDD |0 \x46\xDE |0 \x46\xDF |0 \x46\xE0 |0 \x46\xE1 |0 \x46\xE2 |0 \x46\xE3 |0 \x46\xE4 |0 \x46\xE5 |0 \x46\xE6 |0 \x46\xE7 |0 \x46\xE8 |0 \x46\xE9 |0 \x46\xEA |0 \x46\xEB |0 \x46\xEC |0 \x46\xED |0 \x46\xEE |0 \x46\xEF |0 \x44\xEA |0 \x44\xE9 |0 \x44\xE3 |0 \x44\xE2 |0 \x44\xEC |0 \x44\xEB |0 \x44\xE8 |0 \x44\xE7 |0 \x44\xE0 |0 \x44\xE4 |0 \x44\xE1 |0 \x44\xE6 |0 \x44\xE5 |0 \x44\x79 |0 \x44\x69 |0 \x40\x40 |0 \x43\x44 |0 \x43\x41 |0 \x44\x5B |0 \x44\x5D |0 \x44\x5E |0 \x44\x5F |0 \x44\x64 |0 \x44\x74 |0 \x44\x65 |0 \x44\x75 |0 \x43\x42 |0 \x43\x43 |0 \x44\x42 |0 \x44\x43 |0 \x44\x66 |0 \x44\x76 |0 \x44\x6C |0 \x44\x7D |0 \x44\x63 |0 \x44\x73 |0 \x45\x5B |0 \x45\x5C |0 \x44\x47 |0 \x44\x81 |0 \x44\x48 |0 \x44\x82 |0 \x44\x49 |0 \x44\x83 |0 \x44\x51 |0 \x44\x84 |0 \x44\x52 |0 \x44\x85 |0 \x44\x86 |0 \x44\xC0 |0 \x44\x87 |0 \x44\xC1 |0 \x44\x88 |0 \x44\xC2 |0 \x44\x89 |0 \x44\xC3 |0 \x44\x8A |0 \x44\xC4 |0 \x44\x8C |0 \x44\xC5 |0 \x44\x8D |0 \x44\xC6 |0 \x44\x8E |0 \x44\xC7 |0 \x44\x8F |0 \x44\xC8 |0 \x44\x90 |0 \x44\xC9 |0 \x44\x91 |0 \x44\xCA |0 \x44\x92 |0 \x44\xCB |0 \x44\x56 |0 \x44\x93 |0 \x44\xCC |0 \x44\x94 |0 \x44\xCD |0 \x44\x95 |0 \x44\xCE |0 \x44\x96 |0 \x44\x97 |0 \x44\x98 |0 \x44\x99 |0 \x44\x9A |0 \x44\x9D |0 \x44\xCF |0 \x44\xD5 |0 \x44\x9E |0 \x44\xD0 |0 \x44\xD6 |0 \x44\x9F |0 \x44\xD1 |0 \x44\xD7 |0 \x44\xA2 |0 \x44\xD2 |0 \x44\xD8 |0 \x44\xA3 |0 \x44\xD3 |0 \x44\xD9 |0 \x44\xA4 |0 \x44\xA5 |0 \x44\xA6 |0 \x44\xA7 |0 \x44\xA8 |0 \x44\x53 |0 \x44\xA9 |0 \x44\x54 |0 \x44\xAA |0 \x44\x55 |0 \x44\xAC |0 \x44\xAD |0 \x44\xAE |0 \x44\xAF |0 \x44\xBA |0 \x44\xBB |0 \x44\x57 |0 \x44\xBC |0 \x44\xDA |0 \x44\xDB |0 \x44\x46 |0 \x44\xBD |0 \x43\xBE |0 \x43\xBF |0 \x44\xDC |0 \x44\xDD |0 \x43\x47 |0 \x43\x81 |0 \x43\x48 |0 \x43\x82 |0 \x43\x49 |0 \x43\x83 |0 \x43\x51 |0 \x43\x84 |0 \x43\x52 |0 \x43\x85 |0 \x43\x86 |0 \x43\xC0 |0 \x43\x87 |0 \x43\xC1 |0 \x43\x88 |0 \x43\xC2 |0 \x43\x89 |0 \x43\xC3 |0 \x43\x8A |0 \x43\xC4 |0 \x43\x8C |0 \x43\xC5 |0 \x43\x8D |0 \x43\xC6 |0 \x43\x8E |0 \x43\xC7 |0 \x43\x8F |0 \x43\xC8 |0 \x43\x90 |0 \x43\xC9 |0 \x43\x91 |0 \x43\xCA |0 \x43\x92 |0 \x43\xCB |0 \x43\x56 |0 \x43\x93 |0 \x43\xCC |0 \x43\x94 |0 \x43\xCD |0 \x43\x95 |0 \x43\xCE |0 \x43\x96 |0 \x43\x97 |0 \x43\x98 |0 \x43\x99 |0 \x43\x9A |0 \x43\x9D |0 \x43\xCF |0 \x43\xD5 |0 \x43\x9E |0 \x43\xD0 |0 \x43\xD6 |0 \x43\x9F |0 \x43\xD1 |0 \x43\xD7 |0 \x43\xA2 |0 \x43\xD2 |0 \x43\xD8 |0 \x43\xA3 |0 \x43\xD3 |0 \x43\xD9 |0 \x43\xA4 |0 \x43\xA5 |0 \x43\xA6 |0 \x43\xA7 |0 \x43\xA8 |0 \x43\x53 |0 \x43\xA9 |0 \x43\x54 |0 \x43\xAA |0 \x43\x55 |0 \x43\xAC |0 \x43\xAD |0 \x43\xAE |0 \x43\xAF |0 \x43\xBA |0 \x43\xBB |0 \x43\x57 |0 \x43\xBC |0 \x43\xDA |0 \x43\xDB |0 \x43\x46 |0 \x43\xBD |0 \x43\xD4 |0 \x43\x59 |0 \x43\x5A |0 \x43\x45 |0 \x43\x58 |0 \x43\xDC |0 \x43\xDD |0 \x46\x65 |0 \x46\x66 |0 \x46\x67 |0 \x46\x68 |0 \x46\x69 |0 \x46\x6A |0 \x46\x6B |0 \x46\x6C |0 \x46\x6D |0 \x46\x6E |0 \x46\x6F |0 \x46\x70 |0 \x46\x71 |0 \x46\x72 |0 \x46\x73 |0 \x46\x74 |0 \x46\x75 |0 \x46\x76 |0 \x46\x77 |0 \x46\x78 |0 \x46\x79 |0 \x46\x7A |0 \x46\x7B |0 \x46\x7C |0 \x46\x7D |0 \x46\x7E |0 \x46\x7F |0 \x46\x80 |0 \x46\x81 |0 \x46\x82 |0 \x46\x83 |0 \x46\x84 |0 \x46\x85 |0 \x46\x86 |0 \x46\x87 |0 \x46\x88 |0 \x46\x89 |0 \x45\xF1 |0 \x45\xF2 |0 \x45\xF3 |0 \x45\xF4 |0 \x45\xF5 |0 \x45\xF6 |0 \x45\xF7 |0 \x45\xF8 |0 \x45\xF9 |0 \x45\xFA |0 \x44\x6D |0 \x59\xBA |0 \x4B\xA0 |0 \x53\xDE |0 \x57\x93 |0 \x5B\x69 |0 \x54\xFC |0 \x55\x6F |0 \x58\x62 |0 \x5C\xA1 |0 \x49\xBA |0 \x5A\x8C |0 \x5C\xA3 |0 \x4A\x94 |0 \x5C\x48 |0 \x54\x72 |0 \x5C\xA6 |0 \x55\xBF |0 \x54\x91 |0 \x49\x9C |0 \x59\xB4 |0 \x4A\xD3 |0 \x4B\xAA |0 \x56\x5F |0 \x5C\xA8 |0 \x4B\xA9 |0 \x51\x5D |0 \x59\x6F |0 \x55\x45 |0 \x5C\xAC |0 \x4C\xF5 |0 \x59\x5E |0 \x62\x7C |0 \x5B\xCF |0 \x4C\x82 |0 \x4A\xAD |0 \x51\x79 |0 \x5C\xBB |0 \x57\x89 |0 \x4B\x44 |0 \x57\xA9 |0 \x5B\xF6 |0 \x50\xF5 |0 \x4F\xD8 |0 \x5C\xAE |0 \x52\xCA |0 \x4F\xC2 |0 \x5C\xB0 |0 \x52\x54 |0 \x59\xE4 |0 \x5B\xAD |0 \x57\xD9 |0 \x5B\x47 |0 \x4D\xF4 |0 \x4C\x46 |0 \x50\xD5 |0 \x53\xB8 |0 \x53\x72 |0 \x54\x67 |0 \x4D\x74 |0 \x4A\x6B |0 \x59\xD1 |0 \x5C\xBE |0 \x4F\xC4 |0 \x53\xF1 |0 \x59\xB1 |0 \x58\x50 |0 \x58\x88 |0 \x55\xE8 |0 \x5C\xBF |0 \x51\xF1 |0 \x51\xD1 |0 \x54\xE8 |0 \x54\x4C |0 \x51\x6B |0 \x5A\x89 |0 \x5B\x9A |0 \x55\xC1 |0 \x4B\xFD |0 \x5C\xA0 |0 \x5A\x7A |0 \x50\x98 |0 \x5A\xC5 |0 \x4E\x45 |0 \x5C\xC0 |0 \x57\xE4 |0 \x4F\xAD |0 \x5C\xA7 |0 \x59\x67 |0 \x58\xA8 |0 \x5C\xBC |0 \x5D\x90 |0 \x57\x97 |0 \x50\x5A |0 \x4F\x5B |0 \x4D\xA4 |0 \x59\xDF |0 \x49\xF9 |0 \x4D\xDF |0 \x52\xB5 |0 \x58\x8E |0 \x4F\xA8 |0 \x57\x44 |0 \x51\x61 |0 \x54\x77 |0 \x5D\x92 |0 \x5D\x95 |0 \x54\xCA |0 \x5C\xE8 |0 \x59\xD9 |0 \x55\xB1 |0 \x54\xC9 |0 \x5C\xEB |0 \x5C\xE9 |0 \x5C\xC5 |0 \x4F\x97 |0 \x53\xCC |0 \x4A\x91 |0 \x5C\xEA |0 \x4F\x92 |0 \x4F\x8A |0 \x54\xD3 |0 \x4A\xD2 |0 \x51\xD7 |0 \x49\xD5 |0 \x5C\x70 |0 \x55\xCA |0 \x56\x9C |0 \x5B\x6C |0 \x4C\xB5 |0 \x58\x69 |0 \x5D\x7A |0 \x5C\xEF |0 \x54\x4A |0 \x5C\xED |0 \x4A\xF9 |0 \x51\x8F |0 \x59\xD3 |0 \x5C\xEC |0 \x59\xC6 |0 \x5C\xEE |0 \x52\x67 |0 \x59\x97 |0 \x5B\xD8 |0 \x5C\xF1 |0 \x5C\xF4 |0 \x4E\xFD |0 \x4E\xDA |0 \x54\xCD |0 \x4C\x7D |0 \x4C\x62 |0 \x53\xF2 |0 \x5C\xF7 |0 \x59\xC0 |0 \x57\xE8 |0 \x4E\xBE |0 \x4C\x9D |0 \x4C\x45 |0 \x58\xDC |0 \x5B\xD9 |0 \x5A\x65 |0 \x4E\x90 |0 \x4E\x82 |0 \x5C\xF0 |0 \x55\x41 |0 \x57\xAF |0 \x4A\xAA |0 \x5C\xF2 |0 \x55\x6B |0 \x5C\xF5 |0 \x51\xD6 |0 \x5C\xF6 |0 \x57\xB0 |0 \x5C\xF8 |0 \x49\xAD |0 \x4D\x60 |0 \x5D\x43 |0 \x48\xE8 |0 \x51\x87 |0 \x55\x8D |0 \x56\x65 |0 \x56\x66 |0 \x5D\x44 |0 \x4B\x89 |0 \x4B\x4B |0 \x57\xBA |0 \x4B\x6D |0 \x5C\x41 |0 \x5C\x95 |0 \x5A\x73 |0 \x56\xE4 |0 \x4D\xCD |0 \x5D\x42 |0 \x5D\x7C |0 \x5A\x81 |0 \x5C\xFC |0 \x4C\x91 |0 \x5C\x98 |0 \x5C\xFD |0 \x5C\xF9 |0 \x5D\x41 |0 \x52\xE2 |0 \x5A\x56 |0 \x5C\xF3 |0 \x5D\x7D |0 \x5C\xFA |0 \x53\x86 |0 \x50\xCF |0 \x59\x91 |0 \x48\xDA |0 \x4E\xD0 |0 \x5D\x46 |0 \x5D\x45 |0 \x5D\x4C |0 \x5D\x4E |0 \x5D\x4B |0 \x55\xB8 |0 \x5D\x49 |0 \x5B\xB5 |0 \x4A\x7E |0 \x5D\x48 |0 \x50\xFC |0 \x55\xCB |0 \x5D\x4A |0 \x5D\x47 |0 \x5D\x50 |0 \x4B\xB0 |0 \x4D\x49 |0 \x59\xBF |0 \x58\x60 |0 \x51\xC1 |0 \x4F\x64 |0 \x5B\x8D |0 \x49\xDF |0 \x54\x68 |0 \x50\x8C |0 \x5D\x4D |0 \x5D\x4F |0 \x57\xE9 |0 \x4D\xED |0 \x54\x76 |0 \x49\x84 |0 \x4A\xD8 |0 \x4B\xEC |0 \x5D\x54 |0 \x50\x41 |0 \x5D\x7E |0 \x54\x6E |0 \x50\xFD |0 \x5D\x58 |0 \x56\x77 |0 \x4C\x9E |0 \x5D\x55 |0 \x5D\x57 |0 \x49\x43 |0 \x5A\x82 |0 \x5D\x59 |0 \x58\xC4 |0 \x5D\x56 |0 \x5D\x51 |0 \x5D\x52 |0 \x51\x49 |0 \x5D\x53 |0 \x4E\xF2 |0 \x58\xDD |0 \x4C\xA8 |0 \x4F\xE2 |0 \x5D\x5D |0 \x5D\x5A |0 \x48\xB2 |0 \x5D\x62 |0 \x5D\x64 |0 \x49\x56 |0 \x5D\x5F |0 \x4B\x59 |0 \x4F\xF2 |0 \x56\xC7 |0 \x4D\xF1 |0 \x59\xCF |0 \x5D\x63 |0 \x4F\x89 |0 \x4A\x4B |0 \x5D\x65 |0 \x4F\xEA |0 \x5D\x66 |0 \x5D\x5B |0 \x52\xDE |0 \x5D\x5E |0 \x5D\x61 |0 \x5D\x60 |0 \x5B\x4E |0 \x5B\xB4 |0 \x54\x84 |0 \x5D\x68 |0 \x4E\xD8 |0 \x5D\x6A |0 \x5D\x5C |0 \x5D\x6B |0 \x53\xAA |0 \x5D\x69 |0 \x5C\x97 |0 \x57\x43 |0 \x4F\x41 |0 \x5D\x6C |0 \x53\x5C |0 \x57\x55 |0 \x5D\x6D |0 \x5D\x67 |0 \x4A\x45 |0 \x50\x9F |0 \x4C\xB4 |0 \x50\xFB |0 \x48\xF7 |0 \x4A\xF5 |0 \x5D\x6E |0 \x5D\x6F |0 \x4A\xA1 |0 \x5D\x70 |0 \x4A\xDE |0 \x48\xC0 |0 \x5D\x71 |0 \x55\x55 |0 \x58\x92 |0 \x5D\x72 |0 \x51\x65 |0 \x5D\x76 |0 \x55\x4E |0 \x5D\x75 |0 \x5D\x74 |0 \x5D\x77 |0 \x56\x7B |0 \x4F\x49 |0 \x53\xA6 |0 \x5D\x73 |0 \x5D\x78 |0 \x5D\x79 |0 \x54\xE4 |0 \x50\xDB |0 \x4B\xF8 |0 \x5C\xA2 |0 \x5A\xC9 |0 \x5A\xA9 |0 \x58\xD5 |0 \x4A\x85 |0 \x5B\x77 |0 \x58\x68 |0 \x4D\x83 |0 \x50\x6B |0 \x52\x83 |0 \x4B\xD1 |0 \x57\x63 |0 \x5D\x8F |0 \x5D\x91 |0 \x4B\x53 |0 \x4B\xB4 |0 \x4F\xA3 |0 \x54\xEA |0 \x54\xAA |0 \x48\xCA |0 \x4D\x4B |0 \x51\x9A |0 \x5D\x83 |0 \x50\xBB |0 \x4D\x52 |0 \x4D\x78 |0 \x58\xCA |0 \x49\x99 |0 \x53\xE3 |0 \x4F\xDE |0 \x4B\x85 |0 \x5C\x68 |0 \x59\x99 |0 \x4E\xE5 |0 \x55\xDD |0 \x4E\xBC |0 \x5D\x87 |0 \x5C\xE6 |0 \x52\xD9 |0 \x4C\xD3 |0 \x54\xBC |0 \x49\xE0 |0 \x5A\xD8 |0 \x52\x50 |0 \x52\x82 |0 \x5D\xA1 |0 \x54\xDE |0 \x58\xB3 |0 \x4F\xFB |0 \x53\x49 |0 \x4D\x7A |0 \x5D\xA2 |0 \x5A\xA8 |0 \x5D\xA3 |0 \x5D\x9C |0 \x4B\xAB |0 \x4C\x8C |0 \x49\x9A |0 \x5D\x9D |0 \x4A\x86 |0 \x4F\xF5 |0 \x50\x97 |0 \x59\xB0 |0 \x50\xE3 |0 \x4B\xB2 |0 \x5D\x9F |0 \x5D\x9E |0 \x4F\xBA |0 \x53\xDF |0 \x5C\x5C |0 \x5D\xA0 |0 \x51\x59 |0 \x4B\x93 |0 \x51\x89 |0 \x4E\xF4 |0 \x4A\xD4 |0 \x51\x7D |0 \x52\xFC |0 \x4E\xB7 |0 \x4C\x52 |0 \x4C\x90 |0 \x5D\x8D |0 \x53\xBD |0 \x50\x4D |0 \x4E\x6B |0 \x4B\x6A |0 \x5E\x69 |0 \x58\xD6 |0 \x57\x59 |0 \x48\xBB |0 \x4A\x97 |0 \x4E\x98 |0 \x5E\x6A |0 \x4D\xAE |0 \x5A\xE3 |0 \x4B\x56 |0 \x4B\x94 |0 \x5C\xD5 |0 \x54\xCF |0 \x4C\x76 |0 \x54\x70 |0 \x5C\xD6 |0 \x50\x4F |0 \x5E\x5B |0 \x5C\xD7 |0 \x58\xCB |0 \x4E\x4E |0 \x66\x5E |0 \x51\x70 |0 \x51\x96 |0 \x5A\xF1 |0 \x4C\xD4 |0 \x4A\xB3 |0 \x4A\x96 |0 \x55\x5E |0 \x53\x70 |0 \x53\x79 |0 \x50\xFA |0 \x49\x91 |0 \x5C\xD8 |0 \x4D\x6E |0 \x4B\x5D |0 \x5C\xD9 |0 \x5B\xC5 |0 \x56\x42 |0 \x54\xAE |0 \x55\x52 |0 \x4A\xCB |0 \x50\x6C |0 \x4D\x95 |0 \x5C\xDA |0 \x5C\xDB |0 \x4B\xE6 |0 \x4E\xC0 |0 \x56\xE9 |0 \x58\x98 |0 \x5C\xDC |0 \x54\x50 |0 \x4D\x70 |0 \x4F\x43 |0 \x56\xDD |0 \x53\xC9 |0 \x5C\xDF |0 \x5C\xDD |0 \x5C\xDE |0 \x48\xFD |0 \x4F\xE6 |0 \x55\xA2 |0 \x4E\xF3 |0 \x4C\xB0 |0 \x4C\xED |0 \x5C\xE1 |0 \x4F\x6B |0 \x5C\xE3 |0 \x5C\xE2 |0 \x53\x9D |0 \x5C\xE4 |0 \x5C\xE5 |0 \x51\x46 |0 \x54\xAF |0 \x48\xEB |0 \x4D\x46 |0 \x4E\xD2 |0 \x57\xF0 |0 \x5E\x5D |0 \x51\x73 |0 \x4B\xAE |0 \x5B\xF9 |0 \x53\x4C |0 \x4F\x79 |0 \x5E\x5E |0 \x5E\x5F |0 \x50\xF7 |0 \x4F\xA1 |0 \x50\xCC |0 \x5E\x60 |0 \x55\xC5 |0 \x49\xA9 |0 \x5A\x62 |0 \x52\x84 |0 \x59\x4B |0 \x5E\x62 |0 \x50\xD4 |0 \x5E\x63 |0 \x50\x51 |0 \x52\xBB |0 \x54\x7A |0 \x5E\x64 |0 \x5D\x89 |0 \x55\x77 |0 \x4D\x54 |0 \x57\xEF |0 \x5A\xC7 |0 \x48\xFB |0 \x4A\xD1 |0 \x58\xD8 |0 \x5D\x8A |0 \x5F\xCA |0 \x5D\x8C |0 \x5C\xAF |0 \x4E\x4F |0 \x49\x51 |0 \x4A\x77 |0 \x5C\xCD |0 \x5A\xD0 |0 \x4F\x53 |0 \x50\x90 |0 \x58\x5B |0 \x5C\xCF |0 \x4C\x6B |0 \x5C\xD0 |0 \x53\xA4 |0 \x54\x99 |0 \x59\xBC |0 \x5C\xD1 |0 \x52\xE3 |0 \x55\xAD |0 \x54\x47 |0 \x5C\xA5 |0 \x55\x9E |0 \x57\xE6 |0 \x4E\x7C |0 \x48\xEA |0 \x4E\x4A |0 \x58\xAC |0 \x49\x50 |0 \x5C\x85 |0 \x5C\x5F |0 \x4B\x45 |0 \x51\xF3 |0 \x52\xCE |0 \x49\xA8 |0 \x49\xB6 |0 \x49\x86 |0 \x60\x52 |0 \x5B\x5C |0 \x50\x48 |0 \x51\xAB |0 \x5C\xD4 |0 \x51\xB0 |0 \x5C\xD3 |0 \x57\xD3 |0 \x5D\xDF |0 \x57\xBF |0 \x5C\xB3 |0 \x52\x4E |0 \x5A\x41 |0 \x57\xA2 |0 \x4E\xB3 |0 \x54\xB3 |0 \x51\xD0 |0 \x4F\xEC |0 \x58\xB5 |0 \x5D\xE0 |0 \x54\x85 |0 \x4A\x47 |0 \x4B\xF1 |0 \x56\xFB |0 \x50\xF9 |0 \x50\xF6 |0 \x59\x59 |0 \x59\x82 |0 \x5C\xC6 |0 \x49\xDD |0 \x50\xE4 |0 \x4D\xF0 |0 \x5C\xC7 |0 \x5A\xAC |0 \x58\x82 |0 \x5C\xC8 |0 \x5C\xC9 |0 \x58\x63 |0 \x4A\x99 |0 \x4F\xC6 |0 \x5C\xCA |0 \x5E\x6C |0 \x54\xA4 |0 \x58\x78 |0 \x54\xFD |0 \x49\xCD |0 \x5A\x76 |0 \x49\xE5 |0 \x4E\xAF |0 \x5A\x71 |0 \x56\x4B |0 \x4C\x54 |0 \x4C\x42 |0 \x55\xE4 |0 \x54\xA0 |0 \x55\xDB |0 \x49\x85 |0 \x58\xEF |0 \x53\x71 |0 \x5E\x65 |0 \x4B\x9F |0 \x50\x7A |0 \x4D\x65 |0 \x4F\xE3 |0 \x51\x8E |0 \x60\x56 |0 \x60\x55 |0 \x5B\xBA |0 \x4F\x70 |0 \x5B\x79 |0 \x48\xC7 |0 \x4B\xA2 |0 \x50\x69 |0 \x56\xA7 |0 \x60\x53 |0 \x55\xB6 |0 \x5A\x72 |0 \x5C\xCE |0 \x59\xB5 |0 \x4D\xC4 |0 \x56\x5E |0 \x56\xBD |0 \x60\x57 |0 \x4B\x91 |0 \x60\x54 |0 \x5A\x96 |0 \x4A\x74 |0 \x4C\xF6 |0 \x60\x5A |0 \x4D\xCE |0 \x4E\xA9 |0 \x4B\x96 |0 \x57\x4C |0 \x52\x9C |0 \x4D\xF2 |0 \x50\xF3 |0 \x57\x62 |0 \x58\x93 |0 \x60\x58 |0 \x58\x65 |0 \x51\xBF |0 \x60\x59 |0 \x51\xEF |0 \x4F\xFC |0 \x51\x7F |0 \x57\x6C |0 \x59\xF6 |0 \x4C\x6D |0 \x60\x61 |0 \x60\x64 |0 \x4C\x92 |0 \x48\xC8 |0 \x4B\xD5 |0 \x4C\x74 |0 \x4D\xAB |0 \x56\xFC |0 \x50\x74 |0 \x56\x51 |0 \x53\xF3 |0 \x5B\xA7 |0 \x60\x65 |0 \x57\xE1 |0 \x4A\x53 |0 \x57\xFB |0 \x4A\xB4 |0 \x57\xC6 |0 \x4D\xEF |0 \x57\xE0 |0 \x59\x5D |0 \x60\x60 |0 \x4A\xF3 |0 \x4A\x6A |0 \x4C\xE5 |0 \x60\x5B |0 \x52\xC4 |0 \x60\x5C |0 \x60\x5D |0 \x60\x5E |0 \x53\x5B |0 \x60\x5F |0 \x60\x62 |0 \x5A\xB0 |0 \x60\x63 |0 \x54\x5A |0 \x57\xD7 |0 \x52\xD7 |0 \x60\x6A |0 \x60\x6F |0 \x5B\xDB |0 \x60\x69 |0 \x60\x7A |0 \x57\xB5 |0 \x4D\xC6 |0 \x60\x6E |0 \x60\x68 |0 \x53\x7E |0 \x55\x8C |0 \x4D\xF3 |0 \x52\x9D |0 \x4F\xD6 |0 \x60\x66 |0 \x60\x6D |0 \x53\x78 |0 \x5B\x46 |0 \x4D\xCC |0 \x4F\xCB |0 \x5A\x5D |0 \x4C\xBF |0 \x5B\xE3 |0 \x60\x67 |0 \x4D\x5E |0 \x50\x47 |0 \x51\x9D |0 \x60\x6B |0 \x60\x6C |0 \x60\x70 |0 \x60\x7B |0 \x60\x86 |0 \x60\x77 |0 \x60\x76 |0 \x5C\x69 |0 \x60\x84 |0 \x60\x85 |0 \x63\x8C |0 \x59\xA6 |0 \x60\x72 |0 \x50\x49 |0 \x5A\xDA |0 \x50\x68 |0 \x60\x74 |0 \x58\x6C |0 \x60\x7D |0 \x59\x6A |0 \x60\x7E |0 \x48\xA6 |0 \x53\xB6 |0 \x60\x73 |0 \x4D\xE4 |0 \x4B\xDE |0 \x57\x7B |0 \x4D\x9F |0 \x5A\xD4 |0 \x60\x7F |0 \x58\x8D |0 \x48\xA4 |0 \x60\x88 |0 \x60\x71 |0 \x59\x66 |0 \x60\x75 |0 \x60\x78 |0 \x60\x79 |0 \x60\x7C |0 \x4E\x49 |0 \x60\x81 |0 \x60\x82 |0 \x60\x83 |0 \x60\x87 |0 \x60\x89 |0 \x5A\x54 |0 \x4C\xE6 |0 \x53\x56 |0 \x60\x8B |0 \x55\x7A |0 \x51\x48 |0 \x52\xC3 |0 \x50\x7E |0 \x58\x99 |0 \x5B\x7C |0 \x60\x8F |0 \x49\xB7 |0 \x4D\xDE |0 \x60\x8D |0 \x5E\x61 |0 \x59\x85 |0 \x56\x95 |0 \x4A\xBC |0 \x48\xA5 |0 \x60\x92 |0 \x56\xC5 |0 \x60\x93 |0 \x60\x8E |0 \x60\x8A |0 \x60\x8C |0 \x60\x90 |0 \x60\x91 |0 \x4E\x5D |0 \x60\x94 |0 \x60\x95 |0 \x4E\x43 |0 \x55\xDA |0 \x57\xA7 |0 \x60\xA6 |0 \x4A\x4A |0 \x60\xA5 |0 \x60\xA0 |0 \x60\x9F |0 \x57\x79 |0 \x60\x9D |0 \x60\x9B |0 \x50\x70 |0 \x5C\x64 |0 \x55\x6C |0 \x60\x99 |0 \x48\xA0 |0 \x60\x9E |0 \x60\x9C |0 \x60\xA1 |0 \x60\xA7 |0 \x4C\x68 |0 \x53\xA0 |0 \x55\x56 |0 \x50\xB1 |0 \x60\x96 |0 \x53\x5E |0 \x5C\xC3 |0 \x60\x9A |0 \x52\xF5 |0 \x60\xA2 |0 \x60\xA3 |0 \x60\xA4 |0 \x58\xA4 |0 \x60\xB3 |0 \x56\xE3 |0 \x60\xB0 |0 \x50\x46 |0 \x60\xAE |0 \x57\xB8 |0 \x60\xAA |0 \x55\x66 |0 \x50\xAD |0 \x60\xAD |0 \x4D\xEC |0 \x4D\xAF |0 \x60\xA8 |0 \x60\x97 |0 \x60\xB2 |0 \x60\xB7 |0 \x4A\xAC |0 \x60\xB8 |0 \x58\x52 |0 \x4D\xC7 |0 \x60\xAF |0 \x58\xF9 |0 \x60\xAB |0 \x5A\xFA |0 \x60\x98 |0 \x53\x88 |0 \x60\xAC |0 \x5A\x98 |0 \x60\xB5 |0 \x60\xB6 |0 \x60\xC3 |0 \x58\xE0 |0 \x60\xBB |0 \x60\xC8 |0 \x60\xC9 |0 \x60\xBD |0 \x60\xA9 |0 \x55\x44 |0 \x60\xC0 |0 \x60\xB1 |0 \x55\xC7 |0 \x60\xC2 |0 \x60\xB4 |0 \x57\xCA |0 \x56\x63 |0 \x60\xCC |0 \x60\xC5 |0 \x60\xC1 |0 \x60\xCA |0 \x60\xB9 |0 \x60\xBE |0 \x60\xBF |0 \x60\xC4 |0 \x60\xC6 |0 \x60\xC7 |0 \x60\xCB |0 \x60\xBA |0 \x56\x74 |0 \x60\xD4 |0 \x60\xD5 |0 \x60\xD1 |0 \x60\xCF |0 \x4E\xCD |0 \x60\xD0 |0 \x4C\xC1 |0 \x5C\xC4 |0 \x58\xE9 |0 \x51\xEE |0 \x60\xCE |0 \x60\xBC |0 \x60\xD3 |0 \x60\xD2 |0 \x60\xD6 |0 \x60\xDB |0 \x60\xD7 |0 \x5B\xF5 |0 \x4A\x50 |0 \x5C\x8D |0 \x56\x5B |0 \x60\xD9 |0 \x57\xFA |0 \x4D\xD8 |0 \x60\xE0 |0 \x60\xDC |0 \x59\xAC |0 \x60\xE1 |0 \x60\xDA |0 \x60\xD8 |0 \x60\xDE |0 \x60\xDF |0 \x60\xDD |0 \x60\xE3 |0 \x53\xF6 |0 \x5C\xAB |0 \x5A\xEA |0 \x60\xE5 |0 \x55\xC8 |0 \x60\xE4 |0 \x4C\xC0 |0 \x60\xE6 |0 \x60\xE7 |0 \x60\xE8 |0 \x60\xE2 |0 \x4D\xBE |0 \x56\xE6 |0 \x60\xE9 |0 \x58\x9A |0 \x60\xEA |0 \x54\xC1 |0 \x4F\x60 |0 \x52\xD1 |0 \x60\xEB |0 \x60\xEC |0 \x54\x95 |0 \x56\x64 |0 \x60\xED |0 \x4E\x78 |0 \x5C\xB5 |0 \x59\xF1 |0 \x60\xEE |0 \x57\x65 |0 \x4B\xD9 |0 \x60\xF0 |0 \x5A\xAF |0 \x50\xA6 |0 \x4A\xD0 |0 \x57\xA6 |0 \x60\xEF |0 \x60\xF1 |0 \x4D\x6C |0 \x4D\x9B |0 \x57\x5C |0 \x60\xF2 |0 \x53\xD3 |0 \x60\xF3 |0 \x5A\xB1 |0 \x54\xA5 |0 \x60\xF5 |0 \x60\xF4 |0 \x60\xF6 |0 \x57\x61 |0 \x55\xA4 |0 \x5A\xD9 |0 \x5E\x77 |0 \x5E\x79 |0 \x5E\x78 |0 \x4D\x88 |0 \x5E\x7C |0 \x5E\x7D |0 \x4B\x78 |0 \x5E\x7A |0 \x5E\x7B |0 \x4A\x41 |0 \x5E\x7F |0 \x4E\x99 |0 \x5B\xB6 |0 \x5E\x81 |0 \x4F\xF8 |0 \x4C\x5B |0 \x5E\x70 |0 \x56\xAD |0 \x50\x52 |0 \x4E\x55 |0 \x5C\x99 |0 \x50\x73 |0 \x50\x8A |0 \x4E\xE0 |0 \x56\xB2 |0 \x5E\x7E |0 \x48\xD2 |0 \x57\xEA |0 \x4C\x78 |0 \x5C\x59 |0 \x53\xC1 |0 \x50\xA3 |0 \x56\xB8 |0 \x5E\x88 |0 \x5E\x82 |0 \x53\xB9 |0 \x5E\x84 |0 \x5E\x89 |0 \x53\x98 |0 \x5E\x8B |0 \x5E\x8A |0 \x50\x60 |0 \x5E\x87 |0 \x5E\x86 |0 \x4A\xB8 |0 \x50\xAB |0 \x51\xA1 |0 \x5E\x83 |0 \x5E\x85 |0 \x58\xCC |0 \x5E\x8E |0 \x50\xDC |0 \x5E\x93 |0 \x4B\xE1 |0 \x5E\x94 |0 \x5E\x72 |0 \x4D\x58 |0 \x5A\xAA |0 \x5E\x8D |0 \x50\x71 |0 \x5E\x91 |0 \x5E\x71 |0 \x4B\x87 |0 \x5E\x8C |0 \x50\x86 |0 \x5E\x8F |0 \x5E\x92 |0 \x5E\x9A |0 \x4D\x41 |0 \x48\xA2 |0 \x51\xF0 |0 \x4A\x67 |0 \x5E\x90 |0 \x5E\x99 |0 \x53\xD1 |0 \x5E\x95 |0 \x5E\x96 |0 \x5E\x98 |0 \x5E\x97 |0 \x5E\x9F |0 \x5A\x93 |0 \x49\xB9 |0 \x5E\x9E |0 \x5E\xA3 |0 \x5E\x9C |0 \x5E\x9B |0 \x5E\x9D |0 \x53\x81 |0 \x4E\x9A |0 \x5E\xA2 |0 \x5E\xA4 |0 \x56\xC2 |0 \x4B\xD0 |0 \x5F\x60 |0 \x5E\xA0 |0 \x5E\xA1 |0 \x54\x55 |0 \x4B\xE8 |0 \x5E\xA6 |0 \x5E\xA5 |0 \x5E\xA8 |0 \x49\x44 |0 \x4B\x6C |0 \x50\x50 |0 \x59\x7F |0 \x4B\xC1 |0 \x5E\xA7 |0 \x56\x9B |0 \x66\x94 |0 \x56\x7C |0 \x56\x9F |0 \x56\xC0 |0 \x54\xFA |0 \x5E\xA9 |0 \x56\xED |0 \x5E\xAA |0 \x5E\x73 |0 \x5E\xAE |0 \x5E\xAB |0 \x4F\xB2 |0 \x55\xFA |0 \x5E\xAC |0 \x55\x6A |0 \x52\xB8 |0 \x54\x5D |0 \x5E\xAD |0 \x5A\xF5 |0 \x58\xE5 |0 \x52\xAA |0 \x4B\xD4 |0 \x5E\x74 |0 \x49\x7A |0 \x5E\x75 |0 \x5E\x76 |0 \x4D\xBD |0 \x54\xBF |0 \x55\xBE |0 \x54\xC8 |0 \x5C\x53 |0 \x55\x9A |0 \x50\x67 |0 \x4D\xF7 |0 \x59\xBB |0 \x61\xB9 |0 \x4A\xA5 |0 \x49\x58 |0 \x4C\xB3 |0 \x58\x64 |0 \x5D\x88 |0 \x58\x46 |0 \x57\x83 |0 \x5D\x8E |0 \x4B\xDF |0 \x59\xB8 |0 \x4D\x5B |0 \x61\xB8 |0 \x61\xB6 |0 \x4A\xF2 |0 \x56\xEB |0 \x56\xAA |0 \x4C\x93 |0 \x5C\xB1 |0 \x59\x8C |0 \x4D\xBA |0 \x55\xA6 |0 \x57\x57 |0 \x59\xC3 |0 \x50\x85 |0 \x4E\xCF |0 \x4B\xE0 |0 \x5F\xC4 |0 \x5F\xC5 |0 \x5E\x5C |0 \x59\x79 |0 \x53\xE5 |0 \x52\xCD |0 \x4C\x8F |0 \x4C\x7C |0 \x50\x9D |0 \x5C\x81 |0 \x53\xF4 |0 \x49\x5C |0 \x5F\xC7 |0 \x4F\x51 |0 \x56\xD6 |0 \x5F\xC9 |0 \x5F\xC8 |0 \x4B\x8D |0 \x55\x7D |0 \x48\xC1 |0 \x53\x4E |0 \x53\x4B |0 \x52\xCB |0 \x4E\xE8 |0 \x56\x9E |0 \x4D\xC2 |0 \x63\x9A |0 \x54\xE6 |0 \x63\x9B |0 \x57\x9E |0 \x5C\x51 |0 \x4C\xBD |0 \x51\xE7 |0 \x54\xD0 |0 \x63\x9C |0 \x4B\xC9 |0 \x4E\xCA |0 \x59\x9E |0 \x63\xA0 |0 \x52\x8F |0 \x63\xA3 |0 \x63\x9F |0 \x63\xA4 |0 \x57\x77 |0 \x4C\x61 |0 \x63\x9D |0 \x63\x9E |0 \x63\xA2 |0 \x52\xDC |0 \x63\xA7 |0 \x63\xA6 |0 \x52\x63 |0 \x53\xDD |0 \x63\xA9 |0 \x52\xB6 |0 \x63\xA1 |0 \x55\xBB |0 \x4F\x84 |0 \x4D\x63 |0 \x63\xA5 |0 \x58\xD4 |0 \x57\xAE |0 \x63\xA8 |0 \x63\xAF |0 \x59\xA5 |0 \x4F\x4A |0 \x63\xAC |0 \x63\xAE |0 \x50\xD0 |0 \x59\xCB |0 \x4E\xA6 |0 \x63\xB0 |0 \x59\xF5 |0 \x5C\x6B |0 \x57\x9F |0 \x57\x7E |0 \x51\xA5 |0 \x63\xAA |0 \x63\xAB |0 \x4F\x5F |0 \x63\xAD |0 \x63\xB2 |0 \x63\xB1 |0 \x63\xB5 |0 \x63\xB7 |0 \x52\xEE |0 \x52\xC7 |0 \x4F\xE9 |0 \x55\x90 |0 \x63\xB6 |0 \x4B\xEF |0 \x52\x85 |0 \x5A\x8A |0 \x63\xB3 |0 \x63\xB4 |0 \x54\xA1 |0 \x63\xBC |0 \x63\xB8 |0 \x53\xC4 |0 \x57\x92 |0 \x63\xBA |0 \x63\xBB |0 \x4E\x8A |0 \x63\xBD |0 \x63\xB9 |0 \x50\xB6 |0 \x5A\x44 |0 \x63\xBE |0 \x55\x95 |0 \x63\xC2 |0 \x63\xC3 |0 \x58\xF5 |0 \x52\x5D |0 \x52\x64 |0 \x63\xC1 |0 \x63\xC0 |0 \x63\xC6 |0 \x58\x51 |0 \x66\x95 |0 \x63\xC9 |0 \x63\xC4 |0 \x4E\xDD |0 \x55\x49 |0 \x4E\xB4 |0 \x58\x73 |0 \x63\xC7 |0 \x63\xC8 |0 \x63\xCD |0 \x63\xCF |0 \x63\xD0 |0 \x63\xCA |0 \x4B\x75 |0 \x63\xCB |0 \x63\xCE |0 \x52\xDA |0 \x63\xC5 |0 \x63\xCC |0 \x63\xD1 |0 \x63\xD3 |0 \x63\xD2 |0 \x63\xD4 |0 \x5D\x99 |0 \x63\xD5 |0 \x63\xD6 |0 \x5C\x73 |0 \x63\xDC |0 \x63\xDD |0 \x50\x77 |0 \x5A\xCF |0 \x5C\x76 |0 \x4A\xE5 |0 \x56\x90 |0 \x63\xD9 |0 \x5C\xC2 |0 \x5C\x6E |0 \x58\xA1 |0 \x52\x6F |0 \x63\xDE |0 \x4E\xBD |0 \x4D\x62 |0 \x63\xDA |0 \x59\x47 |0 \x4D\xA1 |0 \x51\xCE |0 \x5C\xAA |0 \x55\xEA |0 \x63\x8F |0 \x63\xDB |0 \x4C\x96 |0 \x54\xE5 |0 \x52\xF4 |0 \x63\x52 |0 \x52\xFD |0 \x56\x9D |0 \x63\x53 |0 \x5B\x4C |0 \x5A\x8F |0 \x55\xD7 |0 \x48\xB1 |0 \x56\x6E |0 \x57\x8B |0 \x4D\xE9 |0 \x63\x55 |0 \x63\x54 |0 \x5C\x7A |0 \x4D\x79 |0 \x5B\xE5 |0 \x4B\xA7 |0 \x57\x91 |0 \x59\xCA |0 \x49\x46 |0 \x55\xB4 |0 \x4A\x89 |0 \x55\x94 |0 \x50\x6D |0 \x58\xFA |0 \x55\xD1 |0 \x63\x56 |0 \x4E\x62 |0 \x58\x7C |0 \x4D\x4C |0 \x5A\xD6 |0 \x4D\xA5 |0 \x59\x88 |0 \x58\x9D |0 \x4E\xD1 |0 \x63\x57 |0 \x54\xDC |0 \x50\x8E |0 \x49\x97 |0 \x56\x7E |0 \x4E\xC4 |0 \x4E\xC3 |0 \x59\xF9 |0 \x52\x7C |0 \x50\x7C |0 \x4C\xBA |0 \x52\x62 |0 \x4D\xAD |0 \x5A\xA1 |0 \x54\x7E |0 \x52\xAE |0 \x49\xEB |0 \x4D\x71 |0 \x63\x5B |0 \x51\x68 |0 \x5B\x4F |0 \x63\x5C |0 \x63\x5E |0 \x4A\xE6 |0 \x4B\xD3 |0 \x56\x62 |0 \x59\x50 |0 \x4B\x5C |0 \x55\xD8 |0 \x4C\x83 |0 \x55\x85 |0 \x4F\x4B |0 \x57\xBD |0 \x5C\x91 |0 \x58\xA0 |0 \x55\x79 |0 \x4B\xFA |0 \x63\xD7 |0 \x4E\xE1 |0 \x4A\x5E |0 \x55\x70 |0 \x63\xD8 |0 \x4A\x42 |0 \x5F\xCB |0 \x5A\x68 |0 \x5F\xCC |0 \x59\xA1 |0 \x5F\xCD |0 \x4F\xCC |0 \x5F\xCE |0 \x55\xAB |0 \x59\xFB |0 \x4A\x7F |0 \x63\x8B |0 \x52\xE0 |0 \x4F\xA0 |0 \x57\xB1 |0 \x52\xF1 |0 \x4F\xD5 |0 \x53\xA7 |0 \x49\xE2 |0 \x4F\xD2 |0 \x54\x9D |0 \x56\xEA |0 \x4F\x8D |0 \x57\xDC |0 \x55\xB9 |0 \x53\xC0 |0 \x63\x8D |0 \x58\xBB |0 \x5B\x59 |0 \x63\x8E |0 \x55\xF3 |0 \x57\x60 |0 \x51\xC4 |0 \x63\x90 |0 \x51\xC3 |0 \x63\x91 |0 \x63\x99 |0 \x57\x6D |0 \x55\x5D |0 \x59\xD8 |0 \x61\x48 |0 \x5A\x8D |0 \x56\x8B |0 \x53\xF0 |0 \x61\x4C |0 \x61\x47 |0 \x61\x49 |0 \x61\x4A |0 \x61\x4F |0 \x49\xEC |0 \x61\x4B |0 \x4C\xD9 |0 \x61\x4D |0 \x61\x4E |0 \x61\x50 |0 \x4B\x5A |0 \x61\x51 |0 \x61\x53 |0 \x61\x58 |0 \x59\x72 |0 \x61\x56 |0 \x61\x55 |0 \x51\x8C |0 \x61\x57 |0 \x5A\xBF |0 \x61\x52 |0 \x61\x5A |0 \x48\xB5 |0 \x61\x54 |0 \x50\x9A |0 \x61\x59 |0 \x61\x5B |0 \x61\x5E |0 \x61\x5C |0 \x5B\xC4 |0 \x58\x5F |0 \x61\x5D |0 \x61\x5F |0 \x51\xCC |0 \x4B\xEA |0 \x5A\x99 |0 \x54\x6D |0 \x4C\x86 |0 \x4F\xFD |0 \x61\x60 |0 \x61\x61 |0 \x61\x67 |0 \x4A\x88 |0 \x53\xE8 |0 \x4A\xDD |0 \x59\x62 |0 \x61\x68 |0 \x61\x66 |0 \x61\x65 |0 \x61\x63 |0 \x61\x62 |0 \x49\x60 |0 \x5B\x58 |0 \x61\x64 |0 \x61\x6B |0 \x61\x6C |0 \x61\x6A |0 \x68\x9B |0 \x61\x73 |0 \x61\x72 |0 \x54\x56 |0 \x61\x69 |0 \x61\x6E |0 \x61\x70 |0 \x61\x74 |0 \x61\x71 |0 \x61\x6D |0 \x61\x6F |0 \x61\x75 |0 \x61\x76 |0 \x61\x77 |0 \x61\x78 |0 \x61\x7A |0 \x61\x7B |0 \x57\xA0 |0 \x64\x7D |0 \x4A\xA7 |0 \x5B\xDC |0 \x59\x52 |0 \x4A\x52 |0 \x4D\x44 |0 \x5C\x94 |0 \x54\x69 |0 \x4F\xDD |0 \x4D\x4E |0 \x57\xD6 |0 \x49\xED |0 \x5E\x6F |0 \x4E\xB9 |0 \x59\xD0 |0 \x56\x68 |0 \x48\xCC |0 \x58\x90 |0 \x5D\x84 |0 \x4F\x8E |0 \x49\x72 |0 \x55\xCF |0 \x49\xBB |0 \x56\x47 |0 \x4C\x4B |0 \x55\xA5 |0 \x58\x43 |0 \x60\xF7 |0 \x5B\x6A |0 \x60\xFA |0 \x60\xF9 |0 \x53\x61 |0 \x56\xFA |0 \x51\x51 |0 \x60\xF8 |0 \x5B\xE2 |0 \x49\xAE |0 \x5B\xC3 |0 \x4B\x7B |0 \x4A\xF7 |0 \x5B\xA0 |0 \x58\x4F |0 \x48\xEE |0 \x60\xFB |0 \x61\x41 |0 \x4A\x43 |0 \x60\xFC |0 \x60\xFD |0 \x52\x51 |0 \x52\x7D |0 \x61\x42 |0 \x4C\x9A |0 \x4E\x6F |0 \x61\x43 |0 \x52\xBA |0 \x61\x44 |0 \x61\x45 |0 \x61\x46 |0 \x4A\xB0 |0 \x4C\xC8 |0 \x53\xBC |0 \x52\xE9 |0 \x49\xA1 |0 \x58\xD1 |0 \x64\x7B |0 \x4E\x63 |0 \x5A\x77 |0 \x5A\x64 |0 \x4D\x84 |0 \x61\xCE |0 \x5C\x4F |0 \x54\x8D |0 \x49\x73 |0 \x4A\xB1 |0 \x61\xD0 |0 \x58\xF1 |0 \x51\xAD |0 \x61\xCF |0 \x50\x83 |0 \x5A\x46 |0 \x4B\x77 |0 \x61\xD1 |0 \x4B\x8B |0 \x52\x8E |0 \x4C\xFC |0 \x4C\xAD |0 \x53\x73 |0 \x4C\x6F |0 \x61\xD3 |0 \x61\xD2 |0 \x4B\xC7 |0 \x5C\x9A |0 \x57\x45 |0 \x61\xD7 |0 \x61\xD5 |0 \x55\xFB |0 \x50\x55 |0 \x5A\x59 |0 \x61\xD4 |0 \x61\xD6 |0 \x51\x4E |0 \x50\xC7 |0 \x61\xDA |0 \x61\xD9 |0 \x50\xA9 |0 \x51\x6E |0 \x61\xDB |0 \x61\xDC |0 \x61\xDD |0 \x5E\x68 |0 \x59\x73 |0 \x57\x42 |0 \x4F\x48 |0 \x5F\xC2 |0 \x5C\xA4 |0 \x50\x4A |0 \x5E\x6D |0 \x59\xEB |0 \x53\xF9 |0 \x53\x4A |0 \x5F\xC3 |0 \x49\x77 |0 \x60\x4E |0 \x55\xBC |0 \x60\x51 |0 \x4D\x4D |0 \x59\xFC |0 \x4C\xA4 |0 \x4D\xEA |0 \x4A\x7A |0 \x4B\x7C |0 \x5B\x65 |0 \x52\x76 |0 \x58\x72 |0 \x4E\x41 |0 \x63\x94 |0 \x63\x93 |0 \x63\x95 |0 \x57\x85 |0 \x54\xF4 |0 \x4B\x4F |0 \x54\x5F |0 \x63\x97 |0 \x66\xAF |0 \x63\x87 |0 \x4D\x8A |0 \x4B\x51 |0 \x51\xBB |0 \x63\x89 |0 \x63\x88 |0 \x63\x8A |0 \x59\xCC |0 \x61\x8B |0 \x58\xCD |0 \x57\x4E |0 \x59\x86 |0 \x49\xC9 |0 \x49\x8C |0 \x49\x93 |0 \x53\x8E |0 \x5B\x63 |0 \x5A\x50 |0 \x61\x7C |0 \x61\x7D |0 \x59\xDA |0 \x4A\x59 |0 \x49\x6B |0 \x57\x9A |0 \x5B\x98 |0 \x61\x7E |0 \x4F\xB5 |0 \x4A\xFC |0 \x61\x7F |0 \x4D\xDB |0 \x61\x81 |0 \x4E\x52 |0 \x51\xC8 |0 \x61\x82 |0 \x58\xEB |0 \x57\x5D |0 \x61\x83 |0 \x4B\x63 |0 \x53\x67 |0 \x61\x84 |0 \x61\x85 |0 \x5A\x9A |0 \x61\x86 |0 \x59\x4D |0 \x61\x87 |0 \x57\xA1 |0 \x61\x88 |0 \x4B\x62 |0 \x61\x89 |0 \x4E\x75 |0 \x58\xC3 |0 \x61\xDF |0 \x49\x78 |0 \x59\xE3 |0 \x61\xE0 |0 \x4E\xC8 |0 \x54\xCB |0 \x61\xE2 |0 \x66\xFD |0 \x66\xFC |0 \x60\x4F |0 \x61\xE1 |0 \x5B\xBD |0 \x57\x9D |0 \x52\x46 |0 \x62\x63 |0 \x5B\xD1 |0 \x61\xE6 |0 \x61\xE7 |0 \x5A\x67 |0 \x61\xEB |0 \x50\x8D |0 \x61\xEC |0 \x61\xE4 |0 \x4A\x60 |0 \x52\xED |0 \x61\xED |0 \x58\xC2 |0 \x4D\xF5 |0 \x61\xE8 |0 \x4C\x7E |0 \x4E\x53 |0 \x56\xAB |0 \x56\x6B |0 \x61\xE3 |0 \x61\xE5 |0 \x61\xE9 |0 \x61\xEA |0 \x61\xF6 |0 \x61\xF3 |0 \x5A\xF4 |0 \x61\xF2 |0 \x53\x4D |0 \x5B\x9B |0 \x53\x62 |0 \x49\xBF |0 \x61\xEE |0 \x61\xF1 |0 \x51\x4F |0 \x56\x5C |0 \x4B\x41 |0 \x61\xF8 |0 \x4E\xB0 |0 \x61\xF0 |0 \x58\xD3 |0 \x5A\xB8 |0 \x61\xF4 |0 \x4D\x76 |0 \x61\xF5 |0 \x54\x73 |0 \x61\xEF |0 \x5C\x7C |0 \x67\x41 |0 \x61\xF7 |0 \x67\x45 |0 \x61\xFD |0 \x55\xD0 |0 \x51\x55 |0 \x4E\x70 |0 \x50\x76 |0 \x4D\xE2 |0 \x56\x41 |0 \x67\x46 |0 \x67\x43 |0 \x67\x42 |0 \x4E\x76 |0 \x67\x47 |0 \x58\xF3 |0 \x67\x44 |0 \x4D\xDD |0 \x4B\xF6 |0 \x62\x41 |0 \x4B\xB1 |0 \x56\xF0 |0 \x4D\x47 |0 \x58\x42 |0 \x54\x41 |0 \x50\x72 |0 \x4B\xF0 |0 \x61\xF9 |0 \x61\xFA |0 \x61\xFC |0 \x61\xFB |0 \x52\xD4 |0 \x62\x42 |0 \x5A\x61 |0 \x62\x47 |0 \x54\x64 |0 \x58\x44 |0 \x62\x49 |0 \x4D\xB6 |0 \x62\x48 |0 \x4E\x7A |0 \x62\x43 |0 \x62\x44 |0 \x62\x4A |0 \x62\x46 |0 \x57\xF1 |0 \x5A\x66 |0 \x4E\x5C |0 \x5A\xC2 |0 \x52\xF9 |0 \x67\x48 |0 \x58\xFB |0 \x62\x45 |0 \x52\x96 |0 \x62\x4D |0 \x49\x4F |0 \x62\x52 |0 \x4E\xC1 |0 \x62\x4C |0 \x4B\x5F |0 \x54\x8A |0 \x62\x50 |0 \x4F\xA9 |0 \x57\x90 |0 \x4E\x94 |0 \x56\xE7 |0 \x62\x4F |0 \x62\x51 |0 \x58\x47 |0 \x62\x4E |0 \x57\xA8 |0 \x4E\x7D |0 \x4B\x8C |0 \x4F\xE4 |0 \x49\xD1 |0 \x4A\x6D |0 \x49\x59 |0 \x62\x4B |0 \x49\xD0 |0 \x4B\x4C |0 \x4D\x7F |0 \x4B\xE7 |0 \x58\x8C |0 \x62\x57 |0 \x4E\x6C |0 \x54\xC6 |0 \x58\xC9 |0 \x62\x58 |0 \x4A\x8F |0 \x67\x49 |0 \x5A\x9B |0 \x5A\x85 |0 \x67\x4A |0 \x62\x59 |0 \x59\xE1 |0 \x62\x55 |0 \x5A\x7E |0 \x4C\xCF |0 \x62\x53 |0 \x62\x56 |0 \x4C\x7F |0 \x62\x54 |0 \x50\xA1 |0 \x62\x5A |0 \x5A\xB7 |0 \x4A\xC7 |0 \x62\x5B |0 \x4E\x65 |0 \x55\x98 |0 \x55\x86 |0 \x52\xBC |0 \x67\x4B |0 \x51\xFC |0 \x4E\x7B |0 \x50\x4E |0 \x57\xBE |0 \x62\x5C |0 \x50\x56 |0 \x49\x90 |0 \x5A\xF6 |0 \x62\x5E |0 \x67\x4D |0 \x62\x5F |0 \x4D\xA8 |0 \x67\x4C |0 \x62\x5D |0 \x62\x60 |0 \x4D\xB5 |0 \x4B\xAD |0 \x58\xB7 |0 \x48\xC2 |0 \x67\x4E |0 \x67\x4F |0 \x50\xC0 |0 \x62\x61 |0 \x53\x53 |0 \x62\x62 |0 \x5E\xB1 |0 \x67\x50 |0 \x4C\xE9 |0 \x57\xEB |0 \x65\xA6 |0 \x58\xE6 |0 \x55\xF8 |0 \x54\xD5 |0 \x58\x57 |0 \x4A\x69 |0 \x57\xD1 |0 \x4F\x85 |0 \x62\x7E |0 \x4E\x93 |0 \x65\xA7 |0 \x5B\x5D |0 \x53\xDC |0 \x65\xA8 |0 \x65\xA9 |0 \x65\xAB |0 \x65\xAA |0 \x65\xAD |0 \x65\xAC |0 \x4F\x78 |0 \x65\xAE |0 \x51\xBD |0 \x4A\xC0 |0 \x4A\xF6 |0 \x4E\x47 |0 \x66\xE5 |0 \x66\xE4 |0 \x4C\x5F |0 \x56\x9A |0 \x49\x83 |0 \x66\xE6 |0 \x55\x68 |0 \x66\xE7 |0 \x66\xE8 |0 \x55\xD5 |0 \x5F\xCF |0 \x49\xC4 |0 \x5A\xF9 |0 \x53\xCA |0 \x48\xC6 |0 \x4A\xF1 |0 \x54\xD2 |0 \x57\x70 |0 \x50\x58 |0 \x50\x7B |0 \x54\x44 |0 \x5B\xB3 |0 \x50\xA8 |0 \x5F\xD0 |0 \x55\x48 |0 \x59\x90 |0 \x53\x44 |0 \x48\xE6 |0 \x4A\x56 |0 \x54\xC4 |0 \x48\xE1 |0 \x4C\x97 |0 \x53\x9B |0 \x4B\xF2 |0 \x5B\x72 |0 \x4A\x70 |0 \x4E\xBB |0 \x4A\x4D |0 \x4F\xF0 |0 \x48\xD0 |0 \x59\xD5 |0 \x55\xE2 |0 \x5C\x45 |0 \x57\x56 |0 \x4B\xB5 |0 \x50\x59 |0 \x5B\x7B |0 \x4C\xA6 |0 \x53\x77 |0 \x5F\xD1 |0 \x50\x79 |0 \x51\xD4 |0 \x54\x60 |0 \x4E\x44 |0 \x49\x48 |0 \x53\x8B |0 \x53\x9C |0 \x56\xA6 |0 \x49\x47 |0 \x4B\x76 |0 \x52\xA7 |0 \x5F\xD2 |0 \x59\x5A |0 \x4A\x8A |0 \x52\x93 |0 \x4C\x98 |0 \x5B\xF3 |0 \x4B\x43 |0 \x49\xEF |0 \x52\xB3 |0 \x52\xE8 |0 \x50\xAC |0 \x5F\xD3 |0 \x48\xE7 |0 \x53\x64 |0 \x51\x81 |0 \x4D\x75 |0 \x4F\xDB |0 \x57\x78 |0 \x48\xCD |0 \x57\x6F |0 \x5F\xD5 |0 \x4F\xCF |0 \x5C\x5E |0 \x5F\xD4 |0 \x5B\x70 |0 \x48\xDC |0 \x52\xE1 |0 \x51\xA2 |0 \x4E\xEF |0 \x5A\x55 |0 \x50\xB8 |0 \x53\x41 |0 \x49\xA5 |0 \x5A\xF0 |0 \x50\xA7 |0 \x55\xC2 |0 \x5F\xD6 |0 \x5B\x9D |0 \x4D\x50 |0 \x54\xAC |0 \x56\x49 |0 \x5F\xD8 |0 \x50\x5D |0 \x53\xB3 |0 \x5C\x47 |0 \x55\xAF |0 \x52\xC2 |0 \x4A\x76 |0 \x4D\x72 |0 \x5B\xB7 |0 \x65\xFB |0 \x48\xB3 |0 \x50\x87 |0 \x56\xF3 |0 \x57\x7A |0 \x5B\xBE |0 \x51\xCD |0 \x57\xCD |0 \x56\xA1 |0 \x58\xAD |0 \x52\xD2 |0 \x4B\x52 |0 \x5F\xD7 |0 \x5B\x96 |0 \x4E\xB6 |0 \x4E\x73 |0 \x48\xA3 |0 \x53\x52 |0 \x4A\xEB |0 \x5B\x92 |0 \x65\xFC |0 \x5F\xD9 |0 \x57\x46 |0 \x57\x8D |0 \x57\xE5 |0 \x5F\xDB |0 \x57\x51 |0 \x50\xA5 |0 \x5C\x5D |0 \x5F\xDA |0 \x48\xC5 |0 \x4D\xB3 |0 \x55\x73 |0 \x52\xF2 |0 \x4F\xE7 |0 \x49\xB5 |0 \x50\xCB |0 \x56\x91 |0 \x4E\xF0 |0 \x4E\x5B |0 \x4B\x57 |0 \x53\x96 |0 \x5F\xE5 |0 \x5F\xE2 |0 \x4F\xDC |0 \x5F\xDE |0 \x4A\xB6 |0 \x4F\x7D |0 \x5F\xDF |0 \x52\xEC |0 \x58\x66 |0 \x4B\x81 |0 \x4B\xDD |0 \x55\xD9 |0 \x4B\x95 |0 \x5F\xE4 |0 \x5B\x66 |0 \x5F\xE0 |0 \x56\xCC |0 \x53\xFD |0 \x53\x65 |0 \x59\xB3 |0 \x4F\xF1 |0 \x51\xD2 |0 \x56\xBC |0 \x4A\x58 |0 \x4F\x73 |0 \x50\x78 |0 \x57\x66 |0 \x59\x7A |0 \x4A\xEA |0 \x5F\xE3 |0 \x5F\xDC |0 \x5F\xE6 |0 \x65\xFD |0 \x51\xAF |0 \x5F\xE1 |0 \x5B\xBF |0 \x4B\x47 |0 \x49\xF3 |0 \x5F\xE7 |0 \x5F\xF1 |0 \x5F\xEC |0 \x5F\xF0 |0 \x54\xDF |0 \x5C\x82 |0 \x5F\xEE |0 \x52\x89 |0 \x56\xE0 |0 \x49\xE4 |0 \x59\xBD |0 \x5F\xED |0 \x5F\xEA |0 \x57\xD4 |0 \x4A\xA6 |0 \x50\x4B |0 \x4F\xBD |0 \x4F\x72 |0 \x5F\xE8 |0 \x5A\xAD |0 \x5F\xDD |0 \x5F\xE9 |0 \x50\xBE |0 \x5F\xEB |0 \x49\xF2 |0 \x4C\xE8 |0 \x51\xA6 |0 \x4F\x61 |0 \x5F\xF4 |0 \x5F\xF7 |0 \x49\xAA |0 \x4A\xA3 |0 \x4A\xE9 |0 \x55\x46 |0 \x5F\xF5 |0 \x56\x71 |0 \x4C\xE2 |0 \x5F\xF6 |0 \x5F\xF9 |0 \x5F\xF8 |0 \x56\xC1 |0 \x48\xE0 |0 \x4A\xED |0 \x63\x5A |0 \x58\xAE |0 \x49\xEA |0 \x66\x41 |0 \x5F\xF3 |0 \x55\x84 |0 \x5F\xF2 |0 \x48\xD9 |0 \x59\xA0 |0 \x49\x98 |0 \x56\xAE |0 \x5F\xEF |0 \x56\x44 |0 \x5B\x4A |0 \x5F\xFA |0 \x4A\xDC |0 \x52\xA5 |0 \x5F\xFC |0 \x52\x9F |0 \x52\xA0 |0 \x60\x41 |0 \x51\x6C |0 \x5F\xFB |0 \x4F\xEE |0 \x53\xB1 |0 \x4A\x65 |0 \x54\xF5 |0 \x56\x5A |0 \x5F\xFD |0 \x60\x44 |0 \x5C\x52 |0 \x4A\x57 |0 \x51\x63 |0 \x54\x6B |0 \x49\xA4 |0 \x4A\xE8 |0 \x5C\x4B |0 \x52\xEB |0 \x60\x42 |0 \x60\x43 |0 \x60\x45 |0 \x4D\xB2 |0 \x60\x46 |0 \x50\xDD |0 \x55\x63 |0 \x49\xD8 |0 \x54\x87 |0 \x60\x47 |0 \x54\x7C |0 \x60\x48 |0 \x66\x42 |0 \x56\x73 |0 \x60\x4A |0 \x60\x49 |0 \x49\xC0 |0 \x53\x6A |0 \x60\x4B |0 \x5A\xDB |0 \x54\xC0 |0 \x60\x4C |0 \x4F\xEF |0 \x60\x4D |0 \x5B\xA6 |0 \x65\xB6 |0 \x66\x56 |0 \x55\xD4 |0 \x5C\xFB |0 \x4C\xC3 |0 \x4D\x45 |0 \x4C\x65 |0 \x5B\x9F |0 \x4D\x6A |0 \x58\xA6 |0 \x6A\xCC |0 \x4B\x70 |0 \x52\x95 |0 \x4F\xC7 |0 \x66\x57 |0 \x48\xBC |0 \x4F\x6C |0 \x51\x52 |0 \x49\x76 |0 \x4A\x48 |0 \x4C\xD1 |0 \x55\x42 |0 \x4B\xD7 |0 \x66\x58 |0 \x4F\xB3 |0 \x55\xFC |0 \x54\x63 |0 \x5B\x9C |0 \x4C\x94 |0 \x57\xC3 |0 \x5B\x4B |0 \x49\x94 |0 \x66\xB2 |0 \x48\xDE |0 \x66\xB4 |0 \x4B\xB6 |0 \x51\x6F |0 \x6B\x9B |0 \x58\xB0 |0 \x5B\x86 |0 \x57\xD2 |0 \x4F\x90 |0 \x4A\x83 |0 \x4C\xAA |0 \x5B\x56 |0 \x67\x5D |0 \x4B\xCE |0 \x56\x59 |0 \x58\xC1 |0 \x4C\x5D |0 \x66\xB5 |0 \x55\xA8 |0 \x53\x74 |0 \x66\xB8 |0 \x66\xB7 |0 \x51\xC2 |0 \x66\xB6 |0 \x58\xFC |0 \x66\xB9 |0 \x66\xBA |0 \x5C\x86 |0 \x66\xBB |0 \x66\xBC |0 \x53\xEB |0 \x57\xDD |0 \x4E\xC7 |0 \x54\xD4 |0 \x4B\x49 |0 \x4F\xC8 |0 \x5B\xBB |0 \x5A\xE6 |0 \x59\x4E |0 \x58\xF0 |0 \x65\xB7 |0 \x65\xB8 |0 \x65\xB9 |0 \x4D\xB4 |0 \x55\xB0 |0 \x50\x96 |0 \x57\x9B |0 \x65\xBF |0 \x48\xB9 |0 \x65\xBD |0 \x50\xA4 |0 \x65\xBA |0 \x49\xFC |0 \x52\x98 |0 \x4E\x89 |0 \x59\xD6 |0 \x57\xF3 |0 \x65\xBE |0 \x65\xBB |0 \x65\xC2 |0 \x58\xC6 |0 \x5A\x53 |0 \x4A\xB9 |0 \x52\x61 |0 \x5C\x93 |0 \x5B\x71 |0 \x55\xC6 |0 \x65\xC4 |0 \x65\xC3 |0 \x65\xC6 |0 \x65\xC5 |0 \x5B\xE6 |0 \x58\x74 |0 \x65\xCA |0 \x4E\x6E |0 \x4F\x9B |0 \x55\x6E |0 \x65\xCB |0 \x55\x59 |0 \x58\x9F |0 \x65\xC9 |0 \x5A\xCD |0 \x65\xCC |0 \x65\xCE |0 \x57\x8E |0 \x65\xC8 |0 \x65\xCD |0 \x57\xED |0 \x4E\x7E |0 \x4A\x5F |0 \x53\xD4 |0 \x4F\xAF |0 \x57\xF9 |0 \x54\x88 |0 \x4F\xA6 |0 \x65\xCF |0 \x5B\xC6 |0 \x51\x60 |0 \x5A\xDC |0 \x65\xD0 |0 \x58\x5E |0 \x65\xD1 |0 \x55\xED |0 \x53\x4F |0 \x48\xB4 |0 \x65\xD3 |0 \x65\xD2 |0 \x6A\xDE |0 \x52\xB9 |0 \x49\x49 |0 \x63\x7F |0 \x65\xD4 |0 \x55\xEE |0 \x65\xD5 |0 \x65\xD6 |0 \x53\xD7 |0 \x65\xD7 |0 \x65\xD8 |0 \x5A\xBA |0 \x54\x9B |0 \x59\xB6 |0 \x4C\xFB |0 \x65\xC1 |0 \x49\xDB |0 \x51\xFB |0 \x5A\xF7 |0 \x56\xE5 |0 \x5C\x8F |0 \x5A\xC1 |0 \x5A\x70 |0 \x66\x63 |0 \x53\x94 |0 \x4C\x9F |0 \x66\x74 |0 \x56\x57 |0 \x66\x7E |0 \x50\xC9 |0 \x57\x9C |0 \x4A\x4F |0 \x53\xD9 |0 \x66\x9D |0 \x52\xBD |0 \x57\xB3 |0 \x52\xA8 |0 \x49\x5E |0 \x5A\xFC |0 \x55\xF4 |0 \x5B\xEB |0 \x53\xD2 |0 \x4B\xE3 |0 \x4E\x9B |0 \x58\xDF |0 \x55\x51 |0 \x5A\xD2 |0 \x54\xA7 |0 \x4C\xCA |0 \x64\xBD |0 \x55\x5C |0 \x64\xBA |0 \x50\xED |0 \x58\xD2 |0 \x49\xC3 |0 \x4A\xE4 |0 \x64\xBB |0 \x5B\x68 |0 \x4B\xC4 |0 \x64\xBC |0 \x55\xF7 |0 \x4C\xDB |0 \x56\xF4 |0 \x50\xB3 |0 \x59\x8F |0 \x64\xBE |0 \x64\xC1 |0 \x4D\xBB |0 \x49\x4D |0 \x4F\x7C |0 \x65\xBC |0 \x64\xC2 |0 \x64\xC5 |0 \x64\xCA |0 \x64\xCB |0 \x56\x69 |0 \x48\xE4 |0 \x4E\xAA |0 \x4D\x59 |0 \x64\xC0 |0 \x57\x98 |0 \x64\xC9 |0 \x57\xF5 |0 \x5B\x8E |0 \x51\x76 |0 \x64\xC3 |0 \x52\x56 |0 \x4D\x9C |0 \x5B\xA5 |0 \x64\xC7 |0 \x55\xDF |0 \x5A\xE5 |0 \x64\xBF |0 \x64\xC4 |0 \x64\xC6 |0 \x54\x59 |0 \x4C\x84 |0 \x64\xC8 |0 \x50\x7D |0 \x64\xD1 |0 \x64\xD6 |0 \x64\xD4 |0 \x4E\xDB |0 \x4E\xCE |0 \x64\xDA |0 \x64\xDD |0 \x64\xD9 |0 \x49\x9B |0 \x48\xD7 |0 \x52\xB2 |0 \x4C\xCB |0 \x53\xE1 |0 \x54\xBD |0 \x54\xE0 |0 \x64\xCE |0 \x64\xD3 |0 \x64\xD5 |0 \x4D\x92 |0 \x64\xD7 |0 \x5C\x96 |0 \x52\xFA |0 \x64\xDB |0 \x49\xE8 |0 \x64\xD0 |0 \x4E\xEC |0 \x50\x62 |0 \x64\xCC |0 \x5B\xF8 |0 \x51\x99 |0 \x49\xF0 |0 \x64\xDE |0 \x55\xC0 |0 \x64\xD8 |0 \x5B\x44 |0 \x49\x8B |0 \x5B\x5B |0 \x64\xCD |0 \x64\xCF |0 \x4B\xAF |0 \x64\xD2 |0 \x64\xDC |0 \x50\xB7 |0 \x55\xF6 |0 \x56\x48 |0 \x53\xDB |0 \x50\xF4 |0 \x64\xE8 |0 \x58\xA2 |0 \x64\xF1 |0 \x5B\xE9 |0 \x64\xDF |0 \x64\xE0 |0 \x59\x9A |0 \x4D\xCA |0 \x4C\xF8 |0 \x4C\xF0 |0 \x5A\xD3 |0 \x64\xEE |0 \x64\xED |0 \x64\xEB |0 \x4D\x91 |0 \x56\xD1 |0 \x64\xE5 |0 \x57\xA5 |0 \x50\x93 |0 \x48\xB7 |0 \x64\xF0 |0 \x64\xEF |0 \x5C\x60 |0 \x64\xE3 |0 \x57\x49 |0 \x55\x43 |0 \x4E\x58 |0 \x4F\x7B |0 \x64\xE9 |0 \x64\xE1 |0 \x64\xE2 |0 \x64\xE4 |0 \x4B\x55 |0 \x64\xE6 |0 \x54\x65 |0 \x64\xEA |0 \x64\xEC |0 \x4F\x50 |0 \x5C\x4E |0 \x64\xF7 |0 \x64\xF4 |0 \x57\x50 |0 \x64\xF5 |0 \x51\x5A |0 \x64\xE7 |0 \x52\x57 |0 \x48\xEF |0 \x64\xF3 |0 \x64\xF6 |0 \x4D\x43 |0 \x55\x72 |0 \x52\x6E |0 \x57\xDF |0 \x50\xE5 |0 \x56\x94 |0 \x56\xDC |0 \x58\xB4 |0 \x55\xE0 |0 \x64\xF2 |0 \x4E\xEB |0 \x64\xF8 |0 \x52\x7E |0 \x53\xE4 |0 \x4D\x98 |0 \x48\xF3 |0 \x5C\x78 |0 \x4E\xAB |0 \x53\x90 |0 \x56\xC3 |0 \x65\x46 |0 \x55\x4D |0 \x65\x42 |0 \x50\xE1 |0 \x50\x63 |0 \x64\xFD |0 \x4D\x77 |0 \x64\xFA |0 \x65\x44 |0 \x59\xCD |0 \x65\x43 |0 \x5B\xB1 |0 \x5C\x55 |0 \x65\x47 |0 \x4F\x57 |0 \x64\xFB |0 \x64\xFC |0 \x65\x41 |0 \x57\x76 |0 \x59\xAB |0 \x65\x52 |0 \x65\x49 |0 \x4A\xA9 |0 \x4A\xBA |0 \x65\x4B |0 \x58\xA7 |0 \x65\x45 |0 \x4A\x9F |0 \x65\x4C |0 \x50\xE2 |0 \x65\x4A |0 \x65\x59 |0 \x65\x58 |0 \x65\x4E |0 \x64\xF9 |0 \x65\x48 |0 \x50\x4C |0 \x65\x51 |0 \x65\x5A |0 \x51\xA4 |0 \x65\x4F |0 \x4C\xC4 |0 \x65\x4D |0 \x5A\x7C |0 \x65\x54 |0 \x65\x55 |0 \x65\x57 |0 \x65\x67 |0 \x50\xC5 |0 \x65\x65 |0 \x65\x50 |0 \x65\x5B |0 \x48\xF0 |0 \x65\x5C |0 \x5B\x45 |0 \x65\x5E |0 \x65\x5F |0 \x65\x61 |0 \x51\x92 |0 \x54\xB5 |0 \x65\x5D |0 \x65\x62 |0 \x65\x63 |0 \x65\x53 |0 \x65\x56 |0 \x4E\x51 |0 \x65\x60 |0 \x4E\xF6 |0 \x65\x64 |0 \x65\x66 |0 \x65\x6A |0 \x65\x6E |0 \x49\xDA |0 \x65\x68 |0 \x4C\x4E |0 \x65\x6B |0 \x65\x6C |0 \x5B\x61 |0 \x52\xA2 |0 \x65\x78 |0 \x4D\xE0 |0 \x65\x69 |0 \x5A\x43 |0 \x65\x74 |0 \x65\x77 |0 \x65\x70 |0 \x65\x6F |0 \x54\x61 |0 \x65\x72 |0 \x65\x79 |0 \x4A\x68 |0 \x65\x73 |0 \x58\x91 |0 \x65\x6D |0 \x4A\x98 |0 \x65\x76 |0 \x65\x7A |0 \x56\xB3 |0 \x58\x4D |0 \x65\x75 |0 \x65\x7C |0 \x65\x7B |0 \x65\x7E |0 \x65\x71 |0 \x65\x7D |0 \x65\x7F |0 \x52\x6A |0 \x54\x57 |0 \x4A\xCD |0 \x4E\x56 |0 \x58\xBF |0 \x66\xA2 |0 \x53\x57 |0 \x5A\x9C |0 \x66\xA3 |0 \x66\xA4 |0 \x53\xDA |0 \x50\x8F |0 \x66\xA5 |0 \x66\xA6 |0 \x58\xA9 |0 \x54\x58 |0 \x4C\xE7 |0 \x66\xA7 |0 \x5B\xB8 |0 \x5B\x9E |0 \x4A\xCA |0 \x49\xBC |0 \x57\xE3 |0 \x53\xE6 |0 \x57\x82 |0 \x4A\xF4 |0 \x56\x60 |0 \x4E\xDE |0 \x65\x83 |0 \x65\x84 |0 \x59\x8B |0 \x65\x86 |0 \x4A\xF8 |0 \x65\x85 |0 \x59\x53 |0 \x55\xE1 |0 \x49\xCF |0 \x65\x89 |0 \x65\x87 |0 \x65\x88 |0 \x5B\xB2 |0 \x65\x8A |0 \x65\x8B |0 \x65\x8C |0 \x65\x8D |0 \x66\xAE |0 \x53\x59 |0 \x4B\xCD |0 \x59\xF2 |0 \x4B\x8F |0 \x4E\x79 |0 \x66\xB0 |0 \x59\xE2 |0 \x57\xE2 |0 \x52\xB7 |0 \x52\x5F |0 \x4B\xBD |0 \x5C\xB8 |0 \x49\x68 |0 \x49\x6F |0 \x49\x71 |0 \x53\x9F |0 \x49\x70 |0 \x52\x4B |0 \x5B\x51 |0 \x66\x44 |0 \x4D\xC0 |0 \x56\xB9 |0 \x66\x45 |0 \x66\x47 |0 \x66\x48 |0 \x66\x46 |0 \x66\x49 |0 \x66\x4B |0 \x66\x4A |0 \x66\x4C |0 \x55\xCE |0 \x5C\xB4 |0 \x52\x92 |0 \x52\x45 |0 \x53\xF7 |0 \x66\x4D |0 \x52\xC9 |0 \x66\x4E |0 \x66\x4F |0 \x66\x50 |0 \x4C\x75 |0 \x4C\x9B |0 \x66\x51 |0 \x54\x83 |0 \x66\x53 |0 \x4D\xA3 |0 \x59\x96 |0 \x48\xB0 |0 \x66\x52 |0 \x66\x54 |0 \x4B\x4A |0 \x51\xC7 |0 \x54\x89 |0 \x66\x55 |0 \x56\x4E |0 \x62\x7F |0 \x5A\x60 |0 \x5D\x7B |0 \x57\x41 |0 \x5B\xAC |0 \x54\x94 |0 \x5D\x81 |0 \x4E\x84 |0 \x4D\xB9 |0 \x62\x83 |0 \x58\x4B |0 \x62\x81 |0 \x55\x67 |0 \x4D\xB8 |0 \x59\x54 |0 \x62\x82 |0 \x54\xE9 |0 \x4D\x4F |0 \x4F\x4D |0 \x4A\x78 |0 \x57\xDA |0 \x56\xBF |0 \x62\x89 |0 \x62\x8A |0 \x57\x95 |0 \x56\xAC |0 \x4E\xB2 |0 \x62\x8B |0 \x62\x8C |0 \x58\xD9 |0 \x53\xFA |0 \x4C\x7A |0 \x54\x7F |0 \x59\xC9 |0 \x57\xD5 |0 \x62\x85 |0 \x62\x8D |0 \x55\x93 |0 \x4A\x61 |0 \x62\x88 |0 \x53\xE2 |0 \x62\x86 |0 \x67\x53 |0 \x62\x87 |0 \x55\x53 |0 \x53\x87 |0 \x4D\x55 |0 \x52\x5B |0 \x62\x84 |0 \x53\x5D |0 \x51\x44 |0 \x51\xD8 |0 \x49\xD6 |0 \x62\x8E |0 \x4E\x46 |0 \x52\xAC |0 \x62\x91 |0 \x4F\xD9 |0 \x62\x9C |0 \x62\x96 |0 \x4D\xD2 |0 \x4C\x70 |0 \x5A\x6D |0 \x5B\xCD |0 \x5B\x73 |0 \x4D\x61 |0 \x5B\x54 |0 \x59\x78 |0 \x58\xB8 |0 \x54\x97 |0 \x54\xA9 |0 \x49\xB3 |0 \x52\x7A |0 \x62\x8F |0 \x62\x9D |0 \x62\x90 |0 \x4C\x48 |0 \x62\x98 |0 \x62\x95 |0 \x4C\x5A |0 \x53\x42 |0 \x62\x97 |0 \x53\x7D |0 \x49\xA7 |0 \x53\xFB |0 \x52\xDF |0 \x5C\x42 |0 \x50\xE0 |0 \x62\x9A |0 \x62\x9B |0 \x62\x9E |0 \x56\xA8 |0 \x62\x94 |0 \x5A\x5E |0 \x49\x63 |0 \x67\x54 |0 \x62\x92 |0 \x62\x93 |0 \x62\x99 |0 \x58\xB9 |0 \x53\xC2 |0 \x5A\xF2 |0 \x62\x9F |0 \x4F\x81 |0 \x62\xA6 |0 \x62\xA5 |0 \x59\x94 |0 \x62\xA2 |0 \x62\xA8 |0 \x54\xF6 |0 \x58\x54 |0 \x62\xA7 |0 \x62\xAD |0 \x51\xE4 |0 \x4B\xB3 |0 \x4F\x93 |0 \x62\xA1 |0 \x4D\xE8 |0 \x62\xA9 |0 \x62\xAB |0 \x4B\xFC |0 \x5B\xDD |0 \x62\xB1 |0 \x62\xAC |0 \x62\xA0 |0 \x4E\x8F |0 \x57\x7D |0 \x54\x42 |0 \x53\x69 |0 \x51\x98 |0 \x62\xA3 |0 \x54\x53 |0 \x4F\x4C |0 \x4F\x5D |0 \x62\xA4 |0 \x5C\x67 |0 \x49\xE1 |0 \x62\xAA |0 \x4E\xC2 |0 \x62\xAE |0 \x4E\x8C |0 \x62\xAF |0 \x53\x48 |0 \x62\xB0 |0 \x5B\x84 |0 \x50\x43 |0 \x62\xB9 |0 \x62\xB6 |0 \x62\xBA |0 \x62\xBC |0 \x53\xD5 |0 \x4D\xC5 |0 \x50\xCA |0 \x4C\xA0 |0 \x62\xB3 |0 \x5A\xA0 |0 \x4D\xA2 |0 \x4F\x9F |0 \x62\xBB |0 \x57\x5F |0 \x52\xF8 |0 \x58\x9C |0 \x55\x87 |0 \x5A\x5F |0 \x58\x71 |0 \x62\xB2 |0 \x62\xB7 |0 \x62\xB8 |0 \x56\xE8 |0 \x56\xCD |0 \x50\xD3 |0 \x62\xB4 |0 \x51\x50 |0 \x62\xB5 |0 \x57\xCF |0 \x4E\x61 |0 \x4B\x73 |0 \x54\xF2 |0 \x4F\x47 |0 \x5B\x67 |0 \x55\x4C |0 \x4C\xA1 |0 \x62\xC9 |0 \x62\xCB |0 \x59\x64 |0 \x59\xB9 |0 \x4D\xAC |0 \x4D\xD3 |0 \x62\xC2 |0 \x4B\x8E |0 \x5C\x6D |0 \x62\xBF |0 \x58\x9E |0 \x62\xBE |0 \x51\x7C |0 \x56\xC9 |0 \x55\xE6 |0 \x52\xD6 |0 \x56\xD3 |0 \x62\xC7 |0 \x62\xC6 |0 \x62\xC0 |0 \x62\xC3 |0 \x4B\x4D |0 \x5A\x79 |0 \x62\xC5 |0 \x59\xF8 |0 \x4A\xE2 |0 \x4E\x54 |0 \x55\x8F |0 \x4A\xBD |0 \x4E\x8D |0 \x59\x6D |0 \x56\xEC |0 \x67\x55 |0 \x54\x86 |0 \x5A\xA7 |0 \x62\xCA |0 \x5C\x75 |0 \x62\xC1 |0 \x4F\x45 |0 \x62\xC4 |0 \x5A\x87 |0 \x62\xC8 |0 \x55\x99 |0 \x62\xBD |0 \x5A\x86 |0 \x54\x9F |0 \x4B\xC8 |0 \x5A\xFB |0 \x49\xB2 |0 \x62\xD6 |0 \x57\xC1 |0 \x62\xCC |0 \x57\xBB |0 \x4C\xDA |0 \x62\xD5 |0 \x50\x6A |0 \x5A\x6E |0 \x52\x8D |0 \x53\x68 |0 \x62\xD7 |0 \x57\x64 |0 \x62\xCE |0 \x62\xD3 |0 \x62\xD4 |0 \x4D\xFD |0 \x58\x87 |0 \x5B\x5F |0 \x62\xD1 |0 \x62\xCF |0 \x62\xCD |0 \x57\x86 |0 \x55\xA9 |0 \x50\xA2 |0 \x4F\x46 |0 \x62\xD2 |0 \x4C\xC7 |0 \x62\xE6 |0 \x5A\xB3 |0 \x62\xDA |0 \x51\x90 |0 \x62\xE8 |0 \x59\xE6 |0 \x62\xDE |0 \x62\xDF |0 \x58\x4A |0 \x56\x7D |0 \x62\xD9 |0 \x62\xD0 |0 \x62\xE4 |0 \x54\xDB |0 \x62\xE2 |0 \x52\xE6 |0 \x62\xE1 |0 \x62\xE0 |0 \x4A\x9D |0 \x62\xE7 |0 \x4B\x82 |0 \x5C\x6C |0 \x62\xE5 |0 \x4E\x4C |0 \x5C\x72 |0 \x56\xCE |0 \x66\x99 |0 \x62\xE3 |0 \x4D\x97 |0 \x5B\xCC |0 \x62\xD8 |0 \x62\xDB |0 \x51\xF9 |0 \x62\xDD |0 \x51\xCA |0 \x50\xC3 |0 \x51\xCF |0 \x49\x96 |0 \x56\xB1 |0 \x4B\x6E |0 \x62\xEE |0 \x53\xAE |0 \x53\xE0 |0 \x62\xF4 |0 \x51\xA8 |0 \x50\xEB |0 \x59\x7D |0 \x62\xED |0 \x52\xAD |0 \x62\xEC |0 \x62\xF5 |0 \x62\xF3 |0 \x51\xFD |0 \x62\xDC |0 \x62\xEF |0 \x55\xFD |0 \x5B\x64 |0 \x62\xF0 |0 \x59\x9B |0 \x62\xEA |0 \x62\xEB |0 \x62\xF1 |0 \x57\xAA |0 \x53\x6B |0 \x54\x51 |0 \x51\xB9 |0 \x62\xE9 |0 \x51\x6A |0 \x56\xB5 |0 \x4A\x51 |0 \x62\xFA |0 \x62\xF2 |0 \x62\xF9 |0 \x62\xFC |0 \x62\xFB |0 \x4A\x6E |0 \x4A\x5A |0 \x62\xF6 |0 \x62\xF8 |0 \x62\xF7 |0 \x53\x8D |0 \x50\xBC |0 \x5A\xE7 |0 \x63\x42 |0 \x48\xC3 |0 \x63\x44 |0 \x63\x43 |0 \x4E\xA3 |0 \x63\x45 |0 \x63\x41 |0 \x62\xFD |0 \x49\x95 |0 \x63\x48 |0 \x63\x49 |0 \x63\x46 |0 \x63\x47 |0 \x63\x4A |0 \x53\xD8 |0 \x63\x4B |0 \x63\x4D |0 \x63\x4C |0 \x63\x4F |0 \x63\x4E |0 \x4D\x81 |0 \x63\x50 |0 \x63\x51 |0 \x4E\x91 |0 \x66\xE0 |0 \x52\x91 |0 \x4B\x66 |0 \x4E\x72 |0 \x51\x8A |0 \x5A\xED |0 \x4F\xC3 |0 \x5C\x66 |0 \x5A\xD5 |0 \x49\xD2 |0 \x66\xBD |0 \x65\xC0 |0 \x51\xAE |0 \x4A\xB5 |0 \x59\x77 |0 \x4A\x54 |0 \x54\xB1 |0 \x50\x5B |0 \x66\xBF |0 \x5B\xCA |0 \x66\xBE |0 \x66\xC0 |0 \x66\xC4 |0 \x4F\xE5 |0 \x56\xBE |0 \x53\x7A |0 \x4F\xBB |0 \x66\xC5 |0 \x49\x9F |0 \x66\xC3 |0 \x5B\x48 |0 \x4B\x84 |0 \x66\xC1 |0 \x51\x56 |0 \x4A\x84 |0 \x66\xC2 |0 \x56\x58 |0 \x50\xC2 |0 \x56\xFD |0 \x51\x72 |0 \x66\xC7 |0 \x4D\xE5 |0 \x50\xD2 |0 \x5B\xF1 |0 \x59\x6C |0 \x50\x5E |0 \x4C\x53 |0 \x55\x75 |0 \x66\xC6 |0 \x4E\x83 |0 \x56\xCB |0 \x4F\x9E |0 \x54\xC7 |0 \x58\x49 |0 \x57\x8A |0 \x53\x8C |0 \x4C\x8A |0 \x59\x69 |0 \x4D\xB7 |0 \x66\xC8 |0 \x66\xC9 |0 \x4E\x60 |0 \x66\xCA |0 \x66\xE1 |0 \x49\x5A |0 \x4C\x79 |0 \x4F\x59 |0 \x66\xCB |0 \x59\x87 |0 \x66\xCC |0 \x54\xBA |0 \x66\xD0 |0 \x66\xD2 |0 \x4E\x6D |0 \x4E\xE4 |0 \x66\xCE |0 \x55\x57 |0 \x52\x5A |0 \x66\xE2 |0 \x5B\x75 |0 \x66\xCF |0 \x5B\xF2 |0 \x66\xD1 |0 \x66\xCD |0 \x66\xD3 |0 \x66\xD4 |0 \x55\x5F |0 \x58\x48 |0 \x58\xDB |0 \x59\x4C |0 \x54\xDA |0 \x66\xD5 |0 \x57\xF4 |0 \x55\xEB |0 \x66\xD9 |0 \x66\xD8 |0 \x48\xBD |0 \x66\xD6 |0 \x66\xD7 |0 \x66\xE3 |0 \x54\xBB |0 \x51\x67 |0 \x66\xDB |0 \x59\x81 |0 \x66\xDA |0 \x5A\xEE |0 \x66\xDC |0 \x5E\x66 |0 \x66\xDD |0 \x49\x4C |0 \x66\xDE |0 \x66\xDF |0 \x5C\x46 |0 \x53\x60 |0 \x66\x5C |0 \x48\xAD |0 \x4F\xF3 |0 \x4C\xB7 |0 \x59\xAE |0 \x48\xD5 |0 \x4B\x9A |0 \x5C\xB2 |0 \x56\x4C |0 \x62\x7D |0 \x53\xAB |0 \x48\xE5 |0 \x53\x66 |0 \x66\x59 |0 \x66\x5A |0 \x66\x5B |0 \x59\x60 |0 \x53\x43 |0 \x65\xF1 |0 \x52\xB1 |0 \x52\xB4 |0 \x50\xCD |0 \x65\xF2 |0 \x52\xC0 |0 \x57\xEE |0 \x65\xEF |0 \x65\xF3 |0 \x55\x9D |0 \x54\x43 |0 \x56\xD7 |0 \x57\xFD |0 \x65\xF4 |0 \x65\xF5 |0 \x58\x4C |0 \x50\xE6 |0 \x65\xF6 |0 \x4B\xBE |0 \x65\xF7 |0 \x65\xF8 |0 \x65\xF9 |0 \x65\xFA |0 \x65\xF0 |0 \x54\xAD |0 \x61\x8C |0 \x4C\x58 |0 \x61\x8D |0 \x61\x8E |0 \x5C\x54 |0 \x61\x8F |0 \x61\x90 |0 \x5A\x6C |0 \x61\x92 |0 \x50\x92 |0 \x61\x91 |0 \x4B\x72 |0 \x49\x57 |0 \x61\x94 |0 \x61\x93 |0 \x4D\xFB |0 \x61\x95 |0 \x4D\x57 |0 \x4F\xD0 |0 \x52\xFB |0 \x4D\xDC |0 \x4F\x66 |0 \x61\x96 |0 \x61\x98 |0 \x4B\xBF |0 \x58\x61 |0 \x55\xA7 |0 \x61\x97 |0 \x5B\x99 |0 \x5A\x9D |0 \x61\x99 |0 \x61\x9D |0 \x61\x9A |0 \x61\x9B |0 \x50\xE9 |0 \x61\x9F |0 \x61\xA0 |0 \x50\xC6 |0 \x61\x9C |0 \x61\x9E |0 \x61\xA4 |0 \x51\x74 |0 \x61\xA2 |0 \x61\xA7 |0 \x49\xFD |0 \x61\xA1 |0 \x52\x6D |0 \x49\xC1 |0 \x61\xA6 |0 \x61\xA5 |0 \x61\xA3 |0 \x61\xA8 |0 \x61\xAA |0 \x58\xC8 |0 \x5B\xEC |0 \x52\x48 |0 \x61\xAB |0 \x58\x77 |0 \x61\xAD |0 \x4D\xEE |0 \x65\x81 |0 \x61\xAC |0 \x61\xA9 |0 \x4E\x4B |0 \x5A\xB2 |0 \x61\xAF |0 \x61\xAE |0 \x65\x82 |0 \x61\xB0 |0 \x61\xB1 |0 \x61\xB2 |0 \x56\xA0 |0 \x61\xB3 |0 \x61\xB4 |0 \x58\xFD |0 \x51\xC9 |0 \x5A\x92 |0 \x57\x96 |0 \x64\x81 |0 \x64\x82 |0 \x4F\xC0 |0 \x51\xE9 |0 \x64\x85 |0 \x64\x84 |0 \x57\x87 |0 \x52\x55 |0 \x64\x83 |0 \x4E\x57 |0 \x58\x76 |0 \x51\x82 |0 \x64\x8A |0 \x64\x89 |0 \x64\x95 |0 \x49\xA2 |0 \x64\x8B |0 \x64\x87 |0 \x64\x8D |0 \x64\x8C |0 \x55\x5A |0 \x5B\x85 |0 \x64\x86 |0 \x4C\x49 |0 \x64\x88 |0 \x64\x8F |0 \x64\x94 |0 \x5B\xE8 |0 \x64\x8E |0 \x64\x93 |0 \x64\x92 |0 \x48\xDF |0 \x64\x96 |0 \x54\x93 |0 \x50\xC4 |0 \x50\xEC |0 \x51\x91 |0 \x64\x91 |0 \x64\x97 |0 \x56\x97 |0 \x64\xA1 |0 \x64\xA0 |0 \x5C\x61 |0 \x64\x9B |0 \x64\x9A |0 \x64\x9C |0 \x64\x98 |0 \x64\x9F |0 \x64\x9E |0 \x64\x9D |0 \x51\x75 |0 \x54\x79 |0 \x53\x9E |0 \x53\x63 |0 \x54\x8E |0 \x64\xA2 |0 \x64\xA5 |0 \x64\xA4 |0 \x64\xA6 |0 \x4D\xF6 |0 \x64\x99 |0 \x64\xA3 |0 \x54\xEF |0 \x55\x4A |0 \x64\xA8 |0 \x4D\x86 |0 \x59\x9F |0 \x64\xA7 |0 \x64\xA9 |0 \x64\xAC |0 \x64\xAD |0 \x51\x47 |0 \x64\xAE |0 \x64\xAF |0 \x64\xAB |0 \x64\xB3 |0 \x64\xAA |0 \x64\xB0 |0 \x64\xB4 |0 \x64\xB1 |0 \x64\xB2 |0 \x64\xB6 |0 \x64\xB5 |0 \x4D\x6F |0 \x68\xAB |0 \x68\xAC |0 \x53\xAF |0 \x48\xE9 |0 \x54\xBE |0 \x57\x7F |0 \x57\xCC |0 \x65\xB0 |0 \x65\xB1 |0 \x53\xBE |0 \x4A\xC8 |0 \x65\xB2 |0 \x5B\x88 |0 \x5F\x9A |0 \x65\xB3 |0 \x65\xB4 |0 \x65\xB5 |0 \x4C\xC9 |0 \x60\x50 |0 \x55\x96 |0 \x56\xEF |0 \x55\x9B |0 \x55\x9C |0 \x5A\x63 |0 \x56\x46 |0 \x4C\xA5 |0 \x68\xAD |0 \x49\x62 |0 \x63\x58 |0 \x56\xEE |0 \x5A\x69 |0 \x4E\xD6 |0 \x55\x8B |0 \x4B\x88 |0 \x52\xCF |0 \x4B\x8A |0 \x67\xAD |0 \x4E\x4D |0 \x64\x7E |0 \x67\xAE |0 \x4A\x49 |0 \x67\xB1 |0 \x67\xB0 |0 \x4F\x88 |0 \x67\xAF |0 \x57\xB6 |0 \x53\x6F |0 \x51\x95 |0 \x5E\x6E |0 \x67\xB2 |0 \x58\xF2 |0 \x51\xD3 |0 \x53\xE7 |0 \x4C\x4C |0 \x67\xB3 |0 \x4A\x8C |0 \x4E\x9C |0 \x67\xB4 |0 \x64\x7C |0 \x67\xB5 |0 \x4F\x4E |0 \x69\x83 |0 \x55\xE7 |0 \x59\xC8 |0 \x68\xD9 |0 \x68\xDA |0 \x68\xDB |0 \x51\x66 |0 \x4C\xEC |0 \x4F\xCD |0 \x68\xDD |0 \x53\x51 |0 \x68\xDC |0 \x59\x92 |0 \x68\xDF |0 \x48\xCB |0 \x4F\x8B |0 \x59\xDE |0 \x68\xDE |0 \x4A\xAE |0 \x4C\x89 |0 \x68\xE5 |0 \x68\xE4 |0 \x53\xA2 |0 \x68\xE0 |0 \x68\xE1 |0 \x4A\xC2 |0 \x68\xE2 |0 \x5B\x8F |0 \x56\xDA |0 \x4F\xD1 |0 \x4E\xB1 |0 \x68\xE7 |0 \x68\xE6 |0 \x68\xE3 |0 \x49\xA0 |0 \x5B\xA1 |0 \x5A\x58 |0 \x4F\xB6 |0 \x54\xAB |0 \x68\xE9 |0 \x59\x98 |0 \x5B\xCB |0 \x4D\xDA |0 \x68\xE8 |0 \x4B\xBA |0 \x57\x54 |0 \x53\xA5 |0 \x51\x41 |0 \x68\xEA |0 \x68\xED |0 \x68\xEC |0 \x68\xEF |0 \x68\xEB |0 \x4E\x5E |0 \x68\xEE |0 \x56\xB4 |0 \x68\xF1 |0 \x4A\x75 |0 \x49\x74 |0 \x68\xF2 |0 \x68\xF3 |0 \x68\xF5 |0 \x4A\xE0 |0 \x68\xF0 |0 \x68\xF6 |0 \x68\xF9 |0 \x68\xF7 |0 \x68\xF4 |0 \x68\xFC |0 \x68\xF8 |0 \x68\xFB |0 \x68\xFD |0 \x69\x41 |0 \x57\xC0 |0 \x69\x44 |0 \x69\x43 |0 \x51\x97 |0 \x68\xFA |0 \x55\xDC |0 \x4A\xF0 |0 \x49\x92 |0 \x56\xB0 |0 \x69\x46 |0 \x69\x47 |0 \x69\x4C |0 \x5B\x6E |0 \x69\x49 |0 \x54\xB2 |0 \x69\x42 |0 \x69\x4B |0 \x69\x48 |0 \x69\x45 |0 \x69\x4A |0 \x48\xA8 |0 \x69\x4D |0 \x69\x4F |0 \x69\x51 |0 \x69\x50 |0 \x69\x4E |0 \x59\x42 |0 \x69\x52 |0 \x69\x53 |0 \x4D\x90 |0 \x4B\x67 |0 \x48\xD6 |0 \x48\xD8 |0 \x5A\xEC |0 \x4B\x64 |0 \x4F\x74 |0 \x4E\x6A |0 \x68\xA6 |0 \x4C\xDD |0 \x68\xA7 |0 \x48\xA7 |0 \x68\xA8 |0 \x57\x8F |0 \x68\xA9 |0 \x68\xAA |0 \x53\xA3 |0 \x5B\xE4 |0 \x69\x85 |0 \x69\x86 |0 \x52\x94 |0 \x5A\x7B |0 \x5B\xD0 |0 \x53\x89 |0 \x5A\x4F |0 \x59\xE5 |0 \x67\xC0 |0 \x48\xBA |0 \x5B\x55 |0 \x59\x6E |0 \x4E\xDF |0 \x4D\xCF |0 \x50\x99 |0 \x4C\xC6 |0 \x4B\x61 |0 \x53\x6C |0 \x55\xA1 |0 \x52\x6B |0 \x67\xC1 |0 \x52\xBE |0 \x4B\xA1 |0 \x67\x8D |0 \x52\x44 |0 \x5B\xB0 |0 \x58\x81 |0 \x67\x90 |0 \x53\x6E |0 \x4B\xDB |0 \x55\xA0 |0 \x67\x8E |0 \x67\x91 |0 \x67\x92 |0 \x52\x5C |0 \x50\x54 |0 \x67\x8F |0 \x67\x95 |0 \x67\x93 |0 \x5B\x87 |0 \x52\x7F |0 \x67\x94 |0 \x67\x97 |0 \x5B\x43 |0 \x59\x43 |0 \x67\x96 |0 \x52\x70 |0 \x67\x98 |0 \x50\x95 |0 \x4F\xEB |0 \x67\x99 |0 \x56\xF6 |0 \x59\x7B |0 \x5C\x65 |0 \x5B\x97 |0 \x67\x9D |0 \x67\x9C |0 \x67\x9A |0 \x67\x9B |0 \x67\x9E |0 \x4F\xA5 |0 \x56\x4F |0 \x67\xA0 |0 \x4B\xBC |0 \x67\xA1 |0 \x52\xBF |0 \x67\x9F |0 \x4F\x7E |0 \x49\xC6 |0 \x4B\xC2 |0 \x67\xA4 |0 \x5C\xB9 |0 \x67\xA2 |0 \x67\xA5 |0 \x52\x8A |0 \x4A\x93 |0 \x67\xA6 |0 \x67\xA3 |0 \x58\x59 |0 \x67\xA7 |0 \x51\xF6 |0 \x67\xA8 |0 \x67\xA9 |0 \x5F\xAA |0 \x53\xB2 |0 \x54\x66 |0 \x5B\xF4 |0 \x4B\x69 |0 \x56\x52 |0 \x67\xAA |0 \x57\x4B |0 \x67\xAB |0 \x5B\x50 |0 \x67\xAC |0 \x6B\xC3 |0 \x5E\x67 |0 \x4A\xA2 |0 \x52\x4C |0 \x69\x87 |0 \x55\xB7 |0 \x59\xD2 |0 \x5B\xA9 |0 \x68\x93 |0 \x4F\xD7 |0 \x4F\x63 |0 \x68\x94 |0 \x4B\xCB |0 \x48\xAA |0 \x55\xAE |0 \x67\x56 |0 \x67\x57 |0 \x57\xF8 |0 \x4C\x4F |0 \x50\x94 |0 \x67\x58 |0 \x51\xEA |0 \x55\x50 |0 \x67\x59 |0 \x53\xF5 |0 \x50\x53 |0 \x67\x5C |0 \x53\x99 |0 \x59\x70 |0 \x5C\x49 |0 \x67\x5A |0 \x67\x5B |0 \x59\x83 |0 \x67\x5F |0 \x67\x60 |0 \x67\x64 |0 \x67\x68 |0 \x67\x66 |0 \x67\x6E |0 \x5B\x89 |0 \x67\x69 |0 \x67\x67 |0 \x67\x5E |0 \x53\x8A |0 \x53\xC5 |0 \x55\x8A |0 \x5A\xD1 |0 \x67\x61 |0 \x67\x62 |0 \x67\x63 |0 \x67\x65 |0 \x50\xF8 |0 \x4A\xA0 |0 \x4D\x89 |0 \x67\x70 |0 \x67\x71 |0 \x67\x6A |0 \x67\x6F |0 \x57\xF7 |0 \x56\x56 |0 \x67\x6C |0 \x67\x6D |0 \x58\x96 |0 \x67\x72 |0 \x51\x93 |0 \x5A\x52 |0 \x67\x6B |0 \x54\xB6 |0 \x4E\xEE |0 \x53\x91 |0 \x67\x76 |0 \x4B\x90 |0 \x51\xB4 |0 \x48\xAC |0 \x56\x8A |0 \x49\x4E |0 \x67\x74 |0 \x57\x8C |0 \x4B\x83 |0 \x67\x75 |0 \x67\x73 |0 \x67\x77 |0 \x4B\x9B |0 \x67\x78 |0 \x67\x79 |0 \x67\x7C |0 \x49\x6C |0 \x53\x97 |0 \x4E\xED |0 \x67\x7A |0 \x56\xBB |0 \x49\xE9 |0 \x67\x7B |0 \x52\xEA |0 \x4A\xC4 |0 \x48\xF4 |0 \x67\x7F |0 \x50\xD9 |0 \x4A\xE7 |0 \x53\x6D |0 \x67\x7D |0 \x50\x64 |0 \x67\x7E |0 \x52\xA4 |0 \x67\x81 |0 \x67\x82 |0 \x67\x84 |0 \x51\x77 |0 \x4E\x67 |0 \x4F\x58 |0 \x67\x83 |0 \x67\x85 |0 \x67\x87 |0 \x67\x86 |0 \x67\x88 |0 \x55\xBD |0 \x66\xE9 |0 \x50\xF0 |0 \x55\x88 |0 \x66\xEA |0 \x53\xED |0 \x66\xEB |0 \x53\xEC |0 \x66\xEC |0 \x66\xEF |0 \x5C\x87 |0 \x66\xF2 |0 \x66\xF0 |0 \x66\xED |0 \x66\xEE |0 \x5C\x43 |0 \x55\x92 |0 \x56\x8F |0 \x66\xF3 |0 \x66\xF1 |0 \x58\x8A |0 \x66\xF5 |0 \x53\xB0 |0 \x4E\xBF |0 \x66\xF4 |0 \x4B\x5B |0 \x4E\x97 |0 \x66\xF6 |0 \x5D\x98 |0 \x4F\x9C |0 \x51\xBA |0 \x66\xF7 |0 \x66\xF8 |0 \x4C\xA2 |0 \x66\xF9 |0 \x66\xFA |0 \x66\xFB |0 \x5A\x8E |0 \x5C\xAD |0 \x50\xEA |0 \x54\x7D |0 \x4D\xCB |0 \x58\xE2 |0 \x56\x5D |0 \x57\x5A |0 \x4C\xD0 |0 \x49\x9D |0 \x54\x90 |0 \x5B\xD5 |0 \x50\x66 |0 \x52\x8C |0 \x68\x96 |0 \x52\x78 |0 \x5C\x83 |0 \x68\x98 |0 \x4A\x73 |0 \x54\x78 |0 \x59\x8E |0 \x5B\xC7 |0 \x68\x99 |0 \x68\x97 |0 \x4E\x9E |0 \x4A\x66 |0 \x4F\x75 |0 \x59\xC5 |0 \x4E\x81 |0 \x58\x41 |0 \x68\x9D |0 \x68\x9C |0 \x68\x9A |0 \x4A\x6C |0 \x55\x74 |0 \x56\x50 |0 \x68\x9F |0 \x48\xDD |0 \x5B\xC8 |0 \x68\x9E |0 \x4A\x8E |0 \x6B\xD4 |0 \x57\xC7 |0 \x68\xA1 |0 \x68\xA0 |0 \x4B\x5E |0 \x4E\xD9 |0 \x4E\x9D |0 \x4C\xE4 |0 \x52\xC1 |0 \x68\xA2 |0 \x56\x8C |0 \x68\xA5 |0 \x59\x48 |0 \x4F\xBE |0 \x54\x8F |0 \x69\x56 |0 \x69\x57 |0 \x50\x75 |0 \x4A\xA8 |0 \x69\x58 |0 \x57\x5B |0 \x54\x74 |0 \x5B\x4D |0 \x69\x59 |0 \x69\x5A |0 \x54\x6F |0 \x59\xA3 |0 \x5B\xCE |0 \x69\x5B |0 \x4F\x71 |0 \x4A\xAF |0 \x4F\xBC |0 \x4A\xDB |0 \x57\xD0 |0 \x50\x7F |0 \x69\x5D |0 \x50\x9B |0 \x69\x5C |0 \x69\x5F |0 \x69\x5E |0 \x69\x60 |0 \x69\x61 |0 \x51\x9F |0 \x51\x42 |0 \x55\xF9 |0 \x5B\x5E |0 \x4F\xB9 |0 \x4F\xB8 |0 \x5B\x62 |0 \x50\x42 |0 \x57\x4F |0 \x69\x55 |0 \x4F\x7F |0 \x4B\xCA |0 \x5B\xF0 |0 \x6A\x63 |0 \x6A\x64 |0 \x4C\xCC |0 \x6A\x66 |0 \x6A\x67 |0 \x48\xC9 |0 \x6A\x65 |0 \x6A\x69 |0 \x56\x92 |0 \x6A\x6B |0 \x58\xA5 |0 \x49\x6A |0 \x6A\x68 |0 \x6A\x6F |0 \x4B\x71 |0 \x6A\x77 |0 \x6A\x72 |0 \x6A\x74 |0 \x6A\x73 |0 \x4C\x9C |0 \x49\x5F |0 \x6A\x6E |0 \x6A\x6A |0 \x4B\x7A |0 \x6A\x70 |0 \x6A\x71 |0 \x6A\x75 |0 \x6A\x6D |0 \x4E\xE2 |0 \x51\x9E |0 \x6A\x76 |0 \x6A\x7A |0 \x6A\x6C |0 \x4B\x68 |0 \x4F\x8F |0 \x6A\x7C |0 \x4C\x44 |0 \x50\x91 |0 \x5B\xFD |0 \x57\x52 |0 \x4A\xEF |0 \x49\xDE |0 \x6A\x78 |0 \x6A\x79 |0 \x55\x58 |0 \x6A\x7D |0 \x6A\x7E |0 \x6A\x82 |0 \x6A\x7F |0 \x6A\x84 |0 \x6A\x83 |0 \x6A\x7B |0 \x50\x8B |0 \x4A\x90 |0 \x6A\x81 |0 \x54\x49 |0 \x4E\xF1 |0 \x6A\x8C |0 \x4D\x5F |0 \x6A\x85 |0 \x49\xAC |0 \x4E\x9F |0 \x56\x84 |0 \x6A\x8E |0 \x6A\x8A |0 \x4D\x7C |0 \x6A\x8F |0 \x6A\x86 |0 \x6A\x87 |0 \x6A\x8B |0 \x51\xE0 |0 \x6A\x8D |0 \x6A\x90 |0 \x6A\x89 |0 \x4E\xFC |0 \x58\x85 |0 \x6A\x91 |0 \x6A\x88 |0 \x6A\x93 |0 \x5C\x4D |0 \x53\xA9 |0 \x6A\x94 |0 \x6A\x92 |0 \x51\xA7 |0 \x4C\xDC |0 \x6A\x96 |0 \x6A\x95 |0 \x4A\xDA |0 \x6A\x97 |0 \x6A\x98 |0 \x6A\x99 |0 \x50\xB9 |0 \x50\xE8 |0 \x53\x92 |0 \x6A\x9C |0 \x6A\x9B |0 \x4A\xD7 |0 \x6A\x9F |0 \x6A\x9A |0 \x6A\x9D |0 \x6A\x9E |0 \x6A\xA0 |0 \x6A\xA2 |0 \x4E\x69 |0 \x6A\xA1 |0 \x6A\xA3 |0 \x49\xBD |0 \x6A\xA5 |0 \x6A\xA4 |0 \x4E\xAD |0 \x52\x77 |0 \x5D\x82 |0 \x50\xDF |0 \x6A\xCB |0 \x5C\x71 |0 \x4C\x7B |0 \x6A\xCD |0 \x51\x43 |0 \x53\xC8 |0 \x4A\xD5 |0 \x5B\x53 |0 \x6A\xCF |0 \x6A\xCE |0 \x6A\xD0 |0 \x56\x7A |0 \x6A\xD1 |0 \x5A\xC0 |0 \x5B\xDF |0 \x4C\x81 |0 \x51\x58 |0 \x51\x5B |0 \x6A\xD2 |0 \x4F\xAB |0 \x4A\xE1 |0 \x6A\xD3 |0 \x6A\xD4 |0 \x4F\xAA |0 \x6A\xD5 |0 \x6A\xDA |0 \x6A\xD6 |0 \x6A\xD9 |0 \x4D\xFC |0 \x6A\xD7 |0 \x6A\xD8 |0 \x4C\xE1 |0 \x56\xC6 |0 \x6A\xDB |0 \x49\xD9 |0 \x52\x73 |0 \x5A\xE2 |0 \x50\x57 |0 \x6A\xDC |0 \x53\x54 |0 \x6A\xE8 |0 \x58\x55 |0 \x57\xC8 |0 \x56\x78 |0 \x56\x98 |0 \x4F\x95 |0 \x5C\x6F |0 \x50\xDA |0 \x58\xF4 |0 \x6A\xE9 |0 \x6A\xEA |0 \x6A\xEB |0 \x6C\x84 |0 \x4C\x51 |0 \x6A\xEC |0 \x5C\x8C |0 \x6A\xED |0 \x63\xF8 |0 \x4F\xBF |0 \x63\xF9 |0 \x4D\xEB |0 \x63\xFA |0 \x58\x6B |0 \x63\xFB |0 \x5A\xBB |0 \x4E\xB5 |0 \x63\xFC |0 \x63\xFD |0 \x4E\xCC |0 \x54\xD1 |0 \x57\xB2 |0 \x64\x41 |0 \x4A\xBE |0 \x64\x42 |0 \x55\x54 |0 \x4C\xD8 |0 \x52\xC8 |0 \x5C\x7D |0 \x51\xD9 |0 \x4C\x77 |0 \x5B\xBC |0 \x57\xC5 |0 \x4C\x64 |0 \x53\x46 |0 \x64\x43 |0 \x58\x7F |0 \x64\x44 |0 \x64\x45 |0 \x64\x46 |0 \x51\x57 |0 \x5C\x8A |0 \x55\x91 |0 \x58\x58 |0 \x5B\xAE |0 \x5B\xD4 |0 \x64\x47 |0 \x48\xEC |0 \x64\x48 |0 \x64\x49 |0 \x55\x7C |0 \x59\xEE |0 \x4F\xAC |0 \x64\x4A |0 \x48\xF2 |0 \x54\xDD |0 \x4F\x82 |0 \x64\x4B |0 \x54\xC5 |0 \x64\x4C |0 \x4E\x87 |0 \x4C\xF7 |0 \x59\x44 |0 \x64\x4D |0 \x51\xE6 |0 \x4F\xF7 |0 \x4F\x6A |0 \x57\x53 |0 \x64\x4E |0 \x64\x4F |0 \x4F\xED |0 \x58\xE4 |0 \x56\x88 |0 \x56\xCF |0 \x4E\xCB |0 \x64\x50 |0 \x4E\xA7 |0 \x58\xF6 |0 \x64\x51 |0 \x58\xF7 |0 \x64\x52 |0 \x64\x53 |0 \x4A\xC1 |0 \x64\x54 |0 \x64\x55 |0 \x55\x9F |0 \x57\xAB |0 \x52\x81 |0 \x64\x57 |0 \x49\x61 |0 \x4A\x92 |0 \x64\x58 |0 \x64\x59 |0 \x5C\x7B |0 \x5B\x60 |0 \x64\x5A |0 \x51\xCB |0 \x5C\x5A |0 \x64\x5B |0 \x64\x5C |0 \x64\x5D |0 \x4E\xE9 |0 \x52\x86 |0 \x50\xC1 |0 \x64\x5E |0 \x64\x5F |0 \x4E\xA8 |0 \x64\x60 |0 \x64\x61 |0 \x64\x56 |0 \x4B\xCF |0 \x64\x62 |0 \x64\x63 |0 \x64\x64 |0 \x4E\x5A |0 \x4B\x7E |0 \x51\xC5 |0 \x49\x81 |0 \x64\x65 |0 \x5A\xB4 |0 \x64\x66 |0 \x4C\xBE |0 \x64\x68 |0 \x64\x67 |0 \x4C\x8D |0 \x64\x69 |0 \x49\xF7 |0 \x64\x6A |0 \x64\x6B |0 \x64\x6C |0 \x64\x6D |0 \x64\x6E |0 \x64\x6F |0 \x64\x70 |0 \x5A\x47 |0 \x56\x96 |0 \x64\x71 |0 \x64\x72 |0 \x64\x73 |0 \x64\x74 |0 \x55\x69 |0 \x64\x75 |0 \x64\x76 |0 \x64\x77 |0 \x64\x78 |0 \x64\x79 |0 \x4F\x69 |0 \x64\x7A |0 \x6A\x5E |0 \x4C\xD6 |0 \x54\xB0 |0 \x6A\x5F |0 \x6A\x60 |0 \x6A\x61 |0 \x4D\x7E |0 \x57\x99 |0 \x5C\xE7 |0 \x4D\xB0 |0 \x51\xDD |0 \x67\xB6 |0 \x4C\x43 |0 \x67\xB8 |0 \x67\xB7 |0 \x48\xD4 |0 \x67\xBA |0 \x5B\x76 |0 \x5C\x90 |0 \x5B\xC2 |0 \x67\xBC |0 \x55\xEF |0 \x67\xBB |0 \x67\xBD |0 \x67\xBF |0 \x67\xBE |0 \x59\x93 |0 \x54\x5C |0 \x52\x60 |0 \x4C\xE0 |0 \x51\x88 |0 \x6A\xC5 |0 \x58\xDE |0 \x6A\xC6 |0 \x58\x7B |0 \x54\xB9 |0 \x6A\xC7 |0 \x6A\xC8 |0 \x6A\xC9 |0 \x6A\xCA |0 \x5D\x9B |0 \x4C\xFD |0 \x63\x92 |0 \x5A\x91 |0 \x6A\xDF |0 \x57\xCB |0 \x4A\x82 |0 \x69\x54 |0 \x59\xED |0 \x6A\xE0 |0 \x58\x89 |0 \x6A\xE1 |0 \x54\x6C |0 \x4B\x74 |0 \x4A\xE3 |0 \x6A\xE3 |0 \x6A\xE2 |0 \x6A\xE4 |0 \x6A\xE5 |0 \x6A\xE6 |0 \x4D\xB1 |0 \x48\xBE |0 \x6A\xE7 |0 \x4C\x4D |0 \x59\xEC |0 \x59\xAA |0 \x50\xCE |0 \x50\x5C |0 \x66\x43 |0 \x5B\x7F |0 \x65\xC7 |0 \x69\x94 |0 \x4B\xF7 |0 \x56\x43 |0 \x52\xCC |0 \x69\x88 |0 \x69\x89 |0 \x4C\xFA |0 \x69\x8A |0 \x4D\xC3 |0 \x5A\xC4 |0 \x48\xD1 |0 \x69\x8B |0 \x69\x8C |0 \x69\x8D |0 \x69\x8E |0 \x69\x8F |0 \x69\x90 |0 \x69\x92 |0 \x69\x91 |0 \x53\x75 |0 \x69\x93 |0 \x4B\xF9 |0 \x69\x95 |0 \x59\xAD |0 \x5F\xC6 |0 \x56\x6A |0 \x4A\x7C |0 \x4B\x42 |0 \x4D\x42 |0 \x52\xF3 |0 \x69\x96 |0 \x69\x97 |0 \x51\x64 |0 \x51\x9C |0 \x5B\xAF |0 \x69\x98 |0 \x69\x99 |0 \x51\x4A |0 \x53\xB7 |0 \x4F\xDA |0 \x69\x9A |0 \x4A\xCE |0 \x69\x9B |0 \x67\x52 |0 \x67\x51 |0 \x56\x81 |0 \x59\xDD |0 \x56\x61 |0 \x5B\x78 |0 \x54\xE1 |0 \x50\xDE |0 \x4E\xA0 |0 \x66\x61 |0 \x58\xA3 |0 \x5B\xE1 |0 \x4B\xC6 |0 \x4C\xD7 |0 \x66\x60 |0 \x4C\xCD |0 \x66\x5F |0 \x4A\x46 |0 \x4D\x69 |0 \x5B\xAA |0 \x4C\x95 |0 \x4C\x6A |0 \x4E\xE6 |0 \x4C\x5E |0 \x66\x66 |0 \x66\x67 |0 \x48\xB8 |0 \x50\x6F |0 \x66\x65 |0 \x5A\x9E |0 \x66\x68 |0 \x66\x69 |0 \x4C\x6E |0 \x66\x62 |0 \x66\x64 |0 \x55\x97 |0 \x5B\xD6 |0 \x5B\x6D |0 \x58\xB1 |0 \x66\x6F |0 \x57\xB7 |0 \x66\x70 |0 \x4B\x48 |0 \x49\x53 |0 \x66\x72 |0 \x56\xA4 |0 \x53\x76 |0 \x66\x73 |0 \x66\x71 |0 \x53\x7F |0 \x66\x6E |0 \x55\xA3 |0 \x66\x75 |0 \x48\xFA |0 \x4D\xF9 |0 \x5C\xB6 |0 \x69\x84 |0 \x66\x6A |0 \x66\x6B |0 \x66\x6C |0 \x66\x6D |0 \x66\x76 |0 \x63\xBF |0 \x66\x79 |0 \x50\x89 |0 \x59\xC7 |0 \x66\x77 |0 \x66\x7C |0 \x4C\xEB |0 \x66\x78 |0 \x4F\x5A |0 \x58\xD7 |0 \x48\xB6 |0 \x66\x7D |0 \x52\xDB |0 \x5B\xAB |0 \x4A\xDF |0 \x51\xF5 |0 \x4E\xB8 |0 \x66\x7A |0 \x66\x7B |0 \x5A\xDF |0 \x53\xE9 |0 \x52\xD3 |0 \x66\x7F |0 \x53\x47 |0 \x5D\x96 |0 \x49\xB0 |0 \x66\x85 |0 \x4F\x65 |0 \x66\x83 |0 \x66\x84 |0 \x4C\xAB |0 \x57\x71 |0 \x66\x86 |0 \x66\x82 |0 \x51\x53 |0 \x53\xA1 |0 \x56\xF2 |0 \x66\x87 |0 \x50\xAF |0 \x59\xB7 |0 \x66\x88 |0 \x4C\xAE |0 \x4C\xAC |0 \x66\x89 |0 \x54\x5B |0 \x57\x94 |0 \x66\x8B |0 \x66\x8C |0 \x66\x8E |0 \x58\xC7 |0 \x66\x93 |0 \x66\x8F |0 \x66\x92 |0 \x54\xF8 |0 \x59\x9D |0 \x66\x8D |0 \x66\x8A |0 \x4C\xB8 |0 \x58\x79 |0 \x52\xE4 |0 \x66\x90 |0 \x66\x91 |0 \x56\xD9 |0 \x57\x68 |0 \x48\xF1 |0 \x66\x97 |0 \x66\x96 |0 \x49\xB1 |0 \x4C\xDF |0 \x66\x98 |0 \x49\x8D |0 \x56\xC4 |0 \x52\xA3 |0 \x58\x45 |0 \x66\x9A |0 \x66\xA1 |0 \x53\x93 |0 \x66\x9B |0 \x55\x65 |0 \x61\xDE |0 \x66\x9F |0 \x57\x6E |0 \x66\xA0 |0 \x49\x7B |0 \x5A\x57 |0 \x59\xDB |0 \x66\x9E |0 \x66\x9C |0 \x4A\x5C |0 \x65\xAF |0 \x5C\x74 |0 \x6A\xAA |0 \x4A\x95 |0 \x5B\xC0 |0 \x5B\xC1 |0 \x5B\x8A |0 \x4F\xC9 |0 \x6A\xA6 |0 \x59\xA7 |0 \x6A\xA7 |0 \x6A\xA8 |0 \x6A\xA9 |0 \x4F\xCA |0 \x5A\x7F |0 \x55\x81 |0 \x55\x82 |0 \x6A\x62 |0 \x55\xE5 |0 \x56\xF1 |0 \x61\xB5 |0 \x56\x54 |0 \x57\xE7 |0 \x5B\xDA |0 \x6A\xAC |0 \x6A\xAD |0 \x6A\xAE |0 \x6A\xB1 |0 \x4D\xBC |0 \x6A\xB2 |0 \x48\xE2 |0 \x6A\xAF |0 \x6A\xB0 |0 \x4F\x42 |0 \x49\xD4 |0 \x6A\xB5 |0 \x6A\xB6 |0 \x4B\xE5 |0 \x49\xAF |0 \x58\x6F |0 \x6A\xB3 |0 \x4A\xAB |0 \x6A\xB4 |0 \x6A\xB7 |0 \x6A\xB8 |0 \x57\x47 |0 \x6A\xB9 |0 \x6A\xBA |0 \x6A\xBB |0 \x56\x72 |0 \x6A\xBC |0 \x6A\xBD |0 \x6A\xBE |0 \x6A\xDD |0 \x51\x5C |0 \x4E\xE7 |0 \x55\x4B |0 \x59\x7E |0 \x63\x96 |0 \x5E\xB2 |0 \x59\xD4 |0 \x5E\xB3 |0 \x48\xAB |0 \x5E\xB4 |0 \x4F\x7A |0 \x5E\xB8 |0 \x5C\xC1 |0 \x5E\xB6 |0 \x5A\x94 |0 \x55\x76 |0 \x5E\xB9 |0 \x5E\xB5 |0 \x5E\xBA |0 \x52\x42 |0 \x5E\xBB |0 \x5E\xC4 |0 \x5E\xBC |0 \x57\xDE |0 \x5B\xA4 |0 \x5E\xCE |0 \x5E\xCC |0 \x5E\xD1 |0 \x4F\x87 |0 \x51\xAA |0 \x5E\xB7 |0 \x5E\xCA |0 \x5E\xCD |0 \x5E\xBD |0 \x4C\x72 |0 \x48\xC4 |0 \x5E\xC6 |0 \x58\xBD |0 \x5E\xC0 |0 \x4E\x48 |0 \x4C\x5C |0 \x5E\xCB |0 \x5E\xC5 |0 \x5E\xBE |0 \x54\x7B |0 \x59\x5F |0 \x5E\xBF |0 \x5E\xC9 |0 \x5E\xCF |0 \x57\xAC |0 \x5E\xC1 |0 \x5E\xC2 |0 \x5E\xC7 |0 \x5E\xC8 |0 \x49\xD3 |0 \x5E\xD0 |0 \x56\x75 |0 \x5A\xB6 |0 \x5E\xDA |0 \x5E\xDE |0 \x56\xA5 |0 \x5E\xE5 |0 \x52\x88 |0 \x5E\xDB |0 \x50\x61 |0 \x5E\xD8 |0 \x48\xF9 |0 \x4D\x56 |0 \x5E\xE4 |0 \x5E\xD2 |0 \x5E\xC3 |0 \x5E\xD5 |0 \x54\xF3 |0 \x50\x81 |0 \x55\x5B |0 \x49\x5D |0 \x5A\x42 |0 \x5E\xD9 |0 \x5E\xD4 |0 \x53\xBA |0 \x5E\xDD |0 \x5C\x62 |0 \x52\x4F |0 \x4C\x56 |0 \x54\x71 |0 \x52\x49 |0 \x5E\xE1 |0 \x5E\xD7 |0 \x5E\xEA |0 \x5E\xD3 |0 \x5E\xDC |0 \x4F\xA4 |0 \x5E\xD6 |0 \x5E\xDF |0 \x5E\xE2 |0 \x5E\xE3 |0 \x5E\xF7 |0 \x5E\xE0 |0 \x5F\x42 |0 \x5E\xE6 |0 \x4E\xEA |0 \x4A\xC3 |0 \x52\x43 |0 \x49\xE6 |0 \x5E\xF9 |0 \x5E\xF1 |0 \x5E\xEE |0 \x5E\xFB |0 \x5E\xED |0 \x59\xEF |0 \x49\xE7 |0 \x54\xD6 |0 \x54\xE2 |0 \x5E\xFA |0 \x5E\xEC |0 \x5E\xF6 |0 \x5E\xF4 |0 \x4F\xA2 |0 \x5E\xF3 |0 \x49\xDC |0 \x5E\xF2 |0 \x4E\xF5 |0 \x5E\xE7 |0 \x4E\x64 |0 \x50\xF2 |0 \x4E\xD3 |0 \x5E\xE8 |0 \x5E\xE9 |0 \x5E\xF0 |0 \x5E\xF5 |0 \x5E\xF8 |0 \x4B\x54 |0 \x54\xD8 |0 \x4E\x88 |0 \x5E\xFD |0 \x5E\xFC |0 \x5A\x4B |0 \x5F\x41 |0 \x5F\x43 |0 \x5F\x45 |0 \x59\xF0 |0 \x5F\x44 |0 \x5F\x46 |0 \x5F\x47 |0 \x59\xA8 |0 \x4D\xC8 |0 \x5F\x49 |0 \x5F\x56 |0 \x5F\x51 |0 \x5F\x54 |0 \x5F\x50 |0 \x53\xCD |0 \x50\xF1 |0 \x55\x4F |0 \x5E\xEB |0 \x5F\x4E |0 \x5F\x57 |0 \x5E\xEF |0 \x5F\x4F |0 \x5F\x58 |0 \x5F\x4C |0 \x5F\x59 |0 \x5F\x53 |0 \x5F\x4D |0 \x52\xA9 |0 \x5F\x48 |0 \x50\xB2 |0 \x51\x4B |0 \x5F\x4A |0 \x5F\x4B |0 \x5F\x52 |0 \x4E\x92 |0 \x5F\x55 |0 \x5A\x48 |0 \x5F\x5A |0 \x5F\x5B |0 \x52\x47 |0 \x5F\x72 |0 \x5F\x5C |0 \x5F\x71 |0 \x4D\x5D |0 \x4F\xD4 |0 \x4F\xF9 |0 \x4D\xC9 |0 \x5F\x6A |0 \x5F\x65 |0 \x5F\x5F |0 \x49\xCA |0 \x5F\x63 |0 \x5F\x6B |0 \x49\xA3 |0 \x5F\x75 |0 \x5F\x5E |0 \x53\xCF |0 \x5F\x70 |0 \x5F\x74 |0 \x51\x83 |0 \x4C\x66 |0 \x5F\x6E |0 \x5F\x6F |0 \x5F\x64 |0 \x5F\x5D |0 \x5F\x6D |0 \x56\xD0 |0 \x5F\x69 |0 \x5F\x62 |0 \x52\x68 |0 \x53\xBB |0 \x57\xAD |0 \x5F\x6C |0 \x5F\x68 |0 \x5F\x61 |0 \x5F\x66 |0 \x51\xDB |0 \x5A\x49 |0 \x5A\x4A |0 \x5F\x73 |0 \x58\x95 |0 \x54\xF7 |0 \x5F\x87 |0 \x5F\x67 |0 \x5F\x81 |0 \x51\xE3 |0 \x5F\x82 |0 \x5F\x77 |0 \x5B\xF7 |0 \x5F\x79 |0 \x5F\x78 |0 \x4C\xEF |0 \x5F\x76 |0 \x53\xCE |0 \x4B\xAC |0 \x5F\x83 |0 \x4D\xF8 |0 \x5A\xE0 |0 \x5F\x88 |0 \x4A\xCF |0 \x5F\x7A |0 \x50\x9C |0 \x5F\x84 |0 \x5F\x7F |0 \x5F\x7D |0 \x4B\x79 |0 \x5F\x7B |0 \x5F\x7C |0 \x5F\x7E |0 \x4F\x4F |0 \x5F\x85 |0 \x5F\x86 |0 \x5F\x96 |0 \x52\x69 |0 \x56\x83 |0 \x5F\x93 |0 \x5C\xE0 |0 \x53\xD0 |0 \x5F\x95 |0 \x5B\x95 |0 \x5F\x94 |0 \x5F\x91 |0 \x5F\x8D |0 \x5F\x90 |0 \x5F\x89 |0 \x58\xED |0 \x54\xD7 |0 \x5F\x8F |0 \x5F\x8A |0 \x5F\x8B |0 \x56\x93 |0 \x5F\x8E |0 \x49\x6D |0 \x50\xB5 |0 \x4E\xBA |0 \x5F\x92 |0 \x5F\x98 |0 \x5F\x97 |0 \x5F\x8C |0 \x53\x8F |0 \x5F\x9C |0 \x5F\xA3 |0 \x5F\xA2 |0 \x5F\x99 |0 \x52\x90 |0 \x51\xFA |0 \x5B\x82 |0 \x57\xB4 |0 \x5F\x9E |0 \x49\xCB |0 \x52\xE7 |0 \x55\xDE |0 \x54\x5E |0 \x5F\x9B |0 \x5F\x9D |0 \x5F\x9F |0 \x5F\xA1 |0 \x48\xA9 |0 \x49\x6E |0 \x5F\xAB |0 \x5F\xA5 |0 \x4F\x56 |0 \x54\xEE |0 \x5F\xA0 |0 \x5F\xA4 |0 \x5F\xA8 |0 \x5F\xA7 |0 \x5F\xA6 |0 \x5F\xAC |0 \x5A\xCB |0 \x5F\xB2 |0 \x5F\xA9 |0 \x5F\xAD |0 \x50\xD8 |0 \x49\x41 |0 \x5F\xB5 |0 \x5F\xB0 |0 \x5F\xB1 |0 \x59\x46 |0 \x5F\xB4 |0 \x5F\xAE |0 \x5F\xAF |0 \x58\xBC |0 \x5F\xB3 |0 \x55\xEC |0 \x5F\xB8 |0 \x5F\xB7 |0 \x5F\xB6 |0 \x5F\xBA |0 \x4F\x86 |0 \x49\xD7 |0 \x52\x8B |0 \x5F\xB9 |0 \x53\x5A |0 \x5F\xBB |0 \x56\xD8 |0 \x4C\x4A |0 \x5A\xE4 |0 \x5F\xBC |0 \x5F\xBE |0 \x52\xA1 |0 \x5F\xC0 |0 \x5F\xBD |0 \x5F\xBF |0 \x5B\x5A |0 \x5F\xC1 |0 \x69\xAD |0 \x4E\x42 |0 \x51\xB1 |0 \x53\x50 |0 \x51\xC6 |0 \x69\xAE |0 \x58\xE8 |0 \x5A\x7D |0 \x66\x5D |0 \x4A\x87 |0 \x69\xAF |0 \x69\xB0 |0 \x55\xAC |0 \x4D\xE6 |0 \x69\xB2 |0 \x69\xB4 |0 \x69\xB3 |0 \x56\x85 |0 \x58\x5A |0 \x69\xB1 |0 \x55\xB3 |0 \x59\xCE |0 \x51\xEB |0 \x57\xC2 |0 \x69\xB7 |0 \x48\xF5 |0 \x69\xB6 |0 \x69\xBD |0 \x49\xCE |0 \x59\x61 |0 \x69\xB9 |0 \x69\xBB |0 \x5A\xE8 |0 \x69\xBA |0 \x69\xB5 |0 \x69\xBE |0 \x69\xBC |0 \x69\xB8 |0 \x69\xC6 |0 \x69\xC3 |0 \x69\xC5 |0 \x69\xC9 |0 \x69\xC1 |0 \x69\xBF |0 \x69\xC4 |0 \x5B\xFA |0 \x69\xC0 |0 \x54\x9A |0 \x55\x7F |0 \x69\xC7 |0 \x4D\x66 |0 \x4B\x50 |0 \x69\xC2 |0 \x69\xC8 |0 \x69\xCF |0 \x69\xD5 |0 \x4E\x77 |0 \x69\xD4 |0 \x57\x7C |0 \x5B\xEA |0 \x69\xD1 |0 \x69\xD3 |0 \x4C\xF1 |0 \x69\xCA |0 \x69\xCD |0 \x51\xF8 |0 \x5B\x7D |0 \x69\xCB |0 \x69\xCC |0 \x69\xCE |0 \x69\xD2 |0 \x69\xD8 |0 \x5A\x5C |0 \x4B\xE9 |0 \x55\xF0 |0 \x4C\x85 |0 \x69\xD6 |0 \x69\xD7 |0 \x69\xD9 |0 \x69\xDC |0 \x69\xDA |0 \x69\xDB |0 \x59\x71 |0 \x69\xD0 |0 \x57\x69 |0 \x57\xCE |0 \x5B\xA8 |0 \x69\xE2 |0 \x52\x7B |0 \x69\xDF |0 \x50\xAE |0 \x69\xEB |0 \x69\xDD |0 \x69\xE0 |0 \x69\xE7 |0 \x69\xE1 |0 \x69\xE6 |0 \x69\xE5 |0 \x69\xE8 |0 \x69\xDE |0 \x69\xE3 |0 \x69\xE9 |0 \x5A\x4C |0 \x69\xE4 |0 \x49\xF4 |0 \x69\xF1 |0 \x58\xAA |0 \x69\xF4 |0 \x4E\x68 |0 \x69\xF8 |0 \x69\xEF |0 \x69\xF5 |0 \x69\xF7 |0 \x69\xF9 |0 \x69\xF2 |0 \x69\xF0 |0 \x4D\xFA |0 \x4B\x9C |0 \x69\xEE |0 \x69\xF6 |0 \x69\xEC |0 \x69\xED |0 \x69\xEA |0 \x6A\x46 |0 \x6A\x43 |0 \x6A\x42 |0 \x69\xF3 |0 \x54\xD9 |0 \x69\xFA |0 \x6A\x45 |0 \x52\x99 |0 \x69\xFC |0 \x6A\x47 |0 \x6A\x49 |0 \x6A\x44 |0 \x69\xFB |0 \x6A\x4B |0 \x6A\x4A |0 \x51\xDC |0 \x6A\x4E |0 \x6A\x50 |0 \x6A\x41 |0 \x6A\x51 |0 \x6A\x4C |0 \x6A\x4F |0 \x69\xFD |0 \x6A\x4D |0 \x6A\x52 |0 \x6A\x54 |0 \x6A\x48 |0 \x6A\x53 |0 \x6A\x55 |0 \x58\xB6 |0 \x6A\x58 |0 \x5D\x9A |0 \x6A\x59 |0 \x6A\x57 |0 \x54\xE3 |0 \x6A\x56 |0 \x6A\x5A |0 \x6A\x5B |0 \x4A\xBF |0 \x67\xC2 |0 \x6A\x5C |0 \x6A\x5D |0 \x59\x4A |0 \x6A\xAB |0 \x58\xC5 |0 \x58\xCF |0 \x59\x7C |0 \x58\x6E |0 \x4F\x76 |0 \x59\x63 |0 \x4D\xE1 |0 \x61\x8A |0 \x59\xC1 |0 \x69\x62 |0 \x49\xB8 |0 \x49\x8E |0 \x69\x63 |0 \x55\x60 |0 \x4A\x64 |0 \x5D\x93 |0 \x56\x45 |0 \x69\x64 |0 \x5B\xD3 |0 \x69\x65 |0 \x6A\xBF |0 \x69\x66 |0 \x5A\xAB |0 \x69\x67 |0 \x48\xBF |0 \x6A\xC0 |0 \x6A\xC1 |0 \x4A\xFB |0 \x53\x7B |0 \x56\xBA |0 \x58\xE3 |0 \x57\x81 |0 \x69\x68 |0 \x5D\x94 |0 \x49\x5B |0 \x58\x4E |0 \x4C\xA3 |0 \x69\x6A |0 \x69\x6B |0 \x49\xC2 |0 \x51\x71 |0 \x5C\x50 |0 \x69\x69 |0 \x69\x6C |0 \x69\x6E |0 \x5D\x97 |0 \x59\xE0 |0 \x5A\xA2 |0 \x6A\xC2 |0 \x54\xB8 |0 \x6A\xC3 |0 \x69\x6D |0 \x69\x6F |0 \x50\x84 |0 \x69\x70 |0 \x69\x74 |0 \x69\x76 |0 \x69\x71 |0 \x55\x71 |0 \x53\x82 |0 \x51\xE2 |0 \x4D\x9D |0 \x69\x73 |0 \x69\x75 |0 \x4D\x73 |0 \x69\x7B |0 \x4D\xD5 |0 \x48\xFC |0 \x69\x79 |0 \x69\x78 |0 \x69\x72 |0 \x69\x7A |0 \x69\x77 |0 \x54\xEB |0 \x57\x6A |0 \x69\x7D |0 \x63\x5D |0 \x69\x7C |0 \x69\x7E |0 \x69\x7F |0 \x58\x86 |0 \x6A\xC4 |0 \x4F\x94 |0 \x69\x81 |0 \x69\x82 |0 \x57\xF6 |0 \x59\xA9 |0 \x69\x9C |0 \x4C\xB1 |0 \x4E\xFA |0 \x4D\x7B |0 \x4D\x87 |0 \x52\x79 |0 \x55\xD2 |0 \x65\xE7 |0 \x50\xBF |0 \x4F\xF4 |0 \x65\xE8 |0 \x65\xE9 |0 \x65\xEA |0 \x65\xEB |0 \x65\xEC |0 \x65\xED |0 \x65\xEE |0 \x4F\x67 |0 \x6B\x9C |0 \x6B\x9E |0 \x6B\x9F |0 \x6B\x9D |0 \x4F\x83 |0 \x6B\xA0 |0 \x4A\xA4 |0 \x6B\xA1 |0 \x6B\xA2 |0 \x66\xB1 |0 \x59\x74 |0 \x5D\x8B |0 \x6B\xA3 |0 \x67\xB9 |0 \x5B\x52 |0 \x5A\x9F |0 \x56\xDB |0 \x55\xC3 |0 \x63\x60 |0 \x6B\xA4 |0 \x4F\xAE |0 \x53\xA8 |0 \x5D\xA4 |0 \x4E\xC5 |0 \x4B\xA8 |0 \x4C\xBB |0 \x54\xCE |0 \x4E\xA4 |0 \x5D\xA5 |0 \x5D\xA6 |0 \x56\xD5 |0 \x54\xC2 |0 \x5D\xA7 |0 \x53\xFC |0 \x59\x55 |0 \x59\xE8 |0 \x59\x56 |0 \x4E\xC6 |0 \x4F\x52 |0 \x4E\x85 |0 \x5D\xA8 |0 \x5D\xA9 |0 \x59\x68 |0 \x5D\xAA |0 \x58\xEC |0 \x4B\xEE |0 \x51\xDA |0 \x56\x6F |0 \x4C\x8E |0 \x55\x89 |0 \x4C\x63 |0 \x4F\xF6 |0 \x5B\xA3 |0 \x5D\xAB |0 \x5D\xAC |0 \x53\xBF |0 \x5C\x88 |0 \x55\xB5 |0 \x5B\x49 |0 \x56\x7F |0 \x5B\x90 |0 \x5D\xAD |0 \x5B\xDE |0 \x4A\xC9 |0 \x5D\xAF |0 \x5D\xAE |0 \x59\xEA |0 \x5D\xB0 |0 \x5D\xB1 |0 \x5D\xB2 |0 \x55\xD3 |0 \x5D\xB3 |0 \x55\xAA |0 \x5D\xB4 |0 \x5D\xB5 |0 \x4A\x6F |0 \x5B\xEE |0 \x5D\xB6 |0 \x4E\x50 |0 \x4B\x4E |0 \x5D\xB7 |0 \x5D\xB8 |0 \x4D\x8F |0 \x59\x4F |0 \x59\xE7 |0 \x5D\xB9 |0 \x4C\xC2 |0 \x58\x8B |0 \x49\xEE |0 \x5D\xBA |0 \x5D\xBB |0 \x4F\x8C |0 \x57\xDB |0 \x5A\x90 |0 \x5D\xBC |0 \x57\xF2 |0 \x5D\xBD |0 \x5A\x75 |0 \x4E\x86 |0 \x5D\xBE |0 \x56\x55 |0 \x56\x70 |0 \x5D\xBF |0 \x54\x8C |0 \x5B\xED |0 \x5D\xC0 |0 \x53\x55 |0 \x4B\xC0 |0 \x5D\xC1 |0 \x4C\x6C |0 \x50\x6E |0 \x5D\xC2 |0 \x5D\xC3 |0 \x56\x4D |0 \x5D\xC4 |0 \x4B\x98 |0 \x5D\xC5 |0 \x51\x62 |0 \x5C\x5B |0 \x5D\xC6 |0 \x56\xB7 |0 \x59\xE9 |0 \x52\xB0 |0 \x5D\xC7 |0 \x4B\x9E |0 \x4E\x71 |0 \x5D\xC8 |0 \x58\xB2 |0 \x5D\xC9 |0 \x5D\xCA |0 \x57\xBC |0 \x5D\xCB |0 \x5D\xCC |0 \x5D\xCD |0 \x49\xF6 |0 \x5D\xD0 |0 \x5D\xCE |0 \x59\x89 |0 \x5D\xCF |0 \x52\x75 |0 \x5D\xD1 |0 \x5D\xD2 |0 \x5D\xD3 |0 \x5D\xD4 |0 \x58\xBA |0 \x59\xA4 |0 \x48\xF8 |0 \x5D\xD5 |0 \x54\x4B |0 \x5D\xD6 |0 \x4F\x98 |0 \x52\x41 |0 \x5D\xD7 |0 \x5D\xD8 |0 \x52\x9E |0 \x56\xB6 |0 \x5D\xD9 |0 \x5D\xDA |0 \x50\xBD |0 \x53\xD6 |0 \x5D\xDB |0 \x5D\xDC |0 \x54\x54 |0 \x5D\xDD |0 \x5D\xDE |0 \x4D\x68 |0 \x4E\x8E |0 \x4B\xB8 |0 \x6A\xF7 |0 \x6A\xF8 |0 \x57\x84 |0 \x6B\x59 |0 \x66\x81 |0 \x58\x94 |0 \x4E\x5F |0 \x4D\xBF |0 \x5A\xA4 |0 \x61\x79 |0 \x6B\x95 |0 \x49\x4A |0 \x49\xF1 |0 \x6B\x96 |0 \x6B\x98 |0 \x4D\xD0 |0 \x6B\x97 |0 \x52\x52 |0 \x6B\x9A |0 \x6B\x99 |0 \x49\x54 |0 \x5B\x8B |0 \x4C\xB9 |0 \x4D\x51 |0 \x49\xC5 |0 \x5A\xEF |0 \x58\x6D |0 \x48\xDB |0 \x5B\x6B |0 \x4E\x96 |0 \x5B\xC9 |0 \x4C\x57 |0 \x56\xAF |0 \x53\xB5 |0 \x49\x82 |0 \x4D\x5A |0 \x5B\xFB |0 \x4D\x82 |0 \x4C\x41 |0 \x4E\xF9 |0 \x65\xD9 |0 \x65\xDA |0 \x56\xF8 |0 \x4D\x94 |0 \x65\xDB |0 \x4A\xFA |0 \x52\x53 |0 \x4C\x71 |0 \x4D\xD7 |0 \x65\xDC |0 \x5A\xF3 |0 \x65\xDD |0 \x4E\xD5 |0 \x4E\x7F |0 \x65\xDE |0 \x51\x7E |0 \x51\xB7 |0 \x5A\xDE |0 \x5C\x6A |0 \x65\xDF |0 \x65\xE0 |0 \x65\xE3 |0 \x65\xE1 |0 \x65\xE2 |0 \x55\x7E |0 \x4C\xB2 |0 \x4B\xC3 |0 \x65\xE4 |0 \x55\xE9 |0 \x55\x6D |0 \x4A\xCC |0 \x61\xD8 |0 \x53\x83 |0 \x65\xE5 |0 \x50\xB4 |0 \x5C\x58 |0 \x65\xE6 |0 \x5C\x4C |0 \x54\xFB |0 \x5C\xD2 |0 \x5C\xCC |0 \x5A\xDD |0 \x5A\xF8 |0 \x55\x64 |0 \x5A\x4E |0 \x4C\xD2 |0 \x4A\x81 |0 \x55\x83 |0 \x6A\xF5 |0 \x4D\xD4 |0 \x6A\xF6 |0 \x5C\x7F |0 \x6A\xF0 |0 \x4C\xAF |0 \x5B\x74 |0 \x4C\xCE |0 \x53\xEF |0 \x4A\x63 |0 \x6A\xF1 |0 \x4A\x4C |0 \x5A\xBC |0 \x54\x98 |0 \x6A\xF3 |0 \x6A\xF2 |0 \x56\xCA |0 \x54\xA3 |0 \x6A\xF4 |0 \x5C\x84 |0 \x53\x5F |0 \x6B\x60 |0 \x6B\x5B |0 \x6B\x63 |0 \x6B\x62 |0 \x5B\xB9 |0 \x6B\x61 |0 \x5A\xBD |0 \x6B\x64 |0 \x6B\x6C |0 \x48\xCE |0 \x4B\x99 |0 \x6B\x69 |0 \x6B\x6A |0 \x53\x7C |0 \x6B\x65 |0 \x6B\x66 |0 \x6B\x67 |0 \x6B\x6B |0 \x4F\xDF |0 \x6B\x68 |0 \x4C\xF9 |0 \x6B\x70 |0 \x6B\x73 |0 \x50\x88 |0 \x4D\x93 |0 \x6B\x5C |0 \x6B\x6D |0 \x51\xB6 |0 \x56\xF7 |0 \x4E\xF8 |0 \x6B\x6E |0 \x6B\x6F |0 \x6B\x71 |0 \x4B\xE4 |0 \x6B\x72 |0 \x6B\x75 |0 \x6B\x5D |0 \x6B\x74 |0 \x5A\x5B |0 \x4A\x8D |0 \x56\xA3 |0 \x6B\x76 |0 \x6B\x77 |0 \x4F\xE0 |0 \x6B\x78 |0 \x56\xDE |0 \x6B\x7B |0 \x49\xC7 |0 \x5C\x79 |0 \x6B\x79 |0 \x6B\x7A |0 \x6B\x7C |0 \x6B\x83 |0 \x6B\x81 |0 \x6B\x7F |0 \x6B\x7D |0 \x6B\x82 |0 \x6B\x7E |0 \x6B\x85 |0 \x6B\x86 |0 \x56\xE2 |0 \x63\x5F |0 \x4B\x58 |0 \x6B\x84 |0 \x6B\x89 |0 \x56\xA2 |0 \x6B\x87 |0 \x6B\x88 |0 \x6B\x5E |0 \x49\x64 |0 \x6B\x5F |0 \x4B\x65 |0 \x49\xE3 |0 \x6B\x8D |0 \x6B\x8A |0 \x4B\xD6 |0 \x6B\x8E |0 \x6B\x8B |0 \x6B\x8C |0 \x4A\xD9 |0 \x5A\xE9 |0 \x6B\x8F |0 \x4A\x9A |0 \x6B\x90 |0 \x6B\x92 |0 \x6B\x91 |0 \x6B\x93 |0 \x6B\x94 |0 \x55\x8E |0 \x4D\x4A |0 \x54\x9C |0 \x4B\xE2 |0 \x56\xC8 |0 \x65\xA5 |0 \x4A\x55 |0 \x5A\xFD |0 \x4D\x8D |0 \x58\xF8 |0 \x65\x8E |0 \x5C\x4A |0 \x65\x8F |0 \x51\xD5 |0 \x54\xEC |0 \x4D\xE3 |0 \x65\x90 |0 \x65\x91 |0 \x65\x92 |0 \x5B\xE0 |0 \x65\x93 |0 \x65\x94 |0 \x65\x96 |0 \x65\x95 |0 \x65\x97 |0 \x65\x98 |0 \x54\x82 |0 \x65\x99 |0 \x5A\xD7 |0 \x65\x9A |0 \x4F\x6E |0 \x65\x9B |0 \x65\x9C |0 \x4F\x6F |0 \x65\x9D |0 \x4C\xA7 |0 \x51\x5E |0 \x65\x9E |0 \x49\x52 |0 \x4E\x74 |0 \x4D\x96 |0 \x65\x9F |0 \x65\xA0 |0 \x65\xA1 |0 \x65\xA2 |0 \x4C\x99 |0 \x4E\xAC |0 \x55\xE3 |0 \x60\xCD |0 \x5A\xAE |0 \x58\x5D |0 \x5B\x57 |0 \x65\xA3 |0 \x5B\x7E |0 \x65\xA4 |0 \x58\xC0 |0 \x4D\x5C |0 \x4A\xC6 |0 \x49\x79 |0 \x50\xB0 |0 \x49\x87 |0 \x49\x88 |0 \x49\x89 |0 \x4A\x5D |0 \x54\xE7 |0 \x63\x61 |0 \x49\x7F |0 \x51\x69 |0 \x4A\xEE |0 \x54\x48 |0 \x5A\x78 |0 \x53\xF8 |0 \x59\x58 |0 \x4D\x9E |0 \x51\xF4 |0 \x5A\x4D |0 \x5A\xCA |0 \x4F\x9D |0 \x63\x62 |0 \x4C\x55 |0 \x63\x63 |0 \x4E\x59 |0 \x5B\x83 |0 \x4F\x99 |0 \x5A\xB5 |0 \x57\xA4 |0 \x51\x4C |0 \x4A\x79 |0 \x56\xF5 |0 \x63\x66 |0 \x63\x64 |0 \x63\x68 |0 \x63\x6A |0 \x63\x67 |0 \x4B\x6F |0 \x53\xC7 |0 \x4B\x9D |0 \x63\x65 |0 \x55\xF5 |0 \x63\x69 |0 \x52\x74 |0 \x49\x65 |0 \x4E\xA2 |0 \x5C\x57 |0 \x57\x6B |0 \x56\x6D |0 \x55\xC9 |0 \x56\xD2 |0 \x63\x6C |0 \x63\x6B |0 \x52\xE5 |0 \x59\x41 |0 \x59\x57 |0 \x63\x6D |0 \x63\x70 |0 \x57\x58 |0 \x5B\xEF |0 \x63\x6F |0 \x4B\x7D |0 \x57\x5E |0 \x63\x71 |0 \x4B\xB9 |0 \x57\x48 |0 \x4D\x85 |0 \x55\xC4 |0 \x4A\x71 |0 \x56\x79 |0 \x5A\xEB |0 \x63\x72 |0 \x4C\x8B |0 \x63\x6E |0 \x63\x75 |0 \x4A\xFD |0 \x63\x76 |0 \x63\x73 |0 \x63\x74 |0 \x59\xDC |0 \x51\xDE |0 \x49\x66 |0 \x5A\x83 |0 \x4B\xDC |0 \x56\x8D |0 \x63\x77 |0 \x5A\x97 |0 \x49\x8A |0 \x4B\xF3 |0 \x63\x7A |0 \x63\x78 |0 \x63\x79 |0 \x4B\x60 |0 \x59\xC4 |0 \x63\x7C |0 \x63\x7E |0 \x63\x7D |0 \x54\x52 |0 \x59\xA2 |0 \x63\x7B |0 \x5A\xE1 |0 \x5B\x7A |0 \x63\x81 |0 \x5C\x92 |0 \x63\x82 |0 \x49\x7C |0 \x59\x9C |0 \x63\x83 |0 \x63\x85 |0 \x63\x84 |0 \x63\x86 |0 \x59\xD7 |0 \x4B\x6B |0 \x64\x7F |0 \x5D\xF4 |0 \x5D\xF7 |0 \x5D\xF5 |0 \x5D\xF6 |0 \x5D\xF9 |0 \x58\xCE |0 \x52\xC6 |0 \x48\xED |0 \x58\xAF |0 \x5D\xF8 |0 \x5A\x6A |0 \x4D\xA9 |0 \x5E\x42 |0 \x54\x92 |0 \x5D\xFB |0 \x5D\xFA |0 \x55\x7B |0 \x5D\xFC |0 \x5E\x41 |0 \x5C\x7E |0 \x5D\xFD |0 \x51\x7A |0 \x5E\x45 |0 \x5A\x95 |0 \x5E\x47 |0 \x5E\x44 |0 \x5E\x48 |0 \x4F\x5C |0 \x50\xC8 |0 \x5E\x43 |0 \x5E\x46 |0 \x5B\xA2 |0 \x5E\x49 |0 \x5E\x4D |0 \x5E\x4E |0 \x5E\x4C |0 \x4D\xC1 |0 \x50\x44 |0 \x5E\x4B |0 \x5E\x4A |0 \x5A\xC6 |0 \x49\xBE |0 \x5E\x4F |0 \x4D\x9A |0 \x5E\x50 |0 \x4A\x5B |0 \x4B\x46 |0 \x4B\xBB |0 \x5E\x51 |0 \x4B\xF4 |0 \x5E\x52 |0 \x49\x69 |0 \x5E\x54 |0 \x5E\x53 |0 \x5E\x55 |0 \x5E\x57 |0 \x5E\x56 |0 \x5E\x58 |0 \x5E\x59 |0 \x5E\x5A |0 \x5A\x6F |0 \x6A\xF9 |0 \x54\x96 |0 \x5C\x63 |0 \x53\x85 |0 \x6A\xFB |0 \x6A\xFC |0 \x6A\xFA |0 \x4F\xC5 |0 \x58\xEE |0 \x4C\x73 |0 \x5A\xCC |0 \x56\xA9 |0 \x6B\x42 |0 \x6B\x41 |0 \x4D\xA7 |0 \x6A\xFD |0 \x56\x76 |0 \x6B\x44 |0 \x50\xD1 |0 \x4A\x8B |0 \x57\x4A |0 \x6B\x45 |0 \x6B\x43 |0 \x4F\x54 |0 \x6B\x48 |0 \x6B\x49 |0 \x4F\x6D |0 \x52\x58 |0 \x50\x82 |0 \x56\x82 |0 \x6B\x4A |0 \x6B\x46 |0 \x6B\x47 |0 \x52\xEF |0 \x6B\x4C |0 \x4A\xBB |0 \x5C\x8E |0 \x4A\xD6 |0 \x6B\x4B |0 \x6B\x4E |0 \x6B\x4D |0 \x6B\x4F |0 \x58\xD0 |0 \x52\x71 |0 \x54\xA8 |0 \x6B\x50 |0 \x6B\x51 |0 \x6B\x52 |0 \x6B\x53 |0 \x6B\x54 |0 \x6B\x55 |0 \x6B\x57 |0 \x6B\x56 |0 \x6B\x58 |0 \x49\xC8 |0 \x5A\x74 |0 \x55\xCC |0 \x50\xEE |0 \x5B\xD7 |0 \x59\xAF |0 \x51\x5F |0 \x4F\x91 |0 \x4C\xA9 |0 \x4E\xF7 |0 \x6B\xC5 |0 \x6B\xC6 |0 \x6B\xC7 |0 \x6B\xC8 |0 \x6B\xC9 |0 \x6B\xCB |0 \x6B\xCA |0 \x6C\x8A |0 \x6B\xCC |0 \x6B\xCD |0 \x67\xC3 |0 \x67\xC4 |0 \x67\xC5 |0 \x5B\x8C |0 \x4B\xA3 |0 \x67\xC7 |0 \x67\xC6 |0 \x67\xC8 |0 \x67\xC9 |0 \x54\x45 |0 \x67\xCA |0 \x67\xCB |0 \x4C\x50 |0 \x4B\x97 |0 \x67\xCC |0 \x67\xCE |0 \x67\xCD |0 \x4C\xC5 |0 \x67\xCF |0 \x67\xD0 |0 \x67\xD1 |0 \x4B\xDA |0 \x4A\x4E |0 \x5B\xD2 |0 \x52\xC5 |0 \x49\x55 |0 \x4C\xD5 |0 \x67\xD2 |0 \x67\xD3 |0 \x5A\xBE |0 \x54\x75 |0 \x4F\xFA |0 \x57\xD8 |0 \x4D\x53 |0 \x67\xD5 |0 \x67\xD4 |0 \x67\xD7 |0 \x67\xD6 |0 \x53\x45 |0 \x67\xD8 |0 \x67\xD9 |0 \x54\x4E |0 \x67\xDA |0 \x54\x4F |0 \x67\xDB |0 \x49\xA6 |0 \x67\xDC |0 \x67\xDD |0 \x67\xDE |0 \x67\xDF |0 \x67\xE0 |0 \x5C\x8B |0 \x67\xE1 |0 \x67\xE2 |0 \x4E\xD7 |0 \x67\xE3 |0 \x5A\x6B |0 \x56\xF9 |0 \x49\xAB |0 \x51\x86 |0 \x67\xE4 |0 \x54\x46 |0 \x52\x4D |0 \x67\xE5 |0 \x67\xE6 |0 \x67\xE7 |0 \x67\xE8 |0 \x67\xE9 |0 \x67\xEA |0 \x67\xEB |0 \x67\xEC |0 \x67\xED |0 \x67\xEE |0 \x67\xEF |0 \x67\xF0 |0 \x67\xF1 |0 \x67\xF3 |0 \x67\xF2 |0 \x67\xF4 |0 \x57\x4D |0 \x51\xC0 |0 \x67\xF5 |0 \x67\xF6 |0 \x67\xF7 |0 \x5B\x41 |0 \x67\xF8 |0 \x58\x53 |0 \x67\xF9 |0 \x67\xFA |0 \x67\xFB |0 \x67\xFC |0 \x68\x41 |0 \x67\xFD |0 \x68\x42 |0 \x4C\xF4 |0 \x52\x9B |0 \x68\x43 |0 \x68\x44 |0 \x4F\x62 |0 \x59\xBE |0 \x49\xF8 |0 \x68\x45 |0 \x68\x46 |0 \x68\x47 |0 \x59\xF7 |0 \x68\x48 |0 \x5B\xFC |0 \x68\x49 |0 \x53\xCB |0 \x68\x4A |0 \x68\x4B |0 \x51\x54 |0 \x68\x4C |0 \x58\x9B |0 \x56\x99 |0 \x68\x4E |0 \x68\x4D |0 \x4A\x9B |0 \x4D\x99 |0 \x68\x4F |0 \x68\x50 |0 \x58\xE1 |0 \x68\x51 |0 \x68\x52 |0 \x4C\x87 |0 \x58\xBE |0 \x68\x53 |0 \x68\x54 |0 \x68\x55 |0 \x54\xF0 |0 \x56\xDF |0 \x68\x56 |0 \x68\x57 |0 \x68\x58 |0 \x68\x59 |0 \x68\x5A |0 \x5B\x81 |0 \x68\x5B |0 \x4A\xEC |0 \x52\x4A |0 \x68\x5C |0 \x68\x5D |0 \x68\x5E |0 \x68\x5F |0 \x57\xFC |0 \x68\x60 |0 \x51\xDF |0 \x4A\xB7 |0 \x5C\x56 |0 \x4F\x96 |0 \x58\x67 |0 \x68\x63 |0 \x68\x61 |0 \x68\x62 |0 \x68\x64 |0 \x4B\xA6 |0 \x4E\xFB |0 \x4F\xE1 |0 \x52\x6C |0 \x68\x65 |0 \x68\x66 |0 \x68\x67 |0 \x68\x6F |0 \x68\x68 |0 \x68\x69 |0 \x68\x6A |0 \x54\x62 |0 \x68\x92 |0 \x4B\xCC |0 \x68\x6B |0 \x68\x6C |0 \x68\x6D |0 \x4B\xC5 |0 \x52\x5E |0 \x68\x6E |0 \x68\x70 |0 \x68\x71 |0 \x68\x72 |0 \x5B\x93 |0 \x68\x73 |0 \x52\xF6 |0 \x68\x74 |0 \x52\xF7 |0 \x68\x75 |0 \x68\x76 |0 \x4C\xE3 |0 \x48\xF6 |0 \x68\x77 |0 \x68\x78 |0 \x68\x79 |0 \x68\x7A |0 \x68\x7B |0 \x68\x7C |0 \x68\x7D |0 \x68\x7E |0 \x4F\xB4 |0 \x68\x82 |0 \x68\x7F |0 \x68\x81 |0 \x68\x83 |0 \x68\x84 |0 \x51\x6D |0 \x68\x85 |0 \x68\x86 |0 \x68\x87 |0 \x68\x88 |0 \x68\x89 |0 \x68\x8A |0 \x68\x8B |0 \x68\x8C |0 \x68\x8D |0 \x50\xD7 |0 \x68\x8E |0 \x51\x4D |0 \x68\x8F |0 \x68\x90 |0 \x68\x91 |0 \x58\x83 |0 \x4A\x44 |0 \x52\x65 |0 \x62\x65 |0 \x55\x61 |0 \x62\x66 |0 \x49\x75 |0 \x57\xC9 |0 \x4A\xB2 |0 \x54\xF1 |0 \x62\x67 |0 \x58\x70 |0 \x62\x68 |0 \x4E\xE3 |0 \x62\x69 |0 \x62\x6A |0 \x52\x66 |0 \x5B\x42 |0 \x52\xD5 |0 \x4D\x8C |0 \x57\xC4 |0 \x62\x6B |0 \x52\x97 |0 \x62\x6C |0 \x4C\x47 |0 \x4C\xF2 |0 \x4D\xD1 |0 \x62\x6D |0 \x62\x6E |0 \x5A\xC3 |0 \x62\x6F |0 \x62\x70 |0 \x59\x6B |0 \x62\x71 |0 \x62\x72 |0 \x62\x73 |0 \x62\x74 |0 \x59\x76 |0 \x62\x75 |0 \x49\xFA |0 \x50\xBA |0 \x62\x76 |0 \x50\xAA |0 \x62\x77 |0 \x62\x78 |0 \x62\x79 |0 \x62\x7A |0 \x62\x7B |0 \x4C\xB6 |0 \x5D\xE1 |0 \x4B\xD2 |0 \x5D\xE3 |0 \x5D\xE2 |0 \x5D\xE5 |0 \x54\xED |0 \x5D\xE4 |0 \x4C\x60 |0 \x59\x95 |0 \x59\xF4 |0 \x5B\x94 |0 \x4F\x77 |0 \x5C\x89 |0 \x5D\xE7 |0 \x5D\xE6 |0 \x48\xA1 |0 \x57\x73 |0 \x5D\xE8 |0 \x4C\xBC |0 \x4E\xC9 |0 \x51\xBC |0 \x51\xA3 |0 \x4A\x62 |0 \x5D\xE9 |0 \x51\xA9 |0 \x52\xAF |0 \x4F\x55 |0 \x58\x7E |0 \x5D\xEA |0 \x55\x62 |0 \x49\x7D |0 \x5D\xEB |0 \x4B\xB7 |0 \x5A\xB9 |0 \x4A\x9E |0 \x5D\xEC |0 \x5A\xC8 |0 \x58\x75 |0 \x53\x84 |0 \x5D\xED |0 \x5D\xEE |0 \x5D\xEF |0 \x51\x8B |0 \x56\xD4 |0 \x58\x7D |0 \x5A\x88 |0 \x51\xA0 |0 \x5D\xF0 |0 \x56\x86 |0 \x5D\xF1 |0 \x56\x87 |0 \x59\xFD |0 \x4C\xF3 |0 \x5D\xF2 |0 \x48\xAE |0 \x58\x56 |0 \x5B\x6F |0 \x56\x8E |0 \x5D\xF3 |0 \x62\x64 |0 \x51\x45 |0 \x6B\xBE |0 \x6B\xBF |0 \x6B\xC0 |0 \x52\xD0 |0 \x54\xB7 |0 \x59\x84 |0 \x58\xDA |0 \x59\x65 |0 \x4E\xAE |0 \x4D\x6D |0 \x68\x95 |0 \x4A\xC5 |0 \x5A\x5A |0 \x6B\xC1 |0 \x4A\x9C |0 \x6B\xC2 |0 \x4B\x92 |0 \x6B\xC4 |0 \x5A\x8B |0 \x6B\xA6 |0 \x59\x49 |0 \x6B\xA8 |0 \x6B\xA7 |0 \x51\x84 |0 \x50\xD6 |0 \x49\x42 |0 \x57\xEC |0 \x58\xE7 |0 \x6B\xAA |0 \x58\x97 |0 \x6B\xA9 |0 \x5B\x91 |0 \x6B\xAB |0 \x52\x59 |0 \x4E\x95 |0 \x6B\xAD |0 \x6B\xAC |0 \x52\xDD |0 \x51\x78 |0 \x56\x4A |0 \x58\x5C |0 \x6B\xAE |0 \x6B\xAF |0 \x6B\xB0 |0 \x51\xB5 |0 \x48\xD3 |0 \x53\x9A |0 \x6B\xB1 |0 \x54\x81 |0 \x6B\xA5 |0 \x4F\xB7 |0 \x4F\xB1 |0 \x4B\x86 |0 \x4C\x67 |0 \x50\x5F |0 \x52\x72 |0 \x52\x87 |0 \x5C\xCB |0 \x4C\xEE |0 \x4F\x9A |0 \x59\x45 |0 \x48\xCF |0 \x6C\x50 |0 \x6C\x51 |0 \x58\xAB |0 \x48\xAF |0 \x6C\x52 |0 \x6C\x53 |0 \x6C\x54 |0 \x54\x6A |0 \x4F\xCE |0 \x6C\x57 |0 \x6C\x56 |0 \x49\x7E |0 \x6C\x55 |0 \x6C\x58 |0 \x6C\x59 |0 \x57\xA3 |0 \x54\xCC |0 \x4D\xAA |0 \x64\xB7 |0 \x64\xB8 |0 \x64\xB9 |0 \x4F\xC1 |0 \x59\xF3 |0 \x5A\xCE |0 \x55\x78 |0 \x59\xB2 |0 \x4B\xA4 |0 \x54\x8B |0 \x69\x9D |0 \x58\x8F |0 \x56\x53 |0 \x58\xEA |0 \x64\x90 |0 \x57\x88 |0 \x4D\x6B |0 \x4B\xD8 |0 \x69\x9E |0 \x48\xE3 |0 \x56\x6C |0 \x69\x9F |0 \x5A\xA3 |0 \x51\xAC |0 \x51\x8D |0 \x53\xC3 |0 \x4F\xB0 |0 \x69\xA0 |0 \x4E\xD4 |0 \x69\xA1 |0 \x69\xA2 |0 \x69\xA3 |0 \x59\xC2 |0 \x53\xB4 |0 \x57\x67 |0 \x69\xA4 |0 \x5A\x51 |0 \x50\x65 |0 \x56\xE1 |0 \x69\xA5 |0 \x69\xA6 |0 \x59\x75 |0 \x4B\xED |0 \x69\xA7 |0 \x69\xA8 |0 \x4B\x7F |0 \x69\xA9 |0 \x69\xAA |0 \x49\xFB |0 \x69\xAB |0 \x69\xAC |0 \x54\xA6 |0 \x4C\x88 |0 \x66\xA8 |0 \x66\xA9 |0 \x66\xAA |0 \x66\xAB |0 \x53\xAD |0 \x66\xAC |0 \x66\xAD |0 \x4C\x69 |0 \x55\xB2 |0 \x61\xB7 |0 \x6C\x6F |0 \x6C\x70 |0 \x49\xCC |0 \x6C\x71 |0 \x6C\x73 |0 \x6C\x72 |0 \x61\xBA |0 \x4E\xA1 |0 \x61\xBB |0 \x61\xBC |0 \x61\xBD |0 \x61\xBE |0 \x61\xBF |0 \x61\xC0 |0 \x4C\x59 |0 \x59\xFA |0 \x4F\x44 |0 \x55\xCD |0 \x49\x45 |0 \x56\x67 |0 \x61\xC1 |0 \x4B\xFB |0 \x54\xC3 |0 \x61\xC2 |0 \x4F\x68 |0 \x49\x9E |0 \x61\xC3 |0 \x4B\xF5 |0 \x61\xC4 |0 \x52\xD8 |0 \x61\xC5 |0 \x58\x7A |0 \x4D\x7D |0 \x61\xC6 |0 \x50\xA0 |0 \x61\xC7 |0 \x49\xF5 |0 \x61\xC8 |0 \x51\x94 |0 \x61\xC9 |0 \x61\xCA |0 \x51\xF7 |0 \x61\xCB |0 \x61\xCC |0 \x61\xCD |0 \x55\xD6 |0 \x5C\xB7 |0 \x5D\x86 |0 \x58\x84 |0 \x68\xA4 |0 \x5E\xAF |0 \x51\xEC |0 \x5A\xA5 |0 \x57\x74 |0 \x59\x51 |0 \x4A\x7B |0 \x54\x9E |0 \x49\xB4 |0 \x51\xBE |0 \x63\xDF |0 \x55\xBA |0 \x63\xE0 |0 \x63\xE1 |0 \x4F\xD3 |0 \x63\xE2 |0 \x5C\x44 |0 \x57\x75 |0 \x63\xE4 |0 \x4E\xDC |0 \x63\xE3 |0 \x63\xE5 |0 \x63\xE6 |0 \x51\xED |0 \x4F\x5E |0 \x63\xE7 |0 \x51\xE5 |0 \x4D\xA6 |0 \x63\xE8 |0 \x63\xE9 |0 \x4A\x72 |0 \x59\x8A |0 \x50\x45 |0 \x63\xEA |0 \x53\xEE |0 \x63\xEB |0 \x63\xEC |0 \x63\xED |0 \x53\xAC |0 \x63\xEE |0 \x55\x47 |0 \x63\xEF |0 \x63\xF0 |0 \x63\xF1 |0 \x63\x59 |0 \x63\xF2 |0 \x63\xF3 |0 \x51\xE1 |0 \x63\xF4 |0 \x63\xF5 |0 \x5B\xE7 |0 \x63\xF6 |0 \x63\xF7 |0 \x4D\x67 |0 \x6C\x5B |0 \x6C\x5A |0 \x6C\x5E |0 \x6C\x5C |0 \x4D\xA0 |0 \x6C\x5F |0 \x6C\x60 |0 \x6C\x62 |0 \x6C\x61 |0 \x6C\x64 |0 \x6C\x63 |0 \x6C\x65 |0 \x6C\x66 |0 \x6C\x67 |0 \x56\x89 |0 \x4C\xDE |0 \x6C\x74 |0 \x6C\x75 |0 \x6C\x76 |0 \x6C\x78 |0 \x6C\x7A |0 \x6C\x77 |0 \x6C\x7B |0 \x6C\x79 |0 \x5C\x77 |0 \x6C\x7C |0 \x6C\x7D |0 \x6C\x7E |0 \x6C\x7F |0 \x6C\x81 |0 \x5E\x6B |0 \x5C\xA9 |0 \x63\x98 |0 \x4D\x8E |0 \x50\x9E |0 \x4E\x8B |0 \x6C\x69 |0 \x53\xC6 |0 \x6C\x68 |0 \x6C\x6A |0 \x6C\x6C |0 \x6C\x6B |0 \x6C\x6D |0 \x57\xB9 |0 \x6C\x6E |0 \x52\xA6 |0 \x5A\x84 |0 \x6B\xCE |0 \x51\xB2 |0 \x6B\xCF |0 \x6B\xD0 |0 \x6B\xD1 |0 \x6B\xD2 |0 \x6B\xD3 |0 \x6B\xD5 |0 \x49\x4B |0 \x6B\xD6 |0 \x6B\xD7 |0 \x6B\xD8 |0 \x6B\xD9 |0 \x6B\xDA |0 \x6B\xDB |0 \x6B\xDC |0 \x6B\xDD |0 \x58\x6A |0 \x6B\xDE |0 \x6B\xDF |0 \x6B\xE0 |0 \x6B\xE1 |0 \x6B\xE2 |0 \x6B\xE3 |0 \x50\xEF |0 \x6B\xE4 |0 \x6B\xE5 |0 \x6B\xE6 |0 \x6B\xE7 |0 \x6B\xE8 |0 \x6B\xE9 |0 \x6B\xEA |0 \x6B\xEB |0 \x6B\xEC |0 \x6B\xED |0 \x6B\xEE |0 \x6B\xEF |0 \x6B\xF0 |0 \x6B\xF1 |0 \x6B\xF2 |0 \x6B\xF3 |0 \x4F\xA7 |0 \x6B\xF4 |0 \x6B\xF5 |0 \x6B\xF6 |0 \x6B\xF7 |0 \x54\xF9 |0 \x6B\xF8 |0 \x6B\xF9 |0 \x6B\xFA |0 \x6B\xFB |0 \x6B\xFC |0 \x6B\xFD |0 \x6C\x41 |0 \x6C\x42 |0 \x6C\x43 |0 \x6C\x44 |0 \x6C\x45 |0 \x6C\x46 |0 \x6C\x47 |0 \x6C\x48 |0 \x49\x8F |0 \x6C\x49 |0 \x6C\x4A |0 \x6C\x4B |0 \x6C\x4C |0 \x6C\x4D |0 \x51\x7B |0 \x6C\x4E |0 \x6C\x4F |0 \x52\xF0 |0 \x68\xAE |0 \x4E\xA5 |0 \x68\xAF |0 \x52\x9A |0 \x53\x58 |0 \x59\x5B |0 \x68\xB0 |0 \x68\xB1 |0 \x68\xB2 |0 \x68\xB3 |0 \x68\xB4 |0 \x59\x5C |0 \x59\x8D |0 \x68\xB6 |0 \x68\xB5 |0 \x5A\xA6 |0 \x57\x72 |0 \x68\xB7 |0 \x68\xB9 |0 \x68\xB8 |0 \x68\xBA |0 \x68\xBB |0 \x4C\xEA |0 \x68\xBC |0 \x4D\xE7 |0 \x68\xBD |0 \x68\xBE |0 \x4F\xE8 |0 \x68\xBF |0 \x4B\xEB |0 \x68\xC0 |0 \x68\xC1 |0 \x68\xC2 |0 \x68\xC3 |0 \x54\xB4 |0 \x68\xC4 |0 \x68\xC5 |0 \x68\xC6 |0 \x53\x95 |0 \x68\xC7 |0 \x68\xC8 |0 \x68\xC9 |0 \x6C\x5D |0 \x68\xCA |0 \x68\xCB |0 \x68\xCC |0 \x68\xCD |0 \x68\xCE |0 \x4D\xD6 |0 \x68\xCF |0 \x68\xD0 |0 \x68\xD1 |0 \x68\xD2 |0 \x68\xD3 |0 \x68\xD4 |0 \x68\xD5 |0 \x68\xD7 |0 \x5A\x45 |0 \x68\xD6 |0 \x68\xD8 |0 \x6B\x5A |0 \x51\xB8 |0 \x6C\x85 |0 \x6C\x86 |0 \x6C\x87 |0 \x6C\x88 |0 \x6C\x89 |0 \x51\xB3 |0 \x6C\x8B |0 \x6C\x8C |0 \x51\xF2 |0 \x6A\xEF |0 \x6A\xEE |0 \x51\xE8 |0 \x6C\x82 |0 \x6C\x83 |0 \x4E\x66 |0 \x5D\x85 |0 \x55\xF1 |0 \x50\xE7 |0 \x68\xA3 |0 \x4D\xD9 |0 \x54\x4D |0 \x52\xAB |0 \x6C\x8D |0 \x6C\x8E |0 \x6C\x8F |0 \x6C\x91 |0 \x6C\x90 |0 \x6C\x92 |0 \x6C\x95 |0 \x6C\x94 |0 \x6C\x93 |0 \x6C\x96 |0 \x6C\x97 |0 \x67\x8A |0 \x67\x8B |0 \x67\x8C |0 \x6B\xBB |0 \x6B\xBC |0 \x6B\xBD |0 \x4B\xA5 |0 \x5C\xBD |0 \x4D\x64 |0 \x5C\xBA |0 \x5E\xB0 |0 \x55\xF2 |0 \x6C\x98 |0 \x6C\x99 |0 \x6C\x9A |0 \x6C\x9C |0 \x6C\x9B |0 \x49\x67 |0 \x6C\x9D |0 \x6C\x9E |0 \x6C\x9F |0 \x53\xEA |0 \x66\xB3 |0 \x4A\x7D |0 \x6B\xB2 |0 \x6B\xB3 |0 \x51\x85 |0 \x6B\xB4 |0 \x6B\xB5 |0 \x6B\xB6 |0 \x6B\xB7 |0 \x6B\xB8 |0 \x6B\xB9 |0 \x54\xA2 |0 \x6B\xBA |0 \x51\x9B |0 \x4D\x48 |0 \x67\x89 |0 \x4D\x8B |0 \x5D\x7F |0 \x76\x41 |0 \x76\x42 |0 \x76\x43 |0 \x76\x44 |0 \x76\x45 |0 \x76\x46 |0 \x76\x47 |0 \x76\x48 |0 \x76\x49 |0 \x76\x4A |0 \x76\x4B |0 \x76\x4C |0 \x76\x4D |0 \x76\x4E |0 \x76\x4F |0 \x76\x50 |0 \x76\x51 |0 \x76\x52 |0 \x76\x53 |0 \x76\x54 |0 \x76\x55 |0 \x76\x56 |0 \x76\x57 |0 \x76\x58 |0 \x76\x59 |0 \x76\x5A |0 \x76\x5B |0 \x76\x5C |0 \x76\x5D |0 \x76\x5E |0 \x76\x5F |0 \x76\x60 |0 \x76\x61 |0 \x76\x62 |0 \x76\x63 |0 \x76\x64 |0 \x76\x65 |0 \x76\x66 |0 \x76\x67 |0 \x76\x68 |0 \x76\x69 |0 \x76\x6A |0 \x76\x6B |0 \x76\x6C |0 \x76\x6D |0 \x76\x6E |0 \x76\x6F |0 \x76\x70 |0 \x76\x71 |0 \x76\x72 |0 \x76\x73 |0 \x76\x74 |0 \x76\x75 |0 \x76\x76 |0 \x76\x77 |0 \x76\x78 |0 \x76\x79 |0 \x76\x7A |0 \x76\x7B |0 \x76\x7C |0 \x76\x7D |0 \x76\x7E |0 \x76\x7F |0 \x76\x81 |0 \x76\x82 |0 \x76\x83 |0 \x76\x84 |0 \x76\x85 |0 \x76\x86 |0 \x76\x87 |0 \x76\x88 |0 \x76\x89 |0 \x76\x8A |0 \x76\x8B |0 \x76\x8C |0 \x76\x8D |0 \x76\x8E |0 \x76\x8F |0 \x76\x90 |0 \x76\x91 |0 \x76\x92 |0 \x76\x93 |0 \x76\x94 |0 \x76\x95 |0 \x76\x96 |0 \x76\x97 |0 \x76\x98 |0 \x76\x99 |0 \x76\x9A |0 \x76\x9B |0 \x76\x9C |0 \x76\x9D |0 \x76\x9E |0 \x76\x9F |0 \x76\xA0 |0 \x76\xA1 |0 \x76\xA2 |0 \x76\xA3 |0 \x76\xA4 |0 \x76\xA5 |0 \x76\xA6 |0 \x76\xA7 |0 \x76\xA8 |0 \x76\xA9 |0 \x76\xAA |0 \x76\xAB |0 \x76\xAC |0 \x76\xAD |0 \x76\xAE |0 \x76\xAF |0 \x76\xB0 |0 \x76\xB1 |0 \x76\xB2 |0 \x76\xB3 |0 \x76\xB4 |0 \x76\xB5 |0 \x76\xB6 |0 \x76\xB7 |0 \x76\xB8 |0 \x76\xB9 |0 \x76\xBA |0 \x76\xBB |0 \x76\xBC |0 \x76\xBD |0 \x76\xBE |0 \x76\xBF |0 \x76\xC0 |0 \x76\xC1 |0 \x76\xC2 |0 \x76\xC3 |0 \x76\xC4 |0 \x76\xC5 |0 \x76\xC6 |0 \x76\xC7 |0 \x76\xC8 |0 \x76\xC9 |0 \x76\xCA |0 \x76\xCB |0 \x76\xCC |0 \x76\xCD |0 \x76\xCE |0 \x76\xCF |0 \x76\xD0 |0 \x76\xD1 |0 \x76\xD2 |0 \x76\xD3 |0 \x76\xD4 |0 \x76\xD5 |0 \x76\xD6 |0 \x76\xD7 |0 \x76\xD8 |0 \x76\xD9 |0 \x76\xDA |0 \x76\xDB |0 \x76\xDC |0 \x76\xDD |0 \x76\xDE |0 \x76\xDF |0 \x76\xE0 |0 \x76\xE1 |0 \x76\xE2 |0 \x76\xE3 |0 \x76\xE4 |0 \x76\xE5 |0 \x76\xE6 |0 \x76\xE7 |0 \x76\xE8 |0 \x76\xE9 |0 \x76\xEA |0 \x76\xEB |0 \x76\xEC |0 \x76\xED |0 \x76\xEE |0 \x76\xEF |0 \x76\xF0 |0 \x76\xF1 |0 \x76\xF2 |0 \x76\xF3 |0 \x76\xF4 |0 \x76\xF5 |0 \x76\xF6 |0 \x76\xF7 |0 \x76\xF8 |0 \x76\xF9 |0 \x76\xFA |0 \x76\xFB |0 \x76\xFC |0 \x76\xFD |0 \x77\x41 |0 \x77\x42 |0 \x77\x43 |0 \x77\x44 |0 \x77\x45 |0 \x77\x46 |0 \x77\x47 |0 \x77\x48 |0 \x77\x49 |0 \x77\x4A |0 \x77\x4B |0 \x77\x4C |0 \x77\x4D |0 \x77\x4E |0 \x77\x4F |0 \x77\x50 |0 \x77\x51 |0 \x77\x52 |0 \x77\x53 |0 \x77\x54 |0 \x77\x55 |0 \x77\x56 |0 \x77\x57 |0 \x77\x58 |0 \x77\x59 |0 \x77\x5A |0 \x77\x5B |0 \x77\x5C |0 \x77\x5D |0 \x77\x5E |0 \x77\x5F |0 \x77\x60 |0 \x77\x61 |0 \x77\x62 |0 \x77\x63 |0 \x77\x64 |0 \x77\x65 |0 \x77\x66 |0 \x77\x67 |0 \x77\x68 |0 \x77\x69 |0 \x77\x6A |0 \x77\x6B |0 \x77\x6C |0 \x77\x6D |0 \x77\x6E |0 \x77\x6F |0 \x77\x70 |0 \x77\x71 |0 \x77\x72 |0 \x77\x73 |0 \x77\x74 |0 \x77\x75 |0 \x77\x76 |0 \x77\x77 |0 \x77\x78 |0 \x77\x79 |0 \x77\x7A |0 \x77\x7B |0 \x77\x7C |0 \x77\x7D |0 \x77\x7E |0 \x77\x7F |0 \x77\x81 |0 \x77\x82 |0 \x77\x83 |0 \x77\x84 |0 \x77\x85 |0 \x77\x86 |0 \x77\x87 |0 \x77\x88 |0 \x77\x89 |0 \x77\x8A |0 \x77\x8B |0 \x77\x8C |0 \x77\x8D |0 \x77\x8E |0 \x77\x8F |0 \x77\x90 |0 \x77\x91 |0 \x77\x92 |0 \x77\x93 |0 \x77\x94 |0 \x77\x95 |0 \x77\x96 |0 \x77\x97 |0 \x77\x98 |0 \x77\x99 |0 \x77\x9A |0 \x77\x9B |0 \x77\x9C |0 \x77\x9D |0 \x77\x9E |0 \x77\x9F |0 \x77\xA0 |0 \x77\xA1 |0 \x77\xA2 |0 \x77\xA3 |0 \x77\xA4 |0 \x77\xA5 |0 \x77\xA6 |0 \x77\xA7 |0 \x77\xA8 |0 \x77\xA9 |0 \x77\xAA |0 \x77\xAB |0 \x77\xAC |0 \x77\xAD |0 \x77\xAE |0 \x77\xAF |0 \x77\xB0 |0 \x77\xB1 |0 \x77\xB2 |0 \x77\xB3 |0 \x77\xB4 |0 \x77\xB5 |0 \x77\xB6 |0 \x77\xB7 |0 \x77\xB8 |0 \x77\xB9 |0 \x77\xBA |0 \x77\xBB |0 \x77\xBC |0 \x77\xBD |0 \x77\xBE |0 \x77\xBF |0 \x77\xC0 |0 \x77\xC1 |0 \x77\xC2 |0 \x77\xC3 |0 \x77\xC4 |0 \x77\xC5 |0 \x77\xC6 |0 \x77\xC7 |0 \x77\xC8 |0 \x77\xC9 |0 \x77\xCA |0 \x77\xCB |0 \x77\xCC |0 \x77\xCD |0 \x77\xCE |0 \x77\xCF |0 \x77\xD0 |0 \x77\xD1 |0 \x77\xD2 |0 \x77\xD3 |0 \x77\xD4 |0 \x77\xD5 |0 \x77\xD6 |0 \x77\xD7 |0 \x77\xD8 |0 \x77\xD9 |0 \x77\xDA |0 \x77\xDB |0 \x77\xDC |0 \x77\xDD |0 \x77\xDE |0 \x77\xDF |0 \x77\xE0 |0 \x77\xE1 |0 \x77\xE2 |0 \x77\xE3 |0 \x77\xE4 |0 \x77\xE5 |0 \x77\xE6 |0 \x77\xE7 |0 \x77\xE8 |0 \x77\xE9 |0 \x77\xEA |0 \x77\xEB |0 \x77\xEC |0 \x77\xED |0 \x77\xEE |0 \x77\xEF |0 \x77\xF0 |0 \x77\xF1 |0 \x77\xF2 |0 \x77\xF3 |0 \x77\xF4 |0 \x77\xF5 |0 \x77\xF6 |0 \x77\xF7 |0 \x77\xF8 |0 \x77\xF9 |0 \x77\xFA |0 \x77\xFB |0 \x77\xFC |0 \x77\xFD |0 \x78\x41 |0 \x78\x42 |0 \x78\x43 |0 \x78\x44 |0 \x78\x45 |0 \x78\x46 |0 \x78\x47 |0 \x78\x48 |0 \x78\x49 |0 \x78\x4A |0 \x78\x4B |0 \x78\x4C |0 \x78\x4D |0 \x78\x4E |0 \x78\x4F |0 \x78\x50 |0 \x78\x51 |0 \x78\x52 |0 \x78\x53 |0 \x78\x54 |0 \x78\x55 |0 \x78\x56 |0 \x78\x57 |0 \x78\x58 |0 \x78\x59 |0 \x78\x5A |0 \x78\x5B |0 \x78\x5C |0 \x78\x5D |0 \x78\x5E |0 \x78\x5F |0 \x78\x60 |0 \x78\x61 |0 \x78\x62 |0 \x78\x63 |0 \x78\x64 |0 \x78\x65 |0 \x78\x66 |0 \x78\x67 |0 \x78\x68 |0 \x78\x69 |0 \x78\x6A |0 \x78\x6B |0 \x78\x6C |0 \x78\x6D |0 \x78\x6E |0 \x78\x6F |0 \x78\x70 |0 \x78\x71 |0 \x78\x72 |0 \x78\x73 |0 \x78\x74 |0 \x78\x75 |0 \x78\x76 |0 \x78\x77 |0 \x78\x78 |0 \x78\x79 |0 \x78\x7A |0 \x78\x7B |0 \x78\x7C |0 \x78\x7D |0 \x78\x7E |0 \x78\x7F |0 \x78\x81 |0 \x78\x82 |0 \x78\x83 |0 \x78\x84 |0 \x78\x85 |0 \x78\x86 |0 \x78\x87 |0 \x78\x88 |0 \x78\x89 |0 \x78\x8A |0 \x78\x8B |0 \x78\x8C |0 \x78\x8D |0 \x78\x8E |0 \x78\x8F |0 \x78\x90 |0 \x78\x91 |0 \x78\x92 |0 \x78\x93 |0 \x78\x94 |0 \x78\x95 |0 \x78\x96 |0 \x78\x97 |0 \x78\x98 |0 \x78\x99 |0 \x78\x9A |0 \x78\x9B |0 \x78\x9C |0 \x78\x9D |0 \x78\x9E |0 \x78\x9F |0 \x78\xA0 |0 \x78\xA1 |0 \x78\xA2 |0 \x78\xA3 |0 \x78\xA4 |0 \x78\xA5 |0 \x78\xA6 |0 \x78\xA7 |0 \x78\xA8 |0 \x78\xA9 |0 \x78\xAA |0 \x78\xAB |0 \x78\xAC |0 \x78\xAD |0 \x78\xAE |0 \x78\xAF |0 \x78\xB0 |0 \x78\xB1 |0 \x78\xB2 |0 \x78\xB3 |0 \x78\xB4 |0 \x78\xB5 |0 \x78\xB6 |0 \x78\xB7 |0 \x78\xB8 |0 \x78\xB9 |0 \x78\xBA |0 \x78\xBB |0 \x78\xBC |0 \x78\xBD |0 \x78\xBE |0 \x78\xBF |0 \x78\xC0 |0 \x78\xC1 |0 \x78\xC2 |0 \x78\xC3 |0 \x78\xC4 |0 \x78\xC5 |0 \x78\xC6 |0 \x78\xC7 |0 \x78\xC8 |0 \x78\xC9 |0 \x78\xCA |0 \x78\xCB |0 \x78\xCC |0 \x78\xCD |0 \x78\xCE |0 \x78\xCF |0 \x78\xD0 |0 \x78\xD1 |0 \x78\xD2 |0 \x78\xD3 |0 \x78\xD4 |0 \x78\xD5 |0 \x78\xD6 |0 \x78\xD7 |0 \x78\xD8 |0 \x78\xD9 |0 \x78\xDA |0 \x78\xDB |0 \x78\xDC |0 \x78\xDD |0 \x78\xDE |0 \x78\xDF |0 \x78\xE0 |0 \x78\xE1 |0 \x78\xE2 |0 \x78\xE3 |0 \x78\xE4 |0 \x78\xE5 |0 \x78\xE6 |0 \x78\xE7 |0 \x78\xE8 |0 \x78\xE9 |0 \x78\xEA |0 \x78\xEB |0 \x78\xEC |0 \x78\xED |0 \x78\xEE |0 \x78\xEF |0 \x78\xF0 |0 \x78\xF1 |0 \x78\xF2 |0 \x78\xF3 |0 \x78\xF4 |0 \x78\xF5 |0 \x78\xF6 |0 \x78\xF7 |0 \x78\xF8 |0 \x78\xF9 |0 \x78\xFA |0 \x78\xFB |0 \x78\xFC |0 \x78\xFD |0 \x79\x41 |0 \x79\x42 |0 \x79\x43 |0 \x79\x44 |0 \x79\x45 |0 \x79\x46 |0 \x79\x47 |0 \x79\x48 |0 \x79\x49 |0 \x79\x4A |0 \x79\x4B |0 \x79\x4C |0 \x79\x4D |0 \x79\x4E |0 \x79\x4F |0 \x79\x50 |0 \x79\x51 |0 \x79\x52 |0 \x79\x53 |0 \x79\x54 |0 \x79\x55 |0 \x79\x56 |0 \x79\x57 |0 \x79\x58 |0 \x79\x59 |0 \x79\x5A |0 \x79\x5B |0 \x79\x5C |0 \x79\x5D |0 \x79\x5E |0 \x79\x5F |0 \x79\x60 |0 \x79\x61 |0 \x79\x62 |0 \x79\x63 |0 \x79\x64 |0 \x79\x65 |0 \x79\x66 |0 \x79\x67 |0 \x79\x68 |0 \x79\x69 |0 \x79\x6A |0 \x79\x6B |0 \x79\x6C |0 \x79\x6D |0 \x79\x6E |0 \x79\x6F |0 \x79\x70 |0 \x79\x71 |0 \x79\x72 |0 \x79\x73 |0 \x79\x74 |0 \x79\x75 |0 \x79\x76 |0 \x79\x77 |0 \x79\x78 |0 \x79\x79 |0 \x79\x7A |0 \x79\x7B |0 \x79\x7C |0 \x79\x7D |0 \x79\x7E |0 \x79\x7F |0 \x79\x81 |0 \x79\x82 |0 \x79\x83 |0 \x79\x84 |0 \x79\x85 |0 \x79\x86 |0 \x79\x87 |0 \x79\x88 |0 \x79\x89 |0 \x79\x8A |0 \x79\x8B |0 \x79\x8C |0 \x79\x8D |0 \x79\x8E |0 \x79\x8F |0 \x79\x90 |0 \x79\x91 |0 \x79\x92 |0 \x79\x93 |0 \x79\x94 |0 \x79\x95 |0 \x79\x96 |0 \x79\x97 |0 \x79\x98 |0 \x79\x99 |0 \x79\x9A |0 \x79\x9B |0 \x79\x9C |0 \x79\x9D |0 \x79\x9E |0 \x79\x9F |0 \x79\xA0 |0 \x79\xA1 |0 \x79\xA2 |0 \x79\xA3 |0 \x79\xA4 |0 \x79\xA5 |0 \x79\xA6 |0 \x79\xA7 |0 \x79\xA8 |0 \x79\xA9 |0 \x79\xAA |0 \x79\xAB |0 \x79\xAC |0 \x79\xAD |0 \x79\xAE |0 \x79\xAF |0 \x79\xB0 |0 \x79\xB1 |0 \x79\xB2 |0 \x79\xB3 |0 \x79\xB4 |0 \x79\xB5 |0 \x79\xB6 |0 \x79\xB7 |0 \x79\xB8 |0 \x79\xB9 |0 \x79\xBA |0 \x79\xBB |0 \x79\xBC |0 \x79\xBD |0 \x79\xBE |0 \x79\xBF |0 \x79\xC0 |0 \x79\xC1 |0 \x79\xC2 |0 \x79\xC3 |0 \x79\xC4 |0 \x79\xC5 |0 \x79\xC6 |0 \x79\xC7 |0 \x79\xC8 |0 \x79\xC9 |0 \x79\xCA |0 \x79\xCB |0 \x79\xCC |0 \x79\xCD |0 \x79\xCE |0 \x79\xCF |0 \x79\xD0 |0 \x79\xD1 |0 \x79\xD2 |0 \x79\xD3 |0 \x79\xD4 |0 \x79\xD5 |0 \x79\xD6 |0 \x79\xD7 |0 \x79\xD8 |0 \x79\xD9 |0 \x79\xDA |0 \x79\xDB |0 \x79\xDC |0 \x79\xDD |0 \x79\xDE |0 \x79\xDF |0 \x79\xE0 |0 \x79\xE1 |0 \x79\xE2 |0 \x79\xE3 |0 \x79\xE4 |0 \x79\xE5 |0 \x79\xE6 |0 \x79\xE7 |0 \x79\xE8 |0 \x79\xE9 |0 \x79\xEA |0 \x79\xEB |0 \x79\xEC |0 \x79\xED |0 \x79\xEE |0 \x79\xEF |0 \x79\xF0 |0 \x79\xF1 |0 \x79\xF2 |0 \x79\xF3 |0 \x79\xF4 |0 \x79\xF5 |0 \x79\xF6 |0 \x79\xF7 |0 \x79\xF8 |0 \x79\xF9 |0 \x79\xFA |0 \x79\xFB |0 \x79\xFC |0 \x79\xFD |0 \x7A\x41 |0 \x7A\x42 |0 \x7A\x43 |0 \x7A\x44 |0 \x7A\x45 |0 \x7A\x46 |0 \x7A\x47 |0 \x7A\x48 |0 \x7A\x49 |0 \x7A\x4A |0 \x7A\x4B |0 \x7A\x4C |0 \x7A\x4D |0 \x7A\x4E |0 \x7A\x4F |0 \x7A\x50 |0 \x7A\x51 |0 \x7A\x52 |0 \x7A\x53 |0 \x7A\x54 |0 \x7A\x55 |0 \x7A\x56 |0 \x7A\x57 |0 \x7A\x58 |0 \x7A\x59 |0 \x7A\x5A |0 \x7A\x5B |0 \x7A\x5C |0 \x7A\x5D |0 \x7A\x5E |0 \x7A\x5F |0 \x7A\x60 |0 \x7A\x61 |0 \x7A\x62 |0 \x7A\x63 |0 \x7A\x64 |0 \x7A\x65 |0 \x7A\x66 |0 \x7A\x67 |0 \x7A\x68 |0 \x7A\x69 |0 \x7A\x6A |0 \x7A\x6B |0 \x7A\x6C |0 \x7A\x6D |0 \x7A\x6E |0 \x7A\x6F |0 \x7A\x70 |0 \x7A\x71 |0 \x7A\x72 |0 \x7A\x73 |0 \x7A\x74 |0 \x7A\x75 |0 \x7A\x76 |0 \x7A\x77 |0 \x7A\x78 |0 \x7A\x79 |0 \x7A\x7A |0 \x7A\x7B |0 \x7A\x7C |0 \x7A\x7D |0 \x7A\x7E |0 \x7A\x7F |0 \x7A\x81 |0 \x7A\x82 |0 \x7A\x83 |0 \x7A\x84 |0 \x7A\x85 |0 \x7A\x86 |0 \x7A\x87 |0 \x7A\x88 |0 \x7A\x89 |0 \x7A\x8A |0 \x7A\x8B |0 \x7A\x8C |0 \x7A\x8D |0 \x7A\x8E |0 \x7A\x8F |0 \x7A\x90 |0 \x7A\x91 |0 \x7A\x92 |0 \x7A\x93 |0 \x7A\x94 |0 \x7A\x95 |0 \x7A\x96 |0 \x7A\x97 |0 \x7A\x98 |0 \x7A\x99 |0 \x7A\x9A |0 \x7A\x9B |0 \x7A\x9C |0 \x7A\x9D |0 \x7A\x9E |0 \x7A\x9F |0 \x7A\xA0 |0 \x7A\xA1 |0 \x7A\xA2 |0 \x7A\xA3 |0 \x7A\xA4 |0 \x7A\xA5 |0 \x7A\xA6 |0 \x7A\xA7 |0 \x7A\xA8 |0 \x7A\xA9 |0 \x7A\xAA |0 \x7A\xAB |0 \x7A\xAC |0 \x7A\xAD |0 \x7A\xAE |0 \x7A\xAF |0 \x7A\xB0 |0 \x7A\xB1 |0 \x7A\xB2 |0 \x7A\xB3 |0 \x7A\xB4 |0 \x7A\xB5 |0 \x7A\xB6 |0 \x7A\xB7 |0 \x7A\xB8 |0 \x7A\xB9 |0 \x7A\xBA |0 \x7A\xBB |0 \x7A\xBC |0 \x7A\xBD |0 \x7A\xBE |0 \x7A\xBF |0 \x7A\xC0 |0 \x7A\xC1 |0 \x7A\xC2 |0 \x7A\xC3 |0 \x7A\xC4 |0 \x7A\xC5 |0 \x7A\xC6 |0 \x7A\xC7 |0 \x7A\xC8 |0 \x7A\xC9 |0 \x7A\xCA |0 \x7A\xCB |0 \x7A\xCC |0 \x7A\xCD |0 \x7A\xCE |0 \x7A\xCF |0 \x7A\xD0 |0 \x7A\xD1 |0 \x7A\xD2 |0 \x7A\xD3 |0 \x7A\xD4 |0 \x7A\xD5 |0 \x7A\xD6 |0 \x7A\xD7 |0 \x7A\xD8 |0 \x7A\xD9 |0 \x7A\xDA |0 \x7A\xDB |0 \x7A\xDC |0 \x7A\xDD |0 \x7A\xDE |0 \x7A\xDF |0 \x7A\xE0 |0 \x7A\xE1 |0 \x7A\xE2 |0 \x7A\xE3 |0 \x7A\xE4 |0 \x7A\xE5 |0 \x7A\xE6 |0 \x7A\xE7 |0 \x7A\xE8 |0 \x7A\xE9 |0 \x7A\xEA |0 \x7A\xEB |0 \x7A\xEC |0 \x7A\xED |0 \x7A\xEE |0 \x7A\xEF |0 \x7A\xF0 |0 \x7A\xF1 |0 \x7A\xF2 |0 \x7A\xF3 |0 \x7A\xF4 |0 \x7A\xF5 |0 \x7A\xF6 |0 \x7A\xF7 |0 \x7A\xF8 |0 \x7A\xF9 |0 \x7A\xFA |0 \x7A\xFB |0 \x7A\xFC |0 \x7A\xFD |0 \x7B\x41 |0 \x7B\x42 |0 \x7B\x43 |0 \x7B\x44 |0 \x7B\x45 |0 \x7B\x46 |0 \x7B\x47 |0 \x7B\x48 |0 \x7B\x49 |0 \x7B\x4A |0 \x7B\x4B |0 \x7B\x4C |0 \x7B\x4D |0 \x7B\x4E |0 \x7B\x4F |0 \x7B\x50 |0 \x7B\x51 |0 \x7B\x52 |0 \x7B\x53 |0 \x7B\x54 |0 \x7B\x55 |0 \x7B\x56 |0 \x7B\x57 |0 \x7B\x58 |0 \x7B\x59 |0 \x7B\x5A |0 \x7B\x5B |0 \x7B\x5C |0 \x7B\x5D |0 \x7B\x5E |0 \x7B\x5F |0 \x7B\x60 |0 \x7B\x61 |0 \x7B\x62 |0 \x7B\x63 |0 \x7B\x64 |0 \x7B\x65 |0 \x7B\x66 |0 \x7B\x67 |0 \x7B\x68 |0 \x7B\x69 |0 \x7B\x6A |0 \x7B\x6B |0 \x7B\x6C |0 \x7B\x6D |0 \x7B\x6E |0 \x7B\x6F |0 \x7B\x70 |0 \x7B\x71 |0 \x7B\x72 |0 \x7B\x73 |0 \x7B\x74 |0 \x7B\x75 |0 \x7B\x76 |0 \x7B\x77 |0 \x7B\x78 |0 \x7B\x79 |0 \x7B\x7A |0 \x7B\x7B |0 \x7B\x7C |0 \x7B\x7D |0 \x7B\x7E |0 \x7B\x7F |0 \x7B\x81 |0 \x7B\x82 |0 \x7B\x83 |0 \x7B\x84 |0 \x7B\x85 |0 \x7B\x86 |0 \x7B\x87 |0 \x7B\x88 |0 \x7B\x89 |0 \x7B\x8A |0 \x7B\x8B |0 \x7B\x8C |0 \x7B\x8D |0 \x7B\x8E |0 \x7B\x8F |0 \x7B\x90 |0 \x7B\x91 |0 \x7B\x92 |0 \x7B\x93 |0 \x7B\x94 |0 \x7B\x95 |0 \x7B\x96 |0 \x7B\x97 |0 \x7B\x98 |0 \x7B\x99 |0 \x7B\x9A |0 \x7B\x9B |0 \x7B\x9C |0 \x7B\x9D |0 \x7B\x9E |0 \x7B\x9F |0 \x7B\xA0 |0 \x7B\xA1 |0 \x7B\xA2 |0 \x7B\xA3 |0 \x7B\xA4 |0 \x7B\xA5 |0 \x7B\xA6 |0 \x7B\xA7 |0 \x7B\xA8 |0 \x7B\xA9 |0 \x7B\xAA |0 \x7B\xAB |0 \x7B\xAC |0 \x7B\xAD |0 \x7B\xAE |0 \x7B\xAF |0 \x7B\xB0 |0 \x7B\xB1 |0 \x7B\xB2 |0 \x7B\xB3 |0 \x7B\xB4 |0 \x7B\xB5 |0 \x7B\xB6 |0 \x7B\xB7 |0 \x7B\xB8 |0 \x7B\xB9 |0 \x7B\xBA |0 \x7B\xBB |0 \x7B\xBC |0 \x7B\xBD |0 \x7B\xBE |0 \x7B\xBF |0 \x7B\xC0 |0 \x7B\xC1 |0 \x7B\xC2 |0 \x7B\xC3 |0 \x7B\xC4 |0 \x7B\xC5 |0 \x7B\xC6 |0 \x7B\xC7 |0 \x7B\xC8 |0 \x7B\xC9 |0 \x7B\xCA |0 \x7B\xCB |0 \x7B\xCC |0 \x7B\xCD |0 \x7B\xCE |0 \x7B\xCF |0 \x7B\xD0 |0 \x7B\xD1 |0 \x7B\xD2 |0 \x7B\xD3 |0 \x7B\xD4 |0 \x7B\xD5 |0 \x7B\xD6 |0 \x7B\xD7 |0 \x7B\xD8 |0 \x7B\xD9 |0 \x7B\xDA |0 \x7B\xDB |0 \x7B\xDC |0 \x7B\xDD |0 \x7B\xDE |0 \x7B\xDF |0 \x7B\xE0 |0 \x7B\xE1 |0 \x7B\xE2 |0 \x7B\xE3 |0 \x7B\xE4 |0 \x7B\xE5 |0 \x7B\xE6 |0 \x7B\xE7 |0 \x7B\xE8 |0 \x7B\xE9 |0 \x7B\xEA |0 \x7B\xEB |0 \x7B\xEC |0 \x7B\xED |0 \x7B\xEE |0 \x7B\xEF |0 \x7B\xF0 |0 \x7B\xF1 |0 \x7B\xF2 |0 \x7B\xF3 |0 \x7B\xF4 |0 \x7B\xF5 |0 \x7B\xF6 |0 \x7B\xF7 |0 \x7B\xF8 |0 \x7B\xF9 |0 \x7B\xFA |0 \x7B\xFB |0 \x7B\xFC |0 \x7B\xFD |0 \x7C\x41 |0 \x7C\x42 |0 \x7C\x43 |0 \x7C\x44 |0 \x7C\x45 |0 \x7C\x46 |0 \x7C\x47 |0 \x7C\x48 |0 \x7C\x49 |0 \x7C\x4A |0 \x7C\x4B |0 \x7C\x4C |0 \x7C\x4D |0 \x7C\x4E |0 \x7C\x4F |0 \x7C\x50 |0 \x7C\x51 |0 \x7C\x52 |0 \x7C\x53 |0 \x7C\x54 |0 \x7C\x55 |0 \x7C\x56 |0 \x7C\x57 |0 \x7C\x58 |0 \x7C\x59 |0 \x7C\x5A |0 \x7C\x5B |0 \x7C\x5C |0 \x7C\x5D |0 \x7C\x5E |0 \x7C\x5F |0 \x7C\x60 |0 \x7C\x61 |0 \x7C\x62 |0 \x7C\x63 |0 \x7C\x64 |0 \x7C\x65 |0 \x7C\x66 |0 \x7C\x67 |0 \x7C\x68 |0 \x7C\x69 |0 \x7C\x6A |0 \x7C\x6B |0 \x7C\x6C |0 \x7C\x6D |0 \x7C\x6E |0 \x7C\x6F |0 \x7C\x70 |0 \x7C\x71 |0 \x7C\x72 |0 \x7C\x73 |0 \x7C\x74 |0 \x7C\x75 |0 \x7C\x76 |0 \x7C\x77 |0 \x7C\x78 |0 \x7C\x79 |0 \x7C\x7A |0 \x7C\x7B |0 \x7C\x7C |0 \x7C\x7D |0 \x7C\x7E |0 \x7C\x7F |0 \x7C\x81 |0 \x7C\x82 |0 \x7C\x83 |0 \x7C\x84 |0 \x7C\x85 |0 \x7C\x86 |0 \x7C\x87 |0 \x7C\x88 |0 \x7C\x89 |0 \x7C\x8A |0 \x7C\x8B |0 \x7C\x8C |0 \x7C\x8D |0 \x7C\x8E |0 \x7C\x8F |0 \x7C\x90 |0 \x7C\x91 |0 \x7C\x92 |0 \x7C\x93 |0 \x7C\x94 |0 \x7C\x95 |0 \x7C\x96 |0 \x7C\x97 |0 \x7C\x98 |0 \x7C\x99 |0 \x7C\x9A |0 \x7C\x9B |0 \x7C\x9C |0 \x7C\x9D |0 \x7C\x9E |0 \x7C\x9F |0 \x7C\xA0 |0 \x7C\xA1 |0 \x7C\xA2 |0 \x7C\xA3 |0 \x7C\xA4 |0 \x7C\xA5 |0 \x7C\xA6 |0 \x7C\xA7 |0 \x7C\xA8 |0 \x7C\xA9 |0 \x7C\xAA |0 \x7C\xAB |0 \x7C\xAC |0 \x7C\xAD |0 \x7C\xAE |0 \x7C\xAF |0 \x7C\xB0 |0 \x7C\xB1 |0 \x7C\xB2 |0 \x7C\xB3 |0 \x7C\xB4 |0 \x7C\xB5 |0 \x7C\xB6 |0 \x7C\xB7 |0 \x7C\xB8 |0 \x7C\xB9 |0 \x7C\xBA |0 \x7C\xBB |0 \x7C\xBC |0 \x7C\xBD |0 \x7C\xBE |0 \x7C\xBF |0 \x7C\xC0 |0 \x7C\xC1 |0 \x7C\xC2 |0 \x7C\xC3 |0 \x7C\xC4 |0 \x7C\xC5 |0 \x7C\xC6 |0 \x7C\xC7 |0 \x7C\xC8 |0 \x7C\xC9 |0 \x7C\xCA |0 \x7C\xCB |0 \x7C\xCC |0 \x7C\xCD |0 \x7C\xCE |0 \x7C\xCF |0 \x7C\xD0 |0 \x7C\xD1 |0 \x7C\xD2 |0 \x7C\xD3 |0 \x7C\xD4 |0 \x7C\xD5 |0 \x7C\xD6 |0 \x7C\xD7 |0 \x7C\xD8 |0 \x7C\xD9 |0 \x7C\xDA |0 \x7C\xDB |0 \x7C\xDC |0 \x7C\xDD |0 \x7C\xDE |0 \x7C\xDF |0 \x7C\xE0 |0 \x7C\xE1 |0 \x7C\xE2 |0 \x7C\xE3 |0 \x7C\xE4 |0 \x7C\xE5 |0 \x7C\xE6 |0 \x7C\xE7 |0 \x7C\xE8 |0 \x7C\xE9 |0 \x7C\xEA |0 \x7C\xEB |0 \x7C\xEC |0 \x7C\xED |0 \x7C\xEE |0 \x7C\xEF |0 \x7C\xF0 |0 \x7C\xF1 |0 \x7C\xF2 |0 \x7C\xF3 |0 \x7C\xF4 |0 \x7C\xF5 |0 \x7C\xF6 |0 \x7C\xF7 |0 \x7C\xF8 |0 \x7C\xF9 |0 \x7C\xFA |0 \x7C\xFB |0 \x7C\xFC |0 \x7C\xFD |0 \x7D\x41 |0 \x7D\x42 |0 \x7D\x43 |0 \x7D\x44 |0 \x7D\x45 |0 \x7D\x46 |0 \x7D\x47 |0 \x7D\x48 |0 \x7D\x49 |0 \x7D\x4A |0 \x7D\x4B |0 \x7D\x4C |0 \x7D\x4D |0 \x7D\x4E |0 \x7D\x4F |0 \x7D\x50 |0 \x7D\x51 |0 \x7D\x52 |0 \x7D\x53 |0 \x7D\x54 |0 \x7D\x55 |0 \x7D\x56 |0 \x7D\x57 |0 \x7D\x58 |0 \x7D\x59 |0 \x7D\x5A |0 \x7D\x5B |0 \x7D\x5C |0 \x7D\x5D |0 \x7D\x5E |0 \x7D\x5F |0 \x7D\x60 |0 \x7D\x61 |0 \x7D\x62 |0 \x7D\x63 |0 \x7D\x64 |0 \x7D\x65 |0 \x7D\x66 |0 \x7D\x67 |0 \x7D\x68 |0 \x7D\x69 |0 \x7D\x6A |0 \x7D\x6B |0 \x7D\x6C |0 \x7D\x6D |0 \x7D\x6E |0 \x7D\x6F |0 \x7D\x70 |0 \x7D\x71 |0 \x7D\x72 |0 \x7D\x73 |0 \x7D\x74 |0 \x7D\x75 |0 \x7D\x76 |0 \x7D\x77 |0 \x7D\x78 |0 \x7D\x79 |0 \x7D\x7A |0 \x7D\x7B |0 \x7D\x7C |0 \x7D\x7D |0 \x7D\x7E |0 \x7D\x7F |0 \x7D\x81 |0 \x7D\x82 |0 \x7D\x83 |0 \x7D\x84 |0 \x7D\x85 |0 \x7D\x86 |0 \x7D\x87 |0 \x7D\x88 |0 \x7D\x89 |0 \x7D\x8A |0 \x7D\x8B |0 \x7D\x8C |0 \x7D\x8D |0 \x7D\x8E |0 \x7D\x8F |0 \x7D\x90 |0 \x7D\x91 |0 \x7D\x92 |0 \x7D\x93 |0 \x7D\x94 |0 \x7D\x95 |0 \x7D\x96 |0 \x7D\x97 |0 \x7D\x98 |0 \x7D\x99 |0 \x7D\x9A |0 \x7D\x9B |0 \x7D\x9C |0 \x7D\x9D |0 \x7D\x9E |0 \x7D\x9F |0 \x7D\xA0 |0 \x7D\xA1 |0 \x7D\xA2 |0 \x7D\xA3 |0 \x7D\xA4 |0 \x7D\xA5 |0 \x7D\xA6 |0 \x7D\xA7 |0 \x7D\xA8 |0 \x7D\xA9 |0 \x7D\xAA |0 \x7D\xAB |0 \x7D\xAC |0 \x7D\xAD |0 \x7D\xAE |0 \x7D\xAF |0 \x7D\xB0 |0 \x7D\xB1 |0 \x7D\xB2 |0 \x7D\xB3 |0 \x7D\xB4 |0 \x7D\xB5 |0 \x7D\xB6 |0 \x7D\xB7 |0 \x7D\xB8 |0 \x7D\xB9 |0 \x7D\xBA |0 \x7D\xBB |0 \x7D\xBC |0 \x7D\xBD |0 \x7D\xBE |0 \x7D\xBF |0 \x7D\xC0 |0 \x7D\xC1 |0 \x7D\xC2 |0 \x7D\xC3 |0 \x7D\xC4 |0 \x7D\xC5 |0 \x7D\xC6 |0 \x7D\xC7 |0 \x7D\xC8 |0 \x7D\xC9 |0 \x7D\xCA |0 \x7D\xCB |0 \x7D\xCC |0 \x7D\xCD |0 \x7D\xCE |0 \x7D\xCF |0 \x7D\xD0 |0 \x7D\xD1 |0 \x7D\xD2 |0 \x7D\xD3 |0 \x7D\xD4 |0 \x7D\xD5 |0 \x7D\xD6 |0 \x7D\xD7 |0 \x7D\xD8 |0 \x7D\xD9 |0 \x7D\xDA |0 \x7D\xDB |0 \x7D\xDC |0 \x7D\xDD |0 \x7D\xDE |0 \x7D\xDF |0 \x7D\xE0 |0 \x7D\xE1 |0 \x7D\xE2 |0 \x7D\xE3 |0 \x7D\xE4 |0 \x7D\xE5 |0 \x7D\xE6 |0 \x7D\xE7 |0 \x7D\xE8 |0 \x7D\xE9 |0 \x7D\xEA |0 \x7D\xEB |0 \x7D\xEC |0 \x7D\xED |0 \x7D\xEE |0 \x7D\xEF |0 \x7D\xF0 |0 \x7D\xF1 |0 \x7D\xF2 |0 \x7D\xF3 |0 \x7D\xF4 |0 \x7D\xF5 |0 \x7D\xF6 |0 \x7D\xF7 |0 \x7D\xF8 |0 \x7D\xF9 |0 \x7D\xFA |0 \x7D\xFB |0 \x7D\xFC |0 \x7D\xFD |0 \x7E\x41 |0 \x7E\x42 |0 \x7E\x43 |0 \x7E\x44 |0 \x7E\x45 |0 \x7E\x46 |0 \x7E\x47 |0 \x7E\x48 |0 \x7E\x49 |0 \x7E\x4A |0 \x7E\x4B |0 \x7E\x4C |0 \x7E\x4D |0 \x7E\x4E |0 \x7E\x4F |0 \x7E\x50 |0 \x7E\x51 |0 \x7E\x52 |0 \x7E\x53 |0 \x7E\x54 |0 \x7E\x55 |0 \x7E\x56 |0 \x7E\x57 |0 \x7E\x58 |0 \x7E\x59 |0 \x7E\x5A |0 \x7E\x5B |0 \x7E\x5C |0 \x7E\x5D |0 \x7E\x5E |0 \x7E\x5F |0 \x7E\x60 |0 \x7E\x61 |0 \x7E\x62 |0 \x7E\x63 |0 \x7E\x64 |0 \x7E\x65 |0 \x7E\x66 |0 \x7E\x67 |0 \x7E\x68 |0 \x7E\x69 |0 \x7E\x6A |0 \x7E\x6B |0 \x7E\x6C |0 \x7E\x6D |0 \x7E\x6E |0 \x7E\x6F |0 \x7E\x70 |0 \x7E\x71 |0 \x7E\x72 |0 \x7E\x73 |0 \x7E\x74 |0 \x7E\x75 |0 \x7E\x76 |0 \x7E\x77 |0 \x7E\x78 |0 \x7E\x79 |0 \x7E\x7A |0 \x7E\x7B |0 \x7E\x7C |0 \x7E\x7D |0 \x7E\x7E |0 \x7E\x7F |0 \x7E\x81 |0 \x7E\x82 |0 \x7E\x83 |0 \x7E\x84 |0 \x7E\x85 |0 \x7E\x86 |0 \x7E\x87 |0 \x7E\x88 |0 \x7E\x89 |0 \x7E\x8A |0 \x7E\x8B |0 \x7E\x8C |0 \x7E\x8D |0 \x7E\x8E |0 \x7E\x8F |0 \x7E\x90 |0 \x7E\x91 |0 \x7E\x92 |0 \x7E\x93 |0 \x7E\x94 |0 \x7E\x95 |0 \x7E\x96 |0 \x7E\x97 |0 \x7E\x98 |0 \x7E\x99 |0 \x7E\x9A |0 \x7E\x9B |0 \x7E\x9C |0 \x7E\x9D |0 \x7E\x9E |0 \x7E\x9F |0 \x7E\xA0 |0 \x7E\xA1 |0 \x7E\xA2 |0 \x7E\xA3 |0 \x7E\xA4 |0 \x7E\xA5 |0 \x7E\xA6 |0 \x7E\xA7 |0 \x7E\xA8 |0 \x7E\xA9 |0 \x7E\xAA |0 \x7E\xAB |0 \x7E\xAC |0 \x7E\xAD |0 \x7E\xAE |0 \x7E\xAF |0 \x7E\xB0 |0 \x7E\xB1 |0 \x7E\xB2 |0 \x7E\xB3 |0 \x7E\xB4 |0 \x7E\xB5 |0 \x7E\xB6 |0 \x7E\xB7 |0 \x7E\xB8 |0 \x7E\xB9 |0 \x7E\xBA |0 \x7E\xBB |0 \x7E\xBC |0 \x7E\xBD |0 \x7E\xBE |0 \x7E\xBF |0 \x7E\xC0 |0 \x7E\xC1 |0 \x7E\xC2 |0 \x7E\xC3 |0 \x7E\xC4 |0 \x7E\xC5 |0 \x7E\xC6 |0 \x7E\xC7 |0 \x7E\xC8 |0 \x7E\xC9 |0 \x7E\xCA |0 \x7E\xCB |0 \x7E\xCC |0 \x7E\xCD |0 \x7E\xCE |0 \x7E\xCF |0 \x7E\xD0 |0 \x7E\xD1 |0 \x7E\xD2 |0 \x7E\xD3 |0 \x7E\xD4 |0 \x7E\xD5 |0 \x7E\xD6 |0 \x7E\xD7 |0 \x7E\xD8 |0 \x7E\xD9 |0 \x7E\xDA |0 \x7E\xDB |0 \x7E\xDC |0 \x7E\xDD |0 \x7E\xDE |0 \x7E\xDF |0 \x7E\xE0 |0 \x7E\xE1 |0 \x7E\xE2 |0 \x7E\xE3 |0 \x7E\xE4 |0 \x7E\xE5 |0 \x7E\xE6 |0 \x7E\xE7 |0 \x7E\xE8 |0 \x7E\xE9 |0 \x7E\xEA |0 \x7E\xEB |0 \x7E\xEC |0 \x7E\xED |0 \x7E\xEE |0 \x7E\xEF |0 \x7E\xF0 |0 \x7E\xF1 |0 \x7E\xF2 |0 \x7E\xF3 |0 \x7E\xF4 |0 \x7E\xF5 |0 \x7E\xF6 |0 \x7E\xF7 |0 \x7E\xF8 |0 \x7E\xF9 |0 \x7E\xFA |0 \x7E\xFB |0 \x7E\xFC |0 \x7E\xFD |0 \x7F\x41 |0 \x7F\x42 |0 \x7F\x43 |0 \x7F\x44 |0 \x7F\x45 |0 \x7F\x46 |0 \x7F\x47 |0 \x7F\x48 |0 \x7F\x49 |0 \x7F\x4A |0 \x7F\x4B |0 \x7F\x4C |0 \x7F\x4D |0 \x7F\x4E |0 \x7F\x4F |0 \x7F\x50 |0 \x7F\x51 |0 \x7F\x52 |0 \x7F\x53 |0 \x7F\x54 |0 \x7F\x55 |0 \x7F\x56 |0 \x7F\x57 |0 \x7F\x58 |0 \x7F\x59 |0 \x7F\x5A |0 \x7F\x5B |0 \x7F\x5C |0 \x7F\x5D |0 \x7F\x5E |0 \x7F\x5F |0 \x7F\x60 |0 \x7F\x61 |0 \x7F\x62 |0 \x7F\x63 |0 \x7F\x64 |0 \x7F\x65 |0 \x7F\x66 |0 \x7F\x67 |0 \x7F\x68 |0 \x7F\x69 |0 \x7F\x6A |0 \x7F\x6B |0 \x7F\x6C |0 \x7F\x6D |0 \x7F\x6E |0 \x7F\x6F |0 \x7F\x70 |0 \x7F\x71 |0 \x7F\x72 |0 \x7F\x73 |0 \x7F\x74 |0 \x7F\x75 |0 \x7F\x76 |0 \x7F\x77 |0 \x7F\x78 |0 \x7F\x79 |0 \x7F\x7A |0 \x7F\x7B |0 \x7F\x7C |0 \x7F\x7D |0 \x7F\x7E |0 \x7F\x7F |0 \x7F\x81 |0 \x7F\x82 |0 \x7F\x83 |0 \x7F\x84 |0 \x7F\x85 |0 \x7F\x86 |0 \x7F\x87 |0 \x7F\x88 |0 \x7F\x89 |0 \x7F\x8A |0 \x7F\x8B |0 \x7F\x8C |0 \x7F\x8D |0 \x7F\x8E |0 \x7F\x8F |0 \x7F\x90 |0 \x7F\x91 |0 \x7F\x92 |0 \x7F\x93 |0 \x7F\x94 |0 \x7F\x95 |0 \x7F\x96 |0 \x7F\x97 |0 \x7F\x98 |0 \x7F\x99 |0 \x7F\x9A |0 \x7F\x9B |0 \x7F\x9C |0 \x7F\x9D |0 \x7F\x9E |0 \x7F\x9F |0 \x7F\xA0 |0 \x7F\xA1 |0 \x7F\xA2 |0 \x7F\xA3 |0 \x7F\xA4 |0 \x7F\xA5 |0 \x7F\xA6 |0 \x7F\xA7 |0 \x7F\xA8 |0 \x7F\xA9 |0 \x7F\xAA |0 \x7F\xAB |0 \x7F\xAC |0 \x7F\xAD |0 \x7F\xAE |0 \x7F\xAF |0 \x7F\xB0 |0 \x7F\xB1 |0 \x7F\xB2 |0 \x7F\xB3 |0 \x7F\xB4 |0 \x7F\xB5 |0 \x7F\xB6 |0 \x7F\xB7 |0 \x7F\xB8 |0 \x7F\xB9 |0 \x7F\xBA |0 \x7F\xBB |0 \x7F\xBC |0 \x7F\xBD |0 \x7F\xBE |0 \x7F\xBF |0 \x7F\xC0 |0 \x7F\xC1 |0 \x7F\xC2 |0 \x7F\xC3 |0 \x7F\xC4 |0 \x7F\xC5 |0 \x7F\xC6 |0 \x7F\xC7 |0 \x7F\xC8 |0 \x7F\xC9 |0 \x7F\xCA |0 \x7F\xCB |0 \x7F\xCC |0 \x7F\xCD |0 \x7F\xCE |0 \x7F\xCF |0 \x7F\xD0 |0 \x7F\xD1 |0 \x7F\xD2 |0 \x7F\xD3 |0 \x7F\xD4 |0 \x7F\xD5 |0 \x7F\xD6 |0 \x7F\xD7 |0 \x7F\xD8 |0 \x7F\xD9 |0 \x7F\xDA |0 \x7F\xDB |0 \x7F\xDC |0 \x7F\xDD |0 \x7F\xDE |0 \x7F\xDF |0 \x7F\xE0 |0 \x7F\xE1 |0 \x7F\xE2 |0 \x7F\xE3 |0 \x7F\xE4 |0 \x7F\xE5 |0 \x7F\xE6 |0 \x7F\xE7 |0 \x7F\xE8 |0 \x7F\xE9 |0 \x7F\xEA |0 \x7F\xEB |0 \x7F\xEC |0 \x7F\xED |0 \x7F\xEE |0 \x7F\xEF |0 \x7F\xF0 |0 \x7F\xF1 |0 \x7F\xF2 |0 \x7F\xF3 |0 \x7F\xF4 |0 \x7F\xF5 |0 \x7F\xF6 |0 \x7F\xF7 |0 \x7F\xF8 |0 \x7F\xF9 |0 \x7F\xFA |0 \x7F\xFB |0 \x7F\xFC |0 \x7F\xFD |0 \x43\x5B |0 \x44\x5C |0 \x42\x5A |0 \x42\x7F |0 \x42\x7B |0 \x42\xE0 |0 \x42\x6C |0 \x42\x50 |0 \x42\x7D |0 \x42\x4D |0 \x42\x5D |0 \x42\x5C |0 \x42\x4E |0 \x42\x6B |0 \x42\x60 |0 \x42\x4B |0 \x42\x61 |0 \x42\xF0 |0 \x42\xF1 |0 \x42\xF2 |0 \x42\xF3 |0 \x42\xF4 |0 \x42\xF5 |0 \x42\xF6 |0 \x42\xF7 |0 \x42\xF8 |0 \x42\xF9 |0 \x42\x7A |0 \x42\x5E |0 \x42\x4C |0 \x42\x7E |0 \x42\x6E |0 \x42\x6F |0 \x42\x7C |0 \x42\xC1 |0 \x42\xC2 |0 \x42\xC3 |0 \x42\xC4 |0 \x42\xC5 |0 \x42\xC6 |0 \x42\xC7 |0 \x42\xC8 |0 \x42\xC9 |0 \x42\xD1 |0 \x42\xD2 |0 \x42\xD3 |0 \x42\xD4 |0 \x42\xD5 |0 \x42\xD6 |0 \x42\xD7 |0 \x42\xD8 |0 \x42\xD9 |0 \x42\xE2 |0 \x42\xE3 |0 \x42\xE4 |0 \x42\xE5 |0 \x42\xE6 |0 \x42\xE7 |0 \x42\xE8 |0 \x42\xE9 |0 \x44\x44 |0 \x43\xE0 |0 \x44\x45 |0 \x44\x70 |0 \x42\x6D |0 \x42\x79 |0 \x42\x81 |0 \x42\x82 |0 \x42\x83 |0 \x42\x84 |0 \x42\x85 |0 \x42\x86 |0 \x42\x87 |0 \x42\x88 |0 \x42\x89 |0 \x42\x91 |0 \x42\x92 |0 \x42\x93 |0 \x42\x94 |0 \x42\x95 |0 \x42\x96 |0 \x42\x97 |0 \x42\x98 |0 \x42\x99 |0 \x42\xA2 |0 \x42\xA3 |0 \x42\xA4 |0 \x42\xA5 |0 \x42\xA6 |0 \x42\xA7 |0 \x42\xA8 |0 \x42\xA9 |0 \x42\xC0 |0 \x42\x4F |0 \x42\xD0 |0 \x43\xA1 |0 \x43\x4A |0 \x42\x4A |0 \x42\x5F |0 \x42\xA1 |0 \x42\x6A |0 \x42\x5B |0 END CHARMAP suite3270-4.1/Common/ibm-937_P110-1999.ucm000077500000000000000000014411641413735575200172140ustar00rootroot00000000000000# *************************************************************************** # * # * Copyright (C) 1995-2007, International Business Machines # * Corporation and others. All Rights Reserved. # * # *************************************************************************** # # File created by rptp2ucm (compiled on Dec 3 2002) # from source files 34B003A9.RPMAP110 and 03A934B0.TPMAP100 # "ibm-937_P110-1999" "AXXXX" 2 1 "EBCDIC_STATEFUL" \xFE\xFE \x3F "EBCDIC" "ibm-937_VPUA" # build an extension-only (delta) .cnv file # requires the base .cnv file at runtime "ibm-1371_P100-1999" CHARMAP \x00 |0 \x01 |0 \x02 |0 \x03 |0 \x37 |0 \x2D |0 \x2E |0 \x2F |0 \x16 |0 \x05 |0 \x25 |0 \x0B |0 \x0C |0 \x0D |0 \x3F |2 \x3F |2 \x10 |0 \x11 |0 \x12 |0 \x13 |0 \x3C |0 \x3D |0 \x32 |0 \x26 |0 \x18 |0 \x19 |0 \x3F |0 \x27 |0 \x1C |0 \x1D |0 \x1E |0 \x1F |0 \x40 |0 \x5A |0 \x7F |0 \x7B |0 \x5B |0 \x6C |0 \x50 |0 \x7D |0 \x4D |0 \x5D |0 \x5C |0 \x4E |0 \x6B |0 \x60 |0 \x4B |0 \x61 |0 \xF0 |0 \xF1 |0 \xF2 |0 \xF3 |0 \xF4 |0 \xF5 |0 \xF6 |0 \xF7 |0 \xF8 |0 \xF9 |0 \x7A |0 \x5E |0 \x4C |0 \x7E |0 \x6E |0 \x6F |0 \x7C |0 \xC1 |0 \xC2 |0 \xC3 |0 \xC4 |0 \xC5 |0 \xC6 |0 \xC7 |0 \xC8 |0 \xC9 |0 \xD1 |0 \xD2 |0 \xD3 |0 \xD4 |0 \xD5 |0 \xD6 |0 \xD7 |0 \xD8 |0 \xD9 |0 \xE2 |0 \xE3 |0 \xE4 |0 \xE5 |0 \xE6 |0 \xE7 |0 \xE8 |0 \xE9 |0 \xBA |0 \xE0 |0 \xBB |0 \xB0 |0 \x6D |0 \x79 |0 \x81 |0 \x82 |0 \x83 |0 \x84 |0 \x85 |0 \x86 |0 \x87 |0 \x88 |0 \x89 |0 \x91 |0 \x92 |0 \x93 |0 \x94 |0 \x95 |0 \x96 |0 \x97 |0 \x98 |0 \x99 |0 \xA2 |0 \xA3 |0 \xA4 |0 \xA5 |0 \xA6 |0 \xA7 |0 \xA8 |0 \xA9 |0 \xC0 |0 \x4F |0 \xD0 |0 \xA1 |0 \x07 |0 \x20 |0 \x21 |0 \x22 |0 \x23 |0 \x24 |0 \x15 |0 \x06 |0 \x17 |0 \x28 |0 \x29 |0 \x2A |0 \x2B |0 \x2C |0 \x09 |0 \x0A |0 \x1B |0 \x30 |0 \x31 |0 \x1A |0 \x33 |0 \x34 |0 \x35 |0 \x36 |0 \x08 |0 \x38 |0 \x39 |0 \x3A |0 \x3B |0 \x04 |0 \x14 |0 \x3E |0 \xFF |0 \x3F |2 \x3F |2 \x4A |0 \x3F |2 \x3F |2 \x3F |2 \x6A |0 \x44\x6A |0 \x44\x60 |0 \x3F |2 \x3F |2 \x3F |2 \x5F |0 \x3F |2 \x3F |2 \x42\xA1 |1 \x44\xED |0 \x44\x4B |0 \x3F |2 \x3F |2 \x44\xEE |0 \x3F |2 \x43\x79 |0 \x46\xE5 |0 \x3F |2 \x3F |2 \x3F |2 \x3F |2 \x3F |2 \x3F |2 \x3F |2 \x3F |2 \x3F |2 \x3F |2 \x3F |2 \x3F |2 \x3F |2 \x3F |2 \x3F |2 \x3F |2 \x3F |2 \x3F |2 \x3F |2 \x3F |2 \x3F |2 \x3F |2 \x3F |2 \x3F |2 \x3F |2 \x3F |2 \x3F |2 \x3F |2 \x3F |2 \x3F |2 \x3F |2 \x44\x7A |0 \x3F |2 \x3F |2 \x3F |2 \x3F |2 \x3F |2 \x3F |2 \x3F |2 \x3F |2 \x3F |2 \x3F |2 \x3F |2 \x3F |2 \x3F |2 \x3F |2 \x3F |2 \x3F |2 \x3F |2 \x3F |2 \x3F |2 \x3F |2 \x3F |2 \x3F |2 \x3F |2 \x3F |2 \x3F |2 \x3F |2 \x3F |2 \x3F |2 \x3F |2 \x3F |2 \x3F |2 \x44\x7B |0 \x3F |2 \x3F |2 \x3F |2 \x3F |2 \x3F |2 \x3F |2 \x3F |2 \x3F |2 \x44\x5B |0 \x45\x53 |0 \x45\x51 |0 \x45\x52 |0 \x45\x54 |0 \x47\x52 |0 \x45\x55 |0 \x41\x61 |0 \x41\x62 |0 \x41\x63 |0 \x41\x64 |0 \x41\x65 |0 \x41\x66 |0 \x41\x67 |0 \x41\x68 |0 \x41\x69 |0 \x41\x6A |0 \x41\x6B |0 \x41\x6C |0 \x41\x6D |0 \x41\x6E |0 \x41\x6F |0 \x41\x70 |0 \x41\x71 |0 \x41\x72 |0 \x41\x73 |0 \x41\x74 |0 \x41\x75 |0 \x41\x76 |0 \x41\x77 |0 \x41\x78 |0 \x41\x41 |0 \x41\x42 |0 \x41\x43 |0 \x41\x44 |0 \x41\x45 |0 \x41\x46 |0 \x41\x47 |0 \x41\x48 |0 \x41\x49 |0 \x41\x4A |0 \x41\x4B |0 \x41\x4C |0 \x41\x4D |0 \x41\x4E |0 \x41\x4F |0 \x41\x50 |0 \x41\x51 |0 \x41\x52 |0 \x41\x53 |0 \x41\x54 |0 \x41\x55 |0 \x41\x56 |0 \x41\x57 |0 \x41\x58 |0 \x41\xC6 |0 \x41\xC0 |0 \x41\xC1 |0 \x41\xC2 |0 \x41\xC3 |0 \x41\xC4 |0 \x41\xC5 |0 \x41\xC7 |0 \x41\xC8 |0 \x41\xC9 |0 \x41\xCA |0 \x41\xCB |0 \x41\xCC |0 \x41\xCD |0 \x41\xCE |0 \x41\xCF |0 \x41\xD0 |0 \x41\xD1 |0 \x41\xD2 |0 \x41\xD3 |0 \x41\xD4 |0 \x41\xD5 |0 \x41\xD6 |0 \x41\xD7 |0 \x41\xD8 |0 \x41\xD9 |0 \x41\xDA |0 \x41\xDB |0 \x41\xDC |0 \x41\xDD |0 \x41\xDE |0 \x41\xDF |0 \x41\xE0 |0 \x41\x80 |0 \x41\x81 |0 \x41\x82 |0 \x41\x83 |0 \x41\x84 |0 \x41\x85 |0 \x41\x87 |0 \x41\x88 |0 \x41\x89 |0 \x41\x8A |0 \x41\x8B |0 \x41\x8C |0 \x41\x8D |0 \x41\x8E |0 \x41\x8F |0 \x41\x90 |0 \x41\x91 |0 \x41\x92 |0 \x41\x93 |0 \x41\x94 |0 \x41\x95 |0 \x41\x96 |0 \x41\x97 |0 \x41\x98 |0 \x41\x99 |0 \x41\x9A |0 \x41\x9B |0 \x41\x9C |0 \x41\x9D |0 \x41\x9E |0 \x41\x9F |0 \x41\xA0 |0 \x41\x86 |0 \x44\x5A |0 \x44\x4A |1 \x44\x4A |0 \x44\x61 |0 \x44\x71 |0 \x44\x62 |0 \x44\x72 |0 \x43\x77 |0 \x43\x78 |0 \x44\x7E |0 \x44\x7F |0 \x43\x45 |0 \x43\x73 |0 \x44\x50 |0 \x44\xEF |0 \x42\x79 |0 \x44\x6B |0 \x42\xA1 |0 \x44\x4E |0 \x46\xBB |0 \x46\xDB |0 \x44\x6E |0 \x44\x6F |0 \x43\x72 |0 \x41\xF1 |0 \x41\xF2 |0 \x41\xF3 |0 \x41\xF4 |0 \x41\xF5 |0 \x41\xF6 |0 \x41\xF7 |0 \x41\xF8 |0 \x41\xF9 |0 \x41\xFA |0 \x41\xB1 |0 \x41\xB2 |0 \x41\xB3 |0 \x41\xB4 |0 \x41\xB5 |0 \x41\xB6 |0 \x41\xB7 |0 \x41\xB8 |0 \x41\xB9 |0 \x41\xBA |0 \x44\xF1 |0 \x44\xF2 |0 \x44\xF0 |0 \x44\xF3 |0 \x46\xD4 |0 \x46\xD5 |0 \x46\xD7 |0 \x46\xD6 |0 \x46\xEF |0 \x46\xF0 |0 \x43\x6E |0 \x43\x6F |0 \x46\xEE |0 \x43\x70 |0 \x43\x4E |0 \x43\x71 |0 \x43\x4F |0 \x43\x64 |0 \x43\x65 |0 \x46\xDA |0 \x46\xC5 |0 \x43\x61 |0 \x44\x4D |0 \x46\xCC |0 \x46\xCB |0 \x42\x4F |1 \x44\x7C |0 \x43\x6C |0 \x43\x6D |0 \x46\xC8 |0 \x46\xC9 |0 \x46\xD0 |0 \x43\x63 |0 \x46\xD1 |0 \x44\x68 |0 \x44\x78 |0 \x43\xA1 |0 \x43\x60 |0 \x46\xC6 |0 \x44\x4C |0 \x46\xC7 |0 \x44\x67 |0 \x44\x77 |0 \x43\x5D |0 \x43\x5E |0 \x43\x68 |0 \x43\x69 |0 \x43\x66 |0 \x43\x67 |0 \x46\xD2 |0 \x46\xD3 |0 \x46\xCA |0 \x46\xCD |0 \x43\x4D |0 \x47\x81 |0 \x47\x82 |0 \x47\x83 |0 \x47\x84 |0 \x47\x85 |0 \x47\x86 |0 \x47\x87 |0 \x47\x88 |0 \x47\x89 |0 \x47\x8A |0 \x47\x8B |0 \x47\x8C |0 \x47\x8D |0 \x47\x8E |0 \x47\x8F |0 \x47\x90 |0 \x47\x91 |0 \x47\x92 |0 \x47\x93 |0 \x47\x94 |0 \x47\x95 |0 \x47\x96 |0 \x47\x97 |0 \x47\x98 |0 \x47\x99 |0 \x47\x9A |0 \x47\x9B |0 \x47\x9C |0 \x47\x9D |0 \x47\x9E |0 \x47\x9F |0 \x47\xA0 |0 \x47\xA1 |0 \x46\x41 |0 \x46\x42 |0 \x46\x43 |0 \x46\x44 |0 \x46\x45 |0 \x46\x46 |0 \x46\x47 |0 \x46\x48 |0 \x46\x49 |0 \x46\x4A |0 \x46\x51 |0 \x46\x52 |0 \x46\x53 |0 \x46\x54 |0 \x46\x55 |0 \x46\x56 |0 \x46\x57 |0 \x46\x58 |0 \x46\x59 |0 \x46\x5A |0 \x46\x75 |0 \x43\xB7 |0 \x46\x76 |0 \x43\xB8 |0 \x46\x78 |0 \x43\xB9 |0 \x46\x79 |0 \x43\xE1 |0 \x46\x7A |0 \x43\xE3 |0 \x46\x7B |0 \x43\xE2 |0 \x46\x73 |0 \x43\xEE |0 \x43\xE9 |0 \x43\xE4 |0 \x46\x72 |0 \x43\xF0 |0 \x43\xEB |0 \x43\xE6 |0 \x46\x71 |0 \x43\xEA |0 \x43\xEF |0 \x43\xE5 |0 \x46\x70 |0 \x43\xEC |0 \x43\xF1 |0 \x43\xE7 |0 \x46\x6F |0 \x43\xED |0 \x43\xF2 |0 \x43\xE8 |0 \x46\x81 |0 \x46\x82 |0 \x46\x84 |0 \x46\x83 |0 \x46\x7C |0 \x46\x7D |0 \x46\x7F |0 \x46\x7E |0 \x46\x89 |0 \x46\x8A |0 \x46\x8B |0 \x46\xB7 |0 \x46\x60 |0 \x46\x61 |0 \x46\x62 |0 \x46\x63 |0 \x46\x64 |0 \x46\x65 |0 \x46\x66 |0 \x46\x67 |0 \x46\x6E |0 \x46\x6D |0 \x46\x6C |0 \x46\x6B |0 \x46\x6A |0 \x46\x69 |0 \x46\x68 |0 \x46\x74 |0 \x46\x77 |0 \x44\xEA |0 \x44\xE9 |0 \x44\xE3 |0 \x44\xE2 |0 \x44\xEC |0 \x44\xEB |0 \x44\xE8 |0 \x44\xE7 |0 \x44\xE0 |0 \x44\xE4 |0 \x44\xE1 |0 \x46\x85 |0 \x46\x86 |0 \x46\x88 |0 \x46\x87 |0 \x43\x7A |0 \x44\xE6 |0 \x44\xE5 |0 \x44\x79 |0 \x44\x69 |0 \x43\x76 |0 \x43\x75 |0 \x43\x74 |0 \x42\x5C |0 \x40\x40 |0 \x43\x44 |0 \x43\x41 |0 \x46\xB9 |0 \x44\x5D |0 \x44\x5E |0 \x44\x5F |0 \x44\x64 |0 \x44\x74 |0 \x44\x65 |0 \x44\x75 |0 \x43\x42 |0 \x43\x43 |0 \x44\x42 |0 \x44\x43 |0 \x44\x66 |0 \x44\x76 |0 \x44\x6C |0 \x44\x7D |0 \x44\x63 |0 \x44\x73 |0 \x46\xE9 |0 \x46\xEA |0 \x45\x41 |0 \x45\x42 |0 \x45\x43 |0 \x45\x44 |0 \x45\x45 |0 \x45\x46 |0 \x45\x47 |0 \x45\x48 |0 \x45\x49 |0 \x44\x47 |0 \x44\x81 |0 \x44\x48 |0 \x44\x82 |0 \x44\x49 |0 \x44\x83 |0 \x44\x51 |0 \x44\x84 |0 \x44\x52 |0 \x44\x85 |0 \x44\x86 |0 \x44\xC0 |0 \x44\x87 |0 \x44\xC1 |0 \x44\x88 |0 \x44\xC2 |0 \x44\x89 |0 \x44\xC3 |0 \x44\x8A |0 \x44\xC4 |0 \x44\x8C |0 \x44\xC5 |0 \x44\x8D |0 \x44\xC6 |0 \x44\x8E |0 \x44\xC7 |0 \x44\x8F |0 \x44\xC8 |0 \x44\x90 |0 \x44\xC9 |0 \x44\x91 |0 \x44\xCA |0 \x44\x92 |0 \x44\xCB |0 \x44\x56 |0 \x44\x93 |0 \x44\xCC |0 \x44\x94 |0 \x44\xCD |0 \x44\x95 |0 \x44\xCE |0 \x44\x96 |0 \x44\x97 |0 \x44\x98 |0 \x44\x99 |0 \x44\x9A |0 \x44\x9D |0 \x44\xCF |0 \x44\xD5 |0 \x44\x9E |0 \x44\xD0 |0 \x44\xD6 |0 \x44\x9F |0 \x44\xD1 |0 \x44\xD7 |0 \x44\xA2 |0 \x44\xD2 |0 \x44\xD8 |0 \x44\xA3 |0 \x44\xD3 |0 \x44\xD9 |0 \x44\xA4 |0 \x44\xA5 |0 \x44\xA6 |0 \x44\xA7 |0 \x44\xA8 |0 \x44\x53 |0 \x44\xA9 |0 \x44\x54 |0 \x44\xAA |0 \x44\x55 |0 \x44\xAC |0 \x44\xAD |0 \x44\xAE |0 \x44\xAF |0 \x44\xBA |0 \x44\xBB |0 \x44\x57 |0 \x44\xBC |0 \x44\xDA |0 \x44\xDB |0 \x44\x46 |0 \x44\xBD |0 \x43\xBE |0 \x43\xBF |0 \x44\xDC |0 \x44\xDD |0 \x43\x47 |0 \x43\x81 |0 \x43\x48 |0 \x43\x82 |0 \x43\x49 |0 \x43\x83 |0 \x43\x51 |0 \x43\x84 |0 \x43\x52 |0 \x43\x85 |0 \x43\x86 |0 \x43\xC0 |0 \x43\x87 |0 \x43\xC1 |0 \x43\x88 |0 \x43\xC2 |0 \x43\x89 |0 \x43\xC3 |0 \x43\x8A |0 \x43\xC4 |0 \x43\x8C |0 \x43\xC5 |0 \x43\x8D |0 \x43\xC6 |0 \x43\x8E |0 \x43\xC7 |0 \x43\x8F |0 \x43\xC8 |0 \x43\x90 |0 \x43\xC9 |0 \x43\x91 |0 \x43\xCA |0 \x43\x92 |0 \x43\xCB |0 \x43\x56 |0 \x43\x93 |0 \x43\xCC |0 \x43\x94 |0 \x43\xCD |0 \x43\x95 |0 \x43\xCE |0 \x43\x96 |0 \x43\x97 |0 \x43\x98 |0 \x43\x99 |0 \x43\x9A |0 \x43\x9D |0 \x43\xCF |0 \x43\xD5 |0 \x43\x9E |0 \x43\xD0 |0 \x43\xD6 |0 \x43\x9F |0 \x43\xD1 |0 \x43\xD7 |0 \x43\xA2 |0 \x43\xD2 |0 \x43\xD8 |0 \x43\xA3 |0 \x43\xD3 |0 \x43\xD9 |0 \x43\xA4 |0 \x43\xA5 |0 \x43\xA6 |0 \x43\xA7 |0 \x43\xA8 |0 \x43\x53 |0 \x43\xA9 |0 \x43\x54 |0 \x43\xAA |0 \x43\x55 |0 \x43\xAC |0 \x43\xAD |0 \x43\xAE |0 \x43\xAF |0 \x43\xBA |0 \x43\xBB |0 \x43\x57 |0 \x43\xBC |0 \x43\xDA |0 \x43\xDB |0 \x43\x46 |0 \x43\xBD |0 \x43\xD4 |0 \x43\x59 |0 \x43\x5A |0 \x43\x58 |0 \x43\xDC |0 \x43\xDD |0 \x45\x56 |0 \x45\x57 |0 \x45\x58 |0 \x45\x59 |0 \x45\x5A |0 \x45\x5B |0 \x45\x5C |0 \x45\x5D |0 \x45\x5E |0 \x45\x5F |0 \x45\x60 |0 \x45\x61 |0 \x45\x62 |0 \x45\x63 |0 \x45\x64 |0 \x45\x65 |0 \x45\x66 |0 \x45\x67 |0 \x45\x68 |0 \x45\x69 |0 \x45\x6A |0 \x45\x6B |0 \x45\x6C |0 \x45\x6D |0 \x45\x6E |0 \x45\x6F |0 \x45\x70 |0 \x45\x71 |0 \x45\x72 |0 \x45\x73 |0 \x45\x74 |0 \x45\x75 |0 \x45\x76 |0 \x45\x77 |0 \x45\x78 |0 \x45\x79 |0 \x45\x7A |0 \x44\x6D |0 \x46\xBA |0 \x46\xE2 |0 \x46\xE3 |0 \x46\xDD |0 \x46\xDE |0 \x46\xDF |0 \x46\xE1 |0 \x46\xE4 |0 \x46\xE0 |0 \x46\xCF |0 \x46\xCE |0 \x46\xDC |0 \x48\x41 |3 \x4C\x41 |0 \x4C\x43 |0 \x4C\x44 |0 \x69\x46 |0 \x4C\x57 |0 \x4C\x55 |0 \x4C\x58 |0 \x4C\x56 |0 \x69\x47 |0 \x4C\x83 |0 \x69\x50 |0 \x69\x4E |0 \x4C\x82 |0 \x4C\x81 |0 \x4C\xE1 |0 \x4C\xE0 |0 \x4C\xDF |0 \x4C\xE2 |0 \x4C\xDE |0 \x4D\xA1 |0 \x4D\xA2 |0 \x4F\xE3 |0 \x48\x42 |0 \x4C\x59 |0 \x4C\x84 |0 \x69\x51 |0 \x4C\x85 |0 \x69\x64 |0 \x4E\x8C |0 \x6B\x52 |0 \x48\x43 |0 \x4C\x5A |0 \x4C\x86 |0 \x4C\xE3 |0 \x69\x65 |0 \x48\x44 |0 \x69\x41 |0 \x4C\x45 |0 \x4C\x5C |0 \x69\x48 |0 \x4C\x5D |0 \x4C\x87 |0 \x4C\xE4 |0 \x4C\xE6 |0 \x4C\xE5 |0 \x4D\xA3 |0 \x4D\xA4 |0 \x4F\xE4 |0 \x53\xFD |0 \x48\x45 |3 \x4C\x42 |0 \x69\x42 |0 \x4C\x46 |0 \x4C\x5F |0 \x4C\x5E |0 \x4D\xA5 |0 \x4F\xE5 |0 \x56\x92 |0 \x72\x6F |0 \x5B\xA9 |0 \x79\x77 |0 \x79\x78 |0 \x48\x46 |0 \x4C\x47 |0 \x4C\x89 |0 \x4F\xE6 |0 \x48\x47 |3 \x4C\x48 |0 \x69\x49 |0 \x4C\x60 |0 \x4C\x8A |0 \x4C\x8C |0 \x69\x52 |0 \x4C\x8D |0 \x4C\x8B |0 \x4D\xA6 |0 \x4F\xE7 |0 \x4F\xE8 |0 \x51\xE6 |0 \x48\x48 |0 \x4C\x61 |0 \x4C\x8E |0 \x4D\xA7 |0 \x4D\xA9 |0 \x4D\xA8 |0 \x4E\x8D |0 \x4F\xE9 |0 \x4F\xEA |0 \x51\xE7 |0 \x51\xE8 |0 \x54\x41 |0 \x79\x79 |0 \x8F\x66 |0 \x48\x49 |3 \x4C\x49 |0 \x4C\x90 |0 \x4C\x8F |0 \x69\x53 |0 \x4C\x91 |0 \x4C\x97 |0 \x4C\x92 |0 \x4C\x93 |0 \x69\x55 |0 \x69\x54 |0 \x4C\x95 |0 \x4C\x96 |0 \x4C\x94 |0 \x4C\xE9 |0 \x4C\xEA |0 \x4C\xEB |0 \x4C\xEC |0 \x4C\xE8 |0 \x4C\xEF |0 \x69\x6B |0 \x69\x67 |0 \x69\x6A |0 \x4C\xF0 |0 \x4D\x43 |0 \x69\x69 |0 \x4C\xED |0 \x4C\xEE |0 \x4C\xE7 |0 \x69\x66 |0 \x69\x68 |0 \x4D\xB6 |0 \x69\x90 |0 \x4D\xB3 |0 \x4D\xB7 |0 \x69\x9A |0 \x69\x8E |0 \x4D\xB4 |0 \x69\x92 |0 \x4D\xB5 |0 \x4D\xB8 |0 \x4D\xAA |0 \x69\x91 |0 \x4D\xB9 |0 \x69\x95 |0 \x69\x99 |0 \x69\x96 |0 \x69\x93 |0 \x4D\xAB |0 \x4D\xAD |0 \x4D\xBA |0 \x4D\xAF |0 \x69\x8B |0 \x4D\xB2 |0 \x4D\xB0 |0 \x4D\xB1 |0 \x69\x9B |0 \x69\x98 |0 \x69\x8F |0 \x4D\xAE |0 \x69\x8C |0 \x4D\xAC |0 \x69\x94 |0 \x69\x97 |0 \x69\x8D |0 \x6A\x48 |0 \x4E\xA3 |0 \x4E\x96 |0 \x6A\x49 |0 \x4E\x93 |0 \x4E\xA5 |0 \x4E\x9B |0 \x4E\x9A |0 \x69\xFA |0 \x4E\x9E |0 \x4E\x99 |0 \x6A\x42 |0 \x6A\x4A |0 \x6A\x46 |0 \x4E\x9C |0 \x4E\x9F |0 \x4E\x90 |0 \x4E\xA8 |0 \x69\xFC |0 \x6B\x5E |0 \x4E\x8E |0 \x4E\xA4 |0 \x4E\x8F |0 \x4E\x97 |0 \x4E\x98 |0 \x6A\x44 |0 \x69\xFD |0 \x4E\x9D |0 \x4E\x95 |0 \x69\xF9 |0 \x4E\x91 |0 \x6A\x47 |0 \x4E\xA6 |0 \x4E\xA9 |0 \x4E\x94 |0 \x4E\xA1 |0 \x4E\xA7 |0 \x4E\x92 |0 \x6A\x45 |0 \x4E\xA2 |0 \x6A\x4B |0 \x69\xFB |0 \x4E\xA0 |0 \x6A\x41 |0 \x6A\x43 |0 \x4F\xF8 |0 \x6B\x60 |0 \x6B\x6C |0 \x4F\xF0 |0 \x6B\x6D |0 \x4F\xEB |0 \x4F\xF5 |0 \x4F\xEE |0 \x6B\x5A |0 \x4F\xF6 |0 \x6B\x59 |0 \x6B\x5D |0 \x6B\x64 |0 \x6B\x62 |0 \x50\x41 |0 \x4F\xF9 |0 \x6B\x54 |0 \x6B\x56 |0 \x4F\xFB |0 \x4F\xEF |0 \x6B\x57 |0 \x6B\x63 |0 \x6B\x6A |0 \x4F\xF4 |0 \x6B\x5C |0 \x6B\x55 |0 \x4F\xF3 |0 \x6B\x58 |0 \x4F\xF7 |0 \x6B\x5B |0 \x4F\xF2 |0 \x4F\xED |0 \x4F\xFC |0 \x6B\x65 |0 \x4F\xFD |0 \x6B\x69 |0 \x6B\x67 |0 \x6B\x6B |0 \x4F\xFA |0 \x6B\x5F |0 \x6B\x53 |0 \x6B\x61 |0 \x4F\xF1 |0 \x6B\x66 |0 \x4F\xEC |0 \x6B\x68 |0 \x51\xF7 |0 \x51\xEB |0 \x6D\x43 |0 \x6D\x4B |0 \x51\xEA |0 \x51\xF2 |0 \x52\x41 |0 \x6D\x51 |0 \x6D\x4F |0 \x6D\x4A |0 \x51\xEC |0 \x6D\x50 |0 \x6D\x46 |0 \x51\xFA |0 \x51\xF1 |0 \x51\xF9 |0 \x6D\x41 |0 \x6D\x4D |0 \x6D\x44 |0 \x51\xF5 |0 \x6D\x45 |0 \x6C\xFD |0 \x51\xFC |0 \x51\xEF |0 \x51\xF8 |0 \x51\xEE |0 \x6D\x42 |0 \x6D\x47 |0 \x6D\x4E |0 \x51\xF6 |0 \x51\xF3 |0 \x6D\x49 |0 \x51\xFB |0 \x6D\x4C |0 \x6D\x48 |0 \x51\xF0 |0 \x51\xFD |0 \x51\xF4 |0 \x51\xED |0 \x51\xE9 |0 \x6D\x52 |0 \x54\x5B |0 \x54\x45 |0 \x54\x55 |0 \x54\x5A |0 \x6F\x93 |0 \x6F\x92 |0 \x6F\x97 |0 \x6F\x98 |0 \x54\x48 |0 \x54\x51 |0 \x54\x5E |0 \x54\x52 |0 \x6F\x8C |0 \x54\x4B |0 \x6F\x8D |0 \x54\x60 |0 \x54\x57 |0 \x54\x42 |0 \x54\x43 |0 \x6F\xA0 |0 \x56\xA3 |0 \x54\x50 |0 \x54\x4F |0 \x6F\x8E |0 \x54\x53 |0 \x72\x7F |0 \x54\x4A |0 \x6F\x99 |0 \x54\x59 |0 \x54\x58 |0 \x54\x4E |0 \x6F\x91 |0 \x6F\x9A |0 \x6F\x8B |0 \x54\x4D |0 \x6F\x9B |0 \x54\x56 |0 \x6F\x8F |0 \x54\x44 |0 \x54\x47 |0 \x54\x46 |0 \x6F\x9C |0 \x54\x54 |0 \x54\x49 |0 \x54\x5D |0 \x54\x5F |0 \x6F\x96 |0 \x54\x5C |0 \x6F\x9E |0 \x6F\x90 |0 \x6F\x9F |0 \x6F\x94 |0 \x6F\x9D |0 \x6F\x95 |0 \x54\x4C |0 \x72\x88 |0 \x72\x7B |0 \x56\x97 |0 \x72\x81 |0 \x72\x87 |0 \x56\x96 |0 \x72\x79 |0 \x56\x9A |0 \x72\x7D |0 \x72\x76 |0 \x56\x98 |0 \x72\x7A |0 \x56\x9D |0 \x56\xA2 |0 \x72\x8C |0 \x72\x75 |0 \x56\x9E |0 \x72\x8B |0 \x56\x99 |0 \x72\x7C |0 \x56\x95 |0 \x72\x77 |0 \x72\x73 |0 \x72\x82 |0 \x72\x74 |0 \x72\x72 |0 \x72\x7E |0 \x72\x85 |0 \x72\x86 |0 \x56\x9B |0 \x75\xC0 |0 \x72\x83 |0 \x72\x71 |0 \x72\x84 |0 \x56\xA5 |0 \x72\x89 |0 \x56\xA4 |0 \x72\x70 |0 \x72\x78 |0 \x72\x8A |0 \x56\xA0 |0 \x56\x9F |0 \x56\x9C |0 \x56\xA1 |0 \x56\x93 |0 \x56\x94 |0 \x59\x4E |0 \x75\xC3 |0 \x75\xBC |0 \x59\x4B |0 \x75\xC4 |0 \x75\xBA |0 \x75\xBD |0 \x59\x4A |0 \x75\xBE |0 \x59\x4D |0 \x75\xC2 |0 \x75\xB8 |0 \x75\xB7 |0 \x59\x4F |0 \x59\x50 |0 \x59\x4C |0 \x59\x51 |0 \x75\xB6 |0 \x75\xC1 |0 \x75\xBF |0 \x75\xB9 |0 \x59\x49 |0 \x75\xBB |0 \x5B\xB0 |0 \x5B\xAA |0 \x79\x7D |0 \x5B\xB3 |0 \x79\x84 |0 \x79\x87 |0 \x5B\xAC |0 \x5B\xAD |0 \x79\x81 |0 \x5B\xAB |0 \x79\x8A |0 \x5B\xB1 |0 \x79\x8B |0 \x79\x86 |0 \x5B\xB2 |0 \x79\x7A |0 \x5B\xAF |0 \x79\x7B |0 \x79\x85 |0 \x79\x83 |0 \x79\x7E |0 \x5B\xAE |0 \x79\x7C |0 \x5B\xB4 |0 \x79\x82 |0 \x79\x89 |0 \x79\x7F |0 \x79\x88 |0 \x5D\xFB |0 \x5D\xF8 |0 \x5D\xF9 |0 \x7D\x43 |0 \x7C\xF8 |0 \x5D\xF7 |0 \x5D\xF4 |0 \x7C\xF9 |0 \x5D\xF6 |0 \x7C\xFC |0 \x7D\x41 |0 \x7D\x48 |0 \x7D\x47 |0 \x7D\x42 |0 \x5D\xF3 |0 \x7C\xF7 |0 \x5D\xF1 |0 \x7C\xFA |0 \x5D\xFC |0 \x7C\xFD |0 \x7D\x44 |0 \x5D\xF5 |0 \x5D\xF2 |0 \x7D\x46 |0 \x7D\x45 |0 \x5D\xFA |0 \x7C\xFB |0 \x60\x42 |0 \x80\x76 |0 \x80\x73 |0 \x60\x43 |0 \x60\x41 |0 \x80\x7A |0 \x80\x77 |0 \x80\x70 |0 \x5F\xFD |0 \x60\x44 |0 \x80\x71 |0 \x5F\xFC |0 \x60\x47 |0 \x80\x74 |0 \x80\x75 |0 \x60\x45 |0 \x60\x46 |0 \x80\x7B |0 \x80\x78 |0 \x80\x79 |0 \x62\x53 |0 \x83\xC3 |0 \x62\x50 |0 \x83\xC0 |0 \x62\x52 |0 \x62\x54 |0 \x83\xC1 |0 \x62\x51 |0 \x83\xC2 |0 \x83\xBF |0 \x63\xC0 |0 \x86\xC8 |0 \x63\xC1 |0 \x86\xC6 |0 \x86\xC7 |0 \x86\xC5 |0 \x86\xC4 |0 \x86\xC9 |0 \x63\xBF |0 \x89\x65 |0 \x89\x66 |0 \x80\x72 |0 \x89\x64 |0 \x63\xC2 |0 \x66\x4B |0 \x8B\x5A |0 \x8B\x5B |0 \x67\x83 |0 \x67\x84 |0 \x8E\x70 |0 \x8E\x6F |0 \x67\xD7 |0 \x67\xD6 |0 \x90\x41 |0 \x48\x4A |3 \x4C\x4A |0 \x4C\x62 |0 \x4C\x99 |0 \x4C\x98 |0 \x4C\xF2 |0 \x4C\xF1 |0 \x4D\xBD |0 \x4D\xBC |0 \x4D\xBE |0 \x4D\xBB |0 \x4E\xAB |0 \x4E\xAA |0 \x4E\xAC |0 \x50\x43 |0 \x50\x42 |0 \x50\x44 |0 \x52\x42 |0 \x46\xF1 |0 \x6F\xA1 |0 \x46\xF2 |0 \x56\xA6 |0 \x46\xF4 |0 \x46\xF3 |0 \x75\xC5 |0 \x46\xF5 |0 \x5D\xFD |0 \x46\xF6 |0 \x48\x4B |3 \x4C\x4B |0 \x4C\x9A |0 \x4D\xBF |0 \x50\x45 |0 \x48\x4C |3 \x4C\x4C |0 \x4C\x9D |0 \x4C\x9B |0 \x4C\x9C |0 \x4D\xC0 |0 \x4E\xAD |0 \x50\x47 |0 \x50\x46 |0 \x50\x48 |0 \x54\x61 |0 \x62\x55 |0 \x48\x4D |0 \x69\x4F |0 \x4C\xF3 |0 \x4C\xF4 |0 \x4D\xC1 |0 \x6A\x4C |0 \x52\x44 |0 \x52\x43 |0 \x6F\xA3 |0 \x6F\xA2 |0 \x56\xA7 |0 \x48\x4E |0 \x4C\x9E |0 \x69\x56 |0 \x6B\x6E |0 \x52\x45 |0 \x54\x64 |0 \x54\x62 |0 \x54\x63 |0 \x62\x56 |0 \x48\x4F |0 \x4C\xF5 |0 \x4D\xC2 |0 \x69\x9C |0 \x4E\xAE |0 \x4E\xAF |0 \x6A\x4D |0 \x6B\x6F |0 \x50\x49 |0 \x6B\x70 |0 \x6F\xA5 |0 \x6F\xA6 |0 \x54\x67 |0 \x6F\xA7 |0 \x6F\xA4 |0 \x54\x68 |0 \x54\x66 |0 \x54\x65 |0 \x6F\xA8 |0 \x72\x8D |0 \x75\xC6 |0 \x79\x8C |0 \x7D\x49 |0 \x60\x48 |0 \x62\x57 |0 \x83\xC4 |0 \x48\x50 |3 \x4C\x4D |0 \x4C\x5B |0 \x56\xA8 |0 \x59\x53 |0 \x5E\x41 |0 \x48\x51 |3 \x69\x43 |0 \x4C\x9F |0 \x4C\xF8 |0 \x4C\xF6 |0 \x4C\xF7 |0 \x50\x4A |0 \x48\x52 |3 \x4C\x4E |0 \x4C\x4F |0 \x4C\x63 |0 \x4C\xA0 |0 \x4C\xA1 |0 \x4C\xA2 |0 \x69\x9E |0 \x4C\xF9 |0 \x69\x6C |0 \x4D\xC6 |0 \x69\x9F |0 \x4D\xC4 |0 \x4D\xC5 |0 \x69\x9D |0 \x4D\xC7 |0 \x4D\xC3 |0 \x6A\x4E |0 \x51\xCE |0 \x6A\x4F |0 \x6A\x50 |0 \x4E\xB1 |0 \x4E\xB0 |0 \x4E\xB4 |0 \x4E\xB2 |0 \x4E\xB3 |0 \x50\x50 |0 \x50\x4F |0 \x6B\x75 |0 \x6B\x72 |0 \x6B\x73 |0 \x6B\x71 |0 \x50\x51 |0 \x50\x4D |0 \x50\x4C |0 \x50\x4E |0 \x50\x4B |0 \x50\x52 |0 \x52\x47 |0 \x6D\x53 |0 \x6B\x74 |0 \x52\x4C |0 \x6D\x54 |0 \x52\x48 |0 \x52\x4B |0 \x52\x4A |0 \x52\x49 |0 \x52\x46 |0 \x6F\xAB |0 \x54\x6B |0 \x6F\xAE |0 \x54\x69 |0 \x6F\xAA |0 \x54\x6C |0 \x54\x6A |0 \x54\x6D |0 \x6F\xAC |0 \x6F\xAD |0 \x6F\xA9 |0 \x6F\xAF |0 \x59\x57 |0 \x56\xA9 |0 \x72\x8E |0 \x72\x90 |0 \x72\x8F |0 \x72\x91 |0 \x56\xAA |0 \x59\x54 |0 \x59\x55 |0 \x59\x56 |0 \x5B\xB6 |0 \x79\x8E |0 \x79\x8D |0 \x79\x8F |0 \x79\x90 |0 \x5B\xB7 |0 \x5B\xB5 |0 \x7D\x4A |0 \x7D\x4B |0 \x5E\x43 |0 \x5E\x42 |0 \x7E\xE2 |0 \x60\x49 |0 \x60\x4A |0 \x60\x4B |0 \x60\x4D |0 \x80\x7C |0 \x80\x7D |0 \x60\x4C |0 \x62\x58 |0 \x62\x59 |0 \x8B\x5C |0 \x8E\x72 |0 \x8E\x71 |0 \x90\x42 |0 \x48\x53 |3 \x4C\x50 |0 \x4C\xFB |0 \x4C\xFA |0 \x4D\xC8 |0 \x69\xA0 |0 \x4E\xB6 |0 \x4E\xB7 |0 \x4E\xB5 |0 \x4E\xB8 |0 \x6A\x51 |0 \x6A\x52 |0 \x50\x54 |0 \x6B\x76 |0 \x50\x53 |0 \x6D\x55 |0 \x52\x50 |0 \x6D\x56 |0 \x52\x4F |0 \x52\x4D |0 \x52\x4E |0 \x6F\xB0 |0 \x56\xAB |0 \x72\x93 |0 \x56\xAE |0 \x72\x92 |0 \x57\xAA |0 \x56\xAD |0 \x56\xAC |0 \x59\x5A |0 \x59\x59 |0 \x59\x58 |0 \x5B\xB8 |0 \x5B\xBB |0 \x5B\xBC |0 \x5B\xBA |0 \x5B\xB9 |0 \x7D\x4C |0 \x7D\x4D |0 \x80\x7F |0 \x60\x4E |0 \x80\x7E |0 \x62\x5A |0 \x86\xCA |0 \x63\xC3 |0 \x8B\x5D |0 \x66\xDF |0 \x48\x54 |0 \x4C\x64 |0 \x4C\xA3 |0 \x69\x57 |0 \x4C\xA4 |0 \x4C\xA5 |0 \x4C\xFC |0 \x4C\xFD |0 \x4D\xC9 |0 \x6A\x53 |0 \x6B\x77 |0 \x6B\x78 |0 \x52\x51 |0 \x6F\xB1 |0 \x56\xB0 |0 \x56\xAF |0 \x75\xC8 |0 \x75\xC7 |0 \x48\x55 |3 \x4C\x51 |0 \x4C\xA6 |0 \x4D\x41 |0 \x56\xB1 |0 \x48\x56 |3 \x69\x44 |0 \x69\x6D |0 \x4D\x42 |0 \x69\xA2 |0 \x4D\xCB |0 \x4D\xCA |0 \x69\xA1 |0 \x4E\xB9 |0 \x54\x6E |0 \x72\x94 |0 \x5B\xBD |0 \x7D\x4E |0 \x5E\x44 |0 \x83\xC5 |0 \x8C\xEB |0 \x48\x57 |0 \x4C\xA7 |0 \x6B\x79 |0 \x6D\x57 |0 \x56\xB4 |0 \x56\xB2 |0 \x56\xB3 |0 \x45\x4A |3 \x48\x58 |3 \x4C\x52 |0 \x4C\x65 |0 \x45\x4B |0 \x45\x4C |3 \x4C\xAA |0 \x4C\xA9 |0 \x4C\xA8 |0 \x4D\x45 |0 \x4D\x44 |0 \x69\x6E |0 \x69\xA3 |0 \x50\x58 |0 \x50\x55 |0 \x50\x57 |0 \x50\x56 |0 \x52\x52 |0 \x59\x5B |0 \x48\x59 |3 \x4C\x53 |0 \x4C\xAB |0 \x4D\x47 |0 \x4D\x46 |0 \x6A\x54 |0 \x50\x59 |0 \x48\x5A |0 \x69\x58 |0 \x4D\x49 |0 \x4D\x48 |0 \x4D\xCC |0 \x4D\xCD |0 \x6A\x55 |0 \x4E\xBA |0 \x4E\xBB |0 \x50\x5A |0 \x50\x5B |0 \x50\x5C |0 \x52\x53 |0 \x6D\x58 |0 \x54\x6F |0 \x48\x5B |3 \x69\x45 |0 \x4C\xAC |0 \x69\xA4 |0 \x6A\x56 |0 \x6A\x57 |0 \x6B\x7A |0 \x6B\x7B |0 \x6D\x5A |0 \x6D\x59 |0 \x6D\x5C |0 \x6D\x5B |0 \x52\x54 |0 \x72\x95 |0 \x54\x71 |0 \x6F\xB2 |0 \x54\x70 |0 \x75\xC9 |0 \x59\x5C |0 \x75\xCA |0 \x7D\x4F |0 \x5E\x45 |0 \x60\x4F |0 \x8B\x5E |0 \x48\x5C |0 \x69\x59 |0 \x4D\x4A |0 \x56\xB5 |0 \x48\x5D |3 \x4C\x54 |0 \x4C\x66 |0 \x4C\xAE |0 \x4C\xAD |0 \x4C\xAF |0 \x50\x5E |0 \x50\x5D |0 \x50\x5F |0 \x52\x55 |0 \x54\x72 |0 \x83\xC6 |0 \x65\x5A |0 \x48\x5E |3 \x4C\x67 |0 \x4D\x4C |0 \x4D\x5B |0 \x4D\x56 |0 \x4D\x51 |0 \x4D\x50 |0 \x4D\x57 |0 \x4D\x55 |0 \x4D\x4E |0 \x4D\x5C |0 \x4D\x4F |0 \x4D\x4B |0 \x4D\x5A |0 \x4D\x59 |0 \x4D\x58 |0 \x4D\x4D |0 \x4D\x54 |0 \x4D\x53 |0 \x4D\x5D |0 \x4D\x52 |0 \x4D\xD3 |0 \x4D\xD9 |0 \x4D\xD5 |0 \x4D\xDB |0 \x69\xA5 |0 \x4D\xD8 |0 \x4D\xCE |0 \x4D\xD1 |0 \x4D\xD4 |0 \x4D\xD0 |0 \x4D\xD7 |0 \x4D\xDA |0 \x4D\xCF |0 \x4D\xD2 |0 \x4D\xD6 |0 \x4D\xDC |0 \x6A\x60 |0 \x6A\x5D |0 \x4E\xC8 |0 \x6A\x5E |0 \x4E\xBC |0 \x4E\xBE |0 \x4E\xD6 |0 \x4E\xD1 |0 \x6A\x65 |0 \x6A\x5F |0 \x4E\xC0 |0 \x4E\xC2 |0 \x6A\x64 |0 \x4E\xC9 |0 \x6A\x5A |0 \x4E\xD5 |0 \x4E\xD7 |0 \x4E\xBD |0 \x4E\xCE |0 \x6A\x58 |0 \x4E\xD4 |0 \x4E\xC5 |0 \x4E\xCF |0 \x4E\xD0 |0 \x6A\x59 |0 \x4E\xCD |0 \x4E\xCB |0 \x4E\xCC |0 \x4E\xD2 |0 \x6A\x61 |0 \x4E\xBF |0 \x4E\xD3 |0 \x6A\x63 |0 \x4E\xC7 |0 \x4E\xC4 |0 \x6A\x5C |0 \x4E\xC3 |0 \x6A\x66 |0 \x4E\xC6 |0 \x4E\xCA |0 \x4E\xC1 |0 \x6A\x62 |0 \x6A\x5B |0 \x6B\x8D |0 \x6B\x8C |0 \x50\x71 |0 \x6B\x8F |0 \x6B\x91 |0 \x6B\x86 |0 \x6B\x89 |0 \x6B\x90 |0 \x50\x72 |0 \x6B\x83 |0 \x6B\x87 |0 \x6B\x8B |0 \x6D\x6B |0 \x50\x6D |0 \x6D\x6F |0 \x50\x60 |0 \x6B\x88 |0 \x50\x61 |0 \x50\x6E |0 \x50\x67 |0 \x50\x63 |0 \x6B\x84 |0 \x50\x66 |0 \x50\x6B |0 \x50\x74 |0 \x6B\x85 |0 \x6B\x7D |0 \x50\x65 |0 \x6B\x7E |0 \x6B\x81 |0 \x50\x68 |0 \x50\x6A |0 \x6B\x7C |0 \x6B\x82 |0 \x50\x73 |0 \x50\x6F |0 \x6B\x8A |0 \x50\x75 |0 \x50\x6C |0 \x6B\x7F |0 \x50\x69 |0 \x50\x64 |0 \x50\x62 |0 \x6B\x8E |0 \x50\x70 |0 \x6D\x6A |0 \x6D\x5E |0 \x6D\x6D |0 \x6D\x60 |0 \x52\x5C |0 \x52\x6A |0 \x52\x58 |0 \x52\x69 |0 \x52\x61 |0 \x52\x66 |0 \x52\x56 |0 \x6D\x5F |0 \x6D\x65 |0 \x52\x65 |0 \x6D\x71 |0 \x52\x67 |0 \x52\x5D |0 \x6D\x67 |0 \x6D\x64 |0 \x52\x5B |0 \x6D\x5D |0 \x52\x68 |0 \x6D\x6C |0 \x52\x60 |0 \x6D\x6E |0 \x52\x6B |0 \x52\x57 |0 \x52\x62 |0 \x52\x5F |0 \x6D\x62 |0 \x52\x63 |0 \x6D\x68 |0 \x6D\x69 |0 \x52\x5E |0 \x52\x64 |0 \x52\x5A |0 \x52\x59 |0 \x6D\x61 |0 \x6D\x66 |0 \x6D\x70 |0 \x6F\xC6 |0 \x54\x7F |0 \x6F\xB4 |0 \x6F\xB9 |0 \x54\x78 |0 \x54\x84 |0 \x6F\xB7 |0 \x54\x73 |0 \x54\x7D |0 \x54\x83 |0 \x6F\xBE |0 \x54\x7E |0 \x54\x82 |0 \x6F\xC1 |0 \x54\x79 |0 \x6F\xB8 |0 \x6F\xC4 |0 \x6F\xC5 |0 \x54\x7B |0 \x6F\xC3 |0 \x54\x77 |0 \x54\x87 |0 \x6F\xBB |0 \x54\x75 |0 \x6F\xC8 |0 \x6F\xBC |0 \x6F\xC0 |0 \x54\x7A |0 \x54\x86 |0 \x6F\xBD |0 \x54\x81 |0 \x6F\xC2 |0 \x6F\xC9 |0 \x72\xA4 |0 \x6F\xC7 |0 \x54\x88 |0 \x54\x74 |0 \x6F\xBF |0 \x6F\xB6 |0 \x54\x7C |0 \x6F\xB5 |0 \x6F\xBA |0 \x6F\xB3 |0 \x54\x85 |0 \x72\x9C |0 \x56\xC8 |0 \x72\xAA |0 \x56\xC6 |0 \x56\xC3 |0 \x72\xA1 |0 \x56\xBF |0 \x72\xA5 |0 \x56\xCA |0 \x72\x9B |0 \x72\xA0 |0 \x72\x9F |0 \x54\x76 |0 \x56\xC5 |0 \x72\xA8 |0 \x72\xAB |0 \x72\x98 |0 \x59\x6E |0 \x72\xAC |0 \x56\xCB |0 \x56\xBD |0 \x56\xBA |0 \x72\xA3 |0 \x56\xB7 |0 \x72\xA9 |0 \x56\xBE |0 \x72\xAD |0 \x72\x99 |0 \x72\xA7 |0 \x56\xC1 |0 \x72\x9A |0 \x72\x9D |0 \x72\xA2 |0 \x56\xC2 |0 \x56\xC0 |0 \x56\xCC |0 \x56\xC7 |0 \x56\xBB |0 \x57\x97 |0 \x56\xBC |0 \x72\x9E |0 \x56\xC9 |0 \x56\xC4 |0 \x72\xA6 |0 \x56\xB9 |0 \x56\xB8 |0 \x72\x96 |0 \x72\x97 |0 \x75\xCF |0 \x59\x5D |0 \x59\x60 |0 \x75\xDA |0 \x59\x74 |0 \x75\xDD |0 \x59\x5E |0 \x75\xD6 |0 \x59\x64 |0 \x59\x6A |0 \x5A\xC2 |0 \x59\x68 |0 \x75\xD3 |0 \x59\x75 |0 \x59\x61 |0 \x59\x69 |0 \x75\xDB |0 \x79\x9E |0 \x75\xE0 |0 \x75\xD4 |0 \x75\xCB |0 \x75\xD8 |0 \x75\xD2 |0 \x59\x67 |0 \x75\xDE |0 \x59\x63 |0 \x59\x77 |0 \x59\x70 |0 \x59\x65 |0 \x59\x62 |0 \x59\x6D |0 \x75\xDF |0 \x75\xD1 |0 \x75\xD7 |0 \x75\xD9 |0 \x75\xCD |0 \x75\xDC |0 \x59\x5F |0 \x75\xCC |0 \x59\x66 |0 \x59\x76 |0 \x59\x72 |0 \x75\xCE |0 \x59\x6C |0 \x59\x73 |0 \x59\x6F |0 \x59\x6B |0 \x75\xD5 |0 \x59\x71 |0 \x79\x9C |0 \x79\x98 |0 \x79\xA7 |0 \x79\x91 |0 \x79\x9A |0 \x5B\xCB |0 \x5B\xCC |0 \x5B\xC4 |0 \x79\xA3 |0 \x5B\xCE |0 \x79\x96 |0 \x79\x95 |0 \x79\x93 |0 \x79\xA5 |0 \x5B\xC2 |0 \x79\x9F |0 \x79\x94 |0 \x5B\xC5 |0 \x79\x9D |0 \x5B\xC0 |0 \x79\x99 |0 \x79\xA0 |0 \x79\xA2 |0 \x79\xA6 |0 \x5B\xC9 |0 \x79\x92 |0 \x5B\xC3 |0 \x79\x97 |0 \x5B\xBE |0 \x5B\xCA |0 \x79\xA1 |0 \x5B\xC6 |0 \x5B\xC7 |0 \x5B\xCD |0 \x5B\xC1 |0 \x46\xF7 |0 \x5B\xBF |0 \x79\x9B |0 \x5B\xC8 |0 \x79\xA4 |0 \x5E\x55 |0 \x5E\x50 |0 \x7D\x5E |0 \x7D\x5A |0 \x7D\x54 |0 \x5E\x4A |0 \x5E\x46 |0 \x7D\x5D |0 \x5E\x47 |0 \x7D\x57 |0 \x7D\x59 |0 \x7D\x5C |0 \x5E\x4C |0 \x5E\x53 |0 \x5E\x4D |0 \x7D\x52 |0 \x5E\x4E |0 \x5E\x4F |0 \x7D\x55 |0 \x5E\x54 |0 \x7D\x53 |0 \x7D\x58 |0 \x5E\x4B |0 \x7D\x51 |0 \x5E\x51 |0 \x5E\x49 |0 \x5E\x48 |0 \x7D\x56 |0 \x7D\x5B |0 \x5E\x52 |0 \x7D\x50 |0 \x60\x56 |0 \x80\x91 |0 \x80\x8E |0 \x60\x50 |0 \x60\x5C |0 \x60\x5D |0 \x60\x53 |0 \x80\x8C |0 \x60\x55 |0 \x80\x84 |0 \x60\x5B |0 \x80\x90 |0 \x60\x52 |0 \x80\x92 |0 \x60\x51 |0 \x80\x8D |0 \x80\x8F |0 \x60\x54 |0 \x80\x8B |0 \x80\x85 |0 \x80\x82 |0 \x75\xD0 |0 \x80\x88 |0 \x80\x81 |0 \x80\x87 |0 \x80\x86 |0 \x80\x83 |0 \x60\x58 |0 \x60\x57 |0 \x60\x59 |0 \x80\x89 |0 \x62\x5B |0 \x80\x8A |0 \x83\xCF |0 \x83\xC8 |0 \x62\x67 |0 \x83\xCC |0 \x62\x5F |0 \x62\x63 |0 \x83\xCB |0 \x62\x62 |0 \x62\x5E |0 \x62\x61 |0 \x62\x5C |0 \x62\x66 |0 \x83\xCD |0 \x83\xC9 |0 \x62\x65 |0 \x83\xC7 |0 \x62\x64 |0 \x83\xCE |0 \x83\xCA |0 \x60\x5A |0 \x62\x68 |0 \x83\xD0 |0 \x62\x60 |0 \x62\x5D |0 \x86\xD1 |0 \x86\xD3 |0 \x63\xC5 |0 \x86\xD4 |0 \x86\xD2 |0 \x86\xD0 |0 \x86\xCF |0 \x63\xC7 |0 \x86\xCE |0 \x63\xC8 |0 \x86\xCC |0 \x86\xCD |0 \x63\xC4 |0 \x63\xC9 |0 \x63\xC6 |0 \x86\xCB |0 \x65\x5B |0 \x89\x69 |0 \x89\x67 |0 \x89\x6C |0 \x89\x6A |0 \x89\x68 |0 \x89\x6B |0 \x66\x4C |0 \x8B\x61 |0 \x8B\x62 |0 \x66\xE0 |0 \x8B\x63 |0 \x8B\x5F |0 \x8B\x64 |0 \x8B\x60 |0 \x65\x5C |0 \x8C\xEC |0 \x8C\xEE |0 \x66\xE3 |0 \x8C\xED |0 \x66\xE2 |0 \x66\xE1 |0 \x66\xE4 |0 \x8E\x74 |0 \x8E\x75 |0 \x67\x86 |0 \x67\x85 |0 \x67\x87 |0 \x8E\x73 |0 \x8F\x68 |0 \x8F\x67 |0 \x67\xD8 |0 \x67\xDA |0 \x67\xD9 |0 \x8F\x69 |0 \x68\x54 |0 \x90\xB5 |0 \x68\x7D |0 \x90\xB4 |0 \x90\xFD |0 \x48\x5F |3 \x69\x4A |0 \x4D\x5F |0 \x4D\x5E |0 \x4D\xDF |0 \x4D\xDE |0 \x69\xA7 |0 \x4D\xDD |0 \x69\xA6 |0 \x4E\xDA |0 \x6A\x69 |0 \x6A\x68 |0 \x4E\xD8 |0 \x4E\xDB |0 \x6A\x67 |0 \x4E\xD9 |0 \x6B\x92 |0 \x6B\x93 |0 \x50\x76 |0 \x52\x6C |0 \x6F\xCA |0 \x6F\xCB |0 \x54\x89 |0 \x54\x8A |0 \x72\xAF |0 \x56\xCD |0 \x56\xCF |0 \x72\xAE |0 \x56\xCE |0 \x75\xE1 |0 \x59\x78 |0 \x5B\xCF |0 \x5B\xD0 |0 \x79\xA8 |0 \x5E\x57 |0 \x5E\x56 |0 \x80\x93 |0 \x83\xD2 |0 \x83\xD1 |0 \x91\x7C |0 \x48\x60 |3 \x4C\x68 |0 \x69\x5A |0 \x69\x6F |0 \x69\x70 |0 \x4D\xE2 |0 \x4D\xE6 |0 \x69\xA9 |0 \x4D\xE4 |0 \x4D\xE3 |0 \x69\xA8 |0 \x4D\xE5 |0 \x4D\xE1 |0 \x4D\xE0 |0 \x69\xAA |0 \x4E\xE5 |0 \x4E\xE2 |0 \x4E\xDE |0 \x6A\x6A |0 \x6A\x6B |0 \x4E\xE0 |0 \x6A\x6D |0 \x4E\xDC |0 \x6A\x6E |0 \x6A\x6C |0 \x4E\xDF |0 \x4E\xE1 |0 \x4E\xE4 |0 \x4E\xE3 |0 \x4E\xDD |0 \x6A\x6F |0 \x50\x7B |0 \x6B\xA0 |0 \x50\x7D |0 \x50\x7C |0 \x6B\xA1 |0 \x50\x7A |0 \x50\x79 |0 \x6B\x97 |0 \x6B\x96 |0 \x6B\x94 |0 \x6B\x99 |0 \x6B\x98 |0 \x6B\x95 |0 \x6B\x9E |0 \x6B\x9F |0 \x6B\x9C |0 \x6B\x9A |0 \x50\x78 |0 \x6B\x9D |0 \x50\x7E |0 \x6B\xA2 |0 \x6B\x9B |0 \x52\x6D |0 \x50\x77 |0 \x52\x6E |0 \x6D\x76 |0 \x6D\x7C |0 \x52\x74 |0 \x6D\x7A |0 \x6D\x81 |0 \x6D\x77 |0 \x6D\x7B |0 \x6D\x7D |0 \x6D\x7F |0 \x6D\x79 |0 \x6D\x78 |0 \x6D\x73 |0 \x6D\x74 |0 \x52\x6F |0 \x52\x71 |0 \x52\x70 |0 \x6D\x75 |0 \x6D\x7E |0 \x52\x73 |0 \x6D\x72 |0 \x6F\xD5 |0 \x6F\xD4 |0 \x6F\xD9 |0 \x6F\xD0 |0 \x6F\xD3 |0 \x6F\xD2 |0 \x6F\xD6 |0 \x6F\xDA |0 \x54\x8B |0 \x54\x8E |0 \x6F\xD1 |0 \x6F\xD7 |0 \x54\x8D |0 \x6F\xCC |0 \x52\x72 |0 \x72\xBD |0 \x6F\xD8 |0 \x6F\xCF |0 \x54\x8C |0 \x6F\xCE |0 \x72\xB4 |0 \x56\xD0 |0 \x56\xD4 |0 \x72\xC4 |0 \x72\xB2 |0 \x72\xC0 |0 \x56\xD5 |0 \x72\xC2 |0 \x72\xC8 |0 \x72\xCC |0 \x72\xC3 |0 \x72\xB7 |0 \x72\xBF |0 \x72\xCD |0 \x72\xCB |0 \x72\xC1 |0 \x72\xBC |0 \x72\xB5 |0 \x75\xE9 |0 \x72\xB3 |0 \x56\xD9 |0 \x72\xBA |0 \x56\xDA |0 \x56\xD6 |0 \x72\xB0 |0 \x72\xC6 |0 \x72\xB8 |0 \x72\xB6 |0 \x72\xC9 |0 \x56\xD7 |0 \x72\xCF |0 \x56\xD1 |0 \x56\xD3 |0 \x72\xBE |0 \x72\xB9 |0 \x54\x8F |0 \x56\xD2 |0 \x72\xBB |0 \x72\xCA |0 \x72\xCE |0 \x72\xC5 |0 \x72\xC7 |0 \x72\xB1 |0 \x75\xE4 |0 \x75\xED |0 \x75\xEC |0 \x59\x81 |0 \x75\xE5 |0 \x59\x82 |0 \x59\x7F |0 \x75\xE7 |0 \x59\x7C |0 \x75\xEB |0 \x75\xE6 |0 \x75\xE8 |0 \x75\xE2 |0 \x59\x7A |0 \x75\xF5 |0 \x75\xF4 |0 \x75\xF1 |0 \x59\x79 |0 \x59\x7D |0 \x59\x7E |0 \x6F\xCD |0 \x75\xEE |0 \x59\x7B |0 \x56\xD8 |0 \x75\xF0 |0 \x75\xE3 |0 \x75\xF3 |0 \x75\xF2 |0 \x75\xF6 |0 \x79\xB6 |0 \x75\xEF |0 \x75\xEA |0 \x79\xAE |0 \x5B\xDA |0 \x5B\xDD |0 \x5B\xD8 |0 \x79\xAD |0 \x79\xB1 |0 \x79\xAC |0 \x5B\xD2 |0 \x5B\xDC |0 \x79\xA9 |0 \x5B\xD6 |0 \x79\xB0 |0 \x5B\xD4 |0 \x5B\xD3 |0 \x79\xB3 |0 \x5B\xD5 |0 \x79\xB5 |0 \x79\xB2 |0 \x5B\xD1 |0 \x5B\xDB |0 \x79\xB7 |0 \x79\xAB |0 \x79\xB4 |0 \x79\xAA |0 \x5B\xD7 |0 \x5B\xD9 |0 \x79\xAF |0 \x79\xB8 |0 \x7D\x66 |0 \x5E\x58 |0 \x7D\x6C |0 \x5E\x5D |0 \x7D\x68 |0 \x7D\x6F |0 \x7D\x60 |0 \x5E\x5F |0 \x5E\x59 |0 \x7D\x65 |0 \x60\x5E |0 \x7D\x64 |0 \x7D\x6D |0 \x5E\x5A |0 \x5E\x5E |0 \x7D\x63 |0 \x7D\x69 |0 \x7D\x6E |0 \x7D\x5F |0 \x5E\x5C |0 \x7D\x67 |0 \x7D\x6B |0 \x7D\x71 |0 \x7D\x61 |0 \x7D\x6A |0 \x5E\x5B |0 \x7D\x70 |0 \x7D\x62 |0 \x60\x62 |0 \x80\x95 |0 \x60\x60 |0 \x60\x5F |0 \x80\x97 |0 \x80\x9C |0 \x80\x98 |0 \x80\x9B |0 \x60\x65 |0 \x62\x4E |0 \x60\x64 |0 \x80\x94 |0 \x80\x9A |0 \x60\x63 |0 \x80\x99 |0 \x80\x96 |0 \x60\x61 |0 \x83\xD7 |0 \x83\xD9 |0 \x83\xD4 |0 \x62\x6A |0 \x83\xD6 |0 \x62\x69 |0 \x83\xD8 |0 \x62\x6C |0 \x83\xDA |0 \x62\x6B |0 \x83\xD3 |0 \x83\xD5 |0 \x63\xCD |0 \x86\xD7 |0 \x63\xCC |0 \x86\xD8 |0 \x63\xCB |0 \x86\xD6 |0 \x63\xCA |0 \x86\xD5 |0 \x65\x5E |0 \x65\x5D |0 \x8B\x65 |0 \x8B\x67 |0 \x8B\x66 |0 \x66\x4D |0 \x66\x4E |0 \x66\x4F |0 \x8C\xEF |0 \x66\xE5 |0 \x90\x44 |0 \x90\x43 |0 \x68\x7E |0 \x48\x61 |3 \x4C\x69 |0 \x4C\xB0 |0 \x4E\xE6 |0 \x6D\x82 |0 \x59\x83 |0 \x59\x84 |0 \x79\xB9 |0 \x5E\x60 |0 \x7D\x72 |0 \x80\x9D |0 \x69\x5B |0 \x6A\x70 |0 \x48\x62 |0 \x6B\xA3 |0 \x6D\x83 |0 \x6F\xDB |0 \x54\x90 |0 \x8B\x68 |0 \x67\x88 |0 \x48\x63 |3 \x4C\x6A |0 \x4D\x60 |0 \x69\x71 |0 \x4D\xE7 |0 \x4D\xE8 |0 \x50\x7F |0 \x56\xDB |0 \x5E\x62 |0 \x5E\x63 |0 \x5E\x61 |0 \x48\x64 |3 \x4C\x6B |0 \x4C\xB1 |0 \x4C\xB3 |0 \x4C\xB2 |0 \x69\x5C |0 \x4C\xB4 |0 \x4D\x61 |0 \x69\x72 |0 \x4D\x62 |0 \x4D\xE9 |0 \x4D\xEA |0 \x69\xAB |0 \x4E\xE7 |0 \x6A\x71 |0 \x50\x84 |0 \x6B\xA4 |0 \x50\x82 |0 \x50\x83 |0 \x50\x81 |0 \x6F\xDC |0 \x52\x78 |0 \x52\x77 |0 \x52\x79 |0 \x52\x76 |0 \x6D\x84 |0 \x50\x85 |0 \x52\x75 |0 \x54\x91 |0 \x54\x92 |0 \x54\x93 |0 \x72\xD0 |0 \x59\x85 |0 \x75\xF7 |0 \x56\xDC |0 \x5B\xDE |0 \x5E\x65 |0 \x5E\x64 |0 \x7D\x73 |0 \x60\x66 |0 \x62\x6D |0 \x89\x6D |0 \x8F\x6A |0 \x90\x45 |0 \x48\x65 |3 \x4C\x6C |0 \x4D\x63 |0 \x4D\x64 |0 \x69\xB1 |0 \x4D\xEC |0 \x4D\xEF |0 \x69\xAF |0 \x69\xAD |0 \x4D\xEE |0 \x69\xB0 |0 \x69\xB2 |0 \x69\xAC |0 \x4D\xF1 |0 \x4D\xF0 |0 \x4D\xED |0 \x4D\xEB |0 \x69\xAE |0 \x4E\xF2 |0 \x4E\xEF |0 \x6A\x76 |0 \x6A\x79 |0 \x6A\x78 |0 \x4E\xE9 |0 \x4E\xF1 |0 \x4E\xEE |0 \x6A\x75 |0 \x6A\x73 |0 \x4E\xED |0 \x4E\xE8 |0 \x4E\xEB |0 \x6A\x74 |0 \x6A\x7B |0 \x6A\x77 |0 \x4E\xEC |0 \x4E\xF0 |0 \x4E\xF3 |0 \x6A\x72 |0 \x6A\x7A |0 \x4E\xEA |0 \x50\x8A |0 \x50\x92 |0 \x6B\xB0 |0 \x6B\xA9 |0 \x50\x93 |0 \x6B\xB4 |0 \x6B\xA5 |0 \x6B\xAC |0 \x50\x89 |0 \x6B\xA6 |0 \x50\x87 |0 \x6B\xAD |0 \x6B\xB1 |0 \x50\x86 |0 \x6B\xB2 |0 \x6B\xAB |0 \x6B\xAE |0 \x50\x95 |0 \x50\x8C |0 \x6B\xB5 |0 \x6B\xB3 |0 \x50\x91 |0 \x50\x8F |0 \x6B\xAA |0 \x50\x8E |0 \x6B\xA8 |0 \x6B\xA7 |0 \x50\x8D |0 \x50\x8B |0 \x50\x94 |0 \x50\x90 |0 \x50\x88 |0 \x6B\xAF |0 \x52\x7B |0 \x52\x83 |0 \x6D\x92 |0 \x52\x7A |0 \x6D\x8A |0 \x6D\x86 |0 \x6D\x96 |0 \x6D\x85 |0 \x52\x7D |0 \x6D\x8F |0 \x52\x81 |0 \x52\x84 |0 \x52\x7E |0 \x6D\x93 |0 \x52\x82 |0 \x54\x9A |0 \x6D\x99 |0 \x6D\x87 |0 \x6D\x89 |0 \x6D\x90 |0 \x6D\x94 |0 \x6D\x98 |0 \x6D\x95 |0 \x6D\x8E |0 \x6D\x91 |0 \x6D\x8B |0 \x52\x86 |0 \x6D\x8D |0 \x6D\x8C |0 \x6D\x97 |0 \x52\x7C |0 \x6D\x88 |0 \x52\x85 |0 \x52\x7F |0 \x54\xA0 |0 \x6F\xE4 |0 \x54\x9F |0 \x6F\xE2 |0 \x54\x94 |0 \x54\x99 |0 \x6F\xE1 |0 \x6F\xDE |0 \x6F\xE3 |0 \x54\x95 |0 \x6F\xDD |0 \x54\x98 |0 \x54\x96 |0 \x6F\xE5 |0 \x54\x97 |0 \x54\x9B |0 \x54\x9C |0 \x54\x9E |0 \x54\x9D |0 \x6F\xDF |0 \x6F\xE0 |0 \x6F\xE6 |0 \x72\xD7 |0 \x56\xDD |0 \x76\x48 |0 \x72\xD6 |0 \x72\xE9 |0 \x56\xE3 |0 \x72\xE7 |0 \x56\xE2 |0 \x56\xDE |0 \x72\xF0 |0 \x72\xE0 |0 \x72\xE3 |0 \x56\xE6 |0 \x72\xED |0 \x72\xE5 |0 \x56\xDF |0 \x56\xE7 |0 \x72\xEA |0 \x72\xE8 |0 \x72\xD9 |0 \x72\xEE |0 \x72\xE2 |0 \x72\xDD |0 \x72\xD3 |0 \x72\xEF |0 \x72\xDF |0 \x72\xD2 |0 \x56\xE5 |0 \x72\xE4 |0 \x72\xF1 |0 \x72\xE1 |0 \x72\xD5 |0 \x72\xDA |0 \x72\xD1 |0 \x56\xE4 |0 \x72\xDE |0 \x72\xDB |0 \x56\xE0 |0 \x72\xD4 |0 \x72\xEC |0 \x56\xE1 |0 \x72\xDC |0 \x72\xD8 |0 \x72\xEB |0 \x59\x86 |0 \x76\x41 |0 \x75\xFB |0 \x76\x4F |0 \x76\x43 |0 \x76\x50 |0 \x59\x88 |0 \x76\x4C |0 \x76\x49 |0 \x76\x4A |0 \x76\x4D |0 \x76\x51 |0 \x72\xE6 |0 \x76\x53 |0 \x79\xCD |0 \x59\x89 |0 \x76\x54 |0 \x75\xF9 |0 \x76\x46 |0 \x76\x4B |0 \x59\x87 |0 \x59\x8A |0 \x76\x52 |0 \x76\x55 |0 \x75\xFD |0 \x75\xFA |0 \x75\xFC |0 \x76\x44 |0 \x76\x42 |0 \x59\x8B |0 \x76\x4E |0 \x76\x45 |0 \x76\x47 |0 \x75\xF8 |0 \x79\xC1 |0 \x79\xBF |0 \x5B\xE7 |0 \x5B\xE5 |0 \x79\xC9 |0 \x79\xC0 |0 \x79\xCA |0 \x79\xC6 |0 \x79\xBE |0 \x79\xCC |0 \x79\xBD |0 \x79\xC4 |0 \x5B\xE4 |0 \x5B\xE3 |0 \x5B\xE2 |0 \x79\xC2 |0 \x79\xC7 |0 \x5B\xDF |0 \x5B\xE6 |0 \x79\xBB |0 \x79\xC5 |0 \x79\xBA |0 \x79\xC3 |0 \x5B\xE0 |0 \x79\xC8 |0 \x79\xBC |0 \x5B\xE1 |0 \x79\xCB |0 \x7D\x77 |0 \x5E\x6A |0 \x5E\x69 |0 \x5E\x6B |0 \x7D\x84 |0 \x7D\x79 |0 \x7D\x7F |0 \x7D\x74 |0 \x7D\x83 |0 \x7D\x82 |0 \x7D\x86 |0 \x7D\x7E |0 \x5E\x66 |0 \x7D\x7D |0 \x5E\x6C |0 \x7D\x76 |0 \x5E\x67 |0 \x7D\x85 |0 \x5E\x68 |0 \x7D\x78 |0 \x7D\x7B |0 \x7D\x81 |0 \x7D\x7A |0 \x7D\x75 |0 \x7D\x7C |0 \x80\x9F |0 \x60\x6A |0 \x80\xA2 |0 \x80\xA1 |0 \x80\xA4 |0 \x80\xA6 |0 \x60\x68 |0 \x80\xA0 |0 \x80\x9E |0 \x80\xA7 |0 \x80\xA5 |0 \x80\xA3 |0 \x80\xA9 |0 \x80\xA8 |0 \x60\x6C |0 \x60\x67 |0 \x60\x69 |0 \x60\x6B |0 \x80\xAA |0 \x83\xE1 |0 \x83\xE0 |0 \x83\xDF |0 \x83\xE2 |0 \x83\xDB |0 \x83\xDC |0 \x83\xE4 |0 \x83\xDD |0 \x62\x6E |0 \x83\xE6 |0 \x83\xE5 |0 \x83\xDE |0 \x86\xDC |0 \x63\xD0 |0 \x86\xDA |0 \x86\xDF |0 \x86\xDE |0 \x83\xE3 |0 \x63\xCF |0 \x86\xDD |0 \x86\xD9 |0 \x86\xE1 |0 \x86\xE0 |0 \x63\xCE |0 \x86\xDB |0 \x62\x6F |0 \x65\x5F |0 \x89\x6E |0 \x8B\x69 |0 \x8B\x6A |0 \x8B\x6B |0 \x66\xE6 |0 \x66\xE7 |0 \x8C\xF0 |0 \x8E\x77 |0 \x8E\x76 |0 \x8F\x6B |0 \x8F\x6C |0 \x90\x46 |0 \x90\xB6 |0 \x48\x66 |3 \x4C\x6D |0 \x4C\x6E |0 \x4C\x6F |0 \x4C\xB5 |0 \x4D\x65 |0 \x69\xB3 |0 \x4D\xF2 |0 \x4D\xF3 |0 \x4E\xF6 |0 \x4E\xF7 |0 \x4E\xF5 |0 \x4E\xF4 |0 \x50\x96 |0 \x6B\xB6 |0 \x50\x98 |0 \x50\x97 |0 \x6B\xB7 |0 \x52\x87 |0 \x54\xA1 |0 \x6F\xE7 |0 \x72\xF3 |0 \x56\xE8 |0 \x59\x8D |0 \x72\xF2 |0 \x59\x8C |0 \x5E\x6D |0 \x7D\x87 |0 \x62\x70 |0 \x63\xD1 |0 \x86\xE2 |0 \x66\xE8 |0 \x67\xDB |0 \x48\x67 |0 \x69\x73 |0 \x4D\x66 |0 \x69\x74 |0 \x4D\xF6 |0 \x4D\xF4 |0 \x4D\xF5 |0 \x4D\xF7 |0 \x4E\xF9 |0 \x4E\xF8 |0 \x6A\x7C |0 \x4E\xFA |0 \x6A\x7D |0 \x6B\xB8 |0 \x6B\xB9 |0 \x50\x99 |0 \x50\x9B |0 \x50\x9D |0 \x50\x9A |0 \x50\x9E |0 \x50\x9C |0 \x52\x8B |0 \x52\x88 |0 \x52\x8A |0 \x52\x8C |0 \x52\x89 |0 \x6F\xE8 |0 \x6D\x9A |0 \x6F\xEA |0 \x6F\xE9 |0 \x54\xA7 |0 \x54\xA3 |0 \x54\xA4 |0 \x54\xA6 |0 \x54\xA8 |0 \x54\xA5 |0 \x54\xAA |0 \x54\xA9 |0 \x56\xED |0 \x72\xF5 |0 \x72\xF4 |0 \x56\xEC |0 \x56\xEB |0 \x56\xEA |0 \x56\xEE |0 \x56\xE9 |0 \x76\x5B |0 \x76\x58 |0 \x59\x8F |0 \x76\x57 |0 \x76\x5C |0 \x59\x91 |0 \x76\x5A |0 \x59\x8E |0 \x59\x90 |0 \x76\x59 |0 \x79\xCE |0 \x79\xCF |0 \x79\xD0 |0 \x5E\x6E |0 \x5E\x76 |0 \x7D\x88 |0 \x5E\x70 |0 \x5E\x74 |0 \x7D\x89 |0 \x5E\x75 |0 \x5E\x71 |0 \x5E\x72 |0 \x5E\x6F |0 \x5E\x73 |0 \x60\x6F |0 \x76\x56 |0 \x60\x70 |0 \x60\x6E |0 \x60\x6D |0 \x83\xE7 |0 \x62\x71 |0 \x86\xE3 |0 \x86\xE4 |0 \x66\x50 |0 \x66\xE9 |0 \x48\x68 |3 \x4C\x70 |0 \x4D\xF8 |0 \x52\x8D |0 \x6F\xEB |0 \x54\xAB |0 \x56\xF1 |0 \x56\xF0 |0 \x56\xEF |0 \x59\x92 |0 \x59\x93 |0 \x76\x5D |0 \x5E\x77 |0 \x62\x72 |0 \x48\x69 |3 \x4C\x71 |0 \x69\x5D |0 \x4C\xB6 |0 \x69\x75 |0 \x69\xB4 |0 \x4D\xF9 |0 \x50\x9F |0 \x79\xD1 |0 \x48\x6A |3 \x4C\x72 |0 \x4C\xB7 |0 \x69\xB5 |0 \x6A\x7E |0 \x6A\x7F |0 \x4E\xFB |0 \x76\x5E |0 \x59\x94 |0 \x79\xD2 |0 \x63\xD2 |0 \x48\x6B |3 \x4C\x73 |0 \x4C\x88 |0 \x4C\xB8 |0 \x69\x76 |0 \x4D\x67 |0 \x4F\x42 |0 \x4F\x41 |0 \x4E\xFC |0 \x4E\xFD |0 \x6B\xBA |0 \x50\xA1 |0 \x50\xA2 |0 \x6B\xBB |0 \x50\xA0 |0 \x52\x91 |0 \x6D\x9B |0 \x52\x90 |0 \x52\x8E |0 \x52\x8F |0 \x54\xAE |0 \x54\xAC |0 \x6F\xED |0 \x54\xAD |0 \x6F\xEC |0 \x54\xA2 |0 \x72\xF6 |0 \x56\xF3 |0 \x56\xF4 |0 \x56\xF2 |0 \x5E\x78 |0 \x7D\x8A |0 \x60\x71 |0 \x60\x72 |0 \x80\xAB |0 \x63\xD3 |0 \x89\x6F |0 \x89\x70 |0 \x67\x89 |0 \x90\xB7 |0 \x48\x6C |3 \x69\x4C |0 \x4C\xB9 |0 \x48\x6D |3 \x4C\x74 |0 \x69\x78 |0 \x69\x77 |0 \x4D\xFA |0 \x69\xB7 |0 \x69\xB8 |0 \x69\xB6 |0 \x69\xB9 |0 \x6A\x88 |0 \x6A\x83 |0 \x6A\x85 |0 \x6A\x87 |0 \x6A\x84 |0 \x4F\x46 |0 \x6A\x81 |0 \x6A\x82 |0 \x4F\x43 |0 \x4F\x44 |0 \x6A\x86 |0 \x6A\x89 |0 \x4F\x45 |0 \x6A\x8A |0 \x6B\xC9 |0 \x6B\xC3 |0 \x6B\xBE |0 \x50\xA4 |0 \x6B\xC6 |0 \x6B\xC4 |0 \x6B\xBD |0 \x6B\xCA |0 \x6B\xCD |0 \x6B\xC8 |0 \x6B\xC1 |0 \x50\xA6 |0 \x6B\xC7 |0 \x50\xA7 |0 \x6B\xC2 |0 \x6B\xC5 |0 \x6B\xBC |0 \x6B\xC0 |0 \x6B\xCC |0 \x50\xA8 |0 \x50\xA9 |0 \x6B\xBF |0 \x6B\xCB |0 \x50\xA3 |0 \x50\xA5 |0 \x6D\xAC |0 \x6D\xA5 |0 \x6D\xAB |0 \x6D\xA4 |0 \x6D\xA6 |0 \x6D\xA0 |0 \x6D\x9E |0 \x6D\xAD |0 \x6D\xAA |0 \x6D\x9C |0 \x52\x93 |0 \x6D\xA8 |0 \x6D\xA9 |0 \x6D\xA7 |0 \x6D\x9F |0 \x6D\x9D |0 \x52\x92 |0 \x6D\xA3 |0 \x6D\xA1 |0 \x6D\xA2 |0 \x6D\xAE |0 \x54\xB3 |0 \x54\xB2 |0 \x6F\xEE |0 \x54\xAF |0 \x6F\xF0 |0 \x54\xB4 |0 \x6F\xF1 |0 \x54\xB7 |0 \x54\xB5 |0 \x6F\xF2 |0 \x6D\xAF |0 \x6F\xF4 |0 \x54\xB1 |0 \x54\xB0 |0 \x6F\xEF |0 \x6F\xF3 |0 \x54\xB6 |0 \x56\xF6 |0 \x56\xF5 |0 \x72\xF8 |0 \x72\xFC |0 \x73\x41 |0 \x56\xF7 |0 \x73\x44 |0 \x56\xFB |0 \x73\x46 |0 \x56\xFD |0 \x56\xF9 |0 \x57\x44 |0 \x57\x41 |0 \x72\xFA |0 \x56\xF8 |0 \x72\xF9 |0 \x72\xF7 |0 \x73\x48 |0 \x72\xFB |0 \x56\xFA |0 \x73\x47 |0 \x57\x42 |0 \x73\x43 |0 \x73\x42 |0 \x57\x43 |0 \x72\xFD |0 \x56\xFC |0 \x73\x49 |0 \x73\x45 |0 \x76\x6D |0 \x76\x74 |0 \x76\x69 |0 \x59\x97 |0 \x76\x65 |0 \x76\x75 |0 \x76\x5F |0 \x76\x72 |0 \x76\x70 |0 \x76\x6A |0 \x76\x73 |0 \x76\x6C |0 \x76\x64 |0 \x76\x76 |0 \x76\x62 |0 \x76\x6F |0 \x76\x60 |0 \x76\x77 |0 \x59\x98 |0 \x76\x71 |0 \x79\xD5 |0 \x76\x63 |0 \x59\x95 |0 \x76\x67 |0 \x59\x96 |0 \x76\x66 |0 \x76\x6B |0 \x76\x68 |0 \x76\x6E |0 \x79\xD9 |0 \x79\xDC |0 \x79\xD4 |0 \x79\xD6 |0 \x79\xDB |0 \x79\xDA |0 \x5B\xE8 |0 \x76\x61 |0 \x79\xD8 |0 \x5B\xE9 |0 \x79\xD3 |0 \x79\xD7 |0 \x7D\x91 |0 \x7D\x98 |0 \x7D\x8F |0 \x7D\x96 |0 \x7D\x8D |0 \x7D\x95 |0 \x7D\x99 |0 \x7D\x8C |0 \x7D\x90 |0 \x7D\x8B |0 \x5E\x79 |0 \x7D\x8E |0 \x5E\x7A |0 \x7D\x94 |0 \x7D\x93 |0 \x7D\x92 |0 \x7D\x97 |0 \x80\xAF |0 \x80\xB1 |0 \x60\x74 |0 \x80\xB2 |0 \x80\xAD |0 \x80\xAC |0 \x80\xB6 |0 \x80\xB4 |0 \x60\x73 |0 \x80\xB7 |0 \x80\xAE |0 \x80\xB3 |0 \x80\xB5 |0 \x80\xB0 |0 \x83\xEB |0 \x83\xF0 |0 \x83\xEA |0 \x83\xEF |0 \x83\xE8 |0 \x83\xF2 |0 \x83\xEE |0 \x83\xF3 |0 \x83\xED |0 \x83\xE9 |0 \x83\xF1 |0 \x83\xF4 |0 \x83\xEC |0 \x86\xE5 |0 \x63\xD7 |0 \x63\xD5 |0 \x63\xD4 |0 \x63\xD6 |0 \x89\x71 |0 \x8A\xC0 |0 \x8B\x6C |0 \x8C\xF1 |0 \x8C\xF2 |0 \x66\xEA |0 \x8E\x78 |0 \x67\x8A |0 \x8E\x79 |0 \x8F\x6E |0 \x67\xDD |0 \x67\xDC |0 \x8F\x6D |0 \x68\x55 |0 \x90\x47 |0 \x48\x6E |0 \x4C\x75 |0 \x4D\xFB |0 \x69\xBA |0 \x6A\x8B |0 \x4F\xD5 |0 \x57\x45 |0 \x48\x6F |3 \x4C\x76 |0 \x4D\x6A |0 \x4D\x69 |0 \x4D\x68 |0 \x4F\x47 |0 \x54\xB8 |0 \x79\xDD |0 \x48\x70 |3 \x4C\x77 |0 \x4C\x78 |0 \x4C\x79 |0 \x4C\xBA |0 \x52\x94 |0 \x6D\xB0 |0 \x59\x99 |0 \x48\x71 |3 \x4C\x7A |0 \x69\x5E |0 \x4D\x6B |0 \x4D\x6C |0 \x69\x79 |0 \x4D\xFC |0 \x6A\x8C |0 \x4F\x48 |0 \x6A\x8D |0 \x50\xAF |0 \x6B\xCF |0 \x50\xAD |0 \x50\xAC |0 \x6B\xCE |0 \x50\xAA |0 \x6B\xD0 |0 \x50\xAB |0 \x50\xAE |0 \x52\x95 |0 \x52\x97 |0 \x6D\xB4 |0 \x6D\xB1 |0 \x6D\xB2 |0 \x6D\xB3 |0 \x6D\xB5 |0 \x52\x96 |0 \x6F\xF6 |0 \x6F\xF5 |0 \x54\xBA |0 \x54\xB9 |0 \x57\x48 |0 \x73\x4B |0 \x57\x47 |0 \x57\x49 |0 \x57\x46 |0 \x59\x9B |0 \x73\x4A |0 \x59\x9C |0 \x76\x79 |0 \x59\x9D |0 \x76\x78 |0 \x59\x9A |0 \x79\xE0 |0 \x79\xE2 |0 \x5B\xEA |0 \x79\xE1 |0 \x79\xDF |0 \x79\xDE |0 \x7D\x9C |0 \x5E\x7F |0 \x5E\x7D |0 \x5E\x7E |0 \x7D\x9A |0 \x7D\x9B |0 \x5E\x7B |0 \x80\xBB |0 \x80\xB9 |0 \x60\x76 |0 \x80\xBA |0 \x60\x77 |0 \x60\x75 |0 \x5E\x7C |0 \x83\xF7 |0 \x83\xF5 |0 \x83\xF6 |0 \x80\xB8 |0 \x86\xE7 |0 \x63\xD8 |0 \x86\xE6 |0 \x89\x72 |0 \x89\x73 |0 \x83\xF8 |0 \x8B\x6D |0 \x48\x72 |3 \x4C\x7B |0 \x4D\x6D |0 \x4E\x41 |0 \x69\xBB |0 \x4D\xFD |0 \x50\xB0 |0 \x5B\xEB |0 \x48\x73 |0 \x4C\xBB |0 \x4D\x6E |0 \x52\x98 |0 \x59\x9E |0 \x48\x74 |0 \x69\x7A |0 \x69\x7B |0 \x69\xBC |0 \x4F\x4A |0 \x6A\x91 |0 \x6A\x8F |0 \x4F\x4B |0 \x6A\x8E |0 \x6A\x90 |0 \x6A\x92 |0 \x4F\x49 |0 \x50\xB4 |0 \x50\xB5 |0 \x50\xB2 |0 \x50\xB1 |0 \x6D\xB9 |0 \x50\xB3 |0 \x52\x99 |0 \x6D\xB8 |0 \x6D\xBA |0 \x6D\xB7 |0 \x6D\xBB |0 \x52\x9A |0 \x54\xBD |0 \x6F\xF7 |0 \x6F\xF9 |0 \x54\xBB |0 \x6F\xFA |0 \x54\xBC |0 \x6F\xF8 |0 \x6D\xB6 |0 \x73\x4C |0 \x73\x4F |0 \x73\x50 |0 \x73\x4D |0 \x57\x4D |0 \x57\x4C |0 \x57\x4A |0 \x57\x4B |0 \x73\x4E |0 \x57\x4E |0 \x59\xA0 |0 \x59\xA1 |0 \x59\xA2 |0 \x79\xE3 |0 \x79\xE5 |0 \x79\xE7 |0 \x5B\xED |0 \x5B\xEC |0 \x59\x9F |0 \x79\xE6 |0 \x79\xE4 |0 \x7D\xA0 |0 \x7D\x9E |0 \x7D\xA4 |0 \x5E\x81 |0 \x7D\xA5 |0 \x7D\xA2 |0 \x5E\x82 |0 \x7D\x9F |0 \x7D\x9D |0 \x7D\xA3 |0 \x60\x79 |0 \x80\xBD |0 \x7D\xA1 |0 \x60\x7B |0 \x80\xBE |0 \x60\x7A |0 \x60\x7D |0 \x80\xBF |0 \x60\x78 |0 \x60\x7C |0 \x83\xFD |0 \x83\xFB |0 \x83\xFA |0 \x83\xFC |0 \x83\xF9 |0 \x66\x52 |0 \x8C\xF3 |0 \x8C\xF4 |0 \x8E\x7A |0 \x8F\x6F |0 \x68\xA1 |0 \x48\x75 |0 \x50\xB6 |0 \x4F\x4C |0 \x52\x9B |0 \x48\x76 |3 \x4C\x7C |0 \x4C\xBC |0 \x4D\x6F |0 \x69\xBD |0 \x4F\x4D |0 \x6A\x93 |0 \x6D\xBC |0 \x52\x9C |0 \x5E\x83 |0 \x48\x77 |3 \x4C\x7D |0 \x4E\x42 |0 \x5B\xEE |0 \x48\x78 |3 \x4C\x7E |0 \x4C\xBD |0 \x4C\xBE |0 \x4D\x71 |0 \x4D\x70 |0 \x69\xBE |0 \x4E\x43 |0 \x6A\x94 |0 \x4F\x4E |0 \x6B\xD2 |0 \x6B\xD3 |0 \x6B\xD4 |0 \x50\xB7 |0 \x50\xB8 |0 \x6B\xD1 |0 \x50\xB9 |0 \x52\x9D |0 \x6D\xBD |0 \x6F\xFC |0 \x54\xBE |0 \x6F\xFB |0 \x57\x4F |0 \x73\x51 |0 \x57\x50 |0 \x73\x52 |0 \x59\xA3 |0 \x79\xE8 |0 \x7D\xA7 |0 \x7D\xA6 |0 \x5E\x84 |0 \x60\x7E |0 \x80\xC0 |0 \x62\x73 |0 \x84\x41 |0 \x63\xD9 |0 \x67\xDE |0 \x90\x49 |0 \x48\x79 |0 \x6B\xD5 |0 \x6D\xBE |0 \x57\x51 |0 \x76\x7A |0 \x5B\xEF |0 \x65\x60 |1 \x65\x60 |0 \x48\x7A |0 \x4F\x50 |0 \x4F\x4F |0 \x52\x9E |0 \x6F\xFD |0 \x57\x53 |0 \x58\xA8 |0 \x57\x54 |0 \x57\x52 |0 \x59\xA4 |0 \x7D\xA8 |0 \x5E\x85 |0 \x60\x7F |0 \x48\x7B |3 \x69\x4D |0 \x69\xBF |0 \x6A\x96 |0 \x4F\x51 |0 \x6A\x95 |0 \x4F\x52 |0 \x50\xBD |0 \x6B\xD8 |0 \x6B\xD7 |0 \x50\xBC |0 \x50\xBA |0 \x50\xBB |0 \x6B\xD6 |0 \x52\xA0 |0 \x6D\xBF |0 \x52\xA3 |0 \x52\x9F |0 \x52\xA5 |0 \x52\xA1 |0 \x52\xA2 |0 \x52\xA4 |0 \x54\xC1 |0 \x54\xC0 |0 \x54\xBF |0 \x73\x54 |0 \x57\x55 |0 \x57\x58 |0 \x57\x56 |0 \x73\x53 |0 \x57\x5B |0 \x57\x57 |0 \x73\x55 |0 \x57\x5A |0 \x57\x59 |0 \x76\x7C |0 \x76\x7B |0 \x59\xA7 |0 \x59\xA5 |0 \x59\xA6 |0 \x76\x7D |0 \x5B\xF0 |0 \x79\xEA |0 \x5B\xF1 |0 \x79\xE9 |0 \x80\xC1 |0 \x60\x82 |0 \x7D\xA9 |0 \x60\x81 |0 \x5E\x86 |0 \x86\xE9 |0 \x84\x42 |0 \x63\xDA |0 \x86\xE8 |0 \x8B\x6E |0 \x8C\xF5 |0 \x8C\xF6 |0 \x48\x7C |3 \x4C\xBF |0 \x4D\x72 |0 \x69\x7C |0 \x4F\x54 |0 \x4F\x56 |0 \x69\xC2 |0 \x6A\x99 |0 \x6A\x98 |0 \x6A\x97 |0 \x69\xC1 |0 \x69\xC0 |0 \x4E\x45 |0 \x4F\x55 |0 \x4F\x53 |0 \x4E\x44 |0 \x50\xBE |0 \x6B\xD9 |0 \x50\xBF |0 \x6A\x9E |0 \x6A\xA0 |0 \x6A\x9F |0 \x6B\xDA |0 \x6A\x9B |0 \x4F\x5A |0 \x4F\x58 |0 \x6A\x9A |0 \x6A\x9C |0 \x6A\xA2 |0 \x4F\x57 |0 \x6A\x9D |0 \x6A\xA6 |0 \x50\xC1 |0 \x6A\xA3 |0 \x4F\x59 |0 \x6A\xA1 |0 \x6A\xA4 |0 \x50\xC0 |0 \x50\xC2 |0 \x6A\xA5 |0 \x6B\xEE |0 \x6B\xE1 |0 \x6B\xDF |0 \x6B\xED |0 \x6B\xE8 |0 \x52\xAA |0 \x50\xC3 |0 \x6B\xE9 |0 \x6B\xEC |0 \x52\xA6 |0 \x6B\xEB |0 \x50\xC4 |0 \x50\xC9 |0 \x50\xC7 |0 \x6B\xE2 |0 \x6B\xDD |0 \x6B\xE4 |0 \x50\xCE |0 \x6B\xEF |0 \x52\xA7 |0 \x6B\xE5 |0 \x52\xA8 |0 \x50\xCA |0 \x6B\xE7 |0 \x6D\xCE |0 \x52\xA9 |0 \x6B\xDC |0 \x50\xCB |0 \x52\xAB |0 \x50\xCC |0 \x50\xC8 |0 \x50\xCD |0 \x6B\xE6 |0 \x6B\xDB |0 \x6B\xEA |0 \x50\xC5 |0 \x6B\xDE |0 \x6B\xE3 |0 \x6B\xE0 |0 \x50\xC6 |0 \x6D\xC0 |0 \x6D\xC1 |0 \x6D\xCB |0 \x70\x44 |0 \x6D\xCC |0 \x52\xB1 |0 \x6D\xCF |0 \x6D\xC5 |0 \x52\xB0 |0 \x6D\xC7 |0 \x6D\xC8 |0 \x6D\xCA |0 \x52\xAC |0 \x54\xC5 |0 \x6D\xC6 |0 \x6D\xC2 |0 \x54\xC6 |0 \x6D\xD0 |0 \x54\xC2 |0 \x70\x42 |0 \x6D\xC9 |0 \x70\x41 |0 \x6D\xC4 |0 \x6D\xCD |0 \x52\xAF |0 \x54\xC3 |0 \x52\xB5 |0 \x54\xC4 |0 \x6D\xD1 |0 \x70\x43 |0 \x52\xAE |0 \x54\xC8 |0 \x52\xB4 |0 \x52\xB3 |0 \x52\xB2 |0 \x54\xC7 |0 \x6D\xD2 |0 \x54\xC9 |0 \x52\xAD |0 \x6D\xC3 |0 \x57\x5C |0 \x70\x47 |0 \x70\x49 |0 \x70\x4B |0 \x54\xCA |0 \x54\xD0 |0 \x73\x58 |0 \x70\x4F |0 \x70\x46 |0 \x57\x5E |0 \x73\x56 |0 \x54\xCF |0 \x54\xCD |0 \x70\x51 |0 \x73\x57 |0 \x70\x48 |0 \x54\xCE |0 \x70\x4C |0 \x54\xD1 |0 \x70\x4E |0 \x54\xCC |0 \x70\x4D |0 \x70\x50 |0 \x70\x4A |0 \x54\xCB |0 \x57\x5F |0 \x70\x45 |0 \x57\x5D |0 \x57\x60 |0 \x73\x5A |0 \x73\x63 |0 \x59\xAA |0 \x57\x62 |0 \x57\x67 |0 \x59\xAB |0 \x73\x65 |0 \x57\x6E |0 \x76\x7F |0 \x73\x5B |0 \x57\x66 |0 \x57\x69 |0 \x57\x64 |0 \x73\x59 |0 \x73\x67 |0 \x73\x6A |0 \x76\x8F |0 \x73\x68 |0 \x76\x84 |0 \x57\x65 |0 \x57\x6C |0 \x57\x70 |0 \x73\x62 |0 \x76\x7E |0 \x73\x66 |0 \x57\x61 |0 \x76\x81 |0 \x73\x69 |0 \x76\x83 |0 \x73\x5E |0 \x59\xA8 |0 \x73\x5C |0 \x73\x5D |0 \x57\x6B |0 \x57\x6A |0 \x73\x60 |0 \x57\x6F |0 \x73\x64 |0 \x57\x68 |0 \x73\x61 |0 \x57\x6D |0 \x59\xAC |0 \x59\xA9 |0 \x76\x82 |0 \x73\x5F |0 \x57\x63 |0 \x59\xB1 |0 \x59\xB5 |0 \x76\x86 |0 \x5B\xF6 |0 \x59\xB3 |0 \x76\x8A |0 \x59\xB7 |0 \x79\xEB |0 \x76\x8C |0 \x5B\xF8 |0 \x59\xAF |0 \x59\xB2 |0 \x76\x8D |0 \x76\x8E |0 \x76\x94 |0 \x59\xB9 |0 \x5B\xF9 |0 \x76\x90 |0 \x76\x95 |0 \x76\x89 |0 \x5C\x46 |0 \x5B\xFA |0 \x59\xB8 |0 \x76\x87 |0 \x76\x96 |0 \x5C\x45 |0 \x59\xB6 |0 \x5B\xF3 |0 \x76\x93 |0 \x59\xBA |0 \x76\x8B |0 \x76\x85 |0 \x59\xB0 |0 \x76\x88 |0 \x76\x91 |0 \x5B\xF2 |0 \x5B\xF7 |0 \x59\xAD |0 \x76\x92 |0 \x5B\xF5 |0 \x59\xAE |0 \x5C\x44 |0 \x7D\xAB |0 \x79\xF6 |0 \x79\xEE |0 \x7D\xAA |0 \x79\xF2 |0 \x79\xF4 |0 \x79\xF1 |0 \x5C\x43 |0 \x79\xF0 |0 \x5C\x47 |0 \x7D\xBA |0 \x5C\x42 |0 \x5E\x88 |0 \x79\xF7 |0 \x7D\xAC |0 \x5B\xFD |0 \x79\xEF |0 \x79\xF3 |0 \x5E\x87 |0 \x5B\xF4 |0 \x79\xEC |0 \x79\xED |0 \x5E\x89 |0 \x5B\xFC |0 \x5C\x41 |0 \x5B\xFB |0 \x79\xF5 |0 \x7D\xB0 |0 \x7D\xB1 |0 \x7D\xB6 |0 \x60\x87 |0 \x7D\xBD |0 \x5E\x8F |0 \x5E\x8E |0 \x7D\xB8 |0 \x60\x86 |0 \x7D\xAD |0 \x5E\x8D |0 \x7D\xBC |0 \x5E\x8B |0 \x5E\x8C |0 \x7D\xB9 |0 \x80\xD2 |0 \x60\x84 |0 \x59\xB4 |0 \x7D\xBB |0 \x60\x8B |0 \x7D\xB3 |0 \x60\x85 |0 \x60\x8A |0 \x7D\xAE |0 \x7D\xB2 |0 \x7D\xAF |0 \x7D\xB5 |0 \x5E\x90 |0 \x60\x83 |0 \x5E\x8A |0 \x80\xC4 |0 \x7D\xB7 |0 \x60\x89 |0 \x60\x8C |0 \x7D\xB4 |0 \x60\x88 |0 \x80\xC3 |0 \x80\xC8 |0 \x62\x77 |0 \x80\xC2 |0 \x84\x4E |0 \x80\xD1 |0 \x60\x90 |0 \x60\x8E |0 \x62\x75 |0 \x80\xCE |0 \x80\xCA |0 \x60\x94 |0 \x84\x45 |0 \x60\x92 |0 \x80\xC9 |0 \x84\x43 |0 \x80\xCD |0 \x80\xD0 |0 \x80\xC7 |0 \x60\x93 |0 \x60\x8D |0 \x84\x44 |0 \x62\x76 |0 \x80\xCF |0 \x60\x8F |0 \x60\x91 |0 \x80\xCC |0 \x60\x95 |0 \x80\xCB |0 \x80\xC6 |0 \x80\xC5 |0 \x62\x74 |0 \x80\xD3 |0 \x84\x47 |0 \x86\xEB |0 \x62\x79 |0 \x84\x4D |0 \x84\x4B |0 \x86\xEC |0 \x62\x7A |0 \x84\x4C |0 \x84\x49 |0 \x63\xDC |0 \x86\xEA |0 \x84\x46 |0 \x84\x48 |0 \x63\xDD |0 \x62\x7C |0 \x63\xDB |0 \x62\x7B |0 \x63\xDF |0 \x84\x4A |0 \x62\x78 |0 \x89\x7C |0 \x89\x74 |0 \x86\xF2 |0 \x89\x75 |0 \x86\xEE |0 \x65\x61 |0 \x86\xF0 |0 \x86\xEF |0 \x63\xDE |0 \x86\xED |0 \x86\xF1 |0 \x89\x7D |0 \x89\x79 |0 \x89\x7B |0 \x89\x76 |0 \x89\x77 |0 \x89\x7A |0 \x89\x78 |0 \x66\x53 |0 \x66\x56 |0 \x66\x55 |0 \x66\x54 |0 \x66\xEB |0 \x8C\xF7 |0 \x66\xEC |0 \x8B\x6F |0 \x67\x8B |0 \x8E\x7B |0 \x67\x8C |0 \x67\xDF |0 \x68\x56 |0 \x90\x4A |0 \x90\x4B |0 \x90\x4C |0 \x91\xAA |0 \x48\x7D |3 \x4C\xC0 |0 \x69\x7D |0 \x4D\x73 |0 \x4E\x47 |0 \x4E\x48 |0 \x4E\x46 |0 \x4E\x49 |0 \x4F\x5C |0 \x4F\x5B |0 \x6B\xF0 |0 \x50\xD0 |0 \x50\xCF |0 \x70\x52 |0 \x57\x71 |0 \x57\x72 |0 \x59\xBB |0 \x79\xF8 |0 \x5C\x48 |0 \x5C\x49 |0 \x79\xFA |0 \x79\xFC |0 \x79\xFB |0 \x7D\xBF |0 \x7D\xBE |0 \x5E\x91 |0 \x7D\xC0 |0 \x80\xD4 |0 \x60\x96 |0 \x62\x7D |0 \x63\xE0 |0 \x65\x62 |0 \x63\xE1 |0 \x48\x7E |3 \x4C\xC1 |0 \x6A\xA7 |0 \x6B\xF1 |0 \x50\xD2 |0 \x50\xD1 |0 \x50\xD3 |0 \x52\xB6 |0 \x6D\xD3 |0 \x6D\xD4 |0 \x70\x53 |0 \x54\xD2 |0 \x57\x73 |0 \x59\xBC |0 \x76\x97 |0 \x48\x7F |3 \x4C\xC2 |0 \x4C\x7F |0 \x4C\xC3 |0 \x69\x7E |0 \x4D\x77 |0 \x4D\x76 |0 \x4D\x74 |0 \x4D\x75 |0 \x4E\x4C |0 \x69\xCA |0 \x69\xCC |0 \x4E\x4B |0 \x69\xC4 |0 \x69\xC5 |0 \x69\xCB |0 \x69\xC7 |0 \x69\xC9 |0 \x4E\x4A |0 \x69\xC6 |0 \x69\xC3 |0 \x69\xC8 |0 \x4F\x63 |0 \x4F\x6C |0 \x4F\x6A |0 \x6A\xB1 |0 \x6A\xAE |0 \x6A\xB6 |0 \x4F\x68 |0 \x6A\xB7 |0 \x4F\x61 |0 \x6A\xB4 |0 \x4F\x67 |0 \x6A\xB0 |0 \x6A\xAF |0 \x4F\x65 |0 \x6A\xB5 |0 \x4F\x66 |0 \x50\xD4 |0 \x4F\x60 |0 \x6A\xB2 |0 \x6A\xA8 |0 \x4F\x5D |0 \x4F\x70 |0 \x6A\xAD |0 \x6A\xB3 |0 \x4F\x62 |0 \x4F\x64 |0 \x6A\xA9 |0 \x6A\xAA |0 \x6A\xAB |0 \x4F\x6F |0 \x4F\x69 |0 \x4F\x6E |0 \x6A\xAC |0 \x4F\x6D |0 \x4F\x5F |0 \x4F\x5E |0 \x4F\x6B |0 \x50\xE2 |0 \x6B\xFD |0 \x6B\xF6 |0 \x50\xDD |0 \x50\xF0 |0 \x6B\xF2 |0 \x6B\xF9 |0 \x6B\xFB |0 \x6C\x41 |0 \x50\xEB |0 \x6B\xFA |0 \x6B\xF3 |0 \x50\xE9 |0 \x6B\xF7 |0 \x6C\x42 |0 \x50\xDA |0 \x6B\xFC |0 \x50\xE4 |0 \x50\xE3 |0 \x6B\xF5 |0 \x50\xD8 |0 \x50\xD9 |0 \x50\xD7 |0 \x50\xEF |0 \x50\xE7 |0 \x50\xE1 |0 \x50\xD5 |0 \x6B\xF8 |0 \x50\xE0 |0 \x50\xD6 |0 \x50\xE8 |0 \x50\xF1 |0 \x6D\xD5 |0 \x50\xE5 |0 \x6B\xF4 |0 \x50\xDB |0 \x50\xDE |0 \x50\xDF |0 \x50\xED |0 \x50\xEE |0 \x50\xEC |0 \x50\xE6 |0 \x50\xEA |0 \x50\xDC |0 \x52\xB7 |0 \x6D\xDB |0 \x52\xC3 |0 \x52\xBB |0 \x52\xBD |0 \x52\xC2 |0 \x6D\xE7 |0 \x52\xC0 |0 \x70\x54 |0 \x54\xD3 |0 \x52\xC5 |0 \x6D\xD8 |0 \x6D\xE0 |0 \x52\xC1 |0 \x6D\xDF |0 \x6D\xDC |0 \x6D\xE4 |0 \x6D\xE6 |0 \x52\xBA |0 \x52\xBE |0 \x52\xC4 |0 \x54\xD5 |0 \x6D\xE1 |0 \x52\xBC |0 \x52\xC7 |0 \x6D\xDA |0 \x52\xBF |0 \x54\xD4 |0 \x52\xB9 |0 \x6D\xD7 |0 \x6D\xDE |0 \x6D\xD6 |0 \x6D\xD9 |0 \x6D\xDD |0 \x70\x55 |0 \x52\xC6 |0 \x6D\xE2 |0 \x6D\xE3 |0 \x6D\xE5 |0 \x52\xB8 |0 \x54\xE3 |0 \x70\x61 |0 \x54\xE1 |0 \x54\xE2 |0 \x70\x57 |0 \x70\x67 |0 \x54\xD8 |0 \x73\x6B |0 \x70\x69 |0 \x70\x63 |0 \x70\x5A |0 \x70\x6C |0 \x70\x5D |0 \x54\xDE |0 \x73\x83 |0 \x70\x60 |0 \x54\xE0 |0 \x54\xD7 |0 \x70\x6E |0 \x70\x62 |0 \x54\xDA |0 \x70\x5B |0 \x70\x58 |0 \x70\x59 |0 \x54\xDB |0 \x70\x68 |0 \x70\x6F |0 \x54\xDD |0 \x70\x5F |0 \x70\x5E |0 \x54\xE5 |0 \x54\xE4 |0 \x54\xD6 |0 \x54\xDC |0 \x54\xDF |0 \x70\x6B |0 \x70\x65 |0 \x54\xD9 |0 \x70\x56 |0 \x70\x6D |0 \x70\x64 |0 \x70\x66 |0 \x70\x6A |0 \x73\x6C |0 \x57\x7B |0 \x57\x90 |0 \x57\x8F |0 \x57\x84 |0 \x73\x7E |0 \x73\x7A |0 \x73\x77 |0 \x73\x8A |0 \x57\x7E |0 \x57\x76 |0 \x73\x7C |0 \x59\xCC |0 \x57\x7A |0 \x73\x85 |0 \x57\x91 |0 \x57\x8E |0 \x73\x81 |0 \x73\x6F |0 \x57\x8D |0 \x73\x87 |0 \x73\x6E |0 \x57\x82 |0 \x57\x86 |0 \x73\x86 |0 \x73\x78 |0 \x57\x87 |0 \x57\x81 |0 \x73\x6D |0 \x59\xBE |0 \x73\x89 |0 \x73\x76 |0 \x57\x8C |0 \x73\x79 |0 \x73\x88 |0 \x57\x8B |0 \x76\x98 |0 \x57\x77 |0 \x73\x74 |0 \x57\x7C |0 \x57\x88 |0 \x57\x83 |0 \x73\x7D |0 \x73\x73 |0 \x73\x71 |0 \x73\x84 |0 \x57\x74 |0 \x57\x89 |0 \x57\x78 |0 \x59\xBD |0 \x73\x82 |0 \x57\x79 |0 \x57\x75 |0 \x57\x85 |0 \x57\x7F |0 \x57\x7D |0 \x73\x75 |0 \x57\x8A |0 \x73\x72 |0 \x73\x7F |0 \x73\x7B |0 \x76\x9A |0 \x76\x99 |0 \x73\x70 |0 \x76\xAA |0 \x59\xC0 |0 \x76\xB0 |0 \x76\x9F |0 \x76\xAD |0 \x79\xFD |0 \x59\xC3 |0 \x76\xB1 |0 \x76\xB4 |0 \x59\xC2 |0 \x76\xA2 |0 \x76\xB3 |0 \x76\xB2 |0 \x59\xC4 |0 \x76\x9B |0 \x59\xBF |0 \x59\xC7 |0 \x59\xC5 |0 \x76\xAF |0 \x76\xA5 |0 \x59\xC9 |0 \x76\xB6 |0 \x76\xAE |0 \x76\xB7 |0 \x59\xD1 |0 \x59\xCF |0 \x76\xAC |0 \x76\xAB |0 \x76\xA9 |0 \x76\xA3 |0 \x59\xC8 |0 \x59\xC6 |0 \x70\x5C |0 \x76\x9C |0 \x7A\x5E |0 \x76\x9D |0 \x59\xC1 |0 \x59\xCE |0 \x7A\x42 |0 \x59\xCA |0 \x59\xCB |0 \x76\x9E |0 \x76\xB5 |0 \x7A\x41 |0 \x76\xA6 |0 \x76\xA1 |0 \x59\xCD |0 \x76\xA7 |0 \x76\xA4 |0 \x59\xD2 |0 \x5C\x58 |0 \x7A\x45 |0 \x7A\x58 |0 \x7A\x5D |0 \x7A\x51 |0 \x5C\x54 |0 \x7A\x62 |0 \x5C\x51 |0 \x7A\x43 |0 \x7A\x44 |0 \x5C\x4A |0 \x5C\x53 |0 \x7A\x4B |0 \x5C\x56 |0 \x5C\x57 |0 \x7A\x4C |0 \x7A\x59 |0 \x7A\x5F |0 \x5C\x52 |0 \x5C\x4C |0 \x7A\x4A |0 \x7A\x46 |0 \x7A\x61 |0 \x7A\x4F |0 \x7A\x50 |0 \x7A\x47 |0 \x7A\x5B |0 \x7A\x52 |0 \x7A\x5C |0 \x7A\x54 |0 \x5C\x4D |0 \x7D\xC1 |0 \x5C\x50 |0 \x5C\x4E |0 \x7A\x60 |0 \x7A\x57 |0 \x7A\x53 |0 \x7A\x48 |0 \x5E\x9B |0 \x7A\x56 |0 \x5C\x55 |0 \x7A\x4E |0 \x7A\x4D |0 \x5C\x4F |0 \x5C\x4B |0 \x7D\xD6 |0 \x7A\x5A |0 \x7A\x55 |0 \x7A\x49 |0 \x7D\xD1 |0 \x7D\xC2 |0 \x7D\xCD |0 \x7D\xD4 |0 \x5E\x99 |0 \x59\xD0 |0 \x7D\xD2 |0 \x5E\x94 |0 \x5E\x93 |0 \x7D\xD9 |0 \x7D\xC3 |0 \x7D\xD0 |0 \x7D\xC4 |0 \x7D\xCF |0 \x5E\x97 |0 \x7D\xD3 |0 \x76\xA8 |0 \x7D\xDA |0 \x7D\xCB |0 \x5E\x9A |0 \x80\xE2 |0 \x60\x97 |0 \x7D\xD8 |0 \x7D\xD7 |0 \x5E\x9C |0 \x80\xD5 |0 \x60\x98 |0 \x80\xD6 |0 \x7D\xC7 |0 \x7D\xC8 |0 \x7D\xC5 |0 \x7D\xCA |0 \x7D\xC6 |0 \x7D\xDB |0 \x5E\x96 |0 \x60\x99 |0 \x5E\x98 |0 \x5E\x9D |0 \x7D\xC9 |0 \x7D\xD5 |0 \x7D\xCE |0 \x80\xD9 |0 \x5E\x92 |0 \x60\x9C |0 \x84\x55 |0 \x80\xDE |0 \x80\xDD |0 \x80\xDF |0 \x80\xDC |0 \x60\x9D |0 \x68\xCB |0 \x60\xA3 |0 \x60\xA0 |0 \x60\xA1 |0 \x80\xD7 |0 \x80\xDA |0 \x80\xE4 |0 \x60\xA9 |0 \x60\xA7 |0 \x80\xDB |0 \x76\xA0 |0 \x60\x9A |0 \x80\xE1 |0 \x80\xD8 |0 \x60\xAA |0 \x80\xE0 |0 \x5E\x95 |0 \x60\x9F |0 \x7D\xCC |0 \x60\xA2 |0 \x60\xA6 |0 \x60\xA8 |0 \x60\xA5 |0 \x60\xA4 |0 \x60\x9E |0 \x80\xE3 |0 \x60\x9B |0 \x60\xAB |0 \x62\x82 |0 \x62\x83 |0 \x84\x54 |0 \x62\x8C |0 \x62\x89 |0 \x62\x7F |0 \x62\x87 |0 \x84\x56 |0 \x62\x85 |0 \x62\x7E |0 \x62\x86 |0 \x84\x53 |0 \x63\xE3 |0 \x62\x81 |0 \x62\x88 |0 \x63\xE2 |0 \x84\x52 |0 \x84\x51 |0 \x62\x8A |0 \x62\x8B |0 \x84\x50 |0 \x84\x4F |0 \x63\xE4 |0 \x84\x59 |0 \x62\x84 |0 \x84\x57 |0 \x63\xE5 |0 \x63\xEA |0 \x86\xF5 |0 \x86\xF7 |0 \x63\xE7 |0 \x86\xF8 |0 \x86\xF4 |0 \x86\xF6 |0 \x63\xE8 |0 \x63\xEB |0 \x86\xF3 |0 \x63\xE6 |0 \x63\xE9 |0 \x65\x64 |0 \x84\x58 |0 \x65\x63 |0 \x65\x69 |0 \x89\x82 |0 \x65\x67 |0 \x65\x68 |0 \x89\x85 |0 \x89\x81 |0 \x65\x65 |0 \x89\x7E |0 \x66\x57 |0 \x89\x83 |0 \x89\x84 |0 \x89\x7F |0 \x65\x66 |0 \x8B\x70 |0 \x8B\x73 |0 \x8B\x74 |0 \x8B\x72 |0 \x8B\x75 |0 \x66\x58 |0 \x8B\x71 |0 \x8C\xFB |0 \x66\xEE |0 \x8C\xFA |0 \x8C\xF9 |0 \x8C\xF8 |0 \x66\xED |0 \x66\xEF |0 \x8E\x7C |0 \x67\x8E |0 \x67\x8D |0 \x8F\x71 |0 \x8F\x70 |0 \x8F\x73 |0 \x68\x57 |0 \x67\xE0 |0 \x90\x4E |0 \x8F\x72 |0 \x90\x4D |0 \x68\x59 |0 \x68\x58 |0 \x68\x7F |0 \x90\xB8 |0 \x91\x41 |0 \x48\x81 |3 \x4C\xC4 |0 \x76\xB8 |0 \x84\x5A |0 \x48\x82 |0 \x4E\x4D |0 \x6A\xB8 |0 \x4F\x73 |0 \x4F\x71 |0 \x4F\x72 |0 \x6C\x43 |0 \x50\xF2 |0 \x52\xC8 |0 \x6D\xE8 |0 \x6D\xE9 |0 \x52\xC9 |0 \x70\x71 |0 \x54\xE6 |0 \x54\xE7 |0 \x70\x70 |0 \x57\x98 |0 \x57\x94 |0 \x73\x8B |0 \x57\x9B |0 \x57\x9A |0 \x57\x93 |0 \x57\x96 |0 \x57\x99 |0 \x57\x95 |0 \x76\xBC |0 \x57\x92 |0 \x59\xD3 |0 \x59\xD5 |0 \x59\xD6 |0 \x76\xBB |0 \x76\xBE |0 \x59\xD4 |0 \x76\xB9 |0 \x76\xBD |0 \x76\xBA |0 \x5C\x59 |0 \x7A\x63 |0 \x5E\x9E |0 \x7D\xDC |0 \x62\x8D |0 \x60\xAC |0 \x80\xE5 |0 \x60\xAD |0 \x60\xAE |0 \x80\xE7 |0 \x80\xE6 |0 \x80\xE8 |0 \x84\x5C |0 \x84\x5B |0 \x86\xFA |0 \x86\xF9 |0 \x63\xEC |0 \x63\xED |0 \x8B\x76 |0 \x48\x83 |3 \x4C\xC5 |0 \x76\xBF |0 \x59\xD8 |0 \x59\xD7 |0 \x7A\x64 |0 \x89\x86 |0 \x67\x8F |0 \x90\x4F |0 \x48\x84 |3 \x4C\xC6 |0 \x54\xE8 |0 \x57\x9D |0 \x57\x9C |0 \x76\xC0 |0 \x76\xC1 |0 \x5C\x5A |0 \x7D\xDD |0 \x5E\x9F |0 \x84\x5D |0 \x48\x85 |3 \x4C\xC7 |0 \x4D\x78 |0 \x50\xF3 |0 \x6C\x44 |0 \x6D\xEA |0 \x52\xCA |0 \x57\x9E |0 \x76\xC2 |0 \x59\xD9 |0 \x5C\x5B |0 \x80\xE9 |0 \x80\xEA |0 \x86\xFB |0 \x65\x6A |0 \x91\x42 |0 \x48\x86 |3 \x4C\xC8 |0 \x6C\x45 |0 \x50\xF4 |0 \x52\xCB |0 \x6D\xEB |0 \x54\xE9 |0 \x70\x75 |0 \x70\x73 |0 \x70\x74 |0 \x54\xEA |0 \x70\x72 |0 \x57\xA0 |0 \x57\xA1 |0 \x73\x8C |0 \x57\xA2 |0 \x57\x9F |0 \x76\xC3 |0 \x76\xC4 |0 \x7A\x65 |0 \x5E\xA1 |0 \x5E\xA0 |0 \x86\xFC |0 \x89\x87 |0 \x8B\x78 |0 \x8B\x77 |0 \x8C\xFC |0 \x48\x87 |0 \x69\x5F |0 \x52\xCC |0 \x48\x88 |3 \x4C\xC9 |0 \x4D\x79 |0 \x4E\x4F |0 \x4E\x4E |0 \x4E\x50 |0 \x4E\x51 |0 \x69\xCE |0 \x69\xCD |0 \x6A\xB9 |0 \x4F\x74 |0 \x6A\xBC |0 \x6A\xBB |0 \x6A\xBA |0 \x6A\xBD |0 \x50\xF5 |0 \x6C\x4B |0 \x6C\x47 |0 \x6C\x50 |0 \x50\xFC |0 \x50\xFA |0 \x6C\x4C |0 \x6C\x48 |0 \x6C\x4F |0 \x50\xF9 |0 \x51\x43 |0 \x6C\x4A |0 \x6C\x46 |0 \x51\x42 |0 \x6C\x4D |0 \x50\xF8 |0 \x6C\x4E |0 \x50\xFB |0 \x50\xFD |0 \x6C\x52 |0 \x6C\x51 |0 \x6C\x49 |0 \x50\xF7 |0 \x50\xF6 |0 \x51\x41 |0 \x6D\xF0 |0 \x6D\xF6 |0 \x52\xD2 |0 \x52\xCF |0 \x6D\xED |0 \x6D\xF2 |0 \x52\xD5 |0 \x52\xCD |0 \x6D\xF1 |0 \x52\xD0 |0 \x52\xD3 |0 \x6D\xF4 |0 \x52\xCE |0 \x6D\xF9 |0 \x52\xD1 |0 \x52\xD4 |0 \x6D\xEE |0 \x6D\xF3 |0 \x6D\xF7 |0 \x6D\xEF |0 \x6D\xEC |0 \x6D\xF8 |0 \x6D\xF5 |0 \x54\xF2 |0 \x54\xEB |0 \x54\xEE |0 \x54\xF1 |0 \x70\x78 |0 \x54\xEC |0 \x70\x76 |0 \x54\xF0 |0 \x54\xED |0 \x70\x79 |0 \x54\xEF |0 \x73\x90 |0 \x57\xA4 |0 \x73\x8F |0 \x73\x91 |0 \x57\xA3 |0 \x57\xA8 |0 \x70\x77 |0 \x73\x8E |0 \x73\x92 |0 \x57\xA5 |0 \x73\x8D |0 \x57\xA7 |0 \x57\xA6 |0 \x76\xCB |0 \x76\xC6 |0 \x59\xDA |0 \x59\xDE |0 \x59\xDB |0 \x76\xC9 |0 \x76\xCC |0 \x59\xDC |0 \x59\xDD |0 \x59\xE2 |0 \x7A\x6E |0 \x76\xCA |0 \x59\xE0 |0 \x76\xC7 |0 \x76\xC5 |0 \x59\xE1 |0 \x76\xC8 |0 \x5C\x61 |0 \x7A\x66 |0 \x5C\x5E |0 \x5C\x5F |0 \x5C\x5D |0 \x7A\x6B |0 \x7A\x6A |0 \x7A\x67 |0 \x5C\x63 |0 \x7A\x69 |0 \x59\xDF |0 \x7A\x6D |0 \x7A\x68 |0 \x5C\x60 |0 \x5C\x5C |0 \x5C\x62 |0 \x7A\x6C |0 \x5E\xA4 |0 \x7D\xE0 |0 \x7D\xDF |0 \x7D\xDE |0 \x5E\xA2 |0 \x5E\xA3 |0 \x80\xED |0 \x80\xF0 |0 \x60\xB0 |0 \x60\xAF |0 \x80\xF1 |0 \x80\xEC |0 \x60\xB2 |0 \x80\xEE |0 \x60\xB1 |0 \x80\xEB |0 \x80\xEF |0 \x62\x93 |0 \x62\x90 |0 \x84\x66 |0 \x84\x65 |0 \x84\x64 |0 \x84\x5F |0 \x84\x60 |0 \x62\x91 |0 \x62\x8E |0 \x62\x92 |0 \x84\x5E |0 \x62\x8F |0 \x84\x61 |0 \x84\x62 |0 \x84\x67 |0 \x84\x63 |0 \x86\xFD |0 \x63\xEF |0 \x89\x8A |0 \x63\xEE |0 \x89\x88 |0 \x89\x89 |0 \x65\x6B |0 \x66\x5A |0 \x8B\x79 |0 \x66\x59 |0 \x8D\x41 |0 \x8D\x42 |0 \x66\xF0 |0 \x8C\xFD |0 \x67\x90 |0 \x90\x50 |0 \x68\x5A |0 \x90\xB9 |0 \x90\xBA |0 \x48\x89 |3 \x4C\xCA |0 \x4E\x52 |0 \x4E\x53 |0 \x4F\x75 |0 \x6C\x53 |0 \x52\xD6 |0 \x54\xF3 |0 \x57\xA9 |0 \x56\xB6 |0 \x59\xE3 |0 \x59\xE4 |0 \x59\x52 |0 \x76\xCD |0 \x5C\x64 |0 \x7D\xE2 |0 \x7D\xE1 |0 \x48\x8A |3 \x4C\xCB |0 \x4E\x54 |0 \x6C\x54 |0 \x51\x45 |0 \x51\x44 |0 \x6D\xFA |0 \x6D\xFB |0 \x70\x7A |0 \x70\x7B |0 \x54\xF4 |0 \x54\xF5 |0 \x54\xF6 |0 \x73\x93 |0 \x57\xAB |0 \x59\xE6 |0 \x59\xE5 |0 \x7A\x6F |0 \x7B\xC2 |0 \x7D\xE3 |0 \x84\x68 |0 \x65\x6C |0 \x66\xF1 |0 \x48\x8B |3 \x4C\xCC |0 \x4D\x7C |0 \x4D\x7D |0 \x4D\x7B |0 \x4D\x7E |0 \x4D\x7A |0 \x4E\x57 |0 \x69\xD6 |0 \x4E\x56 |0 \x4E\x58 |0 \x69\xD1 |0 \x69\xD0 |0 \x69\xD3 |0 \x69\xD2 |0 \x69\xD5 |0 \x4E\x55 |0 \x69\xCF |0 \x69\xD4 |0 \x6A\xBE |0 \x4F\x7F |0 \x6A\xBF |0 \x6A\xC3 |0 \x4F\x7E |0 \x6A\xC7 |0 \x6A\xC2 |0 \x6A\xC5 |0 \x4F\x77 |0 \x4F\x78 |0 \x4F\x79 |0 \x4F\x7A |0 \x4F\x82 |0 \x6A\xC1 |0 \x4F\x7C |0 \x4F\x83 |0 \x6A\xC0 |0 \x6A\xC6 |0 \x4F\x7B |0 \x6A\xC4 |0 \x4F\x7D |0 \x4F\x76 |0 \x4F\x81 |0 \x51\x5A |0 \x6C\x56 |0 \x51\x46 |0 \x51\x50 |0 \x51\x51 |0 \x51\x49 |0 \x51\x5B |0 \x51\x4B |0 \x6C\x5E |0 \x51\x56 |0 \x6C\x59 |0 \x51\x4C |0 \x6C\x68 |0 \x6C\x69 |0 \x6C\x61 |0 \x6C\x5A |0 \x51\x59 |0 \x6C\x66 |0 \x51\x54 |0 \x51\x52 |0 \x6C\x67 |0 \x6C\x65 |0 \x6C\x5D |0 \x6C\x55 |0 \x6C\x5C |0 \x51\x4D |0 \x51\x53 |0 \x51\x47 |0 \x6C\x60 |0 \x6C\x5F |0 \x6C\x57 |0 \x51\x55 |0 \x6C\x63 |0 \x6C\x58 |0 \x51\x58 |0 \x6C\x6A |0 \x51\x48 |0 \x51\x4F |0 \x6C\x5B |0 \x6C\x64 |0 \x51\x57 |0 \x51\x4A |0 \x51\x4E |0 \x6C\x62 |0 \x6E\x5E |0 \x52\xDE |0 \x52\xEB |0 \x6E\x59 |0 \x6E\x4F |0 \x52\xE4 |0 \x6E\x4D |0 \x52\xDD |0 \x6E\x48 |0 \x52\xE7 |0 \x6E\x55 |0 \x6E\x42 |0 \x6E\x44 |0 \x6E\x47 |0 \x6D\xFC |0 \x6E\x54 |0 \x6E\x64 |0 \x52\xE2 |0 \x6E\x49 |0 \x6E\x5B |0 \x6E\x41 |0 \x6E\x62 |0 \x6E\x63 |0 \x6E\x66 |0 \x6E\x5D |0 \x6E\x4E |0 \x6E\x56 |0 \x52\xE8 |0 \x52\xDB |0 \x52\xE3 |0 \x52\xEF |0 \x52\xD8 |0 \x52\xDA |0 \x6E\x46 |0 \x52\xEC |0 \x52\xE5 |0 \x6E\x60 |0 \x6E\x43 |0 \x52\xEE |0 \x52\xE9 |0 \x6E\x4C |0 \x52\xED |0 \x6E\x53 |0 \x6E\x4B |0 \x52\xE6 |0 \x6E\x5F |0 \x6E\x57 |0 \x52\xE0 |0 \x6E\x65 |0 \x6E\x4A |0 \x52\xDC |0 \x6E\x5C |0 \x6E\x52 |0 \x52\xE1 |0 \x6E\x58 |0 \x52\xD9 |0 \x6D\xFD |0 \x52\xEA |0 \x55\x48 |0 \x52\xDF |0 \x6E\x51 |0 \x6E\x50 |0 \x6E\x45 |0 \x6E\x61 |0 \x6E\x5A |0 \x52\xD7 |0 \x70\x90 |0 \x55\x4F |0 \x70\x91 |0 \x70\x85 |0 \x55\x44 |0 \x55\x50 |0 \x70\x7D |0 \x70\x87 |0 \x70\x8F |0 \x70\x7C |0 \x70\x98 |0 \x54\xF7 |0 \x70\x97 |0 \x70\x92 |0 \x70\x93 |0 \x55\x42 |0 \x55\x4D |0 \x70\x89 |0 \x70\x8A |0 \x70\x94 |0 \x70\x8B |0 \x70\x86 |0 \x70\x7F |0 \x70\x81 |0 \x70\x8E |0 \x70\x88 |0 \x54\xF8 |0 \x54\xFC |0 \x70\x96 |0 \x70\x82 |0 \x55\x4B |0 \x55\x47 |0 \x55\x4A |0 \x55\x51 |0 \x54\xFD |0 \x55\x4C |0 \x70\x8D |0 \x55\x4E |0 \x54\xFA |0 \x54\xF9 |0 \x70\x7E |0 \x70\x83 |0 \x55\x45 |0 \x70\x95 |0 \x70\x8C |0 \x70\x84 |0 \x55\x49 |0 \x55\x46 |0 \x54\xFB |0 \x55\x41 |0 \x73\xA8 |0 \x73\x98 |0 \x73\x99 |0 \x73\x9D |0 \x73\xAC |0 \x73\xA9 |0 \x73\xA2 |0 \x73\xA1 |0 \x57\xB2 |0 \x73\xA5 |0 \x73\xB4 |0 \x73\x94 |0 \x73\xB5 |0 \x73\xA7 |0 \x73\xB9 |0 \x73\xAD |0 \x57\xB1 |0 \x73\xAB |0 \x57\xAC |0 \x57\xC1 |0 \x57\xB7 |0 \x57\xBB |0 \x57\xBA |0 \x73\x95 |0 \x73\xB2 |0 \x73\xB8 |0 \x73\xB0 |0 \x73\xB7 |0 \x73\xA4 |0 \x73\x96 |0 \x73\xB6 |0 \x73\xA6 |0 \x57\xAF |0 \x57\xBC |0 \x73\xAF |0 \x57\xB5 |0 \x73\xAE |0 \x73\x97 |0 \x57\xBD |0 \x57\xBF |0 \x73\xB1 |0 \x57\xC0 |0 \x57\xAE |0 \x73\x9E |0 \x73\xB3 |0 \x57\xB4 |0 \x57\xBE |0 \x73\xA0 |0 \x73\xAA |0 \x73\x9B |0 \x73\x9F |0 \x57\xB9 |0 \x73\x9A |0 \x57\xAD |0 \x57\xB6 |0 \x57\xB3 |0 \x73\xA3 |0 \x55\x43 |0 \x76\xE4 |0 \x57\xB0 |0 \x57\xB8 |0 \x76\xE7 |0 \x76\xFD |0 \x76\xF2 |0 \x59\xFA |0 \x59\xF5 |0 \x76\xE1 |0 \x59\xF6 |0 \x76\xF1 |0 \x76\xEA |0 \x76\xF7 |0 \x59\xF2 |0 \x76\xCF |0 \x76\xF9 |0 \x59\xE8 |0 \x76\xD7 |0 \x59\xEB |0 \x59\xEA |0 \x59\xFB |0 \x76\xD1 |0 \x76\xF3 |0 \x76\xF4 |0 \x59\xED |0 \x59\xE9 |0 \x76\xDF |0 \x59\xF4 |0 \x76\xDA |0 \x76\xF5 |0 \x59\xF0 |0 \x76\xED |0 \x76\xFA |0 \x76\xD4 |0 \x76\xD9 |0 \x76\xD3 |0 \x59\xEF |0 \x76\xE6 |0 \x7A\x86 |0 \x76\xD5 |0 \x59\xF3 |0 \x76\xDE |0 \x76\xF6 |0 \x59\xEE |0 \x76\xDB |0 \x76\xD8 |0 \x76\xE9 |0 \x59\xF1 |0 \x59\xE7 |0 \x59\xFD |0 \x76\xEC |0 \x76\xEB |0 \x76\xD0 |0 \x59\xEC |0 \x76\xF8 |0 \x76\xE0 |0 \x76\xE2 |0 \x76\xEF |0 \x76\xEE |0 \x76\xCE |0 \x59\xF7 |0 \x59\xF9 |0 \x76\xD6 |0 \x76\xDD |0 \x76\xE5 |0 \x59\xF8 |0 \x76\xDC |0 \x76\xE8 |0 \x76\xFB |0 \x76\xF0 |0 \x91\xC6 |0 \x76\xFC |0 \x76\xD2 |0 \x7A\x9A |0 \x5C\x6C |0 \x7A\x98 |0 \x7A\x83 |0 \x7A\x88 |0 \x7A\x81 |0 \x7A\x94 |0 \x7A\x72 |0 \x7A\x79 |0 \x7A\x92 |0 \x7A\x9C |0 \x7A\x84 |0 \x7A\x76 |0 \x7A\x8A |0 \x7A\x8F |0 \x7A\x7A |0 \x7A\x8C |0 \x7A\x77 |0 \x7A\x7E |0 \x7A\x7F |0 \x5C\x6E |0 \x7A\x93 |0 \x7A\x91 |0 \x7A\x73 |0 \x7A\x96 |0 \x7A\x97 |0 \x7A\x99 |0 \x5C\x72 |0 \x5C\x6A |0 \x73\x9C |0 \x7A\x7B |0 \x7A\x8E |0 \x7A\x7C |0 \x5C\x67 |0 \x5C\x77 |0 \x7A\x95 |0 \x5C\x75 |0 \x5C\x71 |0 \x7A\x71 |0 \x5C\x69 |0 \x7A\x74 |0 \x5C\x76 |0 \x7A\x85 |0 \x7A\x70 |0 \x5C\x6F |0 \x7A\x89 |0 \x7A\x78 |0 \x5C\x70 |0 \x7A\x82 |0 \x5C\x66 |0 \x59\xFC |0 \x7A\x8B |0 \x76\xE3 |0 \x7A\x75 |0 \x7A\x90 |0 \x5C\x6B |0 \x7A\x8D |0 \x5C\x68 |0 \x7A\x87 |0 \x5C\x73 |0 \x7A\x7D |0 \x7A\x9B |0 \x5C\x6D |0 \x7B\x4E |0 \x5C\x74 |0 \x7D\xF1 |0 \x7D\xEF |0 \x7E\x48 |0 \x7D\xED |0 \x7E\x42 |0 \x5C\x65 |0 \x5E\xA7 |0 \x7D\xE9 |0 \x7E\x47 |0 \x7D\xEE |0 \x7D\xFC |0 \x5E\xAC |0 \x5E\xA5 |0 \x7E\x45 |0 \x7D\xE7 |0 \x7E\x44 |0 \x5E\xB7 |0 \x7D\xF8 |0 \x7E\x4B |0 \x5E\xB5 |0 \x7D\xF0 |0 \x5E\xA6 |0 \x7D\xF2 |0 \x7E\x43 |0 \x5E\xAF |0 \x7D\xEB |0 \x5E\xB3 |0 \x5E\xA9 |0 \x7D\xF4 |0 \x7D\xEA |0 \x7D\xE4 |0 \x7E\x41 |0 \x5E\xB0 |0 \x7E\x4A |0 \x7D\xE5 |0 \x5E\xAD |0 \x7D\xFA |0 \x5E\xAE |0 \x7D\xEC |0 \x7D\xF7 |0 \x7D\xF3 |0 \x7D\xF5 |0 \x5E\xA8 |0 \x7E\x49 |0 \x5E\xB6 |0 \x7D\xF6 |0 \x7E\x4C |0 \x7D\xE6 |0 \x7D\xFB |0 \x5E\xAB |0 \x5E\xB4 |0 \x5E\xB2 |0 \x7D\xE8 |0 \x7D\xFD |0 \x5E\xB1 |0 \x5E\xAA |0 \x7D\xF9 |0 \x7E\x46 |0 \x80\xFD |0 \x80\xF9 |0 \x80\xF5 |0 \x81\x4C |0 \x81\x49 |0 \x60\xB5 |0 \x81\x50 |0 \x80\xFC |0 \x60\xC0 |0 \x81\x46 |0 \x80\xF8 |0 \x81\x45 |0 \x60\xBD |0 \x81\x59 |0 \x81\x56 |0 \x81\x48 |0 \x80\xF6 |0 \x81\x4D |0 \x81\x4F |0 \x60\xB9 |0 \x81\x43 |0 \x80\xFB |0 \x80\xF2 |0 \x60\xB6 |0 \x60\xBE |0 \x81\x52 |0 \x60\xBF |0 \x80\xF3 |0 \x81\x58 |0 \x81\x4B |0 \x81\x51 |0 \x60\xBC |0 \x81\x4E |0 \x81\x55 |0 \x60\xC1 |0 \x60\xBB |0 \x81\x47 |0 \x80\xF7 |0 \x81\x5A |0 \x80\xF4 |0 \x81\x53 |0 \x60\xB8 |0 \x81\x41 |0 \x81\x42 |0 \x60\xB7 |0 \x60\xB4 |0 \x80\xFA |0 \x60\xBA |0 \x60\xB3 |0 \x81\x54 |0 \x81\x57 |0 \x81\x44 |0 \x84\x75 |0 \x84\x6D |0 \x84\x69 |0 \x62\xA0 |0 \x62\x95 |0 \x62\x9A |0 \x62\x96 |0 \x84\x77 |0 \x84\x83 |0 \x62\x94 |0 \x84\x6F |0 \x84\x78 |0 \x81\x4A |0 \x84\x79 |0 \x62\x9B |0 \x84\x89 |0 \x62\x9F |0 \x62\xA2 |0 \x84\x6B |0 \x62\x9E |0 \x84\x87 |0 \x84\x88 |0 \x84\x7D |0 \x84\x7C |0 \x84\x74 |0 \x84\x7E |0 \x84\x86 |0 \x84\x85 |0 \x62\x99 |0 \x62\x97 |0 \x84\x76 |0 \x84\x73 |0 \x84\x70 |0 \x84\x84 |0 \x62\xA1 |0 \x84\x82 |0 \x62\x9D |0 \x62\x9C |0 \x84\x7B |0 \x84\x6A |0 \x84\x6C |0 \x84\x6E |0 \x84\x81 |0 \x84\x7A |0 \x62\x98 |0 \x84\x71 |0 \x84\x7F |0 \x84\x72 |0 \x63\xF7 |0 \x87\x52 |0 \x63\xF0 |0 \x87\x43 |0 \x87\x4E |0 \x63\xF2 |0 \x87\x55 |0 \x87\x4A |0 \x87\x45 |0 \x87\x56 |0 \x87\x41 |0 \x87\x4C |0 \x63\xF9 |0 \x87\x51 |0 \x87\x57 |0 \x87\x4B |0 \x63\xF1 |0 \x87\x4D |0 \x87\x42 |0 \x63\xF8 |0 \x87\x54 |0 \x87\x47 |0 \x63\xF4 |0 \x87\x49 |0 \x87\x46 |0 \x63\xFA |0 \x87\x48 |0 \x63\xF3 |0 \x63\xF6 |0 \x87\x50 |0 \x87\x44 |0 \x87\x53 |0 \x87\x4F |0 \x65\x6E |0 \x89\x95 |0 \x65\x73 |0 \x65\x74 |0 \x65\x6D |0 \x89\x94 |0 \x89\x91 |0 \x89\x92 |0 \x65\x71 |0 \x89\x8C |0 \x89\x90 |0 \x65\x70 |0 \x89\x8D |0 \x65\x72 |0 \x65\x6F |0 \x89\x8B |0 \x89\x8F |0 \x89\x93 |0 \x8B\x7F |0 \x8B\x7C |0 \x8B\x86 |0 \x8B\x85 |0 \x8B\x83 |0 \x8B\x7D |0 \x66\x5E |0 \x8B\x7E |0 \x66\x5D |0 \x63\xF5 |0 \x8B\x82 |0 \x66\x5C |0 \x8B\x87 |0 \x8B\x81 |0 \x8B\x7B |0 \x89\x8E |0 \x66\x5B |0 \x8B\x7A |0 \x8D\x46 |0 \x8D\x45 |0 \x8B\x84 |0 \x66\xF2 |0 \x8D\x49 |0 \x8D\x4A |0 \x8D\x44 |0 \x8D\x48 |0 \x8D\x43 |0 \x8E\x81 |0 \x8D\x47 |0 \x67\x93 |0 \x67\x91 |0 \x8E\x7E |0 \x8E\x82 |0 \x8E\x7D |0 \x8E\x7F |0 \x67\x92 |0 \x8F\x75 |0 \x8F\x76 |0 \x67\xE1 |0 \x8F\x74 |0 \x90\x53 |0 \x68\x5B |0 \x90\x51 |0 \x90\x52 |0 \x90\xBB |0 \x68\xA2 |0 \x91\x45 |0 \x91\x43 |0 \x91\x44 |0 \x91\x46 |0 \x91\xAB |0 \x48\x8C |3 \x4C\xCD |0 \x4E\x59 |0 \x51\x5C |0 \x6C\x6B |0 \x6E\x67 |0 \x70\x99 |0 \x70\x9B |0 \x70\x9A |0 \x70\x9C |0 \x57\xC2 |0 \x73\xBB |0 \x70\x9D |0 \x73\xBA |0 \x73\xBC |0 \x73\xBD |0 \x77\x41 |0 \x5A\x42 |0 \x77\x42 |0 \x77\x44 |0 \x5A\x43 |0 \x5A\x41 |0 \x77\x43 |0 \x7A\xA2 |0 \x7A\xA0 |0 \x7A\x9F |0 \x7A\x9E |0 \x7A\x9D |0 \x5C\x78 |0 \x7A\xA1 |0 \x5E\xB8 |0 \x7E\x4D |0 \x7E\x4F |0 \x5E\xB9 |0 \x7E\x4E |0 \x60\xC3 |0 \x60\xC2 |0 \x81\x5B |0 \x84\x8B |0 \x84\x8A |0 \x84\x8C |0 \x62\xA3 |0 \x87\x58 |0 \x63\xFB |0 \x89\x96 |0 \x65\x75 |0 \x8B\x88 |0 \x67\xE2 |0 \x48\x8D |3 \x4C\xCE |0 \x4D\x7F |0 \x4E\x5A |0 \x4F\x84 |0 \x51\x5D |0 \x51\x5E |0 \x52\xF0 |0 \x70\x9E |0 \x5C\x79 |0 \x81\xDA |0 \x62\xA4 |0 \x65\x76 |0 \x48\x8E |3 \x4C\xCF |0 \x4E\x5B |0 \x6C\x6D |0 \x51\x5F |0 \x6C\x6C |0 \x6E\x68 |0 \x52\xF1 |0 \x6E\x69 |0 \x52\xF2 |0 \x70\xA0 |0 \x55\x53 |0 \x55\x52 |0 \x73\xC2 |0 \x73\xC0 |0 \x73\xC1 |0 \x73\xBF |0 \x73\xBE |0 \x77\x45 |0 \x77\x48 |0 \x5A\x45 |0 \x77\x46 |0 \x5A\x44 |0 \x77\x47 |0 \x7A\xA3 |0 \x7E\x50 |0 \x7E\x51 |0 \x7E\x52 |0 \x81\x5E |0 \x81\x5D |0 \x60\xC4 |0 \x81\x5C |0 \x81\x5F |0 \x84\x8D |0 \x84\x8E |0 \x84\x8F |0 \x87\x59 |0 \x63\xFC |0 \x65\x77 |0 \x8B\x89 |0 \x67\x94 |0 \x48\x8F |3 \x69\x60 |0 \x52\xF3 |0 \x6E\x6A |0 \x55\x54 |0 \x57\xC3 |0 \x5A\x46 |0 \x77\x49 |0 \x5C\x7B |0 \x5C\x7A |0 \x7E\x53 |0 \x7E\x54 |0 \x60\xC5 |0 \x60\xC6 |0 \x84\x91 |0 \x84\x90 |0 \x89\x97 |0 \x90\x54 |0 \x48\x90 |3 \x4C\xD0 |0 \x69\x61 |0 \x4D\x81 |0 \x4F\x85 |0 \x6A\xC8 |0 \x52\xF4 |0 \x5C\x7C |0 \x48\x91 |3 \x4C\xD1 |0 \x6E\x6B |0 \x52\xF5 |0 \x6E\x6C |0 \x63\xFD |0 \x48\x92 |3 \x4C\xD2 |0 \x6C\x6E |0 \x6E\x6D |0 \x70\xA5 |0 \x70\xA4 |0 \x70\xA2 |0 \x70\xA1 |0 \x70\xA6 |0 \x70\xA3 |0 \x57\xC4 |0 \x57\xC5 |0 \x5A\x47 |0 \x77\x4A |0 \x77\x4B |0 \x77\x4C |0 \x7A\xA8 |0 \x7A\xA9 |0 \x7A\xA7 |0 \x7A\xA5 |0 \x7A\xA6 |0 \x5C\x7D |0 \x7E\x55 |0 \x81\x62 |0 \x81\x61 |0 \x81\x60 |0 \x81\x63 |0 \x84\x93 |0 \x84\x92 |0 \x62\xA5 |0 \x84\x94 |0 \x64\x41 |0 \x87\x5A |0 \x89\x98 |0 \x8B\x8A |0 \x8F\x77 |0 \x48\x93 |3 \x4C\xD3 |0 \x4D\x83 |0 \x4D\x82 |0 \x51\x60 |0 \x48\x94 |3 \x69\x62 |0 \x69\x7F |0 \x4E\x5C |0 \x69\xD7 |0 \x6A\xC9 |0 \x6A\xCA |0 \x51\x61 |0 \x6C\x6F |0 \x52\xF6 |0 \x6E\x6E |0 \x6E\x6F |0 \x55\x55 |0 \x55\x59 |0 \x70\xA7 |0 \x55\x58 |0 \x55\x56 |0 \x55\x57 |0 \x73\xC3 |0 \x57\xC6 |0 \x5A\x4A |0 \x5A\x48 |0 \x5A\x49 |0 \x77\x4D |0 \x5E\xBA |0 \x48\x95 |3 \x4C\xD4 |0 \x69\x81 |0 \x4D\x84 |0 \x69\x84 |0 \x4D\x87 |0 \x69\x83 |0 \x4D\x86 |0 \x4D\x85 |0 \x4F\x86 |0 \x69\x82 |0 \x69\xD8 |0 \x69\xDC |0 \x69\xDE |0 \x69\xDF |0 \x4E\x66 |0 \x4E\x67 |0 \x69\xDB |0 \x4E\x62 |0 \x69\xD9 |0 \x69\xDD |0 \x4E\x63 |0 \x4E\x5E |0 \x4E\x5F |0 \x4E\x65 |0 \x69\xDA |0 \x4E\x5D |0 \x4F\x87 |0 \x4E\x60 |0 \x4E\x61 |0 \x4E\x64 |0 \x6A\xDB |0 \x6A\xD9 |0 \x6A\xCC |0 \x4F\x93 |0 \x6A\xD3 |0 \x4F\x8E |0 \x6A\xCD |0 \x6A\xD5 |0 \x6A\xD2 |0 \x4F\x91 |0 \x6A\xD1 |0 \x4F\x98 |0 \x6A\xDA |0 \x4F\x9A |0 \x4F\x9C |0 \x6A\xCB |0 \x4F\x8F |0 \x6A\xDC |0 \x4F\x96 |0 \x4F\x99 |0 \x6C\x87 |0 \x4F\x89 |0 \x4F\xA0 |0 \x4F\x97 |0 \x6A\xCE |0 \x4F\x8C |0 \x4F\x9B |0 \x6A\xD6 |0 \x4F\x8A |0 \x4F\x8B |0 \x6C\x85 |0 \x6A\xCF |0 \x4F\x92 |0 \x4F\x9D |0 \x6A\xDD |0 \x6A\xD0 |0 \x4F\x90 |0 \x4F\x95 |0 \x6C\x70 |0 \x4F\x9E |0 \x6A\xD7 |0 \x4F\x94 |0 \x4F\x9F |0 \x4F\x88 |0 \x6A\xD4 |0 \x4F\x8D |0 \x6A\xD8 |0 \x6C\x86 |0 \x51\x6D |0 \x51\x7D |0 \x6C\x77 |0 \x51\x74 |0 \x6C\x8D |0 \x51\x65 |0 \x51\x68 |0 \x6C\x84 |0 \x6C\x75 |0 \x6C\x79 |0 \x51\x70 |0 \x51\x72 |0 \x6C\x7C |0 \x51\x79 |0 \x51\x6B |0 \x51\x69 |0 \x51\x6A |0 \x51\x78 |0 \x6C\x89 |0 \x51\x73 |0 \x6C\x7B |0 \x6C\x7D |0 \x51\x71 |0 \x51\x76 |0 \x6C\x7E |0 \x6C\x8C |0 \x52\xF7 |0 \x51\x7C |0 \x51\x66 |0 \x6C\x8B |0 \x6C\x8F |0 \x6C\x7A |0 \x6C\x91 |0 \x6C\x82 |0 \x51\x6F |0 \x6C\x76 |0 \x51\x6E |0 \x51\x81 |0 \x51\x75 |0 \x6C\x74 |0 \x6E\x78 |0 \x51\x7B |0 \x51\x7F |0 \x6C\x83 |0 \x6C\x88 |0 \x51\x82 |0 \x51\x7A |0 \x51\x6C |0 \x51\x62 |0 \x51\x67 |0 \x6C\x78 |0 \x51\x63 |0 \x6C\x90 |0 \x6C\x72 |0 \x6C\x71 |0 \x6C\x7F |0 \x6C\x73 |0 \x51\x7E |0 \x55\x5A |0 \x51\x77 |0 \x6C\x81 |0 \x51\x64 |0 \x53\x49 |0 \x6C\x8E |0 \x6E\x7F |0 \x6E\x83 |0 \x6E\x86 |0 \x6E\x7A |0 \x6E\x89 |0 \x6E\x8C |0 \x6E\x8E |0 \x6E\x77 |0 \x52\xF8 |0 \x52\xFD |0 \x70\xAC |0 \x53\x50 |0 \x6E\x87 |0 \x6E\x8F |0 \x6E\x7E |0 \x6E\x76 |0 \x70\xC7 |0 \x53\x43 |0 \x6E\x84 |0 \x6E\x7B |0 \x6E\x7D |0 \x53\x48 |0 \x6E\x81 |0 \x53\x42 |0 \x6E\x73 |0 \x6E\x8A |0 \x6E\x8D |0 \x52\xFC |0 \x53\x4B |0 \x6E\x70 |0 \x53\x4D |0 \x52\xFA |0 \x53\x51 |0 \x6E\x8B |0 \x6E\x72 |0 \x53\x4E |0 \x70\xC1 |0 \x6C\x8A |0 \x53\x41 |0 \x52\xF9 |0 \x6E\x79 |0 \x6E\x71 |0 \x53\x4F |0 \x53\x47 |0 \x6E\x85 |0 \x53\x4C |0 \x53\x4A |0 \x6E\x7C |0 \x53\x44 |0 \x6E\x74 |0 \x53\x45 |0 \x53\x46 |0 \x6E\x75 |0 \x6E\x88 |0 \x52\xFB |0 \x6E\x82 |0 \x70\xAF |0 \x55\x62 |0 \x55\x67 |0 \x70\xB8 |0 \x70\xBE |0 \x70\xBA |0 \x70\xAD |0 \x70\xB0 |0 \x70\xA9 |0 \x70\xAA |0 \x55\x6E |0 \x55\x5F |0 \x70\xB9 |0 \x70\xC2 |0 \x55\x69 |0 \x55\x5B |0 \x55\x64 |0 \x70\xB1 |0 \x55\x66 |0 \x70\xB2 |0 \x70\xBC |0 \x55\x68 |0 \x70\xCB |0 \x70\xAB |0 \x55\x61 |0 \x55\x60 |0 \x55\x6C |0 \x70\xA8 |0 \x70\xC9 |0 \x70\xBD |0 \x70\xCA |0 \x70\xC4 |0 \x70\xB6 |0 \x70\xC5 |0 \x70\xBF |0 \x70\xC8 |0 \x70\xC6 |0 \x55\x6D |0 \x70\xB7 |0 \x55\x5E |0 \x55\x5D |0 \x55\x65 |0 \x55\x6B |0 \x70\xC3 |0 \x55\x6A |0 \x70\xB4 |0 \x57\xC7 |0 \x70\xCC |0 \x70\xB3 |0 \x70\xAE |0 \x55\x63 |0 \x55\x6F |0 \x55\x5C |0 \x70\xBB |0 \x70\xC0 |0 \x57\xE9 |0 \x73\xC5 |0 \x73\xC9 |0 \x57\xD6 |0 \x57\xD4 |0 \x57\xCB |0 \x73\xC7 |0 \x73\xC6 |0 \x57\xDF |0 \x73\xCC |0 \x57\xD9 |0 \x73\xDE |0 \x73\xEA |0 \x57\xC8 |0 \x73\xDB |0 \x73\xD4 |0 \x57\xEB |0 \x73\xC4 |0 \x73\xE0 |0 \x57\xE8 |0 \x57\xDC |0 \x57\xE7 |0 \x57\xD2 |0 \x73\xD0 |0 \x73\xE2 |0 \x73\xDA |0 \x57\xD3 |0 \x57\xCD |0 \x73\xE8 |0 \x73\xE1 |0 \x73\xE3 |0 \x57\xD5 |0 \x57\xDD |0 \x73\xE5 |0 \x73\xCE |0 \x73\xDF |0 \x73\xD3 |0 \x73\xE7 |0 \x57\xE2 |0 \x57\xCA |0 \x57\xE0 |0 \x73\xD8 |0 \x73\xD6 |0 \x73\xD7 |0 \x57\xD7 |0 \x73\xD2 |0 \x73\xD1 |0 \x57\xCC |0 \x73\xCB |0 \x73\xE9 |0 \x57\xCE |0 \x73\xD5 |0 \x57\xEC |0 \x57\xE6 |0 \x73\xCA |0 \x57\xE3 |0 \x57\xE1 |0 \x57\xEA |0 \x73\xDC |0 \x57\xE5 |0 \x70\xB5 |0 \x73\xDD |0 \x57\xE4 |0 \x73\xE4 |0 \x57\xC9 |0 \x73\xD9 |0 \x57\xDB |0 \x73\xCD |0 \x57\xDA |0 \x57\xD8 |0 \x57\xD0 |0 \x57\xCF |0 \x77\x4E |0 \x73\xE6 |0 \x73\xCF |0 \x77\x63 |0 \x57\xD1 |0 \x5A\x67 |0 \x57\xDE |0 \x5A\x55 |0 \x77\x5D |0 \x5A\x63 |0 \x77\x51 |0 \x5A\x52 |0 \x5A\x4E |0 \x77\x6F |0 \x5A\x54 |0 \x5A\x58 |0 \x5A\x53 |0 \x5A\x5C |0 \x77\x73 |0 \x77\x6A |0 \x77\x58 |0 \x5A\x61 |0 \x5A\x5B |0 \x77\x64 |0 \x5A\x4B |0 \x77\x70 |0 \x77\x69 |0 \x5A\x4F |0 \x77\x5E |0 \x5A\x5E |0 \x77\x7B |0 \x77\x7C |0 \x5A\x4C |0 \x77\x6E |0 \x5A\x60 |0 \x77\x62 |0 \x77\x54 |0 \x77\x55 |0 \x5A\x64 |0 \x77\x59 |0 \x77\x60 |0 \x77\x5A |0 \x5A\x62 |0 \x5A\x6A |0 \x77\x56 |0 \x77\x4F |0 \x77\x50 |0 \x77\x52 |0 \x5A\x51 |0 \x77\x5F |0 \x5A\x5F |0 \x5A\x68 |0 \x77\x61 |0 \x77\x79 |0 \x77\x71 |0 \x5A\x4D |0 \x77\x77 |0 \x5A\x59 |0 \x5A\x57 |0 \x77\x7D |0 \x5A\x56 |0 \x77\x67 |0 \x77\x5B |0 \x77\x65 |0 \x5A\x6D |0 \x77\x6B |0 \x77\x68 |0 \x77\x57 |0 \x5A\x69 |0 \x77\x75 |0 \x77\x72 |0 \x77\x7A |0 \x5A\x50 |0 \x77\x66 |0 \x5A\x6C |0 \x77\x6D |0 \x5A\x5A |0 \x5A\x5D |0 \x77\x6C |0 \x5A\x6B |0 \x77\x5C |0 \x73\xC8 |0 \x77\x76 |0 \x77\x74 |0 \x77\x78 |0 \x77\x53 |0 \x5A\x66 |0 \x7A\xC8 |0 \x7A\xC7 |0 \x7A\xAD |0 \x5C\x84 |0 \x7A\xC6 |0 \x7A\xB0 |0 \x7A\xB1 |0 \x5C\x8E |0 \x7A\xCF |0 \x5C\x89 |0 \x7A\xC5 |0 \x7A\xAA |0 \x5C\x8F |0 \x5C\x85 |0 \x7A\xB9 |0 \x7A\xAF |0 \x7A\xB2 |0 \x7A\xCA |0 \x5C\x7E |0 \x7A\xD1 |0 \x7A\xC9 |0 \x5C\x88 |0 \x7A\xBE |0 \x5C\x93 |0 \x5C\x92 |0 \x5C\x8C |0 \x7A\xD0 |0 \x5C\x7F |0 \x7A\xBC |0 \x7A\xB3 |0 \x7A\xC0 |0 \x7A\xCC |0 \x5C\x94 |0 \x5C\x82 |0 \x7A\xBB |0 \x91\xC7 |0 \x7A\xB4 |0 \x5C\x8B |0 \x5C\x8A |0 \x7A\xB7 |0 \x7A\xC1 |0 \x7A\xCB |0 \x7A\xAE |0 \x7A\xB8 |0 \x5C\x83 |0 \x7A\xC2 |0 \x5C\x90 |0 \x5C\x87 |0 \x7A\xB5 |0 \x5C\x86 |0 \x7A\xAC |0 \x7A\xBA |0 \x7A\xCE |0 \x5A\x65 |0 \x5E\xD6 |0 \x7A\xBD |0 \x7E\x56 |0 \x7A\xBF |0 \x7A\xCD |0 \x5C\x8D |0 \x7A\xB6 |0 \x5C\x81 |0 \x5C\x91 |0 \x60\xD8 |0 \x7A\xAB |0 \x7A\xC4 |0 \x7A\xC3 |0 \x7E\x72 |0 \x5E\xD3 |0 \x7E\x67 |0 \x7E\x6C |0 \x5E\xC8 |0 \x7E\x58 |0 \x5E\xD5 |0 \x5E\xBF |0 \x7E\x57 |0 \x7E\x78 |0 \x5E\xD7 |0 \x7E\x5B |0 \x7E\x6B |0 \x7E\x5D |0 \x7E\x7B |0 \x7E\x77 |0 \x5E\xBD |0 \x5E\xC7 |0 \x81\x7D |0 \x5E\xD4 |0 \x5E\xC5 |0 \x7E\x59 |0 \x7E\x76 |0 \x5E\xC9 |0 \x7E\x73 |0 \x7E\x81 |0 \x7E\x5F |0 \x7E\x68 |0 \x7E\x7E |0 \x7E\x74 |0 \x5E\xC4 |0 \x7E\x66 |0 \x5E\xBE |0 \x5E\xBC |0 \x5E\xCE |0 \x7E\x64 |0 \x7E\x61 |0 \x7E\x62 |0 \x7E\x7A |0 \x7E\x7F |0 \x7E\x7D |0 \x5E\xC2 |0 \x7E\x82 |0 \x5E\xC6 |0 \x5E\xCD |0 \x7E\x5A |0 \x81\x65 |0 \x7E\x63 |0 \x5E\xC0 |0 \x5E\xD2 |0 \x5E\xCF |0 \x5E\xC3 |0 \x7E\x6D |0 \x7E\x5E |0 \x5E\xD0 |0 \x7E\x6F |0 \x5E\xCA |0 \x5E\xCC |0 \x5E\xBB |0 \x7E\x71 |0 \x7E\x69 |0 \x7E\x5C |0 \x5E\xCB |0 \x7E\x79 |0 \x7E\x7C |0 \x7E\x65 |0 \x7E\x70 |0 \x5E\xC1 |0 \x60\xC7 |0 \x7E\x6E |0 \x81\x64 |0 \x7E\x75 |0 \x7E\x60 |0 \x81\x6E |0 \x81\x78 |0 \x60\xCA |0 \x81\x77 |0 \x81\x84 |0 \x60\xCC |0 \x81\x75 |0 \x81\x79 |0 \x60\xD7 |0 \x81\x70 |0 \x60\xCF |0 \x81\x7C |0 \x84\x9C |0 \x60\xDB |0 \x60\xDA |0 \x81\x7E |0 \x81\x6D |0 \x81\x89 |0 \x60\xD5 |0 \x60\xCB |0 \x81\x82 |0 \x81\x86 |0 \x81\x8B |0 \x81\x7F |0 \x81\x73 |0 \x60\xCE |0 \x60\xD1 |0 \x60\xD9 |0 \x60\xD4 |0 \x81\x76 |0 \x7E\x6A |0 \x81\x72 |0 \x81\x8A |0 \x60\xD0 |0 \x60\xD3 |0 \x81\x8C |0 \x60\xC8 |0 \x81\x81 |0 \x81\x66 |0 \x81\x87 |0 \x64\x4A |0 \x81\x74 |0 \x60\xC9 |0 \x81\x6F |0 \x60\xCD |0 \x81\x67 |0 \x5E\xD1 |0 \x81\x6B |0 \x81\x85 |0 \x81\x6C |0 \x81\x6A |0 \x60\xD2 |0 \x81\x83 |0 \x81\x69 |0 \x81\x7B |0 \x81\x7A |0 \x81\x88 |0 \x81\x71 |0 \x60\xD6 |0 \x84\x9F |0 \x62\xB2 |0 \x62\xA8 |0 \x84\xAB |0 \x84\x97 |0 \x62\xAA |0 \x84\xA3 |0 \x62\xB1 |0 \x62\xAC |0 \x84\xA1 |0 \x87\x5C |0 \x84\xA7 |0 \x84\xAD |0 \x84\xA6 |0 \x84\x95 |0 \x84\xA4 |0 \x84\xAF |0 \x84\xB1 |0 \x62\xA7 |0 \x84\xB0 |0 \x62\xAD |0 \x62\xB3 |0 \x62\xB0 |0 \x84\xAA |0 \x62\xAF |0 \x84\xA5 |0 \x84\x99 |0 \x84\x9E |0 \x84\xA9 |0 \x62\xAE |0 \x62\xAB |0 \x62\xA6 |0 \x62\xA9 |0 \x84\x9D |0 \x81\x68 |0 \x84\x98 |0 \x84\x9B |0 \x84\xAC |0 \x84\xA0 |0 \x84\x96 |0 \x87\x5B |0 \x84\xAE |0 \x84\x9A |0 \x84\xA8 |0 \x87\x5E |0 \x64\x4E |0 \x64\x42 |0 \x64\x46 |0 \x87\x60 |0 \x87\x66 |0 \x87\x64 |0 \x64\x44 |0 \x64\x45 |0 \x64\x4C |0 \x87\x67 |0 \x87\x5F |0 \x64\x47 |0 \x87\x63 |0 \x87\x62 |0 \x87\x68 |0 \x64\x4D |0 \x64\x48 |0 \x64\x4B |0 \x87\x61 |0 \x64\x4F |0 \x64\x49 |0 \x64\x50 |0 \x64\x43 |0 \x87\x65 |0 \x87\x5D |0 \x89\xA5 |0 \x65\x7C |0 \x89\xA2 |0 \x89\xA4 |0 \x65\x7A |0 \x89\xA0 |0 \x89\xA1 |0 \x89\x9C |0 \x84\xA2 |0 \x89\x9D |0 \x65\x7B |0 \x89\x99 |0 \x65\x78 |0 \x89\xA6 |0 \x65\x79 |0 \x89\x9A |0 \x89\x9B |0 \x89\x9F |0 \x65\x7E |0 \x65\x7D |0 \x89\x9E |0 \x66\x64 |0 \x8B\x8E |0 \x8B\x94 |0 \x66\x65 |0 \x8B\x8B |0 \x66\x62 |0 \x66\x5F |0 \x8B\x96 |0 \x66\x63 |0 \x66\x60 |0 \x8B\x8D |0 \x8B\x90 |0 \x8B\x91 |0 \x8B\x92 |0 \x8B\x95 |0 \x89\xA3 |0 \x8B\x8C |0 \x66\x61 |0 \x8B\x93 |0 \x8B\x97 |0 \x8B\x8F |0 \x8D\x4D |0 \x66\xF4 |0 \x8D\x50 |0 \x66\xF5 |0 \x8D\x58 |0 \x8D\x4F |0 \x8D\x4C |0 \x8D\x4E |0 \x8D\x52 |0 \x8D\x55 |0 \x8D\x54 |0 \x8D\x57 |0 \x8D\x4B |0 \x66\xF3 |0 \x8D\x53 |0 \x8D\x56 |0 \x8D\x59 |0 \x8D\x51 |0 \x8E\x83 |0 \x8E\x84 |0 \x8E\x88 |0 \x8E\x89 |0 \x8E\x86 |0 \x8E\x87 |0 \x8E\x85 |0 \x67\x95 |0 \x67\xE3 |0 \x8F\x7B |0 \x8F\x78 |0 \x8F\x79 |0 \x8F\x7A |0 \x67\xE4 |0 \x90\x56 |0 \x90\x55 |0 \x90\xBE |0 \x68\x81 |0 \x90\xBC |0 \x90\xBF |0 \x90\xBD |0 \x91\x47 |0 \x68\xA3 |0 \x68\xB1 |0 \x91\x93 |0 \x91\x7D |0 \x91\x92 |0 \x91\xC0 |0 \x91\xC1 |0 \x48\x96 |3 \x4C\xD5 |0 \x4E\x68 |0 \x69\xE0 |0 \x6A\xDE |0 \x4F\xA1 |0 \x4F\xA4 |0 \x6A\xDF |0 \x4F\xA2 |0 \x4F\xA3 |0 \x6C\x9A |0 \x6C\x9C |0 \x6C\x97 |0 \x6C\x94 |0 \x6C\x96 |0 \x51\x86 |0 \x51\x84 |0 \x6C\x98 |0 \x51\x85 |0 \x6C\x95 |0 \x6C\x92 |0 \x51\x83 |0 \x6C\x99 |0 \x6C\x93 |0 \x51\x87 |0 \x6C\x9B |0 \x6E\x91 |0 \x6E\x95 |0 \x53\x5A |0 \x6E\x98 |0 \x53\x52 |0 \x53\x55 |0 \x53\x57 |0 \x53\x59 |0 \x53\x56 |0 \x6E\x94 |0 \x6E\x93 |0 \x53\x54 |0 \x6E\x96 |0 \x6E\x97 |0 \x6E\x90 |0 \x53\x58 |0 \x53\x53 |0 \x6E\x92 |0 \x70\xDA |0 \x70\xDB |0 \x70\xDC |0 \x55\x74 |0 \x55\x70 |0 \x70\xD1 |0 \x70\xD9 |0 \x70\xDE |0 \x55\x75 |0 \x70\xCF |0 \x70\xD5 |0 \x70\xCE |0 \x70\xD8 |0 \x70\xD4 |0 \x55\x71 |0 \x55\x73 |0 \x70\xDD |0 \x70\xCD |0 \x70\xD0 |0 \x70\xD6 |0 \x70\xD7 |0 \x70\xDF |0 \x70\xD3 |0 \x55\x72 |0 \x57\xF1 |0 \x73\xF1 |0 \x73\xF3 |0 \x73\xEF |0 \x73\xFB |0 \x73\xED |0 \x73\xFA |0 \x57\xED |0 \x73\xEB |0 \x77\x82 |0 \x73\xF5 |0 \x57\xF0 |0 \x73\xF6 |0 \x73\xF9 |0 \x73\xFD |0 \x73\xF2 |0 \x73\xF7 |0 \x57\xEE |0 \x57\xEF |0 \x73\xFC |0 \x73\xF0 |0 \x73\xEC |0 \x74\x41 |0 \x73\xF4 |0 \x73\xF8 |0 \x73\xEE |0 \x5A\x6E |0 \x5A\x6F |0 \x77\x8C |0 \x5A\x75 |0 \x77\x7F |0 \x77\x89 |0 \x77\x7E |0 \x5A\x72 |0 \x77\x87 |0 \x77\x85 |0 \x77\x86 |0 \x5A\x70 |0 \x77\x8A |0 \x77\x83 |0 \x77\x81 |0 \x5A\x71 |0 \x77\x84 |0 \x77\x88 |0 \x5A\x73 |0 \x77\x8B |0 \x7A\xD7 |0 \x7A\xDE |0 \x7A\xE0 |0 \x7A\xE6 |0 \x5C\xA1 |0 \x7A\xD2 |0 \x5C\x99 |0 \x7A\xE1 |0 \x5C\x9E |0 \x7A\xE7 |0 \x5C\x95 |0 \x7A\xE4 |0 \x7A\xD4 |0 \x7A\xE5 |0 \x7A\xD3 |0 \x5C\xA3 |0 \x7A\xDF |0 \x5C\x96 |0 \x7A\xE8 |0 \x5C\x9B |0 \x7A\xD8 |0 \x5C\xA0 |0 \x7A\xE3 |0 \x7A\xD6 |0 \x7A\xDD |0 \x7A\xD9 |0 \x7A\xD5 |0 \x5C\x98 |0 \x5C\x9F |0 \x5C\x9D |0 \x5C\x9A |0 \x5C\xA2 |0 \x5C\x97 |0 \x7A\xDC |0 \x5C\x9C |0 \x5A\x74 |0 \x7A\xE2 |0 \x7A\xDA |0 \x7A\xDB |0 \x7E\x8A |0 \x5E\xDA |0 \x7E\x86 |0 \x7E\x8C |0 \x7E\x88 |0 \x5E\xDC |0 \x7E\x87 |0 \x7E\x8B |0 \x7E\x83 |0 \x7E\x85 |0 \x5E\xDB |0 \x7E\x89 |0 \x7E\x84 |0 \x5E\xDD |0 \x5E\xD8 |0 \x7E\x8D |0 \x5E\xD9 |0 \x81\x92 |0 \x81\x8F |0 \x81\x9B |0 \x81\x95 |0 \x81\x97 |0 \x60\xDC |0 \x81\x91 |0 \x81\x99 |0 \x81\x98 |0 \x81\x96 |0 \x81\x9C |0 \x60\xDF |0 \x81\x93 |0 \x81\x9A |0 \x60\xDD |0 \x81\x8E |0 \x81\x90 |0 \x60\xDE |0 \x81\x8D |0 \x81\x9D |0 \x81\x94 |0 \x84\xB5 |0 \x62\xBA |0 \x84\xC0 |0 \x84\xBE |0 \x62\xB4 |0 \x84\xB4 |0 \x84\xB7 |0 \x84\xB8 |0 \x84\xB3 |0 \x62\xBE |0 \x62\xBF |0 \x84\xB2 |0 \x84\xC1 |0 \x84\xBC |0 \x62\xB8 |0 \x62\xB5 |0 \x84\xBB |0 \x84\xB9 |0 \x62\xBB |0 \x84\xBD |0 \x62\xB6 |0 \x62\xB7 |0 \x84\xBA |0 \x62\xB9 |0 \x84\xB6 |0 \x84\xBF |0 \x62\xBC |0 \x84\xC2 |0 \x84\xC3 |0 \x62\xBD |0 \x64\x52 |0 \x64\x59 |0 \x87\x69 |0 \x87\x6F |0 \x87\x6D |0 \x64\x55 |0 \x64\x54 |0 \x64\x51 |0 \x87\x6B |0 \x64\x57 |0 \x64\x56 |0 \x64\x53 |0 \x87\x6E |0 \x87\x6A |0 \x87\x6C |0 \x64\x58 |0 \x65\x83 |0 \x89\xA9 |0 \x65\x7F |0 \x65\x81 |0 \x89\xAB |0 \x65\x82 |0 \x89\xA8 |0 \x89\xA7 |0 \x8B\x9B |0 \x89\xAA |0 \x8B\x9C |0 \x66\x66 |0 \x8B\x9A |0 \x8B\x99 |0 \x8B\x98 |0 \x66\x67 |0 \x66\xF6 |0 \x8D\x5A |0 \x8D\x5B |0 \x8E\x8C |0 \x8E\x8B |0 \x67\x96 |0 \x8E\x8A |0 \x8F\x7C |0 \x8F\x7D |0 \x90\x57 |0 \x90\xC0 |0 \x91\x48 |0 \x91\xAC |0 \x68\xC5 |0 \x91\xB6 |0 \x48\x97 |3 \x4C\xD6 |0 \x51\x88 |0 \x51\x89 |0 \x53\x5B |0 \x64\x5A |0 \x48\x98 |3 \x4C\xD7 |0 \x51\x8A |0 \x55\x76 |0 \x5C\xA4 |0 \x48\x99 |3 \x4C\xD8 |0 \x57\xF2 |0 \x5E\xDE |0 \x48\x9A |3 \x69\x63 |0 \x6E\x99 |0 \x70\xE0 |0 \x7E\x8E |0 \x64\x5B |0 \x48\x9B |3 \x4C\xD9 |0 \x51\x8B |0 \x6E\x9A |0 \x6E\x9B |0 \x77\x8D |0 \x5A\x76 |0 \x7A\xE9 |0 \x5C\xA5 |0 \x7E\x8F |0 \x60\xE0 |0 \x66\x68 |0 \x48\x9C |3 \x4C\xDA |0 \x77\x8E |0 \x48\x9D |3 \x4C\xDB |0 \x4E\x6A |0 \x69\xE1 |0 \x4E\x69 |0 \x4F\xA7 |0 \x4F\xA6 |0 \x4F\xA5 |0 \x6A\xE0 |0 \x51\x8C |0 \x51\x8D |0 \x6C\x9D |0 \x6E\x9C |0 \x6E\x9F |0 \x53\x5D |0 \x6E\x9D |0 \x53\x5C |0 \x6E\x9E |0 \x53\x5E |0 \x70\xE3 |0 \x70\xE2 |0 \x70\xE1 |0 \x55\x77 |0 \x74\x43 |0 \x74\x44 |0 \x57\xF3 |0 \x74\x42 |0 \x74\x45 |0 \x5A\x78 |0 \x57\xF4 |0 \x5A\x77 |0 \x77\x92 |0 \x77\x91 |0 \x77\x8F |0 \x77\x90 |0 \x77\x93 |0 \x7A\xEB |0 \x7A\xEA |0 \x7A\xEE |0 \x7A\xED |0 \x7A\xEC |0 \x5E\xDF |0 \x7E\x92 |0 \x7E\x91 |0 \x5E\xE0 |0 \x7E\x90 |0 \x81\x9E |0 \x81\x9F |0 \x60\xE1 |0 \x84\xC4 |0 \x84\xC5 |0 \x8B\xA1 |0 \x66\x69 |0 \x8B\xA0 |0 \x8B\x9F |0 \x8B\x9D |0 \x8B\x9E |0 \x67\x97 |0 \x8D\x5C |0 \x8F\x7E |0 \x91\x49 |0 \x48\x9E |3 \x4C\xDC |0 \x69\x85 |0 \x4D\x88 |0 \x69\x86 |0 \x69\xE2 |0 \x69\xE3 |0 \x6A\xE6 |0 \x6A\xE2 |0 \x6A\xE1 |0 \x51\x8E |0 \x6A\xE5 |0 \x4F\xA9 |0 \x6A\xE3 |0 \x4F\xA8 |0 \x6A\xE7 |0 \x6A\xE4 |0 \x6C\xA1 |0 \x6E\xA0 |0 \x6C\x9F |0 \x6C\xA6 |0 \x51\x8F |0 \x51\x92 |0 \x6C\xA7 |0 \x6C\xA3 |0 \x6C\xA4 |0 \x6C\x9E |0 \x51\x91 |0 \x6C\xA0 |0 \x51\x90 |0 \x6C\xA5 |0 \x6C\xA2 |0 \x6E\xA4 |0 \x53\x60 |0 \x53\x61 |0 \x6E\xA7 |0 \x6E\xA1 |0 \x6E\xA6 |0 \x6E\xA2 |0 \x53\x5F |0 \x6E\xA5 |0 \x6E\xA3 |0 \x70\xE9 |0 \x70\xE6 |0 \x70\xE8 |0 \x55\x7C |0 \x55\x7B |0 \x55\x79 |0 \x70\xE5 |0 \x70\xEA |0 \x55\x78 |0 \x55\x7A |0 \x70\xE7 |0 \x74\x4D |0 \x70\xE4 |0 \x70\xEB |0 \x74\x48 |0 \x74\x4C |0 \x74\x4B |0 \x77\x95 |0 \x77\xA0 |0 \x74\x4E |0 \x74\x49 |0 \x77\x94 |0 \x57\xF8 |0 \x57\xF7 |0 \x74\x47 |0 \x74\x4A |0 \x57\xF9 |0 \x57\xF6 |0 \x57\xF5 |0 \x74\x46 |0 \x74\x4F |0 \x77\x97 |0 \x77\x9E |0 \x5A\x7A |0 \x77\x9D |0 \x77\x9A |0 \x5A\x7C |0 \x77\x9C |0 \x77\x96 |0 \x77\x98 |0 \x77\x9B |0 \x77\x99 |0 \x5A\x7B |0 \x77\x9F |0 \x5A\x79 |0 \x5C\xA6 |0 \x7A\xF2 |0 \x7A\xF1 |0 \x7A\xEF |0 \x5C\xA9 |0 \x5C\xA8 |0 \x7A\xF3 |0 \x7A\xF0 |0 \x7E\x93 |0 \x5E\xE1 |0 \x5C\xA7 |0 \x7A\xF5 |0 \x7A\xF4 |0 \x7E\x96 |0 \x7E\x94 |0 \x60\xE2 |0 \x5E\xE2 |0 \x7E\x95 |0 \x81\xA1 |0 \x60\xE3 |0 \x81\xA0 |0 \x81\xA9 |0 \x81\xA8 |0 \x81\xA6 |0 \x81\xA5 |0 \x81\xA2 |0 \x81\xA3 |0 \x81\xA4 |0 \x81\xA7 |0 \x81\xAA |0 \x84\xCA |0 \x84\xC7 |0 \x84\xC8 |0 \x62\xC0 |0 \x84\xC6 |0 \x84\xCC |0 \x84\xCB |0 \x84\xC9 |0 \x87\x71 |0 \x87\x72 |0 \x64\x5C |0 \x64\x5D |0 \x87\x70 |0 \x65\x85 |0 \x89\xAC |0 \x65\x84 |0 \x66\x6A |0 \x66\x6B |0 \x66\xF7 |0 \x8D\x5E |0 \x8D\x5D |0 \x8E\x8D |0 \x8F\x7F |0 \x67\xE5 |0 \x90\x59 |0 \x90\x58 |0 \x90\x5A |0 \x48\x9F |3 \x4D\x89 |0 \x6E\xA8 |0 \x55\x7D |0 \x57\xFA |0 \x74\x50 |0 \x48\xA0 |3 \x4D\x8A |0 \x69\x87 |0 \x4C\xDD |0 \x69\xE4 |0 \x6A\xEC |0 \x6A\xEA |0 \x6A\xEB |0 \x6A\xE8 |0 \x4F\xAA |0 \x6A\xE9 |0 \x6C\xAF |0 \x51\x95 |0 \x6C\xAD |0 \x6C\xA9 |0 \x6C\xAC |0 \x6C\xA8 |0 \x51\x97 |0 \x6C\xAB |0 \x51\x94 |0 \x51\x93 |0 \x51\x96 |0 \x6C\xAE |0 \x6C\xAA |0 \x53\x65 |0 \x53\x68 |0 \x6E\xB0 |0 \x6E\xAF |0 \x6E\xAE |0 \x53\x62 |0 \x6E\xB7 |0 \x6E\xAD |0 \x53\x64 |0 \x70\xF0 |0 \x6E\xB4 |0 \x6E\xB2 |0 \x53\x67 |0 \x6E\xAA |0 \x6E\xB5 |0 \x6E\xAC |0 \x6E\xB6 |0 \x6E\xB3 |0 \x6E\xAB |0 \x53\x63 |0 \x6E\xB8 |0 \x6E\xA9 |0 \x53\x66 |0 \x70\xF5 |0 \x70\xEC |0 \x70\xF7 |0 \x70\xEF |0 \x70\xFA |0 \x70\xFB |0 \x70\xED |0 \x70\xF9 |0 \x70\xF6 |0 \x70\xF4 |0 \x70\xF8 |0 \x55\x84 |0 \x55\x82 |0 \x70\xF2 |0 \x70\xEE |0 \x70\xF1 |0 \x70\xFC |0 \x70\xF3 |0 \x55\x83 |0 \x6E\xB1 |0 \x55\x7E |0 \x55\x81 |0 \x74\x5E |0 \x74\x53 |0 \x74\x51 |0 \x74\x52 |0 \x74\x59 |0 \x74\x5A |0 \x74\x56 |0 \x58\x42 |0 \x74\x5B |0 \x74\x58 |0 \x74\x55 |0 \x57\xFD |0 \x74\x54 |0 \x57\xFB |0 \x58\x41 |0 \x74\x57 |0 \x74\x5F |0 \x55\x7F |0 \x57\xFC |0 \x74\x5D |0 \x74\x5C |0 \x58\x43 |0 \x77\xA5 |0 \x77\xA6 |0 \x5A\x87 |0 \x77\xAC |0 \x77\xAE |0 \x77\xA7 |0 \x5A\x81 |0 \x77\xAB |0 \x77\xAA |0 \x5A\x82 |0 \x5A\x88 |0 \x5A\x89 |0 \x77\xAD |0 \x5A\x7E |0 \x77\xA4 |0 \x77\xA2 |0 \x77\xA8 |0 \x77\xA1 |0 \x5A\x86 |0 \x77\xA3 |0 \x77\xA9 |0 \x77\xAF |0 \x5A\x7F |0 \x5A\x85 |0 \x5A\x83 |0 \x5A\x84 |0 \x5A\x7D |0 \x5C\xB0 |0 \x7A\xFC |0 \x5C\xAF |0 \x7B\x43 |0 \x7A\xF6 |0 \x7B\x44 |0 \x7A\xF7 |0 \x7A\xF8 |0 \x7B\x45 |0 \x7B\x42 |0 \x7A\xFD |0 \x7B\x41 |0 \x7A\xFA |0 \x7A\xF9 |0 \x7B\x46 |0 \x5C\xAC |0 \x7A\xFB |0 \x5C\xB1 |0 \x5C\xAB |0 \x5C\xB2 |0 \x5C\xB3 |0 \x5C\xAE |0 \x5C\xAD |0 \x7E\x97 |0 \x5E\xE4 |0 \x5E\xE3 |0 \x7E\x9C |0 \x60\xE4 |0 \x5E\xE5 |0 \x5E\xE7 |0 \x7E\x9D |0 \x5C\xAA |0 \x5E\xE6 |0 \x7E\x99 |0 \x7E\x9B |0 \x7E\x98 |0 \x7E\x9A |0 \x81\xB4 |0 \x81\xB3 |0 \x81\xB0 |0 \x60\xE7 |0 \x84\xCD |0 \x60\xE8 |0 \x81\xAF |0 \x60\xE6 |0 \x81\xB1 |0 \x81\xAE |0 \x81\xAB |0 \x81\xB2 |0 \x81\xAC |0 \x81\xAD |0 \x60\xE5 |0 \x87\x76 |0 \x84\xD1 |0 \x84\xD0 |0 \x84\xD2 |0 \x87\x73 |0 \x62\xC3 |0 \x84\xCE |0 \x62\xC1 |0 \x62\xC5 |0 \x62\xC4 |0 \x84\xCF |0 \x84\xD3 |0 \x62\xC2 |0 \x87\x7A |0 \x64\x60 |0 \x65\x86 |0 \x64\x61 |0 \x64\x5E |0 \x87\x77 |0 \x87\x75 |0 \x87\x78 |0 \x87\x7B |0 \x64\x5F |0 \x87\x79 |0 \x87\x74 |0 \x89\xAF |0 \x89\xB2 |0 \x8B\xA4 |0 \x89\xAD |0 \x8D\x5F |0 \x89\xB3 |0 \x66\x6C |0 \x89\xB1 |0 \x65\x87 |0 \x89\xAE |0 \x89\xB0 |0 \x89\xB4 |0 \x8B\xA5 |0 \x8B\xA3 |0 \x66\x6D |0 \x8B\xA2 |0 \x66\xF8 |0 \x67\x99 |0 \x8F\x82 |0 \x67\x98 |0 \x8F\x84 |0 \x8F\x81 |0 \x8F\x83 |0 \x68\x5C |0 \x90\xC1 |0 \x48\xA1 |3 \x4D\x8B |0 \x6C\xB0 |0 \x70\xFD |0 \x71\x41 |0 \x58\x44 |0 \x7B\x47 |0 \x62\xC6 |0 \x66\x6E |0 \x67\xE6 |0 \x90\xC2 |0 \x48\xA2 |3 \x4D\x8C |0 \x6C\xB1 |0 \x46\xF8 |0 \x6E\xB9 |0 \x6E\xBA |0 \x71\x42 |0 \x71\x43 |0 \x58\x45 |0 \x58\x46 |0 \x77\xB0 |0 \x7B\x4A |0 \x7B\x49 |0 \x7B\x48 |0 \x7E\x9E |0 \x7E\x9F |0 \x7E\xA0 |0 \x5E\xE8 |0 \x81\xB6 |0 \x81\xB5 |0 \x84\xD4 |0 \x62\xC7 |0 \x62\xC8 |0 \x87\x7F |0 \x87\x7C |0 \x87\x7D |0 \x87\x7E |0 \x89\xB6 |0 \x89\xB5 |0 \x65\x88 |0 \x8B\xA6 |0 \x8E\x8E |0 \x48\xA3 |3 \x4D\x8D |0 \x53\x69 |0 \x58\x47 |0 \x7B\x4B |0 \x48\xA4 |3 \x4D\x8E |0 \x71\x44 |0 \x58\x48 |0 \x5A\x8A |0 \x5A\x8B |0 \x48\xA5 |3 \x4D\x8F |0 \x4D\x90 |0 \x69\xE5 |0 \x4F\xAC |0 \x4F\xAB |0 \x53\x6A |0 \x6E\xBB |0 \x77\xB1 |0 \x48\xA6 |3 \x4D\x91 |0 \x4D\x92 |0 \x4D\x93 |0 \x4D\x94 |0 \x4F\xAD |0 \x4F\xAE |0 \x6A\xEE |0 \x6A\xED |0 \x51\x98 |0 \x6C\xB4 |0 \x6C\xB2 |0 \x6C\xB3 |0 \x6E\xBC |0 \x6E\xBD |0 \x53\x6E |0 \x53\x6C |0 \x53\x6D |0 \x53\x6B |0 \x55\x85 |0 \x55\x89 |0 \x55\x88 |0 \x71\x45 |0 \x55\x87 |0 \x55\x86 |0 \x71\x46 |0 \x58\x4B |0 \x74\x61 |0 \x74\x60 |0 \x58\x49 |0 \x58\x4A |0 \x5A\x8D |0 \x5A\x8C |0 \x77\xB3 |0 \x77\xB2 |0 \x58\x4C |0 \x5C\xB4 |0 \x7B\x4D |0 \x5C\xB5 |0 \x7B\x4C |0 \x7E\xA1 |0 \x81\xB7 |0 \x60\xE9 |0 \x84\xD5 |0 \x87\x81 |0 \x66\x70 |0 \x66\x6F |0 \x67\xE7 |0 \x48\xA7 |3 \x4D\x95 |0 \x6C\xB5 |0 \x58\x4D |0 \x7E\xA2 |0 \x5E\xE9 |0 \x48\xA8 |0 \x6A\xEF |0 \x6A\xF0 |0 \x6C\xB6 |0 \x51\x9A |0 \x51\x9B |0 \x51\x99 |0 \x53\x72 |0 \x53\x73 |0 \x53\x70 |0 \x53\x71 |0 \x6E\xBE |0 \x6E\xBF |0 \x53\x6F |0 \x71\x47 |0 \x55\x8D |0 \x55\x8E |0 \x58\x50 |0 \x71\x4D |0 \x55\x93 |0 \x55\x91 |0 \x71\x4E |0 \x71\x49 |0 \x55\x90 |0 \x55\x8F |0 \x55\x8A |0 \x71\x4C |0 \x71\x4B |0 \x71\x48 |0 \x55\x92 |0 \x71\x4A |0 \x55\x8B |0 \x55\x8C |0 \x58\x51 |0 \x74\x65 |0 \x74\x66 |0 \x58\x52 |0 \x74\x62 |0 \x74\x64 |0 \x74\x68 |0 \x74\x67 |0 \x74\x63 |0 \x58\x4E |0 \x58\x4F |0 \x77\xBB |0 \x5A\x92 |0 \x5A\x91 |0 \x77\xB5 |0 \x5A\x8F |0 \x77\xB8 |0 \x5A\x93 |0 \x77\xB9 |0 \x5A\x94 |0 \x77\xB6 |0 \x5A\x8E |0 \x5A\x90 |0 \x77\xBA |0 \x77\xB7 |0 \x77\xB4 |0 \x7B\x5A |0 \x7B\x4F |0 \x5C\xB7 |0 \x5C\xBA |0 \x5C\xB9 |0 \x5C\xBE |0 \x5C\xBD |0 \x7B\x5B |0 \x7B\x59 |0 \x7B\x52 |0 \x7B\x56 |0 \x7B\x55 |0 \x5C\xBB |0 \x7B\x58 |0 \x7B\x54 |0 \x7B\x5C |0 \x7B\x53 |0 \x5C\xBC |0 \x5C\xB6 |0 \x5C\xB8 |0 \x7B\x51 |0 \x7E\xA4 |0 \x5E\xED |0 \x7E\xA8 |0 \x5E\xEC |0 \x7E\xA5 |0 \x5E\xEB |0 \x7B\x50 |0 \x7B\x57 |0 \x7E\xA7 |0 \x5E\xEE |0 \x7E\xA9 |0 \x7E\xA6 |0 \x7E\xA3 |0 \x81\xBA |0 \x81\xBE |0 \x81\xC0 |0 \x81\xBC |0 \x81\xBB |0 \x81\xB9 |0 \x60\xEC |0 \x60\xEA |0 \x60\xEF |0 \x60\xF0 |0 \x81\xBD |0 \x60\xED |0 \x81\xB8 |0 \x60\xEE |0 \x5E\xEA |0 \x81\xBF |0 \x60\xEB |0 \x84\xD7 |0 \x84\xD6 |0 \x84\xDE |0 \x84\xD8 |0 \x84\xDD |0 \x84\xDA |0 \x62\xC9 |0 \x84\xDC |0 \x62\xCA |0 \x62\xCB |0 \x84\xDB |0 \x84\xD9 |0 \x64\x63 |0 \x87\x82 |0 \x64\x62 |0 \x87\x85 |0 \x87\x83 |0 \x87\x84 |0 \x64\x64 |0 \x89\xBA |0 \x65\x8B |0 \x89\xBB |0 \x65\x89 |0 \x89\xBC |0 \x65\x8A |0 \x89\xB9 |0 \x89\xBD |0 \x89\xB7 |0 \x66\x71 |0 \x8B\xA7 |0 \x66\x72 |0 \x66\xF9 |0 \x89\xB8 |0 \x66\xFA |0 \x67\x9A |0 \x8E\x8F |0 \x67\xE9 |0 \x8F\x85 |0 \x67\xE8 |0 \x90\x5B |0 \x68\x82 |0 \x68\x83 |0 \x91\xBC |0 \x48\xA9 |0 \x53\x74 |0 \x6E\xC0 |0 \x5A\x95 |0 \x5A\x96 |0 \x48\xAA |3 \x4D\x96 |0 \x4E\x6B |0 \x69\xE6 |0 \x6A\xF1 |0 \x4F\xAF |0 \x51\x9C |0 \x53\x75 |0 \x53\x76 |0 \x53\x77 |0 \x74\x6A |0 \x71\x4F |0 \x55\x94 |0 \x58\x53 |0 \x74\x69 |0 \x77\xBD |0 \x5A\x98 |0 \x77\xBC |0 \x5A\x97 |0 \x7B\x5D |0 \x60\xF1 |0 \x81\xC4 |0 \x81\xC1 |0 \x81\xC2 |0 \x81\xC3 |0 \x87\x86 |0 \x89\xBE |0 \x8D\x61 |0 \x8D\x60 |0 \x8F\x86 |0 \x48\xAB |3 \x4D\x97 |0 \x6C\xB7 |0 \x55\x95 |0 \x5A\x99 |0 \x7B\x5E |0 \x7E\xAA |0 \x60\xF2 |0 \x84\xDF |0 \x89\xBF |0 \x8D\x62 |0 \x48\xAC |3 \x4D\x98 |0 \x51\x9D |0 \x53\x7A |0 \x6E\xC1 |0 \x53\x7B |0 \x53\x79 |0 \x53\x78 |0 \x71\x50 |0 \x55\x96 |0 \x55\x97 |0 \x55\x98 |0 \x58\x55 |0 \x74\x6B |0 \x58\x54 |0 \x77\xBE |0 \x58\x56 |0 \x5A\x9A |0 \x7B\x5F |0 \x5C\xBF |0 \x5C\xC0 |0 \x5E\xEF |0 \x5E\xF0 |0 \x60\xF3 |0 \x62\xCD |0 \x84\xE0 |0 \x62\xCC |0 \x87\x87 |0 \x64\x65 |0 \x89\xC0 |0 \x8D\x63 |0 \x48\xAD |3 \x4D\x99 |0 \x4F\xB0 |0 \x6C\xBA |0 \x6C\xB9 |0 \x51\x9E |0 \x6C\xB8 |0 \x51\x9F |0 \x6C\xBB |0 \x6E\xC7 |0 \x53\x7E |0 \x53\x7D |0 \x6E\xC9 |0 \x6E\xC8 |0 \x53\x83 |0 \x53\x82 |0 \x53\x7C |0 \x6E\xC3 |0 \x6E\xC4 |0 \x6E\xC5 |0 \x53\x84 |0 \x6E\xC2 |0 \x53\x7F |0 \x6E\xC6 |0 \x53\x81 |0 \x71\x53 |0 \x71\x57 |0 \x71\x55 |0 \x71\x54 |0 \x71\x58 |0 \x71\x59 |0 \x71\x5A |0 \x71\x52 |0 \x71\x51 |0 \x55\x9A |0 \x55\x9B |0 \x71\x5B |0 \x71\x56 |0 \x74\x74 |0 \x71\x5C |0 \x55\x9C |0 \x55\x99 |0 \x74\x6E |0 \x74\x6D |0 \x74\x6F |0 \x74\x70 |0 \x74\x72 |0 \x74\x71 |0 \x74\x76 |0 \x58\x5A |0 \x58\x57 |0 \x58\x5B |0 \x74\x6C |0 \x58\x5C |0 \x74\x75 |0 \x58\x59 |0 \x74\x73 |0 \x58\x58 |0 \x77\xC1 |0 \x77\xC3 |0 \x77\xBF |0 \x77\xC0 |0 \x77\xC4 |0 \x77\xC6 |0 \x77\xC7 |0 \x77\xC2 |0 \x77\xC5 |0 \x5A\x9B |0 \x7B\x63 |0 \x7B\x68 |0 \x7B\x60 |0 \x7B\x64 |0 \x7B\x69 |0 \x7B\x65 |0 \x5C\xC1 |0 \x5C\xC9 |0 \x5C\xC4 |0 \x7B\x61 |0 \x7B\x62 |0 \x5E\xF4 |0 \x5C\xCC |0 \x5C\xC5 |0 \x5C\xCA |0 \x5C\xC3 |0 \x7B\x67 |0 \x5C\xCB |0 \x7B\x66 |0 \x5C\xC7 |0 \x5C\xC2 |0 \x5C\xC8 |0 \x7B\x6A |0 \x7E\xAF |0 \x7E\xB1 |0 \x5C\xC6 |0 \x7E\xAC |0 \x5E\xF2 |0 \x7E\xB2 |0 \x5E\xF3 |0 \x7E\xB0 |0 \x7E\xAB |0 \x7E\xAE |0 \x7E\xB3 |0 \x5E\xF1 |0 \x7E\xAD |0 \x60\xF5 |0 \x81\xC8 |0 \x81\xC7 |0 \x60\xF8 |0 \x60\xF6 |0 \x81\xC5 |0 \x60\xF4 |0 \x81\xC6 |0 \x60\xF7 |0 \x84\xE8 |0 \x84\xEA |0 \x84\xE9 |0 \x84\xE1 |0 \x84\xE5 |0 \x84\xE4 |0 \x84\xE2 |0 \x62\xCF |0 \x62\xD0 |0 \x62\xCE |0 \x84\xE3 |0 \x84\xE6 |0 \x84\xE7 |0 \x62\xD1 |0 \x64\x6A |0 \x87\x8F |0 \x64\x67 |0 \x87\x89 |0 \x64\x69 |0 \x64\x6B |0 \x64\x68 |0 \x87\x8E |0 \x87\x8A |0 \x64\x66 |0 \x87\x8D |0 \x87\x88 |0 \x87\x8C |0 \x87\x8B |0 \x89\xC2 |0 \x65\x8E |0 \x65\x8F |0 \x65\x8C |0 \x65\x8D |0 \x89\xC1 |0 \x8B\xAA |0 \x66\x73 |0 \x8B\xA8 |0 \x8B\xA9 |0 \x8D\x64 |0 \x8D\x67 |0 \x8D\x65 |0 \x8D\x66 |0 \x8E\x90 |0 \x67\x9B |0 \x90\x5C |0 \x90\xC3 |0 \x68\x84 |0 \x91\x4A |0 \x91\x4B |0 \x68\xB2 |0 \x48\xAE |3 \x4D\x9A |0 \x53\x85 |0 \x77\xC8 |0 \x7B\x6B |0 \x48\xAF |3 \x4D\x9B |0 \x4F\xB1 |0 \x51\xA0 |0 \x6E\xCA |0 \x6E\xCB |0 \x55\x9D |0 \x77\xC9 |0 \x5A\x9C |0 \x5C\xCD |0 \x64\x6C |0 \x87\x90 |0 \x8B\xAB |0 \x8D\x68 |0 \x48\xB0 |3 \x4D\x9C |0 \x6C\xC1 |0 \x6C\xBC |0 \x6C\xBE |0 \x6C\xC0 |0 \x6C\xBF |0 \x6C\xBD |0 \x51\xA1 |0 \x53\x86 |0 \x6E\xD4 |0 \x6E\xCF |0 \x6E\xCC |0 \x6E\xD3 |0 \x53\x88 |0 \x53\x89 |0 \x6E\xD2 |0 \x6E\xD1 |0 \x6E\xD0 |0 \x6E\xCD |0 \x6E\xCE |0 \x6E\xD5 |0 \x53\x87 |0 \x55\xA1 |0 \x55\xA7 |0 \x55\xA6 |0 \x71\x65 |0 \x71\x5F |0 \x71\x5D |0 \x55\xA4 |0 \x74\x7D |0 \x55\x9F |0 \x71\x62 |0 \x71\x66 |0 \x71\x68 |0 \x71\x64 |0 \x71\x5E |0 \x55\xA5 |0 \x71\x63 |0 \x71\x61 |0 \x55\x9E |0 \x71\x69 |0 \x55\xA8 |0 \x71\x67 |0 \x55\xA2 |0 \x71\x60 |0 \x55\xA3 |0 \x55\xA0 |0 \x58\x5E |0 \x74\x7E |0 \x74\x77 |0 \x74\x79 |0 \x74\x7B |0 \x74\x7C |0 \x74\x7A |0 \x58\x5F |0 \x74\x7F |0 \x74\x78 |0 \x77\xCD |0 \x5A\x9D |0 \x77\xD5 |0 \x77\xCA |0 \x77\xD6 |0 \x77\xCB |0 \x77\xCC |0 \x77\xD4 |0 \x77\xD3 |0 \x77\xD0 |0 \x58\x5D |0 \x5A\x9E |0 \x77\xCE |0 \x77\xD1 |0 \x5A\x9F |0 \x77\xD2 |0 \x77\xCF |0 \x7B\x76 |0 \x7B\x7A |0 \x5C\xD4 |0 \x7E\xB9 |0 \x5C\xD7 |0 \x7B\x78 |0 \x7B\x75 |0 \x7B\x70 |0 \x7B\x72 |0 \x7B\x73 |0 \x7B\x6C |0 \x5C\xD3 |0 \x5C\xD2 |0 \x5C\xCE |0 \x7B\x6F |0 \x5C\xD5 |0 \x5C\xD6 |0 \x7B\x6E |0 \x7B\x71 |0 \x7B\x79 |0 \x5C\xD0 |0 \x5C\xD1 |0 \x7B\x77 |0 \x7B\x6D |0 \x7E\xBB |0 \x5E\xF6 |0 \x7E\xBD |0 \x7B\x74 |0 \x7E\xBF |0 \x5E\xFA |0 \x7E\xC0 |0 \x7E\xBC |0 \x5E\xF7 |0 \x7E\xB8 |0 \x5E\xF9 |0 \x7E\xB5 |0 \x7E\xBA |0 \x7E\xBE |0 \x7E\xB7 |0 \x5C\xCF |0 \x7E\xB4 |0 \x5E\xF8 |0 \x7E\xB6 |0 \x60\xFB |0 \x81\xCA |0 \x61\x42 |0 \x60\xFD |0 \x5E\xF5 |0 \x81\xD1 |0 \x81\xD2 |0 \x60\xFA |0 \x81\xD0 |0 \x81\xD3 |0 \x60\xFC |0 \x60\xF9 |0 \x81\xCC |0 \x81\xC9 |0 \x81\xCE |0 \x81\xCB |0 \x61\x43 |0 \x81\xCD |0 \x81\xCF |0 \x61\x41 |0 \x62\xD3 |0 \x84\xF1 |0 \x84\xEB |0 \x84\xEF |0 \x84\xF5 |0 \x84\xF6 |0 \x84\xF2 |0 \x84\xF3 |0 \x84\xF0 |0 \x84\xED |0 \x62\xD5 |0 \x62\xD2 |0 \x84\xEC |0 \x84\xEE |0 \x62\xD4 |0 \x84\xF4 |0 \x64\x70 |0 \x87\x96 |0 \x87\x91 |0 \x64\x6F |0 \x64\x6D |0 \x87\x98 |0 \x64\x6E |0 \x87\x94 |0 \x87\x95 |0 \x87\x92 |0 \x87\x99 |0 \x89\xC3 |0 \x64\x71 |0 \x87\x93 |0 \x87\x9A |0 \x87\x97 |0 \x89\xC7 |0 \x89\xC4 |0 \x65\x90 |0 \x89\xC8 |0 \x89\xCA |0 \x89\xC9 |0 \x89\xC5 |0 \x89\xC6 |0 \x8B\xB0 |0 \x66\x74 |0 \x8B\xAD |0 \x8B\xAF |0 \x8B\xAC |0 \x8B\xB1 |0 \x8B\xAE |0 \x8D\x6A |0 \x8D\x6D |0 \x8D\x69 |0 \x66\xFB |0 \x8D\x6B |0 \x8D\x6C |0 \x8D\x6E |0 \x66\xFC |0 \x67\x41 |0 \x66\xFD |0 \x8E\x91 |0 \x8E\x93 |0 \x8E\x92 |0 \x8F\x87 |0 \x90\xC4 |0 \x91\x4C |0 \x48\xB1 |3 \x4D\x9D |0 \x6A\xF2 |0 \x51\xA2 |0 \x6C\xC3 |0 \x51\xA3 |0 \x51\xA4 |0 \x6C\xC2 |0 \x6E\xDA |0 \x6E\xD9 |0 \x53\x8A |0 \x53\x8D |0 \x53\x8C |0 \x53\x8B |0 \x6E\xD6 |0 \x6E\xD8 |0 \x6E\xD7 |0 \x71\x6C |0 \x55\xAA |0 \x71\x70 |0 \x71\x6F |0 \x71\x6E |0 \x71\x6A |0 \x55\xA9 |0 \x55\xAD |0 \x55\xB0 |0 \x55\xB1 |0 \x71\x6B |0 \x71\x6D |0 \x55\xAF |0 \x55\xAE |0 \x55\xAC |0 \x55\xAB |0 \x74\x87 |0 \x74\x85 |0 \x74\x81 |0 \x58\x60 |0 \x74\x82 |0 \x58\x61 |0 \x74\x83 |0 \x74\x84 |0 \x74\x86 |0 \x58\x62 |0 \x77\xDA |0 \x77\xD9 |0 \x77\xD8 |0 \x77\xD7 |0 \x7B\x7E |0 \x5C\xD8 |0 \x7B\x7B |0 \x7B\x7D |0 \x5C\xD9 |0 \x5C\xDA |0 \x7B\x7C |0 \x7E\xC9 |0 \x7E\xC2 |0 \x7E\xC3 |0 \x5E\xFD |0 \x5E\xFB |0 \x5E\xFC |0 \x7E\xCB |0 \x7E\xCA |0 \x7E\xC7 |0 \x7E\xC6 |0 \x7E\xC5 |0 \x7E\xC4 |0 \x7E\xC8 |0 \x7E\xC1 |0 \x81\xD4 |0 \x81\xD9 |0 \x81\xD7 |0 \x81\xD6 |0 \x81\xD5 |0 \x81\xD8 |0 \x84\xF7 |0 \x62\xD6 |0 \x64\x72 |0 \x87\x9C |0 \x64\x73 |0 \x87\x9B |0 \x89\xCC |0 \x89\xCB |0 \x65\x91 |0 \x8B\xB2 |0 \x66\x75 |0 \x8D\x6F |0 \x67\xEA |0 \x8F\x88 |0 \x90\xC6 |0 \x90\xC5 |0 \x48\xB2 |3 \x69\x88 |0 \x53\x8E |0 \x53\x8F |0 \x74\x88 |0 \x5C\xDC |0 \x48\xB3 |3 \x4D\x9E |0 \x4F\xB4 |0 \x4F\xB3 |0 \x4F\xB2 |0 \x6C\xC4 |0 \x51\xA6 |0 \x51\xA5 |0 \x53\x92 |0 \x6E\xDC |0 \x6E\xDF |0 \x6E\xDD |0 \x53\x90 |0 \x53\x91 |0 \x6E\xDB |0 \x6E\xDE |0 \x55\xB8 |0 \x71\x77 |0 \x71\x79 |0 \x71\x78 |0 \x55\xB5 |0 \x71\x73 |0 \x55\xB3 |0 \x55\xB2 |0 \x55\xB6 |0 \x55\xB4 |0 \x55\xB7 |0 \x71\x76 |0 \x71\x71 |0 \x71\x72 |0 \x71\x75 |0 \x71\x74 |0 \x74\x8B |0 \x74\x8C |0 \x74\x8A |0 \x74\x89 |0 \x58\x63 |0 \x5A\xA4 |0 \x77\xDB |0 \x77\xDD |0 \x77\xDF |0 \x5A\xA3 |0 \x5A\xA1 |0 \x77\xDC |0 \x5A\xA2 |0 \x77\xDE |0 \x5A\xA0 |0 \x7B\x89 |0 \x7B\x7F |0 \x7B\x83 |0 \x7B\x87 |0 \x5C\xE0 |0 \x7B\x85 |0 \x7B\x84 |0 \x7B\x81 |0 \x7B\x82 |0 \x5C\xDE |0 \x7B\x88 |0 \x5C\xDD |0 \x5C\xE2 |0 \x5C\xE1 |0 \x5C\xDF |0 \x7B\x86 |0 \x7E\xD1 |0 \x7E\xD0 |0 \x7E\xCC |0 \x5F\x41 |0 \x7E\xCF |0 \x7E\xCE |0 \x5F\x42 |0 \x61\x48 |0 \x81\xDB |0 \x61\x49 |0 \x61\x45 |0 \x61\x47 |0 \x61\x44 |0 \x61\x46 |0 \x84\xF8 |0 \x62\xD9 |0 \x84\xFA |0 \x84\xF9 |0 \x7E\xCD |0 \x62\xDB |0 \x62\xDA |0 \x62\xD7 |0 \x62\xD8 |0 \x87\xA1 |0 \x87\x9F |0 \x64\x74 |0 \x87\xA0 |0 \x87\xA2 |0 \x87\x9E |0 \x87\x9D |0 \x89\xCD |0 \x65\x94 |0 \x65\x92 |0 \x65\x93 |0 \x8B\xB3 |0 \x8B\xB4 |0 \x66\x77 |0 \x66\x76 |0 \x8D\x71 |0 \x8D\x72 |0 \x8D\x70 |0 \x8F\x89 |0 \x8F\x8A |0 \x48\xB4 |3 \x4D\x9F |0 \x69\xE7 |0 \x4F\xB5 |0 \x6C\xC5 |0 \x51\xA8 |0 \x51\xA7 |0 \x6C\xC6 |0 \x6E\xE1 |0 \x53\x93 |0 \x6E\xE0 |0 \x53\x94 |0 \x55\xB9 |0 \x71\x7C |0 \x71\x7A |0 \x71\x81 |0 \x55\xBA |0 \x71\x7B |0 \x71\x7F |0 \x71\x7D |0 \x71\x7E |0 \x74\x8D |0 \x74\x8F |0 \x58\x64 |0 \x74\x8E |0 \x58\x65 |0 \x5A\xA7 |0 \x5A\xA6 |0 \x5A\xA5 |0 \x77\xE0 |0 \x7B\x8C |0 \x5C\xE3 |0 \x5C\xE4 |0 \x7B\x8B |0 \x7B\x8A |0 \x7E\xD2 |0 \x5F\x44 |0 \x5F\x43 |0 \x7E\xD3 |0 \x7E\xD4 |0 \x61\x4B |0 \x61\x4A |0 \x85\x41 |0 \x81\xDC |0 \x81\xDE |0 \x81\xDD |0 \x84\xFD |0 \x84\xFB |0 \x85\x42 |0 \x84\xFC |0 \x62\xDC |0 \x87\xA3 |0 \x64\x75 |0 \x87\xA4 |0 \x87\xA5 |0 \x65\x95 |0 \x65\x96 |0 \x67\x42 |0 \x68\x5D |0 \x48\xB5 |3 \x4D\xA0 |0 \x6E\xE2 |0 \x71\x82 |0 \x55\xBB |0 \x58\xFD |0 \x58\xFC |0 \x5A\xA9 |0 \x77\xE2 |0 \x5A\xA8 |0 \x77\xE1 |0 \x7B\x8D |0 \x5F\x45 |0 \x7E\xD5 |0 \x5F\x46 |0 \x67\x43 |0 \x8D\x73 |0 \x48\xB6 |3 \x4E\x6C |0 \x51\xA9 |0 \x6C\xC7 |0 \x53\x96 |0 \x53\x95 |0 \x6E\xE3 |0 \x6E\xE4 |0 \x71\x84 |0 \x71\x86 |0 \x55\xBC |0 \x71\x88 |0 \x71\x8B |0 \x71\x89 |0 \x71\x8A |0 \x71\x87 |0 \x71\x83 |0 \x55\xBD |0 \x71\x8C |0 \x71\x85 |0 \x74\x98 |0 \x58\x6B |0 \x74\xA1 |0 \x58\x68 |0 \x74\x9A |0 \x58\x6C |0 \x58\x66 |0 \x74\x95 |0 \x74\xA2 |0 \x74\x96 |0 \x74\x93 |0 \x58\x6A |0 \x58\x67 |0 \x74\x99 |0 \x74\x9C |0 \x58\x69 |0 \x74\x9D |0 \x58\x6D |0 \x74\x9E |0 \x74\x94 |0 \x74\x9B |0 \x74\x9F |0 \x74\x97 |0 \x74\x92 |0 \x74\x90 |0 \x74\xA0 |0 \x77\xE4 |0 \x77\xE9 |0 \x77\xE5 |0 \x77\xEB |0 \x5A\xAC |0 \x74\x91 |0 \x77\xE6 |0 \x5A\xAA |0 \x77\xE3 |0 \x5A\xB1 |0 \x77\xE7 |0 \x5A\xB0 |0 \x77\xE8 |0 \x5A\xB2 |0 \x5A\xAD |0 \x5A\xB3 |0 \x5A\xAE |0 \x5A\xAF |0 \x5A\xAB |0 \x77\xEA |0 \x5C\xE7 |0 \x7B\x98 |0 \x7B\x9B |0 \x7B\x8F |0 \x7B\x94 |0 \x7B\x8E |0 \x5C\xE9 |0 \x7B\x92 |0 \x7B\x90 |0 \x5C\xE8 |0 \x7B\x97 |0 \x7B\x96 |0 \x7B\x93 |0 \x7B\x95 |0 \x7B\x91 |0 \x5F\x4A |0 \x7B\x9A |0 \x5C\xE5 |0 \x7B\x99 |0 \x7E\xE5 |0 \x5F\x51 |0 \x7E\xE0 |0 \x5F\x50 |0 \x7E\xD6 |0 \x7E\xD8 |0 \x5F\x49 |0 \x7E\xDD |0 \x7E\xDC |0 \x7E\xDF |0 \x5F\x4E |0 \x7E\xDA |0 \x7E\xD9 |0 \x5F\x4D |0 \x5F\x48 |0 \x7E\xDB |0 \x5F\x4B |0 \x7E\xE1 |0 \x7E\xE3 |0 \x7E\xDE |0 \x7E\xD7 |0 \x5F\x4C |0 \x61\x53 |0 \x5F\x47 |0 \x7E\xE4 |0 \x81\xE2 |0 \x61\x4C |0 \x81\xE4 |0 \x61\x4D |0 \x61\x4F |0 \x81\xE7 |0 \x81\xDF |0 \x5F\x4F |0 \x81\xE5 |0 \x81\xE1 |0 \x5C\xE6 |0 \x61\x52 |0 \x61\x4E |0 \x61\x50 |0 \x61\x51 |0 \x62\xDF |0 \x81\xE6 |0 \x81\xE0 |0 \x61\x54 |0 \x81\xE3 |0 \x85\x4C |0 \x85\x47 |0 \x85\x51 |0 \x62\xDD |0 \x85\x49 |0 \x62\xE1 |0 \x85\x4F |0 \x85\x46 |0 \x85\x43 |0 \x85\x52 |0 \x64\x7B |0 \x62\xE2 |0 \x85\x4E |0 \x85\x44 |0 \x62\xE0 |0 \x85\x48 |0 \x62\xE4 |0 \x85\x45 |0 \x85\x4A |0 \x62\xE3 |0 \x85\x4D |0 \x85\x50 |0 \x87\xB7 |0 \x87\xB8 |0 \x87\xA8 |0 \x87\xAF |0 \x87\xAD |0 \x64\x79 |0 \x87\xB4 |0 \x85\x4B |0 \x87\xAB |0 \x87\xB5 |0 \x64\x78 |0 \x87\xAA |0 \x87\xA9 |0 \x87\xB3 |0 \x87\xB0 |0 \x87\xB2 |0 \x87\xA6 |0 \x87\xB6 |0 \x64\x76 |0 \x87\xB1 |0 \x87\xBA |0 \x87\xAE |0 \x64\x7A |0 \x64\x77 |0 \x87\xAC |0 \x87\xA7 |0 \x87\xB9 |0 \x62\xDE |0 \x89\xD0 |0 \x89\xCE |0 \x89\xD4 |0 \x65\x9A |0 \x89\xD2 |0 \x89\xD1 |0 \x65\x9C |0 \x89\xD7 |0 \x65\x9B |0 \x89\xD8 |0 \x89\xD5 |0 \x65\x98 |0 \x89\xD6 |0 \x89\xCF |0 \x65\x99 |0 \x65\x97 |0 \x8B\xB8 |0 \x89\xD3 |0 \x89\xD9 |0 \x8B\xB5 |0 \x66\x7C |0 \x66\x7A |0 \x8B\xB7 |0 \x8B\xB9 |0 \x8B\xB6 |0 \x66\x7B |0 \x66\x78 |0 \x66\x79 |0 \x66\x7D |0 \x67\x45 |0 \x8D\x78 |0 \x8D\x77 |0 \x8D\x75 |0 \x8D\x74 |0 \x8D\x76 |0 \x67\x44 |0 \x67\x46 |0 \x67\x9C |0 \x8E\x95 |0 \x8E\x94 |0 \x8F\x8B |0 \x8F\x8D |0 \x8F\x8F |0 \x8F\x8E |0 \x8F\x8C |0 \x67\xEC |0 \x67\xEB |0 \x68\x5F |0 \x68\x5E |0 \x68\x60 |0 \x90\x5E |0 \x90\x5D |0 \x91\x4D |0 \x90\xC7 |0 \x91\x4E |0 \x68\xA4 |0 \x68\xA5 |0 \x91\x7E |0 \x68\xCA |0 \x48\xB7 |3 \x4E\x6D |0 \x6C\xC8 |0 \x6E\xE6 |0 \x6E\xE7 |0 \x6E\xE5 |0 \x53\x97 |0 \x6E\xE8 |0 \x6E\xE9 |0 \x6E\xEA |0 \x71\x8D |0 \x71\x93 |0 \x71\x91 |0 \x55\xBE |0 \x71\x8F |0 \x71\x90 |0 \x71\x92 |0 \x71\x8E |0 \x58\x6E |0 \x74\xA3 |0 \x58\x70 |0 \x74\xA5 |0 \x58\x6F |0 \x74\xA4 |0 \x77\xED |0 \x5A\xB4 |0 \x77\xEF |0 \x77\xEC |0 \x74\xA6 |0 \x5A\xB5 |0 \x77\xEE |0 \x7B\x9E |0 \x5C\xEA |0 \x7B\x9C |0 \x5C\xEB |0 \x7B\x9D |0 \x5C\xEC |0 \x5F\x52 |0 \x7E\xE9 |0 \x7E\xE6 |0 \x7E\xE8 |0 \x5F\x53 |0 \x5F\x54 |0 \x7E\xE7 |0 \x81\xE8 |0 \x81\xE9 |0 \x61\x55 |0 \x81\xEB |0 \x81\xEA |0 \x46\xF9 |0 \x85\x56 |0 \x85\x57 |0 \x85\x53 |0 \x85\x54 |0 \x62\xE5 |0 \x62\xE6 |0 \x85\x55 |0 \x64\x82 |0 \x64\x7D |0 \x64\x83 |0 \x64\x7E |0 \x64\x81 |0 \x64\x7C |0 \x64\x7F |0 \x65\x9D |0 \x87\xBB |0 \x8B\xBB |0 \x8B\xBA |0 \x8D\x79 |0 \x67\x47 |0 \x67\x48 |0 \x8F\x91 |0 \x8E\x96 |0 \x8F\x90 |0 \x91\x4F |0 \x91\x94 |0 \x48\xB8 |3 \x4E\x6E |0 \x4F\xB6 |0 \x6C\xC9 |0 \x51\xAA |0 \x53\x9A |0 \x6E\xED |0 \x53\x98 |0 \x6E\xEB |0 \x53\x9D |0 \x53\x99 |0 \x53\x9E |0 \x53\x9C |0 \x6E\xEC |0 \x53\x9B |0 \x55\xC2 |0 \x55\xC1 |0 \x71\x9E |0 \x55\xCA |0 \x71\x97 |0 \x71\x9D |0 \x55\xC6 |0 \x71\x96 |0 \x71\x9C |0 \x71\x9A |0 \x55\xC5 |0 \x55\xC7 |0 \x71\x99 |0 \x55\xC0 |0 \x71\x98 |0 \x55\xCB |0 \x55\xC8 |0 \x55\xCC |0 \x55\xC9 |0 \x71\x95 |0 \x71\x94 |0 \x71\x9B |0 \x55\xC3 |0 \x55\xBF |0 \x55\xC4 |0 \x74\xB5 |0 \x74\xAE |0 \x5A\xBA |0 \x74\xAD |0 \x58\x74 |0 \x58\x7B |0 \x58\x78 |0 \x58\x7E |0 \x58\x7D |0 \x58\x79 |0 \x74\xA7 |0 \x74\xAA |0 \x74\xA9 |0 \x58\x75 |0 \x74\xAB |0 \x74\xB4 |0 \x58\x76 |0 \x74\xA8 |0 \x74\xB1 |0 \x74\xB2 |0 \x58\x77 |0 \x74\xAF |0 \x58\x7C |0 \x58\x72 |0 \x58\x7A |0 \x74\xAC |0 \x58\x71 |0 \x74\xB0 |0 \x74\xB3 |0 \x78\x43 |0 \x77\xF7 |0 \x5A\xB7 |0 \x78\x41 |0 \x77\xFB |0 \x77\xF3 |0 \x77\xFC |0 \x5A\xB9 |0 \x77\xF4 |0 \x77\xF0 |0 \x5C\xF2 |0 \x77\xF9 |0 \x5A\xB6 |0 \x78\x42 |0 \x5A\xBD |0 \x5A\xBF |0 \x77\xF2 |0 \x5A\xBE |0 \x77\xF5 |0 \x5A\xB8 |0 \x77\xFD |0 \x77\xF6 |0 \x77\xFA |0 \x77\xF8 |0 \x5A\xBB |0 \x77\xF1 |0 \x5A\xC0 |0 \x58\x73 |0 \x5A\xBC |0 \x5A\xC1 |0 \x5C\xEE |0 \x7B\xA5 |0 \x7B\xA7 |0 \x7B\xA9 |0 \x7B\xAD |0 \x7B\xA3 |0 \x7B\xA1 |0 \x5C\xF0 |0 \x7B\xA8 |0 \x7B\xAC |0 \x7B\xA4 |0 \x7B\xA0 |0 \x7B\x9F |0 \x7B\xAA |0 \x7B\xA2 |0 \x7B\xA6 |0 \x5C\xF1 |0 \x5C\xEF |0 \x7B\xAE |0 \x5C\xED |0 \x7B\xAB |0 \x7E\xFA |0 \x5F\x57 |0 \x7E\xF2 |0 \x61\x62 |0 \x7E\xFC |0 \x5F\x5A |0 \x7F\x43 |0 \x5F\x60 |0 \x7E\xED |0 \x7E\xFD |0 \x7E\xEA |0 \x7F\x42 |0 \x7E\xEE |0 \x5F\x67 |0 \x5F\x64 |0 \x7F\x41 |0 \x7E\xF8 |0 \x5F\x56 |0 \x5F\x5E |0 \x5F\x5D |0 \x5F\x5C |0 \x5F\x62 |0 \x7E\xEB |0 \x5F\x63 |0 \x7E\xF9 |0 \x5F\x5F |0 \x5F\x55 |0 \x7E\xFB |0 \x5F\x58 |0 \x5F\x59 |0 \x5F\x61 |0 \x7E\xF0 |0 \x7E\xEF |0 \x7E\xEC |0 \x7E\xF4 |0 \x7E\xF1 |0 \x7E\xF5 |0 \x5F\x66 |0 \x7F\x44 |0 \x5F\x5B |0 \x7E\xF6 |0 \x7E\xF7 |0 \x7E\xF3 |0 \x5F\x65 |0 \x81\xF0 |0 \x61\x5A |0 \x61\x63 |0 \x61\x5F |0 \x81\xED |0 \x61\x5C |0 \x61\x60 |0 \x81\xF9 |0 \x61\x56 |0 \x81\xF1 |0 \x61\x5E |0 \x81\xF4 |0 \x81\xEF |0 \x61\x5D |0 \x61\x61 |0 \x81\xEE |0 \x61\x5B |0 \x81\xF8 |0 \x61\x58 |0 \x81\xF7 |0 \x81\xF6 |0 \x61\x64 |0 \x80\xBC |0 \x61\x57 |0 \x81\xF5 |0 \x81\xEC |0 \x61\x65 |0 \x81\xF3 |0 \x61\x59 |0 \x81\xF2 |0 \x62\xE9 |0 \x62\xEE |0 \x62\xE7 |0 \x85\x64 |0 \x85\x5B |0 \x85\x67 |0 \x85\x5F |0 \x85\x65 |0 \x62\xEF |0 \x62\xE8 |0 \x85\x58 |0 \x85\x5E |0 \x85\x68 |0 \x85\x61 |0 \x85\x66 |0 \x85\x5A |0 \x85\x62 |0 \x62\xEA |0 \x85\x60 |0 \x62\xED |0 \x62\xEC |0 \x85\x5C |0 \x85\x5D |0 \x85\x59 |0 \x85\x63 |0 \x62\xEB |0 \x85\x6A |0 \x85\x69 |0 \x87\xC6 |0 \x87\xC2 |0 \x64\x8A |0 \x87\xBC |0 \x64\x84 |0 \x64\x94 |0 \x87\xC8 |0 \x64\x8C |0 \x64\x88 |0 \x87\xBF |0 \x64\x8F |0 \x64\x92 |0 \x87\xCA |0 \x64\x87 |0 \x87\xC1 |0 \x64\x90 |0 \x87\xCC |0 \x87\xC9 |0 \x87\xBD |0 \x64\x8B |0 \x64\x85 |0 \x64\x93 |0 \x87\xC4 |0 \x64\x8E |0 \x87\xBE |0 \x64\x89 |0 \x87\xCB |0 \x64\x8D |0 \x64\x86 |0 \x87\xC5 |0 \x64\x91 |0 \x87\xC3 |0 \x87\xC7 |0 \x89\xDB |0 \x89\xE1 |0 \x65\xA3 |0 \x89\xE4 |0 \x65\x9E |0 \x65\x9F |0 \x89\xDC |0 \x89\xE3 |0 \x89\xDE |0 \x65\xA4 |0 \x65\xA1 |0 \x89\xDA |0 \x65\xA0 |0 \x89\xE0 |0 \x89\xE2 |0 \x65\xA2 |0 \x89\xDF |0 \x89\xDD |0 \x8B\xC5 |0 \x66\x82 |0 \x66\x83 |0 \x66\x7E |0 \x66\x7F |0 \x8B\xC1 |0 \x8B\xBF |0 \x8B\xC3 |0 \x66\x85 |0 \x8B\xC4 |0 \x8B\xBD |0 \x8B\xBC |0 \x8B\xC0 |0 \x8B\xBE |0 \x66\x81 |0 \x8B\xC2 |0 \x8D\x7A |0 \x67\x4B |0 \x67\x4A |0 \x8D\x7B |0 \x8D\x7D |0 \x8D\x7C |0 \x67\x4C |0 \x8E\x9B |0 \x8E\x98 |0 \x8E\x99 |0 \x8E\x97 |0 \x8E\x9A |0 \x67\x9E |0 \x8E\x9C |0 \x67\x9D |0 \x8F\x92 |0 \x68\x61 |0 \x68\x63 |0 \x90\x5F |0 \x68\x62 |0 \x90\xC8 |0 \x91\x51 |0 \x91\x53 |0 \x91\x50 |0 \x91\x52 |0 \x68\xB8 |0 \x48\xB9 |3 \x4E\x6F |0 \x53\x9F |0 \x70\xD2 |0 \x55\xCD |0 \x58\x7F |0 \x78\x44 |0 \x78\x45 |0 \x85\x6B |0 \x64\x95 |0 \x87\xCD |0 \x65\xA5 |0 \x8B\xC7 |0 \x8B\xC6 |0 \x67\x4D |0 \x8E\x9D |0 \x8F\x93 |0 \x68\x85 |0 \x48\xBA |3 \x69\xE8 |0 \x51\xAB |0 \x4F\xB7 |0 \x6E\xEE |0 \x71\xA4 |0 \x71\x9F |0 \x71\xA3 |0 \x71\xA1 |0 \x55\xCE |0 \x71\xA2 |0 \x71\xA0 |0 \x74\xB6 |0 \x78\x46 |0 \x78\x47 |0 \x7B\xB1 |0 \x7B\xB2 |0 \x5C\xF4 |0 \x5C\xF5 |0 \x7B\xB0 |0 \x7B\xB3 |0 \x7B\xAF |0 \x5C\xF3 |0 \x5F\x68 |0 \x5C\xF6 |0 \x7F\x45 |0 \x61\x66 |0 \x81\xFA |0 \x61\x67 |0 \x62\xF0 |0 \x85\x6E |0 \x85\x6C |0 \x85\x6D |0 \x87\xD0 |0 \x87\xCF |0 \x87\xCE |0 \x8B\xC8 |0 \x66\x84 |0 \x8B\xC9 |0 \x8F\x94 |0 \x68\x86 |0 \x90\xC9 |0 \x48\xBB |3 \x4E\x70 |0 \x51\xAD |0 \x51\xAC |0 \x6E\xF0 |0 \x53\xA0 |0 \x6E\xEF |0 \x71\xA6 |0 \x55\xCF |0 \x74\xB7 |0 \x71\xA5 |0 \x58\x82 |0 \x74\xBA |0 \x74\xB8 |0 \x74\xB9 |0 \x58\x81 |0 \x78\x49 |0 \x78\x4A |0 \x78\x48 |0 \x5C\xF9 |0 \x7B\xB5 |0 \x7B\xB4 |0 \x7B\xB6 |0 \x5C\xF8 |0 \x5C\xF7 |0 \x81\xFB |0 \x81\xFD |0 \x61\x68 |0 \x81\xFC |0 \x85\x6F |0 \x62\xF1 |0 \x89\xE6 |0 \x89\xE5 |0 \x66\x86 |0 \x8B\xCA |0 \x66\x88 |0 \x66\x87 |0 \x8D\x7E |0 \x8E\x9E |0 \x67\x9F |0 \x48\xBC |3 \x4E\x71 |0 \x6E\xF1 |0 \x53\xA1 |0 \x71\xA9 |0 \x55\xD1 |0 \x71\xA8 |0 \x71\xA7 |0 \x55\xD0 |0 \x74\xC0 |0 \x74\xC2 |0 \x74\xBB |0 \x74\xBC |0 \x58\x83 |0 \x74\xBD |0 \x58\x84 |0 \x74\xC1 |0 \x74\xBE |0 \x74\xBF |0 \x58\x85 |0 \x5A\xC3 |0 \x5A\xC4 |0 \x78\x4B |0 \x7B\xB7 |0 \x7B\xB8 |0 \x7F\x49 |0 \x5F\x6B |0 \x5F\x69 |0 \x5F\x6A |0 \x7F\x46 |0 \x7F\x47 |0 \x7F\x48 |0 \x82\x45 |0 \x82\x46 |0 \x61\x69 |0 \x82\x43 |0 \x82\x42 |0 \x82\x44 |0 \x82\x41 |0 \x62\xF4 |0 \x85\x70 |0 \x62\xF2 |0 \x62\xF3 |0 \x87\xD2 |0 \x64\x96 |0 \x87\xD1 |0 \x89\x55 |0 \x89\xE7 |0 \x89\xE8 |0 \x65\xA6 |0 \x65\xA7 |0 \x64\x97 |0 \x8B\xCB |0 \x8B\xCC |0 \x8D\x7F |0 \x67\x4E |0 \x48\xBD |3 \x4E\x72 |0 \x4E\x73 |0 \x53\xA2 |0 \x51\xAE |0 \x55\xD2 |0 \x6E\xF2 |0 \x5A\xC5 |0 \x48\xBE |3 \x4E\x74 |0 \x53\xA4 |0 \x6E\xF3 |0 \x6E\xF4 |0 \x53\xA3 |0 \x53\xA5 |0 \x48\xBF |3 \x4E\x75 |0 \x6E\xF5 |0 \x55\xD4 |0 \x71\xAA |0 \x55\xD6 |0 \x55\xD3 |0 \x55\xD5 |0 \x74\xC5 |0 \x58\x86 |0 \x74\xC4 |0 \x74\xC3 |0 \x7B\xB9 |0 \x7F\x4A |0 \x61\x6A |0 \x62\xF5 |0 \x85\x72 |0 \x85\x71 |0 \x87\xD3 |0 \x8E\x9F |0 \x48\xC0 |3 \x4E\x76 |0 \x6A\xF3 |0 \x6C\xCA |0 \x53\xA6 |0 \x6E\xF6 |0 \x71\xAC |0 \x55\xD7 |0 \x71\xAB |0 \x55\xD8 |0 \x74\xC7 |0 \x58\x88 |0 \x74\xC6 |0 \x74\xC8 |0 \x58\x87 |0 \x78\x4D |0 \x78\x4E |0 \x78\x4C |0 \x5A\xC6 |0 \x5C\xFA |0 \x5C\xFB |0 \x5F\x6D |0 \x7F\x4C |0 \x7F\x4B |0 \x5F\x6C |0 \x82\x47 |0 \x82\x48 |0 \x85\x73 |0 \x64\x9B |0 \x64\x9A |0 \x64\x98 |0 \x64\x99 |0 \x64\x9C |0 \x89\xE9 |0 \x65\xA9 |0 \x65\xA8 |0 \x8B\xCD |0 \x8D\x81 |0 \x67\xEE |0 \x67\xED |0 \x48\xC1 |3 \x4E\x77 |0 \x70\x9F |0 \x5C\xFD |0 \x5A\xC7 |0 \x5C\xFC |0 \x5F\x6E |0 \x48\xC2 |3 \x4E\x78 |0 \x69\x89 |0 \x4E\x79 |0 \x4E\x7A |0 \x6C\xCB |0 \x6A\xF6 |0 \x6A\xF7 |0 \x4F\xB9 |0 \x6A\xF4 |0 \x4F\xB8 |0 \x4F\xBB |0 \x6A\xF5 |0 \x4F\xBD |0 \x4F\xBC |0 \x6A\xF8 |0 \x4F\xBA |0 \x51\xB3 |0 \x51\xB1 |0 \x6C\xCD |0 \x51\xB0 |0 \x51\xB5 |0 \x51\xB7 |0 \x51\xB4 |0 \x6C\xD0 |0 \x6C\xCC |0 \x51\xB8 |0 \x51\xB2 |0 \x4F\xBE |0 \x51\xB6 |0 \x6C\xCF |0 \x6C\xCE |0 \x51\xAF |0 \x6E\xFC |0 \x53\xAA |0 \x53\xAB |0 \x6F\x41 |0 \x6E\xF8 |0 \x6E\xFB |0 \x6F\x47 |0 \x6F\x45 |0 \x53\xAC |0 \x6F\x4B |0 \x53\xAF |0 \x6F\x48 |0 \x6E\xFD |0 \x6E\xFA |0 \x78\x50 |0 \x6F\x46 |0 \x53\xA7 |0 \x6F\x49 |0 \x6E\xF7 |0 \x6F\x43 |0 \x53\xA9 |0 \x53\xAE |0 \x6F\x44 |0 \x53\xB2 |0 \x53\xB0 |0 \x6E\xF9 |0 \x53\xAD |0 \x6F\x42 |0 \x53\xB1 |0 \x53\xA8 |0 \x6F\x4A |0 \x55\xDD |0 \x55\xE6 |0 \x55\xDB |0 \x55\xD9 |0 \x71\xAE |0 \x55\xE1 |0 \x55\xDE |0 \x71\xB0 |0 \x55\xE0 |0 \x71\xAF |0 \x71\xAD |0 \x71\xB2 |0 \x55\xE5 |0 \x55\xE3 |0 \x78\x4F |0 \x71\xB3 |0 \x71\xB1 |0 \x55\xDA |0 \x55\xDC |0 \x55\xDF |0 \x55\xE2 |0 \x55\xE4 |0 \x74\xD2 |0 \x58\x8A |0 \x74\xC9 |0 \x74\xCB |0 \x74\xCC |0 \x74\xD4 |0 \x74\xD0 |0 \x74\xCE |0 \x74\xD1 |0 \x74\xD5 |0 \x58\x8B |0 \x58\x8F |0 \x74\xCA |0 \x74\xD3 |0 \x58\x8D |0 \x58\x8C |0 \x74\xCF |0 \x74\xCD |0 \x58\x89 |0 \x58\x8E |0 \x5A\xCD |0 \x78\x58 |0 \x78\x56 |0 \x5A\xCF |0 \x78\x51 |0 \x7B\xC7 |0 \x5A\xCE |0 \x78\x55 |0 \x78\x52 |0 \x5A\xCA |0 \x5A\xD0 |0 \x78\x57 |0 \x5A\xCC |0 \x78\x54 |0 \x5F\x6F |0 \x5A\xCB |0 \x78\x53 |0 \x5A\xD1 |0 \x5A\xC9 |0 \x5A\xC8 |0 \x7B\xBF |0 \x7B\xBD |0 \x7B\xC3 |0 \x7B\xBB |0 \x7B\xC8 |0 \x7B\xC0 |0 \x7B\xBA |0 \x5D\x44 |0 \x5D\x4A |0 \x7B\xC5 |0 \x7B\xBE |0 \x5D\x47 |0 \x5D\x45 |0 \x7B\xC6 |0 \x5D\x42 |0 \x5D\x41 |0 \x7B\xC1 |0 \x5D\x46 |0 \x5A\xD2 |0 \x7B\xC4 |0 \x7B\xBC |0 \x5D\x43 |0 \x5D\x48 |0 \x5D\x49 |0 \x5F\x74 |0 \x5F\x70 |0 \x5F\x75 |0 \x7F\x4F |0 \x7F\x4E |0 \x7F\x50 |0 \x5F\x72 |0 \x7F\x4D |0 \x5F\x73 |0 \x7F\x53 |0 \x7F\x52 |0 \x7F\x51 |0 \x5F\x71 |0 \x82\x4C |0 \x82\x4F |0 \x61\x70 |0 \x82\x4E |0 \x61\x6F |0 \x61\x6B |0 \x61\x6C |0 \x61\x6D |0 \x82\x4B |0 \x82\x4A |0 \x61\x6E |0 \x82\x4D |0 \x82\x49 |0 \x85\x75 |0 \x85\x7F |0 \x62\xF8 |0 \x62\xF7 |0 \x85\x79 |0 \x85\x7B |0 \x85\x76 |0 \x85\x7A |0 \x85\x74 |0 \x85\x7D |0 \x62\xF6 |0 \x85\x7C |0 \x85\x78 |0 \x85\x7E |0 \x85\x77 |0 \x64\x9F |0 \x87\xD4 |0 \x87\xDA |0 \x64\xA3 |0 \x64\xA5 |0 \x64\xA2 |0 \x64\xA1 |0 \x64\xA0 |0 \x64\x9E |0 \x87\xD5 |0 \x87\xD8 |0 \x64\x9D |0 \x87\xD9 |0 \x64\xA4 |0 \x87\xD7 |0 \x87\xD6 |0 \x65\xAA |0 \x65\xAB |0 \x89\xEC |0 \x89\xEA |0 \x89\xEB |0 \x8B\xCF |0 \x8B\xCE |0 \x66\x89 |0 \x8D\x83 |0 \x67\x4F |0 \x8D\x82 |0 \x8E\xA0 |0 \x8F\x95 |0 \x67\xEF |0 \x91\x54 |0 \x91\x55 |0 \x68\x64 |0 \x48\xC3 |3 \x4E\x7B |0 \x51\xB9 |0 \x78\x59 |0 \x5F\x76 |0 \x64\xA6 |0 \x87\xDB |0 \x48\xC4 |3 \x4E\x7C |0 \x55\xE8 |0 \x55\xE7 |0 \x78\x5A |0 \x85\x81 |0 \x48\xC5 |3 \x4E\x7D |0 \x53\xB3 |0 \x78\x5B |0 \x78\x5C |0 \x78\x5D |0 \x5F\x77 |0 \x62\xF9 |0 \x48\xC6 |3 \x4E\x7E |0 \x51\xBA |0 \x6F\x4C |0 \x55\xE9 |0 \x71\xB4 |0 \x58\x90 |0 \x78\x5E |0 \x5D\x4B |0 \x5F\x78 |0 \x62\xFA |0 \x64\xA7 |0 \x65\xAC |0 \x8D\x84 |0 \x48\xC7 |3 \x4E\x7F |0 \x51\xBB |0 \x55\xEA |0 \x74\xD6 |0 \x5A\xD3 |0 \x5F\x79 |0 \x7F\x54 |0 \x82\x50 |0 \x48\xC8 |3 \x4E\x81 |0 \x5A\xD4 |0 \x7B\xC9 |0 \x5F\x7A |0 \x48\xC9 |3 \x4E\x82 |0 \x6C\xD1 |0 \x6F\x4D |0 \x53\xB4 |0 \x71\xB6 |0 \x55\xED |0 \x55\xEB |0 \x55\xEC |0 \x55\xEE |0 \x71\xB5 |0 \x74\xDB |0 \x74\xD8 |0 \x74\xDA |0 \x58\x91 |0 \x58\x93 |0 \x58\x92 |0 \x74\xD7 |0 \x58\x94 |0 \x74\xD9 |0 \x78\x5F |0 \x78\x60 |0 \x78\x61 |0 \x7B\xCC |0 \x7B\xCD |0 \x7B\xCB |0 \x7B\xCE |0 \x5D\x4C |0 \x7B\xCA |0 \x5F\x7B |0 \x82\x55 |0 \x82\x51 |0 \x82\x54 |0 \x82\x56 |0 \x82\x53 |0 \x82\x52 |0 \x85\x82 |0 \x85\x83 |0 \x85\x84 |0 \x62\xFB |0 \x62\xFC |0 \x87\xDD |0 \x87\xDC |0 \x87\xDE |0 \x89\xEE |0 \x89\xED |0 \x8B\xD1 |0 \x8B\xD2 |0 \x8B\xD0 |0 \x67\x50 |0 \x8D\x85 |0 \x8D\x86 |0 \x8F\x96 |0 \x90\x60 |0 \x90\xCA |0 \x48\xCA |3 \x4E\x83 |0 \x4F\xBF |0 \x64\xA8 |0 \x48\xCB |3 \x4E\x84 |0 \x74\xDC |0 \x78\x62 |0 \x68\x8D |0 \x48\xCC |3 \x69\xE9 |0 \x69\xEA |0 \x69\xEC |0 \x4E\x85 |0 \x69\xED |0 \x69\xEB |0 \x6B\x43 |0 \x6B\x44 |0 \x6A\xFB |0 \x6B\x42 |0 \x4F\xC1 |0 \x4F\xC2 |0 \x6A\xFC |0 \x6A\xFA |0 \x6A\xF9 |0 \x6A\xFD |0 \x4F\xC0 |0 \x6B\x41 |0 \x6F\x4E |0 \x6C\xD6 |0 \x51\xBE |0 \x6C\xD5 |0 \x6C\xD7 |0 \x51\xBD |0 \x6C\xDC |0 \x51\xC1 |0 \x6C\xD2 |0 \x6C\xE0 |0 \x6C\xE6 |0 \x51\xC8 |0 \x6C\xE3 |0 \x51\xC5 |0 \x6C\xD9 |0 \x6C\xDF |0 \x6C\xE1 |0 \x6C\xD4 |0 \x51\xC4 |0 \x51\xBF |0 \x6C\xDA |0 \x51\xC6 |0 \x51\xC9 |0 \x51\xC3 |0 \x51\xBC |0 \x6C\xDE |0 \x6C\xD8 |0 \x6C\xE5 |0 \x51\xCB |0 \x51\xC7 |0 \x51\xC2 |0 \x6C\xDD |0 \x55\xEF |0 \x6C\xDB |0 \x51\xC0 |0 \x51\xCA |0 \x6C\xD3 |0 \x6C\xE2 |0 \x6C\xE4 |0 \x53\xC5 |0 \x53\xBF |0 \x53\xC7 |0 \x53\xC4 |0 \x6F\x55 |0 \x6F\x58 |0 \x53\xC0 |0 \x6F\x4F |0 \x53\xB9 |0 \x53\xC3 |0 \x53\xC6 |0 \x53\xC8 |0 \x6F\x64 |0 \x6F\x5B |0 \x53\xB8 |0 \x6F\x63 |0 \x53\xBC |0 \x53\xBA |0 \x53\xB5 |0 \x6F\x53 |0 \x6F\x62 |0 \x6F\x57 |0 \x6F\x5A |0 \x6F\x67 |0 \x53\xC9 |0 \x6F\x61 |0 \x53\xC1 |0 \x6F\x5C |0 \x6F\x66 |0 \x6F\x59 |0 \x6F\x5D |0 \x6F\x60 |0 \x6F\x51 |0 \x6F\x65 |0 \x6F\x5F |0 \x6F\x50 |0 \x6F\x54 |0 \x53\xC2 |0 \x53\xBD |0 \x53\xB6 |0 \x53\xBB |0 \x53\xB7 |0 \x53\xCA |0 \x6F\x52 |0 \x71\xC7 |0 \x53\xBE |0 \x6F\x5E |0 \x6D\x63 |0 \x71\xCA |0 \x55\xFD |0 \x71\xBA |0 \x71\xC5 |0 \x71\xC1 |0 \x71\xD4 |0 \x71\xCC |0 \x71\xC2 |0 \x71\xCB |0 \x71\xBC |0 \x71\xC0 |0 \x71\xD7 |0 \x56\x43 |0 \x71\xCF |0 \x71\xC6 |0 \x55\xF0 |0 \x71\xD5 |0 \x71\xB8 |0 \x71\xCE |0 \x56\x42 |0 \x55\xFA |0 \x71\xB7 |0 \x55\xF8 |0 \x55\xF7 |0 \x55\xFC |0 \x71\xCD |0 \x55\xF4 |0 \x55\xFB |0 \x6F\x56 |0 \x78\x63 |0 \x71\xC8 |0 \x71\xBE |0 \x56\x41 |0 \x71\xBF |0 \x71\xC3 |0 \x56\x44 |0 \x71\xB9 |0 \x71\xD1 |0 \x71\xD0 |0 \x71\xD8 |0 \x55\xF6 |0 \x55\xF3 |0 \x71\xD6 |0 \x71\xD2 |0 \x71\xC9 |0 \x71\xC4 |0 \x55\xF9 |0 \x55\xF5 |0 \x71\xBB |0 \x55\xF1 |0 \x71\xD3 |0 \x55\xF2 |0 \x71\xBD |0 \x74\xE2 |0 \x74\xE4 |0 \x74\xE9 |0 \x74\xFD |0 \x58\xA2 |0 \x58\x98 |0 \x74\xE1 |0 \x58\xA3 |0 \x58\xA4 |0 \x74\xEC |0 \x74\xF3 |0 \x74\xF9 |0 \x74\xE6 |0 \x74\xED |0 \x58\xA5 |0 \x74\xFB |0 \x74\xF6 |0 \x58\xA0 |0 \x58\x9E |0 \x74\xF2 |0 \x74\xEE |0 \x74\xE0 |0 \x58\x95 |0 \x74\xE5 |0 \x74\xDD |0 \x58\x9D |0 \x58\x9F |0 \x74\xEA |0 \x74\xE7 |0 \x58\x9A |0 \x74\xF7 |0 \x58\x97 |0 \x74\xE8 |0 \x75\x41 |0 \x74\xF0 |0 \x74\xEF |0 \x58\x96 |0 \x58\xA1 |0 \x58\x99 |0 \x74\xDE |0 \x74\xE3 |0 \x74\xF4 |0 \x74\xFA |0 \x58\xA6 |0 \x74\xDF |0 \x74\xEB |0 \x74\xF1 |0 \x58\x9C |0 \x74\xFC |0 \x74\xF5 |0 \x74\xF8 |0 \x58\x9B |0 \x78\x73 |0 \x78\x67 |0 \x5A\xDC |0 \x78\x85 |0 \x78\x8D |0 \x78\x90 |0 \x5A\xDA |0 \x78\x6F |0 \x78\x89 |0 \x78\x70 |0 \x78\x7E |0 \x5A\xE7 |0 \x78\x7A |0 \x5A\xE4 |0 \x78\x7B |0 \x78\x64 |0 \x78\x8A |0 \x5A\xED |0 \x78\x87 |0 \x78\x7C |0 \x78\x92 |0 \x78\x77 |0 \x7B\xEE |0 \x78\x95 |0 \x5A\xEB |0 \x78\x75 |0 \x78\x82 |0 \x5A\xEE |0 \x5A\xD9 |0 \x78\x79 |0 \x78\x93 |0 \x78\x72 |0 \x78\x6B |0 \x78\x76 |0 \x78\x6A |0 \x78\x68 |0 \x5A\xD5 |0 \x78\x8B |0 \x78\x71 |0 \x78\x8E |0 \x78\x8F |0 \x5A\xDD |0 \x5A\xE2 |0 \x5A\xDE |0 \x5A\xE6 |0 \x78\x86 |0 \x5A\xDF |0 \x78\x7D |0 \x78\x6D |0 \x5A\xD7 |0 \x78\x65 |0 \x78\x88 |0 \x78\x91 |0 \x78\x6C |0 \x5A\xE5 |0 \x78\x96 |0 \x78\x78 |0 \x78\x74 |0 \x5A\xD6 |0 \x5A\xEA |0 \x78\x84 |0 \x5A\xEC |0 \x78\x7F |0 \x5A\xE1 |0 \x5A\xDB |0 \x5A\xE3 |0 \x5A\xD8 |0 \x5A\xE9 |0 \x78\x81 |0 \x78\x6E |0 \x78\x83 |0 \x78\x69 |0 \x78\x8C |0 \x78\x94 |0 \x78\x66 |0 \x7B\xED |0 \x7C\x46 |0 \x5C\xDB |0 \x7B\xF2 |0 \x7B\xF0 |0 \x7B\xDB |0 \x5D\x50 |0 \x7B\xEB |0 \x7C\x42 |0 \x7B\xE7 |0 \x5D\x58 |0 \x7C\x41 |0 \x7B\xE5 |0 \x5A\xE8 |0 \x7B\xF5 |0 \x7B\xE6 |0 \x7B\xFC |0 \x5D\x57 |0 \x5D\x4F |0 \x7B\xD0 |0 \x7B\xD8 |0 \x7B\xF1 |0 \x7B\xE9 |0 \x7C\x45 |0 \x7B\xEC |0 \x5D\x5D |0 \x7B\xFD |0 \x5D\x54 |0 \x7B\xEF |0 \x7B\xF7 |0 \x7B\xDC |0 \x7B\xF6 |0 \x7C\x4A |0 \x7B\xD7 |0 \x7B\xF8 |0 \x7C\x48 |0 \x7B\xD1 |0 \x5A\xE0 |0 \x7B\xDF |0 \x7B\xDE |0 \x5D\x56 |0 \x7B\xE2 |0 \x7B\xE4 |0 \x7B\xF3 |0 \x7C\x47 |0 \x5D\x59 |0 \x5D\x5A |0 \x7B\xD6 |0 \x5D\x52 |0 \x7B\xDA |0 \x7C\x43 |0 \x5D\x5B |0 \x5D\x53 |0 \x5D\x55 |0 \x5D\x5C |0 \x7C\x49 |0 \x7B\xF9 |0 \x7B\xF4 |0 \x7B\xE1 |0 \x7B\xE0 |0 \x5D\x51 |0 \x7B\xD2 |0 \x5D\x4E |0 \x7B\xEA |0 \x7B\xD3 |0 \x7B\xE8 |0 \x7B\xDD |0 \x7C\x44 |0 \x5D\x4D |0 \x7B\xD9 |0 \x7B\xD5 |0 \x7B\xFB |0 \x7B\xD4 |0 \x5F\x89 |0 \x7F\x7C |0 \x7F\x6B |0 \x7F\x55 |0 \x7F\x73 |0 \x5F\x81 |0 \x7F\x64 |0 \x7F\x6E |0 \x5F\x84 |0 \x7F\x67 |0 \x5F\x82 |0 \x7F\x58 |0 \x7F\x76 |0 \x7F\x57 |0 \x7F\x6A |0 \x7F\x56 |0 \x7F\x68 |0 \x7F\x71 |0 \x7F\x6F |0 \x7F\x63 |0 \x7F\x5E |0 \x7F\x5C |0 \x7F\x5D |0 \x7F\x70 |0 \x7F\x7B |0 \x7F\x65 |0 \x5F\x83 |0 \x7F\x60 |0 \x7F\x74 |0 \x5F\x86 |0 \x7F\x5F |0 \x7F\x59 |0 \x7F\x69 |0 \x5F\x8A |0 \x5F\x7D |0 \x5F\x87 |0 \x7F\x61 |0 \x7F\x5B |0 \x5F\x7F |0 \x7B\xFA |0 \x5F\x7E |0 \x7F\x6C |0 \x5F\x7C |0 \x5F\x8C |0 \x5F\x85 |0 \x7F\x6D |0 \x7F\x62 |0 \x7F\x5A |0 \x7F\x75 |0 \x7F\x66 |0 \x5F\x8B |0 \x7F\x79 |0 \x5F\x88 |0 \x7F\x78 |0 \x7F\x72 |0 \x7F\x77 |0 \x7F\x7A |0 \x82\x7E |0 \x82\x7F |0 \x82\x72 |0 \x82\x71 |0 \x82\x6D |0 \x61\x7C |0 \x61\x74 |0 \x82\x82 |0 \x82\x81 |0 \x7B\xCF |0 \x82\x6A |0 \x82\x6E |0 \x82\x68 |0 \x82\x7B |0 \x82\x6C |0 \x82\x83 |0 \x82\x65 |0 \x82\x63 |0 \x82\x6F |0 \x82\x79 |0 \x82\x74 |0 \x61\x7E |0 \x82\x5A |0 \x82\x78 |0 \x61\x7F |0 \x7B\xE3 |0 \x82\x66 |0 \x82\x5D |0 \x82\x60 |0 \x82\x87 |0 \x82\x67 |0 \x82\x5E |0 \x82\x5C |0 \x82\x59 |0 \x61\x78 |0 \x82\x70 |0 \x61\x77 |0 \x61\x7B |0 \x82\x6B |0 \x82\x73 |0 \x61\x71 |0 \x82\x84 |0 \x82\x88 |0 \x61\x73 |0 \x82\x62 |0 \x82\x76 |0 \x82\x7A |0 \x82\x5F |0 \x82\x85 |0 \x61\x7A |0 \x61\x79 |0 \x82\x57 |0 \x61\x7D |0 \x82\x7D |0 \x82\x61 |0 \x82\x75 |0 \x82\x5B |0 \x82\x69 |0 \x82\x64 |0 \x61\x75 |0 \x61\x76 |0 \x82\x77 |0 \x82\x89 |0 \x82\x86 |0 \x82\x7C |0 \x82\x58 |0 \x61\x72 |0 \x85\x95 |0 \x85\x8C |0 \x85\x8F |0 \x63\x45 |0 \x85\x91 |0 \x85\x86 |0 \x85\x8D |0 \x85\x93 |0 \x63\x42 |0 \x63\x46 |0 \x62\xFD |0 \x85\x88 |0 \x85\x98 |0 \x85\x92 |0 \x85\x89 |0 \x85\xA1 |0 \x85\x9B |0 \x85\x85 |0 \x87\xF1 |0 \x85\x8B |0 \x63\x41 |0 \x85\x96 |0 \x85\xA0 |0 \x63\x49 |0 \x85\x9D |0 \x85\x8A |0 \x85\x90 |0 \x85\x94 |0 \x85\x8E |0 \x85\xA2 |0 \x85\x9F |0 \x85\x9C |0 \x63\x43 |0 \x63\x44 |0 \x63\x48 |0 \x85\x87 |0 \x85\xA3 |0 \x63\x47 |0 \x85\x99 |0 \x85\x97 |0 \x85\x9A |0 \x88\x41 |0 \x87\xEB |0 \x87\xF0 |0 \x87\xFD |0 \x87\xEF |0 \x87\xE7 |0 \x87\xEC |0 \x64\xAB |0 \x87\xE0 |0 \x87\xF8 |0 \x87\xFA |0 \x87\xDF |0 \x64\xAA |0 \x87\xFC |0 \x87\xF4 |0 \x64\xB1 |0 \x87\xFB |0 \x87\xED |0 \x64\xB3 |0 \x87\xE5 |0 \x85\x9E |0 \x87\xF5 |0 \x87\xF2 |0 \x87\xE1 |0 \x88\x43 |0 \x64\xAD |0 \x64\xAE |0 \x87\xE3 |0 \x87\xF3 |0 \x88\x42 |0 \x87\xF6 |0 \x87\xE9 |0 \x64\xB0 |0 \x64\xAC |0 \x87\xF7 |0 \x87\xEA |0 \x88\x44 |0 \x87\xE4 |0 \x87\xEE |0 \x87\xF9 |0 \x87\xE6 |0 \x87\xE8 |0 \x65\xB5 |0 \x87\xE2 |0 \x64\xB2 |0 \x65\xAE |0 \x64\xA9 |0 \x64\xAF |0 \x65\xB2 |0 \x8A\x41 |0 \x89\xF4 |0 \x89\xEF |0 \x89\xF5 |0 \x8A\x42 |0 \x8A\x46 |0 \x8A\x45 |0 \x65\xB4 |0 \x65\xB3 |0 \x89\xF6 |0 \x8A\x47 |0 \x89\xF9 |0 \x89\xF1 |0 \x89\xF3 |0 \x89\xF2 |0 \x89\xF8 |0 \x89\xFD |0 \x89\xF0 |0 \x89\xF7 |0 \x89\xFC |0 \x65\xB1 |0 \x89\xFA |0 \x65\xAF |0 \x89\xFB |0 \x65\xAD |0 \x65\xB0 |0 \x8B\xE2 |0 \x8A\x43 |0 \x66\x8D |0 \x8B\xDA |0 \x8B\xDE |0 \x8B\xD6 |0 \x8B\xD9 |0 \x8B\xE1 |0 \x66\x8B |0 \x8B\xE6 |0 \x8B\xDF |0 \x8B\xD7 |0 \x8B\xE7 |0 \x8B\xE0 |0 \x66\x8E |0 \x66\x8F |0 \x8B\xE4 |0 \x8B\xD8 |0 \x66\x8A |0 \x66\x8C |0 \x8B\xD3 |0 \x8B\xDB |0 \x8B\xD5 |0 \x8B\xE5 |0 \x8B\xE3 |0 \x8B\xD4 |0 \x8B\xDC |0 \x8D\x8D |0 \x66\x90 |0 \x8B\xDD |0 \x67\x52 |0 \x67\x54 |0 \x67\x51 |0 \x8D\x92 |0 \x8D\x8A |0 \x8D\x88 |0 \x8D\x8C |0 \x8D\x89 |0 \x8D\x8E |0 \x8D\x90 |0 \x67\x55 |0 \x67\x57 |0 \x8D\x8F |0 \x67\x58 |0 \x67\x56 |0 \x8D\x91 |0 \x67\x53 |0 \x67\xA0 |0 \x8E\xA1 |0 \x8E\xA7 |0 \x67\xA2 |0 \x8D\x8B |0 \x8E\xA6 |0 \x8E\xAD |0 \x8E\xA4 |0 \x8E\xAB |0 \x8E\xAA |0 \x8D\x87 |0 \x8E\xA5 |0 \x8A\x44 |0 \x8E\xAE |0 \x8E\xA3 |0 \x8E\xA8 |0 \x8E\xAC |0 \x8E\xA2 |0 \x8F\x9A |0 \x67\xA1 |0 \x8E\xA9 |0 \x90\x65 |0 \x8F\x9B |0 \x8F\x99 |0 \x8F\x97 |0 \x8F\x98 |0 \x8F\x9C |0 \x68\x65 |0 \x90\x63 |0 \x90\x61 |0 \x90\x66 |0 \x90\x64 |0 \x90\x67 |0 \x68\x66 |0 \x90\x62 |0 \x90\xCB |0 \x91\x56 |0 \x91\x57 |0 \x91\x58 |0 \x91\xB7 |0 \x91\xAD |0 \x48\xCD |3 \x69\xEE |0 \x51\xCC |0 \x53\xCB |0 \x71\xDA |0 \x71\xD9 |0 \x56\x45 |0 \x58\xA7 |0 \x75\x43 |0 \x75\x42 |0 \x5A\xEF |0 \x5D\x5F |0 \x5D\x5E |0 \x5D\x60 |0 \x7F\x7D |0 \x82\x8A |0 \x85\xA4 |0 \x85\xA6 |0 \x85\xA5 |0 \x64\xB4 |0 \x88\x45 |0 \x8A\x48 |0 \x91\x95 |0 \x48\xCE |3 \x4E\x86 |0 \x6C\xE9 |0 \x6C\xEA |0 \x6C\xE8 |0 \x6C\xE7 |0 \x51\xCD |0 \x6F\x6B |0 \x6F\x69 |0 \x6F\x68 |0 \x53\xCC |0 \x53\xCE |0 \x53\xCD |0 \x6F\x6A |0 \x71\xE6 |0 \x71\xE3 |0 \x71\xE1 |0 \x56\x46 |0 \x71\xE4 |0 \x56\x4B |0 \x71\xDE |0 \x71\xED |0 \x71\xEF |0 \x71\xDF |0 \x56\x48 |0 \x71\xF0 |0 \x71\xEB |0 \x71\xDD |0 \x71\xE2 |0 \x71\xEC |0 \x71\xE8 |0 \x71\xE5 |0 \x56\x4D |0 \x71\xEE |0 \x71\xE0 |0 \x71\xE9 |0 \x71\xDB |0 \x56\x4C |0 \x56\x49 |0 \x71\xE7 |0 \x71\xEA |0 \x71\xDC |0 \x56\x4A |0 \x56\x47 |0 \x58\xB1 |0 \x75\x4A |0 \x58\xB0 |0 \x75\x4D |0 \x75\x50 |0 \x58\xAD |0 \x58\xAB |0 \x75\x45 |0 \x75\x4E |0 \x75\x4C |0 \x75\x49 |0 \x75\x51 |0 \x75\x52 |0 \x75\x54 |0 \x75\x55 |0 \x75\x44 |0 \x58\xAA |0 \x75\x47 |0 \x75\x46 |0 \x75\x53 |0 \x58\xAC |0 \x75\x48 |0 \x58\xAE |0 \x58\xA9 |0 \x75\x4B |0 \x58\xB2 |0 \x58\xAF |0 \x75\x4F |0 \x5A\xF6 |0 \x78\xA5 |0 \x78\x9A |0 \x5A\xF3 |0 \x7C\x50 |0 \x78\xA3 |0 \x78\x97 |0 \x5A\xF1 |0 \x78\x9C |0 \x5A\xF4 |0 \x78\xA0 |0 \x78\x9E |0 \x5A\xF7 |0 \x5A\xF0 |0 \x78\x98 |0 \x78\x9B |0 \x5A\xF5 |0 \x78\x99 |0 \x78\xA4 |0 \x78\xA2 |0 \x78\x9D |0 \x78\x9F |0 \x78\xA1 |0 \x5A\xF2 |0 \x7C\x51 |0 \x7C\x57 |0 \x7C\x4D |0 \x7C\x53 |0 \x5D\x61 |0 \x7C\x4F |0 \x5D\x67 |0 \x5D\x66 |0 \x5D\x65 |0 \x7C\x56 |0 \x5D\x68 |0 \x5D\x69 |0 \x7C\x4C |0 \x7C\x59 |0 \x5D\x6A |0 \x5D\x64 |0 \x5D\x63 |0 \x7C\x55 |0 \x5D\x6B |0 \x7C\x4B |0 \x7C\x4E |0 \x7C\x58 |0 \x7C\x54 |0 \x7F\x9E |0 \x7F\x93 |0 \x5D\x62 |0 \x5F\x93 |0 \x7F\x87 |0 \x7F\x9C |0 \x7F\x88 |0 \x5F\x8E |0 \x7F\x85 |0 \x7F\x8E |0 \x7F\x86 |0 \x5F\x90 |0 \x7F\x7F |0 \x7F\x9B |0 \x5F\x91 |0 \x7F\x98 |0 \x7F\x99 |0 \x7F\x81 |0 \x5F\x96 |0 \x7F\x90 |0 \x7F\x8A |0 \x7F\x91 |0 \x7F\x84 |0 \x7F\x9D |0 \x7F\x95 |0 \x7F\x8F |0 \x7F\x7E |0 \x5F\x92 |0 \x7F\x96 |0 \x5F\x95 |0 \x7F\x9A |0 \x7F\x94 |0 \x5F\x8F |0 \x7F\x92 |0 \x7F\x8C |0 \x5F\x8D |0 \x7F\x83 |0 \x7F\x8B |0 \x7F\x97 |0 \x7F\x89 |0 \x7F\x8D |0 \x61\x8A |0 \x7C\x52 |0 \x82\x9C |0 \x82\xA5 |0 \x82\x9B |0 \x82\x97 |0 \x82\x94 |0 \x61\x8B |0 \x82\x92 |0 \x5F\x94 |0 \x82\x8B |0 \x61\x89 |0 \x82\x91 |0 \x61\x88 |0 \x82\x96 |0 \x82\x93 |0 \x82\xA3 |0 \x82\x9E |0 \x82\x98 |0 \x82\x9D |0 \x61\x84 |0 \x82\x95 |0 \x82\xA8 |0 \x82\x8C |0 \x82\x8D |0 \x82\xA4 |0 \x61\x85 |0 \x82\xA9 |0 \x61\x87 |0 \x82\xAA |0 \x82\x9A |0 \x7F\x82 |0 \x82\xA0 |0 \x82\x99 |0 \x82\xA2 |0 \x82\x9F |0 \x82\x90 |0 \x61\x82 |0 \x82\xA7 |0 \x61\x83 |0 \x82\x8E |0 \x61\x86 |0 \x85\xB0 |0 \x82\xA1 |0 \x82\xA6 |0 \x85\xAD |0 \x61\x81 |0 \x63\x4A |0 \x85\xB7 |0 \x85\xB3 |0 \x85\xB1 |0 \x85\xAC |0 \x85\xBB |0 \x63\x4E |0 \x85\xA8 |0 \x85\xB4 |0 \x85\xB5 |0 \x85\xAB |0 \x85\xAA |0 \x85\xB8 |0 \x85\xAE |0 \x85\xA9 |0 \x85\xAF |0 \x85\xBA |0 \x85\xA7 |0 \x85\xB9 |0 \x85\xB6 |0 \x63\x4C |0 \x63\x4B |0 \x63\x4D |0 \x85\xB2 |0 \x8A\x59 |0 \x88\x47 |0 \x64\xBA |0 \x88\x4B |0 \x88\x48 |0 \x88\x4F |0 \x88\x55 |0 \x88\x4A |0 \x88\x5E |0 \x64\xB7 |0 \x88\x58 |0 \x88\x4D |0 \x88\x59 |0 \x88\x54 |0 \x88\x5B |0 \x88\x4C |0 \x64\xBC |0 \x64\xBB |0 \x88\x4E |0 \x88\x5C |0 \x88\x46 |0 \x88\x5A |0 \x64\xB5 |0 \x88\x52 |0 \x88\x51 |0 \x88\x56 |0 \x88\x49 |0 \x64\xB9 |0 \x64\xBD |0 \x88\x50 |0 \x88\x57 |0 \x64\xBE |0 \x88\x53 |0 \x64\xB6 |0 \x64\xB8 |0 \x8A\x55 |0 \x8A\x53 |0 \x8A\x5A |0 \x8A\x57 |0 \x8A\x5B |0 \x8A\x4C |0 \x8A\x54 |0 \x8A\x5F |0 \x88\x5D |0 \x8A\x50 |0 \x65\xB9 |0 \x82\x8F |0 \x8A\x4B |0 \x8A\x58 |0 \x8A\x52 |0 \x8A\x4F |0 \x8A\x4A |0 \x8A\x49 |0 \x8A\x5E |0 \x8A\x4E |0 \x8A\x4D |0 \x65\xB7 |0 \x8A\x56 |0 \x65\xB6 |0 \x65\xB8 |0 \x8A\x51 |0 \x8A\x5D |0 \x8B\xEB |0 \x8B\xEC |0 \x66\x94 |0 \x8B\xE9 |0 \x66\x91 |0 \x8B\xF1 |0 \x66\x95 |0 \x8B\xF3 |0 \x8B\xE8 |0 \x8A\x5C |0 \x8B\xF5 |0 \x8B\xEA |0 \x66\x92 |0 \x8B\xF0 |0 \x8B\xF2 |0 \x8B\xED |0 \x8B\xF4 |0 \x8B\xEF |0 \x8B\xEE |0 \x66\x93 |0 \x8D\x94 |0 \x8D\x95 |0 \x8D\x97 |0 \x67\x59 |0 \x67\x5A |0 \x8D\x98 |0 \x8D\x96 |0 \x8D\x93 |0 \x8E\xB1 |0 \x8E\xB4 |0 \x8E\xB0 |0 \x67\xA6 |0 \x8E\xB2 |0 \x67\xA5 |0 \x67\xA4 |0 \x67\xA3 |0 \x8E\xB3 |0 \x8F\xA1 |0 \x8F\x9F |0 \x8F\x9E |0 \x8E\xAF |0 \x8F\xA0 |0 \x8E\xB5 |0 \x8F\x9D |0 \x90\x6A |0 \x90\x48 |0 \x90\x68 |0 \x68\x67 |0 \x90\x69 |0 \x90\x6B |0 \x90\xCE |0 \x68\x87 |0 \x90\xCD |0 \x90\xCC |0 \x68\x88 |0 \x68\xA6 |0 \x91\x7F |0 \x91\x97 |0 \x91\x96 |0 \x91\x98 |0 \x48\xCF |3 \x4E\x87 |0 \x6F\x6C |0 \x71\xF1 |0 \x71\xF2 |0 \x78\xA6 |0 \x8E\xB6 |0 \x90\xCF |0 \x48\xD0 |3 \x4E\x88 |0 \x53\xCF |0 \x6F\x6D |0 \x75\x56 |0 \x58\xB3 |0 \x78\xA8 |0 \x78\xA7 |0 \x5A\xF8 |0 \x5D\x6C |0 \x82\xAB |0 \x61\x8C |0 \x61\x8D |0 \x63\x4F |0 \x68\x89 |0 \x48\xD1 |3 \x4E\x89 |0 \x6F\x6E |0 \x51\xCF |0 \x6F\x70 |0 \x6F\x6F |0 \x53\xD0 |0 \x71\xF3 |0 \x71\xFA |0 \x56\x4E |0 \x71\xF8 |0 \x71\xF6 |0 \x71\xFD |0 \x71\xF4 |0 \x71\xF5 |0 \x56\x4F |0 \x56\x53 |0 \x72\x41 |0 \x56\x52 |0 \x71\xFC |0 \x71\xF9 |0 \x71\xF7 |0 \x56\x50 |0 \x56\x51 |0 \x71\xFB |0 \x58\xB5 |0 \x75\x57 |0 \x58\xBA |0 \x75\x67 |0 \x58\xB9 |0 \x75\x69 |0 \x75\x5D |0 \x58\xB7 |0 \x75\x68 |0 \x75\x58 |0 \x58\xB8 |0 \x75\x64 |0 \x75\x60 |0 \x75\x62 |0 \x75\x5C |0 \x75\x63 |0 \x58\xB4 |0 \x75\x5F |0 \x75\x5E |0 \x75\x5A |0 \x75\x65 |0 \x75\x61 |0 \x75\x59 |0 \x75\x5B |0 \x58\xB6 |0 \x75\x66 |0 \x5A\xFB |0 \x78\xB3 |0 \x78\xAF |0 \x78\xB1 |0 \x78\xAC |0 \x78\xAB |0 \x78\xA9 |0 \x78\xB0 |0 \x78\xB2 |0 \x78\xAE |0 \x78\xAD |0 \x5A\xF9 |0 \x5A\xFA |0 \x78\xB5 |0 \x5D\x74 |0 \x7C\x5B |0 \x7C\x61 |0 \x7C\x5C |0 \x7C\x5D |0 \x7C\x62 |0 \x5D\x76 |0 \x5D\x6E |0 \x5D\x75 |0 \x7C\x5A |0 \x78\xAA |0 \x5D\x71 |0 \x5D\x6F |0 \x7C\x60 |0 \x7C\x5F |0 \x5D\x70 |0 \x5D\x72 |0 \x7C\x5E |0 \x5D\x6D |0 \x5D\x73 |0 \x7F\xA0 |0 \x5F\x9D |0 \x7F\xAB |0 \x7F\xAA |0 \x7F\xA5 |0 \x5F\x9F |0 \x7F\xA9 |0 \x7F\xA1 |0 \x7F\xA2 |0 \x5F\x97 |0 \x5F\x99 |0 \x7F\xA7 |0 \x7F\x9F |0 \x5F\x9B |0 \x5F\x9A |0 \x7F\xA3 |0 \x7F\xA8 |0 \x7F\xA6 |0 \x5F\x9C |0 \x7F\xA4 |0 \x78\xB4 |0 \x5F\x98 |0 \x82\xAC |0 \x82\xB3 |0 \x61\x8F |0 \x82\xB7 |0 \x61\x93 |0 \x82\xAF |0 \x82\xAD |0 \x82\xB6 |0 \x61\x8E |0 \x82\xB5 |0 \x61\x90 |0 \x61\x91 |0 \x82\xAE |0 \x61\x92 |0 \x82\xB4 |0 \x82\xB0 |0 \x82\xB1 |0 \x82\xB2 |0 \x5F\x9E |0 \x85\xBC |0 \x85\xC8 |0 \x63\x54 |0 \x85\xC3 |0 \x85\xC5 |0 \x63\x52 |0 \x85\xBD |0 \x85\xC1 |0 \x85\xC4 |0 \x63\x50 |0 \x63\x53 |0 \x85\xC7 |0 \x85\xBF |0 \x85\xC0 |0 \x85\xC6 |0 \x85\xBE |0 \x85\xC2 |0 \x63\x51 |0 \x88\x60 |0 \x88\x5F |0 \x64\xC0 |0 \x88\x65 |0 \x64\xC2 |0 \x64\xBF |0 \x88\x61 |0 \x64\xC3 |0 \x88\x62 |0 \x88\x63 |0 \x88\x66 |0 \x64\xC1 |0 \x8A\x64 |0 \x8A\x67 |0 \x8A\x61 |0 \x8A\x63 |0 \x8A\x62 |0 \x8A\x65 |0 \x8A\x66 |0 \x88\x64 |0 \x8A\x60 |0 \x66\x98 |0 \x8B\xF9 |0 \x8B\xFC |0 \x8C\x41 |0 \x8B\xF7 |0 \x8B\xF8 |0 \x8B\xFB |0 \x8B\xFD |0 \x66\x99 |0 \x66\x97 |0 \x66\x96 |0 \x8B\xFA |0 \x8B\xF6 |0 \x8D\x99 |0 \x67\x5B |0 \x8D\x9A |0 \x8E\xB8 |0 \x67\xA7 |0 \x8E\xBA |0 \x67\xA8 |0 \x8E\xB7 |0 \x8E\xB9 |0 \x67\xF1 |0 \x8F\xA2 |0 \x67\xF0 |0 \x90\x6E |0 \x90\x6D |0 \x90\x6C |0 \x91\x59 |0 \x91\x5A |0 \x91\x5C |0 \x91\x5B |0 \x48\xD2 |3 \x69\xEF |0 \x4E\x8A |0 \x53\xD1 |0 \x75\x6A |0 \x5A\xFC |0 \x7C\x63 |0 \x65\xBA |0 \x8C\x42 |0 \x48\xD3 |3 \x4F\xC3 |0 \x58\xBC |0 \x58\xBB |0 \x78\xB6 |0 \x5A\xFD |0 \x78\xB8 |0 \x78\xB7 |0 \x7C\x64 |0 \x5D\x77 |0 \x7F\xAC |0 \x7F\xAF |0 \x7F\xAE |0 \x7F\xAD |0 \x82\xB8 |0 \x82\xBA |0 \x82\xB9 |0 \x63\x56 |0 \x63\x55 |0 \x64\xC4 |0 \x88\x67 |0 \x88\x69 |0 \x88\x68 |0 \x65\xBB |0 \x8C\x44 |0 \x8C\x43 |0 \x8D\x9B |0 \x67\x5C |0 \x67\xA9 |0 \x8F\xA4 |0 \x8F\xA3 |0 \x68\xA7 |0 \x48\xD4 |3 \x4F\xC4 |0 \x6F\x71 |0 \x53\xD2 |0 \x75\x6D |0 \x75\x6B |0 \x75\x6C |0 \x78\xBA |0 \x78\xBB |0 \x7C\x6B |0 \x78\xB9 |0 \x7C\x65 |0 \x7C\x69 |0 \x7C\x68 |0 \x7C\x6A |0 \x5D\x78 |0 \x7C\x67 |0 \x7C\x66 |0 \x7C\x6C |0 \x7F\xB2 |0 \x7F\xB0 |0 \x7F\xB1 |0 \x82\xBD |0 \x82\xBB |0 \x82\xBC |0 \x85\xC9 |0 \x88\x6A |0 \x88\x6B |0 \x65\xBC |0 \x8C\x45 |0 \x8D\x9C |0 \x67\x5D |0 \x8E\xBB |0 \x8F\xA5 |0 \x67\xF2 |0 \x90\x6F |0 \x91\x5D |0 \x48\xD5 |3 \x4F\xC5 |0 \x53\xD4 |0 \x53\xD5 |0 \x6F\x72 |0 \x6F\x73 |0 \x53\xD3 |0 \x56\x59 |0 \x56\x57 |0 \x56\x56 |0 \x56\x5D |0 \x56\x55 |0 \x56\x5E |0 \x72\x42 |0 \x56\x5B |0 \x56\x58 |0 \x56\x5C |0 \x56\x5A |0 \x56\x54 |0 \x58\xC4 |0 \x58\xBE |0 \x75\x71 |0 \x58\xC3 |0 \x58\xC5 |0 \x58\xBF |0 \x58\xC0 |0 \x75\x6F |0 \x58\xBD |0 \x75\x70 |0 \x58\xC2 |0 \x75\x6E |0 \x58\xC1 |0 \x5B\x4B |0 \x5B\x4D |0 \x78\xBE |0 \x5B\x4C |0 \x5B\x41 |0 \x5B\x45 |0 \x5D\x8C |0 \x7C\x71 |0 \x78\xC0 |0 \x5B\x46 |0 \x78\xC3 |0 \x78\xC4 |0 \x5B\x4A |0 \x78\xC6 |0 \x78\xC8 |0 \x78\xC9 |0 \x78\xBD |0 \x78\xBC |0 \x78\xCA |0 \x5B\x49 |0 \x78\xC7 |0 \x78\xC5 |0 \x5B\x47 |0 \x5B\x43 |0 \x5B\x4E |0 \x78\xC1 |0 \x78\xC2 |0 \x78\xBF |0 \x5B\x48 |0 \x5B\x44 |0 \x5B\x42 |0 \x7C\x70 |0 \x5D\x87 |0 \x5D\x82 |0 \x5D\x7C |0 \x5D\x8D |0 \x5D\x7D |0 \x5D\x79 |0 \x5D\x89 |0 \x5D\x86 |0 \x5D\x88 |0 \x5D\x7E |0 \x5D\x84 |0 \x5D\x7A |0 \x5D\x7B |0 \x7C\x78 |0 \x7C\x75 |0 \x7C\x6D |0 \x7C\x72 |0 \x5D\x8A |0 \x7C\x79 |0 \x5D\x8B |0 \x5D\x81 |0 \x7C\x6F |0 \x7C\x77 |0 \x7C\x73 |0 \x7C\x76 |0 \x7C\x74 |0 \x5D\x85 |0 \x7C\x6E |0 \x5D\x7F |0 \x7F\xB5 |0 \x5F\xA1 |0 \x5F\xA4 |0 \x7F\xB7 |0 \x5F\xAC |0 \x7F\xB6 |0 \x5F\xA6 |0 \x61\x98 |0 \x7F\xB8 |0 \x5F\xAB |0 \x7F\xB4 |0 \x5F\xAD |0 \x5F\xA2 |0 \x5D\x83 |0 \x5F\xA5 |0 \x5F\xA3 |0 \x5F\xA7 |0 \x5F\xA9 |0 \x5F\xA0 |0 \x5F\xAE |0 \x5F\xAA |0 \x5F\xA8 |0 \x7F\xB3 |0 \x61\x9F |0 \x61\x9B |0 \x61\xA2 |0 \x82\xC0 |0 \x61\xA3 |0 \x82\xCC |0 \x82\xC5 |0 \x61\x94 |0 \x82\xCD |0 \x82\xC7 |0 \x61\x9E |0 \x82\xC8 |0 \x61\x9D |0 \x82\xCB |0 \x61\x97 |0 \x82\xC9 |0 \x82\xBF |0 \x61\x96 |0 \x85\xD4 |0 \x61\x9C |0 \x61\x99 |0 \x61\xA1 |0 \x82\xBE |0 \x82\xC2 |0 \x61\x95 |0 \x82\xC1 |0 \x82\xC3 |0 \x82\xC4 |0 \x61\xA0 |0 \x82\xC6 |0 \x82\xCA |0 \x82\xCE |0 \x61\xA4 |0 \x63\x5C |0 \x85\xCF |0 \x85\xD5 |0 \x85\xD2 |0 \x85\xCA |0 \x85\xD6 |0 \x85\xCB |0 \x85\xD1 |0 \x63\x57 |0 \x63\x5D |0 \x85\xD7 |0 \x63\x59 |0 \x63\x63 |0 \x63\x5E |0 \x85\xD9 |0 \x85\xD3 |0 \x63\x5A |0 \x85\xCC |0 \x63\x64 |0 \x85\xCD |0 \x85\xCE |0 \x63\x65 |0 \x63\x62 |0 \x61\x9A |0 \x63\x58 |0 \x85\xDA |0 \x63\x66 |0 \x63\x5F |0 \x85\xD8 |0 \x63\x5B |0 \x63\x60 |0 \x63\x61 |0 \x64\xCC |0 \x88\x70 |0 \x88\x79 |0 \x88\x76 |0 \x88\x78 |0 \x64\xC9 |0 \x88\x71 |0 \x88\x77 |0 \x64\xC5 |0 \x88\x73 |0 \x64\xCD |0 \x88\x6F |0 \x88\x74 |0 \x88\x7B |0 \x85\xD0 |0 \x88\x75 |0 \x88\x6E |0 \x64\xC6 |0 \x88\x6D |0 \x64\xC7 |0 \x88\x7C |0 \x64\xC8 |0 \x88\x7A |0 \x64\xCB |0 \x88\x6C |0 \x64\xCA |0 \x88\x72 |0 \x8A\x6A |0 \x8A\x78 |0 \x8A\x73 |0 \x8A\x75 |0 \x8A\x69 |0 \x65\xBD |0 \x8A\x68 |0 \x65\xC0 |0 \x65\xBF |0 \x8A\x77 |0 \x8A\x6F |0 \x8A\x6C |0 \x8A\x72 |0 \x8A\x6B |0 \x8A\x6D |0 \x8A\x76 |0 \x8A\x74 |0 \x65\xBE |0 \x8A\x7B |0 \x8A\x79 |0 \x8A\x70 |0 \x8A\x7A |0 \x8A\x71 |0 \x8C\x49 |0 \x66\x9A |0 \x8C\x50 |0 \x8E\xBE |0 \x66\xA1 |0 \x8A\x6E |0 \x8C\x47 |0 \x66\x9D |0 \x8C\x48 |0 \x8C\x4D |0 \x66\x9F |0 \x66\xA0 |0 \x8C\x46 |0 \x8C\x4F |0 \x8C\x51 |0 \x8C\x4A |0 \x8C\x4C |0 \x8C\x4E |0 \x8C\x4B |0 \x8C\x52 |0 \x66\x9C |0 \x66\xA2 |0 \x66\x9E |0 \x66\x9B |0 \x8D\x9F |0 \x67\x62 |0 \x8D\x9D |0 \x8D\xA1 |0 \x8D\xA2 |0 \x67\x60 |0 \x8D\xA3 |0 \x8D\xA0 |0 \x8D\x9E |0 \x67\x63 |0 \x67\x5F |0 \x8D\xA4 |0 \x67\x61 |0 \x67\x5E |0 \x67\xAA |0 \x67\xAB |0 \x8E\xBD |0 \x8E\xBC |0 \x8E\xBF |0 \x8E\xC0 |0 \x67\xAC |0 \x8F\xA6 |0 \x8F\xAB |0 \x67\xF3 |0 \x8F\xA8 |0 \x8F\xA7 |0 \x8F\xAA |0 \x8F\xA9 |0 \x90\x73 |0 \x68\x68 |0 \x90\x72 |0 \x90\x70 |0 \x90\x71 |0 \x68\x8B |0 \x68\x8A |0 \x90\xD0 |0 \x90\xD1 |0 \x68\x8C |0 \x91\x5E |0 \x91\x5F |0 \x68\xB3 |0 \x68\xB9 |0 \x91\x99 |0 \x91\xB8 |0 \x48\xD6 |3 \x4F\xC6 |0 \x75\x72 |0 \x75\x73 |0 \x7C\x7A |0 \x7F\xB9 |0 \x82\xCF |0 \x64\xCF |0 \x64\xCE |0 \x8A\x7C |0 \x8C\x53 |0 \x90\x74 |0 \x48\xD7 |3 \x4F\xC7 |0 \x72\x43 |0 \x56\x5F |0 \x58\xC6 |0 \x7C\x7C |0 \x7C\x7B |0 \x61\xA5 |0 \x82\xD0 |0 \x61\xA6 |0 \x88\x7D |0 \x65\xC1 |0 \x68\xC2 |0 \x48\xD8 |3 \x4F\xC8 |0 \x6C\xEB |0 \x72\x44 |0 \x58\xC7 |0 \x75\x74 |0 \x75\x75 |0 \x78\xCB |0 \x5B\x4F |0 \x5D\x8E |0 \x7C\x7E |0 \x7C\x7D |0 \x7C\x7F |0 \x7F\xBA |0 \x7F\xBB |0 \x5F\xAF |0 \x63\x67 |0 \x61\xA7 |0 \x63\x68 |0 \x88\x82 |0 \x88\x7E |0 \x88\x81 |0 \x88\x7F |0 \x64\xD0 |0 \x8A\x7D |0 \x8C\x55 |0 \x8C\x54 |0 \x48\xD9 |3 \x6B\x45 |0 \x56\x61 |0 \x56\x60 |0 \x72\x45 |0 \x75\x76 |0 \x78\xCD |0 \x78\xCC |0 \x5B\x50 |0 \x7C\x82 |0 \x7C\x83 |0 \x7C\x81 |0 \x5D\x90 |0 \x5D\x8F |0 \x5F\xB1 |0 \x5F\xB0 |0 \x82\xD1 |0 \x85\xDD |0 \x85\xDB |0 \x85\xDC |0 \x63\x69 |0 \x88\x84 |0 \x88\x83 |0 \x8A\x81 |0 \x8A\x7F |0 \x8A\x7E |0 \x8C\x56 |0 \x91\x9A |0 \x48\xDA |3 \x4F\xC9 |0 \x53\xD6 |0 \x53\xD7 |0 \x56\x62 |0 \x56\x63 |0 \x72\x47 |0 \x72\x46 |0 \x75\x77 |0 \x58\xCD |0 \x58\xCB |0 \x58\xC8 |0 \x58\xCC |0 \x58\xCA |0 \x58\xC9 |0 \x5B\x51 |0 \x78\xD0 |0 \x5D\x95 |0 \x5B\x53 |0 \x5B\x58 |0 \x78\xD2 |0 \x5B\x5A |0 \x5B\x59 |0 \x5B\x5C |0 \x78\xD1 |0 \x78\xCE |0 \x5B\x56 |0 \x5B\x52 |0 \x5B\x54 |0 \x78\xCF |0 \x5B\x5B |0 \x5B\x57 |0 \x5B\x55 |0 \x5D\x97 |0 \x5D\x96 |0 \x5D\x94 |0 \x5D\x98 |0 \x5D\x92 |0 \x5D\x93 |0 \x5D\x91 |0 \x7C\x84 |0 \x7F\xBD |0 \x5F\xB3 |0 \x5F\xB4 |0 \x5F\xB2 |0 \x7F\xBC |0 \x7F\xBE |0 \x82\xD4 |0 \x82\xD6 |0 \x61\xB0 |0 \x82\xD7 |0 \x61\xA9 |0 \x82\xD3 |0 \x61\xA8 |0 \x61\xB2 |0 \x61\xAE |0 \x61\xAF |0 \x61\xAB |0 \x82\xD2 |0 \x61\xAA |0 \x82\xD8 |0 \x82\xD5 |0 \x61\xB1 |0 \x61\xAC |0 \x61\xAD |0 \x85\xDF |0 \x85\xE1 |0 \x85\xE0 |0 \x85\xE2 |0 \x63\x6A |0 \x85\xDE |0 \x64\xD4 |0 \x88\x85 |0 \x64\xD1 |0 \x64\xD5 |0 \x64\xD3 |0 \x64\xD2 |0 \x8A\x82 |0 \x8A\x85 |0 \x8A\x84 |0 \x8A\x83 |0 \x65\xC2 |0 \x8C\x57 |0 \x8C\x58 |0 \x66\xA3 |0 \x8C\x59 |0 \x66\xA4 |0 \x67\x65 |0 \x67\x64 |0 \x8E\xC1 |0 \x67\xAD |0 \x8E\xC2 |0 \x8F\xAC |0 \x67\xF4 |0 \x67\xF5 |0 \x90\x75 |0 \x68\x8E |0 \x48\xDB |3 \x4F\xCA |0 \x58\xCF |0 \x58\xCE |0 \x7C\x85 |0 \x7C\x86 |0 \x5F\xB5 |0 \x85\xE3 |0 \x61\xB3 |0 \x85\xE4 |0 \x88\x86 |0 \x48\xDC |3 \x4F\xCB |0 \x6F\x74 |0 \x53\xD9 |0 \x53\xD8 |0 \x72\x48 |0 \x56\x64 |0 \x72\x49 |0 \x75\x7A |0 \x75\x79 |0 \x75\x78 |0 \x78\xD4 |0 \x5B\x5F |0 \x78\xD3 |0 \x5B\x5E |0 \x78\xD5 |0 \x5B\x5D |0 \x7C\x88 |0 \x7C\x8B |0 \x7C\x89 |0 \x7C\x8A |0 \x7C\x8E |0 \x7C\x87 |0 \x7C\x8F |0 \x7C\x8C |0 \x7C\x8D |0 \x5F\xB7 |0 \x7F\xBF |0 \x5F\xB6 |0 \x82\xDC |0 \x82\xDA |0 \x61\xB4 |0 \x82\xD9 |0 \x82\xDB |0 \x61\xB5 |0 \x85\xE5 |0 \x85\xE6 |0 \x64\xD6 |0 \x8C\x5B |0 \x8C\x5D |0 \x8C\x5A |0 \x8C\x5C |0 \x8D\xA5 |0 \x8E\xC3 |0 \x91\x81 |0 \x48\xDD |3 \x4F\xCC |0 \x53\xDA |0 \x72\x4A |0 \x72\x4C |0 \x72\x4B |0 \x75\x7D |0 \x58\xD1 |0 \x75\x7B |0 \x58\xD0 |0 \x75\x7E |0 \x75\x7F |0 \x75\x7C |0 \x78\xE1 |0 \x5B\x67 |0 \x78\xD9 |0 \x78\xDF |0 \x5B\x62 |0 \x5B\x65 |0 \x78\xD8 |0 \x5B\x60 |0 \x78\xDC |0 \x7C\x95 |0 \x5B\x64 |0 \x78\xD7 |0 \x78\xDD |0 \x78\xDA |0 \x78\xE0 |0 \x78\xD6 |0 \x78\xDE |0 \x5B\x63 |0 \x5B\x66 |0 \x78\xDB |0 \x5B\x61 |0 \x5D\x9A |0 \x7C\x91 |0 \x5D\x99 |0 \x7C\x98 |0 \x7C\x97 |0 \x5D\xA0 |0 \x5D\xA1 |0 \x7C\x99 |0 \x5D\x9B |0 \x7C\x96 |0 \x5D\x9F |0 \x7C\x9B |0 \x7C\x92 |0 \x7C\x94 |0 \x5D\x9C |0 \x7C\x90 |0 \x7C\x93 |0 \x7C\x9A |0 \x5D\x9D |0 \x7C\x9C |0 \x5D\x9E |0 \x5F\xB8 |0 \x7F\xC4 |0 \x7F\xCA |0 \x7F\xC2 |0 \x7F\xCB |0 \x7F\xC1 |0 \x7F\xC6 |0 \x7F\xCC |0 \x7F\xC9 |0 \x7F\xC8 |0 \x7F\xC7 |0 \x7F\xC0 |0 \x7F\xC5 |0 \x7F\xC3 |0 \x61\xBA |0 \x61\xB7 |0 \x82\xE5 |0 \x82\xEA |0 \x82\xEC |0 \x82\xE9 |0 \x82\xE2 |0 \x82\xE4 |0 \x82\xEE |0 \x82\xEB |0 \x82\xE6 |0 \x82\xEF |0 \x82\xE3 |0 \x82\xED |0 \x61\xB8 |0 \x61\xBE |0 \x61\xBC |0 \x82\xDD |0 \x61\xBD |0 \x61\xB9 |0 \x82\xDE |0 \x82\xE0 |0 \x82\xDF |0 \x82\xE7 |0 \x82\xE8 |0 \x61\xBB |0 \x61\xB6 |0 \x82\xE1 |0 \x85\xF0 |0 \x63\x6C |0 \x85\xE7 |0 \x63\x6D |0 \x63\x70 |0 \x85\xEC |0 \x85\xE9 |0 \x63\x6F |0 \x85\xED |0 \x85\xEE |0 \x85\xE8 |0 \x85\xF1 |0 \x85\xEA |0 \x85\xEF |0 \x63\x6E |0 \x63\x6B |0 \x85\xEB |0 \x88\x8C |0 \x64\xD9 |0 \x64\xD7 |0 \x64\xDA |0 \x64\xD8 |0 \x88\x8B |0 \x88\x88 |0 \x88\x87 |0 \x88\x8A |0 \x88\x89 |0 \x8A\x93 |0 \x65\xC8 |0 \x8A\x8A |0 \x8A\x89 |0 \x65\xC3 |0 \x8A\x8F |0 \x8A\x8E |0 \x8A\x86 |0 \x8A\x91 |0 \x8A\x8B |0 \x65\xC7 |0 \x8A\x88 |0 \x8A\x90 |0 \x8A\x87 |0 \x65\xC4 |0 \x65\xC6 |0 \x8A\x8C |0 \x65\xC5 |0 \x8A\x8D |0 \x8A\x92 |0 \x8C\x61 |0 \x66\xA9 |0 \x8C\x5E |0 \x8C\x62 |0 \x66\xA6 |0 \x8C\x60 |0 \x66\xAB |0 \x66\xA8 |0 \x8C\x5F |0 \x66\xAA |0 \x8C\x63 |0 \x66\xA5 |0 \x67\x67 |0 \x67\x69 |0 \x8D\xA8 |0 \x67\x68 |0 \x8D\xA6 |0 \x66\xA7 |0 \x8D\xA7 |0 \x67\x66 |0 \x67\xAE |0 \x67\xB0 |0 \x8E\xC5 |0 \x67\xAF |0 \x8E\xC4 |0 \x8F\xB1 |0 \x67\xF6 |0 \x8F\xB0 |0 \x67\xF7 |0 \x8F\xAE |0 \x8F\xAD |0 \x8F\xB2 |0 \x8F\xB3 |0 \x90\x76 |0 \x8F\xAF |0 \x90\xD5 |0 \x90\xD2 |0 \x90\xD3 |0 \x90\xD4 |0 \x68\xA8 |0 \x91\x62 |0 \x91\x61 |0 \x91\x60 |0 \x91\x82 |0 \x91\xAE |0 \x91\x9B |0 \x68\xBA |0 \x48\xDE |3 \x4F\xCD |0 \x56\x65 |0 \x5D\xA2 |0 \x61\xBF |0 \x85\xF2 |0 \x65\xC9 |0 \x8C\x64 |0 \x91\x9C |0 \x48\xDF |3 \x4F\xCE |0 \x51\xD0 |0 \x53\xDC |0 \x53\xDB |0 \x56\x68 |0 \x72\x4D |0 \x56\x66 |0 \x72\x4E |0 \x56\x67 |0 \x75\x85 |0 \x75\x81 |0 \x58\xD2 |0 \x75\x84 |0 \x75\x83 |0 \x75\x82 |0 \x58\xD3 |0 \x75\x86 |0 \x75\x87 |0 \x78\xE8 |0 \x78\xE6 |0 \x78\xEA |0 \x78\xEB |0 \x78\xF1 |0 \x78\xED |0 \x78\xEF |0 \x78\xE7 |0 \x78\xE2 |0 \x78\xEE |0 \x78\xF0 |0 \x78\xE9 |0 \x78\xEC |0 \x78\xE3 |0 \x5B\x69 |0 \x78\xE5 |0 \x78\xE4 |0 \x5B\x68 |0 \x5B\x6A |0 \x5D\xA5 |0 \x7C\x9E |0 \x7C\xA0 |0 \x7C\x9F |0 \x7C\xA4 |0 \x5D\xA3 |0 \x7C\xA1 |0 \x7C\x9D |0 \x7C\xA2 |0 \x7C\xA3 |0 \x5D\xA4 |0 \x5D\xA6 |0 \x7C\xA5 |0 \x7F\xD0 |0 \x7F\xCF |0 \x7F\xCD |0 \x7F\xCE |0 \x5F\xBA |0 \x5F\xBC |0 \x5F\xB9 |0 \x5F\xBB |0 \x82\xF6 |0 \x82\xF7 |0 \x82\xF2 |0 \x82\xF3 |0 \x61\xC1 |0 \x61\xC6 |0 \x61\xC0 |0 \x61\xC7 |0 \x61\xC2 |0 \x82\xF4 |0 \x82\xF5 |0 \x82\xF1 |0 \x61\xC8 |0 \x61\xC4 |0 \x61\xC3 |0 \x61\xC5 |0 \x82\xF0 |0 \x85\xF4 |0 \x63\x72 |0 \x85\xF6 |0 \x63\x74 |0 \x85\xF9 |0 \x85\xF5 |0 \x85\xF3 |0 \x85\xF8 |0 \x63\x73 |0 \x85\xF7 |0 \x63\x71 |0 \x64\xDC |0 \x64\xDF |0 \x88\x8E |0 \x64\xDD |0 \x88\x8D |0 \x64\xDB |0 \x64\xDE |0 \x8A\x94 |0 \x8A\x95 |0 \x8A\x96 |0 \x65\xCA |0 \x8A\x97 |0 \x65\xCB |0 \x66\xAD |0 \x8C\x67 |0 \x8C\x68 |0 \x8C\x66 |0 \x8C\x65 |0 \x8C\x69 |0 \x66\xAC |0 \x8D\xAC |0 \x8D\xAA |0 \x8D\xAB |0 \x8D\xAD |0 \x8D\xA9 |0 \x8D\xAE |0 \x8E\xC7 |0 \x8E\xC8 |0 \x8E\xC6 |0 \x67\xB1 |0 \x8F\xB4 |0 \x67\xF8 |0 \x8F\xB5 |0 \x90\x78 |0 \x90\x77 |0 \x48\xE0 |3 \x4F\xCF |0 \x5B\x6B |0 \x5D\xA7 |0 \x5F\xBD |0 \x63\x76 |0 \x63\x75 |0 \x66\xAE |0 \x67\x49 |0 \x67\xB2 |0 \x48\xE1 |3 \x4F\xD0 |0 \x56\x69 |0 \x5D\xA8 |0 \x8C\x6A |0 \x48\xE2 |0 \x6B\x47 |0 \x4F\xD1 |0 \x4F\xD4 |0 \x4F\xD3 |0 \x4F\xD2 |0 \x6B\x46 |0 \x6C\xED |0 \x6C\xEF |0 \x51\xD1 |0 \x51\xD3 |0 \x6C\xEC |0 \x6C\xEE |0 \x51\xD2 |0 \x6C\xF1 |0 \x6C\xF0 |0 \x6C\xF2 |0 \x6F\x78 |0 \x6F\x76 |0 \x53\xDF |0 \x6F\x75 |0 \x53\xE4 |0 \x53\xE1 |0 \x53\xDE |0 \x53\xE5 |0 \x53\xE0 |0 \x53\xE3 |0 \x53\xE2 |0 \x6F\x77 |0 \x53\xDD |0 \x56\x6F |0 \x72\x50 |0 \x72\x56 |0 \x56\x6C |0 \x56\x73 |0 \x56\x6E |0 \x72\x53 |0 \x72\x55 |0 \x56\x71 |0 \x72\x4F |0 \x72\x52 |0 \x56\x6D |0 \x56\x6A |0 \x72\x51 |0 \x56\x70 |0 \x72\x54 |0 \x56\x72 |0 \x56\x6B |0 \x75\x89 |0 \x75\x8C |0 \x58\xD5 |0 \x58\xDF |0 \x58\xDB |0 \x75\x8A |0 \x58\xE3 |0 \x58\xDC |0 \x58\xE1 |0 \x58\xD7 |0 \x58\xD4 |0 \x58\xD6 |0 \x58\xE2 |0 \x75\x8B |0 \x58\xDA |0 \x58\xDD |0 \x58\xD9 |0 \x58\xDE |0 \x75\x8D |0 \x58\xE0 |0 \x58\xD8 |0 \x75\x88 |0 \x78\xF2 |0 \x5B\x6C |0 \x78\xF4 |0 \x5B\x6E |0 \x5B\x70 |0 \x78\xF3 |0 \x5B\x6D |0 \x5B\x71 |0 \x5B\x6F |0 \x5D\xAE |0 \x7C\xAA |0 \x5D\xB6 |0 \x7C\xA7 |0 \x5D\xB7 |0 \x5D\xAC |0 \x7C\xA8 |0 \x5D\xB1 |0 \x7C\xA9 |0 \x5D\xAA |0 \x5D\xA9 |0 \x5D\xB4 |0 \x5D\xB3 |0 \x5D\xB2 |0 \x5D\xB0 |0 \x5D\xB5 |0 \x7C\xA6 |0 \x5D\xAB |0 \x5D\xAD |0 \x5D\xAF |0 \x5F\xBF |0 \x5F\xC2 |0 \x5F\xC6 |0 \x5F\xC0 |0 \x5F\xC5 |0 \x5F\xC3 |0 \x5F\xBE |0 \x5F\xC4 |0 \x5F\xC1 |0 \x82\xFB |0 \x61\xCB |0 \x61\xC9 |0 \x82\xFC |0 \x61\xCC |0 \x61\xCA |0 \x82\xFA |0 \x82\xF9 |0 \x63\x7A |0 \x82\xF8 |0 \x63\x78 |0 \x63\x77 |0 \x85\xFA |0 \x61\xCD |0 \x63\x79 |0 \x85\xFB |0 \x63\x7C |0 \x85\xFC |0 \x63\x7B |0 \x64\xE1 |0 \x88\x90 |0 \x64\xE0 |0 \x64\xE5 |0 \x64\xE3 |0 \x64\xE4 |0 \x65\xCD |0 \x64\xE2 |0 \x88\x8F |0 \x85\xFD |0 \x65\xCC |0 \x65\xCE |0 \x66\xAF |0 \x66\xB0 |0 \x8D\xAF |0 \x68\x6A |0 \x68\x69 |0 \x48\xE3 |3 \x4F\xD6 |0 \x69\xF4 |0 \x56\x74 |0 \x69\xF1 |0 \x69\xF2 |0 \x69\xF0 |0 \x69\xF3 |0 \x6B\x4B |0 \x6B\x48 |0 \x6B\x4D |0 \x6B\x49 |0 \x4F\xD7 |0 \x4F\xDA |0 \x6B\x4A |0 \x4F\xD9 |0 \x6B\x4C |0 \x4F\xD8 |0 \x6C\xF5 |0 \x6C\xF7 |0 \x51\xD6 |0 \x6C\xF3 |0 \x6C\xF6 |0 \x6C\xF4 |0 \x51\xD4 |0 \x51\xD7 |0 \x51\xD5 |0 \x6F\x7A |0 \x6F\x7E |0 \x6F\x7B |0 \x53\xE8 |0 \x53\xE9 |0 \x6F\x7D |0 \x6F\x7F |0 \x6F\x82 |0 \x53\xE6 |0 \x6F\x81 |0 \x53\xE7 |0 \x75\x94 |0 \x6F\x7C |0 \x72\x57 |0 \x72\x60 |0 \x72\x5E |0 \x72\x59 |0 \x72\x5A |0 \x72\x5F |0 \x72\x61 |0 \x56\x76 |0 \x72\x5C |0 \x72\x58 |0 \x56\x75 |0 \x56\x77 |0 \x72\x5B |0 \x72\x62 |0 \x72\x5D |0 \x58\xE4 |0 \x75\x97 |0 \x75\x8F |0 \x75\x95 |0 \x75\x96 |0 \x58\xE5 |0 \x75\x8E |0 \x75\x90 |0 \x6F\x79 |0 \x75\x92 |0 \x75\x93 |0 \x75\x91 |0 \x5B\x73 |0 \x78\xFB |0 \x86\x41 |0 \x78\xFC |0 \x78\xF9 |0 \x58\xE6 |0 \x5B\x75 |0 \x78\xF8 |0 \x79\x41 |0 \x78\xFD |0 \x5B\x72 |0 \x79\x44 |0 \x78\xF7 |0 \x79\x43 |0 \x78\xF5 |0 \x79\x42 |0 \x78\xFA |0 \x5B\x74 |0 \x7C\xB1 |0 \x7C\xAC |0 \x7C\xB2 |0 \x7C\xAD |0 \x7C\xAB |0 \x7C\xAE |0 \x5D\xB8 |0 \x7C\xB0 |0 \x7C\xAF |0 \x5D\xB9 |0 \x5F\xC8 |0 \x5F\xC7 |0 \x7F\xD7 |0 \x7F\xDA |0 \x7F\xD2 |0 \x7F\xD6 |0 \x5F\xC9 |0 \x7F\xD5 |0 \x7F\xD3 |0 \x7F\xD9 |0 \x7F\xD4 |0 \x7F\xD1 |0 \x7F\xD8 |0 \x83\x45 |0 \x61\xD0 |0 \x8A\x98 |0 \x83\x42 |0 \x83\x43 |0 \x83\x41 |0 \x78\xF6 |0 \x61\xCF |0 \x83\x46 |0 \x82\xFD |0 \x61\xCE |0 \x61\xD1 |0 \x83\x44 |0 \x86\x42 |0 \x63\x7D |0 \x86\x43 |0 \x86\x44 |0 \x88\x91 |0 \x64\xE6 |0 \x8A\x99 |0 \x8A\x9A |0 \x8A\x9B |0 \x8C\x6C |0 \x8C\x6B |0 \x8D\xB1 |0 \x8D\xB0 |0 \x8E\xCA |0 \x8E\xCB |0 \x8E\xC9 |0 \x8F\xB6 |0 \x67\xF9 |0 \x48\xE4 |3 \x4F\xDB |0 \x53\xEB |0 \x53\xEA |0 \x56\x7A |0 \x56\x79 |0 \x72\x64 |0 \x72\x65 |0 \x72\x63 |0 \x56\x78 |0 \x75\x9B |0 \x75\x9C |0 \x75\x98 |0 \x58\xE7 |0 \x75\x99 |0 \x75\x9A |0 \x79\x47 |0 \x79\x49 |0 \x79\x45 |0 \x79\x48 |0 \x5B\x76 |0 \x79\x46 |0 \x5B\x77 |0 \x79\xF9 |0 \x5D\xBC |0 \x5D\xBB |0 \x5D\xBA |0 \x7C\xB3 |0 \x7C\xB4 |0 \x7F\xDC |0 \x7F\xDE |0 \x5F\xCD |0 \x5F\xCA |0 \x5F\xCC |0 \x5F\xCB |0 \x7F\xDD |0 \x7F\xDB |0 \x83\x4D |0 \x83\x4A |0 \x83\x4B |0 \x61\xD5 |0 \x83\x4C |0 \x83\x47 |0 \x83\x48 |0 \x61\xD2 |0 \x61\xD3 |0 \x83\x49 |0 \x61\xD4 |0 \x86\x48 |0 \x86\x49 |0 \x86\x46 |0 \x86\x47 |0 \x63\x7E |0 \x86\x45 |0 \x88\x95 |0 \x88\x92 |0 \x88\x94 |0 \x64\xE9 |0 \x88\x98 |0 \x64\xE8 |0 \x88\x96 |0 \x88\x99 |0 \x88\x97 |0 \x88\x93 |0 \x64\xE7 |0 \x8A\x9D |0 \x8A\x9E |0 \x8A\x9C |0 \x8A\xA0 |0 \x65\xCF |0 \x65\xD0 |0 \x8C\x6E |0 \x66\xB2 |0 \x8A\x9F |0 \x8C\x6D |0 \x66\xB1 |0 \x8D\xB4 |0 \x8D\xB5 |0 \x67\x6A |0 \x8D\xB3 |0 \x8D\xB2 |0 \x8E\xCC |0 \x67\xB3 |0 \x90\x79 |0 \x90\xD7 |0 \x90\xD6 |0 \x68\x8F |0 \x68\xA9 |0 \x90\xD8 |0 \x91\x83 |0 \x68\xBB |0 \x48\xE5 |3 \x4F\xDC |0 \x51\xD8 |0 \x5D\xBD |0 \x67\x6B |0 \x48\xE6 |3 \x4F\xDD |0 \x53\xEC |0 \x58\xE8 |0 \x5B\x78 |0 \x65\xD1 |0 \x48\xE7 |3 \x51\xD9 |0 \x6F\x84 |0 \x6F\x83 |0 \x72\x66 |0 \x56\x7D |0 \x56\x7B |0 \x56\x7F |0 \x72\x68 |0 \x56\x7E |0 \x56\x7C |0 \x72\x67 |0 \x58\xEB |0 \x75\xA2 |0 \x58\xEA |0 \x58\xEC |0 \x75\xA7 |0 \x58\xEE |0 \x75\xA4 |0 \x75\xA5 |0 \x75\x9D |0 \x58\xED |0 \x75\xA8 |0 \x75\x9F |0 \x75\xA0 |0 \x75\x9E |0 \x58\xE9 |0 \x75\xA6 |0 \x75\xA1 |0 \x75\xA3 |0 \x79\x55 |0 \x79\x54 |0 \x79\x52 |0 \x79\x4A |0 \x79\x59 |0 \x79\x4D |0 \x79\x57 |0 \x79\x5E |0 \x79\x56 |0 \x5B\x81 |0 \x5B\x7C |0 \x79\x4B |0 \x79\x51 |0 \x5B\x7E |0 \x79\x50 |0 \x5B\x7F |0 \x5B\x82 |0 \x79\x53 |0 \x5B\x79 |0 \x5B\x7A |0 \x79\x5F |0 \x79\x5D |0 \x79\x5C |0 \x79\x4E |0 \x79\x5A |0 \x5B\x7D |0 \x5B\x7B |0 \x79\x5B |0 \x79\x4C |0 \x79\x4F |0 \x79\x58 |0 \x80\x44 |0 \x7C\xBE |0 \x7C\xB7 |0 \x7C\xCA |0 \x7C\xD3 |0 \x7C\xBA |0 \x5D\xC8 |0 \x7C\xC7 |0 \x5D\xBE |0 \x5D\xC0 |0 \x5D\xCC |0 \x7C\xB8 |0 \x5D\xC1 |0 \x5D\xC3 |0 \x5D\xCD |0 \x5D\xC2 |0 \x5D\xCB |0 \x7C\xC0 |0 \x7C\xB5 |0 \x5D\xC9 |0 \x7C\xBF |0 \x5D\xC5 |0 \x7C\xD1 |0 \x5D\xCA |0 \x7C\xCF |0 \x7C\xC3 |0 \x7C\xCD |0 \x5D\xC7 |0 \x7C\xB6 |0 \x7C\xD0 |0 \x7C\xCB |0 \x7C\xD2 |0 \x5D\xBF |0 \x5D\xCE |0 \x5D\xC4 |0 \x7C\xBC |0 \x7C\xC4 |0 \x7C\xC8 |0 \x7C\xCC |0 \x5D\xC6 |0 \x7C\xBB |0 \x7C\xB9 |0 \x7C\xC5 |0 \x7C\xC2 |0 \x7C\xC1 |0 \x7C\xC6 |0 \x7C\xC9 |0 \x7C\xCE |0 \x7F\xE1 |0 \x5F\xCE |0 \x7F\xEB |0 \x7F\xE3 |0 \x5F\xD3 |0 \x5F\xD7 |0 \x7F\xF4 |0 \x7F\xFC |0 \x7F\xED |0 \x5F\xCF |0 \x7F\xF1 |0 \x7C\xBD |0 \x5F\xD0 |0 \x7F\xF8 |0 \x7F\xFD |0 \x7F\xF5 |0 \x7F\xF7 |0 \x80\x43 |0 \x7F\xF9 |0 \x7F\xE7 |0 \x7F\xF0 |0 \x5F\xD8 |0 \x5F\xD4 |0 \x7F\xE5 |0 \x7F\xF2 |0 \x5F\xD2 |0 \x7F\xEC |0 \x5F\xD1 |0 \x7F\xFA |0 \x7F\xE9 |0 \x7F\xE2 |0 \x5F\xD5 |0 \x80\x42 |0 \x7F\xE4 |0 \x7F\xF6 |0 \x7F\xF3 |0 \x7F\xEE |0 \x7F\xE0 |0 \x7F\xDF |0 \x7F\xE8 |0 \x7F\xFB |0 \x5F\xD6 |0 \x80\x41 |0 \x7F\xE6 |0 \x7F\xEA |0 \x61\xDA |0 \x61\xE2 |0 \x61\xDD |0 \x83\x6E |0 \x83\x6B |0 \x83\x53 |0 \x61\xD8 |0 \x61\xD7 |0 \x61\xDE |0 \x83\x51 |0 \x61\xDC |0 \x83\x5D |0 \x83\x4F |0 \x83\x50 |0 \x61\xD6 |0 \x83\x6D |0 \x61\xE0 |0 \x83\x60 |0 \x83\x65 |0 \x83\x5F |0 \x86\x5B |0 \x83\x5B |0 \x83\x63 |0 \x83\x61 |0 \x83\x54 |0 \x83\x4E |0 \x83\x69 |0 \x61\xDF |0 \x83\x6A |0 \x83\x64 |0 \x83\x59 |0 \x83\x57 |0 \x83\x52 |0 \x83\x5A |0 \x83\x67 |0 \x83\x56 |0 \x83\x66 |0 \x83\x6C |0 \x61\xDB |0 \x83\x62 |0 \x83\x68 |0 \x83\x5E |0 \x83\x58 |0 \x61\xD9 |0 \x7F\xEF |0 \x83\x5C |0 \x61\xE1 |0 \x83\x55 |0 \x86\x61 |0 \x63\x82 |0 \x86\x60 |0 \x86\x5D |0 \x86\x70 |0 \x63\x86 |0 \x86\x6D |0 \x86\x65 |0 \x86\x6F |0 \x86\x56 |0 \x86\x63 |0 \x63\x88 |0 \x86\x4E |0 \x86\x4C |0 \x86\x6E |0 \x86\x6C |0 \x86\x6B |0 \x86\x5A |0 \x86\x59 |0 \x86\x4F |0 \x63\x8A |0 \x86\x55 |0 \x86\x5F |0 \x86\x6A |0 \x63\x8D |0 \x86\x71 |0 \x64\xF1 |0 \x63\x8F |0 \x63\x89 |0 \x86\x53 |0 \x86\x5C |0 \x86\x4B |0 \x86\x4D |0 \x63\x7F |0 \x63\x8C |0 \x63\x85 |0 \x86\x54 |0 \x86\x64 |0 \x86\x5E |0 \x63\x8B |0 \x86\x4A |0 \x64\xEC |0 \x86\x66 |0 \x86\x69 |0 \x63\x87 |0 \x86\x58 |0 \x63\x8E |0 \x63\x84 |0 \x63\x83 |0 \x86\x62 |0 \x86\x68 |0 \x63\x81 |0 \x86\x51 |0 \x86\x67 |0 \x86\x52 |0 \x86\x57 |0 \x88\x9F |0 \x88\xA4 |0 \x64\xEE |0 \x64\xF0 |0 \x88\xAA |0 \x64\xEA |0 \x88\xB9 |0 \x88\xB0 |0 \x88\xA5 |0 \x88\xA6 |0 \x88\xAF |0 \x64\xF7 |0 \x88\xAE |0 \x88\x9E |0 \x88\xAD |0 \x88\xA1 |0 \x88\xBA |0 \x64\xF6 |0 \x64\xF4 |0 \x88\xA2 |0 \x88\xB5 |0 \x88\xA7 |0 \x88\xB4 |0 \x88\xB6 |0 \x88\x9D |0 \x64\xEF |0 \x88\xB7 |0 \x88\xAB |0 \x64\xF3 |0 \x88\xA8 |0 \x64\xF5 |0 \x88\xB1 |0 \x64\xED |0 \x88\xA3 |0 \x88\xB2 |0 \x88\xAC |0 \x86\x50 |0 \x88\xB3 |0 \x88\xA0 |0 \x64\xF2 |0 \x88\xB8 |0 \x64\xEB |0 \x88\x9B |0 \x8A\xAE |0 \x8A\xA7 |0 \x65\xD3 |0 \x8A\xA2 |0 \x8A\xB1 |0 \x8A\xA9 |0 \x88\xA9 |0 \x8A\xB3 |0 \x8A\xA3 |0 \x65\xD2 |0 \x8A\xAD |0 \x65\xD4 |0 \x65\xDC |0 \x65\xDA |0 \x8A\xAF |0 \x65\xDB |0 \x8A\xA5 |0 \x8A\xA6 |0 \x8A\xAB |0 \x8A\xB0 |0 \x88\x9A |0 \x65\xD5 |0 \x8A\xB8 |0 \x8A\xB5 |0 \x8A\xB9 |0 \x8A\xAC |0 \x8A\xA8 |0 \x8A\xB6 |0 \x8C\x79 |0 \x8A\xAA |0 \x65\xD8 |0 \x65\xD7 |0 \x88\x9C |0 \x65\xD9 |0 \x8A\xB2 |0 \x8A\xB4 |0 \x65\xD6 |0 \x8A\xB7 |0 \x8A\xA1 |0 \x8A\xA4 |0 \x8C\x83 |0 \x8C\x72 |0 \x66\xB6 |0 \x8C\x81 |0 \x8C\x70 |0 \x66\xB7 |0 \x8C\x7B |0 \x8C\x77 |0 \x66\xBC |0 \x8C\x82 |0 \x8C\x71 |0 \x8C\x74 |0 \x66\xB4 |0 \x8C\x84 |0 \x8C\x7C |0 \x8C\x7F |0 \x66\xBA |0 \x66\xBF |0 \x66\xBD |0 \x8C\x78 |0 \x8C\x73 |0 \x66\xB8 |0 \x66\xB9 |0 \x8C\x6F |0 \x66\xB5 |0 \x66\xB3 |0 \x66\xBB |0 \x8C\x7E |0 \x66\xBE |0 \x8C\x7A |0 \x8C\x85 |0 \x66\xC0 |0 \x8C\x76 |0 \x8C\x7D |0 \x8D\xC2 |0 \x8D\xD0 |0 \x8D\xC4 |0 \x8D\xCB |0 \x8C\x75 |0 \x8D\xC9 |0 \x8D\xB8 |0 \x8D\xCE |0 \x67\x6E |0 \x8D\xBC |0 \x8D\xCD |0 \x8D\xC3 |0 \x67\x6D |0 \x8D\xD2 |0 \x8D\xC5 |0 \x8D\xCA |0 \x8D\xCC |0 \x8D\xB6 |0 \x8D\xCF |0 \x8D\xC1 |0 \x8D\xC6 |0 \x8D\xBA |0 \x8D\xBE |0 \x8D\xD1 |0 \x8D\xC8 |0 \x8D\xB7 |0 \x8D\xBB |0 \x8D\xBD |0 \x8D\xC7 |0 \x67\x6C |0 \x8D\xC0 |0 \x8D\xB9 |0 \x8D\xBF |0 \x8E\xD0 |0 \x8E\xD5 |0 \x67\xBA |0 \x8E\xD7 |0 \x67\xB4 |0 \x8E\xD3 |0 \x8E\xD9 |0 \x67\xB9 |0 \x67\xB5 |0 \x67\xB6 |0 \x8E\xCF |0 \x8E\xD6 |0 \x67\xB8 |0 \x8E\xD4 |0 \x67\xB7 |0 \x8E\xCE |0 \x8E\xD2 |0 \x8E\xD1 |0 \x8E\xCD |0 \x8E\xD8 |0 \x67\xFA |0 \x8F\xBD |0 \x8F\xC0 |0 \x8F\xBC |0 \x8F\xBE |0 \x8F\xBF |0 \x8F\xB9 |0 \x8F\xBA |0 \x8F\xB7 |0 \x8F\xBB |0 \x8F\xB8 |0 \x67\xFB |0 \x67\xFC |0 \x90\x7B |0 \x90\x7D |0 \x90\x7C |0 \x90\x7E |0 \x68\x6C |0 \x90\x7A |0 \x68\x6B |0 \x68\x6D |0 \x90\xDA |0 \x90\xDB |0 \x68\x90 |0 \x90\xD9 |0 \x91\x64 |0 \x91\x63 |0 \x91\x65 |0 \x68\xAB |0 \x91\x66 |0 \x68\xAA |0 \x91\x67 |0 \x91\x84 |0 \x91\x87 |0 \x91\x86 |0 \x68\xB4 |0 \x91\x85 |0 \x68\xBE |0 \x68\xBC |0 \x68\xBD |0 \x68\xC3 |0 \x91\xB0 |0 \x91\xB1 |0 \x91\xAF |0 \x91\xB9 |0 \x48\xE8 |3 \x51\xDA |0 \x75\xA9 |0 \x79\x60 |0 \x83\x6F |0 \x8C\x86 |0 \x48\xE9 |3 \x51\xDB |0 \x53\xED |0 \x56\x81 |0 \x75\xAA |0 \x75\xAB |0 \x58\xEF |0 \x5B\x85 |0 \x79\x62 |0 \x79\x61 |0 \x5B\x89 |0 \x5B\x84 |0 \x79\x63 |0 \x5B\x86 |0 \x5B\x88 |0 \x5B\x87 |0 \x5B\x83 |0 \x5D\xCF |0 \x7C\xD7 |0 \x7C\xD5 |0 \x7C\xD6 |0 \x7C\xD4 |0 \x5F\xD9 |0 \x5F\xDC |0 \x5F\xDE |0 \x5F\xDD |0 \x5F\xDA |0 \x5F\xDB |0 \x83\x71 |0 \x83\x70 |0 \x61\xE3 |0 \x83\x72 |0 \x83\x73 |0 \x61\xE4 |0 \x86\x79 |0 \x86\x77 |0 \x88\xC0 |0 \x86\x75 |0 \x86\x76 |0 \x63\x90 |0 \x86\x72 |0 \x86\x7A |0 \x86\x74 |0 \x86\x78 |0 \x88\xBC |0 \x88\xBE |0 \x88\xBF |0 \x64\xFC |0 \x88\xBB |0 \x64\xFB |0 \x88\xBD |0 \x64\xF8 |0 \x64\xF9 |0 \x64\xFA |0 \x86\x73 |0 \x65\xDF |0 \x8A\xBC |0 \x8A\xBA |0 \x8A\xBB |0 \x65\xDD |0 \x65\xE0 |0 \x65\xDE |0 \x8C\x87 |0 \x8C\x88 |0 \x66\xC1 |0 \x8D\xD3 |0 \x8D\xD5 |0 \x8D\xD4 |0 \x67\x6F |0 \x67\xBB |0 \x8E\xDC |0 \x8E\xDB |0 \x8E\xDA |0 \x48\xEA |3 \x51\xDC |0 \x69\x8A |0 \x69\xF7 |0 \x4E\x8B |0 \x69\xF5 |0 \x69\xF8 |0 \x69\xF6 |0 \x6B\x4F |0 \x4F\xE1 |0 \x4F\xE2 |0 \x6B\x51 |0 \x4F\xDF |0 \x6B\x50 |0 \x6B\x4E |0 \x4F\xE0 |0 \x4F\xDE |0 \x6C\xF8 |0 \x6C\xFB |0 \x51\xDF |0 \x6C\xFA |0 \x6C\xF9 |0 \x51\xDE |0 \x51\xDD |0 \x51\xE1 |0 \x6C\xFC |0 \x51\xE0 |0 \x6F\x89 |0 \x53\xEF |0 \x53\xF0 |0 \x53\xF1 |0 \x6F\x8A |0 \x6F\x86 |0 \x53\xEE |0 \x6F\x87 |0 \x6F\x88 |0 \x6F\x85 |0 \x56\x88 |0 \x56\x85 |0 \x72\x69 |0 \x56\x86 |0 \x56\x89 |0 \x72\x6A |0 \x56\x84 |0 \x56\x82 |0 \x56\x83 |0 \x56\x87 |0 \x58\xF0 |0 \x75\xAE |0 \x58\xF8 |0 \x75\xAD |0 \x75\xB0 |0 \x58\xF4 |0 \x75\xAF |0 \x5B\x91 |0 \x58\xF2 |0 \x58\xF5 |0 \x58\xF1 |0 \x58\xF6 |0 \x58\xF7 |0 \x58\xF3 |0 \x75\xAC |0 \x5B\x8D |0 \x79\x65 |0 \x79\x69 |0 \x79\x68 |0 \x5B\x92 |0 \x5B\x8E |0 \x5B\x8F |0 \x79\x64 |0 \x79\x66 |0 \x79\x67 |0 \x5B\x8A |0 \x5B\x8C |0 \x5B\x90 |0 \x5B\x8B |0 \x7C\xDA |0 \x7C\xD8 |0 \x7C\xD9 |0 \x5D\xD1 |0 \x5D\xD2 |0 \x7C\xDB |0 \x5D\xD0 |0 \x5F\xDF |0 \x5F\xE1 |0 \x5F\xE0 |0 \x80\x45 |0 \x80\x46 |0 \x83\x75 |0 \x83\x74 |0 \x63\x91 |0 \x63\x92 |0 \x86\x7B |0 \x63\x93 |0 \x88\xC3 |0 \x88\xC1 |0 \x88\xC2 |0 \x64\xFD |0 \x8A\xBD |0 \x66\xC2 |0 \x48\xEB |0 \x65\x41 |0 \x48\xEC |3 \x51\xE2 |0 \x56\x8A |0 \x72\x6B |0 \x75\xB1 |0 \x58\xF9 |0 \x5B\x93 |0 \x79\x6A |0 \x79\x6C |0 \x5B\x95 |0 \x5B\x94 |0 \x5B\x96 |0 \x5B\x97 |0 \x79\x6B |0 \x5D\xD5 |0 \x5D\xD6 |0 \x5D\xD4 |0 \x5F\xE2 |0 \x5D\xD3 |0 \x7C\xDC |0 \x5F\xE3 |0 \x83\x76 |0 \x86\x7C |0 \x63\x94 |0 \x65\x42 |0 \x8A\xBE |0 \x8A\xC2 |0 \x65\xE3 |0 \x8A\xBF |0 \x65\xE4 |0 \x65\xE2 |0 \x8A\xC3 |0 \x65\xE5 |0 \x8A\xC1 |0 \x8C\x89 |0 \x65\xE1 |0 \x66\xC3 |0 \x90\xDC |0 \x48\xED |3 \x51\xE3 |0 \x58\xFB |0 \x58\xFA |0 \x5B\x98 |0 \x79\x6E |0 \x79\x6D |0 \x5B\x99 |0 \x7C\xE0 |0 \x5D\xDA |0 \x5D\xD7 |0 \x7C\xDF |0 \x5D\xD9 |0 \x7C\xDD |0 \x5D\xD8 |0 \x7C\xDE |0 \x80\x47 |0 \x5F\xE4 |0 \x83\x79 |0 \x61\xE5 |0 \x83\x77 |0 \x61\xE6 |0 \x61\xE7 |0 \x83\x78 |0 \x61\xE8 |0 \x86\x7D |0 \x63\x98 |0 \x63\x95 |0 \x63\x9A |0 \x86\x7F |0 \x63\x96 |0 \x86\x7E |0 \x63\x99 |0 \x63\x97 |0 \x88\xC6 |0 \x88\xC8 |0 \x65\x43 |0 \x88\xC7 |0 \x65\x44 |0 \x88\xC5 |0 \x88\xC4 |0 \x8A\xC5 |0 \x8A\xC4 |0 \x65\xE6 |0 \x8A\xC6 |0 \x8C\x8E |0 \x66\xC5 |0 \x8C\x8D |0 \x8C\x8A |0 \x66\xC4 |0 \x8C\x8B |0 \x8C\x8C |0 \x8D\xD6 |0 \x8D\xD7 |0 \x67\x70 |0 \x67\xBE |0 \x8E\xDD |0 \x67\xBC |0 \x67\xBD |0 \x8E\xDE |0 \x67\xFD |0 \x68\x41 |0 \x8F\xC1 |0 \x68\x91 |0 \x90\xDE |0 \x68\x93 |0 \x90\xDD |0 \x90\xDF |0 \x68\x92 |0 \x91\x68 |0 \x91\x9D |0 \x48\xEE |3 \x51\xE4 |0 \x5D\xDB |0 \x80\x48 |0 \x83\x7A |0 \x63\x9B |0 \x63\x9C |0 \x48\xEF |3 \x51\xE5 |0 \x61\xE9 |0 \x66\xC6 |0 \x48\xF0 |3 \x53\xF2 |0 \x63\x9D |0 \x68\x6E |0 \x48\xF1 |3 \x53\xF3 |0 \x75\xB2 |0 \x79\x6F |0 \x79\x71 |0 \x79\x70 |0 \x7C\xE4 |0 \x7C\xE1 |0 \x5D\xDC |0 \x5D\xDD |0 \x7C\xE2 |0 \x7C\xE3 |0 \x80\x4A |0 \x80\x4F |0 \x5F\xE5 |0 \x80\x49 |0 \x80\x4B |0 \x80\x52 |0 \x80\x4D |0 \x80\x51 |0 \x80\x4E |0 \x80\x4C |0 \x80\x50 |0 \x5F\xE6 |0 \x83\x7D |0 \x83\x7B |0 \x61\xEB |0 \x61\xEA |0 \x83\x7C |0 \x61\xEC |0 \x86\x83 |0 \x86\x82 |0 \x63\x9E |0 \x86\x81 |0 \x88\xC9 |0 \x88\xCB |0 \x88\xCD |0 \x88\xCC |0 \x65\x45 |0 \x88\xCA |0 \x8A\xCD |0 \x65\xE7 |0 \x8A\xCB |0 \x8A\xCE |0 \x65\xE8 |0 \x8A\xC9 |0 \x8A\xCC |0 \x8A\xCA |0 \x8A\xC7 |0 \x65\xE9 |0 \x8A\xC8 |0 \x8C\x8F |0 \x8C\x91 |0 \x8C\x90 |0 \x8D\xD8 |0 \x8D\xD9 |0 \x8E\xDF |0 \x68\x43 |0 \x68\x42 |0 \x90\x7F |0 \x90\x81 |0 \x68\x94 |0 \x90\xE0 |0 \x68\xB5 |0 \x48\xF2 |3 \x53\xF4 |0 \x5B\x9A |0 \x80\x54 |0 \x80\x53 |0 \x83\x7F |0 \x83\x7E |0 \x65\x46 |0 \x88\xCF |0 \x88\xCE |0 \x8A\xD1 |0 \x8A\xCF |0 \x8A\xD2 |0 \x8A\xD0 |0 \x66\xC7 |0 \x8C\x92 |0 \x8C\x93 |0 \x8C\x94 |0 \x8E\xE0 |0 \x8F\xC2 |0 \x90\xE1 |0 \x48\xF3 |3 \x53\xF5 |0 \x86\x84 |0 \x88\xD0 |0 \x48\xF4 |3 \x53\xF6 |0 \x5F\xE7 |0 \x86\x85 |0 \x65\xEA |0 \x8A\xD3 |0 \x66\xC8 |0 \x8D\xDA |0 \x8D\xDB |0 \x67\xBF |0 \x90\x82 |0 \x48\xF5 |3 \x53\xF7 |0 \x59\x41 |0 \x59\x42 |0 \x75\xB3 |0 \x5B\x9B |0 \x5B\x9C |0 \x79\x72 |0 \x5B\x9D |0 \x5D\xE1 |0 \x5D\xE3 |0 \x7C\xE6 |0 \x7C\xE7 |0 \x7C\xE5 |0 \x5D\xDE |0 \x5D\xDF |0 \x5D\xE2 |0 \x5D\xE0 |0 \x80\x55 |0 \x5F\xE8 |0 \x5F\xE9 |0 \x83\x87 |0 \x61\xEF |0 \x83\x82 |0 \x83\x81 |0 \x83\x86 |0 \x61\xED |0 \x63\xA5 |0 \x83\x83 |0 \x83\x88 |0 \x83\x85 |0 \x83\x84 |0 \x61\xEE |0 \x63\xA3 |0 \x86\x87 |0 \x63\x9F |0 \x86\x88 |0 \x86\x86 |0 \x63\xA2 |0 \x63\xA0 |0 \x63\xA4 |0 \x63\xA1 |0 \x88\xD1 |0 \x88\xD6 |0 \x88\xD2 |0 \x88\xD5 |0 \x65\x47 |0 \x87\xC0 |0 \x88\xD4 |0 \x88\xD3 |0 \x65\xED |0 \x65\xEB |0 \x65\xEE |0 \x65\xEC |0 \x8A\xD4 |0 \x8A\xD5 |0 \x8A\xD6 |0 \x65\xEF |0 \x8C\x98 |0 \x66\xCA |0 \x8C\x96 |0 \x66\xCB |0 \x8C\x95 |0 \x8C\x97 |0 \x66\xC9 |0 \x8D\xDF |0 \x8D\xDC |0 \x8D\xDD |0 \x8D\xDE |0 \x8E\xE1 |0 \x67\xC1 |0 \x67\xC0 |0 \x8F\xC4 |0 \x8F\xC3 |0 \x68\x44 |0 \x68\x6F |0 \x68\x95 |0 \x68\xAC |0 \x91\x69 |0 \x91\x9E |0 \x91\x9F |0 \x48\xF6 |3 \x53\xF8 |0 \x79\x73 |0 \x7C\xE8 |0 \x80\x56 |0 \x80\x57 |0 \x5F\xEA |0 \x5F\xEB |0 \x83\x89 |0 \x61\xF0 |0 \x65\x48 |0 \x8A\xD7 |0 \x65\xF0 |0 \x8C\x9B |0 \x66\xCC |0 \x8C\x9A |0 \x8C\x9C |0 \x8C\x99 |0 \x8E\xE4 |0 \x8D\xE0 |0 \x8D\xE1 |0 \x67\x71 |0 \x8E\xE3 |0 \x8E\xE2 |0 \x8F\xC5 |0 \x91\xA0 |0 \x48\xF7 |3 \x53\xF9 |0 \x48\xF8 |3 \x53\xFA |0 \x56\x8B |0 \x72\x6C |0 \x75\xB4 |0 \x5B\x9E |0 \x5B\xA1 |0 \x5B\x9F |0 \x79\x74 |0 \x5B\xA3 |0 \x5B\xA0 |0 \x5B\xA2 |0 \x5D\xE5 |0 \x7C\xE9 |0 \x7C\xEA |0 \x83\x8B |0 \x5D\xE4 |0 \x5D\xE6 |0 \x5D\xE7 |0 \x80\x59 |0 \x80\x58 |0 \x5F\xEC |0 \x5F\xED |0 \x80\x5A |0 \x83\x8A |0 \x5F\xEF |0 \x61\xF1 |0 \x5F\xEE |0 \x63\xA6 |0 \x83\x8C |0 \x61\xF3 |0 \x61\xF2 |0 \x83\x8D |0 \x83\x90 |0 \x83\x8E |0 \x83\x8F |0 \x61\xF4 |0 \x63\xAB |0 \x63\xA9 |0 \x63\xA8 |0 \x86\x8A |0 \x63\xAA |0 \x86\x89 |0 \x88\xD7 |0 \x86\x8B |0 \x63\xA7 |0 \x86\x8C |0 \x88\xDA |0 \x88\xD8 |0 \x88\xD9 |0 \x88\xDE |0 \x65\xF4 |0 \x88\xDD |0 \x88\xE0 |0 \x88\xDF |0 \x88\xDC |0 \x88\xDB |0 \x65\x49 |0 \x8A\xDA |0 \x8A\xD9 |0 \x65\xF3 |0 \x65\xF1 |0 \x65\xF2 |0 \x8A\xD8 |0 \x8C\x9F |0 \x66\xCD |0 \x8C\x9E |0 \x8C\x9D |0 \x66\xCE |0 \x8D\xE6 |0 \x8D\xE5 |0 \x8D\xE3 |0 \x8D\xE2 |0 \x67\x73 |0 \x67\x72 |0 \x8D\xE7 |0 \x8F\xC6 |0 \x68\x45 |0 \x8E\xE6 |0 \x67\xC2 |0 \x8E\xE5 |0 \x8D\xE4 |0 \x8F\xC7 |0 \x68\x70 |0 \x68\xAD |0 \x91\x6A |0 \x91\xA1 |0 \x48\xF9 |3 \x53\xFB |0 \x75\xB5 |0 \x88\xE1 |0 \x48\xFA |3 \x53\xFC |0 \x80\x5C |0 \x80\x5B |0 \x86\x8D |0 \x88\xE3 |0 \x88\xE2 |0 \x65\xF5 |0 \x8C\xA0 |0 \x8C\xA1 |0 \x67\x74 |0 \x91\xA2 |0 \x48\xFB |3 \x56\x8C |0 \x5B\xA5 |0 \x5B\xA4 |0 \x7C\xEB |0 \x7C\xED |0 \x5D\xE9 |0 \x7C\xEC |0 \x5D\xE8 |0 \x5D\xEA |0 \x7C\xEE |0 \x80\x5E |0 \x80\x60 |0 \x80\x5F |0 \x80\x62 |0 \x5F\xF0 |0 \x80\x61 |0 \x80\x5D |0 \x80\x63 |0 \x83\x97 |0 \x83\x9A |0 \x83\x9C |0 \x83\x92 |0 \x83\x96 |0 \x83\x93 |0 \x61\xF6 |0 \x61\xF9 |0 \x61\xFB |0 \x83\x94 |0 \x83\x95 |0 \x61\xFA |0 \x83\x98 |0 \x83\x9B |0 \x83\x99 |0 \x61\xFC |0 \x61\xF8 |0 \x83\x91 |0 \x61\xF5 |0 \x61\xF7 |0 \x63\xAD |0 \x86\x93 |0 \x86\x91 |0 \x86\x90 |0 \x86\x96 |0 \x86\x95 |0 \x86\x94 |0 \x86\x8F |0 \x63\xAC |0 \x86\x8E |0 \x86\x92 |0 \x63\xAE |0 \x88\xE6 |0 \x88\xEA |0 \x88\xE7 |0 \x88\xE9 |0 \x88\xE8 |0 \x88\xE5 |0 \x88\xEB |0 \x88\xEE |0 \x88\xEC |0 \x88\xED |0 \x65\x4B |0 \x65\x4A |0 \x88\xE4 |0 \x88\xEF |0 \x8A\xDF |0 \x8A\xE2 |0 \x8A\xE4 |0 \x8A\xE3 |0 \x8A\xDD |0 \x8A\xE1 |0 \x8A\xDC |0 \x8A\xDE |0 \x65\xF6 |0 \x8A\xDB |0 \x8A\xE0 |0 \x8C\xAE |0 \x8C\xA3 |0 \x66\xCF |0 \x66\xD0 |0 \x8C\xA2 |0 \x8C\xA7 |0 \x8C\xAD |0 \x8C\xA5 |0 \x8C\xAC |0 \x8C\xA9 |0 \x8C\xA8 |0 \x8C\xAB |0 \x8C\xA6 |0 \x8C\xA4 |0 \x8C\xAA |0 \x8D\xEE |0 \x8D\xEC |0 \x67\x75 |0 \x8D\xEB |0 \x8D\xF1 |0 \x8D\xEF |0 \x67\x76 |0 \x8D\xEA |0 \x8D\xE8 |0 \x8D\xE9 |0 \x67\x78 |0 \x8D\xED |0 \x67\x77 |0 \x8D\xF0 |0 \x8E\xE7 |0 \x8E\xED |0 \x8E\xE8 |0 \x67\xC6 |0 \x8E\xEE |0 \x67\xC5 |0 \x8E\xEC |0 \x8E\xEB |0 \x67\xC4 |0 \x8E\xEA |0 \x67\xC3 |0 \x8E\xE9 |0 \x8F\xCD |0 \x8F\xCF |0 \x8F\xCE |0 \x8F\xCB |0 \x68\x47 |0 \x8F\xC8 |0 \x8F\xCC |0 \x8F\xD1 |0 \x8F\xD0 |0 \x8F\xC9 |0 \x8F\xCA |0 \x68\x46 |0 \x90\x83 |0 \x68\x73 |0 \x90\x84 |0 \x68\x71 |0 \x68\x72 |0 \x90\xE2 |0 \x68\x96 |0 \x91\x88 |0 \x68\xB6 |0 \x91\xA3 |0 \x68\xB7 |0 \x91\xA4 |0 \x91\xA5 |0 \x91\xB3 |0 \x91\xB2 |0 \x68\xC6 |0 \x91\xBD |0 \x48\xFC |3 \x56\x8D |0 \x7C\xF0 |0 \x7C\xEF |0 \x5F\xF1 |0 \x5F\xF2 |0 \x80\x64 |0 \x83\x9D |0 \x86\x99 |0 \x61\xFD |0 \x63\xAF |0 \x86\x97 |0 \x86\x9A |0 \x63\xB0 |0 \x88\xF0 |0 \x86\x98 |0 \x8A\xE5 |0 \x65\xF7 |0 \x8C\xAF |0 \x8D\xF4 |0 \x8D\xF2 |0 \x8D\xF3 |0 \x8E\xEF |0 \x67\xC7 |0 \x8F\xD2 |0 \x68\x76 |0 \x68\x48 |0 \x68\x74 |0 \x68\x75 |0 \x90\xE3 |0 \x68\xAE |0 \x48\xFD |3 \x56\x8E |0 \x8A\xE6 |0 \x49\x41 |3 \x72\x6D |0 \x5D\xEB |0 \x80\x65 |0 \x5F\xF3 |0 \x80\x66 |0 \x83\x9F |0 \x83\x9E |0 \x63\xB2 |0 \x62\x41 |0 \x62\x42 |0 \x83\xA2 |0 \x83\xA1 |0 \x83\xA0 |0 \x86\x9B |0 \x86\x9E |0 \x86\x9D |0 \x86\x9C |0 \x63\xB1 |0 \x88\xF4 |0 \x88\xF2 |0 \x88\xF1 |0 \x88\xF3 |0 \x65\xF8 |0 \x8A\xE8 |0 \x8A\xE9 |0 \x65\xF9 |0 \x8A\xE7 |0 \x8C\xB1 |0 \x8C\xB0 |0 \x8C\xB3 |0 \x66\xD1 |0 \x8C\xB2 |0 \x8D\xF5 |0 \x8D\xF7 |0 \x8D\xF6 |0 \x8E\xF0 |0 \x8E\xF3 |0 \x8E\xF1 |0 \x8E\xF2 |0 \x8F\xD3 |0 \x68\x49 |0 \x90\x85 |0 \x90\x86 |0 \x90\x87 |0 \x68\x97 |0 \x68\xAF |0 \x91\xA6 |0 \x49\x42 |3 \x56\x8F |0 \x62\x43 |0 \x63\xB3 |0 \x8A\xEA |0 \x8F\xD4 |0 \x91\xB4 |0 \x49\x43 |3 \x72\x6E |0 \x68\xC7 |0 \x49\x44 |3 \x56\x90 |0 \x86\x9F |0 \x8A\xEB |0 \x8C\xB4 |0 \x8E\xF4 |0 \x8F\xD5 |0 \x49\x45 |3 \x56\x91 |0 \x80\x67 |0 \x80\x68 |0 \x5F\xF4 |0 \x5F\xF5 |0 \x83\xA4 |0 \x62\x45 |0 \x62\x44 |0 \x83\xA3 |0 \x88\xF5 |0 \x8A\xEC |0 \x8A\xEE |0 \x8A\xED |0 \x65\xFC |0 \x65\xFB |0 \x65\xFA |0 \x67\xC9 |0 \x8E\xF5 |0 \x67\xC8 |0 \x8F\xD7 |0 \x8F\xD6 |0 \x68\x98 |0 \x90\xE4 |0 \x49\x46 |3 \x59\x43 |0 \x7C\xF1 |0 \x80\x6B |0 \x80\x69 |0 \x80\x6A |0 \x83\xAD |0 \x83\xA8 |0 \x83\xA5 |0 \x83\xAC |0 \x83\xAE |0 \x62\x47 |0 \x83\xAB |0 \x83\xA7 |0 \x83\xA6 |0 \x83\xAA |0 \x83\xA9 |0 \x62\x46 |0 \x86\xAA |0 \x86\xA5 |0 \x86\xA3 |0 \x86\xAC |0 \x86\xA4 |0 \x86\xA0 |0 \x86\xA6 |0 \x86\xA1 |0 \x89\x41 |0 \x86\xA2 |0 \x86\xAD |0 \x86\xA9 |0 \x63\xB4 |0 \x86\xA8 |0 \x86\xA7 |0 \x86\xAB |0 \x88\xF6 |0 \x88\xF9 |0 \x88\xF8 |0 \x89\x43 |0 \x88\xFB |0 \x89\x42 |0 \x88\xFD |0 \x88\xFC |0 \x88\xFA |0 \x88\xF7 |0 \x65\x4E |0 \x65\x4D |0 \x65\x4F |0 \x65\x4C |0 \x89\x44 |0 \x8A\xF4 |0 \x8A\xF7 |0 \x8A\xF5 |0 \x8A\xF9 |0 \x8A\xFA |0 \x8A\xF2 |0 \x66\x44 |0 \x8A\xF3 |0 \x8A\xF1 |0 \x8A\xF8 |0 \x8A\xF0 |0 \x8A\xEF |0 \x66\x43 |0 \x66\x41 |0 \x65\xFD |0 \x8A\xF6 |0 \x8C\xBD |0 \x8C\xC3 |0 \x66\xD4 |0 \x8C\xBE |0 \x8C\xC1 |0 \x8C\xC5 |0 \x66\xD5 |0 \x8C\xC0 |0 \x8C\xB8 |0 \x8C\xB7 |0 \x8C\xC4 |0 \x8C\xBB |0 \x8C\xB9 |0 \x8C\xC2 |0 \x8C\xBA |0 \x66\xD3 |0 \x66\xD2 |0 \x8C\xB5 |0 \x8C\xB6 |0 \x8C\xBF |0 \x8C\xBC |0 \x8D\xFA |0 \x8D\xFD |0 \x66\x42 |0 \x8D\xFB |0 \x8E\x44 |0 \x8E\x42 |0 \x8D\xF9 |0 \x8E\x47 |0 \x8D\xF8 |0 \x67\x7A |0 \x8E\x43 |0 \x8D\xFC |0 \x67\x79 |0 \x8E\x46 |0 \x8E\x45 |0 \x8E\xF8 |0 \x8E\xF7 |0 \x8F\x41 |0 \x8E\xFA |0 \x8E\xFD |0 \x67\xCB |0 \x8E\xFB |0 \x8E\xFC |0 \x8E\xF6 |0 \x8E\xF9 |0 \x67\xCA |0 \x68\x4B |0 \x8F\xE2 |0 \x8F\xDD |0 \x8F\xE1 |0 \x8F\xE4 |0 \x8F\xE0 |0 \x8F\xDC |0 \x68\x4D |0 \x8F\xDF |0 \x8F\xE3 |0 \x68\x4C |0 \x8F\xDA |0 \x8E\x41 |0 \x8F\xDE |0 \x8F\xDB |0 \x8F\xD8 |0 \x8F\xD9 |0 \x68\x4A |0 \x90\x8B |0 \x90\x8D |0 \x90\x90 |0 \x90\x8C |0 \x90\x91 |0 \x90\x8A |0 \x90\x88 |0 \x68\x77 |0 \x90\x8E |0 \x68\x79 |0 \x68\x78 |0 \x90\x89 |0 \x90\x8F |0 \x90\xE9 |0 \x68\x99 |0 \x90\xEA |0 \x90\xE8 |0 \x90\xE5 |0 \x90\xE7 |0 \x90\xE6 |0 \x91\x6B |0 \x91\x6D |0 \x91\x6C |0 \x91\x8B |0 \x91\x8A |0 \x91\x89 |0 \x91\x8C |0 \x68\xBF |0 \x68\xC0 |0 \x91\xBA |0 \x91\xBE |0 \x49\x47 |3 \x59\x44 |0 \x79\x75 |0 \x7C\xF4 |0 \x5D\xEC |0 \x7C\xF2 |0 \x7C\xF3 |0 \x80\x6C |0 \x80\x6D |0 \x5F\xF8 |0 \x5F\xF6 |0 \x80\x6E |0 \x5F\xF7 |0 \x83\xB3 |0 \x83\xB6 |0 \x83\xB0 |0 \x83\xB7 |0 \x83\xAF |0 \x83\xB1 |0 \x83\xB2 |0 \x83\xB5 |0 \x62\x4A |0 \x83\xBA |0 \x83\xB9 |0 \x62\x48 |0 \x83\xB4 |0 \x83\xB8 |0 \x62\x49 |0 \x86\xB7 |0 \x63\xB9 |0 \x86\xB2 |0 \x63\xB5 |0 \x86\xAF |0 \x86\xB5 |0 \x86\xB8 |0 \x63\xBA |0 \x86\xB4 |0 \x86\xB1 |0 \x86\xB9 |0 \x86\xB0 |0 \x86\xB6 |0 \x63\xB6 |0 \x86\xAE |0 \x63\xB7 |0 \x63\xB8 |0 \x86\xB3 |0 \x89\x56 |0 \x89\x49 |0 \x89\x4A |0 \x89\x4D |0 \x89\x4B |0 \x89\x45 |0 \x89\x48 |0 \x89\x52 |0 \x89\x4C |0 \x65\x50 |0 \x89\x54 |0 \x89\x51 |0 \x65\x51 |0 \x89\x53 |0 \x89\x46 |0 \x89\x4F |0 \x89\x50 |0 \x89\x4E |0 \x8B\x41 |0 \x8B\x43 |0 \x8B\x46 |0 \x8A\xFD |0 \x66\x45 |0 \x8B\x48 |0 \x8A\xFC |0 \x8B\x49 |0 \x8B\x45 |0 \x8B\x47 |0 \x8B\x4B |0 \x8B\x44 |0 \x8B\x4C |0 \x8B\x42 |0 \x8A\xFB |0 \x66\x46 |0 \x8B\x4A |0 \x66\x47 |0 \x66\xD7 |0 \x89\x47 |0 \x8C\xDF |0 \x8C\xD6 |0 \x66\xD9 |0 \x8C\xD2 |0 \x66\xDA |0 \x8C\xDB |0 \x8C\xD5 |0 \x8C\xCB |0 \x66\xD8 |0 \x8C\xD8 |0 \x8C\xD3 |0 \x8C\xD4 |0 \x8C\xC6 |0 \x8C\xCD |0 \x8C\xDC |0 \x8C\xD9 |0 \x8C\xD1 |0 \x8C\xDD |0 \x8C\xCC |0 \x8C\xC7 |0 \x8C\xDA |0 \x8C\xC9 |0 \x8C\xD7 |0 \x8C\xCE |0 \x8C\xDE |0 \x8C\xCA |0 \x66\xD6 |0 \x8C\xC8 |0 \x8C\xCF |0 \x8C\xD0 |0 \x8E\x4E |0 \x8E\x4C |0 \x8E\x51 |0 \x8E\x5D |0 \x8E\x54 |0 \x8E\x4D |0 \x8E\x49 |0 \x8E\x56 |0 \x8E\x4F |0 \x8E\x52 |0 \x8E\x4B |0 \x8E\x59 |0 \x8E\x48 |0 \x8E\x50 |0 \x8E\x55 |0 \x8E\x57 |0 \x8E\x5A |0 \x8E\x4A |0 \x8E\x5E |0 \x8E\x5F |0 \x8E\x58 |0 \x8E\x5C |0 \x8E\x53 |0 \x8F\x51 |0 \x8F\x54 |0 \x67\xCC |0 \x8F\x53 |0 \x8F\x58 |0 \x8F\x56 |0 \x67\xCD |0 \x8F\x4D |0 \x8F\x43 |0 \x8F\x42 |0 \x67\xCF |0 \x8F\x4F |0 \x8F\x50 |0 \x8F\x4C |0 \x8F\x44 |0 \x8F\x49 |0 \x8E\x5B |0 \x8F\x45 |0 \x67\xCE |0 \x8F\x4B |0 \x8F\x4A |0 \x8F\x46 |0 \x8F\x52 |0 \x8F\x47 |0 \x8F\xE9 |0 \x8F\x55 |0 \x8F\x57 |0 \x8F\x4E |0 \x8F\x48 |0 \x8F\xEA |0 \x8F\xEC |0 \x8F\xE6 |0 \x68\x4E |0 \x8F\xF3 |0 \x8F\xF1 |0 \x68\x4F |0 \x8F\xF0 |0 \x8F\xEF |0 \x8F\xE8 |0 \x8F\xE5 |0 \x8F\xEB |0 \x8F\xF4 |0 \x8F\xE7 |0 \x8F\xED |0 \x90\x9A |0 \x90\x9F |0 \x90\x95 |0 \x90\x98 |0 \x68\x7A |0 \x90\x9C |0 \x90\xA3 |0 \x8F\xEE |0 \x90\x96 |0 \x90\xA0 |0 \x90\xA4 |0 \x90\x9B |0 \x90\x94 |0 \x90\x9E |0 \x90\x9D |0 \x90\xA2 |0 \x90\xA1 |0 \x8F\xF2 |0 \x90\x99 |0 \x90\x93 |0 \x90\x97 |0 \x68\x9A |0 \x68\x9B |0 \x90\x92 |0 \x90\xF5 |0 \x90\xEC |0 \x90\xF4 |0 \x90\xF1 |0 \x90\xF2 |0 \x90\xEB |0 \x90\xEE |0 \x90\xF6 |0 \x90\xF0 |0 \x90\xEF |0 \x90\xED |0 \x90\xF3 |0 \x91\x6E |0 \x91\x6F |0 \x91\x71 |0 \x91\x70 |0 \x91\x73 |0 \x91\x72 |0 \x91\x8E |0 \x91\x8D |0 \x91\xA7 |0 \x91\xA8 |0 \x91\xB5 |0 \x68\xC4 |0 \x68\xC8 |0 \x91\xBF |0 \x68\xC9 |0 \x49\x48 |3 \x59\x45 |0 \x67\x7B |0 \x8F\x59 |0 \x68\x9C |0 \x68\x9D |0 \x49\x49 |3 \x59\x46 |0 \x7C\xF5 |0 \x5D\xED |0 \x83\xBB |0 \x86\xBB |0 \x86\xBC |0 \x86\xBA |0 \x89\x58 |0 \x89\x57 |0 \x65\x52 |0 \x8B\x4E |0 \x89\x59 |0 \x8B\x4D |0 \x8C\xE1 |0 \x66\xDB |0 \x66\xDD |0 \x8C\xE0 |0 \x66\xDC |0 \x8E\x60 |0 \x8E\x62 |0 \x8E\x61 |0 \x8F\x5A |0 \x67\xD0 |0 \x68\x7B |0 \x90\xF7 |0 \x91\x74 |0 \x91\xC2 |0 \x49\x4A |3 \x59\x47 |0 \x80\x6F |0 \x62\x4B |0 \x86\xBE |0 \x86\xBD |0 \x89\x5A |0 \x66\xDE |0 \x67\x7C |0 \x8F\xF5 |0 \x91\xBB |0 \x49\x4B |3 \x59\x48 |0 \x5F\xF9 |0 \x62\x4C |0 \x8C\xE2 |0 \x90\xA5 |0 \x49\x4C |3 \x5B\xA6 |0 \x89\x5B |0 \x68\xB0 |0 \x49\x4D |3 \x5B\xA7 |0 \x62\x4D |0 \x65\x53 |0 \x90\xA6 |0 \x49\x4E |3 \x5B\xA8 |0 \x83\xBC |0 \x63\xBC |0 \x86\xBF |0 \x86\xC0 |0 \x63\xBB |0 \x89\x5C |0 \x65\x57 |0 \x65\x55 |0 \x65\x56 |0 \x65\x54 |0 \x8B\x4F |0 \x66\x48 |0 \x8E\x64 |0 \x8E\x63 |0 \x8E\x66 |0 \x8E\x65 |0 \x67\x7D |0 \x8F\x5B |0 \x8F\x5D |0 \x8F\x5C |0 \x67\xD1 |0 \x8F\xF6 |0 \x90\xA7 |0 \x90\xA8 |0 \x68\x7C |0 \x91\x75 |0 \x91\x8F |0 \x68\xC1 |0 \x49\x4F |3 \x79\x76 |0 \x86\xC1 |0 \x89\x5D |0 \x8C\xE3 |0 \x49\x50 |3 \x7C\xF6 |0 \x89\x5E |0 \x8B\x51 |0 \x8B\x50 |0 \x90\xA9 |0 \x68\x9E |0 \x91\x76 |0 \x91\x90 |0 \x49\x51 |3 \x5D\xEE |0 \x83\xBD |0 \x83\xBE |0 \x86\xC2 |0 \x49\x52 |3 \x5D\xEF |0 \x66\x49 |0 \x8B\x52 |0 \x8F\x5F |0 \x67\xD2 |0 \x8F\x60 |0 \x8F\x5E |0 \x90\xAA |0 \x90\xF8 |0 \x49\x53 |3 \x5D\xF0 |0 \x89\x61 |0 \x89\x60 |0 \x89\x5F |0 \x8B\x53 |0 \x8B\x57 |0 \x8B\x56 |0 \x8B\x55 |0 \x8B\x54 |0 \x66\x4A |0 \x8C\xE4 |0 \x8E\x68 |0 \x67\x7E |0 \x8E\x67 |0 \x8F\x61 |0 \x8F\xF9 |0 \x8F\xF8 |0 \x68\x50 |0 \x8F\xF7 |0 \x90\xAD |0 \x90\xAC |0 \x90\xAB |0 \x49\x54 |3 \x5F\xFA |0 \x86\xC3 |0 \x65\x58 |0 \x8C\xE5 |0 \x8C\xE6 |0 \x8F\xFA |0 \x90\xAE |0 \x90\xF9 |0 \x91\x77 |0 \x91\xA9 |0 \x91\xC4 |0 \x49\x55 |3 \x5F\xFB |0 \x65\x59 |0 \x8B\x58 |0 \x8C\xE7 |0 \x8F\x62 |0 \x90\xAF |0 \x49\x56 |3 \x62\x4F |0 \x89\x62 |0 \x8B\x59 |0 \x8C\xE8 |0 \x8C\xE9 |0 \x8C\xEA |0 \x8E\x6D |0 \x8E\x69 |0 \x67\xD3 |0 \x8E\x6C |0 \x8E\x6B |0 \x67\x7F |0 \x8E\x6A |0 \x67\x82 |0 \x67\x81 |0 \x8F\x64 |0 \x8F\x63 |0 \x67\xD4 |0 \x67\xD5 |0 \x68\x52 |0 \x8F\xFB |0 \x68\x51 |0 \x90\xB2 |0 \x90\xB3 |0 \x90\xB1 |0 \x90\xB0 |0 \x68\xA0 |0 \x90\xFA |0 \x90\xFB |0 \x90\xFC |0 \x68\x9F |0 \x91\x78 |0 \x91\x7B |0 \x91\x7A |0 \x91\x79 |0 \x91\xC3 |0 \x49\x57 |3 \x63\xBD |0 \x66\x51 |0 \x8E\x6E |0 \x8F\x65 |0 \x68\x53 |0 \x8F\xFC |0 \x91\xC5 |0 \x49\x58 |3 \x63\xBE |0 \x49\x59 |3 \x89\x63 |0 \x8F\xFD |0 \x91\x91 |0 \xC2\x41 |0 \xC2\x42 |0 \xC2\x43 |0 \xC2\x44 |0 \xC2\x45 |0 \xC2\x46 |0 \xC2\x47 |0 \xC2\x48 |0 \xC2\x49 |0 \xC2\x4A |0 \xC2\x4B |0 \xC2\x4C |0 \xC2\x4D |0 \xC2\x4E |0 \xC2\x4F |0 \xC2\x50 |0 \xC2\x51 |0 \xC2\x52 |0 \xC2\x53 |0 \xC2\x54 |0 \xC2\x55 |0 \xC2\x56 |0 \xC2\x57 |0 \xC2\x58 |0 \xC2\x59 |0 \xC2\x5A |0 \xC2\x5B |0 \xC2\x5C |0 \xC2\x5D |0 \xC2\x5E |0 \xC2\x5F |0 \xC2\x60 |0 \xC2\x61 |0 \xC2\x62 |0 \xC2\x63 |0 \xC2\x64 |0 \xC2\x65 |0 \xC2\x66 |0 \xC2\x67 |0 \xC2\x68 |0 \xC2\x69 |0 \xC2\x6A |0 \xC2\x6B |0 \xC2\x6C |0 \xC2\x6D |0 \xC2\x6E |0 \xC2\x6F |0 \xC2\x70 |0 \xC2\x71 |0 \xC2\x72 |0 \xC2\x73 |0 \xC2\x74 |0 \xC2\x75 |0 \xC2\x76 |0 \xC2\x77 |0 \xC2\x78 |0 \xC2\x79 |0 \xC2\x7A |0 \xC2\x7B |0 \xC2\x7C |0 \xC2\x7D |0 \xC2\x7E |0 \xC2\x7F |0 \xC2\x81 |0 \xC2\x82 |0 \xC2\x83 |0 \xC2\x84 |0 \xC2\x85 |0 \xC2\x86 |0 \xC2\x87 |0 \xC2\x88 |0 \xC2\x89 |0 \xC2\x8A |0 \xC2\x8B |0 \xC2\x8C |0 \xC2\x8D |0 \xC2\x8E |0 \xC2\x8F |0 \xC2\x90 |0 \xC2\x91 |0 \xC2\x92 |0 \xC2\x93 |0 \xC2\x94 |0 \xC2\x95 |0 \xC2\x96 |0 \xC2\x97 |0 \xC2\x98 |0 \xC2\x99 |0 \xC2\x9A |0 \xC2\x9B |0 \xC2\x9C |0 \xC2\x9D |0 \xC2\x9E |0 \xC2\x9F |0 \xC2\xA0 |0 \xC2\xA1 |0 \xC2\xA2 |0 \xC2\xA3 |0 \xC2\xA4 |0 \xC2\xA5 |0 \xC2\xA6 |0 \xC2\xA7 |0 \xC2\xA8 |0 \xC2\xA9 |0 \xC2\xAA |0 \xC2\xAB |0 \xC2\xAC |0 \xC2\xAD |0 \xC2\xAE |0 \xC2\xAF |0 \xC2\xB0 |0 \xC2\xB1 |0 \xC2\xB2 |0 \xC2\xB3 |0 \xC2\xB4 |0 \xC2\xB5 |0 \xC2\xB6 |0 \xC2\xB7 |0 \xC2\xB8 |0 \xC2\xB9 |0 \xC2\xBA |0 \xC2\xBB |0 \xC2\xBC |0 \xC2\xBD |0 \xC2\xBE |0 \xC2\xBF |0 \xC2\xC0 |0 \xC2\xC1 |0 \xC2\xC2 |0 \xC2\xC3 |0 \xC2\xC4 |0 \xC2\xC5 |0 \xC2\xC6 |0 \xC2\xC7 |0 \xC2\xC8 |0 \xC2\xC9 |0 \xC2\xCA |0 \xC2\xCB |0 \xC2\xCC |0 \xC2\xCD |0 \xC2\xCE |0 \xC2\xCF |0 \xC2\xD0 |0 \xC2\xD1 |0 \xC2\xD2 |0 \xC2\xD3 |0 \xC2\xD4 |0 \xC2\xD5 |0 \xC2\xD6 |0 \xC2\xD7 |0 \xC2\xD8 |0 \xC2\xD9 |0 \xC2\xDA |0 \xC2\xDB |0 \xC2\xDC |0 \xC2\xDD |0 \xC2\xDE |0 \xC2\xDF |0 \xC2\xE0 |0 \xC2\xE1 |0 \xC2\xE2 |0 \xC2\xE3 |0 \xC2\xE4 |0 \xC2\xE5 |0 \xC2\xE6 |0 \xC2\xE7 |0 \xC2\xE8 |0 \xC2\xE9 |0 \xC2\xEA |0 \xC2\xEB |0 \xC2\xEC |0 \xC2\xED |0 \xC2\xEE |0 \xC2\xEF |0 \xC2\xF0 |0 \xC2\xF1 |0 \xC2\xF2 |0 \xC2\xF3 |0 \xC2\xF4 |0 \xC2\xF5 |0 \xC2\xF6 |0 \xC2\xF7 |0 \xC2\xF8 |0 \xC2\xF9 |0 \xC2\xFA |0 \xC2\xFB |0 \xC2\xFC |0 \xC2\xFD |0 \xC3\x41 |0 \xC3\x42 |0 \xC3\x43 |0 \xC3\x44 |0 \xC3\x45 |0 \xC3\x46 |0 \xC3\x47 |0 \xC3\x48 |0 \xC3\x49 |0 \xC3\x4A |0 \xC3\x4B |0 \xC3\x4C |0 \xC3\x4D |0 \xC3\x4E |0 \xC3\x4F |0 \xC3\x50 |0 \xC3\x51 |0 \xC3\x52 |0 \xC3\x53 |0 \xC3\x54 |0 \xC3\x55 |0 \xC3\x56 |0 \xC3\x57 |0 \xC3\x58 |0 \xC3\x59 |0 \xC3\x5A |0 \xC3\x5B |0 \xC3\x5C |0 \xC3\x5D |0 \xC3\x5E |0 \xC3\x5F |0 \xC3\x60 |0 \xC3\x61 |0 \xC3\x62 |0 \xC3\x63 |0 \xC3\x64 |0 \xC3\x65 |0 \xC3\x66 |0 \xC3\x67 |0 \xC3\x68 |0 \xC3\x69 |0 \xC3\x6A |0 \xC3\x6B |0 \xC3\x6C |0 \xC3\x6D |0 \xC3\x6E |0 \xC3\x6F |0 \xC3\x70 |0 \xC3\x71 |0 \xC3\x72 |0 \xC3\x73 |0 \xC3\x74 |0 \xC3\x75 |0 \xC3\x76 |0 \xC3\x77 |0 \xC3\x78 |0 \xC3\x79 |0 \xC3\x7A |0 \xC3\x7B |0 \xC3\x7C |0 \xC3\x7D |0 \xC3\x7E |0 \xC3\x7F |0 \xC3\x81 |0 \xC3\x82 |0 \xC3\x83 |0 \xC3\x84 |0 \xC3\x85 |0 \xC3\x86 |0 \xC3\x87 |0 \xC3\x88 |0 \xC3\x89 |0 \xC3\x8A |0 \xC3\x8B |0 \xC3\x8C |0 \xC3\x8D |0 \xC3\x8E |0 \xC3\x8F |0 \xC3\x90 |0 \xC3\x91 |0 \xC3\x92 |0 \xC3\x93 |0 \xC3\x94 |0 \xC3\x95 |0 \xC3\x96 |0 \xC3\x97 |0 \xC3\x98 |0 \xC3\x99 |0 \xC3\x9A |0 \xC3\x9B |0 \xC3\x9C |0 \xC3\x9D |0 \xC3\x9E |0 \xC3\x9F |0 \xC3\xA0 |0 \xC3\xA1 |0 \xC3\xA2 |0 \xC3\xA3 |0 \xC3\xA4 |0 \xC3\xA5 |0 \xC3\xA6 |0 \xC3\xA7 |0 \xC3\xA8 |0 \xC3\xA9 |0 \xC3\xAA |0 \xC3\xAB |0 \xC3\xAC |0 \xC3\xAD |0 \xC3\xAE |0 \xC3\xAF |0 \xC3\xB0 |0 \xC3\xB1 |0 \xC3\xB2 |0 \xC3\xB3 |0 \xC3\xB4 |0 \xC3\xB5 |0 \xC3\xB6 |0 \xC3\xB7 |0 \xC3\xB8 |0 \xC3\xB9 |0 \xC3\xBA |0 \xC3\xBB |0 \xC3\xBC |0 \xC3\xBD |0 \xC3\xBE |0 \xC3\xBF |0 \xC3\xC0 |0 \xC3\xC1 |0 \xC3\xC2 |0 \xC3\xC3 |0 \xC3\xC4 |0 \xC3\xC5 |0 \xC3\xC6 |0 \xC3\xC7 |0 \xC3\xC8 |0 \xC3\xC9 |0 \xC3\xCA |0 \xC3\xCB |0 \xC3\xCC |0 \xC3\xCD |0 \xC3\xCE |0 \xC3\xCF |0 \xC3\xD0 |0 \xC3\xD1 |0 \xC3\xD2 |0 \xC3\xD3 |0 \xC3\xD4 |0 \xC3\xD5 |0 \xC3\xD6 |0 \xC3\xD7 |0 \xC3\xD8 |0 \xC3\xD9 |0 \xC3\xDA |0 \xC3\xDB |0 \xC3\xDC |0 \xC3\xDD |0 \xC3\xDE |0 \xC3\xDF |0 \xC3\xE0 |0 \xC3\xE1 |0 \xC3\xE2 |0 \xC3\xE3 |0 \xC3\xE4 |0 \xC3\xE5 |0 \xC3\xE6 |0 \xC3\xE7 |0 \xC3\xE8 |0 \xC3\xE9 |0 \xC3\xEA |0 \xC3\xEB |0 \xC3\xEC |0 \xC3\xED |0 \xC3\xEE |0 \xC3\xEF |0 \xC3\xF0 |0 \xC3\xF1 |0 \xC3\xF2 |0 \xC3\xF3 |0 \xC3\xF4 |0 \xC3\xF5 |0 \xC3\xF6 |0 \xC3\xF7 |0 \xC3\xF8 |0 \xC3\xF9 |0 \xC3\xFA |0 \xC3\xFB |0 \xC3\xFC |0 \xC3\xFD |0 \xC4\x41 |0 \xC4\x42 |0 \xC4\x43 |0 \xC4\x44 |0 \xC4\x45 |0 \xC4\x46 |0 \xC4\x47 |0 \xC4\x48 |0 \xC4\x49 |0 \xC4\x4A |0 \xC4\x4B |0 \xC4\x4C |0 \xC4\x4D |0 \xC4\x4E |0 \xC4\x4F |0 \xC4\x50 |0 \xC4\x51 |0 \xC4\x52 |0 \xC4\x53 |0 \xC4\x54 |0 \xC4\x55 |0 \xC4\x56 |0 \xC4\x57 |0 \xC4\x58 |0 \xC4\x59 |0 \xC4\x5A |0 \xC4\x5B |0 \xC4\x5C |0 \xC4\x5D |0 \xC4\x5E |0 \xC4\x5F |0 \xC4\x60 |0 \xC4\x61 |0 \xC4\x62 |0 \xC4\x63 |0 \xC4\x64 |0 \xC4\x65 |0 \xC4\x66 |0 \xC4\x67 |0 \xC4\x68 |0 \xC4\x69 |0 \xC4\x6A |0 \xC4\x6B |0 \xC4\x6C |0 \xC4\x6D |0 \xC4\x6E |0 \xC4\x6F |0 \xC4\x70 |0 \xC4\x71 |0 \xC4\x72 |0 \xC4\x73 |0 \xC4\x74 |0 \xC4\x75 |0 \xC4\x76 |0 \xC4\x77 |0 \xC4\x78 |0 \xC4\x79 |0 \xC4\x7A |0 \xC4\x7B |0 \xC4\x7C |0 \xC4\x7D |0 \xC4\x7E |0 \xC4\x7F |0 \xC4\x81 |0 \xC4\x82 |0 \xC4\x83 |0 \xC4\x84 |0 \xC4\x85 |0 \xC4\x86 |0 \xC4\x87 |0 \xC4\x88 |0 \xC4\x89 |0 \xC4\x8A |0 \xC4\x8B |0 \xC4\x8C |0 \xC4\x8D |0 \xC4\x8E |0 \xC4\x8F |0 \xC4\x90 |0 \xC4\x91 |0 \xC4\x92 |0 \xC4\x93 |0 \xC4\x94 |0 \xC4\x95 |0 \xC4\x96 |0 \xC4\x97 |0 \xC4\x98 |0 \xC4\x99 |0 \xC4\x9A |0 \xC4\x9B |0 \xC4\x9C |0 \xC4\x9D |0 \xC4\x9E |0 \xC4\x9F |0 \xC4\xA0 |0 \xC4\xA1 |0 \xC4\xA2 |0 \xC4\xA3 |0 \xC4\xA4 |0 \xC4\xA5 |0 \xC4\xA6 |0 \xC4\xA7 |0 \xC4\xA8 |0 \xC4\xA9 |0 \xC4\xAA |0 \xC4\xAB |0 \xC4\xAC |0 \xC4\xAD |0 \xC4\xAE |0 \xC4\xAF |0 \xC4\xB0 |0 \xC4\xB1 |0 \xC4\xB2 |0 \xC4\xB3 |0 \xC4\xB4 |0 \xC4\xB5 |0 \xC4\xB6 |0 \xC4\xB7 |0 \xC4\xB8 |0 \xC4\xB9 |0 \xC4\xBA |0 \xC4\xBB |0 \xC4\xBC |0 \xC4\xBD |0 \xC4\xBE |0 \xC4\xBF |0 \xC4\xC0 |0 \xC4\xC1 |0 \xC4\xC2 |0 \xC4\xC3 |0 \xC4\xC4 |0 \xC4\xC5 |0 \xC4\xC6 |0 \xC4\xC7 |0 \xC4\xC8 |0 \xC4\xC9 |0 \xC4\xCA |0 \xC4\xCB |0 \xC4\xCC |0 \xC4\xCD |0 \xC4\xCE |0 \xC4\xCF |0 \xC4\xD0 |0 \xC4\xD1 |0 \xC4\xD2 |0 \xC4\xD3 |0 \xC4\xD4 |0 \xC4\xD5 |0 \xC4\xD6 |0 \xC4\xD7 |0 \xC4\xD8 |0 \xC4\xD9 |0 \xC4\xDA |0 \xC4\xDB |0 \xC4\xDC |0 \xC4\xDD |0 \xC4\xDE |0 \xC4\xDF |0 \xC4\xE0 |0 \xC4\xE1 |0 \xC4\xE2 |0 \xC4\xE3 |0 \xC4\xE4 |0 \xC4\xE5 |0 \xC4\xE6 |0 \xC4\xE7 |0 \xC4\xE8 |0 \xC4\xE9 |0 \xC4\xEA |0 \xC4\xEB |0 \xC4\xEC |0 \xC4\xED |0 \xC4\xEE |0 \xC4\xEF |0 \xC4\xF0 |0 \xC4\xF1 |0 \xC4\xF2 |0 \xC4\xF3 |0 \xC4\xF4 |0 \xC4\xF5 |0 \xC4\xF6 |0 \xC4\xF7 |0 \xC4\xF8 |0 \xC4\xF9 |0 \xC4\xFA |0 \xC4\xFB |0 \xC4\xFC |0 \xC4\xFD |0 \xC5\x41 |0 \xC5\x42 |0 \xC5\x43 |0 \xC5\x44 |0 \xC5\x45 |0 \xC5\x46 |0 \xC5\x47 |0 \xC5\x48 |0 \xC5\x49 |0 \xC5\x4A |0 \xC5\x4B |0 \xC5\x4C |0 \xC5\x4D |0 \xC5\x4E |0 \xC5\x4F |0 \xC5\x50 |0 \xC5\x51 |0 \xC5\x52 |0 \xC5\x53 |0 \xC5\x54 |0 \xC5\x55 |0 \xC5\x56 |0 \xC5\x57 |0 \xC5\x58 |0 \xC5\x59 |0 \xC5\x5A |0 \xC5\x5B |0 \xC5\x5C |0 \xC5\x5D |0 \xC5\x5E |0 \xC5\x5F |0 \xC5\x60 |0 \xC5\x61 |0 \xC5\x62 |0 \xC5\x63 |0 \xC5\x64 |0 \xC5\x65 |0 \xC5\x66 |0 \xC5\x67 |0 \xC5\x68 |0 \xC5\x69 |0 \xC5\x6A |0 \xC5\x6B |0 \xC5\x6C |0 \xC5\x6D |0 \xC5\x6E |0 \xC5\x6F |0 \xC5\x70 |0 \xC5\x71 |0 \xC5\x72 |0 \xC5\x73 |0 \xC5\x74 |0 \xC5\x75 |0 \xC5\x76 |0 \xC5\x77 |0 \xC5\x78 |0 \xC5\x79 |0 \xC5\x7A |0 \xC5\x7B |0 \xC5\x7C |0 \xC5\x7D |0 \xC5\x7E |0 \xC5\x7F |0 \xC5\x81 |0 \xC5\x82 |0 \xC5\x83 |0 \xC5\x84 |0 \xC5\x85 |0 \xC5\x86 |0 \xC5\x87 |0 \xC5\x88 |0 \xC5\x89 |0 \xC5\x8A |0 \xC5\x8B |0 \xC5\x8C |0 \xC5\x8D |0 \xC5\x8E |0 \xC5\x8F |0 \xC5\x90 |0 \xC5\x91 |0 \xC5\x92 |0 \xC5\x93 |0 \xC5\x94 |0 \xC5\x95 |0 \xC5\x96 |0 \xC5\x97 |0 \xC5\x98 |0 \xC5\x99 |0 \xC5\x9A |0 \xC5\x9B |0 \xC5\x9C |0 \xC5\x9D |0 \xC5\x9E |0 \xC5\x9F |0 \xC5\xA0 |0 \xC5\xA1 |0 \xC5\xA2 |0 \xC5\xA3 |0 \xC5\xA4 |0 \xC5\xA5 |0 \xC5\xA6 |0 \xC5\xA7 |0 \xC5\xA8 |0 \xC5\xA9 |0 \xC5\xAA |0 \xC5\xAB |0 \xC5\xAC |0 \xC5\xAD |0 \xC5\xAE |0 \xC5\xAF |0 \xC5\xB0 |0 \xC5\xB1 |0 \xC5\xB2 |0 \xC5\xB3 |0 \xC5\xB4 |0 \xC5\xB5 |0 \xC5\xB6 |0 \xC5\xB7 |0 \xC5\xB8 |0 \xC5\xB9 |0 \xC5\xBA |0 \xC5\xBB |0 \xC5\xBC |0 \xC5\xBD |0 \xC5\xBE |0 \xC5\xBF |0 \xC5\xC0 |0 \xC5\xC1 |0 \xC5\xC2 |0 \xC5\xC3 |0 \xC5\xC4 |0 \xC5\xC5 |0 \xC5\xC6 |0 \xC5\xC7 |0 \xC5\xC8 |0 \xC5\xC9 |0 \xC5\xCA |0 \xC5\xCB |0 \xC5\xCC |0 \xC5\xCD |0 \xC5\xCE |0 \xC5\xCF |0 \xC5\xD0 |0 \xC5\xD1 |0 \xC5\xD2 |0 \xC5\xD3 |0 \xC5\xD4 |0 \xC5\xD5 |0 \xC5\xD6 |0 \xC5\xD7 |0 \xC5\xD8 |0 \xC5\xD9 |0 \xC5\xDA |0 \xC5\xDB |0 \xC5\xDC |0 \xC5\xDD |0 \xC5\xDE |0 \xC5\xDF |0 \xC5\xE0 |0 \xC5\xE1 |0 \xC5\xE2 |0 \xC5\xE3 |0 \xC5\xE4 |0 \xC5\xE5 |0 \xC5\xE6 |0 \xC5\xE7 |0 \xC5\xE8 |0 \xC5\xE9 |0 \xC5\xEA |0 \xC5\xEB |0 \xC5\xEC |0 \xC5\xED |0 \xC5\xEE |0 \xC5\xEF |0 \xC5\xF0 |0 \xC5\xF1 |0 \xC5\xF2 |0 \xC5\xF3 |0 \xC5\xF4 |0 \xC5\xF5 |0 \xC5\xF6 |0 \xC5\xF7 |0 \xC5\xF8 |0 \xC5\xF9 |0 \xC5\xFA |0 \xC5\xFB |0 \xC5\xFC |0 \xC5\xFD |0 \xC6\x41 |0 \xC6\x42 |0 \xC6\x43 |0 \xC6\x44 |0 \xC6\x45 |0 \xC6\x46 |0 \xC6\x47 |0 \xC6\x48 |0 \xC6\x49 |0 \xC6\x4A |0 \xC6\x4B |0 \xC6\x4C |0 \xC6\x4D |0 \xC6\x4E |0 \xC6\x4F |0 \xC6\x50 |0 \xC6\x51 |0 \xC6\x52 |0 \xC6\x53 |0 \xC6\x54 |0 \xC6\x55 |0 \xC6\x56 |0 \xC6\x57 |0 \xC6\x58 |0 \xC6\x59 |0 \xC6\x5A |0 \xC6\x5B |0 \xC6\x5C |0 \xC6\x5D |0 \xC6\x5E |0 \xC6\x5F |0 \xC6\x60 |0 \xC6\x61 |0 \xC6\x62 |0 \xC6\x63 |0 \xC6\x64 |0 \xC6\x65 |0 \xC6\x66 |0 \xC6\x67 |0 \xC6\x68 |0 \xC6\x69 |0 \xC6\x6A |0 \xC6\x6B |0 \xC6\x6C |0 \xC6\x6D |0 \xC6\x6E |0 \xC6\x6F |0 \xC6\x70 |0 \xC6\x71 |0 \xC6\x72 |0 \xC6\x73 |0 \xC6\x74 |0 \xC6\x75 |0 \xC6\x76 |0 \xC6\x77 |0 \xC6\x78 |0 \xC6\x79 |0 \xC6\x7A |0 \xC6\x7B |0 \xC6\x7C |0 \xC6\x7D |0 \xC6\x7E |0 \xC6\x7F |0 \xC6\x81 |0 \xC6\x82 |0 \xC6\x83 |0 \xC6\x84 |0 \xC6\x85 |0 \xC6\x86 |0 \xC6\x87 |0 \xC6\x88 |0 \xC6\x89 |0 \xC6\x8A |0 \xC6\x8B |0 \xC6\x8C |0 \xC6\x8D |0 \xC6\x8E |0 \xC6\x8F |0 \xC6\x90 |0 \xC6\x91 |0 \xC6\x92 |0 \xC6\x93 |0 \xC6\x94 |0 \xC6\x95 |0 \xC6\x96 |0 \xC6\x97 |0 \xC6\x98 |0 \xC6\x99 |0 \xC6\x9A |0 \xC6\x9B |0 \xC6\x9C |0 \xC6\x9D |0 \xC6\x9E |0 \xC6\x9F |0 \xC6\xA0 |0 \xC6\xA1 |0 \xC6\xA2 |0 \xC6\xA3 |0 \xC6\xA4 |0 \xC6\xA5 |0 \xC6\xA6 |0 \xC6\xA7 |0 \xC6\xA8 |0 \xC6\xA9 |0 \xC6\xAA |0 \xC6\xAB |0 \xC6\xAC |0 \xC6\xAD |0 \xC6\xAE |0 \xC6\xAF |0 \xC6\xB0 |0 \xC6\xB1 |0 \xC6\xB2 |0 \xC6\xB3 |0 \xC6\xB4 |0 \xC6\xB5 |0 \xC6\xB6 |0 \xC6\xB7 |0 \xC6\xB8 |0 \xC6\xB9 |0 \xC6\xBA |0 \xC6\xBB |0 \xC6\xBC |0 \xC6\xBD |0 \xC6\xBE |0 \xC6\xBF |0 \xC6\xC0 |0 \xC6\xC1 |0 \xC6\xC2 |0 \xC6\xC3 |0 \xC6\xC4 |0 \xC6\xC5 |0 \xC6\xC6 |0 \xC6\xC7 |0 \xC6\xC8 |0 \xC6\xC9 |0 \xC6\xCA |0 \xC6\xCB |0 \xC6\xCC |0 \xC6\xCD |0 \xC6\xCE |0 \xC6\xCF |0 \xC6\xD0 |0 \xC6\xD1 |0 \xC6\xD2 |0 \xC6\xD3 |0 \xC6\xD4 |0 \xC6\xD5 |0 \xC6\xD6 |0 \xC6\xD7 |0 \xC6\xD8 |0 \xC6\xD9 |0 \xC6\xDA |0 \xC6\xDB |0 \xC6\xDC |0 \xC6\xDD |0 \xC6\xDE |0 \xC6\xDF |0 \xC6\xE0 |0 \xC6\xE1 |0 \xC6\xE2 |0 \xC6\xE3 |0 \xC6\xE4 |0 \xC6\xE5 |0 \xC6\xE6 |0 \xC6\xE7 |0 \xC6\xE8 |0 \xC6\xE9 |0 \xC6\xEA |0 \xC6\xEB |0 \xC6\xEC |0 \xC6\xED |0 \xC6\xEE |0 \xC6\xEF |0 \xC6\xF0 |0 \xC6\xF1 |0 \xC6\xF2 |0 \xC6\xF3 |0 \xC6\xF4 |0 \xC6\xF5 |0 \xC6\xF6 |0 \xC6\xF7 |0 \xC6\xF8 |0 \xC6\xF9 |0 \xC6\xFA |0 \xC6\xFB |0 \xC6\xFC |0 \xC6\xFD |0 \xC7\x41 |0 \xC7\x42 |0 \xC7\x43 |0 \xC7\x44 |0 \xC7\x45 |0 \xC7\x46 |0 \xC7\x47 |0 \xC7\x48 |0 \xC7\x49 |0 \xC7\x4A |0 \xC7\x4B |0 \xC7\x4C |0 \xC7\x4D |0 \xC7\x4E |0 \xC7\x4F |0 \xC7\x50 |0 \xC7\x51 |0 \xC7\x52 |0 \xC7\x53 |0 \xC7\x54 |0 \xC7\x55 |0 \xC7\x56 |0 \xC7\x57 |0 \xC7\x58 |0 \xC7\x59 |0 \xC7\x5A |0 \xC7\x5B |0 \xC7\x5C |0 \xC7\x5D |0 \xC7\x5E |0 \xC7\x5F |0 \xC7\x60 |0 \xC7\x61 |0 \xC7\x62 |0 \xC7\x63 |0 \xC7\x64 |0 \xC7\x65 |0 \xC7\x66 |0 \xC7\x67 |0 \xC7\x68 |0 \xC7\x69 |0 \xC7\x6A |0 \xC7\x6B |0 \xC7\x6C |0 \xC7\x6D |0 \xC7\x6E |0 \xC7\x6F |0 \xC7\x70 |0 \xC7\x71 |0 \xC7\x72 |0 \xC7\x73 |0 \xC7\x74 |0 \xC7\x75 |0 \xC7\x76 |0 \xC7\x77 |0 \xC7\x78 |0 \xC7\x79 |0 \xC7\x7A |0 \xC7\x7B |0 \xC7\x7C |0 \xC7\x7D |0 \xC7\x7E |0 \xC7\x7F |0 \xC7\x81 |0 \xC7\x82 |0 \xC7\x83 |0 \xC7\x84 |0 \xC7\x85 |0 \xC7\x86 |0 \xC7\x87 |0 \xC7\x88 |0 \xC7\x89 |0 \xC7\x8A |0 \xC7\x8B |0 \xC7\x8C |0 \xC7\x8D |0 \xC7\x8E |0 \xC7\x8F |0 \xC7\x90 |0 \xC7\x91 |0 \xC7\x92 |0 \xC7\x93 |0 \xC7\x94 |0 \xC7\x95 |0 \xC7\x96 |0 \xC7\x97 |0 \xC7\x98 |0 \xC7\x99 |0 \xC7\x9A |0 \xC7\x9B |0 \xC7\x9C |0 \xC7\x9D |0 \xC7\x9E |0 \xC7\x9F |0 \xC7\xA0 |0 \xC7\xA1 |0 \xC7\xA2 |0 \xC7\xA3 |0 \xC7\xA4 |0 \xC7\xA5 |0 \xC7\xA6 |0 \xC7\xA7 |0 \xC7\xA8 |0 \xC7\xA9 |0 \xC7\xAA |0 \xC7\xAB |0 \xC7\xAC |0 \xC7\xAD |0 \xC7\xAE |0 \xC7\xAF |0 \xC7\xB0 |0 \xC7\xB1 |0 \xC7\xB2 |0 \xC7\xB3 |0 \xC7\xB4 |0 \xC7\xB5 |0 \xC7\xB6 |0 \xC7\xB7 |0 \xC7\xB8 |0 \xC7\xB9 |0 \xC7\xBA |0 \xC7\xBB |0 \xC7\xBC |0 \xC7\xBD |0 \xC7\xBE |0 \xC7\xBF |0 \xC7\xC0 |0 \xC7\xC1 |0 \xC7\xC2 |0 \xC7\xC3 |0 \xC7\xC4 |0 \xC7\xC5 |0 \xC7\xC6 |0 \xC7\xC7 |0 \xC7\xC8 |0 \xC7\xC9 |0 \xC7\xCA |0 \xC7\xCB |0 \xC7\xCC |0 \xC7\xCD |0 \xC7\xCE |0 \xC7\xCF |0 \xC7\xD0 |0 \xC7\xD1 |0 \xC7\xD2 |0 \xC7\xD3 |0 \xC7\xD4 |0 \xC7\xD5 |0 \xC7\xD6 |0 \xC7\xD7 |0 \xC7\xD8 |0 \xC7\xD9 |0 \xC7\xDA |0 \xC7\xDB |0 \xC7\xDC |0 \xC7\xDD |0 \xC7\xDE |0 \xC7\xDF |0 \xC7\xE0 |0 \xC7\xE1 |0 \xC7\xE2 |0 \xC7\xE3 |0 \xC7\xE4 |0 \xC7\xE5 |0 \xC7\xE6 |0 \xC7\xE7 |0 \xC7\xE8 |0 \xC7\xE9 |0 \xC7\xEA |0 \xC7\xEB |0 \xC7\xEC |0 \xC7\xED |0 \xC7\xEE |0 \xC7\xEF |0 \xC7\xF0 |0 \xC7\xF1 |0 \xC7\xF2 |0 \xC7\xF3 |0 \xC7\xF4 |0 \xC7\xF5 |0 \xC7\xF6 |0 \xC7\xF7 |0 \xC7\xF8 |0 \xC7\xF9 |0 \xC7\xFA |0 \xC7\xFB |0 \xC7\xFC |0 \xC7\xFD |0 \xC8\x41 |0 \xC8\x42 |0 \xC8\x43 |0 \xC8\x44 |0 \xC8\x45 |0 \xC8\x46 |0 \xC8\x47 |0 \xC8\x48 |0 \xC8\x49 |0 \xC8\x4A |0 \xC8\x4B |0 \xC8\x4C |0 \xC8\x4D |0 \xC8\x4E |0 \xC8\x4F |0 \xC8\x50 |0 \xC8\x51 |0 \xC8\x52 |0 \xC8\x53 |0 \xC8\x54 |0 \xC8\x55 |0 \xC8\x56 |0 \xC8\x57 |0 \xC8\x58 |0 \xC8\x59 |0 \xC8\x5A |0 \xC8\x5B |0 \xC8\x5C |0 \xC8\x5D |0 \xC8\x5E |0 \xC8\x5F |0 \xC8\x60 |0 \xC8\x61 |0 \xC8\x62 |0 \xC8\x63 |0 \xC8\x64 |0 \xC8\x65 |0 \xC8\x66 |0 \xC8\x67 |0 \xC8\x68 |0 \xC8\x69 |0 \xC8\x6A |0 \xC8\x6B |0 \xC8\x6C |0 \xC8\x6D |0 \xC8\x6E |0 \xC8\x6F |0 \xC8\x70 |0 \xC8\x71 |0 \xC8\x72 |0 \xC8\x73 |0 \xC8\x74 |0 \xC8\x75 |0 \xC8\x76 |0 \xC8\x77 |0 \xC8\x78 |0 \xC8\x79 |0 \xC8\x7A |0 \xC8\x7B |0 \xC8\x7C |0 \xC8\x7D |0 \xC8\x7E |0 \xC8\x7F |0 \xC8\x81 |0 \xC8\x82 |0 \xC8\x83 |0 \xC8\x84 |0 \xC8\x85 |0 \xC8\x86 |0 \xC8\x87 |0 \xC8\x88 |0 \xC8\x89 |0 \xC8\x8A |0 \xC8\x8B |0 \xC8\x8C |0 \xC8\x8D |0 \xC8\x8E |0 \xC8\x8F |0 \xC8\x90 |0 \xC8\x91 |0 \xC8\x92 |0 \xC8\x93 |0 \xC8\x94 |0 \xC8\x95 |0 \xC8\x96 |0 \xC8\x97 |0 \xC8\x98 |0 \xC8\x99 |0 \xC8\x9A |0 \xC8\x9B |0 \xC8\x9C |0 \xC8\x9D |0 \xC8\x9E |0 \xC8\x9F |0 \xC8\xA0 |0 \xC8\xA1 |0 \xC8\xA2 |0 \xC8\xA3 |0 \xC8\xA4 |0 \xC8\xA5 |0 \xC8\xA6 |0 \xC8\xA7 |0 \xC8\xA8 |0 \xC8\xA9 |0 \xC8\xAA |0 \xC8\xAB |0 \xC8\xAC |0 \xC8\xAD |0 \xC8\xAE |0 \xC8\xAF |0 \xC8\xB0 |0 \xC8\xB1 |0 \xC8\xB2 |0 \xC8\xB3 |0 \xC8\xB4 |0 \xC8\xB5 |0 \xC8\xB6 |0 \xC8\xB7 |0 \xC8\xB8 |0 \xC8\xB9 |0 \xC8\xBA |0 \xC8\xBB |0 \xC8\xBC |0 \xC8\xBD |0 \xC8\xBE |0 \xC8\xBF |0 \xC8\xC0 |0 \xC8\xC1 |0 \xC8\xC2 |0 \xC8\xC3 |0 \xC8\xC4 |0 \xC8\xC5 |0 \xC8\xC6 |0 \xC8\xC7 |0 \xC8\xC8 |0 \xC8\xC9 |0 \xC8\xCA |0 \xC8\xCB |0 \xC8\xCC |0 \xC8\xCD |0 \xC8\xCE |0 \xC8\xCF |0 \xC8\xD0 |0 \xC8\xD1 |0 \xC8\xD2 |0 \xC8\xD3 |0 \xC8\xD4 |0 \xC8\xD5 |0 \xC8\xD6 |0 \xC8\xD7 |0 \xC8\xD8 |0 \xC8\xD9 |0 \xC8\xDA |0 \xC8\xDB |0 \xC8\xDC |0 \xC8\xDD |0 \xC8\xDE |0 \xC8\xDF |0 \xC8\xE0 |0 \xC8\xE1 |0 \xC8\xE2 |0 \xC8\xE3 |0 \xC8\xE4 |0 \xC8\xE5 |0 \xC8\xE6 |0 \xC8\xE7 |0 \xC8\xE8 |0 \xC8\xE9 |0 \xC8\xEA |0 \xC8\xEB |0 \xC8\xEC |0 \xC8\xED |0 \xC8\xEE |0 \xC8\xEF |0 \xC8\xF0 |0 \xC8\xF1 |0 \xC8\xF2 |0 \xC8\xF3 |0 \xC8\xF4 |0 \xC8\xF5 |0 \xC8\xF6 |0 \xC8\xF7 |0 \xC8\xF8 |0 \xC8\xF9 |0 \xC8\xFA |0 \xC8\xFB |0 \xC8\xFC |0 \xC8\xFD |0 \xC9\x41 |0 \xC9\x42 |0 \xC9\x43 |0 \xC9\x44 |0 \xC9\x45 |0 \xC9\x46 |0 \xC9\x47 |0 \xC9\x48 |0 \xC9\x49 |0 \xC9\x4A |0 \xC9\x4B |0 \xC9\x4C |0 \xC9\x4D |0 \xC9\x4E |0 \xC9\x4F |0 \xC9\x50 |0 \xC9\x51 |0 \xC9\x52 |0 \xC9\x53 |0 \xC9\x54 |0 \xC9\x55 |0 \xC9\x56 |0 \xC9\x57 |0 \xC9\x58 |0 \xC9\x59 |0 \xC9\x5A |0 \xC9\x5B |0 \xC9\x5C |0 \xC9\x5D |0 \xC9\x5E |0 \xC9\x5F |0 \xC9\x60 |0 \xC9\x61 |0 \xC9\x62 |0 \xC9\x63 |0 \xC9\x64 |0 \xC9\x65 |0 \xC9\x66 |0 \xC9\x67 |0 \xC9\x68 |0 \xC9\x69 |0 \xC9\x6A |0 \xC9\x6B |0 \xC9\x6C |0 \xC9\x6D |0 \xC9\x6E |0 \xC9\x6F |0 \xC9\x70 |0 \xC9\x71 |0 \xC9\x72 |0 \xC9\x73 |0 \xC9\x74 |0 \xC9\x75 |0 \xC9\x76 |0 \xC9\x77 |0 \xC9\x78 |0 \xC9\x79 |0 \xC9\x7A |0 \xC9\x7B |0 \xC9\x7C |0 \xC9\x7D |0 \xC9\x7E |0 \xC9\x7F |0 \xC9\x81 |0 \xC9\x82 |0 \xC9\x83 |0 \xC9\x84 |0 \xC9\x85 |0 \xC9\x86 |0 \xC9\x87 |0 \xC9\x88 |0 \xC9\x89 |0 \xC9\x8A |0 \xC9\x8B |0 \xC9\x8C |0 \xC9\x8D |0 \xC9\x8E |0 \xC9\x8F |0 \xC9\x90 |0 \xC9\x91 |0 \xC9\x92 |0 \xC9\x93 |0 \xC9\x94 |0 \xC9\x95 |0 \xC9\x96 |0 \xC9\x97 |0 \xC9\x98 |0 \xC9\x99 |0 \xC9\x9A |0 \xC9\x9B |0 \xC9\x9C |0 \xC9\x9D |0 \xC9\x9E |0 \xC9\x9F |0 \xC9\xA0 |0 \xC9\xA1 |0 \xC9\xA2 |0 \xC9\xA3 |0 \xC9\xA4 |0 \xC9\xA5 |0 \xC9\xA6 |0 \xC9\xA7 |0 \xC9\xA8 |0 \xC9\xA9 |0 \xC9\xAA |0 \xC9\xAB |0 \xC9\xAC |0 \xC9\xAD |0 \xC9\xAE |0 \xC9\xAF |0 \xC9\xB0 |0 \xC9\xB1 |0 \xC9\xB2 |0 \xC9\xB3 |0 \xC9\xB4 |0 \xC9\xB5 |0 \xC9\xB6 |0 \xC9\xB7 |0 \xC9\xB8 |0 \xC9\xB9 |0 \xC9\xBA |0 \xC9\xBB |0 \xC9\xBC |0 \xC9\xBD |0 \xC9\xBE |0 \xC9\xBF |0 \xC9\xC0 |0 \xC9\xC1 |0 \xC9\xC2 |0 \xC9\xC3 |0 \xC9\xC4 |0 \xC9\xC5 |0 \xC9\xC6 |0 \xC9\xC7 |0 \xC9\xC8 |0 \xC9\xC9 |0 \xC9\xCA |0 \xC9\xCB |0 \xC9\xCC |0 \xC9\xCD |0 \xC9\xCE |0 \xC9\xCF |0 \xC9\xD0 |0 \xC9\xD1 |0 \xC9\xD2 |0 \xC9\xD3 |0 \xC9\xD4 |0 \xC9\xD5 |0 \xC9\xD6 |0 \xC9\xD7 |0 \xC9\xD8 |0 \xC9\xD9 |0 \xC9\xDA |0 \xC9\xDB |0 \xC9\xDC |0 \xC9\xDD |0 \xC9\xDE |0 \xC9\xDF |0 \xC9\xE0 |0 \xC9\xE1 |0 \xC9\xE2 |0 \xC9\xE3 |0 \xC9\xE4 |0 \xC9\xE5 |0 \xC9\xE6 |0 \xC9\xE7 |0 \xC9\xE8 |0 \xC9\xE9 |0 \xC9\xEA |0 \xC9\xEB |0 \xC9\xEC |0 \xC9\xED |0 \xC9\xEE |0 \xC9\xEF |0 \xC9\xF0 |0 \xC9\xF1 |0 \xC9\xF2 |0 \xC9\xF3 |0 \xC9\xF4 |0 \xC9\xF5 |0 \xC9\xF6 |0 \xC9\xF7 |0 \xC9\xF8 |0 \xC9\xF9 |0 \xC9\xFA |0 \xC9\xFB |0 \xC9\xFC |0 \xC9\xFD |0 \xCA\x41 |0 \xCA\x42 |0 \xCA\x43 |0 \xCA\x44 |0 \xCA\x45 |0 \xCA\x46 |0 \xCA\x47 |0 \xCA\x48 |0 \xCA\x49 |0 \xCA\x4A |0 \xCA\x4B |0 \xCA\x4C |0 \xCA\x4D |0 \xCA\x4E |0 \xCA\x4F |0 \xCA\x50 |0 \xCA\x51 |0 \xCA\x52 |0 \xCA\x53 |0 \xCA\x54 |0 \xCA\x55 |0 \xCA\x56 |0 \xCA\x57 |0 \xCA\x58 |0 \xCA\x59 |0 \xCA\x5A |0 \xCA\x5B |0 \xCA\x5C |0 \xCA\x5D |0 \xCA\x5E |0 \xCA\x5F |0 \xCA\x60 |0 \xCA\x61 |0 \xCA\x62 |0 \xCA\x63 |0 \xCA\x64 |0 \xCA\x65 |0 \xCA\x66 |0 \xCA\x67 |0 \xCA\x68 |0 \xCA\x69 |0 \xCA\x6A |0 \xCA\x6B |0 \xCA\x6C |0 \xCA\x6D |0 \xCA\x6E |0 \xCA\x6F |0 \xCA\x70 |0 \xCA\x71 |0 \xCA\x72 |0 \xCA\x73 |0 \xCA\x74 |0 \xCA\x75 |0 \xCA\x76 |0 \xCA\x77 |0 \xCA\x78 |0 \xCA\x79 |0 \xCA\x7A |0 \xCA\x7B |0 \xCA\x7C |0 \xCA\x7D |0 \xCA\x7E |0 \xCA\x7F |0 \xCA\x81 |0 \xCA\x82 |0 \xCA\x83 |0 \xCA\x84 |0 \xCA\x85 |0 \xCA\x86 |0 \xCA\x87 |0 \xCA\x88 |0 \xCA\x89 |0 \xCA\x8A |0 \xCA\x8B |0 \xCA\x8C |0 \xCA\x8D |0 \xCA\x8E |0 \xCA\x8F |0 \xCA\x90 |0 \xCA\x91 |0 \xCA\x92 |0 \xCA\x93 |0 \xCA\x94 |0 \xCA\x95 |0 \xCA\x96 |0 \xCA\x97 |0 \xCA\x98 |0 \xCA\x99 |0 \xCA\x9A |0 \xCA\x9B |0 \xCA\x9C |0 \xCA\x9D |0 \xCA\x9E |0 \xCA\x9F |0 \xCA\xA0 |0 \xCA\xA1 |0 \xCA\xA2 |0 \xCA\xA3 |0 \xCA\xA4 |0 \xCA\xA5 |0 \xCA\xA6 |0 \xCA\xA7 |0 \xCA\xA8 |0 \xCA\xA9 |0 \xCA\xAA |0 \xCA\xAB |0 \xCA\xAC |0 \xCA\xAD |0 \xCA\xAE |0 \xCA\xAF |0 \xCA\xB0 |0 \xCA\xB1 |0 \xCA\xB2 |0 \xCA\xB3 |0 \xCA\xB4 |0 \xCA\xB5 |0 \xCA\xB6 |0 \xCA\xB7 |0 \xCA\xB8 |0 \xCA\xB9 |0 \xCA\xBA |0 \xCA\xBB |0 \xCA\xBC |0 \xCA\xBD |0 \xCA\xBE |0 \xCA\xBF |0 \xCA\xC0 |0 \xCA\xC1 |0 \xCA\xC2 |0 \xCA\xC3 |0 \xCA\xC4 |0 \xCA\xC5 |0 \xCA\xC6 |0 \xCA\xC7 |0 \xCA\xC8 |0 \xCA\xC9 |0 \xCA\xCA |0 \xCA\xCB |0 \xCA\xCC |0 \xCA\xCD |0 \xCA\xCE |0 \xCA\xCF |0 \xCA\xD0 |0 \xCA\xD1 |0 \xCA\xD2 |0 \xCA\xD3 |0 \xCA\xD4 |0 \xCA\xD5 |0 \xCA\xD6 |0 \xCA\xD7 |0 \xCA\xD8 |0 \xCA\xD9 |0 \xCA\xDA |0 \xCA\xDB |0 \xCA\xDC |0 \xCA\xDD |0 \xCA\xDE |0 \xCA\xDF |0 \xCA\xE0 |0 \xCA\xE1 |0 \xCA\xE2 |0 \xCA\xE3 |0 \xCA\xE4 |0 \xCA\xE5 |0 \xCA\xE6 |0 \xCA\xE7 |0 \xCA\xE8 |0 \xCA\xE9 |0 \xCA\xEA |0 \xCA\xEB |0 \xCA\xEC |0 \xCA\xED |0 \xCA\xEE |0 \xCA\xEF |0 \xCA\xF0 |0 \xCA\xF1 |0 \xCA\xF2 |0 \xCA\xF3 |0 \xCA\xF4 |0 \xCA\xF5 |0 \xCA\xF6 |0 \xCA\xF7 |0 \xCA\xF8 |0 \xCA\xF9 |0 \xCA\xFA |0 \xCA\xFB |0 \xCA\xFC |0 \xCA\xFD |0 \xCB\x41 |0 \xCB\x42 |0 \xCB\x43 |0 \xCB\x44 |0 \xCB\x45 |0 \xCB\x46 |0 \xCB\x47 |0 \xCB\x48 |0 \xCB\x49 |0 \xCB\x4A |0 \xCB\x4B |0 \xCB\x4C |0 \xCB\x4D |0 \xCB\x4E |0 \xCB\x4F |0 \xCB\x50 |0 \xCB\x51 |0 \xCB\x52 |0 \xCB\x53 |0 \xCB\x54 |0 \xCB\x55 |0 \xCB\x56 |0 \xCB\x57 |0 \xCB\x58 |0 \xCB\x59 |0 \xCB\x5A |0 \xCB\x5B |0 \xCB\x5C |0 \xCB\x5D |0 \xCB\x5E |0 \xCB\x5F |0 \xCB\x60 |0 \xCB\x61 |0 \xCB\x62 |0 \xCB\x63 |0 \xCB\x64 |0 \xCB\x65 |0 \xCB\x66 |0 \xCB\x67 |0 \xCB\x68 |0 \xCB\x69 |0 \xCB\x6A |0 \xCB\x6B |0 \xCB\x6C |0 \xCB\x6D |0 \xCB\x6E |0 \xCB\x6F |0 \xCB\x70 |0 \xCB\x71 |0 \xCB\x72 |0 \xCB\x73 |0 \xCB\x74 |0 \xCB\x75 |0 \xCB\x76 |0 \xCB\x77 |0 \xCB\x78 |0 \xCB\x79 |0 \xCB\x7A |0 \xCB\x7B |0 \xCB\x7C |0 \xCB\x7D |0 \xCB\x7E |0 \xCB\x7F |0 \xCB\x81 |0 \xCB\x82 |0 \xCB\x83 |0 \xCB\x84 |0 \xCB\x85 |0 \xCB\x86 |0 \xCB\x87 |0 \xCB\x88 |0 \xCB\x89 |0 \xCB\x8A |0 \xCB\x8B |0 \xCB\x8C |0 \xCB\x8D |0 \xCB\x8E |0 \xCB\x8F |0 \xCB\x90 |0 \xCB\x91 |0 \xCB\x92 |0 \xCB\x93 |0 \xCB\x94 |0 \xCB\x95 |0 \xCB\x96 |0 \xCB\x97 |0 \xCB\x98 |0 \xCB\x99 |0 \xCB\x9A |0 \xCB\x9B |0 \xCB\x9C |0 \xCB\x9D |0 \xCB\x9E |0 \xCB\x9F |0 \xCB\xA0 |0 \xCB\xA1 |0 \xCB\xA2 |0 \xCB\xA3 |0 \xCB\xA4 |0 \xCB\xA5 |0 \xCB\xA6 |0 \xCB\xA7 |0 \xCB\xA8 |0 \xCB\xA9 |0 \xCB\xAA |0 \xCB\xAB |0 \xCB\xAC |0 \xCB\xAD |0 \xCB\xAE |0 \xCB\xAF |0 \xCB\xB0 |0 \xCB\xB1 |0 \xCB\xB2 |0 \xCB\xB3 |0 \xCB\xB4 |0 \xCB\xB5 |0 \xCB\xB6 |0 \xCB\xB7 |0 \xCB\xB8 |0 \xCB\xB9 |0 \xCB\xBA |0 \xCB\xBB |0 \xCB\xBC |0 \xCB\xBD |0 \xCB\xBE |0 \xCB\xBF |0 \xCB\xC0 |0 \xCB\xC1 |0 \xCB\xC2 |0 \xCB\xC3 |0 \xCB\xC4 |0 \xCB\xC5 |0 \xCB\xC6 |0 \xCB\xC7 |0 \xCB\xC8 |0 \xCB\xC9 |0 \xCB\xCA |0 \xCB\xCB |0 \xCB\xCC |0 \xCB\xCD |0 \xCB\xCE |0 \xCB\xCF |0 \xCB\xD0 |0 \xCB\xD1 |0 \xCB\xD2 |0 \xCB\xD3 |0 \xCB\xD4 |0 \xCB\xD5 |0 \xCB\xD6 |0 \xCB\xD7 |0 \xCB\xD8 |0 \xCB\xD9 |0 \xCB\xDA |0 \xCB\xDB |0 \xCB\xDC |0 \xCB\xDD |0 \xCB\xDE |0 \xCB\xDF |0 \xCB\xE0 |0 \xCB\xE1 |0 \xCB\xE2 |0 \xCB\xE3 |0 \xCB\xE4 |0 \xCB\xE5 |0 \xCB\xE6 |0 \xCB\xE7 |0 \xCB\xE8 |0 \xCB\xE9 |0 \xCB\xEA |0 \xCB\xEB |0 \xCB\xEC |0 \xCB\xED |0 \xCB\xEE |0 \xCB\xEF |0 \xCB\xF0 |0 \xCB\xF1 |0 \xCB\xF2 |0 \xCB\xF3 |0 \xCB\xF4 |0 \xCB\xF5 |0 \xCB\xF6 |0 \xCB\xF7 |0 \xCB\xF8 |0 \xCB\xF9 |0 \xCB\xFA |0 \xCB\xFB |0 \xCB\xFC |0 \xCB\xFD |0 \xCC\x41 |0 \xCC\x42 |0 \xCC\x43 |0 \xCC\x44 |0 \xCC\x45 |0 \xCC\x46 |0 \xCC\x47 |0 \xCC\x48 |0 \xCC\x49 |0 \xCC\x4A |0 \xCC\x4B |0 \xCC\x4C |0 \xCC\x4D |0 \xCC\x4E |0 \xCC\x4F |0 \xCC\x50 |0 \xCC\x51 |0 \xCC\x52 |0 \xCC\x53 |0 \xCC\x54 |0 \xCC\x55 |0 \xCC\x56 |0 \xCC\x57 |0 \xCC\x58 |0 \xCC\x59 |0 \xCC\x5A |0 \xCC\x5B |0 \xCC\x5C |0 \xCC\x5D |0 \xCC\x5E |0 \xCC\x5F |0 \xCC\x60 |0 \xCC\x61 |0 \xCC\x62 |0 \xCC\x63 |0 \xCC\x64 |0 \xCC\x65 |0 \xCC\x66 |0 \xCC\x67 |0 \xCC\x68 |0 \xCC\x69 |0 \xCC\x6A |0 \xCC\x6B |0 \xCC\x6C |0 \xCC\x6D |0 \xCC\x6E |0 \xCC\x6F |0 \xCC\x70 |0 \xCC\x71 |0 \xCC\x72 |0 \xCC\x73 |0 \xCC\x74 |0 \xCC\x75 |0 \xCC\x76 |0 \xCC\x77 |0 \xCC\x78 |0 \xCC\x79 |0 \xCC\x7A |0 \xCC\x7B |0 \xCC\x7C |0 \xCC\x7D |0 \xCC\x7E |0 \xCC\x7F |0 \xCC\x81 |0 \xCC\x82 |0 \xCC\x83 |0 \xCC\x84 |0 \xCC\x85 |0 \xCC\x86 |0 \xCC\x87 |0 \xCC\x88 |0 \xCC\x89 |0 \xCC\x8A |0 \xCC\x8B |0 \xCC\x8C |0 \xCC\x8D |0 \xCC\x8E |0 \xCC\x8F |0 \xCC\x90 |0 \xCC\x91 |0 \xCC\x92 |0 \xCC\x93 |0 \xCC\x94 |0 \xCC\x95 |0 \xCC\x96 |0 \xCC\x97 |0 \xCC\x98 |0 \xCC\x99 |0 \xCC\x9A |0 \xCC\x9B |0 \xCC\x9C |0 \xCC\x9D |0 \xCC\x9E |0 \xCC\x9F |0 \xCC\xA0 |0 \xCC\xA1 |0 \xCC\xA2 |0 \xCC\xA3 |0 \xCC\xA4 |0 \xCC\xA5 |0 \xCC\xA6 |0 \xCC\xA7 |0 \xCC\xA8 |0 \xCC\xA9 |0 \xCC\xAA |0 \xCC\xAB |0 \xCC\xAC |0 \xCC\xAD |0 \xCC\xAE |0 \xCC\xAF |0 \xCC\xB0 |0 \xCC\xB1 |0 \xCC\xB2 |0 \xCC\xB3 |0 \xCC\xB4 |0 \xCC\xB5 |0 \xCC\xB6 |0 \xCC\xB7 |0 \xCC\xB8 |0 \xCC\xB9 |0 \xCC\xBA |0 \xCC\xBB |0 \xCC\xBC |0 \xCC\xBD |0 \xCC\xBE |0 \xCC\xBF |0 \xCC\xC0 |0 \xCC\xC1 |0 \xCC\xC2 |0 \xCC\xC3 |0 \xCC\xC4 |0 \xCC\xC5 |0 \xCC\xC6 |0 \xCC\xC7 |0 \xCC\xC8 |0 \xCC\xC9 |0 \xCC\xCA |0 \xCC\xCB |0 \xCC\xCC |0 \xCC\xCD |0 \xCC\xCE |0 \xCC\xCF |0 \xCC\xD0 |0 \xCC\xD1 |0 \xCC\xD2 |0 \xCC\xD3 |0 \xCC\xD4 |0 \xCC\xD5 |0 \xCC\xD6 |0 \xCC\xD7 |0 \xCC\xD8 |0 \xCC\xD9 |0 \xCC\xDA |0 \xCC\xDB |0 \xCC\xDC |0 \xCC\xDD |0 \xCC\xDE |0 \xCC\xDF |0 \xCC\xE0 |0 \xCC\xE1 |0 \xCC\xE2 |0 \xCC\xE3 |0 \xCC\xE4 |0 \xCC\xE5 |0 \xCC\xE6 |0 \xCC\xE7 |0 \xCC\xE8 |0 \xCC\xE9 |0 \xCC\xEA |0 \xCC\xEB |0 \xCC\xEC |0 \xCC\xED |0 \xCC\xEE |0 \xCC\xEF |0 \xCC\xF0 |0 \xCC\xF1 |0 \xCC\xF2 |0 \xCC\xF3 |0 \xCC\xF4 |0 \xCC\xF5 |0 \xCC\xF6 |0 \xCC\xF7 |0 \xCC\xF8 |0 \xCC\xF9 |0 \xCC\xFA |0 \xCC\xFB |0 \xCC\xFC |0 \xCC\xFD |0 \xCD\x41 |0 \xCD\x42 |0 \xCD\x43 |0 \xCD\x44 |0 \xCD\x45 |0 \xCD\x46 |0 \xCD\x47 |0 \xCD\x48 |0 \xCD\x49 |0 \xCD\x4A |0 \xCD\x4B |0 \xCD\x4C |0 \xCD\x4D |0 \xCD\x4E |0 \xCD\x4F |0 \xCD\x50 |0 \xCD\x51 |0 \xCD\x52 |0 \xCD\x53 |0 \xCD\x54 |0 \xCD\x55 |0 \xCD\x56 |0 \xCD\x57 |0 \xCD\x58 |0 \xCD\x59 |0 \xCD\x5A |0 \xCD\x5B |0 \xCD\x5C |0 \xCD\x5D |0 \xCD\x5E |0 \xCD\x5F |0 \xCD\x60 |0 \xCD\x61 |0 \xCD\x62 |0 \xCD\x63 |0 \xCD\x64 |0 \xCD\x65 |0 \xCD\x66 |0 \xCD\x67 |0 \xCD\x68 |0 \xCD\x69 |0 \xCD\x6A |0 \xCD\x6B |0 \xCD\x6C |0 \xCD\x6D |0 \xCD\x6E |0 \xCD\x6F |0 \xCD\x70 |0 \xCD\x71 |0 \xCD\x72 |0 \xCD\x73 |0 \xCD\x74 |0 \xCD\x75 |0 \xCD\x76 |0 \xCD\x77 |0 \xCD\x78 |0 \xCD\x79 |0 \xCD\x7A |0 \xCD\x7B |0 \xCD\x7C |0 \xCD\x7D |0 \xCD\x7E |0 \xCD\x7F |0 \xCD\x81 |0 \xCD\x82 |0 \xCD\x83 |0 \xCD\x84 |0 \xCD\x85 |0 \xCD\x86 |0 \xCD\x87 |0 \xCD\x88 |0 \xCD\x89 |0 \xCD\x8A |0 \xCD\x8B |0 \xCD\x8C |0 \xCD\x8D |0 \xCD\x8E |0 \xCD\x8F |0 \xCD\x90 |0 \xCD\x91 |0 \xCD\x92 |0 \xCD\x93 |0 \xCD\x94 |0 \xCD\x95 |0 \xCD\x96 |0 \xCD\x97 |0 \xCD\x98 |0 \xCD\x99 |0 \xCD\x9A |0 \xCD\x9B |0 \xCD\x9C |0 \xCD\x9D |0 \xCD\x9E |0 \xCD\x9F |0 \xCD\xA0 |0 \xCD\xA1 |0 \xCD\xA2 |0 \xCD\xA3 |0 \xCD\xA4 |0 \xCD\xA5 |0 \xCD\xA6 |0 \xCD\xA7 |0 \xCD\xA8 |0 \xCD\xA9 |0 \xCD\xAA |0 \xCD\xAB |0 \xCD\xAC |0 \xCD\xAD |0 \xCD\xAE |0 \xCD\xAF |0 \xCD\xB0 |0 \xCD\xB1 |0 \xCD\xB2 |0 \xCD\xB3 |0 \xCD\xB4 |0 \xCD\xB5 |0 \xCD\xB6 |0 \xCD\xB7 |0 \xCD\xB8 |0 \xCD\xB9 |0 \xCD\xBA |0 \xCD\xBB |0 \xCD\xBC |0 \xCD\xBD |0 \xCD\xBE |0 \xCD\xBF |0 \xCD\xC0 |0 \xCD\xC1 |0 \xCD\xC2 |0 \xCD\xC3 |0 \xCD\xC4 |0 \xCD\xC5 |0 \xCD\xC6 |0 \xCD\xC7 |0 \xCD\xC8 |0 \xCD\xC9 |0 \xCD\xCA |0 \xCD\xCB |0 \xCD\xCC |0 \xCD\xCD |0 \xCD\xCE |0 \xCD\xCF |0 \xCD\xD0 |0 \xCD\xD1 |0 \xCD\xD2 |0 \xCD\xD3 |0 \xCD\xD4 |0 \xCD\xD5 |0 \xCD\xD6 |0 \xCD\xD7 |0 \xCD\xD8 |0 \xCD\xD9 |0 \xCD\xDA |0 \xCD\xDB |0 \xCD\xDC |0 \xCD\xDD |0 \xCD\xDE |0 \xCD\xDF |0 \xCD\xE0 |0 \xCD\xE1 |0 \xCD\xE2 |0 \xCD\xE3 |0 \xCD\xE4 |0 \xCD\xE5 |0 \xCD\xE6 |0 \xCD\xE7 |0 \xCD\xE8 |0 \xCD\xE9 |0 \xCD\xEA |0 \xCD\xEB |0 \xCD\xEC |0 \xCD\xED |0 \xCD\xEE |0 \xCD\xEF |0 \xCD\xF0 |0 \xCD\xF1 |0 \xCD\xF2 |0 \xCD\xF3 |0 \xCD\xF4 |0 \xCD\xF5 |0 \xCD\xF6 |0 \xCD\xF7 |0 \xCD\xF8 |0 \xCD\xF9 |0 \xCD\xFA |0 \xCD\xFB |0 \xCD\xFC |0 \xCD\xFD |0 \xCE\x41 |0 \xCE\x42 |0 \xCE\x43 |0 \xCE\x44 |0 \xCE\x45 |0 \xCE\x46 |0 \xCE\x47 |0 \xCE\x48 |0 \xCE\x49 |0 \xCE\x4A |0 \xCE\x4B |0 \xCE\x4C |0 \xCE\x4D |0 \xCE\x4E |0 \xCE\x4F |0 \xCE\x50 |0 \xCE\x51 |0 \xCE\x52 |0 \xCE\x53 |0 \xCE\x54 |0 \xCE\x55 |0 \xCE\x56 |0 \xCE\x57 |0 \xCE\x58 |0 \xCE\x59 |0 \xCE\x5A |0 \xCE\x5B |0 \xCE\x5C |0 \xCE\x5D |0 \xCE\x5E |0 \xCE\x5F |0 \xCE\x60 |0 \xCE\x61 |0 \xCE\x62 |0 \xCE\x63 |0 \xCE\x64 |0 \xCE\x65 |0 \xCE\x66 |0 \xCE\x67 |0 \xCE\x68 |0 \xCE\x69 |0 \xCE\x6A |0 \xCE\x6B |0 \xCE\x6C |0 \xCE\x6D |0 \xCE\x6E |0 \xCE\x6F |0 \xCE\x70 |0 \xCE\x71 |0 \xCE\x72 |0 \xCE\x73 |0 \xCE\x74 |0 \xCE\x75 |0 \xCE\x76 |0 \xCE\x77 |0 \xCE\x78 |0 \xCE\x79 |0 \xCE\x7A |0 \xCE\x7B |0 \xCE\x7C |0 \xCE\x7D |0 \xCE\x7E |0 \xCE\x7F |0 \xCE\x81 |0 \xCE\x82 |0 \xCE\x83 |0 \xCE\x84 |0 \xCE\x85 |0 \xCE\x86 |0 \xCE\x87 |0 \xCE\x88 |0 \xCE\x89 |0 \xCE\x8A |0 \xCE\x8B |0 \xCE\x8C |0 \xCE\x8D |0 \xCE\x8E |0 \xCE\x8F |0 \xCE\x90 |0 \xCE\x91 |0 \xCE\x92 |0 \xCE\x93 |0 \xCE\x94 |0 \xCE\x95 |0 \xCE\x96 |0 \xCE\x97 |0 \xCE\x98 |0 \xCE\x99 |0 \xCE\x9A |0 \xCE\x9B |0 \xCE\x9C |0 \xCE\x9D |0 \xCE\x9E |0 \xCE\x9F |0 \xCE\xA0 |0 \xCE\xA1 |0 \xCE\xA2 |0 \xCE\xA3 |0 \xCE\xA4 |0 \xCE\xA5 |0 \xCE\xA6 |0 \xCE\xA7 |0 \xCE\xA8 |0 \xCE\xA9 |0 \xCE\xAA |0 \xCE\xAB |0 \xCE\xAC |0 \xCE\xAD |0 \xCE\xAE |0 \xCE\xAF |0 \xCE\xB0 |0 \xCE\xB1 |0 \xCE\xB2 |0 \xCE\xB3 |0 \xCE\xB4 |0 \xCE\xB5 |0 \xCE\xB6 |0 \xCE\xB7 |0 \xCE\xB8 |0 \xCE\xB9 |0 \xCE\xBA |0 \xCE\xBB |0 \xCE\xBC |0 \xCE\xBD |0 \xCE\xBE |0 \xCE\xBF |0 \xCE\xC0 |0 \xCE\xC1 |0 \xCE\xC2 |0 \xCE\xC3 |0 \xCE\xC4 |0 \xCE\xC5 |0 \xCE\xC6 |0 \xCE\xC7 |0 \xCE\xC8 |0 \xCE\xC9 |0 \xCE\xCA |0 \xCE\xCB |0 \xCE\xCC |0 \xCE\xCD |0 \xCE\xCE |0 \xCE\xCF |0 \xCE\xD0 |0 \xCE\xD1 |0 \xCE\xD2 |0 \xCE\xD3 |0 \xCE\xD4 |0 \xCE\xD5 |0 \xCE\xD6 |0 \xCE\xD7 |0 \xCE\xD8 |0 \xCE\xD9 |0 \xCE\xDA |0 \xCE\xDB |0 \xCE\xDC |0 \xCE\xDD |0 \xCE\xDE |0 \xCE\xDF |0 \xCE\xE0 |0 \xCE\xE1 |0 \xCE\xE2 |0 \xCE\xE3 |0 \xCE\xE4 |0 \xCE\xE5 |0 \xCE\xE6 |0 \xCE\xE7 |0 \xCE\xE8 |0 \xCE\xE9 |0 \xCE\xEA |0 \xCE\xEB |0 \xCE\xEC |0 \xCE\xED |0 \xCE\xEE |0 \xCE\xEF |0 \xCE\xF0 |0 \xCE\xF1 |0 \xCE\xF2 |0 \xCE\xF3 |0 \xCE\xF4 |0 \xCE\xF5 |0 \xCE\xF6 |0 \xCE\xF7 |0 \xCE\xF8 |0 \xCE\xF9 |0 \xCE\xFA |0 \xCE\xFB |0 \xCE\xFC |0 \xCE\xFD |0 \xCF\x41 |0 \xCF\x42 |0 \xCF\x43 |0 \xCF\x44 |0 \xCF\x45 |0 \xCF\x46 |0 \xCF\x47 |0 \xCF\x48 |0 \xCF\x49 |0 \xCF\x4A |0 \xCF\x4B |0 \xCF\x4C |0 \xCF\x4D |0 \xCF\x4E |0 \xCF\x4F |0 \xCF\x50 |0 \xCF\x51 |0 \xCF\x52 |0 \xCF\x53 |0 \xCF\x54 |0 \xCF\x55 |0 \xCF\x56 |0 \xCF\x57 |0 \xCF\x58 |0 \xCF\x59 |0 \xCF\x5A |0 \xCF\x5B |0 \xCF\x5C |0 \xCF\x5D |0 \xCF\x5E |0 \xCF\x5F |0 \xCF\x60 |0 \xCF\x61 |0 \xCF\x62 |0 \xCF\x63 |0 \xCF\x64 |0 \xCF\x65 |0 \xCF\x66 |0 \xCF\x67 |0 \xCF\x68 |0 \xCF\x69 |0 \xCF\x6A |0 \xCF\x6B |0 \xCF\x6C |0 \xCF\x6D |0 \xCF\x6E |0 \xCF\x6F |0 \xCF\x70 |0 \xCF\x71 |0 \xCF\x72 |0 \xCF\x73 |0 \xCF\x74 |0 \xCF\x75 |0 \xCF\x76 |0 \xCF\x77 |0 \xCF\x78 |0 \xCF\x79 |0 \xCF\x7A |0 \xCF\x7B |0 \xCF\x7C |0 \xCF\x7D |0 \xCF\x7E |0 \xCF\x7F |0 \xCF\x81 |0 \xCF\x82 |0 \xCF\x83 |0 \xCF\x84 |0 \xCF\x85 |0 \xCF\x86 |0 \xCF\x87 |0 \xCF\x88 |0 \xCF\x89 |0 \xCF\x8A |0 \xCF\x8B |0 \xCF\x8C |0 \xCF\x8D |0 \xCF\x8E |0 \xCF\x8F |0 \xCF\x90 |0 \xCF\x91 |0 \xCF\x92 |0 \xCF\x93 |0 \xCF\x94 |0 \xCF\x95 |0 \xCF\x96 |0 \xCF\x97 |0 \xCF\x98 |0 \xCF\x99 |0 \xCF\x9A |0 \xCF\x9B |0 \xCF\x9C |0 \xCF\x9D |0 \xCF\x9E |0 \xCF\x9F |0 \xCF\xA0 |0 \xCF\xA1 |0 \xCF\xA2 |0 \xCF\xA3 |0 \xCF\xA4 |0 \xCF\xA5 |0 \xCF\xA6 |0 \xCF\xA7 |0 \xCF\xA8 |0 \xCF\xA9 |0 \xCF\xAA |0 \xCF\xAB |0 \xCF\xAC |0 \xCF\xAD |0 \xCF\xAE |0 \xCF\xAF |0 \xCF\xB0 |0 \xCF\xB1 |0 \xCF\xB2 |0 \xCF\xB3 |0 \xCF\xB4 |0 \xCF\xB5 |0 \xCF\xB6 |0 \xCF\xB7 |0 \xCF\xB8 |0 \xCF\xB9 |0 \xCF\xBA |0 \xCF\xBB |0 \xCF\xBC |0 \xCF\xBD |0 \xCF\xBE |0 \xCF\xBF |0 \xCF\xC0 |0 \xCF\xC1 |0 \xCF\xC2 |0 \xCF\xC3 |0 \xCF\xC4 |0 \xCF\xC5 |0 \xCF\xC6 |0 \xCF\xC7 |0 \xCF\xC8 |0 \xCF\xC9 |0 \xCF\xCA |0 \xCF\xCB |0 \xCF\xCC |0 \xCF\xCD |0 \xCF\xCE |0 \xCF\xCF |0 \xCF\xD0 |0 \xCF\xD1 |0 \xCF\xD2 |0 \xCF\xD3 |0 \xCF\xD4 |0 \xCF\xD5 |0 \xCF\xD6 |0 \xCF\xD7 |0 \xCF\xD8 |0 \xCF\xD9 |0 \xCF\xDA |0 \xCF\xDB |0 \xCF\xDC |0 \xCF\xDD |0 \xCF\xDE |0 \xCF\xDF |0 \xCF\xE0 |0 \xCF\xE1 |0 \xCF\xE2 |0 \xCF\xE3 |0 \xCF\xE4 |0 \xCF\xE5 |0 \xCF\xE6 |0 \xCF\xE7 |0 \xCF\xE8 |0 \xCF\xE9 |0 \xCF\xEA |0 \xCF\xEB |0 \xCF\xEC |0 \xCF\xED |0 \xCF\xEE |0 \xCF\xEF |0 \xCF\xF0 |0 \xCF\xF1 |0 \xCF\xF2 |0 \xCF\xF3 |0 \xCF\xF4 |0 \xCF\xF5 |0 \xCF\xF6 |0 \xCF\xF7 |0 \xCF\xF8 |0 \xCF\xF9 |0 \xCF\xFA |0 \xCF\xFB |0 \xCF\xFC |0 \xCF\xFD |0 \xD0\x41 |0 \xD0\x42 |0 \xD0\x43 |0 \xD0\x44 |0 \xD0\x45 |0 \xD0\x46 |0 \xD0\x47 |0 \xD0\x48 |0 \xD0\x49 |0 \xD0\x4A |0 \xD0\x4B |0 \xD0\x4C |0 \xD0\x4D |0 \xD0\x4E |0 \xD0\x4F |0 \xD0\x50 |0 \xD0\x51 |0 \xD0\x52 |0 \xD0\x53 |0 \xD0\x54 |0 \xD0\x55 |0 \xD0\x56 |0 \xD0\x57 |0 \xD0\x58 |0 \xD0\x59 |0 \xD0\x5A |0 \xD0\x5B |0 \xD0\x5C |0 \xD0\x5D |0 \xD0\x5E |0 \xD0\x5F |0 \xD0\x60 |0 \xD0\x61 |0 \xD0\x62 |0 \xD0\x63 |0 \xD0\x64 |0 \xD0\x65 |0 \xD0\x66 |0 \xD0\x67 |0 \xD0\x68 |0 \xD0\x69 |0 \xD0\x6A |0 \xD0\x6B |0 \xD0\x6C |0 \xD0\x6D |0 \xD0\x6E |0 \xD0\x6F |0 \xD0\x70 |0 \xD0\x71 |0 \xD0\x72 |0 \xD0\x73 |0 \xD0\x74 |0 \xD0\x75 |0 \xD0\x76 |0 \xD0\x77 |0 \xD0\x78 |0 \xD0\x79 |0 \xD0\x7A |0 \xD0\x7B |0 \xD0\x7C |0 \xD0\x7D |0 \xD0\x7E |0 \xD0\x7F |0 \xD0\x81 |0 \xD0\x82 |0 \xD0\x83 |0 \xD0\x84 |0 \xD0\x85 |0 \xD0\x86 |0 \xD0\x87 |0 \xD0\x88 |0 \xD0\x89 |0 \xD0\x8A |0 \xD0\x8B |0 \xD0\x8C |0 \xD0\x8D |0 \xD0\x8E |0 \xD0\x8F |0 \xD0\x90 |0 \xD0\x91 |0 \xD0\x92 |0 \xD0\x93 |0 \xD0\x94 |0 \xD0\x95 |0 \xD0\x96 |0 \xD0\x97 |0 \xD0\x98 |0 \xD0\x99 |0 \xD0\x9A |0 \xD0\x9B |0 \xD0\x9C |0 \xD0\x9D |0 \xD0\x9E |0 \xD0\x9F |0 \xD0\xA0 |0 \xD0\xA1 |0 \xD0\xA2 |0 \xD0\xA3 |0 \xD0\xA4 |0 \xD0\xA5 |0 \xD0\xA6 |0 \xD0\xA7 |0 \xD0\xA8 |0 \xD0\xA9 |0 \xD0\xAA |0 \xD0\xAB |0 \xD0\xAC |0 \xD0\xAD |0 \xD0\xAE |0 \xD0\xAF |0 \xD0\xB0 |0 \xD0\xB1 |0 \xD0\xB2 |0 \xD0\xB3 |0 \xD0\xB4 |0 \xD0\xB5 |0 \xD0\xB6 |0 \xD0\xB7 |0 \xD0\xB8 |0 \xD0\xB9 |0 \xD0\xBA |0 \xD0\xBB |0 \xD0\xBC |0 \xD0\xBD |0 \xD0\xBE |0 \xD0\xBF |0 \xD0\xC0 |0 \xD0\xC1 |0 \xD0\xC2 |0 \xD0\xC3 |0 \xD0\xC4 |0 \xD0\xC5 |0 \xD0\xC6 |0 \xD0\xC7 |0 \xD0\xC8 |0 \xD0\xC9 |0 \xD0\xCA |0 \xD0\xCB |0 \xD0\xCC |0 \xD0\xCD |0 \xD0\xCE |0 \xD0\xCF |0 \xD0\xD0 |0 \xD0\xD1 |0 \xD0\xD2 |0 \xD0\xD3 |0 \xD0\xD4 |0 \xD0\xD5 |0 \xD0\xD6 |0 \xD0\xD7 |0 \xD0\xD8 |0 \xD0\xD9 |0 \xD0\xDA |0 \xD0\xDB |0 \xD0\xDC |0 \xD0\xDD |0 \xD0\xDE |0 \xD0\xDF |0 \xD0\xE0 |0 \xD0\xE1 |0 \xD0\xE2 |0 \xD0\xE3 |0 \xD0\xE4 |0 \xD0\xE5 |0 \xD0\xE6 |0 \xD0\xE7 |0 \xD0\xE8 |0 \xD0\xE9 |0 \xD0\xEA |0 \xD0\xEB |0 \xD0\xEC |0 \xD0\xED |0 \xD0\xEE |0 \xD0\xEF |0 \xD0\xF0 |0 \xD0\xF1 |0 \xD0\xF2 |0 \xD0\xF3 |0 \xD0\xF4 |0 \xD0\xF5 |0 \xD0\xF6 |0 \xD0\xF7 |0 \xD0\xF8 |0 \xD0\xF9 |0 \xD0\xFA |0 \xD0\xFB |0 \xD0\xFC |0 \xD0\xFD |0 \xD1\x41 |0 \xD1\x42 |0 \xD1\x43 |0 \xD1\x44 |0 \xD1\x45 |0 \xD1\x46 |0 \xD1\x47 |0 \xD1\x48 |0 \xD1\x49 |0 \xD1\x4A |0 \xD1\x4B |0 \xD1\x4C |0 \xD1\x4D |0 \xD1\x4E |0 \xD1\x4F |0 \xD1\x50 |0 \xD1\x51 |0 \xD1\x52 |0 \xD1\x53 |0 \xD1\x54 |0 \xD1\x55 |0 \xD1\x56 |0 \xD1\x57 |0 \xD1\x58 |0 \xD1\x59 |0 \xD1\x5A |0 \xD1\x5B |0 \xD1\x5C |0 \xD1\x5D |0 \xD1\x5E |0 \xD1\x5F |0 \xD1\x60 |0 \xD1\x61 |0 \xD1\x62 |0 \xD1\x63 |0 \xD1\x64 |0 \xD1\x65 |0 \xD1\x66 |0 \xD1\x67 |0 \xD1\x68 |0 \xD1\x69 |0 \xD1\x6A |0 \xD1\x6B |0 \xD1\x6C |0 \xD1\x6D |0 \xD1\x6E |0 \xD1\x6F |0 \xD1\x70 |0 \xD1\x71 |0 \xD1\x72 |0 \xD1\x73 |0 \xD1\x74 |0 \xD1\x75 |0 \xD1\x76 |0 \xD1\x77 |0 \xD1\x78 |0 \xD1\x79 |0 \xD1\x7A |0 \xD1\x7B |0 \xD1\x7C |0 \xD1\x7D |0 \xD1\x7E |0 \xD1\x7F |0 \xD1\x81 |0 \xD1\x82 |0 \xD1\x83 |0 \xD1\x84 |0 \xD1\x85 |0 \xD1\x86 |0 \xD1\x87 |0 \xD1\x88 |0 \xD1\x89 |0 \xD1\x8A |0 \xD1\x8B |0 \xD1\x8C |0 \xD1\x8D |0 \xD1\x8E |0 \xD1\x8F |0 \xD1\x90 |0 \xD1\x91 |0 \xD1\x92 |0 \xD1\x93 |0 \xD1\x94 |0 \xD1\x95 |0 \xD1\x96 |0 \xD1\x97 |0 \xD1\x98 |0 \xD1\x99 |0 \xD1\x9A |0 \xD1\x9B |0 \xD1\x9C |0 \xD1\x9D |0 \xD1\x9E |0 \xD1\x9F |0 \xD1\xA0 |0 \xD1\xA1 |0 \xD1\xA2 |0 \xD1\xA3 |0 \xD1\xA4 |0 \xD1\xA5 |0 \xD1\xA6 |0 \xD1\xA7 |0 \xD1\xA8 |0 \xD1\xA9 |0 \xD1\xAA |0 \xD1\xAB |0 \xD1\xAC |0 \xD1\xAD |0 \xD1\xAE |0 \xD1\xAF |0 \xD1\xB0 |0 \xD1\xB1 |0 \xD1\xB2 |0 \xD1\xB3 |0 \xD1\xB4 |0 \xD1\xB5 |0 \xD1\xB6 |0 \xD1\xB7 |0 \xD1\xB8 |0 \xD1\xB9 |0 \xD1\xBA |0 \xD1\xBB |0 \xD1\xBC |0 \xD1\xBD |0 \xD1\xBE |0 \xD1\xBF |0 \xD1\xC0 |0 \xD1\xC1 |0 \xD1\xC2 |0 \xD1\xC3 |0 \xD1\xC4 |0 \xD1\xC5 |0 \xD1\xC6 |0 \xD1\xC7 |0 \xD1\xC8 |0 \xD1\xC9 |0 \xD1\xCA |0 \xD1\xCB |0 \xD1\xCC |0 \xD1\xCD |0 \xD1\xCE |0 \xD1\xCF |0 \xD1\xD0 |0 \xD1\xD1 |0 \xD1\xD2 |0 \xD1\xD3 |0 \xD1\xD4 |0 \xD1\xD5 |0 \xD1\xD6 |0 \xD1\xD7 |0 \xD1\xD8 |0 \xD1\xD9 |0 \xD1\xDA |0 \xD1\xDB |0 \xD1\xDC |0 \xD1\xDD |0 \xD1\xDE |0 \xD1\xDF |0 \xD1\xE0 |0 \xD1\xE1 |0 \xD1\xE2 |0 \xD1\xE3 |0 \xD1\xE4 |0 \xD1\xE5 |0 \xD1\xE6 |0 \xD1\xE7 |0 \xD1\xE8 |0 \xD1\xE9 |0 \xD1\xEA |0 \xD1\xEB |0 \xD1\xEC |0 \xD1\xED |0 \xD1\xEE |0 \xD1\xEF |0 \xD1\xF0 |0 \xD1\xF1 |0 \xD1\xF2 |0 \xD1\xF3 |0 \xD1\xF4 |0 \xD1\xF5 |0 \xD1\xF6 |0 \xD1\xF7 |0 \xD1\xF8 |0 \xD1\xF9 |0 \xD1\xFA |0 \xD1\xFB |0 \xD1\xFC |0 \xD1\xFD |0 \xD2\x41 |0 \xD2\x42 |0 \xD2\x43 |0 \xD2\x44 |0 \xD2\x45 |0 \xD2\x46 |0 \xD2\x47 |0 \xD2\x48 |0 \xD2\x49 |0 \xD2\x4A |0 \xD2\x4B |0 \xD2\x4C |0 \xD2\x4D |0 \xD2\x4E |0 \xD2\x4F |0 \xD2\x50 |0 \xD2\x51 |0 \xD2\x52 |0 \xD2\x53 |0 \xD2\x54 |0 \xD2\x55 |0 \xD2\x56 |0 \xD2\x57 |0 \xD2\x58 |0 \xD2\x59 |0 \xD2\x5A |0 \xD2\x5B |0 \xD2\x5C |0 \xD2\x5D |0 \xD2\x5E |0 \xD2\x5F |0 \xD2\x60 |0 \xD2\x61 |0 \xD2\x62 |0 \xD2\x63 |0 \xD2\x64 |0 \xD2\x65 |0 \xD2\x66 |0 \xD2\x67 |0 \xD2\x68 |0 \xD2\x69 |0 \xD2\x6A |0 \xD2\x6B |0 \xD2\x6C |0 \xD2\x6D |0 \xD2\x6E |0 \xD2\x6F |0 \xD2\x70 |0 \xD2\x71 |0 \xD2\x72 |0 \xD2\x73 |0 \xD2\x74 |0 \xD2\x75 |0 \xD2\x76 |0 \xD2\x77 |0 \xD2\x78 |0 \xD2\x79 |0 \xD2\x7A |0 \xD2\x7B |0 \xD2\x7C |0 \xD2\x7D |0 \xD2\x7E |0 \xD2\x7F |0 \xD2\x81 |0 \xD2\x82 |0 \xD2\x83 |0 \xD2\x84 |0 \xD2\x85 |0 \xD2\x86 |0 \xD2\x87 |0 \xD2\x88 |0 \xD2\x89 |0 \xD2\x8A |0 \xD2\x8B |0 \xD2\x8C |0 \xD2\x8D |0 \xD2\x8E |0 \xD2\x8F |0 \xD2\x90 |0 \xD2\x91 |0 \xD2\x92 |0 \xD2\x93 |0 \xD2\x94 |0 \xD2\x95 |0 \xD2\x96 |0 \xD2\x97 |0 \xD2\x98 |0 \xD2\x99 |0 \xD2\x9A |0 \xD2\x9B |0 \xD2\x9C |0 \xD2\x9D |0 \xD2\x9E |0 \xD2\x9F |0 \xD2\xA0 |0 \xD2\xA1 |0 \xD2\xA2 |0 \xD2\xA3 |0 \xD2\xA4 |0 \xD2\xA5 |0 \xD2\xA6 |0 \xD2\xA7 |0 \xD2\xA8 |0 \xD2\xA9 |0 \xD2\xAA |0 \xD2\xAB |0 \xD2\xAC |0 \xD2\xAD |0 \xD2\xAE |0 \xD2\xAF |0 \xD2\xB0 |0 \xD2\xB1 |0 \xD2\xB2 |0 \xD2\xB3 |0 \xD2\xB4 |0 \xD2\xB5 |0 \xD2\xB6 |0 \xD2\xB7 |0 \xD2\xB8 |0 \xD2\xB9 |0 \xD2\xBA |0 \xD2\xBB |0 \xD2\xBC |0 \xD2\xBD |0 \xD2\xBE |0 \xD2\xBF |0 \xD2\xC0 |0 \xD2\xC1 |0 \xD2\xC2 |0 \xD2\xC3 |0 \xD2\xC4 |0 \xD2\xC5 |0 \xD2\xC6 |0 \xD2\xC7 |0 \xD2\xC8 |0 \xD2\xC9 |0 \xD2\xCA |0 \xD2\xCB |0 \xD2\xCC |0 \xD2\xCD |0 \xD2\xCE |0 \xD2\xCF |0 \xD2\xD0 |0 \xD2\xD1 |0 \xD2\xD2 |0 \xD2\xD3 |0 \xD2\xD4 |0 \xD2\xD5 |0 \xD2\xD6 |0 \xD2\xD7 |0 \xD2\xD8 |0 \xD2\xD9 |0 \xD2\xDA |0 \xD2\xDB |0 \xD2\xDC |0 \xD2\xDD |0 \xD2\xDE |0 \xD2\xDF |0 \xD2\xE0 |0 \xD2\xE1 |0 \xD2\xE2 |0 \xD2\xE3 |0 \xD2\xE4 |0 \xD2\xE5 |0 \xD2\xE6 |0 \xD2\xE7 |0 \xD2\xE8 |0 \xD2\xE9 |0 \xD2\xEA |0 \xD2\xEB |0 \xD2\xEC |0 \xD2\xED |0 \xD2\xEE |0 \xD2\xEF |0 \xD2\xF0 |0 \xD2\xF1 |0 \xD2\xF2 |0 \xD2\xF3 |0 \xD2\xF4 |0 \xD2\xF5 |0 \xD2\xF6 |0 \xD2\xF7 |0 \xD2\xF8 |0 \xD2\xF9 |0 \xD2\xFA |0 \xD2\xFB |0 \xD2\xFC |0 \xD2\xFD |0 \xD3\x41 |0 \xD3\x42 |0 \xD3\x43 |0 \xD3\x44 |0 \xD3\x45 |0 \xD3\x46 |0 \xD3\x47 |0 \xD3\x48 |0 \xD3\x49 |0 \xD3\x4A |0 \xD3\x4B |0 \xD3\x4C |0 \xD3\x4D |0 \xD3\x4E |0 \xD3\x4F |0 \xD3\x50 |0 \xD3\x51 |0 \xD3\x52 |0 \xD3\x53 |0 \xD3\x54 |0 \xD3\x55 |0 \xD3\x56 |0 \xD3\x57 |0 \xD3\x58 |0 \xD3\x59 |0 \xD3\x5A |0 \xD3\x5B |0 \xD3\x5C |0 \xD3\x5D |0 \xD3\x5E |0 \xD3\x5F |0 \xD3\x60 |0 \xD3\x61 |0 \xD3\x62 |0 \xD3\x63 |0 \xD3\x64 |0 \xD3\x65 |0 \xD3\x66 |0 \xD3\x67 |0 \xD3\x68 |0 \xD3\x69 |0 \xD3\x6A |0 \xD3\x6B |0 \xD3\x6C |0 \xD3\x6D |0 \xD3\x6E |0 \xD3\x6F |0 \xD3\x70 |0 \xD3\x71 |0 \xD3\x72 |0 \xD3\x73 |0 \xD3\x74 |0 \xD3\x75 |0 \xD3\x76 |0 \xD3\x77 |0 \xD3\x78 |0 \xD3\x79 |0 \xD3\x7A |0 \xD3\x7B |0 \xD3\x7C |0 \xD3\x7D |0 \xD3\x7E |0 \xD3\x7F |0 \xD3\x81 |0 \xD3\x82 |0 \xD3\x83 |0 \xD3\x84 |0 \xD3\x85 |0 \xD3\x86 |0 \xD3\x87 |0 \xD3\x88 |0 \xD3\x89 |0 \xD3\x8A |0 \xD3\x8B |0 \xD3\x8C |0 \xD3\x8D |0 \xD3\x8E |0 \xD3\x8F |0 \xD3\x90 |0 \xD3\x91 |0 \xD3\x92 |0 \xD3\x93 |0 \xD3\x94 |0 \xD3\x95 |0 \xD3\x96 |0 \xD3\x97 |0 \xD3\x98 |0 \xD3\x99 |0 \xD3\x9A |0 \xD3\x9B |0 \xD3\x9C |0 \xD3\x9D |0 \xD3\x9E |0 \xD3\x9F |0 \xD3\xA0 |0 \xD3\xA1 |0 \xD3\xA2 |0 \xD3\xA3 |0 \xD3\xA4 |0 \xD3\xA5 |0 \xD3\xA6 |0 \xD3\xA7 |0 \xD3\xA8 |0 \xD3\xA9 |0 \xD3\xAA |0 \xD3\xAB |0 \xD3\xAC |0 \xD3\xAD |0 \xD3\xAE |0 \xD3\xAF |0 \xD3\xB0 |0 \xD3\xB1 |0 \xD3\xB2 |0 \xD3\xB3 |0 \xD3\xB4 |0 \xD3\xB5 |0 \xD3\xB6 |0 \xD3\xB7 |0 \xD3\xB8 |0 \xD3\xB9 |0 \xD3\xBA |0 \xD3\xBB |0 \xD3\xBC |0 \xD3\xBD |0 \xD3\xBE |0 \xD3\xBF |0 \xD3\xC0 |0 \xD3\xC1 |0 \xD3\xC2 |0 \xD3\xC3 |0 \xD3\xC4 |0 \xD3\xC5 |0 \xD3\xC6 |0 \xD3\xC7 |0 \xD3\xC8 |0 \xD3\xC9 |0 \xD3\xCA |0 \xD3\xCB |0 \xD3\xCC |0 \xD3\xCD |0 \xD3\xCE |0 \xD3\xCF |0 \xD3\xD0 |0 \xD3\xD1 |0 \xD3\xD2 |0 \xD3\xD3 |0 \xD3\xD4 |0 \xD3\xD5 |0 \xD3\xD6 |0 \xD3\xD7 |0 \xD3\xD8 |0 \xD3\xD9 |0 \xD3\xDA |0 \xD3\xDB |0 \xD3\xDC |0 \xD3\xDD |0 \xD3\xDE |0 \xD3\xDF |0 \xD3\xE0 |0 \xD3\xE1 |0 \xD3\xE2 |0 \xD3\xE3 |0 \xD3\xE4 |0 \xD3\xE5 |0 \xD3\xE6 |0 \xD3\xE7 |0 \xD3\xE8 |0 \xD3\xE9 |0 \xD3\xEA |0 \xD3\xEB |0 \xD3\xEC |0 \xD3\xED |0 \xD3\xEE |0 \xD3\xEF |0 \xD3\xF0 |0 \xD3\xF1 |0 \xD3\xF2 |0 \xD3\xF3 |0 \xD3\xF4 |0 \xD3\xF5 |0 \xD3\xF6 |0 \xD3\xF7 |0 \xD3\xF8 |0 \xD3\xF9 |0 \xD3\xFA |0 \xD3\xFB |0 \xD3\xFC |0 \xD3\xFD |0 \xD4\x41 |0 \xD4\x42 |0 \xD4\x43 |0 \xD4\x44 |0 \xD4\x45 |0 \xD4\x46 |0 \xD4\x47 |0 \xD4\x48 |0 \xD4\x49 |0 \xD4\x4A |0 \xD4\x4B |0 \xD4\x4C |0 \xD4\x4D |0 \xD4\x4E |0 \xD4\x4F |0 \xD4\x50 |0 \xD4\x51 |0 \xD4\x52 |0 \xD4\x53 |0 \xD4\x54 |0 \xD4\x55 |0 \xD4\x56 |0 \xD4\x57 |0 \xD4\x58 |0 \xD4\x59 |0 \xD4\x5A |0 \xD4\x5B |0 \xD4\x5C |0 \xD4\x5D |0 \xD4\x5E |0 \xD4\x5F |0 \xD4\x60 |0 \xD4\x61 |0 \xD4\x62 |0 \xD4\x63 |0 \xD4\x64 |0 \xD4\x65 |0 \xD4\x66 |0 \xD4\x67 |0 \xD4\x68 |0 \xD4\x69 |0 \xD4\x6A |0 \xD4\x6B |0 \xD4\x6C |0 \xD4\x6D |0 \xD4\x6E |0 \xD4\x6F |0 \xD4\x70 |0 \xD4\x71 |0 \xD4\x72 |0 \xD4\x73 |0 \xD4\x74 |0 \xD4\x75 |0 \xD4\x76 |0 \xD4\x77 |0 \xD4\x78 |0 \xD4\x79 |0 \xD4\x7A |0 \xD4\x7B |0 \xD4\x7C |0 \xD4\x7D |0 \xD4\x7E |0 \xD4\x7F |0 \xD4\x81 |0 \xD4\x82 |0 \xD4\x83 |0 \xD4\x84 |0 \xD4\x85 |0 \xD4\x86 |0 \xD4\x87 |0 \xD4\x88 |0 \xD4\x89 |0 \xD4\x8A |0 \xD4\x8B |0 \xD4\x8C |0 \xD4\x8D |0 \xD4\x8E |0 \xD4\x8F |0 \xD4\x90 |0 \xD4\x91 |0 \xD4\x92 |0 \xD4\x93 |0 \xD4\x94 |0 \xD4\x95 |0 \xD4\x96 |0 \xD4\x97 |0 \xD4\x98 |0 \xD4\x99 |0 \xD4\x9A |0 \xD4\x9B |0 \xD4\x9C |0 \xD4\x9D |0 \xD4\x9E |0 \xD4\x9F |0 \xD4\xA0 |0 \xD4\xA1 |0 \xD4\xA2 |0 \xD4\xA3 |0 \xD4\xA4 |0 \xD4\xA5 |0 \xD4\xA6 |0 \xD4\xA7 |0 \xD4\xA8 |0 \xD4\xA9 |0 \xD4\xAA |0 \xD4\xAB |0 \xD4\xAC |0 \xD4\xAD |0 \xD4\xAE |0 \xD4\xAF |0 \xD4\xB0 |0 \xD4\xB1 |0 \xD4\xB2 |0 \xD4\xB3 |0 \xD4\xB4 |0 \xD4\xB5 |0 \xD4\xB6 |0 \xD4\xB7 |0 \xD4\xB8 |0 \xD4\xB9 |0 \xD4\xBA |0 \xD4\xBB |0 \xD4\xBC |0 \xD4\xBD |0 \xD4\xBE |0 \xD4\xBF |0 \xD4\xC0 |0 \xD4\xC1 |0 \xD4\xC2 |0 \xD4\xC3 |0 \xD4\xC4 |0 \xD4\xC5 |0 \xD4\xC6 |0 \xD4\xC7 |0 \xD4\xC8 |0 \xD4\xC9 |0 \xD4\xCA |0 \xD4\xCB |0 \xD4\xCC |0 \xD4\xCD |0 \xD4\xCE |0 \xD4\xCF |0 \xD4\xD0 |0 \xD4\xD1 |0 \xD4\xD2 |0 \xD4\xD3 |0 \xD4\xD4 |0 \xD4\xD5 |0 \xD4\xD6 |0 \xD4\xD7 |0 \xD4\xD8 |0 \xD4\xD9 |0 \xD4\xDA |0 \xD4\xDB |0 \xD4\xDC |0 \xD4\xDD |0 \xD4\xDE |0 \xD4\xDF |0 \xD4\xE0 |0 \xD4\xE1 |0 \xD4\xE2 |0 \xD4\xE3 |0 \xD4\xE4 |0 \xD4\xE5 |0 \xD4\xE6 |0 \xD4\xE7 |0 \xD4\xE8 |0 \xD4\xE9 |0 \xD4\xEA |0 \xD4\xEB |0 \xD4\xEC |0 \xD4\xED |0 \xD4\xEE |0 \xD4\xEF |0 \xD4\xF0 |0 \xD4\xF1 |0 \xD4\xF2 |0 \xD4\xF3 |0 \xD4\xF4 |0 \xD4\xF5 |0 \xD4\xF6 |0 \xD4\xF7 |0 \xD4\xF8 |0 \xD4\xF9 |0 \xD4\xFA |0 \xD4\xFB |0 \xD4\xFC |0 \xD4\xFD |0 \xD5\x41 |0 \xD5\x42 |0 \xD5\x43 |0 \xD5\x44 |0 \xD5\x45 |0 \xD5\x46 |0 \xD5\x47 |0 \xD5\x48 |0 \xD5\x49 |0 \xD5\x4A |0 \xD5\x4B |0 \xD5\x4C |0 \xD5\x4D |0 \xD5\x4E |0 \xD5\x4F |0 \xD5\x50 |0 \xD5\x51 |0 \xD5\x52 |0 \xD5\x53 |0 \xD5\x54 |0 \xD5\x55 |0 \xD5\x56 |0 \xD5\x57 |0 \xD5\x58 |0 \xD5\x59 |0 \xD5\x5A |0 \xD5\x5B |0 \xD5\x5C |0 \xD5\x5D |0 \xD5\x5E |0 \xD5\x5F |0 \xD5\x60 |0 \xD5\x61 |0 \xD5\x62 |0 \xD5\x63 |0 \xD5\x64 |0 \xD5\x65 |0 \xD5\x66 |0 \xD5\x67 |0 \xD5\x68 |0 \xD5\x69 |0 \xD5\x6A |0 \xD5\x6B |0 \xD5\x6C |0 \xD5\x6D |0 \xD5\x6E |0 \xD5\x6F |0 \xD5\x70 |0 \xD5\x71 |0 \xD5\x72 |0 \xD5\x73 |0 \xD5\x74 |0 \xD5\x75 |0 \xD5\x76 |0 \xD5\x77 |0 \xD5\x78 |0 \xD5\x79 |0 \xD5\x7A |0 \xD5\x7B |0 \xD5\x7C |0 \xD5\x7D |0 \xD5\x7E |0 \xD5\x7F |0 \xD5\x81 |0 \xD5\x82 |0 \xD5\x83 |0 \xD5\x84 |0 \xD5\x85 |0 \xD5\x86 |0 \xD5\x87 |0 \xD5\x88 |0 \xD5\x89 |0 \xD5\x8A |0 \xD5\x8B |0 \xD5\x8C |0 \xD5\x8D |0 \xD5\x8E |0 \xD5\x8F |0 \xD5\x90 |0 \xD5\x91 |0 \xD5\x92 |0 \xD5\x93 |0 \xD5\x94 |0 \xD5\x95 |0 \xD5\x96 |0 \xD5\x97 |0 \xD5\x98 |0 \xD5\x99 |0 \xD5\x9A |0 \xD5\x9B |0 \xD5\x9C |0 \xD5\x9D |0 \xD5\x9E |0 \xD5\x9F |0 \xD5\xA0 |0 \xD5\xA1 |0 \xD5\xA2 |0 \xD5\xA3 |0 \xD5\xA4 |0 \xD5\xA5 |0 \xD5\xA6 |0 \xD5\xA7 |0 \xD5\xA8 |0 \xD5\xA9 |0 \xD5\xAA |0 \xD5\xAB |0 \xD5\xAC |0 \xD5\xAD |0 \xD5\xAE |0 \xD5\xAF |0 \xD5\xB0 |0 \xD5\xB1 |0 \xD5\xB2 |0 \xD5\xB3 |0 \xD5\xB4 |0 \xD5\xB5 |0 \xD5\xB6 |0 \xD5\xB7 |0 \xD5\xB8 |0 \xD5\xB9 |0 \xD5\xBA |0 \xD5\xBB |0 \xD5\xBC |0 \xD5\xBD |0 \xD5\xBE |0 \xD5\xBF |0 \xD5\xC0 |0 \xD5\xC1 |0 \xD5\xC2 |0 \xD5\xC3 |0 \xD5\xC4 |0 \xD5\xC5 |0 \xD5\xC6 |0 \xD5\xC7 |0 \xD5\xC8 |0 \xD5\xC9 |0 \xD5\xCA |0 \xD5\xCB |0 \xD5\xCC |0 \xD5\xCD |0 \xD5\xCE |0 \xD5\xCF |0 \xD5\xD0 |0 \xD5\xD1 |0 \xD5\xD2 |0 \xD5\xD3 |0 \xD5\xD4 |0 \xD5\xD5 |0 \xD5\xD6 |0 \xD5\xD7 |0 \xD5\xD8 |0 \xD5\xD9 |0 \xD5\xDA |0 \xD5\xDB |0 \xD5\xDC |0 \xD5\xDD |0 \xD5\xDE |0 \xD5\xDF |0 \xD5\xE0 |0 \xD5\xE1 |0 \xD5\xE2 |0 \xD5\xE3 |0 \xD5\xE4 |0 \xD5\xE5 |0 \xD5\xE6 |0 \xD5\xE7 |0 \xD5\xE8 |0 \xD5\xE9 |0 \xD5\xEA |0 \xD5\xEB |0 \xD5\xEC |0 \xD5\xED |0 \xD5\xEE |0 \xD5\xEF |0 \xD5\xF0 |0 \xD5\xF1 |0 \xD5\xF2 |0 \xD5\xF3 |0 \xD5\xF4 |0 \xD5\xF5 |0 \xD5\xF6 |0 \xD5\xF7 |0 \xD5\xF8 |0 \xD5\xF9 |0 \xD5\xFA |0 \xD5\xFB |0 \xD5\xFC |0 \xD5\xFD |0 \xD6\x41 |0 \xD6\x42 |0 \xD6\x43 |0 \xD6\x44 |0 \xD6\x45 |0 \xD6\x46 |0 \xD6\x47 |0 \xD6\x48 |0 \xD6\x49 |0 \xD6\x4A |0 \xD6\x4B |0 \xD6\x4C |0 \xD6\x4D |0 \xD6\x4E |0 \xD6\x4F |0 \xD6\x50 |0 \xD6\x51 |0 \xD6\x52 |0 \xD6\x53 |0 \xD6\x54 |0 \xD6\x55 |0 \xD6\x56 |0 \xD6\x57 |0 \xD6\x58 |0 \xD6\x59 |0 \xD6\x5A |0 \xD6\x5B |0 \xD6\x5C |0 \xD6\x5D |0 \xD6\x5E |0 \xD6\x5F |0 \xD6\x60 |0 \xD6\x61 |0 \xD6\x62 |0 \xD6\x63 |0 \xD6\x64 |0 \xD6\x65 |0 \xD6\x66 |0 \xD6\x67 |0 \xD6\x68 |0 \xD6\x69 |0 \xD6\x6A |0 \xD6\x6B |0 \xD6\x6C |0 \xD6\x6D |0 \xD6\x6E |0 \xD6\x6F |0 \xD6\x70 |0 \xD6\x71 |0 \xD6\x72 |0 \xD6\x73 |0 \xD6\x74 |0 \xD6\x75 |0 \xD6\x76 |0 \xD6\x77 |0 \xD6\x78 |0 \xD6\x79 |0 \xD6\x7A |0 \xD6\x7B |0 \xD6\x7C |0 \xD6\x7D |0 \xD6\x7E |0 \xD6\x7F |0 \xD6\x81 |0 \xD6\x82 |0 \xD6\x83 |0 \xD6\x84 |0 \xD6\x85 |0 \xD6\x86 |0 \xD6\x87 |0 \xD6\x88 |0 \xD6\x89 |0 \xD6\x8A |0 \xD6\x8B |0 \xD6\x8C |0 \xD6\x8D |0 \xD6\x8E |0 \xD6\x8F |0 \xD6\x90 |0 \xD6\x91 |0 \xD6\x92 |0 \xD6\x93 |0 \xD6\x94 |0 \xD6\x95 |0 \xD6\x96 |0 \xD6\x97 |0 \xD6\x98 |0 \xD6\x99 |0 \xD6\x9A |0 \xD6\x9B |0 \xD6\x9C |0 \xD6\x9D |0 \xD6\x9E |0 \xD6\x9F |0 \xD6\xA0 |0 \xD6\xA1 |0 \xD6\xA2 |0 \xD6\xA3 |0 \xD6\xA4 |0 \xD6\xA5 |0 \xD6\xA6 |0 \xD6\xA7 |0 \xD6\xA8 |0 \xD6\xA9 |0 \xD6\xAA |0 \xD6\xAB |0 \xD6\xAC |0 \xD6\xAD |0 \xD6\xAE |0 \xD6\xAF |0 \xD6\xB0 |0 \xD6\xB1 |0 \xD6\xB2 |0 \xD6\xB3 |0 \xD6\xB4 |0 \xD6\xB5 |0 \xD6\xB6 |0 \xD6\xB7 |0 \xD6\xB8 |0 \xD6\xB9 |0 \xD6\xBA |0 \xD6\xBB |0 \xD6\xBC |0 \xD6\xBD |0 \xD6\xBE |0 \xD6\xBF |0 \xD6\xC0 |0 \xD6\xC1 |0 \xD6\xC2 |0 \xD6\xC3 |0 \xD6\xC4 |0 \xD6\xC5 |0 \xD6\xC6 |0 \xD6\xC7 |0 \xD6\xC8 |0 \xD6\xC9 |0 \xD6\xCA |0 \xD6\xCB |0 \xD6\xCC |0 \xD6\xCD |0 \xD6\xCE |0 \xD6\xCF |0 \xD6\xD0 |0 \xD6\xD1 |0 \xD6\xD2 |0 \xD6\xD3 |0 \xD6\xD4 |0 \xD6\xD5 |0 \xD6\xD6 |0 \xD6\xD7 |0 \xD6\xD8 |0 \xD6\xD9 |0 \xD6\xDA |0 \xD6\xDB |0 \xD6\xDC |0 \xD6\xDD |0 \xD6\xDE |0 \xD6\xDF |0 \xD6\xE0 |0 \xD6\xE1 |0 \xD6\xE2 |0 \xD6\xE3 |0 \xD6\xE4 |0 \xD6\xE5 |0 \xD6\xE6 |0 \xD6\xE7 |0 \xD6\xE8 |0 \xD6\xE9 |0 \xD6\xEA |0 \xD6\xEB |0 \xD6\xEC |0 \xD6\xED |0 \xD6\xEE |0 \xD6\xEF |0 \xD6\xF0 |0 \xD6\xF1 |0 \xD6\xF2 |0 \xD6\xF3 |0 \xD6\xF4 |0 \xD6\xF5 |0 \xD6\xF6 |0 \xD6\xF7 |0 \xD6\xF8 |0 \xD6\xF9 |0 \xD6\xFA |0 \xD6\xFB |0 \xD6\xFC |0 \xD6\xFD |0 \xD7\x41 |0 \xD7\x42 |0 \xD7\x43 |0 \xD7\x44 |0 \xD7\x45 |0 \xD7\x46 |0 \xD7\x47 |0 \xD7\x48 |0 \xD7\x49 |0 \xD7\x4A |0 \xD7\x4B |0 \xD7\x4C |0 \xD7\x4D |0 \xD7\x4E |0 \xD7\x4F |0 \xD7\x50 |0 \xD7\x51 |0 \xD7\x52 |0 \xD7\x53 |0 \xD7\x54 |0 \xD7\x55 |0 \xD7\x56 |0 \xD7\x57 |0 \xD7\x58 |0 \xD7\x59 |0 \xD7\x5A |0 \xD7\x5B |0 \xD7\x5C |0 \xD7\x5D |0 \xD7\x5E |0 \xD7\x5F |0 \xD7\x60 |0 \xD7\x61 |0 \xD7\x62 |0 \xD7\x63 |0 \xD7\x64 |0 \xD7\x65 |0 \xD7\x66 |0 \xD7\x67 |0 \xD7\x68 |0 \xD7\x69 |0 \xD7\x6A |0 \xD7\x6B |0 \xD7\x6C |0 \xD7\x6D |0 \xD7\x6E |0 \xD7\x6F |0 \xD7\x70 |0 \xD7\x71 |0 \xD7\x72 |0 \xD7\x73 |0 \xD7\x74 |0 \xD7\x75 |0 \xD7\x76 |0 \xD7\x77 |0 \xD7\x78 |0 \xD7\x79 |0 \xD7\x7A |0 \xD7\x7B |0 \xD7\x7C |0 \xD7\x7D |0 \xD7\x7E |0 \xD7\x7F |0 \xD7\x81 |0 \xD7\x82 |0 \xD7\x83 |0 \xD7\x84 |0 \xD7\x85 |0 \xD7\x86 |0 \xD7\x87 |0 \xD7\x88 |0 \xD7\x89 |0 \xD7\x8A |0 \xD7\x8B |0 \xD7\x8C |0 \xD7\x8D |0 \xD7\x8E |0 \xD7\x8F |0 \xD7\x90 |0 \xD7\x91 |0 \xD7\x92 |0 \xD7\x93 |0 \xD7\x94 |0 \xD7\x95 |0 \xD7\x96 |0 \xD7\x97 |0 \xD7\x98 |0 \xD7\x99 |0 \xD7\x9A |0 \xD7\x9B |0 \xD7\x9C |0 \xD7\x9D |0 \xD7\x9E |0 \xD7\x9F |0 \xD7\xA0 |0 \xD7\xA1 |0 \xD7\xA2 |0 \xD7\xA3 |0 \xD7\xA4 |0 \xD7\xA5 |0 \xD7\xA6 |0 \xD7\xA7 |0 \xD7\xA8 |0 \xD7\xA9 |0 \xD7\xAA |0 \xD7\xAB |0 \xD7\xAC |0 \xD7\xAD |0 \xD7\xAE |0 \xD7\xAF |0 \xD7\xB0 |0 \xD7\xB1 |0 \xD7\xB2 |0 \xD7\xB3 |0 \xD7\xB4 |0 \xD7\xB5 |0 \xD7\xB6 |0 \xD7\xB7 |0 \xD7\xB8 |0 \xD7\xB9 |0 \xD7\xBA |0 \xD7\xBB |0 \xD7\xBC |0 \xD7\xBD |0 \xD7\xBE |0 \xD7\xBF |0 \xD7\xC0 |0 \xD7\xC1 |0 \xD7\xC2 |0 \xD7\xC3 |0 \xD7\xC4 |0 \xD7\xC5 |0 \xD7\xC6 |0 \xD7\xC7 |0 \xD7\xC8 |0 \xD7\xC9 |0 \xD7\xCA |0 \xD7\xCB |0 \xD7\xCC |0 \xD7\xCD |0 \xD7\xCE |0 \xD7\xCF |0 \xD7\xD0 |0 \xD7\xD1 |0 \xD7\xD2 |0 \xD7\xD3 |0 \xD7\xD4 |0 \xD7\xD5 |0 \xD7\xD6 |0 \xD7\xD7 |0 \xD7\xD8 |0 \xD7\xD9 |0 \xD7\xDA |0 \xD7\xDB |0 \xD7\xDC |0 \xD7\xDD |0 \xD7\xDE |0 \xD7\xDF |0 \xD7\xE0 |0 \xD7\xE1 |0 \xD7\xE2 |0 \xD7\xE3 |0 \xD7\xE4 |0 \xD7\xE5 |0 \xD7\xE6 |0 \xD7\xE7 |0 \xD7\xE8 |0 \xD7\xE9 |0 \xD7\xEA |0 \xD7\xEB |0 \xD7\xEC |0 \xD7\xED |0 \xD7\xEE |0 \xD7\xEF |0 \xD7\xF0 |0 \xD7\xF1 |0 \xD7\xF2 |0 \xD7\xF3 |0 \xD7\xF4 |0 \xD7\xF5 |0 \xD7\xF6 |0 \xD7\xF7 |0 \xD7\xF8 |0 \xD7\xF9 |0 \xD7\xFA |0 \xD7\xFB |0 \xD7\xFC |0 \xD7\xFD |0 \xD8\x41 |0 \xD8\x42 |0 \xD8\x43 |0 \xD8\x44 |0 \xD8\x45 |0 \xD8\x46 |0 \xD8\x47 |0 \xD8\x48 |0 \xD8\x49 |0 \xD8\x4A |0 \xD8\x4B |0 \xD8\x4C |0 \xD8\x4D |0 \xD8\x4E |0 \xD8\x4F |0 \xD8\x50 |0 \xD8\x51 |0 \xD8\x52 |0 \xD8\x53 |0 \xD8\x54 |0 \xD8\x55 |0 \xD8\x56 |0 \xD8\x57 |0 \xD8\x58 |0 \xD8\x59 |0 \xD8\x5A |0 \xD8\x5B |0 \xD8\x5C |0 \xD8\x5D |0 \xD8\x5E |0 \xD8\x5F |0 \xD8\x60 |0 \xD8\x61 |0 \xD8\x62 |0 \xD8\x63 |0 \xD8\x64 |0 \xD8\x65 |0 \xD8\x66 |0 \xD8\x67 |0 \xD8\x68 |0 \xD8\x69 |0 \xD8\x6A |0 \xD8\x6B |0 \xD8\x6C |0 \xD8\x6D |0 \xD8\x6E |0 \xD8\x6F |0 \xD8\x70 |0 \xD8\x71 |0 \xD8\x72 |0 \xD8\x73 |0 \xD8\x74 |0 \xD8\x75 |0 \xD8\x76 |0 \xD8\x77 |0 \xD8\x78 |0 \xD8\x79 |0 \xD8\x7A |0 \xD8\x7B |0 \xD8\x7C |0 \xD8\x7D |0 \xD8\x7E |0 \xD8\x7F |0 \xD8\x81 |0 \xD8\x82 |0 \xD8\x83 |0 \xD8\x84 |0 \xD8\x85 |0 \xD8\x86 |0 \xD8\x87 |0 \xD8\x88 |0 \xD8\x89 |0 \xD8\x8A |0 \xD8\x8B |0 \xD8\x8C |0 \xD8\x8D |0 \xD8\x8E |0 \xD8\x8F |0 \xD8\x90 |0 \xD8\x91 |0 \xD8\x92 |0 \xD8\x93 |0 \xD8\x94 |0 \xD8\x95 |0 \xD8\x96 |0 \xD8\x97 |0 \xD8\x98 |0 \xD8\x99 |0 \xD8\x9A |0 \xD8\x9B |0 \xD8\x9C |0 \xD8\x9D |0 \xD8\x9E |0 \xD8\x9F |0 \xD8\xA0 |0 \xD8\xA1 |0 \xD8\xA2 |0 \xD8\xA3 |0 \xD8\xA4 |0 \xD8\xA5 |0 \xD8\xA6 |0 \xD8\xA7 |0 \xD8\xA8 |0 \xD8\xA9 |0 \xD8\xAA |0 \xD8\xAB |0 \xD8\xAC |0 \xD8\xAD |0 \xD8\xAE |0 \xD8\xAF |0 \xD8\xB0 |0 \xD8\xB1 |0 \xD8\xB2 |0 \xD8\xB3 |0 \xD8\xB4 |0 \xD8\xB5 |0 \xD8\xB6 |0 \xD8\xB7 |0 \xD8\xB8 |0 \xD8\xB9 |0 \xD8\xBA |0 \xD8\xBB |0 \xD8\xBC |0 \xD8\xBD |0 \xD8\xBE |0 \xD8\xBF |0 \xD8\xC0 |0 \xD8\xC1 |0 \xD8\xC2 |0 \xD8\xC3 |0 \xD8\xC4 |0 \xD8\xC5 |0 \xD8\xC6 |0 \xD8\xC7 |0 \xD8\xC8 |0 \xD8\xC9 |0 \xD8\xCA |0 \xD8\xCB |0 \xD8\xCC |0 \xD8\xCD |0 \xD8\xCE |0 \xD8\xCF |0 \xD8\xD0 |0 \xD8\xD1 |0 \xD8\xD2 |0 \xD8\xD3 |0 \xD8\xD4 |0 \xD8\xD5 |0 \xD8\xD6 |0 \xD8\xD7 |0 \xD8\xD8 |0 \xD8\xD9 |0 \xD8\xDA |0 \xD8\xDB |0 \xD8\xDC |0 \xD8\xDD |0 \xD8\xDE |0 \xD8\xDF |0 \xD8\xE0 |0 \xD8\xE1 |0 \xD8\xE2 |0 \xD8\xE3 |0 \xD8\xE4 |0 \xD8\xE5 |0 \xD8\xE6 |0 \xD8\xE7 |0 \xD8\xE8 |0 \xD8\xE9 |0 \xD8\xEA |0 \xD8\xEB |0 \xD8\xEC |0 \xD8\xED |0 \xD8\xEE |0 \xD8\xEF |0 \xD8\xF0 |0 \xD8\xF1 |0 \xD8\xF2 |0 \xD8\xF3 |0 \xD8\xF4 |0 \xD8\xF5 |0 \xD8\xF6 |0 \xD8\xF7 |0 \xD8\xF8 |0 \xD8\xF9 |0 \xD8\xFA |0 \xD8\xFB |0 \xD8\xFC |0 \xD8\xFD |0 \xD9\x41 |0 \xD9\x42 |0 \xD9\x43 |0 \xD9\x44 |0 \xD9\x45 |0 \xD9\x46 |0 \xD9\x47 |0 \xD9\x48 |0 \xD9\x49 |0 \xD9\x4A |0 \xD9\x4B |0 \xD9\x4C |0 \xD9\x4D |0 \xD9\x4E |0 \xD9\x4F |0 \xD9\x50 |0 \xD9\x51 |0 \xD9\x52 |0 \xD9\x53 |0 \xD9\x54 |0 \xD9\x55 |0 \xD9\x56 |0 \xD9\x57 |0 \xD9\x58 |0 \xD9\x59 |0 \xD9\x5A |0 \xD9\x5B |0 \xD9\x5C |0 \xD9\x5D |0 \xD9\x5E |0 \xD9\x5F |0 \xD9\x60 |0 \xD9\x61 |0 \xD9\x62 |0 \xD9\x63 |0 \xD9\x64 |0 \xD9\x65 |0 \xD9\x66 |0 \xD9\x67 |0 \xD9\x68 |0 \xD9\x69 |0 \xD9\x6A |0 \xD9\x6B |0 \xD9\x6C |0 \xD9\x6D |0 \xD9\x6E |0 \xD9\x6F |0 \xD9\x70 |0 \xD9\x71 |0 \xD9\x72 |0 \xD9\x73 |0 \xD9\x74 |0 \xD9\x75 |0 \xD9\x76 |0 \xD9\x77 |0 \xD9\x78 |0 \xD9\x79 |0 \xD9\x7A |0 \xD9\x7B |0 \xD9\x7C |0 \xD9\x7D |0 \xD9\x7E |0 \xD9\x7F |0 \xD9\x81 |0 \xD9\x82 |0 \xD9\x83 |0 \xD9\x84 |0 \xD9\x85 |0 \xD9\x86 |0 \xD9\x87 |0 \xD9\x88 |0 \xD9\x89 |0 \xD9\x8A |0 \xD9\x8B |0 \xD9\x8C |0 \xD9\x8D |0 \xD9\x8E |0 \xD9\x8F |0 \xD9\x90 |0 \xD9\x91 |0 \xD9\x92 |0 \xD9\x93 |0 \xD9\x94 |0 \xD9\x95 |0 \xD9\x96 |0 \xD9\x97 |0 \xD9\x98 |0 \xD9\x99 |0 \xD9\x9A |0 \xD9\x9B |0 \xD9\x9C |0 \xD9\x9D |0 \xD9\x9E |0 \xD9\x9F |0 \xD9\xA0 |0 \xD9\xA1 |0 \xD9\xA2 |0 \xD9\xA3 |0 \xD9\xA4 |0 \xD9\xA5 |0 \xD9\xA6 |0 \xD9\xA7 |0 \xD9\xA8 |0 \xD9\xA9 |0 \xD9\xAA |0 \xD9\xAB |0 \xD9\xAC |0 \xD9\xAD |0 \xD9\xAE |0 \xD9\xAF |0 \xD9\xB0 |0 \xD9\xB1 |0 \xD9\xB2 |0 \xD9\xB3 |0 \xD9\xB4 |0 \xD9\xB5 |0 \xD9\xB6 |0 \xD9\xB7 |0 \xD9\xB8 |0 \xD9\xB9 |0 \xD9\xBA |0 \xD9\xBB |0 \xD9\xBC |0 \xD9\xBD |0 \xD9\xBE |0 \xD9\xBF |0 \xD9\xC0 |0 \xD9\xC1 |0 \xD9\xC2 |0 \xD9\xC3 |0 \xD9\xC4 |0 \xD9\xC5 |0 \xD9\xC6 |0 \xD9\xC7 |0 \xD9\xC8 |0 \xD9\xC9 |0 \xD9\xCA |0 \xD9\xCB |0 \xD9\xCC |0 \xD9\xCD |0 \xD9\xCE |0 \xD9\xCF |0 \xD9\xD0 |0 \xD9\xD1 |0 \xD9\xD2 |0 \xD9\xD3 |0 \xD9\xD4 |0 \xD9\xD5 |0 \xD9\xD6 |0 \xD9\xD7 |0 \xD9\xD8 |0 \xD9\xD9 |0 \xD9\xDA |0 \xD9\xDB |0 \xD9\xDC |0 \xD9\xDD |0 \xD9\xDE |0 \xD9\xDF |0 \xD9\xE0 |0 \xD9\xE1 |0 \xD9\xE2 |0 \xD9\xE3 |0 \xD9\xE4 |0 \xD9\xE5 |0 \xD9\xE6 |0 \xD9\xE7 |0 \xD9\xE8 |0 \xD9\xE9 |0 \xD9\xEA |0 \xD9\xEB |0 \xD9\xEC |0 \xD9\xED |0 \xD9\xEE |0 \xD9\xEF |0 \xD9\xF0 |0 \xD9\xF1 |0 \xD9\xF2 |0 \xD9\xF3 |0 \xD9\xF4 |0 \xD9\xF5 |0 \xD9\xF6 |0 \xD9\xF7 |0 \xD9\xF8 |0 \xD9\xF9 |0 \xD9\xFA |0 \xD9\xFB |0 \xD9\xFC |0 \xD9\xFD |0 \xDA\x41 |0 \xDA\x42 |0 \xDA\x43 |0 \xDA\x44 |0 \xDA\x45 |0 \xDA\x46 |0 \xDA\x47 |0 \xDA\x48 |0 \xDA\x49 |0 \xDA\x4A |0 \xDA\x4B |0 \xDA\x4C |0 \xDA\x4D |0 \xDA\x4E |0 \xDA\x4F |0 \xDA\x50 |0 \xDA\x51 |0 \xDA\x52 |0 \xDA\x53 |0 \xDA\x54 |0 \xDA\x55 |0 \xDA\x56 |0 \xDA\x57 |0 \xDA\x58 |0 \xDA\x59 |0 \xDA\x5A |0 \xDA\x5B |0 \xDA\x5C |0 \xDA\x5D |0 \xDA\x5E |0 \xDA\x5F |0 \xDA\x60 |0 \xDA\x61 |0 \xDA\x62 |0 \xDA\x63 |0 \xDA\x64 |0 \xDA\x65 |0 \xDA\x66 |0 \xDA\x67 |0 \xDA\x68 |0 \xDA\x69 |0 \xDA\x6A |0 \xDA\x6B |0 \xDA\x6C |0 \xDA\x6D |0 \xDA\x6E |0 \xDA\x6F |0 \xDA\x70 |0 \xDA\x71 |0 \xDA\x72 |0 \xDA\x73 |0 \xDA\x74 |0 \xDA\x75 |0 \xDA\x76 |0 \xDA\x77 |0 \xDA\x78 |0 \xDA\x79 |0 \xDA\x7A |0 \xDA\x7B |0 \xDA\x7C |0 \xDA\x7D |0 \xDA\x7E |0 \xDA\x7F |0 \xDA\x81 |0 \xDA\x82 |0 \xDA\x83 |0 \xDA\x84 |0 \xDA\x85 |0 \xDA\x86 |0 \xDA\x87 |0 \xDA\x88 |0 \xDA\x89 |0 \xDA\x8A |0 \xDA\x8B |0 \xDA\x8C |0 \xDA\x8D |0 \xDA\x8E |0 \xDA\x8F |0 \xDA\x90 |0 \xDA\x91 |0 \xDA\x92 |0 \xDA\x93 |0 \xDA\x94 |0 \xDA\x95 |0 \xDA\x96 |0 \xDA\x97 |0 \xDA\x98 |0 \xDA\x99 |0 \xDA\x9A |0 \xDA\x9B |0 \xDA\x9C |0 \xDA\x9D |0 \xDA\x9E |0 \xDA\x9F |0 \xDA\xA0 |0 \xDA\xA1 |0 \xDA\xA2 |0 \xDA\xA3 |0 \xDA\xA4 |0 \xDA\xA5 |0 \xDA\xA6 |0 \xDA\xA7 |0 \xDA\xA8 |0 \xDA\xA9 |0 \xDA\xAA |0 \xDA\xAB |0 \xDA\xAC |0 \xDA\xAD |0 \xDA\xAE |0 \xDA\xAF |0 \xDA\xB0 |0 \xDA\xB1 |0 \xDA\xB2 |0 \xDA\xB3 |0 \xDA\xB4 |0 \xDA\xB5 |0 \xDA\xB6 |0 \xDA\xB7 |0 \xDA\xB8 |0 \xDA\xB9 |0 \xDA\xBA |0 \xDA\xBB |0 \xDA\xBC |0 \xDA\xBD |0 \xDA\xBE |0 \xDA\xBF |0 \xDA\xC0 |0 \xDA\xC1 |0 \xDA\xC2 |0 \xDA\xC3 |0 \xDA\xC4 |0 \xDA\xC5 |0 \xDA\xC6 |0 \xDA\xC7 |0 \xDA\xC8 |0 \xDA\xC9 |0 \xDA\xCA |0 \xDA\xCB |0 \xDA\xCC |0 \xDA\xCD |0 \xDA\xCE |0 \xDA\xCF |0 \xDA\xD0 |0 \xDA\xD1 |0 \xDA\xD2 |0 \xDA\xD3 |0 \xDA\xD4 |0 \xDA\xD5 |0 \xDA\xD6 |0 \xDA\xD7 |0 \xDA\xD8 |0 \xDA\xD9 |0 \xDA\xDA |0 \xDA\xDB |0 \xDA\xDC |0 \xDA\xDD |0 \xDA\xDE |0 \xDA\xDF |0 \xDA\xE0 |0 \xDA\xE1 |0 \xDA\xE2 |0 \xDA\xE3 |0 \xDA\xE4 |0 \xDA\xE5 |0 \xDA\xE6 |0 \xDA\xE7 |0 \xDA\xE8 |0 \xDA\xE9 |0 \xDA\xEA |0 \xDA\xEB |0 \xDA\xEC |0 \xDA\xED |0 \xDA\xEE |0 \xDA\xEF |0 \xDA\xF0 |0 \xDA\xF1 |0 \xDA\xF2 |0 \xDA\xF3 |0 \xDA\xF4 |0 \xDA\xF5 |0 \xDA\xF6 |0 \xDA\xF7 |0 \xDA\xF8 |0 \xDA\xF9 |0 \xDA\xFA |0 \xDA\xFB |0 \xDA\xFC |0 \xDA\xFD |0 \xDB\x41 |0 \xDB\x42 |0 \xDB\x43 |0 \xDB\x44 |0 \xDB\x45 |0 \xDB\x46 |0 \xDB\x47 |0 \xDB\x48 |0 \xDB\x49 |0 \xDB\x4A |0 \xDB\x4B |0 \xDB\x4C |0 \xDB\x4D |0 \xDB\x4E |0 \xDB\x4F |0 \xDB\x50 |0 \xDB\x51 |0 \xDB\x52 |0 \xDB\x53 |0 \xDB\x54 |0 \xDB\x55 |0 \xDB\x56 |0 \xDB\x57 |0 \xDB\x58 |0 \xDB\x59 |0 \xDB\x5A |0 \xDB\x5B |0 \xDB\x5C |0 \xDB\x5D |0 \xDB\x5E |0 \xDB\x5F |0 \xDB\x60 |0 \xDB\x61 |0 \xDB\x62 |0 \xDB\x63 |0 \xDB\x64 |0 \xDB\x65 |0 \xDB\x66 |0 \xDB\x67 |0 \xDB\x68 |0 \xDB\x69 |0 \xDB\x6A |0 \xDB\x6B |0 \xDB\x6C |0 \xDB\x6D |0 \xDB\x6E |0 \xDB\x6F |0 \xDB\x70 |0 \xDB\x71 |0 \xDB\x72 |0 \xDB\x73 |0 \xDB\x74 |0 \xDB\x75 |0 \xDB\x76 |0 \xDB\x77 |0 \xDB\x78 |0 \xDB\x79 |0 \xDB\x7A |0 \xDB\x7B |0 \xDB\x7C |0 \xDB\x7D |0 \xDB\x7E |0 \xDB\x7F |0 \xDB\x81 |0 \xDB\x82 |0 \xDB\x83 |0 \xDB\x84 |0 \xDB\x85 |0 \xDB\x86 |0 \xDB\x87 |0 \xDB\x88 |0 \xDB\x89 |0 \xDB\x8A |0 \xDB\x8B |0 \xDB\x8C |0 \xDB\x8D |0 \xDB\x8E |0 \xDB\x8F |0 \xDB\x90 |0 \xDB\x91 |0 \xDB\x92 |0 \xDB\x93 |0 \xDB\x94 |0 \xDB\x95 |0 \xDB\x96 |0 \xDB\x97 |0 \xDB\x98 |0 \xDB\x99 |0 \xDB\x9A |0 \xDB\x9B |0 \xDB\x9C |0 \xDB\x9D |0 \xDB\x9E |0 \xDB\x9F |0 \xDB\xA0 |0 \xDB\xA1 |0 \xDB\xA2 |0 \xDB\xA3 |0 \xDB\xA4 |0 \xDB\xA5 |0 \xDB\xA6 |0 \xDB\xA7 |0 \xDB\xA8 |0 \xDB\xA9 |0 \xDB\xAA |0 \xDB\xAB |0 \xDB\xAC |0 \xDB\xAD |0 \xDB\xAE |0 \xDB\xAF |0 \xDB\xB0 |0 \xDB\xB1 |0 \xDB\xB2 |0 \xDB\xB3 |0 \xDB\xB4 |0 \xDB\xB5 |0 \xDB\xB6 |0 \xDB\xB7 |0 \xDB\xB8 |0 \xDB\xB9 |0 \xDB\xBA |0 \xDB\xBB |0 \xDB\xBC |0 \xDB\xBD |0 \xDB\xBE |0 \xDB\xBF |0 \xDB\xC0 |0 \xDB\xC1 |0 \xDB\xC2 |0 \xDB\xC3 |0 \xDB\xC4 |0 \xDB\xC5 |0 \xDB\xC6 |0 \xDB\xC7 |0 \xDB\xC8 |0 \xDB\xC9 |0 \xDB\xCA |0 \xDB\xCB |0 \xDB\xCC |0 \xDB\xCD |0 \xDB\xCE |0 \xDB\xCF |0 \xDB\xD0 |0 \xDB\xD1 |0 \xDB\xD2 |0 \xDB\xD3 |0 \xDB\xD4 |0 \xDB\xD5 |0 \xDB\xD6 |0 \xDB\xD7 |0 \xDB\xD8 |0 \xDB\xD9 |0 \xDB\xDA |0 \xDB\xDB |0 \xDB\xDC |0 \xDB\xDD |0 \xDB\xDE |0 \xDB\xDF |0 \xDB\xE0 |0 \xDB\xE1 |0 \xDB\xE2 |0 \xDB\xE3 |0 \xDB\xE4 |0 \xDB\xE5 |0 \xDB\xE6 |0 \xDB\xE7 |0 \xDB\xE8 |0 \xDB\xE9 |0 \xDB\xEA |0 \xDB\xEB |0 \xDB\xEC |0 \xDB\xED |0 \xDB\xEE |0 \xDB\xEF |0 \xDB\xF0 |0 \xDB\xF1 |0 \xDB\xF2 |0 \xDB\xF3 |0 \xDB\xF4 |0 \xDB\xF5 |0 \xDB\xF6 |0 \xDB\xF7 |0 \xDB\xF8 |0 \xDB\xF9 |0 \xDB\xFA |0 \xDB\xFB |0 \xDB\xFC |0 \xDB\xFD |0 \xDC\x41 |0 \xDC\x42 |0 \xDC\x43 |0 \xDC\x44 |0 \xDC\x45 |0 \xDC\x46 |0 \xDC\x47 |0 \xDC\x48 |0 \xDC\x49 |0 \xDC\x4A |0 \xDC\x4B |0 \xDC\x4C |0 \xDC\x4D |0 \xDC\x4E |0 \xDC\x4F |0 \xDC\x50 |0 \xDC\x51 |0 \xDC\x52 |0 \xDC\x53 |0 \xDC\x54 |0 \xDC\x55 |0 \xDC\x56 |0 \xDC\x57 |0 \xDC\x58 |0 \xDC\x59 |0 \xDC\x5A |0 \xDC\x5B |0 \xDC\x5C |0 \xDC\x5D |0 \xDC\x5E |0 \xDC\x5F |0 \xDC\x60 |0 \xDC\x61 |0 \xDC\x62 |0 \xDC\x63 |0 \xDC\x64 |0 \xDC\x65 |0 \xDC\x66 |0 \xDC\x67 |0 \xDC\x68 |0 \xDC\x69 |0 \xDC\x6A |0 \xDC\x6B |0 \xDC\x6C |0 \xDC\x6D |0 \xDC\x6E |0 \xDC\x6F |0 \xDC\x70 |0 \xDC\x71 |0 \xDC\x72 |0 \xDC\x73 |0 \xDC\x74 |0 \xDC\x75 |0 \xDC\x76 |0 \xDC\x77 |0 \xDC\x78 |0 \xDC\x79 |0 \xDC\x7A |0 \xDC\x7B |0 \xDC\x7C |0 \xDC\x7D |0 \xDC\x7E |0 \xDC\x7F |0 \xDC\x81 |0 \xDC\x82 |0 \xDC\x83 |0 \xDC\x84 |0 \xDC\x85 |0 \xDC\x86 |0 \xDC\x87 |0 \xDC\x88 |0 \xDC\x89 |0 \xDC\x8A |0 \xDC\x8B |0 \xDC\x8C |0 \xDC\x8D |0 \xDC\x8E |0 \xDC\x8F |0 \xDC\x90 |0 \xDC\x91 |0 \xDC\x92 |0 \xDC\x93 |0 \xDC\x94 |0 \xDC\x95 |0 \xDC\x96 |0 \xDC\x97 |0 \xDC\x98 |0 \xDC\x99 |0 \xDC\x9A |0 \xDC\x9B |0 \xDC\x9C |0 \xDC\x9D |0 \xDC\x9E |0 \xDC\x9F |0 \xDC\xA0 |0 \xDC\xA1 |0 \xDC\xA2 |0 \xDC\xA3 |0 \xDC\xA4 |0 \xDC\xA5 |0 \xDC\xA6 |0 \xDC\xA7 |0 \xDC\xA8 |0 \xDC\xA9 |0 \xDC\xAA |0 \xDC\xAB |0 \xDC\xAC |0 \xDC\xAD |0 \xDC\xAE |0 \xDC\xAF |0 \xDC\xB0 |0 \xDC\xB1 |0 \xDC\xB2 |0 \xDC\xB3 |0 \xDC\xB4 |0 \xDC\xB5 |0 \xDC\xB6 |0 \xDC\xB7 |0 \xDC\xB8 |0 \xDC\xB9 |0 \xDC\xBA |0 \xDC\xBB |0 \xDC\xBC |0 \xDC\xBD |0 \xDC\xBE |0 \xDC\xBF |0 \xDC\xC0 |0 \xDC\xC1 |0 \xDC\xC2 |0 \xDC\xC3 |0 \xDC\xC4 |0 \xDC\xC5 |0 \xDC\xC6 |0 \xDC\xC7 |0 \xDC\xC8 |0 \xDC\xC9 |0 \xDC\xCA |0 \xDC\xCB |0 \xDC\xCC |0 \xDC\xCD |0 \xDC\xCE |0 \xDC\xCF |0 \xDC\xD0 |0 \xDC\xD1 |0 \xDC\xD2 |0 \xDC\xD3 |0 \xDC\xD4 |0 \xDC\xD5 |0 \xDC\xD6 |0 \xDC\xD7 |0 \xDC\xD8 |0 \xDC\xD9 |0 \xDC\xDA |0 \xDC\xDB |0 \xDC\xDC |0 \xDC\xDD |0 \xDC\xDE |0 \xDC\xDF |0 \xDC\xE0 |0 \xDC\xE1 |0 \xDC\xE2 |0 \xDC\xE3 |0 \xDC\xE4 |0 \xDC\xE5 |0 \xDC\xE6 |0 \xDC\xE7 |0 \xDC\xE8 |0 \xDC\xE9 |0 \xDC\xEA |0 \xDC\xEB |0 \xDC\xEC |0 \xDC\xED |0 \xDC\xEE |0 \xDC\xEF |0 \xDC\xF0 |0 \xDC\xF1 |0 \xDC\xF2 |0 \xDC\xF3 |0 \xDC\xF4 |0 \xDC\xF5 |0 \xDC\xF6 |0 \xDC\xF7 |0 \xDC\xF8 |0 \xDC\xF9 |0 \xDC\xFA |0 \xDC\xFB |0 \xDC\xFC |0 \xDC\xFD |0 \xDD\x41 |0 \xDD\x42 |0 \xDD\x43 |0 \xDD\x44 |0 \xDD\x45 |0 \xDD\x46 |0 \xDD\x47 |0 \xDD\x48 |0 \xDD\x49 |0 \xDD\x4A |0 \xDD\x4B |0 \xDD\x4C |0 \xDD\x4D |0 \xDD\x4E |0 \xDD\x4F |0 \xDD\x50 |0 \xDD\x51 |0 \xDD\x52 |0 \xDD\x53 |0 \xDD\x54 |0 \xDD\x55 |0 \xDD\x56 |0 \xDD\x57 |0 \xDD\x58 |0 \xDD\x59 |0 \xDD\x5A |0 \xDD\x5B |0 \xDD\x5C |0 \xDD\x5D |0 \xDD\x5E |0 \xDD\x5F |0 \xDD\x60 |0 \xDD\x61 |0 \xDD\x62 |0 \xDD\x63 |0 \xDD\x64 |0 \xDD\x65 |0 \xDD\x66 |0 \xDD\x67 |0 \xDD\x68 |0 \xDD\x69 |0 \xDD\x6A |0 \xDD\x6B |0 \xDD\x6C |0 \xDD\x6D |0 \xDD\x6E |0 \xDD\x6F |0 \xDD\x70 |0 \xDD\x71 |0 \xDD\x72 |0 \xDD\x73 |0 \xDD\x74 |0 \xDD\x75 |0 \xDD\x76 |0 \xDD\x77 |0 \xDD\x78 |0 \xDD\x79 |0 \xDD\x7A |0 \xDD\x7B |0 \xDD\x7C |0 \xDD\x7D |0 \xDD\x7E |0 \xDD\x7F |0 \xDD\x81 |0 \xDD\x82 |0 \xDD\x83 |0 \xDD\x84 |0 \xDD\x85 |0 \xDD\x86 |0 \xDD\x87 |0 \xDD\x88 |0 \xDD\x89 |0 \xDD\x8A |0 \xDD\x8B |0 \xDD\x8C |0 \xDD\x8D |0 \xDD\x8E |0 \xDD\x8F |0 \xDD\x90 |0 \xDD\x91 |0 \xDD\x92 |0 \xDD\x93 |0 \xDD\x94 |0 \xDD\x95 |0 \xDD\x96 |0 \xDD\x97 |0 \xDD\x98 |0 \xDD\x99 |0 \xDD\x9A |0 \xDD\x9B |0 \xDD\x9C |0 \xDD\x9D |0 \xDD\x9E |0 \xDD\x9F |0 \xDD\xA0 |0 \xDD\xA1 |0 \xDD\xA2 |0 \xDD\xA3 |0 \xDD\xA4 |0 \xDD\xA5 |0 \xDD\xA6 |0 \xDD\xA7 |0 \xDD\xA8 |0 \xDD\xA9 |0 \xDD\xAA |0 \xDD\xAB |0 \xDD\xAC |0 \xDD\xAD |0 \xDD\xAE |0 \xDD\xAF |0 \xDD\xB0 |0 \xDD\xB1 |0 \xDD\xB2 |0 \xDD\xB3 |0 \xDD\xB4 |0 \xDD\xB5 |0 \xDD\xB6 |0 \xDD\xB7 |0 \xDD\xB8 |0 \xDD\xB9 |0 \xDD\xBA |0 \xDD\xBB |0 \xDD\xBC |0 \xDD\xBD |0 \xDD\xBE |0 \xDD\xBF |0 \xDD\xC0 |0 \xDD\xC1 |0 \xDD\xC2 |0 \xDD\xC3 |0 \xDD\xC4 |0 \xDD\xC5 |0 \xDD\xC6 |0 \xDD\xC7 |0 \xDD\xC8 |0 \xDD\xC9 |0 \xDD\xCA |0 \xDD\xCB |0 \xDD\xCC |0 \xDD\xCD |0 \xDD\xCE |0 \xDD\xCF |0 \xDD\xD0 |0 \xDD\xD1 |0 \xDD\xD2 |0 \xDD\xD3 |0 \xDD\xD4 |0 \xDD\xD5 |0 \xDD\xD6 |0 \xDD\xD7 |0 \xDD\xD8 |0 \xDD\xD9 |0 \xDD\xDA |0 \xDD\xDB |0 \xDD\xDC |0 \xDD\xDD |0 \xDD\xDE |0 \xDD\xDF |0 \xDD\xE0 |0 \xDD\xE1 |0 \xDD\xE2 |0 \xDD\xE3 |0 \xDD\xE4 |0 \xDD\xE5 |0 \xDD\xE6 |0 \xDD\xE7 |0 \xDD\xE8 |0 \xDD\xE9 |0 \xDD\xEA |0 \xDD\xEB |0 \xDD\xEC |0 \xDD\xED |0 \xDD\xEE |0 \xDD\xEF |0 \xDD\xF0 |0 \xDD\xF1 |0 \xDD\xF2 |0 \xDD\xF3 |0 \xDD\xF4 |0 \xDD\xF5 |0 \xDD\xF6 |0 \xDD\xF7 |0 \xDD\xF8 |0 \xDD\xF9 |0 \xDD\xFA |0 \xDD\xFB |0 \xDD\xFC |0 \xDD\xFD |0 \xDE\x41 |0 \xDE\x42 |0 \xDE\x43 |0 \xDE\x44 |0 \xDE\x45 |0 \xDE\x46 |0 \xDE\x47 |0 \xDE\x48 |0 \xDE\x49 |0 \xDE\x4A |0 \xDE\x4B |0 \xDE\x4C |0 \xDE\x4D |0 \xDE\x4E |0 \xDE\x4F |0 \xDE\x50 |0 \xDE\x51 |0 \xDE\x52 |0 \xDE\x53 |0 \xDE\x54 |0 \xDE\x55 |0 \xDE\x56 |0 \xDE\x57 |0 \xDE\x58 |0 \xDE\x59 |0 \xDE\x5A |0 \xDE\x5B |0 \xDE\x5C |0 \xDE\x5D |0 \xDE\x5E |0 \xDE\x5F |0 \xDE\x60 |0 \xDE\x61 |0 \xDE\x62 |0 \xDE\x63 |0 \xDE\x64 |0 \xDE\x65 |0 \xDE\x66 |0 \xDE\x67 |0 \xDE\x68 |0 \xDE\x69 |0 \xDE\x6A |0 \xDE\x6B |0 \xDE\x6C |0 \xDE\x6D |0 \xDE\x6E |0 \xDE\x6F |0 \xDE\x70 |0 \xDE\x71 |0 \xDE\x72 |0 \xDE\x73 |0 \xDE\x74 |0 \xDE\x75 |0 \xDE\x76 |0 \xDE\x77 |0 \xDE\x78 |0 \xDE\x79 |0 \xDE\x7A |0 \xDE\x7B |0 \xDE\x7C |0 \xDE\x7D |0 \xDE\x7E |0 \xDE\x7F |0 \xDE\x81 |0 \xDE\x82 |0 \xDE\x83 |0 \xDE\x84 |0 \xDE\x85 |0 \xDE\x86 |0 \xDE\x87 |0 \xDE\x88 |0 \xDE\x89 |0 \xDE\x8A |0 \xDE\x8B |0 \xDE\x8C |0 \xDE\x8D |0 \xDE\x8E |0 \xDE\x8F |0 \xDE\x90 |0 \xDE\x91 |0 \xDE\x92 |0 \xDE\x93 |0 \xDE\x94 |0 \xDE\x95 |0 \xDE\x96 |0 \xDE\x97 |0 \xDE\x98 |0 \xDE\x99 |0 \xDE\x9A |0 \xDE\x9B |0 \xDE\x9C |0 \xDE\x9D |0 \xDE\x9E |0 \xDE\x9F |0 \xDE\xA0 |0 \xDE\xA1 |0 \xDE\xA2 |0 \xDE\xA3 |0 \xDE\xA4 |0 \xDE\xA5 |0 \xDE\xA6 |0 \xDE\xA7 |0 \xDE\xA8 |0 \xDE\xA9 |0 \xDE\xAA |0 \xDE\xAB |0 \xDE\xAC |0 \xDE\xAD |0 \xDE\xAE |0 \xDE\xAF |0 \xDE\xB0 |0 \xDE\xB1 |0 \xDE\xB2 |0 \xDE\xB3 |0 \xDE\xB4 |0 \xDE\xB5 |0 \xDE\xB6 |0 \xDE\xB7 |0 \xDE\xB8 |0 \xDE\xB9 |0 \xDE\xBA |0 \xDE\xBB |0 \xDE\xBC |0 \xDE\xBD |0 \xDE\xBE |0 \xDE\xBF |0 \xDE\xC0 |0 \xDE\xC1 |0 \xDE\xC2 |0 \xDE\xC3 |0 \xDE\xC4 |0 \xDE\xC5 |0 \xDE\xC6 |0 \xDE\xC7 |0 \xDE\xC8 |0 \xDE\xC9 |0 \xDE\xCA |0 \xDE\xCB |0 \xDE\xCC |0 \xDE\xCD |0 \xDE\xCE |0 \xDE\xCF |0 \xDE\xD0 |0 \xDE\xD1 |0 \xDE\xD2 |0 \xDE\xD3 |0 \xDE\xD4 |0 \xDE\xD5 |0 \xDE\xD6 |0 \xDE\xD7 |0 \xDE\xD8 |0 \xDE\xD9 |0 \xDE\xDA |0 \xDE\xDB |0 \xDE\xDC |0 \xDE\xDD |0 \xDE\xDE |0 \xDE\xDF |0 \xDE\xE0 |0 \xDE\xE1 |0 \xDE\xE2 |0 \xDE\xE3 |0 \xDE\xE4 |0 \xDE\xE5 |0 \xDE\xE6 |0 \xDE\xE7 |0 \xDE\xE8 |0 \xDE\xE9 |0 \xDE\xEA |0 \xDE\xEB |0 \xDE\xEC |0 \xDE\xED |0 \xDE\xEE |0 \xDE\xEF |0 \xDE\xF0 |0 \xDE\xF1 |0 \xDE\xF2 |0 \xDE\xF3 |0 \xDE\xF4 |0 \xDE\xF5 |0 \xDE\xF6 |0 \xDE\xF7 |0 \xDE\xF8 |0 \xDE\xF9 |0 \xDE\xFA |0 \xDE\xFB |0 \xDE\xFC |0 \xDE\xFD |0 \xDF\x41 |0 \xDF\x42 |0 \xDF\x43 |0 \xDF\x44 |0 \xDF\x45 |0 \xDF\x46 |0 \xDF\x47 |0 \xDF\x48 |0 \xDF\x49 |0 \xDF\x4A |0 \xDF\x4B |0 \xDF\x4C |0 \xDF\x4D |0 \xDF\x4E |0 \xDF\x4F |0 \xDF\x50 |0 \xDF\x51 |0 \xDF\x52 |0 \xDF\x53 |0 \xDF\x54 |0 \xDF\x55 |0 \xDF\x56 |0 \xDF\x57 |0 \xDF\x58 |0 \xDF\x59 |0 \xDF\x5A |0 \xDF\x5B |0 \xDF\x5C |0 \xDF\x5D |0 \xDF\x5E |0 \xDF\x5F |0 \xDF\x60 |0 \xDF\x61 |0 \xDF\x62 |0 \xDF\x63 |0 \xDF\x64 |0 \xDF\x65 |0 \xDF\x66 |0 \xDF\x67 |0 \xDF\x68 |0 \xDF\x69 |0 \xDF\x6A |0 \xDF\x6B |0 \xDF\x6C |0 \xDF\x6D |0 \xDF\x6E |0 \xDF\x6F |0 \xDF\x70 |0 \xDF\x71 |0 \xDF\x72 |0 \xDF\x73 |0 \xDF\x74 |0 \xDF\x75 |0 \xDF\x76 |0 \xDF\x77 |0 \xDF\x78 |0 \xDF\x79 |0 \xDF\x7A |0 \xDF\x7B |0 \xDF\x7C |0 \xDF\x7D |0 \xDF\x7E |0 \xDF\x7F |0 \xDF\x81 |0 \xDF\x82 |0 \xDF\x83 |0 \xDF\x84 |0 \xDF\x85 |0 \xDF\x86 |0 \xDF\x87 |0 \xDF\x88 |0 \xDF\x89 |0 \xDF\x8A |0 \xDF\x8B |0 \xDF\x8C |0 \xDF\x8D |0 \xDF\x8E |0 \xDF\x8F |0 \xDF\x90 |0 \xDF\x91 |0 \xDF\x92 |0 \xDF\x93 |0 \xDF\x94 |0 \xDF\x95 |0 \xDF\x96 |0 \xDF\x97 |0 \xDF\x98 |0 \xDF\x99 |0 \xDF\x9A |0 \xDF\x9B |0 \xDF\x9C |0 \xDF\x9D |0 \xDF\x9E |0 \xDF\x9F |0 \xDF\xA0 |0 \xDF\xA1 |0 \xDF\xA2 |0 \xDF\xA3 |0 \xDF\xA4 |0 \xDF\xA5 |0 \xDF\xA6 |0 \xDF\xA7 |0 \xDF\xA8 |0 \xDF\xA9 |0 \xDF\xAA |0 \xDF\xAB |0 \xDF\xAC |0 \xDF\xAD |0 \xDF\xAE |0 \xDF\xAF |0 \xDF\xB0 |0 \xDF\xB1 |0 \xDF\xB2 |0 \xDF\xB3 |0 \xDF\xB4 |0 \xDF\xB5 |0 \xDF\xB6 |0 \xDF\xB7 |0 \xDF\xB8 |0 \xDF\xB9 |0 \xDF\xBA |0 \xDF\xBB |0 \xDF\xBC |0 \xDF\xBD |0 \xDF\xBE |0 \xDF\xBF |0 \xDF\xC0 |0 \xDF\xC1 |0 \xDF\xC2 |0 \xDF\xC3 |0 \xDF\xC4 |0 \xDF\xC5 |0 \xDF\xC6 |0 \xDF\xC7 |0 \xDF\xC8 |0 \xDF\xC9 |0 \xDF\xCA |0 \xDF\xCB |0 \xDF\xCC |0 \xDF\xCD |0 \xDF\xCE |0 \xDF\xCF |0 \xDF\xD0 |0 \xDF\xD1 |0 \xDF\xD2 |0 \xDF\xD3 |0 \xDF\xD4 |0 \xDF\xD5 |0 \xDF\xD6 |0 \xDF\xD7 |0 \xDF\xD8 |0 \xDF\xD9 |0 \xDF\xDA |0 \xDF\xDB |0 \xDF\xDC |0 \xDF\xDD |0 \xDF\xDE |0 \xDF\xDF |0 \xDF\xE0 |0 \xDF\xE1 |0 \xDF\xE2 |0 \xDF\xE3 |0 \xDF\xE4 |0 \xDF\xE5 |0 \xDF\xE6 |0 \xDF\xE7 |0 \xDF\xE8 |0 \xDF\xE9 |0 \xDF\xEA |0 \xDF\xEB |0 \xDF\xEC |0 \xDF\xED |0 \xDF\xEE |0 \xDF\xEF |0 \xDF\xF0 |0 \xDF\xF1 |0 \xDF\xF2 |0 \xDF\xF3 |0 \xDF\xF4 |0 \xDF\xF5 |0 \xDF\xF6 |0 \xDF\xF7 |0 \xDF\xF8 |0 \xDF\xF9 |0 \xDF\xFA |0 \xDF\xFB |0 \xDF\xFC |0 \xDF\xFD |0 \xE0\x41 |0 \xE0\x42 |0 \xE0\x43 |0 \xE0\x44 |0 \xE0\x45 |0 \xE0\x46 |0 \xE0\x47 |0 \xE0\x48 |0 \xE0\x49 |0 \xE0\x4A |0 \xE0\x4B |0 \xE0\x4C |0 \xE0\x4D |0 \xE0\x4E |0 \xE0\x4F |0 \xE0\x50 |0 \xE0\x51 |0 \xE0\x52 |0 \xE0\x53 |0 \xE0\x54 |0 \xE0\x55 |0 \xE0\x56 |0 \xE0\x57 |0 \xE0\x58 |0 \xE0\x59 |0 \xE0\x5A |0 \xE0\x5B |0 \xE0\x5C |0 \xE0\x5D |0 \xE0\x5E |0 \xE0\x5F |0 \xE0\x60 |0 \xE0\x61 |0 \xE0\x62 |0 \xE0\x63 |0 \xE0\x64 |0 \xE0\x65 |0 \xE0\x66 |0 \xE0\x67 |0 \xE0\x68 |0 \xE0\x69 |0 \xE0\x6A |0 \xE0\x6B |0 \xE0\x6C |0 \xE0\x6D |0 \xE0\x6E |0 \xE0\x6F |0 \xE0\x70 |0 \xE0\x71 |0 \xE0\x72 |0 \xE0\x73 |0 \xE0\x74 |0 \xE0\x75 |0 \xE0\x76 |0 \xE0\x77 |0 \xE0\x78 |0 \xE0\x79 |0 \xE0\x7A |0 \xE0\x7B |0 \xE0\x7C |0 \xE0\x7D |0 \xE0\x7E |0 \xE0\x7F |0 \xE0\x81 |0 \xE0\x82 |0 \xE0\x83 |0 \xE0\x84 |0 \xE0\x85 |0 \xE0\x86 |0 \xE0\x87 |0 \xE0\x88 |0 \xE0\x89 |0 \xE0\x8A |0 \xE0\x8B |0 \xE0\x8C |0 \xE0\x8D |0 \xE0\x8E |0 \xE0\x8F |0 \xE0\x90 |0 \xE0\x91 |0 \xE0\x92 |0 \xE0\x93 |0 \xE0\x94 |0 \xE0\x95 |0 \xE0\x96 |0 \xE0\x97 |0 \xE0\x98 |0 \xE0\x99 |0 \xE0\x9A |0 \xE0\x9B |0 \xE0\x9C |0 \xE0\x9D |0 \xE0\x9E |0 \xE0\x9F |0 \xE0\xA0 |0 \xE0\xA1 |0 \xE0\xA2 |0 \xE0\xA3 |0 \xE0\xA4 |0 \xE0\xA5 |0 \xE0\xA6 |0 \xE0\xA7 |0 \xE0\xA8 |0 \xE0\xA9 |0 \xE0\xAA |0 \xE0\xAB |0 \xE0\xAC |0 \xE0\xAD |0 \xE0\xAE |0 \xE0\xAF |0 \xE0\xB0 |0 \xE0\xB1 |0 \xE0\xB2 |0 \xE0\xB3 |0 \xE0\xB4 |0 \xE0\xB5 |0 \xE0\xB6 |0 \xE0\xB7 |0 \xE0\xB8 |0 \xE0\xB9 |0 \xE0\xBA |0 \xE0\xBB |0 \xE0\xBC |0 \xE0\xBD |0 \xE0\xBE |0 \xE0\xBF |0 \xE0\xC0 |0 \xE0\xC1 |0 \xE0\xC2 |0 \xE0\xC3 |0 \xE0\xC4 |0 \xE0\xC5 |0 \xE0\xC6 |0 \xE0\xC7 |0 \xE0\xC8 |0 \xE0\xC9 |0 \xE0\xCA |0 \xE0\xCB |0 \xE0\xCC |0 \xE0\xCD |0 \xE0\xCE |0 \xE0\xCF |0 \xE0\xD0 |0 \xE0\xD1 |0 \xE0\xD2 |0 \xE0\xD3 |0 \xE0\xD4 |0 \xE0\xD5 |0 \xE0\xD6 |0 \xE0\xD7 |0 \xE0\xD8 |0 \xE0\xD9 |0 \xE0\xDA |0 \xE0\xDB |0 \xE0\xDC |0 \xE0\xDD |0 \xE0\xDE |0 \xE0\xDF |0 \xE0\xE0 |0 \xE0\xE1 |0 \xE0\xE2 |0 \xE0\xE3 |0 \xE0\xE4 |0 \xE0\xE5 |0 \xE0\xE6 |0 \xE0\xE7 |0 \xE0\xE8 |0 \xE0\xE9 |0 \xE0\xEA |0 \xE0\xEB |0 \xE0\xEC |0 \xE0\xED |0 \xE0\xEE |0 \xE0\xEF |0 \xE0\xF0 |0 \xE0\xF1 |0 \xE0\xF2 |0 \xE0\xF3 |0 \xE0\xF4 |0 \xE0\xF5 |0 \xE0\xF6 |0 \xE0\xF7 |0 \xE0\xF8 |0 \xE0\xF9 |0 \xE0\xFA |0 \xE0\xFB |0 \xE0\xFC |0 \xE0\xFD |0 \xE1\x41 |0 \xE1\x42 |0 \xE1\x43 |0 \xE1\x44 |0 \xE1\x45 |0 \xE1\x46 |0 \xE1\x47 |0 \xE1\x48 |0 \xE1\x49 |0 \xE1\x4A |0 \xE1\x4B |0 \xE1\x4C |0 \xE1\x4D |0 \xE1\x4E |0 \xE1\x4F |0 \xE1\x50 |0 \xE1\x51 |0 \xE1\x52 |0 \xE1\x53 |0 \xE1\x54 |0 \xE1\x55 |0 \xE1\x56 |0 \xE1\x57 |0 \xE1\x58 |0 \xE1\x59 |0 \xE1\x5A |0 \xE1\x5B |0 \xE1\x5C |0 \xE1\x5D |0 \xE1\x5E |0 \xE1\x5F |0 \xE1\x60 |0 \xE1\x61 |0 \xE1\x62 |0 \xE1\x63 |0 \xE1\x64 |0 \xE1\x65 |0 \xE1\x66 |0 \xE1\x67 |0 \xE1\x68 |0 \xE1\x69 |0 \xE1\x6A |0 \xE1\x6B |0 \xE1\x6C |0 \xE1\x6D |0 \xE1\x6E |0 \xE1\x6F |0 \xE1\x70 |0 \xE1\x71 |0 \xE1\x72 |0 \xE1\x73 |0 \xE1\x74 |0 \xE1\x75 |0 \xE1\x76 |0 \xE1\x77 |0 \xE1\x78 |0 \xE1\x79 |0 \xE1\x7A |0 \xE1\x7B |0 \xE1\x7C |0 \xE1\x7D |0 \xE1\x7E |0 \xE1\x7F |0 \xE1\x81 |0 \xE1\x82 |0 \xE1\x83 |0 \xE1\x84 |0 \xE1\x85 |0 \xE1\x86 |0 \xE1\x87 |0 \xE1\x88 |0 \xE1\x89 |0 \xE1\x8A |0 \xE1\x8B |0 \xE1\x8C |0 \xE1\x8D |0 \xE1\x8E |0 \xE1\x8F |0 \xE1\x90 |0 \xE1\x91 |0 \xE1\x92 |0 \xE1\x93 |0 \xE1\x94 |0 \xE1\x95 |0 \xE1\x96 |0 \xE1\x97 |0 \xE1\x98 |0 \xE1\x99 |0 \xE1\x9A |0 \xE1\x9B |0 \xE1\x9C |0 \xE1\x9D |0 \xE1\x9E |0 \xE1\x9F |0 \xE1\xA0 |0 \xE1\xA1 |0 \xE1\xA2 |0 \xE1\xA3 |0 \xE1\xA4 |0 \xE1\xA5 |0 \xE1\xA6 |0 \xE1\xA7 |0 \xE1\xA8 |0 \xE1\xA9 |0 \xE1\xAA |0 \xE1\xAB |0 \xE1\xAC |0 \xE1\xAD |0 \xE1\xAE |0 \xE1\xAF |0 \xE1\xB0 |0 \xE1\xB1 |0 \xE1\xB2 |0 \xE1\xB3 |0 \xE1\xB4 |0 \xE1\xB5 |0 \xE1\xB6 |0 \xE1\xB7 |0 \xE1\xB8 |0 \xE1\xB9 |0 \xE1\xBA |0 \xE1\xBB |0 \xE1\xBC |0 \xE1\xBD |0 \xE1\xBE |0 \xE1\xBF |0 \xE1\xC0 |0 \xE1\xC1 |0 \xE1\xC2 |0 \xE1\xC3 |0 \xE1\xC4 |0 \xE1\xC5 |0 \xE1\xC6 |0 \xE1\xC7 |0 \xE1\xC8 |0 \xE1\xC9 |0 \xE1\xCA |0 \xE1\xCB |0 \xE1\xCC |0 \xE1\xCD |0 \xE1\xCE |0 \xE1\xCF |0 \xE1\xD0 |0 \xE1\xD1 |0 \xE1\xD2 |0 \xE1\xD3 |0 \xE1\xD4 |0 \xE1\xD5 |0 \xE1\xD6 |0 \xE1\xD7 |0 \xE1\xD8 |0 \xE1\xD9 |0 \xE1\xDA |0 \xE1\xDB |0 \xE1\xDC |0 \xE1\xDD |0 \xE1\xDE |0 \xE1\xDF |0 \xE1\xE0 |0 \xE1\xE1 |0 \xE1\xE2 |0 \xE1\xE3 |0 \xE1\xE4 |0 \xE1\xE5 |0 \xE1\xE6 |0 \xE1\xE7 |0 \xE1\xE8 |0 \xE1\xE9 |0 \xE1\xEA |0 \xE1\xEB |0 \xE1\xEC |0 \xE1\xED |0 \xE1\xEE |0 \xE1\xEF |0 \xE1\xF0 |0 \xE1\xF1 |0 \xE1\xF2 |0 \xE1\xF3 |0 \xE1\xF4 |0 \xE1\xF5 |0 \xE1\xF6 |0 \xE1\xF7 |0 \xE1\xF8 |0 \xE1\xF9 |0 \xE1\xFA |0 \xE1\xFB |0 \xE1\xFC |0 \xE1\xFD |0 \xE2\x41 |0 \xE2\x42 |0 \xE2\x43 |0 \xE2\x44 |0 \xE2\x45 |0 \xE2\x46 |0 \xE2\x47 |0 \xE2\x48 |0 \xE2\x49 |0 \xE2\x4A |0 \xE2\x4B |0 \xE2\x4C |0 \xE2\x4D |0 \xE2\x4E |0 \xE2\x4F |0 \xE2\x50 |0 \xE2\x51 |0 \xE2\x52 |0 \xE2\x53 |0 \xE2\x54 |0 \xE2\x55 |0 \xE2\x56 |0 \xE2\x57 |0 \xE2\x58 |0 \xE2\x59 |0 \xE2\x5A |0 \xE2\x5B |0 \xE2\x5C |0 \xE2\x5D |0 \xE2\x5E |0 \xE2\x5F |0 \xE2\x60 |0 \xE2\x61 |0 \xE2\x62 |0 \xE2\x63 |0 \xE2\x64 |0 \xE2\x65 |0 \xE2\x66 |0 \xE2\x67 |0 \xE2\x68 |0 \xE2\x69 |0 \xE2\x6A |0 \xE2\x6B |0 \xE2\x6C |0 \xE2\x6D |0 \xE2\x6E |0 \xE2\x6F |0 \xE2\x70 |0 \xE2\x71 |0 \xE2\x72 |0 \xE2\x73 |0 \xE2\x74 |0 \xE2\x75 |0 \xE2\x76 |0 \xE2\x77 |0 \xE2\x78 |0 \xE2\x79 |0 \xE2\x7A |0 \xE2\x7B |0 \xE2\x7C |0 \xE2\x7D |0 \xE2\x7E |0 \xE2\x7F |0 \xE2\x81 |0 \xE2\x82 |0 \xE2\x83 |0 \xE2\x84 |0 \xE2\x85 |0 \xE2\x86 |0 \xE2\x87 |0 \xE2\x88 |0 \xE2\x89 |0 \xE2\x8A |0 \xE2\x8B |0 \xE2\x8C |0 \xE2\x8D |0 \xE2\x8E |0 \xE2\x8F |0 \xE2\x90 |0 \xE2\x91 |0 \xE2\x92 |0 \xE2\x93 |0 \xE2\x94 |0 \xE2\x95 |0 \xE2\x96 |0 \xE2\x97 |0 \xE2\x98 |0 \xE2\x99 |0 \xE2\x9A |0 \xE2\x9B |0 \xE2\x9C |0 \xE2\x9D |0 \xE2\x9E |0 \xE2\x9F |0 \xE2\xA0 |0 \xE2\xA1 |0 \xE2\xA2 |0 \xE2\xA3 |0 \xE2\xA4 |0 \xE2\xA5 |0 \xE2\xA6 |0 \xE2\xA7 |0 \xE2\xA8 |0 \xE2\xA9 |0 \xE2\xAA |0 \xE2\xAB |0 \xE2\xAC |0 \xE2\xAD |0 \xE2\xAE |0 \xE2\xAF |0 \xE2\xB0 |0 \xE2\xB1 |0 \xE2\xB2 |0 \xE2\xB3 |0 \xE2\xB4 |0 \xE2\xB5 |0 \xE2\xB6 |0 \xE2\xB7 |0 \xE2\xB8 |0 \xE2\xB9 |0 \xE2\xBA |0 \xE2\xBB |0 \xE2\xBC |0 \xE2\xBD |0 \xE2\xBE |0 \xE2\xBF |0 \xE2\xC0 |0 \xE2\xC1 |0 \xE2\xC2 |0 \xE2\xC3 |0 \xE2\xC4 |0 \xE2\xC5 |0 \xE2\xC6 |0 \xE2\xC7 |0 \xE2\xC8 |0 \xE2\xC9 |0 \xE2\xCA |0 \xE2\xCB |0 \xE2\xCC |0 \xE2\xCD |0 \xE2\xCE |0 \xE2\xCF |0 \xE2\xD0 |0 \xE2\xD1 |0 \xE2\xD2 |0 \xE2\xD3 |0 \xE2\xD4 |0 \xE2\xD5 |0 \xE2\xD6 |0 \xE2\xD7 |0 \xE2\xD8 |0 \xE2\xD9 |0 \xE2\xDA |0 \xE2\xDB |0 \xE2\xDC |0 \xE2\xDD |0 \xE2\xDE |0 \xE2\xDF |0 \xE2\xE0 |0 \xE2\xE1 |0 \xE2\xE2 |0 \xE2\xE3 |0 \xE2\xE4 |0 \xE2\xE5 |0 \xE2\xE6 |0 \xE2\xE7 |0 \xE2\xE8 |0 \xE2\xE9 |0 \xE2\xEA |0 \xE2\xEB |0 \xE2\xEC |0 \xE2\xED |0 \xE2\xEE |0 \xE2\xEF |0 \xE2\xF0 |0 \xE2\xF1 |0 \xE2\xF2 |0 \xE2\xF3 |0 \xE2\xF4 |0 \xE2\xF5 |0 \xE2\xF6 |0 \xE2\xF7 |0 \xE2\xF8 |0 \xE2\xF9 |0 \xE2\xFA |0 \xE2\xFB |0 \xE2\xFC |0 \xE2\xFD |0 \x44\x5C |0 \x46\xA8 |0 \x46\xA9 |0 \x46\xAA |0 \x46\xAB |0 \x69\x4B |0 \x7A\xA4 |0 \x47\x41 |0 \x46\xA7 |0 \x47\x49 |0 \x46\xB6 |0 \x46\xBC |0 \x46\xAC |0 \x46\xAD |0 \x46\xAE |0 \x46\xAF |0 \x46\xB0 |0 \x46\xB1 |0 \x46\xA4 |0 \x46\xA5 |0 \x46\xB2 |0 \x46\xB3 |0 \x46\xB4 |0 \x46\xB5 |0 \x46\xA0 |0 \x46\xA1 |0 \x46\xA2 |0 \x46\xA3 |0 \x46\xBE |0 \x46\xBF |0 \x46\xC2 |0 \x46\xC3 |0 \x46\xC0 |0 \x46\xC1 |0 \x46\xBD |0 \x47\x42 |0 \x47\x43 |0 \x47\x44 |0 \x47\x45 |0 \x47\x46 |0 \x47\x47 |0 \x47\x48 |0 \x47\x4A |0 \x47\x4B |0 \x47\x4C |0 \x47\x4D |0 \x47\x4E |0 \x47\x4F |0 \x47\x50 |0 \x47\x53 |0 \x47\x54 |0 \x46\xC4 |0 \x47\x55 |0 \x47\x56 |0 \x47\x57 |0 \x47\x58 |0 \x47\x59 |0 \x47\x5A |0 \x47\x5B |0 \x47\x5C |0 \x47\x5D |0 \x42\x5A |0 \x42\x7F |0 \x42\x7B |0 \x42\xE0 |0 \x42\x6C |0 \x42\x50 |0 \x42\x7D |0 \x42\x4D |0 \x42\x5D |0 \x46\xB8 |0 \x42\x4E |0 \x42\x6B |0 \x42\x60 |0 \x42\x4B |0 \x42\x61 |0 \x42\xF0 |0 \x42\xF1 |0 \x42\xF2 |0 \x42\xF3 |0 \x42\xF4 |0 \x42\xF5 |0 \x42\xF6 |0 \x42\xF7 |0 \x42\xF8 |0 \x42\xF9 |0 \x42\x7A |0 \x42\x5E |0 \x42\x4C |0 \x42\x7E |0 \x42\x6E |0 \x42\x6F |0 \x42\x7C |0 \x42\xC1 |0 \x42\xC2 |0 \x42\xC3 |0 \x42\xC4 |0 \x42\xC5 |0 \x42\xC6 |0 \x42\xC7 |0 \x42\xC8 |0 \x42\xC9 |0 \x42\xD1 |0 \x42\xD2 |0 \x42\xD3 |0 \x42\xD4 |0 \x42\xD5 |0 \x42\xD6 |0 \x42\xD7 |0 \x42\xD8 |0 \x42\xD9 |0 \x42\xE2 |0 \x42\xE3 |0 \x42\xE4 |0 \x42\xE5 |0 \x42\xE6 |0 \x42\xE7 |0 \x42\xE8 |0 \x42\xE9 |0 \x44\x44 |0 \x43\xE0 |0 \x44\x45 |0 \x44\x70 |0 \x42\x6D |0 \x42\x81 |0 \x42\x82 |0 \x42\x83 |0 \x42\x84 |0 \x42\x85 |0 \x42\x86 |0 \x42\x87 |0 \x42\x88 |0 \x42\x89 |0 \x42\x91 |0 \x42\x92 |0 \x42\x93 |0 \x42\x94 |0 \x42\x95 |0 \x42\x96 |0 \x42\x97 |0 \x42\x98 |0 \x42\x99 |0 \x42\xA2 |0 \x42\xA3 |0 \x42\xA4 |0 \x42\xA5 |0 \x42\xA6 |0 \x42\xA7 |0 \x42\xA8 |0 \x42\xA9 |0 \x42\xC0 |0 \x42\x4F |0 \x42\xD0 |0 \x43\xA1 |1 \x43\x4A |0 \x42\x4A |0 \x42\x5F |0 \x47\x51 |0 \x42\x6A |0 \x42\x5B |0 END CHARMAP suite3270-4.1/Common/ibm_hosts000066400000000000000000000020521413735575200162000ustar00rootroot00000000000000# Sample x3270 ibm_hosts file. # # The format of each entry is: # # name type [prefix]hostname[:port] [actions] # # where # # name is a name you wish to give to the host. This name # can be used on the x3270 command line, and is the # name that will appear on the x3270 "Connect" menu. # # type is one of two keywords. The value "primary" means # the entry will appear on the "Connect" menu. The # value "alias" means it will not. # # hostname is the hostname or Internet address of the host to # to connect to. It can be preceded by a prefix such # as "s:" or "p:" or an LU name (see the x3270 man # page), and it can be followed by a "/" or ":" and a # port number to indicate a TCP port other than the # x3270 default (usually "telnet"). # # actions is an x3270 action or actions to execute once the # connection is made and a data-entry field is defined. # If the text looks like x3270 actions, e.g., PF(1), # it is unmodified; otherwise the text is used as a # parameter to the String() action. # #localhost primary 127.0.0.1 suite3270-4.1/Common/ibm_hosts.man.m4000066400000000000000000000112251413735575200172730ustar00rootroot00000000000000dnl Copyright (c) 1994-2009, Paul Mattes. dnl All rights reserved. dnl dnl Redistribution and use in source and binary forms, with or without dnl modification, are permitted provided that the following conditions are met: dnl * Redistributions of source code must retain the above copyright dnl notice, this list of conditions and the following disclaimer. dnl * Redistributions in binary form must reproduce the above copyright dnl notice, this list of conditions and the following disclaimer in the dnl documentation and/or other materials provided with the distribution. dnl * Neither the names of Paul Mattes nor the names of his contributors dnl may be used to endorse or promote products derived from this software dnl without specific prior written permission. dnl dnl THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS OR IMPLIED dnl WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF dnl MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO dnl EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, dnl SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED dnl TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR dnl PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF dnl LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING dnl NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS dnl SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. XX_TH(IBM_HOSTS,5,XX_DATE) XX_SH(Name) ibm_hosts XX_DASHED() host database for x3270 and c3270 XX_SH(Synopsis) /usr/lib/X11/x3270/ibm_hosts XX_SH(Description) The XX_FB(ibm_hosts) file contains information regarding IBM hosts on the network. An XX_FI(IBM host) is a host which can communicate with a 3270 terminal emulator such as XX_FB(x3270) or XX_FB(c3270). Each line defines a name in the following format (optional fields are shown in brackets): XX_LP XX_FI(name) XX_FI(type) [XX_FI(opt):]...[XX_FI(luname)@]XX_FI(hostname)[:XX_FI(port)] [XX_FI(actions)] XX_LP Items are separated by any number of blanks and/or TAB characters. A line beginning with `#' is taken as a comment (note that `#' anywhere else on a line does XX_FI(not) indicate a comment). XX_LP The XX_FI(name) field is a mnemonic used to identify the host. XX_LP The XX_FI(type) field is a keyword that indicates the type of entry. The value XX_FB(primary) means that the XX_FI(name) will be included in host-selection menus that may be displayed by a 3270 emulator. The value XX_FB(alias) means that the XX_FI(name) will not be included in menus, but will still be accepted as valid input when a host name is required. XX_LP The XX_FI(hostname) field is the Internet hostname or dot-notation Internet address of the host. XX_LP The XX_FI(hostname) can `include' ``s:'' or ``p:'' prefixes, e.g., XX_FB(s:finicky) (see the XX_LINK(x3270-man.html,XX_FI(x3270)(1)) or XX_LINK(c3270-man.html,XX_FI(c3270)(1)) man page sfor details). It can also include an LU name, separated by an ``@'' character, e.g., XX_FB(oddlu@bluehost). Finally, it can include a non-default XX_FI(port) number, appended to the XX_FI(hostname) with a colon ``:'' character, e.g., XX_FB(bluehost:97). (For compatibility with earlier versions of XX_FI(x3270), the XX_FI(port) can also be separated by a slash ``/'' character.) XX_LP The optional XX_FI(actions) field specifies actions to be taken once the connection is made and a data-entry field is defined. If the text looks like an action, e.g., XX_FB(PF(1)), it is unmodified; otherwise it is taken as the parameter to the XX_FB(String()) action. The XX_FI(actions) are not intended for entering usernames and passwords; rather they provide an automated way of specifying a front-end menu option. XX_SH(Example) Given the following XX_FB(ibm_hosts) file: XX_LP XX_RS(`mvs primary mvs-host XX_BR tso alias mvs-host XX_BR mvs2 primary mvs-host:4012 XX_BR vm primary vtam Tab() String(3) Enter() ') A 3270 emulator will display four names (XX_FB(mvs), XX_FB(mvs2), XX_FB(afhost) and XX_FB(vm)) on its hosts menu. The names XX_FB(mvs) and XX_FB(tso) will cause connections to the host XX_FB(mvs-host). The name XX_FB(mvs2) will also cause a connection to XX_FB(mvs-host), but to port 4012 rather than the emulator's default port (usually 23). The name XX_FB(vm) will cause the 3270 emulator to connect to the host XX_FB(vtam) (presumably some sort of host-selection front-end), enter the string ``3'' on the second data-entry field on the screen, and send the Enter XX_SM(AID) sequence. XX_SH(Files) /usr/lib/X11/x3270/ibm_hosts XX_SH(See Also) XX_LINK(x3270-man.html,x3270(1)), XX_LINK(c3270-man.html,c3270(1)) suite3270-4.1/Common/icmd.c000066400000000000000000001062071413735575200153550ustar00rootroot00000000000000/* * Copyright (c) 2007-2009, 2013-2016, 2020 Paul Mattes. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the names of Paul Mattes nor the names of his contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO * EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * icmd.c * A curses-based 3270 Terminal Emulator * Interactive commands */ #include "globals.h" #include "appres.h" #include "codepage.h" #include "ft_dft.h" #include "ft_private.h" /* must precede ft_gui */ #include "ft_gui.h" #include "icmdc.h" #include "lazya.h" #include "popups.h" #include "split_host.h" #include "task.h" #include "utf8.h" #include "utils.h" /* Support functions for interactive commands. */ /** * Interactive command module registration. */ void icmd_register(void) { } typedef enum { YN_NO = 0, YN_YES = 1, YN_RETRY = -1 } yn_t; /** * Process the response to a yes or no question. * * @param defval Default value * @param response Response text to process * * @returns YN_NO (0) for no, YN_YES (1) for yes, YN_RETRY (-1) for retry */ static yn_t getyn_iter(int defval, const char *response) { if (!response[0]) { return (yn_t)defval; } if (!strncasecmp(response, "yes", strlen(response))) { return YN_YES; } else if (!strncasecmp(response, "no", strlen(response))) { return YN_NO; } else { action_output("Please answer 'yes', 'no' or 'quit'."); return YN_RETRY; } } /** * Process a numeric response. * * @param defval Default value * @param response Response text to process * * @returns numeric response, or -1 for error */ static int getnum_iter(int defval, const char *response) { unsigned long u; char *ptr; if (!*response) { return defval; } u = strtoul(response, &ptr, 10); if (*ptr == '\0') { return (int)u; } return -1; } /* Format a text string to fit on an 80-column display. */ static void fmt80(const char *s) { char *nl; size_t nc; action_output(" "); while (*s) { nl = strchr(s, '\n'); if (nl == NULL) { nc = strlen(s); } else { nc = nl - s; } if (nc > 78) { const char *t = s + 78; while (t > s && *t != ' ') { t--; } if (t != s) { nc = t - s; } } action_output(" %.*s", (int)nc, s); s += nc; if (*s == '\n' || *s == ' ') { s++; } } } /* * Pseudo-code: * * ask to continue * ask for direction * ask for source file * ask for destination file * ask for host type * ask for ascii/binary * if ascii * ask for cr * ask for remap * if windows and remap * ask for codepage * if receive * ask for overwrite * if not receive * if not CICS * ask for recfm * if not default recfm * ask for lrecl * if tso * ask for blksz * ask for units * if non-default units * ask for primary * ask for secondary * if avblock * ask for avblock size * if not std data stream * ask for buffer size * ask to go ahead with the transfer */ /* File transfer dialog states */ typedef enum { ITS_BASE, /* base state */ ITS_CONTINUE, /* Continue? */ ITS_DIRECTION, /* Direction: */ ITS_SOURCE_FILE, /* Source file: */ ITS_DEST_FILE, /* Destination file: */ ITS_HOST_TYPE, /* Host type: */ ITS_ASCII, /* Ascii/Binary? */ ITS_CR, /* Cr keep/remove? */ ITS_REMAP, /* Remap? */ #if defined(_WIN32) /*[*/ ITS_WINDOWS_CP, /* Windows code page? */ #endif /*]*/ ITS_KEEP, /* Keep? */ ITS_RECFM, /* Record format: */ ITS_LRECL, /* Record length: */ ITS_BLKSIZE, /* Block size: */ ITS_ALLOC, /* Allocation type: */ ITS_PRIMARY, /* Primary space: */ ITS_SECONDARY, /* Secondary space: */ ITS_AVBLOCK, /* Avblock size: */ ITS_BUFFER_SIZE, /* DFT buffer size: */ ITS_GO /* Continue? */ } its_t; /* Interactive transfer context. */ typedef struct { ft_conf_t conf; /* returned config */ its_t state; /* state */ char *prompt; /* last prompt displayed */ enum { CR_REMOVE, CR_ADD, CR_KEEP } cr_mode; enum { FE_KEEP, FE_REPLACE, FE_APPEND } fe_mode; } itc_t; /* Returned state for the incremental dialog. */ typedef enum { ITR_RETRY, /* ask again */ ITR_CONTINUE, /* more input needed */ ITR_GO, /* go ahead with transfer */ ITR_QUIT /* abort the operation */ } itret_t; /* Resume functions, per state. */ typedef itret_t itret_fn(itc_t *, const char *); static itret_fn it_continue; static itret_fn it_direction; static itret_fn it_source_file; static itret_fn it_dest_file; static itret_fn it_host_type; static itret_fn it_ascii; static itret_fn it_cr; static itret_fn it_remap; #if defined(_WIN32) /*[*/ static itret_fn it_windows_cp; #endif /*]*/ static itret_fn it_keep; static itret_fn it_recfm; static itret_fn it_lrecl; static itret_fn it_blksize; static itret_fn it_alloc; static itret_fn it_primary; static itret_fn it_secondary; static itret_fn it_avblock; static itret_fn it_buffer_size; static itret_fn it_go; static itret_fn *it_resume_fn[] = { NULL, it_continue, it_direction, it_source_file, it_dest_file, it_host_type, it_ascii, it_cr, it_remap, #if defined(_WIN32) /*[*/ it_windows_cp, #endif /*]*/ it_keep, it_recfm, it_lrecl, it_blksize, it_alloc, it_primary, it_secondary, it_avblock, it_buffer_size, it_go }; /* Predicate functions, per state. */ typedef bool itpred_t(ft_conf_t *); static itpred_t pred_base; static itpred_t pred_continue; static itpred_t pred_direction; static itpred_t pred_source_file; static itpred_t pred_dest_file; static itpred_t pred_host_type; static itpred_t pred_ascii; static itpred_t pred_cr; static itpred_t pred_remap; #if defined(_WIN32) /*[*/ static itpred_t pred_windows_cp; #endif /*]*/ static itpred_t pred_keep; static itpred_t pred_recfm; static itpred_t pred_lrecl; static itpred_t pred_blksize; static itpred_t pred_alloc; static itpred_t pred_primary; static itpred_t pred_secondary; static itpred_t pred_avblock; static itpred_t pred_buffer_size; static itpred_t pred_go; static itpred_t *it_pred[] = { pred_base, pred_continue, pred_direction, pred_source_file, pred_dest_file, pred_host_type, pred_ascii, pred_cr, pred_remap, #if defined(_WIN32) /*[*/ pred_windows_cp, #endif /*]*/ pred_keep, pred_recfm, pred_lrecl, pred_blksize, pred_alloc, pred_primary, pred_secondary, pred_avblock, pred_buffer_size, pred_go }; /* Ask functions, per state. */ typedef char *it_ask_t(itc_t *); static it_ask_t ask_continue; static it_ask_t ask_direction; static it_ask_t ask_source_file; static it_ask_t ask_dest_file; static it_ask_t ask_host_type; static it_ask_t ask_ascii; static it_ask_t ask_cr; static it_ask_t ask_remap; #if defined(_WIN32) /*[*/ static it_ask_t ask_windows_cp; #endif /*]*/ static it_ask_t ask_keep; static it_ask_t ask_recfm; static it_ask_t ask_lrecl; static it_ask_t ask_blksize; static it_ask_t ask_alloc; static it_ask_t ask_primary; static it_ask_t ask_secondary; static it_ask_t ask_avblock; static it_ask_t ask_buffer_size; static it_ask_t ask_go; static it_ask_t *it_ask[] = { NULL, ask_continue, ask_direction, ask_source_file, ask_dest_file, ask_host_type, ask_ascii, ask_cr, ask_remap, #if defined(_WIN32) /*[*/ ask_windows_cp, #endif /*]*/ ask_keep, ask_recfm, ask_lrecl, ask_blksize, ask_alloc, ask_primary, ask_secondary, ask_avblock, ask_buffer_size, ask_go }; /** * Resume an interactive transfer dialog. * * @param[in] handle Handle (transfer state) * @param[in] response Reply text * * @returns true to continue, false to quit */ static bool it_resume(void *handle, const char *response) { char *r; itc_t *itc = (itc_t *)handle; itret_t ret; its_t state; if (response != NULL) { size_t sl; /* Trim spaces. */ r = lazya(NewString(response)); while (*r == ' ') { r++; } sl = strlen(r); while (sl > 0 && r[sl - 1] == ' ') { r[--sl] = '\0'; } /* Test for 'quit'. */ if (!strcasecmp(r, "quit")) { return false; } } else { r = NULL; } /* Call the resume function for the current state. */ ret = (*it_resume_fn[itc->state])(itc, r); if (ret == ITR_RETRY) { task_request_input("Transfer", itc->prompt, it_resume, NULL, itc, false); return false; } if (ret == ITR_QUIT) { /* Go no further. */ return false; } if (ret == ITR_GO) { /* IA_COMMAND is a lie here, but it is harmless. */ bool rv = ft_start_backend(&itc->conf, IA_COMMAND); if (rv) { action_output("Transfer initiated."); action_output(" "); } } /* * More input needed. * Look for the next state with a match. * e.g., if state is BASE, then if pred[base](), call ask[base](), which is * ask_continue() and sets state to BASE+1, which is CONTINUE. */ for (state = itc->state + 1; state <= ITS_GO; state++) { if ((*it_pred[state])(&itc->conf)) { Replace(itc->prompt, (*it_ask[state])(itc)); itc->state = state; task_request_input("Transfer", itc->prompt, it_resume, NULL, itc, false); return false; break; } } return false; } /** * Per-session abort. Free the context saved for this session. * * @param[in] handle Handle (transfer state) */ static void interactive_transfer_type_abort(void *handle) { itc_t *itc = (itc_t *)handle; if (itc != NULL) { ft_conf_t *p = &itc->conf; Replace(itc->prompt, NULL); Replace(p->local_filename, NULL); Replace(p->local_filename, NULL); Free(itc); } } /* * Start an interactive transfer. * Returns true if dialog in progress, false otherwise. */ static bool interactive_transfer_start(void) { itc_t *itc; /* Check for an interactive session. */ if (!task_is_interactive()) { return false; } /* Check for per-type state, and allocate some if needed. */ itc = (itc_t *)task_get_ir_state("Transfer"); if (itc == NULL) { itc = (itc_t *)Calloc(1, sizeof(itc_t)); ft_init_conf(&itc->conf); itc->conf.is_action = true; task_set_ir_state("Transfer", itc, interactive_transfer_type_abort); } /* Initialize the state. */ itc->cr_mode = CR_REMOVE; itc->fe_mode = FE_KEEP; /* Print the banner. */ action_output(" "); action_output( "File Transfer"); action_output(" "); action_output( "Type 'quit' at any prompt to abort this dialog."); action_output(" "); action_output( "Note: In order to initiate a file transfer, the 3270 cursor must be"); action_output( "positioned on an input field that can accept the IND$FILE command, e.g.,"); action_output( "at the VM/CMS or TSO command prompt."); action_output(" "); /* Ask about continuing. */ itc->state = ITS_CONTINUE; Replace(itc->prompt, NewString("Continue? (y/n) [y] ")); task_request_input("Transfer", itc->prompt, it_resume, NULL, itc, false); return true; } /** * UI hook for the Transfer() action. * * @param[in] p Configuration (ignored) * * @returns FGI_ASYNC if started, FGI_NOP if not interactive. */ ft_gui_interact_t ft_gui_interact(ft_conf_t *p) { return interactive_transfer_start()? FGI_ASYNC: FGI_NOP; } /* ===================== Resume functions ====================== */ /* Received an answer to the initial "Continue?". */ static itret_t it_continue(itc_t *itc, const char *response) { switch (getyn_iter(1, response)) { case YN_YES: return ITR_CONTINUE; case YN_NO: return ITR_QUIT; default: case YN_RETRY: return ITR_RETRY; } } /* Received an answer to "Direction:" */ static itret_t it_direction(itc_t *itc, const char *response) { ft_conf_t *p = &itc->conf; if (*response) { if (!strncasecmp(response, "receive", strlen(response))) { p->receive_flag = true; } else if (!strncasecmp(response, "send", strlen(response))) { p->receive_flag = false; } else { return ITR_RETRY; } } return ITR_CONTINUE; } /* Received an answer to "Source file:". */ static itret_t it_source_file(itc_t *itc, const char *response) { ft_conf_t *p = &itc->conf; if (!*response) { if (!((p->receive_flag && p->host_filename) || (!p->receive_flag && p->local_filename))) { return ITR_RETRY; } } else { if (p->receive_flag) { Replace(p->host_filename, NewString(response)); } else { Replace(p->local_filename, NewString(response)); } } return ITR_CONTINUE; } /* Received an answer to "Destination file:". */ static itret_t it_dest_file(itc_t *itc, const char *response) { ft_conf_t *p = &itc->conf; if (!*response) { if (!((!p->receive_flag && p->host_filename) || (p->receive_flag && p->local_filename))) { return ITR_RETRY; } } else { if (!p->receive_flag) { Replace(p->host_filename, NewString(response)); } else { Replace(p->local_filename, NewString(response)); } } return ITR_CONTINUE; } /* Received an answer to "Host type" */ static itret_t it_host_type(itc_t *itc, const char *response) { ft_conf_t *p = &itc->conf; if (*response) { host_type_t h; if (!ft_encode_host_type(response, &h)) { return ITR_RETRY; } p->host_type = h; } return ITR_CONTINUE; } /* Received an answer to "ASCII/binary". */ static itret_t it_ascii(itc_t *itc, const char *response) { ft_conf_t *p = &itc->conf; if (*response) { if (!strncasecmp(response, "ascii", strlen(response))) { p->ascii_flag = true; } else if (!strncasecmp(response, "binary", strlen(response))) { p->ascii_flag = false; } else { return ITR_RETRY; } } return ITR_CONTINUE; } /* Received an answer to "CR?". */ static itret_t it_cr(itc_t *itc, const char *response) { ft_conf_t *p = &itc->conf; if (!*response) { itc->cr_mode = p->cr_flag? (p->receive_flag? CR_ADD: CR_REMOVE): CR_KEEP; } else if (!strncasecmp(response, "remove", strlen(response))) { p->cr_flag = true; itc->cr_mode = CR_REMOVE; } else if (!strncasecmp(response, "add", strlen(response))) { p->cr_flag = true; itc->cr_mode = CR_ADD; } else if (!strncasecmp(response, "keep", strlen(response))) { p->cr_flag = false; itc->cr_mode = CR_KEEP; } else { return ITR_RETRY; } return ITR_CONTINUE; } /* Got an answer to "Remap?". */ static itret_t it_remap(itc_t *itc, const char *response) { ft_conf_t *p = &itc->conf; if (!response[0]) { if (!strncasecmp(response, "yes", strlen(response))) { p->remap_flag = true; } else if (!strncasecmp(response, "no", strlen(response))) { p->remap_flag = false; } else { return ITR_RETRY; } } return ITR_CONTINUE; } #if defined(_WIN32) /*[*/ /* Got an answer to "Windows codepage?". */ static itret_t it_windows_cp(itc_t *itc, const char *response) { ft_conf_t *p = &itc->conf; int cp = getnum_iter(p->windows_codepage, response); if (cp < 0) { return ITR_RETRY; } p->windows_codepage = cp; return ITR_CONTINUE; } #endif /*]*/ /* Got an answer to "Keep?" */ static itret_t it_keep(itc_t *itc, const char *response) { ft_conf_t *p = &itc->conf; if (!*response) { itc->fe_mode = p->allow_overwrite? FE_REPLACE: (p->append_flag? FE_APPEND: FE_KEEP); } else if (!strncasecmp(response, "keep", strlen(response))) { p->append_flag = false; p->allow_overwrite = false; itc->fe_mode = FE_KEEP; } else if (!strncasecmp(response, "replace", strlen(response))) { p->append_flag = false; p->allow_overwrite = true; itc->fe_mode = FE_REPLACE; } else if (!strncasecmp(response, "append", strlen(response))) { p->append_flag = true; p->allow_overwrite = false; itc->fe_mode = FE_APPEND; } else { return ITR_RETRY; } return ITR_CONTINUE; } /* Got an answer to "Record format?". */ static itret_t it_recfm(itc_t *itc, const char *response) { ft_conf_t *p = &itc->conf; if (*response) { recfm_t recfm; if (ft_encode_recfm(response, &recfm)) { p->recfm = recfm; } else { return ITR_RETRY; } } return ITR_CONTINUE; } /* Got an answer to "Logical record length?". */ static itret_t it_lrecl(itc_t *itc, const char *response) { ft_conf_t *p = &itc->conf; int lrecl = getnum_iter(p->lrecl, response); if (lrecl < 0) { return ITR_RETRY; } p->lrecl = lrecl; return ITR_CONTINUE; } /* Got an answer to "Blocksize?". */ static itret_t it_blksize(itc_t *itc, const char *response) { ft_conf_t *p = &itc->conf; int blksize = getnum_iter(p->blksize, response); if (blksize < 0) { return ITR_RETRY; } p->blksize = blksize; return ITR_CONTINUE; } /* Got an answer to "Units?". */ static itret_t it_alloc(itc_t *itc, const char *response) { ft_conf_t *p = &itc->conf; units_t units; if (ft_encode_units(response, &units)) { p->units = units; } else { return ITR_RETRY; } return ITR_CONTINUE; } /* Got an answer for "Primary?". */ static itret_t it_primary(itc_t *itc, const char *response) { ft_conf_t *p = &itc->conf; int primary = getnum_iter(p->primary_space, response); if (primary < 0) { return ITR_RETRY; } p->primary_space = primary; return ITR_CONTINUE; } /* Got an answer to "Secondary?". */ static itret_t it_secondary(itc_t *itc, const char *response) { ft_conf_t *p = &itc->conf; int secondary = getnum_iter(p->secondary_space, response); if (secondary < 0) { return ITR_RETRY; } p->secondary_space = secondary; return ITR_CONTINUE; } /* Got an answer to "Avblock?". */ static itret_t it_avblock(itc_t *itc, const char *response) { ft_conf_t *p = &itc->conf; int avblock = getnum_iter(p->avblock, response); if (avblock < 0) { return ITR_RETRY; } p->avblock = avblock; return ITR_CONTINUE; } /* Got an answer to "Buffer size?. */ static itret_t it_buffer_size(itc_t *itc, const char *response) { ft_conf_t *p = &itc->conf; int buffer_size = getnum_iter(p->dft_buffersize, response); int nsize; if (buffer_size < 0) { return ITR_RETRY; } nsize = set_dft_buffersize(buffer_size); if (nsize != buffer_size) { action_output("Size changed to %d.", nsize); } p->dft_buffersize = nsize; return ITR_CONTINUE; } /* Got an answer to the final "Continue?". */ static itret_t it_go(itc_t *itc, const char *response) { int go = getyn_iter(1, response); if (go < 0) { return ITR_RETRY; } if (!go) { return ITR_QUIT; } return ITR_GO; } /* ===================== Predicates ====================== */ static bool pred_base(ft_conf_t *p) { return true; } static bool pred_continue(ft_conf_t *p) { return true; } static bool pred_direction(ft_conf_t *p) { return true; } static bool pred_source_file(ft_conf_t *p) { return true; } static bool pred_dest_file(ft_conf_t *p) { return true; } static bool pred_host_type(ft_conf_t *p) { return true; } static bool pred_ascii(ft_conf_t *p) { return true; } static bool pred_cr(ft_conf_t *p) { return p->ascii_flag; } static bool pred_remap(ft_conf_t *p) { return p->ascii_flag; } #if defined(_WIN32) /*[*/ static bool pred_windows_cp(ft_conf_t *p) { return p->ascii_flag && p->remap_flag; } #endif /*]*/ static bool pred_keep(ft_conf_t *p) { return p->receive_flag; } static bool pred_recfm(ft_conf_t *p) { return !p->receive_flag && p->host_type != HT_CICS; } static bool pred_lrecl(ft_conf_t *p) { return !p->receive_flag && p->recfm != DEFAULT_RECFM && p->host_type != HT_CICS; } static bool pred_blksize(ft_conf_t *p) { return !p->receive_flag && p->host_type == HT_TSO; } static bool pred_alloc(ft_conf_t *p) { return !p->receive_flag && p->host_type == HT_TSO; } static bool pred_primary(ft_conf_t *p) { return !p->receive_flag && p->host_type == HT_TSO && p->units != DEFAULT_UNITS; } static bool pred_secondary(ft_conf_t *p) { return !p->receive_flag && p->host_type == HT_TSO && p->units != DEFAULT_UNITS; } static bool pred_avblock(ft_conf_t *p) { return !p->receive_flag && p->host_type == HT_TSO && p->units == AVBLOCK; } static bool pred_buffer_size(ft_conf_t *p) { return !HOST_FLAG(STD_DS_HOST); } static bool pred_go(ft_conf_t *p) { return true; } /* ===================== Ask functions ====================== */ static char * ask_continue(itc_t *itc) { /* Print the banner. */ action_output(" "); action_output( "File Transfer"); action_output(" "); action_output( "Type 'quit' at any prompt to abort this dialog."); action_output(" "); action_output( "Note: In order to initiate a file transfer, the 3270 cursor must be"); action_output( "positioned on an input field that can accept the IND$FILE command, e.g.,"); action_output( "at the VM/CMS or TSO command prompt."); action_output(" "); /* Ask about continuing. */ return NewString("Continue? (y/n) [y] "); } static char * ask_direction(itc_t *itc) { ft_conf_t *p = &itc->conf; /* Ask about the direction. */ action_output(" "); action_output( "'send' means copy a file from this workstation to the host."); action_output( "'receive' means copy a file from the host to this workstation."); return xs_buffer("Direction: (send/receive) [%s] ", p->receive_flag? "receive": "send"); } static char * ask_source_file(itc_t *itc) { ft_conf_t *p = &itc->conf; char *default_file; /* Ask about the source file. */ if (p->receive_flag && p->host_filename) { default_file = lazyaf(" [%s]", p->host_filename); } else if (!p->receive_flag && p->local_filename) { default_file = lazyaf(" [%s]", p->local_filename); } else { default_file = ""; } action_output(" "); return xs_buffer("Name of source file on %s:%s ", p->receive_flag? "the host": "this workstation", default_file); } static char * ask_dest_file(itc_t *itc) { ft_conf_t *p = &itc->conf; char *default_file; /* Ask about the destination file. */ if (!p->receive_flag && p->host_filename) { default_file = lazyaf(" [%s]", p->host_filename); } else if (p->receive_flag && p->local_filename) { default_file = lazyaf(" [%s]", p->local_filename); } else { default_file = ""; } return xs_buffer("Name of destination file%s on %s:%s ", p->receive_flag? " or folder": "", p->receive_flag? "this workstation": "the host", default_file); } static char * ask_host_type(itc_t *itc) { ft_conf_t *p = &itc->conf; /* Ask about the host type. */ action_output(" "); return xs_buffer("Host type: (tso/vm/cics) [%s] ", ft_decode_host_type(p->host_type)); } static char * ask_ascii(itc_t *itc) { ft_conf_t *p = &itc->conf; action_output(" "); action_output( "An 'ascii' transfer does automatic translation between EBCDIC on the host and"); action_output( "ASCII on the workstation."); action_output( "A 'binary' transfer does no data translation."); return xs_buffer("Transfer mode: (ascii/binary) [%s] ", p->ascii_flag? "ascii": "binary"); } static char * ask_cr(itc_t *itc) { ft_conf_t *p = &itc->conf; char *default_cr; /* Ask about CR handling. */ action_output(" "); action_output( "For ASCII transfers, carriage return (CR) characters can be handled specially."); if (p->receive_flag) { action_output( "'add' means that CRs will be added to each record during the transfer."); } else { action_output( "'remove' means that CRs will be removed during the transfer."); } action_output( "'keep' means that no special action is taken with CRs."); default_cr = p->cr_flag? (p->receive_flag? "add": "remove"): "keep"; return xs_buffer("CR handling: (%s/keep) [%s] ", p->receive_flag? "add": "remove", default_cr); } static char * ask_remap(itc_t *itc) { ft_conf_t *p = &itc->conf; /* Ask about character set remapping. */ fmt80(lazyaf("For ASCII transfers, " #if defined(WC3270) /*[*/ "w" #endif /*]*/ "c3270 can either remap the text to ensure as " "accurate a translation between " #if defined(WC3270) /*[*/ "the Windows code page" #else /*][*/ "%s" #endif /*]*/ " and EBCDIC code page %s as possible, or it can transfer text as-is and " "leave all translation to the IND$FILE program on the host.\n\ 'yes' means that text will be translated.\n\ 'no' means that text will be transferred as-is.", #if !defined(WC3270) /*[*/ locale_codeset, #endif /*]*/ get_codepage_number())); return xs_buffer("Re-map character set? (yes/no) [%s] ", p->remap_flag? "yes": "no"); } #if defined(_WIN32) /*[*/ static char * ask_windows_cp(itc_t *itc) { ft_conf_t *p = &itc->conf; /* Ask about the Windows code page. */ return xs_buffer("Windows code page for re-mapping: [%d] ", p->windows_codepage); } #endif /*]*/ static char * ask_keep(itc_t *itc) { ft_conf_t *p = &itc->conf; char *default_fe; action_output(" "); action_output( "If the destination file exists, you can choose to keep it (and abort the"); action_output( "transfer), replace it, or append the source file to it."); if (p->allow_overwrite) { default_fe = "replace"; } else if (p->append_flag) { default_fe = "append"; } else { default_fe = "keep"; } return xs_buffer("Action if destination file exists: " "(keep/replace/append) [%s] ", default_fe); } static char * ask_recfm(itc_t *itc) { ft_conf_t *p = &itc->conf; /* Ask for the record format. */ action_output("[optional] Destination file record format:"); return xs_buffer(" (default/fixed/variable/undefined) [%s] ", ft_decode_recfm(p->recfm)); } static char * ask_lrecl(itc_t *itc) { /* Ask for the logical record length. */ return NewString("[optional] Destination file logical record length: "); } static char * ask_blksize(itc_t *itc) { /* Ask for the block size. */ return NewString("[optional] Destination file block size: "); } static char * ask_alloc(itc_t *itc) { ft_conf_t *p = &itc->conf; /* Ask for units. */ action_output("[optional] Destination file allocation type:"); return xs_buffer(" (default/tracks/cylinders/avblock) [%s] ", ft_decode_units(p->units)); } static char * ask_primary(itc_t *itc) { ft_conf_t *p = &itc->conf; /* Ask for primary allocation. */ if (p->primary_space) { return xs_buffer("Destination file primary space: [%d]", p->primary_space); } else { return NewString("Destination file primary space: "); } } static char * ask_secondary(itc_t *itc) { ft_conf_t *p = &itc->conf; /* Ask for secondary. */ if (p->secondary_space) { return xs_buffer("Destination file secondary space: [%d]", p->secondary_space); } else { return NewString("Destination file secondary space: "); } } static char * ask_avblock(itc_t *itc) { ft_conf_t *p = &itc->conf; /* Ask for AVBLOCK. */ if (p->avblock) { return xs_buffer("Destination file avblock size: [%d]", p->avblock); } else { return NewString("Destination file abvlock size: "); } } static char * ask_buffer_size(itc_t *itc) { ft_conf_t *p = &itc->conf; /* Ask for the DFT buffer size. */ action_output(" "); return xs_buffer("DFT buffer size: [%d] ", p->dft_buffersize); } static char * ask_go(itc_t *itc) { ft_conf_t *p = &itc->conf; char *ht = ""; char *cr = ""; char *remap = ""; char *windows_cp = ""; /* Sum up and ask about starting the transfer. */ action_output(" "); action_output("File Transfer Summary:"); if (p->receive_flag) { action_output(" Source file on Host: %s", p->host_filename); action_output(" Destination file on Workstation: %s", p->local_filename); } else { action_output(" Source file on workstation: %s", p->local_filename); action_output(" Destination file on Host: %s", p->host_filename); } switch (p->host_type) { case HT_TSO: ht = "TSO"; break; case HT_VM: ht = "VM/CMS"; break; case HT_CICS: ht = "CICS"; break; } action_output(" Host type: %s", ht); if (p->ascii_flag) { switch (itc->cr_mode) { case CR_REMOVE: cr = ", remove CRs"; break; case CR_ADD: cr = ", add CRs"; break; case CR_KEEP: break; } if (p->remap_flag) { remap = ", remap text"; } else { remap = ", don't remap text"; } #if defined(_WIN32) /*[*/ if (p->remap_flag) { windows_cp = lazyaf(", Windows code page %d", p->windows_codepage); } #endif /*]*/ } action_output(" "); action_output(" Transfer mode: %s%s%s%s", p->ascii_flag? "ASCII": "Binary", cr, remap, windows_cp); if (p->receive_flag) { char *exists = ""; switch (itc->fe_mode) { case FE_KEEP: exists = "abort the transfer"; break; case FE_REPLACE: exists = "replace it"; break; case FE_APPEND: exists = "append to it"; break; } action_output(" If destination file exists, %s", exists); } if (!p->receive_flag && (p->recfm != DEFAULT_RECFM || p->lrecl || p->primary_space || p->secondary_space)) { action_output(" Destination file:"); switch (p->recfm) { case DEFAULT_RECFM: break; case RECFM_FIXED: action_output(" Record format: fixed"); break; case RECFM_VARIABLE: action_output(" Record format: variable"); break; case RECFM_UNDEFINED: action_output(" Record format: undefined"); break; } if (p->lrecl) { action_output(" Logical record length: %d", p->lrecl); } if (p->blksize) { action_output(" Block size: %d", p->blksize); } if (p->primary_space || p->secondary_space) { char *primary = ""; char *secondary = ""; char *units = ""; if (p->primary_space) { primary = lazyaf(" primary %d", p->primary_space); } if (p->secondary_space) { secondary = lazyaf(" secondary %d", p->secondary_space); } switch (p->units) { case DEFAULT_UNITS: break; case TRACKS: units = " tracks"; break; case CYLINDERS: units = " cylinders"; break; case AVBLOCK: units = lazyaf(" avblock %d", p->avblock); break; } action_output(" Allocation:%s%s%s", primary, secondary, units); } } if (!HOST_FLAG(STD_DS_HOST)) { action_output(" DFT buffer size: %d", p->dft_buffersize); } action_output(" "); return NewString("Continue? (y/n) [y] "); } /* Help for the interactive Transfer action. */ void ft_help(bool as_action _is_unused) { ft_conf_t conf; char *s; memset(&conf, 0, sizeof(ft_conf_t)); ft_init_conf(&conf); action_output( "Syntax:\n\ To be prompted interactively for parameters:\n\ Transfer\n\ To specify parameters on the command line:\n\ Transfer(=...)\n\ or Transfer(,...)\n\ To do a transfer using the current defaults:\n\ Transfer(defaults)\n\ Keywords:"); action_output( " direction=send|receive default '%s'", conf.receive_flag? "send": "receive"); if ((conf.receive_flag && conf.host_filename) || (!conf.receive_flag && conf.local_filename)) { s = lazyaf("default '%s'", conf.receive_flag? conf.host_filename: conf.local_filename); } else { s = "(required)"; } action_output( " hostfile= %s", s); if ((!conf.receive_flag && conf.host_filename) || (conf.receive_flag && conf.local_filename)) { s = lazyaf("default '%s'", conf.receive_flag? conf.local_filename: conf.host_filename); } else { s = "(required)"; } action_output( " localfile= %s", s); action_output( " host=tso|vm|cics default '%s'", ft_decode_host_type(conf.host_type)); action_output( " mode=ascii|binary default '%s'", conf.ascii_flag? "ascii": "binary"); action_output( " cr=remove|add|keep default '%s'", conf.cr_flag? (conf.receive_flag? "add": "remove"): "keep"); action_output( " remap=yes|no default '%s'", conf.remap_flag? "yes": "no"); #if defined(_WIN32) /*[*/ action_output( " windowscodepage= default %d", conf.windows_codepage); #endif /*]*/ action_output( " exist=keep|replace|append default '%s'", conf.allow_overwrite? "replace": (conf.append_flag? "append": "keep")); action_output( " recfm=fixed|variable|undefined for direction=send"); if (conf.recfm != DEFAULT_RECFM) { action_output( " default '%s'", ft_decode_recfm(conf.recfm)); } action_output( " lrecl= for direction=send"); if (conf.lrecl) { action_output( " default %d", conf.lrecl); } action_output( " blksize= for direction=send host=tso"); if (conf.blksize) { action_output( " default %d", conf.blksize); } action_output( " allocation=tracks|cylinders|avblock for direction=send host=tso"); if (conf.units != DEFAULT_UNITS) { action_output( " default '%s'", ft_decode_units(conf.units)); } action_output( " primaryspace= for direction=send host=tso"); if (conf.primary_space) { action_output( " default %d", conf.primary_space); } action_output( " secondaryspace= for direction=send host=tso"); if (conf.secondary_space) { action_output( " default %d", conf.secondary_space); } action_output( " avblock= for direction=send host=tso allocation=avblock"); if (conf.avblock) { action_output( " default %d", conf.avblock); } action_output( " buffersize= default %d", conf.dft_buffersize? conf.dft_buffersize: DFT_BUF); action_output( "Note that when you use = syntax, to embed a space in a value,\n\ you must quote the keyword, e.g.:\n\ Transfer(direction=send,localfile=/tmp/foo,\"hostfile=foo text a\",host=vm)"); if (conf.local_filename) { Free(conf.local_filename); } if (conf.host_filename) { Free(conf.host_filename); } } suite3270-4.1/Common/idle.c000066400000000000000000000211311413735575200153460ustar00rootroot00000000000000/* * Copyright (c) 1993-2009, 2014-2016, 2018-2019 Paul Mattes. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the names of Paul Mattes nor the names of his contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO * EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * idle.c * This module handles the idle command. */ #include "globals.h" #include #include "appres.h" #if defined(_WIN32) /*[*/ # include "unicodec.h" /* needed for ft.h */ #endif /*]*/ #include "ft.h" #include "host.h" #include "idle.h" #include "popups.h" #include "resources.h" #include "task.h" #include "trace.h" #include "utils.h" /* Macros. */ #define MSEC_PER_SEC 1000L #define IDLE_SEC 1L #define IDLE_MIN 60L #define IDLE_HR (60L * 60L) #define IDLE_MS (7L * IDLE_MIN * MSEC_PER_SEC) /* Globals. */ bool idle_changed = false; char *idle_command = NULL; char *idle_timeout_string = NULL; enum idle_enum idle_user_enabled = IDLE_DISABLED; /* Statics. */ static bool idle_enabled = false; /* validated and user-enabled */ static unsigned long idle_n = 0L; static unsigned long idle_multiplier = IDLE_SEC; static ioid_t idle_id; static unsigned long idle_ms; static bool idle_randomize = false; static bool idle_ticking = false; static void idle_in3270(bool in3270); static void push_idle(char *s); /** * Idle module registration. */ void idle_register(void) { /* Register for state changes. */ register_schange(ST_3270_MODE, idle_in3270); register_schange(ST_CONNECT, idle_in3270); } /* Initialization. */ void idle_init(void) { char *cmd, *tmo; char *error; /* Get values from resources. */ cmd = appres.idle_command; if (cmd != NULL) { while (isspace((int)*cmd)) { cmd++; } if (!*cmd) { cmd = NULL; } } idle_command = cmd? NewString(cmd): NULL; tmo = appres.idle_timeout; idle_timeout_string = tmo? NewString(tmo): NULL; if (appres.idle_command_enabled) { idle_user_enabled = IDLE_PERM; } else { idle_user_enabled = IDLE_DISABLED; } /* Validate. */ if (idle_user_enabled) { if (idle_command == NULL) { idle_user_enabled = IDLE_DISABLED; } else if (!validate_command(cmd, 0, &error)) { popup_an_error("Invalid %s:\n%s", ResIdleCommand, error); Free(error); idle_user_enabled = IDLE_DISABLED; } if (!process_idle_timeout_value(idle_timeout_string)) { idle_user_enabled = IDLE_DISABLED; } } /* Seed the random number generator (we seem to be the only user). */ #if defined(_WIN32) /*[*/ srand((unsigned int)time(NULL)); #else /*][*/ srandom(time(NULL)); #endif /*]*/ } /* * Process a timeout value: or ~?[0-9]+[HhMmSs] * Returns true for success, false for failure. * Sets idle_enabled, idle_ms and idle_randomize as side-effects. * * Returns true for success, false for failure. */ bool process_idle_timeout_value(const char *t) { const char *s = t; char *ptr; if (s == NULL || *s == '\0') { idle_ms = IDLE_MS; idle_randomize = true; idle_enabled = true; return true; } if (*s == '~') { idle_randomize = true; s++; } idle_n = strtoul(s, &ptr, 0); if (idle_n <= 0) { goto bad_idle; } switch (*ptr) { case 'H': case 'h': idle_multiplier = IDLE_HR; break; case 'M': case 'm': idle_multiplier = IDLE_MIN; break; case 'S': case 's': case '\0': idle_multiplier = IDLE_SEC; break; default: goto bad_idle; } idle_ms = idle_n * idle_multiplier * MSEC_PER_SEC; idle_enabled = true; return true; bad_idle: popup_an_error("Invalid idle timeout value '%s'", t); idle_ms = 0L; idle_randomize = false; return false; } /* Called when a host connects or disconnects. */ static void idle_in3270(bool in3270 _is_unused) { if (IN_3270) { reset_idle_timer(); } else { /* Not in 3270 mode any more, turn off the timeout. */ if (idle_ticking) { RemoveTimeOut(idle_id); idle_ticking = false; } /* If the user didn't want it to be permanent, disable it. */ if (idle_user_enabled != IDLE_PERM) { idle_user_enabled = IDLE_DISABLED; } } } /* * Idle timeout. */ static void idle_timeout(ioid_t id _is_unused) { vtrace("Idle timeout\n"); idle_ticking = false; if (ft_state != FT_NONE) { /* Should not happen, but just in case. */ vtrace("File transfer in progress, ignoring\n"); return; } else { push_idle(idle_command); } reset_idle_timer(); } /* * Reset (and re-enable) the idle timer. Called when the user presses a key or * clicks with the mouse. */ void reset_idle_timer(void) { if (idle_enabled) { unsigned long idle_ms_now; if (idle_ticking) { RemoveTimeOut(idle_id); idle_ticking = false; } idle_ms_now = idle_ms; if (idle_randomize) { idle_ms_now = idle_ms; #if defined(_WIN32) /*[*/ idle_ms_now -= rand() % (idle_ms / 10L); #else /*][*/ idle_ms_now -= random() % (idle_ms / 10L); #endif /*]*/ } #if defined(DEBUG_IDLE_TIMEOUT) /*[*/ vtrace("Setting idle timeout to %lu\n", idle_ms_now); #endif /*]*/ idle_id = AddTimeOut(idle_ms_now, idle_timeout); idle_ticking = true; } } /* * Cancel the idle timer. This is called when there is an error in * processing the idle command. */ void cancel_idle_timer(void) { if (idle_ticking) { RemoveTimeOut(idle_id); idle_ticking = false; } idle_enabled = false; } /* * Stop the idle timer when a file transfer starts. */ void idle_ft_start(void) { if (idle_ticking) { RemoveTimeOut(idle_id); idle_ticking = false; } } /* * Resume the idle timer when a file transfer completes. */ void idle_ft_complete(void) { if (idle_enabled) { reset_idle_timer(); } } char * get_idle_command(void) { return idle_command; } char * get_idle_timeout(void) { return idle_timeout_string; } /* Action support. */ static void idle_data(task_cbh handle, const char *buf, size_t len, bool success); static bool idle_done(task_cbh handle, bool success, bool abort); /* Callback block for actions. */ static tcb_t idle_cb = { "idle", IA_IDLE, CB_NEW_TASKQ, idle_data, idle_done, NULL }; static char *idle_result = NULL; /** * Callback for data returned to idle. * * @param[in] handle Callback handle * @param[in] buf Buffer * @param[in] len Buffer length * @param[in] success True if data, false if error message */ static void idle_data(task_cbh handle, const char *buf, size_t len, bool success) { if (handle != (tcb_t *)&idle_cb) { vtrace("idle_data: no match\n"); return; } Replace(idle_result, xs_buffer("%.*s", (int)len, buf)); } /** * Callback for completion of one command executed from an idle command . * * @param[in] handle Callback handle * @param[in] success True if child succeeded * @param[in] abort True if aborting * * @return True if context is complete */ static bool idle_done(task_cbh handle, bool success, bool abort) { if (handle != (tcb_t *)&idle_cb) { vtrace("idle_data: no match\n"); return true; } if (!success) { popup_an_error("Idle command failed%s%s", idle_result? ": ": "", idle_result? idle_result: ""); cancel_idle_timer(); } Replace(idle_result, NULL); return true; } /** * Push an idle command. * * @param[in] s Text of action. */ static void push_idle(char *s) { /* No result yet. */ Replace(idle_result, NULL); /* Push a callback with a macro. */ push_cb(s, strlen(s), &idle_cb, (task_cbh)&idle_cb); } suite3270-4.1/Common/idle_stubs.c000066400000000000000000000033031413735575200165670ustar00rootroot00000000000000/* * Copyright (c) 2002-2009, 2013-2015 Paul Mattes. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the names of Paul Mattes nor the names of his contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO * EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * idle_stubs.c * Stubs for idle.c. */ #include "globals.h" #include "idle.h" void cancel_idle_timer(void) { } void idle_init(void) { } void reset_idle_timer(void) { } suite3270-4.1/Common/indent_s.c000066400000000000000000000037521413735575200162450ustar00rootroot00000000000000/* * Copyright (c) 2017 Paul Mattes. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the names of Paul Mattes, Jeff Sparkes, GTRC nor the names of * their contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO * EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * indent_s.c * String indent function. */ #include "globals.h" #include "indent_s.h" #include "varbuf.h" /* Typedefs */ /* Statics */ /* Globals */ /* Indent a string for display. */ char * indent_s(const char *s) { varbuf_t v; char *newline; vb_init(&v); while ((newline = strchr(s, '\n')) != NULL) { vb_appendf(&v, " %.*s", (int)(newline + 1 - s), s); s = newline + 1; } vb_appendf(&v, " %s", s); return vb_consume(&v); } suite3270-4.1/Common/install-sh000077500000000000000000000127011413735575200162740ustar00rootroot00000000000000#!/usr/bin/env sh # # install - install a program, script, or datafile # This comes from X11R5 (mit/util/scripts/install.sh). # # Copyright 1991 by the Massachusetts Institute of Technology # # Permission to use, copy, modify, distribute, and sell this software and its # documentation for any purpose is hereby granted without fee, provided that # the above copyright notice appear in all copies and that both that # copyright notice and this permission notice appear in supporting # documentation, and that the name of M.I.T. not be used in advertising or # publicity pertaining to distribution of the software without specific, # written prior permission. M.I.T. makes no representations about the # suitability of this software for any purpose. It is provided "as is" # without express or implied warranty. # # Calling this script install-sh is preferred over install.sh, to prevent # `make' implicit rules from creating a file called install from it # when there is no Makefile. # # This script is compatible with the BSD install script, but was written # from scratch. It can only install one file at a time, a restriction # shared with many OS's install programs. # set DOITPROG to echo to test this script # Don't use :- since 4.3BSD and earlier shells don't like it. doit="${DOITPROG-}" # put in absolute paths if you don't have them in your path; or use env. vars. mvprog="${MVPROG-mv}" cpprog="${CPPROG-cp}" chmodprog="${CHMODPROG-chmod}" chownprog="${CHOWNPROG-chown}" chgrpprog="${CHGRPPROG-chgrp}" stripprog="${STRIPPROG-strip}" rmprog="${RMPROG-rm}" mkdirprog="${MKDIRPROG-mkdir}" transformbasename="" transform_arg="" instcmd="$mvprog" chmodcmd="$chmodprog 0755" chowncmd="" chgrpcmd="" stripcmd="" rmcmd="$rmprog -f" mvcmd="$mvprog" src="" dst="" dir_arg="" while [ x"$1" != x ]; do case $1 in -c) instcmd="$cpprog" shift continue;; -d) dir_arg=true shift continue;; -m) chmodcmd="$chmodprog $2" shift shift continue;; -o) chowncmd="$chownprog $2" shift shift continue;; -g) chgrpcmd="$chgrpprog $2" shift shift continue;; -s) stripcmd="$stripprog" shift continue;; -t=*) transformarg=`echo $1 | sed 's/-t=//'` shift continue;; -b=*) transformbasename=`echo $1 | sed 's/-b=//'` shift continue;; *) if [ x"$src" = x ] then src=$1 else # this colon is to work around a 386BSD /bin/sh bug : dst=$1 fi shift continue;; esac done if [ x"$src" = x ] then echo "install: no input file specified" exit 1 else : fi if [ x"$dir_arg" != x ]; then dst=$src src="" if [ -d $dst ]; then instcmd=: chmodcmd="" else instcmd=$mkdirprog fi else # Waiting for this to be detected by the "$instcmd $src $dsttmp" command # might cause directories to be created, which would be especially bad # if $src (and thus $dsttmp) contains '*'. if [ -f $src -o -d $src ] then : else echo "install: $src does not exist" exit 1 fi if [ x"$dst" = x ] then echo "install: no destination specified" exit 1 else : fi # If destination is a directory, append the input filename; if your system # does not like double slashes in filenames, you may need to add some logic if [ -d $dst ] then dst="$dst"/`basename $src` else : fi fi ## this sed command emulates the dirname command dstdir=`echo $dst | sed -e 's,[^/]*$,,;s,/$,,;s,^$,.,'` # Make sure that the destination directory exists. # this part is taken from Noah Friedman's mkinstalldirs script # Skip lots of stat calls in the usual case. if [ ! -d "$dstdir" ]; then defaultIFS=' ' IFS="${IFS-${defaultIFS}}" oIFS="${IFS}" # Some sh's can't handle IFS=/ for some reason. IFS='%' set - `echo ${dstdir} | sed -e 's@/@%@g' -e 's@^%@/@'` IFS="${oIFS}" pathcomp='' while [ $# -ne 0 ] ; do pathcomp="${pathcomp}${1}" shift if [ ! -d "${pathcomp}" ] ; then $mkdirprog "${pathcomp}" else : fi pathcomp="${pathcomp}/" done fi if [ x"$dir_arg" != x ] then $doit $instcmd $dst && if [ x"$chowncmd" != x ]; then $doit $chowncmd $dst; else : ; fi && if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd $dst; else : ; fi && if [ x"$stripcmd" != x ]; then $doit $stripcmd $dst; else : ; fi && if [ x"$chmodcmd" != x ]; then $doit $chmodcmd $dst; else : ; fi else # If we're going to rename the final executable, determine the name now. if [ x"$transformarg" = x ] then dstfile=`basename $dst` else dstfile=`basename $dst $transformbasename | sed $transformarg`$transformbasename fi # don't allow the sed command to completely eliminate the filename if [ x"$dstfile" = x ] then dstfile=`basename $dst` else : fi # Make a temp file name in the proper directory. dsttmp=$dstdir/#inst.$$# # Move or copy the file name to the temp name $doit $instcmd $src $dsttmp && trap "rm -f ${dsttmp}" 0 && # and set any options; do chmod last to preserve setuid bits # If any of these fail, we abort the whole thing. If we want to # ignore errors from any of these, just make sure not to ignore # errors from the above "$doit $instcmd $src $dsttmp" command. if [ x"$chowncmd" != x ]; then $doit $chowncmd $dsttmp; else :;fi && if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd $dsttmp; else :;fi && if [ x"$stripcmd" != x ]; then $doit $stripcmd $dsttmp; else :;fi && if [ x"$chmodcmd" != x ]; then $doit $chmodcmd $dsttmp; else :;fi && # Now rename the file to the real destination. $doit $rmcmd -f $dstdir/$dstfile && $doit $mvcmd $dsttmp $dstdir/$dstfile fi && exit 0 suite3270-4.1/Common/jisx-201.ucm000066400000000000000000000163171413735575200162620ustar00rootroot00000000000000# ******************************************************************************* # * # * Copyright (C) 1997-2001, International Business Machines # * Corporation and others. All Rights Reserved. # * # ******************************************************************************* # # Name: JIS X 0201 to Unicode # Unicode version: 1.1 # Table version: 0.9 # # Authors: Raghuram Viswanadha # Date: 8/20/2000 # General Notes: # This file is created from JISX 208 # mapping table from Unicode Consortium # (www.unicode.org). # Original authors: # Glenn Adams # John H. Jenkins # # "JISX-201" "AXXXX" 1 1 "SBCS" \x3F # CHARMAP # # #10646 JISX201 #______ _____ \x20 #|0 SPACE \x21 #|0 EXCLAMATION MARK \x22 #|0 QUOTATION MARK \x23 #|0 NUMBER SIGN \x24 #|0 DOLLAR SIGN \x25 #|0 PERCENT SIGN \x26 #|0 AMPERSAND \x27 #|0 APOSTROPHE \x28 #|0 LEFT PARENTHESIS \x29 #|0 RIGHT PARENTHESIS \x2A #|0 ASTERISK \x2B #|0 PLUS SIGN \x2C #|0 COMMA \x2D #|0 HYPHEN-MINUS \x2E #|0 FULL STOP \x2F #|0 SOLIDUS \x30 #|0 DIGIT ZERO \x31 #|0 DIGIT ONE \x32 #|0 DIGIT TWO \x33 #|0 DIGIT THREE \x34 #|0 DIGIT FOUR \x35 #|0 DIGIT FIVE \x36 #|0 DIGIT SIX \x37 #|0 DIGIT SEVEN \x38 #|0 DIGIT EIGHT \x39 #|0 DIGIT NINE \x3A #|0 COLON \x3B #|0 SEMICOLON \x3C #|0 LESS-THAN SIGN \x3D #|0 EQUALS SIGN \x3E #|0 GREATER-THAN SIGN \x3F #|0 QUESTION MARK \x40 #|0 COMMERCIAL AT \x41 #|0 LATIN CAPITAL LETTER A \x42 #|0 LATIN CAPITAL LETTER B \x43 #|0 LATIN CAPITAL LETTER C \x44 #|0 LATIN CAPITAL LETTER D \x45 #|0 LATIN CAPITAL LETTER E \x46 #|0 LATIN CAPITAL LETTER F \x47 #|0 LATIN CAPITAL LETTER G \x48 #|0 LATIN CAPITAL LETTER H \x49 #|0 LATIN CAPITAL LETTER I \x4A #|0 LATIN CAPITAL LETTER J \x4B #|0 LATIN CAPITAL LETTER K \x4C #|0 LATIN CAPITAL LETTER L \x4D #|0 LATIN CAPITAL LETTER M \x4E #|0 LATIN CAPITAL LETTER N \x4F #|0 LATIN CAPITAL LETTER O \x50 #|0 LATIN CAPITAL LETTER P \x51 #|0 LATIN CAPITAL LETTER Q \x52 #|0 LATIN CAPITAL LETTER R \x53 #|0 LATIN CAPITAL LETTER S \x54 #|0 LATIN CAPITAL LETTER T \x55 #|0 LATIN CAPITAL LETTER U \x56 #|0 LATIN CAPITAL LETTER V \x57 #|0 LATIN CAPITAL LETTER W \x58 #|0 LATIN CAPITAL LETTER X \x59 #|0 LATIN CAPITAL LETTER Y \x5A #|0 LATIN CAPITAL LETTER Z \x5B #|0 LEFT SQUARE BRACKET \x5C #|0 YEN SIGN \x5D #|0 RIGHT SQUARE BRACKET \x5E #|0 CIRCUMFLEX ACCENT \x5F #|0 LOW LINE \x60 #|0 GRAVE ACCENT \x61 #|0 LATIN SMALL LETTER A \x62 #|0 LATIN SMALL LETTER B \x63 #|0 LATIN SMALL LETTER C \x64 #|0 LATIN SMALL LETTER D \x65 #|0 LATIN SMALL LETTER E \x66 #|0 LATIN SMALL LETTER F \x67 #|0 LATIN SMALL LETTER G \x68 #|0 LATIN SMALL LETTER H \x69 #|0 LATIN SMALL LETTER I \x6A #|0 LATIN SMALL LETTER J \x6B #|0 LATIN SMALL LETTER K \x6C #|0 LATIN SMALL LETTER L \x6D #|0 LATIN SMALL LETTER M \x6E #|0 LATIN SMALL LETTER N \x6F #|0 LATIN SMALL LETTER O \x70 #|0 LATIN SMALL LETTER P \x71 #|0 LATIN SMALL LETTER Q \x72 #|0 LATIN SMALL LETTER R \x73 #|0 LATIN SMALL LETTER S \x74 #|0 LATIN SMALL LETTER T \x75 #|0 LATIN SMALL LETTER U \x76 #|0 LATIN SMALL LETTER V \x77 #|0 LATIN SMALL LETTER W \x78 #|0 LATIN SMALL LETTER X \x79 #|0 LATIN SMALL LETTER Y \x7A #|0 LATIN SMALL LETTER Z \x7B #|0 LEFT CURLY BRACKET \x7C #|0 VERTICAL LINE \x7D #|0 RIGHT CURLY BRACKET \x7E #|0 OVERLINE \xA1 #|0 HALFWIDTH IDEOGRAPHIC FULL STOP \xA2 #|0 HALFWIDTH LEFT CORNER BRACKET \xA3 #|0 HALFWIDTH RIGHT CORNER BRACKET \xA4 #|0 HALFWIDTH IDEOGRAPHIC COMMA \xA5 #|0 HALFWIDTH KATAKANA MIDDLE DOT \xA6 #|0 HALFWIDTH KATAKANA LETTER WO \xA7 #|0 HALFWIDTH KATAKANA LETTER SMALL A \xA8 #|0 HALFWIDTH KATAKANA LETTER SMALL I \xA9 #|0 HALFWIDTH KATAKANA LETTER SMALL U \xAA #|0 HALFWIDTH KATAKANA LETTER SMALL E \xAB #|0 HALFWIDTH KATAKANA LETTER SMALL O \xAC #|0 HALFWIDTH KATAKANA LETTER SMALL YA \xAD #|0 HALFWIDTH KATAKANA LETTER SMALL YU \xAE #|0 HALFWIDTH KATAKANA LETTER SMALL YO \xAF #|0 HALFWIDTH KATAKANA LETTER SMALL TU \xB0 #|0 HALFWIDTH KATAKANA-HIRAGANA PROLONGED SOUND MARK \xB1 #|0 HALFWIDTH KATAKANA LETTER A \xB2 #|0 HALFWIDTH KATAKANA LETTER I \xB3 #|0 HALFWIDTH KATAKANA LETTER U \xB4 #|0 HALFWIDTH KATAKANA LETTER E \xB5 #|0 HALFWIDTH KATAKANA LETTER O \xB6 #|0 HALFWIDTH KATAKANA LETTER KA \xB7 #|0 HALFWIDTH KATAKANA LETTER KI \xB8 #|0 HALFWIDTH KATAKANA LETTER KU \xB9 #|0 HALFWIDTH KATAKANA LETTER KE \xBA #|0 HALFWIDTH KATAKANA LETTER KO \xBB #|0 HALFWIDTH KATAKANA LETTER SA \xBC #|0 HALFWIDTH KATAKANA LETTER SI \xBD #|0 HALFWIDTH KATAKANA LETTER SU \xBE #|0 HALFWIDTH KATAKANA LETTER SE \xBF #|0 HALFWIDTH KATAKANA LETTER SO \xC0 #|0 HALFWIDTH KATAKANA LETTER TA \xC1 #|0 HALFWIDTH KATAKANA LETTER TI \xC2 #|0 HALFWIDTH KATAKANA LETTER TU \xC3 #|0 HALFWIDTH KATAKANA LETTER TE \xC4 #|0 HALFWIDTH KATAKANA LETTER TO \xC5 #|0 HALFWIDTH KATAKANA LETTER NA \xC6 #|0 HALFWIDTH KATAKANA LETTER NI \xC7 #|0 HALFWIDTH KATAKANA LETTER NU \xC8 #|0 HALFWIDTH KATAKANA LETTER NE \xC9 #|0 HALFWIDTH KATAKANA LETTER NO \xCA #|0 HALFWIDTH KATAKANA LETTER HA \xCB #|0 HALFWIDTH KATAKANA LETTER HI \xCC #|0 HALFWIDTH KATAKANA LETTER HU \xCD #|0 HALFWIDTH KATAKANA LETTER HE \xCE #|0 HALFWIDTH KATAKANA LETTER HO \xCF #|0 HALFWIDTH KATAKANA LETTER MA \xD0 #|0 HALFWIDTH KATAKANA LETTER MI \xD1 #|0 HALFWIDTH KATAKANA LETTER MU \xD2 #|0 HALFWIDTH KATAKANA LETTER ME \xD3 #|0 HALFWIDTH KATAKANA LETTER MO \xD4 #|0 HALFWIDTH KATAKANA LETTER YA \xD5 #|0 HALFWIDTH KATAKANA LETTER YU \xD6 #|0 HALFWIDTH KATAKANA LETTER YO \xD7 #|0 HALFWIDTH KATAKANA LETTER RA \xD8 #|0 HALFWIDTH KATAKANA LETTER RI \xD9 #|0 HALFWIDTH KATAKANA LETTER RU \xDA #|0 HALFWIDTH KATAKANA LETTER RE \xDB #|0 HALFWIDTH KATAKANA LETTER RO \xDC #|0 HALFWIDTH KATAKANA LETTER WA \xDD #|0 HALFWIDTH KATAKANA LETTER N \xDE #|0 HALFWIDTH KATAKANA VOICED SOUND MARK \xDF #|0 HALFWIDTH KATAKANA SEMI-VOICED SOUND MARK # END CHARMAP # #________________________________________________________________________ suite3270-4.1/Common/jisx-208.ucm000066400000000000000000006047611413735575200162770ustar00rootroot00000000000000# ******************************************************************************* # * # * Copyright (C) 1997-2001, International Business Machines # * Corporation and others. All Rights Reserved. # * # ******************************************************************************* # # Name: JIS X 0208 (1990) to Unicode # Unicode version: 1.1 # Table version: 0.9 # # Authors: Raghuram Viswanadha # Date: 8/20/2000 # General Notes: # This file is created from JISX 208 # mapping table from Unicode Consortium # (www.unicode.org). # Original authors: # Glenn Adams # John H. Jenkins # # "JISX-208" "AXXXX" 2 2 "MBCS" 0-20:2, 21-7e:1, 7f-ff:2 21-7e \x7e\x7e # CHARMAP # # #10646 JISX208 #______ _________ \x21\x21 #|0 IDEOGRAPHIC SPACE \x21\x22 #|0 IDEOGRAPHIC COMMA \x21\x23 #|0 IDEOGRAPHIC FULL STOP \x21\x24 #|0 FULLWIDTH COMMA \x21\x25 #|0 FULLWIDTH FULL STOP \x21\x26 #|0 KATAKANA MIDDLE DOT \x21\x27 #|0 FULLWIDTH COLON \x21\x28 #|0 FULLWIDTH SEMICOLON \x21\x29 #|0 FULLWIDTH QUESTION MARK \x21\x2A #|0 FULLWIDTH EXCLAMATION MARK \x21\x2B #|0 KATAKANA-HIRAGANA VOICED SOUND MARK \x21\x2C #|0 KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK \x21\x2D #|0 ACUTE ACCENT \x21\x2E #|0 FULLWIDTH GRAVE ACCENT \x21\x2F #|0 DIAERESIS \x21\x30 #|0 FULLWIDTH CIRCUMFLEX ACCENT \x21\x31 #|0 FULLWIDTH MACRON \x21\x32 #|0 FULLWIDTH LOW LINE \x21\x33 #|0 KATAKANA ITERATION MARK \x21\x34 #|0 KATAKANA VOICED ITERATION MARK \x21\x35 #|0 HIRAGANA ITERATION MARK \x21\x36 #|0 HIRAGANA VOICED ITERATION MARK \x21\x37 #|0 DITTO MARK \x21\x38 #|0 \x21\x39 #|0 IDEOGRAPHIC ITERATION MARK \x21\x3A #|0 IDEOGRAPHIC CLOSING MARK \x21\x3B #|0 IDEOGRAPHIC NUMBER ZERO \x21\x3C #|0 KATAKANA-HIRAGANA PROLONGED SOUND MARK \x21\x3D #|0 HORIZONTAL BAR \x21\x3E #|0 HYPHEN \x21\x3F #|0 FULLWIDTH SOLIDUS \x21\x40 #|0 REVERSE SOLIDUS \x21\x41 #|0 WAVE DASH \x21\x42 #|0 DOUBLE VERTICAL LINE \x21\x43 #|0 FULLWIDTH VERTICAL LINE \x21\x44 #|0 HORIZONTAL ELLIPSIS \x21\x45 #|0 TWO DOT LEADER \x21\x46 #|0 LEFT SINGLE QUOTATION MARK \x21\x47 #|0 RIGHT SINGLE QUOTATION MARK \x21\x48 #|0 LEFT DOUBLE QUOTATION MARK \x21\x49 #|0 RIGHT DOUBLE QUOTATION MARK \x21\x4A #|0 FULLWIDTH LEFT PARENTHESIS \x21\x4B #|0 FULLWIDTH RIGHT PARENTHESIS \x21\x4C #|0 LEFT TORTOISE SHELL BRACKET \x21\x4D #|0 RIGHT TORTOISE SHELL BRACKET \x21\x4E #|0 FULLWIDTH LEFT SQUARE BRACKET \x21\x4F #|0 FULLWIDTH RIGHT SQUARE BRACKET \x21\x50 #|0 FULLWIDTH LEFT CURLY BRACKET \x21\x51 #|0 FULLWIDTH RIGHT CURLY BRACKET \x21\x52 #|0 LEFT ANGLE BRACKET \x21\x53 #|0 RIGHT ANGLE BRACKET \x21\x54 #|0 LEFT DOUBLE ANGLE BRACKET \x21\x55 #|0 RIGHT DOUBLE ANGLE BRACKET \x21\x56 #|0 LEFT CORNER BRACKET \x21\x57 #|0 RIGHT CORNER BRACKET \x21\x58 #|0 LEFT WHITE CORNER BRACKET \x21\x59 #|0 RIGHT WHITE CORNER BRACKET \x21\x5A #|0 LEFT BLACK LENTICULAR BRACKET \x21\x5B #|0 RIGHT BLACK LENTICULAR BRACKET \x21\x5C #|0 FULLWIDTH PLUS SIGN \x21\x5D #|0 MINUS SIGN \x21\x5E #|0 PLUS-MINUS SIGN \x21\x5F #|0 MULTIPLICATION SIGN \x21\x60 #|0 DIVISION SIGN \x21\x61 #|0 FULLWIDTH EQUALS SIGN \x21\x62 #|0 NOT EQUAL TO \x21\x63 #|0 FULLWIDTH LESS-THAN SIGN \x21\x64 #|0 FULLWIDTH GREATER-THAN SIGN \x21\x65 #|0 LESS-THAN OVER EQUAL TO \x21\x66 #|0 GREATER-THAN OVER EQUAL TO \x21\x67 #|0 INFINITY \x21\x68 #|0 THEREFORE \x21\x69 #|0 MALE SIGN \x21\x6A #|0 FEMALE SIGN \x21\x6B #|0 DEGREE SIGN \x21\x6C #|0 PRIME \x21\x6D #|0 DOUBLE PRIME \x21\x6E #|0 DEGREE CELSIUS \x21\x6F #|0 FULLWIDTH YEN SIGN \x21\x70 #|0 FULLWIDTH DOLLAR SIGN \x21\x71 #|0 CENT SIGN \x21\x72 #|0 POUND SIGN \x21\x73 #|0 FULLWIDTH PERCENT SIGN \x21\x74 #|0 FULLWIDTH NUMBER SIGN \x21\x75 #|0 FULLWIDTH AMPERSAND \x21\x76 #|0 FULLWIDTH ASTERISK \x21\x77 #|0 FULLWIDTH COMMERCIAL AT \x21\x78 #|0 SECTION SIGN \x21\x79 #|0 WHITE STAR \x21\x7A #|0 BLACK STAR \x21\x7B #|0 WHITE CIRCLE \x21\x7C #|0 BLACK CIRCLE \x21\x7D #|0 BULLSEYE \x21\x7E #|0 WHITE DIAMOND \x22\x21 #|0 BLACK DIAMOND \x22\x22 #|0 WHITE SQUARE \x22\x23 #|0 BLACK SQUARE \x22\x24 #|0 WHITE UP-POINTING TRIANGLE \x22\x25 #|0 BLACK UP-POINTING TRIANGLE \x22\x26 #|0 WHITE DOWN-POINTING TRIANGLE \x22\x27 #|0 BLACK DOWN-POINTING TRIANGLE \x22\x28 #|0 REFERENCE MARK \x22\x29 #|0 POSTAL MARK \x22\x2A #|0 RIGHTWARDS ARROW \x22\x2B #|0 LEFTWARDS ARROW \x22\x2C #|0 UPWARDS ARROW \x22\x2D #|0 DOWNWARDS ARROW \x22\x2E #|0 GETA MARK \x22\x3A #|0 ELEMENT OF \x22\x3B #|0 CONTAINS AS MEMBER \x22\x3C #|0 SUBSET OF OR EQUAL TO \x22\x3D #|0 SUPERSET OF OR EQUAL TO \x22\x3E #|0 SUBSET OF \x22\x3F #|0 SUPERSET OF \x22\x40 #|0 UNION \x22\x41 #|0 INTERSECTION \x22\x4A #|0 LOGICAL AND \x22\x4B #|0 LOGICAL OR \x22\x4C #|0 NOT SIGN \x22\x4D #|0 RIGHTWARDS DOUBLE ARROW \x22\x4E #|0 LEFT RIGHT DOUBLE ARROW \x22\x4F #|0 FOR ALL \x22\x50 #|0 THERE EXISTS \x22\x5C #|0 ANGLE \x22\x5D #|0 UP TACK \x22\x5E #|0 ARC \x22\x5F #|0 PARTIAL DIFFERENTIAL \x22\x60 #|0 NABLA \x22\x61 #|0 IDENTICAL TO \x22\x62 #|0 APPROXIMATELY EQUAL TO OR THE IMAGE OF \x22\x63 #|0 MUCH LESS-THAN \x22\x64 #|0 MUCH GREATER-THAN \x22\x65 #|0 SQUARE ROOT \x22\x66 #|0 REVERSED TILDE \x22\x67 #|0 PROPORTIONAL TO \x22\x68 #|0 BECAUSE \x22\x69 #|0 INTEGRAL \x22\x6A #|0 DOUBLE INTEGRAL \x22\x72 #|0 ANGSTROM SIGN \x22\x73 #|0 PER MILLE SIGN \x22\x74 #|0 MUSIC SHARP SIGN \x22\x75 #|0 MUSIC FLAT SIGN \x22\x76 #|0 EIGHTH NOTE \x22\x77 #|0 DAGGER \x22\x78 #|0 DOUBLE DAGGER \x22\x79 #|0 PILCROW SIGN \x22\x7E #|0 LARGE CIRCLE \x23\x30 #|0 FULLWIDTH DIGIT ZERO \x23\x31 #|0 FULLWIDTH DIGIT ONE \x23\x32 #|0 FULLWIDTH DIGIT TWO \x23\x33 #|0 FULLWIDTH DIGIT THREE \x23\x34 #|0 FULLWIDTH DIGIT FOUR \x23\x35 #|0 FULLWIDTH DIGIT FIVE \x23\x36 #|0 FULLWIDTH DIGIT SIX \x23\x37 #|0 FULLWIDTH DIGIT SEVEN \x23\x38 #|0 FULLWIDTH DIGIT EIGHT \x23\x39 #|0 FULLWIDTH DIGIT NINE \x23\x41 #|0 FULLWIDTH LATIN CAPITAL LETTER A \x23\x42 #|0 FULLWIDTH LATIN CAPITAL LETTER B \x23\x43 #|0 FULLWIDTH LATIN CAPITAL LETTER C \x23\x44 #|0 FULLWIDTH LATIN CAPITAL LETTER D \x23\x45 #|0 FULLWIDTH LATIN CAPITAL LETTER E \x23\x46 #|0 FULLWIDTH LATIN CAPITAL LETTER F \x23\x47 #|0 FULLWIDTH LATIN CAPITAL LETTER G \x23\x48 #|0 FULLWIDTH LATIN CAPITAL LETTER H \x23\x49 #|0 FULLWIDTH LATIN CAPITAL LETTER I \x23\x4A #|0 FULLWIDTH LATIN CAPITAL LETTER J \x23\x4B #|0 FULLWIDTH LATIN CAPITAL LETTER K \x23\x4C #|0 FULLWIDTH LATIN CAPITAL LETTER L \x23\x4D #|0 FULLWIDTH LATIN CAPITAL LETTER M \x23\x4E #|0 FULLWIDTH LATIN CAPITAL LETTER N \x23\x4F #|0 FULLWIDTH LATIN CAPITAL LETTER O \x23\x50 #|0 FULLWIDTH LATIN CAPITAL LETTER P \x23\x51 #|0 FULLWIDTH LATIN CAPITAL LETTER Q \x23\x52 #|0 FULLWIDTH LATIN CAPITAL LETTER R \x23\x53 #|0 FULLWIDTH LATIN CAPITAL LETTER S \x23\x54 #|0 FULLWIDTH LATIN CAPITAL LETTER T \x23\x55 #|0 FULLWIDTH LATIN CAPITAL LETTER U \x23\x56 #|0 FULLWIDTH LATIN CAPITAL LETTER V \x23\x57 #|0 FULLWIDTH LATIN CAPITAL LETTER W \x23\x58 #|0 FULLWIDTH LATIN CAPITAL LETTER X \x23\x59 #|0 FULLWIDTH LATIN CAPITAL LETTER Y \x23\x5A #|0 FULLWIDTH LATIN CAPITAL LETTER Z \x23\x61 #|0 FULLWIDTH LATIN SMALL LETTER A \x23\x62 #|0 FULLWIDTH LATIN SMALL LETTER B \x23\x63 #|0 FULLWIDTH LATIN SMALL LETTER C \x23\x64 #|0 FULLWIDTH LATIN SMALL LETTER D \x23\x65 #|0 FULLWIDTH LATIN SMALL LETTER E \x23\x66 #|0 FULLWIDTH LATIN SMALL LETTER F \x23\x67 #|0 FULLWIDTH LATIN SMALL LETTER G \x23\x68 #|0 FULLWIDTH LATIN SMALL LETTER H \x23\x69 #|0 FULLWIDTH LATIN SMALL LETTER I \x23\x6A #|0 FULLWIDTH LATIN SMALL LETTER J \x23\x6B #|0 FULLWIDTH LATIN SMALL LETTER K \x23\x6C #|0 FULLWIDTH LATIN SMALL LETTER L \x23\x6D #|0 FULLWIDTH LATIN SMALL LETTER M \x23\x6E #|0 FULLWIDTH LATIN SMALL LETTER N \x23\x6F #|0 FULLWIDTH LATIN SMALL LETTER O \x23\x70 #|0 FULLWIDTH LATIN SMALL LETTER P \x23\x71 #|0 FULLWIDTH LATIN SMALL LETTER Q \x23\x72 #|0 FULLWIDTH LATIN SMALL LETTER R \x23\x73 #|0 FULLWIDTH LATIN SMALL LETTER S \x23\x74 #|0 FULLWIDTH LATIN SMALL LETTER T \x23\x75 #|0 FULLWIDTH LATIN SMALL LETTER U \x23\x76 #|0 FULLWIDTH LATIN SMALL LETTER V \x23\x77 #|0 FULLWIDTH LATIN SMALL LETTER W \x23\x78 #|0 FULLWIDTH LATIN SMALL LETTER X \x23\x79 #|0 FULLWIDTH LATIN SMALL LETTER Y \x23\x7A #|0 FULLWIDTH LATIN SMALL LETTER Z \x24\x21 #|0 HIRAGANA LETTER SMALL A \x24\x22 #|0 HIRAGANA LETTER A \x24\x23 #|0 HIRAGANA LETTER SMALL I \x24\x24 #|0 HIRAGANA LETTER I \x24\x25 #|0 HIRAGANA LETTER SMALL U \x24\x26 #|0 HIRAGANA LETTER U \x24\x27 #|0 HIRAGANA LETTER SMALL E \x24\x28 #|0 HIRAGANA LETTER E \x24\x29 #|0 HIRAGANA LETTER SMALL O \x24\x2A #|0 HIRAGANA LETTER O \x24\x2B #|0 HIRAGANA LETTER KA \x24\x2C #|0 HIRAGANA LETTER GA \x24\x2D #|0 HIRAGANA LETTER KI \x24\x2E #|0 HIRAGANA LETTER GI \x24\x2F #|0 HIRAGANA LETTER KU \x24\x30 #|0 HIRAGANA LETTER GU \x24\x31 #|0 HIRAGANA LETTER KE \x24\x32 #|0 HIRAGANA LETTER GE \x24\x33 #|0 HIRAGANA LETTER KO \x24\x34 #|0 HIRAGANA LETTER GO \x24\x35 #|0 HIRAGANA LETTER SA \x24\x36 #|0 HIRAGANA LETTER ZA \x24\x37 #|0 HIRAGANA LETTER SI \x24\x38 #|0 HIRAGANA LETTER ZI \x24\x39 #|0 HIRAGANA LETTER SU \x24\x3A #|0 HIRAGANA LETTER ZU \x24\x3B #|0 HIRAGANA LETTER SE \x24\x3C #|0 HIRAGANA LETTER ZE \x24\x3D #|0 HIRAGANA LETTER SO \x24\x3E #|0 HIRAGANA LETTER ZO \x24\x3F #|0 HIRAGANA LETTER TA \x24\x40 #|0 HIRAGANA LETTER DA \x24\x41 #|0 HIRAGANA LETTER TI \x24\x42 #|0 HIRAGANA LETTER DI \x24\x43 #|0 HIRAGANA LETTER SMALL TU \x24\x44 #|0 HIRAGANA LETTER TU \x24\x45 #|0 HIRAGANA LETTER DU \x24\x46 #|0 HIRAGANA LETTER TE \x24\x47 #|0 HIRAGANA LETTER DE \x24\x48 #|0 HIRAGANA LETTER TO \x24\x49 #|0 HIRAGANA LETTER DO \x24\x4A #|0 HIRAGANA LETTER NA \x24\x4B #|0 HIRAGANA LETTER NI \x24\x4C #|0 HIRAGANA LETTER NU \x24\x4D #|0 HIRAGANA LETTER NE \x24\x4E #|0 HIRAGANA LETTER NO \x24\x4F #|0 HIRAGANA LETTER HA \x24\x50 #|0 HIRAGANA LETTER BA \x24\x51 #|0 HIRAGANA LETTER PA \x24\x52 #|0 HIRAGANA LETTER HI \x24\x53 #|0 HIRAGANA LETTER BI \x24\x54 #|0 HIRAGANA LETTER PI \x24\x55 #|0 HIRAGANA LETTER HU \x24\x56 #|0 HIRAGANA LETTER BU \x24\x57 #|0 HIRAGANA LETTER PU \x24\x58 #|0 HIRAGANA LETTER HE \x24\x59 #|0 HIRAGANA LETTER BE \x24\x5A #|0 HIRAGANA LETTER PE \x24\x5B #|0 HIRAGANA LETTER HO \x24\x5C #|0 HIRAGANA LETTER BO \x24\x5D #|0 HIRAGANA LETTER PO \x24\x5E #|0 HIRAGANA LETTER MA \x24\x5F #|0 HIRAGANA LETTER MI \x24\x60 #|0 HIRAGANA LETTER MU \x24\x61 #|0 HIRAGANA LETTER ME \x24\x62 #|0 HIRAGANA LETTER MO \x24\x63 #|0 HIRAGANA LETTER SMALL YA \x24\x64 #|0 HIRAGANA LETTER YA \x24\x65 #|0 HIRAGANA LETTER SMALL YU \x24\x66 #|0 HIRAGANA LETTER YU \x24\x67 #|0 HIRAGANA LETTER SMALL YO \x24\x68 #|0 HIRAGANA LETTER YO \x24\x69 #|0 HIRAGANA LETTER RA \x24\x6A #|0 HIRAGANA LETTER RI \x24\x6B #|0 HIRAGANA LETTER RU \x24\x6C #|0 HIRAGANA LETTER RE \x24\x6D #|0 HIRAGANA LETTER RO \x24\x6E #|0 HIRAGANA LETTER SMALL WA \x24\x6F #|0 HIRAGANA LETTER WA \x24\x70 #|0 HIRAGANA LETTER WI \x24\x71 #|0 HIRAGANA LETTER WE \x24\x72 #|0 HIRAGANA LETTER WO \x24\x73 #|0 HIRAGANA LETTER N \x25\x21 #|0 KATAKANA LETTER SMALL A \x25\x22 #|0 KATAKANA LETTER A \x25\x23 #|0 KATAKANA LETTER SMALL I \x25\x24 #|0 KATAKANA LETTER I \x25\x25 #|0 KATAKANA LETTER SMALL U \x25\x26 #|0 KATAKANA LETTER U \x25\x27 #|0 KATAKANA LETTER SMALL E \x25\x28 #|0 KATAKANA LETTER E \x25\x29 #|0 KATAKANA LETTER SMALL O \x25\x2A #|0 KATAKANA LETTER O \x25\x2B #|0 KATAKANA LETTER KA \x25\x2C #|0 KATAKANA LETTER GA \x25\x2D #|0 KATAKANA LETTER KI \x25\x2E #|0 KATAKANA LETTER GI \x25\x2F #|0 KATAKANA LETTER KU \x25\x30 #|0 KATAKANA LETTER GU \x25\x31 #|0 KATAKANA LETTER KE \x25\x32 #|0 KATAKANA LETTER GE \x25\x33 #|0 KATAKANA LETTER KO \x25\x34 #|0 KATAKANA LETTER GO \x25\x35 #|0 KATAKANA LETTER SA \x25\x36 #|0 KATAKANA LETTER ZA \x25\x37 #|0 KATAKANA LETTER SI \x25\x38 #|0 KATAKANA LETTER ZI \x25\x39 #|0 KATAKANA LETTER SU \x25\x3A #|0 KATAKANA LETTER ZU \x25\x3B #|0 KATAKANA LETTER SE \x25\x3C #|0 KATAKANA LETTER ZE \x25\x3D #|0 KATAKANA LETTER SO \x25\x3E #|0 KATAKANA LETTER ZO \x25\x3F #|0 KATAKANA LETTER TA \x25\x40 #|0 KATAKANA LETTER DA \x25\x41 #|0 KATAKANA LETTER TI \x25\x42 #|0 KATAKANA LETTER DI \x25\x43 #|0 KATAKANA LETTER SMALL TU \x25\x44 #|0 KATAKANA LETTER TU \x25\x45 #|0 KATAKANA LETTER DU \x25\x46 #|0 KATAKANA LETTER TE \x25\x47 #|0 KATAKANA LETTER DE \x25\x48 #|0 KATAKANA LETTER TO \x25\x49 #|0 KATAKANA LETTER DO \x25\x4A #|0 KATAKANA LETTER NA \x25\x4B #|0 KATAKANA LETTER NI \x25\x4C #|0 KATAKANA LETTER NU \x25\x4D #|0 KATAKANA LETTER NE \x25\x4E #|0 KATAKANA LETTER NO \x25\x4F #|0 KATAKANA LETTER HA \x25\x50 #|0 KATAKANA LETTER BA \x25\x51 #|0 KATAKANA LETTER PA \x25\x52 #|0 KATAKANA LETTER HI \x25\x53 #|0 KATAKANA LETTER BI \x25\x54 #|0 KATAKANA LETTER PI \x25\x55 #|0 KATAKANA LETTER HU \x25\x56 #|0 KATAKANA LETTER BU \x25\x57 #|0 KATAKANA LETTER PU \x25\x58 #|0 KATAKANA LETTER HE \x25\x59 #|0 KATAKANA LETTER BE \x25\x5A #|0 KATAKANA LETTER PE \x25\x5B #|0 KATAKANA LETTER HO \x25\x5C #|0 KATAKANA LETTER BO \x25\x5D #|0 KATAKANA LETTER PO \x25\x5E #|0 KATAKANA LETTER MA \x25\x5F #|0 KATAKANA LETTER MI \x25\x60 #|0 KATAKANA LETTER MU \x25\x61 #|0 KATAKANA LETTER ME \x25\x62 #|0 KATAKANA LETTER MO \x25\x63 #|0 KATAKANA LETTER SMALL YA \x25\x64 #|0 KATAKANA LETTER YA \x25\x65 #|0 KATAKANA LETTER SMALL YU \x25\x66 #|0 KATAKANA LETTER YU \x25\x67 #|0 KATAKANA LETTER SMALL YO \x25\x68 #|0 KATAKANA LETTER YO \x25\x69 #|0 KATAKANA LETTER RA \x25\x6A #|0 KATAKANA LETTER RI \x25\x6B #|0 KATAKANA LETTER RU \x25\x6C #|0 KATAKANA LETTER RE \x25\x6D #|0 KATAKANA LETTER RO \x25\x6E #|0 KATAKANA LETTER SMALL WA \x25\x6F #|0 KATAKANA LETTER WA \x25\x70 #|0 KATAKANA LETTER WI \x25\x71 #|0 KATAKANA LETTER WE \x25\x72 #|0 KATAKANA LETTER WO \x25\x73 #|0 KATAKANA LETTER N \x25\x74 #|0 KATAKANA LETTER VU \x25\x75 #|0 KATAKANA LETTER SMALL KA \x25\x76 #|0 KATAKANA LETTER SMALL KE \x26\x21 #|0 GREEK CAPITAL LETTER ALPHA \x26\x22 #|0 GREEK CAPITAL LETTER BETA \x26\x23 #|0 GREEK CAPITAL LETTER GAMMA \x26\x24 #|0 GREEK CAPITAL LETTER DELTA \x26\x25 #|0 GREEK CAPITAL LETTER EPSILON \x26\x26 #|0 GREEK CAPITAL LETTER ZETA \x26\x27 #|0 GREEK CAPITAL LETTER ETA \x26\x28 #|0 GREEK CAPITAL LETTER THETA \x26\x29 #|0 GREEK CAPITAL LETTER IOTA \x26\x2A #|0 GREEK CAPITAL LETTER KAPPA \x26\x2B #|0 GREEK CAPITAL LETTER LAMDA \x26\x2C #|0 GREEK CAPITAL LETTER MU \x26\x2D #|0 GREEK CAPITAL LETTER NU \x26\x2E #|0 GREEK CAPITAL LETTER XI \x26\x2F #|0 GREEK CAPITAL LETTER OMICRON \x26\x30 #|0 GREEK CAPITAL LETTER PI \x26\x31 #|0 GREEK CAPITAL LETTER RHO \x26\x32 #|0 GREEK CAPITAL LETTER SIGMA \x26\x33 #|0 GREEK CAPITAL LETTER TAU \x26\x34 #|0 GREEK CAPITAL LETTER UPSILON \x26\x35 #|0 GREEK CAPITAL LETTER PHI \x26\x36 #|0 GREEK CAPITAL LETTER CHI \x26\x37 #|0 GREEK CAPITAL LETTER PSI \x26\x38 #|0 GREEK CAPITAL LETTER OMEGA \x26\x41 #|0 GREEK SMALL LETTER ALPHA \x26\x42 #|0 GREEK SMALL LETTER BETA \x26\x43 #|0 GREEK SMALL LETTER GAMMA \x26\x44 #|0 GREEK SMALL LETTER DELTA \x26\x45 #|0 GREEK SMALL LETTER EPSILON \x26\x46 #|0 GREEK SMALL LETTER ZETA \x26\x47 #|0 GREEK SMALL LETTER ETA \x26\x48 #|0 GREEK SMALL LETTER THETA \x26\x49 #|0 GREEK SMALL LETTER IOTA \x26\x4A #|0 GREEK SMALL LETTER KAPPA \x26\x4B #|0 GREEK SMALL LETTER LAMDA \x26\x4C #|0 GREEK SMALL LETTER MU \x26\x4D #|0 GREEK SMALL LETTER NU \x26\x4E #|0 GREEK SMALL LETTER XI \x26\x4F #|0 GREEK SMALL LETTER OMICRON \x26\x50 #|0 GREEK SMALL LETTER PI \x26\x51 #|0 GREEK SMALL LETTER RHO \x26\x52 #|0 GREEK SMALL LETTER SIGMA \x26\x53 #|0 GREEK SMALL LETTER TAU \x26\x54 #|0 GREEK SMALL LETTER UPSILON \x26\x55 #|0 GREEK SMALL LETTER PHI \x26\x56 #|0 GREEK SMALL LETTER CHI \x26\x57 #|0 GREEK SMALL LETTER PSI \x26\x58 #|0 GREEK SMALL LETTER OMEGA \x27\x21 #|0 CYRILLIC CAPITAL LETTER A \x27\x22 #|0 CYRILLIC CAPITAL LETTER BE \x27\x23 #|0 CYRILLIC CAPITAL LETTER VE \x27\x24 #|0 CYRILLIC CAPITAL LETTER GHE \x27\x25 #|0 CYRILLIC CAPITAL LETTER DE \x27\x26 #|0 CYRILLIC CAPITAL LETTER IE \x27\x27 #|0 CYRILLIC CAPITAL LETTER IO \x27\x28 #|0 CYRILLIC CAPITAL LETTER ZHE \x27\x29 #|0 CYRILLIC CAPITAL LETTER ZE \x27\x2A #|0 CYRILLIC CAPITAL LETTER I \x27\x2B #|0 CYRILLIC CAPITAL LETTER SHORT I \x27\x2C #|0 CYRILLIC CAPITAL LETTER KA \x27\x2D #|0 CYRILLIC CAPITAL LETTER EL \x27\x2E #|0 CYRILLIC CAPITAL LETTER EM \x27\x2F #|0 CYRILLIC CAPITAL LETTER EN \x27\x30 #|0 CYRILLIC CAPITAL LETTER O \x27\x31 #|0 CYRILLIC CAPITAL LETTER PE \x27\x32 #|0 CYRILLIC CAPITAL LETTER ER \x27\x33 #|0 CYRILLIC CAPITAL LETTER ES \x27\x34 #|0 CYRILLIC CAPITAL LETTER TE \x27\x35 #|0 CYRILLIC CAPITAL LETTER U \x27\x36 #|0 CYRILLIC CAPITAL LETTER EF \x27\x37 #|0 CYRILLIC CAPITAL LETTER HA \x27\x38 #|0 CYRILLIC CAPITAL LETTER TSE \x27\x39 #|0 CYRILLIC CAPITAL LETTER CHE \x27\x3A #|0 CYRILLIC CAPITAL LETTER SHA \x27\x3B #|0 CYRILLIC CAPITAL LETTER SHCHA \x27\x3C #|0 CYRILLIC CAPITAL LETTER HARD SIGN \x27\x3D #|0 CYRILLIC CAPITAL LETTER YERU \x27\x3E #|0 CYRILLIC CAPITAL LETTER SOFT SIGN \x27\x3F #|0 CYRILLIC CAPITAL LETTER E \x27\x40 #|0 CYRILLIC CAPITAL LETTER YU \x27\x41 #|0 CYRILLIC CAPITAL LETTER YA \x27\x51 #|0 CYRILLIC SMALL LETTER A \x27\x52 #|0 CYRILLIC SMALL LETTER BE \x27\x53 #|0 CYRILLIC SMALL LETTER VE \x27\x54 #|0 CYRILLIC SMALL LETTER GHE \x27\x55 #|0 CYRILLIC SMALL LETTER DE \x27\x56 #|0 CYRILLIC SMALL LETTER IE \x27\x57 #|0 CYRILLIC SMALL LETTER IO \x27\x58 #|0 CYRILLIC SMALL LETTER ZHE \x27\x59 #|0 CYRILLIC SMALL LETTER ZE \x27\x5A #|0 CYRILLIC SMALL LETTER I \x27\x5B #|0 CYRILLIC SMALL LETTER SHORT I \x27\x5C #|0 CYRILLIC SMALL LETTER KA \x27\x5D #|0 CYRILLIC SMALL LETTER EL \x27\x5E #|0 CYRILLIC SMALL LETTER EM \x27\x5F #|0 CYRILLIC SMALL LETTER EN \x27\x60 #|0 CYRILLIC SMALL LETTER O \x27\x61 #|0 CYRILLIC SMALL LETTER PE \x27\x62 #|0 CYRILLIC SMALL LETTER ER \x27\x63 #|0 CYRILLIC SMALL LETTER ES \x27\x64 #|0 CYRILLIC SMALL LETTER TE \x27\x65 #|0 CYRILLIC SMALL LETTER U \x27\x66 #|0 CYRILLIC SMALL LETTER EF \x27\x67 #|0 CYRILLIC SMALL LETTER HA \x27\x68 #|0 CYRILLIC SMALL LETTER TSE \x27\x69 #|0 CYRILLIC SMALL LETTER CHE \x27\x6A #|0 CYRILLIC SMALL LETTER SHA \x27\x6B #|0 CYRILLIC SMALL LETTER SHCHA \x27\x6C #|0 CYRILLIC SMALL LETTER HARD SIGN \x27\x6D #|0 CYRILLIC SMALL LETTER YERU \x27\x6E #|0 CYRILLIC SMALL LETTER SOFT SIGN \x27\x6F #|0 CYRILLIC SMALL LETTER E \x27\x70 #|0 CYRILLIC SMALL LETTER YU \x27\x71 #|0 CYRILLIC SMALL LETTER YA \x28\x21 #|0 BOX DRAWINGS LIGHT HORIZONTAL \x28\x22 #|0 BOX DRAWINGS LIGHT VERTICAL \x28\x23 #|0 BOX DRAWINGS LIGHT DOWN AND RIGHT \x28\x24 #|0 BOX DRAWINGS LIGHT DOWN AND LEFT \x28\x25 #|0 BOX DRAWINGS LIGHT UP AND LEFT \x28\x26 #|0 BOX DRAWINGS LIGHT UP AND RIGHT \x28\x27 #|0 BOX DRAWINGS LIGHT VERTICAL AND RIGHT \x28\x28 #|0 BOX DRAWINGS LIGHT DOWN AND HORIZONTAL \x28\x29 #|0 BOX DRAWINGS LIGHT VERTICAL AND LEFT \x28\x2A #|0 BOX DRAWINGS LIGHT UP AND HORIZONTAL \x28\x2B #|0 BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL \x28\x2C #|0 BOX DRAWINGS HEAVY HORIZONTAL \x28\x2D #|0 BOX DRAWINGS HEAVY VERTICAL \x28\x2E #|0 BOX DRAWINGS HEAVY DOWN AND RIGHT \x28\x2F #|0 BOX DRAWINGS HEAVY DOWN AND LEFT \x28\x30 #|0 BOX DRAWINGS HEAVY UP AND LEFT \x28\x31 #|0 BOX DRAWINGS HEAVY UP AND RIGHT \x28\x32 #|0 BOX DRAWINGS HEAVY VERTICAL AND RIGHT \x28\x33 #|0 BOX DRAWINGS HEAVY DOWN AND HORIZONTAL \x28\x34 #|0 BOX DRAWINGS HEAVY VERTICAL AND LEFT \x28\x35 #|0 BOX DRAWINGS HEAVY UP AND HORIZONTAL \x28\x36 #|0 BOX DRAWINGS HEAVY VERTICAL AND HORIZONTAL \x28\x37 #|0 BOX DRAWINGS VERTICAL HEAVY AND RIGHT LIGHT \x28\x38 #|0 BOX DRAWINGS DOWN LIGHT AND HORIZONTAL HEAVY \x28\x39 #|0 BOX DRAWINGS VERTICAL HEAVY AND LEFT LIGHT \x28\x3A #|0 BOX DRAWINGS UP LIGHT AND HORIZONTAL HEAVY \x28\x3B #|0 BOX DRAWINGS VERTICAL LIGHT AND HORIZONTAL HEAVY \x28\x3C #|0 BOX DRAWINGS VERTICAL LIGHT AND RIGHT HEAVY \x28\x3D #|0 BOX DRAWINGS DOWN HEAVY AND HORIZONTAL LIGHT \x28\x3E #|0 BOX DRAWINGS VERTICAL LIGHT AND LEFT HEAVY \x28\x3F #|0 BOX DRAWINGS UP HEAVY AND HORIZONTAL LIGHT \x28\x40 #|0 BOX DRAWINGS VERTICAL HEAVY AND HORIZONTAL LIGHT \x30\x21 #|0 \x30\x22 #|0 \x30\x23 #|0 \x30\x24 #|0 \x30\x25 #|0 \x30\x26 #|0 \x30\x27 #|0 \x30\x28 #|0 \x30\x29 #|0 \x30\x2A #|0 \x30\x2B #|0 \x30\x2C #|0 \x30\x2D #|0 \x30\x2E #|0 \x30\x2F #|0 \x30\x30 #|0 \x30\x31 #|0 \x30\x32 #|0 \x30\x33 #|0 \x30\x34 #|0 \x30\x35 #|0 \x30\x36 #|0 \x30\x37 #|0 \x30\x38 #|0 \x30\x39 #|0 \x30\x3A #|0 \x30\x3B #|0 \x30\x3C #|0 \x30\x3D #|0 \x30\x3E #|0 \x30\x3F #|0 \x30\x40 #|0 \x30\x41 #|0 \x30\x42 #|0 \x30\x43 #|0 \x30\x44 #|0 \x30\x45 #|0 \x30\x46 #|0 \x30\x47 #|0 \x30\x48 #|0 \x30\x49 #|0 \x30\x4A #|0 \x30\x4B #|0 \x30\x4C #|0 \x30\x4D #|0 \x30\x4E #|0 \x30\x4F #|0 \x30\x50 #|0 \x30\x51 #|0 \x30\x52 #|0 \x30\x53 #|0 \x30\x54 #|0 \x30\x55 #|0 \x30\x56 #|0 \x30\x57 #|0 \x30\x58 #|0 \x30\x59 #|0 \x30\x5A #|0 \x30\x5B #|0 \x30\x5C #|0 \x30\x5D #|0 \x30\x5E #|0 \x30\x5F #|0 \x30\x60 #|0 \x30\x61 #|0 \x30\x62 #|0 \x30\x63 #|0 \x30\x64 #|0 \x30\x65 #|0 \x30\x66 #|0 \x30\x67 #|0 \x30\x68 #|0 \x30\x69 #|0 \x30\x6A #|0 \x30\x6B #|0 \x30\x6C #|0 \x30\x6D #|0 \x30\x6E #|0 \x30\x6F #|0 \x30\x70 #|0 \x30\x71 #|0 \x30\x72 #|0 \x30\x73 #|0 \x30\x74 #|0 \x30\x75 #|0 \x30\x76 #|0 \x30\x77 #|0 \x30\x78 #|0 \x30\x79 #|0 \x30\x7A #|0 \x30\x7B #|0 \x30\x7C #|0 \x30\x7D #|0 \x30\x7E #|0 \x31\x21 #|0 \x31\x22 #|0 \x31\x23 #|0 \x31\x24 #|0 \x31\x25 #|0 \x31\x26 #|0 \x31\x27 #|0 \x31\x28 #|0 \x31\x29 #|0 \x31\x2A #|0 \x31\x2B #|0 \x31\x2C #|0 \x31\x2D #|0 \x31\x2E #|0 \x31\x2F #|0 \x31\x30 #|0 \x31\x31 #|0 \x31\x32 #|0 \x31\x33 #|0 \x31\x34 #|0 \x31\x35 #|0 \x31\x36 #|0 \x31\x37 #|0 \x31\x38 #|0 \x31\x39 #|0 \x31\x3A #|0 \x31\x3B #|0 \x31\x3C #|0 \x31\x3D #|0 \x31\x3E #|0 \x31\x3F #|0 \x31\x40 #|0 \x31\x41 #|0 \x31\x42 #|0 \x31\x43 #|0 \x31\x44 #|0 \x31\x45 #|0 \x31\x46 #|0 \x31\x47 #|0 \x31\x48 #|0 \x31\x49 #|0 \x31\x4A #|0 \x31\x4B #|0 \x31\x4C #|0 \x31\x4D #|0 \x31\x4E #|0 \x31\x4F #|0 \x31\x50 #|0 \x31\x51 #|0 \x31\x52 #|0 \x31\x53 #|0 \x31\x54 #|0 \x31\x55 #|0 \x31\x56 #|0 \x31\x57 #|0 \x31\x58 #|0 \x31\x59 #|0 \x31\x5A #|0 \x31\x5B #|0 \x31\x5C #|0 \x31\x5D #|0 \x31\x5E #|0 \x31\x5F #|0 \x31\x60 #|0 \x31\x61 #|0 \x31\x62 #|0 \x31\x63 #|0 \x31\x64 #|0 \x31\x65 #|0 \x31\x66 #|0 \x31\x67 #|0 \x31\x68 #|0 \x31\x69 #|0 \x31\x6A #|0 \x31\x6B #|0 \x31\x6C #|0 \x31\x6D #|0 \x31\x6E #|0 \x31\x6F #|0 \x31\x70 #|0 \x31\x71 #|0 \x31\x72 #|0 \x31\x73 #|0 \x31\x74 #|0 \x31\x75 #|0 \x31\x76 #|0 \x31\x77 #|0 \x31\x78 #|0 \x31\x79 #|0 \x31\x7A #|0 \x31\x7B #|0 \x31\x7C #|0 \x31\x7D #|0 \x31\x7E #|0 \x32\x21 #|0 \x32\x22 #|0 \x32\x23 #|0 \x32\x24 #|0 \x32\x25 #|0 \x32\x26 #|0 \x32\x27 #|0 \x32\x28 #|0 \x32\x29 #|0 \x32\x2A #|0 \x32\x2B #|0 \x32\x2C #|0 \x32\x2D #|0 \x32\x2E #|0 \x32\x2F #|0 \x32\x30 #|0 \x32\x31 #|0 \x32\x32 #|0 \x32\x33 #|0 \x32\x34 #|0 \x32\x35 #|0 \x32\x36 #|0 \x32\x37 #|0 \x32\x38 #|0 \x32\x39 #|0 \x32\x3A #|0 \x32\x3B #|0 \x32\x3C #|0 \x32\x3D #|0 \x32\x3E #|0 \x32\x3F #|0 \x32\x40 #|0 \x32\x41 #|0 \x32\x42 #|0 \x32\x43 #|0 \x32\x44 #|0 \x32\x45 #|0 \x32\x46 #|0 \x32\x47 #|0 \x32\x48 #|0 \x32\x49 #|0 \x32\x4A #|0 \x32\x4B #|0 \x32\x4C #|0 \x32\x4D #|0 \x32\x4E #|0 \x32\x4F #|0 \x32\x50 #|0 \x32\x51 #|0 \x32\x52 #|0 \x32\x53 #|0 \x32\x54 #|0 \x32\x55 #|0 \x32\x56 #|0 \x32\x57 #|0 \x32\x58 #|0 \x32\x59 #|0 \x32\x5A #|0 \x32\x5B #|0 \x32\x5C #|0 \x32\x5D #|0 \x32\x5E #|0 \x32\x5F #|0 \x32\x60 #|0 \x32\x61 #|0 \x32\x62 #|0 \x32\x63 #|0 \x32\x64 #|0 \x32\x65 #|0 \x32\x66 #|0 \x32\x67 #|0 \x32\x68 #|0 \x32\x69 #|0 \x32\x6A #|0 \x32\x6B #|0 \x32\x6C #|0 \x32\x6D #|0 \x32\x6E #|0 \x32\x6F #|0 \x32\x70 #|0 \x32\x71 #|0 \x32\x72 #|0 \x32\x73 #|0 \x32\x74 #|0 \x32\x75 #|0 \x32\x76 #|0 \x32\x77 #|0 \x32\x78 #|0 \x32\x79 #|0 \x32\x7A #|0 \x32\x7B #|0 \x32\x7C #|0 \x32\x7D #|0 \x32\x7E #|0 \x33\x21 #|0 \x33\x22 #|0 \x33\x23 #|0 \x33\x24 #|0 \x33\x25 #|0 \x33\x26 #|0 \x33\x27 #|0 \x33\x28 #|0 \x33\x29 #|0 \x33\x2A #|0 \x33\x2B #|0 \x33\x2C #|0 \x33\x2D #|0 \x33\x2E #|0 \x33\x2F #|0 \x33\x30 #|0 \x33\x31 #|0 \x33\x32 #|0 \x33\x33 #|0 \x33\x34 #|0 \x33\x35 #|0 \x33\x36 #|0 \x33\x37 #|0 \x33\x38 #|0 \x33\x39 #|0 \x33\x3A #|0 \x33\x3B #|0 \x33\x3C #|0 \x33\x3D #|0 \x33\x3E #|0 \x33\x3F #|0 \x33\x40 #|0 \x33\x41 #|0 \x33\x42 #|0 \x33\x43 #|0 \x33\x44 #|0 \x33\x45 #|0 \x33\x46 #|0 \x33\x47 #|0 \x33\x48 #|0 \x33\x49 #|0 \x33\x4A #|0 \x33\x4B #|0 \x33\x4C #|0 \x33\x4D #|0 \x33\x4E #|0 \x33\x4F #|0 \x33\x50 #|0 \x33\x51 #|0 \x33\x52 #|0 \x33\x53 #|0 \x33\x54 #|0 \x33\x55 #|0 \x33\x56 #|0 \x33\x57 #|0 \x33\x58 #|0 \x33\x59 #|0 \x33\x5A #|0 \x33\x5B #|0 \x33\x5C #|0 \x33\x5D #|0 \x33\x5E #|0 \x33\x5F #|0 \x33\x60 #|0 \x33\x61 #|0 \x33\x62 #|0 \x33\x63 #|0 \x33\x64 #|0 \x33\x65 #|0 \x33\x66 #|0 \x33\x67 #|0 \x33\x68 #|0 \x33\x69 #|0 \x33\x6A #|0 \x33\x6B #|0 \x33\x6C #|0 \x33\x6D #|0 \x33\x6E #|0 \x33\x6F #|0 \x33\x70 #|0 \x33\x71 #|0 \x33\x72 #|0 \x33\x73 #|0 \x33\x74 #|0 \x33\x75 #|0 \x33\x76 #|0 \x33\x77 #|0 \x33\x78 #|0 \x33\x79 #|0 \x33\x7A #|0 \x33\x7B #|0 \x33\x7C #|0 \x33\x7D #|0 \x33\x7E #|0 \x34\x21 #|0 \x34\x22 #|0 \x34\x23 #|0 \x34\x24 #|0 \x34\x25 #|0 \x34\x26 #|0 \x34\x27 #|0 \x34\x28 #|0 \x34\x29 #|0 \x34\x2A #|0 \x34\x2B #|0 \x34\x2C #|0 \x34\x2D #|0 \x34\x2E #|0 \x34\x2F #|0 \x34\x30 #|0 \x34\x31 #|0 \x34\x32 #|0 \x34\x33 #|0 \x34\x34 #|0 \x34\x35 #|0 \x34\x36 #|0 \x34\x37 #|0 \x34\x38 #|0 \x34\x39 #|0 \x34\x3A #|0 \x34\x3B #|0 \x34\x3C #|0 \x34\x3D #|0 \x34\x3E #|0 \x34\x3F #|0 \x34\x40 #|0 \x34\x41 #|0 \x34\x42 #|0 \x34\x43 #|0 \x34\x44 #|0 \x34\x45 #|0 \x34\x46 #|0 \x34\x47 #|0 \x34\x48 #|0 \x34\x49 #|0 \x34\x4A #|0 \x34\x4B #|0 \x34\x4C #|0 \x34\x4D #|0 \x34\x4E #|0 \x34\x4F #|0 \x34\x50 #|0 \x34\x51 #|0 \x34\x52 #|0 \x34\x53 #|0 \x34\x54 #|0 \x34\x55 #|0 \x34\x56 #|0 \x34\x57 #|0 \x34\x58 #|0 \x34\x59 #|0 \x34\x5A #|0 \x34\x5B #|0 \x34\x5C #|0 \x34\x5D #|0 \x34\x5E #|0 \x34\x5F #|0 \x34\x60 #|0 \x34\x61 #|0 \x34\x62 #|0 \x34\x63 #|0 \x34\x64 #|0 \x34\x65 #|0 \x34\x66 #|0 \x34\x67 #|0 \x34\x68 #|0 \x34\x69 #|0 \x34\x6A #|0 \x34\x6B #|0 \x34\x6C #|0 \x34\x6D #|0 \x34\x6E #|0 \x34\x6F #|0 \x34\x70 #|0 \x34\x71 #|0 \x34\x72 #|0 \x34\x73 #|0 \x34\x74 #|0 \x34\x75 #|0 \x34\x76 #|0 \x34\x77 #|0 \x34\x78 #|0 \x34\x79 #|0 \x34\x7A #|0 \x34\x7B #|0 \x34\x7C #|0 \x34\x7D #|0 \x34\x7E #|0 \x35\x21 #|0 \x35\x22 #|0 \x35\x23 #|0 \x35\x24 #|0 \x35\x25 #|0 \x35\x26 #|0 \x35\x27 #|0 \x35\x28 #|0 \x35\x29 #|0 \x35\x2A #|0 \x35\x2B #|0 \x35\x2C #|0 \x35\x2D #|0 \x35\x2E #|0 \x35\x2F #|0 \x35\x30 #|0 \x35\x31 #|0 \x35\x32 #|0 \x35\x33 #|0 \x35\x34 #|0 \x35\x35 #|0 \x35\x36 #|0 \x35\x37 #|0 \x35\x38 #|0 \x35\x39 #|0 \x35\x3A #|0 \x35\x3B #|0 \x35\x3C #|0 \x35\x3D #|0 \x35\x3E #|0 \x35\x3F #|0 \x35\x40 #|0 \x35\x41 #|0 \x35\x42 #|0 \x35\x43 #|0 \x35\x44 #|0 \x35\x45 #|0 \x35\x46 #|0 \x35\x47 #|0 \x35\x48 #|0 \x35\x49 #|0 \x35\x4A #|0 \x35\x4B #|0 \x35\x4C #|0 \x35\x4D #|0 \x35\x4E #|0 \x35\x4F #|0 \x35\x50 #|0 \x35\x51 #|0 \x35\x52 #|0 \x35\x53 #|0 \x35\x54 #|0 \x35\x55 #|0 \x35\x56 #|0 \x35\x57 #|0 \x35\x58 #|0 \x35\x59 #|0 \x35\x5A #|0 \x35\x5B #|0 \x35\x5C #|0 \x35\x5D #|0 \x35\x5E #|0 \x35\x5F #|0 \x35\x60 #|0 \x35\x61 #|0 \x35\x62 #|0 \x35\x63 #|0 \x35\x64 #|0 \x35\x65 #|0 \x35\x66 #|0 \x35\x67 #|0 \x35\x68 #|0 \x35\x69 #|0 \x35\x6A #|0 \x35\x6B #|0 \x35\x6C #|0 \x35\x6D #|0 \x35\x6E #|0 \x35\x6F #|0 \x35\x70 #|0 \x35\x71 #|0 \x35\x72 #|0 \x35\x73 #|0 \x35\x74 #|0 \x35\x75 #|0 \x35\x76 #|0 \x35\x77 #|0 \x35\x78 #|0 \x35\x79 #|0 \x35\x7A #|0 \x35\x7B #|0 \x35\x7C #|0 \x35\x7D #|0 \x35\x7E #|0 \x36\x21 #|0 \x36\x22 #|0 \x36\x23 #|0 \x36\x24 #|0 \x36\x25 #|0 \x36\x26 #|0 \x36\x27 #|0 \x36\x28 #|0 \x36\x29 #|0 \x36\x2A #|0 \x36\x2B #|0 \x36\x2C #|0 \x36\x2D #|0 \x36\x2E #|0 \x36\x2F #|0 \x36\x30 #|0 \x36\x31 #|0 \x36\x32 #|0 \x36\x33 #|0 \x36\x34 #|0 \x36\x35 #|0 \x36\x36 #|0 \x36\x37 #|0 \x36\x38 #|0 \x36\x39 #|0 \x36\x3A #|0 \x36\x3B #|0 \x36\x3C #|0 \x36\x3D #|0 \x36\x3E #|0 \x36\x3F #|0 \x36\x40 #|0 \x36\x41 #|0 \x36\x42 #|0 \x36\x43 #|0 \x36\x44 #|0 \x36\x45 #|0 \x36\x46 #|0 \x36\x47 #|0 \x36\x48 #|0 \x36\x49 #|0 \x36\x4A #|0 \x36\x4B #|0 \x36\x4C #|0 \x36\x4D #|0 \x36\x4E #|0 \x36\x4F #|0 \x36\x50 #|0 \x36\x51 #|0 \x36\x52 #|0 \x36\x53 #|0 \x36\x54 #|0 \x36\x55 #|0 \x36\x56 #|0 \x36\x57 #|0 \x36\x58 #|0 \x36\x59 #|0 \x36\x5A #|0 \x36\x5B #|0 \x36\x5C #|0 \x36\x5D #|0 \x36\x5E #|0 \x36\x5F #|0 \x36\x60 #|0 \x36\x61 #|0 \x36\x62 #|0 \x36\x63 #|0 \x36\x64 #|0 \x36\x65 #|0 \x36\x66 #|0 \x36\x67 #|0 \x36\x68 #|0 \x36\x69 #|0 \x36\x6A #|0 \x36\x6B #|0 \x36\x6C #|0 \x36\x6D #|0 \x36\x6E #|0 \x36\x6F #|0 \x36\x70 #|0 \x36\x71 #|0 \x36\x72 #|0 \x36\x73 #|0 \x36\x74 #|0 \x36\x75 #|0 \x36\x76 #|0 \x36\x77 #|0 \x36\x78 #|0 \x36\x79 #|0 \x36\x7A #|0 \x36\x7B #|0 \x36\x7C #|0 \x36\x7D #|0 \x36\x7E #|0 \x37\x21 #|0 \x37\x22 #|0 \x37\x23 #|0 \x37\x24 #|0 \x37\x25 #|0 \x37\x26 #|0 \x37\x27 #|0 \x37\x28 #|0 \x37\x29 #|0 \x37\x2A #|0 \x37\x2B #|0 \x37\x2C #|0 \x37\x2D #|0 \x37\x2E #|0 \x37\x2F #|0 \x37\x30 #|0 \x37\x31 #|0 \x37\x32 #|0 \x37\x33 #|0 \x37\x34 #|0 \x37\x35 #|0 \x37\x36 #|0 \x37\x37 #|0 \x37\x38 #|0 \x37\x39 #|0 \x37\x3A #|0 \x37\x3B #|0 \x37\x3C #|0 \x37\x3D #|0 \x37\x3E #|0 \x37\x3F #|0 \x37\x40 #|0 \x37\x41 #|0 \x37\x42 #|0 \x37\x43 #|0 \x37\x44 #|0 \x37\x45 #|0 \x37\x46 #|0 \x37\x47 #|0 \x37\x48 #|0 \x37\x49 #|0 \x37\x4A #|0 \x37\x4B #|0 \x37\x4C #|0 \x37\x4D #|0 \x37\x4E #|0 \x37\x4F #|0 \x37\x50 #|0 \x37\x51 #|0 \x37\x52 #|0 \x37\x53 #|0 \x37\x54 #|0 \x37\x55 #|0 \x37\x56 #|0 \x37\x57 #|0 \x37\x58 #|0 \x37\x59 #|0 \x37\x5A #|0 \x37\x5B #|0 \x37\x5C #|0 \x37\x5D #|0 \x37\x5E #|0 \x37\x5F #|0 \x37\x60 #|0 \x37\x61 #|0 \x37\x62 #|0 \x37\x63 #|0 \x37\x64 #|0 \x37\x65 #|0 \x37\x66 #|0 \x37\x67 #|0 \x37\x68 #|0 \x37\x69 #|0 \x37\x6A #|0 \x37\x6B #|0 \x37\x6C #|0 \x37\x6D #|0 \x37\x6E #|0 \x37\x6F #|0 \x37\x70 #|0 \x37\x71 #|0 \x37\x72 #|0 \x37\x73 #|0 \x37\x74 #|0 \x37\x75 #|0 \x37\x76 #|0 \x37\x77 #|0 \x37\x78 #|0 \x37\x79 #|0 \x37\x7A #|0 \x37\x7B #|0 \x37\x7C #|0 \x37\x7D #|0 \x37\x7E #|0 \x38\x21 #|0 \x38\x22 #|0 \x38\x23 #|0 \x38\x24 #|0 \x38\x25 #|0 \x38\x26 #|0 \x38\x27 #|0 \x38\x28 #|0 \x38\x29 #|0 \x38\x2A #|0 \x38\x2B #|0 \x38\x2C #|0 \x38\x2D #|0 \x38\x2E #|0 \x38\x2F #|0 \x38\x30 #|0 \x38\x31 #|0 \x38\x32 #|0 \x38\x33 #|0 \x38\x34 #|0 \x38\x35 #|0 \x38\x36 #|0 \x38\x37 #|0 \x38\x38 #|0 \x38\x39 #|0 \x38\x3A #|0 \x38\x3B #|0 \x38\x3C #|0 \x38\x3D #|0 \x38\x3E #|0 \x38\x3F #|0 \x38\x40 #|0 \x38\x41 #|0 \x38\x42 #|0 \x38\x43 #|0 \x38\x44 #|0 \x38\x45 #|0 \x38\x46 #|0 \x38\x47 #|0 \x38\x48 #|0 \x38\x49 #|0 \x38\x4A #|0 \x38\x4B #|0 \x38\x4C #|0 \x38\x4D #|0 \x38\x4E #|0 \x38\x4F #|0 \x38\x50 #|0 \x38\x51 #|0 \x38\x52 #|0 \x38\x53 #|0 \x38\x54 #|0 \x38\x55 #|0 \x38\x56 #|0 \x38\x57 #|0 \x38\x58 #|0 \x38\x59 #|0 \x38\x5A #|0 \x38\x5B #|0 \x38\x5C #|0 \x38\x5D #|0 \x38\x5E #|0 \x38\x5F #|0 \x38\x60 #|0 \x38\x61 #|0 \x38\x62 #|0 \x38\x63 #|0 \x38\x64 #|0 \x38\x65 #|0 \x38\x66 #|0 \x38\x67 #|0 \x38\x68 #|0 \x38\x69 #|0 \x38\x6A #|0 \x38\x6B #|0 \x38\x6C #|0 \x38\x6D #|0 \x38\x6E #|0 \x38\x6F #|0 \x38\x70 #|0 \x38\x71 #|0 \x38\x72 #|0 \x38\x73 #|0 \x38\x74 #|0 \x38\x75 #|0 \x38\x76 #|0 \x38\x77 #|0 \x38\x78 #|0 \x38\x79 #|0 \x38\x7A #|0 \x38\x7B #|0 \x38\x7C #|0 \x38\x7D #|0 \x38\x7E #|0 \x39\x21 #|0 \x39\x22 #|0 \x39\x23 #|0 \x39\x24 #|0 \x39\x25 #|0 \x39\x26 #|0 \x39\x27 #|0 \x39\x28 #|0 \x39\x29 #|0 \x39\x2A #|0 \x39\x2B #|0 \x39\x2C #|0 \x39\x2D #|0 \x39\x2E #|0 \x39\x2F #|0 \x39\x30 #|0 \x39\x31 #|0 \x39\x32 #|0 \x39\x33 #|0 \x39\x34 #|0 \x39\x35 #|0 \x39\x36 #|0 \x39\x37 #|0 \x39\x38 #|0 \x39\x39 #|0 \x39\x3A #|0 \x39\x3B #|0 \x39\x3C #|0 \x39\x3D #|0 \x39\x3E #|0 \x39\x3F #|0 \x39\x40 #|0 \x39\x41 #|0 \x39\x42 #|0 \x39\x43 #|0 \x39\x44 #|0 \x39\x45 #|0 \x39\x46 #|0 \x39\x47 #|0 \x39\x48 #|0 \x39\x49 #|0 \x39\x4A #|0 \x39\x4B #|0 \x39\x4C #|0 \x39\x4D #|0 \x39\x4E #|0 \x39\x4F #|0 \x39\x50 #|0 \x39\x51 #|0 \x39\x52 #|0 \x39\x53 #|0 \x39\x54 #|0 \x39\x55 #|0 \x39\x56 #|0 \x39\x57 #|0 \x39\x58 #|0 \x39\x59 #|0 \x39\x5A #|0 \x39\x5B #|0 \x39\x5C #|0 \x39\x5D #|0 \x39\x5E #|0 \x39\x5F #|0 \x39\x60 #|0 \x39\x61 #|0 \x39\x62 #|0 \x39\x63 #|0 \x39\x64 #|0 \x39\x65 #|0 \x39\x66 #|0 \x39\x67 #|0 \x39\x68 #|0 \x39\x69 #|0 \x39\x6A #|0 \x39\x6B #|0 \x39\x6C #|0 \x39\x6D #|0 \x39\x6E #|0 \x39\x6F #|0 \x39\x70 #|0 \x39\x71 #|0 \x39\x72 #|0 \x39\x73 #|0 \x39\x74 #|0 \x39\x75 #|0 \x39\x76 #|0 \x39\x77 #|0 \x39\x78 #|0 \x39\x79 #|0 \x39\x7A #|0 \x39\x7B #|0 \x39\x7C #|0 \x39\x7D #|0 \x39\x7E #|0 \x3A\x21 #|0 \x3A\x22 #|0 \x3A\x23 #|0 \x3A\x24 #|0 \x3A\x25 #|0 \x3A\x26 #|0 \x3A\x27 #|0 \x3A\x28 #|0 \x3A\x29 #|0 \x3A\x2A #|0 \x3A\x2B #|0 \x3A\x2C #|0 \x3A\x2D #|0 \x3A\x2E #|0 \x3A\x2F #|0 \x3A\x30 #|0 \x3A\x31 #|0 \x3A\x32 #|0 \x3A\x33 #|0 \x3A\x34 #|0 \x3A\x35 #|0 \x3A\x36 #|0 \x3A\x37 #|0 \x3A\x38 #|0 \x3A\x39 #|0 \x3A\x3A #|0 \x3A\x3B #|0 \x3A\x3C #|0 \x3A\x3D #|0 \x3A\x3E #|0 \x3A\x3F #|0 \x3A\x40 #|0 \x3A\x41 #|0 \x3A\x42 #|0 \x3A\x43 #|0 \x3A\x44 #|0 \x3A\x45 #|0 \x3A\x46 #|0 \x3A\x47 #|0 \x3A\x48 #|0 \x3A\x49 #|0 \x3A\x4A #|0 \x3A\x4B #|0 \x3A\x4C #|0 \x3A\x4D #|0 \x3A\x4E #|0 \x3A\x4F #|0 \x3A\x50 #|0 \x3A\x51 #|0 \x3A\x52 #|0 \x3A\x53 #|0 \x3A\x54 #|0 \x3A\x55 #|0 \x3A\x56 #|0 \x3A\x57 #|0 \x3A\x58 #|0 \x3A\x59 #|0 \x3A\x5A #|0 \x3A\x5B #|0 \x3A\x5C #|0 \x3A\x5D #|0 \x3A\x5E #|0 \x3A\x5F #|0 \x3A\x60 #|0 \x3A\x61 #|0 \x3A\x62 #|0 \x3A\x63 #|0 \x3A\x64 #|0 \x3A\x65 #|0 \x3A\x66 #|0 \x3A\x67 #|0 \x3A\x68 #|0 \x3A\x69 #|0 \x3A\x6A #|0 \x3A\x6B #|0 \x3A\x6C #|0 \x3A\x6D #|0 \x3A\x6E #|0 \x3A\x6F #|0 \x3A\x70 #|0 \x3A\x71 #|0 \x3A\x72 #|0 \x3A\x73 #|0 \x3A\x74 #|0 \x3A\x75 #|0 \x3A\x76 #|0 \x3A\x77 #|0 \x3A\x78 #|0 \x3A\x79 #|0 \x3A\x7A #|0 \x3A\x7B #|0 \x3A\x7C #|0 \x3A\x7D #|0 \x3A\x7E #|0 \x3B\x21 #|0 \x3B\x22 #|0 \x3B\x23 #|0 \x3B\x24 #|0 \x3B\x25 #|0 \x3B\x26 #|0 \x3B\x27 #|0 \x3B\x28 #|0 \x3B\x29 #|0 \x3B\x2A #|0 \x3B\x2B #|0 \x3B\x2C #|0 \x3B\x2D #|0 \x3B\x2E #|0 \x3B\x2F #|0 \x3B\x30 #|0 \x3B\x31 #|0 \x3B\x32 #|0 \x3B\x33 #|0 \x3B\x34 #|0 \x3B\x35 #|0 \x3B\x36 #|0 \x3B\x37 #|0 \x3B\x38 #|0 \x3B\x39 #|0 \x3B\x3A #|0 \x3B\x3B #|0 \x3B\x3C #|0 \x3B\x3D #|0 \x3B\x3E #|0 \x3B\x3F #|0 \x3B\x40 #|0 \x3B\x41 #|0 \x3B\x42 #|0 \x3B\x43 #|0 \x3B\x44 #|0 \x3B\x45 #|0 \x3B\x46 #|0 \x3B\x47 #|0 \x3B\x48 #|0 \x3B\x49 #|0 \x3B\x4A #|0 \x3B\x4B #|0 \x3B\x4C #|0 \x3B\x4D #|0 \x3B\x4E #|0 \x3B\x4F #|0 \x3B\x50 #|0 \x3B\x51 #|0 \x3B\x52 #|0 \x3B\x53 #|0 \x3B\x54 #|0 \x3B\x55 #|0 \x3B\x56 #|0 \x3B\x57 #|0 \x3B\x58 #|0 \x3B\x59 #|0 \x3B\x5A #|0 \x3B\x5B #|0 \x3B\x5C #|0 \x3B\x5D #|0 \x3B\x5E #|0 \x3B\x5F #|0 \x3B\x60 #|0 \x3B\x61 #|0 \x3B\x62 #|0 \x3B\x63 #|0 \x3B\x64 #|0 \x3B\x65 #|0 \x3B\x66 #|0 \x3B\x67 #|0 \x3B\x68 #|0 \x3B\x69 #|0 \x3B\x6A #|0 \x3B\x6B #|0 \x3B\x6C #|0 \x3B\x6D #|0 \x3B\x6E #|0 \x3B\x6F #|0 \x3B\x70 #|0 \x3B\x71 #|0 \x3B\x72 #|0 \x3B\x73 #|0 \x3B\x74 #|0 \x3B\x75 #|0 \x3B\x76 #|0 \x3B\x77 #|0 \x3B\x78 #|0 \x3B\x79 #|0 \x3B\x7A #|0 \x3B\x7B #|0 \x3B\x7C #|0 \x3B\x7D #|0 \x3B\x7E #|0 \x3C\x21 #|0 \x3C\x22 #|0 \x3C\x23 #|0 \x3C\x24 #|0 \x3C\x25 #|0 \x3C\x26 #|0 \x3C\x27 #|0 \x3C\x28 #|0 \x3C\x29 #|0 \x3C\x2A #|0 \x3C\x2B #|0 \x3C\x2C #|0 \x3C\x2D #|0 \x3C\x2E #|0 \x3C\x2F #|0 \x3C\x30 #|0 \x3C\x31 #|0 \x3C\x32 #|0 \x3C\x33 #|0 \x3C\x34 #|0 \x3C\x35 #|0 \x3C\x36 #|0 \x3C\x37 #|0 \x3C\x38 #|0 \x3C\x39 #|0 \x3C\x3A #|0 \x3C\x3B #|0 \x3C\x3C #|0 \x3C\x3D #|0 \x3C\x3E #|0 \x3C\x3F #|0 \x3C\x40 #|0 \x3C\x41 #|0 \x3C\x42 #|0 \x3C\x43 #|0 \x3C\x44 #|0 \x3C\x45 #|0 \x3C\x46 #|0 \x3C\x47 #|0 \x3C\x48 #|0 \x3C\x49 #|0 \x3C\x4A #|0 \x3C\x4B #|0 \x3C\x4C #|0 \x3C\x4D #|0 \x3C\x4E #|0 \x3C\x4F #|0 \x3C\x50 #|0 \x3C\x51 #|0 \x3C\x52 #|0 \x3C\x53 #|0 \x3C\x54 #|0 \x3C\x55 #|0 \x3C\x56 #|0 \x3C\x57 #|0 \x3C\x58 #|0 \x3C\x59 #|0 \x3C\x5A #|0 \x3C\x5B #|0 \x3C\x5C #|0 \x3C\x5D #|0 \x3C\x5E #|0 \x3C\x5F #|0 \x3C\x60 #|0 \x3C\x61 #|0 \x3C\x62 #|0 \x3C\x63 #|0 \x3C\x64 #|0 \x3C\x65 #|0 \x3C\x66 #|0 \x3C\x67 #|0 \x3C\x68 #|0 \x3C\x69 #|0 \x3C\x6A #|0 \x3C\x6B #|0 \x3C\x6C #|0 \x3C\x6D #|0 \x3C\x6E #|0 \x3C\x6F #|0 \x3C\x70 #|0 \x3C\x71 #|0 \x3C\x72 #|0 \x3C\x73 #|0 \x3C\x74 #|0 \x3C\x75 #|0 \x3C\x76 #|0 \x3C\x77 #|0 \x3C\x78 #|0 \x3C\x79 #|0 \x3C\x7A #|0 \x3C\x7B #|0 \x3C\x7C #|0 \x3C\x7D #|0 \x3C\x7E #|0 \x3D\x21 #|0 \x3D\x22 #|0 \x3D\x23 #|0 \x3D\x24 #|0 \x3D\x25 #|0 \x3D\x26 #|0 \x3D\x27 #|0 \x3D\x28 #|0 \x3D\x29 #|0 \x3D\x2A #|0 \x3D\x2B #|0 \x3D\x2C #|0 \x3D\x2D #|0 \x3D\x2E #|0 \x3D\x2F #|0 \x3D\x30 #|0 \x3D\x31 #|0 \x3D\x32 #|0 \x3D\x33 #|0 \x3D\x34 #|0 \x3D\x35 #|0 \x3D\x36 #|0 \x3D\x37 #|0 \x3D\x38 #|0 \x3D\x39 #|0 \x3D\x3A #|0 \x3D\x3B #|0 \x3D\x3C #|0 \x3D\x3D #|0 \x3D\x3E #|0 \x3D\x3F #|0 \x3D\x40 #|0 \x3D\x41 #|0 \x3D\x42 #|0 \x3D\x43 #|0 \x3D\x44 #|0 \x3D\x45 #|0 \x3D\x46 #|0 \x3D\x47 #|0 \x3D\x48 #|0 \x3D\x49 #|0 \x3D\x4A #|0 \x3D\x4B #|0 \x3D\x4C #|0 \x3D\x4D #|0 \x3D\x4E #|0 \x3D\x4F #|0 \x3D\x50 #|0 \x3D\x51 #|0 \x3D\x52 #|0 \x3D\x53 #|0 \x3D\x54 #|0 \x3D\x55 #|0 \x3D\x56 #|0 \x3D\x57 #|0 \x3D\x58 #|0 \x3D\x59 #|0 \x3D\x5A #|0 \x3D\x5B #|0 \x3D\x5C #|0 \x3D\x5D #|0 \x3D\x5E #|0 \x3D\x5F #|0 \x3D\x60 #|0 \x3D\x61 #|0 \x3D\x62 #|0 \x3D\x63 #|0 \x3D\x64 #|0 \x3D\x65 #|0 \x3D\x66 #|0 \x3D\x67 #|0 \x3D\x68 #|0 \x3D\x69 #|0 \x3D\x6A #|0 \x3D\x6B #|0 \x3D\x6C #|0 \x3D\x6D #|0 \x3D\x6E #|0 \x3D\x6F #|0 \x3D\x70 #|0 \x3D\x71 #|0 \x3D\x72 #|0 \x3D\x73 #|0 \x3D\x74 #|0 \x3D\x75 #|0 \x3D\x76 #|0 \x3D\x77 #|0 \x3D\x78 #|0 \x3D\x79 #|0 \x3D\x7A #|0 \x3D\x7B #|0 \x3D\x7C #|0 \x3D\x7D #|0 \x3D\x7E #|0 \x3E\x21 #|0 \x3E\x22 #|0 \x3E\x23 #|0 \x3E\x24 #|0 \x3E\x25 #|0 \x3E\x26 #|0 \x3E\x27 #|0 \x3E\x28 #|0 \x3E\x29 #|0 \x3E\x2A #|0 \x3E\x2B #|0 \x3E\x2C #|0 \x3E\x2D #|0 \x3E\x2E #|0 \x3E\x2F #|0 \x3E\x30 #|0 \x3E\x31 #|0 \x3E\x32 #|0 \x3E\x33 #|0 \x3E\x34 #|0 \x3E\x35 #|0 \x3E\x36 #|0 \x3E\x37 #|0 \x3E\x38 #|0 \x3E\x39 #|0 \x3E\x3A #|0 \x3E\x3B #|0 \x3E\x3C #|0 \x3E\x3D #|0 \x3E\x3E #|0 \x3E\x3F #|0 \x3E\x40 #|0 \x3E\x41 #|0 \x3E\x42 #|0 \x3E\x43 #|0 \x3E\x44 #|0 \x3E\x45 #|0 \x3E\x46 #|0 \x3E\x47 #|0 \x3E\x48 #|0 \x3E\x49 #|0 \x3E\x4A #|0 \x3E\x4B #|0 \x3E\x4C #|0 \x3E\x4D #|0 \x3E\x4E #|0 \x3E\x4F #|0 \x3E\x50 #|0 \x3E\x51 #|0 \x3E\x52 #|0 \x3E\x53 #|0 \x3E\x54 #|0 \x3E\x55 #|0 \x3E\x56 #|0 \x3E\x57 #|0 \x3E\x58 #|0 \x3E\x59 #|0 \x3E\x5A #|0 \x3E\x5B #|0 \x3E\x5C #|0 \x3E\x5D #|0 \x3E\x5E #|0 \x3E\x5F #|0 \x3E\x60 #|0 \x3E\x61 #|0 \x3E\x62 #|0 \x3E\x63 #|0 \x3E\x64 #|0 \x3E\x65 #|0 \x3E\x66 #|0 \x3E\x67 #|0 \x3E\x68 #|0 \x3E\x69 #|0 \x3E\x6A #|0 \x3E\x6B #|0 \x3E\x6C #|0 \x3E\x6D #|0 \x3E\x6E #|0 \x3E\x6F #|0 \x3E\x70 #|0 \x3E\x71 #|0 \x3E\x72 #|0 \x3E\x73 #|0 \x3E\x74 #|0 \x3E\x75 #|0 \x3E\x76 #|0 \x3E\x77 #|0 \x3E\x78 #|0 \x3E\x79 #|0 \x3E\x7A #|0 \x3E\x7B #|0 \x3E\x7C #|0 \x3E\x7D #|0 \x3E\x7E #|0 \x3F\x21 #|0 \x3F\x22 #|0 \x3F\x23 #|0 \x3F\x24 #|0 \x3F\x25 #|0 \x3F\x26 #|0 \x3F\x27 #|0 \x3F\x28 #|0 \x3F\x29 #|0 \x3F\x2A #|0 \x3F\x2B #|0 \x3F\x2C #|0 \x3F\x2D #|0 \x3F\x2E #|0 \x3F\x2F #|0 \x3F\x30 #|0 \x3F\x31 #|0 \x3F\x32 #|0 \x3F\x33 #|0 \x3F\x34 #|0 \x3F\x35 #|0 \x3F\x36 #|0 \x3F\x37 #|0 \x3F\x38 #|0 \x3F\x39 #|0 \x3F\x3A #|0 \x3F\x3B #|0 \x3F\x3C #|0 \x3F\x3D #|0 \x3F\x3E #|0 \x3F\x3F #|0 \x3F\x40 #|0 \x3F\x41 #|0 \x3F\x42 #|0 \x3F\x43 #|0 \x3F\x44 #|0 \x3F\x45 #|0 \x3F\x46 #|0 \x3F\x47 #|0 \x3F\x48 #|0 \x3F\x49 #|0 \x3F\x4A #|0 \x3F\x4B #|0 \x3F\x4C #|0 \x3F\x4D #|0 \x3F\x4E #|0 \x3F\x4F #|0 \x3F\x50 #|0 \x3F\x51 #|0 \x3F\x52 #|0 \x3F\x53 #|0 \x3F\x54 #|0 \x3F\x55 #|0 \x3F\x56 #|0 \x3F\x57 #|0 \x3F\x58 #|0 \x3F\x59 #|0 \x3F\x5A #|0 \x3F\x5B #|0 \x3F\x5C #|0 \x3F\x5D #|0 \x3F\x5E #|0 \x3F\x5F #|0 \x3F\x60 #|0 \x3F\x61 #|0 \x3F\x62 #|0 \x3F\x63 #|0 \x3F\x64 #|0 \x3F\x65 #|0 \x3F\x66 #|0 \x3F\x67 #|0 \x3F\x68 #|0 \x3F\x69 #|0 \x3F\x6A #|0 \x3F\x6B #|0 \x3F\x6C #|0 \x3F\x6D #|0 \x3F\x6E #|0 \x3F\x6F #|0 \x3F\x70 #|0 \x3F\x71 #|0 \x3F\x72 #|0 \x3F\x73 #|0 \x3F\x74 #|0 \x3F\x75 #|0 \x3F\x76 #|0 \x3F\x77 #|0 \x3F\x78 #|0 \x3F\x79 #|0 \x3F\x7A #|0 \x3F\x7B #|0 \x3F\x7C #|0 \x3F\x7D #|0 \x3F\x7E #|0 \x40\x21 #|0 \x40\x22 #|0 \x40\x23 #|0 \x40\x24 #|0 \x40\x25 #|0 \x40\x26 #|0 \x40\x27 #|0 \x40\x28 #|0 \x40\x29 #|0 \x40\x2A #|0 \x40\x2B #|0 \x40\x2C #|0 \x40\x2D #|0 \x40\x2E #|0 \x40\x2F #|0 \x40\x30 #|0 \x40\x31 #|0 \x40\x32 #|0 \x40\x33 #|0 \x40\x34 #|0 \x40\x35 #|0 \x40\x36 #|0 \x40\x37 #|0 \x40\x38 #|0 \x40\x39 #|0 \x40\x3A #|0 \x40\x3B #|0 \x40\x3C #|0 \x40\x3D #|0 \x40\x3E #|0 \x40\x3F #|0 \x40\x40 #|0 \x40\x41 #|0 \x40\x42 #|0 \x40\x43 #|0 \x40\x44 #|0 \x40\x45 #|0 \x40\x46 #|0 \x40\x47 #|0 \x40\x48 #|0 \x40\x49 #|0 \x40\x4A #|0 \x40\x4B #|0 \x40\x4C #|0 \x40\x4D #|0 \x40\x4E #|0 \x40\x4F #|0 \x40\x50 #|0 \x40\x51 #|0 \x40\x52 #|0 \x40\x53 #|0 \x40\x54 #|0 \x40\x55 #|0 \x40\x56 #|0 \x40\x57 #|0 \x40\x58 #|0 \x40\x59 #|0 \x40\x5A #|0 \x40\x5B #|0 \x40\x5C #|0 \x40\x5D #|0 \x40\x5E #|0 \x40\x5F #|0 \x40\x60 #|0 \x40\x61 #|0 \x40\x62 #|0 \x40\x63 #|0 \x40\x64 #|0 \x40\x65 #|0 \x40\x66 #|0 \x40\x67 #|0 \x40\x68 #|0 \x40\x69 #|0 \x40\x6A #|0 \x40\x6B #|0 \x40\x6C #|0 \x40\x6D #|0 \x40\x6E #|0 \x40\x6F #|0 \x40\x70 #|0 \x40\x71 #|0 \x40\x72 #|0 \x40\x73 #|0 \x40\x74 #|0 \x40\x75 #|0 \x40\x76 #|0 \x40\x77 #|0 \x40\x78 #|0 \x40\x79 #|0 \x40\x7A #|0 \x40\x7B #|0 \x40\x7C #|0 \x40\x7D #|0 \x40\x7E #|0 \x41\x21 #|0 \x41\x22 #|0 \x41\x23 #|0 \x41\x24 #|0 \x41\x25 #|0 \x41\x26 #|0 \x41\x27 #|0 \x41\x28 #|0 \x41\x29 #|0 \x41\x2A #|0 \x41\x2B #|0 \x41\x2C #|0 \x41\x2D #|0 \x41\x2E #|0 \x41\x2F #|0 \x41\x30 #|0 \x41\x31 #|0 \x41\x32 #|0 \x41\x33 #|0 \x41\x34 #|0 \x41\x35 #|0 \x41\x36 #|0 \x41\x37 #|0 \x41\x38 #|0 \x41\x39 #|0 \x41\x3A #|0 \x41\x3B #|0 \x41\x3C #|0 \x41\x3D #|0 \x41\x3E #|0 \x41\x3F #|0 \x41\x40 #|0 \x41\x41 #|0 \x41\x42 #|0 \x41\x43 #|0 \x41\x44 #|0 \x41\x45 #|0 \x41\x46 #|0 \x41\x47 #|0 \x41\x48 #|0 \x41\x49 #|0 \x41\x4A #|0 \x41\x4B #|0 \x41\x4C #|0 \x41\x4D #|0 \x41\x4E #|0 \x41\x4F #|0 \x41\x50 #|0 \x41\x51 #|0 \x41\x52 #|0 \x41\x53 #|0 \x41\x54 #|0 \x41\x55 #|0 \x41\x56 #|0 \x41\x57 #|0 \x41\x58 #|0 \x41\x59 #|0 \x41\x5A #|0 \x41\x5B #|0 \x41\x5C #|0 \x41\x5D #|0 \x41\x5E #|0 \x41\x5F #|0 \x41\x60 #|0 \x41\x61 #|0 \x41\x62 #|0 \x41\x63 #|0 \x41\x64 #|0 \x41\x65 #|0 \x41\x66 #|0 \x41\x67 #|0 \x41\x68 #|0 \x41\x69 #|0 \x41\x6A #|0 \x41\x6B #|0 \x41\x6C #|0 \x41\x6D #|0 \x41\x6E #|0 \x41\x6F #|0 \x41\x70 #|0 \x41\x71 #|0 \x41\x72 #|0 \x41\x73 #|0 \x41\x74 #|0 \x41\x75 #|0 \x41\x76 #|0 \x41\x77 #|0 \x41\x78 #|0 \x41\x79 #|0 \x41\x7A #|0 \x41\x7B #|0 \x41\x7C #|0 \x41\x7D #|0 \x41\x7E #|0 \x42\x21 #|0 \x42\x22 #|0 \x42\x23 #|0 \x42\x24 #|0 \x42\x25 #|0 \x42\x26 #|0 \x42\x27 #|0 \x42\x28 #|0 \x42\x29 #|0 \x42\x2A #|0 \x42\x2B #|0 \x42\x2C #|0 \x42\x2D #|0 \x42\x2E #|0 \x42\x2F #|0 \x42\x30 #|0 \x42\x31 #|0 \x42\x32 #|0 \x42\x33 #|0 \x42\x34 #|0 \x42\x35 #|0 \x42\x36 #|0 \x42\x37 #|0 \x42\x38 #|0 \x42\x39 #|0 \x42\x3A #|0 \x42\x3B #|0 \x42\x3C #|0 \x42\x3D #|0 \x42\x3E #|0 \x42\x3F #|0 \x42\x40 #|0 \x42\x41 #|0 \x42\x42 #|0 \x42\x43 #|0 \x42\x44 #|0 \x42\x45 #|0 \x42\x46 #|0 \x42\x47 #|0 \x42\x48 #|0 \x42\x49 #|0 \x42\x4A #|0 \x42\x4B #|0 \x42\x4C #|0 \x42\x4D #|0 \x42\x4E #|0 \x42\x4F #|0 \x42\x50 #|0 \x42\x51 #|0 \x42\x52 #|0 \x42\x53 #|0 \x42\x54 #|0 \x42\x55 #|0 \x42\x56 #|0 \x42\x57 #|0 \x42\x58 #|0 \x42\x59 #|0 \x42\x5A #|0 \x42\x5B #|0 \x42\x5C #|0 \x42\x5D #|0 \x42\x5E #|0 \x42\x5F #|0 \x42\x60 #|0 \x42\x61 #|0 \x42\x62 #|0 \x42\x63 #|0 \x42\x64 #|0 \x42\x65 #|0 \x42\x66 #|0 \x42\x67 #|0 \x42\x68 #|0 \x42\x69 #|0 \x42\x6A #|0 \x42\x6B #|0 \x42\x6C #|0 \x42\x6D #|0 \x42\x6E #|0 \x42\x6F #|0 \x42\x70 #|0 \x42\x71 #|0 \x42\x72 #|0 \x42\x73 #|0 \x42\x74 #|0 \x42\x75 #|0 \x42\x76 #|0 \x42\x77 #|0 \x42\x78 #|0 \x42\x79 #|0 \x42\x7A #|0 \x42\x7B #|0 \x42\x7C #|0 \x42\x7D #|0 \x42\x7E #|0 \x43\x21 #|0 \x43\x22 #|0 \x43\x23 #|0 \x43\x24 #|0 \x43\x25 #|0 \x43\x26 #|0 \x43\x27 #|0 \x43\x28 #|0 \x43\x29 #|0 \x43\x2A #|0 \x43\x2B #|0 \x43\x2C #|0 \x43\x2D #|0 \x43\x2E #|0 \x43\x2F #|0 \x43\x30 #|0 \x43\x31 #|0 \x43\x32 #|0 \x43\x33 #|0 \x43\x34 #|0 \x43\x35 #|0 \x43\x36 #|0 \x43\x37 #|0 \x43\x38 #|0 \x43\x39 #|0 \x43\x3A #|0 \x43\x3B #|0 \x43\x3C #|0 \x43\x3D #|0 \x43\x3E #|0 \x43\x3F #|0 \x43\x40 #|0 \x43\x41 #|0 \x43\x42 #|0 \x43\x43 #|0 \x43\x44 #|0 \x43\x45 #|0 \x43\x46 #|0 \x43\x47 #|0 \x43\x48 #|0 \x43\x49 #|0 \x43\x4A #|0 \x43\x4B #|0 \x43\x4C #|0 \x43\x4D #|0 \x43\x4E #|0 \x43\x4F #|0 \x43\x50 #|0 \x43\x51 #|0 \x43\x52 #|0 \x43\x53 #|0 \x43\x54 #|0 \x43\x55 #|0 \x43\x56 #|0 \x43\x57 #|0 \x43\x58 #|0 \x43\x59 #|0 \x43\x5A #|0 \x43\x5B #|0 \x43\x5C #|0 \x43\x5D #|0 \x43\x5E #|0 \x43\x5F #|0 \x43\x60 #|0 \x43\x61 #|0 \x43\x62 #|0 \x43\x63 #|0 \x43\x64 #|0 \x43\x65 #|0 \x43\x66 #|0 \x43\x67 #|0 \x43\x68 #|0 \x43\x69 #|0 \x43\x6A #|0 \x43\x6B #|0 \x43\x6C #|0 \x43\x6D #|0 \x43\x6E #|0 \x43\x6F #|0 \x43\x70 #|0 \x43\x71 #|0 \x43\x72 #|0 \x43\x73 #|0 \x43\x74 #|0 \x43\x75 #|0 \x43\x76 #|0 \x43\x77 #|0 \x43\x78 #|0 \x43\x79 #|0 \x43\x7A #|0 \x43\x7B #|0 \x43\x7C #|0 \x43\x7D #|0 \x43\x7E #|0 \x44\x21 #|0 \x44\x22 #|0 \x44\x23 #|0 \x44\x24 #|0 \x44\x25 #|0 \x44\x26 #|0 \x44\x27 #|0 \x44\x28 #|0 \x44\x29 #|0 \x44\x2A #|0 \x44\x2B #|0 \x44\x2C #|0 \x44\x2D #|0 \x44\x2E #|0 \x44\x2F #|0 \x44\x30 #|0 \x44\x31 #|0 \x44\x32 #|0 \x44\x33 #|0 \x44\x34 #|0 \x44\x35 #|0 \x44\x36 #|0 \x44\x37 #|0 \x44\x38 #|0 \x44\x39 #|0 \x44\x3A #|0 \x44\x3B #|0 \x44\x3C #|0 \x44\x3D #|0 \x44\x3E #|0 \x44\x3F #|0 \x44\x40 #|0 \x44\x41 #|0 \x44\x42 #|0 \x44\x43 #|0 \x44\x44 #|0 \x44\x45 #|0 \x44\x46 #|0 \x44\x47 #|0 \x44\x48 #|0 \x44\x49 #|0 \x44\x4A #|0 \x44\x4B #|0 \x44\x4C #|0 \x44\x4D #|0 \x44\x4E #|0 \x44\x4F #|0 \x44\x50 #|0 \x44\x51 #|0 \x44\x52 #|0 \x44\x53 #|0 \x44\x54 #|0 \x44\x55 #|0 \x44\x56 #|0 \x44\x57 #|0 \x44\x58 #|0 \x44\x59 #|0 \x44\x5A #|0 \x44\x5B #|0 \x44\x5C #|0 \x44\x5D #|0 \x44\x5E #|0 \x44\x5F #|0 \x44\x60 #|0 \x44\x61 #|0 \x44\x62 #|0 \x44\x63 #|0 \x44\x64 #|0 \x44\x65 #|0 \x44\x66 #|0 \x44\x67 #|0 \x44\x68 #|0 \x44\x69 #|0 \x44\x6A #|0 \x44\x6B #|0 \x44\x6C #|0 \x44\x6D #|0 \x44\x6E #|0 \x44\x6F #|0 \x44\x70 #|0 \x44\x71 #|0 \x44\x72 #|0 \x44\x73 #|0 \x44\x74 #|0 \x44\x75 #|0 \x44\x76 #|0 \x44\x77 #|0 \x44\x78 #|0 \x44\x79 #|0 \x44\x7A #|0 \x44\x7B #|0 \x44\x7C #|0 \x44\x7D #|0 \x44\x7E #|0 \x45\x21 #|0 \x45\x22 #|0 \x45\x23 #|0 \x45\x24 #|0 \x45\x25 #|0 \x45\x26 #|0 \x45\x27 #|0 \x45\x28 #|0 \x45\x29 #|0 \x45\x2A #|0 \x45\x2B #|0 \x45\x2C #|0 \x45\x2D #|0 \x45\x2E #|0 \x45\x2F #|0 \x45\x30 #|0 \x45\x31 #|0 \x45\x32 #|0 \x45\x33 #|0 \x45\x34 #|0 \x45\x35 #|0 \x45\x36 #|0 \x45\x37 #|0 \x45\x38 #|0 \x45\x39 #|0 \x45\x3A #|0 \x45\x3B #|0 \x45\x3C #|0 \x45\x3D #|0 \x45\x3E #|0 \x45\x3F #|0 \x45\x40 #|0 \x45\x41 #|0 \x45\x42 #|0 \x45\x43 #|0 \x45\x44 #|0 \x45\x45 #|0 \x45\x46 #|0 \x45\x47 #|0 \x45\x48 #|0 \x45\x49 #|0 \x45\x4A #|0 \x45\x4B #|0 \x45\x4C #|0 \x45\x4D #|0 \x45\x4E #|0 \x45\x4F #|0 \x45\x50 #|0 \x45\x51 #|0 \x45\x52 #|0 \x45\x53 #|0 \x45\x54 #|0 \x45\x55 #|0 \x45\x56 #|0 \x45\x57 #|0 \x45\x58 #|0 \x45\x59 #|0 \x45\x5A #|0 \x45\x5B #|0 \x45\x5C #|0 \x45\x5D #|0 \x45\x5E #|0 \x45\x5F #|0 \x45\x60 #|0 \x45\x61 #|0 \x45\x62 #|0 \x45\x63 #|0 \x45\x64 #|0 \x45\x65 #|0 \x45\x66 #|0 \x45\x67 #|0 \x45\x68 #|0 \x45\x69 #|0 \x45\x6A #|0 \x45\x6B #|0 \x45\x6C #|0 \x45\x6D #|0 \x45\x6E #|0 \x45\x6F #|0 \x45\x70 #|0 \x45\x71 #|0 \x45\x72 #|0 \x45\x73 #|0 \x45\x74 #|0 \x45\x75 #|0 \x45\x76 #|0 \x45\x77 #|0 \x45\x78 #|0 \x45\x79 #|0 \x45\x7A #|0 \x45\x7B #|0 \x45\x7C #|0 \x45\x7D #|0 \x45\x7E #|0 \x46\x21 #|0 \x46\x22 #|0 \x46\x23 #|0 \x46\x24 #|0 \x46\x25 #|0 \x46\x26 #|0 \x46\x27 #|0 \x46\x28 #|0 \x46\x29 #|0 \x46\x2A #|0 \x46\x2B #|0 \x46\x2C #|0 \x46\x2D #|0 \x46\x2E #|0 \x46\x2F #|0 \x46\x30 #|0 \x46\x31 #|0 \x46\x32 #|0 \x46\x33 #|0 \x46\x34 #|0 \x46\x35 #|0 \x46\x36 #|0 \x46\x37 #|0 \x46\x38 #|0 \x46\x39 #|0 \x46\x3A #|0 \x46\x3B #|0 \x46\x3C #|0 \x46\x3D #|0 \x46\x3E #|0 \x46\x3F #|0 \x46\x40 #|0 \x46\x41 #|0 \x46\x42 #|0 \x46\x43 #|0 \x46\x44 #|0 \x46\x45 #|0 \x46\x46 #|0 \x46\x47 #|0 \x46\x48 #|0 \x46\x49 #|0 \x46\x4A #|0 \x46\x4B #|0 \x46\x4C #|0 \x46\x4D #|0 \x46\x4E #|0 \x46\x4F #|0 \x46\x50 #|0 \x46\x51 #|0 \x46\x52 #|0 \x46\x53 #|0 \x46\x54 #|0 \x46\x55 #|0 \x46\x56 #|0 \x46\x57 #|0 \x46\x58 #|0 \x46\x59 #|0 \x46\x5A #|0 \x46\x5B #|0 \x46\x5C #|0 \x46\x5D #|0 \x46\x5E #|0 \x46\x5F #|0 \x46\x60 #|0 \x46\x61 #|0 \x46\x62 #|0 \x46\x63 #|0 \x46\x64 #|0 \x46\x65 #|0 \x46\x66 #|0 \x46\x67 #|0 \x46\x68 #|0 \x46\x69 #|0 \x46\x6A #|0 \x46\x6B #|0 \x46\x6C #|0 \x46\x6D #|0 \x46\x6E #|0 \x46\x6F #|0 \x46\x70 #|0 \x46\x71 #|0 \x46\x72 #|0 \x46\x73 #|0 \x46\x74 #|0 \x46\x75 #|0 \x46\x76 #|0 \x46\x77 #|0 \x46\x78 #|0 \x46\x79 #|0 \x46\x7A #|0 \x46\x7B #|0 \x46\x7C #|0 \x46\x7D #|0 \x46\x7E #|0 \x47\x21 #|0 \x47\x22 #|0 \x47\x23 #|0 \x47\x24 #|0 \x47\x25 #|0 \x47\x26 #|0 \x47\x27 #|0 \x47\x28 #|0 \x47\x29 #|0 \x47\x2A #|0 \x47\x2B #|0 \x47\x2C #|0 \x47\x2D #|0 \x47\x2E #|0 \x47\x2F #|0 \x47\x30 #|0 \x47\x31 #|0 \x47\x32 #|0 \x47\x33 #|0 \x47\x34 #|0 \x47\x35 #|0 \x47\x36 #|0 \x47\x37 #|0 \x47\x38 #|0 \x47\x39 #|0 \x47\x3A #|0 \x47\x3B #|0 \x47\x3C #|0 \x47\x3D #|0 \x47\x3E #|0 \x47\x3F #|0 \x47\x40 #|0 \x47\x41 #|0 \x47\x42 #|0 \x47\x43 #|0 \x47\x44 #|0 \x47\x45 #|0 \x47\x46 #|0 \x47\x47 #|0 \x47\x48 #|0 \x47\x49 #|0 \x47\x4A #|0 \x47\x4B #|0 \x47\x4C #|0 \x47\x4D #|0 \x47\x4E #|0 \x47\x4F #|0 \x47\x50 #|0 \x47\x51 #|0 \x47\x52 #|0 \x47\x53 #|0 \x47\x54 #|0 \x47\x55 #|0 \x47\x56 #|0 \x47\x57 #|0 \x47\x58 #|0 \x47\x59 #|0 \x47\x5A #|0 \x47\x5B #|0 \x47\x5C #|0 \x47\x5D #|0 \x47\x5E #|0 \x47\x5F #|0 \x47\x60 #|0 \x47\x61 #|0 \x47\x62 #|0 \x47\x63 #|0 \x47\x64 #|0 \x47\x65 #|0 \x47\x66 #|0 \x47\x67 #|0 \x47\x68 #|0 \x47\x69 #|0 \x47\x6A #|0 \x47\x6B #|0 \x47\x6C #|0 \x47\x6D #|0 \x47\x6E #|0 \x47\x6F #|0 \x47\x70 #|0 \x47\x71 #|0 \x47\x72 #|0 \x47\x73 #|0 \x47\x74 #|0 \x47\x75 #|0 \x47\x76 #|0 \x47\x77 #|0 \x47\x78 #|0 \x47\x79 #|0 \x47\x7A #|0 \x47\x7B #|0 \x47\x7C #|0 \x47\x7D #|0 \x47\x7E #|0 \x48\x21 #|0 \x48\x22 #|0 \x48\x23 #|0 \x48\x24 #|0 \x48\x25 #|0 \x48\x26 #|0 \x48\x27 #|0 \x48\x28 #|0 \x48\x29 #|0 \x48\x2A #|0 \x48\x2B #|0 \x48\x2C #|0 \x48\x2D #|0 \x48\x2E #|0 \x48\x2F #|0 \x48\x30 #|0 \x48\x31 #|0 \x48\x32 #|0 \x48\x33 #|0 \x48\x34 #|0 \x48\x35 #|0 \x48\x36 #|0 \x48\x37 #|0 \x48\x38 #|0 \x48\x39 #|0 \x48\x3A #|0 \x48\x3B #|0 \x48\x3C #|0 \x48\x3D #|0 \x48\x3E #|0 \x48\x3F #|0 \x48\x40 #|0 \x48\x41 #|0 \x48\x42 #|0 \x48\x43 #|0 \x48\x44 #|0 \x48\x45 #|0 \x48\x46 #|0 \x48\x47 #|0 \x48\x48 #|0 \x48\x49 #|0 \x48\x4A #|0 \x48\x4B #|0 \x48\x4C #|0 \x48\x4D #|0 \x48\x4E #|0 \x48\x4F #|0 \x48\x50 #|0 \x48\x51 #|0 \x48\x52 #|0 \x48\x53 #|0 \x48\x54 #|0 \x48\x55 #|0 \x48\x56 #|0 \x48\x57 #|0 \x48\x58 #|0 \x48\x59 #|0 \x48\x5A #|0 \x48\x5B #|0 \x48\x5C #|0 \x48\x5D #|0 \x48\x5E #|0 \x48\x5F #|0 \x48\x60 #|0 \x48\x61 #|0 \x48\x62 #|0 \x48\x63 #|0 \x48\x64 #|0 \x48\x65 #|0 \x48\x66 #|0 \x48\x67 #|0 \x48\x68 #|0 \x48\x69 #|0 \x48\x6A #|0 \x48\x6B #|0 \x48\x6C #|0 \x48\x6D #|0 \x48\x6E #|0 \x48\x6F #|0 \x48\x70 #|0 \x48\x71 #|0 \x48\x72 #|0 \x48\x73 #|0 \x48\x74 #|0 \x48\x75 #|0 \x48\x76 #|0 \x48\x77 #|0 \x48\x78 #|0 \x48\x79 #|0 \x48\x7A #|0 \x48\x7B #|0 \x48\x7C #|0 \x48\x7D #|0 \x48\x7E #|0 \x49\x21 #|0 \x49\x22 #|0 \x49\x23 #|0 \x49\x24 #|0 \x49\x25 #|0 \x49\x26 #|0 \x49\x27 #|0 \x49\x28 #|0 \x49\x29 #|0 \x49\x2A #|0 \x49\x2B #|0 \x49\x2C #|0 \x49\x2D #|0 \x49\x2E #|0 \x49\x2F #|0 \x49\x30 #|0 \x49\x31 #|0 \x49\x32 #|0 \x49\x33 #|0 \x49\x34 #|0 \x49\x35 #|0 \x49\x36 #|0 \x49\x37 #|0 \x49\x38 #|0 \x49\x39 #|0 \x49\x3A #|0 \x49\x3B #|0 \x49\x3C #|0 \x49\x3D #|0 \x49\x3E #|0 \x49\x3F #|0 \x49\x40 #|0 \x49\x41 #|0 \x49\x42 #|0 \x49\x43 #|0 \x49\x44 #|0 \x49\x45 #|0 \x49\x46 #|0 \x49\x47 #|0 \x49\x48 #|0 \x49\x49 #|0 \x49\x4A #|0 \x49\x4B #|0 \x49\x4C #|0 \x49\x4D #|0 \x49\x4E #|0 \x49\x4F #|0 \x49\x50 #|0 \x49\x51 #|0 \x49\x52 #|0 \x49\x53 #|0 \x49\x54 #|0 \x49\x55 #|0 \x49\x56 #|0 \x49\x57 #|0 \x49\x58 #|0 \x49\x59 #|0 \x49\x5A #|0 \x49\x5B #|0 \x49\x5C #|0 \x49\x5D #|0 \x49\x5E #|0 \x49\x5F #|0 \x49\x60 #|0 \x49\x61 #|0 \x49\x62 #|0 \x49\x63 #|0 \x49\x64 #|0 \x49\x65 #|0 \x49\x66 #|0 \x49\x67 #|0 \x49\x68 #|0 \x49\x69 #|0 \x49\x6A #|0 \x49\x6B #|0 \x49\x6C #|0 \x49\x6D #|0 \x49\x6E #|0 \x49\x6F #|0 \x49\x70 #|0 \x49\x71 #|0 \x49\x72 #|0 \x49\x73 #|0 \x49\x74 #|0 \x49\x75 #|0 \x49\x76 #|0 \x49\x77 #|0 \x49\x78 #|0 \x49\x79 #|0 \x49\x7A #|0 \x49\x7B #|0 \x49\x7C #|0 \x49\x7D #|0 \x49\x7E #|0 \x4A\x21 #|0 \x4A\x22 #|0 \x4A\x23 #|0 \x4A\x24 #|0 \x4A\x25 #|0 \x4A\x26 #|0 \x4A\x27 #|0 \x4A\x28 #|0 \x4A\x29 #|0 \x4A\x2A #|0 \x4A\x2B #|0 \x4A\x2C #|0 \x4A\x2D #|0 \x4A\x2E #|0 \x4A\x2F #|0 \x4A\x30 #|0 \x4A\x31 #|0 \x4A\x32 #|0 \x4A\x33 #|0 \x4A\x34 #|0 \x4A\x35 #|0 \x4A\x36 #|0 \x4A\x37 #|0 \x4A\x38 #|0 \x4A\x39 #|0 \x4A\x3A #|0 \x4A\x3B #|0 \x4A\x3C #|0 \x4A\x3D #|0 \x4A\x3E #|0 \x4A\x3F #|0 \x4A\x40 #|0 \x4A\x41 #|0 \x4A\x42 #|0 \x4A\x43 #|0 \x4A\x44 #|0 \x4A\x45 #|0 \x4A\x46 #|0 \x4A\x47 #|0 \x4A\x48 #|0 \x4A\x49 #|0 \x4A\x4A #|0 \x4A\x4B #|0 \x4A\x4C #|0 \x4A\x4D #|0 \x4A\x4E #|0 \x4A\x4F #|0 \x4A\x50 #|0 \x4A\x51 #|0 \x4A\x52 #|0 \x4A\x53 #|0 \x4A\x54 #|0 \x4A\x55 #|0 \x4A\x56 #|0 \x4A\x57 #|0 \x4A\x58 #|0 \x4A\x59 #|0 \x4A\x5A #|0 \x4A\x5B #|0 \x4A\x5C #|0 \x4A\x5D #|0 \x4A\x5E #|0 \x4A\x5F #|0 \x4A\x60 #|0 \x4A\x61 #|0 \x4A\x62 #|0 \x4A\x63 #|0 \x4A\x64 #|0 \x4A\x65 #|0 \x4A\x66 #|0 \x4A\x67 #|0 \x4A\x68 #|0 \x4A\x69 #|0 \x4A\x6A #|0 \x4A\x6B #|0 \x4A\x6C #|0 \x4A\x6D #|0 \x4A\x6E #|0 \x4A\x6F #|0 \x4A\x70 #|0 \x4A\x71 #|0 \x4A\x72 #|0 \x4A\x73 #|0 \x4A\x74 #|0 \x4A\x75 #|0 \x4A\x76 #|0 \x4A\x77 #|0 \x4A\x78 #|0 \x4A\x79 #|0 \x4A\x7A #|0 \x4A\x7B #|0 \x4A\x7C #|0 \x4A\x7D #|0 \x4A\x7E #|0 \x4B\x21 #|0 \x4B\x22 #|0 \x4B\x23 #|0 \x4B\x24 #|0 \x4B\x25 #|0 \x4B\x26 #|0 \x4B\x27 #|0 \x4B\x28 #|0 \x4B\x29 #|0 \x4B\x2A #|0 \x4B\x2B #|0 \x4B\x2C #|0 \x4B\x2D #|0 \x4B\x2E #|0 \x4B\x2F #|0 \x4B\x30 #|0 \x4B\x31 #|0 \x4B\x32 #|0 \x4B\x33 #|0 \x4B\x34 #|0 \x4B\x35 #|0 \x4B\x36 #|0 \x4B\x37 #|0 \x4B\x38 #|0 \x4B\x39 #|0 \x4B\x3A #|0 \x4B\x3B #|0 \x4B\x3C #|0 \x4B\x3D #|0 \x4B\x3E #|0 \x4B\x3F #|0 \x4B\x40 #|0 \x4B\x41 #|0 \x4B\x42 #|0 \x4B\x43 #|0 \x4B\x44 #|0 \x4B\x45 #|0 \x4B\x46 #|0 \x4B\x47 #|0 \x4B\x48 #|0 \x4B\x49 #|0 \x4B\x4A #|0 \x4B\x4B #|0 \x4B\x4C #|0 \x4B\x4D #|0 \x4B\x4E #|0 \x4B\x4F #|0 \x4B\x50 #|0 \x4B\x51 #|0 \x4B\x52 #|0 \x4B\x53 #|0 \x4B\x54 #|0 \x4B\x55 #|0 \x4B\x56 #|0 \x4B\x57 #|0 \x4B\x58 #|0 \x4B\x59 #|0 \x4B\x5A #|0 \x4B\x5B #|0 \x4B\x5C #|0 \x4B\x5D #|0 \x4B\x5E #|0 \x4B\x5F #|0 \x4B\x60 #|0 \x4B\x61 #|0 \x4B\x62 #|0 \x4B\x63 #|0 \x4B\x64 #|0 \x4B\x65 #|0 \x4B\x66 #|0 \x4B\x67 #|0 \x4B\x68 #|0 \x4B\x69 #|0 \x4B\x6A #|0 \x4B\x6B #|0 \x4B\x6C #|0 \x4B\x6D #|0 \x4B\x6E #|0 \x4B\x6F #|0 \x4B\x70 #|0 \x4B\x71 #|0 \x4B\x72 #|0 \x4B\x73 #|0 \x4B\x74 #|0 \x4B\x75 #|0 \x4B\x76 #|0 \x4B\x77 #|0 \x4B\x78 #|0 \x4B\x79 #|0 \x4B\x7A #|0 \x4B\x7B #|0 \x4B\x7C #|0 \x4B\x7D #|0 \x4B\x7E #|0 \x4C\x21 #|0 \x4C\x22 #|0 \x4C\x23 #|0 \x4C\x24 #|0 \x4C\x25 #|0 \x4C\x26 #|0 \x4C\x27 #|0 \x4C\x28 #|0 \x4C\x29 #|0 \x4C\x2A #|0 \x4C\x2B #|0 \x4C\x2C #|0 \x4C\x2D #|0 \x4C\x2E #|0 \x4C\x2F #|0 \x4C\x30 #|0 \x4C\x31 #|0 \x4C\x32 #|0 \x4C\x33 #|0 \x4C\x34 #|0 \x4C\x35 #|0 \x4C\x36 #|0 \x4C\x37 #|0 \x4C\x38 #|0 \x4C\x39 #|0 \x4C\x3A #|0 \x4C\x3B #|0 \x4C\x3C #|0 \x4C\x3D #|0 \x4C\x3E #|0 \x4C\x3F #|0 \x4C\x40 #|0 \x4C\x41 #|0 \x4C\x42 #|0 \x4C\x43 #|0 \x4C\x44 #|0 \x4C\x45 #|0 \x4C\x46 #|0 \x4C\x47 #|0 \x4C\x48 #|0 \x4C\x49 #|0 \x4C\x4A #|0 \x4C\x4B #|0 \x4C\x4C #|0 \x4C\x4D #|0 \x4C\x4E #|0 \x4C\x4F #|0 \x4C\x50 #|0 \x4C\x51 #|0 \x4C\x52 #|0 \x4C\x53 #|0 \x4C\x54 #|0 \x4C\x55 #|0 \x4C\x56 #|0 \x4C\x57 #|0 \x4C\x58 #|0 \x4C\x59 #|0 \x4C\x5A #|0 \x4C\x5B #|0 \x4C\x5C #|0 \x4C\x5D #|0 \x4C\x5E #|0 \x4C\x5F #|0 \x4C\x60 #|0 \x4C\x61 #|0 \x4C\x62 #|0 \x4C\x63 #|0 \x4C\x64 #|0 \x4C\x65 #|0 \x4C\x66 #|0 \x4C\x67 #|0 \x4C\x68 #|0 \x4C\x69 #|0 \x4C\x6A #|0 \x4C\x6B #|0 \x4C\x6C #|0 \x4C\x6D #|0 \x4C\x6E #|0 \x4C\x6F #|0 \x4C\x70 #|0 \x4C\x71 #|0 \x4C\x72 #|0 \x4C\x73 #|0 \x4C\x74 #|0 \x4C\x75 #|0 \x4C\x76 #|0 \x4C\x77 #|0 \x4C\x78 #|0 \x4C\x79 #|0 \x4C\x7A #|0 \x4C\x7B #|0 \x4C\x7C #|0 \x4C\x7D #|0 \x4C\x7E #|0 \x4D\x21 #|0 \x4D\x22 #|0 \x4D\x23 #|0 \x4D\x24 #|0 \x4D\x25 #|0 \x4D\x26 #|0 \x4D\x27 #|0 \x4D\x28 #|0 \x4D\x29 #|0 \x4D\x2A #|0 \x4D\x2B #|0 \x4D\x2C #|0 \x4D\x2D #|0 \x4D\x2E #|0 \x4D\x2F #|0 \x4D\x30 #|0 \x4D\x31 #|0 \x4D\x32 #|0 \x4D\x33 #|0 \x4D\x34 #|0 \x4D\x35 #|0 \x4D\x36 #|0 \x4D\x37 #|0 \x4D\x38 #|0 \x4D\x39 #|0 \x4D\x3A #|0 \x4D\x3B #|0 \x4D\x3C #|0 \x4D\x3D #|0 \x4D\x3E #|0 \x4D\x3F #|0 \x4D\x40 #|0 \x4D\x41 #|0 \x4D\x42 #|0 \x4D\x43 #|0 \x4D\x44 #|0 \x4D\x45 #|0 \x4D\x46 #|0 \x4D\x47 #|0 \x4D\x48 #|0 \x4D\x49 #|0 \x4D\x4A #|0 \x4D\x4B #|0 \x4D\x4C #|0 \x4D\x4D #|0 \x4D\x4E #|0 \x4D\x4F #|0 \x4D\x50 #|0 \x4D\x51 #|0 \x4D\x52 #|0 \x4D\x53 #|0 \x4D\x54 #|0 \x4D\x55 #|0 \x4D\x56 #|0 \x4D\x57 #|0 \x4D\x58 #|0 \x4D\x59 #|0 \x4D\x5A #|0 \x4D\x5B #|0 \x4D\x5C #|0 \x4D\x5D #|0 \x4D\x5E #|0 \x4D\x5F #|0 \x4D\x60 #|0 \x4D\x61 #|0 \x4D\x62 #|0 \x4D\x63 #|0 \x4D\x64 #|0 \x4D\x65 #|0 \x4D\x66 #|0 \x4D\x67 #|0 \x4D\x68 #|0 \x4D\x69 #|0 \x4D\x6A #|0 \x4D\x6B #|0 \x4D\x6C #|0 \x4D\x6D #|0 \x4D\x6E #|0 \x4D\x6F #|0 \x4D\x70 #|0 \x4D\x71 #|0 \x4D\x72 #|0 \x4D\x73 #|0 \x4D\x74 #|0 \x4D\x75 #|0 \x4D\x76 #|0 \x4D\x77 #|0 \x4D\x78 #|0 \x4D\x79 #|0 \x4D\x7A #|0 \x4D\x7B #|0 \x4D\x7C #|0 \x4D\x7D #|0 \x4D\x7E #|0 \x4E\x21 #|0 \x4E\x22 #|0 \x4E\x23 #|0 \x4E\x24 #|0 \x4E\x25 #|0 \x4E\x26 #|0 \x4E\x27 #|0 \x4E\x28 #|0 \x4E\x29 #|0 \x4E\x2A #|0 \x4E\x2B #|0 \x4E\x2C #|0 \x4E\x2D #|0 \x4E\x2E #|0 \x4E\x2F #|0 \x4E\x30 #|0 \x4E\x31 #|0 \x4E\x32 #|0 \x4E\x33 #|0 \x4E\x34 #|0 \x4E\x35 #|0 \x4E\x36 #|0 \x4E\x37 #|0 \x4E\x38 #|0 \x4E\x39 #|0 \x4E\x3A #|0 \x4E\x3B #|0 \x4E\x3C #|0 \x4E\x3D #|0 \x4E\x3E #|0 \x4E\x3F #|0 \x4E\x40 #|0 \x4E\x41 #|0 \x4E\x42 #|0 \x4E\x43 #|0 \x4E\x44 #|0 \x4E\x45 #|0 \x4E\x46 #|0 \x4E\x47 #|0 \x4E\x48 #|0 \x4E\x49 #|0 \x4E\x4A #|0 \x4E\x4B #|0 \x4E\x4C #|0 \x4E\x4D #|0 \x4E\x4E #|0 \x4E\x4F #|0 \x4E\x50 #|0 \x4E\x51 #|0 \x4E\x52 #|0 \x4E\x53 #|0 \x4E\x54 #|0 \x4E\x55 #|0 \x4E\x56 #|0 \x4E\x57 #|0 \x4E\x58 #|0 \x4E\x59 #|0 \x4E\x5A #|0 \x4E\x5B #|0 \x4E\x5C #|0 \x4E\x5D #|0 \x4E\x5E #|0 \x4E\x5F #|0 \x4E\x60 #|0 \x4E\x61 #|0 \x4E\x62 #|0 \x4E\x63 #|0 \x4E\x64 #|0 \x4E\x65 #|0 \x4E\x66 #|0 \x4E\x67 #|0 \x4E\x68 #|0 \x4E\x69 #|0 \x4E\x6A #|0 \x4E\x6B #|0 \x4E\x6C #|0 \x4E\x6D #|0 \x4E\x6E #|0 \x4E\x6F #|0 \x4E\x70 #|0 \x4E\x71 #|0 \x4E\x72 #|0 \x4E\x73 #|0 \x4E\x74 #|0 \x4E\x75 #|0 \x4E\x76 #|0 \x4E\x77 #|0 \x4E\x78 #|0 \x4E\x79 #|0 \x4E\x7A #|0 \x4E\x7B #|0 \x4E\x7C #|0 \x4E\x7D #|0 \x4E\x7E #|0 \x4F\x21 #|0 \x4F\x22 #|0 \x4F\x23 #|0 \x4F\x24 #|0 \x4F\x25 #|0 \x4F\x26 #|0 \x4F\x27 #|0 \x4F\x28 #|0 \x4F\x29 #|0 \x4F\x2A #|0 \x4F\x2B #|0 \x4F\x2C #|0 \x4F\x2D #|0 \x4F\x2E #|0 \x4F\x2F #|0 \x4F\x30 #|0 \x4F\x31 #|0 \x4F\x32 #|0 \x4F\x33 #|0 \x4F\x34 #|0 \x4F\x35 #|0 \x4F\x36 #|0 \x4F\x37 #|0 \x4F\x38 #|0 \x4F\x39 #|0 \x4F\x3A #|0 \x4F\x3B #|0 \x4F\x3C #|0 \x4F\x3D #|0 \x4F\x3E #|0 \x4F\x3F #|0 \x4F\x40 #|0 \x4F\x41 #|0 \x4F\x42 #|0 \x4F\x43 #|0 \x4F\x44 #|0 \x4F\x45 #|0 \x4F\x46 #|0 \x4F\x47 #|0 \x4F\x48 #|0 \x4F\x49 #|0 \x4F\x4A #|0 \x4F\x4B #|0 \x4F\x4C #|0 \x4F\x4D #|0 \x4F\x4E #|0 \x4F\x4F #|0 \x4F\x50 #|0 \x4F\x51 #|0 \x4F\x52 #|0 \x4F\x53 #|0 \x50\x21 #|0 \x50\x22 #|0 \x50\x23 #|0 \x50\x24 #|0 \x50\x25 #|0 \x50\x26 #|0 \x50\x27 #|0 \x50\x28 #|0 \x50\x29 #|0 \x50\x2A #|0 \x50\x2B #|0 \x50\x2C #|0 \x50\x2D #|0 \x50\x2E #|0 \x50\x2F #|0 \x50\x30 #|0 \x50\x31 #|0 \x50\x32 #|0 \x50\x33 #|0 \x50\x34 #|0 \x50\x35 #|0 \x50\x36 #|0 \x50\x37 #|0 \x50\x38 #|0 \x50\x39 #|0 \x50\x3A #|0 \x50\x3B #|0 \x50\x3C #|0 \x50\x3D #|0 \x50\x3E #|0 \x50\x3F #|0 \x50\x40 #|0 \x50\x41 #|0 \x50\x42 #|0 \x50\x43 #|0 \x50\x44 #|0 \x50\x45 #|0 \x50\x46 #|0 \x50\x47 #|0 \x50\x48 #|0 \x50\x49 #|0 \x50\x4A #|0 \x50\x4B #|0 \x50\x4C #|0 \x50\x4D #|0 \x50\x4E #|0 \x50\x4F #|0 \x50\x50 #|0 \x50\x51 #|0 \x50\x52 #|0 \x50\x53 #|0 \x50\x54 #|0 \x50\x55 #|0 \x50\x56 #|0 \x50\x57 #|0 \x50\x58 #|0 \x50\x59 #|0 \x50\x5A #|0 \x50\x5B #|0 \x50\x5C #|0 \x50\x5D #|0 \x50\x5E #|0 \x50\x5F #|0 \x50\x60 #|0 \x50\x61 #|0 \x50\x62 #|0 \x50\x63 #|0 \x50\x64 #|0 \x50\x65 #|0 \x50\x66 #|0 \x50\x67 #|0 \x50\x68 #|0 \x50\x69 #|0 \x50\x6A #|0 \x50\x6B #|0 \x50\x6C #|0 \x50\x6D #|0 \x50\x6E #|0 \x50\x6F #|0 \x50\x70 #|0 \x50\x71 #|0 \x50\x72 #|0 \x50\x73 #|0 \x50\x74 #|0 \x50\x75 #|0 \x50\x76 #|0 \x50\x77 #|0 \x50\x78 #|0 \x50\x79 #|0 \x50\x7A #|0 \x50\x7B #|0 \x50\x7C #|0 \x50\x7D #|0 \x50\x7E #|0 \x51\x21 #|0 \x51\x22 #|0 \x51\x23 #|0 \x51\x24 #|0 \x51\x25 #|0 \x51\x26 #|0 \x51\x27 #|0 \x51\x28 #|0 \x51\x29 #|0 \x51\x2A #|0 \x51\x2B #|0 \x51\x2C #|0 \x51\x2D #|0 \x51\x2E #|0 \x51\x2F #|0 \x51\x30 #|0 \x51\x31 #|0 \x51\x32 #|0 \x51\x33 #|0 \x51\x34 #|0 \x51\x35 #|0 \x51\x36 #|0 \x51\x37 #|0 \x51\x38 #|0 \x51\x39 #|0 \x51\x3A #|0 \x51\x3B #|0 \x51\x3C #|0 \x51\x3D #|0 \x51\x3E #|0 \x51\x3F #|0 \x51\x40 #|0 \x51\x41 #|0 \x51\x42 #|0 \x51\x43 #|0 \x51\x44 #|0 \x51\x45 #|0 \x51\x46 #|0 \x51\x47 #|0 \x51\x48 #|0 \x51\x49 #|0 \x51\x4A #|0 \x51\x4B #|0 \x51\x4C #|0 \x51\x4D #|0 \x51\x4E #|0 \x51\x4F #|0 \x51\x50 #|0 \x51\x51 #|0 \x51\x52 #|0 \x51\x53 #|0 \x51\x54 #|0 \x51\x55 #|0 \x51\x56 #|0 \x51\x57 #|0 \x51\x58 #|0 \x51\x59 #|0 \x51\x5A #|0 \x51\x5B #|0 \x51\x5C #|0 \x51\x5D #|0 \x51\x5E #|0 \x51\x5F #|0 \x51\x60 #|0 \x51\x61 #|0 \x51\x62 #|0 \x51\x63 #|0 \x51\x64 #|0 \x51\x65 #|0 \x51\x66 #|0 \x51\x67 #|0 \x51\x68 #|0 \x51\x69 #|0 \x51\x6A #|0 \x51\x6B #|0 \x51\x6C #|0 \x51\x6D #|0 \x51\x6E #|0 \x51\x6F #|0 \x51\x70 #|0 \x51\x71 #|0 \x51\x72 #|0 \x51\x73 #|0 \x51\x74 #|0 \x51\x75 #|0 \x51\x76 #|0 \x51\x77 #|0 \x51\x78 #|0 \x51\x79 #|0 \x51\x7A #|0 \x51\x7B #|0 \x51\x7C #|0 \x51\x7D #|0 \x51\x7E #|0 \x52\x21 #|0 \x52\x22 #|0 \x52\x23 #|0 \x52\x24 #|0 \x52\x25 #|0 \x52\x26 #|0 \x52\x27 #|0 \x52\x28 #|0 \x52\x29 #|0 \x52\x2A #|0 \x52\x2B #|0 \x52\x2C #|0 \x52\x2D #|0 \x52\x2E #|0 \x52\x2F #|0 \x52\x30 #|0 \x52\x31 #|0 \x52\x32 #|0 \x52\x33 #|0 \x52\x34 #|0 \x52\x35 #|0 \x52\x36 #|0 \x52\x37 #|0 \x52\x38 #|0 \x52\x39 #|0 \x52\x3A #|0 \x52\x3B #|0 \x52\x3C #|0 \x52\x3D #|0 \x52\x3E #|0 \x52\x3F #|0 \x52\x40 #|0 \x52\x41 #|0 \x52\x42 #|0 \x52\x43 #|0 \x52\x44 #|0 \x52\x45 #|0 \x52\x46 #|0 \x52\x47 #|0 \x52\x48 #|0 \x52\x49 #|0 \x52\x4A #|0 \x52\x4B #|0 \x52\x4C #|0 \x52\x4D #|0 \x52\x4E #|0 \x52\x4F #|0 \x52\x50 #|0 \x52\x51 #|0 \x52\x52 #|0 \x52\x53 #|0 \x52\x54 #|0 \x52\x55 #|0 \x52\x56 #|0 \x52\x57 #|0 \x52\x58 #|0 \x52\x59 #|0 \x52\x5A #|0 \x52\x5B #|0 \x52\x5C #|0 \x52\x5D #|0 \x52\x5E #|0 \x52\x5F #|0 \x52\x60 #|0 \x52\x61 #|0 \x52\x62 #|0 \x52\x63 #|0 \x52\x64 #|0 \x52\x65 #|0 \x52\x66 #|0 \x52\x67 #|0 \x52\x68 #|0 \x52\x69 #|0 \x52\x6A #|0 \x52\x6B #|0 \x52\x6C #|0 \x52\x6D #|0 \x52\x6E #|0 \x52\x6F #|0 \x52\x70 #|0 \x52\x71 #|0 \x52\x72 #|0 \x52\x73 #|0 \x52\x74 #|0 \x52\x75 #|0 \x52\x76 #|0 \x52\x77 #|0 \x52\x78 #|0 \x52\x79 #|0 \x52\x7A #|0 \x52\x7B #|0 \x52\x7C #|0 \x52\x7D #|0 \x52\x7E #|0 \x53\x21 #|0 \x53\x22 #|0 \x53\x23 #|0 \x53\x24 #|0 \x53\x25 #|0 \x53\x26 #|0 \x53\x27 #|0 \x53\x28 #|0 \x53\x29 #|0 \x53\x2A #|0 \x53\x2B #|0 \x53\x2C #|0 \x53\x2D #|0 \x53\x2E #|0 \x53\x2F #|0 \x53\x30 #|0 \x53\x31 #|0 \x53\x32 #|0 \x53\x33 #|0 \x53\x34 #|0 \x53\x35 #|0 \x53\x36 #|0 \x53\x37 #|0 \x53\x38 #|0 \x53\x39 #|0 \x53\x3A #|0 \x53\x3B #|0 \x53\x3C #|0 \x53\x3D #|0 \x53\x3E #|0 \x53\x3F #|0 \x53\x40 #|0 \x53\x41 #|0 \x53\x42 #|0 \x53\x43 #|0 \x53\x44 #|0 \x53\x45 #|0 \x53\x46 #|0 \x53\x47 #|0 \x53\x48 #|0 \x53\x49 #|0 \x53\x4A #|0 \x53\x4B #|0 \x53\x4C #|0 \x53\x4D #|0 \x53\x4E #|0 \x53\x4F #|0 \x53\x50 #|0 \x53\x51 #|0 \x53\x52 #|0 \x53\x53 #|0 \x53\x54 #|0 \x53\x55 #|0 \x53\x56 #|0 \x53\x57 #|0 \x53\x58 #|0 \x53\x59 #|0 \x53\x5A #|0 \x53\x5B #|0 \x53\x5C #|0 \x53\x5D #|0 \x53\x5E #|0 \x53\x5F #|0 \x53\x60 #|0 \x53\x61 #|0 \x53\x62 #|0 \x53\x63 #|0 \x53\x64 #|0 \x53\x65 #|0 \x53\x66 #|0 \x53\x67 #|0 \x53\x68 #|0 \x53\x69 #|0 \x53\x6A #|0 \x53\x6B #|0 \x53\x6C #|0 \x53\x6D #|0 \x53\x6E #|0 \x53\x6F #|0 \x53\x70 #|0 \x53\x71 #|0 \x53\x72 #|0 \x53\x73 #|0 \x53\x74 #|0 \x53\x75 #|0 \x53\x76 #|0 \x53\x77 #|0 \x53\x78 #|0 \x53\x79 #|0 \x53\x7A #|0 \x53\x7B #|0 \x53\x7C #|0 \x53\x7D #|0 \x53\x7E #|0 \x54\x21 #|0 \x54\x22 #|0 \x54\x23 #|0 \x54\x24 #|0 \x54\x25 #|0 \x54\x26 #|0 \x54\x27 #|0 \x54\x28 #|0 \x54\x29 #|0 \x54\x2A #|0 \x54\x2B #|0 \x54\x2C #|0 \x54\x2D #|0 \x54\x2E #|0 \x54\x2F #|0 \x54\x30 #|0 \x54\x31 #|0 \x54\x32 #|0 \x54\x33 #|0 \x54\x34 #|0 \x54\x35 #|0 \x54\x36 #|0 \x54\x37 #|0 \x54\x38 #|0 \x54\x39 #|0 \x54\x3A #|0 \x54\x3B #|0 \x54\x3C #|0 \x54\x3D #|0 \x54\x3E #|0 \x54\x3F #|0 \x54\x40 #|0 \x54\x41 #|0 \x54\x42 #|0 \x54\x43 #|0 \x54\x44 #|0 \x54\x45 #|0 \x54\x46 #|0 \x54\x47 #|0 \x54\x48 #|0 \x54\x49 #|0 \x54\x4A #|0 \x54\x4B #|0 \x54\x4C #|0 \x54\x4D #|0 \x54\x4E #|0 \x54\x4F #|0 \x54\x50 #|0 \x54\x51 #|0 \x54\x52 #|0 \x54\x53 #|0 \x54\x54 #|0 \x54\x55 #|0 \x54\x56 #|0 \x54\x57 #|0 \x54\x58 #|0 \x54\x59 #|0 \x54\x5A #|0 \x54\x5B #|0 \x54\x5C #|0 \x54\x5D #|0 \x54\x5E #|0 \x54\x5F #|0 \x54\x60 #|0 \x54\x61 #|0 \x54\x62 #|0 \x54\x63 #|0 \x54\x64 #|0 \x54\x65 #|0 \x54\x66 #|0 \x54\x67 #|0 \x54\x68 #|0 \x54\x69 #|0 \x54\x6A #|0 \x54\x6B #|0 \x54\x6C #|0 \x54\x6D #|0 \x54\x6E #|0 \x54\x6F #|0 \x54\x70 #|0 \x54\x71 #|0 \x54\x72 #|0 \x54\x73 #|0 \x54\x74 #|0 \x54\x75 #|0 \x54\x76 #|0 \x54\x77 #|0 \x54\x78 #|0 \x54\x79 #|0 \x54\x7A #|0 \x54\x7B #|0 \x54\x7C #|0 \x54\x7D #|0 \x54\x7E #|0 \x55\x21 #|0 \x55\x22 #|0 \x55\x23 #|0 \x55\x24 #|0 \x55\x25 #|0 \x55\x26 #|0 \x55\x27 #|0 \x55\x28 #|0 \x55\x29 #|0 \x55\x2A #|0 \x55\x2B #|0 \x55\x2C #|0 \x55\x2D #|0 \x55\x2E #|0 \x55\x2F #|0 \x55\x30 #|0 \x55\x31 #|0 \x55\x32 #|0 \x55\x33 #|0 \x55\x34 #|0 \x55\x35 #|0 \x55\x36 #|0 \x55\x37 #|0 \x55\x38 #|0 \x55\x39 #|0 \x55\x3A #|0 \x55\x3B #|0 \x55\x3C #|0 \x55\x3D #|0 \x55\x3E #|0 \x55\x3F #|0 \x55\x40 #|0 \x55\x41 #|0 \x55\x42 #|0 \x55\x43 #|0 \x55\x44 #|0 \x55\x45 #|0 \x55\x46 #|0 \x55\x47 #|0 \x55\x48 #|0 \x55\x49 #|0 \x55\x4A #|0 \x55\x4B #|0 \x55\x4C #|0 \x55\x4D #|0 \x55\x4E #|0 \x55\x4F #|0 \x55\x50 #|0 \x55\x51 #|0 \x55\x52 #|0 \x55\x53 #|0 \x55\x54 #|0 \x55\x55 #|0 \x55\x56 #|0 \x55\x57 #|0 \x55\x58 #|0 \x55\x59 #|0 \x55\x5A #|0 \x55\x5B #|0 \x55\x5C #|0 \x55\x5D #|0 \x55\x5E #|0 \x55\x5F #|0 \x55\x60 #|0 \x55\x61 #|0 \x55\x62 #|0 \x55\x63 #|0 \x55\x64 #|0 \x55\x65 #|0 \x55\x66 #|0 \x55\x67 #|0 \x55\x68 #|0 \x55\x69 #|0 \x55\x6A #|0 \x55\x6B #|0 \x55\x6C #|0 \x55\x6D #|0 \x55\x6E #|0 \x55\x6F #|0 \x55\x70 #|0 \x55\x71 #|0 \x55\x72 #|0 \x55\x73 #|0 \x55\x74 #|0 \x55\x75 #|0 \x55\x76 #|0 \x55\x77 #|0 \x55\x78 #|0 \x55\x79 #|0 \x55\x7A #|0 \x55\x7B #|0 \x55\x7C #|0 \x55\x7D #|0 \x55\x7E #|0 \x56\x21 #|0 \x56\x22 #|0 \x56\x23 #|0 \x56\x24 #|0 \x56\x25 #|0 \x56\x26 #|0 \x56\x27 #|0 \x56\x28 #|0 \x56\x29 #|0 \x56\x2A #|0 \x56\x2B #|0 \x56\x2C #|0 \x56\x2D #|0 \x56\x2E #|0 \x56\x2F #|0 \x56\x30 #|0 \x56\x31 #|0 \x56\x32 #|0 \x56\x33 #|0 \x56\x34 #|0 \x56\x35 #|0 \x56\x36 #|0 \x56\x37 #|0 \x56\x38 #|0 \x56\x39 #|0 \x56\x3A #|0 \x56\x3B #|0 \x56\x3C #|0 \x56\x3D #|0 \x56\x3E #|0 \x56\x3F #|0 \x56\x40 #|0 \x56\x41 #|0 \x56\x42 #|0 \x56\x43 #|0 \x56\x44 #|0 \x56\x45 #|0 \x56\x46 #|0 \x56\x47 #|0 \x56\x48 #|0 \x56\x49 #|0 \x56\x4A #|0 \x56\x4B #|0 \x56\x4C #|0 \x56\x4D #|0 \x56\x4E #|0 \x56\x4F #|0 \x56\x50 #|0 \x56\x51 #|0 \x56\x52 #|0 \x56\x53 #|0 \x56\x54 #|0 \x56\x55 #|0 \x56\x56 #|0 \x56\x57 #|0 \x56\x58 #|0 \x56\x59 #|0 \x56\x5A #|0 \x56\x5B #|0 \x56\x5C #|0 \x56\x5D #|0 \x56\x5E #|0 \x56\x5F #|0 \x56\x60 #|0 \x56\x61 #|0 \x56\x62 #|0 \x56\x63 #|0 \x56\x64 #|0 \x56\x65 #|0 \x56\x66 #|0 \x56\x67 #|0 \x56\x68 #|0 \x56\x69 #|0 \x56\x6A #|0 \x56\x6B #|0 \x56\x6C #|0 \x56\x6D #|0 \x56\x6E #|0 \x56\x6F #|0 \x56\x70 #|0 \x56\x71 #|0 \x56\x72 #|0 \x56\x73 #|0 \x56\x74 #|0 \x56\x75 #|0 \x56\x76 #|0 \x56\x77 #|0 \x56\x78 #|0 \x56\x79 #|0 \x56\x7A #|0 \x56\x7B #|0 \x56\x7C #|0 \x56\x7D #|0 \x56\x7E #|0 \x57\x21 #|0 \x57\x22 #|0 \x57\x23 #|0 \x57\x24 #|0 \x57\x25 #|0 \x57\x26 #|0 \x57\x27 #|0 \x57\x28 #|0 \x57\x29 #|0 \x57\x2A #|0 \x57\x2B #|0 \x57\x2C #|0 \x57\x2D #|0 \x57\x2E #|0 \x57\x2F #|0 \x57\x30 #|0 \x57\x31 #|0 \x57\x32 #|0 \x57\x33 #|0 \x57\x34 #|0 \x57\x35 #|0 \x57\x36 #|0 \x57\x37 #|0 \x57\x38 #|0 \x57\x39 #|0 \x57\x3A #|0 \x57\x3B #|0 \x57\x3C #|0 \x57\x3D #|0 \x57\x3E #|0 \x57\x3F #|0 \x57\x40 #|0 \x57\x41 #|0 \x57\x42 #|0 \x57\x43 #|0 \x57\x44 #|0 \x57\x45 #|0 \x57\x46 #|0 \x57\x47 #|0 \x57\x48 #|0 \x57\x49 #|0 \x57\x4A #|0 \x57\x4B #|0 \x57\x4C #|0 \x57\x4D #|0 \x57\x4E #|0 \x57\x4F #|0 \x57\x50 #|0 \x57\x51 #|0 \x57\x52 #|0 \x57\x53 #|0 \x57\x54 #|0 \x57\x55 #|0 \x57\x56 #|0 \x57\x57 #|0 \x57\x58 #|0 \x57\x59 #|0 \x57\x5A #|0 \x57\x5B #|0 \x57\x5C #|0 \x57\x5D #|0 \x57\x5E #|0 \x57\x5F #|0 \x57\x60 #|0 \x57\x61 #|0 \x57\x62 #|0 \x57\x63 #|0 \x57\x64 #|0 \x57\x65 #|0 \x57\x66 #|0 \x57\x67 #|0 \x57\x68 #|0 \x57\x69 #|0 \x57\x6A #|0 \x57\x6B #|0 \x57\x6C #|0 \x57\x6D #|0 \x57\x6E #|0 \x57\x6F #|0 \x57\x70 #|0 \x57\x71 #|0 \x57\x72 #|0 \x57\x73 #|0 \x57\x74 #|0 \x57\x75 #|0 \x57\x76 #|0 \x57\x77 #|0 \x57\x78 #|0 \x57\x79 #|0 \x57\x7A #|0 \x57\x7B #|0 \x57\x7C #|0 \x57\x7D #|0 \x57\x7E #|0 \x58\x21 #|0 \x58\x22 #|0 \x58\x23 #|0 \x58\x24 #|0 \x58\x25 #|0 \x58\x26 #|0 \x58\x27 #|0 \x58\x28 #|0 \x58\x29 #|0 \x58\x2A #|0 \x58\x2B #|0 \x58\x2C #|0 \x58\x2D #|0 \x58\x2E #|0 \x58\x2F #|0 \x58\x30 #|0 \x58\x31 #|0 \x58\x32 #|0 \x58\x33 #|0 \x58\x34 #|0 \x58\x35 #|0 \x58\x36 #|0 \x58\x37 #|0 \x58\x38 #|0 \x58\x39 #|0 \x58\x3A #|0 \x58\x3B #|0 \x58\x3C #|0 \x58\x3D #|0 \x58\x3E #|0 \x58\x3F #|0 \x58\x40 #|0 \x58\x41 #|0 \x58\x42 #|0 \x58\x43 #|0 \x58\x44 #|0 \x58\x45 #|0 \x58\x46 #|0 \x58\x47 #|0 \x58\x48 #|0 \x58\x49 #|0 \x58\x4A #|0 \x58\x4B #|0 \x58\x4C #|0 \x58\x4D #|0 \x58\x4E #|0 \x58\x4F #|0 \x58\x50 #|0 \x58\x51 #|0 \x58\x52 #|0 \x58\x53 #|0 \x58\x54 #|0 \x58\x55 #|0 \x58\x56 #|0 \x58\x57 #|0 \x58\x58 #|0 \x58\x59 #|0 \x58\x5A #|0 \x58\x5B #|0 \x58\x5C #|0 \x58\x5D #|0 \x58\x5E #|0 \x58\x5F #|0 \x58\x60 #|0 \x58\x61 #|0 \x58\x62 #|0 \x58\x63 #|0 \x58\x64 #|0 \x58\x65 #|0 \x58\x66 #|0 \x58\x67 #|0 \x58\x68 #|0 \x58\x69 #|0 \x58\x6A #|0 \x58\x6B #|0 \x58\x6C #|0 \x58\x6D #|0 \x58\x6E #|0 \x58\x6F #|0 \x58\x70 #|0 \x58\x71 #|0 \x58\x72 #|0 \x58\x73 #|0 \x58\x74 #|0 \x58\x75 #|0 \x58\x76 #|0 \x58\x77 #|0 \x58\x78 #|0 \x58\x79 #|0 \x58\x7A #|0 \x58\x7B #|0 \x58\x7C #|0 \x58\x7D #|0 \x58\x7E #|0 \x59\x21 #|0 \x59\x22 #|0 \x59\x23 #|0 \x59\x24 #|0 \x59\x25 #|0 \x59\x26 #|0 \x59\x27 #|0 \x59\x28 #|0 \x59\x29 #|0 \x59\x2A #|0 \x59\x2B #|0 \x59\x2C #|0 \x59\x2D #|0 \x59\x2E #|0 \x59\x2F #|0 \x59\x30 #|0 \x59\x31 #|0 \x59\x32 #|0 \x59\x33 #|0 \x59\x34 #|0 \x59\x35 #|0 \x59\x36 #|0 \x59\x37 #|0 \x59\x38 #|0 \x59\x39 #|0 \x59\x3A #|0 \x59\x3B #|0 \x59\x3C #|0 \x59\x3D #|0 \x59\x3E #|0 \x59\x3F #|0 \x59\x40 #|0 \x59\x41 #|0 \x59\x42 #|0 \x59\x43 #|0 \x59\x44 #|0 \x59\x45 #|0 \x59\x46 #|0 \x59\x47 #|0 \x59\x48 #|0 \x59\x49 #|0 \x59\x4A #|0 \x59\x4B #|0 \x59\x4C #|0 \x59\x4D #|0 \x59\x4E #|0 \x59\x4F #|0 \x59\x50 #|0 \x59\x51 #|0 \x59\x52 #|0 \x59\x53 #|0 \x59\x54 #|0 \x59\x55 #|0 \x59\x56 #|0 \x59\x57 #|0 \x59\x58 #|0 \x59\x59 #|0 \x59\x5A #|0 \x59\x5B #|0 \x59\x5C #|0 \x59\x5D #|0 \x59\x5E #|0 \x59\x5F #|0 \x59\x60 #|0 \x59\x61 #|0 \x59\x62 #|0 \x59\x63 #|0 \x59\x64 #|0 \x59\x65 #|0 \x59\x66 #|0 \x59\x67 #|0 \x59\x68 #|0 \x59\x69 #|0 \x59\x6A #|0 \x59\x6B #|0 \x59\x6C #|0 \x59\x6D #|0 \x59\x6E #|0 \x59\x6F #|0 \x59\x70 #|0 \x59\x71 #|0 \x59\x72 #|0 \x59\x73 #|0 \x59\x74 #|0 \x59\x75 #|0 \x59\x76 #|0 \x59\x77 #|0 \x59\x78 #|0 \x59\x79 #|0 \x59\x7A #|0 \x59\x7B #|0 \x59\x7C #|0 \x59\x7D #|0 \x59\x7E #|0 \x5A\x21 #|0 \x5A\x22 #|0 \x5A\x23 #|0 \x5A\x24 #|0 \x5A\x25 #|0 \x5A\x26 #|0 \x5A\x27 #|0 \x5A\x28 #|0 \x5A\x29 #|0 \x5A\x2A #|0 \x5A\x2B #|0 \x5A\x2C #|0 \x5A\x2D #|0 \x5A\x2E #|0 \x5A\x2F #|0 \x5A\x30 #|0 \x5A\x31 #|0 \x5A\x32 #|0 \x5A\x33 #|0 \x5A\x34 #|0 \x5A\x35 #|0 \x5A\x36 #|0 \x5A\x37 #|0 \x5A\x38 #|0 \x5A\x39 #|0 \x5A\x3A #|0 \x5A\x3B #|0 \x5A\x3C #|0 \x5A\x3D #|0 \x5A\x3E #|0 \x5A\x3F #|0 \x5A\x40 #|0 \x5A\x41 #|0 \x5A\x42 #|0 \x5A\x43 #|0 \x5A\x44 #|0 \x5A\x45 #|0 \x5A\x46 #|0 \x5A\x47 #|0 \x5A\x48 #|0 \x5A\x49 #|0 \x5A\x4A #|0 \x5A\x4B #|0 \x5A\x4C #|0 \x5A\x4D #|0 \x5A\x4E #|0 \x5A\x4F #|0 \x5A\x50 #|0 \x5A\x51 #|0 \x5A\x52 #|0 \x5A\x53 #|0 \x5A\x54 #|0 \x5A\x55 #|0 \x5A\x56 #|0 \x5A\x57 #|0 \x5A\x58 #|0 \x5A\x59 #|0 \x5A\x5A #|0 \x5A\x5B #|0 \x5A\x5C #|0 \x5A\x5D #|0 \x5A\x5E #|0 \x5A\x5F #|0 \x5A\x60 #|0 \x5A\x61 #|0 \x5A\x62 #|0 \x5A\x63 #|0 \x5A\x64 #|0 \x5A\x65 #|0 \x5A\x66 #|0 \x5A\x67 #|0 \x5A\x68 #|0 \x5A\x69 #|0 \x5A\x6A #|0 \x5A\x6B #|0 \x5A\x6C #|0 \x5A\x6D #|0 \x5A\x6E #|0 \x5A\x6F #|0 \x5A\x70 #|0 \x5A\x71 #|0 \x5A\x72 #|0 \x5A\x73 #|0 \x5A\x74 #|0 \x5A\x75 #|0 \x5A\x76 #|0 \x5A\x77 #|0 \x5A\x78 #|0 \x5A\x79 #|0 \x5A\x7A #|0 \x5A\x7B #|0 \x5A\x7C #|0 \x5A\x7D #|0 \x5A\x7E #|0 \x5B\x21 #|0 \x5B\x22 #|0 \x5B\x23 #|0 \x5B\x24 #|0 \x5B\x25 #|0 \x5B\x26 #|0 \x5B\x27 #|0 \x5B\x28 #|0 \x5B\x29 #|0 \x5B\x2A #|0 \x5B\x2B #|0 \x5B\x2C #|0 \x5B\x2D #|0 \x5B\x2E #|0 \x5B\x2F #|0 \x5B\x30 #|0 \x5B\x31 #|0 \x5B\x32 #|0 \x5B\x33 #|0 \x5B\x34 #|0 \x5B\x35 #|0 \x5B\x36 #|0 \x5B\x37 #|0 \x5B\x38 #|0 \x5B\x39 #|0 \x5B\x3A #|0 \x5B\x3B #|0 \x5B\x3C #|0 \x5B\x3D #|0 \x5B\x3E #|0 \x5B\x3F #|0 \x5B\x40 #|0 \x5B\x41 #|0 \x5B\x42 #|0 \x5B\x43 #|0 \x5B\x44 #|0 \x5B\x45 #|0 \x5B\x46 #|0 \x5B\x47 #|0 \x5B\x48 #|0 \x5B\x49 #|0 \x5B\x4A #|0 \x5B\x4B #|0 \x5B\x4C #|0 \x5B\x4D #|0 \x5B\x4E #|0 \x5B\x4F #|0 \x5B\x50 #|0 \x5B\x51 #|0 \x5B\x52 #|0 \x5B\x53 #|0 \x5B\x54 #|0 \x5B\x55 #|0 \x5B\x56 #|0 \x5B\x57 #|0 \x5B\x58 #|0 \x5B\x59 #|0 \x5B\x5A #|0 \x5B\x5B #|0 \x5B\x5C #|0 \x5B\x5D #|0 \x5B\x5E #|0 \x5B\x5F #|0 \x5B\x60 #|0 \x5B\x61 #|0 \x5B\x62 #|0 \x5B\x63 #|0 \x5B\x64 #|0 \x5B\x65 #|0 \x5B\x66 #|0 \x5B\x67 #|0 \x5B\x68 #|0 \x5B\x69 #|0 \x5B\x6A #|0 \x5B\x6B #|0 \x5B\x6C #|0 \x5B\x6D #|0 \x5B\x6E #|0 \x5B\x6F #|0 \x5B\x70 #|0 \x5B\x71 #|0 \x5B\x72 #|0 \x5B\x73 #|0 \x5B\x74 #|0 \x5B\x75 #|0 \x5B\x76 #|0 \x5B\x77 #|0 \x5B\x78 #|0 \x5B\x79 #|0 \x5B\x7A #|0 \x5B\x7B #|0 \x5B\x7C #|0 \x5B\x7D #|0 \x5B\x7E #|0 \x5C\x21 #|0 \x5C\x22 #|0 \x5C\x23 #|0 \x5C\x24 #|0 \x5C\x25 #|0 \x5C\x26 #|0 \x5C\x27 #|0 \x5C\x28 #|0 \x5C\x29 #|0 \x5C\x2A #|0 \x5C\x2B #|0 \x5C\x2C #|0 \x5C\x2D #|0 \x5C\x2E #|0 \x5C\x2F #|0 \x5C\x30 #|0 \x5C\x31 #|0 \x5C\x32 #|0 \x5C\x33 #|0 \x5C\x34 #|0 \x5C\x35 #|0 \x5C\x36 #|0 \x5C\x37 #|0 \x5C\x38 #|0 \x5C\x39 #|0 \x5C\x3A #|0 \x5C\x3B #|0 \x5C\x3C #|0 \x5C\x3D #|0 \x5C\x3E #|0 \x5C\x3F #|0 \x5C\x40 #|0 \x5C\x41 #|0 \x5C\x42 #|0 \x5C\x43 #|0 \x5C\x44 #|0 \x5C\x45 #|0 \x5C\x46 #|0 \x5C\x47 #|0 \x5C\x48 #|0 \x5C\x49 #|0 \x5C\x4A #|0 \x5C\x4B #|0 \x5C\x4C #|0 \x5C\x4D #|0 \x5C\x4E #|0 \x5C\x4F #|0 \x5C\x50 #|0 \x5C\x51 #|0 \x5C\x52 #|0 \x5C\x53 #|0 \x5C\x54 #|0 \x5C\x55 #|0 \x5C\x56 #|0 \x5C\x57 #|0 \x5C\x58 #|0 \x5C\x59 #|0 \x5C\x5A #|0 \x5C\x5B #|0 \x5C\x5C #|0 \x5C\x5D #|0 \x5C\x5E #|0 \x5C\x5F #|0 \x5C\x60 #|0 \x5C\x61 #|0 \x5C\x62 #|0 \x5C\x63 #|0 \x5C\x64 #|0 \x5C\x65 #|0 \x5C\x66 #|0 \x5C\x67 #|0 \x5C\x68 #|0 \x5C\x69 #|0 \x5C\x6A #|0 \x5C\x6B #|0 \x5C\x6C #|0 \x5C\x6D #|0 \x5C\x6E #|0 \x5C\x6F #|0 \x5C\x70 #|0 \x5C\x71 #|0 \x5C\x72 #|0 \x5C\x73 #|0 \x5C\x74 #|0 \x5C\x75 #|0 \x5C\x76 #|0 \x5C\x77 #|0 \x5C\x78 #|0 \x5C\x79 #|0 \x5C\x7A #|0 \x5C\x7B #|0 \x5C\x7C #|0 \x5C\x7D #|0 \x5C\x7E #|0 \x5D\x21 #|0 \x5D\x22 #|0 \x5D\x23 #|0 \x5D\x24 #|0 \x5D\x25 #|0 \x5D\x26 #|0 \x5D\x27 #|0 \x5D\x28 #|0 \x5D\x29 #|0 \x5D\x2A #|0 \x5D\x2B #|0 \x5D\x2C #|0 \x5D\x2D #|0 \x5D\x2E #|0 \x5D\x2F #|0 \x5D\x30 #|0 \x5D\x31 #|0 \x5D\x32 #|0 \x5D\x33 #|0 \x5D\x34 #|0 \x5D\x35 #|0 \x5D\x36 #|0 \x5D\x37 #|0 \x5D\x38 #|0 \x5D\x39 #|0 \x5D\x3A #|0 \x5D\x3B #|0 \x5D\x3C #|0 \x5D\x3D #|0 \x5D\x3E #|0 \x5D\x3F #|0 \x5D\x40 #|0 \x5D\x41 #|0 \x5D\x42 #|0 \x5D\x43 #|0 \x5D\x44 #|0 \x5D\x45 #|0 \x5D\x46 #|0 \x5D\x47 #|0 \x5D\x48 #|0 \x5D\x49 #|0 \x5D\x4A #|0 \x5D\x4B #|0 \x5D\x4C #|0 \x5D\x4D #|0 \x5D\x4E #|0 \x5D\x4F #|0 \x5D\x50 #|0 \x5D\x51 #|0 \x5D\x52 #|0 \x5D\x53 #|0 \x5D\x54 #|0 \x5D\x55 #|0 \x5D\x56 #|0 \x5D\x57 #|0 \x5D\x58 #|0 \x5D\x59 #|0 \x5D\x5A #|0 \x5D\x5B #|0 \x5D\x5C #|0 \x5D\x5D #|0 \x5D\x5E #|0 \x5D\x5F #|0 \x5D\x60 #|0 \x5D\x61 #|0 \x5D\x62 #|0 \x5D\x63 #|0 \x5D\x64 #|0 \x5D\x65 #|0 \x5D\x66 #|0 \x5D\x67 #|0 \x5D\x68 #|0 \x5D\x69 #|0 \x5D\x6A #|0 \x5D\x6B #|0 \x5D\x6C #|0 \x5D\x6D #|0 \x5D\x6E #|0 \x5D\x6F #|0 \x5D\x70 #|0 \x5D\x71 #|0 \x5D\x72 #|0 \x5D\x73 #|0 \x5D\x74 #|0 \x5D\x75 #|0 \x5D\x76 #|0 \x5D\x77 #|0 \x5D\x78 #|0 \x5D\x79 #|0 \x5D\x7A #|0 \x5D\x7B #|0 \x5D\x7C #|0 \x5D\x7D #|0 \x5D\x7E #|0 \x5E\x21 #|0 \x5E\x22 #|0 \x5E\x23 #|0 \x5E\x24 #|0 \x5E\x25 #|0 \x5E\x26 #|0 \x5E\x27 #|0 \x5E\x28 #|0 \x5E\x29 #|0 \x5E\x2A #|0 \x5E\x2B #|0 \x5E\x2C #|0 \x5E\x2D #|0 \x5E\x2E #|0 \x5E\x2F #|0 \x5E\x30 #|0 \x5E\x31 #|0 \x5E\x32 #|0 \x5E\x33 #|0 \x5E\x34 #|0 \x5E\x35 #|0 \x5E\x36 #|0 \x5E\x37 #|0 \x5E\x38 #|0 \x5E\x39 #|0 \x5E\x3A #|0 \x5E\x3B #|0 \x5E\x3C #|0 \x5E\x3D #|0 \x5E\x3E #|0 \x5E\x3F #|0 \x5E\x40 #|0 \x5E\x41 #|0 \x5E\x42 #|0 \x5E\x43 #|0 \x5E\x44 #|0 \x5E\x45 #|0 \x5E\x46 #|0 \x5E\x47 #|0 \x5E\x48 #|0 \x5E\x49 #|0 \x5E\x4A #|0 \x5E\x4B #|0 \x5E\x4C #|0 \x5E\x4D #|0 \x5E\x4E #|0 \x5E\x4F #|0 \x5E\x50 #|0 \x5E\x51 #|0 \x5E\x52 #|0 \x5E\x53 #|0 \x5E\x54 #|0 \x5E\x55 #|0 \x5E\x56 #|0 \x5E\x57 #|0 \x5E\x58 #|0 \x5E\x59 #|0 \x5E\x5A #|0 \x5E\x5B #|0 \x5E\x5C #|0 \x5E\x5D #|0 \x5E\x5E #|0 \x5E\x5F #|0 \x5E\x60 #|0 \x5E\x61 #|0 \x5E\x62 #|0 \x5E\x63 #|0 \x5E\x64 #|0 \x5E\x65 #|0 \x5E\x66 #|0 \x5E\x67 #|0 \x5E\x68 #|0 \x5E\x69 #|0 \x5E\x6A #|0 \x5E\x6B #|0 \x5E\x6C #|0 \x5E\x6D #|0 \x5E\x6E #|0 \x5E\x6F #|0 \x5E\x70 #|0 \x5E\x71 #|0 \x5E\x72 #|0 \x5E\x73 #|0 \x5E\x74 #|0 \x5E\x75 #|0 \x5E\x76 #|0 \x5E\x77 #|0 \x5E\x78 #|0 \x5E\x79 #|0 \x5E\x7A #|0 \x5E\x7B #|0 \x5E\x7C #|0 \x5E\x7D #|0 \x5E\x7E #|0 \x5F\x21 #|0 \x5F\x22 #|0 \x5F\x23 #|0 \x5F\x24 #|0 \x5F\x25 #|0 \x5F\x26 #|0 \x5F\x27 #|0 \x5F\x28 #|0 \x5F\x29 #|0 \x5F\x2A #|0 \x5F\x2B #|0 \x5F\x2C #|0 \x5F\x2D #|0 \x5F\x2E #|0 \x5F\x2F #|0 \x5F\x30 #|0 \x5F\x31 #|0 \x5F\x32 #|0 \x5F\x33 #|0 \x5F\x34 #|0 \x5F\x35 #|0 \x5F\x36 #|0 \x5F\x37 #|0 \x5F\x38 #|0 \x5F\x39 #|0 \x5F\x3A #|0 \x5F\x3B #|0 \x5F\x3C #|0 \x5F\x3D #|0 \x5F\x3E #|0 \x5F\x3F #|0 \x5F\x40 #|0 \x5F\x41 #|0 \x5F\x42 #|0 \x5F\x43 #|0 \x5F\x44 #|0 \x5F\x45 #|0 \x5F\x46 #|0 \x5F\x47 #|0 \x5F\x48 #|0 \x5F\x49 #|0 \x5F\x4A #|0 \x5F\x4B #|0 \x5F\x4C #|0 \x5F\x4D #|0 \x5F\x4E #|0 \x5F\x4F #|0 \x5F\x50 #|0 \x5F\x51 #|0 \x5F\x52 #|0 \x5F\x53 #|0 \x5F\x54 #|0 \x5F\x55 #|0 \x5F\x56 #|0 \x5F\x57 #|0 \x5F\x58 #|0 \x5F\x59 #|0 \x5F\x5A #|0 \x5F\x5B #|0 \x5F\x5C #|0 \x5F\x5D #|0 \x5F\x5E #|0 \x5F\x5F #|0 \x5F\x60 #|0 \x5F\x61 #|0 \x5F\x62 #|0 \x5F\x63 #|0 \x5F\x64 #|0 \x5F\x65 #|0 \x5F\x66 #|0 \x5F\x67 #|0 \x5F\x68 #|0 \x5F\x69 #|0 \x5F\x6A #|0 \x5F\x6B #|0 \x5F\x6C #|0 \x5F\x6D #|0 \x5F\x6E #|0 \x5F\x6F #|0 \x5F\x70 #|0 \x5F\x71 #|0 \x5F\x72 #|0 \x5F\x73 #|0 \x5F\x74 #|0 \x5F\x75 #|0 \x5F\x76 #|0 \x5F\x77 #|0 \x5F\x78 #|0 \x5F\x79 #|0 \x5F\x7A #|0 \x5F\x7B #|0 \x5F\x7C #|0 \x5F\x7D #|0 \x5F\x7E #|0 \x60\x21 #|0 \x60\x22 #|0 \x60\x23 #|0 \x60\x24 #|0 \x60\x25 #|0 \x60\x26 #|0 \x60\x27 #|0 \x60\x28 #|0 \x60\x29 #|0 \x60\x2A #|0 \x60\x2B #|0 \x60\x2C #|0 \x60\x2D #|0 \x60\x2E #|0 \x60\x2F #|0 \x60\x30 #|0 \x60\x31 #|0 \x60\x32 #|0 \x60\x33 #|0 \x60\x34 #|0 \x60\x35 #|0 \x60\x36 #|0 \x60\x37 #|0 \x60\x38 #|0 \x60\x39 #|0 \x60\x3A #|0 \x60\x3B #|0 \x60\x3C #|0 \x60\x3D #|0 \x60\x3E #|0 \x60\x3F #|0 \x60\x40 #|0 \x60\x41 #|0 \x60\x42 #|0 \x60\x43 #|0 \x60\x44 #|0 \x60\x45 #|0 \x60\x46 #|0 \x60\x47 #|0 \x60\x48 #|0 \x60\x49 #|0 \x60\x4A #|0 \x60\x4B #|0 \x60\x4C #|0 \x60\x4D #|0 \x60\x4E #|0 \x60\x4F #|0 \x60\x50 #|0 \x60\x51 #|0 \x60\x52 #|0 \x60\x53 #|0 \x60\x54 #|0 \x60\x55 #|0 \x60\x56 #|0 \x60\x57 #|0 \x60\x58 #|0 \x60\x59 #|0 \x60\x5A #|0 \x60\x5B #|0 \x60\x5C #|0 \x60\x5D #|0 \x60\x5E #|0 \x60\x5F #|0 \x60\x60 #|0 \x60\x61 #|0 \x60\x62 #|0 \x60\x63 #|0 \x60\x64 #|0 \x60\x65 #|0 \x60\x66 #|0 \x60\x67 #|0 \x60\x68 #|0 \x60\x69 #|0 \x60\x6A #|0 \x60\x6B #|0 \x60\x6C #|0 \x60\x6D #|0 \x60\x6E #|0 \x60\x6F #|0 \x60\x70 #|0 \x60\x71 #|0 \x60\x72 #|0 \x60\x73 #|0 \x60\x74 #|0 \x60\x75 #|0 \x60\x76 #|0 \x60\x77 #|0 \x60\x78 #|0 \x60\x79 #|0 \x60\x7A #|0 \x60\x7B #|0 \x60\x7C #|0 \x60\x7D #|0 \x60\x7E #|0 \x61\x21 #|0 \x61\x22 #|0 \x61\x23 #|0 \x61\x24 #|0 \x61\x25 #|0 \x61\x26 #|0 \x61\x27 #|0 \x61\x28 #|0 \x61\x29 #|0 \x61\x2A #|0 \x61\x2B #|0 \x61\x2C #|0 \x61\x2D #|0 \x61\x2E #|0 \x61\x2F #|0 \x61\x30 #|0 \x61\x31 #|0 \x61\x32 #|0 \x61\x33 #|0 \x61\x34 #|0 \x61\x35 #|0 \x61\x36 #|0 \x61\x37 #|0 \x61\x38 #|0 \x61\x39 #|0 \x61\x3A #|0 \x61\x3B #|0 \x61\x3C #|0 \x61\x3D #|0 \x61\x3E #|0 \x61\x3F #|0 \x61\x40 #|0 \x61\x41 #|0 \x61\x42 #|0 \x61\x43 #|0 \x61\x44 #|0 \x61\x45 #|0 \x61\x46 #|0 \x61\x47 #|0 \x61\x48 #|0 \x61\x49 #|0 \x61\x4A #|0 \x61\x4B #|0 \x61\x4C #|0 \x61\x4D #|0 \x61\x4E #|0 \x61\x4F #|0 \x61\x50 #|0 \x61\x51 #|0 \x61\x52 #|0 \x61\x53 #|0 \x61\x54 #|0 \x61\x55 #|0 \x61\x56 #|0 \x61\x57 #|0 \x61\x58 #|0 \x61\x59 #|0 \x61\x5A #|0 \x61\x5B #|0 \x61\x5C #|0 \x61\x5D #|0 \x61\x5E #|0 \x61\x5F #|0 \x61\x60 #|0 \x61\x61 #|0 \x61\x62 #|0 \x61\x63 #|0 \x61\x64 #|0 \x61\x65 #|0 \x61\x66 #|0 \x61\x67 #|0 \x61\x68 #|0 \x61\x69 #|0 \x61\x6A #|0 \x61\x6B #|0 \x61\x6C #|0 \x61\x6D #|0 \x61\x6E #|0 \x61\x6F #|0 \x61\x70 #|0 \x61\x71 #|0 \x61\x72 #|0 \x61\x73 #|0 \x61\x74 #|0 \x61\x75 #|0 \x61\x76 #|0 \x61\x77 #|0 \x61\x78 #|0 \x61\x79 #|0 \x61\x7A #|0 \x61\x7B #|0 \x61\x7C #|0 \x61\x7D #|0 \x61\x7E #|0 \x62\x21 #|0 \x62\x22 #|0 \x62\x23 #|0 \x62\x24 #|0 \x62\x25 #|0 \x62\x26 #|0 \x62\x27 #|0 \x62\x28 #|0 \x62\x29 #|0 \x62\x2A #|0 \x62\x2B #|0 \x62\x2C #|0 \x62\x2D #|0 \x62\x2E #|0 \x62\x2F #|0 \x62\x30 #|0 \x62\x31 #|0 \x62\x32 #|0 \x62\x33 #|0 \x62\x34 #|0 \x62\x35 #|0 \x62\x36 #|0 \x62\x37 #|0 \x62\x38 #|0 \x62\x39 #|0 \x62\x3A #|0 \x62\x3B #|0 \x62\x3C #|0 \x62\x3D #|0 \x62\x3E #|0 \x62\x3F #|0 \x62\x40 #|0 \x62\x41 #|0 \x62\x42 #|0 \x62\x43 #|0 \x62\x44 #|0 \x62\x45 #|0 \x62\x46 #|0 \x62\x47 #|0 \x62\x48 #|0 \x62\x49 #|0 \x62\x4A #|0 \x62\x4B #|0 \x62\x4C #|0 \x62\x4D #|0 \x62\x4E #|0 \x62\x4F #|0 \x62\x50 #|0 \x62\x51 #|0 \x62\x52 #|0 \x62\x53 #|0 \x62\x54 #|0 \x62\x55 #|0 \x62\x56 #|0 \x62\x57 #|0 \x62\x58 #|0 \x62\x59 #|0 \x62\x5A #|0 \x62\x5B #|0 \x62\x5C #|0 \x62\x5D #|0 \x62\x5E #|0 \x62\x5F #|0 \x62\x60 #|0 \x62\x61 #|0 \x62\x62 #|0 \x62\x63 #|0 \x62\x64 #|0 \x62\x65 #|0 \x62\x66 #|0 \x62\x67 #|0 \x62\x68 #|0 \x62\x69 #|0 \x62\x6A #|0 \x62\x6B #|0 \x62\x6C #|0 \x62\x6D #|0 \x62\x6E #|0 \x62\x6F #|0 \x62\x70 #|0 \x62\x71 #|0 \x62\x72 #|0 \x62\x73 #|0 \x62\x74 #|0 \x62\x75 #|0 \x62\x76 #|0 \x62\x77 #|0 \x62\x78 #|0 \x62\x79 #|0 \x62\x7A #|0 \x62\x7B #|0 \x62\x7C #|0 \x62\x7D #|0 \x62\x7E #|0 \x63\x21 #|0 \x63\x22 #|0 \x63\x23 #|0 \x63\x24 #|0 \x63\x25 #|0 \x63\x26 #|0 \x63\x27 #|0 \x63\x28 #|0 \x63\x29 #|0 \x63\x2A #|0 \x63\x2B #|0 \x63\x2C #|0 \x63\x2D #|0 \x63\x2E #|0 \x63\x2F #|0 \x63\x30 #|0 \x63\x31 #|0 \x63\x32 #|0 \x63\x33 #|0 \x63\x34 #|0 \x63\x35 #|0 \x63\x36 #|0 \x63\x37 #|0 \x63\x38 #|0 \x63\x39 #|0 \x63\x3A #|0 \x63\x3B #|0 \x63\x3C #|0 \x63\x3D #|0 \x63\x3E #|0 \x63\x3F #|0 \x63\x40 #|0 \x63\x41 #|0 \x63\x42 #|0 \x63\x43 #|0 \x63\x44 #|0 \x63\x45 #|0 \x63\x46 #|0 \x63\x47 #|0 \x63\x48 #|0 \x63\x49 #|0 \x63\x4A #|0 \x63\x4B #|0 \x63\x4C #|0 \x63\x4D #|0 \x63\x4E #|0 \x63\x4F #|0 \x63\x50 #|0 \x63\x51 #|0 \x63\x52 #|0 \x63\x53 #|0 \x63\x54 #|0 \x63\x55 #|0 \x63\x56 #|0 \x63\x57 #|0 \x63\x58 #|0 \x63\x59 #|0 \x63\x5A #|0 \x63\x5B #|0 \x63\x5C #|0 \x63\x5D #|0 \x63\x5E #|0 \x63\x5F #|0 \x63\x60 #|0 \x63\x61 #|0 \x63\x62 #|0 \x63\x63 #|0 \x63\x64 #|0 \x63\x65 #|0 \x63\x66 #|0 \x63\x67 #|0 \x63\x68 #|0 \x63\x69 #|0 \x63\x6A #|0 \x63\x6B #|0 \x63\x6C #|0 \x63\x6D #|0 \x63\x6E #|0 \x63\x6F #|0 \x63\x70 #|0 \x63\x71 #|0 \x63\x72 #|0 \x63\x73 #|0 \x63\x74 #|0 \x63\x75 #|0 \x63\x76 #|0 \x63\x77 #|0 \x63\x78 #|0 \x63\x79 #|0 \x63\x7A #|0 \x63\x7B #|0 \x63\x7C #|0 \x63\x7D #|0 \x63\x7E #|0 \x64\x21 #|0 \x64\x22 #|0 \x64\x23 #|0 \x64\x24 #|0 \x64\x25 #|0 \x64\x26 #|0 \x64\x27 #|0 \x64\x28 #|0 \x64\x29 #|0 \x64\x2A #|0 \x64\x2B #|0 \x64\x2C #|0 \x64\x2D #|0 \x64\x2E #|0 \x64\x2F #|0 \x64\x30 #|0 \x64\x31 #|0 \x64\x32 #|0 \x64\x33 #|0 \x64\x34 #|0 \x64\x35 #|0 \x64\x36 #|0 \x64\x37 #|0 \x64\x38 #|0 \x64\x39 #|0 \x64\x3A #|0 \x64\x3B #|0 \x64\x3C #|0 \x64\x3D #|0 \x64\x3E #|0 \x64\x3F #|0 \x64\x40 #|0 \x64\x41 #|0 \x64\x42 #|0 \x64\x43 #|0 \x64\x44 #|0 \x64\x45 #|0 \x64\x46 #|0 \x64\x47 #|0 \x64\x48 #|0 \x64\x49 #|0 \x64\x4A #|0 \x64\x4B #|0 \x64\x4C #|0 \x64\x4D #|0 \x64\x4E #|0 \x64\x4F #|0 \x64\x50 #|0 \x64\x51 #|0 \x64\x52 #|0 \x64\x53 #|0 \x64\x54 #|0 \x64\x55 #|0 \x64\x56 #|0 \x64\x57 #|0 \x64\x58 #|0 \x64\x59 #|0 \x64\x5A #|0 \x64\x5B #|0 \x64\x5C #|0 \x64\x5D #|0 \x64\x5E #|0 \x64\x5F #|0 \x64\x60 #|0 \x64\x61 #|0 \x64\x62 #|0 \x64\x63 #|0 \x64\x64 #|0 \x64\x65 #|0 \x64\x66 #|0 \x64\x67 #|0 \x64\x68 #|0 \x64\x69 #|0 \x64\x6A #|0 \x64\x6B #|0 \x64\x6C #|0 \x64\x6D #|0 \x64\x6E #|0 \x64\x6F #|0 \x64\x70 #|0 \x64\x71 #|0 \x64\x72 #|0 \x64\x73 #|0 \x64\x74 #|0 \x64\x75 #|0 \x64\x76 #|0 \x64\x77 #|0 \x64\x78 #|0 \x64\x79 #|0 \x64\x7A #|0 \x64\x7B #|0 \x64\x7C #|0 \x64\x7D #|0 \x64\x7E #|0 \x65\x21 #|0 \x65\x22 #|0 \x65\x23 #|0 \x65\x24 #|0 \x65\x25 #|0 \x65\x26 #|0 \x65\x27 #|0 \x65\x28 #|0 \x65\x29 #|0 \x65\x2A #|0 \x65\x2B #|0 \x65\x2C #|0 \x65\x2D #|0 \x65\x2E #|0 \x65\x2F #|0 \x65\x30 #|0 \x65\x31 #|0 \x65\x32 #|0 \x65\x33 #|0 \x65\x34 #|0 \x65\x35 #|0 \x65\x36 #|0 \x65\x37 #|0 \x65\x38 #|0 \x65\x39 #|0 \x65\x3A #|0 \x65\x3B #|0 \x65\x3C #|0 \x65\x3D #|0 \x65\x3E #|0 \x65\x3F #|0 \x65\x40 #|0 \x65\x41 #|0 \x65\x42 #|0 \x65\x43 #|0 \x65\x44 #|0 \x65\x45 #|0 \x65\x46 #|0 \x65\x47 #|0 \x65\x48 #|0 \x65\x49 #|0 \x65\x4A #|0 \x65\x4B #|0 \x65\x4C #|0 \x65\x4D #|0 \x65\x4E #|0 \x65\x4F #|0 \x65\x50 #|0 \x65\x51 #|0 \x65\x52 #|0 \x65\x53 #|0 \x65\x54 #|0 \x65\x55 #|0 \x65\x56 #|0 \x65\x57 #|0 \x65\x58 #|0 \x65\x59 #|0 \x65\x5A #|0 \x65\x5B #|0 \x65\x5C #|0 \x65\x5D #|0 \x65\x5E #|0 \x65\x5F #|0 \x65\x60 #|0 \x65\x61 #|0 \x65\x62 #|0 \x65\x63 #|0 \x65\x64 #|0 \x65\x65 #|0 \x65\x66 #|0 \x65\x67 #|0 \x65\x68 #|0 \x65\x69 #|0 \x65\x6A #|0 \x65\x6B #|0 \x65\x6C #|0 \x65\x6D #|0 \x65\x6E #|0 \x65\x6F #|0 \x65\x70 #|0 \x65\x71 #|0 \x65\x72 #|0 \x65\x73 #|0 \x65\x74 #|0 \x65\x75 #|0 \x65\x76 #|0 \x65\x77 #|0 \x65\x78 #|0 \x65\x79 #|0 \x65\x7A #|0 \x65\x7B #|0 \x65\x7C #|0 \x65\x7D #|0 \x65\x7E #|0 \x66\x21 #|0 \x66\x22 #|0 \x66\x23 #|0 \x66\x24 #|0 \x66\x25 #|0 \x66\x26 #|0 \x66\x27 #|0 \x66\x28 #|0 \x66\x29 #|0 \x66\x2A #|0 \x66\x2B #|0 \x66\x2C #|0 \x66\x2D #|0 \x66\x2E #|0 \x66\x2F #|0 \x66\x30 #|0 \x66\x31 #|0 \x66\x32 #|0 \x66\x33 #|0 \x66\x34 #|0 \x66\x35 #|0 \x66\x36 #|0 \x66\x37 #|0 \x66\x38 #|0 \x66\x39 #|0 \x66\x3A #|0 \x66\x3B #|0 \x66\x3C #|0 \x66\x3D #|0 \x66\x3E #|0 \x66\x3F #|0 \x66\x40 #|0 \x66\x41 #|0 \x66\x42 #|0 \x66\x43 #|0 \x66\x44 #|0 \x66\x45 #|0 \x66\x46 #|0 \x66\x47 #|0 \x66\x48 #|0 \x66\x49 #|0 \x66\x4A #|0 \x66\x4B #|0 \x66\x4C #|0 \x66\x4D #|0 \x66\x4E #|0 \x66\x4F #|0 \x66\x50 #|0 \x66\x51 #|0 \x66\x52 #|0 \x66\x53 #|0 \x66\x54 #|0 \x66\x55 #|0 \x66\x56 #|0 \x66\x57 #|0 \x66\x58 #|0 \x66\x59 #|0 \x66\x5A #|0 \x66\x5B #|0 \x66\x5C #|0 \x66\x5D #|0 \x66\x5E #|0 \x66\x5F #|0 \x66\x60 #|0 \x66\x61 #|0 \x66\x62 #|0 \x66\x63 #|0 \x66\x64 #|0 \x66\x65 #|0 \x66\x66 #|0 \x66\x67 #|0 \x66\x68 #|0 \x66\x69 #|0 \x66\x6A #|0 \x66\x6B #|0 \x66\x6C #|0 \x66\x6D #|0 \x66\x6E #|0 \x66\x6F #|0 \x66\x70 #|0 \x66\x71 #|0 \x66\x72 #|0 \x66\x73 #|0 \x66\x74 #|0 \x66\x75 #|0 \x66\x76 #|0 \x66\x77 #|0 \x66\x78 #|0 \x66\x79 #|0 \x66\x7A #|0 \x66\x7B #|0 \x66\x7C #|0 \x66\x7D #|0 \x66\x7E #|0 \x67\x21 #|0 \x67\x22 #|0 \x67\x23 #|0 \x67\x24 #|0 \x67\x25 #|0 \x67\x26 #|0 \x67\x27 #|0 \x67\x28 #|0 \x67\x29 #|0 \x67\x2A #|0 \x67\x2B #|0 \x67\x2C #|0 \x67\x2D #|0 \x67\x2E #|0 \x67\x2F #|0 \x67\x30 #|0 \x67\x31 #|0 \x67\x32 #|0 \x67\x33 #|0 \x67\x34 #|0 \x67\x35 #|0 \x67\x36 #|0 \x67\x37 #|0 \x67\x38 #|0 \x67\x39 #|0 \x67\x3A #|0 \x67\x3B #|0 \x67\x3C #|0 \x67\x3D #|0 \x67\x3E #|0 \x67\x3F #|0 \x67\x40 #|0 \x67\x41 #|0 \x67\x42 #|0 \x67\x43 #|0 \x67\x44 #|0 \x67\x45 #|0 \x67\x46 #|0 \x67\x47 #|0 \x67\x48 #|0 \x67\x49 #|0 \x67\x4A #|0 \x67\x4B #|0 \x67\x4C #|0 \x67\x4D #|0 \x67\x4E #|0 \x67\x4F #|0 \x67\x50 #|0 \x67\x51 #|0 \x67\x52 #|0 \x67\x53 #|0 \x67\x54 #|0 \x67\x55 #|0 \x67\x56 #|0 \x67\x57 #|0 \x67\x58 #|0 \x67\x59 #|0 \x67\x5A #|0 \x67\x5B #|0 \x67\x5C #|0 \x67\x5D #|0 \x67\x5E #|0 \x67\x5F #|0 \x67\x60 #|0 \x67\x61 #|0 \x67\x62 #|0 \x67\x63 #|0 \x67\x64 #|0 \x67\x65 #|0 \x67\x66 #|0 \x67\x67 #|0 \x67\x68 #|0 \x67\x69 #|0 \x67\x6A #|0 \x67\x6B #|0 \x67\x6C #|0 \x67\x6D #|0 \x67\x6E #|0 \x67\x6F #|0 \x67\x70 #|0 \x67\x71 #|0 \x67\x72 #|0 \x67\x73 #|0 \x67\x74 #|0 \x67\x75 #|0 \x67\x76 #|0 \x67\x77 #|0 \x67\x78 #|0 \x67\x79 #|0 \x67\x7A #|0 \x67\x7B #|0 \x67\x7C #|0 \x67\x7D #|0 \x67\x7E #|0 \x68\x21 #|0 \x68\x22 #|0 \x68\x23 #|0 \x68\x24 #|0 \x68\x25 #|0 \x68\x26 #|0 \x68\x27 #|0 \x68\x28 #|0 \x68\x29 #|0 \x68\x2A #|0 \x68\x2B #|0 \x68\x2C #|0 \x68\x2D #|0 \x68\x2E #|0 \x68\x2F #|0 \x68\x30 #|0 \x68\x31 #|0 \x68\x32 #|0 \x68\x33 #|0 \x68\x34 #|0 \x68\x35 #|0 \x68\x36 #|0 \x68\x37 #|0 \x68\x38 #|0 \x68\x39 #|0 \x68\x3A #|0 \x68\x3B #|0 \x68\x3C #|0 \x68\x3D #|0 \x68\x3E #|0 \x68\x3F #|0 \x68\x40 #|0 \x68\x41 #|0 \x68\x42 #|0 \x68\x43 #|0 \x68\x44 #|0 \x68\x45 #|0 \x68\x46 #|0 \x68\x47 #|0 \x68\x48 #|0 \x68\x49 #|0 \x68\x4A #|0 \x68\x4B #|0 \x68\x4C #|0 \x68\x4D #|0 \x68\x4E #|0 \x68\x4F #|0 \x68\x50 #|0 \x68\x51 #|0 \x68\x52 #|0 \x68\x53 #|0 \x68\x54 #|0 \x68\x55 #|0 \x68\x56 #|0 \x68\x57 #|0 \x68\x58 #|0 \x68\x59 #|0 \x68\x5A #|0 \x68\x5B #|0 \x68\x5C #|0 \x68\x5D #|0 \x68\x5E #|0 \x68\x5F #|0 \x68\x60 #|0 \x68\x61 #|0 \x68\x62 #|0 \x68\x63 #|0 \x68\x64 #|0 \x68\x65 #|0 \x68\x66 #|0 \x68\x67 #|0 \x68\x68 #|0 \x68\x69 #|0 \x68\x6A #|0 \x68\x6B #|0 \x68\x6C #|0 \x68\x6D #|0 \x68\x6E #|0 \x68\x6F #|0 \x68\x70 #|0 \x68\x71 #|0 \x68\x72 #|0 \x68\x73 #|0 \x68\x74 #|0 \x68\x75 #|0 \x68\x76 #|0 \x68\x77 #|0 \x68\x78 #|0 \x68\x79 #|0 \x68\x7A #|0 \x68\x7B #|0 \x68\x7C #|0 \x68\x7D #|0 \x68\x7E #|0 \x69\x21 #|0 \x69\x22 #|0 \x69\x23 #|0 \x69\x24 #|0 \x69\x25 #|0 \x69\x26 #|0 \x69\x27 #|0 \x69\x28 #|0 \x69\x29 #|0 \x69\x2A #|0 \x69\x2B #|0 \x69\x2C #|0 \x69\x2D #|0 \x69\x2E #|0 \x69\x2F #|0 \x69\x30 #|0 \x69\x31 #|0 \x69\x32 #|0 \x69\x33 #|0 \x69\x34 #|0 \x69\x35 #|0 \x69\x36 #|0 \x69\x37 #|0 \x69\x38 #|0 \x69\x39 #|0 \x69\x3A #|0 \x69\x3B #|0 \x69\x3C #|0 \x69\x3D #|0 \x69\x3E #|0 \x69\x3F #|0 \x69\x40 #|0 \x69\x41 #|0 \x69\x42 #|0 \x69\x43 #|0 \x69\x44 #|0 \x69\x45 #|0 \x69\x46 #|0 \x69\x47 #|0 \x69\x48 #|0 \x69\x49 #|0 \x69\x4A #|0 \x69\x4B #|0 \x69\x4C #|0 \x69\x4D #|0 \x69\x4E #|0 \x69\x4F #|0 \x69\x50 #|0 \x69\x51 #|0 \x69\x52 #|0 \x69\x53 #|0 \x69\x54 #|0 \x69\x55 #|0 \x69\x56 #|0 \x69\x57 #|0 \x69\x58 #|0 \x69\x59 #|0 \x69\x5A #|0 \x69\x5B #|0 \x69\x5C #|0 \x69\x5D #|0 \x69\x5E #|0 \x69\x5F #|0 \x69\x60 #|0 \x69\x61 #|0 \x69\x62 #|0 \x69\x63 #|0 \x69\x64 #|0 \x69\x65 #|0 \x69\x66 #|0 \x69\x67 #|0 \x69\x68 #|0 \x69\x69 #|0 \x69\x6A #|0 \x69\x6B #|0 \x69\x6C #|0 \x69\x6D #|0 \x69\x6E #|0 \x69\x6F #|0 \x69\x70 #|0 \x69\x71 #|0 \x69\x72 #|0 \x69\x73 #|0 \x69\x74 #|0 \x69\x75 #|0 \x69\x76 #|0 \x69\x77 #|0 \x69\x78 #|0 \x69\x79 #|0 \x69\x7A #|0 \x69\x7B #|0 \x69\x7C #|0 \x69\x7D #|0 \x69\x7E #|0 \x6A\x21 #|0 \x6A\x22 #|0 \x6A\x23 #|0 \x6A\x24 #|0 \x6A\x25 #|0 \x6A\x26 #|0 \x6A\x27 #|0 \x6A\x28 #|0 \x6A\x29 #|0 \x6A\x2A #|0 \x6A\x2B #|0 \x6A\x2C #|0 \x6A\x2D #|0 \x6A\x2E #|0 \x6A\x2F #|0 \x6A\x30 #|0 \x6A\x31 #|0 \x6A\x32 #|0 \x6A\x33 #|0 \x6A\x34 #|0 \x6A\x35 #|0 \x6A\x36 #|0 \x6A\x37 #|0 \x6A\x38 #|0 \x6A\x39 #|0 \x6A\x3A #|0 \x6A\x3B #|0 \x6A\x3C #|0 \x6A\x3D #|0 \x6A\x3E #|0 \x6A\x3F #|0 \x6A\x40 #|0 \x6A\x41 #|0 \x6A\x42 #|0 \x6A\x43 #|0 \x6A\x44 #|0 \x6A\x45 #|0 \x6A\x46 #|0 \x6A\x47 #|0 \x6A\x48 #|0 \x6A\x49 #|0 \x6A\x4A #|0 \x6A\x4B #|0 \x6A\x4C #|0 \x6A\x4D #|0 \x6A\x4E #|0 \x6A\x4F #|0 \x6A\x50 #|0 \x6A\x51 #|0 \x6A\x52 #|0 \x6A\x53 #|0 \x6A\x54 #|0 \x6A\x55 #|0 \x6A\x56 #|0 \x6A\x57 #|0 \x6A\x58 #|0 \x6A\x59 #|0 \x6A\x5A #|0 \x6A\x5B #|0 \x6A\x5C #|0 \x6A\x5D #|0 \x6A\x5E #|0 \x6A\x5F #|0 \x6A\x60 #|0 \x6A\x61 #|0 \x6A\x62 #|0 \x6A\x63 #|0 \x6A\x64 #|0 \x6A\x65 #|0 \x6A\x66 #|0 \x6A\x67 #|0 \x6A\x68 #|0 \x6A\x69 #|0 \x6A\x6A #|0 \x6A\x6B #|0 \x6A\x6C #|0 \x6A\x6D #|0 \x6A\x6E #|0 \x6A\x6F #|0 \x6A\x70 #|0 \x6A\x71 #|0 \x6A\x72 #|0 \x6A\x73 #|0 \x6A\x74 #|0 \x6A\x75 #|0 \x6A\x76 #|0 \x6A\x77 #|0 \x6A\x78 #|0 \x6A\x79 #|0 \x6A\x7A #|0 \x6A\x7B #|0 \x6A\x7C #|0 \x6A\x7D #|0 \x6A\x7E #|0 \x6B\x21 #|0 \x6B\x22 #|0 \x6B\x23 #|0 \x6B\x24 #|0 \x6B\x25 #|0 \x6B\x26 #|0 \x6B\x27 #|0 \x6B\x28 #|0 \x6B\x29 #|0 \x6B\x2A #|0 \x6B\x2B #|0 \x6B\x2C #|0 \x6B\x2D #|0 \x6B\x2E #|0 \x6B\x2F #|0 \x6B\x30 #|0 \x6B\x31 #|0 \x6B\x32 #|0 \x6B\x33 #|0 \x6B\x34 #|0 \x6B\x35 #|0 \x6B\x36 #|0 \x6B\x37 #|0 \x6B\x38 #|0 \x6B\x39 #|0 \x6B\x3A #|0 \x6B\x3B #|0 \x6B\x3C #|0 \x6B\x3D #|0 \x6B\x3E #|0 \x6B\x3F #|0 \x6B\x40 #|0 \x6B\x41 #|0 \x6B\x42 #|0 \x6B\x43 #|0 \x6B\x44 #|0 \x6B\x45 #|0 \x6B\x46 #|0 \x6B\x47 #|0 \x6B\x48 #|0 \x6B\x49 #|0 \x6B\x4A #|0 \x6B\x4B #|0 \x6B\x4C #|0 \x6B\x4D #|0 \x6B\x4E #|0 \x6B\x4F #|0 \x6B\x50 #|0 \x6B\x51 #|0 \x6B\x52 #|0 \x6B\x53 #|0 \x6B\x54 #|0 \x6B\x55 #|0 \x6B\x56 #|0 \x6B\x57 #|0 \x6B\x58 #|0 \x6B\x59 #|0 \x6B\x5A #|0 \x6B\x5B #|0 \x6B\x5C #|0 \x6B\x5D #|0 \x6B\x5E #|0 \x6B\x5F #|0 \x6B\x60 #|0 \x6B\x61 #|0 \x6B\x62 #|0 \x6B\x63 #|0 \x6B\x64 #|0 \x6B\x65 #|0 \x6B\x66 #|0 \x6B\x67 #|0 \x6B\x68 #|0 \x6B\x69 #|0 \x6B\x6A #|0 \x6B\x6B #|0 \x6B\x6C #|0 \x6B\x6D #|0 \x6B\x6E #|0 \x6B\x6F #|0 \x6B\x70 #|0 \x6B\x71 #|0 \x6B\x72 #|0 \x6B\x73 #|0 \x6B\x74 #|0 \x6B\x75 #|0 \x6B\x76 #|0 \x6B\x77 #|0 \x6B\x78 #|0 \x6B\x79 #|0 \x6B\x7A #|0 \x6B\x7B #|0 \x6B\x7C #|0 \x6B\x7D #|0 \x6B\x7E #|0 \x6C\x21 #|0 \x6C\x22 #|0 \x6C\x23 #|0 \x6C\x24 #|0 \x6C\x25 #|0 \x6C\x26 #|0 \x6C\x27 #|0 \x6C\x28 #|0 \x6C\x29 #|0 \x6C\x2A #|0 \x6C\x2B #|0 \x6C\x2C #|0 \x6C\x2D #|0 \x6C\x2E #|0 \x6C\x2F #|0 \x6C\x30 #|0 \x6C\x31 #|0 \x6C\x32 #|0 \x6C\x33 #|0 \x6C\x34 #|0 \x6C\x35 #|0 \x6C\x36 #|0 \x6C\x37 #|0 \x6C\x38 #|0 \x6C\x39 #|0 \x6C\x3A #|0 \x6C\x3B #|0 \x6C\x3C #|0 \x6C\x3D #|0 \x6C\x3E #|0 \x6C\x3F #|0 \x6C\x40 #|0 \x6C\x41 #|0 \x6C\x42 #|0 \x6C\x43 #|0 \x6C\x44 #|0 \x6C\x45 #|0 \x6C\x46 #|0 \x6C\x47 #|0 \x6C\x48 #|0 \x6C\x49 #|0 \x6C\x4A #|0 \x6C\x4B #|0 \x6C\x4C #|0 \x6C\x4D #|0 \x6C\x4E #|0 \x6C\x4F #|0 \x6C\x50 #|0 \x6C\x51 #|0 \x6C\x52 #|0 \x6C\x53 #|0 \x6C\x54 #|0 \x6C\x55 #|0 \x6C\x56 #|0 \x6C\x57 #|0 \x6C\x58 #|0 \x6C\x59 #|0 \x6C\x5A #|0 \x6C\x5B #|0 \x6C\x5C #|0 \x6C\x5D #|0 \x6C\x5E #|0 \x6C\x5F #|0 \x6C\x60 #|0 \x6C\x61 #|0 \x6C\x62 #|0 \x6C\x63 #|0 \x6C\x64 #|0 \x6C\x65 #|0 \x6C\x66 #|0 \x6C\x67 #|0 \x6C\x68 #|0 \x6C\x69 #|0 \x6C\x6A #|0 \x6C\x6B #|0 \x6C\x6C #|0 \x6C\x6D #|0 \x6C\x6E #|0 \x6C\x6F #|0 \x6C\x70 #|0 \x6C\x71 #|0 \x6C\x72 #|0 \x6C\x73 #|0 \x6C\x74 #|0 \x6C\x75 #|0 \x6C\x76 #|0 \x6C\x77 #|0 \x6C\x78 #|0 \x6C\x79 #|0 \x6C\x7A #|0 \x6C\x7B #|0 \x6C\x7C #|0 \x6C\x7D #|0 \x6C\x7E #|0 \x6D\x21 #|0 \x6D\x22 #|0 \x6D\x23 #|0 \x6D\x24 #|0 \x6D\x25 #|0 \x6D\x26 #|0 \x6D\x27 #|0 \x6D\x28 #|0 \x6D\x29 #|0 \x6D\x2A #|0 \x6D\x2B #|0 \x6D\x2C #|0 \x6D\x2D #|0 \x6D\x2E #|0 \x6D\x2F #|0 \x6D\x30 #|0 \x6D\x31 #|0 \x6D\x32 #|0 \x6D\x33 #|0 \x6D\x34 #|0 \x6D\x35 #|0 \x6D\x36 #|0 \x6D\x37 #|0 \x6D\x38 #|0 \x6D\x39 #|0 \x6D\x3A #|0 \x6D\x3B #|0 \x6D\x3C #|0 \x6D\x3D #|0 \x6D\x3E #|0 \x6D\x3F #|0 \x6D\x40 #|0 \x6D\x41 #|0 \x6D\x42 #|0 \x6D\x43 #|0 \x6D\x44 #|0 \x6D\x45 #|0 \x6D\x46 #|0 \x6D\x47 #|0 \x6D\x48 #|0 \x6D\x49 #|0 \x6D\x4A #|0 \x6D\x4B #|0 \x6D\x4C #|0 \x6D\x4D #|0 \x6D\x4E #|0 \x6D\x4F #|0 \x6D\x50 #|0 \x6D\x51 #|0 \x6D\x52 #|0 \x6D\x53 #|0 \x6D\x54 #|0 \x6D\x55 #|0 \x6D\x56 #|0 \x6D\x57 #|0 \x6D\x58 #|0 \x6D\x59 #|0 \x6D\x5A #|0 \x6D\x5B #|0 \x6D\x5C #|0 \x6D\x5D #|0 \x6D\x5E #|0 \x6D\x5F #|0 \x6D\x60 #|0 \x6D\x61 #|0 \x6D\x62 #|0 \x6D\x63 #|0 \x6D\x64 #|0 \x6D\x65 #|0 \x6D\x66 #|0 \x6D\x67 #|0 \x6D\x68 #|0 \x6D\x69 #|0 \x6D\x6A #|0 \x6D\x6B #|0 \x6D\x6C #|0 \x6D\x6D #|0 \x6D\x6E #|0 \x6D\x6F #|0 \x6D\x70 #|0 \x6D\x71 #|0 \x6D\x72 #|0 \x6D\x73 #|0 \x6D\x74 #|0 \x6D\x75 #|0 \x6D\x76 #|0 \x6D\x77 #|0 \x6D\x78 #|0 \x6D\x79 #|0 \x6D\x7A #|0 \x6D\x7B #|0 \x6D\x7C #|0 \x6D\x7D #|0 \x6D\x7E #|0 \x6E\x21 #|0 \x6E\x22 #|0 \x6E\x23 #|0 \x6E\x24 #|0 \x6E\x25 #|0 \x6E\x26 #|0 \x6E\x27 #|0 \x6E\x28 #|0 \x6E\x29 #|0 \x6E\x2A #|0 \x6E\x2B #|0 \x6E\x2C #|0 \x6E\x2D #|0 \x6E\x2E #|0 \x6E\x2F #|0 \x6E\x30 #|0 \x6E\x31 #|0 \x6E\x32 #|0 \x6E\x33 #|0 \x6E\x34 #|0 \x6E\x35 #|0 \x6E\x36 #|0 \x6E\x37 #|0 \x6E\x38 #|0 \x6E\x39 #|0 \x6E\x3A #|0 \x6E\x3B #|0 \x6E\x3C #|0 \x6E\x3D #|0 \x6E\x3E #|0 \x6E\x3F #|0 \x6E\x40 #|0 \x6E\x41 #|0 \x6E\x42 #|0 \x6E\x43 #|0 \x6E\x44 #|0 \x6E\x45 #|0 \x6E\x46 #|0 \x6E\x47 #|0 \x6E\x48 #|0 \x6E\x49 #|0 \x6E\x4A #|0 \x6E\x4B #|0 \x6E\x4C #|0 \x6E\x4D #|0 \x6E\x4E #|0 \x6E\x4F #|0 \x6E\x50 #|0 \x6E\x51 #|0 \x6E\x52 #|0 \x6E\x53 #|0 \x6E\x54 #|0 \x6E\x55 #|0 \x6E\x56 #|0 \x6E\x57 #|0 \x6E\x58 #|0 \x6E\x59 #|0 \x6E\x5A #|0 \x6E\x5B #|0 \x6E\x5C #|0 \x6E\x5D #|0 \x6E\x5E #|0 \x6E\x5F #|0 \x6E\x60 #|0 \x6E\x61 #|0 \x6E\x62 #|0 \x6E\x63 #|0 \x6E\x64 #|0 \x6E\x65 #|0 \x6E\x66 #|0 \x6E\x67 #|0 \x6E\x68 #|0 \x6E\x69 #|0 \x6E\x6A #|0 \x6E\x6B #|0 \x6E\x6C #|0 \x6E\x6D #|0 \x6E\x6E #|0 \x6E\x6F #|0 \x6E\x70 #|0 \x6E\x71 #|0 \x6E\x72 #|0 \x6E\x73 #|0 \x6E\x74 #|0 \x6E\x75 #|0 \x6E\x76 #|0 \x6E\x77 #|0 \x6E\x78 #|0 \x6E\x79 #|0 \x6E\x7A #|0 \x6E\x7B #|0 \x6E\x7C #|0 \x6E\x7D #|0 \x6E\x7E #|0 \x6F\x21 #|0 \x6F\x22 #|0 \x6F\x23 #|0 \x6F\x24 #|0 \x6F\x25 #|0 \x6F\x26 #|0 \x6F\x27 #|0 \x6F\x28 #|0 \x6F\x29 #|0 \x6F\x2A #|0 \x6F\x2B #|0 \x6F\x2C #|0 \x6F\x2D #|0 \x6F\x2E #|0 \x6F\x2F #|0 \x6F\x30 #|0 \x6F\x31 #|0 \x6F\x32 #|0 \x6F\x33 #|0 \x6F\x34 #|0 \x6F\x35 #|0 \x6F\x36 #|0 \x6F\x37 #|0 \x6F\x38 #|0 \x6F\x39 #|0 \x6F\x3A #|0 \x6F\x3B #|0 \x6F\x3C #|0 \x6F\x3D #|0 \x6F\x3E #|0 \x6F\x3F #|0 \x6F\x40 #|0 \x6F\x41 #|0 \x6F\x42 #|0 \x6F\x43 #|0 \x6F\x44 #|0 \x6F\x45 #|0 \x6F\x46 #|0 \x6F\x47 #|0 \x6F\x48 #|0 \x6F\x49 #|0 \x6F\x4A #|0 \x6F\x4B #|0 \x6F\x4C #|0 \x6F\x4D #|0 \x6F\x4E #|0 \x6F\x4F #|0 \x6F\x50 #|0 \x6F\x51 #|0 \x6F\x52 #|0 \x6F\x53 #|0 \x6F\x54 #|0 \x6F\x55 #|0 \x6F\x56 #|0 \x6F\x57 #|0 \x6F\x58 #|0 \x6F\x59 #|0 \x6F\x5A #|0 \x6F\x5B #|0 \x6F\x5C #|0 \x6F\x5D #|0 \x6F\x5E #|0 \x6F\x5F #|0 \x6F\x60 #|0 \x6F\x61 #|0 \x6F\x62 #|0 \x6F\x63 #|0 \x6F\x64 #|0 \x6F\x65 #|0 \x6F\x66 #|0 \x6F\x67 #|0 \x6F\x68 #|0 \x6F\x69 #|0 \x6F\x6A #|0 \x6F\x6B #|0 \x6F\x6C #|0 \x6F\x6D #|0 \x6F\x6E #|0 \x6F\x6F #|0 \x6F\x70 #|0 \x6F\x71 #|0 \x6F\x72 #|0 \x6F\x73 #|0 \x6F\x74 #|0 \x6F\x75 #|0 \x6F\x76 #|0 \x6F\x77 #|0 \x6F\x78 #|0 \x6F\x79 #|0 \x6F\x7A #|0 \x6F\x7B #|0 \x6F\x7C #|0 \x6F\x7D #|0 \x6F\x7E #|0 \x70\x21 #|0 \x70\x22 #|0 \x70\x23 #|0 \x70\x24 #|0 \x70\x25 #|0 \x70\x26 #|0 \x70\x27 #|0 \x70\x28 #|0 \x70\x29 #|0 \x70\x2A #|0 \x70\x2B #|0 \x70\x2C #|0 \x70\x2D #|0 \x70\x2E #|0 \x70\x2F #|0 \x70\x30 #|0 \x70\x31 #|0 \x70\x32 #|0 \x70\x33 #|0 \x70\x34 #|0 \x70\x35 #|0 \x70\x36 #|0 \x70\x37 #|0 \x70\x38 #|0 \x70\x39 #|0 \x70\x3A #|0 \x70\x3B #|0 \x70\x3C #|0 \x70\x3D #|0 \x70\x3E #|0 \x70\x3F #|0 \x70\x40 #|0 \x70\x41 #|0 \x70\x42 #|0 \x70\x43 #|0 \x70\x44 #|0 \x70\x45 #|0 \x70\x46 #|0 \x70\x47 #|0 \x70\x48 #|0 \x70\x49 #|0 \x70\x4A #|0 \x70\x4B #|0 \x70\x4C #|0 \x70\x4D #|0 \x70\x4E #|0 \x70\x4F #|0 \x70\x50 #|0 \x70\x51 #|0 \x70\x52 #|0 \x70\x53 #|0 \x70\x54 #|0 \x70\x55 #|0 \x70\x56 #|0 \x70\x57 #|0 \x70\x58 #|0 \x70\x59 #|0 \x70\x5A #|0 \x70\x5B #|0 \x70\x5C #|0 \x70\x5D #|0 \x70\x5E #|0 \x70\x5F #|0 \x70\x60 #|0 \x70\x61 #|0 \x70\x62 #|0 \x70\x63 #|0 \x70\x64 #|0 \x70\x65 #|0 \x70\x66 #|0 \x70\x67 #|0 \x70\x68 #|0 \x70\x69 #|0 \x70\x6A #|0 \x70\x6B #|0 \x70\x6C #|0 \x70\x6D #|0 \x70\x6E #|0 \x70\x6F #|0 \x70\x70 #|0 \x70\x71 #|0 \x70\x72 #|0 \x70\x73 #|0 \x70\x74 #|0 \x70\x75 #|0 \x70\x76 #|0 \x70\x77 #|0 \x70\x78 #|0 \x70\x79 #|0 \x70\x7A #|0 \x70\x7B #|0 \x70\x7C #|0 \x70\x7D #|0 \x70\x7E #|0 \x71\x21 #|0 \x71\x22 #|0 \x71\x23 #|0 \x71\x24 #|0 \x71\x25 #|0 \x71\x26 #|0 \x71\x27 #|0 \x71\x28 #|0 \x71\x29 #|0 \x71\x2A #|0 \x71\x2B #|0 \x71\x2C #|0 \x71\x2D #|0 \x71\x2E #|0 \x71\x2F #|0 \x71\x30 #|0 \x71\x31 #|0 \x71\x32 #|0 \x71\x33 #|0 \x71\x34 #|0 \x71\x35 #|0 \x71\x36 #|0 \x71\x37 #|0 \x71\x38 #|0 \x71\x39 #|0 \x71\x3A #|0 \x71\x3B #|0 \x71\x3C #|0 \x71\x3D #|0 \x71\x3E #|0 \x71\x3F #|0 \x71\x40 #|0 \x71\x41 #|0 \x71\x42 #|0 \x71\x43 #|0 \x71\x44 #|0 \x71\x45 #|0 \x71\x46 #|0 \x71\x47 #|0 \x71\x48 #|0 \x71\x49 #|0 \x71\x4A #|0 \x71\x4B #|0 \x71\x4C #|0 \x71\x4D #|0 \x71\x4E #|0 \x71\x4F #|0 \x71\x50 #|0 \x71\x51 #|0 \x71\x52 #|0 \x71\x53 #|0 \x71\x54 #|0 \x71\x55 #|0 \x71\x56 #|0 \x71\x57 #|0 \x71\x58 #|0 \x71\x59 #|0 \x71\x5A #|0 \x71\x5B #|0 \x71\x5C #|0 \x71\x5D #|0 \x71\x5E #|0 \x71\x5F #|0 \x71\x60 #|0 \x71\x61 #|0 \x71\x62 #|0 \x71\x63 #|0 \x71\x64 #|0 \x71\x65 #|0 \x71\x66 #|0 \x71\x67 #|0 \x71\x68 #|0 \x71\x69 #|0 \x71\x6A #|0 \x71\x6B #|0 \x71\x6C #|0 \x71\x6D #|0 \x71\x6E #|0 \x71\x6F #|0 \x71\x70 #|0 \x71\x71 #|0 \x71\x72 #|0 \x71\x73 #|0 \x71\x74 #|0 \x71\x75 #|0 \x71\x76 #|0 \x71\x77 #|0 \x71\x78 #|0 \x71\x79 #|0 \x71\x7A #|0 \x71\x7B #|0 \x71\x7C #|0 \x71\x7D #|0 \x71\x7E #|0 \x72\x21 #|0 \x72\x22 #|0 \x72\x23 #|0 \x72\x24 #|0 \x72\x25 #|0 \x72\x26 #|0 \x72\x27 #|0 \x72\x28 #|0 \x72\x29 #|0 \x72\x2A #|0 \x72\x2B #|0 \x72\x2C #|0 \x72\x2D #|0 \x72\x2E #|0 \x72\x2F #|0 \x72\x30 #|0 \x72\x31 #|0 \x72\x32 #|0 \x72\x33 #|0 \x72\x34 #|0 \x72\x35 #|0 \x72\x36 #|0 \x72\x37 #|0 \x72\x38 #|0 \x72\x39 #|0 \x72\x3A #|0 \x72\x3B #|0 \x72\x3C #|0 \x72\x3D #|0 \x72\x3E #|0 \x72\x3F #|0 \x72\x40 #|0 \x72\x41 #|0 \x72\x42 #|0 \x72\x43 #|0 \x72\x44 #|0 \x72\x45 #|0 \x72\x46 #|0 \x72\x47 #|0 \x72\x48 #|0 \x72\x49 #|0 \x72\x4A #|0 \x72\x4B #|0 \x72\x4C #|0 \x72\x4D #|0 \x72\x4E #|0 \x72\x4F #|0 \x72\x50 #|0 \x72\x51 #|0 \x72\x52 #|0 \x72\x53 #|0 \x72\x54 #|0 \x72\x55 #|0 \x72\x56 #|0 \x72\x57 #|0 \x72\x58 #|0 \x72\x59 #|0 \x72\x5A #|0 \x72\x5B #|0 \x72\x5C #|0 \x72\x5D #|0 \x72\x5E #|0 \x72\x5F #|0 \x72\x60 #|0 \x72\x61 #|0 \x72\x62 #|0 \x72\x63 #|0 \x72\x64 #|0 \x72\x65 #|0 \x72\x66 #|0 \x72\x67 #|0 \x72\x68 #|0 \x72\x69 #|0 \x72\x6A #|0 \x72\x6B #|0 \x72\x6C #|0 \x72\x6D #|0 \x72\x6E #|0 \x72\x6F #|0 \x72\x70 #|0 \x72\x71 #|0 \x72\x72 #|0 \x72\x73 #|0 \x72\x74 #|0 \x72\x75 #|0 \x72\x76 #|0 \x72\x77 #|0 \x72\x78 #|0 \x72\x79 #|0 \x72\x7A #|0 \x72\x7B #|0 \x72\x7C #|0 \x72\x7D #|0 \x72\x7E #|0 \x73\x21 #|0 \x73\x22 #|0 \x73\x23 #|0 \x73\x24 #|0 \x73\x25 #|0 \x73\x26 #|0 \x73\x27 #|0 \x73\x28 #|0 \x73\x29 #|0 \x73\x2A #|0 \x73\x2B #|0 \x73\x2C #|0 \x73\x2D #|0 \x73\x2E #|0 \x73\x2F #|0 \x73\x30 #|0 \x73\x31 #|0 \x73\x32 #|0 \x73\x33 #|0 \x73\x34 #|0 \x73\x35 #|0 \x73\x36 #|0 \x73\x37 #|0 \x73\x38 #|0 \x73\x39 #|0 \x73\x3A #|0 \x73\x3B #|0 \x73\x3C #|0 \x73\x3D #|0 \x73\x3E #|0 \x73\x3F #|0 \x73\x40 #|0 \x73\x41 #|0 \x73\x42 #|0 \x73\x43 #|0 \x73\x44 #|0 \x73\x45 #|0 \x73\x46 #|0 \x73\x47 #|0 \x73\x48 #|0 \x73\x49 #|0 \x73\x4A #|0 \x73\x4B #|0 \x73\x4C #|0 \x73\x4D #|0 \x73\x4E #|0 \x73\x4F #|0 \x73\x50 #|0 \x73\x51 #|0 \x73\x52 #|0 \x73\x53 #|0 \x73\x54 #|0 \x73\x55 #|0 \x73\x56 #|0 \x73\x57 #|0 \x73\x58 #|0 \x73\x59 #|0 \x73\x5A #|0 \x73\x5B #|0 \x73\x5C #|0 \x73\x5D #|0 \x73\x5E #|0 \x73\x5F #|0 \x73\x60 #|0 \x73\x61 #|0 \x73\x62 #|0 \x73\x63 #|0 \x73\x64 #|0 \x73\x65 #|0 \x73\x66 #|0 \x73\x67 #|0 \x73\x68 #|0 \x73\x69 #|0 \x73\x6A #|0 \x73\x6B #|0 \x73\x6C #|0 \x73\x6D #|0 \x73\x6E #|0 \x73\x6F #|0 \x73\x70 #|0 \x73\x71 #|0 \x73\x72 #|0 \x73\x73 #|0 \x73\x74 #|0 \x73\x75 #|0 \x73\x76 #|0 \x73\x77 #|0 \x73\x78 #|0 \x73\x79 #|0 \x73\x7A #|0 \x73\x7B #|0 \x73\x7C #|0 \x73\x7D #|0 \x73\x7E #|0 \x74\x21 #|0 \x74\x22 #|0 \x74\x23 #|0 \x74\x24 #|0 \x74\x25 #|0 \x74\x26 #|0 \x21\x23 #|1 HALFWIDTH IDEOGRAPHIC FULL STOP \x21\x56 #|1 HALFWIDTH LEFT CORNER BRACKET \x21\x57 #|1 HALFWIDTH RIGHT CORNER BRACKET \x21\x22 #|1 HALFWIDTH IDEOGRAPHIC COMMA \x21\x26 #|1 HALFWIDTH KATAKANA MIDDLE DOT \x25\x72 #|1 HALFWIDTH KATAKANA LETTER WO \x25\x21 #|1 HALFWIDTH KATAKANA LETTER SMALL A \x25\x23 #|1 HALFWIDTH KATAKANA LETTER SMALL I \x25\x25 #|1 HALFWIDTH KATAKANA LETTER SMALL U \x25\x27 #|1 HALFWIDTH KATAKANA LETTER SMALL E \x25\x29 #|1 HALFWIDTH KATAKANA LETTER SMALL O \x25\x63 #|1 HALFWIDTH KATAKANA LETTER SMALL YA \x25\x65 #|1 HALFWIDTH KATAKANA LETTER SMALL YU \x25\x67 #|1 HALFWIDTH KATAKANA LETTER SMALL YO \x25\x43 #|1 HALFWIDTH KATAKANA LETTER SMALL TU \x21\x3C #|1 HALFWIDTH KATAKANA-HIRAGANA PROLONGED SOUND MARK \x25\x22 #|1 HALFWIDTH KATAKANA LETTER A \x25\x24 #|1 HALFWIDTH KATAKANA LETTER I \x25\x26 #|1 HALFWIDTH KATAKANA LETTER U \x25\x28 #|1 HALFWIDTH KATAKANA LETTER E \x25\x2A #|1 HALFWIDTH KATAKANA LETTER O \x25\x2B #|1 HALFWIDTH KATAKANA LETTER KA \x25\x2D #|1 HALFWIDTH KATAKANA LETTER KI \x25\x2F #|1 HALFWIDTH KATAKANA LETTER KU \x25\x31 #|1 HALFWIDTH KATAKANA LETTER KE \x25\x33 #|1 HALFWIDTH KATAKANA LETTER KO \x25\x35 #|1 HALFWIDTH KATAKANA LETTER SA \x25\x37 #|1 HALFWIDTH KATAKANA LETTER SI \x25\x39 #|1 HALFWIDTH KATAKANA LETTER SU \x25\x3B #|1 HALFWIDTH KATAKANA LETTER SE \x25\x3D #|1 HALFWIDTH KATAKANA LETTER SO \x25\x3F #|1 HALFWIDTH KATAKANA LETTER TA \x25\x41 #|1 HALFWIDTH KATAKANA LETTER TI \x25\x44 #|1 HALFWIDTH KATAKANA LETTER TU \x25\x46 #|1 HALFWIDTH KATAKANA LETTER TE \x25\x48 #|1 HALFWIDTH KATAKANA LETTER TO \x25\x4A #|1 HALFWIDTH KATAKANA LETTER NA \x25\x4B #|1 HALFWIDTH KATAKANA LETTER NI \x25\x4C #|1 HALFWIDTH KATAKANA LETTER NU \x25\x4D #|1 HALFWIDTH KATAKANA LETTER NE \x25\x4E #|1 HALFWIDTH KATAKANA LETTER NO \x25\x4F #|1 HALFWIDTH KATAKANA LETTER HA \x25\x52 #|1 HALFWIDTH KATAKANA LETTER HI \x25\x55 #|1 HALFWIDTH KATAKANA LETTER HU \x25\x58 #|1 HALFWIDTH KATAKANA LETTER HE \x25\x5B #|1 HALFWIDTH KATAKANA LETTER HO \x25\x5E #|1 HALFWIDTH KATAKANA LETTER MA \x25\x5F #|1 HALFWIDTH KATAKANA LETTER MI \x25\x60 #|1 HALFWIDTH KATAKANA LETTER MU \x25\x61 #|1 HALFWIDTH KATAKANA LETTER ME \x25\x62 #|1 HALFWIDTH KATAKANA LETTER MO \x25\x64 #|1 HALFWIDTH KATAKANA LETTER YA \x25\x66 #|1 HALFWIDTH KATAKANA LETTER YU \x25\x68 #|1 HALFWIDTH KATAKANA LETTER YO \x25\x69 #|1 HALFWIDTH KATAKANA LETTER RA \x25\x6A #|1 HALFWIDTH KATAKANA LETTER RI \x25\x6B #|1 HALFWIDTH KATAKANA LETTER RU \x25\x6C #|1 HALFWIDTH KATAKANA LETTER RE \x25\x6D #|1 HALFWIDTH KATAKANA LETTER RO \x25\x6F #|1 HALFWIDTH KATAKANA LETTER WA \x25\x73 #|1 HALFWIDTH KATAKANA LETTER N \x21\x2B #|1 HALFWIDTH KATAKANA VOICED SOUND MARK \x21\x2C #|1 HALFWIDTH KATAKANA SEMI-VOICED SOUND MARK # END CHARMAP # #________________________________________________________________________ suite3270-4.1/Common/kybd.c000066400000000000000000003034351413735575200153740ustar00rootroot00000000000000/* * Copyright (c) 1993-2009, 2013-2021 Paul Mattes. * Copyright (c) 1990, Jeff Sparkes. * Copyright (c) 1989, Georgia Tech Research Corporation (GTRC), Atlanta, GA * 30332. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the names of Paul Mattes, Jeff Sparkes, GTRC nor the names of * their contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES, JEFF SPARKES AND GTRC "AS IS" AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL PAUL MATTES, JEFF SPARKES OR GTRC BE * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. */ /* * kybd.c * This module handles the keyboard for the 3270 emulator. */ #include "globals.h" #include #include "3270ds.h" #include "appres.h" #include "ctlr.h" #include "resources.h" #include "screen.h" #include "actions.h" #include "apl.h" #include "boolstr.h" #include "codepage.h" #include "ctlrc.h" #include "unicodec.h" #include "ft.h" #include "host.h" #include "idle.h" #include "kybd.h" #include "latin1.h" #include "lazya.h" #include "linemode.h" #include "names.h" #include "nvt.h" #include "popups.h" #include "print_screen.h" #include "product.h" #include "screen.h" #include "scroll.h" #include "split_host.h" #include "stringscript.h" #include "task.h" #include "telnet.h" #include "toggles.h" #include "trace.h" #include "utf8.h" #include "utils.h" #include "varbuf.h" #include "vstatus.h" /*#define KYBDLOCK_TRACE 1*/ #define MarginedPaste() (toggled(MARGINED_PASTE) || toggled(OVERLAY_PASTE)) /* Statics */ static enum { NONE, COMPOSE, FIRST } composing = NONE; static unsigned char pf_xlate[] = { AID_PF1, AID_PF2, AID_PF3, AID_PF4, AID_PF5, AID_PF6, AID_PF7, AID_PF8, AID_PF9, AID_PF10, AID_PF11, AID_PF12, AID_PF13, AID_PF14, AID_PF15, AID_PF16, AID_PF17, AID_PF18, AID_PF19, AID_PF20, AID_PF21, AID_PF22, AID_PF23, AID_PF24 }; static unsigned char pa_xlate[] = { AID_PA1, AID_PA2, AID_PA3 }; #define PF_SZ (sizeof(pf_xlate)/sizeof(pf_xlate[0])) #define PA_SZ (sizeof(pa_xlate)/sizeof(pa_xlate[0])) static ioid_t unlock_id = NULL_IOID; static time_t unlock_delay_time; static bool key_Character(unsigned ebc, bool with_ge, bool pasting, bool oerr_fail, bool *consumed); static bool flush_ta(void); static void key_AID(unsigned char aid_code); static void kybdlock_set(unsigned int bits, const char *cause); static ks_t my_string_to_key(const char *s, enum keytype *keytypep, ucs4_t *ucs4); static bool key_WCharacter(unsigned char code[], bool oerr_fail); /* Globals */ unsigned int kybdlock = KL_NOT_CONNECTED; unsigned char aid = AID_NO; /* current attention ID */ /* Composite key mappings. */ struct akey { ucs4_t ucs4; enum keytype keytype; }; static struct akey cc_first; static struct composite { struct akey k1, k2; struct akey translation; } *composites = NULL; static int n_composites = 0; static char *default_compose_map_name = NULL; static char *temporary_compose_map_name = NULL; #define ak_eq(k1, k2) (((k1).ucs4 == (k2).ucs4) && \ ((k1).keytype == (k2).keytype)) typedef struct ta { struct ta *next; const char *efn_name; action_t *fn; const char *parm1; const char *parm2; } ta_t; ta_t *ta_head = (struct ta *) NULL; ta_t *ta_tail = (struct ta *) NULL; static char dxl[] = "0123456789abcdef"; #define FROM_HEX(c) (int)(strchr(dxl, tolower((unsigned char)c)) - dxl) #define KYBDLOCK_IS_OERR (kybdlock && !(kybdlock & ~KL_OERR_MASK)) /* Common kybdlock logic for actions that clear overflows */ #define OERR_CLEAR_OR_ENQ(action) do { \ if (kybdlock) { \ if (KYBDLOCK_IS_OERR) { \ kybdlock_clr(KL_OERR_MASK, action); \ vstatus_reset(); \ } else { \ enq_ta(action, NULL, NULL); \ return true; \ } \ } \ } while(false) static action_t Attn_action; static action_t BackSpace_action; static action_t BackTab_action; static action_t Attn_action; static action_t BackSpace_action; static action_t BackTab_action; static action_t CircumNot_action; static action_t Clear_action; static action_t Compose_action; static action_t CursorSelect_action; static action_t Delete_action; static action_t DeleteField_action; static action_t DeleteWord_action; static action_t Dup_action; static action_t Enter_action; static action_t Erase_action; static action_t EraseEOF_action; static action_t EraseInput_action; static action_t FieldEnd_action; static action_t FieldMark_action; static action_t Flip_action; static action_t HexString_action; static action_t Home_action; static action_t Insert_action; static action_t Interrupt_action; static action_t Key_action; static action_t Left2_action; static action_t MonoCase_action; static action_t MoveCursor_action; static action_t MoveCursor1_action; static action_t Newline_action; static action_t NextWord_action; static action_t PA_action; static action_t PasteString_action; static action_t PF_action; static action_t PreviousWord_action; static action_t Reset_action; static action_t Right2_action; static action_t String_action; static action_t SysReq_action; static action_t Tab_action; static action_t TemporaryComposeMap_action; static action_t ToggleInsert_action; static action_t ToggleReverse_action; static action_table_t kybd_actions[] = { { AnAttn, Attn_action, ACTION_KE }, { AnBackSpace, BackSpace_action, ACTION_KE }, { AnBackTab, BackTab_action, ACTION_KE }, { AnCircumNot, CircumNot_action, ACTION_KE }, { AnClear, Clear_action, ACTION_KE }, { AnCursorSelect, CursorSelect_action, ACTION_KE }, { AnDelete, Delete_action, ACTION_KE }, { AnDeleteField, DeleteField_action, ACTION_KE }, { AnDeleteWord, DeleteWord_action, ACTION_KE }, { AnDown, Down_action, ACTION_KE }, { AnDup, Dup_action, ACTION_KE }, { AnEnter, Enter_action, ACTION_KE }, { AnErase, Erase_action, ACTION_KE }, { AnEraseEOF, EraseEOF_action, ACTION_KE }, { AnEraseInput, EraseInput_action, ACTION_KE }, { AnFieldEnd, FieldEnd_action, ACTION_KE }, { AnFieldMark, FieldMark_action, ACTION_KE }, { AnFlip, Flip_action, ACTION_KE }, { AnHexString, HexString_action, ACTION_KE }, { AnHome, Home_action, ACTION_KE }, { AnInsert, Insert_action, ACTION_KE }, { AnInterrupt, Interrupt_action, ACTION_KE }, { AnKey, Key_action, ACTION_KE }, { AnLeft, Left_action, ACTION_KE }, { AnLeft2, Left2_action, ACTION_KE }, { AnMonoCase, MonoCase_action, ACTION_KE | ACTION_HIDDEN }, { AnMoveCursor, MoveCursor_action, ACTION_KE }, { AnMoveCursor1, MoveCursor1_action, ACTION_KE }, { AnNewline, Newline_action, ACTION_KE }, { AnNextWord, NextWord_action, ACTION_KE }, { AnPA, PA_action, ACTION_KE }, { AnPasteString, PasteString_action, ACTION_KE }, { AnPF, PF_action, ACTION_KE }, { AnPreviousWord, PreviousWord_action, ACTION_KE }, { AnReset, Reset_action, ACTION_KE }, { AnRight, Right_action, ACTION_KE }, { AnRight2, Right2_action, ACTION_KE }, { AnString, String_action, ACTION_KE }, { AnSysReq, SysReq_action, ACTION_KE }, { AnTab, Tab_action, ACTION_KE }, { AnTemporaryComposeMap,TemporaryComposeMap_action,ACTION_KE }, { AnToggleInsert, ToggleInsert_action, ACTION_KE }, { AnToggleReverse, ToggleReverse_action, ACTION_KE }, { AnUp, Up_action, ACTION_KE } }; static action_table_t kybd_dactions[] = { { AnCompose, Compose_action, ACTION_KE } }; /* * Put a function or action on the typeahead queue. */ static void enq_xta(const char *name, action_t *fn, const char *parm1, const char *parm2) { ta_t *ta; /* If no connection, forget it. */ if (!IN_3270 && !IN_NVT && !IN_SSCP) { vtrace(" dropped (not connected)\n"); return; } /* If operator error, complain and drop it. */ if (kybdlock & KL_OERR_MASK) { ring_bell(); vtrace(" dropped (operator error)\n"); return; } /* If scroll lock, complain and drop it. */ if (kybdlock & KL_SCROLLED) { ring_bell(); vtrace(" dropped (scrolled)\n"); return; } /* If typeahead disabled, complain and drop it. */ if (!toggled(TYPEAHEAD)) { vtrace(" dropped (no typeahead)\n"); return; } ta = (ta_t *)Malloc(sizeof(*ta)); ta->next = NULL; ta->efn_name = name; ta->fn = fn; ta->parm1 = ta->parm2 = NULL; if (parm1) { ta->parm1 = NewString(parm1); if (parm2) { ta->parm2 = NewString(parm2); } } if (ta_head) { ta_tail->next = ta; } else { ta_head = ta; vstatus_typeahead(true); } ta_tail = ta; vtrace(" action queued (kybdlock 0x%x)\n", kybdlock); } /* * Put an action on the typeahead queue. */ static void enq_ta(const char *efn_name, const char *parm1, const char *parm2) { enq_xta(efn_name, NULL, parm1, parm2); } /* * Put a function on the typeahead queue. */ static void enq_fta(action_t *fn, const char *parm1, const char *parm2) { enq_xta(NULL, fn, parm1, parm2); } /* * Execute an action from the typeahead queue. */ bool run_ta(void) { ta_t *ta; if (kybdlock || (ta = ta_head) == NULL) { return false; } if ((ta_head = ta->next) == NULL) { ta_tail = NULL; vstatus_typeahead(false); } if (ta->efn_name) { run_action(ta->efn_name, IA_TYPEAHEAD, ta->parm1, ta->parm2); } else { unsigned argc = 0; const char *argv[2]; if (ta->parm1) { argv[argc++] = ta->parm1; if (ta->parm2) { argv[argc++] = ta->parm2; } } (*ta->fn)(IA_TYPEAHEAD, argc, argv); } Free((char *)ta->parm1); Free((char *)ta->parm2); Free(ta); return true; } /* * Flush the typeahead queue. * Returns whether or not anything was flushed. */ static bool flush_ta(void) { ta_t *ta, *next; bool any = false; for (ta = ta_head; ta != NULL; ta = next) { Free((char *)ta->parm1); Free((char *)ta->parm2); next = ta->next; Free(ta); any = true; } ta_head = ta_tail = NULL; vstatus_typeahead(false); return any; } /* Decode keyboard lock bits. */ static char * kybdlock_decode(char *how, unsigned int bits) { static char *rs = NULL; varbuf_t r; char *space = ""; if (bits == (unsigned int)-1) { return "all"; } vb_init(&r); if (bits & KL_OERR_MASK) { vb_appendf(&r, "%sOERR(", how); switch(bits & KL_OERR_MASK) { case KL_OERR_PROTECTED: vb_appends(&r, "PROTECTED"); break; case KL_OERR_NUMERIC: vb_appends(&r, "NUMERIC"); break; case KL_OERR_OVERFLOW: vb_appends(&r, "OVERFLOW"); break; case KL_OERR_DBCS: vb_appends(&r, "DBCS"); break; default: vb_appendf(&r, "?%d", bits & KL_OERR_MASK); break; } vb_appendf(&r, ")"); space = " "; } if (bits & KL_NOT_CONNECTED) { vb_appendf(&r, "%s%sNOT_CONNECTED", space, how); space = " "; } if (bits & KL_AWAITING_FIRST) { vb_appendf(&r, "%s%sAWAITING_FIRST", space, how); space = " "; } if (bits & KL_OIA_TWAIT) { vb_appendf(&r, "%s%sOIA_TWAIT", space, how); space = " "; } if (bits & KL_OIA_LOCKED) { vb_appendf(&r, "%s%sOIA_LOCKED", space, how); space = " "; } if (bits & KL_DEFERRED_UNLOCK) { vb_appendf(&r, "%s%sDEFERRED_UNLOCK", space, how); space = " "; } if (bits & KL_ENTER_INHIBIT) { vb_appendf(&r, "%s%sENTER_INHIBIT", space, how); space = " "; } if (bits & KL_SCROLLED) { vb_appendf(&r, "%s%sSCROLLED", space, how); space = " "; } if (bits & KL_OIA_MINUS) { vb_appendf(&r, "%s%sOIA_MINUS", space, how); space = " "; } Replace(rs, vb_consume(&r)); return rs; } /* Set bits in the keyboard lock. */ static void kybdlock_set(unsigned int bits, const char *cause _is_unused) { unsigned int n; vtrace("Keyboard lock(%s) %s\n", cause, kybdlock_decode("+", bits)); n = kybdlock | bits; if (n != kybdlock) { #if defined(KYBDLOCK_TRACE) /*[*/ vtrace(" %s: kybdlock |= 0x%04x, 0x%04x -> 0x%04x\n", cause, bits, kybdlock, n); #endif /*]*/ if ((kybdlock ^ bits) & KL_DEFERRED_UNLOCK) { /* Turned on deferred unlock. */ unlock_delay_time = time(NULL); } kybdlock = n; } } /* Clear bits in the keyboard lock. */ void kybdlock_clr(unsigned int bits, const char *cause _is_unused) { unsigned int n; if (kybdlock & bits) { vtrace("Keyboard unlock(%s) %s\n", cause, kybdlock_decode("-", kybdlock & bits)); } n = kybdlock & ~bits; if (n != kybdlock) { #if defined(KYBDLOCK_TRACE) /*[*/ vtrace(" %s: kybdlock &= ~0x%04x, 0x%04x -> 0x%04x\n", cause, bits, kybdlock, n); #endif /*]*/ if ((kybdlock ^ n) & KL_DEFERRED_UNLOCK) { /* Turned off deferred unlock. */ unlock_delay_time = 0; } kybdlock = n; } } /* * Set or clear enter-inhibit mode. */ void kybd_inhibit(bool inhibit) { if (inhibit) { kybdlock_set(KL_ENTER_INHIBIT, "kybd_inhibit"); if (kybdlock == KL_ENTER_INHIBIT) { vstatus_reset(); } } else { kybdlock_clr(KL_ENTER_INHIBIT, "kybd_inhibit"); if (!kybdlock) { vstatus_reset(); } } } /* * Toggle insert mode. */ static void insert_mode(bool on) { if (on != toggled(INSERT_MODE)) { do_toggle(INSERT_MODE); } } /* * Called when a host connects or disconnects. */ static void kybd_connect(bool connected _is_unused) { if ((kybdlock & KL_DEFERRED_UNLOCK) && unlock_id) { RemoveTimeOut(unlock_id); unlock_id = NULL_IOID; } kybdlock_clr(-1, "kybd_connect"); if (CONNECTED) { if (!appres.nvt_mode && !HOST_FLAG(ANSI_HOST) && !HOST_FLAG(NO_LOGIN_HOST)) { /* Wait for any output or a WCC(restore) from the host */ kybdlock_set(KL_AWAITING_FIRST, "kybd_connect"); } } else { kybdlock_set(KL_NOT_CONNECTED, "kybd_connect"); flush_ta(); insert_mode(false); } } /* * Called when we switch between 3270 and NVT modes. */ static void kybd_in3270(bool in3270 _is_unused) { if ((kybdlock & KL_DEFERRED_UNLOCK) && unlock_id != NULL_IOID) { RemoveTimeOut(unlock_id); unlock_id = NULL_IOID; } insert_mode(IN_3270 && toggled(ALWAYS_INSERT)); switch ((int)cstate) { case CONNECTED_UNBOUND: /* * We just processed and UNBIND from the host. We are waiting * for a BIND, or data to switch us to 3270, NVT or SSCP-LU * mode. */ if (!HOST_FLAG(NO_LOGIN_HOST)) { kybdlock_set(KL_AWAITING_FIRST, "kybd_in3270"); } break; case CONNECTED_NVT: case CONNECTED_NVT_CHAR: case CONNECTED_E_NVT: case CONNECTED_SSCP: /* * We just transitioned to NVT, TN3270E NVT or TN3270E SSCP-LU * mode. Remove all lock bits. */ kybdlock_clr(-1, "kybd_in3270"); break; case CONNECTED_TN3270E: /* * We are in TN3270E 3270 mode. If so configured and we were * explicitly bound, then the keyboard must be unlocked now. * If not, we are implicitly in 3270 mode because the host did * not negotiate BIND notifications, and we should continue to * wait for a Write command before unlocking the keyboard. */ if (appres.bind_unlock && net_bound()) { kybdlock_clr(-1, "kybd_in3270"); } else { /* * Clear everything but AWAITING_FIRST and LOCKED. * The former was set by this function when we were * unbound. The latter may be a leftover from the user * initiating a host switch by sending a command with an * AID. If this is a non-bind-unlock host (bind_unlock is * clear, the default), we want to preserve that until the * host sends a Write with a Keyboard Restore in it. */ kybdlock_clr(~(KL_AWAITING_FIRST | KL_OIA_LOCKED), "kybd_in3270"); } break; default: /* * We just transitioned into or out of 3270 mode. * Remove all lock bits except AWAITING_FIRST. */ kybdlock_clr(~KL_AWAITING_FIRST, "kybd_in3270"); break; } /* There might be a macro pending. */ if (CONNECTED) { ps_process(); } } /* * Toggle the operator error lock setting. */ static bool toggle_oerr_lock(const char *name _is_unused, const char *value) { const char *errmsg = boolstr(value, &appres.oerr_lock); if (errmsg != NULL) { popup_an_error("%s %s", ResOerrLock, errmsg); return false; } return true; } /* * Toggle the unlock delay setting. */ static bool toggle_unlock_delay(const char *name _is_unused, const char *value) { const char *errmsg = boolstr(value, &appres.unlock_delay); if (errmsg != NULL) { popup_an_error("%s %s", ResUnlockDelay, errmsg); return false; } return true; } /* * Toggle the unlock delay milliseconds setting. */ static bool toggle_unlock_delay_ms(const char *name _is_unused, const char *value) { unsigned long l; char *end; int ms; if (!*value) { appres.unlock_delay_ms = 0; return true; } l = strtoul(value, &end, 10); ms = (int)l; if (*end != '\0' || (unsigned long)ms != l || ms < 0) { popup_an_error("Invalid %s value", ResUnlockDelay); return false; } appres.unlock_delay_ms = ms; return true; } /* The always-insert toggle changed. */ static void toggle_always_insert(toggle_index_t ix, enum toggle_type type) { insert_mode(IN_3270 && toggled(ALWAYS_INSERT)); } /* The right-to-left display toggle changed. */ static void toggle_right_to_left(toggle_index_t ix, enum toggle_type type) { if (screen_flipped() != toggled(RIGHT_TO_LEFT)) { screen_flip(); } } /* * Lock the keyboard because of an operator error. * * Returns false (command failed) if error message was generated, true * otherwise. */ static bool operator_error(int error_type, bool oerr_fail) { if (oerr_fail) { popup_an_error("Keyboard locked"); } if (appres.oerr_lock || oerr_fail) { vstatus_oerr(error_type); mcursor_locked(); kybdlock_set((unsigned int)error_type, "operator_error"); flush_ta(); } return !oerr_fail; } /* The reverse input toggle changed. */ static void toggle_reverse_input(toggle_index_t ix, enum toggle_type type) { vstatus_reverse_mode(toggled(REVERSE_INPUT)); } /* The insert mode toggle changed. */ static void toggle_insert_mode(toggle_index_t ix, enum toggle_type type) { vstatus_insert_mode(toggled(INSERT_MODE)); } /* * Keyboard module registration. */ void kybd_register(void) { static toggle_register_t toggles[] = { { BLANK_FILL, NULL, 0 }, { SHOW_TIMING, NULL, 0 }, { ALWAYS_INSERT,toggle_always_insert, 0 }, { RIGHT_TO_LEFT,toggle_right_to_left, 0 }, { REVERSE_INPUT,toggle_reverse_input, 0 }, { INSERT_MODE, toggle_insert_mode, 0 }, }; /* Register interest in connect and disconnect events. */ register_schange_ordered(ST_CONNECT, kybd_connect, 1000); register_schange_ordered(ST_3270_MODE, kybd_in3270, 1000); /* Register the actions. */ register_actions(kybd_actions, array_count(kybd_actions)); /* Register the interactive actions. */ if (product_has_display()) { register_actions(kybd_dactions, array_count(kybd_dactions)); } /* Register the toggles. */ register_toggles(toggles, array_count(toggles)); register_extended_toggle(ResOerrLock, toggle_oerr_lock, NULL, NULL, (void **)&appres.oerr_lock, XRM_BOOLEAN); register_extended_toggle(ResUnlockDelay, toggle_unlock_delay, NULL, NULL, (void **)&appres.unlock_delay, XRM_BOOLEAN); register_extended_toggle(ResUnlockDelayMs, toggle_unlock_delay_ms, NULL, NULL, (void **)&appres.unlock_delay_ms, XRM_INT); } /* * Handle an AID (Attention IDentifier) key. This is the common stuff that * gets executed for all AID keys (PFs, PAs, Clear and etc). */ static void key_AID(unsigned char aid_code) { if (IN_NVT) { register unsigned i; if (aid_code == AID_ENTER) { net_sendc('\r'); return; } for (i = 0; i < PF_SZ; i++) if (aid_code == pf_xlate[i]) { nvt_send_pf(i+1); return; } for (i = 0; i < PA_SZ; i++) { if (aid_code == pa_xlate[i]) { nvt_send_pa(i+1); return; } } return; } if (IN_SSCP) { if (kybdlock & KL_OIA_MINUS) { return; } switch (aid_code) { case AID_CLEAR: /* Handled locally. */ break; case AID_ENTER: /* * Act as if the host had written our input, and * send it as a Read Modified. */ buffer_addr = cursor_addr; aid = aid_code; ctlr_read_modified(aid, false); vstatus_ctlr_done(); break; default: /* Everything else is invalid in SSCP-LU mode. */ vstatus_minus(); kybdlock_set(KL_OIA_MINUS, "key_AID"); return; } return; } vstatus_twait(); mcursor_waiting(); insert_mode(toggled(ALWAYS_INSERT)); kybdlock_set(KL_OIA_TWAIT | KL_OIA_LOCKED, "key_AID"); aid = aid_code; ctlr_read_modified(aid, false); ticking_start(false); vstatus_ctlr_done(); } static bool PF_action(ia_t ia, unsigned argc, const char **argv) { unsigned k; action_debug(AnPF, ia, argc, argv); if (check_argc(AnPF, argc, 1, 1) < 0) { return false; } k = atoi(argv[0]); if (k < 1 || k > PF_SZ) { popup_an_error(AnPF "(): Invalid argument '%s'", argv[0]); return false; } if (kybdlock & KL_OIA_MINUS) { return true; } if (kybdlock) { enq_ta(AnPF, argv[0], NULL); } else { key_AID(pf_xlate[k-1]); } return true; } static bool PA_action(ia_t ia, unsigned argc, const char **argv) { unsigned k; action_debug(AnPA, ia, argc, argv); if (check_argc(AnPA, argc, 1, 1) < 0) { return false; } k = atoi(argv[0]); if (k < 1 || k > PA_SZ) { popup_an_error(AnPA "(): Invalid argument '%s'", argv[0]); return false; } if (kybdlock & KL_OIA_MINUS) { return true; } if (kybdlock) { enq_ta(AnPA, argv[0], NULL); } else { key_AID(pa_xlate[k-1]); } return true; } /* * ATTN key, per RFC 2355. Sends IP, regardless. */ static bool Attn_action(ia_t ia, unsigned argc, const char **argv) { action_debug(AnAttn, ia, argc, argv); if (check_argc(AnAttn, argc, 0, 0) < 0) { return false; } if (IN_E) { if (net_bound()) { net_interrupt(0); } else { vstatus_minus(); kybdlock_set(KL_OIA_MINUS, AnAttn); } return true; } if (IN_3270) { net_break(0); return true; } return false; } /* * IAC IP, which works for 5250 System Request and interrupts the program * on an AS/400, even when the keyboard is locked. * * This is now the same as the Attn action. */ static bool Interrupt_action(ia_t ia, unsigned argc, const char **argv) { action_debug(AnInterrupt, ia, argc, argv); if (check_argc(AnInterrupt, argc, 0, 0) < 0) { return false; } if (!IN_3270) { return false; } net_interrupt(0); return true; } /* * Prepare for an insert of 'count' bytes. * Returns true if the insert is legal, false otherwise. */ static bool ins_prep(int faddr, int baddr, int count, bool *no_room, bool oerr_fail) { int next_faddr; int xaddr; int need; int ntb; int tb_start = -1; int copy_len; *no_room = false; /* Find the end of the field. */ if (faddr == -1) { /* Unformatted. Use the end of the line. */ next_faddr = (((baddr / COLS) + 1) * COLS) % (ROWS*COLS); } else { next_faddr = faddr; INC_BA(next_faddr); while (next_faddr != faddr && !ea_buf[next_faddr].fa) { INC_BA(next_faddr); } } /* Are there enough NULLs or trailing blanks available? */ xaddr = baddr; need = count; ntb = 0; while (need && (xaddr != next_faddr)) { if (ea_buf[xaddr].ec == EBC_null) { need--; } else if (toggled(BLANK_FILL) && ((ea_buf[xaddr].ec == EBC_space) || (ea_buf[xaddr].ec == EBC_underscore))) { if (tb_start == -1) { tb_start = xaddr; } ntb++; } else { tb_start = -1; ntb = 0; } INC_BA(xaddr); } #if defined(_ST) /*[*/ printf("need %d at %d, tb_start at %d\n", count, baddr, tb_start); #endif /*]*/ if (need - ntb > 0) { if (!toggled(REVERSE_INPUT)) { return operator_error(KL_OERR_OVERFLOW, oerr_fail); } else { *no_room = true; return true; } } /* * Shift the buffer to the right until we've consumed the available * (and needed) NULLs. */ need = count; xaddr = baddr; while (need && (xaddr != next_faddr)) { int n_nulls = 0; int first_null = -1; while (need && ((ea_buf[xaddr].ec == EBC_null) || (tb_start >= 0 && xaddr >= tb_start))) { need--; n_nulls++; if (first_null == -1) { first_null = xaddr; } INC_BA(xaddr); } if (n_nulls) { int to; /* Shift right n_nulls worth. */ copy_len = first_null - baddr; if (copy_len < 0) { copy_len += ROWS*COLS; } to = (baddr + n_nulls) % (ROWS*COLS); #if defined(_ST) /*[*/ printf("found %d NULLs at %d\n", n_nulls, first_null); printf("copying %d from %d to %d\n", copy_len, to, first_null); #endif /*]*/ if (copy_len) { ctlr_wrapping_memmove(to, baddr, copy_len); } } INC_BA(xaddr); } return true; } /* Flags OR'ed into an EBCDIC code when pushed into the typeahead queue. */ #define GE_WFLAG 0x10000 #define PASTE_WFLAG 0x20000 /* * Callback for enqueued typeahead. The single parameter is an EBCDIC code, * OR'd with the flags above. */ static bool key_Character_wrapper(ia_t ia _is_unused, unsigned argc, const char **argv) { unsigned ebc; bool with_ge = false; bool pasting = false; char mb[16]; ucs4_t uc; bool oerr_fail = false; if (argc > 1 && !strcasecmp(argv[1], KwFailOnError)) { oerr_fail = true; } ebc = atoi(argv[0]); if (ebc & GE_WFLAG) { with_ge = true; ebc &= ~GE_WFLAG; } if (ebc & PASTE_WFLAG) { pasting = true; ebc &= ~PASTE_WFLAG; } ebcdic_to_multibyte_x(ebc, with_ge? CS_GE: CS_BASE, mb, sizeof(mb), EUO_BLANK_UNDEF, &uc); vtrace(" %s -> Key(%s\"%s\")\n", ia_name[(int) ia_cause], with_ge ? "GE " : "", mb); key_Character(ebc, with_ge, pasting, oerr_fail, NULL); return true; } /* * Handle an ordinary displayable character key. Lots of stuff to handle * insert-mode, protected fields and etc. * * Returns true if action was successfully processed, including typeahead and * silent operator errors. * If true is returned, consumed is returned as true if the character was * actually accepted. */ static bool key_Character(unsigned ebc, bool with_ge, bool pasting, bool oerr_fail, bool *consumed) { register int baddr, faddr, xaddr; register unsigned char fa; enum dbcs_why why = DBCS_FIELD; bool no_room = false; bool auto_skip = true; if (consumed != NULL) { *consumed = false; } if (kybdlock) { char *codename; codename = lazyaf("%d", ebc | (with_ge ? GE_WFLAG : 0) | (pasting ? PASTE_WFLAG : 0)); enq_fta(key_Character_wrapper, codename, oerr_fail ? KwFailOnError : KwNoFailOnError); return true; } baddr = cursor_addr; faddr = find_field_attribute(baddr); fa = get_field_attribute(baddr); if (pasting && toggled(OVERLAY_PASTE)) { auto_skip = false; } if (ea_buf[baddr].fa || FA_IS_PROTECTED(fa)) { if (!auto_skip) { /* * In overlay-paste mode, protected fields cause paste buffer * data to be dropped while moving the cursor right. */ INC_BA(baddr); cursor_move(baddr); return true; } else { return operator_error(KL_OERR_PROTECTED, oerr_fail); } } if (FA_IS_NUMERIC(fa) && !((ebc >= EBC_0 && ebc <= EBC_9) || ebc == EBC_minus || ebc == EBC_period || ebc == EBC_comma)) { if (appres.numeric_lock) { return operator_error(KL_OERR_NUMERIC, oerr_fail); } else { #if 0 /* Ignore it, successfully. */ vtrace("Ignoring non-numeric character in numeric field\n"); return true; #endif } } /* Can't put an SBCS in a DBCS field. */ if (ea_buf[faddr].cs == CS_DBCS) { return operator_error(KL_OERR_DBCS, oerr_fail); } /* If it's an SI (end of DBCS subfield), move over one position. */ if (ea_buf[baddr].ec == EBC_si) { INC_BA(baddr); if (baddr == faddr) { return operator_error(KL_OERR_OVERFLOW, oerr_fail); } } /* Add the character. */ if (ea_buf[baddr].ec == EBC_so) { if (toggled(INSERT_MODE)) { if (!ins_prep(faddr, baddr, 1, &no_room, oerr_fail)) { return false; } } else { bool was_si = false; /* * Overwriting an SO (start of DBCS subfield). * If it's followed by an SI, replace the SO/SI * pair with x/space. If not, replace it and * the following DBCS character with * x/space/SO. */ xaddr = baddr; INC_BA(xaddr); was_si = (ea_buf[xaddr].ec == EBC_si); ctlr_add(xaddr, EBC_space, CS_BASE); ctlr_add_fg(xaddr, 0); ctlr_add_bg(xaddr, 0); if (!was_si) { INC_BA(xaddr); ctlr_add(xaddr, EBC_so, CS_BASE); ctlr_add_fg(xaddr, 0); ctlr_add_bg(xaddr, 0); } } } else switch (ctlr_lookleft_state(baddr, &why)) { case DBCS_RIGHT: DEC_BA(baddr); /* fall through... */ case DBCS_LEFT: if (why == DBCS_ATTRIBUTE) { if (toggled(INSERT_MODE)) { if (!ins_prep(faddr, baddr, 1, &no_room, oerr_fail)) { return false; } } else { /* Replace single DBCS char with x/space. */ xaddr = baddr; INC_BA(xaddr); ctlr_add(xaddr, EBC_space, CS_BASE); ctlr_add_fg(xaddr, 0); ctlr_add_gr(xaddr, 0); } } else { bool was_si; if (toggled(INSERT_MODE)) { /* * Inserting SBCS into a DBCS subfield. If this is the first * position, we can just insert one character in front of the * SO. Otherwise, we'll need room for SI (to end subfield), * the character, and SO (to begin the subfield again). */ xaddr = baddr; DEC_BA(xaddr); if (ea_buf[xaddr].ec == EBC_so) { DEC_BA(baddr); if (!ins_prep(faddr, baddr, 1, &no_room, oerr_fail)) { return false; } } else { if (!ins_prep(faddr, baddr, 3, &no_room, oerr_fail)) { return false; } xaddr = baddr; ctlr_add(xaddr, EBC_si, CS_BASE); ctlr_add_fg(xaddr, 0); ctlr_add_gr(xaddr, 0); INC_BA(xaddr); INC_BA(baddr); INC_BA(xaddr); ctlr_add(xaddr, EBC_so, CS_BASE); ctlr_add_fg(xaddr, 0); ctlr_add_gr(xaddr, 0); } } else { /* Overwriting part of a subfield. */ xaddr = baddr; ctlr_add(xaddr, EBC_si, CS_BASE); ctlr_add_fg(xaddr, 0); ctlr_add_gr(xaddr, 0); INC_BA(xaddr); INC_BA(baddr); INC_BA(xaddr); was_si = (ea_buf[xaddr].ec == EBC_si); ctlr_add(xaddr, EBC_space, CS_BASE); ctlr_add_fg(xaddr, 0); ctlr_add_gr(xaddr, 0); if (!was_si) { INC_BA(xaddr); ctlr_add(xaddr, EBC_so, CS_BASE); ctlr_add_fg(xaddr, 0); ctlr_add_gr(xaddr, 0); } } } break; default: case DBCS_NONE: if ((toggled(REVERSE_INPUT) || toggled(INSERT_MODE)) && !ins_prep(faddr, baddr, 1, &no_room, oerr_fail)) { return false; } break; } if (no_room) { do { INC_BA(baddr); } while (ea_buf[baddr].fa); } else { ctlr_add(baddr, (unsigned char)ebc, (unsigned char)(with_ge ? CS_GE : 0)); ctlr_add_fg(baddr, 0); ctlr_add_gr(baddr, 0); if (!toggled(REVERSE_INPUT)) { INC_BA(baddr); } } /* Replace leading nulls with blanks, if desired. */ if (formatted && toggled(BLANK_FILL)) { register int baddr_fill = baddr; DEC_BA(baddr_fill); while (baddr_fill != faddr) { /* Check for backward line wrap. */ if ((baddr_fill % COLS) == COLS - 1) { bool aborted = true; register int baddr_scan = baddr_fill; /* Check the field within the preceeding line for NULLs. */ while (baddr_scan != faddr) { if (ea_buf[baddr_scan].ec != EBC_null) { aborted = false; break; } if (!(baddr_scan % COLS)) { break; } DEC_BA(baddr_scan); } if (aborted) { break; } } if (ea_buf[baddr_fill].ec == EBC_null) { ctlr_add(baddr_fill, EBC_space, 0); } DEC_BA(baddr_fill); } } mdt_set(cursor_addr); /* * Implement auto-skip, and don't land on attribute bytes. * This happens for all pasted data (even DUP), and for all * keyboard-generated data except DUP. */ if (auto_skip && (pasting || (ebc != EBC_dup))) { while (ea_buf[baddr].fa) { if (FA_IS_SKIP(ea_buf[baddr].fa)) { baddr = next_unprotected(baddr); } else { INC_BA(baddr); } } cursor_move(baddr); } else { cursor_move(baddr); } ctlr_dbcs_postprocess(); if (consumed != NULL) { *consumed = true; } return true; } static bool key_WCharacter_wrapper(ia_t ia _is_unused, unsigned argc, const char **argv) { unsigned ebc_wide; unsigned char ebc_pair[2]; bool oerr_fail = false; if (argc > 1 && !strcasecmp(argv[1], KwFailOnError)) { oerr_fail = true; } ebc_wide = atoi(argv[0]); vtrace(" %s -> Key(X'%04x')\n", ia_name[(int) ia_cause], ebc_wide); ebc_pair[0] = (ebc_wide >> 8) & 0xff; ebc_pair[1] = ebc_wide & 0xff; key_WCharacter(ebc_pair, oerr_fail); return true; } /* * Input a DBCS character. * Returns true if a character was stored in the buffer, false otherwise. */ static bool key_WCharacter(unsigned char ebc_pair[], bool oerr_fail) { int baddr; register unsigned char fa; int faddr; enum dbcs_state d; int xaddr; bool done = false; bool no_si = false; bool no_room = false; if (kybdlock) { char *codename; codename = lazyaf("%d", (ebc_pair[0] << 8) | ebc_pair[1]); enq_fta(key_WCharacter_wrapper, codename, oerr_fail ? KwFailOnError : KwNoFailOnError); return false; } if (!dbcs) { vtrace("DBCS character received when not in DBCS mode, ignoring.\n"); return true; } /* In NVT mode? */ if (IN_NVT) { char mb[16]; ebcdic_to_multibyte((ebc_pair[0] << 8) | ebc_pair[1], mb, sizeof(mb)); net_sends(mb); return true; } baddr = cursor_addr; fa = get_field_attribute(baddr); faddr = find_field_attribute(baddr); /* Protected? */ if (ea_buf[baddr].fa || FA_IS_PROTECTED(fa)) { return operator_error(KL_OERR_PROTECTED, oerr_fail); } /* Numeric? */ if (FA_IS_NUMERIC(fa)) { if (appres.numeric_lock) { return operator_error(KL_OERR_NUMERIC, oerr_fail); } else { #if 0 /* Ignore it, successfully. */ vtrace("Ignoring non-numeric character in numeric field\n"); return true; #endif } } /* * Figure our what to do based on the DBCS state of the buffer. * Leaves baddr pointing to the next unmodified position. */ retry: switch (d = ctlr_dbcs_state(baddr)) { case DBCS_RIGHT: case DBCS_RIGHT_WRAP: /* Back up one position and process it as a LEFT. */ DEC_BA(baddr); /* fall through... */ case DBCS_LEFT: case DBCS_LEFT_WRAP: /* Overwrite the existing character. */ if (toggled(INSERT_MODE)) { if (!ins_prep(faddr, baddr, 2, &no_room, oerr_fail)) { return false; } } ctlr_add(baddr, ebc_pair[0], ea_buf[baddr].cs); INC_BA(baddr); ctlr_add(baddr, ebc_pair[1], ea_buf[baddr].cs); INC_BA(baddr); done = true; break; case DBCS_SB: /* Back up one position and process it as an SI. */ DEC_BA(baddr); /* fall through... */ case DBCS_SI: /* Extend the subfield to the right. */ if (toggled(INSERT_MODE)) { if (!ins_prep(faddr, baddr, 2, &no_room, oerr_fail)) { return false; } } else { /* Don't overwrite a field attribute or an SO. */ xaddr = baddr; INC_BA(xaddr); /* C1 */ if (ea_buf[xaddr].fa) { break; } if (ea_buf[xaddr].ec == EBC_so) { no_si = true; } INC_BA(xaddr); /* SI */ if (ea_buf[xaddr].fa || ea_buf[xaddr].ec == EBC_so) { break; } } ctlr_add(baddr, ebc_pair[0], ea_buf[baddr].cs); INC_BA(baddr); ctlr_add(baddr, ebc_pair[1], ea_buf[baddr].cs); if (!no_si) { INC_BA(baddr); ctlr_add(baddr, EBC_si, ea_buf[baddr].cs); } done = true; break; case DBCS_DEAD: break; case DBCS_NONE: if (ea_buf[faddr].ic) { bool extend_left = false; /* Is there room? */ if (toggled(INSERT_MODE)) { if (!ins_prep(faddr, baddr, 4, &no_room, oerr_fail)) { return false; } } else { xaddr = baddr; /* baddr, SO */ if (ea_buf[xaddr].ec == EBC_so) { /* * (baddr), where we would have put the SO, is already an * SO. Move to (baddr+1) and try again. */ #if defined(DBCS_RIGHT_DEBUG) /*[*/ printf("SO in position 0\n"); #endif /*]*/ INC_BA(baddr); goto retry; } INC_BA(xaddr); /* baddr+1, C0 */ if (ea_buf[xaddr].fa) { break; } if (ea_buf[xaddr].ec == EBC_so) { enum dbcs_state e; /* * (baddr+1), where we would have put the left side of the * DBCS, is a SO. If there's room, we can extend the * * subfield to the left. If not, we're stuck. */ DEC_BA(xaddr); DEC_BA(xaddr); e = ctlr_dbcs_state(xaddr); if (e == DBCS_NONE || e == DBCS_SB) { extend_left = true; no_si = true; #if defined(DBCS_RIGHT_DEBUG) /*[*/ printf("SO in position 1, extend left\n"); #endif /*]*/ } else { /* * Won't actually happen, because this implies that the * buffer addr at baddr is an SB. */ #if defined(DBCS_RIGHT_DEBUG) /*[*/ printf("SO in position 1, no room on left, fail\n"); #endif /*]*/ break; } } INC_BA(xaddr); /* baddr+2, C1 */ if (ea_buf[xaddr].fa) { break; } if (ea_buf[xaddr].ec == EBC_so) { /* * (baddr+2), where we want to put the right half of the * DBCS character, is a SO. This is a natural extension to * the left -- just make sure we don't write an SI. */ no_si = true; #if defined(DBCS_RIGHT_DEBUG) /*[*/ printf("SO in position 2, no SI\n"); #endif /*]*/ } /* * Check the fourth position only if we're * not doing an extend-left. */ if (!no_si) { INC_BA(xaddr); /* baddr+3, SI */ if (ea_buf[xaddr].fa) { break; } if (ea_buf[xaddr].ec == EBC_so) { /* * (baddr+3), where we want to put an SI, is an SO. * Forget it. */ #if defined(DBCS_RIGHT_DEBUG) /*[*/ printf("SO in position 3, retry right\n"); INC_BA(baddr); goto retry; #endif /*]*/ break; } } } /* Yes, add it. */ if (extend_left) { DEC_BA(baddr); } ctlr_add(baddr, EBC_so, ea_buf[baddr].cs); INC_BA(baddr); ctlr_add(baddr, ebc_pair[0], ea_buf[baddr].cs); INC_BA(baddr); ctlr_add(baddr, ebc_pair[1], ea_buf[baddr].cs); if (!no_si) { INC_BA(baddr); ctlr_add(baddr, EBC_si, ea_buf[baddr].cs); } done = true; } else if (reply_mode == SF_SRM_CHAR) { /* Use the character attribute. */ if (toggled(INSERT_MODE)) { if (!ins_prep(faddr, baddr, 2, &no_room, oerr_fail)) { return false; } } else { xaddr = baddr; INC_BA(xaddr); if (ea_buf[xaddr].fa) { break; } } ctlr_add(baddr, ebc_pair[0], CS_DBCS); INC_BA(baddr); ctlr_add(baddr, ebc_pair[1], CS_DBCS); INC_BA(baddr); done = true; } break; } if (done) { /* Implement blank fill mode. */ if (toggled(BLANK_FILL)) { xaddr = faddr; INC_BA(xaddr); while (xaddr != baddr) { if (ea_buf[xaddr].ec == EBC_null) { ctlr_add(xaddr, EBC_space, CS_BASE); } else { break; } INC_BA(xaddr); } } mdt_set(cursor_addr); /* Implement auto-skip. */ while (ea_buf[baddr].fa) { if (FA_IS_SKIP(ea_buf[baddr].fa)) { baddr = next_unprotected(baddr); } else { INC_BA(baddr); } } cursor_move(baddr); ctlr_dbcs_postprocess(); return true; } else { return operator_error(KL_OERR_DBCS, oerr_fail); } } /* * Handle an ordinary character key, given its Unicode value. */ void key_UCharacter(ucs4_t ucs4, enum keytype keytype, enum iaction cause, bool oerr_fail) { register int i; struct akey ak; if (keyboard_disabled() && IA_IS_KEY(cause)) { vtrace(" [suppressed, keyboard disabled]\n"); vstatus_keyboard_disable_flash(); return; } if (kybdlock) { const char *apl_name; if (keytype == KT_STD) { enq_ta(AnKey, lazyaf("U+%04x", ucs4), oerr_fail ? KwFailOnError : KwNoFailOnError); } else { /* APL character */ apl_name = ucs4_to_apl_key(ucs4); if (apl_name != NULL) { enq_ta(AnKey, lazyaf("apl_%s", apl_name), oerr_fail ? KwFailOnError : KwNoFailOnError); } else { vtrace(" dropped (invalid key type or name)\n"); } } return; } ak.ucs4 = ucs4; ak.keytype = keytype; switch (composing) { case NONE: break; case COMPOSE: for (i = 0; i < n_composites; i++) { if (ak_eq(composites[i].k1, ak) || ak_eq(composites[i].k2, ak)) { break; } } if (i < n_composites) { cc_first.ucs4 = ucs4; cc_first.keytype = keytype; composing = FIRST; vstatus_compose(true, ucs4, keytype); } else { ring_bell(); composing = NONE; vstatus_compose(false, 0, KT_STD); } return; case FIRST: composing = NONE; vstatus_compose(false, 0, KT_STD); for (i = 0; i < n_composites; i++) { if ((ak_eq(composites[i].k1, cc_first) && ak_eq(composites[i].k2, ak)) || (ak_eq(composites[i].k1, ak) && ak_eq(composites[i].k2, cc_first))) { break; } } if (i < n_composites) { ucs4 = composites[i].translation.ucs4; keytype = composites[i].translation.keytype; } else { ring_bell(); return; } break; } vtrace(" %s -> Key(U+%04x)\n", ia_name[(int) cause], ucs4); if (IN_3270) { ebc_t ebc; bool ge; if (ucs4 < 0x20) { vtrace(" dropped (control char)\n"); return; } ebc = unicode_to_ebcdic_ge(ucs4, &ge, keytype == KT_GE || toggled(APL_MODE)); if (ebc == 0) { vtrace(" dropped (no EBCDIC translation)\n"); return; } if (ebc & 0xff00) { unsigned char ebc_pair[2]; ebc_pair[0] = (ebc & 0xff00)>> 8; ebc_pair[1] = ebc & 0xff; key_WCharacter(ebc_pair, oerr_fail); } else { key_Character(ebc, (keytype == KT_GE) || ge, (cause == IA_PASTE), oerr_fail, NULL); } } else if (IN_NVT) { char mb[16]; unicode_to_multibyte(ucs4, mb, sizeof(mb)); net_sends(mb); } else { const char *why; switch (cstate) { case NOT_CONNECTED: case RECONNECTING: why = "connected"; break; default: why = "negotiated"; break; case CONNECTED_UNBOUND: why = "bound"; break; } vtrace(" dropped (not %s)\n", why); } } static bool MonoCase_action(ia_t ia, unsigned argc, const char **argv) { action_debug(AnMonoCase, ia, argc, argv); if (check_argc(AnMonoCase, argc, 0, 0) < 0) { return false; } do_toggle(MONOCASE); return true; } /* * Flip the display left-to-right */ static bool Flip_action(ia_t ia, unsigned argc, const char **argv) { const char *toggle_argv[2] = { ResRightToLeftMode, NULL }; action_debug(AnFlip, ia, argc, argv); if (check_argc(AnFlip, argc, 0, 0) < 0) { return false; } return Toggle_action(ia, 1, toggle_argv); } /* * Tab forward to next field. */ static bool Tab_action(ia_t ia, unsigned argc, const char **argv) { action_debug(AnTab, ia, argc, argv); if (check_argc(AnTab, argc, 0, 0) < 0) { return false; } OERR_CLEAR_OR_ENQ(AnTab); if (IN_NVT) { net_sendc('\t'); return true; } cursor_move(next_unprotected(cursor_addr)); return true; } /* * Tab backward to previous field. */ static bool BackTab_action(ia_t ia, unsigned argc, const char **argv) { int baddr, nbaddr; int sbaddr; action_debug(AnBackTab, ia, argc, argv); if (check_argc(AnBackTab, argc, 0, 0) < 0) { return false; } OERR_CLEAR_OR_ENQ(AnBackTab); if (!IN_3270) { return false; } baddr = cursor_addr; DEC_BA(baddr); if (ea_buf[baddr].fa) { /* at bof */ DEC_BA(baddr); } sbaddr = baddr; while (true) { nbaddr = baddr; INC_BA(nbaddr); if (ea_buf[baddr].fa && !FA_IS_PROTECTED(ea_buf[baddr].fa) && !ea_buf[nbaddr].fa) { break; } DEC_BA(baddr); if (baddr == sbaddr) { cursor_move(0); return true; } } INC_BA(baddr); cursor_move(baddr); return true; } /* * Deferred keyboard unlock. */ static void defer_unlock(ioid_t id _is_unused) { kybdlock_clr(KL_DEFERRED_UNLOCK, "defer_unlock"); vstatus_reset(); if (CONNECTED) { ps_process(); } } /* * Reset keyboard lock. */ void do_reset(bool explicit) { /* * If explicit (from the keyboard) and there is typeahead or * a half-composed key, simply flush it. */ if (explicit || ft_state != FT_NONE) { bool half_reset = false; if (flush_ta()) { half_reset = true; } if (composing != NONE) { composing = NONE; vstatus_compose(false, 0, KT_STD); half_reset = true; } if (half_reset) { return; } } /* Always reset scrolling. */ scroll_to_bottom(); /* Otherwise, if not connected, reset is a no-op. */ if (!CONNECTED) { insert_mode(false); return; } /* Set insert mode according to the default. */ insert_mode(IN_3270 && toggled(ALWAYS_INSERT)); /* * Remove any deferred keyboard unlock. We will either unlock the * keyboard now, or want to defer further into the future. */ if ((kybdlock & KL_DEFERRED_UNLOCK) && unlock_id != NULL_IOID) { RemoveTimeOut(unlock_id); unlock_id = NULL_IOID; } /* * If explicit (from the keyboard), unlock the keyboard now. * Otherwise (from the host), schedule a deferred keyboard unlock. */ if (explicit || ft_state != FT_NONE || !appres.unlock_delay || (unlock_delay_time != 0 && (time(NULL) - unlock_delay_time) > 1) || !appres.unlock_delay_ms) { kybdlock_clr(-1, "do_reset"); } else if (kybdlock & (KL_DEFERRED_UNLOCK | KL_OIA_TWAIT | KL_OIA_LOCKED | KL_AWAITING_FIRST)) { kybdlock_clr(~KL_DEFERRED_UNLOCK, "do_reset"); kybdlock_set(KL_DEFERRED_UNLOCK, "do_reset"); unlock_id = AddTimeOut(appres.unlock_delay_ms, defer_unlock); vtrace("Deferring keyboard unlock %dms\n", appres.unlock_delay_ms); } /* Clean up other modes. */ vstatus_reset(); mcursor_normal(); composing = NONE; vstatus_compose(false, 0, KT_STD); if (explicit) { ctlr_reset(); } } static bool Reset_action(ia_t ia, unsigned argc, const char **argv) { action_debug(AnReset, ia, argc, argv); if (check_argc(AnReset, argc, 0, 0) < 0) { return false; } do_reset(true); return true; } /* * Move to first unprotected field on screen. */ static bool Home_action(ia_t ia, unsigned argc, const char **argv) { action_debug(AnHome, ia, argc, argv); if (check_argc(AnHome, argc, 0, 0) < 0) { return false; } OERR_CLEAR_OR_ENQ(AnHome); if (IN_NVT) { nvt_send_home(); return true; } if (!formatted) { cursor_move(0); return true; } cursor_move(next_unprotected(ROWS*COLS-1)); return true; } /* * Cursor left 1 position. */ static void do_left(void) { register int baddr; enum dbcs_state d; baddr = cursor_addr; DEC_BA(baddr); d = ctlr_dbcs_state(baddr); if (IS_RIGHT(d)) { DEC_BA(baddr); } else if (IS_LEFT(d)) { DEC_BA(baddr); d = ctlr_dbcs_state(baddr); if (IS_RIGHT(d)) { DEC_BA(baddr); } } cursor_move(baddr); } bool Left_action(ia_t ia, unsigned argc, const char **argv) { action_debug(AnLeft, ia, argc, argv); if (check_argc(AnLeft, argc, 0, 0) < 0) { return false; } OERR_CLEAR_OR_ENQ(AnLeft); if (IN_NVT) { nvt_send_left(); return true; } if (!flipped) { do_left(); } else { int baddr; baddr = cursor_addr; INC_BA(baddr); cursor_move(baddr); } return true; } /* * Delete char key. * Returns "true" if succeeds, "false" otherwise. */ static bool do_delete(void) { register int baddr, end_baddr; int xaddr; register unsigned char fa; int ndel; register int i; baddr = cursor_addr; /* Can't delete a field attribute. */ fa = get_field_attribute(baddr); if (FA_IS_PROTECTED(fa) || ea_buf[baddr].fa) { return operator_error(KL_OERR_PROTECTED, true); } if (ea_buf[baddr].ec == EBC_so || ea_buf[baddr].ec == EBC_si) { /* * Can't delete SO or SI, unless it's adjacent to its * opposite. */ xaddr = baddr; INC_BA(xaddr); if (ea_buf[xaddr].ec == SOSI(ea_buf[baddr].ec)) { ndel = 2; } else { return operator_error(KL_OERR_PROTECTED, true); } } else if (IS_DBCS(ea_buf[baddr].db)) { if (IS_RIGHT(ea_buf[baddr].db)) { DEC_BA(baddr); } ndel = 2; } else { ndel = 1; } /* Find next fa */ if (formatted) { end_baddr = baddr; do { INC_BA(end_baddr); if (ea_buf[end_baddr].fa) { break; } } while (end_baddr != baddr); DEC_BA(end_baddr); } else { if ((baddr % COLS) == COLS - ndel) { return true; } end_baddr = baddr + (COLS - (baddr % COLS)) - 1; } /* Shift the remainder of the field left. */ if (end_baddr > baddr) { ctlr_bcopy(baddr + ndel, baddr, end_baddr - (baddr + ndel) + 1, 0); } else if (end_baddr != baddr) { /* XXX: Need to verify this. */ ctlr_bcopy(baddr + ndel, baddr, ((ROWS * COLS) - 1) - (baddr + ndel) + 1, 0); ctlr_bcopy(0, (ROWS * COLS) - ndel, ndel, 0); ctlr_bcopy(ndel, 0, end_baddr - ndel + 1, 0); } /* NULL fill at the end. */ for (i = 0; i < ndel; i++) { ctlr_add(end_baddr - i, EBC_null, 0); } /* Set the MDT for this field. */ mdt_set(cursor_addr); /* Patch up the DBCS state for display. */ ctlr_dbcs_postprocess(); return true; } static bool Delete_action(ia_t ia, unsigned argc, const char **argv) { action_debug(AnDelete, ia, argc, argv); if (check_argc(AnDelete, argc, 0, 0) < 0) { return false; } if (kybdlock) { enq_ta(AnDelete, NULL, NULL); return true; } if (IN_NVT) { net_sendc('\177'); return true; } if (!do_delete()) { return true; } if (toggled(REVERSE_INPUT)) { int baddr = cursor_addr; DEC_BA(baddr); if (!ea_buf[baddr].fa) { cursor_move(baddr); } } return true; } /* * 3270-style backspace. */ static bool BackSpace_action(ia_t ia, unsigned argc, const char **argv) { action_debug(AnBackSpace, ia, argc, argv); if (check_argc(AnBackSpace, argc, 0, 0) < 0) { return false; } if (kybdlock) { enq_ta(AnBackSpace, NULL, NULL); return true; } if (IN_NVT) { linemode_send_erase(); return true; } if (toggled(REVERSE_INPUT)) { do_delete(); } else if (!flipped) { do_left(); } else { int baddr; baddr = cursor_addr; DEC_BA(baddr); cursor_move(baddr); } return true; } /* * Destructive backspace, like Unix "erase". */ static void do_erase(void) { int baddr, faddr; enum dbcs_state d; baddr = cursor_addr; faddr = find_field_attribute(baddr); if (faddr == baddr || FA_IS_PROTECTED(ea_buf[baddr].fa)) { operator_error(KL_OERR_PROTECTED, true); } if (baddr && faddr == baddr - 1) { return; } do_left(); /* * If we are now on an SI, move left again. */ if (ea_buf[cursor_addr].ec == EBC_si) { baddr = cursor_addr; DEC_BA(baddr); cursor_move(baddr); } /* * If we landed on the right-hand side of a DBCS character, move to the * left-hand side. * This ensures that if this is the end of a DBCS subfield, we will * land on the SI, instead of on the character following. */ d = ctlr_dbcs_state(cursor_addr); if (IS_RIGHT(d)) { baddr = cursor_addr; DEC_BA(baddr); cursor_move(baddr); } /* * Try to delete this character. */ if (!do_delete()) { return; } /* * If we've just erased the last character of a DBCS subfield, erase * the SO/SI pair as well. */ baddr = cursor_addr; DEC_BA(baddr); if (ea_buf[baddr].ec == EBC_so && ea_buf[cursor_addr].ec == EBC_si) { cursor_move(baddr); do_delete(); } } static bool Erase_action(ia_t ia, unsigned argc, const char **argv) { action_debug(AnErase, ia, argc, argv); if (check_argc(AnErase, argc, 0, 0) < 0) { return false; } if (kybdlock) { enq_ta(AnErase, NULL, NULL); return true; } if (IN_NVT) { linemode_send_erase(); return true; } if (toggled(REVERSE_INPUT)) { do_delete(); } else { do_erase(); } return true; } /* * Cursor right 1 position. */ bool Right_action(ia_t ia, unsigned argc, const char **argv) { int baddr; enum dbcs_state d; action_debug(AnRight, ia, argc, argv); if (check_argc(AnRight, argc, 0, 0) < 0) { return false; } OERR_CLEAR_OR_ENQ(AnRight); if (IN_NVT) { nvt_send_right(); return true; } if (!flipped) { baddr = cursor_addr; INC_BA(baddr); d = ctlr_dbcs_state(baddr); if (IS_RIGHT(d)) { INC_BA(baddr); } cursor_move(baddr); } else { do_left(); } return true; } /* * Cursor left 2 positions. */ static bool Left2_action(ia_t ia, unsigned argc, const char **argv) { int baddr; enum dbcs_state d; action_debug(AnLeft2, ia, argc, argv); if (check_argc(AnLeft2, argc, 0, 0) < 0) { return false; } OERR_CLEAR_OR_ENQ(AnLeft2); if (IN_NVT) { return false; } baddr = cursor_addr; DEC_BA(baddr); d = ctlr_dbcs_state(baddr); if (IS_LEFT(d)) { DEC_BA(baddr); } DEC_BA(baddr); d = ctlr_dbcs_state(baddr); if (IS_LEFT(d)) { DEC_BA(baddr); } cursor_move(baddr); return true; } /* * Cursor to previous word. */ static bool PreviousWord_action(ia_t ia, unsigned argc, const char **argv) { int baddr; int baddr0; unsigned char c; bool prot; action_debug(AnPreviousWord, ia, argc, argv); if (check_argc(AnPreviousWord, argc, 0, 0) < 0) { return false; } if (kybdlock) { enq_ta(AnPreviousWord, NULL, NULL); return true; } if (IN_NVT || !formatted) { return false; } baddr = cursor_addr; prot = FA_IS_PROTECTED(get_field_attribute(baddr)); /* Skip to before this word, if in one now. */ if (!prot) { c = ea_buf[baddr].ec; while (!ea_buf[baddr].fa && c != EBC_space && c != EBC_null) { DEC_BA(baddr); if (baddr == cursor_addr) { return true; } c = ea_buf[baddr].ec; } } baddr0 = baddr; /* Find the end of the preceding word. */ do { c = ea_buf[baddr].ec; if (ea_buf[baddr].fa) { DEC_BA(baddr); prot = FA_IS_PROTECTED(get_field_attribute(baddr)); continue; } if (!prot && c != EBC_space && c != EBC_null) { break; } DEC_BA(baddr); } while (baddr != baddr0); if (baddr == baddr0) { return true; } /* Go it its front. */ for (;;) { DEC_BA(baddr); c = ea_buf[baddr].ec; if (ea_buf[baddr].fa || c == EBC_space || c == EBC_null) { break; } } INC_BA(baddr); cursor_move(baddr); return true; } /* * Cursor right 2 positions. */ static bool Right2_action(ia_t ia, unsigned argc, const char **argv) { int baddr; enum dbcs_state d; action_debug(AnRight2, ia, argc, argv); if (check_argc(AnRight2, argc, 0, 0) < 0) { return false; } OERR_CLEAR_OR_ENQ(AnRight2); if (IN_NVT) { return false; } baddr = cursor_addr; INC_BA(baddr); d = ctlr_dbcs_state(baddr); if (IS_RIGHT(d)) { INC_BA(baddr); } INC_BA(baddr); d = ctlr_dbcs_state(baddr); if (IS_RIGHT(d)) { INC_BA(baddr); } cursor_move(baddr); return true; } /* Find the next unprotected word, or -1 */ static int nu_word(int baddr) { int baddr0 = baddr; unsigned char c; bool prot; prot = FA_IS_PROTECTED(get_field_attribute(baddr)); do { c = ea_buf[baddr].ec; if (ea_buf[baddr].fa) { prot = FA_IS_PROTECTED(ea_buf[baddr].fa); } else if (!prot && c != EBC_space && c != EBC_null) { return baddr; } INC_BA(baddr); } while (baddr != baddr0); return -1; } /* Find the next word in this field, or -1 */ static int nt_word(int baddr) { int baddr0 = baddr; unsigned char c; bool in_word = true; do { c = ea_buf[baddr].ec; if (ea_buf[baddr].fa) return -1; if (in_word) { if (c == EBC_space || c == EBC_null) { in_word = false; } } else { if (c != EBC_space && c != EBC_null) { return baddr; } } INC_BA(baddr); } while (baddr != baddr0); return -1; } /* * Cursor to next unprotected word. */ static bool NextWord_action(ia_t ia, unsigned argc, const char **argv) { int baddr; unsigned char c; action_debug(AnNextWord, ia, argc, argv); if (check_argc(AnNextWord, argc, 0, 0) < 0) { return false; } if (kybdlock) { enq_ta(AnNextWord, NULL, NULL); return true; } if (IN_NVT || !formatted) { return false; } /* If not in an unprotected field, go to the next unprotected word. */ if (ea_buf[cursor_addr].fa || FA_IS_PROTECTED(get_field_attribute(cursor_addr))) { baddr = nu_word(cursor_addr); if (baddr != -1) { cursor_move(baddr); } return true; } /* If there's another word in this field, go to it. */ baddr = nt_word(cursor_addr); if (baddr != -1) { cursor_move(baddr); return true; } /* If in a word, go to just after its end. */ c = ea_buf[cursor_addr].ec; if (c != EBC_space && c != EBC_null) { baddr = cursor_addr; do { c = ea_buf[baddr].ec; if (c == EBC_space || c == EBC_null) { cursor_move(baddr); return true; } else if (ea_buf[baddr].fa) { baddr = nu_word(baddr); if (baddr != -1) { cursor_move(baddr); } return true; } INC_BA(baddr); } while (baddr != cursor_addr); } else { /* Otherwise, go to the next unprotected word. */ baddr = nu_word(cursor_addr); if (baddr != -1) { cursor_move(baddr); } } return true; } /* * Cursor up 1 position. */ bool Up_action(ia_t ia, unsigned argc, const char **argv) { register int baddr; action_debug(AnUp, ia, argc, argv); if (check_argc(AnUp, argc, 0, 0) < 0) { return false; } OERR_CLEAR_OR_ENQ(AnUp); if (IN_NVT) { nvt_send_up(); return true; } baddr = cursor_addr - COLS; if (baddr < 0) { baddr = (cursor_addr + (ROWS * COLS)) - COLS; } cursor_move(baddr); return true; } /* * Cursor down 1 position. */ bool Down_action(ia_t ia, unsigned argc, const char **argv) { int baddr; action_debug(AnDown, ia, argc, argv); if (check_argc(AnDown, argc, 0, 0) < 0) { return false; } OERR_CLEAR_OR_ENQ(AnDown); if (IN_NVT) { nvt_send_down(); return true; } baddr = (cursor_addr + COLS) % (COLS * ROWS); cursor_move(baddr); return false; } /* * Cursor to first field on next line or any lines after that. */ static bool Newline_action(ia_t ia, unsigned argc, const char **argv) { int baddr, faddr; unsigned char fa; action_debug(AnNewline, ia, argc, argv); if (check_argc(AnNewline, argc, 0, 0) < 0) { return false; } if (kybdlock) { enq_ta(AnNewline, NULL, NULL); return true; } if (IN_NVT) { net_sendc('\n'); return true; } baddr = (cursor_addr + COLS) % (COLS * ROWS); /* down */ baddr = (baddr / COLS) * COLS; /* 1st col */ faddr = find_field_attribute(baddr); fa = ea_buf[faddr].fa; if (faddr != baddr && !FA_IS_PROTECTED(fa)) { cursor_move(baddr); } else { cursor_move(next_unprotected(baddr)); } return true; } /* * DUP key */ static bool Dup_action(ia_t ia, unsigned argc, const char **argv) { bool oerr_fail = !IA_IS_KEY(ia); bool consumed = false; action_debug(AnDup, ia, argc, argv); if (check_argc(AnDup, argc, 0, 1) < 0) { return false; } if (argc > 0) { if (!strcasecmp(argv[0], KwFailOnError)) { oerr_fail = true; } else if (strcasecmp(argv[0], KwNoFailOnError)) { return action_args_are(AnDup, KwFailOnError, KwNoFailOnError, NULL); return false; } } if (kybdlock) { enq_ta(AnDup, oerr_fail ? KwFailOnError : KwNoFailOnError, NULL); return true; } if (IN_NVT) { return false; } if (key_Character(EBC_dup, false, false, oerr_fail, &consumed)) { if (consumed) { cursor_move(next_unprotected(cursor_addr)); } return true; } else { return false; } } /* * FM key */ static bool FieldMark_action(ia_t ia, unsigned argc, const char **argv) { bool oerr_fail = !IA_IS_KEY(ia); action_debug(AnFieldMark, ia, argc, argv); if (check_argc(AnFieldMark, argc, 0, 1) < 0) { return false; } if (argc > 0) { if (!strcasecmp(argv[0], KwFailOnError)) { oerr_fail = true; } else if (strcasecmp(argv[0], KwNoFailOnError)) { return action_args_are(AnFieldMark, KwFailOnError, KwNoFailOnError, NULL); } } if (kybdlock) { enq_ta(AnFieldMark, oerr_fail ? KwFailOnError : KwNoFailOnError, NULL); return true; } if (IN_NVT) { return false; } return key_Character(EBC_fm, false, false, oerr_fail, NULL); } /* * Vanilla AID keys. */ static bool Enter_action(ia_t ia, unsigned argc, const char **argv) { action_debug(AnEnter, ia, argc, argv); if (check_argc(AnEnter, argc, 0, 0) < 0) { return false; } if (kybdlock & KL_OIA_MINUS) { return false; } else if (kybdlock) { enq_ta(AnEnter, NULL, NULL); } else { key_AID(AID_ENTER); } return true; } static bool SysReq_action(ia_t ia, unsigned argc, const char **argv) { action_debug(AnSysReq, ia, argc, argv); if (check_argc(AnSysReq, argc, 0, 0) < 0) { return false; } if (IN_NVT) { return false; } if (IN_E) { net_abort(); } else { if (kybdlock & KL_OIA_MINUS) { return false; } else if (kybdlock) { enq_ta(AnSysReq, NULL, NULL); } else { key_AID(AID_SYSREQ); } } return true; } /* * Clear AID key */ static bool Clear_action(ia_t ia, unsigned argc, const char **argv) { action_debug(AnClear, ia, argc, argv); if (check_argc(AnClear, argc, 0, 0) < 0) { return false; } if (kybdlock & KL_OIA_MINUS) { return false; } if (kybdlock && FULL_SESSION) { enq_ta(AnClear, NULL, NULL); return true; } if (IN_NVT) { nvt_send_clear(); return true; } buffer_addr = 0; ctlr_clear(true); cursor_move(0); if (IN_3270 || IN_SSCP) { key_AID(AID_CLEAR); } return true; } /* * Cursor Select key (light pen simulator). */ void lightpen_select(int baddr) { int faddr; register unsigned char fa; int designator; int designator2; faddr = find_field_attribute(baddr); fa = ea_buf[faddr].fa; if (!FA_IS_SELECTABLE(fa)) { vtrace(" lightpen select on non-selectable field\n"); ring_bell(); return; } designator = faddr; INC_BA(designator); if (dbcs) { if (ea_buf[baddr].cs == CS_DBCS) { designator2 = designator; INC_BA(designator2); if ((ea_buf[designator].db != DBCS_LEFT && ea_buf[designator].db != DBCS_LEFT_WRAP) && (ea_buf[designator2].db != DBCS_RIGHT && ea_buf[designator2].db != DBCS_RIGHT_WRAP)) { ring_bell(); return; } if (ea_buf[designator].ec == 0x42 && ea_buf[designator2].ec == EBC_greater) { ctlr_add(designator2, EBC_question, CS_DBCS); mdt_clear(faddr); } else if (ea_buf[designator].ec == 0x42 && ea_buf[designator2].ec == EBC_question) { ctlr_add(designator2, EBC_greater, CS_DBCS); mdt_clear(faddr); } else if ((ea_buf[designator].ec == EBC_space && ea_buf[designator2].ec == EBC_space) || (ea_buf[designator].ec == EBC_null && ea_buf[designator2].ec == EBC_null)) { ctlr_add(designator2, EBC_greater, CS_DBCS); mdt_set(faddr); key_AID(AID_SELECT); } else if (ea_buf[designator].ec == 0x42 && ea_buf[designator2].ec == EBC_ampersand) { mdt_set(faddr); key_AID(AID_ENTER); } else { ring_bell(); } return; } } switch (ea_buf[designator].ec) { case EBC_greater: /* > */ ctlr_add(designator, EBC_question, 0); /* change to ? */ mdt_clear(faddr); break; case EBC_question: /* ? */ ctlr_add(designator, EBC_greater, 0); /* change to > */ mdt_set(faddr); break; case EBC_space: /* space */ case EBC_null: /* null */ mdt_set(faddr); key_AID(AID_SELECT); break; case EBC_ampersand: /* & */ mdt_set(faddr); key_AID(AID_ENTER); break; default: ring_bell(); break; } } /* * Cursor Select key (light pen simulator) -- at the current cursor location. */ static bool CursorSelect_action(ia_t ia, unsigned argc, const char **argv) { action_debug(AnCursorSelect, ia, argc, argv); if (check_argc(AnCursorSelect, argc, 0, 0) < 0) { return false; } if (kybdlock) { enq_ta(AnCursorSelect, NULL, NULL); return true; } if (IN_NVT) { return false; } lightpen_select(cursor_addr); return true; } /* * Erase End Of Field Key. */ static bool EraseEOF_action(ia_t ia, unsigned argc, const char **argv) { int baddr; unsigned char fa; enum dbcs_state d; enum dbcs_why why = DBCS_FIELD; action_debug(AnEraseEOF, ia, argc, argv); if (check_argc(AnEraseEOF, argc, 0, 0) < 0) { return false; } OERR_CLEAR_OR_ENQ(AnEraseEOF); if (IN_NVT) { return false; } baddr = cursor_addr; fa = get_field_attribute(baddr); if (FA_IS_PROTECTED(fa) || ea_buf[baddr].fa) { return operator_error(KL_OERR_PROTECTED, true); } if (formatted) { /* erase to next field attribute */ do { ctlr_add(baddr, EBC_null, 0); INC_BA(baddr); } while (!ea_buf[baddr].fa); mdt_set(cursor_addr); } else { /* erase to end of screen */ do { ctlr_add(baddr, EBC_null, 0); INC_BA(baddr); } while (baddr != 0); } /* If the cursor was in a DBCS subfield, re-create the SI. */ d = ctlr_lookleft_state(cursor_addr, &why); if (IS_DBCS(d) && why == DBCS_SUBFIELD) { if (d == DBCS_RIGHT) { baddr = cursor_addr; DEC_BA(baddr); ea_buf[baddr].ec = EBC_si; } else { ea_buf[cursor_addr].ec = EBC_si; } } ctlr_dbcs_postprocess(); return true; } /* * Erase all Input Key. */ static bool EraseInput_action(ia_t ia, unsigned argc, const char **argv) { int baddr, sbaddr; unsigned char fa; bool f; action_debug(AnEraseInput, ia, argc, argv); if (check_argc(AnEraseInput, argc, 0, 0) < 0) { return false; } OERR_CLEAR_OR_ENQ(AnEraseInput); if (IN_NVT) { return false; } if (formatted) { /* find first field attribute */ baddr = 0; do { if (ea_buf[baddr].fa) { break; } INC_BA(baddr); } while (baddr != 0); sbaddr = baddr; f = false; do { fa = ea_buf[baddr].fa; if (!FA_IS_PROTECTED(fa)) { mdt_clear(baddr); do { INC_BA(baddr); if (!f) { cursor_move(baddr); f = true; } if (!ea_buf[baddr].fa) { ctlr_add(baddr, EBC_null, 0); } } while (!ea_buf[baddr].fa); } else { /* skip protected */ do { INC_BA(baddr); } while (!ea_buf[baddr].fa); } } while (baddr != sbaddr); if (!f) { cursor_move(0); } } else { ctlr_clear(true); cursor_move(0); } /* Synchronize the DBCS state. */ ctlr_dbcs_postprocess(); return true; } /* * Delete word key. Backspaces the cursor until it hits the front of a word, * deletes characters until it hits a blank or null, and deletes all of these * but the last. * * Which is to say, does a ^W. */ static bool DeleteWord_action(ia_t ia, unsigned argc, const char **argv) { int baddr; unsigned char fa; action_debug(AnDeleteWord, ia, argc, argv); if (check_argc(AnDeleteWord, argc, 0, 0) < 0) { return false; } OERR_CLEAR_OR_ENQ(AnDeleteWord); if (IN_NVT) { linemode_send_werase(); return true; } if (!formatted) { return false; } baddr = cursor_addr; fa = get_field_attribute(baddr); /* Make sure we're on a modifiable field. */ if (FA_IS_PROTECTED(fa) || ea_buf[baddr].fa) { return operator_error(KL_OERR_PROTECTED, true); } /* Backspace over any spaces to the left of the cursor. */ for (;;) { baddr = cursor_addr; DEC_BA(baddr); if (ea_buf[baddr].fa) { return true; } if (ea_buf[baddr].ec == EBC_null || ea_buf[baddr].ec == EBC_space) { do_erase(); } else { break; } } /* Backspace until the character to the left of the cursor is blank. */ for (;;) { baddr = cursor_addr; DEC_BA(baddr); if (ea_buf[baddr].fa) { return true; } if (ea_buf[baddr].ec == EBC_null || ea_buf[baddr].ec == EBC_space) { break; } else { do_erase(); } } return true; } /* * Delete field key. Similar to EraseEOF, but it wipes out the entire field * rather than just to the right of the cursor, and it leaves the cursor at * the front of the field. * * Which is to say, does a ^U. */ static bool DeleteField_action(ia_t ia, unsigned argc, const char **argv) { int baddr; unsigned char fa; action_debug(AnDeleteField, ia, argc, argv); if (check_argc(AnDeleteField, argc, 0, 0) < 0) { return false; } OERR_CLEAR_OR_ENQ(AnDeleteField); if (IN_NVT) { linemode_send_kill(); return true; } if (!formatted) { return false; } baddr = cursor_addr; fa = get_field_attribute(baddr); if (FA_IS_PROTECTED(fa) || ea_buf[baddr].fa) { return operator_error(KL_OERR_PROTECTED, true); } while (!ea_buf[baddr].fa) { DEC_BA(baddr); } INC_BA(baddr); mdt_set(cursor_addr); cursor_move(baddr); while (!ea_buf[baddr].fa) { ctlr_add(baddr, EBC_null, 0); INC_BA(baddr); } return true; } /* * Set insert mode key. */ static bool Insert_action(ia_t ia, unsigned argc, const char **argv) { const char *set_argv[3] = { ResInsertMode, ResTrue, NULL }; action_debug(AnInsert, ia, argc, argv); if (check_argc(AnInsert, argc, 0, 0) < 0) { return false; } return Set_action(ia, 2, set_argv); } /* * Toggle insert mode key. */ static bool ToggleInsert_action(ia_t ia, unsigned argc, const char **argv) { const char *toggle_argv[2] = { ResInsertMode, NULL }; action_debug(AnToggleInsert, ia, argc, argv); if (check_argc(AnToggleInsert, argc, 0, 0) < 0) { return false; } return Toggle_action(ia, 1, toggle_argv); } /* * Toggle reverse-input mode key. */ static bool ToggleReverse_action(ia_t ia, unsigned argc, const char **argv) { const char *toggle_argv[2] = { ResReverseInputMode, NULL }; action_debug(AnToggleReverse, ia, argc, argv); if (check_argc(AnToggleReverse, argc, 0, 0) < 0) { return false; } return Toggle_action(ia, 1, toggle_argv); } /* * Move the cursor to the first blank after the last nonblank in the * field, or if the field is full, to the last character in the field. */ static bool FieldEnd_action(ia_t ia, unsigned argc, const char **argv) { int baddr, faddr; unsigned char fa, c; int last_nonblank = -1; action_debug(AnFieldEnd, ia, argc, argv); if (check_argc(AnFieldEnd, argc, 0, 0) < 0) { return false; } OERR_CLEAR_OR_ENQ(AnFieldEnd); if (IN_NVT) { return false; } if (!formatted) { return false; } baddr = cursor_addr; faddr = find_field_attribute(baddr); fa = ea_buf[faddr].fa; if (faddr == baddr || FA_IS_PROTECTED(fa)) { return true; } baddr = faddr; while (true) { INC_BA(baddr); c = ea_buf[baddr].ec; if (ea_buf[baddr].fa) { break; } if (c != EBC_null && c != EBC_space) { last_nonblank = baddr; } } if (last_nonblank == -1) { baddr = faddr; INC_BA(baddr); } else { baddr = last_nonblank; INC_BA(baddr); if (ea_buf[baddr].fa) { baddr = last_nonblank; } } cursor_move(baddr); return true; } /* * Common MoveCursor/MoveCursor1 logic. Moves to a specific location. */ static bool MoveCursor_common(int origin, const char *name, ia_t ia, unsigned argc, const char **argv) { int baddr; int row, col; action_debug(name, ia, argc, argv); if (check_argc(name, argc, 1, 2) < 0) { return false; } if (kybdlock) { enq_ta(name, argv[0], argv[1]); return true; } if (argc == 1) { baddr = atoi(argv[0]); } else { row = atoi(argv[0]); if (row < origin) { row = origin; } else if (row > ROWS - !origin) { row = ROWS - !origin; } col = atoi(argv[1]); if (col < origin) { col = origin; } else if (col > COLS - !origin) { col = COLS - !origin; } baddr = (((row - origin) * COLS) + (col - origin)) % (ROWS * COLS); } if (baddr < 0) { baddr = 0; } else if (baddr >= ROWS * COLS) { baddr = (ROWS * COLS) - 1; } cursor_move(baddr); return true; } /* * 0-origin MoveCursor action. Moves to a specific location. * For backwards compatibility. */ static bool MoveCursor_action(ia_t ia, unsigned argc, const char **argv) { return MoveCursor_common(0, AnMoveCursor, ia, argc, argv); } /* * 1-origin MoveCursor action. Moves to a specific location. */ static bool MoveCursor1_action(ia_t ia, unsigned argc, const char **argv) { return MoveCursor_common(1, AnMoveCursor1, ia, argc, argv); } /* * Key action. */ static bool Key_action(ia_t ia, unsigned argc, const char **argv) { unsigned i; ks_t k; enum keytype keytype; ucs4_t ucs4; bool oerr_fail = !IA_IS_KEY(ia); action_debug(AnKey, ia, argc, argv); /* * Allow FailOnError or NoFailOnError anywhere, but only pay attention to * the last. */ for (i = 0; i < argc; i++) { if (!strcasecmp(argv[i], KwFailOnError)) { oerr_fail = true; } else if (!strcasecmp(argv[0], KwNoFailOnError)) { oerr_fail = false; } } for (i = 0; i < argc; i++) { const char *s = argv[i]; if (!strcasecmp(s, KwFailOnError) || !strcasecmp(s, KwNoFailOnError)) { continue; } k = my_string_to_key(s, &keytype, &ucs4); if (k == KS_NONE && !ucs4) { popup_an_error(AnKey "(): Nonexistent or invalid name: %s", s); continue; } if (k & ~0xff) { /* * Can't pass symbolic names that aren't in the range 0x01..0xff. */ popup_an_error(AnKey "(): Invalid name: %s", s); continue; } if (k != KS_NONE) { key_UCharacter(k, keytype, ia, oerr_fail); } else { key_UCharacter(ucs4, keytype, ia, oerr_fail); } } return true; } /* * String action. */ static bool String_action(ia_t ia, unsigned argc, const char **argv) { unsigned i; size_t len = 0; char *s; action_debug(AnString, ia, argc, argv); /* Determine the total length of the strings. */ for (i = 0; i < argc; i++) { len += strlen(argv[i]); } if (!len) { return true; } /* Allocate a block of memory and copy them in. */ s = Malloc(len + 1); s[0] = '\0'; for (i = 0; i < argc; i++) { strcat(s, argv[i]); } /* Set a pending string. */ ps_set(s, false, ia == IA_HTTPD); Free(s); return true; } /* * Return the value of a hexadecimal nybble. */ static int nybble(unsigned char c) { static char hex_digits[] = "0123456789abcdef"; char *index = strchr(hex_digits, tolower((int)c)); return (index == NULL)? -1: (int)(index - hex_digits); } /* * HexString action. */ static bool HexString_action(ia_t ia, unsigned argc, const char **argv) { bool is_ascii; unsigned i, j; size_t len = 0; char *s; size_t sl; const char *t; int out; action_debug(AnHexString, ia, argc, argv); /* Pick off the -Ascii option. */ if (argc > 0 && !strcasecmp(argv[0], KwDashAscii)) { is_ascii = true; argc--; argv++; } /* Determine the total length of the strings. */ for (i = 0; i < argc; i++) { t = argv[i]; if (!strncmp(t, "0x", 2) || !strncmp(t, "0X", 2)) { t += 2; } sl = strlen(t); for (j = 0; j < (unsigned)sl; j++) { if (nybble((unsigned char)t[j]) < 0) { popup_an_error(AnHexString "(): Invalid hex character"); return false; } } len += sl; } if (!len) { return true; } if (len % 2) { popup_an_error(AnHexString "(): Odd number of nybbles"); return false; } /* Allocate a block of memory and copy them in. */ s = Malloc(len + 1); *s = '\0'; out = 0; for (i = 0; i < argc; i++) { t = argv[i]; if (!strncmp(t, "0x", 2) || !strncmp(t, "0X", 2)) { t += 2; } if (is_ascii) { sl = strlen(t); for (j = 0; j < (unsigned)sl; j += 2) { int u = nybble((unsigned char)t[j]); int l = nybble((unsigned char)t[j + 1]); s[out++] = (char)((u * 16) + l); } } else { strcat(s, t); } } /* Set a pending string. */ if (is_ascii) { s[out] = '\0'; ps_set(s, false, ia == IA_HTTPD); } else { ps_set(s, true, ia == IA_HTTPD); } return true; } /* * PasteString action. */ static bool PasteString_action(ia_t ia, unsigned argc, const char **argv) { unsigned i; size_t len = 0; char *s; const char *t; action_debug(AnPasteString, ia, argc, argv); if (check_argc(AnPasteString, argc, 1, 2) < 0) { return false; } /* Determine the total length of the strings. */ for (i = 0; i < argc; i++) { t = argv[i]; if (!strncasecmp(t, "0x", 2)) { t += 2; } len += strlen(t); } if (!len) { return true; } /* Allocate a block of memory and copy them in. */ s = Malloc(len + 1); *s = '\0'; for (i = 0; i < argc; i++) { t = argv[i]; if (!strncasecmp(t, "0x", 2)) { t += 2; } strcat(s, t); } /* Set a pending string. */ push_string(s, true, true, ia == IA_HTTPD); return true; } /* * Dual-mode action for the "asciicircum" ("^") key: * If in NVT mode, pass through untranslated. * If in 3270 mode, translate to "notsign". * This action is obsoleted by the use of 3270-mode and NVT-mode keymaps, but * is still defined here for backwards compatibility with old keymaps. */ static bool CircumNot_action(ia_t ia, unsigned argc, const char **argv) { action_debug(AnCircumNot, ia, argc, argv); if (check_argc(AnCircumNot, argc, 0, 0) < 0) { return false; } if (IN_3270 && composing == NONE) { key_UCharacter(0xac, KT_STD, ia, !IA_IS_KEY(ia)); } else { key_UCharacter('^', KT_STD, ia, !IA_IS_KEY(ia)); } return true; } /* PA key action for String actions */ static void do_pa(unsigned n) { if (n < 1 || n > PA_SZ) { popup_an_error(AnString "(): Unknown PA key %d", n); return; } if (kybdlock) { enq_ta(AnPA, lazyaf("%d", n), NULL); return; } key_AID(pa_xlate[n-1]); } /* PF key action for String actions */ static void do_pf(unsigned n) { if (n < 1 || n > PF_SZ) { popup_an_error(AnString "(): Unknown PF key %d", n); return; } if (kybdlock) { enq_ta(AnPF, lazyaf("%d", n), NULL); return; } key_AID(pf_xlate[n-1]); } /* * Set or clear the keyboard scroll lock. */ void kybd_scroll_lock(bool lock) { if (!IN_3270) { return; } if (lock) { kybdlock_set(KL_SCROLLED, "kybd_scroll_lock"); } else { kybdlock_clr(KL_SCROLLED, "kybd_scroll_lock"); } } /* * Move the cursor back within the legal paste area. * Returns a bool indicating success. */ static bool remargin(int lmargin) { bool ever = false; int baddr, b0 = 0; int faddr; unsigned char fa; if (toggled(OVERLAY_PASTE)) { /* * If doing overlay paste as well, just drop down to the margin * column on the next line, and don't worry about protected fields. */ baddr = ROWCOL_TO_BA(BA_TO_ROW(cursor_addr), lmargin); cursor_move(baddr); return true; } baddr = cursor_addr; while (BA_TO_COL(baddr) < lmargin) { baddr = ROWCOL_TO_BA(BA_TO_ROW(baddr), lmargin); if (!ever) { b0 = baddr; ever = true; } faddr = find_field_attribute(baddr); fa = ea_buf[faddr].fa; if (faddr == baddr || FA_IS_PROTECTED(fa)) { baddr = next_unprotected(baddr); if (baddr <= b0) { return false; } } } cursor_move(baddr); return true; } /** * Run a nested action from String(). * * @param[in] action Action to run * @param[in] cause Cause * @param[in] param First parameter, on NULL */ static bool ns_action(action_t action, enum iaction cause, const char *param) { const char *args[2]; args[0] = param; args[1] = NULL; return (*action)(cause, param != NULL, args); } /* * Pretend that a sequence of keys was entered at the keyboard. * * "Pasting" means that the sequence came from the X clipboard. Returns are * ignored; newlines mean "move to beginning of next line"; tabs and formfeeds * become spaces. Backslashes are not special, but ASCII ESC characters are * used to signify 3270 Graphic Escapes. If the NOSKIP_PASTE toggle is set, * then we don't do auto-skip, except at the end of the string; when the cursor * lands on a protected region of the screen, we treat printable characters as * cursor-right actions. * * "Not pasting" means that the sequence is a login string specified in the * hosts file, or a parameter to the String action. Returns are "move to * beginning of next line"; newlines mean "Enter AID" and the termination of * processing the string. Backslashes are processed as in C. * * Returns the number of unprocessed characters. */ size_t emulate_uinput(const ucs4_t *ws, size_t xlen, bool pasting) { enum { BASE, BACKSLASH, BACKX, BACKE, BACKP, BACKPA, BACKPF, OCTAL, HEX, EBC } state = BASE; int literal = 0; int nc = 0; enum iaction ia = pasting ? IA_PASTE : IA_STRING; int orig_addr = cursor_addr; int orig_col = BA_TO_COL(cursor_addr); int last_addr = cursor_addr; int last_row = BA_TO_ROW(cursor_addr); bool just_wrapped = false; ucs4_t c; bool auto_skip = true; if (pasting && toggled(OVERLAY_PASTE)) { auto_skip = false; } /* * In the switch statements below, "break" generally means "consume * this character," while "continue" means "rescan this character." */ while (xlen) { /* * It isn't possible to unlock the keyboard from a string, * so if the keyboard is locked, it's fatal */ if (kybdlock) { vtrace(" keyboard locked, string dropped\n"); return 0; } if (pasting && IN_3270) { /* Check for cursor wrap to top of screen. */ if (cursor_addr < orig_addr) { return xlen-1; /* wrapped */ } /* Jump cursor over left margin. */ if (MarginedPaste() && BA_TO_COL(cursor_addr) < orig_col) { if (!remargin(orig_col)) { return xlen-1; } } } if (last_addr != cursor_addr) { last_addr = cursor_addr; if (last_row == BA_TO_ROW(cursor_addr)) { just_wrapped = false; } else { last_row = BA_TO_ROW(cursor_addr); just_wrapped = true; } } c = *ws; switch (state) { case BASE: switch (c) { case '\b': ns_action(Left_action, ia, NULL); break; case '\f': if (pasting) { key_UCharacter(0x20, KT_STD, ia, true); } else { ns_action(Clear_action, ia, NULL); if (IN_3270) { return xlen-1; } } break; case '\n': if (pasting && !IN_NVT) { if (auto_skip) { if (!just_wrapped) { ns_action(Newline_action, ia, NULL); } } else { int baddr; int row; /* * Overlay paste mode: Move to the beginning of the * next row, unless we just wrapped there. * * If this is the last pasted character, ignore it. */ if (xlen == 1) { return 0; } if (!just_wrapped) { row = BA_TO_ROW(cursor_addr); if (row >= ROWS - 1) { return xlen - 1; } baddr = ROWCOL_TO_BA(row + 1, 0); cursor_move(baddr); } } last_row = BA_TO_ROW(cursor_addr); just_wrapped = false; } else { ns_action(Enter_action, ia, NULL); if (IN_3270) { return xlen-1; } } break; case '\r': if (!pasting) { ns_action(Newline_action, ia, NULL); } break; case '\t': ns_action(Tab_action, ia, NULL); break; case '\\': /* backslashes are NOT special when pasting */ if (!pasting) { state = BACKSLASH; } else { key_UCharacter((unsigned char)c, KT_STD, ia, true); } break; case UPRIV_fm: /* private-use FM */ case UPRIV2_fm: if (pasting) { vtrace(" %s -> FM\n", ia_name[(int) ia]); key_Character(EBC_fm, false, true, true, NULL); } break; case UPRIV_dup: /* private-use DUP */ case UPRIV2_dup: if (pasting) { vtrace(" %s -> DUP\n", ia_name[(int) ia]); key_Character(EBC_dup, false, true, true, NULL); } break; case UPRIV_eo: /* private-use EO */ if (pasting) { key_Character(EBC_eo, false, true, true, NULL); } break; case UPRIV_sub: /* private-use SUB */ if (pasting) { key_Character(EBC_sub, false, true, true, NULL); } break; default: if (pasting && (c >= UPRIV_GE_00 && c <= UPRIV_GE_ff)) { /* Untranslatable CP 310 code point. */ key_Character(c - UPRIV_GE_00, true, ia, true, NULL); } else { /* Ordinary text. */ key_UCharacter(c, KT_STD, ia, true); } break; } break; case BACKSLASH: /* last character was a backslash */ switch (c) { case 'a': popup_an_error(AnString "(): Bell not supported"); state = BASE; break; case 'b': ns_action(Left_action, ia, NULL); state = BASE; break; case 'f': ns_action(Clear_action, ia, NULL); state = BASE; if (IN_3270) { return xlen-1; } break; case 'n': ns_action(Enter_action, ia, NULL); state = BASE; if (IN_3270) { return xlen-1; } break; case 'p': state = BACKP; break; case 'r': ns_action(Newline_action, ia, NULL); state = BASE; break; case 't': ns_action(Tab_action, ia, NULL); state = BASE; break; case 'T': ns_action(BackTab_action, ia, NULL); state = BASE; break; case 'v': popup_an_error(AnString "(): Vertical tab not supported"); state = BASE; break; case 'u': case 'x': state = BACKX; break; case 'e': state = BACKE; break; case '\\': key_UCharacter((unsigned char) c, KT_STD, ia, true); state = BASE; break; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': state = OCTAL; literal = 0; nc = 0; continue; default: state = BASE; continue; } break; case BACKP: /* last two characters were "\p" */ switch (c) { case 'a': literal = 0; nc = 0; state = BACKPA; break; case 'f': literal = 0; nc = 0; state = BACKPF; break; default: popup_an_error(AnString "(): Unknown character after \\p"); state = BASE; break; } break; case BACKPF: /* last three characters were "\pf" */ if (nc < 2 && isdigit((unsigned char)c)) { literal = (literal * 10) + (c - '0'); nc++; } else if (!nc) { popup_an_error(AnString "(): Unknown character after \\pf"); state = BASE; } else { do_pf(literal); if (IN_3270) { return xlen; } state = BASE; continue; } break; case BACKPA: /* last three characters were "\pa" */ if (nc < 1 && isdigit((unsigned char)c)) { literal = (literal * 10) + (c - '0'); nc++; } else if (!nc) { popup_an_error(AnString "(): Unknown character after \\pa"); state = BASE; } else { do_pa(literal); if (IN_3270) { return xlen-1; } state = BASE; continue; } break; case BACKX: /* last two characters were "\x" or "\u" */ if (isxdigit((unsigned char)c)) { state = HEX; literal = 0; nc = 0; continue; } else { popup_an_error(AnString "(): Missing hex digits after \\x"); state = BASE; continue; } case BACKE: /* last two characters were "\e" */ if (isxdigit((unsigned char)c)) { state = EBC; literal = 0; nc = 0; continue; } else { popup_an_error(AnString "(): Missing hex digits after \\e"); state = BASE; continue; } case OCTAL: /* have seen \ and one or more octal digits */ if (nc < 3 && isdigit((unsigned char)c) && c < '8') { literal = (literal * 8) + FROM_HEX(c); nc++; break; } else { key_UCharacter((unsigned char) literal, KT_STD, ia, true); state = BASE; continue; } case HEX: /* have seen \x and one or more hex digits */ if (nc < 4 && isxdigit((unsigned char)c)) { literal = (literal * 16) + FROM_HEX(c); nc++; break; } else { key_UCharacter((unsigned char) literal, KT_STD, ia, true); state = BASE; continue; } case EBC: /* have seen \e and one or more hex digits */ if (nc < 4 && isxdigit((unsigned char)c)) { literal = (literal * 16) + FROM_HEX(c); nc++; break; } else { vtrace(" %s -> Key(X'%02X')\n", ia_name[(int) ia], literal); if (!(literal & ~0xff)) { key_Character((unsigned char) literal, false, true, true, NULL); } else { unsigned char ebc_pair[2]; ebc_pair[0] = (literal >> 8) & 0xff; ebc_pair[1] = literal & 0xff; key_WCharacter(ebc_pair, true); } state = BASE; continue; } } ws++; xlen--; } switch (state) { case BASE: if (MarginedPaste() && BA_TO_COL(cursor_addr) < orig_col) { remargin(orig_col); } break; case OCTAL: case HEX: key_UCharacter((unsigned char) literal, KT_STD, ia, true); state = BASE; if (MarginedPaste() && BA_TO_COL(cursor_addr) < orig_col) { remargin(orig_col); } break; case EBC: vtrace(" %s -> Key(X'%02X')\n", ia_name[(int) ia], literal); key_Character((unsigned char) literal, false, true, true, NULL); state = BASE; if (MarginedPaste() && BA_TO_COL(cursor_addr) < orig_col) { remargin(orig_col); } break; case BACKPF: if (nc > 0) { do_pf(literal); state = BASE; } break; case BACKPA: if (nc > 0) { do_pa(literal); state = BASE; } break; default: popup_an_error(AnString "(): Missing data after \\"); break; } return xlen; } /* Multibyte version of emulate_uinput. */ size_t emulate_input(const char *s, size_t len, bool pasting, bool force_utf8) { static ucs4_t *w_ibuf = NULL; static size_t w_ibuf_len = 0; int xlen; /* Convert from a multi-byte string to a Unicode string. */ if (len + 1 > w_ibuf_len) { w_ibuf_len = len + 1; w_ibuf = (ucs4_t *)Realloc(w_ibuf, w_ibuf_len * sizeof(ucs4_t)); } xlen = multibyte_to_unicode_string(s, len, w_ibuf, w_ibuf_len, force_utf8); if (xlen < 0) { return 0; /* failed */ } /* Process it as Unicode. */ return emulate_uinput(w_ibuf, xlen, pasting); } /* * Pretend that a sequence of hexadecimal characters was entered at the * keyboard. The input is a sequence of hexadecimal bytes, 2 characters * per byte. If connected in NVT mode, these are treated as ASCII * characters; if in 3270 mode, they are considered EBCDIC. * * Graphic Escapes are handled as \E. */ void hex_input(const char *s) { const char *t; bool escaped; unsigned char *xbuf = NULL; unsigned char *tbuf = NULL; int nbytes = 0; /* Validate the string. */ if (strlen(s) % 2) { popup_an_error(AnHexString "(): Odd number of characters in " "specification"); return; } t = s; escaped = false; while (*t) { if (isxdigit((unsigned char)*t) && isxdigit((unsigned char)*(t + 1))) { escaped = false; nbytes++; } else if (!strncmp(t, "\\E", 2) || !strncmp(t, "\\e", 2)) { if (escaped) { popup_an_error(AnHexString "(): Double \\E"); return; } if (!IN_3270) { popup_an_error(AnHexString "(): \\E in NVT mode"); return; } escaped = true; } else { popup_an_error(AnHexString "(): Illegal character in " "specification"); return; } t += 2; } if (escaped) { popup_an_error(AnHexString "(): Nothing follows \\E"); return; } /* Allocate a temporary buffer. */ if (!IN_3270 && nbytes) { tbuf = xbuf = (unsigned char *)Malloc(nbytes); } /* Pump it in. */ t = s; escaped = false; while (*t) { if (isxdigit((unsigned char)*t) && isxdigit((unsigned char)*(t + 1))) { unsigned c; c = (FROM_HEX(*t) * 16) + FROM_HEX(*(t + 1)); if (IN_3270) { key_Character(c, escaped, true, true, NULL); } else { *tbuf++ = (unsigned char)c; } escaped = false; } else if (!strncmp(t, "\\E", 2) || !strncmp(t, "\\e", 2)) { escaped = true; } t += 2; } if (!IN_3270 && nbytes) { net_hexnvt_out(xbuf, nbytes); Free(xbuf); } } /* * Set up the cursor and input field for command input. * Returns the length of the input field, or <0 if there is no field * to set up. */ int kybd_prime(void) { int baddr; register unsigned char fa; int len = 0; /* * No point in trying if the the keyboard is locked or we aren't in * 3270 mode. */ if (kybdlock) { return KYP_LOCKED; } if (!IN_3270) { return KYP_NOT_3270; } /* * If unformatted, guess that we can use all the NULs from the cursor * address forward, leaving one empty slot to delimit the end of the * command. It's up to the host to make sense of what we send. */ if (!formatted) { baddr = cursor_addr; while (ea_buf[baddr].ec == EBC_null || ea_buf[baddr].ec == EBC_space) { len++; INC_BA(baddr); if (baddr == cursor_addr) { break; } } if (len) { len--; } return len; } fa = get_field_attribute(cursor_addr); if (ea_buf[cursor_addr].fa || FA_IS_PROTECTED(fa)) { /* * The cursor is not in an unprotected field. Find the * next one. */ baddr = next_unprotected(cursor_addr); /* If there isn't any, give up. */ if (!baddr) { return KYP_NO_FIELD; } } else { /* Already in an unprotected field. Find its start. */ baddr = cursor_addr; while (!ea_buf[baddr].fa) { DEC_BA(baddr); } INC_BA(baddr); } /* Move the cursor to the beginning of the field. */ cursor_move(baddr); /* Erase it. */ while (!ea_buf[baddr].fa) { ctlr_add(baddr, 0, 0); len++; INC_BA(baddr); } /* Return the field length. */ return len; } /* * Translate a key name to a key, including APL and extended characters. */ static ks_t my_string_to_key(const char *s, enum keytype *keytypep, ucs4_t *ucs4) { ks_t k; int consumed; enum me_fail error; *keytypep = KT_STD; *ucs4 = 0L; /* Look for my contrived APL symbols. */ if (!strncmp(s, "apl_", 4)) { bool is_ge; *ucs4 = apl_key_to_ucs4(s, &is_ge); if (*ucs4 != 0) { *keytypep = is_ge? KT_GE: KT_STD; return KS_NONE; } } /* Look for a standard HTML entity or X11 keysym name. */ k = string_to_key((char *)s); if (k != KS_NONE) { return k; } /* Look for "euro". */ if (!strcasecmp(s, "euro")) { *ucs4 = 0x20ac; return KS_NONE; } /* Look for U+nnnn or 0xXXXX. */ if (!strncasecmp(s, "U+", 2) || !strncasecmp(s, "0x", 2)) { *ucs4 = strtoul(s + 2, NULL, 16); return KS_NONE; } /* Look for a valid local multibyte character. */ *ucs4 = multibyte_to_unicode(s, strlen(s), &consumed, &error); if ((size_t)consumed != strlen(s)) { *ucs4 = 0; } return KS_NONE; } static bool build_composites(const char *how) { char *c, *c0, *c1; char *ln; char ksname[3][64]; char junk[2]; enum keytype a[3]; ucs4_t ucs4[3]; int i; struct composite *cp; if (appres.interactive.compose_map == NULL) { popup_an_error("%s: No %s defined", how, ResComposeMap); return false; } c0 = get_fresource("%s.%s", ResComposeMap, appres.interactive.compose_map); if (c0 == NULL) { popup_an_error("%s: Cannot find %s \"%s\"", how, ResComposeMap, appres.interactive.compose_map); return false; } c1 = c = NewString(c0); /* will be modified by strtok */ while ((ln = strtok(c, "\n"))) { bool okay = true; c = NULL; if (sscanf(ln, " %63[^+ \t] + %63[^= \t] =%63s%1s", ksname[0], ksname[1], ksname[2], junk) != 3) { popup_an_error("%s: Invalid syntax: %s", how, ln); continue; } for (i = 0; i < 3; i++) { ks_t k = my_string_to_key(ksname[i], &a[i], &ucs4[i]); if ((k == KS_NONE && !ucs4[i]) || (k & ~0xff)) { popup_an_error("%s: Invalid name: \"%s\"", how, ksname[i]); okay = false; break; } if (k != KS_NONE) { ucs4[i] = k; } } if (!okay) { continue; } composites = (struct composite *) Realloc((char *)composites, (n_composites + 1) * sizeof(struct composite)); cp = composites + n_composites; cp->k1.ucs4 = ucs4[0]; cp->k1.keytype = a[0]; cp->k2.ucs4 = ucs4[1]; cp->k2.keytype = a[1]; cp->translation.ucs4 = ucs4[2]; cp->translation.keytype = a[2]; n_composites++; } Free(c1); return true; } /* * Called by the toolkit when the "Compose" key is pressed. "Compose" is * implemented by pressing and releasing three keys: "Compose" and two * data keys. For example, "Compose" "s" "s" gives the German "ssharp" * character, and "Compose" "C", "," gives a capital "C" with a cedilla * (symbol Ccedilla). * * The mechanism breaks down a little when the user presses "Compose" and * then a non-data key. Oh well. */ static bool Compose_action(ia_t ia, unsigned argc, const char **argv) { action_debug(AnCompose, ia, argc, argv); if (check_argc(AnCompose, argc, 0, 0) < 0) { return false; } if (!composites && !build_composites(AnCompose)) { return true; } composing = COMPOSE; vstatus_compose(true, 0, KT_STD); return true; } /* Destroy the current compose map. */ static void destroy_compose_map(void) { composing = NONE; vstatus_compose(false, 0, KT_STD); Replace(composites, NULL); n_composites = 0; } /* Set or clear a temporary compose map. */ bool temporary_compose_map(const char *name, const char *how) { /* Make sure we track the default. */ if (default_compose_map_name == NULL && appres.interactive.compose_map != NULL) { default_compose_map_name = NewString(appres.interactive.compose_map); } /* Destroy the current map. */ destroy_compose_map(); Replace(appres.interactive.compose_map, NewString(default_compose_map_name)); if (name == NULL || (temporary_compose_map_name != NULL && !strcmp(temporary_compose_map_name, name))) { /* Clear out the temporary map. */ Replace(temporary_compose_map_name, NULL); return true; } /* Set the temporary one. */ temporary_compose_map_name = NewString(name); appres.interactive.compose_map = NewString(name); return !build_composites(how); } /* * TemporaryComposeMap() clears out any temporary compose map. * TemporaryComposeMap(x) makes the temporary compose map, or if x is already * the temporary compose map, removes it. */ static bool TemporaryComposeMap_action(ia_t ia, unsigned argc, const char **argv) { action_debug(AnTemporaryComposeMap, ia, argc, argv); if (check_argc(AnTemporaryComposeMap, argc, 0, 1) < 0) { return false; } return temporary_compose_map((argc > 0)? argv[0]: NULL, AnTemporaryComposeMap); } suite3270-4.1/Common/lazya.c000066400000000000000000000075071413735575200155640ustar00rootroot00000000000000/* * Copyright (c) 2015, 2018 Paul Mattes. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the names of Paul Mattes nor the names of his contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO * EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * lazya.c * Lazy allocations */ #include "globals.h" #if defined(HAVE_MALLOC_H) /*[*/ # include #endif /*]*/ #include "trace.h" #include "utils.h" #include "lazya.h" #define BLOCK_SLOTS 1024 /* slots per block */ typedef struct lazy_block { struct lazy_block *next; void *slot[BLOCK_SLOTS]; } lazy_block_t; static lazy_block_t *blocks; static lazy_block_t **last_block = &blocks; static lazy_block_t *current_block; static int slot_ix = 0; /** * Add a buffer to the lazy allocation table. * * @param[in] buf Buffer to store * * @return buf, for convenience */ char * lazya(void *buf) { if (current_block == NULL || slot_ix >= BLOCK_SLOTS) { /* Allocate a new block. */ current_block = (lazy_block_t *)Calloc(1, sizeof(lazy_block_t)); *last_block = current_block; last_block = ¤t_block->next; slot_ix = 0; } /* Remember this element. */ current_block->slot[slot_ix++] = buf; return buf; } /** * Format a string into Malloc'd memory and put it into the lazy table. * * @param[in] fmt Format * * @return Buffer */ char * lazyaf(const char *fmt, ...) { va_list args; char *r; va_start(args, fmt); r = xs_vbuffer(fmt, args); va_end(args); return lazya(r); } /** * Format a string into Malloc'd memory and put it into the lazy table. * Varargs version. * * @param[in] fmt Format * * @return Buffer */ char * vlazyaf(const char *fmt, va_list args) { return lazya(xs_vbuffer(fmt, args)); } /** * Flush the lazy allocation table. */ void lazya_flush(void) { unsigned nf = 0; #if defined(HAVE_MALLOC_USABLE_SIZE) /*[*/ size_t nb = 0; #endif /*]*/ lazy_block_t *r, *next = NULL; for (r = blocks; r != NULL; r = next) { int i; next = r->next; for (i = 0; i < BLOCK_SLOTS; i++) { if (r->slot[i] != NULL) { #if defined(HAVE_MALLOC_USABLE_SIZE) /*[*/ nb += malloc_usable_size(r->slot[i]); #endif /*]*/ Free(r->slot[i]); nf++; } } Free(r); } current_block = NULL; blocks = NULL; last_block = &blocks; slot_ix = 0; #if defined(HAVE_MALLOC_USABLE_SIZE) /*[*/ if (nf > 10 || nb > 1024) { vtrace("lazya_flush: %u slot%s, %zu bytes\n", nf, (nf == 1)? "": "s", nb); } #else /*][*/ if (nf > 10) { vtrace("lazya_flush: %u slot%s\n", nf, (nf == 1)? "": "s"); } #endif /*]*/ } suite3270-4.1/Common/lib3270_files.mk000066400000000000000000000011241413735575200170620ustar00rootroot00000000000000# Object files for lib3270. LIB3270_OBJECTS = Malloc.o XtGlue.o actions.o b8.o bind-opt.o child.o \ childscript.o codepage.o ctlr.o event.o favicon.o fprint_screen.o \ ft.o ft_cut.o ft_dft.o glue.o host.o httpd-core.o httpd-io.o \ httpd-nodes.o icmd.o idle.o kybd.o linemode.o login_macro.o llist.o \ model.o nvt.o peerscript.o popups_glue.o print_screen.o query.o \ readres.o resources.o rpq.o run_action.o save_restore.o screentrace.o \ sf.o sio_glue.o source.o stdinscript.o stringscript.o task.o telnet.o \ telnet_new_environ.o telnet_sio.o toggles.o trace.o util.o vstatus.o \ xio.o suite3270-4.1/Common/lib3270i_files.mk000066400000000000000000000001121413735575200172270ustar00rootroot00000000000000# Object files for lib3270i. LIB3270I_OBJECTS = pr3287_session.o scroll.o suite3270-4.1/Common/lib3270stubs_files.mk000066400000000000000000000010471413735575200201470ustar00rootroot00000000000000# Object files for lib3270stubs. LIB3270STUBS_OBJECTS = ft_gui_stubs.o glue_gui_stubs.o host_gui_stubs.o \ menubar_stubs.o model_stubs.o nvt_gui_stubs.o popups_stubs.o \ pr3287_session_stubs.o print_gui_stubs.o product_stubs1.o \ product_stubs2.o product_stubs3.o product_stubs4.o save_stubs.o \ screen_stubs1.o screen_stubs2.o screen_stubs3.o screen_stubs4.o \ screen_stubs5.o screen_stubs6.o screen_stubs7.o scroll_stubs.o \ select_stubs.o sio_none.o stats_stubs.o status_stubs.o \ telnet_gui_stubs.o tls_passwd_gui_stubs.o trace_gui_stubs.o suite3270-4.1/Common/lib32xx_files.mk000066400000000000000000000005531413735575200173000ustar00rootroot00000000000000# Object files for lib32xx. LIB32XX_OBJECTS = apl.o asprintf.o boolstr.o base64.o copyright.o indent_s.o \ min_version.o lazya.o popup_an_error.o proxy.o proxy_http.o \ proxy_passthru.o proxy_socks4.o proxy_socks5.o proxy_telnet.o \ proxy_toggle.o resolver.o see.o sioc.o split_host.o tables.o \ toupper.o unicode.o unicode_dbcs.o utf8.o varbuf.o xs_buffer.o suite3270-4.1/Common/libexpat/000077500000000000000000000000001413735575200160775ustar00rootroot00000000000000suite3270-4.1/Common/libexpat/COPYING.txt000066400000000000000000000023161413735575200177520ustar00rootroot00000000000000Copyright (c) 1998, 1999, 2000 Thai Open Source Software Center Ltd and Clark Cooper Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006 Expat maintainers. Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. suite3270-4.1/Common/libexpat/amigaconfig.h000066400000000000000000000013541413735575200205170ustar00rootroot00000000000000#ifndef AMIGACONFIG_H #define AMIGACONFIG_H /* 1234 = LIL_ENDIAN, 4321 = BIGENDIAN */ #define BYTEORDER 4321 /* Define to 1 if you have the `bcopy' function. */ #define HAVE_BCOPY 1 /* Define to 1 if you have the `memmove' function. */ #define HAVE_MEMMOVE 1 /* Define to 1 if you have the header file. */ #define HAVE_UNISTD_H 1 /* whether byteorder is bigendian */ #define WORDS_BIGENDIAN /* Define to specify how much context to retain around the current parse point. */ #define XML_CONTEXT_BYTES 1024 /* Define to make parameter entity parsing functionality available. */ #define XML_DTD /* Define to make XML Namespaces functionality available. */ #define XML_NS #endif /* AMIGACONFIG_H */ suite3270-4.1/Common/libexpat/ascii.h000066400000000000000000000040351413735575200173420ustar00rootroot00000000000000/* Copyright (c) 1998, 1999 Thai Open Source Software Center Ltd See the file COPYING for copying permission. */ #define ASCII_A 0x41 #define ASCII_B 0x42 #define ASCII_C 0x43 #define ASCII_D 0x44 #define ASCII_E 0x45 #define ASCII_F 0x46 #define ASCII_G 0x47 #define ASCII_H 0x48 #define ASCII_I 0x49 #define ASCII_J 0x4A #define ASCII_K 0x4B #define ASCII_L 0x4C #define ASCII_M 0x4D #define ASCII_N 0x4E #define ASCII_O 0x4F #define ASCII_P 0x50 #define ASCII_Q 0x51 #define ASCII_R 0x52 #define ASCII_S 0x53 #define ASCII_T 0x54 #define ASCII_U 0x55 #define ASCII_V 0x56 #define ASCII_W 0x57 #define ASCII_X 0x58 #define ASCII_Y 0x59 #define ASCII_Z 0x5A #define ASCII_a 0x61 #define ASCII_b 0x62 #define ASCII_c 0x63 #define ASCII_d 0x64 #define ASCII_e 0x65 #define ASCII_f 0x66 #define ASCII_g 0x67 #define ASCII_h 0x68 #define ASCII_i 0x69 #define ASCII_j 0x6A #define ASCII_k 0x6B #define ASCII_l 0x6C #define ASCII_m 0x6D #define ASCII_n 0x6E #define ASCII_o 0x6F #define ASCII_p 0x70 #define ASCII_q 0x71 #define ASCII_r 0x72 #define ASCII_s 0x73 #define ASCII_t 0x74 #define ASCII_u 0x75 #define ASCII_v 0x76 #define ASCII_w 0x77 #define ASCII_x 0x78 #define ASCII_y 0x79 #define ASCII_z 0x7A #define ASCII_0 0x30 #define ASCII_1 0x31 #define ASCII_2 0x32 #define ASCII_3 0x33 #define ASCII_4 0x34 #define ASCII_5 0x35 #define ASCII_6 0x36 #define ASCII_7 0x37 #define ASCII_8 0x38 #define ASCII_9 0x39 #define ASCII_TAB 0x09 #define ASCII_SPACE 0x20 #define ASCII_EXCL 0x21 #define ASCII_QUOT 0x22 #define ASCII_AMP 0x26 #define ASCII_APOS 0x27 #define ASCII_MINUS 0x2D #define ASCII_PERIOD 0x2E #define ASCII_COLON 0x3A #define ASCII_SEMI 0x3B #define ASCII_LT 0x3C #define ASCII_EQUALS 0x3D #define ASCII_GT 0x3E #define ASCII_LSQB 0x5B #define ASCII_RSQB 0x5D #define ASCII_UNDERSCORE 0x5F #define ASCII_LPAREN 0x28 #define ASCII_RPAREN 0x29 #define ASCII_FF 0x0C #define ASCII_SLASH 0x2F #define ASCII_HASH 0x23 #define ASCII_PIPE 0x7C #define ASCII_COMMA 0x2C suite3270-4.1/Common/libexpat/asciitab.h000066400000000000000000000034041413735575200200300ustar00rootroot00000000000000/* Copyright (c) 1998, 1999 Thai Open Source Software Center Ltd See the file COPYING for copying permission. */ /* 0x00 */ BT_NONXML, BT_NONXML, BT_NONXML, BT_NONXML, /* 0x04 */ BT_NONXML, BT_NONXML, BT_NONXML, BT_NONXML, /* 0x08 */ BT_NONXML, BT_S, BT_LF, BT_NONXML, /* 0x0C */ BT_NONXML, BT_CR, BT_NONXML, BT_NONXML, /* 0x10 */ BT_NONXML, BT_NONXML, BT_NONXML, BT_NONXML, /* 0x14 */ BT_NONXML, BT_NONXML, BT_NONXML, BT_NONXML, /* 0x18 */ BT_NONXML, BT_NONXML, BT_NONXML, BT_NONXML, /* 0x1C */ BT_NONXML, BT_NONXML, BT_NONXML, BT_NONXML, /* 0x20 */ BT_S, BT_EXCL, BT_QUOT, BT_NUM, /* 0x24 */ BT_OTHER, BT_PERCNT, BT_AMP, BT_APOS, /* 0x28 */ BT_LPAR, BT_RPAR, BT_AST, BT_PLUS, /* 0x2C */ BT_COMMA, BT_MINUS, BT_NAME, BT_SOL, /* 0x30 */ BT_DIGIT, BT_DIGIT, BT_DIGIT, BT_DIGIT, /* 0x34 */ BT_DIGIT, BT_DIGIT, BT_DIGIT, BT_DIGIT, /* 0x38 */ BT_DIGIT, BT_DIGIT, BT_COLON, BT_SEMI, /* 0x3C */ BT_LT, BT_EQUALS, BT_GT, BT_QUEST, /* 0x40 */ BT_OTHER, BT_HEX, BT_HEX, BT_HEX, /* 0x44 */ BT_HEX, BT_HEX, BT_HEX, BT_NMSTRT, /* 0x48 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, /* 0x4C */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, /* 0x50 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, /* 0x54 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, /* 0x58 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_LSQB, /* 0x5C */ BT_OTHER, BT_RSQB, BT_OTHER, BT_NMSTRT, /* 0x60 */ BT_OTHER, BT_HEX, BT_HEX, BT_HEX, /* 0x64 */ BT_HEX, BT_HEX, BT_HEX, BT_NMSTRT, /* 0x68 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, /* 0x6C */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, /* 0x70 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, /* 0x74 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, /* 0x78 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_OTHER, /* 0x7C */ BT_VERBAR, BT_OTHER, BT_OTHER, BT_OTHER, suite3270-4.1/Common/libexpat/expat.dsp000066400000000000000000000114451413735575200177350ustar00rootroot00000000000000# Microsoft Developer Studio Project File - Name="expat" - Package Owner=<4> # Microsoft Developer Studio Generated Build File, Format Version 6.00 # ** DO NOT EDIT ** # TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102 CFG=expat - Win32 Debug !MESSAGE This is not a valid makefile. To build this project using NMAKE, !MESSAGE use the Export Makefile command and run !MESSAGE !MESSAGE NMAKE /f "expat.mak". !MESSAGE !MESSAGE You can specify a configuration when running NMAKE !MESSAGE by defining the macro CFG on the command line. For example: !MESSAGE !MESSAGE NMAKE /f "expat.mak" CFG="expat - Win32 Debug" !MESSAGE !MESSAGE Possible choices for configuration are: !MESSAGE !MESSAGE "expat - Win32 Release" (based on "Win32 (x86) Dynamic-Link Library") !MESSAGE "expat - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library") !MESSAGE # Begin Project # PROP AllowPerConfigDependencies 0 # PROP Scc_ProjName "" # PROP Scc_LocalPath "" CPP=cl.exe MTL=midl.exe RSC=rc.exe !IF "$(CFG)" == "expat - Win32 Release" # PROP BASE Use_MFC 0 # PROP BASE Use_Debug_Libraries 0 # PROP BASE Output_Dir "Release" # PROP BASE Intermediate_Dir "Release" # PROP BASE Target_Dir "" # PROP Use_MFC 0 # PROP Use_Debug_Libraries 0 # PROP Output_Dir "..\win32\bin\Release" # PROP Intermediate_Dir "..\win32\tmp\Release" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "EXPAT_EXPORTS" /Yu"stdafx.h" /FD /c # ADD CPP /nologo /MT /W3 /GX /O2 /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "COMPILED_FROM_DSP" /FD /c # SUBTRACT CPP /YX /Yc /Yu # ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32 # ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32 # ADD BASE RSC /l 0x409 /d "NDEBUG" # ADD RSC /l 0x409 /d "NDEBUG" BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 /nologo /dll /machine:I386 # ADD LINK32 /nologo /dll /pdb:none /machine:I386 /out:"..\win32\bin\Release\libexpat.dll" !ELSEIF "$(CFG)" == "expat - Win32 Debug" # PROP BASE Use_MFC 0 # PROP BASE Use_Debug_Libraries 1 # PROP BASE Output_Dir "Debug" # PROP BASE Intermediate_Dir "Debug" # PROP BASE Target_Dir "" # PROP Use_MFC 0 # PROP Use_Debug_Libraries 1 # PROP Output_Dir "..\win32\bin\Debug" # PROP Intermediate_Dir "..\win32\tmp\Debug" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "EXPAT_EXPORTS" /Yu"stdafx.h" /FD /GZ /c # ADD CPP /nologo /MTd /W3 /GX /ZI /Od /D "_DEBUG" /D "COMPILED_FROM_DSP" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /FR /FD /GZ /c # ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32 # ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32 # ADD BASE RSC /l 0x409 /d "_DEBUG" # ADD RSC /l 0x409 /d "_DEBUG" BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 /nologo /dll /debug /machine:I386 /pdbtype:sept # ADD LINK32 /nologo /dll /pdb:none /debug /machine:I386 /out:"..\win32\bin\Debug\libexpat.dll" !ENDIF # Begin Target # Name "expat - Win32 Release" # Name "expat - Win32 Debug" # Begin Group "Source Files" # PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" # Begin Source File SOURCE=.\libexpat.def # End Source File # Begin Source File SOURCE=.\xmlparse.c !IF "$(CFG)" == "expat - Win32 Release" !ELSEIF "$(CFG)" == "expat - Win32 Debug" # ADD CPP /GX- /Od !ENDIF # End Source File # Begin Source File SOURCE=.\xmlrole.c # End Source File # Begin Source File SOURCE=.\xmltok.c # End Source File # Begin Source File SOURCE=.\xmltok_impl.c # End Source File # Begin Source File SOURCE=.\xmltok_ns.c # End Source File # End Group # Begin Group "Header Files" # PROP Default_Filter "h;hpp;hxx;hm;inl" # Begin Source File SOURCE=.\ascii.h # End Source File # Begin Source File SOURCE=.\asciitab.h # End Source File # Begin Source File SOURCE=.\expat.h # End Source File # Begin Source File SOURCE=.\expat_external.h # End Source File # Begin Source File SOURCE=.\iasciitab.h # End Source File # Begin Source File SOURCE=.\internal.h # End Source File # Begin Source File SOURCE=.\latin1tab.h # End Source File # Begin Source File SOURCE=.\nametab.h # End Source File # Begin Source File SOURCE=.\utf8tab.h # End Source File # Begin Source File SOURCE=.\xmlrole.h # End Source File # Begin Source File SOURCE=.\xmltok.h # End Source File # Begin Source File SOURCE=.\xmltok_impl.h # End Source File # End Group # Begin Group "Resource Files" # PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe" # End Group # End Target # End Project suite3270-4.1/Common/libexpat/expat.h000066400000000000000000001234571413735575200174050ustar00rootroot00000000000000/* Copyright (c) 1998, 1999, 2000 Thai Open Source Software Center Ltd See the file COPYING for copying permission. */ #ifndef Expat_INCLUDED #define Expat_INCLUDED 1 #ifdef __VMS /* 0 1 2 3 0 1 2 3 1234567890123456789012345678901 1234567890123456789012345678901 */ #define XML_SetProcessingInstructionHandler XML_SetProcessingInstrHandler #define XML_SetUnparsedEntityDeclHandler XML_SetUnparsedEntDeclHandler #define XML_SetStartNamespaceDeclHandler XML_SetStartNamespcDeclHandler #define XML_SetExternalEntityRefHandlerArg XML_SetExternalEntRefHandlerArg #endif #include #include "expat_external.h" #ifdef __cplusplus extern "C" { #endif struct XML_ParserStruct; typedef struct XML_ParserStruct *XML_Parser; /* Should this be defined using stdbool.h when C99 is available? */ typedef unsigned char XML_Bool; #define XML_TRUE ((XML_Bool) 1) #define XML_FALSE ((XML_Bool) 0) /* The XML_Status enum gives the possible return values for several API functions. The preprocessor #defines are included so this stanza can be added to code that still needs to support older versions of Expat 1.95.x: #ifndef XML_STATUS_OK #define XML_STATUS_OK 1 #define XML_STATUS_ERROR 0 #endif Otherwise, the #define hackery is quite ugly and would have been dropped. */ enum XML_Status { XML_STATUS_ERROR = 0, #define XML_STATUS_ERROR XML_STATUS_ERROR XML_STATUS_OK = 1, #define XML_STATUS_OK XML_STATUS_OK XML_STATUS_SUSPENDED = 2 #define XML_STATUS_SUSPENDED XML_STATUS_SUSPENDED }; enum XML_Error { XML_ERROR_NONE, XML_ERROR_NO_MEMORY, XML_ERROR_SYNTAX, XML_ERROR_NO_ELEMENTS, XML_ERROR_INVALID_TOKEN, XML_ERROR_UNCLOSED_TOKEN, XML_ERROR_PARTIAL_CHAR, XML_ERROR_TAG_MISMATCH, XML_ERROR_DUPLICATE_ATTRIBUTE, XML_ERROR_JUNK_AFTER_DOC_ELEMENT, XML_ERROR_PARAM_ENTITY_REF, XML_ERROR_UNDEFINED_ENTITY, XML_ERROR_RECURSIVE_ENTITY_REF, XML_ERROR_ASYNC_ENTITY, XML_ERROR_BAD_CHAR_REF, XML_ERROR_BINARY_ENTITY_REF, XML_ERROR_ATTRIBUTE_EXTERNAL_ENTITY_REF, XML_ERROR_MISPLACED_XML_PI, XML_ERROR_UNKNOWN_ENCODING, XML_ERROR_INCORRECT_ENCODING, XML_ERROR_UNCLOSED_CDATA_SECTION, XML_ERROR_EXTERNAL_ENTITY_HANDLING, XML_ERROR_NOT_STANDALONE, XML_ERROR_UNEXPECTED_STATE, XML_ERROR_ENTITY_DECLARED_IN_PE, XML_ERROR_FEATURE_REQUIRES_XML_DTD, XML_ERROR_CANT_CHANGE_FEATURE_ONCE_PARSING, /* Added in 1.95.7. */ XML_ERROR_UNBOUND_PREFIX, /* Added in 1.95.8. */ XML_ERROR_UNDECLARING_PREFIX, XML_ERROR_INCOMPLETE_PE, XML_ERROR_XML_DECL, XML_ERROR_TEXT_DECL, XML_ERROR_PUBLICID, XML_ERROR_SUSPENDED, XML_ERROR_NOT_SUSPENDED, XML_ERROR_ABORTED, XML_ERROR_FINISHED, XML_ERROR_SUSPEND_PE, /* Added in 2.0. */ XML_ERROR_RESERVED_PREFIX_XML, XML_ERROR_RESERVED_PREFIX_XMLNS, XML_ERROR_RESERVED_NAMESPACE_URI }; enum XML_Content_Type { XML_CTYPE_EMPTY = 1, XML_CTYPE_ANY, XML_CTYPE_MIXED, XML_CTYPE_NAME, XML_CTYPE_CHOICE, XML_CTYPE_SEQ }; enum XML_Content_Quant { XML_CQUANT_NONE, XML_CQUANT_OPT, XML_CQUANT_REP, XML_CQUANT_PLUS }; /* If type == XML_CTYPE_EMPTY or XML_CTYPE_ANY, then quant will be XML_CQUANT_NONE, and the other fields will be zero or NULL. If type == XML_CTYPE_MIXED, then quant will be NONE or REP and numchildren will contain number of elements that may be mixed in and children point to an array of XML_Content cells that will be all of XML_CTYPE_NAME type with no quantification. If type == XML_CTYPE_NAME, then the name points to the name, and the numchildren field will be zero and children will be NULL. The quant fields indicates any quantifiers placed on the name. CHOICE and SEQ will have name NULL, the number of children in numchildren and children will point, recursively, to an array of XML_Content cells. The EMPTY, ANY, and MIXED types will only occur at top level. */ typedef struct XML_cp XML_Content; struct XML_cp { enum XML_Content_Type type; enum XML_Content_Quant quant; XML_Char * name; unsigned int numchildren; XML_Content * children; }; /* This is called for an element declaration. See above for description of the model argument. It's the caller's responsibility to free model when finished with it. */ typedef void (XMLCALL *XML_ElementDeclHandler) (void *userData, const XML_Char *name, XML_Content *model); XMLPARSEAPI(void) XML_SetElementDeclHandler(XML_Parser parser, XML_ElementDeclHandler eldecl); /* The Attlist declaration handler is called for *each* attribute. So a single Attlist declaration with multiple attributes declared will generate multiple calls to this handler. The "default" parameter may be NULL in the case of the "#IMPLIED" or "#REQUIRED" keyword. The "isrequired" parameter will be true and the default value will be NULL in the case of "#REQUIRED". If "isrequired" is true and default is non-NULL, then this is a "#FIXED" default. */ typedef void (XMLCALL *XML_AttlistDeclHandler) ( void *userData, const XML_Char *elname, const XML_Char *attname, const XML_Char *att_type, const XML_Char *dflt, int isrequired); XMLPARSEAPI(void) XML_SetAttlistDeclHandler(XML_Parser parser, XML_AttlistDeclHandler attdecl); /* The XML declaration handler is called for *both* XML declarations and text declarations. The way to distinguish is that the version parameter will be NULL for text declarations. The encoding parameter may be NULL for XML declarations. The standalone parameter will be -1, 0, or 1 indicating respectively that there was no standalone parameter in the declaration, that it was given as no, or that it was given as yes. */ typedef void (XMLCALL *XML_XmlDeclHandler) (void *userData, const XML_Char *version, const XML_Char *encoding, int standalone); XMLPARSEAPI(void) XML_SetXmlDeclHandler(XML_Parser parser, XML_XmlDeclHandler xmldecl); typedef struct { void *(*malloc_fcn)(size_t size); void *(*realloc_fcn)(void *ptr, size_t size); void (*free_fcn)(void *ptr); } XML_Memory_Handling_Suite; /* Constructs a new parser; encoding is the encoding specified by the external protocol or NULL if there is none specified. */ XMLPARSEAPI(XML_Parser) XML_ParserCreate(const XML_Char *encoding); /* Constructs a new parser and namespace processor. Element type names and attribute names that belong to a namespace will be expanded; unprefixed attribute names are never expanded; unprefixed element type names are expanded only if there is a default namespace. The expanded name is the concatenation of the namespace URI, the namespace separator character, and the local part of the name. If the namespace separator is '\0' then the namespace URI and the local part will be concatenated without any separator. It is a programming error to use the separator '\0' with namespace triplets (see XML_SetReturnNSTriplet). */ XMLPARSEAPI(XML_Parser) XML_ParserCreateNS(const XML_Char *encoding, XML_Char namespaceSeparator); /* Constructs a new parser using the memory management suite referred to by memsuite. If memsuite is NULL, then use the standard library memory suite. If namespaceSeparator is non-NULL it creates a parser with namespace processing as described above. The character pointed at will serve as the namespace separator. All further memory operations used for the created parser will come from the given suite. */ XMLPARSEAPI(XML_Parser) XML_ParserCreate_MM(const XML_Char *encoding, const XML_Memory_Handling_Suite *memsuite, const XML_Char *namespaceSeparator); /* Prepare a parser object to be re-used. This is particularly valuable when memory allocation overhead is disproportionatly high, such as when a large number of small documnents need to be parsed. All handlers are cleared from the parser, except for the unknownEncodingHandler. The parser's external state is re-initialized except for the values of ns and ns_triplets. Added in Expat 1.95.3. */ XMLPARSEAPI(XML_Bool) XML_ParserReset(XML_Parser parser, const XML_Char *encoding); /* atts is array of name/value pairs, terminated by 0; names and values are 0 terminated. */ typedef void (XMLCALL *XML_StartElementHandler) (void *userData, const XML_Char *name, const XML_Char **atts); typedef void (XMLCALL *XML_EndElementHandler) (void *userData, const XML_Char *name); /* s is not 0 terminated. */ typedef void (XMLCALL *XML_CharacterDataHandler) (void *userData, const XML_Char *s, int len); /* target and data are 0 terminated */ typedef void (XMLCALL *XML_ProcessingInstructionHandler) ( void *userData, const XML_Char *target, const XML_Char *data); /* data is 0 terminated */ typedef void (XMLCALL *XML_CommentHandler) (void *userData, const XML_Char *data); typedef void (XMLCALL *XML_StartCdataSectionHandler) (void *userData); typedef void (XMLCALL *XML_EndCdataSectionHandler) (void *userData); /* This is called for any characters in the XML document for which there is no applicable handler. This includes both characters that are part of markup which is of a kind that is not reported (comments, markup declarations), or characters that are part of a construct which could be reported but for which no handler has been supplied. The characters are passed exactly as they were in the XML document except that they will be encoded in UTF-8 or UTF-16. Line boundaries are not normalized. Note that a byte order mark character is not passed to the default handler. There are no guarantees about how characters are divided between calls to the default handler: for example, a comment might be split between multiple calls. */ typedef void (XMLCALL *XML_DefaultHandler) (void *userData, const XML_Char *s, int len); /* This is called for the start of the DOCTYPE declaration, before any DTD or internal subset is parsed. */ typedef void (XMLCALL *XML_StartDoctypeDeclHandler) ( void *userData, const XML_Char *doctypeName, const XML_Char *sysid, const XML_Char *pubid, int has_internal_subset); /* This is called for the start of the DOCTYPE declaration when the closing > is encountered, but after processing any external subset. */ typedef void (XMLCALL *XML_EndDoctypeDeclHandler)(void *userData); /* This is called for entity declarations. The is_parameter_entity argument will be non-zero if the entity is a parameter entity, zero otherwise. For internal entities (), value will be non-NULL and systemId, publicID, and notationName will be NULL. The value string is NOT nul-terminated; the length is provided in the value_length argument. Since it is legal to have zero-length values, do not use this argument to test for internal entities. For external entities, value will be NULL and systemId will be non-NULL. The publicId argument will be NULL unless a public identifier was provided. The notationName argument will have a non-NULL value only for unparsed entity declarations. Note that is_parameter_entity can't be changed to XML_Bool, since that would break binary compatibility. */ typedef void (XMLCALL *XML_EntityDeclHandler) ( void *userData, const XML_Char *entityName, int is_parameter_entity, const XML_Char *value, int value_length, const XML_Char *base, const XML_Char *systemId, const XML_Char *publicId, const XML_Char *notationName); XMLPARSEAPI(void) XML_SetEntityDeclHandler(XML_Parser parser, XML_EntityDeclHandler handler); /* OBSOLETE -- OBSOLETE -- OBSOLETE This handler has been superseded by the EntityDeclHandler above. It is provided here for backward compatibility. This is called for a declaration of an unparsed (NDATA) entity. The base argument is whatever was set by XML_SetBase. The entityName, systemId and notationName arguments will never be NULL. The other arguments may be. */ typedef void (XMLCALL *XML_UnparsedEntityDeclHandler) ( void *userData, const XML_Char *entityName, const XML_Char *base, const XML_Char *systemId, const XML_Char *publicId, const XML_Char *notationName); /* This is called for a declaration of notation. The base argument is whatever was set by XML_SetBase. The notationName will never be NULL. The other arguments can be. */ typedef void (XMLCALL *XML_NotationDeclHandler) ( void *userData, const XML_Char *notationName, const XML_Char *base, const XML_Char *systemId, const XML_Char *publicId); /* When namespace processing is enabled, these are called once for each namespace declaration. The call to the start and end element handlers occur between the calls to the start and end namespace declaration handlers. For an xmlns attribute, prefix will be NULL. For an xmlns="" attribute, uri will be NULL. */ typedef void (XMLCALL *XML_StartNamespaceDeclHandler) ( void *userData, const XML_Char *prefix, const XML_Char *uri); typedef void (XMLCALL *XML_EndNamespaceDeclHandler) ( void *userData, const XML_Char *prefix); /* This is called if the document is not standalone, that is, it has an external subset or a reference to a parameter entity, but does not have standalone="yes". If this handler returns XML_STATUS_ERROR, then processing will not continue, and the parser will return a XML_ERROR_NOT_STANDALONE error. If parameter entity parsing is enabled, then in addition to the conditions above this handler will only be called if the referenced entity was actually read. */ typedef int (XMLCALL *XML_NotStandaloneHandler) (void *userData); /* This is called for a reference to an external parsed general entity. The referenced entity is not automatically parsed. The application can parse it immediately or later using XML_ExternalEntityParserCreate. The parser argument is the parser parsing the entity containing the reference; it can be passed as the parser argument to XML_ExternalEntityParserCreate. The systemId argument is the system identifier as specified in the entity declaration; it will not be NULL. The base argument is the system identifier that should be used as the base for resolving systemId if systemId was relative; this is set by XML_SetBase; it may be NULL. The publicId argument is the public identifier as specified in the entity declaration, or NULL if none was specified; the whitespace in the public identifier will have been normalized as required by the XML spec. The context argument specifies the parsing context in the format expected by the context argument to XML_ExternalEntityParserCreate; context is valid only until the handler returns, so if the referenced entity is to be parsed later, it must be copied. context is NULL only when the entity is a parameter entity. The handler should return XML_STATUS_ERROR if processing should not continue because of a fatal error in the handling of the external entity. In this case the calling parser will return an XML_ERROR_EXTERNAL_ENTITY_HANDLING error. Note that unlike other handlers the first argument is the parser, not userData. */ typedef int (XMLCALL *XML_ExternalEntityRefHandler) ( XML_Parser parser, const XML_Char *context, const XML_Char *base, const XML_Char *systemId, const XML_Char *publicId); /* This is called in two situations: 1) An entity reference is encountered for which no declaration has been read *and* this is not an error. 2) An internal entity reference is read, but not expanded, because XML_SetDefaultHandler has been called. Note: skipped parameter entities in declarations and skipped general entities in attribute values cannot be reported, because the event would be out of sync with the reporting of the declarations or attribute values */ typedef void (XMLCALL *XML_SkippedEntityHandler) ( void *userData, const XML_Char *entityName, int is_parameter_entity); /* This structure is filled in by the XML_UnknownEncodingHandler to provide information to the parser about encodings that are unknown to the parser. The map[b] member gives information about byte sequences whose first byte is b. If map[b] is c where c is >= 0, then b by itself encodes the Unicode scalar value c. If map[b] is -1, then the byte sequence is malformed. If map[b] is -n, where n >= 2, then b is the first byte of an n-byte sequence that encodes a single Unicode scalar value. The data member will be passed as the first argument to the convert function. The convert function is used to convert multibyte sequences; s will point to a n-byte sequence where map[(unsigned char)*s] == -n. The convert function must return the Unicode scalar value represented by this byte sequence or -1 if the byte sequence is malformed. The convert function may be NULL if the encoding is a single-byte encoding, that is if map[b] >= -1 for all bytes b. When the parser is finished with the encoding, then if release is not NULL, it will call release passing it the data member; once release has been called, the convert function will not be called again. Expat places certain restrictions on the encodings that are supported using this mechanism. 1. Every ASCII character that can appear in a well-formed XML document, other than the characters $@\^`{}~ must be represented by a single byte, and that byte must be the same byte that represents that character in ASCII. 2. No character may require more than 4 bytes to encode. 3. All characters encoded must have Unicode scalar values <= 0xFFFF, (i.e., characters that would be encoded by surrogates in UTF-16 are not allowed). Note that this restriction doesn't apply to the built-in support for UTF-8 and UTF-16. 4. No Unicode character may be encoded by more than one distinct sequence of bytes. */ typedef struct { int map[256]; void *data; int (XMLCALL *convert)(void *data, const char *s); void (XMLCALL *release)(void *data); } XML_Encoding; /* This is called for an encoding that is unknown to the parser. The encodingHandlerData argument is that which was passed as the second argument to XML_SetUnknownEncodingHandler. The name argument gives the name of the encoding as specified in the encoding declaration. If the callback can provide information about the encoding, it must fill in the XML_Encoding structure, and return XML_STATUS_OK. Otherwise it must return XML_STATUS_ERROR. If info does not describe a suitable encoding, then the parser will return an XML_UNKNOWN_ENCODING error. */ typedef int (XMLCALL *XML_UnknownEncodingHandler) ( void *encodingHandlerData, const XML_Char *name, XML_Encoding *info); XMLPARSEAPI(void) XML_SetElementHandler(XML_Parser parser, XML_StartElementHandler start, XML_EndElementHandler end); XMLPARSEAPI(void) XML_SetStartElementHandler(XML_Parser parser, XML_StartElementHandler handler); XMLPARSEAPI(void) XML_SetEndElementHandler(XML_Parser parser, XML_EndElementHandler handler); XMLPARSEAPI(void) XML_SetCharacterDataHandler(XML_Parser parser, XML_CharacterDataHandler handler); XMLPARSEAPI(void) XML_SetProcessingInstructionHandler(XML_Parser parser, XML_ProcessingInstructionHandler handler); XMLPARSEAPI(void) XML_SetCommentHandler(XML_Parser parser, XML_CommentHandler handler); XMLPARSEAPI(void) XML_SetCdataSectionHandler(XML_Parser parser, XML_StartCdataSectionHandler start, XML_EndCdataSectionHandler end); XMLPARSEAPI(void) XML_SetStartCdataSectionHandler(XML_Parser parser, XML_StartCdataSectionHandler start); XMLPARSEAPI(void) XML_SetEndCdataSectionHandler(XML_Parser parser, XML_EndCdataSectionHandler end); /* This sets the default handler and also inhibits expansion of internal entities. These entity references will be passed to the default handler, or to the skipped entity handler, if one is set. */ XMLPARSEAPI(void) XML_SetDefaultHandler(XML_Parser parser, XML_DefaultHandler handler); /* This sets the default handler but does not inhibit expansion of internal entities. The entity reference will not be passed to the default handler. */ XMLPARSEAPI(void) XML_SetDefaultHandlerExpand(XML_Parser parser, XML_DefaultHandler handler); XMLPARSEAPI(void) XML_SetDoctypeDeclHandler(XML_Parser parser, XML_StartDoctypeDeclHandler start, XML_EndDoctypeDeclHandler end); XMLPARSEAPI(void) XML_SetStartDoctypeDeclHandler(XML_Parser parser, XML_StartDoctypeDeclHandler start); XMLPARSEAPI(void) XML_SetEndDoctypeDeclHandler(XML_Parser parser, XML_EndDoctypeDeclHandler end); XMLPARSEAPI(void) XML_SetUnparsedEntityDeclHandler(XML_Parser parser, XML_UnparsedEntityDeclHandler handler); XMLPARSEAPI(void) XML_SetNotationDeclHandler(XML_Parser parser, XML_NotationDeclHandler handler); XMLPARSEAPI(void) XML_SetNamespaceDeclHandler(XML_Parser parser, XML_StartNamespaceDeclHandler start, XML_EndNamespaceDeclHandler end); XMLPARSEAPI(void) XML_SetStartNamespaceDeclHandler(XML_Parser parser, XML_StartNamespaceDeclHandler start); XMLPARSEAPI(void) XML_SetEndNamespaceDeclHandler(XML_Parser parser, XML_EndNamespaceDeclHandler end); XMLPARSEAPI(void) XML_SetNotStandaloneHandler(XML_Parser parser, XML_NotStandaloneHandler handler); XMLPARSEAPI(void) XML_SetExternalEntityRefHandler(XML_Parser parser, XML_ExternalEntityRefHandler handler); /* If a non-NULL value for arg is specified here, then it will be passed as the first argument to the external entity ref handler instead of the parser object. */ XMLPARSEAPI(void) XML_SetExternalEntityRefHandlerArg(XML_Parser parser, void *arg); XMLPARSEAPI(void) XML_SetSkippedEntityHandler(XML_Parser parser, XML_SkippedEntityHandler handler); XMLPARSEAPI(void) XML_SetUnknownEncodingHandler(XML_Parser parser, XML_UnknownEncodingHandler handler, void *encodingHandlerData); /* This can be called within a handler for a start element, end element, processing instruction or character data. It causes the corresponding markup to be passed to the default handler. */ XMLPARSEAPI(void) XML_DefaultCurrent(XML_Parser parser); /* If do_nst is non-zero, and namespace processing is in effect, and a name has a prefix (i.e. an explicit namespace qualifier) then that name is returned as a triplet in a single string separated by the separator character specified when the parser was created: URI + sep + local_name + sep + prefix. If do_nst is zero, then namespace information is returned in the default manner (URI + sep + local_name) whether or not the name has a prefix. Note: Calling XML_SetReturnNSTriplet after XML_Parse or XML_ParseBuffer has no effect. */ XMLPARSEAPI(void) XML_SetReturnNSTriplet(XML_Parser parser, int do_nst); /* This value is passed as the userData argument to callbacks. */ XMLPARSEAPI(void) XML_SetUserData(XML_Parser parser, void *userData); /* Returns the last value set by XML_SetUserData or NULL. */ #define XML_GetUserData(parser) (*(void **)(parser)) /* This is equivalent to supplying an encoding argument to XML_ParserCreate. On success XML_SetEncoding returns non-zero, zero otherwise. Note: Calling XML_SetEncoding after XML_Parse or XML_ParseBuffer has no effect and returns XML_STATUS_ERROR. */ XMLPARSEAPI(enum XML_Status) XML_SetEncoding(XML_Parser parser, const XML_Char *encoding); /* If this function is called, then the parser will be passed as the first argument to callbacks instead of userData. The userData will still be accessible using XML_GetUserData. */ XMLPARSEAPI(void) XML_UseParserAsHandlerArg(XML_Parser parser); /* If useDTD == XML_TRUE is passed to this function, then the parser will assume that there is an external subset, even if none is specified in the document. In such a case the parser will call the externalEntityRefHandler with a value of NULL for the systemId argument (the publicId and context arguments will be NULL as well). Note: For the purpose of checking WFC: Entity Declared, passing useDTD == XML_TRUE will make the parser behave as if the document had a DTD with an external subset. Note: If this function is called, then this must be done before the first call to XML_Parse or XML_ParseBuffer, since it will have no effect after that. Returns XML_ERROR_CANT_CHANGE_FEATURE_ONCE_PARSING. Note: If the document does not have a DOCTYPE declaration at all, then startDoctypeDeclHandler and endDoctypeDeclHandler will not be called, despite an external subset being parsed. Note: If XML_DTD is not defined when Expat is compiled, returns XML_ERROR_FEATURE_REQUIRES_XML_DTD. */ XMLPARSEAPI(enum XML_Error) XML_UseForeignDTD(XML_Parser parser, XML_Bool useDTD); /* Sets the base to be used for resolving relative URIs in system identifiers in declarations. Resolving relative identifiers is left to the application: this value will be passed through as the base argument to the XML_ExternalEntityRefHandler, XML_NotationDeclHandler and XML_UnparsedEntityDeclHandler. The base argument will be copied. Returns XML_STATUS_ERROR if out of memory, XML_STATUS_OK otherwise. */ XMLPARSEAPI(enum XML_Status) XML_SetBase(XML_Parser parser, const XML_Char *base); XMLPARSEAPI(const XML_Char *) XML_GetBase(XML_Parser parser); /* Returns the number of the attribute/value pairs passed in last call to the XML_StartElementHandler that were specified in the start-tag rather than defaulted. Each attribute/value pair counts as 2; thus this correspondds to an index into the atts array passed to the XML_StartElementHandler. */ XMLPARSEAPI(int) XML_GetSpecifiedAttributeCount(XML_Parser parser); /* Returns the index of the ID attribute passed in the last call to XML_StartElementHandler, or -1 if there is no ID attribute. Each attribute/value pair counts as 2; thus this correspondds to an index into the atts array passed to the XML_StartElementHandler. */ XMLPARSEAPI(int) XML_GetIdAttributeIndex(XML_Parser parser); #ifdef XML_ATTR_INFO /* Source file byte offsets for the start and end of attribute names and values. The value indices are exclusive of surrounding quotes; thus in a UTF-8 source file an attribute value of "blah" will yield: info->valueEnd - info->valueStart = 4 bytes. */ typedef struct { XML_Index nameStart; /* Offset to beginning of the attribute name. */ XML_Index nameEnd; /* Offset after the attribute name's last byte. */ XML_Index valueStart; /* Offset to beginning of the attribute value. */ XML_Index valueEnd; /* Offset after the attribute value's last byte. */ } XML_AttrInfo; /* Returns an array of XML_AttrInfo structures for the attribute/value pairs passed in last call to the XML_StartElementHandler that were specified in the start-tag rather than defaulted. Each attribute/value pair counts as 1; thus the number of entries in the array is XML_GetSpecifiedAttributeCount(parser) / 2. */ XMLPARSEAPI(const XML_AttrInfo *) XML_GetAttributeInfo(XML_Parser parser); #endif /* Parses some input. Returns XML_STATUS_ERROR if a fatal error is detected. The last call to XML_Parse must have isFinal true; len may be zero for this call (or any other). Though the return values for these functions has always been described as a Boolean value, the implementation, at least for the 1.95.x series, has always returned exactly one of the XML_Status values. */ XMLPARSEAPI(enum XML_Status) XML_Parse(XML_Parser parser, const char *s, int len, int isFinal); XMLPARSEAPI(void *) XML_GetBuffer(XML_Parser parser, int len); XMLPARSEAPI(enum XML_Status) XML_ParseBuffer(XML_Parser parser, int len, int isFinal); /* Stops parsing, causing XML_Parse() or XML_ParseBuffer() to return. Must be called from within a call-back handler, except when aborting (resumable = 0) an already suspended parser. Some call-backs may still follow because they would otherwise get lost. Examples: - endElementHandler() for empty elements when stopped in startElementHandler(), - endNameSpaceDeclHandler() when stopped in endElementHandler(), and possibly others. Can be called from most handlers, including DTD related call-backs, except when parsing an external parameter entity and resumable != 0. Returns XML_STATUS_OK when successful, XML_STATUS_ERROR otherwise. Possible error codes: - XML_ERROR_SUSPENDED: when suspending an already suspended parser. - XML_ERROR_FINISHED: when the parser has already finished. - XML_ERROR_SUSPEND_PE: when suspending while parsing an external PE. When resumable != 0 (true) then parsing is suspended, that is, XML_Parse() and XML_ParseBuffer() return XML_STATUS_SUSPENDED. Otherwise, parsing is aborted, that is, XML_Parse() and XML_ParseBuffer() return XML_STATUS_ERROR with error code XML_ERROR_ABORTED. *Note*: This will be applied to the current parser instance only, that is, if there is a parent parser then it will continue parsing when the externalEntityRefHandler() returns. It is up to the implementation of the externalEntityRefHandler() to call XML_StopParser() on the parent parser (recursively), if one wants to stop parsing altogether. When suspended, parsing can be resumed by calling XML_ResumeParser(). */ XMLPARSEAPI(enum XML_Status) XML_StopParser(XML_Parser parser, XML_Bool resumable); /* Resumes parsing after it has been suspended with XML_StopParser(). Must not be called from within a handler call-back. Returns same status codes as XML_Parse() or XML_ParseBuffer(). Additional error code XML_ERROR_NOT_SUSPENDED possible. *Note*: This must be called on the most deeply nested child parser instance first, and on its parent parser only after the child parser has finished, to be applied recursively until the document entity's parser is restarted. That is, the parent parser will not resume by itself and it is up to the application to call XML_ResumeParser() on it at the appropriate moment. */ XMLPARSEAPI(enum XML_Status) XML_ResumeParser(XML_Parser parser); enum XML_Parsing { XML_INITIALIZED, XML_PARSING, XML_FINISHED, XML_SUSPENDED }; typedef struct { enum XML_Parsing parsing; XML_Bool finalBuffer; } XML_ParsingStatus; /* Returns status of parser with respect to being initialized, parsing, finished, or suspended and processing the final buffer. XXX XML_Parse() and XML_ParseBuffer() should return XML_ParsingStatus, XXX with XML_FINISHED_OK or XML_FINISHED_ERROR replacing XML_FINISHED */ XMLPARSEAPI(void) XML_GetParsingStatus(XML_Parser parser, XML_ParsingStatus *status); /* Creates an XML_Parser object that can parse an external general entity; context is a '\0'-terminated string specifying the parse context; encoding is a '\0'-terminated string giving the name of the externally specified encoding, or NULL if there is no externally specified encoding. The context string consists of a sequence of tokens separated by formfeeds (\f); a token consisting of a name specifies that the general entity of the name is open; a token of the form prefix=uri specifies the namespace for a particular prefix; a token of the form =uri specifies the default namespace. This can be called at any point after the first call to an ExternalEntityRefHandler so longer as the parser has not yet been freed. The new parser is completely independent and may safely be used in a separate thread. The handlers and userData are initialized from the parser argument. Returns NULL if out of memory. Otherwise returns a new XML_Parser object. */ XMLPARSEAPI(XML_Parser) XML_ExternalEntityParserCreate(XML_Parser parser, const XML_Char *context, const XML_Char *encoding); enum XML_ParamEntityParsing { XML_PARAM_ENTITY_PARSING_NEVER, XML_PARAM_ENTITY_PARSING_UNLESS_STANDALONE, XML_PARAM_ENTITY_PARSING_ALWAYS }; /* Controls parsing of parameter entities (including the external DTD subset). If parsing of parameter entities is enabled, then references to external parameter entities (including the external DTD subset) will be passed to the handler set with XML_SetExternalEntityRefHandler. The context passed will be 0. Unlike external general entities, external parameter entities can only be parsed synchronously. If the external parameter entity is to be parsed, it must be parsed during the call to the external entity ref handler: the complete sequence of XML_ExternalEntityParserCreate, XML_Parse/XML_ParseBuffer and XML_ParserFree calls must be made during this call. After XML_ExternalEntityParserCreate has been called to create the parser for the external parameter entity (context must be 0 for this call), it is illegal to make any calls on the old parser until XML_ParserFree has been called on the newly created parser. If the library has been compiled without support for parameter entity parsing (ie without XML_DTD being defined), then XML_SetParamEntityParsing will return 0 if parsing of parameter entities is requested; otherwise it will return non-zero. Note: If XML_SetParamEntityParsing is called after XML_Parse or XML_ParseBuffer, then it has no effect and will always return 0. */ XMLPARSEAPI(int) XML_SetParamEntityParsing(XML_Parser parser, enum XML_ParamEntityParsing parsing); /* Sets the hash salt to use for internal hash calculations. Helps in preventing DoS attacks based on predicting hash function behavior. This must be called before parsing is started. Returns 1 if successful, 0 when called after parsing has started. */ XMLPARSEAPI(int) XML_SetHashSalt(XML_Parser parser, unsigned long hash_salt); /* If XML_Parse or XML_ParseBuffer have returned XML_STATUS_ERROR, then XML_GetErrorCode returns information about the error. */ XMLPARSEAPI(enum XML_Error) XML_GetErrorCode(XML_Parser parser); /* These functions return information about the current parse location. They may be called from any callback called to report some parse event; in this case the location is the location of the first of the sequence of characters that generated the event. When called from callbacks generated by declarations in the document prologue, the location identified isn't as neatly defined, but will be within the relevant markup. When called outside of the callback functions, the position indicated will be just past the last parse event (regardless of whether there was an associated callback). They may also be called after returning from a call to XML_Parse or XML_ParseBuffer. If the return value is XML_STATUS_ERROR then the location is the location of the character at which the error was detected; otherwise the location is the location of the last parse event, as described above. */ XMLPARSEAPI(XML_Size) XML_GetCurrentLineNumber(XML_Parser parser); XMLPARSEAPI(XML_Size) XML_GetCurrentColumnNumber(XML_Parser parser); XMLPARSEAPI(XML_Index) XML_GetCurrentByteIndex(XML_Parser parser); /* Return the number of bytes in the current event. Returns 0 if the event is in an internal entity. */ XMLPARSEAPI(int) XML_GetCurrentByteCount(XML_Parser parser); /* If XML_CONTEXT_BYTES is defined, returns the input buffer, sets the integer pointed to by offset to the offset within this buffer of the current parse position, and sets the integer pointed to by size to the size of this buffer (the number of input bytes). Otherwise returns a NULL pointer. Also returns a NULL pointer if a parse isn't active. NOTE: The character pointer returned should not be used outside the handler that makes the call. */ XMLPARSEAPI(const char *) XML_GetInputContext(XML_Parser parser, int *offset, int *size); /* For backwards compatibility with previous versions. */ #define XML_GetErrorLineNumber XML_GetCurrentLineNumber #define XML_GetErrorColumnNumber XML_GetCurrentColumnNumber #define XML_GetErrorByteIndex XML_GetCurrentByteIndex /* Frees the content model passed to the element declaration handler */ XMLPARSEAPI(void) XML_FreeContentModel(XML_Parser parser, XML_Content *model); /* Exposing the memory handling functions used in Expat */ XMLPARSEAPI(void *) XML_MemMalloc(XML_Parser parser, size_t size); XMLPARSEAPI(void *) XML_MemRealloc(XML_Parser parser, void *ptr, size_t size); XMLPARSEAPI(void) XML_MemFree(XML_Parser parser, void *ptr); /* Frees memory used by the parser. */ XMLPARSEAPI(void) XML_ParserFree(XML_Parser parser); /* Returns a string describing the error. */ XMLPARSEAPI(const XML_LChar *) XML_ErrorString(enum XML_Error code); /* Return a string containing the version number of this expat */ XMLPARSEAPI(const XML_LChar *) XML_ExpatVersion(void); typedef struct { int major; int minor; int micro; } XML_Expat_Version; /* Return an XML_Expat_Version structure containing numeric version number information for this version of expat. */ XMLPARSEAPI(XML_Expat_Version) XML_ExpatVersionInfo(void); /* Added in Expat 1.95.5. */ enum XML_FeatureEnum { XML_FEATURE_END = 0, XML_FEATURE_UNICODE, XML_FEATURE_UNICODE_WCHAR_T, XML_FEATURE_DTD, XML_FEATURE_CONTEXT_BYTES, XML_FEATURE_MIN_SIZE, XML_FEATURE_SIZEOF_XML_CHAR, XML_FEATURE_SIZEOF_XML_LCHAR, XML_FEATURE_NS, XML_FEATURE_LARGE_SIZE, XML_FEATURE_ATTR_INFO /* Additional features must be added to the end of this enum. */ }; typedef struct { enum XML_FeatureEnum feature; const XML_LChar *name; long int value; } XML_Feature; XMLPARSEAPI(const XML_Feature *) XML_GetFeatureList(void); /* Expat follows the GNU/Linux convention of odd number minor version for beta/development releases and even number minor version for stable releases. Micro is bumped with each release, and set to 0 with each change to major or minor version. */ #define XML_MAJOR_VERSION 2 #define XML_MINOR_VERSION 1 #define XML_MICRO_VERSION 1 #ifdef __cplusplus } #endif #endif /* not Expat_INCLUDED */ suite3270-4.1/Common/libexpat/expat_external.h000066400000000000000000000066271413735575200213060ustar00rootroot00000000000000/* Copyright (c) 1998, 1999, 2000 Thai Open Source Software Center Ltd See the file COPYING for copying permission. */ #ifndef Expat_External_INCLUDED #define Expat_External_INCLUDED 1 /* External API definitions */ #if defined(_MSC_EXTENSIONS) && !defined(__BEOS__) && !defined(__CYGWIN__) #define XML_USE_MSC_EXTENSIONS 1 #endif /* Expat tries very hard to make the API boundary very specifically defined. There are two macros defined to control this boundary; each of these can be defined before including this header to achieve some different behavior, but doing so it not recommended or tested frequently. XMLCALL - The calling convention to use for all calls across the "library boundary." This will default to cdecl, and try really hard to tell the compiler that's what we want. XMLIMPORT - Whatever magic is needed to note that a function is to be imported from a dynamically loaded library (.dll, .so, or .sl, depending on your platform). The XMLCALL macro was added in Expat 1.95.7. The only one which is expected to be directly useful in client code is XMLCALL. Note that on at least some Unix versions, the Expat library must be compiled with the cdecl calling convention as the default since system headers may assume the cdecl convention. */ #ifndef XMLCALL #if defined(_MSC_VER) #define XMLCALL __cdecl #elif defined(__GNUC__) && defined(__i386) && !defined(__INTEL_COMPILER) #define XMLCALL __attribute__((cdecl)) #else /* For any platform which uses this definition and supports more than one calling convention, we need to extend this definition to declare the convention used on that platform, if it's possible to do so. If this is the case for your platform, please file a bug report with information on how to identify your platform via the C pre-processor and how to specify the same calling convention as the platform's malloc() implementation. */ #define XMLCALL #endif #endif /* not defined XMLCALL */ #if !defined(XML_STATIC) && !defined(XMLIMPORT) #ifndef XML_BUILDING_EXPAT /* using Expat from an application */ #ifdef XML_USE_MSC_EXTENSIONS #define XMLIMPORT __declspec(dllimport) #endif #endif #endif /* not defined XML_STATIC */ /* If we didn't define it above, define it away: */ #ifndef XMLIMPORT #define XMLIMPORT #endif #define XMLPARSEAPI(type) XMLIMPORT type XMLCALL #ifdef __cplusplus extern "C" { #endif #ifdef XML_UNICODE_WCHAR_T #define XML_UNICODE #endif #ifdef XML_UNICODE /* Information is UTF-16 encoded. */ #ifdef XML_UNICODE_WCHAR_T typedef wchar_t XML_Char; typedef wchar_t XML_LChar; #else typedef unsigned short XML_Char; typedef char XML_LChar; #endif /* XML_UNICODE_WCHAR_T */ #else /* Information is UTF-8 encoded. */ typedef char XML_Char; typedef char XML_LChar; #endif /* XML_UNICODE */ #ifdef XML_LARGE_SIZE /* Use large integers for file/stream positions. */ #if defined(XML_USE_MSC_EXTENSIONS) && _MSC_VER < 1400 typedef __int64 XML_Index; typedef unsigned __int64 XML_Size; #else typedef long long XML_Index; typedef unsigned long long XML_Size; #endif #else typedef long XML_Index; typedef unsigned long XML_Size; #endif /* XML_LARGE_SIZE */ #ifdef __cplusplus } #endif #endif /* not Expat_External_INCLUDED */ suite3270-4.1/Common/libexpat/expat_static.dsp000066400000000000000000000102361413735575200213010ustar00rootroot00000000000000# Microsoft Developer Studio Project File - Name="expat_static" - Package Owner=<4> # Microsoft Developer Studio Generated Build File, Format Version 6.00 # ** DO NOT EDIT ** # TARGTYPE "Win32 (x86) Static Library" 0x0104 CFG=expat_static - Win32 Debug !MESSAGE This is not a valid makefile. To build this project using NMAKE, !MESSAGE use the Export Makefile command and run !MESSAGE !MESSAGE NMAKE /f "expat_static.mak". !MESSAGE !MESSAGE You can specify a configuration when running NMAKE !MESSAGE by defining the macro CFG on the command line. For example: !MESSAGE !MESSAGE NMAKE /f "expat_static.mak" CFG="expat_static - Win32 Debug" !MESSAGE !MESSAGE Possible choices for configuration are: !MESSAGE !MESSAGE "expat_static - Win32 Release" (based on "Win32 (x86) Static Library") !MESSAGE "expat_static - Win32 Debug" (based on "Win32 (x86) Static Library") !MESSAGE # Begin Project # PROP AllowPerConfigDependencies 0 # PROP Scc_ProjName "" # PROP Scc_LocalPath "" CPP=cl.exe RSC=rc.exe !IF "$(CFG)" == "expat_static - Win32 Release" # PROP BASE Use_MFC 0 # PROP BASE Use_Debug_Libraries 0 # PROP BASE Output_Dir "expat_static___Win32_Release" # PROP BASE Intermediate_Dir "expat_static___Win32_Release" # PROP BASE Target_Dir "" # PROP Use_MFC 0 # PROP Use_Debug_Libraries 0 # PROP Output_Dir "..\win32\bin\Release" # PROP Intermediate_Dir "..\win32\tmp\Release_static" # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /YX /FD /c # ADD CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "_WINDOWS" /D "NDEBUG" /D "_MBCS" /D "_LIB" /D "COMPILED_FROM_DSP" /FD /c # SUBTRACT CPP /YX # ADD BASE RSC /l 0x1009 /d "NDEBUG" # ADD RSC /l 0x409 /d "NDEBUG" BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo LIB32=link.exe -lib # ADD BASE LIB32 /nologo # ADD LIB32 /nologo /out:"..\win32\bin\Release\libexpatMT.lib" !ELSEIF "$(CFG)" == "expat_static - Win32 Debug" # PROP BASE Use_MFC 0 # PROP BASE Use_Debug_Libraries 1 # PROP BASE Output_Dir "expat_static___Win32_Debug" # PROP BASE Intermediate_Dir "expat_static___Win32_Debug" # PROP BASE Target_Dir "" # PROP Use_MFC 0 # PROP Use_Debug_Libraries 1 # PROP Output_Dir "..\win32\bin\Debug" # PROP Intermediate_Dir "..\win32\tmp\Debug_static" # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c # ADD CPP /nologo /MTd /W3 /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "COMPILED_FROM_DSP" /D "_MBCS" /D "_LIB" /FR /FD /GZ /c # SUBTRACT CPP /YX # ADD BASE RSC /l 0x1009 /d "_DEBUG" # ADD RSC /l 0x409 /d "_DEBUG" BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo LIB32=link.exe -lib # ADD BASE LIB32 /nologo # ADD LIB32 /nologo /out:"..\win32\bin\Debug\libexpatMT.lib" !ENDIF # Begin Target # Name "expat_static - Win32 Release" # Name "expat_static - Win32 Debug" # Begin Group "Source Files" # PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" # Begin Source File SOURCE=.\xmlparse.c # End Source File # Begin Source File SOURCE=.\xmlrole.c # End Source File # Begin Source File SOURCE=.\xmltok.c # End Source File # Begin Source File SOURCE=.\xmltok_impl.c # End Source File # Begin Source File SOURCE=.\xmltok_ns.c # End Source File # End Group # Begin Group "Header Files" # PROP Default_Filter "h;hpp;hxx;hm;inl" # Begin Source File SOURCE=.\ascii.h # End Source File # Begin Source File SOURCE=.\asciitab.h # End Source File # Begin Source File SOURCE=.\expat.h # End Source File # Begin Source File SOURCE=.\expat_external.h # End Source File # Begin Source File SOURCE=.\iasciitab.h # End Source File # Begin Source File SOURCE=.\internal.h # End Source File # Begin Source File SOURCE=.\latin1tab.h # End Source File # Begin Source File SOURCE=.\nametab.h # End Source File # Begin Source File SOURCE=.\utf8tab.h # End Source File # Begin Source File SOURCE=.\xmlrole.h # End Source File # Begin Source File SOURCE=.\xmltok.h # End Source File # Begin Source File SOURCE=.\xmltok_impl.h # End Source File # End Group # End Target # End Project suite3270-4.1/Common/libexpat/expatw.dsp000066400000000000000000000115531413735575200201240ustar00rootroot00000000000000# Microsoft Developer Studio Project File - Name="expatw" - Package Owner=<4> # Microsoft Developer Studio Generated Build File, Format Version 6.00 # ** DO NOT EDIT ** # TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102 CFG=expatw - Win32 Debug !MESSAGE This is not a valid makefile. To build this project using NMAKE, !MESSAGE use the Export Makefile command and run !MESSAGE !MESSAGE NMAKE /f "expatw.mak". !MESSAGE !MESSAGE You can specify a configuration when running NMAKE !MESSAGE by defining the macro CFG on the command line. For example: !MESSAGE !MESSAGE NMAKE /f "expatw.mak" CFG="expatw - Win32 Debug" !MESSAGE !MESSAGE Possible choices for configuration are: !MESSAGE !MESSAGE "expatw - Win32 Release" (based on "Win32 (x86) Dynamic-Link Library") !MESSAGE "expatw - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library") !MESSAGE # Begin Project # PROP AllowPerConfigDependencies 0 # PROP Scc_ProjName "" # PROP Scc_LocalPath "" CPP=cl.exe MTL=midl.exe RSC=rc.exe !IF "$(CFG)" == "expatw - Win32 Release" # PROP BASE Use_MFC 0 # PROP BASE Use_Debug_Libraries 0 # PROP BASE Output_Dir "Release" # PROP BASE Intermediate_Dir "Release" # PROP BASE Target_Dir "" # PROP Use_MFC 0 # PROP Use_Debug_Libraries 0 # PROP Output_Dir "..\win32\bin\Release" # PROP Intermediate_Dir "..\win32\tmp\Release-w" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "EXPAT_EXPORTS" /Yu"stdafx.h" /FD /c # ADD CPP /nologo /MT /W3 /GX /O2 /D "NDEBUG" /D "COMPILED_FROM_DSP" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "XML_UNICODE_WCHAR_T" /FD /c # SUBTRACT CPP /YX /Yc /Yu # ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32 # ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32 # ADD BASE RSC /l 0x409 /d "NDEBUG" # ADD RSC /l 0x409 /d "NDEBUG" BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 /nologo /dll /machine:I386 # ADD LINK32 /nologo /dll /pdb:none /machine:I386 /out:"..\win32\bin\Release\libexpatw.dll" !ELSEIF "$(CFG)" == "expatw - Win32 Debug" # PROP BASE Use_MFC 0 # PROP BASE Use_Debug_Libraries 1 # PROP BASE Output_Dir "Debug" # PROP BASE Intermediate_Dir "Debug" # PROP BASE Target_Dir "" # PROP Use_MFC 0 # PROP Use_Debug_Libraries 1 # PROP Output_Dir "..\win32\bin\Debug" # PROP Intermediate_Dir "..\win32\tmp\Debug-w" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "EXPAT_EXPORTS" /Yu"stdafx.h" /FD /GZ /c # ADD CPP /nologo /MTd /W3 /GX /ZI /Od /D "_DEBUG" /D "COMPILED_FROM_DSP" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "XML_UNICODE_WCHAR_T" /FR /FD /GZ /c # ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32 # ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32 # ADD BASE RSC /l 0x409 /d "_DEBUG" # ADD RSC /l 0x409 /d "_DEBUG" BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 /nologo /dll /debug /machine:I386 /pdbtype:sept # ADD LINK32 /nologo /dll /pdb:none /debug /machine:I386 /out:"..\win32\bin\Debug\libexpatw.dll" !ENDIF # Begin Target # Name "expatw - Win32 Release" # Name "expatw - Win32 Debug" # Begin Group "Source Files" # PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" # Begin Source File SOURCE=.\libexpatw.def # End Source File # Begin Source File SOURCE=.\xmlparse.c !IF "$(CFG)" == "expatw - Win32 Release" !ELSEIF "$(CFG)" == "expatw - Win32 Debug" # ADD CPP /GX- /Od !ENDIF # End Source File # Begin Source File SOURCE=.\xmlrole.c # End Source File # Begin Source File SOURCE=.\xmltok.c # End Source File # Begin Source File SOURCE=.\xmltok_impl.c # End Source File # Begin Source File SOURCE=.\xmltok_ns.c # End Source File # End Group # Begin Group "Header Files" # PROP Default_Filter "h;hpp;hxx;hm;inl" # Begin Source File SOURCE=.\ascii.h # End Source File # Begin Source File SOURCE=.\asciitab.h # End Source File # Begin Source File SOURCE=.\expat.h # End Source File # Begin Source File SOURCE=.\expat_external.h # End Source File # Begin Source File SOURCE=.\iasciitab.h # End Source File # Begin Source File SOURCE=.\internal.h # End Source File # Begin Source File SOURCE=.\latin1tab.h # End Source File # Begin Source File SOURCE=.\nametab.h # End Source File # Begin Source File SOURCE=.\utf8tab.h # End Source File # Begin Source File SOURCE=.\xmlrole.h # End Source File # Begin Source File SOURCE=.\xmltok.h # End Source File # Begin Source File SOURCE=.\xmltok_impl.h # End Source File # End Group # Begin Group "Resource Files" # PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe" # End Group # End Target # End Project suite3270-4.1/Common/libexpat/expatw_static.dsp000066400000000000000000000103451413735575200214710ustar00rootroot00000000000000# Microsoft Developer Studio Project File - Name="expatw_static" - Package Owner=<4> # Microsoft Developer Studio Generated Build File, Format Version 6.00 # ** DO NOT EDIT ** # TARGTYPE "Win32 (x86) Static Library" 0x0104 CFG=expatw_static - Win32 Debug !MESSAGE This is not a valid makefile. To build this project using NMAKE, !MESSAGE use the Export Makefile command and run !MESSAGE !MESSAGE NMAKE /f "expatw_static.mak". !MESSAGE !MESSAGE You can specify a configuration when running NMAKE !MESSAGE by defining the macro CFG on the command line. For example: !MESSAGE !MESSAGE NMAKE /f "expatw_static.mak" CFG="expatw_static - Win32 Debug" !MESSAGE !MESSAGE Possible choices for configuration are: !MESSAGE !MESSAGE "expatw_static - Win32 Release" (based on "Win32 (x86) Static Library") !MESSAGE "expatw_static - Win32 Debug" (based on "Win32 (x86) Static Library") !MESSAGE # Begin Project # PROP AllowPerConfigDependencies 0 # PROP Scc_ProjName "" # PROP Scc_LocalPath "" CPP=cl.exe RSC=rc.exe !IF "$(CFG)" == "expatw_static - Win32 Release" # PROP BASE Use_MFC 0 # PROP BASE Use_Debug_Libraries 0 # PROP BASE Output_Dir "expatw_static___Win32_Release" # PROP BASE Intermediate_Dir "expatw_static___Win32_Release" # PROP BASE Target_Dir "" # PROP Use_MFC 0 # PROP Use_Debug_Libraries 0 # PROP Output_Dir "..\win32\bin\Release" # PROP Intermediate_Dir "..\win32\tmp\Release-w_static" # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /YX /FD /c # ADD CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "_WINDOWS" /D "NDEBUG" /D "_MBCS" /D "_LIB" /D "COMPILED_FROM_DSP" /D "XML_UNICODE_WCHAR_T" /FD /c # SUBTRACT CPP /YX # ADD BASE RSC /l 0x1009 /d "NDEBUG" # ADD RSC /l 0x409 /d "NDEBUG" BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo LIB32=link.exe -lib # ADD BASE LIB32 /nologo # ADD LIB32 /nologo /out:"..\win32\bin\Release\libexpatwMT.lib" !ELSEIF "$(CFG)" == "expatw_static - Win32 Debug" # PROP BASE Use_MFC 0 # PROP BASE Use_Debug_Libraries 1 # PROP BASE Output_Dir "expatw_static___Win32_Debug" # PROP BASE Intermediate_Dir "expatw_static___Win32_Debug" # PROP BASE Target_Dir "" # PROP Use_MFC 0 # PROP Use_Debug_Libraries 1 # PROP Output_Dir "..\win32\bin\Debug" # PROP Intermediate_Dir "..\win32\tmp\Debug-w_static" # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c # ADD CPP /nologo /MTd /W3 /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_LIB" /D "COMPILED_FROM_DSP" /D "XML_UNICODE_WCHAR_T" /FR /FD /GZ /c # SUBTRACT CPP /YX # ADD BASE RSC /l 0x1009 /d "_DEBUG" # ADD RSC /l 0x409 /d "_DEBUG" BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo LIB32=link.exe -lib # ADD BASE LIB32 /nologo # ADD LIB32 /nologo /out:"..\win32\bin\Debug\libexpatwMT.lib" !ENDIF # Begin Target # Name "expatw_static - Win32 Release" # Name "expatw_static - Win32 Debug" # Begin Group "Source Files" # PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" # Begin Source File SOURCE=.\xmlparse.c # End Source File # Begin Source File SOURCE=.\xmlrole.c # End Source File # Begin Source File SOURCE=.\xmltok.c # End Source File # Begin Source File SOURCE=.\xmltok_impl.c # End Source File # Begin Source File SOURCE=.\xmltok_ns.c # End Source File # End Group # Begin Group "Header Files" # PROP Default_Filter "h;hpp;hxx;hm;inl" # Begin Source File SOURCE=.\ascii.h # End Source File # Begin Source File SOURCE=.\asciitab.h # End Source File # Begin Source File SOURCE=.\expat.h # End Source File # Begin Source File SOURCE=.\expat_external.h # End Source File # Begin Source File SOURCE=.\iasciitab.h # End Source File # Begin Source File SOURCE=.\internal.h # End Source File # Begin Source File SOURCE=.\latin1tab.h # End Source File # Begin Source File SOURCE=.\nametab.h # End Source File # Begin Source File SOURCE=.\utf8tab.h # End Source File # Begin Source File SOURCE=.\xmlrole.h # End Source File # Begin Source File SOURCE=.\xmltok.h # End Source File # Begin Source File SOURCE=.\xmltok_impl.h # End Source File # End Group # End Target # End Project suite3270-4.1/Common/libexpat/iasciitab.h000066400000000000000000000035131413735575200202020ustar00rootroot00000000000000/* Copyright (c) 1998, 1999 Thai Open Source Software Center Ltd See the file COPYING for copying permission. */ /* Like asciitab.h, except that 0xD has code BT_S rather than BT_CR */ /* 0x00 */ BT_NONXML, BT_NONXML, BT_NONXML, BT_NONXML, /* 0x04 */ BT_NONXML, BT_NONXML, BT_NONXML, BT_NONXML, /* 0x08 */ BT_NONXML, BT_S, BT_LF, BT_NONXML, /* 0x0C */ BT_NONXML, BT_S, BT_NONXML, BT_NONXML, /* 0x10 */ BT_NONXML, BT_NONXML, BT_NONXML, BT_NONXML, /* 0x14 */ BT_NONXML, BT_NONXML, BT_NONXML, BT_NONXML, /* 0x18 */ BT_NONXML, BT_NONXML, BT_NONXML, BT_NONXML, /* 0x1C */ BT_NONXML, BT_NONXML, BT_NONXML, BT_NONXML, /* 0x20 */ BT_S, BT_EXCL, BT_QUOT, BT_NUM, /* 0x24 */ BT_OTHER, BT_PERCNT, BT_AMP, BT_APOS, /* 0x28 */ BT_LPAR, BT_RPAR, BT_AST, BT_PLUS, /* 0x2C */ BT_COMMA, BT_MINUS, BT_NAME, BT_SOL, /* 0x30 */ BT_DIGIT, BT_DIGIT, BT_DIGIT, BT_DIGIT, /* 0x34 */ BT_DIGIT, BT_DIGIT, BT_DIGIT, BT_DIGIT, /* 0x38 */ BT_DIGIT, BT_DIGIT, BT_COLON, BT_SEMI, /* 0x3C */ BT_LT, BT_EQUALS, BT_GT, BT_QUEST, /* 0x40 */ BT_OTHER, BT_HEX, BT_HEX, BT_HEX, /* 0x44 */ BT_HEX, BT_HEX, BT_HEX, BT_NMSTRT, /* 0x48 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, /* 0x4C */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, /* 0x50 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, /* 0x54 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, /* 0x58 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_LSQB, /* 0x5C */ BT_OTHER, BT_RSQB, BT_OTHER, BT_NMSTRT, /* 0x60 */ BT_OTHER, BT_HEX, BT_HEX, BT_HEX, /* 0x64 */ BT_HEX, BT_HEX, BT_HEX, BT_NMSTRT, /* 0x68 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, /* 0x6C */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, /* 0x70 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, /* 0x74 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, /* 0x78 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_OTHER, /* 0x7C */ BT_VERBAR, BT_OTHER, BT_OTHER, BT_OTHER, suite3270-4.1/Common/libexpat/internal.h000066400000000000000000000040651413735575200200710ustar00rootroot00000000000000/* internal.h Internal definitions used by Expat. This is not needed to compile client code. The following calling convention macros are defined for frequently called functions: FASTCALL - Used for those internal functions that have a simple body and a low number of arguments and local variables. PTRCALL - Used for functions called though function pointers. PTRFASTCALL - Like PTRCALL, but for low number of arguments. inline - Used for selected internal functions for which inlining may improve performance on some platforms. Note: Use of these macros is based on judgement, not hard rules, and therefore subject to change. */ #if defined(__GNUC__) && defined(__i386__) && !defined(__MINGW32__) /* We'll use this version by default only where we know it helps. regparm() generates warnings on Solaris boxes. See SF bug #692878. Instability reported with egcs on a RedHat Linux 7.3. Let's comment out: #define FASTCALL __attribute__((stdcall, regparm(3))) and let's try this: */ #define FASTCALL __attribute__((regparm(3))) #define PTRFASTCALL __attribute__((regparm(3))) #endif /* Using __fastcall seems to have an unexpected negative effect under MS VC++, especially for function pointers, so we won't use it for now on that platform. It may be reconsidered for a future release if it can be made more effective. Likely reason: __fastcall on Windows is like stdcall, therefore the compiler cannot perform stack optimizations for call clusters. */ /* Make sure all of these are defined if they aren't already. */ #ifndef FASTCALL #define FASTCALL #endif #ifndef PTRCALL #define PTRCALL #endif #ifndef PTRFASTCALL #define PTRFASTCALL #endif #ifndef XML_MIN_SIZE #if !defined(__cplusplus) && !defined(inline) #ifdef __GNUC__ #define inline __inline #endif /* __GNUC__ */ #endif #endif /* XML_MIN_SIZE */ #ifdef __cplusplus #define inline inline #else #ifndef inline #define inline #endif #endif suite3270-4.1/Common/libexpat/latin1tab.h000066400000000000000000000034711413735575200201340ustar00rootroot00000000000000/* Copyright (c) 1998, 1999 Thai Open Source Software Center Ltd See the file COPYING for copying permission. */ /* 0x80 */ BT_OTHER, BT_OTHER, BT_OTHER, BT_OTHER, /* 0x84 */ BT_OTHER, BT_OTHER, BT_OTHER, BT_OTHER, /* 0x88 */ BT_OTHER, BT_OTHER, BT_OTHER, BT_OTHER, /* 0x8C */ BT_OTHER, BT_OTHER, BT_OTHER, BT_OTHER, /* 0x90 */ BT_OTHER, BT_OTHER, BT_OTHER, BT_OTHER, /* 0x94 */ BT_OTHER, BT_OTHER, BT_OTHER, BT_OTHER, /* 0x98 */ BT_OTHER, BT_OTHER, BT_OTHER, BT_OTHER, /* 0x9C */ BT_OTHER, BT_OTHER, BT_OTHER, BT_OTHER, /* 0xA0 */ BT_OTHER, BT_OTHER, BT_OTHER, BT_OTHER, /* 0xA4 */ BT_OTHER, BT_OTHER, BT_OTHER, BT_OTHER, /* 0xA8 */ BT_OTHER, BT_OTHER, BT_NMSTRT, BT_OTHER, /* 0xAC */ BT_OTHER, BT_OTHER, BT_OTHER, BT_OTHER, /* 0xB0 */ BT_OTHER, BT_OTHER, BT_OTHER, BT_OTHER, /* 0xB4 */ BT_OTHER, BT_NMSTRT, BT_OTHER, BT_NAME, /* 0xB8 */ BT_OTHER, BT_OTHER, BT_NMSTRT, BT_OTHER, /* 0xBC */ BT_OTHER, BT_OTHER, BT_OTHER, BT_OTHER, /* 0xC0 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, /* 0xC4 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, /* 0xC8 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, /* 0xCC */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, /* 0xD0 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, /* 0xD4 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_OTHER, /* 0xD8 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, /* 0xDC */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, /* 0xE0 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, /* 0xE4 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, /* 0xE8 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, /* 0xEC */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, /* 0xF0 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, /* 0xF4 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_OTHER, /* 0xF8 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, /* 0xFC */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, suite3270-4.1/Common/libexpat/libexpat.def000066400000000000000000000042051413735575200203700ustar00rootroot00000000000000; DEF file for MS VC++ LIBRARY EXPORTS XML_DefaultCurrent @1 XML_ErrorString @2 XML_ExpatVersion @3 XML_ExpatVersionInfo @4 XML_ExternalEntityParserCreate @5 XML_GetBase @6 XML_GetBuffer @7 XML_GetCurrentByteCount @8 XML_GetCurrentByteIndex @9 XML_GetCurrentColumnNumber @10 XML_GetCurrentLineNumber @11 XML_GetErrorCode @12 XML_GetIdAttributeIndex @13 XML_GetInputContext @14 XML_GetSpecifiedAttributeCount @15 XML_Parse @16 XML_ParseBuffer @17 XML_ParserCreate @18 XML_ParserCreateNS @19 XML_ParserCreate_MM @20 XML_ParserFree @21 XML_SetAttlistDeclHandler @22 XML_SetBase @23 XML_SetCdataSectionHandler @24 XML_SetCharacterDataHandler @25 XML_SetCommentHandler @26 XML_SetDefaultHandler @27 XML_SetDefaultHandlerExpand @28 XML_SetDoctypeDeclHandler @29 XML_SetElementDeclHandler @30 XML_SetElementHandler @31 XML_SetEncoding @32 XML_SetEndCdataSectionHandler @33 XML_SetEndDoctypeDeclHandler @34 XML_SetEndElementHandler @35 XML_SetEndNamespaceDeclHandler @36 XML_SetEntityDeclHandler @37 XML_SetExternalEntityRefHandler @38 XML_SetExternalEntityRefHandlerArg @39 XML_SetNamespaceDeclHandler @40 XML_SetNotStandaloneHandler @41 XML_SetNotationDeclHandler @42 XML_SetParamEntityParsing @43 XML_SetProcessingInstructionHandler @44 XML_SetReturnNSTriplet @45 XML_SetStartCdataSectionHandler @46 XML_SetStartDoctypeDeclHandler @47 XML_SetStartElementHandler @48 XML_SetStartNamespaceDeclHandler @49 XML_SetUnknownEncodingHandler @50 XML_SetUnparsedEntityDeclHandler @51 XML_SetUserData @52 XML_SetXmlDeclHandler @53 XML_UseParserAsHandlerArg @54 ; added with version 1.95.3 XML_ParserReset @55 XML_SetSkippedEntityHandler @56 ; added with version 1.95.5 XML_GetFeatureList @57 XML_UseForeignDTD @58 ; added with version 1.95.6 XML_FreeContentModel @59 XML_MemMalloc @60 XML_MemRealloc @61 XML_MemFree @62 ; added with version 1.95.8 XML_StopParser @63 XML_ResumeParser @64 XML_GetParsingStatus @65 ; added with version 2.1.1 ; XML_GetAttributeInfo @66 XML_SetHashSalt @67@ suite3270-4.1/Common/libexpat/libexpatw.def000066400000000000000000000042051413735575200205570ustar00rootroot00000000000000; DEF file for MS VC++ LIBRARY EXPORTS XML_DefaultCurrent @1 XML_ErrorString @2 XML_ExpatVersion @3 XML_ExpatVersionInfo @4 XML_ExternalEntityParserCreate @5 XML_GetBase @6 XML_GetBuffer @7 XML_GetCurrentByteCount @8 XML_GetCurrentByteIndex @9 XML_GetCurrentColumnNumber @10 XML_GetCurrentLineNumber @11 XML_GetErrorCode @12 XML_GetIdAttributeIndex @13 XML_GetInputContext @14 XML_GetSpecifiedAttributeCount @15 XML_Parse @16 XML_ParseBuffer @17 XML_ParserCreate @18 XML_ParserCreateNS @19 XML_ParserCreate_MM @20 XML_ParserFree @21 XML_SetAttlistDeclHandler @22 XML_SetBase @23 XML_SetCdataSectionHandler @24 XML_SetCharacterDataHandler @25 XML_SetCommentHandler @26 XML_SetDefaultHandler @27 XML_SetDefaultHandlerExpand @28 XML_SetDoctypeDeclHandler @29 XML_SetElementDeclHandler @30 XML_SetElementHandler @31 XML_SetEncoding @32 XML_SetEndCdataSectionHandler @33 XML_SetEndDoctypeDeclHandler @34 XML_SetEndElementHandler @35 XML_SetEndNamespaceDeclHandler @36 XML_SetEntityDeclHandler @37 XML_SetExternalEntityRefHandler @38 XML_SetExternalEntityRefHandlerArg @39 XML_SetNamespaceDeclHandler @40 XML_SetNotStandaloneHandler @41 XML_SetNotationDeclHandler @42 XML_SetParamEntityParsing @43 XML_SetProcessingInstructionHandler @44 XML_SetReturnNSTriplet @45 XML_SetStartCdataSectionHandler @46 XML_SetStartDoctypeDeclHandler @47 XML_SetStartElementHandler @48 XML_SetStartNamespaceDeclHandler @49 XML_SetUnknownEncodingHandler @50 XML_SetUnparsedEntityDeclHandler @51 XML_SetUserData @52 XML_SetXmlDeclHandler @53 XML_UseParserAsHandlerArg @54 ; added with version 1.95.3 XML_ParserReset @55 XML_SetSkippedEntityHandler @56 ; added with version 1.95.5 XML_GetFeatureList @57 XML_UseForeignDTD @58 ; added with version 1.95.6 XML_FreeContentModel @59 XML_MemMalloc @60 XML_MemRealloc @61 XML_MemFree @62 ; added with version 1.95.8 XML_StopParser @63 XML_ResumeParser @64 XML_GetParsingStatus @65 ; added with version 2.1.1 ; XML_GetAttributeInfo @66 XML_SetHashSalt @67@ suite3270-4.1/Common/libexpat/macconfig.h000066400000000000000000000025421413735575200202010ustar00rootroot00000000000000/*================================================================ ** Copyright 2000, Clark Cooper ** All rights reserved. ** ** This is free software. You are permitted to copy, distribute, or modify ** it under the terms of the MIT/X license (contained in the COPYING file ** with this distribution.) ** */ #ifndef MACCONFIG_H #define MACCONFIG_H /* 1234 = LIL_ENDIAN, 4321 = BIGENDIAN */ #define BYTEORDER 4321 /* Define to 1 if you have the `bcopy' function. */ #undef HAVE_BCOPY /* Define to 1 if you have the `memmove' function. */ #define HAVE_MEMMOVE /* Define to 1 if you have a working `mmap' system call. */ #undef HAVE_MMAP /* Define to 1 if you have the header file. */ #undef HAVE_UNISTD_H /* whether byteorder is bigendian */ #define WORDS_BIGENDIAN /* Define to specify how much context to retain around the current parse point. */ #undef XML_CONTEXT_BYTES /* Define to make parameter entity parsing functionality available. */ #define XML_DTD /* Define to make XML Namespaces functionality available. */ #define XML_NS /* Define to empty if `const' does not conform to ANSI C. */ #undef const /* Define to `long' if does not define. */ #define off_t long /* Define to `unsigned' if does not define. */ #undef size_t #endif /* ifndef MACCONFIG_H */ suite3270-4.1/Common/libexpat/nametab.h000066400000000000000000000160401413735575200176600ustar00rootroot00000000000000static const unsigned namingBitmap[] = { 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x00000000, 0x04000000, 0x87FFFFFE, 0x07FFFFFE, 0x00000000, 0x00000000, 0xFF7FFFFF, 0xFF7FFFFF, 0xFFFFFFFF, 0x7FF3FFFF, 0xFFFFFDFE, 0x7FFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFE00F, 0xFC31FFFF, 0x00FFFFFF, 0x00000000, 0xFFFF0000, 0xFFFFFFFF, 0xFFFFFFFF, 0xF80001FF, 0x00000003, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0xFFFFD740, 0xFFFFFFFB, 0x547F7FFF, 0x000FFFFD, 0xFFFFDFFE, 0xFFFFFFFF, 0xDFFEFFFF, 0xFFFFFFFF, 0xFFFF0003, 0xFFFFFFFF, 0xFFFF199F, 0x033FCFFF, 0x00000000, 0xFFFE0000, 0x027FFFFF, 0xFFFFFFFE, 0x0000007F, 0x00000000, 0xFFFF0000, 0x000707FF, 0x00000000, 0x07FFFFFE, 0x000007FE, 0xFFFE0000, 0xFFFFFFFF, 0x7CFFFFFF, 0x002F7FFF, 0x00000060, 0xFFFFFFE0, 0x23FFFFFF, 0xFF000000, 0x00000003, 0xFFF99FE0, 0x03C5FDFF, 0xB0000000, 0x00030003, 0xFFF987E0, 0x036DFDFF, 0x5E000000, 0x001C0000, 0xFFFBAFE0, 0x23EDFDFF, 0x00000000, 0x00000001, 0xFFF99FE0, 0x23CDFDFF, 0xB0000000, 0x00000003, 0xD63DC7E0, 0x03BFC718, 0x00000000, 0x00000000, 0xFFFDDFE0, 0x03EFFDFF, 0x00000000, 0x00000003, 0xFFFDDFE0, 0x03EFFDFF, 0x40000000, 0x00000003, 0xFFFDDFE0, 0x03FFFDFF, 0x00000000, 0x00000003, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0xFFFFFFFE, 0x000D7FFF, 0x0000003F, 0x00000000, 0xFEF02596, 0x200D6CAE, 0x0000001F, 0x00000000, 0x00000000, 0x00000000, 0xFFFFFEFF, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0xFFFFFFFF, 0xFFFF003F, 0x007FFFFF, 0x0007DAED, 0x50000000, 0x82315001, 0x002C62AB, 0x40000000, 0xF580C900, 0x00000007, 0x02010800, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x0FFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x03FFFFFF, 0x3F3FFFFF, 0xFFFFFFFF, 0xAAFF3F3F, 0x3FFFFFFF, 0xFFFFFFFF, 0x5FDFFFFF, 0x0FCF1FDC, 0x1FDC1FFF, 0x00000000, 0x00004C40, 0x00000000, 0x00000000, 0x00000007, 0x00000000, 0x00000000, 0x00000000, 0x00000080, 0x000003FE, 0xFFFFFFFE, 0xFFFFFFFF, 0x001FFFFF, 0xFFFFFFFE, 0xFFFFFFFF, 0x07FFFFFF, 0xFFFFFFE0, 0x00001FFF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x0000003F, 0x00000000, 0x00000000, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x0000000F, 0x00000000, 0x00000000, 0x00000000, 0x07FF6000, 0x87FFFFFE, 0x07FFFFFE, 0x00000000, 0x00800000, 0xFF7FFFFF, 0xFF7FFFFF, 0x00FFFFFF, 0x00000000, 0xFFFF0000, 0xFFFFFFFF, 0xFFFFFFFF, 0xF80001FF, 0x00030003, 0x00000000, 0xFFFFFFFF, 0xFFFFFFFF, 0x0000003F, 0x00000003, 0xFFFFD7C0, 0xFFFFFFFB, 0x547F7FFF, 0x000FFFFD, 0xFFFFDFFE, 0xFFFFFFFF, 0xDFFEFFFF, 0xFFFFFFFF, 0xFFFF007B, 0xFFFFFFFF, 0xFFFF199F, 0x033FCFFF, 0x00000000, 0xFFFE0000, 0x027FFFFF, 0xFFFFFFFE, 0xFFFE007F, 0xBBFFFFFB, 0xFFFF0016, 0x000707FF, 0x00000000, 0x07FFFFFE, 0x0007FFFF, 0xFFFF03FF, 0xFFFFFFFF, 0x7CFFFFFF, 0xFFEF7FFF, 0x03FF3DFF, 0xFFFFFFEE, 0xF3FFFFFF, 0xFF1E3FFF, 0x0000FFCF, 0xFFF99FEE, 0xD3C5FDFF, 0xB080399F, 0x0003FFCF, 0xFFF987E4, 0xD36DFDFF, 0x5E003987, 0x001FFFC0, 0xFFFBAFEE, 0xF3EDFDFF, 0x00003BBF, 0x0000FFC1, 0xFFF99FEE, 0xF3CDFDFF, 0xB0C0398F, 0x0000FFC3, 0xD63DC7EC, 0xC3BFC718, 0x00803DC7, 0x0000FF80, 0xFFFDDFEE, 0xC3EFFDFF, 0x00603DDF, 0x0000FFC3, 0xFFFDDFEC, 0xC3EFFDFF, 0x40603DDF, 0x0000FFC3, 0xFFFDDFEC, 0xC3FFFDFF, 0x00803DCF, 0x0000FFC3, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0xFFFFFFFE, 0x07FF7FFF, 0x03FF7FFF, 0x00000000, 0xFEF02596, 0x3BFF6CAE, 0x03FF3F5F, 0x00000000, 0x03000000, 0xC2A003FF, 0xFFFFFEFF, 0xFFFE03FF, 0xFEBF0FDF, 0x02FE3FFF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x1FFF0000, 0x00000002, 0x000000A0, 0x003EFFFE, 0xFFFFFFFE, 0xFFFFFFFF, 0x661FFFFF, 0xFFFFFFFE, 0xFFFFFFFF, 0x77FFFFFF, }; static const unsigned char nmstrtPages[] = { 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x00, 0x00, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F, 0x10, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0x13, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x15, 0x16, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x17, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }; static const unsigned char namePages[] = { 0x19, 0x03, 0x1A, 0x1B, 0x1C, 0x1D, 0x1E, 0x00, 0x00, 0x1F, 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x10, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0x13, 0x26, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x27, 0x16, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x17, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }; suite3270-4.1/Common/libexpat/utf8tab.h000066400000000000000000000034101413735575200176230ustar00rootroot00000000000000/* Copyright (c) 1998, 1999 Thai Open Source Software Center Ltd See the file COPYING for copying permission. */ /* 0x80 */ BT_TRAIL, BT_TRAIL, BT_TRAIL, BT_TRAIL, /* 0x84 */ BT_TRAIL, BT_TRAIL, BT_TRAIL, BT_TRAIL, /* 0x88 */ BT_TRAIL, BT_TRAIL, BT_TRAIL, BT_TRAIL, /* 0x8C */ BT_TRAIL, BT_TRAIL, BT_TRAIL, BT_TRAIL, /* 0x90 */ BT_TRAIL, BT_TRAIL, BT_TRAIL, BT_TRAIL, /* 0x94 */ BT_TRAIL, BT_TRAIL, BT_TRAIL, BT_TRAIL, /* 0x98 */ BT_TRAIL, BT_TRAIL, BT_TRAIL, BT_TRAIL, /* 0x9C */ BT_TRAIL, BT_TRAIL, BT_TRAIL, BT_TRAIL, /* 0xA0 */ BT_TRAIL, BT_TRAIL, BT_TRAIL, BT_TRAIL, /* 0xA4 */ BT_TRAIL, BT_TRAIL, BT_TRAIL, BT_TRAIL, /* 0xA8 */ BT_TRAIL, BT_TRAIL, BT_TRAIL, BT_TRAIL, /* 0xAC */ BT_TRAIL, BT_TRAIL, BT_TRAIL, BT_TRAIL, /* 0xB0 */ BT_TRAIL, BT_TRAIL, BT_TRAIL, BT_TRAIL, /* 0xB4 */ BT_TRAIL, BT_TRAIL, BT_TRAIL, BT_TRAIL, /* 0xB8 */ BT_TRAIL, BT_TRAIL, BT_TRAIL, BT_TRAIL, /* 0xBC */ BT_TRAIL, BT_TRAIL, BT_TRAIL, BT_TRAIL, /* 0xC0 */ BT_LEAD2, BT_LEAD2, BT_LEAD2, BT_LEAD2, /* 0xC4 */ BT_LEAD2, BT_LEAD2, BT_LEAD2, BT_LEAD2, /* 0xC8 */ BT_LEAD2, BT_LEAD2, BT_LEAD2, BT_LEAD2, /* 0xCC */ BT_LEAD2, BT_LEAD2, BT_LEAD2, BT_LEAD2, /* 0xD0 */ BT_LEAD2, BT_LEAD2, BT_LEAD2, BT_LEAD2, /* 0xD4 */ BT_LEAD2, BT_LEAD2, BT_LEAD2, BT_LEAD2, /* 0xD8 */ BT_LEAD2, BT_LEAD2, BT_LEAD2, BT_LEAD2, /* 0xDC */ BT_LEAD2, BT_LEAD2, BT_LEAD2, BT_LEAD2, /* 0xE0 */ BT_LEAD3, BT_LEAD3, BT_LEAD3, BT_LEAD3, /* 0xE4 */ BT_LEAD3, BT_LEAD3, BT_LEAD3, BT_LEAD3, /* 0xE8 */ BT_LEAD3, BT_LEAD3, BT_LEAD3, BT_LEAD3, /* 0xEC */ BT_LEAD3, BT_LEAD3, BT_LEAD3, BT_LEAD3, /* 0xF0 */ BT_LEAD4, BT_LEAD4, BT_LEAD4, BT_LEAD4, /* 0xF4 */ BT_LEAD4, BT_NONXML, BT_NONXML, BT_NONXML, /* 0xF8 */ BT_NONXML, BT_NONXML, BT_NONXML, BT_NONXML, /* 0xFC */ BT_NONXML, BT_NONXML, BT_MALFORM, BT_MALFORM, suite3270-4.1/Common/libexpat/watcomconfig.h000066400000000000000000000023411413735575200207300ustar00rootroot00000000000000/* expat_config.h for use with Open Watcom 1.5 and above. */ #ifndef WATCOMCONFIG_H #define WATCOMCONFIG_H #ifdef __NT__ #define WIN32_LEAN_AND_MEAN #include #undef WIN32_LEAN_AND_MEAN #endif /* 1234 = LIL_ENDIAN, 4321 = BIGENDIAN */ #define BYTEORDER 1234 /* Define to 1 if you have the `memmove' function. */ #define HAVE_MEMMOVE 1 /* Define to 1 if you have the header file. */ #define HAVE_UNISTD_H 1 /* Define to the address where bug reports for this package should be sent. */ #define PACKAGE_BUGREPORT "expat-bugs@mail.libexpat.org" /* Define to the full name of this package. */ #define PACKAGE_NAME "expat" /* Define to the full name and version of this package. */ #define PACKAGE_STRING "expat 2.0.0" /* Define to the one symbol short name of this package. */ #undef PACKAGE_TARNAME /* Define to the version of this package. */ #define PACKAGE_VERSION "2.0.0" /* Define to specify how much context to retain around the current parse point. */ #define XML_CONTEXT_BYTES 1024 /* Define to make parameter entity parsing functionality available. */ #define XML_DTD 1 /* Define to make XML Namespaces functionality available. */ #define XML_NS 1 #endif suite3270-4.1/Common/libexpat/winconfig.h000066400000000000000000000014161413735575200202350ustar00rootroot00000000000000/*================================================================ ** Copyright 2000, Clark Cooper ** All rights reserved. ** ** This is free software. You are permitted to copy, distribute, or modify ** it under the terms of the MIT/X license (contained in the COPYING file ** with this distribution.) */ #ifndef WINCONFIG_H #define WINCONFIG_H #if !defined(WIN32_LEAN_AND_MEAN) #define WIN32_LEAN_AND_MEAN #endif #include #undef WIN32_LEAN_AND_MEAN #include #include #define XML_NS 1 #define XML_DTD 1 #define XML_CONTEXT_BYTES 1024 /* we will assume all Windows platforms are little endian */ #define BYTEORDER 1234 /* Windows has memmove() available. */ #define HAVE_MEMMOVE #endif /* ndef WINCONFIG_H */ suite3270-4.1/Common/libexpat/xmlparse.c000066400000000000000000006171551413735575200201150ustar00rootroot00000000000000/* Copyright (c) 1998, 1999, 2000 Thai Open Source Software Center Ltd See the file COPYING for copying permission. */ #include #include /* memset(), memcpy() */ #include #include /* UINT_MAX */ #include /* time() */ #define XML_BUILDING_EXPAT 1 #ifdef COMPILED_FROM_DSP #include "winconfig.h" #elif defined(MACOS_CLASSIC) #include "macconfig.h" #elif defined(__amigaos__) #include "amigaconfig.h" #elif defined(__WATCOMC__) #include "watcomconfig.h" #elif defined(HAVE_EXPAT_CONFIG_H) #include #endif /* ndef COMPILED_FROM_DSP */ #include "ascii.h" #include "expat.h" #ifdef XML_UNICODE #define XML_ENCODE_MAX XML_UTF16_ENCODE_MAX #define XmlConvert XmlUtf16Convert #define XmlGetInternalEncoding XmlGetUtf16InternalEncoding #define XmlGetInternalEncodingNS XmlGetUtf16InternalEncodingNS #define XmlEncode XmlUtf16Encode /* Using pointer subtraction to convert to integer type. */ #define MUST_CONVERT(enc, s) (!(enc)->isUtf16 || (((char *)(s) - (char *)NULL) & 1)) typedef unsigned short ICHAR; #else #define XML_ENCODE_MAX XML_UTF8_ENCODE_MAX #define XmlConvert XmlUtf8Convert #define XmlGetInternalEncoding XmlGetUtf8InternalEncoding #define XmlGetInternalEncodingNS XmlGetUtf8InternalEncodingNS #define XmlEncode XmlUtf8Encode #define MUST_CONVERT(enc, s) (!(enc)->isUtf8) typedef char ICHAR; #endif #ifndef XML_NS #define XmlInitEncodingNS XmlInitEncoding #define XmlInitUnknownEncodingNS XmlInitUnknownEncoding #undef XmlGetInternalEncodingNS #define XmlGetInternalEncodingNS XmlGetInternalEncoding #define XmlParseXmlDeclNS XmlParseXmlDecl #endif #ifdef XML_UNICODE #ifdef XML_UNICODE_WCHAR_T #define XML_T(x) (const wchar_t)x #define XML_L(x) L ## x #else #define XML_T(x) (const unsigned short)x #define XML_L(x) x #endif #else #define XML_T(x) x #define XML_L(x) x #endif /* Round up n to be a multiple of sz, where sz is a power of 2. */ #define ROUND_UP(n, sz) (((n) + ((sz) - 1)) & ~((sz) - 1)) /* Handle the case where memmove() doesn't exist. */ #ifndef HAVE_MEMMOVE #ifdef HAVE_BCOPY #define memmove(d,s,l) bcopy((s),(d),(l)) #else #error memmove does not exist on this platform, nor is a substitute available #endif /* HAVE_BCOPY */ #endif /* HAVE_MEMMOVE */ #include "internal.h" #include "xmltok.h" #include "xmlrole.h" typedef const XML_Char *KEY; typedef struct { KEY name; } NAMED; typedef struct { NAMED **v; unsigned char power; size_t size; size_t used; const XML_Memory_Handling_Suite *mem; } HASH_TABLE; /* Basic character hash algorithm, taken from Python's string hash: h = h * 1000003 ^ character, the constant being a prime number. */ #ifdef XML_UNICODE #define CHAR_HASH(h, c) \ (((h) * 0xF4243) ^ (unsigned short)(c)) #else #define CHAR_HASH(h, c) \ (((h) * 0xF4243) ^ (unsigned char)(c)) #endif /* For probing (after a collision) we need a step size relative prime to the hash table size, which is a power of 2. We use double-hashing, since we can calculate a second hash value cheaply by taking those bits of the first hash value that were discarded (masked out) when the table index was calculated: index = hash & mask, where mask = table->size - 1. We limit the maximum step size to table->size / 4 (mask >> 2) and make it odd, since odd numbers are always relative prime to a power of 2. */ #define SECOND_HASH(hash, mask, power) \ ((((hash) & ~(mask)) >> ((power) - 1)) & ((mask) >> 2)) #define PROBE_STEP(hash, mask, power) \ ((unsigned char)((SECOND_HASH(hash, mask, power)) | 1)) typedef struct { NAMED **p; NAMED **end; } HASH_TABLE_ITER; #define INIT_TAG_BUF_SIZE 32 /* must be a multiple of sizeof(XML_Char) */ #define INIT_DATA_BUF_SIZE 1024 #define INIT_ATTS_SIZE 16 #define INIT_ATTS_VERSION 0xFFFFFFFF #define INIT_BLOCK_SIZE 1024 #define INIT_BUFFER_SIZE 1024 #define EXPAND_SPARE 24 typedef struct binding { struct prefix *prefix; struct binding *nextTagBinding; struct binding *prevPrefixBinding; const struct attribute_id *attId; XML_Char *uri; int uriLen; int uriAlloc; } BINDING; typedef struct prefix { const XML_Char *name; BINDING *binding; } PREFIX; typedef struct { const XML_Char *str; const XML_Char *localPart; const XML_Char *prefix; int strLen; int uriLen; int prefixLen; } TAG_NAME; /* TAG represents an open element. The name of the element is stored in both the document and API encodings. The memory buffer 'buf' is a separately-allocated memory area which stores the name. During the XML_Parse()/ XMLParseBuffer() when the element is open, the memory for the 'raw' version of the name (in the document encoding) is shared with the document buffer. If the element is open across calls to XML_Parse()/XML_ParseBuffer(), the buffer is re-allocated to contain the 'raw' name as well. A parser re-uses these structures, maintaining a list of allocated TAG objects in a free list. */ typedef struct tag { struct tag *parent; /* parent of this element */ const char *rawName; /* tagName in the original encoding */ int rawNameLength; TAG_NAME name; /* tagName in the API encoding */ char *buf; /* buffer for name components */ char *bufEnd; /* end of the buffer */ BINDING *bindings; } TAG; typedef struct { const XML_Char *name; const XML_Char *textPtr; int textLen; /* length in XML_Chars */ int processed; /* # of processed bytes - when suspended */ const XML_Char *systemId; const XML_Char *base; const XML_Char *publicId; const XML_Char *notation; XML_Bool open; XML_Bool is_param; XML_Bool is_internal; /* true if declared in internal subset outside PE */ } ENTITY; typedef struct { enum XML_Content_Type type; enum XML_Content_Quant quant; const XML_Char * name; int firstchild; int lastchild; int childcnt; int nextsib; } CONTENT_SCAFFOLD; #define INIT_SCAFFOLD_ELEMENTS 32 typedef struct block { struct block *next; int size; XML_Char s[1]; } BLOCK; typedef struct { BLOCK *blocks; BLOCK *freeBlocks; const XML_Char *end; XML_Char *ptr; XML_Char *start; const XML_Memory_Handling_Suite *mem; } STRING_POOL; /* The XML_Char before the name is used to determine whether an attribute has been specified. */ typedef struct attribute_id { XML_Char *name; PREFIX *prefix; XML_Bool maybeTokenized; XML_Bool xmlns; } ATTRIBUTE_ID; typedef struct { const ATTRIBUTE_ID *id; XML_Bool isCdata; const XML_Char *value; } DEFAULT_ATTRIBUTE; typedef struct { unsigned long version; unsigned long hash; const XML_Char *uriName; } NS_ATT; typedef struct { const XML_Char *name; PREFIX *prefix; const ATTRIBUTE_ID *idAtt; int nDefaultAtts; int allocDefaultAtts; DEFAULT_ATTRIBUTE *defaultAtts; } ELEMENT_TYPE; typedef struct { HASH_TABLE generalEntities; HASH_TABLE elementTypes; HASH_TABLE attributeIds; HASH_TABLE prefixes; STRING_POOL pool; STRING_POOL entityValuePool; /* false once a parameter entity reference has been skipped */ XML_Bool keepProcessing; /* true once an internal or external PE reference has been encountered; this includes the reference to an external subset */ XML_Bool hasParamEntityRefs; XML_Bool standalone; #ifdef XML_DTD /* indicates if external PE has been read */ XML_Bool paramEntityRead; HASH_TABLE paramEntities; #endif /* XML_DTD */ PREFIX defaultPrefix; /* === scaffolding for building content model === */ XML_Bool in_eldecl; CONTENT_SCAFFOLD *scaffold; unsigned contentStringLen; unsigned scaffSize; unsigned scaffCount; int scaffLevel; int *scaffIndex; } DTD; typedef struct open_internal_entity { const char *internalEventPtr; const char *internalEventEndPtr; struct open_internal_entity *next; ENTITY *entity; int startTagLevel; XML_Bool betweenDecl; /* WFC: PE Between Declarations */ } OPEN_INTERNAL_ENTITY; typedef enum XML_Error PTRCALL Processor(XML_Parser parser, const char *start, const char *end, const char **endPtr); static Processor prologProcessor; static Processor prologInitProcessor; static Processor contentProcessor; static Processor cdataSectionProcessor; #ifdef XML_DTD static Processor ignoreSectionProcessor; static Processor externalParEntProcessor; static Processor externalParEntInitProcessor; static Processor entityValueProcessor; static Processor entityValueInitProcessor; #endif /* XML_DTD */ static Processor epilogProcessor; static Processor errorProcessor; static Processor externalEntityInitProcessor; static Processor externalEntityInitProcessor2; static Processor externalEntityInitProcessor3; static Processor externalEntityContentProcessor; static Processor internalEntityProcessor; static enum XML_Error handleUnknownEncoding(XML_Parser parser, const XML_Char *encodingName); static enum XML_Error processXmlDecl(XML_Parser parser, int isGeneralTextEntity, const char *s, const char *next); static enum XML_Error initializeEncoding(XML_Parser parser); static enum XML_Error doProlog(XML_Parser parser, const ENCODING *enc, const char *s, const char *end, int tok, const char *next, const char **nextPtr, XML_Bool haveMore); static enum XML_Error processInternalEntity(XML_Parser parser, ENTITY *entity, XML_Bool betweenDecl); static enum XML_Error doContent(XML_Parser parser, int startTagLevel, const ENCODING *enc, const char *start, const char *end, const char **endPtr, XML_Bool haveMore); static enum XML_Error doCdataSection(XML_Parser parser, const ENCODING *, const char **startPtr, const char *end, const char **nextPtr, XML_Bool haveMore); #ifdef XML_DTD static enum XML_Error doIgnoreSection(XML_Parser parser, const ENCODING *, const char **startPtr, const char *end, const char **nextPtr, XML_Bool haveMore); #endif /* XML_DTD */ static enum XML_Error storeAtts(XML_Parser parser, const ENCODING *, const char *s, TAG_NAME *tagNamePtr, BINDING **bindingsPtr); static enum XML_Error addBinding(XML_Parser parser, PREFIX *prefix, const ATTRIBUTE_ID *attId, const XML_Char *uri, BINDING **bindingsPtr); static int defineAttribute(ELEMENT_TYPE *type, ATTRIBUTE_ID *, XML_Bool isCdata, XML_Bool isId, const XML_Char *dfltValue, XML_Parser parser); static enum XML_Error storeAttributeValue(XML_Parser parser, const ENCODING *, XML_Bool isCdata, const char *, const char *, STRING_POOL *); static enum XML_Error appendAttributeValue(XML_Parser parser, const ENCODING *, XML_Bool isCdata, const char *, const char *, STRING_POOL *); static ATTRIBUTE_ID * getAttributeId(XML_Parser parser, const ENCODING *enc, const char *start, const char *end); static int setElementTypePrefix(XML_Parser parser, ELEMENT_TYPE *); static enum XML_Error storeEntityValue(XML_Parser parser, const ENCODING *enc, const char *start, const char *end); static int reportProcessingInstruction(XML_Parser parser, const ENCODING *enc, const char *start, const char *end); static int reportComment(XML_Parser parser, const ENCODING *enc, const char *start, const char *end); static void reportDefault(XML_Parser parser, const ENCODING *enc, const char *start, const char *end); static const XML_Char * getContext(XML_Parser parser); static XML_Bool setContext(XML_Parser parser, const XML_Char *context); static void FASTCALL normalizePublicId(XML_Char *s); static DTD * dtdCreate(const XML_Memory_Handling_Suite *ms); /* do not call if parentParser != NULL */ static void dtdReset(DTD *p, const XML_Memory_Handling_Suite *ms); static void dtdDestroy(DTD *p, XML_Bool isDocEntity, const XML_Memory_Handling_Suite *ms); static int dtdCopy(XML_Parser oldParser, DTD *newDtd, const DTD *oldDtd, const XML_Memory_Handling_Suite *ms); static int copyEntityTable(XML_Parser oldParser, HASH_TABLE *, STRING_POOL *, const HASH_TABLE *); static NAMED * lookup(XML_Parser parser, HASH_TABLE *table, KEY name, size_t createSize); static void FASTCALL hashTableInit(HASH_TABLE *, const XML_Memory_Handling_Suite *ms); static void FASTCALL hashTableClear(HASH_TABLE *); static void FASTCALL hashTableDestroy(HASH_TABLE *); static void FASTCALL hashTableIterInit(HASH_TABLE_ITER *, const HASH_TABLE *); static NAMED * FASTCALL hashTableIterNext(HASH_TABLE_ITER *); static void FASTCALL poolInit(STRING_POOL *, const XML_Memory_Handling_Suite *ms); static void FASTCALL poolClear(STRING_POOL *); static void FASTCALL poolDestroy(STRING_POOL *); static XML_Char * poolAppend(STRING_POOL *pool, const ENCODING *enc, const char *ptr, const char *end); static XML_Char * poolStoreString(STRING_POOL *pool, const ENCODING *enc, const char *ptr, const char *end); static XML_Bool FASTCALL poolGrow(STRING_POOL *pool); static const XML_Char * FASTCALL poolCopyString(STRING_POOL *pool, const XML_Char *s); static const XML_Char * poolCopyStringN(STRING_POOL *pool, const XML_Char *s, int n); static const XML_Char * FASTCALL poolAppendString(STRING_POOL *pool, const XML_Char *s); static int FASTCALL nextScaffoldPart(XML_Parser parser); static XML_Content * build_model(XML_Parser parser); static ELEMENT_TYPE * getElementType(XML_Parser parser, const ENCODING *enc, const char *ptr, const char *end); static unsigned long generate_hash_secret_salt(void); static XML_Bool startParsing(XML_Parser parser); static XML_Parser parserCreate(const XML_Char *encodingName, const XML_Memory_Handling_Suite *memsuite, const XML_Char *nameSep, DTD *dtd); static void parserInit(XML_Parser parser, const XML_Char *encodingName); #define poolStart(pool) ((pool)->start) #define poolEnd(pool) ((pool)->ptr) #define poolLength(pool) ((pool)->ptr - (pool)->start) #define poolChop(pool) ((void)--(pool->ptr)) #define poolLastChar(pool) (((pool)->ptr)[-1]) #define poolDiscard(pool) ((pool)->ptr = (pool)->start) #define poolFinish(pool) ((pool)->start = (pool)->ptr) #define poolAppendChar(pool, c) \ (((pool)->ptr == (pool)->end && !poolGrow(pool)) \ ? 0 \ : ((*((pool)->ptr)++ = c), 1)) struct XML_ParserStruct { /* The first member must be userData so that the XML_GetUserData macro works. */ void *m_userData; void *m_handlerArg; char *m_buffer; const XML_Memory_Handling_Suite m_mem; /* first character to be parsed */ const char *m_bufferPtr; /* past last character to be parsed */ char *m_bufferEnd; /* allocated end of buffer */ const char *m_bufferLim; XML_Index m_parseEndByteIndex; const char *m_parseEndPtr; XML_Char *m_dataBuf; XML_Char *m_dataBufEnd; XML_StartElementHandler m_startElementHandler; XML_EndElementHandler m_endElementHandler; XML_CharacterDataHandler m_characterDataHandler; XML_ProcessingInstructionHandler m_processingInstructionHandler; XML_CommentHandler m_commentHandler; XML_StartCdataSectionHandler m_startCdataSectionHandler; XML_EndCdataSectionHandler m_endCdataSectionHandler; XML_DefaultHandler m_defaultHandler; XML_StartDoctypeDeclHandler m_startDoctypeDeclHandler; XML_EndDoctypeDeclHandler m_endDoctypeDeclHandler; XML_UnparsedEntityDeclHandler m_unparsedEntityDeclHandler; XML_NotationDeclHandler m_notationDeclHandler; XML_StartNamespaceDeclHandler m_startNamespaceDeclHandler; XML_EndNamespaceDeclHandler m_endNamespaceDeclHandler; XML_NotStandaloneHandler m_notStandaloneHandler; XML_ExternalEntityRefHandler m_externalEntityRefHandler; XML_Parser m_externalEntityRefHandlerArg; XML_SkippedEntityHandler m_skippedEntityHandler; XML_UnknownEncodingHandler m_unknownEncodingHandler; XML_ElementDeclHandler m_elementDeclHandler; XML_AttlistDeclHandler m_attlistDeclHandler; XML_EntityDeclHandler m_entityDeclHandler; XML_XmlDeclHandler m_xmlDeclHandler; const ENCODING *m_encoding; INIT_ENCODING m_initEncoding; const ENCODING *m_internalEncoding; const XML_Char *m_protocolEncodingName; XML_Bool m_ns; XML_Bool m_ns_triplets; void *m_unknownEncodingMem; void *m_unknownEncodingData; void *m_unknownEncodingHandlerData; void (XMLCALL *m_unknownEncodingRelease)(void *); PROLOG_STATE m_prologState; Processor *m_processor; enum XML_Error m_errorCode; const char *m_eventPtr; const char *m_eventEndPtr; const char *m_positionPtr; OPEN_INTERNAL_ENTITY *m_openInternalEntities; OPEN_INTERNAL_ENTITY *m_freeInternalEntities; XML_Bool m_defaultExpandInternalEntities; int m_tagLevel; ENTITY *m_declEntity; const XML_Char *m_doctypeName; const XML_Char *m_doctypeSysid; const XML_Char *m_doctypePubid; const XML_Char *m_declAttributeType; const XML_Char *m_declNotationName; const XML_Char *m_declNotationPublicId; ELEMENT_TYPE *m_declElementType; ATTRIBUTE_ID *m_declAttributeId; XML_Bool m_declAttributeIsCdata; XML_Bool m_declAttributeIsId; DTD *m_dtd; const XML_Char *m_curBase; TAG *m_tagStack; TAG *m_freeTagList; BINDING *m_inheritedBindings; BINDING *m_freeBindingList; int m_attsSize; int m_nSpecifiedAtts; int m_idAttIndex; ATTRIBUTE *m_atts; NS_ATT *m_nsAtts; unsigned long m_nsAttsVersion; unsigned char m_nsAttsPower; #ifdef XML_ATTR_INFO XML_AttrInfo *m_attInfo; #endif POSITION m_position; STRING_POOL m_tempPool; STRING_POOL m_temp2Pool; char *m_groupConnector; unsigned int m_groupSize; XML_Char m_namespaceSeparator; XML_Parser m_parentParser; XML_ParsingStatus m_parsingStatus; #ifdef XML_DTD XML_Bool m_isParamEntity; XML_Bool m_useForeignDTD; enum XML_ParamEntityParsing m_paramEntityParsing; #endif unsigned long m_hash_secret_salt; }; #define MALLOC(s) (parser->m_mem.malloc_fcn((s))) #define REALLOC(p,s) (parser->m_mem.realloc_fcn((p),(s))) #define FREE(p) (parser->m_mem.free_fcn((p))) #define userData (parser->m_userData) #define handlerArg (parser->m_handlerArg) #define startElementHandler (parser->m_startElementHandler) #define endElementHandler (parser->m_endElementHandler) #define characterDataHandler (parser->m_characterDataHandler) #define processingInstructionHandler \ (parser->m_processingInstructionHandler) #define commentHandler (parser->m_commentHandler) #define startCdataSectionHandler \ (parser->m_startCdataSectionHandler) #define endCdataSectionHandler (parser->m_endCdataSectionHandler) #define defaultHandler (parser->m_defaultHandler) #define startDoctypeDeclHandler (parser->m_startDoctypeDeclHandler) #define endDoctypeDeclHandler (parser->m_endDoctypeDeclHandler) #define unparsedEntityDeclHandler \ (parser->m_unparsedEntityDeclHandler) #define notationDeclHandler (parser->m_notationDeclHandler) #define startNamespaceDeclHandler \ (parser->m_startNamespaceDeclHandler) #define endNamespaceDeclHandler (parser->m_endNamespaceDeclHandler) #define notStandaloneHandler (parser->m_notStandaloneHandler) #define externalEntityRefHandler \ (parser->m_externalEntityRefHandler) #define externalEntityRefHandlerArg \ (parser->m_externalEntityRefHandlerArg) #define internalEntityRefHandler \ (parser->m_internalEntityRefHandler) #define skippedEntityHandler (parser->m_skippedEntityHandler) #define unknownEncodingHandler (parser->m_unknownEncodingHandler) #define elementDeclHandler (parser->m_elementDeclHandler) #define attlistDeclHandler (parser->m_attlistDeclHandler) #define entityDeclHandler (parser->m_entityDeclHandler) #define xmlDeclHandler (parser->m_xmlDeclHandler) #define encoding (parser->m_encoding) #define initEncoding (parser->m_initEncoding) #define internalEncoding (parser->m_internalEncoding) #define unknownEncodingMem (parser->m_unknownEncodingMem) #define unknownEncodingData (parser->m_unknownEncodingData) #define unknownEncodingHandlerData \ (parser->m_unknownEncodingHandlerData) #define unknownEncodingRelease (parser->m_unknownEncodingRelease) #define protocolEncodingName (parser->m_protocolEncodingName) #define ns (parser->m_ns) #define ns_triplets (parser->m_ns_triplets) #define prologState (parser->m_prologState) #define processor (parser->m_processor) #define errorCode (parser->m_errorCode) #define eventPtr (parser->m_eventPtr) #define eventEndPtr (parser->m_eventEndPtr) #define positionPtr (parser->m_positionPtr) #define position (parser->m_position) #define openInternalEntities (parser->m_openInternalEntities) #define freeInternalEntities (parser->m_freeInternalEntities) #define defaultExpandInternalEntities \ (parser->m_defaultExpandInternalEntities) #define tagLevel (parser->m_tagLevel) #define buffer (parser->m_buffer) #define bufferPtr (parser->m_bufferPtr) #define bufferEnd (parser->m_bufferEnd) #define parseEndByteIndex (parser->m_parseEndByteIndex) #define parseEndPtr (parser->m_parseEndPtr) #define bufferLim (parser->m_bufferLim) #define dataBuf (parser->m_dataBuf) #define dataBufEnd (parser->m_dataBufEnd) #define _dtd (parser->m_dtd) #define curBase (parser->m_curBase) #define declEntity (parser->m_declEntity) #define doctypeName (parser->m_doctypeName) #define doctypeSysid (parser->m_doctypeSysid) #define doctypePubid (parser->m_doctypePubid) #define declAttributeType (parser->m_declAttributeType) #define declNotationName (parser->m_declNotationName) #define declNotationPublicId (parser->m_declNotationPublicId) #define declElementType (parser->m_declElementType) #define declAttributeId (parser->m_declAttributeId) #define declAttributeIsCdata (parser->m_declAttributeIsCdata) #define declAttributeIsId (parser->m_declAttributeIsId) #define freeTagList (parser->m_freeTagList) #define freeBindingList (parser->m_freeBindingList) #define inheritedBindings (parser->m_inheritedBindings) #define tagStack (parser->m_tagStack) #define atts (parser->m_atts) #define attsSize (parser->m_attsSize) #define nSpecifiedAtts (parser->m_nSpecifiedAtts) #define idAttIndex (parser->m_idAttIndex) #define nsAtts (parser->m_nsAtts) #define nsAttsVersion (parser->m_nsAttsVersion) #define nsAttsPower (parser->m_nsAttsPower) #define attInfo (parser->m_attInfo) #define tempPool (parser->m_tempPool) #define temp2Pool (parser->m_temp2Pool) #define groupConnector (parser->m_groupConnector) #define groupSize (parser->m_groupSize) #define namespaceSeparator (parser->m_namespaceSeparator) #define parentParser (parser->m_parentParser) #define ps_parsing (parser->m_parsingStatus.parsing) #define ps_finalBuffer (parser->m_parsingStatus.finalBuffer) #ifdef XML_DTD #define isParamEntity (parser->m_isParamEntity) #define useForeignDTD (parser->m_useForeignDTD) #define paramEntityParsing (parser->m_paramEntityParsing) #endif /* XML_DTD */ #define hash_secret_salt (parser->m_hash_secret_salt) XML_Parser XMLCALL XML_ParserCreate(const XML_Char *encodingName) { return XML_ParserCreate_MM(encodingName, NULL, NULL); } XML_Parser XMLCALL XML_ParserCreateNS(const XML_Char *encodingName, XML_Char nsSep) { XML_Char tmp[2]; *tmp = nsSep; return XML_ParserCreate_MM(encodingName, NULL, tmp); } static const XML_Char implicitContext[] = { ASCII_x, ASCII_m, ASCII_l, ASCII_EQUALS, ASCII_h, ASCII_t, ASCII_t, ASCII_p, ASCII_COLON, ASCII_SLASH, ASCII_SLASH, ASCII_w, ASCII_w, ASCII_w, ASCII_PERIOD, ASCII_w, ASCII_3, ASCII_PERIOD, ASCII_o, ASCII_r, ASCII_g, ASCII_SLASH, ASCII_X, ASCII_M, ASCII_L, ASCII_SLASH, ASCII_1, ASCII_9, ASCII_9, ASCII_8, ASCII_SLASH, ASCII_n, ASCII_a, ASCII_m, ASCII_e, ASCII_s, ASCII_p, ASCII_a, ASCII_c, ASCII_e, '\0' }; static unsigned long generate_hash_secret_salt(void) { unsigned int seed = time(NULL) % UINT_MAX; srand(seed); return rand(); } static XML_Bool /* only valid for root parser */ startParsing(XML_Parser parser) { /* hash functions must be initialized before setContext() is called */ if (hash_secret_salt == 0) hash_secret_salt = generate_hash_secret_salt(); if (ns) { /* implicit context only set for root parser, since child parsers (i.e. external entity parsers) will inherit it */ return setContext(parser, implicitContext); } return XML_TRUE; } XML_Parser XMLCALL XML_ParserCreate_MM(const XML_Char *encodingName, const XML_Memory_Handling_Suite *memsuite, const XML_Char *nameSep) { return parserCreate(encodingName, memsuite, nameSep, NULL); } static XML_Parser parserCreate(const XML_Char *encodingName, const XML_Memory_Handling_Suite *memsuite, const XML_Char *nameSep, DTD *dtd) { XML_Parser parser; if (memsuite) { XML_Memory_Handling_Suite *mtemp; parser = (XML_Parser) memsuite->malloc_fcn(sizeof(struct XML_ParserStruct)); if (parser != NULL) { mtemp = (XML_Memory_Handling_Suite *)&(parser->m_mem); mtemp->malloc_fcn = memsuite->malloc_fcn; mtemp->realloc_fcn = memsuite->realloc_fcn; mtemp->free_fcn = memsuite->free_fcn; } } else { XML_Memory_Handling_Suite *mtemp; parser = (XML_Parser)malloc(sizeof(struct XML_ParserStruct)); if (parser != NULL) { mtemp = (XML_Memory_Handling_Suite *)&(parser->m_mem); mtemp->malloc_fcn = malloc; mtemp->realloc_fcn = realloc; mtemp->free_fcn = free; } } if (!parser) return parser; buffer = NULL; bufferLim = NULL; attsSize = INIT_ATTS_SIZE; atts = (ATTRIBUTE *)MALLOC(attsSize * sizeof(ATTRIBUTE)); if (atts == NULL) { FREE(parser); return NULL; } #ifdef XML_ATTR_INFO attInfo = (XML_AttrInfo*)MALLOC(attsSize * sizeof(XML_AttrInfo)); if (attInfo == NULL) { FREE(atts); FREE(parser); return NULL; } #endif dataBuf = (XML_Char *)MALLOC(INIT_DATA_BUF_SIZE * sizeof(XML_Char)); if (dataBuf == NULL) { FREE(atts); #ifdef XML_ATTR_INFO FREE(attInfo); #endif FREE(parser); return NULL; } dataBufEnd = dataBuf + INIT_DATA_BUF_SIZE; if (dtd) _dtd = dtd; else { _dtd = dtdCreate(&parser->m_mem); if (_dtd == NULL) { FREE(dataBuf); FREE(atts); #ifdef XML_ATTR_INFO FREE(attInfo); #endif FREE(parser); return NULL; } } freeBindingList = NULL; freeTagList = NULL; freeInternalEntities = NULL; groupSize = 0; groupConnector = NULL; unknownEncodingHandler = NULL; unknownEncodingHandlerData = NULL; namespaceSeparator = ASCII_EXCL; ns = XML_FALSE; ns_triplets = XML_FALSE; nsAtts = NULL; nsAttsVersion = 0; nsAttsPower = 0; poolInit(&tempPool, &(parser->m_mem)); poolInit(&temp2Pool, &(parser->m_mem)); parserInit(parser, encodingName); if (encodingName && !protocolEncodingName) { XML_ParserFree(parser); return NULL; } if (nameSep) { ns = XML_TRUE; internalEncoding = XmlGetInternalEncodingNS(); namespaceSeparator = *nameSep; } else { internalEncoding = XmlGetInternalEncoding(); } return parser; } static void parserInit(XML_Parser parser, const XML_Char *encodingName) { processor = prologInitProcessor; XmlPrologStateInit(&prologState); protocolEncodingName = (encodingName != NULL ? poolCopyString(&tempPool, encodingName) : NULL); curBase = NULL; XmlInitEncoding(&initEncoding, &encoding, 0); userData = NULL; handlerArg = NULL; startElementHandler = NULL; endElementHandler = NULL; characterDataHandler = NULL; processingInstructionHandler = NULL; commentHandler = NULL; startCdataSectionHandler = NULL; endCdataSectionHandler = NULL; defaultHandler = NULL; startDoctypeDeclHandler = NULL; endDoctypeDeclHandler = NULL; unparsedEntityDeclHandler = NULL; notationDeclHandler = NULL; startNamespaceDeclHandler = NULL; endNamespaceDeclHandler = NULL; notStandaloneHandler = NULL; externalEntityRefHandler = NULL; externalEntityRefHandlerArg = parser; skippedEntityHandler = NULL; elementDeclHandler = NULL; attlistDeclHandler = NULL; entityDeclHandler = NULL; xmlDeclHandler = NULL; bufferPtr = buffer; bufferEnd = buffer; parseEndByteIndex = 0; parseEndPtr = NULL; declElementType = NULL; declAttributeId = NULL; declEntity = NULL; doctypeName = NULL; doctypeSysid = NULL; doctypePubid = NULL; declAttributeType = NULL; declNotationName = NULL; declNotationPublicId = NULL; declAttributeIsCdata = XML_FALSE; declAttributeIsId = XML_FALSE; memset(&position, 0, sizeof(POSITION)); errorCode = XML_ERROR_NONE; eventPtr = NULL; eventEndPtr = NULL; positionPtr = NULL; openInternalEntities = NULL; defaultExpandInternalEntities = XML_TRUE; tagLevel = 0; tagStack = NULL; inheritedBindings = NULL; nSpecifiedAtts = 0; unknownEncodingMem = NULL; unknownEncodingRelease = NULL; unknownEncodingData = NULL; parentParser = NULL; ps_parsing = XML_INITIALIZED; #ifdef XML_DTD isParamEntity = XML_FALSE; useForeignDTD = XML_FALSE; paramEntityParsing = XML_PARAM_ENTITY_PARSING_NEVER; #endif hash_secret_salt = 0; } /* moves list of bindings to freeBindingList */ static void FASTCALL moveToFreeBindingList(XML_Parser parser, BINDING *bindings) { while (bindings) { BINDING *b = bindings; bindings = bindings->nextTagBinding; b->nextTagBinding = freeBindingList; freeBindingList = b; } } XML_Bool XMLCALL XML_ParserReset(XML_Parser parser, const XML_Char *encodingName) { TAG *tStk; OPEN_INTERNAL_ENTITY *openEntityList; if (parentParser) return XML_FALSE; /* move tagStack to freeTagList */ tStk = tagStack; while (tStk) { TAG *tag = tStk; tStk = tStk->parent; tag->parent = freeTagList; moveToFreeBindingList(parser, tag->bindings); tag->bindings = NULL; freeTagList = tag; } /* move openInternalEntities to freeInternalEntities */ openEntityList = openInternalEntities; while (openEntityList) { OPEN_INTERNAL_ENTITY *openEntity = openEntityList; openEntityList = openEntity->next; openEntity->next = freeInternalEntities; freeInternalEntities = openEntity; } moveToFreeBindingList(parser, inheritedBindings); FREE(unknownEncodingMem); if (unknownEncodingRelease) unknownEncodingRelease(unknownEncodingData); poolClear(&tempPool); poolClear(&temp2Pool); parserInit(parser, encodingName); dtdReset(_dtd, &parser->m_mem); return XML_TRUE; } enum XML_Status XMLCALL XML_SetEncoding(XML_Parser parser, const XML_Char *encodingName) { /* Block after XML_Parse()/XML_ParseBuffer() has been called. XXX There's no way for the caller to determine which of the XXX possible error cases caused the XML_STATUS_ERROR return. */ if (ps_parsing == XML_PARSING || ps_parsing == XML_SUSPENDED) return XML_STATUS_ERROR; if (encodingName == NULL) protocolEncodingName = NULL; else { protocolEncodingName = poolCopyString(&tempPool, encodingName); if (!protocolEncodingName) return XML_STATUS_ERROR; } return XML_STATUS_OK; } XML_Parser XMLCALL XML_ExternalEntityParserCreate(XML_Parser oldParser, const XML_Char *context, const XML_Char *encodingName) { XML_Parser parser = oldParser; DTD *newDtd = NULL; DTD *oldDtd = _dtd; XML_StartElementHandler oldStartElementHandler = startElementHandler; XML_EndElementHandler oldEndElementHandler = endElementHandler; XML_CharacterDataHandler oldCharacterDataHandler = characterDataHandler; XML_ProcessingInstructionHandler oldProcessingInstructionHandler = processingInstructionHandler; XML_CommentHandler oldCommentHandler = commentHandler; XML_StartCdataSectionHandler oldStartCdataSectionHandler = startCdataSectionHandler; XML_EndCdataSectionHandler oldEndCdataSectionHandler = endCdataSectionHandler; XML_DefaultHandler oldDefaultHandler = defaultHandler; XML_UnparsedEntityDeclHandler oldUnparsedEntityDeclHandler = unparsedEntityDeclHandler; XML_NotationDeclHandler oldNotationDeclHandler = notationDeclHandler; XML_StartNamespaceDeclHandler oldStartNamespaceDeclHandler = startNamespaceDeclHandler; XML_EndNamespaceDeclHandler oldEndNamespaceDeclHandler = endNamespaceDeclHandler; XML_NotStandaloneHandler oldNotStandaloneHandler = notStandaloneHandler; XML_ExternalEntityRefHandler oldExternalEntityRefHandler = externalEntityRefHandler; XML_SkippedEntityHandler oldSkippedEntityHandler = skippedEntityHandler; XML_UnknownEncodingHandler oldUnknownEncodingHandler = unknownEncodingHandler; XML_ElementDeclHandler oldElementDeclHandler = elementDeclHandler; XML_AttlistDeclHandler oldAttlistDeclHandler = attlistDeclHandler; XML_EntityDeclHandler oldEntityDeclHandler = entityDeclHandler; XML_XmlDeclHandler oldXmlDeclHandler = xmlDeclHandler; ELEMENT_TYPE * oldDeclElementType = declElementType; void *oldUserData = userData; void *oldHandlerArg = handlerArg; XML_Bool oldDefaultExpandInternalEntities = defaultExpandInternalEntities; XML_Parser oldExternalEntityRefHandlerArg = externalEntityRefHandlerArg; #ifdef XML_DTD enum XML_ParamEntityParsing oldParamEntityParsing = paramEntityParsing; int oldInEntityValue = prologState.inEntityValue; #endif XML_Bool oldns_triplets = ns_triplets; /* Note that the new parser shares the same hash secret as the old parser, so that dtdCopy and copyEntityTable can lookup values from hash tables associated with either parser without us having to worry which hash secrets each table has. */ unsigned long oldhash_secret_salt = hash_secret_salt; #ifdef XML_DTD if (!context) newDtd = oldDtd; #endif /* XML_DTD */ /* Note that the magical uses of the pre-processor to make field access look more like C++ require that `parser' be overwritten here. This makes this function more painful to follow than it would be otherwise. */ if (ns) { XML_Char tmp[2]; *tmp = namespaceSeparator; parser = parserCreate(encodingName, &parser->m_mem, tmp, newDtd); } else { parser = parserCreate(encodingName, &parser->m_mem, NULL, newDtd); } if (!parser) return NULL; startElementHandler = oldStartElementHandler; endElementHandler = oldEndElementHandler; characterDataHandler = oldCharacterDataHandler; processingInstructionHandler = oldProcessingInstructionHandler; commentHandler = oldCommentHandler; startCdataSectionHandler = oldStartCdataSectionHandler; endCdataSectionHandler = oldEndCdataSectionHandler; defaultHandler = oldDefaultHandler; unparsedEntityDeclHandler = oldUnparsedEntityDeclHandler; notationDeclHandler = oldNotationDeclHandler; startNamespaceDeclHandler = oldStartNamespaceDeclHandler; endNamespaceDeclHandler = oldEndNamespaceDeclHandler; notStandaloneHandler = oldNotStandaloneHandler; externalEntityRefHandler = oldExternalEntityRefHandler; skippedEntityHandler = oldSkippedEntityHandler; unknownEncodingHandler = oldUnknownEncodingHandler; elementDeclHandler = oldElementDeclHandler; attlistDeclHandler = oldAttlistDeclHandler; entityDeclHandler = oldEntityDeclHandler; xmlDeclHandler = oldXmlDeclHandler; declElementType = oldDeclElementType; userData = oldUserData; if (oldUserData == oldHandlerArg) handlerArg = userData; else handlerArg = parser; if (oldExternalEntityRefHandlerArg != oldParser) externalEntityRefHandlerArg = oldExternalEntityRefHandlerArg; defaultExpandInternalEntities = oldDefaultExpandInternalEntities; ns_triplets = oldns_triplets; hash_secret_salt = oldhash_secret_salt; parentParser = oldParser; #ifdef XML_DTD paramEntityParsing = oldParamEntityParsing; prologState.inEntityValue = oldInEntityValue; if (context) { #endif /* XML_DTD */ if (!dtdCopy(oldParser, _dtd, oldDtd, &parser->m_mem) || !setContext(parser, context)) { XML_ParserFree(parser); return NULL; } processor = externalEntityInitProcessor; #ifdef XML_DTD } else { /* The DTD instance referenced by _dtd is shared between the document's root parser and external PE parsers, therefore one does not need to call setContext. In addition, one also *must* not call setContext, because this would overwrite existing prefix->binding pointers in _dtd with ones that get destroyed with the external PE parser. This would leave those prefixes with dangling pointers. */ isParamEntity = XML_TRUE; XmlPrologStateInitExternalEntity(&prologState); processor = externalParEntInitProcessor; } #endif /* XML_DTD */ return parser; } static void FASTCALL destroyBindings(BINDING *bindings, XML_Parser parser) { for (;;) { BINDING *b = bindings; if (!b) break; bindings = b->nextTagBinding; FREE(b->uri); FREE(b); } } void XMLCALL XML_ParserFree(XML_Parser parser) { TAG *tagList; OPEN_INTERNAL_ENTITY *entityList; if (parser == NULL) return; /* free tagStack and freeTagList */ tagList = tagStack; for (;;) { TAG *p; if (tagList == NULL) { if (freeTagList == NULL) break; tagList = freeTagList; freeTagList = NULL; } p = tagList; tagList = tagList->parent; FREE(p->buf); destroyBindings(p->bindings, parser); FREE(p); } /* free openInternalEntities and freeInternalEntities */ entityList = openInternalEntities; for (;;) { OPEN_INTERNAL_ENTITY *openEntity; if (entityList == NULL) { if (freeInternalEntities == NULL) break; entityList = freeInternalEntities; freeInternalEntities = NULL; } openEntity = entityList; entityList = entityList->next; FREE(openEntity); } destroyBindings(freeBindingList, parser); destroyBindings(inheritedBindings, parser); poolDestroy(&tempPool); poolDestroy(&temp2Pool); #ifdef XML_DTD /* external parameter entity parsers share the DTD structure parser->m_dtd with the root parser, so we must not destroy it */ if (!isParamEntity && _dtd) #else if (_dtd) #endif /* XML_DTD */ dtdDestroy(_dtd, (XML_Bool)!parentParser, &parser->m_mem); FREE((void *)atts); #ifdef XML_ATTR_INFO FREE((void *)attInfo); #endif FREE(groupConnector); FREE(buffer); FREE(dataBuf); FREE(nsAtts); FREE(unknownEncodingMem); if (unknownEncodingRelease) unknownEncodingRelease(unknownEncodingData); FREE(parser); } void XMLCALL XML_UseParserAsHandlerArg(XML_Parser parser) { handlerArg = parser; } enum XML_Error XMLCALL XML_UseForeignDTD(XML_Parser parser, XML_Bool useDTD) { #ifdef XML_DTD /* block after XML_Parse()/XML_ParseBuffer() has been called */ if (ps_parsing == XML_PARSING || ps_parsing == XML_SUSPENDED) return XML_ERROR_CANT_CHANGE_FEATURE_ONCE_PARSING; useForeignDTD = useDTD; return XML_ERROR_NONE; #else return XML_ERROR_FEATURE_REQUIRES_XML_DTD; #endif } void XMLCALL XML_SetReturnNSTriplet(XML_Parser parser, int do_nst) { /* block after XML_Parse()/XML_ParseBuffer() has been called */ if (ps_parsing == XML_PARSING || ps_parsing == XML_SUSPENDED) return; ns_triplets = do_nst ? XML_TRUE : XML_FALSE; } void XMLCALL XML_SetUserData(XML_Parser parser, void *p) { if (handlerArg == userData) handlerArg = userData = p; else userData = p; } enum XML_Status XMLCALL XML_SetBase(XML_Parser parser, const XML_Char *p) { if (p) { p = poolCopyString(&_dtd->pool, p); if (!p) return XML_STATUS_ERROR; curBase = p; } else curBase = NULL; return XML_STATUS_OK; } const XML_Char * XMLCALL XML_GetBase(XML_Parser parser) { return curBase; } int XMLCALL XML_GetSpecifiedAttributeCount(XML_Parser parser) { return nSpecifiedAtts; } int XMLCALL XML_GetIdAttributeIndex(XML_Parser parser) { return idAttIndex; } #ifdef XML_ATTR_INFO const XML_AttrInfo * XMLCALL XML_GetAttributeInfo(XML_Parser parser) { return attInfo; } #endif void XMLCALL XML_SetElementHandler(XML_Parser parser, XML_StartElementHandler start, XML_EndElementHandler end) { startElementHandler = start; endElementHandler = end; } void XMLCALL XML_SetStartElementHandler(XML_Parser parser, XML_StartElementHandler start) { startElementHandler = start; } void XMLCALL XML_SetEndElementHandler(XML_Parser parser, XML_EndElementHandler end) { endElementHandler = end; } void XMLCALL XML_SetCharacterDataHandler(XML_Parser parser, XML_CharacterDataHandler handler) { characterDataHandler = handler; } void XMLCALL XML_SetProcessingInstructionHandler(XML_Parser parser, XML_ProcessingInstructionHandler handler) { processingInstructionHandler = handler; } void XMLCALL XML_SetCommentHandler(XML_Parser parser, XML_CommentHandler handler) { commentHandler = handler; } void XMLCALL XML_SetCdataSectionHandler(XML_Parser parser, XML_StartCdataSectionHandler start, XML_EndCdataSectionHandler end) { startCdataSectionHandler = start; endCdataSectionHandler = end; } void XMLCALL XML_SetStartCdataSectionHandler(XML_Parser parser, XML_StartCdataSectionHandler start) { startCdataSectionHandler = start; } void XMLCALL XML_SetEndCdataSectionHandler(XML_Parser parser, XML_EndCdataSectionHandler end) { endCdataSectionHandler = end; } void XMLCALL XML_SetDefaultHandler(XML_Parser parser, XML_DefaultHandler handler) { defaultHandler = handler; defaultExpandInternalEntities = XML_FALSE; } void XMLCALL XML_SetDefaultHandlerExpand(XML_Parser parser, XML_DefaultHandler handler) { defaultHandler = handler; defaultExpandInternalEntities = XML_TRUE; } void XMLCALL XML_SetDoctypeDeclHandler(XML_Parser parser, XML_StartDoctypeDeclHandler start, XML_EndDoctypeDeclHandler end) { startDoctypeDeclHandler = start; endDoctypeDeclHandler = end; } void XMLCALL XML_SetStartDoctypeDeclHandler(XML_Parser parser, XML_StartDoctypeDeclHandler start) { startDoctypeDeclHandler = start; } void XMLCALL XML_SetEndDoctypeDeclHandler(XML_Parser parser, XML_EndDoctypeDeclHandler end) { endDoctypeDeclHandler = end; } void XMLCALL XML_SetUnparsedEntityDeclHandler(XML_Parser parser, XML_UnparsedEntityDeclHandler handler) { unparsedEntityDeclHandler = handler; } void XMLCALL XML_SetNotationDeclHandler(XML_Parser parser, XML_NotationDeclHandler handler) { notationDeclHandler = handler; } void XMLCALL XML_SetNamespaceDeclHandler(XML_Parser parser, XML_StartNamespaceDeclHandler start, XML_EndNamespaceDeclHandler end) { startNamespaceDeclHandler = start; endNamespaceDeclHandler = end; } void XMLCALL XML_SetStartNamespaceDeclHandler(XML_Parser parser, XML_StartNamespaceDeclHandler start) { startNamespaceDeclHandler = start; } void XMLCALL XML_SetEndNamespaceDeclHandler(XML_Parser parser, XML_EndNamespaceDeclHandler end) { endNamespaceDeclHandler = end; } void XMLCALL XML_SetNotStandaloneHandler(XML_Parser parser, XML_NotStandaloneHandler handler) { notStandaloneHandler = handler; } void XMLCALL XML_SetExternalEntityRefHandler(XML_Parser parser, XML_ExternalEntityRefHandler handler) { externalEntityRefHandler = handler; } void XMLCALL XML_SetExternalEntityRefHandlerArg(XML_Parser parser, void *arg) { if (arg) externalEntityRefHandlerArg = (XML_Parser)arg; else externalEntityRefHandlerArg = parser; } void XMLCALL XML_SetSkippedEntityHandler(XML_Parser parser, XML_SkippedEntityHandler handler) { skippedEntityHandler = handler; } void XMLCALL XML_SetUnknownEncodingHandler(XML_Parser parser, XML_UnknownEncodingHandler handler, void *data) { unknownEncodingHandler = handler; unknownEncodingHandlerData = data; } void XMLCALL XML_SetElementDeclHandler(XML_Parser parser, XML_ElementDeclHandler eldecl) { elementDeclHandler = eldecl; } void XMLCALL XML_SetAttlistDeclHandler(XML_Parser parser, XML_AttlistDeclHandler attdecl) { attlistDeclHandler = attdecl; } void XMLCALL XML_SetEntityDeclHandler(XML_Parser parser, XML_EntityDeclHandler handler) { entityDeclHandler = handler; } void XMLCALL XML_SetXmlDeclHandler(XML_Parser parser, XML_XmlDeclHandler handler) { xmlDeclHandler = handler; } int XMLCALL XML_SetParamEntityParsing(XML_Parser parser, enum XML_ParamEntityParsing peParsing) { /* block after XML_Parse()/XML_ParseBuffer() has been called */ if (ps_parsing == XML_PARSING || ps_parsing == XML_SUSPENDED) return 0; #ifdef XML_DTD paramEntityParsing = peParsing; return 1; #else return peParsing == XML_PARAM_ENTITY_PARSING_NEVER; #endif } int XMLCALL XML_SetHashSalt(XML_Parser parser, unsigned long hash_salt) { /* block after XML_Parse()/XML_ParseBuffer() has been called */ if (ps_parsing == XML_PARSING || ps_parsing == XML_SUSPENDED) return 0; hash_secret_salt = hash_salt; return 1; } enum XML_Status XMLCALL XML_Parse(XML_Parser parser, const char *s, int len, int isFinal) { switch (ps_parsing) { case XML_SUSPENDED: errorCode = XML_ERROR_SUSPENDED; return XML_STATUS_ERROR; case XML_FINISHED: errorCode = XML_ERROR_FINISHED; return XML_STATUS_ERROR; case XML_INITIALIZED: if (parentParser == NULL && !startParsing(parser)) { errorCode = XML_ERROR_NO_MEMORY; return XML_STATUS_ERROR; } default: ps_parsing = XML_PARSING; } if (len == 0) { ps_finalBuffer = (XML_Bool)isFinal; if (!isFinal) return XML_STATUS_OK; positionPtr = bufferPtr; parseEndPtr = bufferEnd; /* If data are left over from last buffer, and we now know that these data are the final chunk of input, then we have to check them again to detect errors based on that fact. */ errorCode = processor(parser, bufferPtr, parseEndPtr, &bufferPtr); if (errorCode == XML_ERROR_NONE) { switch (ps_parsing) { case XML_SUSPENDED: XmlUpdatePosition(encoding, positionPtr, bufferPtr, &position); positionPtr = bufferPtr; return XML_STATUS_SUSPENDED; case XML_INITIALIZED: case XML_PARSING: ps_parsing = XML_FINISHED; /* fall through */ default: return XML_STATUS_OK; } } eventEndPtr = eventPtr; processor = errorProcessor; return XML_STATUS_ERROR; } #ifndef XML_CONTEXT_BYTES else if (bufferPtr == bufferEnd) { const char *end; int nLeftOver; enum XML_Status result; parseEndByteIndex += len; positionPtr = s; ps_finalBuffer = (XML_Bool)isFinal; errorCode = processor(parser, s, parseEndPtr = s + len, &end); if (errorCode != XML_ERROR_NONE) { eventEndPtr = eventPtr; processor = errorProcessor; return XML_STATUS_ERROR; } else { switch (ps_parsing) { case XML_SUSPENDED: result = XML_STATUS_SUSPENDED; break; case XML_INITIALIZED: case XML_PARSING: if (isFinal) { ps_parsing = XML_FINISHED; return XML_STATUS_OK; } /* fall through */ default: result = XML_STATUS_OK; } } XmlUpdatePosition(encoding, positionPtr, end, &position); nLeftOver = s + len - end; if (nLeftOver) { if (buffer == NULL || nLeftOver > bufferLim - buffer) { /* FIXME avoid integer overflow */ char *temp; temp = (buffer == NULL ? (char *)MALLOC(len * 2) : (char *)REALLOC(buffer, len * 2)); if (temp == NULL) { errorCode = XML_ERROR_NO_MEMORY; eventPtr = eventEndPtr = NULL; processor = errorProcessor; return XML_STATUS_ERROR; } buffer = temp; bufferLim = buffer + len * 2; } memcpy(buffer, end, nLeftOver); } bufferPtr = buffer; bufferEnd = buffer + nLeftOver; positionPtr = bufferPtr; parseEndPtr = bufferEnd; eventPtr = bufferPtr; eventEndPtr = bufferPtr; return result; } #endif /* not defined XML_CONTEXT_BYTES */ else { void *buff = XML_GetBuffer(parser, len); if (buff == NULL) return XML_STATUS_ERROR; else { memcpy(buff, s, len); return XML_ParseBuffer(parser, len, isFinal); } } } enum XML_Status XMLCALL XML_ParseBuffer(XML_Parser parser, int len, int isFinal) { const char *start; enum XML_Status result = XML_STATUS_OK; switch (ps_parsing) { case XML_SUSPENDED: errorCode = XML_ERROR_SUSPENDED; return XML_STATUS_ERROR; case XML_FINISHED: errorCode = XML_ERROR_FINISHED; return XML_STATUS_ERROR; case XML_INITIALIZED: if (parentParser == NULL && !startParsing(parser)) { errorCode = XML_ERROR_NO_MEMORY; return XML_STATUS_ERROR; } default: ps_parsing = XML_PARSING; } start = bufferPtr; positionPtr = start; bufferEnd += len; parseEndPtr = bufferEnd; parseEndByteIndex += len; ps_finalBuffer = (XML_Bool)isFinal; errorCode = processor(parser, start, parseEndPtr, &bufferPtr); if (errorCode != XML_ERROR_NONE) { eventEndPtr = eventPtr; processor = errorProcessor; return XML_STATUS_ERROR; } else { switch (ps_parsing) { case XML_SUSPENDED: result = XML_STATUS_SUSPENDED; break; case XML_INITIALIZED: case XML_PARSING: if (isFinal) { ps_parsing = XML_FINISHED; return result; } default: ; /* should not happen */ } } XmlUpdatePosition(encoding, positionPtr, bufferPtr, &position); positionPtr = bufferPtr; return result; } void * XMLCALL XML_GetBuffer(XML_Parser parser, int len) { if (len < 0) { errorCode = XML_ERROR_NO_MEMORY; return NULL; } switch (ps_parsing) { case XML_SUSPENDED: errorCode = XML_ERROR_SUSPENDED; return NULL; case XML_FINISHED: errorCode = XML_ERROR_FINISHED; return NULL; default: ; } if (len > bufferLim - bufferEnd) { int neededSize = len + (int)(bufferEnd - bufferPtr); if (neededSize < 0) { errorCode = XML_ERROR_NO_MEMORY; return NULL; } #ifdef XML_CONTEXT_BYTES int keep = (int)(bufferPtr - buffer); if (keep > XML_CONTEXT_BYTES) keep = XML_CONTEXT_BYTES; neededSize += keep; #endif /* defined XML_CONTEXT_BYTES */ if (neededSize <= bufferLim - buffer) { #ifdef XML_CONTEXT_BYTES if (keep < bufferPtr - buffer) { int offset = (int)(bufferPtr - buffer) - keep; memmove(buffer, &buffer[offset], bufferEnd - bufferPtr + keep); bufferEnd -= offset; bufferPtr -= offset; } #else memmove(buffer, bufferPtr, bufferEnd - bufferPtr); bufferEnd = buffer + (bufferEnd - bufferPtr); bufferPtr = buffer; #endif /* not defined XML_CONTEXT_BYTES */ } else { char *newBuf; int bufferSize = (int)(bufferLim - bufferPtr); if (bufferSize == 0) bufferSize = INIT_BUFFER_SIZE; do { bufferSize *= 2; } while (bufferSize < neededSize && bufferSize > 0); if (bufferSize <= 0) { errorCode = XML_ERROR_NO_MEMORY; return NULL; } newBuf = (char *)MALLOC(bufferSize); if (newBuf == 0) { errorCode = XML_ERROR_NO_MEMORY; return NULL; } bufferLim = newBuf + bufferSize; #ifdef XML_CONTEXT_BYTES if (bufferPtr) { int keep = (int)(bufferPtr - buffer); if (keep > XML_CONTEXT_BYTES) keep = XML_CONTEXT_BYTES; memcpy(newBuf, &bufferPtr[-keep], bufferEnd - bufferPtr + keep); FREE(buffer); buffer = newBuf; bufferEnd = buffer + (bufferEnd - bufferPtr) + keep; bufferPtr = buffer + keep; } else { bufferEnd = newBuf + (bufferEnd - bufferPtr); bufferPtr = buffer = newBuf; } #else if (bufferPtr) { memcpy(newBuf, bufferPtr, bufferEnd - bufferPtr); FREE(buffer); } bufferEnd = newBuf + (bufferEnd - bufferPtr); bufferPtr = buffer = newBuf; #endif /* not defined XML_CONTEXT_BYTES */ } eventPtr = eventEndPtr = NULL; positionPtr = NULL; } return bufferEnd; } enum XML_Status XMLCALL XML_StopParser(XML_Parser parser, XML_Bool resumable) { switch (ps_parsing) { case XML_SUSPENDED: if (resumable) { errorCode = XML_ERROR_SUSPENDED; return XML_STATUS_ERROR; } ps_parsing = XML_FINISHED; break; case XML_FINISHED: errorCode = XML_ERROR_FINISHED; return XML_STATUS_ERROR; default: if (resumable) { #ifdef XML_DTD if (isParamEntity) { errorCode = XML_ERROR_SUSPEND_PE; return XML_STATUS_ERROR; } #endif ps_parsing = XML_SUSPENDED; } else ps_parsing = XML_FINISHED; } return XML_STATUS_OK; } enum XML_Status XMLCALL XML_ResumeParser(XML_Parser parser) { enum XML_Status result = XML_STATUS_OK; if (ps_parsing != XML_SUSPENDED) { errorCode = XML_ERROR_NOT_SUSPENDED; return XML_STATUS_ERROR; } ps_parsing = XML_PARSING; errorCode = processor(parser, bufferPtr, parseEndPtr, &bufferPtr); if (errorCode != XML_ERROR_NONE) { eventEndPtr = eventPtr; processor = errorProcessor; return XML_STATUS_ERROR; } else { switch (ps_parsing) { case XML_SUSPENDED: result = XML_STATUS_SUSPENDED; break; case XML_INITIALIZED: case XML_PARSING: if (ps_finalBuffer) { ps_parsing = XML_FINISHED; return result; } default: ; } } XmlUpdatePosition(encoding, positionPtr, bufferPtr, &position); positionPtr = bufferPtr; return result; } void XMLCALL XML_GetParsingStatus(XML_Parser parser, XML_ParsingStatus *status) { assert(status != NULL); *status = parser->m_parsingStatus; } enum XML_Error XMLCALL XML_GetErrorCode(XML_Parser parser) { return errorCode; } XML_Index XMLCALL XML_GetCurrentByteIndex(XML_Parser parser) { if (eventPtr) return parseEndByteIndex - (parseEndPtr - eventPtr); return -1; } int XMLCALL XML_GetCurrentByteCount(XML_Parser parser) { if (eventEndPtr && eventPtr) return (int)(eventEndPtr - eventPtr); return 0; } const char * XMLCALL XML_GetInputContext(XML_Parser parser, int *offset, int *size) { #ifdef XML_CONTEXT_BYTES if (eventPtr && buffer) { *offset = (int)(eventPtr - buffer); *size = (int)(bufferEnd - buffer); return buffer; } #endif /* defined XML_CONTEXT_BYTES */ return (char *) 0; } XML_Size XMLCALL XML_GetCurrentLineNumber(XML_Parser parser) { if (eventPtr && eventPtr >= positionPtr) { XmlUpdatePosition(encoding, positionPtr, eventPtr, &position); positionPtr = eventPtr; } return position.lineNumber + 1; } XML_Size XMLCALL XML_GetCurrentColumnNumber(XML_Parser parser) { if (eventPtr && eventPtr >= positionPtr) { XmlUpdatePosition(encoding, positionPtr, eventPtr, &position); positionPtr = eventPtr; } return position.columnNumber; } void XMLCALL XML_FreeContentModel(XML_Parser parser, XML_Content *model) { FREE(model); } void * XMLCALL XML_MemMalloc(XML_Parser parser, size_t size) { return MALLOC(size); } void * XMLCALL XML_MemRealloc(XML_Parser parser, void *ptr, size_t size) { return REALLOC(ptr, size); } void XMLCALL XML_MemFree(XML_Parser parser, void *ptr) { FREE(ptr); } void XMLCALL XML_DefaultCurrent(XML_Parser parser) { if (defaultHandler) { if (openInternalEntities) reportDefault(parser, internalEncoding, openInternalEntities->internalEventPtr, openInternalEntities->internalEventEndPtr); else reportDefault(parser, encoding, eventPtr, eventEndPtr); } } const XML_LChar * XMLCALL XML_ErrorString(enum XML_Error code) { static const XML_LChar* const message[] = { 0, XML_L("out of memory"), XML_L("syntax error"), XML_L("no element found"), XML_L("not well-formed (invalid token)"), XML_L("unclosed token"), XML_L("partial character"), XML_L("mismatched tag"), XML_L("duplicate attribute"), XML_L("junk after document element"), XML_L("illegal parameter entity reference"), XML_L("undefined entity"), XML_L("recursive entity reference"), XML_L("asynchronous entity"), XML_L("reference to invalid character number"), XML_L("reference to binary entity"), XML_L("reference to external entity in attribute"), XML_L("XML or text declaration not at start of entity"), XML_L("unknown encoding"), XML_L("encoding specified in XML declaration is incorrect"), XML_L("unclosed CDATA section"), XML_L("error in processing external entity reference"), XML_L("document is not standalone"), XML_L("unexpected parser state - please send a bug report"), XML_L("entity declared in parameter entity"), XML_L("requested feature requires XML_DTD support in Expat"), XML_L("cannot change setting once parsing has begun"), XML_L("unbound prefix"), XML_L("must not undeclare prefix"), XML_L("incomplete markup in parameter entity"), XML_L("XML declaration not well-formed"), XML_L("text declaration not well-formed"), XML_L("illegal character(s) in public id"), XML_L("parser suspended"), XML_L("parser not suspended"), XML_L("parsing aborted"), XML_L("parsing finished"), XML_L("cannot suspend in external parameter entity"), XML_L("reserved prefix (xml) must not be undeclared or bound to another namespace name"), XML_L("reserved prefix (xmlns) must not be declared or undeclared"), XML_L("prefix must not be bound to one of the reserved namespace names") }; if (code > 0 && code < sizeof(message)/sizeof(message[0])) return message[code]; return NULL; } const XML_LChar * XMLCALL XML_ExpatVersion(void) { /* V1 is used to string-ize the version number. However, it would string-ize the actual version macro *names* unless we get them substituted before being passed to V1. CPP is defined to expand a macro, then rescan for more expansions. Thus, we use V2 to expand the version macros, then CPP will expand the resulting V1() macro with the correct numerals. */ /* ### I'm assuming cpp is portable in this respect... */ #define V1(a,b,c) XML_L(#a)XML_L(".")XML_L(#b)XML_L(".")XML_L(#c) #define V2(a,b,c) XML_L("expat_")V1(a,b,c) return V2(XML_MAJOR_VERSION, XML_MINOR_VERSION, XML_MICRO_VERSION); #undef V1 #undef V2 } XML_Expat_Version XMLCALL XML_ExpatVersionInfo(void) { XML_Expat_Version version; version.major = XML_MAJOR_VERSION; version.minor = XML_MINOR_VERSION; version.micro = XML_MICRO_VERSION; return version; } const XML_Feature * XMLCALL XML_GetFeatureList(void) { static const XML_Feature features[] = { {XML_FEATURE_SIZEOF_XML_CHAR, XML_L("sizeof(XML_Char)"), sizeof(XML_Char)}, {XML_FEATURE_SIZEOF_XML_LCHAR, XML_L("sizeof(XML_LChar)"), sizeof(XML_LChar)}, #ifdef XML_UNICODE {XML_FEATURE_UNICODE, XML_L("XML_UNICODE"), 0}, #endif #ifdef XML_UNICODE_WCHAR_T {XML_FEATURE_UNICODE_WCHAR_T, XML_L("XML_UNICODE_WCHAR_T"), 0}, #endif #ifdef XML_DTD {XML_FEATURE_DTD, XML_L("XML_DTD"), 0}, #endif #ifdef XML_CONTEXT_BYTES {XML_FEATURE_CONTEXT_BYTES, XML_L("XML_CONTEXT_BYTES"), XML_CONTEXT_BYTES}, #endif #ifdef XML_MIN_SIZE {XML_FEATURE_MIN_SIZE, XML_L("XML_MIN_SIZE"), 0}, #endif #ifdef XML_NS {XML_FEATURE_NS, XML_L("XML_NS"), 0}, #endif #ifdef XML_LARGE_SIZE {XML_FEATURE_LARGE_SIZE, XML_L("XML_LARGE_SIZE"), 0}, #endif #ifdef XML_ATTR_INFO {XML_FEATURE_ATTR_INFO, XML_L("XML_ATTR_INFO"), 0}, #endif {XML_FEATURE_END, NULL, 0} }; return features; } /* Initially tag->rawName always points into the parse buffer; for those TAG instances opened while the current parse buffer was processed, and not yet closed, we need to store tag->rawName in a more permanent location, since the parse buffer is about to be discarded. */ static XML_Bool storeRawNames(XML_Parser parser) { TAG *tag = tagStack; while (tag) { int bufSize; int nameLen = sizeof(XML_Char) * (tag->name.strLen + 1); char *rawNameBuf = tag->buf + nameLen; /* Stop if already stored. Since tagStack is a stack, we can stop at the first entry that has already been copied; everything below it in the stack is already been accounted for in a previous call to this function. */ if (tag->rawName == rawNameBuf) break; /* For re-use purposes we need to ensure that the size of tag->buf is a multiple of sizeof(XML_Char). */ bufSize = nameLen + ROUND_UP(tag->rawNameLength, sizeof(XML_Char)); if (bufSize > tag->bufEnd - tag->buf) { char *temp = (char *)REALLOC(tag->buf, bufSize); if (temp == NULL) return XML_FALSE; /* if tag->name.str points to tag->buf (only when namespace processing is off) then we have to update it */ if (tag->name.str == (XML_Char *)tag->buf) tag->name.str = (XML_Char *)temp; /* if tag->name.localPart is set (when namespace processing is on) then update it as well, since it will always point into tag->buf */ if (tag->name.localPart) tag->name.localPart = (XML_Char *)temp + (tag->name.localPart - (XML_Char *)tag->buf); tag->buf = temp; tag->bufEnd = temp + bufSize; rawNameBuf = temp + nameLen; } memcpy(rawNameBuf, tag->rawName, tag->rawNameLength); tag->rawName = rawNameBuf; tag = tag->parent; } return XML_TRUE; } static enum XML_Error PTRCALL contentProcessor(XML_Parser parser, const char *start, const char *end, const char **endPtr) { enum XML_Error result = doContent(parser, 0, encoding, start, end, endPtr, (XML_Bool)!ps_finalBuffer); if (result == XML_ERROR_NONE) { if (!storeRawNames(parser)) return XML_ERROR_NO_MEMORY; } return result; } static enum XML_Error PTRCALL externalEntityInitProcessor(XML_Parser parser, const char *start, const char *end, const char **endPtr) { enum XML_Error result = initializeEncoding(parser); if (result != XML_ERROR_NONE) return result; processor = externalEntityInitProcessor2; return externalEntityInitProcessor2(parser, start, end, endPtr); } static enum XML_Error PTRCALL externalEntityInitProcessor2(XML_Parser parser, const char *start, const char *end, const char **endPtr) { const char *next = start; /* XmlContentTok doesn't always set the last arg */ int tok = XmlContentTok(encoding, start, end, &next); switch (tok) { case XML_TOK_BOM: /* If we are at the end of the buffer, this would cause the next stage, i.e. externalEntityInitProcessor3, to pass control directly to doContent (by detecting XML_TOK_NONE) without processing any xml text declaration - causing the error XML_ERROR_MISPLACED_XML_PI in doContent. */ if (next == end && !ps_finalBuffer) { *endPtr = next; return XML_ERROR_NONE; } start = next; break; case XML_TOK_PARTIAL: if (!ps_finalBuffer) { *endPtr = start; return XML_ERROR_NONE; } eventPtr = start; return XML_ERROR_UNCLOSED_TOKEN; case XML_TOK_PARTIAL_CHAR: if (!ps_finalBuffer) { *endPtr = start; return XML_ERROR_NONE; } eventPtr = start; return XML_ERROR_PARTIAL_CHAR; } processor = externalEntityInitProcessor3; return externalEntityInitProcessor3(parser, start, end, endPtr); } static enum XML_Error PTRCALL externalEntityInitProcessor3(XML_Parser parser, const char *start, const char *end, const char **endPtr) { int tok; const char *next = start; /* XmlContentTok doesn't always set the last arg */ eventPtr = start; tok = XmlContentTok(encoding, start, end, &next); eventEndPtr = next; switch (tok) { case XML_TOK_XML_DECL: { enum XML_Error result; result = processXmlDecl(parser, 1, start, next); if (result != XML_ERROR_NONE) return result; switch (ps_parsing) { case XML_SUSPENDED: *endPtr = next; return XML_ERROR_NONE; case XML_FINISHED: return XML_ERROR_ABORTED; default: start = next; } } break; case XML_TOK_PARTIAL: if (!ps_finalBuffer) { *endPtr = start; return XML_ERROR_NONE; } return XML_ERROR_UNCLOSED_TOKEN; case XML_TOK_PARTIAL_CHAR: if (!ps_finalBuffer) { *endPtr = start; return XML_ERROR_NONE; } return XML_ERROR_PARTIAL_CHAR; } processor = externalEntityContentProcessor; tagLevel = 1; return externalEntityContentProcessor(parser, start, end, endPtr); } static enum XML_Error PTRCALL externalEntityContentProcessor(XML_Parser parser, const char *start, const char *end, const char **endPtr) { enum XML_Error result = doContent(parser, 1, encoding, start, end, endPtr, (XML_Bool)!ps_finalBuffer); if (result == XML_ERROR_NONE) { if (!storeRawNames(parser)) return XML_ERROR_NO_MEMORY; } return result; } static enum XML_Error doContent(XML_Parser parser, int startTagLevel, const ENCODING *enc, const char *s, const char *end, const char **nextPtr, XML_Bool haveMore) { /* save one level of indirection */ DTD * const dtd = _dtd; const char **eventPP; const char **eventEndPP; if (enc == encoding) { eventPP = &eventPtr; eventEndPP = &eventEndPtr; } else { eventPP = &(openInternalEntities->internalEventPtr); eventEndPP = &(openInternalEntities->internalEventEndPtr); } *eventPP = s; for (;;) { const char *next = s; /* XmlContentTok doesn't always set the last arg */ int tok = XmlContentTok(enc, s, end, &next); *eventEndPP = next; switch (tok) { case XML_TOK_TRAILING_CR: if (haveMore) { *nextPtr = s; return XML_ERROR_NONE; } *eventEndPP = end; if (characterDataHandler) { XML_Char c = 0xA; characterDataHandler(handlerArg, &c, 1); } else if (defaultHandler) reportDefault(parser, enc, s, end); /* We are at the end of the final buffer, should we check for XML_SUSPENDED, XML_FINISHED? */ if (startTagLevel == 0) return XML_ERROR_NO_ELEMENTS; if (tagLevel != startTagLevel) return XML_ERROR_ASYNC_ENTITY; *nextPtr = end; return XML_ERROR_NONE; case XML_TOK_NONE: if (haveMore) { *nextPtr = s; return XML_ERROR_NONE; } if (startTagLevel > 0) { if (tagLevel != startTagLevel) return XML_ERROR_ASYNC_ENTITY; *nextPtr = s; return XML_ERROR_NONE; } return XML_ERROR_NO_ELEMENTS; case XML_TOK_INVALID: *eventPP = next; return XML_ERROR_INVALID_TOKEN; case XML_TOK_PARTIAL: if (haveMore) { *nextPtr = s; return XML_ERROR_NONE; } return XML_ERROR_UNCLOSED_TOKEN; case XML_TOK_PARTIAL_CHAR: if (haveMore) { *nextPtr = s; return XML_ERROR_NONE; } return XML_ERROR_PARTIAL_CHAR; case XML_TOK_ENTITY_REF: { const XML_Char *name; ENTITY *entity; XML_Char ch = (XML_Char) XmlPredefinedEntityName(enc, s + enc->minBytesPerChar, next - enc->minBytesPerChar); if (ch) { if (characterDataHandler) characterDataHandler(handlerArg, &ch, 1); else if (defaultHandler) reportDefault(parser, enc, s, next); break; } name = poolStoreString(&dtd->pool, enc, s + enc->minBytesPerChar, next - enc->minBytesPerChar); if (!name) return XML_ERROR_NO_MEMORY; entity = (ENTITY *)lookup(parser, &dtd->generalEntities, name, 0); poolDiscard(&dtd->pool); /* First, determine if a check for an existing declaration is needed; if yes, check that the entity exists, and that it is internal, otherwise call the skipped entity or default handler. */ if (!dtd->hasParamEntityRefs || dtd->standalone) { if (!entity) return XML_ERROR_UNDEFINED_ENTITY; else if (!entity->is_internal) return XML_ERROR_ENTITY_DECLARED_IN_PE; } else if (!entity) { if (skippedEntityHandler) skippedEntityHandler(handlerArg, name, 0); else if (defaultHandler) reportDefault(parser, enc, s, next); break; } if (entity->open) return XML_ERROR_RECURSIVE_ENTITY_REF; if (entity->notation) return XML_ERROR_BINARY_ENTITY_REF; if (entity->textPtr) { enum XML_Error result; if (!defaultExpandInternalEntities) { if (skippedEntityHandler) skippedEntityHandler(handlerArg, entity->name, 0); else if (defaultHandler) reportDefault(parser, enc, s, next); break; } result = processInternalEntity(parser, entity, XML_FALSE); if (result != XML_ERROR_NONE) return result; } else if (externalEntityRefHandler) { const XML_Char *context; entity->open = XML_TRUE; context = getContext(parser); entity->open = XML_FALSE; if (!context) return XML_ERROR_NO_MEMORY; if (!externalEntityRefHandler(externalEntityRefHandlerArg, context, entity->base, entity->systemId, entity->publicId)) return XML_ERROR_EXTERNAL_ENTITY_HANDLING; poolDiscard(&tempPool); } else if (defaultHandler) reportDefault(parser, enc, s, next); break; } case XML_TOK_START_TAG_NO_ATTS: /* fall through */ case XML_TOK_START_TAG_WITH_ATTS: { TAG *tag; enum XML_Error result; XML_Char *toPtr; if (freeTagList) { tag = freeTagList; freeTagList = freeTagList->parent; } else { tag = (TAG *)MALLOC(sizeof(TAG)); if (!tag) return XML_ERROR_NO_MEMORY; tag->buf = (char *)MALLOC(INIT_TAG_BUF_SIZE); if (!tag->buf) { FREE(tag); return XML_ERROR_NO_MEMORY; } tag->bufEnd = tag->buf + INIT_TAG_BUF_SIZE; } tag->bindings = NULL; tag->parent = tagStack; tagStack = tag; tag->name.localPart = NULL; tag->name.prefix = NULL; tag->rawName = s + enc->minBytesPerChar; tag->rawNameLength = XmlNameLength(enc, tag->rawName); ++tagLevel; { const char *rawNameEnd = tag->rawName + tag->rawNameLength; const char *fromPtr = tag->rawName; toPtr = (XML_Char *)tag->buf; for (;;) { int bufSize; int convLen; XmlConvert(enc, &fromPtr, rawNameEnd, (ICHAR **)&toPtr, (ICHAR *)tag->bufEnd - 1); convLen = (int)(toPtr - (XML_Char *)tag->buf); if (fromPtr == rawNameEnd) { tag->name.strLen = convLen; break; } bufSize = (int)(tag->bufEnd - tag->buf) << 1; { char *temp = (char *)REALLOC(tag->buf, bufSize); if (temp == NULL) return XML_ERROR_NO_MEMORY; tag->buf = temp; tag->bufEnd = temp + bufSize; toPtr = (XML_Char *)temp + convLen; } } } tag->name.str = (XML_Char *)tag->buf; *toPtr = XML_T('\0'); result = storeAtts(parser, enc, s, &(tag->name), &(tag->bindings)); if (result) return result; if (startElementHandler) startElementHandler(handlerArg, tag->name.str, (const XML_Char **)atts); else if (defaultHandler) reportDefault(parser, enc, s, next); poolClear(&tempPool); break; } case XML_TOK_EMPTY_ELEMENT_NO_ATTS: /* fall through */ case XML_TOK_EMPTY_ELEMENT_WITH_ATTS: { const char *rawName = s + enc->minBytesPerChar; enum XML_Error result; BINDING *bindings = NULL; XML_Bool noElmHandlers = XML_TRUE; TAG_NAME name; name.str = poolStoreString(&tempPool, enc, rawName, rawName + XmlNameLength(enc, rawName)); if (!name.str) return XML_ERROR_NO_MEMORY; poolFinish(&tempPool); result = storeAtts(parser, enc, s, &name, &bindings); if (result) return result; poolFinish(&tempPool); if (startElementHandler) { startElementHandler(handlerArg, name.str, (const XML_Char **)atts); noElmHandlers = XML_FALSE; } if (endElementHandler) { if (startElementHandler) *eventPP = *eventEndPP; endElementHandler(handlerArg, name.str); noElmHandlers = XML_FALSE; } if (noElmHandlers && defaultHandler) reportDefault(parser, enc, s, next); poolClear(&tempPool); while (bindings) { BINDING *b = bindings; if (endNamespaceDeclHandler) endNamespaceDeclHandler(handlerArg, b->prefix->name); bindings = bindings->nextTagBinding; b->nextTagBinding = freeBindingList; freeBindingList = b; b->prefix->binding = b->prevPrefixBinding; } } if (tagLevel == 0) return epilogProcessor(parser, next, end, nextPtr); break; case XML_TOK_END_TAG: if (tagLevel == startTagLevel) return XML_ERROR_ASYNC_ENTITY; else { int len; const char *rawName; TAG *tag = tagStack; tagStack = tag->parent; tag->parent = freeTagList; freeTagList = tag; rawName = s + enc->minBytesPerChar*2; len = XmlNameLength(enc, rawName); if (len != tag->rawNameLength || memcmp(tag->rawName, rawName, len) != 0) { *eventPP = rawName; return XML_ERROR_TAG_MISMATCH; } --tagLevel; if (endElementHandler) { const XML_Char *localPart; const XML_Char *prefix; XML_Char *uri; localPart = tag->name.localPart; if (ns && localPart) { /* localPart and prefix may have been overwritten in tag->name.str, since this points to the binding->uri buffer which gets re-used; so we have to add them again */ uri = (XML_Char *)tag->name.str + tag->name.uriLen; /* don't need to check for space - already done in storeAtts() */ while (*localPart) *uri++ = *localPart++; prefix = (XML_Char *)tag->name.prefix; if (ns_triplets && prefix) { *uri++ = namespaceSeparator; while (*prefix) *uri++ = *prefix++; } *uri = XML_T('\0'); } endElementHandler(handlerArg, tag->name.str); } else if (defaultHandler) reportDefault(parser, enc, s, next); while (tag->bindings) { BINDING *b = tag->bindings; if (endNamespaceDeclHandler) endNamespaceDeclHandler(handlerArg, b->prefix->name); tag->bindings = tag->bindings->nextTagBinding; b->nextTagBinding = freeBindingList; freeBindingList = b; b->prefix->binding = b->prevPrefixBinding; } if (tagLevel == 0) return epilogProcessor(parser, next, end, nextPtr); } break; case XML_TOK_CHAR_REF: { int n = XmlCharRefNumber(enc, s); if (n < 0) return XML_ERROR_BAD_CHAR_REF; if (characterDataHandler) { XML_Char buf[XML_ENCODE_MAX]; characterDataHandler(handlerArg, buf, XmlEncode(n, (ICHAR *)buf)); } else if (defaultHandler) reportDefault(parser, enc, s, next); } break; case XML_TOK_XML_DECL: return XML_ERROR_MISPLACED_XML_PI; case XML_TOK_DATA_NEWLINE: if (characterDataHandler) { XML_Char c = 0xA; characterDataHandler(handlerArg, &c, 1); } else if (defaultHandler) reportDefault(parser, enc, s, next); break; case XML_TOK_CDATA_SECT_OPEN: { enum XML_Error result; if (startCdataSectionHandler) startCdataSectionHandler(handlerArg); #if 0 /* Suppose you doing a transformation on a document that involves changing only the character data. You set up a defaultHandler and a characterDataHandler. The defaultHandler simply copies characters through. The characterDataHandler does the transformation and writes the characters out escaping them as necessary. This case will fail to work if we leave out the following two lines (because & and < inside CDATA sections will be incorrectly escaped). However, now we have a start/endCdataSectionHandler, so it seems easier to let the user deal with this. */ else if (characterDataHandler) characterDataHandler(handlerArg, dataBuf, 0); #endif else if (defaultHandler) reportDefault(parser, enc, s, next); result = doCdataSection(parser, enc, &next, end, nextPtr, haveMore); if (result != XML_ERROR_NONE) return result; else if (!next) { processor = cdataSectionProcessor; return result; } } break; case XML_TOK_TRAILING_RSQB: if (haveMore) { *nextPtr = s; return XML_ERROR_NONE; } if (characterDataHandler) { if (MUST_CONVERT(enc, s)) { ICHAR *dataPtr = (ICHAR *)dataBuf; XmlConvert(enc, &s, end, &dataPtr, (ICHAR *)dataBufEnd); characterDataHandler(handlerArg, dataBuf, (int)(dataPtr - (ICHAR *)dataBuf)); } else characterDataHandler(handlerArg, (XML_Char *)s, (int)((XML_Char *)end - (XML_Char *)s)); } else if (defaultHandler) reportDefault(parser, enc, s, end); /* We are at the end of the final buffer, should we check for XML_SUSPENDED, XML_FINISHED? */ if (startTagLevel == 0) { *eventPP = end; return XML_ERROR_NO_ELEMENTS; } if (tagLevel != startTagLevel) { *eventPP = end; return XML_ERROR_ASYNC_ENTITY; } *nextPtr = end; return XML_ERROR_NONE; case XML_TOK_DATA_CHARS: { XML_CharacterDataHandler charDataHandler = characterDataHandler; if (charDataHandler) { if (MUST_CONVERT(enc, s)) { for (;;) { ICHAR *dataPtr = (ICHAR *)dataBuf; XmlConvert(enc, &s, next, &dataPtr, (ICHAR *)dataBufEnd); *eventEndPP = s; charDataHandler(handlerArg, dataBuf, (int)(dataPtr - (ICHAR *)dataBuf)); if (s == next) break; *eventPP = s; } } else charDataHandler(handlerArg, (XML_Char *)s, (int)((XML_Char *)next - (XML_Char *)s)); } else if (defaultHandler) reportDefault(parser, enc, s, next); } break; case XML_TOK_PI: if (!reportProcessingInstruction(parser, enc, s, next)) return XML_ERROR_NO_MEMORY; break; case XML_TOK_COMMENT: if (!reportComment(parser, enc, s, next)) return XML_ERROR_NO_MEMORY; break; default: if (defaultHandler) reportDefault(parser, enc, s, next); break; } *eventPP = s = next; switch (ps_parsing) { case XML_SUSPENDED: *nextPtr = next; return XML_ERROR_NONE; case XML_FINISHED: return XML_ERROR_ABORTED; default: ; } } /* not reached */ } /* Precondition: all arguments must be non-NULL; Purpose: - normalize attributes - check attributes for well-formedness - generate namespace aware attribute names (URI, prefix) - build list of attributes for startElementHandler - default attributes - process namespace declarations (check and report them) - generate namespace aware element name (URI, prefix) */ static enum XML_Error storeAtts(XML_Parser parser, const ENCODING *enc, const char *attStr, TAG_NAME *tagNamePtr, BINDING **bindingsPtr) { DTD * const dtd = _dtd; /* save one level of indirection */ ELEMENT_TYPE *elementType; int nDefaultAtts; const XML_Char **appAtts; /* the attribute list for the application */ int attIndex = 0; int prefixLen; int i; int n; XML_Char *uri; int nPrefixes = 0; BINDING *binding; const XML_Char *localPart; /* lookup the element type name */ elementType = (ELEMENT_TYPE *)lookup(parser, &dtd->elementTypes, tagNamePtr->str,0); if (!elementType) { const XML_Char *name = poolCopyString(&dtd->pool, tagNamePtr->str); if (!name) return XML_ERROR_NO_MEMORY; elementType = (ELEMENT_TYPE *)lookup(parser, &dtd->elementTypes, name, sizeof(ELEMENT_TYPE)); if (!elementType) return XML_ERROR_NO_MEMORY; if (ns && !setElementTypePrefix(parser, elementType)) return XML_ERROR_NO_MEMORY; } nDefaultAtts = elementType->nDefaultAtts; /* get the attributes from the tokenizer */ n = XmlGetAttributes(enc, attStr, attsSize, atts); if (n + nDefaultAtts > attsSize) { int oldAttsSize = attsSize; ATTRIBUTE *temp; #ifdef XML_ATTR_INFO XML_AttrInfo *temp2; #endif attsSize = n + nDefaultAtts + INIT_ATTS_SIZE; temp = (ATTRIBUTE *)REALLOC((void *)atts, attsSize * sizeof(ATTRIBUTE)); if (temp == NULL) return XML_ERROR_NO_MEMORY; atts = temp; #ifdef XML_ATTR_INFO temp2 = (XML_AttrInfo *)REALLOC((void *)attInfo, attsSize * sizeof(XML_AttrInfo)); if (temp2 == NULL) return XML_ERROR_NO_MEMORY; attInfo = temp2; #endif if (n > oldAttsSize) XmlGetAttributes(enc, attStr, n, atts); } appAtts = (const XML_Char **)atts; for (i = 0; i < n; i++) { ATTRIBUTE *currAtt = &atts[i]; #ifdef XML_ATTR_INFO XML_AttrInfo *currAttInfo = &attInfo[i]; #endif /* add the name and value to the attribute list */ ATTRIBUTE_ID *attId = getAttributeId(parser, enc, currAtt->name, currAtt->name + XmlNameLength(enc, currAtt->name)); if (!attId) return XML_ERROR_NO_MEMORY; #ifdef XML_ATTR_INFO currAttInfo->nameStart = parseEndByteIndex - (parseEndPtr - currAtt->name); currAttInfo->nameEnd = currAttInfo->nameStart + XmlNameLength(enc, currAtt->name); currAttInfo->valueStart = parseEndByteIndex - (parseEndPtr - currAtt->valuePtr); currAttInfo->valueEnd = parseEndByteIndex - (parseEndPtr - currAtt->valueEnd); #endif /* Detect duplicate attributes by their QNames. This does not work when namespace processing is turned on and different prefixes for the same namespace are used. For this case we have a check further down. */ if ((attId->name)[-1]) { if (enc == encoding) eventPtr = atts[i].name; return XML_ERROR_DUPLICATE_ATTRIBUTE; } (attId->name)[-1] = 1; appAtts[attIndex++] = attId->name; if (!atts[i].normalized) { enum XML_Error result; XML_Bool isCdata = XML_TRUE; /* figure out whether declared as other than CDATA */ if (attId->maybeTokenized) { int j; for (j = 0; j < nDefaultAtts; j++) { if (attId == elementType->defaultAtts[j].id) { isCdata = elementType->defaultAtts[j].isCdata; break; } } } /* normalize the attribute value */ result = storeAttributeValue(parser, enc, isCdata, atts[i].valuePtr, atts[i].valueEnd, &tempPool); if (result) return result; appAtts[attIndex] = poolStart(&tempPool); poolFinish(&tempPool); } else { /* the value did not need normalizing */ appAtts[attIndex] = poolStoreString(&tempPool, enc, atts[i].valuePtr, atts[i].valueEnd); if (appAtts[attIndex] == 0) return XML_ERROR_NO_MEMORY; poolFinish(&tempPool); } /* handle prefixed attribute names */ if (attId->prefix) { if (attId->xmlns) { /* deal with namespace declarations here */ enum XML_Error result = addBinding(parser, attId->prefix, attId, appAtts[attIndex], bindingsPtr); if (result) return result; --attIndex; } else { /* deal with other prefixed names later */ attIndex++; nPrefixes++; (attId->name)[-1] = 2; } } else attIndex++; } /* set-up for XML_GetSpecifiedAttributeCount and XML_GetIdAttributeIndex */ nSpecifiedAtts = attIndex; if (elementType->idAtt && (elementType->idAtt->name)[-1]) { for (i = 0; i < attIndex; i += 2) if (appAtts[i] == elementType->idAtt->name) { idAttIndex = i; break; } } else idAttIndex = -1; /* do attribute defaulting */ for (i = 0; i < nDefaultAtts; i++) { const DEFAULT_ATTRIBUTE *da = elementType->defaultAtts + i; if (!(da->id->name)[-1] && da->value) { if (da->id->prefix) { if (da->id->xmlns) { enum XML_Error result = addBinding(parser, da->id->prefix, da->id, da->value, bindingsPtr); if (result) return result; } else { (da->id->name)[-1] = 2; nPrefixes++; appAtts[attIndex++] = da->id->name; appAtts[attIndex++] = da->value; } } else { (da->id->name)[-1] = 1; appAtts[attIndex++] = da->id->name; appAtts[attIndex++] = da->value; } } } appAtts[attIndex] = 0; /* expand prefixed attribute names, check for duplicates, and clear flags that say whether attributes were specified */ i = 0; if (nPrefixes) { int j; /* hash table index */ unsigned long version = nsAttsVersion; int nsAttsSize = (int)1 << nsAttsPower; /* size of hash table must be at least 2 * (# of prefixed attributes) */ if ((nPrefixes << 1) >> nsAttsPower) { /* true for nsAttsPower = 0 */ NS_ATT *temp; /* hash table size must also be a power of 2 and >= 8 */ while (nPrefixes >> nsAttsPower++); if (nsAttsPower < 3) nsAttsPower = 3; nsAttsSize = (int)1 << nsAttsPower; temp = (NS_ATT *)REALLOC(nsAtts, nsAttsSize * sizeof(NS_ATT)); if (!temp) return XML_ERROR_NO_MEMORY; nsAtts = temp; version = 0; /* force re-initialization of nsAtts hash table */ } /* using a version flag saves us from initializing nsAtts every time */ if (!version) { /* initialize version flags when version wraps around */ version = INIT_ATTS_VERSION; for (j = nsAttsSize; j != 0; ) nsAtts[--j].version = version; } nsAttsVersion = --version; /* expand prefixed names and check for duplicates */ for (; i < attIndex; i += 2) { const XML_Char *s = appAtts[i]; if (s[-1] == 2) { /* prefixed */ ATTRIBUTE_ID *id; const BINDING *b; unsigned long uriHash = hash_secret_salt; ((XML_Char *)s)[-1] = 0; /* clear flag */ id = (ATTRIBUTE_ID *)lookup(parser, &dtd->attributeIds, s, 0); if (!id || !id->prefix) return XML_ERROR_NO_MEMORY; b = id->prefix->binding; if (!b) return XML_ERROR_UNBOUND_PREFIX; /* as we expand the name we also calculate its hash value */ for (j = 0; j < b->uriLen; j++) { const XML_Char c = b->uri[j]; if (!poolAppendChar(&tempPool, c)) return XML_ERROR_NO_MEMORY; uriHash = CHAR_HASH(uriHash, c); } while (*s++ != XML_T(ASCII_COLON)) ; do { /* copies null terminator */ const XML_Char c = *s; if (!poolAppendChar(&tempPool, *s)) return XML_ERROR_NO_MEMORY; uriHash = CHAR_HASH(uriHash, c); } while (*s++); { /* Check hash table for duplicate of expanded name (uriName). Derived from code in lookup(parser, HASH_TABLE *table, ...). */ unsigned char step = 0; unsigned long mask = nsAttsSize - 1; j = uriHash & mask; /* index into hash table */ while (nsAtts[j].version == version) { /* for speed we compare stored hash values first */ if (uriHash == nsAtts[j].hash) { const XML_Char *s1 = poolStart(&tempPool); const XML_Char *s2 = nsAtts[j].uriName; /* s1 is null terminated, but not s2 */ for (; *s1 == *s2 && *s1 != 0; s1++, s2++); if (*s1 == 0) return XML_ERROR_DUPLICATE_ATTRIBUTE; } if (!step) step = PROBE_STEP(uriHash, mask, nsAttsPower); j < step ? (j += nsAttsSize - step) : (j -= step); } } if (ns_triplets) { /* append namespace separator and prefix */ tempPool.ptr[-1] = namespaceSeparator; s = b->prefix->name; do { if (!poolAppendChar(&tempPool, *s)) return XML_ERROR_NO_MEMORY; } while (*s++); } /* store expanded name in attribute list */ s = poolStart(&tempPool); poolFinish(&tempPool); appAtts[i] = s; /* fill empty slot with new version, uriName and hash value */ nsAtts[j].version = version; nsAtts[j].hash = uriHash; nsAtts[j].uriName = s; if (!--nPrefixes) { i += 2; break; } } else /* not prefixed */ ((XML_Char *)s)[-1] = 0; /* clear flag */ } } /* clear flags for the remaining attributes */ for (; i < attIndex; i += 2) ((XML_Char *)(appAtts[i]))[-1] = 0; for (binding = *bindingsPtr; binding; binding = binding->nextTagBinding) binding->attId->name[-1] = 0; if (!ns) return XML_ERROR_NONE; /* expand the element type name */ if (elementType->prefix) { binding = elementType->prefix->binding; if (!binding) return XML_ERROR_UNBOUND_PREFIX; localPart = tagNamePtr->str; while (*localPart++ != XML_T(ASCII_COLON)) ; } else if (dtd->defaultPrefix.binding) { binding = dtd->defaultPrefix.binding; localPart = tagNamePtr->str; } else return XML_ERROR_NONE; prefixLen = 0; if (ns_triplets && binding->prefix->name) { for (; binding->prefix->name[prefixLen++];) ; /* prefixLen includes null terminator */ } tagNamePtr->localPart = localPart; tagNamePtr->uriLen = binding->uriLen; tagNamePtr->prefix = binding->prefix->name; tagNamePtr->prefixLen = prefixLen; for (i = 0; localPart[i++];) ; /* i includes null terminator */ n = i + binding->uriLen + prefixLen; if (n > binding->uriAlloc) { TAG *p; uri = (XML_Char *)MALLOC((n + EXPAND_SPARE) * sizeof(XML_Char)); if (!uri) return XML_ERROR_NO_MEMORY; binding->uriAlloc = n + EXPAND_SPARE; memcpy(uri, binding->uri, binding->uriLen * sizeof(XML_Char)); for (p = tagStack; p; p = p->parent) if (p->name.str == binding->uri) p->name.str = uri; FREE(binding->uri); binding->uri = uri; } /* if namespaceSeparator != '\0' then uri includes it already */ uri = binding->uri + binding->uriLen; memcpy(uri, localPart, i * sizeof(XML_Char)); /* we always have a namespace separator between localPart and prefix */ if (prefixLen) { uri += i - 1; *uri = namespaceSeparator; /* replace null terminator */ memcpy(uri + 1, binding->prefix->name, prefixLen * sizeof(XML_Char)); } tagNamePtr->str = binding->uri; return XML_ERROR_NONE; } /* addBinding() overwrites the value of prefix->binding without checking. Therefore one must keep track of the old value outside of addBinding(). */ static enum XML_Error addBinding(XML_Parser parser, PREFIX *prefix, const ATTRIBUTE_ID *attId, const XML_Char *uri, BINDING **bindingsPtr) { static const XML_Char xmlNamespace[] = { ASCII_h, ASCII_t, ASCII_t, ASCII_p, ASCII_COLON, ASCII_SLASH, ASCII_SLASH, ASCII_w, ASCII_w, ASCII_w, ASCII_PERIOD, ASCII_w, ASCII_3, ASCII_PERIOD, ASCII_o, ASCII_r, ASCII_g, ASCII_SLASH, ASCII_X, ASCII_M, ASCII_L, ASCII_SLASH, ASCII_1, ASCII_9, ASCII_9, ASCII_8, ASCII_SLASH, ASCII_n, ASCII_a, ASCII_m, ASCII_e, ASCII_s, ASCII_p, ASCII_a, ASCII_c, ASCII_e, '\0' }; static const int xmlLen = (int)sizeof(xmlNamespace)/sizeof(XML_Char) - 1; static const XML_Char xmlnsNamespace[] = { ASCII_h, ASCII_t, ASCII_t, ASCII_p, ASCII_COLON, ASCII_SLASH, ASCII_SLASH, ASCII_w, ASCII_w, ASCII_w, ASCII_PERIOD, ASCII_w, ASCII_3, ASCII_PERIOD, ASCII_o, ASCII_r, ASCII_g, ASCII_SLASH, ASCII_2, ASCII_0, ASCII_0, ASCII_0, ASCII_SLASH, ASCII_x, ASCII_m, ASCII_l, ASCII_n, ASCII_s, ASCII_SLASH, '\0' }; static const int xmlnsLen = (int)sizeof(xmlnsNamespace)/sizeof(XML_Char) - 1; XML_Bool mustBeXML = XML_FALSE; XML_Bool isXML = XML_TRUE; XML_Bool isXMLNS = XML_TRUE; BINDING *b; int len; /* empty URI is only valid for default namespace per XML NS 1.0 (not 1.1) */ if (*uri == XML_T('\0') && prefix->name) return XML_ERROR_UNDECLARING_PREFIX; if (prefix->name && prefix->name[0] == XML_T(ASCII_x) && prefix->name[1] == XML_T(ASCII_m) && prefix->name[2] == XML_T(ASCII_l)) { /* Not allowed to bind xmlns */ if (prefix->name[3] == XML_T(ASCII_n) && prefix->name[4] == XML_T(ASCII_s) && prefix->name[5] == XML_T('\0')) return XML_ERROR_RESERVED_PREFIX_XMLNS; if (prefix->name[3] == XML_T('\0')) mustBeXML = XML_TRUE; } for (len = 0; uri[len]; len++) { if (isXML && (len > xmlLen || uri[len] != xmlNamespace[len])) isXML = XML_FALSE; if (!mustBeXML && isXMLNS && (len > xmlnsLen || uri[len] != xmlnsNamespace[len])) isXMLNS = XML_FALSE; } isXML = isXML && len == xmlLen; isXMLNS = isXMLNS && len == xmlnsLen; if (mustBeXML != isXML) return mustBeXML ? XML_ERROR_RESERVED_PREFIX_XML : XML_ERROR_RESERVED_NAMESPACE_URI; if (isXMLNS) return XML_ERROR_RESERVED_NAMESPACE_URI; if (namespaceSeparator) len++; if (freeBindingList) { b = freeBindingList; if (len > b->uriAlloc) { XML_Char *temp = (XML_Char *)REALLOC(b->uri, sizeof(XML_Char) * (len + EXPAND_SPARE)); if (temp == NULL) return XML_ERROR_NO_MEMORY; b->uri = temp; b->uriAlloc = len + EXPAND_SPARE; } freeBindingList = b->nextTagBinding; } else { b = (BINDING *)MALLOC(sizeof(BINDING)); if (!b) return XML_ERROR_NO_MEMORY; b->uri = (XML_Char *)MALLOC(sizeof(XML_Char) * (len + EXPAND_SPARE)); if (!b->uri) { FREE(b); return XML_ERROR_NO_MEMORY; } b->uriAlloc = len + EXPAND_SPARE; } b->uriLen = len; memcpy(b->uri, uri, len * sizeof(XML_Char)); if (namespaceSeparator) b->uri[len - 1] = namespaceSeparator; b->prefix = prefix; b->attId = attId; b->prevPrefixBinding = prefix->binding; /* NULL binding when default namespace undeclared */ if (*uri == XML_T('\0') && prefix == &_dtd->defaultPrefix) prefix->binding = NULL; else prefix->binding = b; b->nextTagBinding = *bindingsPtr; *bindingsPtr = b; /* if attId == NULL then we are not starting a namespace scope */ if (attId && startNamespaceDeclHandler) startNamespaceDeclHandler(handlerArg, prefix->name, prefix->binding ? uri : 0); return XML_ERROR_NONE; } /* The idea here is to avoid using stack for each CDATA section when the whole file is parsed with one call. */ static enum XML_Error PTRCALL cdataSectionProcessor(XML_Parser parser, const char *start, const char *end, const char **endPtr) { enum XML_Error result = doCdataSection(parser, encoding, &start, end, endPtr, (XML_Bool)!ps_finalBuffer); if (result != XML_ERROR_NONE) return result; if (start) { if (parentParser) { /* we are parsing an external entity */ processor = externalEntityContentProcessor; return externalEntityContentProcessor(parser, start, end, endPtr); } else { processor = contentProcessor; return contentProcessor(parser, start, end, endPtr); } } return result; } /* startPtr gets set to non-null if the section is closed, and to null if the section is not yet closed. */ static enum XML_Error doCdataSection(XML_Parser parser, const ENCODING *enc, const char **startPtr, const char *end, const char **nextPtr, XML_Bool haveMore) { const char *s = *startPtr; const char **eventPP; const char **eventEndPP; if (enc == encoding) { eventPP = &eventPtr; *eventPP = s; eventEndPP = &eventEndPtr; } else { eventPP = &(openInternalEntities->internalEventPtr); eventEndPP = &(openInternalEntities->internalEventEndPtr); } *eventPP = s; *startPtr = NULL; for (;;) { const char *next; int tok = XmlCdataSectionTok(enc, s, end, &next); *eventEndPP = next; switch (tok) { case XML_TOK_CDATA_SECT_CLOSE: if (endCdataSectionHandler) endCdataSectionHandler(handlerArg); #if 0 /* see comment under XML_TOK_CDATA_SECT_OPEN */ else if (characterDataHandler) characterDataHandler(handlerArg, dataBuf, 0); #endif else if (defaultHandler) reportDefault(parser, enc, s, next); *startPtr = next; *nextPtr = next; if (ps_parsing == XML_FINISHED) return XML_ERROR_ABORTED; else return XML_ERROR_NONE; case XML_TOK_DATA_NEWLINE: if (characterDataHandler) { XML_Char c = 0xA; characterDataHandler(handlerArg, &c, 1); } else if (defaultHandler) reportDefault(parser, enc, s, next); break; case XML_TOK_DATA_CHARS: { XML_CharacterDataHandler charDataHandler = characterDataHandler; if (charDataHandler) { if (MUST_CONVERT(enc, s)) { for (;;) { ICHAR *dataPtr = (ICHAR *)dataBuf; XmlConvert(enc, &s, next, &dataPtr, (ICHAR *)dataBufEnd); *eventEndPP = next; charDataHandler(handlerArg, dataBuf, (int)(dataPtr - (ICHAR *)dataBuf)); if (s == next) break; *eventPP = s; } } else charDataHandler(handlerArg, (XML_Char *)s, (int)((XML_Char *)next - (XML_Char *)s)); } else if (defaultHandler) reportDefault(parser, enc, s, next); } break; case XML_TOK_INVALID: *eventPP = next; return XML_ERROR_INVALID_TOKEN; case XML_TOK_PARTIAL_CHAR: if (haveMore) { *nextPtr = s; return XML_ERROR_NONE; } return XML_ERROR_PARTIAL_CHAR; case XML_TOK_PARTIAL: case XML_TOK_NONE: if (haveMore) { *nextPtr = s; return XML_ERROR_NONE; } return XML_ERROR_UNCLOSED_CDATA_SECTION; default: *eventPP = next; return XML_ERROR_UNEXPECTED_STATE; } *eventPP = s = next; switch (ps_parsing) { case XML_SUSPENDED: *nextPtr = next; return XML_ERROR_NONE; case XML_FINISHED: return XML_ERROR_ABORTED; default: ; } } /* not reached */ } #ifdef XML_DTD /* The idea here is to avoid using stack for each IGNORE section when the whole file is parsed with one call. */ static enum XML_Error PTRCALL ignoreSectionProcessor(XML_Parser parser, const char *start, const char *end, const char **endPtr) { enum XML_Error result = doIgnoreSection(parser, encoding, &start, end, endPtr, (XML_Bool)!ps_finalBuffer); if (result != XML_ERROR_NONE) return result; if (start) { processor = prologProcessor; return prologProcessor(parser, start, end, endPtr); } return result; } /* startPtr gets set to non-null is the section is closed, and to null if the section is not yet closed. */ static enum XML_Error doIgnoreSection(XML_Parser parser, const ENCODING *enc, const char **startPtr, const char *end, const char **nextPtr, XML_Bool haveMore) { const char *next; int tok; const char *s = *startPtr; const char **eventPP; const char **eventEndPP; if (enc == encoding) { eventPP = &eventPtr; *eventPP = s; eventEndPP = &eventEndPtr; } else { eventPP = &(openInternalEntities->internalEventPtr); eventEndPP = &(openInternalEntities->internalEventEndPtr); } *eventPP = s; *startPtr = NULL; tok = XmlIgnoreSectionTok(enc, s, end, &next); *eventEndPP = next; switch (tok) { case XML_TOK_IGNORE_SECT: if (defaultHandler) reportDefault(parser, enc, s, next); *startPtr = next; *nextPtr = next; if (ps_parsing == XML_FINISHED) return XML_ERROR_ABORTED; else return XML_ERROR_NONE; case XML_TOK_INVALID: *eventPP = next; return XML_ERROR_INVALID_TOKEN; case XML_TOK_PARTIAL_CHAR: if (haveMore) { *nextPtr = s; return XML_ERROR_NONE; } return XML_ERROR_PARTIAL_CHAR; case XML_TOK_PARTIAL: case XML_TOK_NONE: if (haveMore) { *nextPtr = s; return XML_ERROR_NONE; } return XML_ERROR_SYNTAX; /* XML_ERROR_UNCLOSED_IGNORE_SECTION */ default: *eventPP = next; return XML_ERROR_UNEXPECTED_STATE; } /* not reached */ } #endif /* XML_DTD */ static enum XML_Error initializeEncoding(XML_Parser parser) { const char *s; #ifdef XML_UNICODE char encodingBuf[128]; if (!protocolEncodingName) s = NULL; else { int i; for (i = 0; protocolEncodingName[i]; i++) { if (i == sizeof(encodingBuf) - 1 || (protocolEncodingName[i] & ~0x7f) != 0) { encodingBuf[0] = '\0'; break; } encodingBuf[i] = (char)protocolEncodingName[i]; } encodingBuf[i] = '\0'; s = encodingBuf; } #else s = protocolEncodingName; #endif if ((ns ? XmlInitEncodingNS : XmlInitEncoding)(&initEncoding, &encoding, s)) return XML_ERROR_NONE; return handleUnknownEncoding(parser, protocolEncodingName); } static enum XML_Error processXmlDecl(XML_Parser parser, int isGeneralTextEntity, const char *s, const char *next) { const char *encodingName = NULL; const XML_Char *storedEncName = NULL; const ENCODING *newEncoding = NULL; const char *version = NULL; const char *versionend; const XML_Char *storedversion = NULL; int standalone = -1; if (!(ns ? XmlParseXmlDeclNS : XmlParseXmlDecl)(isGeneralTextEntity, encoding, s, next, &eventPtr, &version, &versionend, &encodingName, &newEncoding, &standalone)) { if (isGeneralTextEntity) return XML_ERROR_TEXT_DECL; else return XML_ERROR_XML_DECL; } if (!isGeneralTextEntity && standalone == 1) { _dtd->standalone = XML_TRUE; #ifdef XML_DTD if (paramEntityParsing == XML_PARAM_ENTITY_PARSING_UNLESS_STANDALONE) paramEntityParsing = XML_PARAM_ENTITY_PARSING_NEVER; #endif /* XML_DTD */ } if (xmlDeclHandler) { if (encodingName != NULL) { storedEncName = poolStoreString(&temp2Pool, encoding, encodingName, encodingName + XmlNameLength(encoding, encodingName)); if (!storedEncName) return XML_ERROR_NO_MEMORY; poolFinish(&temp2Pool); } if (version) { storedversion = poolStoreString(&temp2Pool, encoding, version, versionend - encoding->minBytesPerChar); if (!storedversion) return XML_ERROR_NO_MEMORY; } xmlDeclHandler(handlerArg, storedversion, storedEncName, standalone); } else if (defaultHandler) reportDefault(parser, encoding, s, next); if (protocolEncodingName == NULL) { if (newEncoding) { if (newEncoding->minBytesPerChar != encoding->minBytesPerChar) { eventPtr = encodingName; return XML_ERROR_INCORRECT_ENCODING; } encoding = newEncoding; } else if (encodingName) { enum XML_Error result; if (!storedEncName) { storedEncName = poolStoreString( &temp2Pool, encoding, encodingName, encodingName + XmlNameLength(encoding, encodingName)); if (!storedEncName) return XML_ERROR_NO_MEMORY; } result = handleUnknownEncoding(parser, storedEncName); poolClear(&temp2Pool); if (result == XML_ERROR_UNKNOWN_ENCODING) eventPtr = encodingName; return result; } } if (storedEncName || storedversion) poolClear(&temp2Pool); return XML_ERROR_NONE; } static enum XML_Error handleUnknownEncoding(XML_Parser parser, const XML_Char *encodingName) { if (unknownEncodingHandler) { XML_Encoding info; int i; for (i = 0; i < 256; i++) info.map[i] = -1; info.convert = NULL; info.data = NULL; info.release = NULL; if (unknownEncodingHandler(unknownEncodingHandlerData, encodingName, &info)) { ENCODING *enc; unknownEncodingMem = MALLOC(XmlSizeOfUnknownEncoding()); if (!unknownEncodingMem) { if (info.release) info.release(info.data); return XML_ERROR_NO_MEMORY; } enc = (ns ? XmlInitUnknownEncodingNS : XmlInitUnknownEncoding)(unknownEncodingMem, info.map, info.convert, info.data); if (enc) { unknownEncodingData = info.data; unknownEncodingRelease = info.release; encoding = enc; return XML_ERROR_NONE; } } if (info.release != NULL) info.release(info.data); } return XML_ERROR_UNKNOWN_ENCODING; } static enum XML_Error PTRCALL prologInitProcessor(XML_Parser parser, const char *s, const char *end, const char **nextPtr) { enum XML_Error result = initializeEncoding(parser); if (result != XML_ERROR_NONE) return result; processor = prologProcessor; return prologProcessor(parser, s, end, nextPtr); } #ifdef XML_DTD static enum XML_Error PTRCALL externalParEntInitProcessor(XML_Parser parser, const char *s, const char *end, const char **nextPtr) { enum XML_Error result = initializeEncoding(parser); if (result != XML_ERROR_NONE) return result; /* we know now that XML_Parse(Buffer) has been called, so we consider the external parameter entity read */ _dtd->paramEntityRead = XML_TRUE; if (prologState.inEntityValue) { processor = entityValueInitProcessor; return entityValueInitProcessor(parser, s, end, nextPtr); } else { processor = externalParEntProcessor; return externalParEntProcessor(parser, s, end, nextPtr); } } static enum XML_Error PTRCALL entityValueInitProcessor(XML_Parser parser, const char *s, const char *end, const char **nextPtr) { int tok; const char *start = s; const char *next = start; eventPtr = start; for (;;) { tok = XmlPrologTok(encoding, start, end, &next); eventEndPtr = next; if (tok <= 0) { if (!ps_finalBuffer && tok != XML_TOK_INVALID) { *nextPtr = s; return XML_ERROR_NONE; } switch (tok) { case XML_TOK_INVALID: return XML_ERROR_INVALID_TOKEN; case XML_TOK_PARTIAL: return XML_ERROR_UNCLOSED_TOKEN; case XML_TOK_PARTIAL_CHAR: return XML_ERROR_PARTIAL_CHAR; case XML_TOK_NONE: /* start == end */ default: break; } /* found end of entity value - can store it now */ return storeEntityValue(parser, encoding, s, end); } else if (tok == XML_TOK_XML_DECL) { enum XML_Error result; result = processXmlDecl(parser, 0, start, next); if (result != XML_ERROR_NONE) return result; switch (ps_parsing) { case XML_SUSPENDED: *nextPtr = next; return XML_ERROR_NONE; case XML_FINISHED: return XML_ERROR_ABORTED; default: *nextPtr = next; } /* stop scanning for text declaration - we found one */ processor = entityValueProcessor; return entityValueProcessor(parser, next, end, nextPtr); } /* If we are at the end of the buffer, this would cause XmlPrologTok to return XML_TOK_NONE on the next call, which would then cause the function to exit with *nextPtr set to s - that is what we want for other tokens, but not for the BOM - we would rather like to skip it; then, when this routine is entered the next time, XmlPrologTok will return XML_TOK_INVALID, since the BOM is still in the buffer */ else if (tok == XML_TOK_BOM && next == end && !ps_finalBuffer) { *nextPtr = next; return XML_ERROR_NONE; } start = next; eventPtr = start; } } static enum XML_Error PTRCALL externalParEntProcessor(XML_Parser parser, const char *s, const char *end, const char **nextPtr) { const char *next = s; int tok; tok = XmlPrologTok(encoding, s, end, &next); if (tok <= 0) { if (!ps_finalBuffer && tok != XML_TOK_INVALID) { *nextPtr = s; return XML_ERROR_NONE; } switch (tok) { case XML_TOK_INVALID: return XML_ERROR_INVALID_TOKEN; case XML_TOK_PARTIAL: return XML_ERROR_UNCLOSED_TOKEN; case XML_TOK_PARTIAL_CHAR: return XML_ERROR_PARTIAL_CHAR; case XML_TOK_NONE: /* start == end */ default: break; } } /* This would cause the next stage, i.e. doProlog to be passed XML_TOK_BOM. However, when parsing an external subset, doProlog will not accept a BOM as valid, and report a syntax error, so we have to skip the BOM */ else if (tok == XML_TOK_BOM) { s = next; tok = XmlPrologTok(encoding, s, end, &next); } processor = prologProcessor; return doProlog(parser, encoding, s, end, tok, next, nextPtr, (XML_Bool)!ps_finalBuffer); } static enum XML_Error PTRCALL entityValueProcessor(XML_Parser parser, const char *s, const char *end, const char **nextPtr) { const char *start = s; const char *next = s; const ENCODING *enc = encoding; int tok; for (;;) { tok = XmlPrologTok(enc, start, end, &next); if (tok <= 0) { if (!ps_finalBuffer && tok != XML_TOK_INVALID) { *nextPtr = s; return XML_ERROR_NONE; } switch (tok) { case XML_TOK_INVALID: return XML_ERROR_INVALID_TOKEN; case XML_TOK_PARTIAL: return XML_ERROR_UNCLOSED_TOKEN; case XML_TOK_PARTIAL_CHAR: return XML_ERROR_PARTIAL_CHAR; case XML_TOK_NONE: /* start == end */ default: break; } /* found end of entity value - can store it now */ return storeEntityValue(parser, enc, s, end); } start = next; } } #endif /* XML_DTD */ static enum XML_Error PTRCALL prologProcessor(XML_Parser parser, const char *s, const char *end, const char **nextPtr) { const char *next = s; int tok = XmlPrologTok(encoding, s, end, &next); return doProlog(parser, encoding, s, end, tok, next, nextPtr, (XML_Bool)!ps_finalBuffer); } static enum XML_Error doProlog(XML_Parser parser, const ENCODING *enc, const char *s, const char *end, int tok, const char *next, const char **nextPtr, XML_Bool haveMore) { #ifdef XML_DTD static const XML_Char externalSubsetName[] = { ASCII_HASH , '\0' }; #endif /* XML_DTD */ static const XML_Char atypeCDATA[] = { ASCII_C, ASCII_D, ASCII_A, ASCII_T, ASCII_A, '\0' }; static const XML_Char atypeID[] = { ASCII_I, ASCII_D, '\0' }; static const XML_Char atypeIDREF[] = { ASCII_I, ASCII_D, ASCII_R, ASCII_E, ASCII_F, '\0' }; static const XML_Char atypeIDREFS[] = { ASCII_I, ASCII_D, ASCII_R, ASCII_E, ASCII_F, ASCII_S, '\0' }; static const XML_Char atypeENTITY[] = { ASCII_E, ASCII_N, ASCII_T, ASCII_I, ASCII_T, ASCII_Y, '\0' }; static const XML_Char atypeENTITIES[] = { ASCII_E, ASCII_N, ASCII_T, ASCII_I, ASCII_T, ASCII_I, ASCII_E, ASCII_S, '\0' }; static const XML_Char atypeNMTOKEN[] = { ASCII_N, ASCII_M, ASCII_T, ASCII_O, ASCII_K, ASCII_E, ASCII_N, '\0' }; static const XML_Char atypeNMTOKENS[] = { ASCII_N, ASCII_M, ASCII_T, ASCII_O, ASCII_K, ASCII_E, ASCII_N, ASCII_S, '\0' }; static const XML_Char notationPrefix[] = { ASCII_N, ASCII_O, ASCII_T, ASCII_A, ASCII_T, ASCII_I, ASCII_O, ASCII_N, ASCII_LPAREN, '\0' }; static const XML_Char enumValueSep[] = { ASCII_PIPE, '\0' }; static const XML_Char enumValueStart[] = { ASCII_LPAREN, '\0' }; /* save one level of indirection */ DTD * const dtd = _dtd; const char **eventPP; const char **eventEndPP; enum XML_Content_Quant quant; if (enc == encoding) { eventPP = &eventPtr; eventEndPP = &eventEndPtr; } else { eventPP = &(openInternalEntities->internalEventPtr); eventEndPP = &(openInternalEntities->internalEventEndPtr); } for (;;) { int role; XML_Bool handleDefault = XML_TRUE; *eventPP = s; *eventEndPP = next; if (tok <= 0) { if (haveMore && tok != XML_TOK_INVALID) { *nextPtr = s; return XML_ERROR_NONE; } switch (tok) { case XML_TOK_INVALID: *eventPP = next; return XML_ERROR_INVALID_TOKEN; case XML_TOK_PARTIAL: return XML_ERROR_UNCLOSED_TOKEN; case XML_TOK_PARTIAL_CHAR: return XML_ERROR_PARTIAL_CHAR; case -XML_TOK_PROLOG_S: tok = -tok; break; case XML_TOK_NONE: #ifdef XML_DTD /* for internal PE NOT referenced between declarations */ if (enc != encoding && !openInternalEntities->betweenDecl) { *nextPtr = s; return XML_ERROR_NONE; } /* WFC: PE Between Declarations - must check that PE contains complete markup, not only for external PEs, but also for internal PEs if the reference occurs between declarations. */ if (isParamEntity || enc != encoding) { if (XmlTokenRole(&prologState, XML_TOK_NONE, end, end, enc) == XML_ROLE_ERROR) return XML_ERROR_INCOMPLETE_PE; *nextPtr = s; return XML_ERROR_NONE; } #endif /* XML_DTD */ return XML_ERROR_NO_ELEMENTS; default: tok = -tok; next = end; break; } } role = XmlTokenRole(&prologState, tok, s, next, enc); switch (role) { case XML_ROLE_XML_DECL: { enum XML_Error result = processXmlDecl(parser, 0, s, next); if (result != XML_ERROR_NONE) return result; enc = encoding; handleDefault = XML_FALSE; } break; case XML_ROLE_DOCTYPE_NAME: if (startDoctypeDeclHandler) { doctypeName = poolStoreString(&tempPool, enc, s, next); if (!doctypeName) return XML_ERROR_NO_MEMORY; poolFinish(&tempPool); doctypePubid = NULL; handleDefault = XML_FALSE; } doctypeSysid = NULL; /* always initialize to NULL */ break; case XML_ROLE_DOCTYPE_INTERNAL_SUBSET: if (startDoctypeDeclHandler) { startDoctypeDeclHandler(handlerArg, doctypeName, doctypeSysid, doctypePubid, 1); doctypeName = NULL; poolClear(&tempPool); handleDefault = XML_FALSE; } break; #ifdef XML_DTD case XML_ROLE_TEXT_DECL: { enum XML_Error result = processXmlDecl(parser, 1, s, next); if (result != XML_ERROR_NONE) return result; enc = encoding; handleDefault = XML_FALSE; } break; #endif /* XML_DTD */ case XML_ROLE_DOCTYPE_PUBLIC_ID: #ifdef XML_DTD useForeignDTD = XML_FALSE; declEntity = (ENTITY *)lookup(parser, &dtd->paramEntities, externalSubsetName, sizeof(ENTITY)); if (!declEntity) return XML_ERROR_NO_MEMORY; #endif /* XML_DTD */ dtd->hasParamEntityRefs = XML_TRUE; if (startDoctypeDeclHandler) { XML_Char *pubId; if (!XmlIsPublicId(enc, s, next, eventPP)) return XML_ERROR_PUBLICID; pubId = poolStoreString(&tempPool, enc, s + enc->minBytesPerChar, next - enc->minBytesPerChar); if (!pubId) return XML_ERROR_NO_MEMORY; normalizePublicId(pubId); poolFinish(&tempPool); doctypePubid = pubId; handleDefault = XML_FALSE; goto alreadyChecked; } /* fall through */ case XML_ROLE_ENTITY_PUBLIC_ID: if (!XmlIsPublicId(enc, s, next, eventPP)) return XML_ERROR_PUBLICID; alreadyChecked: if (dtd->keepProcessing && declEntity) { XML_Char *tem = poolStoreString(&dtd->pool, enc, s + enc->minBytesPerChar, next - enc->minBytesPerChar); if (!tem) return XML_ERROR_NO_MEMORY; normalizePublicId(tem); declEntity->publicId = tem; poolFinish(&dtd->pool); if (entityDeclHandler) handleDefault = XML_FALSE; } break; case XML_ROLE_DOCTYPE_CLOSE: if (doctypeName) { startDoctypeDeclHandler(handlerArg, doctypeName, doctypeSysid, doctypePubid, 0); poolClear(&tempPool); handleDefault = XML_FALSE; } /* doctypeSysid will be non-NULL in the case of a previous XML_ROLE_DOCTYPE_SYSTEM_ID, even if startDoctypeDeclHandler was not set, indicating an external subset */ #ifdef XML_DTD if (doctypeSysid || useForeignDTD) { XML_Bool hadParamEntityRefs = dtd->hasParamEntityRefs; dtd->hasParamEntityRefs = XML_TRUE; if (paramEntityParsing && externalEntityRefHandler) { ENTITY *entity = (ENTITY *)lookup(parser, &dtd->paramEntities, externalSubsetName, sizeof(ENTITY)); if (!entity) return XML_ERROR_NO_MEMORY; if (useForeignDTD) entity->base = curBase; dtd->paramEntityRead = XML_FALSE; if (!externalEntityRefHandler(externalEntityRefHandlerArg, 0, entity->base, entity->systemId, entity->publicId)) return XML_ERROR_EXTERNAL_ENTITY_HANDLING; if (dtd->paramEntityRead) { if (!dtd->standalone && notStandaloneHandler && !notStandaloneHandler(handlerArg)) return XML_ERROR_NOT_STANDALONE; } /* if we didn't read the foreign DTD then this means that there is no external subset and we must reset dtd->hasParamEntityRefs */ else if (!doctypeSysid) dtd->hasParamEntityRefs = hadParamEntityRefs; /* end of DTD - no need to update dtd->keepProcessing */ } useForeignDTD = XML_FALSE; } #endif /* XML_DTD */ if (endDoctypeDeclHandler) { endDoctypeDeclHandler(handlerArg); handleDefault = XML_FALSE; } break; case XML_ROLE_INSTANCE_START: #ifdef XML_DTD /* if there is no DOCTYPE declaration then now is the last chance to read the foreign DTD */ if (useForeignDTD) { XML_Bool hadParamEntityRefs = dtd->hasParamEntityRefs; dtd->hasParamEntityRefs = XML_TRUE; if (paramEntityParsing && externalEntityRefHandler) { ENTITY *entity = (ENTITY *)lookup(parser, &dtd->paramEntities, externalSubsetName, sizeof(ENTITY)); if (!entity) return XML_ERROR_NO_MEMORY; entity->base = curBase; dtd->paramEntityRead = XML_FALSE; if (!externalEntityRefHandler(externalEntityRefHandlerArg, 0, entity->base, entity->systemId, entity->publicId)) return XML_ERROR_EXTERNAL_ENTITY_HANDLING; if (dtd->paramEntityRead) { if (!dtd->standalone && notStandaloneHandler && !notStandaloneHandler(handlerArg)) return XML_ERROR_NOT_STANDALONE; } /* if we didn't read the foreign DTD then this means that there is no external subset and we must reset dtd->hasParamEntityRefs */ else dtd->hasParamEntityRefs = hadParamEntityRefs; /* end of DTD - no need to update dtd->keepProcessing */ } } #endif /* XML_DTD */ processor = contentProcessor; return contentProcessor(parser, s, end, nextPtr); case XML_ROLE_ATTLIST_ELEMENT_NAME: declElementType = getElementType(parser, enc, s, next); if (!declElementType) return XML_ERROR_NO_MEMORY; goto checkAttListDeclHandler; case XML_ROLE_ATTRIBUTE_NAME: declAttributeId = getAttributeId(parser, enc, s, next); if (!declAttributeId) return XML_ERROR_NO_MEMORY; declAttributeIsCdata = XML_FALSE; declAttributeType = NULL; declAttributeIsId = XML_FALSE; goto checkAttListDeclHandler; case XML_ROLE_ATTRIBUTE_TYPE_CDATA: declAttributeIsCdata = XML_TRUE; declAttributeType = atypeCDATA; goto checkAttListDeclHandler; case XML_ROLE_ATTRIBUTE_TYPE_ID: declAttributeIsId = XML_TRUE; declAttributeType = atypeID; goto checkAttListDeclHandler; case XML_ROLE_ATTRIBUTE_TYPE_IDREF: declAttributeType = atypeIDREF; goto checkAttListDeclHandler; case XML_ROLE_ATTRIBUTE_TYPE_IDREFS: declAttributeType = atypeIDREFS; goto checkAttListDeclHandler; case XML_ROLE_ATTRIBUTE_TYPE_ENTITY: declAttributeType = atypeENTITY; goto checkAttListDeclHandler; case XML_ROLE_ATTRIBUTE_TYPE_ENTITIES: declAttributeType = atypeENTITIES; goto checkAttListDeclHandler; case XML_ROLE_ATTRIBUTE_TYPE_NMTOKEN: declAttributeType = atypeNMTOKEN; goto checkAttListDeclHandler; case XML_ROLE_ATTRIBUTE_TYPE_NMTOKENS: declAttributeType = atypeNMTOKENS; checkAttListDeclHandler: if (dtd->keepProcessing && attlistDeclHandler) handleDefault = XML_FALSE; break; case XML_ROLE_ATTRIBUTE_ENUM_VALUE: case XML_ROLE_ATTRIBUTE_NOTATION_VALUE: if (dtd->keepProcessing && attlistDeclHandler) { const XML_Char *prefix; if (declAttributeType) { prefix = enumValueSep; } else { prefix = (role == XML_ROLE_ATTRIBUTE_NOTATION_VALUE ? notationPrefix : enumValueStart); } if (!poolAppendString(&tempPool, prefix)) return XML_ERROR_NO_MEMORY; if (!poolAppend(&tempPool, enc, s, next)) return XML_ERROR_NO_MEMORY; declAttributeType = tempPool.start; handleDefault = XML_FALSE; } break; case XML_ROLE_IMPLIED_ATTRIBUTE_VALUE: case XML_ROLE_REQUIRED_ATTRIBUTE_VALUE: if (dtd->keepProcessing) { if (!defineAttribute(declElementType, declAttributeId, declAttributeIsCdata, declAttributeIsId, 0, parser)) return XML_ERROR_NO_MEMORY; if (attlistDeclHandler && declAttributeType) { if (*declAttributeType == XML_T(ASCII_LPAREN) || (*declAttributeType == XML_T(ASCII_N) && declAttributeType[1] == XML_T(ASCII_O))) { /* Enumerated or Notation type */ if (!poolAppendChar(&tempPool, XML_T(ASCII_RPAREN)) || !poolAppendChar(&tempPool, XML_T('\0'))) return XML_ERROR_NO_MEMORY; declAttributeType = tempPool.start; poolFinish(&tempPool); } *eventEndPP = s; attlistDeclHandler(handlerArg, declElementType->name, declAttributeId->name, declAttributeType, 0, role == XML_ROLE_REQUIRED_ATTRIBUTE_VALUE); poolClear(&tempPool); handleDefault = XML_FALSE; } } break; case XML_ROLE_DEFAULT_ATTRIBUTE_VALUE: case XML_ROLE_FIXED_ATTRIBUTE_VALUE: if (dtd->keepProcessing) { const XML_Char *attVal; enum XML_Error result = storeAttributeValue(parser, enc, declAttributeIsCdata, s + enc->minBytesPerChar, next - enc->minBytesPerChar, &dtd->pool); if (result) return result; attVal = poolStart(&dtd->pool); poolFinish(&dtd->pool); /* ID attributes aren't allowed to have a default */ if (!defineAttribute(declElementType, declAttributeId, declAttributeIsCdata, XML_FALSE, attVal, parser)) return XML_ERROR_NO_MEMORY; if (attlistDeclHandler && declAttributeType) { if (*declAttributeType == XML_T(ASCII_LPAREN) || (*declAttributeType == XML_T(ASCII_N) && declAttributeType[1] == XML_T(ASCII_O))) { /* Enumerated or Notation type */ if (!poolAppendChar(&tempPool, XML_T(ASCII_RPAREN)) || !poolAppendChar(&tempPool, XML_T('\0'))) return XML_ERROR_NO_MEMORY; declAttributeType = tempPool.start; poolFinish(&tempPool); } *eventEndPP = s; attlistDeclHandler(handlerArg, declElementType->name, declAttributeId->name, declAttributeType, attVal, role == XML_ROLE_FIXED_ATTRIBUTE_VALUE); poolClear(&tempPool); handleDefault = XML_FALSE; } } break; case XML_ROLE_ENTITY_VALUE: if (dtd->keepProcessing) { enum XML_Error result = storeEntityValue(parser, enc, s + enc->minBytesPerChar, next - enc->minBytesPerChar); if (declEntity) { declEntity->textPtr = poolStart(&dtd->entityValuePool); declEntity->textLen = (int)(poolLength(&dtd->entityValuePool)); poolFinish(&dtd->entityValuePool); if (entityDeclHandler) { *eventEndPP = s; entityDeclHandler(handlerArg, declEntity->name, declEntity->is_param, declEntity->textPtr, declEntity->textLen, curBase, 0, 0, 0); handleDefault = XML_FALSE; } } else poolDiscard(&dtd->entityValuePool); if (result != XML_ERROR_NONE) return result; } break; case XML_ROLE_DOCTYPE_SYSTEM_ID: #ifdef XML_DTD useForeignDTD = XML_FALSE; #endif /* XML_DTD */ dtd->hasParamEntityRefs = XML_TRUE; if (startDoctypeDeclHandler) { doctypeSysid = poolStoreString(&tempPool, enc, s + enc->minBytesPerChar, next - enc->minBytesPerChar); if (doctypeSysid == NULL) return XML_ERROR_NO_MEMORY; poolFinish(&tempPool); handleDefault = XML_FALSE; } #ifdef XML_DTD else /* use externalSubsetName to make doctypeSysid non-NULL for the case where no startDoctypeDeclHandler is set */ doctypeSysid = externalSubsetName; #endif /* XML_DTD */ if (!dtd->standalone #ifdef XML_DTD && !paramEntityParsing #endif /* XML_DTD */ && notStandaloneHandler && !notStandaloneHandler(handlerArg)) return XML_ERROR_NOT_STANDALONE; #ifndef XML_DTD break; #else /* XML_DTD */ if (!declEntity) { declEntity = (ENTITY *)lookup(parser, &dtd->paramEntities, externalSubsetName, sizeof(ENTITY)); if (!declEntity) return XML_ERROR_NO_MEMORY; declEntity->publicId = NULL; } /* fall through */ #endif /* XML_DTD */ case XML_ROLE_ENTITY_SYSTEM_ID: if (dtd->keepProcessing && declEntity) { declEntity->systemId = poolStoreString(&dtd->pool, enc, s + enc->minBytesPerChar, next - enc->minBytesPerChar); if (!declEntity->systemId) return XML_ERROR_NO_MEMORY; declEntity->base = curBase; poolFinish(&dtd->pool); if (entityDeclHandler) handleDefault = XML_FALSE; } break; case XML_ROLE_ENTITY_COMPLETE: if (dtd->keepProcessing && declEntity && entityDeclHandler) { *eventEndPP = s; entityDeclHandler(handlerArg, declEntity->name, declEntity->is_param, 0,0, declEntity->base, declEntity->systemId, declEntity->publicId, 0); handleDefault = XML_FALSE; } break; case XML_ROLE_ENTITY_NOTATION_NAME: if (dtd->keepProcessing && declEntity) { declEntity->notation = poolStoreString(&dtd->pool, enc, s, next); if (!declEntity->notation) return XML_ERROR_NO_MEMORY; poolFinish(&dtd->pool); if (unparsedEntityDeclHandler) { *eventEndPP = s; unparsedEntityDeclHandler(handlerArg, declEntity->name, declEntity->base, declEntity->systemId, declEntity->publicId, declEntity->notation); handleDefault = XML_FALSE; } else if (entityDeclHandler) { *eventEndPP = s; entityDeclHandler(handlerArg, declEntity->name, 0,0,0, declEntity->base, declEntity->systemId, declEntity->publicId, declEntity->notation); handleDefault = XML_FALSE; } } break; case XML_ROLE_GENERAL_ENTITY_NAME: { if (XmlPredefinedEntityName(enc, s, next)) { declEntity = NULL; break; } if (dtd->keepProcessing) { const XML_Char *name = poolStoreString(&dtd->pool, enc, s, next); if (!name) return XML_ERROR_NO_MEMORY; declEntity = (ENTITY *)lookup(parser, &dtd->generalEntities, name, sizeof(ENTITY)); if (!declEntity) return XML_ERROR_NO_MEMORY; if (declEntity->name != name) { poolDiscard(&dtd->pool); declEntity = NULL; } else { poolFinish(&dtd->pool); declEntity->publicId = NULL; declEntity->is_param = XML_FALSE; /* if we have a parent parser or are reading an internal parameter entity, then the entity declaration is not considered "internal" */ declEntity->is_internal = !(parentParser || openInternalEntities); if (entityDeclHandler) handleDefault = XML_FALSE; } } else { poolDiscard(&dtd->pool); declEntity = NULL; } } break; case XML_ROLE_PARAM_ENTITY_NAME: #ifdef XML_DTD if (dtd->keepProcessing) { const XML_Char *name = poolStoreString(&dtd->pool, enc, s, next); if (!name) return XML_ERROR_NO_MEMORY; declEntity = (ENTITY *)lookup(parser, &dtd->paramEntities, name, sizeof(ENTITY)); if (!declEntity) return XML_ERROR_NO_MEMORY; if (declEntity->name != name) { poolDiscard(&dtd->pool); declEntity = NULL; } else { poolFinish(&dtd->pool); declEntity->publicId = NULL; declEntity->is_param = XML_TRUE; /* if we have a parent parser or are reading an internal parameter entity, then the entity declaration is not considered "internal" */ declEntity->is_internal = !(parentParser || openInternalEntities); if (entityDeclHandler) handleDefault = XML_FALSE; } } else { poolDiscard(&dtd->pool); declEntity = NULL; } #else /* not XML_DTD */ declEntity = NULL; #endif /* XML_DTD */ break; case XML_ROLE_NOTATION_NAME: declNotationPublicId = NULL; declNotationName = NULL; if (notationDeclHandler) { declNotationName = poolStoreString(&tempPool, enc, s, next); if (!declNotationName) return XML_ERROR_NO_MEMORY; poolFinish(&tempPool); handleDefault = XML_FALSE; } break; case XML_ROLE_NOTATION_PUBLIC_ID: if (!XmlIsPublicId(enc, s, next, eventPP)) return XML_ERROR_PUBLICID; if (declNotationName) { /* means notationDeclHandler != NULL */ XML_Char *tem = poolStoreString(&tempPool, enc, s + enc->minBytesPerChar, next - enc->minBytesPerChar); if (!tem) return XML_ERROR_NO_MEMORY; normalizePublicId(tem); declNotationPublicId = tem; poolFinish(&tempPool); handleDefault = XML_FALSE; } break; case XML_ROLE_NOTATION_SYSTEM_ID: if (declNotationName && notationDeclHandler) { const XML_Char *systemId = poolStoreString(&tempPool, enc, s + enc->minBytesPerChar, next - enc->minBytesPerChar); if (!systemId) return XML_ERROR_NO_MEMORY; *eventEndPP = s; notationDeclHandler(handlerArg, declNotationName, curBase, systemId, declNotationPublicId); handleDefault = XML_FALSE; } poolClear(&tempPool); break; case XML_ROLE_NOTATION_NO_SYSTEM_ID: if (declNotationPublicId && notationDeclHandler) { *eventEndPP = s; notationDeclHandler(handlerArg, declNotationName, curBase, 0, declNotationPublicId); handleDefault = XML_FALSE; } poolClear(&tempPool); break; case XML_ROLE_ERROR: switch (tok) { case XML_TOK_PARAM_ENTITY_REF: /* PE references in internal subset are not allowed within declarations. */ return XML_ERROR_PARAM_ENTITY_REF; case XML_TOK_XML_DECL: return XML_ERROR_MISPLACED_XML_PI; default: return XML_ERROR_SYNTAX; } #ifdef XML_DTD case XML_ROLE_IGNORE_SECT: { enum XML_Error result; if (defaultHandler) reportDefault(parser, enc, s, next); handleDefault = XML_FALSE; result = doIgnoreSection(parser, enc, &next, end, nextPtr, haveMore); if (result != XML_ERROR_NONE) return result; else if (!next) { processor = ignoreSectionProcessor; return result; } } break; #endif /* XML_DTD */ case XML_ROLE_GROUP_OPEN: if (prologState.level >= groupSize) { if (groupSize) { char *temp = (char *)REALLOC(groupConnector, groupSize *= 2); if (temp == NULL) return XML_ERROR_NO_MEMORY; groupConnector = temp; if (dtd->scaffIndex) { int *temp = (int *)REALLOC(dtd->scaffIndex, groupSize * sizeof(int)); if (temp == NULL) return XML_ERROR_NO_MEMORY; dtd->scaffIndex = temp; } } else { groupConnector = (char *)MALLOC(groupSize = 32); if (!groupConnector) return XML_ERROR_NO_MEMORY; } } groupConnector[prologState.level] = 0; if (dtd->in_eldecl) { int myindex = nextScaffoldPart(parser); if (myindex < 0) return XML_ERROR_NO_MEMORY; dtd->scaffIndex[dtd->scaffLevel] = myindex; dtd->scaffLevel++; dtd->scaffold[myindex].type = XML_CTYPE_SEQ; if (elementDeclHandler) handleDefault = XML_FALSE; } break; case XML_ROLE_GROUP_SEQUENCE: if (groupConnector[prologState.level] == ASCII_PIPE) return XML_ERROR_SYNTAX; groupConnector[prologState.level] = ASCII_COMMA; if (dtd->in_eldecl && elementDeclHandler) handleDefault = XML_FALSE; break; case XML_ROLE_GROUP_CHOICE: if (groupConnector[prologState.level] == ASCII_COMMA) return XML_ERROR_SYNTAX; if (dtd->in_eldecl && !groupConnector[prologState.level] && (dtd->scaffold[dtd->scaffIndex[dtd->scaffLevel - 1]].type != XML_CTYPE_MIXED) ) { dtd->scaffold[dtd->scaffIndex[dtd->scaffLevel - 1]].type = XML_CTYPE_CHOICE; if (elementDeclHandler) handleDefault = XML_FALSE; } groupConnector[prologState.level] = ASCII_PIPE; break; case XML_ROLE_PARAM_ENTITY_REF: #ifdef XML_DTD case XML_ROLE_INNER_PARAM_ENTITY_REF: dtd->hasParamEntityRefs = XML_TRUE; if (!paramEntityParsing) dtd->keepProcessing = dtd->standalone; else { const XML_Char *name; ENTITY *entity; name = poolStoreString(&dtd->pool, enc, s + enc->minBytesPerChar, next - enc->minBytesPerChar); if (!name) return XML_ERROR_NO_MEMORY; entity = (ENTITY *)lookup(parser, &dtd->paramEntities, name, 0); poolDiscard(&dtd->pool); /* first, determine if a check for an existing declaration is needed; if yes, check that the entity exists, and that it is internal, otherwise call the skipped entity handler */ if (prologState.documentEntity && (dtd->standalone ? !openInternalEntities : !dtd->hasParamEntityRefs)) { if (!entity) return XML_ERROR_UNDEFINED_ENTITY; else if (!entity->is_internal) return XML_ERROR_ENTITY_DECLARED_IN_PE; } else if (!entity) { dtd->keepProcessing = dtd->standalone; /* cannot report skipped entities in declarations */ if ((role == XML_ROLE_PARAM_ENTITY_REF) && skippedEntityHandler) { skippedEntityHandler(handlerArg, name, 1); handleDefault = XML_FALSE; } break; } if (entity->open) return XML_ERROR_RECURSIVE_ENTITY_REF; if (entity->textPtr) { enum XML_Error result; XML_Bool betweenDecl = (role == XML_ROLE_PARAM_ENTITY_REF ? XML_TRUE : XML_FALSE); result = processInternalEntity(parser, entity, betweenDecl); if (result != XML_ERROR_NONE) return result; handleDefault = XML_FALSE; break; } if (externalEntityRefHandler) { dtd->paramEntityRead = XML_FALSE; entity->open = XML_TRUE; if (!externalEntityRefHandler(externalEntityRefHandlerArg, 0, entity->base, entity->systemId, entity->publicId)) { entity->open = XML_FALSE; return XML_ERROR_EXTERNAL_ENTITY_HANDLING; } entity->open = XML_FALSE; handleDefault = XML_FALSE; if (!dtd->paramEntityRead) { dtd->keepProcessing = dtd->standalone; break; } } else { dtd->keepProcessing = dtd->standalone; break; } } #endif /* XML_DTD */ if (!dtd->standalone && notStandaloneHandler && !notStandaloneHandler(handlerArg)) return XML_ERROR_NOT_STANDALONE; break; /* Element declaration stuff */ case XML_ROLE_ELEMENT_NAME: if (elementDeclHandler) { declElementType = getElementType(parser, enc, s, next); if (!declElementType) return XML_ERROR_NO_MEMORY; dtd->scaffLevel = 0; dtd->scaffCount = 0; dtd->in_eldecl = XML_TRUE; handleDefault = XML_FALSE; } break; case XML_ROLE_CONTENT_ANY: case XML_ROLE_CONTENT_EMPTY: if (dtd->in_eldecl) { if (elementDeclHandler) { XML_Content * content = (XML_Content *) MALLOC(sizeof(XML_Content)); if (!content) return XML_ERROR_NO_MEMORY; content->quant = XML_CQUANT_NONE; content->name = NULL; content->numchildren = 0; content->children = NULL; content->type = ((role == XML_ROLE_CONTENT_ANY) ? XML_CTYPE_ANY : XML_CTYPE_EMPTY); *eventEndPP = s; elementDeclHandler(handlerArg, declElementType->name, content); handleDefault = XML_FALSE; } dtd->in_eldecl = XML_FALSE; } break; case XML_ROLE_CONTENT_PCDATA: if (dtd->in_eldecl) { dtd->scaffold[dtd->scaffIndex[dtd->scaffLevel - 1]].type = XML_CTYPE_MIXED; if (elementDeclHandler) handleDefault = XML_FALSE; } break; case XML_ROLE_CONTENT_ELEMENT: quant = XML_CQUANT_NONE; goto elementContent; case XML_ROLE_CONTENT_ELEMENT_OPT: quant = XML_CQUANT_OPT; goto elementContent; case XML_ROLE_CONTENT_ELEMENT_REP: quant = XML_CQUANT_REP; goto elementContent; case XML_ROLE_CONTENT_ELEMENT_PLUS: quant = XML_CQUANT_PLUS; elementContent: if (dtd->in_eldecl) { ELEMENT_TYPE *el; const XML_Char *name; int nameLen; const char *nxt = (quant == XML_CQUANT_NONE ? next : next - enc->minBytesPerChar); int myindex = nextScaffoldPart(parser); if (myindex < 0) return XML_ERROR_NO_MEMORY; dtd->scaffold[myindex].type = XML_CTYPE_NAME; dtd->scaffold[myindex].quant = quant; el = getElementType(parser, enc, s, nxt); if (!el) return XML_ERROR_NO_MEMORY; name = el->name; dtd->scaffold[myindex].name = name; nameLen = 0; for (; name[nameLen++]; ); dtd->contentStringLen += nameLen; if (elementDeclHandler) handleDefault = XML_FALSE; } break; case XML_ROLE_GROUP_CLOSE: quant = XML_CQUANT_NONE; goto closeGroup; case XML_ROLE_GROUP_CLOSE_OPT: quant = XML_CQUANT_OPT; goto closeGroup; case XML_ROLE_GROUP_CLOSE_REP: quant = XML_CQUANT_REP; goto closeGroup; case XML_ROLE_GROUP_CLOSE_PLUS: quant = XML_CQUANT_PLUS; closeGroup: if (dtd->in_eldecl) { if (elementDeclHandler) handleDefault = XML_FALSE; dtd->scaffLevel--; dtd->scaffold[dtd->scaffIndex[dtd->scaffLevel]].quant = quant; if (dtd->scaffLevel == 0) { if (!handleDefault) { XML_Content *model = build_model(parser); if (!model) return XML_ERROR_NO_MEMORY; *eventEndPP = s; elementDeclHandler(handlerArg, declElementType->name, model); } dtd->in_eldecl = XML_FALSE; dtd->contentStringLen = 0; } } break; /* End element declaration stuff */ case XML_ROLE_PI: if (!reportProcessingInstruction(parser, enc, s, next)) return XML_ERROR_NO_MEMORY; handleDefault = XML_FALSE; break; case XML_ROLE_COMMENT: if (!reportComment(parser, enc, s, next)) return XML_ERROR_NO_MEMORY; handleDefault = XML_FALSE; break; case XML_ROLE_NONE: switch (tok) { case XML_TOK_BOM: handleDefault = XML_FALSE; break; } break; case XML_ROLE_DOCTYPE_NONE: if (startDoctypeDeclHandler) handleDefault = XML_FALSE; break; case XML_ROLE_ENTITY_NONE: if (dtd->keepProcessing && entityDeclHandler) handleDefault = XML_FALSE; break; case XML_ROLE_NOTATION_NONE: if (notationDeclHandler) handleDefault = XML_FALSE; break; case XML_ROLE_ATTLIST_NONE: if (dtd->keepProcessing && attlistDeclHandler) handleDefault = XML_FALSE; break; case XML_ROLE_ELEMENT_NONE: if (elementDeclHandler) handleDefault = XML_FALSE; break; } /* end of big switch */ if (handleDefault && defaultHandler) reportDefault(parser, enc, s, next); switch (ps_parsing) { case XML_SUSPENDED: *nextPtr = next; return XML_ERROR_NONE; case XML_FINISHED: return XML_ERROR_ABORTED; default: s = next; tok = XmlPrologTok(enc, s, end, &next); } } /* not reached */ } static enum XML_Error PTRCALL epilogProcessor(XML_Parser parser, const char *s, const char *end, const char **nextPtr) { processor = epilogProcessor; eventPtr = s; for (;;) { const char *next = NULL; int tok = XmlPrologTok(encoding, s, end, &next); eventEndPtr = next; switch (tok) { /* report partial linebreak - it might be the last token */ case -XML_TOK_PROLOG_S: if (defaultHandler) { reportDefault(parser, encoding, s, next); if (ps_parsing == XML_FINISHED) return XML_ERROR_ABORTED; } *nextPtr = next; return XML_ERROR_NONE; case XML_TOK_NONE: *nextPtr = s; return XML_ERROR_NONE; case XML_TOK_PROLOG_S: if (defaultHandler) reportDefault(parser, encoding, s, next); break; case XML_TOK_PI: if (!reportProcessingInstruction(parser, encoding, s, next)) return XML_ERROR_NO_MEMORY; break; case XML_TOK_COMMENT: if (!reportComment(parser, encoding, s, next)) return XML_ERROR_NO_MEMORY; break; case XML_TOK_INVALID: eventPtr = next; return XML_ERROR_INVALID_TOKEN; case XML_TOK_PARTIAL: if (!ps_finalBuffer) { *nextPtr = s; return XML_ERROR_NONE; } return XML_ERROR_UNCLOSED_TOKEN; case XML_TOK_PARTIAL_CHAR: if (!ps_finalBuffer) { *nextPtr = s; return XML_ERROR_NONE; } return XML_ERROR_PARTIAL_CHAR; default: return XML_ERROR_JUNK_AFTER_DOC_ELEMENT; } eventPtr = s = next; switch (ps_parsing) { case XML_SUSPENDED: *nextPtr = next; return XML_ERROR_NONE; case XML_FINISHED: return XML_ERROR_ABORTED; default: ; } } } static enum XML_Error processInternalEntity(XML_Parser parser, ENTITY *entity, XML_Bool betweenDecl) { const char *textStart, *textEnd; const char *next; enum XML_Error result; OPEN_INTERNAL_ENTITY *openEntity; if (freeInternalEntities) { openEntity = freeInternalEntities; freeInternalEntities = openEntity->next; } else { openEntity = (OPEN_INTERNAL_ENTITY *)MALLOC(sizeof(OPEN_INTERNAL_ENTITY)); if (!openEntity) return XML_ERROR_NO_MEMORY; } entity->open = XML_TRUE; entity->processed = 0; openEntity->next = openInternalEntities; openInternalEntities = openEntity; openEntity->entity = entity; openEntity->startTagLevel = tagLevel; openEntity->betweenDecl = betweenDecl; openEntity->internalEventPtr = NULL; openEntity->internalEventEndPtr = NULL; textStart = (char *)entity->textPtr; textEnd = (char *)(entity->textPtr + entity->textLen); #ifdef XML_DTD if (entity->is_param) { int tok = XmlPrologTok(internalEncoding, textStart, textEnd, &next); result = doProlog(parser, internalEncoding, textStart, textEnd, tok, next, &next, XML_FALSE); } else #endif /* XML_DTD */ result = doContent(parser, tagLevel, internalEncoding, textStart, textEnd, &next, XML_FALSE); if (result == XML_ERROR_NONE) { if (textEnd != next && ps_parsing == XML_SUSPENDED) { entity->processed = (int)(next - textStart); processor = internalEntityProcessor; } else { entity->open = XML_FALSE; openInternalEntities = openEntity->next; /* put openEntity back in list of free instances */ openEntity->next = freeInternalEntities; freeInternalEntities = openEntity; } } return result; } static enum XML_Error PTRCALL internalEntityProcessor(XML_Parser parser, const char *s, const char *end, const char **nextPtr) { ENTITY *entity; const char *textStart, *textEnd; const char *next; enum XML_Error result; OPEN_INTERNAL_ENTITY *openEntity = openInternalEntities; if (!openEntity) return XML_ERROR_UNEXPECTED_STATE; entity = openEntity->entity; textStart = ((char *)entity->textPtr) + entity->processed; textEnd = (char *)(entity->textPtr + entity->textLen); #ifdef XML_DTD if (entity->is_param) { int tok = XmlPrologTok(internalEncoding, textStart, textEnd, &next); result = doProlog(parser, internalEncoding, textStart, textEnd, tok, next, &next, XML_FALSE); } else #endif /* XML_DTD */ result = doContent(parser, openEntity->startTagLevel, internalEncoding, textStart, textEnd, &next, XML_FALSE); if (result != XML_ERROR_NONE) return result; else if (textEnd != next && ps_parsing == XML_SUSPENDED) { entity->processed = (int)(next - (char *)entity->textPtr); return result; } else { entity->open = XML_FALSE; openInternalEntities = openEntity->next; /* put openEntity back in list of free instances */ openEntity->next = freeInternalEntities; freeInternalEntities = openEntity; } #ifdef XML_DTD if (entity->is_param) { int tok; processor = prologProcessor; tok = XmlPrologTok(encoding, s, end, &next); return doProlog(parser, encoding, s, end, tok, next, nextPtr, (XML_Bool)!ps_finalBuffer); } else #endif /* XML_DTD */ { processor = contentProcessor; /* see externalEntityContentProcessor vs contentProcessor */ return doContent(parser, parentParser ? 1 : 0, encoding, s, end, nextPtr, (XML_Bool)!ps_finalBuffer); } } static enum XML_Error PTRCALL errorProcessor(XML_Parser parser, const char *s, const char *end, const char **nextPtr) { return errorCode; } static enum XML_Error storeAttributeValue(XML_Parser parser, const ENCODING *enc, XML_Bool isCdata, const char *ptr, const char *end, STRING_POOL *pool) { enum XML_Error result = appendAttributeValue(parser, enc, isCdata, ptr, end, pool); if (result) return result; if (!isCdata && poolLength(pool) && poolLastChar(pool) == 0x20) poolChop(pool); if (!poolAppendChar(pool, XML_T('\0'))) return XML_ERROR_NO_MEMORY; return XML_ERROR_NONE; } static enum XML_Error appendAttributeValue(XML_Parser parser, const ENCODING *enc, XML_Bool isCdata, const char *ptr, const char *end, STRING_POOL *pool) { DTD * const dtd = _dtd; /* save one level of indirection */ for (;;) { const char *next; int tok = XmlAttributeValueTok(enc, ptr, end, &next); switch (tok) { case XML_TOK_NONE: return XML_ERROR_NONE; case XML_TOK_INVALID: if (enc == encoding) eventPtr = next; return XML_ERROR_INVALID_TOKEN; case XML_TOK_PARTIAL: if (enc == encoding) eventPtr = ptr; return XML_ERROR_INVALID_TOKEN; case XML_TOK_CHAR_REF: { XML_Char buf[XML_ENCODE_MAX]; int i; int n = XmlCharRefNumber(enc, ptr); if (n < 0) { if (enc == encoding) eventPtr = ptr; return XML_ERROR_BAD_CHAR_REF; } if (!isCdata && n == 0x20 /* space */ && (poolLength(pool) == 0 || poolLastChar(pool) == 0x20)) break; n = XmlEncode(n, (ICHAR *)buf); if (!n) { if (enc == encoding) eventPtr = ptr; return XML_ERROR_BAD_CHAR_REF; } for (i = 0; i < n; i++) { if (!poolAppendChar(pool, buf[i])) return XML_ERROR_NO_MEMORY; } } break; case XML_TOK_DATA_CHARS: if (!poolAppend(pool, enc, ptr, next)) return XML_ERROR_NO_MEMORY; break; case XML_TOK_TRAILING_CR: next = ptr + enc->minBytesPerChar; /* fall through */ case XML_TOK_ATTRIBUTE_VALUE_S: case XML_TOK_DATA_NEWLINE: if (!isCdata && (poolLength(pool) == 0 || poolLastChar(pool) == 0x20)) break; if (!poolAppendChar(pool, 0x20)) return XML_ERROR_NO_MEMORY; break; case XML_TOK_ENTITY_REF: { const XML_Char *name; ENTITY *entity; char checkEntityDecl; XML_Char ch = (XML_Char) XmlPredefinedEntityName(enc, ptr + enc->minBytesPerChar, next - enc->minBytesPerChar); if (ch) { if (!poolAppendChar(pool, ch)) return XML_ERROR_NO_MEMORY; break; } name = poolStoreString(&temp2Pool, enc, ptr + enc->minBytesPerChar, next - enc->minBytesPerChar); if (!name) return XML_ERROR_NO_MEMORY; entity = (ENTITY *)lookup(parser, &dtd->generalEntities, name, 0); poolDiscard(&temp2Pool); /* First, determine if a check for an existing declaration is needed; if yes, check that the entity exists, and that it is internal. */ if (pool == &dtd->pool) /* are we called from prolog? */ checkEntityDecl = #ifdef XML_DTD prologState.documentEntity && #endif /* XML_DTD */ (dtd->standalone ? !openInternalEntities : !dtd->hasParamEntityRefs); else /* if (pool == &tempPool): we are called from content */ checkEntityDecl = !dtd->hasParamEntityRefs || dtd->standalone; if (checkEntityDecl) { if (!entity) return XML_ERROR_UNDEFINED_ENTITY; else if (!entity->is_internal) return XML_ERROR_ENTITY_DECLARED_IN_PE; } else if (!entity) { /* Cannot report skipped entity here - see comments on skippedEntityHandler. if (skippedEntityHandler) skippedEntityHandler(handlerArg, name, 0); */ /* Cannot call the default handler because this would be out of sync with the call to the startElementHandler. if ((pool == &tempPool) && defaultHandler) reportDefault(parser, enc, ptr, next); */ break; } if (entity->open) { if (enc == encoding) eventPtr = ptr; return XML_ERROR_RECURSIVE_ENTITY_REF; } if (entity->notation) { if (enc == encoding) eventPtr = ptr; return XML_ERROR_BINARY_ENTITY_REF; } if (!entity->textPtr) { if (enc == encoding) eventPtr = ptr; return XML_ERROR_ATTRIBUTE_EXTERNAL_ENTITY_REF; } else { enum XML_Error result; const XML_Char *textEnd = entity->textPtr + entity->textLen; entity->open = XML_TRUE; result = appendAttributeValue(parser, internalEncoding, isCdata, (char *)entity->textPtr, (char *)textEnd, pool); entity->open = XML_FALSE; if (result) return result; } } break; default: if (enc == encoding) eventPtr = ptr; return XML_ERROR_UNEXPECTED_STATE; } ptr = next; } /* not reached */ } static enum XML_Error storeEntityValue(XML_Parser parser, const ENCODING *enc, const char *entityTextPtr, const char *entityTextEnd) { DTD * const dtd = _dtd; /* save one level of indirection */ STRING_POOL *pool = &(dtd->entityValuePool); enum XML_Error result = XML_ERROR_NONE; #ifdef XML_DTD int oldInEntityValue = prologState.inEntityValue; prologState.inEntityValue = 1; #endif /* XML_DTD */ /* never return Null for the value argument in EntityDeclHandler, since this would indicate an external entity; therefore we have to make sure that entityValuePool.start is not null */ if (!pool->blocks) { if (!poolGrow(pool)) return XML_ERROR_NO_MEMORY; } for (;;) { const char *next; int tok = XmlEntityValueTok(enc, entityTextPtr, entityTextEnd, &next); switch (tok) { case XML_TOK_PARAM_ENTITY_REF: #ifdef XML_DTD if (isParamEntity || enc != encoding) { const XML_Char *name; ENTITY *entity; name = poolStoreString(&tempPool, enc, entityTextPtr + enc->minBytesPerChar, next - enc->minBytesPerChar); if (!name) { result = XML_ERROR_NO_MEMORY; goto endEntityValue; } entity = (ENTITY *)lookup(parser, &dtd->paramEntities, name, 0); poolDiscard(&tempPool); if (!entity) { /* not a well-formedness error - see XML 1.0: WFC Entity Declared */ /* cannot report skipped entity here - see comments on skippedEntityHandler if (skippedEntityHandler) skippedEntityHandler(handlerArg, name, 0); */ dtd->keepProcessing = dtd->standalone; goto endEntityValue; } if (entity->open) { if (enc == encoding) eventPtr = entityTextPtr; result = XML_ERROR_RECURSIVE_ENTITY_REF; goto endEntityValue; } if (entity->systemId) { if (externalEntityRefHandler) { dtd->paramEntityRead = XML_FALSE; entity->open = XML_TRUE; if (!externalEntityRefHandler(externalEntityRefHandlerArg, 0, entity->base, entity->systemId, entity->publicId)) { entity->open = XML_FALSE; result = XML_ERROR_EXTERNAL_ENTITY_HANDLING; goto endEntityValue; } entity->open = XML_FALSE; if (!dtd->paramEntityRead) dtd->keepProcessing = dtd->standalone; } else dtd->keepProcessing = dtd->standalone; } else { entity->open = XML_TRUE; result = storeEntityValue(parser, internalEncoding, (char *)entity->textPtr, (char *)(entity->textPtr + entity->textLen)); entity->open = XML_FALSE; if (result) goto endEntityValue; } break; } #endif /* XML_DTD */ /* In the internal subset, PE references are not legal within markup declarations, e.g entity values in this case. */ eventPtr = entityTextPtr; result = XML_ERROR_PARAM_ENTITY_REF; goto endEntityValue; case XML_TOK_NONE: result = XML_ERROR_NONE; goto endEntityValue; case XML_TOK_ENTITY_REF: case XML_TOK_DATA_CHARS: if (!poolAppend(pool, enc, entityTextPtr, next)) { result = XML_ERROR_NO_MEMORY; goto endEntityValue; } break; case XML_TOK_TRAILING_CR: next = entityTextPtr + enc->minBytesPerChar; /* fall through */ case XML_TOK_DATA_NEWLINE: if (pool->end == pool->ptr && !poolGrow(pool)) { result = XML_ERROR_NO_MEMORY; goto endEntityValue; } *(pool->ptr)++ = 0xA; break; case XML_TOK_CHAR_REF: { XML_Char buf[XML_ENCODE_MAX]; int i; int n = XmlCharRefNumber(enc, entityTextPtr); if (n < 0) { if (enc == encoding) eventPtr = entityTextPtr; result = XML_ERROR_BAD_CHAR_REF; goto endEntityValue; } n = XmlEncode(n, (ICHAR *)buf); if (!n) { if (enc == encoding) eventPtr = entityTextPtr; result = XML_ERROR_BAD_CHAR_REF; goto endEntityValue; } for (i = 0; i < n; i++) { if (pool->end == pool->ptr && !poolGrow(pool)) { result = XML_ERROR_NO_MEMORY; goto endEntityValue; } *(pool->ptr)++ = buf[i]; } } break; case XML_TOK_PARTIAL: if (enc == encoding) eventPtr = entityTextPtr; result = XML_ERROR_INVALID_TOKEN; goto endEntityValue; case XML_TOK_INVALID: if (enc == encoding) eventPtr = next; result = XML_ERROR_INVALID_TOKEN; goto endEntityValue; default: if (enc == encoding) eventPtr = entityTextPtr; result = XML_ERROR_UNEXPECTED_STATE; goto endEntityValue; } entityTextPtr = next; } endEntityValue: #ifdef XML_DTD prologState.inEntityValue = oldInEntityValue; #endif /* XML_DTD */ return result; } static void FASTCALL normalizeLines(XML_Char *s) { XML_Char *p; for (;; s++) { if (*s == XML_T('\0')) return; if (*s == 0xD) break; } p = s; do { if (*s == 0xD) { *p++ = 0xA; if (*++s == 0xA) s++; } else *p++ = *s++; } while (*s); *p = XML_T('\0'); } static int reportProcessingInstruction(XML_Parser parser, const ENCODING *enc, const char *start, const char *end) { const XML_Char *target; XML_Char *data; const char *tem; if (!processingInstructionHandler) { if (defaultHandler) reportDefault(parser, enc, start, end); return 1; } start += enc->minBytesPerChar * 2; tem = start + XmlNameLength(enc, start); target = poolStoreString(&tempPool, enc, start, tem); if (!target) return 0; poolFinish(&tempPool); data = poolStoreString(&tempPool, enc, XmlSkipS(enc, tem), end - enc->minBytesPerChar*2); if (!data) return 0; normalizeLines(data); processingInstructionHandler(handlerArg, target, data); poolClear(&tempPool); return 1; } static int reportComment(XML_Parser parser, const ENCODING *enc, const char *start, const char *end) { XML_Char *data; if (!commentHandler) { if (defaultHandler) reportDefault(parser, enc, start, end); return 1; } data = poolStoreString(&tempPool, enc, start + enc->minBytesPerChar * 4, end - enc->minBytesPerChar * 3); if (!data) return 0; normalizeLines(data); commentHandler(handlerArg, data); poolClear(&tempPool); return 1; } static void reportDefault(XML_Parser parser, const ENCODING *enc, const char *s, const char *end) { if (MUST_CONVERT(enc, s)) { const char **eventPP; const char **eventEndPP; if (enc == encoding) { eventPP = &eventPtr; eventEndPP = &eventEndPtr; } else { eventPP = &(openInternalEntities->internalEventPtr); eventEndPP = &(openInternalEntities->internalEventEndPtr); } do { ICHAR *dataPtr = (ICHAR *)dataBuf; XmlConvert(enc, &s, end, &dataPtr, (ICHAR *)dataBufEnd); *eventEndPP = s; defaultHandler(handlerArg, dataBuf, (int)(dataPtr - (ICHAR *)dataBuf)); *eventPP = s; } while (s != end); } else defaultHandler(handlerArg, (XML_Char *)s, (int)((XML_Char *)end - (XML_Char *)s)); } static int defineAttribute(ELEMENT_TYPE *type, ATTRIBUTE_ID *attId, XML_Bool isCdata, XML_Bool isId, const XML_Char *value, XML_Parser parser) { DEFAULT_ATTRIBUTE *att; if (value || isId) { /* The handling of default attributes gets messed up if we have a default which duplicates a non-default. */ int i; for (i = 0; i < type->nDefaultAtts; i++) if (attId == type->defaultAtts[i].id) return 1; if (isId && !type->idAtt && !attId->xmlns) type->idAtt = attId; } if (type->nDefaultAtts == type->allocDefaultAtts) { if (type->allocDefaultAtts == 0) { type->allocDefaultAtts = 8; type->defaultAtts = (DEFAULT_ATTRIBUTE *)MALLOC(type->allocDefaultAtts * sizeof(DEFAULT_ATTRIBUTE)); if (!type->defaultAtts) return 0; } else { DEFAULT_ATTRIBUTE *temp; int count = type->allocDefaultAtts * 2; temp = (DEFAULT_ATTRIBUTE *) REALLOC(type->defaultAtts, (count * sizeof(DEFAULT_ATTRIBUTE))); if (temp == NULL) return 0; type->allocDefaultAtts = count; type->defaultAtts = temp; } } att = type->defaultAtts + type->nDefaultAtts; att->id = attId; att->value = value; att->isCdata = isCdata; if (!isCdata) attId->maybeTokenized = XML_TRUE; type->nDefaultAtts += 1; return 1; } static int setElementTypePrefix(XML_Parser parser, ELEMENT_TYPE *elementType) { DTD * const dtd = _dtd; /* save one level of indirection */ const XML_Char *name; for (name = elementType->name; *name; name++) { if (*name == XML_T(ASCII_COLON)) { PREFIX *prefix; const XML_Char *s; for (s = elementType->name; s != name; s++) { if (!poolAppendChar(&dtd->pool, *s)) return 0; } if (!poolAppendChar(&dtd->pool, XML_T('\0'))) return 0; prefix = (PREFIX *)lookup(parser, &dtd->prefixes, poolStart(&dtd->pool), sizeof(PREFIX)); if (!prefix) return 0; if (prefix->name == poolStart(&dtd->pool)) poolFinish(&dtd->pool); else poolDiscard(&dtd->pool); elementType->prefix = prefix; } } return 1; } static ATTRIBUTE_ID * getAttributeId(XML_Parser parser, const ENCODING *enc, const char *start, const char *end) { DTD * const dtd = _dtd; /* save one level of indirection */ ATTRIBUTE_ID *id; const XML_Char *name; if (!poolAppendChar(&dtd->pool, XML_T('\0'))) return NULL; name = poolStoreString(&dtd->pool, enc, start, end); if (!name) return NULL; /* skip quotation mark - its storage will be re-used (like in name[-1]) */ ++name; id = (ATTRIBUTE_ID *)lookup(parser, &dtd->attributeIds, name, sizeof(ATTRIBUTE_ID)); if (!id) return NULL; if (id->name != name) poolDiscard(&dtd->pool); else { poolFinish(&dtd->pool); if (!ns) ; else if (name[0] == XML_T(ASCII_x) && name[1] == XML_T(ASCII_m) && name[2] == XML_T(ASCII_l) && name[3] == XML_T(ASCII_n) && name[4] == XML_T(ASCII_s) && (name[5] == XML_T('\0') || name[5] == XML_T(ASCII_COLON))) { if (name[5] == XML_T('\0')) id->prefix = &dtd->defaultPrefix; else id->prefix = (PREFIX *)lookup(parser, &dtd->prefixes, name + 6, sizeof(PREFIX)); id->xmlns = XML_TRUE; } else { int i; for (i = 0; name[i]; i++) { /* attributes without prefix are *not* in the default namespace */ if (name[i] == XML_T(ASCII_COLON)) { int j; for (j = 0; j < i; j++) { if (!poolAppendChar(&dtd->pool, name[j])) return NULL; } if (!poolAppendChar(&dtd->pool, XML_T('\0'))) return NULL; id->prefix = (PREFIX *)lookup(parser, &dtd->prefixes, poolStart(&dtd->pool), sizeof(PREFIX)); if (!id->prefix) return NULL; if (id->prefix->name == poolStart(&dtd->pool)) poolFinish(&dtd->pool); else poolDiscard(&dtd->pool); break; } } } } return id; } #define CONTEXT_SEP XML_T(ASCII_FF) static const XML_Char * getContext(XML_Parser parser) { DTD * const dtd = _dtd; /* save one level of indirection */ HASH_TABLE_ITER iter; XML_Bool needSep = XML_FALSE; if (dtd->defaultPrefix.binding) { int i; int len; if (!poolAppendChar(&tempPool, XML_T(ASCII_EQUALS))) return NULL; len = dtd->defaultPrefix.binding->uriLen; if (namespaceSeparator) len--; for (i = 0; i < len; i++) if (!poolAppendChar(&tempPool, dtd->defaultPrefix.binding->uri[i])) return NULL; needSep = XML_TRUE; } hashTableIterInit(&iter, &(dtd->prefixes)); for (;;) { int i; int len; const XML_Char *s; PREFIX *prefix = (PREFIX *)hashTableIterNext(&iter); if (!prefix) break; if (!prefix->binding) continue; if (needSep && !poolAppendChar(&tempPool, CONTEXT_SEP)) return NULL; for (s = prefix->name; *s; s++) if (!poolAppendChar(&tempPool, *s)) return NULL; if (!poolAppendChar(&tempPool, XML_T(ASCII_EQUALS))) return NULL; len = prefix->binding->uriLen; if (namespaceSeparator) len--; for (i = 0; i < len; i++) if (!poolAppendChar(&tempPool, prefix->binding->uri[i])) return NULL; needSep = XML_TRUE; } hashTableIterInit(&iter, &(dtd->generalEntities)); for (;;) { const XML_Char *s; ENTITY *e = (ENTITY *)hashTableIterNext(&iter); if (!e) break; if (!e->open) continue; if (needSep && !poolAppendChar(&tempPool, CONTEXT_SEP)) return NULL; for (s = e->name; *s; s++) if (!poolAppendChar(&tempPool, *s)) return 0; needSep = XML_TRUE; } if (!poolAppendChar(&tempPool, XML_T('\0'))) return NULL; return tempPool.start; } static XML_Bool setContext(XML_Parser parser, const XML_Char *context) { DTD * const dtd = _dtd; /* save one level of indirection */ const XML_Char *s = context; while (*context != XML_T('\0')) { if (*s == CONTEXT_SEP || *s == XML_T('\0')) { ENTITY *e; if (!poolAppendChar(&tempPool, XML_T('\0'))) return XML_FALSE; e = (ENTITY *)lookup(parser, &dtd->generalEntities, poolStart(&tempPool), 0); if (e) e->open = XML_TRUE; if (*s != XML_T('\0')) s++; context = s; poolDiscard(&tempPool); } else if (*s == XML_T(ASCII_EQUALS)) { PREFIX *prefix; if (poolLength(&tempPool) == 0) prefix = &dtd->defaultPrefix; else { if (!poolAppendChar(&tempPool, XML_T('\0'))) return XML_FALSE; prefix = (PREFIX *)lookup(parser, &dtd->prefixes, poolStart(&tempPool), sizeof(PREFIX)); if (!prefix) return XML_FALSE; if (prefix->name == poolStart(&tempPool)) { prefix->name = poolCopyString(&dtd->pool, prefix->name); if (!prefix->name) return XML_FALSE; } poolDiscard(&tempPool); } for (context = s + 1; *context != CONTEXT_SEP && *context != XML_T('\0'); context++) if (!poolAppendChar(&tempPool, *context)) return XML_FALSE; if (!poolAppendChar(&tempPool, XML_T('\0'))) return XML_FALSE; if (addBinding(parser, prefix, NULL, poolStart(&tempPool), &inheritedBindings) != XML_ERROR_NONE) return XML_FALSE; poolDiscard(&tempPool); if (*context != XML_T('\0')) ++context; s = context; } else { if (!poolAppendChar(&tempPool, *s)) return XML_FALSE; s++; } } return XML_TRUE; } static void FASTCALL normalizePublicId(XML_Char *publicId) { XML_Char *p = publicId; XML_Char *s; for (s = publicId; *s; s++) { switch (*s) { case 0x20: case 0xD: case 0xA: if (p != publicId && p[-1] != 0x20) *p++ = 0x20; break; default: *p++ = *s; } } if (p != publicId && p[-1] == 0x20) --p; *p = XML_T('\0'); } static DTD * dtdCreate(const XML_Memory_Handling_Suite *ms) { DTD *p = (DTD *)ms->malloc_fcn(sizeof(DTD)); if (p == NULL) return p; poolInit(&(p->pool), ms); poolInit(&(p->entityValuePool), ms); hashTableInit(&(p->generalEntities), ms); hashTableInit(&(p->elementTypes), ms); hashTableInit(&(p->attributeIds), ms); hashTableInit(&(p->prefixes), ms); #ifdef XML_DTD p->paramEntityRead = XML_FALSE; hashTableInit(&(p->paramEntities), ms); #endif /* XML_DTD */ p->defaultPrefix.name = NULL; p->defaultPrefix.binding = NULL; p->in_eldecl = XML_FALSE; p->scaffIndex = NULL; p->scaffold = NULL; p->scaffLevel = 0; p->scaffSize = 0; p->scaffCount = 0; p->contentStringLen = 0; p->keepProcessing = XML_TRUE; p->hasParamEntityRefs = XML_FALSE; p->standalone = XML_FALSE; return p; } static void dtdReset(DTD *p, const XML_Memory_Handling_Suite *ms) { HASH_TABLE_ITER iter; hashTableIterInit(&iter, &(p->elementTypes)); for (;;) { ELEMENT_TYPE *e = (ELEMENT_TYPE *)hashTableIterNext(&iter); if (!e) break; if (e->allocDefaultAtts != 0) ms->free_fcn(e->defaultAtts); } hashTableClear(&(p->generalEntities)); #ifdef XML_DTD p->paramEntityRead = XML_FALSE; hashTableClear(&(p->paramEntities)); #endif /* XML_DTD */ hashTableClear(&(p->elementTypes)); hashTableClear(&(p->attributeIds)); hashTableClear(&(p->prefixes)); poolClear(&(p->pool)); poolClear(&(p->entityValuePool)); p->defaultPrefix.name = NULL; p->defaultPrefix.binding = NULL; p->in_eldecl = XML_FALSE; ms->free_fcn(p->scaffIndex); p->scaffIndex = NULL; ms->free_fcn(p->scaffold); p->scaffold = NULL; p->scaffLevel = 0; p->scaffSize = 0; p->scaffCount = 0; p->contentStringLen = 0; p->keepProcessing = XML_TRUE; p->hasParamEntityRefs = XML_FALSE; p->standalone = XML_FALSE; } static void dtdDestroy(DTD *p, XML_Bool isDocEntity, const XML_Memory_Handling_Suite *ms) { HASH_TABLE_ITER iter; hashTableIterInit(&iter, &(p->elementTypes)); for (;;) { ELEMENT_TYPE *e = (ELEMENT_TYPE *)hashTableIterNext(&iter); if (!e) break; if (e->allocDefaultAtts != 0) ms->free_fcn(e->defaultAtts); } hashTableDestroy(&(p->generalEntities)); #ifdef XML_DTD hashTableDestroy(&(p->paramEntities)); #endif /* XML_DTD */ hashTableDestroy(&(p->elementTypes)); hashTableDestroy(&(p->attributeIds)); hashTableDestroy(&(p->prefixes)); poolDestroy(&(p->pool)); poolDestroy(&(p->entityValuePool)); if (isDocEntity) { ms->free_fcn(p->scaffIndex); ms->free_fcn(p->scaffold); } ms->free_fcn(p); } /* Do a deep copy of the DTD. Return 0 for out of memory, non-zero otherwise. The new DTD has already been initialized. */ static int dtdCopy(XML_Parser oldParser, DTD *newDtd, const DTD *oldDtd, const XML_Memory_Handling_Suite *ms) { HASH_TABLE_ITER iter; /* Copy the prefix table. */ hashTableIterInit(&iter, &(oldDtd->prefixes)); for (;;) { const XML_Char *name; const PREFIX *oldP = (PREFIX *)hashTableIterNext(&iter); if (!oldP) break; name = poolCopyString(&(newDtd->pool), oldP->name); if (!name) return 0; if (!lookup(oldParser, &(newDtd->prefixes), name, sizeof(PREFIX))) return 0; } hashTableIterInit(&iter, &(oldDtd->attributeIds)); /* Copy the attribute id table. */ for (;;) { ATTRIBUTE_ID *newA; const XML_Char *name; const ATTRIBUTE_ID *oldA = (ATTRIBUTE_ID *)hashTableIterNext(&iter); if (!oldA) break; /* Remember to allocate the scratch byte before the name. */ if (!poolAppendChar(&(newDtd->pool), XML_T('\0'))) return 0; name = poolCopyString(&(newDtd->pool), oldA->name); if (!name) return 0; ++name; newA = (ATTRIBUTE_ID *)lookup(oldParser, &(newDtd->attributeIds), name, sizeof(ATTRIBUTE_ID)); if (!newA) return 0; newA->maybeTokenized = oldA->maybeTokenized; if (oldA->prefix) { newA->xmlns = oldA->xmlns; if (oldA->prefix == &oldDtd->defaultPrefix) newA->prefix = &newDtd->defaultPrefix; else newA->prefix = (PREFIX *)lookup(oldParser, &(newDtd->prefixes), oldA->prefix->name, 0); } } /* Copy the element type table. */ hashTableIterInit(&iter, &(oldDtd->elementTypes)); for (;;) { int i; ELEMENT_TYPE *newE; const XML_Char *name; const ELEMENT_TYPE *oldE = (ELEMENT_TYPE *)hashTableIterNext(&iter); if (!oldE) break; name = poolCopyString(&(newDtd->pool), oldE->name); if (!name) return 0; newE = (ELEMENT_TYPE *)lookup(oldParser, &(newDtd->elementTypes), name, sizeof(ELEMENT_TYPE)); if (!newE) return 0; if (oldE->nDefaultAtts) { newE->defaultAtts = (DEFAULT_ATTRIBUTE *) ms->malloc_fcn(oldE->nDefaultAtts * sizeof(DEFAULT_ATTRIBUTE)); if (!newE->defaultAtts) { ms->free_fcn(newE); return 0; } } if (oldE->idAtt) newE->idAtt = (ATTRIBUTE_ID *) lookup(oldParser, &(newDtd->attributeIds), oldE->idAtt->name, 0); newE->allocDefaultAtts = newE->nDefaultAtts = oldE->nDefaultAtts; if (oldE->prefix) newE->prefix = (PREFIX *)lookup(oldParser, &(newDtd->prefixes), oldE->prefix->name, 0); for (i = 0; i < newE->nDefaultAtts; i++) { newE->defaultAtts[i].id = (ATTRIBUTE_ID *) lookup(oldParser, &(newDtd->attributeIds), oldE->defaultAtts[i].id->name, 0); newE->defaultAtts[i].isCdata = oldE->defaultAtts[i].isCdata; if (oldE->defaultAtts[i].value) { newE->defaultAtts[i].value = poolCopyString(&(newDtd->pool), oldE->defaultAtts[i].value); if (!newE->defaultAtts[i].value) return 0; } else newE->defaultAtts[i].value = NULL; } } /* Copy the entity tables. */ if (!copyEntityTable(oldParser, &(newDtd->generalEntities), &(newDtd->pool), &(oldDtd->generalEntities))) return 0; #ifdef XML_DTD if (!copyEntityTable(oldParser, &(newDtd->paramEntities), &(newDtd->pool), &(oldDtd->paramEntities))) return 0; newDtd->paramEntityRead = oldDtd->paramEntityRead; #endif /* XML_DTD */ newDtd->keepProcessing = oldDtd->keepProcessing; newDtd->hasParamEntityRefs = oldDtd->hasParamEntityRefs; newDtd->standalone = oldDtd->standalone; /* Don't want deep copying for scaffolding */ newDtd->in_eldecl = oldDtd->in_eldecl; newDtd->scaffold = oldDtd->scaffold; newDtd->contentStringLen = oldDtd->contentStringLen; newDtd->scaffSize = oldDtd->scaffSize; newDtd->scaffLevel = oldDtd->scaffLevel; newDtd->scaffIndex = oldDtd->scaffIndex; return 1; } /* End dtdCopy */ static int copyEntityTable(XML_Parser oldParser, HASH_TABLE *newTable, STRING_POOL *newPool, const HASH_TABLE *oldTable) { HASH_TABLE_ITER iter; const XML_Char *cachedOldBase = NULL; const XML_Char *cachedNewBase = NULL; hashTableIterInit(&iter, oldTable); for (;;) { ENTITY *newE; const XML_Char *name; const ENTITY *oldE = (ENTITY *)hashTableIterNext(&iter); if (!oldE) break; name = poolCopyString(newPool, oldE->name); if (!name) return 0; newE = (ENTITY *)lookup(oldParser, newTable, name, sizeof(ENTITY)); if (!newE) return 0; if (oldE->systemId) { const XML_Char *tem = poolCopyString(newPool, oldE->systemId); if (!tem) return 0; newE->systemId = tem; if (oldE->base) { if (oldE->base == cachedOldBase) newE->base = cachedNewBase; else { cachedOldBase = oldE->base; tem = poolCopyString(newPool, cachedOldBase); if (!tem) return 0; cachedNewBase = newE->base = tem; } } if (oldE->publicId) { tem = poolCopyString(newPool, oldE->publicId); if (!tem) return 0; newE->publicId = tem; } } else { const XML_Char *tem = poolCopyStringN(newPool, oldE->textPtr, oldE->textLen); if (!tem) return 0; newE->textPtr = tem; newE->textLen = oldE->textLen; } if (oldE->notation) { const XML_Char *tem = poolCopyString(newPool, oldE->notation); if (!tem) return 0; newE->notation = tem; } newE->is_param = oldE->is_param; newE->is_internal = oldE->is_internal; } return 1; } #define INIT_POWER 6 static XML_Bool FASTCALL keyeq(KEY s1, KEY s2) { for (; *s1 == *s2; s1++, s2++) if (*s1 == 0) return XML_TRUE; return XML_FALSE; } static unsigned long FASTCALL hash(XML_Parser parser, KEY s) { unsigned long h = hash_secret_salt; while (*s) h = CHAR_HASH(h, *s++); return h; } static NAMED * lookup(XML_Parser parser, HASH_TABLE *table, KEY name, size_t createSize) { size_t i; if (table->size == 0) { size_t tsize; if (!createSize) return NULL; table->power = INIT_POWER; /* table->size is a power of 2 */ table->size = (size_t)1 << INIT_POWER; tsize = table->size * sizeof(NAMED *); table->v = (NAMED **)table->mem->malloc_fcn(tsize); if (!table->v) { table->size = 0; return NULL; } memset(table->v, 0, tsize); i = hash(parser, name) & ((unsigned long)table->size - 1); } else { unsigned long h = hash(parser, name); unsigned long mask = (unsigned long)table->size - 1; unsigned char step = 0; i = h & mask; while (table->v[i]) { if (keyeq(name, table->v[i]->name)) return table->v[i]; if (!step) step = PROBE_STEP(h, mask, table->power); i < step ? (i += table->size - step) : (i -= step); } if (!createSize) return NULL; /* check for overflow (table is half full) */ if (table->used >> (table->power - 1)) { unsigned char newPower = table->power + 1; size_t newSize = (size_t)1 << newPower; unsigned long newMask = (unsigned long)newSize - 1; size_t tsize = newSize * sizeof(NAMED *); NAMED **newV = (NAMED **)table->mem->malloc_fcn(tsize); if (!newV) return NULL; memset(newV, 0, tsize); for (i = 0; i < table->size; i++) if (table->v[i]) { unsigned long newHash = hash(parser, table->v[i]->name); size_t j = newHash & newMask; step = 0; while (newV[j]) { if (!step) step = PROBE_STEP(newHash, newMask, newPower); j < step ? (j += newSize - step) : (j -= step); } newV[j] = table->v[i]; } table->mem->free_fcn(table->v); table->v = newV; table->power = newPower; table->size = newSize; i = h & newMask; step = 0; while (table->v[i]) { if (!step) step = PROBE_STEP(h, newMask, newPower); i < step ? (i += newSize - step) : (i -= step); } } } table->v[i] = (NAMED *)table->mem->malloc_fcn(createSize); if (!table->v[i]) return NULL; memset(table->v[i], 0, createSize); table->v[i]->name = name; (table->used)++; return table->v[i]; } static void FASTCALL hashTableClear(HASH_TABLE *table) { size_t i; for (i = 0; i < table->size; i++) { table->mem->free_fcn(table->v[i]); table->v[i] = NULL; } table->used = 0; } static void FASTCALL hashTableDestroy(HASH_TABLE *table) { size_t i; for (i = 0; i < table->size; i++) table->mem->free_fcn(table->v[i]); table->mem->free_fcn(table->v); } static void FASTCALL hashTableInit(HASH_TABLE *p, const XML_Memory_Handling_Suite *ms) { p->power = 0; p->size = 0; p->used = 0; p->v = NULL; p->mem = ms; } static void FASTCALL hashTableIterInit(HASH_TABLE_ITER *iter, const HASH_TABLE *table) { iter->p = table->v; iter->end = iter->p + table->size; } static NAMED * FASTCALL hashTableIterNext(HASH_TABLE_ITER *iter) { while (iter->p != iter->end) { NAMED *tem = *(iter->p)++; if (tem) return tem; } return NULL; } static void FASTCALL poolInit(STRING_POOL *pool, const XML_Memory_Handling_Suite *ms) { pool->blocks = NULL; pool->freeBlocks = NULL; pool->start = NULL; pool->ptr = NULL; pool->end = NULL; pool->mem = ms; } static void FASTCALL poolClear(STRING_POOL *pool) { if (!pool->freeBlocks) pool->freeBlocks = pool->blocks; else { BLOCK *p = pool->blocks; while (p) { BLOCK *tem = p->next; p->next = pool->freeBlocks; pool->freeBlocks = p; p = tem; } } pool->blocks = NULL; pool->start = NULL; pool->ptr = NULL; pool->end = NULL; } static void FASTCALL poolDestroy(STRING_POOL *pool) { BLOCK *p = pool->blocks; while (p) { BLOCK *tem = p->next; pool->mem->free_fcn(p); p = tem; } p = pool->freeBlocks; while (p) { BLOCK *tem = p->next; pool->mem->free_fcn(p); p = tem; } } static XML_Char * poolAppend(STRING_POOL *pool, const ENCODING *enc, const char *ptr, const char *end) { if (!pool->ptr && !poolGrow(pool)) return NULL; for (;;) { XmlConvert(enc, &ptr, end, (ICHAR **)&(pool->ptr), (ICHAR *)pool->end); if (ptr == end) break; if (!poolGrow(pool)) return NULL; } return pool->start; } static const XML_Char * FASTCALL poolCopyString(STRING_POOL *pool, const XML_Char *s) { do { if (!poolAppendChar(pool, *s)) return NULL; } while (*s++); s = pool->start; poolFinish(pool); return s; } static const XML_Char * poolCopyStringN(STRING_POOL *pool, const XML_Char *s, int n) { if (!pool->ptr && !poolGrow(pool)) return NULL; for (; n > 0; --n, s++) { if (!poolAppendChar(pool, *s)) return NULL; } s = pool->start; poolFinish(pool); return s; } static const XML_Char * FASTCALL poolAppendString(STRING_POOL *pool, const XML_Char *s) { while (*s) { if (!poolAppendChar(pool, *s)) return NULL; s++; } return pool->start; } static XML_Char * poolStoreString(STRING_POOL *pool, const ENCODING *enc, const char *ptr, const char *end) { if (!poolAppend(pool, enc, ptr, end)) return NULL; if (pool->ptr == pool->end && !poolGrow(pool)) return NULL; *(pool->ptr)++ = 0; return pool->start; } static XML_Bool FASTCALL poolGrow(STRING_POOL *pool) { if (pool->freeBlocks) { if (pool->start == 0) { pool->blocks = pool->freeBlocks; pool->freeBlocks = pool->freeBlocks->next; pool->blocks->next = NULL; pool->start = pool->blocks->s; pool->end = pool->start + pool->blocks->size; pool->ptr = pool->start; return XML_TRUE; } if (pool->end - pool->start < pool->freeBlocks->size) { BLOCK *tem = pool->freeBlocks->next; pool->freeBlocks->next = pool->blocks; pool->blocks = pool->freeBlocks; pool->freeBlocks = tem; memcpy(pool->blocks->s, pool->start, (pool->end - pool->start) * sizeof(XML_Char)); pool->ptr = pool->blocks->s + (pool->ptr - pool->start); pool->start = pool->blocks->s; pool->end = pool->start + pool->blocks->size; return XML_TRUE; } } if (pool->blocks && pool->start == pool->blocks->s) { int blockSize = (int)(pool->end - pool->start)*2; BLOCK *temp = (BLOCK *) pool->mem->realloc_fcn(pool->blocks, (offsetof(BLOCK, s) + blockSize * sizeof(XML_Char))); if (temp == NULL) return XML_FALSE; pool->blocks = temp; pool->blocks->size = blockSize; pool->ptr = pool->blocks->s + (pool->ptr - pool->start); pool->start = pool->blocks->s; pool->end = pool->start + blockSize; } else { BLOCK *tem; int blockSize = (int)(pool->end - pool->start); if (blockSize < INIT_BLOCK_SIZE) blockSize = INIT_BLOCK_SIZE; else blockSize *= 2; tem = (BLOCK *)pool->mem->malloc_fcn(offsetof(BLOCK, s) + blockSize * sizeof(XML_Char)); if (!tem) return XML_FALSE; tem->size = blockSize; tem->next = pool->blocks; pool->blocks = tem; if (pool->ptr != pool->start) memcpy(tem->s, pool->start, (pool->ptr - pool->start) * sizeof(XML_Char)); pool->ptr = tem->s + (pool->ptr - pool->start); pool->start = tem->s; pool->end = tem->s + blockSize; } return XML_TRUE; } static int FASTCALL nextScaffoldPart(XML_Parser parser) { DTD * const dtd = _dtd; /* save one level of indirection */ CONTENT_SCAFFOLD * me; int next; if (!dtd->scaffIndex) { dtd->scaffIndex = (int *)MALLOC(groupSize * sizeof(int)); if (!dtd->scaffIndex) return -1; dtd->scaffIndex[0] = 0; } if (dtd->scaffCount >= dtd->scaffSize) { CONTENT_SCAFFOLD *temp; if (dtd->scaffold) { temp = (CONTENT_SCAFFOLD *) REALLOC(dtd->scaffold, dtd->scaffSize * 2 * sizeof(CONTENT_SCAFFOLD)); if (temp == NULL) return -1; dtd->scaffSize *= 2; } else { temp = (CONTENT_SCAFFOLD *)MALLOC(INIT_SCAFFOLD_ELEMENTS * sizeof(CONTENT_SCAFFOLD)); if (temp == NULL) return -1; dtd->scaffSize = INIT_SCAFFOLD_ELEMENTS; } dtd->scaffold = temp; } next = dtd->scaffCount++; me = &dtd->scaffold[next]; if (dtd->scaffLevel) { CONTENT_SCAFFOLD *parent = &dtd->scaffold[dtd->scaffIndex[dtd->scaffLevel-1]]; if (parent->lastchild) { dtd->scaffold[parent->lastchild].nextsib = next; } if (!parent->childcnt) parent->firstchild = next; parent->lastchild = next; parent->childcnt++; } me->firstchild = me->lastchild = me->childcnt = me->nextsib = 0; return next; } static void build_node(XML_Parser parser, int src_node, XML_Content *dest, XML_Content **contpos, XML_Char **strpos) { DTD * const dtd = _dtd; /* save one level of indirection */ dest->type = dtd->scaffold[src_node].type; dest->quant = dtd->scaffold[src_node].quant; if (dest->type == XML_CTYPE_NAME) { const XML_Char *src; dest->name = *strpos; src = dtd->scaffold[src_node].name; for (;;) { *(*strpos)++ = *src; if (!*src) break; src++; } dest->numchildren = 0; dest->children = NULL; } else { unsigned int i; int cn; dest->numchildren = dtd->scaffold[src_node].childcnt; dest->children = *contpos; *contpos += dest->numchildren; for (i = 0, cn = dtd->scaffold[src_node].firstchild; i < dest->numchildren; i++, cn = dtd->scaffold[cn].nextsib) { build_node(parser, cn, &(dest->children[i]), contpos, strpos); } dest->name = NULL; } } static XML_Content * build_model (XML_Parser parser) { DTD * const dtd = _dtd; /* save one level of indirection */ XML_Content *ret; XML_Content *cpos; XML_Char * str; int allocsize = (dtd->scaffCount * sizeof(XML_Content) + (dtd->contentStringLen * sizeof(XML_Char))); ret = (XML_Content *)MALLOC(allocsize); if (!ret) return NULL; str = (XML_Char *) (&ret[dtd->scaffCount]); cpos = &ret[1]; build_node(parser, 0, ret, &cpos, &str); return ret; } static ELEMENT_TYPE * getElementType(XML_Parser parser, const ENCODING *enc, const char *ptr, const char *end) { DTD * const dtd = _dtd; /* save one level of indirection */ const XML_Char *name = poolStoreString(&dtd->pool, enc, ptr, end); ELEMENT_TYPE *ret; if (!name) return NULL; ret = (ELEMENT_TYPE *) lookup(parser, &dtd->elementTypes, name, sizeof(ELEMENT_TYPE)); if (!ret) return NULL; if (ret->name != name) poolDiscard(&dtd->pool); else { poolFinish(&dtd->pool); if (!setElementTypePrefix(parser, ret)) return NULL; } return ret; } suite3270-4.1/Common/libexpat/xmlrole.c000066400000000000000000001020231413735575200177230ustar00rootroot00000000000000/* Copyright (c) 1998, 1999 Thai Open Source Software Center Ltd See the file COPYING for copying permission. */ #include #ifdef COMPILED_FROM_DSP #include "winconfig.h" #elif defined(MACOS_CLASSIC) #include "macconfig.h" #elif defined(__amigaos__) #include "amigaconfig.h" #elif defined(__WATCOMC__) #include "watcomconfig.h" #else #ifdef HAVE_EXPAT_CONFIG_H #include #endif #endif /* ndef COMPILED_FROM_DSP */ #include "expat_external.h" #include "internal.h" #include "xmlrole.h" #include "ascii.h" /* Doesn't check: that ,| are not mixed in a model group content of literals */ static const char KW_ANY[] = { ASCII_A, ASCII_N, ASCII_Y, '\0' }; static const char KW_ATTLIST[] = { ASCII_A, ASCII_T, ASCII_T, ASCII_L, ASCII_I, ASCII_S, ASCII_T, '\0' }; static const char KW_CDATA[] = { ASCII_C, ASCII_D, ASCII_A, ASCII_T, ASCII_A, '\0' }; static const char KW_DOCTYPE[] = { ASCII_D, ASCII_O, ASCII_C, ASCII_T, ASCII_Y, ASCII_P, ASCII_E, '\0' }; static const char KW_ELEMENT[] = { ASCII_E, ASCII_L, ASCII_E, ASCII_M, ASCII_E, ASCII_N, ASCII_T, '\0' }; static const char KW_EMPTY[] = { ASCII_E, ASCII_M, ASCII_P, ASCII_T, ASCII_Y, '\0' }; static const char KW_ENTITIES[] = { ASCII_E, ASCII_N, ASCII_T, ASCII_I, ASCII_T, ASCII_I, ASCII_E, ASCII_S, '\0' }; static const char KW_ENTITY[] = { ASCII_E, ASCII_N, ASCII_T, ASCII_I, ASCII_T, ASCII_Y, '\0' }; static const char KW_FIXED[] = { ASCII_F, ASCII_I, ASCII_X, ASCII_E, ASCII_D, '\0' }; static const char KW_ID[] = { ASCII_I, ASCII_D, '\0' }; static const char KW_IDREF[] = { ASCII_I, ASCII_D, ASCII_R, ASCII_E, ASCII_F, '\0' }; static const char KW_IDREFS[] = { ASCII_I, ASCII_D, ASCII_R, ASCII_E, ASCII_F, ASCII_S, '\0' }; #ifdef XML_DTD static const char KW_IGNORE[] = { ASCII_I, ASCII_G, ASCII_N, ASCII_O, ASCII_R, ASCII_E, '\0' }; #endif static const char KW_IMPLIED[] = { ASCII_I, ASCII_M, ASCII_P, ASCII_L, ASCII_I, ASCII_E, ASCII_D, '\0' }; #ifdef XML_DTD static const char KW_INCLUDE[] = { ASCII_I, ASCII_N, ASCII_C, ASCII_L, ASCII_U, ASCII_D, ASCII_E, '\0' }; #endif static const char KW_NDATA[] = { ASCII_N, ASCII_D, ASCII_A, ASCII_T, ASCII_A, '\0' }; static const char KW_NMTOKEN[] = { ASCII_N, ASCII_M, ASCII_T, ASCII_O, ASCII_K, ASCII_E, ASCII_N, '\0' }; static const char KW_NMTOKENS[] = { ASCII_N, ASCII_M, ASCII_T, ASCII_O, ASCII_K, ASCII_E, ASCII_N, ASCII_S, '\0' }; static const char KW_NOTATION[] = { ASCII_N, ASCII_O, ASCII_T, ASCII_A, ASCII_T, ASCII_I, ASCII_O, ASCII_N, '\0' }; static const char KW_PCDATA[] = { ASCII_P, ASCII_C, ASCII_D, ASCII_A, ASCII_T, ASCII_A, '\0' }; static const char KW_PUBLIC[] = { ASCII_P, ASCII_U, ASCII_B, ASCII_L, ASCII_I, ASCII_C, '\0' }; static const char KW_REQUIRED[] = { ASCII_R, ASCII_E, ASCII_Q, ASCII_U, ASCII_I, ASCII_R, ASCII_E, ASCII_D, '\0' }; static const char KW_SYSTEM[] = { ASCII_S, ASCII_Y, ASCII_S, ASCII_T, ASCII_E, ASCII_M, '\0' }; #ifndef MIN_BYTES_PER_CHAR #define MIN_BYTES_PER_CHAR(enc) ((enc)->minBytesPerChar) #endif #ifdef XML_DTD #define setTopLevel(state) \ ((state)->handler = ((state)->documentEntity \ ? internalSubset \ : externalSubset1)) #else /* not XML_DTD */ #define setTopLevel(state) ((state)->handler = internalSubset) #endif /* not XML_DTD */ typedef int PTRCALL PROLOG_HANDLER(PROLOG_STATE *state, int tok, const char *ptr, const char *end, const ENCODING *enc); static PROLOG_HANDLER prolog0, prolog1, prolog2, doctype0, doctype1, doctype2, doctype3, doctype4, doctype5, internalSubset, entity0, entity1, entity2, entity3, entity4, entity5, entity6, entity7, entity8, entity9, entity10, notation0, notation1, notation2, notation3, notation4, attlist0, attlist1, attlist2, attlist3, attlist4, attlist5, attlist6, attlist7, attlist8, attlist9, element0, element1, element2, element3, element4, element5, element6, element7, #ifdef XML_DTD externalSubset0, externalSubset1, condSect0, condSect1, condSect2, #endif /* XML_DTD */ declClose, error; static int FASTCALL common(PROLOG_STATE *state, int tok); static int PTRCALL prolog0(PROLOG_STATE *state, int tok, const char *ptr, const char *end, const ENCODING *enc) { switch (tok) { case XML_TOK_PROLOG_S: state->handler = prolog1; return XML_ROLE_NONE; case XML_TOK_XML_DECL: state->handler = prolog1; return XML_ROLE_XML_DECL; case XML_TOK_PI: state->handler = prolog1; return XML_ROLE_PI; case XML_TOK_COMMENT: state->handler = prolog1; return XML_ROLE_COMMENT; case XML_TOK_BOM: return XML_ROLE_NONE; case XML_TOK_DECL_OPEN: if (!XmlNameMatchesAscii(enc, ptr + 2 * MIN_BYTES_PER_CHAR(enc), end, KW_DOCTYPE)) break; state->handler = doctype0; return XML_ROLE_DOCTYPE_NONE; case XML_TOK_INSTANCE_START: state->handler = error; return XML_ROLE_INSTANCE_START; } return common(state, tok); } static int PTRCALL prolog1(PROLOG_STATE *state, int tok, const char *ptr, const char *end, const ENCODING *enc) { switch (tok) { case XML_TOK_PROLOG_S: return XML_ROLE_NONE; case XML_TOK_PI: return XML_ROLE_PI; case XML_TOK_COMMENT: return XML_ROLE_COMMENT; case XML_TOK_BOM: return XML_ROLE_NONE; case XML_TOK_DECL_OPEN: if (!XmlNameMatchesAscii(enc, ptr + 2 * MIN_BYTES_PER_CHAR(enc), end, KW_DOCTYPE)) break; state->handler = doctype0; return XML_ROLE_DOCTYPE_NONE; case XML_TOK_INSTANCE_START: state->handler = error; return XML_ROLE_INSTANCE_START; } return common(state, tok); } static int PTRCALL prolog2(PROLOG_STATE *state, int tok, const char *ptr, const char *end, const ENCODING *enc) { switch (tok) { case XML_TOK_PROLOG_S: return XML_ROLE_NONE; case XML_TOK_PI: return XML_ROLE_PI; case XML_TOK_COMMENT: return XML_ROLE_COMMENT; case XML_TOK_INSTANCE_START: state->handler = error; return XML_ROLE_INSTANCE_START; } return common(state, tok); } static int PTRCALL doctype0(PROLOG_STATE *state, int tok, const char *ptr, const char *end, const ENCODING *enc) { switch (tok) { case XML_TOK_PROLOG_S: return XML_ROLE_DOCTYPE_NONE; case XML_TOK_NAME: case XML_TOK_PREFIXED_NAME: state->handler = doctype1; return XML_ROLE_DOCTYPE_NAME; } return common(state, tok); } static int PTRCALL doctype1(PROLOG_STATE *state, int tok, const char *ptr, const char *end, const ENCODING *enc) { switch (tok) { case XML_TOK_PROLOG_S: return XML_ROLE_DOCTYPE_NONE; case XML_TOK_OPEN_BRACKET: state->handler = internalSubset; return XML_ROLE_DOCTYPE_INTERNAL_SUBSET; case XML_TOK_DECL_CLOSE: state->handler = prolog2; return XML_ROLE_DOCTYPE_CLOSE; case XML_TOK_NAME: if (XmlNameMatchesAscii(enc, ptr, end, KW_SYSTEM)) { state->handler = doctype3; return XML_ROLE_DOCTYPE_NONE; } if (XmlNameMatchesAscii(enc, ptr, end, KW_PUBLIC)) { state->handler = doctype2; return XML_ROLE_DOCTYPE_NONE; } break; } return common(state, tok); } static int PTRCALL doctype2(PROLOG_STATE *state, int tok, const char *ptr, const char *end, const ENCODING *enc) { switch (tok) { case XML_TOK_PROLOG_S: return XML_ROLE_DOCTYPE_NONE; case XML_TOK_LITERAL: state->handler = doctype3; return XML_ROLE_DOCTYPE_PUBLIC_ID; } return common(state, tok); } static int PTRCALL doctype3(PROLOG_STATE *state, int tok, const char *ptr, const char *end, const ENCODING *enc) { switch (tok) { case XML_TOK_PROLOG_S: return XML_ROLE_DOCTYPE_NONE; case XML_TOK_LITERAL: state->handler = doctype4; return XML_ROLE_DOCTYPE_SYSTEM_ID; } return common(state, tok); } static int PTRCALL doctype4(PROLOG_STATE *state, int tok, const char *ptr, const char *end, const ENCODING *enc) { switch (tok) { case XML_TOK_PROLOG_S: return XML_ROLE_DOCTYPE_NONE; case XML_TOK_OPEN_BRACKET: state->handler = internalSubset; return XML_ROLE_DOCTYPE_INTERNAL_SUBSET; case XML_TOK_DECL_CLOSE: state->handler = prolog2; return XML_ROLE_DOCTYPE_CLOSE; } return common(state, tok); } static int PTRCALL doctype5(PROLOG_STATE *state, int tok, const char *ptr, const char *end, const ENCODING *enc) { switch (tok) { case XML_TOK_PROLOG_S: return XML_ROLE_DOCTYPE_NONE; case XML_TOK_DECL_CLOSE: state->handler = prolog2; return XML_ROLE_DOCTYPE_CLOSE; } return common(state, tok); } static int PTRCALL internalSubset(PROLOG_STATE *state, int tok, const char *ptr, const char *end, const ENCODING *enc) { switch (tok) { case XML_TOK_PROLOG_S: return XML_ROLE_NONE; case XML_TOK_DECL_OPEN: if (XmlNameMatchesAscii(enc, ptr + 2 * MIN_BYTES_PER_CHAR(enc), end, KW_ENTITY)) { state->handler = entity0; return XML_ROLE_ENTITY_NONE; } if (XmlNameMatchesAscii(enc, ptr + 2 * MIN_BYTES_PER_CHAR(enc), end, KW_ATTLIST)) { state->handler = attlist0; return XML_ROLE_ATTLIST_NONE; } if (XmlNameMatchesAscii(enc, ptr + 2 * MIN_BYTES_PER_CHAR(enc), end, KW_ELEMENT)) { state->handler = element0; return XML_ROLE_ELEMENT_NONE; } if (XmlNameMatchesAscii(enc, ptr + 2 * MIN_BYTES_PER_CHAR(enc), end, KW_NOTATION)) { state->handler = notation0; return XML_ROLE_NOTATION_NONE; } break; case XML_TOK_PI: return XML_ROLE_PI; case XML_TOK_COMMENT: return XML_ROLE_COMMENT; case XML_TOK_PARAM_ENTITY_REF: return XML_ROLE_PARAM_ENTITY_REF; case XML_TOK_CLOSE_BRACKET: state->handler = doctype5; return XML_ROLE_DOCTYPE_NONE; case XML_TOK_NONE: return XML_ROLE_NONE; } return common(state, tok); } #ifdef XML_DTD static int PTRCALL externalSubset0(PROLOG_STATE *state, int tok, const char *ptr, const char *end, const ENCODING *enc) { state->handler = externalSubset1; if (tok == XML_TOK_XML_DECL) return XML_ROLE_TEXT_DECL; return externalSubset1(state, tok, ptr, end, enc); } static int PTRCALL externalSubset1(PROLOG_STATE *state, int tok, const char *ptr, const char *end, const ENCODING *enc) { switch (tok) { case XML_TOK_COND_SECT_OPEN: state->handler = condSect0; return XML_ROLE_NONE; case XML_TOK_COND_SECT_CLOSE: if (state->includeLevel == 0) break; state->includeLevel -= 1; return XML_ROLE_NONE; case XML_TOK_PROLOG_S: return XML_ROLE_NONE; case XML_TOK_CLOSE_BRACKET: break; case XML_TOK_NONE: if (state->includeLevel) break; return XML_ROLE_NONE; default: return internalSubset(state, tok, ptr, end, enc); } return common(state, tok); } #endif /* XML_DTD */ static int PTRCALL entity0(PROLOG_STATE *state, int tok, const char *ptr, const char *end, const ENCODING *enc) { switch (tok) { case XML_TOK_PROLOG_S: return XML_ROLE_ENTITY_NONE; case XML_TOK_PERCENT: state->handler = entity1; return XML_ROLE_ENTITY_NONE; case XML_TOK_NAME: state->handler = entity2; return XML_ROLE_GENERAL_ENTITY_NAME; } return common(state, tok); } static int PTRCALL entity1(PROLOG_STATE *state, int tok, const char *ptr, const char *end, const ENCODING *enc) { switch (tok) { case XML_TOK_PROLOG_S: return XML_ROLE_ENTITY_NONE; case XML_TOK_NAME: state->handler = entity7; return XML_ROLE_PARAM_ENTITY_NAME; } return common(state, tok); } static int PTRCALL entity2(PROLOG_STATE *state, int tok, const char *ptr, const char *end, const ENCODING *enc) { switch (tok) { case XML_TOK_PROLOG_S: return XML_ROLE_ENTITY_NONE; case XML_TOK_NAME: if (XmlNameMatchesAscii(enc, ptr, end, KW_SYSTEM)) { state->handler = entity4; return XML_ROLE_ENTITY_NONE; } if (XmlNameMatchesAscii(enc, ptr, end, KW_PUBLIC)) { state->handler = entity3; return XML_ROLE_ENTITY_NONE; } break; case XML_TOK_LITERAL: state->handler = declClose; state->role_none = XML_ROLE_ENTITY_NONE; return XML_ROLE_ENTITY_VALUE; } return common(state, tok); } static int PTRCALL entity3(PROLOG_STATE *state, int tok, const char *ptr, const char *end, const ENCODING *enc) { switch (tok) { case XML_TOK_PROLOG_S: return XML_ROLE_ENTITY_NONE; case XML_TOK_LITERAL: state->handler = entity4; return XML_ROLE_ENTITY_PUBLIC_ID; } return common(state, tok); } static int PTRCALL entity4(PROLOG_STATE *state, int tok, const char *ptr, const char *end, const ENCODING *enc) { switch (tok) { case XML_TOK_PROLOG_S: return XML_ROLE_ENTITY_NONE; case XML_TOK_LITERAL: state->handler = entity5; return XML_ROLE_ENTITY_SYSTEM_ID; } return common(state, tok); } static int PTRCALL entity5(PROLOG_STATE *state, int tok, const char *ptr, const char *end, const ENCODING *enc) { switch (tok) { case XML_TOK_PROLOG_S: return XML_ROLE_ENTITY_NONE; case XML_TOK_DECL_CLOSE: setTopLevel(state); return XML_ROLE_ENTITY_COMPLETE; case XML_TOK_NAME: if (XmlNameMatchesAscii(enc, ptr, end, KW_NDATA)) { state->handler = entity6; return XML_ROLE_ENTITY_NONE; } break; } return common(state, tok); } static int PTRCALL entity6(PROLOG_STATE *state, int tok, const char *ptr, const char *end, const ENCODING *enc) { switch (tok) { case XML_TOK_PROLOG_S: return XML_ROLE_ENTITY_NONE; case XML_TOK_NAME: state->handler = declClose; state->role_none = XML_ROLE_ENTITY_NONE; return XML_ROLE_ENTITY_NOTATION_NAME; } return common(state, tok); } static int PTRCALL entity7(PROLOG_STATE *state, int tok, const char *ptr, const char *end, const ENCODING *enc) { switch (tok) { case XML_TOK_PROLOG_S: return XML_ROLE_ENTITY_NONE; case XML_TOK_NAME: if (XmlNameMatchesAscii(enc, ptr, end, KW_SYSTEM)) { state->handler = entity9; return XML_ROLE_ENTITY_NONE; } if (XmlNameMatchesAscii(enc, ptr, end, KW_PUBLIC)) { state->handler = entity8; return XML_ROLE_ENTITY_NONE; } break; case XML_TOK_LITERAL: state->handler = declClose; state->role_none = XML_ROLE_ENTITY_NONE; return XML_ROLE_ENTITY_VALUE; } return common(state, tok); } static int PTRCALL entity8(PROLOG_STATE *state, int tok, const char *ptr, const char *end, const ENCODING *enc) { switch (tok) { case XML_TOK_PROLOG_S: return XML_ROLE_ENTITY_NONE; case XML_TOK_LITERAL: state->handler = entity9; return XML_ROLE_ENTITY_PUBLIC_ID; } return common(state, tok); } static int PTRCALL entity9(PROLOG_STATE *state, int tok, const char *ptr, const char *end, const ENCODING *enc) { switch (tok) { case XML_TOK_PROLOG_S: return XML_ROLE_ENTITY_NONE; case XML_TOK_LITERAL: state->handler = entity10; return XML_ROLE_ENTITY_SYSTEM_ID; } return common(state, tok); } static int PTRCALL entity10(PROLOG_STATE *state, int tok, const char *ptr, const char *end, const ENCODING *enc) { switch (tok) { case XML_TOK_PROLOG_S: return XML_ROLE_ENTITY_NONE; case XML_TOK_DECL_CLOSE: setTopLevel(state); return XML_ROLE_ENTITY_COMPLETE; } return common(state, tok); } static int PTRCALL notation0(PROLOG_STATE *state, int tok, const char *ptr, const char *end, const ENCODING *enc) { switch (tok) { case XML_TOK_PROLOG_S: return XML_ROLE_NOTATION_NONE; case XML_TOK_NAME: state->handler = notation1; return XML_ROLE_NOTATION_NAME; } return common(state, tok); } static int PTRCALL notation1(PROLOG_STATE *state, int tok, const char *ptr, const char *end, const ENCODING *enc) { switch (tok) { case XML_TOK_PROLOG_S: return XML_ROLE_NOTATION_NONE; case XML_TOK_NAME: if (XmlNameMatchesAscii(enc, ptr, end, KW_SYSTEM)) { state->handler = notation3; return XML_ROLE_NOTATION_NONE; } if (XmlNameMatchesAscii(enc, ptr, end, KW_PUBLIC)) { state->handler = notation2; return XML_ROLE_NOTATION_NONE; } break; } return common(state, tok); } static int PTRCALL notation2(PROLOG_STATE *state, int tok, const char *ptr, const char *end, const ENCODING *enc) { switch (tok) { case XML_TOK_PROLOG_S: return XML_ROLE_NOTATION_NONE; case XML_TOK_LITERAL: state->handler = notation4; return XML_ROLE_NOTATION_PUBLIC_ID; } return common(state, tok); } static int PTRCALL notation3(PROLOG_STATE *state, int tok, const char *ptr, const char *end, const ENCODING *enc) { switch (tok) { case XML_TOK_PROLOG_S: return XML_ROLE_NOTATION_NONE; case XML_TOK_LITERAL: state->handler = declClose; state->role_none = XML_ROLE_NOTATION_NONE; return XML_ROLE_NOTATION_SYSTEM_ID; } return common(state, tok); } static int PTRCALL notation4(PROLOG_STATE *state, int tok, const char *ptr, const char *end, const ENCODING *enc) { switch (tok) { case XML_TOK_PROLOG_S: return XML_ROLE_NOTATION_NONE; case XML_TOK_LITERAL: state->handler = declClose; state->role_none = XML_ROLE_NOTATION_NONE; return XML_ROLE_NOTATION_SYSTEM_ID; case XML_TOK_DECL_CLOSE: setTopLevel(state); return XML_ROLE_NOTATION_NO_SYSTEM_ID; } return common(state, tok); } static int PTRCALL attlist0(PROLOG_STATE *state, int tok, const char *ptr, const char *end, const ENCODING *enc) { switch (tok) { case XML_TOK_PROLOG_S: return XML_ROLE_ATTLIST_NONE; case XML_TOK_NAME: case XML_TOK_PREFIXED_NAME: state->handler = attlist1; return XML_ROLE_ATTLIST_ELEMENT_NAME; } return common(state, tok); } static int PTRCALL attlist1(PROLOG_STATE *state, int tok, const char *ptr, const char *end, const ENCODING *enc) { switch (tok) { case XML_TOK_PROLOG_S: return XML_ROLE_ATTLIST_NONE; case XML_TOK_DECL_CLOSE: setTopLevel(state); return XML_ROLE_ATTLIST_NONE; case XML_TOK_NAME: case XML_TOK_PREFIXED_NAME: state->handler = attlist2; return XML_ROLE_ATTRIBUTE_NAME; } return common(state, tok); } static int PTRCALL attlist2(PROLOG_STATE *state, int tok, const char *ptr, const char *end, const ENCODING *enc) { switch (tok) { case XML_TOK_PROLOG_S: return XML_ROLE_ATTLIST_NONE; case XML_TOK_NAME: { static const char * const types[] = { KW_CDATA, KW_ID, KW_IDREF, KW_IDREFS, KW_ENTITY, KW_ENTITIES, KW_NMTOKEN, KW_NMTOKENS, }; int i; for (i = 0; i < (int)(sizeof(types)/sizeof(types[0])); i++) if (XmlNameMatchesAscii(enc, ptr, end, types[i])) { state->handler = attlist8; return XML_ROLE_ATTRIBUTE_TYPE_CDATA + i; } } if (XmlNameMatchesAscii(enc, ptr, end, KW_NOTATION)) { state->handler = attlist5; return XML_ROLE_ATTLIST_NONE; } break; case XML_TOK_OPEN_PAREN: state->handler = attlist3; return XML_ROLE_ATTLIST_NONE; } return common(state, tok); } static int PTRCALL attlist3(PROLOG_STATE *state, int tok, const char *ptr, const char *end, const ENCODING *enc) { switch (tok) { case XML_TOK_PROLOG_S: return XML_ROLE_ATTLIST_NONE; case XML_TOK_NMTOKEN: case XML_TOK_NAME: case XML_TOK_PREFIXED_NAME: state->handler = attlist4; return XML_ROLE_ATTRIBUTE_ENUM_VALUE; } return common(state, tok); } static int PTRCALL attlist4(PROLOG_STATE *state, int tok, const char *ptr, const char *end, const ENCODING *enc) { switch (tok) { case XML_TOK_PROLOG_S: return XML_ROLE_ATTLIST_NONE; case XML_TOK_CLOSE_PAREN: state->handler = attlist8; return XML_ROLE_ATTLIST_NONE; case XML_TOK_OR: state->handler = attlist3; return XML_ROLE_ATTLIST_NONE; } return common(state, tok); } static int PTRCALL attlist5(PROLOG_STATE *state, int tok, const char *ptr, const char *end, const ENCODING *enc) { switch (tok) { case XML_TOK_PROLOG_S: return XML_ROLE_ATTLIST_NONE; case XML_TOK_OPEN_PAREN: state->handler = attlist6; return XML_ROLE_ATTLIST_NONE; } return common(state, tok); } static int PTRCALL attlist6(PROLOG_STATE *state, int tok, const char *ptr, const char *end, const ENCODING *enc) { switch (tok) { case XML_TOK_PROLOG_S: return XML_ROLE_ATTLIST_NONE; case XML_TOK_NAME: state->handler = attlist7; return XML_ROLE_ATTRIBUTE_NOTATION_VALUE; } return common(state, tok); } static int PTRCALL attlist7(PROLOG_STATE *state, int tok, const char *ptr, const char *end, const ENCODING *enc) { switch (tok) { case XML_TOK_PROLOG_S: return XML_ROLE_ATTLIST_NONE; case XML_TOK_CLOSE_PAREN: state->handler = attlist8; return XML_ROLE_ATTLIST_NONE; case XML_TOK_OR: state->handler = attlist6; return XML_ROLE_ATTLIST_NONE; } return common(state, tok); } /* default value */ static int PTRCALL attlist8(PROLOG_STATE *state, int tok, const char *ptr, const char *end, const ENCODING *enc) { switch (tok) { case XML_TOK_PROLOG_S: return XML_ROLE_ATTLIST_NONE; case XML_TOK_POUND_NAME: if (XmlNameMatchesAscii(enc, ptr + MIN_BYTES_PER_CHAR(enc), end, KW_IMPLIED)) { state->handler = attlist1; return XML_ROLE_IMPLIED_ATTRIBUTE_VALUE; } if (XmlNameMatchesAscii(enc, ptr + MIN_BYTES_PER_CHAR(enc), end, KW_REQUIRED)) { state->handler = attlist1; return XML_ROLE_REQUIRED_ATTRIBUTE_VALUE; } if (XmlNameMatchesAscii(enc, ptr + MIN_BYTES_PER_CHAR(enc), end, KW_FIXED)) { state->handler = attlist9; return XML_ROLE_ATTLIST_NONE; } break; case XML_TOK_LITERAL: state->handler = attlist1; return XML_ROLE_DEFAULT_ATTRIBUTE_VALUE; } return common(state, tok); } static int PTRCALL attlist9(PROLOG_STATE *state, int tok, const char *ptr, const char *end, const ENCODING *enc) { switch (tok) { case XML_TOK_PROLOG_S: return XML_ROLE_ATTLIST_NONE; case XML_TOK_LITERAL: state->handler = attlist1; return XML_ROLE_FIXED_ATTRIBUTE_VALUE; } return common(state, tok); } static int PTRCALL element0(PROLOG_STATE *state, int tok, const char *ptr, const char *end, const ENCODING *enc) { switch (tok) { case XML_TOK_PROLOG_S: return XML_ROLE_ELEMENT_NONE; case XML_TOK_NAME: case XML_TOK_PREFIXED_NAME: state->handler = element1; return XML_ROLE_ELEMENT_NAME; } return common(state, tok); } static int PTRCALL element1(PROLOG_STATE *state, int tok, const char *ptr, const char *end, const ENCODING *enc) { switch (tok) { case XML_TOK_PROLOG_S: return XML_ROLE_ELEMENT_NONE; case XML_TOK_NAME: if (XmlNameMatchesAscii(enc, ptr, end, KW_EMPTY)) { state->handler = declClose; state->role_none = XML_ROLE_ELEMENT_NONE; return XML_ROLE_CONTENT_EMPTY; } if (XmlNameMatchesAscii(enc, ptr, end, KW_ANY)) { state->handler = declClose; state->role_none = XML_ROLE_ELEMENT_NONE; return XML_ROLE_CONTENT_ANY; } break; case XML_TOK_OPEN_PAREN: state->handler = element2; state->level = 1; return XML_ROLE_GROUP_OPEN; } return common(state, tok); } static int PTRCALL element2(PROLOG_STATE *state, int tok, const char *ptr, const char *end, const ENCODING *enc) { switch (tok) { case XML_TOK_PROLOG_S: return XML_ROLE_ELEMENT_NONE; case XML_TOK_POUND_NAME: if (XmlNameMatchesAscii(enc, ptr + MIN_BYTES_PER_CHAR(enc), end, KW_PCDATA)) { state->handler = element3; return XML_ROLE_CONTENT_PCDATA; } break; case XML_TOK_OPEN_PAREN: state->level = 2; state->handler = element6; return XML_ROLE_GROUP_OPEN; case XML_TOK_NAME: case XML_TOK_PREFIXED_NAME: state->handler = element7; return XML_ROLE_CONTENT_ELEMENT; case XML_TOK_NAME_QUESTION: state->handler = element7; return XML_ROLE_CONTENT_ELEMENT_OPT; case XML_TOK_NAME_ASTERISK: state->handler = element7; return XML_ROLE_CONTENT_ELEMENT_REP; case XML_TOK_NAME_PLUS: state->handler = element7; return XML_ROLE_CONTENT_ELEMENT_PLUS; } return common(state, tok); } static int PTRCALL element3(PROLOG_STATE *state, int tok, const char *ptr, const char *end, const ENCODING *enc) { switch (tok) { case XML_TOK_PROLOG_S: return XML_ROLE_ELEMENT_NONE; case XML_TOK_CLOSE_PAREN: state->handler = declClose; state->role_none = XML_ROLE_ELEMENT_NONE; return XML_ROLE_GROUP_CLOSE; case XML_TOK_CLOSE_PAREN_ASTERISK: state->handler = declClose; state->role_none = XML_ROLE_ELEMENT_NONE; return XML_ROLE_GROUP_CLOSE_REP; case XML_TOK_OR: state->handler = element4; return XML_ROLE_ELEMENT_NONE; } return common(state, tok); } static int PTRCALL element4(PROLOG_STATE *state, int tok, const char *ptr, const char *end, const ENCODING *enc) { switch (tok) { case XML_TOK_PROLOG_S: return XML_ROLE_ELEMENT_NONE; case XML_TOK_NAME: case XML_TOK_PREFIXED_NAME: state->handler = element5; return XML_ROLE_CONTENT_ELEMENT; } return common(state, tok); } static int PTRCALL element5(PROLOG_STATE *state, int tok, const char *ptr, const char *end, const ENCODING *enc) { switch (tok) { case XML_TOK_PROLOG_S: return XML_ROLE_ELEMENT_NONE; case XML_TOK_CLOSE_PAREN_ASTERISK: state->handler = declClose; state->role_none = XML_ROLE_ELEMENT_NONE; return XML_ROLE_GROUP_CLOSE_REP; case XML_TOK_OR: state->handler = element4; return XML_ROLE_ELEMENT_NONE; } return common(state, tok); } static int PTRCALL element6(PROLOG_STATE *state, int tok, const char *ptr, const char *end, const ENCODING *enc) { switch (tok) { case XML_TOK_PROLOG_S: return XML_ROLE_ELEMENT_NONE; case XML_TOK_OPEN_PAREN: state->level += 1; return XML_ROLE_GROUP_OPEN; case XML_TOK_NAME: case XML_TOK_PREFIXED_NAME: state->handler = element7; return XML_ROLE_CONTENT_ELEMENT; case XML_TOK_NAME_QUESTION: state->handler = element7; return XML_ROLE_CONTENT_ELEMENT_OPT; case XML_TOK_NAME_ASTERISK: state->handler = element7; return XML_ROLE_CONTENT_ELEMENT_REP; case XML_TOK_NAME_PLUS: state->handler = element7; return XML_ROLE_CONTENT_ELEMENT_PLUS; } return common(state, tok); } static int PTRCALL element7(PROLOG_STATE *state, int tok, const char *ptr, const char *end, const ENCODING *enc) { switch (tok) { case XML_TOK_PROLOG_S: return XML_ROLE_ELEMENT_NONE; case XML_TOK_CLOSE_PAREN: state->level -= 1; if (state->level == 0) { state->handler = declClose; state->role_none = XML_ROLE_ELEMENT_NONE; } return XML_ROLE_GROUP_CLOSE; case XML_TOK_CLOSE_PAREN_ASTERISK: state->level -= 1; if (state->level == 0) { state->handler = declClose; state->role_none = XML_ROLE_ELEMENT_NONE; } return XML_ROLE_GROUP_CLOSE_REP; case XML_TOK_CLOSE_PAREN_QUESTION: state->level -= 1; if (state->level == 0) { state->handler = declClose; state->role_none = XML_ROLE_ELEMENT_NONE; } return XML_ROLE_GROUP_CLOSE_OPT; case XML_TOK_CLOSE_PAREN_PLUS: state->level -= 1; if (state->level == 0) { state->handler = declClose; state->role_none = XML_ROLE_ELEMENT_NONE; } return XML_ROLE_GROUP_CLOSE_PLUS; case XML_TOK_COMMA: state->handler = element6; return XML_ROLE_GROUP_SEQUENCE; case XML_TOK_OR: state->handler = element6; return XML_ROLE_GROUP_CHOICE; } return common(state, tok); } #ifdef XML_DTD static int PTRCALL condSect0(PROLOG_STATE *state, int tok, const char *ptr, const char *end, const ENCODING *enc) { switch (tok) { case XML_TOK_PROLOG_S: return XML_ROLE_NONE; case XML_TOK_NAME: if (XmlNameMatchesAscii(enc, ptr, end, KW_INCLUDE)) { state->handler = condSect1; return XML_ROLE_NONE; } if (XmlNameMatchesAscii(enc, ptr, end, KW_IGNORE)) { state->handler = condSect2; return XML_ROLE_NONE; } break; } return common(state, tok); } static int PTRCALL condSect1(PROLOG_STATE *state, int tok, const char *ptr, const char *end, const ENCODING *enc) { switch (tok) { case XML_TOK_PROLOG_S: return XML_ROLE_NONE; case XML_TOK_OPEN_BRACKET: state->handler = externalSubset1; state->includeLevel += 1; return XML_ROLE_NONE; } return common(state, tok); } static int PTRCALL condSect2(PROLOG_STATE *state, int tok, const char *ptr, const char *end, const ENCODING *enc) { switch (tok) { case XML_TOK_PROLOG_S: return XML_ROLE_NONE; case XML_TOK_OPEN_BRACKET: state->handler = externalSubset1; return XML_ROLE_IGNORE_SECT; } return common(state, tok); } #endif /* XML_DTD */ static int PTRCALL declClose(PROLOG_STATE *state, int tok, const char *ptr, const char *end, const ENCODING *enc) { switch (tok) { case XML_TOK_PROLOG_S: return state->role_none; case XML_TOK_DECL_CLOSE: setTopLevel(state); return state->role_none; } return common(state, tok); } static int PTRCALL error(PROLOG_STATE *state, int tok, const char *ptr, const char *end, const ENCODING *enc) { return XML_ROLE_NONE; } static int FASTCALL common(PROLOG_STATE *state, int tok) { #ifdef XML_DTD if (!state->documentEntity && tok == XML_TOK_PARAM_ENTITY_REF) return XML_ROLE_INNER_PARAM_ENTITY_REF; #endif state->handler = error; return XML_ROLE_ERROR; } void XmlPrologStateInit(PROLOG_STATE *state) { state->handler = prolog0; #ifdef XML_DTD state->documentEntity = 1; state->includeLevel = 0; state->inEntityValue = 0; #endif /* XML_DTD */ } #ifdef XML_DTD void XmlPrologStateInitExternalEntity(PROLOG_STATE *state) { state->handler = externalSubset0; state->documentEntity = 0; state->includeLevel = 0; } #endif /* XML_DTD */ suite3270-4.1/Common/libexpat/xmlrole.h000066400000000000000000000061011413735575200177300ustar00rootroot00000000000000/* Copyright (c) 1998, 1999 Thai Open Source Software Center Ltd See the file COPYING for copying permission. */ #ifndef XmlRole_INCLUDED #define XmlRole_INCLUDED 1 #ifdef __VMS /* 0 1 2 3 0 1 2 3 1234567890123456789012345678901 1234567890123456789012345678901 */ #define XmlPrologStateInitExternalEntity XmlPrologStateInitExternalEnt #endif #include "xmltok.h" #ifdef __cplusplus extern "C" { #endif enum { XML_ROLE_ERROR = -1, XML_ROLE_NONE = 0, XML_ROLE_XML_DECL, XML_ROLE_INSTANCE_START, XML_ROLE_DOCTYPE_NONE, XML_ROLE_DOCTYPE_NAME, XML_ROLE_DOCTYPE_SYSTEM_ID, XML_ROLE_DOCTYPE_PUBLIC_ID, XML_ROLE_DOCTYPE_INTERNAL_SUBSET, XML_ROLE_DOCTYPE_CLOSE, XML_ROLE_GENERAL_ENTITY_NAME, XML_ROLE_PARAM_ENTITY_NAME, XML_ROLE_ENTITY_NONE, XML_ROLE_ENTITY_VALUE, XML_ROLE_ENTITY_SYSTEM_ID, XML_ROLE_ENTITY_PUBLIC_ID, XML_ROLE_ENTITY_COMPLETE, XML_ROLE_ENTITY_NOTATION_NAME, XML_ROLE_NOTATION_NONE, XML_ROLE_NOTATION_NAME, XML_ROLE_NOTATION_SYSTEM_ID, XML_ROLE_NOTATION_NO_SYSTEM_ID, XML_ROLE_NOTATION_PUBLIC_ID, XML_ROLE_ATTRIBUTE_NAME, XML_ROLE_ATTRIBUTE_TYPE_CDATA, XML_ROLE_ATTRIBUTE_TYPE_ID, XML_ROLE_ATTRIBUTE_TYPE_IDREF, XML_ROLE_ATTRIBUTE_TYPE_IDREFS, XML_ROLE_ATTRIBUTE_TYPE_ENTITY, XML_ROLE_ATTRIBUTE_TYPE_ENTITIES, XML_ROLE_ATTRIBUTE_TYPE_NMTOKEN, XML_ROLE_ATTRIBUTE_TYPE_NMTOKENS, XML_ROLE_ATTRIBUTE_ENUM_VALUE, XML_ROLE_ATTRIBUTE_NOTATION_VALUE, XML_ROLE_ATTLIST_NONE, XML_ROLE_ATTLIST_ELEMENT_NAME, XML_ROLE_IMPLIED_ATTRIBUTE_VALUE, XML_ROLE_REQUIRED_ATTRIBUTE_VALUE, XML_ROLE_DEFAULT_ATTRIBUTE_VALUE, XML_ROLE_FIXED_ATTRIBUTE_VALUE, XML_ROLE_ELEMENT_NONE, XML_ROLE_ELEMENT_NAME, XML_ROLE_CONTENT_ANY, XML_ROLE_CONTENT_EMPTY, XML_ROLE_CONTENT_PCDATA, XML_ROLE_GROUP_OPEN, XML_ROLE_GROUP_CLOSE, XML_ROLE_GROUP_CLOSE_REP, XML_ROLE_GROUP_CLOSE_OPT, XML_ROLE_GROUP_CLOSE_PLUS, XML_ROLE_GROUP_CHOICE, XML_ROLE_GROUP_SEQUENCE, XML_ROLE_CONTENT_ELEMENT, XML_ROLE_CONTENT_ELEMENT_REP, XML_ROLE_CONTENT_ELEMENT_OPT, XML_ROLE_CONTENT_ELEMENT_PLUS, XML_ROLE_PI, XML_ROLE_COMMENT, #ifdef XML_DTD XML_ROLE_TEXT_DECL, XML_ROLE_IGNORE_SECT, XML_ROLE_INNER_PARAM_ENTITY_REF, #endif /* XML_DTD */ XML_ROLE_PARAM_ENTITY_REF }; typedef struct prolog_state { int (PTRCALL *handler) (struct prolog_state *state, int tok, const char *ptr, const char *end, const ENCODING *enc); unsigned level; int role_none; #ifdef XML_DTD unsigned includeLevel; int documentEntity; int inEntityValue; #endif /* XML_DTD */ } PROLOG_STATE; void XmlPrologStateInit(PROLOG_STATE *); #ifdef XML_DTD void XmlPrologStateInitExternalEntity(PROLOG_STATE *); #endif /* XML_DTD */ #define XmlTokenRole(state, tok, ptr, end, enc) \ (((state)->handler)(state, tok, ptr, end, enc)) #ifdef __cplusplus } #endif #endif /* not XmlRole_INCLUDED */ suite3270-4.1/Common/libexpat/xmltok.c000066400000000000000000001240601413735575200175640ustar00rootroot00000000000000/* Copyright (c) 1998, 1999 Thai Open Source Software Center Ltd See the file COPYING for copying permission. */ #include #ifdef COMPILED_FROM_DSP #include "winconfig.h" #elif defined(MACOS_CLASSIC) #include "macconfig.h" #elif defined(__amigaos__) #include "amigaconfig.h" #elif defined(__WATCOMC__) #include "watcomconfig.h" #else #ifdef HAVE_EXPAT_CONFIG_H #include #endif #endif /* ndef COMPILED_FROM_DSP */ #include "expat_external.h" #include "internal.h" #include "xmltok.h" #include "nametab.h" #ifdef XML_DTD #define IGNORE_SECTION_TOK_VTABLE , PREFIX(ignoreSectionTok) #else #define IGNORE_SECTION_TOK_VTABLE /* as nothing */ #endif #define VTABLE1 \ { PREFIX(prologTok), PREFIX(contentTok), \ PREFIX(cdataSectionTok) IGNORE_SECTION_TOK_VTABLE }, \ { PREFIX(attributeValueTok), PREFIX(entityValueTok) }, \ PREFIX(sameName), \ PREFIX(nameMatchesAscii), \ PREFIX(nameLength), \ PREFIX(skipS), \ PREFIX(getAtts), \ PREFIX(charRefNumber), \ PREFIX(predefinedEntityName), \ PREFIX(updatePosition), \ PREFIX(isPublicId) #define VTABLE VTABLE1, PREFIX(toUtf8), PREFIX(toUtf16) #define UCS2_GET_NAMING(pages, hi, lo) \ (namingBitmap[(pages[hi] << 3) + ((lo) >> 5)] & (1 << ((lo) & 0x1F))) /* A 2 byte UTF-8 representation splits the characters 11 bits between the bottom 5 and 6 bits of the bytes. We need 8 bits to index into pages, 3 bits to add to that index and 5 bits to generate the mask. */ #define UTF8_GET_NAMING2(pages, byte) \ (namingBitmap[((pages)[(((byte)[0]) >> 2) & 7] << 3) \ + ((((byte)[0]) & 3) << 1) \ + ((((byte)[1]) >> 5) & 1)] \ & (1 << (((byte)[1]) & 0x1F))) /* A 3 byte UTF-8 representation splits the characters 16 bits between the bottom 4, 6 and 6 bits of the bytes. We need 8 bits to index into pages, 3 bits to add to that index and 5 bits to generate the mask. */ #define UTF8_GET_NAMING3(pages, byte) \ (namingBitmap[((pages)[((((byte)[0]) & 0xF) << 4) \ + ((((byte)[1]) >> 2) & 0xF)] \ << 3) \ + ((((byte)[1]) & 3) << 1) \ + ((((byte)[2]) >> 5) & 1)] \ & (1 << (((byte)[2]) & 0x1F))) #define UTF8_GET_NAMING(pages, p, n) \ ((n) == 2 \ ? UTF8_GET_NAMING2(pages, (const unsigned char *)(p)) \ : ((n) == 3 \ ? UTF8_GET_NAMING3(pages, (const unsigned char *)(p)) \ : 0)) /* Detection of invalid UTF-8 sequences is based on Table 3.1B of Unicode 3.2: http://www.unicode.org/unicode/reports/tr28/ with the additional restriction of not allowing the Unicode code points 0xFFFF and 0xFFFE (sequences EF,BF,BF and EF,BF,BE). Implementation details: (A & 0x80) == 0 means A < 0x80 and (A & 0xC0) == 0xC0 means A > 0xBF */ #define UTF8_INVALID2(p) \ ((*p) < 0xC2 || ((p)[1] & 0x80) == 0 || ((p)[1] & 0xC0) == 0xC0) #define UTF8_INVALID3(p) \ (((p)[2] & 0x80) == 0 \ || \ ((*p) == 0xEF && (p)[1] == 0xBF \ ? \ (p)[2] > 0xBD \ : \ ((p)[2] & 0xC0) == 0xC0) \ || \ ((*p) == 0xE0 \ ? \ (p)[1] < 0xA0 || ((p)[1] & 0xC0) == 0xC0 \ : \ ((p)[1] & 0x80) == 0 \ || \ ((*p) == 0xED ? (p)[1] > 0x9F : ((p)[1] & 0xC0) == 0xC0))) #define UTF8_INVALID4(p) \ (((p)[3] & 0x80) == 0 || ((p)[3] & 0xC0) == 0xC0 \ || \ ((p)[2] & 0x80) == 0 || ((p)[2] & 0xC0) == 0xC0 \ || \ ((*p) == 0xF0 \ ? \ (p)[1] < 0x90 || ((p)[1] & 0xC0) == 0xC0 \ : \ ((p)[1] & 0x80) == 0 \ || \ ((*p) == 0xF4 ? (p)[1] > 0x8F : ((p)[1] & 0xC0) == 0xC0))) static int PTRFASTCALL isNever(const ENCODING *enc, const char *p) { return 0; } static int PTRFASTCALL utf8_isName2(const ENCODING *enc, const char *p) { return UTF8_GET_NAMING2(namePages, (const unsigned char *)p); } static int PTRFASTCALL utf8_isName3(const ENCODING *enc, const char *p) { return UTF8_GET_NAMING3(namePages, (const unsigned char *)p); } #define utf8_isName4 isNever static int PTRFASTCALL utf8_isNmstrt2(const ENCODING *enc, const char *p) { return UTF8_GET_NAMING2(nmstrtPages, (const unsigned char *)p); } static int PTRFASTCALL utf8_isNmstrt3(const ENCODING *enc, const char *p) { return UTF8_GET_NAMING3(nmstrtPages, (const unsigned char *)p); } #define utf8_isNmstrt4 isNever static int PTRFASTCALL utf8_isInvalid2(const ENCODING *enc, const char *p) { return UTF8_INVALID2((const unsigned char *)p); } static int PTRFASTCALL utf8_isInvalid3(const ENCODING *enc, const char *p) { return UTF8_INVALID3((const unsigned char *)p); } static int PTRFASTCALL utf8_isInvalid4(const ENCODING *enc, const char *p) { return UTF8_INVALID4((const unsigned char *)p); } struct normal_encoding { ENCODING enc; unsigned char type[256]; #ifdef XML_MIN_SIZE int (PTRFASTCALL *byteType)(const ENCODING *, const char *); int (PTRFASTCALL *isNameMin)(const ENCODING *, const char *); int (PTRFASTCALL *isNmstrtMin)(const ENCODING *, const char *); int (PTRFASTCALL *byteToAscii)(const ENCODING *, const char *); int (PTRCALL *charMatches)(const ENCODING *, const char *, int); #endif /* XML_MIN_SIZE */ int (PTRFASTCALL *isName2)(const ENCODING *, const char *); int (PTRFASTCALL *isName3)(const ENCODING *, const char *); int (PTRFASTCALL *isName4)(const ENCODING *, const char *); int (PTRFASTCALL *isNmstrt2)(const ENCODING *, const char *); int (PTRFASTCALL *isNmstrt3)(const ENCODING *, const char *); int (PTRFASTCALL *isNmstrt4)(const ENCODING *, const char *); int (PTRFASTCALL *isInvalid2)(const ENCODING *, const char *); int (PTRFASTCALL *isInvalid3)(const ENCODING *, const char *); int (PTRFASTCALL *isInvalid4)(const ENCODING *, const char *); }; #define AS_NORMAL_ENCODING(enc) ((const struct normal_encoding *) (enc)) #ifdef XML_MIN_SIZE #define STANDARD_VTABLE(E) \ E ## byteType, \ E ## isNameMin, \ E ## isNmstrtMin, \ E ## byteToAscii, \ E ## charMatches, #else #define STANDARD_VTABLE(E) /* as nothing */ #endif #define NORMAL_VTABLE(E) \ E ## isName2, \ E ## isName3, \ E ## isName4, \ E ## isNmstrt2, \ E ## isNmstrt3, \ E ## isNmstrt4, \ E ## isInvalid2, \ E ## isInvalid3, \ E ## isInvalid4 static int FASTCALL checkCharRefNumber(int); #include "xmltok_impl.h" #include "ascii.h" #ifdef XML_MIN_SIZE #define sb_isNameMin isNever #define sb_isNmstrtMin isNever #endif #ifdef XML_MIN_SIZE #define MINBPC(enc) ((enc)->minBytesPerChar) #else /* minimum bytes per character */ #define MINBPC(enc) 1 #endif #define SB_BYTE_TYPE(enc, p) \ (((struct normal_encoding *)(enc))->type[(unsigned char)*(p)]) #ifdef XML_MIN_SIZE static int PTRFASTCALL sb_byteType(const ENCODING *enc, const char *p) { return SB_BYTE_TYPE(enc, p); } #define BYTE_TYPE(enc, p) \ (AS_NORMAL_ENCODING(enc)->byteType(enc, p)) #else #define BYTE_TYPE(enc, p) SB_BYTE_TYPE(enc, p) #endif #ifdef XML_MIN_SIZE #define BYTE_TO_ASCII(enc, p) \ (AS_NORMAL_ENCODING(enc)->byteToAscii(enc, p)) static int PTRFASTCALL sb_byteToAscii(const ENCODING *enc, const char *p) { return *p; } #else #define BYTE_TO_ASCII(enc, p) (*(p)) #endif #define IS_NAME_CHAR(enc, p, n) \ (AS_NORMAL_ENCODING(enc)->isName ## n(enc, p)) #define IS_NMSTRT_CHAR(enc, p, n) \ (AS_NORMAL_ENCODING(enc)->isNmstrt ## n(enc, p)) #define IS_INVALID_CHAR(enc, p, n) \ (AS_NORMAL_ENCODING(enc)->isInvalid ## n(enc, p)) #ifdef XML_MIN_SIZE #define IS_NAME_CHAR_MINBPC(enc, p) \ (AS_NORMAL_ENCODING(enc)->isNameMin(enc, p)) #define IS_NMSTRT_CHAR_MINBPC(enc, p) \ (AS_NORMAL_ENCODING(enc)->isNmstrtMin(enc, p)) #else #define IS_NAME_CHAR_MINBPC(enc, p) (0) #define IS_NMSTRT_CHAR_MINBPC(enc, p) (0) #endif #ifdef XML_MIN_SIZE #define CHAR_MATCHES(enc, p, c) \ (AS_NORMAL_ENCODING(enc)->charMatches(enc, p, c)) static int PTRCALL sb_charMatches(const ENCODING *enc, const char *p, int c) { return *p == c; } #else /* c is an ASCII character */ #define CHAR_MATCHES(enc, p, c) (*(p) == c) #endif #define PREFIX(ident) normal_ ## ident #define XML_TOK_IMPL_C #include "xmltok_impl.c" #undef XML_TOK_IMPL_C #undef MINBPC #undef BYTE_TYPE #undef BYTE_TO_ASCII #undef CHAR_MATCHES #undef IS_NAME_CHAR #undef IS_NAME_CHAR_MINBPC #undef IS_NMSTRT_CHAR #undef IS_NMSTRT_CHAR_MINBPC #undef IS_INVALID_CHAR enum { /* UTF8_cvalN is value of masked first byte of N byte sequence */ UTF8_cval1 = 0x00, UTF8_cval2 = 0xc0, UTF8_cval3 = 0xe0, UTF8_cval4 = 0xf0 }; static void PTRCALL utf8_toUtf8(const ENCODING *enc, const char **fromP, const char *fromLim, char **toP, const char *toLim) { char *to; const char *from; if (fromLim - *fromP > toLim - *toP) { /* Avoid copying partial characters. */ for (fromLim = *fromP + (toLim - *toP); fromLim > *fromP; fromLim--) if (((unsigned char)fromLim[-1] & 0xc0) != 0x80) break; } for (to = *toP, from = *fromP; from != fromLim; from++, to++) *to = *from; *fromP = from; *toP = to; } static void PTRCALL utf8_toUtf16(const ENCODING *enc, const char **fromP, const char *fromLim, unsigned short **toP, const unsigned short *toLim) { unsigned short *to = *toP; const char *from = *fromP; while (from != fromLim && to != toLim) { switch (((struct normal_encoding *)enc)->type[(unsigned char)*from]) { case BT_LEAD2: *to++ = (unsigned short)(((from[0] & 0x1f) << 6) | (from[1] & 0x3f)); from += 2; break; case BT_LEAD3: *to++ = (unsigned short)(((from[0] & 0xf) << 12) | ((from[1] & 0x3f) << 6) | (from[2] & 0x3f)); from += 3; break; case BT_LEAD4: { unsigned long n; if (to + 1 == toLim) goto after; n = ((from[0] & 0x7) << 18) | ((from[1] & 0x3f) << 12) | ((from[2] & 0x3f) << 6) | (from[3] & 0x3f); n -= 0x10000; to[0] = (unsigned short)((n >> 10) | 0xD800); to[1] = (unsigned short)((n & 0x3FF) | 0xDC00); to += 2; from += 4; } break; default: *to++ = *from++; break; } } after: *fromP = from; *toP = to; } #ifdef XML_NS static const struct normal_encoding utf8_encoding_ns = { { VTABLE1, utf8_toUtf8, utf8_toUtf16, 1, 1, 0 }, { #include "asciitab.h" #include "utf8tab.h" }, STANDARD_VTABLE(sb_) NORMAL_VTABLE(utf8_) }; #endif static const struct normal_encoding utf8_encoding = { { VTABLE1, utf8_toUtf8, utf8_toUtf16, 1, 1, 0 }, { #define BT_COLON BT_NMSTRT #include "asciitab.h" #undef BT_COLON #include "utf8tab.h" }, STANDARD_VTABLE(sb_) NORMAL_VTABLE(utf8_) }; #ifdef XML_NS static const struct normal_encoding internal_utf8_encoding_ns = { { VTABLE1, utf8_toUtf8, utf8_toUtf16, 1, 1, 0 }, { #include "iasciitab.h" #include "utf8tab.h" }, STANDARD_VTABLE(sb_) NORMAL_VTABLE(utf8_) }; #endif static const struct normal_encoding internal_utf8_encoding = { { VTABLE1, utf8_toUtf8, utf8_toUtf16, 1, 1, 0 }, { #define BT_COLON BT_NMSTRT #include "iasciitab.h" #undef BT_COLON #include "utf8tab.h" }, STANDARD_VTABLE(sb_) NORMAL_VTABLE(utf8_) }; static void PTRCALL latin1_toUtf8(const ENCODING *enc, const char **fromP, const char *fromLim, char **toP, const char *toLim) { for (;;) { unsigned char c; if (*fromP == fromLim) break; c = (unsigned char)**fromP; if (c & 0x80) { if (toLim - *toP < 2) break; *(*toP)++ = (char)((c >> 6) | UTF8_cval2); *(*toP)++ = (char)((c & 0x3f) | 0x80); (*fromP)++; } else { if (*toP == toLim) break; *(*toP)++ = *(*fromP)++; } } } static void PTRCALL latin1_toUtf16(const ENCODING *enc, const char **fromP, const char *fromLim, unsigned short **toP, const unsigned short *toLim) { while (*fromP != fromLim && *toP != toLim) *(*toP)++ = (unsigned char)*(*fromP)++; } #ifdef XML_NS static const struct normal_encoding latin1_encoding_ns = { { VTABLE1, latin1_toUtf8, latin1_toUtf16, 1, 0, 0 }, { #include "asciitab.h" #include "latin1tab.h" }, STANDARD_VTABLE(sb_) }; #endif static const struct normal_encoding latin1_encoding = { { VTABLE1, latin1_toUtf8, latin1_toUtf16, 1, 0, 0 }, { #define BT_COLON BT_NMSTRT #include "asciitab.h" #undef BT_COLON #include "latin1tab.h" }, STANDARD_VTABLE(sb_) }; static void PTRCALL ascii_toUtf8(const ENCODING *enc, const char **fromP, const char *fromLim, char **toP, const char *toLim) { while (*fromP != fromLim && *toP != toLim) *(*toP)++ = *(*fromP)++; } #ifdef XML_NS static const struct normal_encoding ascii_encoding_ns = { { VTABLE1, ascii_toUtf8, latin1_toUtf16, 1, 1, 0 }, { #include "asciitab.h" /* BT_NONXML == 0 */ }, STANDARD_VTABLE(sb_) }; #endif static const struct normal_encoding ascii_encoding = { { VTABLE1, ascii_toUtf8, latin1_toUtf16, 1, 1, 0 }, { #define BT_COLON BT_NMSTRT #include "asciitab.h" #undef BT_COLON /* BT_NONXML == 0 */ }, STANDARD_VTABLE(sb_) }; static int PTRFASTCALL unicode_byte_type(char hi, char lo) { switch ((unsigned char)hi) { case 0xD8: case 0xD9: case 0xDA: case 0xDB: return BT_LEAD4; case 0xDC: case 0xDD: case 0xDE: case 0xDF: return BT_TRAIL; case 0xFF: switch ((unsigned char)lo) { case 0xFF: case 0xFE: return BT_NONXML; } break; } return BT_NONASCII; } #define DEFINE_UTF16_TO_UTF8(E) \ static void PTRCALL \ E ## toUtf8(const ENCODING *enc, \ const char **fromP, const char *fromLim, \ char **toP, const char *toLim) \ { \ const char *from; \ for (from = *fromP; from != fromLim; from += 2) { \ int plane; \ unsigned char lo2; \ unsigned char lo = GET_LO(from); \ unsigned char hi = GET_HI(from); \ switch (hi) { \ case 0: \ if (lo < 0x80) { \ if (*toP == toLim) { \ *fromP = from; \ return; \ } \ *(*toP)++ = lo; \ break; \ } \ /* fall through */ \ case 0x1: case 0x2: case 0x3: \ case 0x4: case 0x5: case 0x6: case 0x7: \ if (toLim - *toP < 2) { \ *fromP = from; \ return; \ } \ *(*toP)++ = ((lo >> 6) | (hi << 2) | UTF8_cval2); \ *(*toP)++ = ((lo & 0x3f) | 0x80); \ break; \ default: \ if (toLim - *toP < 3) { \ *fromP = from; \ return; \ } \ /* 16 bits divided 4, 6, 6 amongst 3 bytes */ \ *(*toP)++ = ((hi >> 4) | UTF8_cval3); \ *(*toP)++ = (((hi & 0xf) << 2) | (lo >> 6) | 0x80); \ *(*toP)++ = ((lo & 0x3f) | 0x80); \ break; \ case 0xD8: case 0xD9: case 0xDA: case 0xDB: \ if (toLim - *toP < 4) { \ *fromP = from; \ return; \ } \ plane = (((hi & 0x3) << 2) | ((lo >> 6) & 0x3)) + 1; \ *(*toP)++ = ((plane >> 2) | UTF8_cval4); \ *(*toP)++ = (((lo >> 2) & 0xF) | ((plane & 0x3) << 4) | 0x80); \ from += 2; \ lo2 = GET_LO(from); \ *(*toP)++ = (((lo & 0x3) << 4) \ | ((GET_HI(from) & 0x3) << 2) \ | (lo2 >> 6) \ | 0x80); \ *(*toP)++ = ((lo2 & 0x3f) | 0x80); \ break; \ } \ } \ *fromP = from; \ } #define DEFINE_UTF16_TO_UTF16(E) \ static void PTRCALL \ E ## toUtf16(const ENCODING *enc, \ const char **fromP, const char *fromLim, \ unsigned short **toP, const unsigned short *toLim) \ { \ /* Avoid copying first half only of surrogate */ \ if (fromLim - *fromP > ((toLim - *toP) << 1) \ && (GET_HI(fromLim - 2) & 0xF8) == 0xD8) \ fromLim -= 2; \ for (; *fromP != fromLim && *toP != toLim; *fromP += 2) \ *(*toP)++ = (GET_HI(*fromP) << 8) | GET_LO(*fromP); \ } #define SET2(ptr, ch) \ (((ptr)[0] = ((ch) & 0xff)), ((ptr)[1] = ((ch) >> 8))) #define GET_LO(ptr) ((unsigned char)(ptr)[0]) #define GET_HI(ptr) ((unsigned char)(ptr)[1]) DEFINE_UTF16_TO_UTF8(little2_) DEFINE_UTF16_TO_UTF16(little2_) #undef SET2 #undef GET_LO #undef GET_HI #define SET2(ptr, ch) \ (((ptr)[0] = ((ch) >> 8)), ((ptr)[1] = ((ch) & 0xFF))) #define GET_LO(ptr) ((unsigned char)(ptr)[1]) #define GET_HI(ptr) ((unsigned char)(ptr)[0]) DEFINE_UTF16_TO_UTF8(big2_) DEFINE_UTF16_TO_UTF16(big2_) #undef SET2 #undef GET_LO #undef GET_HI #define LITTLE2_BYTE_TYPE(enc, p) \ ((p)[1] == 0 \ ? ((struct normal_encoding *)(enc))->type[(unsigned char)*(p)] \ : unicode_byte_type((p)[1], (p)[0])) #define LITTLE2_BYTE_TO_ASCII(enc, p) ((p)[1] == 0 ? (p)[0] : -1) #define LITTLE2_CHAR_MATCHES(enc, p, c) ((p)[1] == 0 && (p)[0] == c) #define LITTLE2_IS_NAME_CHAR_MINBPC(enc, p) \ UCS2_GET_NAMING(namePages, (unsigned char)p[1], (unsigned char)p[0]) #define LITTLE2_IS_NMSTRT_CHAR_MINBPC(enc, p) \ UCS2_GET_NAMING(nmstrtPages, (unsigned char)p[1], (unsigned char)p[0]) #ifdef XML_MIN_SIZE static int PTRFASTCALL little2_byteType(const ENCODING *enc, const char *p) { return LITTLE2_BYTE_TYPE(enc, p); } static int PTRFASTCALL little2_byteToAscii(const ENCODING *enc, const char *p) { return LITTLE2_BYTE_TO_ASCII(enc, p); } static int PTRCALL little2_charMatches(const ENCODING *enc, const char *p, int c) { return LITTLE2_CHAR_MATCHES(enc, p, c); } static int PTRFASTCALL little2_isNameMin(const ENCODING *enc, const char *p) { return LITTLE2_IS_NAME_CHAR_MINBPC(enc, p); } static int PTRFASTCALL little2_isNmstrtMin(const ENCODING *enc, const char *p) { return LITTLE2_IS_NMSTRT_CHAR_MINBPC(enc, p); } #undef VTABLE #define VTABLE VTABLE1, little2_toUtf8, little2_toUtf16 #else /* not XML_MIN_SIZE */ #undef PREFIX #define PREFIX(ident) little2_ ## ident #define MINBPC(enc) 2 /* CHAR_MATCHES is guaranteed to have MINBPC bytes available. */ #define BYTE_TYPE(enc, p) LITTLE2_BYTE_TYPE(enc, p) #define BYTE_TO_ASCII(enc, p) LITTLE2_BYTE_TO_ASCII(enc, p) #define CHAR_MATCHES(enc, p, c) LITTLE2_CHAR_MATCHES(enc, p, c) #define IS_NAME_CHAR(enc, p, n) 0 #define IS_NAME_CHAR_MINBPC(enc, p) LITTLE2_IS_NAME_CHAR_MINBPC(enc, p) #define IS_NMSTRT_CHAR(enc, p, n) (0) #define IS_NMSTRT_CHAR_MINBPC(enc, p) LITTLE2_IS_NMSTRT_CHAR_MINBPC(enc, p) #define XML_TOK_IMPL_C #include "xmltok_impl.c" #undef XML_TOK_IMPL_C #undef MINBPC #undef BYTE_TYPE #undef BYTE_TO_ASCII #undef CHAR_MATCHES #undef IS_NAME_CHAR #undef IS_NAME_CHAR_MINBPC #undef IS_NMSTRT_CHAR #undef IS_NMSTRT_CHAR_MINBPC #undef IS_INVALID_CHAR #endif /* not XML_MIN_SIZE */ #ifdef XML_NS static const struct normal_encoding little2_encoding_ns = { { VTABLE, 2, 0, #if BYTEORDER == 1234 1 #else 0 #endif }, { #include "asciitab.h" #include "latin1tab.h" }, STANDARD_VTABLE(little2_) }; #endif static const struct normal_encoding little2_encoding = { { VTABLE, 2, 0, #if BYTEORDER == 1234 1 #else 0 #endif }, { #define BT_COLON BT_NMSTRT #include "asciitab.h" #undef BT_COLON #include "latin1tab.h" }, STANDARD_VTABLE(little2_) }; #if BYTEORDER != 4321 #ifdef XML_NS static const struct normal_encoding internal_little2_encoding_ns = { { VTABLE, 2, 0, 1 }, { #include "iasciitab.h" #include "latin1tab.h" }, STANDARD_VTABLE(little2_) }; #endif static const struct normal_encoding internal_little2_encoding = { { VTABLE, 2, 0, 1 }, { #define BT_COLON BT_NMSTRT #include "iasciitab.h" #undef BT_COLON #include "latin1tab.h" }, STANDARD_VTABLE(little2_) }; #endif #define BIG2_BYTE_TYPE(enc, p) \ ((p)[0] == 0 \ ? ((struct normal_encoding *)(enc))->type[(unsigned char)(p)[1]] \ : unicode_byte_type((p)[0], (p)[1])) #define BIG2_BYTE_TO_ASCII(enc, p) ((p)[0] == 0 ? (p)[1] : -1) #define BIG2_CHAR_MATCHES(enc, p, c) ((p)[0] == 0 && (p)[1] == c) #define BIG2_IS_NAME_CHAR_MINBPC(enc, p) \ UCS2_GET_NAMING(namePages, (unsigned char)p[0], (unsigned char)p[1]) #define BIG2_IS_NMSTRT_CHAR_MINBPC(enc, p) \ UCS2_GET_NAMING(nmstrtPages, (unsigned char)p[0], (unsigned char)p[1]) #ifdef XML_MIN_SIZE static int PTRFASTCALL big2_byteType(const ENCODING *enc, const char *p) { return BIG2_BYTE_TYPE(enc, p); } static int PTRFASTCALL big2_byteToAscii(const ENCODING *enc, const char *p) { return BIG2_BYTE_TO_ASCII(enc, p); } static int PTRCALL big2_charMatches(const ENCODING *enc, const char *p, int c) { return BIG2_CHAR_MATCHES(enc, p, c); } static int PTRFASTCALL big2_isNameMin(const ENCODING *enc, const char *p) { return BIG2_IS_NAME_CHAR_MINBPC(enc, p); } static int PTRFASTCALL big2_isNmstrtMin(const ENCODING *enc, const char *p) { return BIG2_IS_NMSTRT_CHAR_MINBPC(enc, p); } #undef VTABLE #define VTABLE VTABLE1, big2_toUtf8, big2_toUtf16 #else /* not XML_MIN_SIZE */ #undef PREFIX #define PREFIX(ident) big2_ ## ident #define MINBPC(enc) 2 /* CHAR_MATCHES is guaranteed to have MINBPC bytes available. */ #define BYTE_TYPE(enc, p) BIG2_BYTE_TYPE(enc, p) #define BYTE_TO_ASCII(enc, p) BIG2_BYTE_TO_ASCII(enc, p) #define CHAR_MATCHES(enc, p, c) BIG2_CHAR_MATCHES(enc, p, c) #define IS_NAME_CHAR(enc, p, n) 0 #define IS_NAME_CHAR_MINBPC(enc, p) BIG2_IS_NAME_CHAR_MINBPC(enc, p) #define IS_NMSTRT_CHAR(enc, p, n) (0) #define IS_NMSTRT_CHAR_MINBPC(enc, p) BIG2_IS_NMSTRT_CHAR_MINBPC(enc, p) #define XML_TOK_IMPL_C #include "xmltok_impl.c" #undef XML_TOK_IMPL_C #undef MINBPC #undef BYTE_TYPE #undef BYTE_TO_ASCII #undef CHAR_MATCHES #undef IS_NAME_CHAR #undef IS_NAME_CHAR_MINBPC #undef IS_NMSTRT_CHAR #undef IS_NMSTRT_CHAR_MINBPC #undef IS_INVALID_CHAR #endif /* not XML_MIN_SIZE */ #ifdef XML_NS static const struct normal_encoding big2_encoding_ns = { { VTABLE, 2, 0, #if BYTEORDER == 4321 1 #else 0 #endif }, { #include "asciitab.h" #include "latin1tab.h" }, STANDARD_VTABLE(big2_) }; #endif static const struct normal_encoding big2_encoding = { { VTABLE, 2, 0, #if BYTEORDER == 4321 1 #else 0 #endif }, { #define BT_COLON BT_NMSTRT #include "asciitab.h" #undef BT_COLON #include "latin1tab.h" }, STANDARD_VTABLE(big2_) }; #if BYTEORDER != 1234 #ifdef XML_NS static const struct normal_encoding internal_big2_encoding_ns = { { VTABLE, 2, 0, 1 }, { #include "iasciitab.h" #include "latin1tab.h" }, STANDARD_VTABLE(big2_) }; #endif static const struct normal_encoding internal_big2_encoding = { { VTABLE, 2, 0, 1 }, { #define BT_COLON BT_NMSTRT #include "iasciitab.h" #undef BT_COLON #include "latin1tab.h" }, STANDARD_VTABLE(big2_) }; #endif #undef PREFIX static int FASTCALL streqci(const char *s1, const char *s2) { for (;;) { char c1 = *s1++; char c2 = *s2++; if (ASCII_a <= c1 && c1 <= ASCII_z) c1 += ASCII_A - ASCII_a; if (ASCII_a <= c2 && c2 <= ASCII_z) c2 += ASCII_A - ASCII_a; if (c1 != c2) return 0; if (!c1) break; } return 1; } static void PTRCALL initUpdatePosition(const ENCODING *enc, const char *ptr, const char *end, POSITION *pos) { normal_updatePosition(&utf8_encoding.enc, ptr, end, pos); } static int toAscii(const ENCODING *enc, const char *ptr, const char *end) { char buf[1]; char *p = buf; XmlUtf8Convert(enc, &ptr, end, &p, p + 1); if (p == buf) return -1; else return buf[0]; } static int FASTCALL isSpace(int c) { switch (c) { case 0x20: case 0xD: case 0xA: case 0x9: return 1; } return 0; } /* Return 1 if there's just optional white space or there's an S followed by name=val. */ static int parsePseudoAttribute(const ENCODING *enc, const char *ptr, const char *end, const char **namePtr, const char **nameEndPtr, const char **valPtr, const char **nextTokPtr) { int c; char open; if (ptr == end) { *namePtr = NULL; return 1; } if (!isSpace(toAscii(enc, ptr, end))) { *nextTokPtr = ptr; return 0; } do { ptr += enc->minBytesPerChar; } while (isSpace(toAscii(enc, ptr, end))); if (ptr == end) { *namePtr = NULL; return 1; } *namePtr = ptr; for (;;) { c = toAscii(enc, ptr, end); if (c == -1) { *nextTokPtr = ptr; return 0; } if (c == ASCII_EQUALS) { *nameEndPtr = ptr; break; } if (isSpace(c)) { *nameEndPtr = ptr; do { ptr += enc->minBytesPerChar; } while (isSpace(c = toAscii(enc, ptr, end))); if (c != ASCII_EQUALS) { *nextTokPtr = ptr; return 0; } break; } ptr += enc->minBytesPerChar; } if (ptr == *namePtr) { *nextTokPtr = ptr; return 0; } ptr += enc->minBytesPerChar; c = toAscii(enc, ptr, end); while (isSpace(c)) { ptr += enc->minBytesPerChar; c = toAscii(enc, ptr, end); } if (c != ASCII_QUOT && c != ASCII_APOS) { *nextTokPtr = ptr; return 0; } open = (char)c; ptr += enc->minBytesPerChar; *valPtr = ptr; for (;; ptr += enc->minBytesPerChar) { c = toAscii(enc, ptr, end); if (c == open) break; if (!(ASCII_a <= c && c <= ASCII_z) && !(ASCII_A <= c && c <= ASCII_Z) && !(ASCII_0 <= c && c <= ASCII_9) && c != ASCII_PERIOD && c != ASCII_MINUS && c != ASCII_UNDERSCORE) { *nextTokPtr = ptr; return 0; } } *nextTokPtr = ptr + enc->minBytesPerChar; return 1; } static const char KW_version[] = { ASCII_v, ASCII_e, ASCII_r, ASCII_s, ASCII_i, ASCII_o, ASCII_n, '\0' }; static const char KW_encoding[] = { ASCII_e, ASCII_n, ASCII_c, ASCII_o, ASCII_d, ASCII_i, ASCII_n, ASCII_g, '\0' }; static const char KW_standalone[] = { ASCII_s, ASCII_t, ASCII_a, ASCII_n, ASCII_d, ASCII_a, ASCII_l, ASCII_o, ASCII_n, ASCII_e, '\0' }; static const char KW_yes[] = { ASCII_y, ASCII_e, ASCII_s, '\0' }; static const char KW_no[] = { ASCII_n, ASCII_o, '\0' }; static int doParseXmlDecl(const ENCODING *(*encodingFinder)(const ENCODING *, const char *, const char *), int isGeneralTextEntity, const ENCODING *enc, const char *ptr, const char *end, const char **badPtr, const char **versionPtr, const char **versionEndPtr, const char **encodingName, const ENCODING **encoding, int *standalone) { const char *val = NULL; const char *name = NULL; const char *nameEnd = NULL; ptr += 5 * enc->minBytesPerChar; end -= 2 * enc->minBytesPerChar; if (!parsePseudoAttribute(enc, ptr, end, &name, &nameEnd, &val, &ptr) || !name) { *badPtr = ptr; return 0; } if (!XmlNameMatchesAscii(enc, name, nameEnd, KW_version)) { if (!isGeneralTextEntity) { *badPtr = name; return 0; } } else { if (versionPtr) *versionPtr = val; if (versionEndPtr) *versionEndPtr = ptr; if (!parsePseudoAttribute(enc, ptr, end, &name, &nameEnd, &val, &ptr)) { *badPtr = ptr; return 0; } if (!name) { if (isGeneralTextEntity) { /* a TextDecl must have an EncodingDecl */ *badPtr = ptr; return 0; } return 1; } } if (XmlNameMatchesAscii(enc, name, nameEnd, KW_encoding)) { int c = toAscii(enc, val, end); if (!(ASCII_a <= c && c <= ASCII_z) && !(ASCII_A <= c && c <= ASCII_Z)) { *badPtr = val; return 0; } if (encodingName) *encodingName = val; if (encoding) *encoding = encodingFinder(enc, val, ptr - enc->minBytesPerChar); if (!parsePseudoAttribute(enc, ptr, end, &name, &nameEnd, &val, &ptr)) { *badPtr = ptr; return 0; } if (!name) return 1; } if (!XmlNameMatchesAscii(enc, name, nameEnd, KW_standalone) || isGeneralTextEntity) { *badPtr = name; return 0; } if (XmlNameMatchesAscii(enc, val, ptr - enc->minBytesPerChar, KW_yes)) { if (standalone) *standalone = 1; } else if (XmlNameMatchesAscii(enc, val, ptr - enc->minBytesPerChar, KW_no)) { if (standalone) *standalone = 0; } else { *badPtr = val; return 0; } while (isSpace(toAscii(enc, ptr, end))) ptr += enc->minBytesPerChar; if (ptr != end) { *badPtr = ptr; return 0; } return 1; } static int FASTCALL checkCharRefNumber(int result) { switch (result >> 8) { case 0xD8: case 0xD9: case 0xDA: case 0xDB: case 0xDC: case 0xDD: case 0xDE: case 0xDF: return -1; case 0: if (latin1_encoding.type[result] == BT_NONXML) return -1; break; case 0xFF: if (result == 0xFFFE || result == 0xFFFF) return -1; break; } return result; } int FASTCALL XmlUtf8Encode(int c, char *buf) { enum { /* minN is minimum legal resulting value for N byte sequence */ min2 = 0x80, min3 = 0x800, min4 = 0x10000 }; if (c < 0) return 0; if (c < min2) { buf[0] = (char)(c | UTF8_cval1); return 1; } if (c < min3) { buf[0] = (char)((c >> 6) | UTF8_cval2); buf[1] = (char)((c & 0x3f) | 0x80); return 2; } if (c < min4) { buf[0] = (char)((c >> 12) | UTF8_cval3); buf[1] = (char)(((c >> 6) & 0x3f) | 0x80); buf[2] = (char)((c & 0x3f) | 0x80); return 3; } if (c < 0x110000) { buf[0] = (char)((c >> 18) | UTF8_cval4); buf[1] = (char)(((c >> 12) & 0x3f) | 0x80); buf[2] = (char)(((c >> 6) & 0x3f) | 0x80); buf[3] = (char)((c & 0x3f) | 0x80); return 4; } return 0; } int FASTCALL XmlUtf16Encode(int charNum, unsigned short *buf) { if (charNum < 0) return 0; if (charNum < 0x10000) { buf[0] = (unsigned short)charNum; return 1; } if (charNum < 0x110000) { charNum -= 0x10000; buf[0] = (unsigned short)((charNum >> 10) + 0xD800); buf[1] = (unsigned short)((charNum & 0x3FF) + 0xDC00); return 2; } return 0; } struct unknown_encoding { struct normal_encoding normal; CONVERTER convert; void *userData; unsigned short utf16[256]; char utf8[256][4]; }; #define AS_UNKNOWN_ENCODING(enc) ((const struct unknown_encoding *) (enc)) int XmlSizeOfUnknownEncoding(void) { return sizeof(struct unknown_encoding); } static int PTRFASTCALL unknown_isName(const ENCODING *enc, const char *p) { const struct unknown_encoding *uenc = AS_UNKNOWN_ENCODING(enc); int c = uenc->convert(uenc->userData, p); if (c & ~0xFFFF) return 0; return UCS2_GET_NAMING(namePages, c >> 8, c & 0xFF); } static int PTRFASTCALL unknown_isNmstrt(const ENCODING *enc, const char *p) { const struct unknown_encoding *uenc = AS_UNKNOWN_ENCODING(enc); int c = uenc->convert(uenc->userData, p); if (c & ~0xFFFF) return 0; return UCS2_GET_NAMING(nmstrtPages, c >> 8, c & 0xFF); } static int PTRFASTCALL unknown_isInvalid(const ENCODING *enc, const char *p) { const struct unknown_encoding *uenc = AS_UNKNOWN_ENCODING(enc); int c = uenc->convert(uenc->userData, p); return (c & ~0xFFFF) || checkCharRefNumber(c) < 0; } static void PTRCALL unknown_toUtf8(const ENCODING *enc, const char **fromP, const char *fromLim, char **toP, const char *toLim) { const struct unknown_encoding *uenc = AS_UNKNOWN_ENCODING(enc); char buf[XML_UTF8_ENCODE_MAX]; for (;;) { const char *utf8; int n; if (*fromP == fromLim) break; utf8 = uenc->utf8[(unsigned char)**fromP]; n = *utf8++; if (n == 0) { int c = uenc->convert(uenc->userData, *fromP); n = XmlUtf8Encode(c, buf); if (n > toLim - *toP) break; utf8 = buf; *fromP += (AS_NORMAL_ENCODING(enc)->type[(unsigned char)**fromP] - (BT_LEAD2 - 2)); } else { if (n > toLim - *toP) break; (*fromP)++; } do { *(*toP)++ = *utf8++; } while (--n != 0); } } static void PTRCALL unknown_toUtf16(const ENCODING *enc, const char **fromP, const char *fromLim, unsigned short **toP, const unsigned short *toLim) { const struct unknown_encoding *uenc = AS_UNKNOWN_ENCODING(enc); while (*fromP != fromLim && *toP != toLim) { unsigned short c = uenc->utf16[(unsigned char)**fromP]; if (c == 0) { c = (unsigned short) uenc->convert(uenc->userData, *fromP); *fromP += (AS_NORMAL_ENCODING(enc)->type[(unsigned char)**fromP] - (BT_LEAD2 - 2)); } else (*fromP)++; *(*toP)++ = c; } } ENCODING * XmlInitUnknownEncoding(void *mem, int *table, CONVERTER convert, void *userData) { int i; struct unknown_encoding *e = (struct unknown_encoding *)mem; for (i = 0; i < (int)sizeof(struct normal_encoding); i++) ((char *)mem)[i] = ((char *)&latin1_encoding)[i]; for (i = 0; i < 128; i++) if (latin1_encoding.type[i] != BT_OTHER && latin1_encoding.type[i] != BT_NONXML && table[i] != i) return 0; for (i = 0; i < 256; i++) { int c = table[i]; if (c == -1) { e->normal.type[i] = BT_MALFORM; /* This shouldn't really get used. */ e->utf16[i] = 0xFFFF; e->utf8[i][0] = 1; e->utf8[i][1] = 0; } else if (c < 0) { if (c < -4) return 0; e->normal.type[i] = (unsigned char)(BT_LEAD2 - (c + 2)); e->utf8[i][0] = 0; e->utf16[i] = 0; } else if (c < 0x80) { if (latin1_encoding.type[c] != BT_OTHER && latin1_encoding.type[c] != BT_NONXML && c != i) return 0; e->normal.type[i] = latin1_encoding.type[c]; e->utf8[i][0] = 1; e->utf8[i][1] = (char)c; e->utf16[i] = (unsigned short)(c == 0 ? 0xFFFF : c); } else if (checkCharRefNumber(c) < 0) { e->normal.type[i] = BT_NONXML; /* This shouldn't really get used. */ e->utf16[i] = 0xFFFF; e->utf8[i][0] = 1; e->utf8[i][1] = 0; } else { if (c > 0xFFFF) return 0; if (UCS2_GET_NAMING(nmstrtPages, c >> 8, c & 0xff)) e->normal.type[i] = BT_NMSTRT; else if (UCS2_GET_NAMING(namePages, c >> 8, c & 0xff)) e->normal.type[i] = BT_NAME; else e->normal.type[i] = BT_OTHER; e->utf8[i][0] = (char)XmlUtf8Encode(c, e->utf8[i] + 1); e->utf16[i] = (unsigned short)c; } } e->userData = userData; e->convert = convert; if (convert) { e->normal.isName2 = unknown_isName; e->normal.isName3 = unknown_isName; e->normal.isName4 = unknown_isName; e->normal.isNmstrt2 = unknown_isNmstrt; e->normal.isNmstrt3 = unknown_isNmstrt; e->normal.isNmstrt4 = unknown_isNmstrt; e->normal.isInvalid2 = unknown_isInvalid; e->normal.isInvalid3 = unknown_isInvalid; e->normal.isInvalid4 = unknown_isInvalid; } e->normal.enc.utf8Convert = unknown_toUtf8; e->normal.enc.utf16Convert = unknown_toUtf16; return &(e->normal.enc); } /* If this enumeration is changed, getEncodingIndex and encodings must also be changed. */ enum { UNKNOWN_ENC = -1, ISO_8859_1_ENC = 0, US_ASCII_ENC, UTF_8_ENC, UTF_16_ENC, UTF_16BE_ENC, UTF_16LE_ENC, /* must match encodingNames up to here */ NO_ENC }; static const char KW_ISO_8859_1[] = { ASCII_I, ASCII_S, ASCII_O, ASCII_MINUS, ASCII_8, ASCII_8, ASCII_5, ASCII_9, ASCII_MINUS, ASCII_1, '\0' }; static const char KW_US_ASCII[] = { ASCII_U, ASCII_S, ASCII_MINUS, ASCII_A, ASCII_S, ASCII_C, ASCII_I, ASCII_I, '\0' }; static const char KW_UTF_8[] = { ASCII_U, ASCII_T, ASCII_F, ASCII_MINUS, ASCII_8, '\0' }; static const char KW_UTF_16[] = { ASCII_U, ASCII_T, ASCII_F, ASCII_MINUS, ASCII_1, ASCII_6, '\0' }; static const char KW_UTF_16BE[] = { ASCII_U, ASCII_T, ASCII_F, ASCII_MINUS, ASCII_1, ASCII_6, ASCII_B, ASCII_E, '\0' }; static const char KW_UTF_16LE[] = { ASCII_U, ASCII_T, ASCII_F, ASCII_MINUS, ASCII_1, ASCII_6, ASCII_L, ASCII_E, '\0' }; static int FASTCALL getEncodingIndex(const char *name) { static const char * const encodingNames[] = { KW_ISO_8859_1, KW_US_ASCII, KW_UTF_8, KW_UTF_16, KW_UTF_16BE, KW_UTF_16LE, }; int i; if (name == NULL) return NO_ENC; for (i = 0; i < (int)(sizeof(encodingNames)/sizeof(encodingNames[0])); i++) if (streqci(name, encodingNames[i])) return i; return UNKNOWN_ENC; } /* For binary compatibility, we store the index of the encoding specified at initialization in the isUtf16 member. */ #define INIT_ENC_INDEX(enc) ((int)(enc)->initEnc.isUtf16) #define SET_INIT_ENC_INDEX(enc, i) ((enc)->initEnc.isUtf16 = (char)i) /* This is what detects the encoding. encodingTable maps from encoding indices to encodings; INIT_ENC_INDEX(enc) is the index of the external (protocol) specified encoding; state is XML_CONTENT_STATE if we're parsing an external text entity, and XML_PROLOG_STATE otherwise. */ static int initScan(const ENCODING * const *encodingTable, const INIT_ENCODING *enc, int state, const char *ptr, const char *end, const char **nextTokPtr) { const ENCODING **encPtr; if (ptr == end) return XML_TOK_NONE; encPtr = enc->encPtr; if (ptr + 1 == end) { /* only a single byte available for auto-detection */ #ifndef XML_DTD /* FIXME */ /* a well-formed document entity must have more than one byte */ if (state != XML_CONTENT_STATE) return XML_TOK_PARTIAL; #endif /* so we're parsing an external text entity... */ /* if UTF-16 was externally specified, then we need at least 2 bytes */ switch (INIT_ENC_INDEX(enc)) { case UTF_16_ENC: case UTF_16LE_ENC: case UTF_16BE_ENC: return XML_TOK_PARTIAL; } switch ((unsigned char)*ptr) { case 0xFE: case 0xFF: case 0xEF: /* possibly first byte of UTF-8 BOM */ if (INIT_ENC_INDEX(enc) == ISO_8859_1_ENC && state == XML_CONTENT_STATE) break; /* fall through */ case 0x00: case 0x3C: return XML_TOK_PARTIAL; } } else { switch (((unsigned char)ptr[0] << 8) | (unsigned char)ptr[1]) { case 0xFEFF: if (INIT_ENC_INDEX(enc) == ISO_8859_1_ENC && state == XML_CONTENT_STATE) break; *nextTokPtr = ptr + 2; *encPtr = encodingTable[UTF_16BE_ENC]; return XML_TOK_BOM; /* 00 3C is handled in the default case */ case 0x3C00: if ((INIT_ENC_INDEX(enc) == UTF_16BE_ENC || INIT_ENC_INDEX(enc) == UTF_16_ENC) && state == XML_CONTENT_STATE) break; *encPtr = encodingTable[UTF_16LE_ENC]; return XmlTok(*encPtr, state, ptr, end, nextTokPtr); case 0xFFFE: if (INIT_ENC_INDEX(enc) == ISO_8859_1_ENC && state == XML_CONTENT_STATE) break; *nextTokPtr = ptr + 2; *encPtr = encodingTable[UTF_16LE_ENC]; return XML_TOK_BOM; case 0xEFBB: /* Maybe a UTF-8 BOM (EF BB BF) */ /* If there's an explicitly specified (external) encoding of ISO-8859-1 or some flavour of UTF-16 and this is an external text entity, don't look for the BOM, because it might be a legal data. */ if (state == XML_CONTENT_STATE) { int e = INIT_ENC_INDEX(enc); if (e == ISO_8859_1_ENC || e == UTF_16BE_ENC || e == UTF_16LE_ENC || e == UTF_16_ENC) break; } if (ptr + 2 == end) return XML_TOK_PARTIAL; if ((unsigned char)ptr[2] == 0xBF) { *nextTokPtr = ptr + 3; *encPtr = encodingTable[UTF_8_ENC]; return XML_TOK_BOM; } break; default: if (ptr[0] == '\0') { /* 0 isn't a legal data character. Furthermore a document entity can only start with ASCII characters. So the only way this can fail to be big-endian UTF-16 if it it's an external parsed general entity that's labelled as UTF-16LE. */ if (state == XML_CONTENT_STATE && INIT_ENC_INDEX(enc) == UTF_16LE_ENC) break; *encPtr = encodingTable[UTF_16BE_ENC]; return XmlTok(*encPtr, state, ptr, end, nextTokPtr); } else if (ptr[1] == '\0') { /* We could recover here in the case: - parsing an external entity - second byte is 0 - no externally specified encoding - no encoding declaration by assuming UTF-16LE. But we don't, because this would mean when presented just with a single byte, we couldn't reliably determine whether we needed further bytes. */ if (state == XML_CONTENT_STATE) break; *encPtr = encodingTable[UTF_16LE_ENC]; return XmlTok(*encPtr, state, ptr, end, nextTokPtr); } break; } } *encPtr = encodingTable[INIT_ENC_INDEX(enc)]; return XmlTok(*encPtr, state, ptr, end, nextTokPtr); } #define NS(x) x #define ns(x) x #define XML_TOK_NS_C #include "xmltok_ns.c" #undef XML_TOK_NS_C #undef NS #undef ns #ifdef XML_NS #define NS(x) x ## NS #define ns(x) x ## _ns #define XML_TOK_NS_C #include "xmltok_ns.c" #undef XML_TOK_NS_C #undef NS #undef ns ENCODING * XmlInitUnknownEncodingNS(void *mem, int *table, CONVERTER convert, void *userData) { ENCODING *enc = XmlInitUnknownEncoding(mem, table, convert, userData); if (enc) ((struct normal_encoding *)enc)->type[ASCII_COLON] = BT_COLON; return enc; } #endif /* XML_NS */ suite3270-4.1/Common/libexpat/xmltok.h000066400000000000000000000263541413735575200176000ustar00rootroot00000000000000/* Copyright (c) 1998, 1999 Thai Open Source Software Center Ltd See the file COPYING for copying permission. */ #ifndef XmlTok_INCLUDED #define XmlTok_INCLUDED 1 #ifdef __cplusplus extern "C" { #endif /* The following token may be returned by XmlContentTok */ #define XML_TOK_TRAILING_RSQB -5 /* ] or ]] at the end of the scan; might be start of illegal ]]> sequence */ /* The following tokens may be returned by both XmlPrologTok and XmlContentTok. */ #define XML_TOK_NONE -4 /* The string to be scanned is empty */ #define XML_TOK_TRAILING_CR -3 /* A CR at the end of the scan; might be part of CRLF sequence */ #define XML_TOK_PARTIAL_CHAR -2 /* only part of a multibyte sequence */ #define XML_TOK_PARTIAL -1 /* only part of a token */ #define XML_TOK_INVALID 0 /* The following tokens are returned by XmlContentTok; some are also returned by XmlAttributeValueTok, XmlEntityTok, XmlCdataSectionTok. */ #define XML_TOK_START_TAG_WITH_ATTS 1 #define XML_TOK_START_TAG_NO_ATTS 2 #define XML_TOK_EMPTY_ELEMENT_WITH_ATTS 3 /* empty element tag */ #define XML_TOK_EMPTY_ELEMENT_NO_ATTS 4 #define XML_TOK_END_TAG 5 #define XML_TOK_DATA_CHARS 6 #define XML_TOK_DATA_NEWLINE 7 #define XML_TOK_CDATA_SECT_OPEN 8 #define XML_TOK_ENTITY_REF 9 #define XML_TOK_CHAR_REF 10 /* numeric character reference */ /* The following tokens may be returned by both XmlPrologTok and XmlContentTok. */ #define XML_TOK_PI 11 /* processing instruction */ #define XML_TOK_XML_DECL 12 /* XML decl or text decl */ #define XML_TOK_COMMENT 13 #define XML_TOK_BOM 14 /* Byte order mark */ /* The following tokens are returned only by XmlPrologTok */ #define XML_TOK_PROLOG_S 15 #define XML_TOK_DECL_OPEN 16 /* */ #define XML_TOK_NAME 18 #define XML_TOK_NMTOKEN 19 #define XML_TOK_POUND_NAME 20 /* #name */ #define XML_TOK_OR 21 /* | */ #define XML_TOK_PERCENT 22 #define XML_TOK_OPEN_PAREN 23 #define XML_TOK_CLOSE_PAREN 24 #define XML_TOK_OPEN_BRACKET 25 #define XML_TOK_CLOSE_BRACKET 26 #define XML_TOK_LITERAL 27 #define XML_TOK_PARAM_ENTITY_REF 28 #define XML_TOK_INSTANCE_START 29 /* The following occur only in element type declarations */ #define XML_TOK_NAME_QUESTION 30 /* name? */ #define XML_TOK_NAME_ASTERISK 31 /* name* */ #define XML_TOK_NAME_PLUS 32 /* name+ */ #define XML_TOK_COND_SECT_OPEN 33 /* */ #define XML_TOK_CLOSE_PAREN_QUESTION 35 /* )? */ #define XML_TOK_CLOSE_PAREN_ASTERISK 36 /* )* */ #define XML_TOK_CLOSE_PAREN_PLUS 37 /* )+ */ #define XML_TOK_COMMA 38 /* The following token is returned only by XmlAttributeValueTok */ #define XML_TOK_ATTRIBUTE_VALUE_S 39 /* The following token is returned only by XmlCdataSectionTok */ #define XML_TOK_CDATA_SECT_CLOSE 40 /* With namespace processing this is returned by XmlPrologTok for a name with a colon. */ #define XML_TOK_PREFIXED_NAME 41 #ifdef XML_DTD #define XML_TOK_IGNORE_SECT 42 #endif /* XML_DTD */ #ifdef XML_DTD #define XML_N_STATES 4 #else /* not XML_DTD */ #define XML_N_STATES 3 #endif /* not XML_DTD */ #define XML_PROLOG_STATE 0 #define XML_CONTENT_STATE 1 #define XML_CDATA_SECTION_STATE 2 #ifdef XML_DTD #define XML_IGNORE_SECTION_STATE 3 #endif /* XML_DTD */ #define XML_N_LITERAL_TYPES 2 #define XML_ATTRIBUTE_VALUE_LITERAL 0 #define XML_ENTITY_VALUE_LITERAL 1 /* The size of the buffer passed to XmlUtf8Encode must be at least this. */ #define XML_UTF8_ENCODE_MAX 4 /* The size of the buffer passed to XmlUtf16Encode must be at least this. */ #define XML_UTF16_ENCODE_MAX 2 typedef struct position { /* first line and first column are 0 not 1 */ XML_Size lineNumber; XML_Size columnNumber; } POSITION; typedef struct { const char *name; const char *valuePtr; const char *valueEnd; char normalized; } ATTRIBUTE; struct encoding; typedef struct encoding ENCODING; typedef int (PTRCALL *SCANNER)(const ENCODING *, const char *, const char *, const char **); struct encoding { SCANNER scanners[XML_N_STATES]; SCANNER literalScanners[XML_N_LITERAL_TYPES]; int (PTRCALL *sameName)(const ENCODING *, const char *, const char *); int (PTRCALL *nameMatchesAscii)(const ENCODING *, const char *, const char *, const char *); int (PTRFASTCALL *nameLength)(const ENCODING *, const char *); const char *(PTRFASTCALL *skipS)(const ENCODING *, const char *); int (PTRCALL *getAtts)(const ENCODING *enc, const char *ptr, int attsMax, ATTRIBUTE *atts); int (PTRFASTCALL *charRefNumber)(const ENCODING *enc, const char *ptr); int (PTRCALL *predefinedEntityName)(const ENCODING *, const char *, const char *); void (PTRCALL *updatePosition)(const ENCODING *, const char *ptr, const char *end, POSITION *); int (PTRCALL *isPublicId)(const ENCODING *enc, const char *ptr, const char *end, const char **badPtr); void (PTRCALL *utf8Convert)(const ENCODING *enc, const char **fromP, const char *fromLim, char **toP, const char *toLim); void (PTRCALL *utf16Convert)(const ENCODING *enc, const char **fromP, const char *fromLim, unsigned short **toP, const unsigned short *toLim); int minBytesPerChar; char isUtf8; char isUtf16; }; /* Scan the string starting at ptr until the end of the next complete token, but do not scan past eptr. Return an integer giving the type of token. Return XML_TOK_NONE when ptr == eptr; nextTokPtr will not be set. Return XML_TOK_PARTIAL when the string does not contain a complete token; nextTokPtr will not be set. Return XML_TOK_INVALID when the string does not start a valid token; nextTokPtr will be set to point to the character which made the token invalid. Otherwise the string starts with a valid token; nextTokPtr will be set to point to the character following the end of that token. Each data character counts as a single token, but adjacent data characters may be returned together. Similarly for characters in the prolog outside literals, comments and processing instructions. */ #define XmlTok(enc, state, ptr, end, nextTokPtr) \ (((enc)->scanners[state])(enc, ptr, end, nextTokPtr)) #define XmlPrologTok(enc, ptr, end, nextTokPtr) \ XmlTok(enc, XML_PROLOG_STATE, ptr, end, nextTokPtr) #define XmlContentTok(enc, ptr, end, nextTokPtr) \ XmlTok(enc, XML_CONTENT_STATE, ptr, end, nextTokPtr) #define XmlCdataSectionTok(enc, ptr, end, nextTokPtr) \ XmlTok(enc, XML_CDATA_SECTION_STATE, ptr, end, nextTokPtr) #ifdef XML_DTD #define XmlIgnoreSectionTok(enc, ptr, end, nextTokPtr) \ XmlTok(enc, XML_IGNORE_SECTION_STATE, ptr, end, nextTokPtr) #endif /* XML_DTD */ /* This is used for performing a 2nd-level tokenization on the content of a literal that has already been returned by XmlTok. */ #define XmlLiteralTok(enc, literalType, ptr, end, nextTokPtr) \ (((enc)->literalScanners[literalType])(enc, ptr, end, nextTokPtr)) #define XmlAttributeValueTok(enc, ptr, end, nextTokPtr) \ XmlLiteralTok(enc, XML_ATTRIBUTE_VALUE_LITERAL, ptr, end, nextTokPtr) #define XmlEntityValueTok(enc, ptr, end, nextTokPtr) \ XmlLiteralTok(enc, XML_ENTITY_VALUE_LITERAL, ptr, end, nextTokPtr) #define XmlSameName(enc, ptr1, ptr2) (((enc)->sameName)(enc, ptr1, ptr2)) #define XmlNameMatchesAscii(enc, ptr1, end1, ptr2) \ (((enc)->nameMatchesAscii)(enc, ptr1, end1, ptr2)) #define XmlNameLength(enc, ptr) \ (((enc)->nameLength)(enc, ptr)) #define XmlSkipS(enc, ptr) \ (((enc)->skipS)(enc, ptr)) #define XmlGetAttributes(enc, ptr, attsMax, atts) \ (((enc)->getAtts)(enc, ptr, attsMax, atts)) #define XmlCharRefNumber(enc, ptr) \ (((enc)->charRefNumber)(enc, ptr)) #define XmlPredefinedEntityName(enc, ptr, end) \ (((enc)->predefinedEntityName)(enc, ptr, end)) #define XmlUpdatePosition(enc, ptr, end, pos) \ (((enc)->updatePosition)(enc, ptr, end, pos)) #define XmlIsPublicId(enc, ptr, end, badPtr) \ (((enc)->isPublicId)(enc, ptr, end, badPtr)) #define XmlUtf8Convert(enc, fromP, fromLim, toP, toLim) \ (((enc)->utf8Convert)(enc, fromP, fromLim, toP, toLim)) #define XmlUtf16Convert(enc, fromP, fromLim, toP, toLim) \ (((enc)->utf16Convert)(enc, fromP, fromLim, toP, toLim)) typedef struct { ENCODING initEnc; const ENCODING **encPtr; } INIT_ENCODING; int XmlParseXmlDecl(int isGeneralTextEntity, const ENCODING *enc, const char *ptr, const char *end, const char **badPtr, const char **versionPtr, const char **versionEndPtr, const char **encodingNamePtr, const ENCODING **namedEncodingPtr, int *standalonePtr); int XmlInitEncoding(INIT_ENCODING *, const ENCODING **, const char *name); const ENCODING *XmlGetUtf8InternalEncoding(void); const ENCODING *XmlGetUtf16InternalEncoding(void); int FASTCALL XmlUtf8Encode(int charNumber, char *buf); int FASTCALL XmlUtf16Encode(int charNumber, unsigned short *buf); int XmlSizeOfUnknownEncoding(void); typedef int (XMLCALL *CONVERTER) (void *userData, const char *p); ENCODING * XmlInitUnknownEncoding(void *mem, int *table, CONVERTER convert, void *userData); int XmlParseXmlDeclNS(int isGeneralTextEntity, const ENCODING *enc, const char *ptr, const char *end, const char **badPtr, const char **versionPtr, const char **versionEndPtr, const char **encodingNamePtr, const ENCODING **namedEncodingPtr, int *standalonePtr); int XmlInitEncodingNS(INIT_ENCODING *, const ENCODING **, const char *name); const ENCODING *XmlGetUtf8InternalEncodingNS(void); const ENCODING *XmlGetUtf16InternalEncodingNS(void); ENCODING * XmlInitUnknownEncodingNS(void *mem, int *table, CONVERTER convert, void *userData); #ifdef __cplusplus } #endif #endif /* not XmlTok_INCLUDED */ suite3270-4.1/Common/libexpat/xmltok_impl.c000066400000000000000000001324011413735575200206030ustar00rootroot00000000000000/* Copyright (c) 1998, 1999 Thai Open Source Software Center Ltd See the file COPYING for copying permission. */ /* This file is included! */ #ifdef XML_TOK_IMPL_C #ifndef IS_INVALID_CHAR #define IS_INVALID_CHAR(enc, ptr, n) (0) #endif #define INVALID_LEAD_CASE(n, ptr, nextTokPtr) \ case BT_LEAD ## n: \ if (end - ptr < n) \ return XML_TOK_PARTIAL_CHAR; \ if (IS_INVALID_CHAR(enc, ptr, n)) { \ *(nextTokPtr) = (ptr); \ return XML_TOK_INVALID; \ } \ ptr += n; \ break; #define INVALID_CASES(ptr, nextTokPtr) \ INVALID_LEAD_CASE(2, ptr, nextTokPtr) \ INVALID_LEAD_CASE(3, ptr, nextTokPtr) \ INVALID_LEAD_CASE(4, ptr, nextTokPtr) \ case BT_NONXML: \ case BT_MALFORM: \ case BT_TRAIL: \ *(nextTokPtr) = (ptr); \ return XML_TOK_INVALID; #define CHECK_NAME_CASE(n, enc, ptr, end, nextTokPtr) \ case BT_LEAD ## n: \ if (end - ptr < n) \ return XML_TOK_PARTIAL_CHAR; \ if (!IS_NAME_CHAR(enc, ptr, n)) { \ *nextTokPtr = ptr; \ return XML_TOK_INVALID; \ } \ ptr += n; \ break; #define CHECK_NAME_CASES(enc, ptr, end, nextTokPtr) \ case BT_NONASCII: \ if (!IS_NAME_CHAR_MINBPC(enc, ptr)) { \ *nextTokPtr = ptr; \ return XML_TOK_INVALID; \ } \ case BT_NMSTRT: \ case BT_HEX: \ case BT_DIGIT: \ case BT_NAME: \ case BT_MINUS: \ ptr += MINBPC(enc); \ break; \ CHECK_NAME_CASE(2, enc, ptr, end, nextTokPtr) \ CHECK_NAME_CASE(3, enc, ptr, end, nextTokPtr) \ CHECK_NAME_CASE(4, enc, ptr, end, nextTokPtr) #define CHECK_NMSTRT_CASE(n, enc, ptr, end, nextTokPtr) \ case BT_LEAD ## n: \ if (end - ptr < n) \ return XML_TOK_PARTIAL_CHAR; \ if (!IS_NMSTRT_CHAR(enc, ptr, n)) { \ *nextTokPtr = ptr; \ return XML_TOK_INVALID; \ } \ ptr += n; \ break; #define CHECK_NMSTRT_CASES(enc, ptr, end, nextTokPtr) \ case BT_NONASCII: \ if (!IS_NMSTRT_CHAR_MINBPC(enc, ptr)) { \ *nextTokPtr = ptr; \ return XML_TOK_INVALID; \ } \ case BT_NMSTRT: \ case BT_HEX: \ ptr += MINBPC(enc); \ break; \ CHECK_NMSTRT_CASE(2, enc, ptr, end, nextTokPtr) \ CHECK_NMSTRT_CASE(3, enc, ptr, end, nextTokPtr) \ CHECK_NMSTRT_CASE(4, enc, ptr, end, nextTokPtr) #ifndef PREFIX #define PREFIX(ident) ident #endif /* ptr points to character following " */ switch (BYTE_TYPE(enc, ptr + MINBPC(enc))) { case BT_S: case BT_CR: case BT_LF: case BT_PERCNT: *nextTokPtr = ptr; return XML_TOK_INVALID; } /* fall through */ case BT_S: case BT_CR: case BT_LF: *nextTokPtr = ptr; return XML_TOK_DECL_OPEN; case BT_NMSTRT: case BT_HEX: ptr += MINBPC(enc); break; default: *nextTokPtr = ptr; return XML_TOK_INVALID; } } return XML_TOK_PARTIAL; } static int PTRCALL PREFIX(checkPiTarget)(const ENCODING *enc, const char *ptr, const char *end, int *tokPtr) { int upper = 0; *tokPtr = XML_TOK_PI; if (end - ptr != MINBPC(enc)*3) return 1; switch (BYTE_TO_ASCII(enc, ptr)) { case ASCII_x: break; case ASCII_X: upper = 1; break; default: return 1; } ptr += MINBPC(enc); switch (BYTE_TO_ASCII(enc, ptr)) { case ASCII_m: break; case ASCII_M: upper = 1; break; default: return 1; } ptr += MINBPC(enc); switch (BYTE_TO_ASCII(enc, ptr)) { case ASCII_l: break; case ASCII_L: upper = 1; break; default: return 1; } if (upper) return 0; *tokPtr = XML_TOK_XML_DECL; return 1; } /* ptr points to character following " 1) { size_t n = end - ptr; if (n & (MINBPC(enc) - 1)) { n &= ~(MINBPC(enc) - 1); if (n == 0) return XML_TOK_PARTIAL; end = ptr + n; } } switch (BYTE_TYPE(enc, ptr)) { case BT_RSQB: ptr += MINBPC(enc); if (ptr == end) return XML_TOK_PARTIAL; if (!CHAR_MATCHES(enc, ptr, ASCII_RSQB)) break; ptr += MINBPC(enc); if (ptr == end) return XML_TOK_PARTIAL; if (!CHAR_MATCHES(enc, ptr, ASCII_GT)) { ptr -= MINBPC(enc); break; } *nextTokPtr = ptr + MINBPC(enc); return XML_TOK_CDATA_SECT_CLOSE; case BT_CR: ptr += MINBPC(enc); if (ptr == end) return XML_TOK_PARTIAL; if (BYTE_TYPE(enc, ptr) == BT_LF) ptr += MINBPC(enc); *nextTokPtr = ptr; return XML_TOK_DATA_NEWLINE; case BT_LF: *nextTokPtr = ptr + MINBPC(enc); return XML_TOK_DATA_NEWLINE; INVALID_CASES(ptr, nextTokPtr) default: ptr += MINBPC(enc); break; } while (ptr != end) { switch (BYTE_TYPE(enc, ptr)) { #define LEAD_CASE(n) \ case BT_LEAD ## n: \ if (end - ptr < n || IS_INVALID_CHAR(enc, ptr, n)) { \ *nextTokPtr = ptr; \ return XML_TOK_DATA_CHARS; \ } \ ptr += n; \ break; LEAD_CASE(2) LEAD_CASE(3) LEAD_CASE(4) #undef LEAD_CASE case BT_NONXML: case BT_MALFORM: case BT_TRAIL: case BT_CR: case BT_LF: case BT_RSQB: *nextTokPtr = ptr; return XML_TOK_DATA_CHARS; default: ptr += MINBPC(enc); break; } } *nextTokPtr = ptr; return XML_TOK_DATA_CHARS; } /* ptr points to character following " 1) { size_t n = end - ptr; if (n & (MINBPC(enc) - 1)) { n &= ~(MINBPC(enc) - 1); if (n == 0) return XML_TOK_PARTIAL; end = ptr + n; } } switch (BYTE_TYPE(enc, ptr)) { case BT_LT: return PREFIX(scanLt)(enc, ptr + MINBPC(enc), end, nextTokPtr); case BT_AMP: return PREFIX(scanRef)(enc, ptr + MINBPC(enc), end, nextTokPtr); case BT_CR: ptr += MINBPC(enc); if (ptr == end) return XML_TOK_TRAILING_CR; if (BYTE_TYPE(enc, ptr) == BT_LF) ptr += MINBPC(enc); *nextTokPtr = ptr; return XML_TOK_DATA_NEWLINE; case BT_LF: *nextTokPtr = ptr + MINBPC(enc); return XML_TOK_DATA_NEWLINE; case BT_RSQB: ptr += MINBPC(enc); if (ptr == end) return XML_TOK_TRAILING_RSQB; if (!CHAR_MATCHES(enc, ptr, ASCII_RSQB)) break; ptr += MINBPC(enc); if (ptr == end) return XML_TOK_TRAILING_RSQB; if (!CHAR_MATCHES(enc, ptr, ASCII_GT)) { ptr -= MINBPC(enc); break; } *nextTokPtr = ptr; return XML_TOK_INVALID; INVALID_CASES(ptr, nextTokPtr) default: ptr += MINBPC(enc); break; } while (ptr != end) { switch (BYTE_TYPE(enc, ptr)) { #define LEAD_CASE(n) \ case BT_LEAD ## n: \ if (end - ptr < n || IS_INVALID_CHAR(enc, ptr, n)) { \ *nextTokPtr = ptr; \ return XML_TOK_DATA_CHARS; \ } \ ptr += n; \ break; LEAD_CASE(2) LEAD_CASE(3) LEAD_CASE(4) #undef LEAD_CASE case BT_RSQB: if (ptr + MINBPC(enc) != end) { if (!CHAR_MATCHES(enc, ptr + MINBPC(enc), ASCII_RSQB)) { ptr += MINBPC(enc); break; } if (ptr + 2*MINBPC(enc) != end) { if (!CHAR_MATCHES(enc, ptr + 2*MINBPC(enc), ASCII_GT)) { ptr += MINBPC(enc); break; } *nextTokPtr = ptr + 2*MINBPC(enc); return XML_TOK_INVALID; } } /* fall through */ case BT_AMP: case BT_LT: case BT_NONXML: case BT_MALFORM: case BT_TRAIL: case BT_CR: case BT_LF: *nextTokPtr = ptr; return XML_TOK_DATA_CHARS; default: ptr += MINBPC(enc); break; } } *nextTokPtr = ptr; return XML_TOK_DATA_CHARS; } /* ptr points to character following "%" */ static int PTRCALL PREFIX(scanPercent)(const ENCODING *enc, const char *ptr, const char *end, const char **nextTokPtr) { if (ptr == end) return XML_TOK_PARTIAL; switch (BYTE_TYPE(enc, ptr)) { CHECK_NMSTRT_CASES(enc, ptr, end, nextTokPtr) case BT_S: case BT_LF: case BT_CR: case BT_PERCNT: *nextTokPtr = ptr; return XML_TOK_PERCENT; default: *nextTokPtr = ptr; return XML_TOK_INVALID; } while (ptr != end) { switch (BYTE_TYPE(enc, ptr)) { CHECK_NAME_CASES(enc, ptr, end, nextTokPtr) case BT_SEMI: *nextTokPtr = ptr + MINBPC(enc); return XML_TOK_PARAM_ENTITY_REF; default: *nextTokPtr = ptr; return XML_TOK_INVALID; } } return XML_TOK_PARTIAL; } static int PTRCALL PREFIX(scanPoundName)(const ENCODING *enc, const char *ptr, const char *end, const char **nextTokPtr) { if (ptr == end) return XML_TOK_PARTIAL; switch (BYTE_TYPE(enc, ptr)) { CHECK_NMSTRT_CASES(enc, ptr, end, nextTokPtr) default: *nextTokPtr = ptr; return XML_TOK_INVALID; } while (ptr != end) { switch (BYTE_TYPE(enc, ptr)) { CHECK_NAME_CASES(enc, ptr, end, nextTokPtr) case BT_CR: case BT_LF: case BT_S: case BT_RPAR: case BT_GT: case BT_PERCNT: case BT_VERBAR: *nextTokPtr = ptr; return XML_TOK_POUND_NAME; default: *nextTokPtr = ptr; return XML_TOK_INVALID; } } return -XML_TOK_POUND_NAME; } static int PTRCALL PREFIX(scanLit)(int open, const ENCODING *enc, const char *ptr, const char *end, const char **nextTokPtr) { while (ptr != end) { int t = BYTE_TYPE(enc, ptr); switch (t) { INVALID_CASES(ptr, nextTokPtr) case BT_QUOT: case BT_APOS: ptr += MINBPC(enc); if (t != open) break; if (ptr == end) return -XML_TOK_LITERAL; *nextTokPtr = ptr; switch (BYTE_TYPE(enc, ptr)) { case BT_S: case BT_CR: case BT_LF: case BT_GT: case BT_PERCNT: case BT_LSQB: return XML_TOK_LITERAL; default: return XML_TOK_INVALID; } default: ptr += MINBPC(enc); break; } } return XML_TOK_PARTIAL; } static int PTRCALL PREFIX(prologTok)(const ENCODING *enc, const char *ptr, const char *end, const char **nextTokPtr) { int tok; if (ptr == end) return XML_TOK_NONE; if (MINBPC(enc) > 1) { size_t n = end - ptr; if (n & (MINBPC(enc) - 1)) { n &= ~(MINBPC(enc) - 1); if (n == 0) return XML_TOK_PARTIAL; end = ptr + n; } } switch (BYTE_TYPE(enc, ptr)) { case BT_QUOT: return PREFIX(scanLit)(BT_QUOT, enc, ptr + MINBPC(enc), end, nextTokPtr); case BT_APOS: return PREFIX(scanLit)(BT_APOS, enc, ptr + MINBPC(enc), end, nextTokPtr); case BT_LT: { ptr += MINBPC(enc); if (ptr == end) return XML_TOK_PARTIAL; switch (BYTE_TYPE(enc, ptr)) { case BT_EXCL: return PREFIX(scanDecl)(enc, ptr + MINBPC(enc), end, nextTokPtr); case BT_QUEST: return PREFIX(scanPi)(enc, ptr + MINBPC(enc), end, nextTokPtr); case BT_NMSTRT: case BT_HEX: case BT_NONASCII: case BT_LEAD2: case BT_LEAD3: case BT_LEAD4: *nextTokPtr = ptr - MINBPC(enc); return XML_TOK_INSTANCE_START; } *nextTokPtr = ptr; return XML_TOK_INVALID; } case BT_CR: if (ptr + MINBPC(enc) == end) { *nextTokPtr = end; /* indicate that this might be part of a CR/LF pair */ return -XML_TOK_PROLOG_S; } /* fall through */ case BT_S: case BT_LF: for (;;) { ptr += MINBPC(enc); if (ptr == end) break; switch (BYTE_TYPE(enc, ptr)) { case BT_S: case BT_LF: break; case BT_CR: /* don't split CR/LF pair */ if (ptr + MINBPC(enc) != end) break; /* fall through */ default: *nextTokPtr = ptr; return XML_TOK_PROLOG_S; } } *nextTokPtr = ptr; return XML_TOK_PROLOG_S; case BT_PERCNT: return PREFIX(scanPercent)(enc, ptr + MINBPC(enc), end, nextTokPtr); case BT_COMMA: *nextTokPtr = ptr + MINBPC(enc); return XML_TOK_COMMA; case BT_LSQB: *nextTokPtr = ptr + MINBPC(enc); return XML_TOK_OPEN_BRACKET; case BT_RSQB: ptr += MINBPC(enc); if (ptr == end) return -XML_TOK_CLOSE_BRACKET; if (CHAR_MATCHES(enc, ptr, ASCII_RSQB)) { if (ptr + MINBPC(enc) == end) return XML_TOK_PARTIAL; if (CHAR_MATCHES(enc, ptr + MINBPC(enc), ASCII_GT)) { *nextTokPtr = ptr + 2*MINBPC(enc); return XML_TOK_COND_SECT_CLOSE; } } *nextTokPtr = ptr; return XML_TOK_CLOSE_BRACKET; case BT_LPAR: *nextTokPtr = ptr + MINBPC(enc); return XML_TOK_OPEN_PAREN; case BT_RPAR: ptr += MINBPC(enc); if (ptr == end) return -XML_TOK_CLOSE_PAREN; switch (BYTE_TYPE(enc, ptr)) { case BT_AST: *nextTokPtr = ptr + MINBPC(enc); return XML_TOK_CLOSE_PAREN_ASTERISK; case BT_QUEST: *nextTokPtr = ptr + MINBPC(enc); return XML_TOK_CLOSE_PAREN_QUESTION; case BT_PLUS: *nextTokPtr = ptr + MINBPC(enc); return XML_TOK_CLOSE_PAREN_PLUS; case BT_CR: case BT_LF: case BT_S: case BT_GT: case BT_COMMA: case BT_VERBAR: case BT_RPAR: *nextTokPtr = ptr; return XML_TOK_CLOSE_PAREN; } *nextTokPtr = ptr; return XML_TOK_INVALID; case BT_VERBAR: *nextTokPtr = ptr + MINBPC(enc); return XML_TOK_OR; case BT_GT: *nextTokPtr = ptr + MINBPC(enc); return XML_TOK_DECL_CLOSE; case BT_NUM: return PREFIX(scanPoundName)(enc, ptr + MINBPC(enc), end, nextTokPtr); #define LEAD_CASE(n) \ case BT_LEAD ## n: \ if (end - ptr < n) \ return XML_TOK_PARTIAL_CHAR; \ if (IS_NMSTRT_CHAR(enc, ptr, n)) { \ ptr += n; \ tok = XML_TOK_NAME; \ break; \ } \ if (IS_NAME_CHAR(enc, ptr, n)) { \ ptr += n; \ tok = XML_TOK_NMTOKEN; \ break; \ } \ *nextTokPtr = ptr; \ return XML_TOK_INVALID; LEAD_CASE(2) LEAD_CASE(3) LEAD_CASE(4) #undef LEAD_CASE case BT_NMSTRT: case BT_HEX: tok = XML_TOK_NAME; ptr += MINBPC(enc); break; case BT_DIGIT: case BT_NAME: case BT_MINUS: #ifdef XML_NS case BT_COLON: #endif tok = XML_TOK_NMTOKEN; ptr += MINBPC(enc); break; case BT_NONASCII: if (IS_NMSTRT_CHAR_MINBPC(enc, ptr)) { ptr += MINBPC(enc); tok = XML_TOK_NAME; break; } if (IS_NAME_CHAR_MINBPC(enc, ptr)) { ptr += MINBPC(enc); tok = XML_TOK_NMTOKEN; break; } /* fall through */ default: *nextTokPtr = ptr; return XML_TOK_INVALID; } while (ptr != end) { switch (BYTE_TYPE(enc, ptr)) { CHECK_NAME_CASES(enc, ptr, end, nextTokPtr) case BT_GT: case BT_RPAR: case BT_COMMA: case BT_VERBAR: case BT_LSQB: case BT_PERCNT: case BT_S: case BT_CR: case BT_LF: *nextTokPtr = ptr; return tok; #ifdef XML_NS case BT_COLON: ptr += MINBPC(enc); switch (tok) { case XML_TOK_NAME: if (ptr == end) return XML_TOK_PARTIAL; tok = XML_TOK_PREFIXED_NAME; switch (BYTE_TYPE(enc, ptr)) { CHECK_NAME_CASES(enc, ptr, end, nextTokPtr) default: tok = XML_TOK_NMTOKEN; break; } break; case XML_TOK_PREFIXED_NAME: tok = XML_TOK_NMTOKEN; break; } break; #endif case BT_PLUS: if (tok == XML_TOK_NMTOKEN) { *nextTokPtr = ptr; return XML_TOK_INVALID; } *nextTokPtr = ptr + MINBPC(enc); return XML_TOK_NAME_PLUS; case BT_AST: if (tok == XML_TOK_NMTOKEN) { *nextTokPtr = ptr; return XML_TOK_INVALID; } *nextTokPtr = ptr + MINBPC(enc); return XML_TOK_NAME_ASTERISK; case BT_QUEST: if (tok == XML_TOK_NMTOKEN) { *nextTokPtr = ptr; return XML_TOK_INVALID; } *nextTokPtr = ptr + MINBPC(enc); return XML_TOK_NAME_QUESTION; default: *nextTokPtr = ptr; return XML_TOK_INVALID; } } return -tok; } static int PTRCALL PREFIX(attributeValueTok)(const ENCODING *enc, const char *ptr, const char *end, const char **nextTokPtr) { const char *start; if (ptr == end) return XML_TOK_NONE; start = ptr; while (ptr != end) { switch (BYTE_TYPE(enc, ptr)) { #define LEAD_CASE(n) \ case BT_LEAD ## n: ptr += n; break; LEAD_CASE(2) LEAD_CASE(3) LEAD_CASE(4) #undef LEAD_CASE case BT_AMP: if (ptr == start) return PREFIX(scanRef)(enc, ptr + MINBPC(enc), end, nextTokPtr); *nextTokPtr = ptr; return XML_TOK_DATA_CHARS; case BT_LT: /* this is for inside entity references */ *nextTokPtr = ptr; return XML_TOK_INVALID; case BT_LF: if (ptr == start) { *nextTokPtr = ptr + MINBPC(enc); return XML_TOK_DATA_NEWLINE; } *nextTokPtr = ptr; return XML_TOK_DATA_CHARS; case BT_CR: if (ptr == start) { ptr += MINBPC(enc); if (ptr == end) return XML_TOK_TRAILING_CR; if (BYTE_TYPE(enc, ptr) == BT_LF) ptr += MINBPC(enc); *nextTokPtr = ptr; return XML_TOK_DATA_NEWLINE; } *nextTokPtr = ptr; return XML_TOK_DATA_CHARS; case BT_S: if (ptr == start) { *nextTokPtr = ptr + MINBPC(enc); return XML_TOK_ATTRIBUTE_VALUE_S; } *nextTokPtr = ptr; return XML_TOK_DATA_CHARS; default: ptr += MINBPC(enc); break; } } *nextTokPtr = ptr; return XML_TOK_DATA_CHARS; } static int PTRCALL PREFIX(entityValueTok)(const ENCODING *enc, const char *ptr, const char *end, const char **nextTokPtr) { const char *start; if (ptr == end) return XML_TOK_NONE; start = ptr; while (ptr != end) { switch (BYTE_TYPE(enc, ptr)) { #define LEAD_CASE(n) \ case BT_LEAD ## n: ptr += n; break; LEAD_CASE(2) LEAD_CASE(3) LEAD_CASE(4) #undef LEAD_CASE case BT_AMP: if (ptr == start) return PREFIX(scanRef)(enc, ptr + MINBPC(enc), end, nextTokPtr); *nextTokPtr = ptr; return XML_TOK_DATA_CHARS; case BT_PERCNT: if (ptr == start) { int tok = PREFIX(scanPercent)(enc, ptr + MINBPC(enc), end, nextTokPtr); return (tok == XML_TOK_PERCENT) ? XML_TOK_INVALID : tok; } *nextTokPtr = ptr; return XML_TOK_DATA_CHARS; case BT_LF: if (ptr == start) { *nextTokPtr = ptr + MINBPC(enc); return XML_TOK_DATA_NEWLINE; } *nextTokPtr = ptr; return XML_TOK_DATA_CHARS; case BT_CR: if (ptr == start) { ptr += MINBPC(enc); if (ptr == end) return XML_TOK_TRAILING_CR; if (BYTE_TYPE(enc, ptr) == BT_LF) ptr += MINBPC(enc); *nextTokPtr = ptr; return XML_TOK_DATA_NEWLINE; } *nextTokPtr = ptr; return XML_TOK_DATA_CHARS; default: ptr += MINBPC(enc); break; } } *nextTokPtr = ptr; return XML_TOK_DATA_CHARS; } #ifdef XML_DTD static int PTRCALL PREFIX(ignoreSectionTok)(const ENCODING *enc, const char *ptr, const char *end, const char **nextTokPtr) { int level = 0; if (MINBPC(enc) > 1) { size_t n = end - ptr; if (n & (MINBPC(enc) - 1)) { n &= ~(MINBPC(enc) - 1); end = ptr + n; } } while (ptr != end) { switch (BYTE_TYPE(enc, ptr)) { INVALID_CASES(ptr, nextTokPtr) case BT_LT: if ((ptr += MINBPC(enc)) == end) return XML_TOK_PARTIAL; if (CHAR_MATCHES(enc, ptr, ASCII_EXCL)) { if ((ptr += MINBPC(enc)) == end) return XML_TOK_PARTIAL; if (CHAR_MATCHES(enc, ptr, ASCII_LSQB)) { ++level; ptr += MINBPC(enc); } } break; case BT_RSQB: if ((ptr += MINBPC(enc)) == end) return XML_TOK_PARTIAL; if (CHAR_MATCHES(enc, ptr, ASCII_RSQB)) { if ((ptr += MINBPC(enc)) == end) return XML_TOK_PARTIAL; if (CHAR_MATCHES(enc, ptr, ASCII_GT)) { ptr += MINBPC(enc); if (level == 0) { *nextTokPtr = ptr; return XML_TOK_IGNORE_SECT; } --level; } } break; default: ptr += MINBPC(enc); break; } } return XML_TOK_PARTIAL; } #endif /* XML_DTD */ static int PTRCALL PREFIX(isPublicId)(const ENCODING *enc, const char *ptr, const char *end, const char **badPtr) { ptr += MINBPC(enc); end -= MINBPC(enc); for (; ptr != end; ptr += MINBPC(enc)) { switch (BYTE_TYPE(enc, ptr)) { case BT_DIGIT: case BT_HEX: case BT_MINUS: case BT_APOS: case BT_LPAR: case BT_RPAR: case BT_PLUS: case BT_COMMA: case BT_SOL: case BT_EQUALS: case BT_QUEST: case BT_CR: case BT_LF: case BT_SEMI: case BT_EXCL: case BT_AST: case BT_PERCNT: case BT_NUM: #ifdef XML_NS case BT_COLON: #endif break; case BT_S: if (CHAR_MATCHES(enc, ptr, ASCII_TAB)) { *badPtr = ptr; return 0; } break; case BT_NAME: case BT_NMSTRT: if (!(BYTE_TO_ASCII(enc, ptr) & ~0x7f)) break; default: switch (BYTE_TO_ASCII(enc, ptr)) { case 0x24: /* $ */ case 0x40: /* @ */ break; default: *badPtr = ptr; return 0; } break; } } return 1; } /* This must only be called for a well-formed start-tag or empty element tag. Returns the number of attributes. Pointers to the first attsMax attributes are stored in atts. */ static int PTRCALL PREFIX(getAtts)(const ENCODING *enc, const char *ptr, int attsMax, ATTRIBUTE *atts) { enum { other, inName, inValue } state = inName; int nAtts = 0; int open = 0; /* defined when state == inValue; initialization just to shut up compilers */ for (ptr += MINBPC(enc);; ptr += MINBPC(enc)) { switch (BYTE_TYPE(enc, ptr)) { #define START_NAME \ if (state == other) { \ if (nAtts < attsMax) { \ atts[nAtts].name = ptr; \ atts[nAtts].normalized = 1; \ } \ state = inName; \ } #define LEAD_CASE(n) \ case BT_LEAD ## n: START_NAME ptr += (n - MINBPC(enc)); break; LEAD_CASE(2) LEAD_CASE(3) LEAD_CASE(4) #undef LEAD_CASE case BT_NONASCII: case BT_NMSTRT: case BT_HEX: START_NAME break; #undef START_NAME case BT_QUOT: if (state != inValue) { if (nAtts < attsMax) atts[nAtts].valuePtr = ptr + MINBPC(enc); state = inValue; open = BT_QUOT; } else if (open == BT_QUOT) { state = other; if (nAtts < attsMax) atts[nAtts].valueEnd = ptr; nAtts++; } break; case BT_APOS: if (state != inValue) { if (nAtts < attsMax) atts[nAtts].valuePtr = ptr + MINBPC(enc); state = inValue; open = BT_APOS; } else if (open == BT_APOS) { state = other; if (nAtts < attsMax) atts[nAtts].valueEnd = ptr; nAtts++; } break; case BT_AMP: if (nAtts < attsMax) atts[nAtts].normalized = 0; break; case BT_S: if (state == inName) state = other; else if (state == inValue && nAtts < attsMax && atts[nAtts].normalized && (ptr == atts[nAtts].valuePtr || BYTE_TO_ASCII(enc, ptr) != ASCII_SPACE || BYTE_TO_ASCII(enc, ptr + MINBPC(enc)) == ASCII_SPACE || BYTE_TYPE(enc, ptr + MINBPC(enc)) == open)) atts[nAtts].normalized = 0; break; case BT_CR: case BT_LF: /* This case ensures that the first attribute name is counted Apart from that we could just change state on the quote. */ if (state == inName) state = other; else if (state == inValue && nAtts < attsMax) atts[nAtts].normalized = 0; break; case BT_GT: case BT_SOL: if (state != inValue) return nAtts; break; default: break; } } /* not reached */ } static int PTRFASTCALL PREFIX(charRefNumber)(const ENCODING *enc, const char *ptr) { int result = 0; /* skip &# */ ptr += 2*MINBPC(enc); if (CHAR_MATCHES(enc, ptr, ASCII_x)) { for (ptr += MINBPC(enc); !CHAR_MATCHES(enc, ptr, ASCII_SEMI); ptr += MINBPC(enc)) { int c = BYTE_TO_ASCII(enc, ptr); switch (c) { case ASCII_0: case ASCII_1: case ASCII_2: case ASCII_3: case ASCII_4: case ASCII_5: case ASCII_6: case ASCII_7: case ASCII_8: case ASCII_9: result <<= 4; result |= (c - ASCII_0); break; case ASCII_A: case ASCII_B: case ASCII_C: case ASCII_D: case ASCII_E: case ASCII_F: result <<= 4; result += 10 + (c - ASCII_A); break; case ASCII_a: case ASCII_b: case ASCII_c: case ASCII_d: case ASCII_e: case ASCII_f: result <<= 4; result += 10 + (c - ASCII_a); break; } if (result >= 0x110000) return -1; } } else { for (; !CHAR_MATCHES(enc, ptr, ASCII_SEMI); ptr += MINBPC(enc)) { int c = BYTE_TO_ASCII(enc, ptr); result *= 10; result += (c - ASCII_0); if (result >= 0x110000) return -1; } } return checkCharRefNumber(result); } static int PTRCALL PREFIX(predefinedEntityName)(const ENCODING *enc, const char *ptr, const char *end) { switch ((end - ptr)/MINBPC(enc)) { case 2: if (CHAR_MATCHES(enc, ptr + MINBPC(enc), ASCII_t)) { switch (BYTE_TO_ASCII(enc, ptr)) { case ASCII_l: return ASCII_LT; case ASCII_g: return ASCII_GT; } } break; case 3: if (CHAR_MATCHES(enc, ptr, ASCII_a)) { ptr += MINBPC(enc); if (CHAR_MATCHES(enc, ptr, ASCII_m)) { ptr += MINBPC(enc); if (CHAR_MATCHES(enc, ptr, ASCII_p)) return ASCII_AMP; } } break; case 4: switch (BYTE_TO_ASCII(enc, ptr)) { case ASCII_q: ptr += MINBPC(enc); if (CHAR_MATCHES(enc, ptr, ASCII_u)) { ptr += MINBPC(enc); if (CHAR_MATCHES(enc, ptr, ASCII_o)) { ptr += MINBPC(enc); if (CHAR_MATCHES(enc, ptr, ASCII_t)) return ASCII_QUOT; } } break; case ASCII_a: ptr += MINBPC(enc); if (CHAR_MATCHES(enc, ptr, ASCII_p)) { ptr += MINBPC(enc); if (CHAR_MATCHES(enc, ptr, ASCII_o)) { ptr += MINBPC(enc); if (CHAR_MATCHES(enc, ptr, ASCII_s)) return ASCII_APOS; } } break; } } return 0; } static int PTRCALL PREFIX(sameName)(const ENCODING *enc, const char *ptr1, const char *ptr2) { for (;;) { switch (BYTE_TYPE(enc, ptr1)) { #define LEAD_CASE(n) \ case BT_LEAD ## n: \ if (*ptr1++ != *ptr2++) \ return 0; LEAD_CASE(4) LEAD_CASE(3) LEAD_CASE(2) #undef LEAD_CASE /* fall through */ if (*ptr1++ != *ptr2++) return 0; break; case BT_NONASCII: case BT_NMSTRT: #ifdef XML_NS case BT_COLON: #endif case BT_HEX: case BT_DIGIT: case BT_NAME: case BT_MINUS: if (*ptr2++ != *ptr1++) return 0; if (MINBPC(enc) > 1) { if (*ptr2++ != *ptr1++) return 0; if (MINBPC(enc) > 2) { if (*ptr2++ != *ptr1++) return 0; if (MINBPC(enc) > 3) { if (*ptr2++ != *ptr1++) return 0; } } } break; default: if (MINBPC(enc) == 1 && *ptr1 == *ptr2) return 1; switch (BYTE_TYPE(enc, ptr2)) { case BT_LEAD2: case BT_LEAD3: case BT_LEAD4: case BT_NONASCII: case BT_NMSTRT: #ifdef XML_NS case BT_COLON: #endif case BT_HEX: case BT_DIGIT: case BT_NAME: case BT_MINUS: return 0; default: return 1; } } } /* not reached */ } static int PTRCALL PREFIX(nameMatchesAscii)(const ENCODING *enc, const char *ptr1, const char *end1, const char *ptr2) { for (; *ptr2; ptr1 += MINBPC(enc), ptr2++) { if (ptr1 == end1) return 0; if (!CHAR_MATCHES(enc, ptr1, *ptr2)) return 0; } return ptr1 == end1; } static int PTRFASTCALL PREFIX(nameLength)(const ENCODING *enc, const char *ptr) { const char *start = ptr; for (;;) { switch (BYTE_TYPE(enc, ptr)) { #define LEAD_CASE(n) \ case BT_LEAD ## n: ptr += n; break; LEAD_CASE(2) LEAD_CASE(3) LEAD_CASE(4) #undef LEAD_CASE case BT_NONASCII: case BT_NMSTRT: #ifdef XML_NS case BT_COLON: #endif case BT_HEX: case BT_DIGIT: case BT_NAME: case BT_MINUS: ptr += MINBPC(enc); break; default: return (int)(ptr - start); } } } static const char * PTRFASTCALL PREFIX(skipS)(const ENCODING *enc, const char *ptr) { for (;;) { switch (BYTE_TYPE(enc, ptr)) { case BT_LF: case BT_CR: case BT_S: ptr += MINBPC(enc); break; default: return ptr; } } } static void PTRCALL PREFIX(updatePosition)(const ENCODING *enc, const char *ptr, const char *end, POSITION *pos) { while (ptr < end) { switch (BYTE_TYPE(enc, ptr)) { #define LEAD_CASE(n) \ case BT_LEAD ## n: \ ptr += n; \ break; LEAD_CASE(2) LEAD_CASE(3) LEAD_CASE(4) #undef LEAD_CASE case BT_LF: pos->columnNumber = (XML_Size)-1; pos->lineNumber++; ptr += MINBPC(enc); break; case BT_CR: pos->lineNumber++; ptr += MINBPC(enc); if (ptr != end && BYTE_TYPE(enc, ptr) == BT_LF) ptr += MINBPC(enc); pos->columnNumber = (XML_Size)-1; break; default: ptr += MINBPC(enc); break; } pos->columnNumber++; } } #undef DO_LEAD_CASE #undef MULTIBYTE_CASES #undef INVALID_CASES #undef CHECK_NAME_CASE #undef CHECK_NAME_CASES #undef CHECK_NMSTRT_CASE #undef CHECK_NMSTRT_CASES #endif /* XML_TOK_IMPL_C */ suite3270-4.1/Common/libexpat/xmltok_impl.h000066400000000000000000000013031413735575200206040ustar00rootroot00000000000000/* Copyright (c) 1998, 1999 Thai Open Source Software Center Ltd See the file COPYING for copying permission. */ enum { BT_NONXML, BT_MALFORM, BT_LT, BT_AMP, BT_RSQB, BT_LEAD2, BT_LEAD3, BT_LEAD4, BT_TRAIL, BT_CR, BT_LF, BT_GT, BT_QUOT, BT_APOS, BT_EQUALS, BT_QUEST, BT_EXCL, BT_SOL, BT_SEMI, BT_NUM, BT_LSQB, BT_S, BT_NMSTRT, BT_COLON, BT_HEX, BT_DIGIT, BT_NAME, BT_MINUS, BT_OTHER, /* known not to be a name or name start character */ BT_NONASCII, /* might be a name or name start character */ BT_PERCNT, BT_LPAR, BT_RPAR, BT_AST, BT_PLUS, BT_COMMA, BT_VERBAR }; #include suite3270-4.1/Common/libexpat/xmltok_ns.c000066400000000000000000000062731413735575200202710ustar00rootroot00000000000000/* Copyright (c) 1998, 1999 Thai Open Source Software Center Ltd See the file COPYING for copying permission. */ /* This file is included! */ #ifdef XML_TOK_NS_C const ENCODING * NS(XmlGetUtf8InternalEncoding)(void) { return &ns(internal_utf8_encoding).enc; } const ENCODING * NS(XmlGetUtf16InternalEncoding)(void) { #if BYTEORDER == 1234 return &ns(internal_little2_encoding).enc; #elif BYTEORDER == 4321 return &ns(internal_big2_encoding).enc; #else const short n = 1; return (*(const char *)&n ? &ns(internal_little2_encoding).enc : &ns(internal_big2_encoding).enc); #endif } static const ENCODING * const NS(encodings)[] = { &ns(latin1_encoding).enc, &ns(ascii_encoding).enc, &ns(utf8_encoding).enc, &ns(big2_encoding).enc, &ns(big2_encoding).enc, &ns(little2_encoding).enc, &ns(utf8_encoding).enc /* NO_ENC */ }; static int PTRCALL NS(initScanProlog)(const ENCODING *enc, const char *ptr, const char *end, const char **nextTokPtr) { return initScan(NS(encodings), (const INIT_ENCODING *)enc, XML_PROLOG_STATE, ptr, end, nextTokPtr); } static int PTRCALL NS(initScanContent)(const ENCODING *enc, const char *ptr, const char *end, const char **nextTokPtr) { return initScan(NS(encodings), (const INIT_ENCODING *)enc, XML_CONTENT_STATE, ptr, end, nextTokPtr); } int NS(XmlInitEncoding)(INIT_ENCODING *p, const ENCODING **encPtr, const char *name) { int i = getEncodingIndex(name); if (i == UNKNOWN_ENC) return 0; SET_INIT_ENC_INDEX(p, i); p->initEnc.scanners[XML_PROLOG_STATE] = NS(initScanProlog); p->initEnc.scanners[XML_CONTENT_STATE] = NS(initScanContent); p->initEnc.updatePosition = initUpdatePosition; p->encPtr = encPtr; *encPtr = &(p->initEnc); return 1; } static const ENCODING * NS(findEncoding)(const ENCODING *enc, const char *ptr, const char *end) { #define ENCODING_MAX 128 char buf[ENCODING_MAX]; char *p = buf; int i; XmlUtf8Convert(enc, &ptr, end, &p, p + ENCODING_MAX - 1); if (ptr != end) return 0; *p = 0; if (streqci(buf, KW_UTF_16) && enc->minBytesPerChar == 2) return enc; i = getEncodingIndex(buf); if (i == UNKNOWN_ENC) return 0; return NS(encodings)[i]; } int NS(XmlParseXmlDecl)(int isGeneralTextEntity, const ENCODING *enc, const char *ptr, const char *end, const char **badPtr, const char **versionPtr, const char **versionEndPtr, const char **encodingName, const ENCODING **encoding, int *standalone) { return doParseXmlDecl(NS(findEncoding), isGeneralTextEntity, enc, ptr, end, badPtr, versionPtr, versionEndPtr, encodingName, encoding, standalone); } #endif /* XML_TOK_NS_C */ suite3270-4.1/Common/libs.mk000066400000000000000000000017611413735575200155560ustar00rootroot00000000000000# Root of the library object directory. Assumes $(TOP) and $(HOST) are set. LIBOBJ = $(TOP)/obj/$(HOST) # For Unix, include generated library dependencies. ifndef WIN32_FLAGS include $(TOP)/lib/32xx/32xx-deplibs.mk endif # Library depend macros. DEP3270 = $(LIBOBJ)/lib3270/lib3270.a DEP3270I = $(LIBOBJ)/lib3270i/lib3270i.a DEP32XX = $(LIBOBJ)/lib32xx/lib32xx.a DEP3270STUBS = $(LIBOBJ)/lib3270stubs/lib3270stubs.a DEPLIBEXPAT = $(LIBOBJ)/libexpat/libexpat.a # Library reference macros. LD3270 = -L$(LIBOBJ)/lib3270 -l3270 LD3270I = -L$(LIBOBJ)/lib3270i -l3270i LD32XX = -L$(LIBOBJ)/lib32xx -l32xx $(LIB32XX_DEPLIBS) LD3270STUBS = -L$(LIBOBJ)/lib3270stubs -l3270stubs LDLIBEXPAT = -L$(LIBOBJ)/libexpat -lexpat # Library build rules. $(DEP3270): cd $(TOP)/lib/$(W)3270 && $(MAKE) all $(DEP3270I): cd $(TOP)/lib/$(W)3270i && $(MAKE) all $(DEP32XX): cd $(TOP)/lib/$(W)32xx && $(MAKE) all $(DEP3270STUBS): cd $(TOP)/lib/$(W)3270stubs && $(MAKE) all $(DEPLIBEXPAT): cd $(TOP)/lib/libexpat && $(MAKE) all suite3270-4.1/Common/linemode.c000066400000000000000000000274261413735575200162420ustar00rootroot00000000000000/* * Copyright (c) 1993-2016, 2018, 2020 Paul Mattes. * Copyright (c) 2004, Don Russell. * Copyright (c) 1990, Jeff Sparkes. * Copyright (c) 1989, Georgia Tech Research Corporation (GTRC), Atlanta, * GA 30332. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the names of Paul Mattes, Don Russell, Jeff Sparkes, GTRC * nor their contributors may be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES, DON RUSSELL, JEFF SPARKES AND * GTRC "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL PAUL MATTES, * DON RUSSELL, JEFF SPARKES OR GTRC BE LIABLE FOR ANY DIRECT, INDIRECT, * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * linemode.c * TELNET NVT line-mode processing. */ #include "globals.h" #include "appres.h" #include "linemode.h" #include "nvt.h" #include "unicodec.h" #include "utils.h" #include "telnet.h" #define LM_BUFSZ 16384 typedef struct { ucs4_t ucs4; int mb_len; int echo_len; bool dbcs; } width_t; /* Globals */ /* Statics */ static unsigned char *lbuf = NULL; /* line-mode input buffer */ static unsigned char *lbptr; static width_t *widths = NULL; static bool lnext = false; static bool backslashed = false; static bool t_valid = false; static char vintr; static char vquit; static char verase; static char vkill; static char veof; static char vwerase; static char vrprnt; static char vlnext; static void do_data(char c); static void do_intr(char c); static void do_quit(char c); static void do_cerase(char c); static void do_werase(char c); static void do_kill(char c); static void do_rprnt(char c); static void do_eof(char c); static void do_eol(char c); static void do_lnext(char c); /** * Expand a character into a displayable string, which means expanding DEL to * "^?" and codes 0x00 through 0x1f to "^X" notation. * * @param[in] c character to expand * * @return String representation of c. */ static const char * just_ctl_see(int c) { static char buf[3]; unsigned char uc = c & 0xff; if (uc == 0x7f) { return "^?"; } if (uc < ' ') { buf[0] = '^'; buf[1] = uc + '@'; buf[2] = '\0'; } else { buf[0] = uc; buf[1] = '\0'; } return buf; } /** * Translate the input buffer into UCS4 characters and the number of positions * to back up per UCS4 character. * * @return number of UCS4 characters. */ static int expand_lbuf() { size_t len = lbptr - lbuf; unsigned char *xbptr = lbuf; int nx = 0; if (len == 0) { return 0; } if (widths != NULL) { Free(widths); } widths = (width_t *)Malloc(len * sizeof(width_t)); while (len) { int consumed; enum me_fail f; ucs4_t u; /* Handle nulls separately. */ if (*xbptr == '\0') { widths[nx].ucs4 = 0; widths[nx].mb_len = 1; widths[nx].echo_len = 2; /* ^@ */ widths[nx].dbcs = false; nx++; len--; xbptr++; continue; } u = multibyte_to_unicode((char *)xbptr, len, &consumed, &f); if (u == 0) { /* If we get an error, punt. */ len--; xbptr++; continue; } widths[nx].ucs4 = u; widths[nx].mb_len = consumed; if (u < ' ' || u == 0x7f) { widths[nx].echo_len = 2; /* ^X */ widths[nx].dbcs = false; } else if (u >= 0x2e80 && u <= 0xd7ff) { widths[nx].echo_len = 1; /* DBCS */ widths[nx].dbcs = true; } else { widths[nx].echo_len = 1; widths[nx].dbcs = false; } nx++; len -= consumed; xbptr += consumed; } return nx; } /* * parse_ctlchar * Parse an stty control-character specification. * A cheap, non-complaining implementation. */ static char parse_ctlchar(char *s) { if (!s || !*s) { return 0; } if ((int) strlen(s) > 1) { if (*s != '^') { return 0; } else if (*(s + 1) == '?') { return 0177; } else { return *(s + 1) - '@'; } } else { return *s; } } /** * Initialize the control characters for line mode. */ void linemode_init(void) { if (t_valid) { return; } vintr = parse_ctlchar(appres.linemode.intr); vquit = parse_ctlchar(appres.linemode.quit); verase = parse_ctlchar(appres.linemode.erase); vkill = parse_ctlchar(appres.linemode.kill); veof = parse_ctlchar(appres.linemode.eof); vwerase = parse_ctlchar(appres.linemode.werase); vrprnt = parse_ctlchar(appres.linemode.rprnt); vlnext = parse_ctlchar(appres.linemode.lnext); t_valid = true; } /* * linemode_out * Send output in NVT line mode. */ void linemode_out(const char *buf, size_t len) { size_t i; for (i = 0; i < len; i++) { char c = buf[i]; /* Input conversions. */ if (!lnext && c == '\r' && appres.linemode.icrnl) { c = '\n'; } else if (!lnext && c == '\n' && appres.linemode.inlcr) { c = '\r'; } /* Backslashes. */ if (c == '\\' && !backslashed) { backslashed = true; } else { backslashed = false; } /* Control chars. */ if (c == '\n') { do_eol(c); } else if (c == vintr) { do_intr(c); } else if (c == vquit) { do_quit(c); } else if (c == verase) { do_cerase(c); } else if (c == vkill) { do_kill(c); } else if (c == vwerase) { do_werase(c); } else if (c == vrprnt) { do_rprnt(c); } else if (c == veof) { do_eof(c); } else if (c == vlnext) { do_lnext(c); } else if (c == 0x08 || c == 0x7f) { /* Yes, a hack. */ do_cerase(c); } else { do_data(c); } } } void linemode_buf_init(void) { if (lbuf == NULL) { lbuf = (unsigned char *)Malloc(LM_BUFSZ); } lbptr = lbuf; lnext = false; backslashed = false; } static void nvt_process_s(const char *data) { while (*data) { nvt_process((unsigned int)*data++); } } static void nvt_backspace(bool dbcs) { nvt_wrapping_backspace(); if (dbcs) { nvt_wrapping_backspace(); } nvt_process_s(" "); if (dbcs) { nvt_process_s(" "); } nvt_wrapping_backspace(); if (dbcs) { nvt_wrapping_backspace(); } } static void forward_data(void) { net_cookedout((char *)lbuf, lbptr - lbuf); linemode_buf_init(); } static void do_data(char c) { if (lbptr + 1 < lbuf + LM_BUFSZ) { *lbptr++ = c; if (c == '\r') { *lbptr++ = '\0'; } nvt_process_s(just_ctl_see((int)c)); } else { nvt_process_s("\007"); } lnext = false; backslashed = false; } static void do_intr(char c) { if (lnext) { do_data(c); return; } nvt_process_s(ctl_see((int)c)); linemode_buf_init(); net_interrupt(c); } static void do_quit(char c) { if (lnext) { do_data(c); return; } nvt_process_s(ctl_see((int)c)); linemode_buf_init(); net_break(c); } /** * Erase a character. * * @param[in] c Input character that triggered the character erase. */ static void do_cerase(char c) { int n_ucs4; size_t len; if (backslashed) { lbptr--; nvt_wrapping_backspace(); do_data(c); return; } if (lnext) { do_data(c); return; } if (!(n_ucs4 = expand_lbuf())) { return; } lbptr -= widths[n_ucs4 - 1].mb_len; len = widths[n_ucs4 - 1].echo_len; while (len--) { nvt_backspace(widths[n_ucs4 - 1].dbcs); } } /** * Erase a word. * * @param[in] c Input character that triggered the word erase. */ static void do_werase(char c) { bool any = false; int n_ucs4; int ix; if (lnext) { do_data(c); return; } if (!(n_ucs4 = expand_lbuf())) { return; } for (ix = n_ucs4 - 1; ix >= 0; ix--) { ucs4_t ch = widths[ix].ucs4; size_t len; if (ch == ' ' || ch == '\t') { if (any) { break; } } else { any = true; } lbptr -= widths[ix].mb_len; len = widths[ix].echo_len; while (len--) { nvt_backspace(widths[ix].dbcs); } } } /** * Erase the whole input buffer. * * @param[in] c Input character that triggered the buffer kill. */ static void do_kill(char c) { int n_ucs4; int ix; if (backslashed) { lbptr--; nvt_wrapping_backspace(); do_data(c); return; } if (lnext) { do_data(c); return; } if (!(n_ucs4 = expand_lbuf())) { return; } for (ix = n_ucs4 - 1; ix >= 0; ix--) { int len = widths[ix].echo_len; while (len--) { nvt_backspace(widths[ix].dbcs); } } lbptr = lbuf; } /** * Reprint the input buffer. * * @param[in] c Input character that triggered the reprint. */ static void do_rprnt(char c) { unsigned char *p; int n_ucs4; int ix; if (lnext) { do_data(c); return; } nvt_process_s(just_ctl_see((int) c)); nvt_process_s("\r\n"); if (!(n_ucs4 = expand_lbuf())) { return; } p = lbuf; for (ix = 0; ix < n_ucs4; ix++) { ucs4_t ch = widths[ix].ucs4; if (ch < ' ') { nvt_process((unsigned int)'^'); nvt_process((unsigned int)(ch + '@')); } else if (ch == 0x7f) { nvt_process_s("^?"); } else { int i; for (i = 0; i < widths[ix].mb_len; i++) { nvt_process((unsigned int)(*(p + i))); } } p += widths[ix].mb_len; } } static void do_eof(char c) { if (backslashed) { lbptr--; nvt_wrapping_backspace(); do_data(c); return; } if (lnext) { do_data(c); return; } do_data(c); forward_data(); } static void do_eol(char c) { if (lnext) { do_data(c); return; } if (lbptr + 2 >= lbuf + LM_BUFSZ) { nvt_process_s("\007"); return; } *lbptr++ = '\r'; *lbptr++ = '\n'; nvt_process_s("\r\n"); forward_data(); } static void do_lnext(char c) { if (lnext) { do_data(c); return; } lnext = true; nvt_process_s("^"); nvt_wrapping_backspace(); } /* * linemode_chars * Report line-mode characters. */ struct ctl_char * linemode_chars(void) { static struct ctl_char c[9]; c[0].name = "intr"; strcpy(c[0].value, ctl_see(vintr)); c[1].name = "quit"; strcpy(c[1].value, ctl_see(vquit)); c[2].name = "erase"; strcpy(c[2].value, ctl_see(verase)); c[3].name = "kill"; strcpy(c[3].value, ctl_see(vkill)); c[4].name = "eof"; strcpy(c[4].value, ctl_see(veof)); c[5].name = "werase"; strcpy(c[5].value, ctl_see(vwerase)); c[6].name = "rprnt"; strcpy(c[6].value, ctl_see(vrprnt)); c[7].name = "lnext"; strcpy(c[7].value, ctl_see(vlnext)); c[8].name = NULL; return c; } /* * linemode_send_erase * Send the linemode ERASE character. */ void linemode_send_erase(void) { net_cookout(&verase, 1); } /* * linemode_send_kill * Send the linemode KILL character. */ void linemode_send_kill(void) { net_cookout(&vkill, 1); } /* * linemode_send_werase * Send the linemode WERASE character. */ void linemode_send_werase(void) { net_cookout(&vwerase, 1); } /* * linemode_dump() * Transition from line mode to character-at-a-time mode. * * Dump whatever is in the line mode buffer to the host. * This might result in double-echoing, but at least we won't lose any * input data. */ void linemode_dump(void) { forward_data(); } suite3270-4.1/Common/llist.c000066400000000000000000000041751413735575200155710ustar00rootroot00000000000000/* * Copyright (c) 1993-2015 Paul Mattes. * Copyright (c) 1990, Jeff Sparkes. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the names of Paul Mattes, Jeff Sparkes nor the names of their * contributors may be used to endorse or promote products derived from * this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES AND JEFF SPARKES "AS IS" AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL PAUL MATTES OR JEFF SPARKES BE LIABLE FOR * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH * DAMAGE. */ /* * llist.c * Doubly-linked list utilities. */ #include "globals.h" #include "utils.h" bool llist_isempty(llist_t *l) { return l->next == l && l->prev == l; } void llist_init(llist_t *l) { l->next = l->prev = l; } void llist_insert_before(llist_t *element, llist_t *before) { element->next = before; element->prev = before->prev; before->prev->next = element; before->prev = element; } void llist_unlink(llist_t *element) { element->next->prev = element->prev; element->prev->next = element->next; } suite3270-4.1/Common/login_macro.c000066400000000000000000000116151413735575200167300ustar00rootroot00000000000000/* * Copyright (c) 1993-2016, 2018, 2020 Paul Mattes. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the names of Paul Mattes nor the names of his contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO * EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * login_macro.c * Automatic login macros. */ #include "globals.h" #include "wincmn.h" #include #include #include "actions.h" #include "appres.h" #include "kybd.h" #include "lazya.h" #include "login_macro.h" #include "names.h" #include "popups.h" #include "resources.h" #include "source.h" #include "split_host.h" #include "task.h" #include "toggles.h" #include "trace.h" #include "utils.h" #include "varbuf.h" #include "w3misc.h" #include "xio.h" static void login_data(task_cbh handle, const char *buf, size_t len, bool success); static bool login_done(task_cbh handle, bool success, bool abort); /* Callback block for login. */ static tcb_t login_cb = { "login", IA_MACRO, CB_NEW_TASKQ, login_data, login_done, NULL }; static char *login_result; /** * Callback for data returned to login. * * @param[in] handle Callback handle * @param[in] buf Buffer * @param[in] len Buffer length * @param[in] success True if data, false if error message */ static void login_data(task_cbh handle _is_unused, const char *buf, size_t len, bool success) { if (handle != (tcb_t *)&login_cb) { vtrace("login_data: no match\n"); return; } Replace(login_result, xs_buffer("%.*s", (int)len, buf)); } /** * Callback for completion of one command executed from login. * * @param[in] handle Callback handle * @param[in] success True if child succeeded * @param[in] abort True if aborting * * @return True if context is complete */ static bool login_done(task_cbh handle _is_unused, bool success, bool abort) { if (handle != (tcb_t *)&login_cb) { vtrace("login_done: no match\n"); return true; } #if 0 /* If the login macro failed, exit. */ if (!success) { x3270_exit(1); } #endif if (!success) { popup_an_error("Login macro failed%s%s", login_result? ": ": "", login_result? login_result: ""); } Replace(login_result, NULL); return true; } /** * Run a login macro. * If the string looks like an action, e.g., starts with "Xxx(", run a login * macro. Otherwise, set a simple pending login string. * * @param[in] s String or command */ void login_macro(char *s) { char *t = s; bool is_actions = false; char *action; while (isspace((unsigned char)*t)) { t++; } if (isalnum((unsigned char)*t)) { while (isalnum((unsigned char)*t)) { t++; } while (isspace((unsigned char)*t)) { t++; } if (*t == '(') { is_actions = true; } } if (is_actions) { action = lazyaf("%s%s", HOST_FLAG(NO_LOGIN_HOST)? "": AnWait "(" KwInputField ") ", s); } else { action = lazyaf("%sString(%s)", HOST_FLAG(NO_LOGIN_HOST)? "": AnWait "(" KwInputField ") ", safe_param(s)); } push_cb(action, strlen(action), &login_cb, (task_cbh)&login_cb); } /** * Extended toggle for the login macro. * * @param[in] name Toggle name. * @param[in] value Toggle value. * @returns true for success, false for failure. */ static bool toggle_login_macro(const char *name _is_unused, const char *value) { if (!*value) { Replace(appres.login_macro, NULL); } else { Replace(appres.login_macro, NewString(value)); } return true; } /** * Login module registration. */ void login_macro_register(void) { /* Register the toggles. */ register_extended_toggle(ResLoginMacro, toggle_login_macro, NULL, NULL, (void **)&appres.login_macro, XRM_STRING); } suite3270-4.1/Common/m4man000077500000000000000000000035611413735575200152360ustar00rootroot00000000000000#!/usr/bin/env bash # generate a man page or html man page from m4 source function usage() { echo >&2 "usage: $0 -t html|man -p product -n name [-o outfile] [-w] source" exit 1 } unset windows while [ $# -gt 0 ] do case $1 in -t) shift case $1 in html|man) type=$1 shift ;; *) usage esac ;; -p) shift product=$1 shift ;; -n) shift name=$1 shift ;; -o) shift outfile=$1 shift ;; -w) shift platform=windows ;; -*) usage ;; *) if [ -n "$source" ] then usage fi source=$1 shift esac done if [ -z "$type" -o -z "$product" -o -z "$name" -o -z "$source" ] then usage fi . ./version.txt date=`date "+%d %B %Y"` # platform if [ x"$platform" != xwindows ] then case $product in w*) platform=windows ;; *) platform=unix esac fi if [ $platform = unix ] then c3270=c3270 s3270=s3270 pr3287=pr3287 x3270=x3270 b3270=b3270 else c3270=wc3270 s3270=ws3270 pr3287=wpr3287 x3270=wc3270 b3270=wb3270 fi # mode case $product in c3270|wc3270) mode=console ;; s3270|ws3270|b3270) mode=script ;; *) mode=$product ;; esac # interactive case $product in x3270|c3270|wc3270) interactive=yes ;; *) interactive=no ;; esac # set up output file, and make sure it will be deleted if [ -n "$outfile" ] then tf=/tmp/m4man$$ rm -f $tf trap "rm -f $tf" exit trap "exit" INT QUIT HUP TERM fi /usr/bin/m4 -DXX_PRODUCT=$product -DXX_PAGENAME=$name \ -DXX_PLATFORM=$platform -DXX_MODE=$mode -DXX_INTERACTIVE=$interactive \ -DXX_C3270=$c3270 -DXX_S3270=$s3270 -DXX_PR3287=$pr3287 -DXX_X3270=$x3270 \ -DXX_B3270=$b3270 -DXX_DATE="$date" -DXX_VERSION_NUMBER=$version \ -DXX_CYEAR=$cyear $type.m4 $source | if [ -n "$outfile" ] then cat >$tf else cat fi rc=$? if [ -n "$outfile" -a $rc -eq 0 ] then mv $tf $outfile rc=$? fi exit $rc suite3270-4.1/Common/man.m4000066400000000000000000000051301413735575200153030ustar00rootroot00000000000000dnl Copyright (c) 2000-2012, Paul Mattes. dnl All rights reserved. dnl dnl Redistribution and use in source and binary forms, with or without dnl modification, are permitted provided that the following conditions are met: dnl * Redistributions of source code must retain the above copyright dnl notice, this list of conditions and the following disclaimer. dnl * Redistributions in binary form must reproduce the above copyright dnl notice, this list of conditions and the following disclaimer in the dnl documentation and/or other materials provided with the distribution. dnl * Neither the names of Paul Mattes nor the names of his contributors dnl may be used to endorse or promote products derived from this software dnl without specific prior written permission. dnl dnl THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS OR IMPLIED dnl WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF dnl MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO dnl EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, dnl SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED dnl TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR dnl PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF dnl LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING dnl NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS dnl SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. dnl dnl Man page macros in m4, produces output for nroff -man changecom()dnl changequote(<,>)dnl define(XX_POSESSIVE,$1's)dnl define(XX_DQUOTED,``$1'')dnl changequote(`,')dnl define(XX_SH,.SH `"translit($1,abcdefghijklmnopqrstuvwxyz,ABCDEFGHIJKLMNOPQRSTUVWXYZ)"')dnl define(XX_TH,.TH $1 $2 "$3")dnl define(XX_SM,\s-1$1\s+1)dnl define(XX_LP,.LP)dnl define(XX_IP,.IP)dnl define(XX_BR,.br)dnl define(XX_RS,.RS $1 .RE)dnl define(XX_TS,.TS $2)dnl define(XX_TR,$1)dnl define(XX_TD,T{ .na .nh $1 T})dnl define(XX_TDH,T{ .na .nh .in +2 .ti -2 $1 T})dnl define(XX_T_,_)dnl define(XX_TC,$1)dnl define(XX_TE,.TE)dnl define(XX_TPS)dnl define(XX_TP,.TP $1)dnl define(XX_TPE)dnl define(XX_PP,.PP)dnl define(XX_RI2,.RI $1 $2)dnl define(XX_DASH,\-)dnl define(XX_DASHED,\-$1)dnl define(XX_FI,\fI$1\fP)dnl define(XX_FB,\fB$1\fP)dnl define(XX_NBSP,`\ ')dnl define(XX_LT,<)dnl define(XX_BS,\e)dnl define(XX_TARGET)dnl define(XX_LINK,$2)dnl define(XX_COPY,` ')dnl define(XX_NOT,notsign)dnl define(XX_BACKSLASH,\\$1)dnl define(XX_HO)dnl define(XX_HY,$1\%$2)dnl dnl Make sure it gets run through tbl first. '\" t suite3270-4.1/Common/menubar_stubs.c000066400000000000000000000033141413735575200173050ustar00rootroot00000000000000/* * Copyright (c) 2015 Paul Mattes. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the names of Paul Mattes nor the names of his contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO * EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * menubar_stubs.c * Stubs for menubar.c. */ #include "globals.h" #include "menubar.h" void menubar_as_set(bool sensitive _is_unused) { } void menubar_retoggle(toggle_index_t ix _is_unused) { } suite3270-4.1/Common/min_version.c000066400000000000000000000101401413735575200167570ustar00rootroot00000000000000/* * Copyright (c) 2015-2017 Paul Mattes. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the names of Paul Mattes nor the names of his contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO * EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * min_version.c * Minimum version checker. */ #include "globals.h" #include "min_version.h" #include "resources.h" int our_major, our_minor, our_iteration; /** * Parse a version number. * Version numbers are of the form: .text, such as * 3.4ga10 (3, 4, 10) * 3.5apha3 (3, 5, 3) * The version can be under-specified, e.g.: * 3.4 (3, 4, 0) * 3 (3, 0, 0) * Numbers are limited to 0..999. * @param[in] text String to decode. * @param[out] major Major number. * @param[out] minor Minor number. * @param[out] iteration Iteration. * * @return true if parse successful. */ #define MAX_VERSION 999 static bool parse_version(const char *text, int *major, int *minor, int *iteration) { const char *t = text; unsigned long n; char *ptr; *major = 0; *minor = 0; *iteration = 0; /* Parse the major number. */ n = strtoul(t, &ptr, 10); if (ptr == t || (*ptr != '.' && *ptr != '\0') || n > MAX_VERSION) { return false; } *major = (int)n; if (*ptr == '\0') { /* Just a major number. */ return true; } /* Parse the minor number. */ t = ptr + 1; n = strtoul(t, &ptr, 10); if (ptr == text || n > MAX_VERSION) { return false; } *minor = (int)n; if (*ptr == '\0') { /* Just a major and minor number. */ return true; } /* Parse the iteration. */ t = ptr; while (!isdigit((unsigned char)*t) && *t != '\0') { t++; } if (*t == '\0') { return false; } n = strtoul(t, &ptr, 10); if (ptr == t || *ptr != '\0' || n > MAX_VERSION) { return false; } *iteration = (int)n; return true; } /** * Check the requested version against the actual version. * @param[in] min_version Desired minimum version */ void check_min_version(const char *min_version) { int min_major, min_minor, min_iteration; /* Parse our version. */ if (!parse_version(build_rpq_version, &our_major, &our_minor, &our_iteration)) { fprintf(stderr, "Internal error: Can't parse version: %s\n", build_rpq_version); exit(1); } if (min_version == NULL) { return; } /* Parse the desired version. */ if (!parse_version(min_version, &min_major, &min_minor, &min_iteration)) { fprintf(stderr, "Invalid %s: %s\n", ResMinVersion, min_version); exit(1); } /* Compare. */ if (our_major < min_major || (our_major == min_major && our_minor < min_minor) || (our_major == min_major && our_minor == min_minor && our_iteration < min_iteration)) { fprintf(stderr, "Version %s < requested %s, aborting\n", build_rpq_version, min_version); exit(1); } } suite3270-4.1/Common/mitm.c000066400000000000000000000223151413735575200154040ustar00rootroot00000000000000/* * Copyright (c) 2018-2019 Paul Mattes. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the names of Paul Mattes nor the names of his contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO * EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* Man-in-the-middle trace daemon. */ #include "globals.h" #include #if defined(HAVE_GETOPT_H) /*[*/ # include /* why isn't this necessary elsewhere? */ #endif /*]*/ #if !defined(_WIN32) /*[*/ # include # include # include # include # include # include # include # include #else /*][*/ # include "w3misc.h" #endif /*]*/ #include "utils.h" #if !defined(_WIN32) /*[*/ # define DIRSEP '/' # define sockerr(s) perror(s) #else /*][*/ # define DIRSEP '\\' # define sockerr(s) win32_perror(s) #endif /*]*/ static char *me; #if 0 static void sockerr(const char *s); #endif static void netdump(FILE *f, char direction, unsigned char *buffer, size_t length); /* Usage message. */ static void mitm_usage(void) { fprintf(stderr, "Usage: %s [-p listenport] [-f outfile]\n", me); exit(1); } int main(int argc, char *argv[]) { int c; int port = 4200; char *file = NULL; FILE *f; struct sockaddr_in sin, sin_a; socket_t s; socket_t a; socket_t o; socklen_t a_len; char buf[16384]; size_t nr; char thru_host[256]; unsigned thru_port; struct hostent *h; bool a_open = true, o_open = true; int on = 1; int connect_result; time_t t; #if defined(_WIN32) /*[*/ if (sockstart() < 0) { exit(__LINE__); } #endif /*]*/ /* Identify yourself. */ if ((me = strrchr(argv[0], DIRSEP)) != NULL) { me++; } else { me = argv[0]; } if (argc > 1 && !strcmp(argv[1], "--version")) { printf("%s\n", build); return 0; } /* Parse options. */ opterr = 0; while ((c = getopt(argc, argv, "p:f:")) != -1) { switch (c) { case 'p': port = atoi(optarg); if (port <= 0 || port > 0xffff) { fprintf(stderr, "Invalid port: %s\n", optarg); exit(1); } break; case 'f': file = optarg; break; default: mitm_usage(); break; } } /* Validate positional arguments. */ if (optind < argc) { mitm_usage(); } /* Open the output file. */ if (file == NULL) { #if !defined(_WIN32) /*[*/ file = xs_buffer("/tmp/mitm.%d", (int)getpid()); #else /*][*/ char desktop[MAX_PATH]; HRESULT r; r = SHGetFolderPath(NULL, CSIDL_DESKTOPDIRECTORY, NULL, SHGFP_TYPE_CURRENT, desktop); if (r != S_OK) { fprintf(stderr, "SHGetFolderPath(DESKTOPDIRECTORY) failed: 0x%x\n", (int)r); exit(1); } file = xs_buffer("%s\\mitm.%d.txt", desktop, (int)getpid()); #endif /*]*/ } f = fopen(file, "w"); if (f == NULL) { perror(file); exit(1); } fprintf(f, "Recorded by %s\n", build); t = time(NULL); fprintf(f, "Started %s", asctime(gmtime(&t))); /* Wait for a connection. */ s = socket(AF_INET, SOCK_STREAM, 0); if (s == INVALID_SOCKET) { sockerr("socket"); exit(1); } if (setsockopt(s, SOL_SOCKET, SO_REUSEADDR, (char *)&on, sizeof(on)) < 0) { sockerr("setsockopt"); exit(1); } memset(&sin, 0, sizeof(sin)); sin.sin_family = AF_INET; sin.sin_addr.s_addr = htonl(INADDR_LOOPBACK); sin.sin_port = htons(port); if (bind(s, (struct sockaddr *)&sin, sizeof(sin)) < 0) { sockerr("bind"); exit(1); } if (listen(s, 1) < 0) { sockerr("listen"); exit(1); } memset(&sin_a, 0, sizeof(sin_a)); sin_a.sin_family = AF_INET; a_len = sizeof(sin_a); a = accept(s, (struct sockaddr *)&sin_a, &a_len); if (a == INVALID_SOCKET) { sockerr("accept"); exit(1); } SOCK_CLOSE(s); /* Read the initial request. */ nr = recv(a, buf, sizeof(buf), 0); if (nr < 0) { sockerr("recv"); exit(1); } if (nr == 0) { fprintf(stderr, "Empty connection\n"); exit(1); } if (nr < 2) { fprintf(stderr, "Short read\n"); exit(1); } if (buf[nr - 2] != '\r' || buf[nr - 1] != '\n') { fprintf(stderr, "Request line does not end in CR/LF\n"); exit(1); } buf[nr - 2] = '\0'; if (sscanf(buf, "%256s %u", thru_host, &thru_port) != 2) { fprintf(stderr, "Malformed request line\n"); exit(1); } /* Connect. */ h = gethostbyname(thru_host); if (h == NULL) { fprintf(stderr, "gethostbyname(%s) failed\n", thru_host); } o = socket(h->h_addrtype, SOCK_STREAM, 0); if (o == INVALID_SOCKET) { sockerr("socket"); exit(1); } if (h->h_addrtype == AF_INET) { struct sockaddr_in sin_o; memset(&sin_o, 0, sizeof(sin_o)); sin_o.sin_family = AF_INET; memcpy(&sin_o.sin_addr, h->h_addr_list[0], h->h_length); sin_o.sin_port = htons(thru_port); connect_result = connect(o, (struct sockaddr *)&sin_o, sizeof(sin_o)); } else if (h->h_addrtype == AF_INET6) { struct sockaddr_in6 sin6_o; memset(&sin6_o, 0, sizeof(sin6_o)); sin6_o.sin6_family = AF_INET6; memcpy(&sin6_o.sin6_addr, h->h_addr_list[0], h->h_length); sin6_o.sin6_port = htons(thru_port); connect_result = connect(o, (struct sockaddr *)&sin6_o, sizeof(sin6_o)); } else { fprintf(stderr, "Unknown address type %d\n", h->h_addrtype); exit(1); } if (connect_result < 0) { sockerr("connect"); exit(1); } /* Ignore broken pipes. */ #if !defined(_WIN32) /*[*/ signal(SIGPIPE, SIG_IGN); #endif /*]*/ /* Shuffle and trace. */ while (a_open || o_open) { fd_set rfds; int ns; int maxfd = 0; FD_ZERO(&rfds); if (a_open) { FD_SET(a, &rfds); if (a > maxfd) { maxfd = a; } } if (o_open) { FD_SET(o, &rfds); if (o > maxfd) { maxfd = o; } } ns = select(maxfd + 1, &rfds, NULL, NULL, NULL); if (ns < 0) { sockerr("select"); exit(1); } if (a_open && FD_ISSET(a, &rfds)) { nr = recv(a, buf, sizeof(buf), 0); if (nr < 0) { sockerr("emulator recv"); exit(1); } if (nr == 0) { fprintf(f, "Emulator EOF\n"); shutdown(o, 1); a_open = false; } else { netdump(f, '>', (unsigned char *)buf, nr); send(o, buf, nr, 0); } } if (o_open && FD_ISSET(o, &rfds)) { nr = recv(o, buf, sizeof(buf), 0); if (nr < 0) { sockerr("host recv"); exit(1); } if (nr == 0) { fprintf(f, "Host EOF\n"); shutdown(a, 1); o_open = false; } else { netdump(f, '<', (unsigned char *)buf, nr); send(a, buf, nr, 0); } } } t = time(NULL); fprintf(f, "Stopped %s", asctime(gmtime(&t))); return 0; } #if 0 /* Socket error. */ static void sockerr(const char *s) { #if !defined(_WIN32) /*[*/ perror(s); #else /*][*/ unsigned err = WSAGetLastError(); char buf[1024]; if (FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM, NULL, err, MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), buf, sizeof(buf), NULL) == 0) { snprintf(buf, sizeof(buf), "0x%x", err); } fprintf(stderr, "%s: socket error %s", s, buf); #endif /*]*/ } #endif /* Display a hex dump of a buffer. */ static void netdump(FILE *f, char direction, unsigned char *buffer, size_t length) { size_t i, count, index; static char rgbDigits[] = "0123456789abcdef"; char rgbLine[100]; int cbLine; # define BYTES_PER_LINE 22 for (index = 0; length; length -= count, buffer += count, index += count) { count = (length > BYTES_PER_LINE)? BYTES_PER_LINE: length; cbLine = sprintf(rgbLine, "0x%-3x ", (unsigned)index); for (i = 0; i < count; i++) { rgbLine[cbLine++] = rgbDigits[buffer[i] >> 4]; rgbLine[cbLine++] = rgbDigits[buffer[i] & 0x0f]; } for (; i < BYTES_PER_LINE; i++) { rgbLine[cbLine++] = ' '; rgbLine[cbLine++] = ' '; } rgbLine[cbLine++] = ' '; for (i = 0; i < count; i++) { if (buffer[i] < 32 || buffer[i] > 126 || buffer[i] == '%') { rgbLine[cbLine++] = '.'; } else { rgbLine[cbLine++] = buffer[i]; } } rgbLine[cbLine++] = 0; fprintf(f, "%c %s\n", direction, rgbLine); } } /* Glue for library errors. */ void Error(const char *s) { fprintf(stderr, "%s\n", s); exit(1); } suite3270-4.1/Common/mitm.man.m4000066400000000000000000000104441413735575200162540ustar00rootroot00000000000000dnl Copyright (c) 2018, Paul Mattes. dnl All rights reserved. dnl dnl Redistribution and use in source and binary forms, with or without dnl modification, are permitted provided that the following conditions are met: dnl * Redistributions of source code must retain the above copyright dnl notice, this list of conditions and the following disclaimer. dnl * Redistributions in binary form must reproduce the above copyright dnl notice, this list of conditions and the following disclaimer in the dnl documentation and/or other materials provided with the distribution. dnl * Neither the names of Paul Mattes, Jeff Sparkes nor the names of their dnl contributors may be used to endorse or promote products derived from dnl this software without specific prior written permission. dnl dnl THIS SOFTWARE IS PROVIDED BY PAUL MATTES AND ANY EXPRESS OR IMPLIED dnl WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF dnl MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO dnl EVENT SHALL PAUL MATTES OR JEFF SPARKES BE LIABLE FOR ANY DIRECT, INDIRECT, dnl INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT dnl NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, dnl DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY dnl THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT dnl (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF dnl THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. XX_TH(XX_PRODUCT,1,XX_DATE) XX_SH(Name) XX_PRODUCT XX_DASH network stream trace facility XX_SH(Synopsis) XX_FB(XX_PRODUCT) [XX_DASHED(p) XX_FI(listenport)] [XX_DASHED(f) XX_FI(outfile)] XX_SH(Description) XX_FB(XX_PRODUCT) is a proxy server that traces the data passing through it. It supports the Sun XX_FI(passthru) protocol, where the client writes the desired host name and port, separated by a space and terminated by a carriage return and line feed, at the beginning of the session. XX_LP Network data is written in hexadecimal to the specified file. XX_LP The name is derived from its position in the network stream: the man in the middle. XX_SH(Options) XX_TP(XX_FB(XX_DASHED(p)) XX_FI(listenport)) Specifies the port to listen on. The default port is 4200. XX_TP(XX_FB(XX_DASHED(f)) XX_FI(outfile)) Specifies the trace file to create. The default is ifelse(XX_PLATFORM,unix,/tmp/mitm.XX_FI(pid),mitm.XX_FI(pid).txt on the Desktop). XX_SH(Example) The emulator command-line option to route connection through XX_FB(mitm) is: XX_IP XX_RS(XX_DASHED(proxy) passthru:127.0.0.1:4200) XX_SH(See Also) XX_LINK(XX_S3270-man.html,XX_S3270`'(1))`, ' ifelse(XX_PLATFORM,unix,XX_LINK(XX_X3270-man.html,XX_X3270`'(1))`, ')dnl XX_LINK(XX_C3270-man.html,XX_C3270`'(1)) XX_SH(Copyrights) Copyright`'XX_COPY()2018-XX_CYEAR, Paul Mattes. XX_BR All rights reserved. XX_LP Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: XX_TPS() XX_TP(*) Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. XX_TP(*) Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. XX_TP(*) Neither the name of Paul Mattes nor the names of his contributors may be used to endorse or promote products derived from this software without specific prior written permission. XX_TPE() XX_LP THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. XX_SH(Version) XX_PRODUCT XX_VERSION_NUMBER suite3270-4.1/Common/mkfb.c000066400000000000000000000270151413735575200153570ustar00rootroot00000000000000/* * Copyright (c) 1995-2009, 2013-2016, 2019 Paul Mattes. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the names of Paul Mattes nor the names of his contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO * EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * mkfb.c * Utility to create RDB string definitions from a simple * #ifdef'd .ad file. * * mkfb [-c] [-o outfile] [infile...] */ #include #include "conf.h" #if defined(_WIN32) /*[*/ # include "wincmn.h" #else /*][*/ # include # include # include # include #endif /*]*/ #define BUFSZ 1024 /* input line buffer size */ #define ARRSZ 8192 /* output array size */ #define SSSZ 10 /* maximum nested ifdef */ unsigned aix[ARRSZ]; /* fallback array indices */ unsigned xlno[ARRSZ]; /* fallback array line numbers */ unsigned n_fallbacks = 0; /* number of fallback entries */ /* ifdef state stack */ #define MODE_COLOR 0x00000001 #define MODE_APL 0x00000002 #define MODE_DBCS 0x00000004 #define MODE__WIN32 0x00000008 #define MODEMASK 0x00000fff struct { unsigned long ifdefs; unsigned long ifndefs; unsigned lno; } ss[SSSZ]; unsigned ssp = 0; struct { const char *name; unsigned long mask; } parts[] = { { "COLOR", MODE_COLOR }, { "X3270_APL", MODE_APL }, { "X3270_DBCS", MODE_DBCS }, { "_WIN32", MODE__WIN32 } }; #define NPARTS (sizeof(parts)/sizeof(parts[0])) unsigned long is_defined = MODE_COLOR | MODE_APL | MODE_DBCS | #if defined(FOR_WIN32) || defined(_WIN32) MODE__WIN32 #else 0 #endif ; unsigned long is_undefined; char *me; void emit(FILE *t, int ix, char c); void usage(void) { fprintf(stderr, "usage: %s [-c] [-o outfile] [infile...]\n", me); exit(1); } /* * Wrapper around Windows' brain-dead tmpfile(). */ static FILE * mkfb_tmpfile(void) { FILE *f; #if defined(_WIN32) /*[*/ char *n; #endif /*]*/ #if !defined(_WIN32) /*[*/ f = tmpfile(); if (f == NULL) { perror("tmpfile"); exit(1); } #else /*][*/ n = _tempnam(NULL, "mkfb"); if (n == NULL) { fprintf(stderr, "_tempnam failed.\n"); exit(1); } f = fopen(n, "w+b"); if (f == NULL) { fprintf(stderr, "_tempnam open(\"%s\") failed: %s\n", n, strerror(errno)); exit(1); } free(n); #endif /*]*/ return f; } int main(int argc, char *argv[]) { int ix; char *ofile = NULL; char buf[BUFSZ]; int lno = 0; int cc = 0; unsigned i; int continued = 0; const char *filename = "standard input"; FILE *u, *t, *tc = NULL, *tm = NULL; int cmode = 0; unsigned long ifdefs; unsigned long ifndefs; int last_continue = 0; int infiles = 0; /* Parse arguments. */ if ((me = strrchr(argv[0], '/')) != NULL) { me++; } else { me = argv[0]; } for (ix = 1; ix < argc; ix++) { if (argv[ix][0] != '-') { break; } if (!strcmp(argv[ix], "-c")) { cmode = 1; } else if (!strcmp(argv[ix], "-o")) { if (argc < ix + 1) { usage(); } ix++; ofile = argv[ix]; } else { usage(); } } infiles = argc - ix; /* Open the output file. */ if (ofile) { if (freopen(ofile, "w", stdout) == NULL) { perror(ofile); exit(1); } } is_undefined = MODE_COLOR | (~is_defined & MODEMASK); /* Start a temp file. */ u = mkfb_tmpfile(); /* Do #ifdef, comment and whitespace processing first. */ while (!infiles || ix < argc) { if (infiles) { if (freopen(argv[ix], "r", stdin) == NULL) { perror(argv[ix]); exit(1); } filename = argv[ix]; ix++; } while (fgets(buf, BUFSZ, stdin) != NULL) { char *s = buf; size_t sl; unsigned i; lno++; /* Skip leading white space. */ while (isspace((unsigned char)*s)) { s++; } if (cmode && (!strncmp(s, "x3270.", 6) || !strncmp(s, "x3270*", 6))) { s += 6; } /* Remove trailing white space. */ while ((sl = strlen(s)) && isspace((unsigned char)s[sl-1])) { s[sl-1] = '\0'; } /* Skip comments and empty lines. */ if ((!last_continue && *s == '!') || !*s) { continue; } /* Check for simple if[n]defs. */ if (*s == '#') { int ifnd = 1; if (!strncmp(s, "#ifdef ", 7) || !(ifnd = strncmp(s, "#ifndef ", 8))) { char *tk; if (ssp >= SSSZ) { fprintf(stderr, "%s, line %d: Stack overflow\n", filename, lno); exit(1); } ss[ssp].ifdefs = 0L; ss[ssp].ifndefs = 0L; ss[ssp].lno = lno; tk = s + 7 + !ifnd; for (i = 0; i < NPARTS; i++) { if (!strcmp(tk, parts[i].name)) { if (!ifnd) { ss[ssp++].ifndefs = parts[i].mask; } else { ss[ssp++].ifdefs = parts[i].mask; } break; } } if (i >= NPARTS) { fprintf(stderr, "%s, line %d: Unknown condition\n", filename, lno); exit(1); } continue; } else if (!strcmp(s, "#else")) { unsigned long tmp; if (!ssp) { fprintf(stderr, "%s, line %d: Missing #if[n]def\n", filename, lno); exit(1); } tmp = ss[ssp-1].ifdefs; ss[ssp-1].ifdefs = ss[ssp-1].ifndefs; ss[ssp-1].ifndefs = tmp; } else if (!strcmp(s, "#endif")) { if (!ssp) { fprintf(stderr, "%s, line %d: Missing #if[n]def\n", filename, lno); exit(1); } ssp--; } else { fprintf(stderr, "%s, line %d: Unrecognized # directive\n", filename, lno); exit(1); } continue; } /* Figure out if there's anything to emit. */ /* First, look for contradictions. */ ifdefs = 0; ifndefs = 0; for (i = 0; i < ssp; i++) { ifdefs |= ss[i].ifdefs; ifndefs |= ss[i].ifndefs; } if (ifdefs & ifndefs) { #ifdef DEBUG_IFDEFS fprintf(stderr, "contradiction, line %d\n", lno); #endif continue; } /* Then, apply the actual values. */ if (ifdefs && (ifdefs & is_defined) != ifdefs) { #ifdef DEBUG_IFDEFS fprintf(stderr, "ifdef failed, line %d\n", lno); #endif continue; } if (ifndefs && (ifndefs & is_undefined) != ifndefs) { #ifdef DEBUG_IFDEFS fprintf(stderr, "ifndef failed, line %d\n", lno); #endif continue; } /* Emit the text. */ fprintf(u, "%lx %lx %d\n%s\n", ifdefs, ifndefs, lno, s); last_continue = strlen(s) > 0 && s[strlen(s) - 1] == '\\'; } if (!infiles) { break; } } if (ssp) { fprintf(stderr, "%d missing #endif(s)\n", ssp); fprintf(stderr, "last #ifdef was at line %u\n", ss[ssp-1].lno); exit(1); } /* Re-scan, emitting code this time. */ rewind(u); t = mkfb_tmpfile(); if (!cmode) { tc = mkfb_tmpfile(); tm = mkfb_tmpfile(); } /* Emit the initial boilerplate. */ fprintf(t, "/* This file was created automatically by mkfb. */\n\n"); fprintf(t, "#include \"globals.h\"\n"); fprintf(t, "#include \"fallbacks.h\"\n"); if (cmode) { fprintf(t, "static unsigned char fsd[] = {\n"); } else { fprintf(t, "unsigned char common_fallbacks[] = {\n"); fprintf(tc, "unsigned char color_fallbacks[] = {\n"); fprintf(tm, "unsigned char mono_fallbacks[] = {\n"); } /* Scan the file, emitting the fsd array and creating the indices. */ while (fscanf(u, "%lx %lx %d\n", &ifdefs, &ifndefs, &lno) == 3) { char *s = buf; char c; int white; FILE *t_this = t; int ix = 0; if (fgets(buf, BUFSZ, u) == NULL) { break; } if (strlen(buf) > 0 && buf[strlen(buf)-1] == '\n') { buf[strlen(buf)-1] = '\0'; } #if 0 fprintf(stderr, "%lx %lx %d %s\n", ifdefs, ifndefs, lno, buf); #endif /* Add array offsets. */ if (cmode) { /* Ignore color. Accumulate offsets into an array. */ if (n_fallbacks >= ARRSZ) { fprintf(stderr, "Buffer overflow\n"); exit(1); } aix[n_fallbacks] = cc; xlno[n_fallbacks++] = lno; } else { /* Use color to decide which file to write into. */ if (!(ifdefs & MODE_COLOR) && !(ifndefs & MODE_COLOR)) { /* Both. */ t_this = t; ix = 0; } else if (ifdefs & MODE_COLOR) { /* Just color. */ t_this = tc; ix = 1; } else { /* Just mono. */ t_this = tm; ix = 2; } } continued = 0; white = 0; while ((c = *s++) != '\0') { if (c == ' ' || c == '\t') { white++; } else if (white) { emit(t_this, ix, ' '); cc++; white = 0; } switch (c) { case ' ': case '\t': break; case '#': if (!cmode) { emit(t_this, ix, '\\'); emit(t_this, ix, '#'); cc += 2; } else { emit(t_this, ix, c); cc++; } break; case '\\': if (*s == '\0') { continued = 1; break; } else if (cmode) { switch ((c = *s++)) { case 't': c = '\t'; break; case 'n': c = '\n'; break; default: break; } } /* else fall through */ default: emit(t_this, ix, c); cc++; break; } } if (white) { emit(t_this, ix, ' '); cc++; white = 0; } if (!continued) { if (cmode) { emit(t_this, ix, 0); } else { emit(t_this, ix, '\n'); } cc++; } } fclose(u); if (cmode) { fprintf(t, "};\n\n"); } else { emit(t, 0, 0); fprintf(t, "};\n\n"); emit(tc, 0, 0); fprintf(tc, "};\n\n"); emit(tm, 0, 0); fprintf(tm, "};\n\n"); } /* Copy tmp to output. */ rewind(t); if (!cmode) { rewind(tc); rewind(tm); } while (fgets(buf, sizeof(buf), t) != NULL) { printf("%s", buf); } if (!cmode) { while (fgets(buf, sizeof(buf), tc) != NULL) { printf("%s", buf); } while (fgets(buf, sizeof(buf), tm) != NULL) { printf("%s", buf); } } if (cmode) { /* Emit the fallback array. */ printf("char *fallbacks[%u] = {\n", n_fallbacks + 1); for (i = 0; i < n_fallbacks; i++) { printf("\t(char *)&fsd[%u], /* line %u */\n", aix[i], xlno[i]); } printf("\tNULL\n};\n\n"); /* Emit some test code. */ printf("%s", "#if defined(DEBUG) /*[*/\n\ #include \n\ int\n\ main(int argc, char *argv[])\n\ {\n\ int i;\n\ \n\ for (i = 0; fallbacks[i] != NULL; i++)\n\ printf(\"%d: %s\\n\", i, fallbacks[i]);\n\ return 0;\n\ }\n"); printf("#endif /*]*/\n\n"); } fflush(stdout); fclose(stdout); fclose(t); if (!cmode) { fclose(tc); fclose(tm); } return 0; } static int n_out[3] = { 0, 0, 0 }; void emit(FILE *t, int ix, char c) { if (n_out[ix] >= 19) { fprintf(t, "\n"); n_out[ix] = 0; } fprintf(t, "%3d,", (unsigned char)c); n_out[ix]++; } suite3270-4.1/Common/mkicon.c000066400000000000000000000012041413735575200157100ustar00rootroot00000000000000#include /* * Make an icon file. * * mkicon icon-file >c-file */ int main(int argc, char *argv[]) { FILE *f; int c; int i = 0; if (argc != 2) { fprintf(stderr, "Usage: %s icon-file >c-file\n", argv[0]); return 1; } f = fopen(argv[1], "rb"); if (f == NULL) { perror(argv[1]); return 1; } printf("unsigned char favicon[] = {\n"); while ((c = fgetc(f)) != EOF) { if (i && !(i % 16)) { printf("\n"); } printf("%3d,", c); i++; } if ((i % 16) != 1) { printf("\n"); } printf("};\nunsigned favicon_size = sizeof(favicon);\n"); fclose(f); return 0; } suite3270-4.1/Common/mkstand.bash000077500000000000000000000010031413735575200165640ustar00rootroot00000000000000#!/usr/bin/env bash # Make a standalone webpage from an xxx-body webpage. # mkstand 'title' infile outfile if [ $# -ne 3 ] then echo >&2 "usage: $0 'title' infile outfile" exit 1 fi . ./version.txt tf=/tmp/mkstand$$ rm -f $tf trap "rm -f $tf" exit trap "exit" INT QUIT HUP TERM (cat < $1 EOF sed "s/CYEAR/$cyear/g" $2 cat < EOF ) >$tf mv $tf $3 suite3270-4.1/Common/mktbl.c000066400000000000000000000032771413735575200155550ustar00rootroot00000000000000/* * Make a translation table. * * mktbl [] */ #include #include #include char *me; static void usage(void) { fprintf(stderr, "usage: %s []\n", me); exit(1); } int main(int argc, char *argv[]) { char *slash; char *name; FILE *f; char linebuf[256]; unsigned short u, mb; int line = 0; unsigned short u_start = 0, mb_start = 0, length = 0; int count = 0; /* Identify yourself. */ if ((slash = strrchr(argv[0], '/')) != NULL) me = slash + 1; else me = argv[0]; /* Check syntax. */ if (argc < 2 || argc > 3) usage(); /* Open the file. */ if (argc == 3) { f = fopen(argv[2], "r"); if (f == NULL) { perror(argv[2]); exit(1); } } else { f = stdin; } /* Start talking. */ name = argv[1]; printf("static unsigned short %s_e[] = {", name); /* Read the table. */ while (fgets(linebuf, sizeof(linebuf), f) != NULL) { line++; if (sscanf(linebuf, "%hx %hx", &u, &mb) != 2) { fprintf(stderr, "line %d: parse error\n", line); exit(1); } if (line == 1) { u_start = u; mb_start = mb; length = 1; } else { if (u == u_start + length && mb == mb_start + length) length++; else { printf("%s%s0x%04x, 0x%04x, %5u", count? ", ": "", (count % 3)? "": "\n ", u_start, mb_start, length); u_start = u; mb_start = mb; length = 1; count++; } } } printf("%s%s0x%04x, 0x%04x, %5u", count? ", ": "", (count % 3)? "": "\n ", u_start, mb_start, length); /* Clean up. */ printf("\n};\n\n\ xl_t %s = {\n\ XL_SIZE(%s_e),\n\ %s_e\n\ };\n", name, name, name); /* Close files and exit. */ if (argc == 3) fclose(f); return 0; } suite3270-4.1/Common/mkversion.sh000077500000000000000000000050241413735575200166440ustar00rootroot00000000000000#!/usr/bin/env sh # Copyright (c) 1995-2009, 2014-2015, 2018, 2020 Paul Mattes. # Copyright (c) 2005, Don Russell. # All rights reserved. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # * Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # * Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in the # documentation and/or other materials provided with the distribution. # * Neither the names of Paul Mattes, Don Russell nor their contributors # may be used to endorse or promote products derived from this software # without specific prior written permission. # # THIS SOFTWARE IS PROVIDED BY PAUL MATTES AND DON RUSSELL "AS IS" # AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, # THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR # PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL PAUL MATTES OR DON RUSSELL # BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, # OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF # SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS # INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN # CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) # ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF # THE POSSIBILITY OF SUCH DAMAGE. # Create version.c from version.txt # mkversion [program [path-to-version.txt]] #set -x # Ensure that 'date' emits 7-bit U.S. ASCII. LANG=C LC_ALL=C export LANG LC_ALL set -e . ${2-./version.txt} date="date -u" [ -n "$SOURCE_DATE_EPOCH" ] && date="$date -d@$SOURCE_DATE_EPOCH" builddate=`$date` sccsdate=`$date +%Y/%m/%d` user=${LOGNAME-$USER} # Create an all numeric timestamp for rpqnames. # rpq.c will return this string of numbers in bcd format # It is OK to change the length (+ or -), but use # decimal (0-9) digits only. Length must be even number of digits. rpq_timestamp=`$date +%Y%m%d%H%M%S` app=${1-x3270} cat <x", ResOversize); goto fail; } } else { ovc = 0; ovr = 0; } } else { ovc = ov_cols; ovr = ov_rows; } /* Save the current settings. */ old.model_num = model_num; old.rows = ROWS; old.cols = COLS; old.ov_rows = ov_rows; old.ov_cols = ov_cols; old.m3279 = mode.m3279; old.alt = screen_alt; old.extended = mode.extended; /* Change settings. */ mode.m3279 = is_color; mode.extended = is_extended; set_rows_cols(model_number, ovc, ovr); if (model_num != model_number || ov_rows != (int)ovr || ov_cols != (int)ovc) { /* Failed. Restore the old settings. */ mode.m3279 = old.m3279; set_rows_cols(old.model_num, old.ov_cols, old.ov_rows); ROWS = old.rows; COLS = old.cols; screen_alt = old.alt; mode.extended = old.extended; return false; } ROWS = maxROWS; COLS = maxCOLS; ctlr_reinit(MODEL_CHANGE); /* Reset the screen state. */ screen_init(); ctlr_erase(true); /* Report the new terminal name. */ if (appres.termname == NULL) { st_changed(ST_TERMINAL_NAME, appres.termname != NULL); } if (pending_model != NULL) { Replace(appres.model, pending_model); } pending_model = NULL; if (pending_oversize != NULL) { if (*pending_oversize) { Replace(appres.oversize, pending_oversize); pending_oversize = NULL; } else { bool force = !oversize_was_pending && appres.oversize != NULL; Replace(appres.oversize, NULL); if (force) { /* Turning off extended killed oversize. */ force_toggle_notify(ResOversize, IA_NONE); } } } goto done; fail: res = false; done: Replace(pending_model, NULL); Replace(pending_oversize, NULL); return res; } /* * Terminal name toggle. */ static bool toggle_terminal_name(const char *name _is_unused, const char *value) { if (PCONNECTED) { popup_an_error("%s cannot change while connected", ResTermName); return false; } appres.termname = clean_termname(*value? value: NULL); net_set_default_termtype(); return true; } /* * Toggle the NOP interval. */ static bool toggle_nop_seconds(const char *name _is_unused, const char *value) { unsigned long l; char *end; int secs; if (!*value) { appres.nop_seconds = 0; net_nop_seconds(); return true; } l = strtoul(value, &end, 10); secs = (int)l; if (*end != '\0' || (unsigned long)secs != l || secs < 0) { popup_an_error("Invalid %s value", ResNopSeconds); return false; } appres.nop_seconds = secs; net_nop_seconds(); return true; } /** * Module registration. */ void model_register(void) { /* Register the toggles. */ register_extended_toggle(ResModel, toggle_model, toggle_model_done, canonical_model, (void **)&appres.model, XRM_STRING); register_extended_toggle(ResOversize, toggle_oversize, toggle_model_done, NULL, (void **)&appres.oversize, XRM_STRING); register_extended_toggle(ResTermName, toggle_terminal_name, NULL, NULL, (void **)&appres.termname, XRM_STRING); register_extended_toggle(ResNopSeconds, toggle_nop_seconds, NULL, NULL, (void **)&appres.nop_seconds, XRM_INT); } suite3270-4.1/Common/model_stubs.c000066400000000000000000000032351413735575200167560ustar00rootroot00000000000000/* * Copyright (c) 2016-2020 Paul Mattes. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of Paul Mattes, nor his contributors may be used to * endorse or promote products derived from this software without * specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO * EVENT SHALL PAUL MATTES, JEFF SPARKES OR GTRC BE LIABLE FOR ANY DIRECT, * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * model_stubs.c * Stubs for model.c. */ #include "globals.h" #include "model.h" bool model_can_change(void) { return false; } suite3270-4.1/Common/nvt.c000066400000000000000000001707341413735575200152560ustar00rootroot00000000000000/* * Copyright (c) 1993-2009, 2013-2020 Paul Mattes. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the names of Paul Mattes nor the names of his contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO * EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * nvt.c * NVT (ANSI X3.64 / DEC VT100 / xterm) terminal emulation. */ #include "globals.h" #include "appres.h" #include "ctlr.h" #include "3270ds.h" #include "toggles.h" #include "codepage.h" #include "ctlrc.h" #include "host.h" #include "nvt.h" #include "nvt_gui.h" #include "screen.h" #include "scroll.h" #include "tables.h" #include "task.h" #include "telnet.h" #include "telnet_core.h" #include "trace.h" #include "screentrace.h" #include "unicodec.h" #include "utils.h" #define MB_MAX 16 #define PE_MAX 1024 #define SC 1 /* save cursor position */ #define RC 2 /* restore cursor position */ #define NL 3 /* new line */ #define UP 4 /* cursor up */ #define E2 5 /* second level of ESC processing */ #define rS 6 /* reset */ #define IC 7 /* insert chars */ #define DN 8 /* cursor down */ #define RT 9 /* cursor right */ #define LT 10 /* cursor left */ #define CM 11 /* cursor motion */ #define ED 12 /* erase in display */ #define EL 13 /* erase in line */ #define IL 14 /* insert lines */ #define DL 15 /* delete lines */ #define DC 16 /* delete characters */ #define SG 17 /* set graphic rendition */ #define BL 18 /* ring bell */ #define NP 19 /* new page */ #define BS 20 /* backspace */ #define CR 21 /* carriage return */ #define LF 22 /* line feed */ #define HT 23 /* horizontal tab */ #define E1 24 /* first level of ESC processing */ #define Xx 25 /* undefined control character (nop) */ #define Pc 26 /* printing character */ #define Sc 27 /* semicolon (after ESC [) */ #define Dg 28 /* digit (after ESC [ or ESC [ ?) */ #define RI 29 /* reverse index */ #define DA 30 /* send device attributes */ #define SM 31 /* set mode */ #define RM 32 /* reset mode */ #define DO 33 /* return terminal ID (obsolete) */ #define SR 34 /* device status report */ #define CS 35 /* character set designate */ #define E3 36 /* third level of ESC processing */ #define DS 37 /* DEC private set */ #define DR 38 /* DEC private reset */ #define DV 39 /* DEC private save */ #define DT 40 /* DEC private restore */ #define SS 41 /* set scrolling region */ #define TM 42 /* text mode (ESC ]) */ #define T2 43 /* semicolon (after ESC ]) */ #define TX 44 /* text parameter (after ESC ] n ;) */ #define TB 45 /* text parameter done (ESC ] n ; xxx BEL) */ #define TS 46 /* tab set */ #define TC 47 /* tab clear */ #define C2 48 /* character set designate (finish) */ #define G0 49 /* select G0 character set */ #define G1 50 /* select G1 character set */ #define G2 51 /* select G2 character set */ #define G3 52 /* select G3 character set */ #define S2 53 /* select G2 for next character */ #define S3 54 /* select G3 for next character */ #define MB 55 /* process multi-byte character */ #define CH 56 /* cursor horizontal absolute (CHA) */ #define VP 57 /* vertical position absolute (VPA) */ #define GT 58 /* > (after ESC [) */ #define D2 59 /* secondary device attributes */ static enum state { DATA = 0, ESC = 1, CSDES = 2, N1 = 3, DECP = 4, TEXT = 5, TEXT2 = 6, MBPEND = 7, ESCGT = 8, NUM_STATES = 9 } state = DATA; /* * Terminal functions for ANSI X3.64 are called ansi_xxx. * DEC VT100-specific functions are called dec_xxx. * Xterm-specific functions are called xterm_xxx. */ static enum state ansi_data_mode(int, int); static enum state dec_save_cursor(int, int); static enum state dec_restore_cursor(int, int); static enum state ansi_newline(int, int); static enum state ansi_cursor_up(int, int); static enum state ansi_esc2(int, int); static enum state ansi_reset(int, int); static enum state ansi_insert_chars(int, int); static enum state ansi_cursor_down(int, int); static enum state ansi_cursor_right(int, int); static enum state ansi_cursor_left(int, int); static enum state ansi_cursor_motion(int, int); static enum state ansi_erase_in_display(int, int); static enum state ansi_erase_in_line(int, int); static enum state ansi_insert_lines(int, int); static enum state ansi_delete_lines(int, int); static enum state ansi_delete_chars(int, int); static enum state ansi_sgr(int, int); static enum state ansi_bell(int, int); static enum state ansi_newpage(int, int); static enum state ansi_backspace(int, int); static enum state ansi_cr(int, int); static enum state ansi_lf(int, int); static enum state ansi_htab(int, int); static enum state ansi_escape(int, int); static enum state ansi_nop(int, int); static enum state ansi_printing(int, int); static enum state ansi_semicolon(int, int); static enum state ansi_digit(int, int); static enum state ansi_reverse_index(int, int); static enum state ansi_send_attributes(int, int); static enum state ansi_set_mode(int, int); static enum state ansi_reset_mode(int, int); static enum state dec_return_terminal_id(int, int); static enum state ansi_status_report(int, int); static enum state ansi_cs_designate(int, int); static enum state ansi_esc3(int, int); static enum state dec_set(int, int); static enum state dec_reset(int, int); static enum state dec_save(int, int); static enum state dec_restore(int, int); static enum state dec_scrolling_region(int, int); static enum state xterm_text_mode(int, int); static enum state xterm_text_semicolon(int, int); static enum state xterm_text(int, int); static enum state xterm_text_do(int, int); static enum state ansi_htab_set(int, int); static enum state ansi_htab_clear(int, int); static enum state ansi_cs_designate2(int, int); static enum state ansi_select_g0(int, int); static enum state ansi_select_g1(int, int); static enum state ansi_select_g2(int, int); static enum state ansi_select_g3(int, int); static enum state ansi_one_g2(int, int); static enum state ansi_one_g3(int, int); static enum state ansi_multibyte(int, int); static enum state ansi_cursor_horizontal_absolute(int, int); static enum state ansi_vertical_position_absolute(int, int); static enum state ansi_gt(int, int); static enum state dec_secondary_device_attributes(int, int); typedef enum state (*afn_t)(int, int); static afn_t nvt_fn[] = { /* 0 */ &ansi_data_mode, /* 1 */ &dec_save_cursor, /* 2 */ &dec_restore_cursor, /* 3 */ &ansi_newline, /* 4 */ &ansi_cursor_up, /* 5 */ &ansi_esc2, /* 6 */ &ansi_reset, /* 7 */ &ansi_insert_chars, /* 8 */ &ansi_cursor_down, /* 9 */ &ansi_cursor_right, /* 10 */ &ansi_cursor_left, /* 11 */ &ansi_cursor_motion, /* 12 */ &ansi_erase_in_display, /* 13 */ &ansi_erase_in_line, /* 14 */ &ansi_insert_lines, /* 15 */ &ansi_delete_lines, /* 16 */ &ansi_delete_chars, /* 17 */ &ansi_sgr, /* 18 */ &ansi_bell, /* 19 */ &ansi_newpage, /* 20 */ &ansi_backspace, /* 21 */ &ansi_cr, /* 22 */ &ansi_lf, /* 23 */ &ansi_htab, /* 24 */ &ansi_escape, /* 25 */ &ansi_nop, /* 26 */ &ansi_printing, /* 27 */ &ansi_semicolon, /* 28 */ &ansi_digit, /* 29 */ &ansi_reverse_index, /* 30 */ &ansi_send_attributes, /* 31 */ &ansi_set_mode, /* 32 */ &ansi_reset_mode, /* 33 */ &dec_return_terminal_id, /* 34 */ &ansi_status_report, /* 35 */ &ansi_cs_designate, /* 36 */ &ansi_esc3, /* 37 */ &dec_set, /* 38 */ &dec_reset, /* 39 */ &dec_save, /* 40 */ &dec_restore, /* 41 */ &dec_scrolling_region, /* 42 */ &xterm_text_mode, /* 43 */ &xterm_text_semicolon, /* 44 */ &xterm_text, /* 45 */ &xterm_text_do, /* 46 */ &ansi_htab_set, /* 47 */ &ansi_htab_clear, /* 48 */ &ansi_cs_designate2, /* 49 */ &ansi_select_g0, /* 50 */ &ansi_select_g1, /* 51 */ &ansi_select_g2, /* 52 */ &ansi_select_g3, /* 53 */ &ansi_one_g2, /* 54 */ &ansi_one_g3, /* 55 */ &ansi_multibyte, /* 56 */ &ansi_cursor_horizontal_absolute, /* 57 */ &ansi_vertical_position_absolute, /* 58 */ &ansi_gt, /* 59 */ &dec_secondary_device_attributes, }; static unsigned char st[NUM_STATES][256] = { /* * State table for base processing (state == DATA) */ { /* 0 1 2 3 4 5 6 7 8 9 a b c d e f */ /* 00 */ Xx,Xx,Xx,Xx,Xx,Xx,Xx,BL,BS,HT,LF,LF,NP,CR,G1,G0, /* 10 */ Xx,Xx,Xx,Xx,Xx,Xx,Xx,Xx,Xx,Xx,Xx,E1,Xx,Xx,Xx,Xx, /* 20 */ Pc,Pc,Pc,Pc,Pc,Pc,Pc,Pc,Pc,Pc,Pc,Pc,Pc,Pc,Pc,Pc, /* 30 */ Pc,Pc,Pc,Pc,Pc,Pc,Pc,Pc,Pc,Pc,Pc,Pc,Pc,Pc,Pc,Pc, /* 40 */ Pc,Pc,Pc,Pc,Pc,Pc,Pc,Pc,Pc,Pc,Pc,Pc,Pc,Pc,Pc,Pc, /* 50 */ Pc,Pc,Pc,Pc,Pc,Pc,Pc,Pc,Pc,Pc,Pc,Pc,Pc,Pc,Pc,Pc, /* 60 */ Pc,Pc,Pc,Pc,Pc,Pc,Pc,Pc,Pc,Pc,Pc,Pc,Pc,Pc,Pc,Pc, /* 70 */ Pc,Pc,Pc,Pc,Pc,Pc,Pc,Pc,Pc,Pc,Pc,Pc,Pc,Pc,Pc,Xx, /* 80 */ Xx,Xx,Xx,Xx,Xx,Xx,Xx,Xx,Xx,Xx,Xx,Xx,Xx,Xx,Xx,Xx, /* 90 */ Xx,Xx,Xx,Xx,Xx,Xx,Xx,Xx,Xx,Xx,Xx,Xx,Xx,Xx,Xx,Xx, /* a0 */ Pc,Pc,Pc,Pc,Pc,Pc,Pc,Pc,Pc,Pc,Pc,Pc,Pc,Pc,Pc,Pc, /* b0 */ Pc,Pc,Pc,Pc,Pc,Pc,Pc,Pc,Pc,Pc,Pc,Pc,Pc,Pc,Pc,Pc, /* c0 */ Pc,Pc,Pc,Pc,Pc,Pc,Pc,Pc,Pc,Pc,Pc,Pc,Pc,Pc,Pc,Pc, /* d0 */ Pc,Pc,Pc,Pc,Pc,Pc,Pc,Pc,Pc,Pc,Pc,Pc,Pc,Pc,Pc,Pc, /* e0 */ Pc,Pc,Pc,Pc,Pc,Pc,Pc,Pc,Pc,Pc,Pc,Pc,Pc,Pc,Pc,Pc, /* f0 */ Pc,Pc,Pc,Pc,Pc,Pc,Pc,Pc,Pc,Pc,Pc,Pc,Pc,Pc,Pc,Pc }, /* * State table for ESC processing (state == ESC) */ { /* 0 1 2 3 4 5 6 7 8 9 a b c d e f */ /* 00 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 10 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 20 */ 0, 0, 0, 0, 0, 0, 0, 0,CS,CS,CS,CS, 0, 0, 0, 0, /* 30 */ 0, 0, 0, 0, 0, 0, 0,SC,RC, 0, 0, 0, 0, 0, 0, 0, /* 40 */ 0, 0, 0, 0, 0,NL, 0, 0,TS, 0, 0, 0, 0,RI,S2,S3, /* 50 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,E2, 0,TM, 0, 0, /* 60 */ 0, 0, 0,rS, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,G2,G3, /* 70 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 80 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 90 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* a0 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* b0 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* c0 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* d0 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* e0 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* f0 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, /* * State table for ESC ()*+ C processing (state == CSDES) */ { /* 0 1 2 3 4 5 6 7 8 9 a b c d e f */ /* 00 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 10 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 20 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 30 */ C2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 40 */ 0,C2,C2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 50 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 60 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 70 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 80 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 90 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* a0 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* b0 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* c0 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* d0 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* e0 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* f0 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, /* * State table for ESC [ processing (state == N1) */ { /* 0 1 2 3 4 5 6 7 8 9 a b c d e f */ /* 00 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 10 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 20 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 30 */ Dg,Dg,Dg,Dg,Dg,Dg,Dg,Dg,Dg,Dg, 0,Sc, 0, 0,GT,E3, /* 40 */ IC,UP,DN,RT,LT, 0, 0,CH,CM, 0,ED,EL,IL,DL, 0, 0, /* 50 */ DC, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 60 */ 0, 0, 0,DA,VP, 0,CM,TC,SM, 0, 0, 0,RM,SG,SR, 0, /* 70 */ 0, 0,SS, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 80 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 90 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* a0 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* b0 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* c0 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* d0 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* e0 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* f0 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, /* * State table for ESC [ ? processing (state == DECP) */ { /* 0 1 2 3 4 5 6 7 8 9 a b c d e f */ /* 00 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 10 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 20 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 30 */ Dg,Dg,Dg,Dg,Dg,Dg,Dg,Dg,Dg,Dg, 0, 0, 0, 0, 0, 0, /* 40 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 50 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 60 */ 0, 0, 0, 0, 0, 0, 0, 0,DS, 0, 0, 0,DR, 0, 0, 0, /* 70 */ 0, 0,DT,DV, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 80 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 90 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* a0 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* b0 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* c0 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* d0 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* e0 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* f0 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, /* * State table for ESC ] processing (state == TEXT) */ { /* 0 1 2 3 4 5 6 7 8 9 a b c d e f */ /* 00 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 10 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 20 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 30 */ Dg,Dg,Dg,Dg,Dg,Dg,Dg,Dg,Dg,Dg, 0,T2, 0, 0, 0, 0, /* 40 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 50 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 60 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 70 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 80 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 90 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* a0 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* b0 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* c0 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* d0 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* e0 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* f0 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, /* * State table for ESC ] n ; processing (state == TEXT2) */ { /* 0 1 2 3 4 5 6 7 8 9 a b c d e f */ /* 00 */ 0, 0, 0, 0, 0, 0, 0,TB, 0, 0, 0, 0, 0, 0, 0, 0, /* 10 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 20 */ TX,TX,TX,TX,TX,TX,TX,TX,TX,TX,TX,TX,TX,TX,TX,TX, /* 30 */ TX,TX,TX,TX,TX,TX,TX,TX,TX,TX,TX,TX,TX,TX,TX,TX, /* 40 */ TX,TX,TX,TX,TX,TX,TX,TX,TX,TX,TX,TX,TX,TX,TX,TX, /* 50 */ TX,TX,TX,TX,TX,TX,TX,TX,TX,TX,TX,TX,TX,TX,TX,TX, /* 60 */ TX,TX,TX,TX,TX,TX,TX,TX,TX,TX,TX,TX,TX,TX,TX,TX, /* 70 */ TX,TX,TX,TX,TX,TX,TX,TX,TX,TX,TX,TX,TX,TX,TX,Xx, /* 80 */ TX,TX,TX,TX,TX,TX,TX,TX,TX,TX,TX,TX,TX,TX,TX,TX, /* 90 */ TX,TX,TX,TX,TX,TX,TX,TX,TX,TX,TX,TX,TX,TX,TX,TX, /* a0 */ TX,TX,TX,TX,TX,TX,TX,TX,TX,TX,TX,TX,TX,TX,TX,TX, /* b0 */ TX,TX,TX,TX,TX,TX,TX,TX,TX,TX,TX,TX,TX,TX,TX,TX, /* c0 */ TX,TX,TX,TX,TX,TX,TX,TX,TX,TX,TX,TX,TX,TX,TX,TX, /* d0 */ TX,TX,TX,TX,TX,TX,TX,TX,TX,TX,TX,TX,TX,TX,TX,TX, /* e0 */ TX,TX,TX,TX,TX,TX,TX,TX,TX,TX,TX,TX,TX,TX,TX,TX, /* f0 */ TX,TX,TX,TX,TX,TX,TX,TX,TX,TX,TX,TX,TX,TX,TX,TX }, /* * State table for multi-byte characters (state == MBPEND) */ { /* 0 1 2 3 4 5 6 7 8 9 a b c d e f */ /* 00 */ MB,MB,MB,MB,MB,MB,MB,MB,MB,MB,MB,MB,MB,MB,MB,MB, /* 10 */ MB,MB,MB,MB,MB,MB,MB,MB,MB,MB,MB,MB,MB,MB,MB,MB, /* 20 */ MB,MB,MB,MB,MB,MB,MB,MB,MB,MB,MB,MB,MB,MB,MB,MB, /* 30 */ MB,MB,MB,MB,MB,MB,MB,MB,MB,MB,MB,MB,MB,MB,MB,MB, /* 40 */ MB,MB,MB,MB,MB,MB,MB,MB,MB,MB,MB,MB,MB,MB,MB,MB, /* 50 */ MB,MB,MB,MB,MB,MB,MB,MB,MB,MB,MB,MB,MB,MB,MB,MB, /* 60 */ MB,MB,MB,MB,MB,MB,MB,MB,MB,MB,MB,MB,MB,MB,MB,MB, /* 70 */ MB,MB,MB,MB,MB,MB,MB,MB,MB,MB,MB,MB,MB,MB,MB,MB, /* 80 */ MB,MB,MB,MB,MB,MB,MB,MB,MB,MB,MB,MB,MB,MB,MB,MB, /* 90 */ MB,MB,MB,MB,MB,MB,MB,MB,MB,MB,MB,MB,MB,MB,MB,MB, /* a0 */ MB,MB,MB,MB,MB,MB,MB,MB,MB,MB,MB,MB,MB,MB,MB,MB, /* b0 */ MB,MB,MB,MB,MB,MB,MB,MB,MB,MB,MB,MB,MB,MB,MB,MB, /* c0 */ MB,MB,MB,MB,MB,MB,MB,MB,MB,MB,MB,MB,MB,MB,MB,MB, /* d0 */ MB,MB,MB,MB,MB,MB,MB,MB,MB,MB,MB,MB,MB,MB,MB,MB, /* e0 */ MB,MB,MB,MB,MB,MB,MB,MB,MB,MB,MB,MB,MB,MB,MB,MB, /* f0 */ MB,MB,MB,MB,MB,MB,MB,MB,MB,MB,MB,MB,MB,MB,MB,MB }, /* * State table for ESC > processing (state == ESCGT) */ { /* 0 1 2 3 4 5 6 7 8 9 a b c d e f */ /* 00 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 10 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 20 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 30 */ Dg,Dg,Dg,Dg,Dg,Dg,Dg,Dg,Dg,Dg, 0, 0, 0, 0, 0, 0, /* 40 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 50 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 60 */ 0, 0, 0,D2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 70 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 80 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 90 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* a0 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* b0 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* c0 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* d0 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* e0 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* f0 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, }; /* Character sets. */ #define CS_G0 0 #define CS_G1 1 #define CS_G2 2 #define CS_G3 3 /* Character set designations. */ #define CSD_LD 0 #define CSD_UK 1 #define CSD_US 2 static int saved_cursor = 0; #define NN 20 static int n[NN], nx = 0; #define NT 256 static char text[NT + 1]; static int tx = 0; static int nvt_ch; static unsigned char gr = 0; static unsigned char saved_gr = 0; static unsigned char fg = 0; static unsigned char saved_fg = 0; static unsigned char bg = 0; static unsigned char saved_bg = 0; static int cset = CS_G0; static int saved_cset = CS_G0; static int csd[4] = { CSD_US, CSD_US, CSD_US, CSD_US }; static int saved_csd[4] = { CSD_US, CSD_US, CSD_US, CSD_US }; static int once_cset = -1; static int insert_mode = 0; static int auto_newline_mode = 0; static int appl_cursor = 0; static int saved_appl_cursor = 0; static int wraparound_mode = 1; static int saved_wraparound_mode = 1; static bool rev_wraparound_mode = false; static bool saved_rev_wraparound_mode = false; static int allow_wide_mode = 0; static int saved_allow_wide_mode = 0; static int wide_mode = 0; static int saved_wide_mode = 0; static bool saved_altbuffer = false; static int scroll_top = -1; static int scroll_bottom = -1; static unsigned char *tabs = (unsigned char *) NULL; static char gnnames[] = "()*+"; static char csnames[] = "0AB"; static int cs_to_change; static int pmi = 0; static char pending_mbs[MB_MAX]; static int pe = 0; static unsigned char ped[PE_MAX]; static bool cursor_enabled = false; static bool held_wrap = false; static void nvt_scroll(void); static enum state ansi_data_mode(int ig1 _is_unused, int ig2 _is_unused) { return DATA; } static enum state dec_save_cursor(int ig1 _is_unused, int ig2 _is_unused) { int i; saved_cursor = cursor_addr; saved_cset = cset; for (i = 0; i < 4; i++) { saved_csd[i] = csd[i]; } saved_fg = fg; saved_bg = bg; saved_gr = gr; return DATA; } static enum state dec_restore_cursor(int ig1 _is_unused, int ig2 _is_unused) { int i; cset = saved_cset; for (i = 0; i < 4; i++) { csd[i] = saved_csd[i]; } fg = saved_fg; bg = saved_bg; gr = saved_gr; cursor_move(saved_cursor); held_wrap = false; return DATA; } static enum state ansi_newline(int ig1 _is_unused, int ig2 _is_unused) { int nc; cursor_move(cursor_addr - (cursor_addr % COLS)); nc = cursor_addr + COLS; if (nc < scroll_bottom * COLS) { cursor_move(nc); } else { nvt_scroll(); } held_wrap = false; return DATA; } static enum state ansi_cursor_up(int nn, int ig2 _is_unused) { int rr; if (nn < 1) { nn = 1; } rr = cursor_addr / COLS; if (rr - nn < 0) { cursor_move(cursor_addr % COLS); } else { cursor_move(cursor_addr - (nn * COLS)); } held_wrap = false; return DATA; } static enum state ansi_esc2(int ig1 _is_unused, int ig2 _is_unused) { int i; for (i = 0; i < NN; i++) { n[i] = 0; } nx = 0; return N1; } static enum state ansi_reset(int ig1 _is_unused, int ig2 _is_unused) { int i; static bool first = true; gr = 0; saved_gr = 0; fg = 0; saved_fg = 0; bg = 0; saved_bg = 0; cset = CS_G0; saved_cset = CS_G0; csd[0] = csd[1] = csd[2] = csd[3] = CSD_US; saved_csd[0] = saved_csd[1] = saved_csd[2] = saved_csd[3] = CSD_US; once_cset = -1; saved_cursor = 0; cursor_enabled = true; insert_mode = 0; auto_newline_mode = 0; appl_cursor = 0; saved_appl_cursor = 0; wraparound_mode = 1; saved_wraparound_mode = 1; rev_wraparound_mode = false; saved_rev_wraparound_mode = false; allow_wide_mode = 0; saved_allow_wide_mode = 0; wide_mode = 0; allow_wide_mode = 0; saved_altbuffer = false; scroll_top = 1; scroll_bottom = ROWS; Replace(tabs, (unsigned char *)Malloc((COLS+7)/8)); for (i = 0; i < (COLS+7)/8; i++) { tabs[i] = 0x01; } held_wrap = false; if (!first) { ctlr_altbuffer(true); ctlr_aclear(0, ROWS * COLS, 1); ctlr_altbuffer(false); ctlr_clear(false); screen_80(); ctlr_enable_cursor(true, EC_NVT); } first = false; pmi = 0; return DATA; } static enum state ansi_insert_chars(int nn, int ig2 _is_unused) { int cc = cursor_addr % COLS; /* current col */ int mc = COLS - cc; /* max chars that can be inserted */ int ns; /* chars that are shifting */ if (nn < 1) { nn = 1; } if (nn > mc) { nn = mc; } /* Move the surviving chars right */ ns = mc - nn; if (ns) { ctlr_bcopy(cursor_addr, cursor_addr + nn, ns, 1); } /* Clear the middle of the line */ ctlr_aclear(cursor_addr, nn, 1); return DATA; } static enum state ansi_cursor_down(int nn, int ig2 _is_unused) { int rr; if (nn < 1) { nn = 1; } rr = cursor_addr / COLS; if (rr + nn >= ROWS) { cursor_move((ROWS-1)*COLS + (cursor_addr%COLS)); } else { cursor_move(cursor_addr + (nn * COLS)); } held_wrap = false; return DATA; } static enum state ansi_cursor_right(int nn, int ig2 _is_unused) { int cc; if (nn < 1) { nn = 1; } cc = cursor_addr % COLS; if (cc == COLS-1) { return DATA; } if (cc + nn >= COLS) { nn = COLS - 1 - cc; } cursor_move(cursor_addr + nn); held_wrap = false; return DATA; } static enum state ansi_cursor_left(int nn, int ig2 _is_unused) { int cc; if (held_wrap) { held_wrap = false; return DATA; } if (nn < 1) { nn = 1; } cc = cursor_addr % COLS; if (!cc) { return DATA; } if (nn > cc) { nn = cc; } cursor_move(cursor_addr - nn); return DATA; } static enum state ansi_cursor_motion(int n1, int n2) { if (n1 < 1) { n1 = 1; } if (n1 > ROWS) { n1 = ROWS; } if (n2 < 1) { n2 = 1; } if (n2 > COLS) { n2 = COLS; } cursor_move((n1 - 1) * COLS + (n2 - 1)); held_wrap = false; return DATA; } static enum state ansi_cursor_horizontal_absolute(int n1, int n2 _is_unused) { if (n1 < 1) { n1 = 1; } if (n1 > COLS) { n1 = COLS; } cursor_move((cursor_addr / COLS) * COLS + (n1 - 1)); held_wrap = false; return DATA; } static enum state ansi_vertical_position_absolute(int n1, int n2 _is_unused) { if (n1 < 1) { n1 = 1; } if (n1 > ROWS) { n1 = ROWS; } cursor_move(((n1 - 1) * COLS) + (cursor_addr % COLS)); held_wrap = false; return DATA; } static enum state ansi_erase_in_display(int nn, int ig2 _is_unused) { switch (nn) { case 0: /* below */ ctlr_aclear(cursor_addr, (ROWS * COLS) - cursor_addr, 1); break; case 1: /* above */ ctlr_aclear(0, cursor_addr + 1, 1); break; case 2: /* all (without moving cursor) */ if (cursor_addr == 0 && !is_altbuffer) { scroll_save(ROWS); } ctlr_aclear(0, ROWS * COLS, 1); break; } return DATA; } static enum state ansi_erase_in_line(int nn, int ig2 _is_unused) { int nc = cursor_addr % COLS; switch (nn) { case 0: /* to right */ ctlr_aclear(cursor_addr, COLS - nc, 1); break; case 1: /* to left */ ctlr_aclear(cursor_addr - nc, nc+1, 1); break; case 2: /* all */ ctlr_aclear(cursor_addr - nc, COLS, 1); break; } return DATA; } static enum state ansi_insert_lines(int nn, int ig2 _is_unused) { int rr = cursor_addr / COLS; /* current row */ int mr = scroll_bottom - rr; /* rows left at and below this one */ int ns; /* rows that are shifting */ /* If outside of the scrolling region, do nothing */ if (rr < scroll_top - 1 || rr >= scroll_bottom) { return DATA; } if (nn < 1) { nn = 1; } if (nn > mr) { nn = mr; } /* Move the victims down */ ns = mr - nn; if (ns) { ctlr_bcopy(rr * COLS, (rr + nn) * COLS, ns * COLS, 1); } /* Clear the middle of the screen */ ctlr_aclear(rr * COLS, nn * COLS, 1); return DATA; } static enum state ansi_delete_lines(int nn, int ig2 _is_unused) { int rr = cursor_addr / COLS; /* current row */ int mr = scroll_bottom - rr; /* max rows that can be deleted */ int ns; /* rows that are shifting */ /* If outside of the scrolling region, do nothing */ if (rr < scroll_top - 1 || rr >= scroll_bottom) { return DATA; } if (nn < 1) { nn = 1; } if (nn > mr) { nn = mr; } /* Move the surviving rows up */ ns = mr - nn; if (ns) { ctlr_bcopy((rr + nn) * COLS, rr * COLS, ns * COLS, 1); } /* Clear the rest of the screen */ ctlr_aclear((rr + ns) * COLS, nn * COLS, 1); return DATA; } static enum state ansi_delete_chars(int nn, int ig2 _is_unused) { int cc = cursor_addr % COLS; /* current col */ int mc = COLS - cc; /* max chars that can be deleted */ int ns; /* chars that are shifting */ if (nn < 1) { nn = 1; } if (nn > mc) { nn = mc; } /* Move the surviving chars left */ ns = mc - nn; if (ns) { ctlr_bcopy(cursor_addr + nn, cursor_addr, ns, 1); } /* Clear the end of the line */ ctlr_aclear(cursor_addr + ns, nn, 1); return DATA; } static enum state ansi_sgr(int ig1 _is_unused, int ig2 _is_unused) { int i; for (i = 0; i <= nx && i < NN; i++) { switch (n[i]) { case 0: gr = 0; fg = 0; bg = 0; break; case 1: gr |= GR_INTENSIFY; break; case 4: gr |= GR_UNDERLINE; break; case 5: gr |= GR_BLINK; break; case 7: gr |= GR_REVERSE; break; case 30: fg = 0xf0; /* black -> neutral black */ break; case 31: fg = 0xf2; /* red -> red */ break; case 32: fg = 0xf4; /* green -> green */ break; case 33: fg = 0xf6; /* yellow -> yellow */ break; case 34: fg = 0xf1; /* blue -> blue */ break; case 35: fg = 0xf3; /* magenta -> pink */ break; case 36: fg = 0xf5; /* cyan -> turquiose */ break; case 37: fg = 0xf7; /* white -> neutral white */ break; case 39: fg = 0; /* default */ break; case 40: bg = 0xf0; /* black -> neutral black */ break; case 41: bg = 0xf2; /* red -> red */ break; case 42: bg = 0xf4; /* green -> green */ break; case 43: bg = 0xf6; /* yellow -> yellow */ break; case 44: bg = 0xf1; /* blue -> blue */ break; case 45: bg = 0xf3; /* magenta -> pink */ break; case 46: bg = 0xf5; /* cyan -> turquoise */ break; case 47: bg = 0xf7; /* white -> neutral white */ break; case 49: bg = 0; /* default */ break; } } return DATA; } static enum state ansi_bell(int ig1 _is_unused, int ig2 _is_unused) { ring_bell(); return DATA; } static enum state ansi_newpage(int ig1 _is_unused, int ig2 _is_unused) { ctlr_clear(false); return DATA; } static enum state ansi_backspace(int ig1 _is_unused, int ig2 _is_unused) { if (held_wrap) { held_wrap = false; return DATA; } if (rev_wraparound_mode) { if (cursor_addr > (scroll_top - 1) * COLS) { cursor_move(cursor_addr - 1); } } else { if (cursor_addr % COLS) { cursor_move(cursor_addr - 1); } } return DATA; } static enum state ansi_cr(int ig1 _is_unused, int ig2 _is_unused) { if (cursor_addr % COLS) { cursor_move(cursor_addr - (cursor_addr % COLS)); } if (auto_newline_mode) { ansi_lf(0, 0); } held_wrap = false; return DATA; } static enum state ansi_lf(int ig1 _is_unused, int ig2 _is_unused) { int nc = cursor_addr + COLS; held_wrap = false; /* If we're below the scrolling region, don't scroll. */ if ((cursor_addr / COLS) >= scroll_bottom) { if (nc < ROWS * COLS) { cursor_move(nc); } return DATA; } if (nc < scroll_bottom * COLS) { cursor_move(nc); } else { nvt_scroll(); } return DATA; } static enum state ansi_htab(int ig1 _is_unused, int ig2 _is_unused) { int col = cursor_addr % COLS; int i; held_wrap = false; if (col == COLS - 1) { return DATA; } for (i = col + 1; i < COLS - 1; i++) { if (tabs[i / 8] & 1 << (i % 8)) { break; } } cursor_move(cursor_addr - col + i); return DATA; } static enum state ansi_escape(int ig1 _is_unused, int ig2 _is_unused) { return ESC; } static enum state ansi_nop(int ig1 _is_unused, int ig2 _is_unused) { return DATA; } #define PWRAP { \ if ((cursor_addr % COLS) == COLS - 1) { \ ctlr_add_gr(cursor_addr, ea_buf[cursor_addr].gr | GR_WRAP); \ } \ nc = cursor_addr + 1; \ if (nc < scroll_bottom * COLS) { \ cursor_move(nc); \ } else { \ if (cursor_addr / COLS >= scroll_bottom) { \ cursor_move(cursor_addr / COLS * COLS); \ } else { \ nvt_scroll(); \ cursor_move(nc - COLS); \ } \ } \ } static enum state ansi_printing(int ig1 _is_unused, int ig2 _is_unused) { int nc; enum dbcs_state d; int xcset; if ((pmi == 0) && (nvt_ch & 0x80)) { char mbs[2]; int consumed; enum me_fail fail; unsigned long ucs4; mbs[0] = (char)nvt_ch; mbs[1] = '\0'; ucs4 = multibyte_to_unicode(mbs, 1, &consumed, &fail); if (ucs4 == 0) { switch (fail) { case ME_SHORT: /* Start munching multi-byte. */ pmi = 0; pending_mbs[pmi++] = (char)nvt_ch; return MBPEND; case ME_INVALID: default: /* Invalid multi-byte -> '?' */ nvt_ch = '?'; break; } } else { nvt_ch = ucs4; } } pmi = 0; if (held_wrap) { PWRAP; held_wrap = false; } if (insert_mode) { ansi_insert_chars(1, 0); } d = ctlr_dbcs_state(cursor_addr); xcset = csd[(once_cset != -1) ? once_cset : cset]; if (xcset == CSD_LD && nvt_ch >= 0x5f && nvt_ch <= 0x7e) { ctlr_add_nvt(cursor_addr, (unsigned char)(nvt_ch - 0x5f), CS_LINEDRAW); } else if (xcset == CSD_UK && nvt_ch == '#') { ctlr_add_nvt(cursor_addr, 0x1e, CS_LINEDRAW); } else { if (IS_UNICODE_DBCS(nvt_ch)) { /* Get past the last column. */ if ((cursor_addr % COLS) == (COLS - 1)) { if (!wraparound_mode) { return DATA; } ctlr_add_nvt(cursor_addr, ' ', CS_BASE); ctlr_add_gr(cursor_addr, gr); ctlr_add_fg(cursor_addr, fg); ctlr_add_bg(cursor_addr, bg); cursor_addr = cursor_addr + 1; d = ctlr_dbcs_state(cursor_addr); } /* Add the left half. */ ctlr_add_nvt(cursor_addr, nvt_ch, CS_DBCS); ctlr_add_gr(cursor_addr, gr); ctlr_add_fg(cursor_addr, fg); ctlr_add_bg(cursor_addr, bg); /* Handle unaligned DBCS overwrite. */ if (d == DBCS_RIGHT || d == DBCS_RIGHT_WRAP) { int xaddr; xaddr = cursor_addr; DEC_BA(xaddr); ctlr_add_nvt(xaddr, ' ', CS_BASE); ea_buf[xaddr].db = DBCS_NONE; } /* Add the right half. */ INC_BA(cursor_addr); ctlr_add_nvt(cursor_addr, ' ', CS_DBCS); ctlr_add_gr(cursor_addr, gr); ctlr_add_fg(cursor_addr, fg); ctlr_add_bg(cursor_addr, bg); /* Handle cursor wrap. */ if (wraparound_mode) { if (!((cursor_addr + 1) % COLS)) { held_wrap = true; } else { PWRAP; } } else { if ((cursor_addr % COLS) != (COLS - 1)) { cursor_move(cursor_addr + 1); } } ctlr_dbcs_postprocess(); return DATA; } else { /* Add an SBCS character to the buffer. */ ctlr_add_nvt(cursor_addr, nvt_ch, CS_BASE); } } /* Handle conflicts with existing DBCS characters. */ if (d == DBCS_RIGHT || d == DBCS_RIGHT_WRAP) { int xaddr; xaddr = cursor_addr; DEC_BA(xaddr); ctlr_add_nvt(xaddr, ' ', CS_BASE); ea_buf[xaddr].db = DBCS_NONE; ea_buf[cursor_addr].db = DBCS_NONE; ctlr_dbcs_postprocess(); } if (d == DBCS_LEFT || d == DBCS_LEFT_WRAP) { int xaddr; xaddr = cursor_addr; INC_BA(xaddr); ctlr_add_nvt(xaddr, ' ', CS_BASE); ea_buf[xaddr].db = DBCS_NONE; ea_buf[cursor_addr].db = DBCS_NONE; ctlr_dbcs_postprocess(); } once_cset = -1; ctlr_add_gr(cursor_addr, gr); ctlr_add_fg(cursor_addr, fg); ctlr_add_bg(cursor_addr, bg); if (wraparound_mode) { /* * There is a fascinating behavior of xterm which we will * attempt to emulate here. When a character is printed in the * last column, the cursor sticks there, rather than wrapping * to the next line. Another printing character will put the * cursor in column 2 of the next line. One cursor-left * sequence won't budge it; two will. Saving and restoring * the cursor won't move the cursor, but will cancel all of * the above behaviors... * * In my opinion, very strange, but among other things, 'vi' * depends on it! */ if (!((cursor_addr + 1) % COLS)) { held_wrap = true; } else { PWRAP; } } else { if ((cursor_addr % COLS) != (COLS - 1)) { cursor_move(cursor_addr + 1); } } return DATA; } static enum state ansi_multibyte(int ig1, int ig2) { unsigned long ucs4; int consumed; enum me_fail fail; afn_t fn; if (pmi >= MB_MAX - 2) { /* String too long. */ pmi = 0; nvt_ch = '?'; return ansi_printing(ig1, ig2); } pending_mbs[pmi++] = (char)nvt_ch; pending_mbs[pmi] = '\0'; ucs4 = multibyte_to_unicode(pending_mbs, pmi, &consumed, &fail); if (ucs4 != 0) { /* Success! */ nvt_ch = ucs4; return ansi_printing(ig1, ig2); } if (fail == ME_SHORT) { /* Go get more. */ return MBPEND; } /* Failure. */ /* Replace the sequence with '?'. */ ucs4 = nvt_ch; /* save for later */ pmi = 0; nvt_ch = '?'; ansi_printing(ig1, ig2); /* * Reprocess whatever we choked on (especially if it's a control * character). */ nvt_ch = ucs4; state = DATA; fn = nvt_fn[st[(int)DATA][nvt_ch]]; return (*fn)(n[0], n[1]); } static enum state ansi_semicolon(int ig1 _is_unused, int ig2 _is_unused) { if (nx >= NN) { return DATA; } nx++; return state; } static enum state ansi_digit(int ig1 _is_unused, int ig2 _is_unused) { n[nx] = (n[nx] * 10) + (nvt_ch - '0'); return state; } static enum state ansi_reverse_index(int ig1 _is_unused, int ig2 _is_unused) { int rr = cursor_addr / COLS; /* current row */ int np = (scroll_top - 1) - rr; /* number of rows in the scrolling region, above this line */ int ns; /* number of rows to scroll */ int nn = 1; /* number of rows to index */ held_wrap = false; /* If the cursor is above the scrolling region, do a simple margined cursor up. */ if (np < 0) { ansi_cursor_up(nn, 0); return DATA; } /* Split the number of lines to scroll into ns */ if (nn > np) { ns = nn - np; nn = np; } else { ns = 0; } /* Move the cursor up without scrolling */ if (nn) { ansi_cursor_up(nn, 0); } /* Insert lines at the top for backward scroll */ if (ns) { ansi_insert_lines(ns, 0); } return DATA; } static enum state ansi_send_attributes(int nn, int ig2 _is_unused) { if (!nn) { net_sends("\033[?1;2c"); } return DATA; } static enum state dec_return_terminal_id(int ig1 _is_unused, int ig2 _is_unused) { return ansi_send_attributes(0, 0); } static enum state dec_secondary_device_attributes(int ig1 _is_unused, int ig2 _is_unused) { /* Don't respond. It can trigger all sorts of additional chatter. */ /* net_sends("\033[>0;3270;0c"); */ return DATA; } static enum state ansi_set_mode(int nn, int ig2 _is_unused) { switch (nn) { case 4: insert_mode = 1; break; case 20: auto_newline_mode = 1; break; } return DATA; } static enum state ansi_reset_mode(int nn, int ig2 _is_unused) { switch (nn) { case 4: insert_mode = 0; break; case 20: auto_newline_mode = 0; break; } return DATA; } static enum state ansi_status_report(int nn, int ig2 _is_unused) { char *s; switch (nn) { case 5: net_sends("\033[0n"); break; case 6: s = xs_buffer("\033[%d;%dR", (cursor_addr/COLS) + 1, (cursor_addr%COLS) + 1); net_sends(s); Free(s); break; } return DATA; } static enum state ansi_cs_designate(int ig1 _is_unused, int ig2 _is_unused) { cs_to_change = (int)(strchr(gnnames, nvt_ch) - gnnames); return CSDES; } static enum state ansi_cs_designate2(int ig1 _is_unused, int ig2 _is_unused) { csd[cs_to_change] = (int)(strchr(csnames, nvt_ch) - csnames); return DATA; } static enum state ansi_select_g0(int ig1 _is_unused, int ig2 _is_unused) { cset = CS_G0; return DATA; } static enum state ansi_select_g1(int ig1 _is_unused, int ig2 _is_unused) { cset = CS_G1; return DATA; } static enum state ansi_select_g2(int ig1 _is_unused, int ig2 _is_unused) { cset = CS_G2; return DATA; } static enum state ansi_select_g3(int ig1 _is_unused, int ig2 _is_unused) { cset = CS_G3; return DATA; } static enum state ansi_one_g2(int ig1 _is_unused, int ig2 _is_unused) { once_cset = CS_G2; return DATA; } static enum state ansi_one_g3(int ig1 _is_unused, int ig2 _is_unused) { once_cset = CS_G3; return DATA; } static enum state ansi_esc3(int ig1 _is_unused, int ig2 _is_unused) { return DECP; } static enum state dec_set(int ig1 _is_unused, int ig2 _is_unused) { int i; for (i = 0; i <= nx && i < NN; i++) switch (n[i]) { case 1: /* application cursor keys */ appl_cursor = 1; break; case 2: /* set G0-G3 */ csd[0] = csd[1] = csd[2] = csd[3] = CSD_US; break; case 3: /* 132-column mode */ if (allow_wide_mode) { wide_mode = 1; screen_132(); } break; case 7: /* wraparound mode */ wraparound_mode = 1; break; case 25: /* cursor */ cursor_enabled = true; ctlr_enable_cursor(true, EC_NVT); break; case 40: /* allow 80/132 switching */ allow_wide_mode = 1; break; case 45: /* reverse-wraparound mode */ rev_wraparound_mode = true; break; case 47: /* alt buffer */ case 1049: ctlr_altbuffer(true); break; } return DATA; } static enum state dec_reset(int ig1 _is_unused, int ig2 _is_unused) { int i; for (i = 0; i <= nx && i < NN; i++) { switch (n[i]) { case 1: /* normal cursor keys */ appl_cursor = 0; break; case 3: /* 132-column mode */ if (allow_wide_mode) { wide_mode = 0; screen_80(); } break; case 7: /* no wraparound mode */ wraparound_mode = 0; break; case 25: /* cursor */ cursor_enabled = false; ctlr_enable_cursor(false, EC_NVT); break; case 40: /* allow 80/132 switching */ allow_wide_mode = 0; break; case 45: /* no reverse-wraparound mode */ rev_wraparound_mode = false; break; case 47: /* alt buffer */ case 1049: ctlr_altbuffer(false); break; } } return DATA; } static enum state dec_save(int ig1 _is_unused, int ig2 _is_unused) { int i; for (i = 0; i <= nx && i < NN; i++) { switch (n[i]) { case 1: /* application cursor keys */ saved_appl_cursor = appl_cursor; break; case 3: /* 132-column mode */ saved_wide_mode = wide_mode; break; case 7: /* wraparound mode */ saved_wraparound_mode = wraparound_mode; break; case 40: /* allow 80/132 switching */ saved_allow_wide_mode = allow_wide_mode; break; case 45: /* reverse-wraparound mode */ saved_rev_wraparound_mode = rev_wraparound_mode; break; case 47: /* alt buffer */ case 1049: saved_altbuffer = is_altbuffer; break; } } return DATA; } static enum state dec_restore(int ig1 _is_unused, int ig2 _is_unused) { int i; for (i = 0; i <= nx && i < NN; i++) { switch (n[i]) { case 1: /* application cursor keys */ appl_cursor = saved_appl_cursor; break; case 3: /* 132-column mode */ if (allow_wide_mode) { wide_mode = saved_wide_mode; if (wide_mode) { screen_132(); } else { screen_80(); } } break; case 7: /* wraparound mode */ wraparound_mode = saved_wraparound_mode; break; case 40: /* allow 80/132 switching */ allow_wide_mode = saved_allow_wide_mode; break; case 45: /* reverse-wraparound mode */ rev_wraparound_mode = saved_rev_wraparound_mode; break; case 47: /* alt buffer */ case 1049: /* alt buffer */ ctlr_altbuffer(saved_altbuffer); break; } } return DATA; } static enum state dec_scrolling_region(int top, int bottom) { if (top < 1) { top = 1; } if (bottom > ROWS) { bottom = ROWS; } if (top <= bottom && (top > 1 || bottom < ROWS)) { scroll_top = top; scroll_bottom = bottom; cursor_move(0); } else { scroll_top = 1; scroll_bottom = ROWS; } return DATA; } static enum state xterm_text_mode(int ig1 _is_unused, int ig2 _is_unused) { nx = 0; n[0] = 0; return TEXT; } static enum state xterm_text_semicolon(int ig1 _is_unused, int ig2 _is_unused) { tx = 0; return TEXT2; } static enum state xterm_text(int ig1 _is_unused, int ig2 _is_unused) { if (tx < NT) { text[tx++] = nvt_ch; } return state; } static enum state xterm_text_do(int ig1 _is_unused, int ig2 _is_unused) { net_nvt_break(); text[tx] = '\0'; xterm_text_gui(n[0], text); return DATA; } static enum state ansi_htab_set(int ig1 _is_unused, int ig2 _is_unused) { int col = cursor_addr % COLS; tabs[col / 8] |= 1 << (col % 8); return DATA; } static enum state ansi_htab_clear(int nn, int ig2 _is_unused) { int col, i; switch (nn) { case 0: col = cursor_addr % COLS; tabs[col / 8] &= ~(1 << (col % 8)); break; case 3: for (i = 0; i < (COLS + 7) / 8; i++) { tabs[i] = 0; } break; } return DATA; } static enum state ansi_gt(int ig1 _is_unused, int ig2 _is_unused) { return ESCGT; } /* * Scroll the screen or the scrolling region. */ static void nvt_scroll(void) { held_wrap = false; /* Save the top line */ if (scroll_top == 1 && scroll_bottom == ROWS) { if (!is_altbuffer) { scroll_save(1); } ctlr_scroll(fg, bg); return; } /* Scroll all but the last line up */ if (scroll_bottom > scroll_top) { ctlr_bcopy(scroll_top * COLS, (scroll_top - 1) * COLS, (scroll_bottom - scroll_top) * COLS, 1); } /* Clear the last line */ ctlr_aclear((scroll_bottom - 1) * COLS, COLS, 1); } /* Callback for when we enter NVT mode. */ static void nvt_in3270(bool in3270) { if (in3270) { /* * When switching to 3270 mode, clean up our external effects: * cursor disable and alternate buffer. */ if (!cursor_enabled) { cursor_enabled = true; ctlr_enable_cursor(true, EC_NVT); } ctlr_altbuffer(false); } else { ansi_reset(0, 0); } } /* Callback for when we change connection state. */ static void nvt_connect(bool connected) { if (cursor_enabled != CONNECTED) { cursor_enabled = CONNECTED; ctlr_enable_cursor(cursor_enabled, EC_NVT); } } /* * External entry points */ void nvt_process(unsigned int c) { afn_t fn; c &= 0xff; nvt_ch = c; scroll_to_bottom(); if (toggled(SCREEN_TRACE)) { trace_char((char)c); } fn = nvt_fn[st[(int)state][c]]; state = (*fn)(n[0], n[1]); /* Saving pending escape data. */ if (state == DATA) { pe = 0; } else if (pe < PE_MAX) { ped[pe++] = c; } /* Let a blocked task go. */ task_store(c); task_host_output(); } void nvt_send_up(void) { if (appl_cursor) { net_sends("\033OA"); } else { net_sends("\033[A"); } } void nvt_send_down(void) { if (appl_cursor) { net_sends("\033OB"); } else { net_sends("\033[B"); } } void nvt_send_right(void) { if (appl_cursor) { net_sends("\033OC"); } else { net_sends("\033[C"); } } void nvt_send_left(void) { if (appl_cursor) { net_sends("\033OD"); } else { net_sends("\033[D"); } } void nvt_send_home(void) { net_sends("\033[H"); } void nvt_send_clear(void) { net_sends("\033[2K"); } void nvt_send_pf(int nn) { char *s; static int code[] = { /* * F1 through F12 are VT220 codes. (Note the discontinuity -- * \E[16~ is missing) */ 11, 12, 13, 14, 15, 17, 18, 19, 20, 21, 23, 24, /* * F13 through F20 are defined for xterm. */ 25, 26, 28, 29, 31, 32, 33, 34, /* * F21 through F24 are x3270 extensions. */ 35, 36, 37, 38 }; if (nn < 1 || (unsigned)nn > sizeof(code)/sizeof(code[0])) { return; } if (nn <= 4) { /* xterm sends PF codes instead of F codes for F1..F4. */ nvt_send_pa(nn); return; } s = xs_buffer("\033[%d~", code[nn-1]); net_sends(s); Free(s); } void nvt_send_pa(int nn) { char *s; static char code[4] = { 'P', 'Q', 'R', 'S' }; if (nn < 1 || nn > 4) { return; } s = xs_buffer("\033O%c", code[nn-1]); net_sends(s); Free(s); } static void toggle_lineWrap(toggle_index_t ix _is_unused, enum toggle_type type _is_unused) { if (toggled(LINE_WRAP)) { wraparound_mode = 1; } else { wraparound_mode = 0; } } /* Emit an SGR command. */ static void emit_sgr(int mode) { space3270out((mode < 10)? 4: 5); *obptr++ = 0x1b; *obptr++ = '['; if (mode > 9) { *obptr++ = '0' + (mode / 10); } *obptr++ = '0' + (mode % 10); *obptr++ = 'm'; } /* Emit a DEC Private Mode command. */ static void emit_decpriv(int mode, char op) { space3270out((mode < 10)? 5: 6); *obptr++ = 0x1b; *obptr++ = '['; *obptr++ = '?'; if (mode > 9) { *obptr++ = '0' + (mode / 10); } *obptr++ = '0' + (mode % 10); *obptr++ = op; } /* Emit a CUP (cursor position) command. */ static void emit_cup(int baddr) { if (baddr) { char *s; size_t sl; s = xs_buffer("\033[%d;%dH", (baddr / COLS) + 1, (baddr % COLS) + 1); sl = strlen(s); space3270out(sl); strcpy((char *)obptr, s); Free(s); obptr += sl; } else { space3270out(3); *obptr++ = 0x1b; *obptr++ = '['; *obptr++ = 'H'; } } /* Emit spaces or a CUP, whichever is shorter. */ static int ansi_dump_spaces(size_t spaces, int baddr) { char *s; size_t sl; if (!spaces) { return 0; } /* * Move the cursor, if it takes less space than * expanding the spaces. * It is possible to optimize this further with clever * CU[UDFB] sequences, but not (yet) worth the effort. */ s = xs_buffer("\033[%d;%dH", (baddr / COLS) + 1, (baddr % COLS) + 1); sl = strlen(s); if (sl < spaces) { space3270out(sl); strcpy((char *)obptr, s); obptr += sl; } else { space3270out(spaces); while (spaces--) { *obptr++ = ' '; } } Free(s); return 0; } /* * Snap the provided screen buffer (primary or alternate). * This is (mostly) optimized to draw the minimum necessary, assuming a * blank screen. */ static void nvt_snap_one(struct ea *buf) { int baddr; int cur_gr = 0; int cur_fg = 0; int cur_bg = 0; int spaces = 0; static int uncolor_table[16] = { /* 0xf0 */ 0, /* neutral black -> black */ /* 0xf1 */ 4, /* blue -> blue */ /* 0xf2 */ 1, /* red -> red */ /* 0xf3 */ 5, /* pink -> magenta */ /* 0xf4 */ 2, /* green -> green */ /* 0xf5 */ 6, /* turquoise -> cyan */ /* 0xf6 */ 3, /* yellow -> yellow */ /* 0xf7 */ 7, /* neutral white -> white */ /* 0xf8 */ 0, /* (shouldn't happen) */ /* 0xf9 */ 0, /* (shouldn't happen) */ /* 0xfa */ 0, /* (shouldn't happen) */ /* 0xfb */ 0, /* (shouldn't happen) */ /* 0xfc */ 0, /* (shouldn't happen) */ /* 0xfd */ 0, /* (shouldn't happen) */ /* 0xfe */ 0, /* (shouldn't happen) */ /* 0xff */ 0 /* (shouldn't happen) */ }; char mb[16]; size_t len; int xlen; size_t i; enum dbcs_state d; ucs4_t u; int c; int last_sgr = 0; # define EMIT_SGR(n) { emit_sgr(n); last_sgr = (n); } /* Draw what's on the screen. */ baddr = 0; do { int xgr = buf[baddr].gr; /* Set the attributes. */ if (xgr != cur_gr) { spaces = ansi_dump_spaces(spaces, baddr); if ((xgr ^ cur_gr) & cur_gr) { /* * Something turned off. Turn everything off, * then turn the remaining modes on below. */ EMIT_SGR(0); xgr = 0; } else { /* * Clear the bits in xgr that are already set * in cur_gr. Turn on the new modes. */ xgr &= ~cur_gr; } /* Turn on the attributes remaining in xgr. */ if (xgr & GR_INTENSIFY) { EMIT_SGR(1); } if (xgr & GR_UNDERLINE) { EMIT_SGR(4); } if (xgr & GR_BLINK) { EMIT_SGR(5); } if (xgr & GR_REVERSE) { EMIT_SGR(7); } cur_gr = buf[baddr].gr; } /* Set the colors. */ if (buf[baddr].fg != cur_fg) { spaces = ansi_dump_spaces(spaces, baddr); if (buf[baddr].fg) { c = uncolor_table[buf[baddr].fg & 0x0f]; } else { c = 9; } EMIT_SGR(30 + c); cur_fg = buf[baddr].fg; } if (buf[baddr].bg != cur_bg) { spaces = ansi_dump_spaces(spaces, baddr); if (buf[baddr].bg) { c = uncolor_table[buf[baddr].bg & 0x0f]; } else { c = 9; } EMIT_SGR(40 + c); cur_bg = buf[baddr].bg; } /* Expand the current character to multibyte. */ d = ctlr_dbcs_state(baddr); if (is_nvt(&buf[baddr], false, &u)) { if (!IS_RIGHT(d)) { len = unicode_to_multibyte(u, mb, sizeof(mb)); } else { len = 0; } } else { if (IS_LEFT(d)) { int xaddr = baddr; INC_BA(xaddr); len = ebcdic_to_multibyte(buf[baddr].ec << 8 | buf[xaddr].ec, mb, sizeof(mb)); } else if (IS_RIGHT(d)) { len = 0; } else { len = ebcdic_to_multibyte(buf[baddr].ec, mb, sizeof(mb)); } } if (len > 0) { len--; /* terminating NUL */ } xlen = 0; for (i = 0; i < len; i++) { if ((mb[i] & 0xff) == 0xff) { xlen++; } } /* Optimize for white space. */ if (!cur_fg && !cur_bg && !cur_gr && ((len + xlen) == 1) && (mb[0] == ' ')) { spaces++; } else { if (spaces) { spaces = ansi_dump_spaces(spaces, baddr); } /* Emit the current character. */ space3270out(len + xlen); for (i = 0; i < len; i++) { if ((mb[i] & 0xff) == 0xff) { *obptr++ = 0xff; } *obptr++ = mb[i]; } } INC_BA(baddr); } while (baddr != 0); /* Remove any attributes we set above. */ if (last_sgr != 0) { emit_sgr(0); } } /* Snap the contents of the screen buffers in NVT mode. */ void nvt_snap(void) { /* * Note that ea_buf is the live buffer, and aea_buf is the other * buffer. So the task here is to draw the other buffer first, * then switch modes and draw the live one. */ if (is_altbuffer) { /* Draw the primary screen first. */ nvt_snap_one(aea_buf); emit_cup(0); /* Switch to the alternate. */ emit_decpriv(47, 'h'); /* Draw the secondary, and stay in alternate mode. */ nvt_snap_one(ea_buf); } else { int i; int any = 0; static struct ea zea = { 0, 0, 0, 0, 0, 0, 0, 0 }; /* See if aea_buf has anything in it. */ for (i = 0; i < ROWS * COLS; i++) { if (memcmp(&aea_buf[i], &zea, sizeof(struct ea))) { any = 1; break; } } if (any) { /* Switch to the alternate. */ emit_decpriv(47, 'h'); /* Draw the alternate screen. */ nvt_snap_one(aea_buf); emit_cup(0); /* Switch to the primary. */ emit_decpriv(47, 'l'); } /* Draw the primary, and stay in primary mode. */ nvt_snap_one(ea_buf); } } /* * Snap the non-default terminal modes. * This is a subtle piece of logic, and may harbor a few bugs yet. */ void nvt_snap_modes(void) { int i; static char csdsel[4] = "()*+"; /* Set up the saved cursor (cursor, fg, bg, gr, cset, csd). */ if (saved_cursor != 0 || saved_fg != 0 || saved_bg != 0 || saved_gr != 0 || saved_cset != CS_G0 || saved_csd[0] != CSD_US || saved_csd[1] != CSD_US || saved_csd[2] != CSD_US || saved_csd[3] != CSD_US || !cursor_enabled) { if (saved_cursor != 0) { emit_cup(saved_cursor); } if (saved_fg != 0) { emit_sgr(30 + saved_fg); } if (saved_bg != 0) { emit_sgr(40 + saved_bg); } if (saved_gr != 0) { if (saved_gr & GR_INTENSIFY) { emit_sgr(1); } if (saved_gr & GR_UNDERLINE) { emit_sgr(4); } if (saved_gr & GR_BLINK) { emit_sgr(5); } if (saved_gr & GR_REVERSE) { emit_sgr(7); } } if (saved_cset != CS_G0) { switch (saved_cset) { case CS_G1: space3270out(1); *obptr++ = 0x0e; break; case CS_G2: space3270out(2); *obptr++ = 0x1b; *obptr++ = 'N'; break; case CS_G3: space3270out(2); *obptr++ = 0x1b; *obptr++ = 'O'; break; default: break; } } for (i = 0; i < 4; i++) { if (saved_csd[i] != CSD_US) { space3270out(3); *obptr++ = 0x1b; *obptr++ = csdsel[i]; *obptr++ = gnnames[saved_csd[i]]; } } if (!cursor_enabled) { space3270out(6); *obptr++ = 0x1b; *obptr++ = '['; *obptr++ = '?'; *obptr++ = '2'; *obptr++ = '5'; *obptr++ = 'l'; } /* Emit a SAVE CURSOR to stash these away. */ space3270out(2); *obptr++ = 0x1b; *obptr++ = '7'; } /* Now set the above to their current values, except for the cursor. */ if (fg != saved_fg) { emit_sgr(30 + fg); } if (bg != saved_bg) { emit_sgr(40 + bg); } if (gr != saved_gr) { emit_sgr(0); if (gr & GR_INTENSIFY) { emit_sgr(1); } if (gr & GR_UNDERLINE) { emit_sgr(4); } if (gr & GR_BLINK) { emit_sgr(5); } if (gr & GR_REVERSE) { emit_sgr(7); } } if (cset != saved_cset) { switch (cset) { case CS_G0: space3270out(1); *obptr++ = 0x0f; break; case CS_G1: space3270out(1); *obptr++ = 0x0e; break; case CS_G2: space3270out(2); *obptr++ = 0x1b; *obptr++ = 'n'; break; case CS_G3: space3270out(2); *obptr++ = 0x1b; *obptr++ = 'o'; break; default: break; } } for (i = 0; i < 4; i++) { if (csd[i] != saved_csd[i]) { space3270out(3); *obptr++ = 0x1b; *obptr++ = csdsel[i]; *obptr++ = gnnames[csd[i]]; } } /* * Handle appl_cursor, wrapaparound_mode, rev_wraparound_mode, * allow_wide_mode, wide_mode and altbuffer, both the saved values and * the current ones. */ if (saved_appl_cursor) { emit_decpriv(1, 'h'); /* set */ emit_decpriv(1, 's'); /* save */ if (!appl_cursor) { emit_decpriv(1, 'l'); /* reset */ } } else if (appl_cursor) { emit_decpriv(1, 'h'); /* set */ } if (saved_wide_mode) { emit_decpriv(3, 'h'); /* set */ emit_decpriv(3, 's'); /* save */ if (!wide_mode) { emit_decpriv(3, 'l'); /* reset */ } } else if (wide_mode) { emit_decpriv(3, 'h'); /* set */ } if (saved_wraparound_mode == 0) { emit_decpriv(7, 'h'); /* set (no-wraparound mode) */ emit_decpriv(7, 's'); /* save */ if (wraparound_mode) { emit_decpriv(7, 'l'); /* reset */ } } else if (!wraparound_mode) { emit_decpriv(7, 'h'); /* set (no-wraparound mode) */ } if (saved_allow_wide_mode) { emit_decpriv(40, 'h'); /* set */ emit_decpriv(40, 's'); /* save */ if (!allow_wide_mode) { emit_decpriv(40, 'l'); /* reset */ } } else if (allow_wide_mode) { emit_decpriv(40, 'h'); /* set */ } if (saved_rev_wraparound_mode) { emit_decpriv(45, 'h'); /* set (rev--wraparound mode) */ emit_decpriv(45, 's'); /* save */ if (!rev_wraparound_mode) { emit_decpriv(45, 'l'); /* reset */ } } else if (rev_wraparound_mode) { emit_decpriv(45, 'h'); /* set (rev-wraparound mode) */ } if (saved_altbuffer) { emit_decpriv(47, 'h'); /* set */ emit_decpriv(47, 's'); /* save */ if (!is_altbuffer) { emit_decpriv(47, 'l'); /* reset */ } } /* else not necessary to set it now -- it was already set when the screen was drawn */ /* * Now take care of auto_newline, insert mode, the scroll region * and tabs. */ if (auto_newline_mode) { space3270out(4); *obptr++ = 0x1b; *obptr++ = '['; *obptr++ = '4'; *obptr++ = 'h'; } if (insert_mode) { space3270out(5); *obptr++ = 0x1b; *obptr++ = '['; *obptr++ = '2'; *obptr++ = '0'; *obptr++ = 'h'; } if (scroll_top != 1 || scroll_bottom != ROWS) { space3270out(10); obptr += sprintf((char *)obptr, "\033[%d;%dr", scroll_top, scroll_bottom); } if (tabs) { unsigned char *deftabs; deftabs = (unsigned char *)Malloc((COLS + 7) / 8); for (i = 0; i < (COLS + 7) / 8; i++) { deftabs[i] = 0x01; } for (i = 0; i < COLS; i++) { if (tabs[i / 8] & 1 << (i % 8)) { if (!(deftabs[i / 8] & 1 << (i % 8))) { /* Tab was cleared. */ space3270out(15); obptr += sprintf((char *)obptr, "\033[%d;%dH", (cursor_addr / COLS) + 1, ((cursor_addr + i) % COLS) + 1); *obptr++ = 0x1b; *obptr++ = '['; *obptr++ = '0'; *obptr++ = 'g'; } } else { if (deftabs[i / 8] & 1 << (i % 8)) { /* Tab was set. */ space3270out(13); obptr += sprintf((char *)obptr, "\033[%d;%dH", (cursor_addr / COLS) + 1, ((cursor_addr + i) % COLS) + 1); *obptr++ = 0x1b; *obptr++ = 'H'; } } } } /* * We're done moving the cursor for other purposes (saving it, * messing with tabs). Put it where it should be now. */ emit_cup(cursor_addr); /* Now add any pending single-character CS change. */ switch (once_cset) { case CS_G2: space3270out(2); *obptr++ = 0x1b; *obptr++ = 'N'; break; case CS_G3: space3270out(2); *obptr++ = 0x1b; *obptr++ = 'O'; break; default: break; } /* Now add any incomplete escape sequence. */ if (pe) { int xlen = 0; for (i = 0; i < pe; i++) { if (ped[i] == 0xff) { xlen++; } } space3270out(pe + xlen); for (i = 0; i < pe; i++) { if (ped[i] == 0xff) { *obptr++ = 0xff; } *obptr++ = ped[i]; } } /* Last, emit any incomplete multi-byte data. */ if (pmi) { space3270out(pmi); for (i = 0; i < pmi; i++) { *obptr++ = pending_mbs[i]; } } } /** * NVT-mode module registration. */ void nvt_register(void) { static toggle_register_t toggles[] = { { LINE_WRAP, toggle_lineWrap, 0 } }; /* Register our toggles. */ register_toggles(toggles, array_count(toggles)); /* Register for state changes. */ register_schange(ST_3270_MODE, nvt_in3270); register_schange(ST_CONNECT, nvt_connect); } /** * Test a buffer position for NVT mode text. * Translates line-drawing characters to Unicode. * * @param[in] ea Buffer position * @param[in] ascii_box_draw True to do ASCII-art box drawing * @param[out] u Returned Unicode value * * @return true if NVT text present */ bool is_nvt(struct ea *ea, bool ascii_box_draw, ucs4_t *u) { if (ea->cs == CS_LINEDRAW) { *u = linedraw_to_unicode(ea->ucs4, ascii_box_draw); return true; } if ((*u = ea->ucs4) != 0) { return true; } return false; } /* Do a backspace with wraparound. */ void nvt_wrapping_backspace(void) { bool prev = rev_wraparound_mode; rev_wraparound_mode = true; nvt_process((unsigned int)'\b'); rev_wraparound_mode = prev; } suite3270-4.1/Common/nvt_gui_stubs.c000066400000000000000000000033001413735575200173220ustar00rootroot00000000000000/* * Copyright (c) 2014-2015 Paul Mattes. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the names of Paul Mattes nor the names of his contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO * EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * nvt_gui_stubs.c * Stubs for the NVT-mode GUI functions. */ #include "globals.h" #include "nvt_gui.h" void xterm_text_gui(int code _is_unused, const char *text _is_unused) { } suite3270-4.1/Common/peerscript.c000066400000000000000000000473551413735575200166310ustar00rootroot00000000000000/* * Copyright (c) 1993-2016, 2018-2021 Paul Mattes. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the names of Paul Mattes nor the names of his contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO * EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * peerscript.c * Read script actions from a TCP socket. */ #include "globals.h" #if !defined(_WIN32) /*[*/ #include #include #include #include #include #endif /*]*/ #include "wincmn.h" #include #include #include #include "actions.h" #include "kybd.h" #include "lazya.h" #include "peerscript.h" #include "popups.h" #include "s3270_proto.h" #include "source.h" #include "task.h" #include "telnet_core.h" #include "trace.h" #include "utils.h" #include "varbuf.h" #include "w3misc.h" #include "xio.h" static void peer_data(task_cbh handle, const char *buf, size_t len, bool success); static bool peer_done(task_cbh handle, bool success, bool abort); static void peer_closescript(task_cbh handle); static void peer_setflags(task_cbh handle, unsigned flags); static unsigned peer_getflags(task_cbh handle); static void peer_setir(task_cbh handle, void *irhandle); static void *peer_getir(task_cbh handle); static void peer_setir_state(task_cbh handle, const char *name, void *state, ir_state_abort_cb abort_cb); static void *peer_getir_state(task_cbh handle, const char *name); static void peer_reqinput(task_cbh handle, const char *buf, size_t len, bool echo); static irv_t peer_irv = { peer_setir, peer_getir, peer_setir_state, peer_getir_state }; /* Callback block for peer. */ static tcb_t peer_cb = { "s3sock", IA_SCRIPT, CB_NEW_TASKQ | CB_PEER, peer_data, peer_done, NULL, peer_closescript, peer_setflags, peer_getflags, &peer_irv, NULL, peer_reqinput }; /* Callback block for an interactive peer. */ static tcb_t interactive_cb = { "s3sock", IA_COMMAND, CB_NEW_TASKQ | CB_PEER, peer_data, peer_done, NULL, peer_closescript, peer_setflags, peer_getflags, &peer_irv, NULL, peer_reqinput }; /* Peer script context. */ typedef struct { llist_t llist; /* list linkage */ socket_t socket; /* socket */ #if defined(_WIN32) /*[*/ HANDLE event; /* event */ #endif /*]*/ peer_listen_t listener; ioid_t id; /* I/O identifier */ char *buf; /* pending command */ size_t buf_len; /* length of pending command */ bool enabled; /* is this peer enabled? */ char *name; /* task name */ unsigned capabilities; /* self-reported capabilities */ void *irhandle; /* input request handle */ task_cb_ir_state_t ir_state; /* named input request state */ } peer_t; static llist_t peer_scripts = LLIST_INIT(peer_scripts); /* Listening context. */ struct _peer_listen { llist_t llist; /* list linkage */ socket_t socket; /* socket */ #if defined(_WIN32) /*[*/ HANDLE event; /* event */ #endif /*]*/ ioid_t id; /* I/O identifier */ peer_listen_mode mode; /* listen mode */ char *desc; /* listener description */ }; static llist_t peer_listeners = LLIST_INIT(peer_listeners); /** * Tear down a peer connection. * * @param[in,out] p Peer */ static void close_peer(peer_t *p) { llist_unlink(&p->llist); if (p->socket != INVALID_SOCKET) { SOCK_CLOSE(p->socket); p->socket = INVALID_SOCKET; } #if defined(_WIN32) /*[*/ if (p->event != INVALID_HANDLE_VALUE) { CloseHandle(p->event); p->event = INVALID_HANDLE_VALUE; } #endif /*]*/ if (p->id != NULL_IOID) { RemoveInput(p->id); p->id = NULL_IOID; } Replace(p->buf, NULL); Replace(p->name, NULL); if (p->listener == NULL || p->listener->mode == PLM_ONCE) { vtrace("once-only socket closed, exiting\n"); x3270_exit(0); } task_cb_abort_ir_state(&p->ir_state); Free(p); } /** * Run the next command in the peer buffer. * * @param[in,out] p Peer * * @return true if command was run. Command is deleted from the buffer. */ static bool run_next(peer_t *p) { size_t cmdlen; char *name; /* Find a newline in the buffer. */ for (cmdlen = 0; cmdlen < p->buf_len; cmdlen++) { if (p->buf[cmdlen] == '\n') { break; } } if (cmdlen >= p->buf_len) { return false; } /* * Run the first command. * cmdlen is the number of characters in the command, not including the * newline. */ name = push_cb(p->buf, cmdlen, (p->capabilities & CBF_INTERACTIVE)? &interactive_cb : &peer_cb, (task_cbh)p); Replace(p->name, NewString(name)); /* If there is more, shift it over. */ cmdlen++; /* count the newline */ if (p->buf_len > cmdlen) { memmove(p->buf, p->buf + cmdlen, p->buf_len - cmdlen); p->buf_len = p->buf_len - cmdlen; } else { Replace(p->buf, NULL); p->buf_len = 0; } return true; } /** * Read the next command from a peer socket (Unix version). * @param[in] fd File descriptor * @param[in] id I/O identifier */ static void peer_input(iosrc_t fd _is_unused, ioid_t id) { peer_t *p; bool found_peer = false; char buf[8192]; size_t n2r; ssize_t nr; ssize_t i; /* Find the peer. */ FOREACH_LLIST(&peer_scripts, p, peer_t *) { if (p->id == id) { found_peer = true; break; } } FOREACH_LLIST_END(&peer_scripts, p, peer_t *); assert(found_peer); /* Read input. */ n2r = sizeof(buf); nr = recv(p->socket, buf, (int)n2r, 0); if (nr < 0) { #if defined(_WIN32) /*[*/ if (GetLastError() != WSAECONNRESET) { /* Windows does this habitually. */ popup_an_error("s3sock recv: %s", win32_strerror(GetLastError())); } #else /*][*/ popup_an_errno(errno, "s3sock read"); #endif /*]*/ close_peer(p); return; } vtrace("Input for s3sock complete, nr=%d\n", (int)nr); if (nr == 0) { vtrace("s3sock EOF\n"); close_peer(p); return; } /* Append, filtering out CRs. */ p->buf = Realloc(p->buf, p->buf_len + nr + 1); for (i = 0; i < nr; i++) { char c = buf[i]; if (c != '\r') { p->buf[p->buf_len++] = c; } } /* Disable further input. */ if (p->id != NULL_IOID) { RemoveInput(p->id); p->id = NULL_IOID; } /* Run the next command, if we have it all. */ if (!run_next(p) && p->id == NULL_IOID) { /* Get more input. */ #if defined(_WIN32) /*[*/ p->id = AddInput(p->event, peer_input); #else /*][*/ p->id = AddInput(p->socket, peer_input); #endif /*]*/ } } /** * Callback for data returned to peer socket command. * * @param[in] handle Callback handle * @param[in] buf Buffer * @param[in] len Buffer length * @param[in] success True if data, false if error message */ static void peer_data(task_cbh handle, const char *buf, size_t len, bool success) { peer_t *p = (peer_t *)handle; char *s = lazyaf(DATA_PREFIX "%.*s\n", (int)len, buf); ssize_t ns; static bool recursing = false; if (recursing) { return; } recursing = true; ns = send(p->socket, s, strlen(s), 0); if (ns < 0) { popup_a_sockerr("s3sock send"); } recursing = false; } /** * Callback for input request. * * @param[in] handle Callback handle * @param[in] buf Buffer * @param[in] len Buffer length * @param[in] echo True to echo input */ static void peer_reqinput(task_cbh handle, const char *buf, size_t len, bool echo) { peer_t *p = (peer_t *)handle; char *s = lazyaf("%s%.*s\n", echo? INPUT_PREFIX: PWINPUT_PREFIX, (int)len, buf); ssize_t ns; static bool recursing = false; if (recursing) { return; } recursing = true; ns = send(p->socket, s, strlen(s), 0); if (ns < 0) { popup_a_sockerr("s3sock send"); } recursing = false; } /** * Callback for completion of one command executed from the peer socket. * * @param[in] handle Callback handle * @param[in] success True if child succeeded * @param[in] abort True if aborting * * @return True if script has terminated */ static bool peer_done(task_cbh handle, bool success, bool abort) { peer_t *p = (peer_t *)handle; char *prompt = task_cb_prompt(handle); char *s = lazyaf("%s\n%s\n", prompt, success? PROMPT_OK: PROMPT_ERROR); bool new_child = false; /* Print the prompt. */ vtrace("Output for %s: '%s/%s'\n", p->name, prompt, success? PROMPT_OK: PROMPT_ERROR); send(p->socket, s, strlen(s), 0); if (abort || !p->enabled) { close_peer(p); return true; } /* Run any pending command that we already read in. */ new_child = run_next(p); if (!new_child && p->id == NULL_IOID) { /* Allow more input. */ #if defined(_WIN32) /*[*/ p->id = AddInput(p->event, peer_input); #else /*][*/ p->id = AddInput(p->socket, peer_input); #endif /*]*/ } /* * If there was a new child, we're still active. Otherwise, let our sms * be popped. */ return !new_child; } /** * Stop the current script. */ static void peer_closescript(task_cbh handle) { peer_t *p = (peer_t *)handle; p->enabled = false; } /** * Set capabilities flags. * * @param[in] handle Peer context * @param[in] flags Flags */ static void peer_setflags(task_cbh handle, unsigned flags) { peer_t *p = (peer_t *)handle; p->capabilities = flags; } /** * Get capabilities flags. * * @param[in] handle Peer context * @returns flags */ static unsigned peer_getflags(task_cbh handle) { peer_t *p = (peer_t *)handle; return p->capabilities; } /** * Set the pending input request. * * @param[in] handle Peer context * @param[in] irhandle Input request handle */ static void peer_setir(task_cbh handle, void *irhandle) { peer_t *p = (peer_t *)handle; p->irhandle = irhandle; } /** * Get the pending input request. * * @param[in] handle Peer context * * @returns input request handle */ static void * peer_getir(task_cbh handle) { peer_t *p = (peer_t *)handle; return p->irhandle; } /** * Set input request state. * * @param[in] handle CB handle * @param[in] name Input request type name * @param[in] state State to store * @param[in] abort Abort callback */ static void peer_setir_state(task_cbh handle, const char *name, void *state, ir_state_abort_cb abort) { peer_t *p = (peer_t *)handle; task_cb_set_ir_state(&p->ir_state, name, state, abort); } /** * Get input request state. * * @param[in] handle CB handle * @param[in] name Input request type name */ static void * peer_getir_state(task_cbh handle, const char *name) { peer_t *p = (peer_t *)handle; return task_cb_get_ir_state(&p->ir_state, name); } /** * Accept a new peer socket connection. * * @param[in] fd File descriptor * @param[in] id I/O identifier */ static void peer_connection(iosrc_t fd _is_unused, ioid_t id) { socket_t accept_fd; union { struct sockaddr sa; struct sockaddr_in sin; #if defined(X3270_IPV6) /*[*/ struct sockaddr_in6 sin6; #endif /*]*/ } sa; socklen_t len = sizeof(sa); char hostbuf[128]; peer_listen_t listener; bool found = false; FOREACH_LLIST(&peer_listeners, listener, peer_listen_t) { if (listener->id == id) { found = true; break; } } FOREACH_LLIST_END(&peer_listeners, listener, peer_listen_t); assert(found); accept_fd = accept(listener->socket, &sa.sa, &len); if (accept_fd != INVALID_SOCKET) { if (sa.sa.sa_family == AF_INET) { vtrace("New script socket connection from %s:%u\n", inet_ntop(AF_INET, &sa.sin.sin_addr, hostbuf, sizeof(hostbuf)), ntohs(sa.sin.sin_port)); } #if defined(X3270_IPV6) /*[*/ else if (sa.sa.sa_family == AF_INET6) { vtrace("New script socket connection from %s:%u\n", inet_ntop(AF_INET6, &sa.sin6.sin6_addr, hostbuf, sizeof(hostbuf)), ntohs(sa.sin6.sin6_port)); } #endif /*]*/ #if !defined(_WIN32) /*[*/ else if (sa.sa.sa_family == AF_UNIX) { vtrace("New Unix-domain script socket connection"); } #endif /*]*/ else { vtrace("New script socket connection from ???\n"); } } if (accept_fd == INVALID_SOCKET) { popup_an_errno(errno, "script socket accept"); return; } if (listener->mode == PLM_SINGLE || listener->mode == PLM_ONCE) { /* Close the listener. */ vtrace("Closing listener %s (single mode)\n", listener->desc); if (listener->socket != INVALID_SOCKET) { SOCK_CLOSE(listener->socket); listener->socket = INVALID_SOCKET; } #if defined(_WIN32) /*[*/ if (listener->event != INVALID_HANDLE_VALUE) { CloseHandle(listener->event); listener->event = INVALID_HANDLE_VALUE; } #endif /*]*/ if (listener->id != NULL_IOID) { RemoveInput(listener->id); listener->id = NULL_IOID; } } else { vtrace("Not closing listener %s (multi mode)\n", listener->desc); } /* Allocate the peer state and remember it. */ peer_accepted(accept_fd, listener); } /** * Set up for I/O on an accepted peer. * * @param[in] s Socket * @param[in] listener Listener, or null */ void peer_accepted(socket_t s, void *listener) { peer_t *p = (peer_t *)Calloc(1, sizeof(peer_t)); #if defined(_WIN32) /*[*/ HANDLE event; #endif /*]*/ #if !defined(_WIN32) /*[*/ fcntl(s, F_SETFD, 1); #else /*][*/ event = CreateEvent(NULL, FALSE, FALSE, NULL); if (event == NULL) { fprintf(stderr, "Can't create socket handle\n"); exit(1); } if (WSAEventSelect(s, event, FD_READ | FD_CLOSE) != 0) { fprintf(stderr, "Can't set socket handle events\n"); exit(1); } #endif /*]*/ llist_init(&p->llist); p->listener = listener; p->socket = s; #if defined(_WIN32) /*[*/ p->event = event; p->id = AddInput(p->event, peer_input); #else /*][*/ p->id = AddInput(p->socket, peer_input); #endif /*]*/ p->buf = NULL; p->buf_len = 0; p->enabled = true; task_cb_init_ir_state(&p->ir_state); LLIST_APPEND(&p->llist, peer_scripts); } /** * Initialize accepting script connections on a specific TCP port. * * @param[in] sa Socket address to listen on * @param[in] sa_len Socket address length * @param[in] mode Connection mode * * @return peer listen context */ peer_listen_t peer_init(struct sockaddr *sa, socklen_t sa_len, peer_listen_mode mode) { peer_listen_t listener; char hostbuf[128]; int on = 1; /* Create the listening socket. */ listener = (peer_listen_t)Calloc(sizeof(struct _peer_listen), 1); listener->socket = INVALID_SOCKET; #if defined(_WIN32) /*[*/ listener->event = INVALID_HANDLE_VALUE; #endif /*]*/ listener->id = NULL_IOID; listener->mode = mode; #if !defined(_WIN32) /*[*/ listener->socket = socket(sa->sa_family, SOCK_STREAM, 0); #else /*][*/ listener->socket = WSASocket(sa->sa_family, SOCK_STREAM, 0, NULL, 0, WSA_FLAG_NO_HANDLE_INHERIT); #endif /*]*/ if (listener->socket == INVALID_SOCKET) { #if !defined(_WIN32) /*[*/ popup_an_errno(errno, "script socket()"); #else /*][*/ popup_an_error("script socket(): %s", win32_strerror(GetLastError())); #endif /*]*/ goto fail; } if (setsockopt(listener->socket, SOL_SOCKET, SO_REUSEADDR, (char *)&on, sizeof(on)) < 0) { #if !defined(_WIN32) /*[*/ popup_an_errno(errno, "script setsockopt(SO_REUSEADDR)"); #else /*][*/ popup_an_error("script setsockopt(SO_REUSEADDR): %s", win32_strerror(GetLastError())); #endif /*]*/ goto fail; } if (bind(listener->socket, sa, sa_len) < 0) { #if !defined(_WIN32) /*[*/ popup_an_errno(errno, "script socket bind"); #else /*][*/ popup_an_error("script socket bind: %s", win32_strerror(GetLastError())); #endif /*]*/ goto fail; } if (getsockname(listener->socket, sa, &sa_len) < 0) { #if !defined(_WIN32) /*[*/ popup_an_errno(errno, "script socket getsockname"); #else /*][*/ popup_an_error("script socket getsockname: %s", win32_strerror(GetLastError())); #endif /*]*/ goto fail; } if (listen(listener->socket, 1) < 0) { #if !defined(_WIN32) /*[*/ popup_an_errno(errno, "script socket listen"); #else /*][*/ popup_an_error("script socket listen: %s", win32_strerror(GetLastError())); #endif /*]*/ goto fail; } #if !defined(_WIN32) /*[*/ fcntl(listener->socket, F_SETFD, 1); #endif /*]*/ #if defined(_WIN32) /*[*/ listener->event = CreateEvent(NULL, FALSE, FALSE, NULL); if (listener->event == NULL) { popup_an_error("script CreateEvent: %s", win32_strerror(GetLastError())); goto fail; } if (WSAEventSelect(listener->socket, listener->event, FD_ACCEPT) != 0) { popup_an_error("script WSAEventSelect: %s", win32_strerror(GetLastError())); goto fail; } listener->id = AddInput(listener->event, peer_connection); #else /*][*/ listener->id = AddInput(listener->socket, peer_connection); #endif/*]*/ if (sa->sa_family == AF_INET) { struct sockaddr_in *sin = (struct sockaddr_in *)sa; listener->desc = xs_buffer("%s:%u", inet_ntop(sa->sa_family, &sin->sin_addr, hostbuf, sizeof(hostbuf)), ntohs(sin->sin_port)); vtrace("Listening for s3sock scripts on %s\n", listener->desc); } #if defined(X3270_IPV6) /*[*/ else if (sa->sa_family == AF_INET6) { struct sockaddr_in6 *sin6 = (struct sockaddr_in6 *)sa; listener->desc = xs_buffer("[%s]:%u", inet_ntop(sa->sa_family, &sin6->sin6_addr, hostbuf, sizeof(hostbuf)), ntohs(sin6->sin6_port)); vtrace("Listening for s3sock scripts on %s\n", listener->desc); } #endif /*]*/ #if !defined(_WIN32) /*[*/ else if (sa->sa_family == AF_UNIX) { struct sockaddr_un *ssun = (struct sockaddr_un *)sa; listener->desc = NewString(ssun->sun_path); vtrace("Listening for s3sock scripts on %s\n", listener->desc); } #endif /*]*/ /* Remember it. */ llist_init(&listener->llist); LLIST_APPEND(&listener->llist, peer_listeners); /* Done. */ goto done; fail: #if defined(_WIN32) /*[*/ if (listener->event != INVALID_HANDLE_VALUE) { CloseHandle(listener->event); listener->event = INVALID_HANDLE_VALUE; } #endif /*]*/ if (listener->socket != INVALID_SOCKET) { SOCK_CLOSE(listener->socket); listener->socket = INVALID_SOCKET; } Replace(listener->desc, NULL); Free(listener); listener = NULL; done: return listener; } /** * Stop listening. * * @param[in] listener Listening context */ void peer_shutdown(peer_listen_t listener) { if (listener->socket != INVALID_SOCKET) { vtrace("Stopped listening for s3sock scripts on %s\n", listener->desc); SOCK_CLOSE(listener->socket); listener->socket = INVALID_SOCKET; } #if defined(_WIN32) /*[*/ if (listener->event != INVALID_HANDLE_VALUE) { CloseHandle(listener->event); listener->event = INVALID_HANDLE_VALUE; } #endif /*]*/ if (listener->id != NULL_IOID) { RemoveInput(listener->id); listener->id = NULL_IOID; } llist_unlink(&listener->llist); Replace(listener->desc, NULL); Free(listener); } suite3270-4.1/Common/popup_an_error.c000066400000000000000000000051251413735575200174700ustar00rootroot00000000000000/* * Copyright (c) 2021 Paul Mattes. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the names of Paul Mattes nor the names of his contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO * EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * popup_an_error.c * Common support for error popups. */ #include "globals.h" #include "lazya.h" #include "popups.h" #include "utils.h" /** * Pop up an error message with a strerror appended. * * @param[in] errn Error number * @param[in] fmt Format */ void popup_an_errno(int errn, const char *fmt, ...) { va_list ap; char *s; va_start(ap, fmt); s = xs_vbuffer(fmt, ap); va_end(ap); if (errn > 0) { popup_an_xerror(ET_OTHER, "%s:%s%s", s, popup_separator, strerror(errn)); } else { popup_an_xerror(ET_OTHER, "%s", s); } Free(s); } /** * Pop up a particular flavor of error message. * * @param[in] type Error type * @param[in] errn Error number * @param[in] fmt Format */ void popup_an_xerror(pae_t type, const char *fmt, ...) { va_list ap; va_start(ap, fmt); popup_a_vxerror(type, fmt, ap); va_end(ap); } /** * Pop up an error message. * * @param[in] fmt Format */ void popup_an_error(const char *fmt, ...) { va_list ap; va_start(ap, fmt); popup_a_vxerror(ET_OTHER, fmt, ap); va_end(ap); } suite3270-4.1/Common/popups_glue.c000066400000000000000000000064551413735575200170070ustar00rootroot00000000000000/* * Copyright (c) 1993-2016, 2018-2019, 2021 Paul Mattes. * Copyright (c) 1990, Jeff Sparkes. * Copyright (c) 1989, Georgia Tech Research Corporation (GTRC), Atlanta, GA * 30332. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the names of Paul Mattes, Jeff Sparkes, GTRC nor the names of * their contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES, JEFF SPARKES AND GTRC "AS IS" AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL PAUL MATTES, JEFF SPARKES OR GTRC BE * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. */ /* * popups_glue.c * Pop-up messages. */ #include "globals.h" #include "glue.h" #include "glue_gui.h" #include "popups.h" /* must come before child_popups.h */ #include "child_popups.h" #include "screen.h" #include "task.h" #include "trace.h" #include "utils.h" const char *popup_separator = " "; /* Pop up an error dialog. */ void popup_a_vxerror(pae_t type, const char *fmt, va_list args) { char *s = xs_vbuffer(fmt, args); if (type == ET_CONNECT) { Replace(s, xs_buffer("Connection failed:\n%s", s)); } /* Log to the trace file. */ vtrace("error: %s\n", s); if (task_redirect()) { task_error(s); } else if (!glue_gui_error(s)) { fprintf(stderr, "%s\n", s); fflush(stderr); } Free(s); } void action_output(const char *fmt, ...) { va_list args; char *s; va_start(args, fmt); s = xs_vbuffer(fmt, args); va_end(args); if (task_redirect()) { task_info("%s", s); } else { if (!glue_gui_output(s)) { fprintf(stderr, "%s\n", s); fflush(stderr); } } Free(s); } void popup_printer_output(bool is_err _is_unused, abort_callback_t *a _is_unused, const char *fmt, ...) { va_list args; char *m; va_start(args, fmt); m = xs_vbuffer(fmt, args); va_end(args); popup_an_error("Printer session: %s", m); Free(m); } void popup_child_output(bool is_err _is_unused, abort_callback_t *a _is_unused, const char *fmt, ...) { va_list args; char *m; va_start(args, fmt); m = xs_vbuffer(fmt, args); va_end(args); action_output("%s", m); Free(m); } void child_popup_init(void) { } suite3270-4.1/Common/popups_stubs.c000066400000000000000000000033011413735575200171760ustar00rootroot00000000000000/* * Copyright (c) 2015 Paul Mattes. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the names of Paul Mattes nor the names of his contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO * EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * popups_stubs.c * Stubs for menubar.c. */ #include "globals.h" #include #include "popups.h" void popup_an_info(const char *fmt _is_unused, ...) { /* Do nothing. */ } suite3270-4.1/Common/pr3287/000077500000000000000000000000001413735575200152345ustar00rootroot00000000000000suite3270-4.1/Common/pr3287/Makefile.aux000066400000000000000000000044541413735575200174770ustar00rootroot00000000000000# Copyright (c) 2000-2009, 2013-2015, 2020 Paul Mattes. # All rights reserved. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions are met: # * Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # * Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in the # documentation and/or other materials provided with the distribution. # * Neither the names of Paul Mattes nor the names of his contributors # may be used to endorse or promote products derived from this software # without specific prior written permission. # # THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS OR IMPLIED # WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF # MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO # EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, # SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, # PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; # OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, # WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR # OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF # ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. # Auxiliary makefile for pr3287 PRODUCT = pr3287 all: @echo "Must pick a specific make target." DOCS = $(PRODUCT).man html/$(PRODUCT)-man.html # Rule for building the source tarball: run autoconf and build the # documentation. src.tgz: prepare $(DOCS) # Rule for preparing a freshly-pulled working copy: run autoconf. prepare: configure configure: configure.in autoconf MANDEP = man.m4 html.m4 m4man Makefile.aux version.txt MKMAN = ./m4man -t man -p $(PRODUCT) MKHTML = ./m4man -t html -p $(PRODUCT) # Rule for building the documentation. man: $(DOCS) # Rules for building man pages and derived HTML documentation. $(PRODUCT).man: $(PRODUCT).man.m4 $(MANDEP) $(MKMAN) -n $(PRODUCT) -o $@ $(PRODUCT).man.m4 html/$(PRODUCT)-man.html: $(PRODUCT).man.m4 $(MANDEP) $(MKHTML) -n $(PRODUCT) -o $@ $(PRODUCT).man.m4 suite3270-4.1/Common/pr3287/Makefile.in000066400000000000000000000043531413735575200173060ustar00rootroot00000000000000# Copyright (c) 2016-2017 Paul Mattes. # All rights reserved. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # * Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # * Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in the # documentation and/or other materials provided with the distribution. # * Neither the name of Paul Mattes nor his contributors may be used # to endorse or promote products derived from this software without # specific prior written permission. # # THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS OR # IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES # OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN # NO EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, # SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED # TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR # PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF # LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING # NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS # SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. # VPATH-based Makefile for pr3287 top = ../../.. objdir = ../obj/@host@/pr3287 this = $(top)/pr3287 export VPATH = $(this):$(top)/Common/pr3287:$(top)/Common export TOP = $(top) export THIS = $(this) MAKEINC = -I$(this) -I$(top)/Common -I$(top)/Common/pr3287 all: $(objdir) cd $(objdir) && $(MAKE) $(MAKEINC) -f $(this)/Makefile.obj $@ install: $(objdir) cd $(objdir) && $(MAKE) $(MAKEINC) -f $(this)/Makefile.obj $@ install.man: $(objdir) cd $(objdir) && $(MAKE) $(MAKEINC) -f $(this)/Makefile.obj $@ clean: $(objdir) cd $(objdir) && $(MAKE) $(MAKEINC) -f $(this)/Makefile.obj $@ clobber: $(objdir) cd $(objdir) && $(MAKE) $(MAKEINC) -f $(this)/Makefile.obj $@ depend: $(objdir) cd $(objdir) && $(MAKE) $(MAKEINC) -f $(this)/Makefile.obj $@ $(objdir): mkdir -p $(objdir) suite3270-4.1/Common/pr3287/codepage.c000066400000000000000000000072241413735575200171540ustar00rootroot00000000000000/* * Copyright (c) 2001-2009, 2013-2015, 2019 Paul Mattes. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the names of Paul Mattes nor the names of his contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO * EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * codepage.c * Limited code page support. */ #include "globals.h" #include #include #include #if !defined(_WIN32) /*[*/ # include # include #endif /*]*/ #if defined(__CYGWIN__) /*[*/ # include #undef _WIN32 #endif /*]*/ #include "3270ds.h" #include "codepage.h" #include "unicodec.h" #include "unicode_dbcs.h" #include "utf8.h" #if defined(_WIN32) /*[*/ # define LOCAL_CODEPAGE CP_ACP #else /*][*/ # define LOCAL_CODEPAGE 0 #endif /*]*/ unsigned long cgcsgid = 0x02b90025; unsigned long cgcsgid_dbcs = 0x02b90025; int dbcs = 0; char *encoding = NULL; char *converters = NULL; /* * Change host code pages. */ enum cs_result codepage_init(const char *cpname) { #if !defined(_WIN32) /*[*/ char *codeset_name; #endif /*]*/ const char *host_codepage; const char *cgcsgid_str; #if !defined(_WIN32) /*[*/ setlocale(LC_ALL, ""); codeset_name = nl_langinfo(CODESET); # if defined(__CYGWIN__) /*[*/ /* * Cygwin's locale support is quite limited. If the locale * indicates "US-ASCII", which appears to be the only supported * encoding, ignore it and use the Windows ANSI code page, which * observation indicates is what is actually supported. * * Hopefully at some point Cygwin will start returning something * meaningful here and this logic will stop triggering. * * If this (lack of) functionality persists, then it will probably * become necessary for pr3287 to support the wpr3287 '-printercp' * option, so that the printer code page can be configured. */ if (!strcmp(codeset_name, "US-ASCII")) { codeset_name = Malloc(64); sprintf(codeset_name, "CP%d", GetACP()); } # endif /*]*/ set_codeset(codeset_name, false); #endif /*]*/ if (!set_uni(cpname, LOCAL_CODEPAGE, &host_codepage, &cgcsgid_str, NULL, NULL)) { return CS_NOTFOUND; } cgcsgid = strtoul(cgcsgid_str, NULL, 0); if (!(cgcsgid & ~0xffff)) { cgcsgid |= 0x02b90000; } if (set_uni_dbcs(cpname, &cgcsgid_str) == 0) { dbcs = 1; cgcsgid_dbcs = strtoul(cgcsgid_str, NULL, 0); } return CS_OKAY; } suite3270-4.1/Common/pr3287/configure000077500000000000000000004366261413735575200171640ustar00rootroot00000000000000#! /bin/sh # Guess values for system-dependent variables and create Makefiles. # Generated by GNU Autoconf 2.69 for pr3287 4.0. # # # Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc. # # # This configure script is free software; the Free Software Foundation # gives unlimited permission to copy, distribute and modify it. ## -------------------- ## ## M4sh Initialization. ## ## -------------------- ## # Be more Bourne compatible DUALCASE=1; export DUALCASE # for MKS sh if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST else case `(set -o) 2>/dev/null` in #( *posix*) : set -o posix ;; #( *) : ;; esac fi as_nl=' ' export as_nl # Printing a long string crashes Solaris 7 /usr/bin/printf. as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo # Prefer a ksh shell builtin over an external printf program on Solaris, # but without wasting forks for bash or zsh. if test -z "$BASH_VERSION$ZSH_VERSION" \ && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then as_echo='print -r --' as_echo_n='print -rn --' elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then as_echo='printf %s\n' as_echo_n='printf %s' else if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' as_echo_n='/usr/ucb/echo -n' else as_echo_body='eval expr "X$1" : "X\\(.*\\)"' as_echo_n_body='eval arg=$1; case $arg in #( *"$as_nl"*) expr "X$arg" : "X\\(.*\\)$as_nl"; arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; esac; expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" ' export as_echo_n_body as_echo_n='sh -c $as_echo_n_body as_echo' fi export as_echo_body as_echo='sh -c $as_echo_body as_echo' fi # The user is always right. if test "${PATH_SEPARATOR+set}" != set; then PATH_SEPARATOR=: (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || PATH_SEPARATOR=';' } fi # IFS # We need space, tab and new line, in precisely that order. Quoting is # there to prevent editors from complaining about space-tab. # (If _AS_PATH_WALK were called with IFS unset, it would disable word # splitting by setting IFS to empty value.) IFS=" "" $as_nl" # Find who we are. Look in the path if we contain no directory separator. as_myself= case $0 in #(( *[\\/]* ) as_myself=$0 ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break done IFS=$as_save_IFS ;; esac # We did not find ourselves, most probably we were run as `sh COMMAND' # in which case we are not to be found in the path. if test "x$as_myself" = x; then as_myself=$0 fi if test ! -f "$as_myself"; then $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 exit 1 fi # Unset variables that we do not need and which cause bugs (e.g. in # pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" # suppresses any "Segmentation fault" message there. '((' could # trigger a bug in pdksh 5.2.14. for as_var in BASH_ENV ENV MAIL MAILPATH do eval test x\${$as_var+set} = xset \ && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : done PS1='$ ' PS2='> ' PS4='+ ' # NLS nuisances. LC_ALL=C export LC_ALL LANGUAGE=C export LANGUAGE # CDPATH. (unset CDPATH) >/dev/null 2>&1 && unset CDPATH # Use a proper internal environment variable to ensure we don't fall # into an infinite loop, continuously re-executing ourselves. if test x"${_as_can_reexec}" != xno && test "x$CONFIG_SHELL" != x; then _as_can_reexec=no; export _as_can_reexec; # We cannot yet assume a decent shell, so we have to provide a # neutralization value for shells without unset; and this also # works around shells that cannot unset nonexistent variables. # Preserve -v and -x to the replacement shell. BASH_ENV=/dev/null ENV=/dev/null (unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV case $- in # (((( *v*x* | *x*v* ) as_opts=-vx ;; *v* ) as_opts=-v ;; *x* ) as_opts=-x ;; * ) as_opts= ;; esac exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} # Admittedly, this is quite paranoid, since all the known shells bail # out after a failed `exec'. $as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2 as_fn_exit 255 fi # We don't want this to propagate to other subprocesses. { _as_can_reexec=; unset _as_can_reexec;} if test "x$CONFIG_SHELL" = x; then as_bourne_compatible="if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on \${1+\"\$@\"}, which # is contrary to our usage. Disable this feature. alias -g '\${1+\"\$@\"}'='\"\$@\"' setopt NO_GLOB_SUBST else case \`(set -o) 2>/dev/null\` in #( *posix*) : set -o posix ;; #( *) : ;; esac fi " as_required="as_fn_return () { (exit \$1); } as_fn_success () { as_fn_return 0; } as_fn_failure () { as_fn_return 1; } as_fn_ret_success () { return 0; } as_fn_ret_failure () { return 1; } exitcode=0 as_fn_success || { exitcode=1; echo as_fn_success failed.; } as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; } as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; } as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; } if ( set x; as_fn_ret_success y && test x = \"\$1\" ); then : else exitcode=1; echo positional parameters were not saved. fi test x\$exitcode = x0 || exit 1 test -x / || exit 1" as_suggested=" as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" && test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1 test \$(( 1 + 1 )) = 2 || exit 1" if (eval "$as_required") 2>/dev/null; then : as_have_required=yes else as_have_required=no fi if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null; then : else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR as_found=false for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. as_found=: case $as_dir in #( /*) for as_base in sh bash ksh sh5; do # Try only shells that exist, to save several forks. as_shell=$as_dir/$as_base if { test -f "$as_shell" || test -f "$as_shell.exe"; } && { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$as_shell"; } 2>/dev/null; then : CONFIG_SHELL=$as_shell as_have_required=yes if { $as_echo "$as_bourne_compatible""$as_suggested" | as_run=a "$as_shell"; } 2>/dev/null; then : break 2 fi fi done;; esac as_found=false done $as_found || { if { test -f "$SHELL" || test -f "$SHELL.exe"; } && { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$SHELL"; } 2>/dev/null; then : CONFIG_SHELL=$SHELL as_have_required=yes fi; } IFS=$as_save_IFS if test "x$CONFIG_SHELL" != x; then : export CONFIG_SHELL # We cannot yet assume a decent shell, so we have to provide a # neutralization value for shells without unset; and this also # works around shells that cannot unset nonexistent variables. # Preserve -v and -x to the replacement shell. BASH_ENV=/dev/null ENV=/dev/null (unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV case $- in # (((( *v*x* | *x*v* ) as_opts=-vx ;; *v* ) as_opts=-v ;; *x* ) as_opts=-x ;; * ) as_opts= ;; esac exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} # Admittedly, this is quite paranoid, since all the known shells bail # out after a failed `exec'. $as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2 exit 255 fi if test x$as_have_required = xno; then : $as_echo "$0: This script requires a shell more modern than all" $as_echo "$0: the shells that I found on your system." if test x${ZSH_VERSION+set} = xset ; then $as_echo "$0: In particular, zsh $ZSH_VERSION has bugs and should" $as_echo "$0: be upgraded to zsh 4.3.4 or later." else $as_echo "$0: Please tell bug-autoconf@gnu.org about your system, $0: including any error possibly output before this $0: message. Then install a modern shell, or manually run $0: the script under such a shell if you do have one." fi exit 1 fi fi fi SHELL=${CONFIG_SHELL-/bin/sh} export SHELL # Unset more variables known to interfere with behavior of common tools. CLICOLOR_FORCE= GREP_OPTIONS= unset CLICOLOR_FORCE GREP_OPTIONS ## --------------------- ## ## M4sh Shell Functions. ## ## --------------------- ## # as_fn_unset VAR # --------------- # Portably unset VAR. as_fn_unset () { { eval $1=; unset $1;} } as_unset=as_fn_unset # as_fn_set_status STATUS # ----------------------- # Set $? to STATUS, without forking. as_fn_set_status () { return $1 } # as_fn_set_status # as_fn_exit STATUS # ----------------- # Exit the shell with STATUS, even in a "trap 0" or "set -e" context. as_fn_exit () { set +e as_fn_set_status $1 exit $1 } # as_fn_exit # as_fn_mkdir_p # ------------- # Create "$as_dir" as a directory, including parents if necessary. as_fn_mkdir_p () { case $as_dir in #( -*) as_dir=./$as_dir;; esac test -d "$as_dir" || eval $as_mkdir_p || { as_dirs= while :; do case $as_dir in #( *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( *) as_qdir=$as_dir;; esac as_dirs="'$as_qdir' $as_dirs" as_dir=`$as_dirname -- "$as_dir" || $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_dir" : 'X\(//\)[^/]' \| \ X"$as_dir" : 'X\(//\)$' \| \ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$as_dir" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` test -d "$as_dir" && break done test -z "$as_dirs" || eval "mkdir $as_dirs" } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" } # as_fn_mkdir_p # as_fn_executable_p FILE # ----------------------- # Test if FILE is an executable regular file. as_fn_executable_p () { test -f "$1" && test -x "$1" } # as_fn_executable_p # as_fn_append VAR VALUE # ---------------------- # Append the text in VALUE to the end of the definition contained in VAR. Take # advantage of any shell optimizations that allow amortized linear growth over # repeated appends, instead of the typical quadratic growth present in naive # implementations. if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : eval 'as_fn_append () { eval $1+=\$2 }' else as_fn_append () { eval $1=\$$1\$2 } fi # as_fn_append # as_fn_arith ARG... # ------------------ # Perform arithmetic evaluation on the ARGs, and store the result in the # global $as_val. Take advantage of shells that can avoid forks. The arguments # must be portable across $(()) and expr. if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : eval 'as_fn_arith () { as_val=$(( $* )) }' else as_fn_arith () { as_val=`expr "$@" || test $? -eq 1` } fi # as_fn_arith # as_fn_error STATUS ERROR [LINENO LOG_FD] # ---------------------------------------- # Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are # provided, also output the error to LOG_FD, referencing LINENO. Then exit the # script with STATUS, using 1 if that was 0. as_fn_error () { as_status=$1; test $as_status -eq 0 && as_status=1 if test "$4"; then as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 fi $as_echo "$as_me: error: $2" >&2 as_fn_exit $as_status } # as_fn_error if expr a : '\(a\)' >/dev/null 2>&1 && test "X`expr 00001 : '.*\(...\)'`" = X001; then as_expr=expr else as_expr=false fi if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then as_basename=basename else as_basename=false fi if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then as_dirname=dirname else as_dirname=false fi as_me=`$as_basename -- "$0" || $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ X"$0" : 'X\(//\)$' \| \ X"$0" : 'X\(/\)' \| . 2>/dev/null || $as_echo X/"$0" | sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/ q } /^X\/\(\/\/\)$/{ s//\1/ q } /^X\/\(\/\).*/{ s//\1/ q } s/.*/./; q'` # Avoid depending upon Character Ranges. as_cr_letters='abcdefghijklmnopqrstuvwxyz' as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' as_cr_Letters=$as_cr_letters$as_cr_LETTERS as_cr_digits='0123456789' as_cr_alnum=$as_cr_Letters$as_cr_digits as_lineno_1=$LINENO as_lineno_1a=$LINENO as_lineno_2=$LINENO as_lineno_2a=$LINENO eval 'test "x$as_lineno_1'$as_run'" != "x$as_lineno_2'$as_run'" && test "x`expr $as_lineno_1'$as_run' + 1`" = "x$as_lineno_2'$as_run'"' || { # Blame Lee E. McMahon (1931-1989) for sed's syntax. :-) sed -n ' p /[$]LINENO/= ' <$as_myself | sed ' s/[$]LINENO.*/&-/ t lineno b :lineno N :loop s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ t loop s/-\n.*// ' >$as_me.lineno && chmod +x "$as_me.lineno" || { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; } # If we had to re-execute with $CONFIG_SHELL, we're ensured to have # already done that, so ensure we don't try to do so again and fall # in an infinite loop. This has already happened in practice. _as_can_reexec=no; export _as_can_reexec # Don't try to exec as it changes $[0], causing all sort of problems # (the dirname of $[0] is not the place where we might find the # original and so on. Autoconf is especially sensitive to this). . "./$as_me.lineno" # Exit status is that of the last command. exit } ECHO_C= ECHO_N= ECHO_T= case `echo -n x` in #((((( -n*) case `echo 'xy\c'` in *c*) ECHO_T=' ';; # ECHO_T is single tab character. xy) ECHO_C='\c';; *) echo `echo ksh88 bug on AIX 6.1` > /dev/null ECHO_T=' ';; esac;; *) ECHO_N='-n';; esac rm -f conf$$ conf$$.exe conf$$.file if test -d conf$$.dir; then rm -f conf$$.dir/conf$$.file else rm -f conf$$.dir mkdir conf$$.dir 2>/dev/null fi if (echo >conf$$.file) 2>/dev/null; then if ln -s conf$$.file conf$$ 2>/dev/null; then as_ln_s='ln -s' # ... but there are two gotchas: # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. # In both cases, we have to default to `cp -pR'. ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || as_ln_s='cp -pR' elif ln conf$$.file conf$$ 2>/dev/null; then as_ln_s=ln else as_ln_s='cp -pR' fi else as_ln_s='cp -pR' fi rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file rmdir conf$$.dir 2>/dev/null if mkdir -p . 2>/dev/null; then as_mkdir_p='mkdir -p "$as_dir"' else test -d ./-p && rmdir ./-p as_mkdir_p=false fi as_test_x='test -x' as_executable_p=as_fn_executable_p # Sed expression to map a string onto a valid CPP name. as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" # Sed expression to map a string onto a valid variable name. as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" test -n "$DJDIR" || exec 7<&0 &1 # Name of the host. # hostname on some systems (SVR3.2, old GNU/Linux) returns a bogus exit status, # so uname gets run too. ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q` # # Initializations. # ac_default_prefix=/usr/local ac_clean_files= ac_config_libobj_dir=. LIBOBJS= cross_compiling=no subdirs= MFLAGS= MAKEFLAGS= # Identity of this package. PACKAGE_NAME='pr3287' PACKAGE_TARNAME='pr3287' PACKAGE_VERSION='4.0' PACKAGE_STRING='pr3287 4.0' PACKAGE_BUGREPORT='' PACKAGE_URL='' # Factoring default headers for most tests. ac_includes_default="\ #include #ifdef HAVE_SYS_TYPES_H # include #endif #ifdef HAVE_SYS_STAT_H # include #endif #ifdef STDC_HEADERS # include # include #else # ifdef HAVE_STDLIB_H # include # endif #endif #ifdef HAVE_STRING_H # if !defined STDC_HEADERS && defined HAVE_MEMORY_H # include # endif # include #endif #ifdef HAVE_STRINGS_H # include #endif #ifdef HAVE_INTTYPES_H # include #endif #ifdef HAVE_STDINT_H # include #endif #ifdef HAVE_UNISTD_H # include #endif" ac_subst_vars='LTLIBOBJS LIBOBJS LIBX3270DIR EGREP GREP CPP CCOPTIONS host_os host_vendor host_cpu host build_os build_vendor build_cpu build OBJEXT EXEEXT ac_ct_CC CPPFLAGS LDFLAGS CFLAGS CC INSTALL_DATA INSTALL_SCRIPT INSTALL_PROGRAM target_alias host_alias build_alias LIBS ECHO_T ECHO_N ECHO_C DEFS mandir localedir libdir psdir pdfdir dvidir htmldir infodir docdir oldincludedir includedir runstatedir localstatedir sharedstatedir sysconfdir datadir datarootdir libexecdir sbindir bindir program_transform_name prefix exec_prefix PACKAGE_URL PACKAGE_BUGREPORT PACKAGE_STRING PACKAGE_VERSION PACKAGE_TARNAME PACKAGE_NAME PATH_SEPARATOR SHELL' ac_subst_files='' ac_user_opts=' enable_option_checking with_ssl enable_dbcs enable_ipv6 ' ac_precious_vars='build_alias host_alias target_alias CC CFLAGS LDFLAGS LIBS CPPFLAGS CPP' # Initialize some variables set by options. ac_init_help= ac_init_version=false ac_unrecognized_opts= ac_unrecognized_sep= # The variables have the same names as the options, with # dashes changed to underlines. cache_file=/dev/null exec_prefix=NONE no_create= no_recursion= prefix=NONE program_prefix=NONE program_suffix=NONE program_transform_name=s,x,x, silent= site= srcdir= verbose= x_includes=NONE x_libraries=NONE # Installation directory options. # These are left unexpanded so users can "make install exec_prefix=/foo" # and all the variables that are supposed to be based on exec_prefix # by default will actually change. # Use braces instead of parens because sh, perl, etc. also accept them. # (The list follows the same order as the GNU Coding Standards.) bindir='${exec_prefix}/bin' sbindir='${exec_prefix}/sbin' libexecdir='${exec_prefix}/libexec' datarootdir='${prefix}/share' datadir='${datarootdir}' sysconfdir='${prefix}/etc' sharedstatedir='${prefix}/com' localstatedir='${prefix}/var' runstatedir='${localstatedir}/run' includedir='${prefix}/include' oldincludedir='/usr/include' docdir='${datarootdir}/doc/${PACKAGE_TARNAME}' infodir='${datarootdir}/info' htmldir='${docdir}' dvidir='${docdir}' pdfdir='${docdir}' psdir='${docdir}' libdir='${exec_prefix}/lib' localedir='${datarootdir}/locale' mandir='${datarootdir}/man' ac_prev= ac_dashdash= for ac_option do # If the previous option needs an argument, assign it. if test -n "$ac_prev"; then eval $ac_prev=\$ac_option ac_prev= continue fi case $ac_option in *=?*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;; *=) ac_optarg= ;; *) ac_optarg=yes ;; esac # Accept the important Cygnus configure options, so we can diagnose typos. case $ac_dashdash$ac_option in --) ac_dashdash=yes ;; -bindir | --bindir | --bindi | --bind | --bin | --bi) ac_prev=bindir ;; -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*) bindir=$ac_optarg ;; -build | --build | --buil | --bui | --bu) ac_prev=build_alias ;; -build=* | --build=* | --buil=* | --bui=* | --bu=*) build_alias=$ac_optarg ;; -cache-file | --cache-file | --cache-fil | --cache-fi \ | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) ac_prev=cache_file ;; -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) cache_file=$ac_optarg ;; --config-cache | -C) cache_file=config.cache ;; -datadir | --datadir | --datadi | --datad) ac_prev=datadir ;; -datadir=* | --datadir=* | --datadi=* | --datad=*) datadir=$ac_optarg ;; -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \ | --dataroo | --dataro | --datar) ac_prev=datarootdir ;; -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \ | --dataroot=* | --dataroo=* | --dataro=* | --datar=*) datarootdir=$ac_optarg ;; -disable-* | --disable-*) ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid feature name: $ac_useropt" ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "enable_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--disable-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval enable_$ac_useropt=no ;; -docdir | --docdir | --docdi | --doc | --do) ac_prev=docdir ;; -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*) docdir=$ac_optarg ;; -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv) ac_prev=dvidir ;; -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*) dvidir=$ac_optarg ;; -enable-* | --enable-*) ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid feature name: $ac_useropt" ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "enable_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--enable-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval enable_$ac_useropt=\$ac_optarg ;; -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ | --exec | --exe | --ex) ac_prev=exec_prefix ;; -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \ | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \ | --exec=* | --exe=* | --ex=*) exec_prefix=$ac_optarg ;; -gas | --gas | --ga | --g) # Obsolete; use --with-gas. with_gas=yes ;; -help | --help | --hel | --he | -h) ac_init_help=long ;; -help=r* | --help=r* | --hel=r* | --he=r* | -hr*) ac_init_help=recursive ;; -help=s* | --help=s* | --hel=s* | --he=s* | -hs*) ac_init_help=short ;; -host | --host | --hos | --ho) ac_prev=host_alias ;; -host=* | --host=* | --hos=* | --ho=*) host_alias=$ac_optarg ;; -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht) ac_prev=htmldir ;; -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \ | --ht=*) htmldir=$ac_optarg ;; -includedir | --includedir | --includedi | --included | --include \ | --includ | --inclu | --incl | --inc) ac_prev=includedir ;; -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \ | --includ=* | --inclu=* | --incl=* | --inc=*) includedir=$ac_optarg ;; -infodir | --infodir | --infodi | --infod | --info | --inf) ac_prev=infodir ;; -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*) infodir=$ac_optarg ;; -libdir | --libdir | --libdi | --libd) ac_prev=libdir ;; -libdir=* | --libdir=* | --libdi=* | --libd=*) libdir=$ac_optarg ;; -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \ | --libexe | --libex | --libe) ac_prev=libexecdir ;; -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \ | --libexe=* | --libex=* | --libe=*) libexecdir=$ac_optarg ;; -localedir | --localedir | --localedi | --localed | --locale) ac_prev=localedir ;; -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*) localedir=$ac_optarg ;; -localstatedir | --localstatedir | --localstatedi | --localstated \ | --localstate | --localstat | --localsta | --localst | --locals) ac_prev=localstatedir ;; -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*) localstatedir=$ac_optarg ;; -mandir | --mandir | --mandi | --mand | --man | --ma | --m) ac_prev=mandir ;; -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*) mandir=$ac_optarg ;; -nfp | --nfp | --nf) # Obsolete; use --without-fp. with_fp=no ;; -no-create | --no-create | --no-creat | --no-crea | --no-cre \ | --no-cr | --no-c | -n) no_create=yes ;; -no-recursion | --no-recursion | --no-recursio | --no-recursi \ | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) no_recursion=yes ;; -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \ | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \ | --oldin | --oldi | --old | --ol | --o) ac_prev=oldincludedir ;; -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \ | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \ | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*) oldincludedir=$ac_optarg ;; -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) ac_prev=prefix ;; -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) prefix=$ac_optarg ;; -program-prefix | --program-prefix | --program-prefi | --program-pref \ | --program-pre | --program-pr | --program-p) ac_prev=program_prefix ;; -program-prefix=* | --program-prefix=* | --program-prefi=* \ | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*) program_prefix=$ac_optarg ;; -program-suffix | --program-suffix | --program-suffi | --program-suff \ | --program-suf | --program-su | --program-s) ac_prev=program_suffix ;; -program-suffix=* | --program-suffix=* | --program-suffi=* \ | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*) program_suffix=$ac_optarg ;; -program-transform-name | --program-transform-name \ | --program-transform-nam | --program-transform-na \ | --program-transform-n | --program-transform- \ | --program-transform | --program-transfor \ | --program-transfo | --program-transf \ | --program-trans | --program-tran \ | --progr-tra | --program-tr | --program-t) ac_prev=program_transform_name ;; -program-transform-name=* | --program-transform-name=* \ | --program-transform-nam=* | --program-transform-na=* \ | --program-transform-n=* | --program-transform-=* \ | --program-transform=* | --program-transfor=* \ | --program-transfo=* | --program-transf=* \ | --program-trans=* | --program-tran=* \ | --progr-tra=* | --program-tr=* | --program-t=*) program_transform_name=$ac_optarg ;; -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd) ac_prev=pdfdir ;; -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*) pdfdir=$ac_optarg ;; -psdir | --psdir | --psdi | --psd | --ps) ac_prev=psdir ;; -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*) psdir=$ac_optarg ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil) silent=yes ;; -runstatedir | --runstatedir | --runstatedi | --runstated \ | --runstate | --runstat | --runsta | --runst | --runs \ | --run | --ru | --r) ac_prev=runstatedir ;; -runstatedir=* | --runstatedir=* | --runstatedi=* | --runstated=* \ | --runstate=* | --runstat=* | --runsta=* | --runst=* | --runs=* \ | --run=* | --ru=* | --r=*) runstatedir=$ac_optarg ;; -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) ac_prev=sbindir ;; -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ | --sbi=* | --sb=*) sbindir=$ac_optarg ;; -sharedstatedir | --sharedstatedir | --sharedstatedi \ | --sharedstated | --sharedstate | --sharedstat | --sharedsta \ | --sharedst | --shareds | --shared | --share | --shar \ | --sha | --sh) ac_prev=sharedstatedir ;; -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \ | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \ | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \ | --sha=* | --sh=*) sharedstatedir=$ac_optarg ;; -site | --site | --sit) ac_prev=site ;; -site=* | --site=* | --sit=*) site=$ac_optarg ;; -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) ac_prev=srcdir ;; -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) srcdir=$ac_optarg ;; -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \ | --syscon | --sysco | --sysc | --sys | --sy) ac_prev=sysconfdir ;; -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \ | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*) sysconfdir=$ac_optarg ;; -target | --target | --targe | --targ | --tar | --ta | --t) ac_prev=target_alias ;; -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) target_alias=$ac_optarg ;; -v | -verbose | --verbose | --verbos | --verbo | --verb) verbose=yes ;; -version | --version | --versio | --versi | --vers | -V) ac_init_version=: ;; -with-* | --with-*) ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid package name: $ac_useropt" ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "with_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--with-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval with_$ac_useropt=\$ac_optarg ;; -without-* | --without-*) ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid package name: $ac_useropt" ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "with_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--without-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval with_$ac_useropt=no ;; --x) # Obsolete; use --with-x. with_x=yes ;; -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \ | --x-incl | --x-inc | --x-in | --x-i) ac_prev=x_includes ;; -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \ | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*) x_includes=$ac_optarg ;; -x-libraries | --x-libraries | --x-librarie | --x-librari \ | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l) ac_prev=x_libraries ;; -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \ | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) x_libraries=$ac_optarg ;; -*) as_fn_error $? "unrecognized option: \`$ac_option' Try \`$0 --help' for more information" ;; *=*) ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='` # Reject names that are not valid shell variable names. case $ac_envvar in #( '' | [0-9]* | *[!_$as_cr_alnum]* ) as_fn_error $? "invalid variable name: \`$ac_envvar'" ;; esac eval $ac_envvar=\$ac_optarg export $ac_envvar ;; *) # FIXME: should be removed in autoconf 3.0. $as_echo "$as_me: WARNING: you should use --build, --host, --target" >&2 expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && $as_echo "$as_me: WARNING: invalid host type: $ac_option" >&2 : "${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}" ;; esac done if test -n "$ac_prev"; then ac_option=--`echo $ac_prev | sed 's/_/-/g'` as_fn_error $? "missing argument to $ac_option" fi if test -n "$ac_unrecognized_opts"; then case $enable_option_checking in no) ;; fatal) as_fn_error $? "unrecognized options: $ac_unrecognized_opts" ;; *) $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;; esac fi # Check all directory arguments for consistency. for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \ datadir sysconfdir sharedstatedir localstatedir includedir \ oldincludedir docdir infodir htmldir dvidir pdfdir psdir \ libdir localedir mandir runstatedir do eval ac_val=\$$ac_var # Remove trailing slashes. case $ac_val in */ ) ac_val=`expr "X$ac_val" : 'X\(.*[^/]\)' \| "X$ac_val" : 'X\(.*\)'` eval $ac_var=\$ac_val;; esac # Be sure to have absolute directory names. case $ac_val in [\\/$]* | ?:[\\/]* ) continue;; NONE | '' ) case $ac_var in *prefix ) continue;; esac;; esac as_fn_error $? "expected an absolute directory name for --$ac_var: $ac_val" done # There might be people who depend on the old broken behavior: `$host' # used to hold the argument of --host etc. # FIXME: To remove some day. build=$build_alias host=$host_alias target=$target_alias # FIXME: To remove some day. if test "x$host_alias" != x; then if test "x$build_alias" = x; then cross_compiling=maybe elif test "x$build_alias" != "x$host_alias"; then cross_compiling=yes fi fi ac_tool_prefix= test -n "$host_alias" && ac_tool_prefix=$host_alias- test "$silent" = yes && exec 6>/dev/null ac_pwd=`pwd` && test -n "$ac_pwd" && ac_ls_di=`ls -di .` && ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` || as_fn_error $? "working directory cannot be determined" test "X$ac_ls_di" = "X$ac_pwd_ls_di" || as_fn_error $? "pwd does not report name of working directory" # Find the source files, if location was not specified. if test -z "$srcdir"; then ac_srcdir_defaulted=yes # Try the directory containing this script, then the parent directory. ac_confdir=`$as_dirname -- "$as_myself" || $as_expr X"$as_myself" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_myself" : 'X\(//\)[^/]' \| \ X"$as_myself" : 'X\(//\)$' \| \ X"$as_myself" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$as_myself" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` srcdir=$ac_confdir if test ! -r "$srcdir/$ac_unique_file"; then srcdir=.. fi else ac_srcdir_defaulted=no fi if test ! -r "$srcdir/$ac_unique_file"; then test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .." as_fn_error $? "cannot find sources ($ac_unique_file) in $srcdir" fi ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work" ac_abs_confdir=`( cd "$srcdir" && test -r "./$ac_unique_file" || as_fn_error $? "$ac_msg" pwd)` # When building in place, set srcdir=. if test "$ac_abs_confdir" = "$ac_pwd"; then srcdir=. fi # Remove unnecessary trailing slashes from srcdir. # Double slashes in file names in object file debugging info # mess up M-x gdb in Emacs. case $srcdir in */) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;; esac for ac_var in $ac_precious_vars; do eval ac_env_${ac_var}_set=\${${ac_var}+set} eval ac_env_${ac_var}_value=\$${ac_var} eval ac_cv_env_${ac_var}_set=\${${ac_var}+set} eval ac_cv_env_${ac_var}_value=\$${ac_var} done # # Report the --help message. # if test "$ac_init_help" = "long"; then # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF \`configure' configures pr3287 4.0 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... To assign environment variables (e.g., CC, CFLAGS...), specify them as VAR=VALUE. See below for descriptions of some of the useful variables. Defaults for the options are specified in brackets. Configuration: -h, --help display this help and exit --help=short display options specific to this package --help=recursive display the short help of all the included packages -V, --version display version information and exit -q, --quiet, --silent do not print \`checking ...' messages --cache-file=FILE cache test results in FILE [disabled] -C, --config-cache alias for \`--cache-file=config.cache' -n, --no-create do not create output files --srcdir=DIR find the sources in DIR [configure dir or \`..'] Installation directories: --prefix=PREFIX install architecture-independent files in PREFIX [$ac_default_prefix] --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX [PREFIX] By default, \`make install' will install all the files in \`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify an installation prefix other than \`$ac_default_prefix' using \`--prefix', for instance \`--prefix=\$HOME'. For better control, use the options below. Fine tuning of the installation directories: --bindir=DIR user executables [EPREFIX/bin] --sbindir=DIR system admin executables [EPREFIX/sbin] --libexecdir=DIR program executables [EPREFIX/libexec] --sysconfdir=DIR read-only single-machine data [PREFIX/etc] --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] --localstatedir=DIR modifiable single-machine data [PREFIX/var] --runstatedir=DIR modifiable per-process data [LOCALSTATEDIR/run] --libdir=DIR object code libraries [EPREFIX/lib] --includedir=DIR C header files [PREFIX/include] --oldincludedir=DIR C header files for non-gcc [/usr/include] --datarootdir=DIR read-only arch.-independent data root [PREFIX/share] --datadir=DIR read-only architecture-independent data [DATAROOTDIR] --infodir=DIR info documentation [DATAROOTDIR/info] --localedir=DIR locale-dependent data [DATAROOTDIR/locale] --mandir=DIR man documentation [DATAROOTDIR/man] --docdir=DIR documentation root [DATAROOTDIR/doc/pr3287] --htmldir=DIR html documentation [DOCDIR] --dvidir=DIR dvi documentation [DOCDIR] --pdfdir=DIR pdf documentation [DOCDIR] --psdir=DIR ps documentation [DOCDIR] _ACEOF cat <<\_ACEOF System types: --build=BUILD configure for building on BUILD [guessed] --host=HOST cross-compile to build programs to run on HOST [BUILD] _ACEOF fi if test -n "$ac_init_help"; then case $ac_init_help in short | recursive ) echo "Configuration of pr3287 4.0:";; esac cat <<\_ACEOF Optional Features: --disable-option-checking ignore unrecognized --enable/--with options --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) --enable-FEATURE[=ARG] include FEATURE [ARG=yes] --disable-dbcs leave out DBCS support --disable-ipv6 leave out IPv6 support Optional Packages: --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) --with-ssl=DIR specify OpenSSL install directory Some influential environment variables: CC C compiler command CFLAGS C compiler flags LDFLAGS linker flags, e.g. -L if you have libraries in a nonstandard directory LIBS libraries to pass to the linker, e.g. -l CPPFLAGS (Objective) C/C++ preprocessor flags, e.g. -I if you have headers in a nonstandard directory CPP C preprocessor Use these variables to override the choices made by `configure' or to help it to find libraries and programs with nonstandard names/locations. Report bugs to the package provider. _ACEOF ac_status=$? fi if test "$ac_init_help" = "recursive"; then # If there are subdirs, report their specific --help. for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue test -d "$ac_dir" || { cd "$srcdir" && ac_pwd=`pwd` && srcdir=. && test -d "$ac_dir"; } || continue ac_builddir=. case "$ac_dir" in .) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` # A ".." for each directory in $ac_dir_suffix. ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` case $ac_top_builddir_sub in "") ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; esac ;; esac ac_abs_top_builddir=$ac_pwd ac_abs_builddir=$ac_pwd$ac_dir_suffix # for backward compatibility: ac_top_builddir=$ac_top_build_prefix case $srcdir in .) # We are building in place. ac_srcdir=. ac_top_srcdir=$ac_top_builddir_sub ac_abs_top_srcdir=$ac_pwd ;; [\\/]* | ?:[\\/]* ) # Absolute name. ac_srcdir=$srcdir$ac_dir_suffix; ac_top_srcdir=$srcdir ac_abs_top_srcdir=$srcdir ;; *) # Relative name. ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix ac_top_srcdir=$ac_top_build_prefix$srcdir ac_abs_top_srcdir=$ac_pwd/$srcdir ;; esac ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix cd "$ac_dir" || { ac_status=$?; continue; } # Check for guested configure. if test -f "$ac_srcdir/configure.gnu"; then echo && $SHELL "$ac_srcdir/configure.gnu" --help=recursive elif test -f "$ac_srcdir/configure"; then echo && $SHELL "$ac_srcdir/configure" --help=recursive else $as_echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2 fi || ac_status=$? cd "$ac_pwd" || { ac_status=$?; break; } done fi test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF pr3287 configure 4.0 generated by GNU Autoconf 2.69 Copyright (C) 2012 Free Software Foundation, Inc. This configure script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it. _ACEOF exit fi ## ------------------------ ## ## Autoconf initialization. ## ## ------------------------ ## # ac_fn_c_try_compile LINENO # -------------------------- # Try to compile conftest.$ac_ext, and return whether this succeeded. ac_fn_c_try_compile () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack rm -f conftest.$ac_objext if { { ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_compile") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then : ac_retval=0 else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_c_try_compile # ac_fn_c_try_link LINENO # ----------------------- # Try to link conftest.$ac_ext, and return whether this succeeded. ac_fn_c_try_link () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack rm -f conftest.$ac_objext conftest$ac_exeext if { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || test -x conftest$ac_exeext }; then : ac_retval=0 else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would # interfere with the next link command; also delete a directory that is # left behind by Apple's compiler. We do this before executing the actions. rm -rf conftest.dSYM conftest_ipa8_conftest.oo eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_c_try_link # ac_fn_c_try_cpp LINENO # ---------------------- # Try to preprocess conftest.$ac_ext, and return whether this succeeded. ac_fn_c_try_cpp () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack if { { ac_try="$ac_cpp conftest.$ac_ext" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } > conftest.i && { test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || test ! -s conftest.err }; then : ac_retval=0 else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_c_try_cpp # ac_fn_c_check_header_mongrel LINENO HEADER VAR INCLUDES # ------------------------------------------------------- # Tests whether HEADER exists, giving a warning if it cannot be compiled using # the include files in INCLUDES and setting the cache variable VAR # accordingly. ac_fn_c_check_header_mongrel () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack if eval \${$3+:} false; then : { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 $as_echo_n "checking for $2... " >&6; } if eval \${$3+:} false; then : $as_echo_n "(cached) " >&6 fi eval ac_res=\$$3 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } else # Is the header compilable? { $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 usability" >&5 $as_echo_n "checking $2 usability... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 #include <$2> _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_header_compiler=yes else ac_header_compiler=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_compiler" >&5 $as_echo "$ac_header_compiler" >&6; } # Is the header present? { $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 presence" >&5 $as_echo_n "checking $2 presence... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include <$2> _ACEOF if ac_fn_c_try_cpp "$LINENO"; then : ac_header_preproc=yes else ac_header_preproc=no fi rm -f conftest.err conftest.i conftest.$ac_ext { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_preproc" >&5 $as_echo "$ac_header_preproc" >&6; } # So? What about this header? case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in #(( yes:no: ) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&5 $as_echo "$as_me: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5 $as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;} ;; no:yes:* ) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: present but cannot be compiled" >&5 $as_echo "$as_me: WARNING: $2: present but cannot be compiled" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: check for missing prerequisite headers?" >&5 $as_echo "$as_me: WARNING: $2: check for missing prerequisite headers?" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: see the Autoconf documentation" >&5 $as_echo "$as_me: WARNING: $2: see the Autoconf documentation" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&5 $as_echo "$as_me: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5 $as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;} ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 $as_echo_n "checking for $2... " >&6; } if eval \${$3+:} false; then : $as_echo_n "(cached) " >&6 else eval "$3=\$ac_header_compiler" fi eval ac_res=\$$3 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } fi eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } # ac_fn_c_check_header_mongrel # ac_fn_c_try_run LINENO # ---------------------- # Try to link conftest.$ac_ext, and return whether this succeeded. Assumes # that executables *can* be run. ac_fn_c_try_run () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack if { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { ac_try='./conftest$ac_exeext' { { case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_try") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; }; then : ac_retval=0 else $as_echo "$as_me: program exited with status $ac_status" >&5 $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=$ac_status fi rm -rf conftest.dSYM conftest_ipa8_conftest.oo eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_c_try_run # ac_fn_c_check_header_compile LINENO HEADER VAR INCLUDES # ------------------------------------------------------- # Tests whether HEADER exists and can be compiled using the include files in # INCLUDES, setting the cache variable VAR accordingly. ac_fn_c_check_header_compile () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 $as_echo_n "checking for $2... " >&6; } if eval \${$3+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 #include <$2> _ACEOF if ac_fn_c_try_compile "$LINENO"; then : eval "$3=yes" else eval "$3=no" fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi eval ac_res=\$$3 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } # ac_fn_c_check_header_compile # ac_fn_c_check_func LINENO FUNC VAR # ---------------------------------- # Tests whether FUNC exists, setting the cache variable VAR accordingly ac_fn_c_check_func () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 $as_echo_n "checking for $2... " >&6; } if eval \${$3+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Define $2 to an innocuous variant, in case declares $2. For example, HP-UX 11i declares gettimeofday. */ #define $2 innocuous_$2 /* System header to define __stub macros and hopefully few prototypes, which can conflict with char $2 (); below. Prefer to if __STDC__ is defined, since exists even on freestanding compilers. */ #ifdef __STDC__ # include #else # include #endif #undef $2 /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char $2 (); /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined __stub_$2 || defined __stub___$2 choke me #endif int main () { return $2 (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : eval "$3=yes" else eval "$3=no" fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi eval ac_res=\$$3 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } # ac_fn_c_check_func cat >config.log <<_ACEOF This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. It was created by pr3287 $as_me 4.0, which was generated by GNU Autoconf 2.69. Invocation command line was $ $0 $@ _ACEOF exec 5>>config.log { cat <<_ASUNAME ## --------- ## ## Platform. ## ## --------- ## hostname = `(hostname || uname -n) 2>/dev/null | sed 1q` uname -m = `(uname -m) 2>/dev/null || echo unknown` uname -r = `(uname -r) 2>/dev/null || echo unknown` uname -s = `(uname -s) 2>/dev/null || echo unknown` uname -v = `(uname -v) 2>/dev/null || echo unknown` /usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown` /bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown` /bin/arch = `(/bin/arch) 2>/dev/null || echo unknown` /usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown` /usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown` /usr/bin/hostinfo = `(/usr/bin/hostinfo) 2>/dev/null || echo unknown` /bin/machine = `(/bin/machine) 2>/dev/null || echo unknown` /usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown` /bin/universe = `(/bin/universe) 2>/dev/null || echo unknown` _ASUNAME as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. $as_echo "PATH: $as_dir" done IFS=$as_save_IFS } >&5 cat >&5 <<_ACEOF ## ----------- ## ## Core tests. ## ## ----------- ## _ACEOF # Keep a trace of the command line. # Strip out --no-create and --no-recursion so they do not pile up. # Strip out --silent because we don't want to record it for future runs. # Also quote any args containing shell meta-characters. # Make two passes to allow for proper duplicate-argument suppression. ac_configure_args= ac_configure_args0= ac_configure_args1= ac_must_keep_next=false for ac_pass in 1 2 do for ac_arg do case $ac_arg in -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil) continue ;; *\'*) ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; esac case $ac_pass in 1) as_fn_append ac_configure_args0 " '$ac_arg'" ;; 2) as_fn_append ac_configure_args1 " '$ac_arg'" if test $ac_must_keep_next = true; then ac_must_keep_next=false # Got value, back to normal. else case $ac_arg in *=* | --config-cache | -C | -disable-* | --disable-* \ | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \ | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \ | -with-* | --with-* | -without-* | --without-* | --x) case "$ac_configure_args0 " in "$ac_configure_args1"*" '$ac_arg' "* ) continue ;; esac ;; -* ) ac_must_keep_next=true ;; esac fi as_fn_append ac_configure_args " '$ac_arg'" ;; esac done done { ac_configure_args0=; unset ac_configure_args0;} { ac_configure_args1=; unset ac_configure_args1;} # When interrupted or exit'd, cleanup temporary files, and complete # config.log. We remove comments because anyway the quotes in there # would cause problems or look ugly. # WARNING: Use '\'' to represent an apostrophe within the trap. # WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug. trap 'exit_status=$? # Save into config.log some information that might help in debugging. { echo $as_echo "## ---------------- ## ## Cache variables. ## ## ---------------- ##" echo # The following way of writing the cache mishandles newlines in values, ( for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do eval ac_val=\$$ac_var case $ac_val in #( *${as_nl}*) case $ac_var in #( *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 $as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; esac case $ac_var in #( _ | IFS | as_nl) ;; #( BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( *) { eval $ac_var=; unset $ac_var;} ;; esac ;; esac done (set) 2>&1 | case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #( *${as_nl}ac_space=\ *) sed -n \ "s/'\''/'\''\\\\'\'''\''/g; s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p" ;; #( *) sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" ;; esac | sort ) echo $as_echo "## ----------------- ## ## Output variables. ## ## ----------------- ##" echo for ac_var in $ac_subst_vars do eval ac_val=\$$ac_var case $ac_val in *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; esac $as_echo "$ac_var='\''$ac_val'\''" done | sort echo if test -n "$ac_subst_files"; then $as_echo "## ------------------- ## ## File substitutions. ## ## ------------------- ##" echo for ac_var in $ac_subst_files do eval ac_val=\$$ac_var case $ac_val in *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; esac $as_echo "$ac_var='\''$ac_val'\''" done | sort echo fi if test -s confdefs.h; then $as_echo "## ----------- ## ## confdefs.h. ## ## ----------- ##" echo cat confdefs.h echo fi test "$ac_signal" != 0 && $as_echo "$as_me: caught signal $ac_signal" $as_echo "$as_me: exit $exit_status" } >&5 rm -f core *.core core.conftest.* && rm -f -r conftest* confdefs* conf$$* $ac_clean_files && exit $exit_status ' 0 for ac_signal in 1 2 13 15; do trap 'ac_signal='$ac_signal'; as_fn_exit 1' $ac_signal done ac_signal=0 # confdefs.h avoids OS command line length limits that DEFS can exceed. rm -f -r conftest* confdefs.h $as_echo "/* confdefs.h */" > confdefs.h # Predefined preprocessor variables. cat >>confdefs.h <<_ACEOF #define PACKAGE_NAME "$PACKAGE_NAME" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_TARNAME "$PACKAGE_TARNAME" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_VERSION "$PACKAGE_VERSION" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_STRING "$PACKAGE_STRING" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_URL "$PACKAGE_URL" _ACEOF # Let the site file select an alternate cache file if it wants to. # Prefer an explicitly selected file to automatically selected ones. ac_site_file1=NONE ac_site_file2=NONE if test -n "$CONFIG_SITE"; then # We do not want a PATH search for config.site. case $CONFIG_SITE in #(( -*) ac_site_file1=./$CONFIG_SITE;; */*) ac_site_file1=$CONFIG_SITE;; *) ac_site_file1=./$CONFIG_SITE;; esac elif test "x$prefix" != xNONE; then ac_site_file1=$prefix/share/config.site ac_site_file2=$prefix/etc/config.site else ac_site_file1=$ac_default_prefix/share/config.site ac_site_file2=$ac_default_prefix/etc/config.site fi for ac_site_file in "$ac_site_file1" "$ac_site_file2" do test "x$ac_site_file" = xNONE && continue if test /dev/null != "$ac_site_file" && test -r "$ac_site_file"; then { $as_echo "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5 $as_echo "$as_me: loading site script $ac_site_file" >&6;} sed 's/^/| /' "$ac_site_file" >&5 . "$ac_site_file" \ || { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "failed to load site script $ac_site_file See \`config.log' for more details" "$LINENO" 5; } fi done if test -r "$cache_file"; then # Some versions of bash will fail to source /dev/null (special files # actually), so we avoid doing that. DJGPP emulates it as a regular file. if test /dev/null != "$cache_file" && test -f "$cache_file"; then { $as_echo "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5 $as_echo "$as_me: loading cache $cache_file" >&6;} case $cache_file in [\\/]* | ?:[\\/]* ) . "$cache_file";; *) . "./$cache_file";; esac fi else { $as_echo "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5 $as_echo "$as_me: creating cache $cache_file" >&6;} >$cache_file fi # Check that the precious variables saved in the cache have kept the same # value. ac_cache_corrupted=false for ac_var in $ac_precious_vars; do eval ac_old_set=\$ac_cv_env_${ac_var}_set eval ac_new_set=\$ac_env_${ac_var}_set eval ac_old_val=\$ac_cv_env_${ac_var}_value eval ac_new_val=\$ac_env_${ac_var}_value case $ac_old_set,$ac_new_set in set,) { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 $as_echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} ac_cache_corrupted=: ;; ,set) { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was not set in the previous run" >&5 $as_echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} ac_cache_corrupted=: ;; ,);; *) if test "x$ac_old_val" != "x$ac_new_val"; then # differences in whitespace do not lead to failure. ac_old_val_w=`echo x $ac_old_val` ac_new_val_w=`echo x $ac_new_val` if test "$ac_old_val_w" != "$ac_new_val_w"; then { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' has changed since the previous run:" >&5 $as_echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} ac_cache_corrupted=: else { $as_echo "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5 $as_echo "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;} eval $ac_var=\$ac_old_val fi { $as_echo "$as_me:${as_lineno-$LINENO}: former value: \`$ac_old_val'" >&5 $as_echo "$as_me: former value: \`$ac_old_val'" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: current value: \`$ac_new_val'" >&5 $as_echo "$as_me: current value: \`$ac_new_val'" >&2;} fi;; esac # Pass precious variables to config.status. if test "$ac_new_set" = set; then case $ac_new_val in *\'*) ac_arg=$ac_var=`$as_echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; *) ac_arg=$ac_var=$ac_new_val ;; esac case " $ac_configure_args " in *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy. *) as_fn_append ac_configure_args " '$ac_arg'" ;; esac fi done if $ac_cache_corrupted; then { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5 $as_echo "$as_me: error: changes in the environment can compromise the build" >&2;} as_fn_error $? "run \`make distclean' and/or \`rm $cache_file' and start over" "$LINENO" 5 fi ## -------------------- ## ## Main body of script. ## ## -------------------- ## ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu ac_aux_dir= for ac_dir in "$srcdir" "$srcdir/.." "$srcdir/../.."; do if test -f "$ac_dir/install-sh"; then ac_aux_dir=$ac_dir ac_install_sh="$ac_aux_dir/install-sh -c" break elif test -f "$ac_dir/install.sh"; then ac_aux_dir=$ac_dir ac_install_sh="$ac_aux_dir/install.sh -c" break elif test -f "$ac_dir/shtool"; then ac_aux_dir=$ac_dir ac_install_sh="$ac_aux_dir/shtool install -c" break fi done if test -z "$ac_aux_dir"; then as_fn_error $? "cannot find install-sh, install.sh, or shtool in \"$srcdir\" \"$srcdir/..\" \"$srcdir/../..\"" "$LINENO" 5 fi # These three variables are undocumented and unsupported, # and are intended to be withdrawn in a future Autoconf release. # They can cause serious problems if a builder's source tree is in a directory # whose full name contains unusual characters. ac_config_guess="$SHELL $ac_aux_dir/config.guess" # Please don't use this var. ac_config_sub="$SHELL $ac_aux_dir/config.sub" # Please don't use this var. ac_configure="$SHELL $ac_aux_dir/configure" # Please don't use this var. # Find a good install program. We prefer a C program (faster), # so one script is as good as another. But avoid the broken or # incompatible versions: # SysV /etc/install, /usr/sbin/install # SunOS /usr/etc/install # IRIX /sbin/install # AIX /bin/install # AmigaOS /C/install, which installs bootblocks on floppy discs # AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag # AFS /usr/afsws/bin/install, which mishandles nonexistent args # SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" # OS/2's system install, which has a completely different semantic # ./install, which can be erroneously created by make from ./install.sh. # Reject install programs that cannot install multiple files. { $as_echo "$as_me:${as_lineno-$LINENO}: checking for a BSD-compatible install" >&5 $as_echo_n "checking for a BSD-compatible install... " >&6; } if test -z "$INSTALL"; then if ${ac_cv_path_install+:} false; then : $as_echo_n "(cached) " >&6 else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. # Account for people who put trailing slashes in PATH elements. case $as_dir/ in #(( ./ | .// | /[cC]/* | \ /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \ ?:[\\/]os2[\\/]install[\\/]* | ?:[\\/]OS2[\\/]INSTALL[\\/]* | \ /usr/ucb/* ) ;; *) # OSF1 and SCO ODT 3.0 have their own names for install. # Don't use installbsd from OSF since it installs stuff as root # by default. for ac_prog in ginstall scoinst install; do for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then if test $ac_prog = install && grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then # AIX install. It has an incompatible calling convention. : elif test $ac_prog = install && grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then # program-specific install script used by HP pwplus--don't use. : else rm -rf conftest.one conftest.two conftest.dir echo one > conftest.one echo two > conftest.two mkdir conftest.dir if "$as_dir/$ac_prog$ac_exec_ext" -c conftest.one conftest.two "`pwd`/conftest.dir" && test -s conftest.one && test -s conftest.two && test -s conftest.dir/conftest.one && test -s conftest.dir/conftest.two then ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c" break 3 fi fi fi done done ;; esac done IFS=$as_save_IFS rm -rf conftest.one conftest.two conftest.dir fi if test "${ac_cv_path_install+set}" = set; then INSTALL=$ac_cv_path_install else # As a last resort, use the slow shell script. Don't cache a # value for INSTALL within a source directory, because that will # break other packages using the cache if that directory is # removed, or if the value is a relative name. INSTALL=$ac_install_sh fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $INSTALL" >&5 $as_echo "$INSTALL" >&6; } # Use test -z because SunOS4 sh mishandles braces in ${var-val}. # It thinks the first close brace ends the variable substitution. test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}' test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}' test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. set dummy ${ac_tool_prefix}gcc; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CC="${ac_tool_prefix}gcc" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_CC"; then ac_ct_CC=$CC # Extract the first word of "gcc", so it can be a program name with args. set dummy gcc; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CC="gcc" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 $as_echo "$ac_ct_CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_CC" = x; then CC="" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CC=$ac_ct_CC fi else CC="$ac_cv_prog_CC" fi if test -z "$CC"; then if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. set dummy ${ac_tool_prefix}cc; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CC="${ac_tool_prefix}cc" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi fi if test -z "$CC"; then # Extract the first word of "cc", so it can be a program name with args. set dummy cc; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else ac_prog_rejected=no as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then ac_prog_rejected=yes continue fi ac_cv_prog_CC="cc" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS if test $ac_prog_rejected = yes; then # We found a bogon in the path, so make sure we never use it. set dummy $ac_cv_prog_CC shift if test $# != 0; then # We chose a different compiler from the bogus one. # However, it has the same basename, so the bogon will be chosen # first if we set CC to just the basename; use the full file name. shift ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@" fi fi fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$CC"; then if test -n "$ac_tool_prefix"; then for ac_prog in cl.exe do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CC="$ac_tool_prefix$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$CC" && break done fi if test -z "$CC"; then ac_ct_CC=$CC for ac_prog in cl.exe do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CC="$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 $as_echo "$ac_ct_CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$ac_ct_CC" && break done if test "x$ac_ct_CC" = x; then CC="" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CC=$ac_ct_CC fi fi fi test -z "$CC" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "no acceptable C compiler found in \$PATH See \`config.log' for more details" "$LINENO" 5; } # Provide some information about the compiler. $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5 set X $ac_compile ac_compiler=$2 for ac_option in --version -v -V -qversion; do { { ac_try="$ac_compiler $ac_option >&5" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_compiler $ac_option >&5") 2>conftest.err ac_status=$? if test -s conftest.err; then sed '10a\ ... rest of stderr output deleted ... 10q' conftest.err >conftest.er1 cat conftest.er1 >&5 fi rm -f conftest.er1 conftest.err $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } done cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF ac_clean_files_save=$ac_clean_files ac_clean_files="$ac_clean_files a.out a.out.dSYM a.exe b.out" # Try to create an executable without -o first, disregard a.out. # It will help us diagnose broken compilers, and finding out an intuition # of exeext. { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler works" >&5 $as_echo_n "checking whether the C compiler works... " >&6; } ac_link_default=`$as_echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'` # The possible output files: ac_files="a.out conftest.exe conftest a.exe a_out.exe b.out conftest.*" ac_rmfiles= for ac_file in $ac_files do case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; * ) ac_rmfiles="$ac_rmfiles $ac_file";; esac done rm -f $ac_rmfiles if { { ac_try="$ac_link_default" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link_default") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then : # Autoconf-2.13 could set the ac_cv_exeext variable to `no'. # So ignore a value of `no', otherwise this would lead to `EXEEXT = no' # in a Makefile. We should not override ac_cv_exeext if it was cached, # so that the user can short-circuit this test for compilers unknown to # Autoconf. for ac_file in $ac_files '' do test -f "$ac_file" || continue case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; [ab].out ) # We found the default executable, but exeext='' is most # certainly right. break;; *.* ) if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no; then :; else ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` fi # We set ac_cv_exeext here because the later test for it is not # safe: cross compilers may not add the suffix if given an `-o' # argument, so we may need to know it at that point already. # Even if this section looks crufty: it has the advantage of # actually working. break;; * ) break;; esac done test "$ac_cv_exeext" = no && ac_cv_exeext= else ac_file='' fi if test -z "$ac_file"; then : { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error 77 "C compiler cannot create executables See \`config.log' for more details" "$LINENO" 5; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler default output file name" >&5 $as_echo_n "checking for C compiler default output file name... " >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5 $as_echo "$ac_file" >&6; } ac_exeext=$ac_cv_exeext rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out ac_clean_files=$ac_clean_files_save { $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5 $as_echo_n "checking for suffix of executables... " >&6; } if { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then : # If both `conftest.exe' and `conftest' are `present' (well, observable) # catch `conftest.exe'. For instance with Cygwin, `ls conftest' will # work properly (i.e., refer to `conftest.exe'), while it won't with # `rm'. for ac_file in conftest.exe conftest conftest.*; do test -f "$ac_file" || continue case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` break;; * ) break;; esac done else { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "cannot compute suffix of executables: cannot compile and link See \`config.log' for more details" "$LINENO" 5; } fi rm -f conftest conftest$ac_cv_exeext { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5 $as_echo "$ac_cv_exeext" >&6; } rm -f conftest.$ac_ext EXEEXT=$ac_cv_exeext ac_exeext=$EXEEXT cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main () { FILE *f = fopen ("conftest.out", "w"); return ferror (f) || fclose (f) != 0; ; return 0; } _ACEOF ac_clean_files="$ac_clean_files conftest.out" # Check that the compiler produces executables we can run. If not, either # the compiler is broken, or we cross compile. { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5 $as_echo_n "checking whether we are cross compiling... " >&6; } if test "$cross_compiling" != yes; then { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } if { ac_try='./conftest$ac_cv_exeext' { { case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_try") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; }; then cross_compiling=no else if test "$cross_compiling" = maybe; then cross_compiling=yes else { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "cannot run C compiled programs. If you meant to cross compile, use \`--host'. See \`config.log' for more details" "$LINENO" 5; } fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5 $as_echo "$cross_compiling" >&6; } rm -f conftest.$ac_ext conftest$ac_cv_exeext conftest.out ac_clean_files=$ac_clean_files_save { $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5 $as_echo_n "checking for suffix of object files... " >&6; } if ${ac_cv_objext+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF rm -f conftest.o conftest.obj if { { ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_compile") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then : for ac_file in conftest.o conftest.obj conftest.*; do test -f "$ac_file" || continue; case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM ) ;; *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'` break;; esac done else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "cannot compute suffix of object files: cannot compile See \`config.log' for more details" "$LINENO" 5; } fi rm -f conftest.$ac_cv_objext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5 $as_echo "$ac_cv_objext" >&6; } OBJEXT=$ac_cv_objext ac_objext=$OBJEXT { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C compiler" >&5 $as_echo_n "checking whether we are using the GNU C compiler... " >&6; } if ${ac_cv_c_compiler_gnu+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { #ifndef __GNUC__ choke me #endif ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_compiler_gnu=yes else ac_compiler_gnu=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_cv_c_compiler_gnu=$ac_compiler_gnu fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5 $as_echo "$ac_cv_c_compiler_gnu" >&6; } if test $ac_compiler_gnu = yes; then GCC=yes else GCC= fi ac_test_CFLAGS=${CFLAGS+set} ac_save_CFLAGS=$CFLAGS { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5 $as_echo_n "checking whether $CC accepts -g... " >&6; } if ${ac_cv_prog_cc_g+:} false; then : $as_echo_n "(cached) " >&6 else ac_save_c_werror_flag=$ac_c_werror_flag ac_c_werror_flag=yes ac_cv_prog_cc_g=no CFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_prog_cc_g=yes else CFLAGS="" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : else ac_c_werror_flag=$ac_save_c_werror_flag CFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_prog_cc_g=yes fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_c_werror_flag=$ac_save_c_werror_flag fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5 $as_echo "$ac_cv_prog_cc_g" >&6; } if test "$ac_test_CFLAGS" = set; then CFLAGS=$ac_save_CFLAGS elif test $ac_cv_prog_cc_g = yes; then if test "$GCC" = yes; then CFLAGS="-g -O2" else CFLAGS="-g" fi else if test "$GCC" = yes; then CFLAGS="-O2" else CFLAGS= fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5 $as_echo_n "checking for $CC option to accept ISO C89... " >&6; } if ${ac_cv_prog_cc_c89+:} false; then : $as_echo_n "(cached) " >&6 else ac_cv_prog_cc_c89=no ac_save_CC=$CC cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include struct stat; /* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */ struct buf { int x; }; FILE * (*rcsopen) (struct buf *, struct stat *, int); static char *e (p, i) char **p; int i; { return p[i]; } static char *f (char * (*g) (char **, int), char **p, ...) { char *s; va_list v; va_start (v,p); s = g (p, va_arg (v,int)); va_end (v); return s; } /* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has function prototypes and stuff, but not '\xHH' hex character constants. These don't provoke an error unfortunately, instead are silently treated as 'x'. The following induces an error, until -std is added to get proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an array size at least. It's necessary to write '\x00'==0 to get something that's true only with -std. */ int osf4_cc_array ['\x00' == 0 ? 1 : -1]; /* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters inside strings and character constants. */ #define FOO(x) 'x' int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1]; int test (int i, double x); struct s1 {int (*f) (int a);}; struct s2 {int (*f) (double a);}; int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int); int argc; char **argv; int main () { return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]; ; return 0; } _ACEOF for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \ -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" do CC="$ac_save_CC $ac_arg" if ac_fn_c_try_compile "$LINENO"; then : ac_cv_prog_cc_c89=$ac_arg fi rm -f core conftest.err conftest.$ac_objext test "x$ac_cv_prog_cc_c89" != "xno" && break done rm -f conftest.$ac_ext CC=$ac_save_CC fi # AC_CACHE_VAL case "x$ac_cv_prog_cc_c89" in x) { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 $as_echo "none needed" >&6; } ;; xno) { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 $as_echo "unsupported" >&6; } ;; *) CC="$CC $ac_cv_prog_cc_c89" { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5 $as_echo "$ac_cv_prog_cc_c89" >&6; } ;; esac if test "x$ac_cv_prog_cc_c89" != xno; then : fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu # Make sure we can run config.sub. $SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 || as_fn_error $? "cannot run $SHELL $ac_aux_dir/config.sub" "$LINENO" 5 { $as_echo "$as_me:${as_lineno-$LINENO}: checking build system type" >&5 $as_echo_n "checking build system type... " >&6; } if ${ac_cv_build+:} false; then : $as_echo_n "(cached) " >&6 else ac_build_alias=$build_alias test "x$ac_build_alias" = x && ac_build_alias=`$SHELL "$ac_aux_dir/config.guess"` test "x$ac_build_alias" = x && as_fn_error $? "cannot guess build type; you must specify one" "$LINENO" 5 ac_cv_build=`$SHELL "$ac_aux_dir/config.sub" $ac_build_alias` || as_fn_error $? "$SHELL $ac_aux_dir/config.sub $ac_build_alias failed" "$LINENO" 5 fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build" >&5 $as_echo "$ac_cv_build" >&6; } case $ac_cv_build in *-*-*) ;; *) as_fn_error $? "invalid value of canonical build" "$LINENO" 5;; esac build=$ac_cv_build ac_save_IFS=$IFS; IFS='-' set x $ac_cv_build shift build_cpu=$1 build_vendor=$2 shift; shift # Remember, the first character of IFS is used to create $*, # except with old shells: build_os=$* IFS=$ac_save_IFS case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking host system type" >&5 $as_echo_n "checking host system type... " >&6; } if ${ac_cv_host+:} false; then : $as_echo_n "(cached) " >&6 else if test "x$host_alias" = x; then ac_cv_host=$ac_cv_build else ac_cv_host=`$SHELL "$ac_aux_dir/config.sub" $host_alias` || as_fn_error $? "$SHELL $ac_aux_dir/config.sub $host_alias failed" "$LINENO" 5 fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_host" >&5 $as_echo "$ac_cv_host" >&6; } case $ac_cv_host in *-*-*) ;; *) as_fn_error $? "invalid value of canonical host" "$LINENO" 5;; esac host=$ac_cv_host ac_save_IFS=$IFS; IFS='-' set x $ac_cv_host shift host_cpu=$1 host_vendor=$2 shift; shift # Remember, the first character of IFS is used to create $*, # except with old shells: host_os=$* IFS=$ac_save_IFS case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac ansi="-std=c99 -pedantic" case "$host_os" in *cygwin*) ansi="" ;; solaris2*) CPPFLAGS=-D__EXTENSIONS__ ;; darwin*) CCOPTIONS="-no-cpp-precomp -Wno-deprecated-declarations" ;; linux*) CPPFLAGS="$CPPFLAGS -D_BSD_SOURCE -D_DEFAULT_SOURCE -D_POSIX_SOURCE -D_XOPEN_SOURCE" ;; esac if test "$GCC" = yes then # Add common gcc options, plus flags for dependency generation. CCOPTIONS="$CCOPTIONS -Wall -Wsign-compare $ansi -Wno-variadic-macros -MMD -MP" fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing gethostbyname" >&5 $as_echo_n "checking for library containing gethostbyname... " >&6; } if ${ac_cv_search_gethostbyname+:} false; then : $as_echo_n "(cached) " >&6 else ac_func_search_save_LIBS=$LIBS cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char gethostbyname (); int main () { return gethostbyname (); ; return 0; } _ACEOF for ac_lib in '' nsl; do if test -z "$ac_lib"; then ac_res="none required" else ac_res=-l$ac_lib LIBS="-l$ac_lib $ac_func_search_save_LIBS" fi if ac_fn_c_try_link "$LINENO"; then : ac_cv_search_gethostbyname=$ac_res fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext if ${ac_cv_search_gethostbyname+:} false; then : break fi done if ${ac_cv_search_gethostbyname+:} false; then : else ac_cv_search_gethostbyname=no fi rm conftest.$ac_ext LIBS=$ac_func_search_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_gethostbyname" >&5 $as_echo "$ac_cv_search_gethostbyname" >&6; } ac_res=$ac_cv_search_gethostbyname if test "$ac_res" != no; then : test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing socket" >&5 $as_echo_n "checking for library containing socket... " >&6; } if ${ac_cv_search_socket+:} false; then : $as_echo_n "(cached) " >&6 else ac_func_search_save_LIBS=$LIBS cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char socket (); int main () { return socket (); ; return 0; } _ACEOF for ac_lib in '' socket; do if test -z "$ac_lib"; then ac_res="none required" else ac_res=-l$ac_lib LIBS="-l$ac_lib $ac_func_search_save_LIBS" fi if ac_fn_c_try_link "$LINENO"; then : ac_cv_search_socket=$ac_res fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext if ${ac_cv_search_socket+:} false; then : break fi done if ${ac_cv_search_socket+:} false; then : else ac_cv_search_socket=no fi rm conftest.$ac_ext LIBS=$ac_func_search_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_socket" >&5 $as_echo "$ac_cv_search_socket" >&6; } ac_res=$ac_cv_search_socket if test "$ac_res" != no; then : test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C preprocessor" >&5 $as_echo_n "checking how to run the C preprocessor... " >&6; } # On Suns, sometimes $CPP names a directory. if test -n "$CPP" && test -d "$CPP"; then CPP= fi if test -z "$CPP"; then if ${ac_cv_prog_CPP+:} false; then : $as_echo_n "(cached) " >&6 else # Double quotes because CPP needs to be expanded for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp" do ac_preproc_ok=false for ac_c_preproc_warn_flag in '' yes do # Use a header file that comes with gcc, so configuring glibc # with a fresh cross-compiler works. # Prefer to if __STDC__ is defined, since # exists even on freestanding compilers. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifdef __STDC__ # include #else # include #endif Syntax error _ACEOF if ac_fn_c_try_cpp "$LINENO"; then : else # Broken: fails on valid input. continue fi rm -f conftest.err conftest.i conftest.$ac_ext # OK, works on sane cases. Now check whether nonexistent headers # can be detected and how. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if ac_fn_c_try_cpp "$LINENO"; then : # Broken: success on invalid input. continue else # Passes both tests. ac_preproc_ok=: break fi rm -f conftest.err conftest.i conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f conftest.i conftest.err conftest.$ac_ext if $ac_preproc_ok; then : break fi done ac_cv_prog_CPP=$CPP fi CPP=$ac_cv_prog_CPP else ac_cv_prog_CPP=$CPP fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CPP" >&5 $as_echo "$CPP" >&6; } ac_preproc_ok=false for ac_c_preproc_warn_flag in '' yes do # Use a header file that comes with gcc, so configuring glibc # with a fresh cross-compiler works. # Prefer to if __STDC__ is defined, since # exists even on freestanding compilers. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifdef __STDC__ # include #else # include #endif Syntax error _ACEOF if ac_fn_c_try_cpp "$LINENO"; then : else # Broken: fails on valid input. continue fi rm -f conftest.err conftest.i conftest.$ac_ext # OK, works on sane cases. Now check whether nonexistent headers # can be detected and how. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if ac_fn_c_try_cpp "$LINENO"; then : # Broken: success on invalid input. continue else # Passes both tests. ac_preproc_ok=: break fi rm -f conftest.err conftest.i conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f conftest.i conftest.err conftest.$ac_ext if $ac_preproc_ok; then : else { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "C preprocessor \"$CPP\" fails sanity check See \`config.log' for more details" "$LINENO" 5; } fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu { $as_echo "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5 $as_echo_n "checking for grep that handles long lines and -e... " >&6; } if ${ac_cv_path_GREP+:} false; then : $as_echo_n "(cached) " >&6 else if test -z "$GREP"; then ac_path_GREP_found=false # Loop through the user's path and test for each of PROGNAME-LIST as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_prog in grep ggrep; do for ac_exec_ext in '' $ac_executable_extensions; do ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext" as_fn_executable_p "$ac_path_GREP" || continue # Check for GNU ac_path_GREP and select it if it is found. # Check for GNU $ac_path_GREP case `"$ac_path_GREP" --version 2>&1` in *GNU*) ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;; *) ac_count=0 $as_echo_n 0123456789 >"conftest.in" while : do cat "conftest.in" "conftest.in" >"conftest.tmp" mv "conftest.tmp" "conftest.in" cp "conftest.in" "conftest.nl" $as_echo 'GREP' >> "conftest.nl" "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break as_fn_arith $ac_count + 1 && ac_count=$as_val if test $ac_count -gt ${ac_path_GREP_max-0}; then # Best one so far, save it but keep looking for a better one ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_max=$ac_count fi # 10*(2^10) chars as input seems more than enough test $ac_count -gt 10 && break done rm -f conftest.in conftest.tmp conftest.nl conftest.out;; esac $ac_path_GREP_found && break 3 done done done IFS=$as_save_IFS if test -z "$ac_cv_path_GREP"; then as_fn_error $? "no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 fi else ac_cv_path_GREP=$GREP fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP" >&5 $as_echo "$ac_cv_path_GREP" >&6; } GREP="$ac_cv_path_GREP" { $as_echo "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5 $as_echo_n "checking for egrep... " >&6; } if ${ac_cv_path_EGREP+:} false; then : $as_echo_n "(cached) " >&6 else if echo a | $GREP -E '(a|b)' >/dev/null 2>&1 then ac_cv_path_EGREP="$GREP -E" else if test -z "$EGREP"; then ac_path_EGREP_found=false # Loop through the user's path and test for each of PROGNAME-LIST as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_prog in egrep; do for ac_exec_ext in '' $ac_executable_extensions; do ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext" as_fn_executable_p "$ac_path_EGREP" || continue # Check for GNU ac_path_EGREP and select it if it is found. # Check for GNU $ac_path_EGREP case `"$ac_path_EGREP" --version 2>&1` in *GNU*) ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;; *) ac_count=0 $as_echo_n 0123456789 >"conftest.in" while : do cat "conftest.in" "conftest.in" >"conftest.tmp" mv "conftest.tmp" "conftest.in" cp "conftest.in" "conftest.nl" $as_echo 'EGREP' >> "conftest.nl" "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break as_fn_arith $ac_count + 1 && ac_count=$as_val if test $ac_count -gt ${ac_path_EGREP_max-0}; then # Best one so far, save it but keep looking for a better one ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_max=$ac_count fi # 10*(2^10) chars as input seems more than enough test $ac_count -gt 10 && break done rm -f conftest.in conftest.tmp conftest.nl conftest.out;; esac $ac_path_EGREP_found && break 3 done done done IFS=$as_save_IFS if test -z "$ac_cv_path_EGREP"; then as_fn_error $? "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 fi else ac_cv_path_EGREP=$EGREP fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5 $as_echo "$ac_cv_path_EGREP" >&6; } EGREP="$ac_cv_path_EGREP" { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5 $as_echo_n "checking for ANSI C header files... " >&6; } if ${ac_cv_header_stdc+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include #include #include int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_header_stdc=yes else ac_cv_header_stdc=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext if test $ac_cv_header_stdc = yes; then # SunOS 4.x string.h does not declare mem*, contrary to ANSI. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "memchr" >/dev/null 2>&1; then : else ac_cv_header_stdc=no fi rm -f conftest* fi if test $ac_cv_header_stdc = yes; then # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "free" >/dev/null 2>&1; then : else ac_cv_header_stdc=no fi rm -f conftest* fi if test $ac_cv_header_stdc = yes; then # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. if test "$cross_compiling" = yes; then : : else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include #if ((' ' & 0x0FF) == 0x020) # define ISLOWER(c) ('a' <= (c) && (c) <= 'z') # define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) #else # define ISLOWER(c) \ (('a' <= (c) && (c) <= 'i') \ || ('j' <= (c) && (c) <= 'r') \ || ('s' <= (c) && (c) <= 'z')) # define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) #endif #define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) int main () { int i; for (i = 0; i < 256; i++) if (XOR (islower (i), ISLOWER (i)) || toupper (i) != TOUPPER (i)) return 2; return 0; } _ACEOF if ac_fn_c_try_run "$LINENO"; then : else ac_cv_header_stdc=no fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdc" >&5 $as_echo "$ac_cv_header_stdc" >&6; } if test $ac_cv_header_stdc = yes; then $as_echo "#define STDC_HEADERS 1" >>confdefs.h fi # On IRIX 5.3, sys/types and inttypes.h are conflicting. for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \ inttypes.h stdint.h unistd.h do : as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default " if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : cat >>confdefs.h <<_ACEOF #define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF fi done for ac_header in iconv.h do : ac_fn_c_check_header_mongrel "$LINENO" "iconv.h" "ac_cv_header_iconv_h" "$ac_includes_default" if test "x$ac_cv_header_iconv_h" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_ICONV_H 1 _ACEOF fi done # Check whether --with-ssl was given. if test "${with_ssl+set}" = set; then : withval=$with_ssl; fi if test "$enable_tls" != no then orig_CPPFLAGS="$CPPFLAGS" unset any for dir in "$with_ssl" /usr/local /usr/local/ssl /usr/lib/ssl /usr/pkg/ssl /usr/ssl /var/ssl /opt/ssl do header_fail=0 if test -n "$dir" -a ! -d "$dir/include" then header_fail=1 continue fi if test -n "$any" then { $as_echo "$as_me:${as_lineno-$LINENO}: retrying with -I$dir/include" >&5 $as_echo "$as_me: retrying with -I$dir/include" >&6;} fi if test -n "$dir" then CPPFLAGS="$orig_CPPFLAGS -I$dir/include" fi for ac_header in openssl/ssl.h do : ac_fn_c_check_header_mongrel "$LINENO" "openssl/ssl.h" "ac_cv_header_openssl_ssl_h" "$ac_includes_default" if test "x$ac_cv_header_openssl_ssl_h" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_OPENSSL_SSL_H 1 _ACEOF else header_fail=1 fi done if test "$header_fail" -eq 0 then break fi unset `echo ac_cv_header_openssl/ssl_h | $as_tr_sh` CPPFLAGS="$orig_CPPFLAGS" any=1 done if test $header_fail -eq 1 then { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Disabling TLS" >&5 $as_echo "$as_me: WARNING: Disabling TLS" >&2;} enable_tls="no" unset HAVE_LIBSSL fi fi for ac_func in vasprintf do : ac_fn_c_check_func "$LINENO" "vasprintf" "ac_cv_func_vasprintf" if test "x$ac_cv_func_vasprintf" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_VASPRINTF 1 _ACEOF fi done LIBX3270DIR='${sysconfdir}/x3270' # Check whether --enable-dbcs was given. if test "${enable_dbcs+set}" = set; then : enableval=$enable_dbcs; fi case "$enable_dbcs" in no) ;; *) $as_echo "#define X3270_DBCS 1" >>confdefs.h ;; esac # Check whether --enable-ipv6 was given. if test "${enable_ipv6+set}" = set; then : enableval=$enable_ipv6; fi case "$enable_ipv6" in ""|yes) $as_echo "#define X3270_IPV6 1" >>confdefs.h ;; esac ac_config_headers="$ac_config_headers conf.h" ac_config_files="$ac_config_files Makefile Makefile.obj" cat >confcache <<\_ACEOF # This file is a shell script that caches the results of configure # tests run on this system so they can be shared between configure # scripts and configure runs, see configure's option --config-cache. # It is not useful on other systems. If it contains results you don't # want to keep, you may remove or edit it. # # config.status only pays attention to the cache file if you give it # the --recheck option to rerun configure. # # `ac_cv_env_foo' variables (set or unset) will be overridden when # loading this file, other *unset* `ac_cv_foo' will be assigned the # following values. _ACEOF # The following way of writing the cache mishandles newlines in values, # but we know of no workaround that is simple, portable, and efficient. # So, we kill variables containing newlines. # Ultrix sh set writes to stderr and can't be redirected directly, # and sets the high bit in the cache file unless we assign to the vars. ( for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do eval ac_val=\$$ac_var case $ac_val in #( *${as_nl}*) case $ac_var in #( *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 $as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; esac case $ac_var in #( _ | IFS | as_nl) ;; #( BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( *) { eval $ac_var=; unset $ac_var;} ;; esac ;; esac done (set) 2>&1 | case $as_nl`(ac_space=' '; set) 2>&1` in #( *${as_nl}ac_space=\ *) # `set' does not quote correctly, so add quotes: double-quote # substitution turns \\\\ into \\, and sed turns \\ into \. sed -n \ "s/'/'\\\\''/g; s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" ;; #( *) # `set' quotes correctly as required by POSIX, so do not add quotes. sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" ;; esac | sort ) | sed ' /^ac_cv_env_/b end t clear :clear s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/ t end s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ :end' >>confcache if diff "$cache_file" confcache >/dev/null 2>&1; then :; else if test -w "$cache_file"; then if test "x$cache_file" != "x/dev/null"; then { $as_echo "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5 $as_echo "$as_me: updating cache $cache_file" >&6;} if test ! -f "$cache_file" || test -h "$cache_file"; then cat confcache >"$cache_file" else case $cache_file in #( */* | ?:*) mv -f confcache "$cache_file"$$ && mv -f "$cache_file"$$ "$cache_file" ;; #( *) mv -f confcache "$cache_file" ;; esac fi fi else { $as_echo "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5 $as_echo "$as_me: not updating unwritable cache $cache_file" >&6;} fi fi rm -f confcache test "x$prefix" = xNONE && prefix=$ac_default_prefix # Let make expand exec_prefix. test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' DEFS=-DHAVE_CONFIG_H ac_libobjs= ac_ltlibobjs= U= for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue # 1. Remove the extension, and $U if already installed. ac_script='s/\$U\././;s/\.o$//;s/\.obj$//' ac_i=`$as_echo "$ac_i" | sed "$ac_script"` # 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR # will be set to the directory where LIBOBJS objects are built. as_fn_append ac_libobjs " \${LIBOBJDIR}$ac_i\$U.$ac_objext" as_fn_append ac_ltlibobjs " \${LIBOBJDIR}$ac_i"'$U.lo' done LIBOBJS=$ac_libobjs LTLIBOBJS=$ac_ltlibobjs : "${CONFIG_STATUS=./config.status}" ac_write_fail=0 ac_clean_files_save=$ac_clean_files ac_clean_files="$ac_clean_files $CONFIG_STATUS" { $as_echo "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5 $as_echo "$as_me: creating $CONFIG_STATUS" >&6;} as_write_fail=0 cat >$CONFIG_STATUS <<_ASEOF || as_write_fail=1 #! $SHELL # Generated by $as_me. # Run this file to recreate the current configuration. # Compiler output produced by configure, useful for debugging # configure, is in config.log if it exists. debug=false ac_cs_recheck=false ac_cs_silent=false SHELL=\${CONFIG_SHELL-$SHELL} export SHELL _ASEOF cat >>$CONFIG_STATUS <<\_ASEOF || as_write_fail=1 ## -------------------- ## ## M4sh Initialization. ## ## -------------------- ## # Be more Bourne compatible DUALCASE=1; export DUALCASE # for MKS sh if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST else case `(set -o) 2>/dev/null` in #( *posix*) : set -o posix ;; #( *) : ;; esac fi as_nl=' ' export as_nl # Printing a long string crashes Solaris 7 /usr/bin/printf. as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo # Prefer a ksh shell builtin over an external printf program on Solaris, # but without wasting forks for bash or zsh. if test -z "$BASH_VERSION$ZSH_VERSION" \ && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then as_echo='print -r --' as_echo_n='print -rn --' elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then as_echo='printf %s\n' as_echo_n='printf %s' else if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' as_echo_n='/usr/ucb/echo -n' else as_echo_body='eval expr "X$1" : "X\\(.*\\)"' as_echo_n_body='eval arg=$1; case $arg in #( *"$as_nl"*) expr "X$arg" : "X\\(.*\\)$as_nl"; arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; esac; expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" ' export as_echo_n_body as_echo_n='sh -c $as_echo_n_body as_echo' fi export as_echo_body as_echo='sh -c $as_echo_body as_echo' fi # The user is always right. if test "${PATH_SEPARATOR+set}" != set; then PATH_SEPARATOR=: (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || PATH_SEPARATOR=';' } fi # IFS # We need space, tab and new line, in precisely that order. Quoting is # there to prevent editors from complaining about space-tab. # (If _AS_PATH_WALK were called with IFS unset, it would disable word # splitting by setting IFS to empty value.) IFS=" "" $as_nl" # Find who we are. Look in the path if we contain no directory separator. as_myself= case $0 in #(( *[\\/]* ) as_myself=$0 ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break done IFS=$as_save_IFS ;; esac # We did not find ourselves, most probably we were run as `sh COMMAND' # in which case we are not to be found in the path. if test "x$as_myself" = x; then as_myself=$0 fi if test ! -f "$as_myself"; then $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 exit 1 fi # Unset variables that we do not need and which cause bugs (e.g. in # pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" # suppresses any "Segmentation fault" message there. '((' could # trigger a bug in pdksh 5.2.14. for as_var in BASH_ENV ENV MAIL MAILPATH do eval test x\${$as_var+set} = xset \ && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : done PS1='$ ' PS2='> ' PS4='+ ' # NLS nuisances. LC_ALL=C export LC_ALL LANGUAGE=C export LANGUAGE # CDPATH. (unset CDPATH) >/dev/null 2>&1 && unset CDPATH # as_fn_error STATUS ERROR [LINENO LOG_FD] # ---------------------------------------- # Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are # provided, also output the error to LOG_FD, referencing LINENO. Then exit the # script with STATUS, using 1 if that was 0. as_fn_error () { as_status=$1; test $as_status -eq 0 && as_status=1 if test "$4"; then as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 fi $as_echo "$as_me: error: $2" >&2 as_fn_exit $as_status } # as_fn_error # as_fn_set_status STATUS # ----------------------- # Set $? to STATUS, without forking. as_fn_set_status () { return $1 } # as_fn_set_status # as_fn_exit STATUS # ----------------- # Exit the shell with STATUS, even in a "trap 0" or "set -e" context. as_fn_exit () { set +e as_fn_set_status $1 exit $1 } # as_fn_exit # as_fn_unset VAR # --------------- # Portably unset VAR. as_fn_unset () { { eval $1=; unset $1;} } as_unset=as_fn_unset # as_fn_append VAR VALUE # ---------------------- # Append the text in VALUE to the end of the definition contained in VAR. Take # advantage of any shell optimizations that allow amortized linear growth over # repeated appends, instead of the typical quadratic growth present in naive # implementations. if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : eval 'as_fn_append () { eval $1+=\$2 }' else as_fn_append () { eval $1=\$$1\$2 } fi # as_fn_append # as_fn_arith ARG... # ------------------ # Perform arithmetic evaluation on the ARGs, and store the result in the # global $as_val. Take advantage of shells that can avoid forks. The arguments # must be portable across $(()) and expr. if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : eval 'as_fn_arith () { as_val=$(( $* )) }' else as_fn_arith () { as_val=`expr "$@" || test $? -eq 1` } fi # as_fn_arith if expr a : '\(a\)' >/dev/null 2>&1 && test "X`expr 00001 : '.*\(...\)'`" = X001; then as_expr=expr else as_expr=false fi if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then as_basename=basename else as_basename=false fi if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then as_dirname=dirname else as_dirname=false fi as_me=`$as_basename -- "$0" || $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ X"$0" : 'X\(//\)$' \| \ X"$0" : 'X\(/\)' \| . 2>/dev/null || $as_echo X/"$0" | sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/ q } /^X\/\(\/\/\)$/{ s//\1/ q } /^X\/\(\/\).*/{ s//\1/ q } s/.*/./; q'` # Avoid depending upon Character Ranges. as_cr_letters='abcdefghijklmnopqrstuvwxyz' as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' as_cr_Letters=$as_cr_letters$as_cr_LETTERS as_cr_digits='0123456789' as_cr_alnum=$as_cr_Letters$as_cr_digits ECHO_C= ECHO_N= ECHO_T= case `echo -n x` in #((((( -n*) case `echo 'xy\c'` in *c*) ECHO_T=' ';; # ECHO_T is single tab character. xy) ECHO_C='\c';; *) echo `echo ksh88 bug on AIX 6.1` > /dev/null ECHO_T=' ';; esac;; *) ECHO_N='-n';; esac rm -f conf$$ conf$$.exe conf$$.file if test -d conf$$.dir; then rm -f conf$$.dir/conf$$.file else rm -f conf$$.dir mkdir conf$$.dir 2>/dev/null fi if (echo >conf$$.file) 2>/dev/null; then if ln -s conf$$.file conf$$ 2>/dev/null; then as_ln_s='ln -s' # ... but there are two gotchas: # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. # In both cases, we have to default to `cp -pR'. ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || as_ln_s='cp -pR' elif ln conf$$.file conf$$ 2>/dev/null; then as_ln_s=ln else as_ln_s='cp -pR' fi else as_ln_s='cp -pR' fi rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file rmdir conf$$.dir 2>/dev/null # as_fn_mkdir_p # ------------- # Create "$as_dir" as a directory, including parents if necessary. as_fn_mkdir_p () { case $as_dir in #( -*) as_dir=./$as_dir;; esac test -d "$as_dir" || eval $as_mkdir_p || { as_dirs= while :; do case $as_dir in #( *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( *) as_qdir=$as_dir;; esac as_dirs="'$as_qdir' $as_dirs" as_dir=`$as_dirname -- "$as_dir" || $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_dir" : 'X\(//\)[^/]' \| \ X"$as_dir" : 'X\(//\)$' \| \ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$as_dir" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` test -d "$as_dir" && break done test -z "$as_dirs" || eval "mkdir $as_dirs" } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" } # as_fn_mkdir_p if mkdir -p . 2>/dev/null; then as_mkdir_p='mkdir -p "$as_dir"' else test -d ./-p && rmdir ./-p as_mkdir_p=false fi # as_fn_executable_p FILE # ----------------------- # Test if FILE is an executable regular file. as_fn_executable_p () { test -f "$1" && test -x "$1" } # as_fn_executable_p as_test_x='test -x' as_executable_p=as_fn_executable_p # Sed expression to map a string onto a valid CPP name. as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" # Sed expression to map a string onto a valid variable name. as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" exec 6>&1 ## ----------------------------------- ## ## Main body of $CONFIG_STATUS script. ## ## ----------------------------------- ## _ASEOF test $as_write_fail = 0 && chmod +x $CONFIG_STATUS || ac_write_fail=1 cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # Save the log message, to keep $0 and so on meaningful, and to # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" This file was extended by pr3287 $as_me 4.0, which was generated by GNU Autoconf 2.69. Invocation command line was CONFIG_FILES = $CONFIG_FILES CONFIG_HEADERS = $CONFIG_HEADERS CONFIG_LINKS = $CONFIG_LINKS CONFIG_COMMANDS = $CONFIG_COMMANDS $ $0 $@ on `(hostname || uname -n) 2>/dev/null | sed 1q` " _ACEOF case $ac_config_files in *" "*) set x $ac_config_files; shift; ac_config_files=$*;; esac case $ac_config_headers in *" "*) set x $ac_config_headers; shift; ac_config_headers=$*;; esac cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 # Files that config.status was made for. config_files="$ac_config_files" config_headers="$ac_config_headers" _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 ac_cs_usage="\ \`$as_me' instantiates files and other configuration actions from templates according to the current configuration. Unless the files and actions are specified as TAGs, all are instantiated by default. Usage: $0 [OPTION]... [TAG]... -h, --help print this help, then exit -V, --version print version number and configuration settings, then exit --config print configuration, then exit -q, --quiet, --silent do not print progress messages -d, --debug don't remove temporary files --recheck update $as_me by reconfiguring in the same conditions --file=FILE[:TEMPLATE] instantiate the configuration file FILE --header=FILE[:TEMPLATE] instantiate the configuration header FILE Configuration files: $config_files Configuration headers: $config_headers Report bugs to the package provider." _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" ac_cs_version="\\ pr3287 config.status 4.0 configured by $0, generated by GNU Autoconf 2.69, with options \\"\$ac_cs_config\\" Copyright (C) 2012 Free Software Foundation, Inc. This config.status script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it." ac_pwd='$ac_pwd' srcdir='$srcdir' INSTALL='$INSTALL' test -n "\$AWK" || AWK=awk _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # The default lists apply if the user does not specify any file. ac_need_defaults=: while test $# != 0 do case $1 in --*=?*) ac_option=`expr "X$1" : 'X\([^=]*\)='` ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'` ac_shift=: ;; --*=) ac_option=`expr "X$1" : 'X\([^=]*\)='` ac_optarg= ac_shift=: ;; *) ac_option=$1 ac_optarg=$2 ac_shift=shift ;; esac case $ac_option in # Handling of the options. -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) ac_cs_recheck=: ;; --version | --versio | --versi | --vers | --ver | --ve | --v | -V ) $as_echo "$ac_cs_version"; exit ;; --config | --confi | --conf | --con | --co | --c ) $as_echo "$ac_cs_config"; exit ;; --debug | --debu | --deb | --de | --d | -d ) debug=: ;; --file | --fil | --fi | --f ) $ac_shift case $ac_optarg in *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; '') as_fn_error $? "missing file argument" ;; esac as_fn_append CONFIG_FILES " '$ac_optarg'" ac_need_defaults=false;; --header | --heade | --head | --hea ) $ac_shift case $ac_optarg in *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; esac as_fn_append CONFIG_HEADERS " '$ac_optarg'" ac_need_defaults=false;; --he | --h) # Conflict between --help and --header as_fn_error $? "ambiguous option: \`$1' Try \`$0 --help' for more information.";; --help | --hel | -h ) $as_echo "$ac_cs_usage"; exit ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil | --si | --s) ac_cs_silent=: ;; # This is an error. -*) as_fn_error $? "unrecognized option: \`$1' Try \`$0 --help' for more information." ;; *) as_fn_append ac_config_targets " $1" ac_need_defaults=false ;; esac shift done ac_configure_extra_args= if $ac_cs_silent; then exec 6>/dev/null ac_configure_extra_args="$ac_configure_extra_args --silent" fi _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 if \$ac_cs_recheck; then set X $SHELL '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion shift \$as_echo "running CONFIG_SHELL=$SHELL \$*" >&6 CONFIG_SHELL='$SHELL' export CONFIG_SHELL exec "\$@" fi _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 exec 5>>config.log { echo sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX ## Running $as_me. ## _ASBOX $as_echo "$ac_log" } >&5 _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # Handling of arguments. for ac_config_target in $ac_config_targets do case $ac_config_target in "conf.h") CONFIG_HEADERS="$CONFIG_HEADERS conf.h" ;; "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;; "Makefile.obj") CONFIG_FILES="$CONFIG_FILES Makefile.obj" ;; *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;; esac done # If the user did not use the arguments to specify the items to instantiate, # then the envvar interface is used. Set only those that are not. # We use the long form for the default assignment because of an extremely # bizarre bug on SunOS 4.1.3. if $ac_need_defaults; then test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers fi # Have a temporary directory for convenience. Make it in the build tree # simply because there is no reason against having it here, and in addition, # creating and moving files from /tmp can sometimes cause problems. # Hook for its removal unless debugging. # Note that there is a small window in which the directory will not be cleaned: # after its creation but before its name has been assigned to `$tmp'. $debug || { tmp= ac_tmp= trap 'exit_status=$? : "${ac_tmp:=$tmp}" { test ! -d "$ac_tmp" || rm -fr "$ac_tmp"; } && exit $exit_status ' 0 trap 'as_fn_exit 1' 1 2 13 15 } # Create a (secure) tmp directory for tmp files. { tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` && test -d "$tmp" } || { tmp=./conf$$-$RANDOM (umask 077 && mkdir "$tmp") } || as_fn_error $? "cannot create a temporary directory in ." "$LINENO" 5 ac_tmp=$tmp # Set up the scripts for CONFIG_FILES section. # No need to generate them if there are no CONFIG_FILES. # This happens for instance with `./config.status config.h'. if test -n "$CONFIG_FILES"; then ac_cr=`echo X | tr X '\015'` # On cygwin, bash can eat \r inside `` if the user requested igncr. # But we know of no other shell where ac_cr would be empty at this # point, so we can use a bashism as a fallback. if test "x$ac_cr" = x; then eval ac_cr=\$\'\\r\' fi ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' /dev/null` if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then ac_cs_awk_cr='\\r' else ac_cs_awk_cr=$ac_cr fi echo 'BEGIN {' >"$ac_tmp/subs1.awk" && _ACEOF { echo "cat >conf$$subs.awk <<_ACEOF" && echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' && echo "_ACEOF" } >conf$$subs.sh || as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 ac_delim_num=`echo "$ac_subst_vars" | grep -c '^'` ac_delim='%!_!# ' for ac_last_try in false false false false false :; do . ./conf$$subs.sh || as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 ac_delim_n=`sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | grep -c X` if test $ac_delim_n = $ac_delim_num; then break elif $ac_last_try; then as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 else ac_delim="$ac_delim!$ac_delim _$ac_delim!! " fi done rm -f conf$$subs.sh cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 cat >>"\$ac_tmp/subs1.awk" <<\\_ACAWK && _ACEOF sed -n ' h s/^/S["/; s/!.*/"]=/ p g s/^[^!]*!// :repl t repl s/'"$ac_delim"'$// t delim :nl h s/\(.\{148\}\)..*/\1/ t more1 s/["\\]/\\&/g; s/^/"/; s/$/\\n"\\/ p n b repl :more1 s/["\\]/\\&/g; s/^/"/; s/$/"\\/ p g s/.\{148\}// t nl :delim h s/\(.\{148\}\)..*/\1/ t more2 s/["\\]/\\&/g; s/^/"/; s/$/"/ p b :more2 s/["\\]/\\&/g; s/^/"/; s/$/"\\/ p g s/.\{148\}// t delim ' >$CONFIG_STATUS || ac_write_fail=1 rm -f conf$$subs.awk cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 _ACAWK cat >>"\$ac_tmp/subs1.awk" <<_ACAWK && for (key in S) S_is_set[key] = 1 FS = "" } { line = $ 0 nfields = split(line, field, "@") substed = 0 len = length(field[1]) for (i = 2; i < nfields; i++) { key = field[i] keylen = length(key) if (S_is_set[key]) { value = S[key] line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3) len += length(value) + length(field[++i]) substed = 1 } else len += 1 + keylen } print line } _ACAWK _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g" else cat fi < "$ac_tmp/subs1.awk" > "$ac_tmp/subs.awk" \ || as_fn_error $? "could not setup config files machinery" "$LINENO" 5 _ACEOF # VPATH may cause trouble with some makes, so we remove sole $(srcdir), # ${srcdir} and @srcdir@ entries from VPATH if srcdir is ".", strip leading and # trailing colons and then remove the whole line if VPATH becomes empty # (actually we leave an empty line to preserve line numbers). if test "x$srcdir" = x.; then ac_vpsub='/^[ ]*VPATH[ ]*=[ ]*/{ h s/// s/^/:/ s/[ ]*$/:/ s/:\$(srcdir):/:/g s/:\${srcdir}:/:/g s/:@srcdir@:/:/g s/^:*// s/:*$// x s/\(=[ ]*\).*/\1/ G s/\n// s/^[^=]*=[ ]*$// }' fi cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 fi # test -n "$CONFIG_FILES" # Set up the scripts for CONFIG_HEADERS section. # No need to generate them if there are no CONFIG_HEADERS. # This happens for instance with `./config.status Makefile'. if test -n "$CONFIG_HEADERS"; then cat >"$ac_tmp/defines.awk" <<\_ACAWK || BEGIN { _ACEOF # Transform confdefs.h into an awk script `defines.awk', embedded as # here-document in config.status, that substitutes the proper values into # config.h.in to produce config.h. # Create a delimiter string that does not exist in confdefs.h, to ease # handling of long lines. ac_delim='%!_!# ' for ac_last_try in false false :; do ac_tt=`sed -n "/$ac_delim/p" confdefs.h` if test -z "$ac_tt"; then break elif $ac_last_try; then as_fn_error $? "could not make $CONFIG_HEADERS" "$LINENO" 5 else ac_delim="$ac_delim!$ac_delim _$ac_delim!! " fi done # For the awk script, D is an array of macro values keyed by name, # likewise P contains macro parameters if any. Preserve backslash # newline sequences. ac_word_re=[_$as_cr_Letters][_$as_cr_alnum]* sed -n ' s/.\{148\}/&'"$ac_delim"'/g t rset :rset s/^[ ]*#[ ]*define[ ][ ]*/ / t def d :def s/\\$// t bsnl s/["\\]/\\&/g s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ D["\1"]=" \3"/p s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2"/p d :bsnl s/["\\]/\\&/g s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ D["\1"]=" \3\\\\\\n"\\/p t cont s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2\\\\\\n"\\/p t cont d :cont n s/.\{148\}/&'"$ac_delim"'/g t clear :clear s/\\$// t bsnlc s/["\\]/\\&/g; s/^/"/; s/$/"/p d :bsnlc s/["\\]/\\&/g; s/^/"/; s/$/\\\\\\n"\\/p b cont ' >$CONFIG_STATUS || ac_write_fail=1 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 for (key in D) D_is_set[key] = 1 FS = "" } /^[\t ]*#[\t ]*(define|undef)[\t ]+$ac_word_re([\t (]|\$)/ { line = \$ 0 split(line, arg, " ") if (arg[1] == "#") { defundef = arg[2] mac1 = arg[3] } else { defundef = substr(arg[1], 2) mac1 = arg[2] } split(mac1, mac2, "(") #) macro = mac2[1] prefix = substr(line, 1, index(line, defundef) - 1) if (D_is_set[macro]) { # Preserve the white space surrounding the "#". print prefix "define", macro P[macro] D[macro] next } else { # Replace #undef with comments. This is necessary, for example, # in the case of _POSIX_SOURCE, which is predefined and required # on some systems where configure will not decide to define it. if (defundef == "undef") { print "/*", prefix defundef, macro, "*/" next } } } { print } _ACAWK _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 as_fn_error $? "could not setup config headers machinery" "$LINENO" 5 fi # test -n "$CONFIG_HEADERS" eval set X " :F $CONFIG_FILES :H $CONFIG_HEADERS " shift for ac_tag do case $ac_tag in :[FHLC]) ac_mode=$ac_tag; continue;; esac case $ac_mode$ac_tag in :[FHL]*:*);; :L* | :C*:*) as_fn_error $? "invalid tag \`$ac_tag'" "$LINENO" 5;; :[FH]-) ac_tag=-:-;; :[FH]*) ac_tag=$ac_tag:$ac_tag.in;; esac ac_save_IFS=$IFS IFS=: set x $ac_tag IFS=$ac_save_IFS shift ac_file=$1 shift case $ac_mode in :L) ac_source=$1;; :[FH]) ac_file_inputs= for ac_f do case $ac_f in -) ac_f="$ac_tmp/stdin";; *) # Look for the file first in the build tree, then in the source tree # (if the path is not absolute). The absolute path cannot be DOS-style, # because $ac_f cannot contain `:'. test -f "$ac_f" || case $ac_f in [\\/$]*) false;; *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";; esac || as_fn_error 1 "cannot find input file: \`$ac_f'" "$LINENO" 5;; esac case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac as_fn_append ac_file_inputs " '$ac_f'" done # Let's still pretend it is `configure' which instantiates (i.e., don't # use $as_me), people would be surprised to read: # /* config.h. Generated by config.status. */ configure_input='Generated from '` $as_echo "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g' `' by configure.' if test x"$ac_file" != x-; then configure_input="$ac_file. $configure_input" { $as_echo "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5 $as_echo "$as_me: creating $ac_file" >&6;} fi # Neutralize special characters interpreted by sed in replacement strings. case $configure_input in #( *\&* | *\|* | *\\* ) ac_sed_conf_input=`$as_echo "$configure_input" | sed 's/[\\\\&|]/\\\\&/g'`;; #( *) ac_sed_conf_input=$configure_input;; esac case $ac_tag in *:-:* | *:-) cat >"$ac_tmp/stdin" \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;; esac ;; esac ac_dir=`$as_dirname -- "$ac_file" || $as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$ac_file" : 'X\(//\)[^/]' \| \ X"$ac_file" : 'X\(//\)$' \| \ X"$ac_file" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$ac_file" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` as_dir="$ac_dir"; as_fn_mkdir_p ac_builddir=. case "$ac_dir" in .) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` # A ".." for each directory in $ac_dir_suffix. ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` case $ac_top_builddir_sub in "") ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; esac ;; esac ac_abs_top_builddir=$ac_pwd ac_abs_builddir=$ac_pwd$ac_dir_suffix # for backward compatibility: ac_top_builddir=$ac_top_build_prefix case $srcdir in .) # We are building in place. ac_srcdir=. ac_top_srcdir=$ac_top_builddir_sub ac_abs_top_srcdir=$ac_pwd ;; [\\/]* | ?:[\\/]* ) # Absolute name. ac_srcdir=$srcdir$ac_dir_suffix; ac_top_srcdir=$srcdir ac_abs_top_srcdir=$srcdir ;; *) # Relative name. ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix ac_top_srcdir=$ac_top_build_prefix$srcdir ac_abs_top_srcdir=$ac_pwd/$srcdir ;; esac ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix case $ac_mode in :F) # # CONFIG_FILE # case $INSTALL in [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;; *) ac_INSTALL=$ac_top_build_prefix$INSTALL ;; esac _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # If the template does not know about datarootdir, expand it. # FIXME: This hack should be removed a few years after 2.60. ac_datarootdir_hack=; ac_datarootdir_seen= ac_sed_dataroot=' /datarootdir/ { p q } /@datadir@/p /@docdir@/p /@infodir@/p /@localedir@/p /@mandir@/p' case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in *datarootdir*) ac_datarootdir_seen=yes;; *@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 $as_echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;} _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_datarootdir_hack=' s&@datadir@&$datadir&g s&@docdir@&$docdir&g s&@infodir@&$infodir&g s&@localedir@&$localedir&g s&@mandir@&$mandir&g s&\\\${datarootdir}&$datarootdir&g' ;; esac _ACEOF # Neutralize VPATH when `$srcdir' = `.'. # Shell code in configure.ac might set extrasub. # FIXME: do we really want to maintain this feature? cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_sed_extra="$ac_vpsub $extrasub _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 :t /@[a-zA-Z_][a-zA-Z_0-9]*@/!b s|@configure_input@|$ac_sed_conf_input|;t t s&@top_builddir@&$ac_top_builddir_sub&;t t s&@top_build_prefix@&$ac_top_build_prefix&;t t s&@srcdir@&$ac_srcdir&;t t s&@abs_srcdir@&$ac_abs_srcdir&;t t s&@top_srcdir@&$ac_top_srcdir&;t t s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t s&@builddir@&$ac_builddir&;t t s&@abs_builddir@&$ac_abs_builddir&;t t s&@abs_top_builddir@&$ac_abs_top_builddir&;t t s&@INSTALL@&$ac_INSTALL&;t t $ac_datarootdir_hack " eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$ac_tmp/subs.awk" \ >$ac_tmp/out || as_fn_error $? "could not create $ac_file" "$LINENO" 5 test -z "$ac_datarootdir_hack$ac_datarootdir_seen" && { ac_out=`sed -n '/\${datarootdir}/p' "$ac_tmp/out"`; test -n "$ac_out"; } && { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' \ "$ac_tmp/out"`; test -z "$ac_out"; } && { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir' which seems to be undefined. Please make sure it is defined" >&5 $as_echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir' which seems to be undefined. Please make sure it is defined" >&2;} rm -f "$ac_tmp/stdin" case $ac_file in -) cat "$ac_tmp/out" && rm -f "$ac_tmp/out";; *) rm -f "$ac_file" && mv "$ac_tmp/out" "$ac_file";; esac \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;; :H) # # CONFIG_HEADER # if test x"$ac_file" != x-; then { $as_echo "/* $configure_input */" \ && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" } >"$ac_tmp/config.h" \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 if diff "$ac_file" "$ac_tmp/config.h" >/dev/null 2>&1; then { $as_echo "$as_me:${as_lineno-$LINENO}: $ac_file is unchanged" >&5 $as_echo "$as_me: $ac_file is unchanged" >&6;} else rm -f "$ac_file" mv "$ac_tmp/config.h" "$ac_file" \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 fi else $as_echo "/* $configure_input */" \ && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" \ || as_fn_error $? "could not create -" "$LINENO" 5 fi ;; esac done # for ac_tag as_fn_exit 0 _ACEOF ac_clean_files=$ac_clean_files_save test $ac_write_fail = 0 || as_fn_error $? "write failure creating $CONFIG_STATUS" "$LINENO" 5 # configure is writing to config.log, and then calls config.status. # config.status does its own redirection, appending to config.log. # Unfortunately, on DOS this fails, as config.log is still kept open # by configure, so config.status won't be able to write to it; its # output is simply discarded. So we exec the FD to /dev/null, # effectively closing config.log, so it can be properly (re)opened and # appended to by config.status. When coming back to configure, we # need to make the FD available again. if test "$no_create" != yes; then ac_cs_success=: ac_config_status_args= test "$silent" = yes && ac_config_status_args="$ac_config_status_args --quiet" exec 5>/dev/null $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false exec 5>>config.log # Use ||, not &&, to avoid exiting from the if with $? = 1, which # would make configure fail if this is the last instruction. $ac_cs_success || as_fn_exit 1 fi if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5 $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;} fi suite3270-4.1/Common/pr3287/configure.in000066400000000000000000000077041413735575200175550ustar00rootroot00000000000000dnl Copyright (c) 2000-2010, 2014-2017, 2020 Paul Mattes. dnl All rights reserved. dnl dnl Redistribution and use in source and binary forms, with or without dnl modification, are permitted provided that the following conditions dnl are met: dnl * Redistributions of source code must retain the above copyright dnl notice, this list of conditions and the following disclaimer. dnl * Redistributions in binary form must reproduce the above copyright dnl notice, this list of conditions and the following disclaimer in the dnl documentation and/or other materials provided with the distribution. dnl * Neither the name of Paul Mattes nor his contributors may be used dnl to endorse or promote products derived from this software without dnl specific prior written permission. dnl dnl THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS dnl OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED dnl WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE dnl DISCLAIMED. IN NO EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, dnl INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES dnl (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR dnl SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) dnl HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, dnl STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING dnl IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE dnl POSSIBILITY OF SUCH DAMAGE. dnl Process this file with autoconf to produce a configure script. AC_INIT(pr3287,4.0) AC_PREREQ(2.50) dnl Checks for programs. AC_PROG_INSTALL AC_PROG_CC dnl Figure out what sort of host and compiler this is. AC_CANONICAL_HOST ansi="-std=c99 -pedantic" case "$host_os" in *cygwin*) ansi="" ;; solaris2*) CPPFLAGS="$CPPFLAGS -D__EXTENSIONS__" ;; darwin*) CCOPTIONS="$CCOPTIONS -no-cpp-precomp -Wno-deprecated-declarations" ;; linux*) CPPFLAGS="$CPPFLAGS -D_BSD_SOURCE -D_DEFAULT_SOURCE -D_POSIX_SOURCE -D_XOPEN_SOURCE" ;; esac if test "$GCC" = yes then # Add common gcc options, plus flags for dependency generation. CCOPTIONS="$CCOPTIONS -Wall -Wsign-compare $ansi -Wno-variadic-macros -MMD -MP" fi AC_SUBST(host) AC_SUBST(CCOPTIONS) dnl Check for libraries. dnl Note that the order here is important. The last libraries should appear dnl first, so that objects in them can be used by subsequent libraries. AC_SEARCH_LIBS(gethostbyname, nsl) AC_SEARCH_LIBS(socket, socket) dnl Checks for header files. AC_CHECK_HEADERS(iconv.h) dnl Check for SSL header file. AC_ARG_WITH(ssl,[ --with-ssl=DIR specify OpenSSL install directory]) if test "$enable_tls" != no then orig_CPPFLAGS="$CPPFLAGS" unset any for dir in "$with_ssl" /usr/local /usr/local/ssl /usr/lib/ssl /usr/pkg/ssl /usr/ssl /var/ssl /opt/ssl do header_fail=0 if test -n "$dir" -a ! -d "$dir/include" then header_fail=1 continue fi if test -n "$any" then AC_MSG_NOTICE(retrying with -I$dir/include) fi if test -n "$dir" then CPPFLAGS="$orig_CPPFLAGS -I$dir/include" fi AC_CHECK_HEADERS(openssl/ssl.h, ,[header_fail=1]) if test "$header_fail" -eq 0 then break fi unset `echo ac_cv_header_openssl/ssl_h | $as_tr_sh` CPPFLAGS="$orig_CPPFLAGS" any=1 done if test $header_fail -eq 1 then AC_MSG_WARN(Disabling TLS) enable_tls="no" unset HAVE_LIBSSL fi fi dnl Checks for library functions. AC_CHECK_FUNCS(vasprintf) dnl Set up the configuration directory. LIBX3270DIR='${sysconfdir}/x3270' AC_SUBST(LIBX3270DIR) dnl Check for unwanted parts. AC_ARG_ENABLE(dbcs,[ --disable-dbcs leave out DBCS support]) case "$enable_dbcs" in no) ;; *) AC_DEFINE(X3270_DBCS,1) ;; esac AC_ARG_ENABLE(ipv6,[ --disable-ipv6 leave out IPv6 support]) case "$enable_ipv6" in ""|yes) AC_DEFINE(X3270_IPV6,1) ;; esac dnl Generate conf.h. AC_CONFIG_HEADER(conf.h) dnl Generate the Makefiles. AC_CONFIG_FILES(Makefile Makefile.obj) AC_OUTPUT suite3270-4.1/Common/pr3287/ctlr.c000066400000000000000000001346501413735575200163550ustar00rootroot00000000000000/* * Copyright (c) 1993-2014, 2019 Paul Mattes. * Copyright (c) 1990, Jeff Sparkes. * Copyright (c) 1989, Georgia Tech Research Corporation (GTRC), Atlanta, GA * 30332. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the names of Paul Mattes, Jeff Sparkes, GTRC nor the names of * their contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES, JEFF SPARKES AND GTRC "AS IS" AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL PAUL MATTES, JEFF SPARKES OR GTRC BE * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. */ /* * ctlr.c * This module handles interpretation of the 3270 data stream and * maintenance of the 3270 device state. * */ #include #include #include #if !defined(_MSC_VER) /*[*/ #include #endif /*]*/ #include #include #if !defined(_WIN32) /*[*/ #include #endif /*]*/ #include #include "globals.h" #include "pr3287.h" #include "3270ds.h" #include "codepage.h" #include "ctlrc.h" #include "trace.h" #include "sf.h" #include "tables.h" #include "unicodec.h" #include "xtablec.h" #if defined(_WIN32) /*[*/ #include "wsc.h" #include #endif /*]*/ #define CS_GE 0x04 /* hack */ #define WCC_LINE_LENGTH(c) ((c) & 0x30) #define WCC_132 0x00 #define WCC_40 0x10 #define WCC_64 0x20 #define WCC_80 0x30 #define MAX_BUF (MAX_UNF_MPP * MAX_UNF_MPP) /* swag */ #define VISIBLE 0x01 /* visible field */ #define INVISIBLE 0x02 /* invisible field */ #define BUFSZ 4096 #define FCORDER_NOP 0x0001 /* dummy filler for DBCS right half */ static const char *ll_name[] = { "unformatted132", "formatted40", "formatted64", "formatted80" }; static int ll_len[] = { 132, 40, 64, 80 }; /* 3270 (formatted mode) data */ static unsigned char default_gr; static unsigned char default_cs; static int line_length; static ucs4_t page_buf[MAX_BUF]; static unsigned char *xlate_buf[MAX_BUF]; int xlate_len[MAX_BUF]; static int baddr = 0; static bool page_buf_initted = false; static bool any_3270_printable = false; static int any_3270_output = 0; #if !defined(_WIN32) /*[*/ static FILE *prfile = NULL; static int prpid = -1; #else /*][*/ static int ws_initted = 0; static int ws_needpre = 1; #endif /*]*/ static unsigned char wcc_line_length; static int ctlr_erase(void); static int dump_formatted(void); static int dump_unformatted(void); static int stash(unsigned char c); static int prflush(void); static int copyfile(const char *filename); #define DECODE_BADDR(c1, c2) \ ((((c1) & 0xC0) == 0x00) ? \ (((c1) & 0x3F) << 8) | (c2) : \ (((c1) & 0x3F) << 6) | ((c2) & 0x3F)) /* SCS constants and data. */ #define MAX_MPP 132 #define MAX_MPL 108 static ucs4_t linebuf[MAX_MPP+1]; static struct { unsigned malloc_len; unsigned data_len; char *buf; } trnbuf[MAX_MPP+1]; static char htabs[MAX_MPP+1]; static char vtabs[MAX_MPL+1]; static int lm, tm, bm, mpp, mpl, scs_any; static int pp; static int line; static bool scs_initted = false; static bool any_scs_output = false; static size_t scs_leftover_len = 0; static int scs_leftover_buf[256]; static int scs_dbcs_subfield = 0; static unsigned char scs_dbcs_c1 = 0; static unsigned scs_cs = 0; static bool ffeoj_last = false; /* * Interpret an incoming 3270 command. */ enum pds process_ds(unsigned char *buf, size_t buflen) { if (!buflen) { return PDS_OKAY_NO_OUTPUT; } trace_ds("< "); switch (buf[0]) { /* 3270 command */ case CMD_EAU: /* erase all unprotected */ case SNA_CMD_EAU: trace_ds("EraseAllUnprotected\n"); if (ctlr_erase() < 0 || prflush() < 0) { return PDS_FAILED; } return PDS_OKAY_NO_OUTPUT; case CMD_EWA: /* erase/write alternate */ case SNA_CMD_EWA: trace_ds("EraseWriteAlternate"); if (ctlr_erase() < 0 || prflush() < 0) { return PDS_FAILED; } baddr = 0; ctlr_write(buf, buflen, true); return PDS_OKAY_NO_OUTPUT; case CMD_EW: /* erase/write */ case SNA_CMD_EW: trace_ds("EraseWrite"); if (ctlr_erase() < 0 || prflush() < 0) { return PDS_FAILED; } baddr = 0; ctlr_write(buf, buflen, true); return PDS_OKAY_NO_OUTPUT; case CMD_W: /* write */ case SNA_CMD_W: trace_ds("Write"); ctlr_write(buf, buflen, false); return PDS_OKAY_NO_OUTPUT; case CMD_RB: /* read buffer */ case SNA_CMD_RB: trace_ds("ReadBuffer\n"); return PDS_BAD_CMD; case CMD_RM: /* read modifed */ case SNA_CMD_RM: trace_ds("ReadModified\n"); return PDS_BAD_CMD; case CMD_RMA: /* read modifed all */ case SNA_CMD_RMA: trace_ds("ReadModifiedAll\n"); return PDS_BAD_CMD; case CMD_WSF: /* write structured field */ case SNA_CMD_WSF: trace_ds("WriteStructuredField"); return write_structured_field(buf, buflen); case CMD_NOP: /* no-op */ trace_ds("NoOp\n"); return PDS_OKAY_NO_OUTPUT; default: /* unknown 3270 command */ errmsg("Unknown 3270 Data Stream command: 0x%X", buf[0]); return PDS_BAD_CMD; } } /* * Process a 3270 Write command. */ void ctlr_write(unsigned char buf[], size_t buflen, bool erase) { unsigned char *cp; bool wcc_keyboard_restore, wcc_sound_alarm; bool wcc_start_printer; bool ra_ge; int i; unsigned char na; int any_fa; ucs4_t ra_xlate = 0; const char *paren = "("; int xbaddr; enum { NONE, ORDER, SBA, TEXT, NULLCH } previous = NONE; #define END_TEXT0 { if (previous == TEXT) trace_ds("'"); } #define END_TEXT(cmd) { END_TEXT0; trace_ds(" %s", cmd); } #define START_FIELD(fa) { \ ctlr_add(0, FA_IS_ZERO(fa)?INVISIBLE:VISIBLE, 0, default_gr); \ trace_ds(see_attr(fa)); \ } if (buflen < 2) { return; } if (!page_buf_initted) { memset(page_buf, '\0', MAX_BUF * sizeof(ucs4_t)); memset(xlate_buf, '\0', MAX_BUF * sizeof(unsigned char *)); memset(xlate_len, '\0', MAX_BUF * sizeof(int)); page_buf_initted = true; baddr = 0; } default_gr = 0; default_cs = 0; if (WCC_RESET(buf[1])) { trace_ds("%sreset", paren); paren = ","; } wcc_line_length = WCC_LINE_LENGTH(buf[1]); if (wcc_line_length) { trace_ds("%s%s", paren, ll_name[wcc_line_length >> 4]); paren = ","; } else { trace_ds("%sunformatted", paren); paren = ","; } line_length = ll_len[wcc_line_length >> 4]; wcc_sound_alarm = WCC_SOUND_ALARM(buf[1]); if (wcc_sound_alarm) { trace_ds("%salarm", paren); paren = ","; } wcc_keyboard_restore = WCC_KEYBOARD_RESTORE(buf[1]); if (wcc_keyboard_restore) { trace_ds("%srestore", paren); paren = ","; } if (WCC_RESET_MDT(buf[1])) { trace_ds("%sresetMDT", paren); paren = ","; } wcc_start_printer = WCC_START_PRINTER(buf[1]); if (wcc_start_printer) { trace_ds("%sstartprinter", paren); paren = ","; } if (strcmp(paren, "(")) { trace_ds(")"); } for (cp = &buf[2]; cp < (buf + buflen); cp++) { switch (*cp) { case ORDER_SF: /* start field */ END_TEXT("StartField"); previous = ORDER; cp++; /* skip field attribute */ START_FIELD(*cp); break; case ORDER_SBA: /* set buffer address */ cp += 2; /* skip buffer address */ xbaddr = DECODE_BADDR(*(cp - 1), *cp); END_TEXT("SetBufferAddress"); if (wcc_line_length) { trace_ds("(%d,%d)", 1 + (xbaddr / line_length), 1 + (xbaddr % line_length)); } else { trace_ds("(%d[%+d])", xbaddr, xbaddr - baddr); } if (xbaddr >= MAX_BUF) { /* Error! */ baddr = 0; return; } if (wcc_line_length) { /* Formatted. */ baddr = xbaddr; } else if (xbaddr > baddr) { /* Unformatted. */ while (baddr < xbaddr) { ctlr_add(0, ' ', default_cs, default_gr); } } previous = SBA; break; case ORDER_IC: /* insert cursor */ END_TEXT("InsertCursor"); previous = ORDER; break; case ORDER_PT: /* program tab */ END_TEXT("ProgramTab"); previous = ORDER; break; case ORDER_RA: /* repeat to address */ cp += 2; /* skip buffer address */ xbaddr = DECODE_BADDR(*(cp-1), *cp); END_TEXT("RepeatToAddress"); if (wcc_line_length) { trace_ds("(%d,%d)", 1 + (xbaddr / line_length), 1 + (xbaddr % line_length)); } else { trace_ds("(%d[%+d])", xbaddr, xbaddr - baddr); } cp++; /* skip char to repeat */ if (*cp == ORDER_GE){ ra_ge = true; trace_ds("GraphicEscape"); cp++; } else { ra_ge = false; } trace_ds("'%s'", see_ebc(*cp)); previous = ORDER; if (xbaddr > MAX_BUF || xbaddr < baddr) { baddr = 0; return; } /* Translate '*cp' once. */ switch (*cp) { case FCORDER_FF: case FCORDER_CR: case FCORDER_NL: case FCORDER_EM: ra_xlate = *cp; break; default: if (*cp <= 0x3F) { ra_xlate = '\0'; } else { ra_xlate = ebcdic_to_unicode(*cp, ra_ge? CS_GE: CS_BASE, EUO_NONE); } break; } while (baddr < xbaddr) { ctlr_add(ra_ge? 0: *cp, ra_xlate, ra_ge? CS_GE: default_cs, default_gr); } break; case ORDER_EUA: /* erase unprotected to address */ cp += 2; /* skip buffer address */ xbaddr = DECODE_BADDR(*(cp-1), *cp); END_TEXT("EraseUnprotectedAll"); previous = ORDER; break; case ORDER_GE: /* graphic escape */ END_TEXT("GraphicEscape "); cp++; /* skip char */ previous = ORDER; if (*cp) { trace_ds("'"); } trace_ds("%s", see_ebc(*cp)); if (*cp) { trace_ds("'"); } ctlr_add(0, ebcdic_to_unicode(*cp, CS_GE, EUO_NONE), CS_GE, default_gr); break; case ORDER_MF: /* modify field */ END_TEXT("ModifyField"); previous = ORDER; cp++; na = *cp; cp += na * 2; break; case ORDER_SFE: /* start field extended */ END_TEXT("StartFieldExtended"); previous = ORDER; cp++; /* skip order */ na = *cp; any_fa = 0; for (i = 0; i < (int)na; i++) { cp++; if (*cp == XA_3270) { trace_ds(" 3270"); cp++; START_FIELD(*cp); any_fa++; } else if (*cp == XA_FOREGROUND) { trace_ds("%s", see_efa(*cp, *(cp + 1))); cp++; } else if (*cp == XA_HIGHLIGHTING) { trace_ds("%s", see_efa(*cp, *(cp + 1))); cp++; } else if (*cp == XA_CHARSET) { trace_ds("%s", see_efa(*cp, *(cp + 1))); cp++; } else if (*cp == XA_ALL) { trace_ds("%s", see_efa(*cp, *(cp + 1))); cp++; } else { trace_ds("%s[unsupported]", see_efa(*cp, *(cp + 1))); cp++; } } if (!any_fa) { START_FIELD(0); } ctlr_add(0, '\0', 0, default_gr); break; case ORDER_SA: /* set attribute */ END_TEXT("SetAttribtue"); previous = ORDER; cp++; if (*cp == XA_FOREGROUND) { trace_ds("%s", see_efa(*cp, *(cp + 1))); } else if (*cp == XA_HIGHLIGHTING) { trace_ds("%s", see_efa(*cp, *(cp + 1))); default_gr = *(cp + 1) & 0x07; } else if (*cp == XA_ALL) { trace_ds("%s", see_efa(*cp, *(cp + 1))); default_gr = 0; default_cs = 0; } else if (*cp == XA_CHARSET) { trace_ds("%s", see_efa(*cp, *(cp + 1))); default_cs = (*(cp + 1) == 0xf1) ? 1 : 0; } else { trace_ds("%s[unsupported]", see_efa(*cp, *(cp + 1))); } cp++; break; case FCORDER_FF: /* Form Feed */ END_TEXT("FF"); previous = ORDER; ctlr_add(0, FCORDER_FF, default_cs, default_gr); break; case FCORDER_CR: /* Carriage Return */ END_TEXT("CR"); previous = ORDER; ctlr_add(0, FCORDER_CR, default_cs, default_gr); break; case FCORDER_NL: /* New Line */ END_TEXT("NL"); previous = ORDER; ctlr_add(0, FCORDER_NL, default_cs, default_gr); break; case FCORDER_EM: /* End of Media */ END_TEXT("EM"); previous = ORDER; ctlr_add(0, FCORDER_EM, default_cs, default_gr); break; case FCORDER_DUP: /* Visible control characters */ case FCORDER_FM: END_TEXT(see_ebc(*cp)); previous = ORDER; ctlr_add(0, ebc2asc0[*cp], default_cs, default_gr); break; case FCORDER_SUB: /* misc format control orders */ case FCORDER_EO: END_TEXT(see_ebc(*cp)); previous = ORDER; ctlr_add(0, '\0', default_cs, default_gr); break; case FCORDER_NULL: END_TEXT("NULL"); previous = NULLCH; ctlr_add(0, '\0', default_cs, default_gr); break; default: /* enter character */ if (*cp <= 0x3F) { END_TEXT("ILLEGAL-ORDER "); previous = ORDER; ctlr_add(0, '\0', default_cs, default_gr); trace_ds("%s", see_ebc(*cp)); break; } if (previous != TEXT) { trace_ds(" '"); } previous = TEXT; trace_ds("%s", see_ebc(*cp)); ctlr_add(*cp, ebcdic_to_unicode(*cp, default_cs, EUO_NONE), default_cs, default_gr); break; } } trace_ds("\n"); } #undef START_FIELDx #undef START_FIELD0 #undef START_FIELD #undef END_TEXT0 #undef END_TEXT /* * Process SCS (SNA Character Stream) data. */ /* Reinitialize the SCS virtual 3287. */ static void init_scs_horiz(void) { int i; mpp = MAX_MPP; lm = 1; htabs[1] = 1; for (i = 2; i <= MAX_MPP; i++) { htabs[i] = 0; } } static void init_scs_vert(void) { int i; mpl = 1; tm = 1; bm = mpl; vtabs[1] = 1; for (i = 0; i <= MAX_MPL; i++) { vtabs[i] = 0; } } static void init_scs(void) { int i; if (scs_initted) { return; } trace_ds("Initializing SCS virtual 3287.\n"); init_scs_horiz(); init_scs_vert(); pp = 1; line = 1; scs_any = 0; for (i = 0; i < MAX_MPP+1; i++) { linebuf[i] = ' '; } for (i = 0; i < MAX_MPP+1; i++) { if (trnbuf[i].malloc_len != 0) { Free(trnbuf[i].buf); trnbuf[i].buf = NULL; trnbuf[i].malloc_len = 0; } trnbuf[i].data_len = 0; } scs_leftover_len = 0; scs_dbcs_subfield = 0; scs_dbcs_c1 = 0; scs_cs = 0; scs_initted = true; } #if defined(_WIN32) /*[*/ static int unicode_to_printer(ucs4_t u, char mb[], int mb_len) { int nc; wchar_t wuc = u; nc = WideCharToMultiByte(options.printercp, 0, &wuc, 1, mb, mb_len, NULL, NULL); if (nc > 0) { mb[nc++] = '\0'; } return nc; } #endif /*[*/ /* * Our philosophy for automatic newlines and formfeeds is that we generate them * only if the user attempts to put data outside the MPP/MPL-defined area. * Therefore, the user can put a byte on the last column of each line, and on * the last column of the last line of the page, and not need to worry about * suppressing their own NL or FF. */ /* * Dump and reset the current line. * This will always result in at least one byte of output to the printer (a * newline). The 'line' variable is always incremented, and may end up * pointing past the bottom margin. The 'pp' variable is set to the left * margin. * * We do not observe the -skipcc option with SCS data. */ static int dump_scs_line(bool reset_pp, bool always_nl) { int i; bool any_data = false; /* Find the last non-space character in the line buffer. */ for (i = mpp; i >= 1; i--) { if (trnbuf[i].data_len != 0 || linebuf[i] != ' ') { break; } } /* * If there is data there, print it with a trailing newline and * clear out the line buffer for next time. If not, just print the * newline. */ if (i >= 1) { int j; int n_data = 0; int n_trn = 0; int k; for (j = 1; j <= i; j++) { /* * Dump and transparent data that precedes this * character. */ if (trnbuf[j].data_len) { unsigned k; n_trn += trnbuf[j].data_len; for (k = 0; k < trnbuf[j].data_len; k++) { if (stash(trnbuf[j].buf[k]) < 0) { return -1; } } trnbuf[j].data_len = 0; } if (j < i || linebuf[j] != ' ') { char mb[16]; int len; if (linebuf[j] == FCORDER_NOP) { continue; } n_data++; any_data = true; scs_any = true; #if !defined(_WIN32) /*[*/ len = unicode_to_multibyte(linebuf[j], mb, sizeof(mb)); #else /*][*/ len = unicode_to_printer(linebuf[j], mb, sizeof(mb)); #endif /*]*/ if (len == 0) { mb[0] = ' '; len = 1; } else { len--; } for (k = 0; k < len; k++) { if (stash(mb[k]) < 0) { return -1; } } } } #if defined(DEBUG_FF) /*[*/ trace_ds(" [dumping %d+%dt]", n_data, n_trn); #endif /*]*/ for (k = 0; k < MAX_MPP+1; k++) { linebuf[k] = ' '; } } if (any_data || always_nl) { if (options.crlf) { if (stash('\r') < 0) { return -1; } } if (stash('\n') < 0) return -1; line++; } #if defined(DEBUG_FF) /*[*/ trace_ds(" [line=%d]", line); #endif /*]*/ if (reset_pp) { pp = lm; } any_scs_output = false; return 0; } /* SCS formfeed. */ static int scs_formfeed(bool explicit) { int nls = 0; /* * In ffskip mode, if it's an explicit formfeed, and we haven't * printed any non-transparent data, do nothing. */ if (options.ffskip && explicit && !scs_any) { return 0; } /* * In ffthru mode, pass through a \f, but only if it's explicit. */ if (options.ffthru) { if (explicit) { if (stash('\f') < 0) { return -1; } scs_any = 0; } line = 1; return 0; } if (explicit) { scs_any = 0; } if (mpl > 1) { /* Skip to the end of the physical page. */ while (line <= mpl) { if (options.crlf) { if (stash('\r') < 0) { return -1; } } if (stash('\n') < 0) { return -1; } nls++; line++; } line = 1; /* Skip the top margin. */ while (line < tm) { if (options.crlf) { if (stash('\r') < 0) { return -1; } } if (stash('\n') < 0) { return -1; } nls++; line++; } #if defined(DEBUG_FF) /*[*/ if (nls) { trace_ds(" [formfeed %s %d]", explicit? "explicit": "implicit", nls); } #endif /*]*/ } else { line = 1; } return 0; } /* * Add a printable character to the SCS virtual 3287. * If the line position is past the bottom margin, we will skip to the top of * the next page. If the character position is past the MPP, we will skip to * the left margin of the next line. */ static int add_scs(ucs4_t c) { /* * They're about to print something. * If the line is past the bottom margin, we need to skip to the * MPL, and then past the top margin. */ if (line > bm) { if (scs_formfeed(false) < 0) { return -1; } } /* * If this character would overflow the line, then dump the current * line and start over at the left margin. */ if (pp > mpp) { if (dump_scs_line(true, true) < 0) { return -1; } } /* * Store this character in the line buffer and advance the print * position. */ if (c != ' ') { linebuf[pp++] = c; } else { pp++; } any_scs_output = true; ffeoj_last = false; return 0; } /* * Add a string of transparent data to the SCS virtual 3287. * Transparent data lives between the 'counted' 3287 characters. Really. */ static void add_scs_trn(unsigned char *cp, int cnt) { int i; unsigned new_malloc_len; for (i = 0; i < cnt; i++) { trace_ds(" %02x", cp[i]); } new_malloc_len = trnbuf[pp].data_len + cnt; while (trnbuf[pp].malloc_len < new_malloc_len) { trnbuf[pp].malloc_len += BUFSZ; trnbuf[pp].buf = Realloc(trnbuf[pp].buf, trnbuf[pp].malloc_len); } memcpy(trnbuf[pp].buf + trnbuf[pp].data_len, cp, cnt); trnbuf[pp].data_len += cnt; any_scs_output = true; ffeoj_last = true; } /* * Process a bufferful of SCS data. * * Note that unlike a 3270 Write command, even though the record is bounded * by an EOR, the SCS data are not guaranteed to be complete. * * Rather than have a full FSM for every byte of every SCS order, we resort * to the rather inefficient method of concatenating the previous, incomplete * record with a copy of the new record, processing it as a contiguous * buffer, and saving any incomplete order for next time. */ /* * 'Internal' SCS function, called by process_scs() below with the previous * leftover data plus the current buffer. * * If an incomplete order is detected, saves it in scs_leftover_buf for * next time. */ static enum pds process_scs_contig(unsigned char *buf, size_t buflen) { unsigned char *cp; int i; int cnt; int tab; ucs4_t uc; enum { NONE, DATA, ORDER } last = NONE; # define END_TEXT(s) { \ if (last == DATA) { \ trace_ds("'"); \ } \ trace_ds(" " s); \ last = ORDER; \ } # define LEFTOVER { \ trace_ds(" [pending]"); \ scs_leftover_len = buflen - (cp - buf); \ memcpy(scs_leftover_buf, cp, scs_leftover_len); \ cp = buf + buflen; \ } trace_ds("< "); init_scs(); for (cp = &buf[0]; cp < (buf + buflen); cp++) { switch (*cp) { case SCS_BS: /* back space */ END_TEXT("BS"); if (pp != 1) { pp--; } if (scs_dbcs_subfield && pp != 1) { pp--; } break; case SCS_CR: /* carriage return */ END_TEXT("CR"); pp = lm; break; case SCS_ENP: /* enable presentation */ END_TEXT("ENP"); /* No-op. */ break; case SCS_FF: /* form feed */ END_TEXT("FF"); /* Dump any pending data, and go to the next line. */ if (dump_scs_line(true, false) < 0) { return PDS_FAILED; } /* * If there is a max page length, skip to the next * page. */ if (scs_formfeed(true) < 0) { return PDS_FAILED; } break; case SCS_HT: /* horizontal tab */ END_TEXT("HT"); for (i = pp + 1; i <= mpp; i++) { if (htabs[i]) { break; } } if (i <= mpp) { pp = i; } else { if (add_scs(' ') < 0) { return PDS_FAILED; } } break; case SCS_INP: /* inhibit presentation */ END_TEXT("INP"); /* No-op. */ break; case SCS_IRS: /* inter-record separator */ END_TEXT("IRS"); case SCS_NL: /* new line */ if (*cp == SCS_NL) { END_TEXT("NL"); } if (dump_scs_line(true, true) < 0) { return PDS_FAILED; } break; case SCS_VT: /* vertical tab */ END_TEXT("VT"); for (i = line + 1; i <= MAX_MPL; i++){ if (vtabs[i]) { break; } } if (i <= MAX_MPL) { if (dump_scs_line(false, true) < 0) { return PDS_FAILED; } while (line < i) { if (options.crlf) { if (stash('\r') < 0) { return PDS_FAILED; } } if (stash('\n') < 0) { return PDS_FAILED; } line++; } break; } else { /* fall through... */ } case SCS_VCS: /* vertical channel select */ if (*cp == SCS_VCS) { END_TEXT("VCS"); } /* fall through... */ case SCS_LF: /* line feed */ if (*cp == SCS_LF) END_TEXT("LF"); if (dump_scs_line(false, true) < 0) return PDS_FAILED; break; case SCS_GE: /* graphic escape */ END_TEXT("GE"); if ((cp + 1) >= buf + buflen) { LEFTOVER; break; } /* Skip over the order. */ cp++; /* No support, so all characters are spaces. */ trace_ds(" %02x", *cp); if (add_scs(' ') < 0) { return PDS_FAILED; } break; case SCS_SA: /* set attribute */ END_TEXT("SA"); if ((cp + 2) >= buf + buflen) { LEFTOVER; break; } switch (*(cp + 1)) { case SCS_SA_RESET: trace_ds(" Reset(%02x)", *(cp + 2)); scs_dbcs_subfield = 0; scs_cs = 0; break; case SCS_SA_HIGHLIGHT: trace_ds(" Highlight(%02x)", *(cp + 2)); break; case SCS_SA_CS: trace_ds(" CharacterSet(%02x)", *(cp + 2)); if (scs_cs != *(cp + 2)) { if (scs_cs == 0xf8) { scs_dbcs_subfield = 0; } else if (*(cp + 2) == 0xf8) { scs_dbcs_subfield = 1; } scs_cs = *(cp + 2); } break; case SCS_SA_GRID: trace_ds(" Grid(%02x)", *(cp + 2)); break; default: trace_ds(" Unknown(%02x %02x)", *(cp + 1), *(cp + 2)); break; } /* Skip it. */ cp += 2; break; case SCS_TRN: /* transparent */ END_TEXT("TRN"); /* Make sure a length byte is present. */ if ((cp + 1) >= buf + buflen) { LEFTOVER; break; } /* Skip over the order. */ cp++; /* * Next byte is the length of the transparent data, * not including the length byte itself. */ cnt = *cp; if (cp + cnt - 1 >= buf + buflen) { cp--; LEFTOVER; break; } trace_ds("(%d)", cnt); /* Copy out the data literally. */ add_scs_trn(cp+1, cnt); cp += cnt; scs_dbcs_subfield = 0; break; case SCS_SET: /* set... */ /* Skip over the first byte of the order. */ if (cp + 2 >= buf + buflen || cp + *(cp + 2) - 1 >= buf + buflen) { END_TEXT("SET"); LEFTOVER; break; } switch (*++cp) { case SCS_SHF: /* set horizontal format */ END_TEXT("SHF"); /* Take defaults first. */ init_scs_horiz(); /* * The length is next. It includes the * length field itself. */ cnt = *++cp; trace_ds("(%d)", cnt); if (cnt < 2) { break; /* no more data */ } /* Skip over the length byte. */ if (!--cnt || cp + 1 >= buf + buflen) { break; } /* The MPP is next. */ mpp = *++cp; trace_ds(" mpp=%d", mpp); if (!mpp || mpp > MAX_MPP) { mpp = MAX_MPP; } /* Skip over the MPP. */ if (!--cnt || cp + 1 >= buf + buflen) { break; } /* The LM is next. */ lm = *++cp; trace_ds(" lm=%d", lm); if (lm < 1 || lm >= mpp) { lm = 1; } /* Skip over the LM. */ if (!--cnt || cp + 1 >= buf + buflen) { break; } /* Skip over the RM. */ cp++; trace_ds(" rm=%d", *cp); /* Next are the tab stops. */ while (--cnt && cp + 1 < buf + buflen) { tab = *++cp; trace_ds(" tab=%d", tab); if (tab >= 1 && tab <= mpp) { htabs[tab] = 1; } } break; case SCS_SLD: /* set line density */ END_TEXT("SLD"); /* * Skip over the second byte of the * order. */ cp++; /* * The length is next. It does not * include length field itself. */ if (cp >= buf + buflen) { break; } cnt = *cp; trace_ds("(%d)", cnt); if (cnt != 2) { break; /* be gentle */ } cnt--; trace_ds(" %02x", *(cp + 1)); cp += cnt; break; case SCS_SVF: /* set vertical format */ END_TEXT("SVF"); /* Take defaults first. */ init_scs_vert(); /* * Skip over the second byte of the * order. */ cp++; /* * The length is next. It includes the * length field itself. */ if (cp >= buf + buflen) { break; } cnt = *cp; trace_ds("(%d)", cnt); if (cnt < 2) { break; /* no more data */ } /* Skip over the length byte. */ cp++; cnt--; if (!cnt || cp >= buf + buflen) { break; } /* The MPL is next. */ mpl = *cp; trace_ds(" mpl=%d", mpl); if (!mpl || mpl > MAX_MPL) { mpl = 1; } if (cnt < 2) { bm = mpl; break; } /* Skip over the MPL. */ cp++; cnt--; if (!cnt || cp >= buf + buflen) { break; } /* The TM is next. */ tm = *cp; trace_ds(" tm=%d", tm); if (tm < 1 || tm >= mpl) { tm = 1; } if (cnt < 2) { break; } /* Skip over the TM. */ cp++; cnt--; if (!cnt || cp >= buf + buflen) { break; } /* The BM is next. */ bm = *cp; trace_ds(" bm=%d", bm); if (bm < tm || bm >= mpl) { bm = mpl; } if (cnt < 2) { break; } /* Skip over the BM. */ cp++; cnt--; /* Next are the tab stops. */ while (cnt > 1 && cp < buf + buflen) { tab = *cp; trace_ds(" tab=%d", tab); if (tab >= 1 && tab <= mpp) { vtabs[tab] = 1; } cp++; cnt--; } break; default: END_TEXT("SET(?"); trace_ds("%02x)", *cp); cp += *(cp + 1); break; } break; case SCS_SO: /* DBCS subfield start */ END_TEXT("SO"); scs_dbcs_subfield = 1; break; case SCS_SI: /* DBCS subfield end */ END_TEXT("SI"); scs_dbcs_subfield = 0; break; default: /* * Stray control codes are spaces, all else gets * translated from EBCDIC to ASCII. */ if (*cp <= 0x3f) { END_TEXT("?"); trace_ds("%02x", *cp); if (add_scs(' ') < 0) { return PDS_FAILED; } break; } if (last == NONE) { trace_ds("'"); } else if (last == ORDER) { trace_ds(" '"); } if (scs_dbcs_subfield && dbcs) { if (scs_dbcs_subfield % 2) { scs_dbcs_c1 = *cp; } else { uc = ebcdic_to_unicode( (scs_dbcs_c1 << 8) | *cp, CS_BASE, EUO_NONE); if (uc == 0) { /* No translation. */ trace_ds("?DBCS(X'%02x%02x')", scs_dbcs_c1, *cp); if (add_scs(' ') < 0) { return PDS_FAILED; } if (add_scs(' ') < 0) { return PDS_FAILED; } } else { /* * Add the Unicode character * and a no-op to account for * the right-hand side. */ trace_ds("DBCS(X'%02x%02x')", scs_dbcs_c1, *cp); if (add_scs(uc) < 0) { return PDS_FAILED; } if (add_scs(FCORDER_NOP) < 0) { return PDS_FAILED; } } } scs_dbcs_subfield++; last = DATA; break; } uc = ebcdic_to_unicode(*cp, CS_BASE, EUO_NONE); { char mb[16]; unicode_to_multibyte(uc, mb, sizeof(mb)); trace_ds("%s", mb); } if (add_scs(uc) < 0) { return PDS_FAILED; } last = DATA; break; } } if (last == DATA) { trace_ds("'"); } trace_ds("\n"); if (prflush() < 0) { return PDS_FAILED; } return PDS_OKAY_NO_OUTPUT; } /* * 'External' SCS function. Handles leftover data from any previous, * incomplete SCS record. */ enum pds process_scs(unsigned char *buf, size_t buflen) { enum pds r; if (scs_leftover_len) { unsigned char *contig = Malloc(scs_leftover_len + buflen); size_t total_len; memcpy(contig, scs_leftover_buf, scs_leftover_len); memcpy(contig + scs_leftover_len, buf, buflen); total_len = scs_leftover_len + buflen; scs_leftover_len = 0; r = process_scs_contig(contig, total_len); Free(contig); } else { r = process_scs_contig(buf, buflen); } return r; } #if !defined(_WIN32) /*[*/ /* * SIGCHLD handler. Does nothing, but on systems that conform to the Single * Unix Specification, defining it ensures that the print command process will * become a zombie if it exits prematurely. */ static void sigchld_handler(int sig) { } /* * Special version of popen where the child ignores SIGINT. */ static FILE * popen_no_sigint(const char *command) { int fds[2]; FILE *f; /* Create a pipe. */ if (pipe(fds) < 0) { return NULL; } /* Create a stdio stream from the write end. */ f = fdopen(fds[1], "w"); if (f == NULL) { close(fds[0]); close(fds[1]); return NULL; } /* Handle SIGCHLD signals. */ signal(SIGCHLD, sigchld_handler); /* Fork a child process. */ switch ((prpid = fork())) { case 0: /* child */ fclose(f); dup2(fds[0], 0); close(fds[1]); signal(SIGINT, SIG_IGN); execl("/bin/sh", "sh", "-c", command, NULL); /* execl failed, return nonzero status */ exit(1); break; case -1: /* parent, error */ fclose(f); close(fds[0]); return NULL; default: /* parent, success */ close(fds[0]); break; } return f; } static int pclose_no_sigint(FILE *f) { int rc; int status; fclose(f); do { rc = waitpid(prpid, &status, 0); } while (rc < 0 && errno == EINTR); prpid = -1; if (rc < 0) { return rc; } else { return status; } } #endif /*]*/ /* * Send a character to the printer. */ static int stash(unsigned char c) { #if defined(_WIN32) /*[*/ if (!ws_initted) { if (ws_start(options.printer) < 0) { return -1; } ws_initted = 1; } if (ws_needpre) { if ((options.trnpre != NULL) && copyfile(options.trnpre) < 0) { return -1; } ws_needpre = 0; } trace_pdc(c); if (ws_putc((char)c)) { return -1; } #else /*][*/ if (prfile == NULL) { prfile = popen_no_sigint(options.command); if (prfile == NULL) { errmsg("%s: %s", options.command, strerror(errno)); return -1; } if ((options.trnpre != NULL) && copyfile(options.trnpre) < 0) { pclose_no_sigint(prfile); prfile = NULL; return -1; } } trace_pdc(c); if (fputc(c, prfile) == EOF) { errmsg("Write error to '%s': %s", options.command, strerror(errno)); pclose_no_sigint(prfile); prfile = NULL; return -1; } #endif /*]*/ return 0; } /* * Flush the pipe going to the printer process, to try to flush out any * pending errors. */ static int prflush(void) { #if defined(_WIN32) /*[*/ if (ws_initted && ws_flush() < 0) { return -1; } #else /*][*/ if (prfile != NULL) { if (fflush(prfile) < 0) { errmsg("Flush error to '%s': %s", options.command, strerror(errno)); pclose_no_sigint(prfile); prfile = NULL; return -1; } } #endif /*]*/ return 0; } /* * Change a character in the 3270 buffer. */ void ctlr_add(unsigned char ebc, ucs4_t c, unsigned char cs, unsigned char gr) { /* Map control characters, according to the write mode. */ if (c < ' ') { if (wcc_line_length) { /* * When formatted, all control characters but FFs and * the funky VISIBLE/INVISIBLE controls are translated * to NULLs, so they don't display, and don't * contribute to empty lines. */ if (c != FCORDER_FF && c != VISIBLE && c != INVISIBLE) { c = '\0'; } } else { /* * Unformatted, all control characters but CR/NL/FF/EM * are displayed as spaces. */ if (c != FCORDER_CR && c != FCORDER_NL && c != FCORDER_FF && c != FCORDER_EM) { c = ' '; } } } /* Add the character. */ page_buf[baddr] = c; if (ebc >= 0x40) xlate_len[baddr] = xtable_lookup(ebc, &xlate_buf[baddr]); baddr = (baddr + 1) % MAX_BUF; any_3270_output = 1; ffeoj_last = false; /* Implement -emflush mode. */ if (options.emflush && !wcc_line_length && c == FCORDER_EM) { /* XXX: Unfortunately, we do not return error status here. */ dump_unformatted(); baddr = 1; any_3270_output = 0; } } static struct { char buf; /* printable data */ unsigned char *trn; /* transparent data */ unsigned trn_len; /* length of transparent data */ } uo_data[MAX_UNF_MPP + 2]; /* room for full line plus carriage control */ static unsigned uo_col; /* current output column */ static unsigned uo_maxcol; /* maximum column buffered */ static bool uo_last_cr = false; /* last data was CR */ /* * Dump and free any transparent unformatted data at col. */ static int dump_uo_trn(unsigned col) { unsigned i; int rv = 0; if (uo_data[col].trn != NULL) { for (i = 0; i < uo_data[col].trn_len; i++) { if (stash(uo_data[col].trn[i]) < 0) { rv = -1; break; } } Free(uo_data[col].trn); uo_data[col].trn = NULL; uo_data[col].trn_len = 0; } return rv; } /* * Dump pending unformatted output. */ static int dump_uo(void) { unsigned i; for (i = 0; i < uo_maxcol; i++) { if (dump_uo_trn(i) < 0) { return -1; } if (!i && options.skipcc) { continue; } if (stash(uo_data[i].buf) < 0) { return -1; } } if (uo_maxcol < MAX_UNF_MPP + 2) { if (dump_uo_trn(uo_maxcol) < 0) { return -1; } } return 0; } /* * Unformatted output function. Processes one character of output data. * * This function will buffer up to MPP characters of output, until it is * passed a '\n' or '\f' character. * * By default, it will process '\r' characters like a printer, i.e., it will * not overwrite a buffered non-space character with a space character. This * is how an output line can span multiple 3270 unformatted write commands. * * If 'crthru' is set, '\r' characters simply trigger a buffer flush. */ static int uoutput(char c) { switch (c) { case '\r': if (options.crthru) { if (dump_uo() < 0) { return -1; } if (stash(c) < 0) { return -1; } uo_col = uo_maxcol = 0; uo_last_cr = true; } else { uo_col = 0; } break; case '\n': if (dump_uo() < 0) { return -1; } if (options.crlf && !uo_last_cr) { if (stash('\r') < 0) { return -1; } } if (stash(c) < 0) { return -1; } uo_col = uo_maxcol = 0; uo_last_cr = false; break; case '\f': uo_last_cr = false; if (any_3270_printable || !options.ffskip) { if (dump_uo() < 0) { return -1; } if (stash(c) < 0) { return -1; } } uo_col = uo_maxcol = 0; break; default: uo_last_cr = false; /* Don't overwrite with spaces. */ if (c == ' ') { if (uo_col >= uo_maxcol) { uo_data[uo_col++].buf = c; } else { uo_col++; } } else { uo_data[uo_col++].buf = c; any_3270_printable = true; } if (uo_col > uo_maxcol) { uo_maxcol = uo_col; } break; } return 0; } /* * Add transparent data to the unformatted output buffer. */ static void uoutput_trn(const unsigned char *s, int len) { unsigned char *new; if (len <= 0) { return; } new = Realloc(uo_data[uo_col].trn, uo_data[uo_col].trn_len + len); if (uo_data[uo_col].trn != NULL) { memcpy(new, uo_data[uo_col].trn, uo_data[uo_col].trn_len); } memcpy(new + uo_data[uo_col].trn_len, s, len); uo_data[uo_col].trn = new; uo_data[uo_col].trn_len += len; } /* * Dump an unformatted output buffer. * * The buffer is treated as a sequence of characters, with control characters * for new line, carriage return, form feed and end of media. * * By definition, the "print position" is 0 when this function begins and ends. */ static int dump_unformatted(void) { int i; int prcol = 0; ucs4_t c; int done = 0; char mb[16]; const char *mbp; int len; int j; if (!any_3270_output) { return 0; } for (i = 0; i < MAX_BUF && !done; i++) { switch (c = page_buf[i]) { case '\0': break; case FCORDER_NOP: break; case FCORDER_CR: if (uoutput('\r') < 0) { return -1; } prcol = 0; break; case FCORDER_NL: if (uoutput('\n') < 0) { return -1; } prcol = 0; break; case FCORDER_FF: if (uoutput('\f') < 0) { return -1; } prcol = 0; break; case FCORDER_EM: if (prcol != 0) { if (uoutput('\n') < 0) { return -1; } } done = 1; break; default: /* printable */ /* * Insert a newline if they send a 133rd printable * character on a line. * * If they specified '-skipcc', don't count the first * character on the line as printable. */ if (++prcol > options.mpp + (options.skipcc != 0)) { if (uoutput('\n') < 0) { return -1; } prcol = 0; } /* Handle transparent data. */ if (xlate_buf[i] != NULL) { uoutput_trn(xlate_buf[i], xlate_len[i]); break; } #if !defined(_WIN32) /*[*/ len = unicode_to_multibyte(c, mb, sizeof(mb)); #else /*][*/ len = unicode_to_printer(c, mb, sizeof(mb)); #endif /*]*/ if (len == 0) { mb[0] = ' '; len = 1; } else { len--; } mbp = mb; for (j = 0; j < len; j++) { if (uoutput(mbp[j]) < 0) { return -1; } } break; } } /* If the buffer didn't end with an EM, flush any pending line. */ if (!done) { if (uoutput('\n') < 0) { return -1; } } /* Clear out the buffer. */ memset(page_buf, '\0', MAX_BUF * sizeof(ucs4_t)); memset(xlate_buf, '\0', MAX_BUF * sizeof(unsigned char *)); memset(xlate_len, '\0', MAX_BUF * sizeof(int)); /* Clear the output state. */ for (i = 0; i < MAX_UNF_MPP + 2; i++) { uo_data[i].buf = 0; if (uo_data[i].trn != NULL) { Free(uo_data[i].trn); } uo_data[i].trn = NULL; uo_data[i].trn_len = 0; } uo_col = 0; uo_maxcol = 0; uo_last_cr = false; /* Flush buffered data. */ #if defined(_WIN32) /*[*/ if (ws_initted) { ws_flush(); } #else /*][*/ fflush(prfile); #endif /*]*/ any_3270_output = 0; return 0; } /* * Dump a formatted output buffer. * * The buffer is treated as a sequence of lines, with the length specified by * the write control character. * * Each line is terminated by a newline, with trailing spaces and nulls * suppressed. * Nulls are displayed as spaces, except when they constitute an entire line, * in which case the line is suppressed. * Formfeeds are passed through, and otherwise treated like nulls. * * We do not observe the -skipcc option with formatted data. */ static int dump_formatted(void) { int i; ucs4_t *cp = page_buf; int visible = 1; int newlines = 0; bool data_without_newline = false; if (!any_3270_output) { return 0; } for (i = 0; i < MAX_UNF_MPP; i++) { int blanks = 0; int any_data = 0; int j; for (j = 0; j < line_length && ((i * line_length) + j) < MAX_BUF; j++) { char c = *cp++; switch (c) { case VISIBLE: /* visible field */ visible = 1; blanks++; break; case INVISIBLE: /* invisible field */ visible = 0; blanks++; break; case '\f': while (newlines) { if (options.crlf) { if (stash('\r') < 0) { return -1; } } if (stash('\n') < 0) { return -1; } newlines--; data_without_newline = false; } if (any_3270_printable || !options.ffskip) { if (stash('\f') < 0) { return -1; } } blanks++; break; case '\0': blanks++; break; case ' ': blanks++; any_data++; data_without_newline = true; break; default: while (newlines) { if (options.crlf) { if (stash('\r') < 0) { return -1; } } if (stash('\n') < 0) { return -1; } newlines--; data_without_newline = false; } while (blanks) { if (stash(' ') < 0) { return -1; } blanks--; } any_data++; data_without_newline = true; if (!visible) { if (stash(' ') < 0) { return -1; } } else { char mb[16]; int len; int j; #if !defined(_WIN32) /*[*/ len = unicode_to_multibyte(c, mb, sizeof(mb)); #else /*][*/ len = unicode_to_printer(c, mb, sizeof(mb)); #endif /*]*/ if (len == 0) { mb[0] = ' '; len = 1; } else { len--; } for (j = 0; j < len; j++) { if (stash(mb[j]) < 0) { return -1; } } } if (visible) { any_3270_printable = true; } break; } } if (any_data || options.blanklines) { newlines++; } } /* If there was data on the last line, put out a newline. */ if (data_without_newline) { if (options.crlf) { if (stash('\r') < 0) { return -1; } } if (stash('\n') < 0) { return -1; } } /* Clear the buffer. */ memset(page_buf, '\0', MAX_BUF * sizeof(ucs4_t)); #if defined(_WIN32) /*[*/ if (ws_initted) { ws_flush(); } #else /*][*/ fflush(prfile); #endif /*]*/ any_3270_output = 0; return 0; } int print_eoj(void) { int rc = 0; /* Dump any pending 3270-mode output. */ if (any_3270_output) { if (wcc_line_length) { if (dump_formatted() < 0) { rc = -1; } } else { if (dump_unformatted() < 0) { rc = -1; } } } /* Dump any pending SCS-mode output. */ if (any_scs_output) { if (dump_scs_line(true, false) < 0) { rc = -1; } } /* Handle -ffeoj, which blindly adds a formfeed to every page. */ if (options.ffeoj && !ffeoj_last) { if (scs_any) { trace_ds("Automatic SCS EOJ formfeed.\n"); scs_formfeed(true); if (dump_scs_line(true, false) < 0) { rc = -1; } } else { trace_ds("Automatic 3270 %s EOJ formfeed.\n", wcc_line_length? "formatted": "unformatted"); ctlr_add(0, FCORDER_FF, default_cs, default_gr); if (wcc_line_length) { if (dump_formatted() < 0) { rc = -1; } } else { if (dump_unformatted() < 0) { rc = -1; } } } ffeoj_last = true; } /* Close the stream to the print process. */ #if defined(_WIN32) /*[*/ if (ws_initted) { trace_ds("End of print job.\n"); if (options.trnpost != NULL && copyfile(options.trnpost) < 0) { rc = -1; } if (ws_endjob() < 0) { rc = -1; } ws_needpre = 1; } #else /*]*/ if (prfile != NULL) { trace_ds("End of print job.\n"); if (options.trnpost != NULL && copyfile(options.trnpost) < 0) { rc = -1; } rc = pclose_no_sigint(prfile); if (rc) { if (rc < 0) { errmsg("Close error on '%s': %s", options.command, strerror(errno)); } else if (WIFEXITED(rc)) { errmsg("'%s' exited with status %d", options.command, WEXITSTATUS(rc)); } else if (WIFSIGNALED(rc)) { errmsg("'%s' terminated by signal %d", options.command, WTERMSIG(rc)); } else { errmsg("'%s' returned status %d", options.command, rc); } rc = -1; } prfile = NULL; } #endif /*]*/ /* Make sure the next 3270 job starts with clean conditions. */ page_buf_initted = 0; /* Reset the FF suprpession logic. */ any_3270_printable = false; return rc; } void print_unbind(void) { /* * Make sure that the next SCS job starts with clean conditions. */ scs_initted = false; } static int ctlr_erase(void) { /* Dump whatever we've got so far. */ /* Dump any pending 3270-mode output. */ if (wcc_line_length) { if (dump_formatted() < 0) { return -1; } } else { if (dump_unformatted() < 0) { return -1; } } /* Dump any pending SCS-mode output. */ if (any_scs_output) { if (dump_scs_line(true, false) < 0) { /* XXX: 1st true? */ return -1; } } /* Make sure the buffer is clean. */ memset(page_buf, '\0', MAX_BUF * sizeof(ucs4_t)); any_3270_output = 0; baddr = 0; return 0; } /* * Copy a -trnpre/-trnpost file to the printer. We open and read the file * for each print job, so someone can change their contents while we are * running (hopefully between print jobs). */ static int copyfile(const char *filename) { FILE *f; char c; int rc = 0; if ((f = fopen(filename, "rb")) == NULL) { errmsg("%s: %s", filename, strerror(errno)); return -1; } while ((c = fgetc(f)) != EOF) { trace_pdc((unsigned char)c); #if defined(_WIN32) /*[*/ if (ws_putc(c) < 0) { #else /*][*/ if (fputc(c, prfile) < 0) { errmsg("write(%s): %s", options.command, strerror(errno)); #endif /*]*/ rc = -1; break; } } fclose(f); return rc; } suite3270-4.1/Common/pr3287/ctlrc.h000066400000000000000000000042451413735575200165210ustar00rootroot00000000000000/* * Copyright (c) 1995-2009, 2013, 2015 Paul Mattes. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the names of Paul Mattes nor the names of his contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO * EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * ctlrc.h * Global declarations for ctlr.c. */ enum pds { PDS_OKAY_NO_OUTPUT = 0, /* command accepted, produced no output */ PDS_OKAY_OUTPUT = 1, /* command accepted, produced output */ PDS_BAD_CMD = -1, /* command rejected */ PDS_BAD_ADDR = -2, /* command contained a bad address */ PDS_FAILED = -3 /* command failed */ }; void ctlr_add(unsigned char ebc, ucs4_t c, unsigned char cs, unsigned char gr); void ctlr_write(unsigned char buf[], size_t buflen, bool erase); int print_eoj(void); void print_unbind(void); enum pds process_ds(unsigned char *buf, size_t buflen); enum pds process_scs(unsigned char *buf, size_t buflen); suite3270-4.1/Common/pr3287/globals.h000066400000000000000000000116171413735575200170360ustar00rootroot00000000000000/* * Copyright (c) 2000-2009, 2013, 2015, 2017 Paul Mattes. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the names of Paul Mattes nor the names of his contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO * EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* Autoconf settings. */ #include "conf.h" /* autoconf settings */ #if defined(HAVE_VASPRINTF) && !defined(_GNU_SOURCE) /*[*/ #define _GNU_SOURCE /* vasprintf isn't POSIX */ #endif /*]*/ #include /* Unix standard I/O library */ #include /* Other Unix library functions */ #if !defined(_MSC_VER) /*[*/ # include /* Unix system calls */ #endif /*]*/ #include /* Character classes */ #include /* String manipulations */ #include /* Basic system data types */ #if !defined(_MSC_VER) /*[*/ # include /* System time-related data types */ #endif /*]*/ #include /* C library time functions */ #include /* Varargs */ #if !defined(_MSC_VER) /*[*/ # include /* bool, true, false */ #else /*][*/ typedef char bool; /* roll our own for MSC */ # define true 1 # define false 0 #endif /*]*/ #if defined(_WIN32) /*[*/ # include "wincmn.h" /* Common Windows definitions. */ #endif /*]*/ #include "localdefs.h" extern unsigned long cgcsgid; extern unsigned long cgcsgid_dbcs; extern int dbcs; #define Replace(var, value) { Free(var); var = (value); } typedef unsigned int ucs4_t; typedef unsigned short ebc_t; #define CS_MASK 0x03 /* mask for specific character sets */ #define CS_BASE 0x00 /* base character set (X'00') */ #define CS_APL 0x01 /* APL character set (X'01' or GE) */ #define CS_LINEDRAW 0x02 /* DEC line-drawing character set (ANSI) */ #define CS_DBCS 0x03 /* DBCS character set (X'F8') */ #define CS_GE 0x04 /* cs flag for Graphic Escape */ extern const char *app; extern const char *build; extern const char *cyear; /* * * Compiler-specific #defines. * */ /* '_is_unused' explicitly flags an unused parameter */ #if defined(__GNUC__) /*[*/ # define _is_unused __attribute__((__unused__)) # define printflike(s,f) __attribute__ ((__format__ (__printf__, s, f))) #else /*][*/ # define _is_unused /* nothing */ # define printflike(s, f) /* nothing */ #endif /*]*/ #if 'A' > 'a' /*[*/ # define EBCDIC_HOST 1 #endif /*]*/ /* Handy stuff. */ #define array_count(a) sizeof(a)/sizeof(a[0]) /* Doubly-linked lists. */ typedef struct llist { struct llist *next; struct llist *prev; } llist_t; /* Memory allocation. */ void *Malloc(size_t); void Free(void *); void *Calloc(size_t, size_t); void *Realloc(void *, size_t); char *NewString(const char *); /* Error exits. */ void Error(const char *); void Warning(const char *); /* I/O typedefs. */ #if !defined(_WIN32) /*[*/ typedef int iosrc_t; # define INVALID_IOSRC (-1) #else /*][*/ typedef HANDLE iosrc_t; # define INVALID_IOSRC INVALID_HANDLE_VALUE #endif /*]*/ typedef unsigned long ioid_t; #define NULL_IOID 0L typedef unsigned long ks_t; #define KS_NONE 0L /* Common socket definitions. */ #if !defined(_WIN32) /*[*/ typedef int socket_t; # define INVALID_SOCKET (-1) # define INET_ADDR_T in_addr_t # define SOCK_CLOSE(s) close(s) # define socket_errno() errno # define SE_EWOULDBLOCK EWOULDBLOCK # define SE_ECONNRESET ECONNRESET # define SE_EINTR EINTR # define SE_EPIPE EPIPE #else /*][*/ typedef SOCKET socket_t; # define INET_ADDR_T unsigned long # define SOCK_CLOSE(s) closesocket(s) # define socket_errno() WSAGetLastError() # define SE_EWOULDBLOCK WSAEWOULDBLOCK # define SE_ECONNRESET WSAECONNRESET # define SE_EINTR WSAEINTR # define SE_EPIPE WSAECONNABORTED #endif /*]*/ suite3270-4.1/Common/pr3287/instlist.base000066400000000000000000000000611413735575200177360ustar00rootroot00000000000000usr usr/local usr/local/bin usr/local/bin/pr3287 suite3270-4.1/Common/pr3287/instlist.man000066400000000000000000000001551413735575200176030ustar00rootroot00000000000000usr usr/local usr/local/share usr/local/share/man usr/local/share/man/man1 usr/local/share/man/man1/pr3287.1 suite3270-4.1/Common/pr3287/localdefs.h000066400000000000000000000035101413735575200173400ustar00rootroot00000000000000/* * Copyright (c) 2000-2010, 2013-2015 Paul Mattes. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the names of Paul Mattes nor the names of his contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO * EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * localdefs.h * Local definitions for pr3287. * * This file contains definitions for environment-specific * facilities, such as memory allocation, I/O registration, * and timers. */ #define PR3287 1 #if defined(_WIN32) /*[*/ # define WPR3287 1 #endif /*]*/ extern void errmsg(const char *, ...); suite3270-4.1/Common/pr3287/popupsc.h000066400000000000000000000001551413735575200170770ustar00rootroot00000000000000extern void popup_an_error(const char *fmt, ...); extern void popup_an_errno(int err, const char *fmt, ...); suite3270-4.1/Common/pr3287/pr3287.c000066400000000000000000001020021413735575200163400ustar00rootroot00000000000000/* * Copyright (c) 2000-2021 Paul Mattes. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the names of Paul Mattes nor the names of his contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO * EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * pr3287: A 3270 printer emulator for TELNET sessions. * * pr3287 [options] [lu[,lu...]@]host[:port] * Options are: * -accepthostname any|[DNS:]name|address * accept any certificate hostname, or a specific name, or an * IP address * -assoc session * associate with a session (TN3270E only) * -cadir dir * -cafile file * -certfile file * -certfiletype type * -chainfile file * -clientcert name * -codepage name * use the specified character set * -command "string" * command to use to print (default "lpr", POSIX only) * -crlf * expand newlines to CR/LF (POSIX only) * -crthru * pass through CRs in unformatted 3270 mode * -dameon * become a daemon after negotiating * -blanklines * display blank lines even if they're empty (formatted LU3) * -emflush * flush printer output when an unformatted EM order arrives * (historical option, now the default) * -noemflush * do not flush printer output when an unformatted EM order arrives * -eojtimeout n * time out end of job after n seconds * -ffeoj * assume an FF at the end of each job * -ffthru * pass through SCS FF orders * -ffskip * skip FF at top of page * -keyfile file * -keyfiletype type * -keypasswd type:text * -mpp n * set the maximum presentation position (unformatted line length) * -nocrlf * expand newlines to CR/LF (Windows only) * -noverifycert * do not verify host certificates for TLS connections * -printer "printer name" * printer to use (default is $PRINTER or system default, * Windows only) * -printercp n * Code page to use for output (Windows only) * -proxy "spec" * proxy specification * -reconnect * keep trying to reconnect * -selfsignedok * allow self-signed host certificates * -skipcc * skip ASA carriage control characters in host output * -syncport port * TCP port for login session synchronization * -trace * trace data stream to a file * -tracedir dir * directory to write trace file in (POSIX only) * -trnpre file * file of transparent data to send before jobs * -trnpost file * file of transparent data to send after jobs * -v * display version information and exit * -verifycert * verify host certificates for TLS connections * -V * verbose output about negotiation * -xtable file * custom EBCDIC-to-ASCII translation table */ #include #include #include #include #include #if !defined(_WIN32) /*[*/ # include # include #endif /*]*/ #include #if !defined(_MSC_VER) /*[*/ # include #endif /*]*/ #if !defined(_WIN32) /*[*/ # include # include # include #else /*][*/ # include # include # undef AF_INET6 #endif /*]*/ #include #include #include #include #include "globals.h" #include "codepage.h" #include "trace.h" #include "ctlrc.h" #include "popups.h" #include "pr3287.h" #include "proxy.h" #include "pr_telnet.h" #include "resolver.h" #include "resources.h" #include "sio.h" #include "split_host.h" #include "telnet_core.h" #include "unicodec.h" #include "utf8.h" #include "utils.h" #include "xtablec.h" #if defined(_WIN32) /*[*/ # include "w3misc.h" # include "wsc.h" # include "windirs.h" #endif /*]*/ #if defined(_IOLBF) /*[*/ # define SETLINEBUF(s) setvbuf(s, NULL, _IOLBF, BUFSIZ) #else /*][*/ # define SETLINEBUF(s) setlinebuf(s) #endif /*]*/ #if !defined(INADDR_NONE) /*[*/ # define INADDR_NONE 0xffffffffL #endif /*]*/ /* Globals. */ options_t options; socket_t syncsock = INVALID_SOCKET; #if defined(_WIN32) /*[*/ char *instdir; #endif /* ]*/ const char *popup_separator = " "; /* Locals. */ static char *programname = NULL; static int proxy_type = 0; static char *proxy_user = NULL; static char *proxy_host = NULL; static char *proxy_portname = NULL; static unsigned short proxy_port = 0; void pr3287_exit(int); const char *build_options(void); /* Print a usage message and exit. */ static void usage(void) { fprintf(stderr, "usage: %s [options] [lu[,lu...]@]host[:port]\n", programname); fprintf(stderr, "Use " OptHelp1 " for the list of options\n"); pr3287_exit(1); } /* Print command-line help. */ static void cmdline_help(void) { unsigned tls_options = sio_all_options_supported(); fprintf(stderr, "Usage: %s [options] [lu[,lu...]@]host[:port]\n", programname); fprintf(stderr, "Options:\n"); if (tls_options & TLS_OPT_ACCEPT_HOSTNAME) { fprintf(stderr, " " OptAcceptHostname " \n" " accept a specific name in host cert\n"); } fprintf(stderr, " -assoc associate with a session (TN3270E only)\n"); if (tls_options & TLS_OPT_CA_DIR) { fprintf(stderr, " " OptCaDir " find CA certificate database in \n"); } if (tls_options & TLS_OPT_CA_FILE) { fprintf(stderr, " " OptCaFile " find CA certificates in \n"); } if (tls_options & TLS_OPT_CERT_FILE) { fprintf(stderr, " " OptCertFile " find client certificate in \n"); } if (tls_options & TLS_OPT_CERT_FILE_TYPE) { fprintf(stderr, " " OptCertFileType " pem|asn1\n" " specify client certificate file type\n"); } if (tls_options & TLS_OPT_CHAIN_FILE) { fprintf(stderr, " " OptChainFile " \n" " specify client certificate chain file\n"); } fprintf(stderr, " " OptCodePage " specify host code page\n"); if (tls_options & TLS_OPT_CLIENT_CERT) { fprintf(stderr, " " OptClientCert " use TLS client certificate \n"); } fprintf(stderr, #if !defined(_WIN32) /*[*/ " -command \"\" use for printing (default \"lpr\")\n" #endif /*]*/ " -blanklines display blank lines even if empty (formatted LU3)\n" #if !defined(_WIN32) /*[*/ " -daemon become a daemon after connecting\n" #endif /*]*/ " -emflush flush printer output when an unformatted EM order arrives\n" " (historical option; this is now the default)\n" " -noemflush do not flush printer output when an unformatted EM order\n" " arrives\n" #if defined(_WIN32) /*[*/ " -nocrlf don't expand newlines to CR/LF\n" #else /*][*/ " -crlf expand newlines to CR/LF\n" #endif /*]*/ " -crthru pass through CRs in unformatted 3270 mode\n" " -eojtimeout \n" " time out end of print job\n" " -ffeoj assume FF at the end of each print job\n" " -ffthru pass through SCS FF orders\n" " -ffskip skip FF orders at top of page\n"); if (tls_options & TLS_OPT_KEY_FILE) { fprintf(stderr, " " OptKeyFile " find certificate private key in \n"); } if (tls_options & TLS_OPT_KEY_FILE_TYPE) { fprintf(stderr, " " OptKeyFileType " pem|asn1\n" " specify private key file type\n"); } if (tls_options & TLS_OPT_KEY_PASSWD) { fprintf(stderr, " " OptKeyPasswd " file:|string:\n" " specify private key password\n"); } fprintf(stderr, " -ignoreeoj ignore PRINT-EOJ commands\n" " -mpp define the Maximum Presentation Position (unformatted\n" " line length)\n"); if (tls_options & TLS_OPT_VERIFY_HOST_CERT) { fprintf(stderr, " " OptNoVerifyHostCert " do not verify host certificate for TLS connections\n"); } fprintf(stderr, #if defined(_WIN32) /*[*/ " -printer \"printer name\"\n" " use specific printer (default is $PRINTER or the system\n" " default printer)\n" " -printercp \n" " code page for output (default is system ANSI code page)\n" #endif /*]*/ " -proxy \"\"\n" " connect to host via specified proxy\n" " " OptReconnect " keep trying to reconnect\n"); fprintf(stderr, " -skipcc skip ASA carriage control characters in unformatted host\n" " output\n" " -syncport port TCP port for login session synchronization\n" #if defined(_WIN32) /*[*/ " " OptTrace " trace data stream to /x3trc..txt\n" #else /*][*/ " " OptTrace " trace data stream to /tmp/x3trc.\n" #endif /*]*/ " -tracedir directory to keep trace information in\n" " -trnpre file of transparent data to send before each job\n" " -trnpost file of transparent data to send after each job\n" " -v display version information and exit\n"); if (tls_options & TLS_OPT_VERIFY_HOST_CERT) { fprintf(stderr, " " OptVerifyHostCert " verify host certificate for TLS connections (enabled by default)\n"); } fprintf(stderr, " -V log verbose information about connection negotiation\n" " -xtable specify a custom EBCDIC-to-ASCII translation table\n"); pr3287_exit(1); } /* Print an error message. */ void verrmsg(const char *fmt, va_list ap) { static char buf[2][4096] = { "", "" }; static int ix = 0; ix = !ix; vsprintf(buf[ix], fmt, ap); vtrace("Error: %s\n", buf[ix]); if (!strcmp(buf[ix], buf[!ix])) { if (options.verbose) { fprintf(stderr, "Suppressed error '%s'\n", buf[ix]); } return; } #if !defined(_WIN32) /*[*/ if (options.bdaemon == AM_DAEMON) { /* XXX: Need to put something in the Application Event Log. */ syslog(LOG_ERR, "%s: %s", programname, buf[ix]); } else { #endif /*]*/ fprintf(stderr, "%s: %s\n", programname, buf[ix]); #if !defined(_WIN32) /*[*/ } #endif /*]*/ } void errmsg(const char *fmt, ...) { va_list args; va_start(args, fmt); verrmsg(fmt, args); va_end(args); } /* xs_warning() is an alias for errmsg() */ void xs_warning(const char *fmt, ...) { va_list args; char *b; va_start(args, fmt); b = xs_vbuffer(fmt, args); va_end(args); errmsg("%s", b); } /* Memory allocation. */ void * Malloc(size_t len) { void *p = malloc(len); if (p == NULL) { errmsg("Out of memory"); pr3287_exit(1); } return p; } void * Calloc(size_t nelem, size_t elem_size) { void *p = Malloc(nelem * elem_size); memset(p, 0, nelem * elem_size); return p; } void Free(void *p) { free(p); } void * Realloc(void *p, size_t len) { void *pn; pn = realloc(p, len); if (pn == NULL) { errmsg("Out of memory"); pr3287_exit(1); } return pn; } char * NewString(const char *s) { char *p; p = Malloc(strlen(s) + 1); return strcpy(p, s); } void Error(const char *msg) { errmsg(msg); pr3287_exit(1); } /* Signal handler for SIGTERM, SIGINT and SIGHUP. */ static void fatal_signal(int sig) { /* Flush any pending data and exit. */ vtrace("Fatal signal %d\n", sig); print_eoj(); errmsg("Exiting on signal %d", sig); exit(0); } #if !defined(_WIN32) /*[*/ /* Signal handler for SIGUSR1. */ static void flush_signal(int sig) { /* Flush any pending data and exit. */ vtrace("Flush signal %d\n", sig); print_eoj(); } #endif /*]*/ void pr3287_exit(int status) { fflush(stdout); fflush(stderr); #if defined(_WIN32) && defined(NEED_PAUSE) /*[*/ char buf[2]; if (status) { printf("\n[Press ] "); fflush(stdout); fgets(buf, 2, stdin); } #endif /*]*/ /* Close the synchronization socket gracefully. */ if (syncsock != INVALID_SOCKET) { SOCK_CLOSE(syncsock); syncsock = INVALID_SOCKET; } exit(status); } static void init_options(void) { /* Clear them all out, just in case. */ memset(&options, '\0', sizeof(options)); /* Set individual defaults. */ options.assoc = NULL; #if !defined(_WIN32) /*[*/ options.bdaemon = NOT_DAEMON; #endif /*]*/ options.blanklines = 0; options.codepage = "cp037"; #if !defined(_WIN32) /*[*/ options.command = "lpr"; #endif /*]*/ #if !defined(_WIN32) /*[*/ options.crlf = 0; #else /*][*/ options.crlf = 1; #endif /*]*/ options.crthru = 0; options.emflush = 1; options.eoj_timeout = 0L; options.ffeoj = 0; options.ffthru = 0; options.ffskip = 0; options.ignoreeoj = 0; #if defined(_WIN32) /*[*/ if ((options.printer = getenv("PRINTER")) == NULL) { options.printer = ws_default_printer(); } options.printercp = 0; #endif /*]*/ options.proxy_spec = NULL; options.reconnect = 0; options.skipcc = 0; options.mpp = DEFAULT_UNF_MPP; options.tls.accept_hostname = NULL; options.tls.ca_dir = NULL; options.tls.ca_file = NULL; options.tls.cert_file = NULL; options.tls.cert_file_type = NULL; options.tls.chain_file = NULL; options.tls.key_file = NULL; options.tls.key_file_type = NULL; options.tls.key_passwd = NULL; options.tls.client_cert = NULL; options.tls_host = false; options.tls.verify_host_cert= true; options.syncport = 0; #if !defined(_WIN32) /*[*/ options.tracedir = "/tmp"; #else /*][*/ options.tracedir = NULL; #endif /*]*/ options.tracing = 0; options.trnpre = NULL; options.trnpost = NULL; options.verbose = 0; } int main(int argc, char *argv[]) { int i; char *lu = NULL; char *host = NULL; char *port = "23"; char *accept = NULL; unsigned prefixes; char *error; char *xtable = NULL; unsigned short p; union { struct sockaddr sa; struct sockaddr_in sin; #if defined(AF_INET6) && defined(X3270_IPV6) /*[*/ struct sockaddr_in6 sin6; #endif /*]*/ } ha; socklen_t ha_len = sizeof(ha); socket_t s = INVALID_SOCKET; int rc = 0; int report_success = 0; unsigned tls_options = sio_all_options_supported(); /* Learn our name. */ #if defined(_WIN32) /*[*/ if ((programname = strrchr(argv[0], '\\')) != NULL) #else /*][*/ if ((programname = strrchr(argv[0], '/')) != NULL) #endif /*]*/ { programname++; } else { programname = argv[0]; } #if !defined(_WIN32) /*[*/ if (!programname[0]) { programname = "pr3287"; } #endif /*]*/ #if defined(_WIN32) /*[*/ if (!get_dirs("wc3270", &instdir, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL)) { exit(1); } if (sockstart() < 0) { exit(1); } #endif /*]*/ /* Gather the options. */ init_options(); for (i = 1; i < argc && (argv[i][0] == '-' #if defined(_WIN32) /*[*/ || !strcmp(argv[i], OptHelp3) #endif /*]*/ ); i++) { #if !defined(_WIN32) /*[*/ if (!strcmp(argv[i], "-daemon")) { options.bdaemon = WILL_DAEMON; } else #endif /*]*/ if ((tls_options & TLS_OPT_ACCEPT_HOSTNAME) && !strcmp(argv[i], OptAcceptHostname)) { if (argc <= i + 1 || !argv[i + 1][0]) { fprintf(stderr, "Missing value for " OptAcceptHostname "\n"); usage(); } options.tls.accept_hostname = argv[i + 1]; i++; } else if (!strcmp(argv[i], "-assoc")) { if (argc <= i + 1 || !argv[i + 1][0]) { fprintf(stderr, "Missing value for -assoc\n"); usage(); } options.assoc = argv[i + 1]; i++; #if !defined(_WIN32) /*[*/ } else if (!strcmp(argv[i], "-command")) { if (argc <= i + 1 || !argv[i + 1][0]) { fprintf(stderr, "Missing value for -command\n"); usage(); } options.command = argv[i + 1]; i++; #endif /*]*/ } else if ((tls_options & TLS_OPT_CA_DIR) && !strcmp(argv[i], OptCaDir)) { if (argc <= i + 1 || !argv[i + 1][0]) { fprintf(stderr, "Missing value for " OptCaDir "\n"); usage(); } options.tls.ca_dir = argv[i + 1]; i++; } else if ((tls_options & TLS_OPT_CA_FILE) && !strcmp(argv[i], OptCaFile)) { if (argc <= i + 1 || !argv[i + 1][0]) { fprintf(stderr, "Missing value for " OptCaFile "\n"); usage(); } options.tls.ca_file = argv[i + 1]; i++; } else if ((tls_options & TLS_OPT_CERT_FILE) && !strcmp(argv[i], OptCertFile)) { if (argc <= i + 1 || !argv[i + 1][0]) { fprintf(stderr, "Missing value for " OptCertFile "\n"); usage(); } options.tls.cert_file = argv[i + 1]; i++; } else if ((tls_options & TLS_OPT_CERT_FILE_TYPE) && !strcmp(argv[i], OptCertFileType)) { if (argc <= i + 1 || !argv[i + 1][0]) { fprintf(stderr, "Missing value for " OptCertFileType "\n"); usage(); } options.tls.cert_file_type = argv[i + 1]; i++; } else if ((tls_options & TLS_OPT_CHAIN_FILE) && !strcmp(argv[i], OptChainFile)) { if (argc <= i + 1 || !argv[i + 1][0]) { fprintf(stderr, "Missing value for " OptChainFile "\n"); usage(); } options.tls.chain_file = argv[i + 1]; i++; } else if ((tls_options & TLS_OPT_KEY_FILE) && !strcmp(argv[i], OptKeyFile)) { if (argc <= i + 1 || !argv[i + 1][0]) { fprintf(stderr, "Missing value for " OptKeyFile "\n"); usage(); } options.tls.key_file = argv[i + 1]; i++; } else if ((tls_options & TLS_OPT_KEY_FILE_TYPE) && !strcmp(argv[i], OptKeyFileType)) { if (argc <= i + 1 || !argv[i + 1][0]) { fprintf(stderr, "Missing value for " OptKeyFileType "\n"); usage(); } options.tls.key_file_type = argv[i + 1]; i++; } else if ((tls_options & TLS_OPT_KEY_PASSWD) && !strcmp(argv[i], OptKeyPasswd)) { if (argc <= i + 1 || !argv[i + 1][0]) { fprintf(stderr, "Missing value for " OptKeyPasswd "\n"); usage(); } options.tls.key_passwd = argv[i + 1]; i++; } else if ((tls_options & TLS_OPT_CLIENT_CERT) && !strcmp(argv[i], OptClientCert)) { if (argc <= i + 1 || !argv[i + 1][0]) { fprintf(stderr, "Missing value for " OptClientCert "\n"); usage(); } options.tls.client_cert = argv[i + 1]; i++; } else if (!strcmp(argv[i], OptCharset) || !strcmp(argv[i], OptCodePage)) { if (argc <= i + 1 || !argv[i + 1][0]) { fprintf(stderr, "Missing value for %s\n", argv[i]); usage(); } options.codepage = argv[i + 1]; i++; } else if (!strcmp(argv[i], "-blanklines")) { options.blanklines = 1; } else if (!strcmp(argv[i], "-emflush")) { options.emflush = 1; } else if (!strcmp(argv[i], "-noemflush")) { options.emflush = 0; #if defined(_WIN32) /*[*/ } else if (!strcmp(argv[i], "-nocrlf")) { options.crlf = 0; #else /*][*/ } else if (!strcmp(argv[i], "-crlf")) { options.crlf = 1; #endif /*]*/ } else if (!strcmp(argv[i], "-crthru")) { options.crthru = 1; } else if (!strcmp(argv[i], "-eojtimeout")) { if (argc <= i + 1 || !argv[i + 1][0]) { fprintf(stderr, "Missing value for -eojtimeout\n"); usage(); } options.eoj_timeout = strtoul(argv[i + 1], NULL, 0); i++; } else if (!strcmp(argv[i], "-ignoreeoj")) { options.ignoreeoj = 1; } else if (!strcmp(argv[i], "-ffeoj")) { options.ffeoj = 1; } else if (!strcmp(argv[i], "-ffthru")) { options.ffthru = 1; } else if (!strcmp(argv[i], "-ffskip")) { options.ffskip = 1; #if defined(_WIN32) /*[*/ } else if (!strcmp(argv[i], "-printer")) { if (argc <= i + 1 || !argv[i + 1][0]) { fprintf(stderr, "Missing value for -printer\n"); usage(); } options.printer = argv[i + 1]; i++; } else if (!strcmp(argv[i], "-printercp")) { if (argc <= i + 1 || !argv[i + 1][0]) { fprintf(stderr, "Missing value for -printercp\n"); usage(); } options.printercp = (int)strtoul(argv[i + 1], NULL, 0); i++; #endif /*]*/ } else if (!strcmp(argv[i], "-mpp")) { if (argc <= i + 1 || !argv[i + 1][0]) { fprintf(stderr, "Missing value for -mpp\n"); usage(); } options.mpp = (int)strtoul(argv[i + 1], NULL, 0); if (options.mpp < MIN_UNF_MPP || options.mpp > MAX_UNF_MPP) { fprintf(stderr, "Invalid for -mpp\n"); usage(); } i++; } else if ((tls_options & TLS_OPT_VERIFY_HOST_CERT) && !strcmp(argv[i], OptNoVerifyHostCert)) { options.tls.verify_host_cert = false; } else if (!strcmp(argv[i], OptReconnect)) { options.reconnect = 1; } else if (!strcmp(argv[i], OptV) || !strcmp(argv[i], OptVersion)) { printf("%s\n%s\n", build, build_options()); codepage_list(); printf("\n\ Copyright 1989-%s, Paul Mattes, GTRC and others.\n\ See the source code or documentation for licensing details.\n\ Distributed WITHOUT ANY WARRANTY; without even the implied warranty of\n\ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n", cyear); exit(0); } else if ((tls_options & TLS_OPT_VERIFY_HOST_CERT) && !strcmp(argv[i], OptVerifyHostCert)) { options.tls.verify_host_cert = true; } else if (!strcmp(argv[i], "-V")) { options.verbose = 1; } else if (!strcmp(argv[i], "-syncport")) { if (argc <= i + 1 || !argv[i + 1][0]) { fprintf(stderr, "Missing value for -syncport\n"); usage(); } options.syncport = (int)strtoul(argv[i + 1], NULL, 0); i++; } else if (!strcmp(argv[i], OptTrace)) { options.tracing = 1; } else if (!strcmp(argv[i], "-tracedir")) { if (argc <= i + 1 || !argv[i + 1][0]) { fprintf(stderr, "Missing value for -tracedir\n"); usage(); } options.tracedir = argv[i + 1]; i++; } else if (!strcmp(argv[i], "-trnpre")) { if (argc <= i + 1 || !argv[i + 1][0]) { fprintf(stderr, "Missing value for -trnpre\n"); usage(); } options.trnpre = argv[i + 1]; i++; } else if (!strcmp(argv[i], "-trnpost")) { if (argc <= i + 1 || !argv[i + 1][0]) { fprintf(stderr, "Missing value for -trnpost\n"); usage(); } options.trnpost = argv[i + 1]; i++; } else if (!strcmp(argv[i], OptProxy)) { if (argc <= i + 1 || !argv[i + 1][0]) { fprintf(stderr, "Missing value for " OptProxy "\n"); usage(); } options.proxy_spec = argv[i + 1]; i++; } else if (!strcmp(argv[i], "-xtable")) { if (argc <= i + 1 || !argv[i + 1][0]) { fprintf(stderr, "Missing value for -xtable\n"); usage(); } xtable = argv[i + 1]; i++; } else if (!strcmp(argv[i], "-skipcc")) { options.skipcc = 1; } else if (!strcmp(argv[i], OptHelp1) || !strcmp(argv[i], OptHelp2) #if defined(_WIN32) /*[*/ || !strcmp(argv[i], OptHelp3) #endif /*]*/ ) { cmdline_help(); exit(0); } else { fprintf(stderr, "Unknown option '%s'\n", argv[i]); usage(); } } if (argc != i + 1) { usage(); } /* * Pick apart the hostname, LUs and port. * We allow "L:" and "@" in either order. */ if (!new_split_host(argv[i], &lu, &host, &port, &accept, &prefixes, &error)) { fprintf(stderr, "%s\n", error); pr3287_exit(1); } if (port == NULL) { port = "23"; } if (HOST_nFLAG(prefixes, TLS_HOST)) { options.tls_host = true; } if (HOST_nFLAG(prefixes, NO_VERIFY_CERT_HOST)) { options.tls.verify_host_cert = false; } if (accept != NULL) { options.tls.accept_hostname = accept; } if (HOST_nFLAG(prefixes, NO_LOGIN_HOST) || HOST_nFLAG(prefixes, NON_TN3270E_HOST) || HOST_nFLAG(prefixes, PASSTHRU_HOST) || HOST_nFLAG(prefixes, STD_DS_HOST) || HOST_nFLAG(prefixes, BIND_LOCK_HOST)) { usage(); } if (options.tls_host && !sio_supported()) { fprintf(stderr, "Secure connections not supported.\n"); pr3287_exit(1); } #if defined(_WIN32) /*[*/ /* Set the printer code page. */ if (options.printercp == 0) { options.printercp = GetACP(); } #endif /*]*/ /* Set up the character set. */ if (codepage_init(options.codepage) != CS_OKAY) { pr3287_exit(1); } /* Set up the custom translation table. */ if (xtable != NULL && xtable_init(xtable) < 0) { pr3287_exit(1); } /* Try opening the trace file, if there is one. */ if (options.tracing) { char tracefile[4096]; time_t clk; int i; int u = 0; int fd; #if defined(_WIN32) /*[*/ size_t sl; #endif /*]*/ do { char dashu[32]; if (u) { snprintf(dashu, sizeof(dashu), "-%d", u); } else { dashu[0] = '\0'; } #if defined(_WIN32) /*[*/ if (options.tracedir == NULL) { options.tracedir = ""; } sl = strlen(options.tracedir); snprintf(tracefile, sizeof(tracefile), "%s%sx3trc.%d%s.txt", options.tracedir, sl? ((options.tracedir[sl - 1] == '\\')? "": "\\"): "", getpid(), dashu); #else /*][*/ snprintf(tracefile, sizeof(tracefile), "%s/x3trc.%u%s", options.tracedir, (unsigned)getpid(), dashu); #endif /*]*/ fd = open(tracefile, O_WRONLY | O_CREAT | O_EXCL, 0600); if (fd < 0) { if (errno != EEXIST) { perror(tracefile); pr3287_exit(1); } u++; } } while (fd < 0); #if !defined(_WIN32) /*[*/ fcntl(fd, F_SETFD, 1); #endif /*]*/ tracef = fdopen(fd, "w"); if (tracef == NULL) { perror(tracefile); pr3287_exit(1); } SETLINEBUF(tracef); clk = time((time_t *)0); vtrace_nts("Trace started %s", ctime(&clk)); vtrace_nts(" Version: %s\n %s\n", build, build_options()); #if !defined(_WIN32) /*[*/ vtrace_nts(" Locale codeset: %s\n", locale_codeset); #else /*][*/ vtrace_nts(" ANSI codepage: %d, printer codepage: %d\n", GetACP(), options.printercp); #endif /*]*/ vtrace_nts(" Host codepage: %d", (int)(cgcsgid & 0xffff)); if (dbcs) { vtrace_nts("+%d", (int)(cgcsgid_dbcs & 0xffff)); } vtrace_nts("\n"); vtrace_nts(" Command:"); for (i = 0; i < argc; i++) { vtrace_nts(" %s", argv[i]); } vtrace_nts("\n"); #if defined(_WIN32) /*[*/ vtrace_nts(" Instdir: %s\n", instdir? instdir: "(null)"); #endif /*]*/ /* Dump the translation table. */ if (xtable != NULL) { int ebc; unsigned char *x; vtrace_nts("Translation table:\n"); for (ebc = 0; ebc <= 0xff; ebc++) { int nx = xtable_lookup(ebc, &x); if (nx >= 0) { int j; vtrace_nts(" ebcdic X'%02X' ascii", ebc); for (j = 0; j < nx; j++) { vtrace_nts(" 0x%02x", (unsigned char)x[j]); } vtrace_nts("\n"); } } } } #if !defined(_WIN32) /*[*/ /* Become a daemon. */ if (options.bdaemon != NOT_DAEMON) { switch (fork()) { case -1: perror("fork"); exit(1); break; case 0: /* Child: Break away from the TTY. */ if (setsid() < 0) { exit(1); } options.bdaemon = AM_DAEMON; break; default: /* Parent: We're all done. */ exit(0); break; } } #endif /*]*/ /* Handle signals. */ signal(SIGTERM, fatal_signal); signal(SIGINT, fatal_signal); #if !defined(_WIN32) /*[*/ signal(SIGHUP, fatal_signal); signal(SIGUSR1, flush_signal); signal(SIGPIPE, SIG_IGN); #endif /*]*/ /* Set up the proxy. */ if (options.proxy_spec != NULL) { proxy_type = proxy_setup(options.proxy_spec, &proxy_user, &proxy_host, &proxy_portname); if (proxy_type < 0) { pr3287_exit(1); } } /* Set up the synchronization socket. */ if (options.syncport) { struct sockaddr_in sin; memset(&sin, '\0', sizeof(sin)); sin.sin_family = AF_INET; sin.sin_addr.s_addr = htonl(INADDR_LOOPBACK); sin.sin_port = htons(options.syncport); syncsock = socket(PF_INET, SOCK_STREAM, 0); if (syncsock == INVALID_SOCKET) { popup_a_sockerr("socket(syncsock)"); pr3287_exit(1); } if (connect(syncsock, (struct sockaddr *)&sin, sizeof(sin)) < 0) { popup_a_sockerr("connect(syncsock)"); pr3287_exit(1); } vtrace("Connected to sync port %d.\n", options.syncport); } /* * One-time initialization is now complete. * (Most) everything beyond this will now be retried, if the -reconnect * option is in effect. */ for (;;) { char *errtxt; /* Resolve the host name. */ if (proxy_type > 0) { unsigned long lport; char *ptr; struct servent *sp; int nr; if (resolve_host_and_port(proxy_host, proxy_portname, &proxy_port, &ha.sa, sizeof(ha), &ha_len, &errtxt, 1, &nr) < 0) { popup_an_error("%s", errtxt); rc = 1; goto retry; } lport = strtoul(port, &ptr, 0); if (ptr == port || *ptr != '\0' || lport == 0L || lport & ~0xffff) { if (!(sp = getservbyname(port, "tcp"))) { popup_an_error("Unknown port number or service: %s", port); rc = 1; goto retry; } p = ntohs(sp->s_port); } else { p = (unsigned short)lport; } } else { int nr; if (resolve_host_and_port(host, port, &p, &ha.sa, sizeof(ha), &ha_len, &errtxt, 1, &nr) < 0) { popup_an_error("%s", errtxt); rc = 1; goto retry; } } /* Connect to the host. */ s = socket(ha.sa.sa_family, SOCK_STREAM, 0); if (s == INVALID_SOCKET) { popup_a_sockerr("socket"); pr3287_exit(1); } if (connect(s, &ha.sa, ha_len) < 0) { popup_a_sockerr("%s", (proxy_type > 0)? proxy_host: host); rc = 1; goto retry; } if (proxy_type > 0) { /* Connect to the host through the proxy. */ if (options.verbose) { fprintf(stderr, "Connected to proxy server %s, port %u\n", proxy_host, proxy_port); } if (proxy_negotiate(s, proxy_user, host, p, true) != PX_SUCCESS) { rc = 1; goto retry; } } /* Say hello. */ if (options.verbose) { fprintf(stderr, "Connected to %s, port %u%s\n", host, p, options.tls_host? " via TLS": ""); if (options.assoc != NULL) { fprintf(stderr, "Associating with LU %s\n", options.assoc); } else if (lu != NULL) { fprintf(stderr, "Connecting to LU %s\n", lu); } #if !defined(_WIN32) /*[*/ fprintf(stderr, "Command: %s\n", options.command); #else /*][*/ fprintf(stderr, "Printer: %s\n", options.printer? options.printer: "(none)"); #endif /*]*/ } vtrace("Connected to %s, port %u%s\n", host, p, options.tls_host? " via TLS": ""); if (options.assoc != NULL) { vtrace("Associating with LU %s\n", options.assoc); } else if (lu != NULL) { vtrace("Connecting to LU %s\n", lu); } #if !defined(_WIN32) /*[*/ vtrace("Command: %s\n", options.command); #else /*][*/ vtrace("Printer: %s\n", options.printer? options.printer: "(none)"); #endif /*]*/ /* Negotiate. */ if (!pr_net_negotiate(host, &ha.sa, ha_len, s, lu, options.assoc)) { rc = 1; goto retry; } /* Report sudden success. */ if (report_success) { errmsg("Connected to %s, port %u", host, p); report_success = 0; } /* Process what we're told to process. */ if (!pr_net_process(s)) { rc = 1; if (options.verbose) { fprintf(stderr, "Disconnected (error).\n"); } goto retry; } if (options.verbose) { fprintf(stderr, "Disconnected (eof).\n"); } retry: /* Flush any pending data. */ print_eoj(); /* Close the socket. */ if (s != INVALID_SOCKET) { net_disconnect(true); s = INVALID_SOCKET; } if (!options.reconnect) { break; } report_success = 1; /* Wait a while, to reduce thrash. */ if (rc) { #if !defined(_WIN32) /*[*/ sleep(5); #else /*][*/ Sleep(5 * 1000000); #endif /*]*/ } rc = 0; } pr3287_exit(rc); return rc; } /* Error pop-ups. */ void popup_a_vxerror(pae_t type, const char *fmt, va_list args) { verrmsg(fmt, args); } #if defined(_MSC_VER) /*[*/ #define xstr(s) str(s) #define str(s) #s #endif /*]*/ const char * build_options(void) { const char *build = NULL; if (build == NULL) { build = xs_buffer("Build options:%s" #if defined(_MSC_VER) /*[*/ " via MSVC " xstr(_MSC_VER) #endif /*]*/ #if defined(__GNUC__) /*[*/ " via gcc " __VERSION__ #endif /*]*/ #if defined(__LP64__) || defined(__LLP64__) /*[*/ " 64-bit" #else /*][*/ " 32-bit" #endif /*]*/ , using_iconv()? " -with-iconv": ""); } return build; } /* Glue functions to allow proxy.c to link. */ void connect_error(const char *fmt, ...) { assert(false); } ioid_t AddTimeOut(unsigned long msec, tofn_t fn) { assert(false); return NULL_IOID; } void RemoveTimeOut(ioid_t cookie) { assert(false); } suite3270-4.1/Common/pr3287/pr3287.h000066400000000000000000000063531413735575200163610ustar00rootroot00000000000000/* * Copyright (c) 2013-2014, 2017, 2019-2020 Paul Mattes. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the names of Paul Mattes nor the names of his contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO * EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * pr3287: A 3270 printer emulator for TELNET sessions. * * Global declarations. */ /* Nested include for tls_config_t. */ #include "tls_config.h" /* Options. */ typedef struct { const char *assoc; /* TN3270 session to associate with (-assoc) */ #if !defined(_WIN32) /*[*/ enum { NOT_DAEMON, WILL_DAEMON, AM_DAEMON } bdaemon; /* daemon mode */ #endif /*]*/ int blanklines; /* -blanklines */ const char *codepage; /* code page (-codepage) */ #if !defined(_WIN32) /*[*/ const char *command; /* command to run for printing */ #endif /*]*/ int crlf; /* -crlf */ int crthru; /* -crtrhru */ int emflush; /* -emfush */ unsigned long eoj_timeout; /* -eojtimeout */ int ffeoj; /* -ffeoj */ int ffthru; /* -ffthru */ int ffskip; /* -ffskip */ int ignoreeoj; /* -ignoreeoj */ #if defined(_WIN32) /*[*/ const char *printer; /* printer to use (-printer) */ int printercp; /* -printercp */ #endif /*]*/ const char *proxy_spec; /* proxy specification */ int reconnect; /* -reconnect */ int skipcc; /* -skipcc */ int mpp; /* -mpp */ bool tls_host; /* L: */ tls_config_t tls; /* TLS options */ int syncport; /* -syncport */ const char *tracedir; /* where we are tracing (-tracedir) */ int tracing; /* are we tracing? (-trace) */ const char *trnpre; /* -trnpre */ const char *trnpost; /* -trnpost */ int verbose; /* -V */ } options_t; extern options_t options; #if defined(_WIN32) /*[*/ extern char *instdir; extern char *common_appdata; #endif /*]*/ extern socket_t syncsock; extern void pr3287_exit(int exit_code); #define MIN_UNF_MPP 40 /* minimum value for unformatted MPP */ #define MAX_UNF_MPP 256 /* maximum value for unformatted MPP */ #define DEFAULT_UNF_MPP 132 /* default value for unformatted MPP */ suite3270-4.1/Common/pr3287/pr3287.man.m4000066400000000000000000000011021413735575200172070ustar00rootroot00000000000000XX_TH(PR3287,1,XX_DATE) XX_SH(Name) XX_PRODUCT XX_DASHED() XX_SM(IBM) host printing tool XX_SH(Synopsis) XX_FB(XX_PRODUCT) [XX_FI(options)] XX_FI(hostname) XX_SH(Description) XX_FB(XX_PRODUCT) opens a TELNET connection to an XX_SM(IBM) host, and emulates an XX_SM(IBM) 3287 printer. It implements RFCs 2355 (TN3270E), 1576 (TN3270) and 1646 (LU name selection). XX_SH(Wiki) Primary documentation for XX_PRODUCT is on the XX_FB(x3270 Wiki), XX_LINK(https://x3270.miraheze.org/wiki/Main_Page,https://x3270.miraheze.org/wiki/Main_Page). XX_SH(Version) XX_PRODUCT XX_VERSION_NUMBER suite3270-4.1/Common/pr3287/pr3287_files.mk000066400000000000000000000001631413735575200177140ustar00rootroot00000000000000# Object files common to 3287 emulators PR3287_OBJECTS = codepage.o ctlr.o pr3287.o sf.o telnet.o trace.o xtable.o suite3270-4.1/Common/pr3287/pr_telnet.h000066400000000000000000000035031413735575200174020ustar00rootroot00000000000000/* * Copyright (c) 1995-2013, 2015, 2017, 2020 Paul Mattes. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the names of Paul Mattes nor the names of his contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO * EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * pr_telnet.h * Global declarations for pr3287 telnet.c, beyond (or different * from) what is declared in telnet_core.h. */ extern bool pr_net_negotiate(const char *host, struct sockaddr *sa, socklen_t len, socket_t s, char *lu, const char *assoc); extern bool pr_net_process(socket_t s); suite3270-4.1/Common/pr3287/sf.c000066400000000000000000000405131413735575200160130ustar00rootroot00000000000000/* * Copyright (c) 1994-2009, 2013-2014 Paul Mattes. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the names of Paul Mattes nor the names of his contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO * EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * sf.c * This module handles 3270 structured fields. * */ #include #include #include #include "globals.h" #include "3270ds.h" #include #include "ctlrc.h" #if !defined(PR3287) /*[*/ # include "ft_dft.h" #endif /*]*/ #include "sf.h" #if defined(_WIN32) /*[*/ # include "ws2tcpip.h" #else /*][*/ # include #endif /*]*/ #include "telnet_core.h" #include "trace.h" /* Statics */ static bool qr_in_progress = false; static enum pds sf_read_part(unsigned char buf[], unsigned buflen); static enum pds sf_erase_reset(unsigned char buf[], int buflen); static enum pds sf_set_reply_mode(unsigned char buf[], int buflen); static enum pds sf_outbound_ds(unsigned char buf[], int buflen); static void query_reply_start(void); static void do_query_reply(unsigned char code); static void query_reply_end(void); /* Some permanent substitutions. */ #define maxROWS 72 #define maxCOLS 66 #define char_width 10 #define char_height 20 #define standard_font 0 static unsigned char supported_replies[] = { QR_SUMMARY, /* 0x80 */ QR_USABLE_AREA, /* 0x81 */ QR_ALPHA_PART, /* 0x84 */ QR_CHARSETS, /* 0x85 */ QR_COLOR, /* 0x86 */ QR_HIGHLIGHTING, /* 0x87 */ QR_REPLY_MODES, /* 0x88 */ QR_DBCS_ASIA, /* 0x91 */ QR_IMP_PART, /* 0xa6 */ QR_DDM, /* 0x95 */ }; #define NSR (sizeof(supported_replies)/sizeof(unsigned char)) /* * Process a 3270 Write Structured Field command */ enum pds write_structured_field(unsigned char buf[], size_t buflen) { size_t fieldlen; unsigned char *cp = buf; bool first = true; enum pds rv = PDS_OKAY_NO_OUTPUT; enum pds rv_this = PDS_OKAY_NO_OUTPUT; bool bad_cmd = false; /* Skip the WSF command itself. */ cp++; buflen--; /* Interpret fields. */ while (buflen > 0) { if (first) { trace_ds(" "); } else { trace_ds("< WriteStructuredField "); } first = false; /* Pick out the field length. */ if (buflen < 2) { trace_ds("error: single byte at end of message\n"); return rv ? rv : PDS_BAD_CMD; } fieldlen = (cp[0] << 8) + cp[1]; if (fieldlen == 0) { fieldlen = buflen; } if (fieldlen < 3) { trace_ds("error: field length %d too small\n", (int)fieldlen); return rv ? rv : PDS_BAD_CMD; } if (fieldlen > buflen) { trace_ds("error: field length %d exceeds remaining " "message length %d\n", (int)fieldlen, (int)buflen); return rv ? rv : PDS_BAD_CMD; } /* Dispatch on the ID. */ switch (cp[2]) { case SF_READ_PART: trace_ds("ReadPartition"); rv_this = sf_read_part(cp, (int)fieldlen); break; case SF_ERASE_RESET: trace_ds("EraseReset"); rv_this = sf_erase_reset(cp, (int)fieldlen); break; case SF_SET_REPLY_MODE: trace_ds("SetReplyMode"); rv_this = sf_set_reply_mode(cp, (int)fieldlen); break; case SF_OUTBOUND_DS: trace_ds("OutboundDS"); rv_this = sf_outbound_ds(cp, (int)fieldlen); break; #if !defined(PR3287) /*[*/ case SF_TRANSFER_DATA: /* File transfer data */ trace_ds("FileTransferData"); ft_dft_data(cp, (int)fieldlen); break; #endif /*]*/ default: trace_ds("unsupported ID 0x%02x\n", cp[2]); rv_this = PDS_BAD_CMD; break; } /* * Accumulate errors or output flags. * One real ugliness here is that if we have already * generated some output, then we have already positively * acknowledged the request, so if we fail here, we have no * way to return the error indication. */ if (rv_this < 0) { bad_cmd = true; } else { rv |= rv_this; } /* Skip to the next field. */ cp += fieldlen; buflen -= fieldlen; } if (first) { trace_ds(" (null)\n"); } if (bad_cmd && !rv) { return PDS_BAD_CMD; } else { return rv; } } static enum pds sf_read_part(unsigned char buf[], unsigned buflen) { unsigned char partition; unsigned i; int any = 0; const char *comma = ""; if (buflen < 5) { trace_ds(" error: field length %d too small\n", buflen); return PDS_BAD_CMD; } partition = buf[3]; trace_ds("(0x%02x)", partition); switch (buf[4]) { case SF_RP_QUERY: trace_ds(" Query"); if (partition != 0xff) { trace_ds(" error: illegal partition\n"); return PDS_BAD_CMD; } trace_ds("\n"); query_reply_start(); for (i = 0; i < NSR; i++) { if (dbcs || supported_replies[i] != QR_DBCS_ASIA) { do_query_reply(supported_replies[i]); } } query_reply_end(); break; case SF_RP_QLIST: trace_ds(" QueryList "); if (partition != 0xff) { trace_ds("error: illegal partition\n"); return PDS_BAD_CMD; } if (buflen < 6) { trace_ds("error: missing request type\n"); return PDS_BAD_CMD; } query_reply_start(); switch (buf[5]) { case SF_RPQ_LIST: trace_ds("List("); if (buflen < 7) { trace_ds(")\n"); do_query_reply(QR_NULL); } else { for (i = 6; i < buflen; i++) { trace_ds("%s%s", comma, see_qcode(buf[i])); comma = ","; } trace_ds(")\n"); for (i = 0; i < NSR; i++) { if (memchr((char *)&buf[6], (char)supported_replies[i], buflen - 6) && (dbcs || supported_replies[i] != QR_DBCS_ASIA)) { do_query_reply(supported_replies[i]); any++; } } if (!any) { do_query_reply(QR_NULL); } } break; case SF_RPQ_EQUIV: trace_ds("Equivlent+List("); for (i = 6; i < buflen; i++) { trace_ds("%s%s", comma, see_qcode(buf[i])); comma = ","; } trace_ds(")\n"); for (i = 0; i < NSR; i++) { if (dbcs || supported_replies[i] != QR_DBCS_ASIA) { do_query_reply(supported_replies[i]); } } break; case SF_RPQ_ALL: trace_ds("All\n"); for (i = 0; i < NSR; i++) { if (dbcs || supported_replies[i] != QR_DBCS_ASIA) { do_query_reply(supported_replies[i]); } } break; default: trace_ds("unknown request type 0x%02x\n", buf[5]); return PDS_BAD_CMD; } query_reply_end(); break; case SNA_CMD_RMA: trace_ds(" ReadModifiedAll"); if (partition != 0x00) { trace_ds(" error: illegal partition\n"); return PDS_BAD_CMD; } trace_ds("\n"); return PDS_BAD_CMD; break; case SNA_CMD_RB: trace_ds(" ReadBuffer"); if (partition != 0x00) { trace_ds(" error: illegal partition\n"); return PDS_BAD_CMD; } trace_ds("\n"); return PDS_BAD_CMD; break; case SNA_CMD_RM: trace_ds(" ReadModified"); if (partition != 0x00) { trace_ds(" error: illegal partition\n"); return PDS_BAD_CMD; } trace_ds("\n"); return PDS_BAD_CMD; break; default: trace_ds(" unknown type 0x%02x\n", buf[4]); return PDS_BAD_CMD; } return PDS_OKAY_OUTPUT; } static enum pds sf_erase_reset(unsigned char buf[], int buflen) { if (buflen != 4) { trace_ds(" error: wrong field length %d\n", buflen); return PDS_BAD_CMD; } switch (buf[3]) { case SF_ER_DEFAULT: trace_ds(" Default\n"); break; case SF_ER_ALT: trace_ds(" Alternate\n"); break; default: trace_ds(" unknown type 0x%02x\n", buf[3]); return PDS_BAD_CMD; } return PDS_OKAY_NO_OUTPUT; } static enum pds sf_set_reply_mode(unsigned char buf[], int buflen) { unsigned char partition; if (buflen < 5) { trace_ds(" error: wrong field length %d\n", buflen); return PDS_BAD_CMD; } partition = buf[3]; trace_ds("(0x%02x)", partition); if (partition != 0x00) { trace_ds(" error: illegal partition\n"); return PDS_BAD_CMD; } switch (buf[4]) { case SF_SRM_FIELD: trace_ds(" Field\n"); break; case SF_SRM_XFIELD: trace_ds(" ExtendedField\n"); break; case SF_SRM_CHAR: trace_ds(" Character"); break; default: trace_ds(" unknown mode 0x%02x\n", buf[4]); return PDS_BAD_CMD; } return PDS_OKAY_NO_OUTPUT; } static enum pds sf_outbound_ds(unsigned char buf[], int buflen) { if (buflen < 5) { trace_ds(" error: field length %d too short\n", buflen); return PDS_BAD_CMD; } trace_ds("(0x%02x)", buf[3]); if (buf[3] != 0x00) { trace_ds(" error: illegal partition 0x%0x\n", buf[3]); return PDS_BAD_CMD; } switch (buf[4]) { case SNA_CMD_W: trace_ds(" Write"); if (buflen > 5) { ctlr_write(&buf[4], buflen-4, false); } else { trace_ds("\n"); } break; case SNA_CMD_EW: trace_ds(" EraseWrite"); if (buflen > 5) { ctlr_write(&buf[4], buflen-4, true); } else { trace_ds("\n"); } break; case SNA_CMD_EWA: trace_ds(" EraseWriteAlternate"); if (buflen > 5) { ctlr_write(&buf[4], buflen-4, true); } else { trace_ds("\n"); } break; case SNA_CMD_EAU: trace_ds(" EraseAllUnprotected\n"); break; default: trace_ds(" unknown type 0x%02x\n", buf[4]); return PDS_BAD_CMD; } return PDS_OKAY_NO_OUTPUT; } static void query_reply_start(void) { obptr = obuf; space3270out(1); *obptr++ = AID_SF; qr_in_progress = true; } static void do_query_reply(unsigned char code) { size_t len; unsigned i; const char *comma = ""; size_t obptr0 = obptr - obuf; unsigned char *obptr_len; unsigned short num, denom; if (qr_in_progress) { trace_ds("> StructuredField\n"); qr_in_progress = false; } space3270out(4); obptr += 2; /* skip length for now */ *obptr++ = SFID_QREPLY; *obptr++ = code; switch (code) { case QR_CHARSETS: trace_ds("> QueryReply(CharacterSets)\n"); space3270out(64); if (dbcs) { *obptr++ = 0x8e; /* flags: GE, CGCSGID, DBCS */ } else { *obptr++ = 0x82; /* flags: GE, CGCSGID present */ } *obptr++ = 0x00; /* more flags */ *obptr++ = char_width; /* SDW */ *obptr++ = char_height; /* SDW */ *obptr++ = 0x00; /* no load PS */ *obptr++ = 0x00; *obptr++ = 0x00; *obptr++ = 0x00; if (dbcs) { *obptr++ = 0x0b; /* DL (11 bytes) */ } else { *obptr++ = 0x07; /* DL (7 bytes) */ } *obptr++ = 0x00; /* SET 0: */ if (dbcs) { *obptr++ = 0x00; /* FLAGS: non-load, single- */ } /* plane, single-bute */ else { *obptr++ = 0x10; /* FLAGS: non-loadable, */ } /* single-plane, single-byte, no compare */ *obptr++ = 0x00; /* LCID 0 */ if (dbcs) { *obptr++ = 0x00; /* SW 0 */ *obptr++ = 0x00; /* SH 0 */ *obptr++ = 0x00; /* SUBSN */ *obptr++ = 0x00; /* SUBSN */ } SET32(obptr, cgcsgid); /* CGCSGID */ if (!standard_font) { /* special 3270 font, includes APL */ *obptr++ = 0x01;/* SET 1: */ *obptr++ = 0x10;/* FLAGS: non-loadable, single-plane, single-byte, no compare */ *obptr++ = 0xf1;/* LCID */ if (dbcs) { *obptr++ = 0x00;/* SW 0 */ *obptr++ = 0x00;/* SH 0 */ *obptr++ = 0x00;/* SUBSN */ *obptr++ = 0x00;/* SUBSN */ } *obptr++ = 0x03;/* CGCSGID: 3179-style APL2 */ *obptr++ = 0xc3; *obptr++ = 0x01; *obptr++ = 0x36; } if (dbcs) { *obptr++ = 0x80; /* SET 0x80: */ *obptr++ = 0x20; /* FLAGS: DBCS */ *obptr++ = 0xf8; /* LCID: 0xf8 */ *obptr++ = char_width * 2; /* SW */ *obptr++ = char_height; /* SH */ *obptr++ = 0x41; /* SUBSN */ *obptr++ = 0x7f; /* SUBSN */ SET32(obptr, cgcsgid_dbcs); /* CGCSGID */ } break; case QR_IMP_PART: trace_ds("> QueryReply(ImplicitPartition)\n"); space3270out(13); *obptr++ = 0x0; /* reserved */ *obptr++ = 0x0; *obptr++ = 0x0b; /* length of display size */ *obptr++ = 0x01; /* "implicit partition size" */ *obptr++ = 0x00; /* reserved */ SET16(obptr, 72); /* implicit partition width */ SET16(obptr, 66); /* implicit partition height */ SET16(obptr, maxCOLS); /* alternate height */ SET16(obptr, maxROWS); /* alternate width */ break; case QR_NULL: trace_ds("> QueryReply(Null)\n"); break; case QR_SUMMARY: trace_ds("> QueryReply(Summary("); space3270out(NSR); for (i = 0; i < NSR; i++) { if (dbcs || supported_replies[i] != QR_DBCS_ASIA) { trace_ds("%s%s", comma, see_qcode(supported_replies[i])); comma = ","; *obptr++ = supported_replies[i]; } } trace_ds("))\n"); break; case QR_USABLE_AREA: trace_ds("> QueryReply(UsableArea)\n"); space3270out(19); *obptr++ = 0x01; /* 12/14-bit addressing */ *obptr++ = 0x00; /* no special character features */ SET16(obptr, maxCOLS); /* usable width */ SET16(obptr, maxROWS); /* usable height */ *obptr++ = 0x01; /* units (mm) */ num = /*display_widthMM()*/ 8 * 5 / 4; denom = /*display_width()*/ 7 * 72; while (!(num % 2) && !(denom % 2)) { num /= 2; denom /= 2; } SET16(obptr, (int)num); /* Xr numerator */ SET16(obptr, (int)denom); /* Xr denominator */ num = /*display_heightMM()*/ 11 * 5 / 4; denom = /*display_height()*/ 9 * 66; while (!(num % 2) && !(denom % 2)) { num /= 2; denom /= 2; } SET16(obptr, (int)num); /* Yr numerator */ SET16(obptr, (int)denom); /* Yr denominator */ *obptr++ = char_width; /* AW */ *obptr++ = char_height; /* AH */ SET16(obptr, 0); /* buffer */ break; case QR_COLOR: trace_ds("> QueryReply(Color)\n"); space3270out(4 + 2*15); *obptr++ = 0x00; /* no options */ *obptr++ = 16; /* report on 16 colors */ *obptr++ = 0x00; /* default color: */ *obptr++ = 0xf0 + HOST_COLOR_GREEN; /* green */ for (i = 0xf1; i <= 0xff; i++) { *obptr++ = i; *obptr++ = i; } break; case QR_HIGHLIGHTING: trace_ds("> QueryReply(Highlighting)\n"); space3270out(11); *obptr++ = 5; /* report on 5 pairs */ *obptr++ = XAH_DEFAULT; /* default: */ *obptr++ = XAH_NORMAL; /* normal */ *obptr++ = XAH_BLINK; /* blink: */ *obptr++ = XAH_BLINK; /* blink */ *obptr++ = XAH_REVERSE; /* reverse: */ *obptr++ = XAH_REVERSE; /* reverse */ *obptr++ = XAH_UNDERSCORE; /* underscore: */ *obptr++ = XAH_UNDERSCORE; /* underscore */ *obptr++ = XAH_INTENSIFY; /* intensify: */ *obptr++ = XAH_INTENSIFY; /* intensify */ break; case QR_REPLY_MODES: trace_ds("> QueryReply(ReplyModes)\n"); space3270out(3); *obptr++ = SF_SRM_FIELD; *obptr++ = SF_SRM_XFIELD; *obptr++ = SF_SRM_CHAR; break; case QR_DBCS_ASIA: /* XXX: Should we support this, even when not in DBCS mode? */ trace_ds("> QueryReply(DbcsAsia)\n"); space3270out(7); *obptr++ = 0x00; /* flags (none) */ *obptr++ = 0x03; /* field length 3 */ *obptr++ = 0x01; /* SI/SO supported */ *obptr++ = 0x80; /* character set ID 0x80 */ *obptr++ = 0x03; /* field length 3 */ *obptr++ = 0x02; /* input control */ *obptr++ = 0x01; /* creation supported */ break; case QR_ALPHA_PART: trace_ds("> QueryReply(AlphanumericPartitions)\n"); space3270out(4); *obptr++ = 0; /* 1 partition */ SET16(obptr, maxROWS*maxCOLS); /* buffer space */ *obptr++ = 0; /* no special features */ break; case QR_DDM: trace_ds("> QueryReply(DistributedDataManagement)\n"); space3270out(8); SET16(obptr,0); /* set reserved field to 0 */ SET16(obptr,2048); /* set inbound length limit */ SET16(obptr,2048); /* set outbound length limit */ SET16(obptr,0x0101); /* NSS=01, DDMSS=01 */ break; default: return; /* internal error */ } obptr_len = obuf + obptr0; len = (obptr - obuf) - obptr0; SET16(obptr_len, len); } static void query_reply_end(void) { net_output(); } suite3270-4.1/Common/pr3287/telnet.c000077500000000000000000001317151413735575200167060ustar00rootroot00000000000000/* * Copyright (c) 1993-2020 Paul Mattes. * Copyright (c) 1990, Jeff Sparkes. * Copyright (c) 1989, Georgia Tech Research Corporation (GTRC), Atlanta, GA * 30332. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the names of Paul Mattes, Jeff Sparkes, GTRC nor the names of * their contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES, JEFF SPARKES AND GTRC "AS IS" AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL PAUL MATTES, JEFF SPARKES OR GTRC BE * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. */ /* * telnet.c * This module initializes and manages a telnet socket to * the given IBM host. */ #include "globals.h" #if defined(_WIN32) /*[*/ # include # include #undef AF_INET6 #else /*][*/ # include # include # include # include # include #endif /*]*/ #define TELCMDS 1 #define TELOPTS 1 #include "arpa_telnet.h" #include #include #if !defined(_WIN32) /*[*/ # include #endif /*]*/ #include #if !defined(_MSC_VER) /*[*/ # include #endif /*]*/ #if !defined(_MSC_VER) /*[*/ # include #endif /*]*/ #include #include #include "tn3270e.h" #include "pr3287.h" #include "ctlrc.h" #include "indent_s.h" #include "lazya.h" #include "resolver.h" #include "telnet_core.h" #include "utils.h" #include "sio.h" #include "varbuf.h" /* needed for sioc.h */ #include "sioc.h" #include "trace.h" #include "pr_telnet.h" #if !defined(TELOPT_STARTTLS) /*[*/ # define TELOPT_STARTTLS 46 #endif /*]*/ #define TLS_FOLLOWS 1 /* connection state */ enum cstate { NOT_CONNECTED, /* no socket, unknown mode */ TCP_PENDING, /* connection pending */ CONNECTED_INITIAL, /* connected, no mode yet */ CONNECTED_NVT, /* connected in NVT mode */ CONNECTED_3270, /* connected in old-style 3270 mode */ CONNECTED_INITIAL_E,/* connected in TN3270E mode, unnegotiated */ CONNECTED_E_NVT, /* connected in TN3270E mode, NVT mode */ CONNECTED_SSCP, /* connected in TN3270E mode, SSCP-LU mode */ CONNECTED_TN3270E, /* connected in TN3270E mode, 3270 mode */ NUM_CSTATE /* number of cstates */ }; enum cstate cstate = NOT_CONNECTED; #define PCONNECTED ((int)cstate >= (int)TCP_PENDING) #define HALF_CONNECTED (cstate == TCP_PENDING) #define CONNECTED ((int)cstate >= (int)CONNECTED_INITIAL) #define IN_NVT (cstate == CONNECTED_NVT || cstate == CONNECTED_E_NVT) #define IN_3270 (cstate == CONNECTED_3270 || cstate == CONNECTED_TN3270E || cstate == CONNECTED_SSCP) #define IN_SSCP (cstate == CONNECTED_SSCP) #define IN_TN3270E (cstate == CONNECTED_TN3270E) #define IN_E (cstate >= CONNECTED_INITIAL_E) static char *connected_lu = NULL; static char *connected_type = NULL; static char *hostname = NULL; #define BUFSZ 4096 #define N_OPTS 256 static int on = 1; /* Globals */ time_t ns_time; size_t ns_brcvd; int ns_rrcvd; size_t ns_bsent; int ns_rsent; unsigned char *obuf; /* 3270 output buffer */ int obuf_size = 0; unsigned char *obptr = (unsigned char *) NULL; bool linemode = true; const char *termtype = "IBM-3287-1"; /* Statics */ static struct timeval ds_ts; static socket_t sock = INVALID_SOCKET; /* active socket */ static unsigned char myopts[N_OPTS], hisopts[N_OPTS]; /* telnet option flags */ static unsigned char *ibuf = (unsigned char *) NULL; /* 3270 input buffer */ static unsigned char *ibptr; static int ibuf_size = 0; /* size of ibuf */ static unsigned char *obuf_base = NULL; static unsigned char *netrbuf = NULL; /* network input buffer */ static unsigned char *sbbuf = NULL; /* telnet sub-option buffer */ static unsigned char *sbptr; static unsigned char telnet_state; static int syncing; static unsigned long e_funcs; /* negotiated TN3270E functions */ #define E_OPT(n) (1 << (n)) static unsigned short e_xmit_seq; /* transmit sequence number */ static int response_required; static int tn3270e_negotiated = 0; static enum { E_NONE, E_3270, E_NVT, E_SSCP } tn3270e_submode = E_NONE; static int tn3270e_bound = 0; static char **lus = NULL; static char **curr_lu = NULL; static char *try_lu = NULL; static char *try_assoc = NULL; static void setup_lus(char *luname, const char *assoc); static bool telnet_fsm(unsigned char c); static void net_rawout(unsigned const char *buf, size_t len); static void check_in3270(void); static void store3270in(unsigned char c); static int tn3270e_negotiate(void); static void process_eor(void); static const char *tn3270e_function_names(const unsigned char *, int); static void tn3270e_subneg_send(unsigned char, unsigned long); static unsigned long tn3270e_fdecode(const unsigned char *, int); static void tn3270_ack(void); static void tn3270_nak(enum pds); static void tn3270e_ack(void); static void tn3270e_nak(enum pds); static void tn3270e_cleared(void); static bool net_input(socket_t s); #define trace_str(str) vtrace("%s", (str)) static const char *cmd(int c); static const char *opt(unsigned char c); static const char *nnn(int c); /* telnet states */ #define TNS_DATA 0 /* receiving data */ #define TNS_IAC 1 /* got an IAC */ #define TNS_WILL 2 /* got an IAC WILL */ #define TNS_WONT 3 /* got an IAC WONT */ #define TNS_DO 4 /* got an IAC DO */ #define TNS_DONT 5 /* got an IAC DONT */ #define TNS_SB 6 /* got an IAC SB */ #define TNS_SB_IAC 7 /* got an IAC after an IAC SB */ /* telnet predefined messages */ static unsigned char do_opt[] = { IAC, DO, '_' }; static unsigned char dont_opt[] = { IAC, DONT, '_' }; static unsigned char will_opt[] = { IAC, WILL, '_' }; static unsigned char wont_opt[] = { IAC, WONT, '_' }; static unsigned char functions_req[] = { IAC, SB, TELOPT_TN3270E, TN3270E_OP_FUNCTIONS }; const char *telquals[2] = { "IS", "SEND" }; const char *reason_code[8] = { "CONN-PARTNER", "DEVICE-IN-USE", "INV-ASSOCIATE", "INV-NAME", "INV-DEVICE-TYPE", "TYPE-NAME-ERROR", "UNKNOWN-ERROR", "UNSUPPORTED-REQ" }; #define rsn(n) (((n) <= TN3270E_REASON_UNSUPPORTED_REQ) ? \ reason_code[(n)] : "??") const char *function_name[5] = { "BIND-IMAGE", "DATA-STREAM-CTL", "RESPONSES", "SCS-CTL-CODES", "SYSREQ" }; #define fnn(n) (((n) <= TN3270E_FUNC_SYSREQ) ? \ function_name[(n)] : "??") const char *data_type[9] = { "3270-DATA", "SCS-DATA", "RESPONSE", "BIND-IMAGE", "UNBIND", "NVT-DATA", "REQUEST", "SSCP-LU-DATA", "PRINT-EOJ" }; #define e_dt(n) (((n) <= TN3270E_DT_PRINT_EOJ) ? \ data_type[(n)] : "??") const char *req_flag[1] = { " ERR-COND-CLEARED" }; #define e_rq(fn, n) (((fn) == TN3270E_DT_REQUEST) ? \ (((n) <= TN3270E_RQF_ERR_COND_CLEARED) ? \ req_flag[(n)] : " ??") : "") const char *hrsp_flag[3] = { "NO-RESPONSE", "ERROR-RESPONSE", "ALWAYS-RESPONSE" }; #define e_hrsp(n) (((n) <= TN3270E_RSF_ALWAYS_RESPONSE) ? \ hrsp_flag[(n)] : "??") const char *trsp_flag[2] = { "POSITIVE-RESPONSE", "NEGATIVE-RESPONSE" }; #define e_trsp(n) (((n) <= TN3270E_RSF_NEGATIVE_RESPONSE) ? \ trsp_flag[(n)] : "??") #define e_rsp(fn, n) (((fn) == TN3270E_DT_RESPONSE) ? e_trsp(n) : e_hrsp(n)) const char *neg_type[4] = { "COMMAND-REJECT", "INTERVENTION-REQUIRED", "OPERATION-CHECK", "COMPONENT-DISCONNECTED" }; #define e_neg_type(n) (((n) <= TN3270E_NEG_COMPONENT_DISCONNECTED) ? \ neg_type[n]: "??") bool secure_connection = false; bool secure_unverified = false; static sio_t sio; static bool need_tls_follows = false; static int continue_tls(unsigned char *sbbuf, int len); static bool refused_tls = false; static bool ever_3270 = false; char * sockerrmsg(void) { static char buf[1024]; #if defined(_WIN32) /*[*/ if (FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM, NULL, WSAGetLastError(), MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), buf, sizeof(buf), NULL) == 0) { snprintf(buf, sizeof(buf), "Windows error %d", WSAGetLastError()); } #else /*][*/ snprintf(buf, sizeof(buf), "%s", strerror(errno)); #endif /*]*/ return buf; } void popup_a_sockerr(const char *fmt, ...) { va_list args; char *buf; va_start(args, fmt); buf = xs_vbuffer(fmt, args); va_end(args); errmsg("%s: %s", buf, sockerrmsg()); Free(buf); } /* * pr_net_negotiate * Initialize the connection, and negotiate TN3270 options with the host. * * Returns true for success, false for failure. */ bool pr_net_negotiate(const char *host, struct sockaddr *sa, socklen_t len, socket_t s, char *lu, const char *assoc) { bool data = false; /* Save the hostname. */ char *h = Malloc(strlen(host) + 1); strcpy(h, host); Replace(hostname, h); /* Set options for inline out-of-band data and keepalives. */ if (setsockopt(s, SOL_SOCKET, SO_OOBINLINE, (char *)&on, sizeof(on)) < 0) { popup_a_sockerr("setsockopt(SO_OOBINLINE)"); return false; } if (setsockopt(s, SOL_SOCKET, SO_KEEPALIVE, (char *)&on, sizeof(on)) < 0) { popup_a_sockerr("setsockopt(SO_KEEPALIVE)"); return false; } #if !defined(_WIN32) /*[*/ /* Don't share the socket with our children. */ fcntl(s, F_SETFD, 1); #endif /*]*/ /* Init TLS */ if (options.tls_host && !secure_connection) { char *session, *cert; if (sio_init(&options.tls, NULL, &sio) != SI_SUCCESS) { errmsg("%s\n", sio_last_error()); return false; } if (sio_negotiate(sio, s, host, &data) != SIG_SUCCESS) { errmsg("%s\n", sio_last_error()); return false; } secure_connection = true; session = indent_s(sio_session_info(sio)); cert = indent_s(sio_server_cert_info(sio)); vtrace("TLS tunneled connection complete. " "Connection is now secure.\n" "Session:\n%s\nServer certificate:\n%s\n", session, cert); Free(session); Free(cert); } /* Allocate the receive buffers. */ if (netrbuf == NULL) { netrbuf = (unsigned char *)Malloc(BUFSZ); } if (ibuf == NULL) { ibuf = (unsigned char *)Malloc(BUFSIZ); } ibuf_size = BUFSIZ; ibptr = ibuf; /* Set up the LU list. */ setup_lus(lu, assoc); /* Set up telnet options. */ memset((char *) myopts, 0, sizeof(myopts)); memset((char *) hisopts, 0, sizeof(hisopts)); e_funcs = E_OPT(TN3270E_FUNC_BIND_IMAGE) | E_OPT(TN3270E_FUNC_DATA_STREAM_CTL) | E_OPT(TN3270E_FUNC_RESPONSES) | E_OPT(TN3270E_FUNC_SCS_CTL_CODES) | E_OPT(TN3270E_FUNC_SYSREQ); e_xmit_seq = 0; response_required = TN3270E_RSF_NO_RESPONSE; need_tls_follows = false; telnet_state = TNS_DATA; /* Clear statistics and flags. */ time(&ns_time); ns_brcvd = 0; ns_rrcvd = 0; ns_bsent = 0; ns_rsent = 0; syncing = 0; tn3270e_negotiated = 0; tn3270e_submode = E_NONE; tn3270e_bound = 0; /* Speak with the host until we suceed or give up. */ cstate = CONNECTED_INITIAL; sock = s; /* hack! */ while (!tn3270e_negotiated && /* TN3270E */ cstate != CONNECTED_3270 && /* TN3270 */ cstate != NOT_CONNECTED) { /* gave up */ if (!net_input(s)) { return false; } } /* Success. */ return true; } bool pr_net_process(socket_t s) { while (cstate != NOT_CONNECTED) { fd_set rfds; struct timeval t; struct timeval *tp; int nr; int maxfd = (int)s; FD_ZERO(&rfds); FD_SET(s, &rfds); if (options.eoj_timeout) { t.tv_sec = options.eoj_timeout; t.tv_usec = 0; tp = &t; } else { tp = NULL; } if (syncsock != INVALID_SOCKET) { if (syncsock > s) { maxfd = (int)syncsock; } FD_SET(syncsock, &rfds); } nr = select(maxfd + 1, &rfds, NULL, NULL, tp); if (nr == 0 && options.eoj_timeout) { print_eoj(); } if (nr > 0 && FD_ISSET(s, &rfds)) { if (!net_input(s)) { return false; } } if (nr > 0 && syncsock != INVALID_SOCKET && FD_ISSET(syncsock, &rfds)) { vtrace("Input on syncsock -- exiting.\n"); net_disconnect(true); #if defined(_WIN32) /*[*/ /* Let Windows send the TCP FIN. */ Sleep(500); #endif /*]*/ pr3287_exit(0); } lazya_flush(); } return true; } /* Disconnect from the host. */ void net_disconnect(bool including_tls) { if (sock != INVALID_SOCKET) { vtrace("SENT disconnect\n"); SOCK_CLOSE(sock); sock = INVALID_SOCKET; if (sio != NULL) { sio_close(sio); sio = NULL; } secure_connection = false; secure_unverified = false; if (refused_tls && !ever_3270) { errmsg("Connection failed:\n" "Host requested TLS but TLS not supported"); } refused_tls = false; ever_3270 = false; } } /* Set up the LU list. */ static void setup_lus(char *luname, const char *assoc) { char *lu; char *comma; int n_lus = 1; int i; connected_lu = NULL; connected_type = NULL; curr_lu = NULL; try_lu = NULL; if (lus) { Free(lus); lus = NULL; } if (assoc != NULL) { try_assoc = NewString(assoc); return; } if (luname == NULL || !luname[0]) { return; } /* * Count the commas in the LU name. That plus one is the * number of LUs to try. */ lu = luname; while ((comma = strchr(lu, ',')) != NULL) { n_lus++; lu++; } /* * Allocate enough memory to construct an argv[] array for * the LUs. */ lus = (char **)Malloc((n_lus+1) * sizeof(char *) + strlen(luname) + 1); /* Copy each LU into the array. */ lu = (char *)(lus + n_lus + 1); strcpy(lu, luname); i = 0; do { lus[i++] = lu; comma = strchr(lu, ','); if (comma != NULL) { *comma = '\0'; lu = comma + 1; } } while (comma != NULL); lus[i] = NULL; curr_lu = lus; try_lu = *curr_lu; } /* * net_input * Called by the toolkit whenever there is input available on the * socket. Reads the data, processes the special telnet commands * and calls process_ds to process the 3270 data stream. */ static bool net_input(socket_t s) { register unsigned char *cp; ssize_t nr; if (sio != NULL) { nr = sio_read(sio, (char *)netrbuf, BUFSZ); } else { nr = recv(s, (char *)netrbuf, BUFSZ, 0); } if (nr < 0) { if ((sio != NULL && nr == SIO_EWOULDBLOCK) || (sio == NULL && socket_errno() == SE_EWOULDBLOCK)) { vtrace("EWOULDBLOCK\n"); return true; } if (sio != NULL) { vtrace("RCVD sio error %s\n", sio_last_error()); errmsg("%s\n", sio_last_error()); cstate = NOT_CONNECTED; return false; } vtrace("RCVD socket error %s\n", sockerrmsg()); popup_a_sockerr("Socket read"); cstate = NOT_CONNECTED; return false; } else if (nr == 0) { /* Host disconnected. */ trace_str("RCVD disconnect\n"); cstate = NOT_CONNECTED; return true; } /* Process the data. */ trace_netdata('<', netrbuf, nr); ns_brcvd += nr; for (cp = netrbuf; cp < (netrbuf + nr); cp++) { if (!telnet_fsm(*cp)) { cstate = NOT_CONNECTED; return false; } } return true; } /* Advance 'try_lu' to the next desired LU name. */ static void next_lu(void) { if (curr_lu != NULL && (try_lu = *++curr_lu) == NULL) { curr_lu = NULL; } } /* * telnet_fsm * Telnet finite-state machine. * Returns true for okay, false for errors. */ static bool telnet_fsm(unsigned char c) { switch (telnet_state) { case TNS_DATA: /* normal data processing */ if (c == IAC) { /* got a telnet command */ telnet_state = TNS_IAC; break; } if (IN_NVT && !IN_E) { /* NVT data? */ ; } else { store3270in(c); } break; case TNS_IAC: /* process a telnet command */ if (c != EOR && c != IAC) { vtrace("RCVD %s ", cmd(c)); } switch (c) { case IAC: /* escaped IAC, insert it */ if (IN_NVT && !IN_E) { ; } else { store3270in(c); } telnet_state = TNS_DATA; break; case EOR: /* eor, process accumulated input */ trace_str("RCVD EOR"); if (IN_3270 || (IN_E && tn3270e_negotiated)) { trace_str("\n"); ns_rrcvd++; process_eor(); } else { trace_str(" (ignored -- not in 3270 mode)\n"); } ibptr = ibuf; telnet_state = TNS_DATA; break; case WILL: telnet_state = TNS_WILL; break; case WONT: telnet_state = TNS_WONT; break; case DO: telnet_state = TNS_DO; break; case DONT: telnet_state = TNS_DONT; break; case SB: telnet_state = TNS_SB; if (sbbuf == NULL) { sbbuf = (unsigned char *)Malloc(1024); } sbptr = sbbuf; break; case DM: trace_str("\n"); if (syncing) { syncing = 0; } telnet_state = TNS_DATA; break; case AO: if (IN_3270 && !IN_E) { trace_str("\n"); if (print_eoj() < 0) { tn3270_nak(PDS_FAILED); } } else { trace_str(" (ignored -- not in TN3270 mode)\n"); } ibptr = ibuf; telnet_state = TNS_DATA; break; case GA: case NOP: trace_str("\n"); telnet_state = TNS_DATA; break; default: trace_str(" (ignored -- unsupported)\n"); telnet_state = TNS_DATA; break; } break; case TNS_WILL: /* telnet WILL DO OPTION command */ vtrace("%s\n", opt(c)); switch (c) { case TELOPT_SGA: case TELOPT_BINARY: case TELOPT_EOR: case TELOPT_TTYPE: case TELOPT_ECHO: case TELOPT_TN3270E: if (!hisopts[c]) { hisopts[c] = 1; do_opt[2] = c; net_rawout(do_opt, sizeof(do_opt)); vtrace("SENT %s %s\n", cmd(DO), opt(c)); /* For UTS, volunteer to do EOR when they do. */ if (c == TELOPT_EOR && !myopts[c]) { myopts[c] = 1; will_opt[2] = c; net_rawout(will_opt, sizeof(will_opt)); vtrace("SENT %s %s\n", cmd(WILL), opt(c)); } check_in3270(); } break; default: dont_opt[2] = c; net_rawout(dont_opt, sizeof(dont_opt)); vtrace("SENT %s %s\n", cmd(DONT), opt(c)); break; } telnet_state = TNS_DATA; break; case TNS_WONT: /* telnet WONT DO OPTION command */ vtrace("%s\n", opt(c)); if (hisopts[c]) { hisopts[c] = 0; dont_opt[2] = c; net_rawout(dont_opt, sizeof(dont_opt)); vtrace("SENT %s %s\n", cmd(DONT), opt(c)); check_in3270(); } telnet_state = TNS_DATA; break; case TNS_DO: /* telnet PLEASE DO OPTION command */ vtrace("%s\n", opt(c)); switch (c) { case TELOPT_BINARY: case TELOPT_EOR: case TELOPT_TTYPE: case TELOPT_SGA: case TELOPT_TM: case TELOPT_TN3270E: case TELOPT_STARTTLS: if (c == TELOPT_STARTTLS && !sio_supported()) { refused_tls = true; goto wont; } if (!myopts[c]) { if (c != TELOPT_TM) { myopts[c] = 1; } will_opt[2] = c; net_rawout(will_opt, sizeof(will_opt)); vtrace("SENT %s %s\n", cmd(WILL), opt(c)); check_in3270(); } if (c == TELOPT_STARTTLS) { static unsigned char follows_msg[] = { IAC, SB, TELOPT_STARTTLS, TLS_FOLLOWS, IAC, SE }; /* * Send IAC SB STARTTLS FOLLOWS IAC SE * to announce that what follows is TLS. */ net_rawout(follows_msg, sizeof(follows_msg)); vtrace("SENT %s %s FOLLOWS %s\n", cmd(SB), opt(TELOPT_STARTTLS), cmd(SE)); need_tls_follows = true; } break; wont: default: wont_opt[2] = c; net_rawout(wont_opt, sizeof(wont_opt)); vtrace("SENT %s %s\n", cmd(WONT), opt(c)); break; } telnet_state = TNS_DATA; break; case TNS_DONT: /* telnet PLEASE DON'T DO OPTION command */ vtrace("%s\n", opt(c)); if (myopts[c]) { myopts[c] = 0; wont_opt[2] = c; net_rawout(wont_opt, sizeof(wont_opt)); vtrace("SENT %s %s\n", cmd(WONT), opt(c)); check_in3270(); } telnet_state = TNS_DATA; break; case TNS_SB: /* telnet sub-option string command */ if (c == IAC) { telnet_state = TNS_SB_IAC; } else { *sbptr++ = c; } break; case TNS_SB_IAC: /* telnet sub-option string command */ *sbptr++ = c; if (c == SE) { telnet_state = TNS_DATA; if (sbbuf[0] == TELOPT_TTYPE && sbbuf[1] == TELQUAL_SEND) { size_t tt_len, tb_len; char *tt_out; vtrace("%s %s\n", opt(sbbuf[0]), telquals[sbbuf[1]]); if (lus != NULL && try_assoc == NULL && try_lu == NULL) { /* None of the LUs worked. */ errmsg("Cannot connect to specified LU"); return false; } tt_len = strlen(termtype); if (try_lu != NULL && *try_lu) { tt_len += strlen(try_lu) + 1; connected_lu = try_lu; } else { connected_lu = NULL; } tb_len = 4 + tt_len + 2; tt_out = Malloc(tb_len + 1); sprintf(tt_out, "%c%c%c%c%s%s%s%c%c", IAC, SB, TELOPT_TTYPE, TELQUAL_IS, termtype, (try_lu != NULL && *try_lu) ? "@" : "", (try_lu != NULL && *try_lu) ? try_lu : "", IAC, SE); net_rawout((unsigned char *)tt_out, tb_len); vtrace("SENT %s %s %s %.*s %s\n", cmd(SB), opt(TELOPT_TTYPE), telquals[TELQUAL_IS], tt_len, tt_out + 4, cmd(SE)); Free(tt_out); /* Advance to the next LU name. */ next_lu(); } else if (myopts[TELOPT_TN3270E] && sbbuf[0] == TELOPT_TN3270E) { if (tn3270e_negotiate()) { return false; } } else if (need_tls_follows && myopts[TELOPT_STARTTLS] && sbbuf[0] == TELOPT_STARTTLS) { if (continue_tls(sbbuf, (int)(sbptr - sbbuf)) < 0) { return false; } } } else { telnet_state = TNS_SB; } break; } return true; } /* Send a TN3270E terminal type request. */ static void tn3270e_request(void) { size_t tt_len, tb_len; char *tt_out; char *t; tt_len = strlen(termtype); if (try_assoc != NULL) { tt_len += strlen(try_assoc) + 1; } else if (try_lu != NULL && *try_lu) { tt_len += strlen(try_lu) + 1; } tb_len = 5 + tt_len + 2; tt_out = Malloc(tb_len + 1); t = tt_out; t += sprintf(tt_out, "%c%c%c%c%c%s", IAC, SB, TELOPT_TN3270E, TN3270E_OP_DEVICE_TYPE, TN3270E_OP_REQUEST, termtype); if (try_assoc != NULL) { t += sprintf(t, "%c%s", TN3270E_OP_ASSOCIATE, try_assoc); } else if (try_lu != NULL && *try_lu) { t += sprintf(t, "%c%s", TN3270E_OP_CONNECT, try_lu); } sprintf(t, "%c%c", IAC, SE); net_rawout((unsigned char *)tt_out, tb_len); vtrace("SENT %s %s DEVICE-TYPE REQUEST %.*s%s%s%s%s %s\n", cmd(SB), opt(TELOPT_TN3270E), strlen(termtype), tt_out + 5, (try_assoc != NULL) ? " ASSOCIATE " : "", (try_assoc != NULL) ? try_assoc : "", (try_lu != NULL && *try_lu) ? " CONNECT " : "", (try_lu != NULL && *try_lu) ? try_lu : "", cmd(SE)); Free(tt_out); } /* * Negotiation of TN3270E options. * Returns 0 if okay, -1 if we have to give up altogether. */ static int tn3270e_negotiate(void) { #define LU_MAX 32 static char reported_lu[LU_MAX + 1]; static char reported_type[LU_MAX + 1]; int sblen; unsigned long e_rcvd; /* Find out how long the subnegotiation buffer is. */ for (sblen = 0; ; sblen++) { if (sbbuf[sblen] == SE) { break; } } vtrace("TN3270E "); switch (sbbuf[1]) { case TN3270E_OP_SEND: if (sbbuf[2] == TN3270E_OP_DEVICE_TYPE) { /* Host wants us to send our device type. */ vtrace("SEND DEVICE-TYPE SE\n"); tn3270e_request(); } else { vtrace("SEND ??%u SE\n", sbbuf[2]); } break; case TN3270E_OP_DEVICE_TYPE: /* Device type negotiation. */ vtrace("DEVICE-TYPE "); switch (sbbuf[2]) { case TN3270E_OP_IS: { int tnlen, snlen; /* Device type success. */ /* Isolate the terminal type and session. */ tnlen = 0; while (sbbuf[3 + tnlen] != SE && sbbuf[3 + tnlen] != TN3270E_OP_CONNECT) { tnlen++; } snlen = 0; if (sbbuf[3 + tnlen] == TN3270E_OP_CONNECT) { while(sbbuf[3 + tnlen+1+snlen] != SE) { snlen++; } } vtrace("IS %.*s CONNECT %.*s SE\n", tnlen, &sbbuf[3], snlen, &sbbuf[3 + tnlen+1]); /* Remember the LU. */ if (tnlen) { if (tnlen > LU_MAX) { tnlen = LU_MAX; } strncpy(reported_type, (char *)&sbbuf[3], tnlen); reported_type[tnlen] = '\0'; connected_type = reported_type; } if (snlen) { if (snlen > LU_MAX) { snlen = LU_MAX; } strncpy(reported_lu, (char *)&sbbuf[3 + tnlen + 1], snlen); reported_lu[snlen] = '\0'; connected_lu = reported_lu; } /* Tell them what we can do. */ tn3270e_subneg_send(TN3270E_OP_REQUEST, e_funcs); break; } case TN3270E_OP_REJECT: /* Device type failure. */ vtrace("REJECT REASON %s SE\n", rsn(sbbuf[4])); if (try_assoc != NULL) { errmsg("Cannot associate with specified LU: %s", rsn(sbbuf[4])); return -1; } next_lu(); if (try_lu != NULL) { /* Try the next LU. */ tn3270e_request(); } else if (lus != NULL) { /* No more LUs to try. Give up. */ errmsg("Cannot connect to specified LU: %s", rsn(sbbuf[4])); return -1; } else { errmsg("Device type rejected, cannot connect: %s", rsn(sbbuf[4])); return -1; } break; default: vtrace("??%u SE\n", sbbuf[2]); break; } break; case TN3270E_OP_FUNCTIONS: /* Functions negotiation. */ vtrace("FUNCTIONS "); switch (sbbuf[2]) { case TN3270E_OP_REQUEST: /* Host is telling us what functions they want. */ vtrace("REQUEST %s SE\n", tn3270e_function_names(sbbuf + 3, sblen - 3)); e_rcvd = tn3270e_fdecode(sbbuf + 3, sblen - 3); if ((e_rcvd == e_funcs) || (e_funcs & ~e_rcvd)) { /* They want what we want, or less. Done. */ e_funcs = e_rcvd; tn3270e_subneg_send(TN3270E_OP_IS, e_funcs); tn3270e_negotiated = 1; vtrace("TN3270E option negotiation complete.\n"); check_in3270(); } else { /* * They want us to do something we can't. * Request the common subset. */ e_funcs &= e_rcvd; tn3270e_subneg_send(TN3270E_OP_REQUEST, e_funcs); } break; case TN3270E_OP_IS: /* They accept our last request. */ vtrace("IS %s SE\n", tn3270e_function_names(sbbuf + 3, sblen - 3)); e_rcvd = tn3270e_fdecode(sbbuf + 3, sblen - 3); if (e_rcvd != e_funcs) { if (e_funcs & ~e_rcvd) { /* They've removed something. Fine. */ e_funcs &= e_rcvd; } else { /* * They've added something. Abandon * TN3270E, they're brain dead. */ vtrace("Host illegally added function(s), aborting " "TN3270E\n"); wont_opt[2] = TELOPT_TN3270E; net_rawout(wont_opt, sizeof(wont_opt)); vtrace("SENT %s %s\n", cmd(WONT), opt(TELOPT_TN3270E)); myopts[TELOPT_TN3270E] = 0; check_in3270(); break; } } tn3270e_negotiated = 1; vtrace("TN3270E option negotiation complete.\n"); check_in3270(); break; default: vtrace("??%u SE\n", sbbuf[2]); break; } break; default: vtrace("??%u SE\n", sbbuf[1]); } /* Good enough for now. */ return 0; } /* Expand a string of TN3270E function codes into text. */ static const char * tn3270e_function_names(const unsigned char *buf, int len) { int i; static char text_buf[1024]; char *s = text_buf; if (!len) { return("(null)"); } for (i = 0; i < len; i++) { s += sprintf(s, "%s%s", (s == text_buf) ? "" : " ", fnn(buf[i])); } return text_buf; } /* Transmit a TN3270E FUNCTIONS REQUEST or FUNCTIONS IS message. */ static void tn3270e_subneg_send(unsigned char op, unsigned long funcs) { unsigned char proto_buf[7 + 32]; int proto_len; int i; /* Construct the buffers. */ memcpy(proto_buf, functions_req, 4); proto_buf[4] = op; proto_len = 5; for (i = 0; i < 32; i++) { if (funcs & E_OPT(i)) { proto_buf[proto_len++] = i; } } /* Complete and send out the protocol message. */ proto_buf[proto_len++] = IAC; proto_buf[proto_len++] = SE; net_rawout(proto_buf, proto_len); /* Complete and send out the trace text. */ vtrace("SENT %s %s FUNCTIONS %s %s %s\n", cmd(SB), opt(TELOPT_TN3270E), (op == TN3270E_OP_REQUEST)? "REQUEST": "IS", tn3270e_function_names(proto_buf + 5, proto_len - 7), cmd(SE)); } /* Translate a string of TN3270E functions into a bit-map. */ static unsigned long tn3270e_fdecode(const unsigned char *buf, int len) { unsigned long r = 0L; int i; /* Note that this code silently ignores options >= 32. */ for (i = 0; i < len; i++) { if (buf[i] < 32) { r |= E_OPT(buf[i]); } } return r; } static void process_eor(void) { enum pds rv; if (syncing || !(ibptr - ibuf)) { return; } if (IN_E) { tn3270e_header *h = (tn3270e_header *)ibuf; vtrace("RCVD TN3270E(%s%s %s %u)\n", e_dt(h->data_type), e_rq(h->data_type, h->request_flag), e_rsp(h->data_type, h->response_flag), h->seq_number[0] << 8 | h->seq_number[1]); switch (h->data_type) { case TN3270E_DT_3270_DATA: case TN3270E_DT_SCS_DATA: if ((e_funcs & E_OPT(TN3270E_FUNC_BIND_IMAGE)) && !tn3270e_bound) { return; } tn3270e_submode = E_3270; check_in3270(); response_required = h->response_flag; if (h->data_type == TN3270E_DT_3270_DATA) { rv = process_ds(ibuf + EH_SIZE, (ibptr - ibuf) - EH_SIZE); } else { rv = process_scs(ibuf + EH_SIZE, (ibptr - ibuf) - EH_SIZE); } if (rv < 0 && response_required != TN3270E_RSF_NO_RESPONSE) { tn3270e_nak(rv); } else if (rv == PDS_OKAY_NO_OUTPUT && response_required == TN3270E_RSF_ALWAYS_RESPONSE) { tn3270e_ack(); } response_required = TN3270E_RSF_NO_RESPONSE; return; case TN3270E_DT_BIND_IMAGE: if (!(e_funcs & E_OPT(TN3270E_FUNC_BIND_IMAGE))) { return; } tn3270e_bound = 1; check_in3270(); if (h->response_flag) { tn3270e_ack(); } return; case TN3270E_DT_UNBIND: if (!(e_funcs & E_OPT(TN3270E_FUNC_BIND_IMAGE))) { return; } tn3270e_bound = 0; if (tn3270e_submode == E_3270) { tn3270e_submode = E_NONE; } check_in3270(); if (print_eoj() == 0) { rv = PDS_OKAY_NO_OUTPUT; } else { rv = PDS_FAILED; } if (h->response_flag) { if (rv >= 0) { tn3270e_ack(); } else { tn3270e_nak(rv); } } print_unbind(); return; case TN3270E_DT_SSCP_LU_DATA: case TN3270E_DT_NVT_DATA: if (h->response_flag) { tn3270e_nak(PDS_BAD_CMD); } return; case TN3270E_DT_PRINT_EOJ: rv = PDS_OKAY_NO_OUTPUT; if (options.ignoreeoj) { vtrace("(ignored)\n"); } else if (print_eoj() < 0) { rv = PDS_FAILED; } if (h->response_flag) { if (rv >= 0) { tn3270e_ack(); } else { tn3270e_nak(rv); } } return; default: return; } } else { /* Plain old 3270 mode. */ rv = process_ds(ibuf, ibptr - ibuf); if (rv < 0) { tn3270_nak(rv); } else { tn3270_ack(); } return; } } /* * net_exception * Called when there is an exceptional condition on the socket. */ void net_exception(void) { trace_str("RCVD urgent data indication\n"); if (!syncing) { syncing = 1; } } /* * Flavors of Network Output: * * net_output send a 3270 record * net_rawout send telnet protocol data */ /* * net_rawout * Send out raw telnet data. We assume that there will always be enough * space to buffer what we want to transmit, so we don't handle EAGAIN or * EWOULDBLOCK. */ static void net_rawout(unsigned const char *buf, size_t len) { ssize_t nw; trace_netdata('>', buf, len); while (len) { #if defined(OMTU) /*[*/ size_t n2w = len; int pause = 0; if (n2w > OMTU) { n2w = OMTU; pause = 1; } #else # define n2w len #endif if (sio != NULL) { nw = sio_write(sio, (const char *)buf, (int)n2w); } else { nw = send(sock, (const char *) buf, (int)n2w, 0); } if (nw < 0) { if (sio != NULL) { vtrace("RCVD socket error: %s\n", sio_last_error()); errmsg("%s\n", sio_last_error()); cstate = NOT_CONNECTED; return; } vtrace("RCVD socket error %s\n", sockerrmsg()); if (socket_errno() == SE_EPIPE || socket_errno() == SE_ECONNRESET) { cstate = NOT_CONNECTED; return; } else if (socket_errno() == SE_EINTR) { goto bot; } else { popup_a_sockerr("Socket write"); cstate = NOT_CONNECTED; return; } } ns_bsent += nw; len -= nw; buf += nw; bot: #if defined(OMTU) /*[*/ if (pause) { sleep(1); } #endif /*]*/ ; } } /* * check_in3270 * Check for switches between NVT, SSCP-LU and 3270 modes. */ static void check_in3270(void) { enum cstate new_cstate = NOT_CONNECTED; static const char *state_name[] = { "unconnected", "pending", "connected initial", "TN3270 NVT", "TN3270 3270", "TN3270E", "TN3270E NVT", "TN3270E SSCP-LU", "TN3270E 3270" }; if (myopts[TELOPT_TN3270E]) { if (!tn3270e_negotiated) { new_cstate = CONNECTED_INITIAL_E; } else { switch (tn3270e_submode) { case E_NONE: new_cstate = CONNECTED_INITIAL_E; break; case E_NVT: new_cstate = CONNECTED_E_NVT; break; case E_3270: new_cstate = CONNECTED_TN3270E; ever_3270 = true; break; case E_SSCP: new_cstate = CONNECTED_SSCP; break; } } } else if (myopts[TELOPT_BINARY] && myopts[TELOPT_EOR] && myopts[TELOPT_TTYPE] && hisopts[TELOPT_BINARY] && hisopts[TELOPT_EOR]) { new_cstate = CONNECTED_3270; ever_3270 = true; } else if (cstate == CONNECTED_INITIAL) { /* Nothing has happened, yet. */ return; } else { new_cstate = CONNECTED_NVT; } if (new_cstate != cstate) { int was_in_e = IN_E; vtrace("Now operating in %s mode.\n", state_name[new_cstate]); cstate = new_cstate; /* * If the user specified an association, and the host has * entered TELNET NVT mode or TN3270 (non-TN3270E) mode, * give up. */ if (try_assoc != NULL && !IN_E) { errmsg("Host does not support TN3270E, cannot associate with " "specified LU"); /* No return value, gotta abort here. */ pr3287_exit(1); } /* * If we've now switched between non-TN3270E mode and * TN3270E state, reset the LU list so we can try again * in the new mode. */ if (lus != NULL && was_in_e != IN_E) { curr_lu = lus; try_lu = *curr_lu; } /* Allocate the initial 3270 input buffer. */ if (new_cstate >= CONNECTED_INITIAL && !ibuf_size) { ibuf = (unsigned char *)Malloc(BUFSIZ); ibuf_size = BUFSIZ; ibptr = ibuf; } /* If we fell out of TN3270E, remove the state. */ if (!myopts[TELOPT_TN3270E]) { tn3270e_negotiated = 0; tn3270e_submode = E_NONE; tn3270e_bound = 0; } } } /* * store3270in * Store a character in the 3270 input buffer, checking for buffer * overflow and reallocating ibuf if necessary. */ static void store3270in(unsigned char c) { if (ibptr - ibuf >= ibuf_size) { ibuf_size += BUFSIZ; ibuf = (unsigned char *)Realloc((char *)ibuf, ibuf_size); ibptr = ibuf + ibuf_size - BUFSIZ; } *ibptr++ = c; } /* * space3270out * Ensure that more characters will fit in the 3270 output buffer. * Allocates the buffer in BUFSIZ chunks. * Allocates hidden space at the front of the buffer for TN3270E. */ void space3270out(size_t n) { size_t nc = 0; /* amount of data currently in obuf */ unsigned more = 0; if (obuf_size) { nc = obptr - obuf; } while ((nc + n + EH_SIZE) > (obuf_size + more)) { more += BUFSIZ; } if (more) { obuf_size += more; obuf_base = (unsigned char *)Realloc((char *)obuf_base, obuf_size); obuf = obuf_base + EH_SIZE; obptr = obuf + nc; } } /* * nnn * Expands a number to a character string, for displaying unknown telnet * commands and options. */ static const char * nnn(int c) { static char buf[64]; sprintf(buf, "%d", c); return buf; } /* * cmd * Expands a TELNET command into a character string. */ static const char * cmd(int c) { if (TELCMD_OK(c)) { return TELCMD(c); } else { return nnn((int)c); } } /* * opt * Expands a TELNET option into a character string. */ static const char * opt(unsigned char c) { if (TELOPT_OK(c)) { return TELOPT(c); } else if (c == TELOPT_TN3270E) { return "TN3270E"; } else if (c == TELOPT_STARTTLS) { return "START-TLS"; } else { return nnn((int)c); } } #define LINEDUMP_MAX 32 void trace_netdata(char direction, unsigned const char *buf, size_t len) { size_t offset; struct timeval ts; if (tracef == NULL) { return; } gettimeofday(&ts, NULL); if (IN_3270) { double tdiff = ((1.0e6 * (double)(ts.tv_sec - ds_ts.tv_sec)) + (double)(ts.tv_usec - ds_ts.tv_usec)) / 1.0e6; vtrace_nts("%c +%gs\n", direction, tdiff); } ds_ts = ts; for (offset = 0; offset < len; offset++) { if (!(offset % LINEDUMP_MAX)) { vtrace_nts("%s%c 0x%-3x ", (offset ? "\n" : ""), direction, (unsigned)offset); } vtrace_nts("%02x", buf[offset]); } vtrace_nts("\n"); } /* * net_output * Send 3270 output over the network, prepending TN3270E headers and * tacking on the necessary telnet end-of-record command. */ void net_output(void) { #define BSTART ((IN_TN3270E || IN_SSCP) ? obuf_base : obuf) /* Set the TN3720E header. */ if (IN_TN3270E || IN_SSCP) { tn3270e_header *h = (tn3270e_header *)obuf_base; /* Check for sending a TN3270E response. */ if (response_required == TN3270E_RSF_ALWAYS_RESPONSE) { tn3270e_ack(); response_required = TN3270E_RSF_NO_RESPONSE; } /* Set the outbound TN3270E header. */ h->data_type = IN_TN3270E ? TN3270E_DT_3270_DATA : TN3270E_DT_SSCP_LU_DATA; h->request_flag = 0; h->response_flag = 0; h->seq_number[0] = (e_xmit_seq >> 8) & 0xff; h->seq_number[1] = e_xmit_seq & 0xff; } /* Count the number of IACs in the message. */ { char *buf = (char *)BSTART; size_t len = obptr - BSTART; char *iac; int cnt = 0; while (len && (iac = memchr(buf, IAC, len)) != NULL) { cnt++; len -= iac - buf + 1; buf = iac + 1; } if (cnt) { space3270out(cnt); len = obptr - BSTART; buf = (char *)BSTART; /* Now quote them. */ while (len && (iac = memchr(buf, IAC, len)) != NULL) { size_t ml = len - (iac - buf); memmove(iac + 1, iac, ml); len -= iac - buf + 1; buf = iac + 2; obptr++; } } } /* Add IAC EOR to the end and send it. */ space3270out(2); *obptr++ = IAC; *obptr++ = EOR; if (IN_TN3270E || IN_SSCP) { vtrace("SENT TN3270E(%s NO-RESPONSE %u)\n", IN_TN3270E ? "3270-DATA" : "SSCP-LU-DATA", e_xmit_seq); if (e_funcs & E_OPT(TN3270E_FUNC_RESPONSES)) { e_xmit_seq = (e_xmit_seq + 1) & 0x7fff; } } net_rawout(BSTART, obptr - BSTART); trace_str("SENT EOR\n"); ns_rsent++; #undef BSTART } /* Send a TN3270 positive response to the server. */ static void tn3270_ack(void) { unsigned char rsp_buf[7]; int rsp_len = sizeof(rsp_buf); rsp_buf[0] = 0x01; /* SOH */ rsp_buf[1] = 0x6c; /* % */ rsp_buf[2] = 0xd9; /* R */ rsp_buf[3] = 0x02; /* Device End - No Error */ rsp_buf[4] = 0x00; /* No error */ rsp_buf[5] = IAC; rsp_buf[6] = EOR; vtrace("SENT TN3270 PRINTER STATUS(OKAY)\n"); net_rawout(rsp_buf, rsp_len); } /* Send a TN3270 negative response to the server. */ static void tn3270_nak(enum pds rv) { unsigned char rsp_buf[7]; int rsp_len = sizeof(rsp_buf); rsp_buf[0] = 0x01; /* SOH */ rsp_buf[1] = 0x6c; /* % */ rsp_buf[2] = 0xd9; /* R */ rsp_buf[3] = 0x04; /* Error */ switch (rv) { case PDS_BAD_CMD: rsp_buf[4] = 0x20; /* Command Rejected (CR) */ break; case PDS_BAD_ADDR: rsp_buf[4] = 0x04; /* Data check - invalid print data */ break; case PDS_FAILED: rsp_buf[4] = 0x10; /* Printer not ready */ break; default: rsp_buf[4] = 0x20; /* Command Rejected - shouldn't happen */ break; } rsp_buf[5] = IAC; rsp_buf[6] = EOR; vtrace("SENT TN3270 PRINTER STATUS(ERROR)\n"); net_rawout(rsp_buf, rsp_len); /* * If we just told the host 'intervention required', tell it * everything's okay now. */ if (rv == PDS_FAILED) { tn3270_ack(); } } /* Send a TN3270E positive response to the server. */ static void tn3270e_ack(void) { unsigned char rsp_buf[9]; tn3270e_header *h, *h_in; int rsp_len = EH_SIZE; h = (tn3270e_header *)rsp_buf; h_in = (tn3270e_header *)ibuf; h->data_type = TN3270E_DT_RESPONSE; h->request_flag = 0; h->response_flag = TN3270E_RSF_POSITIVE_RESPONSE; h->seq_number[0] = h_in->seq_number[0]; h->seq_number[1] = h_in->seq_number[1]; if (h->seq_number[1] == IAC) { rsp_buf[rsp_len++] = IAC; } rsp_buf[rsp_len++] = TN3270E_POS_DEVICE_END; rsp_buf[rsp_len++] = IAC; rsp_buf[rsp_len++] = EOR; vtrace("SENT TN3270E(RESPONSE POSITIVE-RESPONSE %u) DEVICE-END\n", h_in->seq_number[0] << 8 | h_in->seq_number[1]); net_rawout(rsp_buf, rsp_len); } /* Send a TN3270E negative response to the server. */ static void tn3270e_nak(enum pds rv) { unsigned char rsp_buf[9], r; tn3270e_header *h, *h_in; int rsp_len = EH_SIZE; h = (tn3270e_header *)rsp_buf; h_in = (tn3270e_header *)ibuf; h->data_type = TN3270E_DT_RESPONSE; h->request_flag = 0; h->response_flag = TN3270E_RSF_NEGATIVE_RESPONSE; h->seq_number[0] = h_in->seq_number[0]; h->seq_number[1] = h_in->seq_number[1]; if (h->seq_number[1] == IAC) { rsp_buf[rsp_len++] = IAC; } switch (rv) { default: case PDS_BAD_CMD: rsp_buf[rsp_len++] = r = TN3270E_NEG_COMMAND_REJECT; break; case PDS_BAD_ADDR: rsp_buf[rsp_len++] = r = TN3270E_NEG_OPERATION_CHECK; break; case PDS_FAILED: rsp_buf[rsp_len++] = r = TN3270E_NEG_INTERVENTION_REQUIRED; break; } rsp_buf[rsp_len++] = IAC; rsp_buf[rsp_len++] = EOR; vtrace("SENT TN3270E(RESPONSE NEGATIVE-RESPONSE %u) %s\n", h_in->seq_number[0] << 8 | h_in->seq_number[1], e_neg_type(r)); net_rawout(rsp_buf, rsp_len); /* * If we just told the host 'intervention required', tell it * everything's okay now. */ if (r == TN3270E_NEG_INTERVENTION_REQUIRED) { tn3270e_cleared(); } } /* Send a TN3270E error cleared indication to the host. */ static void tn3270e_cleared(void) { unsigned char rsp_buf[9]; tn3270e_header *h; int rsp_len = EH_SIZE; h = (tn3270e_header *)rsp_buf; h->data_type = TN3270E_OP_REQUEST; h->request_flag = TN3270E_RQF_ERR_COND_CLEARED; h->response_flag = 0; h->seq_number[0] = (e_xmit_seq >> 8) & 0xff; h->seq_number[1] = e_xmit_seq & 0xff; if (h->seq_number[1] == IAC) { rsp_buf[rsp_len++] = IAC; } rsp_buf[rsp_len++] = IAC; rsp_buf[rsp_len++] = EOR; vtrace("SENT TN3270E(REQUEST ERR-COND-CLEARED %u)\n", e_xmit_seq); net_rawout(rsp_buf, rsp_len); e_xmit_seq = (e_xmit_seq + 1) & 0x7fff; } /* Add a dummy TN3270E header to the output buffer. */ bool net_add_dummy_tn3270e(void) { tn3270e_header *h; if (!IN_E || tn3270e_submode == E_NONE) { return false; } space3270out(EH_SIZE); h = (tn3270e_header *)obptr; switch (tn3270e_submode) { case E_NONE: break; case E_NVT: h->data_type = TN3270E_DT_NVT_DATA; break; case E_SSCP: h->data_type = TN3270E_DT_SSCP_LU_DATA; break; case E_3270: h->data_type = TN3270E_DT_3270_DATA; break; } h->request_flag = 0; h->response_flag = TN3270E_RSF_NO_RESPONSE; h->seq_number[0] = 0; h->seq_number[1] = 0; obptr += EH_SIZE; return true; } /* * Add IAC EOR to a buffer. */ void net_add_eor(unsigned char *buf, size_t len) { buf[len++] = IAC; buf[len++] = EOR; } /* Process a STARTTLS subnegotiation. */ static int continue_tls(unsigned char *sbbuf, int len) { bool data = false; char *session, *cert; /* Whatever happens, we're not expecting another SB STARTTLS. */ need_tls_follows = false; /* Make sure the option is FOLLOWS. */ if (len < 2 || sbbuf[1] != TLS_FOLLOWS) { /* Trace the junk. */ vtrace("%s ? %s\n", opt(TELOPT_STARTTLS), cmd(SE)); errmsg("TLS negotiation failure"); return -1; } /* Trace what we got. */ vtrace("%s FOLLOWS %s\n", opt(TELOPT_STARTTLS), cmd(SE)); /* Initialize the TLS library. */ if (sio_init(&options.tls, NULL, &sio) != SI_SUCCESS) { errmsg("%s\n", sio_last_error()); return -1; } if (sio_negotiate(sio, sock, hostname, &data) != SIG_SUCCESS) { errmsg("%s\n", sio_last_error()); return -1; } secure_connection = true; /* Success. */ session = indent_s(sio_session_info(sio)); cert = indent_s(sio_server_cert_info(sio)); vtrace("TLS negotiated connection complete. " "Connection is now secure.\n" "Session:\n%s\nServer certificate:\n%s\n", session, cert); Free(session); Free(cert); return 0; } suite3270-4.1/Common/pr3287/trace.c000066400000000000000000000131641413735575200165030ustar00rootroot00000000000000/* * Copyright (c) 1993-2009, 2013, 2015, 2019 Paul Mattes. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the names of Paul Mattes nor the names of his contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO * EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * trace.c * 3270 data stream tracing. * */ #include "globals.h" #include #include #include #include #include #include "3270ds.h" #include "ctlrc.h" #include "trace.h" /* Maximum length of printer-data output. */ #define PD_MAX 77 /* Statics */ typedef enum { TM_BASE, TM_EVENT, TM_DS, TM_PD } tmode_t; static tmode_t tmode = TM_BASE; static size_t tscnt = 0; /* Globals */ FILE *tracef = NULL; static char *tdsbuf = NULL; #define TDS_LEN 75 /* Transition from one mode to another. */ static void clear_tmode(tmode_t desired) { if (tmode == TM_BASE || tmode == desired) { return; } fputc('\n', tracef); tscnt = 0; tmode = TM_BASE; } /* Data Stream trace print, handles line wraps. */ void trace_ds(const char *fmt, ...) { va_list args; size_t len; const char *s; bool nl = false; if (tracef == NULL) { return; } /* Allocate buffer. */ if (tdsbuf == NULL) { tdsbuf = Malloc(4096); } /* Print out remainder of message. */ va_start(args, fmt); vsnprintf(tdsbuf, 4096, fmt, args); va_end(args); clear_tmode(TM_DS); /* * Skip leading newlines, if we're already at the beginning of a * line. */ s = tdsbuf; if (tmode == TM_BASE) { while (*s == '\n') { s++; } } len = strlen(s); if (len && s[len-1] == '\n') { len--; nl = true; } while (tscnt + len >= 75) { size_t plen = 75-tscnt; fprintf(tracef, "%.*s ...\n... ", (int)plen, s); tscnt = 4; s += plen; len -= plen; } if (len) { fprintf(tracef, "%.*s", (int)len, s); tscnt += len; } if (nl) { fputc('\n', tracef); tscnt = 0; tmode = TM_BASE; } fflush(tracef); if (tscnt) { tmode = TM_DS; } } /* Trace something that isn't the host or printer data stream. */ static void vatrace(int do_ts, const char *fmt, va_list args) { size_t sl; char *s; clear_tmode(TM_EVENT); /* Allocate buffer. */ if (tdsbuf == NULL) { tdsbuf = Malloc(4096); } /* Print out remainder of message. */ vsnprintf(tdsbuf, 4096, fmt, args); s = tdsbuf; /* * Skip leading newlines, if we're already at the beginning of a * line. */ if (tmode == TM_BASE) { while (*s == '\n') { s++; } } /* Start with a timestamp. */ if (tmode == TM_BASE && do_ts) { struct timeval tv; time_t t; struct tm *tm; gettimeofday(&tv, NULL); t = tv.tv_sec; tm = localtime(&t); fprintf(tracef, "%d%02d%02d.%02d%02d%02d.%03d ", tm->tm_year + 1900, tm->tm_mon + 1, tm->tm_mday, tm->tm_hour, tm->tm_min, tm->tm_sec, (int)(tv.tv_usec / 1000L)); fflush(tracef); } sl = strlen(s); if (sl > 0) { bool nl = false; if (tdsbuf[sl - 1] == '\n') { nl = true; } fprintf(tracef, "%s", tdsbuf); fflush(tracef); if (nl) { tscnt = 0; tmode = TM_BASE; } else { tscnt += sl; tmode = TM_EVENT; } } } /* Trace something that isn't host or printer data, with a timestamp. */ void vtrace(const char *fmt, ...) { va_list args; if (tracef == NULL) { return; } va_start(args, fmt); vatrace(1, fmt, args); va_end(args); } /* Trace something that isn't host or printer data, without a timestamp. */ void vtrace_nts(const char *fmt, ...) { va_list args; if (tracef == NULL) { return; } va_start(args, fmt); vatrace(0, fmt, args); va_end(args); } /* Trace a byte of data going to the raw print stream. */ void trace_pdc(unsigned char c) { if (tracef == NULL) { return; } clear_tmode(TM_PD); if (!tscnt) { tscnt = fprintf(tracef, " "); } tscnt += fprintf(tracef, "%02x", c); if (tscnt >= PD_MAX) { fputc('\n', tracef); tscnt = 0; tmode = TM_BASE; } else { tmode = TM_PD; } } /* Trace a string of data going to the raw print stream. */ void trace_pds(unsigned char *s) { unsigned char c; while ((c = *s++) != '\0') { trace_pdc(c); } } /* Trace a buffer full of data going to the raw print stream. */ void trace_pdb(unsigned char *s, size_t len) { while (len-- > 0) { trace_pdc(*s++); } } suite3270-4.1/Common/pr3287/trace.h000066400000000000000000000043041413735575200165040ustar00rootroot00000000000000/* * Copyright (c) 1995-2009, 2014 Paul Mattes. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the names of Paul Mattes nor the names of his contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO * EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * trace_dsc.h * Global declarations for trace_ds.c. */ extern FILE *tracef; const char *rcba(int baddr); const char *see_aid(unsigned char code); const char *see_attr(unsigned char fa); const char *see_color(unsigned char setting); const char *see_ebc(unsigned char ch); const char *see_efa(unsigned char efa, unsigned char value); const char *see_efa_only(unsigned char efa); const char *see_qcode(unsigned char id); void trace_ds(const char *fmt, ...); void vtrace(const char *fmt, ...); void vtrace_nts(const char *fmt, ...); void trace_pdb(unsigned char *buf, size_t len); void trace_pdc(unsigned char c); void trace_pds(unsigned char *buf); const char *unknown(unsigned char value); suite3270-4.1/Common/pr3287/xtable.c000066400000000000000000000237761413735575200166760ustar00rootroot00000000000000/* * Copyright (c) 2013, 2014, 2019 Paul Mattes. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the names of Paul Mattes nor the names of his contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO * EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * pr3287 custom translation table support (-xtable). */ #include "globals.h" #include #include "xtablec.h" /* Symbolically-named ASCII control characters. */ static struct { const char *name; int value; } cc[] = { { "bs", '\b' }, { "cr", '\r' }, { "bel", '\a' }, { "esc", 27 }, { "escape", 27 }, { "ff", '\f' }, { "ht", '\t' }, { "lf", 10 }, { "nl", 10 }, { "nul", 0 }, { "space", 32 }, { "tab", '\t' }, { "vt", '\v' }, { NULL, 0 } }; /* Translation table. */ #define MAX_EX 64 static struct { int len; /* -1 for no translation, 0 for empty translation */ unsigned char expansion[MAX_EX]; } xls[256]; static int xtable_initted = 0; /* * Expand 1-3 octal characters. * (*s) points to the first. * Point (*s) at the last. */ static char loct(char **s) { char *t = *s; char r = *t - '0'; if (*(t + 1) >= '0' && *(t + 1) <= '7') { r *= 8; r += *++t - '0'; if (*(t + 1) >= 0 && *(t + 1) < '7') { r *= 8; r += *++t - '0'; } } *s = t; return r; } /* * Translate a hex digit to 0..16. * Return -1 for an invalid digit. */ static int xdigit(char c) { if (c >= '0' && c <= '9') { return c - '0'; } else if (c >= 'a' && c <= 'f') { return 10 + (c - 'a'); } else if (c >= 'A' && c <= 'F') { return 10 + (c - 'A'); } else { return -1; } } /* * Expand 1-2 hex characters. * (*s) points to the character before the first. * Point (*s) at the last. */ static int lhex(char **s) { char *t = *s; char r = 0; int d; d = xdigit(*(t + 1)); if (d >= 0) { r = d; t++; d = xdigit(*(t + 1)); if (d >= 0) { r = (r * 16) + d; t++; } } else { return -1; } *s = t; return r; } #define is_white(c) ((c) == ' ' || (c) == '\t' || (c) == 'r' || (c) == '\n') #define is_delim(c) (is_white(c) || (c) == '\0') #define is_comment(s) (*(s) == '!' || *(s) == '#' || !strncmp(s, "//", 2)) /* Initialize the translation table. */ int xtable_init(const char *filename) { FILE *f; char buf[1024]; int lno = 0; int i; int rc = 0; /* Initialize the translation table. */ for (i = 0; i < 256; i++) { xls[i].len = -1; } /* We're initted well enough for xtable_lookup() to be called. */ xtable_initted = 1; /* Open the file. */ f = fopen(filename, "r"); if (f == NULL) { errmsg("%s: %s", filename, strerror(errno)); return -1; } /* Read it. */ while (fgets(buf, sizeof(buf), f) != NULL) { char *s; unsigned long ebc, asc; char *p; char xl[64]; int sx; lno++; s = buf; while (is_white(*s)) { s++; } /* Skip empty lines. */ if (!*s) { continue; } /* Skip comment lines. */ if (is_comment(s)) { continue; } /* * The format of a line is: * ebcdic EBCDIC-code ascii [ASCII-code]... * An EBCDIC code can be specified as: * X'nn' Hexadecimal * 0xnn Hexadecimal * 0nn Octal * nn Decimal * An ASCII code can be specified as: * 0xn Hexadecimal * 0n Octal * n Decimal * ^X Control code * CR NL LF FF NUL TAB SPACE ESC ESCAPE * More control codes * "text" Literal text * Named and literal characters are not supported on the EBCDIC * side because their definition depends on the host codepage. * Literal characters are supported on the ASCII side, though * their interpretation of single characters depends on the * local character set. */ /* Parse 'ebcdic'. */ if (strncasecmp(s, "ebcdic", strlen("ebcdic")) || !is_white(*(s + strlen("ebcdic")))) { errmsg("%s:%d: missing 'ebcdic' keyword", filename, lno); rc = -1; goto done; } s += strlen("ebcdic"); while (is_white(*s)) { s++; } /* Skip empty lines. */ if (!*s) { continue; } /* Skip comment lines. */ if (is_comment(s)) { continue; } /* Parse the EBCDIC code. */ if (!strncasecmp(s, "X'", 2)) { ebc = strtoul(s + 2, &p, 16); if (*p != '\'' || !is_delim(*(p + 1))) { errmsg("%s:%d: EBCDIC code X'nn' syntax error", filename, lno); rc = -1; goto done; } p++; } else { ebc = strtoul(s, &p, 0); if (!is_delim(*p)) { errmsg("%s:%d: EBCDIC code number syntax error", filename, lno); rc = -1; goto done; } } if (ebc < 64) { errmsg("%s:%d: EBCDIC code < 64", filename, lno); rc = -1; goto done; } if (ebc > 255) { errmsg("%s:%d: EBCDIC code > 255", filename, lno); rc = -1; goto done; } s = p; while (is_white(*s)) { s++; } /* Parse 'ascii'. */ if (strncasecmp(s, "ascii", strlen("ascii")) || !is_white(*(s + strlen("ascii")))) { errmsg("%s:%d: missing 'ascii' keyword", filename, lno); rc = -1; goto done; } s += strlen("ascii"); /* Skip empty lines. */ if (!*s) { continue; } /* Skip comment lines. */ if (is_comment(s)) { continue; } /* Parse the ASCII codes. */ sx = 0; while (*s) { while (is_white(*s)) { s++; } if (!*s || is_comment(s)) { break; } if (*s >= '0' && *s <= '9') { /* Looks like a number. */ asc = strtoul(s, &p, 0); if (!is_delim(*p)) { errmsg("%s:%d:%zd: number syntax error", filename, lno, s - buf + 1); rc = -1; goto done; } s = p; } else if (*s == '^') { /* Looks like a control character. */ if (*(s + 1) >= '@' && *(s + 1) <= '_' && is_delim(*(s + 2))) { asc = *(s + 1) - '@'; } else { errmsg("%s:%d:%zd: control character syntax error", filename, lno, s - buf + 1); rc = -1; goto done; } s += 2; } else if (*s == '"') { char *t; /* Quoted text. */ t = ++s; for (;;) { t = strchr(t, '"'); if (t != s && *(t - 1) == '\\') { t++; continue; } if (t == NULL || !is_delim(*(t + 1))) { errmsg("%s:%d:%zd: quoted text syntax error ", filename, lno, s - buf + 1); rc = -1; goto done; } break; } while (s < t) { int c = *s++; if (c == '\\') { switch (*s) { case '0': c = loct(&s); break; case 'a': c = '\a'; break; case 'b': c = '\b'; break; case 'f': c = '\f'; break; case 'n': c = '\n'; break; case 'r': c = '\r'; break; case 't': c = '\t'; break; case 'v': c = '\v'; break; case 'x': c = lhex(&s); if (c < 0) { errmsg("%s:%d:%zd: \\x syntax error ", filename, lno, s - buf + 1); rc = -1; goto done; } break; default: c = *s; break; } s++; } if ((size_t)sx > sizeof(xl)) { errmsg("%s:%d: too many (%d) ASCII characters", filename, lno, sx); rc = -1; goto done; } xl[sx++] = c; } /* Skip the trailing double quote. */ s++; /* * Don't fall through to the logic that adds * one character to the translation. */ continue; } else { int j; /* Might be a symbolic character. */ for (j = 0; cc[j].name != NULL; j++) { size_t sl = strlen(cc[j].name); if (!strncasecmp(cc[j].name, s, sl) && is_delim(s[sl])) { asc = cc[j].value; s += sl; break; } } if (cc[j].name == NULL) { errmsg("%s:%d:%zd: unknown token", filename, lno, s - buf + 1); rc = -1; goto done; } } if (asc > 255) { errmsg("%s:%d: ASCII code > 255", filename, lno); rc = -1; goto done; } if ((size_t)sx > sizeof(xl)) { errmsg("%s:%d: too many (%d) ASCII characters", filename, lno, sx); rc = -1; goto done; } xl[sx++] = (char)asc; } /* Save the translation. */ xls[ebc].len = sx; memcpy(xls[ebc].expansion, xl, sx); } #if defined(DUMP_TABLE) /*[*/ { int ebc; for (ebc = 0; ebc < 256; ebc++) { if (xls[ebc].len >= 0) { int k; printf("X'%02X' ->", ebc); for (k = 0; k < xls[ebc].len; k++) { printf(" 0x%02x", (unsigned char)xls[ebc].expansion[k]); } printf("\n"); } } fflush(stdout); /* for Windows */ } #endif /*]*/ done: fclose(f); return rc; } /* * Translate an EBCDIC code to ASCII, using the custom table. * Returns: * -1 no translation defined (use default table) * 0 expand to nothing * n expand to returned characters */ int xtable_lookup(unsigned char ebc, unsigned char **r) { if (!xtable_initted || ebc < 0x40) { *r = NULL; return -1; } if (xls[ebc].len > 0) { *r = xls[ebc].expansion; } else if (xls[ebc].len == 0) { *r = (unsigned char *)""; } else { *r = NULL; } return xls[ebc].len; } suite3270-4.1/Common/pr3287/xtablec.h000066400000000000000000000032621413735575200170320ustar00rootroot00000000000000/* * Copyright (c) 2013, 2014 Paul Mattes. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the names of Paul Mattes nor the names of his contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO * EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * pr3287 custom translation table support (-xtable). */ extern int xtable_init(const char *filename); extern int xtable_lookup(unsigned char ebc, unsigned char **r); suite3270-4.1/Common/pr3287_session.c000066400000000000000000001126571413735575200171570ustar00rootroot00000000000000/* * Copyright (c) 2000-2010, 2013-2020 Paul Mattes. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the names of Paul Mattes nor the names of his contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO * EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * pr3287_session.c * 3287 printer session support */ #include "globals.h" #if !defined(_WIN32) /*[*/ # include # include # include #endif /*]*/ #include #include #include #include #include "appres.h" #include "resources.h" #include "codepage.h" #include "host.h" #include "lazya.h" #include "popups.h" #include "pr3287_session.h" #include "telnet_core.h" #include "sio.h" #include "toggles.h" #include "trace.h" #include "utils.h" #include "varbuf.h" #include "w3misc.h" #include "xio.h" #define PRINTER_BUF 1024 #if !defined(_WIN32) /*[*/ #define SOCK_CLOSE(s) close(s) #else /*][*/ #define SOCK_CLOSE(s) closesocket(s) #endif /*]*/ #define PRINTER_DELAY_MS 3000 #define PRINTER_KILL_MS 5000 /* Statics */ #if !defined(_WIN32) /*[*/ static int pr3287_pid = -1; #else /*][*/ static HANDLE pr3287_handle = NULL; #endif /*]*/ static ioid_t pr3287_id = NULL_IOID; static enum { PRS_NONE, /* no printer session */ PRS_DELAY, /* delay before (re)starting pr3287 */ PRS_RUNNING, /* pr3287 process running */ PRS_SHUTDOWN, /* pr3287 graceful shutdown requested */ PRS_TERMINATING /* pr3287 forcible termination requested */ } pr3287_state = PRS_NONE; static socket_t pr3287_ls = INVALID_SOCKET; /* printer sync listening socket */ static ioid_t pr3287_ls_id = NULL_IOID; /* input ID */ #if defined(_WIN32) /*[*/ static HANDLE pr3287_ls_handle = NULL; #endif /*]*/ static socket_t pr3287_sync = INVALID_SOCKET; /* printer sync socket */ static ioid_t pr3287_sync_id = NULL_IOID; /* input ID */ #if defined(_WIN32) /*[*/ static HANDLE pr3287_sync_handle = NULL; static HANDLE pr3287_stderr_wr = NULL; static HANDLE pr3287_stderr_rd = NULL; #endif /*]*/ static ioid_t pr3287_kill_id = NULL_IOID; /* kill timeout ID */ static ioid_t pr3287_delay_id = NULL_IOID; /* delay timeout ID */ static char *pr3287_delay_lu = NULL; static bool pr3287_delay_associated = false; static struct pr3o { int fd; /* file descriptor */ ioid_t input_id; /* input ID */ ioid_t timeout_id; /* timeout ID */ int count; /* input count */ char buf[PRINTER_BUF]; /* input buffer */ } pr3287_stdout = { -1, 0L, 0L, 0 }, pr3287_stderr = { -1, 0L, 0L, 0 }; static bool pr3287_associated = false; static char *pr3287_running_lu; #if !defined(_WIN32) /*[*/ static void pr3287_output(iosrc_t fd, ioid_t id); static void pr3287_error(iosrc_t fd, ioid_t id); static void pr3287_otimeout(ioid_t id); static void pr3287_etimeout(ioid_t id); static void pr3287_dump(struct pr3o *p, bool is_err, bool is_dead); static void pr3287_session_check(pid_t pid, int status); #else /*][*/ static void pr3287_session_check(void); #endif /*]*/ static void pr3287_host_connect(bool connected _is_unused); static void pr3287_exiting(bool b _is_unused); static void pr3287_accept(iosrc_t fd, ioid_t id); static void pr3287_start_now(const char *lu, bool associated); static bool pr3287_toggle_lu(const char *name, const char *value); #if defined(_WIN32) /*[*/ static bool pr3287_toggle_name(const char *name, const char *value); static bool pr3287_toggle_codepage(const char *name, const char *value); #endif /*]*/ static bool pr3287_toggle_opts(const char *name, const char *value); /* Globals */ /** * Printer session module registration. */ void pr3287_session_register(void) { /* Register interest in host connects and mode changes. */ register_schange(ST_CONNECT, pr3287_host_connect); register_schange(ST_3270_MODE, pr3287_host_connect); register_schange(ST_EXITING, pr3287_exiting); /* Register the extended toggles. */ register_extended_toggle(ResPrinterLu, pr3287_toggle_lu, NULL, NULL, (void **)&appres.interactive.printer_lu, XRM_STRING); #if defined(_WIN32) /*[*/ register_extended_toggle(ResPrinterName, pr3287_toggle_name, NULL, NULL, NULL, XRM_STRING); register_extended_toggle(ResPrinterCodepage, pr3287_toggle_codepage, NULL, NULL, NULL, XRM_STRING); #endif /*]*/ register_extended_toggle(ResPrinterOptions, pr3287_toggle_opts, NULL, NULL, NULL, XRM_STRING); } #if defined(_WIN32) /*[*/ /* * Read pr3287's stdout/stderr when it exits. */ static char * read_pr3287_errors(void) { DWORD nread; CHAR buf[PRINTER_BUF]; BOOL success = FALSE; char *result = NULL; size_t result_len = 0; for (;;) { DWORD ix; success = ReadFile(pr3287_stderr_rd, buf, PRINTER_BUF, &nread, NULL); if (!success || nread == 0) { break; } result = Realloc(result, result_len + nread + 1); for (ix = 0; ix < nread; ix++) { if (buf[ix] != '\r') { result[result_len++] = buf[ix]; } } } if (result_len > 0) { result[result_len] = '\0'; } return result; } #endif /*]*/ /* * If the printer process was terminated, but has not yet exited, wait for it * to exit. */ static void pr3287_reap_now(void) { #if !defined(_WIN32) /*[*/ int status; #else /*][*/ DWORD exit_code; char *stderr_text; #endif /*]*/ assert(pr3287_state == PRS_TERMINATING); vtrace("Waiting for old printer session to exit.\n"); #if !defined(_WIN32) /*[*/ if (waitpid(pr3287_pid, &status, 0) < 0) { popup_an_errno(errno, "Printer process waitpid() failed"); return; } pr3287_pid = -1; #else /*][*/ if (WaitForSingleObject(pr3287_handle, 2000) == WAIT_TIMEOUT) { popup_an_error("Printer process failed to exit (Wait)"); return; } if (GetExitCodeProcess(pr3287_handle, &exit_code) == 0) { popup_an_error("GetExitCodeProcess() for printer session failed: %s", win32_strerror(GetLastError())); return; } if (exit_code == STILL_ACTIVE) { popup_an_error("Printer process failed to exit (Get)"); return; } CloseHandle(pr3287_handle); pr3287_handle = NULL; CloseHandle(pr3287_stderr_wr); pr3287_stderr_wr = NULL; stderr_text = read_pr3287_errors(); CloseHandle(pr3287_stderr_rd); pr3287_stderr_rd = NULL; if (exit_code != 0) { popup_printer_output(true, NULL, "%s%sPrinter process exited with status 0x%lx", (stderr_text != NULL)? stderr_text: "", (stderr_text != NULL)? "\n": "", (long)exit_code); } else if (stderr_text != NULL) { popup_printer_output(true, NULL, "%s", stderr_text); } if (stderr_text != NULL) { Free(stderr_text); } #endif /*]*/ vtrace("Old printer session exited.\n"); pr3287_state = PRS_NONE; st_changed(ST_PRINTER, false); } /* Delayed start function. */ static void delayed_start(ioid_t id _is_unused) { assert(pr3287_state == PRS_DELAY); vtrace("Printer session start delay complete.\n"); /* Start the printer. */ pr3287_state = PRS_NONE; assert(pr3287_delay_lu != NULL); pr3287_start_now(pr3287_delay_lu, pr3287_delay_associated); /* Forget the saved state. */ pr3287_delay_id = NULL_IOID; Free(pr3287_delay_lu); pr3287_delay_lu = NULL; } /* * Printer session start-up function. * * If 'lu' is non-NULL, then use the specific-LU form. * If not, use the assoc form. * * This function may just store the parameters and let a timeout start the * process. It can also be invoked interactively, and might fail. */ void pr3287_session_start(const char *lu) { pr3287_associated = false; /* Gotta be in 3270 mode. */ if (!IN_3270) { popup_an_error("Not in 3270 mode"); return; } /* Figure out the LU. */ if (lu == NULL) { /* Associate with the current session. */ pr3287_associated = true; /* Gotta be in TN3270E mode. */ if (!IN_TN3270E) { popup_an_error("Not in TN3270E mode"); return; } /* Gotta be connected to an LU. */ if (connected_lu == NULL) { popup_an_error("Not connected to a specific LU"); return; } lu = connected_lu; } /* Can't start two. */ switch (pr3287_state) { case PRS_NONE: /* * Remember what was requested, and set a timeout to start the * new session. */ vtrace("Delaying printer session start %dms.\n", PRINTER_DELAY_MS); Replace(pr3287_delay_lu, NewString(lu)); pr3287_delay_associated = pr3287_associated; pr3287_state = PRS_DELAY; pr3287_delay_id = AddTimeOut(PRINTER_DELAY_MS, delayed_start); break; case PRS_DELAY: case PRS_RUNNING: /* Redundant start request. */ popup_an_error("Printer is already started or running"); return; case PRS_SHUTDOWN: /* * Remember what was requested, and let the state change or * timeout functions start the new session. * * There is a window here where two manual start commands could * get in after a manual stop. This is needed because we can't * distinguish a manual from an automatic start. */ vtrace("Delaying printer session start %dms after exit.\n", PRINTER_DELAY_MS); Replace(pr3287_delay_lu, NewString(lu)); pr3287_delay_associated = pr3287_associated; return; case PRS_TERMINATING: /* Collect the exit status now and start the new session. */ pr3287_reap_now(); pr3287_start_now(lu, pr3287_associated); break; } } #if !defined(_WIN32) /*[*/ /** * Callback for pr3287 session exit. * * @param[in] id I/O identifier (unused) * @param[in] status exit status */ static void pr3287_reaped(ioid_t id _is_unused, int status) { pr3287_id = NULL_IOID; pr3287_session_check(pr3287_pid, status); } #else /*][*/ /** * Callback for pr3287 session exit. * * @param[in] fd File descriptor (unused) * @param[in] id I/O identifier (unused) */ static void pr3287_reaped(iosrc_t iosrc _is_unused, ioid_t id _is_unused) { RemoveInput(pr3287_id); pr3287_id = NULL_IOID; pr3287_session_check(); } #endif /*]*/ /* * Synchronous printer start-up function. * * Called when it is safe to start a pr3287 session. */ static void pr3287_start_now(const char *lu, bool associated) { const char *cmdlineName; const char *cmdline; #if !defined(_WIN32) /*[*/ const char *cmd; #else /*][*/ const char *printerName; #endif /*]*/ const char *s; char *cmd_text; char c; char *charset_cmd; /* -charset */ char *proxy_cmd = NULL; /* -proxy */ #if defined(_WIN32) /*[*/ char *pcp_res = NULL; char *printercp = NULL; /* -printercp */ char *cp_cmdline; STARTUPINFO si; PROCESS_INFORMATION pi; SECURITY_ATTRIBUTES sa; DWORD mode; #else /*][*/ int stdout_pipe[2]; int stderr_pipe[2]; #endif /*]*/ char *pr3287_opts; bool success = true; struct sockaddr_in pr3287_lsa; socklen_t len; char *syncopt; varbuf_t r; assert(pr3287_state == PRS_NONE); /* Select the command line to use. */ if (associated) { cmdlineName = ResAssocCommand; } else { cmdlineName = ResLuCommandLine; } vtrace("Starting %s%s printer session.\n", lu, associated? " associated": ""); /* Create a listening socket for pr3287 to connect back to. */ pr3287_ls = socket(PF_INET, SOCK_STREAM, 0); if (pr3287_ls == INVALID_SOCKET) { popup_a_sockerr("socket(printer sync)"); return; } memset(&pr3287_lsa, '\0', sizeof(pr3287_lsa)); pr3287_lsa.sin_family = AF_INET; pr3287_lsa.sin_addr.s_addr = htonl(INADDR_LOOPBACK); if (bind(pr3287_ls, (struct sockaddr *)&pr3287_lsa, sizeof(pr3287_lsa)) < 0) { popup_a_sockerr("bind(printer sync)"); SOCK_CLOSE(pr3287_ls); pr3287_ls = INVALID_SOCKET; return; } memset(&pr3287_lsa, '\0', sizeof(pr3287_lsa)); pr3287_lsa.sin_family = AF_INET; len = sizeof(pr3287_lsa); if (getsockname(pr3287_ls, (struct sockaddr *)&pr3287_lsa, &len) < 0) { popup_a_sockerr("getsockname(printer sync)"); SOCK_CLOSE(pr3287_ls); pr3287_ls = INVALID_SOCKET; return; } syncopt = lazyaf("%s %d", OptSyncPort, ntohs(pr3287_lsa.sin_port)); if (listen(pr3287_ls, 5) < 0) { popup_a_sockerr("listen(printer sync)"); SOCK_CLOSE(pr3287_ls); pr3287_ls = INVALID_SOCKET; return; } #if !defined(_WIN32) /*[*/ fcntl(pr3287_ls, F_SETFD, 1); #endif /*]*/ #if defined(_WIN32) /*[*/ pr3287_ls_handle = CreateEvent(NULL, FALSE, FALSE, NULL); if (pr3287_ls_handle == NULL) { popup_an_error("CreateEvent: %s", win32_strerror(GetLastError())); SOCK_CLOSE(pr3287_ls); pr3287_ls = INVALID_SOCKET; return; } if (WSAEventSelect(pr3287_ls, pr3287_ls_handle, FD_ACCEPT) != 0) { popup_an_error("WSAEventSelect: %s", win32_strerror(GetLastError())); SOCK_CLOSE(pr3287_ls); pr3287_ls = INVALID_SOCKET; return; } pr3287_ls_id = AddInput(pr3287_ls_handle, pr3287_accept); #else /*][*/ pr3287_ls_id = AddInput(pr3287_ls, pr3287_accept); #endif /*]*/ /* Fetch the command line and command resources. */ cmdline = get_resource(cmdlineName); if (cmdline == NULL) { popup_an_error("%s resource not defined", cmdlineName); SOCK_CLOSE(pr3287_ls); pr3287_ls = INVALID_SOCKET; RemoveInput(pr3287_ls_id); return; } #if !defined(_WIN32) /*[*/ cmd = get_resource(ResPrinterCommand); if (cmd == NULL) { popup_an_error(ResPrinterCommand " resource not defined"); SOCK_CLOSE(pr3287_ls); pr3287_ls = INVALID_SOCKET; RemoveInput(pr3287_ls_id); return; } #else /*][*/ printerName = get_resource(ResPrinterName); #endif /*]*/ /* Construct the charset option. */ charset_cmd = lazyaf(OptCodePage " %s", get_codepage_name()); /* Construct proxy option. */ if (appres.proxy != NULL) { #if !defined(_WIN32) /*[*/ proxy_cmd = lazyaf(OptProxy " \"%s\"", appres.proxy); #else /*][ */ proxy_cmd = lazyaf(OptProxy " %s", appres.proxy); #endif /*]*/ } #if defined(_WIN32) /*[*/ /* Get the codepage for the printer. */ pcp_res = get_resource(ResPrinterCodepage); if (pcp_res) { printercp = lazyaf("-printercp %s", pcp_res); } #endif /*]*/ /* Get printer options. */ pr3287_opts = appres.interactive.printer_opts; if (pr3287_opts == NULL) { pr3287_opts = get_resource(ResPrinterOptions); } /* Construct the command line. */ /* Substitute. */ vb_init(&r); for (s = cmdline; (c = *s) != '\0'; s++) { if (c == '%') { if (!strncmp(s+1, "L%", 2)) { vb_appends(&r, lu); s += 2; continue; } else if (!strncmp(s+1, "H%", 2)) { vb_appends(&r, qualified_host); s += 2; continue; #if !defined(_WIN32) /*[*/ } else if (!strncmp(s+1, "C%", 2)) { vb_appends(&r, cmd); s += 2; continue; #endif /*]*/ } else if (!strncmp(s+1, "R%", 2)) { vb_appends(&r, charset_cmd); s += 2; continue; } else if (!strncmp(s+1, "P%", 2)) { if (proxy_cmd != NULL) { vb_appends(&r, proxy_cmd); } s += 2; continue; #if defined(_WIN32) /*[*/ } else if (!strncmp(s+1, "I%", 2)) { if (printercp != NULL) { vb_appends(&r, printercp); } s += 2; continue; #endif /*]*/ } else if (!strncmp(s+1, "O%", 2)) { if (pr3287_opts != NULL) { vb_appends(&r, pr3287_opts); } s += 2; continue; } else if (!strncmp(s+1, "V%", 2)) { unsigned tls_opts = sio_all_options_supported(); if ((tls_opts & TLS_OPT_VERIFY_HOST_CERT) && !appres.tls.verify_host_cert) { vb_appends(&r, " " OptNoVerifyHostCert); } if ((tls_opts & TLS_OPT_CA_DIR) && appres.tls.ca_dir) { vb_appendf(&r, " %s \"%s\"", OptCaDir, appres.tls.ca_dir); } if ((tls_opts & TLS_OPT_CA_FILE) && appres.tls.ca_file) { vb_appendf(&r, " %s \"%s\"", OptCaFile, appres.tls.ca_file); } if ((tls_opts & TLS_OPT_CERT_FILE) && appres.tls.cert_file) { vb_appendf(&r, " %s \"%s\"", OptCertFile, appres.tls.cert_file); } if ((tls_opts & TLS_OPT_CERT_FILE_TYPE) && appres.tls.cert_file_type) { vb_appendf(&r, " %s %s", OptCertFileType, appres.tls.cert_file_type); } if ((tls_opts & TLS_OPT_CHAIN_FILE) && appres.tls.chain_file) { vb_appendf(&r, " %s \"%s\"", OptChainFile, appres.tls.chain_file); } if ((tls_opts & TLS_OPT_KEY_FILE) && appres.tls.key_file) { vb_appendf(&r, " %s \"%s\"", OptKeyFile, appres.tls.key_file); } if ((tls_opts & TLS_OPT_KEY_PASSWD) && appres.tls.key_passwd) { vb_appendf(&r, " %s \"%s\"", OptKeyPasswd, appres.tls.key_passwd); } if ((tls_opts & TLS_OPT_CLIENT_CERT) && appres.tls.client_cert) { vb_appendf(&r, " %s %s", OptClientCert, appres.tls.client_cert); } if ((tls_opts & TLS_OPT_ACCEPT_HOSTNAME) && appres.tls.accept_hostname) { vb_appendf(&r, " %s \"%s\"", OptAcceptHostname, appres.tls.accept_hostname); } s += 2; continue; } else if (!strncmp(s+1, "S%", 2)) { vb_appends(&r, syncopt); s += 2; continue; } } vb_append(&r, &c, 1); } cmd_text = vb_consume(&r); #if !defined(_WIN32) /*[*/ vtrace("Printer command: %s\n", cmd_text); /* Make pipes for printer's stdout and stderr. */ if (pipe(stdout_pipe) < 0) { popup_an_errno(errno, "pipe() failed"); Free(cmd_text); SOCK_CLOSE(pr3287_ls); pr3287_ls = INVALID_SOCKET; RemoveInput(pr3287_ls_id); return; } fcntl(stdout_pipe[0], F_SETFD, 1); if (pipe(stderr_pipe) < 0) { popup_an_errno(errno, "pipe() failed"); close(stdout_pipe[0]); close(stdout_pipe[1]); Free(cmd_text); SOCK_CLOSE(pr3287_ls); pr3287_ls = INVALID_SOCKET; RemoveInput(pr3287_ls_id); return; } fcntl(stderr_pipe[0], F_SETFD, 1); /* Fork and exec the printer session. */ switch (pr3287_pid = fork()) { case 0: /* child process */ dup2(stdout_pipe[1], 1); close(stdout_pipe[1]); dup2(stderr_pipe[1], 2); close(stderr_pipe[1]); if (setsid() < 0) { perror("setsid"); _exit(1); } execlp("/bin/sh", "sh", "-c", cmd_text, NULL); perror("exec(printer)"); _exit(1); default: /* parent process */ close(stdout_pipe[1]); pr3287_stdout.fd = stdout_pipe[0]; close(stderr_pipe[1]); pr3287_stderr.fd = stderr_pipe[0]; pr3287_stdout.input_id = AddInput(pr3287_stdout.fd, pr3287_output); pr3287_stderr.input_id = AddInput(pr3287_stderr.fd, pr3287_error); pr3287_id = AddChild(pr3287_pid, pr3287_reaped); break; case -1: /* error */ popup_an_errno(errno, "fork()"); close(stdout_pipe[0]); close(stdout_pipe[1]); close(stderr_pipe[0]); close(stderr_pipe[1]); success = false; break; } #else /*][*/ /* Pass the command via the environment. */ if (printerName != NULL) { putenv(lazyaf("PRINTER=%s", printerName)); } /* Create the pr3287 process. */ if (!strncasecmp(cmd_text, "pr3287.exe", 10) || !strncasecmp(cmd_text, "wpr3287.exe", 11)) { cp_cmdline = lazyaf("%s%s", instdir, cmd_text); } else { cp_cmdline = cmd_text; } vtrace("Printer command: %s\n", cp_cmdline); if (printerName != NULL) { vtrace("Printer (via %%PRINTER%%): %s\n", printerName); } /* Create a named pipe for pr3287's stderr. */ memset(&sa, 0, sizeof(sa)); sa.nLength = sizeof(SECURITY_ATTRIBUTES); sa.bInheritHandle = TRUE; sa.lpSecurityDescriptor = NULL; if (!CreatePipe(&pr3287_stderr_rd, &pr3287_stderr_wr, &sa, 0)) { popup_an_error("CreatePipe() failed: %s", win32_strerror(GetLastError())); success = false; goto done; } if (!SetHandleInformation(pr3287_stderr_rd, HANDLE_FLAG_INHERIT, 0)) { popup_an_error("SetHandleInformation() failed: %s", win32_strerror(GetLastError())); CloseHandle(pr3287_stderr_rd); pr3287_stderr_rd = NULL; CloseHandle(pr3287_stderr_wr); pr3287_stderr_wr = NULL; success = false; goto done; } mode = PIPE_READMODE_BYTE | PIPE_NOWAIT; if (!SetNamedPipeHandleState(pr3287_stderr_rd, &mode, NULL, NULL)) { popup_an_error("SetNamedPipeHandleState() failed: %s", win32_strerror(GetLastError())); CloseHandle(pr3287_stderr_rd); pr3287_stderr_rd = NULL; CloseHandle(pr3287_stderr_wr); pr3287_stderr_wr = NULL; success = false; goto done; } memset(&si, '\0', sizeof(si)); si.cb = sizeof(pi); si.hStdError = pr3287_stderr_wr; si.dwFlags |= STARTF_USESTDHANDLES; memset(&pi, '\0', sizeof(pi)); if (!CreateProcess(NULL, cp_cmdline, NULL, NULL, TRUE, DETACHED_PROCESS, NULL, NULL, &si, &pi)) { popup_an_error("CreateProcess() for printer session failed: %s", win32_strerror(GetLastError())); CloseHandle(pr3287_stderr_rd); pr3287_stderr_rd = NULL; CloseHandle(pr3287_stderr_wr); pr3287_stderr_wr = NULL; success = false; } else { pr3287_handle = pi.hProcess; CloseHandle(pi.hThread); pr3287_id = AddInput(pr3287_handle, pr3287_reaped); } done: #endif /*]*/ Free(cmd_text); /* Tell everyone else. */ if (success) { pr3287_state = PRS_RUNNING; Replace(pr3287_running_lu, associated? NewString("."): NewString(lu)); st_changed(ST_PRINTER, true); } } #if !defined(_WIN32) /*[*/ /* There's data from the printer session. */ static void pr3287_data(struct pr3o *p, bool is_err) { int space; int nr; static char exitmsg[] = "Printer session exited"; /* Read whatever there is. */ space = PRINTER_BUF - p->count - 1; nr = read(p->fd, p->buf + p->count, space); /* Handle read errors and end-of-file. */ if (nr < 0) { popup_an_errno(errno, "Printer session pipe input failed"); pr3287_session_stop(); return; } if (nr == 0) { vtrace("Printer session %s EOF.\n", is_err? "stderr": "stdout"); if (pr3287_stderr.timeout_id != NULL_IOID) { /* * Append a termination error message to whatever the * printer process said, and pop it up. */ p = &pr3287_stderr; space = PRINTER_BUF - p->count - 1; if (p->count && *(p->buf + p->count - 1) != '\n') { *(p->buf + p->count) = '\n'; p->count++; space--; } strncpy(p->buf + p->count, exitmsg, space); p->count += strlen(exitmsg); if (p->count >= PRINTER_BUF) { p->count = PRINTER_BUF - 1; } pr3287_dump(p, true, true); } else { popup_an_error("%s", exitmsg); } /* Now that we've gotten EOF, make sure we stop the process. */ pr3287_session_stop(); return; } /* Add it to the buffer, and add a NULL. */ p->count += nr; p->buf[p->count] = '\0'; /* * If there's no more room in the buffer, dump it now. Otherwise, * give it a second to generate more output. */ if (p->count >= PRINTER_BUF - 1) { pr3287_dump(p, is_err, false); } else if (p->timeout_id == NULL_IOID) { p->timeout_id = AddTimeOut(1000, is_err? pr3287_etimeout: pr3287_otimeout); } } /* The printer process has some output for us. */ static void pr3287_output(iosrc_t fd _is_unused, ioid_t id _is_unused) { pr3287_data(&pr3287_stdout, false); } /* The printer process has some error output for us. */ static void pr3287_error(iosrc_t fd _is_unused, ioid_t id _is_unused) { pr3287_data(&pr3287_stderr, true); } /* Timeout from printer output or error output. */ static void pr3287_timeout(struct pr3o *p, bool is_err) { /* Forget the timeout ID. */ p->timeout_id = NULL_IOID; /* Dump the output. */ pr3287_dump(p, is_err, false); } /* Timeout from printer output. */ static void pr3287_otimeout(ioid_t id _is_unused) { pr3287_timeout(&pr3287_stdout, false); } /* Timeout from printer error output. */ static void pr3287_etimeout(ioid_t id _is_unused) { pr3287_timeout(&pr3287_stderr, true); } /* Dump pending printer process output. */ static void pr3287_dump(struct pr3o *p, bool is_err, bool is_dead) { if (p->count) { /* * Strip any trailing newline, and make sure the buffer is * NULL terminated. */ if (p->buf[p->count - 1] == '\n') { p->buf[--(p->count)] = '\0'; } else if (p->buf[p->count]) { p->buf[p->count] = '\0'; } /* Dump it and clear the buffer. */ popup_printer_output(is_err, is_dead? NULL: pr3287_session_stop, "%s", p->buf); p->count = 0; } } #endif /*]*/ /* Shut off printer sync input. */ static void pr3287_stop_sync(void) { assert(pr3287_sync_id != NULL_IOID); RemoveInput(pr3287_sync_id); pr3287_sync_id = NULL_IOID; #if defined(_WIN32) /*[*/ assert(pr3287_sync_handle != NULL); CloseHandle(pr3287_sync_handle); pr3287_sync_handle = NULL; #endif /*]*/ SOCK_CLOSE(pr3287_sync); pr3287_sync = INVALID_SOCKET; } /* Input from pr3287 on the synchronization socket. */ static void pr3287_sync_input(iosrc_t fd _is_unused, ioid_t id _is_unused) { vtrace("Input or EOF on printer sync socket.\n"); assert(pr3287_state >= PRS_RUNNING); /* * We don't do anything at this point, besides clean up the state * associated with the sync socket. * * The pr3287 session is considered gone when (1) it closes the sync * socket and (2) it exits. The only change in behavior when the sync * socket is closed is that when we want to stop pr3287, we just start * the timeout to force-terminate it, instead of closing the sync * socket first and letting it clean itself up. */ /* No more need for the sync socket. */ pr3287_stop_sync(); } /* Shut off the printer sync listening socket. */ static void pr3287_stop_listening(void) { assert(pr3287_ls_id != NULL_IOID); assert(pr3287_ls != INVALID_SOCKET); #if defined(_WIN32) /*[*/ assert(pr3287_ls_handle != NULL); #endif /*]*/ RemoveInput(pr3287_ls_id); pr3287_ls_id = NULL_IOID; #if defined(_WIN32) /*[*/ CloseHandle(pr3287_ls_handle); pr3287_ls_handle = NULL; #endif /*]*/ SOCK_CLOSE(pr3287_ls); pr3287_ls = INVALID_SOCKET; } /* Accept a synchronization connection from pr3287. */ static void pr3287_accept(iosrc_t fd _is_unused, ioid_t id) { struct sockaddr_in sin; socklen_t len = sizeof(sin); /* Accept the connection. */ assert(pr3287_state == PRS_RUNNING); pr3287_sync = accept(pr3287_ls, (struct sockaddr *)&sin, &len); if (pr3287_sync == INVALID_SOCKET) { popup_a_sockerr("accept(printer sync)"); } else { vtrace("Accepted sync connection from printer.\n"); #if !defined(_WIN32) /*[*/ fcntl(pr3287_sync, F_SETFD, 1); #endif /*]*/ #if defined(_WIN32) /*[*/ pr3287_sync_handle = CreateEvent(NULL, FALSE, FALSE, NULL); if (pr3287_sync_handle == NULL) { popup_an_error("CreateEvent failed"); x3270_exit(1); } if (WSAEventSelect(pr3287_sync, pr3287_sync_handle, FD_READ | FD_CLOSE) != 0) { popup_an_error("Can't set socket handle events\n"); x3270_exit(1); } pr3287_sync_id = AddInput(pr3287_sync_handle, pr3287_sync_input); #else /*][*/ pr3287_sync_id = AddInput(pr3287_sync, pr3287_sync_input); #endif /*]*/ } /* No more need for the listening socket. */ pr3287_stop_listening(); } /* Clean up all connections to pr3287. */ static void pr3287_cleanup_io(void) { /* Remove inputs. */ if (pr3287_stdout.input_id) { RemoveInput(pr3287_stdout.input_id); pr3287_stdout.input_id = NULL_IOID; } if (pr3287_stderr.input_id) { RemoveInput(pr3287_stderr.input_id); pr3287_stderr.input_id = NULL_IOID; } /* Cancel timeouts. */ if (pr3287_stdout.timeout_id != NULL_IOID) { RemoveTimeOut(pr3287_stdout.timeout_id); pr3287_stdout.timeout_id = NULL_IOID; } if (pr3287_stderr.timeout_id != NULL_IOID) { RemoveTimeOut(pr3287_stderr.timeout_id); pr3287_stderr.timeout_id = NULL_IOID; } /* Clear buffers. */ pr3287_stdout.count = 0; pr3287_stderr.count = 0; /* * If we have a sync socket connection, shut it down to signal pr3287 * to exit gracefully. */ if (pr3287_sync != INVALID_SOCKET) { vtrace("Stopping printer by shutting down sync socket.\n"); assert(pr3287_ls == INVALID_SOCKET); /* The separate shutdown() call is likely redundant. */ #if !defined(_WIN32) /*[*/ shutdown(pr3287_sync, SHUT_WR); #else /*][*/ shutdown(pr3287_sync, SD_SEND); #endif /*]*/ /* We no longer care about printer sync input. */ pr3287_stop_sync(); } else if (pr3287_ls_id != NULL_IOID) { /* Stop listening for sync connections. */ pr3287_stop_listening(); } } /* * Check for an exited printer session. * * On Unix, this function is supplied with a process ID and status for an * exited child process. If there is a printer process running and its process * ID matches, process the rest of the state change. * * On Windows, this function is responsible for collecting the status of an * exited printer process, if any. */ static void pr3287_session_check( #if !defined(_WIN32) /*[*/ pid_t pid, int status #else /*][*/ void #endif /*]*/ ) { #if defined(_WIN32) /*[*/ DWORD exit_code; #endif /*]*/ if (pr3287_state == PRS_NONE) { return; } #if !defined(_WIN32) /*[*/ if (pid != pr3287_pid) { return; } /* * If we didn't stop it on purpose, decode and display the printer's * exit status. */ if (pr3287_state == PRS_RUNNING) { if (WIFEXITED(status)) { popup_an_error("Printer process exited with status %d", WEXITSTATUS(status)); } else if (WIFSIGNALED(status)) { popup_an_error("Printer process killed by signal %d", WTERMSIG(status)); } else { popup_an_error("Printer process stopped by unknown status %d", status); } } pr3287_pid = -1; #else /*][*/ if (pr3287_handle != NULL && GetExitCodeProcess(pr3287_handle, &exit_code) != 0 && exit_code != STILL_ACTIVE) { char *stderr_text; CloseHandle(pr3287_handle); pr3287_handle = NULL; CloseHandle(pr3287_stderr_wr); pr3287_stderr_wr = NULL; stderr_text = read_pr3287_errors(); CloseHandle(pr3287_stderr_rd); pr3287_stderr_rd = NULL; if (pr3287_state == PRS_RUNNING) { popup_printer_output(true, NULL, "%s%sPrinter process exited with status 0x%lx", (stderr_text != NULL)? stderr_text: "", (stderr_text != NULL)? "\n": "", (long)exit_code); } else if (stderr_text != NULL) { popup_printer_output(true, NULL, "%s", stderr_text); } if (stderr_text != NULL) { Free(stderr_text); } } else { /* It is still running. */ return; } #endif /*]*/ vtrace("Printer session exited.\n"); /* Stop any pending printer kill request. */ if (pr3287_state == PRS_SHUTDOWN) { assert(pr3287_kill_id != NULL_IOID); RemoveTimeOut(pr3287_kill_id); pr3287_kill_id = NULL_IOID; pr3287_state = PRS_NONE; } /* No need for sync input any more. */ if (pr3287_sync_id != NULL_IOID) { pr3287_stop_sync(); } /* (Try to) display pr3287's stderr. */ if (pr3287_stderr.count > 0) { popup_an_error("%.*s", pr3287_stderr.count, pr3287_stderr.buf); } else { char buf[1024]; ssize_t nr; nr = read(pr3287_stderr.fd, buf, sizeof(buf)); if (nr > 0) { popup_an_error("%.*s", (int)nr, buf); } } /* Clean up I/O. */ pr3287_cleanup_io(); pr3287_state = PRS_NONE; /* Propagate the state. */ st_changed(ST_PRINTER, false); /* * If there is a pending request to start the printer, set a timeout to * start it. */ if (pr3287_delay_lu != NULL) { pr3287_state = PRS_DELAY; pr3287_delay_id = AddTimeOut(PRINTER_DELAY_MS, delayed_start); } } /* Terminate pr3287, with prejudice. */ static void pr3287_kill(ioid_t id _is_unused) { vtrace("Forcibly terminating printer session.\n"); /* Kill the process. */ #if defined(_WIN32) /*[*/ assert(pr3287_handle != NULL); TerminateProcess(pr3287_handle, 0); #else /*][*/ assert(pr3287_pid != -1); kill(-pr3287_pid, SIGTERM); #endif /*]*/ pr3287_kill_id = NULL_IOID; pr3287_state = PRS_TERMINATING; } /* Close the printer session. */ void pr3287_session_stop() { switch (pr3287_state) { case PRS_DELAY: vtrace("Canceling delayed printer session start.\n"); assert(pr3287_delay_id != NULL_IOID); RemoveTimeOut(pr3287_delay_id); pr3287_delay_id = NULL_IOID; assert(pr3287_delay_lu != NULL); Free(pr3287_delay_lu); pr3287_delay_lu = NULL; break; case PRS_RUNNING: /* Run through the logic below. */ break; default: /* Nothing interesting to do. */ return; } vtrace("Stopping printer session.\n"); pr3287_cleanup_io(); /* Set a timeout to terminate it not so gracefully. */ pr3287_state = PRS_SHUTDOWN; pr3287_kill_id = AddTimeOut(PRINTER_KILL_MS, pr3287_kill); } /* The emulator is exiting. Make sure the printer session is cleaned up. */ static void pr3287_exiting(bool b _is_unused) { if (pr3287_state >= PRS_RUNNING && pr3287_state < PRS_TERMINATING) { pr3287_kill(NULL_IOID); } } /* Return the current printer LU. */ static char * pr3287_saved_lu(void) { char *current = appres.interactive.printer_lu; return (current != NULL && !*current)? NULL: current; } /* Start a pr3287 session. */ static void pr3287_connected(void) { char *pr3287_lu = pr3287_saved_lu(); if (pr3287_lu != NULL && !pr3287_session_running()) { if (!strcmp(pr3287_lu, ".")) { if (IN_TN3270E) { /* Associate with TN3270E session. */ pr3287_session_start(NULL); } } else { /* Specific LU. */ pr3287_session_start(pr3287_lu); } } else if (!IN_E && pr3287_associated && pr3287_session_running()) { /* Stop an automatic associated printer. */ pr3287_session_stop(); } } /* Cancel any running or pending pr3287 session. */ static void pr3287_disconnected(void) { if (pr3287_session_running()) { /* * We're no longer in 3270 mode, so we can no longer have a * printer session. This may cause some fireworks if there is * a print job pending, so some sort of awful timeout may be * needed. */ pr3287_session_stop(); } else { /* * Forget state associated with printer start-up. */ if (pr3287_state == PRS_DELAY) { pr3287_state = PRS_NONE; } if (pr3287_delay_id != NULL_IOID) { RemoveTimeOut(pr3287_delay_id); pr3287_delay_id = NULL_IOID; } if (pr3287_delay_lu != NULL) { Free(pr3287_delay_lu); pr3287_delay_lu = NULL; } } } /* Host connect/disconnect/3270-mode event. */ static void pr3287_host_connect(bool connected _is_unused) { if (IN_3270) { pr3287_connected(); } else { pr3287_disconnected(); } } bool pr3287_session_running(void) { return (pr3287_state == PRS_RUNNING); } /* * Extended toggle for pr3287 Logical Unit. */ static bool pr3287_toggle_lu(const char *name, const char *value) { char *current = pr3287_saved_lu(); if (!*value) { value = NULL; } if ((current == NULL && value == NULL) || (current != NULL && value != NULL && !strcmp(current, value))) { /* No change. */ return true; } /* Save the new value. */ Replace(appres.interactive.printer_lu, (value != NULL)? NewString(value): NULL); /* Stop the current session. */ pr3287_disconnected(); /* Start a new session. */ if (value != NULL && IN_3270) { pr3287_connected(); } return true; } #if defined(_WIN32) /*[*/ /* * Extended toggle for pr3287 printer name. */ static bool pr3287_toggle_name(const char *name, const char *value) { char *current = get_resource(ResPrinterName); if (!*value) { value = NULL; } if ((current == NULL && value == NULL) || (current != NULL && value != NULL && !strcmp(current, value))) { /* No change. */ return true; } /* Save the new value. */ add_resource(ResPrinterName, NewString(value)); /* Stop the current session. */ pr3287_disconnected(); /* Start a new session. */ if (value != NULL && IN_3270) { pr3287_connected(); } return true; } /* * Extended toggle for pr3287 printer code page. */ static bool pr3287_toggle_codepage(const char *name, const char *value) { char *current = get_resource(ResPrinterCodepage); if (!*value) { value = NULL; } if ((current == NULL && value == NULL) || (current != NULL && value != NULL && !strcmp(current, value))) { /* No change. */ return true; } /* Save the new value. */ add_resource(ResPrinterCodepage, NewString(value)); /* Stop the current session. */ pr3287_disconnected(); /* Start a new session. */ if (value != NULL && IN_3270) { pr3287_connected(); } return true; } #endif /*]*/ /* * Extended toggle for pr3287 printer options. */ static bool pr3287_toggle_opts(const char *name, const char *value) { char *current = get_resource(ResPrinterOptions); if (!*value) { value = NULL; } if ((current == NULL && value == NULL) || (current != NULL && value != NULL && !strcmp(current, value))) { /* No change. */ return true; } /* Save the new value. */ add_resource(ResPrinterOptions, NewString(value)); /* Stop the current session. */ pr3287_disconnected(); /* Start a new session. */ if (value != NULL && IN_3270) { pr3287_connected(); } return true; } /* Return the running printer LU. */ const char * pr3287_session_lu(void) { if (!pr3287_session_running()) { return NULL; } return pr3287_running_lu; } suite3270-4.1/Common/pr3287_session_stubs.c000066400000000000000000000033311413735575200203630ustar00rootroot00000000000000/* * Copyright (c) 2015 Paul Mattes. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the names of Paul Mattes nor the names of his contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO * EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * pr3287_session_stubs.c * Stubs for pr3287 printer sessions. */ #include "globals.h" #include "pr3287_session.h" void pr3287_session_start(const char *lu _is_unused) { } void pr3287_session_stop(void) { } suite3270-4.1/Common/print_command.c000066400000000000000000000117771413735575200173020ustar00rootroot00000000000000/* * Copyright (c) 2020 Paul Mattes. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the names of Paul Mattes nor the names of his contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO * EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * print_command.c * Print command support. */ #include "globals.h" #include #include #include #include #include "popups.h" #include "print_command.h" #include "trace.h" #include "utils.h" #include "xio.h" /* List of active printer commands. */ typedef struct { llist_t link; ioid_t id; int from_cmd; void (*fail_callback)(void); } print_command_t; llist_t print_commands = LLIST_INIT(print_commands); /* Called when a printer command exits. */ static void printer_exited(ioid_t id, int status) { print_command_t *c; bool found = false; /* Find the associated record. */ FOREACH_LLIST(&print_commands, c, print_command_t *) { if (c->id == id) { found = true; break; } } FOREACH_LLIST_END(&print_commands, c, print_command_t *); assert(found); if (WIFEXITED(status)) { int exit_status = WEXITSTATUS(status); if (exit_status != 0) { char *errout = NULL; size_t nerr = 0, nerrbuf = 0; /* Dump the command's stderr with the error message. */ while (true) { size_t nr; nerrbuf += 1024; errout = Realloc(errout, nerrbuf); nr = read(c->from_cmd, errout + nerr, nerrbuf - nerr); if (nr <= 0) { break; } nerr += nr; } if (nerr > 0 && errout[nerr - 1] == '\n') { nerr--; } popup_an_error("%.*s%sPrinter process exited with status %d", (int)nerr, errout, nerr? "\n": "", exit_status); Free(errout); if (c->fail_callback != NULL) { (*c->fail_callback)(); } } } else if (WIFSIGNALED(status)) { popup_an_error("Printer process killed by signal %d", WTERMSIG(status)); if (c->fail_callback != NULL) { (*c->fail_callback)(); } } else { popup_an_error("Printer process stopped by unknown status %d", status); } close(c->from_cmd); llist_unlink(&c->link); Free(c); } /* Create an asynchronous printer session. */ FILE * printer_open(const char *command, void (*fail_callback)(void)) { int to_cmd[2] = { -1, -1 }; /* data to printer command */ int from_cmd[2] = { -1, -1 }; /* data from printer command */ pid_t pid; print_command_t *c; /* Create a pipe for the command's stdin. */ if (pipe(to_cmd) < 0) { popup_an_errno(errno, "pipe"); goto fail; return NULL; } fcntl(to_cmd[1], F_SETFD, 1); /* Create a pipe for the command's stdout and stderr. */ if (pipe(from_cmd) < 0) { popup_an_errno(errno, "pipe"); goto fail; } fcntl(from_cmd[0], F_SETFD, 1); /* Create the command. */ switch ((pid = fork())) { case -1: popup_an_errno(errno, "fork"); goto fail; case 0: /* child */ dup2(to_cmd[0], 0); dup2(from_cmd[1], 1); dup2(from_cmd[1], 2); execlp("/bin/sh", "sh", "-c", command, NULL); exit(1); break; default: /* parent */ close(to_cmd[0]); close(from_cmd[1]); break; } /* Keep track of the running command. */ c = (print_command_t *)Calloc(1, sizeof(print_command_t)); llist_init(&c->link); c->from_cmd = from_cmd[0]; c->id = AddChild(pid, printer_exited); c->fail_callback = fail_callback; llist_insert_before(&c->link, &print_commands); /* Return a file that can be written to. */ return fdopen(to_cmd[1], "w"); fail: /* Clean up partial work in the event of a failure. */ if (to_cmd[0] != -1) { close(to_cmd[0]); } if (to_cmd[1] != -1) { close(to_cmd[1]); } if (from_cmd[0] != -1) { close(from_cmd[0]); } if (from_cmd[1] != -1) { close(from_cmd[1]); } return NULL; } suite3270-4.1/Common/print_gui_stubs.c000066400000000000000000000033011413735575200176500ustar00rootroot00000000000000/* * Copyright (c) 1995-2009, 2013-2015 Paul Mattes. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the names of Paul Mattes nor the names of his contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO * EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * print_gui_stubs.c * Stubs for the print text GUI. */ #include "globals.h" #include "print_gui.h" bool print_text_gui(bool use_file _is_unused) { return false; } suite3270-4.1/Common/print_screen.c000066400000000000000000000343141413735575200171330ustar00rootroot00000000000000/* * Copyright (c) 1994-2021 Paul Mattes. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the names of Paul Mattes nor the names of his contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO * EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * print_screen.c * Screen printing functions. */ #include "globals.h" #include "appres.h" #include "3270ds.h" #include "ctlr.h" #include "ctlrc.h" #include #include #include "resources.h" #include "actions.h" #include "codepage.h" #include "fprint_screen.h" #include "lazya.h" #include "names.h" #include "popups.h" #include "print_command.h" #include "print_screen.h" #include "print_gui.h" #include "product.h" #include "task.h" #include "toggles.h" #include "trace.h" #include "unicodec.h" #include "utils.h" #if defined(_WIN32) /*[*/ # include # include # include "w3misc.h" # include "winprint.h" #endif /*]*/ /* Typedefs */ /* Saved context for a suspended PrintText(). */ typedef struct { FILE *f; /* temporary file */ ptype_t ptype; /* print type */ unsigned opts; /* options */ const char *caption; /* caption text */ const char *name; /* printer name */ char *temp_name; /* temporary file name */ } printtext_t; /* Globals */ /* Statics */ /** * Default caption. * * @return caption text */ char * default_caption(void) { static char *r = NULL; #if !defined(_WIN32) /*[*/ /* Unix version: username@host %T% */ char hostname[132]; char *user; gethostname(hostname, sizeof(hostname)); hostname[sizeof(hostname) - 1] = '\0'; user = getenv("USER"); if (user == NULL) { user = "(unknown)"; } if (r != NULL) { Free(r); } r = xs_buffer("%s @ %s %%T%%", user, hostname); #else /*][*/ char *username; char *computername; char *userdomain; char ComputerName[MAX_COMPUTERNAME_LENGTH + 1]; username = getenv("USERNAME"); if (username == NULL) { username = "(unknown)"; } computername = getenv("COMPUTERNAME"); if (computername == NULL) { DWORD size = MAX_COMPUTERNAME_LENGTH + 1; if (GetComputerName(ComputerName, &size)) { computername = ComputerName; } else { computername = "(unknown)"; } } userdomain = getenv("USERDOMAIN"); if (userdomain == NULL) { userdomain = "(unknown)"; } if (r != NULL) { Free(r); } if (strcasecmp(userdomain, computername)) { r = xs_buffer("%s\\%s @ %s %%T%%", userdomain, username, computername); } else { r = xs_buffer("%s @ %s %%T%%", username, computername); } #endif return r; } /* Extended-wait continue function for PrintText(). */ static void printtext_continue(void *context, bool cancel) { printtext_t *pt = (printtext_t *)context; fps_status_t status; if (cancel) { vtrace("PrintText canceled\n"); fclose(pt->f); if (pt->temp_name != NULL) { unlink(pt->temp_name); Free(pt->temp_name); } Free(pt); return; } status = fprint_screen(pt->f, pt->ptype, pt->opts | FPS_DIALOG_COMPLETE, pt->caption, pt->name, NULL); switch (status) { case FPS_STATUS_SUCCESS: case FPS_STATUS_SUCCESS_WRITTEN: vtrace("PrintText: printing succeeded.\n"); break; case FPS_STATUS_ERROR: popup_an_error("Screen print failed"); /* fall through */ case FPS_STATUS_CANCEL: if (status == FPS_STATUS_CANCEL) { vtrace("PrintText: printing canceled.\n"); } break; case FPS_STATUS_WAIT: /* Can't happen. */ assert(status != FPS_STATUS_WAIT); break; } fclose(pt->f); if (pt->temp_name != NULL) { unlink(pt->temp_name); Free(pt->temp_name); } Free(pt); } /* Print or save the contents of the screen as text. */ bool PrintText_action(ia_t ia, unsigned argc, const char **argv) { enum { PM_NONE, PM_FILE, PM_GDI, PM_COMMAND, PM_STRING } mode = PM_NONE; unsigned i; const char *name = NULL; bool secure = appres.secure; ptype_t ptype = P_NONE; bool replace = false; char *temp_name = NULL; unsigned opts = FPS_EVEN_IF_EMPTY; const char *caption = NULL; FILE *f; int fd = -1; fps_status_t status; printtext_t *pt; bool any_file_options = false; #if defined(_WIN32) /*[*/ bool any_gdi_options = false; #endif /*]*/ bool use_file = false; if (!appres.interactive.print_dialog) { opts |= FPS_NO_DIALOG; } action_debug(AnPrintText, ia, argc, argv); /* * Pick off optional arguments: * file directs the output to a file instead of a command; * must be the last keyword * html generates HTML output instead of ASCII text (and implies * 'file') * rtf generates RTF output instead of ASCII text (and implies * 'file') * gdi prints to a GDI printer (Windows only) * nodialog skip print dialog (Windows only) * this is the default for ws3270 * dialog use print dialog (Windows only) * this is the default for wc3270 * replace replace the file * append append to the file, if it exists (default) * modi print modified fields in italics * oia include the OIA in the output * caption "text" * Adds caption text above the screen * %T% is replaced by a timestamp * secure disables the pop-up dialog, if this action is invoked from * a keymap (x3270 only) * command directs the output to a command (this is the default, but * allows the command to be one of the other keywords); * must be the last keyword * string returns the data as a string */ for (i = 0; i < argc; i++) { if (!strcasecmp(argv[i], KwFile)) { if (mode != PM_NONE) { popup_an_error(AnPrintText "(): contradictory option '%s'", argv[i]); return false; } mode = PM_FILE; i++; break; } else if (!strcasecmp(argv[i], KwHtml)) { if (ptype != P_NONE) { popup_an_error(AnPrintText "(): contradictory option '%s'", argv[i]); return false; } ptype = P_HTML; } else if (!strcasecmp(argv[i], KwRtf)) { if (ptype != P_NONE) { popup_an_error(AnPrintText "(): contradictory option '%s'", argv[i]); return false; } ptype = P_RTF; } else if (!strcasecmp(argv[i], KwReplace)) { replace = true; any_file_options = true; } else if (!strcasecmp(argv[i], KwAppend)) { replace = false; any_file_options = true; } #if defined(_WIN32) /*[*/ else if (!strcasecmp(argv[i], KwGdi)) { if (mode != PM_NONE) { popup_an_error(AnPrintText "(): contradictory option '%s'", argv[i]); return false; } mode = PM_GDI; } else if (!strcasecmp(argv[i], KwNoDialog)) { opts |= FPS_NO_DIALOG; any_gdi_options = true; } else if (!strcasecmp(argv[i], KwDialog)) { opts &= ~FPS_NO_DIALOG; any_gdi_options = true; } #endif /*]*/ else if (!strcasecmp(argv[i], KwSecure)) { secure = true; } #if !defined(_WIN32) /*[*/ else if (!strcasecmp(argv[i], KwCommand)) { if (mode != PM_NONE) { popup_an_error(AnPrintText "(): contradictory option '%s'", argv[i]); return false; } mode = PM_COMMAND; i++; break; } #endif /*]*/ else if (!strcasecmp(argv[i], KwString)) { if (mode != PM_NONE) { popup_an_error(AnPrintText "(): contradictory option '%s'", argv[i]); return false; } mode = PM_STRING; } else if (!strcasecmp(argv[i], KwModi)) { opts |= FPS_MODIFIED_ITALIC; } else if (!strcasecmp(argv[i], KwCaption)) { if (i == argc - 1) { popup_an_error(AnPrintText "(): missing " KwCaption " parameter"); return false; } caption = argv[++i]; } else if (!strcasecmp(argv[i], KwOia)) { opts |= FPS_OIA; } else { break; } } /* Set the default mode, if none has been selected. */ if (mode == PM_NONE) { #if !defined(_WIN32) /*[*/ mode = PM_COMMAND; #else /*][*/ mode = PM_GDI; #endif /*]*/ } /* Root out some additional option conflicts. */ if (any_file_options && mode != PM_FILE) { popup_an_error(AnPrintText "(): " KwFile "-related option(s) given " "when not printing to file"); return false; } #if defined(_WIN32) /*[*/ if (any_gdi_options && mode != PM_GDI) { popup_an_error(AnPrintText "(): " KwGdi "-related option(s) given " "when not printing via GDI"); return false; } #endif /*]*/ /* Handle positional options. */ switch (argc - i) { case 0: /* Use the default command or printer. */ #if !defined(_WIN32) /*[*/ if (mode == PM_COMMAND) { name = get_resource(ResPrintTextCommand); if (name == NULL || !*name) { name = "lpr"; } } #else /*][*/ if (mode == PM_GDI) { name = get_resource(ResPrinterName); } #endif /*]*/ break; case 1: if (mode == PM_STRING) { popup_an_error(AnPrintText "(): extra argument " "with '" KwString "'"); return false; } name = argv[i]; break; default: popup_an_error(AnPrintText "(): extra arguments"); return false; } /* Infer the type from the file suffix. */ if (mode == PM_FILE && ptype == P_NONE && name != NULL) { size_t sl = strlen(name); if ((sl > 5 && !strcasecmp(name + sl - 5, ".html")) || (sl > 4 && !strcasecmp(name + sl - 4, ".htm"))) { ptype = P_HTML; } else if (sl > 4 && !strcasecmp(name + sl - 4, ".rtf")) { ptype = P_RTF; } } /* Figure out the default ptype, if still not selected. */ if (ptype == P_NONE) { if (mode == PM_GDI) { ptype = P_GDI; } else { ptype = P_TEXT; } } if (name != NULL && name[0] == '@') { /* * Starting the PrintTextCommand resource value with '@' * suppresses the pop-up dialog, as does setting the 'secure' * resource. */ secure = true; name++; } /* See if the GUI wants to handle it. */ if (!secure && print_text_gui(mode == PM_FILE)) { return true; } /* Do the real work. */ use_file = (mode == PM_FILE || mode == PM_STRING); if (use_file) { if (mode == PM_STRING) { #if defined(_WIN32) /*[*/ fd = win_mkstemp(&temp_name, ptype); #else /*][*/ temp_name = NewString("/tmp/x3hXXXXXX"); fd = mkstemp(temp_name); #endif /*]*/ if (fd < 0) { popup_an_errno(errno, "mkstemp"); return false; } f = fdopen(fd, "w+"); vtrace("PrintText: using '%s'\n", temp_name); } else { if (name == NULL || !*name) { popup_an_error(AnPrintText "(): missing filename"); return false; } f = fopen(name, replace? "w": "a"); } } else { #if !defined(_WIN32) /*[*/ const char *expanded_name; char *pct_e; if ((pct_e = strstr(name, "%E%")) != NULL) { expanded_name = lazyaf("%.*s%s%s", (int)(pct_e - name), name, programname, pct_e + 3); } else { expanded_name = name; } f = printer_open(expanded_name, NULL); #else /*][*/ fd = win_mkstemp(&temp_name, ptype); if (fd < 0) { popup_an_errno(errno, "mkstemp"); return false; } if (ptype == P_GDI) { f = fdopen(fd, "wb+"); } else { f = fdopen(fd, "w+"); } vtrace("PrintText: using '%s'\n", temp_name); #endif /*]*/ } if (f == NULL) { popup_an_errno(errno, AnPrintText "(): %s", name); if (fd >= 0) { close(fd); } if (temp_name) { unlink(temp_name); Free(temp_name); } return false; } /* Captions look nice on GDI, so create a default one. */ if (ptype == P_GDI && caption == NULL) { caption = default_caption(); } pt = (printtext_t *)Calloc(1, sizeof(printtext_t)); status = fprint_screen(f, ptype, opts, caption, name, pt); switch (status) { case FPS_STATUS_SUCCESS: case FPS_STATUS_SUCCESS_WRITTEN: vtrace("PrintText: printing succeeded.\n"); Free(pt); break; case FPS_STATUS_ERROR: popup_an_error("Screen print failed."); /* fall through */ case FPS_STATUS_CANCEL: if (status == FPS_STATUS_CANCEL) { vtrace("PrintText: printing canceled.\n"); } Free(pt); fclose(f); if (temp_name) { unlink(temp_name); Free(temp_name); } return false; case FPS_STATUS_WAIT: /* Waiting for asynchronous activity. */ assert(ptype == P_GDI); pt->f = f; pt->ptype = ptype; pt->opts = opts; pt->caption = caption; pt->name = name; pt->temp_name = temp_name; task_xwait(pt, printtext_continue, "printing"); return true; } if (mode == PM_STRING) { char buf[8192]; /* Print to string. */ fflush(f); rewind(f); while (fgets(buf, sizeof(buf), f) != NULL) { action_output("%s", buf); } fclose(f); unlink(temp_name); Free(temp_name); return true; } if (use_file) { /* Print to specified file. */ fclose(f); return true; } /* Print to printer. */ #if defined(_WIN32) /*[*/ fclose(f); unlink(temp_name); if (appres.interactive.do_confirms) { popup_an_info("Screen image printing.\n"); } #endif /*]*/ Free(temp_name); return true; } /** * Print screen module registration. */ void print_screen_register(void) { static action_table_t print_text_actions[] = { { AnPrintText, PrintText_action, ACTION_KE }, }; /* Register the actions. */ register_actions(print_text_actions, array_count(print_text_actions)); } suite3270-4.1/Common/product_stubs1.c000066400000000000000000000033121413735575200174130ustar00rootroot00000000000000/* * Copyright (c) 2015 Paul Mattes. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of Paul Mattes nor his contributors may be used * to endorse or promote products derived from this software without * specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. */ /* * product_stubs1.c * Stub functions for product information. */ #include "globals.h" #include "product.h" /* By default, there is no display. */ bool product_has_display(void) { return false; } suite3270-4.1/Common/product_stubs2.c000066400000000000000000000033671413735575200174260ustar00rootroot00000000000000/* * Copyright (c) 2015 Paul Mattes. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of Paul Mattes nor his contributors may be used * to endorse or promote products derived from this software without * specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. */ /* * product_stubs2.c * Stub functions for product information. */ #include "globals.h" #include "product.h" /* By default, there is are no product-specific build options. */ const char * product_specific_build_options(void) { return NULL; } suite3270-4.1/Common/product_stubs3.c000066400000000000000000000032451413735575200174220ustar00rootroot00000000000000/* * Copyright (c) 2015 Paul Mattes. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of Paul Mattes nor his contributors may be used * to endorse or promote products derived from this software without * specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. */ /* * product_stubs3.c * Stub functions for product information. */ #include "globals.h" #include "product.h" bool product_auto_oversize(void) { return false; } suite3270-4.1/Common/product_stubs4.c000066400000000000000000000032311413735575200174160ustar00rootroot00000000000000/* * Copyright (c) 2015 Paul Mattes. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of Paul Mattes nor his contributors may be used * to endorse or promote products derived from this software without * specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. */ /* * product_stubs4.c * Stub functions for product information. */ #include "globals.h" #include "product.h" void product_set_appres_defaults(void) { } suite3270-4.1/Common/proxy.c000066400000000000000000000251571413735575200156260ustar00rootroot00000000000000/* * Copyright (c) 2007-2009, 2013-2015, 2018-2020 Paul Mattes. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the names of Paul Mattes nor the names of his contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO * EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * proxy.c * This module implements various kinds of proxies. */ #include "globals.h" #if !defined(_WIN32) /*[*/ #include #include #include #include #endif /*]*/ #include "popups.h" #include "proxy.h" #include "proxy_names.h" #include "proxy_private.h" #include "proxy_passthru.h" #include "proxy_http.h" #include "proxy_names.h" #include "proxy_telnet.h" #include "proxy_socks4.h" #include "proxy_socks5.h" #include "task.h" #include "trace.h" #include "utils.h" #include "w3misc.h" #define PROXY_MSEC (15 * 1000) /* proxy type names -- keep these in sync with proxytype_t! */ const char *type_name[PT_MAX] = { "unknown", PROXY_PASSTHRU, PROXY_HTTP, PROXY_TELNET, PROXY_SOCKS4, PROXY_SOCKS4A, PROXY_SOCKS5, PROXY_SOCKS5D }; int proxy_ports[PT_MAX] = { 0, NPORT_PASSTHRU, NPORT_HTTP, 0, NPORT_SOCKS4, NPORT_SOCKS4A, NPORT_SOCKS5, NPORT_SOCKS5D }; static bool parse_host_port(char *s, char **puser, char **phost, char **pport); /* Continue functions. */ static continue_t *continues[PT_MAX] = { NULL, NULL, proxy_http_continue, NULL, proxy_socks4_continue, proxy_socks4_continue, proxy_socks5_continue, proxy_socks5_continue }; /* Close functions. */ typedef void close_t(void); static close_t *closes[PT_MAX] = { NULL, NULL, proxy_http_close, NULL, proxy_socks4_close, proxy_socks4_close, proxy_socks5_close, proxy_socks5_close }; static proxytype_t proxy_type = PT_NONE; static bool proxy_pending = false; static ioid_t proxy_timeout_id = NULL_IOID; /* Return the name for a given proxy type. */ const char * proxy_type_name(proxytype_t type) { if (type <= PT_NONE || type >= PT_MAX) { return "unknown"; } else { return type_name[type]; } } /* Return whether a proxy type accepts a username. */ bool proxy_takes_username(proxytype_t type) { switch (type) { case PT_HTTP: case PT_SOCKS4: case PT_SOCKS4A: case PT_SOCKS5: case PT_SOCKS5D: return true; default: return false; } } /* Return the default port for a proxy type. */ int proxy_default_port(proxytype_t type) { if (type <= PT_NONE || type >= PT_MAX) { return 0; } else { return proxy_ports[type]; } } /* * Resolve the type, hostname and port for a proxy. * Returns -1 for failure, 0 for no proxy, >0 (the proxy type) for success. */ int proxy_setup(const char *proxy, char **puser, char **phost, char **pport) { char *colon; size_t sl; if (proxy == NULL) { return PT_NONE; } if ((colon = strchr(proxy, ':')) == NULL || (colon == proxy)) { popup_an_error("Invalid proxy syntax"); return -1; } sl = colon - proxy; if (sl == strlen(PROXY_PASSTHRU) && !strncasecmp(proxy, PROXY_PASSTHRU, sl)) { if (!parse_host_port(colon + 1, NULL, phost, pport)) { return -1; } if (*pport == NULL) { *pport = NewString(PORT_PASSTHRU); } return proxy_type = PT_PASSTHRU; } if (sl == strlen(PROXY_HTTP) && !strncasecmp(proxy, PROXY_HTTP, sl)) { if (!parse_host_port(colon + 1, puser, phost, pport)) { return -1; } if (*pport == NULL) { *pport = NewString(PORT_HTTP); } return proxy_type = PT_HTTP; } if (sl == strlen(PROXY_TELNET) && !strncasecmp(proxy, PROXY_TELNET, sl)) { if (!parse_host_port(colon + 1, NULL, phost, pport)) { return -1; } if (*pport == NULL) { popup_an_error("Must specify port for telnet proxy"); return -1; } return proxy_type = PT_TELNET; } if (sl == strlen(PROXY_SOCKS4) && !strncasecmp(proxy, PROXY_SOCKS4, sl)) { if (!parse_host_port(colon + 1, puser, phost, pport)) { return -1; } if (*pport == NULL) { *pport = NewString(PORT_SOCKS4); } return proxy_type = PT_SOCKS4; } if (sl == strlen(PROXY_SOCKS4A) && !strncasecmp(proxy, PROXY_SOCKS4A, sl)) { if (!parse_host_port(colon + 1, puser, phost, pport)) { return -1; } if (*pport == NULL) { *pport = NewString(PORT_SOCKS4A); } return proxy_type = PT_SOCKS4A; } if (sl == strlen(PROXY_SOCKS5) && !strncasecmp(proxy, PROXY_SOCKS5, sl)) { if (!parse_host_port(colon + 1, puser, phost, pport)) { return -1; } if (*pport == NULL) { *pport = NewString(PORT_SOCKS5); } return proxy_type = PT_SOCKS5; } if (sl == strlen(PROXY_SOCKS5D) && !strncasecmp(proxy, PROXY_SOCKS5D, sl)) { if (!parse_host_port(colon + 1, puser, phost, pport)) { return -1; } if (*pport == NULL) { *pport = NewString(PORT_SOCKS5D); } return proxy_type = PT_SOCKS5D; } popup_an_error("Invalid proxy type '%.*s'", (int)sl, proxy); return -1; } /* * Parse [user:password@]host[:port] from a string. * 'host' can be in square brackets to allow numeric IPv6 addresses. * Returns the host name and port name in heap memory. * Returns false for failure, true for success. */ static bool parse_host_port(char *s, char **puser, char **phost, char **pport) { char *at; char *h; char *colon; char *hstart; size_t hlen; /* Check for 'username:password@' first. */ if ((at = strchr(s, '@')) != NULL) { if (puser == NULL) { popup_an_error("Proxy type does not support username"); return false; } if (at == s) { popup_an_error("Invalid proxy username syntax"); return false; } h = at + 1; } else { h = s; } if (*h == '[') { char *rbrack; /* Hostname in square brackets. */ hstart = h + 1; rbrack = strchr(h, ']'); if (rbrack == NULL || rbrack == h + 1 || (*(rbrack + 1) != '\0' && *(rbrack + 1) != ':')) { popup_an_error("Invalid proxy hostname syntax"); return false; } if (*(rbrack + 1) == ':') { colon = rbrack + 1; } else { colon = NULL; } hlen = rbrack - (h + 1); } else { hstart = h; colon = strchr(h, ':'); if (colon == h) { popup_an_error("Invalid proxy hostname syntax"); return false; } if (colon == NULL) { hlen = strlen(h); } else { hlen = colon - h; } } /* Parse the port. */ if (colon == NULL || !*(colon + 1)) { *pport = NULL; } else { *pport = NewString(colon + 1); } /* Copy out the hostname. */ *phost = Malloc(hlen + 1); strncpy(*phost, hstart, hlen); (*phost)[hlen] = '\0'; /* Copy out the username. */ if (puser != NULL) { if (at != NULL) { *puser = Malloc((at - s) + 1); strncpy(*puser, s, at - s); (*puser)[at - s] = '\0'; } else { *puser = NULL; } } else if (at != NULL) { popup_an_error("Invalid proxy hostname syntax (user@ not supported for this type"); return false; } return true; } /* * Proxy negotiation timed out. */ static void proxy_timeout(ioid_t id _is_unused) { proxy_timeout_id = NULL_IOID; connect_error("%s proxy timed out", type_name[proxy_type]); } /* * Negotiate with the proxy server. */ proxy_negotiate_ret_t proxy_negotiate(socket_t fd, const char *user, const char *host, unsigned short port, bool blocking) { proxy_negotiate_ret_t ret; if (proxy_timeout_id != NULL_IOID) { RemoveTimeOut(proxy_timeout_id); proxy_timeout_id = NULL_IOID; } switch (proxy_type) { case PT_NONE: ret = PX_SUCCESS; break; case PT_PASSTHRU: ret = proxy_passthru(fd, host, port); break; case PT_HTTP: ret = proxy_http(fd, user, host, port); break; case PT_TELNET: ret = proxy_telnet(fd, host, port); break; case PT_SOCKS4: ret = proxy_socks4(fd, user, host, port, false); break; case PT_SOCKS4A: ret = proxy_socks4(fd, user, host, port, true); break; case PT_SOCKS5: ret = proxy_socks5(fd, user, host, port, false); break; case PT_SOCKS5D: ret = proxy_socks5(fd, user, host, port, true); break; default: ret = PX_FAILURE; break; } proxy_pending = (ret == PX_WANTMORE); if (proxy_pending) { if (blocking) { do { fd_set rfds; struct timeval tv; /* Wait for more input. */ FD_ZERO(&rfds); FD_SET(fd, &rfds); tv.tv_sec = PROXY_MSEC / 1000; tv.tv_usec = (PROXY_MSEC % 1000) * 10; if (select((int)(fd + 1), &rfds, NULL, NULL, &tv) <= 0) { popup_an_error("%s proxy timeout", type_name[proxy_type]); return PX_FAILURE; } ret = proxy_continue(); } while (ret == PX_WANTMORE); } else { /* Set a timeout in case the input never arrives. */ proxy_timeout_id = AddTimeOut(PROXY_MSEC, proxy_timeout); } } if (ret == PX_SUCCESS) { proxy_close(); } return ret; } /* * Continue proxy negotiation. */ proxy_negotiate_ret_t proxy_continue(void) { proxy_negotiate_ret_t ret; if (proxy_type <= 0 || proxy_type >= PT_MAX || continues[proxy_type] == NULL || !proxy_pending) { popup_an_error("proxy_continue: wrong state"); return PX_FAILURE; } ret = (*continues[proxy_type])(); if (ret == PX_SUCCESS) { proxy_close(); } return ret; } /* * Clean up pending proxy state. */ void proxy_close(void) { if (proxy_type > 0 && proxy_type < PT_MAX && closes[proxy_type] != NULL) { (*closes[proxy_type])(); } proxy_type = PT_NONE; proxy_pending = false; if (proxy_timeout_id != NULL_IOID) { RemoveTimeOut(proxy_timeout_id); proxy_timeout_id = NULL_IOID; } } suite3270-4.1/Common/proxy_http.c000066400000000000000000000131701413735575200166550ustar00rootroot00000000000000/* * Copyright (c) 2007-2009, 2013-2015, 2018-2019 Paul Mattes. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the names of Paul Mattes nor the names of his contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO * EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * proxy_http.c * RFC 2817 HTTP CONNECT tunnel proxy. */ #include "globals.h" #if !defined(_WIN32) /*[*/ # include # include # include # include # include #endif /*]*/ #include "base64.h" #include "lazya.h" #include "popups.h" #include "proxy.h" #include "proxy_private.h" #include "proxy_http.h" #include "resolver.h" #include "telnet_core.h" #include "trace.h" #include "utils.h" #include "w3misc.h" #define RBUF 1024 /* Proxy state. */ static struct { socket_t fd; unsigned char *rbuf; size_t nread; } ps = { INVALID_SOCKET, NULL, 0 }; /* HTTP (RFC 2817 CONNECT tunnel) proxy. */ proxy_negotiate_ret_t proxy_http(socket_t fd, const char *user, const char *host, unsigned short port) { char *sbuf; char *colon; ps.fd = fd; ps.rbuf = Malloc(RBUF); ps.nread = 0; /* Send the CONNECT request. */ colon = strchr(host, ':'); sbuf = xs_buffer("CONNECT %s%s%s:%u HTTP/1.1\r\n", (colon? "[": ""), host, (colon? "]": ""), port); vtrace("HTTP Proxy: xmit '%.*s'\n", (int)(strlen(sbuf) - 2), sbuf); trace_netdata('>', (unsigned char *)sbuf, strlen(sbuf)); if (send(fd, sbuf, (int)strlen(sbuf), 0) < 0) { popup_a_sockerr("HTTP Proxy: send error"); Free(sbuf); return PX_FAILURE; } Free(sbuf); sbuf = xs_buffer("Host: %s%s%s:%u\r\n", (colon? "[": ""), host, (colon? "]": ""), port); vtrace("HTTP Proxy: xmit '%.*s'\n", (int)(strlen(sbuf) - 2), sbuf); trace_netdata('>', (unsigned char *)sbuf, strlen(sbuf)); if (send(fd, sbuf, (int)strlen(sbuf), 0) < 0) { popup_a_sockerr("HTTP Proxy: send error"); Free(sbuf); return PX_FAILURE; } if (user != NULL) { Free(sbuf); sbuf = xs_buffer("Proxy-Authorization: Basic %s\r\n", lazya(base64_encode(user))); vtrace("HTTP Proxy: xmit '%.*s'\n", (int)(strlen(sbuf) - 2), sbuf); trace_netdata('>', (unsigned char *)sbuf, strlen(sbuf)); if (send(fd, sbuf, (int)strlen(sbuf), 0) < 0) { popup_a_sockerr("HTTP Proxy: send error"); Free(sbuf); return PX_FAILURE; } } Free(sbuf); sbuf = "\r\n"; vtrace("HTTP Proxy: xmit ''\n"); trace_netdata('>', (unsigned char *)sbuf, strlen(sbuf)); if (send(fd, sbuf, (int)strlen(sbuf), 0) < 0) { popup_a_sockerr("HTTP Proxy: send error"); return PX_FAILURE; } return PX_WANTMORE; } /* HTTP proxy continuation. */ proxy_negotiate_ret_t proxy_http_continue(void) { char *space; bool nl = false; /* * Process the reply. * Read a byte at a time until two \n or EOF. */ for (;;) { ssize_t nr = recv(ps.fd, (char *)&ps.rbuf[ps.nread], 1, 0); if (nr < 0) { if (socket_errno() == SE_EWOULDBLOCK) { if (ps.nread) { trace_netdata('<', ps.rbuf, ps.nread); } return PX_WANTMORE; } popup_a_sockerr("HTTP Proxy: receive error"); if (ps.nread) { trace_netdata('<', ps.rbuf, ps.nread); } return PX_FAILURE; } if (nr == 0) { if (ps.nread) { trace_netdata('<', ps.rbuf, ps.nread); } popup_an_error("HTTP Proxy: unexpected EOF"); return PX_FAILURE; } if (++ps.nread >= RBUF) { ps.nread = RBUF - 1; break; } if (ps.nread && ps.rbuf[ps.nread - 1] == '\n') { if (nl) { break; } nl = true; } } trace_netdata('<', ps.rbuf, ps.nread); if (ps.rbuf[ps.nread - 1] == '\n') { --ps.nread; } if (ps.rbuf[ps.nread - 1] == '\r') { --ps.nread; } if (ps.rbuf[ps.nread - 1] == '\n') { --ps.nread; } if (ps.rbuf[ps.nread - 1] == '\r') { --ps.nread; } ps.rbuf[ps.nread] = '\0'; vtrace("HTTP Proxy: recv '%s'\n", (char *)ps.rbuf); if (strncmp((char *)ps.rbuf, "HTTP/", 5) || (space = strchr((char *)ps.rbuf, ' ')) == NULL) { popup_an_error("HTTP Proxy: unrecognized reply"); return PX_FAILURE; } if (*(space + 1) != '2') { popup_an_error("HTTP Proxy: CONNECT failed:\n%s", (char *)ps.rbuf); return PX_FAILURE; } return PX_SUCCESS; } /* * Close the HTTP proxy. */ void proxy_http_close(void) { ps.fd = INVALID_SOCKET; Replace(ps.rbuf, NULL); ps.nread = 0; } suite3270-4.1/Common/proxy_passthru.c000066400000000000000000000043521413735575200175510ustar00rootroot00000000000000/* * Copyright (c) 2007-2009, 2013-2015, 2018-2019 Paul Mattes. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the names of Paul Mattes nor the names of his contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO * EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * proxy_passthru.c * Sun PASSTHRU proxy. */ #include "globals.h" #include "lazya.h" #include "proxy.h" #include "proxy_private.h" #include "proxy_passthru.h" #include "telnet_core.h" #include "trace.h" #include "utils.h" /* Sun PASSTHRU proxy. */ proxy_negotiate_ret_t proxy_passthru(socket_t fd, const char *host, unsigned short port) { char *sbuf = xs_buffer("%s %u\r\n", host, port); vtrace("Passthru Proxy: xmit '%.*s'", (int)(strlen(sbuf) - 2), sbuf); trace_netdata('>', (unsigned char *)sbuf, strlen(sbuf)); if (send(fd, sbuf, (int)strlen(sbuf), 0) < 0) { popup_a_sockerr("Passthru Proxy: send error"); Free(sbuf); return PX_FAILURE; } Free(sbuf); return PX_SUCCESS; } suite3270-4.1/Common/proxy_socks4.c000066400000000000000000000133541413735575200171100ustar00rootroot00000000000000/* * Copyright (c) 2007-2009, 2013-2015, 2018-2019 Paul Mattes. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the names of Paul Mattes nor the names of his contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO * EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * proxy_socks4.c * SOCKS version 4 proxy. */ #include "globals.h" #if !defined(_WIN32) /*[*/ # include # include # include # include # include #endif /*]*/ #include "3270ds.h" #include "lazya.h" #include "popups.h" #include "proxy.h" #include "proxy_private.h" #include "proxy_socks4.h" #include "resolver.h" #include "telnet_core.h" #include "trace.h" #include "utils.h" #include "w3misc.h" #define REPLY_LEN 8 static struct { socket_t fd; bool use_4a; size_t nread; unsigned char rbuf[REPLY_LEN]; } ps = { INVALID_SOCKET, false, 0 }; /* SOCKS version 4 proxy. */ proxy_negotiate_ret_t proxy_socks4(socket_t fd, const char *user, const char *host, unsigned short port, bool force_a) { struct hostent *hp; struct in_addr ipaddr; const char *ruser; char *sbuf; char *s; ps.fd = fd; ps.use_4a = false; ps.nread = 0; /* Resolve the hostname to an IPv4 address. */ if (force_a) { ps.use_4a = true; } else { hp = gethostbyname(host); if (hp != NULL) { memcpy(&ipaddr, hp->h_addr, hp->h_length); } else { ipaddr.s_addr = inet_addr(host); if (ipaddr.s_addr == (in_addr_t)-1) { ps.use_4a = true; } } } /* Resolve the username. */ if (user != NULL) { ruser = user; } else { #if !defined(_WIN32) /*[*/ ruser = getenv("USER"); #else /*][*/ ruser = getenv("USERNAME"); #endif /*]*/ if (ruser == NULL) { ruser = "nobody"; } } /* Send the request to the server. */ if (ps.use_4a) { sbuf = Malloc(32 + strlen(ruser) + strlen(host)); s = sbuf; *s++ = 0x04; *s++ = 0x01; SET16(s, port); SET32(s, 0x00000001); strcpy(s, ruser); s += strlen(ruser) + 1; strcpy(s, host); s += strlen(host) + 1; vtrace("SOCKS4 Proxy: version 4 connect port %u address 0.0.0.1 user " "'%s' host '%s'\n", port, ruser, host); trace_netdata('>', (unsigned char *)sbuf, s - sbuf); if (send(fd, sbuf, (int)(s - sbuf), 0) < 0) { popup_a_sockerr("SOCKS4 Proxy: send error"); Free(sbuf); return PX_FAILURE; } Free(sbuf); } else { unsigned long u; sbuf = Malloc(32 + strlen(ruser)); s = sbuf; *s++ = 0x04; *s++ = 0x01; SET16(s, port); u = ntohl(ipaddr.s_addr); SET32(s, u); strcpy(s, ruser); s += strlen(ruser) + 1; vtrace("SOCKS4 Proxy: xmit version 4 connect port %u address %s user " "'%s'\n", port, inet_ntoa(ipaddr), ruser); trace_netdata('>', (unsigned char *)sbuf, s - sbuf); if (send(fd, sbuf, (int)(s - sbuf), 0) < 0) { Free(sbuf); popup_a_sockerr("SOCKS4 Proxy: send error"); return PX_FAILURE; } Free(sbuf); } return PX_WANTMORE; } /* SOCKS version 4 continuation. */ proxy_negotiate_ret_t proxy_socks4_continue(void) { /* * Process the reply. * Read the response. */ for (;;) { ssize_t nr = recv(ps.fd, (char *)&ps.rbuf[ps.nread], 1, 0); if (nr < 0) { if (socket_errno() == SE_EWOULDBLOCK) { if (ps.nread) { trace_netdata('<', ps.rbuf, ps.nread); } return PX_WANTMORE; } popup_a_sockerr("SOCKS4 Proxy: receive error"); return PX_FAILURE; } if (nr == 0) { if (ps.nread) { trace_netdata('<', ps.rbuf, ps.nread); } popup_an_error("SOCKS4 Proxy: unexpected EOF"); return PX_FAILURE; /* XXX: was break */ } if (++ps.nread >= REPLY_LEN) { break; } } trace_netdata('<', ps.rbuf, ps.nread); if (ps.use_4a) { struct in_addr a; unsigned short rport = (ps.rbuf[2] << 8) | ps.rbuf[3]; memcpy(&a, &ps.rbuf[4], 4); vtrace("SOCKS4 Proxy: recv status 0x%02x port %u address %s\n", ps.rbuf[1], rport, inet_ntoa(a)); } else { vtrace("SOCKS4 Proxy: recv status 0x%02x\n", ps.rbuf[1]); } switch (ps.rbuf[1]) { case 0x5a: break; case 0x5b: popup_an_error("SOCKS4 Proxy: request rejected or failed"); return PX_FAILURE; case 0x5c: popup_an_error("SOCKS4 Proxy: client is not reachable"); return PX_FAILURE; case 0x5d: popup_an_error("SOCKS4 Proxy: userid error"); return PX_FAILURE; default: popup_an_error("SOCKS4 Proxy: unknown status 0x%02x", ps.rbuf[1]); return PX_FAILURE; } return PX_SUCCESS; } void proxy_socks4_close(void) { ps.fd = INVALID_SOCKET; ps.use_4a = false; ps.nread = 0; } suite3270-4.1/Common/proxy_socks5.c000066400000000000000000000326471413735575200171170ustar00rootroot00000000000000/* * Copyright (c) 2007-2009, 2013-2015, 2018-2019 Paul Mattes. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the names of Paul Mattes nor the names of his contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO * EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * proxy_socks5.c * SOCKS version 5 proxy. */ #include "globals.h" #if !defined(_WIN32) /*[*/ # include # include # include # include # include #endif /*]*/ #include "3270ds.h" #include "lazya.h" #include "popups.h" #include "proxy.h" #include "proxy_private.h" #include "proxy_socks5.h" #include "resolver.h" #include "telnet_core.h" #include "trace.h" #include "utils.h" #include "w3misc.h" /* Pending proxy state. */ #define REPLY_LEN 2 enum phase { PROCESS_AUTH_REPLY, PROCESS_CRED_REPLY, PROCESS_CONNECT_REPLY }; struct { socket_t fd; bool use_name; unsigned short port; unsigned char rbuf[REPLY_LEN]; size_t nread; char *host; char *user; int n2read; enum phase phase; unsigned char *vrbuf; union { struct sockaddr sa; struct sockaddr_in sin; #if defined(X3270_IPV6) /*[*/ struct sockaddr_in6 sin6; #endif /*]*/ } ha; } ps = { INVALID_SOCKET }; static continue_t proxy_socks5_process_auth_reply; static continue_t proxy_socks5_process_cred_reply; static continue_t proxy_socks5_process_connect_reply; static continue_t *proxy_socks5_continues[] = { proxy_socks5_process_auth_reply, proxy_socks5_process_cred_reply, proxy_socks5_process_connect_reply }; static proxy_negotiate_ret_t proxy_socks5_send_connect(void); /* SOCKS version 5 (RFC 1928) proxy. */ proxy_negotiate_ret_t proxy_socks5(socket_t fd, const char *user, const char *host, unsigned short port, bool force_d) { socklen_t ha_len = 0; unsigned char sbuf[8]; unsigned short rport; int nw0; ps.fd = fd; ps.port = port; if (force_d) { ps.use_name = true; } else { char *errmsg; rhp_t rv; int nr; /* Resolve the hostname. */ /* XXX: This is blocking. Crud. */ rv = resolve_host_and_port(host, NULL, &rport, &ps.ha.sa, sizeof(ps.ha), &ha_len, &errmsg, 1, &nr); if (rv == RHP_CANNOT_RESOLVE) { ps.use_name = true; } else if (RHP_IS_ERROR(rv)) { popup_an_error("SOCKS5 proxy: %s/%u: %s", host, port, errmsg); return PX_FAILURE; } } if (user != NULL) { ps.user = NewString(user); } ps.host = NewString(host); /* Send the authentication request to the server. */ if (user != NULL) { memcpy((char *)sbuf, "\005\002\000\002", 4); vtrace("SOCKS5 Proxy: xmit version 5 nmethods 2 (no auth, " "username/password)\n"); nw0 = 4; } else { strcpy((char *)sbuf, "\005\001\000"); vtrace("SOCKS5 Proxy: xmit version 5 nmethods 1 (no auth)\n"); nw0 = 3; } trace_netdata('>', sbuf, nw0); if (send(fd, (char *)sbuf, nw0, 0) < 0) { popup_a_sockerr("SOCKS5 Proxy: send error"); return PX_FAILURE; } ps.nread = 0; ps.phase = PROCESS_AUTH_REPLY; return PX_WANTMORE; } /* Process a SOCKS5 authentication reply. */ static proxy_negotiate_ret_t proxy_socks5_process_auth_reply(void) { /* * Wait for the server reply. * Read 2 bytes of response. */ for (;;) { ssize_t nr = recv(ps.fd, (char *)&ps.rbuf[ps.nread], 1, 0); if (nr < 0) { if (socket_errno() == SE_EWOULDBLOCK) { if (ps.nread) { trace_netdata('<', ps.rbuf, ps.nread); } return PX_WANTMORE; } popup_a_sockerr("SOCKS5 Proxy: receive error"); if (ps.nread) { trace_netdata('<', ps.rbuf, ps.nread); } return PX_FAILURE; } if (nr == 0) { popup_an_error("SOCKS5 Proxy: unexpected EOF"); if (ps.nread) { trace_netdata('<', ps.rbuf, ps.nread); } return PX_FAILURE; } if (++ps.nread >= REPLY_LEN) { break; } } trace_netdata('<', ps.rbuf, ps.nread); if (ps.rbuf[0] != 0x05) { popup_an_error("SOCKS5 Proxy: bad authentication response"); return PX_FAILURE; } vtrace("SOCKS5 Proxy: recv version %d method %d\n", ps.rbuf[0], ps.rbuf[1]); if (ps.rbuf[1] == 0xff) { popup_an_error("SOCKS5 Proxy: authentication failure"); return PX_FAILURE; } if (ps.user == NULL && ps.rbuf[1] != 0x00) { popup_an_error("SOCKS5 Proxy: bad authentication response"); return PX_FAILURE; } if (ps.user != NULL && (ps.rbuf[1] != 0x00 && ps.rbuf[1] != 0x02)) { popup_an_error("SOCKS5 Proxy: bad authentication response"); return PX_FAILURE; } /* Send the username/password. */ if (ps.rbuf[1] == 0x02) { unsigned char upbuf[1 + 1 + 255 + 1 + 255 + 1]; char *colon = strchr(ps.user, ':'); if (colon == NULL || colon == ps.user || *(colon + 1) == '\0' || colon - ps.user > 255 || strlen(colon + 1) > 255) { popup_an_error("SOCKS5 Proxy: invalid username:password"); return PX_FAILURE; } sprintf((char *)upbuf, "\001%c%.*s%c%s", (int)(colon - ps.user), /* ULEN */ (int)(colon - ps.user), /* length of user */ ps.user, /* user */ (int)strlen(colon + 1), /* length of password */ colon + 1); /* password */ vtrace("SOCKS5 Proxy: xmit version 1 ulen %d username '%.*s' plen %d " "password '%s'\n", (int)(colon - ps.user), (int)(colon - ps.user), ps.user, (int)strlen(colon + 1), colon + 1); trace_netdata('>', upbuf, strlen((char *)upbuf)); if (send(ps.fd, (char *)upbuf, strlen((char *)upbuf), 0) < 0) { popup_a_sockerr("SOCKS5 Proxy: send error"); return PX_FAILURE; } ps.nread = 0; ps.phase = PROCESS_CRED_REPLY; return PX_WANTMORE; } return proxy_socks5_send_connect(); } /* Process a reply to our sending the username and password. */ static proxy_negotiate_ret_t proxy_socks5_process_cred_reply(void) { /* Read the response. */ for (;;) { ssize_t nr = recv(ps.fd, (char *)&ps.rbuf[ps.nread], 1, 0); if (nr < 0) { if (socket_errno() == SE_EWOULDBLOCK) { if (ps.nread) { trace_netdata('<', ps.rbuf, ps.nread); } return PX_WANTMORE; } popup_a_sockerr("SOCKS5 Proxy: receive error"); if (ps.nread) { trace_netdata('<', ps.rbuf, ps.nread); } return PX_FAILURE; } if (nr == 0) { popup_an_error("SOCKS5 Proxy: unexpected EOF"); if (ps.nread) { trace_netdata('<', ps.rbuf, ps.nread); } return PX_FAILURE; } if (++ps.nread >= REPLY_LEN) { break; } } trace_netdata('<', ps.rbuf, ps.nread); if (ps.rbuf[0] != 0x01) { popup_an_error("SOCKS5 Proxy: bad username/password " "authentication response type, expected 1, got %d", ps.rbuf[0]); return PX_FAILURE; } if (ps.rbuf[1] != 0x00) { popup_an_error("SOCKS5 Proxy: bad username/password response %d", ps.rbuf[1]); return PX_FAILURE; } return proxy_socks5_send_connect(); } /* Send a connect request to the server. */ static proxy_negotiate_ret_t proxy_socks5_send_connect(void) { /* Send the request to the server. */ char nbuf[256]; char *sbuf = Malloc(32 + strlen(ps.host)); char *s = sbuf; *s++ = 0x05; /* protocol version 5 */ *s++ = 0x01; /* CONNECT */ *s++ = 0x00; /* reserved */ if (ps.use_name) { *s++ = 0x03; /* domain name */ *s++ = (char)strlen(ps.host); strcpy(s, ps.host); s += strlen(ps.host); } else if (ps.ha.sa.sa_family == AF_INET) { *s++ = 0x01; /* IPv4 */ memcpy(s, &ps.ha.sin.sin_addr, 4); s += 4; strcpy(nbuf, inet_ntoa(ps.ha.sin.sin_addr)); #if defined(X3270_IPV6) /*[*/ } else { *s++ = 0x04; /* IPv6 */ memcpy(s, &ps.ha.sin6.sin6_addr, sizeof(struct in6_addr)); s += sizeof(struct in6_addr); inet_ntop(AF_INET6, &ps.ha.sin6.sin6_addr, nbuf, sizeof(nbuf)); #endif /*]*/ } SET16(s, ps.port); vtrace("SOCKS5 Proxy: xmit version 5 connect %s %s port %u\n", ps.use_name? "domainname": ((ps.ha.sa.sa_family == AF_INET)? "IPv4": "IPv6"), ps.use_name? ps.host: nbuf, ps.port); trace_netdata('>', (unsigned char *)sbuf, s - sbuf); if (send(ps.fd, sbuf, (int)(s - sbuf), 0) < 0) { popup_a_sockerr("SOCKS5 Proxy: send error"); Free(sbuf); return PX_FAILURE; } Free(sbuf); ps.nread = 0; ps.phase = PROCESS_CONNECT_REPLY; return PX_WANTMORE; } /* Process the reply to the connect request. */ static proxy_negotiate_ret_t proxy_socks5_process_connect_reply(void) { char nbuf[256]; bool done = false; char *atype_name[] = { "", "IPv4", "", "domainname", "IPv6" }; unsigned char *portp; unsigned short rport; /* * Process the reply. * Only the first two bytes of the response are interesting; * skip the rest. */ while (!done) { unsigned char r; ssize_t nr = recv(ps.fd, (char *)&r, 1, 0); if (nr < 0) { if (socket_errno() == SE_EWOULDBLOCK) { if (ps.nread) { trace_netdata('<', ps.vrbuf, ps.nread); } return PX_WANTMORE; } if (ps.nread) { trace_netdata('<', ps.vrbuf, ps.nread); } popup_a_sockerr("SOCKS5 Proxy: receive error"); return PX_FAILURE; } if (nr == 0) { if (ps.nread) { trace_netdata('<', ps.vrbuf, ps.nread); } popup_an_error("SOCKS5 Proxy: unexpected EOF"); return PX_FAILURE; } ps.vrbuf = Realloc(ps.vrbuf, ps.nread + 1); ps.vrbuf[ps.nread] = r; switch (ps.nread++) { case 0: if (r != 0x05) { popup_an_error("SOCKS5 Proxy: incorrect reply version 0x%02x", r); if (ps.nread) { trace_netdata('<', ps.vrbuf, ps.nread); } return PX_FAILURE; } break; case 1: if (r != 0x00) { trace_netdata('<', ps.vrbuf, ps.nread); } switch (r) { case 0x00: break; case 0x01: popup_an_error("SOCKS5 Proxy: server failure"); return PX_FAILURE; case 0x02: popup_an_error("SOCKS5 Proxy: connection not allowed"); return PX_FAILURE; case 0x03: popup_an_error("SOCKS5 Proxy: network unreachable"); return PX_FAILURE; case 0x04: popup_an_error("SOCKS5 Proxy: host unreachable"); return PX_FAILURE; case 0x05: popup_an_error("SOCKS5 Proxy: connection refused"); return PX_FAILURE; case 0x06: popup_an_error("SOCKS5 Proxy: ttl expired"); return PX_FAILURE; case 0x07: popup_an_error("SOCKS5 Proxy: command not supported"); return PX_FAILURE; case 0x08: popup_an_error("SOCKS5 Proxy: address type not supported"); return PX_FAILURE; default: popup_an_error("SOCKS5 Proxy: unknown server error 0x%02x", r); return PX_FAILURE; } break; case 2: break; case 3: switch (r) { case 0x01: ps.n2read = 6; break; case 0x03: ps.n2read = -1; break; #if defined(X3270_IPV6) /*[*/ case 0x04: ps.n2read = sizeof(struct in6_addr) + 2; break; #endif /*]*/ default: popup_an_error("SOCKS5 Proxy: unknown server address type " "0x%02x", r); if (ps.nread) { trace_netdata('<', ps.vrbuf, ps.nread); } return PX_FAILURE; } break; default: if (ps.n2read == -1) { ps.n2read = r + 2; } else if (!--ps.n2read) { done = true; } break; } } trace_netdata('<', ps.vrbuf, ps.nread); switch (ps.vrbuf[3]) { case 0x01: /* IPv4 */ memcpy(&ps.ha.sin.sin_addr, &ps.vrbuf[4], 4); strcpy(nbuf, inet_ntoa(ps.ha.sin.sin_addr)); portp = &ps.vrbuf[4 + 4]; break; case 0x03: /* domainname */ strncpy(nbuf, (char *)&ps.vrbuf[5], ps.vrbuf[4]); nbuf[ps.vrbuf[4]] = '\0'; portp = &ps.vrbuf[5 + ps.vrbuf[4]]; break; #if defined(X3270_IPV6) /*[*/ case 0x04: /* IPv6 */ memcpy(&ps.ha.sin6.sin6_addr, &ps.vrbuf[4], sizeof(struct in6_addr)); inet_ntop(AF_INET6, &ps.ha.sin6.sin6_addr, nbuf, sizeof(nbuf)); portp = &ps.vrbuf[4 + sizeof(struct in6_addr)]; break; #endif /*]*/ default: /* can't happen */ nbuf[0] = '\0'; portp = ps.vrbuf; break; } rport = (*portp << 8) + *(portp + 1); vtrace("SOCKS5 Proxy: recv version %d status 0x%02x address %s %s " "port %u\n", ps.vrbuf[0], ps.vrbuf[1], atype_name[ps.vrbuf[3]], nbuf, rport); Replace(ps.vrbuf, NULL); return PX_SUCCESS; } /* SOCKS version 5 continuation. */ proxy_negotiate_ret_t proxy_socks5_continue(void) { return (*proxy_socks5_continues[ps.phase])(); } /* SOCKS version 5 cleanup. */ void proxy_socks5_close(void) { ps.fd = INVALID_SOCKET; ps.port = 0; ps.nread = 0; ps.n2read = 0; Replace(ps.host, NULL); Replace(ps.user, NULL); Replace(ps.vrbuf, NULL); ps.phase = 0; } suite3270-4.1/Common/proxy_telnet.c000066400000000000000000000044371413735575200171770ustar00rootroot00000000000000/* * Copyright (c) 2007-2009, 2013-2015, 2018-2019 Paul Mattes. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the names of Paul Mattes nor the names of his contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO * EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * proxy_telnet.c * Simple TELNET proxy. */ #include "globals.h" #include "3270ds.h" #include "lazya.h" #include "popups.h" #include "proxy.h" #include "proxy_private.h" #include "proxy_telnet.h" #include "telnet_core.h" #include "trace.h" #include "utils.h" #include "w3misc.h" /* TELNET proxy. */ proxy_negotiate_ret_t proxy_telnet(socket_t fd, const char *host, unsigned short port) { char *sbuf = xs_buffer("connect %s %u\r\n", host, port); vtrace("TELNET Proxy: xmit '%.*s'", (int)(strlen(sbuf) - 2), sbuf); trace_netdata('>', (unsigned char *)sbuf, strlen(sbuf)); if (send(fd, sbuf, (int)strlen(sbuf), 0) < 0) { popup_a_sockerr("TELNET Proxy: send error"); Free(sbuf); return PX_FAILURE; } Free(sbuf); return PX_SUCCESS; } suite3270-4.1/Common/proxy_toggle.c000066400000000000000000000056151413735575200171640ustar00rootroot00000000000000/* * Copyright (c) 2019 Paul Mattes. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the names of Paul Mattes nor the names of his contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO * EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * proxy_toggle.c * This module implements to proxy setting. */ #include "globals.h" #include "appres.h" #include "lazya.h" #include "proxy.h" #include "query.h" #include "resources.h" #include "toggles.h" #include "varbuf.h" #include "proxy_toggle.h" /* * Proxy query. */ static const char * proxy_dump(void) { varbuf_t r; proxytype_t type; vb_init(&r); for (type = PT_FIRST; type < PT_MAX; type++) { int port = proxy_default_port(type); vb_appendf(&r, "%s %s%s%s", proxy_type_name(type), proxy_takes_username(type)? "username": "no-username", port? lazyaf(" %d", port): "", (type < PT_MAX - 1)? "\n": ""); } return lazya(vb_consume(&r)); } /* * Proxy toggle. */ static bool toggle_proxy(const char *name _is_unused, const char *value) { char *user, *host, *port; if (value == NULL || !*value) { Replace(appres.proxy, NULL); return true; } if (proxy_setup(value, &user, &host, &port) < 0) { return false; } Replace(appres.proxy, NewString(value)); return true; } /* * Proxy registration. */ void proxy_register(void) { static query_t queries[] = { { "Proxies", proxy_dump, NULL, false, true } }; /* Register the toggles. */ register_extended_toggle(ResProxy, toggle_proxy, NULL, NULL, (void **)&appres.proxy, XRM_STRING); /* Register the queries. */ register_queries(queries, array_count(queries)); } suite3270-4.1/Common/qcpp-defs.sh000077500000000000000000000004451413735575200165130ustar00rootroot00000000000000#!/usr/bin/env sh # Scan conf.h to find all of the '#define X3270_xxx' statements, and translate # them to '-DX3270_xxx' options for use by qcpp. # This should just be inline in the Makefile, but so far I haven't found a # way to do that. grep '^#define X3270_' conf.h | awk '{print "-D" $2}' suite3270-4.1/Common/query.c000066400000000000000000000221661413735575200156070ustar00rootroot00000000000000/* * Copyright (c) 1993-2020 Paul Mattes. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the names of Paul Mattes nor the names of his contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO * EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * query.c * The Query() action. */ #include "globals.h" #include "appres.h" #include "actions.h" #include "codepage.h" #include "copyright.h" #include "ctlrc.h" #include "host.h" #include "lazya.h" #include "names.h" #include "popups.h" #include "query.h" #include "split_host.h" #include "telnet.h" #include "task.h" #include "trace.h" #include "screentrace.h" #include "unicodec.h" #include "utf8.h" #include "utils.h" #include "varbuf.h" /* Globals */ /* Statics */ /* The current set of queries. */ static query_t *queries; static size_t num_queries; static const char * query_terminal_name(void) { return termtype; } static const char * query_build(void) { return build; } static const char * get_connect_time(void) { time_t t, td; long dy, hr, mn, sc; if (!CONNECTED) { return NULL; } time(&t); td = t - ns_time; dy = (long)(td / (3600 * 24)); hr = (dy % (3600 * 24)) / 3600; mn = (td % 3600) / 60; sc = td % 60; return (dy > 0)? lazyaf("%ud%02u:%02u:%02u", dy, hr, mn, sc): lazyaf("%02u:%02u:%02u", hr, mn, sc); } static const char * get_codepage(void) { char *sbcs = lazyaf("%s sbcs gcsgid %u cpgid %u", get_canonical_codepage(), (unsigned short)((cgcsgid >> 16) & 0xffff), (unsigned short)(cgcsgid & 0xffff)); return dbcs? lazyaf("%s dbcs gcsgid %u cpgid %u", sbcs, (unsigned short)((cgcsgid_dbcs >> 16) & 0xffff), (unsigned short)(cgcsgid_dbcs & 0xffff)): sbcs; } static const char * get_codepages(void) { cpname_t *c = get_cpnames(); varbuf_t r; int i, j; char *sep = ""; vb_init(&r); for (i = 0; c[i].name != NULL; i++) { vb_appendf(&r, "%s%s %cbcs", sep, c[i].name, c[i].dbcs? 'd': 's'); sep = "\n"; for (j = 0; j < c[i].num_aliases; j++) { vb_appendf(&r, " %s", c[i].aliases[j]); } } free_cpnames(c); return lazya(vb_consume(&r)); } static const char * get_proxy(void) { const char *ptype = net_proxy_type(); const char *user = net_proxy_user(); return (ptype != NULL)? lazyaf("%s %s %s%s%s", ptype, net_proxy_host(), net_proxy_port(), (user != NULL)? " ": "", (user != NULL)? user: ""): NULL; } static const char * get_rx(void) { if (!CONNECTED) { return NULL; } return IN_3270? lazyaf("records %u bytes %u", ns_rrcvd, ns_brcvd): lazyaf("bytes %u", ns_brcvd); } static const char * get_screentracefile(void) { if (!toggled(SCREEN_TRACE)) { return NULL; } return trace_get_screentrace_name(); } static const char * get_tasks(void) { char *r = task_get_tasks(); size_t sl = strlen(r); if (sl > 0 && r[sl - 1] == '\n') { r[sl - 1] = '\0'; } return lazya(r); } static const char * get_tracefile(void) { if (!toggled(TRACING)) { return NULL; } return tracefile_name; } static const char * get_tx(void) { if (!CONNECTED) { return NULL; } return IN_3270? lazyaf("records %u bytes %u", ns_rsent, ns_bsent): lazyaf("bytes %u", ns_bsent); } const char * get_about(void) { return lazyaf("%s\nCopyright 1989-%s by Paul Mattes, GTRC and others.", build, cyear); } /* Common code for Query() and Show() actions. */ bool query_common(const char *name, ia_t ia, unsigned argc, const char **argv) { size_t i; size_t sl; action_debug(name, ia, argc, argv); if (check_argc(name, argc, 0, 1) < 0) { return false; } switch (argc) { case 0: for (i = 0; i < num_queries; i++) { if (!queries[i].hidden) { const char *s = (queries[i].fn? (*queries[i].fn)(): queries[i].string); if (s == NULL) { s = ""; } if (queries[i].specific && strcmp(s, "")) { s = "..."; } action_output("%s:%s%s", queries[i].name, *s? " ": "", s); } } break; case 1: sl = strlen(argv[0]); for (i = 0; i < num_queries; i++) { if (!strncasecmp(argv[0], queries[i].name, sl)) { const char *s; if (strlen(queries[i].name) > sl && queries[i + 1].name != NULL && !strncasecmp(argv[0], queries[i + 1].name, sl)) { popup_an_error("%s: Ambiguous parameter", name); return false; } if (queries[i].fn) { s = (*queries[i].fn)(); } else { s = queries[i].string; } if (s == NULL) { s = ""; } action_output("%s\n", s); return true; } } popup_an_error("%s: Unknown parameter", name); return false; } return true; } /* Compare two queries by name. */ static int query_compare(const void *a, const void *b) { const query_t *qa = (query_t *)a; const query_t *qb = (query_t *)b; return strcmp(qa->name, qb->name); } bool Query_action(ia_t ia, unsigned argc, const char **argv) { return query_common(AnQuery, ia, argc, argv); } bool Show_action(ia_t ia, unsigned argc, const char **argv) { return query_common(AnShow, ia, argc, argv); } /** * Register a set of queries. */ void register_queries(query_t new_queries[], size_t count) { query_t *q = Malloc(sizeof(query_t) * (num_queries + count)); memcpy(q, queries, sizeof(query_t) * num_queries); memcpy(q + num_queries, new_queries, sizeof(query_t) * count); qsort(q, num_queries + count, sizeof(query_t), query_compare); Free(queries); queries = q; num_queries += count; } /** * Query module registration. */ void query_register(void) { static action_table_t actions[] = { { AnQuery, Query_action, 0 }, { AnShow, Show_action, 0 } }; static query_t base_queries[] = { { KwAbout, get_about, NULL, false, true }, { KwActions, all_actions, NULL, false, true }, { KwBindPluName, net_query_bind_plu_name, NULL, false, false }, { KwBuildOptions, build_options, NULL, false, false }, { KwConnectionState, net_query_connection_state, NULL, false, false }, { KwConnectTime, get_connect_time, NULL, false, false }, { KwCodePage, get_codepage, NULL, false, false }, { KwCodePages, get_codepages, NULL, false, true }, { KwCopyright, show_copyright, NULL, false, true }, { KwCursor, ctlr_query_cursor, NULL, true, false }, { KwCursor1, ctlr_query_cursor1, NULL, false, false }, { KwFormatted, ctlr_query_formatted, NULL, false, false }, { KwHost, net_query_host, NULL, false, false }, { KwLocalEncoding, get_codeset, NULL, false, false }, { KwLuName, net_query_lu_name, NULL, false, false }, { KwModel, NULL, full_model_name, true, false }, { KwPrefixes, host_prefixes, NULL, false, false }, { KwProxy, get_proxy, NULL, false, false }, { KwScreenCurSize, ctlr_query_cur_size_old, NULL, true, false }, { KwScreenMaxSize, ctlr_query_max_size_old, NULL, true, false }, { KwScreenSizeCurrent, ctlr_query_cur_size, NULL, false, false }, { KwScreenSizeMax, ctlr_query_max_size, NULL, false, false }, { KwScreenTraceFile, get_screentracefile, NULL, false, false }, { KwSsl, net_query_tls, NULL, true, false }, { KwStatsRx, get_rx, NULL, false, false }, { KwStatsTx, get_tx, NULL, false, false }, { KwTasks, get_tasks, NULL, false, true }, { KwTelnetMyOptions, net_myopts, NULL, false, false }, { KwTelnetHostOptions, net_hisopts, NULL, false, false }, { KwTerminalName, query_terminal_name, NULL, false, false }, { KwTraceFile, get_tracefile, NULL, false, false }, { KwTls, net_query_tls, NULL, false, false }, { KwTlsCertInfo, net_server_cert_info, NULL, false, true }, { KwTlsSubjectNames, net_server_subject_names, NULL, false, true }, { KwTlsProvider, net_sio_provider, NULL, false, false }, { KwTlsSessionInfo, net_session_info, NULL, false, true }, { KwTn3270eOptions, tn3270e_current_opts, NULL, false, false }, { KwVersion, query_build, NULL, false, false } }; /* Register actions.*/ register_actions(actions, array_count(actions)); /* Register queries. */ register_queries(base_queries, array_count(base_queries)); } suite3270-4.1/Common/readres.c000066400000000000000000000127751413735575200160740ustar00rootroot00000000000000/* * Copyright (c) 2009, 2013-2016, 2018 Paul Mattes. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the names of Paul Mattes, Jeff Sparkes, GTRC nor the names of * their contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO * EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * readres.c * A displayless 3270 Terminal Emulator * Resource file reader. */ #include "globals.h" #include #include "appres.h" #include "glue.h" #include "readres.h" #include "utils.h" /* * Make sure a resource definition begins with the application name, then * split it into the name and the value. */ int validate_and_split_resource(const char *where, const char *arg, const char **left, size_t *rnlenp, const char **right) { size_t match_len; size_t rnlen; const char *s = arg; static char *me_dot = NULL; static char *me_star = NULL; static size_t me_len = 0; static char *alias_dot = NULL; static char *alias_star = NULL; static size_t alias_len = 0; static char *or_alias = ""; if (me_dot == NULL) { me_dot = xs_buffer("%s.", app); me_star = xs_buffer("%s*", app); me_len = strlen(me_dot); if (appres.alias != NULL) { alias_dot = xs_buffer("%s.", appres.alias); alias_star = xs_buffer("%s*", appres.alias); alias_len = strlen(alias_dot); if (strcmp(app, appres.alias)) { or_alias = xs_buffer(" or '%s'", alias_dot); } } } /* Enforce "-3270." or "-3270*" or "*". */ if (!strncmp(s, me_dot, me_len)) { match_len = me_len; } else if (!strncmp(arg, me_star, me_len)) { match_len = me_len; } else if (alias_len != 0 && !strncmp(s, alias_dot, alias_len)) { match_len = alias_len; } else if (alias_len != 0 && !strncmp(arg, alias_star, alias_len)) { match_len = alias_len; } else if (arg[0] == '*') { match_len = 1; } else { xs_warning("%s: Invalid resource syntax '%.*s', name must begin with " "'%s', '*'%s", where, (int)me_len, arg, me_dot, or_alias); return -1; } /* Separate the parts. */ s = arg + match_len; while (*s && *s != ':' && !isspace((unsigned char)*s)) { s++; } rnlen = s - (arg + match_len); if (!rnlen) { xs_warning("%s: Invalid resource syntax, missing resource name", where); return -1; } while (isspace((unsigned char)*s)) { s++; } if (*s != ':') { xs_warning("%s: Invalid resource syntax, missing ':'", where); return -1; } s++; while (isspace((unsigned char)*s)) { s++; } /* Return what we got. */ *left = arg + match_len; *rnlenp = rnlen; *right = s; return 0; } /* Read resources from a file. */ bool read_resource_filex(const char *filename, bool fatal) { FILE *f; size_t ilen; char buf[4096]; char *where; int lno = 0; f = fopen(filename, "r"); if (f == NULL) { if (fatal) { xs_warning("Cannot open '%s': %s", filename, strerror(errno)); } return false; } /* Merge in what's in the file into the resource database. */ ilen = 0; while (fgets(buf + ilen, (int)(sizeof(buf) - ilen), f) != NULL || ilen) { char *s; size_t sl; bool bsl = false; lno++; /* Stip any trailing newline. */ sl = strlen(buf + ilen); if (sl && (buf + ilen)[sl-1] == '\n') { (buf + ilen)[--sl] = '\0'; } /* Check for a trailing backslash. */ s = buf + ilen; if ((sl > 0) && (s[sl - 1] == '\\')) { s[sl - 1] = '\0'; bsl = true; } /* Skip leading whitespace. */ s = buf; while (isspace((unsigned char)*s)) { s++; } /* If this line is a continuation, try again. */ if (bsl) { ilen += strlen(buf + ilen); if ((unsigned)ilen >= sizeof(buf) - 1) { xs_warning("%s:%d: Line too long\n", filename, lno); break; } continue; } /* Skip comments. */ if (*s == '!') { ilen = 0; continue; } if (*s == '#') { xs_warning("%s:%d: Invalid profile syntax ('#' ignored)", filename, lno); ilen = 0; continue; } /* Strip trailing whitespace and check for empty lines. */ sl = strlen(s); while (sl && isspace((unsigned char)s[sl-1])) { s[--sl] = '\0'; } if (!sl) { ilen = 0; continue; } /* Digest it. */ where = xs_buffer("%s:%d", filename, lno); parse_xrm(s, where); Free(where); /* Get ready for the next iteration. */ ilen = 0; } fclose(f); return true; } suite3270-4.1/Common/resolver.c000066400000000000000000000424361413735575200163050ustar00rootroot00000000000000/* * Copyright (c) 2007-2009, 2014-2016, 2019-2021 Paul Mattes. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the names of Paul Mattes nor the names of his contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO * EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * resolver.c * Hostname resolution. */ #include "globals.h" #include #include #if !defined(_WIN32) /*[*/ # include # include # include # include #endif /*]*/ #include #include "lazya.h" #include "resolver.h" #if defined(_WIN32) /*[*/ # include "w3misc.h" # include "winvers.h" #endif /*]*/ #if defined(X3270_IPV6) && (defined(_WIN32) || defined(HAVE_GETADDRINFO_A)) /*[*/ # define ASYNC_RESOLVER 1 #endif /*]*/ #if defined(ASYNC_RESOLVER) /*[*/ # define GAI_SLOTS 10 static struct gai { bool busy; /* true if busy */ bool done; /* true if done */ int pipe; /* pipe to write status into */ char *host; /* host name */ char *port; /* port name */ # if !defined(_WIN32) /*[*/ struct gaicb gaicb; /* control block */ struct gaicb *gaicbs; /* control blocks (just one) */ struct sigevent sigevent; /* sigevent block */ struct addrinfo result; /* result */ # else /*][*/ int rc; /* return code */ struct addrinfo *result; /* result */ HANDLE event; /* event to signal */ # endif /*]*/ } gai[GAI_SLOTS]; #endif /*]*/ #if defined(X3270_IPV6) /*[*/ # if defined(_WIN32) /*[*/ /* Wrap gai_strerror() in a function that translates the code page. */ static const char * my_gai_strerror(int rc) { return to_localcp(gai_strerror(rc)); } # else /*][*/ # define my_gai_strerror(x) gai_strerror(x) # endif /*]*/ /* * Resolve a hostname and port using getaddrinfo, allowing IPv4 or IPv6. * Synchronous version. */ static rhp_t resolve_host_and_port_v46(const char *host, char *portname, unsigned short *pport, struct sockaddr *sa, size_t sa_len, socklen_t *sa_rlen, char **errmsg, int max, int *nr) { struct addrinfo hints, *res0, *res; int rc; int i; void *rsa = sa; *nr = 0; /* getaddrinfo() does not appear to range-check the port. Do that here. */ if (portname != NULL) { unsigned long l; if ((l = strtoul(portname, NULL, 0)) && (l & ~0xffffL)) { if (errmsg) { *errmsg = lazyaf("%s/%s:\n%s", host, portname, "Invalid port"); } return RHP_CANNOT_RESOLVE; } } memset(&hints, '\0', sizeof(struct addrinfo)); hints.ai_flags = 0; hints.ai_family = PF_UNSPEC; hints.ai_socktype = SOCK_STREAM; hints.ai_protocol = IPPROTO_TCP; rc = getaddrinfo(host, portname, &hints, &res0); if (rc != 0) { if (errmsg) { *errmsg = lazyaf("%s/%s:\n%s", host, portname? portname: "(none)", my_gai_strerror(rc)); } return RHP_CANNOT_RESOLVE; } res = res0; /* Return the addresses. */ for (i = 0; i < max && res != NULL; i++, res = res->ai_next) { memcpy(rsa, res->ai_addr, res->ai_addrlen); sa_rlen[*nr] = (socklen_t)res->ai_addrlen; if (i == 0) { /* Return the port. */ switch (res->ai_family) { case AF_INET: *pport = ntohs(((struct sockaddr_in *) res->ai_addr)->sin_port); break; case AF_INET6: *pport = ntohs(((struct sockaddr_in6 *) res->ai_addr)->sin6_port); break; default: if (errmsg) { *errmsg = lazyaf("%s:\nunknown family %d", host, res->ai_family); } freeaddrinfo(res0); return RHP_FATAL; } } rsa = (char *)rsa + sa_len; (*nr)++; } freeaddrinfo(res0); return RHP_SUCCESS; } #endif /*]*/ #if defined(ASYNC_RESOLVER) /*[*/ # if !defined(_WIN32) /*[*/ /* Notification function for lookup completion. */ static void gai_notify(union sigval sigval) { char slot = (char)sigval.sival_int; struct gai *gaip = &gai[(int)slot]; ssize_t nw; assert(gaip->busy == true); assert(gaip->done == false); gaip->done = true; /* * Write our slot number into the pipe, so the main thread can poll us for * the completion status. */ nw = write(gaip->pipe, &slot, 1); assert(nw == 1); } # else /*][*/ /* Asynchronous resolution thread. */ static DWORD WINAPI async_resolve(LPVOID parameter) { struct gai *gaip = (struct gai *)parameter; char slot = (char)(gaip - gai); struct addrinfo hints; ssize_t nw; assert(gaip->busy == true); assert(gaip->done == false); gaip->done = true; memset(&hints, '\0', sizeof(struct addrinfo)); hints.ai_flags = 0; hints.ai_family = PF_UNSPEC; hints.ai_socktype = SOCK_STREAM; hints.ai_protocol = IPPROTO_TCP; gaip->rc = getaddrinfo(gaip->host, gaip->port, &hints, &gaip->result); /* * Write our slot number into the pipe, so the main thread can poll us for * the completion status. */ nw = write(gaip->pipe, &slot, 1); assert(nw == 1); /* Tell the main thread we are done. */ SetEvent(gaip->event); /* Exit the thread. */ return 0; } # endif /*]*/ /* * Resolve a hostname and port using getaddrinfo_a, allowing IPv4 or IPv6. * Asynchronous version. */ static rhp_t resolve_host_and_port_v46_a(const char *host, char *portname, unsigned short *pport, struct sockaddr *sa, size_t sa_len, socklen_t *sa_rlen, char **errmsg, int max, int *nr, int *slot, int pipe, iosrc_t event) { # if !defined(_WIN32) /*[*/ int rc; # else /*][*/ HANDLE thread; # endif /*]*/ *nr = 0; /* getaddrinfo() does not appear to range-check the port. Do that here. */ if (portname != NULL) { unsigned long l; if ((l = strtoul(portname, NULL, 0)) && (l & ~0xffffL)) { if (errmsg) { *errmsg = lazyaf("%s/%s:\n%s", host, portname, "Invalid port"); } return RHP_CANNOT_RESOLVE; } } /* Find an empty slot. */ for (*slot = 0; *slot < GAI_SLOTS; (*slot)++) { if (!gai[*slot].busy) { break; } } if (*slot >= GAI_SLOTS) { *slot = -1; if (errmsg) { *errmsg = lazya(NewString("Too many resolver reqests pending")); } return RHP_FATAL; } gai[*slot].pipe = pipe; gai[*slot].busy = true; gai[*slot].done = false; # if defined(_WIN32) /*[*/ gai[*slot].event = event; # endif /*]*/ gai[*slot].host = NewString(host); gai[*slot].port = portname? NewString(portname) : NULL; # if !defined(_WIN32) /*[*/ gai[*slot].result.ai_flags = 0; gai[*slot].result.ai_family = PF_UNSPEC; gai[*slot].result.ai_socktype = SOCK_STREAM; gai[*slot].result.ai_protocol = IPPROTO_TCP; gai[*slot].gaicbs = &gai[*slot].gaicb; gai[*slot].gaicb.ar_name = host; gai[*slot].gaicb.ar_service = portname; gai[*slot].gaicb.ar_result = &gai[*slot].result; gai[*slot].sigevent.sigev_notify = SIGEV_THREAD; gai[*slot].sigevent.sigev_value.sival_int = *slot; gai[*slot].sigevent.sigev_notify_function = gai_notify; rc = getaddrinfo_a(GAI_NOWAIT, &gai[*slot].gaicbs, 1, &gai[*slot].sigevent); if (rc != 0) { if (errmsg) { *errmsg = lazyaf("%s/%s:\n%s", host, portname? portname: "(none)", my_gai_strerror(rc)); } return RHP_CANNOT_RESOLVE; } # else /*][*/ thread = CreateThread(NULL, 0, async_resolve, &gai[*slot], 0, NULL); if (thread == INVALID_HANDLE_VALUE) { if (errmsg) { *errmsg = lazyaf("%s/%s:\n%s", host, portname? portname: "(none)", win32_strerror(GetLastError())); } return RHP_CANNOT_RESOLVE; } CloseHandle(thread); # endif /*]*/ return RHP_PENDING; } #endif /*]*/ /* Collect the status for a slot. */ rhp_t collect_host_and_port(int slot, struct sockaddr *sa, size_t sa_len, socklen_t *sa_rlen, unsigned short *pport, char **errmsg, int max, int *nr) { #if defined(ASYNC_RESOLVER) /*[*/ # if !defined(_WIN32) /*[*/ int rc; # endif /*]*/ struct addrinfo *res; int i; void *rsa = sa; struct gai *gaip = &gai[slot]; assert(gaip->busy == true); assert(gaip->done == true); gaip->busy = false; gaip->done = false; *nr = 0; # if !defined(_WIN32) /*[*/ switch ((rc = gai_error(&gaip->gaicb))) { case 0: /* success */ /* Return the addresses. */ res = gaip->gaicb.ar_result; for (i = 0; i < max && res != NULL; i++, res = res->ai_next) { if (res->ai_socktype != SOCK_STREAM) { continue; } memcpy(rsa, res->ai_addr, res->ai_addrlen); sa_rlen[*nr] = (socklen_t)res->ai_addrlen; if (i == 0) { /* Return the port. */ switch (res->ai_family) { case AF_INET: *pport = ntohs(((struct sockaddr_in *)res->ai_addr)->sin_port); break; case AF_INET6: *pport = ntohs(((struct sockaddr_in6 *)res->ai_addr)->sin6_port); break; default: if (errmsg) { *errmsg = lazyaf("unknown family %d", res->ai_family); } freeaddrinfo(gaip->gaicb.ar_result); return RHP_FATAL; } } rsa = (char *)rsa + sa_len; (*nr)++; } freeaddrinfo(gaip->gaicb.ar_result); if (*nr) { return RHP_SUCCESS; } else { if (errmsg) { *errmsg = lazyaf("%s/%s:\n%s", gaip->host, gaip->port? gaip->port: "(none)", "no suitable resolution"); } return RHP_CANNOT_RESOLVE; } case EAI_INPROGRESS: /* still pending, should not happen */ case EAI_CANCELED: /* canceled, should not happen */ assert(rc != EAI_INPROGRESS && rc != EAI_CANCELED); return RHP_FATAL; default: /* failure */ if (errmsg) { *errmsg = lazyaf("%s/%s:\n%s", gaip->host, gaip->port? gaip->port: "(none)", my_gai_strerror(rc)); } return RHP_CANNOT_RESOLVE; } # else /*][*/ if (gaip->rc != 0) { if (errmsg) { *errmsg = lazyaf("%s/%s:\n%s", gaip->host, gaip->port? gaip->port: "(none)", my_gai_strerror(gaip->rc)); } return RHP_CANNOT_RESOLVE; } /* Return the addresses. */ res = gaip->result; for (i = 0; i < max && res != NULL; i++, res = res->ai_next) { memcpy(rsa, res->ai_addr, res->ai_addrlen); sa_rlen[*nr] = (socklen_t)res->ai_addrlen; if (i == 0) { /* Return the port. */ switch (res->ai_family) { case AF_INET: *pport = ntohs(((struct sockaddr_in *) res->ai_addr)->sin_port); break; case AF_INET6: *pport = ntohs(((struct sockaddr_in6 *) res->ai_addr)->sin6_port); break; default: if (errmsg) { *errmsg = lazyaf("%s:\nunknown family %d", gaip->host, res->ai_family); } freeaddrinfo(gaip->result); return RHP_FATAL; } } rsa = (char *)rsa + sa_len; (*nr)++; } freeaddrinfo(gaip->result); return RHP_SUCCESS; # endif /*]*/ #else /*][*/ if (errmsg != NULL) { *errmsg = lazya(NewString("Asynchronous name resolution not supported")); } return RHP_FATAL; #endif /*]*/ } /* Clean up a canceled request. */ void cleanup_host_and_port(int slot) { #if defined(ASYNC_RESOLVER) /*[*/ struct gai *gaip = &gai[slot]; # if !defined(_WIN32) /*[*/ int rc; # endif /*]*/ assert(gaip->busy == true); assert(gaip->done == true); gaip->busy = false; gaip->done = false; # if !defined(_WIN32) /*[*/ switch ((rc = gai_error(&gaip->gaicb))) { case 0: /* success */ freeaddrinfo(gaip->gaicb.ar_result); break; case EAI_INPROGRESS: /* still pending, should not happen */ case EAI_CANCELED: /* canceled, should not happen */ assert(rc != EAI_INPROGRESS && rc != EAI_CANCELED); break; default: /* failure */ break; } # else /*][*/ if (gaip->rc == 0) { freeaddrinfo(gaip->result); } # endif /*]*/ Replace(gaip->host, NULL); Replace(gaip->port, NULL); #endif /*]*/ } #if !defined(X3270_IPV6) /*[*/ /* * Resolve a hostname and port using gethostbyname and getservbyname, and * allowing only IPv4. * Synchronous only. */ static rhp_t resolve_host_and_port_v4(const char *host, char *portname, unsigned short *pport, struct sockaddr *sa, size_t sa_len, socklen_t *sa_rlen, char **errmsg, int max, int *nr) { struct hostent *hp; struct servent *sp; unsigned short port; unsigned long lport; char *ptr; struct sockaddr_in *sin = (struct sockaddr_in *)sa; int i; void *rsa = sa; *nr = 0; /* Get the port number. */ lport = strtoul(portname, &ptr, 0); if (ptr == portname || *ptr != '\0' || lport == 0L || lport & ~0xffff) { if (!(sp = getservbyname(portname, "tcp"))) { if (errmsg) { *errmsg = lazyaf("Unknown port number or service: %s", portname); } return RHP_FATAL; } port = sp->s_port; } else { port = htons((unsigned short)lport); } *pport = ntohs(port); /* Use gethostbyname() to resolve the hostname. */ hp = gethostbyname(host); if (hp == (struct hostent *)0) { /* Try inet_addr(). */ sin->sin_family = AF_INET; sin->sin_addr.s_addr = inet_addr(host); if (sin->sin_addr.s_addr == INADDR_NONE) { if (errmsg) { *errmsg = lazyaf("Unknown host:\n%s", host); } return RHP_CANNOT_RESOLVE; } *sa_rlen = sizeof(struct sockaddr_in); *nr = 1; return RHP_SUCCESS; } /* Return the addresses. */ for (i = 0; i < max && hp->h_addr_list[i] != NULL; i++) { struct sockaddr_in *rsin = rsa; rsin->sin_family = hp->h_addrtype; memcpy(&rsin->sin_addr, hp->h_addr_list[i], hp->h_length); rsin->sin_port = port; sa_rlen[*nr] = sizeof(struct sockaddr_in); rsa = (char *)rsa + sa_len; (*nr)++; } return RHP_SUCCESS; } #endif /*]*/ /** * Resolve a hostname and port. * Synchronous version. * * @param[in] host Host name * @param[in] portname Port name * @param[out] pport Returned numeric port * @param[out] sa Returned array of addresses * @param[in] sa_len Number of elements in sa * @param[out] sa_rlen Returned size of elements in sa * @param[out] errmsg Returned error message * @param[in] max Maximum number of elements to return * @param[out] nr Number of elements returned * * @returns RHP_XXX status */ rhp_t resolve_host_and_port(const char *host, char *portname, unsigned short *pport, struct sockaddr *sa, size_t sa_len, socklen_t *sa_rlen, char **errmsg, int max, int *nr) { #if defined(X3270_IPV6) /*[*/ return resolve_host_and_port_v46(host, portname, pport, sa, sa_len, sa_rlen, errmsg, max, nr); #else /*][*/ return resolve_host_and_port_v4(host, portname, pport, sa, sa_len, sa_rlen, errmsg, max, nr); #endif } /* * Resolve a hostname and port. * Asynchronous version. * * @param[in] host Host name * @param[in] portname Port name * @param[out] pport Returned numeric port * @param[out] sa Returned array of addresses * @param[in] sa_len Number of elements in sa * @param[out] sa_rlen Returned size of elements in sa * @param[out] errmsg Returned error message * @param[in] max Maximum number of elements to return * @param[out] nr Number of elements returned * * @returns RHP_XXX status */ rhp_t resolve_host_and_port_a(const char *host, char *portname, unsigned short *pport, struct sockaddr *sa, size_t sa_len, socklen_t *sa_rlen, char **errmsg, int max, int *nr, int *slot, int pipe, iosrc_t event) { #if defined(ASYNC_RESOLVER) /*[*/ return resolve_host_and_port_v46_a(host, portname, pport, sa, sa_len, sa_rlen, errmsg, max, nr, slot, pipe, event); #else /*][*/ *slot = -1; # if defined(X3270_IPV6) /*][*/ return resolve_host_and_port_v46(host, portname, pport, sa, sa_len, sa_rlen, errmsg, max, nr); # else /*][*/ return resolve_host_and_port_v4(host, portname, pport, sa, sa_len, sa_rlen, errmsg, max, nr); # endif /*]*/ #endif /*]*/ } #if defined(_WIN32) /*[*/ # define LEN DWORD #else /*][*/ # define LEN size_t #endif /*]*/ /* * Resolve a sockaddr into a numeric hostname and port. * Returns True for success, false for failure. */ bool numeric_host_and_port(const struct sockaddr *sa, socklen_t salen, char *host, size_t hostlen, char *serv, size_t servlen, char **errmsg) { #if defined(X3270_IPV6) /*[*/ int rc; /* Use getnameinfo(). */ rc = getnameinfo(sa, salen, host, (LEN)hostlen, serv, (LEN)servlen, NI_NUMERICHOST | NI_NUMERICSERV); if (rc != 0) { if (errmsg) { *errmsg = lazyaf("%s", my_gai_strerror(rc)); } return false; } return true; #else /*][*/ struct sockaddr_in *sin = (struct sockaddr_in *)sa; /* Use inet_ntoa() and snprintf(). */ snprintf(host, hostlen, "%s", inet_ntoa(sin->sin_addr)); snprintf(serv, servlen, "%u", ntohs(sin->sin_port)); return true; #endif /*]*/ } suite3270-4.1/Common/rpq.c000066400000000000000000000520711413735575200152420ustar00rootroot00000000000000/* * Copyright (c) 2005-2009, 2013-2016, 2019, 2021 Paul Mattes. * Copyright (c) 2004-2005, Don Russell. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the names of Paul Mattes, Don Russell, Jeff Sparkes, GTRC nor * the names of their contributors may be used to endorse or promote * products derived from this software without specific prior written * permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES AND DON RUSSELL "AS IS" AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL PAUL MATTES OR DON RUSSELL BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * rpq.c * RPQNAMES structured field support. * */ #include "globals.h" #include #if !defined(_WIN32) /*[*/ # include # include # include #endif /*]*/ #include #include "3270ds.h" #include "ctlrc.h" #include "popups.h" #include "sf.h" /* has to come before rpq.h */ #include "rpq.h" #include "tables.h" #include "telnet.h" #include "telnet_core.h" #include "trace.h" #include "unicodec.h" #if defined(_WIN32) /*[*/ # include "w3misc.h" #endif /*]*/ /* Statics */ static bool select_rpq_terms(void); static int get_rpq_timezone(void); static size_t get_rpq_user(unsigned char buf[], const size_t buflen); #if !defined(_WIN32) /*[*/ static size_t get_rpq_address(unsigned char buf[], const size_t buflen); #endif /*]*/ static void rpq_warning(const char *fmt, ...); static void rpq_dump_warnings(void); static bool rpq_complained = false; #if !defined(_WIN32) /*[*/ static bool omit_due_space_limit = false; #endif /*]*/ /* * Define symbolic names for RPQ self-defining terms. * (Numbering is arbitrary, but must be 0-255 inclusive. * Do not renumber existing items because these identify the * self-defining term to the mainframe software. Changing pre-existing * values will possibly impact host based software. */ #define RPQ_ADDRESS 0 #define RPQ_TIMESTAMP 1 #define RPQ_TIMEZONE 2 #define RPQ_USER 3 #define RPQ_VERSION 4 /* * Define a table of RPQ self-defing terms. * NOTE: Synonyms could be specified by coding different text items but using * the same "id" value. * Items should be listed in alphabetical order by "text" name so if the user * specifies abbreviations, they work in a predictable manner. E.g., "TIME" * should match TIMESTAMP instead of TIMEZONE. */ static struct rpq_keyword { bool omit; /* set from X3270RPQ="kw1:kw2..." environment var */ size_t oride; /* displacement */ const bool allow_oride; const unsigned char id; const char *text; } rpq_keywords[] = { {true, 0, true, RPQ_ADDRESS, "ADDRESS"}, {true, 0, false, RPQ_TIMESTAMP, "TIMESTAMP"}, {true, 0, true, RPQ_TIMEZONE, "TIMEZONE"}, {true, 0, true, RPQ_USER, "USER"}, {true, 0, false, RPQ_VERSION, "VERSION"}, }; #define NS_RPQ (sizeof(rpq_keywords)/sizeof(rpq_keywords[0])) static char *x3270rpq; /* * RPQNAMES query reply. */ void do_qr_rpqnames(void) { # define TERM_PREFIX_SIZE 2 /* Each term has 1 byte length and 1 byte id */ unsigned char *rpql, *p_term; unsigned j; int term_id; size_t i, x; size_t remaining = 254; /* maximum data area for rpqname reply */ bool omit_due_space_limit; trace_ds("> QueryReply(RPQNames)\n"); /* * Allocate enough space for the maximum allowed item. * By pre-allocating the space I don't have to worry about the * possibility of addresses changing. */ space3270out(4+4+1+remaining); /* Maximum space for an RPQNAME item */ SET32(obptr, 0); /* Device number, 0 = All */ SET32(obptr, 0); /* Model number, 0 = All */ rpql = obptr++; /* Save address to place data length. */ /* * Create fixed length portion - program id: x3270 * This is known 8-bit text so we can use asc2ebc0 to translate it. */ for (j = 0; j < 5; j++) { *obptr++ = asc2ebc0[(int)"x3270"[j]]; remaining--; } /* Create user selected variable-length self-defining terms. */ select_rpq_terms(); for (j = 0; j < NS_RPQ; j++) { if (rpq_keywords[j].omit) { continue; } omit_due_space_limit = false; term_id = rpq_keywords[j].id; p_term = obptr; /* save starting address (to insert length later) */ obptr++; /* skip length of term, fill in later */ *obptr++ = term_id; /* identify this term */ /* * Adjust remaining space by the term prefix size so each case * can use the "remaining" space without concern for the * prefix. This subtraction is accounted for after the item * is built and the updated remaining space is determined. */ remaining -= TERM_PREFIX_SIZE; switch (term_id) { /* build the term based on id */ case RPQ_USER: /* User text from env. vars */ obptr += get_rpq_user(obptr, remaining); break; case RPQ_TIMEZONE: /* UTC time offset */ omit_due_space_limit = (remaining < 2); if (!omit_due_space_limit) { SET16(obptr, get_rpq_timezone()); } break; case RPQ_ADDRESS: /* Workstation address */ #if !defined(_WIN32) /*[*/ obptr += get_rpq_address(obptr, remaining); #endif /*]*/ break; case RPQ_VERSION: /* program version */ /* * Note: It is legal to use asc2ebc0 to translate the * build string from ASCII to EBCDIC because the build * string is always generated in the "C" locale. */ x = strlen(build_rpq_version); omit_due_space_limit = (x > remaining); if (!omit_due_space_limit) { for (i = 0; i < x; i++) { *obptr++ = asc2ebc0[(int)(*(build_rpq_version+i) & 0xff)]; } } break; case RPQ_TIMESTAMP: /* program build time (yyyymmddhhmmss bcd) */ x = strlen(build_rpq_timestamp); omit_due_space_limit = ((x + 1) / 2 > remaining); if (!omit_due_space_limit) { for (i = 0; i < x; i += 2) { *obptr++ = ((*(build_rpq_timestamp+i) - '0') << 4) + (*(build_rpq_timestamp+i+1) - '0'); } } break; default: /* unsupported ID, (can't happen) */ Error("Unsupported RPQ term"); break; } if (omit_due_space_limit) rpq_warning("RPQ %s term omitted due to insufficient space", rpq_keywords[j].text); /* * The item is built, insert item length as needed and * adjust space remaining. * obptr now points at "next available byte". */ x = obptr-p_term; if (x > TERM_PREFIX_SIZE) { *p_term = (unsigned char)x; remaining -= x; /* This includes length and id fields, correction below */ } else { /* We didn't add an item after all, reset pointer. */ obptr = p_term; } /* * When we calculated the length of the term, a few lines * above, that length included the term length and term id * prefix too. (TERM_PREFIX_SIZE) * But just prior to the switch statement, we decremented the * remaining space by that amount so subsequent routines would * be told how much space they have for their data, without * each routine having to account for that prefix. * That means the remaining space is actually more than we * think right now, by the length of the prefix.... add that * back so the remaining space is accurate. * * And... if there was no item added, we still have to make the * same correction to "claim back" the term prefix area so it * may be used by the next possible term. */ remaining += TERM_PREFIX_SIZE; } /* Fill in overall length of RPQNAME info */ *rpql = (unsigned char)(obptr - rpql); rpq_dump_warnings(); } /* Utility function used by the RPQNAMES query reply. */ static bool select_rpq_terms(void) { size_t i; unsigned j,k; size_t len; char *uplist; char *p1, *p2; char *kw; bool is_no_form; /* See if the user wants any rpqname self-defining terms returned */ if ((x3270rpq = getenv("X3270RPQ")) == NULL) { return false; } /* * Make an uppercase copy of the user selections so I can match * keywords more easily. * If there are override values, I'll get those from the ORIGINAL * string so upper/lower case is preserved as necessary. */ uplist = (char *) malloc(strlen(x3270rpq)+1); assert(uplist != NULL); p1 = uplist; p2 = x3270rpq; do { *p1++ = toupper((unsigned char)*p2++); } while (*p2); *p1 = '\0'; for (i = 0; i < strlen(x3270rpq); ) { kw = uplist+i; i++; if (isspace((unsigned char)*kw)) { continue; /* skip leading white space */ } if (*kw == ':') { continue; } /* : separates terms, but \: is literal : */ p1 = kw; do { p1 = strchr(p1+1,':'); if (p1 == NULL) break; } while (*(p1-1) == '\\'); /* p1 points to the : separating a term, or is NULL */ if (p1 != NULL) *p1 = '\0'; /* kw is now a string of the entire, single term. */ i = (kw - uplist) + strlen(kw) + 1; /* It might be a keyword=value item... */ for (p1 = kw; *p1; p1++) { if (!isupper((unsigned char)*p1)) { break; } } len = p1-kw; is_no_form = ((len > 2) && (strncmp("NO", kw, 2) == 0)); if (is_no_form) { kw += 2; /* skip "NO" prefix for matching keyword */ len -= 2; /* adjust keyword length */ } for (j = 0; j < NS_RPQ; j++) { if (strncmp(kw, rpq_keywords[j].text, len) == 0) { rpq_keywords[j].omit = is_no_form; if (*p1 == '=') { if (rpq_keywords[j].allow_oride) { rpq_keywords[j].oride = p1 - uplist + 1; } else { rpq_warning("RPQ %s term override ignored", p1); } } break; } } if (j >= NS_RPQ) { /* unrecognized keyword... */ if (strcmp(kw,"ALL") == 0) { for (k = 0; k < NS_RPQ; k++) { rpq_keywords[k].omit = is_no_form; } } else { rpq_warning("RPQ term \"%s\" is unrecognized", kw); } } } free(uplist); /* * Return to caller with indication (T/F) of any items * to be selected (T) or are all terms suppressed? (F) */ for (i = 0; i < NS_RPQ; i++) { if (!rpq_keywords[i].omit) { return true; } } return false; } /* Utility function used by the RPQNAMES query reply. */ static int get_rpq_timezone(void) { /* * Return the signed number of minutes we're offset from UTC. * Example: North America Pacific Standard Time = UTC - 8 Hours, so we * return (-8) * 60 = -480. * Since the smallest variance between two timezones is 15 minutes, * use small, positive values to represent various errors: * 1 - Cannot determine local calendar time * 2 - Cannot determine UTC * 3 - Difference exceeds 12 hours * 4 - User override is invalid */ time_t here; struct tm here_tm; struct tm *utc_tm; double delta; char *p1, *p2; struct rpq_keyword *kw; /* id isn't necessarily the table index... locate item */ for (kw = &rpq_keywords[0]; kw -> id != RPQ_TIMEZONE; kw++) { } /* Is there a user override? */ if ((kw->allow_oride) && (kw->oride > 0)) { ldiv_t hhmm; long x; p1 = x3270rpq + kw->oride; x = strtol(p1, &p2, 10); if (errno != 0) { rpq_warning("RPQ TIMEZONE term is invalid - use +/-hhmm"); return 4; } if ((*p2 != '\0') && (*p2 != ':') && (!isspace((unsigned char)*p2))) { return 4; } hhmm = ldiv(x, 100L); if (hhmm.rem > 59L) { rpq_warning("RPQ TIMEZONE term is invalid - use +/-hhmm"); return 4; } delta = (labs(hhmm.quot) * 60L) + hhmm.rem; if (hhmm.quot < 0L) delta = -delta; } else { /* * No override specified, try to get information from the system. */ if ((here = time(NULL)) == (time_t)(-1)) { rpq_warning("RPQ: Unable to determine workstation local time"); return 1; } memcpy(&here_tm, localtime(&here), sizeof(struct tm)); if ((utc_tm = gmtime(&here)) == NULL) { rpq_warning("RPQ: Unable to determine workstation UTC time"); return 2; } /* * Do not take Daylight Saving Time into account. * We just want the "raw" time difference. */ here_tm.tm_isdst = 0; utc_tm->tm_isdst = 0; delta = difftime(mktime(&here_tm), mktime(utc_tm)) / 60L; } /* sanity check: difference cannot exceed +/- 12 hours */ if (labs((long)delta) > 720L) { rpq_warning("RPQ timezone exceeds 12 hour UTC offset"); } return (labs((long)delta) > 720L)? 3 : (int) delta; } /* Utility function used by the RPQNAMES query reply. */ static size_t get_rpq_user(unsigned char buf[], const size_t buflen) { /* * Text may be specified in one of two ways, but not both. * An environment variable provides the user interface: * - X3270RPQ: Keyword USER= * * NOTE: If the string begins with 0x then no ASCII/EBCDIC * translation is done. The hex characters will be sent as true hex * data. E.g., X3270RPQ="user=0x ab 12 EF" will result in 3 bytes * sent as 0xAB12EF. White space is optional in hex data format. * When hex format is required, the 0x prefix must be the first two * characters of the string. E.g., X3270RPQ="user= 0X AB" will * result in 6 bytes sent as 0x40F0E740C1C2 because the text is * accepted "as is" then translated from ASCII to EBCDIC. */ const char *rpqtext = NULL; size_t x = 0; struct rpq_keyword *kw; char *sbuf, *sbuf0; const char *s; enum me_fail error; int xlen; /* id isn't necessarily the table index... locate item */ for (kw = &rpq_keywords[0]; kw -> id != RPQ_USER; kw++) { } if ((!kw->allow_oride) || (kw->oride <= 0)) { return 0; } rpqtext = x3270rpq + kw->oride; if ((*rpqtext == '0') && (toupper((unsigned char)*(rpqtext+1)) == 'X')) { /* Text has 0x prefix... interpret as hex, no translation */ char hexstr[512]; /* more than enough room to copy */ char *p_h; char c; bool is_first_hex_digit; p_h = &hexstr[0]; /* * Copy the hex digits from X3270RPQ, removing white * space, and using all upper case for the hex digits a-f. */ rpqtext += 2; /* skip 0x prefix */ for (*p_h = '\0'; *rpqtext; rpqtext++) { c = toupper((unsigned char)*rpqtext); if ((c==':') || (c=='\0')) { break; } if (isspace((unsigned char)c)) { continue; /* skip white space */ } if (!isxdigit((unsigned char)c)) { rpq_warning("RPQ USER term has non-hex character"); break; } x = (p_h - hexstr) / 2; if (x >= buflen) { x = buflen; rpq_warning("RPQ USER term truncated after %d bytes", x); break; /* too long, truncate */ } *p_h++ = c; /* copy (upper case) character */ *p_h = '\0'; /* keep string properly terminated */ } /* * 'hexstr' is now a character string of 0-9, A-F only, * (a-f were converted to upper case). * There may be an odd number of characters, implying a leading * 0. The string is also known to fit in the area specified. */ /* * Hex digits are handled in pairs, set a flag so we keep track * of which hex digit we're currently working with. */ is_first_hex_digit = ((strlen(hexstr) % 2) == 0); if (!is_first_hex_digit) { rpq_warning("RPQ USER term has odd number of hex digits"); } *buf = 0; /* initialize first byte for possible implied leading zero */ for (p_h = &hexstr[0]; *p_h; p_h++) { int n; /* convert the hex character to a value 0-15 */ n = isdigit((unsigned char)*p_h) ? *p_h - '0' : *p_h - 'A' + 10; if (is_first_hex_digit) { *buf = n << 4; } else { *buf++ |= n; } is_first_hex_digit = !is_first_hex_digit; } return (strlen(hexstr) + 1) / 2; } /* plain text - subject to ascii/ebcdic translation */ /* * Copy the source string to a temporary buffer, terminating on * ':', unless preceded by '\'. */ sbuf = sbuf0 = Malloc(strlen(rpqtext) + 1); for (s = rpqtext; *s && (*s != ':'); s++) { if (*s == '\\' && *(s + 1)) { *sbuf++ = *++s; } else { *sbuf++ = *s; } } *sbuf = '\0'; /* Translate multibyte to EBCDIC in the target buffer. */ xlen = multibyte_to_ebcdic_string(sbuf0, strlen(sbuf0), buf, buflen, &error); if (xlen < 0) { rpq_warning("RPQ USER term translation error"); if (buflen) { *buf = asc2ebc0['?']; x = 1; } } else { x = xlen; } Free(sbuf0); return x; } #if !defined(_WIN32) /*[*/ static size_t get_rpq_address(unsigned char *buf, const size_t maxlen) { struct rpq_keyword *kw; size_t x = 0; if (maxlen < 2) { omit_due_space_limit = true; return 0; } /* id isn't necessarily the table index... locate item */ for (kw = &rpq_keywords[0]; kw->id != RPQ_ADDRESS; kw++) { } /* Is there a user override? */ if ((kw->allow_oride) && (kw->oride > 0)) { char *p1, *p2, *rpqtext; # if defined(X3270_IPV6) /*[*/ struct addrinfo *res; int ga_err; # else /*][*/ in_addr_t ia; # endif /*]*/ p1 = x3270rpq + kw->oride; rpqtext = (char *) malloc(strlen(p1) + 1); for (p2 = rpqtext; *p1; p2++) { if (*p1 == ':') { break; } if ((*p1 == '\\') && (*(p1 + 1) == ':')) { p1++; } *p2 = *p1; p1++; } *p2 = '\0'; # if defined(X3270_IPV6) /*[*/ ga_err = getaddrinfo(rpqtext, NULL, NULL, &res); if (ga_err == 0) { void *src = NULL; int len = 0; SET16(buf, res->ai_family); x += 2; switch (res->ai_family) { case AF_INET: src = &((struct sockaddr_in *)res->ai_addr)->sin_addr; len = sizeof(struct in_addr); break; case AF_INET6: src = &((struct sockaddr_in6 *)res->ai_addr)->sin6_addr; len = sizeof(struct in6_addr); break; default: rpq_warning("RPQ ADDRESS term has unrecognized family %u", res->ai_family); break; } if (x + len <= maxlen) { x += len; memcpy(buf, src, len); } else { rpq_warning("RPQ ADDRESS term incomplete due to space limit"); } /* Give back storage obtained by getaddrinfo */ freeaddrinfo(res); } else { rpq_warning("RPQ: can't resolve '%s': %s", rpqtext, # if defined(_WIN32) /*[*/ to_localcp(gai_strerror(ga_err)) # else /*][*/ gai_strerror(ga_err) # endif /*]*/ ); } # else /*][*/ /* * No IPv6 support. * Use plain old inet_addr() and gethostbyname(). */ ia = inet_addr(rpqtext); if (ia == htonl(INADDR_NONE)) { struct hostent *h; h = gethostbyname(rpqtext); if (h == NULL || h->h_addrtype != AF_INET) { rpq_warning("RPQ: gethostbyname error"); return 0; } memcpy(&ia, h->h_addr_list[0], h->h_length); } SET16(buf, AF_INET); x += 2; if (x + (int)sizeof(in_addr_t) <= maxlen) { memcpy(buf, &ia, sizeof(in_addr_t)); x += sizeof(in_addr_t); } else { rpq_warning("RPQ ADDRESS term incomplete due to space limit"); } # endif /*]*/ free(rpqtext); } else { /* No override... get our address from the actual socket */ union { struct sockaddr sa; struct sockaddr_in sa4; # if defined(X3270_IPV6) /*[*/ struct sockaddr_in6 sa6; # endif /*]*/ } u; int addrlen = sizeof(u); void *src = NULL; int len = 0; if (net_getsockname(&u, &addrlen) < 0) { return 0; } SET16(buf, u.sa.sa_family); x += 2; switch (u.sa.sa_family) { case AF_INET: src = &u.sa4.sin_addr; len = sizeof(struct in_addr); break; # if defined(X3270_IPV6) /*[*/ case AF_INET6: src = &u.sa6.sin6_addr; len = sizeof(struct in6_addr); break; # endif /*]*/ default: rpq_warning("RPQ ADDRESS term has unrecognized family %u", u.sa.sa_family); break; } if (x + len <= maxlen) { memcpy(buf, src, len); x += len; } else { rpq_warning("RPQ ADDRESS term incomplete due to space limit"); } } return x; } #endif /*]*/ #define RPQ_WARNBUF_SIZE 1024 static char *rpq_warnbuf = NULL; static int rpq_wbcnt = 0; static void rpq_warning(const char *fmt, ...) { va_list a; /* Only accumulate RPQ warnings if they have not been displayed already. */ if (!rpq_complained) { va_start(a, fmt); if (rpq_warnbuf == NULL) { rpq_warnbuf = Malloc(RPQ_WARNBUF_SIZE); } if (rpq_wbcnt < RPQ_WARNBUF_SIZE) { *(rpq_warnbuf + rpq_wbcnt++) = '\n'; *(rpq_warnbuf + rpq_wbcnt) = '\0'; } if (rpq_wbcnt < RPQ_WARNBUF_SIZE) { rpq_wbcnt += vsnprintf(rpq_warnbuf + rpq_wbcnt, RPQ_WARNBUF_SIZE - rpq_wbcnt, fmt, a); } va_end(a); } } static void rpq_dump_warnings(void) { /* If there's something to complain about, only complain once. */ if (!rpq_complained && rpq_wbcnt) { popup_an_error("%s", rpq_warnbuf); rpq_wbcnt = 0; rpq_complained = true; free(rpq_warnbuf); rpq_warnbuf = NULL; } } suite3270-4.1/Common/run_action.c000066400000000000000000000176061413735575200166060ustar00rootroot00000000000000/* * Copyright (c) 1993-2016, 2018 Paul Mattes. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the names of Paul Mattes nor the names of his contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO * EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * run_action.c * Floating action invocation. */ #include "globals.h" #include "wincmn.h" #include #include #include "actions.h" #include "idle.h" #include "kybd.h" #include "lazya.h" #include "popups.h" #include "source.h" #include "task.h" #include "trace.h" #include "utils.h" #include "varbuf.h" #include "w3misc.h" #include "xio.h" static void action_data(task_cbh handle, const char *buf, size_t len, bool success); static bool action_done(task_cbh handle, bool success, bool abort); /* Action context. */ typedef struct { llist_t llist; /* list linkage */ char *result; /* accumulated result */ size_t result_len; enum iaction ia; /* cause */ } action_context_t; static llist_t action_contexts = LLIST_INIT(action_contexts); /* Action callback collection. */ typedef struct { llist_t llist; /* linkage */ tcb_t *cb; /* callback block */ } action_cb_t; static llist_t action_cbs = LLIST_INIT(action_cbs); /** * Callback for data returned to keymap. * * @param[in] handle Callback handle * @param[in] buf Buffer * @param[in] len Buffer length * @param[in] success True if data, false if error message */ static void action_data(task_cbh handle, const char *buf, size_t len, bool success) { action_context_t *k; bool found = false; FOREACH_LLIST(&action_contexts, k, action_context_t *) { if (k == (action_context_t *)handle) { found = true; break; } } FOREACH_LLIST_END(&action_contexts, k, action_context_t *); if (!found) { vtrace("action_data: no match\n"); return; } k->result = Realloc(k->result, k->result_len + 1 + len + 1); if (k->result_len) { k->result[k->result_len++] = '\n'; } strncpy(k->result + k->result_len, buf, len); k->result[k->result_len + len] = '\0'; k->result_len += len; } /** * Callback for completion of one command executed from a keymap. * * @param[in] handle Callback handle * @param[in] success True if child succeeded * @param[in] abort True if aborting * * @return True if context is complete */ static bool action_done(task_cbh handle, bool success, bool abort) { action_context_t *k; bool found = false; FOREACH_LLIST(&action_contexts, k, action_context_t *) { if (k == (action_context_t *)handle) { found = true; break; } } FOREACH_LLIST_END(&action_contexts, k, action_context_t *); if (!found) { vtrace("action_data: no match\n"); return true; } if (success) { if (k->result) { popup_an_info("%s", k->result); } } else { if (k->result) { popup_an_error("%s", k->result); } else { popup_an_error("%s failed", ia_name[k->ia]); } } if (k->result) { Free(k->result); } llist_unlink(&k->llist); Free(k); /* Yes, done. */ return true; } /** * Push an action. * * @param[in] ia Cause. * @param[in] s Text of action. */ static void push_action(enum iaction ia, char *s) { action_cb_t *acb; tcb_t *cb; bool found = false; action_context_t *k; /* Find a callback block. */ FOREACH_LLIST(&action_cbs, acb, action_cb_t *) { if (acb->cb->ia == ia) { cb = acb->cb; found = true; break; } } FOREACH_LLIST_END(&action_cbs, acb, action_cb_t *); if (!found) { acb = (action_cb_t *)Calloc(sizeof(action_cb_t) + sizeof(tcb_t), 1); llist_init(&acb->llist); acb->cb = cb = (tcb_t *)(acb + 1); LLIST_APPEND(&acb->llist, action_cbs); cb->shortname = ia_name[ia]; cb->ia = ia; cb->flags = CB_NEW_TASKQ | CB_UI; cb->data = action_data; cb->done = action_done; cb->run = NULL; } /* Set up a context. */ k = (action_context_t *)Malloc(sizeof(action_context_t)); llist_init(&k->llist); k->result = NULL; k->result_len = 0; k->ia = ia; LLIST_APPEND(&k->llist, action_contexts); /* Push a callback with a macro. */ push_cb(s, strlen(s), cb, (task_cbh)k); } /** * Push a floating keymap action. * * @param[in] s Text of action. */ void push_keymap_action(char *s) { push_action(IA_KEYMAP, s); } /** * Push a floating macro. * * @param[in] s Text of action. */ void push_macro(char *s) { push_action(IA_MACRO, s); } /** * Push a floating keypad action. * * @param[in] s Text of action. */ void push_keypad_action(char *s) { push_action(IA_KEYPAD, s); } /** * Run an action. * * @param[in] name Action name * @param[in] cause Cause * @param[in] parm1 First parameter (optional) * @param[in] parm2 Second parameter (optional) * * @return true */ bool run_action(const char *name, enum iaction cause, const char *parm1, const char *parm2) { if (!parm1) { push_action(cause, lazyaf("%s()", name)); } else if (!parm2) { push_action(cause, lazyaf("%s(%s)", name, parm1)); } else { push_action(cause, lazyaf("%s(%s,%s)", name, parm1, parm2)); } return true; } /** * Format a parameter for safe consumption as a parameter. * * @param[in] s Parameter * * @return Possibly-quoted copy */ char * safe_param(const char *s) { varbuf_t r; char c; char *ret; bool quoted = false; if (strcspn(s, " ,()\\\b\f\r\n\t\v\"") == strlen(s)) { /* Safe already. */ return (char *)s; } /* Quote it. */ vb_init(&r); vb_appends(&r, "\""); while ((c = *s++)) { if (quoted) { /* Pass the backslash and whatever follows. */ vb_appends(&r, "\\"); vb_append(&r, &c, 1); quoted = false; } else { if (c == '\\') { /* Remember a backslash. */ quoted = true; } else if (c == '"') { /* Double quotes need to be escaped. */ vb_appends(&r, "\\\""); } else { /* Pass through anything else. */ vb_append(&r, &c, 1); } } } if (quoted) { /* Trailing backslash must be quoted. */ vb_appends(&r, "\\\\"); } vb_appends(&r, "\""); ret = vb_consume(&r); lazya(ret); return ret; } /** * Run an action, given an array of parameters. * * @param[in] name Action name * @param[in] cause Cause * @param[in] count Parameter count * @param[in] parms Parameters * * @return true */ bool run_action_a(const char *name, enum iaction cause, unsigned count, const char **parms) { varbuf_t r; unsigned i; char *s; vb_init(&r); vb_appendf(&r, "%s(", name); for (i = 0; i < count; i++) { vb_appendf(&r, "%s%s", (i > 0)? ",": "", safe_param(parms[i])); } vb_appends(&r, ")"); s = vb_consume(&r); push_action(cause, s); Free(s); return true; } suite3270-4.1/Common/s3270.c000066400000000000000000000207411413735575200152150ustar00rootroot00000000000000/* * Copyright (c) 1993-2009, 2013-2021 Paul Mattes. * Copyright (c) 1990, Jeff Sparkes. * Copyright (c) 1989, Georgia Tech Research Corporation (GTRC), Atlanta, * GA 30332. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the names of Paul Mattes, Jeff Sparkes, GTRC nor their * contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES, JEFF SPARKES AND GTRC "AS IS" * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL PAUL MATTES, JEFF SPARKES OR * GTRC BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, * OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * s3270.c * A displayless 3270 Terminal Emulator * Main proceudre. */ #include "globals.h" #if !defined(_WIN32) /*[*/ # include # include #endif /*]*/ #include #include "appres.h" #include "3270ds.h" #include "resources.h" #include "actions.h" #include "bind-opt.h" #include "codepage.h" #include "ctlrc.h" #include "unicodec.h" #include "ft.h" #include "glue.h" #include "host.h" #include "httpd-core.h" #include "httpd-nodes.h" #include "httpd-io.h" #include "idle.h" #include "kybd.h" #include "login_macro.h" #include "min_version.h" #include "model.h" #include "nvt.h" #include "opts.h" #include "peerscript.h" #include "popups.h" #include "print_screen.h" #include "product.h" #include "proxy_toggle.h" #include "query.h" #include "save_restore.h" #include "screen.h" #include "selectc.h" #include "sio_glue.h" #include "task.h" #include "telnet.h" #include "toggles.h" #include "trace.h" #include "screentrace.h" #include "utils.h" #include "vstatus.h" #include "xio.h" #if defined(_WIN32) /*[*/ # include "w3misc.h" # include "windirs.h" # include "winvers.h" #endif /*]*/ #if defined(_WIN32) /*[*/ char *instdir = NULL; char *mydesktop = NULL; char *mydocs3270 = NULL; char *commondocs3270 = NULL; unsigned windirs_flags; #endif /*]*/ static void s3270_register(void); void usage(const char *msg) { if (msg != NULL) { fprintf(stderr, "%s\n", msg); } fprintf(stderr, "Usage: %s [options] [prefix:][LUname@]hostname[:port]\n", app); fprintf(stderr, "Use " OptHelp1 " for the list of options\n"); exit(1); } static void s3270_connect(bool ignored) { if (CONNECTED || appres.disconnect_clear) { ctlr_erase(true); } } /** * Set up a callback session. */ static void callback_init(void) { struct sockaddr *sa; socklen_t sa_len; socket_t s; if (appres.scripting.callback == NULL) { return; } if (!parse_bind_opt(appres.scripting.callback, &sa, &sa_len)) { Error("Cannot parse " ResCallback); } if ((s = socket(sa->sa_family, SOCK_STREAM, 0)) == INVALID_SOCKET) { #if !defined(_WIN32) /*[*/ perror("socket"); #else /*][*/ fprintf(stderr, "socket: %s\n", win32_strerror(WSAGetLastError())); fflush(stdout); #endif /*]*/ exit(1); } if (connect(s, sa, sa_len) < 0) { #if !defined(_WIN32) /*[*/ perror(ResCallback " connect"); #else /*][*/ fprintf(stderr, "connect: %s\n", win32_strerror(WSAGetLastError())); fflush(stdout); #endif /*]*/ exit(1); } /* Get ready for I/O. */ peer_accepted(s, NULL); } int main(int argc, char *argv[]) { const char *cl_hostname = NULL; #if defined(_WIN32) /*[*/ get_version_info(); if (!get_dirs("wc3270", &instdir, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, &windirs_flags)) { exit(1); } if (sockstart() < 0) { exit(1); } #endif /*]*/ /* * Call the module registration functions, to build up the tables of * actions, options and callbacks. */ codepage_register(); ctlr_register(); ft_register(); host_register(); idle_register(); kybd_register(); task_register(); query_register(); nvt_register(); print_screen_register(); save_restore_register(); s3270_register(); toggles_register(); trace_register(); screentrace_register(); xio_register(); sio_glue_register(); hio_register(); proxy_register(); model_register(); net_register(); login_macro_register(); vstatus_register(); argc = parse_command_line(argc, (const char **)argv, &cl_hostname); if (appres.min_version != NULL) { check_min_version(appres.min_version); } if (codepage_init(appres.codepage) != CS_OKAY) { xs_warning("Cannot find code page \"%s\"", appres.codepage); codepage_init(NULL); } model_init(); ctlr_init(ALL_CHANGE); ctlr_reinit(ALL_CHANGE); idle_init(); httpd_objects_init(); if (appres.httpd_port) { struct sockaddr *sa; socklen_t sa_len; if (!parse_bind_opt(appres.httpd_port, &sa, &sa_len)) { xs_warning("Invalid -httpd port \"%s\"", appres.httpd_port); } else { hio_init(sa, sa_len); } } ft_init(); hostfile_init(); #if !defined(_WIN32) /*[*/ /* Make sure we don't fall over any SIGPIPEs. */ signal(SIGPIPE, SIG_IGN); #endif /*]*/ /* Handle initial toggle settings. */ initialize_toggles(); /* Connect to the host. */ if (cl_hostname != NULL) { if (!host_connect(cl_hostname, IA_UI)) { exit(1); } /* Wait for negotiations to complete or fail. */ while (!IN_NVT && !IN_3270) { process_events(true); if (!PCONNECTED) { exit(1); } } } /* Prepare to run a peer script. */ peer_script_init(); /* Prepare a callback session. */ callback_init(); /* Process events forever. */ while (1) { process_events(true); } } /** * Set product-specific appres defaults. */ void product_set_appres_defaults(void) { appres.scripted = true; appres.oerr_lock = true; } static void s3270_toggle(toggle_index_t ix, enum toggle_type tt) { } bool model_can_change(void) { return true; } void screen_init(void) { } /** * Main module registration. */ static void s3270_register(void) { static toggle_register_t toggles[] = { { MONOCASE, s3270_toggle, 0 } }; static opt_t s3270_opts[] = { { OptScripted, OPT_NOP, false, ResScripted, NULL, NULL, "Turn on scripting" }, { OptUtf8, OPT_BOOLEAN, true, ResUtf8, aoffset(utf8), NULL, "Force local codeset to be UTF-8" }, { OptCallback, OPT_STRING, false, ResCallback, aoffset(scripting.callback), NULL, "Callback address and port" }, }; static res_t s3270_resources[] = { { ResCallback, aoffset(scripting.callback), XRM_STRING }, { ResIdleCommand,aoffset(idle_command), XRM_STRING }, { ResIdleCommandEnabled,aoffset(idle_command_enabled),XRM_BOOLEAN }, { ResIdleTimeout,aoffset(idle_timeout), XRM_STRING } }; static xres_t s3270_xresources[] = { { ResPrintTextScreensPerPage, V_FLAT }, #if defined(_WIN32) /*[*/ { ResPrinterCodepage, V_FLAT }, { ResPrinterName, V_FLAT }, { ResPrintTextFont, V_FLAT }, { ResPrintTextHorizontalMargin, V_FLAT }, { ResPrintTextOrientation, V_FLAT }, { ResPrintTextSize, V_FLAT }, { ResPrintTextVerticalMargin, V_FLAT }, #else /*][*/ { ResPrintTextCommand, V_FLAT }, #endif /*]*/ }; /* Register our toggles. */ register_toggles(toggles, array_count(toggles)); /* Register for state changes. */ register_schange(ST_CONNECT, s3270_connect); register_schange(ST_3270_MODE, s3270_connect); /* Register our options. */ register_opts(s3270_opts, array_count(s3270_opts)); /* Register our resources. */ register_resources(s3270_resources, array_count(s3270_resources)); register_xresources(s3270_xresources, array_count(s3270_xresources)); } suite3270-4.1/Common/s3270/000077500000000000000000000000001413735575200150455ustar00rootroot00000000000000suite3270-4.1/Common/s3270/localdefs.h000066400000000000000000000034631413735575200171600ustar00rootroot00000000000000/* * Copyright (c) 2000-2009, 2014-2015 Paul Mattes. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of Paul Mattes nor his contributors may be used * to endorse or promote products derived from this software without * specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. */ /* * localdefs.h * Local definitions for s3270. * * This file contains definitions for environment-specific * facilities, such as memory allocation, I/O registration, * and timers. */ /* Identify ourselves. */ #define S3270 1 #if defined(_WIN32) /*[*/ # define WS3270 1 #endif /*]*/ suite3270-4.1/Common/save_restore.c000066400000000000000000000143421413735575200171400ustar00rootroot00000000000000/* * Copyright (c) 2021 Paul Mattes. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the names of Paul Mattes nor the names of his contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO * EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * save_restore.c * Input save and restore. */ #include "globals.h" #include #include "actions.h" #include "ctlr.h" #include "fprint_screen.h" #include "kybd.h" #include "names.h" #include "popups.h" #include "screen.h" #include "toggles.h" #include "trace.h" #if defined(_WIN32) /*[*/ # include "winprint.h" #endif /*]*/ #include "save_restore.h" /* Saved screen contents. */ typedef struct saved_screen { char *name; /* Name, or NULL */ int rows; /* Number of rows */ int columns; /* Number of columns */ char *text; /* Saved text */ struct saved_screen *next; /* Next element */ } saved_screen_t; /* The set of saved screens. */ static saved_screen_t *saved_screens; /** * Find a saved screen. * * @param[in] name Screen name * * @return Saved screen, or null */ static saved_screen_t * find_screen(const char *name) { saved_screen_t *s; for (s = saved_screens; s != NULL; s = s->next) { if ((name == NULL && s->name == NULL) || (name != NULL && s->name != NULL && !strcasecmp(name, s->name))) { return s; } } return NULL; } /** * Save a screen. * * @param[in] ia Origin of action * @param[in] argc Argument count * @param[in] argv Arguments * * @return true for success, false for failure */ static bool SaveInput_action(ia_t ia, unsigned argc, const char **argv) { const char *name; saved_screen_t *s; bool found = true; int fd; char *temp_name; FILE *f; fps_status_t status; char buf[8192]; size_t sz; action_debug(AnSaveInput, ia, argc, argv); if (check_argc(AnSaveInput, argc, 0, 1) < 0) { return false; } if (!IN_3270) { vtrace(AnSaveInput " not in 3270 mode, no-op\n"); return true; } name = (argc > 0)? argv[0]: NULL; if ((s = find_screen(name)) == NULL) { s = (saved_screen_t *)Calloc(1, sizeof(saved_screen_t) + ((name != NULL)? (strlen(name) + 1): 0)); if (name != NULL) { s->name = (char *)(s + 1); strcpy(s->name, name); } found = false; } /* Write the screen contents into a file. */ #if defined(_WIN32) /*[*/ fd = win_mkstemp(&temp_name, P_TEXT); #else /*][*/ temp_name = NewString("/tmp/x3hXXXXXX"); fd = mkstemp(temp_name); #endif /*]*/ if (fd < 0) { popup_an_errno(errno, "mkstemp"); if (!found) { Free(s); } return false; } f = fdopen(fd, "w+"); status = fprint_screen(f, P_TEXT, FPS_EVEN_IF_EMPTY | FPS_INCLUDE_ZERO_INPUT, NULL, NULL, NULL); switch (status) { case FPS_STATUS_SUCCESS: case FPS_STATUS_SUCCESS_WRITTEN: break; default: popup_an_error(AnSaveInput ": Screen print failed"); if (!found) { Free(s); } return false; } /* Save the file contents. */ fflush(f); rewind(f); sz = 0; while (fgets(buf, sizeof(buf), f) != NULL) { s->text = Realloc(s->text, sz + strlen(buf) + 1); strcpy(s->text + sz, buf); sz += strlen(buf); } fclose(f); unlink(temp_name); Free(temp_name); s->rows = ROWS; s->columns = COLS; if (!found) { s->next = saved_screens; saved_screens = s; } return true; } /** * Restore a screen. * * @param[in] ia Origin of action * @param[in] argc Argument count * @param[in] argv Arguments * * @return true for success, false for failure */ static bool RestoreInput_action(ia_t ia, unsigned argc, const char **argv) { saved_screen_t *s; const char *name; int old_cursor; bool is_toggled; action_debug(AnRestoreInput, ia, argc, argv); if (check_argc(AnRestoreInput, argc, 0, 1) < 0) { return false; } if (!IN_3270 || kybdlock) { vtrace(AnRestoreInput " not in 3270 mode or keyboard locked, no-op\n"); return true; } /* Find the saved screen. */ name = (argc > 0)? argv[0]: NULL; if ((s = find_screen(name)) == NULL) { popup_an_error(AnRestoreInput ": No such screen: %s", (name != NULL)? name: "(default)"); return false; } if (s->rows != ROWS || s->columns != COLS) { popup_an_error(AnRestoreInput ": Rows/Columns mismatch"); return false; } /* Paste it from (0, 0), with overlay paste set. */ old_cursor = cursor_addr; cursor_addr = 0; if (!(is_toggled = toggled(OVERLAY_PASTE))) { toggle_toggle(OVERLAY_PASTE); } emulate_input(s->text, strlen(s->text), true, false); if (!is_toggled) { toggle_toggle(OVERLAY_PASTE); } cursor_move(old_cursor); return true; } /** * Save/restore module registration. */ void save_restore_register(void) { static action_table_t save_restore_actions[] = { { AnSaveInput, SaveInput_action, ACTION_KE }, { AnRestoreInput, RestoreInput_action, ACTION_KE } }; /* Register the actions. */ register_actions(save_restore_actions, array_count(save_restore_actions)); } suite3270-4.1/Common/save_stubs.c000066400000000000000000000031261413735575200166130ustar00rootroot00000000000000/* * Copyright (c) 1999-2009, 2015 Paul Mattes. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the names of Paul Mattes nor the names of his contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO * EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * save_stubs.c * Stubs for save.c. */ void save_yourself(void) { } suite3270-4.1/Common/screen_stubs1.c000066400000000000000000000041201413735575200172100ustar00rootroot00000000000000/* * Copyright (c) 2015 Paul Mattes. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the names of Paul Mattes nor the names of his contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO * EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * screen_stubs1.c * Stubs for screen.c when there is no display at all. * * These are defined by x3270, c3270 and wc3270, but not by * anything else. * * Other screen stubs that are common to everything but x3270 * are in screen_stubs2. */ #include "globals.h" #include "ctlr.h" #include "screen.h" void cursor_move(int baddr) { cursor_addr = baddr; } bool screen_selected(int baddr _is_unused) { return false; } void ring_bell(void) { } void screen_disp(bool erasing _is_unused) { } void screen_flip(void) { } bool screen_flipped(void) { return false; } suite3270-4.1/Common/screen_stubs2.c000066400000000000000000000044271413735575200172230ustar00rootroot00000000000000/* * Copyright (c) 2015 Paul Mattes. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the names of Paul Mattes nor the names of his contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO * EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * screen_stubs2.c * Stubs for screen.c when there is a non-graphical display or * no display at all. */ #include "globals.h" #include "screen.h" static int cw = 7; int *char_width = &cw; static int ch = 7; int *char_height = &ch; void blink_start(void) { } unsigned display_heightMM(void) { return 100; } unsigned display_height(void) { return 1; } unsigned display_widthMM(void) { return 100; } unsigned display_width(void) { return 1; } void mcursor_locked(void) { } void mcursor_normal(void) { } void mcursor_waiting(void) { } bool screen_obscured(void) { return false; } void screen_scroll(unsigned char fg, unsigned char bg) { } unsigned long screen_window_number(void) { return 0L; } bool screen_has_bg_color(void) { return true; } suite3270-4.1/Common/screen_stubs3.c000066400000000000000000000032221413735575200172140ustar00rootroot00000000000000/* * Copyright (c) 2015 Paul Mattes. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the names of Paul Mattes nor the names of his contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO * EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * screen_stubs3.c * Stubs for screen.c. */ #include "globals.h" #include "screen.h" void screen_132(void) { } void screen_80(void) { } suite3270-4.1/Common/screen_stubs4.c000066400000000000000000000033151413735575200172200ustar00rootroot00000000000000/* * Copyright (c) 2015 Paul Mattes. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the names of Paul Mattes nor the names of his contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO * EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * screen_stubs4.c * Stubs for screen.c. */ #include "globals.h" #include "screen.h" bool screen_new_display_charsets(const char *realname, const char *csnames) { return true; /* success */ } suite3270-4.1/Common/screen_stubs5.c000066400000000000000000000032111413735575200172140ustar00rootroot00000000000000/* * Copyright (c) 2015 Paul Mattes. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the names of Paul Mattes nor the names of his contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO * EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * screen_stubs4.c * Stubs for screen functions. */ #include "globals.h" #include "screen.h" void screen_system_fixup(void) { } suite3270-4.1/Common/screen_stubs6.c000066400000000000000000000032261413735575200172230ustar00rootroot00000000000000/* * Copyright (c) 2015 Paul Mattes. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the names of Paul Mattes nor the names of his contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO * EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * screen_stubs5.c * Stubs for screen functions. */ #include "globals.h" #include "screen.h" bool screen_suspend(void) { return false; } suite3270-4.1/Common/screen_stubs7.c000066400000000000000000000032321413735575200172210ustar00rootroot00000000000000/* * Copyright (c) 2015-2017 Paul Mattes. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the names of Paul Mattes nor the names of his contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO * EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * screen_stubs7.c * Stubs for screen functions. */ #include "globals.h" #include "screen.h" void enable_cursor(bool enable _is_unused) { } suite3270-4.1/Common/screentrace.c000066400000000000000000000506421413735575200167400ustar00rootroot00000000000000/* * Copyright (c) 1993-2016, 2018-2021 Paul Mattes. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the names of Paul Mattes nor the names of his contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO * EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * screentrace.c * Screen tracing. * */ #include "globals.h" #include #include #include #include #include #include "3270ds.h" #include "appres.h" #include "ctlr.h" #include "actions.h" #include "codepage.h" #include "ctlrc.h" #include "find_console.h" #include "fprint_screen.h" #include "lazya.h" #include "menubar.h" #include "names.h" #include "nvt.h" #include "popups.h" #include "print_command.h" #include "print_screen.h" #include "product.h" #include "resources.h" #include "save.h" #include "task.h" #include "telnet.h" #include "telnet_core.h" #include "toggles.h" #include "trace.h" #include "trace_gui.h" #include "utf8.h" #include "utils.h" #include "vstatus.h" #if defined(_WIN32) /*[*/ # include "w3misc.h" # include "windirs.h" # include "winprint.h" #endif /*]*/ #include "screentrace.h" /* Typedefs */ /* Extended wait screen tracing context. */ typedef struct { ptype_t ptype; unsigned opts; char *caption; } screentrace_t; typedef struct { tss_t target; ptype_t ptype; unsigned opts; } screentrace_opts_t; /* Statics */ static char *onetime_screentrace_name = NULL; static screentrace_opts_t screentrace_default = { TSS_FILE, P_TEXT, 0 }; static screentrace_opts_t screentrace_current = { TSS_FILE, P_TEXT, 0 }; static char *screentrace_name = NULL; #if defined(_WIN32) /*[*/ static char *screentrace_tmpfn; #endif /*]*/ static int screentrace_count; /* Globals */ /* Statics */ static FILE *screentracef = NULL; static fps_t screentrace_fps = NULL; /* * Screen trace function, called when the host clears the screen. */ static void do_screentrace(bool always _is_unused) { fps_status_t status; status = fprint_screen_body(screentrace_fps); if (FPS_IS_ERROR(status)) { popup_an_error("Screen trace failed"); } else if (status == FPS_STATUS_SUCCESS) { vtrace("screentrace: nothing written\n"); } else { vstatus_screentrace(++screentrace_count); } } void trace_screen(bool is_clear) { trace_skipping = false; if (!toggled(SCREEN_TRACE) || !screentracef) { return; } do_screentrace(is_clear); } /* Called from NVT emulation code to log a single character. */ void trace_char(char c) { if (!toggled(SCREEN_TRACE) || !screentracef) { return; } fputc(c, screentracef); } /* * Called when disconnecting in NVT mode, to finish off the trace file * and keep the next screen clear from re-recording the screen image. * (In a gross violation of data hiding and modularity, trace_skipping is * manipulated directly in ctlr_clear()). */ void trace_nvt_disc(void) { int i; fputc('\n', screentracef); for (i = 0; i < COLS; i++) { fputc('=', screentracef); } fputc('\n', screentracef); trace_skipping = true; } /* * Extended wait continue function for screen tracing. */ static void screentrace_continue(void *context, bool cancel) { screentrace_t *st = (screentrace_t *)context; int srv; if (cancel) { vtrace("Toggle(ScreenTrace) canceled\n"); Free(st); return; } srv = fprint_screen_start(screentracef, st->ptype, st->opts | FPS_DIALOG_COMPLETE, st->caption, screentrace_name, &screentrace_fps, NULL); Free(st); if (FPS_IS_ERROR(srv)) { if (srv == FPS_STATUS_ERROR) { popup_an_error("Screen trace start failed"); } else if (srv == FPS_STATUS_CANCEL) { vtrace("Screen trace canceled.\n"); } fclose(screentracef); screentracef = NULL; return; } if (srv == FPS_STATUS_WAIT) { assert(srv != FPS_STATUS_WAIT); return; } /* We're really tracing, turn the flag on. */ set_toggle(SCREEN_TRACE, true); menubar_retoggle(SCREEN_TRACE); vstatus_screentrace((screentrace_count = 0)); } /* * Extract the type from a filename suffix. */ static ptype_t type_from_file(const char *filename) { size_t sl = strlen(filename); /* Infer the type from the suffix. */ if ((sl > 5 && !strcasecmp(filename + sl - 5, ".html")) || (sl > 4 && !strcasecmp(filename + sl - 4, ".htm"))) { return P_HTML; } else if (sl > 4 && !strcasecmp(filename + sl - 4, ".rtf")) { return P_RTF; } else { return P_NONE; } } #if !defined(_WIN32) /*[*/ /* Abort screen tracing because the printer process failed. */ static void screentrace_abort(void) { if (toggled(SCREEN_TRACE)) { vtrace("Turning off screen tracing due to print failure\n"); do_toggle(SCREEN_TRACE); } } #endif /*]*/ /* * Begin screen tracing. * Returns true for success, false for failure. */ static bool screentrace_go(tss_t target, ptype_t ptype, unsigned opts, char *tfn) { char *xtfn = NULL; int srv; char *caption = NULL; unsigned full_opts; screentrace_t *st; if (target == TSS_FILE) { xtfn = do_subst(tfn, DS_VARS | DS_TILDE | DS_UNIQUE); screentracef = fopen(xtfn, "a"); if (ptype == P_NONE) { if (screentrace_default.ptype != P_NONE) { ptype = screentrace_default.ptype; } else { ptype_t t = type_from_file(xtfn); if (t != P_NONE) { ptype = t; } else { ptype = P_TEXT; } } } } else { /* Printer. */ #if !defined(_WIN32) /*[*/ char *pct_e; if (tfn == NULL) { tfn = screentrace_default_printer(); } /* Do %E% substitution. */ if ((pct_e = strstr(tfn, "%E%")) != NULL) { xtfn = xs_buffer("%.*s%s%s", (int)(pct_e - tfn), tfn, programname, pct_e + 3); } else { xtfn = NewString(tfn); } screentracef = printer_open(xtfn, screentrace_abort); #else /*][*/ int fd; fd = win_mkstemp(&screentrace_tmpfn, ptype); if (fd < 0) { popup_an_errno(errno, "%s", "(temporary file)"); Free(tfn); return false; } screentracef = fdopen(fd, (ptype == P_GDI)? "wb+": "w"); #endif /*]*/ if (ptype == P_NONE) { #if !defined(_WIN32) /*[*/ ptype = P_TEXT; #else /*][*/ ptype = P_GDI; #endif /*]*/ } } if (screentracef == NULL) { if (target == TSS_FILE) { popup_an_errno(errno, "%s", xtfn); } else { #if !defined(_WIN32) /*[*/ popup_an_errno(errno, "%s", xtfn); #else /*][*/ popup_an_errno(errno, "%s", "(temporary file)"); #endif /*]*/ } Free(xtfn); #if defined(_WIN32) /*[*/ Free(screentrace_tmpfn); screentrace_tmpfn = NULL; #endif /*]*/ return false; } Replace(screentrace_name, NewString(xtfn)); /* Leak? */ Free(tfn); SETLINEBUF(screentracef); #if !defined(_WIN32) /*[*/ fcntl(fileno(screentracef), F_SETFD, 1); #endif /*]*/ st = (screentrace_t *)Calloc(1, sizeof(screentrace_t)); caption = default_caption(); full_opts = opts | ((target == TSS_PRINTER)? FPS_FF_SEP: 0); srv = fprint_screen_start(screentracef, ptype, full_opts, caption, screentrace_name, &screentrace_fps, st); if (FPS_IS_ERROR(srv)) { if (srv == FPS_STATUS_ERROR) { popup_an_error("Screen trace start failed"); } else if (srv == FPS_STATUS_CANCEL) { popup_an_error("Screen trace canceled"); } fclose(screentracef); screentracef = NULL; Free(st); return false; } if (srv == FPS_STATUS_WAIT) { /* Asynchronous. */ st->ptype = ptype; st->opts = full_opts; st->caption = caption; task_xwait(st, screentrace_continue, "printing"); return false; /* for now */ } /* We're really tracing, turn the flag on. */ set_toggle(SCREEN_TRACE, true); menubar_retoggle(SCREEN_TRACE); return true; } /* End the screen trace. */ static void end_screentrace(bool is_final _is_unused) { fprint_screen_done(&screentrace_fps); fclose(screentracef); screentracef = NULL; #if defined(_WIN32) /*[*/ vtrace("Cleaning up screenTrace\n"); if (screentrace_current.target == TSS_PRINTER) { /* Get rid of the temp file. */ unlink(screentrace_tmpfn); } #endif /*]*/ } void trace_set_screentrace_file(tss_t target, ptype_t ptype, unsigned opts, const char *name) { screentrace_resource_setup(); screentrace_current.target = target; screentrace_current.ptype = ptype; screentrace_current.opts = opts; Replace(onetime_screentrace_name, name? NewString(name): NULL); } tss_t trace_get_screentrace_target(void) { screentrace_resource_setup(); return screentrace_current.target; } ptype_t trace_get_screentrace_type(void) { screentrace_resource_setup(); return screentrace_current.ptype; } const char * trace_get_screentrace_name(void) { return (screentrace_name && screentrace_name[0])? screentrace_name: "(system default)"; } /* Return the default filename for screen tracing. */ char * screentrace_default_file(ptype_t ptype) { const char *suffix; switch (ptype) { default: case P_TEXT: suffix = "txt"; break; case P_HTML: suffix = "html"; break; case P_RTF: suffix = "rtf"; break; } #if defined(_WIN32) /*[*/ return xs_buffer("%s%sx3scr.$UNIQUE.%s", appres.trace_dir? appres.trace_dir: default_trace_dir(), appres.trace_dir? "\\": "", suffix); #else /*][*/ return xs_buffer("%s/x3scr.$UNIQUE.%s", appres.trace_dir, suffix); #endif /*]*/ } /* Return the default printer for screen tracing. */ char * screentrace_default_printer(void) { char *name; #if !defined(_WIN32) /*[*/ name = get_resource(ResPrintTextCommand); if (name == NULL) { name = "lpr"; } #else /*][*/ name = get_resource(ResPrinterName); if (name == NULL) { name = ""; } #endif /*]*/ return NewString(name); } /* Set up screen tracing resources. */ void screentrace_resource_setup(void) { static bool done = false; if (done) { return; } done = true; screentrace_default.ptype = P_NONE; if (appres.screentrace.type != NULL) { if (!strcasecmp(appres.screentrace.type, "text")) { screentrace_default.ptype = P_TEXT; } else if (!strcasecmp(appres.screentrace.type, "html")) { screentrace_default.ptype = P_HTML; } else if (!strcasecmp(appres.screentrace.type, "rtf")) { screentrace_default.ptype = P_RTF; } else { xs_warning("Unknown %s: %s", ResScreenTraceType, appres.screentrace.type); } } if (appres.screentrace.target != NULL) { if (!strcasecmp(appres.screentrace.target, "file")) { screentrace_default.target = TSS_FILE; } else if (!strcasecmp(appres.screentrace.target, "printer")) { screentrace_default.target = TSS_PRINTER; } else { xs_warning("Unknown %s: %s", ResScreenTraceTarget, appres.screentrace.target); } } screentrace_default.opts = appres.interactive.print_dialog? 0: FPS_NO_DIALOG; screentrace_current = screentrace_default; /* struct copy */ } /* * Turn screen tracing on or off. * * If turning it on, screentrace_current.target contains TSS_FILE or * TSS_PRINTER, and screentrace_name is NULL (use the default) or the name of * a file, printer command (Unix) or printer (Windows). */ static void toggle_screenTrace(toggle_index_t ix _is_unused, enum toggle_type tt) { char *tracefile_buf = NULL; char *tracefile; if (toggled(SCREEN_TRACE)) { /* Turn it on. */ screentrace_resource_setup(); vstatus_screentrace((screentrace_count = 0)); if (onetime_screentrace_name != NULL) { tracefile = tracefile_buf = onetime_screentrace_name; onetime_screentrace_name = NULL; } else if (screentrace_current.target == TSS_FILE && appres.screentrace.file != NULL) { tracefile = appres.screentrace.file; } else { if (screentrace_current.target == TSS_FILE) { tracefile = tracefile_buf = screentrace_default_file(screentrace_current.ptype); } else { tracefile = tracefile_buf = screentrace_default_printer(); } } if (!screentrace_go(screentrace_current.target, screentrace_current.ptype, screentrace_current.opts, NewString(tracefile))) { set_toggle(SCREEN_TRACE, false); vstatus_screentrace((screentrace_count = -1)); } } else { /* Turn it off. */ if (ctlr_any_data() && !trace_skipping) { do_screentrace(false); } end_screentrace(tt == TT_FINAL); screentrace_current = screentrace_default; /* struct copy */ vstatus_screentrace((screentrace_count = -1)); } if (tracefile_buf != NULL) { Free(tracefile_buf); } trace_gui_toggle(); } static bool screentrace_show(bool as_info) { char *message; if (toggled(SCREEN_TRACE)) { message = xs_buffer("Screen tracing is enabled, %s: %s.", (screentrace_current.target == TSS_FILE)? "file": #if !defined(_WIN32) /*[*/ "with print command", #else /*]*/ "to printer", #endif /*]*/ trace_get_screentrace_name()); } else { message = NewString("Screen tracing is disabled."); } if (as_info) { popup_an_info("%s", message); } else { action_output("%s", message); } Free(message); return true; } /* * Turn screen tracing off. */ static bool screentrace_off(bool as_info) { tss_t target; const char *name = NULL; char *message; if (!toggled(SCREEN_TRACE)) { popup_an_error("Screen tracing is already disabled."); return false; } /* Get the current parameters and turn it off. */ target = screentrace_current.target; if (target == TSS_FILE) { name = lazya(NewString(trace_get_screentrace_name())); } do_toggle(SCREEN_TRACE); /* Display what it was. */ if (target == TSS_FILE) { message = xs_buffer("Screen tracing complete. Trace file is %s.", name); } else { message = NewString("Screen tracing to printer complete."); } if (as_info) { popup_an_info("%s", message); } else { action_output("%s", message); } Free(message); return true; } /* Keyword masks. */ #define STK_ON 0x1 #define STK_OFF 0x2 #define STK_INFO 0x4 #define STK_FILE 0x8 #define STK_PRINTER 0x10 #define STK_TEXT 0x20 #define STK_HTML 0x40 #define STK_RTF 0x80 #define STK_GDI 0x100 #define STK_DIALOG 0x200 #define STK_NODIALOG 0x400 #define STK_WORDPAD 0x800 #define STK_NAME 0x1000 #define STK_TYPES (STK_TEXT | STK_HTML | STK_RTF) #define STK_FILE_SET (STK_FILE | STK_TYPES) #define STK_PRINTER_SET (STK_PRINTER | STK_GDI | STK_DIALOG | STK_NODIALOG | \ STK_WORDPAD) #define STK_WINDOWS (STK_GDI | STK_DIALOG | STK_NODIALOG | STK_WORDPAD) /* Keyword database. */ typedef struct { const char *keyword; unsigned mask; unsigned mutex; } stk_t; stk_t stk[] = { { KwOn, STK_ON, STK_ON | STK_OFF }, { KwOff, STK_OFF, STK_OFF | STK_ON | STK_FILE_SET | STK_PRINTER_SET }, { KwInfo, STK_INFO, STK_INFO }, { KwFile, STK_FILE, STK_FILE | STK_OFF | STK_PRINTER_SET }, { KwPrinter, STK_PRINTER, STK_PRINTER | STK_OFF | STK_FILE_SET }, { KwText, STK_TEXT, STK_TEXT | STK_OFF | STK_TYPES | STK_PRINTER_SET }, { KwHtml, STK_HTML, STK_HTML | STK_OFF | STK_TYPES | STK_PRINTER_SET }, { KwRtf, STK_RTF, STK_RTF | STK_OFF | STK_TYPES | STK_PRINTER_SET }, { KwGdi, STK_GDI, STK_GDI | STK_OFF | STK_FILE_SET }, { KwDialog, STK_DIALOG, STK_DIALOG | STK_OFF | STK_NODIALOG | STK_FILE_SET }, { KwNoDialog, STK_NODIALOG, STK_NODIALOG | STK_OFF | STK_DIALOG | STK_FILE_SET }, { KwWordPad, STK_WORDPAD, STK_WORDPAD | STK_OFF | STK_FILE_SET }, { "(name)", STK_NAME, STK_NAME | STK_OFF }, { NULL, 0, 0 }, }; /* Return the first keyword present in the mask. */ const char * stk_name(unsigned mask) { int i; for (i = 0; stk[i].keyword != NULL; i++) { if (mask & stk[i].mask) { return stk[i].keyword; } } return "(none)"; } /* * ScreenTrace() * ScreenTrace(On[,Info]) * ScreenTrace(On[,Info],filename) backwards-compatible * ScreenTrace(On[,Info],File[,Text|Html|Rtf],filename) preferred * ScreenTrace(On[,Info],Printer) * ScreenTrace(On[,Info],Printer,"print command") Unix * ScreenTrace(On[,Info],Printer[,Gdi[,Dialog|NoDialog]],printername) Windows * ScreenTrace(Off[,Info]) */ static bool ScreenTrace_action(ia_t ia, unsigned argc, const char **argv) { tss_t target = TSS_FILE; ptype_t ptype = P_NONE; const char *name = NULL; unsigned i; int kx; unsigned opts = screentrace_default.opts; bool as_info = false; unsigned kw_mask = 0; action_debug(AnScreenTrace, ia, argc, argv); screentrace_resource_setup(); if (argc == 0) { /* Display current status. */ return screentrace_show(as_info); } /* Parse the arguments. */ for (i = 0; i < argc; i++) { for (kx = 0; stk[kx].keyword != NULL; kx++) { if ((stk[kx].mask != STK_NAME && !strcasecmp(argv[i], stk[kx].keyword)) || (i == argc - 1 && stk[kx].mask == STK_NAME)) { unsigned bad_match = kw_mask & stk[kx].mutex; if (bad_match) { popup_an_error(AnScreenTrace "(): Keyword conflict (%s, %s)", stk_name(bad_match), stk[kx].keyword); return false; } #if !defined(_WIN32) /*[*/ if (stk[kx].mask & STK_WINDOWS) { popup_an_error(AnScreenTrace "(): %s is for Windows only", stk[kx].keyword); return false; } #endif /*]*/ kw_mask |= stk[kx].mask; if (stk[kx].mask == STK_NAME) { name = argv[i]; } break; } } if (stk[kx].keyword == NULL) { popup_an_error(AnScreenTrace "(): Syntax error"); return false; } } /* Sort them out. Conflicts have already been caught. */ if (kw_mask & STK_INFO) { as_info = true; } if (kw_mask & STK_OFF) { return screentrace_off(as_info); } if (kw_mask & (STK_PRINTER | STK_GDI | STK_DIALOG | STK_NODIALOG)) { /* Send to printer. */ if (kw_mask & STK_WORDPAD) { popup_an_error(AnScreenTrace "(): WordPad printing is not supported"); return false; } target = TSS_PRINTER; #if !defined(_WIN32) /*[*/ ptype = P_TEXT; #else /*][*/ ptype = P_GDI; #endif /*]*/ if (kw_mask & STK_DIALOG) { opts &= ~FPS_NO_DIALOG; } else if (kw_mask & STK_NODIALOG) { opts |= FPS_NO_DIALOG; } if (name == NULL) { #if !defined(_WIN32) /*[*/ name = get_resource(ResPrintTextCommand); #else /*][*/ name = get_resource(ResPrinterName); #endif /*]*/ } } else { /* Send to a file. */ target = TSS_FILE; if (kw_mask & STK_TEXT) { ptype = P_TEXT; } else if (kw_mask & STK_HTML) { ptype = P_HTML; } else if (kw_mask & STK_RTF) { ptype = P_RTF; } else if (screentrace_default.ptype == P_NONE && name != NULL) { ptype_t t = type_from_file(name); if (t != P_NONE) { ptype = t; } } if (ptype == P_NONE) { ptype = (screentrace_default.ptype != P_NONE)? screentrace_default.ptype: P_TEXT; } } if (toggled(SCREEN_TRACE)) { popup_an_error(AnScreenTrace "(): Screen tracing is already enabled."); return false; } /* Attempt to turn on tracing. */ trace_set_screentrace_file(target, ptype, opts, name); do_toggle(SCREEN_TRACE); if (!toggled(SCREEN_TRACE)) { /* Failed to turn it on. */ return false; } /* Display the result. */ return screentrace_show(as_info); } /** * Screentrace module registration. */ void screentrace_register(void) { static toggle_register_t toggles[] = { { SCREEN_TRACE, toggle_screenTrace, TOGGLE_NEED_INIT | TOGGLE_NEED_CLEANUP } }; static action_table_t actions[] = { { AnScreenTrace, ScreenTrace_action, ACTION_KE } }; /* Register the toggles. */ register_toggles(toggles, array_count(toggles)); /* Register the actions. */ register_actions(actions, array_count(actions)); } suite3270-4.1/Common/scroll.c000066400000000000000000000342341413735575200157370ustar00rootroot00000000000000/* * Copyright (c) 1994-2009, 2013-2017, 2020-2021 Paul Mattes. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of Paul Mattes nor his contributors may be used * to endorse or promote products derived from this software without * specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. */ /* * scroll.c * Scrollbar support */ #include "globals.h" #include "appres.h" #include "ctlr.h" #include "3270ds.h" #include "actions.h" #include "ctlrc.h" #include "kybd.h" #include "names.h" #include "popups.h" #include "resources.h" #include "screen.h" #include "scroll.h" #include "selectc.h" #include "telnet.h" #include "toggles.h" #include "trace.h" #include "utils.h" #include "vstatus.h" /* Globals */ bool scroll_initted = false; /* Statics */ /* Saved screens. */ static struct ea **ea_save = (struct ea **) NULL; /* Number of lines saved. */ static int n_saved = 0; static int scroll_next = 0; static int scrolled_back = 0; static bool need_saving = true; static bool vscreen_swapped = false; static char *sbuf = NULL; static int sa_bufsize; static char *zbuf = NULL; static struct ea *defaults_buf = NULL; /* Thumb state: */ /* Fraction of blank area above thumb (0.0 to 1.0) */ static float thumb_top = 0.0; /* How much blank area there is, above and below the thumb (maximum possible * value for thumb_top) */ static float thumb_top_base = 0.0; /* Fraction of thumb shown (1.0 - thumb_top_base) */ static float thumb_shown = 1.0; /* The number of scroll lines to save. */ static int scroll_max; static bool scroll_has_3270; static void sync_scroll(int sb); static void save_image(void); static void scroll_reset(void); /* * Initialize (or re-initialize) the scrolling parameters and save area. */ void scroll_buf_init(void) { register int i; int sa_size; unsigned char *s; /* Set the number of rows to save, as a multiple of maxROWS. */ scroll_max = appres.interactive.save_lines; if (scroll_max % maxROWS) { scroll_max = ((scroll_max + maxROWS - 1) / maxROWS) * maxROWS; } if (scroll_max < maxROWS * 5) { scroll_max = maxROWS * 5; } if (sbuf != NULL) { Free(sbuf); Free(zbuf); Free(defaults_buf); Free(ea_save); } sa_size = scroll_max + maxROWS; ea_save = (struct ea **)Calloc(sizeof(struct ea *), sa_size); sa_bufsize = (sa_size * (sizeof(unsigned char) + sizeof(struct ea))) * maxCOLS; sbuf = Malloc(sa_bufsize); zbuf = Malloc(maxCOLS); memset(zbuf, '\0', maxCOLS); defaults_buf = Calloc(maxCOLS, sizeof(struct ea)); for (i = 0; i < maxCOLS; i++) { /* * Black and intensify ensure that the area outside of the primary * screen don't inherit other display attributes from fields at the * edges. */ defaults_buf[i].bg = HOST_COLOR_BLACK; defaults_buf[i].gr = XAH_INTENSIFY & 0x0f; } s = (unsigned char *)sbuf; for (i = 0; i < sa_size; s += (maxCOLS * sizeof(struct ea)), i++) { ea_save[i] = (struct ea *)s; } scroll_reset(); scroll_initted = true; } static void screen_set_thumb_traced(float top, float shown, int saved, int screen, int back) { net_nvt_break(); #if defined(SCROLL_DEBUG) /*[*/ vtrace(" -> screen_set_thumb(top %f, shown %f)\n", top, shown); vtrace(" -> top %f top_base %f shown %f\n", thumb_top, thumb_top_base, thumb_shown); #endif /*]*/ screen_set_thumb(top, shown, saved, screen, back); } /* * Reset the scrolling parameters and erase the save area. */ static void scroll_reset(void) { memset(sbuf, 0, sa_bufsize); scroll_next = 0; n_saved = 0; scrolled_back = 0; thumb_top_base = thumb_top = 0.0; thumb_shown = 1.0; need_saving = true; screen_set_thumb_traced(thumb_top, thumb_shown, n_saved, maxROWS, scrolled_back); ctlr_enable_cursor(true, EC_SCROLL); } /* * Save lines of data from the top of the screen. */ void scroll_save(int n) { int row; net_nvt_break(); #if defined(SCROLL_DEBUG) /*[*/ vtrace("scroll_save(%d)\n", n); #endif /*]*/ /* Scroll to bottom on "output". */ if (scrolled_back) { sync_scroll(0); } /* Save the screen contents. */ for (row = 0; row < n; row++) { if (row < ROWS) { memmove(ea_save[scroll_next], ea_buf + (row * COLS), COLS * sizeof(struct ea)); if (COLS < maxCOLS) { memcpy(ea_save[scroll_next] + COLS, defaults_buf, (maxCOLS - COLS) * sizeof(struct ea)); } } else { memcpy(ea_save[scroll_next], defaults_buf, maxCOLS * sizeof(struct ea)); } scroll_next = (scroll_next + 1) % scroll_max; if (n_saved < scroll_max) { n_saved++; } } if (n == ROWS && n < maxROWS) { for (row = n; row < maxROWS; row++) { memcpy(ea_save[scroll_next], defaults_buf, maxCOLS * sizeof(struct ea)); } scroll_next = (scroll_next + 1) % scroll_max; if (n_saved < scroll_max) { n_saved++; } } /* * If we've been asked to snap the whole screen and ended up on a * non-screenful boundary, this must be scrolled NVT data. Pad with blank * lines to get a screenful. */ if (n != 1 && (scroll_next % maxROWS)) { int pad; for (pad = maxROWS - (scroll_next % maxROWS); pad; pad--) { memcpy(ea_save[scroll_next], defaults_buf, maxCOLS * sizeof(struct ea)); scroll_next = (scroll_next + 1) % scroll_max; if (n_saved < scroll_max) { n_saved++; } } } #if defined(SCROLL_DEBUG) /*[*/ vtrace(" -> n_saved %d\n", n_saved); #endif /*]*/ /* Reset the thumb. */ thumb_top_base = thumb_top = ((float)n_saved / (float)(scroll_max + maxROWS)); thumb_shown = (float)(1.0 - thumb_top); screen_set_thumb_traced(thumb_top, thumb_shown, n_saved, maxROWS, scrolled_back); } /* * Jump to the bottom of the scroll buffer. */ void scroll_to_bottom(void) { if (scrolled_back) { sync_scroll(0); } need_saving = true; } /* * Save the current screen image, if it hasn't been saved since last updated. */ static void save_image(void) { int i; if (!need_saving) { return; } #if defined(SCROLL_DEBUG) /*[*/ vtrace("save_image: saving %d lines after the buffer, n_saved %d\n", maxROWS, n_saved); #endif /*]*/ for (i = 0; i < maxROWS; i++) { memmove(ea_save[scroll_max + i], (ea_buf + (i * COLS)), COLS * sizeof(struct ea)); } need_saving = false; } /* * Redraw the display so it begins back lines. */ static void sync_scroll(int sb) { int slop; int i; int scroll_first; float tt0; #if defined(SCROLL_DEBUG) /*[*/ vtrace("sync_scroll(sb=%d) n_saved=%d, scrolled_back=%d\n", sb, n_saved, scrolled_back); #endif /*]*/ unselect(0, ROWS * COLS); /* * If in 3270 mode, round to a multiple of the screen size and * set the scroll bar. */ if (scroll_has_3270) { if ((slop = (sb % maxROWS))) { if (slop <= maxROWS / 2) { sb -= slop; } else { sb += maxROWS - slop; } } if (sb) { kybd_scroll_lock(true); } else { kybd_scroll_lock(false); } } /* Update the status line. */ if (scroll_has_3270) { vstatus_scrolled(sb / maxROWS); } else { vstatus_scrolled(0); } /* Swap screen sizes. */ if (sb && !scrolled_back && ((COLS < maxCOLS) || (ROWS < maxROWS))) { #if defined(SCROLL_DEBUG) /*[*/ vtrace("sync_scroll: primary -> alt\n"); #endif /*]*/ COLS = maxCOLS; ROWS = maxROWS; vscreen_swapped = true; } else if (!sb && scrolled_back && vscreen_swapped) { #if defined(SCROLL_DEBUG) /*[*/ vtrace("sync_scroll: alt -> primary\n"); #endif /*]*/ ctlr_shrink(); COLS = MODEL_2_COLS; ROWS = MODEL_2_ROWS; vscreen_swapped = false; } scroll_first = (scroll_next + scroll_max - sb) % scroll_max; #if defined(SCROLL_DEBUG) /*[*/ vtrace("sync_scroll: scroll_first is %d\n", scroll_first); #endif /*]*/ /* Update the screen. */ for (i = 0; i < maxROWS; i++) { if (i < sb) { memmove((ea_buf + (i * COLS)), ea_save[(scroll_first + i) % scroll_max], COLS * sizeof(struct ea)); } else { memmove((ea_buf + (i * COLS)), ea_save[scroll_max + i - sb], COLS * sizeof(struct ea)); } } /* Disable the cursor if we're scrolled back, enable it if not. */ ctlr_enable_cursor(sb == 0, EC_SCROLL); scrolled_back = sb; ctlr_changed(0, ROWS * COLS); blink_start(); tt0 = ((float)n_saved / (float)(scroll_max + maxROWS)); thumb_shown = (float)(1.0 - tt0); thumb_top = ((float)(n_saved-sb) / (float)(scroll_max + maxROWS)); screen_set_thumb_traced(thumb_top, thumb_shown, n_saved, maxROWS, scrolled_back); } /* * Fixed-amount scroll action. */ static void scroll_n(int nss, int direction) { int nsr; if (!n_saved) { return; } if (!nss) { nss = 1; } save_image(); if (direction > 0) { /* scroll forward */ if (nss > scrolled_back) { sync_scroll(0); } else { nsr = scrolled_back - nss; if (scroll_has_3270 && (nsr % maxROWS)) { nsr -= nsr % maxROWS; } sync_scroll(nsr); } } else { /* scroll back */ if (scrolled_back + nss > n_saved) { sync_scroll(n_saved); } else { nsr = scrolled_back + nss; if (scroll_has_3270 && (nsr % maxROWS)) { nsr += maxROWS - (nsr % maxROWS); } sync_scroll(nsr); } } screen_set_thumb_traced((float)(n_saved - scrolled_back) / (float)(scroll_max + maxROWS), thumb_shown, n_saved, maxROWS, scrolled_back); } /* * Callback for "scroll" action (incrementing the thumb in one direction). */ void scroll_proc(int n, int total) { float pct; int nss; if (!n_saved) { return; } if (n < 0) { pct = (float)(-n) / (float)total; } else { pct = (float)n / (float)total; } #if defined(SCROLL_DEBUG) /*[*/ vtrace("scroll_proc(%d, %d) -> %f%%\n", n, total, pct); #endif /*]*/ nss = (int)(pct * thumb_shown * n_saved); scroll_n(nss, n); } /* * Callback for "jump" action (moving the thumb to a particular spot). */ void jump_proc(float top) { #if defined(SCROLL_DEBUG) /*[*/ vtrace("jump_proc(%f)\n", top); #endif /*]*/ if (!n_saved) { screen_set_thumb_traced(thumb_top, thumb_shown, n_saved, maxROWS, scrolled_back); return; } if (top > thumb_top_base) { /* too far down */ screen_set_thumb_traced(thumb_top_base, thumb_shown, n_saved, maxROWS, scrolled_back); sync_scroll(0); } else { save_image(); sync_scroll((int)((1.0 - top) * n_saved)); } } /* * Resynchronize the thumb (called when the scrollbar is turned on). */ void rethumb(void) { screen_set_thumb_traced(thumb_top, thumb_shown, n_saved, maxROWS, scrolled_back); } static bool Scroll_action(ia_t ia, unsigned argc, const char **argv) { action_debug(AnScroll, ia, argc, argv); if (check_argc(AnScroll, argc, 1, 2) < 0) { return false; } if (argc == 1 && !strcasecmp(argv[0], KwForward)) { scroll_n(maxROWS, +1); } else if (argc == 1 && !strcasecmp(argv[0], KwBackward)) { scroll_n(maxROWS, -1); } else if (argc == 1 && !strcasecmp(argv[0], KwReset)) { scroll_reset(); } else if (argc == 2 && !strcasecmp(argv[0], KwSet)) { int n; char *ptr; int curr = scrolled_back; n = strtol(argv[1], &ptr, 10); if (n < 0 || ptr == argv[1] || *ptr != '\0') { popup_an_error(AnScroll "(): Invalid " KwSet ",n value"); return false; } if (n > n_saved) { vtrace("scroll set: %d > %d -> overflow\n", n, n_saved); n = n_saved; } if (n > curr) { /* Scroll back further. */ scroll_n(n - curr, -1); } else if (n < curr) { /* Scroll back less. */ scroll_n(curr - n, +1); } } else { return action_args_are(AnScroll, KwForward, KwBackward, KwReset, KwSet, NULL); return false; } return true; } /* * Toggle the length of the scrollback buffer. */ static bool toggle_save_lines(const char *name _is_unused, const char *value) { unsigned long l; char *end; int lines; if (!*value) { appres.unlock_delay_ms = 0; return true; } l = strtoul(value, &end, 10); lines = (int)l; if (*end != '\0' || (unsigned long)lines != l || lines < 0) { popup_an_error("Invalid %s value", ResSaveLines); return false; } appres.interactive.save_lines = lines; scroll_buf_init(); return true; } /* * Called when a host connects, disconnects or changes NVT/3270 modes. */ static void scroll_connect(bool ignored _is_unused) { if (CONNECTED) { /* Make scroll_has_3270 sticky across disconnects and UNBINDs. */ scroll_has_3270 = IN_3270 || (scroll_has_3270 && cstate == CONNECTED_UNBOUND); } } /** * Scrollbar module registration. */ void scroll_register(void) { static action_table_t scroll_actions[] = { { AnScroll, Scroll_action, ACTION_KE } }; /* Register the actions. */ register_actions(scroll_actions, array_count(scroll_actions)); /* Register the toggles. */ register_extended_toggle(ResSaveLines, toggle_save_lines, NULL, NULL, (void **)&appres.interactive.save_lines, XRM_INT); /* Register the state change callbacks. */ register_schange(ST_CONNECT, scroll_connect); register_schange(ST_3270_MODE, scroll_connect); } suite3270-4.1/Common/scroll_stubs.c000066400000000000000000000032661413735575200171600ustar00rootroot00000000000000/* * Copyright (c) 1995-2009, 2013-2017 Paul Mattes. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of Paul Mattes nor his contributors may be used * to endorse or promote products derived from this software without * specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. */ /* * scroll_stubs.c * Stub funtions for scroll.c. */ #include "globals.h" #include "scroll.h" void scroll_save(int n _is_unused) { } void scroll_to_bottom(void) { } suite3270-4.1/Common/see.c000066400000000000000000000300231413735575200152050ustar00rootroot00000000000000/* * Copyright (c) 1993-2009, 2013-2015 Paul Mattes. * Copyright (c) 2004, Don Russell. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the names of Paul Mattes, Don Russell, Jeff Sparkes, GTRC nor * the names of their contributors may be used to endorse or promote * products derived from this software without specific prior written * permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES AND DON RUSSELL "AS IS" AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL PAUL MATTES OR DON RUSSELL BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * see.c * 3270 data stream decode functions. * */ #include "globals.h" #include #include #include #include "3270ds.h" #include "lazya.h" #include "utf8.h" #include "utils.h" #include "see.h" #include "unicodec.h" #include "varbuf.h" /** * Return an unknown value. * * @param[in] value The value to encode * * @return Encoded text representation of the value, good for only one call. */ static const char * unknown(unsigned char value) { return lazyaf("unknown[0x%x]", value); } /** * Encode an EBCDIC character. * * @param[in] ch EBCDIC character to encode * * @return Encoded text representation of the value, good for only one call. */ const char * see_ebc(unsigned char ch) { char mb[16]; ucs4_t uc; switch (ch) { case FCORDER_NULL: return "NULL"; case FCORDER_FF: return "FF"; case FCORDER_CR: return "CR"; case FCORDER_SO: return "SO"; case FCORDER_SI: return "SI"; case FCORDER_NL: return "NL"; case FCORDER_EM: return "EM"; case FCORDER_LF: return "LF"; case FCORDER_DUP: return "DUP"; case FCORDER_FM: return "FM"; case FCORDER_SUB: return "SUB"; case FCORDER_EO: return "EO"; } if (ebcdic_to_multibyte_x(ch, CS_BASE, mb, sizeof(mb), EUO_NONE, &uc) && (mb[0] != ' ' || ch == 0x40)) { return lazya(NewString(mb)); } else { return lazyaf("X'%02X'", ch); } } /** * Encode an AID code * * @param[in] code AID value to encode * * @return Encoded text representation of the value, good for only one call. */ const char * see_aid(unsigned char code) { switch (code) { case AID_NO: return "NoAID"; case AID_ENTER: return "Enter"; case AID_PF1: return "PF1"; case AID_PF2: return "PF2"; case AID_PF3: return "PF3"; case AID_PF4: return "PF4"; case AID_PF5: return "PF5"; case AID_PF6: return "PF6"; case AID_PF7: return "PF7"; case AID_PF8: return "PF8"; case AID_PF9: return "PF9"; case AID_PF10: return "PF10"; case AID_PF11: return "PF11"; case AID_PF12: return "PF12"; case AID_PF13: return "PF13"; case AID_PF14: return "PF14"; case AID_PF15: return "PF15"; case AID_PF16: return "PF16"; case AID_PF17: return "PF17"; case AID_PF18: return "PF18"; case AID_PF19: return "PF19"; case AID_PF20: return "PF20"; case AID_PF21: return "PF21"; case AID_PF22: return "PF22"; case AID_PF23: return "PF23"; case AID_PF24: return "PF24"; case AID_OICR: return "OICR"; case AID_MSR_MHS: return "MSR_MHS"; case AID_SELECT: return "Select"; case AID_PA1: return "PA1"; case AID_PA2: return "PA2"; case AID_PA3: return "PA3"; case AID_CLEAR: return "Clear"; case AID_SYSREQ: return "SysReq"; case AID_QREPLY: return "QueryReplyAID"; default: return unknown(code); } } /** * Encode a field attribute. * * @param[in] fa Field attribute to encode * * @return Encoded text representation of the value, good for only one call. */ const char * see_attr(unsigned char fa) { varbuf_t r; const char *sep = "("; vb_init(&r); if (fa & FA_PROTECT) { vb_appendf(&r, "%sprotected", sep); sep = ","; if (fa & FA_NUMERIC) { vb_appendf(&r, "%sskip", sep); sep = ","; } } else if (fa & FA_NUMERIC) { vb_appendf(&r, "%snumeric", sep); sep = ","; } switch (fa & FA_INTENSITY) { case FA_INT_NORM_NSEL: break; case FA_INT_NORM_SEL: vb_appendf(&r, "%sdetectable", sep); sep = ","; break; case FA_INT_HIGH_SEL: vb_appendf(&r, "%sintensified", sep); sep = ","; break; case FA_INT_ZERO_NSEL: vb_appendf(&r, "%snondisplay", sep); sep = ","; break; } if (fa & FA_MODIFY) { vb_appendf(&r, "%smodified", sep); sep = ","; } if (strcmp(sep, "(")) { vb_appends(&r, ")"); } else { vb_appends(&r, "(default)"); } return lazya(vb_consume(&r)); } /** * Encode a highlight attribute. * * @param[in] setting Attribute to encode * * @return Encoded text representation of the value, good for only one call. */ static const char * see_highlight(unsigned char setting) { switch (setting) { case XAH_DEFAULT: return "default"; case XAH_NORMAL: return "normal"; case XAH_BLINK: return "blink"; case XAH_REVERSE: return "reverse"; case XAH_UNDERSCORE: return "underscore"; case XAH_INTENSIFY: return "intensify"; default: return unknown(setting); } } static const char *color_name[] = { "neutralBlack", "blue", "red", "pink", "green", "turquoise", "yellow", "neutralWhite", "black", "deepBlue", "orange", "purple", "paleGreen", "paleTurquoise", "grey", "white", NULL }; /** * Encode a color attribute. * * @param[in] setting Attribute to encode * * @return Encoded text representation of the value, good for only one call. */ const char * see_color(unsigned char setting) { if (setting == XAC_DEFAULT) { return "default"; } else if (setting < 0xf0) { return unknown(setting); } else { return color_name[setting - 0xf0]; } } /** * Decode a host color name or index. * * @param[in] name Color name or index * * @return Color index (HOST_COLOR_xxx) or -1. */ int decode_host_color(const char *name) { int i; unsigned long l; char *ptr; /* Check for invalid parameter. */ if (name == NULL || !*name) { return -1; } /* Check for a symbolic match. */ for (i = 0; color_name[i] != NULL; i++) { if (!strcasecmp(name, color_name[i])) { return i; } } /* Check for a number. */ l = strtoul(name, &ptr, 0); if (l > 0xf || ptr == name || *ptr != '\0') { return -1; } return (int)l; } /** * Encode a transparency attribute. * * @param[in] setting Attribute to encode * * @return Encoded text representation of the value, good for only one call. */ static const char * see_transparency(unsigned char setting) { switch (setting) { case XAT_DEFAULT: return "default"; case XAT_OR: return "or"; case XAT_XOR: return "xor"; case XAT_OPAQUE: return "opaque"; default: return unknown(setting); } } /** * Encode a validation attribute. * * @param[in] setting Attribute to encode * * @return Encoded text representation of the value, good for only one call. */ static const char * see_validation(unsigned char setting) { varbuf_t r; const char *sep = "("; vb_init(&r); if (setting & XAV_FILL) { vb_appendf(&r, "%sfill", sep); sep = ","; } if (setting & XAV_ENTRY) { vb_appendf(&r, "%sentry", sep); sep = ","; } if (setting & XAV_TRIGGER) { vb_appendf(&r, "%strigger", sep); sep = ","; } if (strcmp(sep, "(")) { vb_appends(&r, ")"); } else { vb_appends(&r, "(none)"); } return lazya(vb_consume(&r)); } /** * Encode an outlining attribute. * * @param[in] setting Attribute to encode * * @return Encoded text representation of the value, good for only one call. */ static const char * see_outline(unsigned char setting) { varbuf_t r; const char *sep = "("; vb_init(&r); if (setting & XAO_UNDERLINE) { vb_appendf(&r, "%sunderline", sep); sep = ","; } if (setting & XAO_RIGHT) { vb_appendf(&r, "%sright", sep); sep = ","; } if (setting & XAO_OVERLINE) { vb_appendf(&r, "%soverline", sep); sep = ","; } if (setting & XAO_LEFT) { vb_appendf(&r, "%sleft", sep); sep = ","; } if (strcmp(sep, "(")) { vb_appends(&r, ")"); } else { vb_appends(&r, "(none)"); } return lazya(vb_consume(&r)); } /** * Encode an input control attribute. * * @param[in] setting Attribute to encode * * @return Encoded text representation of the value, good for only one call. */ static const char * see_input_control(unsigned char setting) { switch (setting) { case XAI_DISABLED: return "disabled"; case XAI_ENABLED: return "enabled"; default: return unknown(setting); } } /** * Encode an extended field attribute. * * @param[in] efa Attribute to encode * @param[in] value Value of attribute * * @return Encoded text representation of the value, good for only one call. */ const char * see_efa(unsigned char efa, unsigned char value) { switch (efa) { case XA_ALL: return lazyaf(" all(%x)", value); case XA_3270: return lazyaf(" 3270%s", see_attr(value)); case XA_VALIDATION: return lazyaf(" validation%s", see_validation(value)); case XA_OUTLINING: return lazyaf(" outlining(%s)", see_outline(value)); case XA_HIGHLIGHTING: return lazyaf(" highlighting(%s)", see_highlight(value)); case XA_FOREGROUND: return lazyaf(" foreground(%s)", see_color(value)); case XA_CHARSET: return lazyaf(" charset(%x)", value); case XA_BACKGROUND: return lazyaf(" background(%s)", see_color(value)); case XA_TRANSPARENCY: return lazyaf(" transparency(%s)", see_transparency(value)); case XA_INPUT_CONTROL: return lazyaf(" input-control(%s)", see_input_control(value)); default: return lazyaf(" %s[0x%x]", unknown(efa), value); } } /** * Encode just an extended attribute. * * @param[in] efa Attribute to encode * * @return Encoded text representation of the value, good for only one call. */ const char * see_efa_only(unsigned char efa) { switch (efa) { case XA_ALL: return "all"; case XA_3270: return "3270"; case XA_VALIDATION: return "validation"; case XA_OUTLINING: return "outlining"; case XA_HIGHLIGHTING: return "highlighting"; case XA_FOREGROUND: return "foreground"; case XA_CHARSET: return "charset"; case XA_BACKGROUND: return "background"; case XA_TRANSPARENCY: return "transparency"; default: return unknown(efa); } } /** * Encode a query reply code. * * @param[in] id Code to encode * * @return Encoded text representation of the value, good for only one call. */ const char * see_qcode(unsigned char id) { switch (id) { case QR_CHARSETS: return "CharacterSets"; case QR_IMP_PART: return "ImplicitPartition"; case QR_SUMMARY: return "Summary"; case QR_USABLE_AREA: return "UsableArea"; case QR_COLOR: return "Color"; case QR_HIGHLIGHTING: return "Highlighting"; case QR_REPLY_MODES: return "ReplyModes"; case QR_DBCS_ASIA: return "DbcsAsia"; case QR_ALPHA_PART: return "AlphanumericPartitions"; case QR_DDM: return "DistributedDataManagement"; case QR_RPQNAMES: return "RPQNames"; default: return unknown(id); } } suite3270-4.1/Common/select_stubs.c000066400000000000000000000034341413735575200171360ustar00rootroot00000000000000/* * Copyright (c) 1999-2009, 2015 Paul Mattes. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the names of Paul Mattes nor the names of his contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO * EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * select_stubs.c * Stubs for select.c. */ #include "globals.h" #include "selectc.h" void unselect(int baddr _is_unused, int len _is_unused) { } bool area_is_selected(int baddr _is_unused, int len _is_unused) { return false; } void select_register(void) { } suite3270-4.1/Common/sf.c000066400000000000000000000526351413735575200150560ustar00rootroot00000000000000/* * Copyright (c) 1994-2010, 2013-2015, 2018-2019 Paul Mattes. * Copyright (c) 2004, Don Russell. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the names of Paul Mattes, Don Russell nor their * contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES AND DON RUSSELL "AS IS" * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL PAUL MATTES OR DON RUSSELL * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, * OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * sf.c * This module handles 3270 structured fields. * */ #include "globals.h" #include "3270ds.h" #include "appres.h" #include "ctlr.h" #include "codepage.h" #include "ctlrc.h" #include "ft_dft.h" #include "ft_private.h" #include "kybd.h" #include "sf.h" /* has to come before rpq.h */ #include "rpq.h" #include "screen.h" #include "see.h" #include "telnet_core.h" #include "trace.h" #define SW_3279_2 0x09 #define SH_3279_2 0x0c #define Xr_3279_2 0x000a02e5 #define Yr_3279_2 0x0002006f /* Statics */ static bool qr_in_progress = false; static enum pds sf_read_part(unsigned char buf[], unsigned buflen); static enum pds sf_erase_reset(unsigned char buf[], int buflen); static enum pds sf_set_reply_mode(unsigned char buf[], int buflen); static enum pds sf_create_partition(unsigned char buf[], int buflen); static enum pds sf_outbound_ds(unsigned char buf[], int buflen); static void query_reply_start(void); static void do_query_reply(unsigned char code); static void query_reply_end(void); typedef bool qr_multi_fn_t(unsigned *subindex, bool *more); static qr_single_fn_t do_qr_summary, do_qr_usable_area, do_qr_alpha_part, do_qr_charsets, do_qr_color, do_qr_highlighting, do_qr_reply_modes, do_qr_imp_part, do_qr_null; static qr_single_fn_t do_qr_dbcs_asia; static qr_single_fn_t do_qr_ddm; static struct reply { unsigned char code; qr_single_fn_t *single_fn; qr_multi_fn_t *multi_fn; } replies[] = { { QR_SUMMARY, do_qr_summary, NULL }, /* 0x80 */ { QR_USABLE_AREA, do_qr_usable_area, NULL }, /* 0x81 */ { QR_ALPHA_PART, do_qr_alpha_part, NULL }, /* 0x84 */ { QR_CHARSETS, do_qr_charsets, NULL }, /* 0x85 */ { QR_COLOR, do_qr_color, NULL }, /* 0x86 */ { QR_HIGHLIGHTING, do_qr_highlighting, NULL }, /* 0x87 */ { QR_REPLY_MODES, do_qr_reply_modes, NULL }, /* 0x88 */ { QR_DBCS_ASIA, do_qr_dbcs_asia, NULL }, /* 0x91 */ { QR_DDM, do_qr_ddm, NULL }, /* 0x95 */ { QR_RPQNAMES, do_qr_rpqnames, NULL }, /* 0xa1 */ { QR_IMP_PART, do_qr_imp_part, NULL }, /* 0xa6 */ /* QR_NULL must be last in the table */ { QR_NULL, do_qr_null, NULL }, /* 0xff */ }; /* * NSR_ALL is the number of query replies supported, including NULL. * NSR is the number of query replies supported, except for NULL. */ #define NSR_ALL (sizeof(replies)/sizeof(struct reply)) #define NSR (NSR_ALL - 1) /* * Process a 3270 Write Structured Field command */ enum pds write_structured_field(unsigned char buf[], size_t buflen) { size_t fieldlen; unsigned char *cp = buf; bool first = true; enum pds rv = PDS_OKAY_NO_OUTPUT; enum pds rv_this = PDS_OKAY_NO_OUTPUT; bool bad_cmd = false; /* Skip the WSF command itself. */ cp++; buflen--; /* Interpret fields. */ while (buflen > 0) { if (first) trace_ds(" "); else trace_ds("< WriteStructuredField "); first = false; /* Pick out the field length. */ if (buflen < 2) { trace_ds("error: single byte at end of message\n"); return rv ? rv : PDS_BAD_CMD; } fieldlen = (cp[0] << 8) + cp[1]; if (fieldlen == 0) fieldlen = buflen; if (fieldlen < 3) { trace_ds("error: field length %d too small\n", (int)fieldlen); return rv ? rv : PDS_BAD_CMD; } if (fieldlen > buflen) { trace_ds("error: field length %d exceeds remaining " "message length %d\n", (int)fieldlen, (int)buflen); return rv ? rv : PDS_BAD_CMD; } /* Dispatch on the ID. */ switch (cp[2]) { case SF_READ_PART: trace_ds("ReadPartition"); rv_this = sf_read_part(cp, (int)fieldlen); break; case SF_ERASE_RESET: trace_ds("EraseReset"); rv_this = sf_erase_reset(cp, (int)fieldlen); break; case SF_SET_REPLY_MODE: trace_ds("SetReplyMode"); rv_this = sf_set_reply_mode(cp, (int)fieldlen); break; case SF_CREATE_PART: trace_ds("CreatePartition"); rv_this = sf_create_partition(cp, (int)fieldlen); break; case SF_OUTBOUND_DS: trace_ds("OutboundDS"); rv_this = sf_outbound_ds(cp, (int)fieldlen); break; case SF_TRANSFER_DATA: /* File transfer data */ trace_ds("FileTransferData"); ft_dft_data(cp, (int)fieldlen); break; default: trace_ds("unsupported ID 0x%02x\n", cp[2]); rv_this = PDS_BAD_CMD; break; } /* * Accumulate errors or output flags. * One real ugliness here is that if we have already * generated some output, then we have already positively * acknowledged the request, so if we fail here, we have no * way to return the error indication. */ if (rv_this < 0) bad_cmd = true; else rv |= rv_this; /* Skip to the next field. */ cp += fieldlen; buflen -= fieldlen; } if (first) trace_ds(" (null)\n"); if (bad_cmd && !rv) return PDS_BAD_CMD; else return rv; } static enum pds sf_read_part(unsigned char buf[], unsigned buflen) { unsigned char partition; unsigned i; int any = 0; const char *comma = ""; if (buflen < 5) { trace_ds(" error: field length %d too small\n", buflen); return PDS_BAD_CMD; } partition = buf[3]; trace_ds("(0x%02x)", partition); switch (buf[4]) { case SF_RP_QUERY: trace_ds(" Query"); if (partition != 0xff) { trace_ds(" error: illegal partition\n"); return PDS_BAD_CMD; } trace_ds("\n"); query_reply_start(); for (i = 0; i < NSR; i++) { if (dbcs || replies[i].code != QR_DBCS_ASIA) { do_query_reply(replies[i].code); } } query_reply_end(); break; case SF_RP_QLIST: trace_ds(" QueryList "); if (partition != 0xff) { trace_ds("error: illegal partition\n"); return PDS_BAD_CMD; } if (buflen < 6) { trace_ds("error: missing request type\n"); return PDS_BAD_CMD; } query_reply_start(); switch (buf[5]) { case SF_RPQ_LIST: trace_ds("List("); if (buflen < 7) { trace_ds(")\n"); do_query_reply(QR_NULL); } else { for (i = 6; i < buflen; i++) { trace_ds("%s%s", comma, see_qcode(buf[i])); comma = ","; } trace_ds(")\n"); for (i = 0; i < NSR; i++) { if (memchr((char *)&buf[6], (char)replies[i].code, buflen-6) && (dbcs || replies[i].code != QR_DBCS_ASIA) ) { do_query_reply(replies[i].code); any++; } } if (!any) { do_query_reply(QR_NULL); } } break; case SF_RPQ_EQUIV: trace_ds("Equivlent+List("); for (i = 6; i < buflen; i++) { trace_ds("%s%s", comma, see_qcode(buf[i])); comma = ","; } trace_ds(")\n"); for (i = 0; i < NSR; i++) if (dbcs || replies[i].code != QR_DBCS_ASIA) { do_query_reply(replies[i].code); } break; case SF_RPQ_ALL: trace_ds("All\n"); for (i = 0; i < NSR; i++) if (dbcs || replies[i].code != QR_DBCS_ASIA) { do_query_reply(replies[i].code); } break; default: trace_ds("unknown request type 0x%02x\n", buf[5]); return PDS_BAD_CMD; } query_reply_end(); break; case SNA_CMD_RMA: trace_ds(" ReadModifiedAll"); if (partition != 0x00) { trace_ds(" error: illegal partition\n"); return PDS_BAD_CMD; } trace_ds("\n"); ctlr_read_modified(AID_QREPLY, true); break; case SNA_CMD_RB: trace_ds(" ReadBuffer"); if (partition != 0x00) { trace_ds(" error: illegal partition\n"); return PDS_BAD_CMD; } trace_ds("\n"); ctlr_read_buffer(AID_QREPLY); break; case SNA_CMD_RM: trace_ds(" ReadModified"); if (partition != 0x00) { trace_ds(" error: illegal partition\n"); return PDS_BAD_CMD; } trace_ds("\n"); ctlr_read_modified(AID_QREPLY, false); break; default: trace_ds(" unknown type 0x%02x\n", buf[4]); return PDS_BAD_CMD; } return PDS_OKAY_OUTPUT; } static enum pds sf_erase_reset(unsigned char buf[], int buflen) { if (buflen != 4) { trace_ds(" error: wrong field length %d\n", buflen); return PDS_BAD_CMD; } switch (buf[3]) { case SF_ER_DEFAULT: trace_ds(" Default\n"); ctlr_erase(false); break; case SF_ER_ALT: trace_ds(" Alternate\n"); ctlr_erase(true); break; default: trace_ds(" unknown type 0x%02x\n", buf[3]); return PDS_BAD_CMD; } return PDS_OKAY_NO_OUTPUT; } static enum pds sf_set_reply_mode(unsigned char buf[], int buflen) { unsigned char partition; int i; const char *comma = "("; if (buflen < 5) { trace_ds(" error: wrong field length %d\n", buflen); return PDS_BAD_CMD; } partition = buf[3]; trace_ds("(0x%02x)", partition); if (partition != 0x00) { trace_ds(" error: illegal partition\n"); return PDS_BAD_CMD; } switch (buf[4]) { case SF_SRM_FIELD: trace_ds(" Field\n"); break; case SF_SRM_XFIELD: trace_ds(" ExtendedField\n"); break; case SF_SRM_CHAR: trace_ds(" Character"); break; default: trace_ds(" unknown mode 0x%02x\n", buf[4]); return PDS_BAD_CMD; } reply_mode = buf[4]; if (buf[4] == SF_SRM_CHAR) { crm_nattr = buflen - 5; for (i = 5; i < buflen; i++) { crm_attr[i - 5] = buf[i]; trace_ds("%s%s", comma, see_efa_only(buf[i])); comma = ","; } trace_ds("%s\n", crm_nattr ? ")" : ""); } return PDS_OKAY_NO_OUTPUT; } static enum pds sf_create_partition(unsigned char buf[], int buflen) { unsigned char pid; unsigned char uom; /* unit of measure */ unsigned char am; /* addressing mode */ unsigned char flags; /* flags */ unsigned short h; /* height of presentation space */ unsigned short w; /* width of presentation space */ unsigned short rv; /* viewport origin row */ unsigned short cv; /* viewport origin column */ unsigned short hv; /* viewport height */ unsigned short wv; /* viewport width */ unsigned short rw; /* window origin row */ unsigned short cw; /* window origin column */ unsigned short rs; /* scroll rows */ /* hole */ unsigned short pw; /* character cell point width */ unsigned short ph; /* character cell point height */ static const char *bit4[16] = { "0000", "0001", "0010", "0011", "0100", "0101", "0110", "0111", "1000", "1001", "1010", "1011", "1100", "1101", "1110", "1111" }; if (buflen > 3) { trace_ds("("); /* Partition. */ pid = buf[3]; trace_ds("pid=0x%02x", pid); if (pid != 0x00) { trace_ds(") error: illegal partition\n"); return PDS_BAD_CMD; } } else pid = 0x00; if (buflen > 4) { uom = (buf[4] & 0xf0) >> 4; trace_ds(",uom=B'%s'", bit4[uom]); if (uom != 0x0 && uom != 0x02) { trace_ds(") error: illegal units\n"); return PDS_BAD_CMD; } am = buf[4] & 0x0f; trace_ds(",am=B'%s'", bit4[am]); if (am > 0x2) { trace_ds(") error: illegal a-mode\n"); return PDS_BAD_CMD; } } else { uom = 0; am = 0; } if (buflen > 5) { flags = buf[5]; trace_ds(",flags=0x%02x", flags); } else { flags = 0; } if (buflen > 7) { GET16(h, &buf[6]); trace_ds(",h=%d", h); } else h = maxROWS; if (buflen > 9) { GET16(w, &buf[8]); trace_ds(",w=%d", w); } else w = maxCOLS; if (buflen > 11) { GET16(rv, &buf[10]); trace_ds(",rv=%d", rv); } else rv = 0; if (buflen > 13) { GET16(cv, &buf[12]); trace_ds(",cv=%d", cv); } else cv = 0; if (buflen > 15) { GET16(hv, &buf[14]); trace_ds(",hv=%d", hv); } else hv = (h > maxROWS)? maxROWS: h; if (buflen > 17) { GET16(wv, &buf[16]); trace_ds(",wv=%d", wv); } else wv = (w > maxCOLS)? maxCOLS: w; if (buflen > 19) { GET16(rw, &buf[18]); trace_ds(",rw=%d", rw); } else rw = 0; if (buflen > 21) { GET16(cw, &buf[20]); trace_ds(",cw=%d", cw); } else cw = 0; if (buflen > 23) { GET16(rs, &buf[22]); trace_ds(",rs=%d", rs); } else rs = (h > hv)? 1: 0; if (buflen > 27) { GET16(pw, &buf[26]); trace_ds(",pw=%d", pw); } else pw = *char_width; if (buflen > 29) { GET16(ph, &buf[28]); trace_ds(",ph=%d", ph); } else ph = *char_height; trace_ds(")\n"); cursor_move(0); buffer_addr = 0; return PDS_OKAY_NO_OUTPUT; } static enum pds sf_outbound_ds(unsigned char buf[], int buflen) { enum pds rv; if (buflen < 5) { trace_ds(" error: field length %d too short\n", buflen); return PDS_BAD_CMD; } trace_ds("(0x%02x)", buf[3]); if (buf[3] != 0x00) { trace_ds(" error: illegal partition 0x%0x\n", buf[3]); return PDS_BAD_CMD; } switch (buf[4]) { case SNA_CMD_W: trace_ds(" Write"); if (buflen > 5) { if ((rv = ctlr_write(&buf[4], buflen-4, false)) < 0) return rv; } else trace_ds("\n"); break; case SNA_CMD_EW: trace_ds(" EraseWrite"); ctlr_erase(screen_alt); if (buflen > 5) { if ((rv = ctlr_write(&buf[4], buflen-4, true)) < 0) return rv; } else trace_ds("\n"); break; case SNA_CMD_EWA: trace_ds(" EraseWriteAlternate"); ctlr_erase(screen_alt); if (buflen > 5) { if ((rv = ctlr_write(&buf[4], buflen-4, true)) < 0) return rv; } else trace_ds("\n"); break; case SNA_CMD_EAU: trace_ds(" EraseAllUnprotected\n"); ctlr_erase_all_unprotected(); break; default: trace_ds(" unknown type 0x%02x\n", buf[4]); return PDS_BAD_CMD; } return PDS_OKAY_NO_OUTPUT; } static void query_reply_start(void) { obptr = obuf; space3270out(1); *obptr++ = AID_SF; qr_in_progress = true; } static void do_query_reply(unsigned char code) { unsigned i; unsigned subindex = 0; bool more = false; /* Find the right entry in the reply table. */ for (i = 0; i < NSR_ALL; i++) { if (replies[i].code == code) break; } if (i >= NSR_ALL || (replies[i].single_fn == NULL && replies[i].multi_fn == NULL)) return; if (qr_in_progress) { trace_ds("> StructuredField\n"); qr_in_progress = false; } do { size_t obptr0 = obptr - obuf; bool full = true; space3270out(4); obptr += 2; /* skip length for now */ *obptr++ = SFID_QREPLY; *obptr++ = code; more = false; if (replies[i].single_fn) replies[i].single_fn(); else full = replies[i].multi_fn(&subindex, &more); if (full) { size_t len; unsigned char *obptr_len; /* Fill in the length. */ obptr_len = obuf + obptr0; len = (obptr - obuf) - obptr0; SET16(obptr_len, len); } else { /* Back over the header. */ obptr -= 4; } } while (more); } static void do_qr_null(void) { trace_ds("> QueryReply(Null)\n"); } static void do_qr_summary(void) { unsigned i; const char *comma = ""; trace_ds("> QueryReply(Summary("); space3270out(NSR); for (i = 0; i < NSR; i++) { if (dbcs || replies[i].code != QR_DBCS_ASIA) { trace_ds("%s%s", comma, see_qcode(replies[i].code)); comma = ","; *obptr++ = replies[i].code; } } trace_ds("))\n"); } static void do_qr_usable_area(void) { trace_ds("> QueryReply(UsableArea)\n"); space3270out(19); *obptr++ = 0x01; /* 12/14-bit addressing */ *obptr++ = 0x00; /* no special character features */ SET16(obptr, maxCOLS); /* usable width */ SET16(obptr, maxROWS); /* usable height */ *obptr++ = 0x01; /* units (mm) */ SET32(obptr, Xr_3279_2); /* Xr, canned from 3279-2 */ SET32(obptr, Yr_3279_2); /* Yr, canned from 3279-2 */ /* * If we ever implement graphics, these will * need to change. */ *obptr++ = SW_3279_2; /* AW, canned from 3279-2 */ *obptr++ = SH_3279_2; /* AH, canned from 3279-2 */ SET16(obptr, maxCOLS*maxROWS); /* buffer, questionable */ } static void do_qr_color(void) { int i; int color_max = 16; trace_ds("> QueryReply(Color)\n"); space3270out(4 + 2*15); *obptr++ = 0x00; /* no options */ *obptr++ = color_max; /* 16 colors */ *obptr++ = 0x00; /* default color: */ *obptr++ = 0xf0 + HOST_COLOR_GREEN; /* green */ for (i = 0xf1; i < 0xf1 + color_max - 1; i++) { *obptr++ = i; if (mode.m3279) { *obptr++ = i; } else { *obptr++ = 0x00; } } if (screen_has_bg_color()) { /* Add background color. */ if (mode.m3279 && appres.qr_bg_color) { space3270out(4); *obptr++ = 4; /* length */ *obptr++ = 0x02; /* background color */ *obptr++ = 0x00; /* attribute */ *obptr++ = 0xf0; /* default color */ } } } static void do_qr_highlighting(void) { trace_ds("> QueryReply(Highlighting)\n"); space3270out(11); *obptr++ = 5; /* report on 5 pairs */ *obptr++ = XAH_DEFAULT; /* default: */ *obptr++ = XAH_NORMAL; /* normal */ *obptr++ = XAH_BLINK; /* blink: */ *obptr++ = XAH_BLINK; /* blink */ *obptr++ = XAH_REVERSE; /* reverse: */ *obptr++ = XAH_REVERSE; /* reverse */ *obptr++ = XAH_UNDERSCORE; /* underscore: */ *obptr++ = XAH_UNDERSCORE; /* underscore */ *obptr++ = XAH_INTENSIFY; /* intensify: */ *obptr++ = XAH_INTENSIFY; /* intensify */ } static void do_qr_reply_modes(void) { trace_ds("> QueryReply(ReplyModes)\n"); space3270out(3); *obptr++ = SF_SRM_FIELD; *obptr++ = SF_SRM_XFIELD; *obptr++ = SF_SRM_CHAR; } static void do_qr_dbcs_asia(void) { /* XXX: Should we support this, even when not in DBCS mode? */ trace_ds("> QueryReply(DbcsAsia)\n"); space3270out(7); *obptr++ = 0x00; /* flags (none) */ *obptr++ = 0x03; /* field length 3 */ *obptr++ = 0x01; /* SI/SO supported */ *obptr++ = 0x80; /* character set ID 0x80 */ *obptr++ = 0x03; /* field length 3 */ *obptr++ = 0x02; /* input control */ *obptr++ = 0x01; /* creation supported */ } static void do_qr_alpha_part(void) { trace_ds("> QueryReply(AlphanumericPartitions)\n"); space3270out(4); *obptr++ = 0; /* 1 partition */ SET16(obptr, maxROWS*maxCOLS); /* buffer space */ *obptr++ = 0; /* no special features */ } static void do_qr_charsets(void) { trace_ds("> QueryReply(CharacterSets)\n"); space3270out(64); if (dbcs) { *obptr++ = 0x8e; /* flags: GE, CGCSGID, DBCS */ } else { *obptr++ = 0x82; /* flags: GE, CGCSGID present */ } *obptr++ = 0x00; /* more flags */ *obptr++ = SW_3279_2; /* SDW, canned from 3279-2 */ *obptr++ = SH_3279_2; /* SDW, canned from 3279-2 */ *obptr++ = 0x00; /* no load PS */ *obptr++ = 0x00; *obptr++ = 0x00; *obptr++ = 0x00; if (dbcs) { *obptr++ = 0x0b; /* DL (11 bytes) */ } else { *obptr++ = 0x07; /* DL (7 bytes) */ } *obptr++ = 0x00; /* SET 0: */ if (dbcs) { *obptr++ = 0x00; /* FLAGS: non-load, single- plane, single-byte */ } else { *obptr++ = 0x10; /* FLAGS: non-loadable, single-plane, single-byte, no compare */ } *obptr++ = 0x00; /* LCID 0 */ if (dbcs) { *obptr++ = 0x00; /* SW 0 */ *obptr++ = 0x00; /* SH 0 */ *obptr++ = 0x00; /* SUBSN */ *obptr++ = 0x00; /* SUBSN */ } SET32(obptr, cgcsgid); /* CGCSGID */ /* special 3270 font, includes APL */ *obptr++ = 0x01;/* SET 1: */ *obptr++ = 0x00; /* FLAGS: non-loadable, single-plane, single-byte, no compare */ *obptr++ = 0xf1; /* LCID */ if (dbcs) { *obptr++ = 0x00; /* SW 0 */ *obptr++ = 0x00; /* SH 0 */ *obptr++ = 0x00; /* SUBSN */ *obptr++ = 0x00; /* SUBSN */ } *obptr++ = 0x03; /* CGCSGID: 3179-style APL2 */ *obptr++ = 0xc3; *obptr++ = 0x01; *obptr++ = 0x36; if (dbcs) { *obptr++ = 0x80; /* SET 0x80: */ *obptr++ = 0x20; /* FLAGS: DBCS */ *obptr++ = 0xf8; /* LCID: 0xf8 */ *obptr++ = SW_3279_2 * 2; /* SW, canned from 3279-2 */ *obptr++ = SH_3279_2; /* SH, canned from 3279-2 */ *obptr++ = 0x41; /* SUBSN */ *obptr++ = 0x7f; /* SUBSN */ SET32(obptr, cgcsgid_dbcs); /* CGCSGID */ } } static void do_qr_ddm(void) { int size; if (ftc != NULL) { size = ftc->dft_buffersize; } else { size = set_dft_buffersize(0); } trace_ds("> QueryReply(DistributedDataManagement INLIM/OUTLIM=%d)\n", size); space3270out(8); SET16(obptr,0); /* set reserved field to 0 */ SET16(obptr, size); /* set inbound length limit INLIM */ SET16(obptr, size); /* set outbound length limit OUTLIM */ SET16(obptr, 0x0101); /* NSS=01, DDMSS=01 */ } static void do_qr_imp_part(void) { trace_ds("> QueryReply(ImplicitPartition)\n"); space3270out(13); *obptr++ = 0x0; /* reserved */ *obptr++ = 0x0; *obptr++ = 0x0b; /* length of display size */ *obptr++ = 0x01; /* "implicit partition size" */ *obptr++ = 0x00; /* reserved */ SET16(obptr, 80); /* implicit partition width */ SET16(obptr, 24); /* implicit partition height */ SET16(obptr, maxCOLS); /* alternate height */ SET16(obptr, maxROWS); /* alternate width */ } static void query_reply_end(void) { net_output(); kybd_inhibit(true); } suite3270-4.1/Common/sio_glue.c000066400000000000000000000255771413735575200162610ustar00rootroot00000000000000/* * Copyright (c) 2017-2020 Paul Mattes. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the names of Paul Mattes, Jeff Sparkes, GTRC nor the names of * their contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO * EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * sio_glue.c * Resource and options glue logic for secure I/O. */ #include "globals.h" #include #include "appres.h" #include "resources.h" #include "boolstr.h" #include "opts.h" #include "lazya.h" #include "popups.h" #include "utils.h" #include "sio.h" #include "sio_glue.h" #include "sio_internal.h" #include "telnet.h" #include "toggles.h" #include "varbuf.h" /* Typedefs */ typedef struct { unsigned flag; res_t res; } flagged_res_t; /* Globals */ /* Statics */ /* Note: These are ordered by bitmap (flag) value, lowest to highest. */ static flagged_res_t sio_flagged_res[] = { { TLS_OPT_ACCEPT_HOSTNAME, { ResAcceptHostname, aoffset(tls.accept_hostname), XRM_STRING } }, { TLS_OPT_VERIFY_HOST_CERT, { ResVerifyHostCert, aoffset(tls.verify_host_cert), XRM_BOOLEAN } }, { TLS_OPT_STARTTLS, { ResStartTls, aoffset(tls.starttls), XRM_BOOLEAN } }, { TLS_OPT_CA_DIR, { ResCaDir, aoffset(tls.ca_dir), XRM_STRING } }, { TLS_OPT_CA_FILE, { ResCaFile, aoffset(tls.ca_file), XRM_STRING } }, { TLS_OPT_CERT_FILE, { ResCertFile, aoffset(tls.cert_file), XRM_STRING } }, { TLS_OPT_CERT_FILE_TYPE, { ResCertFileType,aoffset(tls.cert_file_type), XRM_STRING } }, { TLS_OPT_CHAIN_FILE, { ResChainFile, aoffset(tls.chain_file), XRM_STRING } }, { TLS_OPT_KEY_FILE, { ResKeyFile, aoffset(tls.key_file), XRM_STRING } }, { TLS_OPT_KEY_FILE_TYPE, { ResKeyFileType, aoffset(tls.key_file_type),XRM_STRING } }, { TLS_OPT_KEY_PASSWD, { ResKeyPasswd, aoffset(tls.key_passwd), XRM_STRING } }, { TLS_OPT_CLIENT_CERT, { ResClientCert, aoffset(tls.client_cert), XRM_STRING } } }; static int n_sio_flagged_res = (int)array_count(sio_flagged_res); /* * Add TLS options. */ static void add_tls_opts(void) { struct { unsigned flag; opt_t opt; } flagged_opts[] = { { TLS_OPT_ACCEPT_HOSTNAME, { OptAcceptHostname, OPT_STRING, false, ResAcceptHostname, aoffset(tls.accept_hostname), "[DNS:]", "Host name to accept from server certificate" } }, { TLS_OPT_VERIFY_HOST_CERT, { OptVerifyHostCert, OPT_BOOLEAN, true, ResVerifyHostCert, aoffset(tls.verify_host_cert), NULL, "Enable TLS host certificate validation (set by default)" } }, { TLS_OPT_VERIFY_HOST_CERT, { OptNoVerifyHostCert, OPT_BOOLEAN, false, ResVerifyHostCert, aoffset(tls.verify_host_cert), NULL, "Disable TLS host certificate validation" } }, { TLS_OPT_CA_DIR, { OptCaDir, OPT_STRING, false, ResCaDir, aoffset(tls.ca_dir), "","TLS CA certificate database directory" } }, { TLS_OPT_CA_FILE, { OptCaFile, OPT_STRING, false, ResCaFile, aoffset(tls.ca_file), "", "TLS CA certificate file" } }, { TLS_OPT_CERT_FILE, { OptCertFile, OPT_STRING, false, ResCertFile, aoffset(tls.cert_file), "", "TLS client certificate file" } }, { TLS_OPT_CERT_FILE_TYPE, { OptCertFileType, OPT_STRING, false, ResCertFileType, aoffset(tls.cert_file_type), "pem|asn1", "TLS client certificate file type" } }, { TLS_OPT_CHAIN_FILE, { OptChainFile,OPT_STRING, false,ResChainFile, aoffset(tls.chain_file), "", "TLS certificate chain file" } }, { TLS_OPT_KEY_FILE, { OptKeyFile, OPT_STRING, false, ResKeyFile, aoffset(tls.key_file), "", "Get TLS private key from " } }, { TLS_OPT_KEY_FILE_TYPE, { OptKeyFileType, OPT_STRING, false, ResKeyFileType, aoffset(tls.key_file_type), "pem|asn1", "TLS private key file type" } }, { TLS_OPT_KEY_PASSWD, { OptKeyPasswd,OPT_STRING, false, ResKeyPasswd, aoffset(tls.key_passwd), "file:|string:", "TLS private key password" } }, { TLS_OPT_CLIENT_CERT, { OptClientCert, OPT_STRING, false, ResClientCert, aoffset(tls.client_cert), "", "TLS client certificate name" } } }; int n_opts = (int)array_count(flagged_opts); unsigned n_tls_opts = 0; opt_t *tls_opts; int add_ix = 0; /* Fetch the list from the implementation. */ unsigned supported_options = sio_all_options_supported(); /* Match options against the supported ones. */ FOREACH_TLS_OPTS(opt) { if (supported_options & opt) { int j; for (j = 0; j < n_opts; j++) { if (flagged_opts[j].flag == opt) { n_tls_opts++; } } } } FOREACH_TLS_OPTS_END(opt); if (!n_tls_opts) { return; } /* Construct the list of options to add. */ tls_opts = (opt_t *)Malloc(n_tls_opts * sizeof(opt_t)); FOREACH_TLS_OPTS(opt) { if (supported_options & opt) { int j; for (j = 0; j < n_opts; j++) { if (flagged_opts[j].flag == opt) { tls_opts[add_ix++] = flagged_opts[j].opt; /* struct copy */ } } } } FOREACH_TLS_OPTS_END(opt); /* Add them. */ register_opts(tls_opts, n_tls_opts); } static void add_tls_resources(void) { unsigned n_tls_res = 0; res_t *tls_res; int add_ix = 0; int i; /* Fetch the list from the implementation. */ unsigned supported_options = sio_all_options_supported(); /* Match options against the supported ones. */ FOREACH_TLS_OPTS(opt) { if (supported_options & opt) { int j; for (j = 0; j < n_sio_flagged_res; j++) { if (sio_flagged_res[j].flag == opt) { n_tls_res++; break; } } } } FOREACH_TLS_OPTS_END(opt); if (!n_tls_res) { return; } /* Construct the list of resources to add. */ tls_res = (res_t *)Malloc(n_tls_res * sizeof(res_t)); i = 0; FOREACH_TLS_OPTS(opt) { if (supported_options & opt) { int j; for (j = 0; j < n_sio_flagged_res; j++) { if (sio_flagged_res[j].flag == opt) { tls_res[add_ix++] = sio_flagged_res[j].res; /* struct copy */ } } } i++; } FOREACH_TLS_OPTS_END(opt); /* Add them. */ register_resources(tls_res, n_tls_res); } /* * Translate an option flag to its name. */ static const char * sio_option_name(unsigned option) { int i = 0; FOREACH_TLS_OPTS(opt) { if (option & opt) { return sio_flagged_res[i].res.name; } i++; } FOREACH_TLS_OPTS_END(opt); return NULL; } /* * Translate an option flag to its appres address. */ static void * sio_address(unsigned option) { int i = 0; FOREACH_TLS_OPTS(opt) { if (option & opt) { return sio_flagged_res[i].res.address; } i++; } FOREACH_TLS_OPTS_END(opt); return NULL; } /* * Translate an option flag to its appres type. */ static enum resource_type sio_type(unsigned option) { int i = 0; FOREACH_TLS_OPTS(opt) { if (option & opt) { return sio_flagged_res[i].res.type; } i++; } FOREACH_TLS_OPTS_END(opt); return XRM_INT + 1; /* XXX */ } /* * Translate an option to its flag value. */ static unsigned sio_toggle_value(const char *name) { int i = 0; FOREACH_TLS_OPTS(opt) { if (!strcasecmp(sio_flagged_res[i].res.name, name)) { return opt; } i++; } FOREACH_TLS_OPTS_END(opt); return 0; } /* Translate supported TLS options to a list of names. */ char * sio_option_names(void) { unsigned options = sio_all_options_supported(); varbuf_t v; char *sep = ""; vb_init(&v); FOREACH_TLS_OPTS(opt) { if (options & opt) { const char *opt_name = sio_option_name(opt); if (opt_name != NULL) { vb_appendf(&v, "%s%s", sep, opt_name); sep = " "; } } } FOREACH_TLS_OPTS_END(opt); return lazya(vb_consume(&v)); } /* * Toggle for TLS parameters. */ static bool sio_toggle(const char *name, const char *value) { const char *errmsg; if (cstate != NOT_CONNECTED) { popup_an_error("%s cannot change while connected", name); return false; } switch (sio_toggle_value(name)) { case TLS_OPT_ACCEPT_HOSTNAME: Replace(appres.tls.accept_hostname, value[0]? NewString(value) : NULL); break; case TLS_OPT_VERIFY_HOST_CERT: if ((errmsg = boolstr(value, &appres.tls.verify_host_cert)) != NULL) { popup_an_error("%s %s", name, errmsg); return false; } break; case TLS_OPT_STARTTLS: if ((errmsg = boolstr(value, &appres.tls.starttls)) != NULL) { popup_an_error("%s %s", name, errmsg); return false; } break; case TLS_OPT_CA_DIR: Replace(appres.tls.ca_dir, value[0]? NewString(value): NULL); break; case TLS_OPT_CA_FILE: Replace(appres.tls.ca_file, value[0]? NewString(value): NULL); break; case TLS_OPT_CERT_FILE: Replace(appres.tls.cert_file, value[0]? NewString(value): NULL); break; case TLS_OPT_CERT_FILE_TYPE: Replace(appres.tls.cert_file_type, value[0]? NewString(value): NULL); break; case TLS_OPT_CHAIN_FILE: Replace(appres.tls.chain_file, value[0]? NewString(value): NULL); break; case TLS_OPT_KEY_FILE: Replace(appres.tls.key_file, value[0]? NewString(value): NULL); break; case TLS_OPT_KEY_FILE_TYPE: Replace(appres.tls.key_file_type, value[0]? NewString(value): NULL); break; case TLS_OPT_KEY_PASSWD: Replace(appres.tls.key_passwd, value[0]? NewString(value): NULL); break; case TLS_OPT_CLIENT_CERT: Replace(appres.tls.client_cert, value[0]? NewString(value): NULL); break; default: popup_an_error("Unknown name '%s'", name); return false; } return true; } /* * Register TLS-specific options and resources. */ void sio_glue_register(void) { unsigned supported_options = sio_all_options_supported(); add_tls_opts(); add_tls_resources(); FOREACH_TLS_OPTS(opt) { if (supported_options & opt) { register_extended_toggle(sio_option_name(opt), sio_toggle, NULL, NULL, sio_address(opt), sio_type(opt)); } } FOREACH_TLS_OPTS_END(opt); } suite3270-4.1/Common/sio_mock.c000066400000000000000000000136471413735575200162510ustar00rootroot00000000000000/* * Copyright (c) 2017, 2019-2020 Paul Mattes. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the names of Paul Mattes, Don Russell, Jeff Sparkes, GTRC * nor their contributors may be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES, "AS IS" AND ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. * IN NO EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, INDIRECT, * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * sio_mock.c * Secure I/O testing support. */ #include "globals.h" #include "tls_config.h" #include "sio.h" #include "sioc.h" /* * This module's behavior is controlled by an environment variable, SIO_MOCK. */ #define SIO_MOCK "SIO_MOCK" typedef enum { SM_UNKNOWN, SM_UNSUPPORTED, /* No sio support */ SM_INIT_FAIL, /* Fail sio_init */ SM_INIT_WRONG_PASSWORD, /* sio_init always says wrong password */ SM_INIT_WRONG_PASSWORD_ONCE,/* sio_init says wrong password once */ SM_INIT_NEED_PASSWORD, /* sio_init needs password once */ SM_NEGOTIATE_FAIL, /* Fail sio_negotiate */ SM_READ_FAIL, /* Fail sio_read */ SM_READ_EOF, /* sio_read always returns EOF */ SM_READ_EWOULDBLOCK, /* sio_read always returns EWOULDBLOCK */ SM_WRITE_FAIL, /* Fail sio_write */ SM_TRANSPARENT, /* No TLS at all */ N_MODES } fail_mode_t; fail_mode_t fail_mode = SM_UNKNOWN; static const char *fail_mode_names[] = { "UNKNOWN", "UNSUPPORTED", "INIT_FAIL", "INIT_WRONG_PASSWORD", "INIT_WRONG_PASSWORD_ONCE", "INIT_NEED_PASSWORD", "NEGOTIATE_FAIL", "READ_FAIL", "READ_EOF", "READ_EWOULDBLOCK", "WRITE_FAIL", "TRANSPARENT" }; typedef struct { socket_t sock; } test_sio_t; static int wrongs; static void set_fail_mode(void) { char *s = getenv(SIO_MOCK); int i; if (fail_mode != SM_UNKNOWN) { return; } if (s == NULL) { fail_mode = SM_UNSUPPORTED; return; } for (i = SM_UNKNOWN + 1; i < N_MODES; i++) { if (!strcmp(s, fail_mode_names[i])) { fail_mode = i; return; } } fprintf(stderr, "Unrecognized %s mode '%s'\n", SIO_MOCK, s); fail_mode = SM_UNSUPPORTED; } bool sio_supported(void) { set_fail_mode(); return fail_mode != SM_UNSUPPORTED; } sio_init_ret_t sio_init(tls_config_t *config, const char *password, sio_t *sio_ret) { test_sio_t *t; set_fail_mode(); switch (fail_mode) { case SM_UNSUPPORTED: sioc_set_error("TLS not supported"); *sio_ret = NULL; return SI_FAILURE; case SM_INIT_FAIL: sioc_set_error("Not feeling well"); *sio_ret = NULL; return SI_FAILURE; case SM_INIT_WRONG_PASSWORD: sioc_set_error("Password is always wrong"); *sio_ret = NULL; return SI_WRONG_PASSWORD; case SM_INIT_NEED_PASSWORD: case SM_INIT_WRONG_PASSWORD_ONCE: default: if (fail_mode == SM_INIT_NEED_PASSWORD) { if (!wrongs++) { *sio_ret = NULL; return SI_NEED_PASSWORD; } } else if (fail_mode == SM_INIT_WRONG_PASSWORD_ONCE) { if (!wrongs) { wrongs++; *sio_ret = NULL; return SI_NEED_PASSWORD; } else if (wrongs == 1) { wrongs++; *sio_ret = NULL; return SI_WRONG_PASSWORD; } } t = (test_sio_t *)Malloc(sizeof(test_sio_t)); memset(t, 0, sizeof(test_sio_t)); t->sock = INVALID_SOCKET; *sio_ret = (sio_t *)t; return SI_SUCCESS; } } sio_negotiate_ret_t sio_negotiate(sio_t sio, socket_t sock, const char *hostname, bool *data) { test_sio_t *t = (test_sio_t *)sio; set_fail_mode(); *data = false; switch (fail_mode) { case SM_UNSUPPORTED: sioc_set_error("TLS not supported"); return SIG_FAILURE; case SM_NEGOTIATE_FAIL: sioc_set_error("Host does not like us"); return SIG_FAILURE; default: t->sock = sock; return SIG_SUCCESS; } } int sio_read(sio_t sio, char *buf, size_t buflen) { test_sio_t *t = (test_sio_t *)sio; set_fail_mode(); switch (fail_mode) { case SM_UNSUPPORTED: sioc_set_error("TLS not supported"); return false; case SM_READ_FAIL: sioc_set_error("Socket not feeling well"); return SIO_FATAL_ERROR; case SM_READ_EOF: return SIO_EOF; case SM_READ_EWOULDBLOCK: return SIO_EWOULDBLOCK; default: return recv(t->sock, buf, buflen, 0); } } int sio_write(sio_t sio, const char *buf, size_t buflen) { test_sio_t *t = (test_sio_t *)sio; set_fail_mode(); switch (fail_mode) { case SM_UNSUPPORTED: sioc_set_error("TLS not supported"); return false; case SM_WRITE_FAIL: sioc_set_error("Socket not feeling well"); return SIO_FATAL_ERROR; default: return send(t->sock, buf, buflen, 0); } } void sio_close(sio_t sio) { Free(sio); } bool sio_secure_unverified(sio_t sio) { return false; } unsigned sio_options_supported(void) { return 0; } const char * sio_session_info(sio_t sio) { return "None"; } const char * sio_server_cert_info(sio_t sio) { return "None"; } const char * sio_provider(void) { return "Mock"; } suite3270-4.1/Common/sio_none.c000066400000000000000000000053601413735575200162500ustar00rootroot00000000000000/* * Copyright (c) 2017, 2019-2020 Paul Mattes. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the names of Paul Mattes, Don Russell, Jeff Sparkes, GTRC * nor their contributors may be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES, "AS IS" AND ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. * IN NO EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, INDIRECT, * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * sio_none.c * Secure I/O non-support. */ #include "globals.h" #include "tls_config.h" #include "sio.h" #include "varbuf.h" /* must precede sioc.h */ #include "sioc.h" bool sio_supported(void) { return false; } sio_init_ret_t sio_init(tls_config_t *config, const char *password, sio_t *sio_ret) { sioc_set_error("TLS not supported"); *sio_ret = NULL; return SI_FAILURE; } sio_negotiate_ret_t sio_negotiate(sio_t sio, socket_t sock, const char *hostname, bool *data) { sioc_set_error("TLS not supported"); *data = false; return SIG_FAILURE; } int sio_read(sio_t sio, char *buf, size_t buflen) { sioc_set_error("TLS not supported"); return SIO_FATAL_ERROR; } int sio_write(sio_t sio, const char *buf, size_t buflen) { sioc_set_error("TLS not supported"); return SIO_FATAL_ERROR; } void sio_close(sio_t sio) { } bool sio_secure_unverified(sio_t sio) { return false; } unsigned sio_options_supported(void) { return 0; } const char * sio_session_info(sio_t sio) { return "None"; } const char * sio_server_cert_info(sio_t sio) { return "None"; } const char * sio_server_subject_names(sio_t sio) { return "None"; } const char * sio_provider(void) { return "None"; } suite3270-4.1/Common/sio_openssl.c000066400000000000000000000702561413735575200170020ustar00rootroot00000000000000/* * Copyright (c) 1993-2017, 2019-2020 Paul Mattes. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the names of Paul Mattes, Don Russell, Jeff Sparkes, GTRC * nor their contributors may be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES, "AS IS" AND ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. * IN NO EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, INDIRECT, * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * sio_openssl.c * Secure I/O via the OpenSSL library. */ #include "globals.h" #if defined(_WIN32) /*[*/ # error "Not supported on Windows" #endif /*]*/ #include #include #include #include #include #include "tls_config.h" #include "names.h" #include "sio.h" #include "varbuf.h" /* must precede sioc.h */ #include "sioc.h" #include "trace.h" #include "utils.h" #if !defined(LIBRESSL_VERSION_NUMBER) /*[*/ # if OPENSSL_VERSION_NUMBER >= 0x10100000L /*[*/ # define OPENSSL110 # endif /*]*/ # if OPENSSL_VERSION_NUMBER >= 0x10002000L /*[*/ # define OPENSSL102 # endif /*]*/ #endif /*]*/ #define CN_EQ "CN = " #define CN_EQ_SIZE strlen(CN_EQ) /* Globals */ /* Statics */ typedef struct { tls_config_t *config; SSL_CTX *ctx; SSL *con; socket_t sock; const char *hostname; char *accept_dnsname; char *password; bool need_password; bool secure_unverified; char *session_info; char *server_cert_info; char *server_subjects; bool negotiate_pending; bool negotiated; } ssl_sio_t; static ssl_sio_t *current_sio; #if OPENSSL_VERSION_NUMBER >= 0x00907000L /*[*/ # define INFO_CONST const #else /*][*/ # define INFO_CONST #endif /*]*/ static void client_info_callback(INFO_CONST SSL *s, int where, int ret); #if !defined(OPENSSL102) /*[*/ static char *spc_verify_cert_hostname(X509 *cert, const char *hostname); #endif /*]*/ /* Verify function. */ static int ssl_verify_callback(int preverify_ok, X509_STORE_CTX *ctx _is_unused) { /* * Succeed if OpenSSL already thinks the cert is okay, or if we're not * supposed to check. */ return preverify_ok || !current_sio->config->verify_host_cert; } #if !defined(OPENSSL102) /*[*/ /* * Check the name in the host certificate. * * Returns true if the certificate is okay (or doesn't need to be), false if * the connection should fail because of a bad certificate. */ static bool check_cert_name(ssl_sio_t *s) { X509 *cert; char *unmatched_names; cert = SSL_get_peer_certificate(s->con); if (cert == NULL) { if (s->config->verify_host_cert) { sioc_set_error("No host certificate"); return false; } else { s->secure_unverified = true; vtrace("No host certificate.\n"); return true; } } unmatched_names = spc_verify_cert_hostname(cert, (s->accept_dnsname != NULL)? s->accept_dnsname: s->hostname); if (unmatched_names != NULL) { X509_free(cert); if (s->config->verify_host_cert) { sioc_set_error("Host certificate name(s) do not match '%s':\n%s", s->hostname, unmatched_names); return false; } else { char *reason; s->secure_unverified = true; vtrace("Host certificate name(s) do not match hostname.\n"); reason = xs_buffer("Host certificate name(s) do not match '%s': " "%s", s->hostname, unmatched_names); Free(reason); return true; } Free(unmatched_names); } X509_free(cert); return true; } #endif /*]*/ /* Password callback. */ static int passwd_cb(char *buf, int size, int rwflag _is_unused, void *userdata) { ssl_sio_t *s = (ssl_sio_t *)userdata; int pass_len; char *p; bool need_free = false; if (s->password != NULL) { /* Interactive password overrides everything else. */ p = s->password; } else if (s->config->key_passwd == NULL) { /* No configured password. We need to ask the GUI. Fail for now. */ s->need_password = true; return 0; } else { /* Parse the configured password. */ p = sioc_parse_password_spec(s->config->key_passwd); if (p == NULL) { return 0; } need_free = true; } pass_len = (int)strlen(p); if (pass_len > size - 1) { pass_len = size - 1; } strncpy(buf, p, pass_len); buf[pass_len] = '\0'; if (need_free) { Free(p); } return pass_len; } static int parse_file_type(const char *s) { if (s == NULL || !strcasecmp(s, "pem")) { return SSL_FILETYPE_PEM; } else if (!strcasecmp(s, "asn1")) { return SSL_FILETYPE_ASN1; } else { return -1; } } static char * get_ssl_error(char *buf) { unsigned long e; e = ERR_get_error(); if (getenv("SSL_VERBOSE_ERRORS")) { ERR_error_string(e, buf); } else { char xbuf[120]; char *colon; ERR_error_string(e, xbuf); colon = strrchr(xbuf, ':'); if (colon != NULL) { strcpy(buf, colon + 1); } else { strcpy(buf, xbuf); } } return buf; } /* One-time initialization. */ static void base_init(void) { static bool initted = false; if (initted) { return; } initted = true; #if defined(OPENSSL110) /*[*/ OPENSSL_init_ssl(0, NULL); #else /*][*/ SSL_load_error_strings(); SSL_library_init(); #endif /*]*/ } /* Returns true if secure I/O is supported. */ bool sio_supported(void) { return true; } #if !defined(OPENSSL102) /*[*/ /* Hostname match function. */ static int hostname_matches(const char *hostname, const char *cn, size_t len) { /* * If the name from the certificate contains an embedded NUL, then by * definition it will not match the hostname. */ if (strlen(cn) < len) { return 0; } /* * Try a direct comparison. */ if (!strcasecmp(hostname, cn)) { return 1; } /* * Try a wild-card comparison. */ if (!strncmp(cn, "*.", 2) && strlen(hostname) > strlen(cn + 1) && !strcasecmp(hostname + strlen(hostname) - strlen(cn + 1), cn + 1)) { return 1; } return 0; } /* * Certificate hostname expansion function. * Mostly, this expands NULs. */ static char * expand_hostname(const char *cn, size_t len) { static char buf[1024]; int ix = 0; if (len > sizeof(buf) / 2 + 1) { len = sizeof(buf) / 2 + 1; } while (len--) { char c = *cn++; if (c) { buf[ix++] = c; } else { buf[ix++] = '\\'; buf[ix++] = '0'; } } buf[ix] = '\0'; return buf; } /* * Add a unique element to a NULL-terminated list of strings. * Return the old list, or free it and return a new one. */ static char ** add_to_namelist(char **list, char *item) { char **new; int count; if (list == NULL) { /* First element. */ new = (char **)Malloc(2 * sizeof(char *)); new[0] = NewString(item); new[1] = NULL; return new; } /* Count the number of elements, and bail if we find a match. */ for (count = 0; list[count] != NULL; count++) { if (!strcasecmp(list[count], item)) { return list; } } new = (char **)Malloc((count + 2) * sizeof(char *)); memcpy(new, list, count * sizeof(char *)); Free(list); new[count] = NewString(item); new[count + 1] = NULL; return new; } /* * Free a namelist. */ static void free_namelist(char **list) { int i; for (i = 0; list[i] != NULL; i++) { Free(list[i]); } Free(list); } /* * Expand a namelist into text. */ static char * expand_namelist(char **list) { int i; char *r = NULL; if (list != NULL) { for (i = 0; list[i] != NULL; i++) { char *new; new = xs_buffer("%s%s%s", r? r: "", r? " ": "", list[i]); Replace(r, new); } } return r? r: NewString("(none)"); } #endif /*]*/ #if !defined(OPENSSL102) /*[*/ /* Hostname validation function. */ static char * spc_verify_cert_hostname(X509 *cert, const char *hostname) { int ok = 0; X509_NAME *subj; char name[256]; GENERAL_NAMES *values; GENERAL_NAME *value; int num_an, i; unsigned char *dns; int len; char **namelist = NULL; char *nnl; /* Check the common name. */ if (!ok && (subj = X509_get_subject_name(cert)) && (len = X509_NAME_get_text_by_NID(subj, NID_commonName, name, sizeof(name))) > 0) { name[sizeof(name) - 1] = '\0'; if (!strcmp(hostname, "*") || hostname_matches(hostname, name, len)) { ok = 1; vtrace("SSL_connect: commonName %s matches hostname %s\n", name, hostname); } else { vtrace("SSL_connect: non-matching commonName: %s\n", expand_hostname(name, len)); nnl = xs_buffer("DNS:%s", expand_hostname(name, len)); namelist = add_to_namelist(namelist, nnl); Free(nnl); } } /* Check the alternate names. */ if (!ok && (values = X509_get_ext_d2i(cert, NID_subject_alt_name, 0, 0))) { num_an = sk_GENERAL_NAME_num(values); for (i = 0; i < num_an && !ok; i++) { value = sk_GENERAL_NAME_value(values, i); if (value->type == GEN_DNS) { len = ASN1_STRING_to_UTF8(&dns, value->d.dNSName); if (!strcmp(hostname, "*") || hostname_matches(hostname, (char *)dns, len)) { ok = 1; vtrace("SSL_connect: alternameName DNS:%s matches " "hostname %s\n", expand_hostname((char *)dns, len), hostname); OPENSSL_free(dns); break; } else { vtrace("SSL_connect: non-matching alternateName: DNS:%s\n", expand_hostname((char *)dns, len)); nnl = xs_buffer("DNS:%s", expand_hostname((char *)dns, len)); namelist = add_to_namelist(namelist, nnl); Free(nnl); } OPENSSL_free(dns); } if (ok) { break; } } } if (ok) { if (namelist) { free_namelist(namelist); } return NULL; } else if (namelist == NULL) { return NewString("(none)"); } else { nnl = expand_namelist(namelist); free_namelist(namelist); return nnl; } } #endif /*]*/ /* * Create a new OpenSSL connection. */ sio_init_ret_t sio_init(tls_config_t *config, const char *password, sio_t *sio_ret) { ssl_sio_t *s = NULL; char err_buf[120]; int cert_file_type = SSL_FILETYPE_PEM; sio_init_ret_t err_ret = SI_FAILURE; sioc_error_reset(); /* Base initialization. */ base_init(); s = (ssl_sio_t *)Malloc(sizeof(ssl_sio_t)); memset(s, 0, sizeof(*s)); s->sock = INVALID_SOCKET; #if defined(OPENSSL110) /*[*/ s->ctx = SSL_CTX_new(TLS_method()); #else /*][*/ s->ctx = SSL_CTX_new(SSLv23_method()); #endif /*]*/ if (s->ctx == NULL) { sioc_set_error("SSL_CTX_new failed"); goto fail; } SSL_CTX_set_options(s->ctx, SSL_OP_ALL); SSL_CTX_set_info_callback(s->ctx, client_info_callback); SSL_CTX_set_default_passwd_cb_userdata(s->ctx, s); SSL_CTX_set_default_passwd_cb(s->ctx, passwd_cb); s->config = config; vtrace("TLS: will%s verify host certificate\n", s->config->verify_host_cert? "": " not"); if (password != NULL) { s->password = NewString(password); } /* Parse the -accepthostname option. */ if (s->config->accept_hostname != NULL) { if (!strcasecmp(s->config->accept_hostname, "any") || !strcmp(s->config->accept_hostname, "*")) { s->accept_dnsname = "*"; } else if (!strncasecmp(s->config->accept_hostname, "DNS:", 4) && s->config->accept_hostname[4] != '\0') { s->accept_dnsname = &s->config->accept_hostname[4]; } else if (!strncasecmp(s->config->accept_hostname, "IP:", 3) && s->config->accept_hostname[3] != '\0') { sioc_set_error("Cannot use 'IP:' for acceptHostname"); goto fail; } else { s->accept_dnsname = s->config->accept_hostname; } } /* Pull in the CA certificate file. */ if (s->config->ca_file != NULL || s->config->ca_dir != NULL) { if (SSL_CTX_load_verify_locations(s->ctx, s->config->ca_file, s->config->ca_dir) != 1) { sioc_set_error("CA database load (%s%s%s%s%s%s%s%s%s) failed:\n%s", s->config->ca_file? "file ": "", s->config->ca_file? "\"": "", s->config->ca_file? s->config->ca_file: "", s->config->ca_file? "\"": "", (s->config->ca_file && s->config->ca_dir)? ", ": "", s->config->ca_dir? "dir ": "", s->config->ca_dir? "\"": "", s->config->ca_dir? s->config->ca_dir: "", s->config->ca_dir? "\"": "", get_ssl_error(err_buf)); goto fail; } } else { SSL_CTX_set_default_verify_paths(s->ctx); } /* Pull in the client certificate file. */ if (s->config->chain_file != NULL) { if (SSL_CTX_use_certificate_chain_file(s->ctx, s->config->chain_file) != 1) { sioc_set_error("Client certificate chain file load (\"%s\") " "failed:\n%s", s->config->chain_file, get_ssl_error(err_buf)); goto fail; } } else if (s->config->cert_file != NULL) { cert_file_type = parse_file_type(s->config->cert_file_type); if (cert_file_type == -1) { sioc_set_error("Invalid client certificate file type '%s'", s->config->cert_file_type); goto fail; } if (SSL_CTX_use_certificate_file(s->ctx, s->config->cert_file, cert_file_type) != 1) { sioc_set_error("Client certificate file load (\"%s\") failed:\n%s", s->config->cert_file, get_ssl_error(err_buf)); goto fail; } } /* Pull in the private key file. */ if (s->config->key_file != NULL) { int key_file_type = parse_file_type(s->config->key_file_type); if (key_file_type == -1) { sioc_set_error("Invalid private key file type '%s'", s->config->key_file_type); goto fail; } if (SSL_CTX_use_PrivateKey_file(s->ctx, s->config->key_file, key_file_type) != 1) { sioc_set_error("Private key file load (\"%s\") failed:\n%s", s->config->key_file, get_ssl_error(err_buf)); err_ret = s->need_password? SI_NEED_PASSWORD: SI_WRONG_PASSWORD; goto fail; } } else if (s->config->chain_file != NULL) { if (SSL_CTX_use_PrivateKey_file(s->ctx, s->config->chain_file, SSL_FILETYPE_PEM) != 1) { sioc_set_error("Private key file load (\"%s\") failed:\n%s", s->config->chain_file, get_ssl_error(err_buf)); err_ret = s->need_password? SI_NEED_PASSWORD: SI_WRONG_PASSWORD; goto fail; } } else if (s->config->cert_file != NULL) { if (SSL_CTX_use_PrivateKey_file(s->ctx, s->config->cert_file, cert_file_type) != 1) { sioc_set_error("Private key file load (\"%s\") failed:\n%s", s->config->cert_file, get_ssl_error(err_buf)); err_ret = s->need_password? SI_NEED_PASSWORD: SI_WRONG_PASSWORD; goto fail; } } /* Check the key. */ if (s->config->key_file != NULL && SSL_CTX_check_private_key(s->ctx) != 1) { sioc_set_error("Private key check failed:\n%s", get_ssl_error(err_buf)); goto fail; } s->con = SSL_new(s->ctx); if (s->con == NULL) { sioc_set_error("SSL_new failed"); goto fail; } SSL_set_verify_depth(s->con, 64); /* Success. */ *sio_ret = (sio_t *)s; return SI_SUCCESS; fail: /* Failure. */ if (s != NULL) { if (s->ctx != NULL) { SSL_CTX_free(s->ctx); s->ctx = NULL; } if (s->con != NULL) { SSL_free(s->con); s->con = NULL; } if (s->password != NULL) { Free(s->password); s->password = NULL; } Free(s); } return err_ret; } /* Callback for tracing protocol negotiation. */ static void client_info_callback(INFO_CONST SSL *s, int where, int ret) { if (where == SSL_CB_CONNECT_LOOP) { vtrace("SSL_connect trace: %s %s\n", SSL_state_string(s), SSL_state_string_long(s)); } else if (where == SSL_CB_CONNECT_EXIT) { if (ret == 0) { vtrace("SSL_connect trace: failed in %s\n", SSL_state_string_long(s)); } else if (ret < 0) { unsigned long e; char err_buf[1024]; char *st; char *colon; err_buf[0] = '\n'; e = ERR_get_error(); if (e != 0) { ERR_error_string(e, err_buf + 1); } else if (errno != 0) { strcpy(err_buf + 1, strerror(errno)); } else { err_buf[0] = '\0'; } st = xs_buffer("SSL_connect trace: error in %s%s", SSL_state_string_long(s), err_buf); if ((colon = strrchr(st, ':')) != NULL) { *colon = '\n'; } sioc_set_error("%s", st); Free(st); } } } /* Display a certificate. */ void display_cert(varbuf_t *v, X509 *cert, int level, const char *who) { EVP_PKEY *pkey; BIO *mem; long nw; char *p; /* Public key. */ if ((pkey = X509_get_pubkey(cert)) == NULL) { vb_appendf(v, "%*sError getting cert public key\n", level, ""); } if (pkey != NULL) { vb_appendf(v, "%*s%sPublic key: %d bit ", level, "", who, EVP_PKEY_bits(pkey)); switch (EVP_PKEY_base_id(pkey)) { case EVP_PKEY_RSA: vb_appendf(v, "RSA"); break; case EVP_PKEY_DSA: vb_appendf(v, "DSA"); break; default: vb_appendf(v, "non-RSA/DSA"); break; } vb_appendf(v, "\n"); } /* Subject and issuer. */ mem = BIO_new(BIO_s_mem()); X509_NAME_print_ex(mem, X509_get_subject_name(cert), 0, XN_FLAG_ONELINE | XN_FLAG_SEP_CPLUS_SPC | XN_FLAG_FN_SN); nw = BIO_get_mem_data(mem, &p); vb_appendf(v, "%*s%sSubject: %.*s\n", level, "", who, (int)nw, p); BIO_free(mem); mem = BIO_new(BIO_s_mem()); X509_NAME_print_ex(mem, X509_get_issuer_name(cert), 0, XN_FLAG_ONELINE | XN_FLAG_SEP_CPLUS_SPC | XN_FLAG_FN_SN); nw = BIO_get_mem_data(mem, &p); vb_appendf(v, "%*s%sIssuer: %.*s\n", level, "", who, (int)nw, p); BIO_free(mem); /* Alternate names. */ if (level == 0) { GENERAL_NAMES *values; GENERAL_NAME *value; int num_an, j, len; unsigned char *dns; if ((values = X509_get_ext_d2i(cert, NID_subject_alt_name, 0, 0))) { bool header = false; num_an = sk_GENERAL_NAME_num(values); for (j = 0; j < num_an; j++) { value = sk_GENERAL_NAME_value(values, j); if (value->type == GEN_DNS) { len = ASN1_STRING_to_UTF8(&dns, value->d.dNSName); if (!header) { vb_appendf(v, "%*sAlternate DNS names:", level, ""); header = true; } vb_appendf(v, " %.*s", len, (char *)dns); OPENSSL_free(dns); } } if (header) { vb_appendf(v, "\n"); } } } } /* Display session info. */ static void display_session(varbuf_t *v, SSL *con) { vb_appendf(v, "Version: %s\n", SSL_get_version(con)); vb_appendf(v, "Cipher: %s\n", SSL_get_cipher_name(con)); } /* Display server certificate info. */ static void display_server_cert(varbuf_t *v, SSL *con) { X509 *cert; STACK_OF(X509) *chain; int i; chain = SSL_get_peer_cert_chain(con); if (chain == NULL) { cert = SSL_get_peer_certificate(con); if (cert == NULL) { vb_appendf(v, "Error getting server cert\n"); return; } chain = sk_X509_new_null(); sk_X509_push(chain, cert); } for (i = 0; i < sk_X509_num(chain); i++) { char *who = i? xs_buffer("CA %d ", i): ""; cert = sk_X509_value(chain, i); display_cert(v, cert, 0, who); if (i > 0) { Free(who); } } } /* Display server subject names. */ static void display_server_subjects(varbuf_t *v, SSL *con) { X509 *cert; STACK_OF(X509) *chain; BIO *mem; long nw; char *p; char *pcopy; char *cn; GENERAL_NAMES *values; GENERAL_NAME *value; int num_an, j, len; unsigned char *dns; char **subjects = NULL; chain = SSL_get_peer_cert_chain(con); if (chain == NULL) { cert = SSL_get_peer_certificate(con); if (cert == NULL) { vb_appendf(v, "Error getting server cert\n"); return; } chain = sk_X509_new_null(); sk_X509_push(chain, cert); } /* * Get the subject name from the server cert. This is a bit of a hack * because it understands the format of the output of the print_ex * function. */ cert = sk_X509_value(chain, 0); mem = BIO_new(BIO_s_mem()); X509_NAME_print_ex(mem, X509_get_subject_name(cert), 0, XN_FLAG_ONELINE | XN_FLAG_SEP_CPLUS_SPC | XN_FLAG_FN_SN); nw = BIO_get_mem_data(mem, &p); pcopy = Malloc(nw + 1); strncpy(pcopy, p, nw); pcopy[nw] = '\0'; cn = strstr(pcopy, CN_EQ); if (cn != NULL) { sioc_subject_add(&subjects, cn + CN_EQ_SIZE, (ssize_t)-1); } Free(pcopy); BIO_free(mem); /* Add the alternate names. */ if ((values = X509_get_ext_d2i(cert, NID_subject_alt_name, 0, 0))) { num_an = sk_GENERAL_NAME_num(values); for (j = 0; j < num_an; j++) { value = sk_GENERAL_NAME_value(values, j); if (value->type == GEN_DNS) { len = ASN1_STRING_to_UTF8(&dns, value->d.dNSName); sioc_subject_add(&subjects, (char *)dns, len); OPENSSL_free(dns); } } } sioc_subject_print(v, &subjects); } /* * Negotiate an SSL connection. * Returns true for success, false for failure. * If it returns false, the socket should be disconnected. */ sio_negotiate_ret_t sio_negotiate(sio_t sio, socket_t sock, const char *hostname, bool *data) { ssl_sio_t *s; int rv; varbuf_t v; size_t len; long vr; sioc_error_reset(); *data = false; if (sio == NULL) { sioc_set_error("NULL sio"); return SIG_FAILURE; } s = (ssl_sio_t *)sio; if (s->con == NULL || (s->negotiate_pending && s->sock == INVALID_SOCKET) || (!s->negotiate_pending && s->sock != INVALID_SOCKET) || s->negotiated) { sioc_set_error("Invalid sio"); return SIG_FAILURE; } vtrace("%s OpenSSL negotiation, host '%s'", s->negotiate_pending? "Continuing": "Starting", hostname); if (s->accept_dnsname != NULL) { vtrace(", accept name '%s'", s->accept_dnsname); } vtrace(".\n"); if (!s->negotiate_pending) { s->sock = sock; s->hostname = hostname; #if defined(OPENSSL102) /*[*/ /* Have OpenSSL verify the hostname. */ if (s->config->verify_host_cert && (s->accept_dnsname == NULL || strcmp(s->accept_dnsname, "*"))) { X509_VERIFY_PARAM *param = SSL_get0_param(s->con); if (!X509_VERIFY_PARAM_set1_host(param, (s->accept_dnsname != NULL)? s->accept_dnsname: s->hostname, 0)) { char err_buf[1024]; sioc_set_error("Set host failed:\n%s", get_ssl_error(err_buf)); return SIG_FAILURE; } } #endif /*]*/ SSL_set_verify(s->con, SSL_VERIFY_PEER, ssl_verify_callback); /* Set up the TLS/SSL connection. */ if (SSL_set_fd(s->con, (int)s->sock) != 1) { vtrace("OpenSSL sio_negotiate: can't set fd\n"); return SIG_FAILURE; } } current_sio = s; rv = SSL_connect(s->con); current_sio = NULL; if (rv == -1 && SSL_get_error(s->con, rv) == SSL_ERROR_WANT_READ) { s->negotiate_pending = true; return SIG_WANTMORE; } if (s->config->verify_host_cert) { vr = SSL_get_verify_result(s->con); if (vr != X509_V_OK) { sioc_set_error("Host certificate verification failed:\n%s (%ld)%s", X509_verify_cert_error_string(vr), vr, (vr == X509_V_ERR_HOSTNAME_MISMATCH)? "\nPossibly use " AnSubjectNames "() to list the host cert names": ""); return SIG_FAILURE; } } else { s->secure_unverified = true; } if (rv != 1) { char err_buf[120]; sioc_set_error("SSL_connect failed %d:\n%s", rv, get_ssl_error(err_buf)); return SIG_FAILURE; } #if !defined(OPENSSL102) /*[*/ /* Check the host certificate. */ if (!check_cert_name(s)) { vtrace("disconnect: check_cert_name failed\n"); return SIG_FAILURE; } #endif /*]*/ /* Display the session info. */ vb_init(&v); display_session(&v, s->con); s->session_info = vb_consume(&v); len = strlen(s->session_info); if (len > 0 && s->session_info[len - 1] == '\n') { s->session_info[len - 1] = '\0'; } /* Display the server cert. */ vb_init(&v); display_server_cert(&v, s->con); s->server_cert_info = vb_consume(&v); len = strlen(s->server_cert_info); if (len > 0 && s->server_cert_info[len - 1] == '\n') { s->server_cert_info[len - 1] = '\0'; } /* Display the server subject name. */ vb_init(&v); display_server_subjects(&v, s->con); s->server_subjects = vb_consume(&v); len = strlen(s->server_subjects); if (len > 0 && s->server_subjects[len - 1] == '\n') { s->server_subjects[len - 1] = '\0'; } s->negotiated = true; return SIG_SUCCESS; } /* * Read encrypted data from a socket. * Returns the data length, SIO_EOF for EOF, SIO_FATAL_ERROR for a fatal error, * SIO_NONFATAL_ERROR for a non-fatal error. */ int sio_read(sio_t sio, char *buf, size_t buflen) { ssl_sio_t *s; int nr; sioc_error_reset(); if (sio == NULL) { sioc_set_error("NULL sio"); return SIO_FATAL_ERROR; } s = (ssl_sio_t *)sio; if (s->con == NULL || s->sock == INVALID_SOCKET || !s->negotiated) { sioc_set_error("Invalid sio"); return SIO_FATAL_ERROR; } nr = SSL_read(s->con, buf, buflen); if (nr < 0) { unsigned long e; char err_buf[120]; if (errno == EWOULDBLOCK) { vtrace("SSL_read: EWOULDBLOCK\n"); return SIO_EWOULDBLOCK; } e = ERR_get_error(); if (e != 0) { ERR_error_string(e, err_buf); } else { strcpy(err_buf, "unknown error"); } vtrace("RCVD SSL_read error %ld (%s)\n", e, err_buf); sioc_set_error("SSL_read:\n%s", err_buf); return SIO_FATAL_ERROR; } return nr; } /* * Write encrypted data on the socket. * Returns the data length or SIO_FATAL_ERROR. */ int sio_write(sio_t sio, const char *buf, size_t buflen) { ssl_sio_t *s; int nw; sioc_error_reset(); if (sio == NULL) { sioc_set_error("NULL sio"); return SIO_FATAL_ERROR; } s = (ssl_sio_t *)sio; if (s->con == NULL || s->sock == INVALID_SOCKET || !s->negotiated) { sioc_set_error("Invalid sio"); return SIO_FATAL_ERROR; } nw = SSL_write(s->con, buf, (int)buflen); if (nw < 0) { unsigned long e; char err_buf[120]; e = ERR_get_error(); ERR_error_string(e, err_buf); vtrace("RCVD SSL_write error %ld (%s)\n", e, err_buf); sioc_set_error("SSL_write:\n%s", err_buf); return SIO_FATAL_ERROR; } return nw; } /* Closes the SSL connection. */ void sio_close(sio_t sio) { ssl_sio_t *s; if (sio == NULL) { return; } s = (ssl_sio_t *)sio; if (s->con == NULL || s->sock == INVALID_SOCKET) { return; } if (s->ctx != NULL) { SSL_CTX_free(s->ctx); s->ctx = NULL; } if (s->password != NULL) { Free(s->password); s->password = NULL; } if (s->session_info != NULL) { Free(s->session_info); s->session_info = NULL; } if (s->server_cert_info != NULL) { Free(s->server_cert_info); s->server_cert_info = NULL; } if (s->server_subjects != NULL) { Free(s->server_subjects); s->server_subjects = NULL; } SSL_shutdown(s->con); SSL_free(s->con); s->con = NULL; s->sock = INVALID_SOCKET; Free(s); } /* * Returns true if the current connection is unverified. */ bool sio_secure_unverified(sio_t sio) { ssl_sio_t *s = (ssl_sio_t *)sio; return (s != NULL)? s->secure_unverified: false; } /* * Returns a bitmap of the supported options. */ unsigned sio_options_supported(void) { return TLS_OPT_CA_DIR | TLS_OPT_CA_FILE | TLS_OPT_CERT_FILE | TLS_OPT_CERT_FILE_TYPE | TLS_OPT_CHAIN_FILE | TLS_OPT_KEY_FILE | TLS_OPT_KEY_FILE_TYPE | TLS_OPT_KEY_PASSWD; } /* * Returns session info. */ const char * sio_session_info(sio_t sio) { ssl_sio_t *s = (ssl_sio_t *)sio; return (s != NULL)? s->session_info: NULL; } /* * Returns server certificate info. */ const char * sio_server_cert_info(sio_t sio) { ssl_sio_t *s = (ssl_sio_t *)sio; return (s != NULL)? s->server_cert_info: NULL; } /* * Returns server subject names. */ const char * sio_server_subject_names(sio_t sio) { ssl_sio_t *s = (ssl_sio_t *)sio; return (s != NULL)? s->server_subjects: NULL; } /* * Returns the name of the provider. */ const char * sio_provider(void) { return SSLeay_version(SSLEAY_VERSION); } suite3270-4.1/Common/sio_secure_transport.c000077500000000000000000001043031413735575200207130ustar00rootroot00000000000000/* * Copyright (c) 2017, 2019-2020 Paul Mattes. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the names of Paul Mattes, Don Russell, Jeff Sparkes, GTRC * nor their contributors may be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES, "AS IS" AND ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. * IN NO EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, INDIRECT, * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * sio_secure_transport.c * Secure I/O via the MacOS Secure Transport facility. */ #include "globals.h" #include #include #include #include "tls_config.h" #include "lazya.h" #include "names.h" #include "sio.h" #include "varbuf.h" /* must precede sioc.h */ #include "sioc.h" #include "tls_passwd_gui.h" #include "trace.h" #include "utils.h" #define ARRAY_SIZE(n) (int)(sizeof(n) / sizeof(n[0])) /* Globals */ /* Statics */ typedef struct { socket_t sock; /* socket */ const char *hostname; /* server name */ bool negotiate_pending; /* true if negotiation pending */ bool secure_unverified; /* true if server cert not verified */ SSLContextRef context; /* secure transport context */ char *session_info; /* session information */ char *server_cert_info; /* server cert information */ char *server_subjects; /* server cert subjects */ } stransport_sio_t; static tls_config_t *config; static char *interactive_password; #define CIPHER(s) { s, #s } typedef struct { int value; const char *name; } cipher_name_t; cipher_name_t cipher_names[] = { CIPHER(SSL_DHE_DSS_EXPORT_WITH_DES40_CBC_SHA), CIPHER(SSL_DHE_DSS_WITH_3DES_EDE_CBC_SHA), CIPHER(SSL_DHE_DSS_WITH_DES_CBC_SHA), CIPHER(SSL_DHE_RSA_EXPORT_WITH_DES40_CBC_SHA), CIPHER(SSL_DHE_RSA_WITH_3DES_EDE_CBC_SHA), CIPHER(SSL_DHE_RSA_WITH_DES_CBC_SHA), CIPHER(SSL_DH_DSS_EXPORT_WITH_DES40_CBC_SHA), CIPHER(SSL_DH_DSS_WITH_3DES_EDE_CBC_SHA), CIPHER(SSL_DH_DSS_WITH_DES_CBC_SHA), CIPHER(SSL_DH_RSA_EXPORT_WITH_DES40_CBC_SHA), CIPHER(SSL_DH_RSA_WITH_3DES_EDE_CBC_SHA), CIPHER(SSL_DH_RSA_WITH_DES_CBC_SHA), CIPHER(SSL_DH_anon_EXPORT_WITH_DES40_CBC_SHA), CIPHER(SSL_DH_anon_EXPORT_WITH_RC4_40_MD5), CIPHER(SSL_DH_anon_WITH_3DES_EDE_CBC_SHA), CIPHER(SSL_DH_anon_WITH_DES_CBC_SHA), CIPHER(SSL_DH_anon_WITH_RC4_128_MD5), CIPHER(SSL_FORTEZZA_DMS_WITH_FORTEZZA_CBC_SHA), CIPHER(SSL_FORTEZZA_DMS_WITH_NULL_SHA), CIPHER(SSL_NO_SUCH_CIPHERSUITE), CIPHER(SSL_NULL_WITH_NULL_NULL), CIPHER(SSL_RSA_EXPORT_WITH_DES40_CBC_SHA), CIPHER(SSL_RSA_EXPORT_WITH_RC2_CBC_40_MD5), CIPHER(SSL_RSA_EXPORT_WITH_RC4_40_MD5), CIPHER(SSL_RSA_WITH_3DES_EDE_CBC_MD5), CIPHER(SSL_RSA_WITH_3DES_EDE_CBC_SHA), CIPHER(SSL_RSA_WITH_DES_CBC_MD5), CIPHER(SSL_RSA_WITH_DES_CBC_SHA), CIPHER(SSL_RSA_WITH_IDEA_CBC_MD5), CIPHER(SSL_RSA_WITH_IDEA_CBC_SHA), CIPHER(SSL_RSA_WITH_NULL_MD5), CIPHER(SSL_RSA_WITH_NULL_SHA), CIPHER(SSL_RSA_WITH_RC2_CBC_MD5), CIPHER(SSL_RSA_WITH_RC4_128_MD5), CIPHER(SSL_RSA_WITH_RC4_128_SHA), CIPHER(TLS_DHE_DSS_WITH_3DES_EDE_CBC_SHA), CIPHER(TLS_DHE_DSS_WITH_AES_128_CBC_SHA), CIPHER(TLS_DHE_DSS_WITH_AES_128_CBC_SHA256), CIPHER(TLS_DHE_DSS_WITH_AES_128_GCM_SHA256), CIPHER(TLS_DHE_DSS_WITH_AES_256_CBC_SHA), CIPHER(TLS_DHE_DSS_WITH_AES_256_CBC_SHA256), CIPHER(TLS_DHE_DSS_WITH_AES_256_GCM_SHA384), CIPHER(TLS_DHE_PSK_WITH_3DES_EDE_CBC_SHA), CIPHER(TLS_DHE_PSK_WITH_AES_128_CBC_SHA), CIPHER(TLS_DHE_PSK_WITH_AES_128_CBC_SHA256), CIPHER(TLS_DHE_PSK_WITH_AES_128_GCM_SHA256), CIPHER(TLS_DHE_PSK_WITH_AES_256_CBC_SHA), CIPHER(TLS_DHE_PSK_WITH_AES_256_CBC_SHA384), CIPHER(TLS_DHE_PSK_WITH_AES_256_GCM_SHA384), CIPHER(TLS_DHE_PSK_WITH_NULL_SHA), CIPHER(TLS_DHE_PSK_WITH_NULL_SHA256), CIPHER(TLS_DHE_PSK_WITH_NULL_SHA384), CIPHER(TLS_DHE_PSK_WITH_RC4_128_SHA), CIPHER(TLS_DHE_RSA_WITH_3DES_EDE_CBC_SHA), CIPHER(TLS_DHE_RSA_WITH_AES_128_CBC_SHA), CIPHER(TLS_DHE_RSA_WITH_AES_128_CBC_SHA256), CIPHER(TLS_DHE_RSA_WITH_AES_128_GCM_SHA256), CIPHER(TLS_DHE_RSA_WITH_AES_256_CBC_SHA), CIPHER(TLS_DHE_RSA_WITH_AES_256_CBC_SHA256), CIPHER(TLS_DHE_RSA_WITH_AES_256_GCM_SHA384), CIPHER(TLS_DH_DSS_WITH_3DES_EDE_CBC_SHA), CIPHER(TLS_DH_DSS_WITH_AES_128_CBC_SHA), CIPHER(TLS_DH_DSS_WITH_AES_128_CBC_SHA256), CIPHER(TLS_DH_DSS_WITH_AES_128_GCM_SHA256), CIPHER(TLS_DH_DSS_WITH_AES_256_CBC_SHA), CIPHER(TLS_DH_DSS_WITH_AES_256_CBC_SHA256), CIPHER(TLS_DH_DSS_WITH_AES_256_GCM_SHA384), CIPHER(TLS_DH_RSA_WITH_3DES_EDE_CBC_SHA), CIPHER(TLS_DH_RSA_WITH_AES_128_CBC_SHA), CIPHER(TLS_DH_RSA_WITH_AES_128_CBC_SHA256), CIPHER(TLS_DH_RSA_WITH_AES_128_GCM_SHA256), CIPHER(TLS_DH_RSA_WITH_AES_256_CBC_SHA), CIPHER(TLS_DH_RSA_WITH_AES_256_CBC_SHA256), CIPHER(TLS_DH_RSA_WITH_AES_256_GCM_SHA384), CIPHER(TLS_DH_anon_WITH_3DES_EDE_CBC_SHA), CIPHER(TLS_DH_anon_WITH_AES_128_CBC_SHA), CIPHER(TLS_DH_anon_WITH_AES_128_CBC_SHA256), CIPHER(TLS_DH_anon_WITH_AES_128_GCM_SHA256), CIPHER(TLS_DH_anon_WITH_AES_256_CBC_SHA), CIPHER(TLS_DH_anon_WITH_AES_256_CBC_SHA256), CIPHER(TLS_DH_anon_WITH_AES_256_GCM_SHA384), CIPHER(TLS_DH_anon_WITH_RC4_128_MD5), CIPHER(TLS_ECDHE_ECDSA_WITH_3DES_EDE_CBC_SHA), CIPHER(TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA), CIPHER(TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256), CIPHER(TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256), CIPHER(TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA), CIPHER(TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384), CIPHER(TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384), CIPHER(TLS_ECDHE_ECDSA_WITH_NULL_SHA), CIPHER(TLS_ECDHE_ECDSA_WITH_RC4_128_SHA), CIPHER(TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA), CIPHER(TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA), CIPHER(TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256), CIPHER(TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256), CIPHER(TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA), CIPHER(TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384), CIPHER(TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384), CIPHER(TLS_ECDHE_RSA_WITH_NULL_SHA), CIPHER(TLS_ECDHE_RSA_WITH_RC4_128_SHA), CIPHER(TLS_ECDH_ECDSA_WITH_3DES_EDE_CBC_SHA), CIPHER(TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA), CIPHER(TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA256), CIPHER(TLS_ECDH_ECDSA_WITH_AES_128_GCM_SHA256), CIPHER(TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA), CIPHER(TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA384), CIPHER(TLS_ECDH_ECDSA_WITH_AES_256_GCM_SHA384), CIPHER(TLS_ECDH_ECDSA_WITH_NULL_SHA), CIPHER(TLS_ECDH_ECDSA_WITH_RC4_128_SHA), CIPHER(TLS_ECDH_RSA_WITH_3DES_EDE_CBC_SHA), CIPHER(TLS_ECDH_RSA_WITH_AES_128_CBC_SHA), CIPHER(TLS_ECDH_RSA_WITH_AES_128_CBC_SHA256), CIPHER(TLS_ECDH_RSA_WITH_AES_128_GCM_SHA256), CIPHER(TLS_ECDH_RSA_WITH_AES_256_CBC_SHA), CIPHER(TLS_ECDH_RSA_WITH_AES_256_CBC_SHA384), CIPHER(TLS_ECDH_RSA_WITH_AES_256_GCM_SHA384), CIPHER(TLS_ECDH_RSA_WITH_NULL_SHA), CIPHER(TLS_ECDH_RSA_WITH_RC4_128_SHA), CIPHER(TLS_ECDH_anon_WITH_3DES_EDE_CBC_SHA), CIPHER(TLS_ECDH_anon_WITH_AES_128_CBC_SHA), CIPHER(TLS_ECDH_anon_WITH_AES_256_CBC_SHA), CIPHER(TLS_ECDH_anon_WITH_NULL_SHA), CIPHER(TLS_ECDH_anon_WITH_RC4_128_SHA), CIPHER(TLS_EMPTY_RENEGOTIATION_INFO_SCSV), CIPHER(TLS_NULL_WITH_NULL_NULL), CIPHER(TLS_PSK_WITH_3DES_EDE_CBC_SHA), CIPHER(TLS_PSK_WITH_AES_128_CBC_SHA), CIPHER(TLS_PSK_WITH_AES_128_CBC_SHA256), CIPHER(TLS_PSK_WITH_AES_128_GCM_SHA256), CIPHER(TLS_PSK_WITH_AES_256_CBC_SHA), CIPHER(TLS_PSK_WITH_AES_256_CBC_SHA384), CIPHER(TLS_PSK_WITH_AES_256_GCM_SHA384), CIPHER(TLS_PSK_WITH_NULL_SHA), CIPHER(TLS_PSK_WITH_NULL_SHA256), CIPHER(TLS_PSK_WITH_NULL_SHA384), CIPHER(TLS_PSK_WITH_RC4_128_SHA), CIPHER(TLS_RSA_PSK_WITH_3DES_EDE_CBC_SHA), CIPHER(TLS_RSA_PSK_WITH_AES_128_CBC_SHA), CIPHER(TLS_RSA_PSK_WITH_AES_128_CBC_SHA256), CIPHER(TLS_RSA_PSK_WITH_AES_128_GCM_SHA256), CIPHER(TLS_RSA_PSK_WITH_AES_256_CBC_SHA), CIPHER(TLS_RSA_PSK_WITH_AES_256_CBC_SHA384), CIPHER(TLS_RSA_PSK_WITH_AES_256_GCM_SHA384), CIPHER(TLS_RSA_PSK_WITH_NULL_SHA), CIPHER(TLS_RSA_PSK_WITH_NULL_SHA256), CIPHER(TLS_RSA_PSK_WITH_NULL_SHA384), CIPHER(TLS_RSA_PSK_WITH_RC4_128_SHA), CIPHER(TLS_RSA_WITH_3DES_EDE_CBC_SHA), CIPHER(TLS_RSA_WITH_AES_128_CBC_SHA), CIPHER(TLS_RSA_WITH_AES_128_CBC_SHA256), CIPHER(TLS_RSA_WITH_AES_128_GCM_SHA256), CIPHER(TLS_RSA_WITH_AES_256_CBC_SHA), CIPHER(TLS_RSA_WITH_AES_256_CBC_SHA256), CIPHER(TLS_RSA_WITH_AES_256_GCM_SHA384), CIPHER(TLS_RSA_WITH_NULL_MD5), CIPHER(TLS_RSA_WITH_NULL_SHA), CIPHER(TLS_RSA_WITH_NULL_SHA256), CIPHER(TLS_RSA_WITH_RC4_128_MD5), CIPHER(TLS_RSA_WITH_RC4_128_SHA), { 0, NULL } }; /* Record an error from a Secure Transport call. */ static void set_oserror(OSStatus status, const char *fmt, ...) { va_list args; char *t; CFStringRef errmsg; char *explanation = ""; va_start(args, fmt); t = xs_vbuffer(fmt, args); va_end(args); if (status == errSSLXCertChainInvalid) { explanation = "\nPossibly use " AnSubjectNames "() to list the host cert names"; } errmsg = SecCopyErrorMessageString(status, NULL); if (errmsg != NULL) { sioc_set_error("%s: %s%s", t, CFStringGetCStringPtr(errmsg, kCFStringEncodingASCII), explanation); CFRelease(errmsg); } else { sioc_set_error("%s: Error %d%s", t, (int)status, explanation); } Free(t); } /* Read function called by Secure Transport. */ OSStatus read_func(SSLConnectionRef connection, void *data, size_t *data_length) { stransport_sio_t *s = (stransport_sio_t *)connection; int nr; size_t n_read = 0; if (s->sock == INVALID_SOCKET) { *data_length = 0; return errSecIO; } /* * They want us to return all of the data, or errSSLWouldBlock. */ while (n_read < *data_length) { nr = recv(s->sock, (char *)data + n_read, *data_length - n_read, 0); vtrace("TLS: read %d/%d bytes\n", nr, (int)(*data_length - n_read)); if (nr < 0) { if (errno == EWOULDBLOCK) { *data_length = n_read; return errSSLWouldBlock; } vtrace("TLS recv: %s\n", strerror(errno)); *data_length = n_read; return errSecIO; } else if (nr == 0) { *data_length = n_read; return errSSLClosedGraceful; } n_read += nr; } *data_length = n_read; return errSecSuccess; } /* Write function called by Secure Transport. */ OSStatus write_func(SSLConnectionRef connection, const void *data, size_t *data_length) { stransport_sio_t *s = (stransport_sio_t *)connection; int nw; if (s->sock == INVALID_SOCKET) { *data_length = 0; return errSecIO; } nw = send(s->sock, data, *data_length, 0); vtrace("TLS: wrote %d/%d bytes\n", nw, (int)*data_length); if (nw < 0) { vtrace("TLS send: %s\n", strerror(errno)); *data_length = 0; return errSecIO; } else { *data_length = nw; return errSecSuccess; } } /* Get the subject or issuer name details from a cert. */ static char * name_details(CFArrayRef array) { const void *keys[] = { kSecOIDCommonName, kSecOIDEmailAddress, kSecOIDOrganizationalUnitName, kSecOIDOrganizationName, kSecOIDLocalityName, kSecOIDStateProvinceName, kSecOIDCountryName }; static const char *labels[] = { "CN", "E", "OU", "O", "L", "S", "C", "E" }; varbuf_t v; char *comma = ""; vb_init(&v); for (int i = 0; i < ARRAY_SIZE(keys); i++) { CFIndex n; for (n = 0 ; n < CFArrayGetCount(array); n++) { CFDictionaryRef dict; CFTypeRef dictkey; CFStringRef str; char buf[1024]; dict = CFArrayGetValueAtIndex(array, n); if (CFGetTypeID(dict) != CFDictionaryGetTypeID()) { continue; } dictkey = CFDictionaryGetValue(dict, kSecPropertyKeyLabel); if (!CFEqual(dictkey, keys[i])) { continue; } str = (CFStringRef)CFDictionaryGetValue(dict, kSecPropertyKeyValue); if (CFStringGetCString(str, buf, sizeof(buf), kCFStringEncodingUTF8)) { vb_appendf(&v, "%s%s=%s", comma, labels[i], buf); comma = ", "; } } } return vb_consume(&v); } /* Get the alternate names from a cert. */ static char * alt_names(CFArrayRef array) { const void *keys[] = { CFSTR("DNS Name") /* XXX: There must be a constant for this */ }; varbuf_t v; char *comma = ""; int i; vb_init(&v); for (i = 0; i < ARRAY_SIZE(keys); i++) { CFIndex n; for (n = 0 ; n < CFArrayGetCount(array); n++) { CFDictionaryRef dict; CFTypeRef dictkey; CFStringRef str; char buf[1024]; dict = CFArrayGetValueAtIndex(array, n); if (CFGetTypeID(dict) != CFDictionaryGetTypeID()) { continue; } dictkey = CFDictionaryGetValue(dict, kSecPropertyKeyLabel); if (!CFEqual(dictkey, keys[i])) { continue; } str = (CFStringRef)CFDictionaryGetValue(dict, kSecPropertyKeyValue); if (CFStringGetCString(str, buf, sizeof(buf), kCFStringEncodingUTF8)) { vb_appendf(&v, "%s%s", comma, buf); comma = ", "; } } } return vb_consume(&v); } /* Get details from a cert. */ static char * cert_details(const char *prefix, SecCertificateRef certificateRef) { CFErrorRef error; const void *keys[] = { kSecOIDX509V1SubjectName, kSecOIDX509V1IssuerName, kSecOIDSubjectAltName }; static const void *labels[] = { "Subject", "Issuer", "Subject alternate names" }; static char *(*decoders[])(CFArrayRef) = { name_details, name_details, alt_names }; CFArrayRef keySelection = CFArrayCreate(NULL, keys, ARRAY_SIZE(keys), &kCFTypeArrayCallBacks); CFDictionaryRef vals = SecCertificateCopyValues(certificateRef, keySelection, &error); varbuf_t v; int i; vb_init(&v); /* So I can see the OIDs and figure out which one is the alt name. */ for (i = 0; i < ARRAY_SIZE(keys); i++) { CFDictionaryRef dict; CFArrayRef values; char *s; dict = CFDictionaryGetValue(vals, keys[i]); if (dict == NULL) { continue; } values = CFDictionaryGetValue(dict, kSecPropertyKeyValue); if (values == NULL) { continue; } s = decoders[i](values); vb_appendf(&v, "%s%s: %s\n", prefix, labels[i], s); Free(s); } CFRelease(vals); return vb_consume(&v); } /* Display certificate information. */ static void display_cert(varbuf_t *v, const char *prefix, SecCertificateRef cert) { #if defined(LONG_DESC_IS_USEFUL) /*[*/ CFStringRef desc = SecCertificateCopyLongDescription(NULL, cert, NULL); if (desc != NULL) { char text[1024]; memset(text, 0, sizeof(text)); if (CFStringGetCString(desc, text, sizeof(text), kCFStringEncodingUTF8)) { vb_appendf(v, "%s cert: %s\n", prefix, text); } CFRelease(desc); } #endif /*]*/ char *s = cert_details(prefix, cert); vb_appends(v, s); Free(s); } /* Convert a cipher to its name. */ const char * cipher_name(int n) { int i; struct { const char *orig; const char *subst; } substs[] = { { "_", " " }, { "WITH", "with" }, { "NULL", "null" }, { "FORTEZZA", "Fortezza" }, { NULL, NULL } }; for (i = 0; cipher_names[i].name != NULL; i++) { if (cipher_names[i].value == n) { char *s = lazyaf("%s", cipher_names[i].name); int j; for (j = 0; substs[j].orig != NULL; j++) { char *t; while ((t = strstr(s, substs[j].orig)) != NULL) { strncpy(t, substs[j].subst, strlen(substs[j].subst)); } } return s; } } return lazyaf("0x%x\n", n); } /* Display connection info. */ static void display_connection_info(varbuf_t *v, stransport_sio_t *s) { OSStatus status; SSLProtocol protocol; SSLCipherSuite cipher_suite; status = SSLGetNegotiatedProtocolVersion(s->context, &protocol); if (status == errSecSuccess) { vb_appendf(v, "Protocol version: "); switch (protocol) { case kSSLProtocol2: vb_appendf(v, "SSL 2"); break; case kSSLProtocol3: vb_appendf(v, "SSL 3"); break; case kTLSProtocol1: vb_appendf(v, "TLS 1.0"); break; case kTLSProtocol11: vb_appendf(v, "TLS 1.1"); break; case kTLSProtocol12: vb_appendf(v, "TLS 1.2"); break; default: vb_appendf(v, "0x%x", (unsigned)protocol); break; } vb_appendf(v, "\n"); } status = SSLGetNegotiatedCipher(s->context, &cipher_suite); if (status == errSecSuccess) { vb_appendf(v, "Cipher: %s\n", cipher_name(cipher_suite)); } } /* Display server cert info. */ static void display_server_cert(varbuf_t *v, stransport_sio_t *s) { OSStatus status; SecTrustRef trust = NULL; status = SSLCopyPeerTrust(s->context, &trust); if (status == errSecSuccess && trust != NULL) { CFIndex count = SecTrustGetCertificateCount(trust); CFIndex i; for (i = 0L ; i < count ; i++) { char *prefix = ""; if (i) { prefix = lazyaf("CA %d ", i); } display_cert(v, prefix, SecTrustGetCertificateAtIndex(trust, i)); } CFRelease(trust); } } /* Display server subjects. */ static void display_subjects(varbuf_t *v, stransport_sio_t *s) { OSStatus status; SecTrustRef trust = NULL; char **subjects = NULL; status = SSLCopyPeerTrust(s->context, &trust); if (status == errSecSuccess && trust != NULL) { CFIndex count = SecTrustGetCertificateCount(trust); if (count > 0) { SecCertificateRef cert = SecTrustGetCertificateAtIndex(trust, 0); CFErrorRef error; const void *keys[] = { kSecOIDX509V1SubjectName, kSecOIDSubjectAltName }; CFArrayRef keySelection = CFArrayCreate(NULL, keys, ARRAY_SIZE(keys), &kCFTypeArrayCallBacks); CFDictionaryRef certDict = SecCertificateCopyValues(cert, keySelection, &error); /* Get the subject name. */ CFDictionaryRef dict = CFDictionaryGetValue(certDict, kSecOIDX509V1SubjectName); if (dict != NULL) { CFArrayRef values = CFDictionaryGetValue(dict, kSecPropertyKeyValue); if (values != NULL) { CFIndex n; for (n = 0; n < CFArrayGetCount(values); n++) { CFTypeRef dictkey; CFStringRef str; char buf[1024]; CFDictionaryRef dict2 = CFArrayGetValueAtIndex(values, n); if (CFGetTypeID(dict2) != CFDictionaryGetTypeID()) { continue; } dictkey = CFDictionaryGetValue(dict2, kSecPropertyKeyLabel); if (!CFEqual(dictkey, kSecOIDCommonName)) { continue; } str = (CFStringRef)CFDictionaryGetValue(dict2, kSecPropertyKeyValue); if (CFStringGetCString(str, buf, sizeof(buf), kCFStringEncodingUTF8)) { sioc_subject_add(&subjects, buf, (ssize_t)-1); } } } } /* Get the alternate names. */ dict = CFDictionaryGetValue(certDict, kSecOIDSubjectAltName); if (dict != NULL) { CFArrayRef values = CFDictionaryGetValue(dict, kSecPropertyKeyValue); if (values != NULL) { CFIndex n; for (n = 0; n < CFArrayGetCount(values); n++) { CFTypeRef dictkey; CFStringRef str; char buf[1024]; CFDictionaryRef dict2 = CFArrayGetValueAtIndex(values, n); if (CFGetTypeID(dict2) != CFDictionaryGetTypeID()) { continue; } dictkey = CFDictionaryGetValue(dict2, kSecPropertyKeyLabel); if (!CFEqual(dictkey, CFSTR("DNS Name"))) { continue; } str = (CFStringRef)CFDictionaryGetValue(dict2, kSecPropertyKeyValue); if (CFStringGetCString(str, buf, sizeof(buf), kCFStringEncodingUTF8)) { sioc_subject_add(&subjects, buf, (ssize_t)-1); } } } } CFRelease(certDict); } CFRelease(trust); } sioc_subject_print(v, &subjects); } /* Create a CFDataRef from the contents of a file. */ static CFDataRef dataref_from_file(const char *path) { char *accum = NULL; size_t n_accum = 0; CFDataRef dataref; accum = sioc_string_from_file(path, &n_accum); if (accum == NULL) { return NULL; } dataref = CFDataCreate(NULL, (UInt8 *)accum, n_accum); Free(accum); return dataref; } /* Copy the identity from a file. */ static OSStatus identity_from_file(const char *path, const char *password, SecIdentityRef *identity_ret) { CFDataRef pkcs_data = dataref_from_file(path); if (pkcs_data == NULL) { return errSecItemNotFound; } else { CFStringRef pass_string = (password != NULL)? CFStringCreateWithCString(NULL, password, kCFStringEncodingUTF8) : NULL; const void *keys[] = { kSecImportExportPassphrase }; const void *values[] = { pass_string }; CFDictionaryRef options = CFDictionaryCreate(NULL, keys, values, (pass_string != NULL)? 1L: 0L, NULL, NULL); CFArrayRef items = NULL; OSStatus status = SecPKCS12Import(pkcs_data, options, &items); if (status == errSecSuccess && items != NULL && CFArrayGetCount(items)) { CFDictionaryRef identity_and_trust = CFArrayGetValueAtIndex(items, 0L); const void *identity = CFDictionaryGetValue(identity_and_trust, kSecImportItemIdentity); /* We only need the identity. */ CFRetain(identity); *identity_ret = (SecIdentityRef)identity; } if (items != NULL) { CFRelease(items); } CFRelease(options); CFRelease(pkcs_data); if (pass_string != NULL) { CFRelease(pass_string); } return status; } } /* * Get an identity from a certificate in the keychain, based on the common * name. */ static OSStatus identity_from_keychain(char *name, SecIdentityRef *identity_ret) { # define KEY_ENTRIES 4 OSStatus status; CFTypeRef keys[KEY_ENTRIES]; CFTypeRef values[KEY_ENTRIES]; CFDictionaryRef query_dict; CFArrayRef ids; /* Assume we will return nothing. */ *identity_ret = NULL; /* * Set up search criteria. * The Apple docs imply that you can search for a match against the * common name, e.g. kSecMatchSubjectWholeString. It doesn't appear to * work; you get back all certificates. So the result needs to be searched * manually for a common name match. */ keys[0] = kSecClass; values[0] = kSecClassIdentity; /* want identity (cert and key) */ keys[1] = kSecReturnRef; values[1] = kCFBooleanTrue; /* want a reference */ keys[2] = kSecMatchLimit; values[2] = kSecMatchLimitAll; /* all of them */ keys[3] = kSecMatchPolicy; values[3] = SecPolicyCreateSSL(false, NULL); /* just SSL certs */ query_dict = CFDictionaryCreate(NULL, (const void **)keys, (const void **)values, KEY_ENTRIES, &kCFCopyStringDictionaryKeyCallBacks, &kCFTypeDictionaryValueCallBacks); CFRelease(values[3]); /* the policy */ /* Search for a common name match. */ status = SecItemCopyMatching(query_dict, (CFTypeRef *)&ids); CFRelease(query_dict); if (status == errSecSuccess) { CFIndex count = CFArrayGetCount(ids); CFIndex i; bool matched = false; /* TODO: Could do a case-independent match, or a substring match. */ vtrace("identity_from_keychain: Got %d match%s\n", (int)count, ((int)count == 1)? "": "es"); for (i = 0; i < count && !matched; i++) { SecIdentityRef identity = (SecIdentityRef)CFArrayGetValueAtIndex(ids, i); SecCertificateRef cert = NULL; if (SecIdentityCopyCertificate(identity, &cert) == errSecSuccess) { CFStringRef cf_common_name; char common_name[1024]; if (SecCertificateCopyCommonName(cert, &cf_common_name) == errSecSuccess) { if (CFStringGetCString(cf_common_name, common_name, sizeof(common_name), kCFStringEncodingUTF8) && !strcmp(name, common_name)) { CFRetain(identity); *identity_ret = identity; matched = true; } CFRelease(cf_common_name); } CFRelease(cert); } } CFRelease(ids); return matched? errSecSuccess: errSecItemNotFound; } return status; } /* Set up the client certificate. */ static sio_init_ret_t set_client_cert(stransport_sio_t *s) { OSStatus status; SecIdentityRef identity = NULL; char *cert_name; if (config->cert_file != NULL) { char *password = NULL; bool need_free = false; if (interactive_password != NULL) { password = interactive_password; } else if (config->key_passwd != NULL) { password = sioc_parse_password_spec(config->key_passwd); if (password == NULL) { return SI_FAILURE; } need_free = true; } cert_name = config->cert_file; status = identity_from_file(cert_name, password, &identity); if (need_free) { Free(password); } } else if (config->client_cert != NULL) { cert_name = config->client_cert; status = identity_from_keychain(cert_name, &identity); } else { /* No client cert. */ return SI_SUCCESS; } if (status == errSecSuccess && identity != NULL) { SecCertificateRef cert = NULL; CFTypeRef certs_array[1]; CFArrayRef certs; /* Found it. */ status = SecIdentityCopyCertificate(identity, &cert); if (status == errSecSuccess) { varbuf_t v; vb_init(&v); display_cert(&v, "Client", cert); vtrace("%s", vb_buf(&v)); vb_free(&v); CFRelease(cert); } /* Set it. */ certs_array[0] = identity; certs = CFArrayCreate(NULL, (const void **)certs_array, 1L, &kCFTypeArrayCallBacks); status = SSLSetCertificate(s->context, certs); if (certs != NULL) { CFRelease(certs); } if (status != errSecSuccess) { set_oserror(status, "SSLSetCertificate"); return SI_FAILURE; } CFRelease(identity); return SI_SUCCESS; } /* Failure. */ switch (status) { case errSecAuthFailed: case errSecPkcs12VerifyFailure: sioc_set_error("Incorrect password for certificate \"%s\"", cert_name); return SI_WRONG_PASSWORD; case errSecDecode: case errSecUnknownFormat: sioc_set_error("Can't parse certificate certificate \"%s\"", cert_name); return SI_FAILURE; case errSecPassphraseRequired: sioc_set_error("Certificate \"%s\" requires a password", cert_name); return SI_NEED_PASSWORD; case errSecItemNotFound: sioc_set_error("Can't find certificate \"%s\"", cert_name); return SI_FAILURE; default: set_oserror(status, "Can't load certificate \"%s\"", cert_name); return SI_FAILURE; } } /* Free a TLS context. */ static void sio_free(stransport_sio_t *s) { s->sock = INVALID_SOCKET; SSLClose(s->context); CFRelease(s->context); s->context = NULL; if (s->session_info != NULL) { Free(s->session_info); s->session_info = NULL; } if (s->server_cert_info != NULL) { Free(s->server_cert_info); s->server_cert_info = NULL; } if (s->server_subjects != NULL) { Free(s->server_subjects); s->server_subjects = NULL; } Free(s); } /* Returns true if secure I/O is supported. */ bool sio_supported(void) { return true; } /* * Create a new connection. */ sio_init_ret_t sio_init(tls_config_t *c, const char *password, sio_t *sio_ret) { stransport_sio_t *s; OSStatus status; sio_init_ret_t ret = SI_SUCCESS; sioc_error_reset(); *sio_ret = NULL; config = c; s = (stransport_sio_t *)Malloc(sizeof(stransport_sio_t)); memset(s, 0, sizeof(*s)); s->sock = INVALID_SOCKET; s->context = SSLCreateContext(kCFAllocatorDefault, kSSLClientSide, kSSLStreamType); if (password != NULL) { Replace(interactive_password, NewString(password)); } status = SSLSetIOFuncs(s->context, read_func, write_func); if (status != errSecSuccess) { set_oserror(status, "SSLSetIOFuncs"); goto fail; } status = SSLSetConnection(s->context, s); if (status != errSecSuccess) { set_oserror(status, "SSLSetConnection"); goto fail; } if (!config->verify_host_cert) { status = SSLSetSessionOption(s->context, kSSLSessionOptionBreakOnServerAuth, true); if (status != errSecSuccess) { set_oserror(status, "SSLSetSessionOption"); goto fail; } } /* Set the client certificate, which could require a password. */ ret = set_client_cert(s); if (ret == SI_SUCCESS) { *sio_ret = (sio_t)s; return ret; } fail: sio_free(s); *sio_ret = NULL; return ret; } /* * Negotiate a TLS connection. * Returns true for success, false for failure. * If it returns false, the socket should be disconnected. * * Returns 'data' true if there is already protocol data pending. */ sio_negotiate_ret_t sio_negotiate(sio_t sio, socket_t sock, const char *hostname, bool *data) { stransport_sio_t *s; const char *accept_hostname = hostname; OSStatus status; varbuf_t v; size_t sl; sioc_error_reset(); *data = false; if (sio == NULL) { sioc_set_error("NULL sio"); return SIG_FAILURE; } s = (stransport_sio_t *)sio; if (s->negotiate_pending) { if (s->sock == INVALID_SOCKET) { sioc_set_error("Invalid sio"); return SIG_FAILURE; } } else { if (s->sock != INVALID_SOCKET) { sioc_set_error("Invalid sio"); return SIG_FAILURE; } s->sock = sock; s->hostname = hostname; if (config->accept_hostname != NULL) { if (!strncasecmp(accept_hostname, "DNS:", 4)) { accept_hostname = config->accept_hostname + 4; sioc_set_error("Empty acceptHostname"); goto fail; } else if (!strncasecmp(config->accept_hostname, "IP:", 3)) { sioc_set_error("Cannot use 'IP:' acceptHostname"); goto fail; } else if (!strcasecmp(config->accept_hostname, "any")) { sioc_set_error("Cannot use 'any' acceptHostname"); goto fail; } else { accept_hostname = config->accept_hostname; } } status = SSLSetPeerDomainName(s->context, accept_hostname, strlen(accept_hostname)); if (status != errSecSuccess) { set_oserror(status, "SSLSetPeerDomainName"); goto fail; } } /* Perform handshake. */ status = SSLHandshake(s->context); if (status == errSSLWouldBlock) { s->negotiate_pending = true; return SIG_WANTMORE; } if (status != errSecSuccess && status != errSSLServerAuthCompleted) { set_oserror(status, "SSLHandshake"); goto fail; } if (status == errSSLServerAuthCompleted) { /* Do it again, to complete the handshake. */ status = SSLHandshake(s->context); if (status == errSSLWouldBlock) { s->negotiate_pending = true; return SIG_WANTMORE; } if (status != errSecSuccess) { set_oserror(status, "SSLHandshake"); goto fail; } } /* Display connection info. */ vb_init(&v); display_connection_info(&v, s); s->session_info = vb_consume(&v); sl = strlen(s->session_info); if (sl > 0 && s->session_info[sl - 1] == '\n') { s->session_info[sl - 1] = '\0'; } /* Display server cert info. */ vb_init(&v); display_server_cert(&v, s); s->server_cert_info = vb_consume(&v); sl = strlen(s->server_cert_info); if (sl > 0 && s->server_cert_info[sl - 1] == '\n') { s->server_cert_info[sl - 1] = '\0'; } /* Display subject info. */ vb_init(&v); display_subjects(&v, s); s->server_subjects = vb_consume(&v); sl = strlen(s->server_subjects); if (sl > 0 && s->server_subjects[sl - 1] == '\n') { s->server_subjects[sl - 1] = '\0'; } /* Success. */ s->secure_unverified = !config->verify_host_cert; return SIG_SUCCESS; fail: return SIG_FAILURE; } /* * Read encrypted data from a socket. * Returns the data length, SIO_EOF for EOF, SIO_FATAL_ERROR for a fatal error, * SIO_EWOULDBLOCK for incomplete input. */ int sio_read(sio_t sio, char *buf, size_t buflen) { stransport_sio_t *s; OSStatus status; size_t n_read = 0; sioc_error_reset(); if (sio == NULL) { sioc_set_error("NULL sio"); return SIO_FATAL_ERROR; } s = (stransport_sio_t *)sio; if (s->sock == INVALID_SOCKET) { sioc_set_error("Invalid sio"); return SIO_FATAL_ERROR; } status = SSLRead(s->context, buf, buflen, &n_read); if (status == errSSLClosedGraceful || status == errSSLClosedNoNotify) { vtrace("TLS: EOF\n"); return 0; } if (status == errSSLWouldBlock) { vtrace("TLS: EWOULDBLOCK\n"); return SIO_EWOULDBLOCK; } if (status != errSecSuccess) { set_oserror(status, "SSLRead %d", status); return SIO_FATAL_ERROR; } return (int)n_read; } /* * Write encrypted data on the socket. * Returns the data length or SIO_FATAL_ERROR. */ int sio_write(sio_t sio, const char *buf, size_t buflen) { stransport_sio_t *s; OSStatus status; size_t n_written = 0; sioc_error_reset(); if (sio == NULL) { sioc_set_error("NULL sio"); return SIO_FATAL_ERROR; } s = (stransport_sio_t *)sio; if (s->sock == INVALID_SOCKET) { sioc_set_error("Invalid sio"); return SIO_FATAL_ERROR; } status = SSLWrite(s->context, buf, buflen, &n_written); if (status != errSecSuccess) { set_oserror(status, "SSLWrite"); return SIO_FATAL_ERROR; } return (int)buflen; } /* Closes the TLS connection. */ void sio_close(sio_t sio) { stransport_sio_t *s; if (sio == NULL) { return; } s = (stransport_sio_t *)sio; if (s->sock == INVALID_SOCKET) { return; } sio_free(s); } /* * Returns true if the current connection is unverified. */ bool sio_secure_unverified(sio_t sio) { stransport_sio_t *s = (stransport_sio_t *)sio; return s? s->secure_unverified: false; } /* * Returns a bitmap of the supported options. */ unsigned sio_options_supported(void) { return TLS_OPT_CERT_FILE | TLS_OPT_CLIENT_CERT | TLS_OPT_KEY_PASSWD; } const char * sio_session_info(sio_t sio) { stransport_sio_t *s = (stransport_sio_t *)sio; return (s != NULL)? s->session_info: NULL; } const char * sio_server_cert_info(sio_t sio) { stransport_sio_t *s = (stransport_sio_t *)sio; return (s != NULL)? s->server_cert_info: NULL; } const char * sio_server_subject_names(sio_t sio) { stransport_sio_t *s = (stransport_sio_t *)sio; return (s != NULL)? s->server_subjects: NULL; } const char * sio_provider(void) { return "Apple Secure Transport"; } suite3270-4.1/Common/sioc.c000066400000000000000000000124431413735575200153740ustar00rootroot00000000000000/* * Copyright (c) 2017, 2019-2020 Paul Mattes. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the names of Paul Mattes, Jeff Sparkes, GTRC nor the names of * their contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO * EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * sioc.c * Common back-end logic used by secure I/O providers, * plus common internal logic that depends on that. */ #include "globals.h" #include #include #include "utils.h" #include "tls_config.h" #include "sio.h" #include "varbuf.h" /* must precede sioc.h */ #include "sioc.h" #define READ_BUF 1024 #define STRING_PASSWD "string:" #define FILE_PASSWD "file:" /* Typedefs */ /* Statics */ /* Globals */ static char *sioc_last_error; /* Record an error. */ void sioc_set_error(const char *fmt, ...) { va_list args; char *t, *u; va_start(args, fmt); t = xs_vbuffer(fmt, args); va_end(args); u = xs_buffer("TLS: %s", t); Free(t); Replace(sioc_last_error, u); } /* Clear the last error. */ void sioc_error_reset(void) { Replace(sioc_last_error, NULL); } /* * Returns the last error as text. */ const char * sio_last_error(void) { return ((sioc_last_error != NULL)? sioc_last_error: "TLS: No error"); } /* Expand the contents of a file into a string. */ char * sioc_string_from_file(const char *path, size_t *len_ret) { FILE *f; char *accum = NULL; size_t n_accum = 0; f = fopen(path, "r"); if (f == NULL) { sioc_set_error("%s: %s", path, strerror(errno)); *len_ret = 0; return NULL; } while (true) { size_t nr; accum = Realloc(accum, n_accum + READ_BUF); nr = fread(accum + n_accum, 1, READ_BUF, f); n_accum += nr; if (nr < READ_BUF) { break; } } /* Null-terminate the string, but don't count that in the length. */ accum = Realloc(accum, n_accum + 1); accum[n_accum] = '\0'; fclose(f); *len_ret = n_accum; return accum; } /* Parse a password spec. */ char * sioc_parse_password_spec(const char *spec) { if (!strncasecmp(spec, STRING_PASSWD, strlen(STRING_PASSWD))) { /* string:xxx */ return NewString(spec + strlen(STRING_PASSWD)); } if (!strncasecmp(spec, FILE_PASSWD, strlen(FILE_PASSWD))) { size_t len; char *password; /* file:xxx */ password = sioc_string_from_file(spec + strlen(FILE_PASSWD), &len); if (password == NULL) { return NULL; } if (len > 0 && password[len - 1] == '\n') { password[--len] = '\0'; } if (len > 0 && password[len - 1] == '\r') { password[--len] = '\0'; } if (len == 0) { sioc_set_error("Empty password file"); Free(password); return NULL; } return password; } /* No qualifier, assume direct value */ return (NewString(spec)); } /* * Report all supported TLS-related options. */ unsigned sio_all_options_supported(void) { if (sio_supported()) { return TLS_REQUIRED_OPTS | sio_options_supported(); } else { return 0; } } /* * Add a string to a list of subjects. */ void sioc_subject_add(char ***subjects, char *s, ssize_t len) { int count = 0; /* Patch up the length. */ if (len == (ssize_t)-1) { len = strlen(s); } /* See if we really need to add anything. */ if (*subjects != (char **)NULL) { int i; for (i = 0; (*subjects)[i] != NULL; i++) { if (!strncmp((*subjects)[i], s, len) && (*subjects)[i][len] == '\0') { return; } } } if (*subjects != (char **)NULL) { while ((*subjects)[count] != NULL) { count++; } } *subjects = (char **)Realloc(*subjects, (count + 2) * sizeof(char *)); (*subjects)[count] = Malloc(len + 1); strncpy((*subjects)[count], s, len); (*subjects)[count][len] = '\0'; (*subjects)[count + 1] = NULL; } /* * Dump a list of subjects into a varbuf and free the list. */ void sioc_subject_print(varbuf_t *v, char ***subjects) { int i; if (*subjects == (char **)NULL) { return; } for (i = 0; (*subjects)[i] != NULL; i++) { vb_appendf(v, "%s\n", (*subjects)[i]); Free((*subjects)[i]); } Free(*subjects); *subjects = NULL; } suite3270-4.1/Common/source.c000066400000000000000000000140751413735575200157420ustar00rootroot00000000000000/* * Copyright (c) 1993-2016, 2018-2020 Paul Mattes. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the names of Paul Mattes nor the names of his contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO * EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * source.c * The Source action. */ #include "globals.h" #include "wincmn.h" #include #include #include "actions.h" #include "names.h" #include "popups.h" #include "source.h" #include "task.h" #include "trace.h" #include "utils.h" #include "varbuf.h" static void source_data(task_cbh handle, const char *buf, size_t len, bool success); static bool source_done(task_cbh handle, bool success, bool abort); static bool source_run(task_cbh handle, bool *success); /* Callback block for Source. */ static tcb_t source_cb = { "Source", IA_SCRIPT, CB_NEEDS_RUN, source_data, source_done, source_run }; /* State for one instance of Source. */ typedef struct { int fd; /* file descriptor */ char *path; /* pathname */ char *name; /* cb name */ char *result; /* one line of error result */ } source_t; /** * Callback for data returned to the Source action (which is ignored unless * a command it executes fails). * * @param[in] handle Callback handle * @param[in] buf Buffer * @param[in] len Buffer length * @param[in] success True if data, false if error message */ static void source_data(task_cbh handle _is_unused, const char *buf _is_unused, size_t len _is_unused, bool success) { source_t *s = (source_t *)handle; char *b = Malloc(len + 1); strncpy(b, buf, len); b[len] = '\0'; Replace(s->result, b); } /** * Free a source conext. * * @param[in] s Context. */ static void free_source(source_t *s) { Replace(s->name, NULL); Free(s); disable_keyboard(ENABLE, IMPLICIT, AnSource "() completion"); } /** * Callback for completion of one command executed by the Source action. * * @param[in] handle Callback handle * @param[in] success True if child succeeded * @param[in] abort True if aborting * * @return True if Source is complete */ static bool source_done(task_cbh handle, bool success, bool abort) { source_t *s = (source_t *)handle; if (!success) { vtrace("%s %s terminated due to error\n", s->name, s->path); close(s->fd); s->fd = -1; free_source(s); return true; } return false; } /** * Callback to run the Source action. * * @param[in] handle Callback handle. * @param[out] success If complete, returned success indication * * @return true if action is complete */ static bool source_run(task_cbh handle, bool *success) { source_t *s = (source_t *)handle; varbuf_t r; char *buf; /* Check for failure. */ if (s->fd == -1) { /* Aborted. */ popup_an_error(AnSource "(): %s", s->result? s->result: "failed"); free_source(s); *success = false; return true; } vb_init(&r); /* Read the next command from the file. */ while (true) { char c; int nr; nr = read(s->fd, &c, 1); if (nr < 0) { popup_an_error(AnSource "(%s) read error\n", s->path); vb_free(&r); close(s->fd); free_source(s); *success = false; return true; } if (nr == 0) { if (vb_len(&r) == 0) { vtrace("%s %s EOF\n", s->name, s->path); vb_free(&r); close(s->fd); free_source(s); *success = true; return true; } else { vtrace("%s %s EOF without newline\n", s->name, s->path); break; } } if (c == '\r' || c == '\n') { if (vb_len(&r)) { break; } else { continue; } } vb_append(&r, &c, 1); } /* Run the command as a macro. */ buf = vb_consume(&r); vtrace("%s %s read '%s'\n", s->name, s->path, buf); push_stack_macro(buf); Free(buf); /* Not done yet. */ return false; } /** * The Source() action. * * @param[in] ia Trigger for this action * @param[in] argc Argument count * @param[in] argv Arguments */ bool Source_action(ia_t ia, unsigned argc, const char **argv) { int fd; char *expanded_filename; source_t *s; char *name; action_debug(AnSource, ia, argc, argv); if (check_argc(AnSource, argc, 1, 1) < 0) { return false; } expanded_filename = do_subst(argv[0], DS_VARS | DS_TILDE); fd = open(expanded_filename, O_RDONLY); if (fd < 0) { Free(expanded_filename); popup_an_errno(errno, "%s", argv[0]); return false; } #if !defined(_WIN32) /*[*/ fcntl(fd, F_SETFD, 1); #endif /*]*/ Free(expanded_filename); /* Start reading from the file. */ s = (source_t *)Malloc(sizeof(source_t) + strlen(argv[0]) + 1); s->fd = fd; s->path = (char *)(s + 1); strcpy(s->path, argv[0]); s->result = NULL; name = push_cb(NULL, 0, &source_cb, (task_cbh)s); s->name = NewString(name); disable_keyboard(DISABLE, IMPLICIT, AnSource "() start"); return true; } suite3270-4.1/Common/split_host.c000066400000000000000000000214711413735575200166300ustar00rootroot00000000000000/* * Copyright (c) 1993-2020 Paul Mattes. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the names of Paul Mattes nor the names of his contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO * EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * split_host.c * Host name parsing. */ #include "globals.h" #include "split_host.h" #include "utils.h" static const char *pfxstr = "AaCcLlNnPpSsBbYyTt"; /** * Return the set of host prefixes. * * @returns Set of host prefixes. */ const char * host_prefixes(void) { static char *ret = NULL; size_t sl; char *r; size_t i; if (ret != NULL) { return ret; } sl = strlen(pfxstr); r = ret = Malloc((sl / 2) + 1); for (i = 0; i < sl; i += 2) { *r++ = pfxstr[i]; } *r = '\0'; return ret; } /** * Hostname parser. * [prefix:...][lu@]hostname[:port][=accept] * Backslashes to quote anything (including backslashes). * [ ] quotes : and @, e.g., [1:2::3] to quote an IPv6 numeric hostname. * * @param[in] raw Raw hostname, with possible decorations * @param[out] lu Returned Malloc'd LU name, or NULL * @param[out] host Returned Malloc'd hostname, isolated from other parts * @param[out] port Returned Malloc'd port, or NULL * @param[out] accept Returned Malloc'd accept hostname, or NULL * @param[out] prefixes Returned bitmap of prefixes, indexed by ACLNPSBYT (bit * 0 is A, bit 1 is C, bit 2 is L, etc.) * @param[out] error Returned error text for failure, or NULL * * @return true for success, false for syntax error. */ bool new_split_host(char *raw, char **lu, char **host, char **port, char **accept, unsigned *prefixes, char **error) { char *start = raw; size_t sl = strlen(raw); char *s; char *uq = NULL; int uq_len = 0; char *qmap = NULL; char *rqmap; char *skip_map = NULL; char *errmsg = "nonspecific"; bool rc = false; bool quoted = false; int bracketed = 0; int n_ch = 0; int n_at = 0; int n_colon = 0; int n_equal = 0; char *part[4] = { NULL, NULL, NULL, NULL }; int part_ix = 0; char *pfx; *lu = NULL; *host = NULL; *port = NULL; *accept = NULL; *prefixes = 0; *error = NULL; /* Trim leading and trailing blanks. */ while (sl && isspace((unsigned char)*start)) { start++; sl--; } while (sl && isspace((unsigned char)start[sl - 1])) { sl--; } if (!sl) { errmsg = "empty string"; goto done; } /* * 'start' now points to the start of the string, and sl is its length. */ /* * Create a bit-map of quoted characters. * This includes and character preceded by \, and any : or @ inside * unquoted [ and ]. * This can fail if an unquoted [ is found inside a [ ], or if an * unquoted [ is not terminated, or if whitespace is found. * Backslashes and unquoted square brackets are deleted at this point. * Leaves a filtered copy of the string in uq[]. */ uq = Malloc(sl + 1); qmap = Malloc(sl + 1); memset(qmap, ' ', sl); qmap[sl] = '\0'; rqmap = qmap; skip_map = Malloc(sl + 1); memset(skip_map, ' ', sl); skip_map[sl] = '\0'; for (s = start; (size_t)(s - start) < sl; s++) { if (isspace((unsigned char)*s)) { errmsg = "contains whitespace"; goto done; } if (quoted) { qmap[uq_len] = '+'; quoted = false; uq[uq_len++] = *s; continue; } else if (*s == '\\') { quoted = true; continue; } if (bracketed) { if (*s == ':' || *s == '@') { qmap[uq_len] = '+'; /* add the character below */ } else if (*s == '[') { errmsg = "nested '['"; goto done; } else if (*s == ']') { /* * What follows has to be the end of the * string, or an unquoted ':' or a '@'. */ if ((size_t)(s - start) == sl - 1 || *(s + 1) == '@' || *(s + 1) == ':') { bracketed = 0; } else { errmsg = "text following ']'"; goto done; } continue; } } else if (*s == '[') { /* * Make sure that what came before is the beginning of * the string or an unquoted : or @. */ if (uq_len == 0 || (qmap[uq_len - 1] == ' ' && (uq[uq_len - 1] == ':' || uq[uq_len - 1] == '@'))) { bracketed = 1; } else { errmsg = "text preceding '['"; goto done; } continue; } uq[uq_len++] = *s; } if (quoted) { errmsg = "dangling '\\'"; goto done; } if (bracketed) { errmsg = "missing ']'"; goto done; } if (!uq_len) { errmsg = "empty hostname"; goto done; } uq[uq_len] = '\0'; /* Trim off prefixes. */ s = uq; while ((pfx = strchr(pfxstr, *s)) != NULL && qmap[(s + 1) - uq] == ' ' && *(s + 1) == ':') { *prefixes |= 1 << ((pfx - pfxstr) / 2); s += 2; rqmap += 2; } start = s; /* * Now check for syntax: [LUname@]hostname[:port][=accept] * So more than one @, more than one :, : before @, or no text before @ * or :, or no text after : are all syntax errors. * So is more than one = and no text after =. * This also lets us figure out which elements are there. */ while (*s) { if (rqmap[s - start] == ' ') { if (*s == '@') { if (n_ch == 0) { errmsg = "empty LU name"; goto done; } if (n_colon > 0) { errmsg = "'@' after ':'"; goto done; } if (n_equal > 0) { errmsg = "'@' after '='"; goto done; } if (n_at > 0) { errmsg = "double '@'"; goto done; } n_at++; n_ch = 0; /* Trim off prefixes. */ while (rqmap[s + 1 - start] == ' ' && rqmap[s + 2 - start] == ' ' && (pfx = strchr(pfxstr, *(s + 1))) != NULL && *(s + 2) == ':') { *prefixes |= 1 << ((pfx - pfxstr) / 2); skip_map[s + 1 - start] = '+'; skip_map[s + 2 - start] = '+'; s += 2; } } else if (*s == ':') { if (n_colon > 0) { errmsg = "double ':'"; goto done; } if (n_ch == 0) { errmsg = "empty hostname"; goto done; } if (n_equal > 0) { errmsg = "':' after '='"; goto done; } n_colon++; n_ch = 0; } else if (*s == '=') { if (n_equal > 0) { errmsg = "double '='"; goto done; } if (n_ch == 0) { errmsg = "empty accept name"; goto done; } n_equal++; n_ch = 0; } else { n_ch++; } } else { n_ch++; } s++; } if (!n_ch) { if (n_equal) { errmsg = "empty accept name"; } else if (n_colon) { errmsg = "empty port"; } else { errmsg = "empty hostname"; } goto done; } /* * The syntax is clean, and we know what parts there are. * Split them out. */ if (n_at) { *lu = Malloc(uq_len + 1); part[0] = *lu; } *host = Malloc(uq_len + 1); part[1] = *host; if (n_colon) { *port = Malloc(uq_len + 1); part[2] = *port; } if (n_equal) { *accept = Malloc(uq_len + 1); part[3] = *accept; } s = start; n_ch = 0; while (*s) { if (skip_map[s - start] == ' ') { if (rqmap[s - start] == ' ' && (*s == '@' || *s == ':' || *s == '=')) { part[part_ix][n_ch] = '\0'; part_ix++; n_ch = 0; } else { while (part[part_ix] == NULL) { part_ix++; } part[part_ix][n_ch++] = *s; } } s++; } part[part_ix][n_ch] = '\0'; /* Success! */ rc = true; done: if (uq != NULL) { Free(uq); } if (qmap != NULL) { Free(qmap); } if (skip_map != NULL) { Free(skip_map); } if (!rc) { *error = xs_buffer("Hostname syntax error in '%s': %s", raw, errmsg); } return rc; } suite3270-4.1/Common/srctar.sh000077500000000000000000000017311413735575200161260ustar00rootroot00000000000000#!/usr/bin/env sh # Create a source tarball # srctar ... # Validate arguments me=`basename $0` if [ -z "$1" -o -z "$1" ] then echo >&2 "usage: $0 ..." exit 1 fi # Product name product=$1 shift case $product in # Change libxxx to lib/xxx. lib*) dirfrag=`echo $product | sed 's-lib-lib/-'` topdir=lib ;; *) dirfrag=$product topdir=$product ;; esac # Temporary directory tempdir=/tmp/srctar$$ rm -rf $tempdir # tar directory tardir=$tempdir/$dirfrag mkdir -p $tardir # Walk the list of files, which might include subdirectories, and create # symlinks back to the real files. for file in $* do # If the subdirectory does not exist, create it subdir=`dirname $file` if [ ! -d $tardir/$subdir ] then mkdir -p $tardir/$subdir fi ln -s $PWD/$file $tardir/$file done # Create the tar file. tarfile=$product-src.tgz rm -f $tarfile tar -czh -C $tempdir -f $tarfile $topdir echo "Created $tarfile." rm -rf $tempdir suite3270-4.1/Common/stats_stubs.c000066400000000000000000000031671413735575200170200ustar00rootroot00000000000000/* * Copyright (c) 2019 Paul Mattes. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the names of Paul Mattes nor the names of his contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO * EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * stats_stubs.c * Stubs for statistics. */ #include "globals.h" #include "stats.h" void stats_poke(void) { } suite3270-4.1/Common/status_stubs.c000066400000000000000000000046201413735575200172000ustar00rootroot00000000000000/* * Copyright (c) 1995-2009, 2015, 2018, 2021 Paul Mattes. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of Paul Mattes nor his contributors may be used * to endorse or promote products derived from this software without * specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. */ /* * status_stubs.c * Stub functions for status.c. */ #include "globals.h" #include "status.h" void status_compose(bool on _is_unused, ucs4_t ucs4 _is_unused, enum keytype keytype _is_unused) { } void status_ctlr_done(void) { } void status_insert_mode(bool on _is_unused) { } void status_keyboard_disable_flash(void) { } void status_lu(const char *s _is_unused) { } void status_minus(void) { } void status_oerr(int error_type _is_unused) { } void status_reset(void) { } void status_reverse_mode(bool on _is_unused) { } void status_screentrace(int n _is_unused) { } void status_script(bool on _is_unused) { } void status_scrolled(int n _is_unused) { } void status_syswait(void) { } void status_timing(struct timeval *t0 _is_unused, struct timeval *t1 _is_unused) { } void status_twait(void) { } void status_typeahead(bool on _is_unused) { } void status_untiming(void) { } suite3270-4.1/Common/stdinscript.c000066400000000000000000000162461413735575200170120ustar00rootroot00000000000000/* * Copyright (c) 1993-2016, 2018-2020 Paul Mattes. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the names of Paul Mattes nor the names of his contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO * EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * stdinscript.c * Reading script actions from stdin. */ #include "globals.h" #include "wincmn.h" #include #include #include "actions.h" #include "kybd.h" #include "names.h" #include "popups.h" #include "s3270_proto.h" #include "source.h" #include "task.h" #include "trace.h" #include "utils.h" #include "varbuf.h" #include "w3misc.h" #include "xio.h" static void stdin_data(task_cbh handle, const char *buf, size_t len, bool success); static bool stdin_done(task_cbh handle, bool success, bool abort); static void stdin_closescript(task_cbh handle); /* Callback block for stdin. */ static tcb_t stdin_cb = { "s3stdin", IA_SCRIPT, CB_NEW_TASKQ, stdin_data, stdin_done, NULL, stdin_closescript }; static ioid_t stdin_id = NULL_IOID; #if defined(_WIN32) /*[*/ static HANDLE stdin_thread; static HANDLE stdin_enable_event, stdin_done_event; static char stdin_buf[256]; int stdin_nr; int stdin_errno; #endif /*]*/ static bool pushed_wait = false; static bool enabled = true; #if !defined(_WIN32) /*[*/ /** * Read the next command from stdin (Unix version). * @param[in] fd File descriptor * @param[in] id I/O identifier */ static void stdin_input(iosrc_t fd _is_unused, ioid_t id _is_unused) { varbuf_t r; char *buf; size_t len = 0; /* Stop input. */ RemoveInput(stdin_id); stdin_id = NULL_IOID; vb_init(&r); while (true) { char c; int nr; nr = read(fileno(stdin), &c, 1); if (nr < 0) { vtrace("s3stdin read error: %s\n", strerror(errno)); vb_free(&r); x3270_exit(1); } if (nr == 0) { if (len == 0) { vtrace("s3stdin EOF\n"); vb_free(&r); x3270_exit(0); } else { break; } } if (c == '\r') { continue; } if (c == '\n') { break; } vb_append(&r, &c, 1); len++; } /* Run the command as a macro. */ buf = vb_consume(&r); vtrace("s3stdin read '%s'\n", buf); push_cb(buf, len, &stdin_cb, NULL); Free(buf); } #else /*][*/ /** * Read the next command from stdin (Windows version). * @param[in] fd File descriptor * @param[in] id I/O identifier */ static void stdin_input(iosrc_t fd _is_unused, ioid_t id _is_unused) { if (stdin_nr < 0) { vtrace("s3stdin read error: %s\n", strerror(stdin_errno)); x3270_exit(1); } if (stdin_nr == 0) { vtrace("s3stdin EOF\n"); x3270_exit(0); } if (stdin_nr > 0 && stdin_buf[stdin_nr] == '\n') { stdin_nr--; } if (stdin_nr > 0 && stdin_buf[stdin_nr] == '\r') { stdin_nr--; } vtrace("s3stdin read '%.*s'\n", stdin_nr, stdin_buf); push_cb(stdin_buf, stdin_nr, &stdin_cb, NULL); } #endif /*]*/ /** * Callback for data returned to stdin. * * @param[in] handle Callback handle * @param[in] buf Buffer * @param[in] len Buffer length * @param[in] success True if data, false if error message */ static void stdin_data(task_cbh handle _is_unused, const char *buf, size_t len, bool success) { printf(DATA_PREFIX "%.*s\n", (int)len, buf); fflush(stdout); } /** * Callback for completion of one command executed from stdin. * * @param[in] handle Callback handle * @param[in] success True if child succeeded * @param[in] abort True if aborting * * @return True if context is complete */ static bool stdin_done(task_cbh handle, bool success, bool abort) { /* Print the prompt. */ if (!pushed_wait) { char *prompt = task_cb_prompt(handle); vtrace("Output for s3stdin: %s/%s\n", prompt, success? PROMPT_OK: PROMPT_ERROR); printf("%s\n%s\n", prompt, success? PROMPT_OK: PROMPT_ERROR); fflush(stdout); } pushed_wait = false; /* Allow more. */ if (enabled) { #if !defined(_WIN32) /*[*/ stdin_id = AddInput(fileno(stdin), stdin_input); #else /*][*/ stdin_nr = 0; SetEvent(stdin_enable_event); if (stdin_id == NULL_IOID) { stdin_id = AddInput(stdin_done_event, stdin_input); } #endif /*]*/ } /* Future commands will be async. */ return true; } #if defined(_WIN32) /*[*/ /* stdin input thread */ static DWORD WINAPI stdin_read(LPVOID lpParameter _is_unused) { for (;;) { DWORD rv; rv = WaitForSingleObject(stdin_enable_event, INFINITE); switch (rv) { case WAIT_ABANDONED: case WAIT_TIMEOUT: case WAIT_FAILED: stdin_nr = -1; stdin_errno = EINVAL; SetEvent(stdin_done_event); break; case WAIT_OBJECT_0: stdin_nr = read(0, stdin_buf, sizeof(stdin_buf)); if (stdin_nr < 0) { stdin_errno = errno; } SetEvent(stdin_done_event); break; } } return 0; } #endif /*]*/ /** * Back end of the CloseScript action. Stop accepting input from stdin. */ static void stdin_closescript(task_cbh handle _is_unused) { enabled = false; } /** * Initialize reading commands from stdin. */ void stdin_init(void) { static char *wait = AnWait "(" KwInputField ")"; #if defined(_WIN32) /*[*/ /* Set up the thread that reads from stdin. */ stdin_enable_event = CreateEvent(NULL, FALSE, FALSE, NULL); stdin_done_event = CreateEvent(NULL, FALSE, FALSE, NULL); stdin_thread = CreateThread(NULL, 0, stdin_read, NULL, 0, NULL); if (stdin_thread == NULL) { popup_an_error("Cannot create s3stdin read thread: %s\n", win32_strerror(GetLastError())); } #endif /*]*/ /* If not connected yet, wait for one before enabling input. */ /* XXX: We might need to add a Wait(Connect) action. */ if ((HALF_CONNECTED || (CONNECTED && (kybdlock & KL_AWAITING_FIRST)))) { push_cb(wait, strlen(wait), &stdin_cb, NULL); pushed_wait = true; } else { /* Allow input. */ #if !defined(_WIN32) /*[*/ stdin_id = AddInput(fileno(stdin), stdin_input); #else /*][*/ SetEvent(stdin_enable_event); stdin_id = AddInput(stdin_done_event, stdin_input); #endif /*]*/ } } suite3270-4.1/Common/stringscript.c000066400000000000000000000206001413735575200171640ustar00rootroot00000000000000/* * Copyright (c) 1993-2016, 2018-2021 Paul Mattes. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the names of Paul Mattes nor the names of his contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO * EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * stringscript.c * The String action. */ #include "globals.h" #include "wincmn.h" #include #include #include "actions.h" #include "kybd.h" #include "names.h" #include "popups.h" #include "stringscript.h" #include "task.h" #include "trace.h" #include "unicodec.h" #include "utils.h" #include "varbuf.h" static const char hex_digits[] = "0123456789abcdefABCDEF"; static bool string_run(task_cbh handle, bool *success); static void string_child_data(task_cbh handle, const char *buf, size_t len, bool success); static bool string_child_done(task_cbh handle, bool success, bool abort); /* Leaf callback block for String. */ static tcb_t string_cb = { "String", IA_MACRO, CB_NEEDS_RUN, string_child_data, string_child_done, string_run }; /* State for one instance of String. */ typedef struct { char *data; /* data pointer */ size_t len; /* remaining length */ ucs4_t *pdata; /* paste data */ size_t pdata_len; /* size of paste data */ ia_t ia; /* cause */ bool is_hex; /* true if data is hexadecimal */ bool is_paste; /* true to use paste mode */ bool force_utf8; /* true to force UTF-8 conversion */ char *result; /* error message from child action */ bool aborted; /* action aborted due to child error */ } string_t; /** * Incremental run command for a String. * * @param[in] handle Context * @param[out] success Returned success/failure if function returns * true * * @return true if complete, false if blocked */ static bool string_run(task_cbh handle, bool *success) { string_t *s = (string_t *)handle; bool done = false; *success = true; /* Check for an abort triggered by a child failure. */ if (s->aborted) { if (!IA_IS_KEY(s->ia)) { /* For anything but a keymap, pop up an error message. */ if (s->result) { popup_an_error(AnString "() failed: %s", s->result); } else { popup_an_error(AnString "() terminated due to error"); } } else { vtrace(AnString "() terminated due to error\n"); } *success = false; done = true; goto clean_up; } /* Check for a pre-existing operator error. */ if (kybdlock & KL_OERR_MASK) { popup_an_error("Operator error"); *success = false; done = true; goto clean_up; } /* Check for some waitable keyboard lock. */ if (task_can_kbwait()) { task_kbwait(); goto clean_up; } /* Any other keyboard lock is fatal, such as disconnect. */ if (kybdlock) { popup_an_error("Canceled"); *success = false; done = true; goto clean_up; } if (s->is_paste) { /* Push in paste data. */ emulate_uinput(s->pdata, s->pdata_len, true); done = true; } else if (s->is_hex) { /* Run the whole string. */ hex_input(s->data); done = true; } else { /* Run what we can. */ size_t len_left = emulate_input(s->data, s->len, false, s->force_utf8); s->data += s->len - len_left; s->len = len_left; if (s->len == 0) { done = true; } } /* Check for induced operator error. */ if (kybdlock & KL_OERR_MASK) { popup_an_error("Operator error"); *success = false; done = true; } /* Check for some waitable keyboard lock. */ if (task_can_kbwait()) { task_kbwait(); done = false; goto clean_up; } clean_up: if (done) { Replace(s->result, NULL); Replace(s->pdata, NULL); Free(s); } return done; } /** * Callback for data returned to the String action by its children. It is * ignored unless a command it executes fails. * * @param[in] handle Callback handle * @param[in] buf Buffer * @param[in] len Buffer length * @param[in] success True if data, false if error message */ static void string_child_data(task_cbh handle, const char *buf, size_t len, bool success) { string_t *s = (string_t *)handle; char *b = Malloc(len + 1); strncpy(b, buf, len); b[len] = '\0'; Replace(s->result, b); } /** * Callback for completion of one action executed by the String action. * * @param[in] handle Callback handle * @param[in] success True if child succeeded * @param[in] abort True if aborting * * @return True if context is complete */ static bool string_child_done(task_cbh handle, bool success, bool abort) { string_t *s = (string_t *)handle; if (!success) { s->aborted = true; } if (abort) { Replace(s->result, NULL); Replace(s->pdata, NULL); Free(s); return true; } return false; } /** * Translate a hex digit to a nybble. * * @param[in] digit Hex digit * * @return Nybble (value from 0 to 16). */ static unsigned char hex_to_nybble(char c) { size_t ix = (unsigned char)(strchr(hex_digits, c) - hex_digits); if (ix > 15) { ix -= 6; } return (unsigned char)ix; } /** * Transform a hex string from multibyte to Unicode characters. * * @param[in] s String * @param[out] lenp Returned length (number of ucs4 elements) * @param[in] force_utf8 True to force UTF-8 conversion * * @return Translated string, or NULL for an error. */ static ucs4_t * hex_to_unicode(const char *s, size_t *lenp, bool force_utf8) { size_t text_len; size_t utf8_len; char *utf8_buf; char *u8p; size_t i; ucs4_t *ucs4_buf; int len; /* Do gross syntax checking first to make the code simpler below. */ if (strspn(s, hex_digits) != strlen(s)) { return NULL; } text_len = strlen(s); if (!text_len || (text_len % 2) != 0) { return NULL; } /* Translate text to binary. */ utf8_len = text_len / 2; u8p = utf8_buf = Malloc(utf8_len); for (i = 0; i < text_len; i += 2) { *u8p++ = (hex_to_nybble(s[i]) << 4) | hex_to_nybble(s[i + 1]); } /* Translate to Unicode. */ ucs4_buf = (ucs4_t *)Malloc(utf8_len * sizeof(ucs4_t)); len = multibyte_to_unicode_string(utf8_buf, utf8_len, ucs4_buf, utf8_len, force_utf8); if (len < 0) { Free(utf8_buf); Free(ucs4_buf); return NULL; } Free(utf8_buf); *lenp = len; return ucs4_buf; } /** * Back end of the String() action. * * @param[in] st String to execute * @param[in] is_hex True if string is in hex * @param[in] is_paste True if paste mode * @param[in] force_utf8 True to force UTF-8 conversion */ void push_string(char *st, bool is_hex, bool is_paste, bool force_utf8) { string_t *s; ucs4_t *pdata = NULL; size_t pdata_len = 0; if (is_paste) { if ((pdata = hex_to_unicode(st, &pdata_len, force_utf8)) == NULL) { popup_an_error("Invalid hexadecimal paste data"); return; } } /* Construct the context. */ s = (string_t *)Calloc(sizeof(string_t) + strlen(st) + 1, 1); s->data = (char *)(s + 1); strcpy(s->data, st); s->len = strlen(st); s->pdata = pdata; s->pdata_len = pdata_len; s->ia = IA_MACRO; s->is_hex = is_hex; s->is_paste = is_paste; s->force_utf8 = force_utf8; s->result = NULL; s->aborted = false; /* Push a leaf callback. */ push_cb(NULL, 0, &string_cb, (task_cbh)s); } suite3270-4.1/Common/stripucm.sh000077500000000000000000000011521413735575200164730ustar00rootroot00000000000000#!/usr/bin/env sh # Strip the junk away from a .ucm file. # For now, outputs the length, followed by the data in two columns (Unicode and # target). Later it should do extent compression, likely requiring Perl. tf=/tmp/u$$ rm -rf $tf sed -e '1,/^CHARMAP/d' \ -e '/^END CHARMAP/,$d' \ -e '/^$/d' \ -e '/^#/d' \ -e 's/ #.*//' \ -e 's/ |0.*//' \ -e 's/^//' \ -e 's/\\x//g' \ $1 | \ tr '[A-F]' '[a-f]' >$tf echo "/* Translation tables for $2. */" echo "" echo '#include "xl.h"' echo "" sort +0 -1 $tf | ./mktbl encode_$2 sort +1 $tf | awk '{print $2 " " $1}' | ./mktbl decode_$2 #rm $tf suite3270-4.1/Common/strtok_r.c000066400000000000000000000047341413735575200163120ustar00rootroot00000000000000/* * Copyright (c) 2002-2009, Paul Mattes. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the names of Paul Mattes nor the names of his contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO * EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * strtok_r.c * A standard C library function that isn't available everywhere. */ #include /* * Isolate sequential tokens in a null-terminated string, str. These tokens * are separated in the string by at least one of the characters in sep. The * first time that strtok() is called, str should be specified; subsequent * calls, wishing to obtain further tokens from the same string, should pass * a null pointer instead. The separator string, sep, must be supplied each * time, and may change between calls. * * strtok_r() is reentrant. The context pointer last must be provided on * each call. strtok_r() may also be used to nest two parsing loops within * one another, as long as separate context pointers are used. */ char * strtok_r(char *str, const char *sep, char **last) { char *r, *e; if (str != NULL) *last = str; r = *last + strspn(*last, sep); e = r + strcspn(r, sep); if (*e) *e++ = '\0'; *last = e; return *r? r: NULL; } suite3270-4.1/Common/tables.c000066400000000000000000000126241413735575200157120ustar00rootroot00000000000000/* * Copyright (c) 1993-2009, 2015 Paul Mattes. * Copyright (c) 1990, Jeff Sparkes. * Copyright (c) 1989, Georgia Tech Research Corporation (GTRC), Atlanta, GA * 30332. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the names of Paul Mattes, Jeff Sparkes, GTRC nor the names of * their contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES, JEFF SPARKES AND GTRC "AS IS" AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL PAUL MATTES, JEFF SPARKES OR GTRC BE * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. */ /* * tables.c * Translation tables between ASCII (actually ISO 8859-1) and * EBCDIC code page 37. */ #include "globals.h" #include "tables.h" const unsigned char ebc2asc0[256] = { /*00*/ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, /*08*/ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, /*10*/ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, /*18*/ 0x20, 0x20, 0x20, 0x20, 0x2a, 0x20, 0x3b, 0x20, /*20*/ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, /*28*/ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, /*30*/ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, /*38*/ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, /*40*/ 0x20, 0x20, 0xe2, 0xe4, 0xe0, 0xe1, 0xe3, 0xe5, /*48*/ 0xe7, 0xf1, 0xa2, 0x2e, 0x3c, 0x28, 0x2b, 0x7c, /*50*/ 0x26, 0xe9, 0xea, 0xeb, 0xe8, 0xed, 0xee, 0xef, /*58*/ 0xec, 0xdf, 0x21, 0x24, 0x2a, 0x29, 0x3b, 0xac, /*60*/ 0x2d, 0x2f, 0xc2, 0xc4, 0xc0, 0xc1, 0xc3, 0xc5, /*68*/ 0xc7, 0xd1, 0xa6, 0x2c, 0x25, 0x5f, 0x3e, 0x3f, /*70*/ 0xf8, 0xc9, 0xca, 0xcb, 0xc8, 0xcd, 0xce, 0xcf, /*78*/ 0xcc, 0x60, 0x3a, 0x23, 0x40, 0x27, 0x3d, 0x22, /*80*/ 0xd8, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, /*88*/ 0x68, 0x69, 0xab, 0xbb, 0xf0, 0xfd, 0xfe, 0xb1, /*90*/ 0xb0, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f, 0x70, /*98*/ 0x71, 0x72, 0xaa, 0xba, 0xe6, 0xb8, 0xc6, 0xa4, /*a0*/ 0xb5, 0x7e, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, /*a8*/ 0x79, 0x7a, 0xa1, 0xbf, 0xd0, 0xdd, 0xde, 0xae, /*b0*/ 0x5e, 0xa3, 0xa5, 0xb7, 0xa9, 0xa7, 0xb6, 0xbc, /*b8*/ 0xbd, 0xbe, 0x5b, 0x5d, 0xaf, 0xa8, 0xb4, 0xd7, /*c0*/ 0x7b, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, /*c8*/ 0x48, 0x49, 0xad, 0xf4, 0xf6, 0xf2, 0xf3, 0xf5, /*d0*/ 0x7d, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f, 0x50, /*d8*/ 0x51, 0x52, 0xb9, 0xfb, 0xfc, 0xf9, 0xfa, 0xff, /*e0*/ 0x5c, 0xf7, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, /*e8*/ 0x59, 0x5a, 0xb2, 0xd4, 0xd6, 0xd2, 0xd3, 0xd5, /*f0*/ 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, /*f8*/ 0x38, 0x39, 0xb3, 0xdb, 0xdc, 0xd9, 0xda, 0x20 }; const unsigned char asc2ebc0[256] = { /*00*/ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /*08*/ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /*10*/ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /*18*/ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /*20*/ 0x40, 0x5a, 0x7f, 0x7b, 0x5b, 0x6c, 0x50, 0x7d, /*28*/ 0x4d, 0x5d, 0x5c, 0x4e, 0x6b, 0x60, 0x4b, 0x61, /*30*/ 0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, /*38*/ 0xf8, 0xf9, 0x7a, 0x5e, 0x4c, 0x7e, 0x6e, 0x6f, /*40*/ 0x7c, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, /*48*/ 0xc8, 0xc9, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, /*50*/ 0xd7, 0xd8, 0xd9, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, /*58*/ 0xe7, 0xe8, 0xe9, 0xba, 0xe0, 0xbb, 0xb0, 0x6d, /*60*/ 0x79, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, /*68*/ 0x88, 0x89, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, /*70*/ 0x97, 0x98, 0x99, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, /*78*/ 0xa7, 0xa8, 0xa9, 0xc0, 0x4f, 0xd0, 0xa1, 0x00, /*80*/ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /*88*/ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /*90*/ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /*98*/ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /*a0*/ 0x41, 0xaa, 0x4a, 0xb1, 0x9f, 0xb2, 0x6a, 0xb5, /*a8*/ 0xbd, 0xb4, 0x9a, 0x8a, 0x5f, 0xca, 0xaf, 0xbc, /*b0*/ 0x90, 0x8f, 0xea, 0xfa, 0xbe, 0xa0, 0xb6, 0xb3, /*b8*/ 0x9d, 0xda, 0x9b, 0x8b, 0xb7, 0xb8, 0xb9, 0xab, /*c0*/ 0x64, 0x65, 0x62, 0x66, 0x63, 0x67, 0x9e, 0x68, /*c8*/ 0x74, 0x71, 0x72, 0x73, 0x78, 0x75, 0x76, 0x77, /*d0*/ 0xac, 0x69, 0xed, 0xee, 0xeb, 0xef, 0xec, 0xbf, /*d8*/ 0x80, 0xfd, 0xfe, 0xfb, 0xfc, 0xad, 0xae, 0x59, /*e0*/ 0x44, 0x45, 0x42, 0x46, 0x43, 0x47, 0x9c, 0x48, /*e8*/ 0x54, 0x51, 0x52, 0x53, 0x58, 0x55, 0x56, 0x57, /*f0*/ 0x8c, 0x49, 0xcd, 0xce, 0xcb, 0xcf, 0xcc, 0xe1, /*f8*/ 0x70, 0xdd, 0xde, 0xdb, 0xdc, 0x8d, 0x8e, 0xdf }; suite3270-4.1/Common/task.c000066400000000000000000003053201413735575200154000ustar00rootroot00000000000000/* * Copyright (c) 1993-2021 Paul Mattes. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the names of Paul Mattes nor the names of his contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO * EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * task.c * This module handles macro and script processing */ #include "globals.h" #if !defined(_WIN32) /*[*/ #include #include #include #include #include #else /*][*/ #include "wincmn.h" #endif /*]*/ #include #include #include #include #include "3270ds.h" #include "appres.h" #include "ctlr.h" #include "resources.h" #include "toggles.h" #include "actions.h" #include "base64.h" #include "bind-opt.h" #include "child.h" #include "childscript.h" #include "copyright.h" #include "ctlrc.h" #include "unicodec.h" #include "ft.h" #include "host.h" #include "idle.h" #include "kybd.h" #include "lazya.h" #include "menubar.h" #include "names.h" #include "nvt.h" #include "opts.h" #include "peerscript.h" #include "popups.h" #include "pr3287_session.h" #include "product.h" #include "s3270_proto.h" #include "screen.h" #include "source.h" #include "split_host.h" #include "stdinscript.h" #include "stringscript.h" #include "task.h" #include "telnet.h" #include "toupper.h" #include "trace.h" #include "utf8.h" #include "utils.h" #include "varbuf.h" #include "vstatus.h" #include "xio.h" #include "w3misc.h" #define NVT_SAVE_SIZE 4096 /* Maximum size of a macro. */ #define MSC_BUF 1024 /* IA test for UTF-8 overrides. */ #define IA_UTF8(ia) ((ia) == IA_HTTPD) /* Globals */ struct macro_def *macro_defs = NULL; /* Statics */ typedef struct task { /* Common fields. */ struct task *next; /* next task on the stack */ struct _taskq *taskq; /* root of this stack */ enum task_type { ST_MACRO, /* macro */ ST_CB /* meta (script, string, httpd, login macro, idle) */ #define NUM_ST (ST_CB + 1) } type; enum task_state { TS_IDLE, /* no command active */ TS_RUNNING, /* command executing */ TS_NEED_RUN, /* need run callback */ /* --- all states after this are blocked --- */ #define MIN_WAITING_STATE TS_KBWAIT TS_KBWAIT, /* command awaiting keyboard unlock */ TS_CONNECT_WAIT,/* command awaiting connection to complete */ TS_FT_WAIT, /* command awaiting file transfer to complete */ TS_TIME_WAIT, /* command awaiting simple timeout */ TS_WAIT_NVT, /* awaiting completion of Wait(NVTMode) */ TS_WAIT_3270, /* awaiting completion of Wait(3270Mode) */ TS_WAIT_OUTPUT, /* awaiting completion of Wait(Output) */ TS_SWAIT_OUTPUT,/* awaiting completion of Snap(Wait) */ TS_WAIT_DISC, /* awaiting completion of Wait(Disconnect) */ TS_WAIT_IFIELD, /* awaiting completion of Wait(InputField) */ TS_WAIT_UNLOCK, /* awaiting completion of Wait(Unlock) */ TS_EXPECTING, /* awaiting completion of Expect() */ TS_PASSTHRU, /* awaiting completion of a pass-through action */ TS_XWAIT /* extended wait */ } state; bool success; bool accumulated; /* accumulated time flag */ bool is_ui; /* generated by the user interface */ struct timeval t0; /* start time */ unsigned long child_msec; /* child time */ ioid_t expect_id; /* timeout ID for Expect() */ ioid_t wait_id; /* timeout ID for Wait() */ int passthru_index; /* UI passthru command index */ int depth; /* depth on stack */ bool fatal; /* tear everything down after completion */ void *wait_context; /* opaque context for waiting */ xcontinue_fn *xcontinue_fn; /* continue function */ /* Expect() fields. */ struct { char *text; /* text to match */ size_t len; /* length of match */ } expect; /* Macro fields. */ struct { char *msc; /* input buffer */ const char *dptr; /* data pointer */ # define LAST_BUF 64 char last[LAST_BUF]; /* last command */ } macro; /* cb fields. */ struct task_cbx { /* ST_CB context: */ const tcb_t *cb; /* callback block */ task_cbh handle; /* handle */ } cbx; } task_t; static task_t *current_task = NULL; /* the current task */ static int passthru_index = 0; static peer_listen_t global_peer_listen = NULL; /* List of active task stacks. */ typedef struct _taskq { llist_t llist; /* linkage */ char *name; /* simple name */ char *unique_name; /* unique name */ const tcb_t *cb; /* callback block */ task_t *top; /* top of stack */ int depth; /* depth of the stack, for debug display */ unsigned short index; /* index, for debug display */ bool deleted; /* delete flag */ bool output_wait_needed; /* should Wait(Output) block? */ } taskq_t; static llist_t taskq = LLIST_INIT(taskq); static unsigned short taskq_index = 1; typedef struct _owait { struct _owait *next; /* linkage */ const tcb_t *cb; /* callback block */ } owait_t; static owait_t *owait_list = NULL; static const char *task_state_name[] = { "IDLE", "RUNNING", "NEED_RUN", "KBWAIT", "CONNECT_WAIT", "FT_WAIT", "TIME_WAIT", "WAIT_NVT", "WAIT_3270", "WAIT_OUTPUT", "SWAIT_OUTPUT", "WAIT_DISC", "WAIT_IFIELD", "WAIT_UNLOCK", "EXPECTING", "PASSTHRU", "XWAIT" }; static struct macro_def *macro_last = (struct macro_def *) NULL; static unsigned char *nvt_save_buf; static size_t nvt_save_cnt = 0; static int nvt_save_ix = 0; static const char *st_name[NUM_ST] = { "Macro", /* MACRO */ "Callback" /* CB */ }; static const char *stsname(task_t *s); #define TASK_NAME_FMT "%s[#%u.%d]" #define TASK_sNAME(s) stsname(s), (s)->taskq->index, (s)->depth #define TASK_NAME TASK_sNAME(current_task) #if !defined(_WIN32) /*[*/ static void cleanup_socket(bool b); #endif /*]*/ static void call_run(task_t *s); static void task_done(bool success); static void task_pop(void); static void wait_timed_out(ioid_t id); static task_t *task_redirect_to(void); static bool expect_matches(task_t *task); /* Macro that defines that the keyboard is locked due to user input. */ #define KBWAIT_MASK (KL_OIA_LOCKED|KL_OIA_TWAIT|KL_DEFERRED_UNLOCK|KL_ENTER_INHIBIT|KL_AWAITING_FIRST) #define KBWAIT (kybdlock & KBWAIT_MASK) #define CKBWAIT (toggled(AID_WAIT) && KBWAIT) /* Macro that defines when it's safe to continue a Wait()ing task. */ #define CAN_PROCEED \ (IN_SSCP || \ (IN_3270 && \ (HOST_FLAG(NO_LOGIN_HOST) || \ (formatted && cursor_addr)) && !CKBWAIT) || \ (IN_NVT && \ !(kybdlock & KL_AWAITING_FIRST))) /* An input request. */ typedef struct { llist_t llist; /* linkage */ continue_fn *continue_fn; /* continue function */ abort_fn *abort_fn; /* abort function */ void *handle; /* to pass to continue function */ } input_request_t; static llist_t input_requestq = LLIST_INIT(input_requestq); /* Per-type input request state, kept per (interactive) callback. */ typedef struct { llist_t llist; /* linkage */ const char *name; /* name */ void *state; /* state */ ir_state_abort_cb abort; /* abort callback */ } ir_state_t; static action_t Abort_action; static action_t Ascii_action; static action_t Ascii1_action; static action_t AsciiField_action; static action_t CloseScript_action; static action_t Ebcdic_action; static action_t Ebcdic1_action; static action_t EbcdicField_action; static action_t Execute_action; static action_t Expect_action; static action_t KeyboardDisable_action; static action_t Macro_action; static action_t NvtText_action; static action_t Pause_action; static action_t ReadBuffer_action; static action_t Snap_action; static action_t Wait_action; static action_t Capabilities_action; static action_t ResumeInput_action; static action_t RequestInput_action; static action_t Bell_action; static action_t Printer_action; static unsigned char calc_cs(unsigned char cs); /** * Expand the name of a task. * * @param[in] s Task * * @return Its name */ static const char * stsname(task_t *s) { if (s->type == ST_CB) { return lazyaf("CB(%s)", s->cbx.cb->shortname); } else { return st_name[(int)s->type]; } } static void trace_task_output(task_t *s, const char *fmt, ...) { va_list args; char *msgbuf; char *st; char *m; char c; if (!toggled(TRACING)) { return; } va_start(args, fmt); msgbuf = xs_vbuffer(fmt, args); va_end(args); m = msgbuf; st = msgbuf; while ((c = *st++)) { if (c == '\n') { vtrace("Output for " TASK_NAME_FMT ": '%.*s'\n", TASK_sNAME(s), (int)((st - 1) - m), m); m = st; continue; } } Free(msgbuf); } /* Parse the macros resource into the macro list */ void macros_init(void) { char *s = NULL; char *name, *action; struct macro_def *m; int ns; int ix = 1; static char *last_macros_resource = NULL; const char *macros_resource = NULL; /* Search for new ones. */ if (PCONNECTED) { char *rname; char *space; rname = NewString(current_host); if ((space = strchr(rname, ' '))) { *space = '\0'; } s = get_fresource("%s.%s", ResMacros, rname); if (s != NULL) { macros_resource = lazyaf("%s.%s", ResMacros, rname); } Free(rname); } if (s == NULL) { if (appres.macros == NULL) { return; } s = NewString(appres.macros); macros_resource = ResMacros; } else { s = NewString(s); } /* See if this is a repeat call. */ if (last_macros_resource != NULL && !strcmp(last_macros_resource, macros_resource)) { Free(s); return; } Replace(last_macros_resource, NewString(macros_resource)); /* Free the previous macro definitions. */ while (macro_defs) { m = macro_defs->next; Free(macro_defs); macro_defs = m; } macro_defs = NULL; while ((ns = split_dresource(&s, &name, &action)) == 1) { char *action_error; m = (struct macro_def *)Malloc(sizeof(*m)); if (!split_hier(name, &m->name, &m->parents)) { Free(m); continue; } if (!validate_command(action, (int)(action - name), &action_error)) { popup_an_error("Error in %s line %d:\n%s", macros_resource, ix, action_error); Free(action_error); ns = 0; break; } m->action = action; if (macro_last) { macro_last->next = m; } else { macro_defs = m; } m->next = NULL; macro_last = m; ix++; } if (ns < 0) { popup_an_error("Format error in %s line %d", macros_resource, ix); } } /** * Upcall for toggling the script listener on and off. * * @param[in] name Name of toggle * @param[in] value Toggle value * @param[out] canonical_value Returned canonical value * @returns true if toggle changed successfully */ static bool scriptport_toggle_upcall(const char *name, const char *value) { struct sockaddr *sa; socklen_t sa_len; if (global_peer_listen != NULL) { peer_shutdown(global_peer_listen); global_peer_listen = NULL; } if (value == NULL || !*value) { Replace(appres.script_port, NULL); return true; } if (!parse_bind_opt(value, &sa, &sa_len)) { popup_an_error("Invalid %s: %s", name, value); return false; } Replace(appres.script_port, canonical_bind_opt(sa)); global_peer_listen = peer_init(sa, sa_len, PLM_MULTI); Free(sa); return true; } static bool Info_action(ia_t ia, unsigned argc, const char **argv) { action_debug(AnInfo, ia, argc, argv); if (check_argc(AnInfo, argc, 1, 1) < 0) { return false; } popup_an_info("%s", argv[0]); return true; } static bool ignore_action(ia_t ia, unsigned argc, const char **argv) { action_debug(Anignore, ia, argc, argv); return true; } /** * Task module registration. */ void task_register(void) { static action_table_t task_actions[] = { { AnAbort, Abort_action, ACTION_KE }, { AnAnsiText, NvtText_action, 0 }, { AnAscii, Ascii_action, 0 }, { AnAscii1, Ascii1_action, 0 }, { AnAsciiField, AsciiField_action, 0 }, { AnBell, Bell_action, 0 }, { AnCapabilities, Capabilities_action, ACTION_HIDDEN }, { AnCloseScript, CloseScript_action, 0 }, { AnEbcdic, Ebcdic_action, 0 }, { AnEbcdic1, Ebcdic1_action, 0 }, { AnEbcdicField, EbcdicField_action, 0 }, { AnExecute, Execute_action, ACTION_KE }, { AnExpect, Expect_action, 0 }, { Anignore, ignore_action, ACTION_KE }, { AnInfo, Info_action, 0 }, { AnKeyboardDisable, KeyboardDisable_action, 0 }, { AnMacro, Macro_action, ACTION_KE }, { AnNvtText, NvtText_action, 0 }, { AnPause, Pause_action, 0 }, { AnPrompt, Prompt_action, 0 }, { AnReadBuffer, ReadBuffer_action, 0 }, { RESUME_INPUT, ResumeInput_action, ACTION_HIDDEN }, { AnRequestInput, RequestInput_action, ACTION_HIDDEN }, { AnScript, Script_action, ACTION_KE }, { AnSnap, Snap_action, 0 }, { AnSource, Source_action, ACTION_KE }, { AnWait, Wait_action, ACTION_KE } }; static action_table_t task_dactions[] = { { AnPrinter, Printer_action, ACTION_KE }, }; static toggle_register_t toggles[] = { { AID_WAIT, NULL, 0 } }; static xres_t task_xresources[] = { { ResMacros, V_WILD }, }; /* Register actions.*/ register_actions(task_actions, array_count(task_actions)); if (product_has_display()) { register_actions(task_dactions, array_count(task_dactions)); } /* Register toggles. */ register_toggles(toggles, array_count(toggles)); /* Register extended toggle. */ register_extended_toggle(ResScriptPort, scriptport_toggle_upcall, NULL, canonical_bind_opt_res, (void **)&appres.script_port, XRM_STRING); /* Register resources. */ register_xresources(task_xresources, array_count(task_xresources)); /* This doesn't go here, but it needs to happen once. */ nvt_save_buf = (unsigned char *)Malloc(NVT_SAVE_SIZE); } /** * Set the state of a task. * * @param[in,out] s task to change * @param[in] state new state * @param[in] why reason for change */ static void task_set_state(task_t *s, enum task_state state, const char *why) { if (s->state != state) { vtrace(TASK_NAME_FMT " %s -> %s (%s)\n", TASK_sNAME(s), task_state_name[s->state], task_state_name[state], why); s->state = state; } } /* Allocate a new task. */ static task_t * new_task(enum task_type type, taskq_t *q) { task_t *s; s = (task_t *)Calloc(1, sizeof(task_t)); s->taskq = q; s->next = q->top; s->depth = ++q->depth; s->type = type; s->state = TS_IDLE; s->success = true; s->expect_id = NULL_IOID; s->wait_id = NULL_IOID; gettimeofday(&s->t0, NULL); s->child_msec = 0L; s->fatal = false; return s; } /* * Set the menubar and status line to indicate a script running. */ static void task_status_set(void) { taskq_t *q; bool any = false; FOREACH_LLIST(&taskq, q, taskq_t *) { task_t *s; for (s = q->top; s != NULL; s = s->next) { if (!s->is_ui) { any = true; break; } } if (any) { break; } } FOREACH_LLIST_END(&taskq, q, taskq_t *); menubar_as_set(any); vstatus_script(any); } /* * Push a task onto a particular task stack. * Returns the task. */ static task_t * task_push_onto(taskq_t *q, enum task_type type, bool is_ui) { task_t *s; s = new_task(type, q); s->is_ui = is_ui; q->top = s; if (current_task != NULL && q == current_task->taskq) { current_task = s; } /* Enable the abort button on the menu and the status indication. */ task_status_set(); return s; } /** * Free a task structure. * * @param[in] t Task */ static void free_task(task_t *t) { /* Cancel any pending timeouts. */ if (t->expect_id != NULL_IOID) { RemoveTimeOut(t->expect_id); } if (t->wait_id != NULL_IOID) { RemoveTimeOut(t->wait_id); } /* Free auxiliary buffers. */ Replace(t->macro.msc, NULL); Replace(t->expect.text, NULL); /* Free the structure. */ Free(t); } /* Pop a task off the stack. */ static void task_pop(void) { task_t *s; unsigned long msec; struct timeval t1; vtrace(TASK_NAME_FMT " complete, %s\n", TASK_NAME, current_task->success? "success": "failure"); /* * If this is a callback or macro, propagate the state. * We also propagate status up to plain macros, so a failed script, * e.g., will cause the macro to fail. */ if (current_task->next != NULL) { current_task->next->success = current_task->success; } s = current_task; /* Accumulate time. */ gettimeofday(&t1, NULL); msec = (t1.tv_sec - s->t0.tv_sec) * 1000 + (t1.tv_usec - s->t0.tv_usec + 500) / 1000; if (s->next) { s->next->child_msec = msec; } /* Dequeue. */ if (s->next == NULL) { taskq_t *q = current_task->taskq; assert(q != NULL); vtrace("CB(%s)[#%u] complete\n", q->name, q->index); /* Do not delete the taskq yet -- someone might be walking it. */ q->top = NULL; q->deleted = true; q->depth = 0; current_task = NULL; } else { s->taskq->top = current_task = s->next; s->taskq->depth--; } /* Release the memory. */ free_task(s); /* Re-evaluate the OIA and menus. */ task_status_set(); /* * In the old code, there was a test here that if the new top task is * not blocked and the keyboard is now locked, block it now. That won't * work, because the global keyboard lock may be unrelated to this context. * But is it still necessary in some cases? */ if (current_task != NULL && current_task->state == TS_IDLE && current_task->type == ST_CB && (current_task->cbx.cb->flags & CB_NEEDS_RUN)) { /* The parent needs to be informed. */ task_set_state(current_task, TS_RUNNING, "child popped"); } } /* * Peer script initialization. * * Must be called after the initial call to connect to the host from the * command line, so that the initial state can be set properly. */ void peer_script_init(void) { if (appres.script_port) { struct sockaddr *sa; socklen_t sa_len; if (!parse_bind_opt(appres.script_port, &sa, &sa_len)) { popup_an_error("Invalid script port value '%s', " "ignoring", appres.script_port); return; } #if !defined(_WIN32) /*[*/ if (appres.socket) { xs_warning("-scriptport overrides -socket"); } #endif /*]*/ /* -scriptport overrides -script */ appres.scripted = false; /* Do the actual initialization. */ global_peer_listen = peer_init(sa, sa_len, appres.script_port_once? PLM_ONCE: PLM_MULTI); Free(sa); return; } #if !defined(_WIN32) /*[*/ if (appres.socket && !appres.script_port) { struct sockaddr_un *ssun; /* -socket overrides -script */ appres.scripted = false; /* Create the listening socket. */ ssun = (struct sockaddr_un *)Malloc(sizeof(struct sockaddr_un)); memset(ssun, '\0', sizeof(*ssun)); ssun->sun_family = AF_UNIX; snprintf(ssun->sun_path, sizeof(ssun->sun_path), "/tmp/x3sck.%u", (unsigned)getpid()); unlink(ssun->sun_path); peer_init((struct sockaddr *)ssun, sizeof(*ssun), PLM_MULTI); Free(ssun); register_schange(ST_EXITING, cleanup_socket); return; } #endif /*]*/ if (appres.httpd_port) { appres.scripted = false; } if (!appres.scripted || appres.scripting.callback != NULL) { return; } /* Set up to receive script commands from stdin. */ stdin_init(); } #if !defined(_WIN32) /*[*/ /* Clean up the Unix-domain socket. */ static void cleanup_socket(bool b _is_unused) { unlink(lazyaf("/tmp/x3sck.%u", getpid())); } #endif /*]*/ /** * Look up an action. * * @param[in] action Action name * @param[out] errorp Returned error text * * @return action structure, or null */ static action_elt_t * lookup_action(const char *action, char **errorp) { action_elt_t *e; action_elt_t *any = NULL; action_elt_t *exact = NULL; /* Search the action list. */ FOREACH_LLIST(&actions_list, e, action_elt_t *) { if (!strcasecmp(action, e->t.name)) { exact = any = e; break; } } FOREACH_LLIST_END(&actions_list, e, action_elt_t *); if (exact == NULL) { FOREACH_LLIST(&actions_list, e, action_elt_t *) { if (!strncasecmp(action, e->t.name, strlen(action))) { if (any != NULL) { *errorp = xs_buffer("Ambiguous action name: %s", action); return NULL; } any = e; } } FOREACH_LLIST_END(&actions_list, e, action_elt_t *); } if (any == NULL) { *errorp = xs_buffer("Unknown action: %s", action); } return any; } /** * Split a command into an action and arguments. * * @param[in] s string to parse * @param[in] offset offset into string for error message * @param[out] np returned pointer to additional commands * @param[out] entryp returned action entry * @param[out] argsp returned arguments * @param[out] errorp returned error text (if false returned) * * @returns true for success, false for failure */ static bool parse_command(const char *s, int offset, const char **np, action_elt_t **entryp, char ***argsp, char **errorp) { # define MAX_ANAME 64 enum { ME_GND, /* before action name */ ME_COMMENT, /* within a comment */ ME_FUNCTION, /* within action name */ ME_FUNCTIONx, /* saw whitespace after action name */ ME_LPAREN, /* saw left paren */ ME_LPAREN_COMMA,/* saw left paren and comma */ ME_P_PARM, /* paren: within unquoted parameter */ ME_P_QPARM, /* paren: within quoted parameter */ ME_P_BSL, /* paren: after backslash in quoted parameter */ ME_P_BSL2, /* paren: after second backslash in quoted parameter */ ME_P_PARMx, /* paren: saw whitespace after parameter */ ME_S_PARM, /* space: within unquoted parameter */ ME_S_QPARM, /* space: within quoted parameter */ ME_S_BSL, /* space: after backslash in quoted parameter */ ME_S_BSL2, /* space: after second backslash in quoted parameter */ ME_S_PARMx /* space: saw whitespace after parameter */ } state = ME_GND; char c; char aname[MAX_ANAME+1]; int nx = 0; unsigned param_count = 0; /* parameter count */ unsigned vbcount = 0; /* allocated parameter count */ varbuf_t *r = NULL; /* accumulated parameters */ int failreason = 0; unsigned i; bool rc = false; /* failure return code */ const char *s_orig = s; static const char *fail_text[] = { /*1*/ "Action name must begin with an alphanumeric character", /*2*/ "Syntax error in action name", /*3*/ "Syntax error: \")\" or \",\" expected", /*4*/ "Extra data after parameters", /*5*/ "Syntax error: \")\" expected", /*6*/ "Syntax error: unclosed \"" }; #define fail(n) { failreason = n; goto failure; } *np = NULL; *entryp = NULL; *argsp = NULL; *errorp = NULL; while ((c = *s++)) { if ((param_count + 1) > vbcount) { /* Allocate a varbuf for the next parameter. */ r = (varbuf_t *)Realloc(r, (param_count + 1) * sizeof(varbuf_t)); vb_init(&r[param_count]); vbcount = param_count + 1; } switch (state) { case ME_GND: if (isspace((unsigned char)c)) { continue; } else if (isalnum((unsigned char)c)) { state = ME_FUNCTION; nx = 0; aname[nx++] = c; } else if (c == '!' || c == '#') { state = ME_COMMENT; } else { fail(1); } break; case ME_COMMENT: break; case ME_FUNCTION: /* within function name */ if (c == '(' || isspace((unsigned char)c)) { aname[nx] = '\0'; if (c == '(') { nx = 0; state = ME_LPAREN; } else { state = ME_FUNCTIONx; } } else if (isalnum((unsigned char)c) || c == '_' || c == '-') { if (nx < MAX_ANAME) { aname[nx++] = c; } } else { fail(2); } break; case ME_FUNCTIONx: /* space after function name */ if (isspace((unsigned char)c)) { continue; } else if (c == '(') { nx = 0; state = ME_LPAREN; } else if (c == '"') { nx = 0; state = ME_S_QPARM; } else { state = ME_S_PARM; nx = 0; vb_append(&r[param_count], &c, 1); } break; case ME_LPAREN: case ME_LPAREN_COMMA: if (isspace((unsigned char)c)) { continue; } else if (c == '"') { state = ME_P_QPARM; } else if (c == ',') { param_count++; state = ME_LPAREN_COMMA; } else if (c == ')') { goto success; } else { state = ME_P_PARM; vb_append(&r[param_count], &c, 1); } break; case ME_P_PARM: if (isspace((unsigned char)c)) { param_count++; state = ME_P_PARMx; } else if (c == ')') { param_count++; goto success; } else if (c == ',') { param_count++; state = ME_LPAREN_COMMA; } else { vb_append(&r[param_count], &c, 1); } break; case ME_P_BSL: if (c != '"') { vb_append(&r[param_count], "\\", 1); } if (c == '\\') { state = ME_P_BSL2; } else { vb_append(&r[param_count], &c, 1); state = ME_P_QPARM; } break; case ME_P_BSL2: if (c == '"') { param_count++; state = ME_P_PARMx; } else { vb_append(&r[param_count], "\\", 1); if (c != '\\') { vb_append(&r[param_count], &c, 1); state = ME_P_QPARM; } } break; case ME_P_QPARM: if (c == '"') { param_count++; state = ME_P_PARMx; } else if (c == '\\') { state = ME_P_BSL; } else { vb_append(&r[param_count], &c, 1); } break; case ME_P_PARMx: if (isspace((unsigned char)c)) { continue; } else if (c == ',') { state = ME_LPAREN_COMMA; } else if (c == ')') { goto success; } else { fail(3); } break; case ME_S_PARM: if (isspace((unsigned char)c)) { param_count++; state = ME_S_PARMx; } else { vb_append(&r[param_count], &c, 1); } break; case ME_S_BSL: if (c != '"') { vb_append(&r[param_count], "\\", 1); } if (c == '\\') { state = ME_S_BSL2; } else { vb_append(&r[param_count], &c, 1); state = ME_S_QPARM; } break; case ME_S_BSL2: if (c == '"') { param_count++; state = ME_S_PARMx; } else { vb_append(&r[param_count], "\\", 1); if (c != '\\') { vb_append(&r[param_count], &c, 1); state = ME_S_QPARM; } } break; case ME_S_QPARM: if (c == '"') { param_count++; state = ME_S_PARMx; } else if (c == '\\') { state = ME_S_BSL; } else { vb_append(&r[param_count], &c, 1); } break; case ME_S_PARMx: if (isspace((unsigned char)c)) { continue; } else if (c == '"') { state = ME_S_QPARM; } else { vb_append(&r[param_count], &c, 1); state = ME_S_PARM; } break; } } /* Terminal state. */ switch (state) { case ME_FUNCTION: /* mid-function-name */ aname[nx] = '\0'; break; case ME_FUNCTIONx: /* space after function */ break; case ME_GND: /* nothing */ case ME_COMMENT: if (np) { *np = s - 1; } rc = true; goto silent_failure; case ME_S_PARMx: /* space after space-style parameter */ break; case ME_S_PARM: /* mid space-style parameter */ param_count++; break; case ME_S_QPARM: /* inside quoted parameter */ case ME_P_QPARM: case ME_S_BSL: /* backslash inside quoted parameter */ case ME_P_BSL: case ME_S_BSL2: /* second backslash inside quoted parameter */ case ME_P_BSL2: fail(6); default: fail(5); } success: if (state == ME_LPAREN_COMMA) { param_count++; } if (c) { /* Skip trailing white space. */ while (*s && isspace((unsigned char)*s)) { s++; } if (*s) { if (np) { /* Something follows. */ *np = s; } else { fail(4); } } else if (np) { /* Nothing follows the whitespace. */ *np = s; } } else if (np) { /* Nothing follows. */ *np = s-1; } /* Look up the action. */ *entryp = lookup_action(aname, errorp); if (*entryp == NULL) { goto silent_failure; } /* Return the arguments. */ *argsp = (char **)Malloc((param_count + 1) * sizeof(const char *)); for (i = 0; i < param_count; i++) { (*argsp)[i] = vb_consume(&r[i]); } (*argsp)[i] = NULL; return true; failure: *errorp = xs_buffer("%s at column %d", fail_text[failreason-1], (int)(s - s_orig) + offset); silent_failure: if (vbcount) { for (i = 0; i < vbcount; i++) { vb_free(&r[i]); } Free(r); } return rc; #undef fail } /** * Interpret and execute a script or macro command. * * @param[in] cause Origin of action * @param[in] s Buffer containing action and paramters * @param[out] np Returned pointer to next action * @param[out] last Returned action and paramters, canonicalized * @param[in] last_len Length of the last * * @return success or failure */ static bool execute_command(enum iaction cause, const char *s, const char **np, char *last, size_t last_len) { bool stat; action_elt_t *entry; char **args; char *error; int i; varbuf_t r; /* Parse the command. */ stat = parse_command(s, 0, np, &entry, &args, &error); if (!stat) { popup_an_error("%s", error); Free(error); return stat; } /* Check for restrictions. */ if (entry->t.ia_restrict != IA_NONE && cause != entry->t.ia_restrict) { popup_an_error("Action %s is invalid in this context", entry->t.name); stat = false; goto done; } /* Record the action. */ vb_init(&r); vb_appendf(&r, "%s(", entry->t.name); for (i = 0; args[i] != NULL; i++) { vb_appendf(&r, "%s%s", i? ",": "", qscatv(args[i])); } vb_appends(&r, ")"); strncpy(last, vb_consume(&r), last_len - 1); last[last_len - 1] = '\0'; /* Run the action. */ for (i = 0; args[i] != NULL; i++) { } (void) run_action_entry(entry, cause, i, (const char **)args); /* Refresh the screen, in case the action changed it. */ screen_disp(false); /* If it produced an error message, it failed. */ if (!current_task->success) { stat = false; } /* Check for trace file rollover. */ trace_rollover_check(); done: /* Free the arguments. */ for (i = 0; args[i] != NULL; i++) { Free(args[i]); } Replace(args, NULL); return stat; } /** * Validate that a macro contains valid syntax and defined actions. * * @param[in] command Command to check * @param[in] offset Offset for error message * @param[out] error Returned error message * * @return true for success, false for failure */ bool validate_command(const char *command, int offset, char **error) { action_elt_t *entry; const char *np; char **args = NULL; np = command; while (*np) { if (!parse_command(np, (int)(np - command) + offset, &np, &entry, &args, error)) { return false; } Free(args); } return true; } /* Run the macro at the top of the stack. */ static void run_macro(void) { task_t *s = current_task; const char *a = s->macro.dptr; const char *nextm = NULL; bool es; bool fatal = false; vtrace(TASK_NAME_FMT " running\n", TASK_NAME); /* * Keep executing commands off the line until one pauses or * we run out of commands. */ while (*a && !fatal) { enum iaction ia; bool was_ckbwait = CKBWAIT; bool was_ft = (ft_state != FT_NONE); /* * Check for command failure. */ if (!s->success) { vtrace(TASK_NAME_FMT " failed\n", TASK_NAME); /* Propagate it. */ if (s->next != NULL) { s->next->success = false; } break; } task_set_state(s, TS_RUNNING, "executing"); vtrace(TASK_NAME_FMT " '%s'\n", TASK_NAME, scatv(a)); s->success = true; if (s->type == ST_MACRO && s->next != NULL && s->next->type == ST_CB) { ia = s->next->cbx.cb->ia; } else { ia = IA_MACRO; } es = execute_command(ia, a, &nextm, s->macro.last, LAST_BUF); s->macro.dptr = nextm; /* * If a new task was started, we will be resumed * when it completes. */ if (current_task != s) { return; } /* Macro could not execute. Abort it. */ if (!es) { vtrace(TASK_NAME_FMT " error\n", TASK_NAME); /* Propagate it. */ s->success = false; if (s->next != NULL) { s->next->success = false; } break; } /* Check for keyboard lock and file transfer start. */ if (s->state == TS_RUNNING) { if (!was_ckbwait && CKBWAIT) { task_set_state(s, TS_KBWAIT, "keyboard locked"); } else if (!was_ft && (ft_state != FT_NONE)) { task_set_state(current_task, TS_FT_WAIT, "file transfer in progress"); } } /* Macro paused, implicitly or explicitly. Suspend it. */ if (s->state >= (int)MIN_WAITING_STATE) { s->macro.dptr = nextm; return; } /* Macro ran. */ a = nextm; fatal = s->fatal; } /* Finished with this macro. */ task_pop(); if (fatal) { current_task = NULL; abort_script(); } } /* Push a macro (macro, command or keymap action) on the stack. */ static task_t * push_xmacro_onto(taskq_t *q, enum task_type type, const char *st, size_t len, bool is_ui) { task_t *s; s = task_push_onto(q, type, is_ui); s->macro.msc = Malloc(len + 1); memcpy(s->macro.msc, st, len); s->macro.msc[len] = '\0'; s->macro.dptr = s->macro.msc; s->fatal = false; task_set_state(s, TS_RUNNING, "fresh push"); return s; } /* Push a macro (macro, command or keymap action) on the stack. */ static void push_xmacro(enum task_type type, const char *st, size_t len, bool is_ui) { assert(current_task != NULL); current_task = push_xmacro_onto(current_task->taskq, type, st, len, is_ui); } /* Push a macro on the stack. */ void push_stack_macro(char *s) { push_xmacro(ST_MACRO, s, strlen(s), false); } /** * Find a callback block in the owait list. * * @param[in] cb Callback block * * @return True if the block is in the list. */ static bool find_owait(const tcb_t *cb) { owait_t *o; for (o = owait_list; o != NULL; o = o->next) { if (o->cb == cb) { return true; } } return false; } /** * Push a callback on the stack. * @param[in] buf Macro to push, or NULL * @param[in] len Length of buf * @param[in] cb Callback block * @param[in] handle Callback handle * * @return Name of the new cb. */ char * push_cb(const char *buf, size_t len, const tcb_t *cb, task_cbh handle) { task_t *s; taskq_t *q = NULL; char *name = NULL; bool is_ui = (cb->flags & CB_UI) != 0; /* We performed some new action, so we're not idle. */ reset_idle_timer(); if (cb->flags & CB_NEW_TASKQ) { /* Allocate a new taskq. */ q = (taskq_t *)Calloc(sizeof(taskq_t) + strlen(cb->shortname) + 1, 1); llist_init(&q->llist); q->name = (char *)(q + 1); strcpy(q->name, cb->shortname); q->cb = cb; q->top = NULL; q->index = taskq_index++; q->deleted = false; q->output_wait_needed = find_owait(cb); LLIST_APPEND(&q->llist, taskq); name = q->unique_name = xs_buffer("CB(%s)[#%u]", q->name, q->index); vtrace("%s started%s\n", name, q->output_wait_needed? " (owait)": ""); } else { q = current_task->taskq; } /* Push a callback. */ s = task_push_onto(q, ST_CB, is_ui); s->cbx.cb = cb; s->cbx.handle = handle; if (name == NULL) { name = lazyaf(TASK_NAME_FMT, TASK_sNAME(s)); } /* Push the command as a macro on top of the callback. */ if (buf) { task_set_state(s, TS_RUNNING, "child task to be pushed next"); push_xmacro_onto(q, ST_MACRO, buf, len, is_ui); } else if (cb->flags & CB_NEEDS_RUN) { /* Must call the run callback to get a child. */ task_set_state(s, TS_NEED_RUN, "need to call run callback"); } else { /* Children will be generated asynchronously. */ task_set_state(s, TS_IDLE, "async CB"); } /* Enable the abort button on the menu and the status indication. */ if (!is_ui) { task_status_set(); } /* Return the name. */ return name; } /** * Find the task associated with a handle. * * @param[in] handle Handle to search for * * @return task, or NULL if not found */ static task_t * task_find_cb(task_cbh handle) { taskq_t *q; FOREACH_LLIST(&taskq, q, taskq_t *) { task_t *s; for (s = q->top; s != NULL; s = s->next) { if (s->type == ST_CB && s->cbx.handle == handle) { return s; } } } FOREACH_LLIST_END(&taskq, q, taskq_t *); return NULL; } /* Set a CB task to NEED_RUN state. */ void task_activate(task_cbh handle) { task_t *s; s = task_find_cb(handle); if (s != NULL) { task_set_state(s, TS_NEED_RUN, "asked explicitly"); } } /* Set a pending string. */ void ps_set(char *s, bool is_hex, bool force_utf8) { push_string(s, is_hex, false, force_utf8); } /* Callback for macros menu. */ void macro_command(struct macro_def *m) { push_macro(m->action); } /* Pass result text up to a script. */ static void task_result(task_t *s, const char *msg, bool success) { size_t sl = strlen(msg); char *text = NewString(msg); if (s->type != ST_CB) { Free(text); return; } /* Remove trailing spaces and newlines. */ while (sl && (text[sl - 1] == ' ' || text[sl - 1] == '\n')) { sl--; } trace_task_output(s, "%.*s\n", (int)sl, text); (*s->cbx.cb->data)(s->cbx.handle, text, sl, success); Free(text); } /* Handle an error generated during the execution of a task. */ void task_error(const char *msg) { task_t *s; /* Print the error message. */ s = task_redirect_to(); if (s != NULL) { task_result(s, msg, false); s->success = false; current_task->success = false; } else { fprintf(stderr, "%s\n", msg); fflush(stderr); } } /* * Generate a response to a task. * * If the parameter is an empty string, generates nothing, but if it is a * newline, generates an empty line. */ void task_info(const char *fmt, ...) { char *nl; char *msgbuf; char *msg; va_list args; task_t *s; va_start(args, fmt); msgbuf = xs_vbuffer(fmt, args); va_end(args); msg = msgbuf; do { size_t nc; nl = strchr(msg, '\n'); if (nl != NULL) { nc = nl - msg; } else { nc = strlen(msg); } if (nc || (nl != NULL)) { if ((s = task_redirect_to()) != NULL) { assert(s->type == ST_CB); trace_task_output(current_task, "%.*s\n", nc, msg); (*s->cbx.cb->data)(s->cbx.handle, msg, nc, true); } else { fprintf(stderr, "%.*s\n", (int)nc, msg); } } msg = nl + 1; } while (nl); Free(msgbuf); } /** * Abort a blocked task because the host disconnected. * * @param[in] s task to abort */ static void task_disconnect_abort(task_t *s) { vtrace("Canceling " TASK_NAME_FMT "\n", TASK_sNAME(s)); while (s != NULL && s->type != ST_CB) { s = s->next; } if (s != NULL) { task_result(s, "Host disconnected", false); s->success = false; current_task->success = false; } } /** * Pop up an error, redirected towards a particular task. */ static void popup_an_error_to(task_t *t, pae_t type, const char *fmt, ...) { va_list ap; assert(current_task == NULL); current_task = t; va_start(ap, fmt); popup_a_vxerror(type, fmt, ap); va_end(ap); current_task = NULL; } /** * Pop up a connection-related error (a disconnect). */ void connect_error(const char *fmt, ...) { va_list ap; char *msg; /* Expand the message. */ va_start(ap, fmt); msg = xs_vbuffer(fmt, ap); va_end(ap); if (current_task == NULL) { taskq_t *q; task_t *s; bool found = false; /* Asynchronous. Look for a task in CONNECT_WAIT state. */ FOREACH_LLIST(&taskq, q, taskq_t *) { for (s = q->top; s != NULL; s = s->next) { if (s->state == TS_CONNECT_WAIT) { found = true; break; } } if (found) { break; } } FOREACH_LLIST_END(&taskq, q, taskq_t *); if (found) { /* Send it the error message. */ popup_an_error_to(s, ET_CONNECT, "%s", msg); /* Let it complete with the error. */ s->wait_id = NULL_IOID; s->success = false; task_set_state(s, TS_RUNNING, "connection failed"); Free(msg); host_disconnect(true); return; } } /* Let the GUI handle it. */ popup_an_xerror(ET_CONNECT, "%s", msg); Free(msg); /* Propagate elsewhere. */ host_disconnect(true); } /** * Pop up a connection-related error (a disconnect), given an errno. */ void connect_errno(int e, const char *fmt, ...) { va_list ap; char *msg; /* Expand the message. */ va_start(ap, fmt); msg = xs_vbuffer(fmt, ap); va_end(ap); connect_error("%s: %s", msg, strerror(e)); Free(msg); } /** * Run one task queue. * * @return True if one or more tasks were processed. */ static bool run_taskq(void) { bool any = false; while (true) { bool need_run = false; if (current_task == NULL) { return any; } switch (current_task->state) { case TS_IDLE: return any; /* nothing to do */ case TS_NEED_RUN: need_run = true; /* fall through... */ case TS_RUNNING: break; /* let it proceed */ case TS_KBWAIT: if (CKBWAIT) { return any; } break; case TS_WAIT_NVT: if (!PCONNECTED) { task_disconnect_abort(current_task); any = true; break; } if (IN_NVT) { task_set_state(current_task, TS_WAIT_IFIELD, "need ifield after NVT?"); continue; } return any; case TS_WAIT_3270: if (!PCONNECTED) { task_disconnect_abort(current_task); any = true; break; } if (IN_3270 | IN_SSCP) { task_set_state(current_task, TS_WAIT_IFIELD, "need ifield after 3270"); continue; } return any; case TS_WAIT_UNLOCK: if (KBWAIT) { return any; } break; case TS_WAIT_IFIELD: if (!PCONNECTED) { task_disconnect_abort(current_task); any = true; break; } if (!CAN_PROCEED) { return any; } /* fall through... */ case TS_CONNECT_WAIT: if (!PCONNECTED) { task_disconnect_abort(current_task); any = true; break; } if (HALF_CONNECTED || (CONNECTED && (kybdlock & KL_AWAITING_FIRST))) { return any; } break; case TS_FT_WAIT: if (!PCONNECTED) { task_disconnect_abort(current_task); any = true; break; } if (ft_state == FT_NONE) { break; } else { return any; } case TS_TIME_WAIT: return any; case TS_WAIT_OUTPUT: case TS_SWAIT_OUTPUT: if (!PCONNECTED) { task_disconnect_abort(current_task); any = true; break; } return any; case TS_WAIT_DISC: if (!CONNECTED) { break; } else { return any; } case TS_EXPECTING: if (!PCONNECTED) { task_disconnect_abort(current_task); any = true; break; } if (expect_matches(current_task)) { any = true; break; } return any; case TS_PASSTHRU: return any; case TS_XWAIT: return any; } /* Restart the task. */ any = true; task_set_state(current_task, TS_IDLE, "about to resume"); if (current_task->wait_id != NULL_IOID) { RemoveTimeOut(current_task->wait_id); current_task->wait_id = NULL_IOID; } switch (current_task->type) { case ST_MACRO: run_macro(); break; case ST_CB: if (need_run) { call_run(current_task); } else { task_done(current_task->success); } break; } } return any; } /** * Run pending tasks. */ bool run_tasks(void) { taskq_t *q; bool any = false; /* There is no running task unless we are inside this function. */ assert(current_task == NULL); restart: /* Walk each queue, and run the tasks on it. */ FOREACH_LLIST(&taskq, q, taskq_t *) { if (q->top != NULL) { current_task = q->top; any |= run_taskq(); } if (q->deleted) { llist_unlink(&q->llist); Free(q->unique_name); Free(q); goto restart; } } FOREACH_LLIST_END(&taskq, q, taskq_t *); /* Now there is no active task. */ current_task = NULL; task_status_set(); return any; } /* Set and propagate the output_wait_needed flag. */ static void set_output_needed(bool needed) { owait_t *o; if (needed) { const tcb_t *cb = current_task->taskq->cb; /* Change the flag on the current taskq. */ current_task->taskq->output_wait_needed = needed; /* Track the callback block, to clear later. */ for (o = owait_list; o != NULL; o = o->next) { if (o->cb == cb) { break; } } if (!o) { o = (owait_t *)Malloc(sizeof(owait_t)); o->next = owait_list; o->cb = cb; owait_list = o; } } else { taskq_t *q; /* Clear it everywhere. */ FOREACH_LLIST(&taskq, q, taskq_t *) { q->output_wait_needed = false; } FOREACH_LLIST_END(&taskq, q, taskq_t *); /* No need to propagate it any more. */ while (owait_list) { owait_t *next = owait_list->next; Free(owait_list); owait_list = next; } } } /* * Macro- and script-specific actions. */ /* * Dump a range of screen locations. * Returns true if anything was dumped. */ static bool dump_range(int first, int len, bool in_ascii, struct ea *buf, int rel_rows _is_unused, int rel_cols, bool force_utf8) { int i; bool any = false; bool is_zero = false; varbuf_t r; vb_init(&r); /* * If the client has looked at the live screen, then if they later * execute 'Wait(output)', they will need to wait for output from the * host. output_wait_needed is cleared by task_host_output, * which is called from the write logic in ctlr.c. * * Any of the following actions will enable Wait(Output): * - Ascii * - Ascii1 * - Ebcdic * - Ebcdic1 * - ReadBuffer */ if (current_task != NULL && buf == ea_buf) { set_output_needed(true); } is_zero = FA_IS_ZERO(get_field_attribute(first)); for (i = 0; i < len; i++) { if (i && !((first + i) % rel_cols)) { action_output("%s", vb_buf(&r)); vb_reset(&r); any = false; } if (in_ascii) { char mb[16]; ucs4_t uc; size_t j; size_t xlen; if (buf[first + i].fa) { is_zero = FA_IS_ZERO(buf[first + i].fa); vb_appends(&r, " "); } else if (is_zero) { vb_appends(&r, " "); } else if (IS_RIGHT(ctlr_dbcs_state(first + i))) { continue; } else { if (is_nvt(&buf[first + i], false, &uc)) { /* NVT-mode text. */ if (toggled(MONOCASE)) { uc = u_toupper(uc); } xlen = unicode_to_multibyte_f(uc, mb, sizeof(mb), force_utf8); for (j = 0; j < xlen - 1; j++) { vb_appendf(&r, "%c", mb[j]); } } else { /* 3270-mode text. */ if (IS_LEFT(ctlr_dbcs_state(first + i))) { xlen = ebcdic_to_multibyte_f((buf[first + i].ec << 8) | buf[first + i + 1].ec, mb, sizeof(mb), force_utf8); for (j = 0; j < xlen - 1; j++) { vb_appendf(&r, "%c", mb[j]); } } else { xlen = ebcdic_to_multibyte_fx(buf[first + i].ec, buf[first + i].cs, mb, sizeof(mb), EUO_BLANK_UNDEF | (toggled(MONOCASE)? EUO_TOUPPER: 0), &uc, force_utf8); for (j = 0; j < xlen - 1; j++) { vb_appendf(&r, "%c", mb[j]); } } } } } else { ebc_t ebc = 0; if (buf[first + i].ucs4) { /* NVT-mode text. */ if (IS_RIGHT(ctlr_dbcs_state(first + i))) { continue; } if (buf[first + i].cs != CS_LINEDRAW) { /* Try to translate to EBCDIC. */ ebc = unicode_to_ebcdic(buf[first + i].ucs4); } } else { /* 3270-mode text. */ ebc = buf[first + i].ec; } vb_appendf(&r, "%s%02x", any ? " " : "", ebc); } any = true; } if (any) { action_output("%s", vb_buf(&r)); } vb_free(&r); return any; } static bool dump_fixed(const char **params, unsigned count, int origin, const char *name, bool in_ascii, struct ea *buf, int rel_rows, int rel_cols, int caddr, bool force_utf8) { int row, col, len, rows = 0, cols = 0; bool any = false; switch (count) { case 0: /* everything */ row = origin; col = origin; len = rel_rows*rel_cols; break; case 1: /* from cursor, for n */ row = caddr / rel_cols; col = caddr % rel_cols; len = atoi(params[0]); break; case 3: /* from (row,col), for n */ row = atoi(params[0]); col = atoi(params[1]); len = atoi(params[2]); break; case 4: /* from (row,col), for rows x cols */ row = atoi(params[0]); col = atoi(params[1]); rows = atoi(params[2]); cols = atoi(params[3]); len = 0; break; default: popup_an_error("%s requires 0, 1, 3 or 4 arguments", name); return false; } row -= origin; col -= origin; if ((row < 0 || row > rel_rows || col < 0 || col > rel_cols || len < 0) || ((count < 4) && ((row * rel_cols) + col + len > rel_rows * rel_cols)) || ((count == 4) && (cols < 0 || rows < 0 || col + cols > rel_cols || row + rows > rel_rows))) { popup_an_error("%s: Invalid argument", name); return false; } if (count < 4) { any |= dump_range((row * rel_cols) + col, len, in_ascii, buf, rel_rows, rel_cols, force_utf8); } else { int i; for (i = 0; i < rows; i++) { any |= dump_range(((row+i) * rel_cols) + col, cols, in_ascii, buf, rel_rows, rel_cols, force_utf8); } } if (!any) { action_output("%s", "\n"); } return true; } static bool dump_field(unsigned count, const char *name, bool in_ascii, bool force_utf8) { int faddr; int start, baddr; int len = 0; if (count != 0) { popup_an_error("%s() requires 0 arguments", name); return false; } if (!formatted) { popup_an_error("%s(): Screen is not formatted", name); return false; } faddr = find_field_attribute(cursor_addr); start = faddr; INC_BA(start); baddr = start; do { if (ea_buf[baddr].fa) { break; } len++; INC_BA(baddr); } while (baddr != start); dump_range(start, len, in_ascii, ea_buf, ROWS, COLS, force_utf8); return true; } static bool Ascii_action(ia_t ia _is_unused, unsigned argc, const char **argv) { action_debug(AnAscii, ia, argc, argv); return dump_fixed(argv, argc, 0, AnAscii, true, ea_buf, ROWS, COLS, cursor_addr, IA_UTF8(ia)); } static bool Ascii1_action(ia_t ia _is_unused, unsigned argc, const char **argv) { action_debug(AnAscii1, ia, argc, argv); return dump_fixed(argv, argc, 1, AnAscii1, true, ea_buf, ROWS, COLS, cursor_addr, IA_UTF8(ia)); } static bool AsciiField_action(ia_t ia _is_unused, unsigned argc, const char **argv) { action_debug(AnAsciiField, ia, argc, argv); return dump_field(argc, AnAsciiField, true, IA_UTF8(ia)); } static bool Ebcdic_action(ia_t ia _is_unused, unsigned argc, const char **argv) { action_debug(AnEbcdic, ia, argc, argv); return dump_fixed(argv, argc, 0, AnEbcdic, false, ea_buf, ROWS, COLS, cursor_addr, IA_UTF8(ia)); } static bool Ebcdic1_action(ia_t ia _is_unused, unsigned argc, const char **argv) { action_debug(AnEbcdic1, ia, argc, argv); return dump_fixed(argv, argc, 1, AnEbcdic1, false, ea_buf, ROWS, COLS, cursor_addr, IA_UTF8(ia)); } static bool EbcdicField_action(ia_t ia _is_unused, unsigned argc, const char **argv) { action_debug(AnEbcdicField, ia, argc, argv); return dump_field(argc, AnEbcdicField, false, IA_UTF8(ia)); } static unsigned char calc_cs(unsigned char cs) { switch (cs & CS_MASK) { case CS_APL: return 0xf1; case CS_LINEDRAW: return 0xf2; case CS_DBCS: return 0xf8; default: return 0x00; } } /* * Internals of the ReadBuffer action. * Operates on the supplied 'buf' parameter, which might be the live * screen buffer 'ea_buf' or a copy saved with 'Snap'. */ static bool do_read_buffer(const char **params, unsigned num_params, struct ea *buf, bool force_utf8) { int baddr; unsigned char current_fg = 0x00; unsigned char current_bg = 0x00; unsigned char current_gr = 0x00; unsigned char current_cs = 0x00; unsigned char current_ic = 0x00; enum { RB_ASCII, RB_EBCDIC, RB_UNICODE } mode = RB_ASCII; varbuf_t r; bool field = false; int field_baddr = 0; bool any = false; if (num_params > 0) { unsigned i; for (i = 0; i < num_params; i++) { if (!strncasecmp(params[i], KwAscii, strlen(params[i]))) { mode = RB_ASCII; } else if (!strncasecmp(params[i], KwEbcdic, strlen(params[i]))) { mode = RB_EBCDIC; } else if (!strncasecmp(params[i], KwUnicode, strlen(params[i]))) { mode = RB_UNICODE; } else if (!strncasecmp(params[i], KwField, strlen(params[i]))) { field = true; } else { return action_args_are(AnReadBuffer, KwAscii, KwEbcdic, KwUnicode, KwField, NULL); return false; } } } /* * If the client has looked at the live screen, then if they later * execute 'Wait(output)', they will need to wait for output from the * host. output_wait_needed is cleared by task_host_output, * which is called from the write logic in ctlr.c. * * Any of the following actions will enable Wait(Output): * - Ascii * - Ebcdic * - ReadBuffer */ if (current_task != NULL && buf == ea_buf) { set_output_needed(true); } if (field) { if (!formatted) { popup_an_error(AnReadBuffer "(): no field"); return false; } baddr = find_field_attribute(cursor_addr); assert(baddr >= 0); field_baddr = baddr; action_output("Start1: %d %d", (baddr / COLS) + 1, (baddr % COLS) + 1); action_output("StartOffset: %d", baddr); action_output("Cursor1: %d %d", (cursor_addr / COLS) + 1, (cursor_addr % COLS) + 1); action_output("CursorOffset: %d", cursor_addr); } else { baddr = 0; } vb_init(&r); for (;;) { if (!field && !(baddr % COLS)) { if (baddr) { action_output("%s", vb_buf(&r) + 1); } vb_reset(&r); } if (buf[baddr].fa) { if (field && any) { break; } vb_appendf(&r, " SF(%02x=%02x", XA_3270, buf[baddr].fa); if (buf[baddr].fg) { vb_appendf(&r, ",%02x=%02x", XA_FOREGROUND, buf[baddr].fg); } if (buf[baddr].bg) { vb_appendf(&r, ",%02x=%02x", XA_BACKGROUND, buf[baddr].bg); } if (buf[baddr].gr) { vb_appendf(&r, ",%02x=%02x", XA_HIGHLIGHTING, buf[baddr].gr | 0xf0); } if (buf[baddr].ic) { vb_appendf(&r, ",%02x=%02x", XA_INPUT_CONTROL, buf[baddr].ic); } if (buf[baddr].cs & CS_MASK) { vb_appendf(&r, ",%02x=%02x", XA_CHARSET, calc_cs(buf[baddr].cs)); } vb_appends(&r, ")"); } else { bool any_sa = false; unsigned char xcs; # define SA_SEP (any_sa? ",": " SA(") if (buf[baddr].fg != current_fg) { vb_appendf(&r, "%s%02x=%02x", SA_SEP, XA_FOREGROUND, buf[baddr].fg); current_fg = buf[baddr].fg; any_sa = true; } if (buf[baddr].bg != current_bg) { vb_appendf(&r, "%s%02x=%02x", SA_SEP, XA_BACKGROUND, buf[baddr].fg); current_bg = buf[baddr].bg; any_sa = true; } if (buf[baddr].gr != current_gr) { vb_appendf(&r, "%s%02x=%02x", SA_SEP, XA_HIGHLIGHTING, buf[baddr].gr | 0xf0); current_gr = buf[baddr].gr; any_sa = true; } if (buf[baddr].ic != current_ic) { vb_appendf(&r, "%s%02x=%02x", SA_SEP, XA_INPUT_CONTROL, buf[baddr].ic); current_gr = buf[baddr].gr; any_sa = true; } xcs = buf[baddr].cs & CS_MASK; if (xcs == CS_LINEDRAW) { /* Treat LINEDRAW and BASE as equivalent. */ xcs = CS_BASE; } if (xcs != (current_cs & CS_MASK)) { vb_appendf(&r, "%s%02x=%02x", SA_SEP, XA_CHARSET, calc_cs(xcs)); current_cs = xcs; any_sa = true; } if (any_sa) { vb_appends(&r, ")"); } if (mode == RB_EBCDIC) { /* * When dumping the buffer in EBCDIC mode, we implicitly * ignore NVT-node text -- because the host never sent us * anything in EBCDIC. */ if (buf[baddr].cs & CS_GE) { vb_appendf(&r, " GE(%02x)", buf[baddr].ec); } else { vb_appendf(&r, " %02x", buf[baddr].ec); } } else if (mode == RB_ASCII) { bool done = false; char mb[16]; size_t j; ucs4_t uc; size_t len; if (IS_LEFT(ctlr_dbcs_state(baddr))) { if (buf[baddr].ucs4) { /* NVT-mode text. */ len = unicode_to_multibyte_f(buf[baddr].ucs4, mb, sizeof(mb), force_utf8); } else { /* 3270-mode text. */ len = ebcdic_to_multibyte_f((buf[baddr].ec << 8) | buf[baddr + 1].ec, mb, sizeof(mb), force_utf8); } vb_appends(&r, " "); for (j = 0; j < len-1; j++) { vb_appendf(&r, "%02x", mb[j] & 0xff); } done = true; } else if (IS_RIGHT(ctlr_dbcs_state(baddr))) { vb_appends(&r, " -"); done = true; } if (is_nvt(&buf[baddr], false, &uc)) { /* NVT-mode text. */ len = unicode_to_multibyte_f(uc, mb, sizeof(mb), force_utf8); } else { /* 3270-mode text. */ switch (buf[baddr].ec) { case EBC_null: mb[0] = '\0'; break; case EBC_so: mb[0] = 0x0e; mb[1] = '\0'; break; case EBC_si: mb[0] = 0x0f; mb[1] = '\0'; break; default: ebcdic_to_multibyte_fx(buf[baddr].ec, buf[baddr].cs, mb, sizeof(mb), EUO_NONE, &uc, force_utf8); break; } } if (!done) { vb_appends(&r, " "); if (mb[0] == '\0') { vb_appends(&r, "00"); } else { for (j = 0; mb[j]; j++) { vb_appendf(&r, "%02x", mb[j] & 0xff); } } } } else { /* Unicode. */ ucs4_t uc; if (IS_RIGHT(ctlr_dbcs_state(baddr))) { vb_appends(&r, " -"); } else { if (IS_LEFT(ctlr_dbcs_state(baddr))) { if ((uc = buf[baddr].ucs4) == 0) { uc = ebcdic_to_unicode( (buf[baddr].ec << 8) | buf[baddr + 1].ec, buf[baddr].cs, 0); } } else { if (!is_nvt(&buf[baddr], false, &uc)) { /* 3270-mode text. */ switch (buf[baddr].ec) { case EBC_null: uc = 0; break; case EBC_so: uc = 0x0e; break; case EBC_si: uc = 0x0f; break; default: uc = ebcdic_to_unicode(buf[baddr].ec, buf[baddr].cs, 0); break; } } } vb_appendf(&r, " %04x", uc); } } } INC_BA(baddr); if ((!field || !formatted) && baddr == 0) { break; } if (field && baddr == field_baddr) { break; } any = true; } action_output("%s%s", field? "Contents: ": "", vb_buf(&r) + 1); vb_free(&r); return true; } /* * ReadBuffer action. */ static bool ReadBuffer_action(ia_t ia _is_unused, unsigned argc, const char **argv) { action_debug(AnReadBuffer, ia, argc, argv); return do_read_buffer(argv, argc, ea_buf, IA_UTF8(ia)); } /* * The script prompt is preceeded by a status line with 11 fields: * * 1 keyboard status * U unlocked * L locked, waiting for host response * E locked, keying error * 2 formatting status of screen * F formatted * U unformatted * 3 protection status of current field * U unprotected (modifiable) * P protected * 4 connect status * N not connected * C(host) connected * 5 emulator mode * N not connected * C connected in NVT character mode * L connected in NVT line mode * P negotiation pending * I connected in 3270 mode * 6 model number * 7 rows * 8 cols * 9 cursor row * 10 cursor col * 11 main window id */ static char * status_string(void) { char kb_stat; char fmt_stat; char prot_stat; char *connect_stat = NULL; char em_mode; char *r; if (!kybdlock) { kb_stat = 'U'; } else { kb_stat = 'L'; } if (formatted) { fmt_stat = 'F'; } else { fmt_stat = 'U'; } if (!formatted) { prot_stat = 'U'; } else { unsigned char fa; fa = get_field_attribute(cursor_addr); if (FA_IS_PROTECTED(fa)) { prot_stat = 'P'; } else { prot_stat = 'U'; } } if (cstate > RECONNECTING) { connect_stat = xs_buffer("C(%s)", current_host); } else { connect_stat = NewString("N"); } if (PCONNECTED) { if (IN_NVT) { if (linemode) { em_mode = 'L'; } else { em_mode = 'C'; } } else if (IN_3270) { em_mode = 'I'; } else { em_mode = 'P'; } } else { em_mode = 'N'; } r = xs_buffer("%c %c %c %s %c %d %d %d %d %d 0x%lx", kb_stat, fmt_stat, prot_stat, connect_stat, em_mode, model_num, ROWS, COLS, cursor_addr / COLS, cursor_addr % COLS, screen_window_number()); Free(connect_stat); return r; } /* Call a run callback. */ static void call_run(task_t *s) { bool success; vtrace("Running " TASK_NAME_FMT "\n", TASK_NAME); if ((*current_task->cbx.cb->run)(current_task->cbx.handle, &success)) { /* CB is complete. */ vtrace(TASK_NAME_FMT " is complete, %s\n", TASK_NAME, success? "success": "failure"); current_task->success = success; if (current_task->next) { current_task->next->success = success; } task_pop(); } } /** * A child task is done. Tell its parent CB. * * @param[in] success True if action succeeded */ static void task_done(bool success) { struct task_cbx cbx = current_task->cbx; assert(current_task->type == ST_CB); vtrace(TASK_NAME_FMT " child task done, %s\n", TASK_NAME, success? "success": "failure"); /* Tell the callback its child is done. */ if ((*cbx.cb->done)(cbx.handle, success, false)) { /* CB is complete. */ task_pop(); } else if (*cbx.cb->run != NULL) { call_run(current_task); } } /** * Generate a prompt, given a cb handle. * * @param[in] handle handle * * @return prompt */ char * task_cb_prompt(task_cbh handle) { task_t *s; char *st; char *t; s = task_find_cb(handle); if (!s) { return "???"; } st = status_string(); t = lazyaf("%s %ld.%03ld", st, s->child_msec / 1000L, s->child_msec % 1000L); Free(st); return t; } /** * Return the child execution time for a cb. * * @param[in] handle handle * * @return Execution time in msec. */ unsigned long task_cb_msec(task_cbh handle) { task_t *s = task_find_cb(handle); if (!s) { return 0; } return s->child_msec; } /* Save the state of the screen for Snap queries. */ static char *snap_status = NULL; static struct ea *snap_buf = NULL; static int snap_rows = 0; static int snap_cols = 0; static int snap_field_start = -1; static int snap_field_length = -1; static int snap_caddr = 0; static void snap_save(void) { set_output_needed(true); Replace(snap_status, status_string()); Replace(snap_buf, (struct ea *)Malloc(ROWS*COLS*sizeof(struct ea))); memcpy(snap_buf, ea_buf, ROWS*COLS*sizeof(struct ea)); snap_rows = ROWS; snap_cols = COLS; if (!formatted) { snap_field_start = -1; snap_field_length = -1; } else { int baddr; snap_field_length = 0; snap_field_start = find_field_attribute(cursor_addr); INC_BA(snap_field_start); baddr = snap_field_start; do { if (ea_buf[baddr].fa) { break; } snap_field_length++; INC_BA(baddr); } while (baddr != snap_field_start); } snap_caddr = cursor_addr; } /* * "Snap" action, maintains a snapshot for consistent multi-field comparisons: * * Snap [Save] * updates the saved image from the live image * Snap Rows * returns the number of rows * Snap Cols * returns the number of columns * Snap Staus * Snap Ascii ... * Snap AsciiField (not yet) * Snap Ebcdic ... * Snap EbcdicField (not yet) * Snap ReadBuffer * runs the named command * Snap Wait [tmo] Output * wait for the screen to change, then do a Snap Save */ static bool Snap_action(ia_t ia _is_unused, unsigned argc, const char **argv) { action_debug(AnSnap, ia, argc, argv); if (current_task == NULL || current_task->state != TS_RUNNING) { popup_an_error(AnSnap "() can only be called from scripts or macros"); return false; } if (argc == 0) { snap_save(); return true; } /* Handle 'Snap Wait' separately. */ if (!strcasecmp(argv[0], AnWait)) { long tmo = -1; char *ptr; unsigned maxp = 0; if (argc > 1 && (tmo = strtol(argv[1], &ptr, 10)) >= 0 && ptr != argv[0] && *ptr == '\0') { maxp = 3; } else { tmo = -1; maxp = 2; } if (argc > maxp) { popup_an_error("Too many arguments to " AnSnap "(" AnWait ")"); return false; } if (argc < maxp) { popup_an_error("Too few arguments to " AnSnap "(" AnWait ")"); return false; } if (strcasecmp(argv[argc - 1], "Output")) { popup_an_error("Unknown parameter to " AnSnap "(" AnWait ")"); return false; } /* Must be connected. */ if (!(CONNECTED || HALF_CONNECTED)) { popup_an_error(AnSnap "(): Not connected"); return false; } /* * Make sure we need to wait. * If we don't, then Snap(Wait) is equivalent to Snap(). */ if (!current_task->taskq->output_wait_needed) { snap_save(); return true; } /* Set the new state. */ task_set_state(current_task, TS_SWAIT_OUTPUT, AnWait "(" KwOutput ")"); /* Set up a timeout, if they want one. */ if (tmo >= 0) { current_task->wait_id = AddTimeOut(tmo? (tmo * 1000): 1, wait_timed_out); } return true; } if (!strcasecmp(argv[0], KwSave)) { if (argc != 1) { popup_an_error(AnSnap "(): Extra argument(s)"); return false; } snap_save(); } else if (!strcasecmp(argv[0], KwSnapStatus)) { if (argc != 1) { popup_an_error(AnSnap "(): Extra argument(s)"); return false; } if (snap_status == NULL) { popup_an_error(AnSnap "(): No saved state"); return false; } action_output("%s", snap_status); } else if (!strcasecmp(argv[0], KwRows)) { if (argc != 1) { popup_an_error(AnSnap "(): Extra argument(s)"); return false; } if (snap_status == NULL) { popup_an_error(AnSnap "(): No saved state"); return false; } action_output("%d", snap_rows); } else if (!strcasecmp(argv[0], KwCols)) { if (argc != 1) { popup_an_error(AnSnap "(): Extra argument(s)"); return false; } if (snap_status == NULL) { popup_an_error(AnSnap "(): No saved state"); return false; } action_output("%d", snap_cols); } else if (!strcasecmp(argv[0], AnAscii)) { if (snap_status == NULL) { popup_an_error(AnSnap "(): No saved state"); return false; } return dump_fixed(argv + 1, argc - 1, 0, AnAscii, true, snap_buf, snap_rows, snap_cols, snap_caddr, IA_UTF8(ia)); } else if (!strcasecmp(argv[0], AnAscii1)) { if (snap_status == NULL) { popup_an_error(AnSnap "(): No saved state"); return false; } return dump_fixed(argv + 1, argc - 1, 1, AnAscii1, true, snap_buf, snap_rows, snap_cols, snap_caddr, IA_UTF8(ia)); } else if (!strcasecmp(argv[0], AnEbcdic)) { if (snap_status == NULL) { popup_an_error(AnSnap "(): No saved state"); return false; } return dump_fixed(argv + 1, argc - 1, 0, AnEbcdic, false, snap_buf, snap_rows, snap_cols, snap_caddr, IA_UTF8(ia)); } else if (!strcasecmp(argv[0], AnEbcdic1)) { if (snap_status == NULL) { popup_an_error(AnSnap "(): No saved state"); return false; } return dump_fixed(argv + 1, argc - 1, 1, AnEbcdic1, false, snap_buf, snap_rows, snap_cols, snap_caddr, IA_UTF8(ia)); } else if (!strcasecmp(argv[0], AnReadBuffer)) { if (snap_status == NULL) { popup_an_error(AnSnap "(): No saved state"); return false; } return do_read_buffer(argv + 1, argc - 1, snap_buf, IA_UTF8(ia)); } else { return action_args_are(AnSnap, KwSave, KwSnapStatus, KwRows, KwCols, AnWait, AnAscii, AnAscii1, AnEbcdic, AnEbcdic1, AnReadBuffer, NULL); return false; } return true; } /* * Wait for various conditions. */ static bool Wait_action(ia_t ia _is_unused, unsigned argc, const char **argv) { enum task_state next_state = TS_WAIT_IFIELD; float tmo = -1.0; char *ptr; unsigned np; const char **pr; action_debug(AnWait, ia, argc, argv); /* Pick off the timeout parameter first. */ if (argc > 0 && (tmo = strtof(argv[0], &ptr)) >= 0.0 && ptr != argv[0] && *ptr == '\0') { np = argc - 1; pr = argv + 1; } else { tmo = -1.0; np = argc; pr = argv; } if (np > 1) { popup_an_error("Too many arguments to " AnWait " ()" "or invalid timeout value"); return false; } if (current_task == NULL || current_task->state != TS_RUNNING) { popup_an_error(AnWait "() can only be called from scripts or macros"); return false; } if (np == 1) { if (!strcasecmp(pr[0], KwNvtMode) || !strcasecmp(pr[0], KwAnsi)) { if (!IN_NVT) { next_state = TS_WAIT_NVT; } } else if (!strcasecmp(pr[0], Kw3270Mode) || !strcasecmp(pr[0], Kw3270)) { if (!IN_3270) { next_state = TS_WAIT_3270; } } else if (!strcasecmp(pr[0], KwOutput)) { if (current_task->taskq->output_wait_needed) { next_state = TS_WAIT_OUTPUT; } else { return true; } } else if (!strcasecmp(pr[0], KwDisconnect)) { if (CONNECTED) { next_state = TS_WAIT_DISC; } else { return true; } } else if (!strcasecmp(pr[0], KwUnlock)) { if (KBWAIT) { next_state = TS_WAIT_UNLOCK; } else { return true; } } else if (tmo > 0.0 && !strcasecmp(pr[0], KwSeconds)) { next_state = TS_TIME_WAIT; } else if (strcasecmp(pr[0], KwInputField)) { return action_args_are(AnWait, KwInputField, KwNvtMode, Kw3270Mode, KwOutput, KwSeconds, KwDisconnect, KwUnlock, NULL); } } if (next_state != TS_TIME_WAIT && !(CONNECTED || HALF_CONNECTED)) { popup_an_error(AnWait "(): Not connected"); return false; } /* Is it already okay? */ if (next_state == TS_WAIT_IFIELD && CAN_PROCEED) { return true; } /* No, wait for it to happen. */ task_set_state(current_task, next_state, AnWait "()"); /* Set up a timeout, if they want one. */ if (tmo >= 0.0) { unsigned long tmo_msec = (unsigned long)(tmo * 1000); if (tmo_msec == 0) { tmo_msec = 1; } current_task->wait_id = AddTimeOut(tmo_msec, wait_timed_out); } return true; } /* Timeout for Pause action. */ static void pause_timed_out(ioid_t id) { taskq_t *q; task_t *s; bool found = false; assert(current_task == NULL); FOREACH_LLIST(&taskq, q, taskq_t *) { for (s = q->top; s != NULL; s = s->next) { if (s->wait_id == id) { found = true; break; } } if (found) { break; } } FOREACH_LLIST_END(&taskq, q, taskq_t *); if (!found) { vtrace("pause_timed_out: no match\n"); return; } /* If they just wanted a delay, succeed. */ s->success = true; task_set_state(s, TS_RUNNING, AnPause "() completed"); s->wait_id = NULL_IOID; } /* * Pause for unlockDelayMs milliseconds. */ static bool Pause_action(ia_t ia _is_unused, unsigned argc, const char **argv) { action_debug(AnPause, ia, argc, argv); if (check_argc(AnPause, argc, 0, 0) < 0) { return false; } if (appres.unlock_delay_ms == 0) { return true; } task_set_state(current_task, TS_TIME_WAIT, AnPause "()"); current_task->wait_id = AddTimeOut(appres.unlock_delay_ms, pause_timed_out); return true; } /* * Callback from Connect() and Reconnect() actions, to block a task. */ void task_connect_wait(void) { if (current_task != NULL && (int)current_task->state >= (int)TS_RUNNING && current_task->state != TS_WAIT_IFIELD && (HALF_CONNECTED || (CONNECTED && (kybdlock & KL_AWAITING_FIRST)))) { task_set_state(current_task, TS_CONNECT_WAIT, AnConnect "() or Reconnect()"); } } /* * Callback from ctlr.c, to indicate that the host has changed the screen. */ void task_host_output(void) { taskq_t *q; set_output_needed(false); FOREACH_LLIST(&taskq, q, taskq_t *) { task_t *s; for (s = q->top; s != NULL; s = s->next) { switch (s->state) { case TS_SWAIT_OUTPUT: snap_save(); /* fall through... */ case TS_WAIT_OUTPUT: task_set_state(s, TS_RUNNING, "host changed screen"); break; default: break; } } } FOREACH_LLIST_END(&taskq, q, taskq_t *); } /* * If error pop-ups and action output should be redirected, return the task to * redirect to. * * This is effective only for synchronous errors. */ static task_t * task_redirect_to(void) { task_t *s; for (s = current_task; s != NULL; s = s->next) { if (s->type == ST_CB && s->state == TS_RUNNING) { return s; } } return NULL; } /* Return whether error pop-ups and action output should be short-circuited. */ bool task_redirect(void) { return task_redirect_to() != NULL; } /* Return whether any tasks are active. */ bool task_active(void) { return current_task != NULL; } /* Translate an expect string (uses C escape syntax). */ static void expand_expect(task_t *task, const char *s) { char *t = Malloc(strlen(s) + 1); char c; enum { XS_BASE, XS_BS, XS_O, XS_X } state = XS_BASE; int n = 0; int nd = 0; static char hexes[] = "0123456789abcdef"; task->expect.text = t; while ((c = *s++)) { switch (state) { case XS_BASE: if (c == '\\') { state = XS_BS; } else { *t++ = c; } break; case XS_BS: switch (c) { case 'x': nd = 0; n = 0; state = XS_X; break; case 'r': *t++ = '\r'; state = XS_BASE; break; case 'n': *t++ = '\n'; state = XS_BASE; break; case 'b': *t++ = '\b'; state = XS_BASE; break; case 't': *t++ = '\t'; state = XS_BASE; break; default: if (c >= '0' && c <= '7') { nd = 1; n = c - '0'; state = XS_O; } else { *t++ = c; state = XS_BASE; } break; } break; case XS_O: if (nd < 3 && c >= '0' && c <= '7') { n = (n * 8) + (c - '0'); nd++; } else { *t++ = n; *t++ = c; state = XS_BASE; } break; case XS_X: if (isxdigit((unsigned char)c)) { n = (n * 16) + (int)(strchr(hexes, tolower((unsigned char)c)) - hexes); nd++; } else { if (nd) { *t++ = n; } else { *t++ = 'x'; } *t++ = c; state = XS_BASE; } break; } } task->expect.len = t - task->expect.text; } /* 'mem' version of strstr */ static char * memstr(char *s1, char *s2, int n1, int n2) { int i; for (i = 0; i <= n1 - n2; i++, s1++) { if (*s1 == *s2 && !memcmp(s1, s2, n2)) { return s1; } } return NULL; } /* Check for a match against an expect string. */ static bool expect_matches(task_t *task) { size_t ix, i; unsigned char buf[NVT_SAVE_SIZE]; char *t; ix = (nvt_save_ix + NVT_SAVE_SIZE - nvt_save_cnt) % NVT_SAVE_SIZE; for (i = 0; i < nvt_save_cnt; i++) { buf[i] = nvt_save_buf[(ix + i) % NVT_SAVE_SIZE]; } t = memstr((char *)buf, task->expect.text, (int)nvt_save_cnt, (int)task->expect.len); if (t != NULL) { nvt_save_cnt -= ((unsigned char *)t - buf) + task->expect.len; Replace(task->expect.text, NULL); return true; } else { return false; } } /* Store an NVT character for use by the Expect action. */ void task_store(unsigned char c) { /* Save the character in the buffer. */ nvt_save_buf[nvt_save_ix++] = c; nvt_save_ix %= NVT_SAVE_SIZE; if (nvt_save_cnt < NVT_SAVE_SIZE) { nvt_save_cnt++; } } /* Dump whatever NVT data has been sent by the host since last called. */ static bool NvtText_action(ia_t ia, unsigned argc, const char **argv) { size_t i; size_t ix; unsigned char c; varbuf_t r; action_debug(AnNvtText, ia, argc, argv); if (check_argc(AnNvtText, argc, 0, 0) < 0) { return false; } if (!nvt_save_cnt) { action_output("%s", "\n"); return true; } ix = (nvt_save_ix + NVT_SAVE_SIZE - nvt_save_cnt) % NVT_SAVE_SIZE; vb_init(&r); for (i = 0; i < nvt_save_cnt; i++) { c = nvt_save_buf[(ix + i) % NVT_SAVE_SIZE]; if (!(c & ~0x1f)) switch (c) { case '\n': vb_appends(&r, "\\n"); break; case '\r': vb_appends(&r, "\\r"); break; case '\b': vb_appends(&r, "\\b"); break; default: vb_appendf(&r, "\\%03o", c); break; } else if (c == '\\') { vb_appends(&r, "\\\\"); } else { vb_append(&r, (char *)&c, 1); } } action_output("%s", vb_buf(&r)); vb_free(&r); nvt_save_cnt = 0; nvt_save_ix = 0; return true; } /* Stop listening to stdin. */ static bool CloseScript_action(ia_t ia, unsigned argc, const char **argv) { action_debug(AnCloseScript, ia, argc, argv); if (check_argc(AnCloseScript, argc, 0, 1) < 0) { return false; } if (current_task->type == ST_MACRO && current_task->next->type == ST_CB && current_task->next->cbx.cb->closescript != NULL) { (*current_task->next->cbx.cb->closescript)(current_task->next->cbx.handle); return true; } else { popup_an_error(AnCloseScript "() not supported for this type of " "script"); return false; } } /* Execute an arbitrary shell command. */ static bool Execute_action(ia_t ia, unsigned argc, const char **argv) { const char **nargv = NULL; int nargc = 0; action_debug(AnExecute, ia, argc, argv); if (check_argc(AnExecute, argc, 1, 1) < 0) { return false; } /* Package it up for Script(). */ array_add(&nargv, nargc++, "-NoLock"); #if !defined(_WIN32) /*[*/ array_add(&nargv, nargc++, "/bin/sh"); array_add(&nargv, nargc++, "-c"); #else /*][*/ array_add(&nargv, nargc++, "cmd"); array_add(&nargv, nargc++, "/c"); #endif /*]*/ array_add(&nargv, nargc++, argv[0]); array_add(&nargv, nargc, NULL); return Script_action(ia, nargc, nargv); } /* Timeout for Expect action. */ static void expect_timed_out(ioid_t id) { taskq_t *q; task_t *s; bool found = false; FOREACH_LLIST(&taskq, q, taskq_t *) { for (s = q->top; s != NULL; s = s->next) { if (s->expect_id == id) { found = true; break; } } if (found) { break; } } FOREACH_LLIST_END(&taskq, q, taskq_t *); if (!found) { vtrace("expect_timed_out: no match\n"); return; } Replace(s->expect.text, NULL); current_task = s; popup_an_error(AnExpect "(): Timed out"); current_task = NULL; s->expect_id = NULL_IOID; task_set_state(s, TS_RUNNING, AnExpect "() timed out"); s->success = false; } /* Timeout for Wait action. */ static void wait_timed_out(ioid_t id) { taskq_t *q; task_t *s; bool found = false; assert(current_task == NULL); FOREACH_LLIST(&taskq, q, taskq_t *) { for (s = q->top; s != NULL; s = s->next) { if (s->wait_id == id) { found = true; break; } } if (found) { break; } } FOREACH_LLIST_END(&taskq, q, taskq_t *); if (!found) { vtrace("wait_timed_out: no match\n"); return; } /* If they just wanted a delay, succeed. */ if (s->state == TS_TIME_WAIT) { s->success = true; task_set_state(s, TS_RUNNING, AnWait "() timed out"); s->wait_id = NULL_IOID; return; } /* Pop up the error message. */ popup_an_error_to(s, ET_OTHER, AnWait "(): Timed out"); /* Forget the ID. */ s->success = false; task_set_state(s, TS_RUNNING, AnWait "() timed out"); s->wait_id = NULL_IOID; } /* Wait for a string from the host (NVT mode only). */ static bool Expect_action(ia_t ia, unsigned argc, const char **argv) { int tmo; action_debug(AnExpect, ia, argc, argv); if (check_argc(AnExpect, argc, 1, 2) < 0) { return false; } /* Verify the environment and parameters. */ if (!IN_NVT) { popup_an_error(AnExpect "() is valid only when connected in NVT mode"); return false; } if (argc == 2) { tmo = atoi(argv[1]); if (tmo < 1 || tmo > 600) { popup_an_error(AnExpect "(): Invalid timeout: %s", argv[1]); return false; } } else { tmo = 30; } /* See if the text is there already; if not, wait for it. */ expand_expect(current_task, argv[0]); if (!expect_matches(current_task)) { current_task->expect_id = AddTimeOut(tmo * 1000, expect_timed_out); task_set_state(current_task, TS_EXPECTING, AnExpect "()"); } /* else allow task to proceed */ return true; } /* Keyboard disable action, enables or disables the keyboard explicitly. */ static bool KeyboardDisable_action(ia_t ia, unsigned argc, const char **argv) { action_debug(AnKeyboardDisable, ia, argc, argv); if (check_argc(AnKeyboardDisable, argc, 0, 1) < 0) { return false; } if (argc == 0) { disable_keyboard(DISABLE, EXPLICIT, AnKeyboardDisable "() action"); } else { if (!strcasecmp(argv[0], ResTrue)) { disable_keyboard(DISABLE, EXPLICIT, AnKeyboardDisable "() action"); } else if (!strcasecmp(argv[0], ResFalse)) { disable_keyboard(ENABLE, EXPLICIT, AnKeyboardDisable "() action"); } else if (!strcasecmp(argv[0], KwForceEnable)) { force_enable_keyboard(); } else { return action_args_are(AnKeyboardDisable, ResTrue, ResFalse, KwForceEnable, NULL); } } return true; } /* "Macro" action, explicitly invokes a named macro. */ static bool Macro_action(ia_t ia, unsigned argc, const char **argv) { struct macro_def *m; action_debug(AnMacro, ia, argc, argv); if (check_argc(AnMacro, argc, 1, 1) < 0) { return false; } for (m = macro_defs; m != NULL; m = m->next) { if (!strcmp(m->name, argv[0])) { push_stack_macro(m->action); return true; } } popup_an_error(AnMacro "(): No such macro: '%s'", argv[0]); return false; } /* "Printer" action, starts or stops a printer session. */ static bool Printer_action(ia_t ia, unsigned argc, const char **argv) { action_debug(AnPrinter, ia, argc, argv); if (check_argc(AnPrinter, argc, 1, 2) < 0) { return false; } if (!strcasecmp(argv[0], KwStart)) { pr3287_session_start((argc > 1)? argv[1] : NULL); } else if (!strcasecmp(argv[0], KwStop)) { if (argc != 1) { popup_an_error(AnPrinter "(): Extra argument(s)"); return false; } pr3287_session_stop(); } else { return action_args_are(AnPrinter, KwStart, KwStop, NULL); } return true; } /* * Abort a queue. */ static void abortq(taskq_t *q) { task_t *s; task_t *next; for (s = q->top; s != NULL; s = next) { next = s->next; /* Don't abort a peer script. */ if (s->type == ST_CB && (s->cbx.cb->flags & CB_PEER)) { vtrace("Abort skipping peer\n"); continue; } /* Abort the cb. */ if (s->type == ST_CB) { vtrace("Canceling " TASK_NAME_FMT "\n", TASK_sNAME(s)); task_result(s, "Canceled", false); (*s->cbx.cb->done)(s->cbx.handle, true, true); } /* Free the task -- this is not a pop */ vtrace("Freeing " TASK_NAME_FMT "\n", TASK_sNAME(s)); free_task(s); /* Take it out of the taskq. */ q->top = next; q->depth--; } /* Mark the taskq as deleted. */ if (q->depth == 0) { q->deleted = true; } } /* * Abort all scripts using a particular CB. */ void abort_script_by_cb(const char *cb_name) { taskq_t *q; #if !defined(_WIN32) /*[*/ /* child_ignore_output(); */ /* Needed? */ #endif /*]*/ vtrace("Canceling all pending scripts for %s\n", cb_name); FOREACH_LLIST(&taskq, q, taskq_t *) { if (!strcmp(cb_name, q->cb->shortname)) { abortq(q); } } FOREACH_LLIST_END(&taskq, q, taskq_t *); /* Re-evaluate the OIA and menus. */ task_status_set(); } /* * Abort all scripts using a particular CB. */ void abort_queue(const char *unique_name) { taskq_t *q; #if !defined(_WIN32) /*[*/ /* child_ignore_output(); */ /* Needed? */ #endif /*]*/ vtrace("Canceling all pending scripts for %s\n", unique_name); FOREACH_LLIST(&taskq, q, taskq_t *) { if (!strcmp(unique_name, q->unique_name)) { abortq(q); } } FOREACH_LLIST_END(&taskq, q, taskq_t *); /* Re-evaluate the OIA and menus. */ task_status_set(); } /* Abort all running scripts. */ void abort_script(void) { taskq_t *q; #if !defined(_WIN32) /*[*/ child_ignore_output(); #endif /*]*/ vtrace("Canceling all pending scripts\n"); /* * - Call the kill callbacks for every cb. * - Free every task (not popping, just freeing). * - Mark every taskq as deleted. */ FOREACH_LLIST(&taskq, q, taskq_t *) { task_t *s; task_t *next; for (s = q->top; s != NULL; s = next) { next = s->next; /* Don't abort a peer script. */ if (s->type == ST_CB && (s->cbx.cb->flags & CB_PEER)) { vtrace("Abort skipping peer\n"); continue; } /* Abort the cb. */ if (s->type == ST_CB) { vtrace("Canceling " TASK_NAME_FMT "\n", TASK_sNAME(s)); task_result(s, "Canceled", false); (*s->cbx.cb->done)(s->cbx.handle, true, true); } /* Free the task -- this is not a pop */ vtrace("Freeing " TASK_NAME_FMT "\n", TASK_sNAME(s)); free_task(s); /* Take it out of the taskq. */ q->top = next; q->depth--; } /* Mark the taskq as deleted. */ if (q->depth == 0) { q->deleted = true; } } FOREACH_LLIST_END(&taskq, q, taskq_t *); /* Re-evaluate the OIA and menus. */ task_status_set(); } /* "Abort" action, stops pending scripts. */ static bool Abort_action(ia_t ia, unsigned argc, const char **argv) { action_debug(AnAbort, ia, argc, argv); if (check_argc(AnAbort, argc, 0, 0) < 0) { return false; } /* Set the bomb. */ if (current_task != NULL && current_task->type == ST_MACRO) { current_task->fatal = true; if (current_task->next && current_task->next->type == ST_CB) { current_task->next->fatal = true; } } return true; } /* * Bell action, used by scripts to ring the console bell and enter a comment * into the trace log. */ static bool Bell_action(ia_t ia, unsigned argc, const char **argv) { action_debug(AnBell, ia, argc, argv); if (check_argc(AnBell, argc, 0, 0) < 0) { return false; } if (product_has_display()) { ring_bell(); } else { action_output("(ding)"); } return true; } /* Tasks action, dumps out the current task state. */ char * task_get_tasks(void) { varbuf_t r; taskq_t *q; vb_init(&r); FOREACH_LLIST(&taskq, q, taskq_t *) { int i; vb_appendf(&r, "CB(%s) #%u\n", q->name, q->index); /* Walk the list backwards. */ for (i = 0; i < q->depth; i++) { task_t *s; int j; const char *last = NULL; for (s = q->top, j = 0; j < q->depth - i - 1; s = s->next, j++) { } if (s->type == ST_MACRO && s->macro.last[0]) { last = s->macro.last; } else if (s->type == ST_CB && s->cbx.cb->command != NULL) { last = (*s->cbx.cb->command)(s->cbx.handle); } vb_appendf(&r, "%*s" TASK_NAME_FMT " %s%s%s\n", s->depth + 1, "", TASK_sNAME(s), task_state_name[s->state], last? " => ": "", last? last: ""); } } FOREACH_LLIST_END(&taskq, q, taskq_t *); return vb_consume(&r); } /* Capabilities action, sets flags in the current CB. */ static bool Capabilities_action(ia_t ia, unsigned argc, const char **argv) { unsigned i; int j; task_t *redirect; unsigned flags = 0; static struct { unsigned flag; const char *name; } fname[] = { { CBF_INTERACTIVE, "interactive" }, { CBF_PWINPUT, "pwinput" }, { 0, NULL } }; action_debug(AnCapabilities, ia, argc, argv); redirect = task_redirect_to(); if (argc == 0) { if (redirect == NULL || redirect->cbx.cb->getflags == NULL) { return true; } flags = (*redirect->cbx.cb->getflags)(redirect->cbx.handle); for (j = 0; fname[j].name != NULL; j++) { if (flags & fname[j].flag) { action_output("%s", fname[j].name); } } return true; } if (redirect == NULL || redirect->cbx.cb->setflags == NULL) { popup_an_error(AnCapabilities "(): cannot set on this task type"); return false; } for (i = 0; i < argc; i++) { for (j = 0; fname[j].name != NULL; j++) { if (!strcasecmp(argv[i], fname[j].name)) { flags |= fname[i].flag; break; } } if (fname[j].name == NULL) { popup_an_error(AnCapabilities "(): Unknown flag '%s'", argv[i]); return false; } } if (flags) { (*redirect->cbx.cb->setflags)(redirect->cbx.handle, flags); } return true; } /* * ResumeInput action, resumes an action-suspended action. * * ResumeInput(text) * ResumeInput(-Abort) */ static bool ResumeInput_action(ia_t ia, unsigned argc, const char **argv) { input_request_t *ir; void *irhandle; task_t *redirect = task_redirect_to(); char *text; int ret; action_debug(RESUME_INPUT, ia, argc, argv); if (check_argc(RESUME_INPUT, argc, 1, 1) < 0) { return false; } /* Check for a pending request. */ if (redirect == NULL || redirect->cbx.cb->irv == NULL || (irhandle = (*redirect->cbx.cb->irv->getir)(redirect->cbx.handle)) == NULL) { popup_an_error(RESUME_INPUT ": No pending input request"); return false; } if (!strcasecmp(argv[0], "-Abort")) { /* Tell the CB to forget about it. */ (*redirect->cbx.cb->irv->setir)(redirect->cbx.handle, NULL); /* Forget about it. */ task_abort_input_request_irhandle(irhandle); popup_an_error("Action canceled"); return false; } /* Decode the response text. */ text = base64_decode(argv[0]); if (text == NULL) { (*redirect->cbx.cb->irv->setir)(redirect->cbx.handle, NULL); task_abort_input_request_irhandle(irhandle); popup_an_error(RESUME_INPUT ": Invalid base64 text"); return false; } /* Tell the CB to forget about the input request. */ (*redirect->cbx.cb->irv->setir)(redirect->cbx.handle, NULL); /* Continue and free the input request. */ ir = (input_request_t *)irhandle; llist_unlink(&ir->llist); ret = (*ir->continue_fn)(ir->handle, text); Free(text); Free(ir); return ret; } /** * Test the current task for interactivity. * * @returns true if interactive. */ bool task_is_interactive(void) { task_t *redirect = task_redirect_to(); return redirect != NULL && redirect->cbx.cb->getflags != NULL && ((*redirect->cbx.cb->getflags)(redirect->cbx.handle) & CBF_INTERACTIVE) != 0; } /** * Test the current task for non-blocking Connect(). * * @returns true if non-blocking. */ bool task_nonblocking_connect(void) { task_t *redirect = task_redirect_to(); return redirect != NULL && redirect->cbx.cb->getflags != NULL && ((*redirect->cbx.cb->getflags)(redirect->cbx.handle) & CBF_CONNECT_NONBLOCK) != 0; } /** * Request input. * * @param[in] action Action name * @param[in] no_echo True to use no-echo mode * * @returns true if input can be provided */ bool task_can_request_input(const char *action, bool no_echo) { task_t *redirect = task_redirect_to(); unsigned flags; if (redirect == NULL || redirect->cbx.cb->getflags == NULL || (!(flags = (*redirect->cbx.cb->getflags)(redirect->cbx.handle)) & CBF_INTERACTIVE)) { popup_an_error("%s: not an interactive session", action); return false; } if (no_echo && !(flags & CBF_PWINPUT)) { popup_an_error("%s: session does not support password input", action); return false; } return true; } /** * Request input. * * @param[in] action Action name * @param[in] prompt Prompt string * @param[in] continue_fn Continue function * @param[in] handle Handle to pass to continue functon * @param[in] no_echo True to use no-echo mode * * @returns true if input requested successfully */ bool task_request_input(const char *action, const char *prompt, continue_fn *continue_fn, abort_fn *abort_fn, void *handle, bool no_echo) { task_t *redirect = task_redirect_to(); unsigned flags; input_request_t *ir; char *encoded; if (redirect == NULL || redirect->cbx.cb->getflags == NULL || (!(flags = (*redirect->cbx.cb->getflags)(redirect->cbx.handle)) & CBF_INTERACTIVE)) { popup_an_error("%s: not an interactive session", action); return false; } if (no_echo && !(flags & CBF_PWINPUT)) { popup_an_error("%s: session does not support password input", action); return false; } /* Track this request. */ ir = (input_request_t *)Malloc(sizeof(input_request_t)); llist_init(&ir->llist); ir->continue_fn = continue_fn; ir->abort_fn = abort_fn; ir->handle = handle; LLIST_APPEND(&ir->llist, input_requestq); /* Tell the parent. */ (*redirect->cbx.cb->irv->setir)(redirect->cbx.handle, ir); /* Tell them we want input. */ encoded = lazya(base64_encode(prompt)); (*redirect->cbx.cb->reqinput)(redirect->cbx.handle, encoded, strlen(encoded), !no_echo); return true; } /** * Abort an input request for a given handle. */ void task_abort_input_request_irhandle(void *irhandle) { input_request_t *ir = irhandle; /* Abort and forget. */ llist_unlink(&ir->llist); if (ir->abort_fn != NULL) { (*ir->abort_fn)(ir->handle); } Free(ir); } /** * Set input-specific request context. * * @param[in] name Input request type name * @param[in] state Context to store * @param[in] abort Abort callback */ void task_set_ir_state(const char *name, void *state, ir_state_abort_cb abort) { task_t *redirect = task_redirect_to(); if (redirect != NULL && redirect->cbx.cb->irv != NULL) { (*redirect->cbx.cb->irv->setir_state)(redirect->cbx.handle, name, state, abort); } } /** * Get input-specific request context. * * @param[in] name Input request type name * @returns context, or NULL */ void * task_get_ir_state(const char *name) { task_t *redirect = task_redirect_to(); if (redirect != NULL && redirect->cbx.cb->irv != NULL) { return (*redirect->cbx.cb->irv->getir_state)(redirect->cbx.handle, name); } else { return NULL; } } typedef struct { char *previous; } sample_per_type_t; /* Continue the sample RequestInput action. */ static bool sample_continue_input(void *handle, const char *text) { sample_per_type_t *state = (sample_per_type_t *)handle; vtrace("Continuing RequestInput\n"); action_output("You said '%s'", text); /* Remember for next time. */ state = (sample_per_type_t *)handle; if (state != NULL) { Replace(state->previous, NewString(text)); } return true; } /* Abort the sample RequestInput action. */ static void sample_abort_input(void *handle) { sample_per_type_t *state = (sample_per_type_t *)handle; vtrace("Canceling RequestInput\n"); if (state != NULL) { Replace(state->previous, NewString("[canceled]")); } } /* Abort sample input request state. */ static void sample_abort_session(void *handle) { sample_per_type_t *state = (sample_per_type_t *)handle; vtrace("Canceling input request session\n"); if (state != NULL) { Replace(state->previous, NULL); Free(state); } } /* * RequestInput action, dummy test of interactive input. * * RequestInput() */ static bool RequestInput_action(ia_t ia, unsigned argc, const char **argv) { sample_per_type_t *state; bool no_echo = false; action_debug(AnRequestInput, ia, argc, argv); if (check_argc(AnRequestInput, argc, 0, 1) < 0) { return false; } if (argc > 0) { if (!strcasecmp(argv[0], KwDashNoEcho)) { no_echo = true; } else { popup_an_error(AnRequestInput "(): unknown keyword '%s'", argv[0]); return false; } } if (!task_can_request_input(AnRequestInput, no_echo)) { return false; } state = (sample_per_type_t *)task_get_ir_state(AnRequestInput); if (state == NULL) { /* Set up some state. */ state = (sample_per_type_t *)Malloc(sizeof(*state)); state->previous = NULL; task_set_ir_state(AnRequestInput, state, sample_abort_session); } else if (state->previous != NULL) { action_output("Your last answer was '%s'", state->previous); } task_request_input(AnRequestInput, "Input: ", sample_continue_input, sample_abort_input, state, no_echo); return false; } /** * Initialize input request state. * * @param[in,out] ir_state Input request state. */ void task_cb_init_ir_state(task_cb_ir_state_t *ir_state) { llist_init(ir_state); } /** * Set input request state. * * @param[in,out] ir_state Input request state * @param[in] name Name * @param[in] state State value * @param[in] abort Abort callback */ void task_cb_set_ir_state(task_cb_ir_state_t *ir_state, const char *name, void *state, ir_state_abort_cb abort) { ir_state_t *irs; FOREACH_LLIST(ir_state, irs, ir_state_t *) { if (!strcmp(irs->name, name)) { irs->state = state; irs->abort = abort; return; } } FOREACH_LLIST_END(ir_state, irs, ir_state_t); irs = (ir_state_t *)Calloc(1, sizeof(ir_state_t)); llist_init(&irs->llist); irs->name = name; irs->state = state; irs->abort = abort; LLIST_APPEND(&irs->llist, *ir_state); } /** * Get input request state. * * @param[in] ir_state Input request state * @param[in] name Name * @returns state, or NULL if name not found */ void * task_cb_get_ir_state(task_cb_ir_state_t *ir_state, const char *name) { ir_state_t *irs; FOREACH_LLIST(ir_state, irs, ir_state_t *) { if (!strcmp(irs->name, name)) { return irs->state; } } FOREACH_LLIST_END(ir_state, irs, ir_state_t); return NULL; } /** * Abort all input request state. * * @param[in,out] ir_state Input request state */ void task_cb_abort_ir_state(task_cb_ir_state_t *ir_state) { ir_state_t *irs; FOREACH_LLIST(ir_state, irs, ir_state_t *) { if (irs->abort != NULL) { (*irs->abort)(irs->state); } llist_unlink(&irs->llist); Free(irs); } FOREACH_LLIST_END(ir_state, irs, ir_state_t); } /** * Indicate whether an input field can proceed. * * @return True if safe to proceed. */ bool task_ifield_can_proceed(void) { return CAN_PROCEED; } /** * Indicate whether it is safe for a task to go into KBWAIT state. * * @return True if safe for KBWAIT. */ bool task_can_kbwait(void) { return (kybdlock & KBWAIT_MASK) && !(kybdlock & ~KBWAIT_MASK); } /** * Set the current task waiting for the keyboard to unlock. */ void task_kbwait(void) { task_set_state(current_task, TS_KBWAIT, "explicit request"); } /* Set a task to WAIT_PASSTHRU state. */ const char * task_set_passthru(task_cbh **ret_cbh) { *ret_cbh = NULL; if (current_task != NULL && current_task->state == TS_RUNNING) { /* Look for a calling UI context. */ task_t *t; for (t = current_task->next; t != NULL; t = t->next) { if (t->is_ui && t->cbx.handle != NULL) { *ret_cbh = t->cbx.handle; break; } } task_set_state(current_task, TS_PASSTHRU, "passthru processing"); current_task->passthru_index = ++passthru_index; return lazyaf("emu-%d", passthru_index); } else { return NULL; } } /* Complete a passthru. */ void task_passthru_done(const char *tag, bool success, const char *result) { taskq_t *q; FOREACH_LLIST(&taskq, q, taskq_t *) { task_t *s; for (s = q->top; s != NULL; s = s->next) { if (s->state == TS_PASSTHRU && !strncmp(tag, "emu-", 4) && s->passthru_index == atoi(tag + 4)) { task_set_state(s, TS_RUNNING, "passthru done"); s->success = success; if (result && s->next != NULL && s->next->type == ST_CB) { /* Pass the result back. */ task_result(s->next, result, success); } return; } } } FOREACH_LLIST_END(&taskq, q, taskq_t *); } /* Continue a task that is blocked by task_xwait(). */ void task_resume_xwait(void *context, bool cancel, const char *why) { taskq_t *q; FOREACH_LLIST(&taskq, q, taskq_t *) { task_t *s; for (s = q->top; s != NULL; s = s->next) { if (s->state == TS_XWAIT && s->wait_context == context) { task_set_state(s, TS_RUNNING, lazyaf("extended wait done%s: %s", cancel? " - cancel": "", why)); s->wait_context = NULL; (*s->xcontinue_fn)(context, cancel); /* * This code used to set s->success to false if this was a * cancel, but there is no value in it, and also nothing * no error is popped up. */ return; } } } FOREACH_LLIST_END(&taskq, q, taskq_t *); } /* Block a task until task_resume_xwait() is called. */ void task_xwait(void *context, xcontinue_fn *continue_fn, const char *why) { assert(current_task != NULL); current_task->wait_context = context; current_task->xcontinue_fn = continue_fn; task_set_state(current_task, TS_XWAIT, lazyaf("extended wait: %s", why)); } suite3270-4.1/Common/telnet.c000066400000000000000000002716501413735575200157410ustar00rootroot00000000000000/* * Copyright (c) 1993-2021 Paul Mattes. * Copyright (c) 2004, Don Russell. * Copyright (c) 1990, Jeff Sparkes. * Copyright (c) 1989, Georgia Tech Research Corporation (GTRC), Atlanta, * GA 30332. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the names of Paul Mattes, Don Russell, Jeff Sparkes, GTRC * nor their contributors may be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES, DON RUSSELL, JEFF SPARKES AND * GTRC "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL PAUL MATTES, * DON RUSSELL, JEFF SPARKES OR GTRC BE LIABLE FOR ANY DIRECT, INDIRECT, * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * telnet.c * This module initializes and manages a telnet socket to * the given IBM host. */ #include "globals.h" #if !defined(_WIN32) /*[*/ # include # include #endif /*]*/ #define TELCMDS 1 #define TELOPTS 1 #include "arpa_telnet.h" #if !defined(_WIN32) /*[*/ # include #endif /*]*/ #include #include #if !defined(_WIN32) /*[*/ # include #endif /*]*/ #include #include "tn3270e.h" #include "3270ds.h" #include "appres.h" #include "actions.h" #include "b3270proto.h" #include "b8.h" #include "boolstr.h" #include "ctlrc.h" #include "host.h" #include "indent_s.h" #include "kybd.h" #include "lazya.h" #include "linemode.h" #include "names.h" #include "nvt.h" #include "popups.h" #include "proxy.h" #include "resolver.h" #include "resources.h" #include "sio.h" #include "varbuf.h" /* must precede sioc.h */ #include "sioc.h" #include "split_host.h" #include "stats.h" #include "task.h" #include "telnet.h" #include "telnet_core.h" #include "telnet_gui.h" #include "telnet_private.h" #include "telnet_sio.h" #include "tls_passwd_gui.h" #include "toggles.h" #include "trace.h" #include "unicodec.h" #include "utils.h" #include "vstatus.h" #include "w3misc.h" #include "xio.h" #if !defined(TELOPT_NAWS) /*[*/ # define TELOPT_NAWS 31 #endif /*]*/ #if !defined(TELOPT_STARTTLS) /*[*/ # define TELOPT_STARTTLS 46 #endif /*]*/ #define TLS_FOLLOWS 1 #define BUFSZ 32768 #define TRACELINE 72 #define N_OPTS 256 #define LINEMODE_NAME "lineMode" #if !defined(LOCAL_PROCESS) /*[*/ # define local_process false #endif /*]*/ /* Globals */ char *hostname = NULL; time_t ns_time; int ns_brcvd; int ns_rrcvd; int ns_bsent; int ns_rsent; unsigned char *obuf; /* 3270 output buffer */ unsigned char *obptr = (unsigned char *) NULL; bool linemode = true; bool charmode_onlcr = false; #if defined(LOCAL_PROCESS) /*[*/ bool local_process = false; #endif /*]*/ char *termtype; struct timeval net_last_recv_ts; const char *telquals[3] = { "IS", "SEND", "INFO" }; /* Statics */ static socket_t sock = INVALID_SOCKET; /* active socket */ #if defined(_WIN32) /*[*/ static HANDLE sock_handle = INVALID_HANDLE_VALUE; #endif /*]*/ static unsigned char myopts[N_OPTS], hisopts[N_OPTS]; /* telnet option flags */ static bool did_ne_send; static bool deferred_will_ttype; static unsigned char *ibuf = (unsigned char *) NULL; /* 3270 input buffer */ static unsigned char *ibptr; static int ibuf_size = 0; /* size of ibuf */ static unsigned char *obuf_base = NULL; static int obuf_size = 0; static unsigned char *netrbuf = NULL; /* network input buffer */ static unsigned char *sbbuf = NULL; /* telnet sub-option buffer */ static unsigned char *sbptr; static unsigned char telnet_state; static int syncing; #if !defined(_WIN32) /*[*/ static ioid_t output_id = NULL_IOID; #endif /*]*/ static ioid_t connect_timeout_id = NULL_IOID; /* explicit Connect timeout */ static ioid_t nop_timeout_id = NULL_IOID; static char ttype_tmpval[13]; static unsigned short e_xmit_seq; /* transmit sequence number */ static int response_required; static size_t nvt_data = 0; static int tn3270e_negotiated = 0; static enum { E_UNBOUND, E_3270, E_NVT, E_SSCP } tn3270e_submode = E_UNBOUND; static int tn3270e_bound = 0; static unsigned char *bind_image = NULL; static size_t bind_image_len = 0; static char *plu_name = NULL; static int maxru_sec = 0; static int maxru_pri = 0; static int bind_rd = 0; static int bind_cd = 0; static int bind_ra = 0; static int bind_ca = 0; #define BIND_DIMS_PRESENT 0x1 /* BIND included screen dimensions */ #define BIND_DIMS_ALT 0x2 /* BIND included alternate size */ #define BIND_DIMS_VALID 0x4 /* BIND screen sizes were valid */ static unsigned bind_state = 0; static char **lus = NULL; static char **curr_lu = NULL; static char *try_lu = NULL; static proxytype_t proxy_type = PT_NONE; static bool proxy_pending = false; static char *proxy_user = NULL; static char *proxy_host = NULL; static char *proxy_portname = NULL; static unsigned short proxy_port = 0; static b8_t e_funcs; /* negotiated TN3270E functions */ static bool secure_connection; static char *net_accept; static enum cstate starttls_pending = NOT_CONNECTED; typedef enum { NTIM_LINE, NTIM_CHARACTER, NTIM_CHARACTER_CRLF, NTIM_UNKNOWN } ntim_t; static const char *ntim_name[] = { "line", "character", "characterCrLf", NULL }; static ntim_t ntim = NTIM_UNKNOWN; static ntim_t parse_ntim(const char *value); static bool telnet_fsm(unsigned char c); static void net_rawout(unsigned const char *buf, size_t len); static void check_in3270(void); static void store3270in(unsigned char c); static void check_linemode(bool init); static int non_blocking(bool on); static void net_connected(void); static void connection_complete(void); static int tn3270e_negotiate(void); static int process_eor(void); static const char *tn3270e_function_names(const unsigned char *, int); static void tn3270e_subneg_send(unsigned char, b8_t *); static void tn3270e_fdecode(const unsigned char *, int, b8_t *); static void tn3270e_ack(void); static void tn3270e_nak(enum pds); static void net_starttls_continue(void); static const char *nnn(int c); static void net_hexnvt_out_framed(unsigned char *buf, int len, bool framed); /* telnet states */ #define TNS_DATA 0 /* receiving data */ #define TNS_IAC 1 /* got an IAC */ #define TNS_WILL 2 /* got an IAC WILL */ #define TNS_WONT 3 /* got an IAC WONT */ #define TNS_DO 4 /* got an IAC DO */ #define TNS_DONT 5 /* got an IAC DONT */ #define TNS_SB 6 /* got an IAC SB */ #define TNS_SB_IAC 7 /* got an IAC after an IAC SB */ /* telnet predefined messages */ static unsigned char do_opt[] = { IAC, DO, '_' }; static unsigned char dont_opt[] = { IAC, DONT, '_' }; static unsigned char will_opt[] = { IAC, WILL, '_' }; static unsigned char wont_opt[] = { IAC, WONT, '_' }; static unsigned char functions_req[] = { IAC, SB, TELOPT_TN3270E, TN3270E_OP_FUNCTIONS }; static const char *reason_code[8] = { "CONN-PARTNER", "DEVICE-IN-USE", "INV-ASSOCIATE", "INV-NAME", "INV-DEVICE-TYPE", "TYPE-NAME-ERROR", "UNKNOWN-ERROR", "UNSUPPORTED-REQ" }; # define rsn(n) (((n) <= TN3270E_REASON_UNSUPPORTED_REQ)? \ reason_code[(n)]: "??") static const char *function_name[5] = { "BIND-IMAGE", "DATA-STREAM-CTL", "RESPONSES", "SCS-CTL-CODES", "SYSREQ" }; # define fnn(n) (((n) <= TN3270E_FUNC_SYSREQ)? \ function_name[(n)]: "??") static const char *data_type[9] = { "3270-DATA", "SCS-DATA", "RESPONSE", "BIND-IMAGE", "UNBIND", "NVT-DATA", "REQUEST", "SSCP-LU-DATA", "PRINT-EOJ" }; # define e_dt(n) (((n) <= TN3270E_DT_PRINT_EOJ)? \ data_type[(n)]: "??") static const char *req_flag[1] = { " ERR-COND-CLEARED" }; # define e_rq(fn, n) (((fn) == TN3270E_DT_REQUEST)? \ (((n) <= TN3270E_RQF_ERR_COND_CLEARED)? \ req_flag[(n)]: " ??"): "") static const char *hrsp_flag[3] = { "NO-RESPONSE", "ERROR-RESPONSE", "ALWAYS-RESPONSE" }; # define e_hrsp(n) (((n) <= TN3270E_RSF_ALWAYS_RESPONSE)? \ hrsp_flag[(n)]: "??") static const char *trsp_flag[2] = { "POSITIVE-RESPONSE", "NEGATIVE-RESPONSE" }; # define e_trsp(n) (((n) <= TN3270E_RSF_NEGATIVE_RESPONSE)? \ trsp_flag[(n)]: "??") # define e_rsp(fn, n) (((fn) == TN3270E_DT_RESPONSE)? e_trsp(n): e_hrsp(n)) const char *state_name[NUM_CSTATE] = { CstateNotConnected, CstateReconnecting, CstateTlsPasswordPending, CstateResolving, CstateTcpPending, CstateTlsPending, CstateProxyPending, CstateTelnetPending, CstateConnectedNvt, CstateConnectedNvtCharmode, CstateConnected3270, CstateConnectedUnbound, CstateConnectedEnvt, CstateConnectedSscp, CstateConnectedTn3270e }; #if !defined(_WIN32) /*[*/ # define XMIT_ROWS ((appres.c3270.altscreen)? MODEL_2_ROWS: maxROWS) # define XMIT_COLS ((appres.c3270.altscreen)? MODEL_2_COLS: maxCOLS) #else /*][*/ # define XMIT_ROWS maxROWS # define XMIT_COLS maxCOLS #endif /*]*/ sio_t sio = NULL; static void continue_tls(unsigned char *sbbuf, int len); static bool refused_tls = false; static bool nested_tls = false; static bool any_host_data = false; static bool need_tls_follows = false; static bool net_connect_pending; #if !defined(_WIN32) /*[*/ static void output_possible(iosrc_t fd, ioid_t id); #endif /*]*/ #if defined(_WIN32) /*[*/ # define socket_errno() WSAGetLastError() # define socket_strerror(n) win32_strerror(n) # define SE_EWOULDBLOCK WSAEWOULDBLOCK # define SE_ECONNRESET WSAECONNRESET # define SE_EINTR WSAEINTR # define SE_EAGAIN WSAEINPROGRESS # define SE_EPIPE WSAECONNABORTED # define SE_EINPROGRESS WSAEINPROGRESS # define SOCK_IOCTL(s, f, v) ioctlsocket(s, f, (DWORD *)v) # define IOCTL_T u_long #else /*][*/ # define socket_errno() errno # define socket_strerror(n) strerror(n) # define SE_EWOULDBLOCK EWOULDBLOCK # define SE_ECONNRESET ECONNRESET # define SE_EINTR EINTR # define SE_EAGAIN EAGAIN # define SE_EPIPE EPIPE # if defined(EINPROGRESS) /*[*/ # define SE_EINPROGRESS EINPROGRESS # endif /*]*/ # define SOCK_IOCTL ioctl # define IOCTL_T int #endif /*]*/ #if defined(SE_EINPROGRESS) /*[*/ # define IS_EINPROGRESS(e) ((e) == SE_EINPROGRESS) #else /*][*/ # define IS_EINPROGRESS(e) false #endif /*]*/ typedef union { struct sockaddr sa; struct sockaddr_in sin; #if defined(X3270_IPV6) /*[*/ struct sockaddr_in6 sin6; #endif /*]*/ } sockaddr_46_t; #define NUM_HA 4 static sockaddr_46_t haddr[NUM_HA]; static socklen_t ha_len[NUM_HA] = { sizeof(haddr[0]), sizeof(haddr[0]), sizeof(haddr[0]), sizeof(haddr[0]) }; static int num_ha = 0; static int ha_ix = 0; static int resolver_pipe[2] = { -1, -1 }; static int resolver_slot = -1; static iosrc_t resolver_event = INVALID_IOSRC; #if defined(_WIN32) /*[*/ void popup_a_sockerr(const char *fmt, ...) { va_list args; char *buffer; va_start(args, fmt); buffer = vlazyaf(fmt, args); va_end(args); connect_error("%s: %s", buffer, win32_strerror(socket_errno())); } #else /*][*/ void popup_a_sockerr(const char *fmt, ...) { va_list args; char *buffer; va_start(args, fmt); buffer = vlazyaf(fmt, args); va_end(args); connect_errno(errno, "%s", buffer); } #endif /*]*/ /* The host connection timed out. */ static void connect_timed_out(ioid_t id _is_unused) { connect_error("Host connection timed out"); connect_timeout_id = NULL_IOID; host_disconnect(true); } /* Connect to one of the addresses in haddr[]. */ static iosrc_t connect_to(int ix, bool noisy, bool *pending) { int on = 1; char hn[256]; char pn[256]; char *errmsg; #if defined(OMTU) /*[*/ int mtu = OMTU; #endif /*]*/ # define close_fail { SOCK_CLOSE(sock); \ sock = INVALID_SOCKET; \ return INVALID_IOSRC; \ } /* create the socket */ if ((sock = socket(haddr[ix].sa.sa_family, SOCK_STREAM, IPPROTO_TCP)) == INVALID_SOCKET) { popup_a_sockerr("socket"); return INVALID_IOSRC; } /* set options for inline out-of-band data and keepalives */ if (setsockopt(sock, SOL_SOCKET, SO_OOBINLINE, (char *)&on, sizeof(on)) < 0) { popup_a_sockerr("setsockopt(SO_OOBINLINE)"); close_fail; } if (setsockopt(sock, SOL_SOCKET, SO_KEEPALIVE, (char *)&on, sizeof(on)) < 0) { popup_a_sockerr("setsockopt(SO_KEEPALIVE)"); close_fail; } #if defined(OMTU) /*[*/ if (setsockopt(sock, SOL_SOCKET, SO_SNDBUF, (char *)&mtu, sizeof(mtu)) < 0) { popup_a_sockerr("setsockopt(SO_SNDBUF)"); close_fail; } #endif /*]*/ /* set the socket to be non-delaying */ if (non_blocking(true) < 0) { close_fail; } #if !defined(_WIN32) /*[*/ /* don't share the socket with our children */ fcntl(sock, F_SETFD, 1); #endif /*]*/ /* Init TLS. */ if (HOST_FLAG(TLS_HOST)) { if (!sio_supported()) { popup_an_error("TLS not supported\n"); close_fail; } } if (numeric_host_and_port(&haddr[ix].sa, ha_len[ix], hn, sizeof(hn), pn, sizeof(pn), &errmsg)) { vtrace("Trying %s, port %s...\n", hn, pn); telnet_gui_connecting(hn, pn); } /* Set an explicit timeout, if configured. */ if (appres.connect_timeout) { connect_timeout_id = AddTimeOut(appres.connect_timeout * 1000, connect_timed_out); } /* connect */ if (connect(sock, &haddr[ix].sa, ha_len[ix]) == -1) { if (socket_errno() == SE_EWOULDBLOCK || IS_EINPROGRESS(socket_errno())) { vtrace("TCP connection pending.\n"); *pending = true; #if !defined(_WIN32) /*[*/ output_id = AddOutput(sock, output_possible); #endif /*]*/ } else { if (noisy) { popup_a_sockerr(AnConnect "() to %s%s, port %d", (proxy_type != PT_NONE)? "proxy ": "", (proxy_type != PT_NONE)? proxy_host : hostname, (proxy_type != PT_NONE)? proxy_port : current_port); } close_fail; } } else { net_connected(); /* net_connected() can cause the connection to fail. */ if (sock == INVALID_SOCKET) { close_fail; } } /* all done */ #if defined(_WIN32) /*[*/ sock_handle = CreateEvent(NULL, FALSE, FALSE, NULL); if (sock_handle == NULL) { fprintf(stderr, "Cannot create socket handle: %s\n", win32_strerror(GetLastError())); x3270_exit(1); } if (WSAEventSelect(sock, sock_handle, FD_READ | FD_CONNECT | FD_CLOSE) != 0) { fprintf(stderr, "WSAEventSelect failed: %s\n", win32_strerror(GetLastError())); x3270_exit(1); } return sock_handle; #else /*][*/ return sock; #endif /*]*/ } /* Complete a connection, now that the hostname has been resolved. */ static net_connect_t finish_connect(iosrc_t *iosrc) { iosrc_t s; /* Set up the TLS context, whether this is an TLS host or not. */ if (sio_supported()) { bool pending = false; sio = sio_init_wrapper(NULL, HOST_FLAG(NO_VERIFY_CERT_HOST), net_accept, &pending); if (sio == NULL) { if (pending) { net_connect_pending = true; return NC_TLS_PASS; } net_disconnect(false); return NC_FAILED; } } /* Try each of the haddrs. */ ha_ix = 0; while (ha_ix < num_ha) { bool pending = false; if ((s = connect_to(ha_ix, (ha_ix == num_ha - 1), &pending)) != INVALID_IOSRC) { *iosrc = s; return pending? NC_CONNECT_PENDING: NC_CONNECTED; } ha_ix++; } /* Ran out. */ return NC_FAILED; } /* There is data on the resolver pipe. */ static void resolve_done(iosrc_t fd, ioid_t id) { int nr; char slot_byte; int slot; int rv; char *errmsg; iosrc_t iosrc = INVALID_IOSRC; net_connect_t nc; /* Read the data, which is the slot number. */ nr = read(resolver_pipe[0], &slot_byte, 1); if (nr < 0) { popup_an_errno(errno, "Resolver pipe"); return; } if (nr == 0) { popup_an_error("Resolver pipe EOF"); } /* Might be a canceled request. */ slot = (int)slot_byte; if (slot != resolver_slot) { vtrace("Cleaning up canceled resolver slot %d\n", slot); cleanup_host_and_port(slot); return; } rv = collect_host_and_port(slot, &haddr[0].sa, sizeof(haddr[0]), ha_len, ¤t_port, &errmsg, NUM_HA, &num_ha); if (RHP_IS_ERROR(rv)) { connect_error("%s", errmsg); return; } vtrace("Resolution complete, %d address%s\n", num_ha, (num_ha == 1)? "": "es"); /* Proceed with the connection. */ nc = finish_connect(&iosrc); if (nc == NC_FAILED) { host_disconnect(true); } else { host_continue_connect(iosrc, nc); } } /* * net_connect * Establish a telnet socket to the given host passed as an argument. * Called only once and is responsible for setting up the telnet * variables. Returns the file descriptor of the connected socket. */ net_connect_t net_connect(const char *host, char *portname, char *accept, bool ls, iosrc_t *iosrc) { struct servent *sp; struct hostent *hp; char passthru_haddr[8]; int passthru_len = 0; unsigned short passthru_port = 0; char *errmsg; if (sizeof(state_name)/sizeof(state_name[0]) != NUM_CSTATE) { Error("telnet cstate_name has the wrong number of elements"); } *iosrc = INVALID_IOSRC; if (netrbuf == NULL) { netrbuf = (unsigned char *)Malloc(BUFSZ); } linemode_init(); ns_brcvd = 0; ns_rrcvd = 0; ns_bsent = 0; ns_rsent = 0; environ_init(); Replace(hostname, NewString(host)); net_accept = accept; starttls_pending = NOT_CONNECTED; st_changed(ST_SECURE, false); /* set up temporary termtype */ net_set_default_termtype(); /* get the passthru host and port number */ if (HOST_FLAG(PASSTHRU_HOST)) { const char *hn; hn = getenv("INTERNET_HOST"); if (hn == NULL) { hn = "internet-gateway"; } hp = gethostbyname(hn); if (hp == (struct hostent *) 0) { connect_error("Unknown passthru host: %s", hn); return NC_FAILED; } memmove(passthru_haddr, hp->h_addr, hp->h_length); passthru_len = hp->h_length; sp = getservbyname("telnet-passthru","tcp"); if (sp != NULL) { passthru_port = sp->s_port; } else { passthru_port = htons(3514); } } else if (appres.proxy != NULL) { proxytype_t pt; unsigned long lport; char *ptr; struct servent *sp; pt = proxy_setup(appres.proxy, &proxy_user, &proxy_host, &proxy_portname); if (pt == PT_ERROR) { return NC_FAILED; } lport = strtoul(portname, &ptr, 0); if (ptr == portname || *ptr != '\0' || lport == 0L || lport & ~0xffff) { if (!(sp = getservbyname(portname, "tcp"))) { connect_error("Unknown port number or service: %s", portname); return NC_FAILED; } current_port = ntohs(sp->s_port); } else { current_port = (unsigned short)lport; } proxy_type = pt; proxy_pending = true; } /* fill in the socket address of the given host */ memset((char *) &haddr, 0, sizeof(haddr)); if (HOST_FLAG(PASSTHRU_HOST)) { /* * XXX: We don't try multiple addresses for the passthru * host. */ haddr[0].sin.sin_family = AF_INET; memmove(&haddr[0].sin.sin_addr, passthru_haddr, passthru_len); haddr[0].sin.sin_port = passthru_port; ha_len[0] = sizeof(struct sockaddr_in); num_ha = 1; ha_ix = 0; } else if (proxy_pending) { /* * XXX: We don't try multiple addresses for a proxy * host. */ rhp_t rv; int nr; rv = resolve_host_and_port(proxy_host, proxy_portname, &proxy_port, &haddr[0].sa, sizeof(haddr[0]), &ha_len[0], &errmsg, 1, &nr); if (RHP_IS_ERROR(rv)) { connect_error("%s", errmsg); return NC_FAILED; } num_ha = 1; ha_ix = 0; } else { #if defined(LOCAL_PROCESS) /*[*/ if (ls) { local_process = true; } else { #endif /*]*/ rhp_t rv; if (resolver_pipe[0] == -1) { int rv; #if !defined(_WIN32) /*[*/ rv = pipe(resolver_pipe); #else /*][*/ rv = _pipe(resolver_pipe, 512, _O_BINARY); #endif /*]*/ if (rv < 0) { connect_error("resolver pipe: %s", strerror(errno)); return NC_FAILED; } #if !defined(_WIN32) /*[*/ AddInput(resolver_pipe[0], resolve_done); #else /*][*/ resolver_event = CreateEvent(NULL, FALSE, FALSE, NULL); AddInput(resolver_event, resolve_done); #endif /*]*/ } #if defined(LOCAL_PROCESS) /*[*/ local_process = false; #endif /*]*/ rv = resolve_host_and_port_a(host, portname, ¤t_port, &haddr[0].sa, sizeof(haddr[0]), ha_len, &errmsg, NUM_HA, &num_ha, &resolver_slot, resolver_pipe[1], resolver_event); if (RHP_IS_ERROR(rv)) { connect_error("%s", errmsg); return NC_FAILED; } ha_ix = 0; if (rv == RHP_PENDING) { vtrace("Resolver slot is %d\n", resolver_slot); return NC_RESOLVING; } #if defined(LOCAL_PROCESS) /*[*/ } #endif /*]*/ } #if defined(LOCAL_PROCESS) /*[*/ if (local_process) { int amaster; struct winsize w; w.ws_row = XMIT_ROWS; w.ws_col = XMIT_COLS; w.ws_xpixel = 0; w.ws_ypixel = 0; switch (forkpty(&amaster, NULL, NULL, &w)) { case -1: /* failed */ connect_errno(errno, "forkpty"); close_fail; case 0: /* child */ putenv("TERM=xterm"); if (strchr(host, ' ') != NULL) { execlp("/bin/sh", "sh", "-c", host, NULL); } else { char *arg1; arg1 = strrchr(host, '/'); execlp(host, (arg1 == NULL)? host: arg1 + 1, NULL); } perror(host); _exit(1); break; default: /* parent */ sock = amaster; fcntl(sock, F_SETFD, 1); connection_complete(); host_in3270(linemode? CONNECTED_NVT: CONNECTED_NVT_CHAR); host_set_flag(NO_TELNET_HOST); ntim = NTIM_CHARACTER; break; } *iosrc = sock; return NC_CONNECTED; } #endif /*]*/ return finish_connect(iosrc); } #undef close_fail /* Set up the LU list. */ static void setup_lus(void) { char *lu; char *comma; int n_lus = 1; int i; connected_lu = NULL; connected_type = NULL; if (!luname[0]) { Replace(lus, NULL); curr_lu = NULL; try_lu = NULL; return; } /* * Count the commas in the LU name. That plus one is the * number of LUs to try. */ lu = luname; while ((comma = strchr(lu, ',')) != NULL) { n_lus++; lu++; } /* * Allocate enough memory to construct an argv[] array for * the LUs. */ Replace(lus, (char **)Malloc((n_lus+1) * sizeof(char *) + strlen(luname) + 1)); /* Copy each LU into the array. */ lu = (char *)(lus + n_lus + 1); strcpy(lu, luname); i = 0; do { lus[i++] = lu; comma = strchr(lu, ','); if (comma != NULL) { *comma = '\0'; lu = comma + 1; } } while (comma != NULL); lus[i] = NULL; curr_lu = lus; try_lu = *curr_lu; } /* Send a periodic TELNET NOP. */ static void send_nop(ioid_t id _is_unused) { static unsigned char nop[] = { IAC, NOP }; vtrace("SENT NOP\n"); net_rawout(nop, sizeof(nop)); if (cstate != NOT_CONNECTED) { nop_timeout_id = AddTimeOut(appres.nop_seconds * 1000, send_nop); } else { nop_timeout_id = NULL_IOID; } } static void net_connected_complete(void) { /* Done with TLS or proxy. */ if (appres.nvt_mode || HOST_FLAG(ANSI_HOST)) { host_in3270(CONNECTED_NVT); } else { change_cstate(TELNET_PENDING, "net_connected_complete"); } st_changed(ST_SECURE, false); /* Check no-TELNET input mode. */ if (ntim == NTIM_UNKNOWN) { ntim_t n = parse_ntim(appres.interactive.no_telnet_input_mode); if (n == NTIM_UNKNOWN) { xs_warning("Unknown %s value '%s', defaulting to %s", ResNoTelnetInputMode, appres.interactive.no_telnet_input_mode, ntim_name[NTIM_LINE]); ntim = NTIM_LINE; } else { ntim = n; } } /* set up telnet options */ memset((char *)myopts, 0, sizeof(myopts)); memset((char *)hisopts, 0, sizeof(hisopts)); did_ne_send = false; deferred_will_ttype = false; b8_zero(&e_funcs); b8_set_bit(&e_funcs, TN3270E_FUNC_BIND_IMAGE); b8_set_bit(&e_funcs, TN3270E_FUNC_RESPONSES); b8_set_bit(&e_funcs, TN3270E_FUNC_SYSREQ); e_xmit_seq = 0; response_required = TN3270E_RSF_NO_RESPONSE; need_tls_follows = false; telnet_state = TNS_DATA; ibptr = ibuf; /* clear statistics and flags */ time(&ns_time); ns_brcvd = 0; ns_rrcvd = 0; ns_bsent = 0; ns_rsent = 0; syncing = 0; tn3270e_negotiated = 0; tn3270e_submode = E_UNBOUND; tn3270e_bound = 0; setup_lus(); check_linemode(true); /* write out the passthru hostname and port nubmer */ if (HOST_FLAG(PASSTHRU_HOST)) { char *buf; buf = xs_buffer("%s %d\r\n", hostname, current_port); send(sock, buf, (int)strlen(buf), 0); Free(buf); } /* set up NOP transmission */ if (appres.nop_seconds != 0) { nop_timeout_id = AddTimeOut(appres.nop_seconds * 1000, send_nop); } } static void net_connected(void) { bool data = false; /* Cancel the timeout. */ if (connect_timeout_id != NULL_IOID) { RemoveTimeOut(connect_timeout_id); connect_timeout_id = NULL_IOID; } if (cstate != TLS_PENDING) { vtrace("Connected to %s, port %u.\n", hostname, current_port); } if (proxy_pending) { proxy_negotiate_ret_t ret; /* Don't do this again. */ proxy_pending = false; /* Negotiate with the proxy. */ vtrace("Connected to proxy server %s, port %u.\n", proxy_host, proxy_port); change_cstate(PROXY_PENDING, "net_connected"); ret = proxy_negotiate(sock, proxy_user, hostname, current_port, false); if (ret == PX_FAILURE) { host_disconnect(true); return; } if (ret == PX_WANTMORE) { vtrace("Proxy needs more data\n"); return; } } /* Set up TLS. */ if (HOST_FLAG(TLS_HOST) && sio != NULL && !secure_connection) { sio_negotiate_ret_t rv; char *session, *cert; change_cstate(TLS_PENDING, "net_connected"); rv = sio_negotiate(sio, sock, hostname, &data); if (rv == SIG_FAILURE) { /* No need to trace the error, it was already displayed. */ connect_error("%s", sio_last_error()); host_disconnect(true); return; } if (rv == SIG_WANTMORE) { vtrace("Need more TLS data\n"); return; } secure_connection = true; session = indent_s(sio_session_info(sio)); cert = indent_s(sio_server_cert_info(sio)); vtrace("Connection is now secure.\n" "Provider: %s\n" "Session:\n%s\nServer certificate:\n%s\n", sio_provider(), session, cert); Free(session); Free(cert); st_changed(ST_SECURE, true); /* Tell everyone else again. */ host_connected(); } net_connected_complete(); if (data) { vtrace("Reading extra data after negotiation\n"); net_input(INVALID_IOSRC, NULL_IOID); } } /* * net_password_continue * Called by the password GUI when a password has been entered. */ void net_password_continue(const char *password) { bool pending; iosrc_t s; if (!net_connect_pending) { /* Connection is gone. */ return; } net_connect_pending = false; /* Try initializing sio again, with a new password. */ if ((sio = sio_init_wrapper(password, HOST_FLAG(NO_VERIFY_CERT_HOST), net_accept, &pending)) == NULL) { if (pending) { /* Still pending, try again. */ net_connect_pending = true; } return; } /* Try connecting. */ while (ha_ix < num_ha) { s = connect_to(ha_ix, (ha_ix == num_ha - 1), &pending); if (s != INVALID_IOSRC) { host_newfd(s); host_new_connection(pending); break; } ha_ix++; } } /* * remove_output * Cancel the callback for output available. */ static void remove_output(void) { #if !defined(_WIN32) /*[*/ if (output_id != NULL_IOID) { RemoveInput(output_id); output_id = NULL_IOID; } #endif /*]*/ } /* * connection_complete * The connection appears to be complete (output is possible or input * appeared ready but recv() returned EWOULDBLOCK). Complete the * connection-completion processing. */ static void connection_complete(void) { host_connected(); net_connected(); remove_output(); } #if !defined(_WIN32) /*[*/ /* * output_possible * Output is possible on the socket. Used only when a connection is * pending, to determine that the connection is complete. */ static void output_possible(iosrc_t fd _is_unused, ioid_t id _is_unused) { #if defined(CONNECT_GETPEERNAME) /*[*/ sockaddr_46_t sa; socklen_t len = sizeof(sa); # define COMPLETE_CONNECT(s) getpeername(s, &sa.sa, &len) # else /*][*/ # define COMPLETE_CONNECT(s) connect(s, &haddr[ha_ix].sa, sizeof(haddr[0])) #endif /*]*/ vtrace("Output possible\n"); /* * Try a connect() again to see if the connection completed sucessfully. * On some systems, such as Linux, this is harmless and succeeds. * On others, such as MacOS, this is mostly harmless and fails * with EISCONN. * * On Solaris, we do a getpeername() instead of a connect(). The second * connect() would fail with EINVAL there. */ if (COMPLETE_CONNECT(sock) < 0) { if (errno != EISCONN) { vtrace("RCVD socket error %d (%s)\n", socket_errno(), strerror(errno)); popup_a_sockerr("Connection%s failed", proxy_pending? " to proxy server": ""); host_disconnect(true); return; } } if (cstate == TCP_PENDING) { connection_complete(); } remove_output(); } #endif /*]*/ /* * net_disconnect * Shut down the socket. */ void net_disconnect(bool including_tls) { if (including_tls && sio != NULL) { sio_close(sio); sio = NULL; secure_connection = false; st_changed(ST_SECURE, false); } if (CONNECTED) { shutdown(sock, 2); } SOCK_CLOSE(sock); sock = INVALID_SOCKET; #if defined(_WIN32) /*[*/ CloseHandle(sock_handle); sock_handle = INVALID_HANDLE_VALUE; #endif /*]*/ vtrace("SENT disconnect\n"); /* Cancel proxy. */ if (proxy_type != PT_NONE) { proxy_close(); proxy_type = PT_NONE; proxy_pending = false; } /* Cancel the timeout. */ if (connect_timeout_id != NULL_IOID) { RemoveTimeOut(connect_timeout_id); connect_timeout_id = NULL_IOID; } /* Cancel NOPs. */ if (nop_timeout_id != NULL_IOID) { RemoveTimeOut(nop_timeout_id); nop_timeout_id = NULL_IOID; } /* We're not connected to an LU any more. */ vstatus_lu(NULL); /* We have no more interest in output buffer space. */ remove_output(); /* If we refused TLS and never entered 3270 mode, say so. */ if (refused_tls && !any_host_data) { if (!appres.tls.starttls) { connect_error("Host requested STARTTLS but STARTTLS disabled"); } else if (nested_tls) { connect_error("Host requested nested STARTTLS"); } else { connect_error("Host requested STARTTLS but TLS not supported"); } } refused_tls = false; nested_tls = false; any_host_data = false; starttls_pending = NOT_CONNECTED; net_connect_pending = false; change_cstate(NOT_CONNECTED, "net_disconnect"); } /* * net_input * Called by the toolkit whenever there is input available on the * socket. Reads the data, processes the special telnet commands * and calls process_ds to process the 3270 data stream. */ void net_input(iosrc_t fd _is_unused, ioid_t id _is_unused) { register unsigned char *cp; int nr; bool ignore_tls = false; #if defined(_WIN32) /*[*/ WSANETWORKEVENTS events; /* * Make the socket non-blocking. * Note that WSAEventSelect does this automatically (and won't allow * us to change it back to blocking), except on Wine. */ if (sock != INVALID_SOCKET && non_blocking(true) < 0) { host_disconnect(true); return; } #endif /*]*/ if (sock == INVALID_SOCKET) { return; } #if defined(_WIN32) /*[*/ if (WSAEnumNetworkEvents(sock, sock_handle, &events) != 0) { popup_an_error("WSAEnumNetworkEvents failed: %s", win32_strerror(WSAGetLastError())); host_disconnect(true); return; } vtrace("net_input: NetworkEvents 0x%lx%s%s%s\n", events.lNetworkEvents, (events.lNetworkEvents & FD_CONNECT) ? " CONNECT": "", (events.lNetworkEvents & FD_CLOSE) ? " CLOSE": "", (events.lNetworkEvents & FD_READ) ? " READ": ""); if (cstate == TCP_PENDING) { if (events.lNetworkEvents & FD_CONNECT) { if (events.iErrorCode[FD_CONNECT_BIT] != 0) { connect_error("%s%s", proxy_pending? "(to proxy server) ": "", win32_strerror(events.iErrorCode[FD_CONNECT_BIT])); host_disconnect(true); return; } else { connection_complete(); if (sock == INVALID_SOCKET) { return; } } } else { vtrace("Spurious net_input call\n"); return; } } #endif /*]*/ if (cstate == PROXY_PENDING) { /* More proxy data available. */ proxy_negotiate_ret_t ret = proxy_continue(); if (ret == PX_WANTMORE) { vtrace("Proxy needs more data\n"); return; } if (ret == PX_FAILURE) { host_disconnect(true); return; } net_connected_complete(); } if (cstate == TLS_PENDING) { /* More TLS data available. Process it. */ if (starttls_pending != NOT_CONNECTED) { net_starttls_continue(); } else { net_connected(); } return; } if (HOST_FLAG(TLS_HOST) && sio != NULL && !secure_connection) { /* Set up TLS tunnel after proxy connection. */ net_connected(); if (cstate == NOT_CONNECTED) { return; } } nvt_data = 0; vtrace("Reading host socket%s\n", secure_connection? " via TLS": ""); if (secure_connection) { /* * OpenSSL does not like getting refused connections * when it hasn't done any I/O yet. So peek ahead to * see if it's worth getting it involved at all. */ if (cstate == TLS_PENDING && (nr = recv(sock, (char *) netrbuf, 1, MSG_PEEK)) <= 0) { ignore_tls = true; } else { nr = sio_read(sio, (char *) netrbuf, BUFSZ); } } else { #if defined(LOCAL_PROCESS) /*[*/ if (local_process) { nr = read(sock, (char *) netrbuf, BUFSZ); } else #endif /*]*/ { nr = recv(sock, (char *) netrbuf, BUFSZ, 0); } } gettimeofday(&net_last_recv_ts, NULL); vtrace("Host socket read complete nr=%d\n", nr); if (nr < 0) { if ((secure_connection && nr == SIO_EWOULDBLOCK) || (!secure_connection && socket_errno() == SE_EWOULDBLOCK)) { vtrace("EWOULDBLOCK\n"); return; } if (secure_connection && !ignore_tls) { connect_error("%s", sio_last_error()); host_disconnect(true); return; } if (cstate == TCP_PENDING && socket_errno() == SE_EAGAIN) { connection_complete(); return; } #if defined(LOCAL_PROCESS) /*[*/ if (errno == EIO && local_process) { vtrace("RCVD local process disconnect\n"); host_disconnect(false); return; } #endif /*]*/ vtrace("RCVD socket error %d (%s)\n", socket_errno(), socket_strerror(socket_errno())); if (cstate == TCP_PENDING) { if (ha_ix == num_ha - 1) { popup_a_sockerr(AnConnect "() to %s%s, port %d", (proxy_type != PT_NONE)? "proxy ": "", (proxy_type != PT_NONE)? proxy_host : hostname, (proxy_type != PT_NONE)? proxy_port : current_port); } else { bool pending; iosrc_t s; net_disconnect(false); while (++ha_ix < num_ha) { s = connect_to(ha_ix, (ha_ix == num_ha - 1), &pending); if (s != INVALID_IOSRC) { host_newfd(s); host_new_connection(pending); return; } } } } else if (socket_errno() != SE_ECONNRESET) { popup_a_sockerr("Socket read"); } host_disconnect(true); return; } else if (nr == 0) { /* Host disconnected. */ vtrace("RCVD disconnect\n"); host_disconnect(false); return; } /* Process the data. */ if (cstate == TCP_PENDING) { host_connected(); net_connected(); remove_output(); } trace_netdata('<', netrbuf, nr); ns_brcvd += nr; stats_poke(); for (cp = netrbuf; cp < (netrbuf + nr); cp++) { #if defined(LOCAL_PROCESS) /*[*/ if (local_process) { /* More to do here, probably. */ if (cstate == TELNET_PENDING) { host_in3270(linemode? CONNECTED_NVT: CONNECTED_NVT_CHAR); hisopts[TELOPT_ECHO] = 1; check_linemode(false); kybdlock_clr(KL_AWAITING_FIRST, "telnet_fsm"); vstatus_reset(); ps_process(); } nvt_process((unsigned int) *cp); } else { #endif /*]*/ if (!telnet_fsm(*cp)) { ctlr_dbcs_postprocess(); host_disconnect(true); return; } #if defined(LOCAL_PROCESS) /*[*/ } #endif /*]*/ } if (IN_NVT) { ctlr_dbcs_postprocess(); } net_nvt_break(); #if defined(_WIN32) /*[*/ if (events.lNetworkEvents & FD_CLOSE) { vtrace("RCVD disconnect\n"); host_disconnect(false); } #endif /*]*/ /* See if it's time to roll over the trace file. */ trace_rollover_check(); } /* * set16 * Put a 16-bit value in a buffer. * Returns the number of bytes required. */ static size_t set16(char *buf, int n) { char *b0 = buf; n %= 256 * 256; if ((n / 256) == IAC) { *(unsigned char *)buf++ = IAC; } *buf++ = (n / 256); n %= 256; if (n == IAC) { *(unsigned char *)buf++ = IAC; } *buf++ = n; return buf - b0; } /* * send_naws * Send a Telnet window size sub-option negotation. */ static void send_naws(void) { char naws_msg[14]; size_t naws_len = 0; snprintf(naws_msg, sizeof(naws_msg), "%c%c%c", IAC, SB, TELOPT_NAWS); naws_len += 3; naws_len += set16(naws_msg + naws_len, XMIT_COLS); naws_len += set16(naws_msg + naws_len, XMIT_ROWS); sprintf(naws_msg + naws_len, "%c%c", IAC, SE); naws_len += 2; net_rawout((unsigned char *)naws_msg, naws_len); vtrace("SENT %s NAWS %d %d %s\n", cmd(SB), XMIT_COLS, XMIT_ROWS, cmd(SE)); } /* Advance 'try_lu' to the next desired LU name. */ static void next_lu(void) { if (curr_lu != NULL && (try_lu = *++curr_lu) == NULL) { curr_lu = NULL; } } #if defined(EBCDIC_HOST) /*[*/ /* * force_ascii * Force the argument string to ASCII. On ASCII (or ASCII-derived) hosts, * this is a no-op. On EBCDIC-based hosts, translation is necessary. */ static const char * force_ascii(const char *s) { static char buf[256]; unsigned char c, e; int i; i = 0; while ((c = *s++) && i < sizeof(buf) - 1) { e = ebc2asc0[c]; if (e) { buf[i++] = e; } else { buf[i++] = 0x3f; /* '?' */ } } buf[i] = '\0'; return buf; } #else /*][*/ #define force_ascii(s) (s) #endif /*]*/ #if defined(EBCDIC_HOST) /*[*/ /* * force_local * Force the argument string from ASCII to the local character set. On * ASCII (or ASCII-derived) hosts, this is a no-op. On EBCDIC-based * hosts, translation is necessary. * * Does the translation in-place. */ void force_local(char *s) { unsigned char c, e; while ((c = *s) != '\0') { e = asc2ebc0[c]; if (e) { *s = e; } else { *s = '?'; } s++; } } #else /*][*/ #define force_local(s) #endif /*]*/ /* * telnet_fsm * Telnet finite-state machine. * Returns true for okay, false for errors. */ static bool telnet_fsm(unsigned char c) { char *see_chr; size_t sl; switch (telnet_state) { case TNS_DATA: /* normal data processing */ if (!HOST_FLAG(NO_TELNET_HOST) && c == IAC) { /* got a telnet command */ telnet_state = TNS_IAC; net_nvt_break(); break; } if (cstate == TELNET_PENDING) { /* now can assume NVT mode */ if (linemode) { linemode_buf_init(); } host_in3270(linemode? CONNECTED_NVT: CONNECTED_NVT_CHAR); kybdlock_clr(KL_AWAITING_FIRST, "telnet_fsm"); vstatus_reset(); ps_process(); } if (IN_NVT && !IN_E) { if (!nvt_data) { vtrace("<.. "); nvt_data = 4; } see_chr = ctl_see((int) c); nvt_data += (sl = strlen(see_chr)); if (nvt_data >= TRACELINE) { vtrace(" ...\n... "); nvt_data = 4 + sl; } vtrace("%s", see_chr); if (!syncing) { if (((linemode && appres.linemode.onlcr) || (!linemode && charmode_onlcr)) && c == '\n') { nvt_process((unsigned int) '\r'); } nvt_process((unsigned int) c); } } else { store3270in(c); } break; case TNS_IAC: /* process a telnet command */ if (c != EOR && c != IAC) { vtrace("RCVD %s ", cmd(c)); } switch (c) { case IAC: /* escaped IAC, insert it */ if (IN_NVT && !IN_E) { if (!nvt_data) { vtrace("<.. "); nvt_data = 4; } see_chr = ctl_see((int) c); nvt_data += (sl = strlen(see_chr)); if (nvt_data >= TRACELINE) { vtrace(" ...\n ..."); nvt_data = 4 + sl; } vtrace("%s", see_chr); nvt_process((unsigned int) c); } else { store3270in(c); } telnet_state = TNS_DATA; break; case EOR: /* eor, process accumulated input */ if (IN_3270 || (IN_E && tn3270e_negotiated)) { ns_rrcvd++; stats_poke(); if (process_eor()) { return false; } } else { Warning("EOR received when not in 3270 mode, ignored."); } vtrace("RCVD EOR\n"); ibptr = ibuf; telnet_state = TNS_DATA; break; case WILL: telnet_state = TNS_WILL; break; case WONT: telnet_state = TNS_WONT; break; case DO: telnet_state = TNS_DO; break; case DONT: telnet_state = TNS_DONT; break; case SB: telnet_state = TNS_SB; if (sbbuf == NULL) { sbbuf = (unsigned char *)Malloc(1024); } sbptr = sbbuf; break; case DM: vtrace("\n"); if (syncing) { syncing = 0; #if !defined(_WIN32) /*[*/ x_except_on(sock); #else /*][*/ x_except_on(sock_handle); #endif /*]*/ } telnet_state = TNS_DATA; break; case GA: case NOP: vtrace("\n"); telnet_state = TNS_DATA; break; default: vtrace("???\n"); telnet_state = TNS_DATA; break; } break; case TNS_WILL: /* telnet WILL DO OPTION command */ vtrace("%s\n", opt(c)); switch (c) { case TELOPT_SGA: case TELOPT_BINARY: case TELOPT_EOR: case TELOPT_TTYPE: case TELOPT_ECHO: case TELOPT_TN3270E: if (c != TELOPT_TN3270E || !HOST_FLAG(NON_TN3270E_HOST)) { if (!hisopts[c]) { hisopts[c] = 1; do_opt[2] = c; net_rawout(do_opt, sizeof(do_opt)); vtrace("SENT %s %s\n", cmd(DO), opt(c)); /* For UTS, volunteer to do EOR when they do. */ if (c == TELOPT_EOR && !myopts[c]) { myopts[c] = 1; will_opt[2] = c; net_rawout(will_opt, sizeof(will_opt)); vtrace("SENT %s %s\n", cmd(WILL), opt(c)); } check_in3270(); check_linemode(false); } break; } default: dont_opt[2] = c; net_rawout(dont_opt, sizeof(dont_opt)); vtrace("SENT %s %s\n", cmd(DONT), opt(c)); break; } telnet_state = TNS_DATA; break; case TNS_WONT: /* telnet WONT DO OPTION command */ vtrace("%s\n", opt(c)); if (hisopts[c]) { hisopts[c] = 0; dont_opt[2] = c; net_rawout(dont_opt, sizeof(dont_opt)); vtrace("SENT %s %s\n", cmd(DONT), opt(c)); check_in3270(); check_linemode(false); } telnet_state = TNS_DATA; break; case TNS_DO: /* telnet PLEASE DO OPTION command */ vtrace("%s\n", opt(c)); switch (c) { case TELOPT_BINARY: case TELOPT_EOR: case TELOPT_TTYPE: case TELOPT_SGA: case TELOPT_NAWS: case TELOPT_TM: case TELOPT_TN3270E: case TELOPT_STARTTLS: if (c == TELOPT_STARTTLS && (!sio_supported() || !appres.tls.starttls || secure_connection)) { refused_tls = true; if (secure_connection) { nested_tls = true; } goto wont; } case TELOPT_NEW_ENVIRON: if (c == TELOPT_TN3270E && HOST_FLAG(NON_TN3270E_HOST)) { goto wont; } if (c == TELOPT_TM && !appres.bsd_tm) { goto wont; } if (c == TELOPT_NEW_ENVIRON && !appres.new_environ) { goto wont; } if (c == TELOPT_TTYPE && myopts[TELOPT_NEW_ENVIRON] && !did_ne_send) { /* * Defer sending WILL TTYPE until after the host asks for SB * NEW_ENVIRON SEND. */ myopts[c] = 1; deferred_will_ttype = true; break; } if (!myopts[c]) { if (c != TELOPT_TM) { myopts[c] = 1; } will_opt[2] = c; net_rawout(will_opt, sizeof(will_opt)); vtrace("SENT %s %s\n", cmd(WILL), opt(c)); check_in3270(); check_linemode(false); } if (c == TELOPT_NAWS) { send_naws(); } if (c == TELOPT_STARTTLS) { static unsigned char follows_msg[] = { IAC, SB, TELOPT_STARTTLS, TLS_FOLLOWS, IAC, SE }; /* * Send IAC SB STARTTLS FOLLOWS IAC SE to announce that what * follows is TLS. */ net_rawout(follows_msg, sizeof(follows_msg)); vtrace("SENT %s %s FOLLOWS %s\n", cmd(SB), opt(TELOPT_STARTTLS), cmd(SE)); need_tls_follows = true; } break; default: wont: wont_opt[2] = c; net_rawout(wont_opt, sizeof(wont_opt)); vtrace("SENT %s %s\n", cmd(WONT), opt(c)); break; } telnet_state = TNS_DATA; break; case TNS_DONT: /* telnet PLEASE DON'T DO OPTION command */ vtrace("%s\n", opt(c)); if (myopts[c]) { myopts[c] = 0; wont_opt[2] = c; net_rawout(wont_opt, sizeof(wont_opt)); vtrace("SENT %s %s\n", cmd(WONT), opt(c)); check_in3270(); check_linemode(false); } if (c == TELOPT_TTYPE && deferred_will_ttype) { deferred_will_ttype = false; } telnet_state = TNS_DATA; break; case TNS_SB: /* telnet sub-option string command */ if (c == IAC) { telnet_state = TNS_SB_IAC; } else { *sbptr++ = c; } break; case TNS_SB_IAC: /* telnet sub-option string command */ *sbptr++ = c; if (c == SE) { telnet_state = TNS_DATA; if (sbbuf[0] == TELOPT_TTYPE && sbbuf[1] == TELQUAL_SEND) { size_t tt_len, tb_len; char *tt_out; vtrace("%s %s\n", opt(sbbuf[0]), telquals[sbbuf[1]]); if (lus != NULL && try_lu == NULL) { /* None of the LUs worked. */ connect_error("Cannot connect to specified LU"); return false; } tt_len = strlen(termtype); if (try_lu != NULL && *try_lu) { tt_len += strlen(try_lu) + 1; connected_lu = try_lu; } else { connected_lu = NULL; } tb_len = 4 + tt_len + 2; tt_out = Malloc(tb_len + 1); sprintf(tt_out, "%c%c%c%c%s%s%s%c%c", IAC, SB, TELOPT_TTYPE, TELQUAL_IS, force_ascii(termtype), (try_lu != NULL && *try_lu)? "@": "", (try_lu != NULL && *try_lu)? force_ascii(try_lu) : "", IAC, SE); net_hexnvt_out_framed((unsigned char *)tt_out, tb_len, true); Free(tt_out); vstatus_lu(connected_lu); vtrace("SENT %s %s %s %s%s%s %s\n", cmd(SB), opt(TELOPT_TTYPE), telquals[TELQUAL_IS], termtype, (try_lu != NULL && *try_lu)? "@": "", (try_lu != NULL && *try_lu)? try_lu: "", cmd(SE)); /* Advance to the next LU name. */ next_lu(); } else if (myopts[TELOPT_TN3270E] && sbbuf[0] == TELOPT_TN3270E) { if (tn3270e_negotiate()) { return false; } } else if (sio_supported() && sio != NULL && need_tls_follows && myopts[TELOPT_STARTTLS] && sbbuf[0] == TELOPT_STARTTLS) { continue_tls(sbbuf, (int)(sbptr - sbbuf)); } else if (sbbuf[0] == TELOPT_NEW_ENVIRON && sbbuf[1] == TELQUAL_SEND && appres.new_environ) { unsigned char *reply_buf; size_t reply_buflen; char *trace_in; char *trace_out; if (!telnet_new_environ(sbbuf + 2, (sbptr - sbbuf - 3), &reply_buf, &reply_buflen, &trace_in, &trace_out)) { vtrace("%s %s [error]\n", opt(sbbuf[0]), telquals[sbbuf[1]]); } else { vtrace("%s\n", trace_in); Free(trace_in); net_rawout(reply_buf, reply_buflen); Free(reply_buf); vtrace("SENT %s\n", trace_out); Free(trace_out); } /* * Remember that we did a NEW_ENVIRON SEND, so we won't defer a * future DO TTYPE. */ did_ne_send = true; /* Now respond to DO TTYPE. */ if (deferred_will_ttype && myopts[TELOPT_TTYPE]) { will_opt[2] = TELOPT_TTYPE; net_rawout(will_opt, sizeof(will_opt)); vtrace("SENT %s %s\n", cmd(WILL), opt(TELOPT_TTYPE)); check_in3270(); check_linemode(false); deferred_will_ttype = false; } } } else { telnet_state = TNS_SB; } break; } return true; } /* Send a TN3270E terminal type request. */ static void tn3270e_request(void) { size_t tt_len, tb_len; char *tt_out; char *t; char *xtn; /* Convert 3279 to 3278, per the RFC. */ xtn = NewString(termtype); if (!strncmp(xtn, "IBM-3279", 8)) { xtn[7] = '8'; } tt_len = strlen(termtype); if (try_lu != NULL && *try_lu) { tt_len += strlen(try_lu) + 1; } tb_len = 5 + tt_len + 2; tt_out = Malloc(tb_len + 1); t = tt_out; t += sprintf(tt_out, "%c%c%c%c%c%s", IAC, SB, TELOPT_TN3270E, TN3270E_OP_DEVICE_TYPE, TN3270E_OP_REQUEST, force_ascii(xtn)); if (try_lu != NULL && *try_lu) { t += sprintf(t, "%c%s", TN3270E_OP_CONNECT, force_ascii(try_lu)); } sprintf(t, "%c%c", IAC, SE); net_hexnvt_out_framed((unsigned char *)tt_out, tb_len, true); Free(tt_out); vtrace("SENT %s %s DEVICE-TYPE REQUEST %s%s%s %s\n", cmd(SB), opt(TELOPT_TN3270E), xtn, (try_lu != NULL && *try_lu)? " CONNECT ": "", (try_lu != NULL && *try_lu)? try_lu: "", cmd(SE)); Free(xtn); } /* * Back off of TN3270E. */ static void backoff_tn3270e(const char *why) { vtrace("Aborting TN3270E: %s\n", why); /* Tell the host 'no'. */ wont_opt[2] = TELOPT_TN3270E; net_rawout(wont_opt, sizeof(wont_opt)); vtrace("SENT %s %s\n", cmd(WONT), opt(TELOPT_TN3270E)); /* Restore the LU list; we may need to run it again in TN3270 mode. */ setup_lus(); /* Reset our internal state. */ myopts[TELOPT_TN3270E] = 0; check_in3270(); } /* * Negotiation of TN3270E options. * Returns 0 if okay, -1 if we have to give up altogether. */ static int tn3270e_negotiate(void) { #define LU_MAX 32 static char reported_lu[LU_MAX+1]; static char reported_type[LU_MAX+1]; int sblen; b8_t e_rcvd; /* Find out how long the subnegotiation buffer is. */ for (sblen = 0; ; sblen++) { if (sbbuf[sblen] == SE) { break; } } vtrace("TN3270E "); switch (sbbuf[1]) { case TN3270E_OP_SEND: if (sbbuf[2] == TN3270E_OP_DEVICE_TYPE) { /* Host wants us to send our device type. */ vtrace("SEND DEVICE-TYPE SE\n"); tn3270e_request(); } else { vtrace("SEND ??%u SE\n", sbbuf[2]); } break; case TN3270E_OP_DEVICE_TYPE: /* Device type negotiation. */ vtrace("DEVICE-TYPE "); switch (sbbuf[2]) { case TN3270E_OP_IS: { int tnlen, snlen; /* Device type success. */ /* Isolate the terminal type and session. */ tnlen = 0; while (sbbuf[3+tnlen] != SE && sbbuf[3+tnlen] != TN3270E_OP_CONNECT) { tnlen++; } snlen = 0; if (sbbuf[3+tnlen] == TN3270E_OP_CONNECT) { while(sbbuf[3+tnlen+1+snlen] != SE) { snlen++; } } /* Remember the LU. */ if (tnlen) { if (tnlen > LU_MAX) { tnlen = LU_MAX; } strncpy(reported_type, (char *)&sbbuf[3], tnlen); reported_type[tnlen] = '\0'; force_local(reported_type); connected_type = reported_type; } if (snlen) { if (snlen > LU_MAX) { snlen = LU_MAX; } strncpy(reported_lu, (char *)&sbbuf[3+tnlen+1], snlen); reported_lu[snlen] = '\0'; force_local(reported_lu); connected_lu = reported_lu; } vtrace("IS %s CONNECT %s SE\n", tnlen? connected_type: "", snlen? connected_lu: ""); if (snlen) { vstatus_lu(connected_lu); } /* Tell them what we can do. */ tn3270e_subneg_send(TN3270E_OP_REQUEST, &e_funcs); break; } case TN3270E_OP_REJECT: /* Device type failure. */ vtrace("REJECT REASON %s SE\n", rsn(sbbuf[4])); if (sbbuf[4] == TN3270E_REASON_UNSUPPORTED_REQ) { backoff_tn3270e("Host rejected request type"); break; } next_lu(); if (try_lu != NULL) { /* Try the next LU. */ tn3270e_request(); } else if (lus != NULL) { /* No more LUs to try. Give up. */ backoff_tn3270e("Host rejected resource(s)"); } else { backoff_tn3270e("Device type rejected"); } break; default: vtrace("??%u SE\n", sbbuf[2]); break; } break; case TN3270E_OP_FUNCTIONS: /* Functions negotiation. */ vtrace("FUNCTIONS "); switch (sbbuf[2]) { case TN3270E_OP_REQUEST: /* Host is telling us what functions they want. */ vtrace("REQUEST %s SE\n", tn3270e_function_names(sbbuf+3, sblen-3)); tn3270e_fdecode(sbbuf+3, sblen-3, &e_rcvd); if (b8_none_added(&e_funcs, &e_rcvd)) { /* They want what we want, or less. Done. */ b8_copy(&e_funcs, &e_rcvd); tn3270e_subneg_send(TN3270E_OP_IS, &e_funcs); tn3270e_negotiated = 1; vtrace("TN3270E option negotiation complete.\n"); check_in3270(); } else { /* * They want us to do something we can't. * Request the common subset. */ b8_and(&e_funcs, &e_funcs, &e_rcvd); tn3270e_subneg_send(TN3270E_OP_REQUEST, &e_funcs); } break; case TN3270E_OP_IS: /* They accept our last request, or a subset thereof. */ vtrace("IS %s SE\n", tn3270e_function_names(sbbuf+3, sblen-3)); tn3270e_fdecode(sbbuf+3, sblen-3, &e_rcvd); if (b8_none_added(&e_funcs, &e_rcvd)) { /* They want what we want, or less. Done. */ b8_copy(&e_funcs, &e_rcvd); } else { /* * They've added something. Abandon TN3270E, * they're brain dead. */ backoff_tn3270e("Host illegally added function(s)"); break; } tn3270e_negotiated = 1; vtrace("TN3270E option negotiation complete.\n"); /* * If the host does not support BIND_IMAGE, then we * must go straight to 3270 mode. We do not implicitly * unlock the keyboard, though -- that requires a * Write command from the host. */ if (!b8_bit_is_set(&e_funcs, TN3270E_FUNC_BIND_IMAGE)) { tn3270e_submode = E_3270; } check_in3270(); break; default: vtrace("??%u SE\n", sbbuf[2]); break; } break; default: vtrace("??%u SE\n", sbbuf[1]); } /* Good enough for now. */ return 0; } /* Expand a string of TN3270E function codes into text. */ static const char * tn3270e_function_names(const unsigned char *buf, int len) { int i; static char text_buf[1024]; char *s = text_buf; if (!len) { return("(null)"); } for (i = 0; i < len; i++) { s += sprintf(s, "%s%s", (s == text_buf)? "": " ", fnn(buf[i])); } return text_buf; } /* Expand the current TN3270E function codes into text. */ const char * tn3270e_current_opts(void) { int i; static char text_buf[1024]; char *s = text_buf; if (b8_is_zero(&e_funcs) || !IN_E) { return NULL; } for (i = 0; i < MX8; i++) { if (b8_bit_is_set(&e_funcs, i)) { s += sprintf(s, "%s%s", (s == text_buf)? "": " ", fnn(i)); } } return text_buf; } /* Transmit a TN3270E FUNCTIONS REQUEST or FUNCTIONS IS message. */ static void tn3270e_subneg_send(unsigned char op, b8_t *funcs) { unsigned char proto_buf[7 + MX8]; int proto_len; int i; /* Construct the buffers. */ memcpy(proto_buf, functions_req, 4); proto_buf[4] = op; proto_len = 5; for (i = 0; i < MX8; i++) { if (b8_bit_is_set(funcs, (i))) { proto_buf[proto_len++] = i; } } /* Complete and send out the protocol message. */ proto_buf[proto_len++] = IAC; proto_buf[proto_len++] = SE; net_rawout(proto_buf, proto_len); /* Complete and send out the trace text. */ vtrace("SENT %s %s FUNCTIONS %s %s %s\n", cmd(SB), opt(TELOPT_TN3270E), (op == TN3270E_OP_REQUEST)? "REQUEST": "IS", tn3270e_function_names(proto_buf + 5, proto_len - 7), cmd(SE)); } /* Translate a string of TN3270E functions into a bitmap. */ static void tn3270e_fdecode(const unsigned char *buf, int len, b8_t *r) { int i; b8_zero(r); for (i = 0; i < len; i++) { b8_set_bit(r, buf[i]); } } static int maxru(unsigned char c) { if (!(c & 0x80)) { return 0; } return ((c >> 4) & 0x0f) * (1 << (c & 0xf)); } static void process_bind(unsigned char *buf, size_t buflen) { size_t namelen; size_t dest_ix = 0; /* Save the raw image. */ Replace(bind_image, (unsigned char *)Malloc(buflen)); memcpy(bind_image, buf, buflen); bind_image_len = buflen; /* Clean up the derived state. */ if (plu_name == NULL) { plu_name = Malloc(mb_max_len(BIND_PLU_NAME_MAX + 1)); } memset(plu_name, '\0', mb_max_len(BIND_PLU_NAME_MAX + 1)); maxru_sec = 0; maxru_pri = 0; bind_rd = 0; bind_cd = 0; bind_ra = 0; bind_ca = 0; bind_state = 0; /* Make sure it's a BIND. */ if (buflen < 1 || buf[0] != BIND_RU) { return; } /* Extract the maximum RUs. */ if (buflen > BIND_OFF_MAXRU_SEC) { maxru_sec = maxru(buf[BIND_OFF_MAXRU_SEC]); } if (buflen > BIND_OFF_MAXRU_PRI) { maxru_pri = maxru(buf[BIND_OFF_MAXRU_PRI]); } /* Extract the screen size. */ if (buflen > BIND_OFF_SSIZE) { int bind_ss = buf[BIND_OFF_SSIZE]; switch (bind_ss) { case 0x00: case 0x02: bind_rd = MODEL_2_ROWS; bind_cd = MODEL_2_COLS; bind_ra = MODEL_2_ROWS; bind_ca = MODEL_2_COLS; bind_state = BIND_DIMS_PRESENT | BIND_DIMS_ALT | BIND_DIMS_VALID; break; case 0x03: bind_rd = MODEL_2_ROWS; bind_cd = MODEL_2_COLS; bind_ra = maxROWS; bind_ca = maxCOLS; bind_state = BIND_DIMS_PRESENT | BIND_DIMS_VALID; break; case 0x7e: bind_rd = buf[BIND_OFF_RD]; bind_cd = buf[BIND_OFF_CD]; bind_ra = buf[BIND_OFF_RD]; bind_ca = buf[BIND_OFF_CD]; bind_state = BIND_DIMS_PRESENT | BIND_DIMS_ALT | BIND_DIMS_VALID; break; case 0x7f: bind_rd = buf[BIND_OFF_RD]; bind_cd = buf[BIND_OFF_CD]; bind_ra = buf[BIND_OFF_RA]; bind_ca = buf[BIND_OFF_CA]; bind_state = BIND_DIMS_PRESENT | BIND_DIMS_ALT | BIND_DIMS_VALID; break; default: bind_state = 0; break; } } /* Validate and implement the screen size. */ if (appres.bind_limit && (bind_state & BIND_DIMS_PRESENT)) { if (bind_rd > maxROWS || bind_cd > maxCOLS) { popup_an_error("Ignoring invalid BIND image screen " "size parameters:\n" " BIND Default Rows-Cols %ux%u > Maximum %ux%u", bind_rd, bind_cd, maxROWS, maxCOLS); bind_state &= ~BIND_DIMS_VALID; } else if (bind_rd < MODEL_2_ROWS || bind_cd < MODEL_2_COLS) { popup_an_error("Ignoring invalid BIND image screen " "size parameters:\n" " BIND Default Rows-Cols %ux%u < Minimum %ux%u", bind_rd, bind_cd, MODEL_2_ROWS, MODEL_2_COLS); bind_state &= ~BIND_DIMS_VALID; } else if (bind_ra > maxROWS || bind_ca > maxCOLS) { popup_an_error("Ignoring invalid BIND image screen " "size parameters:\n" " BIND Alternate Rows-Cols %ux%u > Maximum %ux%u", bind_ra, bind_ca, maxROWS, maxCOLS); bind_state &= ~BIND_DIMS_VALID; } else if (bind_ra < MODEL_2_ROWS || bind_ca < MODEL_2_COLS) { popup_an_error("Ignoring invalid BIND image screen " "size parameters:\n" " BIND Alternate Rows-Cols %ux%u < Minimum %ux%u", bind_ra, bind_ca, MODEL_2_ROWS, MODEL_2_COLS); bind_state &= ~BIND_DIMS_VALID; } else { defROWS = bind_rd; defCOLS = bind_cd; altROWS = bind_ra; altCOLS = bind_ca; } } ctlr_erase(false); /* Extract the PLU name. */ if (buflen > BIND_OFF_PLU_NAME_LEN) { namelen = buf[BIND_OFF_PLU_NAME_LEN]; if (namelen > BIND_PLU_NAME_MAX) { namelen = BIND_PLU_NAME_MAX; } if ((namelen > 0) && (buflen > BIND_OFF_PLU_NAME + namelen)) { #if defined(EBCDIC_HOST) /*[*/ memcpy(plu_name, &buf[BIND_OFF_PLU_NAME], namelen); plu_name[namelen] = '\0'; #else /*][*/ size_t i; for (i = 0; i < namelen; i++) { size_t nx; nx = ebcdic_to_multibyte(buf[BIND_OFF_PLU_NAME + i], plu_name + dest_ix, mb_max_len(1)); if (nx > 1) { dest_ix += nx - 1; } } #endif /*]*/ vstatus_lu(plu_name); } } /* A BIND implicitly puts us in 3270 mode. */ tn3270e_submode = E_3270; } /* Decode an UNBIND reason. */ static const char * unbind_reason (unsigned char r) { switch (r) { case TN3270E_UNBIND_NORMAL: return "normal"; case TN3270E_UNBIND_BIND_FORTHCOMING: return "BIND forthcoming"; case TN3270E_UNBIND_VR_INOPERATIVE: return "virtual route inoperative"; case TN3270E_UNBIND_RX_INOPERATIVE: return "route extension inoperative"; case TN3270E_UNBIND_HRESET: return "hierarchical reset"; case TN3270E_UNBIND_SSCP_GONE: return "SSCP gone"; case TN3270E_UNBIND_VR_DEACTIVATED: return "virtual route deactivated"; case TN3270E_UNBIND_LU_FAILURE_PERM: return "unrecoverable LU failure"; case TN3270E_UNBIND_LU_FAILURE_TEMP: return "recoverable LU failure"; case TN3270E_UNBIND_CLEANUP: return "cleanup"; case TN3270E_UNBIND_BAD_SENSE: return "bad sense code or user-supplied sense code"; default: return lazyaf("unknown X'%02x'", r); } } static int process_eor(void) { if (syncing || !(ibptr - ibuf)) { return(0); } if (IN_E) { tn3270e_header *h = (tn3270e_header *)ibuf; unsigned char *s; enum pds rv; vtrace("RCVD TN3270E(%s%s %s %u)\n", e_dt(h->data_type), e_rq(h->data_type, h->request_flag), e_rsp(h->data_type, h->response_flag), h->seq_number[0] << 8 | h->seq_number[1]); switch (h->data_type) { case TN3270E_DT_3270_DATA: if (b8_bit_is_set(&e_funcs, TN3270E_FUNC_BIND_IMAGE) && !tn3270e_bound) { return 0; } tn3270e_submode = E_3270; check_in3270(); response_required = h->response_flag; rv = process_ds(ibuf + EH_SIZE, (ibptr - ibuf) - EH_SIZE); if (rv < 0 && response_required != TN3270E_RSF_NO_RESPONSE) { tn3270e_nak(rv); } else if (rv == PDS_OKAY_NO_OUTPUT && response_required == TN3270E_RSF_ALWAYS_RESPONSE) { tn3270e_ack(); } response_required = TN3270E_RSF_NO_RESPONSE; return 0; case TN3270E_DT_BIND_IMAGE: if (!b8_bit_is_set(&e_funcs, TN3270E_FUNC_BIND_IMAGE)) { return 0; } process_bind(ibuf + EH_SIZE, (ibptr - ibuf) - EH_SIZE); if (bind_state & BIND_DIMS_PRESENT) { if (bind_state & BIND_DIMS_ALT) { trace_ds("< BIND PLU-name '%s' " "MaxSec-RU %d MaxPri-RU %d " "Rows-Cols Default %dx%d " "Alternate %dx%d%s%s\n", plu_name, maxru_sec, maxru_pri, bind_rd, bind_cd, bind_ra, bind_ca, (bind_state & BIND_DIMS_VALID)? "": " (invalid)", appres.bind_limit? "": " (ignored)"); } else { trace_ds("< BIND PLU-name '%s' " "MaxSec-RU %d MaxPri-RU %d " "Rows-Cols Default %dx%d%s%s\n", plu_name, maxru_sec, maxru_pri, bind_rd, bind_cd, (bind_state & BIND_DIMS_VALID)? "": " (invalid)", appres.bind_limit? "": " (ignored)"); } } else { trace_ds("< BIND PLU-name '%s' " "MaxSec-RU %d MaxPri-RU %d\n", plu_name, maxru_sec, maxru_pri); } tn3270e_bound = 1; check_in3270(); return 0; case TN3270E_DT_UNBIND: if (!b8_bit_is_set(&e_funcs, TN3270E_FUNC_BIND_IMAGE)) { return 0; } if ((ibptr - ibuf) > EH_SIZE) { trace_ds("< UNBIND %s\n", unbind_reason(ibuf[EH_SIZE])); } tn3270e_bound = 0; /* Go back to the connected LU. */ vstatus_lu(connected_lu); /* * Undo any screen-sizing effects from a previous BIND. */ defROWS = MODEL_2_ROWS; defCOLS = MODEL_2_COLS; altROWS = maxROWS; altCOLS = maxCOLS; ctlr_erase(false); tn3270e_submode = E_UNBOUND; check_in3270(); return 0; case TN3270E_DT_NVT_DATA: /* In tn3270e NVT mode */ tn3270e_submode = E_NVT; check_in3270(); for (s = ibuf; s < ibptr; s++) { nvt_process(*s++); } return 0; case TN3270E_DT_SSCP_LU_DATA: if (!b8_bit_is_set(&e_funcs, TN3270E_FUNC_BIND_IMAGE)) { return 0; } tn3270e_submode = E_SSCP; check_in3270(); ctlr_write_sscp_lu(ibuf + EH_SIZE, (ibptr - ibuf) - EH_SIZE); return 0; default: /* Should do something more extraordinary here. */ return 0; } } else { process_ds(ibuf, ibptr - ibuf); } return 0; } /* * net_exception * Called when there is an exceptional condition on the socket. */ void net_exception(iosrc_t fd _is_unused, ioid_t id _is_unused) { #if defined(LOCAL_PROCESS) /*[*/ if (local_process) { vtrace("RCVD exception\n"); } else #endif /*[*/ { vtrace("RCVD urgent data indication\n"); if (!syncing) { syncing = 1; x_except_off(); } } } /* * Flavors of Network Output: * * 3270 mode * net_output send a 3270 record * * NVT mode; call each other in turn * net_sendc net_cookout for 1 byte * net_sends net_cookout for a null-terminated string * net_cookout send user data with cooked-mode processing, NVT mode * net_cookedout send user data, NVT mode, already cooked * net_rawout send telnet protocol data, NVT mode * */ /* * net_cookedout * Send user data out in NVT mode, without cooked-mode processing. */ void net_cookedout(const char *buf, size_t len) { if (toggled(TRACING)) { size_t i; vtrace(">"); for (i = 0; i < len; i++) { vtrace(" %s", ctl_see((int)*(buf+i))); } vtrace("\n"); } net_rawout((unsigned const char *)buf, len); } /* * net_cookout * Send output in NVT mode, including cooked-mode processing if * appropriate. */ void net_cookout(const char *buf, size_t len) { if (!IN_NVT || (kybdlock & KL_AWAITING_FIRST)) { return; } if (linemode) { linemode_out(buf, len); } else { net_cookedout(buf, len); } } /* * net_rawout * Send out raw telnet data. We assume that there will always be enough * space to buffer what we want to transmit, so we don't handle EAGAIN or * EWOULDBLOCK. */ static void net_rawout(unsigned const char *buf, size_t len) { int nw; trace_netdata('>', buf, len); while (len) { #if defined(OMTU) /*[*/ size_t n2w = len; int pause = 0; if (n2w > OMTU) { n2w = OMTU; pause = 1; } #else # define n2w len #endif if (secure_connection) { nw = sio_write(sio, (const char *) buf, (int)n2w); } else #if defined(LOCAL_PROCESS) /*[*/ if (local_process) { nw = write(sock, (const char *) buf, (int)n2w); } else #endif /*]*/ { nw = send(sock, (const char *) buf, (int)n2w, 0); } if (nw < 0) { if (secure_connection) { connect_error("%s", sio_last_error()); host_disconnect(false); return; } vtrace("RCVD socket error %d (%s)\n", socket_errno(), socket_strerror(socket_errno())); if (socket_errno() == SE_EPIPE || socket_errno() == SE_ECONNRESET) { host_disconnect(false); return; } else if (socket_errno() == SE_EINTR) { goto bot; } else { popup_a_sockerr("Socket write"); host_disconnect(true); return; } } ns_bsent += nw; stats_poke(); len -= nw; buf += nw; bot: #if defined(OMTU) /*[*/ if (pause) { sleep(1); } #endif /*]*/ ; } } /* * net_hexnvt_out_framed * Send uncontrolled user data to the host in NVT mode, performing IAC * and CR quoting as necessary. */ static void net_hexnvt_out_framed(unsigned char *buf, int len, bool framed) { unsigned char *tbuf; unsigned char *xbuf; bool first = true; if (!len) { return; } if (HOST_FLAG(NO_TELNET_HOST)) { net_rawout(buf, len); return; } /* Expand it. */ tbuf = xbuf = (unsigned char *)Malloc(2*len); while (len) { unsigned char c = *buf++; *tbuf++ = c; len--; if (framed && (first || len == 1)) { /* Don't quote initial IAC or trailing IAC SE. */ first = false; continue; } if (c == IAC) { *tbuf++ = IAC; } else if (c == '\r' && (!len || *buf != '\n')) { *tbuf++ = '\0'; } first = false; } /* Send it to the host. */ net_rawout(xbuf, tbuf - xbuf); Free(xbuf); } /* * net_hexnvt_out * Send uncontrolled user data to the host in NVT mode, performing IAC * and CR quoting as necessary. */ void net_hexnvt_out(unsigned char *buf, int len) { net_hexnvt_out_framed(buf, len, false); } /* * check_in3270 * Check for switches between NVT, SSCP-LU and 3270 modes. */ static void check_in3270(void) { enum cstate new_cstate = NOT_CONNECTED; if (myopts[TELOPT_TN3270E]) { if (!tn3270e_negotiated) { new_cstate = CONNECTED_UNBOUND; } else switch (tn3270e_submode) { case E_UNBOUND: new_cstate = CONNECTED_UNBOUND; break; case E_NVT: new_cstate = CONNECTED_E_NVT; break; case E_3270: new_cstate = CONNECTED_TN3270E; break; case E_SSCP: new_cstate = CONNECTED_SSCP; break; } } else if (myopts[TELOPT_BINARY] && myopts[TELOPT_EOR] && myopts[TELOPT_TTYPE] && hisopts[TELOPT_BINARY] && hisopts[TELOPT_EOR]) { new_cstate = CONNECTED_3270; } else if (cstate == TELNET_PENDING) { /* Nothing has happened, yet. */ return; } else if (appres.nvt_mode || HOST_FLAG(ANSI_HOST)) { new_cstate = linemode? CONNECTED_NVT: CONNECTED_NVT_CHAR; } else { new_cstate = TELNET_PENDING; } if (new_cstate != cstate) { int was_in_e = IN_E; /* * If we've now switched between non-TN3270E mode and * TN3270E mode, reset the LU list so we can try again * in the new mode. */ if (lus != NULL && was_in_e != IN_E) { curr_lu = lus; try_lu = *curr_lu; } /* Allocate the initial 3270 input buffer. */ if (new_cstate >= TELNET_PENDING && !ibuf_size) { ibuf = (unsigned char *)Malloc(BUFSIZ); ibuf_size = BUFSIZ; ibptr = ibuf; } /* Reinitialize line mode. */ if ((new_cstate == CONNECTED_NVT && linemode) || new_cstate == CONNECTED_E_NVT) { linemode_buf_init(); } /* If we fell out of TN3270E, remove the state. */ if (!myopts[TELOPT_TN3270E]) { tn3270e_negotiated = 0; tn3270e_submode = E_UNBOUND; tn3270e_bound = 0; } vtrace("Now operating in %s mode.\n", state_name[new_cstate]); if (FULL_SESSION) { any_host_data = true; } host_in3270(new_cstate); } } /* * store3270in * Store a character in the 3270 input buffer, checking for buffer * overflow and reallocating ibuf if necessary. */ static void store3270in(unsigned char c) { if (ibptr - ibuf >= ibuf_size) { ibuf_size += BUFSIZ; ibuf = (unsigned char *)Realloc((char *)ibuf, ibuf_size); ibptr = ibuf + ibuf_size - BUFSIZ; } *ibptr++ = c; } /* * space3270out * Ensure that more characters will fit in the 3270 output buffer. * Allocates the buffer in BUFSIZ chunks. * Allocates hidden space at the front of the buffer for TN3270E. */ void space3270out(size_t n) { size_t nc = 0; /* amount of data currently in obuf */ unsigned more = 0; if (obuf_size) { nc = obptr - obuf; } while ((nc + n + EH_SIZE) > (obuf_size + more)) { more += BUFSIZ; } if (more) { obuf_size += more; obuf_base = (unsigned char *)Realloc((char *)obuf_base, obuf_size); obuf = obuf_base + EH_SIZE; obptr = obuf + nc; } } /* * check_linemode * Set the global variable 'linemode', which says whether we are in * character-by-character mode or line mode. */ static void check_linemode(bool init) { bool wasline = linemode; if (local_process) { linemode = false; } else if (HOST_FLAG(NO_TELNET_HOST)) { linemode = (ntim == NTIM_LINE); } else { /* * The next line is a deliberate kluge to effectively ignore the SGA * option. If the host will echo for us, we assume * character-at-a-time; otherwise we assume fully cooked by us. * * This allows certain IBM hosts which volunteer SGA but refuse * ECHO to operate more-or-less normally, at the expense of * implementing the (hopefully useless) "character-at-a-time, local * echo" mode. * * We still implement "switch to line mode" and "switch to character * mode" properly by asking for both SGA and ECHO to be off or on, but * we basically ignore the reply for SGA. */ linemode = !hisopts[TELOPT_ECHO] /* && !hisopts[TELOPT_SGA] */; } if (init || linemode != wasline) { if (cstate == CONNECTED_NVT || cstate == CONNECTED_NVT_CHAR) { host_in3270(linemode? CONNECTED_NVT: CONNECTED_NVT_CHAR); } st_changed(ST_LINE_MODE, linemode); if (!init) { vtrace("Operating in %s mode.\n", linemode? "line": "character-at-a-time"); } if (IN_NVT) { if (linemode) { linemode_buf_init(); } else { linemode_dump(); } } } /* Set output newline expansion. */ charmode_onlcr = !local_process && HOST_FLAG(NO_TELNET_HOST) && ntim == NTIM_CHARACTER_CRLF; } /* * nnn * Expands a number to a character string, for displaying unknown telnet * commands and options. */ static const char * nnn(int c) { return lazyaf("%d", c); } /* * cmd * Expands a TELNET command into a character string. */ const char * cmd(int c) { if (TELCMD_OK(c)) { return TELCMD(c); } else { return nnn(c); } } /* * opt * Expands a TELNET option into a character string. */ const char * opt(unsigned char c) { if (TELOPT_OK(c)) { return TELOPT(c); } else if (c == TELOPT_TN3270E) { return "TN3270E"; } else if (c == TELOPT_STARTTLS) { return "START-TLS"; } else { return nnn((int)c); } } #define LINEDUMP_MAX 32 void trace_netdata(char direction, unsigned const char *buf, size_t len) { size_t offset; if (!toggled(TRACING)) { return; } for (offset = 0; offset < len; offset++) { if (!(offset % LINEDUMP_MAX)) { ntvtrace("%s%c 0x%-3x ", (offset? "\n": ""), direction, (unsigned)offset); } ntvtrace("%02x", buf[offset]); } ntvtrace("\n"); } /* * net_output * Send 3270 output over the network: * - Prepend TN3270E header * - Expand IAC to IAC IAC * - Append IAC EOR */ void net_output(void) { static unsigned char *xobuf = NULL; static int xobuf_len = 0; int need_resize = 0; unsigned char *nxoptr, *xoptr; #define BSTART ((IN_TN3270E || IN_SSCP)? obuf_base: obuf) /* Set the TN3720E header. */ if (IN_TN3270E || IN_SSCP) { tn3270e_header *h = (tn3270e_header *)obuf_base; /* Check for sending a TN3270E response. */ if (response_required == TN3270E_RSF_ALWAYS_RESPONSE) { tn3270e_ack(); response_required = TN3270E_RSF_NO_RESPONSE; } /* Set the outbound TN3270E header. */ h->data_type = IN_TN3270E? TN3270E_DT_3270_DATA: TN3270E_DT_SSCP_LU_DATA; h->request_flag = 0; h->response_flag = 0; h->seq_number[0] = (e_xmit_seq >> 8) & 0xff; h->seq_number[1] = e_xmit_seq & 0xff; vtrace("SENT TN3270E(%s NO-RESPONSE %u)\n", IN_TN3270E? "3270-DATA": "SSCP-LU-DATA", e_xmit_seq); if (b8_bit_is_set(&e_funcs, TN3270E_FUNC_RESPONSES)) { e_xmit_seq = (e_xmit_seq + 1) & 0x7fff; } } /* Reallocate the expanded output buffer. */ while (xobuf_len < (obptr - BSTART + 1) * 2) { xobuf_len += BUFSZ; need_resize++; } if (need_resize) { Replace(xobuf, (unsigned char *)Malloc(xobuf_len)); } /* Copy and expand IACs. */ xoptr = xobuf; nxoptr = BSTART; while (nxoptr < obptr) { if ((*xoptr++ = *nxoptr++) == IAC) { *xoptr++ = IAC; } } /* Append the IAC EOR and transmit. */ *xoptr++ = IAC; *xoptr++ = EOR; net_rawout(xobuf, xoptr - xobuf); vtrace("SENT EOR\n"); ns_rsent++; stats_poke(); #undef BSTART } /* Send a TN3270E positive response to the server. */ static void tn3270e_ack(void) { unsigned char rsp_buf[10]; tn3270e_header *h_in = (tn3270e_header *)ibuf; int rsp_len = 0; rsp_len = 0; rsp_buf[rsp_len++] = TN3270E_DT_RESPONSE; /* data_type */ rsp_buf[rsp_len++] = 0; /* request_flag */ rsp_buf[rsp_len++] = TN3270E_RSF_POSITIVE_RESPONSE; /* response_flag */ rsp_buf[rsp_len++] = h_in->seq_number[0]; /* seq_number[0] */ if (h_in->seq_number[0] == IAC) { rsp_buf[rsp_len++] = IAC; } rsp_buf[rsp_len++] = h_in->seq_number[1]; /* seq_number[1] */ if (h_in->seq_number[1] == IAC) { rsp_buf[rsp_len++] = IAC; } rsp_buf[rsp_len++] = TN3270E_POS_DEVICE_END; rsp_buf[rsp_len++] = IAC; rsp_buf[rsp_len++] = EOR; vtrace("SENT TN3270E(RESPONSE POSITIVE-RESPONSE %u) DEVICE-END\n", h_in->seq_number[0] << 8 | h_in->seq_number[1]); net_rawout(rsp_buf, rsp_len); } /* Send a TN3270E negative response to the server. */ static void tn3270e_nak(enum pds rv) { unsigned char rsp_buf[10]; tn3270e_header *h_in = (tn3270e_header *)ibuf; int rsp_len = 0; char *neg = NULL; rsp_buf[rsp_len++] = TN3270E_DT_RESPONSE; /* data_type */ rsp_buf[rsp_len++] = 0; /* request_flag */ rsp_buf[rsp_len++] = TN3270E_RSF_NEGATIVE_RESPONSE; /* response_flag */ rsp_buf[rsp_len++] = h_in->seq_number[0]; /* seq_number[0] */ if (h_in->seq_number[0] == IAC) { rsp_buf[rsp_len++] = IAC; } rsp_buf[rsp_len++] = h_in->seq_number[1]; /* seq_number[1] */ if (h_in->seq_number[1] == IAC) { rsp_buf[rsp_len++] = IAC; } switch (rv) { default: case PDS_BAD_CMD: rsp_buf[rsp_len++] = TN3270E_NEG_COMMAND_REJECT; neg = "COMMAND-REJECT"; break; case PDS_BAD_ADDR: rsp_buf[rsp_len++] = TN3270E_NEG_OPERATION_CHECK; neg = "OPERATION-CHECK"; break; } rsp_buf[rsp_len++] = IAC; rsp_buf[rsp_len++] = EOR; vtrace("SENT TN3270E(RESPONSE NEGATIVE-RESPONSE %u) %s\n", h_in->seq_number[0] << 8 | h_in->seq_number[1], neg); net_rawout(rsp_buf, rsp_len); } /* Add a dummy TN3270E header to the output buffer. */ bool net_add_dummy_tn3270e(void) { tn3270e_header *h; if (!IN_E || tn3270e_submode == E_UNBOUND) { return false; } space3270out(EH_SIZE); h = (tn3270e_header *)obptr; switch (tn3270e_submode) { case E_UNBOUND: break; case E_NVT: h->data_type = TN3270E_DT_NVT_DATA; break; case E_SSCP: h->data_type = TN3270E_DT_SSCP_LU_DATA; break; case E_3270: h->data_type = TN3270E_DT_3270_DATA; break; } h->request_flag = 0; h->response_flag = TN3270E_RSF_NO_RESPONSE; h->seq_number[0] = 0; h->seq_number[1] = 0; obptr += EH_SIZE; return true; } /* * Add IAC EOR to a buffer. */ void net_add_eor(unsigned char *buf, size_t len) { buf[len++] = IAC; buf[len++] = EOR; } /* * net_sendc * Send a character of user data over the network in NVT mode. */ void net_sendc(char c) { if (c == '\r' && !local_process) { if (HOST_FLAG(NO_TELNET_HOST) && ntim == NTIM_CHARACTER_CRLF) { net_cookout("\n", 1); return; } if (!linemode) { /* CR must be quoted */ net_cookout("\r\0", 2); return; } } net_cookout(&c, 1); } /* * net_sends * Send a null-terminated string of user data in NVT mode. */ void net_sends(const char *s) { if (strlen(s) == 1 && *s == '\r' && !local_process) { if (HOST_FLAG(NO_TELNET_HOST) && ntim == NTIM_CHARACTER_CRLF) { net_cookout("\n", 1); return; } if (!linemode) { /* CR must be quoted */ net_cookout("\r\0", 2); return; } } net_cookout(s, strlen(s)); } /* * External entry points to negotiate line or character mode. */ void net_linemode(void) { if (!IN_NVT) { return; } if (!HOST_FLAG(NO_TELNET_HOST)) { if (hisopts[TELOPT_ECHO]) { dont_opt[2] = TELOPT_ECHO; net_rawout(dont_opt, sizeof(dont_opt)); vtrace("SENT %s %s\n", cmd(DONT), opt(TELOPT_ECHO)); } if (hisopts[TELOPT_SGA]) { dont_opt[2] = TELOPT_SGA; net_rawout(dont_opt, sizeof(dont_opt)); vtrace("SENT %s %s\n", cmd(DONT), opt(TELOPT_SGA)); } } else { hisopts[TELOPT_ECHO] = 0; hisopts[TELOPT_SGA] = 0; check_linemode(false); } } void net_charmode(void) { if (!IN_NVT) { return; } if (!HOST_FLAG(NO_TELNET_HOST)) { if (!hisopts[TELOPT_ECHO]) { do_opt[2] = TELOPT_ECHO; net_rawout(do_opt, sizeof(do_opt)); vtrace("SENT %s %s\n", cmd(DO), opt(TELOPT_ECHO)); } if (!hisopts[TELOPT_SGA]) { do_opt[2] = TELOPT_SGA; net_rawout(do_opt, sizeof(do_opt)); vtrace("SENT %s %s\n", cmd(DO), opt(TELOPT_SGA)); } } else { hisopts[TELOPT_ECHO] = 1; hisopts[TELOPT_SGA] = 1; check_linemode(false); } } /* * net_break * Send telnet break, which is used to implement 3270 ATTN. * */ void net_break(char c) { if (!HOST_FLAG(NO_TELNET_HOST)) { static unsigned char buf[] = { IAC, BREAK }; /* I don't know if we should first send TELNET synch ? */ net_rawout(buf, sizeof(buf)); vtrace("SENT BREAK\n"); } else if (c != '\0') { net_rawout((unsigned char *)&c, 1); } } /* * net_interrupt * Send telnet IP. * */ void net_interrupt(char c) { if (!HOST_FLAG(NO_TELNET_HOST)) { static unsigned char buf[] = { IAC, IP }; /* I don't know if we should first send TELNET synch ? */ net_rawout(buf, sizeof(buf)); vtrace("SENT IP\n"); } else if (c != '\0') { net_rawout((unsigned char *)&c, 1); } } /* * net_abort * Send telnet AO. * */ void net_abort(void) { static unsigned char buf[] = { IAC, AO }; if (b8_bit_is_set(&e_funcs, TN3270E_FUNC_SYSREQ)) { /* * I'm not sure yet what to do here. Should the host respond * to the AO by sending us SSCP-LU data (and putting us into * SSCP-LU mode), or should we put ourselves in it? * Time, and testers, will tell. */ switch (tn3270e_submode) { case E_UNBOUND: case E_NVT: break; case E_SSCP: net_rawout(buf, sizeof(buf)); vtrace("SENT AO\n"); if (tn3270e_bound || !b8_bit_is_set(&e_funcs, TN3270E_FUNC_BIND_IMAGE)) { tn3270e_submode = E_3270; check_in3270(); } break; case E_3270: net_rawout(buf, sizeof(buf)); vtrace("SENT AO\n"); tn3270e_submode = E_SSCP; check_in3270(); break; } } } /* * Construct a string to reproduce the current TELNET options. * Returns a bool indicating whether it is necessary. */ bool net_snap_options(void) { bool any = false; int i; static unsigned char ttype_str[] = { IAC, DO, TELOPT_TTYPE, IAC, SB, TELOPT_TTYPE, TELQUAL_SEND, IAC, SE }; if (!CONNECTED) { return false; } obptr = obuf; /* Do TTYPE first. */ if (myopts[TELOPT_TTYPE]) { unsigned j; space3270out(sizeof(ttype_str)); for (j = 0; j < sizeof(ttype_str); j++) { *obptr++ = ttype_str[j]; } } /* Do the other options. */ for (i = 0; i < N_OPTS; i++) { space3270out(6); if (i == TELOPT_TTYPE) { continue; } if (hisopts[i]) { *obptr++ = IAC; *obptr++ = WILL; *obptr++ = (unsigned char)i; any = true; } if (myopts[i]) { *obptr++ = IAC; *obptr++ = DO; *obptr++ = (unsigned char)i; any = true; } } /* If we're in TN3270E mode, snap the subnegotations as well. */ if (myopts[TELOPT_TN3270E]) { any = true; space3270out(5 + ((connected_type != NULL)? strlen(connected_type): 0) + ((connected_lu != NULL)? + strlen(connected_lu): 0) + 2); *obptr++ = IAC; *obptr++ = SB; *obptr++ = TELOPT_TN3270E; *obptr++ = TN3270E_OP_DEVICE_TYPE; *obptr++ = TN3270E_OP_IS; if (connected_type != NULL) { memcpy(obptr, connected_type, strlen(connected_type)); obptr += strlen(connected_type); } if (connected_lu != NULL) { *obptr++ = TN3270E_OP_CONNECT; memcpy(obptr, connected_lu, strlen(connected_lu)); obptr += strlen(connected_lu); } *obptr++ = IAC; *obptr++ = SE; space3270out(38); memcpy(obptr, functions_req, 4); obptr += 4; *obptr++ = TN3270E_OP_IS; for (i = 0; i < MX8; i++) { if (b8_bit_is_set(&e_funcs, i)) { *obptr++ = i; } } *obptr++ = IAC; *obptr++ = SE; if (tn3270e_bound) { tn3270e_header *h; size_t i; int xlen = 0; for (i = 0; i < bind_image_len; i++) { if (bind_image[i] == 0xff) xlen++; } space3270out(EH_SIZE + bind_image_len + xlen + 3); h = (tn3270e_header *)obptr; h->data_type = TN3270E_DT_BIND_IMAGE; h->request_flag = 0; h->response_flag = 0; h->seq_number[0] = 0; h->seq_number[1] = 0; obptr += EH_SIZE; for (i = 0; i < bind_image_len; i++) { if (bind_image[i] == 0xff) { *obptr++ = 0xff; } *obptr++ = bind_image[i]; } *obptr++ = IAC; *obptr++ = EOR; } } return any; } /* * Set blocking/non-blocking mode on the socket. On error, pops up an error * message, but does not close the socket. */ static int non_blocking(bool on) { #if !defined(BLOCKING_CONNECT_ONLY) /*[*/ # if defined(FIONBIO) /*[*/ IOCTL_T i = on? 1: 0; vtrace("Making host socket %sblocking\n", on? "non-": ""); if (sock == INVALID_SOCKET) { return 0; } if (SOCK_IOCTL(sock, FIONBIO, &i) < 0) { popup_a_sockerr("ioctl(FIONBIO, %d)", on); return -1; } # else /*][*/ int f; vtrace("Making host socket %sblocking\n", on? "non-": ""); if (sock == INVALID_SOCKET) { return 0; } if ((f = fcntl(sock, F_GETFL, 0)) == -1) { connect_errno(errno, "fcntl(F_GETFL)"); return -1; } if (on) { f |= O_NDELAY; } else { f &= ~O_NDELAY; } if (fcntl(sock, F_SETFL, f) < 0) { connect_errno(errno, "fcntl(F_SETFL)"); return -1; } # endif /*]*/ #endif /*]*/ return 0; } /* Continue TLS negotiation in response to a STARTTLS. */ static void net_starttls_continue(void) { sio_negotiate_ret_t ret; bool data = false; char *session, *cert; /* Negotiate the session. */ ret = sio_negotiate(sio, sock, hostname, &data); if (ret == SIG_FAILURE) { connect_error("%s", sio_last_error()); host_disconnect(true); return; } if (ret == SIG_WANTMORE) { vtrace("Need more TLS data\n"); if (starttls_pending == NOT_CONNECTED) { starttls_pending = cstate; change_cstate(TLS_PENDING, "net_starttls_continue"); } return; } secure_connection = true; /* Success. */ session = indent_s(sio_session_info(sio)); cert = indent_s(sio_server_cert_info(sio)); vtrace("TLS negotiated connection complete. " "Connection is now secure.\n" "Provider: %s\n" "Session:\n%s\nServer certificate:\n%s\n", sio_provider(), session, cert); Free(session); Free(cert); st_changed(ST_SECURE, true); if (starttls_pending == TELNET_PENDING) { /* * TLS negotiation happened before 3270 negotiation (which is the usual * case). Tell the world that we are (still) connected, now in secure * mode. */ host_connected(); } else { /* * The host negotiated TLS while in some other state. Try to restore * it. */ if (cHALF_CONNECTED(starttls_pending)) { st_changed(ST_NEGOTIATING, true); } else { st_changed(ST_3270_MODE, true); } } starttls_pending = NOT_CONNECTED; if (data) { /* Got extra data with the negotiation. */ vtrace("Reading extra data after negotiation\n"); net_input(INVALID_IOSRC, NULL_IOID); } } /* Process a STARTTLS subnegotiation. */ static void continue_tls(unsigned char *sbbuf, int len) { /* Whatever happens, we're not expecting another SB STARTTLS. */ need_tls_follows = false; /* Make sure the option is FOLLOWS. */ if (len < 2 || sbbuf[1] != TLS_FOLLOWS) { /* Trace the junk. */ vtrace("%s ? %s\n", opt(TELOPT_STARTTLS), cmd(SE)); connect_error("TLS negotiation failure"); host_disconnect(true); return; } /* Trace what we got. */ vtrace("%s FOLLOWS %s\n", opt(TELOPT_STARTTLS), cmd(SE)); /* Negotiate. */ net_starttls_continue(); } /* Return the current BIND application name, if any. */ const char * net_query_bind_plu_name(void) { /* * Return the PLU name, if we're in TN3270E 3270 mode and have * negotiated the BIND-IMAGE option. */ if ((cstate == CONNECTED_TN3270E) && b8_bit_is_set(&e_funcs, TN3270E_FUNC_BIND_IMAGE)) { return plu_name? plu_name: ""; } else { return ""; } } /* Return the current connection state. */ const char * net_query_connection_state(void) { return state_name[cstate]; } /* Return the LU name. */ const char * net_query_lu_name(void) { if (CONNECTED && connected_lu != NULL) { return connected_lu; } else { return ""; } } /* Return the hostname and port. */ const char * net_query_host(void) { if (CONNECTED) { #if defined(LOCAL_PROCESS) /*[*/ if (local_process) { return lazyaf("process %s", hostname); } #endif /*]*/ return lazyaf("host %s %u", hostname, current_port); } else { return ""; } } /* Return the TLS state. */ const char * net_query_tls(void) { static char *not_secure = "not secure"; if (CONNECTED) { if (!secure_connection) { return not_secure; } return lazyaf("secure %s", net_secure_unverified()? "host-unverified": "host-verified"); } else { return ""; } } /* Return the local address for the socket. */ int net_getsockname(void *buf, int *len) { if (sock == INVALID_SOCKET) { return -1; } return getsockname(sock, buf, (socklen_t *)(void *)len); } /* Return a text version of the current proxy type, or NULL. */ const char * net_proxy_type(void) { if (proxy_type != PT_NONE) { return proxy_type_name(proxy_type); } else { return NULL; } } /* Return the current proxy user, or NULL. */ const char * net_proxy_user(void) { if (proxy_type != PT_NONE) { return proxy_user; } else { return NULL; } } /* Return the current proxy host, or NULL. */ const char * net_proxy_host(void) { if (proxy_type != PT_NONE) { return proxy_host; } else { return NULL; } } /* Return the current proxy port, or NULL. */ const char * net_proxy_port(void) { if (proxy_type != PT_NONE) { return proxy_portname; } else { return NULL; } } /* Return the SNA binding state. */ bool net_bound(void) { return (IN_E && tn3270e_bound); } /* Format TELNET options. */ static const char * net_opts(unsigned char opts[]) { int i; char *ret = NULL; size_t sl = 0; for (i = 0; i < N_OPTS; i++) { if (opts[i]) { const char *o = opt(i); ret = (char *)Realloc(ret, sl + 1 + strlen(o) + 1); if (sl) { ret[sl++] = ' '; } strcpy(ret + sl, o); sl += strlen(o); } } return ret; } /* Return my TELNET options. */ const char * net_myopts(void) { return net_opts(myopts); } /* Return his TELNET options. */ const char * net_hisopts(void) { return net_opts(hisopts); } /* * Set the default termtype. * * This is called at init time, whenever we disconnect, and whenever the screen * dimensions change (which by definition happens while we are disconnected). * It sets 'termtype' to the default value, assuming an extended data stream * host. When we connect to a particular host, we may use a different value * (such as without the -E, for the S: prefix). */ void net_set_default_termtype(void) { if (appres.termname) { termtype = appres.termname; } else if (appres.nvt_mode || HOST_FLAG(ANSI_HOST)) { termtype = "xterm"; } else if (ov_rows || ov_cols) { termtype = "IBM-DYNAMIC"; } else if (HOST_FLAG(STD_DS_HOST)) { snprintf(ttype_tmpval, sizeof(ttype_tmpval), "IBM-327%c-%d", mode.m3279? '9': '8', model_num); termtype = ttype_tmpval; } else { termtype = full_model_name; } st_changed(ST_TERMINAL_NAME, true); } /* Handle an ST_REMODEL indication. */ static void net_remodel(bool ignored _is_unused) { net_set_default_termtype(); } bool net_secure_unverified(void) { return secure_connection && sio_secure_unverified(sio); } const char * net_session_info(void) { if (sio == NULL) { return NULL; } return sio_session_info(sio); } const char * net_server_cert_info(void) { if (sio == NULL) { return NULL; } return sio_server_cert_info(sio); } const char * net_server_subject_names(void) { if (sio == NULL) { return NULL; } return sio_server_subject_names(sio); } bool net_secure_connection(void) { return secure_connection; } unsigned net_sio_supported(void) { return sio_supported(); } const char * net_sio_provider(void) { return sio_provider(); } /* * Change the NOP transmit interval. */ void net_nop_seconds(void) { /* Cancel first. */ if (nop_timeout_id != NULL_IOID) { RemoveTimeOut(nop_timeout_id); nop_timeout_id = NULL_IOID; } if (appres.nop_seconds == 0) { return; } /* Restart with the new interval. */ if (cstate >= TELNET_PENDING) { nop_timeout_id = AddTimeOut(appres.nop_seconds * 1000, send_nop); } } /* Break NVT data tracing. */ void net_nvt_break(void) { if (nvt_data) { vtrace("\n"); nvt_data = 0; } } /* Toggle line mode. */ static bool toggle_linemode(const char *name, const char *value) { bool v; const char *errmsg; if (!IN_NVT || HOST_FLAG(NO_TELNET_HOST)) { popup_an_error("Can only change %s in NVT mode", LINEMODE_NAME); return false; } errmsg = boolstr(value, &v); if (errmsg != NULL) { popup_an_error("%s %s", LINEMODE_NAME, errmsg); return false; } if (v) { net_linemode(); } else { net_charmode(); } return true; } /* Canonicalization for no-TELNET input mode. */ static char * canonicalize_ntim(const char *value) { int i; if (value == NULL) { return NULL; } for (i = 0; ntim_name[i] != NULL; i++) { if (!strcasecmp(value, ntim_name[i])) { return NewString(ntim_name[i]); } } return NewString("?"); } /* Parse a no-TELNET input mode value. */ static ntim_t parse_ntim(const char *value) { int i; /* Validate and translate the value. */ for (i = 0; ntim_name[i] != NULL; i++) { if (!strcasecmp(value, ntim_name[i])) { return (ntim_t)i; } } return NTIM_UNKNOWN; } /* Toggle no-TELNET input mode. */ static bool toggle_ntim(const char *name, const char *value) { ntim_t n; /* Validate and translate the value. */ n = parse_ntim(value); if (n == NTIM_UNKNOWN) { popup_an_error("Invalid %s value '%s'", ResNoTelnetInputMode, value); return false; } /* Implement it. */ ntim = n; Replace(appres.interactive.no_telnet_input_mode, NewString(value)); if (CONNECTED && HOST_FLAG(NO_TELNET_HOST)) { check_linemode(false); } return true; } /* Module registration. */ void net_register(void) { /* Register for state changes. */ register_schange(ST_REMODEL, net_remodel); /* Register extended toggles. */ register_extended_toggle(LINEMODE_NAME, toggle_linemode, NULL, NULL, (void **)&linemode, XRM_BOOLEAN); register_extended_toggle(ResNoTelnetInputMode, toggle_ntim, NULL, canonicalize_ntim, (void **)&appres.interactive.no_telnet_input_mode, XRM_STRING); } suite3270-4.1/Common/telnet_gui_stubs.c000066400000000000000000000033231413735575200200130ustar00rootroot00000000000000/* * Copyright (c) 2015 Paul Mattes. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the names of Paul Mattes nor the names of his contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO * EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * telnet_gui_stubs.c * Stubs for TELNET GUI functions. */ #include "globals.h" #include "telnet_gui.h" void telnet_gui_connecting(const char *hostname _is_unused, const char *portname _is_unused) { } suite3270-4.1/Common/telnet_new_environ.c000066400000000000000000000324341413735575200203450ustar00rootroot00000000000000/* * Copyright (c) 2017 Paul Mattes. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of Paul Mattes nor his contributors may be used to * endorse or promote products derived from this software without * specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO * EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * OTHERWISE) ARISING IN ANY WAY OUT OF THE US* OF THIS SOFTWARE, EVEN IF * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * telnet_new_environ.c * The TELNET NEW-ENVIRON option (RFC 1572). */ #include "globals.h" #include "arpa_telnet.h" #include "tn3270e.h" #include "3270ds.h" #include "appres.h" #include "lazya.h" #include "sio.h" #include "telnet.h" #include "telnet_core.h" #include "telnet_private.h" #include "trace.h" #include "utils.h" #include "varbuf.h" #define ESCAPED(c) \ (c == TELOBJ_VAR || c == TELOBJ_USERVAR || c == TELOBJ_ESC || \ c == TELOBJ_VALUE) #define USER_VARNAME "USER" #define DEVNAME_USERVARNAME "DEVNAME" /* Globals */ /* Statics */ static const char *telobjs[4] = { "VAR", "VALUE", "ESC", "USERVAR" }; /* An environment variable. */ typedef struct { llist_t list; char *name; size_t name_len; char *value; size_t value_len; } environ_t; static llist_t vars = LLIST_INIT(vars); static llist_t uservars = LLIST_INIT(uservars); /* A request. */ typedef struct { llist_t list; int group; /* TELOBJ_VAR or TELOBJ_USERVAR */ char *name; /* Variable name (including escapes), or NULL for all */ size_t name_len; /* Name length */ } ereq_t; /* Compute the length of a quoted environment name or value. */ size_t escaped_len(const char *s, size_t len) { size_t ret = 0; while (len--) { char c = *s++; ret += 1 + ESCAPED(c); } return ret; } /* Copy and quote an environment name or value. */ void escaped_copy(char *to, const char *from, size_t len) { while (len--) { char c = *from++; if (ESCAPED(c)) { *to++ = TELOBJ_ESC; } *to++ = c; } } /* Add a value to an environment list. */ static void add_environ(llist_t *list, const char *name, size_t name_len, const char *value, size_t value_len) { size_t name_xlen = escaped_len(name, name_len); size_t value_xlen = escaped_len(value, value_len); /* Add it to the list. */ environ_t *e = (environ_t *)Malloc(sizeof(environ_t) + name_xlen + value_xlen); e->name = (char *)(e + 1); escaped_copy(e->name, name, name_len); e->name_len = name_xlen; e->value = e->name + name_xlen; escaped_copy(e->value, value, value_len); e->value_len = value_xlen; llist_init(&e->list); llist_insert_before(&e->list, list); } /* * Find a value on an environment list. * Returns it in escaped format. */ static environ_t * find_environ(llist_t *list, const char *name, size_t namelen) { environ_t *e; /* We have no variables with embedded nulls in their names. */ if (memchr(name, 0, namelen) != NULL) { return NULL; } /* Search for a match. */ FOREACH_LLIST(list, e, environ_t *) { if (!memcmp(name, e->name, namelen)) { return e; } } FOREACH_LLIST_END(list, e, environ_t *); return NULL; } /* Initialize the NEW-ENVIRON variables. */ void environ_init(void) { static bool initted = false; char *user; if (initted) { return; } initted = true; user = appres.user? appres.user: getenv("USER"); if (user == NULL) { user = getenv("USERNAME"); } if (user == NULL) { user = "UNKNOWN"; } add_environ(&vars, USER_VARNAME, strlen(USER_VARNAME), user, strlen(user)); if (appres.devname != NULL) { add_environ(&uservars, DEVNAME_USERVARNAME, strlen(DEVNAME_USERVARNAME), appres.devname, strlen(appres.devname)); } } /* Expand a name into a readable string. */ static char * expand_name(const char *s, size_t len) { varbuf_t v; unsigned char c; vb_init(&v); while (len--) { c = (unsigned char)*s++; if (c == TELOBJ_ESC) { if (len == 1) { break; } c = (unsigned char)*s++; len--; } if (c == '\\') { vb_appends(&v, "\\\\"); } else if (c < ' ' || c >= 0x7f) { vb_appendf(&v, "\\u%04x", c); } else { vb_append(&v, (char *)&c, 1); } } return lazya(vb_consume(&v)); } /* Expand IACs in a reply buffer. */ static void expand_iac(const unsigned char *raw, size_t raw_len, unsigned char **result, size_t *result_len) { int iacs = 0; const unsigned char *remain = raw; size_t remain_len = raw_len; void *iac; unsigned char *out; while ((iac = memchr(remain, IAC, remain_len)) != NULL) { iacs++; remain = (unsigned char *)iac + 1; if (remain >= raw + raw_len) { break; } remain_len = (raw + raw_len) - remain; } *result_len = raw_len + iacs; *result = Malloc(*result_len); out = *result; while (raw_len--) { unsigned char c = *raw++; if (c == IAC) { *out++ = IAC; } *out++ = c; } } /* * Parse the TELNET NEW-ENVIRON option. * * @param[in] request_buf TELNET IAC SB buffer. Leading IAC SB * NEW-ENVIRON SEND and trailing IAC SE have been * removed. Embedded IACs have been removed. * @param[in] request_buflen Length of the request buffer. * @param[out] fake_input Returned true if input was faked (empty * request). * @returns List of requests, or null if there was an error. */ static llist_t * parse_new_environ(unsigned char *request_buf, size_t request_buflen, bool *fake_input) { size_t i; enum { EE_BASE, /* base state */ EE_VAR, /* VAR or USERVAR seen */ EE_NAME, /* name character seen */ EE_NAME_ESC /* ESC seen in name */ } state = EE_BASE; static llist_t ereqs; /* returned parsed request */ ereq_t *ereq = NULL; /* current request (group or variable) */ *fake_input = false; llist_init(&ereqs); /* Parse the input into a series of requests. */ for (i = 0; i < request_buflen; i++) { unsigned char c = request_buf[i]; switch (state) { case EE_BASE: switch (c) { case TELOBJ_VAR: case TELOBJ_USERVAR: /* New request is pending. */ ereq = (ereq_t *)Malloc(sizeof(ereq_t)); memset(ereq, 0, sizeof(ereq_t)); llist_init(&ereq->list); ereq->group = c; state = EE_VAR; break; default: /* Only those two are allowed. */ return NULL; break; } break; case EE_VAR: switch (c) { case TELOBJ_VAR: case TELOBJ_USERVAR: /* The previous request is done. */ llist_insert_before(&ereq->list, &ereqs); /* Start a new one. */ ereq = (ereq_t *)Malloc(sizeof(ereq_t)); memset(ereq, 0, sizeof(ereq_t)); llist_init(&ereq->list); ereq->group = c; break; default: ereq->name = Malloc(1); ereq->name[0] = c; ereq->name_len = 1; state = (c == TELOBJ_ESC)? EE_NAME_ESC: EE_NAME; break; } break; case EE_NAME: switch (c) { case TELOBJ_VAR: case TELOBJ_USERVAR: /* The previous request is done. */ llist_insert_before(&ereq->list, &ereqs); /* Start a new one. */ ereq = (ereq_t *)Malloc(sizeof(ereq_t)); memset(ereq, 0, sizeof(ereq_t)); llist_init(&ereq->list); ereq->group = c; state = EE_VAR; break; case TELOBJ_ESC: state = EE_NAME_ESC; /* fall through... */ default: ereq->name_len++; ereq->name = Realloc(ereq->name, ereq->name_len); ereq->name[ereq->name_len - 1] = c; break; } break; case EE_NAME_ESC: ereq->name_len++; ereq->name = Realloc(ereq->name, ereq->name_len); ereq->name[ereq->name_len - 1] = c; break; } } if (state == EE_BASE) { /* No input. Fake TELOBJ_VER and TELOBJ_USERVAR. */ ereq = (ereq_t *)Malloc(sizeof(ereq_t)); memset(ereq, 0, sizeof(ereq_t)); llist_init(&ereq->list); ereq->group = TELOBJ_VAR; llist_insert_before(&ereq->list, &ereqs); ereq = (ereq_t *)Malloc(sizeof(ereq_t)); memset(ereq, 0, sizeof(ereq_t)); llist_init(&ereq->list); ereq->group = TELOBJ_USERVAR; llist_insert_before(&ereq->list, &ereqs); *fake_input = true; } else { /* Something is pending. */ llist_insert_before(&ereq->list, &ereqs); } return &ereqs; } /* * Parse the TELNET NEW-ENVIRON option and form the response. * * @param[in] request_buf TELNET IAC SB buffer. Leading IAC SB * NEW-ENVIRON SEND and trailing IAC SE have been * removed. Embedded IACs have been removed. * @param[in] request_buflen Length of the buffer. * @param[out] reply_buf Returned malloc'd transmit buffer, starting * with IAC SB, ending with IAC SE. * @param[out] reply_buflen Returned buffer length. * @param[out] trace_inp Returned malloc'd input trace message. * @param[out] trace_outp Returned malloc'd output trace message. * @returns true for success */ bool telnet_new_environ(unsigned char *request_buf, size_t request_buflen, unsigned char **reply_buf, size_t *reply_buflen, char **trace_inp, char **trace_outp) { varbuf_t trace_in; /* input trace */ varbuf_t reply; /* reply */ varbuf_t trace_out; /* output trace */ llist_t *ereqs; /* parsed request */ ereq_t *ereq; /* request element */ environ_t *value; /* found value */ bool fake_input = false; unsigned char *reply_body; size_t reply_body_len; /* Parse the request. */ ereqs = parse_new_environ(request_buf, request_buflen, &fake_input); if (ereqs == NULL) { /* Parse error. */ return false; } /* Build up the return values. */ vb_init(&trace_in); vb_appendf(&trace_in, "%s %s", opt(TELOPT_NEW_ENVIRON), telquals[TELQUAL_SEND]); vb_init(&reply); vb_appendf(&reply, "%c%c", TELOPT_NEW_ENVIRON, TELQUAL_IS); vb_init(&trace_out); vb_appendf(&trace_out, "%s %s %s", cmd(SB), opt(TELOPT_NEW_ENVIRON), telquals[TELQUAL_IS]); FOREACH_LLIST(ereqs, ereq, ereq_t *) { if (ereq->name_len == 0) { llist_t *l; /* No variable name. Dump the whole group. */ if (!fake_input) { /* Trace the request. */ vb_appendf(&trace_in, " %s", telobjs[ereq->group]); } l = (ereq->group == TELOBJ_VAR)? &vars: &uservars; FOREACH_LLIST(l, value, environ_t *) { /* Add this value to the reply. */ vb_appendf(&reply, "%c", ereq->group); vb_append(&reply, value->name, value->name_len); vb_appendf(&reply, "%c", TELOBJ_VALUE); vb_append(&reply, value->value, value->value_len); /* Trace the reply. */ vb_appendf(&trace_out, " %s \"%s\" %s \"%s\"", telobjs[ereq->group], expand_name(value->name, value->name_len), telobjs[TELOBJ_VALUE], expand_name(value->value, value->value_len)); } FOREACH_LLIST_END(l, ereq, ereq_t *) } else { environ_t *value; /* Trace thr request. */ vb_appendf(&trace_in, " %s \"%s\"", telobjs[ereq->group], expand_name(ereq->name, ereq->name_len)); /* Dump one entry. */ value = find_environ( (ereq->group == TELOBJ_VAR)? &vars : &uservars, ereq->name, ereq->name_len); vb_appendf(&reply, "%c", ereq->group); vb_append(&reply, ereq->name, ereq->name_len); if (value != NULL) { vb_appendf(&reply, "%c", TELOBJ_VALUE); vb_append(&reply, value->value, value->value_len); } /* Trace the reply, */ vb_appendf(&trace_out, " %s \"%s\"", telobjs[ereq->group], expand_name(ereq->name, ereq->name_len)); if (value != NULL) { vb_appendf(&trace_out, " %s \"%s\"", telobjs[TELOBJ_VALUE], expand_name(value->value, value->value_len)); } } } FOREACH_LLIST_END(ereqs, ereq, ereq_t); /* Trace SE in and out. */ vb_appendf(&trace_in, " %s", cmd(SE)); vb_appendf(&trace_out, " %s", cmd(SE)); /* Free the parsed request. */ while (!llist_isempty(ereqs)) { ereq = (ereq_t *)ereqs->next; llist_unlink(&ereq->list); if (ereq->name != NULL) { Free(ereq->name); } Free(ereq); } /* Expand IACs, which may be hiding in names or values. */ expand_iac((const unsigned char *)vb_buf(&reply), vb_len(&reply), &reply_body, &reply_body_len); vb_free(&reply); /* Form the final reply message: IAC SB, reply body, IAC SE. */ *reply_buflen = 2 + reply_body_len + 2; *reply_buf = Malloc(2 + reply_body_len + 2); **reply_buf = IAC; *(*reply_buf + 1) = SB; memcpy(*reply_buf + 2, reply_body, reply_body_len); *(*reply_buf + 2 + reply_body_len) = IAC; *(*reply_buf + 2 + reply_body_len + 1) = SE; Free(reply_body); /* Return the traces. */ *trace_inp = vb_consume(&trace_in); *trace_outp = vb_consume(&trace_out); return true; } suite3270-4.1/Common/telnet_sio.c000066400000000000000000000140041413735575200165770ustar00rootroot00000000000000/* * Copyright (c) 2017-2018, 2020 Paul Mattes. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the names of Paul Mattes, Don Russell, Jeff Sparkes, GTRC * nor their contributors may be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO * EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * telnet_sio.c * Glue between telnet and secure I/O (sio). */ #include "globals.h" #include #include "appres.h" #include "popups.h" #include "sio.h" #include "telnet_sio.h" #include "tls_passwd_gui.h" #include "trace.h" /* * Password cache. * We remember interactive passwords, keyed by the configuration (cert_file, * cert_file_type, chain_file, key_file, key_file_type, client_cert). */ typedef struct _password_cache { struct _password_cache *next; tls_config_t config; char *password; } password_cache_t; static password_cache_t *password_cache; /* Compare two possibly-null strings. */ static bool nstreq(const char *a, const char *b) { return (a == NULL && b == NULL) || (a != NULL && b != NULL && !strcmp(a, b)); } /* Duplicate a possibly-null string. */ static char *nstrdup(const char *a) { return (a != NULL)? NewString(a): NULL; } /* Add or update an entry in the password cache. */ static void add_to_cache(tls_config_t *config, const char *password) { password_cache_t *p; for (p = password_cache; p != NULL; p++) { if (nstreq(p->config.cert_file, config->cert_file) && nstreq(p->config.cert_file_type, config->cert_file_type) && nstreq(p->config.chain_file, config->chain_file) && nstreq(p->config.key_file, config->key_file) && nstreq(p->config.key_file_type, config->key_file_type) && nstreq(p->config.client_cert, config->client_cert)) { /* Overwrite existing entry. */ Replace(p->password, NewString(password)); return; } } /* Create a new entry. */ p = (password_cache_t *)Malloc(sizeof(password_cache_t)); memset(&p->config, 0, sizeof(tls_config_t)); p->config.cert_file = nstrdup(config->cert_file); p->config.cert_file_type = nstrdup(config->cert_file_type); p->config.chain_file = nstrdup(config->chain_file); p->config.key_file = nstrdup(config->key_file); p->config.key_file_type = nstrdup(config->key_file_type); p->config.client_cert = nstrdup(config->client_cert); p->password = NewString(password); p->next = password_cache; password_cache = p; } /* Look up an entry in the password cache. */ static char * lookup_cache(tls_config_t *config) { password_cache_t *p; for (p = password_cache; p != NULL; p++) { if (nstreq(p->config.cert_file, config->cert_file) && nstreq(p->config.cert_file_type, config->cert_file_type) && nstreq(p->config.chain_file, config->chain_file) && nstreq(p->config.key_file, config->key_file) && nstreq(p->config.key_file_type, config->key_file_type) && nstreq(p->config.client_cert, config->client_cert)) { return p->password; } } return NULL; } /* * Set up TLS, integrated with password prompting. */ sio_t sio_init_wrapper(const char *password, bool force_no_verify, char *accept, bool *pending) { char password_buf[1024]; sio_t s; bool again = false; static tls_config_t *config = NULL; /* Create a temporary config for sio to consume. */ Replace(config, Malloc(sizeof(tls_config_t))); memcpy(config, &appres.tls, sizeof(tls_config_t)); if (force_no_verify) { config->verify_host_cert = false; } if (accept) { config->accept_hostname = accept; } if (password == NULL) { password = lookup_cache(&appres.tls); if (password != NULL) { vtrace("TLS: Using cached password\n"); } } else { add_to_cache(&appres.tls, password); } *pending = false; while (true) { sio_init_ret_t ret = sio_init(config, password, &s); switch (ret) { case SI_SUCCESS: return s; case SI_FAILURE: popup_an_error("%s", sio_last_error()); return NULL; case SI_WRONG_PASSWORD: vtrace("TLS: Password is wrong\n"); if (password == NULL) { popup_an_error("%s", sio_last_error()); return NULL; } again = true; /* else fall through, letting them enter another password */ case SI_NEED_PASSWORD: switch (tls_passwd_gui_callback(password_buf, sizeof(password_buf), again)) { case SP_SUCCESS: /* Got it right away. */ vtrace("TLS: Password needed, supplied by GUI\n"); password = password_buf; add_to_cache(&appres.tls, password); /* Try again. */ break; case SP_FAILURE: vtrace("TLS: Password needed, GUI failed\n"); return NULL; case SP_PENDING: vtrace("TLS: Password needed, GUI pending\n"); *pending = true; return NULL; case SP_NOT_SUPPORTED: vtrace("TLS: Password needed, GUI unavailable\n"); popup_an_error("Private key password needed"); return NULL; } break; } } } suite3270-4.1/Common/tls_passwd_gui_stubs.c000066400000000000000000000034451413735575200207100ustar00rootroot00000000000000/* * Copyright (c) 2014-2017, 2020 Paul Mattes. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the names of Paul Mattes nor the names of his contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO * EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * tls_passwd_gui_stubs.c * Stubs for the TLS password GUI. */ #include "globals.h" #include "tls_passwd_gui.h" tls_passwd_ret_t tls_passwd_gui_callback(char *buf _is_unused, int size _is_unused, bool again _is_unused) { return SP_NOT_SUPPORTED; /* not supported */ } suite3270-4.1/Common/toggles.c000066400000000000000000000516711413735575200161110ustar00rootroot00000000000000/* * Copyright (c) 1993-2009, 2013-2020 Paul Mattes. * Copyright (c) 1990, Jeff Sparkes. * Copyright (c) 1989, Georgia Tech Research Corporation (GTRC), Atlanta, GA * 30332. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the names of Paul Mattes, Jeff Sparkes, GTRC nor the names of * their contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES, JEFF SPARKES AND GTRC "AS IS" AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL PAUL MATTES, JEFF SPARKES OR GTRC BE * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. */ /* * toggles.c * This module handles toggles. */ #include "globals.h" #include #include "appres.h" #include "resources.h" #include "actions.h" #include "boolstr.h" #include "lazya.h" #include "menubar.h" #include "names.h" #include "popups.h" #include "toggles.h" #include "utils.h" /* Live state of toggles. */ typedef struct _toggle_upcalls { struct _toggle_upcalls *next; /* next upcall */ toggle_upcall_t *upcall; /* callback */ unsigned flags; /* callback flags */ } toggle_upcalls_t; typedef struct { bool changed; /* has the value changed since init */ bool supported; /* is the toggle supported */ toggle_upcalls_t *upcalls; /* flags and callbacks */ } toggle_t; static toggle_t toggle[N_TOGGLES]; /* Extended upcalls. */ typedef struct toggle_extended_upcalls { struct toggle_extended_upcalls *next; char *name; toggle_extended_upcall_t *upcall; toggle_extended_done_t *done; toggle_extended_canonicalize_t *canonicalize; void **address; enum resource_type type; } toggle_extended_upcalls_t; static toggle_extended_upcalls_t *extended_upcalls; static toggle_extended_upcalls_t **extended_upcalls_last = &extended_upcalls; typedef struct toggle_extended_notifies { struct toggle_extended_notifies *next; toggle_extended_notify_t *notify; } toggle_extended_notifies_t; static toggle_extended_notifies_t *extended_notifies; static toggle_extended_notifies_t **extended_notifies_last = &extended_notifies; /* Toggle name dictionary. */ toggle_name_t toggle_names[] = { { ResMonoCase, MONOCASE, false }, { ResAltCursor, ALT_CURSOR, false }, { ResCursorBlink, CURSOR_BLINK, false }, { ResShowTiming, SHOW_TIMING, false }, { ResTrace, TRACING, false }, { ResScrollBar, SCROLL_BAR, false }, { ResLineWrap, LINE_WRAP, false }, { ResBlankFill, BLANK_FILL, false }, { ResScreenTrace, SCREEN_TRACE, false }, { ResMarginedPaste, MARGINED_PASTE, false }, { ResRectangleSelect, RECTANGLE_SELECT, false }, { ResCrosshair, CROSSHAIR, false }, { ResVisibleControl, VISIBLE_CONTROL, false }, { ResAidWait, AID_WAIT, false }, { ResUnderscore, UNDERSCORE, false }, { ResOverlayPaste, OVERLAY_PASTE, false }, { ResTypeahead, TYPEAHEAD, false }, { ResAplMode, APL_MODE, false }, { ResAlwaysInsert, ALWAYS_INSERT, false }, { ResRightToLeftMode, RIGHT_TO_LEFT, false }, { ResReverseInputMode,REVERSE_INPUT, false }, { ResInsertMode, INSERT_MODE, false }, { ResSelectUrl, SELECT_URL, false }, { NULL, 0, false } }; /* * Generic toggle stuff */ static void do_toggle_reason(toggle_index_t ix, enum toggle_type reason) { toggle_t *t = &toggle[ix]; toggle_upcalls_t *u; /* * Change the value, call the internal update routine, and reset the * menu label(s). */ toggle_toggle(ix); for (u = t->upcalls; u != NULL; u = u->next) { if (u->upcall != NULL) { u->upcall(ix, reason); } } menubar_retoggle(ix); } void do_toggle(int ix) { do_toggle_reason(ix, TT_INTERACTIVE); } void do_menu_toggle(int ix) { do_toggle_reason(ix, TT_XMENU); } /* * Initialize one toggle. */ static void toggle_init_one(toggle_index_t ix) { if (toggled(ix)) { toggle_upcalls_t *u; for (u = toggle[ix].upcalls; u != NULL; u = u->next) { if (u->flags & TOGGLE_NEED_INIT) { u->upcall(ix, TT_INITIAL); /* It might have failed. Fix up the menu if it did. */ if (!toggled(ix)) { menubar_retoggle(ix); } } } } } /* * Called from system initialization code to handle initial toggle settings. */ void initialize_toggles(void) { toggle_index_t ix; /* * Toggle tracing first, so the other toggles can be caught in the trace * file. */ toggle_init_one(TRACING); for (ix = 0; ix < N_TOGGLES; ix++) { if (ix != TRACING) { toggle_init_one(ix); } } } /* * Exit one toggle. */ static void toggle_exit_one(toggle_index_t ix) { if (toggled(ix)) { toggle_upcalls_t *u; set_toggle(ix, false); for (u = toggle[ix].upcalls; u != NULL; u = u->next) { if (u->flags & TOGGLE_NEED_CLEANUP) { u->upcall(ix, TT_FINAL); } } } } /* * Called from system exit code to handle toggles. */ void toggle_exiting(bool mode _is_unused) { toggle_index_t ix; /* * Toggle tracing last, so the other toggles can be caught in the trace * file. */ for (ix = 0; ix < N_TOGGLES; ix++) { if (ix != TRACING) { toggle_exit_one(ix); } } toggle_exit_one(TRACING); } /** * Get the current value of an extended toggle. * * @param[in] u Extended upcall struct * * @returns Current value */ static char * u_value(toggle_extended_upcalls_t *u) { char *value = NULL; if (u->address != NULL) { switch (u->type) { case XRM_STRING: value = *(char **)u->address; break; case XRM_BOOLEAN: value = *(bool *)u->address? ResTrue: ResFalse; break; case XRM_INT: value = lazyaf("%d", *(int *)u->address); break; } } else { value = get_resource(u->name); } return (*u->canonicalize)(value); } /* Compare two toggles by name. Used by qsort. */ static int toggle_compare(const void *a, const void *b) { tnv_t *ta = (tnv_t *)a; tnv_t *tb = (tnv_t *)b; return strcmp(ta->name, tb->name); } /* * Return the list of all toggle values. */ tnv_t * toggle_values(void) { int i; toggle_extended_upcalls_t *u; tnv_t *tnv = NULL; int n_tnv = 0; /* Copy the toggles and values into an array. */ for (i = 0; toggle_names[i].name != NULL; i++) { if (toggle_supported(toggle_names[i].index)) { tnv = (tnv_t *)Realloc(tnv, (n_tnv + 1) * sizeof(tnv_t)); tnv[n_tnv].name = toggle_names[i].name; tnv[n_tnv].value = toggled(toggle_names[i].index)? ResTrue: ResFalse; n_tnv++; } } for (u = extended_upcalls; u != NULL; u = u->next) { tnv = (tnv_t *)Realloc(tnv, (n_tnv + 1) * sizeof(tnv_t)); tnv[n_tnv].name = u->name; tnv[n_tnv].value = u_value(u); n_tnv++; } /* Sort the array by name. */ qsort(tnv, n_tnv, sizeof(tnv_t), toggle_compare); /* NULL terminate and return. */ tnv = (tnv_t *)Realloc(tnv, (n_tnv + 1) * sizeof(tnv_t)); tnv[n_tnv].name = NULL; tnv[n_tnv].value = NULL; lazya(tnv); return tnv; } /* * Show all toggles. */ static void toggle_show(void) { tnv_t *tnv = toggle_values(); int i; /* Walk the array. */ for (i = 0; tnv[i].name != NULL; i++) { if (tnv[i].value != NULL) { action_output("%s: %s", tnv[i].name, tnv[i].value); } else { action_output("%s:", tnv[i].name); } } } /* * Split x=y into separate arguments. */ static void split_equals(unsigned *argc, const char ***argv) { bool left = true; const char **out_argv = (const char **)Calloc((*argc * 2) + 1, sizeof(char *)); int out_ix = 0; unsigned i; lazya((void *)out_argv); for (i = 0; i < *argc; i++) { const char *arg = (*argv)[i]; if (left) { char *colon = strchr(arg, '='); if (colon == NULL || colon == arg) { out_argv[out_ix++] = arg; } else { out_argv[out_ix++] = lazyaf("%.*s", (int)(colon - arg), arg); out_argv[out_ix++] = lazya(NewString(colon + 1)); left = false; } } else { out_argv[out_ix++] = arg; } left = !left; } out_argv[out_ix] = NULL; *argc = out_ix; *argv = out_argv; } /* * Toggle/Set action. */ static bool toggle_common(const char *name, bool is_toggle_action, ia_t ia, unsigned argc, const char **argv) { int j; int ix = -1; unsigned arg = 0; typedef struct { toggle_extended_done_t *done; bool success; } done_success_t; done_success_t *dones; int n_dones = 0; toggle_extended_upcalls_t **done_u; int n_done_u = 0; bool success = true; int d, du; toggle_extended_notifies_t *notifies; const char *value; action_debug(name, ia, argc, argv); /* Check for show-all. */ if (argc == 0) { toggle_show(); return true; } /* Split arguments along "x=y" boundaries. */ split_equals(&argc, &argv); if (is_toggle_action && argc > 2) { /* Toggle() can only set one value. */ popup_an_error("%s() can only set one value", name); return false; } else if (!is_toggle_action && argc > 2 && (argc % 2)) { /* * Set() accepts 0 arguments (show all), 1 argument (show one), or * an even number of arguments (set one or more). */ popup_an_error("%s(): '%s' requires a value", name, argv[argc - 1]); return false; } dones = (done_success_t *)Malloc(argc * sizeof(done_success_t *)); done_u = (toggle_extended_upcalls_t **)Malloc(argc * sizeof(toggle_extended_upcalls_t *)); /* Look up the toggle name. */ while (arg < argc) { toggle_extended_upcalls_t *u = NULL; for (j = 0; toggle_names[j].name != NULL; j++) { if (!toggle_supported(toggle_names[j].index)) { continue; } if (!strcasecmp(argv[arg], toggle_names[j].name)) { ix = toggle_names[j].index; break; } } if (toggle_names[j].name == NULL) { for (u = extended_upcalls; u != NULL; u = u->next) { if (!strcasecmp(argv[arg], u->name)) { break; } } } if (toggle_names[j].name == NULL && u == NULL) { popup_an_error("%s(): Unknown toggle name '%s'", name, argv[arg]); goto failed; } if (argc - arg == 1) { if (is_toggle_action) { /* Toggle(x): Flip a Boolean value. */ if (u != NULL) { /* * Allow a bool-valued field to be toggled, even if it * isn't a traditional toggle. */ if (u->type != XRM_BOOLEAN) { popup_an_error("%s(): '%s' requires a value", name, argv[arg]); goto failed; } value = (*(bool *)u->address)? ResFalse: ResTrue; goto have_value; } /* Flip the toggle. */ do_toggle_reason(ix, TT_ACTION); goto done; } else { /* Set(x): Display one value. */ if (u != NULL) { char *v = u_value(u); action_output("%s", v? v: "\n"); } else { action_output("%s", toggled(ix)? ResTrue: ResFalse); } return true; } } value = argv[arg + 1]; have_value: if (u == NULL) { const char *errmsg; bool b; /* Check for explicit Boolean value. */ if ((errmsg = boolstr(argv[arg + 1], &b)) != NULL) { popup_an_error("%s(): %s %s", name, argv[arg], errmsg); goto failed; } if (b && !toggled(ix)) { do_toggle_reason(ix, TT_ACTION); } else if (!b && toggled(ix)) { do_toggle_reason(ix, TT_ACTION); } } else { /* * Call an extended toggle, remembering each unique 'done' * function. */ if (u->done != NULL) { done_u[n_done_u++] = u; for (d = 0; d < n_dones; d++) { if (dones[d].done == u->done) { break; } } if (d >= n_dones) { dones[n_dones].done = u->done; dones[n_dones++].success = false; } } if (!u->upcall(argv[arg], value)) { goto failed; } if (u->done == NULL) { for (notifies = extended_notifies; notifies != NULL; notifies = notifies->next) { char *v = u_value(u); (*notifies->notify)(u->name, v, ia); Free(v); } } } arg += 2; } goto done; failed: success = false; done: /* Call each of the done functions. */ for (d = 0; d < n_dones; d++) { dones[d].success = (*dones[d].done)(success); success &= dones[d].success; } /* Call each of the notify functions with successful done functions. */ for (du = 0; du < n_done_u; du++) { for (d = 0; d < n_dones; d++) { if (dones[d].done == done_u[du]->done) { break; } } if (d < n_dones && !dones[d].success) { continue; } for (notifies = extended_notifies; notifies != NULL; notifies = notifies->next) { char *v = u_value(done_u[du]); (*notifies->notify)(done_u[du]->name, v, ia); Free(v); } } Free(dones); Free(done_u); return success; } /* * Toggle action. * Toggle(toggleName) * flips the value * Toggle(toggleName,value[,toggleName,value...]) * sets an explicit value * For old-style Boolean toggles, values can be Set/Clear On/Off True/False 1/0 */ bool Toggle_action(ia_t ia, unsigned argc, const char **argv) { return toggle_common(AnToggle, true, ia, argc, argv); } /* * Set action. Near-alias for 'toggle'. * Set(toggleName) * sets the value to 'True' * Set(toggleName,value[,toggleName,value...]) * sets an explicit value * For old-style Boolean toggles, values can be Set/Clear On/Off True/False 1/0 */ bool Set_action(ia_t ia, unsigned argc, const char **argv) { return toggle_common(AnSet, false, ia, argc, argv); } /** * Toggles module registration. */ void toggles_register(void) { static action_table_t toggle_actions[] = { { AnToggle, Toggle_action, ACTION_KE }, { AnSet, Set_action, ACTION_KE } }; /* Register the cleanup routine. */ register_schange(ST_EXITING, toggle_exiting); /* Register the actions. */ register_actions(toggle_actions, array_count(toggle_actions)); } /** * Flip the value of a toggle without notifying anyone. * * @param ix Toggle index */ void toggle_toggle(toggle_index_t ix) { set_toggle(ix, !toggled(ix)); } /** * Set the value of a toggle, without notifying anyone. * * @param ix Toggle index */ void set_toggle(toggle_index_t ix, bool value) { appres.toggle[ix] = value; toggle[ix].changed = true; } /** * Set the initial value of a toggle, which does not include marking it * changed or notifying anyone. * * @param ix Toggle index */ void set_toggle_initial(toggle_index_t ix, bool value) { appres.toggle[ix] = value; } /** * Return current state of a toggle. * * @param ix Toggle index * * @return Toggle state */ bool toggled(toggle_index_t ix) { return appres.toggle[ix]; } /** * Return change status of a toggle. * * @param ix Toggle index * * @return true if changed, false otherwise */ bool toggle_changed(toggle_index_t ix) { return toggle[ix].changed; } /** * Check for a toggle being supported in this app. * * @param[in] ix Toggle index * * @return true if supported, false otherwise. */ bool toggle_supported(toggle_index_t ix) { return toggle[ix].supported; } /** * Register a group of toggle callbacks. * * @param[in] toggles Array of callbacks to register * @param[in] count Number of elements in toggles[] */ void register_toggles(toggle_register_t toggles[], unsigned count) { unsigned i; for (i = 0; i < count; i++) { toggle_upcalls_t *u; toggle[toggles[i].ix].supported = true; u = (toggle_upcalls_t *)Malloc(sizeof(toggle_upcalls_t)); u->next = toggle[toggles[i].ix].upcalls; u->upcall = toggles[i].upcall; u->flags = toggles[i].flags; toggle[toggles[i].ix].upcalls = u; } } /** * Default canonicalization function. Just a pass-through. * * @param[in] value Value to canonicalize * * @returns Canonicalized value */ static char * default_canonicalize(const char *value) { return value? NewString(value): NULL; } /** * Register an extended toggle. * * @param[in] name Toggle name * @param[in] upcall Value-change upcall * @param[in] done Done upcall * @param[in] canonicalize Canonicalization upcall * @param[in] address Address of value in appres * @param[in] type Resource type */ void register_extended_toggle(const char *name, toggle_extended_upcall_t upcall, toggle_extended_done_t done, toggle_extended_canonicalize_t canonicalize, void **address, enum resource_type type) { toggle_extended_upcalls_t *u; toggle_extended_notifies_t *notifies; char *v; /* Register the toggle. */ u = (toggle_extended_upcalls_t *)Malloc(sizeof(toggle_extended_upcalls_t) + strlen(name) + 1); u->next = NULL; u->name = (char *)(u + 1); strcpy(u->name, name); u->upcall = upcall; u->done = done; u->canonicalize = canonicalize? canonicalize: default_canonicalize; u->address = address; u->type = type; *extended_upcalls_last = u; extended_upcalls_last = &u->next; /* Notify with the current value. */ v = u_value(u); for (notifies = extended_notifies; notifies != NULL; notifies = notifies->next) { (*notifies->notify)(name, v, IA_NONE); } Free(v); } /** * Register an extended toggle notify upcall -- called when a toggle is * changed successfully. * * @param[in] notify Notify upcall. */ void register_extended_toggle_notify(toggle_extended_notify_t notify) { toggle_extended_upcalls_t *u; /* Register the notify function. */ toggle_extended_notifies_t *notifies = Malloc(sizeof(toggle_extended_notifies_t)); notifies->next = NULL; notifies->notify = notify; *extended_notifies_last = notifies; extended_notifies_last = ¬ifies->next; /* Call it with everything registered so far. */ for (u = extended_upcalls; u != NULL; u = u->next) { char *v = u_value(u); (*notify)(u->name, v, IA_NONE); Free(v); } } /** * Force notification of a toggle change. */ void force_toggle_notify(const char *name, ia_t ia) { toggle_extended_upcalls_t *u; toggle_extended_notifies_t *n; char *v; for (u = extended_upcalls; u != NULL; u = u->next) { if (!strcmp(name, u->name)) { break; } } if (u == NULL) { return; } /* Notify with the current value. */ v = u_value(u); for (n = extended_notifies; n != NULL; n = n->next) { (*n->notify)(name, v, ia); } Free(v); } /* Return the list of extended toggle names. */ char ** extended_toggle_names(int *countp, bool bool_only) { int count = 0; toggle_extended_upcalls_t *u; char **ret; for (u = extended_upcalls; u != NULL; u = u->next) { if (!bool_only || u->type == XRM_BOOLEAN) { count++; } } *countp = count; ret = (char **)lazya(Malloc(count * sizeof(char *))); count = 0; for (u = extended_upcalls; u != NULL; u = u->next) { if (!bool_only || u->type == XRM_BOOLEAN) { ret[count++] = u->name; } } return ret; } /* Find a Boolean extended toggle. */ void * find_extended_toggle(const char *name, enum resource_type type) { toggle_extended_upcalls_t *u; for (u = extended_upcalls; u != NULL; u = u->next) { if (u->type == type && !strcmp(name, u->name)) { return u->address; } } return NULL; } /* * Initialize an extended toggle from the command line. * Returns 0 for no match, 1 for match and success, -1 for failure. */ int init_extended_toggle(const char *name, size_t nlen, bool bool_only, const char *value, const char **proper_name) { toggle_extended_upcalls_t *u; const char *err; bool v; unsigned long ul; char *p; for (u = extended_upcalls; u != NULL; u = u->next) { if (!strncasecmp(name, u->name, nlen) && u->name[nlen] == '\0' && (!bool_only || u->type == XRM_BOOLEAN)) { break; } } if (u == NULL) { return 0; } if (proper_name != NULL) { *proper_name = u->name; } switch (u->type) { default: case XRM_STRING: if (proper_name == NULL) { *(char **)u->address = NewString(value); } break; case XRM_BOOLEAN: err = boolstr(value, &v); if (err != NULL) { return -1; } if (proper_name == NULL) { *(bool *)u->address = v; } break; case XRM_INT: ul = strtoul(value, &p, 10); if (p == value || *p != '\0' || ul > INT_MAX) { return -1; } if (proper_name == NULL) { *(int *)u->address = ul; } break; } return 1; } suite3270-4.1/Common/toupper.c000077500000000000000000000351351413735575200161430ustar00rootroot00000000000000/* * Copyright (c) 2018 Paul Mattes. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the names of Paul Mattes nor the names of his contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO * EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * toupper.c * 3270 Terminal Emulator * Uppercase translation */ #include "globals.h" #include "toupper.h" /* Hard-coded uppercase translation translation for U+0000 through U+05ff. */ static ucs4_t upper[] = { 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f, 0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017, 0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f, 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027, 0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f, 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f, 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f, 0x0060, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, 0x0059, 0x005a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f, 0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x0085, 0x0086, 0x0087, 0x0088, 0x0089, 0x008a, 0x008b, 0x008c, 0x008d, 0x008e, 0x008f, 0x0090, 0x0091, 0x0092, 0x0093, 0x0094, 0x0095, 0x0096, 0x0097, 0x0098, 0x0099, 0x009a, 0x009b, 0x009c, 0x009d, 0x009e, 0x009f, 0x00a0, 0x00a1, 0x00a2, 0x00a3, 0x00a4, 0x00a5, 0x00a6, 0x00a7, 0x00a8, 0x00a9, 0x00aa, 0x00ab, 0x00ac, 0x00ad, 0x00ae, 0x00af, 0x00b0, 0x00b1, 0x00b2, 0x00b3, 0x00b4, 0x00b5, 0x00b6, 0x00b7, 0x00b8, 0x00b9, 0x00ba, 0x00bb, 0x00bc, 0x00bd, 0x00be, 0x00bf, 0x00c0, 0x00c1, 0x00c2, 0x00c3, 0x00c4, 0x00c5, 0x00c6, 0x00c7, 0x00c8, 0x00c9, 0x00ca, 0x00cb, 0x00cc, 0x00cd, 0x00ce, 0x00cf, 0x00d0, 0x00d1, 0x00d2, 0x00d3, 0x00d4, 0x00d5, 0x00d6, 0x00d7, 0x00d8, 0x00d9, 0x00da, 0x00db, 0x00dc, 0x00dd, 0x00de, 0x00df, 0x00c0, 0x00c1, 0x00c2, 0x00c3, 0x00c4, 0x00c5, 0x00c6, 0x00c7, 0x00c8, 0x00c9, 0x00ca, 0x00cb, 0x00cc, 0x00cd, 0x00ce, 0x00cf, 0x00d0, 0x00d1, 0x00d2, 0x00d3, 0x00d4, 0x00d5, 0x00d6, 0x00f7, 0x00d8, 0x00d9, 0x00da, 0x00db, 0x00dc, 0x00dd, 0x00de, 0x0178, 0x0100, 0x0100, 0x0102, 0x0102, 0x0104, 0x0104, 0x0106, 0x0106, 0x0108, 0x0108, 0x010a, 0x010a, 0x010c, 0x010c, 0x010e, 0x010e, 0x0110, 0x0110, 0x0112, 0x0112, 0x0114, 0x0114, 0x0116, 0x0116, 0x0118, 0x0118, 0x011a, 0x011a, 0x011c, 0x011c, 0x011e, 0x011e, 0x0120, 0x0120, 0x0122, 0x0122, 0x0124, 0x0124, 0x0126, 0x0126, 0x0128, 0x0128, 0x012a, 0x012a, 0x012c, 0x012c, 0x012e, 0x012e, 0x0130, 0x0131, 0x0132, 0x0132, 0x0134, 0x0134, 0x0136, 0x0136, 0x0138, 0x0139, 0x0139, 0x013b, 0x013b, 0x013d, 0x013d, 0x013f, 0x013f, 0x0141, 0x0141, 0x0143, 0x0143, 0x0145, 0x0145, 0x0147, 0x0147, 0x0149, 0x014a, 0x014a, 0x014c, 0x014c, 0x014e, 0x014e, 0x0150, 0x0150, 0x0152, 0x0152, 0x0154, 0x0154, 0x0156, 0x0156, 0x0158, 0x0158, 0x015a, 0x015a, 0x015c, 0x015c, 0x015e, 0x015e, 0x0160, 0x0160, 0x0162, 0x0162, 0x0164, 0x0164, 0x0166, 0x0166, 0x0168, 0x0168, 0x016a, 0x016a, 0x016c, 0x016c, 0x016e, 0x016e, 0x0170, 0x0170, 0x0172, 0x0172, 0x0174, 0x0174, 0x0176, 0x0176, 0x0178, 0x0179, 0x0179, 0x017b, 0x017b, 0x017d, 0x017d, 0x017f, 0x0243, 0x0181, 0x0182, 0x0182, 0x0184, 0x0184, 0x0186, 0x0187, 0x0187, 0x0189, 0x018a, 0x018b, 0x018b, 0x018d, 0x018e, 0x018f, 0x0190, 0x0191, 0x0191, 0x0193, 0x0194, 0x01f6, 0x0196, 0x0197, 0x0198, 0x0198, 0x023d, 0x019b, 0x019c, 0x019d, 0x0220, 0x019f, 0x01a0, 0x01a0, 0x01a2, 0x01a2, 0x01a4, 0x01a4, 0x01a6, 0x01a7, 0x01a7, 0x01a9, 0x01aa, 0x01ab, 0x01ac, 0x01ac, 0x01ae, 0x01af, 0x01af, 0x01b1, 0x01b2, 0x01b3, 0x01b3, 0x01b5, 0x01b5, 0x01b7, 0x01b8, 0x01b8, 0x01ba, 0x01bb, 0x01bc, 0x01bc, 0x01be, 0x01f7, 0x01c0, 0x01c1, 0x01c2, 0x01c3, 0x01c4, 0x01c5, 0x01c4, 0x01c7, 0x01c8, 0x01c7, 0x01ca, 0x01cb, 0x01ca, 0x01cd, 0x01cd, 0x01cf, 0x01cf, 0x01d1, 0x01d1, 0x01d3, 0x01d3, 0x01d5, 0x01d5, 0x01d7, 0x01d7, 0x01d9, 0x01d9, 0x01db, 0x01db, 0x018e, 0x01de, 0x01de, 0x01e0, 0x01e0, 0x01e2, 0x01e2, 0x01e4, 0x01e4, 0x01e6, 0x01e6, 0x01e8, 0x01e8, 0x01ea, 0x01ea, 0x01ec, 0x01ec, 0x01ee, 0x01ee, 0x01f0, 0x01f1, 0x01f2, 0x01f1, 0x01f4, 0x01f4, 0x01f6, 0x01f7, 0x01f8, 0x01f8, 0x01fa, 0x01fa, 0x01fc, 0x01fc, 0x01fe, 0x01fe, 0x0200, 0x0200, 0x0202, 0x0202, 0x0204, 0x0204, 0x0206, 0x0206, 0x0208, 0x0208, 0x020a, 0x020a, 0x020c, 0x020c, 0x020e, 0x020e, 0x0210, 0x0210, 0x0212, 0x0212, 0x0214, 0x0214, 0x0216, 0x0216, 0x0218, 0x0218, 0x021a, 0x021a, 0x021c, 0x021c, 0x021e, 0x021e, 0x0220, 0x0221, 0x0222, 0x0222, 0x0224, 0x0224, 0x0226, 0x0226, 0x0228, 0x0228, 0x022a, 0x022a, 0x022c, 0x022c, 0x022e, 0x022e, 0x0230, 0x0230, 0x0232, 0x0232, 0x0234, 0x0235, 0x0236, 0x0237, 0x0238, 0x0239, 0x023a, 0x023b, 0x023b, 0x023d, 0x023e, 0x023f, 0x0240, 0x0241, 0x0241, 0x0243, 0x0244, 0x0245, 0x0246, 0x0246, 0x0248, 0x0248, 0x024a, 0x024a, 0x024c, 0x024c, 0x024e, 0x024e, 0x2c6f, 0x2c6d, 0x0252, 0x0181, 0x0186, 0x0255, 0x0189, 0x018a, 0x0258, 0x018f, 0x025a, 0x0190, 0x025c, 0x025d, 0x025e, 0x025f, 0x0193, 0x0261, 0x0262, 0x0194, 0x0264, 0x0265, 0x0266, 0x0267, 0x0197, 0x0196, 0x026a, 0x2c62, 0x026c, 0x026d, 0x026e, 0x019c, 0x0270, 0x2c6e, 0x019d, 0x0273, 0x0274, 0x019f, 0x0276, 0x0277, 0x0278, 0x0279, 0x027a, 0x027b, 0x027c, 0x2c64, 0x027e, 0x027f, 0x01a6, 0x0281, 0x0282, 0x01a9, 0x0284, 0x0285, 0x0286, 0x0287, 0x01ae, 0x0244, 0x01b1, 0x01b2, 0x0245, 0x028d, 0x028e, 0x028f, 0x0290, 0x0291, 0x01b7, 0x0293, 0x0294, 0x0295, 0x0296, 0x0297, 0x0298, 0x0299, 0x029a, 0x029b, 0x029c, 0x029d, 0x029e, 0x029f, 0x02a0, 0x02a1, 0x02a2, 0x02a3, 0x02a4, 0x02a5, 0x02a6, 0x02a7, 0x02a8, 0x02a9, 0x02aa, 0x02ab, 0x02ac, 0x02ad, 0x02ae, 0x02af, 0x02b0, 0x02b1, 0x02b2, 0x02b3, 0x02b4, 0x02b5, 0x02b6, 0x02b7, 0x02b8, 0x02b9, 0x02ba, 0x02bb, 0x02bc, 0x02bd, 0x02be, 0x02bf, 0x02c0, 0x02c1, 0x02c2, 0x02c3, 0x02c4, 0x02c5, 0x02c6, 0x02c7, 0x02c8, 0x02c9, 0x02ca, 0x02cb, 0x02cc, 0x02cd, 0x02ce, 0x02cf, 0x02d0, 0x02d1, 0x02d2, 0x02d3, 0x02d4, 0x02d5, 0x02d6, 0x02d7, 0x02d8, 0x02d9, 0x02da, 0x02db, 0x02dc, 0x02dd, 0x02de, 0x02df, 0x02e0, 0x02e1, 0x02e2, 0x02e3, 0x02e4, 0x02e5, 0x02e6, 0x02e7, 0x02e8, 0x02e9, 0x02ea, 0x02eb, 0x02ec, 0x02ed, 0x02ee, 0x02ef, 0x02f0, 0x02f1, 0x02f2, 0x02f3, 0x02f4, 0x02f5, 0x02f6, 0x02f7, 0x02f8, 0x02f9, 0x02fa, 0x02fb, 0x02fc, 0x02fd, 0x02fe, 0x02ff, 0x0300, 0x0301, 0x0302, 0x0303, 0x0304, 0x0305, 0x0306, 0x0307, 0x0308, 0x0309, 0x030a, 0x030b, 0x030c, 0x030d, 0x030e, 0x030f, 0x0310, 0x0311, 0x0312, 0x0313, 0x0314, 0x0315, 0x0316, 0x0317, 0x0318, 0x0319, 0x031a, 0x031b, 0x031c, 0x031d, 0x031e, 0x031f, 0x0320, 0x0321, 0x0322, 0x0323, 0x0324, 0x0325, 0x0326, 0x0327, 0x0328, 0x0329, 0x032a, 0x032b, 0x032c, 0x032d, 0x032e, 0x032f, 0x0330, 0x0331, 0x0332, 0x0333, 0x0334, 0x0335, 0x0336, 0x0337, 0x0338, 0x0339, 0x033a, 0x033b, 0x033c, 0x033d, 0x033e, 0x033f, 0x0340, 0x0341, 0x0342, 0x0343, 0x0344, 0x0345, 0x0346, 0x0347, 0x0348, 0x0349, 0x034a, 0x034b, 0x034c, 0x034d, 0x034e, 0x034f, 0x0350, 0x0351, 0x0352, 0x0353, 0x0354, 0x0355, 0x0356, 0x0357, 0x0358, 0x0359, 0x035a, 0x035b, 0x035c, 0x035d, 0x035e, 0x035f, 0x0360, 0x0361, 0x0362, 0x0363, 0x0364, 0x0365, 0x0366, 0x0367, 0x0368, 0x0369, 0x036a, 0x036b, 0x036c, 0x036d, 0x036e, 0x036f, 0x0370, 0x0370, 0x0372, 0x0372, 0x0374, 0x0375, 0x0376, 0x0376, 0x0378, 0x0379, 0x037a, 0x03fd, 0x03fe, 0x03ff, 0x037e, 0x037f, 0x0380, 0x0381, 0x0382, 0x0383, 0x0384, 0x0385, 0x0386, 0x0387, 0x0388, 0x0389, 0x038a, 0x038b, 0x038c, 0x038d, 0x038e, 0x038f, 0x0390, 0x0391, 0x0392, 0x0393, 0x0394, 0x0395, 0x0396, 0x0397, 0x0398, 0x0399, 0x039a, 0x039b, 0x039c, 0x039d, 0x039e, 0x039f, 0x03a0, 0x03a1, 0x03a2, 0x03a3, 0x03a4, 0x03a5, 0x03a6, 0x03a7, 0x03a8, 0x03a9, 0x03aa, 0x03ab, 0x0386, 0x0388, 0x0389, 0x038a, 0x03b0, 0x0391, 0x0392, 0x0393, 0x0394, 0x0395, 0x0396, 0x0397, 0x0398, 0x0399, 0x039a, 0x039b, 0x039c, 0x039d, 0x039e, 0x039f, 0x03a0, 0x03a1, 0x03c2, 0x03a3, 0x03a4, 0x03a5, 0x03a6, 0x03a7, 0x03a8, 0x03a9, 0x03aa, 0x03ab, 0x038c, 0x038e, 0x038f, 0x03cf, 0x03d0, 0x03d1, 0x03d2, 0x03d3, 0x03d4, 0x03d5, 0x03d6, 0x03cf, 0x03d8, 0x03d8, 0x03da, 0x03da, 0x03dc, 0x03dc, 0x03de, 0x03de, 0x03e0, 0x03e0, 0x03e2, 0x03e2, 0x03e4, 0x03e4, 0x03e6, 0x03e6, 0x03e8, 0x03e8, 0x03ea, 0x03ea, 0x03ec, 0x03ec, 0x03ee, 0x03ee, 0x03f0, 0x03f1, 0x03f9, 0x03f3, 0x03f4, 0x03f5, 0x03f6, 0x03f7, 0x03f7, 0x03f9, 0x03fa, 0x03fa, 0x03fc, 0x03fd, 0x03fe, 0x03ff, 0x0400, 0x0401, 0x0402, 0x0403, 0x0404, 0x0405, 0x0406, 0x0407, 0x0408, 0x0409, 0x040a, 0x040b, 0x040c, 0x040d, 0x040e, 0x040f, 0x0410, 0x0411, 0x0412, 0x0413, 0x0414, 0x0415, 0x0416, 0x0417, 0x0418, 0x0419, 0x041a, 0x041b, 0x041c, 0x041d, 0x041e, 0x041f, 0x0420, 0x0421, 0x0422, 0x0423, 0x0424, 0x0425, 0x0426, 0x0427, 0x0428, 0x0429, 0x042a, 0x042b, 0x042c, 0x042d, 0x042e, 0x042f, 0x0410, 0x0411, 0x0412, 0x0413, 0x0414, 0x0415, 0x0416, 0x0417, 0x0418, 0x0419, 0x041a, 0x041b, 0x041c, 0x041d, 0x041e, 0x041f, 0x0420, 0x0421, 0x0422, 0x0423, 0x0424, 0x0425, 0x0426, 0x0427, 0x0428, 0x0429, 0x042a, 0x042b, 0x042c, 0x042d, 0x042e, 0x042f, 0x0400, 0x0401, 0x0402, 0x0403, 0x0404, 0x0405, 0x0406, 0x0407, 0x0408, 0x0409, 0x040a, 0x040b, 0x040c, 0x040d, 0x040e, 0x040f, 0x0460, 0x0460, 0x0462, 0x0462, 0x0464, 0x0464, 0x0466, 0x0466, 0x0468, 0x0468, 0x046a, 0x046a, 0x046c, 0x046c, 0x046e, 0x046e, 0x0470, 0x0470, 0x0472, 0x0472, 0x0474, 0x0474, 0x0476, 0x0476, 0x0478, 0x0478, 0x047a, 0x047a, 0x047c, 0x047c, 0x047e, 0x047e, 0x0480, 0x0480, 0x0482, 0x0483, 0x0484, 0x0485, 0x0486, 0x0487, 0x0488, 0x0489, 0x048a, 0x048a, 0x048c, 0x048c, 0x048e, 0x048e, 0x0490, 0x0490, 0x0492, 0x0492, 0x0494, 0x0494, 0x0496, 0x0496, 0x0498, 0x0498, 0x049a, 0x049a, 0x049c, 0x049c, 0x049e, 0x049e, 0x04a0, 0x04a0, 0x04a2, 0x04a2, 0x04a4, 0x04a4, 0x04a6, 0x04a6, 0x04a8, 0x04a8, 0x04aa, 0x04aa, 0x04ac, 0x04ac, 0x04ae, 0x04ae, 0x04b0, 0x04b0, 0x04b2, 0x04b2, 0x04b4, 0x04b4, 0x04b6, 0x04b6, 0x04b8, 0x04b8, 0x04ba, 0x04ba, 0x04bc, 0x04bc, 0x04be, 0x04be, 0x04c0, 0x04c1, 0x04c1, 0x04c3, 0x04c3, 0x04c5, 0x04c5, 0x04c7, 0x04c7, 0x04c9, 0x04c9, 0x04cb, 0x04cb, 0x04cd, 0x04cd, 0x04c0, 0x04d0, 0x04d0, 0x04d2, 0x04d2, 0x04d4, 0x04d4, 0x04d6, 0x04d6, 0x04d8, 0x04d8, 0x04da, 0x04da, 0x04dc, 0x04dc, 0x04de, 0x04de, 0x04e0, 0x04e0, 0x04e2, 0x04e2, 0x04e4, 0x04e4, 0x04e6, 0x04e6, 0x04e8, 0x04e8, 0x04ea, 0x04ea, 0x04ec, 0x04ec, 0x04ee, 0x04ee, 0x04f0, 0x04f0, 0x04f2, 0x04f2, 0x04f4, 0x04f4, 0x04f6, 0x04f6, 0x04f8, 0x04f8, 0x04fa, 0x04fa, 0x04fc, 0x04fc, 0x04fe, 0x04fe, 0x0500, 0x0500, 0x0502, 0x0502, 0x0504, 0x0504, 0x0506, 0x0506, 0x0508, 0x0508, 0x050a, 0x050a, 0x050c, 0x050c, 0x050e, 0x050e, 0x0510, 0x0510, 0x0512, 0x0512, 0x0514, 0x0514, 0x0516, 0x0516, 0x0518, 0x0518, 0x051a, 0x051a, 0x051c, 0x051c, 0x051e, 0x051e, 0x0520, 0x0520, 0x0522, 0x0522, 0x0524, 0x0525, 0x0526, 0x0527, 0x0528, 0x0529, 0x052a, 0x052b, 0x052c, 0x052d, 0x052e, 0x052f, 0x0530, 0x0531, 0x0532, 0x0533, 0x0534, 0x0535, 0x0536, 0x0537, 0x0538, 0x0539, 0x053a, 0x053b, 0x053c, 0x053d, 0x053e, 0x053f, 0x0540, 0x0541, 0x0542, 0x0543, 0x0544, 0x0545, 0x0546, 0x0547, 0x0548, 0x0549, 0x054a, 0x054b, 0x054c, 0x054d, 0x054e, 0x054f, 0x0550, 0x0551, 0x0552, 0x0553, 0x0554, 0x0555, 0x0556, 0x0557, 0x0558, 0x0559, 0x055a, 0x055b, 0x055c, 0x055d, 0x055e, 0x055f, 0x0560, 0x0531, 0x0532, 0x0533, 0x0534, 0x0535, 0x0536, 0x0537, 0x0538, 0x0539, 0x053a, 0x053b, 0x053c, 0x053d, 0x053e, 0x053f, 0x0540, 0x0541, 0x0542, 0x0543, 0x0544, 0x0545, 0x0546, 0x0547, 0x0548, 0x0549, 0x054a, 0x054b, 0x054c, 0x054d, 0x054e, 0x054f, 0x0550, 0x0551, 0x0552, 0x0553, 0x0554, 0x0555, 0x0556, 0x0587, 0x0588, 0x0589, 0x058a, 0x058b, 0x058c, 0x058d, 0x058e, 0x058f, 0x0590, 0x0591, 0x0592, 0x0593, 0x0594, 0x0595, 0x0596, 0x0597, 0x0598, 0x0599, 0x059a, 0x059b, 0x059c, 0x059d, 0x059e, 0x059f, 0x05a0, 0x05a1, 0x05a2, 0x05a3, 0x05a4, 0x05a5, 0x05a6, 0x05a7, 0x05a8, 0x05a9, 0x05aa, 0x05ab, 0x05ac, 0x05ad, 0x05ae, 0x05af, 0x05b0, 0x05b1, 0x05b2, 0x05b3, 0x05b4, 0x05b5, 0x05b6, 0x05b7, 0x05b8, 0x05b9, 0x05ba, 0x05bb, 0x05bc, 0x05bd, 0x05be, 0x05bf, 0x05c0, 0x05c1, 0x05c2, 0x05c3, 0x05c4, 0x05c5, 0x05c6, 0x05c7, 0x05c8, 0x05c9, 0x05ca, 0x05cb, 0x05cc, 0x05cd, 0x05ce, 0x05cf, 0x05d0, 0x05d1, 0x05d2, 0x05d3, 0x05d4, 0x05d5, 0x05d6, 0x05d7, 0x05d8, 0x05d9, 0x05da, 0x05db, 0x05dc, 0x05dd, 0x05de, 0x05df, 0x05e0, 0x05e1, 0x05e2, 0x05e3, 0x05e4, 0x05e5, 0x05e6, 0x05e7, 0x05e8, 0x05e9, 0x05ea, 0x05eb, 0x05ec, 0x05ed, 0x05ee, 0x05ef, 0x05f0, 0x05f1, 0x05f2, 0x05f3, 0x05f4, 0x05f5, 0x05f6, 0x05f7, 0x05f8, 0x05f9, 0x05fa, 0x05fb, 0x05fc, 0x05fd, 0x05fe, 0x05ff }; /* Translate some Unicode characters to upper case. */ ucs4_t u_toupper(ucs4_t u) { return (u < 0x0600)? upper[u]: u; } suite3270-4.1/Common/trace.c000066400000000000000000000576211413735575200155440ustar00rootroot00000000000000/* * Copyright (c) 1993-2016, 2018-2020 Paul Mattes. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the names of Paul Mattes nor the names of his contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO * EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * trace.c * 3270 data stream tracing. * */ #include "globals.h" #include #include #include #include #include #include "3270ds.h" #include "appres.h" #include "ctlr.h" #include "actions.h" #include "codepage.h" #include "child.h" #include "ctlrc.h" #include "find_console.h" #include "fprint_screen.h" #include "lazya.h" #include "menubar.h" #include "names.h" #include "nvt.h" #include "popups.h" #include "print_screen.h" #include "product.h" #include "resources.h" #include "save.h" #include "status.h" #include "task.h" #include "telnet.h" #include "telnet_core.h" #include "toggles.h" #include "trace.h" #include "trace_gui.h" #include "utf8.h" #include "utils.h" #if defined(_WIN32) /*[*/ # include "w3misc.h" # include "windirs.h" # include "winprint.h" #endif /*]*/ /* Size of the data stream trace buffer. */ #define TRACE_DS_BUFSIZE (4*1024) /* Wrap column for data stream tracing. */ #define TRACE_DS_WRAP 75 /* Maximum size of a tracefile header. */ #define MAX_HEADER_SIZE (32*1024) /* Minimum size of a trace file. */ #define MIN_TRACEFILE_SIZE (64*1024) #define MIN_TRACEFILE_SIZE_NAME "64K" /* System calls which may not be there. */ #if !defined(HAVE_FSEEKO) /*[*/ #define fseeko(s, o, w) fseek(s, (long)o, w) #define ftello(s) (off_t)ftell(s) #endif /*]*/ #if defined(EILSEQ) /*[*/ # define IS_EILSEQ(e) ((e) == EILSEQ) #else /*]*/ # define IS_EILSEQ(e) 0 #endif /*]*/ /* Typedefs */ /* Statics */ static size_t dscnt = 0; #if !defined(_WIN32) /*[*/ static int tracewindow_pid = -1; #else /*][*/ static HANDLE tracewindow_handle = NULL; #endif /*]*/ static FILE *tracef = NULL; static char *tracef_bufptr = NULL; static off_t tracef_size = 0; static off_t tracef_max = 0; static char *onetime_tracefile_name = NULL; static void vwtrace(bool do_ts, const char *fmt, va_list args); static void wtrace(bool do_ts, const char *fmt, ...); static char *create_tracefile_header(const char *mode); static void stop_tracing(void); /* Globals */ bool trace_skipping = false; char *tracefile_name = NULL; /* Statics */ static bool wrote_ts = false; /* display a (row,col) */ const char * rcba(int baddr) { return lazyaf("(%d,%d)", baddr/COLS + 1, baddr%COLS + 1); } /* Data Stream trace print, handles line wraps */ /* * This function is careful to do line breaks based on wchar_t's, not * bytes, so multi-byte characters are traced properly. * However, it doesn't know that DBCS characters are two columns wide, so it * will get those wrong and break too late. To get that right, it needs some * sort of function to tell it that a wchar_t is double-width, which we lack at * the moment. * * If wchar_t's are Unicode, it could perhaps use some sort of heuristic based * on which plane the character is in. */ static void trace_ds_s(char *s, bool can_break) { size_t len = strlen(s); size_t len0 = len + 1; size_t wlen; bool nl = false; wchar_t *w_buf; /* wchar_t translation of s */ wchar_t *w_cur; /* current wchar_t pointer */ wchar_t *w_chunk; /* transient wchar_t buffer */ char *mb_chunk; /* transient multibyte buffer */ if (!toggled(TRACING) || tracef == NULL || !len) { return; } /* Allocate buffers for chunks of output data. */ mb_chunk = Malloc(len0); w_chunk = (wchar_t *)Malloc(len0 * sizeof(wchar_t)); /* Convert the input string to wchar_t's. */ w_buf = (wchar_t *)Malloc(len0 * sizeof(wchar_t)); wlen = mbstowcs(w_buf, s, len); if (wlen == (size_t)-1) { Error("trace_ds_s: mbstowcs failed"); } w_cur = w_buf; /* Check for a trailing newline. */ if (len && s[len-1] == '\n') { wlen--; nl = true; } if (!can_break && dscnt + wlen >= TRACE_DS_WRAP) { wtrace(false, "...\n... "); dscnt = 0; } while (dscnt + wlen >= TRACE_DS_WRAP) { size_t plen = TRACE_DS_WRAP - dscnt; size_t mblen; if (plen) { memcpy(w_chunk, w_cur, plen * sizeof(wchar_t)); w_chunk[plen] = 0; mblen = wcstombs(mb_chunk, w_chunk, len0); if (mblen == 0 || mblen == (size_t)-1) { Error("trace_ds_s: wcstombs 1 failed"); } } else { mb_chunk[0] = '\0'; mblen = 0; } wtrace(false, "%.*s ...\n... ", mblen, mb_chunk); dscnt = 4; w_cur += plen; wlen -= plen; } if (wlen) { size_t mblen; memcpy(w_chunk, w_cur, wlen * sizeof(wchar_t)); w_chunk[wlen] = 0; mblen = wcstombs(mb_chunk, w_chunk, len0); if (mblen == 0 || mblen == (size_t)-1) Error("trace_ds_s: wcstombs 2 failed"); wtrace(false, "%.*s", mblen, mb_chunk); dscnt += wlen; } if (nl) { wtrace(false, "\n"); dscnt = 0; } Free(mb_chunk); Free(w_buf); Free(w_chunk); } /* * External interface to data stream tracing -- no timestamps, automatic line * wraps. */ void trace_ds(const char *fmt, ...) { va_list args; char *s; if (!toggled(TRACING) || tracef == NULL) { return; } /* print out remainder of message */ va_start(args, fmt); s = xs_vbuffer(fmt, args); va_end(args); trace_ds_s(s, true); Free(s); } /* Conditional event trace. */ void vtrace(const char *fmt, ...) { va_list args; if (!toggled(TRACING) || tracef == NULL) { return; } /* print out message */ va_start(args, fmt); vwtrace(true, fmt, args); va_end(args); } /* Conditional event trace. */ void ntvtrace(const char *fmt, ...) { va_list args; if (!toggled(TRACING) || tracef == NULL) { return; } /* print out message */ va_start(args, fmt); vwtrace(false, fmt, args); va_end(args); } /* * Generate a timestamp for the trace file. */ static char * gen_ts(void) { struct timeval tv; time_t t; struct tm *tm; gettimeofday(&tv, NULL); t = tv.tv_sec; tm = localtime(&t); return lazyaf("%d%02d%02d.%02d%02d%02d.%03d ", tm->tm_year + 1900, tm->tm_mon + 1, tm->tm_mday, tm->tm_hour, tm->tm_min, tm->tm_sec, (int)(tv.tv_usec / 1000L)); } /* * Write to the trace file, varargs style. * This is the only function that actually does output to the trace file -- * all others are wrappers around this function. */ static void vwtrace(bool do_ts, const char *fmt, va_list args) { size_t n2w_left, n2w, nw; char *ts; char *buf = NULL; char *bp; /* Ugly hack to write into a memory buffer. */ if (tracef_bufptr != NULL) { if (do_ts) { tracef_bufptr += sprintf(tracef_bufptr, "%s", gen_ts()); } tracef_bufptr += vsprintf(tracef_bufptr, fmt, args); return; } if (tracef == NULL) { return; } ts = NULL; buf = xs_vbuffer(fmt, args); n2w_left = strlen(buf); bp = buf; while (n2w_left > 0) { char *nl; bool wrote_nl = false; if (do_ts && !wrote_ts) { if (ts == NULL) { ts = gen_ts(); } fwrite(ts, strlen(ts), 1, tracef); fflush(tracef); wrote_ts = true; } nl = strchr(bp, '\n'); if (nl != NULL) { wrote_nl = true; n2w = nl - bp + 1; } else { n2w = n2w_left; } nw = fwrite(bp, n2w, 1, tracef); if (nw == 1) { fflush(tracef); } else { if (errno != EPIPE && !IS_EILSEQ(errno)) { popup_an_errno(errno, "Write to trace file failed"); } if (!IS_EILSEQ(errno)) { stop_tracing(); goto done; } } if (wrote_nl) { wrote_ts = false; } bp += n2w; n2w_left -= n2w; } tracef_size = ftello(tracef); done: if (buf != NULL) { Free(buf); } return; } /* Write to the trace file. */ static void wtrace(bool do_ts, const char *fmt, ...) { if (tracef != NULL) { va_list args; va_start(args, fmt); vwtrace(do_ts, fmt, args); va_end(args); } } static void stop_tracing(void) { if (tracef != NULL && tracef != stdout) { fclose(tracef); } tracef = NULL; if (toggled(TRACING)) { toggle_toggle(TRACING); menubar_retoggle(TRACING); } } /* Check for a trace file rollover event. */ void trace_rollover_check(void) { if (tracef == NULL || tracef_max == 0) { return; } /* See if we've reached a rollover point. */ if (tracef_size >= tracef_max) { char *alt_filename; char *new_header; #if defined(_WIN32) /*[*/ char *period; #endif /*]*/ /* Close up this file. */ wtrace(true, "Trace rolled over\n"); fclose(tracef); tracef = NULL; /* Unlink and rename the alternate file. */ #if defined(_WIN32) /*[*/ period = strrchr(tracefile_name, '.'); if (period != NULL) { alt_filename = xs_buffer("%.*s-%s", (int)(period - tracefile_name), tracefile_name, period); } else #endif /*]*/ { alt_filename = xs_buffer("%s-", tracefile_name); } unlink(alt_filename); rename(tracefile_name, alt_filename); Free(alt_filename); alt_filename = NULL; tracef = fopen(tracefile_name, "w"); if (tracef == NULL) { popup_an_errno(errno, "%s", tracefile_name); return; } /* Initialize it. */ tracef_size = 0L; SETLINEBUF(tracef); new_header = create_tracefile_header("rolled over"); wtrace(false, new_header); Free(new_header); } } static int trace_reason; /* Create a trace file header. */ static char * create_tracefile_header(const char *trace_mode) { char *buf; int i; tnv_t *tnv; char *setting; size_t len; /* Create a buffer and redirect output. */ buf = Malloc(MAX_HEADER_SIZE); tracef_bufptr = buf; /* Display current status */ wtrace(true, "Trace %s\n", trace_mode); wtrace(false, " Version: %s\n", build); wtrace(false, " Build options: %s\n", build_options()); save_yourself(); wtrace(false, " Command: %s\n", command_string); wtrace(false, " Model %s, %d rows x %d cols", model_name, maxROWS, maxCOLS); wtrace(false, ", %s display", appres.interactive.mono? "monochrome": "color"); if (mode.extended) { wtrace(false, ", extended data stream"); } wtrace(false, ", %s emulation", mode.m3279 ? "color" : "monochrome"); wtrace(false, ", code page %s", get_codepage_name()); if (toggled(APL_MODE)) { wtrace(false, ", APL mode"); } wtrace(false, "\n"); #if !defined(_WIN32) /*[*/ wtrace(false, " Locale codeset: %s\n", locale_codeset); #else /*][*/ wtrace(false, " ANSI codepage: %d\n", GetACP()); # if defined(_WIN32) /*[*/ wtrace(false, " Local codepage: %d\n", appres.local_cp); # endif /*]*/ #endif /*]*/ wtrace(false, " Host codepage: %d", (int)(cgcsgid & 0xffff)); if (dbcs) { wtrace(false, "+%d", (int)(cgcsgid_dbcs & 0xffff)); } wtrace(false, "\n"); #if defined(_WIN32) /*[*/ wtrace(false, " Docs: %s\n", mydocs3270? mydocs3270: "(null)"); wtrace(false, " Install dir: %s\n", instdir? instdir: "(null)"); wtrace(false, " Desktop: %s\n", mydesktop? mydesktop: "(null)"); #endif /*]*/ wtrace(false, " Settings:"); len = 10; tnv = toggle_values(); for (i = 0; tnv[i].name != NULL; i++) { if (tnv[i].value != NULL) { setting = xs_buffer("%s=%s", tnv[i].name, tnv[i].value); } else { setting = xs_buffer("%s=", tnv[i].name); } if (len + 1 + strlen(setting) >= 80) { wtrace(false, "\n "); len = 1; } wtrace(false, " %s", setting); len += 1 + strlen(setting); Free(setting); } wtrace(false, "\n"); if (HALF_CONNECTED) { wtrace(false, " Connected to %s, port %u\n", current_host, current_port); } wtrace(false, " Connection state: %s\n", state_name[cstate]); /* Snap the current TELNET options. */ if (net_snap_options()) { wtrace(false, " TELNET state:\n"); trace_netdata('<', obuf, obptr - obuf); } /* Dump the screen contents and modes into the trace file. */ if (CONNECTED) { /* * Note that if the screen is not formatted, we do not * attempt to save what's on it. However, if we're in * 3270 SSCP-LU or NVT mode, we'll do a dummy, empty * write to ensure that the display is in the right * mode. */ if (IN_3270) { wtrace(false, " Screen contents (%s3270) %sformatted:\n", IN_E? "TN3270E-": "", formatted? "": "un"); obptr = obuf; net_add_dummy_tn3270e(); ctlr_snap_buffer(); space3270out(2); net_add_eor(obuf, obptr - obuf); obptr += 2; trace_netdata('<', obuf, obptr - obuf); obptr = obuf; if (ctlr_snap_modes()) { wtrace(false, " 3270 modes:\n"); space3270out(2); net_add_eor(obuf, obptr - obuf); obptr += 2; trace_netdata('<', obuf, obptr - obuf); } } else if (IN_E) { obptr = obuf; net_add_dummy_tn3270e(); wtrace(false, " Screen contents (%s):\n", IN_SSCP? "SSCP-LU": "TN3270E-NVT"); if (IN_SSCP) { ctlr_snap_buffer_sscp_lu(); } else if (IN_NVT) { nvt_snap(); } space3270out(2); net_add_eor(obuf, obptr - obuf); obptr += 2; trace_netdata('<', obuf, obptr - obuf); if (IN_NVT) { wtrace(false, " NVT modes:\n"); obptr = obuf; nvt_snap_modes(); trace_netdata('<', obuf, obptr - obuf); } } else if (IN_NVT) { obptr = obuf; wtrace(false, " Screen contents (NVT):\n"); nvt_snap(); trace_netdata('<', obuf, obptr - obuf); wtrace(false, " NVT modes:\n"); obptr = obuf; nvt_snap_modes(); trace_netdata('<', obuf, obptr - obuf); } } wtrace(false, " Data stream:\n"); /* Return the buffer. */ tracef_bufptr = NULL; return buf; } /* Calculate the tracefile maximum size. */ static void get_tracef_max(void) { static bool calculated = false; char *ptr; bool bad = false; if (calculated) { return; } calculated = true; if (appres.trace_file_size == NULL || !strcmp(appres.trace_file_size, "0") || !strncasecmp(appres.trace_file_size, "none", strlen(appres.trace_file_size))) { tracef_max = 0; return; } tracef_max = strtoul(appres.trace_file_size, &ptr, 0); if (tracef_max == 0 || ptr == appres.trace_file_size || *(ptr + 1)) { bad = true; } else switch (*ptr) { case 'k': case 'K': tracef_max *= 1024; break; case 'm': case 'M': tracef_max *= 1024 * 1024; break; case '\0': break; default: bad = true; break; } if (bad) { tracef_max = MIN_TRACEFILE_SIZE; trace_gui_bad_size(MIN_TRACEFILE_SIZE_NAME); } else if (tracef_max < MIN_TRACEFILE_SIZE) { tracef_max = MIN_TRACEFILE_SIZE; } } /* Parse the name '/dev/fd', so we can simulate it. */ static int get_devfd(const char *pathname) { unsigned long fd; char *ptr; if (strncmp(pathname, "/dev/fd/", 8)) { return -1; } fd = strtoul(pathname + 8, &ptr, 10); if (ptr == pathname + 8 || *ptr != '\0' || fd > INT_MAX) { return -1; } return fd; } #if !defined(_WIN32) /*[*/ /* The trace window process exited. */ static void trace_exited(ioid_t id, int status) { tracewindow_pid = -1; } /* * Start up a window to monitor the trace file. * * @param[in] path Trace file path. * @param[in] port Port to connect to. */ static void start_trace_window(const char *path) { const char *errmsg; console_desc_t *t = find_console(&errmsg); const char **argv = NULL; int argc = 0; if (t == NULL) { popup_an_error("Trace window: %s", errmsg); return; } switch (tracewindow_pid = fork_child()) { case 0: /* child process */ argc = console_args(t, path, &argv, argc); array_add(&argv, argc++, "/bin/sh"); array_add(&argv, argc++, "-c"); array_add(&argv, argc++, xs_buffer("tail -n+0 -f %s", path)); array_add(&argv, argc++, NULL); execvp(t->program, (char *const*)argv); perror(xs_buffer("exec(%s) failed", t->program)); _exit(1); break; default: /* parent */ AddChild(tracewindow_pid, trace_exited); break; case -1: /* error */ popup_an_errno(errno, "fork() failed"); break; } } #else /*][*/ /* * Start up a window to monitor the trace file. * * @param[in] path Trace file path. */ static void start_trace_window(const char *path) { STARTUPINFO startupinfo; PROCESS_INFORMATION process_information; memset(&startupinfo, 0, sizeof(STARTUPINFO)); startupinfo.cb = sizeof(STARTUPINFO); startupinfo.lpTitle = (char *)path; memset(&process_information, 0, sizeof(PROCESS_INFORMATION)); if (CreateProcess(lazyaf("%scatf.exe", instdir), lazyaf("\"%scatf.exe\"%s \"%s\"", instdir, appres.utf8? " -utf8": "", path), NULL, NULL, FALSE, CREATE_NEW_CONSOLE, NULL, NULL, &startupinfo, &process_information) == 0) { popup_an_error("CreateProcess(%scatf.exe \"%s\") failed: %s", instdir, path, win32_strerror(GetLastError())); } else { tracewindow_handle = process_information.hProcess; CloseHandle(process_information.hThread); } } #endif /*]*/ /* Start tracing, using the specified file. */ void tracefile_ok(const char *tfn) { int devfd = -1; char *buf; char *stfn; stfn = do_subst(tfn, DS_VARS | DS_TILDE | DS_UNIQUE); if (strchr(stfn, '\'') || ((int)strlen(stfn) > 0 && stfn[strlen(stfn)-1] == '\\')) { popup_an_error("Illegal file name: %s", tfn); Free(stfn); goto done; } tracef_max = 0; if (!strcmp(stfn, "stdout")) { tracef = stdout; } else { bool append = false; if (!strcmp(stfn, "none") || !stfn[0]) { popup_an_error("Must specify a trace file name"); } /* Get the trace file maximum. */ get_tracef_max(); /* Open and configure the file. */ if ((devfd = get_devfd(stfn)) >= 0) tracef = fdopen(dup(devfd), "a"); else if (!strncmp(stfn, ">>", 2)) { append = true; tracef = fopen(stfn + 2, "a"); } else { tracef = fopen(stfn, "w"); } if (tracef == NULL) { popup_an_errno(errno, "%s", stfn); Free(stfn); goto done; } tracef_size = ftello(tracef); Replace(tracefile_name, NewString(append? stfn + 2: stfn)); SETLINEBUF(tracef); #if !defined(_WIN32) /*[*/ fcntl(fileno(tracef), F_SETFD, 1); #endif /*]*/ } /* Start the monitor window. */ if (tracef != stdout && appres.trace_monitor && product_has_display()) { #if !defined(_WIN32) /*[*/ start_trace_window(stfn); #else /*][*/ if (windirs_flags && GD_CATF) { start_trace_window(stfn); } #endif /*]*/ } Free(stfn); /* We're really tracing, turn the flag on. */ set_toggle(trace_reason, true); menubar_retoggle(trace_reason); /* Display current status. */ buf = create_tracefile_header("started"); wtrace(false, "%s", buf); Free(buf); done: return; } #if defined(_WIN32) /*[*/ const char * default_trace_dir(void) { if (product_has_display()) { /* * wc3270 puts traces on the desktop, and if that's not defined, in * the current directory. */ return mydesktop? mydesktop: ".\\"; } else { /* ws3270 puts traces in the current directory. */ return ".\\"; } } #endif /*]*/ /* Open the trace file. */ static void tracefile_on(int reason, enum toggle_type tt) { char *tracefile_buf = NULL; char *tracefile; if (tracef != NULL) { return; } trace_reason = reason; if (appres.secure && tt != TT_INITIAL) { tracefile_ok("none"); return; } if (onetime_tracefile_name != NULL) { tracefile = tracefile_buf = onetime_tracefile_name; onetime_tracefile_name = NULL; } else if (appres.trace_file) { tracefile = appres.trace_file; } else { #if defined(_WIN32) /*[*/ tracefile_buf = xs_buffer("%s%sx3trc.$UNIQUE.txt", appres.trace_dir? appres.trace_dir: default_trace_dir(), appres.trace_dir? "\\": ""); #else /*][*/ tracefile_buf = xs_buffer("%s/x3trc.$UNIQUE", appres.trace_dir); #endif /*]*/ tracefile = tracefile_buf; } if (!trace_gui_on(reason, tt, tracefile)) { tracefile_ok(tracefile); } else { /* Turn the toggle _off_ until the popup succeeds. */ set_toggle(reason, false); } if (tracefile_buf != NULL) { Free(tracefile_buf); } } /* Close the trace file. */ static void tracefile_off(void) { wtrace(true, "Trace stopped\n"); #if !defined(_WIN32) /*[*/ if (tracewindow_pid != -1) { kill(tracewindow_pid, SIGKILL); tracewindow_pid = -1; } #else /*][*/ if (tracewindow_handle != NULL) { TerminateProcess(tracewindow_handle, 0); CloseHandle(tracewindow_handle); tracewindow_handle = NULL; } #endif /*]*/ stop_tracing(); } void trace_set_trace_file(const char *path) { Replace(onetime_tracefile_name, NewString(path)); } static void toggle_tracing(toggle_index_t ix _is_unused, enum toggle_type tt) { /* If turning on trace and no trace file, open one. */ if (toggled(TRACING) && tracef == NULL) { tracefile_on(TRACING, tt); if (tracef == NULL) { set_toggle(TRACING, false); } } else if (!toggled(TRACING) || (toggled(TRACING) && tt == TT_FINAL)) { /* If turning off trace and not still tracing events, close the trace file. */ vtrace("Cleaning up trace\n"); tracefile_off(); } } /* Trace([data|keyboard][on [filename]|off]) */ static bool Trace_action(ia_t ia, unsigned argc, const char **argv) { bool on = false; unsigned arg0 = 0; action_debug(AnTrace, ia, argc, argv); if (argc == 0) { if (toggled(TRACING) && tracefile_name != NULL) { action_output("Trace file is %s.", tracefile_name); } else { action_output("Tracing is %sabled.", toggled(TRACING)? "en": "dis"); } return true; } if (!strcasecmp(argv[0], "Data") || !strcasecmp(argv[0], "Keyboard")) { /* Skip. */ arg0++; } if (!strcasecmp(argv[arg0], KwOff)) { on = false; arg0++; if (argc > arg0) { popup_an_error(AnTrace "(): Too many arguments for '" KwOff "'"); return false; } if (!toggled(TRACING)) { return true; } } else if (!strcasecmp(argv[arg0], KwOn)) { on = true; arg0++; if (argc == arg0) { /* Nothing else to do. */ } else if (argc == arg0 + 1) { if (toggled(TRACING)) { popup_an_error(AnTrace "(): Cannot specify filename when tracing " "is already on"); return false; } else { trace_set_trace_file(argv[arg0]); } } else { popup_an_error(AnTrace "(): Too many arguments for '" KwOn "'"); return false; } } else { return action_args_are(AnTrace, KwOn, KwOff, NULL); } if ((on && !toggled(TRACING)) || (!on && toggled(TRACING))) { do_toggle(TRACING); if (!on) { action_output("Tracing stopped."); } } if (tracefile_name != NULL) { if (task_is_interactive()) { action_output("Trace file is %s.", tracefile_name); } else { popup_an_info("Trace file is %s.", tracefile_name); } } return true; } /** * Trace module registration. */ void trace_register(void) { static action_table_t actions[] = { { AnTrace, Trace_action, ACTION_KE }, }; static toggle_register_t toggles[] = { { TRACING, toggle_tracing, TOGGLE_NEED_INIT | TOGGLE_NEED_CLEANUP }, }; /* Register our actions. */ register_actions(actions, array_count(actions)); /* Register our toggles. */ register_toggles(toggles, array_count(toggles)); } suite3270-4.1/Common/trace_gui_stubs.c000066400000000000000000000035471413735575200176260ustar00rootroot00000000000000/* * Copyright (c) 2014-2015, Paul Mattes. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the names of Paul Mattes nor the names of his contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO * EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * trace_gui_stubs.c * Stubs for trace_gui.c. */ #include "globals.h" #include "toggles.h" #include "trace_gui.h" void trace_gui_bad_size(const char *default_value _is_unused) { } bool trace_gui_on(int reason _is_unused, enum toggle_type tt _is_unused, const char *tracefile _is_unused) { return false; } void trace_gui_toggle(void) { } suite3270-4.1/Common/unicode.c000077500000000000000000002605151413735575200160750ustar00rootroot00000000000000/* * Copyright (c) 2008-2021 Paul Mattes. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the names of Paul Mattes nor the names of his contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO * EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * unicode.c * 3270 Terminal Emulator * EBCDIC/Unicode translation functions */ #include "globals.h" #include #if !defined(_MSC_VER) /*[*/ # include #endif /*]*/ #include #include "3270ds.h" #include "apl.h" #include "lazya.h" #include "toupper.h" #include "unicodec.h" #include "unicode_dbcs.h" #include "utf8.h" #include "utils.h" #if defined(_WIN32) /*[*/ # include "w3misc.h" #endif /*]*/ /* * Locale-related definitions. * Note that USE_ICONV can be used to override __STDC_ISO_10646__, so that * development of iconv-based logic can be done on 10646-compliant systems. */ #if defined(__STDC_ISO_10646__) && !defined(USE_ICONV) /*[*/ # define UNICODE_WCHAR 1 #endif /*]*/ #if !defined(_WIN32) && !defined(UNICODE_WCHAR) /*[*/ # undef USE_ICONV # define USE_ICONV 1 # include #endif /*]*/ #if defined(USE_ICONV) /*[*/ iconv_t i_u2mb = (iconv_t)-1; iconv_t i_mb2u = (iconv_t)-1; #if !defined(_LIBICONV_VERSION) || _LIBICONV_VERSION <= 0x010B /*[*/ typedef char *ici_t; /* old iconv */ #else /*][*/ typedef const char *ici_t; /* new iconv */ #endif /*]*/ #endif /*]*/ bool dbcs_allowed = true; #if defined(_WIN32) /*[*/ int u_local_cp; #endif /*]*/ /* * EBCDIC-to-Unicode translation tables. * Each table maps EBCDIC codes X'41' through X'FE' to UCS-2. * Other codes are mapped programmatically. */ #define UT_SIZE 190 #define UT_OFFSET 0x41 typedef struct { char *name; unsigned short code[UT_SIZE]; const char *host_codepage; const char *cgcsgid; bool is_dbcs; } uni_t; static uni_t uni[] = { { "cp037", { 0x00a0, 0x00e2, 0x00e4, 0x00e0, 0x00e1, 0x00e3, 0x00e5, 0x00e7, 0x00f1, 0x00a2, 0x002e, 0x003c, 0x0028, 0x002b, 0x007c, 0x0026, 0x00e9, 0x00ea, 0x00eb, 0x00e8, 0x00ed, 0x00ee, 0x00ef, 0x00ec, 0x00df, 0x0021, 0x0024, 0x002a, 0x0029, 0x003b, 0x00ac, 0x002d, 0x002f, 0x00c2, 0x00c4, 0x00c0, 0x00c1, 0x00c3, 0x00c5, 0x00c7, 0x00d1, 0x00a6, 0x002c, 0x0025, 0x005f, 0x003e, 0x003f, 0x00f8, 0x00c9, 0x00ca, 0x00cb, 0x00c8, 0x00cd, 0x00ce, 0x00cf, 0x00cc, 0x0060, 0x003a, 0x0023, 0x0040, 0x0027, 0x003d, 0x0022, 0x00d8, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 0x0068, 0x0069, 0x00ab, 0x00bb, 0x00f0, 0x00fd, 0x00fe, 0x00b1, 0x00b0, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, 0x0070, 0x0071, 0x0072, 0x00aa, 0x00ba, 0x00e6, 0x00b8, 0x00c6, 0x00a4, 0x00b5, 0x007e, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078, 0x0079, 0x007a, 0x00a1, 0x00bf, 0x00d0, 0x00dd, 0x00de, 0x00ae, 0x005e, 0x00a3, 0x00a5, 0x00b7, 0x00a9, 0x00a7, 0x00b6, 0x00bc, 0x00bd, 0x00be, 0x005b, 0x005d, 0x00af, 0x00a8, 0x00b4, 0x00d7, 0x007b, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 0x0048, 0x0049, 0x00ad, 0x00f4, 0x00f6, 0x00f2, 0x00f3, 0x00f5, 0x007d, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 0x0050, 0x0051, 0x0052, 0x00b9, 0x00fb, 0x00fc, 0x00f9, 0x00fa, 0x00ff, 0x005c, 0x00f7, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, 0x0059, 0x005a, 0x00b2, 0x00d4, 0x00d6, 0x00d2, 0x00d3, 0x00d5, 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 0x0038, 0x0039, 0x00b3, 0x00db, 0x00dc, 0x00d9, 0x00da }, "37", "37", false }, { "cp273", { 0x00a0, 0x00e2, 0x007b, 0x00e0, 0x00e1, 0x00e3, 0x00e5, 0x00e7, 0x00f1, 0x00c4, 0x002e, 0x003c, 0x0028, 0x002b, 0x0021, 0x0026, 0x00e9, 0x00ea, 0x00eb, 0x00e8, 0x00ed, 0x00ee, 0x00ef, 0x00ec, 0x007e, 0x00dc, 0x0024, 0x002a, 0x0029, 0x003b, 0x005e, 0x002d, 0x002f, 0x00c2, 0x005b, 0x00c0, 0x00c1, 0x00c3, 0x00c5, 0x00c7, 0x00d1, 0x00f6, 0x002c, 0x0025, 0x005f, 0x003e, 0x003f, 0x00f8, 0x00c9, 0x00ca, 0x00cb, 0x00c8, 0x00cd, 0x00ce, 0x00cf, 0x00cc, 0x0060, 0x003a, 0x0023, 0x00a7, 0x0027, 0x003d, 0x0022, 0x00d8, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 0x0068, 0x0069, 0x00ab, 0x00bb, 0x00f0, 0x00fd, 0x00fe, 0x00b1, 0x00b0, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, 0x0070, 0x0071, 0x0072, 0x00aa, 0x00ba, 0x00e6, 0x00b8, 0x00c6, 0x00a4, 0x00b5, 0x00df, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078, 0x0079, 0x007a, 0x00a1, 0x00bf, 0x00d0, 0x00dd, 0x00de, 0x00ae, 0x00a2, 0x00a3, 0x00a5, 0x00b7, 0x00a9, 0x0040, 0x00b6, 0x00bc, 0x00bd, 0x00be, 0x00ac, 0x007c, 0x00af, 0x00a8, 0x00b4, 0x00d7, 0x00e4, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 0x0048, 0x0049, 0x00ad, 0x00f4, 0x00a6, 0x00f2, 0x00f3, 0x00f5, 0x00fc, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 0x0050, 0x0051, 0x0052, 0x00b9, 0x00fb, 0x007d, 0x00f9, 0x00fa, 0x00ff, 0x00d6, 0x00f7, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, 0x0059, 0x005a, 0x00b2, 0x00d4, 0x005c, 0x00d2, 0x00d3, 0x00d5, 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 0x0038, 0x0039, 0x00b3, 0x00db, 0x005d, 0x00d9, 0x00da }, "273", "273", false }, { "cp275", { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x00c9, 0x002e, 0x003c, 0x0028, 0x002b, 0x0021, 0x0026, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0024, 0x00c7, 0x002a, 0x0029, 0x003b, 0x005e, 0x002d, 0x002f, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x00e7, 0x002c, 0x0025, 0x005f, 0x003e, 0x003f, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x00e3, 0x003a, 0x00d5, 0x00c3, 0x0027, 0x003d, 0x0022, 0x0000, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 0x0068, 0x0069, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, 0x0070, 0x0071, 0x0072, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x007e, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078, 0x0079, 0x007a, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x00f5, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 0x0048, 0x0049, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x00e9, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 0x0050, 0x0051, 0x0052, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x005c, 0x0000, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, 0x0059, 0x005a, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 0x0038, 0x0039, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, "275", "275", false }, { "cp277", { 0x00a0, 0x00e2, 0x00e4, 0x00e0, 0x00e1, 0x00e3, 0x007d, 0x00e7, 0x00f1, 0x0023, 0x002e, 0x003c, 0x0028, 0x002b, 0x0021, 0x0026, 0x00e9, 0x00ea, 0x00eb, 0x00e8, 0x00ed, 0x00ee, 0x00ef, 0x00ec, 0x00df, 0x00a4, 0x00c5, 0x002a, 0x0029, 0x003b, 0x005e, 0x002d, 0x002f, 0x00c2, 0x00c4, 0x00c0, 0x00c1, 0x00c3, 0x0024, 0x00c7, 0x00d1, 0x00f8, 0x002c, 0x0025, 0x005f, 0x003e, 0x003f, 0x00a6, 0x00c9, 0x00ca, 0x00cb, 0x00c8, 0x00cd, 0x00ce, 0x00cf, 0x00cc, 0x0060, 0x003a, 0x00c6, 0x00d8, 0x0027, 0x003d, 0x0022, 0x0040, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 0x0068, 0x0069, 0x00ab, 0x00bb, 0x00f0, 0x00fd, 0x00fe, 0x00b1, 0x00b0, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, 0x0070, 0x0071, 0x0072, 0x00aa, 0x00ba, 0x007b, 0x00b8, 0x005b, 0x005d, 0x00b5, 0x00fc, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078, 0x0079, 0x007a, 0x00a1, 0x00bf, 0x00d0, 0x00dd, 0x00de, 0x00ae, 0x00a2, 0x00a3, 0x00a5, 0x00b7, 0x00a9, 0x00a7, 0x00b6, 0x00bc, 0x00bd, 0x00be, 0x00ac, 0x007c, 0x00af, 0x00a8, 0x00b4, 0x00d7, 0x00e6, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 0x0048, 0x0049, 0x00ad, 0x00f4, 0x00f6, 0x00f2, 0x00f3, 0x00f5, 0x00e5, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 0x0050, 0x0051, 0x0052, 0x00b9, 0x00fb, 0x007e, 0x00f9, 0x00fa, 0x00ff, 0x005c, 0x00f7, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, 0x0059, 0x005a, 0x00b2, 0x00d4, 0x00d6, 0x00d2, 0x00d3, 0x00d5, 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 0x0038, 0x0039, 0x00b3, 0x00db, 0x00dc, 0x00d9, 0x00da }, "277", "277", false }, { "cp278", { 0x00a0, 0x00e2, 0x007b, 0x00e0, 0x00e1, 0x00e3, 0x007d, 0x00e7, 0x00f1, 0x00a7, 0x002e, 0x003c, 0x0028, 0x002b, 0x0021, 0x0026, 0x0060, 0x00ea, 0x00eb, 0x00e8, 0x00ed, 0x00ee, 0x00ef, 0x00ec, 0x00df, 0x00a4, 0x00c5, 0x002a, 0x0029, 0x003b, 0x005e, 0x002d, 0x002f, 0x00c2, 0x0023, 0x00c0, 0x00c1, 0x00c3, 0x0024, 0x00c7, 0x00d1, 0x00f6, 0x002c, 0x0025, 0x005f, 0x003e, 0x003f, 0x00f8, 0x00c9, 0x00ca, 0x00cb, 0x00c8, 0x00cd, 0x00ce, 0x00cf, 0x00cc, 0x00e9, 0x003a, 0x00c4, 0x00d6, 0x0027, 0x003d, 0x0022, 0x00d8, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 0x0068, 0x0069, 0x00ab, 0x00bb, 0x00f0, 0x00fd, 0x00fe, 0x00b1, 0x00b0, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, 0x0070, 0x0071, 0x0072, 0x00aa, 0x00ba, 0x00e6, 0x00b8, 0x00c6, 0x005d, 0x00b5, 0x00fc, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078, 0x0079, 0x007a, 0x00a1, 0x00bf, 0x00d0, 0x00dd, 0x00de, 0x00ae, 0x00a2, 0x00a3, 0x00a5, 0x00b7, 0x00a9, 0x005b, 0x00b6, 0x00bc, 0x00bd, 0x00be, 0x00ac, 0x007c, 0x00af, 0x00a8, 0x00b4, 0x00d7, 0x00e4, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 0x0048, 0x0049, 0x00ad, 0x00f4, 0x00a6, 0x00f2, 0x00f3, 0x00f5, 0x00e5, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 0x0050, 0x0051, 0x0052, 0x00b9, 0x00fb, 0x007e, 0x00f9, 0x00fa, 0x00ff, 0x005c, 0x00f7, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, 0x0059, 0x005a, 0x00b2, 0x00d4, 0x0040, 0x00d2, 0x00d3, 0x00d5, 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 0x0038, 0x0039, 0x00b3, 0x00db, 0x00dc, 0x00d9, 0x00da }, "278", "278", false }, { "cp280", { 0x00a0, 0x00e2, 0x00e4, 0x007b, 0x00e1, 0x00e3, 0x00e5, 0x005c, 0x00f1, 0x00b0, 0x002e, 0x003c, 0x0028, 0x002b, 0x0021, 0x0026, 0x005d, 0x00ea, 0x00eb, 0x007d, 0x00ed, 0x00ee, 0x00ef, 0x007e, 0x00df, 0x00e9, 0x0024, 0x002a, 0x0029, 0x003b, 0x005e, 0x002d, 0x002f, 0x00c2, 0x00c4, 0x00c0, 0x00c1, 0x00c3, 0x00c5, 0x00c7, 0x00d1, 0x00f2, 0x002c, 0x0025, 0x005f, 0x003e, 0x003f, 0x00f8, 0x00c9, 0x00ca, 0x00cb, 0x00c8, 0x00cd, 0x00ce, 0x00cf, 0x00cc, 0x00f9, 0x003a, 0x00a3, 0x00a7, 0x0027, 0x003d, 0x0022, 0x00d8, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 0x0068, 0x0069, 0x00ab, 0x00bb, 0x00f0, 0x00fd, 0x00fe, 0x00b1, 0x005b, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, 0x0070, 0x0071, 0x0072, 0x00aa, 0x00ba, 0x00e6, 0x00b8, 0x00c6, 0x00a4, 0x00b5, 0x00ec, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078, 0x0079, 0x007a, 0x00a1, 0x00bf, 0x00d0, 0x00dd, 0x00de, 0x00ae, 0x00a2, 0x0023, 0x00a5, 0x00b7, 0x00a9, 0x0040, 0x00b6, 0x00bc, 0x00bd, 0x00be, 0x00ac, 0x007c, 0x00af, 0x00a8, 0x00b4, 0x00d7, 0x00e0, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 0x0048, 0x0049, 0x00ad, 0x00f4, 0x00f6, 0x00a6, 0x00f3, 0x00f5, 0x00e8, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 0x0050, 0x0051, 0x0052, 0x00b9, 0x00fb, 0x00fc, 0x0060, 0x00fa, 0x00ff, 0x00e7, 0x00f7, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, 0x0059, 0x005a, 0x00b2, 0x00d4, 0x00d6, 0x00d2, 0x00d3, 0x00d5, 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 0x0038, 0x0039, 0x00b3, 0x00db, 0x00dc, 0x00d9, 0x00da }, "280", "280", false }, { "cp284", { 0x00a0, 0x00e2, 0x00e4, 0x00e0, 0x00e1, 0x00e3, 0x00e5, 0x00e7, 0x00a6, 0x005b, 0x002e, 0x003c, 0x0028, 0x002b, 0x007c, 0x0026, 0x00e9, 0x00ea, 0x00eb, 0x00e8, 0x00ed, 0x00ee, 0x00ef, 0x00ec, 0x00df, 0x005d, 0x0024, 0x002a, 0x0029, 0x003b, 0x00ac, 0x002d, 0x002f, 0x00c2, 0x00c4, 0x00c0, 0x00c1, 0x00c3, 0x00c5, 0x00c7, 0x0023, 0x00f1, 0x002c, 0x0025, 0x005f, 0x003e, 0x003f, 0x00f8, 0x00c9, 0x00ca, 0x00cb, 0x00c8, 0x00cd, 0x00ce, 0x00cf, 0x00cc, 0x0060, 0x003a, 0x00d1, 0x0040, 0x0027, 0x003d, 0x0022, 0x00d8, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 0x0068, 0x0069, 0x00ab, 0x00bb, 0x00f0, 0x00fd, 0x00fe, 0x00b1, 0x00b0, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, 0x0070, 0x0071, 0x0072, 0x00aa, 0x00ba, 0x00e6, 0x00b8, 0x00c6, 0x00a4, 0x00b5, 0x00a8, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078, 0x0079, 0x007a, 0x00a1, 0x00bf, 0x00d0, 0x00dd, 0x00de, 0x00ae, 0x00a2, 0x00a3, 0x00a5, 0x00b7, 0x00a9, 0x00a7, 0x00b6, 0x00bc, 0x00bd, 0x00be, 0x005e, 0x0021, 0x00af, 0x007e, 0x00b4, 0x00d7, 0x007b, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 0x0048, 0x0049, 0x00ad, 0x00f4, 0x00f6, 0x00f2, 0x00f3, 0x00f5, 0x007d, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 0x0050, 0x0051, 0x0052, 0x00b9, 0x00fb, 0x00fc, 0x00f9, 0x00fa, 0x00ff, 0x005c, 0x00f7, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, 0x0059, 0x005a, 0x00b2, 0x00d4, 0x00d6, 0x00d2, 0x00d3, 0x00d5, 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 0x0038, 0x0039, 0x00b3, 0x00db, 0x00dc, 0x00d9, 0x00da }, "284", "284", false }, { "cp285", { 0x00a0, 0x00e2, 0x00e4, 0x00e0, 0x00e1, 0x00e3, 0x00e5, 0x00e7, 0x00f1, 0x0024, 0x002e, 0x003c, 0x0028, 0x002b, 0x007c, 0x0026, 0x00e9, 0x00ea, 0x00eb, 0x00e8, 0x00ed, 0x00ee, 0x00ef, 0x00ec, 0x00df, 0x0021, 0x00a3, 0x002a, 0x0029, 0x003b, 0x00ac, 0x002d, 0x002f, 0x00c2, 0x00c4, 0x00c0, 0x00c1, 0x00c3, 0x00c5, 0x00c7, 0x00d1, 0x00a6, 0x002c, 0x0025, 0x005f, 0x003e, 0x003f, 0x00f8, 0x00c9, 0x00ca, 0x00cb, 0x00c8, 0x00cd, 0x00ce, 0x00cf, 0x00cc, 0x0060, 0x003a, 0x0023, 0x0040, 0x0027, 0x003d, 0x0022, 0x00d8, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 0x0068, 0x0069, 0x00ab, 0x00bb, 0x00f0, 0x00fd, 0x00fe, 0x00b1, 0x00b0, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, 0x0070, 0x0071, 0x0072, 0x00aa, 0x00ba, 0x00e6, 0x00b8, 0x00c6, 0x00a4, 0x00b5, 0x00af, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078, 0x0079, 0x007a, 0x00a1, 0x00bf, 0x00d0, 0x00dd, 0x00de, 0x00ae, 0x00a2, 0x005b, 0x00a5, 0x00b7, 0x00a9, 0x00a7, 0x00b6, 0x00bc, 0x00bd, 0x00be, 0x005e, 0x005d, 0x007e, 0x00a8, 0x00b4, 0x00d7, 0x007b, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 0x0048, 0x0049, 0x00ad, 0x00f4, 0x00f6, 0x00f2, 0x00f3, 0x00f5, 0x007d, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 0x0050, 0x0051, 0x0052, 0x00b9, 0x00fb, 0x00fc, 0x00f9, 0x00fa, 0x00ff, 0x005c, 0x00f7, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, 0x0059, 0x005a, 0x00b2, 0x00d4, 0x00d6, 0x00d2, 0x00d3, 0x00d5, 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 0x0038, 0x0039, 0x00b3, 0x00db, 0x00dc, 0x00d9, 0x00da }, "285", "285", false }, { "cp297", { 0x00a0, 0x00e2, 0x00e4, 0x0040, 0x00e1, 0x00e3, 0x00e5, 0x005c, 0x00f1, 0x00b0, 0x002e, 0x003c, 0x0028, 0x002b, 0x0021, 0x0026, 0x007b, 0x00ea, 0x00eb, 0x007d, 0x00ed, 0x00ee, 0x00ef, 0x00ec, 0x00df, 0x00a7, 0x0024, 0x002a, 0x0029, 0x003b, 0x005e, 0x002d, 0x002f, 0x00c2, 0x00c4, 0x00c0, 0x00c1, 0x00c3, 0x00c5, 0x00c7, 0x00d1, 0x00f9, 0x002c, 0x0025, 0x005f, 0x003e, 0x003f, 0x00f8, 0x00c9, 0x00ca, 0x00cb, 0x00c8, 0x00cd, 0x00ce, 0x00cf, 0x00cc, 0x00b5, 0x003a, 0x00a3, 0x00e0, 0x0027, 0x003d, 0x0022, 0x00d8, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 0x0068, 0x0069, 0x00ab, 0x00bb, 0x00f0, 0x00fd, 0x00fe, 0x00b1, 0x005b, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, 0x0070, 0x0071, 0x0072, 0x00aa, 0x00ba, 0x00e6, 0x00b8, 0x00c6, 0x00a4, 0x0060, 0x00a8, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078, 0x0079, 0x007a, 0x00a1, 0x00bf, 0x00d0, 0x00dd, 0x00de, 0x00ae, 0x00a2, 0x0023, 0x00a5, 0x00b7, 0x00a9, 0x005d, 0x00b6, 0x00bc, 0x00bd, 0x00be, 0x00ac, 0x007c, 0x00af, 0x007e, 0x00b4, 0x00d7, 0x00e9, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 0x0048, 0x0049, 0x00ad, 0x00f4, 0x00f6, 0x00f2, 0x00f3, 0x00f5, 0x00e8, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 0x0050, 0x0051, 0x0052, 0x00b9, 0x00fb, 0x00fc, 0x00a6, 0x00fa, 0x00ff, 0x00e7, 0x00f7, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, 0x0059, 0x005a, 0x00b2, 0x00d4, 0x00d6, 0x00d2, 0x00d3, 0x00d5, 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 0x0038, 0x0039, 0x00b3, 0x00db, 0x00dc, 0x00d9, 0x00da }, "297", "297", false }, { "cp424", { 0x5d0, 0x05d1, 0x05d2, 0x05d3, 0x05d4, 0x05d5, 0x05d6, 0x05d7, 0x05d8, 0x00a2, 0x002e, 0x003c, 0x0028, 0x002b, 0x007c, 0x0026, 0x05d9, 0x05da, 0x05db, 0x05dc, 0x05dd, 0x05de, 0x05df, 0x05e0, 0x05e1, 0x0021, 0x0024, 0x002a, 0x0029, 0x003b, 0x00ac, 0x002d, 0x002f, 0x05e2, 0x05e3, 0x05e4, 0x05e5, 0x05e6, 0x05e7, 0x05e8, 0x05e9, 0x00a6, 0x002c, 0x0025, 0x005f, 0x003e, 0x003f, 0x0000, 0x05ea, 0x0000, 0x0000, 0x00a0, 0x0000, 0x0000, 0x0000, 0x21d4, 0x0060, 0x003a, 0x0023, 0x0040, 0x0027, 0x003d, 0x0022, 0x0000, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 0x0068, 0x0069, 0x00ab, 0x00bb, 0x0000, 0x0000, 0x0000, 0x0000, 0x00b0, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, 0x0070, 0x0071, 0x0072, 0x0000, 0x0000, 0x0000, 0x00b8, 0x0000, 0x00a4, 0x00b5, 0x007e, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078, 0x0079, 0x007a, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x00ae, 0x005e, 0x00a3, 0x00a5, 0x00b7, 0x00a9, 0x00a7, 0x00b6, 0x00bc, 0x00bd, 0x00be, 0x005b, 0x005d, 0x00af, 0x00a8, 0x00b4, 0x00d7, 0x007b, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 0x0048, 0x0049, 0x00ad, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x007d, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 0x0050, 0x0051, 0x0052, 0x00b9, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x005c, 0x00f7, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, 0x0059, 0x005a, 0x00b2, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 0x0038, 0x0039, 0x00b3, 0x0000, 0x0000, 0x0000, 0x0000 }, "424", "0x054501a8", false }, { "cp500", { 0x00a0, 0x00e2, 0x00e4, 0x00e0, 0x00e1, 0x00e3, 0x00e5, 0x00e7, 0x00f1, 0x005b, 0x002e, 0x003c, 0x0028, 0x002b, 0x0021, 0x0026, 0x00e9, 0x00ea, 0x00eb, 0x00e8, 0x00ed, 0x00ee, 0x00ef, 0x00ec, 0x00df, 0x005d, 0x0024, 0x002a, 0x0029, 0x003b, 0x005e, 0x002d, 0x002f, 0x00c2, 0x00c4, 0x00c0, 0x00c1, 0x00c3, 0x00c5, 0x00c7, 0x00d1, 0x00a6, 0x002c, 0x0025, 0x005f, 0x003e, 0x003f, 0x00f8, 0x00c9, 0x00ca, 0x00cb, 0x00c8, 0x00cd, 0x00ce, 0x00cf, 0x00cc, 0x0060, 0x003a, 0x0023, 0x0040, 0x0027, 0x003d, 0x0022, 0x00d8, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 0x0068, 0x0069, 0x00ab, 0x00bb, 0x00f0, 0x00fd, 0x00fe, 0x00b1, 0x00b0, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, 0x0070, 0x0071, 0x0072, 0x00aa, 0x00ba, 0x00e6, 0x00b8, 0x00c6, 0x00a4, 0x00b5, 0x007e, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078, 0x0079, 0x007a, 0x00a1, 0x00bf, 0x00d0, 0x00dd, 0x00de, 0x00ae, 0x00a2, 0x00a3, 0x00a5, 0x00b7, 0x00a9, 0x00a7, 0x00b6, 0x00bc, 0x00bd, 0x00be, 0x00ac, 0x007c, 0x00af, 0x00a8, 0x00b4, 0x00d7, 0x007b, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 0x0048, 0x0049, 0x00ad, 0x00f4, 0x00f6, 0x00f2, 0x00f3, 0x00f5, 0x007d, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 0x0050, 0x0051, 0x0052, 0x00b9, 0x00fb, 0x00fc, 0x00f9, 0x00fa, 0x00ff, 0x005c, 0x00f7, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, 0x0059, 0x005a, 0x00b2, 0x00d4, 0x00d6, 0x00d2, 0x00d3, 0x00d5, 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 0x0038, 0x0039, 0x00b3, 0x00db, 0x00dc, 0x00d9, 0x00da }, "500", "500", false }, { "cp803", { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0024, 0x002e, 0x003c, 0x0028, 0x002b, 0x007c, 0x05d0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0021, 0x00a2, 0x002a, 0x0029, 0x003b, 0x00ac, 0x002d, 0x002f, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x002c, 0x0025, 0x005f, 0x003e, 0x003f, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x003a, 0x0023, 0x0040, 0x0027, 0x003d, 0x0022, 0x0000, 0x05d1, 0x05d2, 0x05d3, 0x05d4, 0x05d5, 0x05d6, 0x05d7, 0x05d8, 0x05d9, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x05da, 0x05db, 0x05dc, 0x05dd, 0x05de, 0x05df, 0x05e0, 0x05e1, 0x05e2, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x05e3, 0x05e4, 0x05e5, 0x05e6, 0x05e7, 0x05e8, 0x05e9, 0x05ea, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 0x0048, 0x0049, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 0x0050, 0x0051, 0x0052, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, 0x0059, 0x005a, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 0x0038, 0x0039, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, "803", "0x047b0323", false }, { "cp870", { 0x00a0, 0x00e2, 0x00e4, 0x0163, 0x00e1, 0x0103, 0x010d, 0x00e7, 0x0107, 0x005b, 0x002e, 0x003c, 0x0028, 0x002b, 0x0021, 0x0026, 0x00e9, 0x0119, 0x00eb, 0x016f, 0x00ed, 0x00ee, 0x013e, 0x013a, 0x00df, 0x005d, 0x0024, 0x002a, 0x0029, 0x003b, 0x005e, 0x002d, 0x002f, 0x00c2, 0x00c4, 0x02dd, 0x00c1, 0x0102, 0x010c, 0x00c7, 0x0106, 0x007c, 0x002c, 0x0025, 0x005f, 0x003e, 0x003f, 0x02c7, 0x00c9, 0x0118, 0x00cb, 0x016e, 0x00cd, 0x00ce, 0x013d, 0x0139, 0x0060, 0x003a, 0x0023, 0x0040, 0x0027, 0x003d, 0x0022, 0x02d8, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 0x0068, 0x0069, 0x015b, 0x0148, 0x0111, 0x00fd, 0x0159, 0x015f, 0x00b0, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, 0x0070, 0x0071, 0x0072, 0x0142, 0x0144, 0x0161, 0x00b8, 0x02db, 0x00a4, 0x0105, 0x007e, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078, 0x0079, 0x007a, 0x015a, 0x0147, 0x0110, 0x00dd, 0x0158, 0x015e, 0x00b7, 0x0104, 0x017c, 0x0162, 0x017b, 0x00a7, 0x017e, 0x017a, 0x017d, 0x0179, 0x0141, 0x0143, 0x0160, 0x00a8, 0x00b4, 0x00d7, 0x007b, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 0x0048, 0x0049, 0x00ad, 0x00f4, 0x00f6, 0x0155, 0x00f3, 0x0151, 0x007d, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 0x0050, 0x0051, 0x0052, 0x011a, 0x0171, 0x00fc, 0x0165, 0x00fa, 0x011b, 0x005c, 0x00f7, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, 0x0059, 0x005a, 0x010f, 0x00d4, 0x00d6, 0x0154, 0x00d3, 0x0150, 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 0x0038, 0x0039, 0x010e, 0x0170, 0x00dc, 0x0164, 0x00da }, "870", "0x03bf0366", false }, { "cp871", { 0x00a0, 0x00e2, 0x00e4, 0x00e0, 0x00e1, 0x00e3, 0x00e5, 0x00e7, 0x00f1, 0x00fe, 0x002e, 0x003c, 0x0028, 0x002b, 0x0021, 0x0026, 0x00e9, 0x00ea, 0x00eb, 0x00e8, 0x00ed, 0x00ee, 0x00ef, 0x00ec, 0x00df, 0x00c6, 0x0024, 0x002a, 0x0029, 0x003b, 0x00d6, 0x002d, 0x002f, 0x00c2, 0x00c4, 0x00c0, 0x00c1, 0x00c3, 0x00c5, 0x00c7, 0x00d1, 0x00a6, 0x002c, 0x0025, 0x005f, 0x003e, 0x003f, 0x00f8, 0x00c9, 0x00ca, 0x00cb, 0x00c8, 0x00cd, 0x00ce, 0x00cf, 0x00cc, 0x00f0, 0x003a, 0x0023, 0x00d0, 0x0027, 0x003d, 0x0022, 0x00d8, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 0x0068, 0x0069, 0x00ab, 0x00bb, 0x0060, 0x00fd, 0x007b, 0x00b1, 0x00b0, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, 0x0070, 0x0071, 0x0072, 0x00aa, 0x00ba, 0x007d, 0x00b8, 0x005d, 0x00a4, 0x00b5, 0x00f6, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078, 0x0079, 0x007a, 0x00a1, 0x00bf, 0x0040, 0x00dd, 0x005b, 0x00ae, 0x00a2, 0x00a3, 0x00a5, 0x00b7, 0x00a9, 0x00a7, 0x00b6, 0x00bc, 0x00bd, 0x00be, 0x00ac, 0x007c, 0x00af, 0x00a8, 0x005c, 0x00d7, 0x00de, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 0x0048, 0x0049, 0x00ad, 0x00f4, 0x007e, 0x00f2, 0x00f3, 0x00f5, 0x00e6, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 0x0050, 0x0051, 0x0052, 0x00b9, 0x00fb, 0x00fc, 0x00f9, 0x00fa, 0x00ff, 0x00b4, 0x00f7, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, 0x0059, 0x005a, 0x00b2, 0x00d4, 0x005e, 0x00d2, 0x00d3, 0x00d5, 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 0x0038, 0x0039, 0x00b3, 0x00db, 0x00dc, 0x00d9, 0x00da }, "871", "871", false }, { "cp875", { 0x0391, 0x0392, 0x0393, 0x0394, 0x0395, 0x0396, 0x0397, 0x0398, 0x0399, 0x005b, 0x002e, 0x003c, 0x0028, 0x002b, 0x0021, 0x0026, 0x039a, 0x039b, 0x039c, 0x039d, 0x039e, 0x039f, 0x03a0, 0x03a1, 0x03a3, 0x005d, 0x0024, 0x002a, 0x0029, 0x003b, 0x005e, 0x002d, 0x002f, 0x03a4, 0x03a5, 0x03a6, 0x03a7, 0x03a8, 0x03a9, 0x03aa, 0x03ab, 0x0000, 0x002c, 0x0025, 0x005f, 0x003e, 0x003f, 0x00a8, 0x0386, 0x0388, 0x0389, 0x2207, 0x038a, 0x038c, 0x038e, 0x038f, 0x0060, 0x003a, 0x0023, 0x0040, 0x0027, 0x003d, 0x0022, 0x0385, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 0x0068, 0x0069, 0x03b1, 0x03b2, 0x03b3, 0x03b4, 0x03b5, 0x03b6, 0x00b0, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, 0x0070, 0x0071, 0x0072, 0x03b7, 0x03b8, 0x03b9, 0x03ba, 0x03bb, 0x03bc, 0x00b4, 0x007e, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078, 0x0079, 0x007a, 0x03bd, 0x03be, 0x03bf, 0x03c0, 0x03c1, 0x03c3, 0x00a3, 0x03ac, 0x03ad, 0x03ae, 0x0390, 0x03af, 0x03cc, 0x03cd, 0x03b0, 0x03ce, 0x03c2, 0x03c4, 0x03c5, 0x03c6, 0x03c7, 0x03c8, 0x007b, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 0x0048, 0x0049, 0x00ad, 0x03c9, 0x03ca, 0x03cb, 0x2018, 0x2015, 0x007d, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 0x0050, 0x0051, 0x0052, 0x00b1, 0x00bd, 0x0000, 0x00b7, 0x2019, 0x00a6, 0x005c, 0x0000, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, 0x0059, 0x005a, 0x00b2, 0x00a7, 0x0000, 0x0000, 0x00ab, 0x00ac, 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 0x0038, 0x0039, 0x00b3, 0x00a9, 0x0000, 0x0000, 0x00bb }, "875", "0x039d036b", false }, { "cp880", { 0x0000, 0x0452, 0x0453, 0x0451, 0x0000, 0x0455, 0x0456, 0x0457, 0x0458, 0x005b, 0x002e, 0x003c, 0x0028, 0x002b, 0x0021, 0x0026, 0x0459, 0x045a, 0x045b, 0x045c, 0x0000, 0x045f, 0x042a, 0x2116, 0x0402, 0x005d, 0x0024, 0x002a, 0x0029, 0x003b, 0x005e, 0x002d, 0x002f, 0x0403, 0x0401, 0x0000, 0x0405, 0x0406, 0x0407, 0x0408, 0x0409, 0x00a6, 0x002c, 0x0025, 0x005f, 0x003e, 0x003f, 0x040a, 0x040b, 0x040c, 0x0000, 0x0000, 0x040f, 0x044e, 0x0430, 0x0431, 0x0000, 0x003a, 0x0023, 0x0040, 0x0027, 0x003d, 0x0022, 0x0446, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 0x0068, 0x0069, 0x0434, 0x0435, 0x0444, 0x0433, 0x0445, 0x0438, 0x0439, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, 0x0070, 0x0071, 0x0072, 0x043a, 0x043b, 0x043c, 0x043d, 0x043e, 0x043f, 0x044f, 0x0000, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078, 0x0079, 0x007a, 0x0440, 0x0441, 0x0442, 0x0443, 0x0436, 0x0432, 0x044c, 0x044b, 0x0437, 0x0448, 0x044d, 0x0449, 0x0447, 0x044a, 0x042e, 0x0410, 0x0411, 0x0426, 0x0414, 0x0415, 0x0424, 0x0413, 0x0000, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 0x0048, 0x0049, 0x0425, 0x0418, 0x0419, 0x041a, 0x041b, 0x041c, 0x0000, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 0x0050, 0x0051, 0x0052, 0x041d, 0x041e, 0x041f, 0x042f, 0x0420, 0x0421, 0x005c, 0x00a4, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, 0x0059, 0x005a, 0x0422, 0x0423, 0x0416, 0x0412, 0x042c, 0x042b, 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 0x0038, 0x0039, 0x0417, 0x0428, 0x042d, 0x0429, 0x0427 }, "880", "0x03bf0370", false }, { "cp930", { /* 0x40 */ 0xff61, 0xff62, 0xff63, 0xff64, 0xff65, 0xff66, 0xff67, /* 0x48 */ 0xff68, 0xff69, 0x00a3, 0x002e, 0x003c, 0x0028, 0x002b, 0x007c, /* 0x50 */ 0x0026, 0xff6a, 0xff6b, 0xff6c, 0xff6d, 0xff6e, 0xff6f, 0x0000, /* 0x58 */ 0xff70, 0x0000, 0x0021, 0x00a5, 0x002a, 0x0029, 0x003b, 0x00ac, /* 0x60 */ 0x002d, 0x002f, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, /* 0x68 */ 0x0067, 0x0068, 0x0000, 0x002c, 0x0025, 0x005f, 0x003e, 0x003f, /* 0x70 */ 0x005b, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, /* 0x78 */ 0x0070, 0x0060, 0x003a, 0x0023, 0x0040, 0x0027, 0x003d, 0x0022, /* 0x80 */ 0x005d, 0xff67, 0xff68, 0xff73, 0xff74, 0xff75, 0xff76, 0xff77, /* 0x88 */ 0xff78, 0xff79, 0xff7a, 0x0071, 0xff7b, 0xff7c, 0xff7d, 0xff7e, /* 0x90 */ 0xff7f, 0xff80, 0xff81, 0xff82, 0xff83, 0xff84, 0xff85, 0xff86, /* 0x98 */ 0xff87, 0xff88, 0xff89, 0x0072, 0x0000, 0xff8a, 0xff8b, 0xff8c, /* 0xa0 */ 0x007e, 0x00af, 0xff8d, 0xff8e, 0xff8f, 0xff90, 0xff91, 0xff92, /* 0xa8 */ 0xff93, 0xff94, 0xff95, 0x0073, 0xff96, 0xff97, 0xff98, 0xff99, /* 0xb0 */ 0x005e, 0x00a2, 0x005c, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078, /* 0xb8 */ 0x0079, 0x007a, 0xff9a, 0xff9b, 0xff9c, 0xff9d, 0xff9e, 0xff9f, /* 0xc0 */ 0x007b, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, /* 0xc8 */ 0x0048, 0x0049, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xd0 */ 0x007d, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 0x0050, /* 0xd8 */ 0x0051, 0x0052, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xe0 */ 0x0024, 0x20ac, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, /* 0xe8 */ 0x0059, 0x005a, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xf0 */ 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, /* 0xf8 */ 0x0038, 0x0039, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 } , "930", "0x04940122" /* 1172, 0290 */, true }, { "cp935", { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x00a3, 0x002e, 0x003c, 0x0028, 0x002b, 0x007c, 0x0026, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0021, 0x00a5, 0x002a, 0x0029, 0x003b, 0x00ac, 0x002d, 0x002f, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x002c, 0x0025, 0x005f, 0x003e, 0x003f, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0060, 0x003a, 0x0023, 0x0040, 0x0027, 0x003d, 0x0022, 0x0000, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 0x0068, 0x0069, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, 0x0070, 0x0071, 0x0072, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x007e, 0x00af, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078, 0x0079, 0x007a, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x005e, 0x0000, 0x005c, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x005b, 0x005d, 0x0000, 0x0000, 0x0000, 0x0000, 0x007b, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 0x0048, 0x0049, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x007d, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 0x0050, 0x0051, 0x0052, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0024, 0x0000, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, 0x0059, 0x005a, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 0x0038, 0x0039, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, "935", "0x04960344" /* 1174, 836 */, true }, { "cp937", { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x00a2, 0x002e, 0x003c, 0x0028, 0x002b, 0x007c, 0x0026, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0021, 0x0024, 0x002a, 0x0029, 0x003b, 0x00ac, 0x002d, 0x002f, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x00a6, 0x002c, 0x0025, 0x005f, 0x003e, 0x003f, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0060, 0x003a, 0x0023, 0x0040, 0x0027, 0x003d, 0x0022, 0x0000, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 0x0068, 0x0069, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, 0x0070, 0x0071, 0x0072, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x007e, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078, 0x0079, 0x007a, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x005e, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x005b, 0x005d, 0x0000, 0x0000, 0x0000, 0x0000, 0x007b, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 0x0048, 0x0049, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x007d, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 0x0050, 0x0051, 0x0052, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x005c, 0x0000, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, 0x0059, 0x005a, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 0x0038, 0x0039, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, "937", "0x04970025" /* 1175, 037 */, true }, { "cp939", { /* 40 */ 0x0000, 0xff61, 0xff62, 0xff63, 0xff64, 0xff65, 0xff66, /* 48 */ 0xff67, 0xff68, 0x00a2, 0x002e, 0x003c, 0x0028, 0x002b, 0x007c, /* 50 */ 0x0026, 0xff69, 0xff6a, 0xff6b, 0xff6c, 0xff6d, 0xff6e, 0xff6f, /* 58 */ 0xff70, 0xff71, 0x0021, 0x0024, 0x002a, 0x0029, 0x003b, 0x00ac, /* 60 */ 0x002d, 0x002f, 0xff72, 0xff73, 0xff74, 0xff75, 0xff76, 0xff77, /* 68 */ 0xff78, 0xff79, 0x0000, 0x002c, 0x0025, 0x005f, 0x003e, 0x003f, /* 70 */ 0xff7a, 0xff7b, 0xff7c, 0xff7d, 0xff7e, 0xff7f, 0xff80, 0xff81, /* 78 */ 0xff82, 0x0060, 0x003a, 0x0023, 0x0040, 0x0027, 0x003d, 0x0022, /* 80 */ 0x0000, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, /* 88 */ 0x0068, 0x0069, 0xff83, 0xff84, 0xff85, 0xff86, 0xff87, 0xff88, /* 90 */ 0x0000, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, 0x0070, /* 98 */ 0x0071, 0x0072, 0xff89, 0xff8a, 0xff8b, 0xff8c, 0xff8d, 0xff8e, /* a0 */ 0x00af, 0x007e, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078, /* a8 */ 0x0079, 0x007a, 0xff8f, 0xff90, 0xff91, 0x005b, 0xff92, 0xff93, /* b0 */ 0x005e, 0x00a3, 0x00a5, 0xff94, 0xff95, 0xff96, 0xff97, 0xff98, /* b8 */ 0xff99, 0xff9a, 0xff9b, 0xff9c, 0xff9d, 0x005d, 0xff9e, 0xff9f, /* c0 */ 0x007b, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, /* c8 */ 0x0048, 0x0049, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* d0 */ 0x007d, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 0x0050, /* d8 */ 0x0051, 0x0052, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* e0 */ 0x005c, 0x20ac, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, /* e8 */ 0x0059, 0x005a, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* f0 */ 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, /* f8 */ 0x0038, 0x0039, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, "939", "0x04940403" /* 1172, 1027 */, true }, { "cp1026", { 0x00a0, 0x00e2, 0x00e4, 0x00e0, 0x00e1, 0x00e3, 0x00e5, 0x007b, 0x00f1, 0x00c7, 0x002e, 0x003c, 0x0028, 0x002b, 0x0021, 0x0026, 0x00e9, 0x00ea, 0x00eb, 0x00e8, 0x00ed, 0x00ee, 0x00ef, 0x00ec, 0x00df, 0x011e, 0x0130, 0x002a, 0x0029, 0x003b, 0x005e, 0x002d, 0x002f, 0x00c2, 0x00c4, 0x00c0, 0x00c1, 0x00c3, 0x00c5, 0x005b, 0x00d1, 0x015f, 0x002c, 0x0025, 0x005f, 0x003e, 0x003f, 0x00f8, 0x00c9, 0x00ca, 0x00cb, 0x00c8, 0x00cd, 0x00ce, 0x00cf, 0x00cc, 0x0131, 0x003a, 0x00d6, 0x015e, 0x0027, 0x003d, 0x00dc, 0x00d8, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 0x0068, 0x0069, 0x00ab, 0x00bb, 0x007d, 0x0060, 0x00a6, 0x00b1, 0x00b0, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, 0x0070, 0x0071, 0x0072, 0x00aa, 0x00ba, 0x00e6, 0x02db, 0x00c6, 0x00a4, 0x00b5, 0x00f6, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078, 0x0079, 0x007a, 0x00a1, 0x00bf, 0x005d, 0x0024, 0x0040, 0x00ae, 0x00a2, 0x00a3, 0x00a5, 0x00b7, 0x00a9, 0x00a7, 0x00b6, 0x00bc, 0x00bd, 0x00be, 0x00ac, 0x007c, 0x2014, 0x00a8, 0x00b4, 0x00d7, 0x00e7, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 0x0048, 0x0049, 0x00ad, 0x00f4, 0x007e, 0x00f2, 0x00f3, 0x00f5, 0x011f, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 0x0050, 0x0051, 0x0052, 0x00b9, 0x00fb, 0x005c, 0x00f9, 0x00fa, 0x00ff, 0x00fc, 0x00f7, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, 0x0059, 0x005a, 0x00b2, 0x00d4, 0x0023, 0x00d2, 0x00d3, 0x00d5, 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 0x0038, 0x0039, 0x00b3, 0x00db, 0x0022, 0x00d9, 0x00da }, "1026", "0x04800402", false }, { "cp1047", { 0x00a0, 0x00e2, 0x00e4, 0x00e0, 0x00e1, 0x00e3, 0x00e5, 0x00e7, 0x00f1, 0x00a2, 0x002e, 0x003c, 0x0028, 0x002b, 0x007c, 0x0026, 0x00e9, 0x00ea, 0x00eb, 0x00e8, 0x00ed, 0x00ee, 0x00ef, 0x00ec, 0x00df, 0x0021, 0x0024, 0x002a, 0x0029, 0x003b, 0x005e, 0x002d, 0x002f, 0x00c2, 0x00c4, 0x00c0, 0x00c1, 0x00c3, 0x00c5, 0x00c7, 0x00d1, 0x00a6, 0x002c, 0x0025, 0x005f, 0x003e, 0x003f, 0x00f8, 0x00c9, 0x00ca, 0x00cb, 0x00c8, 0x00cd, 0x00ce, 0x00cf, 0x00cc, 0x0060, 0x003a, 0x0023, 0x0040, 0x0027, 0x003d, 0x0022, 0x00d8, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 0x0068, 0x0069, 0x00ab, 0x00bb, 0x00f0, 0x00fd, 0x00fe, 0x00b1, 0x00b0, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, 0x0070, 0x0071, 0x0072, 0x00aa, 0x00ba, 0x00e6, 0x00b8, 0x00c6, 0x00a4, 0x00b5, 0x007e, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078, 0x0079, 0x007a, 0x00a1, 0x00bf, 0x00d0, 0x005b, 0x00de, 0x00ae, 0x00ac, 0x00a3, 0x00a5, 0x00b7, 0x00a9, 0x00a7, 0x00b6, 0x00bc, 0x00bd, 0x00be, 0x00dd, 0x00a8, 0x00af, 0x005d, 0x00b4, 0x00d7, 0x007b, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 0x0048, 0x0049, 0x00ad, 0x00f4, 0x00f6, 0x00f2, 0x00f3, 0x00f5, 0x007d, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 0x0050, 0x0051, 0x0052, 0x00b9, 0x00fb, 0x00fc, 0x00f9, 0x00fa, 0x00ff, 0x005c, 0x00f7, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, 0x0059, 0x005a, 0x00b2, 0x00d4, 0x00d6, 0x00d2, 0x00d3, 0x00d5, 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 0x0038, 0x0039, 0x00b3, 0x00db, 0x00dc, 0x00d9, 0x00da }, "1047", "1047", false }, { "cp1140", { 0x00a0, 0x00e2, 0x00e4, 0x00e0, 0x00e1, 0x00e3, 0x00e5, 0x00e7, 0x00f1, 0x00a2, 0x002e, 0x003c, 0x0028, 0x002b, 0x007c, 0x0026, 0x00e9, 0x00ea, 0x00eb, 0x00e8, 0x00ed, 0x00ee, 0x00ef, 0x00ec, 0x00df, 0x0021, 0x0024, 0x002a, 0x0029, 0x003b, 0x00ac, 0x002d, 0x002f, 0x00c2, 0x00c4, 0x00c0, 0x00c1, 0x00c3, 0x00c5, 0x00c7, 0x00d1, 0x00a6, 0x002c, 0x0025, 0x005f, 0x003e, 0x003f, 0x00f8, 0x00c9, 0x00ca, 0x00cb, 0x00c8, 0x00cd, 0x00ce, 0x00cf, 0x00cc, 0x0060, 0x003a, 0x0023, 0x0040, 0x0027, 0x003d, 0x0022, 0x00d8, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 0x0068, 0x0069, 0x00ab, 0x00bb, 0x00f0, 0x00fd, 0x00fe, 0x00b1, 0x00b0, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, 0x0070, 0x0071, 0x0072, 0x00aa, 0x00ba, 0x00e6, 0x00b8, 0x00c6, 0x20ac, 0x00b5, 0x007e, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078, 0x0079, 0x007a, 0x00a1, 0x00bf, 0x00d0, 0x00dd, 0x00de, 0x00ae, 0x005e, 0x00a3, 0x00a5, 0x00b7, 0x00a9, 0x00a7, 0x00b6, 0x00bc, 0x00bd, 0x00be, 0x005b, 0x005d, 0x00af, 0x00a8, 0x00b4, 0x00d7, 0x007b, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 0x0048, 0x0049, 0x00ad, 0x00f4, 0x00f6, 0x00f2, 0x00f3, 0x00f5, 0x007d, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 0x0050, 0x0051, 0x0052, 0x00b9, 0x00fb, 0x00fc, 0x00f9, 0x00fa, 0x00ff, 0x005c, 0x00f7, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, 0x0059, 0x005a, 0x00b2, 0x00d4, 0x00d6, 0x00d2, 0x00d3, 0x00d5, 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 0x0038, 0x0039, 0x00b3, 0x00db, 0x00dc, 0x00d9, 0x00da }, "1140", "0x02b70474" /* 695, 1140 */, false }, { "cp1141", { 0x00a0, 0x00e2, 0x007b, 0x00e0, 0x00e1, 0x00e3, 0x00e5, 0x00e7, 0x00f1, 0x00c4, 0x002e, 0x003c, 0x0028, 0x002b, 0x0021, 0x0026, 0x00e9, 0x00ea, 0x00eb, 0x00e8, 0x00ed, 0x00ee, 0x00ef, 0x00ec, 0x007e, 0x00dc, 0x0024, 0x002a, 0x0029, 0x003b, 0x005e, 0x002d, 0x002f, 0x00c2, 0x005b, 0x00c0, 0x00c1, 0x00c3, 0x00c5, 0x00c7, 0x00d1, 0x00f6, 0x002c, 0x0025, 0x005f, 0x003e, 0x003f, 0x00f8, 0x00c9, 0x00ca, 0x00cb, 0x00c8, 0x00cd, 0x00ce, 0x00cf, 0x00cc, 0x0060, 0x003a, 0x0023, 0x00a7, 0x0027, 0x003d, 0x0022, 0x00d8, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 0x0068, 0x0069, 0x00ab, 0x00bb, 0x00f0, 0x00fd, 0x00fe, 0x00b1, 0x00b0, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, 0x0070, 0x0071, 0x0072, 0x00aa, 0x00ba, 0x00e6, 0x00b8, 0x00c6, 0x20ac, 0x00b5, 0x00df, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078, 0x0079, 0x007a, 0x00a1, 0x00bf, 0x00d0, 0x00dd, 0x00de, 0x00ae, 0x00a2, 0x00a3, 0x00a5, 0x00b7, 0x00a9, 0x0040, 0x00b6, 0x00bc, 0x00bd, 0x00be, 0x00ac, 0x007c, 0x00af, 0x00a8, 0x00b4, 0x00d7, 0x00e4, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 0x0048, 0x0049, 0x00ad, 0x00f4, 0x00a6, 0x00f2, 0x00f3, 0x00f5, 0x00fc, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 0x0050, 0x0051, 0x0052, 0x00b9, 0x00fb, 0x007d, 0x00f9, 0x00fa, 0x00ff, 0x00d6, 0x00f7, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, 0x0059, 0x005a, 0x00b2, 0x00d4, 0x005c, 0x00d2, 0x00d3, 0x00d5, 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 0x0038, 0x0039, 0x00b3, 0x00db, 0x005d, 0x00d9, 0x00da }, "1141", "0x02b70475" /* 695, 1141 */, false }, { "cp1142", { 0x00a0, 0x00e2, 0x00e4, 0x00e0, 0x00e1, 0x00e3, 0x007d, 0x00e7, 0x00f1, 0x0023, 0x002e, 0x003c, 0x0028, 0x002b, 0x0021, 0x0026, 0x00e9, 0x00ea, 0x00eb, 0x00e8, 0x00ed, 0x00ee, 0x00ef, 0x00ec, 0x00df, 0x20ac, 0x00c5, 0x002a, 0x0029, 0x003b, 0x005e, 0x002d, 0x002f, 0x00c2, 0x00c4, 0x00c0, 0x00c1, 0x00c3, 0x0024, 0x00c7, 0x00d1, 0x00f8, 0x002c, 0x0025, 0x005f, 0x003e, 0x003f, 0x00a6, 0x00c9, 0x00ca, 0x00cb, 0x00c8, 0x00cd, 0x00ce, 0x00cf, 0x00cc, 0x0060, 0x003a, 0x00c6, 0x00d8, 0x0027, 0x003d, 0x0022, 0x0040, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 0x0068, 0x0069, 0x00ab, 0x00bb, 0x00f0, 0x00fd, 0x00fe, 0x00b1, 0x00b0, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, 0x0070, 0x0071, 0x0072, 0x00aa, 0x00ba, 0x007b, 0x00b8, 0x005b, 0x005d, 0x00b5, 0x00fc, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078, 0x0079, 0x007a, 0x00a1, 0x00bf, 0x00d0, 0x00dd, 0x00de, 0x00ae, 0x00a2, 0x00a3, 0x00a5, 0x00b7, 0x00a9, 0x00a7, 0x00b6, 0x00bc, 0x00bd, 0x00be, 0x00ac, 0x007c, 0x00af, 0x00a8, 0x00b4, 0x00d7, 0x00e6, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 0x0048, 0x0049, 0x00ad, 0x00f4, 0x00f6, 0x00f2, 0x00f3, 0x00f5, 0x00e5, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 0x0050, 0x0051, 0x0052, 0x00b9, 0x00fb, 0x007e, 0x00f9, 0x00fa, 0x00ff, 0x005c, 0x00f7, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, 0x0059, 0x005a, 0x00b2, 0x00d4, 0x00d6, 0x00d2, 0x00d3, 0x00d5, 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 0x0038, 0x0039, 0x00b3, 0x00db, 0x00dc, 0x00d9, 0x00da }, "1142", "0x02b70476" /* 695, 1142 */, false }, { "cp1143", { 0x00a0, 0x00e2, 0x007b, 0x00e0, 0x00e1, 0x00e3, 0x007d, 0x00e7, 0x00f1, 0x00a7, 0x002e, 0x003c, 0x0028, 0x002b, 0x0021, 0x0026, 0x0060, 0x00ea, 0x00eb, 0x00e8, 0x00ed, 0x00ee, 0x00ef, 0x00ec, 0x00df, 0x20ac, 0x00c5, 0x002a, 0x0029, 0x003b, 0x005e, 0x002d, 0x002f, 0x00c2, 0x0023, 0x00c0, 0x00c1, 0x00c3, 0x0024, 0x00c7, 0x00d1, 0x00f6, 0x002c, 0x0025, 0x005f, 0x003e, 0x003f, 0x00f8, 0x005c, 0x00ca, 0x00cb, 0x00c8, 0x00cd, 0x00ce, 0x00cf, 0x00cc, 0x00e9, 0x003a, 0x00c4, 0x00d6, 0x0027, 0x003d, 0x0022, 0x00d8, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 0x0068, 0x0069, 0x00ab, 0x00bb, 0x00f0, 0x00fd, 0x00fe, 0x00b1, 0x00b0, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, 0x0070, 0x0071, 0x0072, 0x00aa, 0x00ba, 0x00e6, 0x00b8, 0x00c6, 0x005d, 0x00b5, 0x00fc, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078, 0x0079, 0x007a, 0x00a1, 0x00bf, 0x00d0, 0x00dd, 0x00de, 0x00ae, 0x00a2, 0x00a3, 0x00a5, 0x00b7, 0x00a9, 0x005b, 0x00b6, 0x00bc, 0x00bd, 0x00be, 0x00ac, 0x007c, 0x00af, 0x00a8, 0x00b4, 0x00d7, 0x00e4, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 0x0048, 0x0049, 0x00ad, 0x00f4, 0x00a6, 0x00f2, 0x00f3, 0x00f5, 0x00e5, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 0x0050, 0x0051, 0x0052, 0x00b9, 0x00fb, 0x007e, 0x00f9, 0x00fa, 0x00ff, 0x00c9, 0x00f7, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, 0x0059, 0x005a, 0x00b2, 0x00d4, 0x0040, 0x00d2, 0x00d3, 0x00d5, 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 0x0038, 0x0039, 0x00b3, 0x00db, 0x00dc, 0x00d9, 0x00da }, "1143", "0x02b70477" /* 695, 1143 */, false }, { "cp1144", { 0x00a0, 0x00e2, 0x00e4, 0x007b, 0x00e1, 0x00e3, 0x00e5, 0x005c, 0x00f1, 0x00b0, 0x002e, 0x003c, 0x0028, 0x002b, 0x0021, 0x0026, 0x005d, 0x00ea, 0x00eb, 0x007d, 0x00ed, 0x00ee, 0x00ef, 0x007e, 0x00df, 0x00e9, 0x0024, 0x002a, 0x0029, 0x003b, 0x005e, 0x002d, 0x002f, 0x00c2, 0x00c4, 0x00c0, 0x00c1, 0x00c3, 0x00c5, 0x00c7, 0x00d1, 0x00f2, 0x002c, 0x0025, 0x005f, 0x003e, 0x003f, 0x00f8, 0x00c9, 0x00ca, 0x00cb, 0x00c8, 0x00cd, 0x00ce, 0x00cf, 0x00cc, 0x00f9, 0x003a, 0x00a3, 0x00a7, 0x0027, 0x003d, 0x0022, 0x00d8, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 0x0068, 0x0069, 0x00ab, 0x00bb, 0x00f0, 0x00fd, 0x00fe, 0x00b1, 0x005b, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, 0x0070, 0x0071, 0x0072, 0x00aa, 0x00ba, 0x00e6, 0x00b8, 0x00c6, 0x20ac, 0x00b5, 0x00ec, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078, 0x0079, 0x007a, 0x00a1, 0x00bf, 0x00d0, 0x00dd, 0x00de, 0x00ae, 0x00a2, 0x0023, 0x00a5, 0x00b7, 0x00a9, 0x0040, 0x00b6, 0x00bc, 0x00bd, 0x00be, 0x00ac, 0x007c, 0x00af, 0x00a8, 0x00b4, 0x00d7, 0x00e0, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 0x0048, 0x0049, 0x00ad, 0x00f4, 0x00f6, 0x00a6, 0x00f3, 0x00f5, 0x00e8, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 0x0050, 0x0051, 0x0052, 0x00b9, 0x00fb, 0x00fc, 0x0060, 0x00fa, 0x00ff, 0x00e7, 0x00f7, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, 0x0059, 0x005a, 0x00b2, 0x00d4, 0x00d6, 0x00d2, 0x00d3, 0x00d5, 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 0x0038, 0x0039, 0x00b3, 0x00db, 0x00dc, 0x00d9, 0x00da }, "1144", "0x02b70478" /* 695, 1144 */, false }, { "cp1145", { 0x00a0, 0x00e2, 0x00e4, 0x00e0, 0x00e1, 0x00e3, 0x00e5, 0x00e7, 0x00a6, 0x005b, 0x002e, 0x003c, 0x0028, 0x002b, 0x007c, 0x0026, 0x00e9, 0x00ea, 0x00eb, 0x00e8, 0x00ed, 0x00ee, 0x00ef, 0x00ec, 0x00df, 0x005d, 0x0024, 0x002a, 0x0029, 0x003b, 0x00ac, 0x002d, 0x002f, 0x00c2, 0x00c4, 0x00c0, 0x00c1, 0x00c3, 0x00c5, 0x00c7, 0x0023, 0x00f1, 0x002c, 0x0025, 0x005f, 0x003e, 0x003f, 0x00f8, 0x00c9, 0x00ca, 0x00cb, 0x00c8, 0x00cd, 0x00ce, 0x00cf, 0x00cc, 0x0060, 0x003a, 0x00d1, 0x0040, 0x0027, 0x003d, 0x0022, 0x00d8, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 0x0068, 0x0069, 0x00ab, 0x00bb, 0x00f0, 0x00fd, 0x00fe, 0x00b1, 0x00b0, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, 0x0070, 0x0071, 0x0072, 0x00aa, 0x00ba, 0x00e6, 0x00b8, 0x00c6, 0x20ac, 0x00b5, 0x00a8, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078, 0x0079, 0x007a, 0x00a1, 0x00bf, 0x00d0, 0x00dd, 0x00de, 0x00ae, 0x00a2, 0x00a3, 0x00a5, 0x00b7, 0x00a9, 0x00a7, 0x00b6, 0x00bc, 0x00bd, 0x00be, 0x005e, 0x0021, 0x00af, 0x007e, 0x00b4, 0x00d7, 0x007b, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 0x0048, 0x0049, 0x00ad, 0x00f4, 0x00f6, 0x00f2, 0x00f3, 0x00f5, 0x007d, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 0x0050, 0x0051, 0x0052, 0x00b9, 0x00fb, 0x00fc, 0x00f9, 0x00fa, 0x00ff, 0x005c, 0x00f7, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, 0x0059, 0x005a, 0x00b2, 0x00d4, 0x00d6, 0x00d2, 0x00d3, 0x00d5, 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 0x0038, 0x0039, 0x00b3, 0x00db, 0x00dc, 0x00d9, 0x00da }, "1145", "0x02b70479" /* 695, 1145 */, false }, { "cp1146", { 0x00a0, 0x00e2, 0x00e4, 0x00e0, 0x00e1, 0x00e3, 0x00e5, 0x00e7, 0x00f1, 0x0024, 0x002e, 0x003c, 0x0028, 0x002b, 0x007c, 0x0026, 0x00e9, 0x00ea, 0x00eb, 0x00e8, 0x00ed, 0x00ee, 0x00ef, 0x00ec, 0x00df, 0x0021, 0x00a3, 0x002a, 0x0029, 0x003b, 0x00ac, 0x002d, 0x002f, 0x00c2, 0x00c4, 0x00c0, 0x00c1, 0x00c3, 0x00c5, 0x00c7, 0x00d1, 0x00a6, 0x002c, 0x0025, 0x005f, 0x003e, 0x003f, 0x00f8, 0x00c9, 0x00ca, 0x00cb, 0x00c8, 0x00cd, 0x00ce, 0x00cf, 0x00cc, 0x0060, 0x003a, 0x0023, 0x0040, 0x0027, 0x003d, 0x0022, 0x00d8, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 0x0068, 0x0069, 0x00ab, 0x00bb, 0x00f0, 0x00fd, 0x00fe, 0x00b1, 0x00b0, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, 0x0070, 0x0071, 0x0072, 0x00aa, 0x00ba, 0x00e6, 0x00b8, 0x00c6, 0x20ac, 0x00b5, 0x00af, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078, 0x0079, 0x007a, 0x00a1, 0x00bf, 0x00d0, 0x00dd, 0x00de, 0x00ae, 0x00a2, 0x005b, 0x00a5, 0x00b7, 0x00a9, 0x00a7, 0x00b6, 0x00bc, 0x00bd, 0x00be, 0x005e, 0x005d, 0x007e, 0x00a8, 0x00b4, 0x00d7, 0x007b, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 0x0048, 0x0049, 0x00ad, 0x00f4, 0x00f6, 0x00f2, 0x00f3, 0x00f5, 0x007d, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 0x0050, 0x0051, 0x0052, 0x00b9, 0x00fb, 0x00fc, 0x00f9, 0x00fa, 0x00ff, 0x005c, 0x00f7, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, 0x0059, 0x005a, 0x00b2, 0x00d4, 0x00d6, 0x00d2, 0x00d3, 0x00d5, 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 0x0038, 0x0039, 0x00b3, 0x00db, 0x00dc, 0x00d9, 0x00da }, "1146", "0x02b7047a" /* 695, 1146 */, false }, { "cp1147", { 0x00a0, 0x00e2, 0x00e4, 0x0040, 0x00e1, 0x00e3, 0x00e5, 0x005c, 0x00f1, 0x00b0, 0x002e, 0x003c, 0x0028, 0x002b, 0x0021, 0x0026, 0x007b, 0x00ea, 0x00eb, 0x007d, 0x00ed, 0x00ee, 0x00ef, 0x00ec, 0x00df, 0x00a7, 0x0024, 0x002a, 0x0029, 0x003b, 0x005e, 0x002d, 0x002f, 0x00c2, 0x00c4, 0x00c0, 0x00c1, 0x00c3, 0x00c5, 0x00c7, 0x00d1, 0x00f9, 0x002c, 0x0025, 0x005f, 0x003e, 0x003f, 0x00f8, 0x00c9, 0x00ca, 0x00cb, 0x00c8, 0x00cd, 0x00ce, 0x00cf, 0x00cc, 0x00b5, 0x003a, 0x00a3, 0x00e0, 0x0027, 0x003d, 0x0022, 0x00d8, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 0x0068, 0x0069, 0x00ab, 0x00bb, 0x00f0, 0x00fd, 0x00fe, 0x00b1, 0x005b, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, 0x0070, 0x0071, 0x0072, 0x00aa, 0x00ba, 0x00e6, 0x00b8, 0x00c6, 0x20ac, 0x0060, 0x00a8, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078, 0x0079, 0x007a, 0x00a1, 0x00bf, 0x00d0, 0x00dd, 0x00de, 0x00ae, 0x00a2, 0x0023, 0x00a5, 0x00b7, 0x00a9, 0x005d, 0x00b6, 0x00bc, 0x00bd, 0x00be, 0x00ac, 0x007c, 0x00af, 0x007e, 0x00b4, 0x00d7, 0x00e9, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 0x0048, 0x0049, 0x00ad, 0x00f4, 0x00f6, 0x00f2, 0x00f3, 0x00f5, 0x00e8, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 0x0050, 0x0051, 0x0052, 0x00b9, 0x00fb, 0x00fc, 0x00a6, 0x00fa, 0x00ff, 0x00e7, 0x00f7, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, 0x0059, 0x005a, 0x00b2, 0x00d4, 0x00d6, 0x00d2, 0x00d3, 0x00d5, 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 0x0038, 0x0039, 0x00b3, 0x00db, 0x00dc, 0x00d9, 0x00da }, "1147", "0x02b7047b" /* 695, 1147 */, false }, { "cp1148", { 0x00a0, 0x00e2, 0x00e4, 0x00e0, 0x00e1, 0x00e3, 0x00e5, 0x00e7, 0x00f1, 0x005b, 0x002e, 0x003c, 0x0028, 0x002b, 0x0021, 0x0026, 0x00e9, 0x00ea, 0x00eb, 0x00e8, 0x00ed, 0x00ee, 0x00ef, 0x00ec, 0x00df, 0x005d, 0x0024, 0x002a, 0x0029, 0x003b, 0x005e, 0x002d, 0x002f, 0x00c2, 0x00c4, 0x00c0, 0x00c1, 0x00c3, 0x00c5, 0x00c7, 0x00d1, 0x00a6, 0x002c, 0x0025, 0x005f, 0x003e, 0x003f, 0x00f8, 0x00c9, 0x00ca, 0x00cb, 0x00c8, 0x00cd, 0x00ce, 0x00cf, 0x00cc, 0x0060, 0x003a, 0x0023, 0x0040, 0x0027, 0x003d, 0x0022, 0x00d8, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 0x0068, 0x0069, 0x00ab, 0x00bb, 0x00f0, 0x00fd, 0x00fe, 0x00b1, 0x00b0, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, 0x0070, 0x0071, 0x0072, 0x00aa, 0x00ba, 0x00e6, 0x00b8, 0x00c6, 0x20ac, 0x00b5, 0x007e, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078, 0x0079, 0x007a, 0x00a1, 0x00bf, 0x00d0, 0x00dd, 0x00de, 0x00ae, 0x00a2, 0x00a3, 0x00a5, 0x00b7, 0x00a9, 0x00a7, 0x00b6, 0x00bc, 0x00bd, 0x00be, 0x00ac, 0x007c, 0x00af, 0x00a8, 0x00b4, 0x00d7, 0x007b, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 0x0048, 0x0049, 0x00ad, 0x00f4, 0x00f6, 0x00f2, 0x00f3, 0x00f5, 0x007d, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 0x0050, 0x0051, 0x0052, 0x00b9, 0x00fb, 0x00fc, 0x00f9, 0x00fa, 0x00ff, 0x005c, 0x00f7, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, 0x0059, 0x005a, 0x00b2, 0x00d4, 0x00d6, 0x00d2, 0x00d3, 0x00d5, 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 0x0038, 0x0039, 0x00b3, 0x00db, 0x00dc, 0x00d9, 0x00da }, "1148", "0x02b7047c" /* 695, 1148 */, false }, { "cp1149", { 0x00a0, 0x00e2, 0x00e4, 0x00e0, 0x00e1, 0x00e3, 0x00e5, 0x00e7, 0x00f1, 0x00de, 0x002e, 0x003c, 0x0028, 0x002b, 0x0021, 0x0026, 0x00e9, 0x00ea, 0x00eb, 0x00e8, 0x00ed, 0x00ee, 0x00ef, 0x00ec, 0x00df, 0x00c6, 0x0024, 0x002a, 0x0029, 0x003b, 0x00d6, 0x002d, 0x002f, 0x00c2, 0x00c4, 0x00c0, 0x00c1, 0x00c3, 0x00c5, 0x00c7, 0x00d1, 0x00a6, 0x002c, 0x0025, 0x005f, 0x003e, 0x003f, 0x00f8, 0x00c9, 0x00ca, 0x00cb, 0x00c8, 0x00cd, 0x00ce, 0x00cf, 0x00cc, 0x00f0, 0x003a, 0x0023, 0x00d0, 0x0027, 0x003d, 0x0022, 0x00d8, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 0x0068, 0x0069, 0x00ab, 0x00bb, 0x0060, 0x00fd, 0x007b, 0x00b1, 0x00b0, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, 0x0070, 0x0071, 0x0072, 0x00aa, 0x00ba, 0x007d, 0x00b8, 0x005d, 0x20ac, 0x00b5, 0x00f6, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078, 0x0079, 0x007a, 0x00a1, 0x00bf, 0x0040, 0x00dd, 0x005b, 0x00ae, 0x00a2, 0x00a3, 0x00a5, 0x00b7, 0x00a9, 0x00a7, 0x00b6, 0x00bc, 0x00bd, 0x00be, 0x00ac, 0x007c, 0x00af, 0x00a8, 0x005c, 0x00d7, 0x00fe, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 0x0048, 0x0049, 0x00ad, 0x00f4, 0x007e, 0x00f2, 0x00f3, 0x00f5, 0x00e6, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 0x0050, 0x0051, 0x0052, 0x00b9, 0x00fb, 0x00fc, 0x00f9, 0x00fa, 0x00ff, 0x00b4, 0x00f7, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, 0x0059, 0x005a, 0x00b2, 0x00d4, 0x005e, 0x00d2, 0x00d3, 0x00d5, 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 0x0038, 0x0039, 0x00b3, 0x00db, 0x00dc, 0x00d9, 0x00da }, "1149", "0x02b7047d" /* 695, 1149 */, false }, { "cp1160", { 0x00a0, 0x0e01, 0x0e02, 0x0e03, 0x0e04, 0x0e05, 0x0e06, 0x0e07, 0x005b, 0x00a2, 0x002e, 0x003c, 0x0028, 0x002b, 0x007c, 0x0026, 0x0e48, 0x0e08, 0x0e09, 0x0e0a, 0x0e0b, 0x0e0c, 0x0e0d, 0x0e0e, 0x005d, 0x0021, 0x0024, 0x002a, 0x0029, 0x003b, 0x00ac, 0x002d, 0x002f, 0x0e0f, 0x0e10, 0x0e11, 0x0e12, 0x0e13, 0x0e14, 0x0e15, 0x005e, 0x00a6, 0x002c, 0x0025, 0x005f, 0x003e, 0x003f, 0x0e3f, 0x0e4e, 0x0e16, 0x0e17, 0x0e18, 0x0e19, 0x0e1a, 0x0e1b, 0x0e1c, 0x0060, 0x003a, 0x0023, 0x0040, 0x0027, 0x003d, 0x0022, 0x0e4f, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 0x0068, 0x0069, 0x0e1d, 0x0e1e, 0x0e1f, 0x0e20, 0x0e21, 0x0e22, 0x0e5a, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, 0x0070, 0x0071, 0x0072, 0x0e23, 0x0e24, 0x0e25, 0x0e26, 0x0e27, 0x0e28, 0x0e5b, 0x007e, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078, 0x0079, 0x007a, 0x0e29, 0x0e2a, 0x0e2b, 0x0e2c, 0x0e2d, 0x0e2e, 0x0e50, 0x0e51, 0x0e52, 0x0e53, 0x0e54, 0x0e55, 0x0e56, 0x0e57, 0x0e58, 0x0e59, 0x0e2f, 0x0e30, 0x0e31, 0x0e32, 0x0e33, 0x0e34, 0x007b, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 0x0048, 0x0049, 0x0e49, 0x0e35, 0x0e36, 0x0e37, 0x0e38, 0x0e39, 0x007d, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 0x0050, 0x0051, 0x0052, 0x0e3a, 0x0e40, 0x0e41, 0x0e42, 0x0e43, 0x0e44, 0x005c, 0x0e4a, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, 0x0059, 0x005a, 0x0e45, 0x0e46, 0x0e47, 0x0e48, 0x0e49, 0x0e4a, 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 0x0038, 0x0039, 0x0e4b, 0x0e4c, 0x0e4d, 0x0e4b, 0x20ac }, "1160", "0x05730488" /* 1395, 1160 */, false }, { "cp1388", { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x00a3, 0x002e, 0x003c, 0x0028, 0x002b, 0x007c, 0x0026, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0021, 0x00a5, 0x002a, 0x0029, 0x003b, 0x00ac, 0x002d, 0x002f, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x00a6, 0x002c, 0x0025, 0x005f, 0x003e, 0x003f, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0060, 0x003a, 0x0023, 0x0040, 0x0027, 0x003d, 0x0022, 0x0000, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 0x0068, 0x0069, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, 0x0070, 0x0071, 0x0072, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x007e, 0x00af, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078, 0x0079, 0x007a, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x005e, 0x0000, 0x005c, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x005b, 0x005d, 0x0000, 0x0000, 0x0000, 0x0000, 0x007b, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 0x0048, 0x0049, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x007d, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 0x0050, 0x0051, 0x0052, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0024, 0x0000, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, 0x0059, 0x005a, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 0x0038, 0x0039, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, "1388", "0x04960344" /* 1174, 836 */, true }, { "bracket", { 0x00a0, 0x00e2, 0x00e4, 0x00e0, 0x00e1, 0x00e3, 0x00e5, 0x00e7, 0x00f1, 0x00a2, 0x002e, 0x003c, 0x0028, 0x002b, 0x007c, 0x0026, 0x00e9, 0x00ea, 0x00eb, 0x00e8, 0x00ed, 0x00ee, 0x00ef, 0x00ec, 0x00df, 0x0021, 0x0024, 0x002a, 0x0029, 0x003b, 0x00ac, 0x002d, 0x002f, 0x00c2, 0x00c4, 0x00c0, 0x00c1, 0x00c3, 0x00c5, 0x00c7, 0x00d1, 0x00a6, 0x002c, 0x0025, 0x005f, 0x003e, 0x003f, 0x00f8, 0x00c9, 0x00ca, 0x00cb, 0x00c8, 0x00cd, 0x00ce, 0x00cf, 0x00cc, 0x0060, 0x003a, 0x0023, 0x0040, 0x0027, 0x003d, 0x0022, 0x00d8, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 0x0068, 0x0069, 0x00ab, 0x00bb, 0x00f0, 0x00fd, 0x00fe, 0x00b1, 0x00b0, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, 0x0070, 0x0071, 0x0072, 0x00aa, 0x00ba, 0x00e6, 0x00b8, 0x00c6, 0x00a4, 0x00b5, 0x007e, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078, 0x0079, 0x007a, 0x00a1, 0x00bf, 0x00d0, 0x005b, 0x00de, 0x00ae, 0x005e, 0x00a3, 0x00a5, 0x00b7, 0x00a9, 0x00a7, 0x00b6, 0x00bc, 0x00bd, 0x00be, 0x00dd, 0x00a8, 0x00af, 0x005d, 0x00b4, 0x00d7, 0x007b, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 0x0048, 0x0049, 0x00ad, 0x00f4, 0x00f6, 0x00f2, 0x00f3, 0x00f5, 0x007d, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 0x0050, 0x0051, 0x0052, 0x00b9, 0x00fb, 0x00fc, 0x00f9, 0x00fa, 0x00ff, 0x005c, 0x00f7, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, 0x0059, 0x005a, 0x00b2, 0x00d4, 0x00d6, 0x00d2, 0x00d3, 0x00d5, 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 0x0038, 0x0039, 0x00b3, 0x00db, 0x00dc, 0x00d9, 0x00da }, "37", "37", false }, { NULL } }; /* APL GE (CP310) to Unicode mapping. */ static ucs4_t apl2uc[256] = { /* 00 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 08 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 10 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 18 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 20 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 28 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 30 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 38 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 40 */ 0x0020, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 48 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 50 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 58 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 60 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 68 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 70 */ 0x22c4, 0x2227, 0x00a8, 0x233b, 0x2378, 0x2377, 0x22a2, 0x22a3, /* 78 */ 0x2228, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 80 */ 0x223c, 0x0000, 0x0000, 0x23b8, 0x23b9, 0x2502, 0x0000, 0x0000, /* 88 */ 0x0000, 0x0000, 0x2191, 0x2193, 0x2264, 0x2308, 0x230a, 0x2192, /* 90 */ 0x2395, 0x258c, 0x2590, 0x2580, 0x2584, 0x25a0, 0x0000, 0x0000, /* 98 */ 0x0000, 0x0000, 0x2283, 0x2282, 0x00a4, 0x25cb, 0x00b1, 0x2190, /* a0 */ 0x00af, 0x00b0, 0x2500, 0x2022, 0x0000, 0x0000, 0x0000, 0x0000, /* a8 */ 0x0000, 0x0000, 0x2229, 0x222a, 0x22a5, 0x005b, 0x2265, 0x2218, /* b0 */ 0x237a, 0x220a, 0x2373, 0x2374, 0x2375, 0x0000, 0x00d7, 0x005c, /* b8 */ 0x00f7, 0x0000, 0x2207, 0x2206, 0x22a4, 0x005d, 0x2260, 0x2223, /* c0 */ 0x007b, 0x207c, 0x002b, 0x220e, 0x2514, 0x250c, 0x251c, 0x2534, /* c8 */ 0x00a7, 0x0000, 0x2372, 0x2371, 0x2337, 0x233d, 0x2342, 0x2349, /* d0 */ 0x007d, 0x207e, 0x002d, 0x253c, 0x2518, 0x2510, 0x2524, 0x252c, /* d8 */ 0x00b6, 0x0000, 0x2336, 0x0021, 0x2352, 0x234b, 0x235e, 0x235d, /* e0 */ 0x2261, 0x2081, 0x0282, 0x0283, 0x2364, 0x2365, 0x236a, 0x20ac, /* e8 */ 0x0000, 0x0000, 0x233f, 0x2340, 0x2235, 0x2296, 0x2339, 0x2355, /* f0 */ 0x2070, 0x00b9, 0x00b2, 0x00b3, 0x2074, 0x2075, 0x2076, 0x2077, /* f8 */ 0x2078, 0x2079, 0x0000, 0x236b, 0x2359, 0x235f, 0x234e, 0x0000 }; /* APL GE (CP310) to ASCII line drawing mapping. */ static ucs4_t apla2uc[256] = { /* 00 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 08 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 10 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 18 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 20 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 28 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 30 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 38 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 40 */ 0x0020, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 48 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 50 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 58 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 60 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 68 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 70 */ 0x0000, 0x0000, 0x00a8, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 78 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 80 */ 0x007e, 0x0000, 0x0000, 0x0000, 0x0000, 0x007c, 0x0000, 0x0000, /* 88 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 90 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 98 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x00a4, 0x0000, 0x00b1, 0x0000, /* a0 */ 0x00af, 0x00b0, 0x002d, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* a8 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x005b, 0x0000, 0x0000, /* b0 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x00d7, 0x005c, /* b8 */ 0x00f7, 0x0000, 0x0000, 0x0000, 0x0000, 0x005d, 0x0000, 0x007c, /* c0 */ 0x007b, 0x0000, 0x002b, 0x0000, 0x002b, 0x002b, 0x002b, 0x002b, /* c8 */ 0x00a7, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* d0 */ 0x007d, 0x0000, 0x002d, 0x002b, 0x002b, 0x002b, 0x002b, 0x002b, /* d8 */ 0x00b6, 0x0000, 0x0000, 0x0021, 0x0000, 0x0000, 0x0000, 0x0000, /* e0 */ 0x0000, 0x0000, 0x0282, 0x0283, 0x0000, 0x0000, 0x0000, 0x0000, /* e8 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* f0 */ 0x0000, 0x00b9, 0x00b2, 0x00b3, 0x0000, 0x0000, 0x0000, 0x0000, /* f8 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }; /* Code page aliases. */ typedef struct { char *alias; char *canon; } cpalias_t; cpalias_t cpaliases[] = { { "belgian", "cp500" }, { "belgian-euro", "cp1148" }, { "brazilian", "cp275" }, { "chinese-gb18030","cp1388" }, { "cp37", "cp037" }, { "finnish", "cp278" }, { "finnish-euro", "cp1143" }, { "french", "cp297" }, { "french-euro", "cp1147" }, { "german", "cp273" }, { "german-euro", "cp1141" }, { "greek", "cp875" }, { "hebrew", "cp424" }, { "hebrew-old", "cp803" }, { "icelandic", "cp871" }, { "icelandic-euro", "cp1149" }, { "italian", "cp280" }, { "italian-euro", "cp1144" }, { "japanese-kana", "cp930" }, { "japanese-latin", "cp939" }, { "norwegian", "cp277" }, { "norwegian-euro", "cp1142" }, { "oldibm", "bracket" }, { "bracket437", "bracket" }, { "polish", "cp870" }, { "russian", "cp880" }, { "simplified-chinese","cp935" }, { "slovenian", "cp870" }, { "spanish", "cp284" }, { "spanish-euro", "cp1145" }, { "swedish", "cp278" }, { "swedish-euro", "cp1143" }, { "thai", "cp1160" }, { "traditional-chinese", "cp937" }, { "turkish", "cp1026" }, { "uk", "cp285" }, { "uk-euro", "cp1146" }, { "us", "cp037" }, { "us-euro", "cp1140" }, { "us-intl", "cp037" }, { NULL, NULL } }; static uni_t *cur_uni = NULL; static void codepage_list_one(bool dbcs) { int i; int j; char *sep = ""; fprintf(stderr, "%cBCS host code pages (with aliases):\n", dbcs? 'D': 'S'); for (i = 0; uni[i].name != NULL; i++) { bool any = false; char *asep = " ("; if (dbcs ^ uni[i].is_dbcs) { continue; } fprintf(stderr, "%s%s", sep, uni[i].name); for (j = 0; cpaliases[j].alias != NULL; j++) { if (!strcmp(cpaliases[j].canon, uni[i].name)) { fprintf(stderr, "%s%s", asep, cpaliases[j].alias); asep = ", "; any = true; } } if (any) { fprintf(stderr, ")"); } sep = ", "; } fprintf(stderr, "\n"); } void codepage_list(void) { codepage_list_one(false); if (dbcs_allowed) { codepage_list_one(true); } } /* * Translate a single EBCDIC character in an arbitrary character set to * Unicode. Note that CS_DBCS is never used -- use CS_BASE and pass an * EBCDIC character > 0xff. * * Returns 0 for no translation. */ ucs4_t ebcdic_to_unicode(ebc_t c, unsigned char cs, unsigned flags) { ucs4_t uc; #if 0 /* I'm not sure why this was put in, but it breaks display of DUP and FM. Hopefully I'll figure out why it was put in in the first place and I can put it back under the right conditions. */ /* Control characters become blanks. */ if (c <= 0x41 || c == 0xff) uc = 0; #endif /* * We do not pay attention to BLANK_UNDEF -- we always return 0 * for undefined characters. */ flags &= ~EUO_BLANK_UNDEF; /* Dispatch on the character set. */ if ((cs & CS_GE) || ((cs & CS_MASK) == CS_APL)) { int iuc = apl_to_unicode(c, flags); uc = (iuc != -1)? iuc: 0; } else if (cs != CS_BASE) { uc = 0; } else { uc = ebcdic_base_to_unicode(c, flags); } return uc; } /* * Translate a single EBCDIC character in the base or DBCS character sets to * Unicode. * * EBCDIC 'FM' and 'DUP' characters are treated specially. If EUO_UPRIV * is set, they are returned as U+f8fe and U+feff (private-use) respectively * so they can be displayed with overscores in the special 3270 font; * otherwise they are returned as '*' and ';'. * EBCDIC 'EO' and 'SUB' are special-cased to U+25cf and U+25a0, respectively. * * If EUO_BLANK_UNDEF is set, other undisplayable characters are returned as * spaces; otherwise they are returned as 0. */ ucs4_t ebcdic_base_to_unicode(ebc_t c, unsigned flags) { if (c & 0xff00) { return ebcdic_dbcs_to_unicode(c, flags); } if (c == 0x40) { return 0x0020; } if (c >= UT_OFFSET && c < 0xff) { ebc_t uc = cur_uni->code[c - UT_OFFSET]; return uc? uc: ((flags & EUO_BLANK_UNDEF)? ' ': 0); } else switch (c) { case EBC_fm: return (flags & EUO_UPRIV)? UPRIV_fm: ';'; case EBC_dup: return (flags & EUO_UPRIV)? UPRIV_dup: '*'; case EBC_eo: if (flags & EUO_ASCII_BOX) { return (flags & EUO_BLANK_UNDEF)? ' ': 0; } return (flags & EUO_UPRIV)? UPRIV_eo: 0x25cf; /* solid circle */ case EBC_sub: if (flags & EUO_ASCII_BOX) { return (flags & EUO_BLANK_UNDEF)? ' ': 0; } return (flags & EUO_UPRIV)? UPRIV_sub: 0x25a0; /* solid block */ default: if (flags & EUO_BLANK_UNDEF) { return ' '; } else { return 0; } } } /* * Map a UCS-4 character to an EBCDIC character. * Returns 0 for failure, nonzero for success. */ ebc_t unicode_to_ebcdic(ucs4_t u) { int i; ebc_t d; if (!u) { return 0; } if (u == 0x0020) { return 0x40; } for (i = 0; i < UT_SIZE; i++) { if (cur_uni->code[i] == u) { return UT_OFFSET + i; } } /* See if it's DBCS. */ d = unicode_to_ebcdic_dbcs(u); if (d) { return d; } return 0; } /* * Map a UCS-4 character to an EBCDIC character, possibly including APL (GE) * characters. * Returns 0 for failure, nonzero for success. */ ebc_t unicode_to_ebcdic_ge(ucs4_t u, bool *ge, bool prefer_apl) { ebc_t e_cur = 0; ebc_t e_apl = 0; /* Find the character in the host's code page. */ e_cur = unicode_to_ebcdic(u); /* Find the character in the APL code page. */ for (e_apl = 0x70; e_apl <= 0xfe; e_apl++) { if ((ucs4_t)apl_to_unicode(e_apl, EUO_NONE) == u) { break; } } if (e_apl > 0xfe) { e_apl = 0; } if (e_apl != 0 && ((e_cur == 0) || prefer_apl)) { *ge = true; return e_apl; } if (e_cur != 0) { *ge = false; return e_cur; } /* Handle APL underlined alphabetics. */ if (u >= UPRIV2_Aunderline && u <= UPRIV2_Zunderline) { *ge = true; return unicode_to_ebcdic(u - UPRIV2) - 0x80; } return 0; } /* Returns true if a string contains all digits. */ bool is_all_digits(const char *s) { return strspn(s, "0123456789") == strlen(s); } /* * Set the SBCS EBCDIC-to-Unicode translation table. * Returns true for success, false for failure. */ bool set_uni(const char *cpname, int local_cp _is_unused, const char **host_codepage, const char **cgcsgid, const char **realnamep, bool *is_dbcs) { int i; const char *realname; bool rc = false; bool cannot_fail = false; check_apl_consistency(apl2uc); #if defined(_WIN32) /*[*/ u_local_cp = local_cp; set_local_cp(local_cp); #endif /*]*/ if (is_dbcs != NULL) { *is_dbcs = false; } /* * If the cpname is NULL, this is a fallback to the default * and the iconv lookup cannot fail. */ if (cpname == NULL) { cpname = "bracket"; cannot_fail = true; } realname = cpname; /* * Check for an all-numeric name. There are no names or aliases that are * just numbers, so adding a 'cp' to the front of an all-numeric name will * not cause any misidentification. */ if (is_all_digits(realname)) { realname = lazyaf("cp%s", realname); } /* Search for an alias. */ for (i = 0; cpaliases[i].alias != NULL; i++) { if (!strcasecmp(realname, cpaliases[i].alias)) { realname = cpaliases[i].canon; break; } } /* Search for a match. */ for (i = 0; uni[i].name != NULL; i++) { if (!dbcs_allowed && uni[i].is_dbcs) { continue; } if (!strcasecmp(realname, uni[i].name)) { cur_uni = &uni[i]; *host_codepage = uni[i].host_codepage; *cgcsgid = uni[i].cgcsgid; if (realnamep != NULL) { *realnamep = realname; } if (is_dbcs != NULL && uni[i].is_dbcs) { *is_dbcs = true; } rc = true; break; } } if (cannot_fail && !rc) { Error("Cannot find default charset definition"); } #if defined(USE_ICONV) /*[*/ /* * wchar_t's are not Unicode, so getting to/from Unicode is only half * the battle. We need to use iconv() to get between Unicode to the * local multi-byte representation. We'll explicitly use UTF-8, which * appears to be the most broadly-supported translation. */ if (rc) { if (!is_utf8) { /* * If iconv doesn't support the locale's codeset, then * this box is hosed. */ i_u2mb = iconv_open(locale_codeset, "UTF-8"); if (i_u2mb == (iconv_t)(-1)) { rc = false; } else { i_mb2u = iconv_open("UTF-8", locale_codeset); if (i_mb2u == (iconv_t)(-1)) { iconv_close(i_u2mb); rc = false; } } } if (!rc && cannot_fail) { /* Try again with plain-old ASCII. */ xs_warning("Cannot find iconv translation from locale codeset " "'%s' to UTF-8, using ASCII", locale_codeset); i_u2mb = iconv_open("ASCII", "UTF-8"); if (i_u2mb == (iconv_t)-1) { Error("No iconv UTF-8 to ASCII translation"); } i_mb2u = iconv_open("UTF-8", "ASCII"); if (i_mb2u == (iconv_t)-1) { Error("No iconv ASCII to UTF-8 translation"); } rc = true; } } #endif /*]*/ return rc; } /* See if the given alias matches the given canonical code page name. */ bool codepage_matches_alias(const char *alias, const char *canon) { int i; for (i = 0; cpaliases[i].alias != NULL; i++) { if (!strcmp(alias, cpaliases[i].alias) && !strcmp(canon, cpaliases[i].canon)) { return true; } } return false; } /* Translate a possible code page alias to its canonical name. */ const char * canonical_codepage(const char *alias) { int i; const char *realname = alias; if (is_all_digits(realname)) { realname = lazyaf("cp%s", alias); } for (i = 0; cpaliases[i].alias != NULL; i++) { if (!strcmp(realname, cpaliases[i].alias) || !strcmp(realname, cpaliases[i].canon)) { return cpaliases[i].canon; } } for (i = 0; uni[i].name != NULL; i++) { if (!strcmp(realname, uni[i].name)) { return realname; } } return NULL; } /* * Get the list of code page names. * Returns a NULL-terminated array of names and aliases. */ cpname_t * get_cpnames(void) { cpname_t *ret = Calloc(array_count(uni) + 1, sizeof(cpname_t)); unsigned i; for (i = 0; uni[i].name != NULL; i++) { int num_aliases = 0; int j; ret[i].name = uni[i].name; ret[i].dbcs = uni[i].is_dbcs; for (j = 0; cpaliases[j].alias != NULL; j++) { if (!strcmp(cpaliases[j].canon, uni[i].name)) { ret[i].aliases = Realloc((void *)ret[i].aliases, (num_aliases + 2) * sizeof(char *)); ret[i].aliases[num_aliases++] = cpaliases[j].alias; ret[i].aliases[num_aliases] = NULL; } } ret[i].num_aliases = num_aliases; } return ret; } /* Free the list returned by get_cpnames(). */ void free_cpnames(cpname_t *cpnames) { int i; for (i = 0; cpnames[i].name != NULL; i++) { if (cpnames[i].aliases != NULL) { Free((void *)cpnames[i].aliases); } } Free(cpnames); } /* Line-drawing to Unicode table. */ static ucs4_t ld2uc[32] = { /* 00 */ 0x2588, 0x25c6, 0x2592, 0x2409, 0x240c, 0x240d, 0x240a, 0x00b0, /* 08 */ 0x00b1, 0x2424, 0x240b, 0x2518, 0x2510, 0x250c, 0x2514, 0x253c, /* 10 */ 0x002d, 0x002d, 0x2500, 0x002d, 0x005f, 0x251c, 0x2524, 0x2534, /* 18 */ 0x252c, 0x2502, 0x2264, 0x2265, 0x03c0, 0x2260, 0x00a3, 0x2022 }; /* Line-drawing to Unicode table, ASCII-art style. */ static ucs4_t ld2uc_ascii_art[32] = { /* 00 */ 0x2588, 0x25c6, 0x2592, 0x2409, 0x240c, 0x2140d, 0x240a, 0x00b0, /* 08 */ 0x00b1, 0x2424, 0x240b, '+', '+', '+', '+', '+', /* 10 */ 0x002d, 0x002d, '-', 0x002d, 0x005f, '+', '+', '+', /* 18 */ '+', '|', 0x2264, 0x2265, 0x03c0, 0x2260, 0x00a3, 0x2022 }; /* * Translate an NVT-mode line-drawing character to Unicode, optionally using * ASCII-art for the box-drawing characters. */ ucs4_t linedraw_to_unicode(ucs4_t c, bool ascii_art) { return ascii_art? ld2uc_ascii_art[c % 32]: ld2uc[c % 32]; } /* * Translate an APL GE (CP310) character to Unicode. * * With the EUO_ASCII_BOX flag, does translation to (crude) ASCII line-drawing, * e.g., '|' for vertical bar, '-' for horizontal bar, etc. * * With the EUO_APL_CIRCLED flag, maps APL underscored alphabetics to Unicode * circled alphabetics, which is supported by some APL-specific fonts. * * Returns -1 if there is no translation. */ int apl_to_unicode(ebc_t c, unsigned flags) { if (c == EBC_null) { return 0; } if (flags & EUO_ASCII_BOX) { if (c < 256 && apla2uc[c] != 0x0000) { #if defined(_WIN32) /*[*/ /* Windows DBCS fonts make U+0080..U+00ff wide, too. */ if (apla2uc[c] > 0x7f) { goto fail; } #endif /*]*/ return apla2uc[c]; } else { goto fail; } } if (c < 256 && apl2uc[c] != 0x0000) { return apl2uc[c]; } else { goto fail; } fail: if (flags & EUO_APL_CIRCLED) { static char undera[] = { 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x00 }; char *x = strchr(undera, c); if (x != NULL) { return 0x24b6 + (int)(x - undera); } } return -1; } /* * Translate an EBCDIC character to the current locale's multi-byte * representation. * * Returns the number of bytes in the multi-byte representation, including * the terminating NULL. mb[] should be big enough to include the NULL * in the result. * * Also returns in 'ucp' the UCS-4 Unicode value of the EBCDIC character. * * Note that 'ebc' is an ebc_t (uint16_t), not an unsigned char. This is * so that DBCS values can be passed in as 16 bits (with the first byte * in the high-order bits). There is no ambiguity because all valid EBCDIC * DBCS characters have a nonzero first byte. * * Returns 0 if EUO_BLANK_UNDEF is clear and there is no printable EBCDIC * translation for 'ebc'. * * Returns '?' in mb[] if there is no local multi-byte representation of * the EBCDIC character. */ size_t ebcdic_to_multibyte_x(ebc_t ebc, unsigned char cs, char mb[], size_t mb_len, unsigned flags, ucs4_t *ucp) { ucs4_t uc; #if defined(_WIN32) /*[*/ int nc; BOOL udc; wchar_t wuc; #elif defined(UNICODE_WCHAR) /*][*/ int nc; #else /*][*/ char u8b[7]; int nu8; ici_t inbuf; char *outbuf; size_t inbytesleft, outbytesleft; size_t nc; #endif /*]*/ /* Translate from EBCDIC to Unicode. */ uc = ebcdic_to_unicode(ebc, cs, flags); if (ucp != NULL) { *ucp = uc; } if (uc == 0) { if (flags & EUO_BLANK_UNDEF) { mb[0] = ' '; mb[1] = '\0'; return 2; } else { return 0; } } /* Do uppercase. */ if (flags & EUO_TOUPPER) { uc = u_toupper(uc); if (ucp != NULL) { *ucp = uc; } } /* Translate from Unicode to local multibyte. */ #if defined(_WIN32) /*[*/ /* * wchar_t's are Unicode. */ wuc = uc; nc = WideCharToMultiByte(u_local_cp, 0, &wuc, 1, mb, (int)mb_len, (u_local_cp == CP_UTF8)? NULL: "?", (u_local_cp == CP_UTF8)? NULL: &udc); if (nc != 0) { mb[nc++] = '\0'; return nc; } else { mb[0] = '?'; mb[1] = '\0'; return 2; } #elif defined(UNICODE_WCHAR) /*][*/ /* * wchar_t's are Unicode. * If 'is_utf8' is set, use unicode_to_utf8(). This allows us to set * 'is_utf8' directly, ignoring the locale, for Tcl. * Otherwise, use wctomb(). */ if (is_utf8) { nc = unicode_to_utf8(uc, mb); if (nc < 0) { return 0; } mb[nc++] = '\0'; return nc; } nc = wctomb(mb, uc); if (nc > 0) { /* Return to the initial shift state and null-terminate. */ nc += wctomb(mb + nc, 0); return nc; } else { mb[0] = '?'; mb[1] = '\0'; return 2; } #else /*][*/ /* * Use iconv. */ /* Translate the wchar_t we got from UCS-4 to UTF-8. */ nu8 = unicode_to_utf8(uc, u8b); if (nu8 < 0) { return 0; } /* Local multi-byte might be UTF-8, in which case, we're done. */ if (is_utf8) { memcpy(mb, u8b, nu8); mb[nu8++] = '\0'; return nu8; } /* Let iconv translate from UTF-8 to local multi-byte. */ inbuf = u8b; inbytesleft = nu8; outbuf = mb; outbytesleft = mb_len; nc = iconv(i_u2mb, &inbuf, &inbytesleft, &outbuf, &outbytesleft); if (nc == (size_t)-1 || inbytesleft == (unsigned)nu8) { mb[0] = '?'; mb[1] = '\0'; return 2; } /* Return to the initial shift state. */ nc = iconv(i_u2mb, NULL, NULL, &outbuf, &outbytesleft); if (nc == (size_t)-1) { mb[0] = '?'; mb[1] = '\0'; return 0; } /* Null-terminate the return the length. */ mb[mb_len - outbytesleft--] = '\0'; return mb_len - outbytesleft; #endif /*]*/ } /* Commonest version of ebcdic_to_multibyte_x: * cs is CS_BASE * EUO_BLANK_UNDEF is set * ucp is ignored */ size_t ebcdic_to_multibyte(ebc_t ebc, char mb[], size_t mb_len) { return ebcdic_to_multibyte_x(ebc, CS_BASE, mb, mb_len, EUO_BLANK_UNDEF, NULL); } /* * ebcdic_to_multibyte with UTF-8 override. */ size_t ebcdic_to_multibyte_f(ebc_t ebc, char mb[], size_t mb_len, bool force_utf8) { ucs4_t ucs4; return ebcdic_to_multibyte_fx(ebc, CS_BASE, mb, mb_len, EUO_BLANK_UNDEF, &ucs4, force_utf8); } /* * ebcdic_to_multibyte_x with UTF-8 override. */ size_t ebcdic_to_multibyte_fx(ebc_t ebc, unsigned char cs, char mb[], size_t mb_len, unsigned flags, ucs4_t *ucp, bool force_utf8) { if (force_utf8) { ucs4_t ucs4; int len; if (mb_len < 7) { mb[0] = '\0'; return 1; } ucs4 = ebcdic_to_unicode(ebc, cs, flags); if (ucs4 == 0 && (flags & EUO_BLANK_UNDEF) != 0) { ucs4 = ' '; } *ucp = ucs4; len = unicode_to_utf8(ucs4, mb); if (len < 0) { len = 0; } mb[len++] = '\0'; return len; } else { return ebcdic_to_multibyte_x(ebc, cs, mb, mb_len, flags, ucp); } } /* * Convert an EBCDIC string to a multibyte string. * Makes lots of assumptions: standard character set, EUO_BLANK_UNDEF. * Returns the length of the multibyte string. */ size_t ebcdic_to_multibyte_string(unsigned char *ebc, size_t ebc_len, char mb[], size_t mb_len) { size_t nmb = 0; while (ebc_len && mb_len) { size_t xlen; xlen = ebcdic_to_multibyte(*ebc, mb, mb_len); if (xlen) { mb += xlen - 1; mb_len -= (xlen - 1); nmb += xlen - 1; } ebc++; ebc_len--; } return nmb; } /* * Return the maximum buffer length needed to translate 'len' EBCDIC characters * in the current locale. */ int mb_max_len(int len) { #if defined(_WIN32) /*[*/ /* * On Windows, it's 1:1 (we don't do DBCS, and we don't support locales * like UTF-8). * * XXX: On Windows, we *do* do DBCS. Should this change? */ return len + 1; #elif defined(UNICODE_WCHAR) /*][*/ /* Allocate enough space for shift-state transitions. */ return (MB_CUR_MAX * (len * 2)) + 1; #else /*]*/ if (is_utf8) return (len * 6) + 1; else /* * We don't actually know. Guess that MB_CUR_MAX is 16, and compute * as for UNICODE_WCHAR. */ return (16 * (len * 2)) + 1; #endif /*]*/ } ucs4_t multibyte_to_unicode(const char *mb, size_t mb_len, int *consumedp, enum me_fail *errorp) { return multibyte_to_unicode_f(mb, mb_len, consumedp, errorp, false); } /* * Translate a multi-byte character in the current locale to UCS-4. * * Returns a UCS-4 character or 0, indicating an error in translation. * Also returns the number of characters consumed. * * Can also return 0 and ME_SHORT, which is not strictly an error, but rather * an incomplete sequence. */ ucs4_t multibyte_to_unicode_f(const char *mb, size_t mb_len, int *consumedp, enum me_fail *errorp, bool force_utf8) { int nw; ucs4_t ucs4; if (is_utf8 || force_utf8) { /* Translate from UTF-8 to UCS-4. */ nw = utf8_to_unicode(mb, (int)mb_len, &ucs4); if (nw < 0) { *errorp = ME_INVALID; return 0; } if (nw == 0) { *errorp = ME_SHORT; return 0; } *consumedp = nw; } else { #if defined(_WIN32) /*[*/ wchar_t wc[3]; unsigned i; /* Use MultiByteToWideChar() to get from the ANSI codepage to UTF-16. */ for (i = 1; i <= mb_len; i++) { nw = MultiByteToWideChar(u_local_cp, MB_ERR_INVALID_CHARS, mb, i, wc, 3); if (nw != 0) break; } if (i > mb_len) { *errorp = ME_INVALID; return 0; } *consumedp = i; ucs4 = wc[0]; #elif defined(UNICODE_WCHAR) /*][*/ /* wchar_t's are Unicode. */ wchar_t wc[3]; /* mbtowc() will translate to Unicode. */ nw = mbtowc(wc, mb, mb_len); if (nw == -1) { if (errno == EILSEQ) *errorp = ME_INVALID; else *errorp = ME_SHORT; nw = mbtowc(NULL, NULL, 0); return 0; } /* * Reset the shift state. * XXX: Doing this will ruin the shift state if this function is called * repeatedly to process a string. There should probably be a parameter * passed in to control whether or not to reset the shift state, or * perhaps there should be a function to translate a string. */ *consumedp = nw; nw = mbtowc(NULL, NULL, 0); ucs4 = wc[0]; #else /*][*/ /* wchar_t's have unknown encoding. */ ici_t inbuf; char *outbuf; size_t inbytesleft, outbytesleft; char utf8buf[16]; size_t ibl; /* Translate from local MB to UTF-8 using iconv(). */ for (ibl = 1; ibl <= mb_len; ibl++) { size_t xnw; inbuf = (ici_t)mb; outbuf = utf8buf; inbytesleft = ibl; outbytesleft = sizeof(utf8buf); xnw = iconv(i_mb2u, &inbuf, &inbytesleft, &outbuf, &outbytesleft); if (xnw == (size_t)-1) { if (errno == EILSEQ) { *errorp = ME_INVALID; iconv(i_mb2u, NULL, NULL, NULL, NULL); return 0; } else { if (ibl == mb_len) { *errorp = ME_SHORT; iconv(i_mb2u, NULL, NULL, NULL, NULL); return 0; } } } else break; } *consumedp = ibl - inbytesleft; /* Translate from UTF-8 to UCS-4. */ utf8_to_unicode(utf8buf, sizeof(utf8buf) - outbytesleft, &ucs4); #endif /*]*/ } return ucs4; } /* * Convert a multi-byte string to a UCS-4 string. * Does not NULL-terminate the result. * Returns the number of UCS-4 characters stored. */ int multibyte_to_unicode_string(const char *mb, size_t mb_len, ucs4_t *ucs4, size_t u_len, bool force_utf8) { int consumed; enum me_fail error; int nr = 0; error = ME_NONE; while (u_len && mb_len && (*ucs4++ = multibyte_to_unicode_f(mb, mb_len, &consumed, &error, force_utf8)) != 0) { u_len--; mb += consumed; mb_len -= consumed; nr++; } if (error != ME_NONE) return -1; else return nr; } /* * Translate a multi-byte character in the current locale to an EBCDIC * character. * * Returns an 8-bit (SBCS) or 16-bit (DBCS) EBCDIC character, or 0, indicating * an error in translation. Also returns the number of characters consumed. */ ebc_t multibyte_to_ebcdic(const char *mb, size_t mb_len, int *consumedp, enum me_fail *errorp) { ucs4_t ucs4; ucs4 = multibyte_to_unicode(mb, mb_len, consumedp, errorp); if (ucs4 == 0) return 0; return unicode_to_ebcdic(ucs4); } /* * Convert a local multi-byte string to an EBCDIC string. * Returns the length of the resulting EBCDIC string, or -1 if there is a * conversion error. */ int multibyte_to_ebcdic_string(char *mb, size_t mb_len, unsigned char *ebc, size_t ebc_len, enum me_fail *errorp) { int ne = 0; bool in_dbcs = false; while (mb_len > 0 && ebc_len > 0) { ebc_t e; int consumed; e = multibyte_to_ebcdic(mb, mb_len, &consumed, errorp); if (e == 0) return -1; if (e & 0xff00) { /* DBCS. */ if (!in_dbcs) { /* Make sure there's room for SO, b1, b2, SI. */ if (ebc_len < 4) return ne; *ebc++ = EBC_so; ebc_len++; ne++; in_dbcs = true; } /* Make sure there's room for b1, b2, SI. */ if (ebc_len < 3) { *ebc++ = EBC_si; ne++; return ne; } *ebc++ = (e >> 8) & 0xff; *ebc++ = e & 0xff; ebc_len -= 2; ne += 2; } else { /* SBCS. */ if (in_dbcs) { *ebc++ = EBC_si; ne++; if (!--ebc_len) return ne; in_dbcs = false; } *ebc++ = e & 0xff; ebc_len--; ne++; } mb += consumed; mb_len -= consumed; } /* * Terminate the DBCS string, if we end inside it. * We're guaranteed to have space for the SI; we checked before adding * the last DBCS character. */ if (in_dbcs) { *ebc++ = EBC_si; ne++; } return ne; } /* * Translate a UCS-4 character to a local multi-byte string. */ int unicode_to_multibyte(ucs4_t ucs4, char *mb, size_t mb_len) { #if defined(_WIN32) /*[*/ wchar_t wuc = ucs4; BOOL udc; int nc; nc = WideCharToMultiByte(u_local_cp, 0, &wuc, 1, mb, (int)mb_len, (u_local_cp == CP_UTF8)? NULL: "?", (u_local_cp == CP_UTF8)? NULL: &udc); if (nc > 0) mb[nc++] = '\0'; return nc; #elif defined(UNICODE_WCHAR) /*][*/ int nc; if (is_utf8) { nc = unicode_to_utf8(ucs4, mb); if (nc < 0) return 0; mb[nc++] = '\0'; return nc; } nc = wctomb(mb, ucs4); if (nc > 0) { /* Return to the initial shift state and null-terminate. */ nc += wctomb(mb + nc, 0); return nc; } else { mb[0] = '?'; mb[1] = '\0'; return 2; } #else /*][*/ int nu8; char u8b[16]; ici_t inbuf; char *outbuf; size_t inbytesleft, outbytesleft; size_t nc; /* Use iconv. */ /* Translate the wchar_t we got from UCS-4 to UTF-8. */ nu8 = unicode_to_utf8(ucs4, u8b); if (nu8 < 0) return 0; /* Local multi-byte might be UTF-8, in which case, we're done. */ if (is_utf8) { memcpy(mb, u8b, nu8); mb[nu8++] = '\0'; return nu8; } /* Let iconv translate from UTF-8 to local multi-byte. */ inbuf = u8b; inbytesleft = nu8; outbuf = mb; outbytesleft = mb_len; nc = iconv(i_u2mb, &inbuf, &inbytesleft, &outbuf, &outbytesleft); if (nc == (size_t)-1) { mb[0] = '?'; mb[1] = '\0'; return 2; } /* Return to the initial shift state. */ nc = iconv(i_u2mb, NULL, NULL, &outbuf, &outbytesleft); if (nc == (size_t)-1) { mb[0] = '?'; mb[1] = '\0'; return 0; } /* Null-terminate the return the length. */ mb[mb_len - outbytesleft--] = '\0'; return mb_len - outbytesleft; #endif /*]*/ } /* * Unicode to multibyte conversion, with UTF-8 override. */ int unicode_to_multibyte_f(ucs4_t ucs4, char *mb, size_t mb_len, bool force_utf8) { if (force_utf8) { int len; if (mb_len < 7) { mb[0] = '\0'; return 1; } len = unicode_to_utf8(ucs4, mb); if (len < 0) { len = 0; } mb[len++] = '\0'; return len; } else { return unicode_to_multibyte(ucs4, mb, mb_len); } } /* Returns true if using iconv. */ bool using_iconv(void) { #if defined(USE_ICONV) /*[*/ return true; #else /*][*/ return false; #endif } suite3270-4.1/Common/unicode_dbcs.c000066400000000000000000071100351413735575200170630ustar00rootroot00000000000000/* * Copyright (c) 2008-2012, 2014-2015, 2019 Paul Mattes. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the names of Paul Mattes nor the names of his contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO * EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * unicode_dbcs.c * A Windows console-based 3270 Terminal Emulator * DBCS EBCDIC/Unicode translation functions */ #include "globals.h" #include "lazya.h" #include "unicodec.h" #include "unicode_dbcs.h" /* * DBCS EBCDIC-to-Unicode translation tables. */ typedef struct { char *name; const char *codepage; const char *u2ebc[512]; /* Unicode to EBCDIC vectors */ const char *ebc2u[512]; /* EBCDIC to Unicode vectors */ } uni16_t; static uni16_t uni16[] = { { "cp930", "0x0172012c" /* 370, 300 */, /* Unicode to EBCDIC DBCS translation table for ibm-300_P110-1997 */ { /* 0000 */ NULL, /* 0080 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x42\x6a\x44\x6a\x44\x60\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x44\xed\x44\x4b\x00\x00\x00\x00\x44\x50\x00\x00\x43\x79\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x44\x7a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x44\x7b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 0100 */ NULL, /* 0180 */ NULL, /* 0200 */ NULL, /* 0280 */ NULL, /* 0300 */ NULL, /* 0380 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x41\x61\x41\x62\x41\x63\x41\x64\x41\x65\x41\x66\x41\x67\x41\x68\x41\x69\x41\x6a\x41\x6b\x41\x6c\x41\x6d\x41\x6e\x41\x6f\x41\x70\x41\x71\x00\x00\x41\x72\x41\x73\x41\x74\x41\x75\x41\x76\x41\x77\x41\x78\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x41\x41\x41\x42\x41\x43\x41\x44\x41\x45\x41\x46\x41\x47\x41\x48\x41\x49\x41\x4a\x41\x4b\x41\x4c\x41\x4d\x41\x4e\x41\x4f\x41\x50\x41\x51\x00\x00\x41\x52\x41\x53\x41\x54\x41\x55\x41\x56\x41\x57\x41\x58\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 0400 */ "\x00\x00\x41\xc6\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x41\xc0\x41\xc1\x41\xc2\x41\xc3\x41\xc4\x41\xc5\x41\xc7\x41\xc8\x41\xc9\x41\xca\x41\xcb\x41\xcc\x41\xcd\x41\xce\x41\xcf\x41\xd0\x41\xd1\x41\xd2\x41\xd3\x41\xd4\x41\xd5\x41\xd6\x41\xd7\x41\xd8\x41\xd9\x41\xda\x41\xdb\x41\xdc\x41\xdd\x41\xde\x41\xdf\x41\xe0\x41\x80\x41\x81\x41\x82\x41\x83\x41\x84\x41\x85\x41\x87\x41\x88\x41\x89\x41\x8a\x41\x8b\x41\x8c\x41\x8d\x41\x8e\x41\x8f\x41\x90\x41\x91\x41\x92\x41\x93\x41\x94\x41\x95\x41\x96\x41\x97\x41\x98\x41\x99\x41\x9a\x41\x9b\x41\x9c\x41\x9d\x41\x9e\x41\x9f\x41\xa0\x00\x00\x41\x86\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 0480 */ NULL, /* 0500 */ NULL, /* 0580 */ NULL, /* 0600 */ NULL, /* 0680 */ NULL, /* 0700 */ NULL, /* 0780 */ NULL, /* 0800 */ NULL, /* 0880 */ NULL, /* 0900 */ NULL, /* 0980 */ NULL, /* 0a00 */ NULL, /* 0a80 */ NULL, /* 0b00 */ NULL, /* 0b80 */ NULL, /* 0c00 */ NULL, /* 0c80 */ NULL, /* 0d00 */ NULL, /* 0d80 */ NULL, /* 0e00 */ NULL, /* 0e80 */ NULL, /* 0f00 */ NULL, /* 0f80 */ NULL, /* 1000 */ NULL, /* 1080 */ NULL, /* 1100 */ NULL, /* 1180 */ NULL, /* 1200 */ NULL, /* 1280 */ NULL, /* 1300 */ NULL, /* 1380 */ NULL, /* 1400 */ NULL, /* 1480 */ NULL, /* 1500 */ NULL, /* 1580 */ NULL, /* 1600 */ NULL, /* 1680 */ NULL, /* 1700 */ NULL, /* 1780 */ NULL, /* 1800 */ NULL, /* 1880 */ NULL, /* 1900 */ NULL, /* 1980 */ NULL, /* 1a00 */ NULL, /* 1a80 */ NULL, /* 1b00 */ NULL, /* 1b80 */ NULL, /* 1c00 */ NULL, /* 1c80 */ NULL, /* 1d00 */ NULL, /* 1d80 */ NULL, /* 1e00 */ NULL, /* 1e80 */ NULL, /* 1f00 */ NULL, /* 1f80 */ NULL, /* 2000 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x44\x5a\x00\x00\x00\x00\x00\x00\x44\x4a\x00\x00\x44\x7c\x00\x00\x44\x61\x44\x71\x00\x00\x00\x00\x44\x62\x44\x72\x00\x00\x00\x00\x43\x77\x43\x78\x00\x00\x00\x00\x00\x00\x44\x7e\x44\x7f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x43\x73\x00\x00\x44\xee\x44\xef\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x44\x6b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 2080 */ NULL, /* 2100 */ "\x00\x00\x00\x00\x00\x00\x44\x4e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x44\x6e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x44\x6f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x43\x72\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x41\xf1\x41\xf2\x41\xf3\x41\xf4\x41\xf5\x41\xf6\x41\xf7\x41\xf8\x41\xf9\x41\xfa\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x41\xb1\x41\xb2\x41\xb3\x41\xb4\x41\xb5\x41\xb6\x41\xb7\x41\xb8\x41\xb9\x41\xba\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 2180 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x44\xf1\x44\xf2\x44\xf0\x44\xf3\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x43\x6e\x00\x00\x43\x6f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 2200 */ "\x43\x70\x00\x00\x43\x4e\x43\x71\x00\x00\x00\x00\x00\x00\x43\x4f\x43\x64\x00\x00\x00\x00\x43\x65\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x42\x60\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x43\x5f\x00\x00\x00\x00\x43\x61\x44\x4d\x00\x00\x43\x4b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x43\x6c\x43\x6d\x43\x6b\x43\x6a\x43\x62\x43\x63\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x44\x68\x44\x78\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x43\x60\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x43\x5c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x44\x4c\x43\x5b\x00\x00\x00\x00\x00\x00\x00\x00\x44\x67\x44\x77\x00\x00\x00\x00\x43\x5d\x43\x5e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 2280 */ "\x00\x00\x00\x00\x43\x68\x43\x69\x00\x00\x00\x00\x43\x66\x43\x67\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x43\x4c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 2300 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x43\x4d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 2380 */ NULL, /* 2400 */ NULL, /* 2480 */ NULL, /* 2500 */ "\x43\x7c\x43\xb7\x43\x7d\x43\xb8\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x43\x7e\x00\x00\x00\x00\x43\xb9\x43\x7f\x00\x00\x00\x00\x43\xe1\x43\xb1\x00\x00\x00\x00\x43\xe3\x43\xb0\x00\x00\x00\x00\x43\xe2\x43\xb2\x43\xee\x00\x00\x00\x00\x43\xe9\x00\x00\x00\x00\x43\xe4\x43\xb4\x43\xf0\x00\x00\x00\x00\x43\xeb\x00\x00\x00\x00\x43\xe6\x43\xb3\x00\x00\x00\x00\x43\xea\x43\xef\x00\x00\x00\x00\x43\xe5\x43\xb5\x00\x00\x00\x00\x43\xec\x43\xf1\x00\x00\x00\x00\x43\xe7\x43\xb6\x00\x00\x00\x00\x43\xed\x00\x00\x00\x00\x43\xf2\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x43\xe8\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 2580 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x44\xea\x44\xe9\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x44\xe3\x44\xe2\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x44\xec\x44\xeb\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x44\xe8\x44\xe7\x00\x00\x00\x00\x00\x00\x44\xe0\x00\x00\x00\x00\x44\xe4\x44\xe1\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x43\x7a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 2600 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x44\xe6\x44\xe5\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x44\x79\x00\x00\x44\x69\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x43\x76\x00\x00\x00\x00\x43\x75\x00\x00\x43\x74\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 2680 */ NULL, /* 2700 */ NULL, /* 2780 */ NULL, /* 2800 */ NULL, /* 2880 */ NULL, /* 2900 */ NULL, /* 2980 */ NULL, /* 2a00 */ NULL, /* 2a80 */ NULL, /* 2b00 */ NULL, /* 2b80 */ NULL, /* 2c00 */ NULL, /* 2c80 */ NULL, /* 2d00 */ NULL, /* 2d80 */ NULL, /* 2e00 */ NULL, /* 2e80 */ NULL, /* 2f00 */ NULL, /* 2f80 */ NULL, /* 3000 */ "\x40\x40\x43\x44\x43\x41\x44\x5b\x00\x00\x44\x5d\x44\x5e\x44\x5f\x44\x64\x44\x74\x44\x65\x44\x75\x43\x42\x43\x43\x44\x42\x44\x43\x44\x66\x44\x76\x44\x6c\x44\x7d\x44\x63\x44\x73\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x43\xa1\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x44\x47\x44\x81\x44\x48\x44\x82\x44\x49\x44\x83\x44\x51\x44\x84\x44\x52\x44\x85\x44\x86\x44\xc0\x44\x87\x44\xc1\x44\x88\x44\xc2\x44\x89\x44\xc3\x44\x8a\x44\xc4\x44\x8c\x44\xc5\x44\x8d\x44\xc6\x44\x8e\x44\xc7\x44\x8f\x44\xc8\x44\x90\x44\xc9\x44\x91\x44\xca\x44\x92\x44\xcb\x44\x56\x44\x93\x44\xcc\x44\x94\x44\xcd\x44\x95\x44\xce\x44\x96\x44\x97\x44\x98\x44\x99\x44\x9a\x44\x9d\x44\xcf\x44\xd5\x44\x9e\x44\xd0\x44\xd6\x44\x9f\x44\xd1\x44\xd7\x44\xa2\x44\xd2\x44\xd8\x44\xa3\x44\xd3\x44\xd9\x44\xa4\x44\xa5", /* 3080 */ "\x44\xa6\x44\xa7\x44\xa8\x44\x53\x44\xa9\x44\x54\x44\xaa\x44\x55\x44\xac\x44\xad\x44\xae\x44\xaf\x44\xba\x44\xbb\x44\x57\x44\xbc\x44\xda\x44\xdb\x44\x46\x44\xbd\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x43\xbe\x43\xbf\x44\xdc\x44\xdd\x00\x00\x00\x00\x43\x47\x43\x81\x43\x48\x43\x82\x43\x49\x43\x83\x43\x51\x43\x84\x43\x52\x43\x85\x43\x86\x43\xc0\x43\x87\x43\xc1\x43\x88\x43\xc2\x43\x89\x43\xc3\x43\x8a\x43\xc4\x43\x8c\x43\xc5\x43\x8d\x43\xc6\x43\x8e\x43\xc7\x43\x8f\x43\xc8\x43\x90\x43\xc9\x43\x91\x43\xca\x43\x92\x43\xcb\x43\x56\x43\x93\x43\xcc\x43\x94\x43\xcd\x43\x95\x43\xce\x43\x96\x43\x97\x43\x98\x43\x99\x43\x9a\x43\x9d\x43\xcf\x43\xd5\x43\x9e\x43\xd0\x43\xd6\x43\x9f\x43\xd1\x43\xd7\x43\xa2\x43\xd2\x43\xd8\x43\xa3\x43\xd3\x43\xd9\x43\xa4\x43\xa5\x43\xa6\x43\xa7\x43\xa8\x43\x53\x43\xa9\x43\x54\x43\xaa\x43\x55\x43\xac\x43\xad\x43\xae\x43\xaf\x43\xba\x43\xbb\x43\x57\x43\xbc\x43\xda\x43\xdb\x43\x46\x43\xbd\x43\xd4\x43\x59\x43\x5a\x00\x00\x00\x00\x00\x00\x00\x00\x43\x45\x43\x58\x43\xdc\x43\xdd\x00\x00", /* 3100 */ NULL, /* 3180 */ NULL, /* 3200 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x44\x6d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 3280 */ NULL, /* 3300 */ NULL, /* 3380 */ NULL, /* 3400 */ NULL, /* 3480 */ NULL, /* 3500 */ NULL, /* 3580 */ NULL, /* 3600 */ NULL, /* 3680 */ NULL, /* 3700 */ NULL, /* 3780 */ NULL, /* 3800 */ NULL, /* 3880 */ NULL, /* 3900 */ NULL, /* 3980 */ NULL, /* 3a00 */ NULL, /* 3a80 */ NULL, /* 3b00 */ NULL, /* 3b80 */ NULL, /* 3c00 */ NULL, /* 3c80 */ NULL, /* 3d00 */ NULL, /* 3d80 */ NULL, /* 3e00 */ NULL, /* 3e80 */ NULL, /* 3f00 */ NULL, /* 3f80 */ NULL, /* 4000 */ NULL, /* 4080 */ NULL, /* 4100 */ NULL, /* 4180 */ NULL, /* 4200 */ NULL, /* 4280 */ NULL, /* 4300 */ NULL, /* 4380 */ NULL, /* 4400 */ NULL, /* 4480 */ NULL, /* 4500 */ NULL, /* 4580 */ NULL, /* 4600 */ NULL, /* 4680 */ NULL, /* 4700 */ NULL, /* 4780 */ NULL, /* 4800 */ NULL, /* 4880 */ NULL, /* 4900 */ NULL, /* 4980 */ NULL, /* 4a00 */ NULL, /* 4a80 */ NULL, /* 4b00 */ NULL, /* 4b80 */ NULL, /* 4c00 */ NULL, /* 4c80 */ NULL, /* 4d00 */ NULL, /* 4d80 */ NULL, /* 4e00 */ "\x45\x41\x4b\xce\x00\x00\x45\x47\x00\x00\x00\x00\x00\x00\x45\x4d\x49\xd3\x45\x43\x45\x5e\x45\x5f\x00\x00\x46\xaf\x47\x89\x00\x00\x56\x42\x4d\xec\x00\x00\x00\x00\x4f\x97\x56\x43\x46\x9b\x57\x75\x4d\x56\x50\xc5\x00\x00\x00\x00\x00\x00\x00\x00\x4f\x62\x00\x00\x00\x00\x48\x83\x00\x00\x00\x00\x00\x00\x00\x00\x48\x7c\x00\x00\x56\x44\x00\x00\x56\x45\x00\x00\x00\x00\x45\x5c\x00\x00\x00\x00\x00\x00\x56\x46\x4c\xb8\x00\x00\x00\x00\x00\x00\x56\x47\x00\x00\x46\x7a\x48\xab\x00\x00\x47\x62\x54\xc8\x00\x00\x00\x00\x56\x48\x00\x00\x00\x00\x56\x49\x4b\x9f\x00\x00\x45\x8a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x45\xd8\x00\x00\x55\xa9\x54\xa5\x4f\x6c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x62\xd0\x56\x4a\x49\x47\x56\x4b\x4b\xbd\x00\x00\x00\x00\x00\x00\x45\x49\x4e\xb5\x47\x49\x00\x00\x00\x00\x56\x4c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4b\xbf\x00\x00\x4a\x98\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x49\x70\x00\x00", /* 4e80 */ "\x47\xc0\x00\x00\x56\x4d\x00\x00\x00\x00\x56\x4e\x4b\xb1\x00\x00\x47\xc2\x48\x96\x56\x4f\x45\xce\x45\x42\x00\x00\x56\x50\x00\x00\x00\x00\x49\x9d\x4b\x74\x00\x00\x45\x45\x45\x6d\x00\x00\x00\x00\x4b\xe4\x50\xe8\x00\x00\x55\xdc\x48\x67\x00\x00\x56\x52\x51\x67\x56\x53\x4c\xce\x56\x54\x00\x00\x47\x8e\x4f\x7f\x4f\xfa\x00\x00\x4b\xac\x00\x00\x00\x00\x4b\x73\x45\x75\x4e\x52\x49\x9c\x00\x00\x56\x55\x00\x00\x00\x00\x56\x56\x00\x00\x00\x00\x56\x57\x00\x00\x00\x00\x00\x00\x45\x93\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x53\xd9\x47\x76\x56\x5c\x00\x00\x56\x5a\x00\x00\x56\x5b\x50\x85\x00\x00\x00\x00\x45\xe0\x48\x4b\x00\x00\x56\x59\x56\x58\x4b\xe5\x00\x00\x00\x00\x00\x00\x00\x00\x54\x65\x48\xb5\x47\x55\x56\x5e\x47\x5d\x48\xa2\x00\x00\x00\x00\x00\x00\x44\x5c\x56\x5f\x56\x61\x00\x00\x56\x5d\x00\x00\x45\x9a\x49\xc3\x46\xf6\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x56\x60\x4d\x71\x00\x00\x4d\xed\x00\x00\x48\x69\x00\x00\x00\x00\x00\x00\x48\xb2\x53\x41\x00\x00\x00\x00\x00\x00\x4a\x55\x56\x62\x00\x00\x00\x00\x00\x00", /* 4f00 */ "\x56\x65\x47\xd2\x00\x00\x56\x66\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x56\x63\x45\xb2\x00\x00\x00\x00\x4d\x99\x4e\x9f\x4a\x83\x50\xf6\x4a\x81\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x45\xbd\x00\x00\x56\x64\x48\xd9\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x49\xa6\x56\x68\x00\x00\x00\x00\x00\x00\x49\xc9\x00\x00\x54\x4a\x00\x00\x46\xf4\x56\x6a\x50\x8a\x00\x00\x4b\xbc\x54\x61\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4e\xdf\x00\x00\x00\x00\x4e\xfe\x56\x6c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x47\xc8\x48\xa4\x46\xe0\x45\x76\x4c\xe6\x00\x00\x46\x96\x00\x00\x47\x70\x56\x6e\x56\x6b\x00\x00\x49\xc1\x56\x67\x56\x6f\x45\x94\x56\x69\x56\x6d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x56\x79\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x56\x7c\x56\x7a\x00\x00\x00\x00\x48\x76\x00\x00\x4b\x94\x51\xe2\x00\x00\x00\x00\x00\x00\x00\x00\x56\x77\x54\x62\x00\x00\x00\x00\x48\xb6", /* 4f80 */ "\x00\x00\x00\x00\x00\x00\x4f\x98\x00\x00\x00\x00\x56\x7d\x00\x00\x56\x72\x00\x00\x56\x71\x4a\x46\x00\x00\x4f\xc2\x00\x00\x56\x73\x00\x00\x4f\x8d\x56\x70\x00\x00\x56\x7b\x00\x00\x56\x7e\x00\x00\x56\x76\x00\x00\x56\x74\x48\xbc\x00\x00\x4a\x9e\x00\x00\x00\x00\x52\xec\x47\x5a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x56\x78\x00\x00\x56\x75\x53\xb9\x53\xe3\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4f\x8c\x55\x7c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4b\x4c\x00\x00\x00\x00\x48\x51\x4a\x6a\x54\xc7\x00\x00\x00\x00\x00\x00\x00\x00\x52\x94\x46\x60\x00\x00\x00\x00\x56\x86\x56\x80\x00\x00\x56\x85\x56\x83\x00\x00\x00\x00\x56\x7f\x00\x00\x00\x00\x4e\x97\x56\x81\x00\x00\x56\x84\x56\x82\x00\x00\x45\xaa\x00\x00\x53\xc4\x52\xec\x45\xa5\x00\x00\x4b\x4a\x56\x87\x56\x88\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x46\xde\x56\x96\x00\x00\x00\x00\x00\x00\x4c\xe1\x00\x00\x4d\xb1\x51\xf8\x00\x00\x50\xf9\x00\x00\x4e\x67\x00\x00\x00\x00\x00\x00\x56\x95\x56\x94", /* 5000 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x56\x8f\x56\x99\x00\x00\x00\x00\x45\xd6\x00\x00\x49\xfa\x00\x00\x4a\xc4\x00\x00\x56\xa1\x00\x00\x56\x97\x4b\x6a\x00\x00\x56\x8c\x00\x00\x53\x43\x00\x00\x00\x00\x4c\xae\x56\x89\x00\x00\x00\x00\x00\x00\x56\x98\x4a\xd0\x00\x00\x56\x90\x56\x91\x55\x69\x48\x7d\x56\x8e\x52\xf1\x00\x00\x56\x8b\x56\x92\x56\x8d\x4d\x51\x56\x93\x4f\xf9\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4f\x63\x00\x00\x00\x00\x52\xfa\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x56\x8a\x00\x00\x56\xa4\x56\x9a\x00\x00\x00\x00\x56\xa2\x56\x9b\x56\x9e\x4d\xfb\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x50\x49\x56\x9d\x00\x00\x00\x00\x00\x00\x00\x00\x56\x9c\x56\xa0\x00\x00\x00\x00\x00\x00\x56\x9f\x00\x00\x4e\x70\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x46\x81\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x56\xa5\x00\x00\x00\x00\x00\x00\x56\xa3\x00\x00\x54\xd2\x00\x00\x49\x43\x4f\x95\x50\xc3\x00\x00\x56\xa6\x00\x00\x00\x00\x00\x00\x00\x00\x50\x59\x00\x00\x00\x00", /* 5080 */ "\x56\xa7\x00\x00\x00\x00\x00\x00\x00\x00\x56\xaa\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4e\xe7\x00\x00\x00\x00\x00\x00\x4f\xc3\x00\x00\x00\x00\x56\xa8\x00\x00\x00\x00\x00\x00\x50\x9c\x46\xac\x56\xa9\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4c\x43\x54\xda\x00\x00\x00\x00\x00\x00\x00\x00\x56\xad\x56\xb0\x56\xab\x4b\x58\x00\x00\x4c\x5b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4a\x43\x00\x00\x00\x00\x00\x00\x56\xb1\x00\x00\x00\x00\x4f\xc9\x00\x00\x00\x00\x00\x00\x56\xae\x56\xaf\x00\x00\x00\x00\x48\xec\x00\x00\x4b\xba\x00\x00\x55\xad\x00\x00\x00\x00\x00\x00\x4a\xbb\x52\xd4\x00\x00\x56\xb5\x00\x00\x4d\x82\x00\x00\x00\x00\x00\x00\x56\xb3\x00\x00\x00\x00\x00\x00\x00\x00\x56\xb7\x00\x00\x56\xb4\x00\x00\x4e\x84\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x56\xb6\x56\xb8\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x56\xb2\x56\xba\x00\x00\x00\x00\x00\x00\x56\xb9\x00\x00\x55\x78\x00\x00\x00\x00\x00\x00\x00\x00", /* 5100 */ "\x49\xca\x56\xbc\x56\xbd\x00\x00\x45\x4e\x00\x00\x00\x00\x00\x00\x00\x00\x56\xbb\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x54\x6f\x00\x00\x56\xc0\x56\xbf\x56\xc1\x00\x00\x52\x90\x00\x00\x56\xbe\x00\x00\x00\x00\x00\x00\x00\x00\x4a\xa2\x00\x00\x56\xc2\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x47\xda\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x54\xbd\x00\x00\x00\x00\x00\x00\x00\x00\x56\xc4\x00\x00\x00\x00\x56\xc3\x56\xc6\x56\xc5\x00\x00\x00\x00\x56\xc7\x56\xc8\x4c\x91\x00\x00\x46\x95\x4b\xe8\x48\xc9\x4d\xf3\x55\x5a\x47\xa2\x45\x9e\x56\xc9\x47\x9e\x56\xca\x4b\x56\x50\x50\x00\x00\x46\x9f\x00\x00\x56\xcb\x00\x00\x56\xcc\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x49\x4b\x00\x00\x51\xbe\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x56\xcd\x00\x00\x56\xce\x46\x65\x00\x00\x00\x00\x46\xb1\x56\xcf\x56\xd0\x45\x48\x46\xbb\x45\x46\x56\xd1\x00\x00\x00\x00\x47\xb3\x00\x00\x00\x00\x00\x00\x46\x49\x4f\x67\x47\xaf\x47\xc9\x00\x00\x00\x00\x00\x00\x48\xf4\x00\x00\x00\x00\x00\x00", /* 5180 */ "\x56\xd2\x00\x00\x56\xd3\x00\x00\x00\x00\x45\x8e\x46\x45\x00\x00\x00\x00\x56\xd6\x4e\xa1\x00\x00\x56\xd5\x48\xeb\x00\x00\x56\xd7\x61\x9d\x56\xd8\x4f\x8f\x56\xd9\x00\x00\x56\xda\x56\xdb\x52\x7e\x00\x00\x48\xc4\x00\x00\x00\x00\x00\x00\x56\xdc\x00\x00\x00\x00\x4e\x7b\x00\x00\x56\xdf\x00\x00\x56\xdd\x54\x67\x56\xde\x00\x00\x48\x78\x56\xe0\x56\xe1\x56\xe2\x4b\xde\x00\x00\x00\x00\x00\x00\x56\xe6\x56\xe4\x56\xe5\x56\xe3\x50\xc9\x56\xe7\x51\x46\x48\xfc\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x56\xe9\x56\xe8\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x52\xdc\x56\xea\x4f\x80\x00\x00\x00\x00\x56\xeb\x00\x00\x55\xf9\x53\x44\x4b\xe6\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x57\x77\x00\x00\x00\x00\x00\x00\x00\x00\x56\xec\x68\x84\x4e\xd9\x00\x00\x00\x00\x56\xed\x4d\xe1\x00\x00\x00\x00\x00\x00\x00\x00\x48\xe6\x55\x8a\x00\x00\x56\xee\x54\x9e\x00\x00\x56\xef\x56\xf0\x00\x00\x00\x00\x56\xf1\x51\xac\x00\x00\x00\x00\x00\x00\x56\xf2\x51\xec\x00\x00\x50\xcf\x50\xe6\x45\x9b\x00\x00\x00\x00\x4b\xb6\x56\xf3\x00\x00", /* 5200 */ "\x4c\x50\x00\x00\x00\x00\x4f\x44\x56\xf4\x00\x00\x45\xb4\x47\x65\x4b\x9b\x00\x00\x4c\xd7\x56\xf5\x00\x00\x00\x00\x54\xe3\x00\x00\x00\x00\x4c\x52\x00\x00\x00\x00\x56\xf6\x56\xf7\x00\x00\x4b\xb4\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x47\x4b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x49\x5c\x46\xdd\x00\x00\x56\xf8\x00\x00\x45\xbc\x56\xf9\x00\x00\x00\x00\x00\x00\x56\xfa\x00\x00\x4c\xdd\x00\x00\x00\x00\x56\xfb\x00\x00\x00\x00\x46\xc4\x48\xcf\x4b\x6b\x56\xfc\x4b\xc0\x4b\xf5\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x53\x79\x56\xfd\x00\x00\x00\x00\x47\x4d\x00\x00\x00\x00\x4a\x90\x56\xfe\x51\xae\x45\xaf\x00\x00\x57\x41\x00\x00\x00\x00\x00\x00\x00\x00\x57\x43\x00\x00\x51\x99\x00\x00\x00\x00\x00\x00\x00\x00\x49\xc7\x00\x00\x54\x81\x57\x42\x00\x00\x00\x00\x00\x00\x00\x00\x4c\xd3\x47\x66\x54\x81\x00\x00\x00\x00\x00\x00\x57\x48\x57\x45\x00\x00\x00\x00\x00\x00\x00\x00\x4b\x4e\x4d\x85\x57\x44\x47\xd6\x57\x46\x57\x47\x4b\xe1\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x57\x4a\x00\x00\x57\x49", /* 5280 */ "\x00\x00\x00\x00\x00\x00\x55\xd6\x00\x00\x00\x00\x00\x00\x49\xf0\x57\x4c\x51\x85\x00\x00\x00\x00\x00\x00\x57\x4b\x00\x00\x00\x00\x00\x00\x57\x4e\x57\x4d\x00\x00\x55\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x45\xf7\x57\x4f\x00\x00\x00\x00\x48\x70\x45\x9f\x00\x00\x00\x00\x4e\x68\x00\x00\x00\x00\x57\x50\x00\x00\x00\x00\x46\x71\x4a\x64\x54\xc6\x57\x51\x57\x52\x00\x00\x5f\xaa\x00\x00\x4d\x92\x00\x00\x00\x00\x48\xa9\x57\x54\x00\x00\x00\x00\x00\x00\x49\x78\x00\x00\x00\x00\x57\x53\x00\x00\x55\x6a\x00\x00\x57\x56\x57\x55\x00\x00\x54\xb1\x00\x00\x4e\xef\x00\x00\x46\x9c\x00\x00\x48\xce\x00\x00\x00\x00\x00\x00\x57\x57\x00\x00\x00\x00\x00\x00\x00\x00\x53\xd6\x00\x00\x00\x00\x45\xe4\x00\x00\x53\x92\x4b\x9a\x46\xed\x00\x00\x57\x58\x00\x00\x45\xb5\x57\x59\x4a\xe1\x57\x5c\x00\x00\x47\xee\x57\x5a\x49\x9f\x00\x00\x57\x5b\x4c\x7e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x49\x7a\x57\x5d\x00\x00\x57\x5e\x00\x00\x00\x00\x57\x5f\x57\x60\x54\x70\x00\x00\x00\x00\x00\x00\x51\xe9\x52\x97", /* 5300 */ "\x57\x61\x4f\x5b\x4e\xcb\x00\x00\x00\x00\x4a\xa8\x57\x62\x57\x63\x57\x64\x00\x00\x00\x00\x00\x00\x00\x00\x57\x66\x00\x00\x57\x68\x57\x67\x00\x00\x00\x00\x00\x00\x00\x00\x57\x69\x45\x90\x45\x5a\x00\x00\x54\x57\x57\x6a\x00\x00\x00\x00\x51\xb7\x00\x00\x00\x00\x4e\x6b\x4d\x4d\x00\x00\x57\x6c\x57\x6b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x55\xed\x00\x00\x00\x00\x00\x00\x00\x00\x57\x6d\x00\x00\x57\x6e\x00\x00\x57\x6f\x00\x00\x00\x00\x00\x00\x00\x00\x57\x70\x4f\xd1\x45\x54\x4a\x87\x00\x00\x00\x00\x00\x00\x50\xf1\x57\x71\x45\x4a\x00\x00\x45\x4c\x00\x00\x57\x72\x57\x73\x4e\x47\x45\xdf\x57\x74\x47\x90\x00\x00\x00\x00\x57\x76\x00\x00\x00\x00\x00\x00\x53\xad\x4a\xf2\x49\x96\x47\xd7\x00\x00\x00\x00\x45\x59\x48\xe3\x00\x00\x45\xf6\x00\x00\x51\xc0\x00\x00\x57\x79\x00\x00\x49\xee\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x53\xdb\x00\x00\x00\x00\x57\x7a\x00\x00\x00\x00\x00\x00\x00\x00\x57\x7b\x4c\x82\x47\x99\x4b\x91\x57\x7c\x4b\x6d\x4a\xa4\x4c\xf5\x00\x00\x57\x7d\x4e\x79\x00\x00\x00\x00\x57\x7e\x00\x00\x00\x00\x00\x00\x53\xe2", /* 5380 */ "\x00\x00\x00\x00\x57\x7f\x00\x00\x53\x52\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x57\x80\x00\x00\x00\x00\x57\x81\x00\x00\x4f\x55\x00\x00\x49\x42\x00\x00\x00\x00\x00\x00\x00\x00\x45\x74\x57\x82\x00\x00\x00\x00\x00\x00\x00\x00\x57\x84\x57\x83\x00\x00\x51\x78\x53\x67\x00\x00\x00\x00\x00\x00\x53\xb7\x57\x85\x00\x00\x57\x86\x00\x00\x57\x87\x4c\x8e\x00\x00\x00\x00\x57\x88\x00\x00\x00\x00\x00\x00\x00\x00\x4a\xca\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x48\xd2\x57\x89\x00\x00\x00\x00\x00\x00\x00\x00\x48\xf5\x50\xa5\x48\x5c\x46\xd4\x4b\x71\x47\xf9\x47\x91\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4f\xa5\x00\x00\x46\xa6\x48\x4c\x00\x00\x50\xf5\x00\x00\x55\xb2\x00\x00\x57\x8b\x00\x00\x57\x8c\x00\x00\x51\x94\x53\xf5\x45\x88\x45\xd4\x4c\x8b\x00\x00\x00\x00\x57\x91\x4f\x71\x4e\x41\x4d\xd5\x4f\x86\x57\x92\x57\x90\x47\xc6\x47\x78\x50\x42\x47\xd9\x48\x5a\x00\x00\x00\x00\x4f\x59\x48\xe2\x45\xf0\x00\x00\x57\x93\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 5400 */ "\x00\x00\x57\x94\x00\x00\x55\xea\x47\xba\x00\x00\x00\x00\x00\x00\x45\xa0\x45\x7e\x53\xd3\x55\xbc\x46\x6d\x45\xf3\x51\xaf\x50\xc6\x4e\xb2\x46\xa5\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x47\xcf\x00\x00\x57\x9d\x00\x00\x50\x7a\x53\xe1\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4c\x4f\x00\x00\x00\x00\x57\x9c\x00\x00\x49\xcb\x57\x97\x57\x98\x57\x9a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x57\x9b\x00\x00\x4b\x98\x49\xc4\x00\x00\x53\xe5\x57\x99\x57\x95\x47\xf6\x00\x00\x57\x96\x00\x00\x4b\x50\x00\x00\x00\x00\x00\x00\x50\x73\x00\x00\x4f\x56\x4a\xee\x49\x54\x00\x00\x00\x00\x00\x00\x57\x9e\x00\x00\x00\x00\x50\xb0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x57\xa2\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x48\xa1\x00\x00\x54\x8d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x57\xa5\x57\xa3\x00\x00\x47\x7f\x00\x00\x57\xa0\x57\xaa\x57\xa4\x00\x00\x00\x00\x00\x00\x57\xa7\x4a\xf6\x49\xb0\x00\x00\x00\x00", /* 5480 */ "\x57\xa8\x00\x00\x00\x00\x00\x00\x57\xab\x00\x00\x57\xad\x00\x00\x00\x00\x00\x00\x57\xae\x4f\x50\x45\x7a\x00\x00\x57\xa1\x57\x9f\x57\xac\x00\x00\x57\xa6\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x57\xa9\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x57\xb2\x00\x00\x57\xbc\x57\xb4\x00\x00\x00\x00\x57\xb9\x57\xbd\x00\x00\x57\xba\x57\xb5\x00\x00\x00\x00\x57\xb1\x00\x00\x00\x00\x4c\xde\x53\xe9\x00\x00\x00\x00\x00\x00\x00\x00\x57\xb3\x00\x00\x00\x00\x00\x00\x57\xb0\x52\xb1\x57\xbe\x00\x00\x4e\xf9\x45\xd0\x57\xbb\x00\x00\x57\xb6\x00\x00\x00\x00\x57\xaf\x57\xb8\x4a\x6b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x57\xb7\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x46\xcb\x57\xc7\x00\x00\x00\x00\x57\xbf\x57\xc1\x00\x00\x55\x68\x55\xf0\x00\x00\x00\x00\x00\x00\x57\xc6\x57\xc5\x00\x00\x00\x00\x00\x00\x47\x47\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x54\x7c\x00\x00\x00\x00\x57\xc4\x00\x00\x57\xc0", /* 5500 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x4c\xdb\x00\x00\x51\xb8\x4f\x76\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x57\xc2\x4b\xab\x00\x00\x00\x00\x00\x00\x57\xc3\x00\x00\x54\xd4\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x57\xcc\x4b\xe0\x00\x00\x4d\x43\x00\x00\x57\xd2\x00\x00\x00\x00\x00\x00\x00\x00\x57\xd1\x57\xc8\x00\x00\x00\x00\x00\x00\x00\x00\x54\x78\x00\x00\x57\xc9\x00\x00\x00\x00\x00\x00\x53\x83\x57\xce\x46\xbe\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x57\xcb\x00\x00\x00\x00\x46\xe4\x00\x00\x00\x00\x00\x00\x47\xe4\x00\x00\x00\x00\x57\xcf\x57\xd0\x00\x00\x00\x00\x00\x00\x00\x00\x57\xcd\x57\xd3\x54\xd4\x00\x00\x00\x00\x00\x00\x00\x00\x57\xca\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x57\xd8\x57\xdd\x00\x00\x57\xd9\x00\x00", /* 5580 */ "\x57\xd5\x00\x00\x00\x00\x57\xdf\x46\xb3\x00\x00\x57\xde\x57\xe1\x00\x00\x52\x53\x57\xd6\x55\x58\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x57\xda\x57\xd4\x52\xb5\x00\x00\x45\xd1\x54\x75\x57\xdb\x57\xd7\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4f\xd3\x57\xe2\x57\xe0\x51\x68\x4d\x6d\x4c\x5f\x00\x00\x57\xdc\x00\x00\x4e\xb9\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x48\xd3\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x57\xe5\x57\xe3\x00\x00\x58\x58\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x57\xe8\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x52\xa2\x00\x00\x57\xe6\x00\x00\x00\x00\x57\xe4\x00\x00\x00\x00\x00\x00\x4b\x5e\x57\xe7\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x57\xeb\x00\x00\x57\xe9\x00\x00\x00\x00\x00\x00\x57\xee\x57\xed\x00\x00", /* 5600 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x50\x63\x00\x00\x00\x00\x47\x7e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x57\xea\x00\x00\x57\xec\x54\xec\x50\xf3\x00\x00\x00\x00\x57\xef\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x52\xca\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x57\xf8\x00\x00\x50\xca\x57\xf3\x00\x00\x54\x7f\x00\x00\x57\xf2\x00\x00\x57\xf4\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x52\x9b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x50\x62\x00\x00\x57\xf0\x00\x00\x57\xf1\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x54\x7d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x57\xf6\x00\x00\x00\x00\x00\x00\x45\xfc\x00\x00\x57\xfa\x57\xf5\x57\xf9\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4e\x6d\x00\x00\x00\x00\x00\x00\x55\xf1\x00\x00\x55\x82\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 5680 */ "\x57\xfe\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x57\xf7\x55\xd8\x00\x00\x00\x00\x58\x41\x00\x00\x00\x00\x00\x00\x00\x00\x57\xfd\x00\x00\x00\x00\x00\x00\x00\x00\x57\xfc\x00\x00\x00\x00\x00\x00\x00\x00\x54\x7d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x58\x42\x00\x00\x51\x90\x00\x00\x00\x00\x58\x43\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x58\x44\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x58\x46\x00\x00\x58\x45\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x58\x49\x00\x00\x00\x00\x00\x00\x58\x4c\x58\x4a\x58\x48\x58\x4b\x00\x00\x00\x00\x00\x00\x00\x00\x58\x47\x00\x00\x51\x90\x00\x00\x00\x00\x00\x00\x58\x4d\x00\x00\x00\x00\x58\x4f\x00\x00\x58\x4e\x00\x00\x00\x00\x00\x00\x58\x50\x56\xd4\x00\x00\x50\x65\x45\x44\x00\x00\x00\x00\x46\xa9\x00\x00\x4a\x49\x00\x00\x00\x00\x47\xf0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x58\x51\x00\x00\x4b\x44\x00\x00\x4a\xfa\x47\xc1\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x58\x52\x4a\x94\x00\x00\x00\x00\x45\x8f\x00\x00\x58\x53", /* 5700 */ "\x52\x66\x00\x00\x00\x00\x53\xcf\x58\x54\x00\x00\x00\x00\x00\x00\x58\x56\x58\x55\x00\x00\x51\xbd\x00\x00\x58\x57\x00\x00\x4f\x49\x00\x00\x00\x00\x47\xe1\x54\xe7\x00\x00\x00\x00\x58\x5a\x00\x00\x58\x59\x00\x00\x00\x00\x00\x00\x58\x5b\x00\x00\x00\x00\x46\x84\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x58\x5c\x47\x82\x47\xcd\x00\x00\x00\x00\x00\x00\x00\x00\x49\xe6\x00\x00\x00\x00\x45\xc2\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x51\xd1\x58\x5d\x00\x00\x00\x00\x58\x5f\x00\x00\x00\x00\x00\x00\x00\x00\x58\x61\x00\x00\x45\xec\x00\x00\x00\x00\x00\x00\x00\x00\x49\xae\x00\x00\x00\x00\x4c\x55\x00\x00\x00\x00\x00\x00\x58\x5e\x58\x62\x4e\x8d\x4e\xf3\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x58\x60\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x58\x65\x00\x00\x00\x00\x53\xa6\x58\x63\x51\xc4\x00\x00\x00\x00\x53\x98\x49\x49\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x58\x66", /* 5780 */ "\x00\x00\x00\x00\x4b\xc9\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x58\x64\x58\x67\x00\x00\x46\xe6\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x58\x68\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x58\x69\x00\x00\x54\x66\x47\xce\x58\x6a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x58\x6d\x00\x00\x58\x6c\x00\x00\x00\x00\x00\x00\x53\xcd\x00\x00\x00\x00\x58\x6b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x58\x71\x00\x00\x00\x00\x58\x6e\x00\x00\x00\x00\x58\x6f\x58\x73\x58\x70\x00\x00\x00\x00\x4e\xac\x00\x00\x00\x00\x45\xdb\x00\x00\x00\x00\x00\x00\x58\x74\x58\x75\x58\x72\x00\x00\x58\x76\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4d\xf4\x00\x00\x00\x00\x48\xe9\x51\x7e\x00\x00\x00\x00\x58\x79\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4f\x48\x00\x00\x00\x00\x4d\x57\x00\x00\x4d\xac\x46\xf1\x00\x00\x46\xa3\x00\x00\x00\x00\x00\x00", /* 5800 */ "\x46\x9d\x00\x00\x49\x7f\x00\x00\x00\x00\x4a\xe7\x53\x71\x00\x00\x00\x00\x00\x00\x58\x78\x58\x7a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x53\xb0\x00\x00\x00\x00\x00\x00\x58\x7b\x00\x00\x00\x00\x00\x00\x53\xa7\x00\x00\x00\x00\x00\x00\x58\x7c\x00\x00\x00\x00\x4b\x61\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4f\xac\x00\x00\x00\x00\x00\x00\x00\x00\x4e\x53\x50\xa4\x49\xb8\x00\x00\x00\x00\x45\xd9\x54\xf6\x00\x00\x00\x00\x00\x00\x00\x00\x4a\x7c\x00\x00\x00\x00\x58\x80\x00\x00\x00\x00\x53\x9f\x4b\xeb\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x50\x53\x58\x7d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4e\xc6\x58\x81\x00\x00\x4c\xcb\x00\x00\x00\x00\x48\x6a\x52\xf8\x4f\x6f\x46\x57\x00\x00\x00\x00\x00\x00\x53\xc1\x00\x00\x00\x00\x4f\x5e\x58\x7e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x47\x43\x00\x00\x4f\x5e\x00\x00\x00\x00\x00\x00\x00\x00\x58\x83\x00\x00\x58\x86\x00\x00\x00\x00\x4d\x89\x00\x00\x00\x00\x00\x00\x58\x84\x00\x00\x00\x00\x00\x00\x00\x00\x52\x79\x00\x00", /* 5880 */ "\x00\x00\x00\x00\x00\x00\x4a\x95\x00\x00\x58\x85\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4e\xbe\x00\x00\x00\x00\x00\x00\x46\x4d\x00\x00\x00\x00\x00\x00\x00\x00\x51\x50\x00\x00\x58\x8a\x58\x87\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4a\xfc\x00\x00\x00\x00\x58\x88\x00\x00\x00\x00\x58\x8b\x00\x00\x00\x00\x00\x00\x58\x8c\x52\x89\x00\x00\x00\x00\x00\x00\x00\x00\x58\x89\x58\x8d\x58\x8e\x55\x52\x00\x00\x00\x00\x54\x88\x00\x00\x00\x00\x4b\x95\x00\x00\x00\x00\x00\x00\x58\x8f\x00\x00\x4e\x8e\x00\x00\x00\x00\x4e\xc8\x00\x00\x51\x96\x00\x00\x00\x00\x00\x00\x00\x00\x58\x91\x00\x00\x58\x90\x00\x00\x55\xb9\x00\x00\x58\x92\x58\x94\x58\x93\x00\x00\x00\x00\x58\x96\x00\x00\x58\x95\x58\x97\x00\x00\x00\x00\x00\x00\x00\x00\x58\x98\x58\x99\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x46\x7d\x51\x4f\x00\x00\x4c\x9f\x58\x9a\x49\x6c\x4e\xb0\x47\x75\x00\x00\x00\x00\x00\x00\x00\x00\x58\x9b\x00\x00\x58\x9c\x50\x77\x58\x9d\x58\x9e\x52\x75\x00\x00\x00\x00", /* 5900 */ "\x00\x00\x00\x00\x58\x9f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x47\x6f\x58\xa0\x58\xa1\x00\x00\x00\x00\x00\x00\x49\x7e\x58\xa2\x00\x00\x00\x00\x00\x00\x00\x00\x4a\xc3\x46\x94\x00\x00\x52\xc8\x54\xdd\x45\xfe\x58\xa3\x48\xc8\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4b\x8b\x00\x00\x00\x00\x58\xa5\x00\x00\x45\x5b\x00\x00\x46\x8a\x45\xab\x45\x73\x58\xa6\x58\xa7\x47\x92\x00\x00\x00\x00\x49\x41\x58\xa8\x00\x00\x00\x00\x00\x00\x00\x00\x51\x47\x58\xa9\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x58\xaa\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x52\xf2\x00\x00\x00\x00\x4d\x69\x45\xe6\x4d\xb2\x00\x00\x00\x00\x00\x00\x00\x00\x51\x8f\x4c\x53\x58\xac\x4c\x64\x00\x00\x58\xad\x52\x84\x58\xab\x00\x00\x55\x83\x58\xaf\x00\x00\x58\xae\x58\xb0\x00\x00\x58\xb1\x00\x00\x00\x00\x58\xb4\x00\x00\x58\xb3\x58\xb2\x00\x00\x46\xe5\x00\x00\x58\xb5\x4e\xca\x58\xb7\x4e\xbb\x00\x00\x58\xb6\x00\x00\x4e\xdd\x00\x00\x00\x00\x00\x00\x00\x00\x46\x99\x4d\x90\x00\x00\x00\x00\x00\x00\x58\xb8\x00\x00\x00\x00\x00\x00\x00\x00\x46\x9e\x00\x00\x00\x00", /* 5980 */ "\x00\x00\x58\xb9\x4b\xf8\x51\xa2\x55\x4d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x50\x43\x00\x00\x00\x00\x58\xba\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x53\x95\x00\x00\x00\x00\x53\xd1\x00\x00\x00\x00\x4a\x66\x00\x00\x58\xbb\x00\x00\x58\xbc\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x58\xbd\x58\xbe\x4d\x9e\x00\x00\x00\x00\x50\xec\x00\x00\x00\x00\x00\x00\x53\x7f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x58\xbf\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4b\xdc\x58\xc0\x49\xa3\x00\x00\x00\x00\x53\xaf\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x58\xc1\x00\x00\x00\x00\x4c\xc1\x00\x00\x49\x90\x00\x00\x00\x00\x00\x00\x00\x00\x54\x9c\x53\xf2\x00\x00\x4f\xf1\x48\x4f\x00\x00\x00\x00\x00\x00\x00\x00\x58\xc3\x58\xc4\x00\x00\x51\x84\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x52\x55\x55\xde\x00\x00\x58\xc2\x00\x00\x55\x8c\x4a\xb3\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x51\x79\x00\x00\x00\x00\x00\x00\x00\x00\x52\xb9\x00\x00\x00\x00\x00\x00\x4b\x42", /* 5a00 */ "\x00\x00\x4c\x65\x00\x00\x55\x7a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x58\xca\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x58\xc7\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4b\x54\x00\x00\x58\xc9\x00\x00\x58\xc8\x00\x00\x00\x00\x58\xc6\x52\x4c\x00\x00\x00\x00\x00\x00\x00\x00\x58\xc5\x00\x00\x00\x00\x00\x00\x54\x9f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x50\xb5\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x58\xce\x58\xcf\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x54\x98\x00\x00\x00\x00\x00\x00\x58\xcb\x50\xf8\x00\x00\x00\x00\x00\x00\x00\x00\x4e\xcc\x00\x00\x00\x00\x58\xcd\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4a\x77\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x58\xd0\x00\x00\x00\x00\x00\x00\x49\x6f\x00\x00\x00\x00\x00\x00\x58\xd1\x00\x00\x58\xcc\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x54\x54", /* 5a80 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4d\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x58\xd2\x48\x55\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x58\xd3\x58\xd8\x58\xd4\x00\x00\x00\x00\x4e\x89\x58\xd7\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x53\xe0\x00\x00\x58\xd6\x4e\xc3\x00\x00\x00\x00\x00\x00\x58\xd5\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x58\xdd\x58\xda\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x55\x67\x00\x00\x58\xd9\x00\x00\x00\x00\x58\xdb\x00\x00\x00\x00\x58\xdc\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x58\xde\x58\xdf\x00\x00\x00\x00\x00\x00\x00\x00", /* 5b00 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4f\x8b\x00\x00\x58\xe1\x58\xe0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x58\xe2\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4d\xe4\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x58\xe4\x00\x00\x52\xea\x00\x00\x00\x00\x00\x00\x55\xe8\x00\x00\x58\xe3\x00\x00\x00\x00\x00\x00\x58\xe5\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x58\xe6\x00\x00\x58\xe9\x00\x00\x00\x00\x58\xe7\x00\x00\x58\xe8\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x45\x64\x58\xea\x00\x00\x00\x00\x4b\xd9\x58\xeb\x58\xec\x48\xf2\x4a\x41\x00\x00\x52\x58\x58\xee\x4f\xf2\x45\xf4\x00\x00\x4f\x83\x00\x00\x00\x00\x00\x00\x4a\xec\x4e\xaf\x58\xef\x45\xbe\x00\x00\x00\x00\x58\xf0\x00\x00\x4c\x5e\x00\x00\x00\x00\x00\x00\x00\x00\x58\xf1\x59\x5b\x00\x00\x58\xf2\x00\x00\x58\xf3\x00\x00\x00\x00\x58\xf4\x00\x00\x58\xf5\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 5b80 */ "\x58\xf6\x00\x00\x00\x00\x58\xf7\x00\x00\x48\x6f\x00\x00\x46\xd5\x46\xf0\x45\xa8\x00\x00\x52\x4d\x48\xc5\x4c\x75\x00\x00\x46\xc8\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x51\x5c\x00\x00\x47\xdd\x49\xa2\x4d\x64\x45\xe7\x50\xab\x4d\x8b\x49\x4d\x00\x00\x45\xed\x00\x00\x00\x00\x4a\xde\x49\x8f\x47\xb8\x4f\x7a\x58\xf8\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x45\x92\x00\x00\x4e\xd4\x00\x00\x00\x00\x49\x68\x50\x78\x52\xef\x46\x86\x00\x00\x58\xf9\x48\x89\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x48\x82\x58\xfc\x00\x00\x4f\xe9\x58\xfa\x49\xdf\x4a\x84\x4a\x56\x58\xfb\x00\x00\x58\xfd\x00\x00\x00\x00\x45\xac\x00\x00\x00\x00\x00\x00\x59\x41\x00\x00\x4b\x81\x55\xf4\x52\x44\x00\x00\x00\x00\x00\x00\x59\x42\x00\x00\x00\x00\x47\xf8\x00\x00\x4b\x59\x59\x43\x4b\x93\x00\x00\x52\xb8\x59\x46\x00\x00\x59\x45\x59\x47\x51\xfc\x4f\xa9\x5c\x7e\x49\x87\x00\x00\x59\x48\x59\x44\x00\x00\x4c\x7a\x00\x00\x59\x49\x00\x00\x00\x00\x59\x4a\x00\x00\x55\x56\x59\x4b\x00\x00\x4b\x60\x00\x00\x46\xa0\x00\x00\x00\x00\x00\x00\x46\x56\x46\xb2", /* 5c00 */ "\x00\x00\x4d\x76\x49\xfb\x00\x00\x49\x8a\x59\x4c\x49\x59\x59\x4d\x59\x4e\x51\x89\x4c\xef\x4d\x5f\x00\x00\x59\x4f\x48\xae\x45\x5d\x00\x00\x48\x4a\x00\x00\x59\x50\x00\x00\x00\x00\x53\xc0\x00\x00\x00\x00\x00\x00\x48\x71\x00\x00\x00\x00\x00\x00\x59\x51\x00\x00\x59\x52\x00\x00\x59\x53\x00\x00\x53\xae\x00\x00\x00\x00\x00\x00\x59\x54\x00\x00\x00\x00\x00\x00\x00\x00\x68\x80\x00\x00\x00\x00\x00\x00\x4b\xee\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x59\x55\x51\x5d\x4c\x6b\x49\xce\x4a\x86\x4f\xb9\x45\xc8\x4c\xc6\x48\x8b\x59\x56\x00\x00\x00\x00\x00\x00\x48\x5e\x59\x57\x00\x00\x4d\x94\x00\x00\x4d\xa7\x45\xe9\x00\x00\x55\xba\x59\x58\x54\x43\x59\x5a\x54\xb2\x00\x00\x59\x59\x00\x00\x48\xdd\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x54\x43\x00\x00\x00\x00\x47\x6d\x00\x00\x53\xfb\x55\xc0\x55\xc0\x00\x00\x4a\x8e\x4c\xa2\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x59\x5c\x00\x00\x59\x5d\x4f\xdd\x00\x00\x45\x65\x00\x00\x00\x00\x00\x00\x00\x00\x59\x5e\x00\x00\x00\x00\x59\x5f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 5c80 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x59\x60\x00\x00\x00\x00\x00\x00\x47\x4a\x52\x5a\x00\x00\x00\x00\x59\x61\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x45\x72\x00\x00\x00\x00\x00\x00\x00\x00\x59\x67\x00\x00\x54\xb9\x45\xbf\x00\x00\x59\x63\x50\xd5\x00\x00\x00\x00\x00\x00\x00\x00\x52\x62\x00\x00\x4d\x46\x00\x00\x00\x00\x59\x65\x59\x66\x47\x48\x00\x00\x59\x68\x59\x64\x59\x6a\x00\x00\x59\x62\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x59\x69\x00\x00\x59\x6b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x59\x6c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4f\x96\x51\xb3\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4f\x9d\x59\x6d\x59\x72\x00\x00\x00\x00\x59\x71\x00\x00\x4a\xac\x48\xfe\x00\x00\x00\x00\x00\x00\x00\x00\x59\x70\x45\x6f\x00\x00\x00\x00\x00\x00\x59\x6f\x50\x72\x00\x00\x59\x6e\x00\x00\x00\x00", /* 5d00 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4c\x7f\x00\x00\x00\x00\x00\x00\x59\x73\x00\x00\x00\x00\x45\x7f\x00\x00\x00\x00\x59\x77\x00\x00\x00\x00\x51\x4d\x59\x74\x50\x74\x54\xf1\x59\x7c\x59\x7b\x59\x7a\x59\x76\x00\x00\x00\x00\x00\x00\x59\x75\x00\x00\x00\x00\x59\x79\x00\x00\x00\x00\x00\x00\x00\x00\x59\x78\x00\x00\x4f\x5f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x59\x84\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x59\x83\x59\x7d\x00\x00\x59\x82\x00\x00\x49\x8c\x00\x00\x59\x7e\x59\x7f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x59\x81\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x50\x9e\x00\x00\x00\x00\x59\x85\x59\x87\x00\x00\x4e\xd3\x00\x00\x00\x00\x00\x00\x59\x86\x00\x00\x00\x00\x59\x88\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 5d80 */ "\x00\x00\x00\x00\x59\x8b\x00\x00\x59\x8a\x00\x00\x00\x00\x59\x89\x00\x00\x00\x00\x00\x00\x47\xd1\x59\x8c\x00\x00\x00\x00\x00\x00\x59\x8f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x59\x8e\x00\x00\x00\x00\x00\x00\x00\x00\x59\x8d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x59\x90\x00\x00\x59\x91\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x59\x92\x59\x93\x59\x95\x4c\xe8\x00\x00\x59\x94\x4f\x84\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x59\x96\x00\x00\x00\x00\x49\xcf\x52\x81\x00\x00\x00\x00\x59\x97\x00\x00\x59\x99\x59\x98\x00\x00\x00\x00\x51\xdf\x00\x00\x00\x00\x00\x00\x00\x00\x59\x9a\x00\x00\x45\x67\x47\x41\x00\x00\x00\x00\x4d\x47\x00\x00\x4c\x67\x00\x00\x45\x6a\x48\x5b\x4c\xa3\x4a\x52\x00\x00\x00\x00\x59\x9b\x00\x00\x00\x00\x49\x8b\x00\x00\x00\x00\x47\xad\x4a\x4b\x4a\xe6\x4e\x7d\x59\x9c\x00\x00\x53\xcb\x00\x00\x00\x00\x00\x00\x48\x93\x00\x00\x4e\x46\x4a\x7d\x00\x00", /* 5e00 */ "\x00\x00\x00\x00\x45\x53\x47\x6b\x00\x00\x00\x00\x4f\x75\x00\x00\x00\x00\x00\x00\x00\x00\x59\x9d\x4a\xb5\x00\x00\x00\x00\x00\x00\x00\x00\x59\xa0\x00\x00\x00\x00\x00\x00\x00\x00\x51\xc7\x00\x00\x00\x00\x59\x9f\x59\x9e\x59\xa1\x00\x00\x48\x9c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x52\xaf\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4a\x44\x00\x00\x4b\x53\x00\x00\x49\x60\x49\x82\x00\x00\x00\x00\x4d\xc5\x00\x00\x00\x00\x59\xa2\x54\xbe\x46\xef\x00\x00\x00\x00\x00\x00\x00\x00\x4c\x85\x00\x00\x00\x00\x59\xa5\x00\x00\x00\x00\x59\xa4\x59\xa3\x4a\x5e\x00\x00\x59\xa6\x00\x00\x00\x00\x00\x00\x00\x00\x49\x6b\x00\x00\x59\xa7\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x59\xa9\x4c\xca\x00\x00\x59\xa8\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x54\x83\x00\x00\x48\xde\x59\xaa\x4e\x7f\x59\xab\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4a\x6f\x45\x8d\x45\x60\x59\xac\x59\xad\x00\x00\x45\xa9\x48\xda\x59\xae\x50\xa2\x4d\xaf\x52\x5f\x4b\x57\x59\xaf", /* 5e80 */ "\x00\x00\x4b\x92\x00\x00\x45\xb7\x48\x50\x00\x00\x00\x00\x55\x8d\x00\x00\x00\x00\x4a\xed\x00\x00\x00\x00\x00\x00\x00\x00\x4d\x4f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4b\x64\x55\x4f\x48\x54\x00\x00\x00\x00\x51\x5a\x00\x00\x45\x51\x00\x00\x00\x00\x00\x00\x59\xb0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x45\xde\x48\xb1\x00\x00\x00\x00\x00\x00\x45\xf8\x00\x00\x48\xe0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4e\xeb\x50\xc1\x46\x9a\x4c\x5d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x59\xb1\x59\xb2\x4b\xc7\x00\x00\x00\x00\x00\x00\x00\x00\x59\xb3\x4e\xdb\x4e\xa7\x00\x00\x00\x00\x00\x00\x00\x00\x59\xb5\x59\xb4\x00\x00\x00\x00\x54\xad\x00\x00\x00\x00\x53\x6c\x00\x00\x00\x00\x00\x00\x59\xb7\x59\xb8\x00\x00\x59\xb6\x00\x00\x55\xaf\x55\x62\x59\xba\x59\xb9\x50\xe9\x00\x00\x00\x00\x00\x00\x00\x00\x59\xbb\x59\xbc\x00\x00\x00\x00\x59\xbd\x00\x00\x00\x00\x00\x00\x59\xbe\x59\xbf\x00\x00\x59\xc0\x59\xc1\x00\x00\x47\xd0\x50\x5b\x52\xd6\x00\x00\x46\x66\x4b\xaf\x55\x64\x00\x00\x54\x4b\x51\xd9", /* 5f00 */ "\x00\x00\x4b\x47\x00\x00\x59\xc2\x54\xbf\x00\x00\x00\x00\x00\x00\x00\x00\x59\xc3\x50\xcd\x59\xc4\x56\x41\x56\x51\x00\x00\x46\x8f\x50\xe1\x59\xc5\x00\x00\x4b\x63\x51\xe5\x46\xda\x59\xc6\x54\xac\x45\xd3\x00\x00\x00\x00\x55\x97\x00\x00\x00\x00\x00\x00\x4c\x9b\x00\x00\x59\xc7\x00\x00\x00\x00\x00\x00\x47\xe6\x4e\x42\x53\x6b\x00\x00\x59\xc8\x00\x00\x00\x00\x00\x00\x59\xc9\x00\x00\x59\xca\x00\x00\x4b\x6e\x00\x00\x00\x00\x59\xcb\x48\xba\x00\x00\x46\xd2\x59\xcc\x00\x00\x00\x00\x00\x00\x52\xe0\x00\x00\x4a\xd4\x00\x00\x00\x00\x59\xcd\x00\x00\x00\x00\x00\x00\x53\xc7\x00\x00\x00\x00\x59\xce\x00\x00\x53\x85\x00\x00\x59\xcf\x00\x00\x59\xd0\x00\x00\x00\x00\x59\xd1\x00\x00\x46\x5f\x00\x00\x00\x00\x59\xd2\x59\xd3\x00\x00\x59\xd4\x00\x00\x00\x00\x59\xd5\x59\xd6\x00\x00\x00\x00\x00\x00\x59\xd7\x46\x90\x00\x00\x00\x00\x00\x00\x45\xe1\x59\xd8\x00\x00\x4d\xcd\x51\x59\x4e\x86\x4e\x88\x52\x9c\x00\x00\x00\x00\x49\x64\x49\x5e\x00\x00\x59\xd9\x00\x00\x00\x00\x00\x00\x59\xda\x00\x00\x49\x5d\x00\x00\x00\x00\x47\x72\x00\x00\x00\x00\x59\xdd", /* 5f80 */ "\x4c\xea\x4a\x61\x59\xdc\x59\xdb\x4e\x60\x48\xa3\x00\x00\x59\xe0\x59\xdf\x00\x00\x59\xde\x49\x91\x45\xe5\x00\x00\x00\x00\x00\x00\x50\xb3\x59\xe1\x4c\x6c\x48\xfb\x00\x00\x00\x00\x00\x00\x47\xe8\x59\xe4\x59\xe2\x00\x00\x00\x00\x00\x00\x00\x00\x59\xe3\x00\x00\x59\xe5\x46\x98\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x59\xe6\x4a\x70\x4e\xf5\x00\x00\x00\x00\x59\xe7\x4b\x5d\x00\x00\x00\x00\x00\x00\x00\x00\x46\x54\x4c\x74\x00\x00\x00\x00\x59\xe8\x00\x00\x48\xf8\x00\x00\x00\x00\x59\xe9\x55\xe0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x46\xe7\x00\x00\x47\xca\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x50\x97\x4b\xd7\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x59\xea\x46\x61\x4c\x45\x4e\xa3\x00\x00\x00\x00\x48\x95\x59\xf0\x59\xf1\x00\x00\x46\x4f\x00\x00\x00\x00\x00\x00\x59\xec\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4c\x60\x00\x00\x00\x00\x00\x00\x00\x00\x59\xef\x59\xee\x00\x00\x00\x00\x00\x00\x4a\xae\x00\x00\x00\x00\x59\xed\x00\x00\x00\x00\x59\xeb\x00\x00\x50\x56\x00\x00\x59\xf2", /* 6000 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x59\xf7\x59\xfd\x59\xf5\x00\x00\x4c\xd6\x00\x00\x00\x00\x59\xfa\x4e\xf0\x00\x00\x00\x00\x59\xf4\x00\x00\x59\xf9\x50\x9f\x46\xad\x00\x00\x00\x00\x50\x81\x59\xf3\x00\x00\x00\x00\x00\x00\x47\xcc\x59\xfc\x46\x6e\x54\xde\x59\xf6\x4e\x71\x59\xfb\x00\x00\x00\x00\x00\x00\x55\x42\x00\x00\x59\xf8\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x59\xfe\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5a\x42\x52\x56\x5a\x4c\x00\x00\x00\x00\x5a\x49\x00\x00\x00\x00\x00\x00\x5a\x48\x4b\xca\x00\x00\x5a\x4a\x00\x00\x00\x00\x4b\xd5\x00\x00\x47\xc7\x00\x00\x00\x00\x52\x98\x00\x00\x00\x00\x00\x00\x5a\x50\x5a\x41\x00\x00\x00\x00\x5a\x44\x00\x00\x5a\x47\x5a\x43\x00\x00\x55\x94\x5a\x4b\x5a\x4d\x4e\xce\x00\x00\x00\x00\x53\xb8\x4c\x81\x5a\x45\x5a\x4f\x5a\x4e\x49\x4e\x00\x00\x4b\xb0\x53\x84\x00\x00\x00\x00\x00\x00\x00\x00\x46\x43\x00\x00\x5a\x46\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 6080 */ "\x00\x00\x5a\x52\x00\x00\x5a\x53\x5a\x55\x5a\x51\x00\x00\x00\x00\x00\x00\x54\x69\x5a\x57\x5a\x5c\x4d\xe3\x55\x44\x00\x00\x00\x00\x00\x00\x00\x00\x5a\x5a\x00\x00\x50\x91\x00\x00\x5a\x58\x5a\x59\x00\x00\x00\x00\x5a\x54\x5a\x56\x00\x00\x00\x00\x00\x00\x4a\xb1\x4d\xd8\x00\x00\x00\x00\x4d\xeb\x00\x00\x00\x00\x48\x73\x5a\x5b\x00\x00\x4b\xcd\x49\x65\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4c\x9d\x52\x76\x53\xa3\x5a\x64\x55\x54\x00\x00\x5a\x5e\x00\x00\x00\x00\x00\x00\x51\x45\x5a\x62\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x48\x5f\x5a\x63\x4e\x65\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4e\x78\x00\x00\x5a\x61\x00\x00\x5a\x65\x00\x00\x00\x00\x5a\x66\x00\x00\x54\x9d\x00\x00\x4e\xd7\x00\x00\x5a\x5f\x4f\xe0\x5a\x60\x5a\x5d\x00\x00\x4b\x68\x00\x00\x00\x00\x00\x00\x55\x4a\x50\x6e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x54\xb8\x5a\x73\x5a\x68\x48\xb3\x5a\x6e\x00\x00\x5a\x6b\x5a\x6c\x00\x00\x54\x72\x5a\x6f\x5a\x72\x00\x00\x00\x00\x00\x00\x00\x00", /* 6100 */ "\x5a\x6d\x52\x82\x00\x00\x5a\x70\x00\x00\x00\x00\x5a\x6a\x00\x00\x53\xc8\x50\x98\x00\x00\x00\x00\x00\x00\x5a\x74\x5a\x75\x47\x63\x00\x00\x5a\x76\x00\x00\x00\x00\x00\x00\x5a\x69\x00\x00\x00\x00\x00\x00\x00\x00\x52\xb2\x45\xc6\x00\x00\x00\x00\x00\x00\x47\xf7\x5a\x67\x5a\x71\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5a\x7b\x5a\x7a\x00\x00\x00\x00\x00\x00\x5a\x80\x00\x00\x00\x00\x00\x00\x5a\x7e\x00\x00\x00\x00\x00\x00\x5a\x81\x00\x00\x00\x00\x5a\x79\x00\x00\x00\x00\x00\x00\x00\x00\x5a\x7f\x5a\x84\x5a\x7c\x51\xe3\x00\x00\x00\x00\x5a\x85\x00\x00\x5a\x86\x00\x00\x00\x00\x5a\x77\x4c\xbe\x00\x00\x5a\x7d\x48\xfd\x53\x8e\x5a\x78\x4a\x76\x00\x00\x00\x00\x00\x00\x00\x00\x5a\x92\x00\x00\x52\xe3\x00\x00\x00\x00\x5a\x8a\x5a\x8b\x5a\x8c\x00\x00\x00\x00\x5a\x83\x00\x00\x5a\x91\x00\x00\x00\x00\x4d\xdb\x4d\xd3\x00\x00\x5a\x82\x00\x00\x4e\xb6\x52\x8a\x00\x00\x00\x00\x5a\x8d\x00\x00\x00\x00\x4c\x49\x5a\x8f\x4f\xad\x5a\x90\x00\x00\x5a\x87\x5a\x8e\x5a\x93\x48\xa8\x5a\x89\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x53\xf4\x00\x00", /* 6180 */ "\x00\x00\x00\x00\x50\x7c\x00\x00\x00\x00\x00\x00\x00\x00\x5a\x88\x00\x00\x00\x00\x5a\x99\x00\x00\x00\x00\x00\x00\x4f\x4a\x00\x00\x55\x5b\x5a\x9a\x00\x00\x00\x00\x5a\x98\x00\x00\x5a\x96\x00\x00\x5a\x94\x5a\x95\x55\xcf\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4f\xfc\x00\x00\x00\x00\x53\xc2\x00\x00\x51\x75\x00\x00\x5a\x9b\x5a\x97\x00\x00\x5a\x9c\x00\x00\x00\x00\x00\x00\x47\xbe\x00\x00\x00\x00\x00\x00\x4e\x6c\x00\x00\x00\x00\x00\x00\x5a\xa3\x00\x00\x00\x00\x00\x00\x51\xa5\x00\x00\x00\x00\x00\x00\x00\x00\x5a\xa1\x00\x00\x00\x00\x5a\xa2\x4e\xa4\x5a\xa0\x5a\x9f\x5a\x9e\x5a\xa4\x5a\x9d\x5a\xa6\x00\x00\x00\x00\x4e\xf2\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5a\xa8\x00\x00\x00\x00\x5a\xa7\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x51\x53\x00\x00\x5a\xa9\x00\x00\x5a\xab\x5a\xaa\x4d\xc6\x00\x00\x5a\xad\x00\x00\x5a\xaf\x5a\xac\x5a\xb0\x5a\xae", /* 6200 */ "\x5a\xb1\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5a\xb2\x5a\xb3\x51\x61\x00\x00\x54\x60\x5a\xb4\x51\x7f\x00\x00\x45\xba\x49\xde\x4d\xa0\x5a\xb5\x5a\xb6\x00\x00\x4d\x7f\x00\x00\x00\x00\x00\x00\x55\x95\x5a\xb7\x00\x00\x64\x6e\x5a\xb8\x54\xd9\x00\x00\x5a\xb9\x00\x00\x00\x00\x00\x00\x00\x00\x47\x64\x00\x00\x00\x00\x00\x00\x5a\xba\x00\x00\x00\x00\x00\x00\x5a\xbb\x4f\x92\x5a\xbc\x00\x00\x5a\xbd\x5a\xbe\x50\x92\x00\x00\x00\x00\x00\x00\x45\xcf\x00\x00\x00\x00\x4c\x44\x00\x00\x00\x00\x00\x00\x47\xdc\x45\x8c\x5a\xbf\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4d\xca\x65\x5d\x50\xad\x00\x00\x45\xcb\x00\x00\x49\xf1\x5a\xc0\x00\x00\x00\x00\x00\x00\x00\x00\x47\xea\x00\x00\x49\x81\x00\x00\x00\x00\x55\xd5\x00\x00\x00\x00\x5a\xc3\x00\x00\x00\x00\x5a\xc1\x00\x00\x5a\xc4\x00\x00\x00\x00\x5a\xc2\x00\x00\x00\x00\x00\x00\x00\x00\x5a\xc5\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x54\xb7\x00\x00\x00\x00\x4c\x69\x00\x00\x00\x00\x00\x00\x00\x00\x4d\x7a\x00\x00\x00\x00\x4c\x76\x00\x00\x00\x00\x5a\xc6\x00\x00\x5a\xca\x4c\x48", /* 6280 */ "\x48\xf7\x00\x00\x5a\xc7\x5a\xcd\x4e\xc0\x00\x00\x00\x00\x00\x00\x00\x00\x5a\xc8\x4e\xe3\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4d\x66\x5a\xc9\x5a\xcb\x5a\xce\x47\x51\x5a\xcc\x4a\x67\x49\x8d\x00\x00\x00\x00\x5a\xdc\x4a\x85\x00\x00\x4e\x7e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5a\xda\x00\x00\x00\x00\x00\x00\x00\x00\x4f\xa6\x5a\xd3\x00\x00\x00\x00\x00\x00\x00\x00\x4c\x86\x00\x00\x00\x00\x00\x00\x4b\x90\x00\x00\x00\x00\x00\x00\x51\xe0\x00\x00\x5a\xd1\x49\xe1\x4d\x53\x00\x00\x00\x00\x00\x00\x00\x00\x5a\xd9\x00\x00\x00\x00\x4a\xa1\x5a\xd4\x5a\xdb\x5a\xd5\x5a\xdd\x5a\xd8\x00\x00\x53\x45\x4f\xba\x00\x00\x5a\xd2\x53\xa2\x5a\xd0\x4f\x61\x4b\xdb\x5a\xd7\x00\x00\x00\x00\x5a\xcf\x50\x45\x52\x5c\x00\x00\x4b\xfd\x5a\xd6\x4e\xe2\x00\x00\x00\x00\x4d\x77\x48\xe5\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4f\xc5\x4e\xe5\x5a\xdf\x5a\xe4\x00\x00\x5a\xe0\x00\x00\x50\x8d\x00\x00\x5a\xe5\x4f\x9e\x55\xb5\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4d\xd7\x5a\xe6", /* 6300 */ "\x00\x00\x46\xd8\x5a\xe2\x00\x00\x00\x00\x00\x00\x00\x00\x47\xb6\x5a\xe3\x54\x89\x00\x00\x00\x00\x5a\xde\x00\x00\x00\x00\x00\x00\x00\x00\x4f\xdb\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4b\x82\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x55\xb1\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5a\xe1\x4f\x81\x00\x00\x00\x00\x54\x8f\x00\x00\x00\x00\x00\x00\x48\xf6\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x53\x87\x00\x00\x00\x00\x52\xa8\x5a\xe9\x55\x55\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x53\xa0\x00\x00\x00\x00\x55\x7d\x5a\xe8\x00\x00\x5a\xea\x5a\xe7\x00\x00\x00\x00\x00\x00\x00\x00\x4c\x41\x00\x00\x55\x46\x00\x00\x00\x00\x00\x00\x00\x00\x4d\xdd\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x52\x85\x4b\xb3\x5a\xf5\x00\x00\x5a\xf4\x00\x00\x00\x00\x4e\xd6\x00\x00\x00\x00\x00\x00\x54\x93\x00\x00\x00\x00\x00\x00\x5a\xef\x4d\x8f\x00\x00\x00\x00\x4f\xc0\x54\xc0\x00\x00\x00\x00\x00\x00\x00\x00", /* 6380 */ "\x5a\xed\x00\x00\x00\x00\x4d\xc3\x00\x00\x00\x00\x00\x00\x00\x00\x4c\x61\x5a\xf2\x00\x00\x00\x00\x4e\xec\x00\x00\x5a\xec\x5a\xf1\x00\x00\x00\x00\x4c\xfa\x00\x00\x00\x00\x00\x00\x5a\xeb\x00\x00\x4d\x44\x00\x00\x00\x00\x4a\xe3\x00\x00\x00\x00\x00\x00\x5a\xf3\x55\xe6\x4b\x4f\x4b\x7f\x5a\xf0\x00\x00\x47\xa8\x00\x00\x4c\xac\x48\xd5\x55\xd0\x4a\x60\x5a\xee\x55\x41\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4d\xc1\x00\x00\x54\xcd\x5a\xf6\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x54\xa3\x00\x00\x00\x00\x5a\xf7\x00\x00\x5a\xf9\x00\x00\x00\x00\x4e\xfd\x5b\x42\x00\x00\x5a\xfa\x00\x00\x00\x00\x5a\xfd\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4b\xcf\x49\xb9\x00\x00\x5a\xfe\x00\x00\x00\x00\x00\x00\x4c\xf2\x00\x00\x00\x00\x00\x00\x4c\x46\x49\xaa\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4d\x60\x00\x00\x5a\xfc\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5a\xf8\x00\x00\x00\x00\x00\x00\x00\x00\x4b\xf2\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4a\xd5\x5a\xfb\x5b\x41\x00\x00\x00\x00\x00\x00\x4f\x7e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 6400 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5b\x44\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4b\xd8\x00\x00\x5b\x4b\x00\x00\x00\x00\x00\x00\x5b\x45\x54\xa3\x00\x00\x5b\x4c\x5b\x49\x00\x00\x00\x00\x00\x00\x00\x00\x5b\x48\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5b\x46\x00\x00\x5b\x4a\x00\x00\x00\x00\x00\x00\x4d\xc8\x52\x8f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5b\x43\x00\x00\x5b\x47\x00\x00\x00\x00\x00\x00\x4e\x49\x00\x00\x00\x00\x00\x00\x50\xa3\x00\x00\x00\x00\x00\x00\x4e\x8c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5b\x4d\x00\x00\x00\x00\x54\xcd\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4d\xcb\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5b\x50\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5b\x4e\x00\x00\x48\xd1\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5b\x4f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5b\x51\x00\x00\x55\xf5\x00\x00\x51\xef\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 6480 */ "\x00\x00\x00\x00\x00\x00\x4a\x74\x00\x00\x00\x00\x00\x00\x00\x00\x5b\x5a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x53\xde\x5b\x57\x00\x00\x5b\x55\x00\x00\x00\x00\x00\x00\x00\x00\x53\x48\x00\x00\x00\x00\x5b\x53\x55\xdb\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4e\x7a\x5b\x58\x00\x00\x00\x00\x00\x00\x5b\x59\x00\x00\x51\xe1\x00\x00\x4e\x62\x4c\x77\x00\x00\x53\x72\x00\x00\x4e\xc7\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5b\x52\x00\x00\x5b\x56\x5b\x5b\x00\x00\x00\x00\x00\x00\x00\x00\x51\x4e\x5b\x62\x00\x00\x00\x00\x5b\x5e\x00\x00\x5b\x5f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x49\x9b\x5b\x54\x00\x00\x00\x00\x00\x00\x5b\x5d\x00\x00\x5b\x60\x00\x00\x00\x00\x00\x00\x5b\x61\x00\x00\x5b\x5c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5b\x65\x5b\x66\x55\x43\x5b\x67\x00\x00\x00\x00\x4f\xd6\x5b\x64\x00\x00\x00\x00\x00\x00\x00\x00\x4f\xcd\x00\x00\x00\x00\x5b\x68\x00\x00\x5b\x63\x5b\x6b\x00\x00\x5b\x69\x00\x00\x5b\x6a\x00\x00\x00\x00\x00\x00\x5b\x6c\x00\x00\x00\x00\x5b\x6e\x55\xf6\x00\x00", /* 6500 */ "\x5b\x6d\x00\x00\x00\x00\x00\x00\x00\x00\x5b\x72\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5b\x6f\x00\x00\x00\x00\x00\x00\x5b\x70\x5b\x71\x00\x00\x00\x00\x00\x00\x00\x00\x5b\x72\x5b\x74\x5b\x73\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x52\x7f\x5b\x75\x5b\x76\x00\x00\x00\x00\x47\x7b\x00\x00\x00\x00\x00\x00\x00\x00\x5b\x77\x5b\x78\x5b\x7a\x5b\x79\x5b\x7b\x48\x8f\x00\x00\x4b\xc5\x00\x00\x00\x00\x48\xaf\x45\xc7\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4a\xf7\x00\x00\x00\x00\x5b\x7d\x00\x00\x00\x00\x00\x00\x00\x00\x5b\x80\x5b\x7e\x46\x47\x00\x00\x4c\x5c\x00\x00\x00\x00\x00\x00\x5b\x82\x5b\x7f\x4b\x8a\x5b\x81\x47\xa5\x00\x00\x00\x00\x00\x00\x5b\x83\x51\xb1\x00\x00\x00\x00\x00\x00\x4f\xcf\x4a\xc9\x00\x00\x00\x00\x49\xf2\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x47\xb0\x00\x00\x00\x00\x00\x00\x46\xcc\x00\x00\x5b\x84\x00\x00\x47\x7c\x4b\xf3\x00\x00\x49\x51\x5b\x85\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 6580 */ "\x00\x00\x00\x00\x5b\x86\x5b\x87\x00\x00\x00\x00\x00\x00\x45\xca\x58\xed\x46\x8e\x00\x00\x00\x00\x51\x9d\x00\x00\x47\xdb\x00\x00\x4b\x80\x52\xe4\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4e\x83\x00\x00\x46\x4e\x00\x00\x5b\x89\x4b\xd1\x00\x00\x00\x00\x5b\x8a\x00\x00\x55\x81\x00\x00\x00\x00\x54\xcf\x51\x41\x00\x00\x51\xc2\x00\x00\x00\x00\x00\x00\x5b\x8b\x4e\xfc\x49\x89\x00\x00\x4e\xa5\x45\x87\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5b\x8c\x00\x00\x45\xcd\x00\x00\x00\x00\x4d\xa4\x48\x88\x00\x00\x00\x00\x00\x00\x5b\x8f\x00\x00\x5b\x8d\x5b\x90\x4a\xcf\x5b\x8e\x00\x00\x00\x00\x00\x00\x00\x00\x4d\x7b\x5b\x91\x00\x00\x00\x00\x4a\xdc\x00\x00\x00\x00\x5b\x92\x00\x00\x00\x00\x00\x00\x00\x00\x4d\xab\x00\x00\x5b\x93\x00\x00\x51\x65\x00\x00\x00\x00\x00\x00\x00\x00\x5b\x95\x5b\x94\x4b\x77\x00\x00\x00\x00\x45\x62\x4d\x9d\x4c\x7b\x4d\x6a\x46\xe9\x00\x00\x00\x00\x4d\x67\x47\xec\x00\x00\x00\x00\x00\x00\x5b\x96\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4f\xa3\x5b\x9c\x00\x00\x00\x00\x00\x00\x00\x00", /* 6600 */ "\x5b\x97\x00\x00\x5b\x99\x5b\x9b\x00\x00\x00\x00\x4f\xe7\x46\xfe\x00\x00\x5b\x9d\x52\x8e\x00\x00\x46\xd1\x00\x00\x45\xa6\x54\xe8\x00\x00\x00\x00\x00\x00\x47\xe9\x4c\x59\x5b\x98\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5b\xa3\x00\x00\x5b\xa1\x47\xa9\x47\xac\x00\x00\x00\x00\x00\x00\x5b\xa4\x46\x62\x00\x00\x55\x9d\x48\xe8\x00\x00\x00\x00\x00\x00\x00\x00\x45\xb3\x5b\xa0\x4b\xbb\x00\x00\x52\xeb\x00\x00\x00\x00\x5b\xa2\x5b\x9f\x51\x93\x00\x00\x00\x00\x00\x00\x00\x00\x4f\x9f\x4c\x98\x00\x00\x00\x00\x5b\x9e\x00\x00\x52\x51\x46\x51\x48\xb0\x5b\xa5\x00\x00\x00\x00\x00\x00\x00\x00\x5b\xa6\x00\x00\x4b\xb2\x00\x00\x00\x00\x00\x00\x51\xea\x00\x00\x00\x00\x54\xc3\x00\x00\x00\x00\x00\x00\x00\x00\x5b\xa8\x00\x00\x5b\xab\x00\x00\x00\x00\x00\x00\x5b\xad\x5b\xa9\x4f\xce\x00\x00\x00\x00\x5b\xac\x00\x00\x5b\xaa\x5b\xa7\x55\x6d\x50\xa0\x51\xb2\x4c\xb6\x00\x00\x00\x00\x00\x00\x00\x00\x49\xf8\x49\x93\x5b\xb0\x00\x00\x00\x00\x5b\xaf\x47\x95\x00\x00\x4a\xf8\x00\x00\x00\x00\x00\x00\x46\xa8\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 6680 */ "\x00\x00\x4c\x83\x00\x00\x5b\xb1\x5b\xb3\x00\x00\x00\x00\x4f\x46\x5b\xb2\x4e\xd1\x00\x00\x00\x00\x00\x00\x00\x00\x4f\xab\x00\x00\x00\x00\x4f\xbe\x00\x00\x00\x00\x00\x00\x00\x00\x4d\x6c\x4b\xe2\x5b\xb5\x5b\xb4\x00\x00\x00\x00\x00\x00\x5b\xb7\x00\x00\x00\x00\x5b\xb6\x00\x00\x4c\xc7\x00\x00\x00\x00\x00\x00\x50\xcc\x00\x00\x00\x00\x00\x00\x00\x00\x50\x93\x00\x00\x00\x00\x4a\xfe\x00\x00\x00\x00\x00\x00\x5b\xb8\x00\x00\x4c\xb2\x00\x00\x00\x00\x00\x00\x5b\xbf\x52\x43\x00\x00\x00\x00\x5b\xbe\x00\x00\x5b\xbd\x5b\xbb\x00\x00\x5b\xba\x00\x00\x00\x00\x5b\xb9\x00\x00\x00\x00\x4c\x56\x00\x00\x5b\xbc\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5b\xc0\x00\x00\x00\x00\x51\x52\x5b\xc1\x00\x00\x4b\xfe\x52\xa6\x00\x00\x00\x00\x51\xcc\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5b\xc2\x00\x00\x00\x00\x5b\xc3\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5b\xc4\x00\x00\x49\xb6\x4e\xbc\x4a\x6d\x5b\xc5\x00\x00\x5b\xc6\x47\x9d\x4e\xd2\x5b\xc7\x53\x97\x57\x8d\x49\x5f\x51\x66\x4b\xc3", /* 6700 */ "\x46\xf5\x00\x00\x00\x00\x56\xac\x00\x00\x00\x00\x00\x00\x00\x00\x45\x61\x46\x85\x00\x00\x4b\xc4\x00\x00\x47\xd4\x5b\xc8\x54\xfd\x00\x00\x00\x00\x00\x00\x00\x00\x4f\xa4\x55\xf3\x5b\xca\x48\x6e\x00\x00\x00\x00\x00\x00\x47\xbb\x00\x00\x47\x5c\x5b\xcb\x46\x8b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5b\xcd\x5b\xce\x45\x6c\x00\x00\x49\xc6\x47\x46\x45\x66\x48\xf9\x5b\xd0\x00\x00\x00\x00\x4d\x42\x00\x00\x00\x00\x4e\xa2\x00\x00\x5b\xd2\x5b\xd3\x5b\xd4\x00\x00\x4d\x96\x00\x00\x00\x00\x50\xf0\x00\x00\x5b\xd1\x00\x00\x53\x4f\x00\x00\x00\x00\x00\x00\x00\x00\x5b\xd5\x00\x00\x00\x00\x46\x68\x00\x00\x00\x00\x00\x00\x00\x00\x4e\x51\x50\xd0\x46\xbc\x45\x56\x00\x00\x54\xc1\x00\x00\x00\x00\x50\xf4\x00\x00\x00\x00\x5b\xd7\x00\x00\x00\x00\x52\x5d\x00\x00\x5b\xd6\x4b\x4b\x54\x80\x47\x5e\x51\xa6\x52\x91\x5b\xd9\x46\x76\x5b\xd8\x00\x00\x00\x00\x00\x00\x5b\xde\x00\x00\x00\x00\x50\x8b\x00\x00\x4c\x63\x5b\xdc\x45\x57\x5b\x9a\x5b\xe0\x00\x00\x4a\xa6\x00\x00\x52\x80\x00\x00\x00\x00\x00\x00\x00\x00\x54\xdf\x00\x00\x45\x78\x46\xb4", /* 6780 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5b\xdb\x00\x00\x52\x5e\x00\x00\x5b\xda\x00\x00\x5b\xdf\x54\xf2\x00\x00\x00\x00\x00\x00\x4a\xe2\x00\x00\x00\x00\x00\x00\x00\x00\x4f\x78\x00\x00\x45\xa2\x00\x00\x00\x00\x49\xd9\x00\x00\x47\xb9\x46\x72\x00\x00\x00\x00\x4f\xd2\x5b\xe2\x52\xd0\x00\x00\x00\x00\x00\x00\x5b\xe1\x00\x00\x00\x00\x5b\xdd\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x50\x61\x00\x00\x00\x00\x00\x00\x54\xc9\x5b\xe6\x00\x00\x4e\xe8\x5b\xe4\x5b\xe9\x5b\xf2\x00\x00\x5b\xe3\x00\x00\x00\x00\x00\x00\x00\x00\x5b\xf0\x55\xcd\x00\x00\x00\x00\x4a\x7f\x00\x00\x5b\xf4\x00\x00\x00\x00\x00\x00\x52\xd9\x00\x00\x00\x00\x00\x00\x5b\xf1\x49\x80\x50\x4a\x4e\xc1\x00\x00\x48\x9b\x4d\xea\x00\x00\x00\x00\x00\x00\x4f\xd8\x00\x00\x4e\xe1\x00\x00\x00\x00\x5b\xed\x54\xf3\x00\x00\x00\x00\x00\x00\x5b\xee\x00\x00\x5b\xeb\x00\x00\x00\x00\x5b\xea\x00\x00\x5b\xe8\x00\x00\x00\x00\x5b\xe7\x00\x00\x5b\xef\x5b\xe5\x00\x00\x4b\xea\x00\x00\x46\xea\x47\xa7\x51\xf1\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x47\x73\x00\x00\x00\x00\x50\x54\x4a\xc1", /* 6800 */ "\x00\x00\x5b\xf3\x52\xd1\x47\xd3\x45\xfa\x51\xf1\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x50\xe3\x00\x00\x00\x00\x4d\xcc\x47\x9b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5b\xf5\x00\x00\x00\x00\x48\xbf\x52\x42\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x52\xde\x48\x56\x52\xe2\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5b\xfa\x00\x00\x55\xda\x00\x00\x00\x00\x00\x00\x4b\x9e\x46\x67\x00\x00\x00\x00\x47\xde\x4d\xe0\x00\x00\x00\x00\x5b\xf8\x50\xd6\x49\xab\x4a\xda\x5b\xf9\x00\x00\x5b\xf6\x00\x00\x48\xf1\x00\x00\x00\x00\x00\x00\x00\x00\x5b\xf7\x5b\xfb\x00\x00\x49\xc0\x48\x79\x5b\xec\x53\x6d\x53\x4b\x00\x00\x00\x00\x00\x00\x00\x00\x5b\xfd\x00\x00\x00\x00\x47\x71\x4d\x88\x00\x00\x51\xf3\x00\x00\x00\x00\x00\x00\x5b\xfc\x00\x00\x00\x00\x00\x00\x50\x46\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5c\x4b\x00\x00\x4e\x77\x5c\x41\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5c\x44\x5c\x42", /* 6880 */ "\x00\x00\x4e\x44\x00\x00\x5c\x48\x00\x00\x47\x98\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5b\xfe\x5b\xfe\x5c\x45\x00\x00\x00\x00\x00\x00\x50\xda\x5c\x47\x00\x00\x00\x00\x52\xcc\x00\x00\x00\x00\x00\x00\x53\xbc\x00\x00\x4e\x92\x00\x00\x5c\x43\x52\xc6\x00\x00\x50\xac\x00\x00\x00\x00\x00\x00\x58\xa4\x52\xd3\x48\x58\x00\x00\x00\x00\x00\x00\x00\x00\x5c\x46\x00\x00\x51\xe4\x46\x82\x53\x59\x00\x00\x53\x61\x00\x00\x5c\x4c\x49\xad\x00\x00\x00\x00\x5c\x4a\x5c\x4d\x00\x00\x5c\x49\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4e\xb1\x00\x00\x5c\x60\x00\x00\x53\x86\x55\xca\x5c\x50\x4e\xf1\x00\x00\x5c\x56\x00\x00\x5c\x5f\x00\x00\x00\x00\x4b\x5a\x00\x00\x5c\x57\x5c\x59\x00\x00\x54\xc2\x5c\x52\x00\x00\x4b\xef\x00\x00\x00\x00\x00\x00\x00\x00\x4e\xa9\x5c\x5e\x5c\x54\x00\x00\x5c\x5d\x00\x00\x00\x00\x00\x00\x5c\x58\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x45\x9d\x5c\x5b\x00\x00\x00\x00\x53\x75\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x54\x94\x55\xb6\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 6900 */ "\x54\x68\x5c\x4f\x00\x00\x00\x00\x5c\x5c\x4f\xf7\x00\x00\x00\x00\x5c\x51\x00\x00\x00\x00\x4d\xfd\x5c\x55\x47\xc5\x4b\xa0\x5c\x4e\x00\x00\x00\x00\x5c\x5a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4f\xed\x53\x70\x51\x63\x48\x6d\x00\x00\x00\x00\x00\x00\x00\x00\x5c\x63\x5c\x61\x5c\x64\x00\x00\x53\xfa\x5c\x53\x00\x00\x5c\x65\x00\x00\x5c\x62\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5c\x71\x00\x00\x00\x00\x00\x00\x54\xa7\x00\x00\x5c\x69\x00\x00\x00\x00\x52\xed\x00\x00\x00\x00\x00\x00\x5c\x6f\x00\x00\x4c\xba\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x51\xd7\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x52\x95\x5c\x6b\x55\xc5\x00\x00\x00\x00\x00\x00\x5c\x70\x53\x4c\x00\x00\x54\xe2\x5c\x73\x5c\x72\x00\x00\x4a\xdf\x52\x7c\x4d\x93\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5c\x6e\x00\x00\x5c\x6c\x54\xa2\x00\x00\x45\x6b\x53\xef\x4f\xae\x00\x00\x00\x00\x00\x00\x52\xb3\x5c\x6d\x49\xb7\x00\x00\x5c\x68\x5c\x6a\x5c\x67\x00\x00\x00\x00\x52\xba\x47\x61\x5c\x74\x00\x00", /* 6980 */ "\x00\x00\x5c\x75\x4c\x42\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4b\x52\x00\x00\x00\x00\x00\x00\x49\xeb\x00\x00\x00\x00\x54\x76\x00\x00\x00\x00\x55\xc7\x5c\x86\x00\x00\x00\x00\x5c\x79\x00\x00\x00\x00\x4d\x7e\x5c\x85\x00\x00\x00\x00\x00\x00\x5c\x84\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x53\x8d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x51\x4a\x00\x00\x00\x00\x5c\x80\x5c\x76\x00\x00\x53\xb2\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5c\x82\x00\x00\x00\x00\x5c\x7c\x5c\x77\x00\x00\x5c\x7a\x00\x00\x5c\x83\x00\x00\x00\x00\x00\x00\x4d\xb9\x00\x00\x00\x00\x5c\x7f\x47\x96\x4e\xfa\x52\xdb\x5c\x7d\x00\x00\x54\x8c\x00\x00\x00\x00\x5c\x7b\x00\x00\x00\x00\x00\x00\x00\x00\x48\x48\x68\x81\x00\x00\x00\x00\x00\x00\x5c\x81\x5c\x87\x00\x00\x00\x00\x00\x00\x5c\x90\x00\x00\x00\x00\x00\x00\x00\x00\x5c\x8f\x5c\x89\x00\x00\x00\x00\x5c\x94\x00\x00\x5c\x92\x00\x00\x00\x00\x00\x00\x00\x00\x5c\x8e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5c\x8d\x00\x00\x4b\x5c\x00\x00\x4d\xb7\x00\x00\x5c\x8c", /* 6a00 */ "\x00\x00\x00\x00\x5c\x8a\x00\x00\x00\x00\x53\xbb\x00\x00\x00\x00\x00\x00\x00\x00\x5c\x95\x49\x4f\x5c\x9d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5c\x97\x5c\x99\x5c\x93\x00\x00\x00\x00\x53\x8b\x00\x00\x49\x66\x00\x00\x5c\x8b\x00\x00\x00\x00\x5c\x91\x53\x9b\x00\x00\x48\x64\x5c\x96\x5c\x98\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x48\xdc\x45\xf2\x4b\x6f\x00\x00\x00\x00\x5c\x88\x00\x00\x5c\x9a\x00\x00\x00\x00\x00\x00\x00\x00\x55\x85\x5c\x9f\x00\x00\x5c\xa7\x46\xcf\x4e\x69\x00\x00\x00\x00\x4b\xbe\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5c\x9c\x00\x00\x5c\xa6\x5c\xa1\x5c\xa5\x00\x00\x00\x00\x45\x89\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4b\xc2\x5c\xa3\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x45\x79\x00\x00\x55\xd4\x5c\xa2\x00\x00\x00\x00\x00\x00\x5c\xa4\x00\x00\x00\x00\x00\x00\x00\x00\x5c\x9b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5c\xa8\x5c\xa9\x00\x00\x00\x00\x00\x00\x00\x00\x5c\xa0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5c\xaf\x4f\xb2", /* 6a80 */ "\x4f\xf5\x00\x00\x00\x00\x00\x00\x5c\xac\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5c\xab\x55\xee\x00\x00\x5c\xaa\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5c\xb0\x00\x00\x00\x00\x00\x00\x00\x00\x4d\x55\x00\x00\x00\x00\x00\x00\x5c\x9e\x00\x00\x5c\xad\x5c\xae\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5c\xb2\x00\x00\x5c\xb1\x00\x00\x54\x5d\x00\x00\x00\x00\x00\x00\x00\x00\x5c\xb6\x00\x00\x00\x00\x00\x00\x00\x00\x5c\xb5\x00\x00\x00\x00\x5c\xb3\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5c\xb7\x5c\xb4\x52\x8b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5c\xba\x00\x00\x55\x86\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5c\xbb\x4d\xa6\x00\x00\x00\x00\x5c\xb8\x53\x62\x00\x00\x00\x00\x5c\xb9\x00\x00\x5c\xbc\x00\x00\x00\x00\x00\x00\x51\xc5\x00\x00\x5c\xbf\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5c\xc2\x52\xee\x00\x00\x00\x00\x00\x00\x00\x00", /* 6b00 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x4e\xde\x5c\xc0\x00\x00\x00\x00\x00\x00\x00\x00\x5c\xc1\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5c\xc3\x00\x00\x00\x00\x00\x00\x5c\xc4\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x55\xf7\x00\x00\x5c\xc5\x4c\xb5\x45\x97\x00\x00\x4b\x9d\x00\x00\x00\x00\x00\x00\x4a\xa0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4b\xf6\x00\x00\x00\x00\x00\x00\x00\x00\x5c\xc7\x5c\xc6\x5c\xc8\x51\x7d\x00\x00\x00\x00\x4c\xf8\x4e\xfb\x00\x00\x00\x00\x00\x00\x00\x00\x5c\xcc\x00\x00\x00\x00\x00\x00\x5c\xcb\x00\x00\x5c\xcd\x00\x00\x00\x00\x46\xf7\x00\x00\x54\x87\x00\x00\x5c\xce\x00\x00\x00\x00\x4d\x4e\x5c\xd0\x00\x00\x00\x00\x00\x00\x00\x00\x5c\xcf\x00\x00\x5c\xd1\x00\x00\x00\x00\x00\x00\x5c\xd2\x00\x00\x5c\xd3\x48\xd8\x45\x77\x4d\x4c\x00\x00\x45\xb1\x00\x00\x00\x00\x47\xd8\x55\x8e\x00\x00\x00\x00\x00\x00\x00\x00\x4a\x9f\x00\x00\x00\x00\x00\x00\x48\xe4\x49\x55\x00\x00\x00\x00\x00\x00\x5c\xd4\x5c\xd5\x00\x00\x49\x99\x00\x00\x00\x00\x00\x00\x5c\xd6", /* 6b80 */ "\x5c\xd7\x00\x00\x00\x00\x5c\xd9\x5c\xd8\x00\x00\x4f\x42\x00\x00\x00\x00\x53\xa4\x48\x65\x49\x92\x00\x00\x5c\xda\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5c\xdc\x4e\x73\x00\x00\x5c\xdb\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5c\xdd\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5c\xde\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5c\xdf\x5c\xe0\x00\x00\x00\x00\x00\x00\x5c\xe1\x00\x00\x5c\xe2\x5c\xe3\x5c\xe4\x54\x59\x47\xed\x00\x00\x5c\xe5\x00\x00\x00\x00\x49\xe9\x50\xc0\x5c\xe6\x00\x00\x00\x00\x48\x49\x58\x7f\x00\x00\x00\x00\x00\x00\x00\x00\x4a\x5b\x5c\xe7\x00\x00\x00\x00\x00\x00\x00\x00\x5c\xe8\x00\x00\x49\x69\x49\xf5\x00\x00\x00\x00\x00\x00\x4c\x97\x5c\xe9\x47\x4e\x00\x00\x5c\xea\x00\x00\x53\xd7\x00\x00\x00\x00\x46\xe2\x00\x00\x00\x00\x00\x00\x5c\xeb\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5c\xed\x5c\xec\x00\x00\x00\x00\x5c\xef\x00\x00\x00\x00\x00\x00\x5c\xee\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 6c00 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5c\xf0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x48\x8e\x00\x00\x47\x56\x00\x00\x5c\xf1\x5c\xf2\x00\x00\x00\x00\x45\xb9\x00\x00\x00\x00\x00\x00\x5c\xf3\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5c\xf5\x5c\xf4\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x45\x9c\x00\x00\x00\x00\x4c\xa4\x45\xfb\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x55\x6e\x5c\xf6\x53\x4d\x4d\x84\x49\xa0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x50\x5e\x00\x00\x50\x6a\x00\x00\x00\x00\x00\x00\x00\x00\x5c\xf8\x00\x00\x4e\xc4\x00\x00\x00\x00\x4e\x82\x00\x00\x5c\xf9\x55\x5e\x5c\xf7\x45\xad\x45\xe8\x00\x00\x5c\xfa\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5d\x45\x00\x00\x52\xb4\x00\x00\x00\x00\x00\x00\x00\x00\x5c\xfe\x50\xd2\x00\x00\x50\xc8\x5d\x46\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x47\xa4\x00\x00\x00\x00\x49\x4c\x5d\x44\x00\x00", /* 6c80 */ "\x00\x00\x5d\x42\x5c\xfb\x55\xd9\x00\x00\x00\x00\x5c\xfd\x00\x00\x4c\x8f\x00\x00\x00\x00\x00\x00\x55\x98\x5c\xfc\x00\x00\x00\x00\x5d\x48\x00\x00\x5d\x47\x4f\xf8\x00\x00\x00\x00\x47\xfd\x00\x00\x00\x00\x4e\xad\x5d\x41\x5d\x43\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x50\x75\x45\x85\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x53\xec\x00\x00\x00\x00\x5d\x4d\x00\x00\x00\x00\x5d\x50\x00\x00\x46\x5a\x00\x00\x00\x00\x00\x00\x00\x00\x4e\xaa\x46\x5c\x5d\x52\x45\x84\x46\xc6\x5d\x4b\x5d\x51\x4e\x6f\x00\x00\x4a\x58\x00\x00\x00\x00\x5d\x49\x5d\x4c\x00\x00\x00\x00\x00\x00\x46\xee\x4d\xb8\x00\x00\x51\xfd\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x54\xd7\x00\x00\x46\x4a\x00\x00\x55\xc6\x00\x00\x5d\x55\x5d\x4e\x5d\x53\x00\x00\x5d\x4f\x00\x00\x00\x00\x00\x00\x4e\x87\x46\xca\x4d\x4b\x00\x00\x4e\x56\x00\x00\x00\x00\x49\x44\x00\x00\x5d\x56\x00\x00\x00\x00\x00\x00\x00\x00\x5d\x54\x46\xf3\x5d\x4a\x00\x00\x4f\x57\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 6d00 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x5d\x58\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x45\xda\x5d\x5e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5d\x5d\x00\x00\x00\x00\x00\x00\x00\x00\x4a\x4e\x00\x00\x52\xb6\x00\x00\x54\x50\x00\x00\x00\x00\x4d\x98\x5d\x57\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x45\xdc\x00\x00\x00\x00\x00\x00\x50\xb7\x4f\xd4\x5d\x5a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4b\x72\x5d\x5c\x00\x00\x52\xac\x5d\x59\x00\x00\x50\xbc\x00\x00\x00\x00\x47\xb4\x00\x00\x5d\x5b\x4a\x72\x00\x00\x00\x00\x46\xfc\x00\x00\x00\x00\x4c\xc9\x46\x8d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5d\x66\x5d\x64\x00\x00\x45\xea\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5d\x5f\x5d\x63\x00\x00\x46\x6b\x00\x00\x00\x00\x46\xeb\x4a\x9d\x00\x00\x55\xcc\x00\x00\x4a\x8c\x5d\x62\x00\x00\x00\x00\x00\x00\x00\x00\x4b\x7e\x00\x00\x00\x00\x45\xa7\x4d\x41\x5d\x65\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 6d80 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5d\x6a\x00\x00\x5d\x60\x48\x6b\x00\x00\x00\x00\x00\x00\x4f\x7d\x00\x00\x5d\x67\x00\x00\x00\x00\x00\x00\x00\x00\x5d\x61\x00\x00\x5d\x68\x5d\x6b\x00\x00\x00\x00\x4d\xda\x00\x00\x5d\x69\x55\x50\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5d\x72\x00\x00\x00\x00\x4f\x91\x00\x00\x00\x00\x4a\x45\x00\x00\x00\x00\x5d\x6f\x00\x00\x00\x00\x5d\x73\x00\x00\x00\x00\x00\x00\x4e\x74\x00\x00\x00\x00\x00\x00\x4a\x88\x00\x00\x00\x00\x00\x00\x00\x00\x5d\x7c\x5d\x75\x5d\x71\x00\x00\x00\x00\x00\x00\x52\xc7\x5d\x78\x00\x00\x00\x00\x5d\x74\x00\x00\x4a\xbf\x5d\x7b\x00\x00\x00\x00\x5d\x82\x00\x00\x00\x00\x55\xe1\x5d\x7e\x00\x00\x00\x00\x00\x00\x00\x00\x5d\x77\x00\x00\x00\x00\x4c\xa5\x00\x00\x00\x00\x5d\x81\x00\x00\x5d\x70\x00\x00\x5d\x79\x00\x00\x5d\x83\x55\x4e\x5d\x76\x00\x00\x5d\x84\x00\x00\x00\x00\x47\x77\x5d\x7f\x48\x94\x00\x00\x48\xea\x00\x00\x4b\x46\x5d\x7a\x5d\x6c\x5d\x7d\x4a\x91\x5d\x80\x00\x00\x00\x00\x00\x00", /* 6e00 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x45\x96\x00\x00\x54\x41\x47\x69\x4a\xc0\x5d\x6d\x48\x92\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x51\x98\x00\x00\x51\x64\x00\x00\x00\x00\x00\x00\x5d\x87\x50\xe4\x47\x8a\x00\x00\x5d\x99\x00\x00\x5d\x92\x52\x7a\x45\xd2\x00\x00\x5d\x8c\x5d\x98\x4e\x43\x51\xa0\x5d\x93\x00\x00\x49\x50\x00\x00\x5d\x8f\x49\x45\x5d\x85\x5d\x6e\x48\xc6\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5d\x9a\x5d\x8a\x5d\x96\x00\x00\x5d\x95\x00\x00\x5d\x8b\x00\x00\x00\x00\x00\x00\x00\x00\x5d\x94\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4c\x88\x00\x00\x00\x00\x5d\x91\x5d\x97\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4d\x52\x00\x00\x51\x55\x00\x00\x00\x00\x53\xf3\x5d\x8e\x00\x00\x00\x00\x5d\x89\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4f\xbd\x00\x00\x00\x00\x00\x00\x5d\x8d\x00\x00\x00\x00\x5d\x86\x48\xbd\x00\x00\x00\x00\x5d\x88\x00\x00\x00\x00\x00\x00\x5d\x90\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4d\x6b\x4c\x90", /* 6e80 */ "\x47\x5b\x00\x00\x5d\x9b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x54\xfa\x00\x00\x00\x00\x5d\xa5\x47\xfc\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x46\xce\x00\x00\x5d\x9d\x00\x00\x00\x00\x00\x00\x4d\xc4\x4a\x4d\x00\x00\x5d\xa8\x00\x00\x00\x00\x52\x71\x00\x00\x00\x00\x53\x76\x00\x00\x00\x00\x00\x00\x00\x00\x5d\x9c\x00\x00\x00\x00\x00\x00\x00\x00\x5d\xa0\x00\x00\x00\x00\x5d\xa2\x00\x00\x00\x00\x00\x00\x48\xbe\x5d\x9e\x00\x00\x00\x00\x54\x97\x00\x00\x00\x00\x5d\x9f\x00\x00\x5d\xa6\x00\x00\x00\x00\x5d\xa7\x00\x00\x5d\xa1\x4e\xe6\x00\x00\x00\x00\x00\x00\x52\xa9\x00\x00\x48\x57\x5d\xb3\x00\x00\x00\x00\x00\x00\x00\x00\x4b\xa2\x00\x00\x52\x4a\x5d\xa3\x5d\xa4\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x47\xa3\x4d\xa1\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5d\xab\x00\x00\x00\x00\x5d\xb1\x00\x00\x00\x00\x5d\xaf\x00\x00\x4f\xb7\x00\x00\x00\x00\x5d\xb7\x5d\xac\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5d\xad\x5d\xb4", /* 6f00 */ "\x00\x00\x4b\x78\x4f\xbc\x00\x00\x00\x00\x00\x00\x4d\xae\x00\x00\x00\x00\x54\xd0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x50\xc4\x00\x00\x55\x75\x00\x00\x5d\xb6\x49\xed\x54\xa1\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x50\x8e\x00\x00\x4f\x58\x54\xe0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4f\x6e\x4e\x8a\x00\x00\x00\x00\x00\x00\x00\x00\x5d\xb0\x5d\xb2\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4d\x73\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5d\xb5\x5d\xae\x00\x00\x5d\xa9\x00\x00\x00\x00\x00\x00\x5d\xaa\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x54\xfa\x00\x00\x00\x00\x4a\xc2\x00\x00\x00\x00\x00\x00\x5d\xc3\x00\x00\x00\x00\x5d\xbd\x4d\xc0\x00\x00\x00\x00\x46\xc2\x00\x00\x00\x00\x00\x00\x00\x00\x4a\xd2\x00\x00\x5d\xc7\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5d\xbe\x4c\x93\x5d\xbc\x54\x46\x00\x00\x00\x00\x00\x00\x5d\xbf\x00\x00\x00\x00\x00\x00\x5d\xba\x00\x00\x5d\xb9\x00\x00\x5d\xc2\x00\x00\x00\x00\x00\x00", /* 6f80 */ "\x5d\xbb\x55\xa0\x5d\xc0\x00\x00\x48\x87\x00\x00\x5d\xb8\x00\x00\x5d\xc1\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5d\xc5\x00\x00\x00\x00\x5d\xc6\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x54\xba\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5d\xcb\x00\x00\x5d\xc9\x4e\x4b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5d\xce\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x55\x89\x00\x00\x5d\xc8\x00\x00\x5d\xca\x00\x00\x00\x00\x00\x00\x5d\xcc\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4b\xd0\x50\xbe\x5d\xcf\x4a\xce\x00\x00\x00\x00\x5d\xc4\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5d\xd4\x5d\xd1\x00\x00\x00\x00\x5d\xd3\x00\x00\x00\x00\x5d\xcd\x00\x00\x00\x00\x00\x00\x5d\xd0\x53\x80\x50\x7e\x00\x00\x00\x00\x51\xd2\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x55\xa3\x5d\xd2\x00\x00\x5d\xd6\x4d\xd4\x00\x00\x50\x55\x00\x00\x5d\xe2\x00\x00\x5d\xd5\x66\x58\x00\x00\x00\x00\x00\x00\x5d\xdb\x00\x00\x00\x00\x00\x00\x51\x87\x00\x00", /* 7000 */ "\x00\x00\x5d\xdd\x00\x00\x00\x00\x00\x00\x5d\xd7\x55\x50\x5d\xd8\x00\x00\x5d\xd9\x00\x00\x5d\xda\x00\x00\x00\x00\x00\x00\x5d\xde\x00\x00\x5d\xdc\x00\x00\x00\x00\x00\x00\x55\xd1\x00\x00\x00\x00\x5d\xe4\x00\x00\x5d\xe0\x5d\xdf\x00\x00\x52\xb0\x53\x5c\x5d\xe1\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4f\xde\x52\xae\x5d\xe3\x00\x00\x00\x00\x00\x00\x46\x5b\x00\x00\x00\x00\x00\x00\x5d\xe5\x00\x00\x5d\xe7\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5d\xe6\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x53\xea\x00\x00\x00\x00\x00\x00\x00\x00\x5d\xe8\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4b\x96\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5d\xe9\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x47\x85\x00\x00\x00\x00\x00\x00\x4b\x65\x4a\xf5\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x54\x73\x00\x00\x00\x00\x00\x00\x54\x6a\x4c\xbc\x00\x00\x00\x00", /* 7080 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5d\xea\x00\x00\x00\x00\x00\x00\x49\x7d\x4f\xcb\x00\x00\x00\x00\x00\x00\x4d\xad\x00\x00\x00\x00\x00\x00\x4f\xee\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5d\xeb\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5d\xed\x5d\xee\x48\x61\x5d\xf0\x5d\xec\x00\x00\x00\x00\x00\x00\x52\xcd\x00\x00\x00\x00\x00\x00\x00\x00\x5d\xef\x47\x88\x49\xd7\x52\x9e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4d\xd1\x00\x00\x00\x00\x5d\xf2\x00\x00\x00\x00\x00\x00\x50\x99\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5d\xf3\x00\x00\x00\x00\x00\x00\x53\x8c\x00\x00\x5d\xf1\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5d\xf7\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x55\x87\x00\x00\x00\x00\x00\x00\x5d\xf8\x00\x00\x00\x00", /* 7100 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x5d\xf6\x00\x00\x00\x00\x00\x00\x00\x00\x5d\xf4\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5d\xf5\x00\x00\x00\x00\x00\x00\x00\x00\x53\xee\x00\x00\x00\x00\x00\x00\x00\x00\x5d\xfa\x54\x4f\x00\x00\x5d\xf9\x00\x00\x00\x00\x00\x00\x00\x00\x47\x5f\x00\x00\x00\x00\x00\x00\x00\x00\x4d\xe6\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x53\xee\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x47\xef\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x49\x83\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5d\xfc\x5d\xfd\x00\x00\x4c\x6f\x00\x00\x00\x00\x5e\x42\x00\x00\x54\x90\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x68\x85\x5e\x43\x00\x00\x00\x00\x4b\xdd\x00\x00\x00\x00\x5d\xfb\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5e\x41\x00\x00\x54\xea\x53\x57\x5d\xfe\x47\x42\x00\x00\x54\xa0\x00\x00\x00\x00\x5e\x44\x00\x00\x4c\x4c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x55\x90\x00\x00\x00\x00", /* 7180 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x5e\x47\x00\x00\x00\x00\x00\x00\x5e\x45\x00\x00\x46\x7f\x00\x00\x00\x00\x00\x00\x00\x00\x5e\x46\x00\x00\x00\x00\x00\x00\x00\x00\x52\x9d\x5e\x48\x00\x00\x00\x00\x00\x00\x4f\x68\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4e\xbf\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x54\xbb\x00\x00\x00\x00\x00\x00\x5e\x4a\x00\x00\x00\x00\x00\x00\x00\x00\x47\xd5\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5e\x4c\x00\x00\x00\x00\x00\x00\x00\x00\x5e\x4d\x00\x00\x00\x00\x5e\x4b\x00\x00\x49\xd5\x00\x00\x00\x00\x00\x00\x00\x00\x4e\xf8\x5e\x50\x00\x00\x00\x00\x00\x00\x00\x00\x5e\x53\x00\x00\x4a\x79\x00\x00\x5e\x4e\x00\x00\x5e\x51\x50\x47\x00\x00\x5e\x52\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x57\xfb\x5e\x55\x00\x00\x00\x00\x00\x00\x00\x00\x4c\x66\x54\xce\x5e\x4f\x00\x00\x00\x00\x00\x00\x00\x00\x5e\x56\x54\xe6\x57\x8f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5e\x54\x00\x00\x00\x00\x00\x00\x5e\x59\x00\x00\x5e\x57\x5e\x58\x00\x00\x5e\x5a\x5e\x5b", /* 7200 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4a\xd9\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5e\x5c\x00\x00\x00\x00\x5e\x5d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x53\x7c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5e\x5e\x00\x00\x4c\x87\x00\x00\x5e\x60\x5e\x5f\x00\x00\x00\x00\x5e\x61\x00\x00\x5e\x62\x00\x00\x00\x00\x53\xa9\x45\xcc\x00\x00\x00\x00\x00\x00\x50\x96\x5e\x63\x5e\x64\x52\xdd\x4c\x79\x5e\x65\x5e\x66\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5e\x67\x47\x67\x4a\xbd\x00\x00\x00\x00\x5e\x68\x55\x6f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x55\xdd\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5e\x69\x53\xfc\x00\x00\x49\x73\x00\x00\x55\xb7\x00\x00\x4a\xaf\x00\x00\x50\x9a\x55\xc4\x00\x00\x00\x00\x00\x00\x00\x00\x48\x7b\x00\x00\x46\x52\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x51\x58\x00\x00\x5e\x6a\x00\x00\x00\x00\x00\x00\x00\x00\x46\xa2\x00\x00\x00\x00\x00\x00\x54\x8a\x5e\x6b\x00\x00", /* 7280 */ "\x53\x54\x5e\x6c\x5e\x6e\x00\x00\x00\x00\x00\x00\x00\x00\x5e\x6d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5e\x6f\x00\x00\x00\x00\x00\x00\x5e\x70\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4f\xdc\x00\x00\x5e\x71\x00\x00\x00\x00\x00\x00\x00\x00\x5e\x72\x00\x00\x00\x00\x00\x00\x00\x00\x4a\xc5\x00\x00\x00\x00\x4c\xa7\x00\x00\x5e\x73\x5e\x74\x00\x00\x00\x00\x00\x00\x48\x52\x00\x00\x00\x00\x5e\x79\x00\x00\x00\x00\x00\x00\x00\x00\x5e\x75\x00\x00\x00\x00\x00\x00\x4e\x5a\x5e\x76\x5e\x78\x00\x00\x5e\x77\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5e\x7a\x00\x00\x51\xdb\x00\x00\x5e\x7b\x00\x00\x00\x00\x00\x00\x00\x00\x52\x74\x00\x00\x4e\xcf\x00\x00\x50\xdc\x00\x00\x00\x00\x00\x00\x00\x00\x5e\x7d\x5e\x7e\x5e\x7c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4a\x7b\x00\x00\x00\x00\x4a\xdb\x4c\x9e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5e\x80\x52\xfe\x5e\x7f\x00\x00\x00\x00\x50\x6f\x54\xd6\x00\x00\x00\x00", /* 7300 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5e\x82\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5e\x84\x5e\x81\x00\x00\x00\x00\x00\x00\x4a\x51\x5e\x83\x5e\x85\x00\x00\x4e\x9d\x00\x00\x00\x00\x00\x00\x00\x00\x5e\x86\x5e\x8b\x00\x00\x00\x00\x00\x00\x5e\x88\x49\xc5\x4f\xd0\x00\x00\x00\x00\x4f\x45\x5e\x89\x00\x00\x00\x00\x00\x00\x00\x00\x5e\x87\x00\x00\x50\x4f\x53\xdd\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5e\x8c\x4c\x5a\x00\x00\x00\x00\x00\x00\x00\x00\x4e\x95\x51\x9f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5e\x8e\x5e\x8d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5e\x8f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4f\x65\x00\x00\x00\x00\x00\x00\x00\x00\x5e\x92\x00\x00\x5e\x91\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5e\x93\x00\x00\x4d\x61\x00\x00\x00\x00\x5e\x96\x00\x00\x5e\x94\x5e\x95\x00\x00\x51\xcb\x5e\x97\x00\x00\x00\x00\x00\x00\x00\x00", /* 7380 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x4c\x6e\x00\x00\x00\x00\x47\x83\x00\x00\x45\xfd\x00\x00\x49\xb1\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4d\xe9\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4e\x4c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4a\xf9\x5e\x9a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5e\x9c\x00\x00\x5e\x99\x00\x00\x00\x00\x5e\x9d\x00\x00\x4c\x9a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5e\x98\x5e\x9e\x53\x99\x00\x00\x00\x00\x4d\x5d\x5e\x9b\x00\x00\x00\x00\x00\x00\x5e\xa2\x00\x00\x00\x00\x00\x00\x5e\x9f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5e\xa5\x00\x00\x4b\x99\x00\x00\x00\x00\x5e\xa1\x00\x00\x5e\xa0\x00\x00\x00\x00\x00\x00\x00\x00\x4c\xb9\x00\x00\x00\x00\x50\x66\x5e\xa3\x00\x00\x00\x00\x5e\xa4\x00\x00\x00\x00\x00\x00\x5e\xa8\x00\x00\x00\x00\x5e\xa6\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x46\xb7\x00\x00", /* 7400 */ "\x00\x00\x00\x00\x00\x00\x48\xdb\x00\x00\x5e\xa9\x45\xeb\x5e\xa7\x00\x00\x50\xf7\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4e\x5c\x00\x00\x00\x00\x5e\xac\x5e\xaa\x00\x00\x00\x00\x5e\xad\x5e\xab\x00\x00\x00\x00\x00\x00\x5e\xae\x00\x00\x00\x00\x00\x00\x5e\xaf\x54\x53\x4c\xd8\x52\xa3\x52\x9f\x00\x00\x00\x00\x00\x00\x5e\xb0\x00\x00\x00\x00\x00\x00\x00\x00\x5e\xb2\x00\x00\x5e\xb5\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5e\xb1\x00\x00\x00\x00\x00\x00\x5e\xb4\x53\xf1\x4f\x52\x5e\xb6\x00\x00\x4b\x5b\x5e\xb3\x50\x8c\x00\x00\x5e\xbc\x5e\xb9\x5e\xbb\x00\x00\x00\x00\x00\x00\x00\x00\x5e\xb7\x5e\xba\x00\x00\x00\x00\x00\x00\x00\x00\x5e\xbe\x5e\xb8\x00\x00\x00\x00\x51\x88\x00\x00\x00\x00\x68\x83\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5e\xbf\x00\x00", /* 7480 */ "\x00\x00\x00\x00\x00\x00\x52\x8c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5e\xbd\x00\x00\x50\x4d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5e\xc1\x5e\xc0\x00\x00\x00\x00\x5e\xc2\x00\x00\x00\x00\x00\x00\x00\x00\x5e\xc3\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4a\xb9\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x52\x49\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5e\xc4\x00\x00\x00\x00\x00\x00\x00\x00\x5e\xc5\x00\x00\x00\x00\x00\x00\x00\x00\x5e\xc6\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4e\x64\x00\x00\x00\x00\x00\x00\x5e\xc7\x00\x00\x54\x52\x5e\xc8\x00\x00\x00\x00\x49\xc2\x5e\xc9\x00\x00\x5e\xca\x00\x00\x00\x00\x00\x00\x00\x00\x5e\xcb\x00\x00\x5e\xcc\x5e\xce\x5e\xcd\x00\x00\x00\x00\x00\x00\x4c\xd4\x5e\xcf\x5e\xd0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 7500 */ "\x00\x00\x5e\xd1\x00\x00\x5e\xd3\x5e\xd2\x5e\xd4\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5e\xd6\x5e\xd5\x5e\xd7\x00\x00\x00\x00\x54\x95\x00\x00\x5e\xd8\x00\x00\x53\xe6\x00\x00\x00\x00\x4b\x55\x00\x00\x4b\x66\x00\x00\x52\xa7\x00\x00\x5e\xd9\x45\x99\x00\x00\x00\x00\x00\x00\x45\xc0\x00\x00\x55\xd7\x5e\xda\x00\x00\x45\xb6\x00\x00\x00\x00\x4d\x58\x5e\xdb\x00\x00\x00\x00\x58\xfe\x45\x63\x46\x7c\x48\xa0\x49\x67\x00\x00\x00\x00\x00\x00\x45\x7c\x57\x65\x00\x00\x45\x55\x46\x77\x5e\xdc\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5e\xdd\x00\x00\x5e\xe1\x00\x00\x00\x00\x5e\xe0\x5e\xdf\x5b\x7c\x47\xae\x5e\xde\x00\x00\x55\x8f\x00\x00\x47\x8b\x00\x00\x00\x00\x4e\xdc\x00\x00\x00\x00\x00\x00\x00\x00\x47\xab\x5e\xe3\x5e\xe2\x4d\x72\x50\x86\x00\x00\x00\x00\x49\xfe\x00\x00\x55\x9a\x00\x00\x5e\xe4\x4c\xf0\x51\xb4\x5e\xe5\x00\x00\x52\xfd\x48\xb9\x5e\xe6\x00\x00\x5e\xe9\x00\x00\x5e\xe7\x4a\xa9\x00\x00\x00\x00\x4e\x54\x5e\xe8\x00\x00\x5e\xeb\x50\xdd\x5e\xea\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x50\xd4", /* 7580 */ "\x00\x00\x00\x00\x5e\xec\x00\x00\x00\x00\x00\x00\x5e\xed\x5e\xee\x00\x00\x5e\xf0\x5e\xef\x4e\xa0\x00\x00\x00\x00\x51\x71\x55\xb0\x00\x00\x4c\xb4\x00\x00\x00\x00\x5e\xf1\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5e\xf2\x00\x00\x00\x00\x5e\xf3\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5e\xf5\x00\x00\x5e\xf4\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x50\xce\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5e\xfd\x4d\x97\x5e\xf7\x00\x00\x5e\xf9\x00\x00\x00\x00\x5e\xfb\x54\xe1\x00\x00\x00\x00\x5e\xfc\x5e\xfa\x51\x42\x00\x00\x00\x00\x00\x00\x5e\xf6\x5e\xf8\x00\x00\x49\xbf\x00\x00\x4e\x4a\x00\x00\x00\x00\x5f\x41\x00\x00\x00\x00\x5e\xfe\x00\x00\x00\x00\x00\x00\x00\x00\x5f\x42\x00\x00\x51\x82\x53\xfd\x00\x00\x00\x00\x55\x49\x5f\x43\x00\x00\x4c\x47\x00\x00\x00\x00\x5f\x45\x00\x00\x00\x00\x00\x00\x51\x74\x5f\x44\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x54\xa4\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5f\x4a\x00\x00\x5f\x4c\x5f\x4d\x50\x89\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5f\x4b\x00\x00\x5f\x48\x00\x00\x5f\x46\x5f\x47", /* 7600 */ "\x00\x00\x5f\x49\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5f\x4f\x00\x00\x5f\x4e\x00\x00\x52\x4f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5f\x50\x5f\x52\x5f\x53\x5f\x54\x00\x00\x5f\x55\x00\x00\x54\xa4\x5f\x51\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5f\x57\x00\x00\x00\x00\x00\x00\x5f\x56\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5f\x58\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4b\xb7\x00\x00\x00\x00\x00\x00\x5f\x5c\x5f\x59\x5f\x5a\x00\x00\x00\x00\x00\x00\x54\x47\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x53\xaa\x00\x00\x00\x00\x00\x00\x53\x7e\x00\x00\x5f\x5b\x00\x00\x00\x00\x00\x00\x5f\x5d\x00\x00\x00\x00\x00\x00\x00\x00\x5f\x5e\x5f\x5f\x00\x00\x00\x00\x00\x00\x00\x00\x5f\x62\x5f\x60\x5f\x61\x5f\x63\x00\x00\x5f\x64\x00\x00\x00\x00\x00\x00\x5f\x65\x00\x00\x5f\x66\x00\x00\x00\x00\x00\x00\x5f\x67\x00\x00\x53\x9a\x00\x00\x46\x4b\x46\xe8\x5f\x68\x46\x59\x45\x4b\x00\x00", /* 7680 */ "\x5f\x6a\x00\x00\x5f\x69\x5f\x6b\x45\xef\x00\x00\x4a\xb0\x4c\xbb\x5f\x6c\x00\x00\x00\x00\x5f\x6d\x00\x00\x00\x00\x52\x99\x00\x00\x52\xa4\x00\x00\x00\x00\x4e\x81\x00\x00\x00\x00\x53\x96\x00\x00\x00\x00\x5f\x6e\x5f\x6f\x5f\x72\x5f\x70\x00\x00\x5f\x71\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5f\x73\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x49\xda\x00\x00\x5f\x74\x00\x00\x00\x00\x00\x00\x5f\x75\x00\x00\x00\x00\x68\x68\x5f\x76\x5f\x77\x5f\x78\x00\x00\x00\x00\x00\x00\x00\x00\x4d\xc7\x00\x00\x00\x00\x5f\x79\x53\xba\x00\x00\x00\x00\x50\x57\x00\x00\x51\xb5\x00\x00\x47\x74\x00\x00\x00\x00\x5f\x7b\x00\x00\x00\x00\x00\x00\x00\x00\x5f\x7d\x00\x00\x00\x00\x00\x00\x5f\x7c\x4d\x65\x00\x00\x00\x00\x00\x00\x48\x44\x5c\xc9\x00\x00\x5f\x7e\x4b\x84\x00\x00\x5f\x7f\x00\x00\x49\xe3\x48\x90\x5f\x80\x00\x00\x53\xf7\x00\x00\x00\x00\x5f\x81\x00\x00\x00\x00\x00\x00\x46\x75\x00\x00\x00\x00\x00\x00\x50\x80\x00\x00\x46\x74\x00\x00\x00\x00\x00\x00\x46\x78\x00\x00\x00\x00\x5f\x83\x00\x00\x00\x00\x50\x82\x00\x00", /* 7700 */ "\x00\x00\x48\x47\x00\x00\x00\x00\x5f\x86\x00\x00\x00\x00\x5f\x85\x5f\x84\x52\xbc\x00\x00\x4d\xa2\x45\x52\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5f\x8b\x00\x00\x00\x00\x51\xca\x46\x42\x4e\x6a\x00\x00\x00\x00\x00\x00\x5f\x87\x5f\x89\x5f\x8a\x00\x00\x00\x00\x5f\x88\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5f\x8c\x5f\x8d\x00\x00\x4e\x5f\x00\x00\x49\xa5\x00\x00\x00\x00\x00\x00\x47\xaa\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5f\x8e\x5f\x8f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5f\x90\x5f\x93\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x52\x6c\x00\x00\x4a\x73\x00\x00\x5f\x94\x4a\x96\x00\x00\x5f\x91\x00\x00\x00\x00\x5f\x92\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5f\x97\x00\x00\x00\x00\x00\x00\x00\x00\x5f\x96\x5f\x95", /* 7780 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5f\x99\x00\x00\x00\x00\x5f\x98\x00\x00\x00\x00\x5f\x9a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5f\x9c\x00\x00\x5f\x9b\x00\x00\x00\x00\x00\x00\x00\x00\x55\x72\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4d\xb0\x52\x7d\x00\x00\x00\x00\x5f\x9d\x00\x00\x00\x00\x4f\x9b\x00\x00\x00\x00\x5f\x9e\x00\x00\x00\x00\x5f\x9f\x00\x00\x5f\xa3\x5f\xa1\x5f\xa2\x00\x00\x5f\xa0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5f\xa4\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5f\xa5\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x53\x50\x00\x00\x00\x00\x5f\xa6\x50\xed\x5f\xa7\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x46\xc1\x5f\xa8\x00\x00\x45\xb0\x00\x00\x55\xc9\x00\x00\x4e\x4d\x00\x00\x00\x00\x00\x00\x4a\x82\x5f\xa9\x51\xbb\x00\x00\x00\x00\x00\x00\x45\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5f\xab\x00\x00\x00\x00\x00\x00", /* 7800 */ "\x00\x00\x00\x00\x49\x5b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5f\xac\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5f\xad\x00\x00\x46\xd3\x4c\xc3\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5f\xb0\x5f\xae\x00\x00\x00\x00\x00\x00\x4d\x45\x54\xb4\x52\x48\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4c\xc2\x00\x00\x4a\xbe\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x50\xdf\x00\x00\x00\x00\x00\x00\x00\x00\x5f\xaf\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5f\xb1\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5f\xb2\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x49\x76\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5f\xb3\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x49\x84\x4a\xef\x00\x00\x00\x00\x53\x69\x00\x00\x00\x00\x52\xbf\x00\x00\x5f\xb4\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5f\xb6\x00\x00\x5f\xb9\x00\x00\x00\x00\x00\x00", /* 7880 */ "\x00\x00\x4f\x4e\x00\x00\x00\x00\x00\x00\x00\x00\x5f\xb7\x51\x95\x00\x00\x00\x00\x00\x00\x00\x00\x5f\xba\x53\x56\x5f\xb5\x00\x00\x00\x00\x51\x7b\x00\x00\x4f\xb1\x00\x00\x52\xd2\x00\x00\x54\x5b\x00\x00\x00\x00\x5f\xb8\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5f\xbb\x00\x00\x00\x00\x00\x00\x4d\xf8\x00\x00\x50\x7d\x5f\xbd\x00\x00\x00\x00\x00\x00\x00\x00\x5f\xbe\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5f\xbc\x00\x00\x00\x00\x00\x00\x00\x00\x48\x7a\x00\x00\x5f\xc4\x00\x00\x5f\xc3\x00\x00\x00\x00\x4a\x62\x00\x00\x00\x00\x00\x00\x5f\xc5\x5f\xc0\x00\x00\x00\x00\x00\x00\x5f\xc6\x5f\xc1\x00\x00\x00\x00\x00\x00\x00\x00\x4b\x9c\x5f\xbf\x00\x00\x00\x00\x5f\xc2\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5f\xc9\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5f\xc8\x49\xb4\x00\x00\x00\x00\x00\x00\x5f\xc7\x00\x00\x00\x00\x48\xaa\x00\x00\x00\x00\x00\x00\x00\x00\x5f\xcb\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5f\xca\x00\x00\x00\x00", /* 7900 */ "\x00\x00\x51\xb0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5f\xcc\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4c\x9c\x00\x00\x00\x00\x5f\xcd\x4d\xf0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5f\xce\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x51\xb9\x00\x00\x00\x00\x00\x00\x51\x4c\x5f\xd0\x5f\xcf\x00\x00\x00\x00\x00\x00\x5f\xd1\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x48\x53\x00\x00\x49\x58\x00\x00\x46\x63\x00\x00\x5f\xd3\x53\xd2\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x51\x92\x4e\xd8\x4f\xeb\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x48\x8c\x00\x00\x00\x00\x55\x5c\x00\x00\x5f\xd8\x4c\xdc\x53\x65\x00\x00\x00\x00\x5f\xd7\x00\x00\x00\x00\x4c\xeb\x45\xa1\x5f\xd6\x5f\xd4\x00\x00\x4f\x89\x00\x00\x00\x00\x49\xf9\x00\x00\x00\x00\x4d\xbf\x00\x00\x00\x00\x00\x00\x00\x00\x4c\x71\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x55\x53\x00\x00\x00\x00\x52\xd8\x00\x00\x00\x00\x00\x00\x00\x00\x5f\xda", /* 7980 */ "\x50\xe7\x4d\x75\x00\x00\x00\x00\x50\xae\x4f\x87\x00\x00\x00\x00\x00\x00\x00\x00\x5f\xdb\x00\x00\x00\x00\x52\x86\x4b\xa7\x45\x8b\x00\x00\x00\x00\x00\x00\x00\x00\x5f\xdc\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5f\xdf\x00\x00\x5f\xde\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x55\xaa\x4f\xd7\x00\x00\x00\x00\x5f\xe0\x00\x00\x00\x00\x00\x00\x54\xf5\x00\x00\x50\xfa\x55\x53\x00\x00\x5f\xe1\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x53\x6a\x5f\xe2\x00\x00\x00\x00\x55\x5d\x54\x63\x53\xd0\x45\xf1\x46\xc3\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5f\xe3\x00\x00\x46\x58\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x48\xed\x4d\xba\x00\x00\x00\x00\x5f\xe4\x00\x00\x00\x00\x4c\x70\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4d\x83\x00\x00\x54\xb5\x00\x00\x5f\xe7\x50\x8f\x00\x00\x4c\x8a\x5f\xe5\x00\x00\x4d\x9f\x00\x00\x00\x00\x5f\xe6\x00\x00\x00\x00\x00\x00\x4b\xdf\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x49\x75\x00\x00\x00\x00\x00\x00\x00\x00", /* 7a00 */ "\x52\x64\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5f\xe8\x00\x00\x00\x00\x47\xf4\x00\x00\x5f\xe9\x47\xc4\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x47\xfa\x00\x00\x00\x00\x50\x87\x5f\xea\x5f\xeb\x4d\xcf\x00\x00\x52\x96\x00\x00\x00\x00\x5f\xec\x53\x66\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x46\x92\x00\x00\x00\x00\x5f\xed\x47\x6a\x00\x00\x00\x00\x00\x00\x00\x00\x5f\xef\x00\x00\x00\x00\x00\x00\x5f\xf0\x4d\xbe\x4f\xc7\x5f\xee\x4f\xd5\x4e\x94\x00\x00\x48\xd4\x5f\xf1\x00\x00\x00\x00\x52\xbe\x00\x00\x00\x00\x5f\xf3\x00\x00\x00\x00\x00\x00\x48\x91\x52\x54\x50\xb8\x50\x9b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5f\xf2\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5f\xf5\x5f\xf4\x4e\x98\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5f\xf6\x00\x00\x4f\x5c\x00\x00\x00\x00\x00\x00\x00\x00\x5f\xf8\x00\x00\x00\x00\x00\x00\x4b\x86\x00\x00\x49\x86\x00\x00\x00\x00\x5f\xf9\x47\x8d\x00\x00\x00\x00\x5f\xfa\x00\x00\x4e\x91", /* 7a80 */ "\x00\x00\x4a\xfd\x00\x00\x51\x69\x54\x99\x00\x00\x00\x00\x00\x00\x5f\xfb\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4f\xb0\x4b\xe9\x00\x00\x5f\xfc\x5f\xfe\x60\x41\x5f\xfd\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x50\xa6\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x60\x42\x4a\x65\x00\x00\x00\x00\x00\x00\x50\xaa\x49\xa7\x60\x43\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x60\x44\x00\x00\x00\x00\x00\x00\x55\x9e\x00\x00\x00\x00\x00\x00\x00\x00\x60\x47\x00\x00\x00\x00\x00\x00\x60\x46\x60\x49\x60\x48\x00\x00\x60\x4a\x52\xf0\x00\x00\x60\x4b\x45\xdd\x00\x00\x60\x4c\x00\x00\x60\x4d\x00\x00\x60\x4f\x60\x4e\x60\x51\x00\x00\x60\x50\x00\x00\x00\x00\x00\x00\x60\x52\x60\x53\x00\x00\x49\xe7\x60\x54\x00\x00\x66\xc1\x47\x6e\x60\x55\x60\x56\x54\x6b\x00\x00\x4d\x50\x60\x57\x60\x58\x00\x00\x00\x00\x51\xc8\x60\x5a\x00\x00\x60\x5b\x00\x00\x48\xef\x60\x5c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x49\x71\x00\x00\x60\x5d\x45\xf5\x54\x5c\x00\x00\x00\x00\x00\x00\x00\x00\x52\x87", /* 7b00 */ "\x00\x00\x00\x00\x60\x5e\x00\x00\x54\xd5\x00\x00\x60\x62\x00\x00\x51\xcf\x00\x00\x60\x61\x60\x60\x00\x00\x00\x00\x00\x00\x60\x5f\x00\x00\x49\xb5\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x53\xe7\x60\x65\x00\x00\x4f\x41\x00\x00\x00\x00\x60\x66\x00\x00\x47\xe0\x00\x00\x00\x00\x00\x00\x00\x00\x52\xf4\x4f\xd9\x00\x00\x60\x68\x00\x00\x00\x00\x00\x00\x46\x7e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x60\x63\x00\x00\x60\x67\x60\x64\x00\x00\x00\x00\x49\x6e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x60\x6c\x4a\xc7\x00\x00\x4d\x9b\x46\xa7\x00\x00\x4b\x8f\x60\x6b\x60\x6a\x00\x00\x52\xf5\x60\x69\x4b\x45\x4b\x7c\x00\x00\x49\xd0\x00\x00\x46\xc9\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x60\x6d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x54\x84\x00\x00\x50\x48\x00\x00\x00\x00\x00\x00\x00\x00\x53\x4e\x00\x00\x60\x73\x00\x00\x60\x71\x60\x72\x00\x00\x00\x00\x60\x70\x60\x6e\x00\x00\x00\x00\x00\x00\x00\x00\x60\x6f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 7b80 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x55\x9b\x4f\x51\x00\x00\x00\x00\x00\x00\x55\xa4\x00\x00\x60\x77\x00\x00\x60\x7b\x00\x00\x00\x00\x60\x7a\x00\x00\x4e\xe0\x4c\xcc\x00\x00\x48\x43\x60\x75\x60\x7c\x60\x79\x00\x00\x60\x78\x60\x74\x60\x82\x60\x76\x00\x00\x46\xf2\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x54\xca\x00\x00\x00\x00\x51\x8d\x00\x00\x00\x00\x00\x00\x4a\xfb\x00\x00\x00\x00\x60\x80\x00\x00\x00\x00\x00\x00\x50\x5c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x47\xa1\x51\xe8\x00\x00\x00\x00\x49\xe8\x00\x00\x60\x81\x4f\xb6\x00\x00\x49\xa8\x00\x00\x60\x7e\x60\x7f\x00\x00\x00\x00\x60\x7d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x60\x83\x00\x00\x00\x00\x48\x75\x00\x00\x00\x00\x00\x00\x4a\xd8\x60\x87\x60\x85\x00\x00\x00\x00\x60\x84\x00\x00\x00\x00\x00\x00\x54\x44\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x60\x8c\x00\x00\x00\x00\x60\x8e\x60\x86\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 7c00 */ "\x60\x89\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x60\x8b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x60\x8d\x00\x00\x00\x00\x00\x00\x4f\x53\x57\x8a\x60\x8a\x60\x88\x00\x00\x00\x00\x51\x7c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x54\xca\x60\x92\x00\x00\x4b\xec\x00\x00\x60\x8f\x00\x00\x00\x00\x00\x00\x60\x90\x00\x00\x00\x00\x60\x91\x60\x94\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x60\x93\x51\xab\x00\x00\x00\x00\x00\x00\x00\x00\x60\x95\x52\x70\x4f\x4c\x60\x96\x00\x00\x00\x00\x60\x98\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x60\x97\x4d\xfe\x00\x00\x51\xf2\x60\x9a\x00\x00\x00\x00\x00\x00\x4f\x99\x00\x00\x60\x99\x00\x00\x60\x9b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x60\x9c\x4c\xee\x00\x00\x00\x00\x00\x00\x52\xaa\x60\x9d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x60\x9e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x46\x6f\x00\x00\x60\x9f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4f\xf0\x00\x00", /* 7c80 */ "\x00\x00\x55\xe7\x4e\x85\x60\xa0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x48\x9e\x00\x00\x4f\xcc\x00\x00\x53\xc9\x00\x00\x00\x00\x60\xa1\x00\x00\x4c\xa9\x00\x00\x00\x00\x4c\x4b\x00\x00\x4d\x59\x4b\xf7\x00\x00\x00\x00\x4f\xc8\x00\x00\x00\x00\x00\x00\x4b\xfb\x00\x00\x60\xa5\x60\xa3\x00\x00\x60\xa2\x52\xab\x00\x00\x4b\xd4\x60\xa7\x00\x00\x00\x00\x60\xa4\x00\x00\x60\xa6\x60\xab\x00\x00\x00\x00\x60\xaa\x60\xa9\x60\xa8\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x60\xac\x00\x00\x00\x00\x00\x00\x60\xae\x46\x6c\x00\x00\x51\xbc\x00\x00\x60\xb0\x00\x00\x00\x00\x60\xaf\x00\x00\x00\x00\x00\x00\x00\x00\x54\x71\x00\x00\x00\x00\x00\x00\x51\x60\x00\x00\x00\x00\x00\x00\x60\xb1\x00\x00\x00\x00\x00\x00\x48\x84\x00\x00\x60\xb3\x00\x00\x00\x00\x00\x00\x60\xb4\x00\x00\x54\x92\x51\x8c\x51\x4b\x00\x00\x60\xb2\x00\x00\x00\x00\x00\x00\x00\x00\x4e\xc5\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x60\xb5\x00\x00\x00\x00\x60\xb6\x00\x00\x60\xb7\x00\x00\x60\xb8\x00\x00\x46\xc7\x00\x00\x52\xc2\x48\xfa\x00\x00\x00\x00\x51\xfe\x00\x00", /* 7d00 */ "\x46\xdb\x00\x00\x60\xba\x00\x00\x47\xbd\x4b\x67\x60\xb9\x00\x00\x00\x00\x00\x00\x60\xbd\x4c\xf9\x00\x00\x49\xe2\x00\x00\x00\x00\x4f\xb5\x00\x00\x00\x00\x00\x00\x47\xa6\x60\xbc\x00\x00\x4f\x47\x4c\x78\x46\x80\x49\xf3\x4f\xf3\x60\xbb\x00\x00\x00\x00\x00\x00\x47\x9f\x48\x77\x4c\xf4\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4a\xf0\x55\x92\x00\x00\x60\xc0\x51\x48\x47\x68\x00\x00\x60\xc1\x4e\x59\x00\x00\x60\xc3\x00\x00\x00\x00\x00\x00\x4c\xe4\x4c\xbd\x00\x00\x00\x00\x00\x00\x00\x00\x60\xc2\x00\x00\x00\x00\x49\xf4\x55\x63\x46\xb9\x60\xbe\x60\xc5\x00\x00\x60\xc4\x00\x00\x00\x00\x60\xbf\x46\x88\x00\x00\x60\xc9\x60\xcc\x46\xbf\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x60\xc8\x00\x00\x00\x00\x00\x00\x00\x00\x60\xd0\x60\xc6\x00\x00\x50\x6d\x00\x00\x00\x00\x4c\xe7\x4e\xf7\x60\xcd\x00\x00\x00\x00\x47\x57\x00\x00\x60\xca\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x60\xcb\x00\x00\x00\x00\x48\x81\x52\x68\x60\xc7\x00\x00\x4a\xe4\x4a\xf3\x00\x00\x00\x00\x49\xf6\x00\x00\x00\x00\x00\x00\x54\xed\x00\x00\x00\x00", /* 7d80 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x60\xcf\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x53\x74\x00\x00\x00\x00\x00\x00\x60\xce\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4a\x4a\x47\xcb\x54\xeb\x50\x70\x00\x00\x00\x00\x60\xdc\x60\xda\x00\x00\x60\xd8\x60\xd2\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x60\xd7\x51\xa3\x48\x80\x60\xd1\x60\xd9\x60\xdd\x48\xcb\x4a\x53\x00\x00\x4d\xc9\x60\xd3\x00\x00\x60\xd4\x60\xdb\x00\x00\x54\xd3\x54\xa6\x00\x00\x60\xd6\x49\xdc\x48\x9d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x60\xd5\x00\x00\x00\x00\x4b\x97\x53\x7d\x00\x00\x00\x00\x00\x00\x47\x93\x00\x00\x48\xa5\x4a\x9b\x00\x00\x00\x00\x60\xde\x60\xe1\x00\x00\x60\xdf\x00\x00\x46\x87\x00\x00\x60\xe8\x60\xe0\x60\xe3\x00\x00\x4a\x80\x60\xe7\x00\x00\x00\x00\x60\xe2\x00\x00\x00\x00\x00\x00\x48\x4e\x4c\xfc\x00\x00\x00\x00\x55\x6b\x00\x00\x00\x00\x4e\x9a\x00\x00\x00\x00\x60\xe6\x00\x00\x48\x60\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x60\xe4\x00\x00\x00\x00\x00\x00\x00\x00", /* 7e00 */ "\x00\x00\x4b\xaa\x00\x00\x00\x00\x48\x59\x60\xe9\x00\x00\x00\x00\x00\x00\x60\xee\x60\xea\x60\xe5\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x60\xec\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x52\xe6\x00\x00\x00\x00\x4f\x6b\x60\xed\x00\x00\x60\xeb\x5b\xcc\x55\xa8\x00\x00\x00\x00\x4e\x93\x00\x00\x00\x00\x00\x00\x00\x00\x49\xe4\x00\x00\x00\x00\x49\xf7\x00\x00\x00\x00\x60\xf2\x60\xf9\x00\x00\x00\x00\x60\xf4\x00\x00\x60\xf8\x00\x00\x60\xf6\x60\xef\x60\xf5\x00\x00\x60\xf3\x48\x66\x00\x00\x00\x00\x47\x59\x00\x00\x60\xf7\x00\x00\x00\x00\x60\xf0\x00\x00\x60\xf1\x00\x00\x48\x68\x53\x73\x00\x00\x52\xda\x00\x00\x00\x00\x00\x00\x00\x00\x60\xfd\x00\x00\x48\x9a\x51\xd4\x60\xfb\x00\x00\x00\x00\x60\xfe\x61\x41\x00\x00\x00\x00\x60\xfa\x60\xfc\x00\x00\x00\x00\x52\xda\x00\x00\x00\x00\x00\x00\x00\x00\x60\xf1\x61\x42\x00\x00\x61\x45\x61\x44\x53\x73\x00\x00\x4d\x9a\x00\x00\x00\x00\x4b\x69\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x61\x43\x00\x00\x61\x47\x61\x46\x61\x48\x00\x00\x61\x4a", /* 7e80 */ "\x00\x00\x00\x00\x55\xeb\x61\x4b\x00\x00\x00\x00\x00\x00\x00\x00\x52\x78\x61\x4c\x51\xbf\x00\x00\x61\x4e\x00\x00\x61\x4d\x55\xfa\x52\x73\x00\x00\x61\x4f\x61\x50\x61\x51\x00\x00\x61\x52\x00\x00\x00\x00\x00\x00\x00\x00\x61\x53\x53\x9c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 7f00 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x50\x84\x00\x00\x61\x54\x00\x00\x61\x55\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x61\x56\x00\x00\x61\x57\x00\x00\x00\x00\x00\x00\x00\x00\x61\x58\x54\xcb\x61\x59\x00\x00\x51\x6e\x61\x5a\x00\x00\x00\x00\x61\x5c\x61\x5b\x00\x00\x00\x00\x61\x5d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x61\x5e\x61\x5f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x61\x61\x61\x60\x61\x62\x4c\x4e\x55\xef\x00\x00\x00\x00\x46\x8c\x00\x00\x4f\x82\x00\x00\x4c\x99\x00\x00\x00\x00\x55\x79\x00\x00\x55\xa5\x61\x63\x5a\xa5\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 7f80 */ "\x00\x00\x00\x00\x61\x64\x61\x66\x00\x00\x4d\xfa\x61\x65\x61\x67\x61\x68\x00\x00\x4a\xd1\x00\x00\x61\x69\x00\x00\x45\x7d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x61\x6a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x61\x6d\x00\x00\x00\x00\x61\x6c\x61\x6b\x00\x00\x00\x00\x61\x6e\x00\x00\x61\x6f\x47\xb1\x00\x00\x00\x00\x00\x00\x55\x96\x45\x98\x00\x00\x00\x00\x00\x00\x00\x00\x61\x71\x61\x70\x00\x00\x00\x00\x61\x72\x00\x00\x00\x00\x00\x00\x61\x74\x00\x00\x61\x75\x61\x73\x00\x00\x00\x00\x00\x00\x47\x8f\x00\x00\x00\x00\x00\x00\x4f\xfb\x00\x00\x00\x00\x00\x00\x61\x78\x61\x79\x00\x00\x00\x00\x00\x00\x61\x7a\x00\x00\x4d\x9c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4a\x69\x00\x00\x54\xf9\x61\x7b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4f\x69\x61\x7c\x00\x00\x00\x00\x00\x00\x00\x00\x61\x7d\x00\x00\x00\x00\x61\x7e\x00\x00\x55\x8b\x00\x00\x00\x00\x00\x00\x00\x00\x54\xb6\x00\x00\x00\x00\x61\x7f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x61\x80\x00\x00\x51\xf6\x4d\xb5\x00\x00\x00\x00\x00\x00", /* 8000 */ "\x52\xa0\x49\x85\x00\x00\x47\x60\x61\x81\x46\x70\x53\xdc\x00\x00\x00\x00\x00\x00\x00\x00\x61\x82\x51\xe6\x00\x00\x00\x00\x00\x00\x49\x8e\x00\x00\x61\x83\x00\x00\x00\x00\x49\x9a\x00\x00\x4f\xec\x54\xe4\x61\x84\x00\x00\x00\x00\x61\x85\x00\x00\x00\x00\x00\x00\x00\x00\x61\x86\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x61\x87\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4c\xab\x00\x00\x00\x00\x4e\x99\x00\x00\x00\x00\x00\x00\x00\x00\x61\x89\x00\x00\x55\xb8\x00\x00\x61\x88\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x61\x8b\x00\x00\x00\x00\x00\x00\x61\x8a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x61\x8c\x00\x00\x00\x00\x00\x00\x4b\xb5\x00\x00\x61\x8d\x00\x00\x54\x79\x00\x00\x00\x00\x00\x00\x48\xbb\x61\x8e\x00\x00\x4b\x89\x61\x8f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x61\x90\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x53\xca\x61\x93\x00\x00\x61\x92\x61\x91\x4d\xa8\x00\x00\x61\x94\x48\xd7\x00\x00\x61\x95\x00\x00\x00\x00\x00\x00\x61\x96\x53\xe4\x61\x97", /* 8080 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x61\x98\x61\x99\x53\xb6\x4b\x41\x00\x00\x4a\x42\x00\x00\x55\x7f\x4e\x50\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x61\x9a\x00\x00\x00\x00\x52\x67\x00\x00\x52\x6a\x00\x00\x61\x9b\x52\x92\x00\x00\x4c\x8c\x00\x00\x00\x00\x00\x00\x4c\xc5\x53\x82\x00\x00\x00\x00\x49\x7b\x00\x00\x00\x00\x00\x00\x4b\x79\x4c\xfb\x00\x00\x61\x9e\x61\x9c\x00\x00\x50\xeb\x00\x00\x52\xd5\x48\xac\x00\x00\x54\x51\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x50\x4e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4d\xf6\x61\xa3\x00\x00\x4e\x9b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4a\xb2\x00\x00\x52\x63\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x52\x88\x00\x00\x00\x00\x61\xa1\x61\xa4\x61\x9f\x00\x00\x61\xa2\x50\xb6\x00\x00\x00\x00\x4d\x63\x00\x00\x00\x00\x4e\xe9\x61\xa0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x61\xa6\x00\x00\x61\xa7\x00\x00\x00\x00\x4e\xab\x00\x00\x00\x00\x00\x00\x4b\xe3\x00\x00\x00\x00\x00\x00\x61\xb0\x47\x4f\x00\x00\x00\x00", /* 8100 */ "\x00\x00\x00\x00\x48\x74\x00\x00\x00\x00\x50\x51\x55\xec\x47\xe3\x50\x79\x61\xa5\x53\x5e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4d\x5c\x61\xa8\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x61\xa9\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4c\x96\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x61\xaa\x00\x00\x4a\xb4\x00\x00\x4c\xb3\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x55\xe9\x00\x00\x00\x00\x00\x00\x00\x00\x61\xad\x00\x00\x00\x00\x61\xb0\x00\x00\x00\x00\x00\x00\x00\x00\x61\xac\x00\x00\x00\x00\x00\x00\x00\x00\x61\xab\x00\x00\x00\x00\x52\xc4\x00\x00\x4d\x62\x61\xaf\x00\x00\x61\xae\x52\x47\x4c\xaf\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x61\xb4\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x61\xb3\x61\xb5\x00\x00\x00\x00\x00\x00\x00\x00\x51\xce\x00\x00\x00\x00\x61\xb2\x00\x00\x4b\xa4\x61\xb1\x00\x00\x00\x00\x61\xb6\x00\x00\x00\x00\x00\x00\x4d\xb6\x4c\xa0\x52\x6f\x00\x00\x00\x00\x00\x00\x00\x00\x52\x9a", /* 8180 */ "\x61\xba\x00\x00\x61\xbb\x61\xb7\x00\x00\x00\x00\x00\x00\x00\x00\x61\xb8\x00\x00\x61\xb9\x00\x00\x00\x00\x00\x00\x00\x00\x51\xd8\x00\x00\x00\x00\x00\x00\x61\xbf\x00\x00\x61\xbd\x00\x00\x00\x00\x00\x00\x00\x00\x51\x91\x00\x00\x4d\x8a\x50\x60\x00\x00\x00\x00\x61\xbc\x00\x00\x00\x00\x61\xbe\x61\xc1\x00\x00\x00\x00\x00\x00\x4e\xf6\x61\xc2\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x61\xc4\x00\x00\x00\x00\x50\x76\x00\x00\x61\xc0\x00\x00\x00\x00\x61\xc3\x00\x00\x61\xca\x00\x00\x00\x00\x61\xc7\x61\xc6\x53\x5f\x61\xc8\x00\x00\x61\xc9\x00\x00\x00\x00\x00\x00\x54\x74\x00\x00\x61\xc5\x61\xcb\x00\x00\x00\x00\x00\x00\x61\xcc\x00\x00\x00\x00\x00\x00\x61\xcd\x00\x00\x4d\xbd\x00\x00\x00\x00\x00\x00\x00\x00\x61\xce\x61\xcf\x61\xd0\x00\x00\x00\x00\x00\x00\x00\x00\x61\xd1\x61\xd2\x00\x00\x00\x00\x4a\x47\x00\x00\x53\x8a\x00\x00\x51\x73\x4c\xd0\x00\x00\x45\xc3\x00\x00\x00\x00\x4d\xb3\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4a\x48\x4c\x6a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x61\xd3\x61\xd4\x4a\x89\x00\x00\x61\xd5\x00\x00", /* 8200 */ "\x00\x00\x61\xd6\x61\xd7\x00\x00\x00\x00\x61\xd8\x00\x00\x53\x58\x46\x6a\x57\x78\x62\xba\x00\x00\x50\x94\x61\xd9\x4c\x58\x00\x00\x61\xda\x00\x00\x61\xdb\x00\x00\x00\x00\x00\x00\x61\xdc\x4e\x5b\x4c\xaa\x00\x00\x00\x00\x4f\xc1\x4f\xb8\x00\x00\x4a\x63\x4b\xb8\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x61\xdd\x48\x9f\x61\xde\x49\x56\x00\x00\x61\xdf\x00\x00\x00\x00\x00\x00\x00\x00\x61\xe1\x00\x00\x54\xdb\x4b\x87\x53\xac\x61\xe0\x46\x7b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x61\xe2\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4d\xfc\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x54\xae\x61\xe3\x61\xe4\x00\x00\x00\x00\x61\xe5\x00\x00\x61\xe6\x00\x00\x00\x00\x61\xe8\x00\x00\x61\xe7\x00\x00\x4c\x4a\x00\x00\x61\xe9\x00\x00\x61\xea\x61\xeb\x00\x00\x00\x00\x55\xb4\x45\xc4\x00\x00\x61\xec\x47\xc3\x00\x00\x00\x00\x00\x00\x4d\x54\x61\xed\x53\xc5\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x61\xee\x00\x00", /* 8280 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x51\x9a\x00\x00\x61\xef\x00\x00\x00\x00\x00\x00\x00\x00\x61\xf0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4e\xbd\x00\x00\x00\x00\x00\x00\x49\x72\x00\x00\x61\xf2\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4f\x7b\x4a\xdd\x00\x00\x00\x00\x00\x00\x00\x00\x61\xf1\x61\xf4\x54\x42\x00\x00\x4f\xe5\x00\x00\x46\xd9\x00\x00\x46\x83\x00\x00\x00\x00\x00\x00\x00\x00\x49\x53\x4d\xd0\x00\x00\x61\xf3\x00\x00\x4e\xba\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4e\x5d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x50\x4b\x61\xf9\x55\x59\x52\xd7\x00\x00\x00\x00\x4a\xb8\x00\x00\x62\x46\x00\x00\x53\x77\x62\x43\x00\x00\x62\x41\x61\xf7\x00\x00\x61\xf5\x00\x00\x61\xf6\x00\x00\x46\xd6\x4a\x5f\x54\xb0\x00\x00\x00\x00\x00\x00\x4d\x5a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x45\xee\x00\x00\x61\xfb\x61\xfa\x00\x00\x00\x00\x00\x00\x00\x00\x61\xfe\x62\x44\x61\xfd\x00\x00\x00\x00\x00\x00\x00\x00", /* 8300 */ "\x00\x00\x61\xf8\x46\x46\x61\xfc\x54\x7a\x4b\xd3\x62\x42\x00\x00\x00\x00\x62\x45\x00\x00\x00\x00\x00\x00\x00\x00\x4e\xc9\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x62\x4a\x53\xf6\x62\x52\x00\x00\x00\x00\x00\x00\x50\xe2\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x62\x58\x00\x00\x00\x00\x00\x00\x00\x00\x47\x4c\x00\x00\x00\x00\x62\x51\x00\x00\x00\x00\x00\x00\x62\x50\x00\x00\x62\x4b\x54\x7b\x00\x00\x62\x49\x62\x47\x49\x77\x00\x00\x4d\xf7\x62\x4d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x62\x4c\x00\x00\x00\x00\x00\x00\x00\x00\x62\x4f\x53\xb3\x00\x00\x00\x00\x48\x42\x53\xb3\x00\x00\x00\x00\x00\x00\x00\x00\x51\x5f\x62\x4e\x00\x00\x46\xdc\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4b\x62\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x62\x48\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x62\x5f\x00\x00\x62\x5a\x00\x00\x4b\xa1\x00\x00\x00\x00\x00\x00\x49\xe0\x62\x5d\x00\x00\x00\x00\x62\x5b", /* 8380 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x62\x62\x00\x00\x54\x86\x00\x00\x62\x63\x62\x5c\x00\x00\x00\x00\x00\x00\x62\x59\x00\x00\x00\x00\x00\x00\x00\x00\x62\x60\x00\x00\x00\x00\x62\x57\x00\x00\x00\x00\x00\x00\x62\x53\x00\x00\x00\x00\x00\x00\x51\xee\x62\x55\x62\x61\x00\x00\x62\x56\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x62\x64\x00\x00\x62\x54\x54\xb3\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x52\xc9\x00\x00\x00\x00\x00\x00\x62\x5e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x62\x75\x00\x00\x00\x00\x00\x00\x62\x6e\x00\x00\x00\x00\x00\x00\x47\x53\x00\x00\x62\x67\x00\x00\x00\x00\x46\xd7\x00\x00\x4c\x73\x00\x00\x62\x68\x00\x00\x00\x00\x00\x00\x00\x00\x4c\x51\x00\x00\x00\x00\x51\x80\x00\x00\x62\x6c\x00\x00\x00\x00\x00\x00\x4b\xa8\x00\x00\x00\x00\x53\xd4\x62\x70\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x51\x6a\x00\x00\x54\xe9\x00\x00\x00\x00\x00\x00\x4b\x6c\x51\x6d\x48\xcc\x62\x71\x00\x00\x62\x65\x00\x00\x62\x74\x62\x69\x00\x00\x00\x00\x00\x00\x62\x76\x00\x00\x62\x6a\x00\x00\x00\x00", /* 8400 */ "\x00\x00\x00\x00\x00\x00\x62\x6b\x54\xf7\x00\x00\x00\x00\x62\x6f\x00\x00\x00\x00\x52\xc9\x62\x6d\x50\xdb\x62\x72\x54\x82\x00\x00\x00\x00\x00\x00\x00\x00\x62\x66\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x62\x73\x00\x00\x54\xd8\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x49\x4a\x62\x77\x00\x00\x4b\x75\x00\x00\x00\x00\x00\x00\x00\x00\x4f\x7c\x00\x00\x00\x00\x00\x00\x62\x85\x00\x00\x00\x00\x62\x84\x00\x00\x00\x00\x00\x00\x62\x79\x47\xf2\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x62\x82\x00\x00\x62\x7e\x45\xf9\x00\x00\x00\x00\x00\x00\x00\x00\x55\x9f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4a\x59\x00\x00\x00\x00\x00\x00\x48\xdf\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x55\x47\x62\x78\x50\x71\x00\x00\x00\x00\x4e\x72\x00\x00\x00\x00\x62\x81\x00\x00\x62\x7c\x4f\x79\x51\x6c\x62\x7f\x62\x83\x00\x00\x54\x4e\x00\x00\x00\x00\x00\x00\x50\xd9\x00\x00\x62\x7b\x00\x00\x62\x7d\x50\xe0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 8480 */ "\x00\x00\x00\x00\x62\x80\x00\x00\x62\x7a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x53\xf8\x00\x00\x00\x00\x00\x00\x00\x00\x4f\x93\x00\x00\x00\x00\x00\x00\x4f\xe3\x00\x00\x00\x00\x00\x00\x00\x00\x50\x95\x00\x00\x00\x00\x52\x59\x00\x00\x00\x00\x62\x89\x00\x00\x62\x93\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x62\x90\x00\x00\x00\x00\x00\x00\x00\x00\x49\xb2\x00\x00\x62\x8a\x00\x00\x00\x00\x00\x00\x4a\xba\x62\x87\x00\x00\x62\x8c\x50\xb9\x00\x00\x00\x00\x62\x88\x00\x00\x62\x8f\x00\x00\x00\x00\x4c\x94\x00\x00\x62\x91\x00\x00\x00\x00\x50\x83\x62\x86\x4f\x6d\x00\x00\x62\x8b\x00\x00\x00\x00\x62\x8e\x4f\x9a\x00\x00\x00\x00\x00\x00\x00\x00\x62\x92\x00\x00\x00\x00\x62\x94\x62\x8d\x00\x00\x52\x7b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x50\x88\x00\x00\x4b\xf4\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x62\x96\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x51\x8b\x00\x00\x00\x00\x62\x95", /* 8500 */ "\x52\xbd\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x62\x9d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x55\x6c\x00\x00\x55\x7b\x62\x9c\x62\x9b\x00\x00\x62\x97\x62\x98\x00\x00\x54\x9a\x00\x00\x00\x00\x00\x00\x00\x00\x62\x9a\x00\x00\x54\xa8\x00\x00\x53\xf8\x00\x00\x00\x00\x4f\xa1\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x62\x99\x4e\x8b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x46\x5e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x54\xd1\x00\x00\x00\x00\x62\xa0\x62\xa5\x00\x00\x52\xf7\x00\x00\x00\x00\x00\x00\x00\x00\x62\xa4\x53\xa8\x62\xa6\x62\xa7\x00\x00\x00\x00\x55\x65\x00\x00\x00\x00\x00\x00\x00\x00\x62\x9e\x00\x00\x62\xa9\x00\x00\x54\x91\x62\xa3\x62\xa1\x62\x9f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x62\xa2\x00\x00\x00\x00\x00\x00\x00\x00\x50\xde\x54\xf0\x51\xd3\x62\xa8\x00\x00\x62\xb0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x62\xb6\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x62\xb7\x00\x00", /* 8580 */ "\x62\xaa\x00\x00\x00\x00\x00\x00\x4a\x92\x00\x00\x00\x00\x62\xb4\x62\xac\x00\x00\x62\xae\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x62\xb8\x62\xad\x00\x00\x00\x00\x62\xb1\x00\x00\x00\x00\x4c\xec\x00\x00\x51\xad\x00\x00\x62\xb2\x62\xb5\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x62\xab\x00\x00\x4f\xbf\x00\x00\x62\xaf\x4c\xf1\x54\x5a\x49\x98\x46\xe1\x00\x00\x62\xb3\x53\xf9\x62\xbb\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x62\xbf\x62\xbd\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4f\xbb\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x62\xbc\x00\x00\x00\x00\x00\x00\x4e\xed\x00\x00\x62\xbe\x62\xc0\x00\x00\x00\x00\x00\x00\x00\x00\x62\xc1\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x62\xc4\x62\xc2\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x45\x68\x62\xc3\x00\x00\x00\x00\x00\x00\x4f\xf6\x4c\x95\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x55\xe2\x00\x00\x62\xc5\x53\xed\x50\x5f\x00\x00\x00\x00\x62\xc9\x00\x00", /* 8600 */ "\x00\x00\x00\x00\x54\x96\x00\x00\x00\x00\x00\x00\x4e\xda\x4c\xbf\x00\x00\x00\x00\x62\xc6\x62\xc8\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x62\xc7\x00\x00\x00\x00\x5c\xbd\x5c\xbe\x00\x00\x00\x00\x62\xcb\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x62\xca\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4c\xa6\x00\x00\x5f\x82\x62\xcc\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x62\xcd\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x62\xcf\x4a\xab\x00\x00\x52\x60\x00\x00\x00\x00\x00\x00\x52\xfb\x62\xd1\x00\x00\x00\x00\x00\x00\x00\x00\x4f\x72\x00\x00\x52\x50\x00\x00\x55\x88\x62\xd2\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x62\xd3\x00\x00\x00\x00\x00\x00\x4b\xcb\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x62\xd4\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x51\xb6\x00\x00\x51\x44\x00\x00\x00\x00\x00\x00\x00\x00", /* 8680 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4f\xaa\x62\xd8\x62\xda\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x62\xd5\x00\x00\x4f\x5d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x62\xd6\x55\xa2\x00\x00\x00\x00\x00\x00\x00\x00\x62\xd7\x62\xd9\x62\xe3\x00\x00\x00\x00\x00\x00\x62\xdc\x62\xdf\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x62\xdb\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x62\xdd\x00\x00\x62\xde\x4f\xea\x00\x00\x62\xe0\x00\x00\x53\xd8\x00\x00\x4d\xf9\x62\xe1\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x62\xe4\x00\x00\x00\x00\x00\x00\x00\x00\x55\xbb\x00\x00\x62\xe9\x00\x00\x00\x00\x62\xe5\x62\xe8\x00\x00\x00\x00\x00\x00\x00\x00\x55\xc2\x00\x00\x00\x00\x00\x00\x00\x00\x62\xe6\x00\x00\x00\x00\x62\xe7\x4e\x66\x53\xa5\x4f\x74\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x52\x4e\x62\xf3\x00\x00\x62\xef\x00\x00\x00\x00\x55\x99\x00\x00", /* 8700 */ "\x62\xed\x00\x00\x4e\xcd\x62\xee\x00\x00\x00\x00\x62\xeb\x00\x00\x62\xec\x62\xf1\x62\xf4\x00\x00\x00\x00\x62\xf2\x00\x00\x00\x00\x00\x00\x62\xf0\x62\xea\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x54\xdc\x00\x00\x62\xfa\x00\x00\x53\xa1\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x62\xf8\x00\x00\x00\x00\x00\x00\x62\xf9\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x62\xf5\x00\x00\x00\x00\x52\x6d\x00\x00\x00\x00\x00\x00\x62\xf7\x00\x00\x00\x00\x00\x00\x62\xf6\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x53\xe8\x00\x00\x52\xa1\x62\xfd\x00\x00\x62\xfe\x00\x00\x00\x00\x00\x00\x00\x00\x63\x49\x00\x00\x53\x47\x00\x00\x63\x42\x00\x00\x63\x48\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x62\xfb\x63\x46\x00\x00\x00\x00\x63\x4a\x00\x00\x00\x00\x51\xc3\x00\x00\x63\x43\x00\x00\x63\x45\x00\x00\x00\x00\x00\x00\x63\x47\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x63\x41\x00\x00\x4e\x6e\x00\x00\x62\xfc\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x63\x4b", /* 8780 */ "\x00\x00\x00\x00\x63\x44\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x48\xc2\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x63\x4e\x00\x00\x00\x00\x63\x4c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x63\x55\x00\x00\x00\x00\x00\x00\x63\x4f\x00\x00\x00\x00\x00\x00\x63\x57\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x51\xd6\x63\x59\x00\x00\x63\x51\x00\x00\x00\x00\x63\x52\x00\x00\x00\x00\x00\x00\x63\x56\x00\x00\x63\x4d\x54\xf4\x00\x00\x00\x00\x00\x00\x63\x50\x00\x00\x00\x00\x00\x00\x00\x00\x63\x53\x00\x00\x63\x58\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x63\x5c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x53\xe8\x00\x00\x00\x00\x63\x5a\x00\x00\x00\x00\x63\x5b\x00\x00\x00\x00\x00\x00\x63\x63\x63\x64\x00\x00\x50\x90\x00\x00\x51\xc6\x00\x00\x00\x00\x63\x62\x00\x00", /* 8800 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x55\xbd\x00\x00\x63\x5e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x63\x61\x63\x5d\x63\x5f\x00\x00\x63\x65\x00\x00\x00\x00\x00\x00\x63\x66\x63\x60\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x52\xa1\x00\x00\x63\x68\x63\x67\x53\x51\x00\x00\x00\x00\x00\x00\x63\x69\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x63\x6a\x00\x00\x00\x00\x00\x00\x00\x00\x63\x6b\x00\x00\x00\x00\x63\x6c\x00\x00\x63\x6d\x00\x00\x00\x00\x00\x00\x00\x00\x4b\x43\x00\x00\x63\x6e\x00\x00\x63\x6f\x00\x00\x4b\x88\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x45\xa4\x63\x70\x00\x00\x00\x00\x00\x00\x00\x00\x63\x71\x48\x6c\x00\x00\x00\x00\x00\x00\x4b\xa5\x00\x00\x63\x72\x00\x00\x47\x80\x00\x00\x4d\xa5\x63\x73\x00\x00\x00\x00\x4b\xed\x63\x74\x4a\xea\x00\x00\x00\x00\x00\x00\x00\x00\x46\xc0\x00\x00\x00\x00\x63\x75\x00\x00\x00\x00\x00\x00\x00\x00\x4f\x54\x00\x00\x63\x7a\x00\x00\x00\x00\x63\x78\x00\x00\x52\xe9\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x63\x79\x63\x77\x4a\xa7", /* 8880 */ "\x00\x00\x63\x76\x63\x7b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4f\x6a\x00\x00\x00\x00\x4a\x54\x00\x00\x63\x82\x00\x00\x00\x00\x00\x00\x00\x00\x63\x7e\x00\x00\x00\x00\x00\x00\x4a\x57\x63\x7d\x00\x00\x63\x80\x00\x00\x00\x00\x00\x00\x00\x00\x63\x7c\x00\x00\x00\x00\x00\x00\x63\x81\x00\x00\x63\x83\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4b\x8d\x00\x00\x00\x00\x63\x7f\x00\x00\x54\xc5\x63\x86\x00\x00\x00\x00\x4f\x5a\x63\x85\x00\x00\x54\x48\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x63\x84\x00\x00\x49\xbd\x4f\x60\x63\x87\x63\x88\x48\x98\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x49\xa4\x00\x00\x00\x00\x00\x00\x00\x00\x63\x89\x46\xf8\x00\x00\x00\x00\x63\x8a\x63\x8b\x00\x00\x00\x00\x49\x6a\x63\x8c\x00\x00\x4f\x8a\x00\x00\x54\x4d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x63\x91\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x63\x92\x4f\xa8\x53\x49\x63\x90\x00\x00\x00\x00\x4f\x43\x63\x8d\x00\x00\x00\x00\x63\x8f\x45\x7b\x4c\x8d\x00\x00", /* 8900 */ "\x00\x00\x00\x00\x63\x8e\x00\x00\x63\x93\x00\x00\x00\x00\x4b\x51\x00\x00\x00\x00\x63\x97\x00\x00\x63\x94\x00\x00\x00\x00\x00\x00\x54\x5e\x00\x00\x51\xba\x63\x98\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x51\xda\x63\x96\x63\x99\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x63\x9a\x00\x00\x00\x00\x00\x00\x00\x00\x63\x95\x63\x9b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x63\x9e\x00\x00\x63\xa0\x00\x00\x00\x00\x63\x9d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x63\x9c\x00\x00\x63\x9f\x50\x6b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x63\xa2\x63\xa1\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x54\x6c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x63\xa4\x54\xaf\x63\xa3\x00\x00\x00\x00\x00\x00\x63\xa7\x00\x00\x63\xa5\x00\x00\x00\x00\x00\x00\x63\xa6\x00\x00\x00\x00\x63\xa8\x00\x00\x63\xa9\x00\x00\x00\x00\x4d\xdf\x00\x00\x63\xaa\x00\x00\x00\x00\x63\xab\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x63\xac\x45\x58", /* 8980 */ "\x00\x00\x46\x55\x00\x00\x63\xad\x00\x00\x00\x00\x4d\xf2\x4b\xfa\x63\xae\x00\x00\x63\xaf\x45\xbb\x00\x00\x00\x00\x00\x00\x46\xfb\x00\x00\x00\x00\x00\x00\x63\xb0\x00\x00\x00\x00\x4a\x50\x53\xeb\x63\xb1\x00\x00\x4a\x4c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x63\xb2\x00\x00\x00\x00\x00\x00\x00\x00\x63\xb4\x4e\xd0\x00\x00\x63\xb3\x48\x85\x00\x00\x63\xb5\x00\x00\x00\x00\x63\xb6\x00\x00\x00\x00\x63\xb7\x48\x7e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x63\xb8\x00\x00\x00\x00\x63\xba\x00\x00\x63\xb9\x63\xbb\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x47\x7d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x63\xbc\x00\x00\x53\x60\x63\xbd\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x47\xb7\x00\x00\x00\x00\x4c\xd1\x63\xbe\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x63\xbf\x00\x00\x00\x00\x00\x00\x63\xc0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 8a00 */ "\x47\x9a\x00\x00\x4f\xc4\x63\xc1\x00\x00\x00\x00\x00\x00\x00\x00\x45\xc9\x00\x00\x50\xf2\x00\x00\x63\xc4\x00\x00\x49\xd2\x00\x00\x63\xc3\x00\x00\x63\xc5\x4b\xc8\x00\x00\x00\x00\x63\xc2\x4a\xb6\x47\x94\x00\x00\x00\x00\x63\xc6\x00\x00\x63\xc7\x00\x00\x50\xef\x00\x00\x00\x00\x00\x00\x54\xcc\x00\x00\x63\xc8\x00\x00\x00\x00\x00\x00\x00\x00\x4a\x71\x00\x00\x00\x00\x45\xe2\x00\x00\x00\x00\x00\x00\x4a\x9a\x00\x00\x4b\xad\x4c\xdf\x00\x00\x63\xc9\x63\xcb\x00\x00\x00\x00\x4d\x68\x4f\x66\x49\xba\x00\x00\x00\x00\x00\x00\x00\x00\x63\xca\x00\x00\x00\x00\x00\x00\x00\x00\x63\xce\x00\x00\x63\xcf\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x51\x76\x55\xe3\x63\xcd\x00\x00\x4f\x88\x49\xfd\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x63\xcc\x00\x00\x00\x00\x4e\x90\x00\x00\x51\xc1\x00\x00\x63\xd3\x54\xfb\x00\x00\x00\x00\x49\x48\x00\x00\x00\x00\x4c\xb0\x00\x00\x50\xd3\x63\xd2\x63\xd1\x51\x8e\x00\x00\x4b\x5f\x47\x50\x4d\x8d\x4d\xe7\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x63\xd4\x00\x00\x00\x00\x63\xd0\x00\x00\x00\x00\x00\x00", /* 8a80 */ "\x00\x00\x00\x00\x63\xd6\x00\x00\x63\xd7\x63\xd5\x00\x00\x4e\xb4\x00\x00\x4d\x8c\x00\x00\x00\x00\x4b\x76\x4a\x7e\x00\x00\x00\x00\x00\x00\x63\xda\x00\x00\x4f\xa0\x00\x00\x4f\xa2\x00\x00\x00\x00\x4a\xcb\x00\x00\x63\xdd\x00\x00\x00\x00\x00\x00\x48\xe7\x00\x00\x46\xfd\x63\xd9\x00\x00\x63\xde\x4d\x91\x63\xdb\x63\xdc\x63\xdf\x63\xd8\x00\x00\x00\x00\x00\x00\x49\x52\x4a\x4f\x00\x00\x00\x00\x4b\x83\x00\x00\x49\xd6\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x55\xf2\x00\x00\x00\x00\x52\x65\x00\x00\x63\xe1\x46\x89\x00\x00\x00\x00\x63\xe3\x00\x00\x50\xb2\x00\x00\x00\x00\x49\x63\x00\x00\x00\x00\x00\x00\x4a\xe8\x63\xe0\x63\xe2\x00\x00\x4b\xc1\x00\x00\x00\x00\x51\x81\x00\x00\x00\x00\x00\x00\x48\xf3\x00\x00\x00\x00\x00\x00\x63\xe4\x63\xf2\x55\x70\x00\x00\x63\xf1\x63\xed\x63\xea\x63\xec\x63\xeb\x00\x00\x63\xe7\x00\x00\x52\x46\x63\xe6\x00\x00\x00\x00\x00\x00\x4e\x96\x00\x00\x4e\x9c\x4f\x9c\x00\x00\x00\x00\x63\xe8\x00\x00\x63\xe5\x00\x00\x00\x00\x63\xef\x63\xf0\x47\xe2\x00\x00\x55\xab\x00\x00\x00\x00\x00\x00\x4f\xe1\x00\x00", /* 8b00 */ "\x4f\x4d\x54\xe5\x55\x73\x00\x00\x4f\xe2\x00\x00\x00\x00\x63\xf4\x00\x00\x00\x00\x00\x00\x00\x00\x63\xf3\x00\x00\x52\xf9\x00\x00\x63\xf7\x00\x00\x00\x00\x00\x00\x63\xe9\x00\x00\x63\xf6\x63\xf8\x00\x00\x49\x7c\x63\xf5\x4a\x6e\x00\x00\x4d\xbb\x00\x00\x00\x00\x63\xf9\x4d\x7d\x00\x00\x00\x00\x00\x00\x00\x00\x63\xfd\x00\x00\x53\x81\x00\x00\x00\x00\x63\xfe\x55\xa1\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x63\xfa\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4d\x87\x00\x00\x00\x00\x00\x00\x00\x00\x64\x41\x00\x00\x00\x00\x63\xfb\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x64\x46\x00\x00\x00\x00\x64\x42\x00\x00\x64\x44\x64\x43\x00\x00\x00\x00\x00\x00\x64\x45\x00\x00\x00\x00\x64\x47\x00\x00\x4a\x75\x00\x00\x64\x49\x64\x48\x4e\x4f\x00\x00\x00\x00\x64\x4c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4a\xd7\x00\x00\x00\x00\x00\x00\x00\x00\x64\x4b\x64\x4d\x00\x00\x00\x00\x64\x4e\x47\x81\x61\x76\x4b\x7b\x00\x00\x64\x4a\x00\x00\x00\x00\x49\xdb\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x64\x4f\x00\x00\x64\x50", /* 8b80 */ "\x64\x51\x00\x00\x00\x00\x51\x6b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5b\x88\x00\x00\x64\x52\x00\x00\x64\x53\x00\x00\x53\xfe\x00\x00\x64\x55\x64\x56\x00\x00\x00\x00\x64\x57\x00\x00\x00\x00\x64\x54\x64\x58\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 8c00 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x45\x81\x00\x00\x00\x00\x64\x59\x00\x00\x00\x00\x00\x00\x00\x00\x64\x5b\x00\x00\x64\x5a\x00\x00\x00\x00\x00\x00\x00\x00\x4a\x99\x00\x00\x64\x5c\x00\x00\x46\x48\x00\x00\x64\x5d\x00\x00\x64\x5e\x00\x00\x64\x5f\x00\x00\x00\x00\x00\x00\x00\x00\x64\x60\x00\x00\x00\x00\x00\x00\x00\x00\x4c\xcf\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x49\x94\x64\x61\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4c\x68\x53\x55\x64\x62\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x64\x63\x55\x93\x64\x64\x00\x00\x64\x65\x00\x00\x00\x00\x00\x00", /* 8c80 */ "\x00\x00\x00\x00\x64\x66\x00\x00\x00\x00\x64\x68\x00\x00\x00\x00\x00\x00\x64\x67\x64\x69\x00\x00\x50\x64\x64\x6a\x64\x6b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x64\x6d\x00\x00\x00\x00\x00\x00\x64\x6c\x00\x00\x00\x00\x00\x00\x00\x00\x49\xea\x46\xb6\x00\x00\x49\xc8\x49\xaf\x4a\xf1\x00\x00\x00\x00\x00\x00\x00\x00\x4d\xa3\x4a\xeb\x4a\x5d\x64\x70\x49\xa1\x4b\xd2\x64\x6f\x64\x71\x4c\x62\x4d\xef\x00\x00\x64\x73\x64\x74\x48\x7f\x00\x00\x64\x76\x49\x74\x4a\xf4\x00\x00\x00\x00\x46\xd0\x50\x7b\x64\x72\x00\x00\x48\x72\x46\x41\x64\x75\x55\xf8\x4b\x4d\x50\x67\x00\x00\x00\x00\x46\x50\x64\x77\x00\x00\x4f\xfd\x00\x00\x00\x00\x64\x79\x64\x78\x00\x00\x00\x00\x53\x9e\x00\x00\x50\xd7\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x64\x7b\x4d\xee\x4f\x94\x00\x00\x4a\xad\x00\x00\x4f\x4f\x00\x00\x47\xe5\x64\x7a\x55\x66\x00\x00\x4f\xa7\x00\x00\x00\x00\x00\x00\x46\xec\x00\x00\x00\x00\x52\xc1\x00\x00\x00\x00\x64\x7c\x00\x00\x00\x00\x00\x00\x64\x7d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x64\x7f\x64\x80\x4e\x8f\x64\x7e\x00\x00\x00\x00", /* 8d00 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x53\x5a\x55\x74\x00\x00\x64\x81\x4c\x7c\x00\x00\x64\x82\x55\x84\x00\x00\x64\x84\x00\x00\x64\x83\x64\x86\x00\x00\x64\x85\x64\x87\x64\x88\x00\x00\x64\x89\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x46\xf9\x00\x00\x51\x51\x64\x8a\x00\x00\x00\x00\x00\x00\x53\xcc\x00\x00\x64\x8b\x00\x00\x00\x00\x4a\xaa\x64\x8c\x00\x00\x51\xc9\x50\xee\x00\x00\x64\x8d\x48\xd0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 8d80 */ "\x00\x00\x64\x8f\x00\x00\x00\x00\x00\x00\x4a\x78\x00\x00\x00\x00\x00\x00\x00\x00\x46\xdf\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x51\xde\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4c\xed\x00\x00\x00\x00\x00\x00\x00\x00\x55\x61\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x46\xfa\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x64\x92\x00\x00\x00\x00\x00\x00\x64\x91\x00\x00\x00\x00\x00\x00\x64\x90\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x64\x98\x64\x96\x00\x00\x00\x00\x64\x93\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x64\x95\x00\x00\x00\x00\x00\x00\x64\x94\x64\x97\x00\x00\x4d\xc2\x00\x00\x64\x9b\x00\x00\x4c\xcd\x00\x00\x64\x9c\x00\x00\x00\x00\x00\x00\x00\x00\x55\xcb\x00\x00\x64\x99\x64\x9a\x00\x00\x00\x00\x00\x00\x47\x84\x00\x00\x00\x00\x00\x00\x50\xb4\x00\x00\x50\xd1\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x64\x9d\x00\x00\x00\x00\x64\x9f", /* 8e00 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x64\x9e\x64\xa0\x4c\xa8\x00\x00\x00\x00\x00\x00\x00\x00\x4d\x7c\x64\xa3\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x64\xa1\x64\xa2\x64\xa4\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x50\xfc\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x64\xa7\x00\x00\x00\x00\x00\x00\x64\xa8\x64\xa6\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x64\xa5\x00\x00\x55\xa7\x00\x00\x00\x00\x64\xaa\x64\xae\x64\xab\x64\xa9\x00\x00\x64\xac\x00\x00\x00\x00\x00\x00\x64\xad\x00\x00\x00\x00\x00\x00\x00\x00\x64\xb2\x00\x00\x00\x00\x00\x00\x64\xaf\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x53\x68\x64\xb1\x00\x00\x00\x00\x64\xb3\x64\xb0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x64\xb5\x00\x00\x52\xf6\x00\x00\x64\xb4\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x64\xb7\x00\x00\x00\x00\x00\x00", /* 8e80 */ "\x00\x00\x64\xb8\x00\x00\x00\x00\x64\xba\x64\xb9\x00\x00\x64\xb6\x00\x00\x00\x00\x64\xbc\x64\xbb\x00\x00\x4c\xa1\x00\x00\x00\x00\x00\x00\x64\xbe\x00\x00\x64\xbd\x64\xbf\x00\x00\x00\x00\x00\x00\x00\x00\x64\xc0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x64\xc1\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x64\xc2\x47\x9c\x50\x44\x00\x00\x00\x00\x53\x53\x53\x7a\x64\xc3\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x64\xc4\x00\x00\x53\x53\x00\x00\x00\x00\x00\x00\x00\x00\x64\xc6\x64\xc5\x00\x00\x64\xc7\x00\x00\x46\x53\x64\xc8\x4d\xaa\x48\x97\x00\x00\x64\xc9\x00\x00\x00\x00\x4e\x55\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x64\xca\x00\x00\x00\x00\x00\x00\x4c\xb1\x00\x00\x00\x00\x47\x52\x64\xcb\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x64\xce\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4b\xa6\x00\x00\x00\x00\x64\xcd\x64\xcc\x48\xa6\x64\xcf\x00\x00", /* 8f00 */ "\x00\x00\x00\x00\x00\x00\x4a\x5a\x00\x00\x64\xd2\x00\x00\x00\x00\x00\x00\x4d\x6e\x64\xd0\x00\x00\x64\xd1\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x64\xd4\x64\xd5\x4a\x68\x64\xd3\x00\x00\x00\x00\x00\x00\x64\xd7\x00\x00\x51\x5b\x64\xd6\x47\x87\x00\x00\x64\xd8\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x64\xd9\x00\x00\x00\x00\x4e\xf4\x48\xb7\x00\x00\x00\x00\x00\x00\x00\x00\x55\xa6\x00\x00\x00\x00\x00\x00\x64\xda\x00\x00\x00\x00\x00\x00\x00\x00\x46\x93\x64\xdc\x00\x00\x64\xdb\x00\x00\x00\x00\x64\xdf\x50\x6c\x00\x00\x00\x00\x64\xde\x00\x00\x50\xfe\x64\xdd\x64\xe1\x00\x00\x00\x00\x64\xe0\x00\x00\x00\x00\x64\xe2\x54\xee\x64\xe3\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x64\xe4\x00\x00\x00\x00\x00\x00\x00\x00\x64\xe5\x00\x00\x00\x00\x50\xa9\x00\x00\x52\xe1\x64\xe6\x64\xe7\x64\xe8\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 8f80 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4d\x5e\x64\xe9\x00\x00\x4d\x74\x64\xea\x00\x00\x00\x00\x00\x00\x64\xeb\x00\x00\x00\x00\x00\x00\x64\xed\x64\xec\x00\x00\x00\x00\x00\x00\x00\x00\x64\xee\x61\x49\x64\xef\x47\xdf\x52\xe5\x48\x45\x00\x00\x00\x00\x00\x00\x00\x00\x64\xf0\x00\x00\x00\x00\x45\xd5\x47\xf5\x48\x41\x00\x00\x00\x00\x54\x7e\x00\x00\x00\x00\x55\xdf\x00\x00\x49\xcd\x50\x68\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4b\xa9\x00\x00\x00\x00\x46\x73\x00\x00\x00\x00\x48\xd6\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x64\xf2\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x64\xf4\x00\x00\x00\x00\x64\xf3\x53\x5d\x00\x00\x00\x00\x64\xf6\x4e\x9e\x49\xef\x00\x00\x53\xdf\x00\x00\x64\xf5\x4a\x9c\x00\x00\x00\x00\x00\x00\x64\xf7\x00\x00\x00\x00\x4e\x58\x64\xfa\x64\xf9\x54\xa9\x00\x00\x00\x00\x49\xd1\x00\x00\x00\x00", /* 9000 */ "\x4b\x49\x47\x44\x00\x00\x4c\x72\x00\x00\x64\xf8\x4b\xfc\x00\x00\x00\x00\x00\x00\x00\x00\x65\x44\x00\x00\x65\x41\x64\xfd\x4b\xda\x50\xbb\x64\xfb\x00\x00\x51\x5e\x48\xf0\x64\xfc\x65\x43\x4f\xb3\x00\x00\x4f\xca\x45\xe3\x00\x00\x00\x00\x53\xb1\x65\x42\x48\xcd\x45\xb8\x64\xfe\x4d\xce\x47\x54\x00\x00\x00\x00\x00\x00\x65\x45\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4f\x77\x00\x00\x00\x00\x4a\xd3\x46\x69\x00\x00\x00\x00\x54\x85\x65\x46\x00\x00\x4a\xd6\x65\x47\x00\x00\x00\x00\x55\xac\x00\x00\x65\x4e\x00\x00\x00\x00\x54\xf8\x4c\xf7\x00\x00\x00\x00\x4c\x6d\x00\x00\x49\xec\x00\x00\x65\x4d\x4a\x8b\x46\xab\x00\x00\x50\x5d\x48\x8d\x65\x48\x65\x4a\x65\x4b\x65\x4c\x45\x50\x46\xa4\x49\xbc\x65\x4f\x00\x00\x65\x50\x52\xf3\x00\x00\x00\x00\x54\x55\x00\x00\x65\x51\x00\x00\x46\xe3\x54\x4c\x00\x00\x4e\xc2\x00\x00\x68\x82\x00\x00\x65\x53\x65\x52\x49\xcc\x00\x00\x00\x00\x00\x00\x51\x43\x54\x58\x65\x54\x00\x00\x00\x00\x65\x57\x00\x00\x00\x00\x52\x6e\x65\x55\x53\x5b\x48\x5d\x00\x00\x4c\xda\x00\x00\x52\x6b\x65\x59\x00\x00\x4c\xc4", /* 9080 */ "\x65\x5b\x53\x7b\x65\x58\x60\x45\x4d\xa9\x00\x00\x00\x00\x51\x86\x00\x00\x65\x5a\x50\xea\x00\x00\x00\x00\x00\x00\x00\x00\x65\x5c\x00\x00\x4c\x92\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x48\x46\x00\x00\x00\x00\x46\xc5\x00\x00\x51\xa8\x00\x00\x4e\xb8\x00\x00\x00\x00\x00\x00\x00\x00\x65\x5e\x00\x00\x65\x5f\x00\x00\x00\x00\x00\x00\x65\x60\x00\x00\x00\x00\x4d\x81\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x49\xb3\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x50\x52\x00\x00\x00\x00\x00\x00\x45\x6e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x65\x63\x00\x00\x00\x00\x65\x64\x00\x00\x00\x00\x49\x9e\x65\x61\x00\x00\x65\x62\x00\x00\x00\x00\x00\x00\x45\x95\x00\x00\x00\x00\x00\x00\x00\x00\x51\x62\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4c\xb7\x00\x00\x49\x95\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x45\x4f\x00\x00\x00\x00", /* 9100 */ "\x00\x00\x00\x00\x65\x65\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x65\x68\x00\x00\x00\x00\x65\x67\x00\x00\x00\x00\x00\x00\x65\x69\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x65\x6b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x51\x54\x00\x00\x00\x00\x65\x6c\x00\x00\x65\x6a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4f\x73\x65\x6d\x55\x48\x52\xbb\x47\xf3\x55\x91\x00\x00\x00\x00\x00\x00\x47\x58\x00\x00\x4e\x7c\x00\x00\x65\x6e\x00\x00\x65\x6f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4b\xae\x65\x70\x00\x00\x65\x71\x00\x00\x00\x00\x00\x00\x65\x72\x50\xbd\x00\x00\x51\x49\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x65\x74\x65\x73\x00\x00\x4d\x86\x00\x00\x51\xeb\x48\x99\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 9180 */ "\x00\x00\x00\x00\x65\x77\x00\x00\x00\x00\x00\x00\x00\x00\x51\xa9\x00\x00\x65\x76\x00\x00\x65\x75\x00\x00\x51\x6f\x00\x00\x00\x00\x51\x70\x00\x00\x53\x78\x00\x00\x00\x00\x00\x00\x00\x00\x51\xfa\x00\x00\x00\x00\x00\x00\x00\x00\x53\x6f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x65\x78\x00\x00\x50\x7f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x65\x7b\x65\x79\x50\x7f\x00\x00\x00\x00\x65\x7a\x00\x00\x51\xfa\x00\x00\x00\x00\x65\x7d\x65\x7c\x00\x00\x00\x00\x50\xc2\x00\x00\x65\x7e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x65\x7f\x65\x80\x00\x00\x00\x00\x00\x00\x00\x00\x53\x46\x53\xbf\x4d\x79\x52\x52\x00\x00\x65\x81\x47\x6c\x45\xa3\x45\x69\x47\xb5\x65\x82\x45\x86\x00\x00\x00\x00\x00\x00\x00\x00\x65\x87\x65\x85\x4f\xf4\x00\x00\x65\x83\x65\x84\x4a\xcc\x49\x88\x65\x86\x65\x88\x00\x00\x65\x89\x00\x00\x4c\xe3\x65\x8d\x65\x8f\x53\x4a\x4b\xf0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x65\x8a\x65\x8c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x65\x8b\x65\x8e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x51\xd0\x00\x00\x00\x00\x65\x92", /* 9200 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x65\x90\x00\x00\x00\x00\x00\x00\x65\x95\x00\x00\x00\x00\x4e\x63\x53\x8f\x00\x00\x65\x93\x52\x69\x00\x00\x00\x00\x65\x94\x65\x97\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x65\x91\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x65\x98\x00\x00\x00\x00\x65\x96\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x45\xae\x00\x00\x00\x00\x55\xbf\x00\x00\x65\xa6\x65\x9b\x00\x00\x65\x9f\x00\x00\x00\x00\x65\xa4\x65\x9e\x00\x00\x00\x00\x00\x00\x45\xd7\x65\x9a\x00\x00\x00\x00\x65\xa0\x65\x9c\x00\x00\x65\xa7\x00\x00\x00\x00\x65\xa1\x00\x00\x65\xa2\x65\xa5\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x65\x99\x00\x00\x65\xa3\x65\xa9\x49\xd4\x00\x00\x00\x00\x53\x93\x00\x00\x00\x00\x00\x00\x4e\xa8\x00\x00\x65\x9d\x00\x00\x4f\xb4\x65\xa8\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x48\x63\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x65\xac\x65\xad\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x51\x83\x00\x00", /* 9280 */ "\x47\x8c\x00\x00\x00\x00\x4c\xe2\x00\x00\x48\xc0\x00\x00\x00\x00\x52\x4b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4c\xad\x00\x00\x65\xaf\x00\x00\x65\xb1\x65\xae\x00\x00\x4d\xdc\x00\x00\x4e\x80\x65\xb0\x65\xaa\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x65\xab\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4d\x48\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x65\xbb\x00\x00\x65\xba\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x65\xb3\x65\xb7\x00\x00\x54\x49\x65\xbd\x00\x00\x65\xb9\x00\x00\x65\xb5\x00\x00\x65\xb6\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x65\xbc\x00\x00\x00\x00\x00\x00\x52\xc0\x00\x00\x00\x00\x65\xb4\x00\x00\x65\xb2\x53\x63\x00\x00\x00\x00\x4d\x6f\x00\x00\x00\x00\x00\x00\x00\x00\x55\xbe\x48\xc1\x00\x00\x00\x00\x00\x00\x00\x00\x51\xe7\x53\x94\x65\xc2\x65\xc5\x46\xa1\x00\x00\x00\x00\x65\xc9", /* 9300 */ "\x00\x00\x00\x00\x65\xce\x00\x00\x00\x00\x00\x00\x55\xd2\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x65\xc0\x53\x90\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x54\xef\x65\xc7\x65\xcb\x00\x00\x00\x00\x65\xcc\x65\xc8\x00\x00\x4e\x57\x65\xc3\x65\xca\x65\xcd\x00\x00\x65\xc1\x4b\x8e\x00\x00\x53\xf0\x00\x00\x00\x00\x52\x57\x4f\xe6\x00\x00\x52\x83\x50\xb1\x00\x00\x00\x00\x48\x86\x00\x00\x00\x00\x65\xbf\x00\x00\x00\x00\x00\x00\x00\x00\x65\xbe\x65\xcf\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x65\xc4\x00\x00\x00\x00\x00\x00\x51\xf7\x00\x00\x00\x00\x4b\x48\x00\x00\x55\xd3\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x54\xaa\x00\x00\x65\xd4\x65\xd5\x00\x00\x00\x00\x00\x00\x48\xc7\x52\xad\x00\x00\x00\x00\x00\x00\x65\xd1\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4f\x70\x00\x00\x65\xd3\x00\x00\x65\xd0\x00\x00\x00\x00\x00\x00\x00\x00\x4e\x45\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x65\xd2\x00\x00\x53\xbd\x00\x00", /* 9380 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x49\x62\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x65\xda\x00\x00\x4d\x70\x51\x97\x00\x00\x00\x00\x54\xfe\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x65\xd8\x00\x00\x00\x00\x54\x6d\x00\x00\x00\x00\x00\x00\x00\x00\x53\x6e\x65\xd9\x4c\x89\x00\x00\x65\xd7\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x65\xd6\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x65\xe2\x00\x00\x00\x00\x65\xdd\x00\x00\x65\xdb\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x65\xe5\x50\x41\x00\x00\x00\x00\x00\x00\x00\x00\x65\xdc\x65\xde\x65\xe1\x00\x00\x00\x00\x00\x00\x00\x00\x65\xe3\x65\xe4\x00\x00\x00\x00\x4a\x8d\x00\x00\x00\x00\x65\xe6\x65\xe0\x00\x00\x00\x00\x65\xdf\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x65\xe8\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 9400 */ "\x00\x00\x00\x00\x00\x00\x65\xec\x00\x00\x00\x00\x00\x00\x65\xed\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x51\xcd\x00\x00\x00\x00\x65\xea\x65\xe9\x00\x00\x00\x00\x00\x00\x4c\xc8\x52\xcf\x65\xe7\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x65\xeb\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x65\xef\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x65\xf0\x00\x00\x00\x00\x00\x00\x51\x56\x65\xee\x00\x00\x53\x88\x00\x00\x65\xf1\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x65\xf2\x00\x00\x00\x00\x65\xf5\x65\xf4\x00\x00\x00\x00\x65\xf6\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4e\x4e\x65\xf3\x52\x41\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x65\xf8\x65\xf7\x00\x00\x00\x00\x65\xfb\x00\x00\x65\xf9\x00\x00\x65\xfa\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x65\xfc\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x65\xfe\x00\x00\x00\x00\x00\x00\x00\x00\x65\xfd\x00\x00\x66\x41\x00\x00\x00\x00\x00\x00\x00\x00\x66\x44\x66\x43\x66\x45\x66\x42", /* 9480 */ "\x00\x00\x66\x46\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 9500 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x45\x83\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 9580 */ "\x46\xaa\x00\x00\x66\x47\x51\x9c\x00\x00\x00\x00\x00\x00\x66\x48\x00\x00\x4b\x7d\x66\x49\x46\xcd\x00\x00\x00\x00\x00\x00\x54\x5f\x00\x00\x4d\xd9\x66\x4a\x45\xc1\x66\x4b\x00\x00\x66\x4c\x00\x00\x66\x4d\x66\x4e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x66\x4f\x00\x00\x45\xc5\x4a\xe9\x54\x9b\x51\x72\x00\x00\x66\x51\x66\x50\x00\x00\x00\x00\x00\x00\x00\x00\x66\x52\x00\x00\x00\x00\x00\x00\x00\x00\x51\x77\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x66\x55\x00\x00\x66\x54\x66\x53\x00\x00\x66\x56\x00\x00\x00\x00\x00\x00\x00\x00\x66\x59\x00\x00\x00\x00\x00\x00\x53\x64\x00\x00\x00\x00\x66\x57\x00\x00\x66\x5b\x66\x5a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x66\x5d\x66\x5c\x66\x5e\x00\x00\x4b\xcc\x00\x00\x00\x00\x00\x00\x66\x5f\x00\x00\x00\x00\x00\x00\x00\x00\x66\x60\x66\x62\x00\x00\x00\x00\x66\x61\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 9600 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x47\x86\x00\x00\x00\x00\x00\x00\x00\x00\x66\x63\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x66\x64\x00\x00\x45\x91\x00\x00\x00\x00\x00\x00\x66\x65\x66\x66\x00\x00\x00\x00\x47\xbc\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4f\xef\x00\x00\x00\x00\x00\x00\x46\xae\x4f\xe8\x00\x00\x66\x67\x00\x00\x4b\x8c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x66\x6a\x66\x69\x49\xe5\x00\x00\x66\x68\x48\xad\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x51\x57\x66\x6b\x66\x6c\x52\x72\x66\x6d\x00\x00\x00\x00\x49\xd8\x4c\x84\x49\x6d\x4f\xfe\x66\x6e\x00\x00\x00\x00\x00\x00\x55\xc3\x00\x00\x66\x71\x00\x00\x00\x00\x00\x00\x4c\xd2\x00\x00\x66\x70\x4e\x61\x00\x00\x50\xc7\x4a\xb7\x66\x6f\x49\x61\x00\x00\x4a\x6c\x00\x00\x00\x00\x47\xbf\x00\x00\x00\x00", /* 9680 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4b\xb9\x46\x5d\x00\x00\x4c\xe5\x00\x00\x4a\x93\x66\x73\x00\x00\x66\x72\x49\xa9\x4e\x76\x00\x00\x00\x00\x00\x00\x00\x00\x50\x5a\x66\x76\x00\x00\x66\x77\x66\x75\x53\xc3\x00\x00\x47\x97\x4b\xf9\x66\x79\x00\x00\x00\x00\x4e\xae\x00\x00\x00\x00\x4c\xe0\x00\x00\x00\x00\x00\x00\x66\x7a\x65\x56\x00\x00\x66\x7b\x00\x00\x00\x00\x00\x00\x00\x00\x66\x7f\x66\x7e\x66\x7c\x66\x7d\x00\x00\x66\x80\x00\x00\x66\x81\x55\x45\x66\x82\x66\x83\x00\x00\x4f\xda\x4e\xd5\x00\x00\x00\x00\x00\x00\x4f\x64\x51\xa4\x00\x00\x00\x00\x45\x70\x47\x45\x47\xa0\x4c\x4d\x00\x00\x54\x77\x00\x00\x66\x85\x52\xb7\x52\x5b\x66\x84\x00\x00\x00\x00\x4a\x8a\x00\x00\x00\x00\x00\x00\x66\x86\x63\x54\x00\x00\x00\x00\x66\x88\x00\x00\x51\xfb\x66\x87\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x49\x97\x49\x5a\x00\x00\x00\x00\x00\x00\x00\x00\x49\xdd\x00\x00\x49\xbb\x52\xa5\x00\x00\x00\x00\x00\x00\x00\x00\x4f\x90\x00\x00\x4a\xbc\x00\x00\x00\x00\x00\x00\x50\x69\x4b\xd6\x00\x00\x66\x89\x00\x00\x45\x82\x00\x00\x00\x00\x00\x00\x00\x00", /* 9700 */ "\x47\xfb\x00\x00\x00\x00\x00\x00\x66\x8a\x00\x00\x66\x8b\x4d\xde\x66\x8c\x00\x00\x4f\x4b\x00\x00\x00\x00\x66\x8e\x66\x90\x66\x92\x00\x00\x66\x91\x00\x00\x66\x8f\x00\x00\x00\x00\x66\x93\x00\x00\x00\x00\x66\x8d\x00\x00\x00\x00\x4d\xe8\x00\x00\x4e\xe4\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x66\x94\x00\x00\x00\x00\x4e\x48\x00\x00\x00\x00\x66\x95\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x66\x96\x00\x00\x4b\xc6\x66\x97\x00\x00\x00\x00\x00\x00\x00\x00\x5b\xcf\x66\x98\x00\x00\x66\x99\x00\x00\x66\x9a\x66\x9b\x00\x00\x00\x00\x00\x00\x66\xa0\x66\x9e\x66\x9d\x00\x00\x66\x9c\x00\x00\x66\x9f\x66\xa1\x00\x00\x00\x00\x00\x00\x66\xa2\x00\x00\x66\xa3\x00\x00\x66\xa4\x46\x4c\x00\x00\x00\x00\x66\xa5\x48\xc3\x00\x00\x00\x00\x46\x44\x00\x00\x00\x00\x66\xa6\x00\x00\x48\xe1\x00\x00\x66\xa7\x68\x52\x46\x91\x00\x00\x66\xa8\x00\x00\x66\xa9\x00\x00\x66\xaa\x4a\xa3\x00\x00\x53\xb5\x00\x00\x66\xab\x00\x00\x00\x00\x00\x00\x52\xce\x00\x00\x00\x00\x4d\xf1\x00\x00\x00\x00\x00\x00\x00\x00\x66\xac\x66\xb0\x00\x00\x66\xae\x00\x00\x00\x00\x00\x00", /* 9780 */ "\x00\x00\x66\xaf\x00\x00\x00\x00\x54\x45\x66\xad\x52\x77\x00\x00\x00\x00\x00\x00\x00\x00\x66\xb1\x00\x00\x50\x4c\x00\x00\x66\xb2\x66\xb3\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x52\xe7\x00\x00\x00\x00\x00\x00\x66\xb4\x00\x00\x00\x00\x00\x00\x51\xed\x00\x00\x00\x00\x66\xb7\x00\x00\x00\x00\x66\xb6\x00\x00\x66\xb5\x00\x00\x00\x00\x63\xfc\x00\x00\x54\x8b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x66\xb8\x66\xb9\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x66\xba\x00\x00\x00\x00\x66\xbb\x00\x00\x66\xbc\x00\x00\x00\x00\x66\xbd\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4e\x75\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x66\xbe\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x66\xbf\x4f\xdf\x00\x00\x00\x00\x00\x00\x66\xc0\x48\x4d\x00\x00\x66\xc2\x52\xfc\x00\x00\x00\x00\x00\x00\x00\x00\x55\x77\x00\x00\x00\x00\x00\x00\x4a\x5c", /* 9800 */ "\x00\x00\x4c\xd9\x4d\x5b\x49\x46\x00\x00\x4a\x97\x47\xb2\x00\x00\x46\xb0\x00\x00\x00\x00\x00\x00\x54\x56\x00\x00\x00\x00\x66\xc3\x4d\x4a\x53\x9d\x55\x57\x51\x7a\x00\x00\x00\x00\x00\x00\x55\xe4\x4a\xcd\x00\x00\x66\xc4\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x66\xc6\x00\x00\x00\x00\x66\xc5\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4e\xb3\x47\xeb\x00\x00\x00\x00\x4e\xb3\x00\x00\x00\x00\x00\x00\x55\x76\x00\x00\x00\x00\x66\xc7\x50\xfb\x66\xc8\x00\x00\x53\xab\x4a\x7a\x66\xc8\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x51\xdc\x00\x00\x00\x00\x00\x00\x00\x00\x66\xca\x47\xfe\x47\xf1\x54\x8e\x66\xc9\x00\x00\x00\x00\x00\x00\x00\x00\x48\xb8\x4a\xe5\x00\x00\x66\xcb\x4c\x57\x00\x00\x55\xc1\x55\xc1\x00\x00\x00\x00\x46\xba\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x66\xcc\x00\x00\x4e\xee\x00\x00\x00\x00\x00\x00\x66\xcd\x00\x00\x00\x00\x00\x00\x66\xce\x66\xcf\x66\xd0\x00\x00\x66\xd2\x66\xd1\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 9880 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x47\xe7\x00\x00\x66\xd3\x00\x00\x00\x00\x00\x00\x00\x00\x66\xd4\x00\x00\x66\xd5\x00\x00\x00\x00\x00\x00\x00\x00\x66\xd6\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x66\xd8\x66\xd7\x00\x00\x66\xd9\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x48\x8a\x66\xda\x00\x00\x00\x00\x46\xb8\x00\x00\x00\x00\x53\xce\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x66\xdc\x00\x00\x66\xde\x00\x00\x66\xdb\x5c\xca\x46\xb5\x00\x00\x00\x00\x4b\xa3\x00\x00\x52\x45\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4a\x8f\x4d\x49\x49\x57\x00\x00", /* 9900 */ "\x00\x00\x00\x00\x00\x00\x66\xe0\x00\x00\x50\xbf\x00\x00\x00\x00\x00\x00\x54\xbc\x49\x79\x00\x00\x50\xa7\x00\x00\x00\x00\x00\x00\x55\xb3\x00\x00\x66\xe2\x55\x4b\x66\xe3\x00\x00\x00\x00\x00\x00\x66\xe4\x00\x00\x00\x00\x00\x00\x00\x00\x66\xe1\x66\xe8\x00\x00\x66\xea\x66\xe7\x00\x00\x00\x00\x66\xe9\x00\x00\x00\x00\x66\xe5\x48\x62\x00\x00\x00\x00\x00\x00\x66\xeb\x00\x00\x66\xec\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x66\xed\x66\xee\x00\x00\x00\x00\x00\x00\x66\xef\x00\x00\x00\x00\x66\xf1\x00\x00\x00\x00\x00\x00\x66\xf0\x00\x00\x66\xf3\x66\xf5\x00\x00\x00\x00\x00\x00\x66\xf2\x66\xf4\x52\xe8\x00\x00\x00\x00\x66\xf6\x00\x00\x51\xd5\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 9980 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x49\xbe\x66\xf7\x66\xf8\x46\xbd\x00\x00\x00\x00\x00\x00\x00\x00\x66\xf9\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x66\xfa\x00\x00\x00\x00\x4b\x85\x00\x00\x00\x00\x00\x00\x46\x64\x66\xfb\x66\xfc\x00\x00\x00\x00\x00\x00\x00\x00\x52\xdf\x50\xa1\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x66\xfd\x00\x00\x00\x00\x00\x00\x00\x00\x55\xe5\x00\x00\x00\x00\x4d\xe5\x49\xac\x4c\xfe\x00\x00\x4f\x85\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4d\xf5\x67\x44\x49\xfc\x00\x00\x00\x00\x53\xbe\x00\x00\x00\x00\x67\x43\x00\x00\x00\x00\x67\x41\x00\x00\x67\x42\x00\x00\x66\xfe\x00\x00\x00\x00\x67\x47\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x67\x45\x67\x46\x00\x00\x00\x00\x67\x48\x67\x49\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x67\x4b\x00\x00\x00\x00\x67\x4a\x00\x00\x00\x00\x00\x00\x4c\xc0", /* 9a00 */ "\x00\x00\x67\x4c\x00\x00\x00\x00\x00\x00\x67\x4e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x50\x58\x67\x4d\x00\x00\x00\x00\x4d\xd2\x48\xb4\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x67\x4f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x53\xda\x00\x00\x00\x00\x67\x50\x00\x00\x00\x00\x00\x00\x00\x00\x4e\x5e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x67\x51\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x67\x56\x00\x00\x67\x52\x00\x00\x67\x54\x67\x55\x00\x00\x67\x53\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x67\x58\x67\x59\x00\x00\x00\x00\x00\x00\x53\xda\x00\x00\x00\x00\x67\x57\x00\x00\x67\x5b\x00\x00\x00\x00\x4c\xd5\x67\x5a\x00\x00\x00\x00\x00\x00\x67\x5c\x00\x00\x00\x00\x67\x5d\x00\x00\x67\x60\x67\x5f\x00\x00\x00\x00\x00\x00\x67\x5e\x67\x61\x67\x62\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 9a80 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4a\xa5\x00\x00\x00\x00\x00\x00\x00\x00\x67\x63\x00\x00\x00\x00\x67\x64\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x55\x9c\x00\x00\x00\x00\x00\x00\x67\x65\x00\x00\x00\x00\x00\x00\x67\x66\x00\x00\x00\x00\x00\x00\x52\xc5\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x67\x67\x00\x00\x67\x6a\x00\x00\x67\x68\x67\x69\x00\x00\x00\x00\x00\x00\x45\x71\x67\x6b\x00\x00\x00\x00\x67\x6c\x00\x00\x67\x6d\x67\x6e\x00\x00\x00\x00\x67\x6f\x67\x70\x00\x00\x00\x00\x67\x71\x00\x00\x00\x00\x00\x00\x4c\xf6\x67\x73\x00\x00\x50\x9d\x67\x74\x67\x72\x00\x00\x67\x76\x00\x00\x00\x00\x67\x75\x00\x00\x00\x00\x67\x77\x00\x00\x00\x00\x00\x00\x67\x78\x00\x00\x00\x00\x00\x00\x00\x00", /* 9b00 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x67\x79\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x67\x7a\x00\x00\x67\x7b\x00\x00\x00\x00\x00\x00\x00\x00\x67\x7c\x00\x00\x00\x00\x67\x7d\x67\x7e\x00\x00\x67\x7f\x00\x00\x67\x80\x67\x81\x67\x82\x67\x83\x00\x00\x00\x00\x00\x00\x67\x84\x67\x85\x00\x00\x67\x86\x67\x87\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x67\x88\x4a\xc8\x00\x00\x00\x00\x00\x00\x00\x00\x52\xcb\x50\xa8\x67\x8a\x67\x89\x4d\xb4\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x67\x8b\x67\x8c\x53\x89\x00\x00\x67\x8d\x00\x00\x00\x00\x4d\xe2\x00\x00\x00\x00\x00\x00\x67\x8e\x00\x00\x48\xee\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x51\xf4\x00\x00\x00\x00\x67\x91\x00\x00\x67\x90\x67\x8f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 9b80 */ "\x00\x00\x00\x00\x00\x00\x67\x94\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4f\x8e\x67\x93\x00\x00\x67\x95\x52\x8d\x67\x92\x00\x00\x00\x00\x67\x96\x67\x97\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x67\x98\x67\x99\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x67\x9a\x00\x00\x55\xce\x4e\xb7\x00\x00\x53\x91\x4c\xe9\x00\x00\x00\x00\x67\x9b\x00\x00\x00\x00\x67\x9c\x00\x00\x00\x00\x00\x00\x00\x00\x67\xa0\x00\x00\x67\x9f\x00\x00\x00\x00\x00\x00\x00\x00\x67\x9d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x67\xa1\x00\x00\x00\x00\x4f\xc6\x67\x9e\x00\x00\x00\x00\x00\x00\x00\x00\x67\xa2\x00\x00\x67\xa3\x67\xa4\x00\x00\x67\xa8\x00\x00\x4f\xe4\x00\x00\x00\x00\x00\x00\x00\x00\x50\xd8\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x67\xa9\x67\xa6\x67\xa5\x67\xa7\x00\x00\x00\x00\x00\x00\x4d\x78\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x55\x51\x67\xab\x67\xac\x00\x00\x00\x00\x67\xaa\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 9c00 */ "\x67\xb1\x00\x00\x00\x00\x00\x00\x67\xad\x00\x00\x67\xb5\x00\x00\x67\xb6\x67\xb2\x67\xb8\x00\x00\x67\xb4\x55\x71\x00\x00\x00\x00\x52\x93\x00\x00\x67\xb7\x67\xb3\x67\xb0\x67\xaf\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x67\xae\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x67\xbc\x00\x00\x00\x00\x67\xbb\x67\xba\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x54\x6e\x67\xb9\x55\xc8\x67\xbd\x00\x00\x67\xbf\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x53\xd5\x51\xf0\x54\xab\x00\x00\x00\x00\x67\xc1\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x67\xc0\x67\xbe\x55\x60\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x53\xc6\x00\x00\x00\x00\x00\x00\x00\x00\x55\x4c\x00\x00\x00\x00\x67\xc2\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x67\xc3\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x67\xc4\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x67\xc5\x00\x00\x67\xc6\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 9c80 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x47\x79\x00\x00\x67\xc8\x00\x00\x4d\x95\x00\x00\x67\xc7\x67\xc9\x00\x00\x00\x00\x00\x00\x67\xca\x00\x00\x00\x00\x4e\xa6\x4b\x70\x00\x00\x54\xc4\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 9d00 */ "\x00\x00\x00\x00\x00\x00\x67\xcc\x00\x00\x00\x00\x67\xcd\x51\xa1\x54\xfc\x67\xcb\x00\x00\x00\x00\x00\x00\x00\x00\x54\x64\x00\x00\x00\x00\x00\x00\x67\xd4\x00\x00\x00\x00\x67\xd3\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x52\xc3\x00\x00\x00\x00\x00\x00\x67\xd2\x00\x00\x00\x00\x00\x00\x67\xd1\x00\x00\x00\x00\x67\xcf\x00\x00\x4c\x54\x00\x00\x67\xce\x50\xba\x67\xd0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4d\xd6\x00\x00\x00\x00\x67\xd8\x67\xd6\x00\x00\x67\xd5\x00\x00\x00\x00\x67\xd7\x00\x00\x67\xd9\x00\x00\x67\xda\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x67\xdf\x67\xde\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x67\xdd\x00\x00\x00\x00\x4b\xe7\x67\xdb\x67\xdc\x00\x00\x50\xfd\x55\x7e\x00\x00\x00\x00\x67\xe0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x67\xe4\x51\x8a\x00\x00\x00\x00\x67\xe5\x67\xe2\x00\x00\x67\xe1\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x67\xe6\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 9d80 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x67\xe3\x00\x00\x53\x42\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4d\x8e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x67\xe7\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x67\xe8\x00\x00\x00\x00\x00\x00\x00\x00\x67\xe9\x00\x00\x67\xea\x00\x00\x00\x00\x00\x00\x50\xe5\x00\x00\x00\x00\x67\xeb\x00\x00\x47\x7a\x00\x00\x00\x00\x00\x00\x67\xef\x00\x00\x67\xf0\x67\xee\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x67\xed\x67\xf3\x00\x00\x67\xec\x00\x00\x67\xf1\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x67\xf2\x00\x00\x00\x00\x00\x00\x67\xf6\x00\x00\x00\x00\x00\x00\x54\x64\x00\x00\x67\xf5\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x67\xf8\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x67\xf9\x00\x00\x67\xfa\x00\x00\x00\x00\x4b\xf1\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x67\xf7\x4b\x7a\x50\xaf\x00\x00\x00\x00\x67\xfb\x00\x00\x00\x00", /* 9e00 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x67\xfe\x67\xfc\x67\xfd\x00\x00\x00\x00\x68\x41\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x68\x42\x00\x00\x00\x00\x4c\x7d\x68\x43\x00\x00\x00\x00\x4c\x7d\x68\x44\x00\x00\x46\x97", /* 9e80 */ "\x00\x00\x68\x45\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x68\x46\x00\x00\x00\x00\x68\x47\x68\x48\x00\x00\x00\x00\x00\x00\x00\x00\x68\x4a\x51\xf9\x51\x9e\x00\x00\x68\x49\x00\x00\x4c\xf3\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x68\x4b\x00\x00\x51\x9b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x68\x4c\x4a\xe0\x00\x00\x00\x00\x53\xb4\x68\x4e\x00\x00\x00\x00\x68\x4f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x52\x61\x55\x5f\x00\x00\x00\x00\x68\x4d\x52\x61\x55\x5f\x48\xa7\x68\x50\x00\x00\x68\x51\x4e\xea\x00\x00\x00\x00\x00\x00\x00\x00\x4a\xc6\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x68\x53\x55\xae\x51\xa7\x68\x54\x68\x55\x68\x56\x46\x79\x00\x00\x68\x57\x00\x00\x00\x00\x00\x00\x5e\x90\x4d\xbc\x00\x00\x51\xdd\x68\x58\x68\x5a\x68\x59\x00\x00\x68\x5b\x00\x00\x00\x00\x00\x00\x00\x00\x68\x5c\x00\x00\x00\x00\x68\x5d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x68\x5e\x00\x00\x00\x00\x00\x00\x00\x00\x68\x5f\x00\x00\x68\x60\x68\x61\x00\x00\x68\x62\x00\x00\x68\x63\x68\x64\x68\x65\x00\x00\x00\x00", /* 9f00 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x68\x66\x68\x67\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x51\xaa\x00\x00\x00\x00\x00\x00\x00\x00\x4f\xaf\x00\x00\x68\x69\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x50\xcb\x68\x6a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x68\x6b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4c\xfd\x00\x00\x00\x00\x68\x6c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x68\x6d\x51\xf5\x00\x00\x00\x00\x68\x6e\x68\x6f\x00\x00\x00\x00\x68\x70\x00\x00\x68\x71\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x68\x73\x68\x74\x68\x75\x4c\x80\x68\x72\x00\x00\x00\x00\x68\x76\x68\x77\x00\x00\x00\x00\x68\x79\x00\x00\x68\x78\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x68\x7b\x00\x00\x00\x00\x00\x00\x68\x7c\x68\x7a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 9f80 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x48\xca\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x68\x7d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x68\x7e\x5f\xf7\x00\x00\x00\x00\x68\x7f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* a000 */ NULL, /* a080 */ NULL, /* a100 */ NULL, /* a180 */ NULL, /* a200 */ NULL, /* a280 */ NULL, /* a300 */ NULL, /* a380 */ NULL, /* a400 */ NULL, /* a480 */ NULL, /* a500 */ NULL, /* a580 */ NULL, /* a600 */ NULL, /* a680 */ NULL, /* a700 */ NULL, /* a780 */ NULL, /* a800 */ NULL, /* a880 */ NULL, /* a900 */ NULL, /* a980 */ NULL, /* aa00 */ NULL, /* aa80 */ NULL, /* ab00 */ NULL, /* ab80 */ NULL, /* ac00 */ NULL, /* ac80 */ NULL, /* ad00 */ NULL, /* ad80 */ NULL, /* ae00 */ NULL, /* ae80 */ NULL, /* af00 */ NULL, /* af80 */ NULL, /* b000 */ NULL, /* b080 */ NULL, /* b100 */ NULL, /* b180 */ NULL, /* b200 */ NULL, /* b280 */ NULL, /* b300 */ NULL, /* b380 */ NULL, /* b400 */ NULL, /* b480 */ NULL, /* b500 */ NULL, /* b580 */ NULL, /* b600 */ NULL, /* b680 */ NULL, /* b700 */ NULL, /* b780 */ NULL, /* b800 */ NULL, /* b880 */ NULL, /* b900 */ NULL, /* b980 */ NULL, /* ba00 */ NULL, /* ba80 */ NULL, /* bb00 */ NULL, /* bb80 */ NULL, /* bc00 */ NULL, /* bc80 */ NULL, /* bd00 */ NULL, /* bd80 */ NULL, /* be00 */ NULL, /* be80 */ NULL, /* bf00 */ NULL, /* bf80 */ NULL, /* c000 */ NULL, /* c080 */ NULL, /* c100 */ NULL, /* c180 */ NULL, /* c200 */ NULL, /* c280 */ NULL, /* c300 */ NULL, /* c380 */ NULL, /* c400 */ NULL, /* c480 */ NULL, /* c500 */ NULL, /* c580 */ NULL, /* c600 */ NULL, /* c680 */ NULL, /* c700 */ NULL, /* c780 */ NULL, /* c800 */ NULL, /* c880 */ NULL, /* c900 */ NULL, /* c980 */ NULL, /* ca00 */ NULL, /* ca80 */ NULL, /* cb00 */ NULL, /* cb80 */ NULL, /* cc00 */ NULL, /* cc80 */ NULL, /* cd00 */ NULL, /* cd80 */ NULL, /* ce00 */ NULL, /* ce80 */ NULL, /* cf00 */ NULL, /* cf80 */ NULL, /* d000 */ NULL, /* d080 */ NULL, /* d100 */ NULL, /* d180 */ NULL, /* d200 */ NULL, /* d280 */ NULL, /* d300 */ NULL, /* d380 */ NULL, /* d400 */ NULL, /* d480 */ NULL, /* d500 */ NULL, /* d580 */ NULL, /* d600 */ NULL, /* d680 */ NULL, /* d700 */ NULL, /* d780 */ NULL, /* d800 */ NULL, /* d880 */ NULL, /* d900 */ NULL, /* d980 */ NULL, /* da00 */ NULL, /* da80 */ NULL, /* db00 */ NULL, /* db80 */ NULL, /* dc00 */ NULL, /* dc80 */ NULL, /* dd00 */ NULL, /* dd80 */ NULL, /* de00 */ NULL, /* de80 */ NULL, /* df00 */ NULL, /* df80 */ NULL, /* e000 */ "\x69\x41\x69\x42\x69\x43\x69\x44\x69\x45\x69\x46\x69\x47\x69\x48\x69\x49\x69\x4a\x69\x4b\x69\x4c\x69\x4d\x69\x4e\x69\x4f\x69\x50\x69\x51\x69\x52\x69\x53\x69\x54\x69\x55\x69\x56\x69\x57\x69\x58\x69\x59\x69\x5a\x69\x5b\x69\x5c\x69\x5d\x69\x5e\x69\x5f\x69\x60\x69\x61\x69\x62\x69\x63\x69\x64\x69\x65\x69\x66\x69\x67\x69\x68\x69\x69\x69\x6a\x69\x6b\x69\x6c\x69\x6d\x69\x6e\x69\x6f\x69\x70\x69\x71\x69\x72\x69\x73\x69\x74\x69\x75\x69\x76\x69\x77\x69\x78\x69\x79\x69\x7a\x69\x7b\x69\x7c\x69\x7d\x69\x7e\x69\x7f\x69\x80\x69\x81\x69\x82\x69\x83\x69\x84\x69\x85\x69\x86\x69\x87\x69\x88\x69\x89\x69\x8a\x69\x8b\x69\x8c\x69\x8d\x69\x8e\x69\x8f\x69\x90\x69\x91\x69\x92\x69\x93\x69\x94\x69\x95\x69\x96\x69\x97\x69\x98\x69\x99\x69\x9a\x69\x9b\x69\x9c\x69\x9d\x69\x9e\x69\x9f\x69\xa0\x69\xa1\x69\xa2\x69\xa3\x69\xa4\x69\xa5\x69\xa6\x69\xa7\x69\xa8\x69\xa9\x69\xaa\x69\xab\x69\xac\x69\xad\x69\xae\x69\xaf\x69\xb0\x69\xb1\x69\xb2\x69\xb3\x69\xb4\x69\xb5\x69\xb6\x69\xb7\x69\xb8\x69\xb9\x69\xba\x69\xbb\x69\xbc\x69\xbd\x69\xbe\x69\xbf\x69\xc0", /* e080 */ "\x69\xc1\x69\xc2\x69\xc3\x69\xc4\x69\xc5\x69\xc6\x69\xc7\x69\xc8\x69\xc9\x69\xca\x69\xcb\x69\xcc\x69\xcd\x69\xce\x69\xcf\x69\xd0\x69\xd1\x69\xd2\x69\xd3\x69\xd4\x69\xd5\x69\xd6\x69\xd7\x69\xd8\x69\xd9\x69\xda\x69\xdb\x69\xdc\x69\xdd\x69\xde\x69\xdf\x69\xe0\x69\xe1\x69\xe2\x69\xe3\x69\xe4\x69\xe5\x69\xe6\x69\xe7\x69\xe8\x69\xe9\x69\xea\x69\xeb\x69\xec\x69\xed\x69\xee\x69\xef\x69\xf0\x69\xf1\x69\xf2\x69\xf3\x69\xf4\x69\xf5\x69\xf6\x69\xf7\x69\xf8\x69\xf9\x69\xfa\x69\xfb\x69\xfc\x69\xfd\x69\xfe\x6a\x41\x6a\x42\x6a\x43\x6a\x44\x6a\x45\x6a\x46\x6a\x47\x6a\x48\x6a\x49\x6a\x4a\x6a\x4b\x6a\x4c\x6a\x4d\x6a\x4e\x6a\x4f\x6a\x50\x6a\x51\x6a\x52\x6a\x53\x6a\x54\x6a\x55\x6a\x56\x6a\x57\x6a\x58\x6a\x59\x6a\x5a\x6a\x5b\x6a\x5c\x6a\x5d\x6a\x5e\x6a\x5f\x6a\x60\x6a\x61\x6a\x62\x6a\x63\x6a\x64\x6a\x65\x6a\x66\x6a\x67\x6a\x68\x6a\x69\x6a\x6a\x6a\x6b\x6a\x6c\x6a\x6d\x6a\x6e\x6a\x6f\x6a\x70\x6a\x71\x6a\x72\x6a\x73\x6a\x74\x6a\x75\x6a\x76\x6a\x77\x6a\x78\x6a\x79\x6a\x7a\x6a\x7b\x6a\x7c\x6a\x7d\x6a\x7e\x6a\x7f\x6a\x80\x6a\x81\x6a\x82", /* e100 */ "\x6a\x83\x6a\x84\x6a\x85\x6a\x86\x6a\x87\x6a\x88\x6a\x89\x6a\x8a\x6a\x8b\x6a\x8c\x6a\x8d\x6a\x8e\x6a\x8f\x6a\x90\x6a\x91\x6a\x92\x6a\x93\x6a\x94\x6a\x95\x6a\x96\x6a\x97\x6a\x98\x6a\x99\x6a\x9a\x6a\x9b\x6a\x9c\x6a\x9d\x6a\x9e\x6a\x9f\x6a\xa0\x6a\xa1\x6a\xa2\x6a\xa3\x6a\xa4\x6a\xa5\x6a\xa6\x6a\xa7\x6a\xa8\x6a\xa9\x6a\xaa\x6a\xab\x6a\xac\x6a\xad\x6a\xae\x6a\xaf\x6a\xb0\x6a\xb1\x6a\xb2\x6a\xb3\x6a\xb4\x6a\xb5\x6a\xb6\x6a\xb7\x6a\xb8\x6a\xb9\x6a\xba\x6a\xbb\x6a\xbc\x6a\xbd\x6a\xbe\x6a\xbf\x6a\xc0\x6a\xc1\x6a\xc2\x6a\xc3\x6a\xc4\x6a\xc5\x6a\xc6\x6a\xc7\x6a\xc8\x6a\xc9\x6a\xca\x6a\xcb\x6a\xcc\x6a\xcd\x6a\xce\x6a\xcf\x6a\xd0\x6a\xd1\x6a\xd2\x6a\xd3\x6a\xd4\x6a\xd5\x6a\xd6\x6a\xd7\x6a\xd8\x6a\xd9\x6a\xda\x6a\xdb\x6a\xdc\x6a\xdd\x6a\xde\x6a\xdf\x6a\xe0\x6a\xe1\x6a\xe2\x6a\xe3\x6a\xe4\x6a\xe5\x6a\xe6\x6a\xe7\x6a\xe8\x6a\xe9\x6a\xea\x6a\xeb\x6a\xec\x6a\xed\x6a\xee\x6a\xef\x6a\xf0\x6a\xf1\x6a\xf2\x6a\xf3\x6a\xf4\x6a\xf5\x6a\xf6\x6a\xf7\x6a\xf8\x6a\xf9\x6a\xfa\x6a\xfb\x6a\xfc\x6a\xfd\x6a\xfe\x6b\x41\x6b\x42\x6b\x43\x6b\x44", /* e180 */ "\x6b\x45\x6b\x46\x6b\x47\x6b\x48\x6b\x49\x6b\x4a\x6b\x4b\x6b\x4c\x6b\x4d\x6b\x4e\x6b\x4f\x6b\x50\x6b\x51\x6b\x52\x6b\x53\x6b\x54\x6b\x55\x6b\x56\x6b\x57\x6b\x58\x6b\x59\x6b\x5a\x6b\x5b\x6b\x5c\x6b\x5d\x6b\x5e\x6b\x5f\x6b\x60\x6b\x61\x6b\x62\x6b\x63\x6b\x64\x6b\x65\x6b\x66\x6b\x67\x6b\x68\x6b\x69\x6b\x6a\x6b\x6b\x6b\x6c\x6b\x6d\x6b\x6e\x6b\x6f\x6b\x70\x6b\x71\x6b\x72\x6b\x73\x6b\x74\x6b\x75\x6b\x76\x6b\x77\x6b\x78\x6b\x79\x6b\x7a\x6b\x7b\x6b\x7c\x6b\x7d\x6b\x7e\x6b\x7f\x6b\x80\x6b\x81\x6b\x82\x6b\x83\x6b\x84\x6b\x85\x6b\x86\x6b\x87\x6b\x88\x6b\x89\x6b\x8a\x6b\x8b\x6b\x8c\x6b\x8d\x6b\x8e\x6b\x8f\x6b\x90\x6b\x91\x6b\x92\x6b\x93\x6b\x94\x6b\x95\x6b\x96\x6b\x97\x6b\x98\x6b\x99\x6b\x9a\x6b\x9b\x6b\x9c\x6b\x9d\x6b\x9e\x6b\x9f\x6b\xa0\x6b\xa1\x6b\xa2\x6b\xa3\x6b\xa4\x6b\xa5\x6b\xa6\x6b\xa7\x6b\xa8\x6b\xa9\x6b\xaa\x6b\xab\x6b\xac\x6b\xad\x6b\xae\x6b\xaf\x6b\xb0\x6b\xb1\x6b\xb2\x6b\xb3\x6b\xb4\x6b\xb5\x6b\xb6\x6b\xb7\x6b\xb8\x6b\xb9\x6b\xba\x6b\xbb\x6b\xbc\x6b\xbd\x6b\xbe\x6b\xbf\x6b\xc0\x6b\xc1\x6b\xc2\x6b\xc3\x6b\xc4", /* e200 */ "\x6b\xc5\x6b\xc6\x6b\xc7\x6b\xc8\x6b\xc9\x6b\xca\x6b\xcb\x6b\xcc\x6b\xcd\x6b\xce\x6b\xcf\x6b\xd0\x6b\xd1\x6b\xd2\x6b\xd3\x6b\xd4\x6b\xd5\x6b\xd6\x6b\xd7\x6b\xd8\x6b\xd9\x6b\xda\x6b\xdb\x6b\xdc\x6b\xdd\x6b\xde\x6b\xdf\x6b\xe0\x6b\xe1\x6b\xe2\x6b\xe3\x6b\xe4\x6b\xe5\x6b\xe6\x6b\xe7\x6b\xe8\x6b\xe9\x6b\xea\x6b\xeb\x6b\xec\x6b\xed\x6b\xee\x6b\xef\x6b\xf0\x6b\xf1\x6b\xf2\x6b\xf3\x6b\xf4\x6b\xf5\x6b\xf6\x6b\xf7\x6b\xf8\x6b\xf9\x6b\xfa\x6b\xfb\x6b\xfc\x6b\xfd\x6b\xfe\x6c\x41\x6c\x42\x6c\x43\x6c\x44\x6c\x45\x6c\x46\x6c\x47\x6c\x48\x6c\x49\x6c\x4a\x6c\x4b\x6c\x4c\x6c\x4d\x6c\x4e\x6c\x4f\x6c\x50\x6c\x51\x6c\x52\x6c\x53\x6c\x54\x6c\x55\x6c\x56\x6c\x57\x6c\x58\x6c\x59\x6c\x5a\x6c\x5b\x6c\x5c\x6c\x5d\x6c\x5e\x6c\x5f\x6c\x60\x6c\x61\x6c\x62\x6c\x63\x6c\x64\x6c\x65\x6c\x66\x6c\x67\x6c\x68\x6c\x69\x6c\x6a\x6c\x6b\x6c\x6c\x6c\x6d\x6c\x6e\x6c\x6f\x6c\x70\x6c\x71\x6c\x72\x6c\x73\x6c\x74\x6c\x75\x6c\x76\x6c\x77\x6c\x78\x6c\x79\x6c\x7a\x6c\x7b\x6c\x7c\x6c\x7d\x6c\x7e\x6c\x7f\x6c\x80\x6c\x81\x6c\x82\x6c\x83\x6c\x84\x6c\x85\x6c\x86", /* e280 */ "\x6c\x87\x6c\x88\x6c\x89\x6c\x8a\x6c\x8b\x6c\x8c\x6c\x8d\x6c\x8e\x6c\x8f\x6c\x90\x6c\x91\x6c\x92\x6c\x93\x6c\x94\x6c\x95\x6c\x96\x6c\x97\x6c\x98\x6c\x99\x6c\x9a\x6c\x9b\x6c\x9c\x6c\x9d\x6c\x9e\x6c\x9f\x6c\xa0\x6c\xa1\x6c\xa2\x6c\xa3\x6c\xa4\x6c\xa5\x6c\xa6\x6c\xa7\x6c\xa8\x6c\xa9\x6c\xaa\x6c\xab\x6c\xac\x6c\xad\x6c\xae\x6c\xaf\x6c\xb0\x6c\xb1\x6c\xb2\x6c\xb3\x6c\xb4\x6c\xb5\x6c\xb6\x6c\xb7\x6c\xb8\x6c\xb9\x6c\xba\x6c\xbb\x6c\xbc\x6c\xbd\x6c\xbe\x6c\xbf\x6c\xc0\x6c\xc1\x6c\xc2\x6c\xc3\x6c\xc4\x6c\xc5\x6c\xc6\x6c\xc7\x6c\xc8\x6c\xc9\x6c\xca\x6c\xcb\x6c\xcc\x6c\xcd\x6c\xce\x6c\xcf\x6c\xd0\x6c\xd1\x6c\xd2\x6c\xd3\x6c\xd4\x6c\xd5\x6c\xd6\x6c\xd7\x6c\xd8\x6c\xd9\x6c\xda\x6c\xdb\x6c\xdc\x6c\xdd\x6c\xde\x6c\xdf\x6c\xe0\x6c\xe1\x6c\xe2\x6c\xe3\x6c\xe4\x6c\xe5\x6c\xe6\x6c\xe7\x6c\xe8\x6c\xe9\x6c\xea\x6c\xeb\x6c\xec\x6c\xed\x6c\xee\x6c\xef\x6c\xf0\x6c\xf1\x6c\xf2\x6c\xf3\x6c\xf4\x6c\xf5\x6c\xf6\x6c\xf7\x6c\xf8\x6c\xf9\x6c\xfa\x6c\xfb\x6c\xfc\x6c\xfd\x6c\xfe\x6d\x41\x6d\x42\x6d\x43\x6d\x44\x6d\x45\x6d\x46\x6d\x47\x6d\x48", /* e300 */ "\x6d\x49\x6d\x4a\x6d\x4b\x6d\x4c\x6d\x4d\x6d\x4e\x6d\x4f\x6d\x50\x6d\x51\x6d\x52\x6d\x53\x6d\x54\x6d\x55\x6d\x56\x6d\x57\x6d\x58\x6d\x59\x6d\x5a\x6d\x5b\x6d\x5c\x6d\x5d\x6d\x5e\x6d\x5f\x6d\x60\x6d\x61\x6d\x62\x6d\x63\x6d\x64\x6d\x65\x6d\x66\x6d\x67\x6d\x68\x6d\x69\x6d\x6a\x6d\x6b\x6d\x6c\x6d\x6d\x6d\x6e\x6d\x6f\x6d\x70\x6d\x71\x6d\x72\x6d\x73\x6d\x74\x6d\x75\x6d\x76\x6d\x77\x6d\x78\x6d\x79\x6d\x7a\x6d\x7b\x6d\x7c\x6d\x7d\x6d\x7e\x6d\x7f\x6d\x80\x6d\x81\x6d\x82\x6d\x83\x6d\x84\x6d\x85\x6d\x86\x6d\x87\x6d\x88\x6d\x89\x6d\x8a\x6d\x8b\x6d\x8c\x6d\x8d\x6d\x8e\x6d\x8f\x6d\x90\x6d\x91\x6d\x92\x6d\x93\x6d\x94\x6d\x95\x6d\x96\x6d\x97\x6d\x98\x6d\x99\x6d\x9a\x6d\x9b\x6d\x9c\x6d\x9d\x6d\x9e\x6d\x9f\x6d\xa0\x6d\xa1\x6d\xa2\x6d\xa3\x6d\xa4\x6d\xa5\x6d\xa6\x6d\xa7\x6d\xa8\x6d\xa9\x6d\xaa\x6d\xab\x6d\xac\x6d\xad\x6d\xae\x6d\xaf\x6d\xb0\x6d\xb1\x6d\xb2\x6d\xb3\x6d\xb4\x6d\xb5\x6d\xb6\x6d\xb7\x6d\xb8\x6d\xb9\x6d\xba\x6d\xbb\x6d\xbc\x6d\xbd\x6d\xbe\x6d\xbf\x6d\xc0\x6d\xc1\x6d\xc2\x6d\xc3\x6d\xc4\x6d\xc5\x6d\xc6\x6d\xc7\x6d\xc8", /* e380 */ "\x6d\xc9\x6d\xca\x6d\xcb\x6d\xcc\x6d\xcd\x6d\xce\x6d\xcf\x6d\xd0\x6d\xd1\x6d\xd2\x6d\xd3\x6d\xd4\x6d\xd5\x6d\xd6\x6d\xd7\x6d\xd8\x6d\xd9\x6d\xda\x6d\xdb\x6d\xdc\x6d\xdd\x6d\xde\x6d\xdf\x6d\xe0\x6d\xe1\x6d\xe2\x6d\xe3\x6d\xe4\x6d\xe5\x6d\xe6\x6d\xe7\x6d\xe8\x6d\xe9\x6d\xea\x6d\xeb\x6d\xec\x6d\xed\x6d\xee\x6d\xef\x6d\xf0\x6d\xf1\x6d\xf2\x6d\xf3\x6d\xf4\x6d\xf5\x6d\xf6\x6d\xf7\x6d\xf8\x6d\xf9\x6d\xfa\x6d\xfb\x6d\xfc\x6d\xfd\x6d\xfe\x6e\x41\x6e\x42\x6e\x43\x6e\x44\x6e\x45\x6e\x46\x6e\x47\x6e\x48\x6e\x49\x6e\x4a\x6e\x4b\x6e\x4c\x6e\x4d\x6e\x4e\x6e\x4f\x6e\x50\x6e\x51\x6e\x52\x6e\x53\x6e\x54\x6e\x55\x6e\x56\x6e\x57\x6e\x58\x6e\x59\x6e\x5a\x6e\x5b\x6e\x5c\x6e\x5d\x6e\x5e\x6e\x5f\x6e\x60\x6e\x61\x6e\x62\x6e\x63\x6e\x64\x6e\x65\x6e\x66\x6e\x67\x6e\x68\x6e\x69\x6e\x6a\x6e\x6b\x6e\x6c\x6e\x6d\x6e\x6e\x6e\x6f\x6e\x70\x6e\x71\x6e\x72\x6e\x73\x6e\x74\x6e\x75\x6e\x76\x6e\x77\x6e\x78\x6e\x79\x6e\x7a\x6e\x7b\x6e\x7c\x6e\x7d\x6e\x7e\x6e\x7f\x6e\x80\x6e\x81\x6e\x82\x6e\x83\x6e\x84\x6e\x85\x6e\x86\x6e\x87\x6e\x88\x6e\x89\x6e\x8a", /* e400 */ "\x6e\x8b\x6e\x8c\x6e\x8d\x6e\x8e\x6e\x8f\x6e\x90\x6e\x91\x6e\x92\x6e\x93\x6e\x94\x6e\x95\x6e\x96\x6e\x97\x6e\x98\x6e\x99\x6e\x9a\x6e\x9b\x6e\x9c\x6e\x9d\x6e\x9e\x6e\x9f\x6e\xa0\x6e\xa1\x6e\xa2\x6e\xa3\x6e\xa4\x6e\xa5\x6e\xa6\x6e\xa7\x6e\xa8\x6e\xa9\x6e\xaa\x6e\xab\x6e\xac\x6e\xad\x6e\xae\x6e\xaf\x6e\xb0\x6e\xb1\x6e\xb2\x6e\xb3\x6e\xb4\x6e\xb5\x6e\xb6\x6e\xb7\x6e\xb8\x6e\xb9\x6e\xba\x6e\xbb\x6e\xbc\x6e\xbd\x6e\xbe\x6e\xbf\x6e\xc0\x6e\xc1\x6e\xc2\x6e\xc3\x6e\xc4\x6e\xc5\x6e\xc6\x6e\xc7\x6e\xc8\x6e\xc9\x6e\xca\x6e\xcb\x6e\xcc\x6e\xcd\x6e\xce\x6e\xcf\x6e\xd0\x6e\xd1\x6e\xd2\x6e\xd3\x6e\xd4\x6e\xd5\x6e\xd6\x6e\xd7\x6e\xd8\x6e\xd9\x6e\xda\x6e\xdb\x6e\xdc\x6e\xdd\x6e\xde\x6e\xdf\x6e\xe0\x6e\xe1\x6e\xe2\x6e\xe3\x6e\xe4\x6e\xe5\x6e\xe6\x6e\xe7\x6e\xe8\x6e\xe9\x6e\xea\x6e\xeb\x6e\xec\x6e\xed\x6e\xee\x6e\xef\x6e\xf0\x6e\xf1\x6e\xf2\x6e\xf3\x6e\xf4\x6e\xf5\x6e\xf6\x6e\xf7\x6e\xf8\x6e\xf9\x6e\xfa\x6e\xfb\x6e\xfc\x6e\xfd\x6e\xfe\x6f\x41\x6f\x42\x6f\x43\x6f\x44\x6f\x45\x6f\x46\x6f\x47\x6f\x48\x6f\x49\x6f\x4a\x6f\x4b\x6f\x4c", /* e480 */ "\x6f\x4d\x6f\x4e\x6f\x4f\x6f\x50\x6f\x51\x6f\x52\x6f\x53\x6f\x54\x6f\x55\x6f\x56\x6f\x57\x6f\x58\x6f\x59\x6f\x5a\x6f\x5b\x6f\x5c\x6f\x5d\x6f\x5e\x6f\x5f\x6f\x60\x6f\x61\x6f\x62\x6f\x63\x6f\x64\x6f\x65\x6f\x66\x6f\x67\x6f\x68\x6f\x69\x6f\x6a\x6f\x6b\x6f\x6c\x6f\x6d\x6f\x6e\x6f\x6f\x6f\x70\x6f\x71\x6f\x72\x6f\x73\x6f\x74\x6f\x75\x6f\x76\x6f\x77\x6f\x78\x6f\x79\x6f\x7a\x6f\x7b\x6f\x7c\x6f\x7d\x6f\x7e\x6f\x7f\x6f\x80\x6f\x81\x6f\x82\x6f\x83\x6f\x84\x6f\x85\x6f\x86\x6f\x87\x6f\x88\x6f\x89\x6f\x8a\x6f\x8b\x6f\x8c\x6f\x8d\x6f\x8e\x6f\x8f\x6f\x90\x6f\x91\x6f\x92\x6f\x93\x6f\x94\x6f\x95\x6f\x96\x6f\x97\x6f\x98\x6f\x99\x6f\x9a\x6f\x9b\x6f\x9c\x6f\x9d\x6f\x9e\x6f\x9f\x6f\xa0\x6f\xa1\x6f\xa2\x6f\xa3\x6f\xa4\x6f\xa5\x6f\xa6\x6f\xa7\x6f\xa8\x6f\xa9\x6f\xaa\x6f\xab\x6f\xac\x6f\xad\x6f\xae\x6f\xaf\x6f\xb0\x6f\xb1\x6f\xb2\x6f\xb3\x6f\xb4\x6f\xb5\x6f\xb6\x6f\xb7\x6f\xb8\x6f\xb9\x6f\xba\x6f\xbb\x6f\xbc\x6f\xbd\x6f\xbe\x6f\xbf\x6f\xc0\x6f\xc1\x6f\xc2\x6f\xc3\x6f\xc4\x6f\xc5\x6f\xc6\x6f\xc7\x6f\xc8\x6f\xc9\x6f\xca\x6f\xcb\x6f\xcc", /* e500 */ "\x6f\xcd\x6f\xce\x6f\xcf\x6f\xd0\x6f\xd1\x6f\xd2\x6f\xd3\x6f\xd4\x6f\xd5\x6f\xd6\x6f\xd7\x6f\xd8\x6f\xd9\x6f\xda\x6f\xdb\x6f\xdc\x6f\xdd\x6f\xde\x6f\xdf\x6f\xe0\x6f\xe1\x6f\xe2\x6f\xe3\x6f\xe4\x6f\xe5\x6f\xe6\x6f\xe7\x6f\xe8\x6f\xe9\x6f\xea\x6f\xeb\x6f\xec\x6f\xed\x6f\xee\x6f\xef\x6f\xf0\x6f\xf1\x6f\xf2\x6f\xf3\x6f\xf4\x6f\xf5\x6f\xf6\x6f\xf7\x6f\xf8\x6f\xf9\x6f\xfa\x6f\xfb\x6f\xfc\x6f\xfd\x6f\xfe\x70\x41\x70\x42\x70\x43\x70\x44\x70\x45\x70\x46\x70\x47\x70\x48\x70\x49\x70\x4a\x70\x4b\x70\x4c\x70\x4d\x70\x4e\x70\x4f\x70\x50\x70\x51\x70\x52\x70\x53\x70\x54\x70\x55\x70\x56\x70\x57\x70\x58\x70\x59\x70\x5a\x70\x5b\x70\x5c\x70\x5d\x70\x5e\x70\x5f\x70\x60\x70\x61\x70\x62\x70\x63\x70\x64\x70\x65\x70\x66\x70\x67\x70\x68\x70\x69\x70\x6a\x70\x6b\x70\x6c\x70\x6d\x70\x6e\x70\x6f\x70\x70\x70\x71\x70\x72\x70\x73\x70\x74\x70\x75\x70\x76\x70\x77\x70\x78\x70\x79\x70\x7a\x70\x7b\x70\x7c\x70\x7d\x70\x7e\x70\x7f\x70\x80\x70\x81\x70\x82\x70\x83\x70\x84\x70\x85\x70\x86\x70\x87\x70\x88\x70\x89\x70\x8a\x70\x8b\x70\x8c\x70\x8d\x70\x8e", /* e580 */ "\x70\x8f\x70\x90\x70\x91\x70\x92\x70\x93\x70\x94\x70\x95\x70\x96\x70\x97\x70\x98\x70\x99\x70\x9a\x70\x9b\x70\x9c\x70\x9d\x70\x9e\x70\x9f\x70\xa0\x70\xa1\x70\xa2\x70\xa3\x70\xa4\x70\xa5\x70\xa6\x70\xa7\x70\xa8\x70\xa9\x70\xaa\x70\xab\x70\xac\x70\xad\x70\xae\x70\xaf\x70\xb0\x70\xb1\x70\xb2\x70\xb3\x70\xb4\x70\xb5\x70\xb6\x70\xb7\x70\xb8\x70\xb9\x70\xba\x70\xbb\x70\xbc\x70\xbd\x70\xbe\x70\xbf\x70\xc0\x70\xc1\x70\xc2\x70\xc3\x70\xc4\x70\xc5\x70\xc6\x70\xc7\x70\xc8\x70\xc9\x70\xca\x70\xcb\x70\xcc\x70\xcd\x70\xce\x70\xcf\x70\xd0\x70\xd1\x70\xd2\x70\xd3\x70\xd4\x70\xd5\x70\xd6\x70\xd7\x70\xd8\x70\xd9\x70\xda\x70\xdb\x70\xdc\x70\xdd\x70\xde\x70\xdf\x70\xe0\x70\xe1\x70\xe2\x70\xe3\x70\xe4\x70\xe5\x70\xe6\x70\xe7\x70\xe8\x70\xe9\x70\xea\x70\xeb\x70\xec\x70\xed\x70\xee\x70\xef\x70\xf0\x70\xf1\x70\xf2\x70\xf3\x70\xf4\x70\xf5\x70\xf6\x70\xf7\x70\xf8\x70\xf9\x70\xfa\x70\xfb\x70\xfc\x70\xfd\x70\xfe\x71\x41\x71\x42\x71\x43\x71\x44\x71\x45\x71\x46\x71\x47\x71\x48\x71\x49\x71\x4a\x71\x4b\x71\x4c\x71\x4d\x71\x4e\x71\x4f\x71\x50", /* e600 */ "\x71\x51\x71\x52\x71\x53\x71\x54\x71\x55\x71\x56\x71\x57\x71\x58\x71\x59\x71\x5a\x71\x5b\x71\x5c\x71\x5d\x71\x5e\x71\x5f\x71\x60\x71\x61\x71\x62\x71\x63\x71\x64\x71\x65\x71\x66\x71\x67\x71\x68\x71\x69\x71\x6a\x71\x6b\x71\x6c\x71\x6d\x71\x6e\x71\x6f\x71\x70\x71\x71\x71\x72\x71\x73\x71\x74\x71\x75\x71\x76\x71\x77\x71\x78\x71\x79\x71\x7a\x71\x7b\x71\x7c\x71\x7d\x71\x7e\x71\x7f\x71\x80\x71\x81\x71\x82\x71\x83\x71\x84\x71\x85\x71\x86\x71\x87\x71\x88\x71\x89\x71\x8a\x71\x8b\x71\x8c\x71\x8d\x71\x8e\x71\x8f\x71\x90\x71\x91\x71\x92\x71\x93\x71\x94\x71\x95\x71\x96\x71\x97\x71\x98\x71\x99\x71\x9a\x71\x9b\x71\x9c\x71\x9d\x71\x9e\x71\x9f\x71\xa0\x71\xa1\x71\xa2\x71\xa3\x71\xa4\x71\xa5\x71\xa6\x71\xa7\x71\xa8\x71\xa9\x71\xaa\x71\xab\x71\xac\x71\xad\x71\xae\x71\xaf\x71\xb0\x71\xb1\x71\xb2\x71\xb3\x71\xb4\x71\xb5\x71\xb6\x71\xb7\x71\xb8\x71\xb9\x71\xba\x71\xbb\x71\xbc\x71\xbd\x71\xbe\x71\xbf\x71\xc0\x71\xc1\x71\xc2\x71\xc3\x71\xc4\x71\xc5\x71\xc6\x71\xc7\x71\xc8\x71\xc9\x71\xca\x71\xcb\x71\xcc\x71\xcd\x71\xce\x71\xcf\x71\xd0", /* e680 */ "\x71\xd1\x71\xd2\x71\xd3\x71\xd4\x71\xd5\x71\xd6\x71\xd7\x71\xd8\x71\xd9\x71\xda\x71\xdb\x71\xdc\x71\xdd\x71\xde\x71\xdf\x71\xe0\x71\xe1\x71\xe2\x71\xe3\x71\xe4\x71\xe5\x71\xe6\x71\xe7\x71\xe8\x71\xe9\x71\xea\x71\xeb\x71\xec\x71\xed\x71\xee\x71\xef\x71\xf0\x71\xf1\x71\xf2\x71\xf3\x71\xf4\x71\xf5\x71\xf6\x71\xf7\x71\xf8\x71\xf9\x71\xfa\x71\xfb\x71\xfc\x71\xfd\x71\xfe\x72\x41\x72\x42\x72\x43\x72\x44\x72\x45\x72\x46\x72\x47\x72\x48\x72\x49\x72\x4a\x72\x4b\x72\x4c\x72\x4d\x72\x4e\x72\x4f\x72\x50\x72\x51\x72\x52\x72\x53\x72\x54\x72\x55\x72\x56\x72\x57\x72\x58\x72\x59\x72\x5a\x72\x5b\x72\x5c\x72\x5d\x72\x5e\x72\x5f\x72\x60\x72\x61\x72\x62\x72\x63\x72\x64\x72\x65\x72\x66\x72\x67\x72\x68\x72\x69\x72\x6a\x72\x6b\x72\x6c\x72\x6d\x72\x6e\x72\x6f\x72\x70\x72\x71\x72\x72\x72\x73\x72\x74\x72\x75\x72\x76\x72\x77\x72\x78\x72\x79\x72\x7a\x72\x7b\x72\x7c\x72\x7d\x72\x7e\x72\x7f\x72\x80\x72\x81\x72\x82\x72\x83\x72\x84\x72\x85\x72\x86\x72\x87\x72\x88\x72\x89\x72\x8a\x72\x8b\x72\x8c\x72\x8d\x72\x8e\x72\x8f\x72\x90\x72\x91\x72\x92", /* e700 */ "\x72\x93\x72\x94\x72\x95\x72\x96\x72\x97\x72\x98\x72\x99\x72\x9a\x72\x9b\x72\x9c\x72\x9d\x72\x9e\x72\x9f\x72\xa0\x72\xa1\x72\xa2\x72\xa3\x72\xa4\x72\xa5\x72\xa6\x72\xa7\x72\xa8\x72\xa9\x72\xaa\x72\xab\x72\xac\x72\xad\x72\xae\x72\xaf\x72\xb0\x72\xb1\x72\xb2\x72\xb3\x72\xb4\x72\xb5\x72\xb6\x72\xb7\x72\xb8\x72\xb9\x72\xba\x72\xbb\x72\xbc\x72\xbd\x72\xbe\x72\xbf\x72\xc0\x72\xc1\x72\xc2\x72\xc3\x72\xc4\x72\xc5\x72\xc6\x72\xc7\x72\xc8\x72\xc9\x72\xca\x72\xcb\x72\xcc\x72\xcd\x72\xce\x72\xcf\x72\xd0\x72\xd1\x72\xd2\x72\xd3\x72\xd4\x72\xd5\x72\xd6\x72\xd7\x72\xd8\x72\xd9\x72\xda\x72\xdb\x72\xdc\x72\xdd\x72\xde\x72\xdf\x72\xe0\x72\xe1\x72\xe2\x72\xe3\x72\xe4\x72\xe5\x72\xe6\x72\xe7\x72\xe8\x72\xe9\x72\xea\x72\xeb\x72\xec\x72\xed\x72\xee\x72\xef\x72\xf0\x72\xf1\x72\xf2\x72\xf3\x72\xf4\x72\xf5\x72\xf6\x72\xf7\x72\xf8\x72\xf9\x72\xfa\x72\xfb\x72\xfc\x72\xfd\x72\xfe\x73\x41\x73\x42\x73\x43\x73\x44\x73\x45\x73\x46\x73\x47\x73\x48\x73\x49\x73\x4a\x73\x4b\x73\x4c\x73\x4d\x73\x4e\x73\x4f\x73\x50\x73\x51\x73\x52\x73\x53\x73\x54", /* e780 */ "\x73\x55\x73\x56\x73\x57\x73\x58\x73\x59\x73\x5a\x73\x5b\x73\x5c\x73\x5d\x73\x5e\x73\x5f\x73\x60\x73\x61\x73\x62\x73\x63\x73\x64\x73\x65\x73\x66\x73\x67\x73\x68\x73\x69\x73\x6a\x73\x6b\x73\x6c\x73\x6d\x73\x6e\x73\x6f\x73\x70\x73\x71\x73\x72\x73\x73\x73\x74\x73\x75\x73\x76\x73\x77\x73\x78\x73\x79\x73\x7a\x73\x7b\x73\x7c\x73\x7d\x73\x7e\x73\x7f\x73\x80\x73\x81\x73\x82\x73\x83\x73\x84\x73\x85\x73\x86\x73\x87\x73\x88\x73\x89\x73\x8a\x73\x8b\x73\x8c\x73\x8d\x73\x8e\x73\x8f\x73\x90\x73\x91\x73\x92\x73\x93\x73\x94\x73\x95\x73\x96\x73\x97\x73\x98\x73\x99\x73\x9a\x73\x9b\x73\x9c\x73\x9d\x73\x9e\x73\x9f\x73\xa0\x73\xa1\x73\xa2\x73\xa3\x73\xa4\x73\xa5\x73\xa6\x73\xa7\x73\xa8\x73\xa9\x73\xaa\x73\xab\x73\xac\x73\xad\x73\xae\x73\xaf\x73\xb0\x73\xb1\x73\xb2\x73\xb3\x73\xb4\x73\xb5\x73\xb6\x73\xb7\x73\xb8\x73\xb9\x73\xba\x73\xbb\x73\xbc\x73\xbd\x73\xbe\x73\xbf\x73\xc0\x73\xc1\x73\xc2\x73\xc3\x73\xc4\x73\xc5\x73\xc6\x73\xc7\x73\xc8\x73\xc9\x73\xca\x73\xcb\x73\xcc\x73\xcd\x73\xce\x73\xcf\x73\xd0\x73\xd1\x73\xd2\x73\xd3\x73\xd4", /* e800 */ "\x73\xd5\x73\xd6\x73\xd7\x73\xd8\x73\xd9\x73\xda\x73\xdb\x73\xdc\x73\xdd\x73\xde\x73\xdf\x73\xe0\x73\xe1\x73\xe2\x73\xe3\x73\xe4\x73\xe5\x73\xe6\x73\xe7\x73\xe8\x73\xe9\x73\xea\x73\xeb\x73\xec\x73\xed\x73\xee\x73\xef\x73\xf0\x73\xf1\x73\xf2\x73\xf3\x73\xf4\x73\xf5\x73\xf6\x73\xf7\x73\xf8\x73\xf9\x73\xfa\x73\xfb\x73\xfc\x73\xfd\x73\xfe\x74\x41\x74\x42\x74\x43\x74\x44\x74\x45\x74\x46\x74\x47\x74\x48\x74\x49\x74\x4a\x74\x4b\x74\x4c\x74\x4d\x74\x4e\x74\x4f\x74\x50\x74\x51\x74\x52\x74\x53\x74\x54\x74\x55\x74\x56\x74\x57\x74\x58\x74\x59\x74\x5a\x74\x5b\x74\x5c\x74\x5d\x74\x5e\x74\x5f\x74\x60\x74\x61\x74\x62\x74\x63\x74\x64\x74\x65\x74\x66\x74\x67\x74\x68\x74\x69\x74\x6a\x74\x6b\x74\x6c\x74\x6d\x74\x6e\x74\x6f\x74\x70\x74\x71\x74\x72\x74\x73\x74\x74\x74\x75\x74\x76\x74\x77\x74\x78\x74\x79\x74\x7a\x74\x7b\x74\x7c\x74\x7d\x74\x7e\x74\x7f\x74\x80\x74\x81\x74\x82\x74\x83\x74\x84\x74\x85\x74\x86\x74\x87\x74\x88\x74\x89\x74\x8a\x74\x8b\x74\x8c\x74\x8d\x74\x8e\x74\x8f\x74\x90\x74\x91\x74\x92\x74\x93\x74\x94\x74\x95\x74\x96", /* e880 */ "\x74\x97\x74\x98\x74\x99\x74\x9a\x74\x9b\x74\x9c\x74\x9d\x74\x9e\x74\x9f\x74\xa0\x74\xa1\x74\xa2\x74\xa3\x74\xa4\x74\xa5\x74\xa6\x74\xa7\x74\xa8\x74\xa9\x74\xaa\x74\xab\x74\xac\x74\xad\x74\xae\x74\xaf\x74\xb0\x74\xb1\x74\xb2\x74\xb3\x74\xb4\x74\xb5\x74\xb6\x74\xb7\x74\xb8\x74\xb9\x74\xba\x74\xbb\x74\xbc\x74\xbd\x74\xbe\x74\xbf\x74\xc0\x74\xc1\x74\xc2\x74\xc3\x74\xc4\x74\xc5\x74\xc6\x74\xc7\x74\xc8\x74\xc9\x74\xca\x74\xcb\x74\xcc\x74\xcd\x74\xce\x74\xcf\x74\xd0\x74\xd1\x74\xd2\x74\xd3\x74\xd4\x74\xd5\x74\xd6\x74\xd7\x74\xd8\x74\xd9\x74\xda\x74\xdb\x74\xdc\x74\xdd\x74\xde\x74\xdf\x74\xe0\x74\xe1\x74\xe2\x74\xe3\x74\xe4\x74\xe5\x74\xe6\x74\xe7\x74\xe8\x74\xe9\x74\xea\x74\xeb\x74\xec\x74\xed\x74\xee\x74\xef\x74\xf0\x74\xf1\x74\xf2\x74\xf3\x74\xf4\x74\xf5\x74\xf6\x74\xf7\x74\xf8\x74\xf9\x74\xfa\x74\xfb\x74\xfc\x74\xfd\x74\xfe\x75\x41\x75\x42\x75\x43\x75\x44\x75\x45\x75\x46\x75\x47\x75\x48\x75\x49\x75\x4a\x75\x4b\x75\x4c\x75\x4d\x75\x4e\x75\x4f\x75\x50\x75\x51\x75\x52\x75\x53\x75\x54\x75\x55\x75\x56\x75\x57\x75\x58", /* e900 */ "\x75\x59\x75\x5a\x75\x5b\x75\x5c\x75\x5d\x75\x5e\x75\x5f\x75\x60\x75\x61\x75\x62\x75\x63\x75\x64\x75\x65\x75\x66\x75\x67\x75\x68\x75\x69\x75\x6a\x75\x6b\x75\x6c\x75\x6d\x75\x6e\x75\x6f\x75\x70\x75\x71\x75\x72\x75\x73\x75\x74\x75\x75\x75\x76\x75\x77\x75\x78\x75\x79\x75\x7a\x75\x7b\x75\x7c\x75\x7d\x75\x7e\x75\x7f\x75\x80\x75\x81\x75\x82\x75\x83\x75\x84\x75\x85\x75\x86\x75\x87\x75\x88\x75\x89\x75\x8a\x75\x8b\x75\x8c\x75\x8d\x75\x8e\x75\x8f\x75\x90\x75\x91\x75\x92\x75\x93\x75\x94\x75\x95\x75\x96\x75\x97\x75\x98\x75\x99\x75\x9a\x75\x9b\x75\x9c\x75\x9d\x75\x9e\x75\x9f\x75\xa0\x75\xa1\x75\xa2\x75\xa3\x75\xa4\x75\xa5\x75\xa6\x75\xa7\x75\xa8\x75\xa9\x75\xaa\x75\xab\x75\xac\x75\xad\x75\xae\x75\xaf\x75\xb0\x75\xb1\x75\xb2\x75\xb3\x75\xb4\x75\xb5\x75\xb6\x75\xb7\x75\xb8\x75\xb9\x75\xba\x75\xbb\x75\xbc\x75\xbd\x75\xbe\x75\xbf\x75\xc0\x75\xc1\x75\xc2\x75\xc3\x75\xc4\x75\xc5\x75\xc6\x75\xc7\x75\xc8\x75\xc9\x75\xca\x75\xcb\x75\xcc\x75\xcd\x75\xce\x75\xcf\x75\xd0\x75\xd1\x75\xd2\x75\xd3\x75\xd4\x75\xd5\x75\xd6\x75\xd7\x75\xd8", /* e980 */ "\x75\xd9\x75\xda\x75\xdb\x75\xdc\x75\xdd\x75\xde\x75\xdf\x75\xe0\x75\xe1\x75\xe2\x75\xe3\x75\xe4\x75\xe5\x75\xe6\x75\xe7\x75\xe8\x75\xe9\x75\xea\x75\xeb\x75\xec\x75\xed\x75\xee\x75\xef\x75\xf0\x75\xf1\x75\xf2\x75\xf3\x75\xf4\x75\xf5\x75\xf6\x75\xf7\x75\xf8\x75\xf9\x75\xfa\x75\xfb\x75\xfc\x75\xfd\x75\xfe\x76\x41\x76\x42\x76\x43\x76\x44\x76\x45\x76\x46\x76\x47\x76\x48\x76\x49\x76\x4a\x76\x4b\x76\x4c\x76\x4d\x76\x4e\x76\x4f\x76\x50\x76\x51\x76\x52\x76\x53\x76\x54\x76\x55\x76\x56\x76\x57\x76\x58\x76\x59\x76\x5a\x76\x5b\x76\x5c\x76\x5d\x76\x5e\x76\x5f\x76\x60\x76\x61\x76\x62\x76\x63\x76\x64\x76\x65\x76\x66\x76\x67\x76\x68\x76\x69\x76\x6a\x76\x6b\x76\x6c\x76\x6d\x76\x6e\x76\x6f\x76\x70\x76\x71\x76\x72\x76\x73\x76\x74\x76\x75\x76\x76\x76\x77\x76\x78\x76\x79\x76\x7a\x76\x7b\x76\x7c\x76\x7d\x76\x7e\x76\x7f\x76\x80\x76\x81\x76\x82\x76\x83\x76\x84\x76\x85\x76\x86\x76\x87\x76\x88\x76\x89\x76\x8a\x76\x8b\x76\x8c\x76\x8d\x76\x8e\x76\x8f\x76\x90\x76\x91\x76\x92\x76\x93\x76\x94\x76\x95\x76\x96\x76\x97\x76\x98\x76\x99\x76\x9a", /* ea00 */ "\x76\x9b\x76\x9c\x76\x9d\x76\x9e\x76\x9f\x76\xa0\x76\xa1\x76\xa2\x76\xa3\x76\xa4\x76\xa5\x76\xa6\x76\xa7\x76\xa8\x76\xa9\x76\xaa\x76\xab\x76\xac\x76\xad\x76\xae\x76\xaf\x76\xb0\x76\xb1\x76\xb2\x76\xb3\x76\xb4\x76\xb5\x76\xb6\x76\xb7\x76\xb8\x76\xb9\x76\xba\x76\xbb\x76\xbc\x76\xbd\x76\xbe\x76\xbf\x76\xc0\x76\xc1\x76\xc2\x76\xc3\x76\xc4\x76\xc5\x76\xc6\x76\xc7\x76\xc8\x76\xc9\x76\xca\x76\xcb\x76\xcc\x76\xcd\x76\xce\x76\xcf\x76\xd0\x76\xd1\x76\xd2\x76\xd3\x76\xd4\x76\xd5\x76\xd6\x76\xd7\x76\xd8\x76\xd9\x76\xda\x76\xdb\x76\xdc\x76\xdd\x76\xde\x76\xdf\x76\xe0\x76\xe1\x76\xe2\x76\xe3\x76\xe4\x76\xe5\x76\xe6\x76\xe7\x76\xe8\x76\xe9\x76\xea\x76\xeb\x76\xec\x76\xed\x76\xee\x76\xef\x76\xf0\x76\xf1\x76\xf2\x76\xf3\x76\xf4\x76\xf5\x76\xf6\x76\xf7\x76\xf8\x76\xf9\x76\xfa\x76\xfb\x76\xfc\x76\xfd\x76\xfe\x77\x41\x77\x42\x77\x43\x77\x44\x77\x45\x77\x46\x77\x47\x77\x48\x77\x49\x77\x4a\x77\x4b\x77\x4c\x77\x4d\x77\x4e\x77\x4f\x77\x50\x77\x51\x77\x52\x77\x53\x77\x54\x77\x55\x77\x56\x77\x57\x77\x58\x77\x59\x77\x5a\x77\x5b\x77\x5c", /* ea80 */ "\x77\x5d\x77\x5e\x77\x5f\x77\x60\x77\x61\x77\x62\x77\x63\x77\x64\x77\x65\x77\x66\x77\x67\x77\x68\x77\x69\x77\x6a\x77\x6b\x77\x6c\x77\x6d\x77\x6e\x77\x6f\x77\x70\x77\x71\x77\x72\x77\x73\x77\x74\x77\x75\x77\x76\x77\x77\x77\x78\x77\x79\x77\x7a\x77\x7b\x77\x7c\x77\x7d\x77\x7e\x77\x7f\x77\x80\x77\x81\x77\x82\x77\x83\x77\x84\x77\x85\x77\x86\x77\x87\x77\x88\x77\x89\x77\x8a\x77\x8b\x77\x8c\x77\x8d\x77\x8e\x77\x8f\x77\x90\x77\x91\x77\x92\x77\x93\x77\x94\x77\x95\x77\x96\x77\x97\x77\x98\x77\x99\x77\x9a\x77\x9b\x77\x9c\x77\x9d\x77\x9e\x77\x9f\x77\xa0\x77\xa1\x77\xa2\x77\xa3\x77\xa4\x77\xa5\x77\xa6\x77\xa7\x77\xa8\x77\xa9\x77\xaa\x77\xab\x77\xac\x77\xad\x77\xae\x77\xaf\x77\xb0\x77\xb1\x77\xb2\x77\xb3\x77\xb4\x77\xb5\x77\xb6\x77\xb7\x77\xb8\x77\xb9\x77\xba\x77\xbb\x77\xbc\x77\xbd\x77\xbe\x77\xbf\x77\xc0\x77\xc1\x77\xc2\x77\xc3\x77\xc4\x77\xc5\x77\xc6\x77\xc7\x77\xc8\x77\xc9\x77\xca\x77\xcb\x77\xcc\x77\xcd\x77\xce\x77\xcf\x77\xd0\x77\xd1\x77\xd2\x77\xd3\x77\xd4\x77\xd5\x77\xd6\x77\xd7\x77\xd8\x77\xd9\x77\xda\x77\xdb\x77\xdc", /* eb00 */ "\x77\xdd\x77\xde\x77\xdf\x77\xe0\x77\xe1\x77\xe2\x77\xe3\x77\xe4\x77\xe5\x77\xe6\x77\xe7\x77\xe8\x77\xe9\x77\xea\x77\xeb\x77\xec\x77\xed\x77\xee\x77\xef\x77\xf0\x77\xf1\x77\xf2\x77\xf3\x77\xf4\x77\xf5\x77\xf6\x77\xf7\x77\xf8\x77\xf9\x77\xfa\x77\xfb\x77\xfc\x77\xfd\x77\xfe\x78\x41\x78\x42\x78\x43\x78\x44\x78\x45\x78\x46\x78\x47\x78\x48\x78\x49\x78\x4a\x78\x4b\x78\x4c\x78\x4d\x78\x4e\x78\x4f\x78\x50\x78\x51\x78\x52\x78\x53\x78\x54\x78\x55\x78\x56\x78\x57\x78\x58\x78\x59\x78\x5a\x78\x5b\x78\x5c\x78\x5d\x78\x5e\x78\x5f\x78\x60\x78\x61\x78\x62\x78\x63\x78\x64\x78\x65\x78\x66\x78\x67\x78\x68\x78\x69\x78\x6a\x78\x6b\x78\x6c\x78\x6d\x78\x6e\x78\x6f\x78\x70\x78\x71\x78\x72\x78\x73\x78\x74\x78\x75\x78\x76\x78\x77\x78\x78\x78\x79\x78\x7a\x78\x7b\x78\x7c\x78\x7d\x78\x7e\x78\x7f\x78\x80\x78\x81\x78\x82\x78\x83\x78\x84\x78\x85\x78\x86\x78\x87\x78\x88\x78\x89\x78\x8a\x78\x8b\x78\x8c\x78\x8d\x78\x8e\x78\x8f\x78\x90\x78\x91\x78\x92\x78\x93\x78\x94\x78\x95\x78\x96\x78\x97\x78\x98\x78\x99\x78\x9a\x78\x9b\x78\x9c\x78\x9d\x78\x9e", /* eb80 */ "\x78\x9f\x78\xa0\x78\xa1\x78\xa2\x78\xa3\x78\xa4\x78\xa5\x78\xa6\x78\xa7\x78\xa8\x78\xa9\x78\xaa\x78\xab\x78\xac\x78\xad\x78\xae\x78\xaf\x78\xb0\x78\xb1\x78\xb2\x78\xb3\x78\xb4\x78\xb5\x78\xb6\x78\xb7\x78\xb8\x78\xb9\x78\xba\x78\xbb\x78\xbc\x78\xbd\x78\xbe\x78\xbf\x78\xc0\x78\xc1\x78\xc2\x78\xc3\x78\xc4\x78\xc5\x78\xc6\x78\xc7\x78\xc8\x78\xc9\x78\xca\x78\xcb\x78\xcc\x78\xcd\x78\xce\x78\xcf\x78\xd0\x78\xd1\x78\xd2\x78\xd3\x78\xd4\x78\xd5\x78\xd6\x78\xd7\x78\xd8\x78\xd9\x78\xda\x78\xdb\x78\xdc\x78\xdd\x78\xde\x78\xdf\x78\xe0\x78\xe1\x78\xe2\x78\xe3\x78\xe4\x78\xe5\x78\xe6\x78\xe7\x78\xe8\x78\xe9\x78\xea\x78\xeb\x78\xec\x78\xed\x78\xee\x78\xef\x78\xf0\x78\xf1\x78\xf2\x78\xf3\x78\xf4\x78\xf5\x78\xf6\x78\xf7\x78\xf8\x78\xf9\x78\xfa\x78\xfb\x78\xfc\x78\xfd\x78\xfe\x79\x41\x79\x42\x79\x43\x79\x44\x79\x45\x79\x46\x79\x47\x79\x48\x79\x49\x79\x4a\x79\x4b\x79\x4c\x79\x4d\x79\x4e\x79\x4f\x79\x50\x79\x51\x79\x52\x79\x53\x79\x54\x79\x55\x79\x56\x79\x57\x79\x58\x79\x59\x79\x5a\x79\x5b\x79\x5c\x79\x5d\x79\x5e\x79\x5f\x79\x60", /* ec00 */ "\x79\x61\x79\x62\x79\x63\x79\x64\x79\x65\x79\x66\x79\x67\x79\x68\x79\x69\x79\x6a\x79\x6b\x79\x6c\x79\x6d\x79\x6e\x79\x6f\x79\x70\x79\x71\x79\x72\x79\x73\x79\x74\x79\x75\x79\x76\x79\x77\x79\x78\x79\x79\x79\x7a\x79\x7b\x79\x7c\x79\x7d\x79\x7e\x79\x7f\x79\x80\x79\x81\x79\x82\x79\x83\x79\x84\x79\x85\x79\x86\x79\x87\x79\x88\x79\x89\x79\x8a\x79\x8b\x79\x8c\x79\x8d\x79\x8e\x79\x8f\x79\x90\x79\x91\x79\x92\x79\x93\x79\x94\x79\x95\x79\x96\x79\x97\x79\x98\x79\x99\x79\x9a\x79\x9b\x79\x9c\x79\x9d\x79\x9e\x79\x9f\x79\xa0\x79\xa1\x79\xa2\x79\xa3\x79\xa4\x79\xa5\x79\xa6\x79\xa7\x79\xa8\x79\xa9\x79\xaa\x79\xab\x79\xac\x79\xad\x79\xae\x79\xaf\x79\xb0\x79\xb1\x79\xb2\x79\xb3\x79\xb4\x79\xb5\x79\xb6\x79\xb7\x79\xb8\x79\xb9\x79\xba\x79\xbb\x79\xbc\x79\xbd\x79\xbe\x79\xbf\x79\xc0\x79\xc1\x79\xc2\x79\xc3\x79\xc4\x79\xc5\x79\xc6\x79\xc7\x79\xc8\x79\xc9\x79\xca\x79\xcb\x79\xcc\x79\xcd\x79\xce\x79\xcf\x79\xd0\x79\xd1\x79\xd2\x79\xd3\x79\xd4\x79\xd5\x79\xd6\x79\xd7\x79\xd8\x79\xd9\x79\xda\x79\xdb\x79\xdc\x79\xdd\x79\xde\x79\xdf\x79\xe0", /* ec80 */ "\x79\xe1\x79\xe2\x79\xe3\x79\xe4\x79\xe5\x79\xe6\x79\xe7\x79\xe8\x79\xe9\x79\xea\x79\xeb\x79\xec\x79\xed\x79\xee\x79\xef\x79\xf0\x79\xf1\x79\xf2\x79\xf3\x79\xf4\x79\xf5\x79\xf6\x79\xf7\x79\xf8\x79\xf9\x79\xfa\x79\xfb\x79\xfc\x79\xfd\x79\xfe\x7a\x41\x7a\x42\x7a\x43\x7a\x44\x7a\x45\x7a\x46\x7a\x47\x7a\x48\x7a\x49\x7a\x4a\x7a\x4b\x7a\x4c\x7a\x4d\x7a\x4e\x7a\x4f\x7a\x50\x7a\x51\x7a\x52\x7a\x53\x7a\x54\x7a\x55\x7a\x56\x7a\x57\x7a\x58\x7a\x59\x7a\x5a\x7a\x5b\x7a\x5c\x7a\x5d\x7a\x5e\x7a\x5f\x7a\x60\x7a\x61\x7a\x62\x7a\x63\x7a\x64\x7a\x65\x7a\x66\x7a\x67\x7a\x68\x7a\x69\x7a\x6a\x7a\x6b\x7a\x6c\x7a\x6d\x7a\x6e\x7a\x6f\x7a\x70\x7a\x71\x7a\x72\x7a\x73\x7a\x74\x7a\x75\x7a\x76\x7a\x77\x7a\x78\x7a\x79\x7a\x7a\x7a\x7b\x7a\x7c\x7a\x7d\x7a\x7e\x7a\x7f\x7a\x80\x7a\x81\x7a\x82\x7a\x83\x7a\x84\x7a\x85\x7a\x86\x7a\x87\x7a\x88\x7a\x89\x7a\x8a\x7a\x8b\x7a\x8c\x7a\x8d\x7a\x8e\x7a\x8f\x7a\x90\x7a\x91\x7a\x92\x7a\x93\x7a\x94\x7a\x95\x7a\x96\x7a\x97\x7a\x98\x7a\x99\x7a\x9a\x7a\x9b\x7a\x9c\x7a\x9d\x7a\x9e\x7a\x9f\x7a\xa0\x7a\xa1\x7a\xa2", /* ed00 */ "\x7a\xa3\x7a\xa4\x7a\xa5\x7a\xa6\x7a\xa7\x7a\xa8\x7a\xa9\x7a\xaa\x7a\xab\x7a\xac\x7a\xad\x7a\xae\x7a\xaf\x7a\xb0\x7a\xb1\x7a\xb2\x7a\xb3\x7a\xb4\x7a\xb5\x7a\xb6\x7a\xb7\x7a\xb8\x7a\xb9\x7a\xba\x7a\xbb\x7a\xbc\x7a\xbd\x7a\xbe\x7a\xbf\x7a\xc0\x7a\xc1\x7a\xc2\x7a\xc3\x7a\xc4\x7a\xc5\x7a\xc6\x7a\xc7\x7a\xc8\x7a\xc9\x7a\xca\x7a\xcb\x7a\xcc\x7a\xcd\x7a\xce\x7a\xcf\x7a\xd0\x7a\xd1\x7a\xd2\x7a\xd3\x7a\xd4\x7a\xd5\x7a\xd6\x7a\xd7\x7a\xd8\x7a\xd9\x7a\xda\x7a\xdb\x7a\xdc\x7a\xdd\x7a\xde\x7a\xdf\x7a\xe0\x7a\xe1\x7a\xe2\x7a\xe3\x7a\xe4\x7a\xe5\x7a\xe6\x7a\xe7\x7a\xe8\x7a\xe9\x7a\xea\x7a\xeb\x7a\xec\x7a\xed\x7a\xee\x7a\xef\x7a\xf0\x7a\xf1\x7a\xf2\x7a\xf3\x7a\xf4\x7a\xf5\x7a\xf6\x7a\xf7\x7a\xf8\x7a\xf9\x7a\xfa\x7a\xfb\x7a\xfc\x7a\xfd\x7a\xfe\x7b\x41\x7b\x42\x7b\x43\x7b\x44\x7b\x45\x7b\x46\x7b\x47\x7b\x48\x7b\x49\x7b\x4a\x7b\x4b\x7b\x4c\x7b\x4d\x7b\x4e\x7b\x4f\x7b\x50\x7b\x51\x7b\x52\x7b\x53\x7b\x54\x7b\x55\x7b\x56\x7b\x57\x7b\x58\x7b\x59\x7b\x5a\x7b\x5b\x7b\x5c\x7b\x5d\x7b\x5e\x7b\x5f\x7b\x60\x7b\x61\x7b\x62\x7b\x63\x7b\x64", /* ed80 */ "\x7b\x65\x7b\x66\x7b\x67\x7b\x68\x7b\x69\x7b\x6a\x7b\x6b\x7b\x6c\x7b\x6d\x7b\x6e\x7b\x6f\x7b\x70\x7b\x71\x7b\x72\x7b\x73\x7b\x74\x7b\x75\x7b\x76\x7b\x77\x7b\x78\x7b\x79\x7b\x7a\x7b\x7b\x7b\x7c\x7b\x7d\x7b\x7e\x7b\x7f\x7b\x80\x7b\x81\x7b\x82\x7b\x83\x7b\x84\x7b\x85\x7b\x86\x7b\x87\x7b\x88\x7b\x89\x7b\x8a\x7b\x8b\x7b\x8c\x7b\x8d\x7b\x8e\x7b\x8f\x7b\x90\x7b\x91\x7b\x92\x7b\x93\x7b\x94\x7b\x95\x7b\x96\x7b\x97\x7b\x98\x7b\x99\x7b\x9a\x7b\x9b\x7b\x9c\x7b\x9d\x7b\x9e\x7b\x9f\x7b\xa0\x7b\xa1\x7b\xa2\x7b\xa3\x7b\xa4\x7b\xa5\x7b\xa6\x7b\xa7\x7b\xa8\x7b\xa9\x7b\xaa\x7b\xab\x7b\xac\x7b\xad\x7b\xae\x7b\xaf\x7b\xb0\x7b\xb1\x7b\xb2\x7b\xb3\x7b\xb4\x7b\xb5\x7b\xb6\x7b\xb7\x7b\xb8\x7b\xb9\x7b\xba\x7b\xbb\x7b\xbc\x7b\xbd\x7b\xbe\x7b\xbf\x7b\xc0\x7b\xc1\x7b\xc2\x7b\xc3\x7b\xc4\x7b\xc5\x7b\xc6\x7b\xc7\x7b\xc8\x7b\xc9\x7b\xca\x7b\xcb\x7b\xcc\x7b\xcd\x7b\xce\x7b\xcf\x7b\xd0\x7b\xd1\x7b\xd2\x7b\xd3\x7b\xd4\x7b\xd5\x7b\xd6\x7b\xd7\x7b\xd8\x7b\xd9\x7b\xda\x7b\xdb\x7b\xdc\x7b\xdd\x7b\xde\x7b\xdf\x7b\xe0\x7b\xe1\x7b\xe2\x7b\xe3\x7b\xe4", /* ee00 */ "\x7b\xe5\x7b\xe6\x7b\xe7\x7b\xe8\x7b\xe9\x7b\xea\x7b\xeb\x7b\xec\x7b\xed\x7b\xee\x7b\xef\x7b\xf0\x7b\xf1\x7b\xf2\x7b\xf3\x7b\xf4\x7b\xf5\x7b\xf6\x7b\xf7\x7b\xf8\x7b\xf9\x7b\xfa\x7b\xfb\x7b\xfc\x7b\xfd\x7b\xfe\x7c\x41\x7c\x42\x7c\x43\x7c\x44\x7c\x45\x7c\x46\x7c\x47\x7c\x48\x7c\x49\x7c\x4a\x7c\x4b\x7c\x4c\x7c\x4d\x7c\x4e\x7c\x4f\x7c\x50\x7c\x51\x7c\x52\x7c\x53\x7c\x54\x7c\x55\x7c\x56\x7c\x57\x7c\x58\x7c\x59\x7c\x5a\x7c\x5b\x7c\x5c\x7c\x5d\x7c\x5e\x7c\x5f\x7c\x60\x7c\x61\x7c\x62\x7c\x63\x7c\x64\x7c\x65\x7c\x66\x7c\x67\x7c\x68\x7c\x69\x7c\x6a\x7c\x6b\x7c\x6c\x7c\x6d\x7c\x6e\x7c\x6f\x7c\x70\x7c\x71\x7c\x72\x7c\x73\x7c\x74\x7c\x75\x7c\x76\x7c\x77\x7c\x78\x7c\x79\x7c\x7a\x7c\x7b\x7c\x7c\x7c\x7d\x7c\x7e\x7c\x7f\x7c\x80\x7c\x81\x7c\x82\x7c\x83\x7c\x84\x7c\x85\x7c\x86\x7c\x87\x7c\x88\x7c\x89\x7c\x8a\x7c\x8b\x7c\x8c\x7c\x8d\x7c\x8e\x7c\x8f\x7c\x90\x7c\x91\x7c\x92\x7c\x93\x7c\x94\x7c\x95\x7c\x96\x7c\x97\x7c\x98\x7c\x99\x7c\x9a\x7c\x9b\x7c\x9c\x7c\x9d\x7c\x9e\x7c\x9f\x7c\xa0\x7c\xa1\x7c\xa2\x7c\xa3\x7c\xa4\x7c\xa5\x7c\xa6", /* ee80 */ "\x7c\xa7\x7c\xa8\x7c\xa9\x7c\xaa\x7c\xab\x7c\xac\x7c\xad\x7c\xae\x7c\xaf\x7c\xb0\x7c\xb1\x7c\xb2\x7c\xb3\x7c\xb4\x7c\xb5\x7c\xb6\x7c\xb7\x7c\xb8\x7c\xb9\x7c\xba\x7c\xbb\x7c\xbc\x7c\xbd\x7c\xbe\x7c\xbf\x7c\xc0\x7c\xc1\x7c\xc2\x7c\xc3\x7c\xc4\x7c\xc5\x7c\xc6\x7c\xc7\x7c\xc8\x7c\xc9\x7c\xca\x7c\xcb\x7c\xcc\x7c\xcd\x7c\xce\x7c\xcf\x7c\xd0\x7c\xd1\x7c\xd2\x7c\xd3\x7c\xd4\x7c\xd5\x7c\xd6\x7c\xd7\x7c\xd8\x7c\xd9\x7c\xda\x7c\xdb\x7c\xdc\x7c\xdd\x7c\xde\x7c\xdf\x7c\xe0\x7c\xe1\x7c\xe2\x7c\xe3\x7c\xe4\x7c\xe5\x7c\xe6\x7c\xe7\x7c\xe8\x7c\xe9\x7c\xea\x7c\xeb\x7c\xec\x7c\xed\x7c\xee\x7c\xef\x7c\xf0\x7c\xf1\x7c\xf2\x7c\xf3\x7c\xf4\x7c\xf5\x7c\xf6\x7c\xf7\x7c\xf8\x7c\xf9\x7c\xfa\x7c\xfb\x7c\xfc\x7c\xfd\x7c\xfe\x7d\x41\x7d\x42\x7d\x43\x7d\x44\x7d\x45\x7d\x46\x7d\x47\x7d\x48\x7d\x49\x7d\x4a\x7d\x4b\x7d\x4c\x7d\x4d\x7d\x4e\x7d\x4f\x7d\x50\x7d\x51\x7d\x52\x7d\x53\x7d\x54\x7d\x55\x7d\x56\x7d\x57\x7d\x58\x7d\x59\x7d\x5a\x7d\x5b\x7d\x5c\x7d\x5d\x7d\x5e\x7d\x5f\x7d\x60\x7d\x61\x7d\x62\x7d\x63\x7d\x64\x7d\x65\x7d\x66\x7d\x67\x7d\x68", /* ef00 */ "\x7d\x69\x7d\x6a\x7d\x6b\x7d\x6c\x7d\x6d\x7d\x6e\x7d\x6f\x7d\x70\x7d\x71\x7d\x72\x7d\x73\x7d\x74\x7d\x75\x7d\x76\x7d\x77\x7d\x78\x7d\x79\x7d\x7a\x7d\x7b\x7d\x7c\x7d\x7d\x7d\x7e\x7d\x7f\x7d\x80\x7d\x81\x7d\x82\x7d\x83\x7d\x84\x7d\x85\x7d\x86\x7d\x87\x7d\x88\x7d\x89\x7d\x8a\x7d\x8b\x7d\x8c\x7d\x8d\x7d\x8e\x7d\x8f\x7d\x90\x7d\x91\x7d\x92\x7d\x93\x7d\x94\x7d\x95\x7d\x96\x7d\x97\x7d\x98\x7d\x99\x7d\x9a\x7d\x9b\x7d\x9c\x7d\x9d\x7d\x9e\x7d\x9f\x7d\xa0\x7d\xa1\x7d\xa2\x7d\xa3\x7d\xa4\x7d\xa5\x7d\xa6\x7d\xa7\x7d\xa8\x7d\xa9\x7d\xaa\x7d\xab\x7d\xac\x7d\xad\x7d\xae\x7d\xaf\x7d\xb0\x7d\xb1\x7d\xb2\x7d\xb3\x7d\xb4\x7d\xb5\x7d\xb6\x7d\xb7\x7d\xb8\x7d\xb9\x7d\xba\x7d\xbb\x7d\xbc\x7d\xbd\x7d\xbe\x7d\xbf\x7d\xc0\x7d\xc1\x7d\xc2\x7d\xc3\x7d\xc4\x7d\xc5\x7d\xc6\x7d\xc7\x7d\xc8\x7d\xc9\x7d\xca\x7d\xcb\x7d\xcc\x7d\xcd\x7d\xce\x7d\xcf\x7d\xd0\x7d\xd1\x7d\xd2\x7d\xd3\x7d\xd4\x7d\xd5\x7d\xd6\x7d\xd7\x7d\xd8\x7d\xd9\x7d\xda\x7d\xdb\x7d\xdc\x7d\xdd\x7d\xde\x7d\xdf\x7d\xe0\x7d\xe1\x7d\xe2\x7d\xe3\x7d\xe4\x7d\xe5\x7d\xe6\x7d\xe7\x7d\xe8", /* ef80 */ "\x7d\xe9\x7d\xea\x7d\xeb\x7d\xec\x7d\xed\x7d\xee\x7d\xef\x7d\xf0\x7d\xf1\x7d\xf2\x7d\xf3\x7d\xf4\x7d\xf5\x7d\xf6\x7d\xf7\x7d\xf8\x7d\xf9\x7d\xfa\x7d\xfb\x7d\xfc\x7d\xfd\x7d\xfe\x7e\x41\x7e\x42\x7e\x43\x7e\x44\x7e\x45\x7e\x46\x7e\x47\x7e\x48\x7e\x49\x7e\x4a\x7e\x4b\x7e\x4c\x7e\x4d\x7e\x4e\x7e\x4f\x7e\x50\x7e\x51\x7e\x52\x7e\x53\x7e\x54\x7e\x55\x7e\x56\x7e\x57\x7e\x58\x7e\x59\x7e\x5a\x7e\x5b\x7e\x5c\x7e\x5d\x7e\x5e\x7e\x5f\x7e\x60\x7e\x61\x7e\x62\x7e\x63\x7e\x64\x7e\x65\x7e\x66\x7e\x67\x7e\x68\x7e\x69\x7e\x6a\x7e\x6b\x7e\x6c\x7e\x6d\x7e\x6e\x7e\x6f\x7e\x70\x7e\x71\x7e\x72\x7e\x73\x7e\x74\x7e\x75\x7e\x76\x7e\x77\x7e\x78\x7e\x79\x7e\x7a\x7e\x7b\x7e\x7c\x7e\x7d\x7e\x7e\x7e\x7f\x7e\x80\x7e\x81\x7e\x82\x7e\x83\x7e\x84\x7e\x85\x7e\x86\x7e\x87\x7e\x88\x7e\x89\x7e\x8a\x7e\x8b\x7e\x8c\x7e\x8d\x7e\x8e\x7e\x8f\x7e\x90\x7e\x91\x7e\x92\x7e\x93\x7e\x94\x7e\x95\x7e\x96\x7e\x97\x7e\x98\x7e\x99\x7e\x9a\x7e\x9b\x7e\x9c\x7e\x9d\x7e\x9e\x7e\x9f\x7e\xa0\x7e\xa1\x7e\xa2\x7e\xa3\x7e\xa4\x7e\xa5\x7e\xa6\x7e\xa7\x7e\xa8\x7e\xa9\x7e\xaa", /* f000 */ "\x7e\xab\x7e\xac\x7e\xad\x7e\xae\x7e\xaf\x7e\xb0\x7e\xb1\x7e\xb2\x7e\xb3\x7e\xb4\x7e\xb5\x7e\xb6\x7e\xb7\x7e\xb8\x7e\xb9\x7e\xba\x7e\xbb\x7e\xbc\x7e\xbd\x7e\xbe\x7e\xbf\x7e\xc0\x7e\xc1\x7e\xc2\x7e\xc3\x7e\xc4\x7e\xc5\x7e\xc6\x7e\xc7\x7e\xc8\x7e\xc9\x7e\xca\x7e\xcb\x7e\xcc\x7e\xcd\x7e\xce\x7e\xcf\x7e\xd0\x7e\xd1\x7e\xd2\x7e\xd3\x7e\xd4\x7e\xd5\x7e\xd6\x7e\xd7\x7e\xd8\x7e\xd9\x7e\xda\x7e\xdb\x7e\xdc\x7e\xdd\x7e\xde\x7e\xdf\x7e\xe0\x7e\xe1\x7e\xe2\x7e\xe3\x7e\xe4\x7e\xe5\x7e\xe6\x7e\xe7\x7e\xe8\x7e\xe9\x7e\xea\x7e\xeb\x7e\xec\x7e\xed\x7e\xee\x7e\xef\x7e\xf0\x7e\xf1\x7e\xf2\x7e\xf3\x7e\xf4\x7e\xf5\x7e\xf6\x7e\xf7\x7e\xf8\x7e\xf9\x7e\xfa\x7e\xfb\x7e\xfc\x7e\xfd\x7e\xfe\x7f\x41\x7f\x42\x7f\x43\x7f\x44\x7f\x45\x7f\x46\x7f\x47\x7f\x48\x7f\x49\x7f\x4a\x7f\x4b\x7f\x4c\x7f\x4d\x7f\x4e\x7f\x4f\x7f\x50\x7f\x51\x7f\x52\x7f\x53\x7f\x54\x7f\x55\x7f\x56\x7f\x57\x7f\x58\x7f\x59\x7f\x5a\x7f\x5b\x7f\x5c\x7f\x5d\x7f\x5e\x7f\x5f\x7f\x60\x7f\x61\x7f\x62\x7f\x63\x7f\x64\x7f\x65\x7f\x66\x7f\x67\x7f\x68\x7f\x69\x7f\x6a\x7f\x6b\x7f\x6c", /* f080 */ "\x7f\x6d\x7f\x6e\x7f\x6f\x7f\x70\x7f\x71\x7f\x72\x7f\x73\x7f\x74\x7f\x75\x7f\x76\x7f\x77\x7f\x78\x7f\x79\x7f\x7a\x7f\x7b\x7f\x7c\x7f\x7d\x7f\x7e\x7f\x7f\x7f\x80\x7f\x81\x7f\x82\x7f\x83\x7f\x84\x7f\x85\x7f\x86\x7f\x87\x7f\x88\x7f\x89\x7f\x8a\x7f\x8b\x7f\x8c\x7f\x8d\x7f\x8e\x7f\x8f\x7f\x90\x7f\x91\x7f\x92\x7f\x93\x7f\x94\x7f\x95\x7f\x96\x7f\x97\x7f\x98\x7f\x99\x7f\x9a\x7f\x9b\x7f\x9c\x7f\x9d\x7f\x9e\x7f\x9f\x7f\xa0\x7f\xa1\x7f\xa2\x7f\xa3\x7f\xa4\x7f\xa5\x7f\xa6\x7f\xa7\x7f\xa8\x7f\xa9\x7f\xaa\x7f\xab\x7f\xac\x7f\xad\x7f\xae\x7f\xaf\x7f\xb0\x7f\xb1\x7f\xb2\x7f\xb3\x7f\xb4\x7f\xb5\x7f\xb6\x7f\xb7\x7f\xb8\x7f\xb9\x7f\xba\x7f\xbb\x7f\xbc\x7f\xbd\x7f\xbe\x7f\xbf\x7f\xc0\x7f\xc1\x7f\xc2\x7f\xc3\x7f\xc4\x7f\xc5\x7f\xc6\x7f\xc7\x7f\xc8\x7f\xc9\x7f\xca\x7f\xcb\x7f\xcc\x7f\xcd\x7f\xce\x7f\xcf\x7f\xd0\x7f\xd1\x7f\xd2\x7f\xd3\x7f\xd4\x7f\xd5\x7f\xd6\x7f\xd7\x7f\xd8\x7f\xd9\x7f\xda\x7f\xdb\x7f\xdc\x7f\xdd\x7f\xde\x7f\xdf\x7f\xe0\x7f\xe1\x7f\xe2\x7f\xe3\x7f\xe4\x7f\xe5\x7f\xe6\x7f\xe7\x7f\xe8\x7f\xe9\x7f\xea\x7f\xeb\x7f\xec", /* f100 */ "\x7f\xed\x7f\xee\x7f\xef\x7f\xf0\x7f\xf1\x7f\xf2\x7f\xf3\x7f\xf4\x7f\xf5\x7f\xf6\x7f\xf7\x7f\xf8\x7f\xf9\x7f\xfa\x7f\xfb\x7f\xfc\x7f\xfd\x7f\xfe\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* f180 */ NULL, /* f200 */ NULL, /* f280 */ NULL, /* f300 */ NULL, /* f380 */ NULL, /* f400 */ NULL, /* f480 */ NULL, /* f500 */ NULL, /* f580 */ NULL, /* f600 */ NULL, /* f680 */ NULL, /* f700 */ NULL, /* f780 */ NULL, /* f800 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x44\x6e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* f880 */ NULL, /* f900 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5b\xc9\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* f980 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x66\x74\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* fa00 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x57\x8e\x58\x77\x58\x82\x59\x80\x5b\xae\x5c\x66\x5c\x78\x5e\x49\x5e\x8a\x5f\x7a\x5f\xd2\x5f\xd5\x5f\xd9\x5f\xdd\x60\x59\x60\xad\x61\x77\x62\xb9\x62\xce\x62\xe2\x63\xee\x64\x8e\x64\xf1\x65\x49\x65\x66\x65\xb8\x65\xc6\x66\x78\x66\xdd\x66\xdf\x66\xe6\x67\xf4\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* fa80 */ NULL, /* fb00 */ NULL, /* fb80 */ NULL, /* fc00 */ NULL, /* fc80 */ NULL, /* fd00 */ NULL, /* fd80 */ NULL, /* fe00 */ NULL, /* fe80 */ NULL, /* ff00 */ "\x00\x00\x42\x5a\x42\x7f\x42\x7b\x42\xe0\x42\x6c\x42\x50\x42\x7d\x42\x4d\x42\x5d\x42\x5c\x42\x4e\x42\x6b\x00\x00\x42\x4b\x42\x61\x42\xf0\x42\xf1\x42\xf2\x42\xf3\x42\xf4\x42\xf5\x42\xf6\x42\xf7\x42\xf8\x42\xf9\x42\x7a\x42\x5e\x42\x4c\x42\x7e\x42\x6e\x42\x6f\x42\x7c\x42\xc1\x42\xc2\x42\xc3\x42\xc4\x42\xc5\x42\xc6\x42\xc7\x42\xc8\x42\xc9\x42\xd1\x42\xd2\x42\xd3\x42\xd4\x42\xd5\x42\xd6\x42\xd7\x42\xd8\x42\xd9\x42\xe2\x42\xe3\x42\xe4\x42\xe5\x42\xe6\x42\xe7\x42\xe8\x42\xe9\x44\x44\x43\xe0\x44\x45\x44\x70\x42\x6d\x42\x79\x42\x81\x42\x82\x42\x83\x42\x84\x42\x85\x42\x86\x42\x87\x42\x88\x42\x89\x42\x91\x42\x92\x42\x93\x42\x94\x42\x95\x42\x96\x42\x97\x42\x98\x42\x99\x42\xa2\x42\xa3\x42\xa4\x42\xa5\x42\xa6\x42\xa7\x42\xa8\x42\xa9\x42\xc0\x42\x4f\x42\xd0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* ff80 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x43\x4a\x42\x4a\x42\x5f\x42\xa1\x00\x00\x42\x5b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" }, /* EBCDIC DBCS to Unicode translation table for ibm-300_P110-1997 */ { /* 0000 */ NULL, /* 0080 */ NULL, /* 0100 */ NULL, /* 0180 */ NULL, /* 0200 */ NULL, /* 0280 */ NULL, /* 0300 */ NULL, /* 0380 */ NULL, /* 0400 */ NULL, /* 0480 */ NULL, /* 0500 */ NULL, /* 0580 */ NULL, /* 0600 */ NULL, /* 0680 */ NULL, /* 0700 */ NULL, /* 0780 */ NULL, /* 0800 */ NULL, /* 0880 */ NULL, /* 0900 */ NULL, /* 0980 */ NULL, /* 0a00 */ NULL, /* 0a80 */ NULL, /* 0b00 */ NULL, /* 0b80 */ NULL, /* 0c00 */ NULL, /* 0c80 */ NULL, /* 0d00 */ NULL, /* 0d80 */ NULL, /* 0e00 */ NULL, /* 0e80 */ NULL, /* 0f00 */ NULL, /* 0f80 */ NULL, /* 1000 */ NULL, /* 1080 */ NULL, /* 1100 */ NULL, /* 1180 */ NULL, /* 1200 */ NULL, /* 1280 */ NULL, /* 1300 */ NULL, /* 1380 */ NULL, /* 1400 */ NULL, /* 1480 */ NULL, /* 1500 */ NULL, /* 1580 */ NULL, /* 1600 */ NULL, /* 1680 */ NULL, /* 1700 */ NULL, /* 1780 */ NULL, /* 1800 */ NULL, /* 1880 */ NULL, /* 1900 */ NULL, /* 1980 */ NULL, /* 1a00 */ NULL, /* 1a80 */ NULL, /* 1b00 */ NULL, /* 1b80 */ NULL, /* 1c00 */ NULL, /* 1c80 */ NULL, /* 1d00 */ NULL, /* 1d80 */ NULL, /* 1e00 */ NULL, /* 1e80 */ NULL, /* 1f00 */ NULL, /* 1f80 */ NULL, /* 2000 */ NULL, /* 2080 */ NULL, /* 2100 */ NULL, /* 2180 */ NULL, /* 2200 */ NULL, /* 2280 */ NULL, /* 2300 */ NULL, /* 2380 */ NULL, /* 2400 */ NULL, /* 2480 */ NULL, /* 2500 */ NULL, /* 2580 */ NULL, /* 2600 */ NULL, /* 2680 */ NULL, /* 2700 */ NULL, /* 2780 */ NULL, /* 2800 */ NULL, /* 2880 */ NULL, /* 2900 */ NULL, /* 2980 */ NULL, /* 2a00 */ NULL, /* 2a80 */ NULL, /* 2b00 */ NULL, /* 2b80 */ NULL, /* 2c00 */ NULL, /* 2c80 */ NULL, /* 2d00 */ NULL, /* 2d80 */ NULL, /* 2e00 */ NULL, /* 2e80 */ NULL, /* 2f00 */ NULL, /* 2f80 */ NULL, /* 3000 */ NULL, /* 3080 */ NULL, /* 3100 */ NULL, /* 3180 */ NULL, /* 3200 */ NULL, /* 3280 */ NULL, /* 3300 */ NULL, /* 3380 */ NULL, /* 3400 */ NULL, /* 3480 */ NULL, /* 3500 */ NULL, /* 3580 */ NULL, /* 3600 */ NULL, /* 3680 */ NULL, /* 3700 */ NULL, /* 3780 */ NULL, /* 3800 */ NULL, /* 3880 */ NULL, /* 3900 */ NULL, /* 3980 */ NULL, /* 3a00 */ NULL, /* 3a80 */ NULL, /* 3b00 */ NULL, /* 3b80 */ NULL, /* 3c00 */ NULL, /* 3c80 */ NULL, /* 3d00 */ NULL, /* 3d80 */ NULL, /* 3e00 */ NULL, /* 3e80 */ NULL, /* 3f00 */ NULL, /* 3f80 */ NULL, /* 4000 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x30\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 4080 */ NULL, /* 4100 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\xb1\x03\xb2\x03\xb3\x03\xb4\x03\xb5\x03\xb6\x03\xb7\x03\xb8\x03\xb9\x03\xba\x03\xbb\x03\xbc\x03\xbd\x03\xbe\x03\xbf\x03\xc0\x03\xc1\x03\xc3\x03\xc4\x03\xc5\x03\xc6\x03\xc7\x03\xc8\x03\xc9\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x91\x03\x92\x03\x93\x03\x94\x03\x95\x03\x96\x03\x97\x03\x98\x03\x99\x03\x9a\x03\x9b\x03\x9c\x03\x9d\x03\x9e\x03\x9f\x03\xa0\x03\xa1\x03\xa3\x03\xa4\x03\xa5\x03\xa6\x03\xa7\x03\xa8\x03\xa9\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 4180 */ "\x04\x30\x04\x31\x04\x32\x04\x33\x04\x34\x04\x35\x04\x51\x04\x36\x04\x37\x04\x38\x04\x39\x04\x3a\x04\x3b\x04\x3c\x04\x3d\x04\x3e\x04\x3f\x04\x40\x04\x41\x04\x42\x04\x43\x04\x44\x04\x45\x04\x46\x04\x47\x04\x48\x04\x49\x04\x4a\x04\x4b\x04\x4c\x04\x4d\x04\x4e\x04\x4f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x21\x70\x21\x71\x21\x72\x21\x73\x21\x74\x21\x75\x21\x76\x21\x77\x21\x78\x21\x79\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\x10\x04\x11\x04\x12\x04\x13\x04\x14\x04\x15\x04\x01\x04\x16\x04\x17\x04\x18\x04\x19\x04\x1a\x04\x1b\x04\x1c\x04\x1d\x04\x1e\x04\x1f\x04\x20\x04\x21\x04\x22\x04\x23\x04\x24\x04\x25\x04\x26\x04\x27\x04\x28\x04\x29\x04\x2a\x04\x2b\x04\x2c\x04\x2d\x04\x2e\x04\x2f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x21\x60\x21\x61\x21\x62\x21\x63\x21\x64\x21\x65\x21\x66\x21\x67\x21\x68\x21\x69\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 4200 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xe1\xff\x0e\xff\x1c\xff\x08\xff\x0b\xff\x5c\xff\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\x01\xff\xe5\xff\x0a\xff\x09\xff\x1b\xff\xe2\x22\x12\xff\x0f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa6\xff\x0c\xff\x05\xff\x3f\xff\x1e\xff\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\x40\xff\x1a\xff\x03\xff\x20\xff\x07\xff\x1d\xff\x02", /* 4280 */ "\x00\x00\xff\x41\xff\x42\xff\x43\xff\x44\xff\x45\xff\x46\xff\x47\xff\x48\xff\x49\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\x4a\xff\x4b\xff\x4c\xff\x4d\xff\x4e\xff\x4f\xff\x50\xff\x51\xff\x52\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xe3\xff\x53\xff\x54\xff\x55\xff\x56\xff\x57\xff\x58\xff\x59\xff\x5a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\x5b\xff\x21\xff\x22\xff\x23\xff\x24\xff\x25\xff\x26\xff\x27\xff\x28\xff\x29\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\x5d\xff\x2a\xff\x2b\xff\x2c\xff\x2d\xff\x2e\xff\x2f\xff\x30\xff\x31\xff\x32\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\x04\x00\x00\xff\x33\xff\x34\xff\x35\xff\x36\xff\x37\xff\x38\xff\x39\xff\x3a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\x10\xff\x11\xff\x12\xff\x13\xff\x14\xff\x15\xff\x16\xff\x17\xff\x18\xff\x19\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 4300 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x30\x02\x30\x0c\x30\x0d\x30\x01\x30\xfb\x30\xf2\x30\xa1\x30\xa3\x30\xa5\xff\xe0\x22\x20\x22\xa5\x23\x12\x22\x02\x22\x07\x00\x00\x30\xa7\x30\xa9\x30\xe3\x30\xe5\x30\xe7\x30\xc3\x30\xee\x30\xfc\x30\xf5\x30\xf6\x22\x61\x22\x52\x22\x6a\x22\x6b\x22\x1a\x22\x3d\x22\x1d\x22\x2b\x22\x2c\x22\x08\x22\x0b\x22\x86\x22\x87\x22\x82\x22\x83\x22\x2a\x22\x29\x22\x27\x22\x28\x21\xd2\x21\xd4\x22\x00\x22\x03\x21\x2b\x20\x30\x26\x6f\x26\x6d\x26\x6a\x20\x20\x20\x21\x00\xb6\x25\xef\x00\x00\x25\x00\x25\x02\x25\x0c\x25\x10", /* 4380 */ "\x00\x00\x30\xa2\x30\xa4\x30\xa6\x30\xa8\x30\xaa\x30\xab\x30\xad\x30\xaf\x30\xb1\x30\xb3\x00\x00\x30\xb5\x30\xb7\x30\xb9\x30\xbb\x30\xbd\x30\xbf\x30\xc1\x30\xc4\x30\xc6\x30\xc8\x30\xca\x30\xcb\x30\xcc\x30\xcd\x30\xce\x00\x00\x00\x00\x30\xcf\x30\xd2\x30\xd5\x00\x00\x30\x1c\x30\xd8\x30\xdb\x30\xde\x30\xdf\x30\xe0\x30\xe1\x30\xe2\x30\xe4\x30\xe6\x00\x00\x30\xe8\x30\xe9\x30\xea\x30\xeb\x25\x18\x25\x14\x25\x1c\x25\x2c\x25\x24\x25\x34\x25\x3c\x25\x01\x25\x03\x25\x0f\x30\xec\x30\xed\x30\xef\x30\xf3\x30\x9b\x30\x9c\x30\xac\x30\xae\x30\xb0\x30\xb2\x30\xb4\x30\xb6\x30\xb8\x30\xba\x30\xbc\x30\xbe\x30\xc0\x30\xc2\x30\xc5\x30\xc7\x30\xc9\x30\xd0\x30\xd3\x30\xd6\x30\xd9\x30\xdc\x30\xf4\x30\xd1\x30\xd4\x30\xd7\x30\xda\x30\xdd\x30\xf0\x30\xf1\x30\xfd\x30\xfe\x00\x00\x00\x00\xff\x3c\x25\x13\x25\x1b\x25\x17\x25\x23\x25\x33\x25\x2b\x25\x3b\x25\x4b\x25\x20\x25\x2f\x25\x28\x25\x37\x25\x3f\x25\x1d\x25\x30\x25\x25\x25\x38\x25\x42\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 4400 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x30\x0e\x30\x0f\xff\x3b\xff\x3d\x30\x92\x30\x41\x30\x43\x30\x45\x20\x14\x00\xb1\x22\x60\x22\x1e\x21\x03\x00\x00\x00\xb4\x30\x47\x30\x49\x30\x83\x30\x85\x30\x87\x30\x63\x30\x8e\x00\x00\x00\x00\x20\x10\x30\x03\x4e\xdd\x30\x05\x30\x06\x30\x07\x00\xa8\x20\x18\x20\x1c\x30\x14\x30\x08\x30\x0a\x30\x10\x22\x66\x22\x34\x26\x42\x00\xa7\x20\x3b\x30\x12\x32\x31\xf8\x6f\x21\x21\xff\x3e\x20\x19\x20\x1d\x30\x15\x30\x09\x30\x0b\x30\x11\x22\x67\x22\x35\x26\x40\x00\xd7\x00\xf7\x20\x16\x30\x13\x20\x25\x20\x26", /* 4480 */ "\x00\x00\x30\x42\x30\x44\x30\x46\x30\x48\x30\x4a\x30\x4b\x30\x4d\x30\x4f\x30\x51\x30\x53\x00\x00\x30\x55\x30\x57\x30\x59\x30\x5b\x30\x5d\x30\x5f\x30\x61\x30\x64\x30\x66\x30\x68\x30\x6a\x30\x6b\x30\x6c\x30\x6d\x30\x6e\x00\x00\x00\x00\x30\x6f\x30\x72\x30\x75\x00\x00\x00\x00\x30\x78\x30\x7b\x30\x7e\x30\x7f\x30\x80\x30\x81\x30\x82\x30\x84\x30\x86\x00\x00\x30\x88\x30\x89\x30\x8a\x30\x8b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x30\x8c\x30\x8d\x30\x8f\x30\x93\x00\x00\x00\x00\x30\x4c\x30\x4e\x30\x50\x30\x52\x30\x54\x30\x56\x30\x58\x30\x5a\x30\x5c\x30\x5e\x30\x60\x30\x62\x30\x65\x30\x67\x30\x69\x30\x70\x30\x73\x30\x76\x30\x79\x30\x7c\x00\x00\x30\x71\x30\x74\x30\x77\x30\x7a\x30\x7d\x30\x90\x30\x91\x30\x9d\x30\x9e\x00\x00\x00\x00\x25\xcb\x25\xcf\x25\xb3\x25\xb2\x25\xce\x26\x06\x26\x05\x25\xc7\x25\xc6\x25\xa1\x25\xa0\x25\xbd\x25\xbc\x00\xb0\x20\x32\x20\x33\x21\x92\x21\x90\x21\x91\x21\x93\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 4500 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4e\x00\x4e\x8c\x4e\x09\x56\xdb\x4e\x94\x51\x6d\x4e\x03\x51\x6b\x4e\x5d\x53\x41\x76\x7e\x53\x43\x4e\x07\x51\x04\x90\xfd\x90\x53\x5e\x9c\x77\x0c\x5e\x02\x53\x3a\x75\x3a\x67\x51\x67\x71\x89\x7f\x53\x57\x53\x17\x59\x27\x4e\x2d\x5c\x0f\x4e\x0a\x4e\x0b\x5e\x74\x67\x08\x65\xe5\x75\x30\x5b\x50\x5c\x71\x67\x2c\x5d\xdd\x85\xe4\x91\xce\x5d\xe5\x69\x6d\x67\x28\x4e\x95\x90\xce\x5c\xf6\x96\xc4\x9a\xd8\x5c\xa1\x59\x2b\x53\x9f\x4e\xac\x4f\x50\x6b\x63\x67\x7e\x6a\x5f\x54\x8c\x88\xfd\x75\x37\x7f\x8e\x54\x09\x5d\x0e", /* 4580 */ "\x77\xf3\x8c\x37\x96\xfb\x95\x77\x6c\xbb\x6c\xa2\x91\xd1\x65\xb0\x53\xe3\x6a\x4b\x4e\x45\x79\x8f\x62\x40\x5e\x73\x51\x85\x56\xfd\x53\x16\x96\x2a\x5b\xae\x4e\xba\x4f\x5c\x90\xe8\x6e\x05\x6b\x21\x7f\xa9\x75\x1f\x4e\xe3\x51\xfa\x6c\x34\x68\xee\x51\x49\x52\xa0\x54\x08\x79\x5e\x67\x97\x91\xcd\x88\x4c\x4f\xe1\x66\x0e\x6d\x77\x5b\x89\x5e\x78\x4f\xdd\x59\x2a\x5b\xcc\x6c\x5f\x92\x34\x52\x4d\x77\xe5\x6b\x66\x4f\x0a\x66\x2d\x52\x06\x52\xdd\x75\x28\x5e\x83\x90\x20\x6c\x17\x62\x10\x89\x8b\x52\x29\x4f\x1a\x5b\x66\x5c\xa9\x75\x23\x95\x93\x57\x30\x81\xea\x82\x6f\x95\xa2\x61\x1b\x65\x3f\x5c\x3e\x8a\x08\x65\x87\x62\x4b\x72\x36\x65\xb9\x4e\x8b\x62\x38\x54\xc1\x55\x9c\x6e\x21\x5f\x18\x53\xe4\x8f\xba\x50\x09\x92\x44\x4e\x4b\x58\x34\x6d\x0b\x57\xce\x6d\x25\x7a\xcb\x5e\xa6\x53\x48\x4e\xca\x5f\x66\x8a\x2d\x90\x1a\x52\xd5\x5f\x8c\x59\x48\x5b\x9a\x6c\x60\x5c\x4b\x6d\x5c\x74\x06\x57\x42\x5b\x9f\x82\xf1\x76\x84\x53\xf8\x79\xc0\x6a\x2a\x54\x0d\x5b\x5d\x7a\xf9\x53\x5a\x52\x9b\x5e\xab\x84\x49\x68\x04\x6c\x38\x56\x68\x73\x89\x59\x1a\x00\x00", /* 4600 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x8c\xc0\x77\x1f\x60\x75\x97\x59\x51\x86\x83\x02\x65\x4f\x8c\x4a\x51\x75\x6c\xd5\x76\x7a\x97\x52\x58\x97\x65\x99\x5f\xe0\x8c\xc7\x66\x42\x72\x69\x8e\xca\x5f\xb3\x89\x81\x5b\xfe\x58\x5a\x79\xcb\x76\x7d\x6c\xb3\x70\x2c\x6c\xb9\x96\x86\x85\x35\x5f\x53\x4f\xca\x5f\xd7\x66\x25\x79\x3e\x99\xac\x51\x65\x5e\xfa\x68\x39\x67\x49\x90\x32\x82\x08\x6d\x66\x7c\xbe\x54\x0c\x60\x27\x7c\x73\x80\x05\x52\xa9\x67\x9d\x8f\xd1\x76\xf4\x76\xee\x67\x65\x75\x3b\x76\xf8\x9e\xd2\x4e\x38\x82\x39\x75\x31\x58\xeb\x7b\x2c\x71\x8a", /* 4680 */ "\x7d\x19\x50\x65\x68\xb0\x82\xb3\x57\x1f\x67\x09\x5b\xb6\x7d\xda\x7d\x4c\x8a\xbf\x59\x29\x67\x1f\x7f\x6e\x6d\x45\x65\x89\x5f\x0f\x5f\x62\x97\x62\x7a\x2e\x8f\x38\x59\x16\x51\x43\x4f\x53\x9e\x7f\x5f\xa1\x59\x73\x5e\xb7\x4e\x16\x52\xc7\x58\x00\x59\x7d\x51\x50\x5b\xfa\x92\xfc\x72\x79\x57\xfc\x90\x54\x54\x11\x53\xd6\x7b\x49\x66\x7a\x56\xde\x95\x80\x90\x4b\x50\x99\x60\x1d\x96\x3f\x4e\x0d\x98\x08\x51\x68\x5b\xff\x55\x84\x67\x7f\x98\xef\x8c\x9e\x73\xfe\x98\xdf\x7d\x44\x98\x5e\x51\x6c\x67\x50\x99\x99\x55\x46\x7d\x50\x88\x68\x77\xe2\x6f\x5f\x79\xc1\x52\x36\x90\xa6\x6c\xbc\x7c\xf8\x5b\x8f\x7b\x56\x6c\xe2\x54\xe1\x65\x70\x95\x8b\x6e\x96\x6a\x39\x8c\xbb\x66\x0c\x5f\x37\x78\x14\x53\xcb\x5b\x87\x82\xe5\x83\xca\x63\x01\x82\xb1\x5f\x15\x7d\x00\x83\x52\x52\x25\x4f\xee\x8d\x8a\x4f\x4f\x85\xac\x6b\xdb\x90\x60\x55\x4f\x59\x65\x57\x8b\x5f\xc3\x76\x7b\x65\xe9\x67\xf3\x6d\x69\x8c\xea\x52\xd9\x6c\xc9\x5e\x38\x5b\x88\x57\xfa\x7b\xa1\x6c\xf0\x4f\x38\x67\x00\x4e\xe5\x6b\x4c\x88\xd5\x8d\x64\x8d\xb3\x89\x8f\x6d\x41\x8a\xa0\x66\x07\x00\x00", /* 4700 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5d\xde\x71\x67\x58\x69\x90\x01\x96\xc5\x67\x2b\x54\xf2\x5c\xb8\x4e\x5f\x5c\x90\x52\x1d\x83\x28\x52\x47\x6b\xd4\x80\xfd\x8a\x71\x62\x95\x8e\xe2\x83\xc5\x90\x23\x4e\xd6\x6c\x11\x7d\x66\x91\x52\x7e\x41\x4f\xa1\x6e\x80\x67\x1d\x4e\xd8\x67\x61\x71\x21\x80\x03\x69\x7d\x4e\x3b\x61\x0f\x62\x26\x52\x07\x52\x64\x72\x47\x7d\x30\x6e\x08\x7a\x32\x5e\x03\x91\xcc\x5c\x5e\x7a\xe0\x59\x09\x4f\x55\x68\x5c\x5f\x7c\x67\xfb\x76\xca\x58\xf2\x4e\xc1\x6d\xf1\x53\xf0\x9c\xe5\x9d\xb4\x65\x2f\x65\x74\x89\xd2\x56\x09\x54\x73", /* 4780 */ "\x88\x5b\x8b\x70\x57\x27\x73\x87\x8d\xef\x70\x6b\x96\x1c\x8f\x1d\x70\xb9\x4e\x0e\x6e\x1b\x75\x51\x92\x80\x7a\x7a\x4e\xa4\x7f\xbd\x53\x4a\x53\xce\x59\x2e\x7d\xcf\x8a\x18\x66\x74\x69\xcb\x96\x9b\x68\x85\x53\x70\x8a\x00\x68\x17\x8e\xab\x66\xf8\x51\x4b\x7d\x20\x96\xc6\x7b\xc0\x51\x48\x6e\xdd\x6c\x7a\x65\x59\x7d\x14\x67\xf4\x63\xa5\x66\x1f\x77\x40\x75\x59\x66\x20\x5d\xf1\x75\x4c\x51\x77\x65\x6c\x7f\xa4\x98\x06\x51\x71\x6d\x3b\x91\xcf\x63\x07\x89\xe3\x5b\xa4\x67\x9c\x54\x04\x67\x1b\x96\x32\x7d\x04\x61\xb2\x96\x7d\x4e\x80\x56\xf3\x4e\x88\x82\x72\x7a\x0e\x69\x0d\x53\xef\x60\x52\x4f\x4d\x51\x78\x5f\xc5\x7d\x9a\x60\x25\x57\x28\x57\xa3\x54\x1b\x5e\xf6\x5d\x8b\x4f\x01\x68\x03\x67\x0d\x71\xb1\x52\x72\x53\x54\x6b\x69\x53\xf2\x51\x2a\x65\x8e\x62\x3f\x5b\x97\x68\x3c\x8f\xb0\x7b\x20\x57\x12\x8a\xf8\x81\x07\x55\x53\x8c\xe2\x5f\x25\x98\xa8\x5f\x97\x66\x13\x62\x53\x98\x2d\x65\xed\x6b\xb5\x52\xe2\x71\x36\x56\xe3\x98\x4d\x84\x3d\x91\x4d\x7a\x0b\x8f\xbb\x54\x3e\x61\x1f\x5b\xdb\x53\xcd\x7a\x14\x97\x00\x6e\x90\x6c\x96\x98\x4c\x00\x00", /* 4800 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x8f\xbc\x83\x49\x7b\x97\x76\xdb\x8f\xb2\x90\xa3\x77\x01\x69\xd8\x6b\xbf\x5c\x11\x4e\xcb\x53\xd7\x97\xf3\x7d\xe8\x59\xd4\x5e\x84\x4f\xc2\x72\xb6\x79\x3a\x5e\x97\x5a\x9b\x68\x2a\x6e\xcb\x68\xa8\x7e\x04\x53\xf3\x5d\xe6\x53\xca\x90\x78\x5c\x45\x60\xc5\x7d\xf4\x70\xad\x99\x28\x92\x71\x6a\x21\x6b\x8a\x7e\x3e\x4e\x9c\x7e\x4a\x4e\xf2\x58\x57\x6d\x88\x88\x53\x69\x1c\x67\x17\x5b\x85\x52\x9f\x5c\x1a\x8c\xbf\x60\xa6\x81\x02\x7b\xe0\x4f\x73\x7d\x21\x51\xa8\x68\x51\x78\xba\x72\x67\x4e\x26\x50\x24\x89\xb3\x8c\xb4", /* 4880 */ "\x7d\xad\x7d\x71\x5b\xbf\x4e\x21\x7c\xd6\x89\xaa\x93\x32\x6f\x84\x65\xbd\x5b\xb9\x98\xdb\x5c\x40\x79\x50\x90\x4e\x6c\x0f\x65\x39\x76\xe4\x7a\x4d\x6e\x0b\x5d\xfb\x6d\xf3\x5f\xdc\x4e\x89\x8e\xcd\x88\xc5\x91\x78\x7e\x54\x67\xd3\x5e\x1d\x7d\xbf\x7c\x89\x82\x2a\x75\x32\x54\x68\x4e\xd9\x5f\x85\x4f\x4e\x7d\xd1\x8e\xfd\x9e\xbb\x61\x76\x52\xb4\x78\xef\x4e\x39\x80\xb2\x96\x50\x5c\x0e\x65\x3e\x66\x43\x5e\xa7\x4e\xf6\x60\xf3\x9a\x13\x4e\xd5\x4f\x7f\x8f\x2a\x98\x54\x75\x6a\x5f\x35\x80\x5e\x4f\x9b\x6e\x6f\x6e\xb6\x68\x21\x92\x85\x92\xf3\x87\x8d\x97\x56\x51\x99\x5b\x8c\x6e\x2f\x93\x5b\x59\x1c\x51\x45\x9f\x8d\x7d\xb1\x83\xf1\x90\x1f\x52\xc9\x52\x37\x8d\x77\x64\x69\x53\xc2\x55\xb6\x7a\x42\x63\xa8\x8f\xd4\x80\x77\x6b\x62\x4f\x1d\x5e\x79\x74\x03\x6a\x29\x5c\x55\x5e\x61\x84\x5b\x5e\xad\x97\x5e\x53\xf7\x53\x58\x6b\x73\x62\xe1\x51\xe6\x8a\x9e\x66\x28\x57\xdf\x6d\xf5\x51\x8d\x50\xcd\x79\xd1\x9b\x5a\x7a\xef\x90\x14\x68\x48\x5b\x57\x8a\xd6\x51\x7c\x53\xc8\x63\x2f\x62\x80\x5f\xb9\x67\x2d\x7c\xfb\x5f\x93\x51\xb7\x61\x4b\x5c\xf0\x00\x00", /* 4900 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x59\x31\x53\x9a\x50\x74\x6c\xe8\x6e\x2c\x98\x03\x4e\x57\x8a\x66\x57\x6a\x84\x29\x51\x5a\x6c\x7d\x5b\x9d\x60\x6d\x6a\x0b\x6e\x29\x65\x77\x8a\xac\x82\xb8\x54\x4a\x6b\x74\x82\x2c\x98\xfe\x79\x3c\x5c\x06\x96\xe3\x78\x02\x52\x24\x5f\x79\x5f\x71\x66\xfd\x5e\x2f\x96\x78\x93\x8c\x8a\xc7\x5f\x70\x60\xaa\x6a\x19\x75\x33\x5b\xb3\x6b\xcd\x88\xdc\x5e\x4c\x58\xf0\x96\x64\x7b\x39\x5a\x66\x4e\x7e\x7a\xf6\x82\x9d\x72\x5b\x8c\xb7\x79\xfb\x78\x5d\x83\x36\x52\xb9\x99\x0a\x52\xf2\x80\xa5\x8b\x19\x70\x89\x59\x0f\x58\x02", /* 4980 */ "\x67\xcf\x62\x55\x5e\x30\x71\x3c\x78\x6b\x80\x01\x7a\x76\x5b\xe9\x91\xdd\x65\xad\x5c\x04\x5d\xee\x5d\x50\x62\x98\x80\x10\x5b\xa3\x59\xcb\x5f\x8b\x6b\x8b\x66\x6f\x8c\x61\x90\xf7\x53\x53\x96\xe2\x85\xab\x6b\x7b\x80\x15\x64\xcd\x4e\xae\x4e\x91\x90\xe1\x52\xe4\x6c\x42\x8c\xab\x5b\x98\x59\xbb\x88\xcf\x77\x3c\x4f\x2f\x7a\xaf\x7b\xc9\x96\x8e\x63\xdb\x68\x42\x99\xc5\x68\xb6\x57\x47\x8c\xa1\x54\x7d\x73\x8b\x84\xb2\x90\xc1\x78\xe8\x7b\x11\x66\xf2\x69\x75\x58\x31\x63\xd0\x8a\x3c\x96\xea\x90\x55\x88\xc1\x99\x96\x75\xc5\x68\x50\x4f\x59\x74\xe6\x4e\xe4\x54\x39\x73\x2a\x67\x2a\x52\x5b\x8c\xa0\x4f\x34\x51\x00\x54\x2b\x90\x69\x8f\xc4\x5c\x3b\x5d\xcc\x7b\x54\x8f\xfd\x8a\x0e\x4e\x08\x92\x5b\x71\xc3\x8a\xb2\x70\xba\x96\x62\x67\x9a\x76\xae\x8b\x77\x7d\xbe\x96\xe8\x62\x11\x5b\xc4\x83\x7b\x62\xbc\x7d\x0d\x76\xe3\x7e\x2b\x96\x4d\x57\x2d\x7a\xdc\x7b\xc4\x6b\xba\x8c\x9d\x69\x8e\x90\x47\x6f\x14\x53\x60\x8f\xeb\x52\x87\x62\x4d\x65\x66\x7d\x1a\x7d\x42\x6b\xce\x7d\x79\x7e\x2e\x66\x6e\x79\x65\x50\x0b\x5c\x02\x99\xd2\x8a\x55\x75\x60\x00\x00", /* 4a00 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5b\x58\x80\x89\x50\xbe\x5e\x2b\x6d\xb2\x4f\x8b\x81\xe3\x81\xf3\x56\xe0\x7d\x99\x5d\xf2\x89\x9a\x6e\x9d\x6d\x17\x8a\xad\x89\x96\x73\x1b\x5d\xe8\x7d\xb2\x88\x8b\x4e\xfb\x5b\xc6\x88\x96\x6c\xc1\x84\x57\x8f\x03\x6b\xc5\x97\xff\x8c\xa9\x5e\x45\x82\xe6\x63\xaa\x5f\x81\x78\xc1\x82\x1e\x52\xaa\x7a\xaa\x59\x99\x62\x97\x8f\x14\x7f\xd2\x4f\xc3\x54\xc9\x96\x7a\x66\xf4\x8b\x1b\x5e\x72\x5f\xa9\x8a\x2a\x6d\x3e\x77\x63\x64\x83\x8b\x58\x61\x4e\x5a\x5a\x8d\x85\x71\xd0\x98\x3c\x72\xe9\x58\x3a\x5d\xfe\x8a\x8d\x67\xc4", /* 4a80 */ "\x7d\xe0\x4f\x11\x77\xed\x4f\x0f\x5b\xc5\x62\x9c\x5c\x3c\x53\x3b\x6d\xc0\x81\xfc\x96\xd1\x90\x4a\x6d\x6e\x93\xe1\x5c\x64\x98\xfc\x52\x4a\x6d\xfb\x85\x84\x96\x8a\x56\xfa\x58\x83\x77\x66\x98\x05\x4e\x73\x8c\x46\x8a\x31\x7d\xd2\x8f\xf0\x6d\x6a\x4f\x9d\x6b\x6f\x6b\x27\x62\xc5\x51\x1f\x97\x69\x53\x74\x9a\xa8\x67\x75\x88\x7f\x53\x05\x75\x70\x8d\x70\x86\x4e\x5c\xef\x8c\xde\x5f\xf5\x72\x5f\x76\x86\x60\x9f\x80\xcc\x59\xeb\x81\x31\x5e\x0c\x8a\x17\x96\x76\x82\xd7\x74\xb0\x84\xb8\x50\xd5\x96\xf2\x72\x48\x78\x34\x6d\xd1\x6e\x09\x67\xff\x6f\x54\x59\x15\x50\x0d\x72\xac\x9e\xc4\x7b\x46\x9b\x3c\x65\x63\x53\xbb\x8a\x98\x91\xdc\x98\x18\x6f\xc3\x65\xc5\x50\x1f\x7f\x8a\x6f\x64\x90\x31\x5f\x3e\x63\xf4\x90\x38\x8b\x66\x7b\xe4\x72\x06\x68\x43\x72\xec\x65\xcf\x82\xa6\x5b\xa2\x69\x60\x9e\xa6\x52\xdf\x67\x90\x63\x9b\x7d\x75\x98\x55\x5d\xf3\x58\x05\x8a\xcb\x95\xa3\x88\x63\x8c\xa8\x5b\x63\x5e\x8a\x54\x49\x78\x6c\x7d\x2b\x8c\xa2\x53\x52\x7d\x76\x8c\xb8\x70\x70\x54\x7c\x65\x45\x66\x76\x73\xb2\x56\xf2\x7b\xb1\x58\xa8\x7a\x81\x66\xae\x00\x00", /* 4b00 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x87\x59\xff\x88\x40\x56\xf0\x7b\x51\x6d\xf7\x5f\x01\x93\x4b\x90\x00\x4f\xe3\x67\x5f\x4f\xbf\x8c\xc3\x52\x6f\x63\xa1\x54\x42\x89\x07\x69\x8a\x5e\x2d\x5a\x18\x75\x18\x51\x4d\x5e\x7e\x50\xb5\x5b\xdd\x68\xd2\x74\x5e\x69\xfb\x5f\xae\x55\xe3\x8a\x70\x5b\xf8\x58\x24\x83\x58\x5f\x13\x5e\x95\x70\x6f\x75\x1a\x7d\x05\x60\xe3\x7e\x70\x50\x12\x52\x38\x83\xef\x53\x73\x5f\x31\x6a\x2b\x9c\xf4\x53\xcc\x6d\x32\x4e\xab\x4e\x92\x84\x2c\x8a\x8c\x65\xe2\x6f\x01\x80\xa9\x9d\xf9\x8b\x72\x7b\x52\x95\x89\x6d\x74\x63\xa2", /* 4b80 */ "\x65\x90\x5b\xd2\x63\x19\x8a\xb0\x76\xdf\x99\xa8\x7a\x74\x82\x36\x88\x46\x80\x61\x65\x57\x59\x22\x96\x44\x88\xab\x93\x26\x7b\x4b\x62\xb5\x53\x71\x5e\x81\x5b\xdf\x4f\x75\x58\xc1\x70\x58\x7d\xca\x54\x38\x73\xe0\x52\xd8\x52\x08\x78\xd0\x6b\x23\x68\x38\x4e\x43\x69\x0e\x83\x77\x6e\xd1\x98\xf2\x81\x70\x88\x57\x8e\xf8\x79\x8e\x83\xdc\x8f\xce\x7e\x01\x55\x10\x4e\xa8\x8a\x33\x91\x62\x5e\xfb\x60\x6f\x4e\x86\x66\x4b\x63\x68\x52\x17\x80\x56\x51\xfd\x76\x42\x82\x1f\x96\x85\x50\xcf\x66\x2f\x4f\x3c\x4e\x59\x6a\x3d\x4e\x71\x52\x3a\x8a\xcf\x6a\x58\x66\xff\x67\x0b\x65\x3b\x97\x32\x5e\xc3\x8a\x13\x57\x82\x60\x4b\x86\x6b\x95\xd8\x60\xa9\x4e\x01\x63\xcf\x6f\xc0\x65\x9c\x8c\xac\x83\x05\x7c\xa7\x60\x50\x96\xf7\x5f\xcd\x64\x0d\x5b\x54\x90\x0f\x62\xd3\x59\xb9\x71\x59\x51\xac\x79\xf0\x55\x2f\x52\x75\x66\x97\x80\xf8\x4e\x98\x4e\xcf\x51\xcd\x9d\x5c\x51\x44\x7a\x93\x67\xf1\x58\x41\x7c\x21\x88\x61\x5c\x31\x68\xda\x91\xe7\x9d\xf2\x63\xee\x65\x75\x84\xee\x52\x3b\x6b\x32\x7c\x98\x59\x82\x96\x9c\x89\x87\x7c\x9f\x90\x06\x62\xdb\x66\xdc\x00\x00", /* 4c00 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x63\x55\x69\x82\x50\xac\x62\x3b\x5f\xd8\x63\xda\x75\xdb\x62\x7f\x61\x6e\x82\x66\x7c\x95\x71\x6e\x96\xc7\x7f\x6a\x54\x26\x52\x00\x83\xd3\x52\x11\x59\x4f\x9d\x28\x57\x4a\x66\xc7\x98\x58\x82\x0e\x66\x14\x73\x3f\x50\xb7\x65\x51\x5e\xb8\x5b\x6b\x55\xac\x5f\xeb\x63\x88\x8c\xaf\x67\x6f\x59\x51\x5a\x01\x71\xe5\x5d\xe3\x8c\x6a\x62\x71\x81\xf4\x5c\x3a\x5f\x92\x90\x45\x73\x84\x71\x49\x79\xd8\x79\x6d\x90\x03\x83\xcc\x5f\xb4\x5b\x8d\x62\x79\x64\xae\x7d\x18\x72\x3e\x5b\xee\x65\xe7\x8d\x08\x9e\x7c\x52\xe7\x5d\x07", /* 4c80 */ "\x9f\x62\x60\x69\x53\x6f\x66\x81\x96\x63\x5e\x3d\x62\xb1\x72\x2a\x6e\x4a\x93\xae\x79\xe6\x53\xe5\x80\x9d\x88\xfe\x53\xb3\x6c\x88\x6e\x7f\x51\x41\x90\x91\x6f\x6e\x84\xc4\x85\xea\x81\x29\x6b\xd2\x66\x3c\x7f\x72\x73\xc2\x5f\x1f\x79\x0e\x60\xb2\x72\xed\x58\xee\x81\x79\x8e\x8d\x5c\x65\x5d\xe7\x6c\x37\x6d\xe1\x86\x2d\x72\xaf\x8e\x0a\x7c\x92\x82\x18\x80\x33\x63\xa7\x92\x91\x50\x19\x81\x55\x8a\x69\x8e\xdf\x66\xb4\x81\x33\x75\x91\x6b\x20\x66\x69\x90\xf5\x4e\x32\x73\xea\x69\x3f\x76\x87\x70\x7d\x7d\x3a\x61\x48\x86\x07\x99\xff\x59\xc9\x78\x32\x78\x15\x90\x7f\x80\xa1\x5c\x3f\x66\xa2\x94\x18\x6d\x44\x5e\x55\x58\x54\x7b\x95\x8d\xe1\x4e\xa1\x8c\x5a\x81\xe8\x89\xe6\x96\x70\x52\x63\x74\xf6\x9a\x5a\x60\x12\x52\x0a\x74\x34\x98\x01\x90\x7a\x55\x04\x79\x56\x52\x30\x54\xb2\x8a\x34\x96\xa3\x4f\xf3\x92\x83\x91\xe3\x7d\x39\x96\x88\x4f\x51\x7d\x61\x5d\xba\x9b\xae\x5f\x80\x79\x5d\x85\x97\x8d\xa3\x7c\x60\x5c\x0a\x75\x65\x85\xa9\x63\xd6\x9e\x97\x7d\x22\x53\x75\x9a\xea\x90\x42\x6b\x3d\x7d\x0b\x63\x92\x80\xaa\x7d\xe9\x9f\x3b\x99\xc6\x00\x00", /* 4d00 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6d\x78\x67\x31\x55\x31\x63\x98\x78\x25\x5c\xb3\x5d\xe1\x92\xad\x98\xfd\x98\x10\x6c\xe3\x6b\x64\x53\x21\x6b\x53\x5e\x8f\x7a\xe5\x50\x2b\x6e\x56\x62\xbd\x82\x76\x6a\x9c\x4e\x18\x57\xf7\x75\x2b\x7c\x97\x82\xeb\x98\x02\x81\x1a\x73\xcd\x8f\x9b\x5c\x0b\x63\xe1\x73\x72\x81\x50\x80\xe1\x5b\x99\x76\xd7\x62\x91\x65\xec\x8a\x3a\x59\x47\x65\xe8\x6e\x7e\x66\x96\x55\xab\x8f\x09\x92\xed\x93\x96\x4e\xee\x75\x5c\x6f\x38\x8f\x9e\x79\x81\x5c\x01\x62\xe0\x9b\xe8\x91\xc8\x62\x76\x65\xcb\x8e\x0f\x8b\x21\x69\x9b\x62\x16", /* 4d80 */ "\x5a\x92\x90\xb8\x50\xda\x79\xdf\x6c\x41\x52\x70\x91\x75\x8b\x39\x68\x5d\x58\x75\x81\x9c\x5b\x9c\x8a\x89\x8a\x72\x9d\x8f\x63\x77\x59\x74\x8a\xa4\x52\xb1\x69\x62\x5c\x48\x9c\xe9\x67\x3a\x75\xb2\x6d\x1e\x4f\x0d\x7e\x6d\x7b\x48\x7f\xcc\x65\xe6\x59\xa5\x79\xe9\x62\x12\x6e\xde\x77\x0b\x8c\xa7\x65\xbc\x88\x5d\x6a\xdb\x5c\x4a\x80\x74\x90\x84\x8e\xcc\x65\xd7\x57\xf9\x70\x8e\x6f\x06\x5e\x7c\x77\xac\x4f\xf5\x59\x49\x81\xed\x9b\x45\x7f\xfc\x81\x78\x69\xfd\x6c\xca\x69\xc7\x79\xd2\x8b\x1d\x9e\xd9\x81\xd3\x7a\x3c\x79\x68\x6f\x5c\x63\xb2\x8d\xdd\x63\x83\x6e\x9c\x5e\x33\x61\xf8\x76\xbf\x64\x2c\x7d\xb4\x62\x47\x64\x58\x68\x16\x5f\x69\x90\x22\x7a\x1a\x82\xb9\x70\xc8\x9a\x12\x61\x63\x6f\xef\x53\xeb\x9d\x3b\x62\xfe\x60\xa0\x95\x91\x6d\x99\x61\x62\x92\x98\x63\x5c\x97\x07\x89\x72\x68\x3d\x51\xe1\x9b\x54\x60\x8c\x5b\x22\x99\xc4\x71\x26\x8a\x73\x97\x1c\x73\x96\x67\xd4\x60\xa3\x4e\x11\x4e\xf0\x8c\xdb\x8c\xb0\x79\x12\x97\x74\x89\x86\x51\x46\x57\xdc\x99\xd0\x80\xc3\x83\x38\x78\xa7\x86\xcd\x7f\x85\x50\x49\x82\x47\x69\x0b\x7c\x4d\x00\x00", /* 4e00 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x53\xea\x5f\x26\x6e\x25\x68\x81\x93\x75\x5d\xfd\x53\x47\x97\x27\x64\x3a\x75\xc7\x6f\xa4\x73\xa9\x77\xe9\x94\x51\x8b\x5c\x80\x8c\x67\x4e\x4e\xad\x58\x2f\x75\x73\x8e\xd2\x6c\xe5\x93\x20\x8f\xf7\x7d\x33\x72\xc2\x82\x17\x74\x22\x82\xc5\x9a\x30\x77\x3a\x5f\x84\x96\x73\x64\xad\x92\x0d\x74\xdc\x60\xc7\x86\xed\x4f\xfa\x52\xa3\x6a\x3a\x77\x20\x53\x20\x61\xb6\x56\x74\x87\x76\x6c\xbf\x50\x5c\x60\x2a\x84\x66\x6b\x96\x6d\xbc\x97\xd3\x96\x8f\x68\x76\x60\xd1\x53\x78\x64\xa4\x51\xa0\x91\x54\x5d\xf4\x62\x9e\x5e\x63", /* 4e80 */ "\x92\x9a\x76\x93\x6c\x5a\x65\x97\x50\xe7\x7c\x82\x5f\x6b\x6c\xe1\x5f\x6c\x5a\xc1\x6f\x2c\x85\x2d\x64\x42\x57\x50\x58\xc7\x8c\xfc\x8a\x5e\x7a\x7f\x68\x9d\x7e\x26\x7a\x40\x73\x44\x8a\xeb\x4f\xd7\x7a\x63\x80\x36\x7d\xef\x80\xc6\x8a\xed\x73\x1f\x8f\xea\x4f\x0e\x75\x8b\x51\x8a\x67\x34\x5f\xd9\x61\xc7\x65\xaf\x9c\xf3\x5e\xca\x92\x62\x68\xdf\x6c\xb8\x80\xf4\x57\xcb\x6c\x99\x96\xa0\x5b\x64\x58\xf1\x68\xc4\x54\x10\x98\x30\x8a\x87\x4e\x5e\x61\x67\x9b\xab\x90\xaa\x55\xb0\x82\xbd\x59\x6a\x66\xf3\x82\x99\x58\x93\x71\x9f\x62\x84\x67\xd1\x90\x63\x5a\xcc\x6c\x57\x7c\xe7\x58\x51\x64\xb2\x58\xca\x83\x0e\x59\x68\x53\x02\x5a\x46\x87\x02\x60\x65\x72\xd9\x89\xa7\x66\x89\x66\xf9\x5d\x6f\x5b\xb0\x96\xbc\x63\x6e\x60\xdc\x79\x48\x51\xdd\x86\x06\x5e\xc9\x75\x54\x59\x6e\x6b\x04\x4f\x43\x7b\x94\x67\xda\x62\xdd\x62\x8a\x97\x1e\x62\xed\x6e\xc5\x50\x8d\x67\xb6\x80\xe4\x9e\xbf\x5e\xb5\x63\x8c\x85\xcd\x98\x67\x52\xc5\x60\x16\x68\xcb\x61\xd0\x57\x51\x8f\x29\x5f\xaa\x81\xa8\x7d\x62\x71\xc8\x54\xc0\x69\xcc\x6b\x3e\x65\xac\x63\xc3\x4f\x46\x00\x00", /* 4f00 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7b\x1b\x6b\x86\x88\xf8\x52\x03\x73\x2e\x66\x87\x7d\x17\x57\xf4\x57\x0f\x61\x8e\x97\x0a\x7c\x3f\x8b\x00\x78\x81\x8c\xe0\x54\x8b\x7b\x87\x74\x5b\x7c\x11\x88\x70\x53\x98\x54\x48\x6c\xf3\x6f\x22\x53\xf6\x88\xb4\x53\x01\x7a\x6b\x86\x95\x58\x6b\x5d\x29\x88\xc2\x62\xd2\x4e\x1e\x50\x36\x96\xc0\x73\x63\x8a\x3b\x51\x76\x71\x99\x7f\xe0\x88\x88\x7e\x1e\x4e\x4f\x84\xcb\x6f\x2b\x58\x59\x93\x6c\x53\xe9\x86\x5a\x91\x49\x86\xef\x5e\x06\x55\x07\x90\x2e\x67\x95\x84\x6c\x5b\xa5\x82\xa5\x84\x31\x6d\x8c\x63\xfa\x4e\xa5", /* 4f80 */ "\x51\xc6\x63\x28\x7f\x70\x5b\x5f\x5d\xbd\x99\xc8\x53\xec\x79\x85\x8a\x54\x79\x62\x88\xdf\x5b\x09\x4f\xb5\x4f\x91\x9b\x8e\x51\x92\x96\xf0\x6d\xaf\x62\x2f\x84\x90\x8c\xdc\x50\x75\x5c\xe0\x4e\x14\x4f\x83\x7c\x54\x84\xd1\x77\xb3\x8a\xee\x5c\xe8\x62\xf6\x66\x3b\x8a\x93\x85\x26\x8a\x95\x65\xfa\x67\x14\x53\xd4\x62\xab\x8c\xe6\x88\xf3\x5b\xe7\x86\x8a\x66\x8e\x58\x2a\x61\x70\x69\x6f\x9f\x13\x7a\x92\x78\x93\x6a\x7f\x90\x17\x92\x66\x7d\x10\x7b\xc7\x6e\xf4\x82\x1c\x5c\x3d\x62\xcd\x85\xc1\x6f\x02\x6e\x67\x66\x91\x85\xa6\x63\x7a\x82\x1b\x4f\x8d\x50\x91\x8a\x02\x62\xec\x9b\xc9\x7a\x3d\x7c\x9b\x50\xc5\x90\x19\x70\x8a\x7c\x8b\x64\xec\x66\x5f\x65\x62\x73\x2b\x53\x39\x67\xa0\x55\xa7\x6d\x2a\x7a\x3f\x64\xe6\x79\xa7\x67\xd8\x7b\x26\x96\xbb\x63\x11\x72\xa0\x5c\x6f\x70\x26\x97\xee\x60\xdf\x8a\xfe\x8b\x04\x84\x94\x9b\xd6\x82\xaf\x93\x2c\x66\x06\x96\x40\x5b\xc2\x86\xc7\x79\x49\x80\x17\x69\x19\x70\x92\x96\x3b\x7c\x7e\x59\xd3\x5b\x5c\x7d\x1b\x91\xd8\x6a\x80\x85\xe9\x69\x05\x6c\x93\x50\x2d\x4e\xa6\x7f\xc1\x61\xa4\x8c\xca\x96\x65\x00\x00", /* 5000 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x93\xd1\x53\xf1\x59\x8a\x8e\xac\x62\xd8\x68\x67\x71\xd5\x7b\x67\x50\x4f\x67\xd0\x82\xd1\x97\x8d\x74\x8b\x80\xba\x73\x36\x51\x4e\x81\x05\x90\xca\x58\x4a\x67\xfe\x6f\xf1\x5f\xfd\x76\xc6\x9a\x0e\x50\x7d\x96\x94\x5e\xf7\x7b\xb8\x90\x4d\x6c\x4e\x85\xfb\x81\x9d\x67\xaf\x56\x4c\x56\x06\x8c\x8c\x56\xda\x73\xed\x8c\xc4\x8f\xc5\x96\xf6\x6c\x50\x89\x44\x8f\x3f\x7d\x5e\x60\xe8\x72\xfc\x7d\x9c\x84\x63\x5c\xfb\x54\x46\x5d\x16\x6c\xa1\x81\xb3\x58\xfa\x5b\xb4\x81\x08\x54\x1f\x8c\xbc\x61\x82\x78\xa9\x6f\xe1\x91\xac", /* 5080 */ "\x76\xf2\x60\x20\x76\xfe\x84\xc9\x7f\x36\x4e\xc7\x75\x5d\x7a\x17\x84\xec\x75\xf4\x4f\x3a\x67\x6d\x74\x60\x62\xf3\x6f\x20\x79\xe4\x87\xf9\x60\x94\x62\x34\x66\xab\x82\x0c\x84\x99\x72\x3a\x5f\xcc\x61\x09\x70\xcf\x72\x61\x7a\x50\x50\x98\x9a\xed\x5d\x69\x60\x1c\x66\x67\x99\xb4\x5e\x7b\x64\x3e\x58\x30\x53\xc9\x7a\x9f\x99\x0c\x9b\x42\x8f\x5f\x7a\xae\x5b\x9b\x68\xa2\x62\x49\x79\x84\x9d\xfa\x54\x51\x93\x2f\x8a\xc4\x5f\x90\x8d\xf3\x5a\x2f\x80\xde\x6d\x29\x7a\x4f\x84\xbc\x9d\x2b\x90\x10\x6d\x38\x91\x6a\x6f\xc1\x99\x05\x6b\xbb\x5e\xb6\x91\xb8\x50\x76\x6f\x0f\x4e\x19\x54\x0f\x96\x75\x6c\x72\x51\xb4\x56\x31\x9f\x20\x66\xa6\x5f\x0a\x75\xab\x51\xf8\x67\x4f\x8d\xf5\x6c\x70\x8a\x6b\x75\x7f\x5c\xac\x68\x41\x8c\xd3\x9b\xdb\x84\x75\x68\x93\x84\x0c\x72\xdb\x75\x77\x85\x68\x78\x3a\x84\x7a\x5f\x10\x83\x1c\x68\x13\x6e\x1a\x9d\xaf\x51\xf9\x79\x80\x4e\x99\x5e\xe3\x90\x8a\x80\xaf\x59\xa8\x77\xdb\x8d\x74\x8a\x1f\x67\x3d\x53\x3f\x8a\x0a\x56\x18\x67\x56\x53\xd9\x4f\x10\x74\x09\x5a\x41\x4f\xf8\x79\xb0\x98\x38\x8e\x2a\x9d\x60\x8f\x44\x00\x00", /* 5100 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x65\xa5\x75\xbe\x90\x6d\x86\x7b\x60\xbc\x51\xb6\x59\x37\x7d\x2f\x91\x6c\x69\xae\x7c\xe0\x79\x2a\x5d\x14\x64\xc1\x58\xec\x58\x9c\x8d\x66\x66\xd9\x61\xf2\x91\x2d\x6e\x58\x94\x35\x96\x5b\x72\x72\x5f\x6a\x5e\x9a\x8f\x1b\x5b\x95\x5c\x39\x90\x13\x83\x4f\x7c\xce\x62\x0a\x90\xed\x69\x1b\x6e\x15\x65\xdb\x66\xfe\x4e\x9f\x55\xaa\x7a\x83\x83\xe9\x8b\x83\x84\x6d\x83\xf0\x7f\x50\x91\x8d\x91\x90\x75\x8e\x95\xa5\x81\xe7\x75\xe2\x61\xa9\x8a\x50\x95\xb2\x53\xa8\x59\xf6\x98\x13\x78\x91\x7c\x17\x6b\x3a\x57\xe0\x62\x0e", /* 5180 */ "\x83\xd6\x8a\xd2\x75\xd4\x92\x7e\x59\xdc\x52\x89\x90\x87\x6f\xfe\x74\x73\x5c\x09\x9d\x6c\x84\xfc\x7c\xdf\x7b\xad\x8a\x6e\x59\x4e\x56\xca\x81\x9a\x79\x47\x66\x36\x53\xe1\x78\x87\x58\xcc\x93\x97\x6e\x13\x52\x56\x82\x8b\x9e\x9f\x95\x83\x65\x8c\x9e\x93\x73\x45\x6e\x26\x9d\x07\x59\x83\x7d\xac\x96\xc1\x61\xbe\x67\x62\x9e\xce\x90\xa8\x91\x87\x9f\x0e\x7c\x38\x51\xf1\x85\x99\x52\x4c\x54\x0e\x79\x01\x65\x5e\x66\x68\x5c\xe1\x75\x66\x76\xc8\x86\x79\x53\x1d\x55\x06\x79\x26\x89\x12\x77\xef\x7c\xc0\x57\x0b\x51\x5c\x7e\x8a\x53\x5c\x8a\x60\x65\xa7\x87\x66\x57\x66\x6a\xe8\x87\xfb\x5e\x16\x7a\xea\x8d\x73\x77\x1e\x73\x7a\x66\xe0\x94\x10\x81\x6b\x7b\x08\x91\xfc\x57\x37\x6f\xe4\x85\x6a\x7e\x55\x99\x57\x87\xba\x69\x4a\x81\x8f\x5e\xff\x89\x1c\x72\xd0\x98\x46\x9e\xdb\x8d\x99\x5d\xd6\x62\xb9\x64\xab\x4f\x76\x61\x3f\x68\xaf\x5f\x14\x80\x0c\x92\xf8\x7b\xc1\x52\xfe\x66\x4f\x91\x77\x51\xf6\x97\xa0\x83\x9e\x64\x7a\x9c\x3a\x68\x05\x7c\x4f\x68\x5f\x9b\x6f\x9f\x4b\x7f\xfb\x93\x48\x4f\xf6\x9e\x92\x91\xb1\x96\xdb\x5b\xe6\x6c\xcc\x7c\xfe\x00\x00", /* 5200 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x94\x53\x68\x22\x66\xb9\x5b\xd4\x98\xf4\x8a\xe6\x81\x54\x78\x27\x74\xbd\x6e\xd3\x92\x88\x5a\x20\x5b\x8b\x86\xf8\x76\x0d\x86\x5c\x66\x41\x91\xc9\x55\x89\x7a\x4e\x59\xe5\x60\x42\x93\x2b\x5b\x5a\x84\x9c\x5c\x91\x96\xcd\x62\xd9\x67\x5c\x67\x87\x5e\x7d\x86\x50\x9e\xb9\x5c\xb1\x80\xce\x7a\x00\x8a\xbc\x57\x00\x80\x96\x7d\x72\x92\x11\x80\x98\x90\x7c\x77\x61\x87\x37\x90\x75\x81\x7a\x7c\x3e\x6e\xa2\x96\x5e\x7e\x90\x72\xd7\x58\xfd\x60\xb3\x97\x86\x7e\x88\x58\x7e\x6e\x20\x84\xdc\x69\x61\x77\xad\x51\x97\x65\x2a", /* 5280 */ "\x67\x77\x5d\xcd\x61\x01\x93\x2e\x59\x54\x63\x67\x79\x8d\x7a\xff\x80\xd6\x58\xb3\x61\x68\x6a\xc3\x74\x83\x9b\x92\x66\x0a\x64\x2d\x51\x18\x67\x63\x80\x9b\x9c\x10\x4f\xc9\x69\x53\x7a\x1c\x52\xff\x60\x55\x76\x8e\x81\x7f\x56\x42\x5f\x6d\x71\x94\x70\xbb\x74\x36\x80\x00\x88\x1f\x55\xda\x74\x35\x76\x90\x96\xeb\x66\xdd\x75\x1c\x63\x3d\x6e\xc9\x7c\x64\x7c\xa5\x6d\x35\x93\x5c\x70\x27\x5e\x25\x70\x1d\x54\xbd\x61\x1a\x69\x73\x6c\x6a\x55\x9a\x6d\x19\x96\xcc\x5b\xe1\x59\xfb\x69\x7c\x91\x4c\x77\x09\x85\x00\x7a\x46\x78\x72\x92\xe4\x8c\xed\x7c\xfa\x9d\x1b\x81\x4e\x9a\xc4\x68\xa0\x6d\xcb\x59\x18\x84\x0a\x56\x29\x9b\x41\x68\x97\x70\xb3\x97\x71\x94\x19\x67\xa2\x68\x02\x78\x95\x68\xa7\x50\xd6\x80\xb1\x5e\xf8\x82\xd4\x79\x7a\x67\xca\x7e\x61\x69\xcd\x51\xc4\x72\x3d\x68\x29\x99\xb3\x5f\x3c\x8f\x61\x68\x2b\x61\x55\x65\x91\x8f\xb1\x7e\x1b\x97\x98\x99\x52\x88\x77\x5b\x2c\x66\x31\x4f\xe0\x69\x39\x6a\xfb\x5b\xb5\x7a\xc8\x50\x26\x59\x44\x90\x59\x7b\x25\x7b\x4f\x8e\x74\x85\x43\x58\x58\x8b\x0e\x50\x39\x86\x54\x97\xf6\x75\x69\x72\xf8\x00\x00", /* 5300 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4e\xf7\x9d\x89\x50\x16\x51\xcc\x62\xcc\x91\xc6\x87\x55\x64\x9a\x88\xf4\x91\xe6\x68\x54\x69\x5a\x6c\x40\x7b\x6c\x67\x41\x77\xd7\x88\x23\x53\x84\x8e\xc0\x72\x80\x8c\x6b\x78\x8d\x71\x65\x82\x07\x68\xb1\x8d\x04\x90\x77\x70\x1e\x8f\xe6\x81\x0a\x81\xbf\x89\xdc\x68\xb3\x6a\xdf\x92\xea\x95\xc7\x79\x57\x7a\x20\x53\xa9\x8e\x5f\x78\x6f\x79\xb9\x5f\x27\x5e\xd6\x68\x53\x93\xac\x91\x9c\x69\x1a\x58\x06\x64\xb0\x7e\x6b\x7d\x8f\x68\xf2\x6e\xa5\x82\xdb\x91\x92\x52\x43\x8e\xb0\x90\x81\x72\x1b\x7d\xcb\x76\x56\x59\xac", /* 5380 */ "\x6f\xe0\x8b\x28\x80\xa2\x55\x44\x60\x70\x5f\x4a\x68\xc8\x63\x3a\x94\x38\x9b\x4f\x81\xe5\x6a\x17\x70\xdd\x69\xa7\x61\x4c\x92\x0e\x93\x10\x9b\xad\x52\xd7\x92\x5e\x92\xf9\x59\x93\x76\x96\x66\xfb\x57\x69\x73\xca\x76\x78\x6a\x1f\x7e\x9c\x98\x11\x8c\xd1\x58\x40\x63\x49\x87\x1c\x62\xd0\x60\xb4\x6b\x89\x86\xee\x57\x64\x58\x1d\x85\x49\x72\x35\x76\x52\x98\x3b\x82\x37\x53\x51\x5c\x24\x59\xbe\x58\x15\x90\x1d\x69\xb4\x83\x4a\x9e\xa9\x97\x6b\x80\x86\x53\xad\x60\x68\x4f\xae\x76\xc3\x6a\x05\x68\x9b\x93\x7e\x99\xd5\x91\xc7\x5c\x16\x58\x5e\x61\xa7\x96\x99\x4f\xdf\x82\x78\x9c\x52\x5f\x45\x61\x08\x7c\x8d\x80\x6f\x5d\xf7\x8d\x6b\x57\xb0\x98\xe2\x57\x03\x79\xbf\x59\x96\x79\x41\x54\x0a\x83\xdf\x9c\x39\x52\xd2\x6b\xd8\x86\xcb\x4e\xc0\x9a\x52\x53\x66\x80\x06\x73\x37\x64\x92\x8f\xed\x5a\xc9\x54\x20\x53\x7f\x4f\xaf\x80\x7e\x54\x3b\x75\x15\x7b\x18\x87\xec\x54\xb3\x70\x4c\x89\x97\x6c\xab\x85\xfa\x71\x30\x69\x6e\x93\x28\x74\x5a\x59\xd1\x6e\x5b\x61\x7e\x53\xe2\x83\x17\x76\xe7\x85\x23\x85\xaf\x69\x25\x5c\x60\x72\x59\x75\xd5\x8b\x90\x00\x00", /* 5400 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6e\x07\x82\xad\x5c\x5b\x7b\xed\x97\x84\x6f\x70\x76\x4c\x88\xb7\x92\xd2\x4f\x36\x5e\xfe\x90\x61\x88\xe1\x84\x71\x71\x1a\x6d\x1b\x80\xb4\x74\xe2\x74\x33\x5a\x7f\x90\x5c\x98\x0c\x53\x19\x90\x6e\x6b\xb4\x85\xaa\x78\x97\x7a\xfa\x6a\xae\x89\x10\x95\x8f\x62\x0c\x4f\x3d\x4f\x7c\x79\xbe\x9d\xd7\x4e\xd4\x57\xa2\x51\xa5\x69\x00\x60\x89\x70\x7c\x7a\xe3\x89\x56\x93\xa7\x9c\x2d\x51\x12\x52\xfa\x7c\xca\x60\xf9\x70\x78\x81\xc6\x55\x9d\x69\x91\x96\xc9\x55\x3e\x80\x5a\x83\x04\x83\x32\x54\xfa\x56\x99\x8f\xbf\x56\x34", /* 5480 */ "\x67\x60\x52\x65\x84\x0e\x5e\x5f\x7b\x65\x90\x35\x83\x87\x6b\x4e\x58\xbe\x63\x09\x72\x7d\x97\xad\x69\xd0\x54\x6a\x98\x4e\x63\x2b\x71\x4e\x85\x57\x7c\xde\x63\x72\x68\xf9\x75\x11\x86\x02\x6e\xba\x5a\x3c\x7a\x84\x85\x1a\x95\xa4\x59\xd0\x60\xda\x51\xea\x5a\x29\x71\x69\x6f\x15\x69\x6b\x64\x14\x76\x26\x4e\x4e\x7d\xbb\x69\x34\x85\x21\x8f\xfa\x93\x54\x9c\x3b\x5f\x17\x5e\xd3\x82\x58\x89\x5f\x82\xe7\x52\xc3\x5c\x51\x83\xab\x78\x26\x79\xe1\x7f\xf0\x62\x6e\x60\xf0\x5c\xa8\x6f\x97\x71\xa8\x99\x09\x51\x32\x5e\x37\x5f\x04\x63\x7b\x67\x53\x68\xd7\x66\x52\x9c\xf6\x88\xb0\x52\xab\x4f\xc4\x4e\x3c\x67\xb3\x7c\x1e\x7f\x4d\x8a\x23\x64\x51\x71\xe6\x65\xa4\x6f\x09\x85\x3d\x50\x72\x7d\xba\x55\x5e\x7b\x04\x72\xfd\x6c\xd3\x84\x22\x62\x1f\x50\xad\x82\x35\x87\x18\x59\x19\x60\x28\x67\x7c\x6f\x23\x75\xb9\x69\x5c\x52\x0e\x80\x18\x8b\x01\x71\xed\x57\x13\x66\x0f\x83\xeb\x71\x64\x7d\x9b\x56\x17\x7d\x7d\x8f\x4d\x93\x18\x85\x69\x5d\x17\x67\x8c\x67\xde\x87\xc7\x79\xae\x58\x35\x84\x04\x90\x41\x7f\xd4\x6f\x51\x8a\x63\x9d\x08\x67\x0f\x93\x9a\x00\x00", /* 5500 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x63\xac\x60\x2f\x64\xe2\x60\x8d\x96\xb7\x63\x57\x84\x61\x91\x4b\x75\xd8\x60\xe7\x99\x13\x9c\x57\x59\x84\x6d\xeb\x5e\x96\x70\x06\x9b\xf0\x58\xbb\x79\xb1\x60\xb6\x63\x3f\x5b\xf5\x98\x12\x55\x8b\x82\xd3\x51\x47\x61\x90\x79\x53\x79\xbd\x6c\x5d\x9e\xba\x9c\x48\x8d\xa8\x5e\xe0\x7d\x43\x5e\xfc\x85\x4e\x8c\xe4\x5a\xe1\x54\xe8\x50\x23\x52\xbe\x7d\xec\x85\x11\x66\x66\x6c\x3e\x72\x4c\x8a\xdc\x9c\x0d\x77\xa5\x8b\x02\x8d\x05\x6f\x11\x98\x34\x97\xfb\x50\xfb\x7f\x75\x5a\x03\x85\x13\x4f\xb6\x63\x4c\x9d\x61\x80\x8b", /* 5580 */ "\x52\x94\x65\xa1\x56\x7a\x59\x57\x8d\x0b\x6a\x35\x6a\xd3\x70\xf9\x86\x5e\x6f\xb1\x51\xe7\x7f\xeb\x59\xea\x5e\x87\x6b\x6a\x75\x4f\x71\x7d\x91\x4e\x7d\x2c\x8c\x79\x60\x62\x62\x1a\x7f\xa8\x5f\x1b\x6c\x8c\x86\xfe\x75\x62\x7b\x86\x9a\xb8\x66\x27\x7a\xba\x84\x4e\x6f\x81\x8b\x2c\x86\xa4\x6f\xeb\x7b\x8b\x7f\x77\x8f\x2f\x8e\x44\x7e\x23\x4e\x4d\x79\xa6\x8a\xfa\x90\x3c\x50\xd1\x9e\xcd\x5e\xdf\x75\x8f\x63\x1f\x53\xdb\x99\x10\x82\x6e\x62\xf7\x68\xfa\x72\x5d\x80\x3d\x58\xd5\x5c\x4d\x86\xd9\x54\x0b\x88\x05\x92\xf2\x92\x37\x5c\x62\x98\x5b\x86\xe4\x96\x6a\x72\x62\x69\x55\x6c\xd7\x69\x94\x9c\x2f\x77\xe7\x68\xc9\x8d\xe8\x6d\x6c\x67\xc1\x9b\xaa\x61\x9a\x63\xa9\x70\x15\x93\x06\x93\x4d\x6a\x61\x62\x58\x52\x83\x75\x25\x56\x87\x6c\x83\x68\x34\x64\x9e\x4e\x9b\x72\x52\x59\xe6\x8f\xc2\x5f\xbd\x6d\xd8\x85\xf7\x8a\x51\x98\x17\x99\xc1\x63\xa0\x7c\x81\x5b\x30\x81\x39\x54\x03\x7e\x82\x81\x06\x53\x2a\x6a\x8e\x7f\x6b\x54\xe9\x56\x78\x8a\xb9\x67\x15\x5b\xd3\x64\x78\x64\xfe\x6b\x1d\x8c\xc2\x51\xcb\x7e\x8f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 5600 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5f\x0c\x4e\x10\x4e\x15\x4e\x28\x4e\x2a\x4e\x31\x4e\x36\x4e\x3f\x4e\x42\x4e\x56\x4e\x58\x4e\x62\x4e\x82\x4e\x85\x4e\x8a\x4e\x8e\x5f\x0d\x4e\x9e\x4e\xa0\x4e\xa2\x4e\xb0\x4e\xb3\x4e\xb6\x4e\xce\x4e\xcd\x4e\xc4\x4e\xc6\x4e\xc2\x4e\xe1\x4e\xd7\x4e\xde\x4e\xed\x4e\xdf\x4e\xfc\x4f\x09\x4f\x1c\x4f\x00\x4f\x03\x4f\x5a\x4f\x30\x4f\x5d\x4f\x39\x4f\x57\x4f\x47\x4f\x5e\x4f\x56\x4f\x5b\x4f\x92\x4f\x8a\x4f\x88\x4f\x8f\x4f\x9a\x4f\xad\x4f\x98\x4f\x7b\x4f\xab\x4f\x69\x4f\x70\x4f\x94\x4f\x6f\x4f\x86\x4f\x96\x4f\xd4", /* 5680 */ "\x4f\xce\x4f\xd8\x4f\xdb\x4f\xd1\x4f\xda\x4f\xd0\x4f\xcd\x4f\xe4\x4f\xe5\x50\x1a\x50\x40\x50\x28\x50\x14\x50\x2a\x50\x25\x50\x05\x50\x21\x50\x22\x50\x29\x50\x2c\x4f\xff\x4f\xfe\x4f\xef\x50\x11\x50\x1e\x50\x06\x50\x43\x50\x47\x50\x55\x50\x50\x50\x48\x50\x5a\x50\x56\x50\x0f\x50\x46\x50\x70\x50\x42\x50\x6c\x50\x78\x50\x80\x50\x94\x50\x9a\x50\x85\x50\xb4\x67\x03\x50\xb2\x50\xc9\x50\xca\x50\xb3\x50\xc2\x50\xf4\x50\xde\x50\xe5\x50\xd8\x50\xed\x50\xe3\x50\xee\x50\xf9\x50\xf5\x51\x09\x51\x01\x51\x02\x51\x1a\x51\x15\x51\x14\x51\x16\x51\x21\x51\x3a\x51\x37\x51\x3c\x51\x3b\x51\x3f\x51\x40\x51\x4a\x51\x4c\x51\x52\x51\x54\x51\x62\x51\x64\x51\x69\x51\x6a\x51\x6e\x51\x80\x51\x82\x56\xd8\x51\x8c\x51\x89\x51\x8f\x51\x91\x51\x93\x51\x95\x51\x96\x51\x9d\x51\xa4\x51\xa6\x51\xa2\x51\xa9\x51\xaa\x51\xab\x51\xb3\x51\xb1\x51\xb2\x51\xb0\x51\xb5\x51\xbe\x51\xbd\x51\xc5\x51\xc9\x51\xdb\x51\xe0\x51\xe9\x51\xec\x51\xed\x51\xf0\x51\xf5\x51\xfe\x52\x04\x52\x0b\x52\x14\x52\x15\x52\x27\x52\x2a\x52\x2e\x52\x33\x52\x39\x52\x44\x52\x4b\x00\x00", /* 5700 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x52\x4f\x52\x5e\x52\x54\x52\x71\x52\x6a\x52\x73\x52\x74\x52\x69\x52\x7f\x52\x7d\x52\x8d\x52\x88\x52\x92\x52\x91\x52\x9c\x52\xa6\x52\xac\x52\xad\x52\xbc\x52\xb5\x52\xc1\x52\xc0\x52\xcd\x52\xdb\x52\xde\x52\xe3\x52\xe6\x52\xe0\x52\xf3\x52\xf5\x52\xf8\x52\xf9\x53\x00\x53\x06\x53\x07\x53\x08\x75\x38\x53\x0d\x53\x10\x53\x0f\x53\x15\x53\x1a\x53\x24\x53\x23\x53\x2f\x53\x31\x53\x33\x53\x38\x53\x40\x53\x45\x53\x46\x53\x49\x4e\x17\x53\x4d\x51\xd6\x82\x09\x53\x5e\x53\x69\x53\x6e\x53\x72\x53\x77\x53\x7b\x53\x82", /* 5780 */ "\x53\x93\x53\x96\x53\xa0\x53\xa6\x53\xa5\x53\xae\x53\xb0\x53\xb2\x53\xb6\x53\xc3\x7c\x12\x53\xdd\x53\xdf\x66\xfc\xfa\x0e\x71\xee\x53\xee\x53\xe8\x53\xed\x53\xfa\x54\x01\x54\x3d\x54\x40\x54\x2c\x54\x2d\x54\x3c\x54\x2e\x54\x36\x54\x29\x54\x1d\x54\x4e\x54\x8f\x54\x75\x54\x8e\x54\x5f\x54\x71\x54\x77\x54\x70\x54\x92\x54\x7b\x54\x80\x54\x9c\x54\x76\x54\x84\x54\x90\x54\x86\x54\x8a\x54\xc7\x54\xbc\x54\xaf\x54\xa2\x54\xb8\x54\xa5\x54\xac\x54\xc4\x54\xd8\x54\xc8\x54\xa8\x54\xab\x54\xc2\x54\xa4\x54\xa9\x54\xbe\x54\xe5\x54\xff\x54\xe6\x55\x0f\x55\x14\x54\xfd\x54\xee\x54\xed\x54\xe2\x55\x39\x55\x40\x55\x63\x55\x4c\x55\x2e\x55\x5c\x55\x45\x55\x56\x55\x57\x55\x38\x55\x33\x55\x5d\x55\x99\x55\x80\x55\x8a\x55\x9f\x55\x7b\x55\x7e\x55\x98\x55\x9e\x55\xae\x55\x7c\x55\x86\x55\x83\x55\xa9\x55\x87\x55\xa8\x55\xc5\x55\xdf\x55\xc4\x55\xdc\x55\xe4\x55\xd4\x55\xf9\x56\x14\x55\xf7\x56\x16\x55\xfe\x55\xfd\x56\x1b\x56\x4e\x56\x50\x56\x36\x56\x32\x56\x38\x56\x6b\x56\x64\x56\x86\x56\x2f\x56\x6c\x56\x6a\x71\xdf\x56\x94\x56\x8f\x56\x80\x00\x00", /* 5800 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x56\x8a\x56\xa0\x56\xa5\x56\xae\x56\xb6\x56\xb4\x56\xc8\x56\xc2\x56\xbc\x56\xc1\x56\xc3\x56\xc0\x56\xce\x56\xd3\x56\xd1\x56\xd7\x56\xee\x56\xf9\x56\xff\x57\x04\x57\x09\x57\x08\x57\x0d\x55\xc7\x57\x18\x57\x16\x57\x1c\x57\x26\x57\x38\x57\x4e\x57\x3b\x57\x59\x57\x40\x57\x4f\x57\x65\x57\x88\x57\x61\x57\x7f\x57\x89\x57\x93\x57\xa0\x57\xa4\x57\xb3\x57\xac\x57\xaa\x57\xc3\x57\xc6\x57\xc8\x57\xc0\x57\xd4\x57\xc7\x57\xd2\x57\xd3\x57\xd6\xfa\x0f\x58\x0a\x57\xe3\x58\x0b\x58\x19\x58\x21\x58\x4b\x58\x62\x6b\xc0", /* 5880 */ "\x58\x3d\x58\x52\xfa\x10\x58\x70\x58\x79\x58\x85\x58\x72\x58\x9f\x58\xab\x58\xb8\x58\x9e\x58\xae\x58\xb2\x58\xb9\x58\xba\x58\xc5\x58\xd3\x58\xd1\x58\xd7\x58\xd9\x58\xd8\x58\xde\x58\xdc\x58\xdf\x58\xe4\x58\xe5\x58\xef\x58\xf7\x58\xf9\x58\xfb\x58\xfc\x59\x02\x59\x0a\x59\x0b\x59\x10\x59\x1b\x68\xa6\x59\x25\x59\x2c\x59\x2d\x59\x32\x59\x38\x59\x3e\x59\x55\x59\x50\x59\x53\x59\x5a\x59\x58\x59\x5b\x59\x5d\x59\x63\x59\x62\x59\x60\x59\x67\x59\x6c\x59\x69\x59\x78\x59\x81\x59\x8d\x59\x9b\x59\x9d\x59\xa3\x59\xa4\x59\xb2\x59\xba\x59\xc6\x59\xe8\x59\xd9\x59\xda\x5a\x25\x5a\x1f\x5a\x11\x5a\x1c\x5a\x1a\x5a\x09\x5a\x40\x5a\x6c\x5a\x49\x5a\x35\x5a\x36\x5a\x62\x5a\x6a\x5a\x9a\x5a\xbc\x5a\xbe\x5a\xd0\x5a\xcb\x5a\xc2\x5a\xbd\x5a\xe3\x5a\xd7\x5a\xe6\x5a\xe9\x5a\xd6\x5a\xfa\x5a\xfb\x5b\x0c\x5b\x0b\x5b\x16\x5b\x32\x5b\x2a\x5b\x36\x5b\x3e\x5b\x43\x5b\x45\x5b\x40\x5b\x51\x5b\x55\x5b\x56\x65\x88\x5b\x5b\x5b\x65\x5b\x69\x5b\x70\x5b\x73\x5b\x75\x5b\x78\x5b\x7a\x5b\x80\x5b\x83\x5b\xa6\x5b\xb8\x5b\xc3\x5b\xc7\x5b\xc0\x5b\xc9\x75\x2f\x00\x00", /* 5900 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5b\xd0\x5b\xd8\x5b\xde\x5b\xec\x5b\xe4\x5b\xe2\x5b\xe5\x5b\xeb\x5b\xf0\x5b\xf3\x5b\xf6\x5c\x05\x5c\x07\x5c\x08\x5c\x0d\x5c\x13\x5c\x1e\x5c\x20\x5c\x22\x5c\x28\x5c\x38\x5c\x41\x5c\x46\x5c\x4e\x5c\x53\x5c\x50\x5b\x71\x5c\x6c\x5c\x6e\x5c\x76\x5c\x79\x5c\x8c\x5c\x94\x5c\xbe\x5c\xab\x5c\xbb\x5c\xb6\x5c\xb7\x5c\xa6\x5c\xba\x5c\xc5\x5c\xbc\x5c\xc7\x5c\xd9\x5c\xe9\x5c\xfd\x5c\xfa\x5c\xf5\x5c\xed\x5c\xea\x5d\x0b\x5d\x15\x5d\x1f\x5d\x1b\x5d\x11\x5d\x27\x5d\x22\x5d\x1a\x5d\x19\x5d\x18\x5d\x4c\x5d\x52\x5d\x53", /* 5980 */ "\xfa\x11\x5d\x5c\x5d\x4e\x5d\x4b\x5d\x42\x5d\x6c\x5d\x73\x5d\x6d\x5d\x76\x5d\x87\x5d\x84\x5d\x82\x5d\x8c\x5d\xa2\x5d\x9d\x5d\x90\x5d\xac\x5d\xae\x5d\xb7\x5d\xb8\x5d\xbc\x5d\xb9\x5d\xc9\x5d\xd0\x5d\xd3\x5d\xd2\x5d\xdb\x5d\xeb\x5d\xf5\x5e\x0b\x5e\x1a\x5e\x19\x5e\x11\x5e\x1b\x5e\x36\x5e\x44\x5e\x43\x5e\x40\x5e\x47\x5e\x4e\x5e\x57\x5e\x54\x5e\x62\x5e\x64\x5e\x75\x5e\x76\x5e\x7a\x5e\x7f\x5e\xa0\x5e\xc1\x5e\xc2\x5e\xc8\x5e\xd0\x5e\xcf\x5e\xdd\x5e\xda\x5e\xdb\x5e\xe2\x5e\xe1\x5e\xe8\x5e\xe9\x5e\xec\x5e\xf0\x5e\xf1\x5e\xf3\x5e\xf4\x5f\x03\x5f\x09\x5f\x0b\x5f\x11\x5f\x16\x5f\x21\x5f\x29\x5f\x2d\x5f\x2f\x5f\x34\x5f\x38\x5f\x41\x5f\x48\x5f\x4c\x5f\x4e\x5f\x51\x5f\x56\x5f\x57\x5f\x59\x5f\x5c\x5f\x5d\x5f\x61\x5f\x67\x5f\x73\x5f\x77\x5f\x83\x5f\x82\x5f\x7f\x5f\x8a\x5f\x88\x5f\x87\x5f\x91\x5f\x99\x5f\x9e\x5f\x98\x5f\xa0\x5f\xa8\x5f\xad\x5f\xb7\x5f\xbc\x5f\xd6\x5f\xfb\x5f\xe4\x5f\xf8\x5f\xf1\x5f\xf0\x5f\xdd\x5f\xde\x5f\xff\x60\x21\x60\x19\x60\x10\x60\x29\x60\x0e\x60\x31\x60\x1b\x60\x15\x60\x2b\x60\x26\x60\x0f\x60\x3a\x00\x00", /* 5a00 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x60\x5a\x60\x41\x60\x60\x60\x5d\x60\x6a\x60\x77\x60\x5f\x60\x4a\x60\x46\x60\x4d\x60\x63\x60\x43\x60\x64\x60\x6c\x60\x6b\x60\x59\x60\x85\x60\x81\x60\x83\x60\x9a\x60\x84\x60\x9b\x60\x8a\x60\x96\x60\x97\x60\x92\x60\xa7\x60\x8b\x60\xe1\x60\xb8\x60\xde\x60\xe0\x60\xd3\x60\xbd\x60\xc6\x60\xb5\x60\xd5\x60\xd8\x61\x20\x60\xf2\x61\x15\x61\x06\x60\xf6\x60\xf7\x61\x00\x60\xf4\x60\xfa\x61\x03\x61\x21\x60\xfb\x60\xf1\x61\x0d\x61\x0e\x61\x11\x61\x47\x61\x4d\x61\x37\x61\x28\x61\x27\x61\x3e\x61\x4a\x61\x30\x61\x3c", /* 5a80 */ "\x61\x2c\x61\x34\x61\x65\x61\x5d\x61\x3d\x61\x42\x61\x44\x61\x73\x61\x87\x61\x77\x61\x58\x61\x59\x61\x5a\x61\x6b\x61\x74\x61\x6f\x61\x71\x61\x5f\x61\x53\x61\x75\x61\x98\x61\x99\x61\x96\x61\xac\x61\x94\x61\x8a\x61\x91\x61\xab\x61\xae\x61\xcc\x61\xca\x61\xc9\x61\xc8\x61\xc3\x61\xc6\x61\xba\x61\xcb\x7f\x79\x61\xcd\x61\xe6\x61\xe3\x61\xf4\x61\xf7\x61\xf6\x61\xfd\x61\xfa\x61\xff\x61\xfc\x61\xfe\x62\x00\x62\x08\x62\x09\x62\x0d\x62\x13\x62\x14\x62\x1b\x62\x1e\x62\x21\x62\x2a\x62\x2e\x62\x30\x62\x32\x62\x33\x62\x41\x62\x4e\x62\x5e\x62\x63\x62\x5b\x62\x60\x62\x68\x62\x7c\x62\x82\x62\x89\x62\x92\x62\x7e\x62\x93\x62\x96\x62\x83\x62\x94\x62\xd7\x62\xd1\x62\xbb\x62\xcf\x62\xac\x62\xc6\x62\xc8\x62\xdc\x62\xd4\x62\xca\x62\xc2\x62\xa6\x62\xc7\x62\x9b\x62\xc9\x63\x0c\x62\xee\x62\xf1\x63\x27\x63\x02\x63\x08\x62\xef\x62\xf5\x62\xff\x63\x50\x63\x4d\x63\x3e\x63\x4f\x63\x96\x63\x8e\x63\x80\x63\xab\x63\x76\x63\xa3\x63\x8f\x63\x89\x63\x9f\x63\x6b\x63\x69\x63\xb5\x63\xbe\x63\xe9\x63\xc0\x63\xc6\x63\xf5\x63\xe3\x63\xc9\x63\xd2\x00\x00", /* 5b00 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x63\xf6\x63\xc4\x64\x34\x64\x06\x64\x13\x64\x26\x64\x36\x64\x1c\x64\x17\x64\x28\x64\x0f\x64\x16\x64\x4e\x64\x67\x64\x6f\x64\x60\x64\x76\x64\xb9\x64\x9d\x64\xce\x64\x95\x64\xbb\x64\x93\x64\xa5\x64\xa9\x64\x88\x64\xbc\x64\xda\x64\xd2\x64\xc5\x64\xc7\x64\xd4\x64\xd8\x64\xc2\x64\xf1\x64\xe7\x64\xe0\x64\xe1\x64\xe3\x64\xef\x64\xf4\x64\xf6\x64\xf2\x64\xfa\x65\x00\x64\xfd\x65\x18\x65\x1c\x65\x1d\x65\x22\x65\x24\x65\x23\x65\x2b\x65\x2c\x65\x34\x65\x35\x65\x37\x65\x36\x65\x38\x75\x4b\x65\x48\x65\x4e\x65\x56", /* 5b80 */ "\x65\x4d\x65\x58\x65\x55\x65\x5d\x65\x72\x65\x78\x65\x82\x65\x83\x8b\x8a\x65\x9b\x65\x9f\x65\xab\x65\xb7\x65\xc3\x65\xc6\x65\xc1\x65\xc4\x65\xcc\x65\xd2\x65\xd9\x65\xe1\x65\xe0\x65\xf1\x66\x00\x66\x15\x66\x02\x67\x72\x66\x03\x65\xfb\x66\x09\x66\x3f\x66\x35\x66\x2e\x66\x1e\x66\x34\x66\x1c\x66\x24\x66\x44\x66\x49\x66\x65\x66\x57\x66\x5e\x66\x64\x66\x59\x66\x62\x66\x5d\xfa\x12\x66\x73\x66\x70\x66\x83\x66\x88\x66\x84\x66\x99\x66\x98\x66\xa0\x66\x9d\x66\xb2\x66\xc4\x66\xc1\x66\xbf\x66\xc9\x66\xbe\x66\xbc\x66\xb8\x66\xd6\x66\xda\x66\xe6\x66\xe9\x66\xf0\x66\xf5\x66\xf7\x66\xfa\x67\x0e\xf9\x29\x67\x16\x67\x1e\x7e\x22\x67\x26\x67\x27\x97\x38\x67\x2e\x67\x3f\x67\x36\x67\x37\x67\x38\x67\x46\x67\x5e\x67\x59\x67\x66\x67\x64\x67\x89\x67\x85\x67\x70\x67\xa9\x67\x6a\x67\x8b\x67\x73\x67\xa6\x67\xa1\x67\xbb\x67\xb7\x67\xef\x67\xb4\x67\xec\x67\xe9\x67\xb8\x67\xe7\x67\xe4\x68\x52\x67\xdd\x67\xe2\x67\xee\x67\xc0\x67\xce\x67\xb9\x68\x01\x67\xc6\x68\x1e\x68\x46\x68\x4d\x68\x40\x68\x44\x68\x32\x68\x4e\x68\x63\x68\x59\x68\x8e\x00\x00", /* 5c00 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x68\x77\x68\x7f\x68\x9f\x68\x7e\x68\x8f\x68\xad\x68\x94\x68\x83\x68\xbc\x68\xb9\x68\x74\x68\xb5\x68\xba\x69\x0f\x69\x01\x68\xca\x69\x08\x68\xd8\x69\x26\x68\xe1\x69\x0c\x68\xcd\x68\xd4\x68\xe7\x68\xd5\x69\x12\x68\xef\x69\x04\x68\xe3\x68\xe0\x68\xcf\x68\xc6\x69\x22\x69\x2a\x69\x21\x69\x23\x69\x28\xfa\x13\x69\x79\x69\x77\x69\x36\x69\x78\x69\x54\x69\x6a\x69\x74\x69\x68\x69\x3d\x69\x59\x69\x30\x69\x5e\x69\x5d\x69\x7e\x69\x81\x69\xb2\x69\xbf\xfa\x14\x69\x98\x69\xc1\x69\xd3\x69\xbe\x69\xce\x5b\xe8\x69\xca", /* 5c80 */ "\x69\xb1\x69\xdd\x69\xbb\x69\xc3\x69\xa0\x69\x9c\x69\x95\x69\xde\x6a\x2e\x69\xe8\x6a\x02\x6a\x1b\x69\xff\x69\xf9\x69\xf2\x69\xe7\x69\xe2\x6a\x1e\x69\xed\x6a\x14\x69\xeb\x6a\x0a\x6a\x22\x6a\x12\x6a\x23\x6a\x13\x6a\x30\x6a\x6b\x6a\x44\x6a\x0c\x6a\xa0\x6a\x36\x6a\x78\x6a\x47\x6a\x62\x6a\x59\x6a\x66\x6a\x48\x6a\x46\x6a\x38\x6a\x72\x6a\x73\x6a\x90\x6a\x8d\x6a\x84\x6a\xa2\x6a\xa3\x6a\x7e\x6a\x97\x6a\xac\x6a\xaa\x6a\xbb\x6a\xc2\x6a\xb8\x6a\xb3\x6a\xc1\x6a\xde\x6a\xe2\x6a\xd1\x6a\xda\x6a\xe4\x86\x16\x86\x17\x6a\xea\x6b\x05\x6b\x0a\x6a\xfa\x6b\x12\x6b\x16\x6b\x1f\x6b\x38\x6b\x37\x6b\x39\x76\xdc\x98\xee\x6b\x47\x6b\x43\x6b\x49\x6b\x50\x6b\x59\x6b\x54\x6b\x5b\x6b\x5f\x6b\x61\x6b\x78\x6b\x79\x6b\x7f\x6b\x80\x6b\x84\x6b\x83\x6b\x8d\x6b\x98\x6b\x95\x6b\x9e\x6b\xa4\x6b\xaa\x6b\xab\x6b\xaf\x6b\xb1\x6b\xb2\x6b\xb3\x6b\xb7\x6b\xbc\x6b\xc6\x6b\xcb\x6b\xd3\x6b\xd6\x6b\xdf\x6b\xec\x6b\xeb\x6b\xf3\x6b\xef\x6c\x08\x6c\x13\x6c\x14\x6c\x1b\x6c\x24\x6c\x23\x6c\x3f\x6c\x5e\x6c\x55\x6c\x5c\x6c\x62\x6c\x82\x6c\x8d\x6c\x86\x6c\x6f\x00\x00", /* 5d00 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6c\x9a\x6c\x81\x6c\x9b\x6c\x7e\x6c\x68\x6c\x73\x6c\x92\x6c\x90\x6c\xc4\x6c\xf1\x6c\xbd\x6c\xc5\x6c\xae\x6c\xda\x6c\xdd\x6c\xb1\x6c\xbe\x6c\xba\x6c\xdb\x6c\xef\x6c\xd9\x6c\xea\x6d\x1f\x6d\x04\x6d\x36\x6d\x2b\x6d\x3d\x6d\x33\x6d\x12\x6d\x0c\x6d\x63\x6d\x87\x6d\x93\x6d\x6f\x6d\x64\x6d\x5a\x6d\x79\x6d\x59\x6d\x8e\x6d\x95\x6d\x9b\x6d\x85\x6d\x96\x6d\xf9\x6e\x0a\x6e\x2e\x6d\xb5\x6d\xe6\x6d\xc7\x6d\xac\x6d\xb8\x6d\xcf\x6d\xc6\x6d\xec\x6d\xde\x6d\xcc\x6d\xe8\x6d\xf8\x6d\xd2\x6d\xc5\x6d\xfa\x6d\xd9\x6d\xf2", /* 5d80 */ "\x6d\xfc\x6d\xe4\x6d\xd5\x6d\xea\x6d\xee\x6e\x2d\x6e\x6e\x6e\x19\x6e\x72\x6e\x5f\x6e\x39\x6e\x3e\x6e\x23\x6e\x6b\x6e\x5c\x6e\x2b\x6e\x76\x6e\x4d\x6e\x1f\x6e\x27\x6e\x43\x6e\x3c\x6e\x3a\x6e\x4e\x6e\x24\x6e\x1d\x6e\x38\x6e\x82\x6e\xaa\x6e\x98\x6e\xb7\x6e\xbd\x6e\xaf\x6e\xc4\x6e\xb2\x6e\xd4\x6e\xd5\x6e\x8f\x6e\xbf\x6e\xc2\x6e\x9f\x6f\x41\x6f\x45\x6e\xec\x6e\xf8\x6e\xfe\x6f\x3f\x6e\xf2\x6f\x31\x6e\xef\x6f\x32\x6e\xcc\x6e\xff\x6f\x3e\x6f\x13\x6e\xf7\x6f\x86\x6f\x7a\x6f\x78\x6f\x80\x6f\x6f\x6f\x5b\x6f\x6d\x6f\x74\x6f\x82\x6f\x88\x6f\x7c\x6f\x58\x6f\xc6\x6f\x8e\x6f\x91\x6f\x66\x6f\xb3\x6f\xa3\x6f\xb5\x6f\xa1\x6f\xb9\x6f\xdb\x6f\xaa\x6f\xc2\x6f\xdf\x6f\xd5\x6f\xec\x6f\xd8\x6f\xd4\x6f\xf5\x6f\xee\x70\x05\x70\x07\x70\x09\x70\x0b\x6f\xfa\x70\x11\x70\x01\x70\x0f\x70\x1b\x70\x1a\x70\x1f\x6f\xf3\x70\x28\x70\x18\x70\x30\x70\x3e\x70\x32\x70\x51\x70\x63\x70\x85\x70\x99\x70\xaf\x70\xab\x70\xac\x70\xb8\x70\xae\x70\xdf\x70\xcb\x70\xd9\x71\x09\x71\x0f\x71\x04\x70\xf1\x70\xfd\x71\x1c\x71\x19\x71\x5c\x71\x46\x71\x47\x71\x66\x00\x00", /* 5e00 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x71\x62\x71\x4c\x71\x56\x71\x6c\x71\x88\x71\x8f\x71\x84\x71\x95\xfa\x15\x71\xac\x71\xc1\x71\xb9\x71\xbe\x71\xd2\x71\xe7\x71\xc9\x71\xd4\x71\xd7\x71\xce\x71\xf5\x71\xe0\x71\xec\x71\xfb\x71\xfc\x71\xf9\x71\xfe\x71\xff\x72\x0d\x72\x10\x72\x28\x72\x2d\x72\x2c\x72\x30\x72\x32\x72\x3b\x72\x3c\x72\x3f\x72\x40\x72\x46\x72\x4b\x72\x58\x72\x74\x72\x7e\x72\x81\x72\x87\x72\x82\x72\x92\x72\x96\x72\xa2\x72\xa7\x72\xb1\x72\xb2\x72\xbe\x72\xc3\x72\xc6\x72\xc4\x72\xb9\x72\xce\x72\xd2\x72\xe2\x72\xe0\x72\xe1\x72\xf9", /* 5e80 */ "\x72\xf7\x73\x17\x73\x0a\x73\x1c\x73\x16\x73\x1d\x73\x24\x73\x34\x73\x29\x73\x2f\xfa\x16\x73\x25\x73\x3e\x73\x4f\x73\x4e\x73\x57\x9e\xd8\x73\x6a\x73\x68\x73\x70\x73\x77\x73\x78\x73\x75\x73\x7b\x73\xc8\x73\xbd\x73\xb3\x73\xce\x73\xbb\x73\xc0\x73\xc9\x73\xd6\x73\xe5\x73\xe3\x73\xd2\x73\xee\x73\xf1\x73\xde\x73\xf8\x74\x07\x73\xf5\x74\x05\x74\x26\x74\x2a\x74\x25\x74\x29\x74\x2e\x74\x32\x74\x3a\x74\x55\x74\x3f\x74\x5f\x74\x59\x74\x41\x74\x5c\x74\x69\x74\x70\x74\x63\x74\x6a\x74\x64\x74\x62\x74\x89\x74\x6f\x74\x7e\x74\x9f\x74\x9e\x74\xa2\x74\xa7\x74\xca\x74\xcf\x74\xd4\x74\xe0\x74\xe3\x74\xe7\x74\xe9\x74\xee\x74\xf0\x74\xf2\x74\xf1\x74\xf7\x74\xf8\x75\x01\x75\x04\x75\x03\x75\x05\x75\x0d\x75\x0c\x75\x0e\x75\x13\x75\x1e\x75\x26\x75\x2c\x75\x3c\x75\x44\x75\x4d\x75\x4a\x75\x49\x75\x46\x75\x5b\x75\x5a\x75\x64\x75\x67\x75\x6b\x75\x6f\x75\x74\x75\x6d\x75\x78\x75\x76\x75\x82\x75\x86\x75\x87\x75\x8a\x75\x89\x75\x94\x75\x9a\x75\x9d\x75\xa5\x75\xa3\x75\xc2\x75\xb3\x75\xc3\x75\xb5\x75\xbd\x75\xb8\x75\xbc\x75\xb1\x75\xcd\x00\x00", /* 5f00 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x75\xca\x75\xd2\x75\xd9\x75\xe3\x75\xde\x75\xfe\x75\xff\x75\xfc\x76\x01\x75\xf0\x75\xfa\x75\xf2\x75\xf3\x76\x0b\x76\x09\x76\x1f\x76\x27\x76\x20\x76\x21\x76\x22\x76\x24\x76\x34\x76\x30\x76\x3b\x76\x47\x76\x48\x76\x58\x76\x46\x76\x5c\x76\x61\x76\x62\x76\x68\x76\x69\x76\x67\x76\x6a\x76\x6c\x76\x70\x76\x72\x76\x76\x76\x7c\x76\x82\x76\x80\x76\x83\x76\x88\x76\x8b\x76\x99\x76\x9a\x76\x9c\x76\x9e\x76\x9b\x76\xa6\x76\xb0\x76\xb4\x76\xb8\x76\xb9\x76\xba\x76\xc2\xfa\x17\x76\xcd\x76\xd6\x76\xd2\x76\xde\x76\xe1", /* 5f80 */ "\x76\xe5\x76\xea\x86\x2f\x76\xfb\x77\x08\x77\x07\x77\x04\x77\x24\x77\x29\x77\x25\x77\x26\x77\x1b\x77\x37\x77\x38\x77\x46\x77\x47\x77\x5a\x77\x68\x77\x6b\x77\x5b\x77\x65\x77\x7f\x77\x7e\x77\x79\x77\x8e\x77\x8b\x77\x91\x77\xa0\x77\x9e\x77\xb0\x77\xb6\x77\xb9\x77\xbf\x77\xbc\x77\xbd\x77\xbb\x77\xc7\x77\xcd\x77\xda\x77\xdc\x77\xe3\x77\xee\x52\xaf\x77\xfc\x78\x0c\x78\x12\x78\x21\x78\x3f\x78\x20\x78\x45\x78\x4e\x78\x64\x78\x74\x78\x8e\x78\x7a\x78\x86\x78\x9a\x78\x7c\x78\x8c\x78\xa3\x78\xb5\x78\xaa\x78\xaf\x78\xd1\x78\xc6\x78\xcb\x78\xd4\x78\xbe\x78\xbc\x78\xc5\x78\xca\x78\xec\x78\xe7\x78\xda\x78\xfd\x78\xf4\x79\x07\x79\x11\x79\x19\x79\x2c\x79\x2b\x79\x30\xfa\x18\x79\x40\x79\x60\xfa\x19\x79\x5f\x79\x5a\x79\x55\xfa\x1a\x79\x7f\x79\x8a\x79\x94\xfa\x1b\x79\x9d\x79\x9b\x79\xaa\x79\xb3\x79\xba\x79\xc9\x79\xd5\x79\xe7\x79\xec\x79\xe3\x7a\x08\x7a\x0d\x7a\x18\x7a\x19\x7a\x1f\x7a\x31\x7a\x3e\x7a\x37\x7a\x3b\x7a\x43\x7a\x57\x7a\x49\x7a\x62\x7a\x61\x7a\x69\x9f\x9d\x7a\x70\x7a\x79\x7a\x7d\x7a\x88\x7a\x95\x7a\x98\x7a\x96\x00\x00", /* 6000 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7a\x97\x7a\xa9\x7a\xb0\x7a\xb6\x90\x83\x7a\xc3\x7a\xbf\x7a\xc5\x7a\xc4\x7a\xc7\x7a\xca\x7a\xcd\x7a\xcf\x7a\xd2\x7a\xd1\x7a\xd5\x7a\xd3\x7a\xd9\x7a\xda\x7a\xdd\x7a\xe1\x7a\xe2\x7a\xe6\x7a\xe7\xfa\x1c\x7a\xeb\x7a\xed\x7a\xf0\x7a\xf8\x7b\x02\x7b\x0f\x7b\x0b\x7b\x0a\x7b\x06\x7b\x33\x7b\x36\x7b\x19\x7b\x1e\x7b\x35\x7b\x28\x7b\x50\x7b\x4d\x7b\x4c\x7b\x45\x7b\x5d\x7b\x75\x7b\x7a\x7b\x74\x7b\x70\x7b\x71\x7b\x6e\x7b\x9d\x7b\x98\x7b\x9f\x7b\x8d\x7b\x9c\x7b\x9a\x7b\x92\x7b\x8f\x7b\x99\x7b\xcf\x7b\xcb\x7b\xcc", /* 6080 */ "\x7b\xb4\x7b\xc6\x7b\x9e\x7b\xdd\x7b\xe9\x7b\xe6\x7b\xf7\x7b\xe5\x7c\x14\x7c\x00\x7c\x13\x7c\x07\x7b\xf3\x7c\x0d\x7b\xf6\x7c\x23\x7c\x27\x7c\x2a\x7c\x1f\x7c\x37\x7c\x2b\x7c\x3d\x7c\x40\x7c\x4c\x7c\x43\x7c\x56\x7c\x50\x7c\x58\x7c\x5f\x7c\x65\x7c\x6c\x7c\x75\x7c\x83\x7c\x90\x7c\xa4\x7c\xa2\x7c\xab\x7c\xa1\x7c\xad\x7c\xa8\x7c\xb3\x7c\xb2\x7c\xb1\x7c\xae\x7c\xb9\xfa\x1d\x7c\xbd\x7c\xc5\x7c\xc2\x7c\xd2\x7c\xe2\x7c\xd8\x7c\xdc\x7c\xef\x7c\xf2\x7c\xf4\x7c\xf6\x7d\x06\x7d\x02\x7d\x1c\x7d\x15\x7d\x0a\x7d\x45\x7d\x4b\x7d\x2e\x7d\x32\x7d\x3f\x7d\x35\x7d\x48\x7d\x46\x7d\x5c\x7d\x73\x7d\x56\x7d\x4e\x7d\x68\x7d\x6e\x7d\x4f\x7d\x63\x7d\x93\x7d\x89\x7d\x5b\x7d\xae\x7d\xa3\x7d\xb5\x7d\xb7\x7d\xc7\x7d\xbd\x7d\xab\x7d\xa2\x7d\xaf\x7d\xa0\x7d\xb8\x7d\x9f\x7d\xb0\x7d\xd5\x7d\xd8\x7d\xdd\x7d\xd6\x7d\xe4\x7d\xde\x7d\xfb\x7e\x0b\x7d\xf2\x7d\xe1\x7d\xdc\x7e\x05\x7e\x0a\x7e\x21\x7e\x12\x7e\x1f\x7e\x09\x7e\x3a\x7e\x46\x7e\x66\x7e\x31\x7e\x3d\x7e\x35\x7e\x3b\x7e\x39\x7e\x43\x7e\x37\x7e\x32\x7e\x5d\x7e\x56\x7e\x5e\x7e\x52\x7e\x59\x00\x00", /* 6100 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7e\x5a\x7e\x67\x7e\x79\x7e\x6a\x7e\x69\x7e\x7c\x7e\x7b\x7e\x7d\x8f\xae\x7e\x7f\x7e\x83\x7e\x89\x7e\x8e\x7e\x8c\x7e\x92\x7e\x93\x7e\x94\x7e\x96\x7e\x9b\x7f\x38\x7f\x3a\x7f\x45\x7f\x47\x7f\x4c\x7f\x4e\x7f\x51\x7f\x55\x7f\x54\x7f\x58\x7f\x5f\x7f\x60\x7f\x68\x7f\x67\x7f\x69\x7f\x78\x7f\x82\x7f\x86\x7f\x83\x7f\x87\x7f\x88\x7f\x8c\x7f\x94\x7f\x9e\x7f\x9d\x7f\x9a\x7f\xa1\x7f\xa3\x7f\xaf\x7f\xae\x7f\xb2\x7f\xb9\x7f\xb6\x7f\xb8\x8b\x71\xfa\x1e\x7f\xc5\x7f\xc6\x7f\xca\x7f\xd5\x7f\xe1\x7f\xe6\x7f\xe9\x7f\xf3", /* 6180 */ "\x7f\xf9\x80\x04\x80\x0b\x80\x12\x80\x19\x80\x1c\x80\x21\x80\x28\x80\x3f\x80\x3b\x80\x4a\x80\x46\x80\x52\x80\x58\x80\x5f\x80\x62\x80\x68\x80\x73\x80\x72\x80\x70\x80\x76\x80\x79\x80\x7d\x80\x7f\x80\x84\x80\x85\x80\x93\x80\x9a\x80\xad\x51\x90\x80\xac\x80\xdb\x80\xe5\x80\xd9\x80\xdd\x80\xc4\x80\xda\x81\x09\x80\xef\x80\xf1\x81\x1b\x81\x23\x81\x2f\x81\x4b\x81\x46\x81\x3e\x81\x53\x81\x51\x81\x41\x81\x71\x81\x6e\x81\x65\x81\x5f\x81\x66\x81\x74\x81\x83\x81\x88\x81\x8a\x81\x80\x81\x82\x81\xa0\x81\x95\x81\xa3\x81\x93\x81\xb5\x81\xa4\x81\xa9\x81\xb8\x81\xb0\x81\xc8\x81\xbe\x81\xbd\x81\xc0\x81\xc2\x81\xba\x81\xc9\x81\xcd\x81\xd1\x81\xd8\x81\xd9\x81\xda\x81\xdf\x81\xe0\x81\xfa\x81\xfb\x81\xfe\x82\x01\x82\x02\x82\x05\x82\x0d\x82\x10\x82\x12\x82\x16\x82\x29\x82\x2b\x82\x2e\x82\x38\x82\x33\x82\x40\x82\x59\x82\x5a\x82\x5d\x82\x5f\x82\x64\x82\x62\x82\x68\x82\x6a\x82\x6b\x82\x71\x82\x77\x82\x7e\x82\x8d\x82\x92\x82\xab\x82\x9f\x82\xbb\x82\xac\x82\xe1\x82\xe3\x82\xdf\x83\x01\x82\xd2\x82\xf4\x82\xf3\x83\x03\x82\xfb\x82\xf9\x00\x00", /* 6200 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x82\xde\x83\x06\x82\xdc\x82\xfa\x83\x09\x82\xd9\x83\x35\x83\x62\x83\x34\x83\x16\x83\x31\x83\x40\x83\x39\x83\x50\x83\x45\x83\x2f\x83\x2b\x83\x18\x83\x9a\x83\xaa\x83\x9f\x83\xa2\x83\x96\x83\x23\x83\x8e\x83\x75\x83\x7f\x83\x8a\x83\x7c\x83\xb5\x83\x73\x83\x93\x83\xa0\x83\x85\x83\x89\x83\xa8\x83\xf4\x84\x13\x83\xc7\x83\xce\x83\xf7\x83\xfd\x84\x03\x83\xd8\x84\x0b\x83\xc1\x84\x07\x83\xe0\x83\xf2\x84\x0d\x84\x20\x83\xf6\x83\xbd\x83\xfb\x84\x2a\x84\x62\x84\x3c\x84\x84\x84\x77\x84\x6b\x84\x79\x84\x48\x84\x6e", /* 6280 */ "\x84\x82\x84\x69\x84\x46\x84\x6f\x84\x38\x84\x35\x84\xca\x84\xb9\x84\xbf\x84\x9f\x84\xb4\x84\xcd\x84\xbb\x84\xda\x84\xd0\x84\xc1\x84\xad\x84\xc6\x84\xd6\x84\xa1\x84\xd9\x84\xff\x84\xf4\x85\x17\x85\x18\x85\x2c\x85\x1f\x85\x15\x85\x14\x85\x06\x85\x53\x85\x5a\x85\x40\x85\x59\x85\x63\x85\x58\x85\x48\x85\x41\x85\x4a\x85\x4b\x85\x6b\x85\x55\x85\x80\x85\xa4\x85\x88\x85\x91\x85\x8a\x85\xa8\x85\x6d\x85\x94\x85\x9b\x85\xae\x85\x87\x85\x9c\x85\x77\x85\x7e\x85\x90\xfa\x1f\x82\x0a\x85\xb0\x85\xc9\x85\xba\x85\xcf\x85\xb9\x85\xd0\x85\xd5\x85\xdd\x85\xe5\x85\xdc\x85\xf9\x86\x0a\x86\x13\x86\x0b\x85\xfe\x86\x22\x86\x1a\x86\x30\x86\x3f\xfa\x20\x86\x4d\x4e\x55\x86\x55\x86\x5f\x86\x67\x86\x71\x86\x93\x86\xa3\x86\xa9\x86\x8b\x86\xaa\x86\x8c\x86\xb6\x86\xaf\x86\xc4\x86\xc6\x86\xb0\x86\xc9\x86\xce\xfa\x21\x86\xab\x86\xd4\x86\xde\x86\xe9\x86\xec\x86\xdf\x86\xdb\x87\x12\x87\x06\x87\x08\x87\x00\x87\x03\x86\xfb\x87\x11\x87\x09\x87\x0d\x86\xf9\x87\x0a\x87\x34\x87\x3f\x87\x3b\x87\x25\x87\x29\x87\x1a\x87\x5f\x87\x78\x87\x4c\x87\x4e\x00\x00", /* 6300 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x87\x74\x87\x57\x87\x68\x87\x82\x87\x6a\x87\x60\x87\x6e\x87\x59\x87\x53\x87\x63\x87\x7f\x87\xa2\x87\xc6\x87\x9f\x87\xaf\x87\xcb\x87\xbd\x87\xc0\x87\xd0\x96\xd6\x87\xab\x87\xc4\x87\xb3\x87\xd2\x87\xbb\x87\xef\x87\xf2\x87\xe0\x88\x0e\x88\x07\x88\x0f\x88\x16\x88\x0d\x87\xfe\x87\xf6\x87\xf7\x88\x11\x88\x15\x88\x22\x88\x21\x88\x27\x88\x31\x88\x36\x88\x39\x88\x3b\x88\x42\x88\x44\x88\x4d\x88\x52\x88\x59\x88\x5e\x88\x62\x88\x6b\x88\x81\x88\x7e\x88\x75\x88\x7d\x88\x72\x88\x82\x88\x9e\x88\x97\x88\x92\x88\xae", /* 6380 */ "\x88\x99\x88\xa2\x88\x8d\x88\xa4\x88\xbf\x88\xb5\x88\xb1\x88\xc3\x88\xc4\x88\xd4\x88\xd8\x88\xd9\x88\xdd\x88\xf9\x89\x02\x88\xfc\x88\xf5\x88\xe8\x88\xf2\x89\x04\x89\x0c\x89\x2a\x89\x1d\x89\x0a\x89\x13\x89\x1e\x89\x25\x89\x2b\x89\x41\x89\x3b\x89\x36\x89\x43\x89\x38\x89\x4d\x89\x4c\x89\x60\x89\x5e\x89\x66\x89\x6a\x89\x64\x89\x6d\x89\x6f\x89\x74\x89\x77\x89\x7e\x89\x83\x89\x88\x89\x8a\x89\x93\x89\x98\x89\xa1\x89\xa9\x89\xa6\x89\xac\x89\xaf\x89\xb2\x89\xba\x89\xbf\x89\xbd\x89\xc0\x89\xda\x89\xdd\x89\xe7\x89\xf4\x89\xf8\x8a\x03\x8a\x16\x8a\x10\x8a\x0c\x8a\x12\x8a\x1b\x8a\x1d\x8a\x25\x8a\x36\x8a\x41\x8a\x37\x8a\x5b\x8a\x52\x8a\x46\x8a\x48\x8a\x7c\x8a\x6d\x8a\x6c\x8a\x62\x8a\x79\x8a\x85\x8a\x82\x8a\x84\x8a\xa8\x8a\xa1\x8a\x91\x8a\xa5\x8a\xa6\x8a\x9a\x8a\xa3\x8a\xa7\x8a\xcc\x8a\xbe\x8a\xcd\x8a\xc2\x8a\xda\x8a\xf3\x8a\xe7\x8a\xe4\x8a\xf1\x8b\x14\x8a\xe0\x8a\xe2\x8a\xe1\x8a\xdf\xfa\x22\x8a\xf6\x8a\xf7\x8a\xde\x8a\xdb\x8b\x0c\x8b\x07\x8b\x1a\x8b\x16\x8b\x10\x8b\x17\x8b\x20\x8b\x33\x8b\x41\x97\xab\x8b\x26\x8b\x2b\x00\x00", /* 6400 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x8b\x3e\x8b\x4c\x8b\x4f\x8b\x4e\x8b\x53\x8b\x49\x8b\x56\x8b\x5b\x8b\x5a\x8b\x74\x8b\x6b\x8b\x5f\x8b\x6c\x8b\x6f\x8b\x7d\x8b\x7f\x8b\x80\x8b\x8c\x8b\x8e\x8b\x99\x8b\x92\x8b\x93\x8b\x96\x8b\x9a\x8c\x3a\x8c\x41\x8c\x3f\x8c\x48\x8c\x4c\x8c\x4e\x8c\x50\x8c\x55\x8c\x62\x8c\x6c\x8c\x78\x8c\x7a\x8c\x7c\x8c\x82\x8c\x89\x8c\x85\x8c\x8a\x8c\x8d\x8c\x8e\x8c\x98\x8c\x94\x62\x1d\x8c\xad\x8c\xaa\x8c\xae\x8c\xbd\x8c\xb2\x8c\xb3\x8c\xc1\x8c\xb6\x8c\xc8\x8c\xce\x8c\xcd\x8c\xe3\x8c\xda\x8c\xf0\x8c\xf4\x8c\xfd\x8c\xfa", /* 6480 */ "\x8c\xfb\x8d\x07\x8d\x0a\x8d\x0f\x8d\x0d\x8d\x12\x8d\x10\x8d\x13\x8d\x14\x8d\x16\x8d\x67\x8d\x6d\x8d\x71\x8d\x76\xfa\x23\x8d\x81\x8d\xc2\x8d\xbe\x8d\xba\x8d\xcf\x8d\xda\x8d\xd6\x8d\xcc\x8d\xdb\x8d\xcb\x8d\xea\x8d\xeb\x8d\xdf\x8d\xe3\x8d\xfc\x8e\x08\x8d\xff\x8e\x09\x8e\x1d\x8e\x1e\x8e\x10\x8e\x1f\x8e\x42\x8e\x35\x8e\x30\x8e\x34\x8e\x4a\x8e\x47\x8e\x49\x8e\x4c\x8e\x50\x8e\x48\x8e\x59\x8e\x64\x8e\x60\x8e\x55\x8e\x63\x8e\x76\x8e\x72\x8e\x87\x8e\x7c\x8e\x81\x8e\x85\x8e\x84\x8e\x8b\x8e\x8a\x8e\x93\x8e\x91\x8e\x94\x8e\x99\x8e\xa1\x8e\xaa\x8e\xb1\x8e\xbe\x8e\xc6\x8e\xc5\x8e\xc8\x8e\xcb\x8e\xcf\x8e\xdb\x8e\xe3\x8e\xfc\x8e\xfb\x8e\xeb\x8e\xfe\x8f\x0a\x8f\x0c\x8f\x05\x8f\x15\x8f\x12\x8f\x13\x8f\x1c\x8f\x19\x8f\x1f\x8f\x26\x8f\x33\x8f\x3b\x8f\x39\x8f\x45\x8f\x42\x8f\x3e\x8f\x49\x8f\x46\x8f\x4c\x8f\x4e\x8f\x57\x8f\x5c\x8f\x62\x8f\x63\x8f\x64\x8f\x9c\x8f\x9f\x8f\xa3\x8f\xa8\x8f\xa7\x8f\xad\x8f\xaf\x8f\xb7\xfa\x24\x8f\xda\x8f\xe5\x8f\xe2\x8f\xef\x8f\xe9\x8f\xf4\x90\x05\x8f\xf9\x8f\xf8\x90\x11\x90\x15\x90\x0e\x90\x21\x00\x00", /* 6500 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x90\x0d\x90\x1e\x90\x16\x90\x0b\x90\x27\x90\x36\x90\x39\x90\x4f\xfa\x25\x90\x50\x90\x51\x90\x52\x90\x49\x90\x3e\x90\x56\x90\x58\x90\x5e\x90\x68\x90\x67\x90\x6f\x90\x76\x96\xa8\x90\x72\x90\x82\x90\x7d\x90\x89\x90\x80\x90\x8f\x62\x48\x90\xaf\x90\xb1\x90\xb5\x90\xe2\x90\xe4\x90\xdb\x90\xde\x91\x02\xfa\x26\x91\x15\x91\x12\x91\x19\x91\x32\x91\x27\x91\x30\x91\x4a\x91\x56\x91\x58\x91\x63\x91\x65\x91\x69\x91\x73\x91\x72\x91\x8b\x91\x89\x91\x82\x91\xa2\x91\xab\x91\xaf\x91\xaa\x91\xb5\x91\xb4\x91\xba\x91\xc0", /* 6580 */ "\x91\xc1\x91\xcb\x91\xd0\x91\xda\x91\xdb\x91\xd7\x91\xde\x91\xd6\x91\xdf\x91\xe1\x91\xed\x91\xf5\x91\xee\x91\xe4\x91\xf6\x91\xe5\x92\x06\x92\x1e\x91\xff\x92\x10\x92\x14\x92\x0a\x92\x2c\x92\x15\x92\x29\x92\x57\x92\x45\x92\x3a\x92\x49\x92\x64\x92\x40\x92\x3c\x92\x48\x92\x4e\x92\x50\x92\x59\x92\x3f\x92\x51\x92\x39\x92\x4b\x92\x67\x92\x5a\x92\x9c\x92\xa7\x92\x77\x92\x78\x92\x96\x92\x93\x92\x9b\x92\x95\x92\xe9\x92\xcf\x92\xe7\x92\xd7\x92\xd9\x92\xd0\xfa\x27\x92\xd5\x92\xb9\x92\xb7\x92\xe0\x92\xd3\x93\x3a\x93\x35\x93\x0f\x93\x25\x92\xfa\x93\x21\x93\x44\x92\xfb\xfa\x28\x93\x19\x93\x1e\x92\xff\x93\x22\x93\x1a\x93\x1d\x93\x23\x93\x02\x93\x3b\x93\x70\x93\x60\x93\x7c\x93\x6e\x93\x56\x93\x57\x93\xb9\x93\xb0\x93\xa4\x93\xad\x93\x94\x93\xc8\x93\xd6\x93\xc6\x93\xd7\x93\xe8\x93\xe5\x93\xd8\x93\xc3\x93\xdd\x93\xde\x93\xd0\x93\xe4\x94\x1a\x93\xf8\x94\x14\x94\x13\x94\x21\x94\x03\x94\x07\x94\x36\x94\x2b\x94\x31\x94\x3a\x94\x41\x94\x52\x94\x45\x94\x44\x94\x48\x94\x5b\x94\x5a\x94\x60\x94\x62\x94\x5e\x94\x6a\x94\x75\x94\x70\x00\x00", /* 6600 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x94\x77\x94\x7f\x94\x7d\x94\x7c\x94\x7e\x94\x81\x95\x82\x95\x87\x95\x8a\x95\x92\x95\x94\x95\x96\x95\x98\x95\x99\x95\xa0\x95\xa8\x95\xa7\x95\xad\x95\xbc\x95\xbb\x95\xb9\x95\xbe\x95\xca\x6f\xf6\x95\xc3\x95\xcd\x95\xcc\x95\xd5\x95\xd4\x95\xd6\x95\xdc\x95\xe1\x95\xe5\x95\xe2\x96\x21\x96\x28\x96\x2e\x96\x2f\x96\x42\x96\x4f\x96\x4c\x96\x4b\x96\x5c\x96\x5d\x96\x5f\x96\x66\x96\x77\x96\x72\x96\x6c\x96\x8d\x96\x8b\xf9\xdc\x96\x98\x96\x95\x96\x97\xfa\x29\x96\x9d\x96\xa7\x96\xaa\x96\xb1\x96\xb2\x96\xb0\x96\xaf", /* 6680 */ "\x96\xb4\x96\xb6\x96\xb8\x96\xb9\x96\xce\x96\xcb\x96\xd5\x96\xdc\x96\xd9\x96\xf9\x97\x04\x97\x06\x97\x08\x97\x19\x97\x0d\x97\x13\x97\x0e\x97\x11\x97\x0f\x97\x16\x97\x24\x97\x2a\x97\x30\x97\x33\x97\x39\x97\x3b\x97\x3d\x97\x3e\x97\x46\x97\x44\x97\x43\x97\x48\x97\x42\x97\x49\x97\x4d\x97\x4f\x97\x51\x97\x55\x97\x5c\x97\x60\x97\x64\x97\x66\x97\x68\x97\x6d\x97\x79\x97\x85\x97\x7c\x97\x81\x97\x7a\x97\x8b\x97\x8f\x97\x90\x97\x9c\x97\xa8\x97\xa6\x97\xa3\x97\xb3\x97\xb4\x97\xc3\x97\xc6\x97\xc8\x97\xcb\x97\xdc\x97\xed\x97\xf2\x7a\xdf\x97\xf5\x98\x0f\x98\x1a\x98\x24\x98\x21\x98\x37\x98\x3d\x98\x4f\x98\x4b\x98\x57\x98\x65\x98\x6b\x98\x6f\x98\x70\x98\x71\x98\x74\x98\x73\x98\xaa\x98\xaf\x98\xb1\x98\xb6\x98\xc4\x98\xc3\x98\xc6\x98\xdc\x98\xed\x98\xe9\xfa\x2a\x98\xeb\xfa\x2b\x99\x03\x99\x1d\x99\x12\x99\x14\x99\x18\x99\x27\xfa\x2c\x99\x21\x99\x1e\x99\x24\x99\x20\x99\x2c\x99\x2e\x99\x3d\x99\x3e\x99\x42\x99\x49\x99\x45\x99\x50\x99\x4b\x99\x51\x99\x4c\x99\x55\x99\x97\x99\x98\x99\x9e\x99\xa5\x99\xad\x99\xae\x99\xbc\x99\xdf\x00\x00", /* 6700 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x99\xdb\x99\xdd\x99\xd8\x99\xd1\x99\xed\x99\xee\x99\xe2\x99\xf1\x99\xf2\x99\xfb\x99\xf8\x9a\x01\x9a\x0f\x9a\x05\x9a\x19\x9a\x2b\x9a\x37\x9a\x40\x9a\x45\x9a\x42\x9a\x43\x9a\x3e\x9a\x55\x9a\x4d\x9a\x4e\x9a\x5b\x9a\x57\x9a\x5f\x9a\x62\x9a\x69\x9a\x65\x9a\x64\x9a\x6a\x9a\x6b\x9a\xad\x9a\xb0\x9a\xbc\x9a\xc0\x9a\xcf\x9a\xd3\x9a\xd4\x9a\xd1\x9a\xd9\x9a\xdc\x9a\xde\x9a\xdf\x9a\xe2\x9a\xe3\x9a\xe6\x9a\xef\x9a\xeb\x9a\xee\x9a\xf4\x9a\xf1\x9a\xf7\x9a\xfb\x9b\x06\x9b\x18\x9b\x1a\x9b\x1f\x9b\x22\x9b\x23\x9b\x25", /* 6780 */ "\x9b\x27\x9b\x28\x9b\x29\x9b\x2a\x9b\x2e\x9b\x2f\x9b\x31\x9b\x32\x9b\x3b\x9b\x44\x9b\x43\x9b\x4d\x9b\x4e\x9b\x51\x9b\x58\x9b\x75\x9b\x74\x9b\x72\x9b\x93\x9b\x8f\x9b\x83\x9b\x91\x9b\x96\x9b\x97\x9b\x9f\x9b\xa0\x9b\xa8\x9b\xb1\x9b\xb4\x9b\xc0\x9b\xca\x9b\xbb\x9b\xb9\x9b\xc6\x9b\xcf\x9b\xd1\x9b\xd2\x9b\xe3\x9b\xe2\x9b\xe4\x9b\xd4\x9b\xe1\x9b\xf5\x9b\xf1\x9b\xf2\x9c\x04\x9c\x1b\x9c\x15\x9c\x14\x9c\x00\x9c\x09\x9c\x13\x9c\x0c\x9c\x06\x9c\x08\x9c\x12\x9c\x0a\x9c\x2e\x9c\x25\x9c\x24\x9c\x21\x9c\x30\x9c\x47\x9c\x32\x9c\x46\x9c\x3e\x9c\x5a\x9c\x60\x9c\x67\x9c\x76\x9c\x78\x9c\xeb\x9c\xe7\x9c\xec\x9c\xf0\x9d\x09\x9d\x03\x9d\x06\x9d\x2a\x9d\x26\x9d\x2c\x9d\x23\x9d\x1f\x9d\x15\x9d\x12\x9d\x41\x9d\x3f\x9d\x44\x9d\x3e\x9d\x46\x9d\x48\x9d\x5d\x9d\x5e\x9d\x59\x9d\x51\x9d\x50\x9d\x64\x9d\x72\x9d\x70\x9d\x87\x9d\x6b\x9d\x6f\x9d\x7a\x9d\x9a\x9d\xa4\x9d\xa9\x9d\xab\x9d\xb2\x9d\xc4\x9d\xc1\x9d\xbb\x9d\xb8\x9d\xba\x9d\xc6\x9d\xcf\x9d\xc2\xfa\x2d\x9d\xd9\x9d\xd3\x9d\xf8\x9d\xe6\x9d\xed\x9d\xef\x9d\xfd\x9e\x1a\x9e\x1b\x9e\x19\x00\x00", /* 6800 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x9e\x1e\x9e\x75\x9e\x79\x9e\x7d\x9e\x81\x9e\x88\x9e\x8b\x9e\x8c\x9e\x95\x9e\x91\x9e\x9d\x9e\xa5\x9e\xb8\x9e\xaa\x9e\xad\x9e\xbc\x9e\xbe\x97\x61\x9e\xcc\x9e\xcf\x9e\xd0\x9e\xd1\x9e\xd4\x9e\xdc\x9e\xde\x9e\xdd\x9e\xe0\x9e\xe5\x9e\xe8\x9e\xef\x9e\xf4\x9e\xf6\x9e\xf7\x9e\xf9\x9e\xfb\x9e\xfc\x9e\xfd\x9f\x07\x9f\x08\x76\xb7\x9f\x15\x9f\x21\x9f\x2c\x9f\x3e\x9f\x4a\x9f\x4e\x9f\x4f\x9f\x52\x9f\x54\x9f\x63\x9f\x5f\x9f\x60\x9f\x61\x9f\x66\x9f\x67\x9f\x6c\x9f\x6a\x9f\x77\x9f\x72\x9f\x76\x9f\x95\x9f\x9c\x9f\xa0", /* 6880 */ "\x5c\x2d\x69\xd9\x90\x65\x74\x76\x51\xdc\x71\x55\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 6900 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe0\x00\xe0\x01\xe0\x02\xe0\x03\xe0\x04\xe0\x05\xe0\x06\xe0\x07\xe0\x08\xe0\x09\xe0\x0a\xe0\x0b\xe0\x0c\xe0\x0d\xe0\x0e\xe0\x0f\xe0\x10\xe0\x11\xe0\x12\xe0\x13\xe0\x14\xe0\x15\xe0\x16\xe0\x17\xe0\x18\xe0\x19\xe0\x1a\xe0\x1b\xe0\x1c\xe0\x1d\xe0\x1e\xe0\x1f\xe0\x20\xe0\x21\xe0\x22\xe0\x23\xe0\x24\xe0\x25\xe0\x26\xe0\x27\xe0\x28\xe0\x29\xe0\x2a\xe0\x2b\xe0\x2c\xe0\x2d\xe0\x2e\xe0\x2f\xe0\x30\xe0\x31\xe0\x32\xe0\x33\xe0\x34\xe0\x35\xe0\x36\xe0\x37\xe0\x38\xe0\x39\xe0\x3a\xe0\x3b\xe0\x3c\xe0\x3d\xe0\x3e", /* 6980 */ "\xe0\x3f\xe0\x40\xe0\x41\xe0\x42\xe0\x43\xe0\x44\xe0\x45\xe0\x46\xe0\x47\xe0\x48\xe0\x49\xe0\x4a\xe0\x4b\xe0\x4c\xe0\x4d\xe0\x4e\xe0\x4f\xe0\x50\xe0\x51\xe0\x52\xe0\x53\xe0\x54\xe0\x55\xe0\x56\xe0\x57\xe0\x58\xe0\x59\xe0\x5a\xe0\x5b\xe0\x5c\xe0\x5d\xe0\x5e\xe0\x5f\xe0\x60\xe0\x61\xe0\x62\xe0\x63\xe0\x64\xe0\x65\xe0\x66\xe0\x67\xe0\x68\xe0\x69\xe0\x6a\xe0\x6b\xe0\x6c\xe0\x6d\xe0\x6e\xe0\x6f\xe0\x70\xe0\x71\xe0\x72\xe0\x73\xe0\x74\xe0\x75\xe0\x76\xe0\x77\xe0\x78\xe0\x79\xe0\x7a\xe0\x7b\xe0\x7c\xe0\x7d\xe0\x7e\xe0\x7f\xe0\x80\xe0\x81\xe0\x82\xe0\x83\xe0\x84\xe0\x85\xe0\x86\xe0\x87\xe0\x88\xe0\x89\xe0\x8a\xe0\x8b\xe0\x8c\xe0\x8d\xe0\x8e\xe0\x8f\xe0\x90\xe0\x91\xe0\x92\xe0\x93\xe0\x94\xe0\x95\xe0\x96\xe0\x97\xe0\x98\xe0\x99\xe0\x9a\xe0\x9b\xe0\x9c\xe0\x9d\xe0\x9e\xe0\x9f\xe0\xa0\xe0\xa1\xe0\xa2\xe0\xa3\xe0\xa4\xe0\xa5\xe0\xa6\xe0\xa7\xe0\xa8\xe0\xa9\xe0\xaa\xe0\xab\xe0\xac\xe0\xad\xe0\xae\xe0\xaf\xe0\xb0\xe0\xb1\xe0\xb2\xe0\xb3\xe0\xb4\xe0\xb5\xe0\xb6\xe0\xb7\xe0\xb8\xe0\xb9\xe0\xba\xe0\xbb\xe0\xbc\xe0\xbd\x00\x00", /* 6a00 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe0\xbe\xe0\xbf\xe0\xc0\xe0\xc1\xe0\xc2\xe0\xc3\xe0\xc4\xe0\xc5\xe0\xc6\xe0\xc7\xe0\xc8\xe0\xc9\xe0\xca\xe0\xcb\xe0\xcc\xe0\xcd\xe0\xce\xe0\xcf\xe0\xd0\xe0\xd1\xe0\xd2\xe0\xd3\xe0\xd4\xe0\xd5\xe0\xd6\xe0\xd7\xe0\xd8\xe0\xd9\xe0\xda\xe0\xdb\xe0\xdc\xe0\xdd\xe0\xde\xe0\xdf\xe0\xe0\xe0\xe1\xe0\xe2\xe0\xe3\xe0\xe4\xe0\xe5\xe0\xe6\xe0\xe7\xe0\xe8\xe0\xe9\xe0\xea\xe0\xeb\xe0\xec\xe0\xed\xe0\xee\xe0\xef\xe0\xf0\xe0\xf1\xe0\xf2\xe0\xf3\xe0\xf4\xe0\xf5\xe0\xf6\xe0\xf7\xe0\xf8\xe0\xf9\xe0\xfa\xe0\xfb\xe0\xfc", /* 6a80 */ "\xe0\xfd\xe0\xfe\xe0\xff\xe1\x00\xe1\x01\xe1\x02\xe1\x03\xe1\x04\xe1\x05\xe1\x06\xe1\x07\xe1\x08\xe1\x09\xe1\x0a\xe1\x0b\xe1\x0c\xe1\x0d\xe1\x0e\xe1\x0f\xe1\x10\xe1\x11\xe1\x12\xe1\x13\xe1\x14\xe1\x15\xe1\x16\xe1\x17\xe1\x18\xe1\x19\xe1\x1a\xe1\x1b\xe1\x1c\xe1\x1d\xe1\x1e\xe1\x1f\xe1\x20\xe1\x21\xe1\x22\xe1\x23\xe1\x24\xe1\x25\xe1\x26\xe1\x27\xe1\x28\xe1\x29\xe1\x2a\xe1\x2b\xe1\x2c\xe1\x2d\xe1\x2e\xe1\x2f\xe1\x30\xe1\x31\xe1\x32\xe1\x33\xe1\x34\xe1\x35\xe1\x36\xe1\x37\xe1\x38\xe1\x39\xe1\x3a\xe1\x3b\xe1\x3c\xe1\x3d\xe1\x3e\xe1\x3f\xe1\x40\xe1\x41\xe1\x42\xe1\x43\xe1\x44\xe1\x45\xe1\x46\xe1\x47\xe1\x48\xe1\x49\xe1\x4a\xe1\x4b\xe1\x4c\xe1\x4d\xe1\x4e\xe1\x4f\xe1\x50\xe1\x51\xe1\x52\xe1\x53\xe1\x54\xe1\x55\xe1\x56\xe1\x57\xe1\x58\xe1\x59\xe1\x5a\xe1\x5b\xe1\x5c\xe1\x5d\xe1\x5e\xe1\x5f\xe1\x60\xe1\x61\xe1\x62\xe1\x63\xe1\x64\xe1\x65\xe1\x66\xe1\x67\xe1\x68\xe1\x69\xe1\x6a\xe1\x6b\xe1\x6c\xe1\x6d\xe1\x6e\xe1\x6f\xe1\x70\xe1\x71\xe1\x72\xe1\x73\xe1\x74\xe1\x75\xe1\x76\xe1\x77\xe1\x78\xe1\x79\xe1\x7a\xe1\x7b\x00\x00", /* 6b00 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe1\x7c\xe1\x7d\xe1\x7e\xe1\x7f\xe1\x80\xe1\x81\xe1\x82\xe1\x83\xe1\x84\xe1\x85\xe1\x86\xe1\x87\xe1\x88\xe1\x89\xe1\x8a\xe1\x8b\xe1\x8c\xe1\x8d\xe1\x8e\xe1\x8f\xe1\x90\xe1\x91\xe1\x92\xe1\x93\xe1\x94\xe1\x95\xe1\x96\xe1\x97\xe1\x98\xe1\x99\xe1\x9a\xe1\x9b\xe1\x9c\xe1\x9d\xe1\x9e\xe1\x9f\xe1\xa0\xe1\xa1\xe1\xa2\xe1\xa3\xe1\xa4\xe1\xa5\xe1\xa6\xe1\xa7\xe1\xa8\xe1\xa9\xe1\xaa\xe1\xab\xe1\xac\xe1\xad\xe1\xae\xe1\xaf\xe1\xb0\xe1\xb1\xe1\xb2\xe1\xb3\xe1\xb4\xe1\xb5\xe1\xb6\xe1\xb7\xe1\xb8\xe1\xb9\xe1\xba", /* 6b80 */ "\xe1\xbb\xe1\xbc\xe1\xbd\xe1\xbe\xe1\xbf\xe1\xc0\xe1\xc1\xe1\xc2\xe1\xc3\xe1\xc4\xe1\xc5\xe1\xc6\xe1\xc7\xe1\xc8\xe1\xc9\xe1\xca\xe1\xcb\xe1\xcc\xe1\xcd\xe1\xce\xe1\xcf\xe1\xd0\xe1\xd1\xe1\xd2\xe1\xd3\xe1\xd4\xe1\xd5\xe1\xd6\xe1\xd7\xe1\xd8\xe1\xd9\xe1\xda\xe1\xdb\xe1\xdc\xe1\xdd\xe1\xde\xe1\xdf\xe1\xe0\xe1\xe1\xe1\xe2\xe1\xe3\xe1\xe4\xe1\xe5\xe1\xe6\xe1\xe7\xe1\xe8\xe1\xe9\xe1\xea\xe1\xeb\xe1\xec\xe1\xed\xe1\xee\xe1\xef\xe1\xf0\xe1\xf1\xe1\xf2\xe1\xf3\xe1\xf4\xe1\xf5\xe1\xf6\xe1\xf7\xe1\xf8\xe1\xf9\xe1\xfa\xe1\xfb\xe1\xfc\xe1\xfd\xe1\xfe\xe1\xff\xe2\x00\xe2\x01\xe2\x02\xe2\x03\xe2\x04\xe2\x05\xe2\x06\xe2\x07\xe2\x08\xe2\x09\xe2\x0a\xe2\x0b\xe2\x0c\xe2\x0d\xe2\x0e\xe2\x0f\xe2\x10\xe2\x11\xe2\x12\xe2\x13\xe2\x14\xe2\x15\xe2\x16\xe2\x17\xe2\x18\xe2\x19\xe2\x1a\xe2\x1b\xe2\x1c\xe2\x1d\xe2\x1e\xe2\x1f\xe2\x20\xe2\x21\xe2\x22\xe2\x23\xe2\x24\xe2\x25\xe2\x26\xe2\x27\xe2\x28\xe2\x29\xe2\x2a\xe2\x2b\xe2\x2c\xe2\x2d\xe2\x2e\xe2\x2f\xe2\x30\xe2\x31\xe2\x32\xe2\x33\xe2\x34\xe2\x35\xe2\x36\xe2\x37\xe2\x38\xe2\x39\x00\x00", /* 6c00 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe2\x3a\xe2\x3b\xe2\x3c\xe2\x3d\xe2\x3e\xe2\x3f\xe2\x40\xe2\x41\xe2\x42\xe2\x43\xe2\x44\xe2\x45\xe2\x46\xe2\x47\xe2\x48\xe2\x49\xe2\x4a\xe2\x4b\xe2\x4c\xe2\x4d\xe2\x4e\xe2\x4f\xe2\x50\xe2\x51\xe2\x52\xe2\x53\xe2\x54\xe2\x55\xe2\x56\xe2\x57\xe2\x58\xe2\x59\xe2\x5a\xe2\x5b\xe2\x5c\xe2\x5d\xe2\x5e\xe2\x5f\xe2\x60\xe2\x61\xe2\x62\xe2\x63\xe2\x64\xe2\x65\xe2\x66\xe2\x67\xe2\x68\xe2\x69\xe2\x6a\xe2\x6b\xe2\x6c\xe2\x6d\xe2\x6e\xe2\x6f\xe2\x70\xe2\x71\xe2\x72\xe2\x73\xe2\x74\xe2\x75\xe2\x76\xe2\x77\xe2\x78", /* 6c80 */ "\xe2\x79\xe2\x7a\xe2\x7b\xe2\x7c\xe2\x7d\xe2\x7e\xe2\x7f\xe2\x80\xe2\x81\xe2\x82\xe2\x83\xe2\x84\xe2\x85\xe2\x86\xe2\x87\xe2\x88\xe2\x89\xe2\x8a\xe2\x8b\xe2\x8c\xe2\x8d\xe2\x8e\xe2\x8f\xe2\x90\xe2\x91\xe2\x92\xe2\x93\xe2\x94\xe2\x95\xe2\x96\xe2\x97\xe2\x98\xe2\x99\xe2\x9a\xe2\x9b\xe2\x9c\xe2\x9d\xe2\x9e\xe2\x9f\xe2\xa0\xe2\xa1\xe2\xa2\xe2\xa3\xe2\xa4\xe2\xa5\xe2\xa6\xe2\xa7\xe2\xa8\xe2\xa9\xe2\xaa\xe2\xab\xe2\xac\xe2\xad\xe2\xae\xe2\xaf\xe2\xb0\xe2\xb1\xe2\xb2\xe2\xb3\xe2\xb4\xe2\xb5\xe2\xb6\xe2\xb7\xe2\xb8\xe2\xb9\xe2\xba\xe2\xbb\xe2\xbc\xe2\xbd\xe2\xbe\xe2\xbf\xe2\xc0\xe2\xc1\xe2\xc2\xe2\xc3\xe2\xc4\xe2\xc5\xe2\xc6\xe2\xc7\xe2\xc8\xe2\xc9\xe2\xca\xe2\xcb\xe2\xcc\xe2\xcd\xe2\xce\xe2\xcf\xe2\xd0\xe2\xd1\xe2\xd2\xe2\xd3\xe2\xd4\xe2\xd5\xe2\xd6\xe2\xd7\xe2\xd8\xe2\xd9\xe2\xda\xe2\xdb\xe2\xdc\xe2\xdd\xe2\xde\xe2\xdf\xe2\xe0\xe2\xe1\xe2\xe2\xe2\xe3\xe2\xe4\xe2\xe5\xe2\xe6\xe2\xe7\xe2\xe8\xe2\xe9\xe2\xea\xe2\xeb\xe2\xec\xe2\xed\xe2\xee\xe2\xef\xe2\xf0\xe2\xf1\xe2\xf2\xe2\xf3\xe2\xf4\xe2\xf5\xe2\xf6\xe2\xf7\x00\x00", /* 6d00 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe2\xf8\xe2\xf9\xe2\xfa\xe2\xfb\xe2\xfc\xe2\xfd\xe2\xfe\xe2\xff\xe3\x00\xe3\x01\xe3\x02\xe3\x03\xe3\x04\xe3\x05\xe3\x06\xe3\x07\xe3\x08\xe3\x09\xe3\x0a\xe3\x0b\xe3\x0c\xe3\x0d\xe3\x0e\xe3\x0f\xe3\x10\xe3\x11\xe3\x12\xe3\x13\xe3\x14\xe3\x15\xe3\x16\xe3\x17\xe3\x18\xe3\x19\xe3\x1a\xe3\x1b\xe3\x1c\xe3\x1d\xe3\x1e\xe3\x1f\xe3\x20\xe3\x21\xe3\x22\xe3\x23\xe3\x24\xe3\x25\xe3\x26\xe3\x27\xe3\x28\xe3\x29\xe3\x2a\xe3\x2b\xe3\x2c\xe3\x2d\xe3\x2e\xe3\x2f\xe3\x30\xe3\x31\xe3\x32\xe3\x33\xe3\x34\xe3\x35\xe3\x36", /* 6d80 */ "\xe3\x37\xe3\x38\xe3\x39\xe3\x3a\xe3\x3b\xe3\x3c\xe3\x3d\xe3\x3e\xe3\x3f\xe3\x40\xe3\x41\xe3\x42\xe3\x43\xe3\x44\xe3\x45\xe3\x46\xe3\x47\xe3\x48\xe3\x49\xe3\x4a\xe3\x4b\xe3\x4c\xe3\x4d\xe3\x4e\xe3\x4f\xe3\x50\xe3\x51\xe3\x52\xe3\x53\xe3\x54\xe3\x55\xe3\x56\xe3\x57\xe3\x58\xe3\x59\xe3\x5a\xe3\x5b\xe3\x5c\xe3\x5d\xe3\x5e\xe3\x5f\xe3\x60\xe3\x61\xe3\x62\xe3\x63\xe3\x64\xe3\x65\xe3\x66\xe3\x67\xe3\x68\xe3\x69\xe3\x6a\xe3\x6b\xe3\x6c\xe3\x6d\xe3\x6e\xe3\x6f\xe3\x70\xe3\x71\xe3\x72\xe3\x73\xe3\x74\xe3\x75\xe3\x76\xe3\x77\xe3\x78\xe3\x79\xe3\x7a\xe3\x7b\xe3\x7c\xe3\x7d\xe3\x7e\xe3\x7f\xe3\x80\xe3\x81\xe3\x82\xe3\x83\xe3\x84\xe3\x85\xe3\x86\xe3\x87\xe3\x88\xe3\x89\xe3\x8a\xe3\x8b\xe3\x8c\xe3\x8d\xe3\x8e\xe3\x8f\xe3\x90\xe3\x91\xe3\x92\xe3\x93\xe3\x94\xe3\x95\xe3\x96\xe3\x97\xe3\x98\xe3\x99\xe3\x9a\xe3\x9b\xe3\x9c\xe3\x9d\xe3\x9e\xe3\x9f\xe3\xa0\xe3\xa1\xe3\xa2\xe3\xa3\xe3\xa4\xe3\xa5\xe3\xa6\xe3\xa7\xe3\xa8\xe3\xa9\xe3\xaa\xe3\xab\xe3\xac\xe3\xad\xe3\xae\xe3\xaf\xe3\xb0\xe3\xb1\xe3\xb2\xe3\xb3\xe3\xb4\xe3\xb5\x00\x00", /* 6e00 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe3\xb6\xe3\xb7\xe3\xb8\xe3\xb9\xe3\xba\xe3\xbb\xe3\xbc\xe3\xbd\xe3\xbe\xe3\xbf\xe3\xc0\xe3\xc1\xe3\xc2\xe3\xc3\xe3\xc4\xe3\xc5\xe3\xc6\xe3\xc7\xe3\xc8\xe3\xc9\xe3\xca\xe3\xcb\xe3\xcc\xe3\xcd\xe3\xce\xe3\xcf\xe3\xd0\xe3\xd1\xe3\xd2\xe3\xd3\xe3\xd4\xe3\xd5\xe3\xd6\xe3\xd7\xe3\xd8\xe3\xd9\xe3\xda\xe3\xdb\xe3\xdc\xe3\xdd\xe3\xde\xe3\xdf\xe3\xe0\xe3\xe1\xe3\xe2\xe3\xe3\xe3\xe4\xe3\xe5\xe3\xe6\xe3\xe7\xe3\xe8\xe3\xe9\xe3\xea\xe3\xeb\xe3\xec\xe3\xed\xe3\xee\xe3\xef\xe3\xf0\xe3\xf1\xe3\xf2\xe3\xf3\xe3\xf4", /* 6e80 */ "\xe3\xf5\xe3\xf6\xe3\xf7\xe3\xf8\xe3\xf9\xe3\xfa\xe3\xfb\xe3\xfc\xe3\xfd\xe3\xfe\xe3\xff\xe4\x00\xe4\x01\xe4\x02\xe4\x03\xe4\x04\xe4\x05\xe4\x06\xe4\x07\xe4\x08\xe4\x09\xe4\x0a\xe4\x0b\xe4\x0c\xe4\x0d\xe4\x0e\xe4\x0f\xe4\x10\xe4\x11\xe4\x12\xe4\x13\xe4\x14\xe4\x15\xe4\x16\xe4\x17\xe4\x18\xe4\x19\xe4\x1a\xe4\x1b\xe4\x1c\xe4\x1d\xe4\x1e\xe4\x1f\xe4\x20\xe4\x21\xe4\x22\xe4\x23\xe4\x24\xe4\x25\xe4\x26\xe4\x27\xe4\x28\xe4\x29\xe4\x2a\xe4\x2b\xe4\x2c\xe4\x2d\xe4\x2e\xe4\x2f\xe4\x30\xe4\x31\xe4\x32\xe4\x33\xe4\x34\xe4\x35\xe4\x36\xe4\x37\xe4\x38\xe4\x39\xe4\x3a\xe4\x3b\xe4\x3c\xe4\x3d\xe4\x3e\xe4\x3f\xe4\x40\xe4\x41\xe4\x42\xe4\x43\xe4\x44\xe4\x45\xe4\x46\xe4\x47\xe4\x48\xe4\x49\xe4\x4a\xe4\x4b\xe4\x4c\xe4\x4d\xe4\x4e\xe4\x4f\xe4\x50\xe4\x51\xe4\x52\xe4\x53\xe4\x54\xe4\x55\xe4\x56\xe4\x57\xe4\x58\xe4\x59\xe4\x5a\xe4\x5b\xe4\x5c\xe4\x5d\xe4\x5e\xe4\x5f\xe4\x60\xe4\x61\xe4\x62\xe4\x63\xe4\x64\xe4\x65\xe4\x66\xe4\x67\xe4\x68\xe4\x69\xe4\x6a\xe4\x6b\xe4\x6c\xe4\x6d\xe4\x6e\xe4\x6f\xe4\x70\xe4\x71\xe4\x72\xe4\x73\x00\x00", /* 6f00 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe4\x74\xe4\x75\xe4\x76\xe4\x77\xe4\x78\xe4\x79\xe4\x7a\xe4\x7b\xe4\x7c\xe4\x7d\xe4\x7e\xe4\x7f\xe4\x80\xe4\x81\xe4\x82\xe4\x83\xe4\x84\xe4\x85\xe4\x86\xe4\x87\xe4\x88\xe4\x89\xe4\x8a\xe4\x8b\xe4\x8c\xe4\x8d\xe4\x8e\xe4\x8f\xe4\x90\xe4\x91\xe4\x92\xe4\x93\xe4\x94\xe4\x95\xe4\x96\xe4\x97\xe4\x98\xe4\x99\xe4\x9a\xe4\x9b\xe4\x9c\xe4\x9d\xe4\x9e\xe4\x9f\xe4\xa0\xe4\xa1\xe4\xa2\xe4\xa3\xe4\xa4\xe4\xa5\xe4\xa6\xe4\xa7\xe4\xa8\xe4\xa9\xe4\xaa\xe4\xab\xe4\xac\xe4\xad\xe4\xae\xe4\xaf\xe4\xb0\xe4\xb1\xe4\xb2", /* 6f80 */ "\xe4\xb3\xe4\xb4\xe4\xb5\xe4\xb6\xe4\xb7\xe4\xb8\xe4\xb9\xe4\xba\xe4\xbb\xe4\xbc\xe4\xbd\xe4\xbe\xe4\xbf\xe4\xc0\xe4\xc1\xe4\xc2\xe4\xc3\xe4\xc4\xe4\xc5\xe4\xc6\xe4\xc7\xe4\xc8\xe4\xc9\xe4\xca\xe4\xcb\xe4\xcc\xe4\xcd\xe4\xce\xe4\xcf\xe4\xd0\xe4\xd1\xe4\xd2\xe4\xd3\xe4\xd4\xe4\xd5\xe4\xd6\xe4\xd7\xe4\xd8\xe4\xd9\xe4\xda\xe4\xdb\xe4\xdc\xe4\xdd\xe4\xde\xe4\xdf\xe4\xe0\xe4\xe1\xe4\xe2\xe4\xe3\xe4\xe4\xe4\xe5\xe4\xe6\xe4\xe7\xe4\xe8\xe4\xe9\xe4\xea\xe4\xeb\xe4\xec\xe4\xed\xe4\xee\xe4\xef\xe4\xf0\xe4\xf1\xe4\xf2\xe4\xf3\xe4\xf4\xe4\xf5\xe4\xf6\xe4\xf7\xe4\xf8\xe4\xf9\xe4\xfa\xe4\xfb\xe4\xfc\xe4\xfd\xe4\xfe\xe4\xff\xe5\x00\xe5\x01\xe5\x02\xe5\x03\xe5\x04\xe5\x05\xe5\x06\xe5\x07\xe5\x08\xe5\x09\xe5\x0a\xe5\x0b\xe5\x0c\xe5\x0d\xe5\x0e\xe5\x0f\xe5\x10\xe5\x11\xe5\x12\xe5\x13\xe5\x14\xe5\x15\xe5\x16\xe5\x17\xe5\x18\xe5\x19\xe5\x1a\xe5\x1b\xe5\x1c\xe5\x1d\xe5\x1e\xe5\x1f\xe5\x20\xe5\x21\xe5\x22\xe5\x23\xe5\x24\xe5\x25\xe5\x26\xe5\x27\xe5\x28\xe5\x29\xe5\x2a\xe5\x2b\xe5\x2c\xe5\x2d\xe5\x2e\xe5\x2f\xe5\x30\xe5\x31\x00\x00", /* 7000 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe5\x32\xe5\x33\xe5\x34\xe5\x35\xe5\x36\xe5\x37\xe5\x38\xe5\x39\xe5\x3a\xe5\x3b\xe5\x3c\xe5\x3d\xe5\x3e\xe5\x3f\xe5\x40\xe5\x41\xe5\x42\xe5\x43\xe5\x44\xe5\x45\xe5\x46\xe5\x47\xe5\x48\xe5\x49\xe5\x4a\xe5\x4b\xe5\x4c\xe5\x4d\xe5\x4e\xe5\x4f\xe5\x50\xe5\x51\xe5\x52\xe5\x53\xe5\x54\xe5\x55\xe5\x56\xe5\x57\xe5\x58\xe5\x59\xe5\x5a\xe5\x5b\xe5\x5c\xe5\x5d\xe5\x5e\xe5\x5f\xe5\x60\xe5\x61\xe5\x62\xe5\x63\xe5\x64\xe5\x65\xe5\x66\xe5\x67\xe5\x68\xe5\x69\xe5\x6a\xe5\x6b\xe5\x6c\xe5\x6d\xe5\x6e\xe5\x6f\xe5\x70", /* 7080 */ "\xe5\x71\xe5\x72\xe5\x73\xe5\x74\xe5\x75\xe5\x76\xe5\x77\xe5\x78\xe5\x79\xe5\x7a\xe5\x7b\xe5\x7c\xe5\x7d\xe5\x7e\xe5\x7f\xe5\x80\xe5\x81\xe5\x82\xe5\x83\xe5\x84\xe5\x85\xe5\x86\xe5\x87\xe5\x88\xe5\x89\xe5\x8a\xe5\x8b\xe5\x8c\xe5\x8d\xe5\x8e\xe5\x8f\xe5\x90\xe5\x91\xe5\x92\xe5\x93\xe5\x94\xe5\x95\xe5\x96\xe5\x97\xe5\x98\xe5\x99\xe5\x9a\xe5\x9b\xe5\x9c\xe5\x9d\xe5\x9e\xe5\x9f\xe5\xa0\xe5\xa1\xe5\xa2\xe5\xa3\xe5\xa4\xe5\xa5\xe5\xa6\xe5\xa7\xe5\xa8\xe5\xa9\xe5\xaa\xe5\xab\xe5\xac\xe5\xad\xe5\xae\xe5\xaf\xe5\xb0\xe5\xb1\xe5\xb2\xe5\xb3\xe5\xb4\xe5\xb5\xe5\xb6\xe5\xb7\xe5\xb8\xe5\xb9\xe5\xba\xe5\xbb\xe5\xbc\xe5\xbd\xe5\xbe\xe5\xbf\xe5\xc0\xe5\xc1\xe5\xc2\xe5\xc3\xe5\xc4\xe5\xc5\xe5\xc6\xe5\xc7\xe5\xc8\xe5\xc9\xe5\xca\xe5\xcb\xe5\xcc\xe5\xcd\xe5\xce\xe5\xcf\xe5\xd0\xe5\xd1\xe5\xd2\xe5\xd3\xe5\xd4\xe5\xd5\xe5\xd6\xe5\xd7\xe5\xd8\xe5\xd9\xe5\xda\xe5\xdb\xe5\xdc\xe5\xdd\xe5\xde\xe5\xdf\xe5\xe0\xe5\xe1\xe5\xe2\xe5\xe3\xe5\xe4\xe5\xe5\xe5\xe6\xe5\xe7\xe5\xe8\xe5\xe9\xe5\xea\xe5\xeb\xe5\xec\xe5\xed\xe5\xee\xe5\xef\x00\x00", /* 7100 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe5\xf0\xe5\xf1\xe5\xf2\xe5\xf3\xe5\xf4\xe5\xf5\xe5\xf6\xe5\xf7\xe5\xf8\xe5\xf9\xe5\xfa\xe5\xfb\xe5\xfc\xe5\xfd\xe5\xfe\xe5\xff\xe6\x00\xe6\x01\xe6\x02\xe6\x03\xe6\x04\xe6\x05\xe6\x06\xe6\x07\xe6\x08\xe6\x09\xe6\x0a\xe6\x0b\xe6\x0c\xe6\x0d\xe6\x0e\xe6\x0f\xe6\x10\xe6\x11\xe6\x12\xe6\x13\xe6\x14\xe6\x15\xe6\x16\xe6\x17\xe6\x18\xe6\x19\xe6\x1a\xe6\x1b\xe6\x1c\xe6\x1d\xe6\x1e\xe6\x1f\xe6\x20\xe6\x21\xe6\x22\xe6\x23\xe6\x24\xe6\x25\xe6\x26\xe6\x27\xe6\x28\xe6\x29\xe6\x2a\xe6\x2b\xe6\x2c\xe6\x2d\xe6\x2e", /* 7180 */ "\xe6\x2f\xe6\x30\xe6\x31\xe6\x32\xe6\x33\xe6\x34\xe6\x35\xe6\x36\xe6\x37\xe6\x38\xe6\x39\xe6\x3a\xe6\x3b\xe6\x3c\xe6\x3d\xe6\x3e\xe6\x3f\xe6\x40\xe6\x41\xe6\x42\xe6\x43\xe6\x44\xe6\x45\xe6\x46\xe6\x47\xe6\x48\xe6\x49\xe6\x4a\xe6\x4b\xe6\x4c\xe6\x4d\xe6\x4e\xe6\x4f\xe6\x50\xe6\x51\xe6\x52\xe6\x53\xe6\x54\xe6\x55\xe6\x56\xe6\x57\xe6\x58\xe6\x59\xe6\x5a\xe6\x5b\xe6\x5c\xe6\x5d\xe6\x5e\xe6\x5f\xe6\x60\xe6\x61\xe6\x62\xe6\x63\xe6\x64\xe6\x65\xe6\x66\xe6\x67\xe6\x68\xe6\x69\xe6\x6a\xe6\x6b\xe6\x6c\xe6\x6d\xe6\x6e\xe6\x6f\xe6\x70\xe6\x71\xe6\x72\xe6\x73\xe6\x74\xe6\x75\xe6\x76\xe6\x77\xe6\x78\xe6\x79\xe6\x7a\xe6\x7b\xe6\x7c\xe6\x7d\xe6\x7e\xe6\x7f\xe6\x80\xe6\x81\xe6\x82\xe6\x83\xe6\x84\xe6\x85\xe6\x86\xe6\x87\xe6\x88\xe6\x89\xe6\x8a\xe6\x8b\xe6\x8c\xe6\x8d\xe6\x8e\xe6\x8f\xe6\x90\xe6\x91\xe6\x92\xe6\x93\xe6\x94\xe6\x95\xe6\x96\xe6\x97\xe6\x98\xe6\x99\xe6\x9a\xe6\x9b\xe6\x9c\xe6\x9d\xe6\x9e\xe6\x9f\xe6\xa0\xe6\xa1\xe6\xa2\xe6\xa3\xe6\xa4\xe6\xa5\xe6\xa6\xe6\xa7\xe6\xa8\xe6\xa9\xe6\xaa\xe6\xab\xe6\xac\xe6\xad\x00\x00", /* 7200 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe6\xae\xe6\xaf\xe6\xb0\xe6\xb1\xe6\xb2\xe6\xb3\xe6\xb4\xe6\xb5\xe6\xb6\xe6\xb7\xe6\xb8\xe6\xb9\xe6\xba\xe6\xbb\xe6\xbc\xe6\xbd\xe6\xbe\xe6\xbf\xe6\xc0\xe6\xc1\xe6\xc2\xe6\xc3\xe6\xc4\xe6\xc5\xe6\xc6\xe6\xc7\xe6\xc8\xe6\xc9\xe6\xca\xe6\xcb\xe6\xcc\xe6\xcd\xe6\xce\xe6\xcf\xe6\xd0\xe6\xd1\xe6\xd2\xe6\xd3\xe6\xd4\xe6\xd5\xe6\xd6\xe6\xd7\xe6\xd8\xe6\xd9\xe6\xda\xe6\xdb\xe6\xdc\xe6\xdd\xe6\xde\xe6\xdf\xe6\xe0\xe6\xe1\xe6\xe2\xe6\xe3\xe6\xe4\xe6\xe5\xe6\xe6\xe6\xe7\xe6\xe8\xe6\xe9\xe6\xea\xe6\xeb\xe6\xec", /* 7280 */ "\xe6\xed\xe6\xee\xe6\xef\xe6\xf0\xe6\xf1\xe6\xf2\xe6\xf3\xe6\xf4\xe6\xf5\xe6\xf6\xe6\xf7\xe6\xf8\xe6\xf9\xe6\xfa\xe6\xfb\xe6\xfc\xe6\xfd\xe6\xfe\xe6\xff\xe7\x00\xe7\x01\xe7\x02\xe7\x03\xe7\x04\xe7\x05\xe7\x06\xe7\x07\xe7\x08\xe7\x09\xe7\x0a\xe7\x0b\xe7\x0c\xe7\x0d\xe7\x0e\xe7\x0f\xe7\x10\xe7\x11\xe7\x12\xe7\x13\xe7\x14\xe7\x15\xe7\x16\xe7\x17\xe7\x18\xe7\x19\xe7\x1a\xe7\x1b\xe7\x1c\xe7\x1d\xe7\x1e\xe7\x1f\xe7\x20\xe7\x21\xe7\x22\xe7\x23\xe7\x24\xe7\x25\xe7\x26\xe7\x27\xe7\x28\xe7\x29\xe7\x2a\xe7\x2b\xe7\x2c\xe7\x2d\xe7\x2e\xe7\x2f\xe7\x30\xe7\x31\xe7\x32\xe7\x33\xe7\x34\xe7\x35\xe7\x36\xe7\x37\xe7\x38\xe7\x39\xe7\x3a\xe7\x3b\xe7\x3c\xe7\x3d\xe7\x3e\xe7\x3f\xe7\x40\xe7\x41\xe7\x42\xe7\x43\xe7\x44\xe7\x45\xe7\x46\xe7\x47\xe7\x48\xe7\x49\xe7\x4a\xe7\x4b\xe7\x4c\xe7\x4d\xe7\x4e\xe7\x4f\xe7\x50\xe7\x51\xe7\x52\xe7\x53\xe7\x54\xe7\x55\xe7\x56\xe7\x57\xe7\x58\xe7\x59\xe7\x5a\xe7\x5b\xe7\x5c\xe7\x5d\xe7\x5e\xe7\x5f\xe7\x60\xe7\x61\xe7\x62\xe7\x63\xe7\x64\xe7\x65\xe7\x66\xe7\x67\xe7\x68\xe7\x69\xe7\x6a\xe7\x6b\x00\x00", /* 7300 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe7\x6c\xe7\x6d\xe7\x6e\xe7\x6f\xe7\x70\xe7\x71\xe7\x72\xe7\x73\xe7\x74\xe7\x75\xe7\x76\xe7\x77\xe7\x78\xe7\x79\xe7\x7a\xe7\x7b\xe7\x7c\xe7\x7d\xe7\x7e\xe7\x7f\xe7\x80\xe7\x81\xe7\x82\xe7\x83\xe7\x84\xe7\x85\xe7\x86\xe7\x87\xe7\x88\xe7\x89\xe7\x8a\xe7\x8b\xe7\x8c\xe7\x8d\xe7\x8e\xe7\x8f\xe7\x90\xe7\x91\xe7\x92\xe7\x93\xe7\x94\xe7\x95\xe7\x96\xe7\x97\xe7\x98\xe7\x99\xe7\x9a\xe7\x9b\xe7\x9c\xe7\x9d\xe7\x9e\xe7\x9f\xe7\xa0\xe7\xa1\xe7\xa2\xe7\xa3\xe7\xa4\xe7\xa5\xe7\xa6\xe7\xa7\xe7\xa8\xe7\xa9\xe7\xaa", /* 7380 */ "\xe7\xab\xe7\xac\xe7\xad\xe7\xae\xe7\xaf\xe7\xb0\xe7\xb1\xe7\xb2\xe7\xb3\xe7\xb4\xe7\xb5\xe7\xb6\xe7\xb7\xe7\xb8\xe7\xb9\xe7\xba\xe7\xbb\xe7\xbc\xe7\xbd\xe7\xbe\xe7\xbf\xe7\xc0\xe7\xc1\xe7\xc2\xe7\xc3\xe7\xc4\xe7\xc5\xe7\xc6\xe7\xc7\xe7\xc8\xe7\xc9\xe7\xca\xe7\xcb\xe7\xcc\xe7\xcd\xe7\xce\xe7\xcf\xe7\xd0\xe7\xd1\xe7\xd2\xe7\xd3\xe7\xd4\xe7\xd5\xe7\xd6\xe7\xd7\xe7\xd8\xe7\xd9\xe7\xda\xe7\xdb\xe7\xdc\xe7\xdd\xe7\xde\xe7\xdf\xe7\xe0\xe7\xe1\xe7\xe2\xe7\xe3\xe7\xe4\xe7\xe5\xe7\xe6\xe7\xe7\xe7\xe8\xe7\xe9\xe7\xea\xe7\xeb\xe7\xec\xe7\xed\xe7\xee\xe7\xef\xe7\xf0\xe7\xf1\xe7\xf2\xe7\xf3\xe7\xf4\xe7\xf5\xe7\xf6\xe7\xf7\xe7\xf8\xe7\xf9\xe7\xfa\xe7\xfb\xe7\xfc\xe7\xfd\xe7\xfe\xe7\xff\xe8\x00\xe8\x01\xe8\x02\xe8\x03\xe8\x04\xe8\x05\xe8\x06\xe8\x07\xe8\x08\xe8\x09\xe8\x0a\xe8\x0b\xe8\x0c\xe8\x0d\xe8\x0e\xe8\x0f\xe8\x10\xe8\x11\xe8\x12\xe8\x13\xe8\x14\xe8\x15\xe8\x16\xe8\x17\xe8\x18\xe8\x19\xe8\x1a\xe8\x1b\xe8\x1c\xe8\x1d\xe8\x1e\xe8\x1f\xe8\x20\xe8\x21\xe8\x22\xe8\x23\xe8\x24\xe8\x25\xe8\x26\xe8\x27\xe8\x28\xe8\x29\x00\x00", /* 7400 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe8\x2a\xe8\x2b\xe8\x2c\xe8\x2d\xe8\x2e\xe8\x2f\xe8\x30\xe8\x31\xe8\x32\xe8\x33\xe8\x34\xe8\x35\xe8\x36\xe8\x37\xe8\x38\xe8\x39\xe8\x3a\xe8\x3b\xe8\x3c\xe8\x3d\xe8\x3e\xe8\x3f\xe8\x40\xe8\x41\xe8\x42\xe8\x43\xe8\x44\xe8\x45\xe8\x46\xe8\x47\xe8\x48\xe8\x49\xe8\x4a\xe8\x4b\xe8\x4c\xe8\x4d\xe8\x4e\xe8\x4f\xe8\x50\xe8\x51\xe8\x52\xe8\x53\xe8\x54\xe8\x55\xe8\x56\xe8\x57\xe8\x58\xe8\x59\xe8\x5a\xe8\x5b\xe8\x5c\xe8\x5d\xe8\x5e\xe8\x5f\xe8\x60\xe8\x61\xe8\x62\xe8\x63\xe8\x64\xe8\x65\xe8\x66\xe8\x67\xe8\x68", /* 7480 */ "\xe8\x69\xe8\x6a\xe8\x6b\xe8\x6c\xe8\x6d\xe8\x6e\xe8\x6f\xe8\x70\xe8\x71\xe8\x72\xe8\x73\xe8\x74\xe8\x75\xe8\x76\xe8\x77\xe8\x78\xe8\x79\xe8\x7a\xe8\x7b\xe8\x7c\xe8\x7d\xe8\x7e\xe8\x7f\xe8\x80\xe8\x81\xe8\x82\xe8\x83\xe8\x84\xe8\x85\xe8\x86\xe8\x87\xe8\x88\xe8\x89\xe8\x8a\xe8\x8b\xe8\x8c\xe8\x8d\xe8\x8e\xe8\x8f\xe8\x90\xe8\x91\xe8\x92\xe8\x93\xe8\x94\xe8\x95\xe8\x96\xe8\x97\xe8\x98\xe8\x99\xe8\x9a\xe8\x9b\xe8\x9c\xe8\x9d\xe8\x9e\xe8\x9f\xe8\xa0\xe8\xa1\xe8\xa2\xe8\xa3\xe8\xa4\xe8\xa5\xe8\xa6\xe8\xa7\xe8\xa8\xe8\xa9\xe8\xaa\xe8\xab\xe8\xac\xe8\xad\xe8\xae\xe8\xaf\xe8\xb0\xe8\xb1\xe8\xb2\xe8\xb3\xe8\xb4\xe8\xb5\xe8\xb6\xe8\xb7\xe8\xb8\xe8\xb9\xe8\xba\xe8\xbb\xe8\xbc\xe8\xbd\xe8\xbe\xe8\xbf\xe8\xc0\xe8\xc1\xe8\xc2\xe8\xc3\xe8\xc4\xe8\xc5\xe8\xc6\xe8\xc7\xe8\xc8\xe8\xc9\xe8\xca\xe8\xcb\xe8\xcc\xe8\xcd\xe8\xce\xe8\xcf\xe8\xd0\xe8\xd1\xe8\xd2\xe8\xd3\xe8\xd4\xe8\xd5\xe8\xd6\xe8\xd7\xe8\xd8\xe8\xd9\xe8\xda\xe8\xdb\xe8\xdc\xe8\xdd\xe8\xde\xe8\xdf\xe8\xe0\xe8\xe1\xe8\xe2\xe8\xe3\xe8\xe4\xe8\xe5\xe8\xe6\xe8\xe7\x00\x00", /* 7500 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe8\xe8\xe8\xe9\xe8\xea\xe8\xeb\xe8\xec\xe8\xed\xe8\xee\xe8\xef\xe8\xf0\xe8\xf1\xe8\xf2\xe8\xf3\xe8\xf4\xe8\xf5\xe8\xf6\xe8\xf7\xe8\xf8\xe8\xf9\xe8\xfa\xe8\xfb\xe8\xfc\xe8\xfd\xe8\xfe\xe8\xff\xe9\x00\xe9\x01\xe9\x02\xe9\x03\xe9\x04\xe9\x05\xe9\x06\xe9\x07\xe9\x08\xe9\x09\xe9\x0a\xe9\x0b\xe9\x0c\xe9\x0d\xe9\x0e\xe9\x0f\xe9\x10\xe9\x11\xe9\x12\xe9\x13\xe9\x14\xe9\x15\xe9\x16\xe9\x17\xe9\x18\xe9\x19\xe9\x1a\xe9\x1b\xe9\x1c\xe9\x1d\xe9\x1e\xe9\x1f\xe9\x20\xe9\x21\xe9\x22\xe9\x23\xe9\x24\xe9\x25\xe9\x26", /* 7580 */ "\xe9\x27\xe9\x28\xe9\x29\xe9\x2a\xe9\x2b\xe9\x2c\xe9\x2d\xe9\x2e\xe9\x2f\xe9\x30\xe9\x31\xe9\x32\xe9\x33\xe9\x34\xe9\x35\xe9\x36\xe9\x37\xe9\x38\xe9\x39\xe9\x3a\xe9\x3b\xe9\x3c\xe9\x3d\xe9\x3e\xe9\x3f\xe9\x40\xe9\x41\xe9\x42\xe9\x43\xe9\x44\xe9\x45\xe9\x46\xe9\x47\xe9\x48\xe9\x49\xe9\x4a\xe9\x4b\xe9\x4c\xe9\x4d\xe9\x4e\xe9\x4f\xe9\x50\xe9\x51\xe9\x52\xe9\x53\xe9\x54\xe9\x55\xe9\x56\xe9\x57\xe9\x58\xe9\x59\xe9\x5a\xe9\x5b\xe9\x5c\xe9\x5d\xe9\x5e\xe9\x5f\xe9\x60\xe9\x61\xe9\x62\xe9\x63\xe9\x64\xe9\x65\xe9\x66\xe9\x67\xe9\x68\xe9\x69\xe9\x6a\xe9\x6b\xe9\x6c\xe9\x6d\xe9\x6e\xe9\x6f\xe9\x70\xe9\x71\xe9\x72\xe9\x73\xe9\x74\xe9\x75\xe9\x76\xe9\x77\xe9\x78\xe9\x79\xe9\x7a\xe9\x7b\xe9\x7c\xe9\x7d\xe9\x7e\xe9\x7f\xe9\x80\xe9\x81\xe9\x82\xe9\x83\xe9\x84\xe9\x85\xe9\x86\xe9\x87\xe9\x88\xe9\x89\xe9\x8a\xe9\x8b\xe9\x8c\xe9\x8d\xe9\x8e\xe9\x8f\xe9\x90\xe9\x91\xe9\x92\xe9\x93\xe9\x94\xe9\x95\xe9\x96\xe9\x97\xe9\x98\xe9\x99\xe9\x9a\xe9\x9b\xe9\x9c\xe9\x9d\xe9\x9e\xe9\x9f\xe9\xa0\xe9\xa1\xe9\xa2\xe9\xa3\xe9\xa4\xe9\xa5\x00\x00", /* 7600 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe9\xa6\xe9\xa7\xe9\xa8\xe9\xa9\xe9\xaa\xe9\xab\xe9\xac\xe9\xad\xe9\xae\xe9\xaf\xe9\xb0\xe9\xb1\xe9\xb2\xe9\xb3\xe9\xb4\xe9\xb5\xe9\xb6\xe9\xb7\xe9\xb8\xe9\xb9\xe9\xba\xe9\xbb\xe9\xbc\xe9\xbd\xe9\xbe\xe9\xbf\xe9\xc0\xe9\xc1\xe9\xc2\xe9\xc3\xe9\xc4\xe9\xc5\xe9\xc6\xe9\xc7\xe9\xc8\xe9\xc9\xe9\xca\xe9\xcb\xe9\xcc\xe9\xcd\xe9\xce\xe9\xcf\xe9\xd0\xe9\xd1\xe9\xd2\xe9\xd3\xe9\xd4\xe9\xd5\xe9\xd6\xe9\xd7\xe9\xd8\xe9\xd9\xe9\xda\xe9\xdb\xe9\xdc\xe9\xdd\xe9\xde\xe9\xdf\xe9\xe0\xe9\xe1\xe9\xe2\xe9\xe3\xe9\xe4", /* 7680 */ "\xe9\xe5\xe9\xe6\xe9\xe7\xe9\xe8\xe9\xe9\xe9\xea\xe9\xeb\xe9\xec\xe9\xed\xe9\xee\xe9\xef\xe9\xf0\xe9\xf1\xe9\xf2\xe9\xf3\xe9\xf4\xe9\xf5\xe9\xf6\xe9\xf7\xe9\xf8\xe9\xf9\xe9\xfa\xe9\xfb\xe9\xfc\xe9\xfd\xe9\xfe\xe9\xff\xea\x00\xea\x01\xea\x02\xea\x03\xea\x04\xea\x05\xea\x06\xea\x07\xea\x08\xea\x09\xea\x0a\xea\x0b\xea\x0c\xea\x0d\xea\x0e\xea\x0f\xea\x10\xea\x11\xea\x12\xea\x13\xea\x14\xea\x15\xea\x16\xea\x17\xea\x18\xea\x19\xea\x1a\xea\x1b\xea\x1c\xea\x1d\xea\x1e\xea\x1f\xea\x20\xea\x21\xea\x22\xea\x23\xea\x24\xea\x25\xea\x26\xea\x27\xea\x28\xea\x29\xea\x2a\xea\x2b\xea\x2c\xea\x2d\xea\x2e\xea\x2f\xea\x30\xea\x31\xea\x32\xea\x33\xea\x34\xea\x35\xea\x36\xea\x37\xea\x38\xea\x39\xea\x3a\xea\x3b\xea\x3c\xea\x3d\xea\x3e\xea\x3f\xea\x40\xea\x41\xea\x42\xea\x43\xea\x44\xea\x45\xea\x46\xea\x47\xea\x48\xea\x49\xea\x4a\xea\x4b\xea\x4c\xea\x4d\xea\x4e\xea\x4f\xea\x50\xea\x51\xea\x52\xea\x53\xea\x54\xea\x55\xea\x56\xea\x57\xea\x58\xea\x59\xea\x5a\xea\x5b\xea\x5c\xea\x5d\xea\x5e\xea\x5f\xea\x60\xea\x61\xea\x62\xea\x63\x00\x00", /* 7700 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xea\x64\xea\x65\xea\x66\xea\x67\xea\x68\xea\x69\xea\x6a\xea\x6b\xea\x6c\xea\x6d\xea\x6e\xea\x6f\xea\x70\xea\x71\xea\x72\xea\x73\xea\x74\xea\x75\xea\x76\xea\x77\xea\x78\xea\x79\xea\x7a\xea\x7b\xea\x7c\xea\x7d\xea\x7e\xea\x7f\xea\x80\xea\x81\xea\x82\xea\x83\xea\x84\xea\x85\xea\x86\xea\x87\xea\x88\xea\x89\xea\x8a\xea\x8b\xea\x8c\xea\x8d\xea\x8e\xea\x8f\xea\x90\xea\x91\xea\x92\xea\x93\xea\x94\xea\x95\xea\x96\xea\x97\xea\x98\xea\x99\xea\x9a\xea\x9b\xea\x9c\xea\x9d\xea\x9e\xea\x9f\xea\xa0\xea\xa1\xea\xa2", /* 7780 */ "\xea\xa3\xea\xa4\xea\xa5\xea\xa6\xea\xa7\xea\xa8\xea\xa9\xea\xaa\xea\xab\xea\xac\xea\xad\xea\xae\xea\xaf\xea\xb0\xea\xb1\xea\xb2\xea\xb3\xea\xb4\xea\xb5\xea\xb6\xea\xb7\xea\xb8\xea\xb9\xea\xba\xea\xbb\xea\xbc\xea\xbd\xea\xbe\xea\xbf\xea\xc0\xea\xc1\xea\xc2\xea\xc3\xea\xc4\xea\xc5\xea\xc6\xea\xc7\xea\xc8\xea\xc9\xea\xca\xea\xcb\xea\xcc\xea\xcd\xea\xce\xea\xcf\xea\xd0\xea\xd1\xea\xd2\xea\xd3\xea\xd4\xea\xd5\xea\xd6\xea\xd7\xea\xd8\xea\xd9\xea\xda\xea\xdb\xea\xdc\xea\xdd\xea\xde\xea\xdf\xea\xe0\xea\xe1\xea\xe2\xea\xe3\xea\xe4\xea\xe5\xea\xe6\xea\xe7\xea\xe8\xea\xe9\xea\xea\xea\xeb\xea\xec\xea\xed\xea\xee\xea\xef\xea\xf0\xea\xf1\xea\xf2\xea\xf3\xea\xf4\xea\xf5\xea\xf6\xea\xf7\xea\xf8\xea\xf9\xea\xfa\xea\xfb\xea\xfc\xea\xfd\xea\xfe\xea\xff\xeb\x00\xeb\x01\xeb\x02\xeb\x03\xeb\x04\xeb\x05\xeb\x06\xeb\x07\xeb\x08\xeb\x09\xeb\x0a\xeb\x0b\xeb\x0c\xeb\x0d\xeb\x0e\xeb\x0f\xeb\x10\xeb\x11\xeb\x12\xeb\x13\xeb\x14\xeb\x15\xeb\x16\xeb\x17\xeb\x18\xeb\x19\xeb\x1a\xeb\x1b\xeb\x1c\xeb\x1d\xeb\x1e\xeb\x1f\xeb\x20\xeb\x21\x00\x00", /* 7800 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xeb\x22\xeb\x23\xeb\x24\xeb\x25\xeb\x26\xeb\x27\xeb\x28\xeb\x29\xeb\x2a\xeb\x2b\xeb\x2c\xeb\x2d\xeb\x2e\xeb\x2f\xeb\x30\xeb\x31\xeb\x32\xeb\x33\xeb\x34\xeb\x35\xeb\x36\xeb\x37\xeb\x38\xeb\x39\xeb\x3a\xeb\x3b\xeb\x3c\xeb\x3d\xeb\x3e\xeb\x3f\xeb\x40\xeb\x41\xeb\x42\xeb\x43\xeb\x44\xeb\x45\xeb\x46\xeb\x47\xeb\x48\xeb\x49\xeb\x4a\xeb\x4b\xeb\x4c\xeb\x4d\xeb\x4e\xeb\x4f\xeb\x50\xeb\x51\xeb\x52\xeb\x53\xeb\x54\xeb\x55\xeb\x56\xeb\x57\xeb\x58\xeb\x59\xeb\x5a\xeb\x5b\xeb\x5c\xeb\x5d\xeb\x5e\xeb\x5f\xeb\x60", /* 7880 */ "\xeb\x61\xeb\x62\xeb\x63\xeb\x64\xeb\x65\xeb\x66\xeb\x67\xeb\x68\xeb\x69\xeb\x6a\xeb\x6b\xeb\x6c\xeb\x6d\xeb\x6e\xeb\x6f\xeb\x70\xeb\x71\xeb\x72\xeb\x73\xeb\x74\xeb\x75\xeb\x76\xeb\x77\xeb\x78\xeb\x79\xeb\x7a\xeb\x7b\xeb\x7c\xeb\x7d\xeb\x7e\xeb\x7f\xeb\x80\xeb\x81\xeb\x82\xeb\x83\xeb\x84\xeb\x85\xeb\x86\xeb\x87\xeb\x88\xeb\x89\xeb\x8a\xeb\x8b\xeb\x8c\xeb\x8d\xeb\x8e\xeb\x8f\xeb\x90\xeb\x91\xeb\x92\xeb\x93\xeb\x94\xeb\x95\xeb\x96\xeb\x97\xeb\x98\xeb\x99\xeb\x9a\xeb\x9b\xeb\x9c\xeb\x9d\xeb\x9e\xeb\x9f\xeb\xa0\xeb\xa1\xeb\xa2\xeb\xa3\xeb\xa4\xeb\xa5\xeb\xa6\xeb\xa7\xeb\xa8\xeb\xa9\xeb\xaa\xeb\xab\xeb\xac\xeb\xad\xeb\xae\xeb\xaf\xeb\xb0\xeb\xb1\xeb\xb2\xeb\xb3\xeb\xb4\xeb\xb5\xeb\xb6\xeb\xb7\xeb\xb8\xeb\xb9\xeb\xba\xeb\xbb\xeb\xbc\xeb\xbd\xeb\xbe\xeb\xbf\xeb\xc0\xeb\xc1\xeb\xc2\xeb\xc3\xeb\xc4\xeb\xc5\xeb\xc6\xeb\xc7\xeb\xc8\xeb\xc9\xeb\xca\xeb\xcb\xeb\xcc\xeb\xcd\xeb\xce\xeb\xcf\xeb\xd0\xeb\xd1\xeb\xd2\xeb\xd3\xeb\xd4\xeb\xd5\xeb\xd6\xeb\xd7\xeb\xd8\xeb\xd9\xeb\xda\xeb\xdb\xeb\xdc\xeb\xdd\xeb\xde\xeb\xdf\x00\x00", /* 7900 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xeb\xe0\xeb\xe1\xeb\xe2\xeb\xe3\xeb\xe4\xeb\xe5\xeb\xe6\xeb\xe7\xeb\xe8\xeb\xe9\xeb\xea\xeb\xeb\xeb\xec\xeb\xed\xeb\xee\xeb\xef\xeb\xf0\xeb\xf1\xeb\xf2\xeb\xf3\xeb\xf4\xeb\xf5\xeb\xf6\xeb\xf7\xeb\xf8\xeb\xf9\xeb\xfa\xeb\xfb\xeb\xfc\xeb\xfd\xeb\xfe\xeb\xff\xec\x00\xec\x01\xec\x02\xec\x03\xec\x04\xec\x05\xec\x06\xec\x07\xec\x08\xec\x09\xec\x0a\xec\x0b\xec\x0c\xec\x0d\xec\x0e\xec\x0f\xec\x10\xec\x11\xec\x12\xec\x13\xec\x14\xec\x15\xec\x16\xec\x17\xec\x18\xec\x19\xec\x1a\xec\x1b\xec\x1c\xec\x1d\xec\x1e", /* 7980 */ "\xec\x1f\xec\x20\xec\x21\xec\x22\xec\x23\xec\x24\xec\x25\xec\x26\xec\x27\xec\x28\xec\x29\xec\x2a\xec\x2b\xec\x2c\xec\x2d\xec\x2e\xec\x2f\xec\x30\xec\x31\xec\x32\xec\x33\xec\x34\xec\x35\xec\x36\xec\x37\xec\x38\xec\x39\xec\x3a\xec\x3b\xec\x3c\xec\x3d\xec\x3e\xec\x3f\xec\x40\xec\x41\xec\x42\xec\x43\xec\x44\xec\x45\xec\x46\xec\x47\xec\x48\xec\x49\xec\x4a\xec\x4b\xec\x4c\xec\x4d\xec\x4e\xec\x4f\xec\x50\xec\x51\xec\x52\xec\x53\xec\x54\xec\x55\xec\x56\xec\x57\xec\x58\xec\x59\xec\x5a\xec\x5b\xec\x5c\xec\x5d\xec\x5e\xec\x5f\xec\x60\xec\x61\xec\x62\xec\x63\xec\x64\xec\x65\xec\x66\xec\x67\xec\x68\xec\x69\xec\x6a\xec\x6b\xec\x6c\xec\x6d\xec\x6e\xec\x6f\xec\x70\xec\x71\xec\x72\xec\x73\xec\x74\xec\x75\xec\x76\xec\x77\xec\x78\xec\x79\xec\x7a\xec\x7b\xec\x7c\xec\x7d\xec\x7e\xec\x7f\xec\x80\xec\x81\xec\x82\xec\x83\xec\x84\xec\x85\xec\x86\xec\x87\xec\x88\xec\x89\xec\x8a\xec\x8b\xec\x8c\xec\x8d\xec\x8e\xec\x8f\xec\x90\xec\x91\xec\x92\xec\x93\xec\x94\xec\x95\xec\x96\xec\x97\xec\x98\xec\x99\xec\x9a\xec\x9b\xec\x9c\xec\x9d\x00\x00", /* 7a00 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xec\x9e\xec\x9f\xec\xa0\xec\xa1\xec\xa2\xec\xa3\xec\xa4\xec\xa5\xec\xa6\xec\xa7\xec\xa8\xec\xa9\xec\xaa\xec\xab\xec\xac\xec\xad\xec\xae\xec\xaf\xec\xb0\xec\xb1\xec\xb2\xec\xb3\xec\xb4\xec\xb5\xec\xb6\xec\xb7\xec\xb8\xec\xb9\xec\xba\xec\xbb\xec\xbc\xec\xbd\xec\xbe\xec\xbf\xec\xc0\xec\xc1\xec\xc2\xec\xc3\xec\xc4\xec\xc5\xec\xc6\xec\xc7\xec\xc8\xec\xc9\xec\xca\xec\xcb\xec\xcc\xec\xcd\xec\xce\xec\xcf\xec\xd0\xec\xd1\xec\xd2\xec\xd3\xec\xd4\xec\xd5\xec\xd6\xec\xd7\xec\xd8\xec\xd9\xec\xda\xec\xdb\xec\xdc", /* 7a80 */ "\xec\xdd\xec\xde\xec\xdf\xec\xe0\xec\xe1\xec\xe2\xec\xe3\xec\xe4\xec\xe5\xec\xe6\xec\xe7\xec\xe8\xec\xe9\xec\xea\xec\xeb\xec\xec\xec\xed\xec\xee\xec\xef\xec\xf0\xec\xf1\xec\xf2\xec\xf3\xec\xf4\xec\xf5\xec\xf6\xec\xf7\xec\xf8\xec\xf9\xec\xfa\xec\xfb\xec\xfc\xec\xfd\xec\xfe\xec\xff\xed\x00\xed\x01\xed\x02\xed\x03\xed\x04\xed\x05\xed\x06\xed\x07\xed\x08\xed\x09\xed\x0a\xed\x0b\xed\x0c\xed\x0d\xed\x0e\xed\x0f\xed\x10\xed\x11\xed\x12\xed\x13\xed\x14\xed\x15\xed\x16\xed\x17\xed\x18\xed\x19\xed\x1a\xed\x1b\xed\x1c\xed\x1d\xed\x1e\xed\x1f\xed\x20\xed\x21\xed\x22\xed\x23\xed\x24\xed\x25\xed\x26\xed\x27\xed\x28\xed\x29\xed\x2a\xed\x2b\xed\x2c\xed\x2d\xed\x2e\xed\x2f\xed\x30\xed\x31\xed\x32\xed\x33\xed\x34\xed\x35\xed\x36\xed\x37\xed\x38\xed\x39\xed\x3a\xed\x3b\xed\x3c\xed\x3d\xed\x3e\xed\x3f\xed\x40\xed\x41\xed\x42\xed\x43\xed\x44\xed\x45\xed\x46\xed\x47\xed\x48\xed\x49\xed\x4a\xed\x4b\xed\x4c\xed\x4d\xed\x4e\xed\x4f\xed\x50\xed\x51\xed\x52\xed\x53\xed\x54\xed\x55\xed\x56\xed\x57\xed\x58\xed\x59\xed\x5a\xed\x5b\x00\x00", /* 7b00 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xed\x5c\xed\x5d\xed\x5e\xed\x5f\xed\x60\xed\x61\xed\x62\xed\x63\xed\x64\xed\x65\xed\x66\xed\x67\xed\x68\xed\x69\xed\x6a\xed\x6b\xed\x6c\xed\x6d\xed\x6e\xed\x6f\xed\x70\xed\x71\xed\x72\xed\x73\xed\x74\xed\x75\xed\x76\xed\x77\xed\x78\xed\x79\xed\x7a\xed\x7b\xed\x7c\xed\x7d\xed\x7e\xed\x7f\xed\x80\xed\x81\xed\x82\xed\x83\xed\x84\xed\x85\xed\x86\xed\x87\xed\x88\xed\x89\xed\x8a\xed\x8b\xed\x8c\xed\x8d\xed\x8e\xed\x8f\xed\x90\xed\x91\xed\x92\xed\x93\xed\x94\xed\x95\xed\x96\xed\x97\xed\x98\xed\x99\xed\x9a", /* 7b80 */ "\xed\x9b\xed\x9c\xed\x9d\xed\x9e\xed\x9f\xed\xa0\xed\xa1\xed\xa2\xed\xa3\xed\xa4\xed\xa5\xed\xa6\xed\xa7\xed\xa8\xed\xa9\xed\xaa\xed\xab\xed\xac\xed\xad\xed\xae\xed\xaf\xed\xb0\xed\xb1\xed\xb2\xed\xb3\xed\xb4\xed\xb5\xed\xb6\xed\xb7\xed\xb8\xed\xb9\xed\xba\xed\xbb\xed\xbc\xed\xbd\xed\xbe\xed\xbf\xed\xc0\xed\xc1\xed\xc2\xed\xc3\xed\xc4\xed\xc5\xed\xc6\xed\xc7\xed\xc8\xed\xc9\xed\xca\xed\xcb\xed\xcc\xed\xcd\xed\xce\xed\xcf\xed\xd0\xed\xd1\xed\xd2\xed\xd3\xed\xd4\xed\xd5\xed\xd6\xed\xd7\xed\xd8\xed\xd9\xed\xda\xed\xdb\xed\xdc\xed\xdd\xed\xde\xed\xdf\xed\xe0\xed\xe1\xed\xe2\xed\xe3\xed\xe4\xed\xe5\xed\xe6\xed\xe7\xed\xe8\xed\xe9\xed\xea\xed\xeb\xed\xec\xed\xed\xed\xee\xed\xef\xed\xf0\xed\xf1\xed\xf2\xed\xf3\xed\xf4\xed\xf5\xed\xf6\xed\xf7\xed\xf8\xed\xf9\xed\xfa\xed\xfb\xed\xfc\xed\xfd\xed\xfe\xed\xff\xee\x00\xee\x01\xee\x02\xee\x03\xee\x04\xee\x05\xee\x06\xee\x07\xee\x08\xee\x09\xee\x0a\xee\x0b\xee\x0c\xee\x0d\xee\x0e\xee\x0f\xee\x10\xee\x11\xee\x12\xee\x13\xee\x14\xee\x15\xee\x16\xee\x17\xee\x18\xee\x19\x00\x00", /* 7c00 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xee\x1a\xee\x1b\xee\x1c\xee\x1d\xee\x1e\xee\x1f\xee\x20\xee\x21\xee\x22\xee\x23\xee\x24\xee\x25\xee\x26\xee\x27\xee\x28\xee\x29\xee\x2a\xee\x2b\xee\x2c\xee\x2d\xee\x2e\xee\x2f\xee\x30\xee\x31\xee\x32\xee\x33\xee\x34\xee\x35\xee\x36\xee\x37\xee\x38\xee\x39\xee\x3a\xee\x3b\xee\x3c\xee\x3d\xee\x3e\xee\x3f\xee\x40\xee\x41\xee\x42\xee\x43\xee\x44\xee\x45\xee\x46\xee\x47\xee\x48\xee\x49\xee\x4a\xee\x4b\xee\x4c\xee\x4d\xee\x4e\xee\x4f\xee\x50\xee\x51\xee\x52\xee\x53\xee\x54\xee\x55\xee\x56\xee\x57\xee\x58", /* 7c80 */ "\xee\x59\xee\x5a\xee\x5b\xee\x5c\xee\x5d\xee\x5e\xee\x5f\xee\x60\xee\x61\xee\x62\xee\x63\xee\x64\xee\x65\xee\x66\xee\x67\xee\x68\xee\x69\xee\x6a\xee\x6b\xee\x6c\xee\x6d\xee\x6e\xee\x6f\xee\x70\xee\x71\xee\x72\xee\x73\xee\x74\xee\x75\xee\x76\xee\x77\xee\x78\xee\x79\xee\x7a\xee\x7b\xee\x7c\xee\x7d\xee\x7e\xee\x7f\xee\x80\xee\x81\xee\x82\xee\x83\xee\x84\xee\x85\xee\x86\xee\x87\xee\x88\xee\x89\xee\x8a\xee\x8b\xee\x8c\xee\x8d\xee\x8e\xee\x8f\xee\x90\xee\x91\xee\x92\xee\x93\xee\x94\xee\x95\xee\x96\xee\x97\xee\x98\xee\x99\xee\x9a\xee\x9b\xee\x9c\xee\x9d\xee\x9e\xee\x9f\xee\xa0\xee\xa1\xee\xa2\xee\xa3\xee\xa4\xee\xa5\xee\xa6\xee\xa7\xee\xa8\xee\xa9\xee\xaa\xee\xab\xee\xac\xee\xad\xee\xae\xee\xaf\xee\xb0\xee\xb1\xee\xb2\xee\xb3\xee\xb4\xee\xb5\xee\xb6\xee\xb7\xee\xb8\xee\xb9\xee\xba\xee\xbb\xee\xbc\xee\xbd\xee\xbe\xee\xbf\xee\xc0\xee\xc1\xee\xc2\xee\xc3\xee\xc4\xee\xc5\xee\xc6\xee\xc7\xee\xc8\xee\xc9\xee\xca\xee\xcb\xee\xcc\xee\xcd\xee\xce\xee\xcf\xee\xd0\xee\xd1\xee\xd2\xee\xd3\xee\xd4\xee\xd5\xee\xd6\xee\xd7\x00\x00", /* 7d00 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xee\xd8\xee\xd9\xee\xda\xee\xdb\xee\xdc\xee\xdd\xee\xde\xee\xdf\xee\xe0\xee\xe1\xee\xe2\xee\xe3\xee\xe4\xee\xe5\xee\xe6\xee\xe7\xee\xe8\xee\xe9\xee\xea\xee\xeb\xee\xec\xee\xed\xee\xee\xee\xef\xee\xf0\xee\xf1\xee\xf2\xee\xf3\xee\xf4\xee\xf5\xee\xf6\xee\xf7\xee\xf8\xee\xf9\xee\xfa\xee\xfb\xee\xfc\xee\xfd\xee\xfe\xee\xff\xef\x00\xef\x01\xef\x02\xef\x03\xef\x04\xef\x05\xef\x06\xef\x07\xef\x08\xef\x09\xef\x0a\xef\x0b\xef\x0c\xef\x0d\xef\x0e\xef\x0f\xef\x10\xef\x11\xef\x12\xef\x13\xef\x14\xef\x15\xef\x16", /* 7d80 */ "\xef\x17\xef\x18\xef\x19\xef\x1a\xef\x1b\xef\x1c\xef\x1d\xef\x1e\xef\x1f\xef\x20\xef\x21\xef\x22\xef\x23\xef\x24\xef\x25\xef\x26\xef\x27\xef\x28\xef\x29\xef\x2a\xef\x2b\xef\x2c\xef\x2d\xef\x2e\xef\x2f\xef\x30\xef\x31\xef\x32\xef\x33\xef\x34\xef\x35\xef\x36\xef\x37\xef\x38\xef\x39\xef\x3a\xef\x3b\xef\x3c\xef\x3d\xef\x3e\xef\x3f\xef\x40\xef\x41\xef\x42\xef\x43\xef\x44\xef\x45\xef\x46\xef\x47\xef\x48\xef\x49\xef\x4a\xef\x4b\xef\x4c\xef\x4d\xef\x4e\xef\x4f\xef\x50\xef\x51\xef\x52\xef\x53\xef\x54\xef\x55\xef\x56\xef\x57\xef\x58\xef\x59\xef\x5a\xef\x5b\xef\x5c\xef\x5d\xef\x5e\xef\x5f\xef\x60\xef\x61\xef\x62\xef\x63\xef\x64\xef\x65\xef\x66\xef\x67\xef\x68\xef\x69\xef\x6a\xef\x6b\xef\x6c\xef\x6d\xef\x6e\xef\x6f\xef\x70\xef\x71\xef\x72\xef\x73\xef\x74\xef\x75\xef\x76\xef\x77\xef\x78\xef\x79\xef\x7a\xef\x7b\xef\x7c\xef\x7d\xef\x7e\xef\x7f\xef\x80\xef\x81\xef\x82\xef\x83\xef\x84\xef\x85\xef\x86\xef\x87\xef\x88\xef\x89\xef\x8a\xef\x8b\xef\x8c\xef\x8d\xef\x8e\xef\x8f\xef\x90\xef\x91\xef\x92\xef\x93\xef\x94\xef\x95\x00\x00", /* 7e00 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xef\x96\xef\x97\xef\x98\xef\x99\xef\x9a\xef\x9b\xef\x9c\xef\x9d\xef\x9e\xef\x9f\xef\xa0\xef\xa1\xef\xa2\xef\xa3\xef\xa4\xef\xa5\xef\xa6\xef\xa7\xef\xa8\xef\xa9\xef\xaa\xef\xab\xef\xac\xef\xad\xef\xae\xef\xaf\xef\xb0\xef\xb1\xef\xb2\xef\xb3\xef\xb4\xef\xb5\xef\xb6\xef\xb7\xef\xb8\xef\xb9\xef\xba\xef\xbb\xef\xbc\xef\xbd\xef\xbe\xef\xbf\xef\xc0\xef\xc1\xef\xc2\xef\xc3\xef\xc4\xef\xc5\xef\xc6\xef\xc7\xef\xc8\xef\xc9\xef\xca\xef\xcb\xef\xcc\xef\xcd\xef\xce\xef\xcf\xef\xd0\xef\xd1\xef\xd2\xef\xd3\xef\xd4", /* 7e80 */ "\xef\xd5\xef\xd6\xef\xd7\xef\xd8\xef\xd9\xef\xda\xef\xdb\xef\xdc\xef\xdd\xef\xde\xef\xdf\xef\xe0\xef\xe1\xef\xe2\xef\xe3\xef\xe4\xef\xe5\xef\xe6\xef\xe7\xef\xe8\xef\xe9\xef\xea\xef\xeb\xef\xec\xef\xed\xef\xee\xef\xef\xef\xf0\xef\xf1\xef\xf2\xef\xf3\xef\xf4\xef\xf5\xef\xf6\xef\xf7\xef\xf8\xef\xf9\xef\xfa\xef\xfb\xef\xfc\xef\xfd\xef\xfe\xef\xff\xf0\x00\xf0\x01\xf0\x02\xf0\x03\xf0\x04\xf0\x05\xf0\x06\xf0\x07\xf0\x08\xf0\x09\xf0\x0a\xf0\x0b\xf0\x0c\xf0\x0d\xf0\x0e\xf0\x0f\xf0\x10\xf0\x11\xf0\x12\xf0\x13\xf0\x14\xf0\x15\xf0\x16\xf0\x17\xf0\x18\xf0\x19\xf0\x1a\xf0\x1b\xf0\x1c\xf0\x1d\xf0\x1e\xf0\x1f\xf0\x20\xf0\x21\xf0\x22\xf0\x23\xf0\x24\xf0\x25\xf0\x26\xf0\x27\xf0\x28\xf0\x29\xf0\x2a\xf0\x2b\xf0\x2c\xf0\x2d\xf0\x2e\xf0\x2f\xf0\x30\xf0\x31\xf0\x32\xf0\x33\xf0\x34\xf0\x35\xf0\x36\xf0\x37\xf0\x38\xf0\x39\xf0\x3a\xf0\x3b\xf0\x3c\xf0\x3d\xf0\x3e\xf0\x3f\xf0\x40\xf0\x41\xf0\x42\xf0\x43\xf0\x44\xf0\x45\xf0\x46\xf0\x47\xf0\x48\xf0\x49\xf0\x4a\xf0\x4b\xf0\x4c\xf0\x4d\xf0\x4e\xf0\x4f\xf0\x50\xf0\x51\xf0\x52\xf0\x53\x00\x00", /* 7f00 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf0\x54\xf0\x55\xf0\x56\xf0\x57\xf0\x58\xf0\x59\xf0\x5a\xf0\x5b\xf0\x5c\xf0\x5d\xf0\x5e\xf0\x5f\xf0\x60\xf0\x61\xf0\x62\xf0\x63\xf0\x64\xf0\x65\xf0\x66\xf0\x67\xf0\x68\xf0\x69\xf0\x6a\xf0\x6b\xf0\x6c\xf0\x6d\xf0\x6e\xf0\x6f\xf0\x70\xf0\x71\xf0\x72\xf0\x73\xf0\x74\xf0\x75\xf0\x76\xf0\x77\xf0\x78\xf0\x79\xf0\x7a\xf0\x7b\xf0\x7c\xf0\x7d\xf0\x7e\xf0\x7f\xf0\x80\xf0\x81\xf0\x82\xf0\x83\xf0\x84\xf0\x85\xf0\x86\xf0\x87\xf0\x88\xf0\x89\xf0\x8a\xf0\x8b\xf0\x8c\xf0\x8d\xf0\x8e\xf0\x8f\xf0\x90\xf0\x91\xf0\x92", /* 7f80 */ "\xf0\x93\xf0\x94\xf0\x95\xf0\x96\xf0\x97\xf0\x98\xf0\x99\xf0\x9a\xf0\x9b\xf0\x9c\xf0\x9d\xf0\x9e\xf0\x9f\xf0\xa0\xf0\xa1\xf0\xa2\xf0\xa3\xf0\xa4\xf0\xa5\xf0\xa6\xf0\xa7\xf0\xa8\xf0\xa9\xf0\xaa\xf0\xab\xf0\xac\xf0\xad\xf0\xae\xf0\xaf\xf0\xb0\xf0\xb1\xf0\xb2\xf0\xb3\xf0\xb4\xf0\xb5\xf0\xb6\xf0\xb7\xf0\xb8\xf0\xb9\xf0\xba\xf0\xbb\xf0\xbc\xf0\xbd\xf0\xbe\xf0\xbf\xf0\xc0\xf0\xc1\xf0\xc2\xf0\xc3\xf0\xc4\xf0\xc5\xf0\xc6\xf0\xc7\xf0\xc8\xf0\xc9\xf0\xca\xf0\xcb\xf0\xcc\xf0\xcd\xf0\xce\xf0\xcf\xf0\xd0\xf0\xd1\xf0\xd2\xf0\xd3\xf0\xd4\xf0\xd5\xf0\xd6\xf0\xd7\xf0\xd8\xf0\xd9\xf0\xda\xf0\xdb\xf0\xdc\xf0\xdd\xf0\xde\xf0\xdf\xf0\xe0\xf0\xe1\xf0\xe2\xf0\xe3\xf0\xe4\xf0\xe5\xf0\xe6\xf0\xe7\xf0\xe8\xf0\xe9\xf0\xea\xf0\xeb\xf0\xec\xf0\xed\xf0\xee\xf0\xef\xf0\xf0\xf0\xf1\xf0\xf2\xf0\xf3\xf0\xf4\xf0\xf5\xf0\xf6\xf0\xf7\xf0\xf8\xf0\xf9\xf0\xfa\xf0\xfb\xf0\xfc\xf0\xfd\xf0\xfe\xf0\xff\xf1\x00\xf1\x01\xf1\x02\xf1\x03\xf1\x04\xf1\x05\xf1\x06\xf1\x07\xf1\x08\xf1\x09\xf1\x0a\xf1\x0b\xf1\x0c\xf1\x0d\xf1\x0e\xf1\x0f\xf1\x10\xf1\x11\x00\x00", /* 8000 */ NULL, /* 8080 */ NULL, /* 8100 */ NULL, /* 8180 */ NULL, /* 8200 */ NULL, /* 8280 */ NULL, /* 8300 */ NULL, /* 8380 */ NULL, /* 8400 */ NULL, /* 8480 */ NULL, /* 8500 */ NULL, /* 8580 */ NULL, /* 8600 */ NULL, /* 8680 */ NULL, /* 8700 */ NULL, /* 8780 */ NULL, /* 8800 */ NULL, /* 8880 */ NULL, /* 8900 */ NULL, /* 8980 */ NULL, /* 8a00 */ NULL, /* 8a80 */ NULL, /* 8b00 */ NULL, /* 8b80 */ NULL, /* 8c00 */ NULL, /* 8c80 */ NULL, /* 8d00 */ NULL, /* 8d80 */ NULL, /* 8e00 */ NULL, /* 8e80 */ NULL, /* 8f00 */ NULL, /* 8f80 */ NULL, /* 9000 */ NULL, /* 9080 */ NULL, /* 9100 */ NULL, /* 9180 */ NULL, /* 9200 */ NULL, /* 9280 */ NULL, /* 9300 */ NULL, /* 9380 */ NULL, /* 9400 */ NULL, /* 9480 */ NULL, /* 9500 */ NULL, /* 9580 */ NULL, /* 9600 */ NULL, /* 9680 */ NULL, /* 9700 */ NULL, /* 9780 */ NULL, /* 9800 */ NULL, /* 9880 */ NULL, /* 9900 */ NULL, /* 9980 */ NULL, /* 9a00 */ NULL, /* 9a80 */ NULL, /* 9b00 */ NULL, /* 9b80 */ NULL, /* 9c00 */ NULL, /* 9c80 */ NULL, /* 9d00 */ NULL, /* 9d80 */ NULL, /* 9e00 */ NULL, /* 9e80 */ NULL, /* 9f00 */ NULL, /* 9f80 */ NULL, /* a000 */ NULL, /* a080 */ NULL, /* a100 */ NULL, /* a180 */ NULL, /* a200 */ NULL, /* a280 */ NULL, /* a300 */ NULL, /* a380 */ NULL, /* a400 */ NULL, /* a480 */ NULL, /* a500 */ NULL, /* a580 */ NULL, /* a600 */ NULL, /* a680 */ NULL, /* a700 */ NULL, /* a780 */ NULL, /* a800 */ NULL, /* a880 */ NULL, /* a900 */ NULL, /* a980 */ NULL, /* aa00 */ NULL, /* aa80 */ NULL, /* ab00 */ NULL, /* ab80 */ NULL, /* ac00 */ NULL, /* ac80 */ NULL, /* ad00 */ NULL, /* ad80 */ NULL, /* ae00 */ NULL, /* ae80 */ NULL, /* af00 */ NULL, /* af80 */ NULL, /* b000 */ NULL, /* b080 */ NULL, /* b100 */ NULL, /* b180 */ NULL, /* b200 */ NULL, /* b280 */ NULL, /* b300 */ NULL, /* b380 */ NULL, /* b400 */ NULL, /* b480 */ NULL, /* b500 */ NULL, /* b580 */ NULL, /* b600 */ NULL, /* b680 */ NULL, /* b700 */ NULL, /* b780 */ NULL, /* b800 */ NULL, /* b880 */ NULL, /* b900 */ NULL, /* b980 */ NULL, /* ba00 */ NULL, /* ba80 */ NULL, /* bb00 */ NULL, /* bb80 */ NULL, /* bc00 */ NULL, /* bc80 */ NULL, /* bd00 */ NULL, /* bd80 */ NULL, /* be00 */ NULL, /* be80 */ NULL, /* bf00 */ NULL, /* bf80 */ NULL, /* c000 */ NULL, /* c080 */ NULL, /* c100 */ NULL, /* c180 */ NULL, /* c200 */ NULL, /* c280 */ NULL, /* c300 */ NULL, /* c380 */ NULL, /* c400 */ NULL, /* c480 */ NULL, /* c500 */ NULL, /* c580 */ NULL, /* c600 */ NULL, /* c680 */ NULL, /* c700 */ NULL, /* c780 */ NULL, /* c800 */ NULL, /* c880 */ NULL, /* c900 */ NULL, /* c980 */ NULL, /* ca00 */ NULL, /* ca80 */ NULL, /* cb00 */ NULL, /* cb80 */ NULL, /* cc00 */ NULL, /* cc80 */ NULL, /* cd00 */ NULL, /* cd80 */ NULL, /* ce00 */ NULL, /* ce80 */ NULL, /* cf00 */ NULL, /* cf80 */ NULL, /* d000 */ NULL, /* d080 */ NULL, /* d100 */ NULL, /* d180 */ NULL, /* d200 */ NULL, /* d280 */ NULL, /* d300 */ NULL, /* d380 */ NULL, /* d400 */ NULL, /* d480 */ NULL, /* d500 */ NULL, /* d580 */ NULL, /* d600 */ NULL, /* d680 */ NULL, /* d700 */ NULL, /* d780 */ NULL, /* d800 */ NULL, /* d880 */ NULL, /* d900 */ NULL, /* d980 */ NULL, /* da00 */ NULL, /* da80 */ NULL, /* db00 */ NULL, /* db80 */ NULL, /* dc00 */ NULL, /* dc80 */ NULL, /* dd00 */ NULL, /* dd80 */ NULL, /* de00 */ NULL, /* de80 */ NULL, /* df00 */ NULL, /* df80 */ NULL, /* e000 */ NULL, /* e080 */ NULL, /* e100 */ NULL, /* e180 */ NULL, /* e200 */ NULL, /* e280 */ NULL, /* e300 */ NULL, /* e380 */ NULL, /* e400 */ NULL, /* e480 */ NULL, /* e500 */ NULL, /* e580 */ NULL, /* e600 */ NULL, /* e680 */ NULL, /* e700 */ NULL, /* e780 */ NULL, /* e800 */ NULL, /* e880 */ NULL, /* e900 */ NULL, /* e980 */ NULL, /* ea00 */ NULL, /* ea80 */ NULL, /* eb00 */ NULL, /* eb80 */ NULL, /* ec00 */ NULL, /* ec80 */ NULL, /* ed00 */ NULL, /* ed80 */ NULL, /* ee00 */ NULL, /* ee80 */ NULL, /* ef00 */ NULL, /* ef80 */ NULL, /* f000 */ NULL, /* f080 */ NULL, /* f100 */ NULL, /* f180 */ NULL, /* f200 */ NULL, /* f280 */ NULL, /* f300 */ NULL, /* f380 */ NULL, /* f400 */ NULL, /* f480 */ NULL, /* f500 */ NULL, /* f580 */ NULL, /* f600 */ NULL, /* f680 */ NULL, /* f700 */ NULL, /* f780 */ NULL, /* f800 */ NULL, /* f880 */ NULL, /* f900 */ NULL, /* f980 */ NULL, /* fa00 */ NULL, /* fa80 */ NULL, /* fb00 */ NULL, /* fb80 */ NULL, /* fc00 */ NULL, /* fc80 */ NULL, /* fd00 */ NULL, /* fd80 */ NULL, /* fe00 */ NULL, /* fe80 */ NULL, /* ff00 */ NULL, /* ff80 */ NULL } }, { "cp935", "0x04380345" /* 1080, 837 */, /* Unicode to EBCDIC DBCS translation table for ibm-837_P100-2000 */ { /* 0000 */ NULL, /* 0080 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x45\x88\x00\x00\x00\x00\x44\x6a\x44\x60\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x44\xed\x44\x4b\x00\x00\x00\x00\x44\x50\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x44\x7a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x46\x44\x46\x42\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x46\x48\x46\x46\x46\x5a\x00\x00\x46\x4c\x46\x4a\x00\x00\x00\x00\x00\x00\x00\x00\x46\x50\x46\x4e\x00\x00\x00\x00\x00\x00\x44\x7b\x00\x00\x46\x54\x46\x52\x00\x00\x46\x59\x00\x00\x00\x00\x00\x00", /* 0100 */ "\x00\x00\x46\x41\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x46\x45\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x46\x47\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x46\x49\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x46\x4d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x46\x51\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 0180 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x46\x43\x00\x00\x46\x4b\x00\x00\x46\x4f\x00\x00\x46\x53\x00\x00\x46\x55\x00\x00\x46\x56\x00\x00\x46\x57\x00\x00\x46\x58\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 0200 */ NULL, /* 0280 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x45\x46\x00\x00\x45\x45\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 0300 */ NULL, /* 0380 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x41\x61\x41\x62\x41\x63\x41\x64\x41\x65\x41\x66\x41\x67\x41\x68\x41\x69\x41\x6a\x41\x6b\x41\x6c\x41\x6d\x41\x6e\x41\x6f\x41\x70\x41\x71\x00\x00\x41\x72\x41\x73\x41\x74\x41\x75\x41\x76\x41\x77\x41\x78\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x41\x41\x41\x42\x41\x43\x41\x44\x41\x45\x41\x46\x41\x47\x41\x48\x41\x49\x41\x4a\x41\x4b\x41\x4c\x41\x4d\x41\x4e\x41\x4f\x41\x50\x41\x51\x00\x00\x41\x52\x41\x53\x41\x54\x41\x55\x41\x56\x41\x57\x41\x58\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 0400 */ "\x00\x00\x41\xc6\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x41\xc0\x41\xc1\x41\xc2\x41\xc3\x41\xc4\x41\xc5\x41\xc7\x41\xc8\x41\xc9\x41\xca\x41\xcb\x41\xcc\x41\xcd\x41\xce\x41\xcf\x41\xd0\x41\xd1\x41\xd2\x41\xd3\x41\xd4\x41\xd5\x41\xd6\x41\xd7\x41\xd8\x41\xd9\x41\xda\x41\xdb\x41\xdc\x41\xdd\x41\xde\x41\xdf\x41\xe0\x41\x80\x41\x81\x41\x82\x41\x83\x41\x84\x41\x85\x41\x87\x41\x88\x41\x89\x41\x8a\x41\x8b\x41\x8c\x41\x8d\x41\x8e\x41\x8f\x41\x90\x41\x91\x41\x92\x41\x93\x41\x94\x41\x95\x41\x96\x41\x97\x41\x98\x41\x99\x41\x9a\x41\x9b\x41\x9c\x41\x9d\x41\x9e\x41\x9f\x41\xa0\x00\x00\x41\x86\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 0480 */ NULL, /* 0500 */ NULL, /* 0580 */ NULL, /* 0600 */ NULL, /* 0680 */ NULL, /* 0700 */ NULL, /* 0780 */ NULL, /* 0800 */ NULL, /* 0880 */ NULL, /* 0900 */ NULL, /* 0980 */ NULL, /* 0a00 */ NULL, /* 0a80 */ NULL, /* 0b00 */ NULL, /* 0b80 */ NULL, /* 0c00 */ NULL, /* 0c80 */ NULL, /* 0d00 */ NULL, /* 0d80 */ NULL, /* 0e00 */ NULL, /* 0e80 */ NULL, /* 0f00 */ NULL, /* 0f80 */ NULL, /* 1000 */ NULL, /* 1080 */ NULL, /* 1100 */ NULL, /* 1180 */ NULL, /* 1200 */ NULL, /* 1280 */ NULL, /* 1300 */ NULL, /* 1380 */ NULL, /* 1400 */ NULL, /* 1480 */ NULL, /* 1500 */ NULL, /* 1580 */ NULL, /* 1600 */ NULL, /* 1680 */ NULL, /* 1700 */ NULL, /* 1780 */ NULL, /* 1800 */ NULL, /* 1880 */ NULL, /* 1900 */ NULL, /* 1980 */ NULL, /* 1a00 */ NULL, /* 1a80 */ NULL, /* 1b00 */ NULL, /* 1b80 */ NULL, /* 1c00 */ NULL, /* 1c80 */ NULL, /* 1d00 */ NULL, /* 1d80 */ NULL, /* 1e00 */ NULL, /* 1e80 */ NULL, /* 1f00 */ NULL, /* 1f80 */ NULL, /* 2000 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x44\x5a\x00\x00\x00\x00\x00\x00\x00\x00\x44\x4a\x44\x7c\x00\x00\x44\x61\x44\x71\x00\x00\x00\x00\x44\x62\x44\x72\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x44\x7e\x44\x7f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x45\x8b\x00\x00\x44\xee\x44\xef\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x44\x6b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 2080 */ NULL, /* 2100 */ "\x00\x00\x00\x00\x00\x00\x44\x4e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x44\x6e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x44\x6f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x41\xf1\x41\xf2\x41\xf3\x41\xf4\x41\xf5\x41\xf6\x41\xf7\x41\xf8\x41\xf9\x41\xfa\x41\xfb\x41\xfc\x00\x00\x00\x00\x00\x00\x00\x00\x41\xb1\x41\xb2\x41\xb3\x41\xb4\x41\xb5\x41\xb6\x41\xb7\x41\xb8\x41\xb9\x41\xba\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 2180 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x44\xf1\x44\xf2\x44\xf0\x44\xf3\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 2200 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x45\x69\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x45\x66\x00\x00\x45\x65\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x45\x6b\x00\x00\x00\x00\x45\x77\x44\x4d\x00\x00\x45\x6e\x00\x00\x00\x00\x00\x00\x00\x00\x45\x6d\x00\x00\x45\x63\x45\x64\x45\x68\x45\x67\x45\x71\x00\x00\x00\x00\x45\x72\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x44\x68\x44\x78\x45\x62\x45\x6a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x45\x76\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x45\x75\x00\x00\x00\x00\x00\x00\x45\x74\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x44\x4c\x45\x73\x00\x00\x00\x00\x44\x67\x44\x77\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x45\x79\x45\x7a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 2280 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x45\x70\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x45\x6c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 2300 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x45\x6f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 2380 */ NULL, /* 2400 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x45\xe1\x45\xe2\x45\xe3\x45\xe4\x45\xe5\x45\xe6\x45\xe7\x45\xe8\x45\xe9\x45\xea\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x45\xc5\x45\xc6\x45\xc7\x45\xc8\x45\xc9\x45\xca\x45\xcb\x45\xcc\x45\xcd\x45\xce\x45\xcf\x45\xd0", /* 2480 */ "\x45\xd1\x45\xd2\x45\xd3\x45\xd4\x45\xd5\x45\xd6\x45\xd7\x45\xd8\x45\xb1\x45\xb2\x45\xb3\x45\xb4\x45\xb5\x45\xb6\x45\xb7\x45\xb8\x45\xb9\x45\xba\x45\xbb\x45\xbc\x45\xbd\x45\xbe\x45\xbf\x45\xc0\x45\xc1\x45\xc2\x45\xc3\x45\xc4\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 2500 */ "\x46\xa4\x46\xa5\x46\xa6\x46\xa7\x46\xa8\x46\xa9\x46\xaa\x46\xab\x46\xac\x46\xad\x46\xae\x46\xaf\x46\xb0\x46\xb1\x46\xb2\x46\xb3\x46\xb4\x46\xb5\x46\xb6\x46\xb7\x46\xb8\x46\xb9\x46\xba\x46\xbb\x46\xbc\x46\xbd\x46\xbe\x46\xbf\x46\xc0\x46\xc1\x46\xc2\x46\xc3\x46\xc4\x46\xc5\x46\xc6\x46\xc7\x46\xc8\x46\xc9\x46\xca\x46\xcb\x46\xcc\x46\xcd\x46\xce\x46\xcf\x46\xd0\x46\xd1\x46\xd2\x46\xd3\x46\xd4\x46\xd5\x46\xd6\x46\xd7\x46\xd8\x46\xd9\x46\xda\x46\xdb\x46\xdc\x46\xdd\x46\xde\x46\xdf\x46\xe0\x46\xe1\x46\xe2\x46\xe3\x46\xe4\x46\xe5\x46\xe6\x46\xe7\x46\xe8\x46\xe9\x46\xea\x46\xeb\x46\xec\x46\xed\x46\xee\x46\xef\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 2580 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x44\xea\x44\xe9\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x44\xe3\x44\xe2\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x44\xec\x44\xeb\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x44\xe8\x44\xe7\x00\x00\x00\x00\x00\x00\x44\xe0\x00\x00\x00\x00\x44\xe4\x44\xe1\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 2600 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x44\xe6\x44\xe5\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x44\x79\x00\x00\x44\x69\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 2680 */ NULL, /* 2700 */ NULL, /* 2780 */ NULL, /* 2800 */ NULL, /* 2880 */ NULL, /* 2900 */ NULL, /* 2980 */ NULL, /* 2a00 */ NULL, /* 2a80 */ NULL, /* 2b00 */ NULL, /* 2b80 */ NULL, /* 2c00 */ NULL, /* 2c80 */ NULL, /* 2d00 */ NULL, /* 2d80 */ NULL, /* 2e00 */ NULL, /* 2e80 */ NULL, /* 2f00 */ NULL, /* 2f80 */ NULL, /* 3000 */ "\x40\x40\x43\x44\x43\x41\x44\x5b\x00\x00\x44\x5d\x44\x5e\x44\x5f\x44\x64\x44\x74\x44\x65\x44\x75\x43\x42\x43\x43\x44\x42\x44\x43\x44\x66\x44\x76\x44\x6c\x44\x7d\x44\x63\x44\x73\x45\x5b\x45\x5c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x44\x47\x44\x81\x44\x48\x44\x82\x44\x49\x44\x83\x44\x51\x44\x84\x44\x52\x44\x85\x44\x86\x44\xc0\x44\x87\x44\xc1\x44\x88\x44\xc2\x44\x89\x44\xc3\x44\x8a\x44\xc4\x44\x8c\x44\xc5\x44\x8d\x44\xc6\x44\x8e\x44\xc7\x44\x8f\x44\xc8\x44\x90\x44\xc9\x44\x91\x44\xca\x44\x92\x44\xcb\x44\x56\x44\x93\x44\xcc\x44\x94\x44\xcd\x44\x95\x44\xce\x44\x96\x44\x97\x44\x98\x44\x99\x44\x9a\x44\x9d\x44\xcf\x44\xd5\x44\x9e\x44\xd0\x44\xd6\x44\x9f\x44\xd1\x44\xd7\x44\xa2\x44\xd2\x44\xd8\x44\xa3\x44\xd3\x44\xd9\x44\xa4\x44\xa5", /* 3080 */ "\x44\xa6\x44\xa7\x44\xa8\x44\x53\x44\xa9\x44\x54\x44\xaa\x44\x55\x44\xac\x44\xad\x44\xae\x44\xaf\x44\xba\x44\xbb\x44\x57\x44\xbc\x44\xda\x44\xdb\x44\x46\x44\xbd\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x43\xbe\x43\xbf\x44\xdc\x44\xdd\x00\x00\x00\x00\x43\x47\x43\x81\x43\x48\x43\x82\x43\x49\x43\x83\x43\x51\x43\x84\x43\x52\x43\x85\x43\x86\x43\xc0\x43\x87\x43\xc1\x43\x88\x43\xc2\x43\x89\x43\xc3\x43\x8a\x43\xc4\x43\x8c\x43\xc5\x43\x8d\x43\xc6\x43\x8e\x43\xc7\x43\x8f\x43\xc8\x43\x90\x43\xc9\x43\x91\x43\xca\x43\x92\x43\xcb\x43\x56\x43\x93\x43\xcc\x43\x94\x43\xcd\x43\x95\x43\xce\x43\x96\x43\x97\x43\x98\x43\x99\x43\x9a\x43\x9d\x43\xcf\x43\xd5\x43\x9e\x43\xd0\x43\xd6\x43\x9f\x43\xd1\x43\xd7\x43\xa2\x43\xd2\x43\xd8\x43\xa3\x43\xd3\x43\xd9\x43\xa4\x43\xa5\x43\xa6\x43\xa7\x43\xa8\x43\x53\x43\xa9\x43\x54\x43\xaa\x43\x55\x43\xac\x43\xad\x43\xae\x43\xaf\x43\xba\x43\xbb\x43\x57\x43\xbc\x43\xda\x43\xdb\x43\x46\x43\xbd\x43\xd4\x43\x59\x43\x5a\x00\x00\x00\x00\x00\x00\x00\x00\x43\x45\x43\x58\x43\xdc\x43\xdd\x00\x00", /* 3100 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x46\x65\x46\x66\x46\x67\x46\x68\x46\x69\x46\x6a\x46\x6b\x46\x6c\x46\x6d\x46\x6e\x46\x6f\x46\x70\x46\x71\x46\x72\x46\x73\x46\x74\x46\x75\x46\x76\x46\x77\x46\x78\x46\x79\x46\x7a\x46\x7b\x46\x7c\x46\x7d\x46\x7e\x46\x7f\x46\x80\x46\x81\x46\x82\x46\x83\x46\x84\x46\x85\x46\x86\x46\x87\x46\x88\x46\x89\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 3180 */ NULL, /* 3200 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x45\xf1\x45\xf2\x45\xf3\x45\xf4\x45\xf5\x45\xf6\x45\xf7\x45\xf8\x45\xf9\x45\xfa\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x44\x6d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 3280 */ NULL, /* 3300 */ NULL, /* 3380 */ NULL, /* 3400 */ NULL, /* 3480 */ NULL, /* 3500 */ NULL, /* 3580 */ NULL, /* 3600 */ NULL, /* 3680 */ NULL, /* 3700 */ NULL, /* 3780 */ NULL, /* 3800 */ NULL, /* 3880 */ NULL, /* 3900 */ NULL, /* 3980 */ NULL, /* 3a00 */ NULL, /* 3a80 */ NULL, /* 3b00 */ NULL, /* 3b80 */ NULL, /* 3c00 */ NULL, /* 3c80 */ NULL, /* 3d00 */ NULL, /* 3d80 */ NULL, /* 3e00 */ NULL, /* 3e80 */ NULL, /* 3f00 */ NULL, /* 3f80 */ NULL, /* 4000 */ NULL, /* 4080 */ NULL, /* 4100 */ NULL, /* 4180 */ NULL, /* 4200 */ NULL, /* 4280 */ NULL, /* 4300 */ NULL, /* 4380 */ NULL, /* 4400 */ NULL, /* 4480 */ NULL, /* 4500 */ NULL, /* 4580 */ NULL, /* 4600 */ NULL, /* 4680 */ NULL, /* 4700 */ NULL, /* 4780 */ NULL, /* 4800 */ NULL, /* 4880 */ NULL, /* 4900 */ NULL, /* 4980 */ NULL, /* 4a00 */ NULL, /* 4a80 */ NULL, /* 4b00 */ NULL, /* 4b80 */ NULL, /* 4c00 */ NULL, /* 4c80 */ NULL, /* 4d00 */ NULL, /* 4d80 */ NULL, /* 4e00 */ "\x59\xba\x4b\xa0\x00\x00\x53\xde\x00\x00\x00\x00\x00\x00\x57\x93\x5b\x69\x54\xfc\x55\x6f\x58\x62\x5c\xa1\x49\xba\x5a\x8c\x00\x00\x5c\xa3\x4a\x94\x00\x00\x5c\x48\x54\x72\x5c\xa6\x55\xbf\x00\x00\x54\x91\x49\x9c\x59\xb4\x4a\xd3\x4b\xaa\x56\x5f\x5c\xa8\x00\x00\x00\x00\x00\x00\x4b\xa9\x00\x00\x51\x5d\x59\x6f\x00\x00\x55\x45\x5c\xac\x00\x00\x4c\xf5\x59\x5e\x62\x7c\x5b\xcf\x00\x00\x00\x00\x4c\x82\x00\x00\x4a\xad\x00\x00\x51\x79\x00\x00\x5c\xbb\x00\x00\x57\x89\x4b\x44\x57\xa9\x5b\xf6\x00\x00\x50\xf5\x4f\xd8\x5c\xae\x00\x00\x00\x00\x00\x00\x52\xca\x00\x00\x4f\xc2\x00\x00\x5c\xb0\x52\x54\x59\xe4\x00\x00\x5b\xad\x57\xd9\x5b\x47\x4d\xf4\x4c\x46\x50\xd5\x00\x00\x53\xb8\x53\x72\x54\x67\x00\x00\x4d\x74\x00\x00\x4a\x6b\x59\xd1\x00\x00\x00\x00\x5c\xbe\x4f\xc4\x53\xf1\x59\xb1\x58\x50\x58\x88\x00\x00\x00\x00\x00\x00\x00\x00\x55\xe8\x00\x00\x00\x00\x5c\xbf\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x51\xf1\x51\xd1\x00\x00\x54\xe8\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x54\x4c\x00\x00", /* 4e80 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x51\x6b\x00\x00\x5a\x89\x5b\x9a\x00\x00\x55\xc1\x4b\xfd\x5c\xa0\x5a\x7a\x50\x98\x00\x00\x5a\xc5\x4e\x45\x5c\xc0\x57\xe4\x4f\xad\x00\x00\x00\x00\x5c\xa7\x00\x00\x59\x67\x58\xa8\x00\x00\x00\x00\x00\x00\x5c\xbc\x5d\x90\x57\x97\x50\x5a\x00\x00\x4f\x5b\x4d\xa4\x59\xdf\x49\xf9\x4d\xdf\x52\xb5\x00\x00\x58\x8e\x4f\xa8\x57\x44\x51\x61\x00\x00\x00\x00\x00\x00\x54\x77\x5d\x92\x00\x00\x5d\x95\x00\x00\x00\x00\x00\x00\x00\x00\x54\xca\x5c\xe8\x00\x00\x00\x00\x00\x00\x59\xd9\x55\xb1\x54\xc9\x5c\xeb\x5c\xe9\x5c\xc5\x4f\x97\x53\xcc\x4a\x91\x00\x00\x5c\xea\x4f\x92\x4f\x8a\x00\x00\x54\xd3\x4a\xd2\x00\x00\x00\x00\x51\xd7\x00\x00\x49\xd5\x5c\x70\x55\xca\x56\x9c\x5b\x6c\x4c\xb5\x58\x69\x00\x00\x00\x00\x00\x00\x5d\x7a\x5c\xef\x54\x4a\x00\x00\x5c\xed\x00\x00\x4a\xf9\x51\x8f\x59\xd3\x00\x00\x00\x00\x5c\xec\x00\x00\x59\xc6\x5c\xee\x52\x67\x00\x00\x00\x00\x00\x00\x59\x97\x00\x00\x5b\xd8\x5c\xf1\x00\x00\x5c\xf4\x4e\xfd\x4e\xda\x00\x00\x00\x00\x00\x00\x54\xcd\x00\x00\x4c\x7d\x00\x00\x4c\x62", /* 4f00 */ "\x00\x00\x53\xf2\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5c\xf7\x59\xc0\x00\x00\x00\x00\x57\xe8\x4e\xbe\x4c\x9d\x4c\x45\x58\xdc\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5b\xd9\x5a\x65\x4e\x90\x4e\x82\x5c\xf0\x00\x00\x00\x00\x55\x41\x57\xaf\x4a\xaa\x00\x00\x5c\xf2\x00\x00\x55\x6b\x5c\xf5\x51\xd6\x5c\xf6\x00\x00\x00\x00\x57\xb0\x5c\xf8\x00\x00\x00\x00\x00\x00\x49\xad\x4d\x60\x00\x00\x5d\x43\x00\x00\x48\xe8\x00\x00\x51\x87\x00\x00\x55\x8d\x00\x00\x56\x65\x00\x00\x56\x66\x5d\x44\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4b\x89\x00\x00\x00\x00\x4b\x4b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x57\xba\x4b\x6d\x5c\x41\x5c\x95\x5a\x73\x00\x00\x56\xe4\x00\x00\x4d\xcd\x00\x00\x5d\x42\x5d\x7c\x5a\x81\x5c\xfc\x4c\x91\x5c\x98\x5c\xfd\x5c\xf9\x5d\x41\x52\xe2\x00\x00\x00\x00\x5a\x56\x5c\xf3\x5d\x7d\x00\x00\x5c\xfa\x00\x00\x53\x86\x00\x00\x00\x00\x50\xcf\x00\x00\x00\x00\x59\x91\x48\xda\x00\x00\x00\x00\x4e\xd0\x5d\x46\x00\x00\x5d\x45\x00\x00\x00\x00\x00\x00\x00\x00\x5d\x4c\x5d\x4e\x00\x00\x5d\x4b\x55\xb8", /* 4f80 */ "\x00\x00\x00\x00\x00\x00\x5d\x49\x5b\xb5\x00\x00\x00\x00\x00\x00\x4a\x7e\x5d\x48\x00\x00\x50\xfc\x00\x00\x55\xcb\x00\x00\x5d\x4a\x00\x00\x5d\x47\x00\x00\x00\x00\x5d\x50\x00\x00\x00\x00\x4b\xb0\x00\x00\x00\x00\x00\x00\x4d\x49\x00\x00\x59\xbf\x00\x00\x00\x00\x58\x60\x00\x00\x00\x00\x51\xc1\x00\x00\x4f\x64\x5b\x8d\x49\xdf\x54\x68\x50\x8c\x5d\x4d\x00\x00\x5d\x4f\x00\x00\x57\xe9\x4d\xed\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x54\x76\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x49\x84\x00\x00\x00\x00\x00\x00\x4a\xd8\x4b\xec\x5d\x54\x00\x00\x00\x00\x00\x00\x00\x00\x50\x41\x00\x00\x00\x00\x00\x00\x5d\x7e\x54\x6e\x50\xfd\x5d\x58\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x56\x77\x4c\x9e\x00\x00\x5d\x55\x00\x00\x5d\x57\x49\x43\x5a\x82\x5d\x59\x00\x00\x58\xc4\x00\x00\x5d\x56\x00\x00\x00\x00\x5d\x51\x00\x00\x5d\x52\x51\x49\x5d\x53\x00\x00\x00\x00\x4e\xf2\x58\xdd\x4c\xa8\x00\x00\x4f\xe2\x00\x00\x5d\x5d\x00\x00\x00\x00\x00\x00\x00\x00\x5d\x5a\x00\x00\x48\xb2\x00\x00\x00\x00\x00\x00\x5d\x62\x00\x00", /* 5000 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5d\x64\x49\x56\x00\x00\x5d\x5f\x00\x00\x00\x00\x4b\x59\x00\x00\x4f\xf2\x00\x00\x00\x00\x00\x00\x56\xc7\x4d\xf1\x59\xcf\x00\x00\x5d\x63\x00\x00\x00\x00\x4f\x89\x00\x00\x4a\x4b\x00\x00\x00\x00\x00\x00\x5d\x65\x4f\xea\x00\x00\x5d\x66\x5d\x5b\x52\xde\x00\x00\x5d\x5e\x5d\x61\x5d\x60\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5b\x4e\x00\x00\x5b\xb4\x00\x00\x54\x84\x00\x00\x00\x00\x00\x00\x00\x00\x5d\x68\x00\x00\x00\x00\x00\x00\x4e\xd8\x5d\x6a\x00\x00\x00\x00\x00\x00\x5d\x5c\x00\x00\x5d\x6b\x53\xaa\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5d\x69\x00\x00\x00\x00\x00\x00\x00\x00\x5c\x97\x00\x00\x57\x43\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4f\x41\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5d\x6c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x53\x5c\x57\x55\x00\x00\x00\x00\x00\x00\x5d\x6d\x00\x00\x00\x00\x5d\x67\x4a\x45", /* 5080 */ "\x50\x9f\x00\x00\x00\x00\x00\x00\x00\x00\x4c\xb4\x00\x00\x00\x00\x50\xfb\x00\x00\x00\x00\x00\x00\x00\x00\x48\xf7\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4a\xf5\x00\x00\x5d\x6e\x00\x00\x5d\x6f\x4a\xa1\x5d\x70\x00\x00\x00\x00\x4a\xde\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x48\xc0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5d\x71\x55\x55\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x58\x92\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5d\x72\x00\x00\x00\x00\x00\x00\x51\x65\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5d\x76\x55\x4e\x00\x00\x00\x00\x00\x00\x00\x00\x5d\x75\x5d\x74\x5d\x77\x00\x00\x00\x00\x00\x00\x00\x00\x56\x7b\x00\x00\x4f\x49\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x53\xa6\x00\x00\x00\x00\x00\x00\x00\x00", /* 5100 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5d\x73\x5d\x78\x00\x00\x00\x00\x00\x00\x5d\x79\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x54\xe4\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x50\xdb\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4b\xf8\x5c\xa2\x5a\xc9\x00\x00\x5a\xa9\x58\xd5\x4a\x85\x5b\x77\x00\x00\x58\x68\x4d\x83\x00\x00\x50\x6b\x00\x00\x52\x83\x00\x00\x00\x00\x00\x00\x4b\xd1\x00\x00\x00\x00\x57\x63\x5d\x8f\x5d\x91\x00\x00\x00\x00\x00\x00\x4b\x53\x00\x00\x4b\xb4\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4f\xa3\x00\x00\x00\x00\x54\xea\x00\x00\x00\x00\x54\xaa\x00\x00\x00\x00\x48\xca\x4d\x4b\x51\x9a\x5d\x83\x00\x00\x50\xbb\x4d\x52\x00\x00\x4d\x78\x58\xca\x49\x99\x53\xe3\x4f\xde\x4b\x85\x5c\x68\x00\x00\x59\x99\x4e\xe5\x55\xdd\x00\x00\x00\x00", /* 5180 */ "\x4e\xbc\x5d\x87\x5c\xe6\x00\x00\x00\x00\x52\xd9\x00\x00\x00\x00\x4c\xd3\x54\xbc\x00\x00\x00\x00\x49\xe0\x5a\xd8\x00\x00\x00\x00\x00\x00\x00\x00\x52\x50\x00\x00\x00\x00\x52\x82\x5d\xa1\x54\xde\x00\x00\x58\xb3\x00\x00\x4f\xfb\x53\x49\x00\x00\x00\x00\x00\x00\x4d\x7a\x00\x00\x5d\xa2\x00\x00\x5a\xa8\x5d\xa3\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5d\x9c\x4b\xab\x00\x00\x00\x00\x4c\x8c\x49\x9a\x5d\x9d\x4a\x86\x4f\xf5\x00\x00\x50\x97\x59\xb0\x50\xe3\x00\x00\x00\x00\x00\x00\x4b\xb2\x5d\x9f\x5d\x9e\x00\x00\x00\x00\x4f\xba\x00\x00\x00\x00\x00\x00\x53\xdf\x00\x00\x5c\x5c\x5d\xa0\x00\x00\x51\x59\x00\x00\x4b\x93\x51\x89\x00\x00\x00\x00\x4e\xf4\x00\x00\x4a\xd4\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x51\x7d\x00\x00\x52\xfc\x00\x00\x00\x00\x4e\xb7\x4c\x52\x00\x00\x00\x00\x4c\x90\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5d\x8d\x00\x00\x53\xbd\x00\x00\x50\x4d\x4e\x6b\x00\x00\x00\x00\x4b\x6a\x00\x00\x5e\x69\x58\xd6\x00\x00\x57\x59\x48\xbb\x4a\x97\x4e\x98\x5e\x6a\x4d\xae\x00\x00\x5a\xe3", /* 5200 */ "\x4b\x56\x4b\x94\x5c\xd5\x54\xcf\x00\x00\x00\x00\x4c\x76\x54\x70\x5c\xd6\x00\x00\x50\x4f\x00\x00\x00\x00\x5e\x5b\x5c\xd7\x00\x00\x00\x00\x58\xcb\x4e\x4e\x00\x00\x00\x00\x00\x00\x66\x5e\x51\x70\x51\x96\x5a\xf1\x4c\xd4\x4a\xb3\x00\x00\x4a\x96\x00\x00\x00\x00\x55\x5e\x00\x00\x00\x00\x00\x00\x53\x70\x00\x00\x00\x00\x00\x00\x53\x79\x50\xfa\x00\x00\x49\x91\x00\x00\x5c\xd8\x4d\x6e\x00\x00\x4b\x5d\x00\x00\x00\x00\x5c\xd9\x00\x00\x00\x00\x5b\xc5\x56\x42\x54\xae\x55\x52\x4a\xcb\x50\x6c\x00\x00\x4d\x95\x00\x00\x5c\xda\x5c\xdb\x4b\xe6\x4e\xc0\x56\xe9\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x58\x98\x00\x00\x5c\xdc\x54\x50\x00\x00\x00\x00\x4d\x70\x4f\x43\x00\x00\x00\x00\x56\xdd\x00\x00\x53\xc9\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5c\xdf\x00\x00\x5c\xdd\x00\x00\x00\x00\x5c\xde\x00\x00\x00\x00\x00\x00\x48\xfd\x00\x00\x4f\xe6\x00\x00\x55\xa2\x4e\xf3\x00\x00\x00\x00\x00\x00\x00\x00\x4c\xb0\x00\x00\x00\x00\x4c\xed\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5c\xe1\x00\x00\x4f\x6b", /* 5280 */ "\x00\x00\x5c\xe3\x5c\xe2\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x53\x9d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5c\xe4\x00\x00\x00\x00\x5c\xe5\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x51\x46\x00\x00\x54\xaf\x48\xeb\x4d\x46\x4e\xd2\x57\xf0\x5e\x5d\x51\x73\x00\x00\x00\x00\x00\x00\x00\x00\x4b\xae\x5b\xf9\x53\x4c\x4f\x79\x5e\x5e\x5e\x5f\x00\x00\x00\x00\x00\x00\x50\xf7\x4f\xa1\x50\xcc\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5e\x60\x55\xc5\x00\x00\x00\x00\x00\x00\x49\xa9\x00\x00\x00\x00\x00\x00\x5a\x62\x00\x00\x52\x84\x00\x00\x59\x4b\x00\x00\x00\x00\x00\x00\x00\x00\x5e\x62\x00\x00\x50\xd4\x00\x00\x00\x00\x00\x00\x5e\x63\x00\x00\x50\x51\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x52\xbb\x00\x00\x00\x00\x00\x00\x00\x00\x54\x7a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5e\x64\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5d\x89\x55\x77\x00\x00\x00\x00\x00\x00\x4d\x54\x57\xef", /* 5300 */ "\x5a\xc7\x00\x00\x00\x00\x00\x00\x00\x00\x48\xfb\x4a\xd1\x00\x00\x58\xd8\x00\x00\x00\x00\x00\x00\x00\x00\x5d\x8a\x00\x00\x5f\xca\x5d\x8c\x00\x00\x00\x00\x00\x00\x00\x00\x5c\xaf\x4e\x4f\x49\x51\x00\x00\x4a\x77\x5c\xcd\x00\x00\x00\x00\x5a\xd0\x00\x00\x00\x00\x4f\x53\x50\x90\x00\x00\x58\x5b\x00\x00\x00\x00\x5c\xcf\x00\x00\x00\x00\x00\x00\x4c\x6b\x00\x00\x00\x00\x00\x00\x5c\xd0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x53\xa4\x54\x99\x59\xbc\x00\x00\x00\x00\x5c\xd1\x52\xe3\x00\x00\x55\xad\x00\x00\x54\x47\x00\x00\x5c\xa5\x00\x00\x55\x9e\x57\xe6\x4e\x7c\x48\xea\x00\x00\x00\x00\x00\x00\x4e\x4a\x58\xac\x00\x00\x49\x50\x5c\x85\x5c\x5f\x00\x00\x4b\x45\x51\xf3\x52\xce\x00\x00\x00\x00\x49\xa8\x00\x00\x49\xb6\x00\x00\x49\x86\x60\x52\x5b\x5c\x50\x48\x51\xab\x5c\xd4\x51\xb0\x00\x00\x5c\xd3\x57\xd3\x00\x00\x5d\xdf\x00\x00\x57\xbf\x00\x00\x00\x00\x5c\xb3\x52\x4e\x5a\x41\x57\xa2\x00\x00\x4e\xb3\x54\xb3\x51\xd0\x00\x00\x4f\xec\x58\xb5\x00\x00\x5d\xe0\x00\x00\x00\x00\x00\x00\x00\x00\x54\x85", /* 5380 */ "\x00\x00\x00\x00\x4a\x47\x00\x00\x4b\xf1\x56\xfb\x50\xf9\x00\x00\x00\x00\x50\xf6\x00\x00\x59\x59\x59\x82\x5c\xc6\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x49\xdd\x00\x00\x00\x00\x50\xe4\x00\x00\x4d\xf0\x00\x00\x00\x00\x5c\xc7\x00\x00\x5a\xac\x00\x00\x00\x00\x58\x82\x5c\xc8\x00\x00\x5c\xc9\x58\x63\x00\x00\x4a\x99\x4f\xc6\x00\x00\x00\x00\x00\x00\x00\x00\x5c\xca\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5e\x6c\x00\x00\x00\x00\x00\x00\x00\x00\x54\xa4\x00\x00\x00\x00\x00\x00\x58\x78\x00\x00\x54\xfd\x49\xcd\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5a\x76\x49\xe5\x4e\xaf\x5a\x71\x56\x4b\x4c\x54\x00\x00\x00\x00\x00\x00\x4c\x42\x00\x00\x00\x00\x55\xe4\x00\x00\x54\xa0\x55\xdb\x49\x85\x58\xef\x00\x00\x53\x71\x00\x00\x00\x00\x00\x00\x5e\x65\x4b\x9f\x00\x00\x00\x00\x50\x7a\x4d\x65\x4f\xe3\x51\x8e\x00\x00\x60\x56\x60\x55\x5b\xba\x4f\x70\x5b\x79\x48\xc7\x4b\xa2\x50\x69\x56\xa7\x60\x53\x55\xb6\x5a\x72\x00\x00\x5c\xce\x59\xb5\x4d\xc4\x56\x5e\x56\xbd\x00\x00\x60\x57\x4b\x91\x60\x54\x00\x00\x00\x00", /* 5400 */ "\x00\x00\x5a\x96\x00\x00\x4a\x74\x4c\xf6\x00\x00\x60\x5a\x00\x00\x4d\xce\x4e\xa9\x4b\x96\x00\x00\x57\x4c\x52\x9c\x4d\xf2\x50\xf3\x57\x62\x58\x93\x60\x58\x58\x65\x00\x00\x51\xbf\x60\x59\x51\xef\x00\x00\x00\x00\x00\x00\x4f\xfc\x00\x00\x51\x7f\x57\x6c\x59\xf6\x4c\x6d\x60\x61\x00\x00\x60\x64\x00\x00\x00\x00\x4c\x92\x48\xc8\x4b\xd5\x4c\x74\x00\x00\x4d\xab\x56\xfc\x50\x74\x56\x51\x53\xf3\x00\x00\x5b\xa7\x60\x65\x00\x00\x57\xe1\x4a\x53\x00\x00\x00\x00\x57\xfb\x4a\xb4\x00\x00\x57\xc6\x4d\xef\x00\x00\x57\xe0\x00\x00\x59\x5d\x00\x00\x00\x00\x60\x60\x00\x00\x00\x00\x4a\xf3\x00\x00\x4a\x6a\x00\x00\x4c\xe5\x60\x5b\x00\x00\x00\x00\x00\x00\x00\x00\x52\xc4\x00\x00\x60\x5c\x60\x5d\x60\x5e\x53\x5b\x60\x5f\x60\x62\x5a\xb0\x60\x63\x00\x00\x54\x5a\x57\xd7\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x52\xd7\x00\x00\x60\x6a\x00\x00\x60\x6f\x00\x00\x5b\xdb\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x60\x69\x60\x7a\x57\xb5\x00\x00\x4d\xc6\x60\x6e\x60\x68\x53\x7e\x00\x00\x00\x00\x55\x8c\x4d\xf3\x52\x9d\x00\x00\x00\x00", /* 5480 */ "\x4f\xd6\x00\x00\x60\x66\x00\x00\x60\x6d\x00\x00\x53\x78\x00\x00\x00\x00\x00\x00\x00\x00\x5b\x46\x4d\xcc\x00\x00\x4f\xcb\x5a\x5d\x4c\xbf\x00\x00\x5b\xe3\x00\x00\x60\x67\x4d\x5e\x50\x47\x00\x00\x00\x00\x51\x9d\x60\x6b\x60\x6c\x00\x00\x60\x70\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x60\x7b\x60\x86\x00\x00\x60\x77\x60\x76\x5c\x69\x60\x84\x60\x85\x63\x8c\x59\xa6\x60\x72\x00\x00\x50\x49\x00\x00\x5a\xda\x00\x00\x50\x68\x60\x74\x00\x00\x00\x00\x00\x00\x58\x6c\x00\x00\x00\x00\x60\x7d\x00\x00\x59\x6a\x00\x00\x60\x7e\x48\xa6\x53\xb6\x60\x73\x00\x00\x4d\xe4\x00\x00\x4b\xde\x57\x7b\x4d\x9f\x5a\xd4\x00\x00\x00\x00\x60\x7f\x58\x8d\x48\xa4\x60\x88\x60\x71\x59\x66\x60\x75\x60\x78\x60\x79\x60\x7c\x00\x00\x4e\x49\x00\x00\x60\x81\x60\x82\x00\x00\x60\x83\x60\x87\x60\x89\x5a\x54\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4c\xe6\x53\x56\x60\x8b\x55\x7a\x51\x48\x52\xc3\x00\x00\x00\x00\x50\x7e\x58\x99\x00\x00\x00\x00\x00\x00\x5b\x7c\x60\x8f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x49\xb7\x00\x00\x4d\xde\x60\x8d\x00\x00\x5e\x61", /* 5500 */ "\x00\x00\x59\x85\x00\x00\x00\x00\x00\x00\x00\x00\x56\x95\x4a\xbc\x00\x00\x48\xa5\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x60\x92\x56\xc5\x60\x93\x00\x00\x00\x00\x60\x8e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x60\x8a\x00\x00\x00\x00\x00\x00\x00\x00\x60\x8c\x00\x00\x60\x90\x60\x91\x4e\x5d\x00\x00\x00\x00\x60\x94\x00\x00\x00\x00\x60\x95\x00\x00\x4e\x43\x00\x00\x55\xda\x57\xa7\x60\xa6\x4a\x4a\x00\x00\x60\xa5\x00\x00\x00\x00\x00\x00\x60\xa0\x00\x00\x00\x00\x00\x00\x00\x00\x60\x9f\x00\x00\x57\x79\x60\x9d\x00\x00\x60\x9b\x00\x00\x50\x70\x5c\x64\x00\x00\x55\x6c\x00\x00\x00\x00\x60\x99\x48\xa0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x60\x9e\x00\x00\x00\x00\x00\x00\x00\x00\x60\x9c\x60\xa1\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x60\xa7\x00\x00\x00\x00\x00\x00\x00\x00\x4c\x68\x00\x00\x00\x00\x53\xa0\x55\x56\x50\xb1\x60\x96\x00\x00\x00\x00\x53\x5e\x00\x00\x5c\xc3\x60\x9a\x52\xf5\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x60\xa2\x60\xa3\x60\xa4\x58\xa4\x00\x00\x00\x00\x60\xb3\x56\xe3\x00\x00\x60\xb0\x00\x00", /* 5580 */ "\x50\x46\x60\xae\x57\xb8\x60\xaa\x55\x66\x00\x00\x00\x00\x50\xad\x60\xad\x4d\xec\x4d\xaf\x60\xa8\x00\x00\x00\x00\x00\x00\x60\x97\x00\x00\x60\xb2\x00\x00\x00\x00\x60\xb7\x00\x00\x00\x00\x00\x00\x4a\xac\x60\xb8\x00\x00\x00\x00\x58\x52\x4d\xc7\x00\x00\x60\xaf\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x58\xf9\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x60\xab\x00\x00\x5a\xfa\x00\x00\x60\x98\x00\x00\x53\x88\x00\x00\x60\xac\x00\x00\x5a\x98\x00\x00\x60\xb5\x60\xb6\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x60\xc3\x58\xe0\x00\x00\x00\x00\x00\x00\x60\xbb\x00\x00\x00\x00\x60\xc8\x60\xc9\x00\x00\x00\x00\x00\x00\x60\xbd\x60\xa9\x55\x44\x60\xc0\x00\x00\x60\xb1\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x55\xc7\x60\xc2\x00\x00\x60\xb4\x00\x00\x57\xca\x00\x00\x56\x63\x60\xcc\x60\xc5\x60\xc1\x00\x00\x60\xca\x00\x00\x60\xb9\x60\xbe\x60\xbf\x00\x00\x00\x00\x60\xc4\x00\x00\x00\x00\x60\xc6\x60\xc7\x00\x00\x60\xcb\x00\x00\x60\xba\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x56\x74\x60\xd4\x00\x00", /* 5600 */ "\x60\xd5\x60\xd1\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x60\xcf\x4e\xcd\x00\x00\x00\x00\x60\xd0\x00\x00\x4c\xc1\x5c\xc4\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x58\xe9\x00\x00\x00\x00\x51\xee\x00\x00\x00\x00\x60\xce\x60\xbc\x00\x00\x00\x00\x00\x00\x60\xd3\x60\xd2\x00\x00\x00\x00\x60\xd6\x00\x00\x00\x00\x00\x00\x00\x00\x60\xdb\x60\xd7\x00\x00\x00\x00\x00\x00\x5b\xf5\x4a\x50\x00\x00\x5c\x8d\x00\x00\x56\x5b\x00\x00\x00\x00\x60\xd9\x00\x00\x57\xfa\x00\x00\x00\x00\x00\x00\x4d\xd8\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x60\xe0\x60\xdc\x59\xac\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x60\xe1\x00\x00\x00\x00\x60\xda\x60\xd8\x60\xde\x00\x00\x00\x00\x60\xdf\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x60\xdd\x00\x00\x60\xe3\x00\x00\x00\x00\x00\x00\x53\xf6\x5c\xab\x5a\xea\x60\xe5\x55\xc8\x00\x00\x00\x00\x00\x00\x00\x00\x60\xe4\x00\x00\x00\x00\x00\x00\x00\x00\x4c\xc0\x00\x00\x00\x00\x00\x00\x00\x00\x60\xe6\x60\xe7\x00\x00\x00\x00\x00\x00", /* 5680 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x60\xe8\x60\xe2\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4d\xbe\x56\xe6\x00\x00\x00\x00\x00\x00\x60\xe9\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x58\x9a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x60\xea\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x54\xc1\x00\x00\x00\x00\x00\x00\x00\x00\x4f\x60\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x52\xd1\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x60\xeb\x00\x00\x00\x00\x60\xec\x00\x00\x00\x00\x54\x95\x56\x64\x00\x00\x60\xed\x4e\x78\x5c\xb5\x59\xf1\x60\xee\x57\x65\x00\x00\x4b\xd9\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x60\xf0\x00\x00\x5a\xaf\x00\x00\x00\x00\x50\xa6\x4a\xd0\x00\x00\x00\x00\x57\xa6\x60\xef\x00\x00\x00\x00\x00\x00\x60\xf1\x4d\x6c\x00\x00\x00\x00\x4d\x9b\x57\x5c\x60\xf2", /* 5700 */ "\x00\x00\x00\x00\x00\x00\x53\xd3\x60\xf3\x00\x00\x5a\xb1\x00\x00\x54\xa5\x60\xf5\x60\xf4\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x60\xf6\x00\x00\x00\x00\x57\x61\x00\x00\x00\x00\x00\x00\x55\xa4\x00\x00\x00\x00\x00\x00\x00\x00\x5a\xd9\x5e\x77\x5e\x79\x00\x00\x5e\x78\x4d\x88\x5e\x7c\x5e\x7d\x4b\x78\x00\x00\x00\x00\x5e\x7a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5e\x7b\x4a\x41\x5e\x7f\x00\x00\x00\x00\x4e\x99\x00\x00\x5b\xb6\x00\x00\x5e\x81\x00\x00\x00\x00\x00\x00\x00\x00\x4f\xf8\x00\x00\x00\x00\x4c\x5b\x00\x00\x5e\x70\x56\xad\x50\x52\x4e\x55\x5c\x99\x50\x73\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x50\x8a\x00\x00\x00\x00\x4e\xe0\x56\xb2\x5e\x7e\x48\xd2\x57\xea\x4c\x78\x5c\x59\x53\xc1\x00\x00\x00\x00\x50\xa3\x00\x00\x56\xb8\x00\x00\x5e\x88\x5e\x82\x53\xb9\x5e\x84\x00\x00\x5e\x89\x00\x00\x53\x98\x00\x00\x00\x00\x00\x00\x5e\x8b\x00\x00\x00\x00\x5e\x8a\x50\x60\x00\x00\x00\x00\x00\x00\x5e\x87\x5e\x86\x00\x00\x00\x00\x00\x00", /* 5780 */ "\x00\x00\x00\x00\x4a\xb8\x50\xab\x51\xa1\x5e\x83\x5e\x85\x00\x00\x00\x00\x00\x00\x00\x00\x58\xcc\x5e\x8e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x50\xdc\x5e\x93\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4b\xe1\x00\x00\x00\x00\x00\x00\x00\x00\x5e\x94\x5e\x72\x4d\x58\x5a\xaa\x5e\x8d\x00\x00\x50\x71\x5e\x91\x00\x00\x5e\x71\x00\x00\x4b\x87\x00\x00\x5e\x8c\x50\x86\x00\x00\x00\x00\x00\x00\x5e\x8f\x00\x00\x5e\x92\x00\x00\x00\x00\x00\x00\x5e\x9a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4d\x41\x48\xa2\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x51\xf0\x00\x00\x00\x00\x4a\x67\x5e\x90\x00\x00\x00\x00\x5e\x99\x00\x00\x53\xd1\x5e\x95\x00\x00\x00\x00\x5e\x96\x5e\x98\x5e\x97\x00\x00\x00\x00\x5e\x9f\x00\x00\x5a\x93\x49\xb9\x00\x00\x00\x00\x00\x00\x5e\x9e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5e\xa3\x00\x00\x5e\x9c\x00\x00\x00\x00\x00\x00\x00\x00\x5e\x9b\x00\x00\x00\x00\x00\x00\x5e\x9d\x53\x81\x4e\x9a\x00\x00\x00\x00\x5e\xa2\x00\x00\x00\x00", /* 5800 */ "\x5e\xa4\x00\x00\x56\xc2\x00\x00\x00\x00\x00\x00\x4b\xd0\x5f\x60\x00\x00\x00\x00\x00\x00\x5e\xa0\x00\x00\x5e\xa1\x00\x00\x00\x00\x00\x00\x54\x55\x00\x00\x00\x00\x00\x00\x4b\xe8\x00\x00\x00\x00\x00\x00\x5e\xa6\x00\x00\x00\x00\x00\x00\x00\x00\x5e\xa5\x00\x00\x5e\xa8\x49\x44\x00\x00\x00\x00\x4b\x6c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x50\x50\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x59\x7f\x00\x00\x00\x00\x00\x00\x00\x00\x4b\xc1\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5e\xa7\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x56\x9b\x66\x94\x00\x00\x00\x00\x00\x00\x56\x7c\x00\x00\x00\x00\x56\x9f\x00\x00\x00\x00\x00\x00\x56\xc0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x54\xfa\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5e\xa9\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x56\xed\x5e\xaa\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5e\x73\x00\x00", /* 5880 */ "\x5e\xae\x5e\xab\x00\x00\x4f\xb2\x00\x00\x55\xfa\x00\x00\x00\x00\x00\x00\x5e\xac\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x55\x6a\x52\xb8\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x54\x5d\x5e\xad\x00\x00\x00\x00\x00\x00\x5a\xf5\x58\xe5\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x52\xaa\x4b\xd4\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5e\x74\x00\x00\x00\x00\x00\x00\x00\x00\x49\x7a\x00\x00\x00\x00\x00\x00\x5e\x75\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5e\x76\x00\x00\x00\x00\x00\x00\x4d\xbd\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x54\xbf\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x55\xbe\x54\xc8\x00\x00\x5c\x53\x00\x00\x55\x9a\x00\x00\x00\x00\x50\x67\x00\x00\x00\x00\x4d\xf7\x00\x00\x00\x00\x59\xbb\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 5900 */ "\x00\x00\x00\x00\x61\xb9\x00\x00\x4a\xa5\x00\x00\x00\x00\x49\x58\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4c\xb3\x00\x00\x58\x64\x00\x00\x00\x00\x00\x00\x00\x00\x5d\x88\x58\x46\x57\x83\x00\x00\x00\x00\x5d\x8e\x4b\xdf\x00\x00\x59\xb8\x00\x00\x00\x00\x4d\x5b\x00\x00\x00\x00\x00\x00\x00\x00\x61\xb8\x61\xb6\x00\x00\x4a\xf2\x00\x00\x56\xeb\x56\xaa\x4c\x93\x00\x00\x5c\xb1\x59\x8c\x4d\xba\x00\x00\x55\xa6\x00\x00\x00\x00\x57\x57\x00\x00\x00\x00\x59\xc3\x50\x85\x4e\xcf\x4b\xe0\x00\x00\x5f\xc4\x00\x00\x00\x00\x00\x00\x00\x00\x5f\xc5\x5e\x5c\x00\x00\x59\x79\x00\x00\x00\x00\x53\xe5\x52\xcd\x4c\x8f\x00\x00\x4c\x7c\x00\x00\x00\x00\x50\x9d\x5c\x81\x00\x00\x53\xf4\x00\x00\x00\x00\x49\x5c\x5f\xc7\x4f\x51\x56\xd6\x5f\xc9\x00\x00\x5f\xc8\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4b\x8d\x00\x00\x55\x7d\x00\x00\x00\x00\x48\xc1\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x53\x4e\x53\x4b\x00\x00\x52\xcb\x00\x00\x4e\xe8\x56\x9e\x00\x00\x00\x00\x00\x00\x4d\xc2\x00\x00\x00\x00", /* 5980 */ "\x00\x00\x63\x9a\x54\xe6\x63\x9b\x57\x9e\x00\x00\x5c\x51\x4c\xbd\x51\xe7\x00\x00\x54\xd0\x00\x00\x00\x00\x63\x9c\x00\x00\x00\x00\x00\x00\x00\x00\x4b\xc9\x4e\xca\x00\x00\x00\x00\x59\x9e\x63\xa0\x00\x00\x52\x8f\x00\x00\x00\x00\x00\x00\x00\x00\x63\xa3\x00\x00\x00\x00\x00\x00\x00\x00\x63\x9f\x63\xa4\x57\x77\x00\x00\x00\x00\x4c\x61\x63\x9d\x63\x9e\x63\xa2\x00\x00\x00\x00\x52\xdc\x63\xa7\x00\x00\x00\x00\x63\xa6\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x52\x63\x00\x00\x53\xdd\x00\x00\x00\x00\x63\xa9\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x52\xb6\x00\x00\x00\x00\x00\x00\x63\xa1\x55\xbb\x00\x00\x00\x00\x00\x00\x00\x00\x4f\x84\x4d\x63\x63\xa5\x58\xd4\x57\xae\x00\x00\x00\x00\x63\xa8\x63\xaf\x00\x00\x59\xa5\x00\x00\x4f\x4a\x63\xac\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x63\xae\x00\x00\x50\xd0\x00\x00\x00\x00\x59\xcb\x00\x00\x00\x00\x00\x00\x4e\xa6\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x63\xb0\x00\x00\x59\xf5\x00\x00\x00\x00\x00\x00\x5c\x6b", /* 5a00 */ "\x00\x00\x57\x9f\x00\x00\x57\x7e\x51\xa5\x63\xaa\x63\xab\x4f\x5f\x63\xad\x63\xb2\x00\x00\x00\x00\x63\xb1\x00\x00\x00\x00\x00\x00\x00\x00\x63\xb5\x00\x00\x63\xb7\x00\x00\x00\x00\x00\x00\x00\x00\x52\xee\x00\x00\x00\x00\x00\x00\x52\xc7\x00\x00\x00\x00\x4f\xe9\x55\x90\x00\x00\x00\x00\x63\xb6\x00\x00\x4b\xef\x00\x00\x00\x00\x00\x00\x52\x85\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5a\x8a\x63\xb3\x00\x00\x63\xb4\x00\x00\x54\xa1\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x63\xbc\x00\x00\x00\x00\x00\x00\x63\xb8\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x53\xc4\x00\x00\x00\x00\x57\x92\x63\xba\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x63\xbb\x00\x00\x00\x00\x00\x00\x00\x00\x4e\x8a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x63\xbd\x00\x00\x00\x00\x00\x00\x00\x00\x63\xb9\x00\x00\x00\x00\x50\xb6\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5a\x44\x63\xbe\x55\x95\x63\xc2\x00\x00\x00\x00\x63\xc3\x00\x00\x00\x00\x00\x00\x00\x00\x58\xf5", /* 5a80 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x52\x5d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x52\x64\x63\xc1\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x63\xc0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x63\xc6\x58\x51\x00\x00\x66\x95\x00\x00\x00\x00\x63\xc9\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x63\xc4\x00\x00\x00\x00\x4e\xdd\x55\x49\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4e\xb4\x00\x00\x00\x00\x58\x73\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x63\xc7\x00\x00\x63\xc8\x00\x00\x63\xcd\x00\x00\x63\xcf\x00\x00\x00\x00\x00\x00\x63\xd0\x00\x00\x00\x00\x00\x00\x63\xca\x4b\x75\x00\x00\x63\xcb\x00\x00\x00\x00\x63\xce\x00\x00\x00\x00\x52\xda\x00\x00\x63\xc5\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x63\xcc\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 5b00 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x63\xd1\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x63\xd3\x63\xd2\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x63\xd4\x00\x00\x5d\x99\x00\x00\x00\x00\x63\xd5\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x63\xd6\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5c\x73\x63\xdc\x00\x00\x63\xdd\x50\x77\x5a\xcf\x00\x00\x5c\x76\x4a\xe5\x56\x90\x63\xd9\x5c\xc2\x5c\x6e\x58\xa1\x00\x00\x52\x6f\x00\x00\x00\x00\x63\xde\x4e\xbd\x4d\x62\x63\xda\x59\x47\x00\x00\x00\x00\x4d\xa1\x51\xce\x00\x00\x5c\xaa\x00\x00\x00\x00\x00\x00\x55\xea\x63\x8f\x00\x00\x63\xdb\x00\x00\x4c\x96\x00\x00\x00\x00\x00\x00\x00\x00\x54\xe5\x00\x00\x00\x00\x52\xf4\x00\x00\x00\x00", /* 5b80 */ "\x63\x52\x52\xfd\x00\x00\x56\x9d\x63\x53\x5b\x4c\x00\x00\x5a\x8f\x55\xd7\x48\xb1\x00\x00\x56\x6e\x57\x8b\x00\x00\x00\x00\x4d\xe9\x00\x00\x00\x00\x00\x00\x63\x55\x00\x00\x63\x54\x00\x00\x5c\x7a\x4d\x79\x5b\xe5\x4b\xa7\x57\x91\x59\xca\x49\x46\x55\xb4\x00\x00\x4a\x89\x55\x94\x50\x6d\x58\xfa\x55\xd1\x63\x56\x4e\x62\x00\x00\x00\x00\x00\x00\x58\x7c\x4d\x4c\x00\x00\x00\x00\x00\x00\x00\x00\x5a\xd6\x00\x00\x00\x00\x4d\xa5\x59\x88\x58\x9d\x4e\xd1\x00\x00\x63\x57\x54\xdc\x00\x00\x00\x00\x00\x00\x50\x8e\x49\x97\x56\x7e\x00\x00\x00\x00\x4e\xc4\x00\x00\x4e\xc3\x59\xf9\x52\x7c\x50\x7c\x00\x00\x00\x00\x00\x00\x00\x00\x4c\xba\x00\x00\x00\x00\x00\x00\x52\x62\x00\x00\x4d\xad\x5a\xa1\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x54\x7e\x52\xae\x49\xeb\x00\x00\x4d\x71\x00\x00\x00\x00\x63\x5b\x51\x68\x00\x00\x00\x00\x5b\x4f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x63\x5c\x00\x00\x63\x5e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4a\xe6\x4b\xd3\x56\x62\x59\x50\x4b\x5c\x00\x00\x00\x00\x55\xd8", /* 5c00 */ "\x00\x00\x4c\x83\x00\x00\x00\x00\x55\x85\x00\x00\x4f\x4b\x00\x00\x00\x00\x57\xbd\x5c\x91\x00\x00\x00\x00\x00\x00\x00\x00\x58\xa0\x00\x00\x55\x79\x00\x00\x00\x00\x4b\xfa\x63\xd7\x4e\xe1\x00\x00\x4a\x5e\x00\x00\x55\x70\x00\x00\x63\xd8\x4a\x42\x00\x00\x00\x00\x00\x00\x00\x00\x5f\xcb\x00\x00\x5a\x68\x5f\xcc\x00\x00\x59\xa1\x00\x00\x00\x00\x00\x00\x00\x00\x5f\xcd\x00\x00\x00\x00\x00\x00\x00\x00\x4f\xcc\x00\x00\x00\x00\x5f\xce\x00\x00\x00\x00\x00\x00\x55\xab\x59\xfb\x4a\x7f\x63\x8b\x52\xe0\x4f\xa0\x57\xb1\x52\xf1\x4f\xd5\x53\xa7\x49\xe2\x00\x00\x00\x00\x4f\xd2\x00\x00\x00\x00\x54\x9d\x56\xea\x4f\x8d\x57\xdc\x00\x00\x00\x00\x55\xb9\x53\xc0\x63\x8d\x58\xbb\x00\x00\x00\x00\x00\x00\x5b\x59\x00\x00\x00\x00\x00\x00\x63\x8e\x00\x00\x00\x00\x00\x00\x00\x00\x55\xf3\x00\x00\x57\x60\x51\xc4\x00\x00\x63\x90\x00\x00\x51\xc3\x63\x91\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x63\x99\x57\x6d\x00\x00\x55\x5d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x59\xd8\x61\x48\x00\x00\x00\x00\x00\x00\x00\x00\x5a\x8d", /* 5c80 */ "\x00\x00\x56\x8b\x53\xf0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x61\x4c\x00\x00\x00\x00\x00\x00\x61\x47\x61\x49\x00\x00\x00\x00\x61\x4a\x61\x4f\x00\x00\x00\x00\x49\xec\x00\x00\x61\x4b\x4c\xd9\x61\x4d\x61\x4e\x61\x50\x4b\x5a\x61\x51\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x61\x53\x61\x58\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x59\x72\x00\x00\x61\x56\x61\x55\x51\x8c\x00\x00\x00\x00\x00\x00\x61\x57\x00\x00\x5a\xbf\x00\x00\x61\x52\x00\x00\x61\x5a\x48\xb5\x00\x00\x00\x00\x00\x00\x00\x00\x61\x54\x00\x00\x50\x9a\x00\x00\x61\x59\x00\x00\x00\x00\x61\x5b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x61\x5e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x61\x5c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5b\xc4\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x58\x5f\x00\x00\x00\x00\x61\x5d\x61\x5f\x51\xcc\x00\x00\x4b\xea\x00\x00\x5a\x99\x00\x00\x00\x00\x54\x6d\x00\x00\x00\x00\x4c\x86\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4f\xfd\x00\x00\x00\x00\x00\x00\x00\x00", /* 5d00 */ "\x00\x00\x00\x00\x61\x60\x61\x61\x00\x00\x00\x00\x61\x67\x4a\x88\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x53\xe8\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4a\xdd\x00\x00\x59\x62\x00\x00\x00\x00\x00\x00\x00\x00\x61\x68\x00\x00\x00\x00\x61\x66\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x61\x65\x00\x00\x61\x63\x61\x62\x00\x00\x49\x60\x00\x00\x00\x00\x00\x00\x5b\x58\x61\x64\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x61\x6b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x61\x6c\x61\x6a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x68\x9b\x00\x00\x00\x00\x61\x73\x61\x72\x54\x56\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x61\x69\x00\x00\x00\x00\x61\x6e\x00\x00\x61\x70\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x61\x74\x00\x00\x61\x71\x61\x6d\x00\x00\x00\x00\x61\x6f\x00\x00\x00\x00\x00\x00\x00\x00\x61\x75\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 5d80 */ "\x00\x00\x00\x00\x61\x76\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x61\x77\x00\x00\x00\x00\x00\x00\x61\x78\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x61\x7a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x61\x7b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x57\xa0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x64\x7d\x00\x00\x4a\xa7\x5b\xdc\x00\x00\x00\x00\x59\x52\x4a\x52\x00\x00\x00\x00\x4d\x44\x5c\x94\x54\x69\x4f\xdd\x4d\x4e\x00\x00\x57\xd6\x00\x00\x00\x00\x49\xed\x5e\x6f\x00\x00\x4e\xb9\x59\xd0\x56\x68\x48\xcc\x00\x00\x00\x00\x58\x90\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5d\x84\x4f\x8e\x00\x00", /* 5e00 */ "\x00\x00\x49\x72\x55\xcf\x49\xbb\x00\x00\x56\x47\x4c\x4b\x00\x00\x55\xa5\x00\x00\x00\x00\x00\x00\x58\x43\x00\x00\x00\x00\x60\xf7\x5b\x6a\x60\xfa\x00\x00\x00\x00\x60\xf9\x53\x61\x56\xfa\x00\x00\x51\x51\x60\xf8\x5b\xe2\x49\xae\x5b\xc3\x4b\x7b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4a\xf7\x5b\xa0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x58\x4f\x48\xee\x00\x00\x00\x00\x60\xfb\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x61\x41\x4a\x43\x00\x00\x00\x00\x60\xfc\x60\xfd\x52\x51\x00\x00\x00\x00\x00\x00\x00\x00\x52\x7d\x00\x00\x61\x42\x4c\x9a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4e\x6f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x61\x43\x52\xba\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x61\x44\x00\x00\x00\x00\x61\x45\x00\x00\x00\x00\x61\x46\x4a\xb0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4c\xc8\x53\xbc\x52\xe9\x00\x00\x49\xa1\x00\x00\x58\xd1\x00\x00\x64\x7b\x4e\x63\x5a\x77\x5a\x64\x00\x00\x4d\x84", /* 5e80 */ "\x61\xce\x00\x00\x00\x00\x00\x00\x5c\x4f\x00\x00\x54\x8d\x49\x73\x00\x00\x00\x00\x4a\xb1\x61\xd0\x00\x00\x00\x00\x00\x00\x58\xf1\x51\xad\x61\xcf\x00\x00\x50\x83\x5a\x46\x4b\x77\x61\xd1\x4b\x8b\x00\x00\x52\x8e\x4c\xfc\x00\x00\x4c\xad\x00\x00\x53\x73\x4c\x6f\x61\xd3\x00\x00\x00\x00\x00\x00\x00\x00\x61\xd2\x4b\xc7\x5c\x9a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x57\x45\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x61\xd7\x00\x00\x61\xd5\x55\xfb\x50\x55\x5a\x59\x61\xd4\x00\x00\x00\x00\x00\x00\x00\x00\x61\xd6\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x51\x4e\x50\xc7\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x61\xda\x61\xd9\x50\xa9\x00\x00\x00\x00\x51\x6e\x00\x00\x00\x00\x00\x00\x00\x00\x61\xdb\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x61\xdc\x00\x00\x61\xdd\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5e\x68\x00\x00\x59\x73\x57\x42\x00\x00\x00\x00\x4f\x48\x00\x00\x00\x00\x00\x00\x5f\xc2\x5c\xa4", /* 5f00 */ "\x50\x4a\x5e\x6d\x59\xeb\x53\xf9\x53\x4a\x00\x00\x00\x00\x00\x00\x5f\xc3\x00\x00\x49\x77\x60\x4e\x00\x00\x00\x00\x00\x00\x55\xbc\x00\x00\x60\x51\x00\x00\x4d\x4d\x00\x00\x59\xfc\x00\x00\x4c\xa4\x4d\xea\x00\x00\x00\x00\x4a\x7a\x00\x00\x00\x00\x00\x00\x4b\x7c\x5b\x65\x00\x00\x00\x00\x00\x00\x00\x00\x52\x76\x58\x72\x4e\x41\x00\x00\x63\x94\x63\x93\x00\x00\x00\x00\x63\x95\x00\x00\x57\x85\x00\x00\x54\xf4\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4b\x4f\x54\x5f\x00\x00\x63\x97\x00\x00\x00\x00\x00\x00\x66\xaf\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x63\x87\x00\x00\x4d\x8a\x4b\x51\x00\x00\x51\xbb\x63\x89\x63\x88\x63\x8a\x00\x00\x00\x00\x00\x00\x00\x00\x59\xcc\x00\x00\x00\x00\x00\x00\x61\x8b\x58\xcd\x00\x00\x57\x4e\x00\x00\x59\x86\x00\x00\x00\x00\x49\xc9\x49\x8c\x00\x00\x49\x93\x53\x8e\x00\x00\x00\x00\x5b\x63\x5a\x50\x00\x00\x61\x7c\x00\x00\x00\x00\x00\x00\x61\x7d\x00\x00\x59\xda\x00\x00\x4a\x59\x49\x6b\x00\x00\x00\x00\x00\x00", /* 5f80 */ "\x57\x9a\x5b\x98\x61\x7e\x00\x00\x4f\xb5\x4a\xfc\x00\x00\x61\x7f\x4d\xdb\x61\x81\x4e\x52\x51\xc8\x61\x82\x00\x00\x00\x00\x00\x00\x58\xeb\x00\x00\x57\x5d\x00\x00\x00\x00\x61\x83\x00\x00\x4b\x63\x53\x67\x61\x84\x00\x00\x00\x00\x61\x85\x00\x00\x00\x00\x00\x00\x00\x00\x5a\x9a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x61\x86\x00\x00\x59\x4d\x00\x00\x00\x00\x61\x87\x57\xa1\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x61\x88\x00\x00\x4b\x62\x00\x00\x00\x00\x00\x00\x00\x00\x61\x89\x4e\x75\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x58\xc3\x61\xdf\x49\x78\x59\xe3\x00\x00\x00\x00\x61\xe0\x00\x00\x00\x00\x4e\xc8\x54\xcb\x00\x00\x61\xe2\x66\xfd\x66\xfc\x60\x4f\x00\x00\x00\x00\x00\x00\x61\xe1\x5b\xbd\x57\x9d\x52\x46\x00\x00\x00\x00\x00\x00\x62\x63\x00\x00\x00\x00\x5b\xd1\x61\xe6\x00\x00\x00\x00\x61\xe7\x00\x00\x00\x00\x5a\x67\x00\x00\x00\x00\x61\xeb\x50\x8d\x00\x00\x61\xec\x61\xe4\x00\x00\x00\x00\x4a\x60\x00\x00\x00\x00\x00\x00\x52\xed\x00\x00\x00\x00\x61\xed\x00\x00\x00\x00\x58\xc2\x00\x00\x4d\xf5\x61\xe8\x4c\x7e", /* 6000 */ "\x4e\x53\x56\xab\x56\x6b\x61\xe3\x61\xe5\x61\xe9\x61\xea\x00\x00\x00\x00\x00\x00\x61\xf6\x00\x00\x00\x00\x61\xf3\x5a\xf4\x61\xf2\x00\x00\x00\x00\x53\x4d\x00\x00\x5b\x9b\x53\x62\x49\xbf\x00\x00\x00\x00\x61\xee\x00\x00\x61\xf1\x51\x4f\x56\x5c\x00\x00\x00\x00\x4b\x41\x61\xf8\x00\x00\x00\x00\x00\x00\x4e\xb0\x61\xf0\x58\xd3\x5a\xb8\x61\xf4\x4d\x76\x61\xf5\x00\x00\x00\x00\x00\x00\x54\x73\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x61\xef\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5c\x7c\x67\x41\x00\x00\x00\x00\x61\xf7\x00\x00\x67\x45\x61\xfd\x55\xd0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x51\x55\x00\x00\x4e\x70\x00\x00\x00\x00\x50\x76\x00\x00\x4d\xe2\x00\x00\x00\x00\x56\x41\x00\x00\x00\x00\x00\x00\x67\x46\x67\x43\x00\x00\x00\x00\x67\x42\x00\x00\x00\x00\x00\x00\x00\x00\x4e\x76\x67\x47\x58\xf3\x00\x00\x00\x00\x67\x44\x4d\xdd\x4b\xf6\x62\x41\x4b\xb1\x56\xf0\x4d\x47\x00\x00\x58\x42\x54\x41\x00\x00\x00\x00\x50\x72\x00\x00\x00\x00\x4b\xf0\x00\x00\x61\xf9\x61\xfa\x61\xfc\x61\xfb\x52\xd4\x62\x42\x00\x00\x5a\x61", /* 6080 */ "\x00\x00\x00\x00\x00\x00\x62\x47\x54\x64\x00\x00\x00\x00\x00\x00\x00\x00\x58\x44\x00\x00\x00\x00\x62\x49\x4d\xb6\x00\x00\x00\x00\x00\x00\x00\x00\x62\x48\x00\x00\x4e\x7a\x00\x00\x62\x43\x00\x00\x00\x00\x00\x00\x62\x44\x62\x4a\x00\x00\x62\x46\x00\x00\x57\xf1\x5a\x66\x00\x00\x00\x00\x4e\x5c\x00\x00\x00\x00\x5a\xc2\x00\x00\x52\xf9\x00\x00\x00\x00\x67\x48\x58\xfb\x62\x45\x00\x00\x52\x96\x00\x00\x62\x4d\x49\x4f\x00\x00\x62\x52\x00\x00\x00\x00\x00\x00\x4e\xc1\x00\x00\x00\x00\x62\x4c\x4b\x5f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x54\x8a\x62\x50\x00\x00\x00\x00\x00\x00\x4f\xa9\x57\x90\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4e\x94\x00\x00\x00\x00\x00\x00\x56\xe7\x00\x00\x00\x00\x62\x4f\x00\x00\x62\x51\x00\x00\x58\x47\x62\x4e\x00\x00\x57\xa8\x4e\x7d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4b\x8c\x4f\xe4\x49\xd1\x4a\x6d\x00\x00\x49\x59\x62\x4b\x49\xd0\x4b\x4c\x4d\x7f\x4b\xe7\x00\x00\x00\x00\x58\x8c\x62\x57\x00\x00\x4e\x6c\x00\x00\x00\x00\x54\xc6\x58\xc9\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 6100 */ "\x62\x58\x4a\x8f\x00\x00\x00\x00\x00\x00\x00\x00\x67\x49\x00\x00\x5a\x9b\x5a\x85\x00\x00\x00\x00\x00\x00\x67\x4a\x62\x59\x59\xe1\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x62\x55\x00\x00\x00\x00\x00\x00\x00\x00\x5a\x7e\x00\x00\x00\x00\x00\x00\x00\x00\x4c\xcf\x62\x53\x00\x00\x00\x00\x62\x56\x4c\x7f\x00\x00\x62\x54\x50\xa1\x00\x00\x00\x00\x00\x00\x62\x5a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5a\xb7\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4a\xc7\x00\x00\x62\x5b\x00\x00\x4e\x65\x00\x00\x55\x98\x00\x00\x00\x00\x55\x86\x00\x00\x00\x00\x00\x00\x52\xbc\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x67\x4b\x00\x00\x00\x00\x00\x00\x00\x00\x51\xfc\x00\x00\x00\x00\x00\x00\x00\x00\x4e\x7b\x50\x4e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x57\xbe\x00\x00\x00\x00\x00\x00\x00\x00\x62\x5c\x00\x00\x50\x56\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 6180 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x49\x90\x00\x00\x00\x00\x5a\xf6\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x62\x5e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x67\x4d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x62\x5f\x4d\xa8\x67\x4c\x00\x00\x00\x00\x62\x5d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x62\x60\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4d\xb5\x00\x00\x00\x00\x00\x00\x4b\xad\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x58\xb7\x00\x00\x48\xc2\x67\x4e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x67\x4f\x50\xc0\x00\x00\x62\x61\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x53\x53\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x62\x62\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5e\xb1", /* 6200 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x67\x50\x00\x00\x4c\xe9\x00\x00\x57\xeb\x65\xa6\x58\xe6\x55\xf8\x54\xd5\x58\x57\x4a\x69\x57\xd1\x4f\x85\x00\x00\x00\x00\x62\x7e\x4e\x93\x65\xa7\x5b\x5d\x00\x00\x53\xdc\x65\xa8\x00\x00\x00\x00\x00\x00\x65\xa9\x00\x00\x65\xab\x65\xaa\x00\x00\x65\xad\x65\xac\x00\x00\x00\x00\x00\x00\x00\x00\x4f\x78\x00\x00\x65\xae\x00\x00\x51\xbd\x00\x00\x00\x00\x00\x00\x00\x00\x4a\xc0\x4a\xf6\x00\x00\x00\x00\x4e\x47\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x66\xe5\x66\xe4\x4c\x5f\x56\x9a\x49\x83\x00\x00\x66\xe6\x00\x00\x00\x00\x00\x00\x55\x68\x66\xe7\x66\xe8\x00\x00\x55\xd5\x5f\xcf\x49\xc4\x5a\xf9\x00\x00\x00\x00\x53\xca\x48\xc6\x4a\xf1\x54\xd2\x00\x00\x00\x00\x00\x00\x57\x70\x00\x00\x00\x00\x50\x58\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x50\x7b\x00\x00\x00\x00\x54\x44\x5b\xb3\x00\x00\x50\xa8\x5f\xd0\x55\x48\x59\x90\x53\x44\x48\xe6\x4a\x56\x54\xc4\x00\x00\x00\x00\x48\xe1\x00\x00\x00\x00\x4c\x97\x00\x00\x00\x00\x53\x9b\x00\x00\x00\x00\x4b\xf2\x00\x00\x5b\x72\x4a\x70", /* 6280 */ "\x4e\xbb\x00\x00\x00\x00\x00\x00\x4a\x4d\x00\x00\x00\x00\x00\x00\x00\x00\x4f\xf0\x48\xd0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x59\xd5\x55\xe2\x5c\x45\x00\x00\x57\x56\x4b\xb5\x50\x59\x5b\x7b\x00\x00\x4c\xa6\x53\x77\x00\x00\x00\x00\x00\x00\x5f\xd1\x50\x79\x51\xd4\x54\x60\x00\x00\x4e\x44\x49\x48\x00\x00\x00\x00\x53\x8b\x00\x00\x00\x00\x53\x9c\x56\xa6\x00\x00\x00\x00\x00\x00\x00\x00\x49\x47\x00\x00\x00\x00\x00\x00\x4b\x76\x00\x00\x00\x00\x00\x00\x52\xa7\x00\x00\x5f\xd2\x59\x5a\x4a\x8a\x00\x00\x52\x93\x00\x00\x00\x00\x4c\x98\x00\x00\x5b\xf3\x4b\x43\x49\xef\x52\xb3\x52\xe8\x50\xac\x5f\xd3\x00\x00\x48\xe7\x53\x64\x51\x81\x00\x00\x4d\x75\x00\x00\x4f\xdb\x57\x78\x48\xcd\x00\x00\x57\x6f\x5f\xd5\x4f\xcf\x5c\x5e\x5f\xd4\x5b\x70\x48\xdc\x00\x00\x00\x00\x52\xe1\x00\x00\x00\x00\x51\xa2\x4e\xef\x00\x00\x5a\x55\x50\xb8\x53\x41\x49\xa5\x5a\xf0\x00\x00\x00\x00\x50\xa7\x55\xc2\x5f\xd6\x5b\x9d\x00\x00\x4d\x50\x00\x00\x54\xac\x56\x49\x00\x00\x5f\xd8\x50\x5d\x00\x00\x00\x00\x00\x00\x00\x00\x53\xb3\x5c\x47\x55\xaf\x52\xc2", /* 6300 */ "\x00\x00\x4a\x76\x4d\x72\x00\x00\x00\x00\x00\x00\x00\x00\x5b\xb7\x65\xfb\x48\xb3\x00\x00\x00\x00\x00\x00\x00\x00\x50\x87\x00\x00\x00\x00\x56\xf3\x00\x00\x00\x00\x00\x00\x00\x00\x57\x7a\x00\x00\x00\x00\x00\x00\x5b\xbe\x51\xcd\x00\x00\x57\xcd\x56\xa1\x58\xad\x52\xd2\x4b\x52\x5f\xd7\x5b\x96\x4e\xb6\x4e\x73\x00\x00\x00\x00\x48\xa3\x00\x00\x53\x52\x4a\xeb\x00\x00\x00\x00\x00\x00\x5b\x92\x00\x00\x00\x00\x65\xfc\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5f\xd9\x57\x46\x00\x00\x00\x00\x57\x8d\x00\x00\x00\x00\x00\x00\x00\x00\x57\xe5\x5f\xdb\x00\x00\x57\x51\x50\xa5\x00\x00\x00\x00\x5c\x5d\x00\x00\x5f\xda\x48\xc5\x4d\xb3\x55\x73\x52\xf2\x4f\xe7\x00\x00\x00\x00\x00\x00\x00\x00\x49\xb5\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x50\xcb\x56\x91\x00\x00\x4e\xf0\x4e\x5b\x4b\x57\x00\x00\x00\x00\x00\x00\x53\x96\x00\x00\x5f\xe5\x00\x00\x00\x00\x00\x00\x5f\xe2\x4f\xdc\x00\x00\x00\x00\x5f\xde\x00\x00\x00\x00\x00\x00\x00\x00\x4a\xb6\x4f\x7d\x00\x00\x00\x00\x5f\xdf\x52\xec\x00\x00\x00\x00\x00\x00\x00\x00", /* 6380 */ "\x58\x66\x00\x00\x4b\x81\x00\x00\x00\x00\x00\x00\x00\x00\x4b\xdd\x55\xd9\x4b\x95\x5f\xe4\x00\x00\x5b\x66\x00\x00\x5f\xe0\x56\xcc\x53\xfd\x00\x00\x53\x65\x00\x00\x00\x00\x00\x00\x59\xb3\x00\x00\x4f\xf1\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x51\xd2\x00\x00\x56\xbc\x4a\x58\x00\x00\x4f\x73\x00\x00\x50\x78\x57\x66\x59\x7a\x4a\xea\x00\x00\x5f\xe3\x5f\xdc\x5f\xe6\x00\x00\x65\xfd\x00\x00\x00\x00\x51\xaf\x5f\xe1\x00\x00\x00\x00\x5b\xbf\x4b\x47\x00\x00\x49\xf3\x00\x00\x5f\xe7\x00\x00\x5f\xf1\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5f\xec\x00\x00\x5f\xf0\x00\x00\x00\x00\x54\xdf\x00\x00\x00\x00\x00\x00\x5c\x82\x5f\xee\x52\x89\x56\xe0\x00\x00\x49\xe4\x00\x00\x00\x00\x00\x00\x59\xbd\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5f\xed\x00\x00\x5f\xea\x57\xd4\x00\x00\x4a\xa6\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x50\x4b\x4f\xbd\x00\x00\x00\x00\x4f\x72\x00\x00\x00\x00\x00\x00\x00\x00\x5f\xe8\x00\x00\x5a\xad\x00\x00\x5f\xdd\x00\x00\x5f\xe9\x00\x00\x00\x00\x00\x00\x00\x00\x50\xbe\x00\x00\x5f\xeb", /* 6400 */ "\x49\xf2\x4c\xe8\x51\xa6\x00\x00\x00\x00\x4f\x61\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5f\xf4\x5f\xf7\x00\x00\x00\x00\x49\xaa\x4a\xa3\x00\x00\x00\x00\x4a\xe9\x55\x46\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5f\xf5\x56\x71\x00\x00\x4c\xe2\x00\x00\x5f\xf6\x5f\xf9\x00\x00\x00\x00\x00\x00\x00\x00\x5f\xf8\x00\x00\x00\x00\x00\x00\x56\xc1\x00\x00\x48\xe0\x4a\xed\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x63\x5a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x58\xae\x00\x00\x00\x00\x49\xea\x00\x00\x66\x41\x00\x00\x5f\xf3\x00\x00\x00\x00\x55\x84\x5f\xf2\x48\xd9\x59\xa0\x49\x98\x00\x00\x56\xae\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5f\xef\x00\x00\x56\x44\x00\x00\x00\x00\x00\x00\x5b\x4a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5f\xfa\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4a\xdc\x00\x00\x52\xa5\x00\x00\x00\x00\x00\x00\x5f\xfc\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x52\x9f\x52\xa0\x60\x41\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 6480 */ "\x00\x00\x00\x00\x51\x6c\x00\x00\x5f\xfb\x4f\xee\x00\x00\x53\xb1\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4a\x65\x54\xf5\x00\x00\x00\x00\x56\x5a\x5f\xfd\x00\x00\x00\x00\x60\x44\x00\x00\x00\x00\x00\x00\x00\x00\x5c\x52\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4a\x57\x00\x00\x00\x00\x00\x00\x00\x00\x51\x63\x00\x00\x00\x00\x54\x6b\x49\xa4\x4a\xe8\x00\x00\x5c\x4b\x00\x00\x00\x00\x00\x00\x00\x00\x52\xeb\x00\x00\x60\x42\x60\x43\x00\x00\x60\x45\x00\x00\x4d\xb2\x00\x00\x00\x00\x00\x00\x60\x46\x00\x00\x50\xdd\x00\x00\x00\x00\x55\x63\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x49\xd8\x54\x87\x00\x00\x60\x47\x00\x00\x54\x7c\x00\x00\x00\x00\x00\x00\x00\x00\x60\x48\x66\x42\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x56\x73\x00\x00\x00\x00\x00\x00\x60\x4a\x00\x00\x60\x49\x00\x00\x49\xc0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 6500 */ "\x53\x6a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x60\x4b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5a\xdb\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x54\xc0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x60\x4c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4f\xef\x00\x00\x00\x00\x60\x4d\x5b\xa6\x00\x00\x00\x00\x00\x00\x00\x00\x65\xb6\x66\x56\x55\xd4\x00\x00\x5c\xfb\x4c\xc3\x00\x00\x4d\x45\x00\x00\x00\x00\x4c\x65\x5b\x9f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4d\x6a\x00\x00\x00\x00\x58\xa6\x6a\xcc\x00\x00\x00\x00\x4b\x70\x00\x00\x00\x00\x52\x95\x00\x00\x4f\xc7\x00\x00\x00\x00\x00\x00\x66\x57\x48\xbc\x00\x00\x00\x00\x4f\x6c\x00\x00\x51\x52\x00\x00\x49\x76\x4a\x48\x00\x00\x00\x00\x00\x00\x4c\xd1\x55\x42\x00\x00\x00\x00\x4b\xd7\x00\x00\x00\x00\x00\x00\x00\x00\x66\x58\x4f\xb3\x00\x00\x00\x00\x00\x00\x55\xfc\x00\x00\x54\x63\x00\x00\x5b\x9c\x00\x00\x00\x00\x4c\x94\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 6580 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x57\xc3\x00\x00\x00\x00\x00\x00\x5b\x4b\x49\x94\x00\x00\x00\x00\x00\x00\x66\xb2\x48\xde\x00\x00\x66\xb4\x00\x00\x00\x00\x00\x00\x4b\xb6\x00\x00\x51\x6f\x00\x00\x6b\x9b\x58\xb0\x00\x00\x00\x00\x5b\x86\x00\x00\x57\xd2\x00\x00\x00\x00\x4f\x90\x4a\x83\x00\x00\x4c\xaa\x00\x00\x5b\x56\x00\x00\x67\x5d\x00\x00\x4b\xce\x00\x00\x56\x59\x58\xc1\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4c\x5d\x00\x00\x00\x00\x66\xb5\x55\xa8\x00\x00\x00\x00\x00\x00\x53\x74\x00\x00\x66\xb8\x66\xb7\x51\xc2\x66\xb6\x00\x00\x00\x00\x00\x00\x00\x00\x58\xfc\x66\xb9\x00\x00\x66\xba\x5c\x86\x00\x00\x00\x00\x66\xbb\x00\x00\x00\x00\x00\x00\x66\xbc\x53\xeb\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x57\xdd\x00\x00\x4e\xc7\x00\x00\x00\x00\x54\xd4\x4b\x49\x4f\xc8\x5b\xbb\x5a\xe6\x00\x00\x00\x00\x59\x4e\x58\xf0\x65\xb7\x65\xb8\x65\xb9\x4d\xb4\x00\x00\x00\x00\x00\x00\x00\x00\x55\xb0\x50\x96\x00\x00\x00\x00\x57\x9b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 6600 */ "\x65\xbf\x00\x00\x48\xb9\x65\xbd\x00\x00\x00\x00\x50\xa4\x00\x00\x00\x00\x00\x00\x65\xba\x00\x00\x49\xfc\x00\x00\x52\x98\x4e\x89\x00\x00\x00\x00\x00\x00\x59\xd6\x57\xf3\x65\xbe\x00\x00\x00\x00\x00\x00\x65\xbb\x00\x00\x00\x00\x00\x00\x65\xc2\x00\x00\x58\xc6\x5a\x53\x00\x00\x00\x00\x00\x00\x00\x00\x4a\xb9\x00\x00\x52\x61\x5c\x93\x00\x00\x00\x00\x00\x00\x00\x00\x5b\x71\x00\x00\x55\xc6\x00\x00\x65\xc4\x00\x00\x00\x00\x65\xc3\x65\xc6\x65\xc5\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5b\xe6\x00\x00\x58\x74\x00\x00\x00\x00\x65\xca\x00\x00\x4e\x6e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4f\x9b\x55\x6e\x00\x00\x00\x00\x65\xcb\x00\x00\x00\x00\x55\x59\x58\x9f\x65\xc9\x5a\xcd\x65\xcc\x65\xce\x00\x00\x00\x00\x57\x8e\x00\x00\x00\x00\x00\x00\x00\x00\x65\xc8\x00\x00\x65\xcd\x00\x00\x00\x00\x57\xed\x00\x00\x4e\x7e\x00\x00\x4a\x5f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x53\xd4\x4f\xaf\x57\xf9\x00\x00\x00\x00\x00\x00\x54\x88\x00\x00\x4f\xa6\x65\xcf\x00\x00\x00\x00\x5b\xc6\x00\x00\x00\x00\x00\x00\x51\x60\x00\x00", /* 6680 */ "\x00\x00\x00\x00\x5a\xdc\x00\x00\x65\xd0\x00\x00\x00\x00\x58\x5e\x00\x00\x00\x00\x00\x00\x00\x00\x65\xd1\x00\x00\x00\x00\x00\x00\x00\x00\x55\xed\x00\x00\x00\x00\x00\x00\x00\x00\x53\x4f\x48\xb4\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x65\xd3\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x65\xd2\x6a\xde\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x52\xb9\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x49\x49\x00\x00\x00\x00\x00\x00\x00\x00\x63\x7f\x00\x00\x00\x00\x00\x00\x00\x00\x65\xd4\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x55\xee\x00\x00\x65\xd5\x65\xd6\x53\xd7\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x65\xd7\x00\x00\x00\x00\x65\xd8\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5a\xba\x00\x00\x54\x9b\x59\xb6\x4c\xfb\x00\x00\x00\x00\x65\xc1\x00\x00\x49\xdb\x00\x00\x00\x00\x51\xfb\x00\x00\x5a\xf7\x56\xe5", /* 6700 */ "\x5c\x8f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5a\xc1\x5a\x70\x66\x63\x53\x94\x00\x00\x4c\x9f\x00\x00\x00\x00\x66\x74\x00\x00\x00\x00\x00\x00\x56\x57\x66\x7e\x00\x00\x50\xc9\x00\x00\x00\x00\x00\x00\x57\x9c\x00\x00\x4a\x4f\x00\x00\x53\xd9\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x66\x9d\x00\x00\x52\xbd\x00\x00\x57\xb3\x52\xa8\x49\x5e\x5a\xfc\x00\x00\x55\xf4\x00\x00\x5b\xeb\x00\x00\x00\x00\x53\xd2\x4b\xe3\x00\x00\x00\x00\x00\x00\x00\x00\x4e\x9b\x00\x00\x00\x00\x58\xdf\x00\x00\x00\x00\x55\x51\x00\x00\x5a\xd2\x54\xa7\x00\x00\x00\x00\x4c\xca\x00\x00\x64\xbd\x55\x5c\x00\x00\x00\x00\x64\xba\x00\x00\x50\xed\x58\xd2\x49\xc3\x4a\xe4\x00\x00\x64\xbb\x00\x00\x00\x00\x5b\x68\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4b\xc4\x00\x00\x64\xbc\x55\xf7\x4c\xdb\x56\xf4\x00\x00\x00\x00\x00\x00\x50\xb3\x00\x00\x00\x00\x59\x8f\x64\xbe\x64\xc1\x00\x00\x00\x00\x4d\xbb\x00\x00\x49\x4d\x4f\x7c\x00\x00\x65\xbc\x64\xc2\x00\x00\x64\xc5\x00\x00\x64\xca\x00\x00\x00\x00\x00\x00\x00\x00\x64\xcb\x00\x00\x56\x69\x48\xe4", /* 6780 */ "\x00\x00\x4e\xaa\x00\x00\x00\x00\x4d\x59\x00\x00\x00\x00\x64\xc0\x00\x00\x57\x98\x00\x00\x64\xc9\x00\x00\x00\x00\x00\x00\x00\x00\x57\xf5\x00\x00\x00\x00\x00\x00\x00\x00\x5b\x8e\x00\x00\x51\x76\x64\xc3\x00\x00\x52\x56\x00\x00\x4d\x9c\x5b\xa5\x64\xc7\x00\x00\x00\x00\x00\x00\x55\xdf\x5a\xe5\x00\x00\x64\xbf\x00\x00\x64\xc4\x64\xc6\x00\x00\x54\x59\x4c\x84\x00\x00\x64\xc8\x00\x00\x50\x7d\x64\xd1\x00\x00\x00\x00\x64\xd6\x00\x00\x64\xd4\x4e\xdb\x4e\xce\x64\xda\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x64\xdd\x00\x00\x64\xd9\x49\x9b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x48\xd7\x52\xb2\x4c\xcb\x53\xe1\x54\xbd\x54\xe0\x00\x00\x00\x00\x00\x00\x64\xce\x64\xd3\x64\xd5\x00\x00\x4d\x92\x64\xd7\x5c\x96\x00\x00\x52\xfa\x00\x00\x64\xdb\x00\x00\x00\x00\x49\xe8\x00\x00\x00\x00\x00\x00\x64\xd0\x00\x00\x00\x00\x4e\xec\x00\x00\x00\x00\x50\x62\x64\xcc\x5b\xf8\x00\x00\x51\x99\x49\xf0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x64\xde\x00\x00\x55\xc0", /* 6800 */ "\x64\xd8\x00\x00\x00\x00\x00\x00\x00\x00\x5b\x44\x00\x00\x49\x8b\x5b\x5b\x64\xcd\x64\xcf\x4b\xaf\x64\xd2\x00\x00\x64\xdc\x50\xb7\x00\x00\x55\xf6\x00\x00\x56\x48\x00\x00\x00\x00\x53\xdb\x50\xf4\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x64\xe8\x00\x00\x00\x00\x00\x00\x58\xa2\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x64\xf1\x5b\xe9\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x64\xdf\x64\xe0\x00\x00\x00\x00\x00\x00\x59\x9a\x4d\xca\x4c\xf8\x00\x00\x00\x00\x4c\xf0\x5a\xd3\x64\xee\x00\x00\x64\xed\x64\xeb\x4d\x91\x56\xd1\x64\xe5\x57\xa5\x50\x93\x00\x00\x48\xb7\x64\xf0\x64\xef\x00\x00\x5c\x60\x00\x00\x64\xe3\x00\x00\x57\x49\x55\x43\x00\x00\x4e\x58\x4f\x7b\x64\xe9\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x64\xe1\x64\xe2\x64\xe4\x4b\x55\x64\xe6\x54\x65\x64\xea\x64\xec\x4f\x50\x5c\x4e\x00\x00\x64\xf7\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x64\xf4\x00\x00\x57\x50\x64\xf5\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 6880 */ "\x00\x00\x51\x5a\x00\x00\x64\xe7\x00\x00\x52\x57\x48\xef\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x64\xf3\x00\x00\x00\x00\x00\x00\x64\xf6\x00\x00\x00\x00\x00\x00\x4d\x43\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x55\x72\x00\x00\x00\x00\x00\x00\x52\x6e\x57\xdf\x50\xe5\x00\x00\x00\x00\x00\x00\x00\x00\x56\x94\x00\x00\x56\xdc\x58\xb4\x00\x00\x00\x00\x55\xe0\x00\x00\x64\xf2\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4e\xeb\x00\x00\x64\xf8\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x52\x7e\x00\x00\x53\xe4\x00\x00\x4d\x98\x00\x00\x00\x00\x00\x00\x00\x00\x48\xf3\x00\x00\x00\x00\x5c\x78\x00\x00\x00\x00\x4e\xab\x00\x00\x53\x90\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x56\xc3\x00\x00\x00\x00\x65\x46\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x55\x4d\x00\x00\x65\x42\x50\xe1\x00\x00\x00\x00\x00\x00\x50\x63\x00\x00\x00\x00\x00\x00\x64\xfd\x4d\x77\x00\x00\x64\xfa\x00\x00\x00\x00\x00\x00", /* 6900 */ "\x00\x00\x65\x44\x00\x00\x00\x00\x00\x00\x59\xcd\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x65\x43\x00\x00\x5b\xb1\x5c\x55\x00\x00\x65\x47\x00\x00\x4f\x57\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x64\xfb\x64\xfc\x00\x00\x00\x00\x00\x00\x65\x41\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x57\x76\x00\x00\x00\x00\x59\xab\x00\x00\x00\x00\x00\x00\x65\x52\x00\x00\x00\x00\x00\x00\x00\x00\x65\x49\x00\x00\x00\x00\x00\x00\x4a\xa9\x00\x00\x4a\xba\x00\x00\x00\x00\x65\x4b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x58\xa7\x00\x00\x00\x00\x65\x45\x00\x00\x00\x00\x4a\x9f\x00\x00\x00\x00\x65\x4c\x50\xe2\x00\x00\x65\x4a\x00\x00\x00\x00\x65\x59\x00\x00\x00\x00\x65\x58\x00\x00\x00\x00\x00\x00\x00\x00\x65\x4e\x00\x00\x00\x00\x64\xf9\x00\x00\x00\x00\x65\x48\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x50\x4c\x65\x51\x65\x5a\x00\x00\x00\x00\x51\xa4\x00\x00\x00\x00\x00\x00", /* 6980 */ "\x65\x4f\x00\x00\x4c\xc4\x00\x00\x65\x4d\x00\x00\x5a\x7c\x65\x54\x65\x55\x65\x57\x00\x00\x00\x00\x00\x00\x65\x67\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x50\xc5\x65\x65\x00\x00\x00\x00\x65\x50\x00\x00\x00\x00\x65\x5b\x48\xf0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x65\x5c\x5b\x45\x00\x00\x00\x00\x65\x5e\x00\x00\x65\x5f\x00\x00\x00\x00\x00\x00\x65\x61\x00\x00\x00\x00\x51\x92\x00\x00\x00\x00\x54\xb5\x00\x00\x00\x00\x00\x00\x65\x5d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x65\x62\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x65\x63\x00\x00\x65\x53\x00\x00\x65\x56\x00\x00\x4e\x51\x00\x00\x00\x00\x00\x00\x65\x60\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4e\xf6\x00\x00\x00\x00\x00\x00\x65\x64\x65\x66\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x65\x6a\x00\x00\x00\x00\x00\x00\x00\x00\x65\x6e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x49\xda\x00\x00\x65\x68", /* 6a00 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4c\x4e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x65\x6b\x65\x6c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5b\x61\x00\x00\x52\xa2\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x65\x78\x00\x00\x4d\xe0\x00\x00\x00\x00\x00\x00\x00\x00\x65\x69\x00\x00\x5a\x43\x00\x00\x00\x00\x00\x00\x65\x74\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x65\x77\x65\x70\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x65\x6f\x00\x00\x00\x00\x54\x61\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x65\x72\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x65\x79\x4a\x68\x00\x00\x65\x73\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x58\x91\x00\x00\x00\x00\x00\x00\x65\x6d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4a\x98\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x65\x76\x00\x00\x00\x00\x65\x7a\x00\x00\x00\x00\x00\x00", /* 6a80 */ "\x56\xb3\x00\x00\x00\x00\x00\x00\x58\x4d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x65\x75\x00\x00\x65\x7c\x65\x7b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x65\x7e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x65\x71\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x65\x7d\x00\x00\x65\x7f\x52\x6a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 6b00 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x54\x57\x4a\xcd\x4e\x56\x58\xbf\x66\xa2\x00\x00\x00\x00\x53\x57\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5a\x9c\x00\x00\x00\x00\x00\x00\x00\x00\x66\xa3\x00\x00\x66\xa4\x53\xda\x00\x00\x00\x00\x00\x00\x50\x8f\x00\x00\x00\x00\x00\x00\x00\x00\x66\xa5\x00\x00\x00\x00\x66\xa6\x58\xa9\x00\x00\x54\x58\x00\x00\x00\x00\x4c\xe7\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x66\xa7\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5b\xb8\x5b\x9e\x4a\xca\x49\xbc\x57\xe3\x53\xe6\x00\x00\x00\x00\x57\x82\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4a\xf4\x00\x00\x56\x60\x4e\xde\x00\x00\x00\x00\x00\x00", /* 6b80 */ "\x00\x00\x65\x83\x65\x84\x59\x8b\x65\x86\x00\x00\x4a\xf8\x65\x85\x00\x00\x59\x53\x55\xe1\x49\xcf\x00\x00\x65\x89\x00\x00\x00\x00\x00\x00\x00\x00\x65\x87\x65\x88\x00\x00\x00\x00\x5b\xb2\x00\x00\x00\x00\x00\x00\x65\x8a\x65\x8b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x65\x8c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x65\x8d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x66\xae\x53\x59\x4b\xcd\x00\x00\x59\xf2\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4b\x8f\x00\x00\x4e\x79\x66\xb0\x00\x00\x00\x00\x59\xe2\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x57\xe2\x00\x00\x52\xb7\x00\x00\x52\x5f\x00\x00\x00\x00\x4b\xbd\x5c\xb8\x49\x68\x49\x6f\x49\x71\x53\x9f\x00\x00\x49\x70\x00\x00\x52\x4b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5b\x51\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x66\x44\x4d\xc0\x00\x00\x00\x00\x00\x00\x56\xb9\x00\x00\x00\x00\x00\x00\x66\x45\x00\x00\x66\x47\x00\x00\x00\x00\x00\x00\x66\x48\x00\x00\x00\x00\x00\x00\x66\x46\x00\x00\x00\x00", /* 6c00 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x66\x49\x66\x4b\x66\x4a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x66\x4c\x00\x00\x55\xce\x5c\xb4\x52\x92\x00\x00\x52\x45\x53\xf7\x66\x4d\x52\xc9\x00\x00\x66\x4e\x66\x4f\x66\x50\x4c\x75\x00\x00\x00\x00\x00\x00\x4c\x9b\x00\x00\x66\x51\x54\x83\x00\x00\x66\x53\x00\x00\x4d\xa3\x59\x96\x48\xb0\x66\x52\x66\x54\x00\x00\x00\x00\x00\x00\x4b\x4a\x51\xc7\x54\x89\x00\x00\x66\x55\x00\x00\x56\x4e\x62\x7f\x00\x00\x00\x00\x5a\x60\x00\x00\x00\x00\x00\x00\x00\x00\x5d\x7b\x00\x00\x00\x00\x57\x41\x5b\xac\x54\x94\x00\x00\x00\x00\x00\x00\x5d\x81\x4e\x84\x00\x00\x4d\xb9\x62\x83\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x58\x4b\x00\x00\x00\x00\x00\x00\x62\x81\x55\x67\x00\x00\x4d\xb8\x00\x00\x00\x00\x00\x00\x59\x54\x62\x82\x54\xe9\x4d\x4f\x4f\x4d\x4a\x78\x57\xda\x00\x00\x00\x00\x56\xbf\x00\x00\x00\x00\x00\x00\x62\x89\x62\x8a\x57\x95\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x56\xac\x00\x00\x4e\xb2\x00\x00\x62\x8b\x00\x00\x62\x8c\x00\x00\x00\x00\x58\xd9\x00\x00\x00\x00\x00\x00\x53\xfa\x4c\x7a\x00\x00", /* 6c80 */ "\x00\x00\x54\x7f\x59\xc9\x57\xd5\x00\x00\x62\x85\x62\x8d\x00\x00\x55\x93\x4a\x61\x00\x00\x00\x00\x62\x88\x00\x00\x00\x00\x53\xe2\x62\x86\x00\x00\x00\x00\x67\x53\x62\x87\x00\x00\x00\x00\x00\x00\x00\x00\x55\x53\x00\x00\x53\x87\x00\x00\x00\x00\x00\x00\x4d\x55\x00\x00\x52\x5b\x00\x00\x62\x84\x53\x5d\x51\x44\x51\xd8\x49\xd6\x00\x00\x62\x8e\x4e\x46\x52\xac\x00\x00\x62\x91\x4f\xd9\x00\x00\x00\x00\x62\x9c\x62\x96\x4d\xd2\x00\x00\x00\x00\x00\x00\x00\x00\x4c\x70\x5a\x6d\x00\x00\x5b\xcd\x5b\x73\x4d\x61\x5b\x54\x59\x78\x00\x00\x00\x00\x00\x00\x00\x00\x58\xb8\x54\x97\x00\x00\x00\x00\x00\x00\x54\xa9\x49\xb3\x00\x00\x52\x7a\x00\x00\x00\x00\x00\x00\x62\x8f\x00\x00\x00\x00\x62\x9d\x62\x90\x4c\x48\x62\x98\x62\x95\x00\x00\x00\x00\x00\x00\x4c\x5a\x00\x00\x00\x00\x53\x42\x00\x00\x62\x97\x53\x7d\x49\xa7\x53\xfb\x00\x00\x52\xdf\x00\x00\x00\x00\x5c\x42\x00\x00\x50\xe0\x62\x9a\x00\x00\x00\x00\x62\x9b\x62\x9e\x56\xa8\x62\x94\x00\x00\x5a\x5e\x00\x00\x49\x63\x67\x54\x62\x92\x62\x93\x00\x00\x62\x99\x58\xb9\x53\xc2\x5a\xf2\x62\x9f\x00\x00", /* 6d00 */ "\x00\x00\x4f\x81\x00\x00\x00\x00\x62\xa6\x00\x00\x00\x00\x62\xa5\x00\x00\x00\x00\x00\x00\x59\x94\x62\xa2\x00\x00\x62\xa8\x00\x00\x00\x00\x00\x00\x54\xf6\x00\x00\x00\x00\x00\x00\x00\x00\x58\x54\x00\x00\x62\xa7\x62\xad\x51\xe4\x00\x00\x00\x00\x4b\xb3\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4f\x93\x00\x00\x62\xa1\x00\x00\x00\x00\x4d\xe8\x62\xa9\x00\x00\x00\x00\x62\xab\x00\x00\x00\x00\x4b\xfc\x5b\xdd\x62\xb1\x00\x00\x62\xac\x00\x00\x00\x00\x00\x00\x62\xa0\x00\x00\x4e\x8f\x57\x7d\x54\x42\x53\x69\x00\x00\x00\x00\x51\x98\x00\x00\x62\xa3\x00\x00\x54\x53\x4f\x4c\x4f\x5d\x62\xa4\x00\x00\x5c\x67\x49\xe1\x00\x00\x62\xaa\x4e\xc2\x62\xae\x00\x00\x4e\x8c\x62\xaf\x53\x48\x62\xb0\x00\x00\x00\x00\x00\x00\x00\x00\x5b\x84\x50\x43\x00\x00\x62\xb9\x00\x00\x62\xb6\x00\x00\x62\xba\x00\x00\x00\x00\x62\xbc\x00\x00\x00\x00\x53\xd5\x00\x00\x00\x00\x4d\xc5\x50\xca\x00\x00\x00\x00\x00\x00\x4c\xa0\x62\xb3\x00\x00\x00\x00\x00\x00\x00\x00\x5a\xa0\x00\x00\x00\x00\x4d\xa2\x4f\x9f\x00\x00\x00\x00\x00\x00\x62\xbb\x00\x00\x00\x00\x00\x00", /* 6d80 */ "\x00\x00\x00\x00\x57\x5f\x00\x00\x00\x00\x52\xf8\x00\x00\x00\x00\x58\x9c\x55\x87\x00\x00\x00\x00\x5a\x5f\x00\x00\x58\x71\x00\x00\x00\x00\x62\xb2\x00\x00\x62\xb7\x62\xb8\x56\xe8\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x56\xcd\x00\x00\x50\xd3\x62\xb4\x51\x50\x62\xb5\x57\xcf\x00\x00\x4e\x61\x4b\x73\x00\x00\x54\xf2\x4f\x47\x5b\x67\x55\x4c\x4c\xa1\x62\xc9\x00\x00\x00\x00\x62\xcb\x59\x64\x00\x00\x00\x00\x59\xb9\x00\x00\x00\x00\x4d\xac\x00\x00\x00\x00\x4d\xd3\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x62\xc2\x4b\x8e\x00\x00\x00\x00\x00\x00\x5c\x6d\x62\xbf\x58\x9e\x62\xbe\x00\x00\x00\x00\x00\x00\x51\x7c\x56\xc9\x00\x00\x00\x00\x00\x00\x00\x00\x55\xe6\x00\x00\x00\x00\x00\x00\x00\x00\x52\xd6\x00\x00\x56\xd3\x62\xc7\x00\x00\x00\x00\x00\x00\x62\xc6\x62\xc0\x00\x00\x62\xc3\x4b\x4d\x00\x00\x00\x00\x5a\x79\x00\x00\x62\xc5\x00\x00\x00\x00\x00\x00\x00\x00\x59\xf8\x4a\xe2\x00\x00\x4e\x54\x00\x00\x00\x00\x55\x8f\x00\x00\x4a\xbd\x00\x00\x00\x00\x00\x00\x4e\x8d\x00\x00\x59\x6d\x00\x00\x56\xec\x67\x55\x00\x00\x00\x00\x00\x00", /* 6e00 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x54\x86\x00\x00\x00\x00\x00\x00\x00\x00\x5a\xa7\x00\x00\x62\xca\x5c\x75\x62\xc1\x00\x00\x4f\x45\x62\xc4\x00\x00\x00\x00\x5a\x87\x00\x00\x62\xc8\x55\x99\x00\x00\x00\x00\x62\xbd\x00\x00\x00\x00\x5a\x86\x00\x00\x00\x00\x54\x9f\x4b\xc8\x00\x00\x5a\xfb\x49\xb2\x62\xd6\x00\x00\x00\x00\x00\x00\x57\xc1\x00\x00\x62\xcc\x00\x00\x57\xbb\x00\x00\x4c\xda\x00\x00\x00\x00\x62\xd5\x00\x00\x50\x6a\x00\x00\x00\x00\x00\x00\x5a\x6e\x00\x00\x52\x8d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x53\x68\x62\xd7\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x57\x64\x62\xce\x00\x00\x00\x00\x00\x00\x00\x00\x62\xd3\x62\xd4\x00\x00\x4d\xfd\x00\x00\x58\x87\x00\x00\x00\x00\x5b\x5f\x00\x00\x00\x00\x00\x00\x62\xd1\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x62\xcf\x00\x00\x00\x00\x62\xcd\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x57\x86\x55\xa9", /* 6e80 */ "\x00\x00\x00\x00\x00\x00\x50\xa2\x00\x00\x4f\x46\x62\xd2\x00\x00\x00\x00\x4c\xc7\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x62\xe6\x5a\xb3\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x62\xda\x00\x00\x00\x00\x00\x00\x51\x90\x00\x00\x00\x00\x62\xe8\x00\x00\x00\x00\x59\xe6\x00\x00\x00\x00\x62\xde\x00\x00\x62\xdf\x00\x00\x00\x00\x58\x4a\x00\x00\x00\x00\x00\x00\x00\x00\x56\x7d\x00\x00\x62\xd9\x62\xd0\x00\x00\x62\xe4\x00\x00\x54\xdb\x62\xe2\x00\x00\x00\x00\x52\xe6\x62\xe1\x00\x00\x62\xe0\x00\x00\x00\x00\x00\x00\x4a\x9d\x62\xe7\x00\x00\x00\x00\x00\x00\x00\x00\x4b\x82\x00\x00\x00\x00\x00\x00\x5c\x6c\x00\x00\x00\x00\x00\x00\x62\xe5\x00\x00\x4e\x4c\x00\x00\x5c\x72\x56\xce\x66\x99\x00\x00\x62\xe3\x00\x00\x00\x00\x4d\x97\x00\x00\x00\x00\x00\x00\x5b\xcc\x62\xd8\x62\xdb\x51\xf9\x62\xdd\x00\x00\x51\xca\x50\xc3\x51\xcf\x00\x00\x49\x96\x56\xb1\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4b\x6e\x00\x00\x00\x00\x00\x00\x00\x00\x62\xee\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 6f00 */ "\x00\x00\x00\x00\x53\xae\x00\x00\x00\x00\x00\x00\x53\xe0\x00\x00\x00\x00\x62\xf4\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x51\xa8\x00\x00\x00\x00\x00\x00\x50\xeb\x59\x7d\x62\xed\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x52\xad\x00\x00\x00\x00\x00\x00\x62\xec\x00\x00\x00\x00\x00\x00\x00\x00\x62\xf5\x62\xf3\x51\xfd\x00\x00\x62\xdc\x00\x00\x62\xef\x00\x00\x55\xfd\x00\x00\x5b\x64\x00\x00\x00\x00\x62\xf0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x59\x9b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x62\xea\x62\xeb\x00\x00\x00\x00\x00\x00\x62\xf1\x00\x00\x57\xaa\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x53\x6b\x00\x00\x00\x00\x00\x00\x54\x51\x00\x00\x51\xb9\x00\x00\x00\x00\x00\x00\x62\xe9\x00\x00\x00\x00\x00\x00\x51\x6a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x56\xb5\x4a\x51\x00\x00\x00\x00\x00\x00\x62\xfa\x00\x00\x62\xf2\x00\x00\x00\x00\x00\x00\x62\xf9\x00\x00\x62\xfc\x00\x00\x62\xfb\x00\x00\x00\x00\x00\x00", /* 6f80 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x4a\x6e\x00\x00\x00\x00\x00\x00\x4a\x5a\x62\xf6\x00\x00\x00\x00\x62\xf8\x62\xf7\x53\x8d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x50\xbc\x00\x00\x00\x00\x00\x00\x00\x00\x5a\xe7\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x63\x42\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x48\xc3\x00\x00\x00\x00\x63\x44\x00\x00\x00\x00\x63\x43\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4e\xa3\x00\x00\x63\x45\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x63\x41\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x62\xfd\x49\x95\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x63\x48\x00\x00\x63\x49\x63\x46\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x63\x47\x63\x4a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 7000 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x53\xd8\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x63\x4b\x63\x4d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x63\x4c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x63\x4f\x00\x00\x00\x00\x00\x00\x63\x4e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4d\x81\x00\x00\x00\x00\x63\x50\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x63\x51\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4e\x91\x66\xe0\x52\x91\x00\x00\x4b\x66\x4e\x72\x00\x00\x00\x00\x00\x00\x00\x00\x51\x8a\x5a\xed\x00\x00\x4f\xc3\x00\x00\x00\x00\x00\x00\x5c\x66\x00\x00\x5a\xd5\x49\xd2", /* 7080 */ "\x66\xbd\x00\x00\x00\x00\x00\x00\x00\x00\x65\xc0\x00\x00\x00\x00\x00\x00\x51\xae\x4a\xb5\x00\x00\x00\x00\x00\x00\x59\x77\x00\x00\x00\x00\x00\x00\x4a\x54\x00\x00\x54\xb1\x50\x5b\x66\xbf\x00\x00\x00\x00\x5b\xca\x00\x00\x00\x00\x66\xbe\x66\xc0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x66\xc4\x4f\xe5\x56\xbe\x53\x7a\x4f\xbb\x00\x00\x66\xc5\x00\x00\x49\x9f\x00\x00\x00\x00\x00\x00\x66\xc3\x5b\x48\x4b\x84\x00\x00\x66\xc1\x51\x56\x4a\x84\x00\x00\x00\x00\x66\xc2\x56\x58\x50\xc2\x56\xfd\x00\x00\x00\x00\x00\x00\x00\x00\x51\x72\x00\x00\x66\xc7\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4d\xe5\x50\xd2\x00\x00\x5b\xf1\x00\x00\x00\x00\x00\x00\x59\x6c\x00\x00\x00\x00\x00\x00\x00\x00\x50\x5e\x00\x00\x4c\x53\x55\x75\x66\xc6\x4e\x83\x00\x00\x56\xcb\x4f\x9e\x54\xc7\x00\x00\x58\x49\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x57\x8a\x00\x00\x53\x8c\x00\x00\x00\x00\x00\x00\x4c\x8a\x00\x00\x00\x00", /* 7100 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x59\x69\x4d\xb7\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x66\xc8\x00\x00\x00\x00\x66\xc9\x00\x00\x4e\x60\x66\xca\x00\x00\x66\xe1\x49\x5a\x4c\x79\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4f\x59\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x66\xcb\x59\x87\x66\xcc\x00\x00\x00\x00\x00\x00\x00\x00\x54\xba\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x66\xd0\x00\x00\x00\x00\x00\x00\x00\x00\x66\xd2\x00\x00\x4e\x6d\x00\x00\x4e\xe4\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x66\xce\x00\x00\x55\x57\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x52\x5a\x00\x00\x66\xe2\x5b\x75\x66\xcf\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5b\xf2\x00\x00\x00\x00\x00\x00\x66\xd1\x66\xcd\x00\x00\x00\x00\x00\x00\x00\x00\x66\xd3\x00\x00\x66\xd4\x00\x00\x00\x00\x55\x5f\x00\x00\x00\x00", /* 7180 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x58\x48\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x58\xdb\x00\x00\x00\x00\x00\x00\x00\x00\x59\x4c\x00\x00\x00\x00\x00\x00\x00\x00\x54\xda\x00\x00\x00\x00\x00\x00\x66\xd5\x57\xf4\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x55\xeb\x66\xd9\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x66\xd8\x00\x00\x00\x00\x00\x00\x48\xbd\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x66\xd6\x00\x00\x66\xd7\x00\x00\x00\x00\x00\x00\x66\xe3\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x54\xbb\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x51\x67\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x66\xdb\x59\x81\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x66\xda\x00\x00\x00\x00\x00\x00\x00\x00\x5a\xee\x00\x00\x66\xdc\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5e\x66\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x66\xdd\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 7200 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x49\x4c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x66\xde\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x66\xdf\x00\x00\x5c\x46\x00\x00\x53\x60\x00\x00\x00\x00\x00\x00\x66\x5c\x48\xad\x00\x00\x00\x00\x00\x00\x4f\xf3\x4c\xb7\x59\xae\x48\xd5\x4b\x9a\x00\x00\x5c\xb2\x00\x00\x56\x4c\x00\x00\x62\x7d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x53\xab\x48\xe5\x00\x00\x00\x00\x00\x00\x53\x66\x66\x59\x00\x00\x00\x00\x00\x00\x00\x00\x66\x5a\x00\x00\x00\x00\x00\x00\x66\x5b\x00\x00\x00\x00\x59\x60\x00\x00\x53\x43\x00\x00\x65\xf1\x00\x00\x52\xb1\x00\x00\x52\xb4\x50\xcd\x00\x00\x00\x00\x00\x00\x65\xf2\x52\xc0\x00\x00\x57\xee\x00\x00\x00\x00\x00\x00\x00\x00\x65\xef\x65\xf3\x00\x00\x00\x00\x55\x9d\x00\x00\x00\x00\x54\x43\x00\x00\x00\x00\x00\x00\x56\xd7\x57\xfd\x00\x00\x00\x00\x00\x00\x65\xf4\x65\xf5", /* 7280 */ "\x58\x4c\x50\xe6\x00\x00\x00\x00\x65\xf6\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4b\xbe\x65\xf7\x00\x00\x65\xf8\x00\x00\x65\xf9\x00\x00\x00\x00\x65\xfa\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x65\xf0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x54\xad\x61\x8c\x00\x00\x4c\x58\x61\x8d\x00\x00\x00\x00\x00\x00\x61\x8e\x00\x00\x5c\x54\x61\x8f\x61\x90\x5a\x6c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x61\x92\x50\x92\x61\x91\x4b\x72\x00\x00\x00\x00\x00\x00\x49\x57\x00\x00\x00\x00\x00\x00\x00\x00\x61\x94\x61\x93\x00\x00\x4d\xfb\x00\x00\x61\x95\x00\x00\x00\x00\x00\x00\x00\x00\x4d\x57\x00\x00\x4f\xd0\x00\x00\x00\x00\x00\x00\x00\x00\x52\xfb\x00\x00\x4d\xdc\x4f\x66\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x61\x96\x61\x98\x00\x00\x00\x00\x4b\xbf\x58\x61\x55\xa7\x61\x97\x5b\x99\x5a\x9d\x61\x99\x61\x9d\x61\x9a\x00\x00\x00\x00\x61\x9b\x50\xe9\x00\x00\x61\x9f\x61\xa0\x50\xc6\x00\x00\x00\x00\x00\x00", /* 7300 */ "\x00\x00\x61\x9c\x00\x00\x61\x9e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x61\xa4\x00\x00\x00\x00\x00\x00\x51\x74\x00\x00\x00\x00\x00\x00\x00\x00\x61\xa2\x00\x00\x61\xa7\x49\xfd\x61\xa1\x00\x00\x00\x00\x00\x00\x52\x6d\x49\xc1\x61\xa6\x61\xa5\x00\x00\x00\x00\x61\xa3\x61\xa8\x00\x00\x00\x00\x61\xaa\x00\x00\x00\x00\x00\x00\x58\xc8\x5b\xec\x52\x48\x61\xab\x00\x00\x58\x77\x00\x00\x00\x00\x61\xad\x00\x00\x00\x00\x4d\xee\x00\x00\x00\x00\x65\x81\x61\xac\x61\xa9\x00\x00\x00\x00\x00\x00\x00\x00\x4e\x4b\x5a\xb2\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x61\xaf\x00\x00\x00\x00\x61\xae\x00\x00\x65\x82\x00\x00\x00\x00\x00\x00\x00\x00\x61\xb0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x61\xb1\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x61\xb2\x56\xa0\x00\x00\x61\xb3\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x61\xb4\x00\x00", /* 7380 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x58\xfd\x00\x00\x00\x00\x51\xc9\x00\x00\x5a\x92\x00\x00\x57\x96\x00\x00\x00\x00\x64\x81\x00\x00\x00\x00\x64\x82\x00\x00\x00\x00\x00\x00\x00\x00\x4f\xc0\x00\x00\x00\x00\x00\x00\x00\x00\x51\xe9\x00\x00\x00\x00\x00\x00\x64\x85\x00\x00\x00\x00\x64\x84\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x57\x87\x00\x00\x52\x55\x00\x00\x00\x00\x64\x83\x4e\x57\x58\x76\x00\x00\x51\x82\x64\x8a\x00\x00\x00\x00\x00\x00\x64\x89\x00\x00\x00\x00\x64\x95\x49\xa2\x00\x00\x00\x00\x00\x00\x00\x00\x64\x8b\x00\x00\x64\x87\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x64\x8d\x64\x8c\x55\x5a\x00\x00\x00\x00\x5b\x85\x00\x00\x64\x86\x4c\x49\x64\x88\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x64\x8f\x00\x00\x00\x00\x00\x00\x00\x00\x64\x94\x00\x00\x5b\xe8\x00\x00\x00\x00\x00\x00\x00\x00\x64\x8e\x00\x00\x64\x93\x00\x00\x64\x92\x00\x00\x00\x00\x00\x00\x48\xdf\x00\x00\x00\x00\x00\x00\x00\x00\x64\x96\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 7400 */ "\x00\x00\x00\x00\x00\x00\x54\x93\x00\x00\x50\xc4\x50\xec\x00\x00\x00\x00\x51\x91\x64\x91\x00\x00\x00\x00\x00\x00\x00\x00\x64\x97\x56\x97\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x64\xa1\x64\xa0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5c\x61\x00\x00\x00\x00\x64\x9b\x64\x9a\x00\x00\x64\x9c\x00\x00\x64\x98\x00\x00\x64\x9f\x00\x00\x64\x9e\x00\x00\x64\x9d\x00\x00\x00\x00\x51\x75\x54\x79\x53\x9e\x53\x63\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x54\x8e\x00\x00\x00\x00\x00\x00\x00\x00\x64\xa2\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x64\xa5\x00\x00\x64\xa4\x00\x00\x64\xa6\x4d\xf6\x64\x99\x64\xa3\x00\x00\x54\xef\x55\x4a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x64\xa8\x00\x00\x00\x00\x4d\x86\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x59\x9f\x64\xa7\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x64\xa9\x00\x00", /* 7480 */ "\x64\xac\x64\xad\x00\x00\x51\x47\x00\x00\x00\x00\x00\x00\x64\xae\x00\x00\x00\x00\x00\x00\x64\xaf\x00\x00\x00\x00\x64\xab\x00\x00\x64\xb3\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x64\xaa\x00\x00\x64\xb0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x64\xb4\x64\xb1\x64\xb2\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x64\xb6\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x64\xb5\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4d\x6f\x00\x00\x68\xab\x00\x00\x68\xac\x00\x00\x53\xaf\x48\xe9\x54\xbe\x00\x00\x57\x7f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x57\xcc\x65\xb0\x00\x00\x00\x00\x00\x00\x00\x00\x65\xb1\x00\x00\x53\xbe\x4a\xc8\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x65\xb2", /* 7500 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x5b\x88\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5f\x9a\x00\x00\x65\xb3\x00\x00\x65\xb4\x00\x00\x65\xb5\x00\x00\x00\x00\x00\x00\x00\x00\x4c\xc9\x60\x50\x55\x96\x00\x00\x56\xef\x00\x00\x00\x00\x55\x9b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x55\x9c\x00\x00\x00\x00\x5a\x63\x56\x46\x00\x00\x4c\xa5\x68\xad\x49\x62\x00\x00\x63\x58\x56\xee\x5a\x69\x4e\xd6\x55\x8b\x00\x00\x4b\x88\x00\x00\x52\xcf\x4b\x8a\x00\x00\x67\xad\x4e\x4d\x00\x00\x00\x00\x64\x7e\x00\x00\x67\xae\x00\x00\x00\x00\x00\x00\x00\x00\x4a\x49\x00\x00\x00\x00\x67\xb1\x00\x00\x00\x00\x67\xb0\x4f\x88\x00\x00\x67\xaf\x57\xb6\x00\x00\x00\x00\x00\x00\x00\x00\x53\x6f\x00\x00\x00\x00\x00\x00\x00\x00\x51\x95\x5e\x6e\x67\xb2\x58\xf2\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x51\xd3\x53\xe7\x00\x00\x00\x00\x00\x00\x4c\x4c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x67\xb3\x00\x00\x4a\x8c\x00\x00\x00\x00\x00\x00\x4e\x9c\x67\xb4\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x64\x7c", /* 7580 */ "\x00\x00\x00\x00\x00\x00\x67\xb5\x00\x00\x00\x00\x4f\x4e\x00\x00\x00\x00\x00\x00\x00\x00\x69\x83\x00\x00\x00\x00\x00\x00\x55\xe7\x00\x00\x59\xc8\x68\xd9\x00\x00\x68\xda\x00\x00\x68\xdb\x51\x66\x00\x00\x4c\xec\x4f\xcd\x00\x00\x00\x00\x68\xdd\x00\x00\x53\x51\x68\xdc\x59\x92\x00\x00\x68\xdf\x48\xcb\x4f\x8b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x59\xde\x68\xde\x00\x00\x4a\xae\x4c\x89\x68\xe5\x68\xe4\x53\xa2\x68\xe0\x68\xe1\x4a\xc2\x00\x00\x00\x00\x68\xe2\x5b\x8f\x00\x00\x00\x00\x56\xda\x4f\xd1\x4e\xb1\x00\x00\x00\x00\x00\x00\x68\xe7\x68\xe6\x68\xe3\x49\xa0\x00\x00\x5b\xa1\x5a\x58\x4f\xb6\x54\xab\x00\x00\x00\x00\x68\xe9\x00\x00\x00\x00\x00\x00\x00\x00\x59\x98\x00\x00\x5b\xcb\x4d\xda\x68\xe8\x00\x00\x4b\xba\x00\x00\x00\x00\x57\x54\x00\x00\x00\x00\x53\xa5\x00\x00\x00\x00\x00\x00\x51\x41\x68\xea\x68\xed\x00\x00\x68\xec\x68\xef\x68\xeb\x00\x00\x4e\x5e\x68\xee\x00\x00\x00\x00\x00\x00\x00\x00\x56\xb4\x68\xf1\x00\x00\x00\x00\x4a\x75\x00\x00\x00\x00\x00\x00\x00\x00\x49\x74\x00\x00\x00\x00\x68\xf2\x00\x00\x00\x00\x68\xf3", /* 7600 */ "\x68\xf5\x4a\xe0\x00\x00\x68\xf0\x00\x00\x68\xf6\x00\x00\x00\x00\x00\x00\x00\x00\x68\xf9\x00\x00\x68\xf7\x00\x00\x00\x00\x00\x00\x68\xf4\x00\x00\x00\x00\x00\x00\x00\x00\x68\xfc\x00\x00\x68\xf8\x68\xfb\x68\xfd\x00\x00\x69\x41\x00\x00\x00\x00\x00\x00\x57\xc0\x69\x44\x00\x00\x69\x43\x00\x00\x51\x97\x68\xfa\x55\xdc\x00\x00\x00\x00\x4a\xf0\x49\x92\x56\xb0\x00\x00\x69\x46\x00\x00\x00\x00\x69\x47\x00\x00\x00\x00\x69\x4c\x5b\x6e\x69\x49\x00\x00\x00\x00\x54\xb2\x00\x00\x00\x00\x00\x00\x69\x42\x00\x00\x69\x4b\x69\x48\x69\x45\x00\x00\x00\x00\x69\x4a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x48\xa8\x69\x4d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x69\x4f\x00\x00\x69\x51\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x69\x50\x00\x00\x69\x4e\x00\x00\x00\x00\x00\x00\x00\x00\x59\x42\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x69\x52\x00\x00\x00\x00\x00\x00\x69\x53\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4d\x90\x00\x00\x00\x00\x4b\x67\x00\x00\x48\xd6\x48\xd8\x00\x00", /* 7680 */ "\x00\x00\x00\x00\x5a\xec\x00\x00\x4b\x64\x00\x00\x4f\x74\x4e\x6a\x68\xa6\x00\x00\x00\x00\x4c\xdd\x00\x00\x00\x00\x68\xa7\x00\x00\x00\x00\x48\xa7\x00\x00\x68\xa8\x00\x00\x00\x00\x57\x8f\x00\x00\x00\x00\x68\xa9\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x68\xaa\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x53\xa3\x00\x00\x00\x00\x5b\xe4\x69\x85\x00\x00\x69\x86\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x52\x94\x00\x00\x00\x00\x5a\x7b\x00\x00\x00\x00\x5b\xd0\x53\x89\x00\x00\x5a\x4f\x00\x00\x59\xe5\x00\x00\x00\x00\x67\xc0\x48\xba\x5b\x55\x59\x6e\x4e\xdf\x4d\xcf\x00\x00\x50\x99\x00\x00\x4c\xc6\x4b\x61\x53\x6c\x00\x00\x00\x00\x55\xa1\x00\x00\x00\x00\x00\x00\x52\x6b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x67\xc1\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x52\xbe\x4b\xa1\x00\x00\x67\x8d\x52\x44\x00\x00\x5b\xb0\x00\x00\x00\x00\x00\x00\x58\x81\x67\x90\x00\x00\x00\x00\x53\x6e\x00\x00\x4b\xdb\x00\x00", /* 7700 */ "\x00\x00\x55\xa0\x00\x00\x00\x00\x67\x8e\x00\x00\x00\x00\x67\x91\x67\x92\x52\x5c\x00\x00\x50\x54\x00\x00\x67\x8f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x67\x95\x67\x93\x00\x00\x00\x00\x00\x00\x00\x00\x5b\x87\x52\x7f\x00\x00\x67\x94\x00\x00\x00\x00\x00\x00\x67\x97\x00\x00\x5b\x43\x59\x43\x00\x00\x00\x00\x00\x00\x67\x96\x00\x00\x52\x70\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x67\x98\x50\x95\x4f\xeb\x67\x99\x00\x00\x56\xf6\x00\x00\x59\x7b\x00\x00\x00\x00\x00\x00\x5c\x65\x5b\x97\x00\x00\x67\x9d\x00\x00\x00\x00\x00\x00\x67\x9c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x67\x9a\x67\x9b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x67\x9e\x4f\xa5\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x56\x4f\x67\xa0\x4b\xbc\x00\x00\x67\xa1\x52\xbf\x00\x00\x67\x9f\x00\x00\x00\x00\x4f\x7e\x49\xc6\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4b\xc2\x00\x00\x00\x00\x00\x00\x67\xa4\x5c\xb9\x67\xa2", /* 7780 */ "\x67\xa5\x00\x00\x00\x00\x00\x00\x52\x8a\x4a\x93\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x67\xa6\x67\xa3\x58\x59\x00\x00\x00\x00\x67\xa7\x51\xf6\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x67\xa8\x67\xa9\x00\x00\x5f\xaa\x00\x00\x00\x00\x53\xb2\x00\x00\x54\x66\x00\x00\x5b\xf4\x4b\x69\x00\x00\x56\x52\x00\x00\x00\x00\x00\x00\x67\xaa\x00\x00\x00\x00\x57\x4b\x00\x00\x67\xab\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5b\x50\x00\x00\x67\xac\x00\x00\x6b\xc3\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5e\x67\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4a\xa2\x00\x00\x00\x00\x00\x00\x52\x4c\x69\x87\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x55\xb7\x59\xd2\x00\x00\x5b\xa9\x00\x00\x68\x93\x00\x00\x4f\xd7\x00\x00\x4f\x63\x68\x94\x4b\xcb\x48\xaa\x00\x00\x00\x00\x00\x00\x00\x00\x55\xae\x00\x00\x00\x00\x67\x56\x00\x00\x67\x57\x00\x00\x00\x00\x00\x00\x00\x00\x57\xf8\x4c\x4f\x50\x94", /* 7800 */ "\x67\x58\x51\xea\x55\x50\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x67\x59\x00\x00\x00\x00\x53\xf5\x50\x53\x00\x00\x00\x00\x00\x00\x67\x5c\x53\x99\x00\x00\x59\x70\x00\x00\x5c\x49\x67\x5a\x67\x5b\x00\x00\x59\x83\x00\x00\x67\x5f\x67\x60\x00\x00\x67\x64\x00\x00\x00\x00\x00\x00\x67\x68\x00\x00\x67\x66\x67\x6e\x5b\x89\x00\x00\x67\x69\x00\x00\x00\x00\x67\x67\x67\x5e\x00\x00\x00\x00\x53\x8a\x00\x00\x00\x00\x00\x00\x53\xc5\x00\x00\x00\x00\x55\x8a\x5a\xd1\x67\x61\x67\x62\x67\x63\x67\x65\x00\x00\x50\xf8\x00\x00\x4a\xa0\x00\x00\x00\x00\x00\x00\x00\x00\x4d\x89\x00\x00\x67\x70\x00\x00\x00\x00\x00\x00\x00\x00\x67\x71\x00\x00\x67\x6a\x00\x00\x67\x6f\x00\x00\x57\xf7\x00\x00\x00\x00\x56\x56\x67\x6c\x67\x6d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x58\x96\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x67\x72\x51\x93\x5a\x52\x67\x6b\x54\xb6\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4e\xee\x00\x00\x00\x00\x00\x00\x00\x00\x53\x91\x00\x00\x00\x00\x00\x00", /* 7880 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x67\x76\x00\x00\x4b\x90\x00\x00\x00\x00\x51\xb4\x48\xac\x56\x8a\x00\x00\x00\x00\x49\x4e\x00\x00\x67\x74\x00\x00\x00\x00\x00\x00\x57\x8c\x4b\x83\x00\x00\x67\x75\x67\x73\x67\x77\x00\x00\x00\x00\x4b\x9b\x00\x00\x67\x78\x00\x00\x67\x79\x00\x00\x67\x7c\x00\x00\x49\x6c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x53\x97\x4e\xed\x67\x7a\x56\xbb\x49\xe9\x00\x00\x00\x00\x00\x00\x00\x00\x67\x7b\x00\x00\x00\x00\x00\x00\x00\x00\x52\xea\x00\x00\x00\x00\x4a\xc4\x00\x00\x00\x00\x00\x00\x48\xf4\x00\x00\x00\x00\x00\x00\x67\x7f\x50\xd9\x4a\xe7\x00\x00\x00\x00\x00\x00\x00\x00\x53\x6d\x00\x00\x00\x00\x00\x00\x67\x7d\x50\x64\x00\x00\x00\x00\x00\x00\x67\x7e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x52\xa4\x00\x00\x00\x00\x00\x00\x67\x81\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x67\x82\x00\x00\x67\x84\x00\x00\x00\x00\x51\x77\x00\x00\x00\x00\x4e\x67\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 7900 */ "\x00\x00\x4f\x58\x00\x00\x00\x00\x00\x00\x67\x83\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x67\x85\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x67\x87\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x67\x86\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x67\x88\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x55\xbd\x66\xe9\x50\xf0\x00\x00\x55\x88\x00\x00\x66\xea\x53\xed\x00\x00\x00\x00\x00\x00\x00\x00\x66\xeb\x00\x00\x53\xec\x66\xec\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x66\xef\x00\x00\x00\x00\x5c\x87\x66\xf2\x00\x00\x00\x00\x66\xf0\x66\xed\x66\xee\x5c\x43\x55\x92\x56\x8f\x66\xf3\x00\x00\x66\xf1\x00\x00\x00\x00\x58\x8a\x00\x00\x66\xf5\x53\xb0\x00\x00\x00\x00\x00\x00\x00\x00\x4e\xbf\x00\x00\x66\xf4\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4b\x5b\x4e\x97\x00\x00\x66\xf6\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 7980 */ "\x5d\x98\x4f\x9c\x00\x00\x00\x00\x51\xba\x66\xf7\x00\x00\x00\x00\x00\x00\x00\x00\x66\xf8\x00\x00\x00\x00\x00\x00\x00\x00\x4c\xa2\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x66\xf9\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x66\xfa\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x66\xfb\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5a\x8e\x5c\xad\x50\xea\x00\x00\x54\x7d\x4d\xcb\x00\x00\x58\xe2\x56\x5d\x00\x00\x57\x5a\x00\x00\x00\x00\x4c\xd0\x00\x00\x00\x00\x49\x9d\x00\x00\x54\x90\x00\x00\x5b\xd5\x00\x00\x00\x00\x00\x00\x50\x66\x52\x8c\x00\x00\x00\x00\x68\x96\x00\x00\x00\x00\x52\x78\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5c\x83\x00\x00\x00\x00\x00\x00\x68\x98\x4a\x73\x00\x00\x54\x78\x59\x8e\x00\x00\x5b\xc7\x00\x00\x68\x99\x00\x00\x68\x97\x00\x00\x4e\x9e\x4a\x66\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4f\x75\x00\x00\x00\x00\x59\xc5\x00\x00\x4e\x81\x00\x00\x00\x00", /* 7a00 */ "\x58\x41\x00\x00\x68\x9d\x68\x9c\x00\x00\x00\x00\x68\x9a\x00\x00\x00\x00\x00\x00\x00\x00\x4a\x6c\x00\x00\x55\x74\x56\x50\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x68\x9f\x00\x00\x00\x00\x48\xdd\x00\x00\x00\x00\x5b\xc8\x00\x00\x00\x00\x00\x00\x68\x9e\x00\x00\x4a\x8e\x00\x00\x00\x00\x6b\xd4\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x57\xc7\x00\x00\x00\x00\x00\x00\x68\xa1\x00\x00\x68\xa0\x00\x00\x4b\x5e\x4e\xd9\x4e\x9d\x00\x00\x4c\xe4\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x52\xc1\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x68\xa2\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x56\x8c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x68\xa5\x00\x00\x00\x00\x00\x00\x59\x48\x00\x00\x4f\xbe\x54\x8f\x69\x56\x69\x57\x50\x75\x00\x00\x00\x00\x00\x00\x00\x00\x4a\xa8", /* 7a80 */ "\x69\x58\x57\x5b\x00\x00\x54\x74\x5b\x4d\x00\x00\x69\x59\x00\x00\x69\x5a\x00\x00\x00\x00\x00\x00\x00\x00\x54\x6f\x00\x00\x00\x00\x00\x00\x59\xa3\x5b\xce\x00\x00\x00\x00\x69\x5b\x4f\x71\x4a\xaf\x4f\xbc\x00\x00\x00\x00\x00\x00\x4a\xdb\x57\xd0\x00\x00\x50\x7f\x69\x5d\x00\x00\x00\x00\x00\x00\x00\x00\x50\x9b\x69\x5c\x00\x00\x69\x5f\x00\x00\x00\x00\x00\x00\x69\x5e\x69\x60\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x69\x61\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x51\x9f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x51\x42\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x55\xf9\x00\x00\x00\x00\x5b\x5e\x00\x00\x00\x00\x00\x00\x00\x00\x4f\xb9\x4f\xb8\x5b\x62\x00\x00\x00\x00\x50\x42\x00\x00\x57\x4f\x69\x55\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4f\x7f\x00\x00\x4b\xca\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5b\xf0\x6a\x63\x00\x00\x00\x00\x6a\x64\x00\x00\x4c\xcc", /* 7b00 */ "\x00\x00\x00\x00\x00\x00\x6a\x66\x6a\x67\x00\x00\x48\xc9\x00\x00\x6a\x65\x00\x00\x6a\x69\x56\x92\x00\x00\x00\x00\x00\x00\x6a\x6b\x00\x00\x58\xa5\x00\x00\x00\x00\x49\x6a\x6a\x68\x00\x00\x00\x00\x00\x00\x6a\x6f\x00\x00\x4b\x71\x00\x00\x00\x00\x6a\x77\x00\x00\x6a\x72\x00\x00\x00\x00\x00\x00\x6a\x74\x6a\x73\x4c\x9c\x00\x00\x49\x5f\x00\x00\x6a\x6e\x6a\x6a\x4b\x7a\x00\x00\x6a\x70\x00\x00\x00\x00\x6a\x71\x00\x00\x6a\x75\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x6d\x00\x00\x4e\xe2\x00\x00\x51\x9e\x00\x00\x6a\x76\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x7a\x00\x00\x6a\x6c\x00\x00\x4b\x68\x00\x00\x4f\x8f\x6a\x7c\x00\x00\x00\x00\x4c\x44\x50\x91\x5b\xfd\x57\x52\x00\x00\x4a\xef\x00\x00\x49\xde\x00\x00\x6a\x78\x00\x00\x6a\x79\x55\x58\x00\x00\x6a\x7d\x00\x00\x00\x00\x6a\x7e\x00\x00\x6a\x82\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x7f\x00\x00\x00\x00\x6a\x84\x6a\x83\x00\x00\x00\x00\x6a\x7b\x00\x00\x50\x8b\x00\x00\x4a\x90\x00\x00\x6a\x81\x00\x00\x00\x00\x54\x49\x00\x00", /* 7b80 */ "\x4e\xf1\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x8c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4d\x5f\x00\x00\x00\x00\x6a\x85\x00\x00\x00\x00\x00\x00\x49\xac\x4e\x9f\x00\x00\x56\x84\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x8e\x6a\x8a\x00\x00\x00\x00\x00\x00\x4d\x7c\x6a\x8f\x00\x00\x00\x00\x00\x00\x6a\x86\x6a\x87\x6a\x8b\x51\xe0\x6a\x8d\x6a\x90\x6a\x89\x4e\xfc\x00\x00\x00\x00\x00\x00\x58\x85\x00\x00\x00\x00\x6a\x91\x00\x00\x00\x00\x00\x00\x6a\x88\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x93\x00\x00\x00\x00\x00\x00\x00\x00\x5c\x4d\x53\xa9\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x94\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x92\x00\x00\x51\xa7\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4c\xdc\x6a\x96\x00\x00\x00\x00\x6a\x95\x00\x00\x00\x00\x00\x00\x4a\xda\x00\x00\x00\x00\x00\x00\x6a\x97\x6a\x98\x00\x00\x00\x00\x00\x00\x6a\x99\x00\x00\x00\x00\x00\x00\x50\xb9\x00\x00\x00\x00\x50\xe8\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x53\x92\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x9c\x00\x00\x6a\x9b\x00\x00", /* 7c00 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4a\xd7\x00\x00\x00\x00\x00\x00\x6a\x9f\x6a\x9a\x00\x00\x00\x00\x6a\x9d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x9e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\xa0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\xa2\x4e\x69\x00\x00\x00\x00\x6a\xa1\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\xa3\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x49\xbd\x6a\xa5\x6a\xa4\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4e\xad\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x52\x77\x5d\x82\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x50\xdf\x6a\xcb\x5c\x71\x00\x00\x00\x00", /* 7c80 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4c\x7b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\xcd\x51\x43\x00\x00\x00\x00\x53\xc8\x00\x00\x4a\xd5\x5b\x53\x00\x00\x00\x00\x00\x00\x6a\xcf\x6a\xce\x6a\xd0\x56\x7a\x00\x00\x00\x00\x6a\xd1\x00\x00\x5a\xc0\x5b\xdf\x00\x00\x00\x00\x00\x00\x00\x00\x4c\x81\x00\x00\x00\x00\x00\x00\x51\x58\x00\x00\x00\x00\x51\x5b\x6a\xd2\x4f\xab\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4a\xe1\x00\x00\x00\x00\x6a\xd3\x6a\xd4\x4f\xaa\x00\x00\x00\x00\x6a\xd5\x00\x00\x00\x00\x00\x00\x6a\xda\x00\x00\x6a\xd6\x6a\xd9\x00\x00\x4d\xfc\x00\x00\x6a\xd7\x6a\xd8\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4c\xe1\x56\xc6\x6a\xdb\x00\x00\x49\xd9\x00\x00\x00\x00\x52\x73\x00\x00\x00\x00\x5a\xe2\x50\x57\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\xdc\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x53\x54\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\xe8\x00\x00\x00\x00\x58\x55\x00\x00\x00\x00\x00\x00\x00\x00", /* 7d00 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x57\xc8\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x56\x78\x00\x00\x56\x98\x00\x00\x00\x00\x00\x00\x00\x00\x4f\x95\x00\x00\x00\x00\x00\x00\x5c\x6f\x00\x00\x00\x00\x00\x00\x50\xda\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x58\xf4\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\xe9\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 7d80 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\xea\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\xeb\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 7e00 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6c\x84\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4c\x51\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\xec\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 7e80 */ "\x00\x00\x00\x00\x5c\x8c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\xed\x00\x00\x00\x00\x00\x00\x63\xf8\x4f\xbf\x63\xf9\x4d\xeb\x63\xfa\x58\x6b\x63\xfb\x5a\xbb\x4e\xb5\x63\xfc\x63\xfd\x4e\xcc\x54\xd1\x57\xb2\x64\x41\x00\x00\x4a\xbe\x64\x42\x55\x54\x4c\xd8\x52\xc8\x00\x00\x5c\x7d\x51\xd9\x4c\x77\x5b\xbc\x57\xc5\x4c\x64\x00\x00\x00\x00\x53\x46\x64\x43\x58\x7f\x64\x44\x64\x45\x64\x46\x51\x57\x5c\x8a\x55\x91\x58\x58\x5b\xae\x5b\xd4\x64\x47\x48\xec\x64\x48\x64\x49\x55\x7c\x59\xee\x4f\xac\x64\x4a\x48\xf2\x54\xdd\x4f\x82\x64\x4b\x54\xc5\x00\x00\x64\x4c\x4e\x87\x4c\xf7\x59\x44\x64\x4d\x51\xe6\x4f\xf7\x4f\x6a\x57\x53\x64\x4e\x64\x4f\x4f\xed\x58\xe4\x00\x00\x56\x88\x56\xcf\x4e\xcb\x64\x50\x4e\xa7\x58\xf6\x64\x51\x00\x00\x58\xf7\x64\x52\x64\x53\x4a\xc1\x64\x54\x64\x55\x55\x9f\x57\xab\x52\x81\x64\x57\x49\x61\x4a\x92\x00\x00\x64\x58\x64\x59\x5c\x7b\x5b\x60\x64\x5a\x51\xcb", /* 7f00 */ "\x5c\x5a\x64\x5b\x64\x5c\x64\x5d\x4e\xe9\x52\x86\x50\xc1\x64\x5e\x64\x5f\x4e\xa8\x00\x00\x64\x60\x64\x61\x64\x56\x4b\xcf\x64\x62\x00\x00\x64\x63\x64\x64\x4e\x5a\x4b\x7e\x51\xc5\x49\x81\x64\x65\x5a\xb4\x64\x66\x4c\xbe\x64\x68\x64\x67\x4c\x8d\x00\x00\x64\x69\x49\xf7\x64\x6a\x64\x6b\x64\x6c\x64\x6d\x64\x6e\x64\x6f\x64\x70\x5a\x47\x56\x96\x64\x71\x64\x72\x64\x73\x64\x74\x55\x69\x64\x75\x64\x76\x64\x77\x64\x78\x64\x79\x4f\x69\x64\x7a\x6a\x5e\x00\x00\x4c\xd6\x00\x00\x54\xb0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x5f\x00\x00\x6a\x60\x6a\x61\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4d\x7e\x57\x99\x00\x00\x00\x00\x5c\xe7\x4d\xb0\x00\x00\x51\xdd\x67\xb6\x00\x00\x4c\x43\x00\x00\x00\x00\x00\x00\x00\x00\x67\xb8\x00\x00\x67\xb7\x48\xd4\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x67\xba\x5b\x76\x5c\x90\x00\x00\x00\x00\x00\x00\x5b\xc2\x00\x00\x00\x00\x67\xbc\x55\xef\x00\x00\x67\xbb\x00\x00\x00\x00\x00\x00\x00\x00\x67\xbd\x00\x00\x00\x00\x00\x00\x00\x00\x67\xbf\x00\x00", /* 7f80 */ "\x00\x00\x67\xbe\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x59\x93\x00\x00\x54\x5c\x00\x00\x52\x60\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4c\xe0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x51\x88\x00\x00\x00\x00\x6a\xc5\x58\xde\x6a\xc6\x00\x00\x58\x7b\x00\x00\x00\x00\x54\xb9\x00\x00\x00\x00\x6a\xc7\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\xc8\x6a\xc9\x00\x00\x6a\xca\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5d\x9b\x4c\xfd\x00\x00\x00\x00\x63\x92\x5a\x91\x00\x00\x6a\xdf\x00\x00\x57\xcb\x00\x00\x00\x00\x00\x00\x4a\x82\x00\x00\x00\x00\x00\x00\x00\x00\x69\x54\x00\x00\x59\xed\x00\x00\x6a\xe0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x58\x89\x6a\xe1\x00\x00\x00\x00\x54\x6c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4b\x74\x4a\xe3\x6a\xe3\x00\x00\x00\x00\x00\x00\x6a\xe2\x6a\xe4\x00\x00\x00\x00\x6a\xe5\x00\x00\x00\x00\x00\x00\x00\x00\x6a\xe6\x00\x00\x4d\xb1\x48\xbe\x00\x00\x6a\xe7\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4c\x4d\x59\xec\x00\x00\x00\x00\x00\x00", /* 8000 */ "\x59\xaa\x50\xce\x00\x00\x50\x5c\x66\x43\x5b\x7f\x65\xc7\x00\x00\x00\x00\x00\x00\x00\x00\x69\x94\x4b\xf7\x56\x43\x00\x00\x00\x00\x52\xcc\x00\x00\x69\x88\x00\x00\x69\x89\x4c\xfa\x69\x8a\x4d\xc3\x5a\xc4\x48\xd1\x00\x00\x00\x00\x69\x8b\x00\x00\x00\x00\x00\x00\x69\x8c\x00\x00\x69\x8d\x00\x00\x00\x00\x69\x8e\x69\x8f\x69\x90\x69\x92\x69\x91\x53\x75\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x69\x93\x00\x00\x4b\xf9\x00\x00\x69\x95\x59\xad\x5f\xc6\x56\x6a\x00\x00\x00\x00\x4a\x7c\x00\x00\x4b\x42\x00\x00\x4d\x42\x00\x00\x00\x00\x52\xf3\x69\x96\x00\x00\x00\x00\x69\x97\x00\x00\x00\x00\x00\x00\x51\x64\x51\x9c\x5b\xaf\x69\x98\x00\x00\x00\x00\x00\x00\x00\x00\x69\x99\x00\x00\x51\x4a\x00\x00\x00\x00\x00\x00\x53\xb7\x00\x00\x4f\xda\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x69\x9a\x4a\xce\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x69\x9b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x67\x52", /* 8080 */ "\x67\x51\x00\x00\x00\x00\x56\x81\x59\xdd\x00\x00\x56\x61\x5b\x78\x00\x00\x54\xe1\x00\x00\x50\xde\x4e\xa0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x66\x61\x00\x00\x00\x00\x58\xa3\x00\x00\x5b\xe1\x00\x00\x4b\xc6\x4c\xd7\x66\x60\x4c\xcd\x00\x00\x66\x5f\x4a\x46\x4d\x69\x5b\xaa\x00\x00\x4c\x95\x4c\x6a\x00\x00\x00\x00\x00\x00\x4e\xe6\x4c\x5e\x66\x66\x00\x00\x66\x67\x48\xb8\x50\x6f\x00\x00\x66\x65\x5a\x9e\x00\x00\x66\x68\x00\x00\x00\x00\x66\x69\x00\x00\x00\x00\x4c\x6e\x00\x00\x66\x62\x66\x64\x55\x97\x5b\xd6\x5b\x6d\x58\xb1\x66\x6f\x57\xb7\x66\x70\x00\x00\x4b\x48\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x49\x53\x66\x72\x56\xa4\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x53\x76\x66\x73\x00\x00\x66\x71\x53\x7f\x66\x6e\x55\xa3\x66\x75\x48\xfa\x00\x00\x00\x00\x4d\xf9\x00\x00\x00\x00\x5c\xb6\x69\x84\x00\x00\x66\x6a\x66\x6b\x66\x6c\x66\x6d\x66\x76\x63\xbf\x66\x79\x00\x00\x50\x89\x59\xc7\x66\x77\x66\x7c\x4c\xeb\x66\x78\x00\x00\x4f\x5a\x00\x00\x58\xd7\x00\x00\x48\xb6\x00\x00\x66\x7d\x52\xdb\x00\x00\x00\x00", /* 8100 */ "\x00\x00\x00\x00\x5b\xab\x00\x00\x00\x00\x00\x00\x4a\xdf\x00\x00\x00\x00\x51\xf5\x4e\xb8\x00\x00\x00\x00\x66\x7a\x66\x7b\x5a\xdf\x53\xe9\x52\xd3\x66\x7f\x53\x47\x5d\x96\x00\x00\x49\xb0\x00\x00\x66\x85\x00\x00\x4f\x65\x00\x00\x00\x00\x00\x00\x66\x83\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x66\x84\x00\x00\x00\x00\x4c\xab\x00\x00\x57\x71\x66\x86\x00\x00\x00\x00\x00\x00\x66\x82\x00\x00\x51\x53\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x53\xa1\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x56\xf2\x00\x00\x66\x87\x00\x00\x50\xaf\x59\xb7\x66\x88\x00\x00\x00\x00\x00\x00\x4c\xae\x4c\xac\x00\x00\x66\x89\x54\x5b\x57\x94\x00\x00\x00\x00\x00\x00\x66\x8b\x66\x8c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x66\x8e\x00\x00\x00\x00\x00\x00\x00\x00\x58\xc7\x00\x00\x66\x93\x00\x00\x66\x8f\x00\x00\x00\x00\x00\x00\x66\x92\x54\xf8\x00\x00\x59\x9d\x66\x8d\x00\x00\x00\x00\x66\x8a\x00\x00\x00\x00\x00\x00\x00\x00\x4c\xb8\x58\x79\x52\xe4\x66\x90\x66\x91\x56\xd9\x57\x68", /* 8180 */ "\x48\xf1\x00\x00\x66\x97\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x66\x96\x00\x00\x49\xb1\x00\x00\x00\x00\x00\x00\x00\x00\x4c\xdf\x00\x00\x66\x98\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x49\x8d\x00\x00\x00\x00\x56\xc4\x52\xa3\x58\x45\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x66\x9a\x00\x00\x00\x00\x66\xa1\x00\x00\x53\x93\x00\x00\x66\x9b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x55\x65\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x61\xde\x66\x9f\x00\x00\x00\x00\x00\x00\x00\x00\x57\x6e\x66\xa0\x49\x7b\x5a\x57\x00\x00\x00\x00\x59\xdb\x00\x00\x00\x00\x00\x00\x66\x9e\x00\x00\x66\x9c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4a\x5c\x00\x00\x00\x00\x00\x00\x65\xaf\x00\x00\x00\x00\x5c\x74\x00\x00\x6a\xaa\x4a\x95\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5b\xc0\x5b\xc1\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5b\x8a\x4f\xc9\x00\x00\x6a\xa6\x00\x00", /* 8200 */ "\x59\xa7\x6a\xa7\x6a\xa8\x00\x00\x6a\xa9\x4f\xca\x5a\x7f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x55\x81\x55\x82\x00\x00\x00\x00\x6a\x62\x00\x00\x55\xe5\x00\x00\x56\xf1\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x61\xb5\x56\x54\x00\x00\x57\xe7\x5b\xda\x00\x00\x6a\xac\x6a\xad\x6a\xae\x00\x00\x00\x00\x00\x00\x00\x00\x6a\xb1\x00\x00\x4d\xbc\x6a\xb2\x48\xe2\x6a\xaf\x00\x00\x6a\xb0\x4f\x42\x49\xd4\x00\x00\x6a\xb5\x6a\xb6\x4b\xe5\x49\xaf\x58\x6f\x6a\xb3\x4a\xab\x00\x00\x6a\xb4\x00\x00\x00\x00\x6a\xb7\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\xb8\x00\x00\x00\x00\x57\x47\x00\x00\x6a\xb9\x00\x00\x6a\xba\x00\x00\x00\x00\x00\x00\x6a\xbb\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x56\x72\x00\x00\x6a\xbc\x00\x00\x00\x00\x00\x00\x00\x00\x6a\xbd\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\xbe\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\xdd\x51\x5c\x4e\xe7\x00\x00\x55\x4b\x59\x7e\x63\x96\x00\x00\x00\x00\x00\x00\x00\x00\x5e\xb2\x59\xd4\x00\x00\x00\x00\x5e\xb3\x48\xab\x5e\xb4", /* 8280 */ "\x00\x00\x00\x00\x4f\x7a\x00\x00\x5e\xb8\x00\x00\x00\x00\x00\x00\x5c\xc1\x00\x00\x5e\xb6\x5a\x94\x00\x00\x55\x76\x5e\xb9\x5e\xb5\x00\x00\x5e\xba\x52\x42\x00\x00\x00\x00\x00\x00\x00\x00\x5e\xbb\x5e\xc4\x5e\xbc\x00\x00\x00\x00\x57\xde\x5b\xa4\x00\x00\x5e\xce\x00\x00\x5e\xcc\x00\x00\x00\x00\x5e\xd1\x4f\x87\x51\xaa\x00\x00\x5e\xb7\x5e\xca\x5e\xcd\x5e\xbd\x4c\x72\x48\xc4\x5e\xc6\x58\xbd\x5e\xc0\x4e\x48\x00\x00\x4c\x5c\x5e\xcb\x00\x00\x00\x00\x5e\xc5\x5e\xbe\x54\x7b\x00\x00\x00\x00\x00\x00\x59\x5f\x5e\xbf\x00\x00\x00\x00\x5e\xc9\x00\x00\x00\x00\x5e\xcf\x00\x00\x00\x00\x57\xac\x5e\xc1\x00\x00\x5e\xc2\x5e\xc7\x5e\xc8\x49\xd3\x5e\xd0\x56\x75\x00\x00\x5a\xb6\x5e\xda\x5e\xde\x56\xa5\x5e\xe5\x00\x00\x52\x88\x5e\xdb\x00\x00\x00\x00\x50\x61\x5e\xd8\x00\x00\x48\xf9\x4d\x56\x5e\xe4\x5e\xd2\x00\x00\x5e\xc3\x5e\xd5\x54\xf3\x50\x81\x00\x00\x00\x00\x00\x00\x00\x00\x55\x5b\x00\x00\x00\x00\x00\x00\x49\x5d\x00\x00\x5a\x42\x00\x00\x00\x00\x5e\xd9\x00\x00\x00\x00\x5e\xd4\x00\x00\x53\xba\x00\x00\x5e\xdd\x00\x00\x00\x00\x00\x00\x00\x00", /* 8300 */ "\x00\x00\x5c\x62\x52\x4f\x4c\x56\x54\x71\x52\x49\x5e\xe1\x5e\xd7\x5e\xea\x5e\xd3\x00\x00\x00\x00\x5e\xdc\x00\x00\x4f\xa4\x5e\xd6\x00\x00\x5e\xdf\x00\x00\x00\x00\x5e\xe2\x5e\xe3\x00\x00\x5e\xf7\x00\x00\x00\x00\x5e\xe0\x5f\x42\x5e\xe6\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4e\xea\x4a\xc3\x00\x00\x00\x00\x52\x43\x49\xe6\x5e\xf9\x00\x00\x5e\xf1\x00\x00\x5e\xee\x00\x00\x5e\xfb\x5e\xed\x59\xef\x49\xe7\x00\x00\x54\xd6\x54\xe2\x5e\xfa\x00\x00\x5e\xec\x00\x00\x00\x00\x00\x00\x5e\xf6\x00\x00\x00\x00\x5e\xf4\x00\x00\x00\x00\x4f\xa2\x5e\xf3\x00\x00\x49\xdc\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5e\xf2\x4e\xf5\x5e\xe7\x4e\x64\x00\x00\x50\xf2\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4e\xd3\x5e\xe8\x5e\xe9\x00\x00\x5e\xf0\x5e\xf5\x5e\xf8\x4b\x54\x00\x00\x54\xd8\x4e\x88\x5e\xfd\x5e\xfc\x5a\x4b\x5f\x41\x5f\x43\x5f\x45\x59\xf0\x5f\x44\x5f\x46\x5f\x47\x59\xa8\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4d\xc8\x5f\x49\x00\x00\x00\x00\x5f\x56\x5f\x51\x5f\x54\x00\x00\x00\x00", /* 8380 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5f\x50\x53\xcd\x00\x00\x00\x00\x50\xf1\x00\x00\x00\x00\x00\x00\x00\x00\x55\x4f\x00\x00\x00\x00\x00\x00\x5e\xeb\x5f\x4e\x00\x00\x00\x00\x00\x00\x00\x00\x5f\x57\x00\x00\x00\x00\x5e\xef\x5f\x4f\x00\x00\x5f\x58\x00\x00\x5f\x4c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5f\x59\x5f\x53\x5f\x4d\x52\xa9\x00\x00\x00\x00\x00\x00\x00\x00\x5f\x48\x50\xb2\x51\x4b\x5f\x4a\x5f\x4b\x00\x00\x5f\x52\x4e\x92\x5f\x55\x5a\x48\x5f\x5a\x00\x00\x5f\x5b\x52\x47\x00\x00\x00\x00\x5f\x72\x5f\x5c\x00\x00\x00\x00\x00\x00\x5f\x71\x00\x00\x4d\x5d\x00\x00\x00\x00\x4f\xd4\x00\x00\x4f\xf9\x00\x00\x00\x00\x4d\xc9\x00\x00\x00\x00\x00\x00\x00\x00\x5f\x6a\x00\x00\x5f\x65\x00\x00\x5f\x5f\x00\x00\x00\x00\x00\x00\x49\xca\x5f\x63\x00\x00\x5f\x6b\x49\xa3\x5f\x75\x00\x00\x00\x00\x00\x00\x5f\x5e\x00\x00\x00\x00\x00\x00\x53\xcf\x5f\x70\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5f\x74\x51\x83\x4c\x66\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5f\x6e\x5f\x6f\x00\x00\x00\x00\x00\x00\x5f\x64\x00\x00\x00\x00", /* 8400 */ "\x00\x00\x5f\x5d\x00\x00\x5f\x6d\x56\xd0\x00\x00\x5f\x69\x00\x00\x00\x00\x00\x00\x00\x00\x5f\x62\x52\x68\x53\xbb\x57\xad\x5f\x6c\x00\x00\x5f\x68\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5f\x61\x00\x00\x00\x00\x00\x00\x5f\x66\x51\xdb\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5a\x49\x5a\x4a\x5f\x73\x58\x95\x54\xf7\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5f\x87\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5f\x67\x00\x00\x00\x00\x00\x00\x5f\x81\x51\xe3\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5f\x82\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5f\x77\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5b\xf7\x00\x00\x5f\x79\x5f\x78\x4c\xef\x5f\x76\x00\x00\x00\x00\x00\x00\x00\x00\x53\xce\x00\x00\x4b\xac\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5f\x83\x00\x00\x4d\xf8\x5a\xe0\x5f\x88\x00\x00\x00\x00\x00\x00\x4a\xcf\x00\x00\x5f\x7a\x00\x00\x50\x9c\x5f\x84\x00\x00\x5f\x7f\x00\x00\x5f\x7d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 8480 */ "\x00\x00\x00\x00\x4b\x79\x00\x00\x00\x00\x00\x00\x00\x00\x5f\x7b\x5f\x7c\x5f\x7e\x00\x00\x4f\x4f\x5f\x85\x00\x00\x5f\x86\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5f\x96\x00\x00\x52\x69\x00\x00\x00\x00\x56\x83\x00\x00\x00\x00\x00\x00\x00\x00\x5f\x93\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5c\xe0\x00\x00\x00\x00\x53\xd0\x00\x00\x5f\x95\x00\x00\x00\x00\x00\x00\x5b\x95\x5f\x94\x5f\x91\x00\x00\x00\x00\x5f\x8d\x00\x00\x5f\x90\x00\x00\x5f\x89\x00\x00\x00\x00\x58\xed\x00\x00\x00\x00\x00\x00\x00\x00\x54\xd7\x5f\x8f\x00\x00\x00\x00\x5f\x8a\x00\x00\x00\x00\x5f\x8b\x56\x93\x00\x00\x5f\x8e\x00\x00\x00\x00\x49\x6d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x50\xb5\x00\x00\x4e\xba\x5f\x92\x00\x00\x00\x00\x5f\x98\x00\x00\x5f\x97\x5f\x8c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x53\x8f\x00\x00\x00\x00\x00\x00\x5f\x9c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5f\xa3\x00\x00\x00\x00\x5f\xa2", /* 8500 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5f\x99\x00\x00\x00\x00\x00\x00\x00\x00\x52\x90\x00\x00\x51\xfa\x00\x00\x00\x00\x00\x00\x5b\x82\x00\x00\x00\x00\x57\xb4\x00\x00\x00\x00\x00\x00\x00\x00\x5f\x9e\x00\x00\x49\xcb\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x52\xe7\x55\xde\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x54\x5e\x5f\x9b\x5f\x9d\x5f\x9f\x5f\xa1\x48\xa9\x49\x6e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5f\xab\x00\x00\x00\x00\x00\x00\x00\x00\x5f\xa5\x4f\x56\x54\xee\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5f\xa0\x00\x00\x00\x00\x5f\xa4\x00\x00\x00\x00\x00\x00\x00\x00\x5f\xa8\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5f\xa7\x00\x00\x00\x00\x00\x00\x5f\xa6\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5f\xac\x00\x00\x5a\xcb\x00\x00\x00\x00\x00\x00\x00\x00\x5f\xb2\x5f\xa9\x5f\xad\x00\x00\x00\x00\x50\xd8\x00\x00", /* 8580 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x49\x41\x5f\xb5\x00\x00\x5f\xb0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5f\xb1\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x59\x46\x5f\xb4\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5f\xae\x00\x00\x00\x00\x00\x00\x5f\xaf\x00\x00\x58\xbc\x00\x00\x00\x00\x00\x00\x5f\xb3\x55\xec\x5f\xb8\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5f\xb7\x00\x00\x5f\xb6\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5f\xba\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4f\x86\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x49\xd7\x52\x8b\x00\x00\x00\x00\x5f\xb9\x00\x00\x53\x5a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5f\xbb\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x56\xd8\x00\x00\x00\x00\x00\x00\x00\x00\x4c\x4a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5a\xe4\x00\x00\x00\x00\x00\x00\x5f\xbc", /* 8600 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5f\xbe\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x52\xa1\x00\x00\x00\x00\x00\x00\x00\x00\x5f\xc0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5f\xbd\x00\x00\x5f\xbf\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5b\x5a\x00\x00\x00\x00\x00\x00\x5f\xc1\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x69\xad\x4e\x42\x51\xb1\x53\x50\x51\xc6\x00\x00\x00\x00\x69\xae\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x58\xe8\x00\x00\x00\x00\x00\x00\x5a\x7d\x00\x00\x00\x00\x00\x00\x66\x5d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4a\x87\x69\xaf\x00\x00\x69\xb0\x00\x00\x00\x00\x55\xac\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4d\xe6\x69\xb2\x69\xb4\x69\xb3\x56\x85\x58\x5a\x69\xb1", /* 8680 */ "\x55\xb3\x59\xce\x51\xeb\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x57\xc2\x69\xb7\x48\xf5\x69\xb6\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x69\xbd\x00\x00\x49\xce\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x59\x61\x69\xb9\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x69\xbb\x5a\xe8\x00\x00\x00\x00\x69\xba\x69\xb5\x69\xbe\x69\xbc\x00\x00\x69\xb8\x00\x00\x00\x00\x69\xc6\x69\xc3\x69\xc5\x00\x00\x00\x00\x69\xc9\x69\xc1\x69\xbf\x00\x00\x00\x00\x00\x00\x69\xc4\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5b\xfa\x00\x00\x00\x00\x00\x00\x69\xc0\x00\x00\x54\x9a\x55\x7f\x00\x00\x69\xc7\x4d\x66\x4b\x50\x00\x00\x00\x00\x69\xc2\x69\xc8\x69\xcf\x69\xd5\x00\x00\x00\x00\x4e\x77\x00\x00\x00\x00\x00\x00\x69\xd4\x57\x7c\x00\x00\x5b\xea\x00\x00\x00\x00\x69\xd1\x69\xd3\x00\x00\x00\x00\x00\x00\x00\x00\x4c\xf1\x00\x00\x00\x00\x00\x00\x00\x00\x69\xca\x00\x00\x00\x00\x00\x00\x69\xcd\x51\xf8\x00\x00\x5b\x7d\x69\xcb\x69\xcc\x69\xce\x69\xd2\x00\x00\x00\x00\x00\x00\x69\xd8\x5a\x5c\x00\x00\x00\x00\x00\x00\x00\x00\x4b\xe9\x00\x00", /* 8700 */ "\x55\xf0\x00\x00\x4c\x85\x69\xd6\x00\x00\x00\x00\x00\x00\x69\xd7\x69\xd9\x69\xdc\x69\xda\x00\x00\x00\x00\x69\xdb\x00\x00\x00\x00\x00\x00\x00\x00\x59\x71\x69\xd0\x00\x00\x57\x69\x00\x00\x57\xce\x5b\xa8\x00\x00\x69\xe2\x00\x00\x52\x7b\x00\x00\x69\xdf\x00\x00\x00\x00\x50\xae\x69\xeb\x69\xdd\x00\x00\x69\xe0\x00\x00\x00\x00\x00\x00\x69\xe7\x00\x00\x00\x00\x00\x00\x00\x00\x69\xe1\x00\x00\x00\x00\x69\xe6\x00\x00\x00\x00\x69\xe5\x00\x00\x00\x00\x69\xe8\x00\x00\x00\x00\x00\x00\x69\xde\x00\x00\x00\x00\x69\xe3\x69\xe9\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5a\x4c\x69\xe4\x49\xf4\x00\x00\x00\x00\x69\xf1\x00\x00\x58\xaa\x00\x00\x00\x00\x00\x00\x00\x00\x69\xf4\x00\x00\x00\x00\x00\x00\x4e\x68\x00\x00\x69\xf8\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x69\xef\x00\x00\x00\x00\x69\xf5\x69\xf7\x69\xf9\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x69\xf2\x00\x00\x69\xf0\x00\x00\x00\x00\x00\x00\x4d\xfa\x00\x00\x4b\x9c\x00\x00\x00\x00\x00\x00\x00\x00\x69\xee\x69\xf6\x69\xec\x69\xed\x00\x00", /* 8780 */ "\x00\x00\x00\x00\x69\xea\x6a\x46\x00\x00\x6a\x43\x00\x00\x00\x00\x6a\x42\x00\x00\x00\x00\x69\xf3\x00\x00\x54\xd9\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x69\xfa\x00\x00\x00\x00\x00\x00\x6a\x45\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x52\x99\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x69\xfc\x00\x00\x00\x00\x6a\x47\x6a\x49\x6a\x44\x00\x00\x69\xfb\x00\x00\x00\x00\x00\x00\x6a\x4b\x00\x00\x6a\x4a\x00\x00\x00\x00\x00\x00\x00\x00\x51\xdc\x00\x00\x00\x00\x6a\x4e\x00\x00\x00\x00\x6a\x50\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x41\x00\x00\x00\x00\x00\x00\x6a\x51\x6a\x4c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x4f\x69\xfd\x6a\x4d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x52\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x54\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x48\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x53\x00\x00\x00\x00\x00\x00\x6a\x55\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x58\xb6\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x58\x00\x00", /* 8800 */ "\x00\x00\x00\x00\x00\x00\x5d\x9a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x59\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x57\x00\x00\x54\xe3\x6a\x56\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x5a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x5b\x4a\xbf\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x67\xc2\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x5c\x00\x00\x00\x00\x6a\x5d\x00\x00\x00\x00\x00\x00\x59\x4a\x00\x00\x00\x00\x00\x00\x6a\xab\x58\xc5\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x58\xcf\x59\x7c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x58\x6e\x00\x00\x00\x00\x4f\x76\x00\x00\x59\x63\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4d\xe1\x61\x8a\x59\xc1\x69\x62\x49\xb8\x00\x00\x00\x00\x49\x8e\x69\x63\x00\x00\x55\x60\x4a\x64\x00\x00\x5d\x93\x00\x00\x56\x45\x00\x00\x69\x64\x00\x00\x00\x00\x00\x00\x00\x00\x5b\xd3\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x69\x65\x6a\xbf\x69\x66", /* 8880 */ "\x00\x00\x5a\xab\x69\x67\x00\x00\x48\xbf\x6a\xc0\x00\x00\x00\x00\x6a\xc1\x00\x00\x00\x00\x4a\xfb\x00\x00\x53\x7b\x00\x00\x00\x00\x00\x00\x00\x00\x56\xba\x00\x00\x00\x00\x00\x00\x58\xe3\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x57\x81\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x69\x68\x00\x00\x5d\x94\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x49\x5b\x00\x00\x58\x4e\x00\x00\x00\x00\x00\x00\x4c\xa3\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x69\x6a\x00\x00\x00\x00\x00\x00\x00\x00\x69\x6b\x00\x00\x00\x00\x00\x00\x00\x00\x49\xc2\x51\x71\x00\x00\x00\x00\x5c\x50\x69\x69\x00\x00\x00\x00\x69\x6c\x00\x00\x00\x00\x00\x00\x00\x00\x69\x6e\x00\x00\x00\x00\x00\x00\x5d\x97\x00\x00\x59\xe0\x5a\xa2\x00\x00\x00\x00\x6a\xc2\x54\xb8\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\xc3\x00\x00\x00\x00\x69\x6d\x69\x6f\x50\x84\x69\x70\x00\x00\x00\x00\x69\x74\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x69\x76\x69\x71\x00\x00\x55\x71\x53\x82\x00\x00\x00\x00\x00\x00\x51\xe2\x4d\x9d\x00\x00\x00\x00\x69\x73\x00\x00\x69\x75\x00\x00", /* 8900 */ "\x00\x00\x00\x00\x4d\x73\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x69\x7b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4d\xd5\x00\x00\x48\xfc\x69\x79\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x69\x78\x69\x72\x69\x7a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x69\x77\x00\x00\x00\x00\x00\x00\x54\xeb\x00\x00\x00\x00\x00\x00\x00\x00\x57\x6a\x69\x7d\x00\x00\x00\x00\x00\x00\x00\x00\x63\x5d\x00\x00\x00\x00\x00\x00\x69\x7c\x00\x00\x69\x7e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x69\x7f\x00\x00\x00\x00\x58\x86\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\xc4\x4f\x94\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x69\x81\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x69\x82\x00\x00\x00\x00\x00\x00\x57\xf6", /* 8980 */ "\x00\x00\x59\xa9\x00\x00\x69\x9c\x00\x00\x00\x00\x4c\xb1\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4e\xfa\x4d\x7b\x00\x00\x4d\x87\x52\x79\x55\xd2\x65\xe7\x50\xbf\x4f\xf4\x65\xe8\x65\xe9\x65\xea\x00\x00\x65\xeb\x65\xec\x65\xed\x65\xee\x4f\x67\x00\x00\x00\x00\x00\x00\x6b\x9c\x00\x00\x00\x00\x00\x00\x6b\x9e\x00\x00\x6b\x9f\x00\x00\x6b\x9d\x00\x00\x00\x00\x00\x00\x00\x00\x4f\x83\x00\x00\x6b\xa0\x4a\xa4\x00\x00\x00\x00\x00\x00\x00\x00\x6b\xa1\x00\x00\x00\x00\x00\x00\x6b\xa2\x00\x00\x00\x00\x00\x00\x66\xb1\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 8a00 */ "\x59\x74\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5d\x8b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6b\xa3\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x67\xb9\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5b\x52\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 8a80 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5a\x9f\x56\xdb\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x55\xc3\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 8b00 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x63\x60\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6b\xa4\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4f\xae\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x53\xa8\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 8b80 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5d\xa4\x4e\xc5\x4b\xa8\x4c\xbb\x54\xce\x4e\xa4\x5d\xa5\x5d\xa6\x56\xd5\x54\xc2\x5d\xa7\x53\xfc\x00\x00\x59\x55\x59\xe8\x59\x56\x4e\xc6\x00\x00\x4f\x52\x4e\x85\x5d\xa8\x5d\xa9\x59\x68\x5d\xaa\x58\xec\x4b\xee\x51\xda\x00\x00\x56\x6f\x4c\x8e\x55\x89\x4c\x63\x4f\xf6\x5b\xa3\x5d\xab\x5d\xac\x53\xbf\x5c\x88\x55\xb5\x00\x00\x5b\x49\x56\x7f\x5b\x90\x5d\xad\x5b\xde\x4a\xc9\x5d\xaf\x5d\xae\x00\x00\x59\xea\x5d\xb0\x5d\xb1\x5d\xb2\x55\xd3\x5d\xb3\x55\xaa\x5d\xb4\x5d\xb5\x4a\x6f\x5b\xee\x5d\xb6\x4e\x50\x4b\x4e\x5d\xb7\x5d\xb8\x4d\x8f\x59\x4f\x59\xe7\x5d\xb9\x4c\xc2\x58\x8b\x49\xee\x5d\xba\x5d\xbb\x00\x00\x4f\x8c\x57\xdb\x5a\x90\x5d\xbc\x57\xf2\x5d\xbd\x5a\x75\x4e\x86\x5d\xbe\x56\x55\x56\x70\x5d\xbf\x54\x8c\x5b\xed\x5d\xc0\x53\x55\x4b\xc0\x5d\xc1\x4c\x6c\x50\x6e\x5d\xc2", /* 8c00 */ "\x5d\xc3\x56\x4d\x5d\xc4\x4b\x98\x5d\xc5\x51\x62\x5c\x5b\x5d\xc6\x56\xb7\x00\x00\x59\xe9\x52\xb0\x5d\xc7\x4b\x9e\x4e\x71\x5d\xc8\x58\xb2\x5d\xc9\x5d\xca\x57\xbc\x5d\xcb\x5d\xcc\x5d\xcd\x49\xf6\x5d\xd0\x5d\xce\x59\x89\x5d\xcf\x52\x75\x5d\xd1\x00\x00\x5d\xd2\x5d\xd3\x5d\xd4\x58\xba\x59\xa4\x48\xf8\x5d\xd5\x54\x4b\x5d\xd6\x4f\x98\x52\x41\x5d\xd7\x5d\xd8\x52\x9e\x56\xb6\x5d\xd9\x5d\xda\x50\xbd\x53\xd6\x5d\xdb\x5d\xdc\x54\x54\x5d\xdd\x5d\xde\x4d\x68\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4e\x8e\x00\x00\x00\x00\x00\x00\x00\x00\x4b\xb8\x6a\xf7\x00\x00\x6a\xf8\x00\x00\x00\x00\x57\x84\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6b\x59\x00\x00\x00\x00\x00\x00\x00\x00\x66\x81\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x58\x94\x4e\x5f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4d\xbf\x5a\xa4\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x61\x79\x00\x00\x00\x00\x00\x00\x00\x00\x6b\x95\x49\x4a\x49\xf1\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 8c80 */ "\x00\x00\x00\x00\x6b\x96\x00\x00\x00\x00\x6b\x98\x00\x00\x00\x00\x00\x00\x4d\xd0\x6b\x97\x00\x00\x52\x52\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6b\x9a\x00\x00\x00\x00\x00\x00\x6b\x99\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 8d00 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x49\x54\x5b\x8b\x4c\xb9\x00\x00\x4d\x51\x49\xc5\x5a\xef\x58\x6d\x48\xdb\x5b\x6b\x4e\x96\x5b\xc9\x4c\x57\x56\xaf\x53\xb5\x49\x82\x4d\x5a\x5b\xfb\x4d\x82\x4c\x41\x4e\xf9\x65\xd9\x65\xda\x56\xf8\x4d\x94\x65\xdb\x4a\xfa\x52\x53\x4c\x71\x4d\xd7\x65\xdc\x5a\xf3\x65\xdd\x4e\xd5\x4e\x7f\x65\xde\x51\x7e\x51\xb7\x5a\xde\x5c\x6a\x65\xdf\x65\xe0\x65\xe3\x65\xe1\x65\xe2\x55\x7e\x4c\xb2\x4b\xc3\x65\xe4\x55\xe9\x55\x6d\x4a\xcc\x00\x00\x00\x00\x61\xd8\x53\x83\x65\xe5\x50\xb4\x00\x00\x5c\x58\x65\xe6\x5c\x4c\x54\xfb\x5c\xd2\x5c\xcc\x5a\xdd\x00\x00\x5a\xf8\x55\x64\x5a\x4e\x4c\xd2\x4a\x81\x00\x00\x55\x83\x6a\xf5\x00\x00\x00\x00\x00\x00\x4d\xd4\x00\x00\x6a\xf6\x00\x00\x00\x00\x5c\x7f\x00\x00\x00\x00\x6a\xf0\x4c\xaf\x5b\x74\x4c\xce\x53\xef\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 8d80 */ "\x00\x00\x4a\x63\x00\x00\x00\x00\x6a\xf1\x4a\x4c\x00\x00\x00\x00\x00\x00\x00\x00\x5a\xbc\x54\x98\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\xf3\x00\x00\x00\x00\x6a\xf2\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x56\xca\x00\x00\x00\x00\x00\x00\x54\xa3\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\xf4\x00\x00\x5c\x84\x53\x5f\x6b\x60\x00\x00\x00\x00\x6b\x5b\x00\x00\x6b\x63\x00\x00\x6b\x62\x00\x00\x5b\xb9\x6b\x61\x00\x00\x00\x00\x00\x00\x5a\xbd\x6b\x64\x00\x00\x6b\x6c\x00\x00\x00\x00\x00\x00\x00\x00\x48\xce\x4b\x99\x00\x00\x6b\x69\x6b\x6a\x00\x00\x53\x7c\x00\x00\x00\x00\x00\x00\x00\x00\x6b\x65\x6b\x66\x00\x00\x00\x00\x6b\x67\x6b\x6b\x00\x00\x4f\xdf\x6b\x68\x4c\xf9\x00\x00\x00\x00\x00\x00\x6b\x70\x6b\x73\x00\x00\x00\x00\x00\x00\x50\x88\x00\x00\x4d\x93\x6b\x5c\x6b\x6d\x00\x00\x00\x00\x51\xb6\x00\x00\x00\x00\x00\x00\x56\xf7\x00\x00\x4e\xf8\x00\x00\x6b\x6e\x6b\x6f\x6b\x71\x4b\xe4\x6b\x72\x00\x00\x6b\x75\x00\x00\x00\x00", /* 8e00 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6b\x5d\x00\x00\x00\x00\x00\x00\x6b\x74\x5a\x5b\x00\x00\x4a\x8d\x00\x00\x00\x00\x56\xa3\x00\x00\x00\x00\x00\x00\x00\x00\x6b\x76\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6b\x77\x4f\xe0\x6b\x78\x00\x00\x00\x00\x56\xde\x6b\x7b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x49\xc7\x5c\x79\x00\x00\x6b\x79\x00\x00\x6b\x7a\x6b\x7c\x00\x00\x6b\x83\x00\x00\x00\x00\x00\x00\x6b\x81\x00\x00\x00\x00\x00\x00\x6b\x7f\x6b\x7d\x00\x00\x00\x00\x6b\x82\x00\x00\x00\x00\x6b\x7e\x6b\x85\x6b\x86\x00\x00\x56\xe2\x00\x00\x00\x00\x63\x5f\x4b\x58\x6b\x84\x6b\x89\x56\xa2\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6b\x87\x6b\x88\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6b\x5e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x49\x64\x00\x00\x00\x00\x6b\x5f\x00\x00\x00\x00\x4b\x65\x49\xe3\x00\x00\x6b\x8d\x6b\x8a\x00\x00\x4b\xd6\x00\x00\x6b\x8e\x00\x00\x6b\x8b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6b\x8c\x00\x00\x00\x00\x4a\xd9", /* 8e80 */ "\x00\x00\x5a\xe9\x00\x00\x00\x00\x00\x00\x6b\x8f\x00\x00\x4a\x9a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6b\x90\x6b\x92\x00\x00\x00\x00\x00\x00\x6b\x91\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6b\x93\x00\x00\x6b\x94\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x55\x8e\x4d\x4a\x00\x00\x00\x00\x54\x9c\x00\x00\x00\x00\x4b\xe2\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x56\xc8\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x65\xa5\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 8f00 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4a\x55\x5a\xfd\x4d\x8d\x58\xf8\x00\x00\x65\x8e\x5c\x4a\x65\x8f\x51\xd5\x54\xec\x4d\xe3\x65\x90\x65\x91\x65\x92\x5b\xe0\x65\x93\x65\x94\x65\x96\x65\x95\x65\x97\x65\x98\x54\x82\x65\x99\x5a\xd7\x65\x9a\x4f\x6e", /* 8f80 */ "\x00\x00\x65\x9b\x65\x9c\x4f\x6f\x65\x9d\x4c\xa7\x51\x5e\x65\x9e\x49\x52\x4e\x74\x4d\x96\x65\x9f\x00\x00\x65\xa0\x65\xa1\x65\xa2\x4c\x99\x4e\xac\x00\x00\x55\xe3\x60\xcd\x5a\xae\x58\x5d\x5b\x57\x65\xa3\x5b\x7e\x65\xa4\x58\xc0\x4d\x5c\x00\x00\x4a\xc6\x49\x79\x00\x00\x00\x00\x00\x00\x50\xb0\x00\x00\x00\x00\x00\x00\x00\x00\x49\x87\x49\x88\x00\x00\x49\x89\x00\x00\x00\x00\x00\x00\x00\x00\x4a\x5d\x54\xe7\x00\x00\x00\x00\x00\x00\x00\x00\x63\x61\x00\x00\x00\x00\x49\x7f\x00\x00\x00\x00\x00\x00\x51\x69\x4a\xee\x00\x00\x00\x00\x54\x48\x5a\x78\x00\x00\x53\xf8\x59\x58\x00\x00\x4d\x9e\x51\xf4\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5a\x4d\x00\x00\x5a\xca\x4f\x9d\x00\x00\x63\x62\x4c\x55\x63\x63\x00\x00\x00\x00\x4e\x59\x5b\x83\x00\x00\x4f\x99\x5a\xb5\x57\xa4\x51\x4c\x4a\x79\x00\x00\x00\x00\x56\xf5\x00\x00\x63\x66\x63\x64\x63\x68\x00\x00\x63\x6a\x63\x67\x4b\x6f\x53\xc7\x00\x00\x4b\x9d\x63\x65\x00\x00\x55\xf5\x00\x00\x00\x00\x63\x69\x00\x00\x00\x00\x00\x00\x52\x74\x49\x65\x4e\xa2\x00\x00\x00\x00\x00\x00\x5c\x57\x00\x00\x00\x00", /* 9000 */ "\x57\x6b\x56\x6d\x55\xc9\x56\xd2\x63\x6c\x63\x6b\x52\xe5\x00\x00\x00\x00\x59\x41\x59\x57\x63\x6d\x00\x00\x63\x70\x00\x00\x57\x58\x5b\xef\x63\x6f\x4b\x7d\x00\x00\x57\x5e\x00\x00\x63\x71\x4b\xb9\x00\x00\x00\x00\x57\x48\x4d\x85\x00\x00\x55\xc4\x4a\x71\x56\x79\x5a\xeb\x63\x72\x4c\x8b\x00\x00\x00\x00\x00\x00\x63\x6e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x63\x75\x4a\xfd\x63\x76\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x63\x73\x63\x74\x00\x00\x59\xdc\x00\x00\x00\x00\x51\xde\x49\x66\x00\x00\x5a\x83\x00\x00\x00\x00\x4b\xdc\x56\x8d\x00\x00\x63\x77\x00\x00\x00\x00\x5a\x97\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x49\x8a\x00\x00\x4b\xf3\x63\x7a\x63\x78\x63\x79\x4b\x60\x00\x00\x00\x00\x00\x00\x59\xc4\x63\x7c\x00\x00\x00\x00\x63\x7e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x63\x7d\x54\x52\x00\x00\x59\xa2\x00\x00\x00\x00\x63\x7b\x00\x00\x00\x00\x00\x00\x00\x00\x5a\xe1\x5b\x7a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x63\x81\x5c\x92\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x63\x82\x00\x00\x49\x7c", /* 9080 */ "\x59\x9c\x00\x00\x63\x83\x63\x85\x00\x00\x00\x00\x00\x00\x00\x00\x63\x84\x00\x00\x00\x00\x63\x86\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x59\xd7\x00\x00\x4b\x6b\x00\x00\x64\x7f\x00\x00\x5d\xf4\x00\x00\x5d\xf7\x00\x00\x5d\xf5\x00\x00\x5d\xf6\x00\x00\x00\x00\x00\x00\x5d\xf9\x58\xce\x52\xc6\x00\x00\x00\x00\x48\xed\x00\x00\x00\x00\x00\x00\x58\xaf\x00\x00\x5d\xf8\x00\x00\x5a\x6a\x4d\xa9\x5e\x42\x54\x92\x00\x00\x5d\xfb\x5d\xfa\x55\x7b\x5d\xfc\x00\x00\x5e\x41\x5c\x7e\x5d\xfd\x51\x7a\x00\x00\x00\x00\x5e\x45\x00\x00\x00\x00\x5a\x95\x00\x00\x00\x00\x5e\x47\x5e\x44\x00\x00\x5e\x48\x00\x00\x00\x00\x4f\x5c\x00\x00\x00\x00\x00\x00\x50\xc8\x5e\x43\x5e\x46\x5b\xa2\x00\x00\x5e\x49\x00\x00\x00\x00\x00\x00\x5e\x4d\x00\x00\x00\x00\x00\x00\x5e\x4e\x5e\x4c\x4d\xc1\x00\x00\x00\x00\x00\x00\x50\x44\x5e\x4b\x00\x00\x00\x00\x00\x00\x5e\x4a\x5a\xc6\x49\xbe\x00\x00\x00\x00\x5e\x4f\x00\x00\x4d\x9a\x00\x00\x5e\x50\x00\x00\x00\x00\x00\x00\x00\x00\x4a\x5b\x00\x00\x00\x00\x00\x00\x4b\x46\x00\x00\x00\x00\x00\x00\x00\x00\x4b\xbb\x5e\x51\x00\x00", /* 9100 */ "\x00\x00\x00\x00\x4b\xf4\x00\x00\x5e\x52\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x49\x69\x00\x00\x00\x00\x00\x00\x00\x00\x5e\x54\x00\x00\x00\x00\x00\x00\x5e\x53\x5e\x55\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5e\x57\x00\x00\x5e\x56\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5e\x58\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5e\x59\x00\x00\x00\x00\x5e\x5a\x00\x00\x00\x00\x5a\x6f\x6a\xf9\x54\x96\x5c\x63\x53\x85\x6a\xfb\x6a\xfc\x6a\xfa\x00\x00\x4f\xc5\x00\x00\x00\x00\x00\x00\x00\x00\x58\xee\x00\x00\x00\x00\x4c\x73\x00\x00\x00\x00\x5a\xcc\x56\xa9\x00\x00\x00\x00\x6b\x42\x6b\x41\x4d\xa7\x6a\xfd\x56\x76\x00\x00\x00\x00\x00\x00\x6b\x44\x50\xd1\x00\x00\x4a\x8b\x00\x00\x57\x4a\x6b\x45\x6b\x43\x4f\x54\x6b\x48\x00\x00\x6b\x49\x4f\x6d\x52\x58\x50\x82\x56\x82\x6b\x4a\x00\x00\x00\x00\x00\x00\x6b\x46\x6b\x47\x52\xef", /* 9180 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6b\x4c\x00\x00\x4a\xbb\x00\x00\x5c\x8e\x00\x00\x4a\xd6\x6b\x4b\x6b\x4e\x00\x00\x00\x00\x6b\x4d\x6b\x4f\x58\xd0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x52\x71\x54\xa8\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6b\x50\x6b\x51\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6b\x52\x00\x00\x00\x00\x6b\x53\x6b\x54\x6b\x55\x00\x00\x00\x00\x00\x00\x00\x00\x6b\x57\x6b\x56\x00\x00\x00\x00\x00\x00\x00\x00\x6b\x58\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x49\xc8\x00\x00\x5a\x74\x55\xcc\x00\x00\x50\xee\x5b\xd7\x59\xaf\x51\x5f\x00\x00\x4f\x91\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4c\xa9\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 9200 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4e\xf7\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 9280 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6b\xc5\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6b\xc6\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6b\xc7\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 9300 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6b\xc8\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6b\xc9\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 9380 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6b\xcb\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6b\xca\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6c\x8a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 9400 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6b\xcc\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6b\xcd\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 9480 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x67\xc3\x67\xc4\x67\xc5\x5b\x8c\x4b\xa3\x67\xc7\x67\xc6\x67\xc8\x67\xc9\x54\x45\x67\xca\x67\xcb\x00\x00\x4c\x50\x4b\x97\x67\xcc\x67\xce\x00\x00\x67\xcd\x00\x00\x4c\xc5\x67\xcf\x67\xd0\x67\xd1\x4b\xda\x4a\x4e\x5b\xd2\x52\xc5\x49\x55\x4c\xd5\x67\xd2\x67\xd3\x5a\xbe\x54\x75\x4f\xfa\x57\xd8\x4d\x53\x67\xd5\x67\xd4\x67\xd7\x67\xd6\x53\x45\x67\xd8\x67\xd9\x54\x4e\x67\xda\x54\x4f\x67\xdb\x49\xa6\x67\xdc\x67\xdd\x67\xde\x67\xdf\x67\xe0\x5c\x8b\x67\xe1\x67\xe2\x4e\xd7\x67\xe3\x5a\x6b\x56\xf9\x49\xab\x51\x86\x67\xe4\x54\x46\x52\x4d\x00\x00\x67\xe5\x67\xe6\x67\xe7\x67\xe8\x67\xe9\x67\xea\x67\xeb\x00\x00\x67\xec\x67\xed\x67\xee\x00\x00\x00\x00\x67\xef\x67\xf0\x67\xf1\x67\xf3\x67\xf2\x00\x00\x67\xf4\x57\x4d\x51\xc0\x67\xf5\x67\xf6\x67\xf7\x5b\x41\x67\xf8\x58\x53\x67\xf9\x67\xfa\x00\x00\x67\xfb\x67\xfc\x68\x41\x67\xfd\x68\x42\x4c\xf4\x52\x9b\x68\x43\x68\x44\x4f\x62\x59\xbe\x49\xf8\x68\x45\x68\x46\x68\x47\x59\xf7\x68\x48\x5b\xfc\x68\x49\x53\xcb\x00\x00\x68\x4a\x68\x4b\x51\x54\x68\x4c", /* 9500 */ "\x58\x9b\x56\x99\x68\x4e\x68\x4d\x4a\x9b\x4d\x99\x68\x4f\x68\x50\x58\xe1\x68\x51\x68\x52\x4c\x87\x58\xbe\x68\x53\x68\x54\x68\x55\x54\xf0\x56\xdf\x68\x56\x68\x57\x68\x58\x68\x59\x68\x5a\x5b\x81\x68\x5b\x4a\xec\x52\x4a\x68\x5c\x00\x00\x68\x5d\x68\x5e\x68\x5f\x00\x00\x57\xfc\x68\x60\x51\xdf\x4a\xb7\x5c\x56\x4f\x96\x00\x00\x58\x67\x68\x63\x68\x61\x68\x62\x68\x64\x4b\xa6\x4e\xfb\x4f\xe1\x52\x6c\x68\x65\x68\x66\x00\x00\x68\x67\x68\x6f\x68\x68\x68\x69\x68\x6a\x54\x62\x68\x92\x4b\xcc\x68\x6b\x00\x00\x68\x6c\x68\x6d\x4b\xc5\x52\x5e\x68\x6e\x00\x00\x68\x70\x68\x71\x68\x72\x5b\x93\x00\x00\x68\x73\x52\xf6\x00\x00\x68\x74\x52\xf7\x68\x75\x68\x76\x4c\xe3\x48\xf6\x68\x77\x68\x78\x68\x79\x00\x00\x68\x7a\x68\x7b\x68\x7c\x68\x7d\x00\x00\x68\x7e\x4f\xb4\x68\x82\x68\x7f\x68\x81\x00\x00\x68\x83\x68\x84\x51\x6d\x68\x85\x68\x86\x68\x87\x68\x88\x68\x89\x68\x8a\x68\x8b\x68\x8c\x68\x8d\x50\xd7\x00\x00\x68\x8e\x51\x4d\x68\x8f\x68\x90\x68\x91\x00\x00\x00\x00\x58\x83\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4a\x44", /* 9580 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x52\x65\x62\x65\x55\x61\x62\x66\x00\x00\x49\x75\x57\xc9\x4a\xb2\x54\xf1\x62\x67\x58\x70\x62\x68\x4e\xe3\x62\x69\x62\x6a\x52\x66\x5b\x42\x52\xd5\x4d\x8c\x57\xc4\x62\x6b\x52\x97\x62\x6c\x00\x00", /* 9600 */ "\x4c\x47\x4c\xf2\x4d\xd1\x62\x6d\x62\x6e\x5a\xc3\x62\x6f\x00\x00\x62\x70\x59\x6b\x62\x71\x62\x72\x62\x73\x62\x74\x59\x76\x62\x75\x49\xfa\x50\xba\x62\x76\x00\x00\x50\xaa\x62\x77\x62\x78\x62\x79\x00\x00\x62\x7a\x62\x7b\x00\x00\x4c\xb6\x5d\xe1\x00\x00\x4b\xd2\x00\x00\x5d\xe3\x5d\xe2\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5d\xe5\x00\x00\x00\x00\x00\x00\x54\xed\x00\x00\x00\x00\x5d\xe4\x4c\x60\x59\x95\x59\xf4\x5b\x94\x4f\x77\x00\x00\x00\x00\x00\x00\x00\x00\x5c\x89\x5d\xe7\x5d\xe6\x00\x00\x48\xa1\x57\x73\x00\x00\x5d\xe8\x00\x00\x4c\xbc\x4e\xc9\x51\xbc\x51\xa3\x4a\x62\x5d\xe9\x00\x00\x51\xa9\x52\xaf\x4f\x55\x00\x00\x00\x00\x58\x7e\x00\x00\x00\x00\x00\x00\x5d\xea\x55\x62\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x49\x7d\x00\x00\x00\x00\x00\x00\x5d\xeb\x00\x00\x4b\xb7\x5a\xb9\x00\x00\x4a\x9e\x00\x00\x00\x00\x5d\xec\x5a\xc8\x58\x75\x53\x84\x00\x00\x5d\xed\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5d\xee\x00\x00\x5d\xef\x51\x8b\x56\xd4\x58\x7d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 9680 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5a\x88\x51\xa0\x00\x00\x5d\xf0\x00\x00\x00\x00\x56\x86\x00\x00\x5d\xf1\x00\x00\x56\x87\x59\xfd\x00\x00\x00\x00\x00\x00\x4c\xf3\x00\x00\x00\x00\x5d\xf2\x48\xae\x58\x56\x00\x00\x00\x00\x5b\x6f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x56\x8e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5d\xf3\x00\x00\x00\x00\x62\x64\x00\x00\x00\x00\x51\x45\x00\x00\x00\x00\x6b\xbe\x00\x00\x00\x00\x6b\xbf\x6b\xc0\x52\xd0\x00\x00\x54\xb7\x59\x84\x00\x00\x00\x00\x58\xda\x59\x65\x4e\xae\x4d\x6d\x00\x00\x68\x95\x00\x00\x00\x00\x4a\xc5\x5a\x5a\x6b\xc1\x4a\x9c\x00\x00\x00\x00\x6b\xc2\x00\x00\x00\x00\x4b\x92\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6b\xc4\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5a\x8b\x6b\xa6\x59\x49\x00\x00\x00\x00\x00\x00\x00\x00\x6b\xa8\x00\x00\x00\x00\x00\x00\x6b\xa7\x00\x00\x00\x00\x51\x84\x50\xd6\x00\x00\x49\x42\x00\x00\x00\x00\x00\x00\x00\x00\x57\xec\x00\x00", /* 9700 */ "\x58\xe7\x6b\xaa\x00\x00\x00\x00\x58\x97\x00\x00\x6b\xa9\x5b\x91\x6b\xab\x52\x59\x00\x00\x00\x00\x00\x00\x4e\x95\x6b\xad\x6b\xac\x00\x00\x00\x00\x00\x00\x52\xdd\x00\x00\x00\x00\x51\x78\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x56\x4a\x00\x00\x58\x5c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6b\xae\x00\x00\x00\x00\x6b\xaf\x00\x00\x00\x00\x6b\xb0\x00\x00\x51\xb5\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x48\xd3\x53\x9a\x00\x00\x00\x00\x00\x00\x00\x00\x6b\xb1\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x54\x81\x6b\xa5\x00\x00\x00\x00\x4f\xb7\x00\x00\x00\x00\x4f\xb1\x00\x00\x4b\x86\x00\x00\x00\x00\x4c\x67\x00\x00\x50\x5f\x52\x72\x52\x87\x00\x00\x00\x00\x5c\xcb\x00\x00\x00\x00\x00\x00\x4c\xee\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4f\x9a\x59\x45\x00\x00\x48\xcf\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6c\x50\x00\x00\x00\x00\x00\x00", /* 9780 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6c\x51\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x58\xab\x00\x00\x48\xaf\x00\x00\x00\x00\x00\x00\x6c\x52\x6c\x53\x00\x00\x6c\x54\x00\x00\x00\x00\x00\x00\x54\x6a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4f\xce\x00\x00\x00\x00\x6c\x57\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6c\x56\x00\x00\x49\x7e\x00\x00\x6c\x55\x00\x00\x00\x00\x6c\x58\x00\x00\x6c\x59\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x57\xa3\x54\xcc\x00\x00\x4d\xaa\x64\xb7\x64\xb8\x64\xb9\x4f\xc1\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x59\xf3\x00\x00\x5a\xce\x55\x78\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 9800 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x59\xb2\x4b\xa4\x54\x8b\x69\x9d\x58\x8f\x56\x53\x58\xea\x64\x90\x57\x88\x4d\x6b\x4b\xd8", /* 9880 */ "\x69\x9e\x48\xe3\x56\x6c\x69\x9f\x5a\xa3\x51\xac\x51\x8d\x53\xc3\x4f\xb0\x69\xa0\x4e\xd4\x00\x00\x69\xa1\x69\xa2\x00\x00\x69\xa3\x59\xc2\x53\xb4\x00\x00\x57\x67\x69\xa4\x00\x00\x5a\x51\x50\x65\x56\xe1\x00\x00\x69\xa5\x69\xa6\x59\x75\x4b\xed\x69\xa7\x69\xa8\x4b\x7f\x69\xa9\x69\xaa\x00\x00\x49\xfb\x69\xab\x69\xac\x54\xa6\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4c\x88\x00\x00\x00\x00\x66\xa8\x66\xa9\x66\xaa\x00\x00\x66\xab\x00\x00\x00\x00\x53\xad\x66\xac\x66\xad\x00\x00\x00\x00\x00\x00\x4c\x69\x55\xb2\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x61\xb7\x6c\x6f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 9900 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6c\x70\x00\x00\x00\x00\x49\xcc\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6c\x71\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6c\x73\x6c\x72\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x61\xba\x00\x00\x4e\xa1\x00\x00\x61\xbb\x61\xbc\x61\xbd\x61\xbe\x61\xbf\x61\xc0\x4c\x59\x59\xfa\x4f\x44\x55\xcd\x49\x45\x56\x67\x00\x00\x61\xc1\x4b\xfb\x54\xc3\x61\xc2\x00\x00\x00\x00\x4f\x68\x00\x00\x49\x9e\x61\xc3\x00\x00\x4b\xf5", /* 9980 */ "\x61\xc4\x52\xd8\x00\x00\x00\x00\x61\xc5\x58\x7a\x4d\x7d\x61\xc6\x50\xa0\x00\x00\x61\xc7\x49\xf5\x00\x00\x61\xc8\x00\x00\x51\x94\x61\xc9\x61\xca\x51\xf7\x61\xcb\x61\xcc\x61\xcd\x55\xd6\x5c\xb7\x5d\x86\x58\x84\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x68\xa4\x00\x00\x00\x00\x5e\xaf\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 9a00 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x51\xec\x5a\xa5\x57\x74\x59\x51\x4a\x7b\x54\x9e\x00\x00\x49\xb4\x51\xbe\x63\xdf\x55\xba\x63\xe0\x63\xe1\x4f\xd3\x63\xe2\x5c\x44\x57\x75\x63\xe4\x4e\xdc\x63\xe3", /* 9a80 */ "\x63\xe5\x63\xe6\x51\xed\x00\x00\x4f\x5e\x63\xe7\x51\xe5\x4d\xa6\x63\xe8\x00\x00\x63\xe9\x4a\x72\x59\x8a\x00\x00\x00\x00\x50\x45\x63\xea\x53\xee\x63\xeb\x63\xec\x00\x00\x00\x00\x63\xed\x53\xac\x63\xee\x00\x00\x55\x47\x63\xef\x63\xf0\x63\xf1\x63\x59\x63\xf2\x63\xf3\x51\xe1\x63\xf4\x63\xf5\x5b\xe7\x63\xf6\x00\x00\x63\xf7\x4d\x67\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6c\x5b\x6c\x5a\x00\x00\x00\x00\x00\x00\x00\x00\x6c\x5e\x6c\x5c\x4d\xa0\x00\x00\x6c\x5f\x00\x00\x6c\x60\x00\x00\x00\x00\x00\x00\x6c\x62\x6c\x61\x6c\x64\x00\x00\x00\x00\x6c\x63\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6c\x65\x6c\x66\x00\x00\x00\x00\x00\x00\x00\x00\x6c\x67\x00\x00\x56\x89\x00\x00\x00\x00\x00\x00\x00\x00\x4c\xde\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6c\x74\x00\x00\x6c\x75\x00\x00\x00\x00\x00\x00\x00\x00\x6c\x76\x00\x00\x00\x00\x00\x00\x00\x00\x6c\x78\x00\x00\x6c\x7a\x00\x00\x6c\x77\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6c\x7b\x00\x00\x6c\x79\x00\x00\x00\x00\x00\x00\x00\x00", /* 9b00 */ "\x00\x00\x00\x00\x00\x00\x5c\x77\x00\x00\x00\x00\x00\x00\x00\x00\x6c\x7c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6c\x7d\x00\x00\x00\x00\x00\x00\x6c\x7e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6c\x7f\x00\x00\x00\x00\x00\x00\x6c\x81\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5e\x6b\x00\x00\x00\x00\x5c\xa9\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x63\x98\x4d\x8e\x00\x00\x00\x00\x00\x00\x00\x00\x50\x9e\x4e\x8b\x6c\x69\x53\xc6\x6c\x68\x00\x00\x6c\x6a\x6c\x6c\x6c\x6b\x00\x00\x00\x00\x00\x00\x6c\x6d\x00\x00\x57\xb9\x00\x00\x6c\x6e\x00\x00\x00\x00\x52\xa6\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 9b80 */ NULL, /* 9c00 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5a\x84\x00\x00\x00\x00\x6b\xce", /* 9c80 */ "\x00\x00\x51\xb2\x6b\xcf\x00\x00\x00\x00\x6b\xd0\x6b\xd1\x6b\xd2\x6b\xd3\x00\x00\x00\x00\x6b\xd5\x00\x00\x49\x4b\x6b\xd6\x00\x00\x6b\xd7\x6b\xd8\x6b\xd9\x00\x00\x6b\xda\x6b\xdb\x00\x00\x00\x00\x00\x00\x00\x00\x6b\xdc\x6b\xdd\x58\x6a\x00\x00\x6b\xde\x6b\xdf\x6b\xe0\x6b\xe1\x6b\xe2\x6b\xe3\x50\xef\x6b\xe4\x6b\xe5\x6b\xe6\x6b\xe7\x6b\xe8\x00\x00\x6b\xe9\x00\x00\x6b\xea\x6b\xeb\x00\x00\x6b\xec\x6b\xed\x6b\xee\x6b\xef\x6b\xf0\x6b\xf1\x6b\xf2\x6b\xf3\x4f\xa7\x00\x00\x6b\xf4\x6b\xf5\x6b\xf6\x6b\xf7\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x54\xf9\x6b\xf8\x6b\xf9\x6b\xfa\x6b\xfb\x00\x00\x00\x00\x6b\xfc\x6b\xfd\x6c\x41\x6c\x42\x6c\x43\x6c\x44\x6c\x45\x00\x00\x00\x00\x6c\x46\x6c\x47\x6c\x48\x49\x8f\x6c\x49\x6c\x4a\x6c\x4b\x00\x00\x00\x00\x6c\x4c\x6c\x4d\x51\x7b\x6c\x4e\x00\x00\x00\x00\x6c\x4f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 9d00 */ NULL, /* 9d80 */ NULL, /* 9e00 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x52\xf0\x68\xae\x4e\xa5\x68\xaf\x52\x9a\x00\x00\x53\x58\x59\x5b\x00\x00\x68\xb0\x68\xb1\x68\xb2\x68\xb3\x68\xb4\x59\x5c\x00\x00\x59\x8d\x00\x00\x68\xb6\x68\xb5\x5a\xa6\x00\x00\x57\x72\x68\xb7\x68\xb9\x68\xb8\x68\xba\x68\xbb\x00\x00\x00\x00\x4c\xea\x68\xbc\x4d\xe7\x00\x00\x68\xbd\x68\xbe\x4f\xe8\x68\xbf\x4b\xeb\x68\xc0\x68\xc1\x68\xc2\x68\xc3\x54\xb4\x68\xc4\x68\xc5\x00\x00\x68\xc6\x53\x95\x00\x00\x68\xc7\x00\x00\x00\x00\x00\x00\x68\xc8\x00\x00\x68\xc9\x6c\x5d\x00\x00\x68\xca\x68\xcb\x68\xcc\x00\x00\x68\xcd\x00\x00\x00\x00\x00\x00\x00\x00\x68\xce\x4d\xd6\x00\x00\x68\xcf\x68\xd0\x68\xd1\x68\xd2\x68\xd3\x68\xd4\x68\xd5\x68\xd7\x00\x00\x00\x00\x5a\x45\x68\xd6\x00\x00\x68\xd8\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6b\x5a\x51\xb8", /* 9e80 */ "\x00\x00\x00\x00\x6c\x85\x00\x00\x00\x00\x00\x00\x00\x00\x6c\x86\x6c\x87\x00\x00\x00\x00\x6c\x88\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6c\x89\x51\xb3\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6c\x8b\x00\x00\x6c\x8c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x51\xf2\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\xef\x00\x00\x00\x00\x00\x00\x6a\xee\x00\x00\x00\x00\x51\xe8\x00\x00\x6c\x82\x6c\x83\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4e\x66\x00\x00\x00\x00\x00\x00\x00\x00\x5d\x85\x00\x00\x00\x00\x00\x00\x55\xf1\x50\xe7\x68\xa3\x00\x00\x4d\xd9\x00\x00\x00\x00\x54\x4d\x00\x00\x00\x00\x00\x00\x52\xab\x00\x00\x00\x00\x6c\x8d\x6c\x8e\x6c\x8f\x00\x00\x6c\x91\x6c\x90\x00\x00\x6c\x92\x00\x00\x00\x00\x6c\x95\x00\x00\x6c\x94\x00\x00\x6c\x93\x6c\x96\x00\x00\x00\x00\x00\x00\x00\x00\x6c\x97\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x67\x8a\x00\x00\x67\x8b\x67\x8c\x00\x00\x6b\xbb\x00\x00", /* 9f00 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6b\xbc\x00\x00\x6b\xbd\x4b\xa5\x00\x00\x5c\xbd\x00\x00\x00\x00\x4d\x64\x00\x00\x00\x00\x00\x00\x5c\xba\x00\x00\x5e\xb0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x55\xf2\x00\x00\x6c\x98\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6c\x99\x00\x00\x00\x00\x6c\x9a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6c\x9c\x00\x00\x6c\x9b\x00\x00\x49\x67\x00\x00\x6c\x9d\x6c\x9e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6c\x9f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x53\xea\x66\xb3\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4a\x7d", /* 9f80 */ "\x6b\xb2\x00\x00\x00\x00\x6b\xb3\x51\x85\x6b\xb4\x6b\xb5\x6b\xb6\x6b\xb7\x6b\xb8\x6b\xb9\x54\xa2\x6b\xba\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x51\x9b\x4d\x48\x67\x89\x00\x00\x00\x00\x00\x00\x4d\x8b\x5d\x7f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* a000 */ NULL, /* a080 */ NULL, /* a100 */ NULL, /* a180 */ NULL, /* a200 */ NULL, /* a280 */ NULL, /* a300 */ NULL, /* a380 */ NULL, /* a400 */ NULL, /* a480 */ NULL, /* a500 */ NULL, /* a580 */ NULL, /* a600 */ NULL, /* a680 */ NULL, /* a700 */ NULL, /* a780 */ NULL, /* a800 */ NULL, /* a880 */ NULL, /* a900 */ NULL, /* a980 */ NULL, /* aa00 */ NULL, /* aa80 */ NULL, /* ab00 */ NULL, /* ab80 */ NULL, /* ac00 */ NULL, /* ac80 */ NULL, /* ad00 */ NULL, /* ad80 */ NULL, /* ae00 */ NULL, /* ae80 */ NULL, /* af00 */ NULL, /* af80 */ NULL, /* b000 */ NULL, /* b080 */ NULL, /* b100 */ NULL, /* b180 */ NULL, /* b200 */ NULL, /* b280 */ NULL, /* b300 */ NULL, /* b380 */ NULL, /* b400 */ NULL, /* b480 */ NULL, /* b500 */ NULL, /* b580 */ NULL, /* b600 */ NULL, /* b680 */ NULL, /* b700 */ NULL, /* b780 */ NULL, /* b800 */ NULL, /* b880 */ NULL, /* b900 */ NULL, /* b980 */ NULL, /* ba00 */ NULL, /* ba80 */ NULL, /* bb00 */ NULL, /* bb80 */ NULL, /* bc00 */ NULL, /* bc80 */ NULL, /* bd00 */ NULL, /* bd80 */ NULL, /* be00 */ NULL, /* be80 */ NULL, /* bf00 */ NULL, /* bf80 */ NULL, /* c000 */ NULL, /* c080 */ NULL, /* c100 */ NULL, /* c180 */ NULL, /* c200 */ NULL, /* c280 */ NULL, /* c300 */ NULL, /* c380 */ NULL, /* c400 */ NULL, /* c480 */ NULL, /* c500 */ NULL, /* c580 */ NULL, /* c600 */ NULL, /* c680 */ NULL, /* c700 */ NULL, /* c780 */ NULL, /* c800 */ NULL, /* c880 */ NULL, /* c900 */ NULL, /* c980 */ NULL, /* ca00 */ NULL, /* ca80 */ NULL, /* cb00 */ NULL, /* cb80 */ NULL, /* cc00 */ NULL, /* cc80 */ NULL, /* cd00 */ NULL, /* cd80 */ NULL, /* ce00 */ NULL, /* ce80 */ NULL, /* cf00 */ NULL, /* cf80 */ NULL, /* d000 */ NULL, /* d080 */ NULL, /* d100 */ NULL, /* d180 */ NULL, /* d200 */ NULL, /* d280 */ NULL, /* d300 */ NULL, /* d380 */ NULL, /* d400 */ NULL, /* d480 */ NULL, /* d500 */ NULL, /* d580 */ NULL, /* d600 */ NULL, /* d680 */ NULL, /* d700 */ NULL, /* d780 */ NULL, /* d800 */ NULL, /* d880 */ NULL, /* d900 */ NULL, /* d980 */ NULL, /* da00 */ NULL, /* da80 */ NULL, /* db00 */ NULL, /* db80 */ NULL, /* dc00 */ NULL, /* dc80 */ NULL, /* dd00 */ NULL, /* dd80 */ NULL, /* de00 */ NULL, /* de80 */ NULL, /* df00 */ NULL, /* df80 */ NULL, /* e000 */ "\x76\x41\x76\x42\x76\x43\x76\x44\x76\x45\x76\x46\x76\x47\x76\x48\x76\x49\x76\x4a\x76\x4b\x76\x4c\x76\x4d\x76\x4e\x76\x4f\x76\x50\x76\x51\x76\x52\x76\x53\x76\x54\x76\x55\x76\x56\x76\x57\x76\x58\x76\x59\x76\x5a\x76\x5b\x76\x5c\x76\x5d\x76\x5e\x76\x5f\x76\x60\x76\x61\x76\x62\x76\x63\x76\x64\x76\x65\x76\x66\x76\x67\x76\x68\x76\x69\x76\x6a\x76\x6b\x76\x6c\x76\x6d\x76\x6e\x76\x6f\x76\x70\x76\x71\x76\x72\x76\x73\x76\x74\x76\x75\x76\x76\x76\x77\x76\x78\x76\x79\x76\x7a\x76\x7b\x76\x7c\x76\x7d\x76\x7e\x76\x7f\x76\x81\x76\x82\x76\x83\x76\x84\x76\x85\x76\x86\x76\x87\x76\x88\x76\x89\x76\x8a\x76\x8b\x76\x8c\x76\x8d\x76\x8e\x76\x8f\x76\x90\x76\x91\x76\x92\x76\x93\x76\x94\x76\x95\x76\x96\x76\x97\x76\x98\x76\x99\x76\x9a\x76\x9b\x76\x9c\x76\x9d\x76\x9e\x76\x9f\x76\xa0\x76\xa1\x76\xa2\x76\xa3\x76\xa4\x76\xa5\x76\xa6\x76\xa7\x76\xa8\x76\xa9\x76\xaa\x76\xab\x76\xac\x76\xad\x76\xae\x76\xaf\x76\xb0\x76\xb1\x76\xb2\x76\xb3\x76\xb4\x76\xb5\x76\xb6\x76\xb7\x76\xb8\x76\xb9\x76\xba\x76\xbb\x76\xbc\x76\xbd\x76\xbe\x76\xbf\x76\xc0\x76\xc1", /* e080 */ "\x76\xc2\x76\xc3\x76\xc4\x76\xc5\x76\xc6\x76\xc7\x76\xc8\x76\xc9\x76\xca\x76\xcb\x76\xcc\x76\xcd\x76\xce\x76\xcf\x76\xd0\x76\xd1\x76\xd2\x76\xd3\x76\xd4\x76\xd5\x76\xd6\x76\xd7\x76\xd8\x76\xd9\x76\xda\x76\xdb\x76\xdc\x76\xdd\x76\xde\x76\xdf\x76\xe0\x76\xe1\x76\xe2\x76\xe3\x76\xe4\x76\xe5\x76\xe6\x76\xe7\x76\xe8\x76\xe9\x76\xea\x76\xeb\x76\xec\x76\xed\x76\xee\x76\xef\x76\xf0\x76\xf1\x76\xf2\x76\xf3\x76\xf4\x76\xf5\x76\xf6\x76\xf7\x76\xf8\x76\xf9\x76\xfa\x76\xfb\x76\xfc\x76\xfd\x77\x41\x77\x42\x77\x43\x77\x44\x77\x45\x77\x46\x77\x47\x77\x48\x77\x49\x77\x4a\x77\x4b\x77\x4c\x77\x4d\x77\x4e\x77\x4f\x77\x50\x77\x51\x77\x52\x77\x53\x77\x54\x77\x55\x77\x56\x77\x57\x77\x58\x77\x59\x77\x5a\x77\x5b\x77\x5c\x77\x5d\x77\x5e\x77\x5f\x77\x60\x77\x61\x77\x62\x77\x63\x77\x64\x77\x65\x77\x66\x77\x67\x77\x68\x77\x69\x77\x6a\x77\x6b\x77\x6c\x77\x6d\x77\x6e\x77\x6f\x77\x70\x77\x71\x77\x72\x77\x73\x77\x74\x77\x75\x77\x76\x77\x77\x77\x78\x77\x79\x77\x7a\x77\x7b\x77\x7c\x77\x7d\x77\x7e\x77\x7f\x77\x81\x77\x82\x77\x83\x77\x84\x77\x85", /* e100 */ "\x77\x86\x77\x87\x77\x88\x77\x89\x77\x8a\x77\x8b\x77\x8c\x77\x8d\x77\x8e\x77\x8f\x77\x90\x77\x91\x77\x92\x77\x93\x77\x94\x77\x95\x77\x96\x77\x97\x77\x98\x77\x99\x77\x9a\x77\x9b\x77\x9c\x77\x9d\x77\x9e\x77\x9f\x77\xa0\x77\xa1\x77\xa2\x77\xa3\x77\xa4\x77\xa5\x77\xa6\x77\xa7\x77\xa8\x77\xa9\x77\xaa\x77\xab\x77\xac\x77\xad\x77\xae\x77\xaf\x77\xb0\x77\xb1\x77\xb2\x77\xb3\x77\xb4\x77\xb5\x77\xb6\x77\xb7\x77\xb8\x77\xb9\x77\xba\x77\xbb\x77\xbc\x77\xbd\x77\xbe\x77\xbf\x77\xc0\x77\xc1\x77\xc2\x77\xc3\x77\xc4\x77\xc5\x77\xc6\x77\xc7\x77\xc8\x77\xc9\x77\xca\x77\xcb\x77\xcc\x77\xcd\x77\xce\x77\xcf\x77\xd0\x77\xd1\x77\xd2\x77\xd3\x77\xd4\x77\xd5\x77\xd6\x77\xd7\x77\xd8\x77\xd9\x77\xda\x77\xdb\x77\xdc\x77\xdd\x77\xde\x77\xdf\x77\xe0\x77\xe1\x77\xe2\x77\xe3\x77\xe4\x77\xe5\x77\xe6\x77\xe7\x77\xe8\x77\xe9\x77\xea\x77\xeb\x77\xec\x77\xed\x77\xee\x77\xef\x77\xf0\x77\xf1\x77\xf2\x77\xf3\x77\xf4\x77\xf5\x77\xf6\x77\xf7\x77\xf8\x77\xf9\x77\xfa\x77\xfb\x77\xfc\x77\xfd\x78\x41\x78\x42\x78\x43\x78\x44\x78\x45\x78\x46\x78\x47\x78\x48", /* e180 */ "\x78\x49\x78\x4a\x78\x4b\x78\x4c\x78\x4d\x78\x4e\x78\x4f\x78\x50\x78\x51\x78\x52\x78\x53\x78\x54\x78\x55\x78\x56\x78\x57\x78\x58\x78\x59\x78\x5a\x78\x5b\x78\x5c\x78\x5d\x78\x5e\x78\x5f\x78\x60\x78\x61\x78\x62\x78\x63\x78\x64\x78\x65\x78\x66\x78\x67\x78\x68\x78\x69\x78\x6a\x78\x6b\x78\x6c\x78\x6d\x78\x6e\x78\x6f\x78\x70\x78\x71\x78\x72\x78\x73\x78\x74\x78\x75\x78\x76\x78\x77\x78\x78\x78\x79\x78\x7a\x78\x7b\x78\x7c\x78\x7d\x78\x7e\x78\x7f\x78\x81\x78\x82\x78\x83\x78\x84\x78\x85\x78\x86\x78\x87\x78\x88\x78\x89\x78\x8a\x78\x8b\x78\x8c\x78\x8d\x78\x8e\x78\x8f\x78\x90\x78\x91\x78\x92\x78\x93\x78\x94\x78\x95\x78\x96\x78\x97\x78\x98\x78\x99\x78\x9a\x78\x9b\x78\x9c\x78\x9d\x78\x9e\x78\x9f\x78\xa0\x78\xa1\x78\xa2\x78\xa3\x78\xa4\x78\xa5\x78\xa6\x78\xa7\x78\xa8\x78\xa9\x78\xaa\x78\xab\x78\xac\x78\xad\x78\xae\x78\xaf\x78\xb0\x78\xb1\x78\xb2\x78\xb3\x78\xb4\x78\xb5\x78\xb6\x78\xb7\x78\xb8\x78\xb9\x78\xba\x78\xbb\x78\xbc\x78\xbd\x78\xbe\x78\xbf\x78\xc0\x78\xc1\x78\xc2\x78\xc3\x78\xc4\x78\xc5\x78\xc6\x78\xc7\x78\xc8\x78\xc9", /* e200 */ "\x78\xca\x78\xcb\x78\xcc\x78\xcd\x78\xce\x78\xcf\x78\xd0\x78\xd1\x78\xd2\x78\xd3\x78\xd4\x78\xd5\x78\xd6\x78\xd7\x78\xd8\x78\xd9\x78\xda\x78\xdb\x78\xdc\x78\xdd\x78\xde\x78\xdf\x78\xe0\x78\xe1\x78\xe2\x78\xe3\x78\xe4\x78\xe5\x78\xe6\x78\xe7\x78\xe8\x78\xe9\x78\xea\x78\xeb\x78\xec\x78\xed\x78\xee\x78\xef\x78\xf0\x78\xf1\x78\xf2\x78\xf3\x78\xf4\x78\xf5\x78\xf6\x78\xf7\x78\xf8\x78\xf9\x78\xfa\x78\xfb\x78\xfc\x78\xfd\x79\x41\x79\x42\x79\x43\x79\x44\x79\x45\x79\x46\x79\x47\x79\x48\x79\x49\x79\x4a\x79\x4b\x79\x4c\x79\x4d\x79\x4e\x79\x4f\x79\x50\x79\x51\x79\x52\x79\x53\x79\x54\x79\x55\x79\x56\x79\x57\x79\x58\x79\x59\x79\x5a\x79\x5b\x79\x5c\x79\x5d\x79\x5e\x79\x5f\x79\x60\x79\x61\x79\x62\x79\x63\x79\x64\x79\x65\x79\x66\x79\x67\x79\x68\x79\x69\x79\x6a\x79\x6b\x79\x6c\x79\x6d\x79\x6e\x79\x6f\x79\x70\x79\x71\x79\x72\x79\x73\x79\x74\x79\x75\x79\x76\x79\x77\x79\x78\x79\x79\x79\x7a\x79\x7b\x79\x7c\x79\x7d\x79\x7e\x79\x7f\x79\x81\x79\x82\x79\x83\x79\x84\x79\x85\x79\x86\x79\x87\x79\x88\x79\x89\x79\x8a\x79\x8b\x79\x8c\x79\x8d", /* e280 */ "\x79\x8e\x79\x8f\x79\x90\x79\x91\x79\x92\x79\x93\x79\x94\x79\x95\x79\x96\x79\x97\x79\x98\x79\x99\x79\x9a\x79\x9b\x79\x9c\x79\x9d\x79\x9e\x79\x9f\x79\xa0\x79\xa1\x79\xa2\x79\xa3\x79\xa4\x79\xa5\x79\xa6\x79\xa7\x79\xa8\x79\xa9\x79\xaa\x79\xab\x79\xac\x79\xad\x79\xae\x79\xaf\x79\xb0\x79\xb1\x79\xb2\x79\xb3\x79\xb4\x79\xb5\x79\xb6\x79\xb7\x79\xb8\x79\xb9\x79\xba\x79\xbb\x79\xbc\x79\xbd\x79\xbe\x79\xbf\x79\xc0\x79\xc1\x79\xc2\x79\xc3\x79\xc4\x79\xc5\x79\xc6\x79\xc7\x79\xc8\x79\xc9\x79\xca\x79\xcb\x79\xcc\x79\xcd\x79\xce\x79\xcf\x79\xd0\x79\xd1\x79\xd2\x79\xd3\x79\xd4\x79\xd5\x79\xd6\x79\xd7\x79\xd8\x79\xd9\x79\xda\x79\xdb\x79\xdc\x79\xdd\x79\xde\x79\xdf\x79\xe0\x79\xe1\x79\xe2\x79\xe3\x79\xe4\x79\xe5\x79\xe6\x79\xe7\x79\xe8\x79\xe9\x79\xea\x79\xeb\x79\xec\x79\xed\x79\xee\x79\xef\x79\xf0\x79\xf1\x79\xf2\x79\xf3\x79\xf4\x79\xf5\x79\xf6\x79\xf7\x79\xf8\x79\xf9\x79\xfa\x79\xfb\x79\xfc\x79\xfd\x7a\x41\x7a\x42\x7a\x43\x7a\x44\x7a\x45\x7a\x46\x7a\x47\x7a\x48\x7a\x49\x7a\x4a\x7a\x4b\x7a\x4c\x7a\x4d\x7a\x4e\x7a\x4f\x7a\x50", /* e300 */ "\x7a\x51\x7a\x52\x7a\x53\x7a\x54\x7a\x55\x7a\x56\x7a\x57\x7a\x58\x7a\x59\x7a\x5a\x7a\x5b\x7a\x5c\x7a\x5d\x7a\x5e\x7a\x5f\x7a\x60\x7a\x61\x7a\x62\x7a\x63\x7a\x64\x7a\x65\x7a\x66\x7a\x67\x7a\x68\x7a\x69\x7a\x6a\x7a\x6b\x7a\x6c\x7a\x6d\x7a\x6e\x7a\x6f\x7a\x70\x7a\x71\x7a\x72\x7a\x73\x7a\x74\x7a\x75\x7a\x76\x7a\x77\x7a\x78\x7a\x79\x7a\x7a\x7a\x7b\x7a\x7c\x7a\x7d\x7a\x7e\x7a\x7f\x7a\x81\x7a\x82\x7a\x83\x7a\x84\x7a\x85\x7a\x86\x7a\x87\x7a\x88\x7a\x89\x7a\x8a\x7a\x8b\x7a\x8c\x7a\x8d\x7a\x8e\x7a\x8f\x7a\x90\x7a\x91\x7a\x92\x7a\x93\x7a\x94\x7a\x95\x7a\x96\x7a\x97\x7a\x98\x7a\x99\x7a\x9a\x7a\x9b\x7a\x9c\x7a\x9d\x7a\x9e\x7a\x9f\x7a\xa0\x7a\xa1\x7a\xa2\x7a\xa3\x7a\xa4\x7a\xa5\x7a\xa6\x7a\xa7\x7a\xa8\x7a\xa9\x7a\xaa\x7a\xab\x7a\xac\x7a\xad\x7a\xae\x7a\xaf\x7a\xb0\x7a\xb1\x7a\xb2\x7a\xb3\x7a\xb4\x7a\xb5\x7a\xb6\x7a\xb7\x7a\xb8\x7a\xb9\x7a\xba\x7a\xbb\x7a\xbc\x7a\xbd\x7a\xbe\x7a\xbf\x7a\xc0\x7a\xc1\x7a\xc2\x7a\xc3\x7a\xc4\x7a\xc5\x7a\xc6\x7a\xc7\x7a\xc8\x7a\xc9\x7a\xca\x7a\xcb\x7a\xcc\x7a\xcd\x7a\xce\x7a\xcf\x7a\xd0\x7a\xd1", /* e380 */ "\x7a\xd2\x7a\xd3\x7a\xd4\x7a\xd5\x7a\xd6\x7a\xd7\x7a\xd8\x7a\xd9\x7a\xda\x7a\xdb\x7a\xdc\x7a\xdd\x7a\xde\x7a\xdf\x7a\xe0\x7a\xe1\x7a\xe2\x7a\xe3\x7a\xe4\x7a\xe5\x7a\xe6\x7a\xe7\x7a\xe8\x7a\xe9\x7a\xea\x7a\xeb\x7a\xec\x7a\xed\x7a\xee\x7a\xef\x7a\xf0\x7a\xf1\x7a\xf2\x7a\xf3\x7a\xf4\x7a\xf5\x7a\xf6\x7a\xf7\x7a\xf8\x7a\xf9\x7a\xfa\x7a\xfb\x7a\xfc\x7a\xfd\x7b\x41\x7b\x42\x7b\x43\x7b\x44\x7b\x45\x7b\x46\x7b\x47\x7b\x48\x7b\x49\x7b\x4a\x7b\x4b\x7b\x4c\x7b\x4d\x7b\x4e\x7b\x4f\x7b\x50\x7b\x51\x7b\x52\x7b\x53\x7b\x54\x7b\x55\x7b\x56\x7b\x57\x7b\x58\x7b\x59\x7b\x5a\x7b\x5b\x7b\x5c\x7b\x5d\x7b\x5e\x7b\x5f\x7b\x60\x7b\x61\x7b\x62\x7b\x63\x7b\x64\x7b\x65\x7b\x66\x7b\x67\x7b\x68\x7b\x69\x7b\x6a\x7b\x6b\x7b\x6c\x7b\x6d\x7b\x6e\x7b\x6f\x7b\x70\x7b\x71\x7b\x72\x7b\x73\x7b\x74\x7b\x75\x7b\x76\x7b\x77\x7b\x78\x7b\x79\x7b\x7a\x7b\x7b\x7b\x7c\x7b\x7d\x7b\x7e\x7b\x7f\x7b\x81\x7b\x82\x7b\x83\x7b\x84\x7b\x85\x7b\x86\x7b\x87\x7b\x88\x7b\x89\x7b\x8a\x7b\x8b\x7b\x8c\x7b\x8d\x7b\x8e\x7b\x8f\x7b\x90\x7b\x91\x7b\x92\x7b\x93\x7b\x94\x7b\x95", /* e400 */ "\x7b\x96\x7b\x97\x7b\x98\x7b\x99\x7b\x9a\x7b\x9b\x7b\x9c\x7b\x9d\x7b\x9e\x7b\x9f\x7b\xa0\x7b\xa1\x7b\xa2\x7b\xa3\x7b\xa4\x7b\xa5\x7b\xa6\x7b\xa7\x7b\xa8\x7b\xa9\x7b\xaa\x7b\xab\x7b\xac\x7b\xad\x7b\xae\x7b\xaf\x7b\xb0\x7b\xb1\x7b\xb2\x7b\xb3\x7b\xb4\x7b\xb5\x7b\xb6\x7b\xb7\x7b\xb8\x7b\xb9\x7b\xba\x7b\xbb\x7b\xbc\x7b\xbd\x7b\xbe\x7b\xbf\x7b\xc0\x7b\xc1\x7b\xc2\x7b\xc3\x7b\xc4\x7b\xc5\x7b\xc6\x7b\xc7\x7b\xc8\x7b\xc9\x7b\xca\x7b\xcb\x7b\xcc\x7b\xcd\x7b\xce\x7b\xcf\x7b\xd0\x7b\xd1\x7b\xd2\x7b\xd3\x7b\xd4\x7b\xd5\x7b\xd6\x7b\xd7\x7b\xd8\x7b\xd9\x7b\xda\x7b\xdb\x7b\xdc\x7b\xdd\x7b\xde\x7b\xdf\x7b\xe0\x7b\xe1\x7b\xe2\x7b\xe3\x7b\xe4\x7b\xe5\x7b\xe6\x7b\xe7\x7b\xe8\x7b\xe9\x7b\xea\x7b\xeb\x7b\xec\x7b\xed\x7b\xee\x7b\xef\x7b\xf0\x7b\xf1\x7b\xf2\x7b\xf3\x7b\xf4\x7b\xf5\x7b\xf6\x7b\xf7\x7b\xf8\x7b\xf9\x7b\xfa\x7b\xfb\x7b\xfc\x7b\xfd\x7c\x41\x7c\x42\x7c\x43\x7c\x44\x7c\x45\x7c\x46\x7c\x47\x7c\x48\x7c\x49\x7c\x4a\x7c\x4b\x7c\x4c\x7c\x4d\x7c\x4e\x7c\x4f\x7c\x50\x7c\x51\x7c\x52\x7c\x53\x7c\x54\x7c\x55\x7c\x56\x7c\x57\x7c\x58", /* e480 */ "\x7c\x59\x7c\x5a\x7c\x5b\x7c\x5c\x7c\x5d\x7c\x5e\x7c\x5f\x7c\x60\x7c\x61\x7c\x62\x7c\x63\x7c\x64\x7c\x65\x7c\x66\x7c\x67\x7c\x68\x7c\x69\x7c\x6a\x7c\x6b\x7c\x6c\x7c\x6d\x7c\x6e\x7c\x6f\x7c\x70\x7c\x71\x7c\x72\x7c\x73\x7c\x74\x7c\x75\x7c\x76\x7c\x77\x7c\x78\x7c\x79\x7c\x7a\x7c\x7b\x7c\x7c\x7c\x7d\x7c\x7e\x7c\x7f\x7c\x81\x7c\x82\x7c\x83\x7c\x84\x7c\x85\x7c\x86\x7c\x87\x7c\x88\x7c\x89\x7c\x8a\x7c\x8b\x7c\x8c\x7c\x8d\x7c\x8e\x7c\x8f\x7c\x90\x7c\x91\x7c\x92\x7c\x93\x7c\x94\x7c\x95\x7c\x96\x7c\x97\x7c\x98\x7c\x99\x7c\x9a\x7c\x9b\x7c\x9c\x7c\x9d\x7c\x9e\x7c\x9f\x7c\xa0\x7c\xa1\x7c\xa2\x7c\xa3\x7c\xa4\x7c\xa5\x7c\xa6\x7c\xa7\x7c\xa8\x7c\xa9\x7c\xaa\x7c\xab\x7c\xac\x7c\xad\x7c\xae\x7c\xaf\x7c\xb0\x7c\xb1\x7c\xb2\x7c\xb3\x7c\xb4\x7c\xb5\x7c\xb6\x7c\xb7\x7c\xb8\x7c\xb9\x7c\xba\x7c\xbb\x7c\xbc\x7c\xbd\x7c\xbe\x7c\xbf\x7c\xc0\x7c\xc1\x7c\xc2\x7c\xc3\x7c\xc4\x7c\xc5\x7c\xc6\x7c\xc7\x7c\xc8\x7c\xc9\x7c\xca\x7c\xcb\x7c\xcc\x7c\xcd\x7c\xce\x7c\xcf\x7c\xd0\x7c\xd1\x7c\xd2\x7c\xd3\x7c\xd4\x7c\xd5\x7c\xd6\x7c\xd7\x7c\xd8\x7c\xd9", /* e500 */ "\x7c\xda\x7c\xdb\x7c\xdc\x7c\xdd\x7c\xde\x7c\xdf\x7c\xe0\x7c\xe1\x7c\xe2\x7c\xe3\x7c\xe4\x7c\xe5\x7c\xe6\x7c\xe7\x7c\xe8\x7c\xe9\x7c\xea\x7c\xeb\x7c\xec\x7c\xed\x7c\xee\x7c\xef\x7c\xf0\x7c\xf1\x7c\xf2\x7c\xf3\x7c\xf4\x7c\xf5\x7c\xf6\x7c\xf7\x7c\xf8\x7c\xf9\x7c\xfa\x7c\xfb\x7c\xfc\x7c\xfd\x7d\x41\x7d\x42\x7d\x43\x7d\x44\x7d\x45\x7d\x46\x7d\x47\x7d\x48\x7d\x49\x7d\x4a\x7d\x4b\x7d\x4c\x7d\x4d\x7d\x4e\x7d\x4f\x7d\x50\x7d\x51\x7d\x52\x7d\x53\x7d\x54\x7d\x55\x7d\x56\x7d\x57\x7d\x58\x7d\x59\x7d\x5a\x7d\x5b\x7d\x5c\x7d\x5d\x7d\x5e\x7d\x5f\x7d\x60\x7d\x61\x7d\x62\x7d\x63\x7d\x64\x7d\x65\x7d\x66\x7d\x67\x7d\x68\x7d\x69\x7d\x6a\x7d\x6b\x7d\x6c\x7d\x6d\x7d\x6e\x7d\x6f\x7d\x70\x7d\x71\x7d\x72\x7d\x73\x7d\x74\x7d\x75\x7d\x76\x7d\x77\x7d\x78\x7d\x79\x7d\x7a\x7d\x7b\x7d\x7c\x7d\x7d\x7d\x7e\x7d\x7f\x7d\x81\x7d\x82\x7d\x83\x7d\x84\x7d\x85\x7d\x86\x7d\x87\x7d\x88\x7d\x89\x7d\x8a\x7d\x8b\x7d\x8c\x7d\x8d\x7d\x8e\x7d\x8f\x7d\x90\x7d\x91\x7d\x92\x7d\x93\x7d\x94\x7d\x95\x7d\x96\x7d\x97\x7d\x98\x7d\x99\x7d\x9a\x7d\x9b\x7d\x9c\x7d\x9d", /* e580 */ "\x7d\x9e\x7d\x9f\x7d\xa0\x7d\xa1\x7d\xa2\x7d\xa3\x7d\xa4\x7d\xa5\x7d\xa6\x7d\xa7\x7d\xa8\x7d\xa9\x7d\xaa\x7d\xab\x7d\xac\x7d\xad\x7d\xae\x7d\xaf\x7d\xb0\x7d\xb1\x7d\xb2\x7d\xb3\x7d\xb4\x7d\xb5\x7d\xb6\x7d\xb7\x7d\xb8\x7d\xb9\x7d\xba\x7d\xbb\x7d\xbc\x7d\xbd\x7d\xbe\x7d\xbf\x7d\xc0\x7d\xc1\x7d\xc2\x7d\xc3\x7d\xc4\x7d\xc5\x7d\xc6\x7d\xc7\x7d\xc8\x7d\xc9\x7d\xca\x7d\xcb\x7d\xcc\x7d\xcd\x7d\xce\x7d\xcf\x7d\xd0\x7d\xd1\x7d\xd2\x7d\xd3\x7d\xd4\x7d\xd5\x7d\xd6\x7d\xd7\x7d\xd8\x7d\xd9\x7d\xda\x7d\xdb\x7d\xdc\x7d\xdd\x7d\xde\x7d\xdf\x7d\xe0\x7d\xe1\x7d\xe2\x7d\xe3\x7d\xe4\x7d\xe5\x7d\xe6\x7d\xe7\x7d\xe8\x7d\xe9\x7d\xea\x7d\xeb\x7d\xec\x7d\xed\x7d\xee\x7d\xef\x7d\xf0\x7d\xf1\x7d\xf2\x7d\xf3\x7d\xf4\x7d\xf5\x7d\xf6\x7d\xf7\x7d\xf8\x7d\xf9\x7d\xfa\x7d\xfb\x7d\xfc\x7d\xfd\x7e\x41\x7e\x42\x7e\x43\x7e\x44\x7e\x45\x7e\x46\x7e\x47\x7e\x48\x7e\x49\x7e\x4a\x7e\x4b\x7e\x4c\x7e\x4d\x7e\x4e\x7e\x4f\x7e\x50\x7e\x51\x7e\x52\x7e\x53\x7e\x54\x7e\x55\x7e\x56\x7e\x57\x7e\x58\x7e\x59\x7e\x5a\x7e\x5b\x7e\x5c\x7e\x5d\x7e\x5e\x7e\x5f\x7e\x60", /* e600 */ "\x7e\x61\x7e\x62\x7e\x63\x7e\x64\x7e\x65\x7e\x66\x7e\x67\x7e\x68\x7e\x69\x7e\x6a\x7e\x6b\x7e\x6c\x7e\x6d\x7e\x6e\x7e\x6f\x7e\x70\x7e\x71\x7e\x72\x7e\x73\x7e\x74\x7e\x75\x7e\x76\x7e\x77\x7e\x78\x7e\x79\x7e\x7a\x7e\x7b\x7e\x7c\x7e\x7d\x7e\x7e\x7e\x7f\x7e\x81\x7e\x82\x7e\x83\x7e\x84\x7e\x85\x7e\x86\x7e\x87\x7e\x88\x7e\x89\x7e\x8a\x7e\x8b\x7e\x8c\x7e\x8d\x7e\x8e\x7e\x8f\x7e\x90\x7e\x91\x7e\x92\x7e\x93\x7e\x94\x7e\x95\x7e\x96\x7e\x97\x7e\x98\x7e\x99\x7e\x9a\x7e\x9b\x7e\x9c\x7e\x9d\x7e\x9e\x7e\x9f\x7e\xa0\x7e\xa1\x7e\xa2\x7e\xa3\x7e\xa4\x7e\xa5\x7e\xa6\x7e\xa7\x7e\xa8\x7e\xa9\x7e\xaa\x7e\xab\x7e\xac\x7e\xad\x7e\xae\x7e\xaf\x7e\xb0\x7e\xb1\x7e\xb2\x7e\xb3\x7e\xb4\x7e\xb5\x7e\xb6\x7e\xb7\x7e\xb8\x7e\xb9\x7e\xba\x7e\xbb\x7e\xbc\x7e\xbd\x7e\xbe\x7e\xbf\x7e\xc0\x7e\xc1\x7e\xc2\x7e\xc3\x7e\xc4\x7e\xc5\x7e\xc6\x7e\xc7\x7e\xc8\x7e\xc9\x7e\xca\x7e\xcb\x7e\xcc\x7e\xcd\x7e\xce\x7e\xcf\x7e\xd0\x7e\xd1\x7e\xd2\x7e\xd3\x7e\xd4\x7e\xd5\x7e\xd6\x7e\xd7\x7e\xd8\x7e\xd9\x7e\xda\x7e\xdb\x7e\xdc\x7e\xdd\x7e\xde\x7e\xdf\x7e\xe0\x7e\xe1", /* e680 */ "\x7e\xe2\x7e\xe3\x7e\xe4\x7e\xe5\x7e\xe6\x7e\xe7\x7e\xe8\x7e\xe9\x7e\xea\x7e\xeb\x7e\xec\x7e\xed\x7e\xee\x7e\xef\x7e\xf0\x7e\xf1\x7e\xf2\x7e\xf3\x7e\xf4\x7e\xf5\x7e\xf6\x7e\xf7\x7e\xf8\x7e\xf9\x7e\xfa\x7e\xfb\x7e\xfc\x7e\xfd\x7f\x41\x7f\x42\x7f\x43\x7f\x44\x7f\x45\x7f\x46\x7f\x47\x7f\x48\x7f\x49\x7f\x4a\x7f\x4b\x7f\x4c\x7f\x4d\x7f\x4e\x7f\x4f\x7f\x50\x7f\x51\x7f\x52\x7f\x53\x7f\x54\x7f\x55\x7f\x56\x7f\x57\x7f\x58\x7f\x59\x7f\x5a\x7f\x5b\x7f\x5c\x7f\x5d\x7f\x5e\x7f\x5f\x7f\x60\x7f\x61\x7f\x62\x7f\x63\x7f\x64\x7f\x65\x7f\x66\x7f\x67\x7f\x68\x7f\x69\x7f\x6a\x7f\x6b\x7f\x6c\x7f\x6d\x7f\x6e\x7f\x6f\x7f\x70\x7f\x71\x7f\x72\x7f\x73\x7f\x74\x7f\x75\x7f\x76\x7f\x77\x7f\x78\x7f\x79\x7f\x7a\x7f\x7b\x7f\x7c\x7f\x7d\x7f\x7e\x7f\x7f\x7f\x81\x7f\x82\x7f\x83\x7f\x84\x7f\x85\x7f\x86\x7f\x87\x7f\x88\x7f\x89\x7f\x8a\x7f\x8b\x7f\x8c\x7f\x8d\x7f\x8e\x7f\x8f\x7f\x90\x7f\x91\x7f\x92\x7f\x93\x7f\x94\x7f\x95\x7f\x96\x7f\x97\x7f\x98\x7f\x99\x7f\x9a\x7f\x9b\x7f\x9c\x7f\x9d\x7f\x9e\x7f\x9f\x7f\xa0\x7f\xa1\x7f\xa2\x7f\xa3\x7f\xa4\x7f\xa5", /* e700 */ "\x7f\xa6\x7f\xa7\x7f\xa8\x7f\xa9\x7f\xaa\x7f\xab\x7f\xac\x7f\xad\x7f\xae\x7f\xaf\x7f\xb0\x7f\xb1\x7f\xb2\x7f\xb3\x7f\xb4\x7f\xb5\x7f\xb6\x7f\xb7\x7f\xb8\x7f\xb9\x7f\xba\x7f\xbb\x7f\xbc\x7f\xbd\x7f\xbe\x7f\xbf\x7f\xc0\x7f\xc1\x7f\xc2\x7f\xc3\x7f\xc4\x7f\xc5\x7f\xc6\x7f\xc7\x7f\xc8\x7f\xc9\x7f\xca\x7f\xcb\x7f\xcc\x7f\xcd\x7f\xce\x7f\xcf\x7f\xd0\x7f\xd1\x7f\xd2\x7f\xd3\x7f\xd4\x7f\xd5\x7f\xd6\x7f\xd7\x7f\xd8\x7f\xd9\x7f\xda\x7f\xdb\x7f\xdc\x7f\xdd\x7f\xde\x7f\xdf\x7f\xe0\x7f\xe1\x7f\xe2\x7f\xe3\x7f\xe4\x7f\xe5\x7f\xe6\x7f\xe7\x7f\xe8\x7f\xe9\x7f\xea\x7f\xeb\x7f\xec\x7f\xed\x7f\xee\x7f\xef\x7f\xf0\x7f\xf1\x7f\xf2\x7f\xf3\x7f\xf4\x7f\xf5\x7f\xf6\x7f\xf7\x7f\xf8\x7f\xf9\x7f\xfa\x7f\xfb\x7f\xfc\x7f\xfd\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* e780 */ NULL, /* e800 */ NULL, /* e880 */ NULL, /* e900 */ NULL, /* e980 */ NULL, /* ea00 */ NULL, /* ea80 */ NULL, /* eb00 */ NULL, /* eb80 */ NULL, /* ec00 */ NULL, /* ec80 */ NULL, /* ed00 */ NULL, /* ed80 */ NULL, /* ee00 */ NULL, /* ee80 */ NULL, /* ef00 */ NULL, /* ef80 */ NULL, /* f000 */ NULL, /* f080 */ NULL, /* f100 */ NULL, /* f180 */ NULL, /* f200 */ NULL, /* f280 */ NULL, /* f300 */ NULL, /* f380 */ NULL, /* f400 */ NULL, /* f480 */ NULL, /* f500 */ NULL, /* f580 */ NULL, /* f600 */ NULL, /* f680 */ NULL, /* f700 */ NULL, /* f780 */ NULL, /* f800 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x43\x5b\x44\x5c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* f880 */ NULL, /* f900 */ NULL, /* f980 */ NULL, /* fa00 */ NULL, /* fa80 */ NULL, /* fb00 */ NULL, /* fb80 */ NULL, /* fc00 */ NULL, /* fc80 */ NULL, /* fd00 */ NULL, /* fd80 */ NULL, /* fe00 */ NULL, /* fe80 */ NULL, /* ff00 */ "\x00\x00\x42\x5a\x42\x7f\x42\x7b\x42\xe0\x42\x6c\x42\x50\x42\x7d\x42\x4d\x42\x5d\x42\x5c\x42\x4e\x42\x6b\x42\x60\x42\x4b\x42\x61\x42\xf0\x42\xf1\x42\xf2\x42\xf3\x42\xf4\x42\xf5\x42\xf6\x42\xf7\x42\xf8\x42\xf9\x42\x7a\x42\x5e\x42\x4c\x42\x7e\x42\x6e\x42\x6f\x42\x7c\x42\xc1\x42\xc2\x42\xc3\x42\xc4\x42\xc5\x42\xc6\x42\xc7\x42\xc8\x42\xc9\x42\xd1\x42\xd2\x42\xd3\x42\xd4\x42\xd5\x42\xd6\x42\xd7\x42\xd8\x42\xd9\x42\xe2\x42\xe3\x42\xe4\x42\xe5\x42\xe6\x42\xe7\x42\xe8\x42\xe9\x44\x44\x43\xe0\x44\x45\x44\x70\x42\x6d\x42\x79\x42\x81\x42\x82\x42\x83\x42\x84\x42\x85\x42\x86\x42\x87\x42\x88\x42\x89\x42\x91\x42\x92\x42\x93\x42\x94\x42\x95\x42\x96\x42\x97\x42\x98\x42\x99\x42\xa2\x42\xa3\x42\xa4\x42\xa5\x42\xa6\x42\xa7\x42\xa8\x42\xa9\x42\xc0\x42\x4f\x42\xd0\x43\xa1\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* ff80 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x43\x4a\x42\x4a\x42\x5f\x42\xa1\x42\x6a\x42\x5b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" }, /* EBCDIC DBCS to Unicode translation table for ibm-837_P100-2000 */ { /* 0000 */ NULL, /* 0080 */ NULL, /* 0100 */ NULL, /* 0180 */ NULL, /* 0200 */ NULL, /* 0280 */ NULL, /* 0300 */ NULL, /* 0380 */ NULL, /* 0400 */ NULL, /* 0480 */ NULL, /* 0500 */ NULL, /* 0580 */ NULL, /* 0600 */ NULL, /* 0680 */ NULL, /* 0700 */ NULL, /* 0780 */ NULL, /* 0800 */ NULL, /* 0880 */ NULL, /* 0900 */ NULL, /* 0980 */ NULL, /* 0a00 */ NULL, /* 0a80 */ NULL, /* 0b00 */ NULL, /* 0b80 */ NULL, /* 0c00 */ NULL, /* 0c80 */ NULL, /* 0d00 */ NULL, /* 0d80 */ NULL, /* 0e00 */ NULL, /* 0e80 */ NULL, /* 0f00 */ NULL, /* 0f80 */ NULL, /* 1000 */ NULL, /* 1080 */ NULL, /* 1100 */ NULL, /* 1180 */ NULL, /* 1200 */ NULL, /* 1280 */ NULL, /* 1300 */ NULL, /* 1380 */ NULL, /* 1400 */ NULL, /* 1480 */ NULL, /* 1500 */ NULL, /* 1580 */ NULL, /* 1600 */ NULL, /* 1680 */ NULL, /* 1700 */ NULL, /* 1780 */ NULL, /* 1800 */ NULL, /* 1880 */ NULL, /* 1900 */ NULL, /* 1980 */ NULL, /* 1a00 */ NULL, /* 1a80 */ NULL, /* 1b00 */ NULL, /* 1b80 */ NULL, /* 1c00 */ NULL, /* 1c80 */ NULL, /* 1d00 */ NULL, /* 1d80 */ NULL, /* 1e00 */ NULL, /* 1e80 */ NULL, /* 1f00 */ NULL, /* 1f80 */ NULL, /* 2000 */ NULL, /* 2080 */ NULL, /* 2100 */ NULL, /* 2180 */ NULL, /* 2200 */ NULL, /* 2280 */ NULL, /* 2300 */ NULL, /* 2380 */ NULL, /* 2400 */ NULL, /* 2480 */ NULL, /* 2500 */ NULL, /* 2580 */ NULL, /* 2600 */ NULL, /* 2680 */ NULL, /* 2700 */ NULL, /* 2780 */ NULL, /* 2800 */ NULL, /* 2880 */ NULL, /* 2900 */ NULL, /* 2980 */ NULL, /* 2a00 */ NULL, /* 2a80 */ NULL, /* 2b00 */ NULL, /* 2b80 */ NULL, /* 2c00 */ NULL, /* 2c80 */ NULL, /* 2d00 */ NULL, /* 2d80 */ NULL, /* 2e00 */ NULL, /* 2e80 */ NULL, /* 2f00 */ NULL, /* 2f80 */ NULL, /* 3000 */ NULL, /* 3080 */ NULL, /* 3100 */ NULL, /* 3180 */ NULL, /* 3200 */ NULL, /* 3280 */ NULL, /* 3300 */ NULL, /* 3380 */ NULL, /* 3400 */ NULL, /* 3480 */ NULL, /* 3500 */ NULL, /* 3580 */ NULL, /* 3600 */ NULL, /* 3680 */ NULL, /* 3700 */ NULL, /* 3780 */ NULL, /* 3800 */ NULL, /* 3880 */ NULL, /* 3900 */ NULL, /* 3980 */ NULL, /* 3a00 */ NULL, /* 3a80 */ NULL, /* 3b00 */ NULL, /* 3b80 */ NULL, /* 3c00 */ NULL, /* 3c80 */ NULL, /* 3d00 */ NULL, /* 3d80 */ NULL, /* 3e00 */ NULL, /* 3e80 */ NULL, /* 3f00 */ NULL, /* 3f80 */ NULL, /* 4000 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x30\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 4080 */ NULL, /* 4100 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\xb1\x03\xb2\x03\xb3\x03\xb4\x03\xb5\x03\xb6\x03\xb7\x03\xb8\x03\xb9\x03\xba\x03\xbb\x03\xbc\x03\xbd\x03\xbe\x03\xbf\x03\xc0\x03\xc1\x03\xc3\x03\xc4\x03\xc5\x03\xc6\x03\xc7\x03\xc8\x03\xc9\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x91\x03\x92\x03\x93\x03\x94\x03\x95\x03\x96\x03\x97\x03\x98\x03\x99\x03\x9a\x03\x9b\x03\x9c\x03\x9d\x03\x9e\x03\x9f\x03\xa0\x03\xa1\x03\xa3\x03\xa4\x03\xa5\x03\xa6\x03\xa7\x03\xa8\x03\xa9\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 4180 */ "\x04\x30\x04\x31\x04\x32\x04\x33\x04\x34\x04\x35\x04\x51\x04\x36\x04\x37\x04\x38\x04\x39\x04\x3a\x04\x3b\x04\x3c\x04\x3d\x04\x3e\x04\x3f\x04\x40\x04\x41\x04\x42\x04\x43\x04\x44\x04\x45\x04\x46\x04\x47\x04\x48\x04\x49\x04\x4a\x04\x4b\x04\x4c\x04\x4d\x04\x4e\x04\x4f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x21\x70\x21\x71\x21\x72\x21\x73\x21\x74\x21\x75\x21\x76\x21\x77\x21\x78\x21\x79\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\x10\x04\x11\x04\x12\x04\x13\x04\x14\x04\x15\x04\x01\x04\x16\x04\x17\x04\x18\x04\x19\x04\x1a\x04\x1b\x04\x1c\x04\x1d\x04\x1e\x04\x1f\x04\x20\x04\x21\x04\x22\x04\x23\x04\x24\x04\x25\x04\x26\x04\x27\x04\x28\x04\x29\x04\x2a\x04\x2b\x04\x2c\x04\x2d\x04\x2e\x04\x2f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x21\x60\x21\x61\x21\x62\x21\x63\x21\x64\x21\x65\x21\x66\x21\x67\x21\x68\x21\x69\x21\x6a\x21\x6b\x00\x00\x00\x00\x00\x00", /* 4200 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xe1\xff\x0e\xff\x1c\xff\x08\xff\x0b\xff\x5c\xff\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\x01\xff\xe5\xff\x0a\xff\x09\xff\x1b\xff\xe2\xff\x0d\xff\x0f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xe4\xff\x0c\xff\x05\xff\x3f\xff\x1e\xff\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\x40\xff\x1a\xff\x03\xff\x20\xff\x07\xff\x1d\xff\x02", /* 4280 */ "\x00\x00\xff\x41\xff\x42\xff\x43\xff\x44\xff\x45\xff\x46\xff\x47\xff\x48\xff\x49\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\x4a\xff\x4b\xff\x4c\xff\x4d\xff\x4e\xff\x4f\xff\x50\xff\x51\xff\x52\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xe3\xff\x53\xff\x54\xff\x55\xff\x56\xff\x57\xff\x58\xff\x59\xff\x5a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\x5b\xff\x21\xff\x22\xff\x23\xff\x24\xff\x25\xff\x26\xff\x27\xff\x28\xff\x29\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\x5d\xff\x2a\xff\x2b\xff\x2c\xff\x2d\xff\x2e\xff\x2f\xff\x30\xff\x31\xff\x32\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\x04\x00\x00\xff\x33\xff\x34\xff\x35\xff\x36\xff\x37\xff\x38\xff\x39\xff\x3a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\x10\xff\x11\xff\x12\xff\x13\xff\x14\xff\x15\xff\x16\xff\x17\xff\x18\xff\x19\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 4300 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x30\x02\x30\x0c\x30\x0d\x30\x01\x30\xfb\x30\xf2\x30\xa1\x30\xa3\x30\xa5\xff\xe0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x30\xa7\x30\xa9\x30\xe3\x30\xe5\x30\xe7\x30\xc3\x30\xee\x30\xfc\x30\xf5\x30\xf6\xf8\x3d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 4380 */ "\x00\x00\x30\xa2\x30\xa4\x30\xa6\x30\xa8\x30\xaa\x30\xab\x30\xad\x30\xaf\x30\xb1\x30\xb3\x00\x00\x30\xb5\x30\xb7\x30\xb9\x30\xbb\x30\xbd\x30\xbf\x30\xc1\x30\xc4\x30\xc6\x30\xc8\x30\xca\x30\xcb\x30\xcc\x30\xcd\x30\xce\x00\x00\x00\x00\x30\xcf\x30\xd2\x30\xd5\x00\x00\xff\x5e\x30\xd8\x30\xdb\x30\xde\x30\xdf\x30\xe0\x30\xe1\x30\xe2\x30\xe4\x30\xe6\x00\x00\x30\xe8\x30\xe9\x30\xea\x30\xeb\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x30\xec\x30\xed\x30\xef\x30\xf3\x30\x9b\x30\x9c\x30\xac\x30\xae\x30\xb0\x30\xb2\x30\xb4\x30\xb6\x30\xb8\x30\xba\x30\xbc\x30\xbe\x30\xc0\x30\xc2\x30\xc5\x30\xc7\x30\xc9\x30\xd0\x30\xd3\x30\xd6\x30\xd9\x30\xdc\x30\xf4\x30\xd1\x30\xd4\x30\xd7\x30\xda\x30\xdd\x30\xf0\x30\xf1\x30\xfd\x30\xfe\x00\x00\x00\x00\xff\x3c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 4400 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x30\x0e\x30\x0f\xff\x3b\xff\x3d\x30\x92\x30\x41\x30\x43\x30\x45\x20\x15\x00\xb1\x22\x60\x22\x1e\x21\x03\x00\x00\x00\xb4\x30\x47\x30\x49\x30\x83\x30\x85\x30\x87\x30\x63\x30\x8e\x00\x00\x00\x00\x20\x10\x30\x03\xf8\x3e\x30\x05\x30\x06\x30\x07\x00\xa8\x20\x18\x20\x1c\x30\x14\x30\x08\x30\x0a\x30\x10\x22\x64\x22\x34\x26\x42\x00\xa7\x20\x3b\x30\x12\x32\x31\x21\x16\x21\x21\xff\x3e\x20\x19\x20\x1d\x30\x15\x30\x09\x30\x0b\x30\x11\x22\x65\x22\x35\x26\x40\x00\xd7\x00\xf7\x20\x16\x30\x13\x20\x25\x20\x26", /* 4480 */ "\x00\x00\x30\x42\x30\x44\x30\x46\x30\x48\x30\x4a\x30\x4b\x30\x4d\x30\x4f\x30\x51\x30\x53\x00\x00\x30\x55\x30\x57\x30\x59\x30\x5b\x30\x5d\x30\x5f\x30\x61\x30\x64\x30\x66\x30\x68\x30\x6a\x30\x6b\x30\x6c\x30\x6d\x30\x6e\x00\x00\x00\x00\x30\x6f\x30\x72\x30\x75\x00\x00\x00\x00\x30\x78\x30\x7b\x30\x7e\x30\x7f\x30\x80\x30\x81\x30\x82\x30\x84\x30\x86\x00\x00\x30\x88\x30\x89\x30\x8a\x30\x8b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x30\x8c\x30\x8d\x30\x8f\x30\x93\x00\x00\x00\x00\x30\x4c\x30\x4e\x30\x50\x30\x52\x30\x54\x30\x56\x30\x58\x30\x5a\x30\x5c\x30\x5e\x30\x60\x30\x62\x30\x65\x30\x67\x30\x69\x30\x70\x30\x73\x30\x76\x30\x79\x30\x7c\x00\x00\x30\x71\x30\x74\x30\x77\x30\x7a\x30\x7d\x30\x90\x30\x91\x30\x9d\x30\x9e\x00\x00\x00\x00\x25\xcb\x25\xcf\x25\xb3\x25\xb2\x25\xce\x26\x06\x26\x05\x25\xc7\x25\xc6\x25\xa1\x25\xa0\x25\xbd\x25\xbc\x00\xb0\x20\x32\x20\x33\x21\x92\x21\x90\x21\x91\x21\x93\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 4500 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\xc9\x02\xc7\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x30\x16\x30\x17\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x22\x36\x22\x27\x22\x28\x22\x11\x22\x0f\x22\x2a\x22\x29\x22\x08\x22\x37\x22\x1a\x22\xa5\x22\x25\x22\x20\x23\x12\x22\x99\x22\x2b\x22\x2e\x22\x61\x22\x4c\x22\x48\x22\x3d\x22\x1d\x00\x00\x22\x6e\x22\x6f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 4580 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa4\x00\x00\x00\x00\x20\x30\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x24\x88\x24\x89\x24\x8a\x24\x8b\x24\x8c\x24\x8d\x24\x8e\x24\x8f\x24\x90\x24\x91\x24\x92\x24\x93\x24\x94\x24\x95\x24\x96\x24\x97\x24\x98\x24\x99\x24\x9a\x24\x9b\x24\x74\x24\x75\x24\x76\x24\x77\x24\x78\x24\x79\x24\x7a\x24\x7b\x24\x7c\x24\x7d\x24\x7e\x24\x7f\x24\x80\x24\x81\x24\x82\x24\x83\x24\x84\x24\x85\x24\x86\x24\x87\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x24\x60\x24\x61\x24\x62\x24\x63\x24\x64\x24\x65\x24\x66\x24\x67\x24\x68\x24\x69\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x32\x20\x32\x21\x32\x22\x32\x23\x32\x24\x32\x25\x32\x26\x32\x27\x32\x28\x32\x29\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 4600 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x01\x00\xe1\x01\xce\x00\xe0\x01\x13\x00\xe9\x01\x1b\x00\xe8\x01\x2b\x00\xed\x01\xd0\x00\xec\x01\x4d\x00\xf3\x01\xd2\x00\xf2\x01\x6b\x00\xfa\x01\xd4\x00\xf9\x01\xd6\x01\xd8\x01\xda\x01\xdc\x00\xfc\x00\xea\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x31\x05\x31\x06\x31\x07\x31\x08\x31\x09\x31\x0a\x31\x0b\x31\x0c\x31\x0d\x31\x0e\x31\x0f\x31\x10\x31\x11\x31\x12\x31\x13\x31\x14\x31\x15\x31\x16\x31\x17\x31\x18\x31\x19\x31\x1a\x31\x1b\x31\x1c\x31\x1d\x31\x1e\x31\x1f", /* 4680 */ "\x31\x20\x31\x21\x31\x22\x31\x23\x31\x24\x31\x25\x31\x26\x31\x27\x31\x28\x31\x29\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x25\x00\x25\x01\x25\x02\x25\x03\x25\x04\x25\x05\x25\x06\x25\x07\x25\x08\x25\x09\x25\x0a\x25\x0b\x25\x0c\x25\x0d\x25\x0e\x25\x0f\x25\x10\x25\x11\x25\x12\x25\x13\x25\x14\x25\x15\x25\x16\x25\x17\x25\x18\x25\x19\x25\x1a\x25\x1b\x25\x1c\x25\x1d\x25\x1e\x25\x1f\x25\x20\x25\x21\x25\x22\x25\x23\x25\x24\x25\x25\x25\x26\x25\x27\x25\x28\x25\x29\x25\x2a\x25\x2b\x25\x2c\x25\x2d\x25\x2e\x25\x2f\x25\x30\x25\x31\x25\x32\x25\x33\x25\x34\x25\x35\x25\x36\x25\x37\x25\x38\x25\x39\x25\x3a\x25\x3b\x25\x3c\x25\x3d\x25\x3e\x25\x3f\x25\x40\x25\x41\x25\x42\x25\x43\x25\x44\x25\x45\x25\x46\x25\x47\x25\x48\x25\x49\x25\x4a\x25\x4b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 4700 */ NULL, /* 4780 */ NULL, /* 4800 */ NULL, /* 4880 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x55\x4a\x96\x3f\x57\xc3\x63\x28\x54\xce\x55\x09\x54\xc0\x76\x91\x76\x4c\x85\x3c\x77\xee\x82\x7e\x78\x8d\x72\x31\x96\x98\x97\x8d\x6c\x28\x5b\x89\x4f\xfa\x63\x09\x66\x97\x5c\xb8\x80\xfa\x68\x48\x80\xae\x66\x02\x76\xce\x51\xf9\x65\x56\x71\xac\x7f\xf1\x88\x84\x50\xb2\x59\x65\x61\xca\x6f\xb3\x82\xad\x63\x4c\x62\x52\x53\xed\x54\x27\x7b\x06\x51\x6b\x75\xa4\x5d\xf4\x62\xd4\x8d\xcb\x97\x76\x62\x8a\x80\x19\x57\x5d\x97\x38\x7f\x62\x72\x38\x76\x7d\x67\xcf\x76\x7e\x64\x46\x4f\x70\x8d\x25\x62\xdc\x7a\x17\x65\x91\x73\xed\x64\x2c\x62\x73\x82\x2c\x98\x81\x67\x7f\x72\x48\x62\x6e\x62\xcc\x4f\x34\x74\xe3\x53\x4a\x52\x9e\x7e\xca\x90\xa6\x5e\x2e\x68\x86\x69\x9c\x81\x80\x7e\xd1\x68\xd2\x78\xc5\x86\x8c\x95\x51\x50\x8d\x8c\x24\x82\xde\x80\xde\x53\x05\x89\x12\x52\x65\x00\x00\x00\x00", /* 4900 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x85\x84\x96\xf9\x4f\xdd\x58\x21\x99\x71\x5b\x9d\x62\xb1\x62\xa5\x66\xb4\x8c\x79\x9c\x8d\x72\x06\x67\x6f\x78\x91\x60\xb2\x53\x51\x53\x17\x8f\x88\x80\xcc\x8d\x1d\x94\xa1\x50\x0d\x72\xc8\x59\x07\x60\xeb\x71\x19\x88\xab\x59\x54\x82\xef\x67\x2c\x7b\x28\x5d\x29\x7e\xf7\x75\x2d\x6c\xf5\x8e\x66\x8f\xf8\x90\x3c\x9f\x3b\x6b\xd4\x91\x19\x7b\x14\x5f\x7c\x78\xa7\x84\xd6\x85\x3d\x6b\xd5\x6b\xd9\x6b\xd6\x5e\x01\x5e\x87\x75\xf9\x95\xed\x65\x5d\x5f\x0a\x5f\xc5\x8f\x9f\x58\xc1\x81\xc2\x90\x7f\x96\x5b\x97\xad\x8f\xb9", /* 4980 */ "\x00\x00\x7f\x16\x8d\x2c\x62\x41\x4f\xbf\x53\xd8\x53\x5e\x8f\xa8\x8f\xa9\x8f\xab\x90\x4d\x68\x07\x5f\x6a\x81\x98\x88\x68\x9c\xd6\x61\x8b\x52\x2b\x76\x2a\x5f\x6c\x65\x8c\x6f\xd2\x6e\xe8\x5b\xbe\x64\x48\x51\x75\x51\xb0\x67\xc4\x4e\x19\x79\xc9\x99\x7c\x70\xb3\x75\xc5\x5e\x76\x73\xbb\x83\xe0\x64\xad\x62\xe8\x94\xb5\x6c\xe2\x53\x5a\x52\xc3\x64\x0f\x94\xc2\x7b\x94\x4f\x2f\x5e\x1b\x82\x36\x81\x16\x81\x8a\x6e\x24\x6c\xca\x9a\x73\x63\x55\x53\x5c\x54\xfa\x88\x65\x57\xe0\x4e\x0d\x5e\x03\x6b\x65\x7c\x3f\x90\xe8\x60\x16\x64\xe6\x73\x1c\x88\xc1\x67\x50\x62\x4d\x8d\x22\x77\x6c\x8e\x29\x91\xc7\x5f\x69\x83\xdc\x85\x21\x99\x10\x53\xc2\x86\x95\x6b\x8b\x60\xed\x60\xe8\x70\x7f\x82\xcd\x82\x31\x4e\xd3\x6c\xa7\x85\xcf\x64\xcd\x7c\xd9\x69\xfd\x66\xf9\x83\x49\x53\x95\x7b\x56\x4f\xa7\x51\x8c\x6d\x4b\x5c\x42\x8e\x6d\x63\xd2\x53\xc9\x83\x2c\x83\x36\x67\xe5\x78\xb4\x64\x3d\x5b\xdf\x5c\x94\x5d\xee\x8b\xe7\x62\xc6\x67\xf4\x8c\x7a\x64\x00\x63\xba\x87\x49\x99\x8b\x8c\x17\x7f\x20\x94\xf2\x4e\xa7\x96\x10\x98\xa4\x66\x0c\x73\x16\x00\x00\x00\x00", /* 4a00 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x57\x3a\x5c\x1d\x5e\x38\x95\x7f\x50\x7f\x80\xa0\x53\x82\x65\x5e\x75\x45\x55\x31\x50\x21\x8d\x85\x62\x84\x94\x9e\x67\x1d\x56\x32\x6f\x6e\x5d\xe2\x54\x35\x70\x92\x8f\x66\x62\x6f\x64\xa4\x63\xa3\x5f\x7b\x6f\x88\x90\xf4\x81\xe3\x8f\xb0\x5c\x18\x66\x68\x5f\xf1\x6c\x89\x96\x48\x8d\x81\x88\x6c\x64\x91\x79\xf0\x57\xce\x6a\x59\x62\x10\x54\x48\x4e\x58\x7a\x0b\x60\xe9\x6f\x84\x8b\xda\x62\x7f\x90\x1e\x9a\x8b\x79\xe4\x54\x03\x75\xf4\x63\x01\x53\x19\x6c\x60\x8f\xdf\x5f\x1b\x9a\x70\x80\x3b\x9f\x7f\x4f\x88\x5c\x3a", /* 4a80 */ "\x00\x00\x8d\x64\x7f\xc5\x65\xa5\x70\xbd\x51\x45\x51\xb2\x86\x6b\x5d\x07\x5b\xa0\x62\xbd\x91\x6c\x75\x74\x8e\x0c\x7a\x20\x61\x01\x7b\x79\x4e\xc7\x7e\xf8\x77\x85\x4e\x11\x81\xed\x52\x1d\x51\xfa\x6a\x71\x53\xa8\x8e\x87\x95\x04\x96\xcf\x6e\xc1\x96\x64\x69\x5a\x78\x40\x50\xa8\x77\xd7\x64\x10\x89\xe6\x59\x04\x63\xe3\x5d\xdd\x7a\x7f\x69\x3d\x4f\x20\x82\x39\x55\x98\x4e\x32\x75\xae\x7a\x97\x5e\x62\x5e\x8a\x95\xef\x52\x1b\x54\x39\x70\x8a\x63\x76\x95\x24\x57\x82\x66\x25\x69\x3f\x91\x87\x55\x07\x6d\xf3\x7e\xaf\x88\x22\x62\x33\x7e\xf0\x75\xb5\x83\x28\x78\xc1\x96\xcc\x8f\x9e\x61\x48\x74\xf7\x8b\xcd\x6b\x64\x52\x3a\x8d\x50\x6b\x21\x80\x6a\x84\x71\x56\xf1\x53\x06\x4e\xce\x4e\x1b\x51\xd1\x7c\x97\x91\x8b\x7c\x07\x4f\xc3\x8e\x7f\x7b\xe1\x7a\x9c\x64\x67\x5d\x14\x50\xac\x81\x06\x76\x01\x7c\xb9\x6d\xec\x7f\xe0\x67\x51\x5b\x58\x5b\xf8\x78\xcb\x64\xae\x64\x13\x63\xaa\x63\x2b\x95\x19\x64\x2d\x8f\xbe\x7b\x54\x76\x29\x62\x53\x59\x27\x54\x46\x6b\x79\x50\xa3\x62\x34\x5e\x26\x6b\x86\x4e\xe3\x8d\x37\x88\x8b\x5f\x85\x90\x2e\x00\x00\x00\x00", /* 4b00 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x60\x20\x80\x3d\x62\xc5\x4e\x39\x53\x55\x90\xf8\x63\xb8\x80\xc6\x65\xe6\x6c\x2e\x4f\x46\x60\xee\x6d\xe1\x8b\xde\x5f\x39\x86\xcb\x5f\x53\x63\x21\x51\x5a\x83\x61\x68\x63\x52\x00\x63\x63\x8e\x48\x50\x12\x5c\x9b\x79\x77\x5b\xfc\x52\x30\x7a\x3b\x60\xbc\x90\x53\x76\xd7\x5f\xb7\x5f\x97\x76\x84\x8e\x6c\x70\x6f\x76\x7b\x7b\x49\x77\xaa\x51\xf3\x90\x93\x58\x24\x4f\x4e\x6e\xf4\x8f\xea\x65\x4c\x7b\x1b\x72\xc4\x6d\xa4\x7f\xdf\x5a\xe1\x62\xb5\x5e\x95\x57\x30\x84\x82\x7b\x2c\x5e\x1d\x5f\x1f\x90\x12\x7f\x14\x98\xa0", /* 4b80 */ "\x00\x00\x63\x82\x6e\xc7\x78\x98\x70\xb9\x51\x78\x97\x5b\x57\xab\x75\x35\x4f\x43\x75\x38\x5e\x97\x60\xe6\x59\x60\x6d\xc0\x6b\xbf\x78\x89\x53\xfc\x96\xd5\x51\xcb\x52\x01\x63\x89\x54\x0a\x94\x93\x8c\x03\x8d\xcc\x72\x39\x78\x9f\x87\x76\x8f\xed\x8c\x0d\x53\xe0\x4e\x01\x76\xef\x53\xee\x94\x89\x98\x76\x9f\x0e\x95\x2d\x5b\x9a\x8b\xa2\x4e\x22\x4e\x1c\x51\xac\x84\x63\x61\xc2\x52\xa8\x68\x0b\x4f\x97\x60\x6b\x51\xbb\x6d\x1e\x51\x5c\x62\x96\x65\x97\x96\x61\x8c\x46\x90\x17\x75\xd8\x90\xfd\x77\x63\x6b\xd2\x72\x8a\x72\xec\x8b\xfb\x58\x35\x77\x79\x8d\x4c\x67\x5c\x95\x40\x80\x9a\x5e\xa6\x6e\x21\x59\x92\x7a\xef\x77\xed\x95\x3b\x6b\xb5\x65\xad\x7f\x0e\x58\x06\x51\x51\x96\x1f\x5b\xf9\x58\xa9\x54\x28\x8e\x72\x65\x66\x98\x7f\x56\xe4\x94\x9d\x76\xfe\x90\x41\x63\x87\x54\xc6\x59\x1a\x59\x3a\x57\x9b\x8e\xb2\x67\x35\x8d\xfa\x82\x35\x52\x41\x60\xf0\x58\x15\x86\xfe\x5c\xe8\x9e\x45\x4f\xc4\x98\x9d\x8b\xb9\x5a\x25\x60\x76\x53\x84\x62\x7c\x90\x4f\x91\x02\x99\x7f\x60\x69\x80\x0c\x51\x3f\x80\x33\x5c\x14\x99\x75\x6d\x31\x4e\x8c\x00\x00\x00\x00", /* 4c00 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x8d\x30\x53\xd1\x7f\x5a\x7b\x4f\x4f\x10\x4e\x4f\x96\x00\x6c\xd5\x73\xd0\x85\xe9\x5e\x06\x75\x6a\x7f\xfb\x6a\x0a\x77\xfe\x94\x92\x7e\x41\x51\xe1\x70\xe6\x53\xcd\x8f\xd4\x83\x03\x8d\x29\x72\xaf\x99\x6d\x6c\xdb\x57\x4a\x82\xb3\x65\xb9\x80\xaa\x62\x3f\x96\x32\x59\xa8\x4e\xff\x8b\xbf\x7e\xba\x65\x3e\x83\xf2\x97\x5e\x55\x61\x98\xde\x80\xa5\x53\x2a\x8b\xfd\x54\x20\x80\xba\x5e\x9f\x6c\xb8\x8d\x39\x82\xac\x91\x5a\x54\x29\x6c\x1b\x52\x06\x7e\xb7\x57\x5f\x71\x1a\x6c\x7e\x7c\x89\x59\x4b\x4e\xfd\x5f\xff\x61\x24", /* 4c80 */ "\x00\x00\x7c\xaa\x4e\x30\x5c\x01\x67\xab\x87\x02\x5c\xf0\x95\x0b\x98\xce\x75\xaf\x70\xfd\x90\x22\x51\xaf\x7f\x1d\x8b\xbd\x59\x49\x51\xe4\x4f\x5b\x54\x26\x59\x2b\x65\x77\x80\xa4\x5b\x75\x62\x76\x62\xc2\x8f\x90\x5e\x45\x6c\x1f\x7b\x26\x4f\x0f\x4f\xd8\x67\x0d\x6d\x6e\x6d\xaa\x79\x8f\x88\xb1\x5f\x17\x75\x2b\x62\x9a\x8f\x85\x4f\xef\x91\xdc\x65\xa7\x81\x2f\x81\x51\x5e\x9c\x81\x50\x8d\x74\x52\x6f\x89\x86\x8d\x4b\x59\x0d\x50\x85\x4e\xd8\x96\x1c\x72\x36\x81\x79\x8d\x1f\x5b\xcc\x8b\xa3\x96\x44\x59\x87\x7f\x1a\x54\x90\x56\x76\x56\x0e\x8b\xe5\x65\x39\x69\x82\x94\x99\x76\xd6\x6e\x89\x5e\x72\x75\x18\x67\x46\x67\xd1\x7a\xff\x80\x9d\x8d\x76\x61\x1f\x79\xc6\x65\x62\x8d\x63\x51\x88\x52\x1a\x94\xa2\x7f\x38\x80\x9b\x7e\xb2\x5c\x97\x6e\x2f\x67\x60\x7b\xd9\x76\x8b\x9a\xd8\x81\x8f\x7f\x94\x7c\xd5\x64\x1e\x95\x50\x7a\x3f\x54\x4a\x54\xe5\x6b\x4c\x64\x01\x62\x08\x9e\x3d\x80\xf3\x75\x99\x52\x72\x97\x69\x84\x5b\x68\x3c\x86\xe4\x96\x01\x96\x94\x94\xec\x4e\x2a\x54\x04\x7e\xd9\x68\x39\x8d\xdf\x80\x15\x66\xf4\x5e\x9a\x7f\xb9\x00\x00\x00\x00", /* 4d00 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x57\xc2\x80\x3f\x68\x97\x5d\xe5\x65\x3b\x52\x9f\x60\x6d\x9f\x9a\x4f\x9b\x8e\xac\x51\x6c\x5b\xab\x5f\x13\x5d\xe9\x6c\x5e\x62\xf1\x8d\x21\x51\x71\x94\xa9\x52\xfe\x6c\x9f\x82\xdf\x72\xd7\x57\xa2\x67\x84\x8d\x2d\x59\x1f\x8f\x9c\x83\xc7\x54\x95\x7b\x8d\x4f\x30\x6c\xbd\x5b\x64\x59\xd1\x9f\x13\x53\xe4\x86\xca\x9a\xa8\x8c\x37\x80\xa1\x65\x45\x98\x7e\x56\xfa\x96\xc7\x52\x2e\x74\xdc\x52\x50\x5b\xe1\x63\x02\x89\x02\x4e\x56\x62\xd0\x60\x2a\x68\xfa\x51\x73\x5b\x98\x51\xa0\x89\xc2\x7b\xa1\x99\x86\x7f\x50\x60\xef", /* 4d80 */ "\x00\x00\x70\x4c\x8d\x2f\x51\x49\x5e\x7f\x90\x1b\x74\x70\x89\xc4\x57\x2d\x78\x45\x5f\x52\x9f\x9f\x95\xfa\x8f\x68\x9b\x3c\x8b\xe1\x76\x78\x68\x42\x67\xdc\x8d\xea\x8d\x35\x52\x3d\x8f\x8a\x6e\xda\x68\xcd\x95\x05\x90\xed\x56\xfd\x67\x9c\x88\xf9\x8f\xc7\x54\xc8\x9a\xb8\x5b\x69\x6d\x77\x6c\x26\x4e\xa5\x5b\xb3\x9a\x87\x91\x63\x61\xa8\x90\xaf\x97\xe9\x54\x2b\x6d\xb5\x5b\xd2\x51\xfd\x55\x8a\x7f\x55\x7f\xf0\x64\xbc\x63\x4d\x65\xf1\x61\xbe\x60\x8d\x71\x0a\x6c\x57\x6c\x49\x59\x2f\x67\x6d\x82\x2a\x58\xd5\x56\x8e\x8c\x6a\x6b\xeb\x90\xdd\x59\x7d\x80\x17\x53\xf7\x6d\x69\x54\x75\x55\x9d\x83\x77\x83\xcf\x68\x38\x79\xbe\x54\x8c\x4f\x55\x54\x08\x76\xd2\x8c\x89\x96\x02\x6c\xb3\x6d\xb8\x8d\x6b\x89\x10\x9e\x64\x8d\x3a\x56\x3f\x9e\xd1\x75\xd5\x5f\x88\x72\xe0\x60\x68\x54\xfc\x4e\xa8\x6a\x2a\x88\x61\x60\x52\x8f\x70\x54\xc4\x70\xd8\x86\x79\x9e\x3f\x6d\x2a\x5b\x8f\x5f\x18\x7e\xa2\x55\x89\x4f\xaf\x73\x34\x54\x3c\x53\x9a\x50\x19\x54\x0e\x54\x7c\x4e\x4e\x5f\xfd\x74\x5a\x58\xf6\x84\x6b\x80\xe1\x87\x74\x72\xd0\x7c\xca\x6e\x56\x00\x00\x00\x00", /* 4e00 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5f\x27\x86\x4e\x55\x2c\x62\xa4\x4e\x92\x6c\xaa\x62\x37\x82\xb1\x54\xd7\x53\x4e\x73\x3e\x6e\xd1\x75\x3b\x52\x12\x53\x16\x8b\xdd\x69\xd0\x5f\x8a\x60\x00\x6d\xee\x57\x4f\x6b\x22\x73\xaf\x68\x53\x8f\xd8\x7f\x13\x63\x62\x60\xa3\x55\x24\x75\xea\x8c\x62\x71\x15\x6d\xa3\x5b\xa6\x5e\x7b\x83\x52\x61\x4c\x9e\xc4\x78\xfa\x87\x57\x7c\x27\x76\x87\x51\xf0\x60\xf6\x71\x4c\x66\x43\x5e\x4c\x60\x4d\x8c\x0e\x70\x70\x63\x25\x8f\x89\x5f\xbd\x60\x62\x86\xd4\x56\xde\x6b\xc1\x60\x94\x61\x67\x53\x49\x60\xe0\x66\x66\x8d\x3f", /* 4e80 */ "\x00\x00\x79\xfd\x4f\x1a\x70\xe9\x6c\x47\x8b\xb3\x8b\xf2\x7e\xd8\x83\x64\x66\x0f\x5a\x5a\x9b\x42\x6d\x51\x6d\xf7\x8c\x41\x6d\x3b\x4f\x19\x70\x6b\x83\xb7\x62\x16\x60\xd1\x97\x0d\x8d\x27\x79\x78\x51\xfb\x57\x3e\x57\xfa\x67\x3a\x75\x78\x7a\x3d\x79\xef\x7b\x95\x80\x8c\x99\x65\x8f\xf9\x6f\xc0\x8b\xa5\x9e\x21\x59\xec\x7e\xe9\x7f\x09\x54\x09\x67\x81\x68\xd8\x8f\x91\x7c\x4d\x96\xc6\x53\xca\x60\x25\x75\xbe\x6c\x72\x53\x73\x5a\xc9\x7e\xa7\x63\x24\x51\xe0\x81\x0a\x5d\xf1\x84\xdf\x62\x80\x51\x80\x5b\x63\x4f\x0e\x79\x6d\x52\x42\x60\xb8\x6d\x4e\x5b\xc4\x5b\xc2\x8b\xa1\x8b\xb0\x65\xe2\x5f\xcc\x96\x45\x59\x93\x7e\xe7\x7e\xaa\x56\x09\x67\xb7\x59\x39\x4f\x73\x5b\xb6\x52\xa0\x83\x5a\x98\x8a\x8d\x3e\x75\x32\x94\xbe\x50\x47\x7a\x3c\x4e\xf7\x67\xb6\x9a\x7e\x5a\xc1\x6b\x7c\x76\xd1\x57\x5a\x5c\x16\x7b\x3a\x95\xf4\x71\x4e\x51\x7c\x80\xa9\x82\x70\x59\x78\x7f\x04\x83\x27\x68\xc0\x67\xec\x78\xb1\x78\x77\x62\xe3\x63\x61\x7b\x80\x4f\xed\x52\x6a\x51\xcf\x83\x50\x69\xdb\x92\x74\x8d\xf5\x8d\x31\x89\xc1\x95\x2e\x7b\xad\x4e\xf6\x00\x00\x00\x00", /* 4f00 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x50\x65\x82\x30\x52\x51\x99\x6f\x6e\x10\x6e\x85\x6d\xa7\x5e\xfa\x50\xf5\x59\xdc\x5c\x06\x6d\x46\x6c\x5f\x75\x86\x84\x8b\x68\x68\x59\x56\x8b\xb2\x53\x20\x91\x71\x96\x4d\x85\x49\x69\x12\x79\x01\x71\x26\x80\xf6\x4e\xa4\x90\xca\x6d\x47\x9a\x84\x5a\x07\x56\xbc\x64\x05\x94\xf0\x77\xeb\x4f\xa5\x81\x1a\x72\xe1\x89\xd2\x99\x7a\x7f\x34\x7e\xde\x52\x7f\x65\x59\x91\x75\x8f\x7f\x8f\x83\x53\xeb\x7a\x96\x63\xed\x63\xa5\x76\x86\x79\xf8\x88\x57\x96\x36\x62\x2a\x52\xab\x82\x82\x68\x54\x67\x70\x63\x77\x77\x6b\x7a\xed", /* 4f80 */ "\x00\x00\x6d\x01\x7e\xd3\x89\xe3\x59\xd0\x62\x12\x85\xc9\x82\xa5\x75\x4c\x50\x1f\x4e\xcb\x75\xa5\x8b\xeb\x5c\x4a\x5d\xfe\x7b\x4b\x65\xa4\x91\xd1\x4e\xca\x6d\x25\x89\x5f\x7d\x27\x95\x26\x4e\xc5\x8c\x28\x8f\xdb\x97\x73\x66\x4b\x79\x81\x8f\xd1\x70\xec\x6d\x78\x5c\x3d\x52\xb2\x83\x46\x51\x62\x83\x0e\x77\x5b\x66\x76\x9c\xb8\x4e\xac\x60\xca\x7c\xbe\x7c\xb3\x7e\xcf\x4e\x95\x8b\x66\x66\x6f\x98\x88\x97\x59\x58\x83\x65\x6c\x95\x5c\x5f\x84\x75\xc9\x97\x56\x7a\xdf\x7a\xde\x51\xc0\x70\xaf\x7a\x98\x63\xea\x7a\x76\x7e\xa0\x73\x96\x97\xed\x4e\x45\x70\x78\x4e\x5d\x91\x52\x53\xa9\x65\x51\x65\xe7\x81\xfc\x82\x05\x54\x8e\x5c\x31\x75\x9a\x97\xa0\x62\xd8\x72\xd9\x75\xbd\x5c\x45\x9a\x79\x83\xca\x5c\x40\x54\x80\x77\xe9\x4e\x3e\x6c\xae\x80\x5a\x62\xd2\x63\x6e\x5d\xe8\x51\x77\x8d\xdd\x8e\x1e\x95\x2f\x4f\xf1\x53\xe5\x60\xe7\x70\xac\x52\x67\x63\x50\x9e\x43\x5a\x1f\x50\x26\x77\x37\x53\x77\x7e\xe2\x64\x85\x65\x2b\x62\x89\x63\x98\x50\x14\x72\x35\x89\xc9\x51\xb3\x8b\xc0\x7e\xdd\x57\x47\x83\xcc\x94\xa7\x51\x9b\x54\x1b\x5c\xfb\x00\x00\x00\x00", /* 5000 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4f\xca\x7a\xe3\x6d\x5a\x90\xe1\x9a\x8f\x55\x80\x54\x96\x53\x61\x54\xaf\x5f\x00\x63\xe9\x69\x77\x51\xef\x61\x68\x52\x0a\x58\x2a\x52\xd8\x57\x4e\x78\x0d\x77\x0b\x5e\xb7\x61\x77\x7c\xe0\x62\x5b\x62\x97\x4e\xa2\x70\x95\x80\x03\x62\xf7\x70\xe4\x97\x60\x57\x77\x82\xdb\x67\xef\x68\xf5\x78\xd5\x98\x97\x79\xd1\x58\xf3\x54\xb3\x53\xef\x6e\x34\x51\x4b\x52\x3b\x5b\xa2\x8b\xfe\x80\xaf\x55\x43\x57\xa6\x60\x73\x57\x51\x54\x2d\x7a\x7a\x60\x50\x5b\x54\x63\xa7\x62\xa0\x53\xe3\x62\x63\x5b\xc7\x67\xaf\x54\xed\x7a\x9f", /* 5080 */ "\x00\x00\x82\xe6\x91\x77\x5e\x93\x88\xe4\x59\x38\x57\xae\x63\x0e\x8d\xe8\x80\xef\x57\x57\x7b\x77\x4f\xa9\x5f\xeb\x5b\xbd\x6b\x3e\x53\x21\x7b\x50\x72\xc2\x68\x46\x77\xff\x77\x36\x65\xf7\x51\xb5\x4e\x8f\x76\xd4\x5c\xbf\x7a\xa5\x84\x75\x59\x4e\x9b\x41\x50\x80\x99\x88\x61\x27\x6e\x83\x57\x64\x66\x06\x63\x46\x56\xf0\x62\xec\x62\x69\x5e\xd3\x96\x14\x57\x83\x62\xc9\x55\x87\x87\x21\x81\x4a\x8f\xa3\x55\x66\x83\xb1\x67\x65\x8d\x56\x84\xdd\x5a\x6a\x68\x0f\x62\xe6\x7b\xee\x96\x11\x51\x70\x6f\x9c\x8c\x30\x63\xfd\x89\xc8\x61\xd2\x7f\x06\x70\xc2\x6e\xe5\x74\x05\x69\x94\x72\xfc\x5e\xca\x90\xce\x67\x17\x6d\x6a\x63\x5e\x52\xb3\x72\x62\x80\x01\x4f\x6c\x59\xe5\x91\x6a\x70\xd9\x6d\x9d\x52\xd2\x4e\x50\x96\xf7\x95\x6d\x85\x7e\x78\xca\x7d\x2f\x51\x21\x57\x92\x64\xc2\x80\x8b\x7c\x7b\x6c\xea\x68\xf1\x69\x5e\x51\xb7\x53\x98\x68\xa8\x72\x81\x9e\xce\x7b\xf1\x72\xf8\x79\xbb\x6f\x13\x74\x06\x67\x4e\x91\xcc\x9c\xa4\x79\x3c\x83\x89\x83\x54\x54\x0f\x68\x17\x4e\x3d\x53\x89\x52\xb1\x78\x3e\x53\x86\x52\x29\x50\x88\x4f\x8b\x4f\xd0\x00\x00\x00\x00", /* 5100 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x75\xe2\x7a\xcb\x7c\x92\x6c\xa5\x96\xb6\x52\x9b\x74\x83\x54\xe9\x4f\xe9\x80\x54\x83\xb2\x8f\xde\x95\x70\x5e\xc9\x60\x1c\x6d\x9f\x5e\x18\x65\x5b\x81\x38\x94\xfe\x60\x4b\x70\xbc\x7e\xc3\x7c\xae\x51\xc9\x68\x81\x7c\xb1\x82\x6f\x4e\x24\x8f\x86\x91\xcf\x66\x7e\x4e\xae\x8c\x05\x64\xa9\x80\x4a\x50\xda\x75\x97\x71\xce\x5b\xe5\x8f\xbd\x6f\x66\x4e\x86\x64\x82\x95\x63\x5e\xd6\x65\x99\x52\x17\x88\xc2\x70\xc8\x52\xa3\x73\x0e\x74\x33\x67\x97\x78\xf7\x97\x16\x4e\x34\x90\xbb\x9c\xde\x6d\xcb\x51\xdb\x8d\x41\x54\x1d", /* 5180 */ "\x00\x00\x62\xce\x73\xb2\x83\xf1\x96\xf6\x9f\x84\x94\xc3\x4f\x36\x7f\x9a\x51\xcc\x70\x75\x96\x75\x5c\xad\x98\x86\x53\xe6\x4e\xe4\x6e\x9c\x74\x09\x69\xb4\x78\x6b\x99\x8f\x75\x59\x52\x18\x76\x24\x6d\x41\x67\xf3\x51\x6d\x9f\x99\x80\x4b\x54\x99\x7b\x3c\x7a\xbf\x96\x86\x57\x84\x62\xe2\x96\x47\x69\x7c\x5a\x04\x64\x02\x7b\xd3\x6f\x0f\x96\x4b\x82\xa6\x53\x62\x98\x85\x5e\x90\x70\x89\x63\xb3\x53\x64\x86\x4f\x9c\x81\x9e\x93\x78\x8c\x97\x32\x8d\xef\x8d\x42\x9e\x7f\x6f\x5e\x79\x84\x5f\x55\x96\x46\x62\x2e\x9a\x74\x54\x15\x94\xdd\x4f\xa3\x65\xc5\x5c\x65\x5c\x61\x7f\x15\x86\x51\x6c\x2f\x5f\x8b\x73\x87\x6e\xe4\x7e\xff\x5c\xe6\x63\x1b\x5b\x6a\x6e\xe6\x53\x75\x4e\x71\x63\xa0\x75\x65\x62\xa1\x8f\x6e\x4f\x26\x4e\xd1\x6c\xa6\x7e\xb6\x8b\xba\x84\x1d\x87\xba\x7f\x57\x90\x3b\x95\x23\x7b\xa9\x9a\xa1\x88\xf8\x84\x3d\x6d\x1b\x9a\x86\x7e\xdc\x59\x88\x9e\xbb\x73\x9b\x78\x01\x86\x82\x9a\x6c\x9a\x82\x56\x1b\x54\x17\x57\xcb\x4e\x70\x9e\xa6\x53\x56\x8f\xc8\x81\x09\x77\x92\x99\x92\x86\xee\x6e\xe1\x85\x13\x66\xfc\x61\x62\x6f\x2b\x00\x00\x00\x00", /* 5200 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x8c\x29\x82\x92\x83\x2b\x76\xf2\x6c\x13\x5f\xd9\x83\xbd\x73\x2b\x83\x05\x95\x1a\x6b\xdb\x77\xdb\x94\xc6\x53\x6f\x83\x02\x51\x92\x5e\x3d\x8c\x8c\x8d\x38\x4e\x48\x73\xab\x67\x9a\x68\x85\x91\x76\x97\x09\x71\x64\x6c\xa1\x77\x09\x5a\x92\x95\x41\x6b\xcf\x7f\x8e\x66\x27\x5b\xd0\x59\xb9\x5a\x9a\x95\xe8\x95\xf7\x4e\xec\x84\x0c\x84\x99\x6a\xac\x76\xdf\x95\x30\x73\x1b\x68\xa6\x5b\x5f\x77\x2f\x91\x9a\x97\x61\x7c\xdc\x8f\xf7\x8c\x1c\x5f\x25\x7c\x73\x79\xd8\x89\xc5\x6c\xcc\x87\x1c\x5b\xc6\x5e\x42\x68\xc9\x77\x20", /* 5280 */ "\x00\x00\x7e\xf5\x51\x95\x51\x4d\x52\xc9\x5a\x29\x7f\x05\x97\x62\x82\xd7\x63\xcf\x77\x84\x85\xd0\x79\xd2\x6e\x3a\x5e\x99\x59\x99\x85\x11\x70\x6d\x6c\x11\x62\xbf\x76\xbf\x65\x4f\x60\xaf\x95\xfd\x66\x0e\x87\x9f\x9e\x23\x94\xed\x54\x0d\x54\x7d\x8c\x2c\x64\x78\x64\x79\x86\x11\x6a\x21\x81\x9c\x78\xe8\x64\x69\x9b\x54\x62\xb9\x67\x2b\x83\xab\x58\xa8\x9e\xd8\x6c\xab\x6f\x20\x5b\xde\x96\x4c\x8c\x0b\x72\x5f\x67\xd0\x62\xc7\x72\x61\x4e\xa9\x59\xc6\x6b\xcd\x58\x93\x66\xae\x5e\x55\x52\xdf\x61\x55\x67\x28\x76\xee\x77\x66\x72\x67\x7a\x46\x62\xff\x54\xea\x54\x50\x94\xa0\x90\xa3\x5a\x1c\x7e\xb3\x6c\x16\x4e\x43\x59\x76\x80\x10\x59\x48\x53\x57\x75\x37\x96\xbe\x56\xca\x63\x20\x81\x11\x60\x7c\x95\xf9\x6d\xd6\x54\x62\x99\x81\x51\x85\x5a\xe9\x80\xfd\x59\xae\x97\x13\x50\x2a\x6c\xe5\x5c\x3c\x62\xdf\x4f\x60\x53\x3f\x81\x7b\x90\x06\x6e\xba\x85\x2b\x62\xc8\x5e\x74\x78\xbe\x64\xb5\x63\x7b\x5f\xf5\x5a\x18\x91\x7f\x9e\x1f\x5c\x3f\x63\x4f\x80\x42\x5b\x7d\x55\x6e\x95\x4a\x95\x4d\x6d\x85\x60\xa8\x67\xe0\x72\xde\x51\xdd\x5b\x81\x00\x00\x00\x00", /* 5300 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x62\xe7\x6c\xde\x72\x5b\x62\x6d\x94\xae\x7e\xbd\x81\x13\x6d\x53\x51\x9c\x5f\x04\x59\x74\x52\xaa\x60\x12\x59\x73\x66\x96\x86\x50\x75\x9f\x63\x2a\x61\xe6\x7c\xef\x8b\xfa\x54\xe6\x6b\x27\x9e\x25\x6b\xb4\x85\xd5\x54\x55\x50\x76\x6c\xa4\x55\x6a\x8d\xb4\x72\x2c\x5e\x15\x60\x15\x74\x36\x62\xcd\x63\x92\x72\x4c\x5f\x98\x6e\x43\x6d\x3e\x65\x00\x6f\x58\x76\xd8\x78\xd0\x76\xfc\x75\x54\x52\x24\x53\xdb\x4e\x53\x5e\x9e\x65\xc1\x80\x2a\x80\xd6\x62\x9b\x54\x86\x52\x28\x70\xae\x88\x8d\x8d\xd1\x6c\xe1\x54\x78\x80\xda", /* 5380 */ "\x00\x00\x57\xf9\x88\xf4\x8d\x54\x96\x6a\x91\x4d\x4f\x69\x6c\x9b\x55\xb7\x76\xc6\x78\x30\x62\xa8\x70\xf9\x6f\x8e\x5f\x6d\x84\xec\x68\xda\x78\x7c\x7b\xf7\x81\xa8\x67\x0b\x9e\x4f\x63\x67\x78\xb0\x57\x6f\x78\x12\x97\x39\x62\x79\x62\xab\x52\x88\x74\x35\x6b\xd7\x55\x64\x81\x3e\x75\xb2\x76\xae\x53\x39\x75\xde\x50\xfb\x5c\x41\x8b\x6c\x7b\xc7\x50\x4f\x72\x47\x9a\x97\x98\xd8\x6f\x02\x74\xe2\x79\x68\x64\x87\x77\xa5\x62\xfc\x98\x91\x8d\x2b\x54\xc1\x80\x58\x4e\x52\x57\x6a\x82\xf9\x84\x0d\x5e\x73\x51\xed\x74\xf6\x8b\xc4\x5c\x4f\x57\x61\x6c\xfc\x98\x87\x5a\x46\x78\x34\x9b\x44\x8f\xeb\x7c\x95\x52\x56\x62\x51\x94\xfa\x4e\xc6\x83\x86\x84\x61\x83\xe9\x84\xb2\x57\xd4\x67\x34\x57\x03\x66\x6e\x6d\x66\x8c\x31\x66\xdd\x70\x11\x67\x1f\x6b\x3a\x68\x16\x62\x1a\x59\xbb\x4e\x03\x51\xc4\x6f\x06\x67\xd2\x6c\x8f\x51\x76\x68\xcb\x59\x47\x6b\x67\x75\x66\x5d\x0e\x81\x10\x9f\x50\x65\xd7\x79\x48\x79\x41\x9a\x91\x8d\x77\x5c\x82\x4e\x5e\x4f\x01\x54\x2f\x59\x51\x78\x0c\x56\x68\x6c\x14\x8f\xc4\x5f\x03\x6c\x7d\x6c\xe3\x8b\xab\x63\x90\x00\x00\x00\x00", /* 5400 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x60\x70\x6d\x3d\x72\x75\x62\x66\x94\x8e\x94\xc5\x53\x43\x8f\xc1\x7b\x7e\x4e\xdf\x8c\x26\x4e\x7e\x9e\xd4\x94\xb1\x94\xb3\x52\x4d\x6f\x5c\x90\x63\x6d\x45\x8c\x34\x58\x11\x5d\x4c\x6b\x20\x6b\x49\x67\xaa\x54\x5b\x81\x54\x7f\x8c\x58\x99\x85\x37\x5f\x3a\x62\xa2\x6a\x47\x95\x39\x65\x72\x60\x84\x68\x65\x77\xa7\x4e\x54\x4f\xa8\x5d\xe7\x97\x98\x64\xac\x7f\xd8\x5c\xed\x4f\xcf\x7a\x8d\x52\x07\x83\x04\x4e\x14\x60\x2f\x7a\x83\x94\xa6\x4f\xb5\x4e\xb2\x79\xe6\x74\x34\x52\xe4\x82\xb9\x64\xd2\x79\xbd\x5b\xdd\x6c\x81", /* 5480 */ "\x00\x00\x97\x52\x8f\x7b\x6c\x22\x50\x3e\x53\x7f\x6e\x05\x64\xce\x66\x74\x6c\x30\x60\xc5\x98\x77\x8b\xf7\x5e\x86\x74\x3c\x7a\x77\x79\xcb\x4e\x18\x90\xb1\x74\x03\x6c\x42\x56\xda\x91\x4b\x6c\xc5\x8d\x8b\x53\x3a\x86\xc6\x66\xf2\x8e\xaf\x5c\x48\x9a\x71\x6e\x20\x53\xd6\x5a\x36\x9f\x8b\x8d\xa3\x53\xbb\x57\x08\x98\xa7\x67\x43\x91\x9b\x6c\xc9\x51\x68\x75\xca\x62\xf3\x72\xac\x52\x38\x52\x9d\x7f\x3a\x70\x94\x76\x38\x53\x74\x9e\x4a\x69\xb7\x78\x6e\x96\xc0\x88\xd9\x7f\xa4\x71\x36\x71\xc3\x51\x89\x67\xd3\x74\xe4\x58\xe4\x65\x18\x56\xb7\x8b\xa9\x99\x76\x62\x70\x7e\xd5\x60\xf9\x70\xed\x58\xec\x4e\xc1\x4e\xba\x5f\xcd\x97\xe7\x4e\xfb\x8b\xa4\x52\x03\x59\x8a\x7e\xab\x62\x54\x4e\xcd\x65\xe5\x62\x0e\x83\x38\x84\xc9\x83\x63\x87\x8d\x71\x94\x6e\xb6\x5b\xb9\x7e\xd2\x51\x97\x63\xc9\x67\xd4\x80\x89\x83\x39\x88\x15\x51\x12\x5b\x7a\x59\x82\x8f\xb1\x4e\x73\x6c\x5d\x51\x65\x89\x25\x8f\x6f\x96\x2e\x85\x4a\x74\x5e\x95\x10\x95\xf0\x6d\xa6\x82\xe5\x5f\x31\x64\x92\x6d\x12\x84\x28\x81\x6e\x9c\xc3\x58\x5e\x8d\x5b\x4e\x09\x53\xc1\x00\x00\x00\x00", /* 5500 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4f\x1e\x65\x63\x68\x51\x55\xd3\x4e\x27\x64\x14\x9a\x9a\x62\x6b\x5a\xc2\x74\x5f\x82\x72\x6d\xa9\x68\xee\x50\xe7\x83\x8e\x78\x02\x67\x40\x52\x39\x6c\x99\x7e\xb1\x50\xbb\x55\x65\x71\x5e\x7b\x5b\x66\x52\x73\xca\x82\xeb\x67\x49\x5c\x71\x52\x20\x71\x7d\x88\x6b\x95\xea\x96\x55\x64\xc5\x8d\x61\x81\xb3\x55\x84\x6c\x55\x62\x47\x7f\x2e\x58\x92\x4f\x24\x55\x46\x8d\x4f\x66\x4c\x4e\x0a\x5c\x1a\x88\xf3\x68\xa2\x63\x4e\x7a\x0d\x70\xe7\x82\x8d\x52\xfa\x97\xf6\x5c\x11\x54\xe8\x90\xb5\x7e\xcd\x59\x62\x8d\x4a\x86\xc7", /* 5580 */ "\x00\x00\x82\x0c\x82\x0d\x8d\x66\x64\x44\x5c\x04\x61\x51\x6d\x89\x79\x3e\x8b\xbe\x78\x37\x75\x33\x54\x7b\x4f\x38\x8e\xab\x6d\xf1\x5a\x20\x7e\xc5\x79\x5e\x6c\x88\x5b\xa1\x5a\x76\x75\x1a\x80\xbe\x61\x4e\x6e\x17\x58\xf0\x75\x1f\x75\x25\x72\x72\x53\x47\x7e\xf3\x77\x01\x76\xdb\x52\x69\x80\xdc\x57\x23\x5e\x08\x59\x31\x72\xee\x65\xbd\x6e\x7f\x8b\xd7\x5c\x38\x86\x71\x53\x41\x77\xf3\x62\xfe\x65\xf6\x4e\xc0\x98\xdf\x86\x80\x5b\x9e\x8b\xc6\x53\xf2\x77\xe2\x4f\x7f\x5c\x4e\x9a\x76\x59\xcb\x5f\x0f\x79\x3a\x58\xeb\x4e\x16\x67\xff\x4e\x8b\x62\xed\x8a\x93\x90\x1d\x52\xbf\x66\x2f\x55\xdc\x56\x6c\x90\x02\x4e\xd5\x4f\x8d\x91\xca\x99\x70\x6c\x0f\x5e\x02\x60\x43\x5b\xa4\x89\xc6\x8b\xd5\x65\x36\x62\x4b\x99\x96\x5b\x88\x5b\xff\x63\x88\x55\x2e\x53\xd7\x76\x26\x51\x7d\x85\x2c\x67\xa2\x68\xb3\x6b\x8a\x62\x92\x8f\x93\x53\xd4\x82\x12\x6d\xd1\x75\x8f\x4e\x66\x8d\x4e\x5b\x70\x71\x9f\x85\xaf\x66\x91\x66\xd9\x7f\x72\x87\x00\x9e\xcd\x9f\x20\x5c\x5e\x67\x2f\x8f\xf0\x68\x11\x67\x5f\x62\x0d\x7a\xd6\x58\x85\x5e\xb6\x65\x70\x6f\x31\x00\x00\x00\x00", /* 5600 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x60\x55\x52\x37\x80\x0d\x64\x54\x88\x70\x75\x29\x5e\x05\x68\x13\x62\xf4\x97\x1c\x53\xcc\x72\x3d\x8c\x01\x6c\x34\x77\x61\x7a\x0e\x54\x2e\x77\xac\x98\x7a\x82\x1c\x8b\xf4\x78\x55\x67\x14\x70\xc1\x65\xaf\x64\x95\x56\x36\x60\x1d\x79\xc1\x53\xf8\x4e\x1d\x6b\x7b\x80\x86\x5b\xfa\x55\xe3\x56\xdb\x4f\x3a\x4f\x3c\x99\x72\x5d\xf3\x67\x7e\x80\x38\x60\x02\x98\x82\x90\x01\x5b\x8b\x8b\xbc\x8b\xf5\x64\x1c\x82\x58\x64\xde\x55\xfd\x82\xcf\x91\x65\x4f\xd7\x7d\x20\x90\x1f\x7c\x9f\x50\xf3\x58\x51\x6e\xaf\x5b\xbf\x8b\xc9", /* 5680 */ "\x00\x00\x80\x83\x91\x78\x84\x9c\x7b\x97\x86\x7d\x96\x8b\x96\x8f\x7e\xe5\x9a\xd3\x78\x8e\x5c\x81\x7a\x57\x90\x42\x96\xa7\x79\x5f\x5b\x59\x63\x5f\x7b\x0b\x84\xd1\x68\xad\x55\x06\x7f\x29\x74\x10\x7d\x22\x95\x01\x62\x40\x58\x4c\x4e\xd6\x5b\x83\x59\x79\x58\x54\x73\x6d\x63\x1e\x8e\x4b\x8e\x0f\x80\xce\x82\xd4\x62\xac\x53\xf0\x6c\xf0\x91\x5e\x59\x2a\x60\x01\x6c\x70\x57\x4d\x64\x4a\x8d\x2a\x76\x2b\x6e\xe9\x57\x5b\x6a\x80\x75\xf0\x6f\x6d\x8c\x2d\x8c\x08\x57\x66\x6b\xef\x88\x92\x78\xb3\x63\xa2\x53\xf9\x70\xad\x6c\x64\x58\x58\x64\x2a\x58\x02\x68\xe0\x81\x9b\x55\x10\x7c\xd6\x50\x18\x8e\xba\x6d\xcc\x8d\x9f\x70\xeb\x63\x8f\x6d\x9b\x6e\xd4\x7e\xe6\x84\x04\x68\x43\x90\x03\x6d\xd8\x96\x76\x8b\xa8\x59\x57\x72\x79\x85\xe4\x81\x7e\x75\xbc\x8a\x8a\x68\xaf\x52\x54\x8e\x22\x95\x11\x63\xd0\x98\x98\x8e\x44\x55\x7c\x4f\x53\x66\xff\x56\x8f\x60\xd5\x6d\x95\x52\x43\x5c\x49\x59\x29\x6d\xfb\x58\x6b\x75\x30\x75\x1c\x60\x6c\x82\x14\x81\x46\x63\x11\x67\x61\x8f\xe2\x77\x3a\x8d\xf3\x8d\x34\x94\xc1\x5e\x16\x53\x85\x54\x2c\x70\xc3\x00\x00\x00\x00", /* 5700 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6c\x40\x5e\xf7\x50\x5c\x4e\xad\x5e\xad\x63\x3a\x82\x47\x90\x1a\x68\x50\x91\x6e\x77\xb3\x54\x0c\x94\xdc\x5f\x64\x7a\xe5\x68\x76\x63\x45\x7b\x52\x7e\xdf\x75\xdb\x50\x77\x62\x95\x59\x34\x90\x0f\x51\xf8\x79\xc3\x7a\x81\x56\xfe\x5f\x92\x90\x14\x6d\x82\x5c\x60\x57\x1f\x54\x10\x51\x54\x6e\x4d\x56\xe2\x63\xa8\x98\x93\x81\x7f\x87\x15\x89\x2a\x90\x00\x54\x1e\x5c\x6f\x81\xc0\x62\xd6\x62\x58\x81\x31\x9e\x35\x96\x40\x9a\x6e\x9a\x7c\x69\x2d\x59\xa5\x62\xd3\x55\x3e\x63\x16\x54\xc7\x86\xd9\x6d\x3c\x5a\x03\x74\xe6", /* 5780 */ "\x00\x00\x88\x9c\x6b\x6a\x59\x16\x8c\x4c\x5f\x2f\x6e\x7e\x73\xa9\x98\x7d\x4e\x38\x70\xf7\x5b\x8c\x78\x97\x63\x3d\x66\x5a\x76\x96\x60\xcb\x5b\x9b\x5a\x49\x4e\x07\x81\x55\x6c\x6a\x73\x8b\x4e\xa1\x67\x89\x7f\x51\x5f\x80\x65\xfa\x67\x1b\x5f\xd8\x59\x84\x5a\x01\x5d\xcd\x5f\xae\x53\x71\x97\xe6\x8f\xdd\x68\x45\x56\xf4\x55\x2f\x60\xdf\x4e\x3a\x6f\x4d\x7e\xf4\x82\xc7\x84\x0e\x59\xd4\x4f\x1f\x4f\x2a\x5c\x3e\x7e\xac\x67\x2a\x85\x1a\x54\x73\x75\x4f\x80\xc3\x55\x82\x9b\x4f\x4f\x4d\x6e\x2d\x8c\x13\x5c\x09\x61\x70\x53\x6b\x76\x1f\x6e\x29\x86\x8a\x65\x87\x95\xfb\x7e\xb9\x54\x3b\x7a\x33\x7d\x0a\x95\xee\x55\xe1\x7f\xc1\x74\xee\x63\x1d\x87\x17\x6d\xa1\x7a\x9d\x62\x11\x65\xa1\x53\x67\x63\xe1\x6c\x83\x5d\xeb\x54\x5c\x94\xa8\x4e\x4c\x6c\x61\x8b\xec\x5c\x4b\x65\xe0\x82\x9c\x68\xa7\x54\x3e\x54\x34\x6b\xcb\x6b\x66\x4e\x94\x63\x42\x53\x48\x82\x1e\x4f\x0d\x4f\xae\x57\x5e\x62\x0a\x96\xfe\x66\x64\x72\x69\x52\xff\x52\xa1\x60\x9f\x8b\xef\x66\x14\x71\x99\x67\x90\x89\x7f\x78\x52\x77\xfd\x66\x70\x56\x3b\x54\x38\x95\x21\x72\x7a\x00\x00\x00\x00", /* 5800 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7a\x00\x60\x6f\x5e\x0c\x60\x89\x81\x9d\x59\x15\x60\xdc\x71\x84\x70\xef\x6e\xaa\x6c\x50\x72\x80\x6a\x84\x88\xad\x5e\x2d\x4e\x60\x5a\xb3\x55\x9c\x94\xe3\x6d\x17\x7c\xfb\x96\x99\x62\x0f\x7e\xc6\x77\x8e\x86\x7e\x53\x23\x97\x1e\x8f\x96\x66\x87\x5c\xe1\x4f\xa0\x72\xed\x4e\x0b\x53\xa6\x59\x0f\x54\x13\x63\x80\x95\x28\x51\x48\x4e\xd9\x9c\x9c\x7e\xa4\x54\xb8\x8d\x24\x88\x54\x82\x37\x95\xf2\x6d\x8e\x5f\x26\x5a\xcc\x66\x3e\x96\x69\x73\xb0\x73\x2e\x53\xbf\x81\x7a\x99\x85\x7f\xa1\x5b\xaa\x96\x77\x96\x50\x7e\xbf", /* 5880 */ "\x00\x00\x76\xf8\x53\xa2\x95\x76\x99\x99\x7b\xb1\x89\x44\x6e\x58\x4e\x61\x7f\xd4\x79\x65\x8b\xe6\x60\xf3\x54\xcd\x4e\xab\x98\x79\x5d\xf7\x6a\x61\x50\xcf\x54\x11\x8c\x61\x84\x27\x78\x5d\x97\x04\x52\x4a\x54\xee\x56\xa3\x95\x00\x6d\x88\x5b\xb5\x6d\xc6\x66\x53\x5c\x0f\x5b\x5d\x68\x21\x80\x96\x55\x78\x7b\x11\x65\x48\x69\x54\x4e\x9b\x6b\x47\x87\x4e\x97\x8b\x53\x4f\x63\x1f\x64\x3a\x90\xaa\x65\x9c\x80\xc1\x8c\x10\x51\x99\x68\xb0\x53\x78\x87\xf9\x61\xc8\x6c\xc4\x6c\xfb\x8c\x22\x5c\x51\x85\xaa\x82\xaf\x95\x0c\x6b\x23\x8f\x9b\x65\xb0\x5f\xfb\x5f\xc3\x4f\xe1\x88\x45\x66\x1f\x81\x65\x73\x29\x60\xfa\x51\x74\x52\x11\x57\x8b\x5f\x62\x90\xa2\x88\x4c\x91\x92\x5e\x78\x67\x4f\x60\x27\x59\xd3\x51\x44\x51\xf6\x80\xf8\x53\x08\x6c\x79\x96\xc4\x71\x8a\x4f\x11\x4f\xee\x7f\x9e\x67\x3d\x55\xc5\x95\x08\x79\xc0\x88\x96\x7e\xe3\x58\x9f\x62\x0c\x97\x00\x86\x5a\x56\x18\x98\x7b\x5f\x90\x8b\xb8\x84\xc4\x91\x57\x53\xd9\x65\xed\x5e\x8f\x75\x5c\x60\x64\x7d\x6e\x5a\x7f\x7e\xea\x7e\xed\x8f\x69\x55\xa7\x5b\xa3\x60\xac\x65\xcb\x73\x84\x00\x00\x00\x00", /* 5900 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x90\x09\x76\x63\x77\x29\x7e\xda\x97\x74\x85\x9b\x5b\x66\x7a\x74\x96\xea\x88\x40\x52\xcb\x71\x8f\x5f\xaa\x65\xec\x8b\xe2\x5b\xfb\x9a\x6f\x5d\xe1\x6b\x89\x6c\x5b\x8b\xad\x8b\xaf\x90\x0a\x8f\xc5\x53\x8b\x62\xbc\x9e\x26\x9e\x2d\x54\x40\x4e\x2b\x82\xbd\x72\x59\x86\x9c\x5d\x16\x88\x59\x6d\xaf\x96\xc5\x54\xd1\x4e\x9a\x8b\xb6\x71\x09\x54\xbd\x96\x09\x70\xdf\x6d\xf9\x76\xd0\x4e\x25\x78\x14\x87\x12\x5c\xa9\x5e\xf6\x8a\x00\x98\x9c\x96\x0e\x70\x8e\x6c\xbf\x59\x44\x63\xa9\x77\x3c\x88\x4d\x6f\x14\x82\x73\x58\x30", /* 5980 */ "\x00\x00\x71\xd5\x53\x8c\x78\x1a\x96\xc1\x55\x01\x5f\x66\x71\x30\x5b\xb4\x8c\x1a\x9a\x8c\x6b\x83\x59\x2e\x9e\x2f\x79\xe7\x67\x68\x62\x6c\x4f\x6f\x75\xa1\x7f\x8a\x6d\x0b\x96\x33\x6c\x27\x4e\xf0\x75\xd2\x51\x7b\x68\x37\x6f\x3e\x90\x80\x81\x70\x59\x96\x74\x76\x64\x47\x5c\x27\x90\x65\x7a\x91\x8c\x23\x59\xda\x54\xac\x82\x00\x83\x6f\x89\x81\x80\x00\x69\x30\x56\x4e\x80\x36\x72\x37\x91\xce\x51\xb6\x4e\x5f\x98\x75\x63\x96\x4e\x1a\x53\xf6\x66\xf3\x81\x4b\x59\x1c\x6d\xb2\x4e\x00\x58\xf9\x53\x3b\x63\xd6\x94\xf1\x4f\x9d\x4f\x0a\x88\x63\x98\x90\x59\x37\x90\x57\x79\xfb\x4e\xea\x80\xf0\x75\x91\x6c\x82\x5b\x9c\x59\xe8\x5f\x5d\x69\x05\x86\x81\x50\x1a\x5d\xf2\x4e\x59\x77\xe3\x4e\xe5\x82\x7a\x62\x91\x66\x13\x90\x91\x5c\x79\x4e\xbf\x5f\x79\x81\xc6\x90\x38\x80\x84\x75\xab\x4e\xa6\x88\xd4\x61\x0f\x6b\xc5\x5f\xc6\x4e\x49\x76\xca\x6e\xa2\x8b\xe3\x8b\xae\x8c\x0a\x8b\xd1\x5f\x02\x7f\xfc\x7f\xcc\x7e\xce\x83\x35\x83\x6b\x56\xe0\x6b\xb7\x97\xf3\x96\x34\x59\xfb\x54\x1f\x94\xf6\x6d\xeb\x5b\xc5\x99\x6e\x5c\x39\x5f\x15\x96\x90\x00\x00\x00\x00", /* 5a00 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x53\x70\x82\xf1\x6a\x31\x5a\x74\x9e\x70\x5e\x94\x7f\x28\x83\xb9\x84\x24\x84\x25\x83\x67\x87\x47\x8f\xce\x8d\x62\x76\xc8\x5f\x71\x98\x96\x78\x6c\x66\x20\x54\xdf\x62\xe5\x4f\x63\x81\xc3\x75\xc8\x5e\xb8\x96\xcd\x8e\x0a\x86\xf9\x54\x8f\x6c\xf3\x6d\x8c\x6c\x38\x60\x7f\x52\xc7\x75\x28\x5e\x7d\x4f\x18\x60\xa0\x5f\xe7\x5c\x24\x75\x31\x90\xae\x94\xc0\x72\xb9\x6c\xb9\x6e\x38\x91\x49\x67\x09\x53\xcb\x53\xf3\x4f\x51\x91\xc9\x8b\xf1\x53\xc8\x5e\x7c\x8f\xc2\x6d\xe4\x4e\x8e\x76\xc2\x69\x86\x86\x5e\x61\x1a\x82\x06", /* 5a80 */ "\x00\x00\x4f\x59\x4f\xde\x90\x3e\x9c\x7c\x61\x09\x6e\x1d\x6e\x14\x96\x85\x4e\x88\x5a\x31\x96\xe8\x4e\x0e\x5c\x7f\x79\xb9\x5b\x87\x8b\xed\x7f\xbd\x73\x89\x57\xdf\x82\x8b\x90\xc1\x54\x01\x90\x47\x55\xbb\x5c\xea\x5f\xa1\x61\x08\x6b\x32\x72\xf1\x80\xb2\x8a\x89\x6d\x74\x5b\xd3\x88\xd5\x98\x84\x8c\x6b\x9a\x6d\x9e\x33\x6e\x0a\x51\xa4\x51\x43\x57\xa3\x88\x81\x53\x9f\x63\xf4\x8f\x95\x56\xed\x54\x58\x57\x06\x73\x3f\x6e\x90\x7f\x18\x8f\xdc\x82\xd1\x61\x3f\x60\x28\x96\x62\x66\xf0\x7e\xa6\x8d\x8a\x8d\xc3\x94\xa5\x5c\xb3\x7c\xa4\x67\x08\x60\xa6\x96\x05\x80\x18\x4e\x91\x90\xe7\x53\x00\x96\x68\x51\x41\x8f\xd0\x85\x74\x91\x5d\x66\x55\x97\xf5\x5b\x55\x53\x1d\x78\x38\x67\x42\x68\x3d\x54\xc9\x70\x7e\x5b\xb0\x8f\x7d\x51\x8d\x57\x28\x54\xb1\x65\x12\x66\x82\x8d\x5e\x8d\x43\x81\x0f\x84\x6c\x90\x6d\x7c\xdf\x51\xff\x85\xfb\x67\xa3\x65\xe9\x6f\xa1\x86\xa4\x8e\x81\x56\x6a\x90\x20\x76\x82\x70\x76\x71\xe5\x8d\x23\x62\xe9\x52\x19\x6c\xfd\x8d\x3c\x60\x0e\x58\x9e\x61\x8e\x66\xfe\x8d\x60\x62\x4e\x55\xb3\x6e\x23\x67\x2d\x8f\x67\x00\x00\x00\x00", /* 5b00 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x94\xe1\x95\xf8\x77\x28\x68\x05\x69\xa8\x54\x8b\x4e\x4d\x70\xb8\x8b\xc8\x64\x58\x65\x8b\x5b\x85\x7a\x84\x50\x3a\x5b\xe8\x77\xbb\x6b\xe1\x8a\x79\x7c\x98\x6c\xbe\x76\xcf\x65\xa9\x8f\x97\x5d\x2d\x5c\x55\x86\x38\x68\x08\x53\x60\x62\x18\x7a\xd9\x6e\x5b\x7e\xfd\x6a\x1f\x7a\xe0\x5f\x70\x6f\x33\x5f\x20\x63\x8c\x6d\xa8\x67\x56\x4e\x08\x5e\x10\x8d\x26\x4e\xd7\x80\xc0\x76\x34\x96\x9c\x62\xdb\x66\x2d\x62\x7e\x6c\xbc\x8d\x75\x71\x67\x7f\x69\x51\x46\x80\x87\x53\xec\x90\x6e\x62\x98\x54\xf2\x86\xf0\x8f\x99\x80\x05", /* 5b80 */ "\x00\x00\x95\x17\x85\x17\x8f\xd9\x6d\x59\x73\xcd\x65\x9f\x77\x1f\x75\x04\x78\x27\x81\xfb\x8d\x1e\x94\x88\x4f\xa6\x67\x95\x75\xb9\x8b\xca\x97\x07\x63\x2f\x95\x47\x96\x35\x84\xb8\x63\x23\x77\x41\x5f\x81\x72\xf0\x4e\x89\x60\x14\x65\x74\x62\xef\x6b\x63\x65\x3f\x5e\x27\x75\xc7\x90\xd1\x8b\xc1\x82\x9d\x67\x9d\x65\x2f\x54\x31\x87\x18\x77\xe5\x80\xa2\x81\x02\x6c\x41\x4e\x4b\x7e\xc7\x80\x4c\x76\xf4\x69\x0d\x6b\x96\x62\x67\x50\x3c\x4f\x84\x57\x40\x63\x07\x6b\x62\x8d\xbe\x53\xea\x65\xe8\x7e\xb8\x5f\xd7\x63\x1a\x63\xb7\x81\xf3\x81\xf4\x7f\x6e\x5e\x1c\x5c\xd9\x52\x36\x66\x7a\x79\xe9\x7a\x1a\x8d\x28\x70\x99\x75\xd4\x6e\xde\x6c\xbb\x7a\x92\x4e\x2d\x76\xc5\x5f\xe0\x94\x9f\x88\x77\x7e\xc8\x79\xcd\x80\xbf\x91\xcd\x4e\xf2\x4f\x17\x82\x1f\x54\x68\x5d\xde\x6d\x32\x8b\xcc\x7c\xa5\x8f\x74\x80\x98\x5e\x1a\x54\x92\x76\xb1\x5b\x99\x66\x3c\x9a\xa4\x73\xe0\x68\x2a\x86\xdb\x67\x31\x73\x2a\x8b\xf8\x8b\xdb\x90\x10\x7a\xf9\x70\xdb\x71\x6e\x62\xc4\x77\xa9\x56\x31\x4e\x3b\x84\x57\x67\xf1\x52\xa9\x86\xc0\x8d\x2e\x94\xf8\x7b\x51\x00\x00\x00\x00", /* 5c00 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4f\x4f\x6c\xe8\x79\x5d\x9a\x7b\x62\x93\x72\x2a\x62\xfd\x4e\x13\x78\x16\x8f\x6c\x64\xb0\x8d\x5a\x7b\xc6\x68\x69\x5e\x84\x88\xc5\x59\x86\x64\x9e\x58\xee\x72\xb6\x69\x0e\x95\x25\x8f\xfd\x8d\x58\x57\x60\x7f\x00\x8c\x06\x51\xc6\x63\x49\x62\xd9\x53\x53\x68\x4c\x74\x22\x83\x01\x91\x4c\x55\x44\x77\x40\x70\x7c\x6d\x4a\x51\x79\x54\xa8\x8d\x44\x59\xff\x6e\xcb\x6d\xc4\x5b\x5c\x7d\x2b\x4e\xd4\x7c\x7d\x6e\xd3\x5b\x50\x81\xea\x6e\x0d\x5b\x57\x9b\x03\x68\xd5\x8e\x2a\x5b\x97\x7e\xfc\x60\x3b\x7e\xb5\x90\xb9\x8d\x70", /* 5c80 */ "\x00\x00\x59\x4f\x63\xcd\x79\xdf\x8d\xb3\x53\x52\x65\xcf\x79\x56\x8b\xc5\x96\x3b\x7e\xc4\x94\xbb\x7e\x82\x56\x34\x91\x89\x67\x00\x7f\x6a\x5c\x0a\x90\x75\x66\x28\x5d\xe6\x4f\x50\x67\xde\x50\x5a\x4f\x5c\x57\x50\x5e\xa7\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4e\x8d\x4e\x0c\x51\x40\x4e\x10\x5e\xff\x53\x45\x4e\x15\x4e\x98\x4e\x1e\x9b\x32\x5b\x6c\x56\x69\x4e\x28\x79\xba\x4e\x3f\x53\x15\x4e\x47\x59\x2d\x72\x3b\x53\x6e\x6c\x10\x56\xdf\x80\xe4\x99\x97\x6b\xd3\x77\x7e\x9f\x17\x4e\x36\x4e\x9f\x9f\x10\x4e\x5c\x4e\x69\x4e\x93\x82\x88\x5b\x5b\x55\x6c\x56\x0f\x4e\xc4\x53\x8d\x53\x9d\x53\xa3\x53\xa5\x53\xae\x97\x65\x8d\x5d\x53\x1a\x53\xf5\x53\x26\x53\x2e\x53\x3e\x8d\x5c\x53\x66\x53\x63\x52\x02\x52\x08\x52\x0e\x52\x2d\x52\x33\x52\x3f\x52\x40\x52\x4c\x52\x5e\x52\x61\x52\x5c\x84\xaf\x52\x7d\x52\x82\x52\x81\x52\x90\x52\x93\x51\x82\x7f\x54\x4e\xbb\x4e\xc3\x4e\xc9\x4e\xc2\x4e\xe8\x4e\xe1\x4e\xeb\x4e\xde\x4f\x1b\x4e\xf3\x4f\x22\x4f\x64\x4e\xf5\x4f\x25\x4f\x27\x4f\x09\x4f\x2b\x4f\x5e\x4f\x67\x65\x38\x4f\x5a\x4f\x5d\x00\x00\x00\x00", /* 5d00 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4f\x5f\x4f\x57\x4f\x32\x4f\x3d\x4f\x76\x4f\x74\x4f\x91\x4f\x89\x4f\x83\x4f\x8f\x4f\x7e\x4f\x7b\x4f\xaa\x4f\x7c\x4f\xac\x4f\x94\x4f\xe6\x4f\xe8\x4f\xea\x4f\xc5\x4f\xda\x4f\xe3\x4f\xdc\x4f\xd1\x4f\xdf\x4f\xf8\x50\x29\x50\x4c\x4f\xf3\x50\x2c\x50\x0f\x50\x2e\x50\x2d\x4f\xfe\x50\x1c\x50\x0c\x50\x25\x50\x28\x50\x7e\x50\x43\x50\x55\x50\x48\x50\x4e\x50\x6c\x50\x7b\x50\xa5\x50\xa7\x50\xa9\x50\xba\x50\xd6\x51\x06\x50\xed\x50\xec\x50\xe6\x50\xee\x51\x07\x51\x0b\x4e\xdd\x6c\x3d\x4f\x58\x4f\x65\x4f\xce\x9f\xa0", /* 5d80 */ "\x00\x00\x6c\x46\x7c\x74\x51\x6e\x5d\xfd\x9e\xc9\x99\x98\x51\x81\x59\x14\x52\xf9\x53\x0d\x8a\x07\x53\x10\x51\xeb\x59\x19\x51\x55\x4e\xa0\x51\x56\x4e\xb3\x88\x6e\x88\xa4\x4e\xb5\x81\x14\x88\xd2\x79\x80\x5b\x34\x88\x03\x7f\xb8\x51\xab\x51\xb1\x51\xbd\x51\xbc\x51\xc7\x51\x96\x51\xa2\x51\xa5\x8b\xa0\x8b\xa6\x8b\xa7\x8b\xaa\x8b\xb4\x8b\xb5\x8b\xb7\x8b\xc2\x8b\xc3\x8b\xcb\x8b\xcf\x8b\xce\x8b\xd2\x8b\xd3\x8b\xd4\x8b\xd6\x8b\xd8\x8b\xd9\x8b\xdc\x8b\xdf\x8b\xe0\x8b\xe4\x8b\xe8\x8b\xe9\x8b\xee\x8b\xf0\x8b\xf3\x8b\xf6\x8b\xf9\x8b\xfc\x8b\xff\x8c\x00\x8c\x02\x8c\x04\x8c\x07\x8c\x0c\x8c\x0f\x8c\x11\x8c\x12\x8c\x14\x8c\x15\x8c\x16\x8c\x19\x8c\x1b\x8c\x18\x8c\x1d\x8c\x1f\x8c\x20\x8c\x21\x8c\x25\x8c\x27\x8c\x2a\x8c\x2b\x8c\x2e\x8c\x2f\x8c\x32\x8c\x33\x8c\x35\x8c\x36\x53\x69\x53\x7a\x96\x1d\x96\x22\x96\x21\x96\x31\x96\x2a\x96\x3d\x96\x3c\x96\x42\x96\x49\x96\x54\x96\x5f\x96\x67\x96\x6c\x96\x72\x96\x74\x96\x88\x96\x8d\x96\x97\x96\xb0\x90\x97\x90\x9b\x90\x9d\x90\x99\x90\xac\x90\xa1\x90\xb4\x90\xb3\x90\xb6\x90\xba\x00\x00\x00\x00", /* 5e00 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x90\xb8\x90\xb0\x90\xcf\x90\xc5\x90\xbe\x90\xd0\x90\xc4\x90\xc7\x90\xd3\x90\xe6\x90\xe2\x90\xdc\x90\xd7\x90\xdb\x90\xeb\x90\xef\x90\xfe\x91\x04\x91\x22\x91\x1e\x91\x23\x91\x31\x91\x2f\x91\x39\x91\x43\x91\x46\x52\x0d\x59\x42\x52\xa2\x52\xac\x52\xad\x52\xbe\x54\xff\x52\xd0\x52\xd6\x52\xf0\x53\xdf\x71\xee\x77\xcd\x5e\xf4\x51\xf5\x51\xfc\x9b\x2f\x53\xb6\x5f\x01\x75\x5a\x5d\xef\x57\x4c\x57\xa9\x57\xa1\x58\x7e\x58\xbc\x58\xc5\x58\xd1\x57\x29\x57\x2c\x57\x2a\x57\x33\x57\x39\x57\x2e\x57\x2f\x57\x5c\x57\x3b", /* 5e80 */ "\x00\x00\x57\x42\x57\x69\x57\x85\x57\x6b\x57\x86\x57\x7c\x57\x7b\x57\x68\x57\x6d\x57\x76\x57\x73\x57\xad\x57\xa4\x57\x8c\x57\xb2\x57\xcf\x57\xa7\x57\xb4\x57\x93\x57\xa0\x57\xd5\x57\xd8\x57\xda\x57\xd9\x57\xd2\x57\xb8\x57\xf4\x57\xef\x57\xf8\x57\xe4\x57\xdd\x58\x0b\x58\x0d\x57\xfd\x57\xed\x58\x00\x58\x1e\x58\x19\x58\x44\x58\x20\x58\x65\x58\x6c\x58\x81\x58\x89\x58\x9a\x58\x80\x99\xa8\x9f\x19\x61\xff\x82\x79\x82\x7d\x82\x7f\x82\x8f\x82\x8a\x82\xa8\x82\x84\x82\x8e\x82\x91\x82\x97\x82\x99\x82\xab\x82\xb8\x82\xbe\x82\xb0\x82\xc8\x82\xca\x82\xe3\x82\x98\x82\xb7\x82\xae\x82\xcb\x82\xcc\x82\xc1\x82\xa9\x82\xb4\x82\xa1\x82\xaa\x82\x9f\x82\xc4\x82\xce\x82\xa4\x82\xe1\x83\x09\x82\xf7\x82\xe4\x83\x0f\x83\x07\x82\xdc\x82\xf4\x82\xd2\x82\xd8\x83\x0c\x82\xfb\x82\xd3\x83\x11\x83\x1a\x83\x06\x83\x14\x83\x15\x82\xe0\x82\xd5\x83\x1c\x83\x51\x83\x5b\x83\x5c\x83\x08\x83\x92\x83\x3c\x83\x34\x83\x31\x83\x9b\x83\x5e\x83\x2f\x83\x4f\x83\x47\x83\x43\x83\x5f\x83\x40\x83\x17\x83\x60\x83\x2d\x83\x3a\x83\x33\x83\x66\x83\x65\x00\x00\x00\x00", /* 5f00 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x83\x68\x83\x1b\x83\x69\x83\x6c\x83\x6a\x83\x6d\x83\x6e\x83\xb0\x83\x78\x83\xb3\x83\xb4\x83\xa0\x83\xaa\x83\x93\x83\x9c\x83\x85\x83\x7c\x83\xb6\x83\xa9\x83\x7d\x83\xb8\x83\x7b\x83\x98\x83\x9e\x83\xa8\x83\xba\x83\xbc\x83\xc1\x84\x01\x83\xe5\x83\xd8\x58\x07\x84\x18\x84\x0b\x83\xdd\x83\xfd\x83\xd6\x84\x1c\x84\x38\x84\x11\x84\x06\x83\xd4\x83\xdf\x84\x0f\x84\x03\x83\xf8\x83\xf9\x83\xea\x83\xc5\x83\xc0\x84\x26\x83\xf0\x83\xe1\x84\x5c\x84\x51\x84\x5a\x84\x59\x84\x73\x84\x87\x84\x88\x84\x7a\x84\x89\x84\x78", /* 5f80 */ "\x00\x00\x84\x3c\x84\x46\x84\x69\x84\x76\x84\x8c\x84\x8e\x84\x31\x84\x6d\x84\xc1\x84\xcd\x84\xd0\x84\xe6\x84\xbd\x84\xd3\x84\xca\x84\xbf\x84\xba\x84\xe0\x84\xa1\x84\xb9\x84\xb4\x84\x97\x84\xe5\x84\xe3\x85\x0c\x75\x0d\x85\x38\x84\xf0\x85\x39\x85\x1f\x85\x3a\x85\x56\x85\x3b\x84\xff\x84\xfc\x85\x59\x85\x48\x85\x68\x85\x64\x85\x5e\x85\x7a\x77\xa2\x85\x43\x85\x72\x85\x7b\x85\xa4\x85\xa8\x85\x87\x85\x8f\x85\x79\x85\xae\x85\x9c\x85\x85\x85\xb9\x85\xb7\x85\xb0\x85\xd3\x85\xc1\x85\xdc\x85\xff\x86\x27\x86\x05\x86\x29\x86\x16\x86\x3c\x5e\xfe\x5f\x08\x59\x3c\x59\x41\x80\x37\x59\x55\x59\x5a\x59\x58\x53\x0f\x5c\x22\x5c\x25\x5c\x2c\x5c\x34\x62\x4c\x62\x6a\x62\x9f\x62\xbb\x62\xca\x62\xda\x62\xd7\x62\xee\x63\x22\x62\xf6\x63\x39\x63\x4b\x63\x43\x63\xad\x63\xf6\x63\x71\x63\x7a\x63\x8e\x63\xb4\x63\x6d\x63\xac\x63\x8a\x63\x69\x63\xae\x63\xbc\x63\xf2\x63\xf8\x63\xe0\x63\xff\x63\xc4\x63\xde\x63\xce\x64\x52\x63\xc6\x63\xbe\x64\x45\x64\x41\x64\x0b\x64\x1b\x64\x20\x64\x0c\x64\x26\x64\x21\x64\x5e\x64\x84\x64\x6d\x64\x96\x00\x00\x00\x00", /* 6000 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x64\x7a\x64\xb7\x64\xb8\x64\x99\x64\xba\x64\xc0\x64\xd0\x64\xd7\x64\xe4\x64\xe2\x65\x09\x65\x25\x65\x2e\x5f\x0b\x5f\xd2\x75\x19\x5f\x11\x53\x5f\x53\xf1\x53\xfd\x53\xe9\x53\xe8\x53\xfb\x54\x12\x54\x16\x54\x06\x54\x4b\x54\x52\x54\x53\x54\x54\x54\x56\x54\x43\x54\x21\x54\x57\x54\x59\x54\x23\x54\x32\x54\x82\x54\x94\x54\x77\x54\x71\x54\x64\x54\x9a\x54\x9b\x54\x84\x54\x76\x54\x66\x54\x9d\x54\xd0\x54\xad\x54\xc2\x54\xb4\x54\xd2\x54\xa7\x54\xa6\x54\xd3\x54\xd4\x54\x72\x54\xa3\x54\xd5\x54\xbb\x54\xbf\x54\xcc", /* 6080 */ "\x00\x00\x54\xd9\x54\xda\x54\xdc\x54\xa9\x54\xaa\x54\xa4\x54\xdd\x54\xcf\x54\xde\x55\x1b\x54\xe7\x55\x20\x54\xfd\x55\x14\x54\xf3\x55\x22\x55\x23\x55\x0f\x55\x11\x55\x27\x55\x2a\x55\x67\x55\x8f\x55\xb5\x55\x49\x55\x6d\x55\x41\x55\x55\x55\x3f\x55\x50\x55\x3c\x55\x37\x55\x56\x55\x75\x55\x76\x55\x77\x55\x33\x55\x30\x55\x5c\x55\x8b\x55\xd2\x55\x83\x55\xb1\x55\xb9\x55\x88\x55\x81\x55\x9f\x55\x7e\x55\xd6\x55\x91\x55\x7b\x55\xdf\x55\xbd\x55\xbe\x55\x94\x55\x99\x55\xea\x55\xf7\x55\xc9\x56\x1f\x55\xd1\x55\xeb\x55\xec\x55\xd4\x55\xe6\x55\xdd\x55\xc4\x55\xef\x55\xe5\x55\xf2\x55\xf3\x55\xcc\x55\xcd\x55\xe8\x55\xf5\x55\xe4\x8f\x94\x56\x1e\x56\x08\x56\x0c\x56\x01\x56\x24\x56\x23\x55\xfe\x56\x00\x56\x27\x56\x2d\x56\x58\x56\x39\x56\x57\x56\x2c\x56\x4d\x56\x62\x56\x59\x56\x5c\x56\x4c\x56\x54\x56\x86\x56\x64\x56\x71\x56\x6b\x56\x7b\x56\x7c\x56\x85\x56\x93\x56\xaf\x56\xd4\x56\xd7\x56\xdd\x56\xe1\x56\xf5\x56\xeb\x56\xf9\x56\xff\x57\x04\x57\x0a\x57\x09\x57\x1c\x5e\x0f\x5e\x19\x5e\x14\x5e\x11\x5e\x31\x5e\x3b\x5e\x3c\x00\x00\x00\x00", /* 6100 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5e\x37\x5e\x44\x5e\x54\x5e\x5b\x5e\x5e\x5e\x61\x5c\x8c\x5c\x7a\x5c\x8d\x5c\x90\x5c\x96\x5c\x88\x5c\x98\x5c\x99\x5c\x91\x5c\x9a\x5c\x9c\x5c\xb5\x5c\xa2\x5c\xbd\x5c\xac\x5c\xab\x5c\xb1\x5c\xa3\x5c\xc1\x5c\xb7\x5c\xc4\x5c\xd2\x5c\xe4\x5c\xcb\x5c\xe5\x5d\x02\x5d\x03\x5d\x27\x5d\x26\x5d\x2e\x5d\x24\x5d\x1e\x5d\x06\x5d\x1b\x5d\x58\x5d\x3e\x5d\x34\x5d\x3d\x5d\x6c\x5d\x5b\x5d\x6f\x5d\x5d\x5d\x6b\x5d\x4b\x5d\x4a\x5d\x69\x5d\x74\x5d\x82\x5d\x99\x5d\x9d\x8c\x73\x5d\xb7\x5d\xc5\x5f\x73\x5f\x77\x5f\x82\x5f\x87", /* 6180 */ "\x00\x00\x5f\x89\x5f\x8c\x5f\x95\x5f\x99\x5f\x9c\x5f\xa8\x5f\xad\x5f\xb5\x5f\xbc\x88\x62\x5f\x61\x72\xad\x72\xb0\x72\xb4\x72\xb7\x72\xb8\x72\xc3\x72\xc1\x72\xce\x72\xcd\x72\xd2\x72\xe8\x72\xef\x72\xe9\x72\xf2\x72\xf4\x72\xf7\x73\x01\x72\xf3\x73\x03\x72\xfa\x72\xfb\x73\x17\x73\x13\x73\x21\x73\x0a\x73\x1e\x73\x1d\x73\x15\x73\x22\x73\x39\x73\x25\x73\x2c\x73\x38\x73\x31\x73\x50\x73\x4d\x73\x57\x73\x60\x73\x6c\x73\x6f\x73\x7e\x82\x1b\x59\x25\x98\xe7\x59\x24\x59\x02\x99\x63\x99\x67\x99\x68\x99\x69\x99\x6a\x99\x6b\x99\x6c\x99\x74\x99\x77\x99\x7d\x99\x80\x99\x84\x99\x87\x99\x8a\x99\x8d\x99\x90\x99\x91\x99\x93\x99\x94\x99\x95\x5e\x80\x5e\x91\x5e\x8b\x5e\x96\x5e\xa5\x5e\xa0\x5e\xb9\x5e\xb5\x5e\xbe\x5e\xb3\x8d\x53\x5e\xd2\x5e\xd1\x5e\xdb\x5e\xe8\x5e\xea\x81\xba\x5f\xc4\x5f\xc9\x5f\xd6\x5f\xcf\x60\x03\x5f\xee\x60\x04\x5f\xe1\x5f\xe4\x5f\xfe\x60\x05\x60\x06\x5f\xea\x5f\xed\x5f\xf8\x60\x19\x60\x35\x60\x26\x60\x1b\x60\x0f\x60\x0d\x60\x29\x60\x2b\x60\x0a\x60\x3f\x60\x21\x60\x78\x60\x79\x60\x7b\x60\x7a\x60\x42\x00\x00\x00\x00", /* 6200 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x60\x6a\x60\x7d\x60\x96\x60\x9a\x60\xad\x60\x9d\x60\x83\x60\x92\x60\x8c\x60\x9b\x60\xec\x60\xbb\x60\xb1\x60\xdd\x60\xd8\x60\xc6\x60\xda\x60\xb4\x61\x20\x61\x26\x61\x15\x61\x23\x60\xf4\x61\x00\x61\x0e\x61\x2b\x61\x4a\x61\x75\x61\xac\x61\x94\x61\xa7\x61\xb7\x61\xd4\x61\xf5\x5f\xdd\x96\xb3\x95\xe9\x95\xeb\x95\xf1\x95\xf3\x95\xf5\x95\xf6\x95\xfc\x95\xfe\x96\x03\x96\x04\x96\x06\x96\x08\x96\x0a\x96\x0b\x96\x0c\x96\x0d\x96\x0f\x96\x12\x96\x15\x96\x16\x96\x17\x96\x19\x96\x1a\x4e\x2c\x72\x3f\x62\x15\x6c\x35", /* 6280 */ "\x00\x00\x6c\x54\x6c\x5c\x6c\x4a\x6c\xa3\x6c\x85\x6c\x90\x6c\x94\x6c\x8c\x6c\x68\x6c\x69\x6c\x74\x6c\x76\x6c\x86\x6c\xa9\x6c\xd0\x6c\xd4\x6c\xad\x6c\xf7\x6c\xf8\x6c\xf1\x6c\xd7\x6c\xb2\x6c\xe0\x6c\xd6\x6c\xfa\x6c\xeb\x6c\xee\x6c\xb1\x6c\xd3\x6c\xef\x6c\xfe\x6d\x39\x6d\x27\x6d\x0c\x6d\x43\x6d\x48\x6d\x07\x6d\x04\x6d\x19\x6d\x0e\x6d\x2b\x6d\x4d\x6d\x2e\x6d\x35\x6d\x1a\x6d\x4f\x6d\x52\x6d\x54\x6d\x33\x6d\x91\x6d\x6f\x6d\x9e\x6d\xa0\x6d\x5e\x6d\x93\x6d\x94\x6d\x5c\x6d\x60\x6d\x7c\x6d\x63\x6e\x1a\x6d\xc7\x6d\xc5\x6d\xde\x6e\x0e\x6d\xbf\x6d\xe0\x6e\x11\x6d\xe6\x6d\xdd\x6d\xd9\x6e\x16\x6d\xab\x6e\x0c\x6d\xae\x6e\x2b\x6e\x6e\x6e\x4e\x6e\x6b\x6e\xb2\x6e\x5f\x6e\x86\x6e\x53\x6e\x54\x6e\x32\x6e\x25\x6e\x44\x6e\xdf\x6e\xb1\x6e\x98\x6e\xe0\x6f\x2d\x6e\xe2\x6e\xa5\x6e\xa7\x6e\xbd\x6e\xbb\x6e\xb7\x6e\xd7\x6e\xb4\x6e\xcf\x6e\x8f\x6e\xc2\x6e\x9f\x6f\x62\x6f\x46\x6f\x47\x6f\x24\x6f\x15\x6e\xf9\x6f\x2f\x6f\x36\x6f\x4b\x6f\x74\x6f\x2a\x6f\x09\x6f\x29\x6f\x89\x6f\x8d\x6f\x8c\x6f\x78\x6f\x72\x6f\x7c\x6f\x7a\x6f\xd1\x00\x00\x00\x00", /* 6300 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6f\xc9\x6f\xa7\x6f\xb9\x6f\xb6\x6f\xc2\x6f\xe1\x6f\xee\x6f\xde\x6f\xe0\x6f\xef\x70\x1a\x70\x23\x70\x1b\x70\x39\x70\x35\x70\x4f\x70\x5e\x5b\x80\x5b\x84\x5b\x95\x5b\x93\x5b\xa5\x5b\xb8\x75\x2f\x9a\x9e\x64\x34\x5b\xe4\x5b\xee\x89\x30\x5b\xf0\x8e\x47\x8b\x07\x8f\xb6\x8f\xd3\x8f\xd5\x8f\xe5\x8f\xee\x8f\xe4\x8f\xe9\x8f\xe6\x8f\xf3\x8f\xe8\x90\x05\x90\x04\x90\x0b\x90\x26\x90\x11\x90\x0d\x90\x16\x90\x21\x90\x35\x90\x36\x90\x2d\x90\x2f\x90\x44\x90\x51\x90\x52\x90\x50\x90\x68\x90\x58\x90\x62\x90\x5b\x66\xb9", /* 6380 */ "\x00\x00\x90\x74\x90\x7d\x90\x82\x90\x88\x90\x83\x90\x8b\x5f\x50\x5f\x57\x5f\x56\x5f\x58\x5c\x3b\x54\xab\x5c\x50\x5c\x59\x5b\x71\x5c\x63\x5c\x66\x7f\xbc\x5f\x2a\x5f\x29\x5f\x2d\x82\x74\x5f\x3c\x9b\x3b\x5c\x6e\x59\x81\x59\x83\x59\x8d\x59\xa9\x59\xaa\x59\xa3\x59\x97\x59\xca\x59\xab\x59\x9e\x59\xa4\x59\xd2\x59\xb2\x59\xaf\x59\xd7\x59\xbe\x5a\x05\x5a\x06\x59\xdd\x5a\x08\x59\xe3\x59\xd8\x59\xf9\x5a\x0c\x5a\x09\x5a\x32\x5a\x34\x5a\x11\x5a\x23\x5a\x13\x5a\x40\x5a\x67\x5a\x4a\x5a\x55\x5a\x3c\x5a\x62\x5a\x75\x80\xec\x5a\xaa\x5a\x9b\x5a\x77\x5a\x7a\x5a\xbe\x5a\xeb\x5a\xb2\x5a\xd2\x5a\xd4\x5a\xb8\x5a\xe0\x5a\xe3\x5a\xf1\x5a\xd6\x5a\xe6\x5a\xd8\x5a\xdc\x5b\x09\x5b\x17\x5b\x16\x5b\x32\x5b\x37\x5b\x40\x5c\x15\x5c\x1c\x5b\x5a\x5b\x65\x5b\x73\x5b\x51\x5b\x53\x5b\x62\x9a\x75\x9a\x77\x9a\x78\x9a\x7a\x9a\x7f\x9a\x7d\x9a\x80\x9a\x81\x9a\x85\x9a\x88\x9a\x8a\x9a\x90\x9a\x92\x9a\x93\x9a\x96\x9a\x98\x9a\x9b\x9a\x9c\x9a\x9d\x9a\x9f\x9a\xa0\x9a\xa2\x9a\xa3\x9a\xa5\x9a\xa7\x7e\x9f\x7e\xa1\x7e\xa3\x7e\xa5\x7e\xa8\x7e\xa9\x00\x00\x00\x00", /* 6400 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7e\xad\x7e\xb0\x7e\xbe\x7e\xc0\x7e\xc1\x7e\xc2\x7e\xc9\x7e\xcb\x7e\xcc\x7e\xd0\x7e\xd4\x7e\xd7\x7e\xdb\x7e\xe0\x7e\xe1\x7e\xe8\x7e\xeb\x7e\xee\x7e\xef\x7e\xf1\x7e\xf2\x7f\x0d\x7e\xf6\x7e\xfa\x7e\xfb\x7e\xfe\x7f\x01\x7f\x02\x7f\x03\x7f\x07\x7f\x08\x7f\x0b\x7f\x0c\x7f\x0f\x7f\x11\x7f\x12\x7f\x17\x7f\x19\x7f\x1c\x7f\x1b\x7f\x1f\x7f\x21\x7f\x22\x7f\x23\x7f\x24\x7f\x25\x7f\x26\x7f\x27\x7f\x2a\x7f\x2b\x7f\x2c\x7f\x2d\x7f\x2f\x7f\x30\x7f\x31\x7f\x32\x7f\x33\x7f\x35\x5e\x7a\x75\x7f\x5d\xdb\x75\x3e\x90\x95", /* 6480 */ "\x00\x00\x73\x8e\x73\x91\x73\xae\x73\xa2\x73\x9f\x73\xcf\x73\xc2\x73\xd1\x73\xb7\x73\xb3\x73\xc0\x73\xc9\x73\xc8\x73\xe5\x73\xd9\x98\x7c\x74\x0a\x73\xe9\x73\xe7\x73\xde\x73\xba\x73\xf2\x74\x0f\x74\x2a\x74\x5b\x74\x26\x74\x25\x74\x28\x74\x30\x74\x2e\x74\x2c\x74\x1b\x74\x1a\x74\x41\x74\x5c\x74\x57\x74\x55\x74\x59\x74\x77\x74\x6d\x74\x7e\x74\x9c\x74\x8e\x74\x80\x74\x81\x74\x87\x74\x8b\x74\x9e\x74\xa8\x74\xa9\x74\x90\x74\xa7\x74\xd2\x74\xba\x97\xea\x97\xeb\x97\xec\x67\x4c\x67\x53\x67\x5e\x67\x48\x67\x69\x67\xa5\x67\x87\x67\x6a\x67\x73\x67\x98\x67\xa7\x67\x75\x67\xa8\x67\x9e\x67\xad\x67\x8b\x67\x77\x67\x7c\x67\xf0\x68\x09\x67\xd8\x68\x0a\x67\xe9\x67\xb0\x68\x0c\x67\xd9\x67\xb5\x67\xda\x67\xb3\x67\xdd\x68\x00\x67\xc3\x67\xb8\x67\xe2\x68\x0e\x67\xc1\x67\xfd\x68\x32\x68\x33\x68\x60\x68\x61\x68\x4e\x68\x62\x68\x44\x68\x64\x68\x83\x68\x1d\x68\x55\x68\x66\x68\x41\x68\x67\x68\x40\x68\x3e\x68\x4a\x68\x49\x68\x29\x68\xb5\x68\x8f\x68\x74\x68\x77\x68\x93\x68\x6b\x68\xc2\x69\x6e\x68\xfc\x69\x1f\x69\x20\x68\xf9\x00\x00\x00\x00", /* 6500 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x69\x24\x68\xf0\x69\x0b\x69\x01\x69\x57\x68\xe3\x69\x10\x69\x71\x69\x39\x69\x60\x69\x42\x69\x5d\x69\x84\x69\x6b\x69\x80\x69\x98\x69\x78\x69\x34\x69\xcc\x69\x87\x69\x88\x69\xce\x69\x89\x69\x66\x69\x63\x69\x79\x69\x9b\x69\xa7\x69\xbb\x69\xab\x69\xad\x69\xd4\x69\xb1\x69\xc1\x69\xca\x69\xdf\x69\x95\x69\xe0\x69\x8d\x69\xff\x6a\x2f\x69\xed\x6a\x17\x6a\x18\x6a\x65\x69\xf2\x6a\x44\x6a\x3e\x6a\xa0\x6a\x50\x6a\x5b\x6a\x35\x6a\x8e\x6a\x79\x6a\x3d\x6a\x28\x6a\x58\x6a\x7c\x6a\x91\x6a\x90\x6a\xa9\x6a\x97\x6a\xab", /* 6580 */ "\x00\x00\x73\x37\x73\x52\x6b\x81\x6b\x82\x6b\x87\x6b\x84\x6b\x92\x6b\x93\x6b\x8d\x6b\x9a\x6b\x9b\x6b\xa1\x6b\xaa\x8f\x6b\x8f\x6d\x8f\x71\x8f\x72\x8f\x73\x8f\x75\x8f\x76\x8f\x78\x8f\x77\x8f\x79\x8f\x7a\x8f\x7c\x8f\x7e\x8f\x81\x8f\x82\x8f\x84\x8f\x87\x8f\x8b\x8f\x8d\x8f\x8e\x8f\x8f\x8f\x98\x8f\x9a\x8e\xce\x62\x0b\x62\x17\x62\x1b\x62\x1f\x62\x22\x62\x21\x62\x25\x62\x24\x62\x2c\x81\xe7\x74\xef\x74\xf4\x74\xff\x75\x0f\x75\x11\x75\x13\x65\x34\x65\xee\x65\xef\x65\xf0\x66\x0a\x66\x19\x67\x72\x66\x03\x66\x15\x66\x00\x70\x85\x66\xf7\x66\x1d\x66\x34\x66\x31\x66\x36\x66\x35\x80\x06\x66\x5f\x66\x54\x66\x41\x66\x4f\x66\x56\x66\x61\x66\x57\x66\x77\x66\x84\x66\x8c\x66\xa7\x66\x9d\x66\xbe\x66\xdb\x66\xdc\x66\xe6\x66\xe9\x8d\x32\x8d\x33\x8d\x36\x8d\x3b\x8d\x3d\x8d\x40\x8d\x45\x8d\x46\x8d\x48\x8d\x49\x8d\x47\x8d\x4d\x8d\x55\x8d\x59\x89\xc7\x89\xca\x89\xcb\x89\xcc\x89\xce\x89\xcf\x89\xd0\x89\xd1\x72\x6e\x72\x9f\x72\x5d\x72\x66\x72\x6f\x72\x7e\x72\x7f\x72\x84\x72\x8b\x72\x8d\x72\x8f\x72\x92\x63\x08\x63\x32\x63\xb0\x00\x00\x00\x00", /* 6600 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x64\x3f\x64\xd8\x80\x04\x6b\xea\x6b\xf3\x6b\xfd\x6b\xf5\x6b\xf9\x6c\x05\x6c\x07\x6c\x06\x6c\x0d\x6c\x15\x6c\x18\x6c\x19\x6c\x1a\x6c\x21\x6c\x29\x6c\x24\x6c\x2a\x6c\x32\x65\x35\x65\x55\x65\x6b\x72\x4d\x72\x52\x72\x56\x72\x30\x86\x62\x52\x16\x80\x9f\x80\x9c\x80\x93\x80\xbc\x67\x0a\x80\xbd\x80\xb1\x80\xab\x80\xad\x80\xb4\x80\xb7\x80\xe7\x80\xe8\x80\xe9\x80\xea\x80\xdb\x80\xc2\x80\xc4\x80\xd9\x80\xcd\x80\xd7\x67\x10\x80\xdd\x80\xeb\x80\xf1\x80\xf4\x80\xed\x81\x0d\x81\x0e\x80\xf2\x80\xfc\x67\x15\x81\x12", /* 6680 */ "\x00\x00\x8c\x5a\x81\x36\x81\x1e\x81\x2c\x81\x18\x81\x32\x81\x48\x81\x4c\x81\x53\x81\x74\x81\x59\x81\x5a\x81\x71\x81\x60\x81\x69\x81\x7c\x81\x7d\x81\x6d\x81\x67\x58\x4d\x5a\xb5\x81\x88\x81\x82\x81\x91\x6e\xd5\x81\xa3\x81\xaa\x81\xcc\x67\x26\x81\xca\x81\xbb\x81\xc1\x81\xa6\x6b\x24\x6b\x37\x6b\x39\x6b\x43\x6b\x46\x6b\x59\x98\xd1\x98\xd2\x98\xd3\x98\xd5\x98\xd9\x98\xda\x6b\xb3\x5f\x40\x6b\xc2\x89\xf3\x65\x90\x9f\x51\x65\x93\x65\xbc\x65\xc6\x65\xc4\x65\xc3\x65\xcc\x65\xce\x65\xd2\x65\xd6\x70\x80\x70\x9c\x70\x96\x70\x9d\x70\xbb\x70\xc0\x70\xb7\x70\xab\x70\xb1\x70\xe8\x70\xca\x71\x10\x71\x13\x71\x16\x71\x2f\x71\x31\x71\x73\x71\x5c\x71\x68\x71\x45\x71\x72\x71\x4a\x71\x78\x71\x7a\x71\x98\x71\xb3\x71\xb5\x71\xa8\x71\xa0\x71\xe0\x71\xd4\x71\xe7\x71\xf9\x72\x1d\x72\x28\x70\x6c\x71\x18\x71\x66\x71\xb9\x62\x3e\x62\x3d\x62\x43\x62\x48\x62\x49\x79\x3b\x79\x40\x79\x46\x79\x49\x79\x5b\x79\x5c\x79\x53\x79\x5a\x79\x62\x79\x57\x79\x60\x79\x6f\x79\x67\x79\x7a\x79\x85\x79\x8a\x79\x9a\x79\xa7\x79\xb3\x5f\xd1\x5f\xd0\x00\x00\x00\x00", /* 6700 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x60\x3c\x60\x5d\x60\x5a\x60\x67\x60\x41\x60\x59\x60\x63\x60\xab\x61\x06\x61\x0d\x61\x5d\x61\xa9\x61\x9d\x61\xcb\x61\xd1\x62\x06\x80\x80\x80\x7f\x6c\x93\x6c\xf6\x6d\xfc\x77\xf6\x77\xf8\x78\x00\x78\x09\x78\x17\x78\x18\x78\x11\x65\xab\x78\x2d\x78\x1c\x78\x1d\x78\x39\x78\x3a\x78\x3b\x78\x1f\x78\x3c\x78\x25\x78\x2c\x78\x23\x78\x29\x78\x4e\x78\x6d\x78\x56\x78\x57\x78\x26\x78\x50\x78\x47\x78\x4c\x78\x6a\x78\x9b\x78\x93\x78\x9a\x78\x87\x78\x9c\x78\xa1\x78\xa3\x78\xb2\x78\xb9\x78\xa5\x78\xd4\x78\xd9\x78\xc9", /* 6780 */ "\x00\x00\x78\xec\x78\xf2\x79\x05\x78\xf4\x79\x13\x79\x24\x79\x1e\x79\x34\x9f\x9b\x9e\xf9\x9e\xfb\x9e\xfc\x76\xf1\x77\x04\x77\x0d\x76\xf9\x77\x07\x77\x08\x77\x1a\x77\x22\x77\x19\x77\x2d\x77\x26\x77\x35\x77\x38\x77\x50\x77\x51\x77\x47\x77\x43\x77\x5a\x77\x68\x77\x62\x77\x65\x77\x7f\x77\x8d\x77\x7d\x77\x80\x77\x8c\x77\x91\x77\x9f\x77\xa0\x77\xb0\x77\xb5\x77\xbd\x75\x3a\x75\x40\x75\x4e\x75\x4b\x75\x48\x75\x5b\x75\x72\x75\x79\x75\x83\x7f\x58\x7f\x61\x7f\x5f\x8a\x48\x7f\x68\x7f\x74\x7f\x71\x7f\x79\x7f\x81\x7f\x7e\x76\xcd\x76\xe5\x88\x32\x94\x85\x94\x86\x94\x87\x94\x8b\x94\x8a\x94\x8c\x94\x8d\x94\x8f\x94\x90\x94\x94\x94\x97\x94\x95\x94\x9a\x94\x9b\x94\x9c\x94\xa3\x94\xa4\x94\xab\x94\xaa\x94\xad\x94\xac\x94\xaf\x94\xb0\x94\xb2\x94\xb4\x94\xb6\x94\xb7\x94\xb8\x94\xb9\x94\xba\x94\xbc\x94\xbd\x94\xbf\x94\xc4\x94\xc8\x94\xc9\x94\xca\x94\xcb\x94\xcc\x94\xcd\x94\xce\x94\xd0\x94\xd1\x94\xd2\x94\xd5\x94\xd6\x94\xd7\x94\xd9\x94\xd8\x94\xdb\x94\xde\x94\xdf\x94\xe0\x94\xe2\x94\xe4\x94\xe5\x94\xe7\x94\xe8\x94\xea\x00\x00\x00\x00", /* 6800 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x94\xe9\x94\xeb\x94\xee\x94\xef\x94\xf3\x94\xf4\x94\xf5\x94\xf7\x94\xf9\x94\xfc\x94\xfd\x94\xff\x95\x03\x95\x02\x95\x06\x95\x07\x95\x09\x95\x0a\x95\x0d\x95\x0e\x95\x0f\x95\x12\x95\x13\x95\x14\x95\x15\x95\x16\x95\x18\x95\x1b\x95\x1d\x95\x1e\x95\x1f\x95\x22\x95\x2a\x95\x2b\x95\x29\x95\x2c\x95\x31\x95\x32\x95\x34\x95\x36\x95\x37\x95\x38\x95\x3c\x95\x3e\x95\x3f\x95\x42\x95\x35\x95\x44\x95\x45\x95\x46\x95\x49\x95\x4c\x95\x4e\x95\x4f\x95\x52\x95\x53\x95\x54\x95\x56\x95\x57\x95\x58\x95\x59\x95\x5b\x95\x5e", /* 6880 */ "\x00\x00\x95\x5f\x95\x5d\x95\x61\x95\x62\x95\x64\x95\x65\x95\x66\x95\x67\x95\x68\x95\x69\x95\x6a\x95\x6b\x95\x6c\x95\x6f\x95\x71\x95\x72\x95\x73\x95\x3a\x77\xe7\x77\xec\x96\xc9\x79\xd5\x79\xed\x79\xe3\x79\xeb\x7a\x06\x5d\x47\x7a\x03\x7a\x02\x7a\x1e\x7a\x14\x7a\x39\x7a\x37\x7a\x51\x9e\xcf\x99\xa5\x7a\x70\x76\x88\x76\x8e\x76\x93\x76\x99\x76\xa4\x74\xde\x74\xe0\x75\x2c\x9e\x20\x9e\x22\x9e\x28\x9e\x29\x9e\x2a\x9e\x2b\x9e\x2c\x9e\x32\x9e\x31\x9e\x36\x9e\x38\x9e\x37\x9e\x39\x9e\x3a\x9e\x3e\x9e\x41\x9e\x42\x9e\x44\x9e\x46\x9e\x47\x9e\x48\x9e\x49\x9e\x4b\x9e\x4c\x9e\x4e\x9e\x51\x9e\x55\x9e\x57\x9e\x5a\x9e\x5b\x9e\x5c\x9e\x5e\x9e\x63\x9e\x66\x9e\x67\x9e\x68\x9e\x69\x9e\x6a\x9e\x6b\x9e\x6c\x9e\x71\x9e\x6d\x9e\x73\x75\x92\x75\x94\x75\x96\x75\xa0\x75\x9d\x75\xac\x75\xa3\x75\xb3\x75\xb4\x75\xb8\x75\xc4\x75\xb1\x75\xb0\x75\xc3\x75\xc2\x75\xd6\x75\xcd\x75\xe3\x75\xe8\x75\xe6\x75\xe4\x75\xeb\x75\xe7\x76\x03\x75\xf1\x75\xfc\x75\xff\x76\x10\x76\x00\x76\x05\x76\x0c\x76\x17\x76\x0a\x76\x25\x76\x18\x76\x15\x76\x19\x00\x00\x00\x00", /* 6900 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x76\x1b\x76\x3c\x76\x22\x76\x20\x76\x40\x76\x2d\x76\x30\x76\x3f\x76\x35\x76\x43\x76\x3e\x76\x33\x76\x4d\x76\x5e\x76\x54\x76\x5c\x76\x56\x76\x6b\x76\x6f\x7f\xca\x7a\xe6\x7a\x78\x7a\x79\x7a\x80\x7a\x86\x7a\x88\x7a\x95\x7a\xa6\x7a\xa0\x7a\xac\x7a\xa8\x7a\xad\x7a\xb3\x88\x64\x88\x69\x88\x72\x88\x7d\x88\x7f\x88\x82\x88\xa2\x88\xc6\x88\xb7\x88\xbc\x88\xc9\x88\xe2\x88\xce\x88\xe3\x88\xe5\x88\xf1\x89\x1a\x88\xfc\x88\xe8\x88\xfe\x88\xf0\x89\x21\x89\x19\x89\x13\x89\x1b\x89\x0a\x89\x34\x89\x2b\x89\x36\x89\x41", /* 6980 */ "\x00\x00\x89\x66\x89\x7b\x75\x8b\x80\xe5\x76\xb2\x76\xb4\x77\xdc\x80\x12\x80\x14\x80\x16\x80\x1c\x80\x20\x80\x22\x80\x25\x80\x26\x80\x27\x80\x29\x80\x28\x80\x31\x80\x0b\x80\x35\x80\x43\x80\x46\x80\x4d\x80\x52\x80\x69\x80\x71\x89\x83\x98\x78\x98\x80\x98\x83\x98\x89\x98\x8c\x98\x8d\x98\x8f\x98\x94\x98\x9a\x98\x9b\x98\x9e\x98\x9f\x98\xa1\x98\xa2\x98\xa5\x98\xa6\x86\x4d\x86\x54\x86\x6c\x86\x6e\x86\x7f\x86\x7a\x86\x7c\x86\x7b\x86\xa8\x86\x8d\x86\x8b\x86\xac\x86\x9d\x86\xa7\x86\xa3\x86\xaa\x86\x93\x86\xa9\x86\xb6\x86\xc4\x86\xb5\x86\xce\x86\xb0\x86\xba\x86\xb1\x86\xaf\x86\xc9\x86\xcf\x86\xb4\x86\xe9\x86\xf1\x86\xf2\x86\xed\x86\xf3\x86\xd0\x87\x13\x86\xde\x86\xf4\x86\xdf\x86\xd8\x86\xd1\x87\x03\x87\x07\x86\xf8\x87\x08\x87\x0a\x87\x0d\x87\x09\x87\x23\x87\x3b\x87\x1e\x87\x25\x87\x2e\x87\x1a\x87\x3e\x87\x48\x87\x34\x87\x31\x87\x29\x87\x37\x87\x3f\x87\x82\x87\x22\x87\x7d\x87\x7e\x87\x7b\x87\x60\x87\x70\x87\x4c\x87\x6e\x87\x8b\x87\x53\x87\x63\x87\x7c\x87\x64\x87\x59\x87\x65\x87\x93\x87\xaf\x87\xa8\x87\xd2\x00\x00\x00\x00", /* 6a00 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x87\xc6\x87\x88\x87\x85\x87\xad\x87\x97\x87\x83\x87\xab\x87\xe5\x87\xac\x87\xb5\x87\xb3\x87\xcb\x87\xd3\x87\xbd\x87\xd1\x87\xc0\x87\xca\x87\xdb\x87\xea\x87\xe0\x87\xee\x88\x16\x88\x13\x87\xfe\x88\x0a\x88\x1b\x88\x21\x88\x39\x88\x3c\x7f\x36\x7f\x42\x7f\x44\x7f\x45\x82\x10\x7a\xfa\x7a\xfd\x7b\x08\x7b\x03\x7b\x04\x7b\x15\x7b\x0a\x7b\x2b\x7b\x0f\x7b\x47\x7b\x38\x7b\x2a\x7b\x19\x7b\x2e\x7b\x31\x7b\x20\x7b\x25\x7b\x24\x7b\x33\x7b\x3e\x7b\x1e\x7b\x58\x7b\x5a\x7b\x45\x7b\x75\x7b\x4c\x7b\x5d\x7b\x60\x7b\x6e", /* 6a80 */ "\x00\x00\x7b\x7b\x7b\x62\x7b\x72\x7b\x71\x7b\x90\x7b\xa6\x7b\xa7\x7b\xb8\x7b\xac\x7b\x9d\x7b\xa8\x7b\x85\x7b\xaa\x7b\x9c\x7b\xa2\x7b\xab\x7b\xb4\x7b\xd1\x7b\xc1\x7b\xcc\x7b\xdd\x7b\xda\x7b\xe5\x7b\xe6\x7b\xea\x7c\x0c\x7b\xfe\x7b\xfc\x7c\x0f\x7c\x16\x7c\x0b\x7c\x1f\x7c\x2a\x7c\x26\x7c\x38\x7c\x41\x7c\x40\x81\xfe\x82\x01\x82\x02\x82\x04\x81\xec\x88\x44\x82\x21\x82\x22\x82\x23\x82\x2d\x82\x2f\x82\x28\x82\x2b\x82\x38\x82\x3b\x82\x33\x82\x34\x82\x3e\x82\x44\x82\x49\x82\x4b\x82\x4f\x82\x5a\x82\x5f\x82\x68\x88\x7e\x88\x85\x88\x88\x88\xd8\x88\xdf\x89\x5e\x7f\x9d\x7f\x9f\x7f\xa7\x7f\xaf\x7f\xb0\x7f\xb2\x7c\x7c\x65\x49\x7c\x91\x7c\x9d\x7c\x9c\x7c\x9e\x7c\xa2\x7c\xb2\x7c\xbc\x7c\xbd\x7c\xc1\x7c\xc7\x7c\xcc\x7c\xcd\x7c\xc8\x7c\xc5\x7c\xd7\x7c\xe8\x82\x6e\x66\xa8\x7f\xbf\x7f\xce\x7f\xd5\x7f\xe5\x7f\xe1\x7f\xe6\x7f\xe9\x7f\xee\x7f\xf3\x7c\xf8\x7d\x77\x7d\xa6\x7d\xae\x7e\x47\x7e\x9b\x9e\xb8\x9e\xb4\x8d\x73\x8d\x84\x8d\x94\x8d\x91\x8d\xb1\x8d\x67\x8d\x6d\x8c\x47\x8c\x49\x91\x4a\x91\x50\x91\x4e\x91\x4f\x91\x64\x00\x00\x00\x00", /* 6b00 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x91\x62\x91\x61\x91\x70\x91\x69\x91\x6f\x91\x7d\x91\x7e\x91\x72\x91\x74\x91\x79\x91\x8c\x91\x85\x91\x90\x91\x8d\x91\x91\x91\xa2\x91\xa3\x91\xaa\x91\xad\x91\xae\x91\xaf\x91\xb5\x91\xb4\x91\xba\x8c\x55\x9e\x7e\x8d\xb8\x8d\xeb\x8e\x05\x8e\x59\x8e\x69\x8d\xb5\x8d\xbf\x8d\xbc\x8d\xba\x8d\xc4\x8d\xd6\x8d\xd7\x8d\xda\x8d\xde\x8d\xce\x8d\xcf\x8d\xdb\x8d\xc6\x8d\xec\x8d\xf7\x8d\xf8\x8d\xe3\x8d\xf9\x8d\xfb\x8d\xe4\x8e\x09\x8d\xfd\x8e\x14\x8e\x1d\x8e\x1f\x8e\x2c\x8e\x2e\x8e\x23\x8e\x2f\x8e\x3a\x8e\x40\x8e\x39", /* 6b80 */ "\x00\x00\x8e\x35\x8e\x3d\x8e\x31\x8e\x49\x8e\x41\x8e\x42\x8e\x51\x8e\x52\x8e\x4a\x8e\x70\x8e\x76\x8e\x7c\x8e\x6f\x8e\x74\x8e\x85\x8e\x8f\x8e\x94\x8e\x90\x8e\x9c\x8e\x9e\x8c\x78\x8c\x82\x8c\x8a\x8c\x85\x8c\x98\x8c\x94\x65\x9b\x89\xd6\x89\xde\x89\xda\x89\xdc\x89\xe5\x89\xeb\x89\xef\x8a\x3e\x8b\x26\x97\x53\x96\xe9\x96\xf3\x96\xef\x97\x06\x97\x01\x97\x08\x97\x0f\x97\x0e\x97\x2a\x97\x2d\x97\x30\x97\x3e\x9f\x80\x9f\x83\x9f\x85\x9f\x86\x9f\x87\x9f\x88\x9f\x89\x9f\x8a\x9f\x8c\x9e\xfe\x9f\x0b\x9f\x0d\x96\xb9\x96\xbc\x96\xbd\x96\xce\x96\xd2\x77\xbf\x96\xe0\x92\x8e\x92\xae\x92\xc8\x93\x3e\x93\x6a\x93\xca\x93\x8f\x94\x3e\x94\x6b\x9c\x7f\x9c\x82\x9c\x85\x9c\x86\x9c\x87\x9c\x88\x7a\x23\x9c\x8b\x9c\x8e\x9c\x90\x9c\x91\x9c\x92\x9c\x94\x9c\x95\x9c\x9a\x9c\x9b\x9c\x9e\x9c\x9f\x9c\xa0\x9c\xa1\x9c\xa2\x9c\xa3\x9c\xa5\x9c\xa6\x9c\xa7\x9c\xa8\x9c\xa9\x9c\xab\x9c\xad\x9c\xae\x9c\xb0\x9c\xb1\x9c\xb2\x9c\xb3\x9c\xb4\x9c\xb5\x9c\xb6\x9c\xb7\x9c\xba\x9c\xbb\x9c\xbc\x9c\xbd\x9c\xc4\x9c\xc5\x9c\xc6\x9c\xc7\x9c\xca\x9c\xcb\x00\x00\x00\x00", /* 6c00 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x9c\xcc\x9c\xcd\x9c\xce\x9c\xcf\x9c\xd0\x9c\xd3\x9c\xd4\x9c\xd5\x9c\xd7\x9c\xd8\x9c\xd9\x9c\xdc\x9c\xdd\x9c\xdf\x9c\xe2\x97\x7c\x97\x85\x97\x91\x97\x92\x97\x94\x97\xaf\x97\xab\x97\xa3\x97\xb2\x97\xb4\x9a\xb1\x9a\xb0\x9a\xb7\x9e\x58\x9a\xb6\x9a\xba\x9a\xbc\x9a\xc1\x9a\xc0\x9a\xc5\x9a\xc2\x9a\xcb\x9a\xcc\x9a\xd1\x9b\x45\x9b\x43\x9b\x47\x9b\x49\x9b\x48\x9b\x4d\x9b\x51\x98\xe8\x99\x0d\x99\x2e\x99\x55\x99\x54\x9a\xdf\x9a\xe1\x9a\xe6\x9a\xef\x9a\xeb\x9a\xfb\x9a\xed\x9a\xf9\x9b\x08\x9b\x0f\x9b\x13\x9b\x1f", /* 6c80 */ "\x00\x00\x9b\x23\x9e\xbd\x9e\xbe\x7e\x3b\x9e\x82\x9e\x87\x9e\x88\x9e\x8b\x9e\x92\x93\xd6\x9e\x9d\x9e\x9f\x9e\xdb\x9e\xdc\x9e\xdd\x9e\xe0\x9e\xdf\x9e\xe2\x9e\xe9\x9e\xe7\x9e\xe5\x9e\xea\x9e\xef\x9f\x22\x9f\x2c\x9f\x2f\x9f\x39\x9f\x37\x9f\x3d\x9f\x3e\x9f\x44\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 6d00 */ NULL, /* 6d80 */ NULL, /* 6e00 */ NULL, /* 6e80 */ NULL, /* 6f00 */ NULL, /* 6f80 */ NULL, /* 7000 */ NULL, /* 7080 */ NULL, /* 7100 */ NULL, /* 7180 */ NULL, /* 7200 */ NULL, /* 7280 */ NULL, /* 7300 */ NULL, /* 7380 */ NULL, /* 7400 */ NULL, /* 7480 */ NULL, /* 7500 */ NULL, /* 7580 */ NULL, /* 7600 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe0\x00\xe0\x01\xe0\x02\xe0\x03\xe0\x04\xe0\x05\xe0\x06\xe0\x07\xe0\x08\xe0\x09\xe0\x0a\xe0\x0b\xe0\x0c\xe0\x0d\xe0\x0e\xe0\x0f\xe0\x10\xe0\x11\xe0\x12\xe0\x13\xe0\x14\xe0\x15\xe0\x16\xe0\x17\xe0\x18\xe0\x19\xe0\x1a\xe0\x1b\xe0\x1c\xe0\x1d\xe0\x1e\xe0\x1f\xe0\x20\xe0\x21\xe0\x22\xe0\x23\xe0\x24\xe0\x25\xe0\x26\xe0\x27\xe0\x28\xe0\x29\xe0\x2a\xe0\x2b\xe0\x2c\xe0\x2d\xe0\x2e\xe0\x2f\xe0\x30\xe0\x31\xe0\x32\xe0\x33\xe0\x34\xe0\x35\xe0\x36\xe0\x37\xe0\x38\xe0\x39\xe0\x3a\xe0\x3b\xe0\x3c\xe0\x3d\xe0\x3e", /* 7680 */ "\x00\x00\xe0\x3f\xe0\x40\xe0\x41\xe0\x42\xe0\x43\xe0\x44\xe0\x45\xe0\x46\xe0\x47\xe0\x48\xe0\x49\xe0\x4a\xe0\x4b\xe0\x4c\xe0\x4d\xe0\x4e\xe0\x4f\xe0\x50\xe0\x51\xe0\x52\xe0\x53\xe0\x54\xe0\x55\xe0\x56\xe0\x57\xe0\x58\xe0\x59\xe0\x5a\xe0\x5b\xe0\x5c\xe0\x5d\xe0\x5e\xe0\x5f\xe0\x60\xe0\x61\xe0\x62\xe0\x63\xe0\x64\xe0\x65\xe0\x66\xe0\x67\xe0\x68\xe0\x69\xe0\x6a\xe0\x6b\xe0\x6c\xe0\x6d\xe0\x6e\xe0\x6f\xe0\x70\xe0\x71\xe0\x72\xe0\x73\xe0\x74\xe0\x75\xe0\x76\xe0\x77\xe0\x78\xe0\x79\xe0\x7a\xe0\x7b\xe0\x7c\xe0\x7d\xe0\x7e\xe0\x7f\xe0\x80\xe0\x81\xe0\x82\xe0\x83\xe0\x84\xe0\x85\xe0\x86\xe0\x87\xe0\x88\xe0\x89\xe0\x8a\xe0\x8b\xe0\x8c\xe0\x8d\xe0\x8e\xe0\x8f\xe0\x90\xe0\x91\xe0\x92\xe0\x93\xe0\x94\xe0\x95\xe0\x96\xe0\x97\xe0\x98\xe0\x99\xe0\x9a\xe0\x9b\xe0\x9c\xe0\x9d\xe0\x9e\xe0\x9f\xe0\xa0\xe0\xa1\xe0\xa2\xe0\xa3\xe0\xa4\xe0\xa5\xe0\xa6\xe0\xa7\xe0\xa8\xe0\xa9\xe0\xaa\xe0\xab\xe0\xac\xe0\xad\xe0\xae\xe0\xaf\xe0\xb0\xe0\xb1\xe0\xb2\xe0\xb3\xe0\xb4\xe0\xb5\xe0\xb6\xe0\xb7\xe0\xb8\xe0\xb9\xe0\xba\xe0\xbb\x00\x00\x00\x00", /* 7700 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe0\xbc\xe0\xbd\xe0\xbe\xe0\xbf\xe0\xc0\xe0\xc1\xe0\xc2\xe0\xc3\xe0\xc4\xe0\xc5\xe0\xc6\xe0\xc7\xe0\xc8\xe0\xc9\xe0\xca\xe0\xcb\xe0\xcc\xe0\xcd\xe0\xce\xe0\xcf\xe0\xd0\xe0\xd1\xe0\xd2\xe0\xd3\xe0\xd4\xe0\xd5\xe0\xd6\xe0\xd7\xe0\xd8\xe0\xd9\xe0\xda\xe0\xdb\xe0\xdc\xe0\xdd\xe0\xde\xe0\xdf\xe0\xe0\xe0\xe1\xe0\xe2\xe0\xe3\xe0\xe4\xe0\xe5\xe0\xe6\xe0\xe7\xe0\xe8\xe0\xe9\xe0\xea\xe0\xeb\xe0\xec\xe0\xed\xe0\xee\xe0\xef\xe0\xf0\xe0\xf1\xe0\xf2\xe0\xf3\xe0\xf4\xe0\xf5\xe0\xf6\xe0\xf7\xe0\xf8\xe0\xf9\xe0\xfa", /* 7780 */ "\x00\x00\xe0\xfb\xe0\xfc\xe0\xfd\xe0\xfe\xe0\xff\xe1\x00\xe1\x01\xe1\x02\xe1\x03\xe1\x04\xe1\x05\xe1\x06\xe1\x07\xe1\x08\xe1\x09\xe1\x0a\xe1\x0b\xe1\x0c\xe1\x0d\xe1\x0e\xe1\x0f\xe1\x10\xe1\x11\xe1\x12\xe1\x13\xe1\x14\xe1\x15\xe1\x16\xe1\x17\xe1\x18\xe1\x19\xe1\x1a\xe1\x1b\xe1\x1c\xe1\x1d\xe1\x1e\xe1\x1f\xe1\x20\xe1\x21\xe1\x22\xe1\x23\xe1\x24\xe1\x25\xe1\x26\xe1\x27\xe1\x28\xe1\x29\xe1\x2a\xe1\x2b\xe1\x2c\xe1\x2d\xe1\x2e\xe1\x2f\xe1\x30\xe1\x31\xe1\x32\xe1\x33\xe1\x34\xe1\x35\xe1\x36\xe1\x37\xe1\x38\xe1\x39\xe1\x3a\xe1\x3b\xe1\x3c\xe1\x3d\xe1\x3e\xe1\x3f\xe1\x40\xe1\x41\xe1\x42\xe1\x43\xe1\x44\xe1\x45\xe1\x46\xe1\x47\xe1\x48\xe1\x49\xe1\x4a\xe1\x4b\xe1\x4c\xe1\x4d\xe1\x4e\xe1\x4f\xe1\x50\xe1\x51\xe1\x52\xe1\x53\xe1\x54\xe1\x55\xe1\x56\xe1\x57\xe1\x58\xe1\x59\xe1\x5a\xe1\x5b\xe1\x5c\xe1\x5d\xe1\x5e\xe1\x5f\xe1\x60\xe1\x61\xe1\x62\xe1\x63\xe1\x64\xe1\x65\xe1\x66\xe1\x67\xe1\x68\xe1\x69\xe1\x6a\xe1\x6b\xe1\x6c\xe1\x6d\xe1\x6e\xe1\x6f\xe1\x70\xe1\x71\xe1\x72\xe1\x73\xe1\x74\xe1\x75\xe1\x76\xe1\x77\x00\x00\x00\x00", /* 7800 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe1\x78\xe1\x79\xe1\x7a\xe1\x7b\xe1\x7c\xe1\x7d\xe1\x7e\xe1\x7f\xe1\x80\xe1\x81\xe1\x82\xe1\x83\xe1\x84\xe1\x85\xe1\x86\xe1\x87\xe1\x88\xe1\x89\xe1\x8a\xe1\x8b\xe1\x8c\xe1\x8d\xe1\x8e\xe1\x8f\xe1\x90\xe1\x91\xe1\x92\xe1\x93\xe1\x94\xe1\x95\xe1\x96\xe1\x97\xe1\x98\xe1\x99\xe1\x9a\xe1\x9b\xe1\x9c\xe1\x9d\xe1\x9e\xe1\x9f\xe1\xa0\xe1\xa1\xe1\xa2\xe1\xa3\xe1\xa4\xe1\xa5\xe1\xa6\xe1\xa7\xe1\xa8\xe1\xa9\xe1\xaa\xe1\xab\xe1\xac\xe1\xad\xe1\xae\xe1\xaf\xe1\xb0\xe1\xb1\xe1\xb2\xe1\xb3\xe1\xb4\xe1\xb5\xe1\xb6", /* 7880 */ "\x00\x00\xe1\xb7\xe1\xb8\xe1\xb9\xe1\xba\xe1\xbb\xe1\xbc\xe1\xbd\xe1\xbe\xe1\xbf\xe1\xc0\xe1\xc1\xe1\xc2\xe1\xc3\xe1\xc4\xe1\xc5\xe1\xc6\xe1\xc7\xe1\xc8\xe1\xc9\xe1\xca\xe1\xcb\xe1\xcc\xe1\xcd\xe1\xce\xe1\xcf\xe1\xd0\xe1\xd1\xe1\xd2\xe1\xd3\xe1\xd4\xe1\xd5\xe1\xd6\xe1\xd7\xe1\xd8\xe1\xd9\xe1\xda\xe1\xdb\xe1\xdc\xe1\xdd\xe1\xde\xe1\xdf\xe1\xe0\xe1\xe1\xe1\xe2\xe1\xe3\xe1\xe4\xe1\xe5\xe1\xe6\xe1\xe7\xe1\xe8\xe1\xe9\xe1\xea\xe1\xeb\xe1\xec\xe1\xed\xe1\xee\xe1\xef\xe1\xf0\xe1\xf1\xe1\xf2\xe1\xf3\xe1\xf4\xe1\xf5\xe1\xf6\xe1\xf7\xe1\xf8\xe1\xf9\xe1\xfa\xe1\xfb\xe1\xfc\xe1\xfd\xe1\xfe\xe1\xff\xe2\x00\xe2\x01\xe2\x02\xe2\x03\xe2\x04\xe2\x05\xe2\x06\xe2\x07\xe2\x08\xe2\x09\xe2\x0a\xe2\x0b\xe2\x0c\xe2\x0d\xe2\x0e\xe2\x0f\xe2\x10\xe2\x11\xe2\x12\xe2\x13\xe2\x14\xe2\x15\xe2\x16\xe2\x17\xe2\x18\xe2\x19\xe2\x1a\xe2\x1b\xe2\x1c\xe2\x1d\xe2\x1e\xe2\x1f\xe2\x20\xe2\x21\xe2\x22\xe2\x23\xe2\x24\xe2\x25\xe2\x26\xe2\x27\xe2\x28\xe2\x29\xe2\x2a\xe2\x2b\xe2\x2c\xe2\x2d\xe2\x2e\xe2\x2f\xe2\x30\xe2\x31\xe2\x32\xe2\x33\x00\x00\x00\x00", /* 7900 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe2\x34\xe2\x35\xe2\x36\xe2\x37\xe2\x38\xe2\x39\xe2\x3a\xe2\x3b\xe2\x3c\xe2\x3d\xe2\x3e\xe2\x3f\xe2\x40\xe2\x41\xe2\x42\xe2\x43\xe2\x44\xe2\x45\xe2\x46\xe2\x47\xe2\x48\xe2\x49\xe2\x4a\xe2\x4b\xe2\x4c\xe2\x4d\xe2\x4e\xe2\x4f\xe2\x50\xe2\x51\xe2\x52\xe2\x53\xe2\x54\xe2\x55\xe2\x56\xe2\x57\xe2\x58\xe2\x59\xe2\x5a\xe2\x5b\xe2\x5c\xe2\x5d\xe2\x5e\xe2\x5f\xe2\x60\xe2\x61\xe2\x62\xe2\x63\xe2\x64\xe2\x65\xe2\x66\xe2\x67\xe2\x68\xe2\x69\xe2\x6a\xe2\x6b\xe2\x6c\xe2\x6d\xe2\x6e\xe2\x6f\xe2\x70\xe2\x71\xe2\x72", /* 7980 */ "\x00\x00\xe2\x73\xe2\x74\xe2\x75\xe2\x76\xe2\x77\xe2\x78\xe2\x79\xe2\x7a\xe2\x7b\xe2\x7c\xe2\x7d\xe2\x7e\xe2\x7f\xe2\x80\xe2\x81\xe2\x82\xe2\x83\xe2\x84\xe2\x85\xe2\x86\xe2\x87\xe2\x88\xe2\x89\xe2\x8a\xe2\x8b\xe2\x8c\xe2\x8d\xe2\x8e\xe2\x8f\xe2\x90\xe2\x91\xe2\x92\xe2\x93\xe2\x94\xe2\x95\xe2\x96\xe2\x97\xe2\x98\xe2\x99\xe2\x9a\xe2\x9b\xe2\x9c\xe2\x9d\xe2\x9e\xe2\x9f\xe2\xa0\xe2\xa1\xe2\xa2\xe2\xa3\xe2\xa4\xe2\xa5\xe2\xa6\xe2\xa7\xe2\xa8\xe2\xa9\xe2\xaa\xe2\xab\xe2\xac\xe2\xad\xe2\xae\xe2\xaf\xe2\xb0\xe2\xb1\xe2\xb2\xe2\xb3\xe2\xb4\xe2\xb5\xe2\xb6\xe2\xb7\xe2\xb8\xe2\xb9\xe2\xba\xe2\xbb\xe2\xbc\xe2\xbd\xe2\xbe\xe2\xbf\xe2\xc0\xe2\xc1\xe2\xc2\xe2\xc3\xe2\xc4\xe2\xc5\xe2\xc6\xe2\xc7\xe2\xc8\xe2\xc9\xe2\xca\xe2\xcb\xe2\xcc\xe2\xcd\xe2\xce\xe2\xcf\xe2\xd0\xe2\xd1\xe2\xd2\xe2\xd3\xe2\xd4\xe2\xd5\xe2\xd6\xe2\xd7\xe2\xd8\xe2\xd9\xe2\xda\xe2\xdb\xe2\xdc\xe2\xdd\xe2\xde\xe2\xdf\xe2\xe0\xe2\xe1\xe2\xe2\xe2\xe3\xe2\xe4\xe2\xe5\xe2\xe6\xe2\xe7\xe2\xe8\xe2\xe9\xe2\xea\xe2\xeb\xe2\xec\xe2\xed\xe2\xee\xe2\xef\x00\x00\x00\x00", /* 7a00 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe2\xf0\xe2\xf1\xe2\xf2\xe2\xf3\xe2\xf4\xe2\xf5\xe2\xf6\xe2\xf7\xe2\xf8\xe2\xf9\xe2\xfa\xe2\xfb\xe2\xfc\xe2\xfd\xe2\xfe\xe2\xff\xe3\x00\xe3\x01\xe3\x02\xe3\x03\xe3\x04\xe3\x05\xe3\x06\xe3\x07\xe3\x08\xe3\x09\xe3\x0a\xe3\x0b\xe3\x0c\xe3\x0d\xe3\x0e\xe3\x0f\xe3\x10\xe3\x11\xe3\x12\xe3\x13\xe3\x14\xe3\x15\xe3\x16\xe3\x17\xe3\x18\xe3\x19\xe3\x1a\xe3\x1b\xe3\x1c\xe3\x1d\xe3\x1e\xe3\x1f\xe3\x20\xe3\x21\xe3\x22\xe3\x23\xe3\x24\xe3\x25\xe3\x26\xe3\x27\xe3\x28\xe3\x29\xe3\x2a\xe3\x2b\xe3\x2c\xe3\x2d\xe3\x2e", /* 7a80 */ "\x00\x00\xe3\x2f\xe3\x30\xe3\x31\xe3\x32\xe3\x33\xe3\x34\xe3\x35\xe3\x36\xe3\x37\xe3\x38\xe3\x39\xe3\x3a\xe3\x3b\xe3\x3c\xe3\x3d\xe3\x3e\xe3\x3f\xe3\x40\xe3\x41\xe3\x42\xe3\x43\xe3\x44\xe3\x45\xe3\x46\xe3\x47\xe3\x48\xe3\x49\xe3\x4a\xe3\x4b\xe3\x4c\xe3\x4d\xe3\x4e\xe3\x4f\xe3\x50\xe3\x51\xe3\x52\xe3\x53\xe3\x54\xe3\x55\xe3\x56\xe3\x57\xe3\x58\xe3\x59\xe3\x5a\xe3\x5b\xe3\x5c\xe3\x5d\xe3\x5e\xe3\x5f\xe3\x60\xe3\x61\xe3\x62\xe3\x63\xe3\x64\xe3\x65\xe3\x66\xe3\x67\xe3\x68\xe3\x69\xe3\x6a\xe3\x6b\xe3\x6c\xe3\x6d\xe3\x6e\xe3\x6f\xe3\x70\xe3\x71\xe3\x72\xe3\x73\xe3\x74\xe3\x75\xe3\x76\xe3\x77\xe3\x78\xe3\x79\xe3\x7a\xe3\x7b\xe3\x7c\xe3\x7d\xe3\x7e\xe3\x7f\xe3\x80\xe3\x81\xe3\x82\xe3\x83\xe3\x84\xe3\x85\xe3\x86\xe3\x87\xe3\x88\xe3\x89\xe3\x8a\xe3\x8b\xe3\x8c\xe3\x8d\xe3\x8e\xe3\x8f\xe3\x90\xe3\x91\xe3\x92\xe3\x93\xe3\x94\xe3\x95\xe3\x96\xe3\x97\xe3\x98\xe3\x99\xe3\x9a\xe3\x9b\xe3\x9c\xe3\x9d\xe3\x9e\xe3\x9f\xe3\xa0\xe3\xa1\xe3\xa2\xe3\xa3\xe3\xa4\xe3\xa5\xe3\xa6\xe3\xa7\xe3\xa8\xe3\xa9\xe3\xaa\xe3\xab\x00\x00\x00\x00", /* 7b00 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe3\xac\xe3\xad\xe3\xae\xe3\xaf\xe3\xb0\xe3\xb1\xe3\xb2\xe3\xb3\xe3\xb4\xe3\xb5\xe3\xb6\xe3\xb7\xe3\xb8\xe3\xb9\xe3\xba\xe3\xbb\xe3\xbc\xe3\xbd\xe3\xbe\xe3\xbf\xe3\xc0\xe3\xc1\xe3\xc2\xe3\xc3\xe3\xc4\xe3\xc5\xe3\xc6\xe3\xc7\xe3\xc8\xe3\xc9\xe3\xca\xe3\xcb\xe3\xcc\xe3\xcd\xe3\xce\xe3\xcf\xe3\xd0\xe3\xd1\xe3\xd2\xe3\xd3\xe3\xd4\xe3\xd5\xe3\xd6\xe3\xd7\xe3\xd8\xe3\xd9\xe3\xda\xe3\xdb\xe3\xdc\xe3\xdd\xe3\xde\xe3\xdf\xe3\xe0\xe3\xe1\xe3\xe2\xe3\xe3\xe3\xe4\xe3\xe5\xe3\xe6\xe3\xe7\xe3\xe8\xe3\xe9\xe3\xea", /* 7b80 */ "\x00\x00\xe3\xeb\xe3\xec\xe3\xed\xe3\xee\xe3\xef\xe3\xf0\xe3\xf1\xe3\xf2\xe3\xf3\xe3\xf4\xe3\xf5\xe3\xf6\xe3\xf7\xe3\xf8\xe3\xf9\xe3\xfa\xe3\xfb\xe3\xfc\xe3\xfd\xe3\xfe\xe3\xff\xe4\x00\xe4\x01\xe4\x02\xe4\x03\xe4\x04\xe4\x05\xe4\x06\xe4\x07\xe4\x08\xe4\x09\xe4\x0a\xe4\x0b\xe4\x0c\xe4\x0d\xe4\x0e\xe4\x0f\xe4\x10\xe4\x11\xe4\x12\xe4\x13\xe4\x14\xe4\x15\xe4\x16\xe4\x17\xe4\x18\xe4\x19\xe4\x1a\xe4\x1b\xe4\x1c\xe4\x1d\xe4\x1e\xe4\x1f\xe4\x20\xe4\x21\xe4\x22\xe4\x23\xe4\x24\xe4\x25\xe4\x26\xe4\x27\xe4\x28\xe4\x29\xe4\x2a\xe4\x2b\xe4\x2c\xe4\x2d\xe4\x2e\xe4\x2f\xe4\x30\xe4\x31\xe4\x32\xe4\x33\xe4\x34\xe4\x35\xe4\x36\xe4\x37\xe4\x38\xe4\x39\xe4\x3a\xe4\x3b\xe4\x3c\xe4\x3d\xe4\x3e\xe4\x3f\xe4\x40\xe4\x41\xe4\x42\xe4\x43\xe4\x44\xe4\x45\xe4\x46\xe4\x47\xe4\x48\xe4\x49\xe4\x4a\xe4\x4b\xe4\x4c\xe4\x4d\xe4\x4e\xe4\x4f\xe4\x50\xe4\x51\xe4\x52\xe4\x53\xe4\x54\xe4\x55\xe4\x56\xe4\x57\xe4\x58\xe4\x59\xe4\x5a\xe4\x5b\xe4\x5c\xe4\x5d\xe4\x5e\xe4\x5f\xe4\x60\xe4\x61\xe4\x62\xe4\x63\xe4\x64\xe4\x65\xe4\x66\xe4\x67\x00\x00\x00\x00", /* 7c00 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe4\x68\xe4\x69\xe4\x6a\xe4\x6b\xe4\x6c\xe4\x6d\xe4\x6e\xe4\x6f\xe4\x70\xe4\x71\xe4\x72\xe4\x73\xe4\x74\xe4\x75\xe4\x76\xe4\x77\xe4\x78\xe4\x79\xe4\x7a\xe4\x7b\xe4\x7c\xe4\x7d\xe4\x7e\xe4\x7f\xe4\x80\xe4\x81\xe4\x82\xe4\x83\xe4\x84\xe4\x85\xe4\x86\xe4\x87\xe4\x88\xe4\x89\xe4\x8a\xe4\x8b\xe4\x8c\xe4\x8d\xe4\x8e\xe4\x8f\xe4\x90\xe4\x91\xe4\x92\xe4\x93\xe4\x94\xe4\x95\xe4\x96\xe4\x97\xe4\x98\xe4\x99\xe4\x9a\xe4\x9b\xe4\x9c\xe4\x9d\xe4\x9e\xe4\x9f\xe4\xa0\xe4\xa1\xe4\xa2\xe4\xa3\xe4\xa4\xe4\xa5\xe4\xa6", /* 7c80 */ "\x00\x00\xe4\xa7\xe4\xa8\xe4\xa9\xe4\xaa\xe4\xab\xe4\xac\xe4\xad\xe4\xae\xe4\xaf\xe4\xb0\xe4\xb1\xe4\xb2\xe4\xb3\xe4\xb4\xe4\xb5\xe4\xb6\xe4\xb7\xe4\xb8\xe4\xb9\xe4\xba\xe4\xbb\xe4\xbc\xe4\xbd\xe4\xbe\xe4\xbf\xe4\xc0\xe4\xc1\xe4\xc2\xe4\xc3\xe4\xc4\xe4\xc5\xe4\xc6\xe4\xc7\xe4\xc8\xe4\xc9\xe4\xca\xe4\xcb\xe4\xcc\xe4\xcd\xe4\xce\xe4\xcf\xe4\xd0\xe4\xd1\xe4\xd2\xe4\xd3\xe4\xd4\xe4\xd5\xe4\xd6\xe4\xd7\xe4\xd8\xe4\xd9\xe4\xda\xe4\xdb\xe4\xdc\xe4\xdd\xe4\xde\xe4\xdf\xe4\xe0\xe4\xe1\xe4\xe2\xe4\xe3\xe4\xe4\xe4\xe5\xe4\xe6\xe4\xe7\xe4\xe8\xe4\xe9\xe4\xea\xe4\xeb\xe4\xec\xe4\xed\xe4\xee\xe4\xef\xe4\xf0\xe4\xf1\xe4\xf2\xe4\xf3\xe4\xf4\xe4\xf5\xe4\xf6\xe4\xf7\xe4\xf8\xe4\xf9\xe4\xfa\xe4\xfb\xe4\xfc\xe4\xfd\xe4\xfe\xe4\xff\xe5\x00\xe5\x01\xe5\x02\xe5\x03\xe5\x04\xe5\x05\xe5\x06\xe5\x07\xe5\x08\xe5\x09\xe5\x0a\xe5\x0b\xe5\x0c\xe5\x0d\xe5\x0e\xe5\x0f\xe5\x10\xe5\x11\xe5\x12\xe5\x13\xe5\x14\xe5\x15\xe5\x16\xe5\x17\xe5\x18\xe5\x19\xe5\x1a\xe5\x1b\xe5\x1c\xe5\x1d\xe5\x1e\xe5\x1f\xe5\x20\xe5\x21\xe5\x22\xe5\x23\x00\x00\x00\x00", /* 7d00 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe5\x24\xe5\x25\xe5\x26\xe5\x27\xe5\x28\xe5\x29\xe5\x2a\xe5\x2b\xe5\x2c\xe5\x2d\xe5\x2e\xe5\x2f\xe5\x30\xe5\x31\xe5\x32\xe5\x33\xe5\x34\xe5\x35\xe5\x36\xe5\x37\xe5\x38\xe5\x39\xe5\x3a\xe5\x3b\xe5\x3c\xe5\x3d\xe5\x3e\xe5\x3f\xe5\x40\xe5\x41\xe5\x42\xe5\x43\xe5\x44\xe5\x45\xe5\x46\xe5\x47\xe5\x48\xe5\x49\xe5\x4a\xe5\x4b\xe5\x4c\xe5\x4d\xe5\x4e\xe5\x4f\xe5\x50\xe5\x51\xe5\x52\xe5\x53\xe5\x54\xe5\x55\xe5\x56\xe5\x57\xe5\x58\xe5\x59\xe5\x5a\xe5\x5b\xe5\x5c\xe5\x5d\xe5\x5e\xe5\x5f\xe5\x60\xe5\x61\xe5\x62", /* 7d80 */ "\x00\x00\xe5\x63\xe5\x64\xe5\x65\xe5\x66\xe5\x67\xe5\x68\xe5\x69\xe5\x6a\xe5\x6b\xe5\x6c\xe5\x6d\xe5\x6e\xe5\x6f\xe5\x70\xe5\x71\xe5\x72\xe5\x73\xe5\x74\xe5\x75\xe5\x76\xe5\x77\xe5\x78\xe5\x79\xe5\x7a\xe5\x7b\xe5\x7c\xe5\x7d\xe5\x7e\xe5\x7f\xe5\x80\xe5\x81\xe5\x82\xe5\x83\xe5\x84\xe5\x85\xe5\x86\xe5\x87\xe5\x88\xe5\x89\xe5\x8a\xe5\x8b\xe5\x8c\xe5\x8d\xe5\x8e\xe5\x8f\xe5\x90\xe5\x91\xe5\x92\xe5\x93\xe5\x94\xe5\x95\xe5\x96\xe5\x97\xe5\x98\xe5\x99\xe5\x9a\xe5\x9b\xe5\x9c\xe5\x9d\xe5\x9e\xe5\x9f\xe5\xa0\xe5\xa1\xe5\xa2\xe5\xa3\xe5\xa4\xe5\xa5\xe5\xa6\xe5\xa7\xe5\xa8\xe5\xa9\xe5\xaa\xe5\xab\xe5\xac\xe5\xad\xe5\xae\xe5\xaf\xe5\xb0\xe5\xb1\xe5\xb2\xe5\xb3\xe5\xb4\xe5\xb5\xe5\xb6\xe5\xb7\xe5\xb8\xe5\xb9\xe5\xba\xe5\xbb\xe5\xbc\xe5\xbd\xe5\xbe\xe5\xbf\xe5\xc0\xe5\xc1\xe5\xc2\xe5\xc3\xe5\xc4\xe5\xc5\xe5\xc6\xe5\xc7\xe5\xc8\xe5\xc9\xe5\xca\xe5\xcb\xe5\xcc\xe5\xcd\xe5\xce\xe5\xcf\xe5\xd0\xe5\xd1\xe5\xd2\xe5\xd3\xe5\xd4\xe5\xd5\xe5\xd6\xe5\xd7\xe5\xd8\xe5\xd9\xe5\xda\xe5\xdb\xe5\xdc\xe5\xdd\xe5\xde\xe5\xdf\x00\x00\x00\x00", /* 7e00 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe5\xe0\xe5\xe1\xe5\xe2\xe5\xe3\xe5\xe4\xe5\xe5\xe5\xe6\xe5\xe7\xe5\xe8\xe5\xe9\xe5\xea\xe5\xeb\xe5\xec\xe5\xed\xe5\xee\xe5\xef\xe5\xf0\xe5\xf1\xe5\xf2\xe5\xf3\xe5\xf4\xe5\xf5\xe5\xf6\xe5\xf7\xe5\xf8\xe5\xf9\xe5\xfa\xe5\xfb\xe5\xfc\xe5\xfd\xe5\xfe\xe5\xff\xe6\x00\xe6\x01\xe6\x02\xe6\x03\xe6\x04\xe6\x05\xe6\x06\xe6\x07\xe6\x08\xe6\x09\xe6\x0a\xe6\x0b\xe6\x0c\xe6\x0d\xe6\x0e\xe6\x0f\xe6\x10\xe6\x11\xe6\x12\xe6\x13\xe6\x14\xe6\x15\xe6\x16\xe6\x17\xe6\x18\xe6\x19\xe6\x1a\xe6\x1b\xe6\x1c\xe6\x1d\xe6\x1e", /* 7e80 */ "\x00\x00\xe6\x1f\xe6\x20\xe6\x21\xe6\x22\xe6\x23\xe6\x24\xe6\x25\xe6\x26\xe6\x27\xe6\x28\xe6\x29\xe6\x2a\xe6\x2b\xe6\x2c\xe6\x2d\xe6\x2e\xe6\x2f\xe6\x30\xe6\x31\xe6\x32\xe6\x33\xe6\x34\xe6\x35\xe6\x36\xe6\x37\xe6\x38\xe6\x39\xe6\x3a\xe6\x3b\xe6\x3c\xe6\x3d\xe6\x3e\xe6\x3f\xe6\x40\xe6\x41\xe6\x42\xe6\x43\xe6\x44\xe6\x45\xe6\x46\xe6\x47\xe6\x48\xe6\x49\xe6\x4a\xe6\x4b\xe6\x4c\xe6\x4d\xe6\x4e\xe6\x4f\xe6\x50\xe6\x51\xe6\x52\xe6\x53\xe6\x54\xe6\x55\xe6\x56\xe6\x57\xe6\x58\xe6\x59\xe6\x5a\xe6\x5b\xe6\x5c\xe6\x5d\xe6\x5e\xe6\x5f\xe6\x60\xe6\x61\xe6\x62\xe6\x63\xe6\x64\xe6\x65\xe6\x66\xe6\x67\xe6\x68\xe6\x69\xe6\x6a\xe6\x6b\xe6\x6c\xe6\x6d\xe6\x6e\xe6\x6f\xe6\x70\xe6\x71\xe6\x72\xe6\x73\xe6\x74\xe6\x75\xe6\x76\xe6\x77\xe6\x78\xe6\x79\xe6\x7a\xe6\x7b\xe6\x7c\xe6\x7d\xe6\x7e\xe6\x7f\xe6\x80\xe6\x81\xe6\x82\xe6\x83\xe6\x84\xe6\x85\xe6\x86\xe6\x87\xe6\x88\xe6\x89\xe6\x8a\xe6\x8b\xe6\x8c\xe6\x8d\xe6\x8e\xe6\x8f\xe6\x90\xe6\x91\xe6\x92\xe6\x93\xe6\x94\xe6\x95\xe6\x96\xe6\x97\xe6\x98\xe6\x99\xe6\x9a\xe6\x9b\x00\x00\x00\x00", /* 7f00 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe6\x9c\xe6\x9d\xe6\x9e\xe6\x9f\xe6\xa0\xe6\xa1\xe6\xa2\xe6\xa3\xe6\xa4\xe6\xa5\xe6\xa6\xe6\xa7\xe6\xa8\xe6\xa9\xe6\xaa\xe6\xab\xe6\xac\xe6\xad\xe6\xae\xe6\xaf\xe6\xb0\xe6\xb1\xe6\xb2\xe6\xb3\xe6\xb4\xe6\xb5\xe6\xb6\xe6\xb7\xe6\xb8\xe6\xb9\xe6\xba\xe6\xbb\xe6\xbc\xe6\xbd\xe6\xbe\xe6\xbf\xe6\xc0\xe6\xc1\xe6\xc2\xe6\xc3\xe6\xc4\xe6\xc5\xe6\xc6\xe6\xc7\xe6\xc8\xe6\xc9\xe6\xca\xe6\xcb\xe6\xcc\xe6\xcd\xe6\xce\xe6\xcf\xe6\xd0\xe6\xd1\xe6\xd2\xe6\xd3\xe6\xd4\xe6\xd5\xe6\xd6\xe6\xd7\xe6\xd8\xe6\xd9\xe6\xda", /* 7f80 */ "\x00\x00\xe6\xdb\xe6\xdc\xe6\xdd\xe6\xde\xe6\xdf\xe6\xe0\xe6\xe1\xe6\xe2\xe6\xe3\xe6\xe4\xe6\xe5\xe6\xe6\xe6\xe7\xe6\xe8\xe6\xe9\xe6\xea\xe6\xeb\xe6\xec\xe6\xed\xe6\xee\xe6\xef\xe6\xf0\xe6\xf1\xe6\xf2\xe6\xf3\xe6\xf4\xe6\xf5\xe6\xf6\xe6\xf7\xe6\xf8\xe6\xf9\xe6\xfa\xe6\xfb\xe6\xfc\xe6\xfd\xe6\xfe\xe6\xff\xe7\x00\xe7\x01\xe7\x02\xe7\x03\xe7\x04\xe7\x05\xe7\x06\xe7\x07\xe7\x08\xe7\x09\xe7\x0a\xe7\x0b\xe7\x0c\xe7\x0d\xe7\x0e\xe7\x0f\xe7\x10\xe7\x11\xe7\x12\xe7\x13\xe7\x14\xe7\x15\xe7\x16\xe7\x17\xe7\x18\xe7\x19\xe7\x1a\xe7\x1b\xe7\x1c\xe7\x1d\xe7\x1e\xe7\x1f\xe7\x20\xe7\x21\xe7\x22\xe7\x23\xe7\x24\xe7\x25\xe7\x26\xe7\x27\xe7\x28\xe7\x29\xe7\x2a\xe7\x2b\xe7\x2c\xe7\x2d\xe7\x2e\xe7\x2f\xe7\x30\xe7\x31\xe7\x32\xe7\x33\xe7\x34\xe7\x35\xe7\x36\xe7\x37\xe7\x38\xe7\x39\xe7\x3a\xe7\x3b\xe7\x3c\xe7\x3d\xe7\x3e\xe7\x3f\xe7\x40\xe7\x41\xe7\x42\xe7\x43\xe7\x44\xe7\x45\xe7\x46\xe7\x47\xe7\x48\xe7\x49\xe7\x4a\xe7\x4b\xe7\x4c\xe7\x4d\xe7\x4e\xe7\x4f\xe7\x50\xe7\x51\xe7\x52\xe7\x53\xe7\x54\xe7\x55\xe7\x56\xe7\x57\x00\x00\x00\x00", /* 8000 */ NULL, /* 8080 */ NULL, /* 8100 */ NULL, /* 8180 */ NULL, /* 8200 */ NULL, /* 8280 */ NULL, /* 8300 */ NULL, /* 8380 */ NULL, /* 8400 */ NULL, /* 8480 */ NULL, /* 8500 */ NULL, /* 8580 */ NULL, /* 8600 */ NULL, /* 8680 */ NULL, /* 8700 */ NULL, /* 8780 */ NULL, /* 8800 */ NULL, /* 8880 */ NULL, /* 8900 */ NULL, /* 8980 */ NULL, /* 8a00 */ NULL, /* 8a80 */ NULL, /* 8b00 */ NULL, /* 8b80 */ NULL, /* 8c00 */ NULL, /* 8c80 */ NULL, /* 8d00 */ NULL, /* 8d80 */ NULL, /* 8e00 */ NULL, /* 8e80 */ NULL, /* 8f00 */ NULL, /* 8f80 */ NULL, /* 9000 */ NULL, /* 9080 */ NULL, /* 9100 */ NULL, /* 9180 */ NULL, /* 9200 */ NULL, /* 9280 */ NULL, /* 9300 */ NULL, /* 9380 */ NULL, /* 9400 */ NULL, /* 9480 */ NULL, /* 9500 */ NULL, /* 9580 */ NULL, /* 9600 */ NULL, /* 9680 */ NULL, /* 9700 */ NULL, /* 9780 */ NULL, /* 9800 */ NULL, /* 9880 */ NULL, /* 9900 */ NULL, /* 9980 */ NULL, /* 9a00 */ NULL, /* 9a80 */ NULL, /* 9b00 */ NULL, /* 9b80 */ NULL, /* 9c00 */ NULL, /* 9c80 */ NULL, /* 9d00 */ NULL, /* 9d80 */ NULL, /* 9e00 */ NULL, /* 9e80 */ NULL, /* 9f00 */ NULL, /* 9f80 */ NULL, /* a000 */ NULL, /* a080 */ NULL, /* a100 */ NULL, /* a180 */ NULL, /* a200 */ NULL, /* a280 */ NULL, /* a300 */ NULL, /* a380 */ NULL, /* a400 */ NULL, /* a480 */ NULL, /* a500 */ NULL, /* a580 */ NULL, /* a600 */ NULL, /* a680 */ NULL, /* a700 */ NULL, /* a780 */ NULL, /* a800 */ NULL, /* a880 */ NULL, /* a900 */ NULL, /* a980 */ NULL, /* aa00 */ NULL, /* aa80 */ NULL, /* ab00 */ NULL, /* ab80 */ NULL, /* ac00 */ NULL, /* ac80 */ NULL, /* ad00 */ NULL, /* ad80 */ NULL, /* ae00 */ NULL, /* ae80 */ NULL, /* af00 */ NULL, /* af80 */ NULL, /* b000 */ NULL, /* b080 */ NULL, /* b100 */ NULL, /* b180 */ NULL, /* b200 */ NULL, /* b280 */ NULL, /* b300 */ NULL, /* b380 */ NULL, /* b400 */ NULL, /* b480 */ NULL, /* b500 */ NULL, /* b580 */ NULL, /* b600 */ NULL, /* b680 */ NULL, /* b700 */ NULL, /* b780 */ NULL, /* b800 */ NULL, /* b880 */ NULL, /* b900 */ NULL, /* b980 */ NULL, /* ba00 */ NULL, /* ba80 */ NULL, /* bb00 */ NULL, /* bb80 */ NULL, /* bc00 */ NULL, /* bc80 */ NULL, /* bd00 */ NULL, /* bd80 */ NULL, /* be00 */ NULL, /* be80 */ NULL, /* bf00 */ NULL, /* bf80 */ NULL, /* c000 */ NULL, /* c080 */ NULL, /* c100 */ NULL, /* c180 */ NULL, /* c200 */ NULL, /* c280 */ NULL, /* c300 */ NULL, /* c380 */ NULL, /* c400 */ NULL, /* c480 */ NULL, /* c500 */ NULL, /* c580 */ NULL, /* c600 */ NULL, /* c680 */ NULL, /* c700 */ NULL, /* c780 */ NULL, /* c800 */ NULL, /* c880 */ NULL, /* c900 */ NULL, /* c980 */ NULL, /* ca00 */ NULL, /* ca80 */ NULL, /* cb00 */ NULL, /* cb80 */ NULL, /* cc00 */ NULL, /* cc80 */ NULL, /* cd00 */ NULL, /* cd80 */ NULL, /* ce00 */ NULL, /* ce80 */ NULL, /* cf00 */ NULL, /* cf80 */ NULL, /* d000 */ NULL, /* d080 */ NULL, /* d100 */ NULL, /* d180 */ NULL, /* d200 */ NULL, /* d280 */ NULL, /* d300 */ NULL, /* d380 */ NULL, /* d400 */ NULL, /* d480 */ NULL, /* d500 */ NULL, /* d580 */ NULL, /* d600 */ NULL, /* d680 */ NULL, /* d700 */ NULL, /* d780 */ NULL, /* d800 */ NULL, /* d880 */ NULL, /* d900 */ NULL, /* d980 */ NULL, /* da00 */ NULL, /* da80 */ NULL, /* db00 */ NULL, /* db80 */ NULL, /* dc00 */ NULL, /* dc80 */ NULL, /* dd00 */ NULL, /* dd80 */ NULL, /* de00 */ NULL, /* de80 */ NULL, /* df00 */ NULL, /* df80 */ NULL, /* e000 */ NULL, /* e080 */ NULL, /* e100 */ NULL, /* e180 */ NULL, /* e200 */ NULL, /* e280 */ NULL, /* e300 */ NULL, /* e380 */ NULL, /* e400 */ NULL, /* e480 */ NULL, /* e500 */ NULL, /* e580 */ NULL, /* e600 */ NULL, /* e680 */ NULL, /* e700 */ NULL, /* e780 */ NULL, /* e800 */ NULL, /* e880 */ NULL, /* e900 */ NULL, /* e980 */ NULL, /* ea00 */ NULL, /* ea80 */ NULL, /* eb00 */ NULL, /* eb80 */ NULL, /* ec00 */ NULL, /* ec80 */ NULL, /* ed00 */ NULL, /* ed80 */ NULL, /* ee00 */ NULL, /* ee80 */ NULL, /* ef00 */ NULL, /* ef80 */ NULL, /* f000 */ NULL, /* f080 */ NULL, /* f100 */ NULL, /* f180 */ NULL, /* f200 */ NULL, /* f280 */ NULL, /* f300 */ NULL, /* f380 */ NULL, /* f400 */ NULL, /* f480 */ NULL, /* f500 */ NULL, /* f580 */ NULL, /* f600 */ NULL, /* f680 */ NULL, /* f700 */ NULL, /* f780 */ NULL, /* f800 */ NULL, /* f880 */ NULL, /* f900 */ NULL, /* f980 */ NULL, /* fa00 */ NULL, /* fa80 */ NULL, /* fb00 */ NULL, /* fb80 */ NULL, /* fc00 */ NULL, /* fc80 */ NULL, /* fd00 */ NULL, /* fd80 */ NULL, /* fe00 */ NULL, /* fe80 */ NULL, /* ff00 */ NULL, /* ff80 */ NULL } }, { "cp937", "0x03a70343" /* 935, 835 */, /* Unicode to EBCDIC DBCS translation table for ibm-937_P110-1999 */ { /* 0000 */ NULL, /* 0080 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x44\x6a\x44\x60\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x42\xa1\x44\xed\x44\x4b\x00\x00\x00\x00\x44\xee\x00\x00\x43\x79\x46\xe5\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x44\x7a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x44\x7b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 0100 */ NULL, /* 0180 */ NULL, /* 0200 */ NULL, /* 0280 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x44\x5b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x45\x53\x00\x00\x45\x51\x45\x52\x45\x54\x00\x00\x47\x52\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x45\x55\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 0300 */ NULL, /* 0380 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x41\x61\x41\x62\x41\x63\x41\x64\x41\x65\x41\x66\x41\x67\x41\x68\x41\x69\x41\x6a\x41\x6b\x41\x6c\x41\x6d\x41\x6e\x41\x6f\x41\x70\x41\x71\x00\x00\x41\x72\x41\x73\x41\x74\x41\x75\x41\x76\x41\x77\x41\x78\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x41\x41\x41\x42\x41\x43\x41\x44\x41\x45\x41\x46\x41\x47\x41\x48\x41\x49\x41\x4a\x41\x4b\x41\x4c\x41\x4d\x41\x4e\x41\x4f\x41\x50\x41\x51\x00\x00\x41\x52\x41\x53\x41\x54\x41\x55\x41\x56\x41\x57\x41\x58\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 0400 */ "\x00\x00\x41\xc6\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x41\xc0\x41\xc1\x41\xc2\x41\xc3\x41\xc4\x41\xc5\x41\xc7\x41\xc8\x41\xc9\x41\xca\x41\xcb\x41\xcc\x41\xcd\x41\xce\x41\xcf\x41\xd0\x41\xd1\x41\xd2\x41\xd3\x41\xd4\x41\xd5\x41\xd6\x41\xd7\x41\xd8\x41\xd9\x41\xda\x41\xdb\x41\xdc\x41\xdd\x41\xde\x41\xdf\x41\xe0\x41\x80\x41\x81\x41\x82\x41\x83\x41\x84\x41\x85\x41\x87\x41\x88\x41\x89\x41\x8a\x41\x8b\x41\x8c\x41\x8d\x41\x8e\x41\x8f\x41\x90\x41\x91\x41\x92\x41\x93\x41\x94\x41\x95\x41\x96\x41\x97\x41\x98\x41\x99\x41\x9a\x41\x9b\x41\x9c\x41\x9d\x41\x9e\x41\x9f\x41\xa0\x00\x00\x41\x86\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 0480 */ NULL, /* 0500 */ NULL, /* 0580 */ NULL, /* 0600 */ NULL, /* 0680 */ NULL, /* 0700 */ NULL, /* 0780 */ NULL, /* 0800 */ NULL, /* 0880 */ NULL, /* 0900 */ NULL, /* 0980 */ NULL, /* 0a00 */ NULL, /* 0a80 */ NULL, /* 0b00 */ NULL, /* 0b80 */ NULL, /* 0c00 */ NULL, /* 0c80 */ NULL, /* 0d00 */ NULL, /* 0d80 */ NULL, /* 0e00 */ NULL, /* 0e80 */ NULL, /* 0f00 */ NULL, /* 0f80 */ NULL, /* 1000 */ NULL, /* 1080 */ NULL, /* 1100 */ NULL, /* 1180 */ NULL, /* 1200 */ NULL, /* 1280 */ NULL, /* 1300 */ NULL, /* 1380 */ NULL, /* 1400 */ NULL, /* 1480 */ NULL, /* 1500 */ NULL, /* 1580 */ NULL, /* 1600 */ NULL, /* 1680 */ NULL, /* 1700 */ NULL, /* 1780 */ NULL, /* 1800 */ NULL, /* 1880 */ NULL, /* 1900 */ NULL, /* 1980 */ NULL, /* 1a00 */ NULL, /* 1a80 */ NULL, /* 1b00 */ NULL, /* 1b80 */ NULL, /* 1c00 */ NULL, /* 1c80 */ NULL, /* 1d00 */ NULL, /* 1d80 */ NULL, /* 1e00 */ NULL, /* 1e80 */ NULL, /* 1f00 */ NULL, /* 1f80 */ NULL, /* 2000 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x44\x5a\x00\x00\x00\x00\x44\x4a\x44\x4a\x00\x00\x00\x00\x00\x00\x44\x61\x44\x71\x00\x00\x00\x00\x44\x62\x44\x72\x00\x00\x00\x00\x43\x77\x43\x78\x00\x00\x00\x00\x00\x00\x44\x7e\x44\x7f\x43\x45\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x43\x73\x00\x00\x44\x50\x44\xef\x00\x00\x42\x79\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x44\x6b\x00\x00\x00\x00\x42\xa1\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 2080 */ NULL, /* 2100 */ "\x00\x00\x00\x00\x00\x00\x44\x4e\x00\x00\x46\xbb\x00\x00\x00\x00\x00\x00\x46\xdb\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x44\x6e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x44\x6f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x43\x72\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x41\xf1\x41\xf2\x41\xf3\x41\xf4\x41\xf5\x41\xf6\x41\xf7\x41\xf8\x41\xf9\x41\xfa\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x41\xb1\x41\xb2\x41\xb3\x41\xb4\x41\xb5\x41\xb6\x41\xb7\x41\xb8\x41\xb9\x41\xba\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 2180 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x44\xf1\x44\xf2\x44\xf0\x44\xf3\x00\x00\x00\x00\x46\xd4\x46\xd5\x46\xd7\x46\xd6\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x46\xef\x46\xf0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x43\x6e\x00\x00\x43\x6f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x46\xee\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 2200 */ "\x43\x70\x00\x00\x43\x4e\x43\x71\x00\x00\x00\x00\x00\x00\x43\x4f\x43\x64\x00\x00\x00\x00\x43\x65\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x46\xda\x00\x00\x00\x00\x00\x00\x00\x00\x46\xc5\x00\x00\x00\x00\x43\x61\x44\x4d\x46\xcc\x46\xcb\x00\x00\x00\x00\x42\x4f\x00\x00\x44\x7c\x00\x00\x43\x6c\x43\x6d\x46\xc8\x46\xc9\x46\xd0\x43\x63\x00\x00\x46\xd1\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x44\x68\x44\x78\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x43\xa1\x43\x60\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x46\xc6\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x44\x4c\x46\xc7\x00\x00\x00\x00\x00\x00\x00\x00\x44\x67\x44\x77\x00\x00\x00\x00\x43\x5d\x43\x5e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 2280 */ "\x00\x00\x00\x00\x43\x68\x43\x69\x00\x00\x00\x00\x43\x66\x43\x67\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x46\xd2\x00\x00\x00\x00\x00\x00\x46\xd3\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x46\xca\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x46\xcd\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 2300 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x43\x4d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 2380 */ NULL, /* 2400 */ "\x47\x81\x47\x82\x47\x83\x47\x84\x47\x85\x47\x86\x47\x87\x47\x88\x47\x89\x47\x8a\x47\x8b\x47\x8c\x47\x8d\x47\x8e\x47\x8f\x47\x90\x47\x91\x47\x92\x47\x93\x47\x94\x47\x95\x47\x96\x47\x97\x47\x98\x47\x99\x47\x9a\x47\x9b\x47\x9c\x47\x9d\x47\x9e\x47\x9f\x47\xa0\x00\x00\x47\xa1\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x46\x41\x46\x42\x46\x43\x46\x44\x46\x45\x46\x46\x46\x47\x46\x48\x46\x49\x46\x4a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x46\x51\x46\x52\x46\x53\x46\x54\x46\x55\x46\x56\x46\x57\x46\x58\x46\x59\x46\x5a\x00\x00\x00\x00", /* 2480 */ NULL, /* 2500 */ "\x46\x75\x43\xb7\x46\x76\x43\xb8\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x46\x78\x00\x00\x00\x00\x43\xb9\x46\x79\x00\x00\x00\x00\x43\xe1\x46\x7a\x00\x00\x00\x00\x43\xe3\x46\x7b\x00\x00\x00\x00\x43\xe2\x46\x73\x43\xee\x00\x00\x00\x00\x43\xe9\x00\x00\x00\x00\x43\xe4\x46\x72\x43\xf0\x00\x00\x00\x00\x43\xeb\x00\x00\x00\x00\x43\xe6\x46\x71\x00\x00\x00\x00\x43\xea\x43\xef\x00\x00\x00\x00\x43\xe5\x46\x70\x00\x00\x00\x00\x43\xec\x43\xf1\x00\x00\x00\x00\x43\xe7\x46\x6f\x00\x00\x00\x00\x43\xed\x00\x00\x00\x00\x43\xf2\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x43\xe8\x00\x00\x00\x00\x00\x00\x00\x00\x46\x81\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x46\x82\x00\x00\x00\x00\x46\x84\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x46\x83\x00\x00\x00\x00\x46\x7c\x46\x7d\x46\x7f\x46\x7e\x46\x89\x46\x8a\x46\x8b\x46\xb7\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 2580 */ "\x00\x00\x46\x60\x46\x61\x46\x62\x46\x63\x46\x64\x46\x65\x46\x66\x46\x67\x46\x6e\x46\x6d\x46\x6c\x46\x6b\x46\x6a\x46\x69\x46\x68\x00\x00\x00\x00\x00\x00\x00\x00\x46\x74\x46\x77\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x44\xea\x44\xe9\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x44\xe3\x44\xe2\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x44\xec\x44\xeb\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x44\xe8\x44\xe7\x00\x00\x00\x00\x00\x00\x44\xe0\x00\x00\x00\x00\x44\xe4\x44\xe1\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x46\x85\x46\x86\x46\x88\x46\x87\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x43\x7a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 2600 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x44\xe6\x44\xe5\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x44\x79\x00\x00\x44\x69\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x43\x76\x00\x00\x00\x00\x43\x75\x00\x00\x43\x74\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 2680 */ NULL, /* 2700 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x42\x5c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 2780 */ NULL, /* 2800 */ NULL, /* 2880 */ NULL, /* 2900 */ NULL, /* 2980 */ NULL, /* 2a00 */ NULL, /* 2a80 */ NULL, /* 2b00 */ NULL, /* 2b80 */ NULL, /* 2c00 */ NULL, /* 2c80 */ NULL, /* 2d00 */ NULL, /* 2d80 */ NULL, /* 2e00 */ NULL, /* 2e80 */ NULL, /* 2f00 */ NULL, /* 2f80 */ NULL, /* 3000 */ "\x40\x40\x43\x44\x43\x41\x46\xb9\x00\x00\x44\x5d\x44\x5e\x44\x5f\x44\x64\x44\x74\x44\x65\x44\x75\x43\x42\x43\x43\x44\x42\x44\x43\x44\x66\x44\x76\x44\x6c\x44\x7d\x44\x63\x44\x73\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x46\xe9\x46\xea\x00\x00\x00\x00\x45\x41\x45\x42\x45\x43\x45\x44\x45\x45\x45\x46\x45\x47\x45\x48\x45\x49\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x44\x47\x44\x81\x44\x48\x44\x82\x44\x49\x44\x83\x44\x51\x44\x84\x44\x52\x44\x85\x44\x86\x44\xc0\x44\x87\x44\xc1\x44\x88\x44\xc2\x44\x89\x44\xc3\x44\x8a\x44\xc4\x44\x8c\x44\xc5\x44\x8d\x44\xc6\x44\x8e\x44\xc7\x44\x8f\x44\xc8\x44\x90\x44\xc9\x44\x91\x44\xca\x44\x92\x44\xcb\x44\x56\x44\x93\x44\xcc\x44\x94\x44\xcd\x44\x95\x44\xce\x44\x96\x44\x97\x44\x98\x44\x99\x44\x9a\x44\x9d\x44\xcf\x44\xd5\x44\x9e\x44\xd0\x44\xd6\x44\x9f\x44\xd1\x44\xd7\x44\xa2\x44\xd2\x44\xd8\x44\xa3\x44\xd3\x44\xd9\x44\xa4\x44\xa5", /* 3080 */ "\x44\xa6\x44\xa7\x44\xa8\x44\x53\x44\xa9\x44\x54\x44\xaa\x44\x55\x44\xac\x44\xad\x44\xae\x44\xaf\x44\xba\x44\xbb\x44\x57\x44\xbc\x44\xda\x44\xdb\x44\x46\x44\xbd\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x43\xbe\x43\xbf\x44\xdc\x44\xdd\x00\x00\x00\x00\x43\x47\x43\x81\x43\x48\x43\x82\x43\x49\x43\x83\x43\x51\x43\x84\x43\x52\x43\x85\x43\x86\x43\xc0\x43\x87\x43\xc1\x43\x88\x43\xc2\x43\x89\x43\xc3\x43\x8a\x43\xc4\x43\x8c\x43\xc5\x43\x8d\x43\xc6\x43\x8e\x43\xc7\x43\x8f\x43\xc8\x43\x90\x43\xc9\x43\x91\x43\xca\x43\x92\x43\xcb\x43\x56\x43\x93\x43\xcc\x43\x94\x43\xcd\x43\x95\x43\xce\x43\x96\x43\x97\x43\x98\x43\x99\x43\x9a\x43\x9d\x43\xcf\x43\xd5\x43\x9e\x43\xd0\x43\xd6\x43\x9f\x43\xd1\x43\xd7\x43\xa2\x43\xd2\x43\xd8\x43\xa3\x43\xd3\x43\xd9\x43\xa4\x43\xa5\x43\xa6\x43\xa7\x43\xa8\x43\x53\x43\xa9\x43\x54\x43\xaa\x43\x55\x43\xac\x43\xad\x43\xae\x43\xaf\x43\xba\x43\xbb\x43\x57\x43\xbc\x43\xda\x43\xdb\x43\x46\x43\xbd\x43\xd4\x43\x59\x43\x5a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x43\x58\x43\xdc\x43\xdd\x00\x00", /* 3100 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x45\x56\x45\x57\x45\x58\x45\x59\x45\x5a\x45\x5b\x45\x5c\x45\x5d\x45\x5e\x45\x5f\x45\x60\x45\x61\x45\x62\x45\x63\x45\x64\x45\x65\x45\x66\x45\x67\x45\x68\x45\x69\x45\x6a\x45\x6b\x45\x6c\x45\x6d\x45\x6e\x45\x6f\x45\x70\x45\x71\x45\x72\x45\x73\x45\x74\x45\x75\x45\x76\x45\x77\x45\x78\x45\x79\x45\x7a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 3180 */ NULL, /* 3200 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x44\x6d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 3280 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x46\xba\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 3300 */ NULL, /* 3380 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x46\xe2\x46\xe3\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x46\xdd\x46\xde\x46\xdf\x00\x00\x00\x00\x46\xe1\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x46\xe4\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x46\xe0\x00\x00\x00\x00\x46\xcf\x46\xce\x00\x00\x00\x00\x46\xdc\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 3400 */ NULL, /* 3480 */ NULL, /* 3500 */ NULL, /* 3580 */ NULL, /* 3600 */ NULL, /* 3680 */ NULL, /* 3700 */ NULL, /* 3780 */ NULL, /* 3800 */ NULL, /* 3880 */ NULL, /* 3900 */ NULL, /* 3980 */ NULL, /* 3a00 */ NULL, /* 3a80 */ NULL, /* 3b00 */ NULL, /* 3b80 */ NULL, /* 3c00 */ NULL, /* 3c80 */ NULL, /* 3d00 */ NULL, /* 3d80 */ NULL, /* 3e00 */ NULL, /* 3e80 */ NULL, /* 3f00 */ NULL, /* 3f80 */ NULL, /* 4000 */ NULL, /* 4080 */ NULL, /* 4100 */ NULL, /* 4180 */ NULL, /* 4200 */ NULL, /* 4280 */ NULL, /* 4300 */ NULL, /* 4380 */ NULL, /* 4400 */ NULL, /* 4480 */ NULL, /* 4500 */ NULL, /* 4580 */ NULL, /* 4600 */ NULL, /* 4680 */ NULL, /* 4700 */ NULL, /* 4780 */ NULL, /* 4800 */ NULL, /* 4880 */ NULL, /* 4900 */ NULL, /* 4980 */ NULL, /* 4a00 */ NULL, /* 4a80 */ NULL, /* 4b00 */ NULL, /* 4b80 */ NULL, /* 4c00 */ NULL, /* 4c80 */ NULL, /* 4d00 */ NULL, /* 4d80 */ NULL, /* 4e00 */ "\x4c\x41\x4c\x43\x00\x00\x4c\x44\x00\x00\x00\x00\x00\x00\x69\x46\x4c\x57\x4c\x55\x4c\x58\x4c\x56\x69\x47\x4c\x83\x69\x50\x69\x4e\x4c\x82\x4c\x81\x00\x00\x00\x00\x4c\xe1\x4c\xe0\x4c\xdf\x00\x00\x4c\xe2\x4c\xde\x00\x00\x00\x00\x00\x00\x00\x00\x4d\xa1\x4d\xa2\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4f\xe3\x00\x00\x48\x42\x00\x00\x00\x00\x4c\x59\x00\x00\x4c\x84\x69\x51\x00\x00\x4c\x85\x69\x64\x4e\x8c\x6b\x52\x00\x00\x00\x00\x48\x43\x00\x00\x4c\x5a\x4c\x86\x00\x00\x4c\xe3\x69\x65\x00\x00\x00\x00\x48\x44\x00\x00\x00\x00\x69\x41\x4c\x45\x00\x00\x4c\x5c\x00\x00\x69\x48\x4c\x5d\x00\x00\x00\x00\x4c\x87\x00\x00\x4c\xe4\x4c\xe6\x4c\xe5\x00\x00\x00\x00\x4d\xa3\x4d\xa4\x00\x00\x00\x00\x4f\xe4\x00\x00\x53\xfd\x4c\x42\x00\x00\x00\x00\x69\x42\x4c\x46\x4c\x5f\x4c\x5e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4d\xa5\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4f\xe5\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x56\x92\x72\x6f", /* 4e80 */ "\x00\x00\x00\x00\x5b\xa9\x79\x77\x79\x78\x48\x46\x4c\x47\x00\x00\x4c\x89\x00\x00\x00\x00\x4f\xe6\x4c\x48\x69\x49\x4c\x60\x00\x00\x00\x00\x4c\x8a\x4c\x8c\x69\x52\x4c\x8d\x4c\x8b\x00\x00\x00\x00\x00\x00\x4d\xa6\x00\x00\x4f\xe7\x00\x00\x00\x00\x4f\xe8\x51\xe6\x48\x48\x4c\x61\x4c\x8e\x00\x00\x4d\xa7\x4d\xa9\x4d\xa8\x00\x00\x4e\x8d\x00\x00\x00\x00\x4f\xe9\x4f\xea\x51\xe7\x51\xe8\x00\x00\x00\x00\x00\x00\x00\x00\x54\x41\x00\x00\x00\x00\x79\x79\x00\x00\x00\x00\x8f\x66\x4c\x49\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4c\x90\x4c\x8f\x69\x53\x4c\x91\x4c\x97\x00\x00\x4c\x92\x4c\x93\x69\x55\x69\x54\x4c\x95\x4c\x96\x00\x00\x4c\x94\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4c\xe9\x4c\xea\x4c\xeb\x4c\xec\x4c\xe8\x4c\xef\x69\x6b\x00\x00\x69\x67\x69\x6a\x4c\xf0\x4d\x43\x00\x00\x69\x69\x00\x00\x4c\xed\x4c\xee\x4c\xe7\x00\x00\x00\x00\x69\x66\x69\x68\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4d\xb6\x69\x90\x4d\xb3\x4d\xb7\x69\x9a\x69\x8e\x4d\xb4\x69\x92\x00\x00\x00\x00\x00\x00\x4d\xb5\x00\x00\x4d\xb8\x00\x00\x4d\xaa", /* 4f00 */ "\x69\x91\x4d\xb9\x69\x95\x00\x00\x69\x99\x69\x96\x00\x00\x00\x00\x69\x93\x4d\xab\x4d\xad\x4d\xba\x00\x00\x4d\xaf\x69\x8b\x4d\xb2\x4d\xb0\x4d\xb1\x69\x9b\x69\x98\x69\x8f\x4d\xae\x00\x00\x00\x00\x69\x8c\x4d\xac\x00\x00\x00\x00\x00\x00\x69\x94\x00\x00\x00\x00\x00\x00\x00\x00\x69\x97\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x69\x8d\x6a\x48\x00\x00\x4e\xa3\x4e\x96\x00\x00\x00\x00\x6a\x49\x4e\x93\x00\x00\x4e\xa5\x00\x00\x4e\x9b\x00\x00\x4e\x9a\x69\xfa\x4e\x9e\x4e\x99\x6a\x42\x6a\x4a\x00\x00\x6a\x46\x00\x00\x4e\x9c\x00\x00\x00\x00\x4e\x9f\x4e\x90\x4e\xa8\x69\xfc\x00\x00\x00\x00\x6b\x5e\x4e\x8e\x4e\xa4\x4e\x8f\x4e\x97\x4e\x98\x6a\x44\x69\xfd\x4e\x9d\x4e\x95\x69\xf9\x4e\x91\x6a\x47\x4e\xa6\x4e\xa9\x4e\x94\x4e\xa1\x4e\xa7\x4e\x92\x6a\x45\x4e\xa2\x6a\x4b\x69\xfb\x4e\xa0\x6a\x41\x00\x00\x00\x00\x6a\x43\x00\x00\x4f\xf8\x6b\x60\x6b\x6c\x4f\xf0\x00\x00\x6b\x6d\x4f\xeb\x4f\xf5\x00\x00\x00\x00\x4f\xee\x6b\x5a\x4f\xf6\x6b\x59\x6b\x5d\x6b\x64\x6b\x62\x50\x41\x4f\xf9\x6b\x54\x6b\x56\x4f\xfb\x4f\xef", /* 4f80 */ "\x6b\x57\x6b\x63\x6b\x6a\x4f\xf4\x6b\x5c\x6b\x55\x4f\xf3\x6b\x58\x4f\xf7\x6b\x5b\x00\x00\x4f\xf2\x00\x00\x4f\xed\x00\x00\x4f\xfc\x6b\x65\x4f\xfd\x6b\x69\x00\x00\x6b\x67\x6b\x6b\x4f\xfa\x6b\x5f\x6b\x53\x00\x00\x6b\x61\x4f\xf1\x6b\x66\x4f\xec\x6b\x68\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x51\xf7\x51\xeb\x00\x00\x00\x00\x6d\x43\x6d\x4b\x00\x00\x51\xea\x51\xf2\x52\x41\x00\x00\x6d\x51\x6d\x4f\x6d\x4a\x00\x00\x00\x00\x00\x00\x51\xec\x6d\x50\x6d\x46\x51\xfa\x51\xf1\x51\xf9\x6d\x41\x00\x00\x6d\x4d\x00\x00\x6d\x44\x51\xf5\x6d\x45\x00\x00\x6c\xfd\x51\xfc\x51\xef\x51\xf8\x51\xee\x00\x00\x6d\x42\x6d\x47\x00\x00\x6d\x4e\x51\xf6\x51\xf3\x6d\x49\x51\xfb\x6d\x4c\x6d\x48\x51\xf0\x51\xfd\x51\xf4\x51\xed\x51\xe9\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6d\x52\x00\x00\x54\x5b\x54\x45\x00\x00\x54\x55\x00\x00\x54\x5a\x6f\x93\x6f\x92\x6f\x97\x6f\x98\x54\x48\x00\x00\x54\x51\x00\x00\x00\x00\x00\x00\x54\x5e\x00\x00", /* 5000 */ "\x54\x52\x00\x00\x00\x00\x00\x00\x00\x00\x6f\x8c\x54\x4b\x6f\x8d\x00\x00\x54\x60\x00\x00\x54\x57\x54\x42\x54\x43\x6f\xa0\x56\xa3\x00\x00\x54\x50\x54\x4f\x6f\x8e\x54\x53\x72\x7f\x54\x4a\x6f\x99\x54\x59\x54\x58\x54\x4e\x6f\x91\x6f\x9a\x00\x00\x6f\x8b\x54\x4d\x6f\x9b\x54\x56\x6f\x8f\x54\x44\x00\x00\x54\x47\x54\x46\x6f\x9c\x54\x54\x54\x49\x54\x5d\x54\x5f\x6f\x96\x54\x5c\x00\x00\x6f\x9e\x6f\x90\x6f\x9f\x00\x00\x6f\x94\x00\x00\x6f\x9d\x00\x00\x6f\x95\x00\x00\x00\x00\x00\x00\x00\x00\x54\x4c\x00\x00\x00\x00\x00\x00\x72\x88\x72\x7b\x00\x00\x56\x97\x00\x00\x72\x81\x72\x87\x56\x96\x72\x79\x56\x9a\x72\x7d\x72\x76\x56\x98\x72\x7a\x56\x9d\x56\xa2\x00\x00\x72\x8c\x00\x00\x72\x75\x00\x00\x56\x9e\x00\x00\x72\x8b\x00\x00\x00\x00\x56\x99\x72\x7c\x56\x95\x72\x77\x72\x73\x72\x82\x72\x74\x72\x72\x72\x7e\x72\x85\x72\x86\x56\x9b\x00\x00\x00\x00\x75\xc0\x72\x83\x72\x71\x72\x84\x00\x00\x56\xa5\x72\x89\x56\xa4\x72\x70\x00\x00\x72\x78\x72\x8a\x56\xa0\x56\x9f\x56\x9c\x56\xa1\x00\x00\x00\x00\x56\x93\x00\x00\x00\x00\x56\x94\x00\x00\x00\x00", /* 5080 */ "\x59\x4e\x00\x00\x75\xc3\x75\xbc\x00\x00\x59\x4b\x00\x00\x75\xc4\x00\x00\x00\x00\x00\x00\x75\xba\x75\xbd\x59\x4a\x75\xbe\x00\x00\x00\x00\x59\x4d\x75\xc2\x00\x00\x75\xb8\x75\xb7\x59\x4f\x00\x00\x59\x50\x59\x4c\x59\x51\x75\xb6\x75\xc1\x75\xbf\x75\xb9\x00\x00\x00\x00\x00\x00\x59\x49\x75\xbb\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5b\xb0\x5b\xaa\x79\x7d\x5b\xb3\x79\x84\x79\x87\x5b\xac\x5b\xad\x79\x81\x5b\xab\x79\x8a\x5b\xb1\x79\x8b\x00\x00\x79\x86\x5b\xb2\x00\x00\x79\x7a\x5b\xaf\x79\x7b\x00\x00\x79\x85\x79\x83\x00\x00\x79\x7e\x5b\xae\x79\x7c\x5b\xb4\x79\x82\x79\x89\x79\x7f\x79\x88\x00\x00\x00\x00\x5d\xfb\x5d\xf8\x00\x00\x5d\xf9\x00\x00\x7d\x43\x7c\xf8\x5d\xf7\x5d\xf4\x7c\xf9\x00\x00\x00\x00\x5d\xf6\x7c\xfc\x00\x00\x7d\x41\x00\x00\x00\x00\x7d\x48\x00\x00\x00\x00\x7d\x47\x7d\x42\x5d\xf3\x7c\xf7\x5d\xf1\x7c\xfa\x5d\xfc\x7c\xfd\x00\x00\x7d\x44\x5d\xf5\x5d\xf2\x7d\x46\x7d\x45\x5d\xfa\x00\x00\x7c\xfb\x00\x00\x60\x42\x80\x76\x00\x00\x80\x73\x60\x43\x00\x00\x60\x41\x00\x00\x80\x7a\x80\x77\x80\x70", /* 5100 */ "\x5f\xfd\x00\x00\x60\x44\x80\x71\x5f\xfc\x60\x47\x80\x74\x80\x75\x60\x45\x60\x46\x80\x7b\x80\x78\x80\x79\x00\x00\x00\x00\x00\x00\x62\x53\x83\xc3\x62\x50\x83\xc0\x62\x52\x62\x54\x00\x00\x83\xc1\x62\x51\x00\x00\x83\xc2\x00\x00\x83\xbf\x00\x00\x00\x00\x63\xc0\x86\xc8\x63\xc1\x86\xc6\x00\x00\x86\xc7\x86\xc5\x86\xc4\x00\x00\x00\x00\x86\xc9\x63\xbf\x00\x00\x00\x00\x89\x65\x89\x66\x00\x00\x80\x72\x89\x64\x63\xc2\x66\x4b\x8b\x5a\x8b\x5b\x00\x00\x67\x83\x67\x84\x8e\x70\x8e\x6f\x67\xd7\x67\xd6\x90\x41\x00\x00\x4c\x4a\x4c\x62\x4c\x99\x00\x00\x4c\x98\x4c\xf2\x4c\xf1\x4d\xbd\x4d\xbc\x4d\xbe\x4d\xbb\x00\x00\x4e\xab\x4e\xaa\x4e\xac\x00\x00\x00\x00\x00\x00\x00\x00\x50\x43\x00\x00\x50\x42\x50\x44\x00\x00\x52\x42\x00\x00\x46\xf1\x6f\xa1\x46\xf2\x56\xa6\x46\xf4\x46\xf3\x75\xc5\x00\x00\x46\xf5\x5d\xfd\x46\xf6\x00\x00\x4c\x4b\x00\x00\x4c\x9a\x4d\xbf\x50\x45\x00\x00\x4c\x4c\x4c\x9d\x4c\x9b\x4c\x9c\x00\x00\x00\x00\x4d\xc0\x00\x00\x00\x00\x00\x00\x4e\xad\x50\x47\x50\x46\x50\x48\x00\x00\x00\x00\x00\x00\x54\x61\x00\x00\x00\x00\x00\x00", /* 5180 */ "\x62\x55\x00\x00\x48\x4d\x00\x00\x00\x00\x00\x00\x00\x00\x69\x4f\x00\x00\x4c\xf3\x4c\xf4\x00\x00\x00\x00\x4d\xc1\x00\x00\x6a\x4c\x00\x00\x52\x44\x52\x43\x6f\xa3\x6f\xa2\x56\xa7\x48\x4e\x4c\x9e\x69\x56\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6b\x6e\x00\x00\x52\x45\x00\x00\x54\x64\x00\x00\x54\x62\x54\x63\x00\x00\x00\x00\x00\x00\x00\x00\x62\x56\x48\x4f\x4c\xf5\x00\x00\x00\x00\x00\x00\x4d\xc2\x69\x9c\x00\x00\x00\x00\x00\x00\x00\x00\x4e\xae\x4e\xaf\x00\x00\x6a\x4d\x00\x00\x00\x00\x6b\x6f\x50\x49\x6b\x70\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6f\xa5\x6f\xa6\x54\x67\x00\x00\x6f\xa7\x00\x00\x6f\xa4\x54\x68\x54\x66\x54\x65\x6f\xa8\x00\x00\x72\x8d\x00\x00\x00\x00\x00\x00\x75\xc6\x00\x00\x00\x00\x79\x8c\x7d\x49\x00\x00\x00\x00\x00\x00\x60\x48\x62\x57\x83\xc4\x00\x00\x4c\x4d\x4c\x5b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x56\xa8\x59\x53\x00\x00\x5e\x41\x00\x00\x69\x43\x4c\x9f\x00\x00\x4c\xf8\x4c\xf6\x4c\xf7\x00\x00\x00\x00\x50\x4a\x00\x00\x00\x00", /* 5200 */ "\x4c\x4e\x4c\x4f\x00\x00\x4c\x63\x00\x00\x00\x00\x4c\xa0\x4c\xa1\x4c\xa2\x69\x9e\x4c\xf9\x00\x00\x69\x6c\x00\x00\x4d\xc6\x00\x00\x69\x9f\x4d\xc4\x4d\xc5\x69\x9d\x00\x00\x00\x00\x4d\xc7\x4d\xc3\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x4e\x51\xce\x6a\x4f\x00\x00\x00\x00\x6a\x50\x00\x00\x00\x00\x4e\xb1\x4e\xb0\x00\x00\x00\x00\x4e\xb4\x4e\xb2\x4e\xb3\x00\x00\x00\x00\x00\x00\x50\x50\x00\x00\x50\x4f\x6b\x75\x6b\x72\x6b\x73\x00\x00\x6b\x71\x50\x51\x50\x4d\x50\x4c\x00\x00\x50\x4e\x50\x4b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x50\x52\x00\x00\x52\x47\x6d\x53\x00\x00\x6b\x74\x52\x4c\x00\x00\x6d\x54\x52\x48\x52\x4b\x52\x4a\x52\x49\x52\x46\x00\x00\x00\x00\x00\x00\x6f\xab\x00\x00\x54\x6b\x6f\xae\x54\x69\x00\x00\x00\x00\x00\x00\x6f\xaa\x54\x6c\x54\x6a\x54\x6d\x6f\xac\x6f\xad\x00\x00\x6f\xa9\x6f\xaf\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x59\x57\x56\xa9\x72\x8e\x72\x90\x72\x8f\x72\x91\x56\xaa\x00\x00\x00\x00\x59\x54\x00\x00\x59\x55\x59\x56\x00\x00\x5b\xb6\x79\x8e\x00\x00\x79\x8d\x79\x8f\x79\x90\x5b\xb7\x00\x00\x5b\xb5", /* 5280 */ "\x7d\x4a\x7d\x4b\x5e\x43\x5e\x42\x7e\xe2\x00\x00\x00\x00\x60\x49\x60\x4a\x60\x4b\x60\x4d\x80\x7c\x80\x7d\x60\x4c\x00\x00\x00\x00\x00\x00\x62\x58\x00\x00\x62\x59\x00\x00\x00\x00\x8b\x5c\x8e\x72\x8e\x71\x90\x42\x00\x00\x4c\x50\x00\x00\x00\x00\x00\x00\x4c\xfb\x4c\xfa\x00\x00\x00\x00\x4d\xc8\x00\x00\x00\x00\x69\xa0\x00\x00\x00\x00\x4e\xb6\x4e\xb7\x4e\xb5\x4e\xb8\x6a\x51\x6a\x52\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x50\x54\x6b\x76\x00\x00\x50\x53\x00\x00\x6d\x55\x52\x50\x6d\x56\x52\x4f\x00\x00\x00\x00\x00\x00\x52\x4d\x00\x00\x52\x4e\x00\x00\x00\x00\x00\x00\x6f\xb0\x00\x00\x00\x00\x00\x00\x00\x00\x56\xab\x72\x93\x00\x00\x56\xae\x72\x92\x57\xaa\x56\xad\x56\xac\x00\x00\x59\x5a\x00\x00\x59\x59\x59\x58\x5b\xb8\x00\x00\x00\x00\x5b\xbb\x5b\xbc\x5b\xba\x00\x00\x5b\xb9\x00\x00\x00\x00\x7d\x4c\x00\x00\x7d\x4d\x00\x00\x00\x00\x00\x00\x80\x7f\x60\x4e\x80\x7e\x00\x00\x62\x5a\x86\xca\x63\xc3\x00\x00\x8b\x5d\x66\xdf\x48\x54\x4c\x64\x4c\xa3\x69\x57\x00\x00\x4c\xa4\x4c\xa5", /* 5300 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4c\xfc\x4c\xfd\x00\x00\x4d\xc9\x6a\x53\x6b\x77\x6b\x78\x00\x00\x52\x51\x6f\xb1\x56\xb0\x56\xaf\x75\xc8\x75\xc7\x00\x00\x00\x00\x4c\x51\x4c\xa6\x4d\x41\x00\x00\x56\xb1\x69\x44\x00\x00\x69\x6d\x4d\x42\x00\x00\x69\xa2\x4d\xcb\x4d\xca\x69\xa1\x4e\xb9\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x54\x6e\x00\x00\x00\x00\x72\x94\x00\x00\x5b\xbd\x7d\x4e\x5e\x44\x00\x00\x00\x00\x83\xc5\x00\x00\x00\x00\x8c\xeb\x48\x57\x4c\xa7\x00\x00\x00\x00\x6b\x79\x6d\x57\x56\xb4\x56\xb2\x56\xb3\x4c\x52\x00\x00\x4c\x65\x45\x4b\x4c\xaa\x00\x00\x4c\xa9\x4c\xa8\x4d\x45\x4d\x44\x00\x00\x69\x6e\x69\xa3\x00\x00\x00\x00\x00\x00\x50\x58\x50\x55\x50\x57\x50\x56\x00\x00\x00\x00\x52\x52\x00\x00\x00\x00\x59\x5b\x00\x00\x4c\x53\x00\x00\x4c\xab\x00\x00\x4d\x47\x4d\x46\x00\x00\x6a\x54\x00\x00\x00\x00\x50\x59\x00\x00\x00\x00\x48\x5a\x00\x00\x00\x00\x69\x58\x00\x00\x4d\x49\x4d\x48\x4d\xcc\x4d\xcd\x6a\x55\x4e\xba\x00\x00\x4e\xbb\x00\x00\x50\x5a\x50\x5b\x50\x5c\x00\x00\x52\x53\x6d\x58\x00\x00\x00\x00\x54\x6f", /* 5380 */ "\x00\x00\x00\x00\x69\x45\x00\x00\x4c\xac\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x69\xa4\x00\x00\x00\x00\x00\x00\x6a\x56\x6a\x57\x00\x00\x00\x00\x6b\x7a\x00\x00\x6b\x7b\x00\x00\x6d\x5a\x6d\x59\x6d\x5c\x6d\x5b\x52\x54\x00\x00\x72\x95\x54\x71\x6f\xb2\x54\x70\x00\x00\x00\x00\x00\x00\x00\x00\x75\xc9\x59\x5c\x00\x00\x75\xca\x00\x00\x00\x00\x00\x00\x00\x00\x7d\x4f\x5e\x45\x00\x00\x00\x00\x00\x00\x00\x00\x60\x4f\x00\x00\x8b\x5e\x00\x00\x48\x5c\x00\x00\x00\x00\x69\x59\x00\x00\x4d\x4a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x56\xb5\x00\x00\x00\x00\x00\x00\x00\x00\x4c\x54\x4c\x66\x4c\xae\x4c\xad\x00\x00\x4c\xaf\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x50\x5e\x00\x00\x50\x5d\x50\x5f\x00\x00\x00\x00\x00\x00\x52\x55\x00\x00\x00\x00\x00\x00\x54\x72\x00\x00\x83\xc6\x65\x5a\x4c\x67\x4d\x4c\x4d\x5b\x4d\x56\x00\x00\x4d\x51\x4d\x50\x4d\x57\x4d\x55\x4d\x4e\x4d\x5c\x4d\x4f\x4d\x4b\x4d\x5a\x4d\x59\x4d\x58\x4d\x4d\x00\x00\x4d\x54\x00\x00\x00\x00\x4d\x53\x00\x00\x00\x00\x4d\x5d\x4d\x52\x00\x00\x00\x00\x00\x00", /* 5400 */ "\x00\x00\x4d\xd3\x00\x00\x4d\xd9\x4d\xd5\x00\x00\x4d\xdb\x69\xa5\x4d\xd8\x4d\xce\x4d\xd1\x4d\xd4\x4d\xd0\x4d\xd7\x4d\xda\x4d\xcf\x4d\xd2\x4d\xd6\x4d\xdc\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x60\x6a\x5d\x00\x00\x4e\xc8\x6a\x5e\x4e\xbc\x4e\xbe\x4e\xd6\x4e\xd1\x00\x00\x00\x00\x00\x00\x6a\x65\x6a\x5f\x4e\xc0\x4e\xc2\x6a\x64\x4e\xc9\x6a\x5a\x4e\xd5\x4e\xd7\x4e\xbd\x4e\xce\x00\x00\x6a\x58\x4e\xd4\x00\x00\x4e\xc5\x00\x00\x4e\xcf\x4e\xd0\x6a\x59\x4e\xcd\x4e\xcb\x00\x00\x4e\xcc\x4e\xd2\x6a\x61\x4e\xbf\x00\x00\x4e\xd3\x6a\x63\x4e\xc7\x4e\xc4\x00\x00\x6a\x5c\x4e\xc3\x6a\x66\x4e\xc6\x00\x00\x4e\xca\x00\x00\x00\x00\x00\x00\x4e\xc1\x6a\x62\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x5b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6b\x8d\x6b\x8c\x50\x71\x6b\x8f\x6b\x91\x6b\x86\x6b\x89\x6b\x90\x50\x72\x00\x00\x00\x00\x6b\x83\x6b\x87\x00\x00\x00\x00\x6b\x8b\x6d\x6b\x50\x6d\x6d\x6f\x50\x60\x6b\x88\x50\x61\x50\x6e\x50\x67\x50\x63\x00\x00\x6b\x84\x50\x66\x50\x6b\x50\x74\x6b\x85\x6b\x7d", /* 5480 */ "\x50\x65\x6b\x7e\x6b\x81\x00\x00\x50\x68\x00\x00\x50\x6a\x6b\x7c\x6b\x82\x00\x00\x00\x00\x50\x73\x50\x6f\x6b\x8a\x50\x75\x00\x00\x50\x6c\x6b\x7f\x50\x69\x00\x00\x00\x00\x50\x64\x50\x62\x00\x00\x6b\x8e\x00\x00\x50\x70\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6d\x6a\x6d\x5e\x6d\x6d\x00\x00\x00\x00\x6d\x60\x52\x5c\x52\x6a\x52\x58\x52\x69\x52\x61\x52\x66\x52\x56\x6d\x5f\x6d\x65\x52\x65\x6d\x71\x52\x67\x00\x00\x52\x5d\x00\x00\x00\x00\x6d\x67\x6d\x64\x52\x5b\x00\x00\x6d\x5d\x52\x68\x6d\x6c\x52\x60\x6d\x6e\x52\x6b\x52\x57\x52\x62\x52\x5f\x6d\x62\x52\x63\x6d\x68\x6d\x69\x52\x5e\x52\x64\x52\x5a\x00\x00\x00\x00\x00\x00\x00\x00\x52\x59\x6d\x61\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6d\x66\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6d\x70\x00\x00\x6f\xc6\x54\x7f\x6f\xb4\x00\x00\x6f\xb9\x54\x78\x54\x84\x6f\xb7\x54\x73\x54\x7d\x54\x83\x6f\xbe\x00\x00\x54\x7e\x54\x82\x00\x00\x00\x00\x6f\xc1\x54\x79\x6f\xb8\x00\x00\x00\x00\x00\x00\x6f\xc4\x6f\xc5\x00\x00\x54\x7b\x6f\xc3\x54\x77\x54\x87\x00\x00\x6f\xbb", /* 5500 */ "\x00\x00\x54\x75\x00\x00\x6f\xc8\x6f\xbc\x6f\xc0\x54\x7a\x54\x86\x6f\xbd\x54\x81\x6f\xc2\x6f\xc9\x72\xa4\x00\x00\x6f\xc7\x54\x88\x54\x74\x6f\xbf\x6f\xb6\x00\x00\x54\x7c\x00\x00\x00\x00\x6f\xb5\x00\x00\x00\x00\x6f\xba\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6f\xb3\x54\x85\x00\x00\x00\x00\x72\x9c\x00\x00\x56\xc8\x72\xaa\x56\xc6\x56\xc3\x72\xa1\x56\xbf\x72\xa5\x56\xca\x72\x9b\x72\xa0\x72\x9f\x54\x76\x56\xc5\x72\xa8\x00\x00\x72\xab\x72\x98\x00\x00\x59\x6e\x00\x00\x72\xac\x56\xcb\x00\x00\x56\xbd\x56\xba\x72\xa3\x56\xb7\x00\x00\x72\xa9\x00\x00\x56\xbe\x72\xad\x00\x00\x72\x99\x72\xa7\x56\xc1\x72\x9a\x72\x9d\x72\xa2\x00\x00\x00\x00\x56\xc2\x56\xc0\x56\xcc\x00\x00\x00\x00\x00\x00\x00\x00\x56\xc7\x00\x00\x56\xbb\x57\x97\x00\x00\x56\xbc\x72\x9e\x56\xc9\x56\xc4\x72\xa6\x56\xb9\x00\x00\x00\x00\x00\x00\x56\xb8\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x72\x96\x72\x97\x75\xcf\x00\x00\x00\x00\x00\x00\x59\x5d\x59\x60\x75\xda\x59\x74\x75\xdd", /* 5580 */ "\x59\x5e\x75\xd6\x59\x64\x59\x6a\x5a\xc2\x00\x00\x00\x00\x59\x68\x75\xd3\x59\x75\x59\x61\x59\x69\x75\xdb\x79\x9e\x75\xe0\x75\xd4\x00\x00\x75\xcb\x75\xd8\x75\xd2\x59\x67\x75\xde\x00\x00\x00\x00\x59\x63\x59\x77\x59\x70\x00\x00\x59\x65\x59\x62\x00\x00\x59\x6d\x00\x00\x75\xdf\x75\xd1\x75\xd7\x75\xd9\x75\xcd\x75\xdc\x59\x5f\x75\xcc\x00\x00\x59\x66\x59\x76\x59\x72\x75\xce\x59\x6c\x00\x00\x00\x00\x59\x73\x59\x6f\x59\x6b\x00\x00\x75\xd5\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x59\x71\x00\x00\x00\x00\x00\x00\x79\x9c\x79\x98\x00\x00\x79\xa7\x79\x91\x79\x9a\x5b\xcb\x5b\xcc\x5b\xc4\x79\xa3\x5b\xce\x79\x96\x79\x95\x79\x93\x79\xa5\x5b\xc2\x79\x9f\x79\x94\x5b\xc5\x79\x9d\x5b\xc0\x79\x99\x79\xa0\x79\xa2\x00\x00\x00\x00\x79\xa6\x5b\xc9\x79\x92\x5b\xc3\x79\x97\x00\x00\x5b\xbe\x00\x00\x5b\xca\x79\xa1\x5b\xc6\x5b\xc7\x5b\xcd\x5b\xc1\x46\xf7\x5b\xbf\x79\x9b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5b\xc8\x00\x00\x00\x00\x79\xa4\x00\x00\x00\x00\x00\x00\x5e\x55\x5e\x50\x00\x00\x7d\x5e\x7d\x5a\x00\x00\x7d\x54\x5e\x4a\x5e\x46\x7d\x5d", /* 5600 */ "\x5e\x47\x7d\x57\x7d\x59\x00\x00\x7d\x5c\x00\x00\x5e\x4c\x00\x00\x5e\x53\x5e\x4d\x00\x00\x00\x00\x7d\x52\x5e\x4e\x5e\x4f\x7d\x55\x5e\x54\x00\x00\x7d\x53\x7d\x58\x5e\x4b\x7d\x51\x5e\x51\x5e\x49\x00\x00\x00\x00\x00\x00\x5e\x48\x7d\x56\x7d\x5b\x00\x00\x5e\x52\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7d\x50\x00\x00\x60\x56\x80\x91\x00\x00\x80\x8e\x00\x00\x60\x50\x60\x5c\x60\x5d\x00\x00\x60\x53\x80\x8c\x60\x55\x80\x84\x60\x5b\x00\x00\x80\x90\x60\x52\x80\x92\x60\x51\x00\x00\x80\x8d\x80\x8f\x60\x54\x80\x8b\x80\x85\x80\x82\x00\x00\x00\x00\x75\xd0\x80\x88\x00\x00\x80\x81\x80\x87\x80\x86\x00\x00\x80\x83\x00\x00\x60\x58\x00\x00\x00\x00\x00\x00\x00\x00\x60\x57\x00\x00\x00\x00\x00\x00\x60\x59\x80\x89\x62\x5b\x80\x8a\x00\x00\x00\x00\x00\x00\x83\xcf\x00\x00\x83\xc8\x00\x00\x62\x67\x83\xcc\x62\x5f\x62\x63\x83\xcb\x00\x00\x62\x62\x62\x5e\x62\x61\x62\x5c\x62\x66\x83\xcd\x83\xc9\x62\x65\x83\xc7\x62\x64\x83\xce\x83\xca\x60\x5a\x00\x00\x62\x68\x83\xd0\x62\x60\x62\x5d\x00\x00\x00\x00\x00\x00\x00\x00\x86\xd1\x86\xd3", /* 5680 */ "\x63\xc5\x86\xd4\x86\xd2\x86\xd0\x86\xcf\x63\xc7\x86\xce\x63\xc8\x00\x00\x00\x00\x00\x00\x00\x00\x86\xcc\x86\xcd\x63\xc4\x63\xc9\x63\xc6\x00\x00\x00\x00\x86\xcb\x00\x00\x65\x5b\x00\x00\x89\x69\x89\x67\x89\x6c\x89\x6a\x00\x00\x89\x68\x89\x6b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x66\x4c\x8b\x61\x8b\x62\x66\xe0\x00\x00\x8b\x63\x8b\x5f\x8b\x64\x8b\x60\x65\x5c\x00\x00\x00\x00\x00\x00\x8c\xec\x8c\xee\x66\xe3\x8c\xed\x66\xe2\x66\xe1\x00\x00\x00\x00\x00\x00\x00\x00\x66\xe4\x8e\x74\x8e\x75\x00\x00\x67\x86\x67\x85\x67\x87\x8e\x73\x00\x00\x8f\x68\x8f\x67\x00\x00\x67\xd8\x67\xda\x67\xd9\x8f\x69\x68\x54\x90\xb5\x00\x00\x00\x00\x00\x00\x68\x7d\x00\x00\x90\xb4\x90\xfd\x00\x00\x00\x00\x69\x4a\x00\x00\x00\x00\x4d\x5f\x4d\x5e\x00\x00\x4d\xdf\x4d\xde\x69\xa7\x4d\xdd\x69\xa6\x00\x00\x00\x00\x4e\xda\x6a\x69\x00\x00\x6a\x68\x00\x00\x00\x00\x4e\xd8\x4e\xdb\x00\x00\x00\x00\x6a\x67\x00\x00\x4e\xd9\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6b\x92\x00\x00\x6b\x93\x50\x76\x00\x00\x00\x00\x00\x00\x00\x00\x52\x6c", /* 5700 */ "\x00\x00\x6f\xca\x6f\xcb\x54\x89\x54\x8a\x00\x00\x00\x00\x72\xaf\x56\xcd\x56\xcf\x72\xae\x56\xce\x75\xe1\x59\x78\x00\x00\x00\x00\x00\x00\x00\x00\x5b\xcf\x5b\xd0\x79\xa8\x00\x00\x5e\x57\x00\x00\x5e\x56\x00\x00\x80\x93\x83\xd2\x83\xd1\x00\x00\x91\x7c\x4c\x68\x69\x5a\x00\x00\x69\x6f\x69\x70\x00\x00\x00\x00\x00\x00\x00\x00\x4d\xe2\x4d\xe6\x69\xa9\x00\x00\x4d\xe4\x4d\xe3\x69\xa8\x4d\xe5\x4d\xe1\x00\x00\x00\x00\x4d\xe0\x69\xaa\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4e\xe5\x00\x00\x00\x00\x4e\xe2\x00\x00\x4e\xde\x6a\x6a\x00\x00\x00\x00\x00\x00\x6a\x6b\x00\x00\x4e\xe0\x00\x00\x6a\x6d\x4e\xdc\x6a\x6e\x6a\x6c\x4e\xdf\x4e\xe1\x4e\xe4\x4e\xe3\x4e\xdd\x6a\x6f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x50\x7b\x6b\xa0\x00\x00\x50\x7d\x00\x00\x50\x7c\x00\x00\x6b\xa1\x50\x7a\x50\x79\x6b\x97\x00\x00\x6b\x96\x00\x00\x6b\x94\x6b\x99\x6b\x98\x6b\x95\x6b\x9e\x6b\x9f\x6b\x9c\x6b\x9a\x50\x78\x00\x00\x00\x00\x00\x00\x6b\x9d\x50\x7e\x6b\xa2\x00\x00\x00\x00", /* 5780 */ "\x6b\x9b\x00\x00\x52\x6d\x50\x77\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x52\x6e\x6d\x76\x00\x00\x00\x00\x6d\x7c\x00\x00\x00\x00\x00\x00\x52\x74\x6d\x7a\x6d\x81\x00\x00\x6d\x77\x6d\x7b\x6d\x7d\x6d\x7f\x6d\x79\x00\x00\x6d\x78\x6d\x73\x6d\x74\x52\x6f\x00\x00\x52\x71\x52\x70\x6d\x75\x6d\x7e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x52\x73\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6d\x72\x6f\xd5\x00\x00\x6f\xd4\x6f\xd9\x6f\xd0\x00\x00\x6f\xd3\x6f\xd2\x00\x00\x6f\xd6\x00\x00\x6f\xda\x54\x8b\x54\x8e\x00\x00\x00\x00\x6f\xd1\x6f\xd7\x00\x00\x00\x00\x00\x00\x54\x8d\x6f\xcc\x00\x00\x52\x72\x72\xbd\x6f\xd8\x00\x00\x6f\xcf\x00\x00\x54\x8c\x6f\xce\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x72\xb4\x00\x00\x00\x00\x56\xd0\x56\xd4\x72\xc4\x72\xb2\x72\xc0\x56\xd5\x72\xc2\x00\x00\x72\xc8\x00\x00\x72\xcc\x00\x00\x00\x00\x72\xc3\x72\xb7\x72\xbf\x00\x00\x72\xcd\x72\xcb\x72\xc1\x72\xbc\x72\xb5\x75\xe9\x72\xb3\x56\xd9\x72\xba\x56\xda\x56\xd6\x72\xb0\x72\xc6\x72\xb8\x00\x00\x00\x00", /* 5800 */ "\x72\xb6\x72\xc9\x56\xd7\x00\x00\x72\xcf\x56\xd1\x56\xd3\x72\xbe\x72\xb9\x54\x8f\x56\xd2\x72\xbb\x72\xca\x72\xce\x72\xc5\x00\x00\x72\xc7\x00\x00\x00\x00\x00\x00\x72\xb1\x00\x00\x00\x00\x00\x00\x00\x00\x75\xe4\x00\x00\x75\xed\x75\xec\x59\x81\x75\xe5\x00\x00\x59\x82\x59\x7f\x00\x00\x75\xe7\x59\x7c\x75\xeb\x00\x00\x75\xe6\x75\xe8\x75\xe2\x59\x7a\x00\x00\x75\xf5\x75\xf4\x75\xf1\x59\x79\x59\x7d\x59\x7e\x6f\xcd\x75\xee\x59\x7b\x56\xd8\x75\xf0\x75\xe3\x75\xf3\x75\xf2\x00\x00\x75\xf6\x00\x00\x79\xb6\x00\x00\x75\xef\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x75\xea\x79\xae\x5b\xda\x5b\xdd\x5b\xd8\x79\xad\x79\xb1\x79\xac\x00\x00\x5b\xd2\x5b\xdc\x79\xa9\x5b\xd6\x79\xb0\x00\x00\x5b\xd4\x5b\xd3\x79\xb3\x5b\xd5\x79\xb5\x00\x00\x79\xb2\x5b\xd1\x00\x00\x00\x00\x00\x00\x5b\xdb\x79\xb7\x79\xab\x79\xb4\x00\x00\x00\x00\x79\xaa\x00\x00\x00\x00\x5b\xd7\x00\x00\x5b\xd9\x00\x00\x79\xaf\x00\x00\x79\xb8\x00\x00\x00\x00\x7d\x66\x5e\x58\x7d\x6c\x00\x00\x00\x00\x5e\x5d\x7d\x68\x7d\x6f\x7d\x60\x5e\x5f\x5e\x59\x7d\x65", /* 5880 */ "\x60\x5e\x7d\x64\x7d\x6d\x5e\x5a\x00\x00\x5e\x5e\x7d\x63\x7d\x69\x7d\x6e\x7d\x5f\x5e\x5c\x7d\x67\x00\x00\x00\x00\x7d\x6b\x7d\x71\x7d\x61\x7d\x6a\x00\x00\x5e\x5b\x7d\x70\x00\x00\x00\x00\x00\x00\x7d\x62\x00\x00\x00\x00\x00\x00\x60\x62\x80\x95\x60\x60\x60\x5f\x80\x97\x80\x9c\x00\x00\x80\x98\x00\x00\x80\x9b\x60\x65\x00\x00\x62\x4e\x60\x64\x00\x00\x80\x94\x80\x9a\x00\x00\x60\x63\x80\x99\x00\x00\x80\x96\x00\x00\x60\x61\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x83\xd7\x00\x00\x83\xd9\x83\xd4\x62\x6a\x83\xd6\x00\x00\x62\x69\x83\xd8\x00\x00\x00\x00\x62\x6c\x83\xda\x62\x6b\x83\xd3\x83\xd5\x00\x00\x00\x00\x00\x00\x00\x00\x63\xcd\x86\xd7\x00\x00\x63\xcc\x86\xd8\x63\xcb\x86\xd6\x63\xca\x86\xd5\x00\x00\x65\x5e\x65\x5d\x8b\x65\x8b\x67\x00\x00\x8b\x66\x66\x4d\x66\x4e\x00\x00\x00\x00\x66\x4f\x8c\xef\x66\xe5\x00\x00\x00\x00\x90\x44\x90\x43\x68\x7e\x00\x00\x4c\x69\x4c\xb0\x00\x00\x00\x00\x4e\xe6\x00\x00\x00\x00\x00\x00\x00\x00\x6d\x82\x00\x00\x00\x00\x00\x00\x00\x00\x59\x83\x59\x84\x00\x00\x79\xb9\x5e\x60\x7d\x72\x80\x9d", /* 5900 */ "\x00\x00\x00\x00\x00\x00\x69\x5b\x00\x00\x00\x00\x6a\x70\x00\x00\x00\x00\x00\x00\x48\x62\x00\x00\x6b\xa3\x6d\x83\x6f\xdb\x54\x90\x00\x00\x00\x00\x8b\x68\x00\x00\x67\x88\x4c\x6a\x4d\x60\x69\x71\x00\x00\x4d\xe7\x4d\xe8\x00\x00\x50\x7f\x00\x00\x00\x00\x00\x00\x56\xdb\x00\x00\x5e\x62\x00\x00\x5e\x63\x5e\x61\x00\x00\x4c\x6b\x00\x00\x4c\xb1\x4c\xb3\x4c\xb2\x69\x5c\x4c\xb4\x4d\x61\x69\x72\x00\x00\x4d\x62\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4d\xe9\x4d\xea\x00\x00\x00\x00\x00\x00\x69\xab\x00\x00\x4e\xe7\x00\x00\x6a\x71\x00\x00\x00\x00\x00\x00\x50\x84\x6b\xa4\x00\x00\x50\x82\x50\x83\x50\x81\x6f\xdc\x00\x00\x00\x00\x00\x00\x52\x78\x52\x77\x52\x79\x52\x76\x00\x00\x6d\x84\x50\x85\x52\x75\x00\x00\x54\x91\x54\x92\x00\x00\x54\x93\x00\x00\x72\xd0\x00\x00\x00\x00\x00\x00\x59\x85\x75\xf7\x56\xdc\x00\x00\x00\x00\x00\x00\x00\x00\x5b\xde\x00\x00\x5e\x65\x5e\x64\x7d\x73\x00\x00\x60\x66\x62\x6d\x00\x00\x89\x6d\x8f\x6a\x90\x45\x4c\x6c\x4d\x63\x00\x00\x4d\x64\x69\xb1\x4d\xec\x4d\xef\x00\x00\x69\xaf\x69\xad\x4d\xee\x69\xb0\x69\xb2", /* 5980 */ "\x69\xac\x4d\xf1\x4d\xf0\x4d\xed\x4d\xeb\x69\xae\x00\x00\x00\x00\x00\x00\x00\x00\x4e\xf2\x00\x00\x00\x00\x4e\xef\x6a\x76\x6a\x79\x6a\x78\x00\x00\x4e\xe9\x4e\xf1\x00\x00\x00\x00\x4e\xee\x6a\x75\x6a\x73\x4e\xed\x00\x00\x00\x00\x00\x00\x4e\xe8\x4e\xeb\x00\x00\x6a\x74\x6a\x7b\x6a\x77\x4e\xec\x4e\xf0\x4e\xf3\x6a\x72\x6a\x7a\x4e\xea\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x50\x8a\x50\x92\x00\x00\x6b\xb0\x6b\xa9\x50\x93\x6b\xb4\x6b\xa5\x6b\xac\x00\x00\x00\x00\x50\x89\x6b\xa6\x50\x87\x6b\xad\x6b\xb1\x50\x86\x00\x00\x6b\xb2\x6b\xab\x00\x00\x6b\xae\x00\x00\x50\x95\x50\x8c\x6b\xb5\x6b\xb3\x00\x00\x50\x91\x50\x8f\x6b\xaa\x50\x8e\x6b\xa8\x6b\xa7\x50\x8d\x50\x8b\x50\x94\x50\x90\x50\x88\x00\x00\x6b\xaf\x00\x00\x52\x7b\x00\x00\x52\x83\x6d\x92\x52\x7a\x6d\x8a\x6d\x86\x00\x00\x6d\x96\x6d\x85\x00\x00\x52\x7d\x6d\x8f\x52\x81\x52\x84\x00\x00\x52\x7e\x6d\x93\x52\x82\x00\x00\x54\x9a\x6d\x99\x6d\x87\x00\x00\x00\x00\x6d\x89\x6d\x90\x6d\x94\x6d\x98\x6d\x95\x6d\x8e\x6d\x91\x00\x00\x00\x00\x6d\x8b\x52\x86\x6d\x8d\x6d\x8c\x6d\x97\x52\x7c", /* 5a00 */ "\x6d\x88\x52\x85\x00\x00\x52\x7f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x54\xa0\x6f\xe4\x00\x00\x54\x9f\x00\x00\x00\x00\x6f\xe2\x00\x00\x54\x94\x00\x00\x54\x99\x00\x00\x6f\xe1\x6f\xde\x6f\xe3\x54\x95\x6f\xdd\x00\x00\x54\x98\x54\x96\x00\x00\x6f\xe5\x54\x97\x54\x9b\x00\x00\x00\x00\x54\x9c\x00\x00\x54\x9e\x00\x00\x00\x00\x00\x00\x54\x9d\x00\x00\x00\x00\x00\x00\x6f\xdf\x6f\xe0\x00\x00\x00\x00\x00\x00\x00\x00\x6f\xe6\x00\x00\x72\xd7\x56\xdd\x76\x48\x72\xd6\x72\xe9\x00\x00\x00\x00\x56\xe3\x00\x00\x72\xe7\x00\x00\x56\xe2\x56\xde\x72\xf0\x72\xe0\x72\xe3\x00\x00\x56\xe6\x72\xed\x72\xe5\x56\xdf\x56\xe7\x00\x00\x72\xea\x72\xe8\x00\x00\x00\x00\x72\xd9\x72\xee\x72\xe2\x72\xdd\x00\x00\x72\xd3\x72\xef\x72\xdf\x72\xd2\x00\x00\x56\xe5\x72\xe4\x72\xf1\x72\xe1\x72\xd5\x72\xda\x72\xd1\x00\x00\x56\xe4\x00\x00\x72\xde\x72\xdb\x56\xe0\x72\xd4\x00\x00\x72\xec\x56\xe1\x00\x00\x72\xdc\x72\xd8\x00\x00\x00\x00\x72\xeb\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x59\x86\x76\x41\x00\x00\x75\xfb\x76\x4f\x76\x43\x76\x50\x00\x00\x59\x88", /* 5a80 */ "\x00\x00\x00\x00\x00\x00\x76\x4c\x76\x49\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x76\x4a\x76\x4d\x76\x51\x00\x00\x72\xe6\x76\x53\x79\xcd\x00\x00\x59\x89\x76\x54\x75\xf9\x76\x46\x00\x00\x76\x4b\x00\x00\x00\x00\x59\x87\x59\x8a\x76\x52\x76\x55\x75\xfd\x75\xfa\x00\x00\x00\x00\x75\xfc\x00\x00\x00\x00\x76\x44\x76\x42\x59\x8b\x00\x00\x76\x4e\x00\x00\x00\x00\x76\x45\x00\x00\x76\x47\x75\xf8\x79\xc1\x79\xbf\x5b\xe7\x5b\xe5\x79\xc9\x79\xc0\x79\xca\x79\xc6\x79\xbe\x79\xcc\x79\xbd\x79\xc4\x5b\xe4\x5b\xe3\x5b\xe2\x79\xc2\x79\xc7\x5b\xdf\x5b\xe6\x00\x00\x79\xbb\x00\x00\x79\xc5\x79\xba\x79\xc3\x5b\xe0\x79\xc8\x79\xbc\x5b\xe1\x79\xcb\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7d\x77\x5e\x6a\x5e\x69\x5e\x6b\x7d\x84\x7d\x79\x7d\x7f\x7d\x74\x7d\x83\x7d\x82\x7d\x86\x7d\x7e\x5e\x66\x7d\x7d\x5e\x6c\x00\x00\x7d\x76\x5e\x67\x00\x00\x7d\x85\x5e\x68\x7d\x78\x7d\x7b\x7d\x81\x7d\x7a\x7d\x75\x00\x00\x00\x00\x00\x00\x00\x00\x7d\x7c\x80\x9f\x60\x6a\x80\xa2\x80\xa1\x80\xa4\x80\xa6\x00\x00\x60\x68\x00\x00\x80\xa0\x00\x00\x80\x9e", /* 5b00 */ "\x00\x00\x80\xa7\x80\xa5\x80\xa3\x00\x00\x80\xa9\x00\x00\x80\xa8\x60\x6c\x60\x67\x00\x00\x60\x69\x60\x6b\x00\x00\x00\x00\x80\xaa\x83\xe1\x00\x00\x00\x00\x83\xe0\x83\xdf\x00\x00\x83\xe2\x83\xdb\x00\x00\x83\xdc\x83\xe4\x83\xdd\x00\x00\x62\x6e\x83\xe6\x00\x00\x83\xe5\x83\xde\x00\x00\x86\xdc\x63\xd0\x86\xda\x86\xdf\x86\xde\x83\xe3\x00\x00\x63\xcf\x00\x00\x86\xdd\x86\xd9\x86\xe1\x86\xe0\x63\xce\x00\x00\x86\xdb\x00\x00\x62\x6f\x00\x00\x00\x00\x00\x00\x65\x5f\x00\x00\x00\x00\x00\x00\x89\x6e\x8b\x69\x8b\x6a\x8b\x6b\x66\xe6\x00\x00\x00\x00\x66\xe7\x00\x00\x8c\xf0\x00\x00\x8e\x77\x8e\x76\x00\x00\x00\x00\x8f\x6b\x8f\x6c\x90\x46\x90\xb6\x00\x00\x4c\x6d\x4c\x6e\x00\x00\x4c\x6f\x4c\xb5\x4d\x65\x69\xb3\x4d\xf2\x4d\xf3\x00\x00\x4e\xf6\x4e\xf7\x4e\xf5\x4e\xf4\x00\x00\x50\x96\x00\x00\x00\x00\x6b\xb6\x50\x98\x50\x97\x6b\xb7\x00\x00\x00\x00\x00\x00\x52\x87\x00\x00\x54\xa1\x6f\xe7\x00\x00\x72\xf3\x00\x00\x56\xe8\x59\x8d\x72\xf2\x59\x8c\x00\x00\x5e\x6d\x00\x00\x7d\x87\x62\x70\x00\x00\x63\xd1\x86\xe2\x00\x00\x66\xe8\x00\x00\x67\xdb", /* 5b80 */ "\x48\x67\x69\x73\x00\x00\x4d\x66\x69\x74\x4d\xf6\x00\x00\x4d\xf4\x4d\xf5\x4d\xf7\x00\x00\x4e\xf9\x4e\xf8\x00\x00\x6a\x7c\x4e\xfa\x00\x00\x00\x00\x6a\x7d\x6b\xb8\x00\x00\x6b\xb9\x00\x00\x50\x99\x50\x9b\x50\x9d\x50\x9a\x50\x9e\x50\x9c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x52\x8b\x52\x88\x52\x8a\x52\x8c\x52\x89\x6f\xe8\x6d\x9a\x00\x00\x00\x00\x00\x00\x6f\xea\x6f\xe9\x54\xa7\x00\x00\x54\xa3\x00\x00\x00\x00\x54\xa4\x54\xa6\x54\xa8\x54\xa5\x00\x00\x54\xaa\x54\xa9\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x56\xed\x72\xf5\x72\xf4\x56\xec\x00\x00\x56\xeb\x56\xea\x56\xee\x56\xe9\x00\x00\x00\x00\x76\x5b\x76\x58\x59\x8f\x76\x57\x76\x5c\x00\x00\x59\x91\x76\x5a\x59\x8e\x59\x90\x76\x59\x00\x00\x79\xce\x00\x00\x79\xcf\x79\xd0\x00\x00\x00\x00\x00\x00\x00\x00\x5e\x6e\x5e\x76\x7d\x88\x5e\x70\x5e\x74\x7d\x89\x5e\x75\x5e\x71\x5e\x72\x5e\x6f\x5e\x73\x60\x6f\x76\x56\x60\x70\x60\x6e\x00\x00\x60\x6d\x83\xe7\x62\x71\x86\xe3\x86\xe4\x00\x00\x00\x00\x66\x50\x66\xe9\x00\x00\x4c\x70\x00\x00\x4d\xf8\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 5c00 */ "\x00\x00\x52\x8d\x00\x00\x6f\xeb\x54\xab\x00\x00\x00\x00\x56\xf1\x56\xf0\x56\xef\x59\x92\x59\x93\x76\x5d\x5e\x77\x62\x72\x4c\x71\x69\x5d\x4c\xb6\x69\x75\x00\x00\x00\x00\x69\xb4\x4d\xf9\x00\x00\x00\x00\x00\x00\x50\x9f\x00\x00\x00\x00\x00\x00\x00\x00\x79\xd1\x00\x00\x00\x00\x4c\x72\x00\x00\x4c\xb7\x69\xb5\x00\x00\x00\x00\x6a\x7e\x00\x00\x6a\x7f\x00\x00\x4e\xfb\x00\x00\x00\x00\x00\x00\x76\x5e\x59\x94\x00\x00\x79\xd2\x00\x00\x00\x00\x00\x00\x63\xd2\x4c\x73\x4c\x88\x4c\xb8\x69\x76\x4d\x67\x00\x00\x4f\x42\x4f\x41\x4e\xfc\x4e\xfd\x00\x00\x00\x00\x6b\xba\x50\xa1\x50\xa2\x6b\xbb\x50\xa0\x00\x00\x00\x00\x52\x91\x6d\x9b\x52\x90\x52\x8e\x52\x8f\x54\xae\x54\xac\x00\x00\x00\x00\x6f\xed\x54\xad\x6f\xec\x00\x00\x54\xa2\x72\xf6\x00\x00\x00\x00\x56\xf3\x56\xf4\x00\x00\x00\x00\x56\xf2\x00\x00\x5e\x78\x7d\x8a\x60\x71\x60\x72\x00\x00\x80\xab\x63\xd3\x89\x6f\x89\x70\x00\x00\x67\x89\x90\xb7\x69\x4c\x4c\xb9\x00\x00\x4c\x74\x00\x00\x69\x78\x69\x77\x00\x00\x00\x00\x00\x00\x00\x00\x4d\xfa\x69\xb7\x69\xb8\x69\xb6\x00\x00\x69\xb9\x00\x00", /* 5c80 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x88\x00\x00\x6a\x83\x6a\x85\x6a\x87\x6a\x84\x4f\x46\x6a\x81\x00\x00\x6a\x82\x4f\x43\x4f\x44\x6a\x86\x6a\x89\x4f\x45\x6a\x8a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6b\xc9\x00\x00\x6b\xc3\x6b\xbe\x50\xa4\x6b\xc6\x6b\xc4\x6b\xbd\x6b\xca\x6b\xcd\x6b\xc8\x6b\xc1\x50\xa6\x6b\xc7\x50\xa7\x6b\xc2\x6b\xc5\x6b\xbc\x6b\xc0\x6b\xcc\x50\xa8\x00\x00\x50\xa9\x00\x00\x6b\xbf\x6b\xcb\x50\xa3\x50\xa5\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6d\xac\x6d\xa5\x6d\xab\x6d\xa4\x6d\xa6\x6d\xa0\x6d\x9e\x00\x00\x6d\xad\x6d\xaa\x6d\x9c\x00\x00\x52\x93\x6d\xa8\x6d\xa9\x00\x00\x6d\xa7\x6d\x9f\x6d\x9d\x52\x92\x6d\xa3\x6d\xa1\x00\x00\x00\x00\x6d\xa2\x6d\xae\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x54\xb3\x00\x00\x54\xb2\x00\x00\x6f\xee\x54\xaf\x6f\xf0\x00\x00\x54\xb4\x6f\xf1\x00\x00\x00\x00\x54\xb7\x00\x00\x54\xb5\x6f\xf2\x6d\xaf\x6f\xf4\x00\x00\x54\xb1\x00\x00\x54\xb0\x00\x00\x6f\xef", /* 5d00 */ "\x6f\xf3\x54\xb6\x00\x00\x00\x00\x00\x00\x00\x00\x56\xf6\x56\xf5\x00\x00\x00\x00\x00\x00\x72\xf8\x72\xfc\x73\x41\x56\xf7\x73\x44\x00\x00\x56\xfb\x73\x46\x00\x00\x56\xfd\x00\x00\x56\xf9\x57\x44\x00\x00\x57\x41\x72\xfa\x56\xf8\x00\x00\x72\xf9\x72\xf7\x73\x48\x72\xfb\x00\x00\x56\xfa\x73\x47\x57\x42\x73\x43\x73\x42\x57\x43\x72\xfd\x56\xfc\x00\x00\x00\x00\x00\x00\x00\x00\x73\x49\x00\x00\x73\x45\x76\x6d\x76\x74\x76\x69\x59\x97\x76\x65\x76\x75\x76\x5f\x76\x72\x76\x70\x76\x6a\x00\x00\x76\x73\x76\x6c\x00\x00\x76\x64\x76\x76\x76\x62\x76\x6f\x76\x60\x00\x00\x76\x77\x00\x00\x59\x98\x00\x00\x76\x71\x79\xd5\x76\x63\x59\x95\x00\x00\x76\x67\x00\x00\x59\x96\x76\x66\x76\x6b\x00\x00\x00\x00\x76\x68\x00\x00\x00\x00\x00\x00\x76\x6e\x00\x00\x00\x00\x00\x00\x00\x00\x79\xd9\x00\x00\x00\x00\x00\x00\x79\xdc\x79\xd4\x00\x00\x79\xd6\x00\x00\x79\xdb\x79\xda\x5b\xe8\x00\x00\x76\x61\x79\xd8\x00\x00\x00\x00\x5b\xe9\x00\x00\x79\xd3\x79\xd7\x00\x00\x00\x00\x00\x00\x00\x00\x7d\x91\x00\x00\x7d\x98\x7d\x8f\x00\x00\x7d\x96\x7d\x8d\x7d\x95\x7d\x99", /* 5d80 */ "\x7d\x8c\x7d\x90\x7d\x8b\x00\x00\x5e\x79\x00\x00\x7d\x8e\x5e\x7a\x7d\x94\x7d\x93\x7d\x92\x00\x00\x00\x00\x7d\x97\x00\x00\x00\x00\x00\x00\x00\x00\x80\xaf\x80\xb1\x60\x74\x80\xb2\x00\x00\x80\xad\x00\x00\x80\xac\x80\xb6\x00\x00\x80\xb4\x60\x73\x80\xb7\x80\xae\x80\xb3\x80\xb5\x80\xb0\x00\x00\x00\x00\x00\x00\x00\x00\x83\xeb\x83\xf0\x83\xea\x83\xef\x00\x00\x83\xe8\x83\xf2\x83\xee\x83\xf3\x83\xed\x83\xe9\x83\xf1\x00\x00\x83\xf4\x83\xec\x00\x00\x86\xe5\x63\xd7\x00\x00\x63\xd5\x00\x00\x63\xd4\x63\xd6\x00\x00\x00\x00\x89\x71\x00\x00\x8a\xc0\x8b\x6c\x00\x00\x00\x00\x8c\xf1\x8c\xf2\x00\x00\x66\xea\x00\x00\x8e\x78\x00\x00\x67\x8a\x00\x00\x8e\x79\x00\x00\x8f\x6e\x67\xdd\x00\x00\x67\xdc\x8f\x6d\x68\x55\x00\x00\x90\x47\x00\x00\x00\x00\x48\x6e\x00\x00\x4c\x75\x4d\xfb\x69\xba\x6a\x8b\x4f\xd5\x57\x45\x00\x00\x00\x00\x4c\x76\x4d\x6a\x4d\x69\x4d\x68\x00\x00\x00\x00\x4f\x47\x00\x00\x00\x00\x54\xb8\x00\x00\x79\xdd\x4c\x77\x4c\x78\x4c\x79\x4c\xba\x00\x00\x00\x00\x52\x94\x00\x00\x6d\xb0\x00\x00\x00\x00\x00\x00\x59\x99\x4c\x7a\x69\x5e", /* 5e00 */ "\x00\x00\x00\x00\x4d\x6b\x4d\x6c\x69\x79\x00\x00\x4d\xfc\x00\x00\x00\x00\x00\x00\x6a\x8c\x00\x00\x4f\x48\x00\x00\x6a\x8d\x00\x00\x00\x00\x50\xaf\x00\x00\x00\x00\x6b\xcf\x50\xad\x50\xac\x6b\xce\x50\xaa\x6b\xd0\x50\xab\x50\xae\x00\x00\x52\x95\x00\x00\x52\x97\x6d\xb4\x6d\xb1\x6d\xb2\x6d\xb3\x6d\xb5\x52\x96\x00\x00\x00\x00\x6f\xf6\x6f\xf5\x00\x00\x54\xba\x00\x00\x54\xb9\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x57\x48\x73\x4b\x00\x00\x57\x47\x57\x49\x57\x46\x00\x00\x00\x00\x00\x00\x00\x00\x59\x9b\x73\x4a\x00\x00\x59\x9c\x76\x79\x00\x00\x59\x9d\x76\x78\x59\x9a\x00\x00\x00\x00\x00\x00\x00\x00\x79\xe0\x79\xe2\x5b\xea\x79\xe1\x79\xdf\x79\xde\x00\x00\x00\x00\x00\x00\x7d\x9c\x5e\x7f\x5e\x7d\x00\x00\x5e\x7e\x7d\x9a\x7d\x9b\x00\x00\x5e\x7b\x80\xbb\x80\xb9\x00\x00\x60\x76\x80\xba\x60\x77\x60\x75\x5e\x7c\x00\x00\x00\x00\x83\xf7\x83\xf5\x83\xf6\x80\xb8\x86\xe7\x63\xd8\x86\xe6\x89\x72\x89\x73\x83\xf8\x8b\x6d\x00\x00\x4c\x7b\x4d\x6d\x4e\x41\x69\xbb\x4d\xfd\x00\x00\x50\xb0\x5b\xeb\x48\x73\x4c\xbb\x4d\x6e\x52\x98\x59\x9e\x48\x74", /* 5e80 */ "\x69\x7a\x00\x00\x69\x7b\x00\x00\x69\xbc\x00\x00\x00\x00\x4f\x4a\x6a\x91\x6a\x8f\x4f\x4b\x6a\x8e\x6a\x90\x6a\x92\x00\x00\x4f\x49\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x50\xb4\x50\xb5\x50\xb2\x00\x00\x00\x00\x50\xb1\x6d\xb9\x50\xb3\x00\x00\x00\x00\x00\x00\x52\x99\x00\x00\x6d\xb8\x6d\xba\x6d\xb7\x6d\xbb\x52\x9a\x54\xbd\x6f\xf7\x00\x00\x6f\xf9\x54\xbb\x6f\xfa\x54\xbc\x6f\xf8\x00\x00\x6d\xb6\x73\x4c\x73\x4f\x73\x50\x73\x4d\x57\x4d\x57\x4c\x57\x4a\x57\x4b\x73\x4e\x00\x00\x00\x00\x00\x00\x00\x00\x57\x4e\x00\x00\x00\x00\x59\xa0\x59\xa1\x00\x00\x59\xa2\x79\xe3\x79\xe5\x79\xe7\x5b\xed\x5b\xec\x59\x9f\x79\xe6\x79\xe4\x00\x00\x7d\xa0\x00\x00\x00\x00\x7d\x9e\x7d\xa4\x5e\x81\x7d\xa5\x7d\xa2\x5e\x82\x7d\x9f\x7d\x9d\x7d\xa3\x60\x79\x80\xbd\x7d\xa1\x60\x7b\x80\xbe\x60\x7a\x60\x7d\x80\xbf\x60\x78\x60\x7c\x00\x00\x83\xfd\x83\xfb\x83\xfa\x83\xfc\x83\xf9\x00\x00\x00\x00\x66\x52\x00\x00\x8c\xf3\x8c\xf4\x00\x00\x8e\x7a\x8f\x6f\x68\xa1\x48\x75\x00\x00\x50\xb6\x4f\x4c\x00\x00\x00\x00\x52\x9b\x00\x00\x00\x00\x00\x00\x4c\x7c\x4c\xbc", /* 5f00 */ "\x00\x00\x4d\x6f\x69\xbd\x00\x00\x4f\x4d\x6a\x93\x00\x00\x6d\xbc\x52\x9c\x00\x00\x5e\x83\x4c\x7d\x00\x00\x00\x00\x00\x00\x4e\x42\x00\x00\x00\x00\x5b\xee\x4c\x7e\x4c\xbd\x4c\xbe\x00\x00\x4d\x71\x4d\x70\x00\x00\x69\xbe\x4e\x43\x00\x00\x6a\x94\x00\x00\x4f\x4e\x00\x00\x00\x00\x6b\xd2\x6b\xd3\x6b\xd4\x00\x00\x50\xb7\x50\xb8\x6b\xd1\x50\xb9\x00\x00\x00\x00\x00\x00\x52\x9d\x6d\xbd\x00\x00\x6f\xfc\x54\xbe\x00\x00\x6f\xfb\x00\x00\x57\x4f\x73\x51\x57\x50\x73\x52\x00\x00\x00\x00\x00\x00\x59\xa3\x00\x00\x00\x00\x00\x00\x79\xe8\x00\x00\x00\x00\x7d\xa7\x7d\xa6\x00\x00\x5e\x84\x00\x00\x60\x7e\x80\xc0\x62\x73\x84\x41\x63\xd9\x00\x00\x67\xde\x90\x49\x48\x79\x00\x00\x00\x00\x00\x00\x6b\xd5\x00\x00\x6d\xbe\x57\x51\x76\x7a\x5b\xef\x00\x00\x00\x00\x00\x00\x65\x60\x65\x60\x00\x00\x00\x00\x48\x7a\x4f\x50\x00\x00\x4f\x4f\x52\x9e\x00\x00\x6f\xfd\x00\x00\x57\x53\x58\xa8\x57\x54\x57\x52\x59\xa4\x00\x00\x7d\xa8\x5e\x85\x60\x7f\x00\x00\x69\x4d\x69\xbf\x00\x00\x6a\x96\x4f\x51\x6a\x95\x4f\x52\x00\x00\x00\x00\x50\xbd\x6b\xd8\x6b\xd7\x50\xbc", /* 5f80 */ "\x50\xba\x50\xbb\x6b\xd6\x00\x00\x00\x00\x52\xa0\x6d\xbf\x52\xa3\x52\x9f\x52\xa5\x52\xa1\x52\xa2\x52\xa4\x00\x00\x00\x00\x00\x00\x54\xc1\x54\xc0\x54\xbf\x00\x00\x00\x00\x00\x00\x73\x54\x57\x55\x57\x58\x57\x56\x00\x00\x73\x53\x57\x5b\x00\x00\x57\x57\x73\x55\x57\x5a\x57\x59\x00\x00\x00\x00\x00\x00\x76\x7c\x76\x7b\x00\x00\x59\xa7\x59\xa5\x59\xa6\x76\x7d\x5b\xf0\x79\xea\x5b\xf1\x79\xe9\x00\x00\x00\x00\x80\xc1\x00\x00\x00\x00\x60\x82\x7d\xa9\x60\x81\x00\x00\x5e\x86\x00\x00\x86\xe9\x84\x42\x63\xda\x86\xe8\x8b\x6e\x8c\xf5\x8c\xf6\x00\x00\x4c\xbf\x00\x00\x4d\x72\x00\x00\x00\x00\x00\x00\x69\x7c\x00\x00\x00\x00\x4f\x54\x4f\x56\x00\x00\x69\xc2\x6a\x99\x6a\x98\x6a\x97\x00\x00\x69\xc1\x69\xc0\x4e\x45\x4f\x55\x4f\x53\x4e\x44\x00\x00\x00\x00\x00\x00\x50\xbe\x6b\xd9\x00\x00\x50\xbf\x6a\x9e\x00\x00\x6a\xa0\x6a\x9f\x6b\xda\x00\x00\x00\x00\x6a\x9b\x00\x00\x4f\x5a\x4f\x58\x00\x00\x6a\x9a\x6a\x9c\x6a\xa2\x00\x00\x4f\x57\x00\x00\x6a\x9d\x6a\xa6\x50\xc1\x00\x00\x6a\xa3\x4f\x59\x00\x00\x6a\xa1\x6a\xa4\x00\x00\x50\xc0\x00\x00\x50\xc2", /* 6000 */ "\x6a\xa5\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6b\xee\x6b\xe1\x6b\xdf\x6b\xed\x6b\xe8\x52\xaa\x50\xc3\x6b\xe9\x6b\xec\x52\xa6\x6b\xeb\x50\xc4\x50\xc9\x50\xc7\x6b\xe2\x00\x00\x6b\xdd\x6b\xe4\x50\xce\x6b\xef\x52\xa7\x6b\xe5\x00\x00\x52\xa8\x50\xca\x6b\xe7\x00\x00\x6d\xce\x52\xa9\x6b\xdc\x50\xcb\x52\xab\x50\xcc\x50\xc8\x50\xcd\x6b\xe6\x6b\xdb\x6b\xea\x50\xc5\x00\x00\x00\x00\x6b\xde\x6b\xe3\x6b\xe0\x50\xc6\x00\x00\x6d\xc0\x00\x00\x6d\xc1\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6d\xcb\x70\x44\x6d\xcc\x52\xb1\x6d\xcf\x6d\xc5\x52\xb0\x6d\xc7\x00\x00\x6d\xc8\x00\x00\x00\x00\x6d\xca\x52\xac\x00\x00\x00\x00\x54\xc5\x00\x00\x00\x00\x6d\xc6\x6d\xc2\x54\xc6\x00\x00\x00\x00\x6d\xd0\x54\xc2\x70\x42\x6d\xc9\x00\x00\x70\x41\x6d\xc4\x6d\xcd\x00\x00\x00\x00\x52\xaf\x54\xc3\x52\xb5\x54\xc4\x6d\xd1\x70\x43\x52\xae\x54\xc8\x52\xb4\x52\xb3\x52\xb2\x54\xc7\x6d\xd2\x54\xc9\x52\xad\x00\x00\x6d\xc3\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x57\x5c", /* 6080 */ "\x70\x47\x70\x49\x00\x00\x70\x4b\x54\xca\x54\xd0\x73\x58\x70\x4f\x70\x46\x57\x5e\x73\x56\x00\x00\x54\xcf\x54\xcd\x70\x51\x00\x00\x73\x57\x00\x00\x70\x48\x00\x00\x54\xce\x70\x4c\x54\xd1\x70\x4e\x00\x00\x00\x00\x54\xcc\x70\x4d\x70\x50\x70\x4a\x00\x00\x54\xcb\x57\x5f\x00\x00\x70\x45\x57\x5d\x00\x00\x00\x00\x00\x00\x00\x00\x57\x60\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x73\x5a\x73\x63\x59\xaa\x00\x00\x57\x62\x57\x67\x59\xab\x73\x65\x57\x6e\x76\x7f\x73\x5b\x57\x66\x57\x69\x57\x64\x73\x59\x73\x67\x73\x6a\x76\x8f\x00\x00\x73\x68\x76\x84\x57\x65\x57\x6c\x57\x70\x73\x62\x76\x7e\x73\x66\x57\x61\x76\x81\x73\x69\x76\x83\x73\x5e\x00\x00\x59\xa8\x00\x00\x73\x5c\x73\x5d\x57\x6b\x00\x00\x00\x00\x57\x6a\x73\x60\x57\x6f\x73\x64\x57\x68\x73\x61\x00\x00\x57\x6d\x59\xac\x59\xa9\x76\x82\x00\x00\x73\x5f\x00\x00\x57\x63\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x59\xb1\x59\xb5\x76\x86\x5b\xf6\x59\xb3\x76\x8a\x59\xb7\x79\xeb\x76\x8c\x5b\xf8\x59\xaf\x59\xb2\x76\x8d\x00\x00\x76\x8e\x76\x94", /* 6100 */ "\x59\xb9\x5b\xf9\x00\x00\x76\x90\x76\x95\x76\x89\x5c\x46\x00\x00\x5b\xfa\x59\xb8\x76\x87\x76\x96\x00\x00\x5c\x45\x59\xb6\x5b\xf3\x76\x93\x00\x00\x59\xba\x76\x8b\x76\x85\x59\xb0\x76\x88\x00\x00\x76\x91\x00\x00\x5b\xf2\x5b\xf7\x59\xad\x76\x92\x00\x00\x5b\xf5\x00\x00\x00\x00\x00\x00\x59\xae\x00\x00\x00\x00\x00\x00\x5c\x44\x7d\xab\x79\xf6\x00\x00\x79\xee\x7d\xaa\x00\x00\x79\xf2\x79\xf4\x00\x00\x00\x00\x79\xf1\x00\x00\x5c\x43\x00\x00\x79\xf0\x5c\x47\x00\x00\x00\x00\x00\x00\x7d\xba\x00\x00\x00\x00\x5c\x42\x5e\x88\x79\xf7\x7d\xac\x00\x00\x00\x00\x5b\xfd\x79\xef\x79\xf3\x5e\x87\x5b\xf4\x79\xec\x79\xed\x5e\x89\x5b\xfc\x5c\x41\x5b\xfb\x79\xf5\x00\x00\x00\x00\x7d\xb0\x7d\xb1\x7d\xb6\x60\x87\x7d\xbd\x00\x00\x5e\x8f\x00\x00\x5e\x8e\x7d\xb8\x00\x00\x60\x86\x7d\xad\x5e\x8d\x00\x00\x7d\xbc\x5e\x8b\x5e\x8c\x00\x00\x7d\xb9\x80\xd2\x60\x84\x59\xb4\x00\x00\x7d\xbb\x60\x8b\x7d\xb3\x00\x00\x60\x85\x00\x00\x60\x8a\x7d\xae\x7d\xb2\x7d\xaf\x7d\xb5\x5e\x90\x60\x83\x5e\x8a\x00\x00\x80\xc4\x7d\xb7\x00\x00\x60\x89\x00\x00\x60\x8c\x00\x00", /* 6180 */ "\x7d\xb4\x00\x00\x60\x88\x80\xc3\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\xc8\x62\x77\x80\xc2\x84\x4e\x80\xd1\x60\x90\x00\x00\x60\x8e\x62\x75\x80\xce\x80\xca\x60\x94\x00\x00\x84\x45\x00\x00\x00\x00\x00\x00\x60\x92\x80\xc9\x00\x00\x84\x43\x00\x00\x80\xcd\x00\x00\x80\xd0\x80\xc7\x00\x00\x60\x93\x00\x00\x00\x00\x60\x8d\x84\x44\x62\x76\x80\xcf\x60\x8f\x60\x91\x80\xcc\x60\x95\x80\xcb\x80\xc6\x80\xc5\x62\x74\x80\xd3\x84\x47\x86\xeb\x62\x79\x00\x00\x84\x4d\x00\x00\x84\x4b\x00\x00\x86\xec\x00\x00\x62\x7a\x84\x4c\x00\x00\x84\x49\x63\xdc\x86\xea\x00\x00\x84\x46\x84\x48\x63\xdd\x62\x7c\x63\xdb\x62\x7b\x63\xdf\x84\x4a\x62\x78\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x89\x7c\x00\x00\x89\x74\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x86\xf2\x89\x75\x86\xee\x00\x00\x00\x00\x65\x61\x86\xf0\x86\xef\x63\xde\x86\xed\x86\xf1\x89\x7d\x89\x79\x89\x7b\x00\x00\x89\x76\x89\x77\x00\x00\x89\x7a\x89\x78\x66\x53\x00\x00\x00\x00\x66\x56\x66\x55\x66\x54\x66\xeb\x8c\xf7\x66\xec\x8b\x6f\x67\x8b\x8e\x7b\x67\x8c\x67\xdf", /* 6200 */ "\x68\x56\x90\x4a\x00\x00\x90\x4b\x90\x4c\x00\x00\x00\x00\x91\xaa\x4c\xc0\x69\x7d\x4d\x73\x00\x00\x4e\x47\x4e\x48\x4e\x46\x00\x00\x4e\x49\x4f\x5c\x4f\x5b\x00\x00\x6b\xf0\x50\xd0\x50\xcf\x00\x00\x00\x00\x70\x52\x57\x71\x57\x72\x00\x00\x00\x00\x00\x00\x59\xbb\x79\xf8\x5c\x48\x5c\x49\x79\xfa\x79\xfc\x79\xfb\x00\x00\x7d\xbf\x00\x00\x7d\xbe\x5e\x91\x7d\xc0\x00\x00\x80\xd4\x60\x96\x00\x00\x62\x7d\x00\x00\x63\xe0\x65\x62\x63\xe1\x00\x00\x4c\xc1\x00\x00\x00\x00\x00\x00\x6a\xa7\x00\x00\x00\x00\x6b\xf1\x50\xd2\x50\xd1\x50\xd3\x52\xb6\x6d\xd3\x6d\xd4\x00\x00\x00\x00\x70\x53\x54\xd2\x57\x73\x59\xbc\x76\x97\x4c\xc2\x00\x00\x4c\x7f\x4c\xc3\x00\x00\x69\x7e\x4d\x77\x4d\x76\x4d\x74\x4d\x75\x00\x00\x00\x00\x00\x00\x4e\x4c\x69\xca\x69\xcc\x4e\x4b\x69\xc4\x00\x00\x69\xc5\x00\x00\x69\xcb\x69\xc7\x69\xc9\x4e\x4a\x69\xc6\x69\xc3\x69\xc8\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4f\x63\x4f\x6c\x4f\x6a\x6a\xb1\x6a\xae\x6a\xb6\x4f\x68\x6a\xb7\x00\x00\x4f\x61\x6a\xb4\x00\x00\x4f\x67\x6a\xb0\x6a\xaf\x4f\x65\x6a\xb5\x4f\x66\x50\xd4", /* 6280 */ "\x4f\x60\x6a\xb2\x00\x00\x6a\xa8\x4f\x5d\x00\x00\x4f\x70\x6a\xad\x6a\xb3\x4f\x62\x4f\x64\x00\x00\x6a\xa9\x00\x00\x6a\xaa\x6a\xab\x00\x00\x4f\x6f\x4f\x69\x4f\x6e\x6a\xac\x4f\x6d\x4f\x5f\x4f\x5e\x4f\x6b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x50\xe2\x6b\xfd\x6b\xf6\x50\xdd\x50\xf0\x6b\xf2\x6b\xf9\x6b\xfb\x6c\x41\x50\xeb\x00\x00\x6b\xfa\x6b\xf3\x50\xe9\x6b\xf7\x00\x00\x6c\x42\x50\xda\x00\x00\x6b\xfc\x50\xe4\x50\xe3\x6b\xf5\x50\xd8\x00\x00\x00\x00\x50\xd9\x00\x00\x50\xd7\x00\x00\x50\xef\x50\xe7\x50\xe1\x50\xd5\x6b\xf8\x50\xe0\x50\xd6\x50\xe8\x50\xf1\x6d\xd5\x50\xe5\x6b\xf4\x50\xdb\x50\xde\x50\xdf\x00\x00\x50\xed\x50\xee\x50\xec\x50\xe6\x50\xea\x50\xdc\x52\xb7\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6d\xdb\x52\xc3\x52\xbb\x52\xbd\x52\xc2\x6d\xe7\x52\xc0\x70\x54\x54\xd3\x52\xc5\x6d\xd8\x6d\xe0\x52\xc1\x6d\xdf\x6d\xdc\x6d\xe4\x6d\xe6\x52\xba\x52\xbe\x52\xc4\x54\xd5", /* 6300 */ "\x6d\xe1\x52\xbc\x52\xc7\x6d\xda\x00\x00\x00\x00\x00\x00\x52\xbf\x54\xd4\x52\xb9\x00\x00\x6d\xd7\x6d\xde\x6d\xd6\x6d\xd9\x6d\xdd\x70\x55\x52\xc6\x00\x00\x6d\xe2\x6d\xe3\x6d\xe5\x52\xb8\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x54\xe3\x70\x61\x54\xe1\x54\xe2\x70\x57\x70\x67\x00\x00\x54\xd8\x00\x00\x00\x00\x73\x6b\x70\x69\x70\x63\x00\x00\x70\x5a\x00\x00\x70\x6c\x70\x5d\x54\xde\x73\x83\x70\x60\x54\xe0\x54\xd7\x00\x00\x70\x6e\x70\x62\x54\xda\x70\x5b\x70\x58\x70\x59\x54\xdb\x70\x68\x70\x6f\x54\xdd\x70\x5f\x70\x5e\x54\xe5\x54\xe4\x54\xd6\x54\xdc\x54\xdf\x70\x6b\x00\x00\x00\x00\x70\x65\x54\xd9\x70\x56\x70\x6d\x70\x64\x70\x66\x70\x6a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x73\x6c\x00\x00\x57\x7b\x57\x90\x57\x8f\x00\x00\x57\x84\x00\x00\x73\x7e\x73\x7a\x73\x77\x73\x8a\x57\x7e\x57\x76\x00\x00\x00\x00\x73\x7c\x59\xcc\x57\x7a\x73\x85\x00\x00\x57\x91\x57\x8e\x73\x81\x73\x6f\x00\x00\x00\x00", /* 6380 */ "\x57\x8d\x73\x87\x73\x6e\x57\x82\x57\x86\x73\x86\x00\x00\x73\x78\x57\x87\x57\x81\x73\x6d\x00\x00\x59\xbe\x73\x89\x73\x76\x57\x8c\x73\x79\x73\x88\x57\x8b\x00\x00\x76\x98\x00\x00\x57\x77\x73\x74\x57\x7c\x57\x88\x00\x00\x57\x83\x73\x7d\x73\x73\x73\x71\x73\x84\x57\x74\x57\x89\x57\x78\x59\xbd\x73\x82\x57\x79\x00\x00\x57\x75\x57\x85\x57\x7f\x57\x7d\x73\x75\x57\x8a\x73\x72\x73\x7f\x73\x7b\x76\x9a\x76\x99\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x73\x70\x76\xaa\x00\x00\x59\xc0\x00\x00\x76\xb0\x76\x9f\x76\xad\x79\xfd\x59\xc3\x76\xb1\x76\xb4\x59\xc2\x76\xa2\x76\xb3\x76\xb2\x59\xc4\x76\x9b\x59\xbf\x59\xc7\x00\x00\x59\xc5\x76\xaf\x00\x00\x76\xa5\x59\xc9\x76\xb6\x76\xae\x76\xb7\x59\xd1\x59\xcf\x76\xac\x76\xab\x00\x00\x76\xa9\x76\xa3\x59\xc8\x00\x00\x59\xc6\x70\x5c\x76\x9c\x00\x00\x7a\x5e\x76\x9d\x59\xc1\x59\xce\x7a\x42\x00\x00\x59\xca\x59\xcb\x76\x9e\x76\xb5\x7a\x41\x76\xa6\x76\xa1\x59\xcd\x76\xa7\x76\xa4\x00\x00\x00\x00\x59\xd2\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 6400 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5c\x58\x00\x00\x00\x00\x7a\x45\x7a\x58\x7a\x5d\x7a\x51\x5c\x54\x7a\x62\x5c\x51\x7a\x43\x00\x00\x7a\x44\x5c\x4a\x5c\x53\x7a\x4b\x5c\x56\x5c\x57\x7a\x4c\x00\x00\x7a\x59\x7a\x5f\x5c\x52\x00\x00\x5c\x4c\x7a\x4a\x7a\x46\x7a\x61\x7a\x4f\x7a\x50\x7a\x47\x7a\x5b\x7a\x52\x7a\x5c\x7a\x54\x00\x00\x5c\x4d\x7d\xc1\x5c\x50\x5c\x4e\x7a\x60\x7a\x57\x7a\x53\x00\x00\x00\x00\x7a\x48\x5e\x9b\x7a\x56\x5c\x55\x7a\x4e\x00\x00\x7a\x4d\x00\x00\x00\x00\x00\x00\x5c\x4f\x5c\x4b\x7d\xd6\x7a\x5a\x7a\x55\x00\x00\x7a\x49\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7d\xd1\x00\x00\x7d\xc2\x7d\xcd\x00\x00\x7d\xd4\x5e\x99\x59\xd0\x7d\xd2\x5e\x94\x00\x00\x00\x00\x00\x00\x5e\x93\x7d\xd9\x00\x00\x7d\xc3\x7d\xd0\x7d\xc4\x7d\xcf\x5e\x97\x7d\xd3\x76\xa8\x00\x00\x00\x00\x00\x00\x7d\xda\x7d\xcb\x5e\x9a\x80\xe2\x60\x97\x00\x00\x7d\xd8\x7d\xd7\x5e\x9c\x80\xd5\x60\x98\x80\xd6\x00\x00\x7d\xc7\x7d\xc8\x7d\xc5\x7d\xca\x7d\xc6\x7d\xdb\x5e\x96\x60\x99\x5e\x98\x5e\x9d\x00\x00\x7d\xc9\x00\x00\x7d\xd5", /* 6480 */ "\x00\x00\x00\x00\x7d\xce\x00\x00\x00\x00\x80\xd9\x00\x00\x5e\x92\x60\x9c\x84\x55\x80\xde\x80\xdd\x80\xdf\x00\x00\x00\x00\x80\xdc\x60\x9d\x68\xcb\x60\xa3\x60\xa0\x00\x00\x60\xa1\x80\xd7\x80\xda\x80\xe4\x60\xa9\x60\xa7\x00\x00\x80\xdb\x76\xa0\x60\x9a\x80\xe1\x80\xd8\x00\x00\x60\xaa\x80\xe0\x5e\x95\x60\x9f\x7d\xcc\x00\x00\x00\x00\x60\xa2\x00\x00\x60\xa6\x60\xa8\x60\xa5\x60\xa4\x00\x00\x60\x9e\x80\xe3\x60\x9b\x60\xab\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x62\x82\x62\x83\x84\x54\x62\x8c\x62\x89\x00\x00\x62\x7f\x62\x87\x84\x56\x62\x85\x62\x7e\x00\x00\x62\x86\x00\x00\x84\x53\x63\xe3\x62\x81\x00\x00\x62\x88\x63\xe2\x84\x52\x84\x51\x00\x00\x62\x8a\x00\x00\x62\x8b\x00\x00\x84\x50\x84\x4f\x63\xe4\x84\x59\x62\x84\x84\x57\x00\x00\x00\x00\x00\x00\x00\x00\x63\xe5\x00\x00\x63\xea\x86\xf5\x86\xf7\x00\x00\x63\xe7\x00\x00\x86\xf8\x86\xf4\x00\x00\x86\xf6\x63\xe8\x63\xeb\x00\x00\x86\xf3\x63\xe6\x63\xe9\x65\x64\x84\x58\x65\x63\x00\x00\x00\x00\x65\x69\x89\x82\x00\x00\x65\x67\x65\x68\x89\x85\x89\x81\x65\x65\x89\x7e", /* 6500 */ "\x66\x57\x89\x83\x00\x00\x89\x84\x89\x7f\x00\x00\x65\x66\x8b\x70\x00\x00\x8b\x73\x00\x00\x00\x00\x8b\x74\x8b\x72\x8b\x75\x66\x58\x8b\x71\x00\x00\x00\x00\x8c\xfb\x66\xee\x8c\xfa\x8c\xf9\x8c\xf8\x66\xed\x66\xef\x00\x00\x8e\x7c\x67\x8e\x67\x8d\x00\x00\x00\x00\x8f\x71\x8f\x70\x8f\x73\x68\x57\x67\xe0\x90\x4e\x8f\x72\x00\x00\x00\x00\x90\x4d\x68\x59\x68\x58\x68\x7f\x90\xb8\x91\x41\x4c\xc4\x00\x00\x00\x00\x76\xb8\x84\x5a\x48\x82\x00\x00\x4e\x4d\x6a\xb8\x4f\x73\x4f\x71\x00\x00\x4f\x72\x00\x00\x6c\x43\x50\xf2\x52\xc8\x00\x00\x6d\xe8\x00\x00\x6d\xe9\x00\x00\x52\xc9\x70\x71\x00\x00\x54\xe6\x54\xe7\x70\x70\x00\x00\x00\x00\x00\x00\x00\x00\x57\x98\x00\x00\x57\x94\x00\x00\x73\x8b\x57\x9b\x57\x9a\x57\x93\x57\x96\x57\x99\x57\x95\x00\x00\x00\x00\x76\xbc\x57\x92\x59\xd3\x00\x00\x00\x00\x00\x00\x59\xd5\x59\xd6\x76\xbb\x76\xbe\x59\xd4\x76\xb9\x76\xbd\x00\x00\x76\xba\x00\x00\x5c\x59\x00\x00\x00\x00\x7a\x63\x00\x00\x00\x00\x5e\x9e\x7d\xdc\x62\x8d\x60\xac\x80\xe5\x60\xad\x60\xae\x80\xe7\x80\xe6\x80\xe8\x84\x5c\x00\x00\x00\x00\x84\x5b", /* 6580 */ "\x86\xfa\x86\xf9\x63\xec\x63\xed\x8b\x76\x00\x00\x00\x00\x4c\xc5\x00\x00\x00\x00\x00\x00\x00\x00\x76\xbf\x00\x00\x00\x00\x00\x00\x59\xd8\x59\xd7\x7a\x64\x00\x00\x89\x86\x67\x8f\x90\x4f\x4c\xc6\x00\x00\x54\xe8\x00\x00\x57\x9d\x57\x9c\x76\xc0\x76\xc1\x5c\x5a\x7d\xdd\x5e\x9f\x84\x5d\x00\x00\x4c\xc7\x4d\x78\x00\x00\x50\xf3\x6c\x44\x00\x00\x6d\xea\x52\xca\x57\x9e\x00\x00\x76\xc2\x59\xd9\x5c\x5b\x00\x00\x80\xe9\x80\xea\x00\x00\x00\x00\x86\xfb\x65\x6a\x91\x42\x4c\xc8\x00\x00\x6c\x45\x50\xf4\x52\xcb\x00\x00\x6d\xeb\x00\x00\x54\xe9\x70\x75\x70\x73\x70\x74\x54\xea\x70\x72\x00\x00\x00\x00\x00\x00\x00\x00\x57\xa0\x57\xa1\x73\x8c\x57\xa2\x57\x9f\x76\xc3\x00\x00\x76\xc4\x7a\x65\x00\x00\x00\x00\x5e\xa1\x5e\xa0\x00\x00\x00\x00\x86\xfc\x89\x87\x00\x00\x8b\x78\x8b\x77\x8c\xfc\x48\x87\x69\x5f\x52\xcc\x00\x00\x00\x00\x4c\xc9\x4d\x79\x00\x00\x4e\x4f\x4e\x4e\x00\x00\x00\x00\x4e\x50\x4e\x51\x69\xce\x69\xcd\x6a\xb9\x4f\x74\x6a\xbc\x6a\xbb\x6a\xba\x6a\xbd\x00\x00\x00\x00\x00\x00\x00\x00\x50\xf5\x6c\x4b\x6c\x47\x6c\x50\x00\x00\x00\x00", /* 6600 */ "\x50\xfc\x00\x00\x50\xfa\x6c\x4c\x6c\x48\x6c\x4f\x50\xf9\x51\x43\x6c\x4a\x6c\x46\x51\x42\x6c\x4d\x50\xf8\x6c\x4e\x50\xfb\x50\xfd\x6c\x52\x6c\x51\x6c\x49\x50\xf7\x50\xf6\x51\x41\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6d\xf0\x6d\xf6\x00\x00\x52\xd2\x52\xcf\x6d\xed\x6d\xf2\x00\x00\x52\xd5\x52\xcd\x6d\xf1\x52\xd0\x52\xd3\x00\x00\x00\x00\x6d\xf4\x00\x00\x52\xce\x6d\xf9\x52\xd1\x00\x00\x52\xd4\x6d\xee\x6d\xf3\x6d\xf7\x6d\xef\x6d\xec\x00\x00\x00\x00\x6d\xf8\x6d\xf5\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x54\xf2\x54\xeb\x54\xee\x00\x00\x54\xf1\x00\x00\x70\x78\x00\x00\x54\xec\x70\x76\x00\x00\x54\xf0\x00\x00\x00\x00\x54\xed\x00\x00\x70\x79\x54\xef\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x73\x90\x57\xa4\x73\x8f\x73\x91\x57\xa3\x57\xa8\x70\x77\x00\x00\x73\x8e\x73\x92\x00\x00\x57\xa5\x73\x8d\x57\xa7\x00\x00\x57\xa6\x00\x00\x76\xcb\x00\x00\x76\xc6\x00\x00\x59\xda\x59\xde\x59\xdb\x76\xc9\x76\xcc\x00\x00\x59\xdc\x00\x00\x59\xdd\x59\xe2\x7a\x6e\x76\xca\x59\xe0\x76\xc7\x76\xc5\x00\x00\x59\xe1\x00\x00", /* 6680 */ "\x76\xc8\x00\x00\x00\x00\x00\x00\x5c\x61\x00\x00\x7a\x66\x5c\x5e\x5c\x5f\x5c\x5d\x7a\x6b\x7a\x6a\x7a\x67\x5c\x63\x00\x00\x00\x00\x7a\x69\x59\xdf\x00\x00\x00\x00\x7a\x6d\x7a\x68\x5c\x60\x5c\x5c\x5c\x62\x7a\x6c\x00\x00\x00\x00\x00\x00\x5e\xa4\x00\x00\x7d\xe0\x7d\xdf\x7d\xde\x5e\xa2\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5e\xa3\x80\xed\x80\xf0\x60\xb0\x00\x00\x00\x00\x60\xaf\x80\xf1\x80\xec\x60\xb2\x80\xee\x00\x00\x60\xb1\x80\xeb\x00\x00\x80\xef\x62\x93\x62\x90\x84\x66\x84\x65\x00\x00\x84\x64\x84\x5f\x00\x00\x84\x60\x00\x00\x00\x00\x00\x00\x62\x91\x00\x00\x62\x8e\x62\x92\x84\x5e\x62\x8f\x84\x61\x84\x62\x84\x67\x00\x00\x00\x00\x84\x63\x00\x00\x00\x00\x86\xfd\x00\x00\x00\x00\x00\x00\x63\xef\x00\x00\x89\x8a\x63\xee\x89\x88\x89\x89\x65\x6b\x66\x5a\x8b\x79\x00\x00\x66\x59\x00\x00\x00\x00\x8d\x41\x8d\x42\x00\x00\x66\xf0\x00\x00\x8c\xfd\x67\x90\x00\x00\x90\x50\x68\x5a\x90\xb9\x90\xba\x00\x00\x4c\xca\x00\x00\x4e\x52\x4e\x53\x4f\x75\x00\x00\x6c\x53\x52\xd6\x54\xf3\x57\xa9\x00\x00\x00\x00\x56\xb6\x00\x00\x59\xe3\x59\xe4", /* 6700 */ "\x59\x52\x76\xcd\x00\x00\x5c\x64\x7d\xe2\x7d\xe1\x00\x00\x00\x00\x4c\xcb\x4e\x54\x6c\x54\x51\x45\x00\x00\x51\x44\x00\x00\x6d\xfa\x6d\xfb\x00\x00\x70\x7a\x70\x7b\x54\xf4\x54\xf5\x00\x00\x54\xf6\x73\x93\x00\x00\x00\x00\x57\xab\x00\x00\x59\xe6\x00\x00\x59\xe5\x7a\x6f\x7b\xc2\x7d\xe3\x84\x68\x00\x00\x00\x00\x65\x6c\x66\xf1\x4c\xcc\x00\x00\x4d\x7c\x4d\x7d\x4d\x7b\x4d\x7e\x4d\x7a\x00\x00\x00\x00\x4e\x57\x00\x00\x69\xd6\x4e\x56\x4e\x58\x00\x00\x00\x00\x69\xd1\x69\xd0\x69\xd3\x69\xd2\x69\xd5\x4e\x55\x69\xcf\x69\xd4\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\xbe\x4f\x7f\x6a\xbf\x6a\xc3\x4f\x7e\x00\x00\x6a\xc7\x6a\xc2\x6a\xc5\x4f\x77\x4f\x78\x4f\x79\x4f\x7a\x00\x00\x4f\x82\x00\x00\x6a\xc1\x4f\x7c\x4f\x83\x00\x00\x6a\xc0\x6a\xc6\x00\x00\x4f\x7b\x6a\xc4\x4f\x7d\x4f\x76\x4f\x81\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x51\x5a\x00\x00\x6c\x56\x51\x46\x00\x00\x51\x50\x51\x51\x51\x49\x51\x5b\x51\x4b\x6c\x5e\x51\x56\x6c\x59\x51\x4c\x6c\x68\x6c\x69\x6c\x61\x6c\x5a\x51\x59\x6c\x66\x51\x54\x51\x52", /* 6780 */ "\x00\x00\x6c\x67\x00\x00\x6c\x65\x6c\x5d\x6c\x55\x6c\x5c\x51\x4d\x00\x00\x51\x53\x00\x00\x51\x47\x6c\x60\x6c\x5f\x6c\x57\x00\x00\x51\x55\x6c\x63\x6c\x58\x51\x58\x6c\x6a\x51\x48\x00\x00\x51\x4f\x6c\x5b\x6c\x64\x51\x57\x00\x00\x51\x4a\x51\x4e\x00\x00\x6c\x62\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6e\x5e\x52\xde\x52\xeb\x00\x00\x6e\x59\x6e\x4f\x52\xe4\x6e\x4d\x52\xdd\x6e\x48\x52\xe7\x6e\x55\x6e\x42\x6e\x44\x00\x00\x00\x00\x00\x00\x00\x00\x6e\x47\x6d\xfc\x6e\x54\x6e\x64\x52\xe2\x6e\x49\x6e\x5b\x00\x00\x6e\x41\x6e\x62\x6e\x63\x6e\x66\x6e\x5d\x6e\x4e\x6e\x56\x52\xe8\x52\xdb\x52\xe3\x52\xef\x52\xd8\x52\xda\x00\x00\x00\x00\x00\x00\x6e\x46\x52\xec\x52\xe5\x6e\x60\x6e\x43\x52\xee\x52\xe9\x6e\x4c\x00\x00\x00\x00\x52\xed\x6e\x53\x6e\x4b\x52\xe6\x6e\x5f\x6e\x57\x00\x00\x52\xe0\x6e\x65\x6e\x4a\x52\xdc\x6e\x5c\x6e\x52\x52\xe1\x6e\x58\x52\xd9\x6d\xfd\x52\xea\x55\x48\x52\xdf\x6e\x51\x6e\x50\x6e\x45\x00\x00\x6e\x61\x00\x00\x6e\x5a\x00\x00\x00\x00\x52\xd7", /* 6800 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x70\x90\x55\x4f\x70\x91\x00\x00\x70\x85\x55\x44\x55\x50\x00\x00\x70\x7d\x00\x00\x70\x87\x70\x8f\x00\x00\x70\x7c\x70\x98\x54\xf7\x00\x00\x00\x00\x00\x00\x70\x97\x70\x92\x00\x00\x70\x93\x55\x42\x55\x4d\x70\x89\x00\x00\x70\x8a\x70\x94\x70\x8b\x00\x00\x70\x86\x70\x7f\x70\x81\x70\x8e\x70\x88\x00\x00\x00\x00\x54\xf8\x54\xfc\x70\x96\x70\x82\x55\x4b\x55\x47\x00\x00\x00\x00\x55\x4a\x55\x51\x54\xfd\x55\x4c\x70\x8d\x55\x4e\x54\xfa\x00\x00\x54\xf9\x70\x7e\x00\x00\x70\x83\x55\x45\x70\x95\x70\x8c\x70\x84\x55\x49\x55\x46\x00\x00\x54\xfb\x55\x41\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x73\xa8\x00\x00\x73\x98\x73\x99\x73\x9d\x00\x00\x73\xac\x73\xa9\x00\x00\x73\xa2\x73\xa1\x57\xb2\x73\xa5\x73\xb4\x73\x94\x00\x00\x73\xb5\x73\xa7\x73\xb9\x73\xad\x57\xb1", /* 6880 */ "\x73\xab\x57\xac\x57\xc1\x57\xb7\x00\x00\x57\xbb\x57\xba\x73\x95\x00\x00\x73\xb2\x73\xb8\x73\xb0\x73\xb7\x00\x00\x00\x00\x73\xa4\x73\x96\x73\xb6\x73\xa6\x57\xaf\x57\xbc\x00\x00\x73\xaf\x57\xb5\x00\x00\x00\x00\x00\x00\x73\xae\x73\x97\x57\xbd\x00\x00\x57\xbf\x73\xb1\x57\xc0\x57\xae\x73\x9e\x73\xb3\x00\x00\x00\x00\x57\xb4\x57\xbe\x73\xa0\x73\xaa\x73\x9b\x73\x9f\x57\xb9\x73\x9a\x57\xad\x57\xb6\x57\xb3\x73\xa3\x55\x43\x76\xe4\x57\xb0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x57\xb8\x00\x00\x76\xe7\x76\xfd\x76\xf2\x59\xfa\x00\x00\x59\xf5\x76\xe1\x59\xf6\x76\xf1\x00\x00\x76\xea\x76\xf7\x59\xf2\x76\xcf\x76\xf9\x59\xe8\x76\xd7\x59\xeb\x59\xea\x00\x00\x59\xfb\x00\x00\x76\xd1\x76\xf3\x76\xf4\x59\xed\x59\xe9\x76\xdf\x00\x00\x59\xf4\x76\xda\x00\x00\x76\xf5\x59\xf0\x76\xed\x76\xfa\x76\xd4\x76\xd9\x76\xd3\x00\x00\x59\xef\x76\xe6\x7a\x86\x76\xd5\x59\xf3\x76\xde\x76\xf6\x59\xee\x76\xdb\x76\xd8\x76\xe9\x59\xf1\x59\xe7\x59\xfd\x76\xec\x76\xeb\x00\x00\x00\x00", /* 6900 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x76\xd0\x59\xec\x76\xf8\x76\xe0\x76\xe2\x00\x00\x76\xef\x76\xee\x76\xce\x59\xf7\x59\xf9\x76\xd6\x76\xdd\x76\xe5\x59\xf8\x76\xdc\x76\xe8\x76\xfb\x00\x00\x76\xf0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x91\xc6\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x76\xfc\x00\x00\x00\x00\x00\x00\x00\x00\x76\xd2\x00\x00\x00\x00\x00\x00\x00\x00\x7a\x9a\x5c\x6c\x00\x00\x7a\x98\x7a\x83\x7a\x88\x7a\x81\x00\x00\x7a\x94\x7a\x72\x7a\x79\x00\x00\x7a\x92\x7a\x9c\x7a\x84\x00\x00\x7a\x76\x7a\x8a\x7a\x8f\x7a\x7a\x00\x00\x7a\x8c\x7a\x77\x00\x00\x00\x00\x7a\x7e\x7a\x7f\x5c\x6e\x7a\x93\x7a\x91\x00\x00\x7a\x73\x7a\x96\x00\x00\x7a\x97\x7a\x99\x5c\x72\x5c\x6a\x00\x00\x73\x9c\x7a\x7b\x7a\x8e\x7a\x7c\x5c\x67\x5c\x77\x7a\x95\x5c\x75\x5c\x71\x7a\x71\x5c\x69\x00\x00\x7a\x74\x5c\x76\x00\x00\x7a\x85\x7a\x70\x00\x00\x5c\x6f\x7a\x89\x7a\x78\x5c\x70\x7a\x82\x5c\x66\x59\xfc\x7a\x8b\x76\xe3\x7a\x75\x00\x00\x00\x00\x7a\x90\x5c\x6b\x7a\x8d\x5c\x68\x7a\x87\x5c\x73\x7a\x7d\x7a\x9b\x00\x00\x00\x00\x00\x00\x00\x00", /* 6980 */ "\x00\x00\x00\x00\x5c\x6d\x7b\x4e\x00\x00\x00\x00\x5c\x74\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7d\xf1\x7d\xef\x00\x00\x7e\x48\x7d\xed\x00\x00\x7e\x42\x5c\x65\x5e\xa7\x7d\xe9\x7e\x47\x00\x00\x7d\xee\x7d\xfc\x5e\xac\x5e\xa5\x00\x00\x7e\x45\x00\x00\x7d\xe7\x7e\x44\x00\x00\x5e\xb7\x7d\xf8\x7e\x4b\x5e\xb5\x7d\xf0\x5e\xa6\x7d\xf2\x7e\x43\x5e\xaf\x7d\xeb\x5e\xb3\x5e\xa9\x7d\xf4\x7d\xea\x7d\xe4\x00\x00\x7e\x41\x5e\xb0\x7e\x4a\x7d\xe5\x5e\xad\x00\x00\x7d\xfa\x00\x00\x5e\xae\x7d\xec\x7d\xf7\x7d\xf3\x7d\xf5\x00\x00\x5e\xa8\x7e\x49\x5e\xb6\x7d\xf6\x00\x00\x7e\x4c\x00\x00\x00\x00\x7d\xe6\x7d\xfb\x5e\xab\x5e\xb4\x5e\xb2\x7d\xe8\x7d\xfd\x5e\xb1\x00\x00\x00\x00\x5e\xaa\x7d\xf9\x00\x00\x00\x00\x00\x00\x00\x00\x7e\x46\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\xfd\x00\x00\x80\xf9\x80\xf5\x81\x4c\x81\x49\x60\xb5\x00\x00\x00\x00\x81\x50\x80\xfc\x60\xc0\x81\x46\x00\x00\x00\x00\x80\xf8\x81\x45\x60\xbd\x81\x59\x00\x00\x81\x56\x81\x48\x80\xf6\x00\x00\x00\x00\x81\x4d\x81\x4f\x60\xb9\x81\x43\x80\xfb", /* 6a00 */ "\x80\xf2\x60\xb6\x60\xbe\x00\x00\x81\x52\x60\xbf\x80\xf3\x81\x58\x81\x4b\x81\x51\x60\xbc\x00\x00\x00\x00\x81\x4e\x00\x00\x81\x55\x00\x00\x60\xc1\x00\x00\x60\xbb\x81\x47\x80\xf7\x81\x5a\x80\xf4\x81\x53\x60\xb8\x00\x00\x81\x41\x00\x00\x81\x42\x60\xb7\x60\xb4\x80\xfa\x60\xba\x00\x00\x60\xb3\x00\x00\x81\x54\x81\x57\x81\x44\x84\x75\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x84\x6d\x00\x00\x84\x69\x62\xa0\x00\x00\x00\x00\x62\x95\x62\x9a\x62\x96\x84\x77\x84\x83\x62\x94\x84\x6f\x84\x78\x81\x4a\x84\x79\x00\x00\x00\x00\x62\x9b\x00\x00\x84\x89\x62\x9f\x62\xa2\x84\x6b\x00\x00\x62\x9e\x00\x00\x84\x87\x84\x88\x84\x7d\x84\x7c\x84\x74\x00\x00\x00\x00\x84\x7e\x84\x86\x84\x85\x00\x00\x62\x99\x62\x97\x84\x76\x84\x73\x00\x00\x84\x70\x84\x84\x62\xa1\x84\x82\x62\x9d\x62\x9c\x00\x00\x84\x7b\x00\x00\x84\x6a\x84\x6c\x84\x6e\x84\x81\x84\x7a\x62\x98\x00\x00\x84\x71\x00\x00\x84\x7f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x84\x72\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x63\xf7\x87\x52", /* 6a80 */ "\x63\xf0\x87\x43\x00\x00\x87\x4e\x63\xf2\x87\x55\x00\x00\x87\x4a\x00\x00\x87\x45\x00\x00\x00\x00\x87\x56\x87\x41\x87\x4c\x00\x00\x63\xf9\x87\x51\x87\x57\x87\x4b\x63\xf1\x87\x4d\x87\x42\x63\xf8\x00\x00\x00\x00\x87\x54\x87\x47\x63\xf4\x00\x00\x87\x49\x87\x46\x63\xfa\x87\x48\x63\xf3\x63\xf6\x87\x50\x87\x44\x87\x53\x00\x00\x87\x4f\x00\x00\x00\x00\x00\x00\x65\x6e\x89\x95\x65\x73\x65\x74\x00\x00\x00\x00\x00\x00\x65\x6d\x89\x94\x00\x00\x89\x91\x89\x92\x65\x71\x89\x8c\x89\x90\x65\x70\x00\x00\x89\x8d\x00\x00\x00\x00\x00\x00\x00\x00\x65\x72\x65\x6f\x00\x00\x89\x8b\x89\x8f\x89\x93\x00\x00\x00\x00\x00\x00\x8b\x7f\x8b\x7c\x8b\x86\x00\x00\x8b\x85\x8b\x83\x8b\x7d\x00\x00\x66\x5e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x8b\x7e\x66\x5d\x63\xf5\x8b\x82\x66\x5c\x8b\x87\x8b\x81\x8b\x7b\x89\x8e\x00\x00\x00\x00\x00\x00\x66\x5b\x00\x00\x8b\x7a\x8d\x46\x00\x00\x8d\x45\x8b\x84\x66\xf2\x00\x00\x8d\x49\x8d\x4a\x8d\x44\x8d\x48\x00\x00\x8d\x43\x00\x00\x00\x00\x00\x00\x00\x00\x8e\x81\x8d\x47\x67\x93\x67\x91\x8e\x7e\x00\x00\x00\x00\x00\x00", /* 6b00 */ "\x8e\x82\x00\x00\x8e\x7d\x8e\x7f\x67\x92\x00\x00\x00\x00\x00\x00\x8f\x75\x8f\x76\x67\xe1\x8f\x74\x00\x00\x00\x00\x00\x00\x90\x53\x68\x5b\x90\x51\x90\x52\x90\xbb\x00\x00\x00\x00\x68\xa2\x91\x45\x91\x43\x91\x44\x91\x46\x00\x00\x00\x00\x00\x00\x91\xab\x00\x00\x4c\xcd\x4e\x59\x00\x00\x51\x5c\x00\x00\x6c\x6b\x00\x00\x00\x00\x6e\x67\x00\x00\x00\x00\x00\x00\x70\x99\x70\x9b\x00\x00\x70\x9a\x00\x00\x70\x9c\x57\xc2\x73\xbb\x70\x9d\x00\x00\x73\xba\x73\xbc\x73\xbd\x77\x41\x5a\x42\x77\x42\x77\x44\x5a\x43\x5a\x41\x77\x43\x00\x00\x7a\xa2\x7a\xa0\x7a\x9f\x00\x00\x7a\x9e\x7a\x9d\x5c\x78\x7a\xa1\x5e\xb8\x7e\x4d\x7e\x4f\x5e\xb9\x7e\x4e\x60\xc3\x00\x00\x60\xc2\x81\x5b\x00\x00\x00\x00\x84\x8b\x84\x8a\x84\x8c\x00\x00\x00\x00\x62\xa3\x00\x00\x87\x58\x63\xfb\x00\x00\x89\x96\x65\x75\x8b\x88\x67\xe2\x4c\xce\x4d\x7f\x4e\x5a\x4f\x84\x51\x5d\x51\x5e\x00\x00\x00\x00\x52\xf0\x00\x00\x00\x00\x70\x9e\x00\x00\x00\x00\x00\x00\x00\x00\x5c\x79\x00\x00\x00\x00\x00\x00\x81\xda\x62\xa4\x65\x76\x4c\xcf\x00\x00\x4e\x5b\x00\x00\x00\x00\x6c\x6d\x51\x5f", /* 6b80 */ "\x6c\x6c\x00\x00\x6e\x68\x52\xf1\x6e\x69\x00\x00\x52\xf2\x00\x00\x70\xa0\x55\x53\x55\x52\x00\x00\x73\xc2\x73\xc0\x73\xc1\x73\xbf\x00\x00\x73\xbe\x00\x00\x00\x00\x77\x45\x77\x48\x5a\x45\x77\x46\x5a\x44\x77\x47\x00\x00\x7a\xa3\x00\x00\x00\x00\x7e\x50\x7e\x51\x7e\x52\x00\x00\x81\x5e\x81\x5d\x60\xc4\x81\x5c\x81\x5f\x84\x8d\x00\x00\x00\x00\x84\x8e\x84\x8f\x00\x00\x87\x59\x63\xfc\x65\x77\x8b\x89\x00\x00\x67\x94\x69\x60\x00\x00\x52\xf3\x6e\x6a\x55\x54\x00\x00\x00\x00\x57\xc3\x00\x00\x5a\x46\x77\x49\x00\x00\x5c\x7b\x5c\x7a\x00\x00\x00\x00\x7e\x53\x7e\x54\x60\xc5\x60\xc6\x84\x91\x84\x90\x89\x97\x90\x54\x4c\xd0\x69\x61\x4d\x81\x00\x00\x4f\x85\x6a\xc8\x00\x00\x52\xf4\x5c\x7c\x4c\xd1\x00\x00\x6e\x6b\x52\xf5\x6e\x6c\x00\x00\x63\xfd\x4c\xd2\x00\x00\x00\x00\x6c\x6e\x00\x00\x6e\x6d\x00\x00\x70\xa5\x70\xa4\x70\xa2\x00\x00\x70\xa1\x70\xa6\x70\xa3\x00\x00\x00\x00\x57\xc4\x57\xc5\x00\x00\x00\x00\x5a\x47\x77\x4a\x00\x00\x77\x4b\x77\x4c\x00\x00\x00\x00\x00\x00\x7a\xa8\x7a\xa9\x7a\xa7\x00\x00\x7a\xa5\x7a\xa6\x5c\x7d\x7e\x55\x81\x62", /* 6c00 */ "\x81\x61\x81\x60\x81\x63\x84\x93\x84\x92\x62\xa5\x84\x94\x00\x00\x64\x41\x87\x5a\x00\x00\x89\x98\x8b\x8a\x8f\x77\x00\x00\x4c\xd3\x4d\x83\x4d\x82\x00\x00\x51\x60\x69\x62\x69\x7f\x4e\x5c\x00\x00\x69\xd7\x6a\xc9\x6a\xca\x51\x61\x00\x00\x6c\x6f\x00\x00\x52\xf6\x6e\x6e\x6e\x6f\x00\x00\x55\x55\x55\x59\x70\xa7\x55\x58\x55\x56\x55\x57\x00\x00\x73\xc3\x57\xc6\x5a\x4a\x00\x00\x5a\x48\x5a\x49\x77\x4d\x00\x00\x00\x00\x5e\xba\x4c\xd4\x00\x00\x69\x81\x00\x00\x4d\x84\x00\x00\x00\x00\x69\x84\x00\x00\x00\x00\x4d\x87\x69\x83\x4d\x86\x4d\x85\x4f\x86\x69\x82\x00\x00\x00\x00\x69\xd8\x00\x00\x00\x00\x00\x00\x69\xdc\x69\xde\x69\xdf\x4e\x66\x4e\x67\x69\xdb\x4e\x62\x00\x00\x69\xd9\x00\x00\x69\xdd\x4e\x63\x00\x00\x4e\x5e\x00\x00\x4e\x5f\x00\x00\x4e\x65\x69\xda\x4e\x5d\x4f\x87\x4e\x60\x4e\x61\x4e\x64\x00\x00\x00\x00\x00\x00\x6a\xdb\x6a\xd9\x6a\xcc\x4f\x93\x6a\xd3\x4f\x8e\x6a\xcd\x00\x00\x6a\xd5\x00\x00\x6a\xd2\x4f\x91\x6a\xd1\x4f\x98\x6a\xda\x4f\x9a\x00\x00\x4f\x9c\x00\x00\x6a\xcb\x00\x00\x4f\x8f\x6a\xdc\x00\x00\x4f\x96\x4f\x99\x00\x00", /* 6c80 */ "\x6c\x87\x4f\x89\x4f\xa0\x4f\x97\x6a\xce\x4f\x8c\x4f\x9b\x6a\xd6\x4f\x8a\x4f\x8b\x6c\x85\x6a\xcf\x4f\x92\x4f\x9d\x6a\xdd\x6a\xd0\x4f\x90\x00\x00\x4f\x95\x6c\x70\x4f\x9e\x6a\xd7\x4f\x94\x00\x00\x4f\x9f\x4f\x88\x6a\xd4\x4f\x8d\x6a\xd8\x6c\x86\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x51\x6d\x51\x7d\x6c\x77\x51\x74\x00\x00\x6c\x8d\x51\x65\x00\x00\x51\x68\x6c\x84\x00\x00\x6c\x75\x6c\x79\x51\x70\x51\x72\x6c\x7c\x51\x79\x51\x6b\x51\x69\x51\x6a\x51\x78\x6c\x89\x51\x73\x6c\x7b\x6c\x7d\x51\x71\x51\x76\x6c\x7e\x6c\x8c\x00\x00\x52\xf7\x51\x7c\x00\x00\x51\x66\x6c\x8b\x00\x00\x6c\x8f\x6c\x7a\x6c\x91\x6c\x82\x51\x6f\x6c\x76\x51\x6e\x51\x81\x51\x75\x00\x00\x6c\x74\x6e\x78\x51\x7b\x51\x7f\x6c\x83\x6c\x88\x00\x00\x51\x82\x51\x7a\x51\x6c\x51\x62\x00\x00\x51\x67\x00\x00\x6c\x78\x51\x63\x6c\x90\x00\x00\x6c\x72\x6c\x71\x6c\x7f\x6c\x73\x51\x7e\x55\x5a\x51\x77\x6c\x81\x51\x64\x00\x00\x53\x49\x00\x00\x00\x00\x00\x00\x6c\x8e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 6d00 */ "\x6e\x7f\x6e\x83\x00\x00\x6e\x86\x6e\x7a\x00\x00\x00\x00\x6e\x89\x6e\x8c\x6e\x8e\x6e\x77\x52\xf8\x52\xfd\x70\xac\x53\x50\x6e\x87\x6e\x8f\x6e\x7e\x6e\x76\x00\x00\x00\x00\x00\x00\x70\xc7\x53\x43\x6e\x84\x6e\x7b\x6e\x7d\x53\x48\x00\x00\x6e\x81\x53\x42\x6e\x73\x6e\x8a\x00\x00\x6e\x8d\x00\x00\x00\x00\x52\xfc\x00\x00\x53\x4b\x6e\x70\x53\x4d\x52\xfa\x53\x51\x6e\x8b\x6e\x72\x53\x4e\x70\xc1\x6c\x8a\x53\x41\x52\xf9\x6e\x79\x6e\x71\x53\x4f\x53\x47\x6e\x85\x53\x4c\x53\x4a\x6e\x7c\x53\x44\x6e\x74\x53\x45\x53\x46\x6e\x75\x6e\x88\x52\xfb\x6e\x82\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x70\xaf\x55\x62\x55\x67\x00\x00\x00\x00\x00\x00\x70\xb8\x70\xbe\x70\xba\x70\xad\x70\xb0\x70\xa9\x70\xaa\x55\x6e\x55\x5f\x70\xb9\x70\xc2\x55\x69\x55\x5b\x00\x00\x55\x64\x70\xb1\x55\x66\x70\xb2\x70\xbc\x00\x00\x00\x00\x00\x00\x55\x68\x70\xcb\x70\xab\x55\x61\x55\x60\x55\x6c\x70\xa8\x70\xc9\x70\xbd\x70\xca\x70\xc4\x70\xb6", /* 6d80 */ "\x70\xc5\x00\x00\x70\xbf\x70\xc8\x70\xc6\x55\x6d\x70\xb7\x55\x5e\x55\x5d\x55\x65\x55\x6b\x70\xc3\x55\x6a\x70\xb4\x57\xc7\x00\x00\x70\xcc\x70\xb3\x70\xae\x55\x63\x55\x6f\x55\x5c\x00\x00\x70\xbb\x70\xc0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x57\xe9\x73\xc5\x73\xc9\x00\x00\x57\xd6\x57\xd4\x00\x00\x00\x00\x57\xcb\x73\xc7\x73\xc6\x57\xdf\x00\x00\x73\xcc\x57\xd9\x00\x00\x73\xde\x73\xea\x57\xc8\x73\xdb\x73\xd4\x57\xeb\x73\xc4\x00\x00\x73\xe0\x00\x00\x57\xe8\x57\xdc\x57\xe7\x57\xd2\x73\xd0\x73\xe2\x73\xda\x57\xd3\x57\xcd\x73\xe8\x00\x00\x73\xe1\x73\xe3\x57\xd5\x57\xdd\x73\xe5\x73\xce\x73\xdf\x73\xd3\x73\xe7\x57\xe2\x57\xca\x57\xe0\x73\xd8\x73\xd6\x73\xd7\x57\xd7\x73\xd2\x73\xd1\x57\xcc\x73\xcb\x73\xe9\x57\xce\x73\xd5\x57\xec\x00\x00\x57\xe6\x73\xca\x57\xe3\x57\xe1\x57\xea\x73\xdc\x57\xe5\x70\xb5\x73\xdd\x57\xe4\x73\xe4\x57\xc9\x73\xd9\x57\xdb\x73\xcd\x57\xda\x00\x00\x57\xd8\x57\xd0\x57\xcf\x77\x4e\x73\xe6\x00\x00\x00\x00", /* 6e00 */ "\x73\xcf\x00\x00\x00\x00\x77\x63\x00\x00\x57\xd1\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5a\x67\x57\xde\x5a\x55\x77\x5d\x5a\x63\x00\x00\x77\x51\x5a\x52\x5a\x4e\x77\x6f\x5a\x54\x5a\x58\x5a\x53\x5a\x5c\x77\x73\x77\x6a\x00\x00\x00\x00\x77\x58\x5a\x61\x5a\x5b\x77\x64\x5a\x4b\x77\x70\x77\x69\x5a\x4f\x77\x5e\x5a\x5e\x77\x7b\x77\x7c\x00\x00\x5a\x4c\x77\x6e\x5a\x60\x77\x62\x77\x54\x77\x55\x5a\x64\x77\x59\x77\x60\x77\x5a\x00\x00\x5a\x62\x5a\x6a\x77\x56\x77\x4f\x77\x50\x00\x00\x77\x52\x5a\x51\x77\x5f\x00\x00\x5a\x5f\x5a\x68\x00\x00\x00\x00\x77\x61\x77\x79\x77\x71\x5a\x4d\x77\x77\x5a\x59\x00\x00\x5a\x57\x00\x00\x77\x7d\x5a\x56\x77\x67\x77\x5b\x77\x65\x5a\x6d\x77\x6b\x77\x68\x77\x57\x5a\x69\x77\x75\x77\x72\x77\x7a\x5a\x50\x77\x66\x5a\x6c\x00\x00\x77\x6d\x00\x00\x00\x00\x5a\x5a\x5a\x5d\x00\x00\x77\x6c\x5a\x6b\x77\x5c\x73\xc8\x00\x00\x00\x00\x77\x76\x77\x74\x77\x78\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 6e80 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x77\x53\x5a\x66\x00\x00\x00\x00\x00\x00\x7a\xc8\x7a\xc7\x7a\xad\x5c\x84\x00\x00\x7a\xc6\x7a\xb0\x7a\xb1\x00\x00\x5c\x8e\x7a\xcf\x5c\x89\x7a\xc5\x00\x00\x7a\xaa\x5c\x8f\x5c\x85\x7a\xb9\x7a\xaf\x7a\xb2\x7a\xca\x5c\x7e\x7a\xd1\x7a\xc9\x5c\x88\x7a\xbe\x5c\x93\x00\x00\x00\x00\x5c\x92\x5c\x8c\x00\x00\x00\x00\x7a\xd0\x5c\x7f\x7a\xbc\x7a\xb3\x7a\xc0\x7a\xcc\x5c\x94\x00\x00\x5c\x82\x7a\xbb\x91\xc7\x7a\xb4\x5c\x8b\x00\x00\x5c\x8a\x7a\xb7\x7a\xc1\x7a\xcb\x7a\xae\x7a\xb8\x5c\x83\x7a\xc2\x5c\x90\x5c\x87\x7a\xb5\x5c\x86\x7a\xac\x7a\xba\x7a\xce\x5a\x65\x5e\xd6\x7a\xbd\x7e\x56\x7a\xbf\x7a\xcd\x5c\x8d\x7a\xb6\x5c\x81\x5c\x91\x60\xd8\x7a\xab\x00\x00\x7a\xc4\x00\x00\x00\x00\x00\x00\x7a\xc3\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7e\x72\x5e\xd3\x7e\x67\x7e\x6c\x5e\xc8\x00\x00\x7e\x58\x5e\xd5\x00\x00\x5e\xbf\x7e\x57\x7e\x78\x5e\xd7\x7e\x5b\x7e\x6b\x00\x00\x7e\x5d\x7e\x7b\x7e\x77\x5e\xbd\x5e\xc7", /* 6f00 */ "\x81\x7d\x5e\xd4\x5e\xc5\x7e\x59\x00\x00\x7e\x76\x5e\xc9\x7e\x73\x7e\x81\x7e\x5f\x7e\x68\x00\x00\x00\x00\x7e\x7e\x7e\x74\x5e\xc4\x00\x00\x00\x00\x7e\x66\x5e\xbe\x5e\xbc\x5e\xce\x00\x00\x00\x00\x7e\x64\x7e\x61\x7e\x62\x00\x00\x7e\x7a\x00\x00\x7e\x7f\x7e\x7d\x5e\xc2\x7e\x82\x5e\xc6\x5e\xcd\x00\x00\x7e\x5a\x81\x65\x7e\x63\x00\x00\x5e\xc0\x5e\xd2\x5e\xcf\x5e\xc3\x7e\x6d\x7e\x5e\x5e\xd0\x7e\x6f\x5e\xca\x5e\xcc\x5e\xbb\x00\x00\x7e\x71\x7e\x69\x7e\x5c\x5e\xcb\x7e\x79\x7e\x7c\x7e\x65\x7e\x70\x00\x00\x5e\xc1\x60\xc7\x7e\x6e\x81\x64\x00\x00\x7e\x75\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7e\x60\x81\x6e\x81\x78\x60\xca\x81\x77\x81\x84\x60\xcc\x81\x75\x00\x00\x81\x79\x60\xd7\x00\x00\x81\x70\x60\xcf\x00\x00\x81\x7c\x84\x9c\x60\xdb\x60\xda\x81\x7e\x81\x6d\x81\x89\x60\xd5\x00\x00\x60\xcb\x81\x82\x00\x00\x81\x86\x81\x8b\x81\x7f\x81\x73\x60\xce\x60\xd1\x60\xd9\x60\xd4\x00\x00\x81\x76\x7e\x6a\x00\x00\x00\x00\x81\x72\x81\x8a\x60\xd0\x00\x00\x60\xd3\x81\x8c\x60\xc8\x81\x81\x81\x66\x81\x87", /* 6f80 */ "\x64\x4a\x00\x00\x81\x74\x00\x00\x60\xc9\x81\x6f\x60\xcd\x81\x67\x5e\xd1\x81\x6b\x00\x00\x81\x85\x81\x6c\x81\x6a\x60\xd2\x00\x00\x81\x83\x00\x00\x81\x69\x81\x7b\x81\x7a\x81\x88\x81\x71\x60\xd6\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x84\x9f\x00\x00\x62\xb2\x62\xa8\x84\xab\x84\x97\x62\xaa\x84\xa3\x62\xb1\x62\xac\x84\xa1\x87\x5c\x84\xa7\x84\xad\x84\xa6\x84\x95\x84\xa4\x84\xaf\x84\xb1\x62\xa7\x84\xb0\x62\xad\x62\xb3\x00\x00\x62\xb0\x00\x00\x84\xaa\x62\xaf\x84\xa5\x00\x00\x84\x99\x84\x9e\x00\x00\x84\xa9\x62\xae\x62\xab\x62\xa6\x62\xa9\x84\x9d\x00\x00\x81\x68\x84\x98\x84\x9b\x84\xac\x84\xa0\x84\x96\x87\x5b\x84\xae\x84\x9a\x84\xa8\x00\x00\x00\x00\x00\x00\x00\x00\x87\x5e\x64\x4e\x00\x00\x00\x00\x64\x42\x00\x00\x00\x00\x64\x46\x87\x60\x87\x66\x87\x64\x64\x44\x64\x45\x64\x4c\x87\x67\x87\x5f\x64\x47\x00\x00\x87\x63\x87\x62\x87\x68\x64\x4d\x00\x00\x64\x48\x64\x4b\x87\x61\x64\x4f\x64\x49\x64\x50\x64\x43\x87\x65\x00\x00\x87\x5d\x00\x00\x00\x00\x89\xa5\x00\x00\x00\x00\x65\x7c\x89\xa2\x89\xa4\x00\x00\x65\x7a\x89\xa0", /* 7000 */ "\x89\xa1\x89\x9c\x00\x00\x00\x00\x84\xa2\x89\x9d\x65\x7b\x89\x99\x00\x00\x65\x78\x89\xa6\x65\x79\x89\x9a\x89\x9b\x89\x9f\x65\x7e\x00\x00\x65\x7d\x00\x00\x00\x00\x89\x9e\x66\x64\x8b\x8e\x8b\x94\x66\x65\x8b\x8b\x66\x62\x66\x5f\x8b\x96\x66\x63\x00\x00\x66\x60\x8b\x8d\x8b\x90\x8b\x91\x8b\x92\x8b\x95\x00\x00\x89\xa3\x8b\x8c\x66\x61\x8b\x93\x8b\x97\x8b\x8f\x00\x00\x00\x00\x00\x00\x8d\x4d\x66\xf4\x8d\x50\x66\xf5\x8d\x58\x8d\x4f\x8d\x4c\x00\x00\x8d\x4e\x8d\x52\x8d\x55\x8d\x54\x8d\x57\x8d\x4b\x00\x00\x66\xf3\x8d\x53\x8d\x56\x8d\x59\x8d\x51\x8e\x83\x8e\x84\x8e\x88\x8e\x89\x00\x00\x8e\x86\x8e\x87\x8e\x85\x00\x00\x67\x95\x00\x00\x00\x00\x00\x00\x00\x00\x67\xe3\x8f\x7b\x00\x00\x00\x00\x8f\x78\x8f\x79\x8f\x7a\x67\xe4\x00\x00\x90\x56\x90\x55\x00\x00\x90\xbe\x68\x81\x90\xbc\x90\xbf\x90\xbd\x91\x47\x68\xa3\x68\xb1\x91\x93\x91\x7d\x00\x00\x91\x92\x91\xc0\x91\xc1\x4c\xd5\x00\x00\x00\x00\x00\x00\x00\x00\x4e\x68\x69\xe0\x00\x00\x00\x00\x6a\xde\x00\x00\x4f\xa1\x00\x00\x4f\xa4\x00\x00\x6a\xdf\x00\x00\x4f\xa2\x4f\xa3\x00\x00\x00\x00", /* 7080 */ "\x00\x00\x00\x00\x6c\x9a\x6c\x9c\x6c\x97\x6c\x94\x6c\x96\x00\x00\x00\x00\x00\x00\x51\x86\x00\x00\x00\x00\x00\x00\x51\x84\x00\x00\x00\x00\x6c\x98\x51\x85\x6c\x95\x6c\x92\x51\x83\x6c\x99\x00\x00\x6c\x93\x51\x87\x6c\x9b\x00\x00\x00\x00\x00\x00\x00\x00\x6e\x91\x00\x00\x6e\x95\x00\x00\x00\x00\x53\x5a\x00\x00\x00\x00\x00\x00\x00\x00\x6e\x98\x00\x00\x53\x52\x53\x55\x53\x57\x53\x59\x53\x56\x6e\x94\x6e\x93\x00\x00\x53\x54\x6e\x96\x6e\x97\x00\x00\x6e\x90\x53\x58\x00\x00\x53\x53\x00\x00\x00\x00\x00\x00\x6e\x92\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x70\xda\x70\xdb\x70\xdc\x55\x74\x00\x00\x55\x70\x70\xd1\x00\x00\x70\xd9\x70\xde\x55\x75\x00\x00\x70\xcf\x70\xd5\x70\xce\x70\xd8\x00\x00\x00\x00\x70\xd4\x55\x71\x55\x73\x70\xdd\x00\x00\x70\xcd\x70\xd0\x70\xd6\x00\x00\x70\xd7\x70\xdf\x70\xd3\x00\x00\x55\x72\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x57\xf1\x73\xf1\x00\x00\x00\x00\x73\xf3\x73\xef\x00\x00\x73\xfb\x73\xed\x73\xfa\x57\xed\x73\xeb\x77\x82\x73\xf5\x57\xf0\x00\x00\x73\xf6", /* 7100 */ "\x73\xf9\x00\x00\x73\xfd\x00\x00\x73\xf2\x00\x00\x73\xf7\x00\x00\x00\x00\x57\xee\x57\xef\x73\xfc\x73\xf0\x73\xec\x74\x41\x00\x00\x73\xf4\x00\x00\x00\x00\x73\xf8\x00\x00\x00\x00\x00\x00\x73\xee\x00\x00\x5a\x6e\x5a\x6f\x77\x8c\x5a\x75\x00\x00\x77\x7f\x77\x89\x77\x7e\x5a\x72\x77\x87\x77\x85\x00\x00\x77\x86\x5a\x70\x00\x00\x77\x8a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x77\x83\x77\x81\x5a\x71\x77\x84\x77\x88\x00\x00\x00\x00\x00\x00\x5a\x73\x00\x00\x00\x00\x00\x00\x77\x8b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7a\xd7\x7a\xde\x7a\xe0\x7a\xe6\x00\x00\x5c\xa1\x7a\xd2\x00\x00\x5c\x99\x00\x00\x7a\xe1\x5c\x9e\x7a\xe7\x5c\x95\x00\x00\x7a\xe4\x00\x00\x7a\xd4\x7a\xe5\x7a\xd3\x00\x00\x5c\xa3\x00\x00\x7a\xdf\x5c\x96\x7a\xe8\x00\x00\x5c\x9b\x7a\xd8\x5c\xa0\x7a\xe3\x7a\xd6\x7a\xdd\x7a\xd9\x7a\xd5\x5c\x98\x5c\x9f\x5c\x9d\x5c\x9a\x5c\xa2\x5c\x97\x7a\xdc\x00\x00\x5c\x9c\x00\x00\x5a\x74\x00\x00\x7a\xe2\x00\x00\x7a\xda\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7a\xdb\x00\x00\x00\x00\x7e\x8a\x00\x00\x5e\xda\x00\x00\x00\x00", /* 7180 */ "\x7e\x86\x7e\x8c\x7e\x88\x00\x00\x5e\xdc\x7e\x87\x7e\x8b\x7e\x83\x00\x00\x7e\x85\x5e\xdb\x00\x00\x00\x00\x00\x00\x00\x00\x7e\x89\x7e\x84\x00\x00\x5e\xdd\x00\x00\x5e\xd8\x00\x00\x00\x00\x7e\x8d\x00\x00\x5e\xd9\x81\x92\x81\x8f\x81\x9b\x81\x95\x81\x97\x60\xdc\x81\x91\x81\x99\x00\x00\x00\x00\x81\x98\x81\x96\x00\x00\x81\x9c\x60\xdf\x81\x93\x81\x9a\x00\x00\x60\xdd\x00\x00\x00\x00\x81\x8e\x81\x90\x60\xde\x81\x8d\x81\x9d\x00\x00\x81\x94\x00\x00\x00\x00\x84\xb5\x62\xba\x00\x00\x00\x00\x84\xc0\x84\xbe\x62\xb4\x84\xb4\x84\xb7\x84\xb8\x84\xb3\x62\xbe\x62\xbf\x84\xb2\x84\xc1\x84\xbc\x62\xb8\x62\xb5\x84\xbb\x84\xb9\x00\x00\x00\x00\x62\xbb\x84\xbd\x62\xb6\x00\x00\x62\xb7\x00\x00\x84\xba\x62\xb9\x84\xb6\x00\x00\x84\xbf\x62\xbc\x84\xc2\x84\xc3\x62\xbd\x00\x00\x00\x00\x64\x52\x64\x59\x87\x69\x87\x6f\x00\x00\x87\x6d\x64\x55\x64\x54\x64\x51\x87\x6b\x00\x00\x00\x00\x00\x00\x64\x57\x64\x56\x64\x53\x00\x00\x87\x6e\x87\x6a\x87\x6c\x00\x00\x64\x58\x00\x00\x00\x00\x00\x00\x65\x83\x89\xa9\x00\x00\x65\x7f\x65\x81\x89\xab\x65\x82\x89\xa8", /* 7200 */ "\x00\x00\x89\xa7\x8b\x9b\x89\xaa\x00\x00\x8b\x9c\x66\x66\x8b\x9a\x00\x00\x00\x00\x8b\x99\x00\x00\x8b\x98\x66\x67\x00\x00\x00\x00\x66\xf6\x00\x00\x00\x00\x8d\x5a\x8d\x5b\x00\x00\x00\x00\x00\x00\x00\x00\x8e\x8c\x8e\x8b\x67\x96\x00\x00\x8e\x8a\x8f\x7c\x8f\x7d\x00\x00\x00\x00\x90\x57\x90\xc0\x00\x00\x00\x00\x91\x48\x91\xac\x68\xc5\x91\xb6\x4c\xd6\x00\x00\x51\x88\x51\x89\x00\x00\x00\x00\x53\x5b\x00\x00\x00\x00\x00\x00\x00\x00\x64\x5a\x4c\xd7\x00\x00\x51\x8a\x55\x76\x5c\xa4\x4c\xd8\x00\x00\x57\xf2\x5e\xde\x69\x63\x00\x00\x6e\x99\x70\xe0\x00\x00\x7e\x8e\x00\x00\x64\x5b\x4c\xd9\x51\x8b\x6e\x9a\x6e\x9b\x77\x8d\x5a\x76\x00\x00\x00\x00\x7a\xe9\x00\x00\x00\x00\x5c\xa5\x7e\x8f\x00\x00\x00\x00\x60\xe0\x00\x00\x66\x68\x4c\xda\x77\x8e\x4c\xdb\x00\x00\x4e\x6a\x69\xe1\x4e\x69\x4f\xa7\x4f\xa6\x4f\xa5\x6a\xe0\x00\x00\x00\x00\x00\x00\x51\x8c\x00\x00\x51\x8d\x6c\x9d\x00\x00\x6e\x9c\x00\x00\x6e\x9f\x53\x5d\x6e\x9d\x00\x00\x53\x5c\x6e\x9e\x53\x5e\x00\x00\x70\xe3\x70\xe2\x70\xe1\x55\x77\x00\x00\x74\x43\x74\x44\x57\xf3\x74\x42\x74\x45", /* 7280 */ "\x5a\x78\x57\xf4\x00\x00\x00\x00\x5a\x77\x77\x92\x77\x91\x00\x00\x77\x8f\x77\x90\x00\x00\x77\x93\x7a\xeb\x7a\xea\x7a\xee\x00\x00\x7a\xed\x7a\xec\x5e\xdf\x7e\x92\x00\x00\x7e\x91\x5e\xe0\x7e\x90\x81\x9e\x00\x00\x81\x9f\x60\xe1\x00\x00\x84\xc4\x84\xc5\x00\x00\x00\x00\x8b\xa1\x66\x69\x8b\xa0\x8b\x9f\x8b\x9d\x8b\x9e\x67\x97\x8d\x5c\x8f\x7e\x91\x49\x00\x00\x4c\xdc\x00\x00\x69\x85\x4d\x88\x69\x86\x00\x00\x00\x00\x00\x00\x69\xe2\x69\xe3\x00\x00\x00\x00\x00\x00\x00\x00\x6a\xe6\x00\x00\x00\x00\x6a\xe2\x00\x00\x6a\xe1\x51\x8e\x6a\xe5\x4f\xa9\x6a\xe3\x4f\xa8\x6a\xe7\x6a\xe4\x00\x00\x00\x00\x6c\xa1\x6e\xa0\x6c\x9f\x6c\xa6\x00\x00\x51\x8f\x00\x00\x51\x92\x6c\xa7\x6c\xa3\x00\x00\x6c\xa4\x00\x00\x6c\x9e\x51\x91\x6c\xa0\x51\x90\x6c\xa5\x00\x00\x6c\xa2\x00\x00\x00\x00\x6e\xa4\x53\x60\x53\x61\x00\x00\x6e\xa7\x6e\xa1\x00\x00\x6e\xa6\x00\x00\x6e\xa2\x53\x5f\x6e\xa5\x6e\xa3\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x70\xe9\x70\xe6\x00\x00\x70\xe8\x55\x7c\x55\x7b\x55\x79\x70\xe5\x70\xea\x55\x78\x55\x7a\x70\xe7\x74\x4d", /* 7300 */ "\x70\xe4\x70\xeb\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x74\x48\x74\x4c\x00\x00\x74\x4b\x77\x95\x77\xa0\x00\x00\x00\x00\x74\x4e\x00\x00\x74\x49\x77\x94\x57\xf8\x00\x00\x00\x00\x57\xf7\x74\x47\x74\x4a\x57\xf9\x00\x00\x57\xf6\x57\xf5\x74\x46\x74\x4f\x00\x00\x00\x00\x00\x00\x77\x97\x77\x9e\x00\x00\x5a\x7a\x77\x9d\x77\x9a\x00\x00\x5a\x7c\x00\x00\x00\x00\x00\x00\x77\x9c\x00\x00\x00\x00\x77\x96\x77\x98\x77\x9b\x77\x99\x5a\x7b\x77\x9f\x5a\x79\x5c\xa6\x00\x00\x00\x00\x7a\xf2\x7a\xf1\x7a\xef\x00\x00\x5c\xa9\x5c\xa8\x7a\xf3\x00\x00\x7a\xf0\x7e\x93\x5e\xe1\x5c\xa7\x00\x00\x00\x00\x00\x00\x7a\xf5\x7a\xf4\x00\x00\x7e\x96\x7e\x94\x60\xe2\x00\x00\x5e\xe2\x7e\x95\x81\xa1\x00\x00\x00\x00\x00\x00\x00\x00\x60\xe3\x81\xa0\x81\xa9\x81\xa8\x81\xa6\x00\x00\x81\xa5\x81\xa2\x81\xa3\x81\xa4\x81\xa7\x81\xaa\x00\x00\x00\x00\x84\xca\x84\xc7\x84\xc8\x62\xc0\x84\xc6\x84\xcc\x84\xcb\x84\xc9\x00\x00\x87\x71\x87\x72\x64\x5c\x00\x00\x64\x5d\x87\x70\x00\x00\x65\x85\x89\xac\x65\x84\x66\x6a\x00\x00\x66\x6b\x66\xf7\x8d\x5e\x8d\x5d\x8e\x8d\x8f\x7f", /* 7380 */ "\x67\xe5\x90\x59\x90\x58\x90\x5a\x4d\x89\x6e\xa8\x55\x7d\x57\xfa\x74\x50\x4d\x8a\x69\x87\x4c\xdd\x00\x00\x00\x00\x69\xe4\x00\x00\x00\x00\x00\x00\x6a\xec\x6a\xea\x6a\xeb\x6a\xe8\x4f\xaa\x6a\xe9\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6c\xaf\x00\x00\x51\x95\x6c\xad\x6c\xa9\x6c\xac\x00\x00\x6c\xa8\x51\x97\x6c\xab\x00\x00\x51\x94\x51\x93\x00\x00\x51\x96\x6c\xae\x6c\xaa\x00\x00\x00\x00\x00\x00\x00\x00\x53\x65\x53\x68\x6e\xb0\x6e\xaf\x6e\xae\x53\x62\x6e\xb7\x6e\xad\x00\x00\x53\x64\x70\xf0\x00\x00\x6e\xb4\x6e\xb2\x53\x67\x00\x00\x6e\xaa\x6e\xb5\x00\x00\x6e\xac\x6e\xb6\x6e\xb3\x6e\xab\x00\x00\x53\x63\x6e\xb8\x6e\xa9\x53\x66\x00\x00\x00\x00\x00\x00\x00\x00\x70\xf5\x70\xec\x70\xf7\x00\x00\x70\xef\x70\xfa\x70\xfb\x70\xed\x70\xf9\x70\xf6\x70\xf4\x70\xf8\x55\x84\x00\x00\x55\x82\x00\x00\x00\x00\x70\xf2\x00\x00\x70\xee\x00\x00\x70\xf1\x70\xfc\x70\xf3\x55\x83\x6e\xb1\x00\x00\x55\x7e\x55\x81\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x74\x5e\x74\x53\x74\x51\x00\x00\x74\x52\x00\x00\x74\x59\x00\x00\x74\x5a\x74\x56\x58\x42\x74\x5b", /* 7400 */ "\x74\x58\x74\x55\x00\x00\x57\xfd\x74\x54\x57\xfb\x58\x41\x74\x57\x74\x5f\x55\x7f\x57\xfc\x74\x5d\x74\x5c\x58\x43\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x77\xa5\x00\x00\x00\x00\x00\x00\x77\xa6\x5a\x87\x00\x00\x77\xac\x00\x00\x00\x00\x77\xae\x77\xa7\x5a\x81\x77\xab\x77\xaa\x5a\x82\x5a\x88\x00\x00\x5a\x89\x77\xad\x5a\x7e\x77\xa4\x77\xa2\x77\xa8\x77\xa1\x5a\x86\x77\xa3\x77\xa9\x77\xaf\x5a\x7f\x5a\x85\x5a\x83\x5a\x84\x00\x00\x00\x00\x00\x00\x5a\x7d\x00\x00\x00\x00\x00\x00\x00\x00\x5c\xb0\x7a\xfc\x5c\xaf\x7b\x43\x00\x00\x7a\xf6\x00\x00\x7b\x44\x00\x00\x00\x00\x00\x00\x7a\xf7\x7a\xf8\x00\x00\x7b\x45\x7b\x42\x7a\xfd\x7b\x41\x7a\xfa\x7a\xf9\x00\x00\x7b\x46\x5c\xac\x00\x00\x7a\xfb\x00\x00\x5c\xb1\x5c\xab\x5c\xb2\x5c\xb3\x00\x00\x5c\xae\x5c\xad\x00\x00\x00\x00\x7e\x97\x5e\xe4\x5e\xe3\x00\x00\x00\x00\x7e\x9c\x00\x00\x60\xe4\x5e\xe5\x00\x00\x00\x00\x5e\xe7\x7e\x9d\x5c\xaa\x5e\xe6\x7e\x99\x7e\x9b\x7e\x98\x00\x00\x7e\x9a\x00\x00\x00\x00\x00\x00\x81\xb4\x00\x00\x00\x00\x81\xb3\x81\xb0\x60\xe7\x84\xcd", /* 7480 */ "\x60\xe8\x81\xaf\x00\x00\x60\xe6\x00\x00\x81\xb1\x81\xae\x81\xab\x81\xb2\x81\xac\x81\xad\x60\xe5\x00\x00\x00\x00\x00\x00\x00\x00\x87\x76\x00\x00\x84\xd1\x00\x00\x84\xd0\x84\xd2\x00\x00\x87\x73\x62\xc3\x00\x00\x84\xce\x00\x00\x62\xc1\x00\x00\x62\xc5\x62\xc4\x84\xcf\x84\xd3\x00\x00\x62\xc2\x00\x00\x87\x7a\x64\x60\x65\x86\x64\x61\x64\x5e\x87\x77\x87\x75\x00\x00\x87\x78\x00\x00\x87\x7b\x64\x5f\x87\x79\x87\x74\x00\x00\x00\x00\x89\xaf\x89\xb2\x8b\xa4\x89\xad\x00\x00\x8d\x5f\x89\xb3\x00\x00\x66\x6c\x89\xb1\x65\x87\x89\xae\x89\xb0\x89\xb4\x8b\xa5\x00\x00\x8b\xa3\x00\x00\x00\x00\x00\x00\x00\x00\x66\x6d\x8b\xa2\x00\x00\x00\x00\x00\x00\x66\xf8\x00\x00\x00\x00\x00\x00\x00\x00\x67\x99\x8f\x82\x67\x98\x8f\x84\x8f\x81\x8f\x83\x68\x5c\x90\xc1\x4d\x8b\x6c\xb0\x70\xfd\x71\x41\x58\x44\x7b\x47\x62\xc6\x66\x6e\x67\xe6\x90\xc2\x4d\x8c\x00\x00\x6c\xb1\x46\xf8\x00\x00\x00\x00\x6e\xb9\x00\x00\x6e\xba\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x71\x42\x71\x43\x58\x45\x58\x46\x00\x00\x00\x00\x00\x00\x77\xb0\x00\x00\x7b\x4a\x7b\x49\x7b\x48", /* 7500 */ "\x7e\x9e\x00\x00\x7e\x9f\x7e\xa0\x5e\xe8\x00\x00\x00\x00\x81\xb6\x81\xb5\x00\x00\x00\x00\x84\xd4\x62\xc7\x62\xc8\x00\x00\x87\x7f\x87\x7c\x87\x7d\x87\x7e\x89\xb6\x89\xb5\x65\x88\x8b\xa6\x8e\x8e\x4d\x8d\x00\x00\x53\x69\x00\x00\x58\x47\x7b\x4b\x00\x00\x4d\x8e\x00\x00\x71\x44\x58\x48\x00\x00\x00\x00\x5a\x8a\x5a\x8b\x00\x00\x4d\x8f\x4d\x90\x69\xe5\x4f\xac\x4f\xab\x53\x6a\x6e\xbb\x77\xb1\x4d\x91\x4d\x92\x4d\x93\x4d\x94\x00\x00\x00\x00\x00\x00\x4f\xad\x4f\xae\x6a\xee\x6a\xed\x00\x00\x00\x00\x51\x98\x6c\xb4\x6c\xb2\x6c\xb3\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6e\xbc\x6e\xbd\x00\x00\x00\x00\x53\x6e\x53\x6c\x00\x00\x53\x6d\x53\x6b\x00\x00\x00\x00\x00\x00\x00\x00\x55\x85\x00\x00\x00\x00\x00\x00\x00\x00\x55\x89\x55\x88\x71\x45\x55\x87\x55\x86\x00\x00\x71\x46\x00\x00\x00\x00\x58\x4b\x74\x61\x74\x60\x58\x49\x58\x4a\x00\x00\x00\x00\x00\x00\x5a\x8d\x5a\x8c\x77\xb3\x00\x00\x00\x00\x77\xb2\x58\x4c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5c\xb4\x7b\x4d\x5c\xb5\x7b\x4c\x00\x00\x00\x00\x00\x00\x7e\xa1\x81\xb7\x60\xe9", /* 7580 */ "\x84\xd5\x00\x00\x00\x00\x00\x00\x87\x81\x00\x00\x66\x70\x66\x6f\x00\x00\x00\x00\x67\xe7\x4d\x95\x6c\xb5\x00\x00\x00\x00\x58\x4d\x7e\xa2\x5e\xe9\x48\xa8\x00\x00\x6a\xef\x6a\xf0\x00\x00\x00\x00\x6c\xb6\x51\x9a\x51\x9b\x00\x00\x00\x00\x51\x99\x00\x00\x00\x00\x00\x00\x00\x00\x53\x72\x53\x73\x53\x70\x53\x71\x00\x00\x6e\xbe\x00\x00\x00\x00\x6e\xbf\x53\x6f\x00\x00\x00\x00\x00\x00\x00\x00\x71\x47\x00\x00\x55\x8d\x55\x8e\x00\x00\x58\x50\x71\x4d\x00\x00\x55\x93\x55\x91\x71\x4e\x71\x49\x55\x90\x55\x8f\x55\x8a\x71\x4c\x71\x4b\x71\x48\x55\x92\x00\x00\x71\x4a\x55\x8b\x00\x00\x55\x8c\x00\x00\x00\x00\x58\x51\x74\x65\x74\x66\x58\x52\x74\x62\x74\x64\x74\x68\x74\x67\x74\x63\x00\x00\x58\x4e\x58\x4f\x00\x00\x77\xbb\x5a\x92\x5a\x91\x77\xb5\x5a\x8f\x00\x00\x77\xb8\x5a\x93\x77\xb9\x5a\x94\x77\xb6\x5a\x8e\x5a\x90\x77\xba\x00\x00\x77\xb7\x77\xb4\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7b\x5a\x00\x00\x7b\x4f\x5c\xb7\x5c\xba\x5c\xb9\x5c\xbe\x5c\xbd\x7b\x5b\x7b\x59\x7b\x52\x7b\x56\x7b\x55\x5c\xbb\x7b\x58\x7b\x54\x7b\x5c\x7b\x53\x5c\xbc", /* 7600 */ "\x5c\xb6\x5c\xb8\x00\x00\x7b\x51\x00\x00\x00\x00\x00\x00\x00\x00\x7e\xa4\x5e\xed\x7e\xa8\x5e\xec\x7e\xa5\x5e\xeb\x00\x00\x7b\x50\x7b\x57\x7e\xa7\x00\x00\x5e\xee\x7e\xa9\x7e\xa6\x7e\xa3\x00\x00\x00\x00\x81\xba\x81\xbe\x81\xc0\x81\xbc\x81\xbb\x81\xb9\x60\xec\x60\xea\x60\xef\x60\xf0\x81\xbd\x60\xed\x81\xb8\x60\xee\x5e\xea\x81\xbf\x60\xeb\x00\x00\x00\x00\x00\x00\x84\xd7\x00\x00\x84\xd6\x84\xde\x84\xd8\x84\xdd\x84\xda\x62\xc9\x84\xdc\x00\x00\x00\x00\x62\xca\x00\x00\x62\xcb\x00\x00\x84\xdb\x84\xd9\x00\x00\x00\x00\x00\x00\x00\x00\x64\x63\x87\x82\x00\x00\x00\x00\x64\x62\x87\x85\x87\x83\x87\x84\x00\x00\x00\x00\x64\x64\x00\x00\x00\x00\x00\x00\x89\xba\x00\x00\x65\x8b\x89\xbb\x00\x00\x00\x00\x65\x89\x89\xbc\x65\x8a\x89\xb9\x89\xbd\x00\x00\x89\xb7\x00\x00\x00\x00\x66\x71\x8b\xa7\x66\x72\x66\xf9\x00\x00\x89\xb8\x66\xfa\x00\x00\x00\x00\x00\x00\x67\x9a\x8e\x8f\x00\x00\x67\xe9\x8f\x85\x67\xe8\x00\x00\x90\x5b\x68\x82\x68\x83\x00\x00\x00\x00\x91\xbc\x48\xa9\x00\x00\x53\x74\x6e\xc0\x00\x00\x5a\x95\x5a\x96\x4d\x96\x4e\x6b\x69\xe6", /* 7680 */ "\x00\x00\x6a\xf1\x4f\xaf\x00\x00\x51\x9c\x00\x00\x53\x75\x53\x76\x53\x77\x74\x6a\x71\x4f\x55\x94\x00\x00\x00\x00\x58\x53\x74\x69\x00\x00\x00\x00\x77\xbd\x5a\x98\x00\x00\x77\xbc\x5a\x97\x00\x00\x00\x00\x7b\x5d\x60\xf1\x81\xc4\x81\xc1\x81\xc2\x81\xc3\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x87\x86\x00\x00\x89\xbe\x00\x00\x00\x00\x00\x00\x8d\x61\x8d\x60\x00\x00\x8f\x86\x4d\x97\x6c\xb7\x55\x95\x00\x00\x00\x00\x00\x00\x5a\x99\x7b\x5e\x00\x00\x00\x00\x7e\xaa\x00\x00\x60\xf2\x84\xdf\x00\x00\x89\xbf\x8d\x62\x4d\x98\x00\x00\x00\x00\x51\x9d\x53\x7a\x6e\xc1\x53\x7b\x53\x79\x00\x00\x53\x78\x71\x50\x55\x96\x00\x00\x00\x00\x55\x97\x55\x98\x00\x00\x00\x00\x00\x00\x58\x55\x74\x6b\x58\x54\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x77\xbe\x58\x56\x5a\x9a\x7b\x5f\x5c\xbf\x5c\xc0\x00\x00\x5e\xef\x00\x00\x5e\xf0\x60\xf3\x62\xcd\x84\xe0\x62\xcc\x00\x00\x87\x87\x64\x65\x00\x00\x89\xc0\x8d\x63\x4d\x99\x4f\xb0\x6c\xba\x6c\xb9\x51\x9e\x6c\xb8\x51\x9f\x6c\xbb\x00\x00\x6e\xc7\x53\x7e\x53\x7d\x6e\xc9\x6e\xc8\x53\x83\x00\x00\x53\x82\x00\x00", /* 7700 */ "\x00\x00\x53\x7c\x00\x00\x6e\xc3\x6e\xc4\x6e\xc5\x00\x00\x53\x84\x6e\xc2\x53\x7f\x6e\xc6\x53\x81\x00\x00\x00\x00\x00\x00\x00\x00\x71\x53\x71\x57\x71\x55\x71\x54\x00\x00\x71\x58\x00\x00\x00\x00\x00\x00\x71\x59\x71\x5a\x71\x52\x00\x00\x71\x51\x00\x00\x55\x9a\x55\x9b\x00\x00\x71\x5b\x71\x56\x00\x00\x74\x74\x00\x00\x71\x5c\x55\x9c\x55\x99\x00\x00\x00\x00\x00\x00\x74\x6e\x00\x00\x74\x6d\x00\x00\x74\x6f\x74\x70\x74\x72\x74\x71\x74\x76\x58\x5a\x58\x57\x58\x5b\x74\x6c\x58\x5c\x74\x75\x58\x59\x74\x73\x58\x58\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x77\xc1\x77\xc3\x77\xbf\x77\xc0\x00\x00\x00\x00\x77\xc4\x77\xc6\x77\xc7\x77\xc2\x77\xc5\x5a\x9b\x00\x00\x00\x00\x7b\x63\x00\x00\x7b\x68\x7b\x60\x7b\x64\x00\x00\x00\x00\x7b\x69\x7b\x65\x5c\xc1\x5c\xc9\x00\x00\x5c\xc4\x7b\x61\x7b\x62\x5e\xf4\x5c\xcc\x5c\xc5\x00\x00\x5c\xca\x5c\xc3\x7b\x67\x5c\xcb\x7b\x66\x5c\xc7\x5c\xc2\x5c\xc8\x7b\x6a\x7e\xaf\x7e\xb1\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5c\xc6\x00\x00\x00\x00\x7e\xac\x5e\xf2\x7e\xb2\x5e\xf3", /* 7780 */ "\x7e\xb0\x7e\xab\x7e\xae\x7e\xb3\x5e\xf1\x7e\xad\x00\x00\x60\xf5\x81\xc8\x81\xc7\x00\x00\x60\xf8\x60\xf6\x81\xc5\x60\xf4\x81\xc6\x00\x00\x60\xf7\x00\x00\x00\x00\x00\x00\x84\xe8\x00\x00\x84\xea\x00\x00\x84\xe9\x84\xe1\x84\xe5\x84\xe4\x84\xe2\x62\xcf\x62\xd0\x62\xce\x84\xe3\x84\xe6\x84\xe7\x00\x00\x62\xd1\x00\x00\x64\x6a\x87\x8f\x00\x00\x64\x67\x87\x89\x64\x69\x64\x6b\x00\x00\x00\x00\x64\x68\x87\x8e\x87\x8a\x64\x66\x87\x8d\x87\x88\x87\x8c\x87\x8b\x00\x00\x00\x00\x89\xc2\x65\x8e\x65\x8f\x65\x8c\x00\x00\x65\x8d\x00\x00\x00\x00\x89\xc1\x00\x00\x8b\xaa\x00\x00\x00\x00\x66\x73\x00\x00\x8b\xa8\x8b\xa9\x00\x00\x8d\x64\x8d\x67\x8d\x65\x8d\x66\x8e\x90\x00\x00\x00\x00\x67\x9b\x90\x5c\x90\xc3\x00\x00\x68\x84\x91\x4a\x91\x4b\x68\xb2\x4d\x9a\x53\x85\x00\x00\x77\xc8\x00\x00\x7b\x6b\x00\x00\x4d\x9b\x4f\xb1\x00\x00\x51\xa0\x00\x00\x6e\xca\x6e\xcb\x55\x9d\x00\x00\x00\x00\x77\xc9\x5a\x9c\x5c\xcd\x64\x6c\x87\x90\x8b\xab\x8d\x68\x4d\x9c\x00\x00\x00\x00\x00\x00\x6c\xc1\x6c\xbc\x6c\xbe\x6c\xc0\x6c\xbf\x6c\xbd\x51\xa1\x00\x00\x00\x00", /* 7800 */ "\x00\x00\x00\x00\x53\x86\x6e\xd4\x00\x00\x6e\xcf\x6e\xcc\x00\x00\x00\x00\x6e\xd3\x00\x00\x00\x00\x53\x88\x53\x89\x6e\xd2\x6e\xd1\x6e\xd0\x6e\xcd\x6e\xce\x6e\xd5\x53\x87\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x55\xa1\x00\x00\x55\xa7\x55\xa6\x71\x65\x71\x5f\x71\x5d\x00\x00\x55\xa4\x74\x7d\x55\x9f\x71\x62\x71\x66\x71\x68\x71\x64\x71\x5e\x55\xa5\x71\x63\x71\x61\x55\x9e\x71\x69\x55\xa8\x71\x67\x55\xa2\x71\x60\x00\x00\x55\xa3\x55\xa0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x58\x5e\x00\x00\x74\x7e\x00\x00\x00\x00\x74\x77\x74\x79\x74\x7b\x00\x00\x74\x7c\x74\x7a\x58\x5f\x00\x00\x74\x7f\x00\x00\x74\x78\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x77\xcd\x5a\x9d\x77\xd5\x00\x00\x77\xca\x00\x00\x77\xd6\x00\x00\x77\xcb\x77\xcc\x00\x00\x00\x00\x77\xd4\x77\xd3\x77\xd0\x58\x5d\x5a\x9e\x77\xce\x77\xd1\x5a\x9f\x77\xd2\x77\xcf\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7b\x76\x00\x00\x7b\x7a\x5c\xd4\x00\x00\x7e\xb9\x5c\xd7", /* 7880 */ "\x7b\x78\x00\x00\x00\x00\x7b\x75\x7b\x70\x7b\x72\x7b\x73\x7b\x6c\x00\x00\x5c\xd3\x00\x00\x00\x00\x5c\xd2\x00\x00\x5c\xce\x7b\x6f\x00\x00\x5c\xd5\x00\x00\x5c\xd6\x7b\x6e\x7b\x71\x7b\x79\x5c\xd0\x5c\xd1\x7b\x77\x7b\x6d\x00\x00\x00\x00\x00\x00\x7e\xbb\x5e\xf6\x7e\xbd\x7b\x74\x7e\xbf\x5e\xfa\x7e\xc0\x7e\xbc\x00\x00\x5e\xf7\x7e\xb8\x5e\xf9\x7e\xb5\x7e\xba\x7e\xbe\x7e\xb7\x00\x00\x00\x00\x5c\xcf\x00\x00\x7e\xb4\x5e\xf8\x7e\xb6\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x60\xfb\x81\xca\x61\x42\x00\x00\x60\xfd\x00\x00\x00\x00\x5e\xf5\x00\x00\x81\xd1\x81\xd2\x60\xfa\x00\x00\x00\x00\x81\xd0\x81\xd3\x60\xfc\x60\xf9\x81\xcc\x81\xc9\x81\xce\x81\xcb\x61\x43\x81\xcd\x00\x00\x00\x00\x81\xcf\x61\x41\x00\x00\x00\x00\x00\x00\x00\x00\x62\xd3\x84\xf1\x00\x00\x84\xeb\x84\xef\x84\xf5\x84\xf6\x84\xf2\x84\xf3\x84\xf0\x00\x00\x84\xed\x00\x00\x62\xd5\x62\xd2\x84\xec\x84\xee\x00\x00\x62\xd4\x84\xf4\x00\x00\x64\x70\x00\x00\x00\x00\x87\x96\x87\x91\x64\x6f\x00\x00\x00\x00\x64\x6d\x00\x00\x87\x98\x64\x6e\x87\x94\x87\x95\x87\x92\x87\x99\x89\xc3", /* 7900 */ "\x00\x00\x64\x71\x87\x93\x00\x00\x87\x9a\x87\x97\x00\x00\x00\x00\x00\x00\x89\xc7\x00\x00\x00\x00\x89\xc4\x00\x00\x65\x90\x00\x00\x89\xc8\x89\xca\x89\xc9\x89\xc5\x89\xc6\x00\x00\x00\x00\x8b\xb0\x00\x00\x66\x74\x00\x00\x8b\xad\x8b\xaf\x8b\xac\x8b\xb1\x00\x00\x00\x00\x8b\xae\x00\x00\x8d\x6a\x8d\x6d\x8d\x69\x66\xfb\x8d\x6b\x8d\x6c\x8d\x6e\x66\xfc\x67\x41\x66\xfd\x8e\x91\x00\x00\x8e\x93\x00\x00\x8e\x92\x00\x00\x00\x00\x00\x00\x8f\x87\x00\x00\x00\x00\x90\xc4\x91\x4c\x4d\x9d\x00\x00\x00\x00\x6a\xf2\x51\xa2\x6c\xc3\x51\xa3\x51\xa4\x6c\xc2\x00\x00\x6e\xda\x6e\xd9\x53\x8a\x53\x8d\x53\x8c\x53\x8b\x6e\xd6\x6e\xd8\x6e\xd7\x00\x00\x00\x00\x71\x6c\x55\xaa\x71\x70\x71\x6f\x71\x6e\x71\x6a\x55\xa9\x55\xad\x55\xb0\x00\x00\x00\x00\x55\xb1\x71\x6b\x71\x6d\x55\xaf\x55\xae\x55\xac\x55\xab\x74\x87\x00\x00\x74\x85\x74\x81\x58\x60\x00\x00\x74\x82\x58\x61\x74\x83\x74\x84\x74\x86\x00\x00\x58\x62\x00\x00\x00\x00\x77\xda\x00\x00\x77\xd9\x77\xd8\x77\xd7\x00\x00\x00\x00\x00\x00\x00\x00\x7b\x7e\x5c\xd8\x00\x00\x7b\x7b\x7b\x7d\x00\x00\x5c\xd9", /* 7980 */ "\x00\x00\x5c\xda\x7b\x7c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7e\xc9\x00\x00\x7e\xc2\x7e\xc3\x00\x00\x5e\xfd\x5e\xfb\x5e\xfc\x7e\xcb\x00\x00\x7e\xca\x7e\xc7\x7e\xc6\x7e\xc5\x7e\xc4\x7e\xc8\x7e\xc1\x00\x00\x81\xd4\x81\xd9\x81\xd7\x00\x00\x00\x00\x00\x00\x81\xd6\x81\xd5\x81\xd8\x00\x00\x84\xf7\x00\x00\x62\xd6\x64\x72\x87\x9c\x00\x00\x64\x73\x87\x9b\x89\xcc\x89\xcb\x65\x91\x00\x00\x8b\xb2\x66\x75\x8d\x6f\x67\xea\x8f\x88\x00\x00\x90\xc6\x90\xc5\x69\x88\x53\x8e\x53\x8f\x74\x88\x00\x00\x5c\xdc\x4d\x9e\x4f\xb4\x4f\xb3\x4f\xb2\x00\x00\x00\x00\x00\x00\x6c\xc4\x00\x00\x00\x00\x51\xa6\x51\xa5\x00\x00\x53\x92\x00\x00\x6e\xdc\x6e\xdf\x6e\xdd\x00\x00\x53\x90\x53\x91\x00\x00\x00\x00\x6e\xdb\x6e\xde\x00\x00\x55\xb8\x00\x00\x00\x00\x00\x00\x71\x77\x71\x79\x71\x78\x55\xb5\x71\x73\x00\x00\x00\x00\x55\xb3\x55\xb2\x00\x00\x55\xb6\x55\xb4\x00\x00\x55\xb7\x71\x76\x71\x71\x71\x72\x71\x75\x71\x74\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x74\x8b\x74\x8c\x74\x8a\x00\x00\x74\x89\x58\x63\x00\x00\x00\x00\x00\x00\x00\x00", /* 7a00 */ "\x5a\xa4\x00\x00\x77\xdb\x77\xdd\x77\xdf\x5a\xa3\x00\x00\x00\x00\x5a\xa1\x00\x00\x77\xdc\x5a\xa2\x77\xde\x5a\xa0\x00\x00\x00\x00\x7b\x89\x7b\x7f\x7b\x83\x7b\x87\x5c\xe0\x7b\x85\x00\x00\x7b\x84\x7b\x81\x7b\x82\x5c\xde\x7b\x88\x5c\xdd\x00\x00\x5c\xe2\x5c\xe1\x5c\xdf\x00\x00\x7b\x86\x00\x00\x00\x00\x00\x00\x7e\xd1\x00\x00\x7e\xd0\x00\x00\x00\x00\x7e\xcc\x00\x00\x00\x00\x5f\x41\x7e\xcf\x7e\xce\x5f\x42\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x61\x48\x00\x00\x81\xdb\x00\x00\x61\x49\x61\x45\x61\x47\x00\x00\x61\x44\x61\x46\x00\x00\x00\x00\x00\x00\x84\xf8\x00\x00\x62\xd9\x84\xfa\x84\xf9\x00\x00\x7e\xcd\x62\xdb\x62\xda\x62\xd7\x62\xd8\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x87\xa1\x00\x00\x87\x9f\x64\x74\x87\xa0\x00\x00\x87\xa2\x87\x9e\x87\x9d\x00\x00\x00\x00\x89\xcd\x65\x94\x65\x92\x65\x93\x00\x00\x00\x00\x00\x00\x00\x00\x8b\xb3\x8b\xb4\x66\x77\x00\x00\x66\x76\x8d\x71\x8d\x72\x8d\x70\x00\x00\x8f\x89\x8f\x8a\x00\x00\x00\x00\x4d\x9f\x69\xe7\x4f\xb5\x00\x00\x6c\xc5\x51\xa8\x51\xa7\x6c\xc6\x00\x00\x00\x00\x6e\xe1\x53\x93", /* 7a80 */ "\x6e\xe0\x53\x94\x00\x00\x00\x00\x55\xb9\x71\x7c\x71\x7a\x71\x81\x55\xba\x71\x7b\x71\x7f\x71\x7d\x71\x7e\x00\x00\x00\x00\x74\x8d\x74\x8f\x00\x00\x58\x64\x00\x00\x74\x8e\x58\x65\x5a\xa7\x5a\xa6\x5a\xa5\x77\xe0\x00\x00\x00\x00\x00\x00\x00\x00\x7b\x8c\x5c\xe3\x5c\xe4\x00\x00\x7b\x8b\x7b\x8a\x00\x00\x00\x00\x00\x00\x00\x00\x7e\xd2\x5f\x44\x5f\x43\x7e\xd3\x7e\xd4\x00\x00\x61\x4b\x61\x4a\x00\x00\x85\x41\x81\xdc\x81\xde\x81\xdd\x84\xfd\x84\xfb\x85\x42\x84\xfc\x00\x00\x62\xdc\x00\x00\x00\x00\x00\x00\x87\xa3\x64\x75\x87\xa4\x87\xa5\x00\x00\x00\x00\x65\x95\x65\x96\x00\x00\x67\x42\x00\x00\x00\x00\x68\x5d\x4d\xa0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6e\xe2\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x71\x82\x55\xbb\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x58\xfd\x58\xfc\x00\x00\x00\x00\x5a\xa9\x77\xe2\x5a\xa8\x77\xe1\x00\x00\x00\x00\x00\x00\x00\x00\x7b\x8d\x00\x00\x5f\x45\x7e\xd5\x5f\x46\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x67\x43\x8d\x73\x00\x00\x4e\x6c\x51\xa9\x6c\xc7\x00\x00\x53\x96\x00\x00\x53\x95", /* 7b00 */ "\x6e\xe3\x6e\xe4\x00\x00\x00\x00\x71\x84\x71\x86\x55\xbc\x00\x00\x71\x88\x71\x8b\x71\x89\x00\x00\x00\x00\x00\x00\x71\x8a\x71\x87\x71\x83\x55\xbd\x71\x8c\x71\x85\x00\x00\x00\x00\x00\x00\x00\x00\x74\x98\x58\x6b\x74\xa1\x58\x68\x00\x00\x74\x9a\x58\x6c\x00\x00\x58\x66\x00\x00\x74\x95\x74\xa2\x74\x96\x74\x93\x58\x6a\x00\x00\x58\x67\x00\x00\x74\x99\x74\x9c\x58\x69\x74\x9d\x58\x6d\x74\x9e\x74\x94\x74\x9b\x74\x9f\x74\x97\x74\x92\x74\x90\x00\x00\x00\x00\x74\xa0\x00\x00\x00\x00\x77\xe4\x00\x00\x00\x00\x00\x00\x00\x00\x77\xe9\x00\x00\x00\x00\x00\x00\x77\xe5\x77\xeb\x5a\xac\x74\x91\x77\xe6\x5a\xaa\x77\xe3\x5a\xb1\x77\xe7\x5a\xb0\x77\xe8\x5a\xb2\x5a\xad\x5a\xb3\x5a\xae\x00\x00\x5a\xaf\x00\x00\x5a\xab\x00\x00\x77\xea\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5c\xe7\x7b\x98\x00\x00\x7b\x9b\x7b\x8f\x7b\x94\x7b\x8e\x5c\xe9\x00\x00\x7b\x92\x00\x00\x00\x00\x00\x00\x7b\x90\x5c\xe8\x00\x00\x7b\x97\x7b\x96\x7b\x93\x7b\x95\x7b\x91\x5f\x4a\x7b\x9a\x5c\xe5\x7b\x99\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 7b80 */ "\x00\x00\x00\x00\x7e\xe5\x00\x00\x5f\x51\x7e\xe0\x00\x00\x5f\x50\x7e\xd6\x00\x00\x7e\xd8\x5f\x49\x7e\xdd\x7e\xdc\x7e\xdf\x5f\x4e\x7e\xda\x7e\xd9\x00\x00\x00\x00\x5f\x4d\x5f\x48\x7e\xdb\x5f\x4b\x7e\xe1\x7e\xe3\x00\x00\x7e\xde\x7e\xd7\x5f\x4c\x00\x00\x00\x00\x61\x53\x5f\x47\x00\x00\x00\x00\x7e\xe4\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x81\xe2\x61\x4c\x00\x00\x81\xe4\x00\x00\x61\x4d\x00\x00\x00\x00\x61\x4f\x81\xe7\x00\x00\x81\xdf\x5f\x4f\x81\xe5\x00\x00\x00\x00\x00\x00\x00\x00\x81\xe1\x00\x00\x5c\xe6\x61\x52\x00\x00\x00\x00\x61\x4e\x00\x00\x61\x50\x61\x51\x00\x00\x62\xdf\x81\xe6\x81\xe0\x61\x54\x00\x00\x81\xe3\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x85\x4c\x85\x47\x00\x00\x00\x00\x85\x51\x62\xdd\x85\x49\x62\xe1\x85\x4f\x85\x46\x85\x43\x85\x52\x64\x7b\x62\xe2\x85\x4e\x85\x44\x62\xe0\x85\x48\x62\xe4\x85\x45\x85\x4a\x62\xe3\x85\x4d\x85\x50\x00\x00\x00\x00\x00\x00\x00\x00\x87\xb7\x87\xb8\x87\xa8\x87\xaf\x87\xad\x00\x00\x00\x00\x64\x79\x87\xb4\x85\x4b\x00\x00\x87\xab\x00\x00\x87\xb5\x64\x78\x87\xaa", /* 7c00 */ "\x87\xa9\x87\xb3\x87\xb0\x87\xb2\x00\x00\x87\xa6\x87\xb6\x64\x76\x00\x00\x87\xb1\x87\xba\x87\xae\x64\x7a\x64\x77\x87\xac\x87\xa7\x87\xb9\x62\xde\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x89\xd0\x00\x00\x00\x00\x89\xce\x89\xd4\x65\x9a\x89\xd2\x89\xd1\x65\x9c\x89\xd7\x65\x9b\x00\x00\x89\xd8\x89\xd5\x65\x98\x89\xd6\x89\xcf\x65\x99\x65\x97\x8b\xb8\x89\xd3\x00\x00\x00\x00\x89\xd9\x00\x00\x00\x00\x8b\xb5\x00\x00\x00\x00\x00\x00\x66\x7c\x66\x7a\x8b\xb7\x00\x00\x8b\xb9\x8b\xb6\x66\x7b\x66\x78\x66\x79\x66\x7d\x00\x00\x00\x00\x67\x45\x00\x00\x8d\x78\x00\x00\x8d\x77\x8d\x75\x8d\x74\x8d\x76\x00\x00\x67\x44\x67\x46\x00\x00\x00\x00\x67\x9c\x00\x00\x00\x00\x8e\x95\x8e\x94\x00\x00\x00\x00\x8f\x8b\x00\x00\x8f\x8d\x8f\x8f\x8f\x8e\x8f\x8c\x00\x00\x00\x00\x67\xec\x67\xeb\x00\x00\x00\x00\x68\x5f\x68\x5e\x68\x60\x90\x5e\x90\x5d\x00\x00\x91\x4d\x90\xc7\x91\x4e\x68\xa4\x00\x00\x68\xa5\x91\x7e\x00\x00\x00\x00\x68\xca\x4e\x6d\x00\x00\x6c\xc8\x00\x00\x00\x00\x6e\xe6\x6e\xe7\x6e\xe5\x00\x00\x00\x00\x53\x97\x00\x00\x6e\xe8", /* 7c80 */ "\x6e\xe9\x6e\xea\x00\x00\x00\x00\x71\x8d\x71\x93\x00\x00\x00\x00\x71\x91\x55\xbe\x71\x8f\x00\x00\x71\x90\x71\x92\x00\x00\x00\x00\x00\x00\x71\x8e\x58\x6e\x00\x00\x74\xa3\x58\x70\x74\xa5\x58\x6f\x74\xa4\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x77\xed\x5a\xb4\x00\x00\x77\xef\x77\xec\x74\xa6\x00\x00\x5a\xb5\x00\x00\x00\x00\x77\xee\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7b\x9e\x00\x00\x5c\xea\x7b\x9c\x5c\xeb\x7b\x9d\x5c\xec\x00\x00\x00\x00\x00\x00\x5f\x52\x7e\xe9\x7e\xe6\x7e\xe8\x5f\x53\x5f\x54\x7e\xe7\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x81\xe8\x00\x00\x00\x00\x81\xe9\x00\x00\x61\x55\x81\xeb\x81\xea\x00\x00\x46\xf9\x00\x00\x85\x56\x85\x57\x85\x53\x00\x00\x85\x54\x62\xe5\x62\xe6\x85\x55\x00\x00\x64\x82\x00\x00\x00\x00\x64\x7d\x64\x83\x64\x7e\x64\x81\x64\x7c\x00\x00\x64\x7f\x00\x00\x00\x00\x00\x00\x00\x00\x65\x9d\x87\xbb\x00\x00\x8b\xbb\x00\x00\x8b\xba\x00\x00\x8d\x79\x67\x47\x67\x48\x8f\x91\x8e\x96\x00\x00\x8f\x90\x00\x00\x91\x4f\x91\x94\x4e\x6e\x00\x00\x00\x00\x4f\xb6\x00\x00\x6c\xc9\x51\xaa\x00\x00", /* 7d00 */ "\x53\x9a\x6e\xed\x53\x98\x6e\xeb\x53\x9d\x53\x99\x53\x9e\x53\x9c\x6e\xec\x53\x9b\x55\xc2\x55\xc1\x71\x9e\x55\xca\x71\x97\x71\x9d\x55\xc6\x71\x96\x71\x9c\x71\x9a\x55\xc5\x55\xc7\x71\x99\x55\xc0\x71\x98\x55\xcb\x55\xc8\x55\xcc\x55\xc9\x71\x95\x71\x94\x71\x9b\x55\xc3\x55\xbf\x55\xc4\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x74\xb5\x74\xae\x00\x00\x5a\xba\x74\xad\x00\x00\x58\x74\x58\x7b\x58\x78\x58\x7e\x58\x7d\x58\x79\x00\x00\x74\xa7\x74\xaa\x00\x00\x74\xa9\x58\x75\x74\xab\x74\xb4\x58\x76\x74\xa8\x74\xb1\x74\xb2\x58\x77\x74\xaf\x58\x7c\x58\x72\x58\x7a\x74\xac\x58\x71\x74\xb0\x00\x00\x00\x00\x74\xb3\x00\x00\x00\x00\x00\x00\x78\x43\x77\xf7\x5a\xb7\x78\x41\x77\xfb\x77\xf3\x77\xfc\x5a\xb9\x77\xf4\x00\x00\x77\xf0\x00\x00\x00\x00\x5c\xf2\x77\xf9\x00\x00\x5a\xb6\x78\x42\x00\x00\x5a\xbd\x5a\xbf\x77\xf2\x00\x00\x00\x00\x5a\xbe\x77\xf5\x5a\xb8\x77\xfd\x77\xf6\x77\xfa\x00\x00\x77\xf8\x5a\xbb\x77\xf1\x5a\xc0\x58\x73\x5a\xbc\x5a\xc1\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5c\xee\x7b\xa5\x7b\xa7\x7b\xa9\x7b\xad\x00\x00\x7b\xa3", /* 7d80 */ "\x7b\xa1\x5c\xf0\x00\x00\x7b\xa8\x7b\xac\x7b\xa4\x7b\xa0\x00\x00\x7b\x9f\x00\x00\x00\x00\x00\x00\x7b\xaa\x7b\xa2\x7b\xa6\x5c\xf1\x00\x00\x5c\xef\x7b\xae\x5c\xed\x7b\xab\x00\x00\x7e\xfa\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5f\x57\x7e\xf2\x61\x62\x7e\xfc\x5f\x5a\x7f\x43\x5f\x60\x7e\xed\x00\x00\x00\x00\x7e\xfd\x7e\xea\x00\x00\x7f\x42\x7e\xee\x00\x00\x5f\x67\x5f\x64\x7f\x41\x7e\xf8\x5f\x56\x5f\x5e\x5f\x5d\x00\x00\x5f\x5c\x5f\x62\x00\x00\x7e\xeb\x5f\x63\x7e\xf9\x5f\x5f\x5f\x55\x7e\xfb\x5f\x58\x5f\x59\x5f\x61\x7e\xf0\x7e\xef\x7e\xec\x00\x00\x7e\xf4\x7e\xf1\x7e\xf5\x5f\x66\x00\x00\x7f\x44\x5f\x5b\x7e\xf6\x7e\xf7\x00\x00\x7e\xf3\x00\x00\x00\x00\x00\x00\x5f\x65\x00\x00\x00\x00\x00\x00\x00\x00\x81\xf0\x61\x5a\x61\x63\x61\x5f\x81\xed\x00\x00\x61\x5c\x61\x60\x81\xf9\x61\x56\x81\xf1\x00\x00\x61\x5e\x00\x00\x00\x00\x81\xf4\x81\xef\x61\x5d\x61\x61\x81\xee\x00\x00\x61\x5b\x00\x00\x81\xf8\x61\x58\x81\xf7\x81\xf6\x61\x64\x80\xbc\x61\x57\x00\x00\x81\xf5\x81\xec\x00\x00\x61\x65\x81\xf3\x61\x59\x00\x00\x00\x00\x00\x00\x00\x00", /* 7e00 */ "\x00\x00\x00\x00\x00\x00\x81\xf2\x00\x00\x00\x00\x00\x00\x00\x00\x62\xe9\x62\xee\x62\xe7\x85\x64\x85\x5b\x85\x67\x85\x5f\x85\x65\x62\xef\x62\xe8\x85\x58\x85\x5e\x85\x68\x85\x61\x85\x66\x85\x5a\x00\x00\x00\x00\x85\x62\x62\xea\x85\x60\x62\xed\x62\xec\x85\x5c\x85\x5d\x85\x59\x85\x63\x62\xeb\x85\x6a\x85\x69\x00\x00\x00\x00\x00\x00\x87\xc6\x87\xc2\x64\x8a\x00\x00\x87\xbc\x64\x84\x64\x94\x87\xc8\x64\x8c\x64\x88\x87\xbf\x64\x8f\x64\x92\x87\xca\x64\x87\x87\xc1\x64\x90\x87\xcc\x87\xc9\x87\xbd\x64\x8b\x64\x85\x64\x93\x87\xc4\x64\x8e\x87\xbe\x64\x89\x87\xcb\x64\x8d\x64\x86\x87\xc5\x64\x91\x87\xc3\x00\x00\x00\x00\x87\xc7\x00\x00\x00\x00\x00\x00\x89\xdb\x89\xe1\x65\xa3\x89\xe4\x65\x9e\x65\x9f\x89\xdc\x89\xe3\x89\xde\x65\xa4\x65\xa1\x00\x00\x89\xda\x00\x00\x65\xa0\x89\xe0\x89\xe2\x65\xa2\x89\xdf\x89\xdd\x00\x00\x00\x00\x00\x00\x00\x00\x8b\xc5\x66\x82\x66\x83\x66\x7e\x00\x00\x66\x7f\x00\x00\x8b\xc1\x8b\xbf\x00\x00\x8b\xc3\x66\x85\x8b\xc4\x8b\xbd\x8b\xbc\x8b\xc0\x8b\xbe\x66\x81\x8b\xc2\x8d\x7a\x67\x4b\x67\x4a\x8d\x7b\x00\x00", /* 7e80 */ "\x8d\x7d\x8d\x7c\x67\x4c\x00\x00\x00\x00\x00\x00\x8e\x9b\x8e\x98\x8e\x99\x00\x00\x8e\x97\x8e\x9a\x67\x9e\x8e\x9c\x00\x00\x67\x9d\x00\x00\x8f\x92\x00\x00\x68\x61\x68\x63\x90\x5f\x68\x62\x90\xc8\x91\x51\x91\x53\x91\x50\x91\x52\x68\xb8\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 7f00 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4e\x6f\x00\x00\x53\x9f\x70\xd2\x55\xcd\x00\x00\x00\x00\x58\x7f\x78\x44\x78\x45\x00\x00\x00\x00\x00\x00\x85\x6b\x64\x95\x87\xcd\x00\x00\x00\x00\x65\xa5\x00\x00\x8b\xc7\x8b\xc6\x67\x4d\x8e\x9d\x00\x00\x8f\x93\x68\x85\x69\xe8\x00\x00\x00\x00\x51\xab\x4f\xb7\x00\x00\x00\x00\x6e\xee\x00\x00\x00\x00\x71\xa4\x71\x9f\x71\xa3\x71\xa1\x55\xce\x71\xa2\x71\xa0\x00\x00\x74\xb6\x00\x00\x78\x46\x78\x47\x7b\xb1\x7b\xb2\x5c\xf4\x5c\xf5\x7b\xb0\x7b\xb3\x7b\xaf\x5c\xf3\x00\x00\x5f\x68\x00\x00\x5c\xf6\x7f\x45\x00\x00\x61\x66\x81\xfa\x61\x67\x00\x00\x62\xf0\x85\x6e\x85\x6c\x85\x6d\x87\xd0\x87\xcf\x87\xce", /* 7f80 */ "\x00\x00\x00\x00\x00\x00\x8b\xc8\x00\x00\x66\x84\x8b\xc9\x8f\x94\x68\x86\x90\xc9\x4e\x70\x51\xad\x51\xac\x6e\xf0\x53\xa0\x00\x00\x00\x00\x6e\xef\x71\xa6\x00\x00\x55\xcf\x74\xb7\x71\xa5\x00\x00\x00\x00\x00\x00\x58\x82\x74\xba\x74\xb8\x74\xb9\x58\x81\x00\x00\x78\x49\x78\x4a\x78\x48\x00\x00\x5c\xf9\x7b\xb5\x7b\xb4\x7b\xb6\x5c\xf8\x5c\xf7\x00\x00\x00\x00\x81\xfb\x81\xfd\x00\x00\x61\x68\x81\xfc\x85\x6f\x62\xf1\x89\xe6\x00\x00\x89\xe5\x66\x86\x8b\xca\x66\x88\x66\x87\x8d\x7e\x8e\x9e\x67\x9f\x4e\x71\x6e\xf1\x53\xa1\x71\xa9\x55\xd1\x71\xa8\x71\xa7\x00\x00\x55\xd0\x00\x00\x74\xc0\x00\x00\x74\xc2\x74\xbb\x74\xbc\x58\x83\x74\xbd\x58\x84\x74\xc1\x74\xbe\x74\xbf\x58\x85\x00\x00\x5a\xc3\x5a\xc4\x00\x00\x78\x4b\x00\x00\x00\x00\x00\x00\x7b\xb7\x7b\xb8\x00\x00\x7f\x49\x5f\x6b\x5f\x69\x5f\x6a\x7f\x46\x7f\x47\x00\x00\x7f\x48\x82\x45\x00\x00\x82\x46\x61\x69\x82\x43\x82\x42\x82\x44\x82\x41\x62\xf4\x85\x70\x62\xf2\x62\xf3\x87\xd2\x64\x96\x87\xd1\x89\x55\x00\x00\x89\xe7\x89\xe8\x65\xa6\x00\x00\x65\xa7\x64\x97\x8b\xcb\x8b\xcc\x8d\x7f", /* 8000 */ "\x67\x4e\x4e\x72\x00\x00\x4e\x73\x53\xa2\x51\xae\x55\xd2\x6e\xf2\x00\x00\x00\x00\x00\x00\x5a\xc5\x4e\x74\x53\xa4\x6e\xf3\x6e\xf4\x53\xa3\x53\xa5\x4e\x75\x00\x00\x6e\xf5\x55\xd4\x71\xaa\x55\xd6\x55\xd3\x55\xd5\x00\x00\x74\xc5\x58\x86\x00\x00\x74\xc4\x74\xc3\x00\x00\x7b\xb9\x00\x00\x00\x00\x7f\x4a\x00\x00\x61\x6a\x00\x00\x62\xf5\x85\x72\x85\x71\x00\x00\x87\xd3\x00\x00\x00\x00\x00\x00\x8e\x9f\x00\x00\x00\x00\x4e\x76\x6a\xf3\x6c\xca\x53\xa6\x6e\xf6\x00\x00\x71\xac\x00\x00\x00\x00\x00\x00\x55\xd7\x71\xab\x55\xd8\x00\x00\x00\x00\x00\x00\x74\xc7\x00\x00\x00\x00\x58\x88\x74\xc6\x74\xc8\x00\x00\x58\x87\x00\x00\x00\x00\x00\x00\x00\x00\x78\x4d\x78\x4e\x78\x4c\x5a\xc6\x00\x00\x00\x00\x00\x00\x5c\xfa\x00\x00\x5c\xfb\x00\x00\x5f\x6d\x00\x00\x7f\x4c\x7f\x4b\x5f\x6c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x82\x47\x00\x00\x00\x00\x82\x48\x00\x00\x00\x00\x00\x00\x00\x00\x85\x73\x00\x00\x00\x00\x64\x9b\x64\x9a\x64\x98\x64\x99\x64\x9c\x00\x00\x89\xe9\x65\xa9\x65\xa8\x8b\xcd\x8d\x81\x00\x00\x00\x00\x00\x00\x67\xee\x67\xed\x4e\x77", /* 8080 */ "\x00\x00\x00\x00\x70\x9f\x00\x00\x5c\xfd\x5a\xc7\x5c\xfc\x5f\x6e\x00\x00\x4e\x78\x69\x89\x4e\x79\x4e\x7a\x00\x00\x00\x00\x6c\xcb\x6a\xf6\x00\x00\x6a\xf7\x4f\xb9\x00\x00\x6a\xf4\x4f\xb8\x00\x00\x4f\xbb\x6a\xf5\x4f\xbd\x4f\xbc\x6a\xf8\x4f\xba\x00\x00\x00\x00\x00\x00\x51\xb3\x51\xb1\x6c\xcd\x00\x00\x51\xb0\x00\x00\x00\x00\x00\x00\x51\xb5\x51\xb7\x51\xb4\x00\x00\x6c\xd0\x6c\xcc\x51\xb8\x00\x00\x51\xb2\x4f\xbe\x00\x00\x51\xb6\x6c\xcf\x00\x00\x00\x00\x6c\xce\x00\x00\x51\xaf\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6e\xfc\x53\xaa\x53\xab\x6f\x41\x00\x00\x6e\xf8\x6e\xfb\x6f\x47\x6f\x45\x00\x00\x53\xac\x6f\x4b\x53\xaf\x6f\x48\x6e\xfd\x6e\xfa\x00\x00\x00\x00\x78\x50\x6f\x46\x53\xa7\x6f\x49\x6e\xf7\x6f\x43\x53\xa9\x53\xae\x6f\x44\x53\xb2\x53\xb0\x00\x00\x6e\xf9\x53\xad\x00\x00\x6f\x42\x53\xb1\x53\xa8\x6f\x4a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x55\xdd\x00\x00\x55\xe6\x55\xdb\x55\xd9\x71\xae\x55\xe1\x55\xde\x71\xb0\x00\x00\x00\x00\x55\xe0\x71\xaf\x71\xad\x71\xb2\x55\xe5\x55\xe3\x78\x4f\x00\x00", /* 8100 */ "\x71\xb3\x71\xb1\x55\xda\x00\x00\x00\x00\x55\xdc\x55\xdf\x00\x00\x55\xe2\x00\x00\x55\xe4\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x74\xd2\x58\x8a\x00\x00\x74\xc9\x74\xcb\x00\x00\x74\xcc\x00\x00\x74\xd4\x74\xd0\x74\xce\x00\x00\x74\xd1\x74\xd5\x58\x8b\x58\x8f\x74\xca\x00\x00\x74\xd3\x00\x00\x58\x8d\x00\x00\x58\x8c\x74\xcf\x74\xcd\x00\x00\x58\x89\x58\x8e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5a\xcd\x78\x58\x00\x00\x00\x00\x78\x56\x5a\xcf\x00\x00\x00\x00\x00\x00\x00\x00\x78\x51\x7b\xc7\x00\x00\x5a\xce\x78\x55\x00\x00\x00\x00\x78\x52\x5a\xca\x5a\xd0\x78\x57\x5a\xcc\x78\x54\x5f\x6f\x5a\xcb\x78\x53\x5a\xd1\x5a\xc9\x5a\xc8\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7b\xbf\x7b\xbd\x00\x00\x7b\xc3\x00\x00\x7b\xbb\x7b\xc8\x7b\xc0\x00\x00\x7b\xba\x5d\x44\x5d\x4a\x7b\xc5\x00\x00\x7b\xbe\x00\x00\x5d\x47\x00\x00\x00\x00\x5d\x45\x7b\xc6\x5d\x42\x5d\x41\x7b\xc1\x5d\x46\x5a\xd2\x00\x00\x7b\xc4\x7b\xbc\x5d\x43\x5d\x48\x5d\x49\x00\x00\x00\x00\x00\x00\x00\x00\x5f\x74", /* 8180 */ "\x5f\x70\x00\x00\x5f\x75\x7f\x4f\x00\x00\x00\x00\x7f\x4e\x7f\x50\x5f\x72\x7f\x4d\x5f\x73\x7f\x53\x7f\x52\x7f\x51\x00\x00\x5f\x71\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x82\x4c\x00\x00\x82\x4f\x61\x70\x82\x4e\x61\x6f\x61\x6b\x61\x6c\x61\x6d\x82\x4b\x82\x4a\x61\x6e\x00\x00\x82\x4d\x82\x49\x00\x00\x00\x00\x85\x75\x85\x7f\x62\xf8\x62\xf7\x00\x00\x85\x79\x85\x7b\x00\x00\x85\x76\x00\x00\x85\x7a\x85\x74\x85\x7d\x62\xf6\x85\x7c\x85\x78\x00\x00\x85\x7e\x00\x00\x85\x77\x64\x9f\x87\xd4\x87\xda\x64\xa3\x64\xa5\x64\xa2\x64\xa1\x00\x00\x64\xa0\x64\x9e\x87\xd5\x87\xd8\x64\x9d\x87\xd9\x00\x00\x64\xa4\x87\xd7\x00\x00\x87\xd6\x65\xaa\x00\x00\x65\xab\x89\xec\x89\xea\x89\xeb\x00\x00\x00\x00\x8b\xcf\x00\x00\x8b\xce\x66\x89\x8d\x83\x67\x4f\x8d\x82\x00\x00\x8e\xa0\x8f\x95\x67\xef\x91\x54\x91\x55\x68\x64\x4e\x7b\x00\x00\x51\xb9\x78\x59\x5f\x76\x64\xa6\x87\xdb\x4e\x7c\x00\x00\x55\xe8\x55\xe7\x78\x5a\x00\x00\x00\x00\x00\x00\x85\x81\x4e\x7d\x53\xb3\x00\x00\x00\x00\x78\x5b\x78\x5c\x78\x5d\x5f\x77\x62\xf9\x4e\x7e\x00\x00\x51\xba\x6f\x4c", /* 8200 */ "\x55\xe9\x71\xb4\x58\x90\x00\x00\x78\x5e\x5d\x4b\x00\x00\x5f\x78\x62\xfa\x64\xa7\x65\xac\x8d\x84\x4e\x7f\x51\xbb\x00\x00\x00\x00\x55\xea\x74\xd6\x5a\xd3\x00\x00\x5f\x79\x7f\x54\x82\x50\x00\x00\x00\x00\x00\x00\x00\x00\x4e\x81\x5a\xd4\x7b\xc9\x5f\x7a\x4e\x82\x6c\xd1\x6f\x4d\x53\xb4\x00\x00\x00\x00\x71\xb6\x00\x00\x00\x00\x55\xed\x00\x00\x55\xeb\x55\xec\x55\xee\x00\x00\x00\x00\x71\xb5\x00\x00\x00\x00\x74\xdb\x74\xd8\x74\xda\x58\x91\x58\x93\x58\x92\x74\xd7\x58\x94\x74\xd9\x00\x00\x78\x5f\x78\x60\x00\x00\x78\x61\x7b\xcc\x00\x00\x7b\xcd\x00\x00\x7b\xcb\x7b\xce\x00\x00\x5d\x4c\x00\x00\x7b\xca\x00\x00\x5f\x7b\x00\x00\x00\x00\x82\x55\x82\x51\x82\x54\x82\x56\x82\x53\x82\x52\x00\x00\x85\x82\x85\x83\x85\x84\x62\xfb\x62\xfc\x87\xdd\x87\xdc\x87\xde\x00\x00\x89\xee\x89\xed\x00\x00\x8b\xd1\x00\x00\x8b\xd2\x8b\xd0\x00\x00\x67\x50\x00\x00\x8d\x85\x8d\x86\x00\x00\x8f\x96\x90\x60\x90\xca\x4e\x83\x4f\xbf\x00\x00\x64\xa8\x4e\x84\x00\x00\x74\xdc\x78\x62\x00\x00\x68\x8d\x69\xe9\x00\x00\x00\x00\x00\x00\x69\xea\x69\xec\x4e\x85\x69\xed", /* 8280 */ "\x69\xeb\x00\x00\x00\x00\x6b\x43\x6b\x44\x6a\xfb\x00\x00\x00\x00\x00\x00\x00\x00\x6b\x42\x4f\xc1\x00\x00\x4f\xc2\x6a\xfc\x6a\xfa\x6a\xf9\x6a\xfd\x4f\xc0\x6b\x41\x6f\x4e\x00\x00\x00\x00\x00\x00\x6c\xd6\x51\xbe\x6c\xd5\x6c\xd7\x00\x00\x51\xbd\x6c\xdc\x51\xc1\x6c\xd2\x6c\xe0\x6c\xe6\x51\xc8\x6c\xe3\x51\xc5\x00\x00\x6c\xd9\x6c\xdf\x6c\xe1\x00\x00\x6c\xd4\x51\xc4\x51\xbf\x6c\xda\x51\xc6\x51\xc9\x51\xc3\x00\x00\x51\xbc\x6c\xde\x6c\xd8\x6c\xe5\x51\xcb\x51\xc7\x51\xc2\x6c\xdd\x55\xef\x6c\xdb\x51\xc0\x51\xca\x00\x00\x6c\xd3\x00\x00\x6c\xe2\x6c\xe4\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x53\xc5\x53\xbf\x53\xc7\x53\xc4\x6f\x55\x6f\x58\x53\xc0\x00\x00\x6f\x4f\x00\x00\x53\xb9\x53\xc3\x00\x00\x53\xc6\x53\xc8\x6f\x64\x6f\x5b\x00\x00\x53\xb8\x6f\x63\x53\xbc\x53\xba\x53\xb5\x6f\x53\x00\x00\x6f\x62\x6f\x57\x6f\x5a\x6f\x67\x00\x00\x53\xc9\x6f\x61\x53\xc1\x6f\x5c\x6f\x66\x6f\x59\x6f\x5d\x6f\x60\x00\x00\x00\x00\x6f\x51\x6f\x65\x6f\x5f\x00\x00\x00\x00\x6f\x50\x00\x00", /* 8300 */ "\x6f\x54\x53\xc2\x53\xbd\x53\xb6\x53\xbb\x53\xb7\x53\xca\x6f\x52\x71\xc7\x53\xbe\x00\x00\x00\x00\x6f\x5e\x6d\x63\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x71\xca\x55\xfd\x00\x00\x71\xba\x00\x00\x71\xc5\x71\xc1\x00\x00\x71\xd4\x00\x00\x71\xcc\x00\x00\x71\xc2\x00\x00\x71\xcb\x71\xbc\x71\xc0\x71\xd7\x56\x43\x71\xcf\x71\xc6\x55\xf0\x71\xd5\x71\xb8\x00\x00\x71\xce\x00\x00\x56\x42\x55\xfa\x71\xb7\x55\xf8\x55\xf7\x55\xfc\x71\xcd\x55\xf4\x55\xfb\x6f\x56\x78\x63\x71\xc8\x00\x00\x00\x00\x71\xbe\x56\x41\x71\xbf\x71\xc3\x56\x44\x71\xb9\x71\xd1\x00\x00\x71\xd0\x71\xd8\x55\xf6\x55\xf3\x71\xd6\x71\xd2\x71\xc9\x71\xc4\x55\xf9\x55\xf5\x71\xbb\x55\xf1\x71\xd3\x55\xf2\x00\x00\x71\xbd\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x74\xe2\x74\xe4\x74\xe9\x74\xfd\x58\xa2\x58\x98\x00\x00\x74\xe1\x58\xa3\x58\xa4\x74\xec\x74\xf3\x74\xf9", /* 8380 */ "\x00\x00\x74\xe6\x00\x00\x74\xed\x00\x00\x00\x00\x58\xa5\x74\xfb\x74\xf6\x58\xa0\x58\x9e\x74\xf2\x74\xee\x74\xe0\x58\x95\x74\xe5\x74\xdd\x00\x00\x58\x9d\x58\x9f\x74\xea\x74\xe7\x58\x9a\x74\xf7\x58\x97\x74\xe8\x75\x41\x74\xf0\x00\x00\x74\xef\x58\x96\x00\x00\x58\xa1\x00\x00\x58\x99\x74\xde\x74\xe3\x74\xf4\x74\xfa\x58\xa6\x74\xdf\x74\xeb\x74\xf1\x58\x9c\x00\x00\x00\x00\x74\xfc\x74\xf5\x74\xf8\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x58\x9b\x00\x00\x78\x73\x78\x67\x5a\xdc\x78\x85\x78\x8d\x78\x90\x5a\xda\x78\x6f\x78\x89\x78\x70\x78\x7e\x5a\xe7\x78\x7a\x5a\xe4\x00\x00\x78\x7b\x78\x64\x00\x00\x78\x8a\x00\x00\x00\x00\x5a\xed\x78\x87\x78\x7c\x78\x92\x78\x77\x7b\xee\x00\x00\x78\x95\x5a\xeb\x78\x75\x78\x82\x5a\xee\x5a\xd9\x78\x79\x78\x93\x78\x72\x78\x6b\x78\x76\x00\x00\x78\x6a\x78\x68\x5a\xd5\x78\x8b\x78\x71\x78\x8e\x00\x00\x78\x8f\x5a\xdd\x5a\xe2\x5a\xde\x5a\xe6\x78\x86\x5a\xdf\x78\x7d\x78\x6d\x00\x00\x5a\xd7\x78\x65\x78\x88\x78\x91\x78\x6c\x5a\xe5\x78\x96\x78\x78", /* 8400 */ "\x00\x00\x78\x74\x00\x00\x5a\xd6\x5a\xea\x00\x00\x78\x84\x5a\xec\x00\x00\x78\x7f\x5a\xe1\x5a\xdb\x5a\xe3\x5a\xd8\x5a\xe9\x78\x81\x78\x6e\x78\x83\x78\x69\x78\x8c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x78\x94\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x78\x66\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7b\xed\x00\x00\x7c\x46\x5c\xdb\x7b\xf2\x00\x00\x7b\xf0\x7b\xdb\x5d\x50\x7b\xeb\x7c\x42\x7b\xe7\x5d\x58\x7c\x41\x7b\xe5\x5a\xe8\x7b\xf5\x7b\xe6\x7b\xfc\x5d\x57\x5d\x4f\x00\x00\x7b\xd0\x7b\xd8\x00\x00\x7b\xf1\x7b\xe9\x7c\x45\x7b\xec\x5d\x5d\x7b\xfd\x00\x00\x5d\x54\x00\x00\x7b\xef\x7b\xf7\x7b\xdc\x7b\xf6\x00\x00\x7c\x4a\x7b\xd7\x7b\xf8\x00\x00\x7c\x48\x00\x00\x7b\xd1\x5a\xe0\x00\x00\x7b\xdf\x7b\xde\x5d\x56\x00\x00\x7b\xe2\x7b\xe4\x7b\xf3\x7c\x47\x5d\x59\x00\x00\x5d\x5a\x00\x00\x7b\xd6\x5d\x52\x7b\xda\x7c\x43\x5d\x5b\x00\x00\x5d\x53\x5d\x55\x5d\x5c\x7c\x49\x7b\xf9\x7b\xf4\x00\x00\x00\x00\x7b\xe1\x7b\xe0\x5d\x51\x7b\xd2\x5d\x4e\x7b\xea\x7b\xd3\x7b\xe8\x00\x00\x00\x00\x7b\xdd\x7c\x44\x00\x00", /* 8480 */ "\x00\x00\x00\x00\x5d\x4d\x00\x00\x00\x00\x00\x00\x7b\xd9\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7b\xd5\x7b\xfb\x7b\xd4\x5f\x89\x7f\x7c\x00\x00\x00\x00\x7f\x6b\x00\x00\x00\x00\x7f\x55\x7f\x73\x5f\x81\x7f\x64\x7f\x6e\x5f\x84\x7f\x67\x5f\x82\x7f\x58\x7f\x76\x7f\x57\x7f\x6a\x00\x00\x7f\x56\x00\x00\x00\x00\x7f\x68\x7f\x71\x7f\x6f\x7f\x63\x7f\x5e\x7f\x5c\x00\x00\x7f\x5d\x7f\x70\x7f\x7b\x7f\x65\x5f\x83\x00\x00\x7f\x60\x00\x00\x7f\x74\x00\x00\x5f\x86\x7f\x5f\x7f\x59\x7f\x69\x5f\x8a\x00\x00\x00\x00\x5f\x7d\x5f\x87\x7f\x61\x7f\x5b\x00\x00\x5f\x7f\x7b\xfa\x5f\x7e\x7f\x6c\x00\x00\x5f\x7c\x5f\x8c\x5f\x85\x7f\x6d\x7f\x62\x7f\x5a\x7f\x75\x7f\x66\x5f\x8b\x7f\x79\x5f\x88\x7f\x78\x00\x00\x7f\x72\x7f\x77\x00\x00\x00\x00\x00\x00\x7f\x7a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x82\x7e\x82\x7f\x82\x72\x82\x71\x82\x6d\x61\x7c\x00\x00\x61\x74\x82\x82\x82\x81\x7b\xcf\x82\x6a\x82\x6e\x82\x68\x00\x00\x82\x7b\x82\x6c\x00\x00\x82\x83\x82\x65\x82\x63\x82\x6f\x82\x79\x82\x74\x61\x7e", /* 8500 */ "\x82\x5a\x00\x00\x82\x78\x00\x00\x00\x00\x00\x00\x61\x7f\x7b\xe3\x82\x66\x82\x5d\x82\x60\x82\x87\x82\x67\x82\x5e\x82\x5c\x82\x59\x00\x00\x61\x78\x82\x70\x61\x77\x61\x7b\x82\x6b\x82\x73\x61\x71\x82\x84\x82\x88\x61\x73\x00\x00\x82\x62\x82\x76\x82\x7a\x82\x5f\x82\x85\x61\x7a\x00\x00\x61\x79\x82\x57\x61\x7d\x82\x7d\x82\x61\x82\x75\x82\x5b\x82\x69\x82\x64\x61\x75\x61\x76\x82\x77\x82\x89\x82\x86\x82\x7c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x82\x58\x00\x00\x61\x72\x85\x95\x00\x00\x85\x8c\x85\x8f\x00\x00\x63\x45\x85\x91\x85\x86\x85\x8d\x85\x93\x63\x42\x63\x46\x62\xfd\x00\x00\x00\x00\x85\x88\x85\x98\x00\x00\x00\x00\x85\x92\x00\x00\x85\x89\x85\xa1\x85\x9b\x85\x85\x87\xf1\x85\x8b\x63\x41\x00\x00\x85\x96\x00\x00\x85\xa0\x63\x49\x00\x00\x85\x9d\x85\x8a\x85\x90\x85\x94\x85\x8e\x85\xa2\x85\x9f\x85\x9c\x63\x43\x63\x44\x63\x48\x85\x87\x85\xa3\x63\x47\x85\x99\x00\x00\x00\x00\x85\x97\x00\x00\x00\x00\x00\x00\x85\x9a\x88\x41\x87\xeb\x87\xf0\x87\xfd\x87\xef\x87\xe7\x87\xec\x00\x00\x64\xab\x00\x00", /* 8580 */ "\x87\xe0\x87\xf8\x87\xfa\x87\xdf\x64\xaa\x87\xfc\x87\xf4\x64\xb1\x87\xfb\x87\xed\x64\xb3\x87\xe5\x85\x9e\x87\xf5\x87\xf2\x87\xe1\x88\x43\x64\xad\x00\x00\x00\x00\x64\xae\x87\xe3\x87\xf3\x00\x00\x88\x42\x87\xf6\x87\xe9\x64\xb0\x64\xac\x87\xf7\x87\xea\x88\x44\x87\xe4\x87\xee\x87\xf9\x87\xe6\x87\xe8\x00\x00\x65\xb5\x87\xe2\x64\xb2\x65\xae\x64\xa9\x00\x00\x00\x00\x00\x00\x00\x00\x64\xaf\x65\xb2\x8a\x41\x00\x00\x89\xf4\x89\xef\x89\xf5\x8a\x42\x8a\x46\x8a\x45\x65\xb4\x65\xb3\x00\x00\x00\x00\x89\xf6\x8a\x47\x89\xf9\x89\xf1\x00\x00\x89\xf3\x89\xf2\x89\xf8\x89\xfd\x89\xf0\x89\xf7\x89\xfc\x65\xb1\x00\x00\x89\xfa\x00\x00\x65\xaf\x89\xfb\x65\xad\x65\xb0\x8b\xe2\x8a\x43\x00\x00\x00\x00\x66\x8d\x00\x00\x8b\xda\x8b\xde\x8b\xd6\x8b\xd9\x00\x00\x8b\xe1\x66\x8b\x8b\xe6\x8b\xdf\x00\x00\x8b\xd7\x8b\xe7\x8b\xe0\x66\x8e\x66\x8f\x8b\xe4\x00\x00\x8b\xd8\x66\x8a\x66\x8c\x8b\xd3\x8b\xdb\x8b\xd5\x00\x00\x8b\xe5\x8b\xe3\x8b\xd4\x8b\xdc\x00\x00\x00\x00\x00\x00\x8d\x8d\x66\x90\x8b\xdd\x67\x52\x67\x54\x67\x51\x00\x00\x8d\x92\x8d\x8a\x8d\x88", /* 8600 */ "\x8d\x8c\x8d\x89\x00\x00\x00\x00\x8d\x8e\x8d\x90\x67\x55\x67\x57\x00\x00\x8d\x8f\x67\x58\x67\x56\x8d\x91\x00\x00\x00\x00\x00\x00\x00\x00\x67\x53\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x67\xa0\x8e\xa1\x8e\xa7\x67\xa2\x8d\x8b\x8e\xa6\x00\x00\x8e\xad\x8e\xa4\x8e\xab\x8e\xaa\x8d\x87\x8e\xa5\x8a\x44\x8e\xae\x8e\xa3\x8e\xa8\x00\x00\x8e\xac\x8e\xa2\x00\x00\x8f\x9a\x67\xa1\x8e\xa9\x00\x00\x00\x00\x90\x65\x8f\x9b\x8f\x99\x8f\x97\x8f\x98\x8f\x9c\x00\x00\x68\x65\x90\x63\x90\x61\x90\x66\x90\x64\x00\x00\x90\x67\x68\x66\x90\x62\x00\x00\x00\x00\x90\xcb\x00\x00\x00\x00\x91\x56\x91\x57\x91\x58\x00\x00\x00\x00\x91\xb7\x91\xad\x69\xee\x51\xcc\x00\x00\x53\xcb\x00\x00\x71\xda\x71\xd9\x56\x45\x58\xa7\x75\x43\x00\x00\x00\x00\x75\x42\x00\x00\x5a\xef\x5d\x5f\x00\x00\x5d\x5e\x5d\x60\x00\x00\x7f\x7d\x82\x8a\x85\xa4\x85\xa6\x85\xa5\x00\x00\x64\xb4\x88\x45\x8a\x48\x91\x95\x4e\x86\x00\x00\x6c\xe9\x6c\xea\x6c\xe8\x6c\xe7\x51\xcd\x00\x00\x6f\x6b\x6f\x69\x00\x00\x00\x00\x6f\x68\x00\x00\x53\xcc\x53\xce\x53\xcd\x6f\x6a\x00\x00\x00\x00\x00\x00", /* 8680 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x71\xe6\x71\xe3\x71\xe1\x00\x00\x00\x00\x56\x46\x71\xe4\x56\x4b\x71\xde\x71\xed\x00\x00\x71\xef\x71\xdf\x00\x00\x56\x48\x71\xf0\x71\xeb\x71\xdd\x71\xe2\x71\xec\x71\xe8\x71\xe5\x00\x00\x56\x4d\x71\xee\x71\xe0\x00\x00\x00\x00\x71\xe9\x71\xdb\x56\x4c\x56\x49\x71\xe7\x00\x00\x71\xea\x71\xdc\x56\x4a\x56\x47\x00\x00\x00\x00\x00\x00\x00\x00\x58\xb1\x75\x4a\x58\xb0\x00\x00\x75\x4d\x75\x50\x58\xad\x58\xab\x75\x45\x75\x4e\x75\x4c\x75\x49\x75\x51\x75\x52\x75\x54\x75\x55\x75\x44\x58\xaa\x75\x47\x75\x46\x75\x53\x58\xac\x75\x48\x58\xae\x58\xa9\x75\x4b\x58\xb2\x00\x00\x58\xaf\x75\x4f\x00\x00\x00\x00\x00\x00\x5a\xf6\x78\xa5\x00\x00\x78\x9a\x5a\xf3\x00\x00\x7c\x50\x78\xa3\x78\x97\x5a\xf1\x78\x9c\x5a\xf4\x78\xa0\x78\x9e\x5a\xf7\x5a\xf0\x00\x00\x00\x00\x78\x98\x78\x9b\x5a\xf5\x00\x00\x78\x99\x00\x00\x78\xa4\x78\xa2\x78\x9d\x78\x9f\x78\xa1\x5a\xf2\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x51\x7c\x57\x7c\x4d\x7c\x53\x5d\x61\x7c\x4f\x5d\x67\x00\x00\x00\x00\x5d\x66\x00\x00", /* 8700 */ "\x5d\x65\x7c\x56\x5d\x68\x5d\x69\x7c\x4c\x7c\x59\x5d\x6a\x5d\x64\x5d\x63\x7c\x55\x5d\x6b\x7c\x4b\x7c\x4e\x7c\x58\x7c\x54\x00\x00\x00\x00\x7f\x9e\x7f\x93\x5d\x62\x00\x00\x00\x00\x00\x00\x00\x00\x5f\x93\x7f\x87\x7f\x9c\x7f\x88\x5f\x8e\x00\x00\x7f\x85\x00\x00\x7f\x8e\x7f\x86\x5f\x90\x7f\x7f\x7f\x9b\x5f\x91\x7f\x98\x7f\x99\x7f\x81\x5f\x96\x7f\x90\x00\x00\x7f\x8a\x7f\x91\x7f\x84\x00\x00\x7f\x9d\x7f\x95\x7f\x8f\x7f\x7e\x5f\x92\x7f\x96\x00\x00\x5f\x95\x7f\x9a\x00\x00\x7f\x94\x5f\x8f\x7f\x92\x00\x00\x7f\x8c\x5f\x8d\x7f\x83\x7f\x8b\x7f\x97\x7f\x89\x00\x00\x00\x00\x7f\x8d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x61\x8a\x7c\x52\x82\x9c\x82\xa5\x82\x9b\x82\x97\x82\x94\x61\x8b\x82\x92\x5f\x94\x82\x8b\x61\x89\x82\x91\x61\x88\x82\x96\x82\x93\x82\xa3\x82\x9e\x82\x98\x82\x9d\x61\x84\x82\x95\x82\xa8\x82\x8c\x82\x8d\x82\xa4\x61\x85\x82\xa9\x61\x87\x82\xaa\x82\x9a\x7f\x82\x82\xa0\x82\x99\x82\xa2\x82\x9f\x00\x00\x00\x00\x00\x00\x82\x90\x61\x82\x82\xa7\x61\x83\x82\x8e\x61\x86\x85\xb0\x82\xa1\x82\xa6\x00\x00\x00\x00\x00\x00\x00\x00", /* 8780 */ "\x00\x00\x85\xad\x61\x81\x63\x4a\x85\xb7\x85\xb3\x00\x00\x85\xb1\x85\xac\x85\xbb\x00\x00\x00\x00\x00\x00\x63\x4e\x00\x00\x85\xa8\x85\xb4\x85\xb5\x85\xab\x85\xaa\x85\xb8\x00\x00\x85\xae\x85\xa9\x85\xaf\x00\x00\x85\xba\x85\xa7\x85\xb9\x85\xb6\x63\x4c\x63\x4b\x00\x00\x00\x00\x63\x4d\x85\xb2\x8a\x59\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x88\x47\x64\xba\x88\x4b\x88\x48\x88\x4f\x88\x55\x88\x4a\x00\x00\x88\x5e\x64\xb7\x88\x58\x88\x4d\x88\x59\x88\x54\x88\x5b\x88\x4c\x64\xbc\x64\xbb\x88\x4e\x88\x5c\x88\x46\x88\x5a\x64\xb5\x00\x00\x88\x52\x88\x51\x88\x56\x88\x49\x64\xb9\x00\x00\x64\xbd\x88\x50\x88\x57\x64\xbe\x88\x53\x00\x00\x00\x00\x00\x00\x00\x00\x64\xb6\x64\xb8\x8a\x55\x8a\x53\x00\x00\x00\x00\x8a\x5a\x8a\x57\x8a\x5b\x00\x00\x8a\x4c\x8a\x54\x8a\x5f\x88\x5d\x8a\x50\x65\xb9\x82\x8f\x8a\x4b\x8a\x58\x8a\x52\x8a\x4f\x8a\x4a\x8a\x49\x8a\x5e\x00\x00\x8a\x4e\x8a\x4d\x65\xb7\x8a\x56\x00\x00\x65\xb6\x00\x00\x00\x00\x65\xb8\x8a\x51\x8a\x5d\x00\x00\x8b\xeb\x8b\xec\x00\x00\x66\x94\x8b\xe9\x66\x91\x8b\xf1\x00\x00\x66\x95\x8b\xf3", /* 8800 */ "\x8b\xe8\x8a\x5c\x8b\xf5\x8b\xea\x00\x00\x66\x92\x8b\xf0\x00\x00\x8b\xf2\x8b\xed\x8b\xf4\x8b\xef\x8b\xee\x66\x93\x00\x00\x00\x00\x8d\x94\x8d\x95\x00\x00\x8d\x97\x67\x59\x67\x5a\x8d\x98\x8d\x96\x00\x00\x8d\x93\x00\x00\x8e\xb1\x8e\xb4\x8e\xb0\x00\x00\x67\xa6\x8e\xb2\x67\xa5\x67\xa4\x67\xa3\x8e\xb3\x8f\xa1\x8f\x9f\x00\x00\x8f\x9e\x8e\xaf\x8f\xa0\x8e\xb5\x8f\x9d\x00\x00\x90\x6a\x90\x48\x90\x68\x68\x67\x90\x69\x90\x6b\x00\x00\x90\xce\x68\x87\x90\xcd\x90\xcc\x68\x88\x00\x00\x68\xa6\x91\x7f\x91\x97\x91\x96\x91\x98\x4e\x87\x6f\x6c\x00\x00\x71\xf1\x71\xf2\x00\x00\x00\x00\x00\x00\x78\xa6\x00\x00\x8e\xb6\x90\xcf\x4e\x88\x53\xcf\x6f\x6d\x00\x00\x00\x00\x00\x00\x75\x56\x58\xb3\x00\x00\x78\xa8\x78\xa7\x5a\xf8\x00\x00\x5d\x6c\x82\xab\x61\x8c\x00\x00\x61\x8d\x00\x00\x00\x00\x00\x00\x63\x4f\x68\x89\x4e\x89\x00\x00\x00\x00\x00\x00\x6f\x6e\x51\xcf\x6f\x70\x6f\x6f\x53\xd0\x00\x00\x71\xf3\x00\x00\x71\xfa\x56\x4e\x71\xf8\x71\xf6\x00\x00\x71\xfd\x71\xf4\x71\xf5\x56\x4f\x00\x00\x56\x53\x00\x00\x00\x00\x72\x41\x56\x52\x71\xfc\x71\xf9", /* 8880 */ "\x71\xf7\x56\x50\x56\x51\x71\xfb\x00\x00\x00\x00\x00\x00\x00\x00\x58\xb5\x75\x57\x00\x00\x58\xba\x75\x67\x58\xb9\x75\x69\x00\x00\x00\x00\x75\x5d\x58\xb7\x75\x68\x00\x00\x75\x58\x58\xb8\x75\x64\x75\x60\x75\x62\x75\x5c\x75\x63\x00\x00\x00\x00\x58\xb4\x75\x5f\x00\x00\x75\x5e\x75\x5a\x00\x00\x75\x65\x00\x00\x00\x00\x75\x61\x75\x59\x00\x00\x75\x5b\x58\xb6\x75\x66\x00\x00\x00\x00\x00\x00\x00\x00\x5a\xfb\x78\xb3\x00\x00\x00\x00\x00\x00\x78\xaf\x78\xb1\x78\xac\x78\xab\x78\xa9\x00\x00\x78\xb0\x78\xb2\x78\xae\x00\x00\x78\xad\x5a\xf9\x5a\xfa\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x78\xb5\x5d\x74\x7c\x5b\x7c\x61\x7c\x5c\x7c\x5d\x00\x00\x7c\x62\x00\x00\x5d\x76\x00\x00\x5d\x6e\x5d\x75\x7c\x5a\x78\xaa\x5d\x71\x5d\x6f\x7c\x60\x7c\x5f\x5d\x70\x5d\x72\x7c\x5e\x5d\x6d\x00\x00\x5d\x73\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7f\xa0\x5f\x9d\x00\x00\x00\x00\x7f\xab\x7f\xaa\x00\x00\x7f\xa5\x5f\x9f\x7f\xa9\x7f\xa1\x7f\xa2\x5f\x97\x5f\x99\x00\x00\x7f\xa7\x7f\x9f\x5f\x9b\x5f\x9a\x7f\xa3\x7f\xa8\x7f\xa6\x5f\x9c\x7f\xa4\x00\x00", /* 8900 */ "\x00\x00\x78\xb4\x5f\x98\x00\x00\x00\x00\x82\xac\x82\xb3\x61\x8f\x00\x00\x82\xb7\x61\x93\x82\xaf\x82\xad\x00\x00\x82\xb6\x00\x00\x61\x8e\x82\xb5\x61\x90\x61\x91\x82\xae\x61\x92\x82\xb4\x82\xb0\x82\xb1\x82\xb2\x5f\x9e\x00\x00\x00\x00\x00\x00\x85\xbc\x85\xc8\x00\x00\x63\x54\x85\xc3\x85\xc5\x00\x00\x63\x52\x85\xbd\x85\xc1\x00\x00\x85\xc4\x63\x50\x63\x53\x85\xc7\x85\xbf\x85\xc0\x85\xc6\x85\xbe\x85\xc2\x63\x51\x88\x60\x00\x00\x88\x5f\x64\xc0\x88\x65\x64\xc2\x00\x00\x00\x00\x64\xbf\x88\x61\x64\xc3\x88\x62\x00\x00\x00\x00\x88\x63\x88\x66\x00\x00\x64\xc1\x00\x00\x8a\x64\x00\x00\x00\x00\x8a\x67\x00\x00\x8a\x61\x8a\x63\x00\x00\x00\x00\x8a\x62\x8a\x65\x8a\x66\x88\x64\x8a\x60\x00\x00\x00\x00\x66\x98\x8b\xf9\x8b\xfc\x8c\x41\x8b\xf7\x8b\xf8\x8b\xfb\x8b\xfd\x66\x99\x66\x97\x66\x96\x8b\xfa\x8b\xf6\x8d\x99\x67\x5b\x00\x00\x8d\x9a\x00\x00\x00\x00\x8e\xb8\x67\xa7\x8e\xba\x67\xa8\x8e\xb7\x8e\xb9\x67\xf1\x00\x00\x8f\xa2\x67\xf0\x90\x6e\x90\x6d\x00\x00\x90\x6c\x00\x00\x00\x00\x91\x59\x91\x5a\x91\x5c\x91\x5b\x00\x00\x69\xef\x4e\x8a", /* 8980 */ "\x00\x00\x53\xd1\x75\x6a\x5a\xfc\x00\x00\x7c\x63\x65\xba\x00\x00\x8c\x42\x00\x00\x00\x00\x4f\xc3\x00\x00\x00\x00\x00\x00\x58\xbc\x00\x00\x00\x00\x00\x00\x58\xbb\x00\x00\x78\xb6\x5a\xfd\x78\xb8\x78\xb7\x00\x00\x00\x00\x7c\x64\x5d\x77\x7f\xac\x7f\xaf\x7f\xae\x00\x00\x7f\xad\x82\xb8\x82\xba\x82\xb9\x00\x00\x63\x56\x00\x00\x00\x00\x00\x00\x63\x55\x00\x00\x64\xc4\x88\x67\x88\x69\x88\x68\x00\x00\x00\x00\x65\xbb\x00\x00\x00\x00\x00\x00\x8c\x44\x8c\x43\x00\x00\x8d\x9b\x67\x5c\x00\x00\x00\x00\x67\xa9\x8f\xa4\x8f\xa3\x68\xa7\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4f\xc4\x6f\x71\x53\xd2\x75\x6d\x75\x6b\x00\x00\x00\x00\x75\x6c\x78\xba\x78\xbb\x7c\x6b\x78\xb9\x00\x00\x7c\x65\x7c\x69\x7c\x68\x7c\x6a\x5d\x78\x7c\x67\x7c\x66\x7c\x6c\x00\x00\x7f\xb2\x7f\xb0\x00\x00\x7f\xb1\x82\xbd\x82\xbb\x00\x00\x00\x00\x82\xbc\x85\xc9\x88\x6a\x88\x6b\x65\xbc\x00\x00\x8c\x45\x8d\x9c\x67\x5d\x00\x00\x8e\xbb\x8f\xa5\x67\xf2\x00\x00\x90\x6f\x91\x5d", /* 8a00 */ "\x4f\xc5\x00\x00\x53\xd4\x53\xd5\x6f\x72\x00\x00\x00\x00\x6f\x73\x53\xd3\x00\x00\x56\x59\x00\x00\x56\x57\x00\x00\x56\x56\x56\x5d\x56\x55\x56\x5e\x72\x42\x56\x5b\x00\x00\x56\x58\x56\x5c\x56\x5a\x56\x54\x00\x00\x00\x00\x58\xc4\x00\x00\x58\xbe\x75\x71\x58\xc3\x00\x00\x00\x00\x58\xc5\x58\xbf\x00\x00\x58\xc0\x00\x00\x75\x6f\x00\x00\x00\x00\x58\xbd\x00\x00\x75\x70\x58\xc2\x00\x00\x00\x00\x75\x6e\x58\xc1\x00\x00\x00\x00\x5b\x4b\x00\x00\x5b\x4d\x00\x00\x00\x00\x78\xbe\x5b\x4c\x5b\x41\x5b\x45\x00\x00\x5d\x8c\x7c\x71\x78\xc0\x5b\x46\x00\x00\x00\x00\x78\xc3\x78\xc4\x5b\x4a\x00\x00\x78\xc6\x00\x00\x78\xc8\x00\x00\x78\xc9\x78\xbd\x78\xbc\x78\xca\x5b\x49\x78\xc7\x78\xc5\x00\x00\x5b\x47\x5b\x43\x5b\x4e\x78\xc1\x78\xc2\x78\xbf\x00\x00\x5b\x48\x00\x00\x00\x00\x5b\x44\x00\x00\x5b\x42\x7c\x70\x5d\x87\x5d\x82\x00\x00\x00\x00\x5d\x7c\x00\x00\x5d\x8d\x5d\x7d\x00\x00\x5d\x79\x5d\x89\x5d\x86\x5d\x88\x00\x00\x5d\x7e\x5d\x84\x5d\x7a\x5d\x7b\x7c\x78\x7c\x75\x7c\x6d\x7c\x72\x00\x00\x5d\x8a\x7c\x79\x5d\x8b\x5d\x81\x00\x00\x00\x00\x7c\x6f", /* 8a80 */ "\x00\x00\x7c\x77\x7c\x73\x7c\x76\x7c\x74\x5d\x85\x7c\x6e\x5d\x7f\x00\x00\x00\x00\x00\x00\x7f\xb5\x5f\xa1\x5f\xa4\x00\x00\x7f\xb7\x00\x00\x5f\xac\x7f\xb6\x5f\xa6\x00\x00\x61\x98\x7f\xb8\x00\x00\x5f\xab\x7f\xb4\x5f\xad\x00\x00\x00\x00\x00\x00\x5f\xa2\x00\x00\x5d\x83\x5f\xa5\x00\x00\x5f\xa3\x5f\xa7\x5f\xa9\x5f\xa0\x5f\xae\x5f\xaa\x00\x00\x5f\xa8\x7f\xb3\x00\x00\x00\x00\x00\x00\x00\x00\x61\x9f\x00\x00\x61\x9b\x00\x00\x00\x00\x00\x00\x61\xa2\x00\x00\x82\xc0\x61\xa3\x82\xcc\x82\xc5\x61\x94\x82\xcd\x82\xc7\x61\x9e\x82\xc8\x00\x00\x61\x9d\x82\xcb\x61\x97\x82\xc9\x82\xbf\x61\x96\x85\xd4\x61\x9c\x00\x00\x61\x99\x00\x00\x61\xa1\x00\x00\x82\xbe\x00\x00\x82\xc2\x61\x95\x82\xc1\x82\xc3\x82\xc4\x61\xa0\x82\xc6\x82\xca\x82\xce\x00\x00\x61\xa4\x63\x5c\x85\xcf\x85\xd5\x85\xd2\x85\xca\x85\xd6\x85\xcb\x00\x00\x85\xd1\x00\x00\x63\x57\x63\x5d\x85\xd7\x00\x00\x00\x00\x63\x59\x00\x00\x63\x63\x63\x5e\x85\xd9\x85\xd3\x63\x5a\x85\xcc\x63\x64\x85\xcd\x85\xce\x63\x65\x63\x62\x61\x9a\x00\x00\x63\x58\x85\xda\x63\x66\x00\x00\x63\x5f\x85\xd8", /* 8b00 */ "\x63\x5b\x63\x60\x63\x61\x00\x00\x64\xcc\x88\x70\x88\x79\x88\x76\x88\x78\x00\x00\x64\xc9\x88\x71\x00\x00\x88\x77\x64\xc5\x88\x73\x64\xcd\x88\x6f\x88\x74\x88\x7b\x85\xd0\x88\x75\x88\x6e\x64\xc6\x88\x6d\x64\xc7\x88\x7c\x64\xc8\x88\x7a\x64\xcb\x88\x6c\x00\x00\x64\xca\x00\x00\x88\x72\x8a\x6a\x8a\x78\x8a\x73\x8a\x75\x8a\x69\x65\xbd\x00\x00\x8a\x68\x65\xc0\x65\xbf\x00\x00\x8a\x77\x8a\x6f\x8a\x6c\x8a\x72\x00\x00\x8a\x6b\x00\x00\x8a\x6d\x8a\x76\x8a\x74\x00\x00\x65\xbe\x8a\x7b\x8a\x79\x8a\x70\x8a\x7a\x8a\x71\x00\x00\x8c\x49\x66\x9a\x8c\x50\x00\x00\x00\x00\x8e\xbe\x66\xa1\x8a\x6e\x8c\x47\x66\x9d\x8c\x48\x8c\x4d\x00\x00\x00\x00\x66\x9f\x66\xa0\x8c\x46\x8c\x4f\x8c\x51\x8c\x4a\x8c\x4c\x8c\x4e\x8c\x4b\x8c\x52\x66\x9c\x66\xa2\x66\x9e\x00\x00\x66\x9b\x8d\x9f\x00\x00\x67\x62\x8d\x9d\x00\x00\x00\x00\x8d\xa1\x00\x00\x8d\xa2\x67\x60\x8d\xa3\x8d\xa0\x00\x00\x8d\x9e\x67\x63\x67\x5f\x8d\xa4\x00\x00\x67\x61\x67\x5e\x00\x00\x00\x00\x00\x00\x67\xaa\x00\x00\x00\x00\x67\xab\x8e\xbd\x8e\xbc\x8e\xbf\x8e\xc0\x00\x00\x67\xac\x8f\xa6\x8f\xab", /* 8b80 */ "\x67\xf3\x00\x00\x8f\xa8\x00\x00\x8f\xa7\x8f\xaa\x8f\xa9\x00\x00\x90\x73\x00\x00\x68\x68\x90\x72\x90\x70\x00\x00\x90\x71\x00\x00\x00\x00\x00\x00\x68\x8b\x68\x8a\x90\xd0\x90\xd1\x68\x8c\x00\x00\x91\x5e\x91\x5f\x68\xb3\x00\x00\x68\xb9\x00\x00\x91\x99\x91\xb8\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 8c00 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4f\xc6\x00\x00\x75\x72\x00\x00\x75\x73\x7c\x7a\x7f\xb9\x82\xcf\x64\xcf\x00\x00\x64\xce\x8a\x7c\x8c\x53\x00\x00\x90\x74\x4f\xc7\x72\x43\x56\x5f\x58\xc6\x7c\x7c\x7c\x7b\x61\xa5\x82\xd0\x61\xa6\x88\x7d\x65\xc1\x00\x00\x00\x00\x00\x00\x68\xc2\x4f\xc8\x6c\xeb\x72\x44\x00\x00\x00\x00\x58\xc7\x00\x00\x75\x74\x75\x75\x00\x00\x78\xcb\x00\x00\x5b\x4f\x5d\x8e\x00\x00\x7c\x7e\x7c\x7d\x7c\x7f\x00\x00\x7f\xba\x7f\xbb\x5f\xaf\x63\x67\x61\xa7\x63\x68\x00\x00\x88\x82\x88\x7e\x88\x81\x88\x7f\x64\xd0\x00\x00\x8a\x7d\x8c\x55\x8c\x54\x6b\x45\x56\x61\x56\x60\x72\x45\x00\x00\x75\x76\x00\x00\x00\x00", /* 8c80 */ "\x78\xcd\x78\xcc\x5b\x50\x00\x00\x7c\x82\x7c\x83\x7c\x81\x00\x00\x00\x00\x5d\x90\x5d\x8f\x00\x00\x5f\xb1\x5f\xb0\x00\x00\x82\xd1\x85\xdd\x85\xdb\x85\xdc\x63\x69\x88\x84\x88\x83\x00\x00\x8a\x81\x8a\x7f\x8a\x7e\x8c\x56\x00\x00\x91\x9a\x4f\xc9\x53\xd6\x00\x00\x53\xd7\x56\x62\x56\x63\x72\x47\x72\x46\x75\x77\x00\x00\x58\xcd\x58\xcb\x58\xc8\x58\xcc\x58\xca\x58\xc9\x00\x00\x00\x00\x5b\x51\x78\xd0\x00\x00\x5d\x95\x5b\x53\x5b\x58\x78\xd2\x5b\x5a\x5b\x59\x5b\x5c\x78\xd1\x78\xce\x5b\x56\x5b\x52\x5b\x54\x78\xcf\x5b\x5b\x5b\x57\x5b\x55\x5d\x97\x5d\x96\x5d\x94\x5d\x98\x00\x00\x5d\x92\x5d\x93\x00\x00\x5d\x91\x00\x00\x7c\x84\x00\x00\x00\x00\x7f\xbd\x00\x00\x5f\xb3\x5f\xb4\x5f\xb2\x00\x00\x7f\xbc\x00\x00\x7f\xbe\x00\x00\x82\xd4\x82\xd6\x00\x00\x61\xb0\x82\xd7\x61\xa9\x82\xd3\x61\xa8\x61\xb2\x61\xae\x61\xaf\x61\xab\x82\xd2\x61\xaa\x82\xd8\x82\xd5\x00\x00\x61\xb1\x00\x00\x61\xac\x61\xad\x85\xdf\x00\x00\x85\xe1\x85\xe0\x00\x00\x85\xe2\x63\x6a\x85\xde\x00\x00\x00\x00\x64\xd4\x88\x85\x64\xd1\x64\xd5\x64\xd3\x64\xd2\x8a\x82\x00\x00", /* 8d00 */ "\x8a\x85\x00\x00\x8a\x84\x00\x00\x8a\x83\x65\xc2\x8c\x57\x8c\x58\x66\xa3\x8c\x59\x66\xa4\x00\x00\x00\x00\x67\x65\x00\x00\x67\x64\x8e\xc1\x00\x00\x00\x00\x67\xad\x8e\xc2\x8f\xac\x67\xf4\x67\xf5\x00\x00\x90\x75\x00\x00\x68\x8e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4f\xca\x00\x00\x58\xcf\x58\xce\x7c\x85\x7c\x86\x00\x00\x5f\xb5\x85\xe3\x61\xb3\x85\xe4\x88\x86\x4f\xcb\x00\x00\x6f\x74\x53\xd9\x53\xd8\x00\x00\x72\x48\x56\x64\x72\x49\x75\x7a\x00\x00\x75\x79\x00\x00\x75\x78\x00\x00\x00\x00", /* 8d80 */ "\x78\xd4\x5b\x5f\x00\x00\x00\x00\x78\xd3\x5b\x5e\x00\x00\x00\x00\x00\x00\x78\xd5\x5b\x5d\x00\x00\x7c\x88\x7c\x8b\x7c\x89\x7c\x8a\x7c\x8e\x7c\x87\x7c\x8f\x7c\x8c\x7c\x8d\x5f\xb7\x7f\xbf\x00\x00\x00\x00\x5f\xb6\x00\x00\x82\xdc\x82\xda\x00\x00\x00\x00\x61\xb4\x82\xd9\x82\xdb\x00\x00\x61\xb5\x00\x00\x85\xe5\x00\x00\x85\xe6\x64\xd6\x00\x00\x8c\x5b\x8c\x5d\x8c\x5a\x8c\x5c\x8d\xa5\x8e\xc3\x00\x00\x00\x00\x91\x81\x4f\xcc\x53\xda\x72\x4a\x72\x4c\x72\x4b\x00\x00\x75\x7d\x58\xd1\x00\x00\x75\x7b\x00\x00\x58\xd0\x75\x7e\x00\x00\x75\x7f\x75\x7c\x00\x00\x00\x00\x78\xe1\x5b\x67\x78\xd9\x78\xdf\x00\x00\x00\x00\x5b\x62\x5b\x65\x78\xd8\x5b\x60\x78\xdc\x7c\x95\x5b\x64\x00\x00\x78\xd7\x00\x00\x78\xdd\x78\xda\x78\xe0\x78\xd6\x78\xde\x5b\x63\x5b\x66\x78\xdb\x5b\x61\x00\x00\x5d\x9a\x7c\x91\x5d\x99\x7c\x98\x7c\x97\x5d\xa0\x00\x00\x5d\xa1\x7c\x99\x5d\x9b\x7c\x96\x5d\x9f\x7c\x9b\x7c\x92\x00\x00\x7c\x94\x5d\x9c\x7c\x90\x7c\x93\x7c\x9a\x5d\x9d\x7c\x9c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5d\x9e\x00\x00\x5f\xb8\x7f\xc4\x7f\xca\x7f\xc2", /* 8e00 */ "\x7f\xcb\x00\x00\x7f\xc1\x7f\xc6\x7f\xcc\x7f\xc9\x7f\xc8\x7f\xc7\x00\x00\x7f\xc0\x7f\xc5\x00\x00\x00\x00\x7f\xc3\x00\x00\x61\xba\x61\xb7\x82\xe5\x82\xea\x82\xec\x82\xe9\x82\xe2\x82\xe4\x82\xee\x82\xeb\x82\xe6\x82\xef\x82\xe3\x82\xed\x61\xb8\x61\xbe\x61\xbc\x82\xdd\x61\xbd\x61\xb9\x82\xde\x82\xe0\x82\xdf\x82\xe7\x82\xe8\x00\x00\x61\xbb\x00\x00\x61\xb6\x00\x00\x00\x00\x82\xe1\x00\x00\x85\xf0\x63\x6c\x00\x00\x85\xe7\x63\x6d\x63\x70\x85\xec\x00\x00\x85\xe9\x63\x6f\x00\x00\x00\x00\x85\xed\x85\xee\x85\xe8\x85\xf1\x85\xea\x85\xef\x63\x6e\x00\x00\x63\x6b\x85\xeb\x00\x00\x88\x8c\x64\xd9\x64\xd7\x64\xda\x64\xd8\x88\x8b\x88\x88\x88\x87\x00\x00\x88\x8a\x00\x00\x00\x00\x88\x89\x8a\x93\x65\xc8\x8a\x8a\x8a\x89\x00\x00\x65\xc3\x8a\x8f\x8a\x8e\x8a\x86\x8a\x91\x8a\x8b\x65\xc7\x8a\x88\x8a\x90\x8a\x87\x65\xc4\x65\xc6\x8a\x8c\x65\xc5\x8a\x8d\x00\x00\x8a\x92\x8c\x61\x00\x00\x66\xa9\x8c\x5e\x00\x00\x8c\x62\x00\x00\x00\x00\x66\xa6\x8c\x60\x66\xab\x00\x00\x66\xa8\x00\x00\x8c\x5f\x00\x00\x66\xaa\x8c\x63\x66\xa5\x00\x00\x00\x00\x00\x00", /* 8e80 */ "\x00\x00\x67\x67\x67\x69\x00\x00\x8d\xa8\x67\x68\x8d\xa6\x66\xa7\x8d\xa7\x67\x66\x67\xae\x67\xb0\x8e\xc5\x67\xaf\x8e\xc4\x00\x00\x8f\xb1\x67\xf6\x8f\xb0\x67\xf7\x8f\xae\x8f\xad\x8f\xb2\x8f\xb3\x90\x76\x00\x00\x8f\xaf\x00\x00\x00\x00\x90\xd5\x90\xd2\x90\xd3\x90\xd4\x68\xa8\x00\x00\x91\x62\x91\x61\x91\x60\x91\x82\x00\x00\x91\xae\x91\x9b\x68\xba\x4f\xcd\x56\x65\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5d\xa2\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x61\xbf\x00\x00\x00\x00\x85\xf2\x00\x00\x00\x00\x65\xc9\x00\x00\x8c\x64\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x91\x9c\x4f\xce\x51\xd0\x53\xdc\x53\xdb\x00\x00\x56\x68\x00\x00\x72\x4d\x56\x66\x72\x4e\x56\x67\x00\x00\x00\x00\x75\x85\x75\x81\x00\x00\x00\x00\x58\xd2\x75\x84\x75\x83\x75\x82\x58\xd3\x75\x86\x75\x87\x00\x00\x00\x00\x00\x00\x78\xe8\x78\xe6\x78\xea\x78\xeb\x78\xf1\x00\x00\x78\xed\x78\xef\x00\x00\x78\xe7\x78\xe2\x00\x00\x78\xee\x00\x00\x00\x00\x78\xf0\x78\xe9\x78\xec\x78\xe3\x5b\x69\x78\xe5\x78\xe4\x5b\x68\x5b\x6a\x00\x00\x5d\xa5\x7c\x9e", /* 8f00 */ "\x7c\xa0\x7c\x9f\x7c\xa4\x5d\xa3\x00\x00\x7c\xa1\x7c\x9d\x7c\xa2\x7c\xa3\x5d\xa4\x5d\xa6\x7c\xa5\x00\x00\x7f\xd0\x7f\xcf\x00\x00\x7f\xcd\x7f\xce\x5f\xba\x5f\xbc\x5f\xb9\x5f\xbb\x82\xf6\x82\xf7\x82\xf2\x00\x00\x82\xf3\x61\xc1\x61\xc6\x61\xc0\x61\xc7\x61\xc2\x82\xf4\x00\x00\x00\x00\x82\xf5\x82\xf1\x61\xc8\x61\xc4\x00\x00\x00\x00\x61\xc3\x61\xc5\x00\x00\x82\xf0\x00\x00\x85\xf4\x63\x72\x00\x00\x00\x00\x85\xf6\x63\x74\x85\xf9\x85\xf5\x85\xf3\x85\xf8\x63\x73\x85\xf7\x00\x00\x63\x71\x00\x00\x00\x00\x64\xdc\x64\xdf\x88\x8e\x00\x00\x64\xdd\x88\x8d\x64\xdb\x64\xde\x8a\x94\x8a\x95\x8a\x96\x65\xca\x00\x00\x8a\x97\x00\x00\x65\xcb\x66\xad\x8c\x67\x8c\x68\x8c\x66\x8c\x65\x8c\x69\x66\xac\x8d\xac\x8d\xaa\x8d\xab\x8d\xad\x8d\xa9\x8d\xae\x8e\xc7\x00\x00\x8e\xc8\x8e\xc6\x67\xb1\x8f\xb4\x67\xf8\x8f\xb5\x90\x78\x90\x77\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 8f80 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4f\xcf\x5b\x6b\x00\x00\x00\x00\x5d\xa7\x00\x00\x00\x00\x00\x00\x5f\xbd\x00\x00\x00\x00\x63\x76\x00\x00\x63\x75\x00\x00\x00\x00\x00\x00\x00\x00\x66\xae\x67\x49\x67\xb2\x4f\xd0\x56\x69\x5d\xa8\x00\x00\x8c\x6a\x48\xe2\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6b\x47\x00\x00\x00\x00\x4f\xd1\x00\x00\x4f\xd4\x4f\xd3\x4f\xd2\x00\x00\x00\x00\x6b\x46\x00\x00\x6c\xed\x00\x00\x6c\xef\x51\xd1\x00\x00\x00\x00\x51\xd3\x6c\xec\x6c\xee\x51\xd2\x6c\xf1\x6c\xf0\x6c\xf2\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6f\x78\x6f\x76\x53\xdf\x6f\x75\x53\xe4\x53\xe1\x53\xde\x00\x00\x53\xe5\x00\x00\x53\xe0\x53\xe3\x00\x00\x53\xe2\x6f\x77\x00\x00\x53\xdd\x00\x00\x00\x00\x00\x00\x56\x6f\x72\x50\x72\x56\x56\x6c\x56\x73\x00\x00\x56\x6e\x72\x53\x72\x55\x56\x71\x72\x4f\x72\x52", /* 9000 */ "\x56\x6d\x56\x6a\x72\x51\x56\x70\x72\x54\x56\x72\x56\x6b\x00\x00\x00\x00\x00\x00\x00\x00\x75\x89\x75\x8c\x58\xd5\x00\x00\x58\xdf\x58\xdb\x75\x8a\x00\x00\x00\x00\x58\xe3\x58\xdc\x58\xe1\x58\xd7\x00\x00\x58\xd4\x58\xd6\x58\xe2\x75\x8b\x58\xda\x58\xdd\x58\xd9\x58\xde\x75\x8d\x58\xe0\x58\xd8\x75\x88\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x78\xf2\x5b\x6c\x78\xf4\x00\x00\x5b\x6e\x5b\x70\x00\x00\x78\xf3\x5b\x6d\x5b\x71\x00\x00\x5b\x6f\x00\x00\x00\x00\x00\x00\x5d\xae\x7c\xaa\x5d\xb6\x7c\xa7\x00\x00\x5d\xb7\x5d\xac\x00\x00\x7c\xa8\x00\x00\x00\x00\x5d\xb1\x00\x00\x7c\xa9\x5d\xaa\x5d\xa9\x00\x00\x5d\xb4\x5d\xb3\x5d\xb2\x5d\xb0\x5d\xb5\x7c\xa6\x5d\xab\x5d\xad\x5d\xaf\x00\x00\x00\x00\x5f\xbf\x5f\xc2\x00\x00\x5f\xc6\x5f\xc0\x5f\xc5\x5f\xc3\x00\x00\x5f\xbe\x00\x00\x5f\xc4\x5f\xc1\x00\x00\x00\x00\x00\x00\x82\xfb\x61\xcb\x61\xc9\x00\x00\x82\xfc\x00\x00\x61\xcc\x61\xca\x82\xfa\x82\xf9\x00\x00\x63\x7a\x82\xf8\x63\x78\x63\x77\x85\xfa\x61\xcd\x63\x79\x85\xfb\x63\x7c\x85\xfc\x63\x7b\x64\xe1\x88\x90\x64\xe0", /* 9080 */ "\x64\xe5\x64\xe3\x64\xe4\x65\xcd\x64\xe2\x88\x8f\x85\xfd\x65\xcc\x65\xce\x00\x00\x66\xaf\x66\xb0\x00\x00\x8d\xaf\x00\x00\x68\x6a\x68\x69\x4f\xd6\x00\x00\x00\x00\x69\xf4\x56\x74\x00\x00\x69\xf1\x69\xf2\x69\xf0\x00\x00\x69\xf3\x00\x00\x00\x00\x6b\x4b\x6b\x48\x6b\x4d\x6b\x49\x4f\xd7\x4f\xda\x00\x00\x6b\x4a\x4f\xd9\x6b\x4c\x00\x00\x00\x00\x4f\xd8\x00\x00\x00\x00\x00\x00\x00\x00\x6c\xf5\x6c\xf7\x51\xd6\x6c\xf3\x6c\xf6\x6c\xf4\x51\xd4\x51\xd7\x00\x00\x51\xd5\x00\x00\x00\x00\x00\x00\x00\x00\x6f\x7a\x6f\x7e\x6f\x7b\x00\x00\x53\xe8\x00\x00\x53\xe9\x00\x00\x6f\x7d\x00\x00\x6f\x7f\x6f\x82\x00\x00\x53\xe6\x6f\x81\x00\x00\x00\x00\x53\xe7\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x75\x94\x6f\x7c\x72\x57\x72\x60\x72\x5e\x72\x59\x72\x5a\x72\x5f\x72\x61\x56\x76\x00\x00\x72\x5c\x72\x58\x56\x75\x56\x77\x72\x5b\x72\x62\x72\x5d\x00\x00\x00\x00\x58\xe4\x75\x97\x75\x8f\x75\x95\x75\x96\x58\xe5\x00\x00\x75\x8e\x75\x90\x6f\x79\x75\x92\x75\x93\x75\x91\x5b\x73\x00\x00\x00\x00\x00\x00\x78\xfb\x86\x41\x78\xfc\x78\xf9\x58\xe6\x5b\x75\x78\xf8", /* 9100 */ "\x79\x41\x78\xfd\x5b\x72\x79\x44\x78\xf7\x79\x43\x78\xf5\x79\x42\x78\xfa\x5b\x74\x00\x00\x7c\xb1\x00\x00\x7c\xac\x7c\xb2\x7c\xad\x7c\xab\x7c\xae\x5d\xb8\x00\x00\x7c\xb0\x00\x00\x7c\xaf\x5d\xb9\x5f\xc8\x5f\xc7\x7f\xd7\x7f\xda\x7f\xd2\x7f\xd6\x5f\xc9\x7f\xd5\x7f\xd3\x7f\xd9\x7f\xd4\x7f\xd1\x7f\xd8\x00\x00\x83\x45\x61\xd0\x8a\x98\x83\x42\x83\x43\x83\x41\x78\xf6\x61\xcf\x83\x46\x82\xfd\x61\xce\x61\xd1\x83\x44\x86\x42\x63\x7d\x86\x43\x86\x44\x00\x00\x88\x91\x64\xe6\x8a\x99\x8a\x9a\x00\x00\x00\x00\x8a\x9b\x8c\x6c\x8c\x6b\x8d\xb1\x00\x00\x8d\xb0\x8e\xca\x8e\xcb\x8e\xc9\x8f\xb6\x67\xf9\x4f\xdb\x53\xeb\x53\xea\x56\x7a\x56\x79\x72\x64\x72\x65\x72\x63\x00\x00\x56\x78\x75\x9b\x00\x00\x75\x9c\x75\x98\x58\xe7\x75\x99\x00\x00\x75\x9a\x00\x00\x00\x00\x00\x00\x00\x00\x79\x47\x79\x49\x79\x45\x79\x48\x5b\x76\x79\x46\x5b\x77\x00\x00\x00\x00\x79\xf9\x5d\xbc\x5d\xbb\x00\x00\x5d\xba\x00\x00\x7c\xb3\x7c\xb4\x00\x00\x00\x00\x7f\xdc\x7f\xde\x5f\xcd\x5f\xca\x00\x00\x5f\xcc\x5f\xcb\x7f\xdd\x7f\xdb\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 9180 */ "\x83\x4d\x83\x4a\x83\x4b\x61\xd5\x83\x4c\x83\x47\x83\x48\x61\xd2\x00\x00\x61\xd3\x83\x49\x61\xd4\x00\x00\x86\x48\x00\x00\x86\x49\x86\x46\x86\x47\x63\x7e\x86\x45\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x88\x95\x88\x92\x88\x94\x64\xe9\x88\x98\x64\xe8\x88\x96\x88\x99\x88\x97\x88\x93\x64\xe7\x00\x00\x8a\x9d\x00\x00\x8a\x9e\x8a\x9c\x00\x00\x8a\xa0\x65\xcf\x65\xd0\x8c\x6e\x66\xb2\x8a\x9f\x8c\x6d\x66\xb1\x8d\xb4\x8d\xb5\x67\x6a\x8d\xb3\x00\x00\x8d\xb2\x00\x00\x8e\xcc\x67\xb3\x00\x00\x90\x79\x90\xd7\x90\xd6\x00\x00\x68\x8f\x68\xa9\x90\xd8\x91\x83\x00\x00\x68\xbb\x4f\xdc\x51\xd8\x00\x00\x5d\xbd\x00\x00\x67\x6b\x4f\xdd\x53\xec\x58\xe8\x5b\x78\x65\xd1\x51\xd9\x00\x00\x6f\x84\x6f\x83\x72\x66\x00\x00\x56\x7d\x56\x7b\x56\x7f\x72\x68\x00\x00\x56\x7e\x56\x7c\x00\x00\x00\x00\x00\x00\x00\x00\x72\x67\x58\xeb\x75\xa2\x00\x00\x58\xea\x58\xec\x75\xa7\x58\xee\x75\xa4\x75\xa5\x75\x9d\x58\xed\x75\xa8\x00\x00\x00\x00\x75\x9f\x00\x00\x75\xa0\x75\x9e\x58\xe9\x00\x00\x75\xa6\x75\xa1\x75\xa3\x00\x00\x00\x00\x00\x00\x79\x55\x00\x00\x79\x54", /* 9200 */ "\x79\x52\x79\x4a\x79\x59\x79\x4d\x79\x57\x79\x5e\x79\x56\x5b\x81\x00\x00\x5b\x7c\x79\x4b\x00\x00\x79\x51\x5b\x7e\x00\x00\x79\x50\x5b\x7f\x5b\x82\x79\x53\x00\x00\x5b\x79\x5b\x7a\x79\x5f\x79\x5d\x00\x00\x79\x5c\x79\x4e\x00\x00\x79\x5a\x00\x00\x5b\x7d\x00\x00\x00\x00\x00\x00\x00\x00\x5b\x7b\x79\x5b\x79\x4c\x79\x4f\x79\x58\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x44\x7c\xbe\x00\x00\x7c\xb7\x7c\xca\x7c\xd3\x7c\xba\x5d\xc8\x00\x00\x7c\xc7\x5d\xbe\x5d\xc0\x5d\xcc\x7c\xb8\x00\x00\x00\x00\x5d\xc1\x5d\xc3\x5d\xcd\x5d\xc2\x00\x00\x00\x00\x00\x00\x00\x00\x5d\xcb\x7c\xc0\x00\x00\x7c\xb5\x5d\xc9\x7c\xbf\x5d\xc5\x7c\xd1\x5d\xca\x7c\xcf\x7c\xc3\x7c\xcd\x5d\xc7\x7c\xb6\x7c\xd0\x7c\xcb\x00\x00\x7c\xd2\x5d\xbf\x00\x00\x00\x00\x5d\xce\x5d\xc4\x00\x00\x00\x00\x7c\xbc\x00\x00\x7c\xc4\x7c\xc8\x00\x00\x7c\xcc\x5d\xc6\x7c\xbb\x7c\xb9\x7c\xc5\x00\x00\x00\x00\x00\x00\x00\x00\x7c\xc2\x7c\xc1\x00\x00\x7c\xc6\x7c\xc9\x00\x00\x7c\xce\x00\x00\x00\x00\x00\x00\x7f\xe1\x00\x00\x5f\xce\x7f\xeb\x7f\xe3\x5f\xd3\x5f\xd7\x7f\xf4\x7f\xfc\x7f\xed", /* 9280 */ "\x5f\xcf\x00\x00\x7f\xf1\x7c\xbd\x00\x00\x5f\xd0\x7f\xf8\x7f\xfd\x7f\xf5\x00\x00\x7f\xf7\x80\x43\x7f\xf9\x7f\xe7\x7f\xf0\x00\x00\x00\x00\x5f\xd8\x00\x00\x5f\xd4\x7f\xe5\x7f\xf2\x5f\xd2\x7f\xec\x5f\xd1\x7f\xfa\x7f\xe9\x7f\xe2\x5f\xd5\x80\x42\x00\x00\x00\x00\x7f\xe4\x7f\xf6\x7f\xf3\x7f\xee\x7f\xe0\x7f\xdf\x7f\xe8\x7f\xfb\x5f\xd6\x80\x41\x7f\xe6\x7f\xea\x61\xda\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x61\xe2\x61\xdd\x83\x6e\x83\x6b\x83\x53\x61\xd8\x00\x00\x00\x00\x00\x00\x61\xd7\x61\xde\x00\x00\x00\x00\x00\x00\x83\x51\x61\xdc\x83\x5d\x83\x4f\x83\x50\x61\xd6\x83\x6d\x61\xe0\x83\x60\x83\x65\x83\x5f\x86\x5b\x83\x5b\x83\x63\x83\x61\x83\x54\x83\x4e\x83\x69\x61\xdf\x83\x6a\x00\x00\x83\x64\x00\x00\x83\x59\x83\x57\x83\x52\x00\x00\x00\x00\x00\x00\x83\x5a\x83\x67\x83\x56\x83\x66\x83\x6c\x00\x00\x00\x00\x61\xdb\x00\x00\x83\x62\x83\x68\x83\x5e\x83\x58\x61\xd9\x00\x00\x00\x00\x00\x00\x7f\xef\x83\x5c\x61\xe1\x83\x55\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x86\x61\x63\x82\x86\x60\x86\x5d\x86\x70\x63\x86\x00\x00\x86\x6d\x86\x65", /* 9300 */ "\x86\x6f\x86\x56\x86\x63\x00\x00\x63\x88\x00\x00\x86\x4e\x00\x00\x86\x4c\x86\x6e\x00\x00\x86\x6c\x86\x6b\x86\x5a\x86\x59\x86\x4f\x63\x8a\x00\x00\x86\x55\x86\x5f\x86\x6a\x63\x8d\x86\x71\x00\x00\x64\xf1\x63\x8f\x63\x89\x86\x53\x00\x00\x86\x5c\x86\x4b\x86\x4d\x63\x7f\x63\x8c\x63\x85\x86\x54\x86\x64\x86\x5e\x63\x8b\x86\x4a\x64\xec\x86\x66\x86\x69\x63\x87\x00\x00\x86\x58\x63\x8e\x63\x84\x00\x00\x00\x00\x00\x00\x63\x83\x86\x62\x86\x68\x63\x81\x00\x00\x86\x51\x86\x67\x00\x00\x00\x00\x86\x52\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x86\x57\x88\x9f\x00\x00\x88\xa4\x64\xee\x64\xf0\x88\xaa\x64\xea\x88\xb9\x88\xb0\x88\xa5\x88\xa6\x88\xaf\x00\x00\x64\xf7\x88\xae\x88\x9e\x88\xad\x88\xa1\x88\xba\x64\xf6\x64\xf4\x88\xa2\x00\x00\x88\xb5\x00\x00\x88\xa7\x88\xb4\x00\x00\x88\xb6\x88\x9d\x64\xef\x00\x00\x88\xb7\x00\x00\x00\x00\x88\xab\x00\x00\x64\xf3\x88\xa8\x00\x00\x00\x00\x64\xf5\x88\xb1\x00\x00\x00\x00\x00\x00\x64\xed\x88\xa3\x88\xb2\x00\x00\x88\xac\x86\x50\x88\xb3\x88\xa0\x00\x00\x64\xf2\x00\x00", /* 9380 */ "\x88\xb8\x00\x00\x64\xeb\x88\x9b\x00\x00\x00\x00\x00\x00\x00\x00\x8a\xae\x8a\xa7\x65\xd3\x00\x00\x8a\xa2\x8a\xb1\x8a\xa9\x88\xa9\x00\x00\x8a\xb3\x8a\xa3\x00\x00\x65\xd2\x8a\xad\x65\xd4\x65\xdc\x65\xda\x8a\xaf\x65\xdb\x8a\xa5\x00\x00\x8a\xa6\x8a\xab\x8a\xb0\x00\x00\x88\x9a\x65\xd5\x8a\xb8\x8a\xb5\x8a\xb9\x8a\xac\x8a\xa8\x8a\xb6\x8c\x79\x8a\xaa\x00\x00\x65\xd8\x00\x00\x65\xd7\x88\x9c\x65\xd9\x8a\xb2\x8a\xb4\x65\xd6\x8a\xb7\x8a\xa1\x00\x00\x8a\xa4\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x8c\x83\x00\x00\x8c\x72\x66\xb6\x8c\x81\x00\x00\x00\x00\x8c\x70\x66\xb7\x00\x00\x8c\x7b\x00\x00\x8c\x77\x66\xbc\x8c\x82\x8c\x71\x8c\x74\x66\xb4\x8c\x84\x00\x00\x8c\x7c\x8c\x7f\x66\xba\x66\xbf\x66\xbd\x8c\x78\x8c\x73\x00\x00\x66\xb8\x66\xb9\x8c\x6f\x66\xb5\x00\x00\x66\xb3\x66\xbb\x8c\x7e\x66\xbe\x00\x00\x8c\x7a\x8c\x85\x66\xc0\x00\x00\x00\x00\x00\x00\x8c\x76\x00\x00\x8c\x7d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x8d\xc2\x8d\xd0\x8d\xc4\x8d\xcb\x8c\x75\x8d\xc9\x8d\xb8\x8d\xce\x67\x6e\x8d\xbc\x8d\xcd", /* 9400 */ "\x8d\xc3\x00\x00\x00\x00\x67\x6d\x00\x00\x00\x00\x8d\xd2\x8d\xc5\x00\x00\x8d\xca\x8d\xcc\x8d\xb6\x8d\xcf\x8d\xc1\x8d\xc6\x8d\xba\x8d\xbe\x8d\xd1\x8d\xc8\x8d\xb7\x8d\xbb\x8d\xbd\x8d\xc7\x00\x00\x67\x6c\x8d\xc0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x8d\xb9\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x8d\xbf\x8e\xd0\x8e\xd5\x67\xba\x8e\xd7\x00\x00\x67\xb4\x00\x00\x8e\xd3\x8e\xd9\x67\xb9\x67\xb5\x00\x00\x67\xb6\x8e\xcf\x8e\xd6\x67\xb8\x8e\xd4\x67\xb7\x8e\xce\x8e\xd2\x8e\xd1\x00\x00\x8e\xcd\x8e\xd8\x00\x00\x00\x00\x00\x00\x67\xfa\x8f\xbd\x8f\xc0\x8f\xbc\x8f\xbe\x8f\xbf\x8f\xb9\x8f\xba\x8f\xb7\x00\x00\x00\x00\x8f\xbb\x8f\xb8\x67\xfb\x67\xfc\x00\x00\x00\x00\x90\x7b\x00\x00\x90\x7d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x90\x7c\x90\x7e\x00\x00\x68\x6c\x00\x00\x90\x7a\x68\x6b\x68\x6d\x00\x00\x00\x00\x00\x00\x90\xda\x90\xdb\x68\x90\x90\xd9\x00\x00\x91\x64\x91\x63\x91\x65\x68\xab\x91\x66\x68\xaa\x91\x67\x91\x84\x91\x87\x91\x86\x68\xb4\x91\x85\x00\x00\x00\x00\x00\x00\x68\xbe\x68\xbc\x68\xbd\x68\xc3", /* 9480 */ "\x91\xb0\x91\xb1\x91\xaf\x91\xb9\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 9500 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x51\xda\x00\x00\x00\x00\x75\xa9\x79\x60\x83\x6f\x8c\x86\x00\x00\x00\x00", /* 9580 */ "\x51\xdb\x00\x00\x53\xed\x56\x81\x00\x00\x00\x00\x75\xaa\x00\x00\x75\xab\x58\xef\x00\x00\x5b\x85\x79\x62\x79\x61\x5b\x89\x5b\x84\x79\x63\x5b\x86\x5b\x88\x5b\x87\x5b\x83\x00\x00\x00\x00\x00\x00\x5d\xcf\x00\x00\x00\x00\x7c\xd7\x7c\xd5\x00\x00\x7c\xd6\x7c\xd4\x00\x00\x5f\xd9\x00\x00\x5f\xdc\x5f\xde\x5f\xdd\x00\x00\x00\x00\x5f\xda\x5f\xdb\x00\x00\x83\x71\x83\x70\x61\xe3\x83\x72\x00\x00\x83\x73\x61\xe4\x00\x00\x00\x00\x00\x00\x86\x79\x86\x77\x88\xc0\x00\x00\x86\x75\x86\x76\x63\x90\x86\x72\x86\x7a\x86\x74\x86\x78\x88\xbc\x00\x00\x00\x00\x88\xbe\x00\x00\x88\xbf\x64\xfc\x88\xbb\x64\xfb\x88\xbd\x64\xf8\x64\xf9\x64\xfa\x86\x73\x00\x00\x00\x00\x65\xdf\x8a\xbc\x8a\xba\x8a\xbb\x65\xdd\x65\xe0\x65\xde\x00\x00\x00\x00\x00\x00\x8c\x87\x8c\x88\x66\xc1\x00\x00\x8d\xd3\x8d\xd5\x8d\xd4\x67\x6f\x67\xbb\x8e\xdc\x8e\xdb\x8e\xda\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 9600 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x51\xdc\x00\x00\x69\x8a\x00\x00\x69\xf7\x4e\x8b\x69\xf5\x69\xf8\x69\xf6\x00\x00\x00\x00\x00\x00\x6b\x4f\x00\x00\x4f\xe1\x00\x00\x4f\xe2\x6b\x51\x4f\xdf\x6b\x50\x6b\x4e\x4f\xe0\x4f\xde\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6c\xf8\x6c\xfb\x51\xdf\x6c\xfa\x6c\xf9\x00\x00\x51\xde\x51\xdd\x00\x00\x51\xe1\x6c\xfc\x51\xe0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6f\x89\x53\xef\x53\xf0\x53\xf1\x6f\x8a\x6f\x86\x53\xee\x6f\x87\x00\x00\x6f\x88\x6f\x85\x00\x00\x00\x00\x00\x00\x56\x88\x00\x00\x00\x00\x56\x85\x72\x69\x56\x86\x56\x89\x72\x6a\x00\x00\x56\x84\x56\x82\x56\x83\x56\x87\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x58\xf0\x75\xae\x58\xf8\x75\xad\x00\x00\x75\xb0\x58\xf4\x75\xaf\x5b\x91\x58\xf2\x58\xf5\x58\xf1\x58\xf6\x58\xf7\x58\xf3\x00\x00\x00\x00\x00\x00\x75\xac\x5b\x8d\x79\x65\x00\x00", /* 9680 */ "\x79\x69\x00\x00\x00\x00\x79\x68\x5b\x92\x5b\x8e\x5b\x8f\x79\x64\x79\x66\x79\x67\x5b\x8a\x5b\x8c\x00\x00\x5b\x90\x5b\x8b\x00\x00\x00\x00\x7c\xda\x7c\xd8\x7c\xd9\x5d\xd1\x5d\xd2\x00\x00\x7c\xdb\x5d\xd0\x5f\xdf\x00\x00\x5f\xe1\x5f\xe0\x00\x00\x80\x45\x00\x00\x00\x00\x80\x46\x83\x75\x00\x00\x83\x74\x00\x00\x00\x00\x63\x91\x63\x92\x86\x7b\x63\x93\x00\x00\x88\xc3\x00\x00\x88\xc1\x00\x00\x88\xc2\x64\xfd\x00\x00\x8a\xbd\x66\xc2\x00\x00\x48\xeb\x00\x00\x65\x41\x51\xe2\x00\x00\x56\x8a\x72\x6b\x00\x00\x00\x00\x75\xb1\x58\xf9\x5b\x93\x79\x6a\x79\x6c\x5b\x95\x5b\x94\x5b\x96\x5b\x97\x79\x6b\x5d\xd5\x5d\xd6\x5d\xd4\x5f\xe2\x5d\xd3\x7c\xdc\x00\x00\x00\x00\x00\x00\x5f\xe3\x83\x76\x86\x7c\x63\x94\x65\x42\x8a\xbe\x8a\xc2\x65\xe3\x8a\xbf\x65\xe4\x65\xe2\x8a\xc3\x65\xe5\x8a\xc1\x00\x00\x8c\x89\x65\xe1\x66\xc3\x00\x00\x90\xdc\x00\x00\x00\x00\x51\xe3\x58\xfb\x58\xfa\x00\x00\x00\x00\x00\x00\x00\x00\x5b\x98\x79\x6e\x79\x6d\x5b\x99\x00\x00\x00\x00\x7c\xe0\x5d\xda\x5d\xd7\x7c\xdf\x5d\xd9\x7c\xdd\x5d\xd8\x00\x00\x7c\xde\x00\x00\x80\x47", /* 9700 */ "\x5f\xe4\x00\x00\x83\x79\x00\x00\x61\xe5\x83\x77\x61\xe6\x61\xe7\x83\x78\x61\xe8\x00\x00\x86\x7d\x00\x00\x63\x98\x63\x95\x63\x9a\x86\x7f\x63\x96\x86\x7e\x63\x99\x00\x00\x00\x00\x63\x97\x00\x00\x88\xc6\x88\xc8\x00\x00\x00\x00\x65\x43\x88\xc7\x65\x44\x88\xc5\x88\xc4\x00\x00\x8a\xc5\x8a\xc4\x65\xe6\x8a\xc6\x8c\x8e\x66\xc5\x8c\x8d\x8c\x8a\x66\xc4\x8c\x8b\x8c\x8c\x00\x00\x8d\xd6\x8d\xd7\x67\x70\x00\x00\x67\xbe\x00\x00\x00\x00\x8e\xdd\x00\x00\x00\x00\x67\xbc\x67\xbd\x8e\xde\x00\x00\x00\x00\x67\xfd\x68\x41\x8f\xc1\x00\x00\x00\x00\x68\x91\x90\xde\x68\x93\x00\x00\x90\xdd\x90\xdf\x68\x92\x91\x68\x00\x00\x91\x9d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x51\xe4\x00\x00\x00\x00\x00\x00\x5d\xdb\x00\x00\x80\x48\x00\x00\x83\x7a\x63\x9b\x63\x9c\x00\x00\x51\xe5\x00\x00\x61\xe9\x66\xc6\x53\xf2\x00\x00\x00\x00\x00\x00\x63\x9d\x00\x00\x68\x6e\x53\xf3\x75\xb2\x00\x00\x79\x6f\x00\x00\x79\x71\x00\x00\x79\x70\x00\x00\x7c\xe4\x7c\xe1\x5d\xdc\x00\x00\x5d\xdd\x7c\xe2\x7c\xe3\x00\x00\x80\x4a\x80\x4f\x5f\xe5\x80\x49\x80\x4b\x80\x52", /* 9780 */ "\x80\x4d\x80\x51\x80\x4e\x80\x4c\x80\x50\x5f\xe6\x00\x00\x00\x00\x83\x7d\x00\x00\x83\x7b\x61\xeb\x00\x00\x61\xea\x83\x7c\x61\xec\x00\x00\x00\x00\x00\x00\x00\x00\x86\x83\x00\x00\x00\x00\x86\x82\x63\x9e\x86\x81\x88\xc9\x00\x00\x88\xcb\x88\xcd\x88\xcc\x00\x00\x65\x45\x88\xca\x8a\xcd\x65\xe7\x8a\xcb\x8a\xce\x65\xe8\x00\x00\x8a\xc9\x00\x00\x8a\xcc\x8a\xca\x8a\xc7\x65\xe9\x8a\xc8\x00\x00\x00\x00\x00\x00\x00\x00\x8c\x8f\x00\x00\x00\x00\x8c\x91\x8c\x90\x00\x00\x8d\xd8\x00\x00\x8d\xd9\x00\x00\x00\x00\x00\x00\x8e\xdf\x00\x00\x68\x43\x00\x00\x68\x42\x90\x7f\x90\x81\x68\x94\x90\xe0\x00\x00\x68\xb5\x00\x00\x53\xf4\x5b\x9a\x80\x54\x80\x53\x83\x7f\x83\x7e\x00\x00\x00\x00\x65\x46\x88\xcf\x88\xce\x8a\xd1\x8a\xcf\x8a\xd2\x8a\xd0\x00\x00\x00\x00\x66\xc7\x8c\x92\x8c\x93\x8c\x94\x00\x00\x8e\xe0\x00\x00\x8f\xc2\x00\x00\x90\xe1\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x53\xf5\x00\x00\x00\x00\x86\x84\x88\xd0\x00\x00\x53\xf6\x00\x00\x00\x00\x5f\xe7\x00\x00\x86\x85\x65\xea\x8a\xd3\x66\xc8\x00\x00\x8d\xda\x8d\xdb\x67\xbf", /* 9800 */ "\x90\x82\x53\xf7\x59\x41\x59\x42\x75\xb3\x5b\x9b\x5b\x9c\x79\x72\x5b\x9d\x00\x00\x5d\xe1\x00\x00\x5d\xe3\x7c\xe6\x7c\xe7\x7c\xe5\x5d\xde\x5d\xdf\x5d\xe2\x5d\xe0\x00\x00\x00\x00\x80\x55\x5f\xe8\x5f\xe9\x00\x00\x00\x00\x83\x87\x61\xef\x83\x82\x83\x81\x00\x00\x83\x86\x61\xed\x00\x00\x00\x00\x63\xa5\x00\x00\x83\x83\x83\x88\x83\x85\x83\x84\x00\x00\x61\xee\x00\x00\x63\xa3\x00\x00\x86\x87\x63\x9f\x00\x00\x86\x88\x00\x00\x00\x00\x86\x86\x00\x00\x63\xa2\x63\xa0\x63\xa4\x00\x00\x63\xa1\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x88\xd1\x00\x00\x88\xd6\x88\xd2\x88\xd5\x65\x47\x00\x00\x87\xc0\x88\xd4\x88\xd3\x00\x00\x65\xed\x65\xeb\x65\xee\x65\xec\x8a\xd4\x8a\xd5\x8a\xd6\x65\xef\x00\x00\x00\x00\x00\x00\x8c\x98\x66\xca\x8c\x96\x00\x00\x66\xcb\x8c\x95\x8c\x97\x66\xc9\x8d\xdf\x8d\xdc\x00\x00\x8d\xdd\x8d\xde\x8e\xe1\x67\xc1\x00\x00\x67\xc0\x00\x00\x8f\xc4\x8f\xc3\x68\x44\x00\x00\x00\x00\x00\x00\x68\x6f\x68\x95\x68\xac\x91\x69\x91\x9e\x91\x9f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 9880 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x53\xf8\x79\x73\x00\x00\x00\x00\x7c\xe8\x80\x56\x80\x57\x5f\xea\x00\x00\x5f\xeb\x83\x89\x61\xf0\x00\x00\x00\x00\x65\x48\x00\x00\x8a\xd7\x00\x00\x65\xf0\x8c\x9b\x66\xcc\x8c\x9a\x8c\x9c\x8c\x99\x8e\xe4\x8d\xe0\x8d\xe1\x00\x00\x67\x71\x00\x00\x8e\xe3\x00\x00\x00\x00\x8e\xe2\x00\x00\x8f\xc5\x91\xa0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x53\xf9\x00\x00\x00\x00\x00\x00\x53\xfa\x00\x00\x00\x00\x56\x8b\x72\x6c\x00\x00\x75\xb4\x00\x00\x5b\x9e\x00\x00\x5b\xa1\x5b\x9f\x79\x74\x00\x00\x5b\xa3\x00\x00\x5b\xa0\x00\x00\x00\x00\x5b\xa2\x00\x00\x5d\xe5\x00\x00\x7c\xe9\x00\x00\x00\x00\x7c\xea\x83\x8b\x00\x00\x5d\xe4\x5d\xe6\x5d\xe7\x00\x00", /* 9900 */ "\x80\x59\x00\x00\x80\x58\x5f\xec\x00\x00\x5f\xed\x00\x00\x80\x5a\x83\x8a\x5f\xef\x61\xf1\x00\x00\x5f\xee\x00\x00\x00\x00\x00\x00\x63\xa6\x83\x8c\x61\xf3\x61\xf2\x83\x8d\x83\x90\x83\x8e\x83\x8f\x61\xf4\x00\x00\x63\xab\x63\xa9\x00\x00\x00\x00\x63\xa8\x86\x8a\x00\x00\x63\xaa\x00\x00\x00\x00\x86\x89\x88\xd7\x00\x00\x86\x8b\x63\xa7\x86\x8c\x88\xda\x88\xd8\x88\xd9\x88\xde\x65\xf4\x88\xdd\x88\xe0\x88\xdf\x88\xdc\x88\xdb\x00\x00\x65\x49\x00\x00\x00\x00\x00\x00\x00\x00\x8a\xda\x00\x00\x8a\xd9\x65\xf3\x65\xf1\x65\xf2\x00\x00\x8a\xd8\x00\x00\x8c\x9f\x00\x00\x66\xcd\x00\x00\x8c\x9e\x8c\x9d\x66\xce\x00\x00\x8d\xe6\x8d\xe5\x00\x00\x8d\xe3\x00\x00\x8d\xe2\x67\x73\x67\x72\x8d\xe7\x8f\xc6\x68\x45\x8e\xe6\x67\xc2\x8e\xe5\x8d\xe4\x00\x00\x8f\xc7\x68\x70\x00\x00\x68\xad\x91\x6a\x00\x00\x91\xa1\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 9980 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x53\xfb\x75\xb5\x88\xe1\x53\xfc\x00\x00\x00\x00\x80\x5c\x80\x5b\x86\x8d\x00\x00\x00\x00\x88\xe3\x00\x00\x88\xe2\x00\x00\x65\xf5\x8c\xa0\x8c\xa1\x67\x74\x00\x00\x00\x00\x91\xa2\x56\x8c\x5b\xa5\x5b\xa4\x7c\xeb\x7c\xed\x5d\xe9\x7c\xec\x5d\xe8\x5d\xea\x7c\xee\x00\x00\x00\x00\x00\x00\x80\x5e\x80\x60\x80\x5f\x00\x00\x80\x62\x00\x00\x00\x00\x00\x00\x5f\xf0\x80\x61\x80\x5d\x00\x00\x00\x00\x00\x00\x80\x63\x00\x00\x83\x97\x00\x00\x83\x9a\x83\x9c\x83\x92\x83\x96\x83\x93\x61\xf6\x61\xf9\x61\xfb\x83\x94\x83\x95\x61\xfa\x83\x98\x83\x9b\x83\x99\x61\xfc\x00\x00\x61\xf8\x83\x91\x61\xf5\x00\x00\x61\xf7\x00\x00\x00\x00\x63\xad\x86\x93\x86\x91\x86\x90\x00\x00\x86\x96\x00\x00\x86\x95\x86\x94\x00\x00\x86\x8f\x63\xac\x86\x8e\x00\x00\x86\x92\x63\xae\x00\x00\x00\x00\x88\xe6\x00\x00\x88\xea\x88\xe7\x88\xe9\x88\xe8\x88\xe5\x88\xeb\x88\xee\x88\xec\x88\xed\x65\x4b", /* 9a00 */ "\x00\x00\x65\x4a\x88\xe4\x88\xef\x8a\xdf\x8a\xe2\x8a\xe4\x8a\xe3\x00\x00\x8a\xdd\x8a\xe1\x8a\xdc\x00\x00\x8a\xde\x65\xf6\x8a\xdb\x00\x00\x8a\xe0\x00\x00\x00\x00\x8c\xae\x8c\xa3\x66\xcf\x00\x00\x00\x00\x66\xd0\x8c\xa2\x8c\xa7\x8c\xad\x8c\xa5\x8c\xac\x00\x00\x8c\xa9\x00\x00\x8c\xa8\x8c\xab\x8c\xa6\x8c\xa4\x00\x00\x8c\xaa\x00\x00\x8d\xee\x8d\xec\x67\x75\x8d\xeb\x8d\xf1\x8d\xef\x00\x00\x67\x76\x8d\xea\x8d\xe8\x00\x00\x8d\xe9\x67\x78\x8d\xed\x67\x77\x8d\xf0\x8e\xe7\x8e\xed\x00\x00\x00\x00\x8e\xe8\x67\xc6\x8e\xee\x67\xc5\x8e\xec\x8e\xeb\x67\xc4\x8e\xea\x67\xc3\x8e\xe9\x00\x00\x8f\xcd\x8f\xcf\x8f\xce\x00\x00\x8f\xcb\x68\x47\x8f\xc8\x8f\xcc\x8f\xd1\x00\x00\x8f\xd0\x8f\xc9\x8f\xca\x68\x46\x90\x83\x68\x73\x00\x00\x90\x84\x68\x71\x68\x72\x00\x00\x00\x00\x90\xe2\x68\x96\x91\x88\x00\x00\x68\xb6\x00\x00\x91\xa3\x68\xb7\x91\xa4\x91\xa5\x91\xb3\x91\xb2\x68\xc6\x91\xbd\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 9a80 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x56\x8d\x00\x00\x00\x00\x7c\xf0\x00\x00\x7c\xef\x00\x00\x5f\xf1\x5f\xf2\x80\x64\x00\x00\x83\x9d\x86\x99\x00\x00\x00\x00\x61\xfd\x63\xaf\x86\x97\x00\x00\x86\x9a\x63\xb0\x00\x00\x88\xf0\x86\x98\x8a\xe5\x65\xf7\x8c\xaf\x00\x00\x00\x00\x00\x00\x8d\xf4\x8d\xf2\x00\x00\x00\x00\x8d\xf3\x00\x00\x00\x00\x8e\xef\x00\x00\x67\xc7\x8f\xd2\x68\x76\x68\x48\x68\x74\x68\x75\x90\xe3\x68\xae\x00\x00\x56\x8e\x00\x00\x00\x00\x00\x00\x8a\xe6\x00\x00\x00\x00\x72\x6d\x00\x00\x5d\xeb\x00\x00\x80\x65\x00\x00\x00\x00\x5f\xf3\x80\x66\x00\x00\x00\x00\x00\x00\x83\x9f\x83\x9e\x63\xb2\x62\x41\x62\x42\x00\x00\x83\xa2\x83\xa1\x83\xa0\x00\x00\x00\x00\x86\x9b\x86\x9e\x00\x00\x86\x9d\x86\x9c\x63\xb1\x88\xf4\x88\xf2\x88\xf1\x00\x00", /* 9b00 */ "\x00\x00\x88\xf3\x00\x00\x65\xf8\x8a\xe8\x8a\xe9\x65\xf9\x00\x00\x8a\xe7\x00\x00\x8c\xb1\x8c\xb0\x8c\xb3\x66\xd1\x8c\xb2\x00\x00\x8d\xf5\x8d\xf7\x8d\xf6\x00\x00\x00\x00\x8e\xf0\x8e\xf3\x8e\xf1\x8e\xf2\x8f\xd3\x68\x49\x00\x00\x00\x00\x00\x00\x90\x85\x90\x86\x90\x87\x00\x00\x68\x97\x68\xaf\x91\xa6\x56\x8f\x00\x00\x62\x43\x63\xb3\x8a\xea\x00\x00\x8f\xd4\x00\x00\x00\x00\x91\xb4\x72\x6e\x00\x00\x68\xc7\x56\x90\x86\x9f\x00\x00\x8a\xeb\x00\x00\x8c\xb4\x00\x00\x00\x00\x8e\xf4\x8f\xd5\x56\x91\x00\x00\x80\x67\x80\x68\x00\x00\x5f\xf4\x5f\xf5\x83\xa4\x62\x45\x62\x44\x83\xa3\x00\x00\x88\xf5\x00\x00\x8a\xec\x8a\xee\x8a\xed\x65\xfc\x65\xfb\x65\xfa\x00\x00\x67\xc9\x8e\xf5\x00\x00\x67\xc8\x8f\xd7\x8f\xd6\x00\x00\x68\x98\x90\xe4\x59\x43\x7c\xf1\x00\x00\x00\x00\x00\x00\x80\x6b\x80\x69\x80\x6a\x00\x00\x00\x00\x83\xad\x00\x00\x83\xa8\x83\xa5\x83\xac\x00\x00\x00\x00\x00\x00\x83\xae\x00\x00\x00\x00\x62\x47\x83\xab\x83\xa7\x00\x00\x00\x00\x83\xa6\x83\xaa\x83\xa9\x62\x46\x00\x00\x00\x00\x86\xaa\x86\xa5\x86\xa3\x86\xac\x86\xa4\x00\x00", /* 9b80 */ "\x86\xa0\x00\x00\x86\xa6\x00\x00\x00\x00\x86\xa1\x89\x41\x86\xa2\x86\xad\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x86\xa9\x63\xb4\x86\xa8\x86\xa7\x00\x00\x86\xab\x00\x00\x00\x00\x00\x00\x00\x00\x88\xf6\x88\xf9\x00\x00\x00\x00\x88\xf8\x00\x00\x89\x43\x88\xfb\x89\x42\x00\x00\x88\xfd\x88\xfc\x88\xfa\x00\x00\x88\xf7\x00\x00\x65\x4e\x65\x4d\x00\x00\x65\x4f\x65\x4c\x89\x44\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x8a\xf4\x8a\xf7\x00\x00\x8a\xf5\x8a\xf9\x00\x00\x00\x00\x00\x00\x8a\xfa\x00\x00\x8a\xf2\x66\x44\x8a\xf3\x00\x00\x8a\xf1\x8a\xf8\x00\x00\x8a\xf0\x8a\xef\x66\x43\x66\x41\x65\xfd\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x8a\xf6\x8c\xbd\x8c\xc3\x66\xd4\x8c\xbe\x00\x00\x8c\xc1\x8c\xc5\x66\xd5\x8c\xc0\x00\x00\x8c\xb8\x00\x00\x8c\xb7\x8c\xc4\x8c\xbb\x00\x00\x8c\xb9\x8c\xc2\x8c\xba\x66\xd3\x66\xd2\x00\x00\x8c\xb5\x8c\xb6\x8c\xbf\x00\x00\x00\x00\x00\x00\x8c\xbc\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x8d\xfa\x8d\xfd\x00\x00\x00\x00\x00\x00\x00\x00\x66\x42\x00\x00\x00\x00", /* 9c00 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x8d\xfb\x8e\x44\x8e\x42\x8d\xf9\x8e\x47\x00\x00\x8d\xf8\x00\x00\x67\x7a\x8e\x43\x00\x00\x00\x00\x00\x00\x8d\xfc\x67\x79\x8e\x46\x00\x00\x00\x00\x8e\x45\x00\x00\x00\x00\x00\x00\x00\x00\x8e\xf8\x8e\xf7\x00\x00\x00\x00\x00\x00\x8f\x41\x00\x00\x8e\xfa\x8e\xfd\x67\xcb\x00\x00\x00\x00\x8e\xfb\x8e\xfc\x00\x00\x8e\xf6\x8e\xf9\x67\xca\x00\x00\x00\x00\x00\x00\x68\x4b\x8f\xe2\x8f\xdd\x8f\xe1\x00\x00\x8f\xe4\x8f\xe0\x00\x00\x8f\xdc\x00\x00\x68\x4d\x8f\xdf\x8f\xe3\x68\x4c\x8f\xda\x8e\x41\x8f\xde\x00\x00\x00\x00\x8f\xdb\x00\x00\x8f\xd8\x00\x00\x8f\xd9\x68\x4a\x90\x8b\x90\x8d\x90\x90\x90\x8c\x90\x91\x00\x00\x90\x8a\x00\x00\x90\x88\x00\x00\x68\x77\x90\x8e\x68\x79\x68\x78\x90\x89\x90\x8f\x00\x00\x00\x00\x00\x00\x00\x00\x90\xe9\x68\x99\x90\xea\x00\x00\x90\xe8\x90\xe5\x00\x00\x00\x00\x90\xe7\x90\xe6\x91\x6b\x00\x00\x00\x00\x00\x00\x00\x00\x91\x6d\x91\x6c\x00\x00\x00\x00\x91\x8b\x00\x00\x91\x8a\x91\x89\x91\x8c\x00\x00\x68\xbf\x68\xc0\x91\xba\x91\xbe\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 9c80 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x59\x44\x79\x75\x7c\xf4\x00\x00\x5d\xec\x7c\xf2\x00\x00\x00\x00\x7c\xf3\x00\x00\x00\x00\x00\x00\x80\x6c\x80\x6d\x5f\xf8\x5f\xf6\x80\x6e\x5f\xf7\x83\xb3\x00\x00\x83\xb6\x83\xb0\x83\xb7\x83\xaf\x83\xb1\x00\x00\x83\xb2", /* 9d00 */ "\x83\xb5\x00\x00\x00\x00\x62\x4a\x83\xba\x83\xb9\x62\x48\x83\xb4\x83\xb8\x62\x49\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x86\xb7\x00\x00\x63\xb9\x00\x00\x86\xb2\x63\xb5\x00\x00\x86\xaf\x86\xb5\x86\xb8\x00\x00\x63\xba\x00\x00\x86\xb4\x86\xb1\x86\xb9\x86\xb0\x00\x00\x86\xb6\x63\xb6\x00\x00\x86\xae\x63\xb7\x00\x00\x63\xb8\x86\xb3\x00\x00\x00\x00\x00\x00\x89\x56\x89\x49\x89\x4a\x89\x4d\x89\x4b\x00\x00\x89\x45\x00\x00\x00\x00\x89\x48\x89\x52\x89\x4c\x00\x00\x00\x00\x65\x50\x00\x00\x89\x54\x89\x51\x65\x51\x89\x53\x89\x46\x89\x4f\x89\x50\x00\x00\x89\x4e\x00\x00\x00\x00\x00\x00\x00\x00\x8b\x41\x8b\x43\x8b\x46\x00\x00\x00\x00\x8a\xfd\x00\x00\x66\x45\x8b\x48\x8a\xfc\x8b\x49\x00\x00\x8b\x45\x8b\x47\x8b\x4b\x8b\x44\x8b\x4c\x8b\x42\x8a\xfb\x66\x46\x00\x00\x8b\x4a\x66\x47\x66\xd7\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x89\x47\x8c\xdf\x8c\xd6\x66\xd9\x8c\xd2\x66\xda\x00\x00\x00\x00\x8c\xdb\x8c\xd5\x8c\xcb\x66\xd8\x8c\xd8\x8c\xd3\x8c\xd4\x00\x00\x8c\xc6\x8c\xcd\x8c\xdc\x00\x00\x8c\xd9\x00\x00\x8c\xd1\x00\x00\x8c\xdd", /* 9d80 */ "\x8c\xcc\x8c\xc7\x8c\xda\x00\x00\x8c\xc9\x8c\xd7\x8c\xce\x8c\xde\x8c\xca\x66\xd6\x8c\xc8\x8c\xcf\x8c\xd0\x00\x00\x00\x00\x00\x00\x8e\x4e\x00\x00\x8e\x4c\x00\x00\x8e\x51\x00\x00\x8e\x5d\x8e\x54\x8e\x4d\x8e\x49\x8e\x56\x8e\x4f\x8e\x52\x8e\x4b\x8e\x59\x8e\x48\x8e\x50\x8e\x55\x8e\x57\x8e\x5a\x8e\x4a\x00\x00\x8e\x5e\x8e\x5f\x8e\x58\x8e\x5c\x8e\x53\x00\x00\x8f\x51\x8f\x54\x00\x00\x67\xcc\x00\x00\x8f\x53\x8f\x58\x8f\x56\x67\xcd\x8f\x4d\x8f\x43\x8f\x42\x67\xcf\x8f\x4f\x8f\x50\x8f\x4c\x8f\x44\x00\x00\x8f\x49\x8e\x5b\x00\x00\x8f\x45\x67\xce\x8f\x4b\x00\x00\x8f\x4a\x00\x00\x8f\x46\x8f\x52\x00\x00\x8f\x47\x8f\xe9\x8f\x55\x8f\x57\x8f\x4e\x8f\x48\x8f\xea\x8f\xec\x8f\xe6\x68\x4e\x00\x00\x8f\xf3\x8f\xf1\x68\x4f\x8f\xf0\x8f\xef\x8f\xe8\x8f\xe5\x8f\xeb\x8f\xf4\x8f\xe7\x8f\xed\x00\x00\x90\x9a\x90\x9f\x90\x95\x90\x98\x68\x7a\x90\x9c\x00\x00\x90\xa3\x8f\xee\x00\x00\x90\x96\x90\xa0\x90\xa4\x90\x9b\x90\x94\x90\x9e\x00\x00\x90\x9d\x90\xa2\x90\xa1\x8f\xf2\x90\x99\x90\x93\x90\x97\x68\x9a\x68\x9b\x90\x92\x00\x00\x90\xf5\x90\xec\x90\xf4", /* 9e00 */ "\x90\xf1\x90\xf2\x90\xeb\x90\xee\x90\xf6\x90\xf0\x90\xef\x90\xed\x00\x00\x90\xf3\x00\x00\x91\x6e\x00\x00\x91\x6f\x00\x00\x91\x71\x91\x70\x91\x73\x91\x72\x91\x8e\x91\x8d\x91\xa7\x00\x00\x91\xa8\x00\x00\x91\xb5\x68\xc4\x68\xc8\x00\x00\x91\xbf\x68\xc9\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x59\x45\x00\x00\x00\x00\x00\x00\x67\x7b\x8f\x59\x00\x00\x68\x9c\x68\x9d\x00\x00\x59\x46", /* 9e80 */ "\x7c\xf5\x00\x00\x5d\xed\x83\xbb\x00\x00\x00\x00\x86\xbb\x86\xbc\x86\xba\x89\x58\x89\x57\x65\x52\x8b\x4e\x89\x59\x8b\x4d\x00\x00\x00\x00\x8c\xe1\x66\xdb\x66\xdd\x8c\xe0\x00\x00\x00\x00\x66\xdc\x00\x00\x8e\x60\x8e\x62\x8e\x61\x8f\x5a\x67\xd0\x00\x00\x68\x7b\x90\xf7\x91\x74\x00\x00\x00\x00\x91\xc2\x59\x47\x00\x00\x80\x6f\x00\x00\x62\x4b\x00\x00\x00\x00\x00\x00\x86\xbe\x86\xbd\x00\x00\x89\x5a\x00\x00\x00\x00\x00\x00\x66\xde\x67\x7c\x8f\xf5\x91\xbb\x00\x00\x00\x00\x00\x00\x59\x48\x5f\xf9\x00\x00\x62\x4c\x00\x00\x8c\xe2\x00\x00\x90\xa5\x5b\xa6\x00\x00\x00\x00\x00\x00\x00\x00\x89\x5b\x00\x00\x00\x00\x00\x00\x68\xb0\x5b\xa7\x62\x4d\x65\x53\x90\xa6\x5b\xa8\x00\x00\x83\xbc\x63\xbc\x86\xbf\x86\xc0\x00\x00\x63\xbb\x00\x00\x89\x5c\x65\x57\x65\x55\x65\x56\x65\x54\x8b\x4f\x66\x48\x00\x00\x00\x00\x00\x00\x8e\x64\x8e\x63\x8e\x66\x8e\x65\x67\x7d\x00\x00\x00\x00\x8f\x5b\x00\x00\x8f\x5d\x8f\x5c\x67\xd1\x8f\xf6\x00\x00\x90\xa7\x90\xa8\x68\x7c\x91\x75\x91\x8f\x68\xc1\x00\x00\x79\x76\x86\xc1\x89\x5d\x8c\xe3\x7c\xf6\x00\x00\x89\x5e", /* 9f00 */ "\x8b\x51\x8b\x50\x00\x00\x00\x00\x00\x00\x00\x00\x90\xa9\x68\x9e\x00\x00\x91\x76\x91\x90\x00\x00\x00\x00\x00\x00\x5d\xee\x83\xbd\x83\xbe\x00\x00\x86\xc2\x5d\xef\x00\x00\x66\x49\x8b\x52\x00\x00\x8f\x5f\x67\xd2\x8f\x60\x8f\x5e\x90\xaa\x00\x00\x90\xf8\x00\x00\x5d\xf0\x00\x00\x89\x61\x89\x60\x89\x5f\x8b\x53\x00\x00\x00\x00\x8b\x57\x8b\x56\x8b\x55\x8b\x54\x66\x4a\x8c\xe4\x8e\x68\x67\x7e\x8e\x67\x8f\x61\x8f\xf9\x8f\xf8\x68\x50\x8f\xf7\x90\xad\x90\xac\x90\xab\x00\x00\x00\x00\x5f\xfa\x00\x00\x86\xc3\x65\x58\x00\x00\x8c\xe5\x8c\xe6\x8f\xfa\x90\xae\x00\x00\x00\x00\x90\xf9\x91\x77\x91\xa9\x91\xc4\x5f\xfb\x65\x59\x8b\x58\x8c\xe7\x8f\x62\x90\xaf\x00\x00\x00\x00\x62\x4f\x00\x00\x89\x62\x8b\x59\x8c\xe8\x8c\xe9\x8c\xea\x8e\x6d\x00\x00\x8e\x69\x67\xd3\x8e\x6c\x8e\x6b\x67\x7f\x8e\x6a\x67\x82\x00\x00\x67\x81\x8f\x64\x8f\x63\x67\xd4\x67\xd5\x00\x00\x00\x00\x68\x52\x8f\xfb\x68\x51\x00\x00\x90\xb2\x90\xb3\x90\xb1\x90\xb0\x68\xa0\x00\x00\x90\xfa\x90\xfb\x90\xfc\x68\x9f\x91\x78\x91\x7b\x91\x7a\x91\x79\x00\x00\x00\x00\x91\xc3\x00\x00", /* 9f80 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x63\xbd\x00\x00\x00\x00\x66\x51\x8e\x6e\x8f\x65\x00\x00\x68\x53\x8f\xfc\x00\x00\x00\x00\x91\xc5\x00\x00\x00\x00\x00\x00\x63\xbe\x00\x00\x00\x00\x00\x00\x89\x63\x00\x00\x8f\xfd\x00\x00\x91\x91\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* a000 */ NULL, /* a080 */ NULL, /* a100 */ NULL, /* a180 */ NULL, /* a200 */ NULL, /* a280 */ NULL, /* a300 */ NULL, /* a380 */ NULL, /* a400 */ NULL, /* a480 */ NULL, /* a500 */ NULL, /* a580 */ NULL, /* a600 */ NULL, /* a680 */ NULL, /* a700 */ NULL, /* a780 */ NULL, /* a800 */ NULL, /* a880 */ NULL, /* a900 */ NULL, /* a980 */ NULL, /* aa00 */ NULL, /* aa80 */ NULL, /* ab00 */ NULL, /* ab80 */ NULL, /* ac00 */ NULL, /* ac80 */ NULL, /* ad00 */ NULL, /* ad80 */ NULL, /* ae00 */ NULL, /* ae80 */ NULL, /* af00 */ NULL, /* af80 */ NULL, /* b000 */ NULL, /* b080 */ NULL, /* b100 */ NULL, /* b180 */ NULL, /* b200 */ NULL, /* b280 */ NULL, /* b300 */ NULL, /* b380 */ NULL, /* b400 */ NULL, /* b480 */ NULL, /* b500 */ NULL, /* b580 */ NULL, /* b600 */ NULL, /* b680 */ NULL, /* b700 */ NULL, /* b780 */ NULL, /* b800 */ NULL, /* b880 */ NULL, /* b900 */ NULL, /* b980 */ NULL, /* ba00 */ NULL, /* ba80 */ NULL, /* bb00 */ NULL, /* bb80 */ NULL, /* bc00 */ NULL, /* bc80 */ NULL, /* bd00 */ NULL, /* bd80 */ NULL, /* be00 */ NULL, /* be80 */ NULL, /* bf00 */ NULL, /* bf80 */ NULL, /* c000 */ NULL, /* c080 */ NULL, /* c100 */ NULL, /* c180 */ NULL, /* c200 */ NULL, /* c280 */ NULL, /* c300 */ NULL, /* c380 */ NULL, /* c400 */ NULL, /* c480 */ NULL, /* c500 */ NULL, /* c580 */ NULL, /* c600 */ NULL, /* c680 */ NULL, /* c700 */ NULL, /* c780 */ NULL, /* c800 */ NULL, /* c880 */ NULL, /* c900 */ NULL, /* c980 */ NULL, /* ca00 */ NULL, /* ca80 */ NULL, /* cb00 */ NULL, /* cb80 */ NULL, /* cc00 */ NULL, /* cc80 */ NULL, /* cd00 */ NULL, /* cd80 */ NULL, /* ce00 */ NULL, /* ce80 */ NULL, /* cf00 */ NULL, /* cf80 */ NULL, /* d000 */ NULL, /* d080 */ NULL, /* d100 */ NULL, /* d180 */ NULL, /* d200 */ NULL, /* d280 */ NULL, /* d300 */ NULL, /* d380 */ NULL, /* d400 */ NULL, /* d480 */ NULL, /* d500 */ NULL, /* d580 */ NULL, /* d600 */ NULL, /* d680 */ NULL, /* d700 */ NULL, /* d780 */ NULL, /* d800 */ NULL, /* d880 */ NULL, /* d900 */ NULL, /* d980 */ NULL, /* da00 */ NULL, /* da80 */ NULL, /* db00 */ NULL, /* db80 */ NULL, /* dc00 */ NULL, /* dc80 */ NULL, /* dd00 */ NULL, /* dd80 */ NULL, /* de00 */ NULL, /* de80 */ NULL, /* df00 */ NULL, /* df80 */ NULL, /* e000 */ "\xc2\x41\xc2\x42\xc2\x43\xc2\x44\xc2\x45\xc2\x46\xc2\x47\xc2\x48\xc2\x49\xc2\x4a\xc2\x4b\xc2\x4c\xc2\x4d\xc2\x4e\xc2\x4f\xc2\x50\xc2\x51\xc2\x52\xc2\x53\xc2\x54\xc2\x55\xc2\x56\xc2\x57\xc2\x58\xc2\x59\xc2\x5a\xc2\x5b\xc2\x5c\xc2\x5d\xc2\x5e\xc2\x5f\xc2\x60\xc2\x61\xc2\x62\xc2\x63\xc2\x64\xc2\x65\xc2\x66\xc2\x67\xc2\x68\xc2\x69\xc2\x6a\xc2\x6b\xc2\x6c\xc2\x6d\xc2\x6e\xc2\x6f\xc2\x70\xc2\x71\xc2\x72\xc2\x73\xc2\x74\xc2\x75\xc2\x76\xc2\x77\xc2\x78\xc2\x79\xc2\x7a\xc2\x7b\xc2\x7c\xc2\x7d\xc2\x7e\xc2\x7f\xc2\x81\xc2\x82\xc2\x83\xc2\x84\xc2\x85\xc2\x86\xc2\x87\xc2\x88\xc2\x89\xc2\x8a\xc2\x8b\xc2\x8c\xc2\x8d\xc2\x8e\xc2\x8f\xc2\x90\xc2\x91\xc2\x92\xc2\x93\xc2\x94\xc2\x95\xc2\x96\xc2\x97\xc2\x98\xc2\x99\xc2\x9a\xc2\x9b\xc2\x9c\xc2\x9d\xc2\x9e\xc2\x9f\xc2\xa0\xc2\xa1\xc2\xa2\xc2\xa3\xc2\xa4\xc2\xa5\xc2\xa6\xc2\xa7\xc2\xa8\xc2\xa9\xc2\xaa\xc2\xab\xc2\xac\xc2\xad\xc2\xae\xc2\xaf\xc2\xb0\xc2\xb1\xc2\xb2\xc2\xb3\xc2\xb4\xc2\xb5\xc2\xb6\xc2\xb7\xc2\xb8\xc2\xb9\xc2\xba\xc2\xbb\xc2\xbc\xc2\xbd\xc2\xbe\xc2\xbf\xc2\xc0\xc2\xc1", /* e080 */ "\xc2\xc2\xc2\xc3\xc2\xc4\xc2\xc5\xc2\xc6\xc2\xc7\xc2\xc8\xc2\xc9\xc2\xca\xc2\xcb\xc2\xcc\xc2\xcd\xc2\xce\xc2\xcf\xc2\xd0\xc2\xd1\xc2\xd2\xc2\xd3\xc2\xd4\xc2\xd5\xc2\xd6\xc2\xd7\xc2\xd8\xc2\xd9\xc2\xda\xc2\xdb\xc2\xdc\xc2\xdd\xc2\xde\xc2\xdf\xc2\xe0\xc2\xe1\xc2\xe2\xc2\xe3\xc2\xe4\xc2\xe5\xc2\xe6\xc2\xe7\xc2\xe8\xc2\xe9\xc2\xea\xc2\xeb\xc2\xec\xc2\xed\xc2\xee\xc2\xef\xc2\xf0\xc2\xf1\xc2\xf2\xc2\xf3\xc2\xf4\xc2\xf5\xc2\xf6\xc2\xf7\xc2\xf8\xc2\xf9\xc2\xfa\xc2\xfb\xc2\xfc\xc2\xfd\xc3\x41\xc3\x42\xc3\x43\xc3\x44\xc3\x45\xc3\x46\xc3\x47\xc3\x48\xc3\x49\xc3\x4a\xc3\x4b\xc3\x4c\xc3\x4d\xc3\x4e\xc3\x4f\xc3\x50\xc3\x51\xc3\x52\xc3\x53\xc3\x54\xc3\x55\xc3\x56\xc3\x57\xc3\x58\xc3\x59\xc3\x5a\xc3\x5b\xc3\x5c\xc3\x5d\xc3\x5e\xc3\x5f\xc3\x60\xc3\x61\xc3\x62\xc3\x63\xc3\x64\xc3\x65\xc3\x66\xc3\x67\xc3\x68\xc3\x69\xc3\x6a\xc3\x6b\xc3\x6c\xc3\x6d\xc3\x6e\xc3\x6f\xc3\x70\xc3\x71\xc3\x72\xc3\x73\xc3\x74\xc3\x75\xc3\x76\xc3\x77\xc3\x78\xc3\x79\xc3\x7a\xc3\x7b\xc3\x7c\xc3\x7d\xc3\x7e\xc3\x7f\xc3\x81\xc3\x82\xc3\x83\xc3\x84\xc3\x85", /* e100 */ "\xc3\x86\xc3\x87\xc3\x88\xc3\x89\xc3\x8a\xc3\x8b\xc3\x8c\xc3\x8d\xc3\x8e\xc3\x8f\xc3\x90\xc3\x91\xc3\x92\xc3\x93\xc3\x94\xc3\x95\xc3\x96\xc3\x97\xc3\x98\xc3\x99\xc3\x9a\xc3\x9b\xc3\x9c\xc3\x9d\xc3\x9e\xc3\x9f\xc3\xa0\xc3\xa1\xc3\xa2\xc3\xa3\xc3\xa4\xc3\xa5\xc3\xa6\xc3\xa7\xc3\xa8\xc3\xa9\xc3\xaa\xc3\xab\xc3\xac\xc3\xad\xc3\xae\xc3\xaf\xc3\xb0\xc3\xb1\xc3\xb2\xc3\xb3\xc3\xb4\xc3\xb5\xc3\xb6\xc3\xb7\xc3\xb8\xc3\xb9\xc3\xba\xc3\xbb\xc3\xbc\xc3\xbd\xc3\xbe\xc3\xbf\xc3\xc0\xc3\xc1\xc3\xc2\xc3\xc3\xc3\xc4\xc3\xc5\xc3\xc6\xc3\xc7\xc3\xc8\xc3\xc9\xc3\xca\xc3\xcb\xc3\xcc\xc3\xcd\xc3\xce\xc3\xcf\xc3\xd0\xc3\xd1\xc3\xd2\xc3\xd3\xc3\xd4\xc3\xd5\xc3\xd6\xc3\xd7\xc3\xd8\xc3\xd9\xc3\xda\xc3\xdb\xc3\xdc\xc3\xdd\xc3\xde\xc3\xdf\xc3\xe0\xc3\xe1\xc3\xe2\xc3\xe3\xc3\xe4\xc3\xe5\xc3\xe6\xc3\xe7\xc3\xe8\xc3\xe9\xc3\xea\xc3\xeb\xc3\xec\xc3\xed\xc3\xee\xc3\xef\xc3\xf0\xc3\xf1\xc3\xf2\xc3\xf3\xc3\xf4\xc3\xf5\xc3\xf6\xc3\xf7\xc3\xf8\xc3\xf9\xc3\xfa\xc3\xfb\xc3\xfc\xc3\xfd\xc4\x41\xc4\x42\xc4\x43\xc4\x44\xc4\x45\xc4\x46\xc4\x47\xc4\x48", /* e180 */ "\xc4\x49\xc4\x4a\xc4\x4b\xc4\x4c\xc4\x4d\xc4\x4e\xc4\x4f\xc4\x50\xc4\x51\xc4\x52\xc4\x53\xc4\x54\xc4\x55\xc4\x56\xc4\x57\xc4\x58\xc4\x59\xc4\x5a\xc4\x5b\xc4\x5c\xc4\x5d\xc4\x5e\xc4\x5f\xc4\x60\xc4\x61\xc4\x62\xc4\x63\xc4\x64\xc4\x65\xc4\x66\xc4\x67\xc4\x68\xc4\x69\xc4\x6a\xc4\x6b\xc4\x6c\xc4\x6d\xc4\x6e\xc4\x6f\xc4\x70\xc4\x71\xc4\x72\xc4\x73\xc4\x74\xc4\x75\xc4\x76\xc4\x77\xc4\x78\xc4\x79\xc4\x7a\xc4\x7b\xc4\x7c\xc4\x7d\xc4\x7e\xc4\x7f\xc4\x81\xc4\x82\xc4\x83\xc4\x84\xc4\x85\xc4\x86\xc4\x87\xc4\x88\xc4\x89\xc4\x8a\xc4\x8b\xc4\x8c\xc4\x8d\xc4\x8e\xc4\x8f\xc4\x90\xc4\x91\xc4\x92\xc4\x93\xc4\x94\xc4\x95\xc4\x96\xc4\x97\xc4\x98\xc4\x99\xc4\x9a\xc4\x9b\xc4\x9c\xc4\x9d\xc4\x9e\xc4\x9f\xc4\xa0\xc4\xa1\xc4\xa2\xc4\xa3\xc4\xa4\xc4\xa5\xc4\xa6\xc4\xa7\xc4\xa8\xc4\xa9\xc4\xaa\xc4\xab\xc4\xac\xc4\xad\xc4\xae\xc4\xaf\xc4\xb0\xc4\xb1\xc4\xb2\xc4\xb3\xc4\xb4\xc4\xb5\xc4\xb6\xc4\xb7\xc4\xb8\xc4\xb9\xc4\xba\xc4\xbb\xc4\xbc\xc4\xbd\xc4\xbe\xc4\xbf\xc4\xc0\xc4\xc1\xc4\xc2\xc4\xc3\xc4\xc4\xc4\xc5\xc4\xc6\xc4\xc7\xc4\xc8\xc4\xc9", /* e200 */ "\xc4\xca\xc4\xcb\xc4\xcc\xc4\xcd\xc4\xce\xc4\xcf\xc4\xd0\xc4\xd1\xc4\xd2\xc4\xd3\xc4\xd4\xc4\xd5\xc4\xd6\xc4\xd7\xc4\xd8\xc4\xd9\xc4\xda\xc4\xdb\xc4\xdc\xc4\xdd\xc4\xde\xc4\xdf\xc4\xe0\xc4\xe1\xc4\xe2\xc4\xe3\xc4\xe4\xc4\xe5\xc4\xe6\xc4\xe7\xc4\xe8\xc4\xe9\xc4\xea\xc4\xeb\xc4\xec\xc4\xed\xc4\xee\xc4\xef\xc4\xf0\xc4\xf1\xc4\xf2\xc4\xf3\xc4\xf4\xc4\xf5\xc4\xf6\xc4\xf7\xc4\xf8\xc4\xf9\xc4\xfa\xc4\xfb\xc4\xfc\xc4\xfd\xc5\x41\xc5\x42\xc5\x43\xc5\x44\xc5\x45\xc5\x46\xc5\x47\xc5\x48\xc5\x49\xc5\x4a\xc5\x4b\xc5\x4c\xc5\x4d\xc5\x4e\xc5\x4f\xc5\x50\xc5\x51\xc5\x52\xc5\x53\xc5\x54\xc5\x55\xc5\x56\xc5\x57\xc5\x58\xc5\x59\xc5\x5a\xc5\x5b\xc5\x5c\xc5\x5d\xc5\x5e\xc5\x5f\xc5\x60\xc5\x61\xc5\x62\xc5\x63\xc5\x64\xc5\x65\xc5\x66\xc5\x67\xc5\x68\xc5\x69\xc5\x6a\xc5\x6b\xc5\x6c\xc5\x6d\xc5\x6e\xc5\x6f\xc5\x70\xc5\x71\xc5\x72\xc5\x73\xc5\x74\xc5\x75\xc5\x76\xc5\x77\xc5\x78\xc5\x79\xc5\x7a\xc5\x7b\xc5\x7c\xc5\x7d\xc5\x7e\xc5\x7f\xc5\x81\xc5\x82\xc5\x83\xc5\x84\xc5\x85\xc5\x86\xc5\x87\xc5\x88\xc5\x89\xc5\x8a\xc5\x8b\xc5\x8c\xc5\x8d", /* e280 */ "\xc5\x8e\xc5\x8f\xc5\x90\xc5\x91\xc5\x92\xc5\x93\xc5\x94\xc5\x95\xc5\x96\xc5\x97\xc5\x98\xc5\x99\xc5\x9a\xc5\x9b\xc5\x9c\xc5\x9d\xc5\x9e\xc5\x9f\xc5\xa0\xc5\xa1\xc5\xa2\xc5\xa3\xc5\xa4\xc5\xa5\xc5\xa6\xc5\xa7\xc5\xa8\xc5\xa9\xc5\xaa\xc5\xab\xc5\xac\xc5\xad\xc5\xae\xc5\xaf\xc5\xb0\xc5\xb1\xc5\xb2\xc5\xb3\xc5\xb4\xc5\xb5\xc5\xb6\xc5\xb7\xc5\xb8\xc5\xb9\xc5\xba\xc5\xbb\xc5\xbc\xc5\xbd\xc5\xbe\xc5\xbf\xc5\xc0\xc5\xc1\xc5\xc2\xc5\xc3\xc5\xc4\xc5\xc5\xc5\xc6\xc5\xc7\xc5\xc8\xc5\xc9\xc5\xca\xc5\xcb\xc5\xcc\xc5\xcd\xc5\xce\xc5\xcf\xc5\xd0\xc5\xd1\xc5\xd2\xc5\xd3\xc5\xd4\xc5\xd5\xc5\xd6\xc5\xd7\xc5\xd8\xc5\xd9\xc5\xda\xc5\xdb\xc5\xdc\xc5\xdd\xc5\xde\xc5\xdf\xc5\xe0\xc5\xe1\xc5\xe2\xc5\xe3\xc5\xe4\xc5\xe5\xc5\xe6\xc5\xe7\xc5\xe8\xc5\xe9\xc5\xea\xc5\xeb\xc5\xec\xc5\xed\xc5\xee\xc5\xef\xc5\xf0\xc5\xf1\xc5\xf2\xc5\xf3\xc5\xf4\xc5\xf5\xc5\xf6\xc5\xf7\xc5\xf8\xc5\xf9\xc5\xfa\xc5\xfb\xc5\xfc\xc5\xfd\xc6\x41\xc6\x42\xc6\x43\xc6\x44\xc6\x45\xc6\x46\xc6\x47\xc6\x48\xc6\x49\xc6\x4a\xc6\x4b\xc6\x4c\xc6\x4d\xc6\x4e\xc6\x4f\xc6\x50", /* e300 */ "\xc6\x51\xc6\x52\xc6\x53\xc6\x54\xc6\x55\xc6\x56\xc6\x57\xc6\x58\xc6\x59\xc6\x5a\xc6\x5b\xc6\x5c\xc6\x5d\xc6\x5e\xc6\x5f\xc6\x60\xc6\x61\xc6\x62\xc6\x63\xc6\x64\xc6\x65\xc6\x66\xc6\x67\xc6\x68\xc6\x69\xc6\x6a\xc6\x6b\xc6\x6c\xc6\x6d\xc6\x6e\xc6\x6f\xc6\x70\xc6\x71\xc6\x72\xc6\x73\xc6\x74\xc6\x75\xc6\x76\xc6\x77\xc6\x78\xc6\x79\xc6\x7a\xc6\x7b\xc6\x7c\xc6\x7d\xc6\x7e\xc6\x7f\xc6\x81\xc6\x82\xc6\x83\xc6\x84\xc6\x85\xc6\x86\xc6\x87\xc6\x88\xc6\x89\xc6\x8a\xc6\x8b\xc6\x8c\xc6\x8d\xc6\x8e\xc6\x8f\xc6\x90\xc6\x91\xc6\x92\xc6\x93\xc6\x94\xc6\x95\xc6\x96\xc6\x97\xc6\x98\xc6\x99\xc6\x9a\xc6\x9b\xc6\x9c\xc6\x9d\xc6\x9e\xc6\x9f\xc6\xa0\xc6\xa1\xc6\xa2\xc6\xa3\xc6\xa4\xc6\xa5\xc6\xa6\xc6\xa7\xc6\xa8\xc6\xa9\xc6\xaa\xc6\xab\xc6\xac\xc6\xad\xc6\xae\xc6\xaf\xc6\xb0\xc6\xb1\xc6\xb2\xc6\xb3\xc6\xb4\xc6\xb5\xc6\xb6\xc6\xb7\xc6\xb8\xc6\xb9\xc6\xba\xc6\xbb\xc6\xbc\xc6\xbd\xc6\xbe\xc6\xbf\xc6\xc0\xc6\xc1\xc6\xc2\xc6\xc3\xc6\xc4\xc6\xc5\xc6\xc6\xc6\xc7\xc6\xc8\xc6\xc9\xc6\xca\xc6\xcb\xc6\xcc\xc6\xcd\xc6\xce\xc6\xcf\xc6\xd0\xc6\xd1", /* e380 */ "\xc6\xd2\xc6\xd3\xc6\xd4\xc6\xd5\xc6\xd6\xc6\xd7\xc6\xd8\xc6\xd9\xc6\xda\xc6\xdb\xc6\xdc\xc6\xdd\xc6\xde\xc6\xdf\xc6\xe0\xc6\xe1\xc6\xe2\xc6\xe3\xc6\xe4\xc6\xe5\xc6\xe6\xc6\xe7\xc6\xe8\xc6\xe9\xc6\xea\xc6\xeb\xc6\xec\xc6\xed\xc6\xee\xc6\xef\xc6\xf0\xc6\xf1\xc6\xf2\xc6\xf3\xc6\xf4\xc6\xf5\xc6\xf6\xc6\xf7\xc6\xf8\xc6\xf9\xc6\xfa\xc6\xfb\xc6\xfc\xc6\xfd\xc7\x41\xc7\x42\xc7\x43\xc7\x44\xc7\x45\xc7\x46\xc7\x47\xc7\x48\xc7\x49\xc7\x4a\xc7\x4b\xc7\x4c\xc7\x4d\xc7\x4e\xc7\x4f\xc7\x50\xc7\x51\xc7\x52\xc7\x53\xc7\x54\xc7\x55\xc7\x56\xc7\x57\xc7\x58\xc7\x59\xc7\x5a\xc7\x5b\xc7\x5c\xc7\x5d\xc7\x5e\xc7\x5f\xc7\x60\xc7\x61\xc7\x62\xc7\x63\xc7\x64\xc7\x65\xc7\x66\xc7\x67\xc7\x68\xc7\x69\xc7\x6a\xc7\x6b\xc7\x6c\xc7\x6d\xc7\x6e\xc7\x6f\xc7\x70\xc7\x71\xc7\x72\xc7\x73\xc7\x74\xc7\x75\xc7\x76\xc7\x77\xc7\x78\xc7\x79\xc7\x7a\xc7\x7b\xc7\x7c\xc7\x7d\xc7\x7e\xc7\x7f\xc7\x81\xc7\x82\xc7\x83\xc7\x84\xc7\x85\xc7\x86\xc7\x87\xc7\x88\xc7\x89\xc7\x8a\xc7\x8b\xc7\x8c\xc7\x8d\xc7\x8e\xc7\x8f\xc7\x90\xc7\x91\xc7\x92\xc7\x93\xc7\x94\xc7\x95", /* e400 */ "\xc7\x96\xc7\x97\xc7\x98\xc7\x99\xc7\x9a\xc7\x9b\xc7\x9c\xc7\x9d\xc7\x9e\xc7\x9f\xc7\xa0\xc7\xa1\xc7\xa2\xc7\xa3\xc7\xa4\xc7\xa5\xc7\xa6\xc7\xa7\xc7\xa8\xc7\xa9\xc7\xaa\xc7\xab\xc7\xac\xc7\xad\xc7\xae\xc7\xaf\xc7\xb0\xc7\xb1\xc7\xb2\xc7\xb3\xc7\xb4\xc7\xb5\xc7\xb6\xc7\xb7\xc7\xb8\xc7\xb9\xc7\xba\xc7\xbb\xc7\xbc\xc7\xbd\xc7\xbe\xc7\xbf\xc7\xc0\xc7\xc1\xc7\xc2\xc7\xc3\xc7\xc4\xc7\xc5\xc7\xc6\xc7\xc7\xc7\xc8\xc7\xc9\xc7\xca\xc7\xcb\xc7\xcc\xc7\xcd\xc7\xce\xc7\xcf\xc7\xd0\xc7\xd1\xc7\xd2\xc7\xd3\xc7\xd4\xc7\xd5\xc7\xd6\xc7\xd7\xc7\xd8\xc7\xd9\xc7\xda\xc7\xdb\xc7\xdc\xc7\xdd\xc7\xde\xc7\xdf\xc7\xe0\xc7\xe1\xc7\xe2\xc7\xe3\xc7\xe4\xc7\xe5\xc7\xe6\xc7\xe7\xc7\xe8\xc7\xe9\xc7\xea\xc7\xeb\xc7\xec\xc7\xed\xc7\xee\xc7\xef\xc7\xf0\xc7\xf1\xc7\xf2\xc7\xf3\xc7\xf4\xc7\xf5\xc7\xf6\xc7\xf7\xc7\xf8\xc7\xf9\xc7\xfa\xc7\xfb\xc7\xfc\xc7\xfd\xc8\x41\xc8\x42\xc8\x43\xc8\x44\xc8\x45\xc8\x46\xc8\x47\xc8\x48\xc8\x49\xc8\x4a\xc8\x4b\xc8\x4c\xc8\x4d\xc8\x4e\xc8\x4f\xc8\x50\xc8\x51\xc8\x52\xc8\x53\xc8\x54\xc8\x55\xc8\x56\xc8\x57\xc8\x58", /* e480 */ "\xc8\x59\xc8\x5a\xc8\x5b\xc8\x5c\xc8\x5d\xc8\x5e\xc8\x5f\xc8\x60\xc8\x61\xc8\x62\xc8\x63\xc8\x64\xc8\x65\xc8\x66\xc8\x67\xc8\x68\xc8\x69\xc8\x6a\xc8\x6b\xc8\x6c\xc8\x6d\xc8\x6e\xc8\x6f\xc8\x70\xc8\x71\xc8\x72\xc8\x73\xc8\x74\xc8\x75\xc8\x76\xc8\x77\xc8\x78\xc8\x79\xc8\x7a\xc8\x7b\xc8\x7c\xc8\x7d\xc8\x7e\xc8\x7f\xc8\x81\xc8\x82\xc8\x83\xc8\x84\xc8\x85\xc8\x86\xc8\x87\xc8\x88\xc8\x89\xc8\x8a\xc8\x8b\xc8\x8c\xc8\x8d\xc8\x8e\xc8\x8f\xc8\x90\xc8\x91\xc8\x92\xc8\x93\xc8\x94\xc8\x95\xc8\x96\xc8\x97\xc8\x98\xc8\x99\xc8\x9a\xc8\x9b\xc8\x9c\xc8\x9d\xc8\x9e\xc8\x9f\xc8\xa0\xc8\xa1\xc8\xa2\xc8\xa3\xc8\xa4\xc8\xa5\xc8\xa6\xc8\xa7\xc8\xa8\xc8\xa9\xc8\xaa\xc8\xab\xc8\xac\xc8\xad\xc8\xae\xc8\xaf\xc8\xb0\xc8\xb1\xc8\xb2\xc8\xb3\xc8\xb4\xc8\xb5\xc8\xb6\xc8\xb7\xc8\xb8\xc8\xb9\xc8\xba\xc8\xbb\xc8\xbc\xc8\xbd\xc8\xbe\xc8\xbf\xc8\xc0\xc8\xc1\xc8\xc2\xc8\xc3\xc8\xc4\xc8\xc5\xc8\xc6\xc8\xc7\xc8\xc8\xc8\xc9\xc8\xca\xc8\xcb\xc8\xcc\xc8\xcd\xc8\xce\xc8\xcf\xc8\xd0\xc8\xd1\xc8\xd2\xc8\xd3\xc8\xd4\xc8\xd5\xc8\xd6\xc8\xd7\xc8\xd8\xc8\xd9", /* e500 */ "\xc8\xda\xc8\xdb\xc8\xdc\xc8\xdd\xc8\xde\xc8\xdf\xc8\xe0\xc8\xe1\xc8\xe2\xc8\xe3\xc8\xe4\xc8\xe5\xc8\xe6\xc8\xe7\xc8\xe8\xc8\xe9\xc8\xea\xc8\xeb\xc8\xec\xc8\xed\xc8\xee\xc8\xef\xc8\xf0\xc8\xf1\xc8\xf2\xc8\xf3\xc8\xf4\xc8\xf5\xc8\xf6\xc8\xf7\xc8\xf8\xc8\xf9\xc8\xfa\xc8\xfb\xc8\xfc\xc8\xfd\xc9\x41\xc9\x42\xc9\x43\xc9\x44\xc9\x45\xc9\x46\xc9\x47\xc9\x48\xc9\x49\xc9\x4a\xc9\x4b\xc9\x4c\xc9\x4d\xc9\x4e\xc9\x4f\xc9\x50\xc9\x51\xc9\x52\xc9\x53\xc9\x54\xc9\x55\xc9\x56\xc9\x57\xc9\x58\xc9\x59\xc9\x5a\xc9\x5b\xc9\x5c\xc9\x5d\xc9\x5e\xc9\x5f\xc9\x60\xc9\x61\xc9\x62\xc9\x63\xc9\x64\xc9\x65\xc9\x66\xc9\x67\xc9\x68\xc9\x69\xc9\x6a\xc9\x6b\xc9\x6c\xc9\x6d\xc9\x6e\xc9\x6f\xc9\x70\xc9\x71\xc9\x72\xc9\x73\xc9\x74\xc9\x75\xc9\x76\xc9\x77\xc9\x78\xc9\x79\xc9\x7a\xc9\x7b\xc9\x7c\xc9\x7d\xc9\x7e\xc9\x7f\xc9\x81\xc9\x82\xc9\x83\xc9\x84\xc9\x85\xc9\x86\xc9\x87\xc9\x88\xc9\x89\xc9\x8a\xc9\x8b\xc9\x8c\xc9\x8d\xc9\x8e\xc9\x8f\xc9\x90\xc9\x91\xc9\x92\xc9\x93\xc9\x94\xc9\x95\xc9\x96\xc9\x97\xc9\x98\xc9\x99\xc9\x9a\xc9\x9b\xc9\x9c\xc9\x9d", /* e580 */ "\xc9\x9e\xc9\x9f\xc9\xa0\xc9\xa1\xc9\xa2\xc9\xa3\xc9\xa4\xc9\xa5\xc9\xa6\xc9\xa7\xc9\xa8\xc9\xa9\xc9\xaa\xc9\xab\xc9\xac\xc9\xad\xc9\xae\xc9\xaf\xc9\xb0\xc9\xb1\xc9\xb2\xc9\xb3\xc9\xb4\xc9\xb5\xc9\xb6\xc9\xb7\xc9\xb8\xc9\xb9\xc9\xba\xc9\xbb\xc9\xbc\xc9\xbd\xc9\xbe\xc9\xbf\xc9\xc0\xc9\xc1\xc9\xc2\xc9\xc3\xc9\xc4\xc9\xc5\xc9\xc6\xc9\xc7\xc9\xc8\xc9\xc9\xc9\xca\xc9\xcb\xc9\xcc\xc9\xcd\xc9\xce\xc9\xcf\xc9\xd0\xc9\xd1\xc9\xd2\xc9\xd3\xc9\xd4\xc9\xd5\xc9\xd6\xc9\xd7\xc9\xd8\xc9\xd9\xc9\xda\xc9\xdb\xc9\xdc\xc9\xdd\xc9\xde\xc9\xdf\xc9\xe0\xc9\xe1\xc9\xe2\xc9\xe3\xc9\xe4\xc9\xe5\xc9\xe6\xc9\xe7\xc9\xe8\xc9\xe9\xc9\xea\xc9\xeb\xc9\xec\xc9\xed\xc9\xee\xc9\xef\xc9\xf0\xc9\xf1\xc9\xf2\xc9\xf3\xc9\xf4\xc9\xf5\xc9\xf6\xc9\xf7\xc9\xf8\xc9\xf9\xc9\xfa\xc9\xfb\xc9\xfc\xc9\xfd\xca\x41\xca\x42\xca\x43\xca\x44\xca\x45\xca\x46\xca\x47\xca\x48\xca\x49\xca\x4a\xca\x4b\xca\x4c\xca\x4d\xca\x4e\xca\x4f\xca\x50\xca\x51\xca\x52\xca\x53\xca\x54\xca\x55\xca\x56\xca\x57\xca\x58\xca\x59\xca\x5a\xca\x5b\xca\x5c\xca\x5d\xca\x5e\xca\x5f\xca\x60", /* e600 */ "\xca\x61\xca\x62\xca\x63\xca\x64\xca\x65\xca\x66\xca\x67\xca\x68\xca\x69\xca\x6a\xca\x6b\xca\x6c\xca\x6d\xca\x6e\xca\x6f\xca\x70\xca\x71\xca\x72\xca\x73\xca\x74\xca\x75\xca\x76\xca\x77\xca\x78\xca\x79\xca\x7a\xca\x7b\xca\x7c\xca\x7d\xca\x7e\xca\x7f\xca\x81\xca\x82\xca\x83\xca\x84\xca\x85\xca\x86\xca\x87\xca\x88\xca\x89\xca\x8a\xca\x8b\xca\x8c\xca\x8d\xca\x8e\xca\x8f\xca\x90\xca\x91\xca\x92\xca\x93\xca\x94\xca\x95\xca\x96\xca\x97\xca\x98\xca\x99\xca\x9a\xca\x9b\xca\x9c\xca\x9d\xca\x9e\xca\x9f\xca\xa0\xca\xa1\xca\xa2\xca\xa3\xca\xa4\xca\xa5\xca\xa6\xca\xa7\xca\xa8\xca\xa9\xca\xaa\xca\xab\xca\xac\xca\xad\xca\xae\xca\xaf\xca\xb0\xca\xb1\xca\xb2\xca\xb3\xca\xb4\xca\xb5\xca\xb6\xca\xb7\xca\xb8\xca\xb9\xca\xba\xca\xbb\xca\xbc\xca\xbd\xca\xbe\xca\xbf\xca\xc0\xca\xc1\xca\xc2\xca\xc3\xca\xc4\xca\xc5\xca\xc6\xca\xc7\xca\xc8\xca\xc9\xca\xca\xca\xcb\xca\xcc\xca\xcd\xca\xce\xca\xcf\xca\xd0\xca\xd1\xca\xd2\xca\xd3\xca\xd4\xca\xd5\xca\xd6\xca\xd7\xca\xd8\xca\xd9\xca\xda\xca\xdb\xca\xdc\xca\xdd\xca\xde\xca\xdf\xca\xe0\xca\xe1", /* e680 */ "\xca\xe2\xca\xe3\xca\xe4\xca\xe5\xca\xe6\xca\xe7\xca\xe8\xca\xe9\xca\xea\xca\xeb\xca\xec\xca\xed\xca\xee\xca\xef\xca\xf0\xca\xf1\xca\xf2\xca\xf3\xca\xf4\xca\xf5\xca\xf6\xca\xf7\xca\xf8\xca\xf9\xca\xfa\xca\xfb\xca\xfc\xca\xfd\xcb\x41\xcb\x42\xcb\x43\xcb\x44\xcb\x45\xcb\x46\xcb\x47\xcb\x48\xcb\x49\xcb\x4a\xcb\x4b\xcb\x4c\xcb\x4d\xcb\x4e\xcb\x4f\xcb\x50\xcb\x51\xcb\x52\xcb\x53\xcb\x54\xcb\x55\xcb\x56\xcb\x57\xcb\x58\xcb\x59\xcb\x5a\xcb\x5b\xcb\x5c\xcb\x5d\xcb\x5e\xcb\x5f\xcb\x60\xcb\x61\xcb\x62\xcb\x63\xcb\x64\xcb\x65\xcb\x66\xcb\x67\xcb\x68\xcb\x69\xcb\x6a\xcb\x6b\xcb\x6c\xcb\x6d\xcb\x6e\xcb\x6f\xcb\x70\xcb\x71\xcb\x72\xcb\x73\xcb\x74\xcb\x75\xcb\x76\xcb\x77\xcb\x78\xcb\x79\xcb\x7a\xcb\x7b\xcb\x7c\xcb\x7d\xcb\x7e\xcb\x7f\xcb\x81\xcb\x82\xcb\x83\xcb\x84\xcb\x85\xcb\x86\xcb\x87\xcb\x88\xcb\x89\xcb\x8a\xcb\x8b\xcb\x8c\xcb\x8d\xcb\x8e\xcb\x8f\xcb\x90\xcb\x91\xcb\x92\xcb\x93\xcb\x94\xcb\x95\xcb\x96\xcb\x97\xcb\x98\xcb\x99\xcb\x9a\xcb\x9b\xcb\x9c\xcb\x9d\xcb\x9e\xcb\x9f\xcb\xa0\xcb\xa1\xcb\xa2\xcb\xa3\xcb\xa4\xcb\xa5", /* e700 */ "\xcb\xa6\xcb\xa7\xcb\xa8\xcb\xa9\xcb\xaa\xcb\xab\xcb\xac\xcb\xad\xcb\xae\xcb\xaf\xcb\xb0\xcb\xb1\xcb\xb2\xcb\xb3\xcb\xb4\xcb\xb5\xcb\xb6\xcb\xb7\xcb\xb8\xcb\xb9\xcb\xba\xcb\xbb\xcb\xbc\xcb\xbd\xcb\xbe\xcb\xbf\xcb\xc0\xcb\xc1\xcb\xc2\xcb\xc3\xcb\xc4\xcb\xc5\xcb\xc6\xcb\xc7\xcb\xc8\xcb\xc9\xcb\xca\xcb\xcb\xcb\xcc\xcb\xcd\xcb\xce\xcb\xcf\xcb\xd0\xcb\xd1\xcb\xd2\xcb\xd3\xcb\xd4\xcb\xd5\xcb\xd6\xcb\xd7\xcb\xd8\xcb\xd9\xcb\xda\xcb\xdb\xcb\xdc\xcb\xdd\xcb\xde\xcb\xdf\xcb\xe0\xcb\xe1\xcb\xe2\xcb\xe3\xcb\xe4\xcb\xe5\xcb\xe6\xcb\xe7\xcb\xe8\xcb\xe9\xcb\xea\xcb\xeb\xcb\xec\xcb\xed\xcb\xee\xcb\xef\xcb\xf0\xcb\xf1\xcb\xf2\xcb\xf3\xcb\xf4\xcb\xf5\xcb\xf6\xcb\xf7\xcb\xf8\xcb\xf9\xcb\xfa\xcb\xfb\xcb\xfc\xcb\xfd\xcc\x41\xcc\x42\xcc\x43\xcc\x44\xcc\x45\xcc\x46\xcc\x47\xcc\x48\xcc\x49\xcc\x4a\xcc\x4b\xcc\x4c\xcc\x4d\xcc\x4e\xcc\x4f\xcc\x50\xcc\x51\xcc\x52\xcc\x53\xcc\x54\xcc\x55\xcc\x56\xcc\x57\xcc\x58\xcc\x59\xcc\x5a\xcc\x5b\xcc\x5c\xcc\x5d\xcc\x5e\xcc\x5f\xcc\x60\xcc\x61\xcc\x62\xcc\x63\xcc\x64\xcc\x65\xcc\x66\xcc\x67\xcc\x68", /* e780 */ "\xcc\x69\xcc\x6a\xcc\x6b\xcc\x6c\xcc\x6d\xcc\x6e\xcc\x6f\xcc\x70\xcc\x71\xcc\x72\xcc\x73\xcc\x74\xcc\x75\xcc\x76\xcc\x77\xcc\x78\xcc\x79\xcc\x7a\xcc\x7b\xcc\x7c\xcc\x7d\xcc\x7e\xcc\x7f\xcc\x81\xcc\x82\xcc\x83\xcc\x84\xcc\x85\xcc\x86\xcc\x87\xcc\x88\xcc\x89\xcc\x8a\xcc\x8b\xcc\x8c\xcc\x8d\xcc\x8e\xcc\x8f\xcc\x90\xcc\x91\xcc\x92\xcc\x93\xcc\x94\xcc\x95\xcc\x96\xcc\x97\xcc\x98\xcc\x99\xcc\x9a\xcc\x9b\xcc\x9c\xcc\x9d\xcc\x9e\xcc\x9f\xcc\xa0\xcc\xa1\xcc\xa2\xcc\xa3\xcc\xa4\xcc\xa5\xcc\xa6\xcc\xa7\xcc\xa8\xcc\xa9\xcc\xaa\xcc\xab\xcc\xac\xcc\xad\xcc\xae\xcc\xaf\xcc\xb0\xcc\xb1\xcc\xb2\xcc\xb3\xcc\xb4\xcc\xb5\xcc\xb6\xcc\xb7\xcc\xb8\xcc\xb9\xcc\xba\xcc\xbb\xcc\xbc\xcc\xbd\xcc\xbe\xcc\xbf\xcc\xc0\xcc\xc1\xcc\xc2\xcc\xc3\xcc\xc4\xcc\xc5\xcc\xc6\xcc\xc7\xcc\xc8\xcc\xc9\xcc\xca\xcc\xcb\xcc\xcc\xcc\xcd\xcc\xce\xcc\xcf\xcc\xd0\xcc\xd1\xcc\xd2\xcc\xd3\xcc\xd4\xcc\xd5\xcc\xd6\xcc\xd7\xcc\xd8\xcc\xd9\xcc\xda\xcc\xdb\xcc\xdc\xcc\xdd\xcc\xde\xcc\xdf\xcc\xe0\xcc\xe1\xcc\xe2\xcc\xe3\xcc\xe4\xcc\xe5\xcc\xe6\xcc\xe7\xcc\xe8\xcc\xe9", /* e800 */ "\xcc\xea\xcc\xeb\xcc\xec\xcc\xed\xcc\xee\xcc\xef\xcc\xf0\xcc\xf1\xcc\xf2\xcc\xf3\xcc\xf4\xcc\xf5\xcc\xf6\xcc\xf7\xcc\xf8\xcc\xf9\xcc\xfa\xcc\xfb\xcc\xfc\xcc\xfd\xcd\x41\xcd\x42\xcd\x43\xcd\x44\xcd\x45\xcd\x46\xcd\x47\xcd\x48\xcd\x49\xcd\x4a\xcd\x4b\xcd\x4c\xcd\x4d\xcd\x4e\xcd\x4f\xcd\x50\xcd\x51\xcd\x52\xcd\x53\xcd\x54\xcd\x55\xcd\x56\xcd\x57\xcd\x58\xcd\x59\xcd\x5a\xcd\x5b\xcd\x5c\xcd\x5d\xcd\x5e\xcd\x5f\xcd\x60\xcd\x61\xcd\x62\xcd\x63\xcd\x64\xcd\x65\xcd\x66\xcd\x67\xcd\x68\xcd\x69\xcd\x6a\xcd\x6b\xcd\x6c\xcd\x6d\xcd\x6e\xcd\x6f\xcd\x70\xcd\x71\xcd\x72\xcd\x73\xcd\x74\xcd\x75\xcd\x76\xcd\x77\xcd\x78\xcd\x79\xcd\x7a\xcd\x7b\xcd\x7c\xcd\x7d\xcd\x7e\xcd\x7f\xcd\x81\xcd\x82\xcd\x83\xcd\x84\xcd\x85\xcd\x86\xcd\x87\xcd\x88\xcd\x89\xcd\x8a\xcd\x8b\xcd\x8c\xcd\x8d\xcd\x8e\xcd\x8f\xcd\x90\xcd\x91\xcd\x92\xcd\x93\xcd\x94\xcd\x95\xcd\x96\xcd\x97\xcd\x98\xcd\x99\xcd\x9a\xcd\x9b\xcd\x9c\xcd\x9d\xcd\x9e\xcd\x9f\xcd\xa0\xcd\xa1\xcd\xa2\xcd\xa3\xcd\xa4\xcd\xa5\xcd\xa6\xcd\xa7\xcd\xa8\xcd\xa9\xcd\xaa\xcd\xab\xcd\xac\xcd\xad", /* e880 */ "\xcd\xae\xcd\xaf\xcd\xb0\xcd\xb1\xcd\xb2\xcd\xb3\xcd\xb4\xcd\xb5\xcd\xb6\xcd\xb7\xcd\xb8\xcd\xb9\xcd\xba\xcd\xbb\xcd\xbc\xcd\xbd\xcd\xbe\xcd\xbf\xcd\xc0\xcd\xc1\xcd\xc2\xcd\xc3\xcd\xc4\xcd\xc5\xcd\xc6\xcd\xc7\xcd\xc8\xcd\xc9\xcd\xca\xcd\xcb\xcd\xcc\xcd\xcd\xcd\xce\xcd\xcf\xcd\xd0\xcd\xd1\xcd\xd2\xcd\xd3\xcd\xd4\xcd\xd5\xcd\xd6\xcd\xd7\xcd\xd8\xcd\xd9\xcd\xda\xcd\xdb\xcd\xdc\xcd\xdd\xcd\xde\xcd\xdf\xcd\xe0\xcd\xe1\xcd\xe2\xcd\xe3\xcd\xe4\xcd\xe5\xcd\xe6\xcd\xe7\xcd\xe8\xcd\xe9\xcd\xea\xcd\xeb\xcd\xec\xcd\xed\xcd\xee\xcd\xef\xcd\xf0\xcd\xf1\xcd\xf2\xcd\xf3\xcd\xf4\xcd\xf5\xcd\xf6\xcd\xf7\xcd\xf8\xcd\xf9\xcd\xfa\xcd\xfb\xcd\xfc\xcd\xfd\xce\x41\xce\x42\xce\x43\xce\x44\xce\x45\xce\x46\xce\x47\xce\x48\xce\x49\xce\x4a\xce\x4b\xce\x4c\xce\x4d\xce\x4e\xce\x4f\xce\x50\xce\x51\xce\x52\xce\x53\xce\x54\xce\x55\xce\x56\xce\x57\xce\x58\xce\x59\xce\x5a\xce\x5b\xce\x5c\xce\x5d\xce\x5e\xce\x5f\xce\x60\xce\x61\xce\x62\xce\x63\xce\x64\xce\x65\xce\x66\xce\x67\xce\x68\xce\x69\xce\x6a\xce\x6b\xce\x6c\xce\x6d\xce\x6e\xce\x6f\xce\x70", /* e900 */ "\xce\x71\xce\x72\xce\x73\xce\x74\xce\x75\xce\x76\xce\x77\xce\x78\xce\x79\xce\x7a\xce\x7b\xce\x7c\xce\x7d\xce\x7e\xce\x7f\xce\x81\xce\x82\xce\x83\xce\x84\xce\x85\xce\x86\xce\x87\xce\x88\xce\x89\xce\x8a\xce\x8b\xce\x8c\xce\x8d\xce\x8e\xce\x8f\xce\x90\xce\x91\xce\x92\xce\x93\xce\x94\xce\x95\xce\x96\xce\x97\xce\x98\xce\x99\xce\x9a\xce\x9b\xce\x9c\xce\x9d\xce\x9e\xce\x9f\xce\xa0\xce\xa1\xce\xa2\xce\xa3\xce\xa4\xce\xa5\xce\xa6\xce\xa7\xce\xa8\xce\xa9\xce\xaa\xce\xab\xce\xac\xce\xad\xce\xae\xce\xaf\xce\xb0\xce\xb1\xce\xb2\xce\xb3\xce\xb4\xce\xb5\xce\xb6\xce\xb7\xce\xb8\xce\xb9\xce\xba\xce\xbb\xce\xbc\xce\xbd\xce\xbe\xce\xbf\xce\xc0\xce\xc1\xce\xc2\xce\xc3\xce\xc4\xce\xc5\xce\xc6\xce\xc7\xce\xc8\xce\xc9\xce\xca\xce\xcb\xce\xcc\xce\xcd\xce\xce\xce\xcf\xce\xd0\xce\xd1\xce\xd2\xce\xd3\xce\xd4\xce\xd5\xce\xd6\xce\xd7\xce\xd8\xce\xd9\xce\xda\xce\xdb\xce\xdc\xce\xdd\xce\xde\xce\xdf\xce\xe0\xce\xe1\xce\xe2\xce\xe3\xce\xe4\xce\xe5\xce\xe6\xce\xe7\xce\xe8\xce\xe9\xce\xea\xce\xeb\xce\xec\xce\xed\xce\xee\xce\xef\xce\xf0\xce\xf1", /* e980 */ "\xce\xf2\xce\xf3\xce\xf4\xce\xf5\xce\xf6\xce\xf7\xce\xf8\xce\xf9\xce\xfa\xce\xfb\xce\xfc\xce\xfd\xcf\x41\xcf\x42\xcf\x43\xcf\x44\xcf\x45\xcf\x46\xcf\x47\xcf\x48\xcf\x49\xcf\x4a\xcf\x4b\xcf\x4c\xcf\x4d\xcf\x4e\xcf\x4f\xcf\x50\xcf\x51\xcf\x52\xcf\x53\xcf\x54\xcf\x55\xcf\x56\xcf\x57\xcf\x58\xcf\x59\xcf\x5a\xcf\x5b\xcf\x5c\xcf\x5d\xcf\x5e\xcf\x5f\xcf\x60\xcf\x61\xcf\x62\xcf\x63\xcf\x64\xcf\x65\xcf\x66\xcf\x67\xcf\x68\xcf\x69\xcf\x6a\xcf\x6b\xcf\x6c\xcf\x6d\xcf\x6e\xcf\x6f\xcf\x70\xcf\x71\xcf\x72\xcf\x73\xcf\x74\xcf\x75\xcf\x76\xcf\x77\xcf\x78\xcf\x79\xcf\x7a\xcf\x7b\xcf\x7c\xcf\x7d\xcf\x7e\xcf\x7f\xcf\x81\xcf\x82\xcf\x83\xcf\x84\xcf\x85\xcf\x86\xcf\x87\xcf\x88\xcf\x89\xcf\x8a\xcf\x8b\xcf\x8c\xcf\x8d\xcf\x8e\xcf\x8f\xcf\x90\xcf\x91\xcf\x92\xcf\x93\xcf\x94\xcf\x95\xcf\x96\xcf\x97\xcf\x98\xcf\x99\xcf\x9a\xcf\x9b\xcf\x9c\xcf\x9d\xcf\x9e\xcf\x9f\xcf\xa0\xcf\xa1\xcf\xa2\xcf\xa3\xcf\xa4\xcf\xa5\xcf\xa6\xcf\xa7\xcf\xa8\xcf\xa9\xcf\xaa\xcf\xab\xcf\xac\xcf\xad\xcf\xae\xcf\xaf\xcf\xb0\xcf\xb1\xcf\xb2\xcf\xb3\xcf\xb4\xcf\xb5", /* ea00 */ "\xcf\xb6\xcf\xb7\xcf\xb8\xcf\xb9\xcf\xba\xcf\xbb\xcf\xbc\xcf\xbd\xcf\xbe\xcf\xbf\xcf\xc0\xcf\xc1\xcf\xc2\xcf\xc3\xcf\xc4\xcf\xc5\xcf\xc6\xcf\xc7\xcf\xc8\xcf\xc9\xcf\xca\xcf\xcb\xcf\xcc\xcf\xcd\xcf\xce\xcf\xcf\xcf\xd0\xcf\xd1\xcf\xd2\xcf\xd3\xcf\xd4\xcf\xd5\xcf\xd6\xcf\xd7\xcf\xd8\xcf\xd9\xcf\xda\xcf\xdb\xcf\xdc\xcf\xdd\xcf\xde\xcf\xdf\xcf\xe0\xcf\xe1\xcf\xe2\xcf\xe3\xcf\xe4\xcf\xe5\xcf\xe6\xcf\xe7\xcf\xe8\xcf\xe9\xcf\xea\xcf\xeb\xcf\xec\xcf\xed\xcf\xee\xcf\xef\xcf\xf0\xcf\xf1\xcf\xf2\xcf\xf3\xcf\xf4\xcf\xf5\xcf\xf6\xcf\xf7\xcf\xf8\xcf\xf9\xcf\xfa\xcf\xfb\xcf\xfc\xcf\xfd\xd0\x41\xd0\x42\xd0\x43\xd0\x44\xd0\x45\xd0\x46\xd0\x47\xd0\x48\xd0\x49\xd0\x4a\xd0\x4b\xd0\x4c\xd0\x4d\xd0\x4e\xd0\x4f\xd0\x50\xd0\x51\xd0\x52\xd0\x53\xd0\x54\xd0\x55\xd0\x56\xd0\x57\xd0\x58\xd0\x59\xd0\x5a\xd0\x5b\xd0\x5c\xd0\x5d\xd0\x5e\xd0\x5f\xd0\x60\xd0\x61\xd0\x62\xd0\x63\xd0\x64\xd0\x65\xd0\x66\xd0\x67\xd0\x68\xd0\x69\xd0\x6a\xd0\x6b\xd0\x6c\xd0\x6d\xd0\x6e\xd0\x6f\xd0\x70\xd0\x71\xd0\x72\xd0\x73\xd0\x74\xd0\x75\xd0\x76\xd0\x77\xd0\x78", /* ea80 */ "\xd0\x79\xd0\x7a\xd0\x7b\xd0\x7c\xd0\x7d\xd0\x7e\xd0\x7f\xd0\x81\xd0\x82\xd0\x83\xd0\x84\xd0\x85\xd0\x86\xd0\x87\xd0\x88\xd0\x89\xd0\x8a\xd0\x8b\xd0\x8c\xd0\x8d\xd0\x8e\xd0\x8f\xd0\x90\xd0\x91\xd0\x92\xd0\x93\xd0\x94\xd0\x95\xd0\x96\xd0\x97\xd0\x98\xd0\x99\xd0\x9a\xd0\x9b\xd0\x9c\xd0\x9d\xd0\x9e\xd0\x9f\xd0\xa0\xd0\xa1\xd0\xa2\xd0\xa3\xd0\xa4\xd0\xa5\xd0\xa6\xd0\xa7\xd0\xa8\xd0\xa9\xd0\xaa\xd0\xab\xd0\xac\xd0\xad\xd0\xae\xd0\xaf\xd0\xb0\xd0\xb1\xd0\xb2\xd0\xb3\xd0\xb4\xd0\xb5\xd0\xb6\xd0\xb7\xd0\xb8\xd0\xb9\xd0\xba\xd0\xbb\xd0\xbc\xd0\xbd\xd0\xbe\xd0\xbf\xd0\xc0\xd0\xc1\xd0\xc2\xd0\xc3\xd0\xc4\xd0\xc5\xd0\xc6\xd0\xc7\xd0\xc8\xd0\xc9\xd0\xca\xd0\xcb\xd0\xcc\xd0\xcd\xd0\xce\xd0\xcf\xd0\xd0\xd0\xd1\xd0\xd2\xd0\xd3\xd0\xd4\xd0\xd5\xd0\xd6\xd0\xd7\xd0\xd8\xd0\xd9\xd0\xda\xd0\xdb\xd0\xdc\xd0\xdd\xd0\xde\xd0\xdf\xd0\xe0\xd0\xe1\xd0\xe2\xd0\xe3\xd0\xe4\xd0\xe5\xd0\xe6\xd0\xe7\xd0\xe8\xd0\xe9\xd0\xea\xd0\xeb\xd0\xec\xd0\xed\xd0\xee\xd0\xef\xd0\xf0\xd0\xf1\xd0\xf2\xd0\xf3\xd0\xf4\xd0\xf5\xd0\xf6\xd0\xf7\xd0\xf8\xd0\xf9", /* eb00 */ "\xd0\xfa\xd0\xfb\xd0\xfc\xd0\xfd\xd1\x41\xd1\x42\xd1\x43\xd1\x44\xd1\x45\xd1\x46\xd1\x47\xd1\x48\xd1\x49\xd1\x4a\xd1\x4b\xd1\x4c\xd1\x4d\xd1\x4e\xd1\x4f\xd1\x50\xd1\x51\xd1\x52\xd1\x53\xd1\x54\xd1\x55\xd1\x56\xd1\x57\xd1\x58\xd1\x59\xd1\x5a\xd1\x5b\xd1\x5c\xd1\x5d\xd1\x5e\xd1\x5f\xd1\x60\xd1\x61\xd1\x62\xd1\x63\xd1\x64\xd1\x65\xd1\x66\xd1\x67\xd1\x68\xd1\x69\xd1\x6a\xd1\x6b\xd1\x6c\xd1\x6d\xd1\x6e\xd1\x6f\xd1\x70\xd1\x71\xd1\x72\xd1\x73\xd1\x74\xd1\x75\xd1\x76\xd1\x77\xd1\x78\xd1\x79\xd1\x7a\xd1\x7b\xd1\x7c\xd1\x7d\xd1\x7e\xd1\x7f\xd1\x81\xd1\x82\xd1\x83\xd1\x84\xd1\x85\xd1\x86\xd1\x87\xd1\x88\xd1\x89\xd1\x8a\xd1\x8b\xd1\x8c\xd1\x8d\xd1\x8e\xd1\x8f\xd1\x90\xd1\x91\xd1\x92\xd1\x93\xd1\x94\xd1\x95\xd1\x96\xd1\x97\xd1\x98\xd1\x99\xd1\x9a\xd1\x9b\xd1\x9c\xd1\x9d\xd1\x9e\xd1\x9f\xd1\xa0\xd1\xa1\xd1\xa2\xd1\xa3\xd1\xa4\xd1\xa5\xd1\xa6\xd1\xa7\xd1\xa8\xd1\xa9\xd1\xaa\xd1\xab\xd1\xac\xd1\xad\xd1\xae\xd1\xaf\xd1\xb0\xd1\xb1\xd1\xb2\xd1\xb3\xd1\xb4\xd1\xb5\xd1\xb6\xd1\xb7\xd1\xb8\xd1\xb9\xd1\xba\xd1\xbb\xd1\xbc\xd1\xbd", /* eb80 */ "\xd1\xbe\xd1\xbf\xd1\xc0\xd1\xc1\xd1\xc2\xd1\xc3\xd1\xc4\xd1\xc5\xd1\xc6\xd1\xc7\xd1\xc8\xd1\xc9\xd1\xca\xd1\xcb\xd1\xcc\xd1\xcd\xd1\xce\xd1\xcf\xd1\xd0\xd1\xd1\xd1\xd2\xd1\xd3\xd1\xd4\xd1\xd5\xd1\xd6\xd1\xd7\xd1\xd8\xd1\xd9\xd1\xda\xd1\xdb\xd1\xdc\xd1\xdd\xd1\xde\xd1\xdf\xd1\xe0\xd1\xe1\xd1\xe2\xd1\xe3\xd1\xe4\xd1\xe5\xd1\xe6\xd1\xe7\xd1\xe8\xd1\xe9\xd1\xea\xd1\xeb\xd1\xec\xd1\xed\xd1\xee\xd1\xef\xd1\xf0\xd1\xf1\xd1\xf2\xd1\xf3\xd1\xf4\xd1\xf5\xd1\xf6\xd1\xf7\xd1\xf8\xd1\xf9\xd1\xfa\xd1\xfb\xd1\xfc\xd1\xfd\xd2\x41\xd2\x42\xd2\x43\xd2\x44\xd2\x45\xd2\x46\xd2\x47\xd2\x48\xd2\x49\xd2\x4a\xd2\x4b\xd2\x4c\xd2\x4d\xd2\x4e\xd2\x4f\xd2\x50\xd2\x51\xd2\x52\xd2\x53\xd2\x54\xd2\x55\xd2\x56\xd2\x57\xd2\x58\xd2\x59\xd2\x5a\xd2\x5b\xd2\x5c\xd2\x5d\xd2\x5e\xd2\x5f\xd2\x60\xd2\x61\xd2\x62\xd2\x63\xd2\x64\xd2\x65\xd2\x66\xd2\x67\xd2\x68\xd2\x69\xd2\x6a\xd2\x6b\xd2\x6c\xd2\x6d\xd2\x6e\xd2\x6f\xd2\x70\xd2\x71\xd2\x72\xd2\x73\xd2\x74\xd2\x75\xd2\x76\xd2\x77\xd2\x78\xd2\x79\xd2\x7a\xd2\x7b\xd2\x7c\xd2\x7d\xd2\x7e\xd2\x7f\xd2\x81", /* ec00 */ "\xd2\x82\xd2\x83\xd2\x84\xd2\x85\xd2\x86\xd2\x87\xd2\x88\xd2\x89\xd2\x8a\xd2\x8b\xd2\x8c\xd2\x8d\xd2\x8e\xd2\x8f\xd2\x90\xd2\x91\xd2\x92\xd2\x93\xd2\x94\xd2\x95\xd2\x96\xd2\x97\xd2\x98\xd2\x99\xd2\x9a\xd2\x9b\xd2\x9c\xd2\x9d\xd2\x9e\xd2\x9f\xd2\xa0\xd2\xa1\xd2\xa2\xd2\xa3\xd2\xa4\xd2\xa5\xd2\xa6\xd2\xa7\xd2\xa8\xd2\xa9\xd2\xaa\xd2\xab\xd2\xac\xd2\xad\xd2\xae\xd2\xaf\xd2\xb0\xd2\xb1\xd2\xb2\xd2\xb3\xd2\xb4\xd2\xb5\xd2\xb6\xd2\xb7\xd2\xb8\xd2\xb9\xd2\xba\xd2\xbb\xd2\xbc\xd2\xbd\xd2\xbe\xd2\xbf\xd2\xc0\xd2\xc1\xd2\xc2\xd2\xc3\xd2\xc4\xd2\xc5\xd2\xc6\xd2\xc7\xd2\xc8\xd2\xc9\xd2\xca\xd2\xcb\xd2\xcc\xd2\xcd\xd2\xce\xd2\xcf\xd2\xd0\xd2\xd1\xd2\xd2\xd2\xd3\xd2\xd4\xd2\xd5\xd2\xd6\xd2\xd7\xd2\xd8\xd2\xd9\xd2\xda\xd2\xdb\xd2\xdc\xd2\xdd\xd2\xde\xd2\xdf\xd2\xe0\xd2\xe1\xd2\xe2\xd2\xe3\xd2\xe4\xd2\xe5\xd2\xe6\xd2\xe7\xd2\xe8\xd2\xe9\xd2\xea\xd2\xeb\xd2\xec\xd2\xed\xd2\xee\xd2\xef\xd2\xf0\xd2\xf1\xd2\xf2\xd2\xf3\xd2\xf4\xd2\xf5\xd2\xf6\xd2\xf7\xd2\xf8\xd2\xf9\xd2\xfa\xd2\xfb\xd2\xfc\xd2\xfd\xd3\x41\xd3\x42\xd3\x43\xd3\x44", /* ec80 */ "\xd3\x45\xd3\x46\xd3\x47\xd3\x48\xd3\x49\xd3\x4a\xd3\x4b\xd3\x4c\xd3\x4d\xd3\x4e\xd3\x4f\xd3\x50\xd3\x51\xd3\x52\xd3\x53\xd3\x54\xd3\x55\xd3\x56\xd3\x57\xd3\x58\xd3\x59\xd3\x5a\xd3\x5b\xd3\x5c\xd3\x5d\xd3\x5e\xd3\x5f\xd3\x60\xd3\x61\xd3\x62\xd3\x63\xd3\x64\xd3\x65\xd3\x66\xd3\x67\xd3\x68\xd3\x69\xd3\x6a\xd3\x6b\xd3\x6c\xd3\x6d\xd3\x6e\xd3\x6f\xd3\x70\xd3\x71\xd3\x72\xd3\x73\xd3\x74\xd3\x75\xd3\x76\xd3\x77\xd3\x78\xd3\x79\xd3\x7a\xd3\x7b\xd3\x7c\xd3\x7d\xd3\x7e\xd3\x7f\xd3\x81\xd3\x82\xd3\x83\xd3\x84\xd3\x85\xd3\x86\xd3\x87\xd3\x88\xd3\x89\xd3\x8a\xd3\x8b\xd3\x8c\xd3\x8d\xd3\x8e\xd3\x8f\xd3\x90\xd3\x91\xd3\x92\xd3\x93\xd3\x94\xd3\x95\xd3\x96\xd3\x97\xd3\x98\xd3\x99\xd3\x9a\xd3\x9b\xd3\x9c\xd3\x9d\xd3\x9e\xd3\x9f\xd3\xa0\xd3\xa1\xd3\xa2\xd3\xa3\xd3\xa4\xd3\xa5\xd3\xa6\xd3\xa7\xd3\xa8\xd3\xa9\xd3\xaa\xd3\xab\xd3\xac\xd3\xad\xd3\xae\xd3\xaf\xd3\xb0\xd3\xb1\xd3\xb2\xd3\xb3\xd3\xb4\xd3\xb5\xd3\xb6\xd3\xb7\xd3\xb8\xd3\xb9\xd3\xba\xd3\xbb\xd3\xbc\xd3\xbd\xd3\xbe\xd3\xbf\xd3\xc0\xd3\xc1\xd3\xc2\xd3\xc3\xd3\xc4\xd3\xc5", /* ed00 */ "\xd3\xc6\xd3\xc7\xd3\xc8\xd3\xc9\xd3\xca\xd3\xcb\xd3\xcc\xd3\xcd\xd3\xce\xd3\xcf\xd3\xd0\xd3\xd1\xd3\xd2\xd3\xd3\xd3\xd4\xd3\xd5\xd3\xd6\xd3\xd7\xd3\xd8\xd3\xd9\xd3\xda\xd3\xdb\xd3\xdc\xd3\xdd\xd3\xde\xd3\xdf\xd3\xe0\xd3\xe1\xd3\xe2\xd3\xe3\xd3\xe4\xd3\xe5\xd3\xe6\xd3\xe7\xd3\xe8\xd3\xe9\xd3\xea\xd3\xeb\xd3\xec\xd3\xed\xd3\xee\xd3\xef\xd3\xf0\xd3\xf1\xd3\xf2\xd3\xf3\xd3\xf4\xd3\xf5\xd3\xf6\xd3\xf7\xd3\xf8\xd3\xf9\xd3\xfa\xd3\xfb\xd3\xfc\xd3\xfd\xd4\x41\xd4\x42\xd4\x43\xd4\x44\xd4\x45\xd4\x46\xd4\x47\xd4\x48\xd4\x49\xd4\x4a\xd4\x4b\xd4\x4c\xd4\x4d\xd4\x4e\xd4\x4f\xd4\x50\xd4\x51\xd4\x52\xd4\x53\xd4\x54\xd4\x55\xd4\x56\xd4\x57\xd4\x58\xd4\x59\xd4\x5a\xd4\x5b\xd4\x5c\xd4\x5d\xd4\x5e\xd4\x5f\xd4\x60\xd4\x61\xd4\x62\xd4\x63\xd4\x64\xd4\x65\xd4\x66\xd4\x67\xd4\x68\xd4\x69\xd4\x6a\xd4\x6b\xd4\x6c\xd4\x6d\xd4\x6e\xd4\x6f\xd4\x70\xd4\x71\xd4\x72\xd4\x73\xd4\x74\xd4\x75\xd4\x76\xd4\x77\xd4\x78\xd4\x79\xd4\x7a\xd4\x7b\xd4\x7c\xd4\x7d\xd4\x7e\xd4\x7f\xd4\x81\xd4\x82\xd4\x83\xd4\x84\xd4\x85\xd4\x86\xd4\x87\xd4\x88\xd4\x89", /* ed80 */ "\xd4\x8a\xd4\x8b\xd4\x8c\xd4\x8d\xd4\x8e\xd4\x8f\xd4\x90\xd4\x91\xd4\x92\xd4\x93\xd4\x94\xd4\x95\xd4\x96\xd4\x97\xd4\x98\xd4\x99\xd4\x9a\xd4\x9b\xd4\x9c\xd4\x9d\xd4\x9e\xd4\x9f\xd4\xa0\xd4\xa1\xd4\xa2\xd4\xa3\xd4\xa4\xd4\xa5\xd4\xa6\xd4\xa7\xd4\xa8\xd4\xa9\xd4\xaa\xd4\xab\xd4\xac\xd4\xad\xd4\xae\xd4\xaf\xd4\xb0\xd4\xb1\xd4\xb2\xd4\xb3\xd4\xb4\xd4\xb5\xd4\xb6\xd4\xb7\xd4\xb8\xd4\xb9\xd4\xba\xd4\xbb\xd4\xbc\xd4\xbd\xd4\xbe\xd4\xbf\xd4\xc0\xd4\xc1\xd4\xc2\xd4\xc3\xd4\xc4\xd4\xc5\xd4\xc6\xd4\xc7\xd4\xc8\xd4\xc9\xd4\xca\xd4\xcb\xd4\xcc\xd4\xcd\xd4\xce\xd4\xcf\xd4\xd0\xd4\xd1\xd4\xd2\xd4\xd3\xd4\xd4\xd4\xd5\xd4\xd6\xd4\xd7\xd4\xd8\xd4\xd9\xd4\xda\xd4\xdb\xd4\xdc\xd4\xdd\xd4\xde\xd4\xdf\xd4\xe0\xd4\xe1\xd4\xe2\xd4\xe3\xd4\xe4\xd4\xe5\xd4\xe6\xd4\xe7\xd4\xe8\xd4\xe9\xd4\xea\xd4\xeb\xd4\xec\xd4\xed\xd4\xee\xd4\xef\xd4\xf0\xd4\xf1\xd4\xf2\xd4\xf3\xd4\xf4\xd4\xf5\xd4\xf6\xd4\xf7\xd4\xf8\xd4\xf9\xd4\xfa\xd4\xfb\xd4\xfc\xd4\xfd\xd5\x41\xd5\x42\xd5\x43\xd5\x44\xd5\x45\xd5\x46\xd5\x47\xd5\x48\xd5\x49\xd5\x4a\xd5\x4b\xd5\x4c", /* ee00 */ "\xd5\x4d\xd5\x4e\xd5\x4f\xd5\x50\xd5\x51\xd5\x52\xd5\x53\xd5\x54\xd5\x55\xd5\x56\xd5\x57\xd5\x58\xd5\x59\xd5\x5a\xd5\x5b\xd5\x5c\xd5\x5d\xd5\x5e\xd5\x5f\xd5\x60\xd5\x61\xd5\x62\xd5\x63\xd5\x64\xd5\x65\xd5\x66\xd5\x67\xd5\x68\xd5\x69\xd5\x6a\xd5\x6b\xd5\x6c\xd5\x6d\xd5\x6e\xd5\x6f\xd5\x70\xd5\x71\xd5\x72\xd5\x73\xd5\x74\xd5\x75\xd5\x76\xd5\x77\xd5\x78\xd5\x79\xd5\x7a\xd5\x7b\xd5\x7c\xd5\x7d\xd5\x7e\xd5\x7f\xd5\x81\xd5\x82\xd5\x83\xd5\x84\xd5\x85\xd5\x86\xd5\x87\xd5\x88\xd5\x89\xd5\x8a\xd5\x8b\xd5\x8c\xd5\x8d\xd5\x8e\xd5\x8f\xd5\x90\xd5\x91\xd5\x92\xd5\x93\xd5\x94\xd5\x95\xd5\x96\xd5\x97\xd5\x98\xd5\x99\xd5\x9a\xd5\x9b\xd5\x9c\xd5\x9d\xd5\x9e\xd5\x9f\xd5\xa0\xd5\xa1\xd5\xa2\xd5\xa3\xd5\xa4\xd5\xa5\xd5\xa6\xd5\xa7\xd5\xa8\xd5\xa9\xd5\xaa\xd5\xab\xd5\xac\xd5\xad\xd5\xae\xd5\xaf\xd5\xb0\xd5\xb1\xd5\xb2\xd5\xb3\xd5\xb4\xd5\xb5\xd5\xb6\xd5\xb7\xd5\xb8\xd5\xb9\xd5\xba\xd5\xbb\xd5\xbc\xd5\xbd\xd5\xbe\xd5\xbf\xd5\xc0\xd5\xc1\xd5\xc2\xd5\xc3\xd5\xc4\xd5\xc5\xd5\xc6\xd5\xc7\xd5\xc8\xd5\xc9\xd5\xca\xd5\xcb\xd5\xcc\xd5\xcd", /* ee80 */ "\xd5\xce\xd5\xcf\xd5\xd0\xd5\xd1\xd5\xd2\xd5\xd3\xd5\xd4\xd5\xd5\xd5\xd6\xd5\xd7\xd5\xd8\xd5\xd9\xd5\xda\xd5\xdb\xd5\xdc\xd5\xdd\xd5\xde\xd5\xdf\xd5\xe0\xd5\xe1\xd5\xe2\xd5\xe3\xd5\xe4\xd5\xe5\xd5\xe6\xd5\xe7\xd5\xe8\xd5\xe9\xd5\xea\xd5\xeb\xd5\xec\xd5\xed\xd5\xee\xd5\xef\xd5\xf0\xd5\xf1\xd5\xf2\xd5\xf3\xd5\xf4\xd5\xf5\xd5\xf6\xd5\xf7\xd5\xf8\xd5\xf9\xd5\xfa\xd5\xfb\xd5\xfc\xd5\xfd\xd6\x41\xd6\x42\xd6\x43\xd6\x44\xd6\x45\xd6\x46\xd6\x47\xd6\x48\xd6\x49\xd6\x4a\xd6\x4b\xd6\x4c\xd6\x4d\xd6\x4e\xd6\x4f\xd6\x50\xd6\x51\xd6\x52\xd6\x53\xd6\x54\xd6\x55\xd6\x56\xd6\x57\xd6\x58\xd6\x59\xd6\x5a\xd6\x5b\xd6\x5c\xd6\x5d\xd6\x5e\xd6\x5f\xd6\x60\xd6\x61\xd6\x62\xd6\x63\xd6\x64\xd6\x65\xd6\x66\xd6\x67\xd6\x68\xd6\x69\xd6\x6a\xd6\x6b\xd6\x6c\xd6\x6d\xd6\x6e\xd6\x6f\xd6\x70\xd6\x71\xd6\x72\xd6\x73\xd6\x74\xd6\x75\xd6\x76\xd6\x77\xd6\x78\xd6\x79\xd6\x7a\xd6\x7b\xd6\x7c\xd6\x7d\xd6\x7e\xd6\x7f\xd6\x81\xd6\x82\xd6\x83\xd6\x84\xd6\x85\xd6\x86\xd6\x87\xd6\x88\xd6\x89\xd6\x8a\xd6\x8b\xd6\x8c\xd6\x8d\xd6\x8e\xd6\x8f\xd6\x90\xd6\x91", /* ef00 */ "\xd6\x92\xd6\x93\xd6\x94\xd6\x95\xd6\x96\xd6\x97\xd6\x98\xd6\x99\xd6\x9a\xd6\x9b\xd6\x9c\xd6\x9d\xd6\x9e\xd6\x9f\xd6\xa0\xd6\xa1\xd6\xa2\xd6\xa3\xd6\xa4\xd6\xa5\xd6\xa6\xd6\xa7\xd6\xa8\xd6\xa9\xd6\xaa\xd6\xab\xd6\xac\xd6\xad\xd6\xae\xd6\xaf\xd6\xb0\xd6\xb1\xd6\xb2\xd6\xb3\xd6\xb4\xd6\xb5\xd6\xb6\xd6\xb7\xd6\xb8\xd6\xb9\xd6\xba\xd6\xbb\xd6\xbc\xd6\xbd\xd6\xbe\xd6\xbf\xd6\xc0\xd6\xc1\xd6\xc2\xd6\xc3\xd6\xc4\xd6\xc5\xd6\xc6\xd6\xc7\xd6\xc8\xd6\xc9\xd6\xca\xd6\xcb\xd6\xcc\xd6\xcd\xd6\xce\xd6\xcf\xd6\xd0\xd6\xd1\xd6\xd2\xd6\xd3\xd6\xd4\xd6\xd5\xd6\xd6\xd6\xd7\xd6\xd8\xd6\xd9\xd6\xda\xd6\xdb\xd6\xdc\xd6\xdd\xd6\xde\xd6\xdf\xd6\xe0\xd6\xe1\xd6\xe2\xd6\xe3\xd6\xe4\xd6\xe5\xd6\xe6\xd6\xe7\xd6\xe8\xd6\xe9\xd6\xea\xd6\xeb\xd6\xec\xd6\xed\xd6\xee\xd6\xef\xd6\xf0\xd6\xf1\xd6\xf2\xd6\xf3\xd6\xf4\xd6\xf5\xd6\xf6\xd6\xf7\xd6\xf8\xd6\xf9\xd6\xfa\xd6\xfb\xd6\xfc\xd6\xfd\xd7\x41\xd7\x42\xd7\x43\xd7\x44\xd7\x45\xd7\x46\xd7\x47\xd7\x48\xd7\x49\xd7\x4a\xd7\x4b\xd7\x4c\xd7\x4d\xd7\x4e\xd7\x4f\xd7\x50\xd7\x51\xd7\x52\xd7\x53\xd7\x54", /* ef80 */ "\xd7\x55\xd7\x56\xd7\x57\xd7\x58\xd7\x59\xd7\x5a\xd7\x5b\xd7\x5c\xd7\x5d\xd7\x5e\xd7\x5f\xd7\x60\xd7\x61\xd7\x62\xd7\x63\xd7\x64\xd7\x65\xd7\x66\xd7\x67\xd7\x68\xd7\x69\xd7\x6a\xd7\x6b\xd7\x6c\xd7\x6d\xd7\x6e\xd7\x6f\xd7\x70\xd7\x71\xd7\x72\xd7\x73\xd7\x74\xd7\x75\xd7\x76\xd7\x77\xd7\x78\xd7\x79\xd7\x7a\xd7\x7b\xd7\x7c\xd7\x7d\xd7\x7e\xd7\x7f\xd7\x81\xd7\x82\xd7\x83\xd7\x84\xd7\x85\xd7\x86\xd7\x87\xd7\x88\xd7\x89\xd7\x8a\xd7\x8b\xd7\x8c\xd7\x8d\xd7\x8e\xd7\x8f\xd7\x90\xd7\x91\xd7\x92\xd7\x93\xd7\x94\xd7\x95\xd7\x96\xd7\x97\xd7\x98\xd7\x99\xd7\x9a\xd7\x9b\xd7\x9c\xd7\x9d\xd7\x9e\xd7\x9f\xd7\xa0\xd7\xa1\xd7\xa2\xd7\xa3\xd7\xa4\xd7\xa5\xd7\xa6\xd7\xa7\xd7\xa8\xd7\xa9\xd7\xaa\xd7\xab\xd7\xac\xd7\xad\xd7\xae\xd7\xaf\xd7\xb0\xd7\xb1\xd7\xb2\xd7\xb3\xd7\xb4\xd7\xb5\xd7\xb6\xd7\xb7\xd7\xb8\xd7\xb9\xd7\xba\xd7\xbb\xd7\xbc\xd7\xbd\xd7\xbe\xd7\xbf\xd7\xc0\xd7\xc1\xd7\xc2\xd7\xc3\xd7\xc4\xd7\xc5\xd7\xc6\xd7\xc7\xd7\xc8\xd7\xc9\xd7\xca\xd7\xcb\xd7\xcc\xd7\xcd\xd7\xce\xd7\xcf\xd7\xd0\xd7\xd1\xd7\xd2\xd7\xd3\xd7\xd4\xd7\xd5", /* f000 */ "\xd7\xd6\xd7\xd7\xd7\xd8\xd7\xd9\xd7\xda\xd7\xdb\xd7\xdc\xd7\xdd\xd7\xde\xd7\xdf\xd7\xe0\xd7\xe1\xd7\xe2\xd7\xe3\xd7\xe4\xd7\xe5\xd7\xe6\xd7\xe7\xd7\xe8\xd7\xe9\xd7\xea\xd7\xeb\xd7\xec\xd7\xed\xd7\xee\xd7\xef\xd7\xf0\xd7\xf1\xd7\xf2\xd7\xf3\xd7\xf4\xd7\xf5\xd7\xf6\xd7\xf7\xd7\xf8\xd7\xf9\xd7\xfa\xd7\xfb\xd7\xfc\xd7\xfd\xd8\x41\xd8\x42\xd8\x43\xd8\x44\xd8\x45\xd8\x46\xd8\x47\xd8\x48\xd8\x49\xd8\x4a\xd8\x4b\xd8\x4c\xd8\x4d\xd8\x4e\xd8\x4f\xd8\x50\xd8\x51\xd8\x52\xd8\x53\xd8\x54\xd8\x55\xd8\x56\xd8\x57\xd8\x58\xd8\x59\xd8\x5a\xd8\x5b\xd8\x5c\xd8\x5d\xd8\x5e\xd8\x5f\xd8\x60\xd8\x61\xd8\x62\xd8\x63\xd8\x64\xd8\x65\xd8\x66\xd8\x67\xd8\x68\xd8\x69\xd8\x6a\xd8\x6b\xd8\x6c\xd8\x6d\xd8\x6e\xd8\x6f\xd8\x70\xd8\x71\xd8\x72\xd8\x73\xd8\x74\xd8\x75\xd8\x76\xd8\x77\xd8\x78\xd8\x79\xd8\x7a\xd8\x7b\xd8\x7c\xd8\x7d\xd8\x7e\xd8\x7f\xd8\x81\xd8\x82\xd8\x83\xd8\x84\xd8\x85\xd8\x86\xd8\x87\xd8\x88\xd8\x89\xd8\x8a\xd8\x8b\xd8\x8c\xd8\x8d\xd8\x8e\xd8\x8f\xd8\x90\xd8\x91\xd8\x92\xd8\x93\xd8\x94\xd8\x95\xd8\x96\xd8\x97\xd8\x98\xd8\x99", /* f080 */ "\xd8\x9a\xd8\x9b\xd8\x9c\xd8\x9d\xd8\x9e\xd8\x9f\xd8\xa0\xd8\xa1\xd8\xa2\xd8\xa3\xd8\xa4\xd8\xa5\xd8\xa6\xd8\xa7\xd8\xa8\xd8\xa9\xd8\xaa\xd8\xab\xd8\xac\xd8\xad\xd8\xae\xd8\xaf\xd8\xb0\xd8\xb1\xd8\xb2\xd8\xb3\xd8\xb4\xd8\xb5\xd8\xb6\xd8\xb7\xd8\xb8\xd8\xb9\xd8\xba\xd8\xbb\xd8\xbc\xd8\xbd\xd8\xbe\xd8\xbf\xd8\xc0\xd8\xc1\xd8\xc2\xd8\xc3\xd8\xc4\xd8\xc5\xd8\xc6\xd8\xc7\xd8\xc8\xd8\xc9\xd8\xca\xd8\xcb\xd8\xcc\xd8\xcd\xd8\xce\xd8\xcf\xd8\xd0\xd8\xd1\xd8\xd2\xd8\xd3\xd8\xd4\xd8\xd5\xd8\xd6\xd8\xd7\xd8\xd8\xd8\xd9\xd8\xda\xd8\xdb\xd8\xdc\xd8\xdd\xd8\xde\xd8\xdf\xd8\xe0\xd8\xe1\xd8\xe2\xd8\xe3\xd8\xe4\xd8\xe5\xd8\xe6\xd8\xe7\xd8\xe8\xd8\xe9\xd8\xea\xd8\xeb\xd8\xec\xd8\xed\xd8\xee\xd8\xef\xd8\xf0\xd8\xf1\xd8\xf2\xd8\xf3\xd8\xf4\xd8\xf5\xd8\xf6\xd8\xf7\xd8\xf8\xd8\xf9\xd8\xfa\xd8\xfb\xd8\xfc\xd8\xfd\xd9\x41\xd9\x42\xd9\x43\xd9\x44\xd9\x45\xd9\x46\xd9\x47\xd9\x48\xd9\x49\xd9\x4a\xd9\x4b\xd9\x4c\xd9\x4d\xd9\x4e\xd9\x4f\xd9\x50\xd9\x51\xd9\x52\xd9\x53\xd9\x54\xd9\x55\xd9\x56\xd9\x57\xd9\x58\xd9\x59\xd9\x5a\xd9\x5b\xd9\x5c", /* f100 */ "\xd9\x5d\xd9\x5e\xd9\x5f\xd9\x60\xd9\x61\xd9\x62\xd9\x63\xd9\x64\xd9\x65\xd9\x66\xd9\x67\xd9\x68\xd9\x69\xd9\x6a\xd9\x6b\xd9\x6c\xd9\x6d\xd9\x6e\xd9\x6f\xd9\x70\xd9\x71\xd9\x72\xd9\x73\xd9\x74\xd9\x75\xd9\x76\xd9\x77\xd9\x78\xd9\x79\xd9\x7a\xd9\x7b\xd9\x7c\xd9\x7d\xd9\x7e\xd9\x7f\xd9\x81\xd9\x82\xd9\x83\xd9\x84\xd9\x85\xd9\x86\xd9\x87\xd9\x88\xd9\x89\xd9\x8a\xd9\x8b\xd9\x8c\xd9\x8d\xd9\x8e\xd9\x8f\xd9\x90\xd9\x91\xd9\x92\xd9\x93\xd9\x94\xd9\x95\xd9\x96\xd9\x97\xd9\x98\xd9\x99\xd9\x9a\xd9\x9b\xd9\x9c\xd9\x9d\xd9\x9e\xd9\x9f\xd9\xa0\xd9\xa1\xd9\xa2\xd9\xa3\xd9\xa4\xd9\xa5\xd9\xa6\xd9\xa7\xd9\xa8\xd9\xa9\xd9\xaa\xd9\xab\xd9\xac\xd9\xad\xd9\xae\xd9\xaf\xd9\xb0\xd9\xb1\xd9\xb2\xd9\xb3\xd9\xb4\xd9\xb5\xd9\xb6\xd9\xb7\xd9\xb8\xd9\xb9\xd9\xba\xd9\xbb\xd9\xbc\xd9\xbd\xd9\xbe\xd9\xbf\xd9\xc0\xd9\xc1\xd9\xc2\xd9\xc3\xd9\xc4\xd9\xc5\xd9\xc6\xd9\xc7\xd9\xc8\xd9\xc9\xd9\xca\xd9\xcb\xd9\xcc\xd9\xcd\xd9\xce\xd9\xcf\xd9\xd0\xd9\xd1\xd9\xd2\xd9\xd3\xd9\xd4\xd9\xd5\xd9\xd6\xd9\xd7\xd9\xd8\xd9\xd9\xd9\xda\xd9\xdb\xd9\xdc\xd9\xdd", /* f180 */ "\xd9\xde\xd9\xdf\xd9\xe0\xd9\xe1\xd9\xe2\xd9\xe3\xd9\xe4\xd9\xe5\xd9\xe6\xd9\xe7\xd9\xe8\xd9\xe9\xd9\xea\xd9\xeb\xd9\xec\xd9\xed\xd9\xee\xd9\xef\xd9\xf0\xd9\xf1\xd9\xf2\xd9\xf3\xd9\xf4\xd9\xf5\xd9\xf6\xd9\xf7\xd9\xf8\xd9\xf9\xd9\xfa\xd9\xfb\xd9\xfc\xd9\xfd\xda\x41\xda\x42\xda\x43\xda\x44\xda\x45\xda\x46\xda\x47\xda\x48\xda\x49\xda\x4a\xda\x4b\xda\x4c\xda\x4d\xda\x4e\xda\x4f\xda\x50\xda\x51\xda\x52\xda\x53\xda\x54\xda\x55\xda\x56\xda\x57\xda\x58\xda\x59\xda\x5a\xda\x5b\xda\x5c\xda\x5d\xda\x5e\xda\x5f\xda\x60\xda\x61\xda\x62\xda\x63\xda\x64\xda\x65\xda\x66\xda\x67\xda\x68\xda\x69\xda\x6a\xda\x6b\xda\x6c\xda\x6d\xda\x6e\xda\x6f\xda\x70\xda\x71\xda\x72\xda\x73\xda\x74\xda\x75\xda\x76\xda\x77\xda\x78\xda\x79\xda\x7a\xda\x7b\xda\x7c\xda\x7d\xda\x7e\xda\x7f\xda\x81\xda\x82\xda\x83\xda\x84\xda\x85\xda\x86\xda\x87\xda\x88\xda\x89\xda\x8a\xda\x8b\xda\x8c\xda\x8d\xda\x8e\xda\x8f\xda\x90\xda\x91\xda\x92\xda\x93\xda\x94\xda\x95\xda\x96\xda\x97\xda\x98\xda\x99\xda\x9a\xda\x9b\xda\x9c\xda\x9d\xda\x9e\xda\x9f\xda\xa0\xda\xa1", /* f200 */ "\xda\xa2\xda\xa3\xda\xa4\xda\xa5\xda\xa6\xda\xa7\xda\xa8\xda\xa9\xda\xaa\xda\xab\xda\xac\xda\xad\xda\xae\xda\xaf\xda\xb0\xda\xb1\xda\xb2\xda\xb3\xda\xb4\xda\xb5\xda\xb6\xda\xb7\xda\xb8\xda\xb9\xda\xba\xda\xbb\xda\xbc\xda\xbd\xda\xbe\xda\xbf\xda\xc0\xda\xc1\xda\xc2\xda\xc3\xda\xc4\xda\xc5\xda\xc6\xda\xc7\xda\xc8\xda\xc9\xda\xca\xda\xcb\xda\xcc\xda\xcd\xda\xce\xda\xcf\xda\xd0\xda\xd1\xda\xd2\xda\xd3\xda\xd4\xda\xd5\xda\xd6\xda\xd7\xda\xd8\xda\xd9\xda\xda\xda\xdb\xda\xdc\xda\xdd\xda\xde\xda\xdf\xda\xe0\xda\xe1\xda\xe2\xda\xe3\xda\xe4\xda\xe5\xda\xe6\xda\xe7\xda\xe8\xda\xe9\xda\xea\xda\xeb\xda\xec\xda\xed\xda\xee\xda\xef\xda\xf0\xda\xf1\xda\xf2\xda\xf3\xda\xf4\xda\xf5\xda\xf6\xda\xf7\xda\xf8\xda\xf9\xda\xfa\xda\xfb\xda\xfc\xda\xfd\xdb\x41\xdb\x42\xdb\x43\xdb\x44\xdb\x45\xdb\x46\xdb\x47\xdb\x48\xdb\x49\xdb\x4a\xdb\x4b\xdb\x4c\xdb\x4d\xdb\x4e\xdb\x4f\xdb\x50\xdb\x51\xdb\x52\xdb\x53\xdb\x54\xdb\x55\xdb\x56\xdb\x57\xdb\x58\xdb\x59\xdb\x5a\xdb\x5b\xdb\x5c\xdb\x5d\xdb\x5e\xdb\x5f\xdb\x60\xdb\x61\xdb\x62\xdb\x63\xdb\x64", /* f280 */ "\xdb\x65\xdb\x66\xdb\x67\xdb\x68\xdb\x69\xdb\x6a\xdb\x6b\xdb\x6c\xdb\x6d\xdb\x6e\xdb\x6f\xdb\x70\xdb\x71\xdb\x72\xdb\x73\xdb\x74\xdb\x75\xdb\x76\xdb\x77\xdb\x78\xdb\x79\xdb\x7a\xdb\x7b\xdb\x7c\xdb\x7d\xdb\x7e\xdb\x7f\xdb\x81\xdb\x82\xdb\x83\xdb\x84\xdb\x85\xdb\x86\xdb\x87\xdb\x88\xdb\x89\xdb\x8a\xdb\x8b\xdb\x8c\xdb\x8d\xdb\x8e\xdb\x8f\xdb\x90\xdb\x91\xdb\x92\xdb\x93\xdb\x94\xdb\x95\xdb\x96\xdb\x97\xdb\x98\xdb\x99\xdb\x9a\xdb\x9b\xdb\x9c\xdb\x9d\xdb\x9e\xdb\x9f\xdb\xa0\xdb\xa1\xdb\xa2\xdb\xa3\xdb\xa4\xdb\xa5\xdb\xa6\xdb\xa7\xdb\xa8\xdb\xa9\xdb\xaa\xdb\xab\xdb\xac\xdb\xad\xdb\xae\xdb\xaf\xdb\xb0\xdb\xb1\xdb\xb2\xdb\xb3\xdb\xb4\xdb\xb5\xdb\xb6\xdb\xb7\xdb\xb8\xdb\xb9\xdb\xba\xdb\xbb\xdb\xbc\xdb\xbd\xdb\xbe\xdb\xbf\xdb\xc0\xdb\xc1\xdb\xc2\xdb\xc3\xdb\xc4\xdb\xc5\xdb\xc6\xdb\xc7\xdb\xc8\xdb\xc9\xdb\xca\xdb\xcb\xdb\xcc\xdb\xcd\xdb\xce\xdb\xcf\xdb\xd0\xdb\xd1\xdb\xd2\xdb\xd3\xdb\xd4\xdb\xd5\xdb\xd6\xdb\xd7\xdb\xd8\xdb\xd9\xdb\xda\xdb\xdb\xdb\xdc\xdb\xdd\xdb\xde\xdb\xdf\xdb\xe0\xdb\xe1\xdb\xe2\xdb\xe3\xdb\xe4\xdb\xe5", /* f300 */ "\xdb\xe6\xdb\xe7\xdb\xe8\xdb\xe9\xdb\xea\xdb\xeb\xdb\xec\xdb\xed\xdb\xee\xdb\xef\xdb\xf0\xdb\xf1\xdb\xf2\xdb\xf3\xdb\xf4\xdb\xf5\xdb\xf6\xdb\xf7\xdb\xf8\xdb\xf9\xdb\xfa\xdb\xfb\xdb\xfc\xdb\xfd\xdc\x41\xdc\x42\xdc\x43\xdc\x44\xdc\x45\xdc\x46\xdc\x47\xdc\x48\xdc\x49\xdc\x4a\xdc\x4b\xdc\x4c\xdc\x4d\xdc\x4e\xdc\x4f\xdc\x50\xdc\x51\xdc\x52\xdc\x53\xdc\x54\xdc\x55\xdc\x56\xdc\x57\xdc\x58\xdc\x59\xdc\x5a\xdc\x5b\xdc\x5c\xdc\x5d\xdc\x5e\xdc\x5f\xdc\x60\xdc\x61\xdc\x62\xdc\x63\xdc\x64\xdc\x65\xdc\x66\xdc\x67\xdc\x68\xdc\x69\xdc\x6a\xdc\x6b\xdc\x6c\xdc\x6d\xdc\x6e\xdc\x6f\xdc\x70\xdc\x71\xdc\x72\xdc\x73\xdc\x74\xdc\x75\xdc\x76\xdc\x77\xdc\x78\xdc\x79\xdc\x7a\xdc\x7b\xdc\x7c\xdc\x7d\xdc\x7e\xdc\x7f\xdc\x81\xdc\x82\xdc\x83\xdc\x84\xdc\x85\xdc\x86\xdc\x87\xdc\x88\xdc\x89\xdc\x8a\xdc\x8b\xdc\x8c\xdc\x8d\xdc\x8e\xdc\x8f\xdc\x90\xdc\x91\xdc\x92\xdc\x93\xdc\x94\xdc\x95\xdc\x96\xdc\x97\xdc\x98\xdc\x99\xdc\x9a\xdc\x9b\xdc\x9c\xdc\x9d\xdc\x9e\xdc\x9f\xdc\xa0\xdc\xa1\xdc\xa2\xdc\xa3\xdc\xa4\xdc\xa5\xdc\xa6\xdc\xa7\xdc\xa8\xdc\xa9", /* f380 */ "\xdc\xaa\xdc\xab\xdc\xac\xdc\xad\xdc\xae\xdc\xaf\xdc\xb0\xdc\xb1\xdc\xb2\xdc\xb3\xdc\xb4\xdc\xb5\xdc\xb6\xdc\xb7\xdc\xb8\xdc\xb9\xdc\xba\xdc\xbb\xdc\xbc\xdc\xbd\xdc\xbe\xdc\xbf\xdc\xc0\xdc\xc1\xdc\xc2\xdc\xc3\xdc\xc4\xdc\xc5\xdc\xc6\xdc\xc7\xdc\xc8\xdc\xc9\xdc\xca\xdc\xcb\xdc\xcc\xdc\xcd\xdc\xce\xdc\xcf\xdc\xd0\xdc\xd1\xdc\xd2\xdc\xd3\xdc\xd4\xdc\xd5\xdc\xd6\xdc\xd7\xdc\xd8\xdc\xd9\xdc\xda\xdc\xdb\xdc\xdc\xdc\xdd\xdc\xde\xdc\xdf\xdc\xe0\xdc\xe1\xdc\xe2\xdc\xe3\xdc\xe4\xdc\xe5\xdc\xe6\xdc\xe7\xdc\xe8\xdc\xe9\xdc\xea\xdc\xeb\xdc\xec\xdc\xed\xdc\xee\xdc\xef\xdc\xf0\xdc\xf1\xdc\xf2\xdc\xf3\xdc\xf4\xdc\xf5\xdc\xf6\xdc\xf7\xdc\xf8\xdc\xf9\xdc\xfa\xdc\xfb\xdc\xfc\xdc\xfd\xdd\x41\xdd\x42\xdd\x43\xdd\x44\xdd\x45\xdd\x46\xdd\x47\xdd\x48\xdd\x49\xdd\x4a\xdd\x4b\xdd\x4c\xdd\x4d\xdd\x4e\xdd\x4f\xdd\x50\xdd\x51\xdd\x52\xdd\x53\xdd\x54\xdd\x55\xdd\x56\xdd\x57\xdd\x58\xdd\x59\xdd\x5a\xdd\x5b\xdd\x5c\xdd\x5d\xdd\x5e\xdd\x5f\xdd\x60\xdd\x61\xdd\x62\xdd\x63\xdd\x64\xdd\x65\xdd\x66\xdd\x67\xdd\x68\xdd\x69\xdd\x6a\xdd\x6b\xdd\x6c", /* f400 */ "\xdd\x6d\xdd\x6e\xdd\x6f\xdd\x70\xdd\x71\xdd\x72\xdd\x73\xdd\x74\xdd\x75\xdd\x76\xdd\x77\xdd\x78\xdd\x79\xdd\x7a\xdd\x7b\xdd\x7c\xdd\x7d\xdd\x7e\xdd\x7f\xdd\x81\xdd\x82\xdd\x83\xdd\x84\xdd\x85\xdd\x86\xdd\x87\xdd\x88\xdd\x89\xdd\x8a\xdd\x8b\xdd\x8c\xdd\x8d\xdd\x8e\xdd\x8f\xdd\x90\xdd\x91\xdd\x92\xdd\x93\xdd\x94\xdd\x95\xdd\x96\xdd\x97\xdd\x98\xdd\x99\xdd\x9a\xdd\x9b\xdd\x9c\xdd\x9d\xdd\x9e\xdd\x9f\xdd\xa0\xdd\xa1\xdd\xa2\xdd\xa3\xdd\xa4\xdd\xa5\xdd\xa6\xdd\xa7\xdd\xa8\xdd\xa9\xdd\xaa\xdd\xab\xdd\xac\xdd\xad\xdd\xae\xdd\xaf\xdd\xb0\xdd\xb1\xdd\xb2\xdd\xb3\xdd\xb4\xdd\xb5\xdd\xb6\xdd\xb7\xdd\xb8\xdd\xb9\xdd\xba\xdd\xbb\xdd\xbc\xdd\xbd\xdd\xbe\xdd\xbf\xdd\xc0\xdd\xc1\xdd\xc2\xdd\xc3\xdd\xc4\xdd\xc5\xdd\xc6\xdd\xc7\xdd\xc8\xdd\xc9\xdd\xca\xdd\xcb\xdd\xcc\xdd\xcd\xdd\xce\xdd\xcf\xdd\xd0\xdd\xd1\xdd\xd2\xdd\xd3\xdd\xd4\xdd\xd5\xdd\xd6\xdd\xd7\xdd\xd8\xdd\xd9\xdd\xda\xdd\xdb\xdd\xdc\xdd\xdd\xdd\xde\xdd\xdf\xdd\xe0\xdd\xe1\xdd\xe2\xdd\xe3\xdd\xe4\xdd\xe5\xdd\xe6\xdd\xe7\xdd\xe8\xdd\xe9\xdd\xea\xdd\xeb\xdd\xec\xdd\xed", /* f480 */ "\xdd\xee\xdd\xef\xdd\xf0\xdd\xf1\xdd\xf2\xdd\xf3\xdd\xf4\xdd\xf5\xdd\xf6\xdd\xf7\xdd\xf8\xdd\xf9\xdd\xfa\xdd\xfb\xdd\xfc\xdd\xfd\xde\x41\xde\x42\xde\x43\xde\x44\xde\x45\xde\x46\xde\x47\xde\x48\xde\x49\xde\x4a\xde\x4b\xde\x4c\xde\x4d\xde\x4e\xde\x4f\xde\x50\xde\x51\xde\x52\xde\x53\xde\x54\xde\x55\xde\x56\xde\x57\xde\x58\xde\x59\xde\x5a\xde\x5b\xde\x5c\xde\x5d\xde\x5e\xde\x5f\xde\x60\xde\x61\xde\x62\xde\x63\xde\x64\xde\x65\xde\x66\xde\x67\xde\x68\xde\x69\xde\x6a\xde\x6b\xde\x6c\xde\x6d\xde\x6e\xde\x6f\xde\x70\xde\x71\xde\x72\xde\x73\xde\x74\xde\x75\xde\x76\xde\x77\xde\x78\xde\x79\xde\x7a\xde\x7b\xde\x7c\xde\x7d\xde\x7e\xde\x7f\xde\x81\xde\x82\xde\x83\xde\x84\xde\x85\xde\x86\xde\x87\xde\x88\xde\x89\xde\x8a\xde\x8b\xde\x8c\xde\x8d\xde\x8e\xde\x8f\xde\x90\xde\x91\xde\x92\xde\x93\xde\x94\xde\x95\xde\x96\xde\x97\xde\x98\xde\x99\xde\x9a\xde\x9b\xde\x9c\xde\x9d\xde\x9e\xde\x9f\xde\xa0\xde\xa1\xde\xa2\xde\xa3\xde\xa4\xde\xa5\xde\xa6\xde\xa7\xde\xa8\xde\xa9\xde\xaa\xde\xab\xde\xac\xde\xad\xde\xae\xde\xaf\xde\xb0\xde\xb1", /* f500 */ "\xde\xb2\xde\xb3\xde\xb4\xde\xb5\xde\xb6\xde\xb7\xde\xb8\xde\xb9\xde\xba\xde\xbb\xde\xbc\xde\xbd\xde\xbe\xde\xbf\xde\xc0\xde\xc1\xde\xc2\xde\xc3\xde\xc4\xde\xc5\xde\xc6\xde\xc7\xde\xc8\xde\xc9\xde\xca\xde\xcb\xde\xcc\xde\xcd\xde\xce\xde\xcf\xde\xd0\xde\xd1\xde\xd2\xde\xd3\xde\xd4\xde\xd5\xde\xd6\xde\xd7\xde\xd8\xde\xd9\xde\xda\xde\xdb\xde\xdc\xde\xdd\xde\xde\xde\xdf\xde\xe0\xde\xe1\xde\xe2\xde\xe3\xde\xe4\xde\xe5\xde\xe6\xde\xe7\xde\xe8\xde\xe9\xde\xea\xde\xeb\xde\xec\xde\xed\xde\xee\xde\xef\xde\xf0\xde\xf1\xde\xf2\xde\xf3\xde\xf4\xde\xf5\xde\xf6\xde\xf7\xde\xf8\xde\xf9\xde\xfa\xde\xfb\xde\xfc\xde\xfd\xdf\x41\xdf\x42\xdf\x43\xdf\x44\xdf\x45\xdf\x46\xdf\x47\xdf\x48\xdf\x49\xdf\x4a\xdf\x4b\xdf\x4c\xdf\x4d\xdf\x4e\xdf\x4f\xdf\x50\xdf\x51\xdf\x52\xdf\x53\xdf\x54\xdf\x55\xdf\x56\xdf\x57\xdf\x58\xdf\x59\xdf\x5a\xdf\x5b\xdf\x5c\xdf\x5d\xdf\x5e\xdf\x5f\xdf\x60\xdf\x61\xdf\x62\xdf\x63\xdf\x64\xdf\x65\xdf\x66\xdf\x67\xdf\x68\xdf\x69\xdf\x6a\xdf\x6b\xdf\x6c\xdf\x6d\xdf\x6e\xdf\x6f\xdf\x70\xdf\x71\xdf\x72\xdf\x73\xdf\x74", /* f580 */ "\xdf\x75\xdf\x76\xdf\x77\xdf\x78\xdf\x79\xdf\x7a\xdf\x7b\xdf\x7c\xdf\x7d\xdf\x7e\xdf\x7f\xdf\x81\xdf\x82\xdf\x83\xdf\x84\xdf\x85\xdf\x86\xdf\x87\xdf\x88\xdf\x89\xdf\x8a\xdf\x8b\xdf\x8c\xdf\x8d\xdf\x8e\xdf\x8f\xdf\x90\xdf\x91\xdf\x92\xdf\x93\xdf\x94\xdf\x95\xdf\x96\xdf\x97\xdf\x98\xdf\x99\xdf\x9a\xdf\x9b\xdf\x9c\xdf\x9d\xdf\x9e\xdf\x9f\xdf\xa0\xdf\xa1\xdf\xa2\xdf\xa3\xdf\xa4\xdf\xa5\xdf\xa6\xdf\xa7\xdf\xa8\xdf\xa9\xdf\xaa\xdf\xab\xdf\xac\xdf\xad\xdf\xae\xdf\xaf\xdf\xb0\xdf\xb1\xdf\xb2\xdf\xb3\xdf\xb4\xdf\xb5\xdf\xb6\xdf\xb7\xdf\xb8\xdf\xb9\xdf\xba\xdf\xbb\xdf\xbc\xdf\xbd\xdf\xbe\xdf\xbf\xdf\xc0\xdf\xc1\xdf\xc2\xdf\xc3\xdf\xc4\xdf\xc5\xdf\xc6\xdf\xc7\xdf\xc8\xdf\xc9\xdf\xca\xdf\xcb\xdf\xcc\xdf\xcd\xdf\xce\xdf\xcf\xdf\xd0\xdf\xd1\xdf\xd2\xdf\xd3\xdf\xd4\xdf\xd5\xdf\xd6\xdf\xd7\xdf\xd8\xdf\xd9\xdf\xda\xdf\xdb\xdf\xdc\xdf\xdd\xdf\xde\xdf\xdf\xdf\xe0\xdf\xe1\xdf\xe2\xdf\xe3\xdf\xe4\xdf\xe5\xdf\xe6\xdf\xe7\xdf\xe8\xdf\xe9\xdf\xea\xdf\xeb\xdf\xec\xdf\xed\xdf\xee\xdf\xef\xdf\xf0\xdf\xf1\xdf\xf2\xdf\xf3\xdf\xf4\xdf\xf5", /* f600 */ "\xdf\xf6\xdf\xf7\xdf\xf8\xdf\xf9\xdf\xfa\xdf\xfb\xdf\xfc\xdf\xfd\xe0\x41\xe0\x42\xe0\x43\xe0\x44\xe0\x45\xe0\x46\xe0\x47\xe0\x48\xe0\x49\xe0\x4a\xe0\x4b\xe0\x4c\xe0\x4d\xe0\x4e\xe0\x4f\xe0\x50\xe0\x51\xe0\x52\xe0\x53\xe0\x54\xe0\x55\xe0\x56\xe0\x57\xe0\x58\xe0\x59\xe0\x5a\xe0\x5b\xe0\x5c\xe0\x5d\xe0\x5e\xe0\x5f\xe0\x60\xe0\x61\xe0\x62\xe0\x63\xe0\x64\xe0\x65\xe0\x66\xe0\x67\xe0\x68\xe0\x69\xe0\x6a\xe0\x6b\xe0\x6c\xe0\x6d\xe0\x6e\xe0\x6f\xe0\x70\xe0\x71\xe0\x72\xe0\x73\xe0\x74\xe0\x75\xe0\x76\xe0\x77\xe0\x78\xe0\x79\xe0\x7a\xe0\x7b\xe0\x7c\xe0\x7d\xe0\x7e\xe0\x7f\xe0\x81\xe0\x82\xe0\x83\xe0\x84\xe0\x85\xe0\x86\xe0\x87\xe0\x88\xe0\x89\xe0\x8a\xe0\x8b\xe0\x8c\xe0\x8d\xe0\x8e\xe0\x8f\xe0\x90\xe0\x91\xe0\x92\xe0\x93\xe0\x94\xe0\x95\xe0\x96\xe0\x97\xe0\x98\xe0\x99\xe0\x9a\xe0\x9b\xe0\x9c\xe0\x9d\xe0\x9e\xe0\x9f\xe0\xa0\xe0\xa1\xe0\xa2\xe0\xa3\xe0\xa4\xe0\xa5\xe0\xa6\xe0\xa7\xe0\xa8\xe0\xa9\xe0\xaa\xe0\xab\xe0\xac\xe0\xad\xe0\xae\xe0\xaf\xe0\xb0\xe0\xb1\xe0\xb2\xe0\xb3\xe0\xb4\xe0\xb5\xe0\xb6\xe0\xb7\xe0\xb8\xe0\xb9", /* f680 */ "\xe0\xba\xe0\xbb\xe0\xbc\xe0\xbd\xe0\xbe\xe0\xbf\xe0\xc0\xe0\xc1\xe0\xc2\xe0\xc3\xe0\xc4\xe0\xc5\xe0\xc6\xe0\xc7\xe0\xc8\xe0\xc9\xe0\xca\xe0\xcb\xe0\xcc\xe0\xcd\xe0\xce\xe0\xcf\xe0\xd0\xe0\xd1\xe0\xd2\xe0\xd3\xe0\xd4\xe0\xd5\xe0\xd6\xe0\xd7\xe0\xd8\xe0\xd9\xe0\xda\xe0\xdb\xe0\xdc\xe0\xdd\xe0\xde\xe0\xdf\xe0\xe0\xe0\xe1\xe0\xe2\xe0\xe3\xe0\xe4\xe0\xe5\xe0\xe6\xe0\xe7\xe0\xe8\xe0\xe9\xe0\xea\xe0\xeb\xe0\xec\xe0\xed\xe0\xee\xe0\xef\xe0\xf0\xe0\xf1\xe0\xf2\xe0\xf3\xe0\xf4\xe0\xf5\xe0\xf6\xe0\xf7\xe0\xf8\xe0\xf9\xe0\xfa\xe0\xfb\xe0\xfc\xe0\xfd\xe1\x41\xe1\x42\xe1\x43\xe1\x44\xe1\x45\xe1\x46\xe1\x47\xe1\x48\xe1\x49\xe1\x4a\xe1\x4b\xe1\x4c\xe1\x4d\xe1\x4e\xe1\x4f\xe1\x50\xe1\x51\xe1\x52\xe1\x53\xe1\x54\xe1\x55\xe1\x56\xe1\x57\xe1\x58\xe1\x59\xe1\x5a\xe1\x5b\xe1\x5c\xe1\x5d\xe1\x5e\xe1\x5f\xe1\x60\xe1\x61\xe1\x62\xe1\x63\xe1\x64\xe1\x65\xe1\x66\xe1\x67\xe1\x68\xe1\x69\xe1\x6a\xe1\x6b\xe1\x6c\xe1\x6d\xe1\x6e\xe1\x6f\xe1\x70\xe1\x71\xe1\x72\xe1\x73\xe1\x74\xe1\x75\xe1\x76\xe1\x77\xe1\x78\xe1\x79\xe1\x7a\xe1\x7b\xe1\x7c", /* f700 */ "\xe1\x7d\xe1\x7e\xe1\x7f\xe1\x81\xe1\x82\xe1\x83\xe1\x84\xe1\x85\xe1\x86\xe1\x87\xe1\x88\xe1\x89\xe1\x8a\xe1\x8b\xe1\x8c\xe1\x8d\xe1\x8e\xe1\x8f\xe1\x90\xe1\x91\xe1\x92\xe1\x93\xe1\x94\xe1\x95\xe1\x96\xe1\x97\xe1\x98\xe1\x99\xe1\x9a\xe1\x9b\xe1\x9c\xe1\x9d\xe1\x9e\xe1\x9f\xe1\xa0\xe1\xa1\xe1\xa2\xe1\xa3\xe1\xa4\xe1\xa5\xe1\xa6\xe1\xa7\xe1\xa8\xe1\xa9\xe1\xaa\xe1\xab\xe1\xac\xe1\xad\xe1\xae\xe1\xaf\xe1\xb0\xe1\xb1\xe1\xb2\xe1\xb3\xe1\xb4\xe1\xb5\xe1\xb6\xe1\xb7\xe1\xb8\xe1\xb9\xe1\xba\xe1\xbb\xe1\xbc\xe1\xbd\xe1\xbe\xe1\xbf\xe1\xc0\xe1\xc1\xe1\xc2\xe1\xc3\xe1\xc4\xe1\xc5\xe1\xc6\xe1\xc7\xe1\xc8\xe1\xc9\xe1\xca\xe1\xcb\xe1\xcc\xe1\xcd\xe1\xce\xe1\xcf\xe1\xd0\xe1\xd1\xe1\xd2\xe1\xd3\xe1\xd4\xe1\xd5\xe1\xd6\xe1\xd7\xe1\xd8\xe1\xd9\xe1\xda\xe1\xdb\xe1\xdc\xe1\xdd\xe1\xde\xe1\xdf\xe1\xe0\xe1\xe1\xe1\xe2\xe1\xe3\xe1\xe4\xe1\xe5\xe1\xe6\xe1\xe7\xe1\xe8\xe1\xe9\xe1\xea\xe1\xeb\xe1\xec\xe1\xed\xe1\xee\xe1\xef\xe1\xf0\xe1\xf1\xe1\xf2\xe1\xf3\xe1\xf4\xe1\xf5\xe1\xf6\xe1\xf7\xe1\xf8\xe1\xf9\xe1\xfa\xe1\xfb\xe1\xfc\xe1\xfd", /* f780 */ "\xe2\x41\xe2\x42\xe2\x43\xe2\x44\xe2\x45\xe2\x46\xe2\x47\xe2\x48\xe2\x49\xe2\x4a\xe2\x4b\xe2\x4c\xe2\x4d\xe2\x4e\xe2\x4f\xe2\x50\xe2\x51\xe2\x52\xe2\x53\xe2\x54\xe2\x55\xe2\x56\xe2\x57\xe2\x58\xe2\x59\xe2\x5a\xe2\x5b\xe2\x5c\xe2\x5d\xe2\x5e\xe2\x5f\xe2\x60\xe2\x61\xe2\x62\xe2\x63\xe2\x64\xe2\x65\xe2\x66\xe2\x67\xe2\x68\xe2\x69\xe2\x6a\xe2\x6b\xe2\x6c\xe2\x6d\xe2\x6e\xe2\x6f\xe2\x70\xe2\x71\xe2\x72\xe2\x73\xe2\x74\xe2\x75\xe2\x76\xe2\x77\xe2\x78\xe2\x79\xe2\x7a\xe2\x7b\xe2\x7c\xe2\x7d\xe2\x7e\xe2\x7f\xe2\x81\xe2\x82\xe2\x83\xe2\x84\xe2\x85\xe2\x86\xe2\x87\xe2\x88\xe2\x89\xe2\x8a\xe2\x8b\xe2\x8c\xe2\x8d\xe2\x8e\xe2\x8f\xe2\x90\xe2\x91\xe2\x92\xe2\x93\xe2\x94\xe2\x95\xe2\x96\xe2\x97\xe2\x98\xe2\x99\xe2\x9a\xe2\x9b\xe2\x9c\xe2\x9d\xe2\x9e\xe2\x9f\xe2\xa0\xe2\xa1\xe2\xa2\xe2\xa3\xe2\xa4\xe2\xa5\xe2\xa6\xe2\xa7\xe2\xa8\xe2\xa9\xe2\xaa\xe2\xab\xe2\xac\xe2\xad\xe2\xae\xe2\xaf\xe2\xb0\xe2\xb1\xe2\xb2\xe2\xb3\xe2\xb4\xe2\xb5\xe2\xb6\xe2\xb7\xe2\xb8\xe2\xb9\xe2\xba\xe2\xbb\xe2\xbc\xe2\xbd\xe2\xbe\xe2\xbf\xe2\xc0\xe2\xc1", /* f800 */ "\xe2\xc2\xe2\xc3\xe2\xc4\xe2\xc5\xe2\xc6\xe2\xc7\xe2\xc8\xe2\xc9\xe2\xca\xe2\xcb\xe2\xcc\xe2\xcd\xe2\xce\xe2\xcf\xe2\xd0\xe2\xd1\xe2\xd2\xe2\xd3\xe2\xd4\xe2\xd5\xe2\xd6\xe2\xd7\xe2\xd8\xe2\xd9\xe2\xda\xe2\xdb\xe2\xdc\xe2\xdd\xe2\xde\xe2\xdf\xe2\xe0\xe2\xe1\xe2\xe2\xe2\xe3\xe2\xe4\xe2\xe5\xe2\xe6\xe2\xe7\xe2\xe8\xe2\xe9\xe2\xea\xe2\xeb\xe2\xec\xe2\xed\xe2\xee\xe2\xef\xe2\xf0\xe2\xf1\xe2\xf2\xe2\xf3\xe2\xf4\xe2\xf5\xe2\xf6\xe2\xf7\xe2\xf8\xe2\xf9\xe2\xfa\xe2\xfb\xe2\xfc\xe2\xfd\x00\x00\x00\x00\x44\x5c\x46\xa8\x46\xa9\x46\xaa\x46\xab\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* f880 */ NULL, /* f900 */ NULL, /* f980 */ NULL, /* fa00 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x69\x4b\x7a\xa4\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* fa80 */ NULL, /* fb00 */ NULL, /* fb80 */ NULL, /* fc00 */ NULL, /* fc80 */ NULL, /* fd00 */ NULL, /* fd80 */ NULL, /* fe00 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x47\x41\x46\xa7\x47\x49\x46\xb6\x46\xbc\x46\xac\x46\xad\x46\xae\x46\xaf\x46\xb0\x46\xb1\x46\xa4\x46\xa5\x46\xb2\x46\xb3\x46\xb4\x46\xb5\x46\xa0\x46\xa1\x46\xa2\x46\xa3\x00\x00\x00\x00\x00\x00\x00\x00\x46\xbe\x46\xbf\x46\xc2\x46\xc3\x46\xc0\x46\xc1\x46\xbd\x47\x42\x47\x43\x47\x44\x00\x00\x47\x45\x47\x46\x47\x47\x47\x48\x47\x4a\x47\x4b\x47\x4c\x47\x4d\x47\x4e\x47\x4f\x47\x50\x47\x53\x47\x54\x46\xc4\x47\x55\x47\x56\x47\x57\x47\x58\x47\x59\x00\x00\x47\x5a\x47\x5b\x47\x5c\x47\x5d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* fe80 */ NULL, /* ff00 */ "\x00\x00\x42\x5a\x42\x7f\x42\x7b\x42\xe0\x42\x6c\x42\x50\x42\x7d\x42\x4d\x42\x5d\x46\xb8\x42\x4e\x42\x6b\x42\x60\x42\x4b\x42\x61\x42\xf0\x42\xf1\x42\xf2\x42\xf3\x42\xf4\x42\xf5\x42\xf6\x42\xf7\x42\xf8\x42\xf9\x42\x7a\x42\x5e\x42\x4c\x42\x7e\x42\x6e\x42\x6f\x42\x7c\x42\xc1\x42\xc2\x42\xc3\x42\xc4\x42\xc5\x42\xc6\x42\xc7\x42\xc8\x42\xc9\x42\xd1\x42\xd2\x42\xd3\x42\xd4\x42\xd5\x42\xd6\x42\xd7\x42\xd8\x42\xd9\x42\xe2\x42\xe3\x42\xe4\x42\xe5\x42\xe6\x42\xe7\x42\xe8\x42\xe9\x44\x44\x43\xe0\x44\x45\x44\x70\x42\x6d\x00\x00\x42\x81\x42\x82\x42\x83\x42\x84\x42\x85\x42\x86\x42\x87\x42\x88\x42\x89\x42\x91\x42\x92\x42\x93\x42\x94\x42\x95\x42\x96\x42\x97\x42\x98\x42\x99\x42\xa2\x42\xa3\x42\xa4\x42\xa5\x42\xa6\x42\xa7\x42\xa8\x42\xa9\x42\xc0\x42\x4f\x42\xd0\x43\xa1\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* ff80 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x43\x4a\x42\x4a\x42\x5f\x47\x51\x42\x6a\x42\x5b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" }, /* EBCDIC DBCS to Unicode translation table for ibm-937_P110-1999 */ { /* 0000 */ NULL, /* 0080 */ NULL, /* 0100 */ NULL, /* 0180 */ NULL, /* 0200 */ NULL, /* 0280 */ NULL, /* 0300 */ NULL, /* 0380 */ NULL, /* 0400 */ NULL, /* 0480 */ NULL, /* 0500 */ NULL, /* 0580 */ NULL, /* 0600 */ NULL, /* 0680 */ NULL, /* 0700 */ NULL, /* 0780 */ NULL, /* 0800 */ NULL, /* 0880 */ NULL, /* 0900 */ NULL, /* 0980 */ NULL, /* 0a00 */ NULL, /* 0a80 */ NULL, /* 0b00 */ NULL, /* 0b80 */ NULL, /* 0c00 */ NULL, /* 0c80 */ NULL, /* 0d00 */ NULL, /* 0d80 */ NULL, /* 0e00 */ NULL, /* 0e80 */ NULL, /* 0f00 */ NULL, /* 0f80 */ NULL, /* 1000 */ NULL, /* 1080 */ NULL, /* 1100 */ NULL, /* 1180 */ NULL, /* 1200 */ NULL, /* 1280 */ NULL, /* 1300 */ NULL, /* 1380 */ NULL, /* 1400 */ NULL, /* 1480 */ NULL, /* 1500 */ NULL, /* 1580 */ NULL, /* 1600 */ NULL, /* 1680 */ NULL, /* 1700 */ NULL, /* 1780 */ NULL, /* 1800 */ NULL, /* 1880 */ NULL, /* 1900 */ NULL, /* 1980 */ NULL, /* 1a00 */ NULL, /* 1a80 */ NULL, /* 1b00 */ NULL, /* 1b80 */ NULL, /* 1c00 */ NULL, /* 1c80 */ NULL, /* 1d00 */ NULL, /* 1d80 */ NULL, /* 1e00 */ NULL, /* 1e80 */ NULL, /* 1f00 */ NULL, /* 1f80 */ NULL, /* 2000 */ NULL, /* 2080 */ NULL, /* 2100 */ NULL, /* 2180 */ NULL, /* 2200 */ NULL, /* 2280 */ NULL, /* 2300 */ NULL, /* 2380 */ NULL, /* 2400 */ NULL, /* 2480 */ NULL, /* 2500 */ NULL, /* 2580 */ NULL, /* 2600 */ NULL, /* 2680 */ NULL, /* 2700 */ NULL, /* 2780 */ NULL, /* 2800 */ NULL, /* 2880 */ NULL, /* 2900 */ NULL, /* 2980 */ NULL, /* 2a00 */ NULL, /* 2a80 */ NULL, /* 2b00 */ NULL, /* 2b80 */ NULL, /* 2c00 */ NULL, /* 2c80 */ NULL, /* 2d00 */ NULL, /* 2d80 */ NULL, /* 2e00 */ NULL, /* 2e80 */ NULL, /* 2f00 */ NULL, /* 2f80 */ NULL, /* 3000 */ NULL, /* 3080 */ NULL, /* 3100 */ NULL, /* 3180 */ NULL, /* 3200 */ NULL, /* 3280 */ NULL, /* 3300 */ NULL, /* 3380 */ NULL, /* 3400 */ NULL, /* 3480 */ NULL, /* 3500 */ NULL, /* 3580 */ NULL, /* 3600 */ NULL, /* 3680 */ NULL, /* 3700 */ NULL, /* 3780 */ NULL, /* 3800 */ NULL, /* 3880 */ NULL, /* 3900 */ NULL, /* 3980 */ NULL, /* 3a00 */ NULL, /* 3a80 */ NULL, /* 3b00 */ NULL, /* 3b80 */ NULL, /* 3c00 */ NULL, /* 3c80 */ NULL, /* 3d00 */ NULL, /* 3d80 */ NULL, /* 3e00 */ NULL, /* 3e80 */ NULL, /* 3f00 */ NULL, /* 3f80 */ NULL, /* 4000 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x30\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 4080 */ NULL, /* 4100 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\xb1\x03\xb2\x03\xb3\x03\xb4\x03\xb5\x03\xb6\x03\xb7\x03\xb8\x03\xb9\x03\xba\x03\xbb\x03\xbc\x03\xbd\x03\xbe\x03\xbf\x03\xc0\x03\xc1\x03\xc3\x03\xc4\x03\xc5\x03\xc6\x03\xc7\x03\xc8\x03\xc9\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x91\x03\x92\x03\x93\x03\x94\x03\x95\x03\x96\x03\x97\x03\x98\x03\x99\x03\x9a\x03\x9b\x03\x9c\x03\x9d\x03\x9e\x03\x9f\x03\xa0\x03\xa1\x03\xa3\x03\xa4\x03\xa5\x03\xa6\x03\xa7\x03\xa8\x03\xa9\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 4180 */ "\x04\x30\x04\x31\x04\x32\x04\x33\x04\x34\x04\x35\x04\x51\x04\x36\x04\x37\x04\x38\x04\x39\x04\x3a\x04\x3b\x04\x3c\x04\x3d\x04\x3e\x04\x3f\x04\x40\x04\x41\x04\x42\x04\x43\x04\x44\x04\x45\x04\x46\x04\x47\x04\x48\x04\x49\x04\x4a\x04\x4b\x04\x4c\x04\x4d\x04\x4e\x04\x4f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x21\x70\x21\x71\x21\x72\x21\x73\x21\x74\x21\x75\x21\x76\x21\x77\x21\x78\x21\x79\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\x10\x04\x11\x04\x12\x04\x13\x04\x14\x04\x15\x04\x01\x04\x16\x04\x17\x04\x18\x04\x19\x04\x1a\x04\x1b\x04\x1c\x04\x1d\x04\x1e\x04\x1f\x04\x20\x04\x21\x04\x22\x04\x23\x04\x24\x04\x25\x04\x26\x04\x27\x04\x28\x04\x29\x04\x2a\x04\x2b\x04\x2c\x04\x2d\x04\x2e\x04\x2f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x21\x60\x21\x61\x21\x62\x21\x63\x21\x64\x21\x65\x21\x66\x21\x67\x21\x68\x21\x69\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 4200 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xe1\xff\x0e\xff\x1c\xff\x08\xff\x0b\xff\x5c\xff\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\x01\xff\xe5\x27\x3d\xff\x09\xff\x1b\xff\xe2\xff\x0d\xff\x0f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xe4\xff\x0c\xff\x05\xff\x3f\xff\x1e\xff\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x35\xff\x1a\xff\x03\xff\x20\xff\x07\xff\x1d\xff\x02", /* 4280 */ "\x00\x00\xff\x41\xff\x42\xff\x43\xff\x44\xff\x45\xff\x46\xff\x47\xff\x48\xff\x49\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\x4a\xff\x4b\xff\x4c\xff\x4d\xff\x4e\xff\x4f\xff\x50\xff\x51\xff\x52\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x3e\xff\x53\xff\x54\xff\x55\xff\x56\xff\x57\xff\x58\xff\x59\xff\x5a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\x5b\xff\x21\xff\x22\xff\x23\xff\x24\xff\x25\xff\x26\xff\x27\xff\x28\xff\x29\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\x5d\xff\x2a\xff\x2b\xff\x2c\xff\x2d\xff\x2e\xff\x2f\xff\x30\xff\x31\xff\x32\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\x04\x00\x00\xff\x33\xff\x34\xff\x35\xff\x36\xff\x37\xff\x38\xff\x39\xff\x3a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\x10\xff\x11\xff\x12\xff\x13\xff\x14\xff\x15\xff\x16\xff\x17\xff\x18\xff\x19\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 4300 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x30\x02\x30\x0c\x30\x0d\x30\x01\x20\x27\x30\xf2\x30\xa1\x30\xa3\x30\xa5\xff\xe0\x00\x00\x00\x00\x23\x12\x22\x02\x22\x07\x00\x00\x30\xa7\x30\xa9\x30\xe3\x30\xe5\x30\xe7\x30\xc3\x30\xee\x30\xfc\x30\xf5\x30\xf6\x00\x00\x00\x00\x22\x6a\x22\x6b\x00\x00\x22\x3d\x22\x1d\x00\x00\x22\x2c\x22\x08\x22\x0b\x22\x86\x22\x87\x22\x82\x22\x83\x00\x00\x00\x00\x22\x27\x22\x28\x21\xd2\x21\xd4\x22\x00\x22\x03\x21\x2b\x20\x30\x26\x6f\x26\x6d\x26\x6a\x20\x20\x20\x21\x00\xb6\x25\xef\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 4380 */ "\x00\x00\x30\xa2\x30\xa4\x30\xa6\x30\xa8\x30\xaa\x30\xab\x30\xad\x30\xaf\x30\xb1\x30\xb3\x00\x00\x30\xb5\x30\xb7\x30\xb9\x30\xbb\x30\xbd\x30\xbf\x30\xc1\x30\xc4\x30\xc6\x30\xc8\x30\xca\x30\xcb\x30\xcc\x30\xcd\x30\xce\x00\x00\x00\x00\x30\xcf\x30\xd2\x30\xd5\x00\x00\xff\x5e\x30\xd8\x30\xdb\x30\xde\x30\xdf\x30\xe0\x30\xe1\x30\xe2\x30\xe4\x30\xe6\x00\x00\x30\xe8\x30\xe9\x30\xea\x30\xeb\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x25\x01\x25\x03\x25\x0f\x30\xec\x30\xed\x30\xef\x30\xf3\x30\x9b\x30\x9c\x30\xac\x30\xae\x30\xb0\x30\xb2\x30\xb4\x30\xb6\x30\xb8\x30\xba\x30\xbc\x30\xbe\x30\xc0\x30\xc2\x30\xc5\x30\xc7\x30\xc9\x30\xd0\x30\xd3\x30\xd6\x30\xd9\x30\xdc\x30\xf4\x30\xd1\x30\xd4\x30\xd7\x30\xda\x30\xdd\x30\xf0\x30\xf1\x30\xfd\x30\xfe\x00\x00\x00\x00\xff\x3c\x25\x13\x25\x1b\x25\x17\x25\x23\x25\x33\x25\x2b\x25\x3b\x25\x4b\x25\x20\x25\x2f\x25\x28\x25\x37\x25\x3f\x25\x1d\x25\x30\x25\x25\x25\x38\x25\x42\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 4400 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x30\x0e\x30\x0f\xff\x3b\xff\x3d\x30\x92\x30\x41\x30\x43\x30\x45\x20\x14\x00\xb1\x22\x60\x22\x1e\x21\x03\x00\x00\x20\x32\x30\x47\x30\x49\x30\x83\x30\x85\x30\x87\x30\x63\x30\x8e\x00\x00\x00\x00\x20\x10\x02\xba\xf8\x3e\x30\x05\x30\x06\x30\x07\x00\xa8\x20\x18\x20\x1c\x30\x14\x30\x08\x30\x0a\x30\x10\x22\x66\x22\x34\x26\x42\x00\xa7\x20\x3b\x30\x12\x32\x31\x21\x16\x21\x21\xff\x3e\x20\x19\x20\x1d\x30\x15\x30\x09\x30\x0b\x30\x11\x22\x67\x22\x35\x26\x40\x00\xd7\x00\xf7\x22\x25\x30\x13\x20\x25\x20\x26", /* 4480 */ "\x00\x00\x30\x42\x30\x44\x30\x46\x30\x48\x30\x4a\x30\x4b\x30\x4d\x30\x4f\x30\x51\x30\x53\x00\x00\x30\x55\x30\x57\x30\x59\x30\x5b\x30\x5d\x30\x5f\x30\x61\x30\x64\x30\x66\x30\x68\x30\x6a\x30\x6b\x30\x6c\x30\x6d\x30\x6e\x00\x00\x00\x00\x30\x6f\x30\x72\x30\x75\x00\x00\x00\x00\x30\x78\x30\x7b\x30\x7e\x30\x7f\x30\x80\x30\x81\x30\x82\x30\x84\x30\x86\x00\x00\x30\x88\x30\x89\x30\x8a\x30\x8b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x30\x8c\x30\x8d\x30\x8f\x30\x93\x00\x00\x00\x00\x30\x4c\x30\x4e\x30\x50\x30\x52\x30\x54\x30\x56\x30\x58\x30\x5a\x30\x5c\x30\x5e\x30\x60\x30\x62\x30\x65\x30\x67\x30\x69\x30\x70\x30\x73\x30\x76\x30\x79\x30\x7c\x00\x00\x30\x71\x30\x74\x30\x77\x30\x7a\x30\x7d\x30\x90\x30\x91\x30\x9d\x30\x9e\x00\x00\x00\x00\x25\xcb\x25\xcf\x25\xb3\x25\xb2\x25\xce\x26\x06\x26\x05\x25\xc7\x25\xc6\x25\xa1\x25\xa0\x25\xbd\x25\xbc\x00\xb0\x00\xb4\x20\x33\x21\x92\x21\x90\x21\x91\x21\x93\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 4500 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x30\x21\x30\x22\x30\x23\x30\x24\x30\x25\x30\x26\x30\x27\x30\x28\x30\x29\x53\x41\x53\x44\x53\x45\x00\x00\x00\x00\x00\x00\x00\x00\x02\xc9\x02\xca\x02\xc7\x02\xcb\x02\xd9\x31\x05\x31\x06\x31\x07\x31\x08\x31\x09\x31\x0a\x31\x0b\x31\x0c\x31\x0d\x31\x0e\x31\x0f\x31\x10\x31\x11\x31\x12\x31\x13\x31\x14\x31\x15\x31\x16\x31\x17\x31\x18\x31\x19\x31\x1a\x31\x1b\x31\x1c\x31\x1d\x31\x1e\x31\x1f\x31\x20\x31\x21\x31\x22\x31\x23\x31\x24\x31\x25\x31\x26\x31\x27\x31\x28\x31\x29\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 4580 */ NULL, /* 4600 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x24\x60\x24\x61\x24\x62\x24\x63\x24\x64\x24\x65\x24\x66\x24\x67\x24\x68\x24\x69\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x24\x74\x24\x75\x24\x76\x24\x77\x24\x78\x24\x79\x24\x7a\x24\x7b\x24\x7c\x24\x7d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x25\x81\x25\x82\x25\x83\x25\x84\x25\x85\x25\x86\x25\x87\x25\x88\x25\x8f\x25\x8e\x25\x8d\x25\x8c\x25\x8b\x25\x8a\x25\x89\x25\x3c\x25\x34\x25\x2c\x25\x24\x25\x1c\x25\x94\x25\x00\x25\x02\x25\x95\x25\x0c\x25\x10\x25\x14\x25\x18\x25\x6d\x25\x6e\x25\x70\x25\x6f", /* 4680 */ "\x00\x00\x25\x50\x25\x5e\x25\x6a\x25\x61\x25\xe2\x25\xe3\x25\xe5\x25\xe4\x25\x71\x25\x72\x25\x73\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xfe\x41\xfe\x42\xfe\x43\xfe\x44\xfe\x3b\xfe\x3c\x00\x00\xfe\x31\xf8\x3f\xf8\x40\xf8\x41\xf8\x42\xfe\x35\xfe\x36\xfe\x37\xfe\x38\xfe\x39\xfe\x3a\xfe\x3d\xfe\x3e\xfe\x3f\xfe\x40\xfe\x33\x25\x74\xff\x0a\x30\x03\x32\xa3\x21\x05\xfe\x34\xfe\x4f\xfe\x49\xfe\x4a\xfe\x4d\xfe\x4e\xfe\x4b\xfe\x4c\xfe\x61\x22\x1a\x22\x52\x22\x61\x22\x29\x22\x2a\x22\xa5\x22\x20\x22\x1f\x22\xbf\x33\xd2\x33\xd1\x22\x2b\x22\x2e\x22\x95\x22\x99\x21\x96\x21\x97\x21\x99\x21\x98\x00\x00\x00\x00\x22\x15\x21\x09\x33\xd5\x33\x9c\x33\x9d\x33\x9e\x33\xce\x33\xa1\x33\x8e\x33\x8f\x33\xc4\x00\xb7\x00\x00\x00\x00\x00\x00\x30\x1d\x30\x1e\x00\x00\x00\x00\x00\x00\x21\xe7\x21\xb8\x21\xb9\x51\x59\x51\x5b\x51\x5e\x51\x5d\x51\x61\x51\x63\x55\xe7\x74\xe9\x7c\xce\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 4700 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xfe\x30\xfe\x50\xfe\x51\xfe\x52\xfe\x54\xfe\x55\xfe\x56\xfe\x57\xfe\x32\xfe\x58\xfe\x59\xfe\x5a\xfe\x5b\xfe\x5c\xfe\x5d\xfe\x5e\xff\xe3\x02\xcd\xfe\x5f\xfe\x60\xfe\x62\xfe\x63\xfe\x64\xfe\x65\xfe\x66\xfe\x68\xfe\x69\xfe\x6a\xfe\x6b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 4780 */ "\x00\x00\x24\x00\x24\x01\x24\x02\x24\x03\x24\x04\x24\x05\x24\x06\x24\x07\x24\x08\x24\x09\x24\x0a\x24\x0b\x24\x0c\x24\x0d\x24\x0e\x24\x0f\x24\x10\x24\x11\x24\x12\x24\x13\x24\x14\x24\x15\x24\x16\x24\x17\x24\x18\x24\x19\x24\x1a\x24\x1b\x24\x1c\x24\x1d\x24\x1e\x24\x1f\x24\x21\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 4800 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4e\x00\x4e\x28\x4e\x36\x4e\x3f\x4e\x59\x4e\x85\x4e\x8c\x4e\xa0\x4e\xba\x51\x3f\x51\x65\x51\x6b\x51\x82\x51\x96\x51\xab\x51\xe0\x51\xf5\x52\x00\x52\x9b\x52\xf9\x53\x15\x53\x1a\x53\x38\x53\x41\x53\x5c\x53\x69\x53\x82\x53\xb6\x53\xc8\x53\xe3\x56\xd7\x57\x1f\x58\xeb\x59\x0a\x59\x15\x59\x27\x59\x73\x5b\x50\x5b\x80\x5b\xf8\x5c\x0f\x5c\x22\x5c\x38\x5c\x6e\x5c\x71\x5d\xdb\x5d\xe5\x5d\xf1\x5d\xfe\x5e\x72\x5e\x7a\x5e\x7f\x5e\xf4\x5e\xfe\x5f\x0b\x5f\x13\x5f\x50\x5f\x61\x5f\x73\x5f\xc3\x62\x08\x62\x36\x62\x4b", /* 4880 */ "\x00\x00\x65\x2f\x65\x34\x65\x87\x65\x97\x65\xa4\x65\xb9\x65\xe0\x65\xe5\x66\xf0\x67\x08\x67\x28\x6b\x20\x6b\x62\x6b\x79\x6b\xb3\x6b\xcb\x6b\xd4\x6b\xdb\x6c\x0f\x6c\x14\x6c\x34\x70\x6b\x72\x2a\x72\x36\x72\x3b\x72\x3f\x72\x47\x72\x59\x72\x5b\x72\xac\x73\x84\x73\x89\x74\xdc\x74\xe6\x75\x18\x75\x1f\x75\x28\x75\x30\x75\x8b\x75\x92\x76\x76\x76\x7d\x76\xae\x76\xbf\x76\xee\x77\xdb\x77\xe2\x77\xf3\x79\x3a\x79\xb8\x79\xbe\x7a\x74\x7a\xcb\x7a\xf9\x7c\x73\x7c\xf8\x7f\x36\x7f\x51\x7f\x8a\x7f\xbd\x80\x01\x80\x0c\x80\x12\x80\x33\x80\x7f\x80\x89\x81\xe3\x81\xea\x81\xf3\x81\xfc\x82\x0c\x82\x1b\x82\x1f\x82\x6e\x82\x72\x82\x78\x86\x4d\x86\x6b\x88\x40\x88\x4c\x88\x63\x89\x7e\x89\x8b\x89\xd2\x8a\x00\x8c\x37\x8c\x46\x8c\x55\x8c\x78\x8c\x9d\x8d\x64\x8d\x70\x8d\xb3\x8e\xab\x8e\xca\x8f\x9b\x8f\xb0\x8f\xb5\x90\x91\x91\x49\x91\xc6\x91\xcc\x91\xd1\x95\x77\x95\x80\x96\x1c\x96\xb6\x96\xb9\x96\xe8\x97\x52\x97\x5e\x97\x62\x97\x69\x97\xcb\x97\xed\x97\xf3\x98\x01\x98\xa8\x98\xdb\x98\xdf\x99\x96\x99\x99\x99\xac\x9a\xa8\x9a\xd8\x00\x00\x00\x00", /* 4900 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x9a\xdf\x9b\x25\x9b\x2f\x9b\x32\x9b\x3c\x9b\x5a\x9c\xe5\x9e\x75\x9e\x7f\x9e\xa5\x9e\xbb\x9e\xc3\x9e\xcd\x9e\xd1\x9e\xf9\x9e\xfd\x9f\x0e\x9f\x13\x9f\x20\x9f\x3b\x9f\x4a\x9f\x52\x9f\x8d\x9f\x9c\x9f\xa0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 4980 */ NULL, /* 4a00 */ NULL, /* 4a80 */ NULL, /* 4b00 */ NULL, /* 4b80 */ NULL, /* 4c00 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4e\x00\x4e\x59\x4e\x01\x4e\x03\x4e\x43\x4e\x5d\x4e\x86\x4e\x8c\x4e\xba\x51\x3f\x51\x65\x51\x6b\x51\xe0\x52\x00\x52\x01\x52\x9b\x53\x15\x53\x41\x53\x5c\x53\xc8\x4e\x09\x4e\x0b\x4e\x08\x4e\x0a\x4e\x2b\x4e\x38\x51\xe1\x4e\x45\x4e\x48\x4e\x5f\x4e\x5e\x4e\x8e\x4e\xa1\x51\x40\x52\x03\x52\xfa\x53\x43\x53\xc9\x53\xe3\x57\x1f\x58\xeb\x59\x15\x59\x27\x59\x73\x5b\x50\x5b\x51\x5b\x53\x5b\xf8\x5c\x0f\x5c\x22\x5c\x38\x5c\x71\x5d\xdd\x5d\xe5\x5d\xf1\x5d\xf2\x5d\xf3\x5d\xfe\x5e\x72\x5e\xfe\x5f\x0b\x5f\x13\x62\x4d", /* 4c80 */ "\x00\x00\x4e\x11\x4e\x10\x4e\x0d\x4e\x2d\x4e\x30\x4e\x39\x4e\x4b\x5c\x39\x4e\x88\x4e\x91\x4e\x95\x4e\x92\x4e\x94\x4e\xa2\x4e\xc1\x4e\xc0\x4e\xc3\x4e\xc6\x4e\xc7\x4e\xcd\x4e\xca\x4e\xcb\x4e\xc4\x51\x43\x51\x41\x51\x67\x51\x6d\x51\x6e\x51\x6c\x51\x97\x51\xf6\x52\x06\x52\x07\x52\x08\x52\xfb\x52\xfe\x52\xff\x53\x16\x53\x39\x53\x48\x53\x47\x53\x45\x53\x5e\x53\x84\x53\xcb\x53\xca\x53\xcd\x58\xec\x59\x29\x59\x2b\x59\x2a\x59\x2d\x5b\x54\x5c\x11\x5c\x24\x5c\x3a\x5c\x6f\x5d\xf4\x5e\x7b\x5e\xff\x5f\x14\x5f\x15\x5f\xc3\x62\x08\x62\x36\x62\x4b\x62\x4e\x65\x2f\x65\x87\x65\x97\x65\xa4\x65\xb9\x65\xe5\x66\xf0\x67\x08\x67\x28\x6b\x20\x6b\x62\x6b\x79\x6b\xcb\x6b\xd4\x6b\xdb\x6c\x0f\x6c\x34\x70\x6b\x72\x2a\x72\x36\x72\x3b\x72\x47\x72\x59\x72\x5b\x72\xac\x73\x8b\x4e\x19\x4e\x16\x4e\x15\x4e\x14\x4e\x18\x4e\x3b\x4e\x4d\x4e\x4f\x4e\x4e\x4e\xe5\x4e\xd8\x4e\xd4\x4e\xd5\x4e\xd6\x4e\xd7\x4e\xe3\x4e\xe4\x4e\xd9\x4e\xde\x51\x45\x51\x44\x51\x89\x51\x8a\x51\xac\x51\xf9\x51\xfa\x51\xf8\x52\x0a\x52\xa0\x52\x9f\x53\x05\x53\x06\x00\x00\x00\x00", /* 4d00 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x53\x17\x53\x1d\x4e\xdf\x53\x4a\x53\x49\x53\x61\x53\x60\x53\x6f\x53\x6e\x53\xbb\x53\xef\x53\xe4\x53\xf3\x53\xec\x53\xee\x53\xe9\x53\xe8\x53\xfc\x53\xf8\x53\xf5\x53\xeb\x53\xe6\x53\xea\x53\xf2\x53\xf1\x53\xf0\x53\xe5\x53\xed\x53\xfb\x56\xdb\x56\xda\x59\x16\x59\x2e\x59\x31\x59\x74\x59\x76\x5b\x55\x5b\x83\x5c\x3c\x5d\xe8\x5d\xe7\x5d\xe6\x5e\x02\x5e\x03\x5e\x73\x5e\x7c\x5f\x01\x5f\x18\x5f\x17\x5f\xc5\x62\x0a\x62\x53\x62\x54\x62\x52\x62\x51\x65\xa5\x65\xe6\x67\x2e\x67\x2c\x67\x2a\x67\x2b\x67\x2d\x6b\x63", /* 4d80 */ "\x00\x00\x6b\xcd\x6c\x11\x6c\x10\x6c\x38\x6c\x41\x6c\x40\x6c\x3e\x72\xaf\x73\x84\x73\x89\x74\xdc\x74\xe6\x75\x18\x75\x1f\x75\x28\x75\x29\x75\x30\x75\x31\x75\x32\x75\x33\x75\x8b\x76\x7d\x76\xae\x76\xbf\x76\xee\x77\xdb\x77\xe2\x77\xf3\x79\x3a\x79\xbe\x7a\x74\x7a\xcb\x4e\x1e\x4e\x1f\x4e\x52\x4e\x53\x4e\x69\x4e\x99\x4e\xa4\x4e\xa6\x4e\xa5\x4e\xff\x4f\x09\x4f\x19\x4f\x0a\x4f\x15\x4f\x0d\x4f\x10\x4f\x11\x4f\x0f\x4e\xf2\x4e\xf6\x4e\xfb\x4e\xf0\x4e\xf3\x4e\xfd\x4f\x01\x4f\x0b\x51\x49\x51\x47\x51\x46\x51\x48\x51\x68\x51\x71\x51\x8d\x51\xb0\x52\x17\x52\x11\x52\x12\x52\x0e\x52\x16\x52\xa3\x53\x08\x53\x21\x53\x20\x53\x70\x53\x71\x54\x09\x54\x0f\x54\x0c\x54\x0a\x54\x10\x54\x01\x54\x0b\x54\x04\x54\x11\x54\x0d\x54\x08\x54\x03\x54\x0e\x54\x06\x54\x12\x56\xe0\x56\xde\x56\xdd\x57\x33\x57\x30\x57\x28\x57\x2d\x57\x2c\x57\x2f\x57\x29\x59\x19\x59\x1a\x59\x37\x59\x38\x59\x84\x59\x78\x59\x83\x59\x7d\x59\x79\x59\x82\x59\x81\x5b\x57\x5b\x58\x5b\x87\x5b\x88\x5b\x85\x5b\x89\x5b\xfa\x5c\x16\x5c\x79\x5d\xde\x5e\x06\x5e\x76\x00\x00\x00\x00", /* 4e00 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5e\x74\x5f\x0f\x5f\x1b\x5f\xd9\x5f\xd6\x62\x0e\x62\x0c\x62\x0d\x62\x10\x62\x63\x62\x5b\x62\x58\x65\x36\x65\xe9\x65\xe8\x65\xec\x65\xed\x66\xf2\x66\xf3\x67\x09\x67\x3d\x67\x34\x67\x31\x67\x35\x6b\x21\x6b\x64\x6b\x7b\x6c\x16\x6c\x5d\x6c\x57\x6c\x59\x6c\x5f\x6c\x60\x6c\x50\x6c\x55\x6c\x61\x6c\x5b\x6c\x4d\x6c\x4e\x70\x70\x72\x5f\x72\x5d\x76\x7e\x7a\xf9\x7c\x73\x7c\xf8\x7f\x36\x7f\x8a\x7f\xbd\x80\x01\x80\x03\x80\x0c\x80\x12\x80\x33\x80\x7f\x80\x89\x80\x8b\x80\x8c\x81\xe3\x81\xea\x81\xf3\x81\xfc\x82\x0c", /* 4e80 */ "\x00\x00\x82\x1b\x82\x1f\x82\x6e\x82\x72\x82\x7e\x86\x6b\x88\x40\x88\x4c\x88\x63\x89\x7f\x96\x21\x4e\x32\x4e\xa8\x4f\x4d\x4f\x4f\x4f\x47\x4f\x57\x4f\x5e\x4f\x34\x4f\x5b\x4f\x55\x4f\x30\x4f\x50\x4f\x51\x4f\x3d\x4f\x3a\x4f\x38\x4f\x43\x4f\x54\x4f\x3c\x4f\x46\x4f\x63\x4f\x5c\x4f\x60\x4f\x2f\x4f\x4e\x4f\x36\x4f\x59\x4f\x5d\x4f\x48\x4f\x5a\x51\x4c\x51\x4b\x51\x4d\x51\x75\x51\xb6\x51\xb7\x52\x25\x52\x24\x52\x29\x52\x2a\x52\x28\x52\xab\x52\xa9\x52\xaa\x52\xac\x53\x23\x53\x73\x53\x75\x54\x1d\x54\x2d\x54\x1e\x54\x3e\x54\x26\x54\x4e\x54\x27\x54\x46\x54\x43\x54\x33\x54\x48\x54\x42\x54\x1b\x54\x29\x54\x4a\x54\x39\x54\x3b\x54\x38\x54\x2e\x54\x35\x54\x36\x54\x20\x54\x3c\x54\x40\x54\x31\x54\x2b\x54\x1f\x54\x2c\x56\xea\x56\xf0\x56\xe4\x56\xeb\x57\x4a\x57\x51\x57\x40\x57\x4d\x57\x47\x57\x4e\x57\x3e\x57\x50\x57\x4f\x57\x3b\x58\xef\x59\x3e\x59\x9d\x59\x92\x59\xa8\x59\x9e\x59\xa3\x59\x99\x59\x96\x59\x8d\x59\xa4\x59\x93\x59\x8a\x59\xa5\x5b\x5d\x5b\x5c\x5b\x5a\x5b\x5b\x5b\x8c\x5b\x8b\x5b\x8f\x5c\x2c\x5c\x40\x5c\x41\x00\x00\x00\x00", /* 4f00 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5c\x3f\x5c\x3e\x5c\x90\x5c\x91\x5c\x94\x5c\x8c\x5d\xeb\x5e\x0c\x5e\x8f\x5e\x87\x5e\x8a\x5e\xf7\x5f\x04\x5f\x1f\x5f\x64\x5f\x62\x5f\x77\x5f\x79\x5f\xd8\x5f\xcc\x5f\xd7\x5f\xcd\x5f\xf1\x5f\xeb\x5f\xf8\x5f\xea\x62\x12\x62\x11\x62\x84\x62\x97\x62\x96\x62\x80\x62\x76\x62\x89\x62\x6d\x62\x8a\x62\x7c\x62\x7e\x62\x79\x62\x73\x62\x92\x62\x6f\x62\x98\x62\x6e\x62\x95\x62\x93\x62\x91\x62\x86\x65\x39\x65\x3b\x65\x38\x65\xf1\x66\xf4\x67\x5f\x67\x4e\x67\x4f\x67\x50\x67\x51\x67\x5c\x67\x56\x67\x5e\x67\x49\x67\x46", /* 4f80 */ "\x00\x00\x67\x60\x67\x53\x67\x57\x6b\x65\x6b\xcf\x6c\x42\x6c\x5e\x6c\x99\x6c\x81\x6c\x88\x6c\x89\x6c\x85\x6c\x9b\x6c\x6a\x6c\x7a\x6c\x90\x6c\x70\x6c\x8c\x6c\x68\x6c\x96\x6c\x92\x6c\x7d\x6c\x83\x6c\x72\x6c\x7e\x6c\x74\x6c\x86\x6c\x76\x6c\x8d\x6c\x94\x6c\x98\x6c\x82\x70\x76\x70\x7c\x70\x7d\x70\x78\x72\x62\x72\x61\x72\x60\x72\xc4\x72\xc2\x73\x96\x75\x2c\x75\x2b\x75\x37\x75\x38\x76\x82\x76\xef\x77\xe3\x79\xc1\x79\xc0\x79\xbf\x7a\x76\x7c\xfb\x7f\x55\x80\x96\x80\x93\x80\x9d\x80\x98\x80\x9b\x80\x9a\x80\xb2\x82\x6f\x82\x92\x82\x8b\x82\x8d\x89\x8b\x89\xd2\x8a\x00\x8c\x37\x8c\x46\x8c\x55\x8c\x9d\x8d\x64\x8d\x70\x8d\xb3\x8e\xab\x8e\xca\x8f\x9b\x8f\xb0\x8f\xc2\x8f\xc6\x8f\xc5\x8f\xc4\x5d\xe1\x90\x91\x90\xa2\x90\xaa\x90\xa6\x90\xa3\x91\x49\x91\xc6\x91\xcc\x96\x32\x96\x2e\x96\x31\x96\x2a\x96\x2c\x4e\x26\x4e\x56\x4e\x73\x4e\x8b\x4e\x9b\x4e\x9e\x4e\xab\x4e\xac\x4f\x6f\x4f\x9d\x4f\x8d\x4f\x73\x4f\x7f\x4f\x6c\x4f\x9b\x4f\x8b\x4f\x86\x4f\x83\x4f\x70\x4f\x75\x4f\x88\x4f\x69\x4f\x7b\x4f\x96\x4f\x7e\x4f\x8f\x4f\x91\x00\x00\x00\x00", /* 5000 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4f\x7a\x51\x54\x51\x52\x51\x55\x51\x69\x51\x77\x51\x76\x51\x78\x51\xbd\x51\xfd\x52\x3b\x52\x38\x52\x37\x52\x3a\x52\x30\x52\x2e\x52\x36\x52\x41\x52\xbe\x52\xbb\x53\x52\x53\x54\x53\x53\x53\x51\x53\x66\x53\x77\x53\x78\x53\x79\x53\xd6\x53\xd4\x53\xd7\x54\x73\x54\x75\x54\x96\x54\x78\x54\x95\x54\x80\x54\x7b\x54\x77\x54\x84\x54\x92\x54\x86\x54\x7c\x54\x90\x54\x71\x54\x76\x54\x8c\x54\x9a\x54\x62\x54\x68\x54\x8b\x54\x7d\x54\x8e\x56\xfa\x57\x83\x57\x77\x57\x6a\x57\x69\x57\x61\x57\x66\x57\x64\x57\x7c\x59\x1c", /* 5080 */ "\x00\x00\x59\x49\x59\x47\x59\x48\x59\x44\x59\x54\x59\xbe\x59\xbb\x59\xd4\x59\xb9\x59\xae\x59\xd1\x59\xc6\x59\xd0\x59\xcd\x59\xcb\x59\xd3\x59\xca\x59\xaf\x59\xb3\x59\xd2\x59\xc5\x5b\x5f\x5b\x64\x5b\x63\x5b\x97\x5b\x9a\x5b\x98\x5b\x9c\x5b\x99\x5b\x9b\x5c\x1a\x5c\x48\x5c\x45\x5c\x46\x5c\xb7\x5c\xa1\x5c\xb8\x5c\xa9\x5c\xab\x5c\xb1\x5c\xb3\x5e\x18\x5e\x1a\x5e\x16\x5e\x15\x5e\x1b\x5e\x11\x5e\x78\x5e\x9a\x5e\x97\x5e\x9c\x5e\x95\x5e\x96\x5e\xf6\x5f\x26\x5f\x27\x5f\x29\x5f\x80\x5f\x81\x5f\x7f\x5f\x7c\x5f\xdd\x5f\xe0\x5f\xfd\x5f\xf5\x5f\xff\x60\x0f\x60\x14\x60\x2f\x60\x35\x60\x16\x60\x2a\x60\x15\x60\x21\x60\x27\x60\x29\x60\x2b\x60\x1b\x62\x16\x62\x15\x62\x3f\x62\x3e\x62\x40\x62\x7f\x62\xc9\x62\xcc\x62\xc4\x62\xbf\x62\xc2\x62\xb9\x62\xd2\x62\xdb\x62\xab\x62\xd3\x62\xd4\x62\xcb\x62\xc8\x62\xa8\x62\xbd\x62\xbc\x62\xd0\x62\xd9\x62\xc7\x62\xcd\x62\xb5\x62\xda\x62\xb1\x62\xd8\x62\xd6\x62\xd7\x62\xc6\x62\xac\x62\xce\x65\x3e\x65\xa7\x65\xbc\x65\xfa\x66\x14\x66\x13\x66\x0c\x66\x06\x66\x02\x66\x0e\x66\x00\x66\x0f\x00\x00\x00\x00", /* 5100 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x66\x15\x66\x0a\x66\x07\x67\x0d\x67\x0b\x67\x6d\x67\x8b\x67\x95\x67\x71\x67\x9c\x67\x73\x67\x77\x67\x87\x67\x9d\x67\x97\x67\x6f\x67\x70\x67\x7f\x67\x89\x67\x7e\x67\x90\x67\x75\x67\x9a\x67\x93\x67\x7c\x67\x6a\x67\x72\x6b\x23\x6b\x66\x6b\x67\x6b\x7f\x6c\x13\x6c\x1b\x6c\xe3\x6c\xe8\x6c\xf3\x6c\xb1\x6c\xcc\x6c\xe5\x6c\xb3\x6c\xbd\x6c\xbe\x6c\xbc\x6c\xe2\x6c\xab\x6c\xd5\x6c\xd3\x6c\xb8\x6c\xc4\x6c\xb9\x6c\xc1\x6c\xae\x6c\xd7\x6c\xc5\x6c\xf1\x6c\xbf\x6c\xbb\x6c\xe1\x6c\xdb\x6c\xca\x6c\xac\x6c\xef\x6c\xdc", /* 5180 */ "\x00\x00\x6c\xd6\x6c\xe0\x70\x95\x70\x8e\x70\x92\x70\x8a\x70\x99\x72\x2c\x72\x2d\x72\x38\x72\x48\x72\x67\x72\x69\x72\xc0\x72\xce\x72\xd9\x72\xd7\x72\xd0\x73\xa9\x73\xa8\x73\x9f\x73\xab\x73\xa5\x75\x3d\x75\x9d\x75\x99\x75\x9a\x76\x84\x76\xc2\x76\xf2\x76\xf4\x77\xe5\x77\xfd\x79\x3e\x79\x40\x79\x41\x79\xc9\x79\xc8\x7a\x7a\x7a\x79\x7a\xfa\x7c\xfe\x7f\x54\x7f\x8c\x7f\x8b\x80\x05\x80\xba\x80\xa5\x80\xa2\x80\xb1\x80\xa1\x80\xab\x80\xa9\x80\xb4\x80\xaa\x80\xaf\x81\xe5\x81\xfe\x82\x0d\x82\xb3\x82\x9d\x82\x99\x82\xad\x82\xbd\x82\x9f\x82\xb9\x82\xb1\x82\xac\x82\xa5\x82\xaf\x82\xb8\x82\xa3\x82\xb0\x82\xbe\x82\xb7\x86\x4e\x86\x71\x52\x1d\x88\x68\x8e\xcb\x8f\xce\x8f\xd4\x8f\xd1\x90\xb5\x90\xb8\x90\xb1\x90\xb6\x91\xc7\x91\xd1\x95\x77\x95\x80\x96\x1c\x96\x40\x96\x3f\x96\x3b\x96\x44\x96\x42\x96\xb9\x96\xe8\x97\x52\x97\x5e\x4e\x9f\x4e\xad\x4e\xae\x4f\xe1\x4f\xb5\x4f\xaf\x4f\xbf\x4f\xe0\x4f\xd1\x4f\xcf\x4f\xdd\x4f\xc3\x4f\xb6\x4f\xd8\x4f\xdf\x4f\xca\x4f\xd7\x4f\xae\x4f\xd0\x4f\xc4\x4f\xc2\x4f\xda\x4f\xce\x4f\xde\x00\x00\x00\x00", /* 5200 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4f\xb7\x51\x57\x51\x92\x51\x91\x51\xa0\x52\x4e\x52\x43\x52\x4a\x52\x4d\x52\x4c\x52\x4b\x52\x47\x52\xc7\x52\xc9\x52\xc3\x52\xc1\x53\x0d\x53\x57\x53\x7b\x53\x9a\x53\xdb\x54\xac\x54\xc0\x54\xa8\x54\xce\x54\xc9\x54\xb8\x54\xa6\x54\xb3\x54\xc7\x54\xc2\x54\xbd\x54\xaa\x54\xc1\x54\xc4\x54\xc8\x54\xaf\x54\xab\x54\xb1\x54\xbb\x54\xa9\x54\xa7\x54\xbf\x56\xff\x57\x82\x57\x8b\x57\xa0\x57\xa3\x57\xa2\x57\xce\x57\xae\x57\x93\x59\x55\x59\x51\x59\x4f\x59\x4e\x59\x50\x59\xdc\x59\xd8\x59\xff\x59\xe3\x59\xe8\x5a\x03", /* 5280 */ "\x00\x00\x59\xe5\x59\xea\x59\xda\x59\xe6\x5a\x01\x59\xfb\x5b\x69\x5b\xa3\x5b\xa6\x5b\xa4\x5b\xa2\x5b\xa5\x5c\x01\x5c\x4e\x5c\x4f\x5c\x4d\x5c\x4b\x5c\xd9\x5c\xd2\x5d\xf7\x5e\x1d\x5e\x25\x5e\x1f\x5e\x7d\x5e\xa0\x5e\xa6\x5e\xfa\x5f\x08\x5f\x2d\x5f\x65\x5f\x88\x5f\x85\x5f\x8a\x5f\x8b\x5f\x87\x5f\x8c\x5f\x89\x60\x12\x60\x1d\x60\x20\x60\x25\x60\x0e\x60\x28\x60\x4d\x60\x70\x60\x68\x60\x62\x60\x46\x60\x43\x60\x6c\x60\x6b\x60\x6a\x60\x64\x62\x41\x62\xdc\x63\x16\x63\x09\x62\xfc\x62\xed\x63\x01\x62\xee\x62\xfd\x63\x07\x62\xf1\x62\xf7\x62\xef\x62\xec\x62\xfe\x62\xf4\x63\x11\x63\x02\x65\x3f\x65\x45\x65\xab\x65\xbd\x65\xe2\x66\x25\x66\x2d\x66\x20\x66\x27\x66\x2f\x66\x1f\x66\x28\x66\x31\x66\x24\x66\xf7\x67\xff\x67\xd3\x67\xf1\x67\xd4\x67\xd0\x67\xec\x67\xb6\x67\xaf\x67\xf5\x67\xe9\x67\xef\x67\xc4\x67\xd1\x67\xb4\x67\xda\x67\xe5\x67\xb8\x67\xcf\x67\xde\x67\xf3\x67\xb0\x67\xd9\x67\xe2\x67\xdd\x67\xd2\x6b\x6a\x6b\x83\x6b\x86\x6b\xb5\x6b\xd2\x6b\xd7\x6c\x1f\x6c\xc9\x6d\x0b\x6d\x32\x6d\x2a\x6d\x41\x6d\x25\x6d\x0c\x00\x00\x00\x00", /* 5300 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6d\x31\x6d\x1e\x6d\x17\x6d\x3b\x6d\x3d\x6d\x3e\x6d\x36\x6d\x1b\x6c\xf5\x6d\x39\x6d\x27\x6d\x38\x6d\x29\x6d\x2e\x6d\x35\x6d\x0e\x6d\x2b\x70\xab\x70\xba\x70\xb3\x70\xac\x70\xaf\x70\xad\x70\xb8\x70\xae\x70\xa4\x72\x30\x72\x72\x72\x6f\x72\x74\x72\xe9\x72\xe0\x72\xe1\x73\xb7\x73\xca\x73\xbb\x73\xb2\x73\xcd\x73\xc0\x73\xb3\x75\x1a\x75\x2d\x75\x4f\x75\x4c\x75\x4e\x75\x4b\x75\xab\x75\xa4\x75\xa5\x75\xa2\x75\xa3\x76\x78\x76\x86\x76\x87\x76\x88\x76\xc8\x76\xc6\x76\xc3\x76\xc5\x77\x01\x76\xf9\x76\xf8\x77\x09", /* 5380 */ "\x00\x00\x77\x0b\x76\xfe\x76\xfc\x77\x07\x77\xdc\x78\x02\x78\x14\x78\x0c\x78\x0d\x79\x46\x79\x49\x79\x48\x79\x47\x79\xb9\x79\xba\x79\xd1\x79\xd2\x79\xcb\x7a\x7f\x7a\x81\x7a\xff\x7a\xfd\x7c\x7d\x7d\x02\x7d\x05\x7d\x00\x7d\x09\x7d\x07\x7d\x04\x7d\x06\x7f\x38\x7f\x8e\x7f\xbf\x80\x04\x80\x10\x80\x0d\x80\x11\x80\x36\x80\xd6\x80\xe5\x80\xda\x80\xc3\x80\xc4\x80\xcc\x80\xe1\x80\xdb\x80\xce\x80\xde\x80\xe4\x80\xdd\x81\xf4\x82\x22\x82\xe7\x83\x03\x83\x05\x82\xe3\x82\xdb\x82\xe6\x83\x04\x82\xe5\x83\x02\x83\x09\x82\xd2\x82\xd7\x82\xf1\x83\x01\x82\xdc\x82\xd4\x82\xd1\x82\xde\x82\xd3\x82\xdf\x82\xef\x83\x06\x86\x50\x86\x79\x86\x7b\x86\x7a\x88\x4d\x88\x6b\x89\x81\x89\xd4\x8a\x08\x8a\x02\x8a\x03\x8c\x9e\x8c\xa0\x8d\x74\x8d\x73\x8d\xb4\x8e\xcd\x8e\xcc\x8f\xf0\x8f\xe6\x8f\xe2\x8f\xea\x8f\xe5\x8f\xed\x8f\xeb\x8f\xe4\x8f\xe8\x90\xca\x90\xce\x90\xc1\x90\xc3\x91\x4b\x91\x4a\x91\xcd\x95\x82\x96\x50\x96\x4b\x96\x4c\x96\x4d\x97\x62\x97\x69\x97\xcb\x97\xed\x97\xf3\x98\x01\x98\xa8\x98\xdb\x98\xdf\x99\x96\x99\x99\x4e\x58\x00\x00\x00\x00", /* 5400 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4e\xb3\x50\x0c\x50\x0d\x50\x23\x4f\xef\x50\x26\x50\x25\x4f\xf8\x50\x29\x50\x16\x50\x06\x50\x3c\x50\x1f\x50\x1a\x50\x12\x50\x11\x4f\xfa\x50\x00\x50\x14\x50\x28\x4f\xf1\x50\x21\x50\x0b\x50\x19\x50\x18\x4f\xf3\x4f\xee\x50\x2d\x50\x2a\x4f\xfe\x50\x2b\x50\x09\x51\x7c\x51\xa4\x51\xa5\x51\xa2\x51\xcd\x51\xcc\x51\xc6\x51\xcb\x52\x56\x52\x5c\x52\x54\x52\x5b\x52\x5d\x53\x2a\x53\x7f\x53\x9f\x53\x9d\x53\xdf\x54\xe8\x55\x10\x55\x01\x55\x37\x54\xfc\x54\xe5\x54\xf2\x55\x06\x54\xfa\x55\x14\x54\xe9\x54\xed\x54\xe1", /* 5480 */ "\x00\x00\x55\x09\x54\xee\x54\xea\x54\xe6\x55\x27\x55\x07\x54\xfd\x55\x0f\x57\x03\x57\x04\x57\xc2\x57\xd4\x57\xcb\x57\xc3\x58\x09\x59\x0f\x59\x57\x59\x58\x59\x5a\x5a\x11\x5a\x18\x5a\x1c\x5a\x1f\x5a\x1b\x5a\x13\x59\xec\x5a\x20\x5a\x23\x5a\x29\x5a\x25\x5a\x0c\x5a\x09\x5b\x6b\x5c\x58\x5b\xb0\x5b\xb3\x5b\xb6\x5b\xb4\x5b\xae\x5b\xb5\x5b\xb9\x5b\xb8\x5c\x04\x5c\x51\x5c\x55\x5c\x50\x5c\xed\x5c\xfd\x5c\xfb\x5c\xea\x5c\xe8\x5c\xf0\x5c\xf6\x5d\x01\x5c\xf4\x5d\xee\x5e\x2d\x5e\x2b\x5e\xab\x5e\xad\x5e\xa7\x5f\x31\x5f\x92\x5f\x91\x5f\x90\x60\x59\x60\x63\x60\x65\x60\x50\x60\x55\x60\x6d\x60\x69\x60\x6f\x60\x84\x60\x9f\x60\x9a\x60\x8d\x60\x94\x60\x8c\x60\x85\x60\x96\x62\x47\x62\xf3\x63\x08\x62\xff\x63\x4e\x63\x3e\x63\x2f\x63\x55\x63\x42\x63\x46\x63\x4f\x63\x49\x63\x3a\x63\x50\x63\x3d\x63\x2a\x63\x2b\x63\x28\x63\x4d\x63\x4c\x65\x48\x65\x49\x65\x99\x65\xc1\x65\xc5\x66\x42\x66\x49\x66\x4f\x66\x43\x66\x52\x66\x4c\x66\x45\x66\x41\x66\xf8\x67\x14\x67\x15\x67\x17\x68\x21\x68\x38\x68\x48\x68\x46\x68\x53\x68\x39\x68\x42\x00\x00\x00\x00", /* 5500 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x68\x54\x68\x29\x68\xb3\x68\x17\x68\x4c\x68\x51\x68\x3d\x67\xf4\x68\x50\x68\x40\x68\x3c\x68\x43\x68\x2a\x68\x45\x68\x13\x68\x18\x68\x41\x6b\x8a\x6b\x89\x6b\xb7\x6c\x23\x6c\x27\x6c\x28\x6c\x26\x6c\x24\x6c\xf0\x6d\x6a\x6d\x95\x6d\x88\x6d\x87\x6d\x66\x6d\x78\x6d\x77\x6d\x59\x6d\x93\x6d\x6c\x6d\x89\x6d\x6e\x6d\x5a\x6d\x74\x6d\x69\x6d\x8c\x6d\x8a\x6d\x79\x6d\x85\x6d\x65\x6d\x94\x70\xca\x70\xd8\x70\xe4\x70\xd9\x70\xc8\x70\xcf\x72\x39\x72\x79\x72\xfc\x72\xf9\x72\xfd\x72\xf8\x72\xf7\x73\x86\x73\xed\x74\x09", /* 5580 */ "\x00\x00\x73\xee\x73\xe0\x73\xea\x73\xde\x75\x54\x75\x5d\x75\x5c\x75\x5a\x75\x59\x75\xbe\x75\xc5\x75\xc7\x75\xb2\x75\xb3\x75\xbd\x75\xbc\x75\xb9\x75\xc2\x75\xb8\x76\x8b\x76\xb0\x76\xca\x76\xcd\x76\xce\x77\x29\x77\x1f\x77\x20\x77\x28\x77\xe9\x78\x30\x78\x27\x78\x38\x78\x1d\x78\x34\x78\x37\x78\x25\x78\x2d\x78\x20\x78\x1f\x78\x32\x79\x55\x79\x50\x79\x60\x79\x5f\x79\x56\x79\x5e\x79\x5d\x79\x57\x79\x5a\x79\xe4\x79\xe3\x79\xe7\x79\xdf\x79\xe6\x79\xe9\x79\xd8\x7a\x84\x7a\x88\x7a\xd9\x7b\x06\x7b\x11\x7c\x89\x7d\x21\x7d\x17\x7d\x0b\x7d\x0a\x7d\x20\x7d\x22\x7d\x14\x7d\x10\x7d\x15\x7d\x1a\x7d\x1c\x7d\x0d\x7d\x19\x7d\x1b\x7f\x3a\x7f\x5f\x7f\x94\x7f\xc5\x7f\xc1\x80\x06\x80\x18\x80\x15\x80\x19\x80\x17\x80\x3d\x80\x3f\x80\xf1\x81\x02\x80\xf0\x81\x05\x80\xed\x80\xf4\x81\x06\x80\xf8\x80\xf3\x81\x08\x80\xfd\x81\x0a\x80\xfc\x80\xef\x81\xed\x81\xec\x82\x00\x82\x10\x82\x2a\x82\x2b\x82\x28\x82\x2c\x82\xbb\x83\x2b\x83\x52\x83\x54\x83\x4a\x83\x38\x83\x50\x83\x49\x83\x35\x83\x34\x83\x4f\x83\x32\x83\x39\x83\x36\x83\x17\x00\x00\x00\x00", /* 5600 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x83\x40\x83\x31\x83\x28\x83\x43\x86\x54\x86\x8a\x86\xaa\x86\x93\x86\xa4\x86\xa9\x86\x8c\x86\xa3\x86\x9c\x88\x70\x88\x77\x88\x81\x88\x82\x88\x7d\x88\x79\x8a\x18\x8a\x10\x8a\x0e\x8a\x0c\x8a\x15\x8a\x0a\x8a\x17\x8a\x13\x8a\x16\x8a\x0f\x8a\x11\x8c\x48\x8c\x7a\x8c\x79\x8c\xa1\x8c\xa2\x8d\x77\x8e\xac\x8e\xd2\x8e\xd4\x8e\xcf\x8f\xb1\x90\x01\x90\x06\x8f\xf7\x90\x00\x8f\xfa\x8f\xf4\x90\x03\x8f\xfd\x90\x05\x8f\xf8\x90\x95\x90\xe1\x90\xdd\x90\xe2\x91\x52\x91\x4d\x91\x4c\x91\xd8\x91\xdd\x91\xd7\x91\xdc\x91\xd9", /* 5680 */ "\x00\x00\x95\x83\x96\x62\x96\x63\x96\x61\x96\x5b\x96\x5d\x96\x64\x96\x58\x96\x5e\x96\xbb\x98\xe2\x99\xac\x9a\xa8\x9a\xd8\x9b\x25\x9b\x32\x9b\x3c\x4e\x7e\x50\x7a\x50\x7d\x50\x5c\x50\x47\x50\x43\x50\x4c\x50\x5a\x50\x49\x50\x65\x50\x76\x50\x4e\x50\x55\x50\x75\x50\x74\x50\x77\x50\x4f\x50\x0f\x50\x6f\x50\x6d\x51\x5c\x51\x95\x51\xf0\x52\x6a\x52\x6f\x52\xd2\x52\xd9\x52\xd8\x52\xd5\x53\x10\x53\x0f\x53\x19\x53\x3f\x53\x40\x53\x3e\x53\xc3\x66\xfc\x55\x46\x55\x6a\x55\x66\x55\x44\x55\x5e\x55\x61\x55\x43\x55\x4a\x55\x31\x55\x56\x55\x4f\x55\x55\x55\x2f\x55\x64\x55\x38\x55\x2e\x55\x5c\x55\x2c\x55\x63\x55\x33\x55\x41\x55\x57\x57\x08\x57\x0b\x57\x09\x57\xdf\x58\x05\x58\x0a\x58\x06\x57\xe0\x57\xe4\x57\xfa\x58\x02\x58\x35\x57\xf7\x57\xf9\x59\x20\x59\x62\x5a\x36\x5a\x41\x5a\x49\x5a\x66\x5a\x6a\x5a\x40\x5a\x3c\x5a\x62\x5a\x5a\x5a\x46\x5a\x4a\x5b\x70\x5b\xc7\x5b\xc5\x5b\xc4\x5b\xc2\x5b\xbf\x5b\xc6\x5c\x09\x5c\x08\x5c\x07\x5c\x60\x5c\x5c\x5c\x5d\x5d\x07\x5d\x06\x5d\x0e\x5d\x1b\x5d\x16\x5d\x22\x5d\x11\x5d\x29\x5d\x14\x00\x00\x00\x00", /* 5700 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5d\x19\x5d\x24\x5d\x27\x5d\x17\x5d\xe2\x5e\x38\x5e\x36\x5e\x33\x5e\x37\x5e\xb7\x5e\xb8\x5e\xb6\x5e\xb5\x5e\xbe\x5f\x35\x5f\x37\x5f\x57\x5f\x6c\x5f\x69\x5f\x6b\x5f\x97\x5f\x99\x5f\x9e\x5f\x98\x5f\xa1\x5f\xa0\x5f\x9c\x60\x7f\x60\xa3\x60\x89\x60\xa0\x60\xa8\x60\xcb\x60\xb4\x60\xe6\x60\xbd\x60\xc5\x60\xbb\x60\xb5\x60\xdc\x60\xbc\x60\xd8\x60\xd5\x60\xc6\x60\xdf\x60\xb8\x60\xda\x60\xc7\x62\x1a\x62\x1b\x62\x48\x63\xa0\x63\xa7\x63\x72\x63\x96\x63\xa2\x63\xa5\x63\x77\x63\x67\x63\x98\x63\xaa\x63\x71\x63\xa9", /* 5780 */ "\x00\x00\x63\x89\x63\x83\x63\x9b\x63\x6b\x63\xa8\x63\x84\x63\x88\x63\x99\x63\xa1\x63\xac\x63\x92\x63\x8f\x63\x80\x63\x7b\x63\x69\x63\x68\x63\x7a\x65\x5d\x65\x56\x65\x51\x65\x59\x65\x57\x55\x5f\x65\x4f\x65\x58\x65\x55\x65\x54\x65\x9c\x65\x9b\x65\xac\x65\xcf\x65\xcb\x65\xcc\x65\xce\x66\x5d\x66\x5a\x66\x64\x66\x68\x66\x66\x66\x5e\x66\xf9\x52\xd7\x67\x1b\x68\x81\x68\xaf\x68\xa2\x68\x93\x68\xb5\x68\x7f\x68\x76\x68\xb1\x68\xa7\x68\x97\x68\xb0\x68\x83\x68\xc4\x68\xad\x68\x86\x68\x85\x68\x94\x68\x9d\x68\xa8\x68\x9f\x68\xa1\x68\x82\x6b\x32\x6b\xba\x6b\xeb\x6b\xec\x6c\x2b\x6d\x8e\x6d\xbc\x6d\xf3\x6d\xd9\x6d\xb2\x6d\xe1\x6d\xcc\x6d\xe4\x6d\xfb\x6d\xfa\x6e\x05\x6d\xc7\x6d\xcb\x6d\xaf\x6d\xd1\x6d\xae\x6d\xde\x6d\xf9\x6d\xb8\x6d\xf7\x6d\xf5\x6d\xc5\x6d\xd2\x6e\x1a\x6d\xb5\x6d\xda\x6d\xeb\x6d\xd8\x6d\xea\x6d\xf1\x6d\xee\x6d\xe8\x6d\xc6\x6d\xc4\x6d\xaa\x6d\xec\x6d\xbf\x6d\xe6\x70\xf9\x71\x09\x71\x0a\x70\xfd\x70\xef\x72\x3d\x72\x7d\x72\x81\x73\x1c\x73\x1b\x73\x16\x73\x13\x73\x19\x73\x87\x74\x05\x74\x0a\x74\x03\x00\x00\x00\x00", /* 5800 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x74\x06\x73\xfe\x74\x0d\x74\xe0\x74\xf6\x74\xf7\x75\x1c\x75\x22\x75\x65\x75\x66\x75\x62\x75\x70\x75\x8f\x75\xd4\x75\xd5\x75\xb5\x75\xca\x75\xcd\x76\x8e\x76\xd4\x76\xd2\x76\xdb\x77\x37\x77\x3e\x77\x3c\x77\x36\x77\x38\x77\x3a\x78\x6b\x78\x43\x78\x4e\x79\x65\x79\x68\x79\x6d\x79\xfb\x7a\x92\x7a\x95\x7b\x20\x7b\x28\x7b\x1b\x7b\x2c\x7b\x26\x7b\x19\x7b\x1e\x7b\x2e\x7c\x92\x7c\x97\x7c\x95\x7d\x46\x7d\x43\x7d\x71\x7d\x2e\x7d\x39\x7d\x3c\x7d\x40\x7d\x30\x7d\x33\x7d\x44\x7d\x2f\x7d\x42\x7d\x32\x7d\x31\x7f\x3d", /* 5880 */ "\x00\x00\x7f\x9e\x7f\x9a\x7f\xcc\x7f\xce\x7f\xd2\x80\x1c\x80\x4a\x80\x46\x81\x2f\x81\x16\x81\x23\x81\x2b\x81\x29\x81\x30\x81\x24\x82\x02\x82\x35\x82\x37\x82\x36\x82\x39\x83\x8e\x83\x9e\x83\x98\x83\x78\x83\xa2\x83\x96\x83\xbd\x83\xab\x83\x92\x83\x8a\x83\x93\x83\x89\x83\xa0\x83\x77\x83\x7b\x83\x7c\x83\x86\x83\xa7\x86\x55\x5f\x6a\x86\xc7\x86\xc0\x86\xb6\x86\xc4\x86\xb5\x86\xc6\x86\xcb\x86\xb1\x86\xaf\x86\xc9\x88\x53\x88\x9e\x88\x88\x88\xab\x88\x92\x88\x96\x88\x8d\x88\x8b\x89\x93\x89\x8f\x8a\x2a\x8a\x1d\x8a\x23\x8a\x25\x8a\x31\x8a\x2d\x8a\x1f\x8a\x1b\x8a\x22\x8c\x49\x8c\x5a\x8c\xa9\x8c\xac\x8c\xab\x8c\xa8\x8c\xaa\x8c\xa7\x8d\x67\x8d\x66\x8d\xbe\x8d\xba\x8e\xdb\x8e\xdf\x90\x19\x90\x0d\x90\x1a\x90\x17\x90\x23\x90\x1f\x90\x1d\x90\x10\x90\x15\x90\x1e\x90\x20\x90\x0f\x90\x22\x90\x16\x90\x1b\x90\x14\x90\xe8\x90\xed\x90\xfd\x91\x57\x91\xce\x91\xf5\x91\xe6\x91\xe3\x91\xe7\x91\xed\x91\xe9\x95\x89\x96\x6a\x96\x75\x96\x73\x96\x78\x96\x70\x96\x74\x96\x76\x96\x77\x96\x6c\x96\xc0\x96\xea\x96\xe9\x7a\xe0\x7a\xdf\x00\x00\x00\x00", /* 5900 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x98\x02\x98\x03\x9b\x5a\x9c\xe5\x9e\x75\x9e\x7f\x9e\xa5\x9e\xbb\x50\xa2\x50\x8d\x50\x85\x50\x99\x50\x91\x50\x80\x50\x96\x50\x98\x50\x9a\x67\x00\x51\xf1\x52\x72\x52\x74\x52\x75\x52\x69\x52\xde\x52\xdd\x52\xdb\x53\x5a\x53\xa5\x55\x7b\x55\x80\x55\xa7\x55\x7c\x55\x8a\x55\x9d\x55\x98\x55\x82\x55\x9c\x55\xaa\x55\x94\x55\x87\x55\x8b\x55\x83\x55\xb3\x55\xae\x55\x9f\x55\x3e\x55\xb2\x55\x9a\x55\xbb\x55\xac\x55\xb1\x55\x7e\x55\x89\x55\xab\x55\x99\x57\x0d\x58\x2f\x58\x2a\x58\x34\x58\x24\x58\x30\x58\x31\x58\x21", /* 5980 */ "\x00\x00\x58\x1d\x58\x20\x58\xf9\x58\xfa\x59\x60\x5a\x77\x5a\x9a\x5a\x7f\x5a\x92\x5a\x9b\x5a\xa7\x5b\x73\x5b\x71\x5b\xd2\x5b\xcc\x5b\xd3\x5b\xd0\x5c\x0a\x5c\x0b\x5c\x31\x5d\x4c\x5d\x50\x5d\x34\x5d\x47\x5d\xfd\x5e\x45\x5e\x3d\x5e\x40\x5e\x43\x5e\x7e\x5e\xca\x5e\xc1\x5e\xc2\x5e\xc4\x5f\x3c\x5f\x6d\x5f\xa9\x5f\xaa\x5f\xa8\x60\xd1\x60\xe1\x60\xb2\x60\xb6\x60\xe0\x61\x1c\x61\x23\x60\xfa\x61\x15\x60\xf0\x60\xfb\x60\xf4\x61\x68\x60\xf1\x61\x0e\x60\xf6\x61\x09\x61\x00\x61\x12\x62\x1f\x62\x49\x63\xa3\x63\x8c\x63\xcf\x63\xc0\x63\xe9\x63\xc9\x63\xc6\x63\xcd\x63\xd2\x63\xe3\x63\xd0\x63\xe1\x63\xd6\x63\xed\x63\xee\x63\x76\x63\xf4\x63\xea\x63\xdb\x64\x52\x63\xda\x63\xf9\x65\x5e\x65\x66\x65\x62\x65\x63\x65\x91\x65\x90\x65\xaf\x66\x6e\x66\x70\x66\x74\x66\x76\x66\x6f\x66\x91\x66\x7a\x66\x7e\x66\x77\x66\xfe\x66\xff\x67\x1f\x67\x1d\x68\xfa\x68\xd5\x68\xe0\x68\xd8\x68\xd7\x69\x05\x68\xdf\x68\xf5\x68\xee\x68\xe7\x68\xf9\x68\xd2\x68\xf2\x68\xe3\x68\xcb\x68\xcd\x69\x0d\x69\x12\x69\x0e\x68\xc9\x68\xda\x69\x6e\x68\xfb\x00\x00\x00\x00", /* 5a00 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6b\x3e\x6b\x3a\x6b\x3d\x6b\x98\x6b\x96\x6b\xbc\x6b\xef\x6c\x2e\x6c\x2f\x6c\x2c\x6e\x2f\x6e\x38\x6e\x54\x6e\x21\x6e\x32\x6e\x67\x6e\x4a\x6e\x20\x6e\x25\x6e\x23\x6e\x1b\x6e\x5b\x6e\x58\x6e\x24\x6e\x56\x6e\x6e\x6e\x2d\x6e\x26\x6e\x6f\x6e\x34\x6e\x4d\x6e\x3a\x6e\x2c\x6e\x43\x6e\x1d\x6e\x3e\x6e\xcb\x6e\x89\x6e\x19\x6e\x4e\x6e\x63\x6e\x44\x6e\x72\x6e\x69\x6e\x5f\x71\x19\x71\x1a\x71\x26\x71\x30\x71\x21\x71\x36\x71\x6e\x71\x1c\x72\x4c\x72\x84\x72\x80\x73\x36\x73\x25\x73\x34\x73\x29\x74\x3a\x74\x2a\x74\x33", /* 5a80 */ "\x00\x00\x74\x22\x74\x25\x74\x35\x74\x36\x74\x34\x74\x2f\x74\x1b\x74\x26\x74\x28\x75\x25\x75\x26\x75\x6b\x75\x6a\x75\xe2\x75\xdb\x75\xe3\x75\xd9\x75\xd8\x75\xde\x75\xe0\x76\x7b\x76\x7c\x76\x96\x76\x93\x76\xb4\x76\xdc\x77\x4f\x77\xed\x78\x5d\x78\x6c\x78\x6f\x7a\x0d\x7a\x08\x7a\x0b\x7a\x05\x7a\x00\x7a\x98\x7a\x97\x7a\x96\x7a\xe5\x7a\xe3\x7b\x49\x7b\x56\x7b\x46\x7b\x50\x7b\x52\x7b\x54\x7b\x4d\x7b\x4b\x7b\x4f\x7b\x51\x7c\x9f\x7c\xa5\x7d\x5e\x7d\x50\x7d\x68\x7d\x55\x7d\x2b\x7d\x6e\x7d\x72\x7d\x61\x7d\x66\x7d\x62\x7d\x70\x7d\x73\x55\x84\x7f\xd4\x7f\xd5\x80\x0b\x80\x52\x80\x85\x81\x55\x81\x54\x81\x4b\x81\x51\x81\x4e\x81\x39\x81\x46\x81\x3e\x81\x4c\x81\x53\x81\x74\x82\x12\x82\x1c\x83\xe9\x84\x03\x83\xf8\x84\x0d\x83\xe0\x83\xc5\x84\x0b\x83\xc1\x83\xef\x83\xf1\x83\xf4\x84\x57\x84\x0a\x83\xf0\x84\x0c\x83\xcc\x83\xfd\x83\xf2\x83\xca\x84\x38\x84\x0e\x84\x04\x83\xdc\x84\x07\x83\xd4\x83\xdf\x86\x5b\x86\xdf\x86\xd9\x86\xed\x86\xd4\x86\xdb\x86\xe4\x86\xd0\x86\xde\x88\x57\x88\xc1\x88\xc2\x88\xb1\x89\x83\x89\x96\x00\x00\x00\x00", /* 5b00 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x8a\x3b\x8a\x60\x8a\x55\x8a\x5e\x8a\x3c\x8a\x41\x8a\x54\x8a\x5b\x8a\x50\x8a\x46\x8a\x34\x8a\x3a\x8a\x36\x8a\x56\x8c\x61\x8c\x82\x8c\xaf\x8c\xbc\x8c\xb3\x8c\xbd\x8c\xc1\x8c\xbb\x8c\xc0\x8c\xb4\x8c\xb7\x8c\xb6\x8c\xbf\x8c\xb8\x8d\x8a\x8d\x85\x8d\x81\x8d\xce\x8d\xdd\x8d\xcb\x8d\xda\x8d\xd1\x8d\xcc\x8d\xdb\x8d\xc6\x8e\xfb\x8e\xf8\x8e\xfc\x8f\x9c\x90\x2e\x90\x35\x90\x31\x90\x38\x90\x32\x90\x36\x91\x02\x90\xf5\x91\x09\x90\xfe\x91\x63\x91\x65\x91\xcf\x92\x14\x92\x15\x92\x23\x92\x09\x92\x1e\x92\x0d\x92\x10", /* 5b80 */ "\x00\x00\x92\x07\x92\x11\x95\x94\x95\x8f\x95\x8b\x95\x91\x95\x93\x95\x92\x95\x8e\x96\x8a\x96\x8e\x96\x8b\x96\x7d\x96\x85\x96\x86\x96\x8d\x96\x72\x96\x84\x96\xc1\x96\xc5\x96\xc4\x96\xc6\x96\xc7\x96\xef\x96\xf2\x97\xcc\x98\x05\x98\x06\x98\x08\x98\xe7\x98\xea\x98\xef\x98\xe9\x98\xf2\x98\xed\x99\xae\x99\xad\x9e\xc3\x9e\xcd\x9e\xd1\x4e\x82\x50\xad\x50\xb5\x50\xb2\x50\xb3\x50\xc5\x50\xbe\x50\xac\x50\xb7\x50\xbb\x50\xaf\x50\xc7\x52\x7f\x52\x77\x52\x7d\x52\xdf\x52\xe6\x52\xe4\x52\xe2\x52\xe3\x53\x2f\x55\xdf\x55\xe8\x55\xd3\x55\xe6\x55\xce\x55\xdc\x55\xc7\x55\xd1\x55\xe3\x55\xe4\x55\xef\x55\xda\x55\xe1\x55\xc5\x55\xc6\x55\xe5\x55\xc9\x57\x12\x57\x13\x58\x5e\x58\x51\x58\x58\x58\x57\x58\x5a\x58\x54\x58\x6b\x58\x4c\x58\x6d\x58\x4a\x58\x62\x58\x52\x58\x4b\x59\x67\x5a\xc1\x5a\xc9\x5a\xcc\x5a\xbe\x5a\xbd\x5a\xbc\x5a\xb3\x5a\xc2\x5a\xb2\x5d\x69\x5d\x6f\x5e\x4c\x5e\x79\x5e\xc9\x5e\xc8\x5f\x12\x5f\x59\x5f\xac\x5f\xae\x61\x1a\x61\x0f\x61\x48\x61\x1f\x60\xf3\x61\x1b\x60\xf9\x61\x01\x61\x08\x61\x4e\x61\x4c\x61\x44\x00\x00\x00\x00", /* 5c00 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x61\x4d\x61\x3e\x61\x34\x61\x27\x61\x0d\x61\x06\x61\x37\x62\x21\x62\x22\x64\x13\x64\x3e\x64\x1e\x64\x2a\x64\x2d\x64\x3d\x64\x2c\x64\x0f\x64\x1c\x64\x14\x64\x0d\x64\x36\x64\x16\x64\x17\x64\x06\x65\x6c\x65\x9f\x65\xb0\x66\x97\x66\x89\x66\x87\x66\x88\x66\x96\x66\x84\x66\x98\x66\x8d\x67\x03\x69\x94\x69\x6d\x69\x5a\x69\x77\x69\x60\x69\x54\x69\x75\x69\x30\x69\x82\x69\x4a\x69\x68\x69\x6b\x69\x5e\x69\x53\x69\x79\x69\x86\x69\x5d\x69\x63\x69\x5b\x6b\x47\x6b\x72\x6b\xc0\x6b\xbf\x6b\xd3\x6b\xfd\x6e\xa2\x6e\xaf", /* 5c80 */ "\x00\x00\x6e\xd3\x6e\xb6\x6e\xc2\x6e\x90\x6e\x9d\x6e\xc7\x6e\xc5\x6e\xa5\x6e\x98\x6e\xbc\x6e\xba\x6e\xab\x6e\xd1\x6e\x96\x6e\x9c\x6e\xc4\x6e\xd4\x6e\xaa\x6e\xa7\x6e\xb4\x71\x4e\x71\x59\x71\x69\x71\x64\x71\x49\x71\x67\x71\x5c\x71\x6c\x71\x66\x71\x4c\x71\x65\x71\x5e\x71\x46\x71\x68\x71\x56\x72\x3a\x72\x52\x73\x37\x73\x45\x73\x3f\x73\x3e\x74\x6f\x74\x5a\x74\x55\x74\x5f\x74\x5e\x74\x41\x74\x3f\x74\x59\x74\x5b\x74\x5c\x75\x76\x75\x78\x76\x00\x75\xf0\x76\x01\x75\xf2\x75\xf1\x75\xfa\x75\xff\x75\xf4\x75\xf3\x76\xde\x76\xdf\x77\x5b\x77\x6b\x77\x66\x77\x5e\x77\x63\x77\x79\x77\x6a\x77\x6c\x77\x5c\x77\x65\x77\x68\x77\x62\x77\xee\x78\x8e\x78\xb0\x78\x97\x78\x98\x78\x8c\x78\x89\x78\x7c\x78\x91\x78\x93\x78\x7f\x79\x7a\x79\x7f\x79\x81\x84\x2c\x79\xbd\x7a\x1c\x7a\x1a\x7a\x20\x7a\x14\x7a\x1f\x7a\x1e\x7a\x9f\x7a\xa0\x7b\x77\x7b\xc0\x7b\x60\x7b\x6e\x7b\x67\x7c\xb1\x7c\xb3\x7c\xb5\x7d\x93\x7d\x79\x7d\x91\x7d\x81\x7d\x8f\x7d\x5b\x7f\x6e\x7f\x69\x7f\x6a\x7f\x72\x7f\xa9\x7f\xa8\x7f\xa4\x80\x56\x80\x58\x80\x86\x80\x84\x00\x00\x00\x00", /* 5d00 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x81\x71\x81\x70\x81\x78\x81\x65\x81\x6e\x81\x73\x81\x6b\x81\x79\x81\x7a\x81\x66\x82\x05\x82\x47\x84\x82\x84\x77\x84\x3d\x84\x31\x84\x75\x84\x66\x84\x6b\x84\x49\x84\x6c\x84\x5b\x84\x3c\x84\x35\x84\x61\x84\x63\x84\x69\x84\x6d\x84\x46\x86\x5e\x86\x5c\x86\x5f\x86\xf9\x87\x13\x87\x08\x87\x07\x87\x00\x86\xfe\x86\xfb\x87\x02\x87\x03\x87\x06\x87\x0a\x88\x59\x88\xdf\x88\xd4\x88\xd9\x88\xdc\x88\xd8\x88\xdd\x88\xe1\x88\xca\x88\xd5\x88\xd2\x89\x9c\x89\xe3\x8a\x6b\x8a\x72\x8a\x73\x8a\x66\x8a\x69\x8a\x70\x8a\x87", /* 5d80 */ "\x00\x00\x8a\x7c\x8a\x63\x8a\xa0\x8a\x71\x8a\x85\x8a\x6d\x8a\x62\x8a\x6e\x8a\x6c\x8a\x79\x8a\x7b\x8a\x3e\x8a\x68\x8c\x62\x8c\x8a\x8c\x89\x8c\xca\x8c\xc7\x8c\xc8\x8c\xc4\x8c\xb2\x8c\xc3\x8c\xc2\x8c\xc5\x8d\xe1\x8d\xdf\x8d\xe8\x8d\xef\x8d\xf3\x8d\xfa\x8d\xea\x8d\xe4\x8d\xe6\x8e\xb2\x8f\x03\x8f\x09\x8e\xfe\x8f\x0a\x8f\x9f\x8f\xb2\x90\x4b\x90\x4a\x90\x53\x90\x42\x90\x54\x90\x3c\x90\x55\x90\x50\x90\x47\x90\x4f\x90\x4e\x90\x4d\x90\x51\x90\x3e\x90\x41\x91\x12\x91\x17\x91\x6c\x91\x6a\x91\x69\x91\xc9\x92\x37\x92\x57\x92\x38\x92\x3d\x92\x40\x92\x3e\x92\x5b\x92\x4b\x92\x64\x92\x51\x92\x34\x92\x49\x92\x4d\x92\x45\x92\x39\x92\x3f\x92\x5a\x95\x98\x96\x98\x96\x94\x96\x95\x96\xcd\x96\xcb\x96\xc9\x96\xca\x96\xf7\x96\xfb\x96\xf9\x96\xf6\x97\x56\x97\x74\x97\x76\x98\x10\x98\x11\x98\x13\x98\x0a\x98\x12\x98\x0c\x98\xfc\x98\xf4\x98\xfd\x98\xfe\x99\xb3\x99\xb1\x99\xb4\x9a\xe1\x9c\xe9\x9e\x82\x9f\x0e\x9f\x13\x9f\x20\x50\xe7\x50\xee\x50\xe5\x50\xd6\x50\xed\x50\xda\x50\xd5\x50\xcf\x50\xd1\x50\xf1\x50\xce\x50\xe9\x51\x62\x00\x00\x00\x00", /* 5e00 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x51\xf3\x52\x83\x52\x82\x53\x31\x53\xad\x55\xfe\x56\x00\x56\x1b\x56\x17\x55\xfd\x56\x14\x56\x06\x56\x09\x56\x0d\x56\x0e\x55\xf7\x56\x16\x56\x1f\x56\x08\x56\x10\x55\xf6\x57\x18\x57\x16\x58\x75\x58\x7e\x58\x83\x58\x93\x58\x8a\x58\x79\x58\x85\x58\x7d\x58\xfd\x59\x25\x59\x22\x59\x24\x59\x6a\x59\x69\x5a\xe1\x5a\xe6\x5a\xe9\x5a\xd7\x5a\xd6\x5a\xd8\x5a\xe3\x5b\x75\x5b\xde\x5b\xe7\x5b\xe1\x5b\xe5\x5b\xe6\x5b\xe8\x5b\xe2\x5b\xe4\x5b\xdf\x5c\x0d\x5c\x62\x5d\x84\x5d\x87\x5e\x5b\x5e\x63\x5e\x55\x5e\x57\x5e\x54", /* 5e80 */ "\x00\x00\x5e\xd3\x5e\xd6\x5f\x0a\x5f\x46\x5f\x70\x5f\xb9\x61\x47\x61\x3f\x61\x4b\x61\x77\x61\x62\x61\x63\x61\x5f\x61\x5a\x61\x58\x61\x75\x62\x2a\x64\x87\x64\x58\x64\x54\x64\xa4\x64\x78\x64\x5f\x64\x7a\x64\x51\x64\x67\x64\x34\x64\x6d\x64\x7b\x65\x72\x65\xa1\x65\xd7\x65\xd6\x66\xa2\x66\xa8\x66\x9d\x69\x9c\x69\xa8\x69\x95\x69\xc1\x69\xae\x69\xd3\x69\xcb\x69\x9b\x69\xb7\x69\xbb\x69\xab\x69\xb4\x69\xd0\x69\xcd\x69\xad\x69\xcc\x69\xa6\x69\xc3\x69\xa3\x6b\x49\x6b\x4c\x6c\x33\x6f\x33\x6f\x14\x6e\xfe\x6f\x13\x6e\xf4\x6f\x29\x6f\x3e\x6f\x20\x6f\x2c\x6f\x0f\x6f\x02\x6f\x22\x6e\xff\x6e\xef\x6f\x06\x6f\x31\x6f\x38\x6f\x32\x6f\x23\x6f\x15\x6f\x2b\x6f\x2f\x6f\x88\x6f\x2a\x6e\xec\x6f\x01\x6e\xf2\x6e\xcc\x6e\xf7\x71\x94\x71\x99\x71\x7d\x71\x8a\x71\x84\x71\x92\x72\x3e\x72\x92\x72\x96\x73\x44\x73\x50\x74\x64\x74\x63\x74\x6a\x74\x70\x74\x6d\x75\x04\x75\x91\x76\x27\x76\x0d\x76\x0b\x76\x09\x76\x13\x76\xe1\x76\xe3\x77\x84\x77\x7d\x77\x7f\x77\x61\x78\xc1\x78\x9f\x78\xa7\x78\xb3\x78\xa9\x78\xa3\x79\x8e\x79\x8f\x79\x8d\x00\x00\x00\x00", /* 5f00 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7a\x2e\x7a\x31\x7a\xaa\x7a\xa9\x7a\xed\x7a\xef\x7b\xa1\x7b\x95\x7b\x8b\x7b\x75\x7b\x97\x7b\x9d\x7b\x94\x7b\x8f\x7b\xb8\x7b\x87\x7b\x84\x7c\xb9\x7c\xbd\x7c\xbe\x7d\xbb\x7d\xb0\x7d\x9c\x7d\xbd\x7d\xbe\x7d\xa0\x7d\xca\x7d\xb4\x7d\xb2\x7d\xb1\x7d\xba\x7d\xa2\x7d\xbf\x7d\xb5\x7d\xb8\x7d\xad\x7d\xd2\x7d\xc7\x7d\xac\x7f\x70\x7f\xe0\x7f\xe1\x7f\xdf\x80\x5e\x80\x5a\x80\x87\x81\x50\x81\x80\x81\x8f\x81\x88\x81\x8a\x81\x7f\x81\x82\x81\xe7\x81\xfa\x82\x07\x82\x14\x82\x1e\x82\x4b\x84\xc9\x84\xbf\x84\xc6\x84\xc4", /* 5f80 */ "\x00\x00\x84\x99\x84\x9e\x84\xb2\x84\x9c\x84\xcb\x84\xb8\x84\xc0\x84\xd3\x84\x90\x84\xbc\x84\xd1\x84\xca\x87\x3f\x87\x1c\x87\x3b\x87\x22\x87\x25\x87\x34\x87\x18\x87\x55\x87\x37\x87\x29\x88\xf3\x89\x02\x88\xf4\x88\xf9\x88\xf8\x88\xfd\x88\xe8\x89\x1a\x88\xef\x8a\xa6\x8a\x8c\x8a\x9e\x8a\xa3\x8a\x8d\x8a\xa1\x8a\x93\x8a\xa4\x8a\xaa\x8a\xa5\x8a\xa8\x8a\x98\x8a\x91\x8a\x9a\x8a\xa7\x8c\x6a\x8c\x8d\x8c\x8c\x8c\xd3\x8c\xd1\x8c\xd2\x8d\x6b\x8d\x99\x8d\x95\x8d\xfc\x8f\x14\x8f\x12\x8f\x15\x8f\x13\x8f\xa3\x90\x60\x90\x58\x90\x5c\x90\x63\x90\x59\x90\x5e\x90\x62\x90\x5d\x90\x5b\x91\x19\x91\x18\x91\x1e\x91\x75\x91\x78\x91\x77\x91\x74\x92\x78\x92\x80\x92\x85\x92\x98\x92\x96\x92\x7b\x92\x93\x92\x9c\x92\xa8\x92\x7c\x92\x91\x95\xa1\x95\xa8\x95\xa9\x95\xa3\x95\xa5\x95\xa4\x96\x99\x96\x9c\x96\x9b\x96\xcc\x96\xd2\x97\x00\x97\x7c\x97\x85\x97\xf6\x98\x17\x98\x18\x98\xaf\x98\xb1\x99\x03\x99\x05\x99\x0c\x99\x09\x99\xc1\x9a\xaf\x9a\xb0\x9a\xe6\x9b\x41\x9b\x42\x9c\xf4\x9c\xf6\x9c\xf3\x9e\xbc\x9f\x3b\x9f\x4a\x51\x04\x51\x00\x00\x00\x00\x00", /* 6000 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x50\xfb\x50\xf5\x50\xf9\x51\x02\x51\x08\x51\x09\x51\x05\x51\xdc\x52\x87\x52\x88\x52\x89\x52\x8d\x52\x8a\x52\xf0\x53\xb2\x56\x2e\x56\x3b\x56\x39\x56\x32\x56\x3f\x56\x34\x56\x29\x56\x53\x56\x4e\x56\x57\x56\x74\x56\x36\x56\x2f\x56\x30\x58\x80\x58\x9f\x58\x9e\x58\xb3\x58\x9c\x58\xae\x58\xa9\x58\xa6\x59\x6d\x5b\x09\x5a\xfb\x5b\x0b\x5a\xf5\x5b\x0c\x5b\x08\x5b\xee\x5b\xec\x5b\xe9\x5b\xeb\x5c\x64\x5c\x65\x5d\x9d\x5d\x94\x5e\x62\x5e\x5f\x5e\x61\x5e\xe2\x5e\xda\x5e\xdf\x5e\xdd\x5e\xe3\x5e\xe0\x5f\x48\x5f\x71", /* 6080 */ "\x00\x00\x5f\xb7\x5f\xb5\x61\x76\x61\x67\x61\x6e\x61\x5d\x61\x55\x61\x82\x61\x7c\x61\x70\x61\x6b\x61\x7e\x61\xa7\x61\x90\x61\xab\x61\x8e\x61\xac\x61\x9a\x61\xa4\x61\x94\x61\xae\x62\x2e\x64\x69\x64\x6f\x64\x79\x64\x9e\x64\xb2\x64\x88\x64\x90\x64\xb0\x64\xa5\x64\x93\x64\x95\x64\xa9\x64\x92\x64\xae\x64\xad\x64\xab\x64\x9a\x64\xac\x64\x99\x64\xa2\x64\xb3\x65\x75\x65\x77\x65\x78\x66\xae\x66\xab\x66\xb4\x66\xb1\x6a\x23\x6a\x1f\x69\xe8\x6a\x01\x6a\x1e\x6a\x19\x69\xfd\x6a\x21\x6a\x13\x6a\x0a\x69\xf3\x6a\x02\x6a\x05\x69\xed\x6a\x11\x6b\x50\x6b\x4e\x6b\xa4\x6b\xc5\x6b\xc6\x6f\x3f\x6f\x7c\x6f\x84\x6f\x51\x6f\x66\x6f\x54\x6f\x86\x6f\x6d\x6f\x5b\x6f\x78\x6f\x6e\x6f\x8e\x6f\x7a\x6f\x70\x6f\x64\x6f\x97\x6f\x58\x6e\xd5\x6f\x6f\x6f\x60\x6f\x5f\x71\x9f\x71\xac\x71\xb1\x71\xa8\x72\x56\x72\x9b\x73\x4e\x73\x57\x74\x69\x74\x8b\x74\x83\x74\x7e\x74\x80\x75\x7f\x76\x20\x76\x29\x76\x1f\x76\x24\x76\x26\x76\x21\x76\x22\x76\x9a\x76\xba\x76\xe4\x77\x8e\x77\x87\x77\x8c\x77\x91\x77\x8b\x78\xcb\x78\xc5\x78\xba\x78\xca\x78\xbe\x00\x00\x00\x00", /* 6100 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x78\xd5\x78\xbc\x78\xd0\x7a\x3f\x7a\x3c\x7a\x40\x7a\x3d\x7a\x37\x7a\x3b\x7a\xaf\x7a\xae\x7b\xad\x7b\xb1\x7b\xc4\x7b\xb4\x7b\xc6\x7b\xc7\x7b\xc1\x7b\xa0\x7b\xcc\x7c\xca\x7d\xe0\x7d\xf4\x7d\xef\x7d\xfb\x7d\xd8\x7d\xec\x7d\xdd\x7d\xe8\x7d\xe3\x7d\xda\x7d\xde\x7d\xe9\x7d\x9e\x7d\xd9\x7d\xf2\x7d\xf9\x7f\x75\x7f\x77\x7f\xaf\x7f\xe9\x80\x26\x81\x9b\x81\x9c\x81\x9d\x81\xa0\x81\x9a\x81\x98\x85\x17\x85\x3d\x85\x1a\x84\xee\x85\x2c\x85\x2d\x85\x13\x85\x11\x85\x23\x85\x21\x85\x14\x84\xec\x85\x25\x84\xff\x85\x06", /* 6180 */ "\x00\x00\x87\x82\x87\x74\x87\x76\x87\x60\x87\x66\x87\x78\x87\x68\x87\x59\x87\x57\x87\x4c\x87\x53\x88\x5b\x88\x5d\x89\x10\x89\x07\x89\x12\x89\x13\x89\x15\x89\x0a\x8a\xbc\x8a\xd2\x8a\xc7\x8a\xc4\x8a\x95\x8a\xcb\x8a\xf8\x8a\xb2\x8a\xc9\x8a\xc2\x8a\xbf\x8a\xb0\x8a\xd6\x8a\xcd\x8a\xb6\x8a\xb9\x8a\xdb\x8c\x4c\x8c\x4e\x8c\x6c\x8c\xe0\x8c\xde\x8c\xe6\x8c\xe4\x8c\xec\x8c\xed\x8c\xe2\x8c\xe3\x8c\xdc\x8c\xea\x8c\xe1\x8d\x6d\x8d\x9f\x8d\xa3\x8e\x2b\x8e\x10\x8e\x1d\x8e\x22\x8e\x0f\x8e\x29\x8e\x1f\x8e\x21\x8e\x1e\x8e\xba\x8f\x1d\x8f\x1b\x8f\x1f\x8f\x29\x8f\x26\x8f\x2a\x8f\x1c\x8f\x1e\x8f\x25\x90\x69\x90\x6e\x90\x68\x90\x6d\x90\x77\x91\x30\x91\x2d\x91\x27\x91\x31\x91\x87\x91\x89\x91\x8b\x91\x83\x92\xc5\x92\xbb\x92\xb7\x92\xea\x92\xac\x92\xe4\x92\xc1\x92\xb3\x92\xbc\x92\xd2\x92\xc7\x92\xf0\x92\xb2\x95\xad\x95\xb1\x97\x04\x97\x06\x97\x07\x97\x09\x97\x60\x97\x8d\x97\x8b\x97\x8f\x98\x21\x98\x2b\x98\x1c\x98\xb3\x99\x0a\x99\x13\x99\x12\x99\x18\x99\xdd\x99\xd0\x99\xdf\x99\xdb\x99\xd1\x99\xd5\x99\xd2\x99\xd9\x9a\xb7\x00\x00\x00\x00", /* 6200 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x9a\xee\x9a\xef\x9b\x27\x9b\x45\x9b\x44\x9b\x77\x9b\x6f\x9d\x06\x9d\x09\x9d\x03\x9e\xa9\x9e\xbe\x9e\xce\x58\xa8\x9f\x52\x51\x12\x51\x18\x51\x14\x51\x10\x51\x15\x51\x80\x51\xaa\x51\xdd\x52\x91\x52\x93\x52\xf3\x56\x59\x56\x6b\x56\x79\x56\x69\x56\x64\x56\x78\x56\x6a\x56\x68\x56\x65\x56\x71\x56\x6f\x56\x6c\x56\x62\x56\x76\x58\xc1\x58\xbe\x58\xc7\x58\xc5\x59\x6e\x5b\x1d\x5b\x34\x5b\x78\x5b\xf0\x5c\x0e\x5f\x4a\x61\xb2\x61\x91\x61\xa9\x61\x8a\x61\xcd\x61\xb6\x61\xbe\x61\xca\x61\xc8\x62\x30\x64\xc5\x64\xc1", /* 6280 */ "\x00\x00\x64\xcb\x64\xbb\x64\xbc\x64\xda\x64\xc4\x64\xc7\x64\xc2\x64\xcd\x64\xbf\x64\xd2\x64\xd4\x64\xbe\x65\x74\x66\xc6\x66\xc9\x66\xb9\x66\xc4\x66\xc7\x66\xb8\x6a\x3d\x6a\x38\x6a\x3a\x6a\x59\x6a\x6b\x6a\x58\x6a\x39\x6a\x44\x6a\x62\x6a\x61\x6a\x4b\x6a\x47\x6a\x35\x6a\x5f\x6a\x48\x6b\x59\x6b\x77\x6c\x05\x6f\xc2\x6f\xb1\x6f\xa1\x6f\xc3\x6f\xa4\x6f\xc1\x6f\xa7\x6f\xb3\x6f\xc0\x6f\xb9\x6f\xb6\x6f\xa6\x6f\xa0\x6f\xb4\x71\xbe\x71\xc9\x71\xd0\x71\xd2\x71\xc8\x71\xd5\x71\xb9\x71\xce\x71\xd9\x71\xdc\x71\xc3\x71\xc4\x73\x68\x74\x9c\x74\xa3\x74\x98\x74\x9f\x74\x9e\x74\xe2\x75\x0c\x75\x0d\x76\x34\x76\x38\x76\x3a\x76\xe7\x76\xe5\x77\xa0\x77\x9e\x77\x9f\x77\xa5\x78\xe8\x78\xda\x78\xec\x78\xe7\x79\xa6\x7a\x4d\x7a\x4e\x7a\x46\x7a\x4c\x7a\x4b\x7a\xba\x7b\xd9\x7c\x11\x7b\xc9\x7b\xe4\x7b\xdb\x7b\xe1\x7b\xe9\x7b\xe6\x7c\xd5\x7c\xd6\x7e\x0a\x7e\x11\x7e\x08\x7e\x1b\x7e\x23\x7e\x1e\x7e\x1d\x7e\x09\x7e\x10\x7f\x79\x7f\xb2\x7f\xf0\x7f\xf1\x7f\xee\x80\x28\x81\xb3\x81\xa9\x81\xa8\x81\xfb\x82\x08\x82\x58\x82\x59\x85\x4a\x00\x00\x00\x00", /* 6300 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x85\x59\x85\x48\x85\x68\x85\x69\x85\x43\x85\x49\x85\x6d\x85\x6a\x85\x5e\x87\x83\x87\x9f\x87\x9e\x87\xa2\x87\x8d\x88\x61\x89\x2a\x89\x32\x89\x25\x89\x2b\x89\x21\x89\xaa\x89\xa6\x8a\xe6\x8a\xfa\x8a\xeb\x8a\xf1\x8b\x00\x8a\xdc\x8a\xe7\x8a\xee\x8a\xfe\x8b\x01\x8b\x02\x8a\xf7\x8a\xed\x8a\xf3\x8a\xf6\x8a\xfc\x8c\x6b\x8c\x6d\x8c\x93\x8c\xf4\x8e\x44\x8e\x31\x8e\x34\x8e\x42\x8e\x39\x8e\x35\x8f\x3b\x8f\x2f\x8f\x38\x8f\x33\x8f\xa8\x8f\xa6\x90\x75\x90\x74\x90\x78\x90\x72\x90\x7c\x90\x7a\x91\x34\x91\x92\x93\x20", /* 6380 */ "\x00\x00\x93\x36\x92\xf8\x93\x33\x93\x2f\x93\x22\x92\xfc\x93\x2b\x93\x04\x93\x1a\x93\x10\x93\x26\x93\x21\x93\x15\x93\x2e\x93\x19\x95\xbb\x96\xa7\x96\xa8\x96\xaa\x96\xd5\x97\x0e\x97\x11\x97\x16\x97\x0d\x97\x13\x97\x0f\x97\x5b\x97\x5c\x97\x66\x97\x98\x98\x30\x98\x38\x98\x3b\x98\x37\x98\x2d\x98\x39\x98\x24\x99\x10\x99\x28\x99\x1e\x99\x1b\x99\x21\x99\x1a\x99\xed\x99\xe2\x99\xf1\x9a\xb8\x9a\xbc\x9a\xfb\x9a\xed\x9b\x28\x9b\x91\x9d\x15\x9d\x23\x9d\x26\x9d\x28\x9d\x12\x9d\x1b\x9e\xd8\x9e\xd4\x9f\x8d\x9f\x9c\x51\x2a\x51\x1f\x51\x21\x51\x32\x52\xf5\x56\x8e\x56\x80\x56\x90\x56\x85\x56\x87\x56\x8f\x58\xd5\x58\xd3\x58\xd1\x58\xce\x5b\x30\x5b\x2a\x5b\x24\x5b\x7a\x5c\x37\x5c\x68\x5d\xbc\x5d\xba\x5d\xbd\x5d\xb8\x5e\x6b\x5f\x4c\x5f\xbd\x61\xc9\x61\xc2\x61\xc7\x61\xe6\x61\xcb\x62\x32\x62\x34\x64\xce\x64\xca\x64\xd8\x64\xe0\x64\xf0\x64\xe6\x64\xec\x64\xf1\x64\xe2\x64\xed\x65\x82\x65\x83\x66\xd9\x66\xd6\x6a\x80\x6a\x94\x6a\x84\x6a\xa2\x6a\x9c\x6a\xdb\x6a\xa3\x6a\x7e\x6a\x97\x6a\x90\x6a\xa0\x6b\x5c\x6b\xae\x6b\xda\x00\x00\x00\x00", /* 6400 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6c\x08\x6f\xd8\x6f\xf1\x6f\xdf\x6f\xe0\x6f\xdb\x6f\xe4\x6f\xeb\x6f\xef\x6f\x80\x6f\xec\x6f\xe1\x6f\xe9\x6f\xd5\x6f\xee\x6f\xf0\x71\xe7\x71\xdf\x71\xee\x71\xe6\x71\xe5\x71\xed\x71\xec\x71\xf4\x71\xe0\x72\x35\x72\x46\x73\x70\x73\x72\x74\xa9\x74\xb0\x74\xa6\x74\xa8\x76\x46\x76\x42\x76\x4c\x76\xea\x77\xb3\x77\xaa\x77\xb0\x77\xac\x77\xa7\x77\xad\x77\xef\x78\xf7\x78\xfa\x78\xf4\x78\xef\x79\x01\x79\xa7\x79\xaa\x7a\x57\x7a\xbf\x7c\x07\x7c\x0d\x7b\xfe\x7b\xf7\x7c\x0c\x7b\xe0\x7c\xe0\x7c\xdc\x7c\xde\x7c\xe2", /* 6480 */ "\x00\x00\x7c\xdf\x7c\xd9\x7c\xdd\x7e\x2e\x7e\x3e\x7e\x46\x7e\x37\x7e\x32\x7e\x43\x7e\x2b\x7e\x3d\x7e\x31\x7e\x45\x7e\x41\x7e\x34\x7e\x39\x7e\x48\x7e\x35\x7e\x3f\x7e\x2f\x7f\x44\x7f\xf3\x7f\xfc\x80\x71\x80\x72\x80\x70\x80\x6f\x80\x73\x81\xc6\x81\xc3\x81\xba\x81\xc2\x81\xc0\x81\xbf\x81\xbd\x81\xc9\x81\xbe\x81\xe8\x82\x09\x82\x71\x85\xaa\x85\x84\x85\x7e\x85\x9c\x85\x91\x85\x94\x85\xaf\x85\x9b\x85\x87\x85\xa8\x85\x8a\x86\x67\x87\xc0\x87\xd1\x87\xb3\x87\xd2\x87\xc6\x87\xab\x87\xbb\x87\xba\x87\xc8\x87\xcb\x89\x3b\x89\x36\x89\x44\x89\x38\x89\x3d\x89\xac\x8b\x0e\x8b\x17\x8b\x19\x8b\x1b\x8b\x0a\x8b\x20\x8b\x1d\x8b\x04\x8b\x10\x8c\x41\x8c\x3f\x8c\x73\x8c\xfa\x8c\xfd\x8c\xfc\x8c\xf8\x8c\xfb\x8d\xa8\x8e\x49\x8e\x4b\x8e\x48\x8e\x4a\x8f\x44\x8f\x3e\x8f\x42\x8f\x45\x8f\x3f\x90\x7f\x90\x7d\x90\x84\x90\x81\x90\x82\x90\x80\x91\x39\x91\xa3\x91\x9e\x91\x9c\x93\x4d\x93\x82\x93\x28\x93\x75\x93\x4a\x93\x65\x93\x4b\x93\x18\x93\x7e\x93\x6c\x93\x5b\x93\x70\x93\x5a\x93\x54\x95\xca\x95\xcb\x95\xcc\x95\xc8\x95\xc6\x96\xb1\x00\x00\x00\x00", /* 6500 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x96\xb8\x96\xd6\x97\x1c\x97\x1e\x97\xa0\x97\xd3\x98\x46\x98\xb6\x99\x35\x9a\x01\x99\xff\x9b\xae\x9b\xab\x9b\xaa\x9b\xad\x9d\x3b\x9d\x3f\x9e\x8b\x9e\xcf\x9e\xde\x9e\xdc\x9e\xdd\x9e\xdb\x9f\x3e\x9f\x4b\x53\xe2\x56\x95\x56\xae\x58\xd9\x58\xd8\x5b\x38\x5f\x5e\x61\xe3\x62\x33\x64\xf4\x64\xf2\x64\xfe\x65\x06\x64\xfa\x64\xfb\x64\xf7\x65\xb7\x66\xdc\x67\x26\x6a\xb3\x6a\xac\x6a\xc3\x6a\xbb\x6a\xb8\x6a\xc2\x6a\xae\x6a\xaf\x6b\x5f\x6b\x78\x6b\xaf\x70\x09\x70\x0b\x6f\xfe\x70\x06\x6f\xfa\x70\x11\x70\x0f\x71\xfb", /* 6580 */ "\x00\x00\x71\xfc\x71\xfe\x71\xf8\x73\x77\x73\x75\x74\xa7\x74\xbf\x75\x15\x76\x56\x76\x58\x76\x52\x77\xbd\x77\xbf\x77\xbb\x77\xbc\x79\x0e\x79\xae\x7a\x61\x7a\x62\x7a\x60\x7a\xc4\x7a\xc5\x7c\x2b\x7c\x27\x7c\x2a\x7c\x1e\x7c\x23\x7c\x21\x7c\xe7\x7e\x54\x7e\x55\x7e\x5e\x7e\x5a\x7e\x61\x7e\x52\x7e\x59\x7f\x48\x7f\xf9\x7f\xfb\x80\x77\x80\x76\x81\xcd\x81\xcf\x82\x0a\x85\xcf\x85\xa9\x85\xcd\x85\xd0\x85\xc9\x85\xb0\x85\xba\x85\xb9\x85\xa6\x87\xef\x87\xec\x87\xf2\x87\xe0\x89\x86\x89\xb2\x89\xf4\x8b\x28\x8b\x39\x8b\x2c\x8b\x2b\x8c\x50\x8d\x05\x8e\x59\x8e\x63\x8e\x66\x8e\x64\x8e\x5f\x8e\x55\x8e\xc0\x8f\x49\x8f\x4d\x90\x87\x90\x83\x90\x88\x91\xab\x91\xac\x91\xd0\x93\x94\x93\x8a\x93\x96\x93\xa2\x93\xb3\x93\xae\x93\xac\x93\xb0\x93\x98\x93\x9a\x93\x97\x95\xd4\x95\xd6\x95\xd0\x95\xd5\x96\xe2\x96\xdc\x96\xd9\x96\xdb\x96\xde\x97\x24\x97\xa3\x97\xa6\x97\xad\x97\xf9\x98\x4d\x98\x4f\x98\x4c\x98\x4e\x98\x53\x98\xba\x99\x3e\x99\x3f\x99\x3d\x99\x2e\x99\xa5\x9a\x0e\x9a\xc1\x9b\x03\x9b\x06\x9b\x4f\x9b\x4e\x9b\x4d\x9b\xca\x00\x00\x00\x00", /* 6600 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x9b\xc9\x9b\xfd\x9b\xc8\x9b\xc0\x9d\x51\x9d\x5d\x9d\x60\x9e\xe0\x9f\x15\x9f\x2c\x51\x33\x56\xa5\x58\xde\x58\xdf\x58\xe2\x5b\xf5\x9f\x90\x5e\xec\x61\xf2\x61\xf7\x61\xf6\x61\xf5\x65\x00\x65\x0f\x66\xe0\x66\xdd\x6a\xe5\x6a\xdd\x6a\xda\x6a\xd3\x70\x1b\x70\x1f\x70\x28\x70\x1a\x70\x1d\x70\x15\x70\x18\x72\x06\x72\x0d\x72\x58\x72\xa2\x73\x78\x73\x7a\x74\xbd\x74\xca\x74\xe3\x75\x87\x75\x86\x76\x5f\x76\x61\x77\xc7\x79\x19\x79\xb1\x7a\x6b\x7a\x69\x7c\x3e\x7c\x3f\x7c\x38\x7c\x3d\x7c\x37\x7c\x40\x7e\x6b\x7e\x6d", /* 6680 */ "\x00\x00\x7e\x79\x7e\x69\x7e\x6a\x7f\x85\x7e\x73\x7f\xb6\x7f\xb9\x7f\xb8\x81\xd8\x85\xe9\x85\xdd\x85\xea\x85\xd5\x85\xe4\x85\xe5\x85\xf7\x87\xfb\x88\x05\x88\x0d\x87\xf9\x87\xfe\x89\x60\x89\x5f\x89\x56\x89\x5e\x8b\x41\x8b\x5c\x8b\x58\x8b\x49\x8b\x5a\x8b\x4e\x8b\x4f\x8b\x46\x8b\x59\x8d\x08\x8d\x0a\x8e\x7c\x8e\x72\x8e\x87\x8e\x76\x8e\x6c\x8e\x7a\x8e\x74\x8f\x54\x8f\x4e\x8f\xad\x90\x8a\x90\x8b\x91\xb1\x91\xae\x93\xe1\x93\xd1\x93\xdf\x93\xc3\x93\xc8\x93\xdc\x93\xdd\x93\xd6\x93\xe2\x93\xcd\x93\xd8\x93\xe4\x93\xd7\x93\xe8\x95\xdc\x96\xb4\x96\xe3\x97\x2a\x97\x27\x97\x61\x97\xdc\x97\xfb\x98\x5e\x98\x58\x98\x5b\x98\xbc\x99\x45\x99\x49\x9a\x16\x9a\x19\x9b\x0d\x9b\xe8\x9b\xe7\x9b\xd6\x9b\xdb\x9d\x89\x9d\x61\x9d\x72\x9d\x6a\x9d\x6c\x9e\x92\x9e\x97\x9e\x93\x9e\xb4\x52\xf8\x56\xa8\x56\xb7\x56\xb6\x56\xb4\x56\xbc\x58\xe4\x5b\x40\x5b\x43\x5b\x7d\x5b\xf6\x5d\xc9\x61\xf8\x61\xfa\x65\x18\x65\x14\x65\x19\x66\xe6\x67\x27\x6a\xec\x70\x3e\x70\x30\x70\x32\x72\x10\x73\x7b\x74\xcf\x76\x62\x76\x65\x79\x26\x79\x2a\x79\x2c\x00\x00\x00\x00", /* 6700 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x79\x2b\x7a\xc7\x7a\xf6\x7c\x4c\x7c\x43\x7c\x4d\x7c\xef\x7c\xf0\x8f\xae\x7e\x7d\x7e\x7c\x7e\x82\x7f\x4c\x80\x00\x81\xda\x82\x66\x85\xfb\x85\xf9\x86\x11\x85\xfa\x86\x06\x86\x0b\x86\x07\x86\x0a\x88\x14\x88\x15\x89\x64\x89\xba\x89\xf8\x8b\x70\x8b\x6c\x8b\x66\x8b\x6f\x8b\x5f\x8b\x6b\x8d\x0f\x8d\x0d\x8e\x89\x8e\x81\x8e\x85\x8e\x82\x91\xb4\x91\xcb\x94\x18\x94\x03\x93\xfd\x95\xe1\x97\x30\x98\xc4\x99\x52\x99\x51\x99\xa8\x9a\x2b\x9a\x30\x9a\x37\x9a\x35\x9c\x13\x9c\x0d\x9e\x79\x9e\xb5\x9e\xe8\x9f\x2f\x9f\x5f", /* 6780 */ "\x00\x00\x9f\x63\x9f\x61\x51\x37\x51\x38\x56\xc1\x56\xc0\x56\xc2\x59\x14\x5c\x6c\x5d\xcd\x61\xfc\x61\xfe\x65\x1d\x65\x1c\x65\x95\x66\xe9\x6a\xfb\x6b\x04\x6a\xfa\x6b\xb2\x70\x4c\x72\x1b\x72\xa7\x74\xd6\x74\xd4\x76\x69\x77\xd3\x7c\x50\x7e\x8f\x7e\x8c\x7f\xbc\x86\x17\x86\x2d\x86\x1a\x88\x23\x88\x22\x88\x21\x88\x1f\x89\x6a\x89\x6c\x89\xbd\x8b\x74\x8b\x77\x8b\x7d\x8d\x13\x8e\x8a\x8e\x8d\x8e\x8b\x8f\x5f\x8f\xaf\x91\xba\x94\x2e\x94\x33\x94\x35\x94\x3a\x94\x38\x94\x32\x94\x2b\x95\xe2\x97\x38\x97\x39\x97\x32\x97\xff\x98\x67\x98\x65\x99\x57\x9a\x45\x9a\x43\x9a\x40\x9a\x3e\x9a\xcf\x9b\x54\x9b\x51\x9c\x2d\x9c\x25\x9d\xaf\x9d\xb4\x9d\xc2\x9d\xb8\x9e\x9d\x9e\xef\x9f\x19\x9f\x5c\x9f\x66\x9f\x67\x51\x3c\x51\x3b\x56\xc8\x56\xca\x56\xc9\x5b\x7f\x5d\xd4\x5d\xd2\x5f\x4e\x61\xff\x65\x24\x6b\x0a\x6b\x61\x70\x51\x70\x58\x73\x80\x74\xe4\x75\x8a\x76\x6e\x76\x6c\x79\xb3\x7c\x60\x7c\x5f\x80\x7e\x80\x7d\x81\xdf\x89\x72\x89\x6f\x89\xfc\x8b\x80\x8d\x16\x8d\x17\x8e\x91\x8e\x93\x8f\x61\x91\x48\x94\x44\x94\x51\x94\x52\x97\x3d\x00\x00\x00\x00", /* 6800 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x97\x3e\x97\xc3\x97\xc1\x98\x6b\x99\x55\x9a\x55\x9a\x4d\x9a\xd2\x9b\x1a\x9c\x49\x9c\x31\x9c\x3e\x9c\x3b\x9d\xd3\x9d\xd7\x9f\x34\x9f\x6c\x9f\x6a\x9f\x94\x56\xcc\x5d\xd6\x62\x00\x65\x23\x65\x2b\x65\x2a\x66\xec\x6b\x10\x74\xda\x7a\xca\x7c\x64\x7c\x63\x7c\x65\x7e\x93\x7e\x96\x7e\x94\x81\xe2\x86\x38\x86\x3f\x88\x31\x8b\x8a\x90\x90\x90\x8f\x94\x63\x94\x60\x94\x64\x97\x68\x98\x6f\x99\x5c\x9a\x5a\x9a\x5b\x9a\x57\x9a\xd3\x9a\xd4\x9a\xd1\x9c\x54\x9c\x57\x9c\x56\x9d\xe5\x9e\x9f\x9e\xf4\x56\xd1\x58\xe9\x65\x2c", /* 6880 */ "\x00\x00\x70\x5e\x76\x71\x76\x72\x77\xd7\x7f\x50\x7f\x88\x88\x36\x88\x39\x88\x62\x8b\x93\x8b\x92\x8b\x96\x82\x77\x8d\x1b\x91\xc0\x94\x6a\x97\x42\x97\x48\x97\x44\x97\xc6\x98\x70\x9a\x5f\x9b\x22\x9b\x58\x9c\x5f\x9d\xf9\x9d\xfa\x9e\x7c\x9e\x7d\x9f\x07\x9f\x77\x9f\x72\x5e\xf3\x6b\x16\x70\x63\x7c\x6c\x7c\x6e\x88\x3b\x89\xc0\x8e\xa1\x91\xc1\x94\x72\x94\x70\x98\x71\x99\x5e\x9a\xd6\x9b\x23\x9e\xcc\x70\x64\x77\xda\x8b\x9a\x94\x77\x97\xc9\x9a\x62\x9a\x65\x7e\x9c\x8b\x9c\x8e\xaa\x91\xc5\x94\x7d\x94\x7e\x94\x7c\x9c\x77\x9c\x78\x9e\xf7\x8c\x54\x94\x7f\x9e\x1a\x72\x28\x9a\x6a\x9b\x31\x9e\x1b\x9e\x1e\x7c\x72\x64\x91\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 6900 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4e\x42\x4e\x5c\x51\xf5\x53\x1a\x53\x82\x4e\x07\x4e\x0c\x4e\x47\x4e\x8d\x56\xd7\xfa\x0c\x5c\x6e\x5f\x73\x4e\x0f\x51\x87\x4e\x0e\x4e\x2e\x4e\x93\x4e\xc2\x4e\xc9\x4e\xc8\x51\x98\x52\xfc\x53\x6c\x53\xb9\x57\x20\x59\x03\x59\x2c\x5c\x10\x5d\xff\x65\xe1\x6b\xb3\x6b\xcc\x6c\x14\x72\x3f\x4e\x31\x4e\x3c\x4e\xe8\x4e\xdc\x4e\xe9\x4e\xe1\x4e\xdd\x4e\xda\x52\x0c\x53\x1c\x53\x4c\x57\x22\x57\x23\x59\x17\x59\x2f\x5b\x81\x5b\x84\x5c\x12\x5c\x3b\x5c\x74\x5c\x73\x5e\x04\x5e\x80\x5e\x82\x5f\xc9\x62\x09\x62\x50\x6c\x15", /* 6980 */ "\x00\x00\x6c\x36\x6c\x43\x6c\x3f\x6c\x3b\x72\xae\x72\xb0\x73\x8a\x79\xb8\x80\x8a\x96\x1e\x4f\x0e\x4f\x18\x4f\x2c\x4e\xf5\x4f\x14\x4e\xf1\x4f\x00\x4e\xf7\x4f\x08\x4f\x1d\x4f\x02\x4f\x05\x4f\x22\x4f\x13\x4f\x04\x4e\xf4\x4f\x12\x51\xb1\x52\x13\x52\x09\x52\x10\x52\xa6\x53\x22\x53\x1f\x53\x4d\x53\x8a\x54\x07\x56\xe1\x56\xdf\x57\x2e\x57\x2a\x57\x34\x59\x3c\x59\x80\x59\x7c\x59\x85\x59\x7b\x59\x7e\x59\x77\x59\x7f\x5b\x56\x5c\x15\x5c\x25\x5c\x7c\x5c\x7a\x5c\x7b\x5c\x7e\x5d\xdf\x5e\x75\x5e\x84\x5f\x02\x5f\x1a\x5f\x74\x5f\xd5\x5f\xd4\x5f\xcf\x62\x65\x62\x5c\x62\x5e\x62\x64\x62\x61\x62\x66\x62\x62\x62\x59\x62\x60\x62\x5a\x65\xef\x65\xee\x67\x3e\x67\x39\x67\x38\x67\x3b\x67\x3a\x67\x3f\x67\x3c\x67\x33\x6c\x18\x6c\x46\x6c\x52\x6c\x5c\x6c\x4f\x6c\x4a\x6c\x54\x6c\x4b\x6c\x4c\x70\x71\x72\x5e\x72\xb4\x72\xb5\x73\x8e\x75\x2a\x76\x7f\x7a\x75\x7f\x51\x82\x78\x82\x7c\x82\x80\x82\x7d\x82\x7f\x86\x4d\x89\x7e\x90\x99\x90\x97\x90\x98\x90\x9b\x90\x94\x96\x22\x96\x24\x96\x20\x96\x23\x4f\x56\x4f\x3b\x4f\x62\x4f\x49\x4f\x53\x00\x00\x00\x00", /* 6a00 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4f\x64\x4f\x3e\x4f\x67\x4f\x52\x4f\x5f\x4f\x41\x4f\x58\x4f\x2d\x4f\x33\x4f\x3f\x4f\x61\x51\x8f\x51\xb9\x52\x1c\x52\x1e\x52\x21\x52\xad\x52\xae\x53\x09\x53\x63\x53\x72\x53\x8e\x53\x8f\x54\x30\x54\x37\x54\x2a\x54\x54\x54\x45\x54\x19\x54\x1c\x54\x25\x54\x18\x54\x3d\x54\x4f\x54\x41\x54\x28\x54\x24\x54\x47\x56\xee\x56\xe7\x56\xe5\x57\x41\x57\x45\x57\x4c\x57\x49\x57\x4b\x57\x52\x59\x06\x59\x40\x59\xa6\x59\x98\x59\xa0\x59\x97\x59\x8e\x59\xa2\x59\x90\x59\x8f\x59\xa7\x59\xa1\x5b\x8e\x5b\x92\x5c\x28\x5c\x2a", /* 6a80 */ "\x00\x00\x5c\x8d\x5c\x8f\x5c\x88\x5c\x8b\x5c\x89\x5c\x92\x5c\x8a\x5c\x86\x5c\x93\x5c\x95\x5d\xe0\x5e\x0a\x5e\x0e\x5e\x8b\x5e\x89\x5e\x8c\x5e\x88\x5e\x8d\x5f\x05\x5f\x1d\x5f\x78\x5f\x76\x5f\xd2\x5f\xd1\x5f\xd0\x5f\xed\x5f\xe8\x5f\xee\x5f\xf3\x5f\xe1\x5f\xe4\x5f\xe3\x5f\xfa\x5f\xef\x5f\xf7\x5f\xfb\x60\x00\x5f\xf4\x62\x3a\x62\x83\x62\x8c\x62\x8e\x62\x8f\x62\x94\x62\x87\x62\x71\x62\x7b\x62\x7a\x62\x70\x62\x81\x62\x88\x62\x77\x62\x7d\x62\x72\x62\x74\x65\x37\x65\xf0\x65\xf4\x65\xf3\x65\xf2\x65\xf5\x67\x45\x67\x47\x67\x59\x67\x55\x67\x4c\x67\x48\x67\x5d\x67\x4d\x67\x5a\x67\x4b\x6b\xd0\x6c\x19\x6c\x1a\x6c\x78\x6c\x67\x6c\x6b\x6c\x84\x6c\x8b\x6c\x8f\x6c\x71\x6c\x6f\x6c\x69\x6c\x9a\x6c\x6d\x6c\x87\x6c\x95\x6c\x9c\x6c\x66\x6c\x73\x6c\x65\x6c\x7b\x6c\x8e\x70\x74\x70\x7a\x72\x63\x72\xbf\x72\xbd\x72\xc3\x72\xc6\x72\xc1\x72\xba\x72\xc5\x73\x95\x73\x97\x73\x93\x73\x94\x73\x92\x75\x3a\x75\x39\x75\x94\x75\x95\x76\x81\x79\x3d\x80\x34\x80\x95\x80\x99\x80\x90\x80\x92\x80\x9c\x82\x90\x82\x8f\x82\x85\x82\x8e\x82\x91\x00\x00\x00\x00", /* 6b00 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x82\x93\x82\x8a\x82\x83\x82\x84\x8c\x78\x8f\xc9\x8f\xbf\x90\x9f\x90\xa1\x90\xa5\x90\x9e\x90\xa7\x90\xa0\x96\x30\x96\x28\x96\x2f\x96\x2d\x4e\x33\x4f\x98\x4f\x7c\x4f\x85\x4f\x7d\x4f\x80\x4f\x87\x4f\x76\x4f\x74\x4f\x89\x4f\x84\x4f\x77\x4f\x4c\x4f\x97\x4f\x6a\x4f\x9a\x4f\x79\x4f\x81\x4f\x78\x4f\x90\x4f\x9c\x4f\x94\x4f\x9e\x4f\x92\x4f\x82\x4f\x95\x4f\x6b\x4f\x6e\x51\x9e\x51\xbc\x51\xbe\x52\x35\x52\x32\x52\x33\x52\x46\x52\x31\x52\xbc\x53\x0a\x53\x0b\x53\x3c\x53\x92\x53\x94\x54\x87\x54\x7f\x54\x81\x54\x91", /* 6b80 */ "\x00\x00\x54\x82\x54\x88\x54\x6b\x54\x7a\x54\x7e\x54\x65\x54\x6c\x54\x74\x54\x66\x54\x8d\x54\x6f\x54\x61\x54\x60\x54\x98\x54\x63\x54\x67\x54\x64\x56\xf7\x56\xf9\x57\x6f\x57\x72\x57\x6d\x57\x6b\x57\x71\x57\x70\x57\x76\x57\x80\x57\x75\x57\x7b\x57\x73\x57\x74\x57\x62\x57\x68\x57\x7d\x59\x0c\x59\x45\x59\xb5\x59\xba\x59\xcf\x59\xce\x59\xb2\x59\xcc\x59\xc1\x59\xb6\x59\xbc\x59\xc3\x59\xd6\x59\xb1\x59\xbd\x59\xc0\x59\xc8\x59\xb4\x59\xc7\x5b\x62\x5b\x65\x5b\x93\x5b\x95\x5c\x44\x5c\x47\x5c\xae\x5c\xa4\x5c\xa0\x5c\xb5\x5c\xaf\x5c\xa8\x5c\xac\x5c\x9f\x5c\xa3\x5c\xad\x5c\xa2\x5c\xaa\x5c\xa7\x5c\x9d\x5c\xa5\x5c\xb6\x5c\xb0\x5c\xa6\x5e\x17\x5e\x14\x5e\x19\x5f\x28\x5f\x22\x5f\x23\x5f\x24\x5f\x54\x5f\x82\x5f\x7e\x5f\x7d\x5f\xde\x5f\xe5\x60\x2d\x60\x26\x60\x19\x60\x32\x60\x0b\x60\x34\x60\x0a\x60\x17\x60\x33\x60\x1a\x60\x1e\x60\x2c\x60\x22\x60\x0d\x60\x10\x60\x2e\x60\x13\x60\x11\x60\x0c\x60\x09\x60\x1c\x62\x14\x62\x3d\x62\xad\x62\xb4\x62\xd1\x62\xbe\x62\xaa\x62\xb6\x62\xca\x62\xae\x62\xb3\x62\xaf\x62\xbb\x62\xa9\x00\x00\x00\x00", /* 6c00 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x62\xb0\x62\xb8\x65\x3d\x65\xa8\x65\xbb\x66\x09\x65\xfc\x66\x04\x66\x12\x66\x08\x65\xfb\x66\x03\x66\x0b\x66\x0d\x66\x05\x65\xfd\x66\x11\x66\x10\x66\xf6\x67\x0a\x67\x85\x67\x6c\x67\x8e\x67\x92\x67\x76\x67\x7b\x67\x98\x67\x86\x67\x84\x67\x74\x67\x8d\x67\x8c\x67\x7a\x67\x9f\x67\x91\x67\x99\x67\x83\x67\x7d\x67\x81\x67\x78\x67\x79\x67\x94\x6b\x25\x6b\x80\x6b\x7e\x6b\xde\x6c\x1d\x6c\x93\x6c\xec\x6c\xeb\x6c\xee\x6c\xd9\x6c\xb6\x6c\xd4\x6c\xad\x6c\xe7\x6c\xb7\x6c\xd0\x6c\xc2\x6c\xba\x6c\xc3\x6c\xc6\x6c\xed", /* 6c80 */ "\x00\x00\x6c\xf2\x6c\xd2\x6c\xdd\x6c\xb4\x6c\x8a\x6c\x9d\x6c\x80\x6c\xde\x6c\xc0\x6d\x30\x6c\xcd\x6c\xc7\x6c\xb0\x6c\xf9\x6c\xcf\x6c\xe9\x6c\xd1\x70\x94\x70\x98\x70\x85\x70\x93\x70\x86\x70\x84\x70\x91\x70\x96\x70\x82\x70\x9a\x70\x83\x72\x6a\x72\xd6\x72\xcb\x72\xd8\x72\xc9\x72\xdc\x72\xd2\x72\xd4\x72\xda\x72\xcc\x72\xd1\x73\xa4\x73\xa1\x73\xad\x73\xa6\x73\xa2\x73\xa0\x73\xac\x73\x9d\x74\xdd\x74\xe8\x75\x3f\x75\x40\x75\x3e\x75\x8c\x75\x98\x76\xaf\x76\xf3\x76\xf1\x76\xf0\x76\xf5\x77\xf8\x77\xfc\x77\xf9\x77\xfb\x77\xfa\x77\xf7\x79\x42\x79\x3f\x79\xc5\x7a\x78\x7a\x7b\x7a\xfb\x7c\x75\x7c\xfd\x80\x35\x80\x8f\x80\xae\x80\xa3\x80\xb8\x80\xb5\x80\xad\x82\x20\x82\xa0\x82\xc0\x82\xab\x82\x9a\x82\x98\x82\x9b\x82\xb5\x82\xa7\x82\xae\x82\xbc\x82\x9e\x82\xba\x82\xb4\x82\xa8\x82\xa1\x82\xa9\x82\xc2\x82\xa4\x82\xc3\x82\xb6\x82\xa2\x86\x70\x86\x6f\x86\x6d\x86\x6e\x8c\x56\x8f\xd2\x8f\xcb\x8f\xd3\x8f\xcd\x8f\xd6\x8f\xd5\x8f\xd7\x90\xb2\x90\xb4\x90\xaf\x90\xb3\x90\xb0\x96\x39\x96\x3d\x96\x3c\x96\x3a\x96\x43\x4f\xcd\x00\x00\x00\x00", /* 6d00 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4f\xc5\x4f\xd3\x4f\xb2\x4f\xc9\x4f\xcb\x4f\xc1\x4f\xd4\x4f\xdc\x4f\xd9\x4f\xbb\x4f\xb3\x4f\xdb\x4f\xc7\x4f\xd6\x4f\xba\x4f\xc0\x4f\xb9\x4f\xec\x52\x44\x52\x49\x52\xc0\x52\xc2\x53\x3d\x53\x7c\x53\x97\x53\x96\x53\x99\x53\x98\x54\xba\x54\xa1\x54\xad\x54\xa5\x54\xcf\x54\xc3\x83\x0d\x54\xb7\x54\xae\x54\xd6\x54\xb6\x54\xc5\x54\xc6\x54\xa0\x54\x70\x54\xbc\x54\xa2\x54\xbe\x54\x72\x54\xde\x54\xb0\x57\xb5\x57\x9e\x57\x9f\x57\xa4\x57\x8c\x57\x97\x57\x9d\x57\x9b\x57\x94\x57\x98\x57\x8f\x57\x99\x57\xa5\x57\x9a", /* 6d80 */ "\x00\x00\x57\x95\x58\xf4\x59\x0d\x59\x53\x59\xe1\x59\xde\x59\xee\x5a\x00\x59\xf1\x59\xdd\x59\xfa\x59\xfd\x59\xfc\x59\xf6\x59\xe4\x59\xf2\x59\xf7\x59\xdb\x59\xe9\x59\xf3\x59\xf5\x59\xe0\x59\xfe\x59\xf4\x59\xed\x5b\xa8\x5c\x4c\x5c\xd0\x5c\xd8\x5c\xcc\x5c\xd7\x5c\xcb\x5c\xdb\x5c\xde\x5c\xda\x5c\xc9\x5c\xc7\x5c\xca\x5c\xd6\x5c\xd3\x5c\xd4\x5c\xcf\x5c\xc8\x5c\xc6\x5c\xce\x5c\xdf\x5c\xf8\x5d\xf9\x5e\x21\x5e\x22\x5e\x23\x5e\x20\x5e\x24\x5e\xb0\x5e\xa4\x5e\xa2\x5e\x9b\x5e\xa3\x5e\xa5\x5f\x07\x5f\x2e\x5f\x56\x5f\x86\x60\x37\x60\x39\x60\x54\x60\x72\x60\x5e\x60\x45\x60\x53\x60\x47\x60\x49\x60\x5b\x60\x4c\x60\x40\x60\x42\x60\x5f\x60\x24\x60\x44\x60\x58\x60\x66\x60\x6e\x62\x42\x62\x43\x62\xcf\x63\x0d\x63\x0b\x62\xf5\x63\x0e\x63\x03\x62\xeb\x62\xf9\x63\x0f\x63\x0c\x62\xf8\x62\xf6\x63\x00\x63\x13\x63\x14\x62\xfa\x63\x15\x62\xfb\x62\xf0\x65\x41\x65\x43\x65\xaa\x65\xbf\x66\x36\x66\x21\x66\x32\x66\x35\x66\x1c\x66\x26\x66\x22\x66\x33\x66\x2b\x66\x3a\x66\x1d\x66\x34\x66\x39\x66\x2e\x67\x0f\x67\x10\x67\xc1\x67\xf2\x00\x00\x00\x00", /* 6e00 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x67\xc8\x67\xba\x67\xdc\x67\xbb\x67\xf8\x67\xd8\x67\xc0\x67\xb7\x67\xc5\x67\xeb\x67\xe4\x67\xdf\x67\xb5\x67\xcd\x67\xb3\x67\xf7\x67\xf6\x67\xee\x67\xe3\x67\xc2\x67\xb9\x67\xce\x67\xe7\x67\xf0\x67\xb2\x67\xfc\x67\xc6\x67\xed\x67\xcc\x67\xae\x67\xe6\x67\xdb\x67\xfa\x67\xc9\x67\xca\x67\xc3\x67\xea\x67\xcb\x6b\x28\x6b\x82\x6b\x84\x6b\xb6\x6b\xd6\x6b\xd8\x6b\xe0\x6c\x20\x6c\x21\x6d\x28\x6d\x34\x6d\x2d\x6d\x1f\x6d\x3c\x6d\x3f\x6d\x12\x6d\x0a\x6c\xda\x6d\x33\x6d\x04\x6d\x19\x6d\x3a\x6d\x1a\x6d\x11\x6d\x00", /* 6e80 */ "\x00\x00\x6d\x1d\x6d\x42\x6d\x01\x6d\x18\x6d\x37\x6d\x03\x6d\x0f\x6d\x40\x6d\x07\x6d\x20\x6d\x2c\x6d\x08\x6d\x22\x6d\x09\x6d\x10\x70\xb7\x70\x9f\x70\xbe\x70\xb1\x70\xb0\x70\xa1\x70\xb4\x70\xb5\x70\xa9\x72\x41\x72\x49\x72\x4a\x72\x6c\x72\x70\x72\x73\x72\x6e\x72\xca\x72\xe4\x72\xe8\x72\xeb\x72\xdf\x72\xea\x72\xe6\x72\xe3\x73\x85\x73\xcc\x73\xc2\x73\xc8\x73\xc5\x73\xb9\x73\xb6\x73\xb5\x73\xb4\x73\xeb\x73\xbf\x73\xc7\x73\xbe\x73\xc3\x73\xc6\x73\xb8\x73\xcb\x74\xec\x74\xee\x75\x2e\x75\x47\x75\x48\x75\xa7\x75\xaa\x76\x79\x76\xc4\x77\x08\x77\x03\x77\x04\x77\x05\x77\x0a\x76\xf7\x76\xfb\x76\xfa\x77\xe7\x77\xe8\x78\x06\x78\x11\x78\x12\x78\x05\x78\x10\x78\x0f\x78\x0e\x78\x09\x78\x03\x78\x13\x79\x4a\x79\x4c\x79\x4b\x79\x45\x79\x44\x79\xd5\x79\xcd\x79\xcf\x79\xd6\x79\xce\x7a\x80\x7a\x7e\x7a\xd1\x7b\x00\x7b\x01\x7c\x7a\x7c\x78\x7c\x79\x7c\x7f\x7c\x80\x7c\x81\x7d\x03\x7d\x08\x7d\x01\x7f\x58\x7f\x91\x7f\x8d\x7f\xbe\x80\x07\x80\x0e\x80\x0f\x80\x14\x80\x37\x80\xd8\x80\xc7\x80\xe0\x80\xd1\x80\xc8\x80\xc2\x80\xd0\x00\x00\x00\x00", /* 6f00 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\xc5\x80\xe3\x80\xd9\x80\xdc\x80\xca\x80\xd5\x80\xc9\x80\xcf\x80\xd7\x80\xe6\x80\xcd\x81\xff\x82\x21\x82\x94\x82\xd9\x82\xfe\x82\xf9\x83\x07\x82\xe8\x83\x00\x82\xd5\x83\x3a\x82\xeb\x82\xd6\x82\xf4\x82\xec\x82\xe1\x82\xf2\x82\xf5\x83\x0c\x82\xfb\x82\xf6\x82\xf0\x82\xea\x82\xe4\x82\xe0\x82\xfa\x82\xf3\x82\xed\x86\x77\x86\x74\x86\x7c\x86\x73\x88\x41\x88\x4e\x88\x67\x88\x6a\x88\x69\x89\xd3\x8a\x04\x8a\x07\x8d\x72\x8f\xe3\x8f\xe1\x8f\xee\x8f\xe0\x90\xf1\x90\xbd\x90\xbf\x90\xd5\x90\xc5\x90\xbe\x90\xc7", /* 6f80 */ "\x00\x00\x90\xcb\x90\xc8\x91\xd4\x91\xd3\x96\x54\x96\x4f\x96\x51\x96\x53\x96\x4a\x96\x4e\x50\x1e\x50\x05\x50\x07\x50\x13\x50\x22\x50\x30\x50\x1b\x4f\xf5\x4f\xf4\x50\x33\x50\x37\x50\x2c\x4f\xf6\x4f\xf7\x50\x17\x50\x1c\x50\x20\x50\x27\x50\x35\x50\x2f\x50\x31\x50\x0e\x51\x5a\x51\x94\x51\x93\x51\xca\x51\xc4\x51\xc5\x51\xc8\x51\xce\x52\x61\x52\x5a\x52\x52\x52\x5e\x52\x5f\x52\x55\x52\x62\x52\xcd\x53\x0e\x53\x9e\x55\x26\x54\xe2\x55\x17\x55\x12\x54\xe7\x54\xf3\x54\xe4\x55\x1a\x54\xff\x55\x04\x55\x08\x54\xeb\x55\x11\x55\x05\x54\xf1\x55\x0a\x54\xfb\x54\xf7\x54\xf8\x54\xe0\x55\x0e\x55\x03\x55\x0b\x57\x01\x57\x02\x57\xcc\x58\x32\x57\xd5\x57\xd2\x57\xba\x57\xc6\x57\xbd\x57\xbc\x57\xb8\x57\xb6\x57\xbf\x57\xc7\x57\xd0\x57\xb9\x57\xc1\x59\x0e\x59\x4a\x5a\x19\x5a\x16\x5a\x2d\x5a\x2e\x5a\x15\x5a\x0f\x5a\x17\x5a\x0a\x5a\x1e\x5a\x33\x5b\x6c\x5b\xa7\x5b\xad\x5b\xac\x5c\x03\x5c\x56\x5c\x54\x5c\xec\x5c\xff\x5c\xee\x5c\xf1\x5c\xf7\x5d\x00\x5c\xf9\x5e\x29\x5e\x28\x5e\xa8\x5e\xae\x5e\xaa\x5e\xac\x5f\x33\x5f\x30\x5f\x67\x00\x00\x00\x00", /* 7000 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x60\x5d\x60\x5a\x60\x67\x60\x41\x60\xa2\x60\x88\x60\x80\x60\x92\x60\x81\x60\x9d\x60\x83\x60\x95\x60\x9b\x60\x97\x60\x87\x60\x9c\x60\x8e\x62\x19\x62\x46\x62\xf2\x63\x10\x63\x56\x63\x2c\x63\x44\x63\x45\x63\x36\x63\x43\x63\xe4\x63\x39\x63\x4b\x63\x4a\x63\x3c\x63\x29\x63\x41\x63\x34\x63\x58\x63\x54\x63\x59\x63\x2d\x63\x47\x63\x33\x63\x5a\x63\x51\x63\x38\x63\x57\x63\x40\x63\x48\x65\x4a\x65\x46\x65\xc6\x65\xc3\x65\xc4\x65\xc2\x66\x4a\x66\x5f\x66\x47\x66\x51\x67\x12\x67\x13\x68\x1f\x68\x1a\x68\x49\x68\x32", /* 7080 */ "\x00\x00\x68\x33\x68\x3b\x68\x4b\x68\x4f\x68\x16\x68\x31\x68\x1c\x68\x35\x68\x2b\x68\x2d\x68\x2f\x68\x4e\x68\x44\x68\x34\x68\x1d\x68\x12\x68\x14\x68\x26\x68\x28\x68\x2e\x68\x4d\x68\x3a\x68\x25\x68\x20\x6b\x2c\x6b\x2f\x6b\x2d\x6b\x31\x6b\x34\x6b\x6d\x80\x82\x6b\x88\x6b\xe6\x6b\xe4\x6b\xe8\x6b\xe3\x6b\xe2\x6b\xe7\x6c\x25\x6d\x7a\x6d\x63\x6d\x64\x6d\x76\x6d\x0d\x6d\x61\x6d\x92\x6d\x58\x6d\x62\x6d\x6d\x6d\x6f\x6d\x91\x6d\x8d\x6d\xef\x6d\x7f\x6d\x86\x6d\x5e\x6d\x67\x6d\x60\x6d\x97\x6d\x70\x6d\x7c\x6d\x5f\x6d\x82\x6d\x98\x6d\x2f\x6d\x68\x6d\x8b\x6d\x7e\x6d\x80\x6d\x84\x6d\x16\x6d\x83\x6d\x7b\x6d\x7d\x6d\x75\x6d\x90\x70\xdc\x70\xd3\x70\xd1\x70\xdd\x70\xcb\x7f\x39\x70\xe2\x70\xd7\x70\xd2\x70\xde\x70\xe0\x70\xd4\x70\xcd\x70\xc5\x70\xc6\x70\xc7\x70\xda\x70\xce\x70\xe1\x72\x42\x72\x78\x72\x77\x72\x76\x73\x00\x72\xfa\x72\xf4\x72\xfe\x72\xf6\x72\xf3\x72\xfb\x73\x01\x73\xd3\x73\xd9\x73\xe5\x73\xd6\x73\xbc\x73\xe7\x73\xe3\x73\xe9\x73\xdc\x73\xd2\x73\xdb\x73\xd4\x73\xdd\x73\xda\x73\xd7\x73\xd8\x73\xe8\x74\xde\x00\x00\x00\x00", /* 7100 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x74\xdf\x74\xf4\x74\xf5\x75\x21\x75\x5b\x75\x5f\x75\xb0\x75\xc1\x75\xbb\x75\xc4\x75\xc0\x75\xbf\x75\xb6\x75\xba\x76\x8a\x76\xc9\x77\x1d\x77\x1b\x77\x10\x77\x13\x77\x12\x77\x23\x77\x11\x77\x15\x77\x19\x77\x1a\x77\x22\x77\x27\x78\x23\x78\x2c\x78\x22\x78\x35\x78\x2f\x78\x28\x78\x2e\x78\x2b\x78\x21\x78\x29\x78\x33\x78\x2a\x78\x31\x79\x54\x79\x5b\x79\x4f\x79\x5c\x79\x53\x79\x52\x79\x51\x79\xeb\x79\xec\x79\xe0\x79\xee\x79\xed\x79\xea\x79\xdc\x79\xde\x79\xdd\x7a\x86\x7a\x89\x7a\x85\x7a\x8b\x7a\x8c\x7a\x8a", /* 7180 */ "\x00\x00\x7a\x87\x7a\xd8\x7b\x10\x7b\x04\x7b\x13\x7b\x05\x7b\x0f\x7b\x08\x7b\x0a\x7b\x0e\x7b\x09\x7b\x12\x7c\x84\x7c\x91\x7c\x8a\x7c\x8c\x7c\x88\x7c\x8d\x7c\x85\x7d\x1e\x7d\x1d\x7d\x11\x7d\x0e\x7d\x18\x7d\x16\x7d\x13\x7d\x1f\x7d\x12\x7d\x0f\x7d\x0c\x7f\x5c\x7f\x61\x7f\x5e\x7f\x60\x7f\x5d\x7f\x5b\x7f\x96\x7f\x92\x7f\xc3\x7f\xc2\x7f\xc0\x80\x16\x80\x3e\x80\x39\x80\xfa\x80\xf2\x80\xf9\x80\xf5\x81\x01\x80\xfb\x81\x00\x82\x01\x82\x2f\x82\x25\x83\x33\x83\x2d\x83\x44\x83\x19\x83\x51\x83\x25\x83\x56\x83\x3f\x83\x41\x83\x26\x83\x1c\x83\x22\x83\x42\x83\x4e\x83\x1b\x83\x2a\x83\x08\x83\x3c\x83\x4d\x83\x16\x83\x24\x83\x20\x83\x37\x83\x2f\x83\x29\x83\x47\x83\x45\x83\x4c\x83\x53\x83\x1e\x83\x2c\x83\x4b\x83\x27\x83\x48\x86\x53\x86\x52\x86\xa2\x86\xa8\x86\x96\x86\x8d\x86\x91\x86\x9e\x86\x87\x86\x97\x86\x86\x86\x8b\x86\x9a\x86\x85\x86\xa5\x86\x99\x86\xa1\x86\xa7\x86\x95\x86\x98\x86\x8e\x86\x9d\x86\x90\x86\x94\x88\x43\x88\x44\x88\x6d\x88\x75\x88\x76\x88\x72\x88\x80\x88\x71\x88\x7f\x88\x6f\x88\x83\x88\x7e\x88\x74\x00\x00\x00\x00", /* 7200 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x88\x7c\x8a\x12\x8c\x47\x8c\x57\x8c\x7b\x8c\xa4\x8c\xa3\x8d\x76\x8d\x78\x8d\xb5\x8d\xb7\x8d\xb6\x8e\xd1\x8e\xd3\x8f\xfe\x8f\xf5\x90\x02\x8f\xff\x8f\xfb\x90\x04\x8f\xfc\x8f\xf6\x90\xd6\x90\xe0\x90\xd9\x90\xda\x90\xe3\x90\xdf\x90\xe5\x90\xd8\x90\xdb\x90\xd7\x90\xdc\x90\xe4\x91\x50\x91\x4e\x91\x4f\x91\xd5\x91\xe2\x91\xda\x96\x5c\x96\x5f\x96\xbc\x98\xe3\x9a\xdf\x9b\x2f\x4e\x7f\x50\x70\x50\x6a\x50\x61\x50\x5e\x50\x60\x50\x53\x50\x4b\x50\x5d\x50\x72\x50\x48\x50\x4d\x50\x41\x50\x5b\x50\x4a\x50\x62\x50\x15", /* 7280 */ "\x00\x00\x50\x45\x50\x5f\x50\x69\x50\x6b\x50\x63\x50\x64\x50\x46\x50\x40\x50\x6e\x50\x73\x50\x57\x50\x51\x51\xd0\x52\x6b\x52\x6d\x52\x6c\x52\x6e\x52\xd6\x52\xd3\x53\x2d\x53\x9c\x55\x75\x55\x76\x55\x3c\x55\x4d\x55\x50\x55\x34\x55\x2a\x55\x51\x55\x62\x55\x36\x55\x35\x55\x30\x55\x52\x55\x45\x55\x0c\x55\x32\x55\x65\x55\x4e\x55\x39\x55\x48\x55\x2d\x55\x3b\x55\x40\x55\x4b\x57\x0a\x57\x07\x57\xfb\x58\x14\x57\xe2\x57\xf6\x57\xdc\x57\xf4\x58\x00\x57\xed\x57\xfd\x58\x08\x57\xf8\x58\x0b\x57\xf3\x57\xcf\x58\x07\x57\xee\x57\xe3\x57\xf2\x57\xe5\x57\xec\x57\xe1\x58\x0e\x57\xfc\x58\x10\x57\xe7\x58\x01\x58\x0c\x57\xf1\x57\xe9\x57\xf0\x58\x0d\x58\x04\x59\x5c\x5a\x60\x5a\x58\x5a\x55\x5a\x67\x5a\x5e\x5a\x38\x5a\x35\x5a\x6d\x5a\x50\x5a\x5f\x5a\x65\x5a\x6c\x5a\x53\x5a\x64\x5a\x57\x5a\x43\x5a\x5d\x5a\x52\x5a\x44\x5a\x5b\x5a\x48\x5a\x8e\x5a\x3e\x5a\x4d\x5a\x39\x5a\x4c\x5a\x70\x5a\x69\x5a\x47\x5a\x51\x5a\x56\x5a\x42\x5a\x5c\x5b\x72\x5b\x6e\x5b\xc1\x5b\xc0\x5c\x59\x5d\x1e\x5d\x0b\x5d\x1d\x5d\x1a\x5d\x20\x5d\x0c\x5d\x28\x00\x00\x00\x00", /* 7300 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5d\x0d\x5d\x26\x5d\x25\x5d\x0f\x5d\x30\x5d\x12\x5d\x23\x5d\x1f\x5d\x2e\x5e\x3e\x5e\x34\x5e\xb1\x5e\xb4\x5e\xb9\x5e\xb2\x5e\xb3\x5f\x36\x5f\x38\x5f\x9b\x5f\x96\x5f\x9f\x60\x8a\x60\x90\x60\x86\x60\xbe\x60\xb0\x60\xba\x60\xd3\x60\xd4\x60\xcf\x60\xe4\x60\xd9\x60\xdd\x60\xc8\x60\xb1\x60\xdb\x60\xb7\x60\xca\x60\xbf\x60\xc3\x60\xcd\x60\xc0\x63\x32\x63\x65\x63\x8a\x63\x82\x63\x7d\x63\xbd\x63\x9e\x63\xad\x63\x9d\x63\x97\x63\xab\x63\x8e\x63\x6f\x63\x87\x63\x90\x63\x6e\x63\xaf\x63\x75\x63\x9c\x63\x6d\x63\xae", /* 7380 */ "\x00\x00\x63\x7c\x63\xa4\x63\x3b\x63\x9f\x63\x78\x63\x85\x63\x81\x63\x91\x63\x8d\x63\x70\x65\x53\x65\xcd\x66\x65\x66\x61\x66\x5b\x66\x59\x66\x5c\x66\x62\x67\x18\x68\x79\x68\x87\x68\x90\x68\x9c\x68\x6d\x68\x6e\x68\xae\x68\xab\x69\x56\x68\x6f\x68\xa3\x68\xac\x68\xa9\x68\x75\x68\x74\x68\xb2\x68\x8f\x68\x77\x68\x92\x68\x7c\x68\x6b\x68\x72\x68\xaa\x68\x80\x68\x71\x68\x7e\x68\x9b\x68\x96\x68\x8b\x68\xa0\x68\x89\x68\xa4\x68\x78\x68\x7b\x68\x91\x68\x8c\x68\x8a\x68\x7d\x6b\x36\x6b\x33\x6b\x37\x6b\x38\x6b\x91\x6b\x8f\x6b\x8d\x6b\x8e\x6b\x8c\x6c\x2a\x6d\xc0\x6d\xab\x6d\xb4\x6d\xb3\x6e\x74\x6d\xac\x6d\xe9\x6d\xe2\x6d\xb7\x6d\xf6\x6d\xd4\x6e\x00\x6d\xc8\x6d\xe0\x6d\xdf\x6d\xd6\x6d\xbe\x6d\xe5\x6d\xdc\x6d\xdd\x6d\xdb\x6d\xf4\x6d\xca\x6d\xbd\x6d\xed\x6d\xf0\x6d\xba\x6d\xd5\x6d\xc2\x6d\xcf\x6d\xc9\x6d\xd0\x6d\xf2\x6d\xd3\x6d\xfd\x6d\xd7\x6d\xcd\x6d\xe3\x6d\xbb\x70\xfa\x71\x0d\x70\xf7\x71\x17\x70\xf4\x71\x0c\x70\xf0\x71\x04\x70\xf3\x71\x10\x70\xfc\x70\xff\x71\x06\x71\x13\x71\x00\x70\xf8\x70\xf6\x71\x0b\x71\x02\x00\x00\x00\x00", /* 7400 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x71\x0e\x72\x7e\x72\x7b\x72\x7c\x72\x7f\x73\x1d\x73\x17\x73\x07\x73\x11\x73\x18\x73\x0a\x73\x08\x72\xff\x73\x0f\x73\x1e\x73\x88\x73\xf6\x73\xf8\x73\xf5\x74\x04\x74\x01\x73\xfd\x74\x07\x74\x00\x73\xfa\x73\xfc\x73\xff\x74\x0c\x74\x0b\x73\xf4\x74\x08\x75\x64\x75\x63\x75\xce\x75\xd2\x75\xcf\x75\xcb\x75\xcc\x75\xd1\x75\xd0\x76\x8f\x76\x89\x76\xd3\x77\x39\x77\x2f\x77\x2d\x77\x31\x77\x32\x77\x34\x77\x33\x77\x3d\x77\x25\x77\x3b\x77\x35\x78\x48\x78\x52\x78\x49\x78\x4d\x78\x4a\x78\x4c\x78\x26\x78\x45\x78\x50", /* 7480 */ "\x00\x00\x79\x64\x79\x67\x79\x69\x79\x6a\x79\x63\x79\x6b\x79\x61\x79\xbb\x79\xfa\x79\xf8\x79\xf6\x79\xf7\x7a\x8f\x7a\x94\x7a\x90\x7b\x35\x7b\x47\x7b\x34\x7b\x25\x7b\x30\x7b\x22\x7b\x24\x7b\x33\x7b\x18\x7b\x2a\x7b\x1d\x7b\x31\x7b\x2b\x7b\x2d\x7b\x2f\x7b\x32\x7b\x38\x7b\x1a\x7b\x23\x7c\x94\x7c\x98\x7c\x96\x7c\xa3\x7d\x35\x7d\x3d\x7d\x38\x7d\x36\x7d\x3a\x7d\x45\x7d\x2c\x7d\x29\x7d\x41\x7d\x47\x7d\x3e\x7d\x3f\x7d\x4a\x7d\x3b\x7d\x28\x7f\x63\x7f\x95\x7f\x9c\x7f\x9d\x7f\x9b\x7f\xca\x7f\xcb\x7f\xcd\x7f\xd0\x7f\xd1\x7f\xc7\x7f\xcf\x7f\xc9\x80\x1f\x80\x1e\x80\x1b\x80\x47\x80\x43\x80\x48\x81\x18\x81\x25\x81\x19\x81\x1b\x81\x2d\x81\x1f\x81\x2c\x81\x1e\x81\x21\x81\x15\x81\x27\x81\x1d\x81\x22\x82\x11\x82\x38\x82\x33\x82\x3a\x82\x34\x82\x32\x82\x74\x83\x90\x83\xa3\x83\xa8\x83\x8d\x83\x7a\x83\x73\x83\xa4\x83\x74\x83\x8f\x83\x81\x83\x95\x83\x99\x83\x75\x83\x94\x83\xa9\x83\x7d\x83\x83\x83\x8c\x83\x9d\x83\x9b\x83\xaa\x83\x8b\x83\x7e\x83\xa5\x83\xaf\x83\x88\x83\x97\x83\xb0\x83\x7f\x83\xa6\x83\x87\x83\xae\x83\x76\x00\x00\x00\x00", /* 7500 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x83\x9a\x86\x59\x86\x56\x86\xbf\x86\xb7\x86\xc2\x86\xc1\x86\xc5\x86\xba\x86\xb0\x86\xc8\x86\xb9\x86\xb3\x86\xb8\x86\xcc\x86\xb4\x86\xbb\x86\xbc\x86\xc3\x86\xbd\x86\xbe\x88\x52\x88\x89\x88\x95\x88\xa8\x88\xa2\x88\xaa\x88\x9a\x88\x91\x88\xa1\x88\x9f\x88\x98\x88\xa7\x88\x99\x88\x9b\x88\x97\x88\xa4\x88\xac\x88\x8c\x88\x93\x88\x8e\x89\x82\x89\xd6\x89\xd9\x89\xd5\x8a\x30\x8a\x27\x8a\x2c\x8a\x1e\x8c\x39\x8c\x3b\x8c\x5c\x8c\x5d\x8c\x7d\x8c\xa5\x8d\x7d\x8d\x7b\x8d\x79\x8d\xbc\x8d\xc2\x8d\xb9\x8d\xbf\x8d\xc1", /* 7580 */ "\x00\x00\x8e\xd8\x8e\xde\x8e\xdd\x8e\xdc\x8e\xd7\x8e\xe0\x8e\xe1\x90\x24\x90\x0b\x90\x11\x90\x1c\x90\x0c\x90\x21\x90\xef\x90\xea\x90\xf0\x90\xf4\x90\xf2\x90\xf3\x90\xd4\x90\xeb\x90\xec\x90\xe9\x91\x56\x91\x58\x91\x5a\x91\x53\x91\x55\x91\xec\x91\xf4\x91\xf1\x91\xf3\x91\xf8\x91\xe4\x91\xf9\x91\xea\x91\xeb\x91\xf7\x91\xe8\x91\xee\x95\x7a\x95\x86\x95\x88\x96\x7c\x96\x6d\x96\x6b\x96\x71\x96\x6f\x96\xbf\x97\x6a\x98\x04\x98\xe5\x99\x97\x50\x9b\x50\x95\x50\x94\x50\x9e\x50\x8b\x50\xa3\x50\x83\x50\x8c\x50\x8e\x50\x9d\x50\x68\x50\x9c\x50\x92\x50\x82\x50\x87\x51\x5f\x51\xd4\x53\x12\x53\x11\x53\xa4\x53\xa7\x55\x91\x55\xa8\x55\xa5\x55\xad\x55\x77\x56\x45\x55\xa2\x55\x93\x55\x88\x55\x8f\x55\xb5\x55\x81\x55\xa3\x55\x92\x55\xa4\x55\x7d\x55\x8c\x55\xa6\x55\x7f\x55\x95\x55\xa1\x55\x8e\x57\x0c\x58\x29\x58\x37\x58\x19\x58\x1e\x58\x27\x58\x23\x58\x28\x57\xf5\x58\x48\x58\x25\x58\x1c\x58\x1b\x58\x33\x58\x3f\x58\x36\x58\x2e\x58\x39\x58\x38\x58\x2d\x58\x2c\x58\x3b\x59\x61\x5a\xaf\x5a\x94\x5a\x9f\x5a\x7a\x5a\xa2\x5a\x9e\x00\x00\x00\x00", /* 7600 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5a\x78\x5a\xa6\x5a\x7c\x5a\xa5\x5a\xac\x5a\x95\x5a\xae\x5a\x37\x5a\x84\x5a\x8a\x5a\x97\x5a\x83\x5a\x8b\x5a\xa9\x5a\x7b\x5a\x7d\x5a\x8c\x5a\x9c\x5a\x8f\x5a\x93\x5a\x9d\x5b\xea\x5b\xcd\x5b\xcb\x5b\xd4\x5b\xd1\x5b\xca\x5b\xce\x5c\x0c\x5c\x30\x5d\x37\x5d\x43\x5d\x6b\x5d\x41\x5d\x4b\x5d\x3f\x5d\x35\x5d\x51\x5d\x4e\x5d\x55\x5d\x33\x5d\x3a\x5d\x52\x5d\x3d\x5d\x31\x5d\x59\x5d\x42\x5d\x39\x5d\x49\x5d\x38\x5d\x3c\x5d\x32\x5d\x36\x5d\x40\x5d\x45\x5e\x44\x5e\x41\x5f\x58\x5f\xa6\x5f\xa5\x5f\xab\x60\xc9\x60\xb9", /* 7680 */ "\x00\x00\x60\xcc\x60\xe2\x60\xce\x60\xc4\x61\x14\x60\xf2\x61\x0a\x61\x16\x61\x05\x60\xf5\x61\x13\x60\xf8\x60\xfc\x60\xfe\x60\xc1\x61\x03\x61\x18\x61\x1d\x61\x10\x60\xff\x61\x04\x61\x0b\x62\x4a\x63\x94\x63\xb1\x63\xb0\x63\xce\x63\xe5\x63\xe8\x63\xef\x63\xc3\x64\x9d\x63\xf3\x63\xca\x63\xe0\x63\xf6\x63\xd5\x63\xf2\x63\xf5\x64\x61\x63\xdf\x63\xbe\x63\xdd\x63\xdc\x63\xc4\x63\xd8\x63\xd3\x63\xc2\x63\xc7\x63\xcc\x63\xcb\x63\xc8\x63\xf0\x63\xd7\x63\xd9\x65\x32\x65\x67\x65\x6a\x65\x64\x65\x5c\x65\x68\x65\x65\x65\x8c\x65\x9d\x65\x9e\x65\xae\x65\xd0\x65\xd2\x66\x7c\x66\x6c\x66\x7b\x66\x80\x66\x71\x66\x79\x66\x6a\x66\x72\x67\x01\x69\x0c\x68\xd3\x69\x04\x68\xdc\x69\x2a\x68\xec\x68\xea\x68\xf1\x69\x0f\x68\xd6\x68\xf7\x68\xeb\x68\xe4\x68\xf6\x69\x13\x69\x10\x68\xf3\x68\xe1\x69\x07\x68\xcc\x69\x08\x69\x70\x68\xb4\x69\x11\x68\xef\x68\xc6\x69\x14\x68\xf8\x68\xd0\x68\xfd\x68\xfc\x68\xe8\x69\x0b\x69\x0a\x69\x17\x68\xce\x68\xc8\x68\xdd\x68\xde\x68\xe6\x68\xf4\x68\xd1\x69\x06\x68\xd4\x68\xe9\x69\x15\x69\x25\x68\xc7\x00\x00\x00\x00", /* 7700 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6b\x39\x6b\x3b\x6b\x3f\x6b\x3c\x6b\x94\x6b\x97\x6b\x99\x6b\x95\x6b\xbd\x6b\xf0\x6b\xf2\x6b\xf3\x6c\x30\x6d\xfc\x6e\x46\x6e\x47\x6e\x1f\x6e\x49\x6e\x88\x6e\x3c\x6e\x3d\x6e\x45\x6e\x62\x6e\x2b\x6e\x3f\x6e\x41\x6e\x5d\x6e\x73\x6e\x1c\x6e\x33\x6e\x4b\x6e\x40\x6e\x51\x6e\x3b\x6e\x03\x6e\x2e\x6e\x5e\x6e\x68\x6e\x5c\x6e\x61\x6e\x31\x6e\x28\x6e\x60\x6e\x71\x6e\x6b\x6e\x39\x6e\x22\x6e\x30\x6e\x53\x6e\x65\x6e\x27\x6e\x78\x6e\x64\x6e\x77\x6e\x55\x6e\x79\x6e\x52\x6e\x66\x6e\x35\x6e\x36\x6e\x5a\x71\x20\x71\x1e", /* 7780 */ "\x00\x00\x71\x2f\x70\xfb\x71\x2e\x71\x31\x71\x23\x71\x25\x71\x22\x71\x32\x71\x1f\x71\x28\x71\x3a\x71\x1b\x72\x4b\x72\x5a\x72\x88\x72\x89\x72\x86\x72\x85\x72\x8b\x73\x12\x73\x0b\x73\x30\x73\x22\x73\x31\x73\x33\x73\x27\x73\x32\x73\x2d\x73\x26\x73\x23\x73\x35\x73\x0c\x74\x2e\x74\x2c\x74\x30\x74\x2b\x74\x16\x74\x1a\x74\x21\x74\x2d\x74\x31\x74\x24\x74\x23\x74\x1d\x74\x29\x74\x20\x74\x32\x74\xfb\x75\x2f\x75\x6f\x75\x6c\x75\xe7\x75\xda\x75\xe1\x75\xe6\x75\xdd\x75\xdf\x75\xe4\x75\xd7\x76\x95\x76\x92\x76\xda\x77\x46\x77\x47\x77\x44\x77\x4d\x77\x45\x77\x4a\x77\x4e\x77\x4b\x77\x4c\x77\xde\x77\xec\x78\x60\x78\x64\x78\x65\x78\x5c\x78\x6d\x78\x71\x78\x6a\x78\x6e\x78\x70\x78\x69\x78\x68\x78\x5e\x78\x62\x79\x74\x79\x73\x79\x72\x79\x70\x7a\x02\x7a\x0a\x7a\x03\x7a\x0c\x7a\x04\x7a\x99\x7a\xe6\x7a\xe4\x7b\x4a\x7b\x3b\x7b\x44\x7b\x48\x7b\x4c\x7b\x4e\x7b\x40\x7b\x58\x7b\x45\x7c\xa2\x7c\x9e\x7c\xa8\x7c\xa1\x7d\x58\x7d\x6f\x7d\x63\x7d\x53\x7d\x56\x7d\x67\x7d\x6a\x7d\x4f\x7d\x6d\x7d\x5c\x7d\x6b\x7d\x52\x7d\x54\x7d\x69\x00\x00\x00\x00", /* 7800 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7d\x51\x7d\x5f\x7d\x4e\x7f\x3e\x7f\x3f\x7f\x65\x7f\x66\x7f\xa2\x7f\xa0\x7f\xa1\x7f\xd7\x80\x51\x80\x4f\x80\x50\x80\xfe\x80\xd4\x81\x43\x81\x4a\x81\x52\x81\x4f\x81\x47\x81\x3d\x81\x4d\x81\x3a\x81\xe6\x81\xee\x81\xf7\x81\xf8\x81\xf9\x82\x04\x82\x3c\x82\x3d\x82\x3f\x82\x75\x83\x3b\x83\xcf\x83\xf9\x84\x23\x83\xc0\x83\xe8\x84\x12\x83\xe7\x83\xe4\x83\xfc\x83\xf6\x84\x10\x83\xc6\x83\xc8\x83\xeb\x83\xe3\x83\xbf\x84\x01\x83\xdd\x83\xe5\x83\xd8\x83\xff\x83\xe1\x83\xcb\x83\xce\x83\xd6\x83\xf5\x83\xc9\x84\x09", /* 7880 */ "\x00\x00\x84\x0f\x83\xde\x84\x11\x84\x06\x83\xc2\x83\xf3\x83\xd5\x83\xfa\x83\xc7\x83\xd1\x83\xea\x84\x13\x83\xc3\x83\xec\x83\xee\x83\xc4\x83\xfb\x83\xd7\x83\xe2\x84\x1b\x83\xdb\x83\xfe\x86\xd8\x86\xe2\x86\xe6\x86\xd3\x86\xe3\x86\xda\x86\xea\x86\xdd\x86\xeb\x86\xdc\x86\xec\x86\xe9\x86\xd7\x86\xe8\x86\xd1\x88\x48\x88\x56\x88\x55\x88\xba\x88\xd7\x88\xb9\x88\xb8\x88\xc0\x88\xbe\x88\xb6\x88\xbc\x88\xb7\x88\xbd\x88\xb2\x89\x01\x88\xc9\x89\x95\x89\x98\x89\x97\x89\xdd\x89\xda\x89\xdb\x8a\x4e\x8a\x4d\x8a\x39\x8a\x59\x8a\x40\x8a\x57\x8a\x58\x8a\x44\x8a\x45\x8a\x52\x8a\x48\x8a\x51\x8a\x4a\x8a\x4c\x8a\x4f\x8c\x5f\x8c\x81\x8c\x80\x8c\xba\x8c\xbe\x8c\xb0\x8c\xb9\x8c\xb5\x8d\x84\x8d\x80\x8d\x89\x8d\xd8\x8d\xd3\x8d\xcd\x8d\xc7\x8d\xd6\x8d\xdc\x8d\xcf\x8d\xd5\x8d\xd9\x8d\xc8\x8d\xd7\x8d\xc5\x8e\xef\x8e\xf7\x8e\xfa\x8e\xf9\x8e\xe6\x8e\xee\x8e\xe5\x8e\xf5\x8e\xe7\x8e\xe8\x8e\xf6\x8e\xeb\x8e\xf1\x8e\xec\x8e\xf4\x8e\xe9\x90\x2d\x90\x34\x90\x2f\x91\x06\x91\x2c\x91\x04\x90\xff\x90\xfc\x91\x08\x90\xf9\x90\xfb\x91\x01\x00\x00\x00\x00", /* 7900 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x91\x00\x91\x07\x91\x05\x91\x03\x91\x61\x91\x64\x91\x5f\x91\x62\x91\x60\x92\x01\x92\x0a\x92\x25\x92\x03\x92\x1a\x92\x26\x92\x0f\x92\x0c\x92\x00\x92\x12\x91\xff\x91\xfd\x92\x06\x92\x04\x92\x27\x92\x02\x92\x1c\x92\x24\x92\x19\x92\x17\x92\x05\x92\x16\x95\x7b\x95\x8d\x95\x8c\x95\x90\x96\x87\x96\x7e\x96\x88\x96\x89\x96\x83\x96\x80\x96\xc2\x96\xc8\x96\xc3\x96\xf1\x96\xf0\x97\x6c\x97\x70\x97\x6e\x98\x07\x98\xa9\x98\xeb\x9c\xe6\x9e\xf9\x4e\x83\x4e\x84\x4e\xb6\x50\xbd\x50\xbf\x50\xc6\x50\xae\x50\xc4\x50\xca", /* 7980 */ "\x00\x00\x50\xb4\x50\xc8\x50\xc2\x50\xb0\x50\xc1\x50\xba\x50\xb1\x50\xcb\x50\xc9\x50\xb6\x50\xb8\x51\xd7\x52\x7a\x52\x78\x52\x7b\x52\x7c\x55\xc3\x55\xdb\x55\xcc\x55\xd0\x55\xcb\x55\xca\x55\xdd\x55\xc0\x55\xd4\x55\xc4\x55\xe9\x55\xbf\x55\xd2\x55\x8d\x55\xcf\x55\xd5\x55\xe2\x55\xd6\x55\xc8\x55\xf2\x55\xcd\x55\xd9\x55\xc2\x57\x14\x58\x53\x58\x68\x58\x64\x58\x4f\x58\x4d\x58\x49\x58\x6f\x58\x55\x58\x4e\x58\x5d\x58\x59\x58\x65\x58\x5b\x58\x3d\x58\x63\x58\x71\x58\xfc\x5a\xc7\x5a\xc4\x5a\xcb\x5a\xba\x5a\xb8\x5a\xb1\x5a\xb5\x5a\xb0\x5a\xbf\x5a\xc8\x5a\xbb\x5a\xc6\x5a\xb7\x5a\xc0\x5a\xca\x5a\xb4\x5a\xb6\x5a\xcd\x5a\xb9\x5a\x90\x5b\xd6\x5b\xd8\x5b\xd9\x5c\x1f\x5c\x33\x5d\x71\x5d\x63\x5d\x4a\x5d\x65\x5d\x72\x5d\x6c\x5d\x5e\x5d\x68\x5d\x67\x5d\x62\x5d\xf0\x5e\x4f\x5e\x4e\x5e\x4a\x5e\x4d\x5e\x4b\x5e\xc5\x5e\xcc\x5e\xc6\x5e\xcb\x5e\xc7\x5f\x40\x5f\xaf\x5f\xad\x60\xf7\x61\x49\x61\x4a\x61\x2b\x61\x45\x61\x36\x61\x32\x61\x2e\x61\x46\x61\x2f\x61\x4f\x61\x29\x61\x40\x62\x20\x91\x68\x62\x23\x62\x25\x62\x24\x63\xc5\x00\x00\x00\x00", /* 7a00 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x63\xf1\x63\xeb\x64\x10\x64\x12\x64\x09\x64\x20\x64\x24\x64\x33\x64\x43\x64\x1f\x64\x15\x64\x18\x64\x39\x64\x37\x64\x22\x64\x23\x64\x0c\x64\x26\x64\x30\x64\x28\x64\x41\x64\x35\x64\x2f\x64\x0a\x64\x1a\x64\x40\x64\x25\x64\x27\x64\x0b\x63\xe7\x64\x1b\x64\x2e\x64\x21\x64\x0e\x65\x6f\x65\x92\x65\xd3\x66\x86\x66\x8c\x66\x95\x66\x90\x66\x8b\x66\x8a\x66\x99\x66\x94\x66\x78\x67\x20\x69\x66\x69\x5f\x69\x38\x69\x4e\x69\x62\x69\x71\x69\x3f\x69\x45\x69\x6a\x69\x39\x69\x42\x69\x57\x69\x59\x69\x7a\x69\x48\x69\x49", /* 7a80 */ "\x00\x00\x69\x35\x69\x6c\x69\x33\x69\x3d\x69\x65\x68\xf0\x69\x78\x69\x34\x69\x69\x69\x40\x69\x6f\x69\x44\x69\x76\x69\x58\x69\x41\x69\x74\x69\x4c\x69\x3b\x69\x4b\x69\x37\x69\x5c\x69\x4f\x69\x51\x69\x32\x69\x52\x69\x2f\x69\x7b\x69\x3c\x6b\x46\x6b\x45\x6b\x43\x6b\x42\x6b\x48\x6b\x41\x6b\x9b\xfa\x0d\x6b\xfb\x6b\xfc\x6b\xf9\x6b\xf7\x6b\xf8\x6e\x9b\x6e\xd6\x6e\xc8\x6e\x8f\x6e\xc0\x6e\x9f\x6e\x93\x6e\x94\x6e\xa0\x6e\xb1\x6e\xb9\x6e\xc6\x6e\xd2\x6e\xbd\x6e\xc1\x6e\x9e\x6e\xc9\x6e\xb7\x6e\xb0\x6e\xcd\x6e\xa6\x6e\xcf\x6e\xb2\x6e\xbe\x6e\xc3\x6e\xdc\x6e\xd8\x6e\x99\x6e\x92\x6e\x8e\x6e\x8d\x6e\xa4\x6e\xa1\x6e\xbf\x6e\xb3\x6e\xd0\x6e\xca\x6e\x97\x6e\xae\x6e\xa3\x71\x47\x71\x54\x71\x52\x71\x63\x71\x60\x71\x41\x71\x5d\x71\x62\x71\x72\x71\x78\x71\x6a\x71\x61\x71\x42\x71\x58\x71\x43\x71\x4b\x71\x70\x71\x5f\x71\x50\x71\x53\x71\x44\x71\x4d\x71\x5a\x72\x4f\x72\x8d\x72\x8c\x72\x91\x72\x90\x72\x8e\x73\x3c\x73\x42\x73\x3b\x73\x3a\x73\x40\x73\x4a\x73\x49\x74\x44\x74\x4a\x74\x4b\x74\x52\x74\x51\x74\x57\x74\x40\x74\x4f\x00\x00\x00\x00", /* 7b00 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x74\x50\x74\x4e\x74\x42\x74\x46\x74\x4d\x74\x54\x74\xe1\x74\xff\x74\xfe\x74\xfd\x75\x1d\x75\x79\x75\x77\x69\x83\x75\xef\x76\x0f\x76\x03\x75\xf7\x75\xfe\x75\xfc\x75\xf9\x75\xf8\x76\x10\x75\xfb\x75\xf6\x75\xed\x75\xf5\x75\xfd\x76\x99\x76\xb5\x76\xdd\x77\x55\x77\x5f\x77\x60\x77\x52\x77\x56\x77\x5a\x77\x69\x77\x67\x77\x54\x77\x59\x77\x6d\x77\xe0\x78\x87\x78\x9a\x78\x94\x78\x8f\x78\x84\x78\x95\x78\x85\x78\x86\x78\xa1\x78\x83\x78\x79\x78\x99\x78\x80\x78\x96\x78\x7b\x79\x7c\x79\x82\x79\x7d\x79\x79\x7a\x11", /* 7b80 */ "\x00\x00\x7a\x18\x7a\x19\x7a\x12\x7a\x17\x7a\x15\x7a\x22\x7a\x13\x7a\x1b\x7a\x10\x7a\xa3\x7a\xa2\x7a\x9e\x7a\xeb\x7b\x66\x7b\x64\x7b\x6d\x7b\x74\x7b\x69\x7b\x72\x7b\x65\x7b\x73\x7b\x71\x7b\x70\x7b\x61\x7b\x78\x7b\x76\x7b\x63\x7c\xb2\x7c\xb4\x7c\xaf\x7d\x88\x7d\x86\x7d\x80\x7d\x8d\x7d\x7f\x7d\x85\x7d\x7a\x7d\x8e\x7d\x7b\x7d\x83\x7d\x7c\x7d\x8c\x7d\x94\x7d\x84\x7d\x7d\x7d\x92\x7f\x6d\x7f\x6b\x7f\x67\x7f\x68\x7f\x6c\x7f\xa6\x7f\xa5\x7f\xa7\x7f\xdb\x7f\xdc\x80\x21\x81\x64\x81\x60\x81\x77\x81\x5c\x81\x69\x81\x5b\x81\x62\x81\x72\x67\x21\x81\x5e\x81\x76\x81\x67\x81\x6f\x81\x44\x81\x61\x82\x1d\x82\x49\x82\x44\x82\x40\x82\x42\x82\x45\x84\xf1\x84\x3f\x84\x56\x84\x76\x84\x79\x84\x8f\x84\x8d\x84\x65\x84\x51\x84\x40\x84\x86\x84\x67\x84\x30\x84\x4d\x84\x7d\x84\x5a\x84\x59\x84\x74\x84\x73\x84\x5d\x85\x07\x84\x5e\x84\x37\x84\x3a\x84\x34\x84\x7a\x84\x43\x84\x78\x84\x32\x84\x45\x84\x29\x83\xd9\x84\x4b\x84\x2f\x84\x42\x84\x2d\x84\x5f\x84\x70\x84\x39\x84\x4e\x84\x4c\x84\x52\x84\x6f\x84\xc5\x84\x8e\x84\x3b\x84\x47\x00\x00\x00\x00", /* 7c00 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x84\x36\x84\x33\x84\x68\x84\x7e\x84\x44\x84\x2b\x84\x60\x84\x54\x84\x6e\x84\x50\x87\x0b\x87\x04\x86\xf7\x87\x0c\x86\xfa\x86\xd6\x86\xf5\x87\x4d\x86\xf8\x87\x0e\x87\x09\x87\x01\x86\xf6\x87\x0d\x87\x05\x88\xd6\x88\xcb\x88\xcd\x88\xce\x88\xde\x88\xdb\x88\xda\x88\xcc\x88\xd0\x89\x85\x89\x9b\x89\xdf\x89\xe5\x89\xe4\x89\xe1\x89\xe0\x89\xe2\x89\xdc\x89\xe6\x8a\x76\x8a\x86\x8a\x7f\x8a\x61\x8a\x3f\x8a\x77\x8a\x82\x8a\x84\x8a\x75\x8a\x83\x8a\x81\x8a\x74\x8a\x7a\x8c\x3c\x8c\x4b\x8c\x4a\x8c\x65\x8c\x64\x8c\x66", /* 7c80 */ "\x00\x00\x8c\x86\x8c\x84\x8c\x85\x8c\xcc\x8d\x68\x8d\x69\x8d\x91\x8d\x8c\x8d\x8e\x8d\x8f\x8d\x8d\x8d\x93\x8d\x94\x8d\x90\x8d\x92\x8d\xf0\x8d\xe0\x8d\xec\x8d\xf1\x8d\xee\x8d\xd0\x8d\xe9\x8d\xe3\x8d\xe2\x8d\xe7\x8d\xf2\x8d\xeb\x8d\xf4\x8f\x06\x8e\xff\x8f\x01\x8f\x00\x8f\x05\x8f\x07\x8f\x08\x8f\x02\x8f\x0b\x90\x52\x90\x3f\x90\x44\x90\x49\x90\x3d\x91\x10\x91\x0d\x91\x0f\x91\x11\x91\x16\x91\x14\x91\x0b\x91\x0e\x91\x6e\x91\x6f\x92\x48\x92\x52\x92\x30\x92\x3a\x92\x66\x92\x33\x92\x65\x92\x5e\x92\x83\x92\x2e\x92\x4a\x92\x46\x92\x6d\x92\x6c\x92\x4f\x92\x60\x92\x67\x92\x6f\x92\x36\x92\x61\x92\x70\x92\x31\x92\x54\x92\x63\x92\x50\x92\x72\x92\x4e\x92\x53\x92\x4c\x92\x56\x92\x32\x95\x9f\x95\x9c\x95\x9e\x95\x9b\x96\x92\x96\x93\x96\x91\x96\x97\x96\xce\x96\xfa\x96\xfd\x96\xf8\x96\xf5\x97\x73\x97\x77\x97\x78\x97\x72\x98\x0f\x98\x0d\x98\x0e\x98\xac\x98\xf6\x98\xf9\x99\xaf\x99\xb2\x99\xb0\x99\xb5\x9a\xad\x9a\xab\x9b\x5b\x9c\xea\x9c\xed\x9c\xe7\x9e\x80\x9e\xfd\x50\xe6\x50\xd4\x50\xd7\x50\xe8\x50\xf3\x50\xdb\x50\xea\x00\x00\x00\x00", /* 7d00 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x50\xdd\x50\xe4\x50\xd3\x50\xec\x50\xf0\x50\xef\x50\xe3\x50\xe0\x51\xd8\x52\x80\x52\x81\x52\xe9\x52\xeb\x53\x30\x53\xac\x56\x27\x56\x15\x56\x0c\x56\x12\x55\xfc\x56\x0f\x56\x1c\x56\x01\x56\x13\x56\x02\x55\xfa\x56\x1d\x56\x04\x55\xff\x55\xf9\x58\x89\x58\x7c\x58\x90\x58\x98\x58\x86\x58\x81\x58\x7f\x58\x74\x58\x8b\x58\x7a\x58\x87\x58\x91\x58\x8e\x58\x76\x58\x82\x58\x88\x58\x7b\x58\x94\x58\x8f\x58\xfe\x59\x6b\x5a\xdc\x5a\xee\x5a\xe5\x5a\xd5\x5a\xea\x5a\xda\x5a\xed\x5a\xeb\x5a\xf3\x5a\xe2\x5a\xe0\x5a\xdb", /* 7d80 */ "\x00\x00\x5a\xec\x5a\xde\x5a\xdd\x5a\xd9\x5a\xe8\x5a\xdf\x5b\x77\x5b\xe0\x5b\xe3\x5c\x63\x5d\x82\x5d\x80\x5d\x7d\x5d\x86\x5d\x7a\x5d\x81\x5d\x77\x5d\x8a\x5d\x89\x5d\x88\x5d\x7e\x5d\x7c\x5d\x8d\x5d\x79\x5d\x7f\x5e\x58\x5e\x59\x5e\x53\x5e\xd8\x5e\xd1\x5e\xd7\x5e\xce\x5e\xdc\x5e\xd5\x5e\xd9\x5e\xd2\x5e\xd4\x5f\x44\x5f\x43\x5f\x6f\x5f\xb6\x61\x2c\x61\x28\x61\x41\x61\x5e\x61\x71\x61\x73\x61\x52\x61\x53\x61\x72\x61\x6c\x61\x80\x61\x74\x61\x54\x61\x7a\x61\x5b\x61\x65\x61\x3b\x61\x6a\x61\x61\x61\x56\x62\x29\x62\x27\x62\x2b\x64\x2b\x64\x4d\x64\x5b\x64\x5d\x64\x74\x64\x76\x64\x72\x64\x73\x64\x7d\x64\x75\x64\x66\x64\xa6\x64\x4e\x64\x82\x64\x5e\x64\x5c\x64\x4b\x64\x53\x64\x60\x64\x50\x64\x7f\x64\x3f\x64\x6c\x64\x6b\x64\x59\x64\x65\x64\x77\x65\x73\x65\xa0\x66\xa1\x66\xa0\x66\x9f\x67\x05\x67\x04\x67\x22\x69\xb1\x69\xb6\x69\xc9\x69\xa0\x69\xce\x69\x96\x69\xb0\x69\xac\x69\xbc\x69\x91\x69\x99\x69\x8e\x69\xa7\x69\x8d\x69\xa9\x69\xbe\x69\xaf\x69\xbf\x69\xc4\x69\xbd\x69\xa4\x69\xd4\x69\xb9\x69\xca\x69\x9a\x69\xcf\x00\x00\x00\x00", /* 7e00 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x69\xb3\x69\x93\x69\xaa\x69\xa1\x69\x9e\x69\xd9\x69\x97\x69\x90\x69\xc2\x69\xb5\x69\xa5\x69\xc6\x6b\x4a\x6b\x4d\x6b\x4b\x6b\x9e\x6b\x9f\x6b\xa0\x6b\xc3\x6b\xc4\x6b\xfe\x6e\xce\x6e\xf5\x6e\xf1\x6f\x03\x6f\x25\x6e\xf8\x6f\x37\x6e\xfb\x6f\x2e\x6f\x09\x6f\x4e\x6f\x19\x6f\x1a\x6f\x27\x6f\x18\x6f\x3b\x6f\x12\x6e\xed\x6f\x0a\x6f\x36\x6f\x73\x6e\xf9\x6e\xee\x6f\x2d\x6f\x40\x6f\x30\x6f\x3c\x6f\x35\x6e\xeb\x6f\x07\x6f\x0e\x6f\x43\x6f\x05\x6e\xfd\x6e\xf6\x6f\x39\x6f\x1c\x6e\xfc\x6f\x3a\x6f\x1f\x6f\x0d\x6f\x1e", /* 7e80 */ "\x00\x00\x6f\x08\x6f\x21\x71\x87\x71\x90\x71\x89\x71\x80\x71\x85\x71\x82\x71\x8f\x71\x7b\x71\x86\x71\x81\x71\x97\x72\x44\x72\x53\x72\x97\x72\x95\x72\x93\x73\x43\x73\x4d\x73\x51\x73\x4c\x74\x62\x74\x73\x74\x71\x74\x75\x74\x72\x74\x67\x74\x6e\x75\x00\x75\x02\x75\x03\x75\x7d\x75\x90\x76\x16\x76\x08\x76\x0c\x76\x15\x76\x11\x76\x0a\x76\x14\x76\xb8\x77\x81\x77\x7c\x77\x85\x77\x82\x77\x6e\x77\x80\x77\x6f\x77\x7e\x77\x83\x78\xb2\x78\xaa\x78\xb4\x78\xad\x78\xa8\x78\x7e\x78\xab\x78\x9e\x78\xa5\x78\xa0\x78\xac\x78\xa2\x78\xa4\x79\x98\x79\x8a\x79\x8b\x79\x96\x79\x95\x79\x94\x79\x93\x79\x97\x79\x88\x79\x92\x79\x90\x7a\x2b\x7a\x4a\x7a\x30\x7a\x2f\x7a\x28\x7a\x26\x7a\xa8\x7a\xab\x7a\xac\x7a\xee\x7b\x88\x7b\x9c\x7b\x8a\x7b\x91\x7b\x90\x7b\x96\x7b\x8d\x7b\x8c\x7b\x9b\x7b\x8e\x7b\x85\x7b\x98\x52\x84\x7b\x99\x7b\xa4\x7b\x82\x7c\xbb\x7c\xbf\x7c\xbc\x7c\xba\x7d\xa7\x7d\xb7\x7d\xc2\x7d\xa3\x7d\xaa\x7d\xc1\x7d\xc0\x7d\xc5\x7d\x9d\x7d\xce\x7d\xc4\x7d\xc6\x7d\xcb\x7d\xcc\x7d\xaf\x7d\xb9\x7d\x96\x7d\xbc\x7d\x9f\x7d\xa6\x00\x00\x00\x00", /* 7f00 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7d\xae\x7d\xa9\x7d\xa1\x7d\xc9\x7f\x73\x7f\xe2\x7f\xe3\x7f\xe5\x7f\xde\x80\x24\x80\x5d\x80\x5c\x81\x89\x81\x86\x81\x83\x81\x87\x81\x8d\x81\x8c\x81\x8b\x82\x15\x84\x97\x84\xa4\x84\xa1\x84\x9f\x84\xba\x84\xce\x84\xc2\x84\xac\x84\xae\x84\xab\x84\xb9\x84\xb4\x84\xc1\x84\xcd\x84\xaa\x84\x9a\x84\xb1\x84\xd0\x84\x9d\x84\xa7\x84\xbb\x84\xa2\x84\x94\x84\xc7\x84\xcc\x84\x9b\x84\xa9\x84\xaf\x84\xa8\x84\xd6\x84\x98\x84\xb6\x84\xcf\x84\xa0\x84\xd7\x84\xd4\x84\xd2\x84\xdb\x84\xb0\x84\x91\x86\x61\x87\x33\x87\x23", /* 7f80 */ "\x00\x00\x87\x28\x87\x6b\x87\x40\x87\x2e\x87\x1e\x87\x21\x87\x19\x87\x1b\x87\x43\x87\x2c\x87\x41\x87\x3e\x87\x46\x87\x20\x87\x32\x87\x2a\x87\x2d\x87\x3c\x87\x12\x87\x3a\x87\x31\x87\x35\x87\x42\x87\x26\x87\x27\x87\x38\x87\x24\x87\x1a\x87\x30\x87\x11\x88\xf7\x88\xe7\x88\xf1\x88\xf2\x88\xfa\x88\xfe\x88\xee\x88\xfc\x88\xf6\x88\xfb\x88\xf0\x88\xec\x88\xeb\x89\x9d\x89\xa1\x89\x9f\x89\x9e\x89\xe9\x89\xeb\x89\xe8\x8a\xab\x8a\x99\x8a\x8b\x8a\x92\x8a\x8f\x8a\x96\x8c\x3d\x8c\x68\x8c\x69\x8c\xd5\x8c\xcf\x8c\xd7\x8d\x96\x8e\x09\x8e\x02\x8d\xff\x8e\x0d\x8d\xfd\x8e\x0a\x8e\x03\x8e\x07\x8e\x06\x8e\x05\x8d\xfe\x8e\x00\x8e\x04\x8f\x10\x8f\x11\x8f\x0e\x8f\x0d\x91\x23\x91\x1c\x91\x20\x91\x22\x91\x1f\x91\x1d\x91\x1a\x91\x24\x91\x21\x91\x1b\x91\x7a\x91\x72\x91\x79\x91\x73\x92\xa5\x92\xa4\x92\x76\x92\x9b\x92\x7a\x92\xa0\x92\x94\x92\xaa\x92\x8d\x92\xa6\x92\x9a\x92\xab\x92\x79\x92\x97\x92\x7f\x92\xa3\x92\xee\x92\x8e\x92\x82\x92\x95\x92\xa2\x92\x7d\x92\x88\x92\xa1\x92\x8a\x92\x86\x92\x8c\x92\x99\x92\xa7\x92\x7e\x92\x87\x00\x00\x00\x00", /* 8000 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x92\xa9\x92\x9d\x92\x8b\x92\x2d\x96\x9e\x96\xa1\x96\xff\x97\x58\x97\x7d\x97\x7a\x97\x7e\x97\x83\x97\x80\x97\x82\x97\x7b\x97\x84\x97\x81\x97\x7f\x97\xce\x97\xcd\x98\x16\x98\xad\x98\xae\x99\x02\x99\x00\x99\x07\x99\x9d\x99\x9c\x99\xc3\x99\xb9\x99\xbb\x99\xba\x99\xc2\x99\xbd\x99\xc7\x9a\xb1\x9a\xe3\x9a\xe7\x9b\x3e\x9b\x3f\x9b\x60\x9b\x61\x9b\x5f\x9c\xf1\x9c\xf2\x9c\xf5\x9e\xa7\x50\xff\x51\x03\x51\x30\x50\xf8\x51\x06\x51\x07\x50\xf6\x50\xfe\x51\x0b\x51\x0c\x50\xfd\x51\x0a\x52\x8b\x52\x8c\x52\xf1\x52\xef", /* 8080 */ "\x00\x00\x56\x48\x56\x42\x56\x4c\x56\x35\x56\x41\x56\x4a\x56\x49\x56\x46\x56\x58\x56\x5a\x56\x40\x56\x33\x56\x3d\x56\x2c\x56\x3e\x56\x38\x56\x2a\x56\x3a\x57\x1a\x58\xab\x58\x9d\x58\xb1\x58\xa0\x58\xa3\x58\xaf\x58\xac\x58\xa5\x58\xa1\x58\xff\x5a\xff\x5a\xf4\x5a\xfd\x5a\xf7\x5a\xf6\x5b\x03\x5a\xf8\x5b\x02\x5a\xf9\x5b\x01\x5b\x07\x5b\x05\x5b\x0f\x5c\x67\x5d\x99\x5d\x97\x5d\x9f\x5d\x92\x5d\xa2\x5d\x93\x5d\x95\x5d\xa0\x5d\x9c\x5d\xa1\x5d\x9a\x5d\x9e\x5e\x69\x5e\x5d\x5e\x60\x5e\x5c\x7d\xf3\x5e\xdb\x5e\xde\x5e\xe1\x5f\x49\x5f\xb2\x61\x8b\x61\x83\x61\x79\x61\xb1\x61\xb0\x61\xa2\x61\x89\x61\x9b\x61\x93\x61\xaf\x61\xad\x61\x9f\x61\x92\x61\xaa\x61\xa1\x61\x8d\x61\x66\x61\xb3\x62\x2d\x64\x6e\x64\x70\x64\x96\x64\xa0\x64\x85\x64\x97\x64\x9c\x64\x8f\x64\x8b\x64\x8a\x64\x8c\x64\xa3\x64\x9f\x64\x68\x64\xb1\x64\x98\x65\x76\x65\x7a\x65\x79\x65\x7b\x65\xb2\x65\xb3\x66\xb5\x66\xb0\x66\xa9\x66\xb2\x66\xb7\x66\xaa\x66\xaf\x6a\x00\x6a\x06\x6a\x17\x69\xe5\x69\xf8\x6a\x15\x69\xf1\x69\xe4\x6a\x20\x69\xff\x69\xec\x69\xe2\x00\x00\x00\x00", /* 8100 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x1b\x6a\x1d\x69\xfe\x6a\x27\x69\xf2\x69\xee\x6a\x14\x69\xf7\x69\xe7\x6a\x40\x6a\x08\x69\xe6\x69\xfb\x6a\x0d\x69\xfc\x69\xeb\x6a\x09\x6a\x04\x6a\x18\x6a\x25\x6a\x0f\x69\xf6\x6a\x26\x6a\x07\x69\xf4\x6a\x16\x6b\x51\x6b\xa5\x6b\xa3\x6b\xa2\x6b\xa6\x6c\x01\x6c\x00\x6b\xff\x6c\x02\x6f\x41\x6f\x26\x6f\x7e\x6f\x87\x6f\xc6\x6f\x92\x6f\x8d\x6f\x89\x6f\x8c\x6f\x62\x6f\x4f\x6f\x85\x6f\x5a\x6f\x96\x6f\x76\x6f\x6c\x6f\x82\x6f\x55\x6f\x72\x6f\x52\x6f\x50\x6f\x57\x6f\x94\x6f\x93\x6f\x5d\x6f\x00\x6f\x61\x6f\x6b", /* 8180 */ "\x00\x00\x6f\x7d\x6f\x67\x6f\x90\x6f\x53\x6f\x8b\x6f\x69\x6f\x7f\x6f\x95\x6f\x63\x6f\x77\x6f\x6a\x6f\x7b\x71\xb2\x71\xaf\x71\x9b\x71\xb0\x71\xa0\x71\x9a\x71\xa9\x71\xb5\x71\x9d\x71\xa5\x71\x9e\x71\xa4\x71\xa1\x71\xaa\x71\x9c\x71\xa7\x71\xb3\x72\x98\x72\x9a\x73\x58\x73\x52\x73\x5e\x73\x5f\x73\x60\x73\x5d\x73\x5b\x73\x61\x73\x5a\x73\x59\x73\x62\x74\x87\x74\x89\x74\x8a\x74\x86\x74\x81\x74\x7d\x74\x85\x74\x88\x74\x7c\x74\x79\x75\x08\x75\x07\x75\x7e\x76\x25\x76\x1e\x76\x19\x76\x1d\x76\x1c\x76\x23\x76\x1a\x76\x28\x76\x1b\x76\x9c\x76\x9d\x76\x9e\x76\x9b\x77\x8d\x77\x8f\x77\x89\x77\x88\x78\xcd\x78\xbb\x78\xcf\x78\xcc\x78\xd1\x78\xce\x78\xd4\x78\xc8\x78\xc3\x78\xc4\x78\xc9\x79\x9a\x79\xa1\x79\xa0\x79\x9c\x79\xa2\x79\x9b\x6b\x76\x7a\x39\x7a\xb2\x7a\xb4\x7a\xb3\x7b\xb7\x7b\xcb\x7b\xbe\x7b\xac\x7b\xce\x7b\xaf\x7b\xb9\x7b\xca\x7b\xb5\x7c\xc5\x7c\xc8\x7c\xcc\x7c\xcb\x7d\xf7\x7d\xdb\x7d\xea\x7d\xe7\x7d\xd7\x7d\xe1\x7e\x03\x7d\xfa\x7d\xe6\x7d\xf6\x7d\xf1\x7d\xf0\x7d\xee\x7d\xdf\x7f\x76\x7f\xac\x7f\xb0\x7f\xad\x00\x00\x00\x00", /* 8200 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7f\xed\x7f\xeb\x7f\xea\x7f\xec\x7f\xe6\x7f\xe8\x80\x64\x80\x67\x81\xa3\x81\x9f\x81\x9e\x81\x95\x81\xa2\x81\x99\x81\x97\x82\x16\x82\x4f\x82\x53\x82\x52\x82\x50\x82\x4e\x82\x51\x85\x24\x85\x3b\x85\x0f\x85\x00\x85\x29\x85\x0e\x85\x09\x85\x0d\x85\x1f\x85\x0a\x85\x27\x85\x1c\x84\xfb\x85\x2b\x84\xfa\x85\x08\x85\x0c\x84\xf4\x85\x2a\x84\xf2\x85\x15\x84\xf7\x84\xeb\x84\xf3\x84\xfc\x85\x12\x84\xea\x84\xe9\x85\x16\x84\xfe\x85\x28\x85\x1d\x85\x2e\x85\x02\x84\xfd\x85\x1e\x84\xf6\x85\x31\x85\x26\x84\xe7\x84\xe8", /* 8280 */ "\x00\x00\x84\xf0\x84\xef\x84\xf9\x85\x18\x85\x20\x85\x30\x85\x0b\x85\x19\x85\x2f\x86\x62\x87\x56\x87\x63\x87\x64\x87\x77\x87\xe1\x87\x73\x87\x58\x87\x54\x87\x5b\x87\x52\x87\x61\x87\x5a\x87\x51\x87\x5e\x87\x6d\x87\x6a\x87\x50\x87\x4e\x87\x5f\x87\x5d\x87\x6f\x87\x6c\x87\x7a\x87\x6e\x87\x5c\x87\x65\x87\x4f\x87\x7b\x87\x75\x87\x62\x87\x67\x87\x69\x88\x5a\x89\x05\x89\x0c\x89\x14\x89\x0b\x89\x17\x89\x18\x89\x19\x89\x06\x89\x16\x89\x11\x89\x0e\x89\x09\x89\xa2\x89\xa4\x89\xa3\x89\xed\x89\xf0\x89\xec\x8a\xcf\x8a\xc6\x8a\xb8\x8a\xd3\x8a\xd1\x8a\xd4\x8a\xd5\x8a\xbb\x8a\xd7\x8a\xbe\x8a\xc0\x8a\xc5\x8a\xd8\x8a\xc3\x8a\xba\x8a\xbd\x8a\xd9\x8c\x3e\x8c\x4d\x8c\x8f\x8c\xe5\x8c\xdf\x8c\xd9\x8c\xe8\x8c\xda\x8c\xdd\x8c\xe7\x8d\xa0\x8d\x9c\x8d\xa1\x8d\x9b\x8e\x20\x8e\x23\x8e\x25\x8e\x24\x8e\x2e\x8e\x15\x8e\x1b\x8e\x16\x8e\x11\x8e\x19\x8e\x26\x8e\x27\x8e\x14\x8e\x12\x8e\x18\x8e\x13\x8e\x1c\x8e\x17\x8e\x1a\x8f\x2c\x8f\x24\x8f\x18\x8f\x1a\x8f\x20\x8f\x23\x8f\x16\x8f\x17\x90\x73\x90\x70\x90\x6f\x90\x67\x90\x6b\x91\x2f\x00\x00\x00\x00", /* 8300 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x91\x2b\x91\x29\x91\x2a\x91\x32\x91\x26\x91\x2e\x91\x85\x91\x86\x91\x8a\x91\x81\x91\x82\x91\x84\x91\x80\x92\xd0\x92\xc3\x92\xc4\x92\xc0\x92\xd9\x92\xb6\x92\xcf\x92\xf1\x92\xdf\x92\xd8\x92\xe9\x92\xd7\x92\xdd\x92\xcc\x92\xef\x92\xc2\x92\xe8\x92\xca\x92\xc8\x92\xce\x92\xe6\x92\xcd\x92\xd5\x92\xc9\x92\xe0\x92\xde\x92\xe7\x92\xd1\x92\xd3\x92\xb5\x92\xe1\x92\xc6\x92\xb4\x95\x7c\x95\xac\x95\xab\x95\xae\x95\xb0\x96\xa4\x96\xa2\x96\xd3\x97\x05\x97\x08\x97\x02\x97\x5a\x97\x8a\x97\x8e\x97\x88\x97\xd0\x97\xcf", /* 8380 */ "\x00\x00\x98\x1e\x98\x1d\x98\x26\x98\x29\x98\x28\x98\x20\x98\x1b\x98\x27\x98\xb2\x99\x08\x98\xfa\x99\x11\x99\x14\x99\x16\x99\x17\x99\x15\x99\xdc\x99\xcd\x99\xcf\x99\xd3\x99\xd4\x99\xce\x99\xc9\x99\xd6\x99\xd8\x99\xcb\x99\xd7\x99\xcc\x9a\xb3\x9a\xec\x9a\xeb\x9a\xf3\x9a\xf2\x9a\xf1\x9b\x46\x9b\x43\x9b\x67\x9b\x74\x9b\x71\x9b\x66\x9b\x76\x9b\x75\x9b\x70\x9b\x68\x9b\x64\x9b\x6c\x9c\xfc\x9c\xfa\x9c\xfd\x9c\xff\x9c\xf7\x9d\x07\x9d\x00\x9c\xf9\x9c\xfb\x9d\x08\x9d\x05\x9d\x04\x9e\x83\x9e\xd3\x9f\x0f\x9f\x10\x51\x1c\x51\x13\x51\x17\x51\x1a\x51\x11\x51\xde\x53\x34\x53\xe1\x56\x70\x56\x60\x56\x6e\x56\x73\x56\x66\x56\x63\x56\x6d\x56\x72\x56\x5e\x56\x77\x57\x1c\x57\x1b\x58\xc8\x58\xbd\x58\xc9\x58\xbf\x58\xba\x58\xc2\x58\xbc\x58\xc6\x5b\x17\x5b\x19\x5b\x1b\x5b\x21\x5b\x14\x5b\x13\x5b\x10\x5b\x16\x5b\x28\x5b\x1a\x5b\x20\x5b\x1e\x5b\xef\x5d\xac\x5d\xb1\x5d\xa9\x5d\xa7\x5d\xb5\x5d\xb0\x5d\xae\x5d\xaa\x5d\xa8\x5d\xb2\x5d\xad\x5d\xaf\x5d\xb4\x5e\x67\x5e\x68\x5e\x66\x5e\x6f\x5e\xe9\x5e\xe7\x5e\xe6\x5e\xe8\x5e\xe5\x00\x00\x00\x00", /* 8400 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5f\x4b\x5f\xbc\x61\x9d\x61\xa8\x61\x96\x61\xc5\x61\xb4\x61\xc6\x61\xc1\x61\xcc\x61\xba\x61\xbf\x61\xb8\x61\x8c\x64\xd7\x64\xd6\x64\xd0\x64\xcf\x64\xc9\x64\xbd\x64\x89\x64\xc3\x64\xdb\x64\xf3\x64\xd9\x65\x33\x65\x7f\x65\x7c\x65\xa2\x66\xc8\x66\xbe\x66\xc0\x66\xca\x66\xcb\x66\xcf\x66\xbd\x66\xbb\x66\xba\x66\xcc\x67\x23\x6a\x34\x6a\x66\x6a\x49\x6a\x67\x6a\x32\x6a\x68\x6a\x3e\x6a\x5d\x6a\x6d\x6a\x76\x6a\x5b\x6a\x51\x6a\x28\x6a\x5a\x6a\x3b\x6a\x3f\x6a\x41\x6a\x6a\x6a\x64\x6a\x50\x6a\x4f\x6a\x54\x6a\x6f", /* 8480 */ "\x00\x00\x6a\x69\x6a\x60\x6a\x3c\x6a\x5e\x6a\x56\x6a\x55\x6a\x4d\x6a\x4e\x6a\x46\x6b\x55\x6b\x54\x6b\x56\x6b\xa7\x6b\xaa\x6b\xab\x6b\xc8\x6b\xc7\x6c\x04\x6c\x03\x6c\x06\x6f\xad\x6f\xcb\x6f\xa3\x6f\xc7\x6f\xbc\x6f\xce\x6f\xc8\x6f\x5e\x6f\xc4\x6f\xbd\x6f\x9e\x6f\xca\x6f\xa8\x70\x04\x6f\xa5\x6f\xae\x6f\xba\x6f\xac\x6f\xaa\x6f\xcf\x6f\xbf\x6f\xb8\x6f\xa2\x6f\xc9\x6f\xab\x6f\xcd\x6f\xaf\x6f\xb2\x6f\xb0\x71\xc5\x71\xc2\x71\xbf\x71\xb8\x71\xd6\x71\xc0\x71\xc1\x71\xcb\x71\xd4\x71\xca\x71\xc7\x71\xcf\x71\xbd\x71\xd8\x71\xbc\x71\xc6\x71\xda\x71\xdb\x72\x9d\x72\x9e\x73\x69\x73\x66\x73\x67\x73\x6c\x73\x65\x73\x6b\x73\x6a\x74\x7f\x74\x9a\x74\xa0\x74\x94\x74\x92\x74\x95\x74\xa1\x75\x0b\x75\x80\x76\x2f\x76\x2d\x76\x31\x76\x3d\x76\x33\x76\x3c\x76\x35\x76\x32\x76\x30\x76\xbb\x76\xe6\x77\x9a\x77\x9d\x77\xa1\x77\x9c\x77\x9b\x77\xa2\x77\xa3\x77\x95\x77\x99\x77\x97\x78\xdd\x78\xe9\x78\xe5\x78\xea\x78\xde\x78\xe3\x78\xdb\x78\xe1\x78\xe2\x78\xed\x78\xdf\x78\xe0\x79\xa4\x7a\x44\x7a\x48\x7a\x47\x7a\xb6\x7a\xb8\x7a\xb5\x00\x00\x00\x00", /* 8500 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7a\xb1\x7a\xb7\x7b\xde\x7b\xe3\x7b\xe7\x7b\xdd\x7b\xd5\x7b\xe5\x7b\xda\x7b\xe8\x7b\xf9\x7b\xd4\x7b\xea\x7b\xe2\x7b\xdc\x7b\xeb\x7b\xd8\x7b\xdf\x7c\xd2\x7c\xd4\x7c\xd7\x7c\xd0\x7c\xd1\x7e\x12\x7e\x21\x7e\x17\x7e\x0c\x7e\x1f\x7e\x20\x7e\x13\x7e\x0e\x7e\x1c\x7e\x15\x7e\x1a\x7e\x22\x7e\x0b\x7e\x0f\x7e\x16\x7e\x0d\x7e\x14\x7e\x25\x7e\x24\x7f\x43\x7f\x7b\x7f\x7c\x7f\x7a\x7f\xb1\x7f\xef\x80\x2a\x80\x29\x80\x6c\x81\xb1\x81\xa6\x81\xae\x81\xb9\x81\xb5\x81\xab\x81\xb0\x81\xac\x81\xb4\x81\xb2\x81\xb7\x81\xa7", /* 8580 */ "\x00\x00\x81\xf2\x82\x55\x82\x56\x82\x57\x85\x56\x85\x45\x85\x6b\x85\x4d\x85\x53\x85\x61\x85\x58\x85\x40\x85\x46\x85\x64\x85\x41\x85\x62\x85\x44\x85\x51\x85\x47\x85\x63\x85\x3e\x85\x5b\x85\x71\x85\x4e\x85\x6e\x85\x75\x85\x55\x85\x67\x85\x60\x85\x8c\x85\x66\x85\x5d\x85\x54\x85\x65\x85\x6c\x86\x63\x86\x65\x86\x64\x87\x9b\x87\x8f\x87\x97\x87\x93\x87\x92\x87\x88\x87\x81\x87\x96\x87\x98\x87\x79\x87\x87\x87\xa3\x87\x85\x87\x90\x87\x91\x87\x9d\x87\x84\x87\x94\x87\x9c\x87\x9a\x87\x89\x89\x1e\x89\x26\x89\x30\x89\x2d\x89\x2e\x89\x27\x89\x31\x89\x22\x89\x29\x89\x23\x89\x2f\x89\x2c\x89\x1f\x89\xf1\x8a\xe0\x8a\xe2\x8a\xf2\x8a\xf4\x8a\xf5\x8a\xdd\x8b\x14\x8a\xe4\x8a\xdf\x8a\xf0\x8a\xc8\x8a\xde\x8a\xe1\x8a\xe8\x8a\xff\x8a\xef\x8a\xfb\x8c\x91\x8c\x92\x8c\x90\x8c\xf5\x8c\xee\x8c\xf1\x8c\xf0\x8c\xf3\x8d\x6c\x8d\x6e\x8d\xa5\x8d\xa7\x8e\x33\x8e\x3e\x8e\x38\x8e\x40\x8e\x45\x8e\x36\x8e\x3c\x8e\x3d\x8e\x41\x8e\x30\x8e\x3f\x8e\xbd\x8f\x36\x8f\x2e\x8f\x35\x8f\x32\x8f\x39\x8f\x37\x8f\x34\x90\x76\x90\x79\x90\x7b\x90\x86\x00\x00\x00\x00", /* 8600 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x90\xfa\x91\x33\x91\x35\x91\x36\x91\x93\x91\x90\x91\x91\x91\x8d\x91\x8f\x93\x27\x93\x1e\x93\x08\x93\x1f\x93\x06\x93\x0f\x93\x7a\x93\x38\x93\x3c\x93\x1b\x93\x23\x93\x12\x93\x01\x93\x46\x93\x2d\x93\x0e\x93\x0d\x92\xcb\x93\x1d\x92\xfa\x93\x25\x93\x13\x92\xf9\x92\xf7\x93\x34\x93\x02\x93\x24\x92\xff\x93\x29\x93\x39\x93\x35\x93\x2a\x93\x14\x93\x0c\x93\x0b\x92\xfe\x93\x09\x93\x00\x92\xfb\x93\x16\x95\xbc\x95\xcd\x95\xbe\x95\xb9\x95\xba\x95\xb6\x95\xbf\x95\xb5\x95\xbd\x96\xa9\x96\xd4\x97\x0b\x97\x12\x97\x10", /* 8680 */ "\x00\x00\x97\x99\x97\x97\x97\x94\x97\xf0\x97\xf8\x98\x35\x98\x2f\x98\x32\x99\x24\x99\x1f\x99\x27\x99\x29\x99\x9e\x99\xee\x99\xec\x99\xe5\x99\xe4\x99\xf0\x99\xe3\x99\xea\x99\xe9\x99\xe7\x9a\xb9\x9a\xbf\x9a\xb4\x9a\xbb\x9a\xf6\x9a\xfa\x9a\xf9\x9a\xf7\x9b\x33\x9b\x80\x9b\x85\x9b\x87\x9b\x7c\x9b\x7e\x9b\x7b\x9b\x82\x9b\x93\x9b\x92\x9b\x90\x9b\x7a\x9b\x95\x9b\x7d\x9b\x88\x9d\x25\x9d\x17\x9d\x20\x9d\x1e\x9d\x14\x9d\x29\x9d\x1d\x9d\x18\x9d\x22\x9d\x10\x9d\x19\x9d\x1f\x9e\x88\x9e\x86\x9e\x87\x9e\xae\x9e\xad\x9e\xd5\x9e\xd6\x9e\xfa\x9f\x12\x9f\x3d\x51\x26\x51\x25\x51\x22\x51\x24\x51\x20\x51\x29\x52\xf4\x56\x93\x56\x8c\x56\x8d\x56\x86\x56\x84\x56\x83\x56\x7e\x56\x82\x56\x7f\x56\x81\x58\xd6\x58\xd4\x58\xcf\x58\xd2\x5b\x2d\x5b\x25\x5b\x32\x5b\x23\x5b\x2c\x5b\x27\x5b\x26\x5b\x2f\x5b\x2e\x5b\x7b\x5b\xf1\x5b\xf2\x5d\xb7\x5e\x6c\x5e\x6a\x5f\xbe\x5f\xbb\x61\xc3\x61\xb5\x61\xbc\x61\xe7\x61\xe0\x61\xe5\x61\xe4\x61\xe8\x61\xde\x64\xef\x64\xe9\x64\xe3\x64\xeb\x64\xe4\x64\xe8\x65\x81\x65\x80\x65\xb6\x65\xda\x66\xd2\x00\x00\x00\x00", /* 8700 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x8d\x6a\x96\x6a\x81\x6a\xa5\x6a\x89\x6a\x9f\x6a\x9b\x6a\xa1\x6a\x9e\x6a\x87\x6a\x93\x6a\x8e\x6a\x95\x6a\x83\x6a\xa8\x6a\xa4\x6a\x91\x6a\x7f\x6a\xa6\x6a\x9a\x6a\x85\x6a\x8c\x6a\x92\x6b\x5b\x6b\xad\x6c\x09\x6f\xcc\x6f\xa9\x6f\xf4\x6f\xd4\x6f\xe3\x6f\xdc\x6f\xed\x6f\xe7\x6f\xe6\x6f\xde\x6f\xf2\x6f\xdd\x6f\xe2\x6f\xe8\x71\xe1\x71\xf1\x71\xe8\x71\xf2\x71\xe4\x71\xf0\x71\xe2\x73\x73\x73\x6e\x73\x6f\x74\x97\x74\xb2\x74\xab\x74\x90\x74\xaa\x74\xad\x74\xb1\x74\xa5\x74\xaf\x75\x10\x75\x11\x75\x12\x75\x0f", /* 8780 */ "\x00\x00\x75\x84\x76\x43\x76\x48\x76\x49\x76\x47\x76\xa4\x76\xe9\x77\xb5\x77\xab\x77\xb2\x77\xb7\x77\xb6\x77\xb4\x77\xb1\x77\xa8\x77\xf0\x78\xf3\x78\xfd\x79\x02\x78\xfb\x78\xfc\x78\xf2\x79\x05\x78\xf9\x78\xfe\x79\x04\x79\xab\x79\xa8\x7a\x5c\x7a\x5b\x7a\x56\x7a\x58\x7a\x54\x7a\x5a\x7a\xbe\x7a\xc0\x7a\xc1\x7c\x05\x7c\x0f\x7b\xf2\x7c\x00\x7b\xff\x7b\xfb\x7c\x0e\x7b\xf4\x7c\x0b\x7b\xf3\x7c\x02\x7c\x09\x7c\x03\x7c\x01\x7b\xf8\x7b\xfd\x7c\x06\x7b\xf0\x7b\xf1\x7c\x10\x7c\x0a\x7c\xe8\x7e\x2d\x7e\x3c\x7e\x42\x7e\x33\x98\x48\x7e\x38\x7e\x2a\x7e\x49\x7e\x40\x7e\x47\x7e\x29\x7e\x4c\x7e\x30\x7e\x3b\x7e\x36\x7e\x44\x7e\x3a\x7f\x45\x7f\x7f\x7f\x7e\x7f\x7d\x7f\xf4\x7f\xf2\x80\x2c\x81\xbb\x81\xc4\x81\xcc\x81\xca\x81\xc5\x81\xc7\x81\xbc\x81\xe9\x82\x5b\x82\x5a\x82\x5c\x85\x83\x85\x80\x85\x8f\x85\xa7\x85\x95\x85\xa0\x85\x8b\x85\xa3\x85\x7b\x85\xa4\x85\x9a\x85\x9e\x85\x77\x85\x7c\x85\x89\x85\xa1\x85\x7a\x85\x78\x85\x57\x85\x8e\x85\x96\x85\x86\x85\x8d\x85\x99\x85\x9d\x85\x81\x85\xa2\x85\x82\x85\x88\x85\x85\x85\x79\x00\x00\x00\x00", /* 8800 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x85\x76\x85\x98\x85\x90\x85\x9f\x86\x68\x87\xbe\x87\xaa\x87\xad\x87\xc5\x87\xb0\x87\xac\x87\xb9\x87\xb5\x87\xbc\x87\xae\x87\xc9\x87\xc3\x87\xc2\x87\xcc\x87\xb7\x87\xaf\x87\xc4\x87\xca\x87\xb4\x87\xb6\x87\xbf\x87\xb8\x87\xbd\x87\xde\x87\xb2\x89\x35\x89\x33\x89\x3c\x89\x3e\x89\x41\x89\x52\x89\x37\x89\x42\x89\xad\x89\xaf\x89\xae\x89\xf2\x89\xf3\x8b\x1e\x8b\x18\x8b\x16\x8b\x11\x8b\x05\x8b\x0b\x8b\x22\x8b\x0f\x8b\x12\x8b\x15\x8b\x07\x8b\x0d\x8b\x08\x8b\x06\x8b\x1c\x8b\x13\x8b\x1a\x8c\x4f\x8c\x70\x8c\x72", /* 8880 */ "\x00\x00\x8c\x71\x8c\x6f\x8c\x95\x8c\x94\x8c\xf9\x8d\x6f\x8e\x4e\x8e\x4d\x8e\x53\x8e\x50\x8e\x4c\x8e\x47\x8f\x43\x8f\x40\x90\x85\x90\x7e\x91\x38\x91\x9a\x91\xa2\x91\x9b\x91\x99\x91\x9f\x91\xa1\x91\x9d\x91\xa0\x93\xa1\x93\x83\x93\xaf\x93\x64\x93\x56\x93\x47\x93\x7c\x93\x58\x93\x5c\x93\x76\x93\x49\x93\x50\x93\x51\x93\x60\x93\x6d\x93\x8f\x93\x4c\x93\x6a\x93\x79\x93\x57\x93\x55\x93\x52\x93\x4f\x93\x71\x93\x77\x93\x7b\x93\x61\x93\x5e\x93\x63\x93\x67\x93\x80\x93\x4e\x93\x59\x95\xc7\x95\xc0\x95\xc9\x95\xc3\x95\xc5\x95\xb7\x96\xae\x96\xb0\x96\xac\x97\x20\x97\x1f\x97\x18\x97\x1d\x97\x19\x97\x9a\x97\xa1\x97\x9c\x97\x9e\x97\x9d\x97\xd5\x97\xd4\x97\xf1\x98\x41\x98\x44\x98\x4a\x98\x49\x98\x45\x98\x43\x99\x25\x99\x2b\x99\x2c\x99\x2a\x99\x33\x99\x32\x99\x2f\x99\x2d\x99\x31\x99\x30\x99\x98\x99\xa3\x99\xa1\x9a\x02\x99\xfa\x99\xf4\x99\xf7\x99\xf9\x99\xf8\x99\xf6\x99\xfb\x99\xfd\x99\xfe\x99\xfc\x9a\x03\x9a\xbe\x9a\xfe\x9a\xfd\x9b\x01\x9a\xfc\x9b\x48\x9b\x9a\x9b\xa8\x9b\x9e\x9b\x9b\x9b\xa6\x9b\xa1\x9b\xa5\x9b\xa4\x00\x00\x00\x00", /* 8900 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x9b\x86\x9b\xa2\x9b\xa0\x9b\xaf\x9d\x33\x9d\x41\x9d\x67\x9d\x36\x9d\x2e\x9d\x2f\x9d\x31\x9d\x38\x9d\x30\x9d\x45\x9d\x42\x9d\x43\x9d\x3e\x9d\x37\x9d\x40\x9d\x3d\x7f\xf5\x9d\x2d\x9e\x8a\x9e\x89\x9e\x8d\x9e\xb0\x9e\xc8\x9e\xda\x9e\xfb\x9e\xff\x9f\x24\x9f\x23\x9f\x22\x9f\x54\x9f\xa0\x51\x31\x51\x2d\x51\x2e\x56\x98\x56\x9c\x56\x97\x56\x9a\x56\x9d\x56\x99\x59\x70\x5b\x3c\x5c\x69\x5c\x6a\x5d\xc0\x5e\x6d\x5e\x6e\x61\xd8\x61\xdf\x61\xed\x61\xee\x61\xf1\x61\xea\x61\xf0\x61\xeb\x61\xd6\x61\xe9\x64\xff\x65\x04", /* 8980 */ "\x00\x00\x64\xfd\x64\xf8\x65\x01\x65\x03\x64\xfc\x65\x94\x65\xdb\x66\xda\x66\xdb\x66\xd8\x6a\xc5\x6a\xb9\x6a\xbd\x6a\xe1\x6a\xc6\x6a\xba\x6a\xb6\x6a\xb7\x6a\xc7\x6a\xb4\x6a\xad\x6b\x5e\x6b\xc9\x6c\x0b\x70\x07\x70\x0c\x70\x0d\x70\x01\x70\x05\x70\x14\x70\x0e\x6f\xff\x70\x00\x6f\xfb\x70\x26\x6f\xfc\x6f\xf7\x70\x0a\x72\x01\x71\xff\x71\xf9\x72\x03\x71\xfd\x73\x76\x74\xb8\x74\xc0\x74\xb5\x74\xc1\x74\xbe\x74\xb6\x74\xbb\x74\xc2\x75\x14\x75\x13\x76\x5c\x76\x64\x76\x59\x76\x50\x76\x53\x76\x57\x76\x5a\x76\xa6\x76\xbd\x76\xec\x77\xc2\x77\xba\x78\xff\x79\x0c\x79\x13\x79\x14\x79\x09\x79\x10\x79\x12\x79\x11\x79\xad\x79\xac\x7a\x5f\x7c\x1c\x7c\x29\x7c\x19\x7c\x20\x7c\x1f\x7c\x2d\x7c\x1d\x7c\x26\x7c\x28\x7c\x22\x7c\x25\x7c\x30\x7e\x5c\x7e\x50\x7e\x56\x7e\x63\x7e\x58\x7e\x62\x7e\x5f\x7e\x51\x7e\x60\x7e\x57\x7e\x53\x7f\xb5\x7f\xb3\x7f\xf7\x7f\xf8\x80\x75\x81\xd1\x81\xd2\x81\xd0\x82\x5f\x82\x5e\x85\xb4\x85\xc6\x85\xc0\x85\xc3\x85\xc2\x85\xb3\x85\xb5\x85\xbd\x85\xc7\x85\xc4\x85\xbf\x85\xcb\x85\xce\x85\xc8\x85\xc5\x00\x00\x00\x00", /* 8a00 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x85\xb1\x85\xb6\x85\xd2\x86\x24\x85\xb8\x85\xb7\x85\xbe\x86\x69\x87\xe7\x87\xe6\x87\xe2\x87\xdb\x87\xeb\x87\xea\x87\xe5\x87\xdf\x87\xf3\x87\xe4\x87\xd4\x87\xdc\x87\xd3\x87\xed\x87\xd8\x87\xe3\x87\xa4\x87\xd7\x87\xd9\x88\x01\x87\xf4\x87\xe8\x87\xdd\x89\x53\x89\x4b\x89\x4f\x89\x4c\x89\x46\x89\x50\x89\x51\x89\x49\x8b\x2a\x8b\x27\x8b\x23\x8b\x33\x8b\x30\x8b\x35\x8b\x47\x8b\x2f\x8b\x3c\x8b\x3e\x8b\x31\x8b\x25\x8b\x37\x8b\x26\x8b\x36\x8b\x2e\x8b\x24\x8b\x3b\x8b\x3d\x8b\x3a\x8c\x42\x8c\x75\x8c\x99\x8c\x98", /* 8a80 */ "\x00\x00\x8c\x97\x8c\xfe\x8d\x04\x8d\x02\x8d\x00\x8e\x5c\x8e\x62\x8e\x60\x8e\x57\x8e\x56\x8e\x5e\x8e\x65\x8e\x67\x8e\x5b\x8e\x5a\x8e\x61\x8e\x5d\x8e\x69\x8e\x54\x8f\x46\x8f\x47\x8f\x48\x8f\x4b\x91\x28\x91\x3a\x91\x3b\x91\x3e\x91\xa8\x91\xa5\x91\xa7\x91\xaf\x91\xaa\x93\xb5\x93\x8c\x93\x92\x93\xb7\x93\x9b\x93\x9d\x93\x89\x93\xa7\x93\x8e\x93\xaa\x93\x9e\x93\xa6\x93\x95\x93\x88\x93\x99\x93\x9f\x93\x8d\x93\xb1\x93\x91\x93\xb2\x93\xa4\x93\xa8\x93\xb4\x93\xa3\x93\xa5\x95\xd2\x95\xd3\x95\xd1\x96\xb3\x96\xd7\x96\xda\x5d\xc2\x96\xdf\x96\xd8\x96\xdd\x97\x23\x97\x22\x97\x25\x97\xac\x97\xae\x97\xa8\x97\xab\x97\xa4\x97\xaa\x97\xa2\x97\xa5\x97\xd7\x97\xd9\x97\xd6\x97\xd8\x97\xfa\x98\x50\x98\x51\x98\x52\x98\xb8\x99\x41\x99\x3c\x99\x3a\x9a\x0f\x9a\x0b\x9a\x09\x9a\x0d\x9a\x04\x9a\x11\x9a\x0a\x9a\x05\x9a\x07\x9a\x06\x9a\xc0\x9a\xdc\x9b\x08\x9b\x04\x9b\x05\x9b\x29\x9b\x35\x9b\x4a\x9b\x4c\x9b\x4b\x9b\xc7\x9b\xc6\x9b\xc3\x9b\xbf\x9b\xc1\x9b\xb5\x9b\xb8\x9b\xd3\x9b\xb6\x9b\xc4\x9b\xb9\x9b\xbd\x9d\x5c\x9d\x53\x9d\x4f\x00\x00\x00\x00", /* 8b00 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x9d\x4a\x9d\x5b\x9d\x4b\x9d\x59\x9d\x56\x9d\x4c\x9d\x57\x9d\x52\x9d\x54\x9d\x5f\x9d\x58\x9d\x5a\x9e\x8e\x9e\x8c\x9e\xdf\x9f\x01\x9f\x00\x9f\x16\x9f\x25\x9f\x2b\x9f\x2a\x9f\x29\x9f\x28\x9f\x4c\x9f\x55\x51\x34\x51\x35\x52\x96\x52\xf7\x53\xb4\x56\xab\x56\xad\x56\xa6\x56\xa7\x56\xaa\x56\xac\x58\xda\x58\xdd\x58\xdb\x59\x12\x5b\x3d\x5b\x3e\x5b\x3f\x5d\xc3\x5e\x70\x5f\xbf\x61\xfb\x65\x07\x65\x10\x65\x0d\x65\x09\x65\x0c\x65\x0e\x65\x84\x65\xde\x65\xdd\x66\xde\x6a\xe7\x6a\xe0\x6a\xcc\x6a\xd1\x6a\xd9\x6a\xcb", /* 8b80 */ "\x00\x00\x6a\xdf\x6a\xdc\x6a\xd0\x6a\xeb\x6a\xcf\x6a\xcd\x6a\xde\x6b\x60\x6b\xb0\x6c\x0c\x70\x19\x70\x27\x70\x20\x70\x16\x70\x2b\x70\x21\x70\x22\x70\x23\x70\x29\x70\x17\x70\x24\x70\x1c\x70\x2a\x72\x0c\x72\x0a\x72\x07\x72\x02\x72\x05\x72\xa5\x72\xa6\x72\xa4\x72\xa3\x72\xa1\x74\xcb\x74\xc5\x74\xb7\x74\xc3\x75\x16\x76\x60\x77\xc9\x77\xca\x77\xc4\x77\xf1\x79\x1d\x79\x1b\x79\x21\x79\x1c\x79\x17\x79\x1e\x79\xb0\x7a\x67\x7a\x68\x7c\x33\x7c\x3c\x7c\x39\x7c\x2c\x7c\x3b\x7c\xec\x7c\xea\x7e\x76\x7e\x75\x7e\x78\x7e\x70\x7e\x77\x7e\x6f\x7e\x7a\x7e\x72\x7e\x74\x7e\x68\x7f\x4b\x7f\x4a\x7f\x83\x7f\x86\x7f\xb7\x7f\xfd\x7f\xfe\x80\x78\x81\xd7\x81\xd5\x82\x64\x82\x61\x82\x63\x85\xeb\x85\xf1\x85\xed\x85\xd9\x85\xe1\x85\xe8\x85\xda\x85\xd7\x85\xec\x85\xf2\x85\xf8\x85\xd8\x85\xdf\x85\xe3\x85\xdc\x85\xd1\x85\xf0\x85\xe6\x85\xef\x85\xde\x85\xe2\x88\x00\x87\xfa\x88\x03\x87\xf6\x87\xf7\x88\x09\x88\x0c\x88\x0b\x88\x06\x87\xfc\x88\x08\x87\xff\x88\x0a\x88\x02\x89\x62\x89\x5a\x89\x5b\x89\x57\x89\x61\x89\x5c\x89\x58\x89\x5d\x00\x00\x00\x00", /* 8c00 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x89\x59\x89\x88\x89\xb7\x89\xb6\x89\xf6\x8b\x50\x8b\x48\x8b\x4a\x8b\x40\x8b\x53\x8b\x56\x8b\x54\x8b\x4b\x8b\x55\x8b\x51\x8b\x42\x8b\x52\x8b\x57\x8c\x43\x8c\x77\x8c\x76\x8c\x9a\x8d\x06\x8d\x07\x8d\x09\x8d\xac\x8d\xaa\x8d\xad\x8d\xab\x8e\x6d\x8e\x78\x8e\x73\x8e\x6a\x8e\x6f\x8e\x7b\x8e\xc2\x8f\x52\x8f\x51\x8f\x4f\x8f\x50\x8f\x53\x8f\xb4\x91\x40\x91\x3f\x91\xb0\x91\xad\x93\xde\x93\xc7\x93\xcf\x93\xc2\x93\xda\x93\xd0\x93\xf9\x93\xec\x93\xcc\x93\xd9\x93\xa9\x93\xe6\x93\xca\x93\xd4\x93\xee\x93\xe3\x93\xd5", /* 8c80 */ "\x00\x00\x93\xc4\x93\xce\x93\xc0\x93\xd2\x93\xe7\x95\x7d\x95\xda\x95\xdb\x96\xe1\x97\x29\x97\x2b\x97\x2c\x97\x28\x97\x26\x97\xb3\x97\xb7\x97\xb6\x97\xdd\x97\xde\x97\xdf\x98\x5c\x98\x59\x98\x5d\x98\x57\x98\xbf\x98\xbd\x98\xbb\x98\xbe\x99\x48\x99\x47\x99\x43\x99\xa6\x99\xa7\x9a\x1a\x9a\x15\x9a\x25\x9a\x1d\x9a\x24\x9a\x1b\x9a\x22\x9a\x20\x9a\x27\x9a\x23\x9a\x1e\x9a\x1c\x9a\x14\x9a\xc2\x9b\x0b\x9b\x0a\x9b\x0e\x9b\x0c\x9b\x37\x9b\xea\x9b\xeb\x9b\xe0\x9b\xde\x9b\xe4\x9b\xe6\x9b\xe2\x9b\xf0\x9b\xd4\x9b\xd7\x9b\xec\x9b\xdc\x9b\xd9\x9b\xe5\x9b\xd5\x9b\xe1\x9b\xda\x9d\x77\x9d\x81\x9d\x8a\x9d\x84\x9d\x88\x9d\x71\x9d\x80\x9d\x78\x9d\x86\x9d\x8b\x9d\x8c\x9d\x7d\x9d\x6b\x9d\x74\x9d\x75\x9d\x70\x9d\x69\x9d\x85\x9d\x73\x9d\x7b\x9d\x82\x9d\x6f\x9d\x79\x9d\x7f\x9d\x87\x9d\x68\x9e\x94\x9e\x91\x9e\xc0\x9e\xfc\x9f\x2d\x9f\x40\x9f\x41\x9f\x4d\x9f\x56\x9f\x57\x9f\x58\x53\x37\x56\xb2\x56\xb5\x56\xb3\x58\xe3\x5b\x45\x5d\xc6\x5d\xc7\x5e\xee\x5e\xef\x5f\xc0\x5f\xc1\x61\xf9\x65\x17\x65\x16\x65\x15\x65\x13\x65\xdf\x66\xe8\x00\x00\x00\x00", /* 8d00 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x66\xe3\x66\xe4\x6a\xf3\x6a\xf0\x6a\xea\x6a\xe8\x6a\xf9\x6a\xf1\x6a\xee\x6a\xef\x70\x3c\x70\x35\x70\x2f\x70\x37\x70\x34\x70\x31\x70\x42\x70\x38\x70\x3f\x70\x3a\x70\x39\x70\x40\x70\x3b\x70\x33\x70\x41\x72\x13\x72\x14\x72\xa8\x73\x7d\x73\x7c\x74\xba\x76\xab\x76\xaa\x76\xbe\x76\xed\x77\xcc\x77\xce\x77\xcf\x77\xcd\x77\xf2\x79\x25\x79\x23\x79\x27\x79\x28\x79\x24\x79\x29\x79\xb2\x7a\x6e\x7a\x6c\x7a\x6d\x7a\xf7\x7c\x49\x7c\x48\x7c\x4a\x7c\x47\x7c\x45\x7c\xee\x7e\x7b\x7e\x7e\x7e\x81\x7e\x80\x7f\xba\x7f\xff", /* 8d80 */ "\x00\x00\x80\x79\x81\xdb\x81\xd9\x82\x0b\x82\x68\x82\x69\x86\x22\x85\xff\x86\x01\x85\xfe\x86\x1b\x86\x00\x85\xf6\x86\x04\x86\x09\x86\x05\x86\x0c\x85\xfd\x88\x19\x88\x10\x88\x11\x88\x17\x88\x13\x88\x16\x89\x63\x89\x66\x89\xb9\x89\xf7\x8b\x60\x8b\x6a\x8b\x5d\x8b\x68\x8b\x63\x8b\x65\x8b\x67\x8b\x6d\x8d\xae\x8e\x86\x8e\x88\x8e\x84\x8f\x59\x8f\x56\x8f\x57\x8f\x55\x8f\x58\x8f\x5a\x90\x8d\x91\x43\x91\x41\x91\xb7\x91\xb5\x91\xb2\x91\xb3\x94\x0b\x94\x13\x93\xfb\x94\x20\x94\x0f\x94\x14\x93\xfe\x94\x15\x94\x10\x94\x28\x94\x19\x94\x0d\x93\xf5\x94\x00\x93\xf7\x94\x07\x94\x0e\x94\x16\x94\x12\x93\xfa\x94\x09\x93\xf8\x94\x0a\x93\xff\x93\xfc\x94\x0c\x93\xf6\x94\x11\x94\x06\x95\xde\x95\xe0\x95\xdf\x97\x2e\x97\x2f\x97\xb9\x97\xbb\x97\xfd\x97\xfe\x98\x60\x98\x62\x98\x63\x98\x5f\x98\xc1\x98\xc2\x99\x50\x99\x4e\x99\x59\x99\x4c\x99\x4b\x99\x53\x9a\x32\x9a\x34\x9a\x31\x9a\x2c\x9a\x2a\x9a\x36\x9a\x29\x9a\x2e\x9a\x38\x9a\x2d\x9a\xc7\x9a\xca\x9a\xc6\x9b\x10\x9b\x12\x9b\x11\x9c\x0b\x9c\x08\x9b\xf7\x9c\x05\x9c\x12\x9b\xf8\x00\x00\x00\x00", /* 8e00 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x9c\x40\x9c\x07\x9c\x0e\x9c\x06\x9c\x17\x9c\x14\x9c\x09\x9d\x9f\x9d\x99\x9d\xa4\x9d\x9d\x9d\x92\x9d\x98\x9d\x90\x9d\x9b\x9d\xa0\x9d\x94\x9d\x9c\x9d\xaa\x9d\x97\x9d\xa1\x9d\x9a\x9d\xa2\x9d\xa8\x9d\x9e\x9d\xa3\x9d\xbf\x9d\xa9\x9d\x96\x9d\xa6\x9d\xa7\x9e\x99\x9e\x9b\x9e\x9a\x9e\xe5\x9e\xe4\x9e\xe7\x9e\xe6\x9f\x30\x9f\x2e\x9f\x5b\x9f\x60\x9f\x5e\x9f\x5d\x9f\x59\x9f\x91\x51\x3a\x51\x39\x52\x98\x52\x97\x56\xc3\x56\xbd\x56\xbe\x5b\x48\x5b\x47\x5d\xcb\x5d\xcf\x5e\xf1\x61\xfd\x65\x1b\x6b\x02\x6a\xfc\x6b\x03", /* 8e80 */ "\x00\x00\x6a\xf8\x6b\x00\x70\x43\x70\x44\x70\x4a\x70\x48\x70\x49\x70\x45\x70\x46\x72\x1d\x72\x1a\x72\x19\x73\x7e\x75\x17\x76\x6a\x77\xd0\x79\x2d\x79\x31\x79\x2f\x7c\x54\x7c\x53\x7c\xf2\x7e\x8a\x7e\x87\x7e\x88\x7e\x8b\x7e\x86\x7e\x8d\x7f\x4d\x7f\xbb\x80\x30\x81\xdd\x86\x18\x86\x2a\x86\x26\x86\x1f\x86\x23\x86\x1c\x86\x19\x86\x27\x86\x2e\x86\x21\x86\x20\x86\x29\x86\x1e\x86\x25\x88\x29\x88\x1d\x88\x1b\x88\x20\x88\x24\x88\x1c\x88\x2b\x88\x4a\x89\x6d\x89\x69\x89\x6e\x89\x6b\x89\xfa\x8b\x79\x8b\x78\x8b\x45\x8b\x7a\x8b\x7b\x8d\x10\x8d\x14\x8d\xaf\x8e\x8e\x8e\x8c\x8f\x5e\x8f\x5b\x8f\x5d\x91\x46\x91\x44\x91\x45\x91\xb9\x94\x3f\x94\x3b\x94\x36\x94\x29\x94\x3d\x94\x3c\x94\x30\x94\x39\x94\x2a\x94\x37\x94\x2c\x94\x40\x94\x31\x95\xe5\x95\xe4\x95\xe3\x97\x35\x97\x3a\x97\xbf\x97\xe1\x98\x64\x98\xc9\x98\xc6\x98\xc0\x99\x58\x99\x56\x9a\x39\x9a\x3d\x9a\x46\x9a\x44\x9a\x42\x9a\x41\x9a\x3a\x9a\x3f\x9a\xcd\x9b\x15\x9b\x17\x9b\x18\x9b\x16\x9b\x3a\x9b\x52\x9c\x2b\x9c\x1d\x9c\x1c\x9c\x2c\x9c\x23\x9c\x28\x9c\x29\x9c\x24\x00\x00\x00\x00", /* 8f00 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x9c\x21\x9d\xb7\x9d\xb6\x9d\xbc\x9d\xc1\x9d\xc7\x9d\xca\x9d\xcf\x9d\xbe\x9d\xc5\x9d\xc3\x9d\xbb\x9d\xb5\x9d\xce\x9d\xb9\x9d\xba\x9d\xac\x9d\xc8\x9d\xb1\x9d\xad\x9d\xcc\x9d\xb3\x9d\xcd\x9d\xb2\x9e\x7a\x9e\x9c\x9e\xeb\x9e\xee\x9e\xed\x9f\x1b\x9f\x18\x9f\x1a\x9f\x31\x9f\x4e\x9f\x65\x9f\x64\x9f\x92\x4e\xb9\x56\xc6\x56\xc5\x56\xcb\x59\x71\x5b\x4b\x5b\x4c\x5d\xd5\x5d\xd1\x5e\xf2\x65\x21\x65\x20\x65\x26\x65\x22\x6b\x0b\x6b\x08\x6b\x09\x6c\x0d\x70\x55\x70\x56\x70\x57\x70\x52\x72\x1e\x72\x1f\x72\xa9\x73\x7f", /* 8f80 */ "\x00\x00\x74\xd8\x74\xd5\x74\xd9\x74\xd7\x76\x6d\x76\xad\x79\x35\x79\xb4\x7a\x70\x7a\x71\x7c\x57\x7c\x5c\x7c\x59\x7c\x5b\x7c\x5a\x7c\xf4\x7c\xf1\x7e\x91\x7f\x4f\x7f\x87\x81\xde\x82\x6b\x86\x34\x86\x35\x86\x33\x86\x2c\x86\x32\x86\x36\x88\x2c\x88\x28\x88\x26\x88\x2a\x88\x25\x89\x71\x89\xbf\x89\xbe\x89\xfb\x8b\x7e\x8b\x84\x8b\x82\x8b\x86\x8b\x85\x8b\x7f\x8d\x15\x8e\x95\x8e\x94\x8e\x9a\x8e\x92\x8e\x90\x8e\x96\x8e\x97\x8f\x60\x8f\x62\x91\x47\x94\x4c\x94\x50\x94\x4a\x94\x4b\x94\x4f\x94\x47\x94\x45\x94\x48\x94\x49\x94\x46\x97\x3f\x97\xe3\x98\x6a\x98\x69\x98\xcb\x99\x54\x99\x5b\x9a\x4e\x9a\x53\x9a\x54\x9a\x4c\x9a\x4f\x9a\x48\x9a\x4a\x9a\x49\x9a\x52\x9a\x50\x9a\xd0\x9b\x19\x9b\x2b\x9b\x3b\x9b\x56\x9b\x55\x9c\x46\x9c\x48\x9c\x3f\x9c\x44\x9c\x39\x9c\x33\x9c\x41\x9c\x3c\x9c\x37\x9c\x34\x9c\x32\x9c\x3d\x9c\x36\x9d\xdb\x9d\xd2\x9d\xde\x9d\xda\x9d\xcb\x9d\xd0\x9d\xdc\x9d\xd1\x9d\xdf\x9d\xe9\x9d\xd9\x9d\xd8\x9d\xd6\x9d\xf5\x9d\xd5\x9d\xdd\x9e\xb6\x9e\xf0\x9f\x35\x9f\x33\x9f\x32\x9f\x42\x9f\x6b\x9f\x95\x9f\xa2\x00\x00\x00\x00", /* 9000 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x51\x3d\x52\x99\x58\xe8\x58\xe7\x59\x72\x5b\x4d\x5d\xd8\x88\x2f\x5f\x4f\x62\x01\x62\x03\x62\x04\x65\x29\x65\x25\x65\x96\x66\xeb\x6b\x11\x6b\x12\x6b\x0f\x6b\xca\x70\x5b\x70\x5a\x72\x22\x73\x82\x73\x81\x73\x83\x76\x70\x77\xd4\x7c\x67\x7c\x66\x7e\x95\x82\x6c\x86\x3a\x86\x40\x86\x39\x86\x3c\x86\x31\x86\x3b\x86\x3e\x88\x30\x88\x32\x88\x2e\x88\x33\x89\x76\x89\x74\x89\x73\x89\xfe\x8b\x8c\x8b\x8e\x8b\x8b\x8b\x88\x8c\x45\x8d\x19\x8e\x98\x8f\x64\x8f\x63\x91\xbc\x94\x62\x94\x55\x94\x5d\x94\x57\x94\x5e\x97\xc4", /* 9080 */ "\x00\x00\x97\xc5\x98\x00\x9a\x56\x9a\x59\x9b\x1e\x9b\x1f\x9b\x20\x9c\x52\x9c\x58\x9c\x50\x9c\x4a\x9c\x4d\x9c\x4b\x9c\x55\x9c\x59\x9c\x4c\x9c\x4e\x9d\xfb\x9d\xf7\x9d\xef\x9d\xe3\x9d\xeb\x9d\xf8\x9d\xe4\x9d\xf6\x9d\xe1\x9d\xee\x9d\xe6\x9d\xf2\x9d\xf0\x9d\xe2\x9d\xec\x9d\xf4\x9d\xf3\x9d\xe8\x9d\xed\x9e\xc2\x9e\xd0\x9e\xf2\x9e\xf3\x9f\x06\x9f\x1c\x9f\x38\x9f\x37\x9f\x36\x9f\x43\x9f\x4f\x9f\x71\x9f\x70\x9f\x6e\x9f\x6f\x56\xd3\x56\xcd\x5b\x4e\x5c\x6d\x65\x2d\x66\xed\x66\xee\x6b\x13\x70\x5f\x70\x61\x70\x5d\x70\x60\x72\x23\x74\xdb\x74\xe5\x77\xd5\x79\x38\x79\xb7\x79\xb6\x7c\x6a\x7e\x97\x7f\x89\x82\x6d\x86\x43\x88\x38\x88\x37\x88\x35\x88\x4b\x8b\x94\x8b\x95\x8e\x9e\x8e\x9f\x8e\xa0\x8e\x9d\x91\xbe\x91\xbd\x91\xc2\x94\x6b\x94\x68\x94\x69\x96\xe5\x97\x46\x97\x43\x97\x47\x97\xc7\x97\xe5\x9a\x5e\x9a\xd5\x9b\x59\x9c\x63\x9c\x67\x9c\x66\x9c\x62\x9c\x5e\x9c\x60\x9e\x02\x9d\xfe\x9e\x07\x9e\x03\x9e\x06\x9e\x05\x9e\x00\x9e\x01\x9e\x09\x9d\xff\x9d\xfd\x9e\x04\x9e\xa0\x9f\x1e\x9f\x46\x9f\x74\x9f\x75\x9f\x76\x56\xd4\x00\x00\x00\x00", /* 9100 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x65\x2e\x65\xb8\x6b\x18\x6b\x19\x6b\x17\x6b\x1a\x70\x62\x72\x26\x72\xaa\x77\xd8\x77\xd9\x79\x39\x7c\x69\x7c\x6b\x7c\xf6\x7e\x9a\x7e\x98\x7e\x9b\x7e\x99\x81\xe0\x81\xe1\x86\x46\x86\x47\x86\x48\x89\x79\x89\x7a\x89\x7c\x89\x7b\x89\xff\x8b\x98\x8b\x99\x8e\xa5\x8e\xa4\x8e\xa3\x94\x6e\x94\x6d\x94\x6f\x94\x71\x94\x73\x97\x49\x98\x72\x99\x5f\x9c\x68\x9c\x6e\x9c\x6d\x9e\x0b\x9e\x0d\x9e\x10\x9e\x0f\x9e\x12\x9e\x11\x9e\xa1\x9e\xf5\x9f\x09\x9f\x47\x9f\x78\x9f\x7b\x9f\x7a\x9f\x79\x57\x1e\x70\x66\x7c\x6f\x88\x3c", /* 9180 */ "\x00\x00\x8d\xb2\x8e\xa6\x91\xc3\x94\x74\x94\x78\x94\x76\x94\x75\x9a\x60\x9c\x74\x9c\x73\x9c\x71\x9c\x75\x9e\x14\x9e\x13\x9e\xf6\x9f\x0a\x9f\xa4\x70\x68\x70\x65\x7c\xf7\x86\x6a\x88\x3e\x88\x3d\x88\x3f\x8b\x9e\x8c\x9c\x8e\xa9\x8e\xc9\x97\x4b\x98\x73\x98\x74\x98\xcc\x99\x61\x99\xab\x9a\x64\x9a\x66\x9a\x67\x9b\x24\x9e\x15\x9e\x17\x9f\x48\x62\x07\x6b\x1e\x72\x27\x86\x4c\x8e\xa8\x94\x82\x94\x80\x94\x81\x9a\x69\x9a\x68\x9b\x2e\x9e\x19\x72\x29\x86\x4b\x8b\x9f\x94\x83\x9c\x79\x9e\xb7\x76\x75\x9a\x6b\x9c\x7a\x9e\x1d\x70\x69\x70\x6a\x9e\xa4\x9f\x7e\x9f\x49\x9f\x98\x69\x1e\x6e\xb8\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 9200 */ NULL, /* 9280 */ NULL, /* 9300 */ NULL, /* 9380 */ NULL, /* 9400 */ NULL, /* 9480 */ NULL, /* 9500 */ NULL, /* 9580 */ NULL, /* 9600 */ NULL, /* 9680 */ NULL, /* 9700 */ NULL, /* 9780 */ NULL, /* 9800 */ NULL, /* 9880 */ NULL, /* 9900 */ NULL, /* 9980 */ NULL, /* 9a00 */ NULL, /* 9a80 */ NULL, /* 9b00 */ NULL, /* 9b80 */ NULL, /* 9c00 */ NULL, /* 9c80 */ NULL, /* 9d00 */ NULL, /* 9d80 */ NULL, /* 9e00 */ NULL, /* 9e80 */ NULL, /* 9f00 */ NULL, /* 9f80 */ NULL, /* a000 */ NULL, /* a080 */ NULL, /* a100 */ NULL, /* a180 */ NULL, /* a200 */ NULL, /* a280 */ NULL, /* a300 */ NULL, /* a380 */ NULL, /* a400 */ NULL, /* a480 */ NULL, /* a500 */ NULL, /* a580 */ NULL, /* a600 */ NULL, /* a680 */ NULL, /* a700 */ NULL, /* a780 */ NULL, /* a800 */ NULL, /* a880 */ NULL, /* a900 */ NULL, /* a980 */ NULL, /* aa00 */ NULL, /* aa80 */ NULL, /* ab00 */ NULL, /* ab80 */ NULL, /* ac00 */ NULL, /* ac80 */ NULL, /* ad00 */ NULL, /* ad80 */ NULL, /* ae00 */ NULL, /* ae80 */ NULL, /* af00 */ NULL, /* af80 */ NULL, /* b000 */ NULL, /* b080 */ NULL, /* b100 */ NULL, /* b180 */ NULL, /* b200 */ NULL, /* b280 */ NULL, /* b300 */ NULL, /* b380 */ NULL, /* b400 */ NULL, /* b480 */ NULL, /* b500 */ NULL, /* b580 */ NULL, /* b600 */ NULL, /* b680 */ NULL, /* b700 */ NULL, /* b780 */ NULL, /* b800 */ NULL, /* b880 */ NULL, /* b900 */ NULL, /* b980 */ NULL, /* ba00 */ NULL, /* ba80 */ NULL, /* bb00 */ NULL, /* bb80 */ NULL, /* bc00 */ NULL, /* bc80 */ NULL, /* bd00 */ NULL, /* bd80 */ NULL, /* be00 */ NULL, /* be80 */ NULL, /* bf00 */ NULL, /* bf80 */ NULL, /* c000 */ NULL, /* c080 */ NULL, /* c100 */ NULL, /* c180 */ NULL, /* c200 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe0\x00\xe0\x01\xe0\x02\xe0\x03\xe0\x04\xe0\x05\xe0\x06\xe0\x07\xe0\x08\xe0\x09\xe0\x0a\xe0\x0b\xe0\x0c\xe0\x0d\xe0\x0e\xe0\x0f\xe0\x10\xe0\x11\xe0\x12\xe0\x13\xe0\x14\xe0\x15\xe0\x16\xe0\x17\xe0\x18\xe0\x19\xe0\x1a\xe0\x1b\xe0\x1c\xe0\x1d\xe0\x1e\xe0\x1f\xe0\x20\xe0\x21\xe0\x22\xe0\x23\xe0\x24\xe0\x25\xe0\x26\xe0\x27\xe0\x28\xe0\x29\xe0\x2a\xe0\x2b\xe0\x2c\xe0\x2d\xe0\x2e\xe0\x2f\xe0\x30\xe0\x31\xe0\x32\xe0\x33\xe0\x34\xe0\x35\xe0\x36\xe0\x37\xe0\x38\xe0\x39\xe0\x3a\xe0\x3b\xe0\x3c\xe0\x3d\xe0\x3e", /* c280 */ "\x00\x00\xe0\x3f\xe0\x40\xe0\x41\xe0\x42\xe0\x43\xe0\x44\xe0\x45\xe0\x46\xe0\x47\xe0\x48\xe0\x49\xe0\x4a\xe0\x4b\xe0\x4c\xe0\x4d\xe0\x4e\xe0\x4f\xe0\x50\xe0\x51\xe0\x52\xe0\x53\xe0\x54\xe0\x55\xe0\x56\xe0\x57\xe0\x58\xe0\x59\xe0\x5a\xe0\x5b\xe0\x5c\xe0\x5d\xe0\x5e\xe0\x5f\xe0\x60\xe0\x61\xe0\x62\xe0\x63\xe0\x64\xe0\x65\xe0\x66\xe0\x67\xe0\x68\xe0\x69\xe0\x6a\xe0\x6b\xe0\x6c\xe0\x6d\xe0\x6e\xe0\x6f\xe0\x70\xe0\x71\xe0\x72\xe0\x73\xe0\x74\xe0\x75\xe0\x76\xe0\x77\xe0\x78\xe0\x79\xe0\x7a\xe0\x7b\xe0\x7c\xe0\x7d\xe0\x7e\xe0\x7f\xe0\x80\xe0\x81\xe0\x82\xe0\x83\xe0\x84\xe0\x85\xe0\x86\xe0\x87\xe0\x88\xe0\x89\xe0\x8a\xe0\x8b\xe0\x8c\xe0\x8d\xe0\x8e\xe0\x8f\xe0\x90\xe0\x91\xe0\x92\xe0\x93\xe0\x94\xe0\x95\xe0\x96\xe0\x97\xe0\x98\xe0\x99\xe0\x9a\xe0\x9b\xe0\x9c\xe0\x9d\xe0\x9e\xe0\x9f\xe0\xa0\xe0\xa1\xe0\xa2\xe0\xa3\xe0\xa4\xe0\xa5\xe0\xa6\xe0\xa7\xe0\xa8\xe0\xa9\xe0\xaa\xe0\xab\xe0\xac\xe0\xad\xe0\xae\xe0\xaf\xe0\xb0\xe0\xb1\xe0\xb2\xe0\xb3\xe0\xb4\xe0\xb5\xe0\xb6\xe0\xb7\xe0\xb8\xe0\xb9\xe0\xba\xe0\xbb\x00\x00\x00\x00", /* c300 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe0\xbc\xe0\xbd\xe0\xbe\xe0\xbf\xe0\xc0\xe0\xc1\xe0\xc2\xe0\xc3\xe0\xc4\xe0\xc5\xe0\xc6\xe0\xc7\xe0\xc8\xe0\xc9\xe0\xca\xe0\xcb\xe0\xcc\xe0\xcd\xe0\xce\xe0\xcf\xe0\xd0\xe0\xd1\xe0\xd2\xe0\xd3\xe0\xd4\xe0\xd5\xe0\xd6\xe0\xd7\xe0\xd8\xe0\xd9\xe0\xda\xe0\xdb\xe0\xdc\xe0\xdd\xe0\xde\xe0\xdf\xe0\xe0\xe0\xe1\xe0\xe2\xe0\xe3\xe0\xe4\xe0\xe5\xe0\xe6\xe0\xe7\xe0\xe8\xe0\xe9\xe0\xea\xe0\xeb\xe0\xec\xe0\xed\xe0\xee\xe0\xef\xe0\xf0\xe0\xf1\xe0\xf2\xe0\xf3\xe0\xf4\xe0\xf5\xe0\xf6\xe0\xf7\xe0\xf8\xe0\xf9\xe0\xfa", /* c380 */ "\x00\x00\xe0\xfb\xe0\xfc\xe0\xfd\xe0\xfe\xe0\xff\xe1\x00\xe1\x01\xe1\x02\xe1\x03\xe1\x04\xe1\x05\xe1\x06\xe1\x07\xe1\x08\xe1\x09\xe1\x0a\xe1\x0b\xe1\x0c\xe1\x0d\xe1\x0e\xe1\x0f\xe1\x10\xe1\x11\xe1\x12\xe1\x13\xe1\x14\xe1\x15\xe1\x16\xe1\x17\xe1\x18\xe1\x19\xe1\x1a\xe1\x1b\xe1\x1c\xe1\x1d\xe1\x1e\xe1\x1f\xe1\x20\xe1\x21\xe1\x22\xe1\x23\xe1\x24\xe1\x25\xe1\x26\xe1\x27\xe1\x28\xe1\x29\xe1\x2a\xe1\x2b\xe1\x2c\xe1\x2d\xe1\x2e\xe1\x2f\xe1\x30\xe1\x31\xe1\x32\xe1\x33\xe1\x34\xe1\x35\xe1\x36\xe1\x37\xe1\x38\xe1\x39\xe1\x3a\xe1\x3b\xe1\x3c\xe1\x3d\xe1\x3e\xe1\x3f\xe1\x40\xe1\x41\xe1\x42\xe1\x43\xe1\x44\xe1\x45\xe1\x46\xe1\x47\xe1\x48\xe1\x49\xe1\x4a\xe1\x4b\xe1\x4c\xe1\x4d\xe1\x4e\xe1\x4f\xe1\x50\xe1\x51\xe1\x52\xe1\x53\xe1\x54\xe1\x55\xe1\x56\xe1\x57\xe1\x58\xe1\x59\xe1\x5a\xe1\x5b\xe1\x5c\xe1\x5d\xe1\x5e\xe1\x5f\xe1\x60\xe1\x61\xe1\x62\xe1\x63\xe1\x64\xe1\x65\xe1\x66\xe1\x67\xe1\x68\xe1\x69\xe1\x6a\xe1\x6b\xe1\x6c\xe1\x6d\xe1\x6e\xe1\x6f\xe1\x70\xe1\x71\xe1\x72\xe1\x73\xe1\x74\xe1\x75\xe1\x76\xe1\x77\x00\x00\x00\x00", /* c400 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe1\x78\xe1\x79\xe1\x7a\xe1\x7b\xe1\x7c\xe1\x7d\xe1\x7e\xe1\x7f\xe1\x80\xe1\x81\xe1\x82\xe1\x83\xe1\x84\xe1\x85\xe1\x86\xe1\x87\xe1\x88\xe1\x89\xe1\x8a\xe1\x8b\xe1\x8c\xe1\x8d\xe1\x8e\xe1\x8f\xe1\x90\xe1\x91\xe1\x92\xe1\x93\xe1\x94\xe1\x95\xe1\x96\xe1\x97\xe1\x98\xe1\x99\xe1\x9a\xe1\x9b\xe1\x9c\xe1\x9d\xe1\x9e\xe1\x9f\xe1\xa0\xe1\xa1\xe1\xa2\xe1\xa3\xe1\xa4\xe1\xa5\xe1\xa6\xe1\xa7\xe1\xa8\xe1\xa9\xe1\xaa\xe1\xab\xe1\xac\xe1\xad\xe1\xae\xe1\xaf\xe1\xb0\xe1\xb1\xe1\xb2\xe1\xb3\xe1\xb4\xe1\xb5\xe1\xb6", /* c480 */ "\x00\x00\xe1\xb7\xe1\xb8\xe1\xb9\xe1\xba\xe1\xbb\xe1\xbc\xe1\xbd\xe1\xbe\xe1\xbf\xe1\xc0\xe1\xc1\xe1\xc2\xe1\xc3\xe1\xc4\xe1\xc5\xe1\xc6\xe1\xc7\xe1\xc8\xe1\xc9\xe1\xca\xe1\xcb\xe1\xcc\xe1\xcd\xe1\xce\xe1\xcf\xe1\xd0\xe1\xd1\xe1\xd2\xe1\xd3\xe1\xd4\xe1\xd5\xe1\xd6\xe1\xd7\xe1\xd8\xe1\xd9\xe1\xda\xe1\xdb\xe1\xdc\xe1\xdd\xe1\xde\xe1\xdf\xe1\xe0\xe1\xe1\xe1\xe2\xe1\xe3\xe1\xe4\xe1\xe5\xe1\xe6\xe1\xe7\xe1\xe8\xe1\xe9\xe1\xea\xe1\xeb\xe1\xec\xe1\xed\xe1\xee\xe1\xef\xe1\xf0\xe1\xf1\xe1\xf2\xe1\xf3\xe1\xf4\xe1\xf5\xe1\xf6\xe1\xf7\xe1\xf8\xe1\xf9\xe1\xfa\xe1\xfb\xe1\xfc\xe1\xfd\xe1\xfe\xe1\xff\xe2\x00\xe2\x01\xe2\x02\xe2\x03\xe2\x04\xe2\x05\xe2\x06\xe2\x07\xe2\x08\xe2\x09\xe2\x0a\xe2\x0b\xe2\x0c\xe2\x0d\xe2\x0e\xe2\x0f\xe2\x10\xe2\x11\xe2\x12\xe2\x13\xe2\x14\xe2\x15\xe2\x16\xe2\x17\xe2\x18\xe2\x19\xe2\x1a\xe2\x1b\xe2\x1c\xe2\x1d\xe2\x1e\xe2\x1f\xe2\x20\xe2\x21\xe2\x22\xe2\x23\xe2\x24\xe2\x25\xe2\x26\xe2\x27\xe2\x28\xe2\x29\xe2\x2a\xe2\x2b\xe2\x2c\xe2\x2d\xe2\x2e\xe2\x2f\xe2\x30\xe2\x31\xe2\x32\xe2\x33\x00\x00\x00\x00", /* c500 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe2\x34\xe2\x35\xe2\x36\xe2\x37\xe2\x38\xe2\x39\xe2\x3a\xe2\x3b\xe2\x3c\xe2\x3d\xe2\x3e\xe2\x3f\xe2\x40\xe2\x41\xe2\x42\xe2\x43\xe2\x44\xe2\x45\xe2\x46\xe2\x47\xe2\x48\xe2\x49\xe2\x4a\xe2\x4b\xe2\x4c\xe2\x4d\xe2\x4e\xe2\x4f\xe2\x50\xe2\x51\xe2\x52\xe2\x53\xe2\x54\xe2\x55\xe2\x56\xe2\x57\xe2\x58\xe2\x59\xe2\x5a\xe2\x5b\xe2\x5c\xe2\x5d\xe2\x5e\xe2\x5f\xe2\x60\xe2\x61\xe2\x62\xe2\x63\xe2\x64\xe2\x65\xe2\x66\xe2\x67\xe2\x68\xe2\x69\xe2\x6a\xe2\x6b\xe2\x6c\xe2\x6d\xe2\x6e\xe2\x6f\xe2\x70\xe2\x71\xe2\x72", /* c580 */ "\x00\x00\xe2\x73\xe2\x74\xe2\x75\xe2\x76\xe2\x77\xe2\x78\xe2\x79\xe2\x7a\xe2\x7b\xe2\x7c\xe2\x7d\xe2\x7e\xe2\x7f\xe2\x80\xe2\x81\xe2\x82\xe2\x83\xe2\x84\xe2\x85\xe2\x86\xe2\x87\xe2\x88\xe2\x89\xe2\x8a\xe2\x8b\xe2\x8c\xe2\x8d\xe2\x8e\xe2\x8f\xe2\x90\xe2\x91\xe2\x92\xe2\x93\xe2\x94\xe2\x95\xe2\x96\xe2\x97\xe2\x98\xe2\x99\xe2\x9a\xe2\x9b\xe2\x9c\xe2\x9d\xe2\x9e\xe2\x9f\xe2\xa0\xe2\xa1\xe2\xa2\xe2\xa3\xe2\xa4\xe2\xa5\xe2\xa6\xe2\xa7\xe2\xa8\xe2\xa9\xe2\xaa\xe2\xab\xe2\xac\xe2\xad\xe2\xae\xe2\xaf\xe2\xb0\xe2\xb1\xe2\xb2\xe2\xb3\xe2\xb4\xe2\xb5\xe2\xb6\xe2\xb7\xe2\xb8\xe2\xb9\xe2\xba\xe2\xbb\xe2\xbc\xe2\xbd\xe2\xbe\xe2\xbf\xe2\xc0\xe2\xc1\xe2\xc2\xe2\xc3\xe2\xc4\xe2\xc5\xe2\xc6\xe2\xc7\xe2\xc8\xe2\xc9\xe2\xca\xe2\xcb\xe2\xcc\xe2\xcd\xe2\xce\xe2\xcf\xe2\xd0\xe2\xd1\xe2\xd2\xe2\xd3\xe2\xd4\xe2\xd5\xe2\xd6\xe2\xd7\xe2\xd8\xe2\xd9\xe2\xda\xe2\xdb\xe2\xdc\xe2\xdd\xe2\xde\xe2\xdf\xe2\xe0\xe2\xe1\xe2\xe2\xe2\xe3\xe2\xe4\xe2\xe5\xe2\xe6\xe2\xe7\xe2\xe8\xe2\xe9\xe2\xea\xe2\xeb\xe2\xec\xe2\xed\xe2\xee\xe2\xef\x00\x00\x00\x00", /* c600 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe2\xf0\xe2\xf1\xe2\xf2\xe2\xf3\xe2\xf4\xe2\xf5\xe2\xf6\xe2\xf7\xe2\xf8\xe2\xf9\xe2\xfa\xe2\xfb\xe2\xfc\xe2\xfd\xe2\xfe\xe2\xff\xe3\x00\xe3\x01\xe3\x02\xe3\x03\xe3\x04\xe3\x05\xe3\x06\xe3\x07\xe3\x08\xe3\x09\xe3\x0a\xe3\x0b\xe3\x0c\xe3\x0d\xe3\x0e\xe3\x0f\xe3\x10\xe3\x11\xe3\x12\xe3\x13\xe3\x14\xe3\x15\xe3\x16\xe3\x17\xe3\x18\xe3\x19\xe3\x1a\xe3\x1b\xe3\x1c\xe3\x1d\xe3\x1e\xe3\x1f\xe3\x20\xe3\x21\xe3\x22\xe3\x23\xe3\x24\xe3\x25\xe3\x26\xe3\x27\xe3\x28\xe3\x29\xe3\x2a\xe3\x2b\xe3\x2c\xe3\x2d\xe3\x2e", /* c680 */ "\x00\x00\xe3\x2f\xe3\x30\xe3\x31\xe3\x32\xe3\x33\xe3\x34\xe3\x35\xe3\x36\xe3\x37\xe3\x38\xe3\x39\xe3\x3a\xe3\x3b\xe3\x3c\xe3\x3d\xe3\x3e\xe3\x3f\xe3\x40\xe3\x41\xe3\x42\xe3\x43\xe3\x44\xe3\x45\xe3\x46\xe3\x47\xe3\x48\xe3\x49\xe3\x4a\xe3\x4b\xe3\x4c\xe3\x4d\xe3\x4e\xe3\x4f\xe3\x50\xe3\x51\xe3\x52\xe3\x53\xe3\x54\xe3\x55\xe3\x56\xe3\x57\xe3\x58\xe3\x59\xe3\x5a\xe3\x5b\xe3\x5c\xe3\x5d\xe3\x5e\xe3\x5f\xe3\x60\xe3\x61\xe3\x62\xe3\x63\xe3\x64\xe3\x65\xe3\x66\xe3\x67\xe3\x68\xe3\x69\xe3\x6a\xe3\x6b\xe3\x6c\xe3\x6d\xe3\x6e\xe3\x6f\xe3\x70\xe3\x71\xe3\x72\xe3\x73\xe3\x74\xe3\x75\xe3\x76\xe3\x77\xe3\x78\xe3\x79\xe3\x7a\xe3\x7b\xe3\x7c\xe3\x7d\xe3\x7e\xe3\x7f\xe3\x80\xe3\x81\xe3\x82\xe3\x83\xe3\x84\xe3\x85\xe3\x86\xe3\x87\xe3\x88\xe3\x89\xe3\x8a\xe3\x8b\xe3\x8c\xe3\x8d\xe3\x8e\xe3\x8f\xe3\x90\xe3\x91\xe3\x92\xe3\x93\xe3\x94\xe3\x95\xe3\x96\xe3\x97\xe3\x98\xe3\x99\xe3\x9a\xe3\x9b\xe3\x9c\xe3\x9d\xe3\x9e\xe3\x9f\xe3\xa0\xe3\xa1\xe3\xa2\xe3\xa3\xe3\xa4\xe3\xa5\xe3\xa6\xe3\xa7\xe3\xa8\xe3\xa9\xe3\xaa\xe3\xab\x00\x00\x00\x00", /* c700 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe3\xac\xe3\xad\xe3\xae\xe3\xaf\xe3\xb0\xe3\xb1\xe3\xb2\xe3\xb3\xe3\xb4\xe3\xb5\xe3\xb6\xe3\xb7\xe3\xb8\xe3\xb9\xe3\xba\xe3\xbb\xe3\xbc\xe3\xbd\xe3\xbe\xe3\xbf\xe3\xc0\xe3\xc1\xe3\xc2\xe3\xc3\xe3\xc4\xe3\xc5\xe3\xc6\xe3\xc7\xe3\xc8\xe3\xc9\xe3\xca\xe3\xcb\xe3\xcc\xe3\xcd\xe3\xce\xe3\xcf\xe3\xd0\xe3\xd1\xe3\xd2\xe3\xd3\xe3\xd4\xe3\xd5\xe3\xd6\xe3\xd7\xe3\xd8\xe3\xd9\xe3\xda\xe3\xdb\xe3\xdc\xe3\xdd\xe3\xde\xe3\xdf\xe3\xe0\xe3\xe1\xe3\xe2\xe3\xe3\xe3\xe4\xe3\xe5\xe3\xe6\xe3\xe7\xe3\xe8\xe3\xe9\xe3\xea", /* c780 */ "\x00\x00\xe3\xeb\xe3\xec\xe3\xed\xe3\xee\xe3\xef\xe3\xf0\xe3\xf1\xe3\xf2\xe3\xf3\xe3\xf4\xe3\xf5\xe3\xf6\xe3\xf7\xe3\xf8\xe3\xf9\xe3\xfa\xe3\xfb\xe3\xfc\xe3\xfd\xe3\xfe\xe3\xff\xe4\x00\xe4\x01\xe4\x02\xe4\x03\xe4\x04\xe4\x05\xe4\x06\xe4\x07\xe4\x08\xe4\x09\xe4\x0a\xe4\x0b\xe4\x0c\xe4\x0d\xe4\x0e\xe4\x0f\xe4\x10\xe4\x11\xe4\x12\xe4\x13\xe4\x14\xe4\x15\xe4\x16\xe4\x17\xe4\x18\xe4\x19\xe4\x1a\xe4\x1b\xe4\x1c\xe4\x1d\xe4\x1e\xe4\x1f\xe4\x20\xe4\x21\xe4\x22\xe4\x23\xe4\x24\xe4\x25\xe4\x26\xe4\x27\xe4\x28\xe4\x29\xe4\x2a\xe4\x2b\xe4\x2c\xe4\x2d\xe4\x2e\xe4\x2f\xe4\x30\xe4\x31\xe4\x32\xe4\x33\xe4\x34\xe4\x35\xe4\x36\xe4\x37\xe4\x38\xe4\x39\xe4\x3a\xe4\x3b\xe4\x3c\xe4\x3d\xe4\x3e\xe4\x3f\xe4\x40\xe4\x41\xe4\x42\xe4\x43\xe4\x44\xe4\x45\xe4\x46\xe4\x47\xe4\x48\xe4\x49\xe4\x4a\xe4\x4b\xe4\x4c\xe4\x4d\xe4\x4e\xe4\x4f\xe4\x50\xe4\x51\xe4\x52\xe4\x53\xe4\x54\xe4\x55\xe4\x56\xe4\x57\xe4\x58\xe4\x59\xe4\x5a\xe4\x5b\xe4\x5c\xe4\x5d\xe4\x5e\xe4\x5f\xe4\x60\xe4\x61\xe4\x62\xe4\x63\xe4\x64\xe4\x65\xe4\x66\xe4\x67\x00\x00\x00\x00", /* c800 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe4\x68\xe4\x69\xe4\x6a\xe4\x6b\xe4\x6c\xe4\x6d\xe4\x6e\xe4\x6f\xe4\x70\xe4\x71\xe4\x72\xe4\x73\xe4\x74\xe4\x75\xe4\x76\xe4\x77\xe4\x78\xe4\x79\xe4\x7a\xe4\x7b\xe4\x7c\xe4\x7d\xe4\x7e\xe4\x7f\xe4\x80\xe4\x81\xe4\x82\xe4\x83\xe4\x84\xe4\x85\xe4\x86\xe4\x87\xe4\x88\xe4\x89\xe4\x8a\xe4\x8b\xe4\x8c\xe4\x8d\xe4\x8e\xe4\x8f\xe4\x90\xe4\x91\xe4\x92\xe4\x93\xe4\x94\xe4\x95\xe4\x96\xe4\x97\xe4\x98\xe4\x99\xe4\x9a\xe4\x9b\xe4\x9c\xe4\x9d\xe4\x9e\xe4\x9f\xe4\xa0\xe4\xa1\xe4\xa2\xe4\xa3\xe4\xa4\xe4\xa5\xe4\xa6", /* c880 */ "\x00\x00\xe4\xa7\xe4\xa8\xe4\xa9\xe4\xaa\xe4\xab\xe4\xac\xe4\xad\xe4\xae\xe4\xaf\xe4\xb0\xe4\xb1\xe4\xb2\xe4\xb3\xe4\xb4\xe4\xb5\xe4\xb6\xe4\xb7\xe4\xb8\xe4\xb9\xe4\xba\xe4\xbb\xe4\xbc\xe4\xbd\xe4\xbe\xe4\xbf\xe4\xc0\xe4\xc1\xe4\xc2\xe4\xc3\xe4\xc4\xe4\xc5\xe4\xc6\xe4\xc7\xe4\xc8\xe4\xc9\xe4\xca\xe4\xcb\xe4\xcc\xe4\xcd\xe4\xce\xe4\xcf\xe4\xd0\xe4\xd1\xe4\xd2\xe4\xd3\xe4\xd4\xe4\xd5\xe4\xd6\xe4\xd7\xe4\xd8\xe4\xd9\xe4\xda\xe4\xdb\xe4\xdc\xe4\xdd\xe4\xde\xe4\xdf\xe4\xe0\xe4\xe1\xe4\xe2\xe4\xe3\xe4\xe4\xe4\xe5\xe4\xe6\xe4\xe7\xe4\xe8\xe4\xe9\xe4\xea\xe4\xeb\xe4\xec\xe4\xed\xe4\xee\xe4\xef\xe4\xf0\xe4\xf1\xe4\xf2\xe4\xf3\xe4\xf4\xe4\xf5\xe4\xf6\xe4\xf7\xe4\xf8\xe4\xf9\xe4\xfa\xe4\xfb\xe4\xfc\xe4\xfd\xe4\xfe\xe4\xff\xe5\x00\xe5\x01\xe5\x02\xe5\x03\xe5\x04\xe5\x05\xe5\x06\xe5\x07\xe5\x08\xe5\x09\xe5\x0a\xe5\x0b\xe5\x0c\xe5\x0d\xe5\x0e\xe5\x0f\xe5\x10\xe5\x11\xe5\x12\xe5\x13\xe5\x14\xe5\x15\xe5\x16\xe5\x17\xe5\x18\xe5\x19\xe5\x1a\xe5\x1b\xe5\x1c\xe5\x1d\xe5\x1e\xe5\x1f\xe5\x20\xe5\x21\xe5\x22\xe5\x23\x00\x00\x00\x00", /* c900 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe5\x24\xe5\x25\xe5\x26\xe5\x27\xe5\x28\xe5\x29\xe5\x2a\xe5\x2b\xe5\x2c\xe5\x2d\xe5\x2e\xe5\x2f\xe5\x30\xe5\x31\xe5\x32\xe5\x33\xe5\x34\xe5\x35\xe5\x36\xe5\x37\xe5\x38\xe5\x39\xe5\x3a\xe5\x3b\xe5\x3c\xe5\x3d\xe5\x3e\xe5\x3f\xe5\x40\xe5\x41\xe5\x42\xe5\x43\xe5\x44\xe5\x45\xe5\x46\xe5\x47\xe5\x48\xe5\x49\xe5\x4a\xe5\x4b\xe5\x4c\xe5\x4d\xe5\x4e\xe5\x4f\xe5\x50\xe5\x51\xe5\x52\xe5\x53\xe5\x54\xe5\x55\xe5\x56\xe5\x57\xe5\x58\xe5\x59\xe5\x5a\xe5\x5b\xe5\x5c\xe5\x5d\xe5\x5e\xe5\x5f\xe5\x60\xe5\x61\xe5\x62", /* c980 */ "\x00\x00\xe5\x63\xe5\x64\xe5\x65\xe5\x66\xe5\x67\xe5\x68\xe5\x69\xe5\x6a\xe5\x6b\xe5\x6c\xe5\x6d\xe5\x6e\xe5\x6f\xe5\x70\xe5\x71\xe5\x72\xe5\x73\xe5\x74\xe5\x75\xe5\x76\xe5\x77\xe5\x78\xe5\x79\xe5\x7a\xe5\x7b\xe5\x7c\xe5\x7d\xe5\x7e\xe5\x7f\xe5\x80\xe5\x81\xe5\x82\xe5\x83\xe5\x84\xe5\x85\xe5\x86\xe5\x87\xe5\x88\xe5\x89\xe5\x8a\xe5\x8b\xe5\x8c\xe5\x8d\xe5\x8e\xe5\x8f\xe5\x90\xe5\x91\xe5\x92\xe5\x93\xe5\x94\xe5\x95\xe5\x96\xe5\x97\xe5\x98\xe5\x99\xe5\x9a\xe5\x9b\xe5\x9c\xe5\x9d\xe5\x9e\xe5\x9f\xe5\xa0\xe5\xa1\xe5\xa2\xe5\xa3\xe5\xa4\xe5\xa5\xe5\xa6\xe5\xa7\xe5\xa8\xe5\xa9\xe5\xaa\xe5\xab\xe5\xac\xe5\xad\xe5\xae\xe5\xaf\xe5\xb0\xe5\xb1\xe5\xb2\xe5\xb3\xe5\xb4\xe5\xb5\xe5\xb6\xe5\xb7\xe5\xb8\xe5\xb9\xe5\xba\xe5\xbb\xe5\xbc\xe5\xbd\xe5\xbe\xe5\xbf\xe5\xc0\xe5\xc1\xe5\xc2\xe5\xc3\xe5\xc4\xe5\xc5\xe5\xc6\xe5\xc7\xe5\xc8\xe5\xc9\xe5\xca\xe5\xcb\xe5\xcc\xe5\xcd\xe5\xce\xe5\xcf\xe5\xd0\xe5\xd1\xe5\xd2\xe5\xd3\xe5\xd4\xe5\xd5\xe5\xd6\xe5\xd7\xe5\xd8\xe5\xd9\xe5\xda\xe5\xdb\xe5\xdc\xe5\xdd\xe5\xde\xe5\xdf\x00\x00\x00\x00", /* ca00 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe5\xe0\xe5\xe1\xe5\xe2\xe5\xe3\xe5\xe4\xe5\xe5\xe5\xe6\xe5\xe7\xe5\xe8\xe5\xe9\xe5\xea\xe5\xeb\xe5\xec\xe5\xed\xe5\xee\xe5\xef\xe5\xf0\xe5\xf1\xe5\xf2\xe5\xf3\xe5\xf4\xe5\xf5\xe5\xf6\xe5\xf7\xe5\xf8\xe5\xf9\xe5\xfa\xe5\xfb\xe5\xfc\xe5\xfd\xe5\xfe\xe5\xff\xe6\x00\xe6\x01\xe6\x02\xe6\x03\xe6\x04\xe6\x05\xe6\x06\xe6\x07\xe6\x08\xe6\x09\xe6\x0a\xe6\x0b\xe6\x0c\xe6\x0d\xe6\x0e\xe6\x0f\xe6\x10\xe6\x11\xe6\x12\xe6\x13\xe6\x14\xe6\x15\xe6\x16\xe6\x17\xe6\x18\xe6\x19\xe6\x1a\xe6\x1b\xe6\x1c\xe6\x1d\xe6\x1e", /* ca80 */ "\x00\x00\xe6\x1f\xe6\x20\xe6\x21\xe6\x22\xe6\x23\xe6\x24\xe6\x25\xe6\x26\xe6\x27\xe6\x28\xe6\x29\xe6\x2a\xe6\x2b\xe6\x2c\xe6\x2d\xe6\x2e\xe6\x2f\xe6\x30\xe6\x31\xe6\x32\xe6\x33\xe6\x34\xe6\x35\xe6\x36\xe6\x37\xe6\x38\xe6\x39\xe6\x3a\xe6\x3b\xe6\x3c\xe6\x3d\xe6\x3e\xe6\x3f\xe6\x40\xe6\x41\xe6\x42\xe6\x43\xe6\x44\xe6\x45\xe6\x46\xe6\x47\xe6\x48\xe6\x49\xe6\x4a\xe6\x4b\xe6\x4c\xe6\x4d\xe6\x4e\xe6\x4f\xe6\x50\xe6\x51\xe6\x52\xe6\x53\xe6\x54\xe6\x55\xe6\x56\xe6\x57\xe6\x58\xe6\x59\xe6\x5a\xe6\x5b\xe6\x5c\xe6\x5d\xe6\x5e\xe6\x5f\xe6\x60\xe6\x61\xe6\x62\xe6\x63\xe6\x64\xe6\x65\xe6\x66\xe6\x67\xe6\x68\xe6\x69\xe6\x6a\xe6\x6b\xe6\x6c\xe6\x6d\xe6\x6e\xe6\x6f\xe6\x70\xe6\x71\xe6\x72\xe6\x73\xe6\x74\xe6\x75\xe6\x76\xe6\x77\xe6\x78\xe6\x79\xe6\x7a\xe6\x7b\xe6\x7c\xe6\x7d\xe6\x7e\xe6\x7f\xe6\x80\xe6\x81\xe6\x82\xe6\x83\xe6\x84\xe6\x85\xe6\x86\xe6\x87\xe6\x88\xe6\x89\xe6\x8a\xe6\x8b\xe6\x8c\xe6\x8d\xe6\x8e\xe6\x8f\xe6\x90\xe6\x91\xe6\x92\xe6\x93\xe6\x94\xe6\x95\xe6\x96\xe6\x97\xe6\x98\xe6\x99\xe6\x9a\xe6\x9b\x00\x00\x00\x00", /* cb00 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe6\x9c\xe6\x9d\xe6\x9e\xe6\x9f\xe6\xa0\xe6\xa1\xe6\xa2\xe6\xa3\xe6\xa4\xe6\xa5\xe6\xa6\xe6\xa7\xe6\xa8\xe6\xa9\xe6\xaa\xe6\xab\xe6\xac\xe6\xad\xe6\xae\xe6\xaf\xe6\xb0\xe6\xb1\xe6\xb2\xe6\xb3\xe6\xb4\xe6\xb5\xe6\xb6\xe6\xb7\xe6\xb8\xe6\xb9\xe6\xba\xe6\xbb\xe6\xbc\xe6\xbd\xe6\xbe\xe6\xbf\xe6\xc0\xe6\xc1\xe6\xc2\xe6\xc3\xe6\xc4\xe6\xc5\xe6\xc6\xe6\xc7\xe6\xc8\xe6\xc9\xe6\xca\xe6\xcb\xe6\xcc\xe6\xcd\xe6\xce\xe6\xcf\xe6\xd0\xe6\xd1\xe6\xd2\xe6\xd3\xe6\xd4\xe6\xd5\xe6\xd6\xe6\xd7\xe6\xd8\xe6\xd9\xe6\xda", /* cb80 */ "\x00\x00\xe6\xdb\xe6\xdc\xe6\xdd\xe6\xde\xe6\xdf\xe6\xe0\xe6\xe1\xe6\xe2\xe6\xe3\xe6\xe4\xe6\xe5\xe6\xe6\xe6\xe7\xe6\xe8\xe6\xe9\xe6\xea\xe6\xeb\xe6\xec\xe6\xed\xe6\xee\xe6\xef\xe6\xf0\xe6\xf1\xe6\xf2\xe6\xf3\xe6\xf4\xe6\xf5\xe6\xf6\xe6\xf7\xe6\xf8\xe6\xf9\xe6\xfa\xe6\xfb\xe6\xfc\xe6\xfd\xe6\xfe\xe6\xff\xe7\x00\xe7\x01\xe7\x02\xe7\x03\xe7\x04\xe7\x05\xe7\x06\xe7\x07\xe7\x08\xe7\x09\xe7\x0a\xe7\x0b\xe7\x0c\xe7\x0d\xe7\x0e\xe7\x0f\xe7\x10\xe7\x11\xe7\x12\xe7\x13\xe7\x14\xe7\x15\xe7\x16\xe7\x17\xe7\x18\xe7\x19\xe7\x1a\xe7\x1b\xe7\x1c\xe7\x1d\xe7\x1e\xe7\x1f\xe7\x20\xe7\x21\xe7\x22\xe7\x23\xe7\x24\xe7\x25\xe7\x26\xe7\x27\xe7\x28\xe7\x29\xe7\x2a\xe7\x2b\xe7\x2c\xe7\x2d\xe7\x2e\xe7\x2f\xe7\x30\xe7\x31\xe7\x32\xe7\x33\xe7\x34\xe7\x35\xe7\x36\xe7\x37\xe7\x38\xe7\x39\xe7\x3a\xe7\x3b\xe7\x3c\xe7\x3d\xe7\x3e\xe7\x3f\xe7\x40\xe7\x41\xe7\x42\xe7\x43\xe7\x44\xe7\x45\xe7\x46\xe7\x47\xe7\x48\xe7\x49\xe7\x4a\xe7\x4b\xe7\x4c\xe7\x4d\xe7\x4e\xe7\x4f\xe7\x50\xe7\x51\xe7\x52\xe7\x53\xe7\x54\xe7\x55\xe7\x56\xe7\x57\x00\x00\x00\x00", /* cc00 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe7\x58\xe7\x59\xe7\x5a\xe7\x5b\xe7\x5c\xe7\x5d\xe7\x5e\xe7\x5f\xe7\x60\xe7\x61\xe7\x62\xe7\x63\xe7\x64\xe7\x65\xe7\x66\xe7\x67\xe7\x68\xe7\x69\xe7\x6a\xe7\x6b\xe7\x6c\xe7\x6d\xe7\x6e\xe7\x6f\xe7\x70\xe7\x71\xe7\x72\xe7\x73\xe7\x74\xe7\x75\xe7\x76\xe7\x77\xe7\x78\xe7\x79\xe7\x7a\xe7\x7b\xe7\x7c\xe7\x7d\xe7\x7e\xe7\x7f\xe7\x80\xe7\x81\xe7\x82\xe7\x83\xe7\x84\xe7\x85\xe7\x86\xe7\x87\xe7\x88\xe7\x89\xe7\x8a\xe7\x8b\xe7\x8c\xe7\x8d\xe7\x8e\xe7\x8f\xe7\x90\xe7\x91\xe7\x92\xe7\x93\xe7\x94\xe7\x95\xe7\x96", /* cc80 */ "\x00\x00\xe7\x97\xe7\x98\xe7\x99\xe7\x9a\xe7\x9b\xe7\x9c\xe7\x9d\xe7\x9e\xe7\x9f\xe7\xa0\xe7\xa1\xe7\xa2\xe7\xa3\xe7\xa4\xe7\xa5\xe7\xa6\xe7\xa7\xe7\xa8\xe7\xa9\xe7\xaa\xe7\xab\xe7\xac\xe7\xad\xe7\xae\xe7\xaf\xe7\xb0\xe7\xb1\xe7\xb2\xe7\xb3\xe7\xb4\xe7\xb5\xe7\xb6\xe7\xb7\xe7\xb8\xe7\xb9\xe7\xba\xe7\xbb\xe7\xbc\xe7\xbd\xe7\xbe\xe7\xbf\xe7\xc0\xe7\xc1\xe7\xc2\xe7\xc3\xe7\xc4\xe7\xc5\xe7\xc6\xe7\xc7\xe7\xc8\xe7\xc9\xe7\xca\xe7\xcb\xe7\xcc\xe7\xcd\xe7\xce\xe7\xcf\xe7\xd0\xe7\xd1\xe7\xd2\xe7\xd3\xe7\xd4\xe7\xd5\xe7\xd6\xe7\xd7\xe7\xd8\xe7\xd9\xe7\xda\xe7\xdb\xe7\xdc\xe7\xdd\xe7\xde\xe7\xdf\xe7\xe0\xe7\xe1\xe7\xe2\xe7\xe3\xe7\xe4\xe7\xe5\xe7\xe6\xe7\xe7\xe7\xe8\xe7\xe9\xe7\xea\xe7\xeb\xe7\xec\xe7\xed\xe7\xee\xe7\xef\xe7\xf0\xe7\xf1\xe7\xf2\xe7\xf3\xe7\xf4\xe7\xf5\xe7\xf6\xe7\xf7\xe7\xf8\xe7\xf9\xe7\xfa\xe7\xfb\xe7\xfc\xe7\xfd\xe7\xfe\xe7\xff\xe8\x00\xe8\x01\xe8\x02\xe8\x03\xe8\x04\xe8\x05\xe8\x06\xe8\x07\xe8\x08\xe8\x09\xe8\x0a\xe8\x0b\xe8\x0c\xe8\x0d\xe8\x0e\xe8\x0f\xe8\x10\xe8\x11\xe8\x12\xe8\x13\x00\x00\x00\x00", /* cd00 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe8\x14\xe8\x15\xe8\x16\xe8\x17\xe8\x18\xe8\x19\xe8\x1a\xe8\x1b\xe8\x1c\xe8\x1d\xe8\x1e\xe8\x1f\xe8\x20\xe8\x21\xe8\x22\xe8\x23\xe8\x24\xe8\x25\xe8\x26\xe8\x27\xe8\x28\xe8\x29\xe8\x2a\xe8\x2b\xe8\x2c\xe8\x2d\xe8\x2e\xe8\x2f\xe8\x30\xe8\x31\xe8\x32\xe8\x33\xe8\x34\xe8\x35\xe8\x36\xe8\x37\xe8\x38\xe8\x39\xe8\x3a\xe8\x3b\xe8\x3c\xe8\x3d\xe8\x3e\xe8\x3f\xe8\x40\xe8\x41\xe8\x42\xe8\x43\xe8\x44\xe8\x45\xe8\x46\xe8\x47\xe8\x48\xe8\x49\xe8\x4a\xe8\x4b\xe8\x4c\xe8\x4d\xe8\x4e\xe8\x4f\xe8\x50\xe8\x51\xe8\x52", /* cd80 */ "\x00\x00\xe8\x53\xe8\x54\xe8\x55\xe8\x56\xe8\x57\xe8\x58\xe8\x59\xe8\x5a\xe8\x5b\xe8\x5c\xe8\x5d\xe8\x5e\xe8\x5f\xe8\x60\xe8\x61\xe8\x62\xe8\x63\xe8\x64\xe8\x65\xe8\x66\xe8\x67\xe8\x68\xe8\x69\xe8\x6a\xe8\x6b\xe8\x6c\xe8\x6d\xe8\x6e\xe8\x6f\xe8\x70\xe8\x71\xe8\x72\xe8\x73\xe8\x74\xe8\x75\xe8\x76\xe8\x77\xe8\x78\xe8\x79\xe8\x7a\xe8\x7b\xe8\x7c\xe8\x7d\xe8\x7e\xe8\x7f\xe8\x80\xe8\x81\xe8\x82\xe8\x83\xe8\x84\xe8\x85\xe8\x86\xe8\x87\xe8\x88\xe8\x89\xe8\x8a\xe8\x8b\xe8\x8c\xe8\x8d\xe8\x8e\xe8\x8f\xe8\x90\xe8\x91\xe8\x92\xe8\x93\xe8\x94\xe8\x95\xe8\x96\xe8\x97\xe8\x98\xe8\x99\xe8\x9a\xe8\x9b\xe8\x9c\xe8\x9d\xe8\x9e\xe8\x9f\xe8\xa0\xe8\xa1\xe8\xa2\xe8\xa3\xe8\xa4\xe8\xa5\xe8\xa6\xe8\xa7\xe8\xa8\xe8\xa9\xe8\xaa\xe8\xab\xe8\xac\xe8\xad\xe8\xae\xe8\xaf\xe8\xb0\xe8\xb1\xe8\xb2\xe8\xb3\xe8\xb4\xe8\xb5\xe8\xb6\xe8\xb7\xe8\xb8\xe8\xb9\xe8\xba\xe8\xbb\xe8\xbc\xe8\xbd\xe8\xbe\xe8\xbf\xe8\xc0\xe8\xc1\xe8\xc2\xe8\xc3\xe8\xc4\xe8\xc5\xe8\xc6\xe8\xc7\xe8\xc8\xe8\xc9\xe8\xca\xe8\xcb\xe8\xcc\xe8\xcd\xe8\xce\xe8\xcf\x00\x00\x00\x00", /* ce00 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe8\xd0\xe8\xd1\xe8\xd2\xe8\xd3\xe8\xd4\xe8\xd5\xe8\xd6\xe8\xd7\xe8\xd8\xe8\xd9\xe8\xda\xe8\xdb\xe8\xdc\xe8\xdd\xe8\xde\xe8\xdf\xe8\xe0\xe8\xe1\xe8\xe2\xe8\xe3\xe8\xe4\xe8\xe5\xe8\xe6\xe8\xe7\xe8\xe8\xe8\xe9\xe8\xea\xe8\xeb\xe8\xec\xe8\xed\xe8\xee\xe8\xef\xe8\xf0\xe8\xf1\xe8\xf2\xe8\xf3\xe8\xf4\xe8\xf5\xe8\xf6\xe8\xf7\xe8\xf8\xe8\xf9\xe8\xfa\xe8\xfb\xe8\xfc\xe8\xfd\xe8\xfe\xe8\xff\xe9\x00\xe9\x01\xe9\x02\xe9\x03\xe9\x04\xe9\x05\xe9\x06\xe9\x07\xe9\x08\xe9\x09\xe9\x0a\xe9\x0b\xe9\x0c\xe9\x0d\xe9\x0e", /* ce80 */ "\x00\x00\xe9\x0f\xe9\x10\xe9\x11\xe9\x12\xe9\x13\xe9\x14\xe9\x15\xe9\x16\xe9\x17\xe9\x18\xe9\x19\xe9\x1a\xe9\x1b\xe9\x1c\xe9\x1d\xe9\x1e\xe9\x1f\xe9\x20\xe9\x21\xe9\x22\xe9\x23\xe9\x24\xe9\x25\xe9\x26\xe9\x27\xe9\x28\xe9\x29\xe9\x2a\xe9\x2b\xe9\x2c\xe9\x2d\xe9\x2e\xe9\x2f\xe9\x30\xe9\x31\xe9\x32\xe9\x33\xe9\x34\xe9\x35\xe9\x36\xe9\x37\xe9\x38\xe9\x39\xe9\x3a\xe9\x3b\xe9\x3c\xe9\x3d\xe9\x3e\xe9\x3f\xe9\x40\xe9\x41\xe9\x42\xe9\x43\xe9\x44\xe9\x45\xe9\x46\xe9\x47\xe9\x48\xe9\x49\xe9\x4a\xe9\x4b\xe9\x4c\xe9\x4d\xe9\x4e\xe9\x4f\xe9\x50\xe9\x51\xe9\x52\xe9\x53\xe9\x54\xe9\x55\xe9\x56\xe9\x57\xe9\x58\xe9\x59\xe9\x5a\xe9\x5b\xe9\x5c\xe9\x5d\xe9\x5e\xe9\x5f\xe9\x60\xe9\x61\xe9\x62\xe9\x63\xe9\x64\xe9\x65\xe9\x66\xe9\x67\xe9\x68\xe9\x69\xe9\x6a\xe9\x6b\xe9\x6c\xe9\x6d\xe9\x6e\xe9\x6f\xe9\x70\xe9\x71\xe9\x72\xe9\x73\xe9\x74\xe9\x75\xe9\x76\xe9\x77\xe9\x78\xe9\x79\xe9\x7a\xe9\x7b\xe9\x7c\xe9\x7d\xe9\x7e\xe9\x7f\xe9\x80\xe9\x81\xe9\x82\xe9\x83\xe9\x84\xe9\x85\xe9\x86\xe9\x87\xe9\x88\xe9\x89\xe9\x8a\xe9\x8b\x00\x00\x00\x00", /* cf00 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe9\x8c\xe9\x8d\xe9\x8e\xe9\x8f\xe9\x90\xe9\x91\xe9\x92\xe9\x93\xe9\x94\xe9\x95\xe9\x96\xe9\x97\xe9\x98\xe9\x99\xe9\x9a\xe9\x9b\xe9\x9c\xe9\x9d\xe9\x9e\xe9\x9f\xe9\xa0\xe9\xa1\xe9\xa2\xe9\xa3\xe9\xa4\xe9\xa5\xe9\xa6\xe9\xa7\xe9\xa8\xe9\xa9\xe9\xaa\xe9\xab\xe9\xac\xe9\xad\xe9\xae\xe9\xaf\xe9\xb0\xe9\xb1\xe9\xb2\xe9\xb3\xe9\xb4\xe9\xb5\xe9\xb6\xe9\xb7\xe9\xb8\xe9\xb9\xe9\xba\xe9\xbb\xe9\xbc\xe9\xbd\xe9\xbe\xe9\xbf\xe9\xc0\xe9\xc1\xe9\xc2\xe9\xc3\xe9\xc4\xe9\xc5\xe9\xc6\xe9\xc7\xe9\xc8\xe9\xc9\xe9\xca", /* cf80 */ "\x00\x00\xe9\xcb\xe9\xcc\xe9\xcd\xe9\xce\xe9\xcf\xe9\xd0\xe9\xd1\xe9\xd2\xe9\xd3\xe9\xd4\xe9\xd5\xe9\xd6\xe9\xd7\xe9\xd8\xe9\xd9\xe9\xda\xe9\xdb\xe9\xdc\xe9\xdd\xe9\xde\xe9\xdf\xe9\xe0\xe9\xe1\xe9\xe2\xe9\xe3\xe9\xe4\xe9\xe5\xe9\xe6\xe9\xe7\xe9\xe8\xe9\xe9\xe9\xea\xe9\xeb\xe9\xec\xe9\xed\xe9\xee\xe9\xef\xe9\xf0\xe9\xf1\xe9\xf2\xe9\xf3\xe9\xf4\xe9\xf5\xe9\xf6\xe9\xf7\xe9\xf8\xe9\xf9\xe9\xfa\xe9\xfb\xe9\xfc\xe9\xfd\xe9\xfe\xe9\xff\xea\x00\xea\x01\xea\x02\xea\x03\xea\x04\xea\x05\xea\x06\xea\x07\xea\x08\xea\x09\xea\x0a\xea\x0b\xea\x0c\xea\x0d\xea\x0e\xea\x0f\xea\x10\xea\x11\xea\x12\xea\x13\xea\x14\xea\x15\xea\x16\xea\x17\xea\x18\xea\x19\xea\x1a\xea\x1b\xea\x1c\xea\x1d\xea\x1e\xea\x1f\xea\x20\xea\x21\xea\x22\xea\x23\xea\x24\xea\x25\xea\x26\xea\x27\xea\x28\xea\x29\xea\x2a\xea\x2b\xea\x2c\xea\x2d\xea\x2e\xea\x2f\xea\x30\xea\x31\xea\x32\xea\x33\xea\x34\xea\x35\xea\x36\xea\x37\xea\x38\xea\x39\xea\x3a\xea\x3b\xea\x3c\xea\x3d\xea\x3e\xea\x3f\xea\x40\xea\x41\xea\x42\xea\x43\xea\x44\xea\x45\xea\x46\xea\x47\x00\x00\x00\x00", /* d000 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xea\x48\xea\x49\xea\x4a\xea\x4b\xea\x4c\xea\x4d\xea\x4e\xea\x4f\xea\x50\xea\x51\xea\x52\xea\x53\xea\x54\xea\x55\xea\x56\xea\x57\xea\x58\xea\x59\xea\x5a\xea\x5b\xea\x5c\xea\x5d\xea\x5e\xea\x5f\xea\x60\xea\x61\xea\x62\xea\x63\xea\x64\xea\x65\xea\x66\xea\x67\xea\x68\xea\x69\xea\x6a\xea\x6b\xea\x6c\xea\x6d\xea\x6e\xea\x6f\xea\x70\xea\x71\xea\x72\xea\x73\xea\x74\xea\x75\xea\x76\xea\x77\xea\x78\xea\x79\xea\x7a\xea\x7b\xea\x7c\xea\x7d\xea\x7e\xea\x7f\xea\x80\xea\x81\xea\x82\xea\x83\xea\x84\xea\x85\xea\x86", /* d080 */ "\x00\x00\xea\x87\xea\x88\xea\x89\xea\x8a\xea\x8b\xea\x8c\xea\x8d\xea\x8e\xea\x8f\xea\x90\xea\x91\xea\x92\xea\x93\xea\x94\xea\x95\xea\x96\xea\x97\xea\x98\xea\x99\xea\x9a\xea\x9b\xea\x9c\xea\x9d\xea\x9e\xea\x9f\xea\xa0\xea\xa1\xea\xa2\xea\xa3\xea\xa4\xea\xa5\xea\xa6\xea\xa7\xea\xa8\xea\xa9\xea\xaa\xea\xab\xea\xac\xea\xad\xea\xae\xea\xaf\xea\xb0\xea\xb1\xea\xb2\xea\xb3\xea\xb4\xea\xb5\xea\xb6\xea\xb7\xea\xb8\xea\xb9\xea\xba\xea\xbb\xea\xbc\xea\xbd\xea\xbe\xea\xbf\xea\xc0\xea\xc1\xea\xc2\xea\xc3\xea\xc4\xea\xc5\xea\xc6\xea\xc7\xea\xc8\xea\xc9\xea\xca\xea\xcb\xea\xcc\xea\xcd\xea\xce\xea\xcf\xea\xd0\xea\xd1\xea\xd2\xea\xd3\xea\xd4\xea\xd5\xea\xd6\xea\xd7\xea\xd8\xea\xd9\xea\xda\xea\xdb\xea\xdc\xea\xdd\xea\xde\xea\xdf\xea\xe0\xea\xe1\xea\xe2\xea\xe3\xea\xe4\xea\xe5\xea\xe6\xea\xe7\xea\xe8\xea\xe9\xea\xea\xea\xeb\xea\xec\xea\xed\xea\xee\xea\xef\xea\xf0\xea\xf1\xea\xf2\xea\xf3\xea\xf4\xea\xf5\xea\xf6\xea\xf7\xea\xf8\xea\xf9\xea\xfa\xea\xfb\xea\xfc\xea\xfd\xea\xfe\xea\xff\xeb\x00\xeb\x01\xeb\x02\xeb\x03\x00\x00\x00\x00", /* d100 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xeb\x04\xeb\x05\xeb\x06\xeb\x07\xeb\x08\xeb\x09\xeb\x0a\xeb\x0b\xeb\x0c\xeb\x0d\xeb\x0e\xeb\x0f\xeb\x10\xeb\x11\xeb\x12\xeb\x13\xeb\x14\xeb\x15\xeb\x16\xeb\x17\xeb\x18\xeb\x19\xeb\x1a\xeb\x1b\xeb\x1c\xeb\x1d\xeb\x1e\xeb\x1f\xeb\x20\xeb\x21\xeb\x22\xeb\x23\xeb\x24\xeb\x25\xeb\x26\xeb\x27\xeb\x28\xeb\x29\xeb\x2a\xeb\x2b\xeb\x2c\xeb\x2d\xeb\x2e\xeb\x2f\xeb\x30\xeb\x31\xeb\x32\xeb\x33\xeb\x34\xeb\x35\xeb\x36\xeb\x37\xeb\x38\xeb\x39\xeb\x3a\xeb\x3b\xeb\x3c\xeb\x3d\xeb\x3e\xeb\x3f\xeb\x40\xeb\x41\xeb\x42", /* d180 */ "\x00\x00\xeb\x43\xeb\x44\xeb\x45\xeb\x46\xeb\x47\xeb\x48\xeb\x49\xeb\x4a\xeb\x4b\xeb\x4c\xeb\x4d\xeb\x4e\xeb\x4f\xeb\x50\xeb\x51\xeb\x52\xeb\x53\xeb\x54\xeb\x55\xeb\x56\xeb\x57\xeb\x58\xeb\x59\xeb\x5a\xeb\x5b\xeb\x5c\xeb\x5d\xeb\x5e\xeb\x5f\xeb\x60\xeb\x61\xeb\x62\xeb\x63\xeb\x64\xeb\x65\xeb\x66\xeb\x67\xeb\x68\xeb\x69\xeb\x6a\xeb\x6b\xeb\x6c\xeb\x6d\xeb\x6e\xeb\x6f\xeb\x70\xeb\x71\xeb\x72\xeb\x73\xeb\x74\xeb\x75\xeb\x76\xeb\x77\xeb\x78\xeb\x79\xeb\x7a\xeb\x7b\xeb\x7c\xeb\x7d\xeb\x7e\xeb\x7f\xeb\x80\xeb\x81\xeb\x82\xeb\x83\xeb\x84\xeb\x85\xeb\x86\xeb\x87\xeb\x88\xeb\x89\xeb\x8a\xeb\x8b\xeb\x8c\xeb\x8d\xeb\x8e\xeb\x8f\xeb\x90\xeb\x91\xeb\x92\xeb\x93\xeb\x94\xeb\x95\xeb\x96\xeb\x97\xeb\x98\xeb\x99\xeb\x9a\xeb\x9b\xeb\x9c\xeb\x9d\xeb\x9e\xeb\x9f\xeb\xa0\xeb\xa1\xeb\xa2\xeb\xa3\xeb\xa4\xeb\xa5\xeb\xa6\xeb\xa7\xeb\xa8\xeb\xa9\xeb\xaa\xeb\xab\xeb\xac\xeb\xad\xeb\xae\xeb\xaf\xeb\xb0\xeb\xb1\xeb\xb2\xeb\xb3\xeb\xb4\xeb\xb5\xeb\xb6\xeb\xb7\xeb\xb8\xeb\xb9\xeb\xba\xeb\xbb\xeb\xbc\xeb\xbd\xeb\xbe\xeb\xbf\x00\x00\x00\x00", /* d200 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xeb\xc0\xeb\xc1\xeb\xc2\xeb\xc3\xeb\xc4\xeb\xc5\xeb\xc6\xeb\xc7\xeb\xc8\xeb\xc9\xeb\xca\xeb\xcb\xeb\xcc\xeb\xcd\xeb\xce\xeb\xcf\xeb\xd0\xeb\xd1\xeb\xd2\xeb\xd3\xeb\xd4\xeb\xd5\xeb\xd6\xeb\xd7\xeb\xd8\xeb\xd9\xeb\xda\xeb\xdb\xeb\xdc\xeb\xdd\xeb\xde\xeb\xdf\xeb\xe0\xeb\xe1\xeb\xe2\xeb\xe3\xeb\xe4\xeb\xe5\xeb\xe6\xeb\xe7\xeb\xe8\xeb\xe9\xeb\xea\xeb\xeb\xeb\xec\xeb\xed\xeb\xee\xeb\xef\xeb\xf0\xeb\xf1\xeb\xf2\xeb\xf3\xeb\xf4\xeb\xf5\xeb\xf6\xeb\xf7\xeb\xf8\xeb\xf9\xeb\xfa\xeb\xfb\xeb\xfc\xeb\xfd\xeb\xfe", /* d280 */ "\x00\x00\xeb\xff\xec\x00\xec\x01\xec\x02\xec\x03\xec\x04\xec\x05\xec\x06\xec\x07\xec\x08\xec\x09\xec\x0a\xec\x0b\xec\x0c\xec\x0d\xec\x0e\xec\x0f\xec\x10\xec\x11\xec\x12\xec\x13\xec\x14\xec\x15\xec\x16\xec\x17\xec\x18\xec\x19\xec\x1a\xec\x1b\xec\x1c\xec\x1d\xec\x1e\xec\x1f\xec\x20\xec\x21\xec\x22\xec\x23\xec\x24\xec\x25\xec\x26\xec\x27\xec\x28\xec\x29\xec\x2a\xec\x2b\xec\x2c\xec\x2d\xec\x2e\xec\x2f\xec\x30\xec\x31\xec\x32\xec\x33\xec\x34\xec\x35\xec\x36\xec\x37\xec\x38\xec\x39\xec\x3a\xec\x3b\xec\x3c\xec\x3d\xec\x3e\xec\x3f\xec\x40\xec\x41\xec\x42\xec\x43\xec\x44\xec\x45\xec\x46\xec\x47\xec\x48\xec\x49\xec\x4a\xec\x4b\xec\x4c\xec\x4d\xec\x4e\xec\x4f\xec\x50\xec\x51\xec\x52\xec\x53\xec\x54\xec\x55\xec\x56\xec\x57\xec\x58\xec\x59\xec\x5a\xec\x5b\xec\x5c\xec\x5d\xec\x5e\xec\x5f\xec\x60\xec\x61\xec\x62\xec\x63\xec\x64\xec\x65\xec\x66\xec\x67\xec\x68\xec\x69\xec\x6a\xec\x6b\xec\x6c\xec\x6d\xec\x6e\xec\x6f\xec\x70\xec\x71\xec\x72\xec\x73\xec\x74\xec\x75\xec\x76\xec\x77\xec\x78\xec\x79\xec\x7a\xec\x7b\x00\x00\x00\x00", /* d300 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xec\x7c\xec\x7d\xec\x7e\xec\x7f\xec\x80\xec\x81\xec\x82\xec\x83\xec\x84\xec\x85\xec\x86\xec\x87\xec\x88\xec\x89\xec\x8a\xec\x8b\xec\x8c\xec\x8d\xec\x8e\xec\x8f\xec\x90\xec\x91\xec\x92\xec\x93\xec\x94\xec\x95\xec\x96\xec\x97\xec\x98\xec\x99\xec\x9a\xec\x9b\xec\x9c\xec\x9d\xec\x9e\xec\x9f\xec\xa0\xec\xa1\xec\xa2\xec\xa3\xec\xa4\xec\xa5\xec\xa6\xec\xa7\xec\xa8\xec\xa9\xec\xaa\xec\xab\xec\xac\xec\xad\xec\xae\xec\xaf\xec\xb0\xec\xb1\xec\xb2\xec\xb3\xec\xb4\xec\xb5\xec\xb6\xec\xb7\xec\xb8\xec\xb9\xec\xba", /* d380 */ "\x00\x00\xec\xbb\xec\xbc\xec\xbd\xec\xbe\xec\xbf\xec\xc0\xec\xc1\xec\xc2\xec\xc3\xec\xc4\xec\xc5\xec\xc6\xec\xc7\xec\xc8\xec\xc9\xec\xca\xec\xcb\xec\xcc\xec\xcd\xec\xce\xec\xcf\xec\xd0\xec\xd1\xec\xd2\xec\xd3\xec\xd4\xec\xd5\xec\xd6\xec\xd7\xec\xd8\xec\xd9\xec\xda\xec\xdb\xec\xdc\xec\xdd\xec\xde\xec\xdf\xec\xe0\xec\xe1\xec\xe2\xec\xe3\xec\xe4\xec\xe5\xec\xe6\xec\xe7\xec\xe8\xec\xe9\xec\xea\xec\xeb\xec\xec\xec\xed\xec\xee\xec\xef\xec\xf0\xec\xf1\xec\xf2\xec\xf3\xec\xf4\xec\xf5\xec\xf6\xec\xf7\xec\xf8\xec\xf9\xec\xfa\xec\xfb\xec\xfc\xec\xfd\xec\xfe\xec\xff\xed\x00\xed\x01\xed\x02\xed\x03\xed\x04\xed\x05\xed\x06\xed\x07\xed\x08\xed\x09\xed\x0a\xed\x0b\xed\x0c\xed\x0d\xed\x0e\xed\x0f\xed\x10\xed\x11\xed\x12\xed\x13\xed\x14\xed\x15\xed\x16\xed\x17\xed\x18\xed\x19\xed\x1a\xed\x1b\xed\x1c\xed\x1d\xed\x1e\xed\x1f\xed\x20\xed\x21\xed\x22\xed\x23\xed\x24\xed\x25\xed\x26\xed\x27\xed\x28\xed\x29\xed\x2a\xed\x2b\xed\x2c\xed\x2d\xed\x2e\xed\x2f\xed\x30\xed\x31\xed\x32\xed\x33\xed\x34\xed\x35\xed\x36\xed\x37\x00\x00\x00\x00", /* d400 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xed\x38\xed\x39\xed\x3a\xed\x3b\xed\x3c\xed\x3d\xed\x3e\xed\x3f\xed\x40\xed\x41\xed\x42\xed\x43\xed\x44\xed\x45\xed\x46\xed\x47\xed\x48\xed\x49\xed\x4a\xed\x4b\xed\x4c\xed\x4d\xed\x4e\xed\x4f\xed\x50\xed\x51\xed\x52\xed\x53\xed\x54\xed\x55\xed\x56\xed\x57\xed\x58\xed\x59\xed\x5a\xed\x5b\xed\x5c\xed\x5d\xed\x5e\xed\x5f\xed\x60\xed\x61\xed\x62\xed\x63\xed\x64\xed\x65\xed\x66\xed\x67\xed\x68\xed\x69\xed\x6a\xed\x6b\xed\x6c\xed\x6d\xed\x6e\xed\x6f\xed\x70\xed\x71\xed\x72\xed\x73\xed\x74\xed\x75\xed\x76", /* d480 */ "\x00\x00\xed\x77\xed\x78\xed\x79\xed\x7a\xed\x7b\xed\x7c\xed\x7d\xed\x7e\xed\x7f\xed\x80\xed\x81\xed\x82\xed\x83\xed\x84\xed\x85\xed\x86\xed\x87\xed\x88\xed\x89\xed\x8a\xed\x8b\xed\x8c\xed\x8d\xed\x8e\xed\x8f\xed\x90\xed\x91\xed\x92\xed\x93\xed\x94\xed\x95\xed\x96\xed\x97\xed\x98\xed\x99\xed\x9a\xed\x9b\xed\x9c\xed\x9d\xed\x9e\xed\x9f\xed\xa0\xed\xa1\xed\xa2\xed\xa3\xed\xa4\xed\xa5\xed\xa6\xed\xa7\xed\xa8\xed\xa9\xed\xaa\xed\xab\xed\xac\xed\xad\xed\xae\xed\xaf\xed\xb0\xed\xb1\xed\xb2\xed\xb3\xed\xb4\xed\xb5\xed\xb6\xed\xb7\xed\xb8\xed\xb9\xed\xba\xed\xbb\xed\xbc\xed\xbd\xed\xbe\xed\xbf\xed\xc0\xed\xc1\xed\xc2\xed\xc3\xed\xc4\xed\xc5\xed\xc6\xed\xc7\xed\xc8\xed\xc9\xed\xca\xed\xcb\xed\xcc\xed\xcd\xed\xce\xed\xcf\xed\xd0\xed\xd1\xed\xd2\xed\xd3\xed\xd4\xed\xd5\xed\xd6\xed\xd7\xed\xd8\xed\xd9\xed\xda\xed\xdb\xed\xdc\xed\xdd\xed\xde\xed\xdf\xed\xe0\xed\xe1\xed\xe2\xed\xe3\xed\xe4\xed\xe5\xed\xe6\xed\xe7\xed\xe8\xed\xe9\xed\xea\xed\xeb\xed\xec\xed\xed\xed\xee\xed\xef\xed\xf0\xed\xf1\xed\xf2\xed\xf3\x00\x00\x00\x00", /* d500 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xed\xf4\xed\xf5\xed\xf6\xed\xf7\xed\xf8\xed\xf9\xed\xfa\xed\xfb\xed\xfc\xed\xfd\xed\xfe\xed\xff\xee\x00\xee\x01\xee\x02\xee\x03\xee\x04\xee\x05\xee\x06\xee\x07\xee\x08\xee\x09\xee\x0a\xee\x0b\xee\x0c\xee\x0d\xee\x0e\xee\x0f\xee\x10\xee\x11\xee\x12\xee\x13\xee\x14\xee\x15\xee\x16\xee\x17\xee\x18\xee\x19\xee\x1a\xee\x1b\xee\x1c\xee\x1d\xee\x1e\xee\x1f\xee\x20\xee\x21\xee\x22\xee\x23\xee\x24\xee\x25\xee\x26\xee\x27\xee\x28\xee\x29\xee\x2a\xee\x2b\xee\x2c\xee\x2d\xee\x2e\xee\x2f\xee\x30\xee\x31\xee\x32", /* d580 */ "\x00\x00\xee\x33\xee\x34\xee\x35\xee\x36\xee\x37\xee\x38\xee\x39\xee\x3a\xee\x3b\xee\x3c\xee\x3d\xee\x3e\xee\x3f\xee\x40\xee\x41\xee\x42\xee\x43\xee\x44\xee\x45\xee\x46\xee\x47\xee\x48\xee\x49\xee\x4a\xee\x4b\xee\x4c\xee\x4d\xee\x4e\xee\x4f\xee\x50\xee\x51\xee\x52\xee\x53\xee\x54\xee\x55\xee\x56\xee\x57\xee\x58\xee\x59\xee\x5a\xee\x5b\xee\x5c\xee\x5d\xee\x5e\xee\x5f\xee\x60\xee\x61\xee\x62\xee\x63\xee\x64\xee\x65\xee\x66\xee\x67\xee\x68\xee\x69\xee\x6a\xee\x6b\xee\x6c\xee\x6d\xee\x6e\xee\x6f\xee\x70\xee\x71\xee\x72\xee\x73\xee\x74\xee\x75\xee\x76\xee\x77\xee\x78\xee\x79\xee\x7a\xee\x7b\xee\x7c\xee\x7d\xee\x7e\xee\x7f\xee\x80\xee\x81\xee\x82\xee\x83\xee\x84\xee\x85\xee\x86\xee\x87\xee\x88\xee\x89\xee\x8a\xee\x8b\xee\x8c\xee\x8d\xee\x8e\xee\x8f\xee\x90\xee\x91\xee\x92\xee\x93\xee\x94\xee\x95\xee\x96\xee\x97\xee\x98\xee\x99\xee\x9a\xee\x9b\xee\x9c\xee\x9d\xee\x9e\xee\x9f\xee\xa0\xee\xa1\xee\xa2\xee\xa3\xee\xa4\xee\xa5\xee\xa6\xee\xa7\xee\xa8\xee\xa9\xee\xaa\xee\xab\xee\xac\xee\xad\xee\xae\xee\xaf\x00\x00\x00\x00", /* d600 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xee\xb0\xee\xb1\xee\xb2\xee\xb3\xee\xb4\xee\xb5\xee\xb6\xee\xb7\xee\xb8\xee\xb9\xee\xba\xee\xbb\xee\xbc\xee\xbd\xee\xbe\xee\xbf\xee\xc0\xee\xc1\xee\xc2\xee\xc3\xee\xc4\xee\xc5\xee\xc6\xee\xc7\xee\xc8\xee\xc9\xee\xca\xee\xcb\xee\xcc\xee\xcd\xee\xce\xee\xcf\xee\xd0\xee\xd1\xee\xd2\xee\xd3\xee\xd4\xee\xd5\xee\xd6\xee\xd7\xee\xd8\xee\xd9\xee\xda\xee\xdb\xee\xdc\xee\xdd\xee\xde\xee\xdf\xee\xe0\xee\xe1\xee\xe2\xee\xe3\xee\xe4\xee\xe5\xee\xe6\xee\xe7\xee\xe8\xee\xe9\xee\xea\xee\xeb\xee\xec\xee\xed\xee\xee", /* d680 */ "\x00\x00\xee\xef\xee\xf0\xee\xf1\xee\xf2\xee\xf3\xee\xf4\xee\xf5\xee\xf6\xee\xf7\xee\xf8\xee\xf9\xee\xfa\xee\xfb\xee\xfc\xee\xfd\xee\xfe\xee\xff\xef\x00\xef\x01\xef\x02\xef\x03\xef\x04\xef\x05\xef\x06\xef\x07\xef\x08\xef\x09\xef\x0a\xef\x0b\xef\x0c\xef\x0d\xef\x0e\xef\x0f\xef\x10\xef\x11\xef\x12\xef\x13\xef\x14\xef\x15\xef\x16\xef\x17\xef\x18\xef\x19\xef\x1a\xef\x1b\xef\x1c\xef\x1d\xef\x1e\xef\x1f\xef\x20\xef\x21\xef\x22\xef\x23\xef\x24\xef\x25\xef\x26\xef\x27\xef\x28\xef\x29\xef\x2a\xef\x2b\xef\x2c\xef\x2d\xef\x2e\xef\x2f\xef\x30\xef\x31\xef\x32\xef\x33\xef\x34\xef\x35\xef\x36\xef\x37\xef\x38\xef\x39\xef\x3a\xef\x3b\xef\x3c\xef\x3d\xef\x3e\xef\x3f\xef\x40\xef\x41\xef\x42\xef\x43\xef\x44\xef\x45\xef\x46\xef\x47\xef\x48\xef\x49\xef\x4a\xef\x4b\xef\x4c\xef\x4d\xef\x4e\xef\x4f\xef\x50\xef\x51\xef\x52\xef\x53\xef\x54\xef\x55\xef\x56\xef\x57\xef\x58\xef\x59\xef\x5a\xef\x5b\xef\x5c\xef\x5d\xef\x5e\xef\x5f\xef\x60\xef\x61\xef\x62\xef\x63\xef\x64\xef\x65\xef\x66\xef\x67\xef\x68\xef\x69\xef\x6a\xef\x6b\x00\x00\x00\x00", /* d700 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xef\x6c\xef\x6d\xef\x6e\xef\x6f\xef\x70\xef\x71\xef\x72\xef\x73\xef\x74\xef\x75\xef\x76\xef\x77\xef\x78\xef\x79\xef\x7a\xef\x7b\xef\x7c\xef\x7d\xef\x7e\xef\x7f\xef\x80\xef\x81\xef\x82\xef\x83\xef\x84\xef\x85\xef\x86\xef\x87\xef\x88\xef\x89\xef\x8a\xef\x8b\xef\x8c\xef\x8d\xef\x8e\xef\x8f\xef\x90\xef\x91\xef\x92\xef\x93\xef\x94\xef\x95\xef\x96\xef\x97\xef\x98\xef\x99\xef\x9a\xef\x9b\xef\x9c\xef\x9d\xef\x9e\xef\x9f\xef\xa0\xef\xa1\xef\xa2\xef\xa3\xef\xa4\xef\xa5\xef\xa6\xef\xa7\xef\xa8\xef\xa9\xef\xaa", /* d780 */ "\x00\x00\xef\xab\xef\xac\xef\xad\xef\xae\xef\xaf\xef\xb0\xef\xb1\xef\xb2\xef\xb3\xef\xb4\xef\xb5\xef\xb6\xef\xb7\xef\xb8\xef\xb9\xef\xba\xef\xbb\xef\xbc\xef\xbd\xef\xbe\xef\xbf\xef\xc0\xef\xc1\xef\xc2\xef\xc3\xef\xc4\xef\xc5\xef\xc6\xef\xc7\xef\xc8\xef\xc9\xef\xca\xef\xcb\xef\xcc\xef\xcd\xef\xce\xef\xcf\xef\xd0\xef\xd1\xef\xd2\xef\xd3\xef\xd4\xef\xd5\xef\xd6\xef\xd7\xef\xd8\xef\xd9\xef\xda\xef\xdb\xef\xdc\xef\xdd\xef\xde\xef\xdf\xef\xe0\xef\xe1\xef\xe2\xef\xe3\xef\xe4\xef\xe5\xef\xe6\xef\xe7\xef\xe8\xef\xe9\xef\xea\xef\xeb\xef\xec\xef\xed\xef\xee\xef\xef\xef\xf0\xef\xf1\xef\xf2\xef\xf3\xef\xf4\xef\xf5\xef\xf6\xef\xf7\xef\xf8\xef\xf9\xef\xfa\xef\xfb\xef\xfc\xef\xfd\xef\xfe\xef\xff\xf0\x00\xf0\x01\xf0\x02\xf0\x03\xf0\x04\xf0\x05\xf0\x06\xf0\x07\xf0\x08\xf0\x09\xf0\x0a\xf0\x0b\xf0\x0c\xf0\x0d\xf0\x0e\xf0\x0f\xf0\x10\xf0\x11\xf0\x12\xf0\x13\xf0\x14\xf0\x15\xf0\x16\xf0\x17\xf0\x18\xf0\x19\xf0\x1a\xf0\x1b\xf0\x1c\xf0\x1d\xf0\x1e\xf0\x1f\xf0\x20\xf0\x21\xf0\x22\xf0\x23\xf0\x24\xf0\x25\xf0\x26\xf0\x27\x00\x00\x00\x00", /* d800 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf0\x28\xf0\x29\xf0\x2a\xf0\x2b\xf0\x2c\xf0\x2d\xf0\x2e\xf0\x2f\xf0\x30\xf0\x31\xf0\x32\xf0\x33\xf0\x34\xf0\x35\xf0\x36\xf0\x37\xf0\x38\xf0\x39\xf0\x3a\xf0\x3b\xf0\x3c\xf0\x3d\xf0\x3e\xf0\x3f\xf0\x40\xf0\x41\xf0\x42\xf0\x43\xf0\x44\xf0\x45\xf0\x46\xf0\x47\xf0\x48\xf0\x49\xf0\x4a\xf0\x4b\xf0\x4c\xf0\x4d\xf0\x4e\xf0\x4f\xf0\x50\xf0\x51\xf0\x52\xf0\x53\xf0\x54\xf0\x55\xf0\x56\xf0\x57\xf0\x58\xf0\x59\xf0\x5a\xf0\x5b\xf0\x5c\xf0\x5d\xf0\x5e\xf0\x5f\xf0\x60\xf0\x61\xf0\x62\xf0\x63\xf0\x64\xf0\x65\xf0\x66", /* d880 */ "\x00\x00\xf0\x67\xf0\x68\xf0\x69\xf0\x6a\xf0\x6b\xf0\x6c\xf0\x6d\xf0\x6e\xf0\x6f\xf0\x70\xf0\x71\xf0\x72\xf0\x73\xf0\x74\xf0\x75\xf0\x76\xf0\x77\xf0\x78\xf0\x79\xf0\x7a\xf0\x7b\xf0\x7c\xf0\x7d\xf0\x7e\xf0\x7f\xf0\x80\xf0\x81\xf0\x82\xf0\x83\xf0\x84\xf0\x85\xf0\x86\xf0\x87\xf0\x88\xf0\x89\xf0\x8a\xf0\x8b\xf0\x8c\xf0\x8d\xf0\x8e\xf0\x8f\xf0\x90\xf0\x91\xf0\x92\xf0\x93\xf0\x94\xf0\x95\xf0\x96\xf0\x97\xf0\x98\xf0\x99\xf0\x9a\xf0\x9b\xf0\x9c\xf0\x9d\xf0\x9e\xf0\x9f\xf0\xa0\xf0\xa1\xf0\xa2\xf0\xa3\xf0\xa4\xf0\xa5\xf0\xa6\xf0\xa7\xf0\xa8\xf0\xa9\xf0\xaa\xf0\xab\xf0\xac\xf0\xad\xf0\xae\xf0\xaf\xf0\xb0\xf0\xb1\xf0\xb2\xf0\xb3\xf0\xb4\xf0\xb5\xf0\xb6\xf0\xb7\xf0\xb8\xf0\xb9\xf0\xba\xf0\xbb\xf0\xbc\xf0\xbd\xf0\xbe\xf0\xbf\xf0\xc0\xf0\xc1\xf0\xc2\xf0\xc3\xf0\xc4\xf0\xc5\xf0\xc6\xf0\xc7\xf0\xc8\xf0\xc9\xf0\xca\xf0\xcb\xf0\xcc\xf0\xcd\xf0\xce\xf0\xcf\xf0\xd0\xf0\xd1\xf0\xd2\xf0\xd3\xf0\xd4\xf0\xd5\xf0\xd6\xf0\xd7\xf0\xd8\xf0\xd9\xf0\xda\xf0\xdb\xf0\xdc\xf0\xdd\xf0\xde\xf0\xdf\xf0\xe0\xf0\xe1\xf0\xe2\xf0\xe3\x00\x00\x00\x00", /* d900 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf0\xe4\xf0\xe5\xf0\xe6\xf0\xe7\xf0\xe8\xf0\xe9\xf0\xea\xf0\xeb\xf0\xec\xf0\xed\xf0\xee\xf0\xef\xf0\xf0\xf0\xf1\xf0\xf2\xf0\xf3\xf0\xf4\xf0\xf5\xf0\xf6\xf0\xf7\xf0\xf8\xf0\xf9\xf0\xfa\xf0\xfb\xf0\xfc\xf0\xfd\xf0\xfe\xf0\xff\xf1\x00\xf1\x01\xf1\x02\xf1\x03\xf1\x04\xf1\x05\xf1\x06\xf1\x07\xf1\x08\xf1\x09\xf1\x0a\xf1\x0b\xf1\x0c\xf1\x0d\xf1\x0e\xf1\x0f\xf1\x10\xf1\x11\xf1\x12\xf1\x13\xf1\x14\xf1\x15\xf1\x16\xf1\x17\xf1\x18\xf1\x19\xf1\x1a\xf1\x1b\xf1\x1c\xf1\x1d\xf1\x1e\xf1\x1f\xf1\x20\xf1\x21\xf1\x22", /* d980 */ "\x00\x00\xf1\x23\xf1\x24\xf1\x25\xf1\x26\xf1\x27\xf1\x28\xf1\x29\xf1\x2a\xf1\x2b\xf1\x2c\xf1\x2d\xf1\x2e\xf1\x2f\xf1\x30\xf1\x31\xf1\x32\xf1\x33\xf1\x34\xf1\x35\xf1\x36\xf1\x37\xf1\x38\xf1\x39\xf1\x3a\xf1\x3b\xf1\x3c\xf1\x3d\xf1\x3e\xf1\x3f\xf1\x40\xf1\x41\xf1\x42\xf1\x43\xf1\x44\xf1\x45\xf1\x46\xf1\x47\xf1\x48\xf1\x49\xf1\x4a\xf1\x4b\xf1\x4c\xf1\x4d\xf1\x4e\xf1\x4f\xf1\x50\xf1\x51\xf1\x52\xf1\x53\xf1\x54\xf1\x55\xf1\x56\xf1\x57\xf1\x58\xf1\x59\xf1\x5a\xf1\x5b\xf1\x5c\xf1\x5d\xf1\x5e\xf1\x5f\xf1\x60\xf1\x61\xf1\x62\xf1\x63\xf1\x64\xf1\x65\xf1\x66\xf1\x67\xf1\x68\xf1\x69\xf1\x6a\xf1\x6b\xf1\x6c\xf1\x6d\xf1\x6e\xf1\x6f\xf1\x70\xf1\x71\xf1\x72\xf1\x73\xf1\x74\xf1\x75\xf1\x76\xf1\x77\xf1\x78\xf1\x79\xf1\x7a\xf1\x7b\xf1\x7c\xf1\x7d\xf1\x7e\xf1\x7f\xf1\x80\xf1\x81\xf1\x82\xf1\x83\xf1\x84\xf1\x85\xf1\x86\xf1\x87\xf1\x88\xf1\x89\xf1\x8a\xf1\x8b\xf1\x8c\xf1\x8d\xf1\x8e\xf1\x8f\xf1\x90\xf1\x91\xf1\x92\xf1\x93\xf1\x94\xf1\x95\xf1\x96\xf1\x97\xf1\x98\xf1\x99\xf1\x9a\xf1\x9b\xf1\x9c\xf1\x9d\xf1\x9e\xf1\x9f\x00\x00\x00\x00", /* da00 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf1\xa0\xf1\xa1\xf1\xa2\xf1\xa3\xf1\xa4\xf1\xa5\xf1\xa6\xf1\xa7\xf1\xa8\xf1\xa9\xf1\xaa\xf1\xab\xf1\xac\xf1\xad\xf1\xae\xf1\xaf\xf1\xb0\xf1\xb1\xf1\xb2\xf1\xb3\xf1\xb4\xf1\xb5\xf1\xb6\xf1\xb7\xf1\xb8\xf1\xb9\xf1\xba\xf1\xbb\xf1\xbc\xf1\xbd\xf1\xbe\xf1\xbf\xf1\xc0\xf1\xc1\xf1\xc2\xf1\xc3\xf1\xc4\xf1\xc5\xf1\xc6\xf1\xc7\xf1\xc8\xf1\xc9\xf1\xca\xf1\xcb\xf1\xcc\xf1\xcd\xf1\xce\xf1\xcf\xf1\xd0\xf1\xd1\xf1\xd2\xf1\xd3\xf1\xd4\xf1\xd5\xf1\xd6\xf1\xd7\xf1\xd8\xf1\xd9\xf1\xda\xf1\xdb\xf1\xdc\xf1\xdd\xf1\xde", /* da80 */ "\x00\x00\xf1\xdf\xf1\xe0\xf1\xe1\xf1\xe2\xf1\xe3\xf1\xe4\xf1\xe5\xf1\xe6\xf1\xe7\xf1\xe8\xf1\xe9\xf1\xea\xf1\xeb\xf1\xec\xf1\xed\xf1\xee\xf1\xef\xf1\xf0\xf1\xf1\xf1\xf2\xf1\xf3\xf1\xf4\xf1\xf5\xf1\xf6\xf1\xf7\xf1\xf8\xf1\xf9\xf1\xfa\xf1\xfb\xf1\xfc\xf1\xfd\xf1\xfe\xf1\xff\xf2\x00\xf2\x01\xf2\x02\xf2\x03\xf2\x04\xf2\x05\xf2\x06\xf2\x07\xf2\x08\xf2\x09\xf2\x0a\xf2\x0b\xf2\x0c\xf2\x0d\xf2\x0e\xf2\x0f\xf2\x10\xf2\x11\xf2\x12\xf2\x13\xf2\x14\xf2\x15\xf2\x16\xf2\x17\xf2\x18\xf2\x19\xf2\x1a\xf2\x1b\xf2\x1c\xf2\x1d\xf2\x1e\xf2\x1f\xf2\x20\xf2\x21\xf2\x22\xf2\x23\xf2\x24\xf2\x25\xf2\x26\xf2\x27\xf2\x28\xf2\x29\xf2\x2a\xf2\x2b\xf2\x2c\xf2\x2d\xf2\x2e\xf2\x2f\xf2\x30\xf2\x31\xf2\x32\xf2\x33\xf2\x34\xf2\x35\xf2\x36\xf2\x37\xf2\x38\xf2\x39\xf2\x3a\xf2\x3b\xf2\x3c\xf2\x3d\xf2\x3e\xf2\x3f\xf2\x40\xf2\x41\xf2\x42\xf2\x43\xf2\x44\xf2\x45\xf2\x46\xf2\x47\xf2\x48\xf2\x49\xf2\x4a\xf2\x4b\xf2\x4c\xf2\x4d\xf2\x4e\xf2\x4f\xf2\x50\xf2\x51\xf2\x52\xf2\x53\xf2\x54\xf2\x55\xf2\x56\xf2\x57\xf2\x58\xf2\x59\xf2\x5a\xf2\x5b\x00\x00\x00\x00", /* db00 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf2\x5c\xf2\x5d\xf2\x5e\xf2\x5f\xf2\x60\xf2\x61\xf2\x62\xf2\x63\xf2\x64\xf2\x65\xf2\x66\xf2\x67\xf2\x68\xf2\x69\xf2\x6a\xf2\x6b\xf2\x6c\xf2\x6d\xf2\x6e\xf2\x6f\xf2\x70\xf2\x71\xf2\x72\xf2\x73\xf2\x74\xf2\x75\xf2\x76\xf2\x77\xf2\x78\xf2\x79\xf2\x7a\xf2\x7b\xf2\x7c\xf2\x7d\xf2\x7e\xf2\x7f\xf2\x80\xf2\x81\xf2\x82\xf2\x83\xf2\x84\xf2\x85\xf2\x86\xf2\x87\xf2\x88\xf2\x89\xf2\x8a\xf2\x8b\xf2\x8c\xf2\x8d\xf2\x8e\xf2\x8f\xf2\x90\xf2\x91\xf2\x92\xf2\x93\xf2\x94\xf2\x95\xf2\x96\xf2\x97\xf2\x98\xf2\x99\xf2\x9a", /* db80 */ "\x00\x00\xf2\x9b\xf2\x9c\xf2\x9d\xf2\x9e\xf2\x9f\xf2\xa0\xf2\xa1\xf2\xa2\xf2\xa3\xf2\xa4\xf2\xa5\xf2\xa6\xf2\xa7\xf2\xa8\xf2\xa9\xf2\xaa\xf2\xab\xf2\xac\xf2\xad\xf2\xae\xf2\xaf\xf2\xb0\xf2\xb1\xf2\xb2\xf2\xb3\xf2\xb4\xf2\xb5\xf2\xb6\xf2\xb7\xf2\xb8\xf2\xb9\xf2\xba\xf2\xbb\xf2\xbc\xf2\xbd\xf2\xbe\xf2\xbf\xf2\xc0\xf2\xc1\xf2\xc2\xf2\xc3\xf2\xc4\xf2\xc5\xf2\xc6\xf2\xc7\xf2\xc8\xf2\xc9\xf2\xca\xf2\xcb\xf2\xcc\xf2\xcd\xf2\xce\xf2\xcf\xf2\xd0\xf2\xd1\xf2\xd2\xf2\xd3\xf2\xd4\xf2\xd5\xf2\xd6\xf2\xd7\xf2\xd8\xf2\xd9\xf2\xda\xf2\xdb\xf2\xdc\xf2\xdd\xf2\xde\xf2\xdf\xf2\xe0\xf2\xe1\xf2\xe2\xf2\xe3\xf2\xe4\xf2\xe5\xf2\xe6\xf2\xe7\xf2\xe8\xf2\xe9\xf2\xea\xf2\xeb\xf2\xec\xf2\xed\xf2\xee\xf2\xef\xf2\xf0\xf2\xf1\xf2\xf2\xf2\xf3\xf2\xf4\xf2\xf5\xf2\xf6\xf2\xf7\xf2\xf8\xf2\xf9\xf2\xfa\xf2\xfb\xf2\xfc\xf2\xfd\xf2\xfe\xf2\xff\xf3\x00\xf3\x01\xf3\x02\xf3\x03\xf3\x04\xf3\x05\xf3\x06\xf3\x07\xf3\x08\xf3\x09\xf3\x0a\xf3\x0b\xf3\x0c\xf3\x0d\xf3\x0e\xf3\x0f\xf3\x10\xf3\x11\xf3\x12\xf3\x13\xf3\x14\xf3\x15\xf3\x16\xf3\x17\x00\x00\x00\x00", /* dc00 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf3\x18\xf3\x19\xf3\x1a\xf3\x1b\xf3\x1c\xf3\x1d\xf3\x1e\xf3\x1f\xf3\x20\xf3\x21\xf3\x22\xf3\x23\xf3\x24\xf3\x25\xf3\x26\xf3\x27\xf3\x28\xf3\x29\xf3\x2a\xf3\x2b\xf3\x2c\xf3\x2d\xf3\x2e\xf3\x2f\xf3\x30\xf3\x31\xf3\x32\xf3\x33\xf3\x34\xf3\x35\xf3\x36\xf3\x37\xf3\x38\xf3\x39\xf3\x3a\xf3\x3b\xf3\x3c\xf3\x3d\xf3\x3e\xf3\x3f\xf3\x40\xf3\x41\xf3\x42\xf3\x43\xf3\x44\xf3\x45\xf3\x46\xf3\x47\xf3\x48\xf3\x49\xf3\x4a\xf3\x4b\xf3\x4c\xf3\x4d\xf3\x4e\xf3\x4f\xf3\x50\xf3\x51\xf3\x52\xf3\x53\xf3\x54\xf3\x55\xf3\x56", /* dc80 */ "\x00\x00\xf3\x57\xf3\x58\xf3\x59\xf3\x5a\xf3\x5b\xf3\x5c\xf3\x5d\xf3\x5e\xf3\x5f\xf3\x60\xf3\x61\xf3\x62\xf3\x63\xf3\x64\xf3\x65\xf3\x66\xf3\x67\xf3\x68\xf3\x69\xf3\x6a\xf3\x6b\xf3\x6c\xf3\x6d\xf3\x6e\xf3\x6f\xf3\x70\xf3\x71\xf3\x72\xf3\x73\xf3\x74\xf3\x75\xf3\x76\xf3\x77\xf3\x78\xf3\x79\xf3\x7a\xf3\x7b\xf3\x7c\xf3\x7d\xf3\x7e\xf3\x7f\xf3\x80\xf3\x81\xf3\x82\xf3\x83\xf3\x84\xf3\x85\xf3\x86\xf3\x87\xf3\x88\xf3\x89\xf3\x8a\xf3\x8b\xf3\x8c\xf3\x8d\xf3\x8e\xf3\x8f\xf3\x90\xf3\x91\xf3\x92\xf3\x93\xf3\x94\xf3\x95\xf3\x96\xf3\x97\xf3\x98\xf3\x99\xf3\x9a\xf3\x9b\xf3\x9c\xf3\x9d\xf3\x9e\xf3\x9f\xf3\xa0\xf3\xa1\xf3\xa2\xf3\xa3\xf3\xa4\xf3\xa5\xf3\xa6\xf3\xa7\xf3\xa8\xf3\xa9\xf3\xaa\xf3\xab\xf3\xac\xf3\xad\xf3\xae\xf3\xaf\xf3\xb0\xf3\xb1\xf3\xb2\xf3\xb3\xf3\xb4\xf3\xb5\xf3\xb6\xf3\xb7\xf3\xb8\xf3\xb9\xf3\xba\xf3\xbb\xf3\xbc\xf3\xbd\xf3\xbe\xf3\xbf\xf3\xc0\xf3\xc1\xf3\xc2\xf3\xc3\xf3\xc4\xf3\xc5\xf3\xc6\xf3\xc7\xf3\xc8\xf3\xc9\xf3\xca\xf3\xcb\xf3\xcc\xf3\xcd\xf3\xce\xf3\xcf\xf3\xd0\xf3\xd1\xf3\xd2\xf3\xd3\x00\x00\x00\x00", /* dd00 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf3\xd4\xf3\xd5\xf3\xd6\xf3\xd7\xf3\xd8\xf3\xd9\xf3\xda\xf3\xdb\xf3\xdc\xf3\xdd\xf3\xde\xf3\xdf\xf3\xe0\xf3\xe1\xf3\xe2\xf3\xe3\xf3\xe4\xf3\xe5\xf3\xe6\xf3\xe7\xf3\xe8\xf3\xe9\xf3\xea\xf3\xeb\xf3\xec\xf3\xed\xf3\xee\xf3\xef\xf3\xf0\xf3\xf1\xf3\xf2\xf3\xf3\xf3\xf4\xf3\xf5\xf3\xf6\xf3\xf7\xf3\xf8\xf3\xf9\xf3\xfa\xf3\xfb\xf3\xfc\xf3\xfd\xf3\xfe\xf3\xff\xf4\x00\xf4\x01\xf4\x02\xf4\x03\xf4\x04\xf4\x05\xf4\x06\xf4\x07\xf4\x08\xf4\x09\xf4\x0a\xf4\x0b\xf4\x0c\xf4\x0d\xf4\x0e\xf4\x0f\xf4\x10\xf4\x11\xf4\x12", /* dd80 */ "\x00\x00\xf4\x13\xf4\x14\xf4\x15\xf4\x16\xf4\x17\xf4\x18\xf4\x19\xf4\x1a\xf4\x1b\xf4\x1c\xf4\x1d\xf4\x1e\xf4\x1f\xf4\x20\xf4\x21\xf4\x22\xf4\x23\xf4\x24\xf4\x25\xf4\x26\xf4\x27\xf4\x28\xf4\x29\xf4\x2a\xf4\x2b\xf4\x2c\xf4\x2d\xf4\x2e\xf4\x2f\xf4\x30\xf4\x31\xf4\x32\xf4\x33\xf4\x34\xf4\x35\xf4\x36\xf4\x37\xf4\x38\xf4\x39\xf4\x3a\xf4\x3b\xf4\x3c\xf4\x3d\xf4\x3e\xf4\x3f\xf4\x40\xf4\x41\xf4\x42\xf4\x43\xf4\x44\xf4\x45\xf4\x46\xf4\x47\xf4\x48\xf4\x49\xf4\x4a\xf4\x4b\xf4\x4c\xf4\x4d\xf4\x4e\xf4\x4f\xf4\x50\xf4\x51\xf4\x52\xf4\x53\xf4\x54\xf4\x55\xf4\x56\xf4\x57\xf4\x58\xf4\x59\xf4\x5a\xf4\x5b\xf4\x5c\xf4\x5d\xf4\x5e\xf4\x5f\xf4\x60\xf4\x61\xf4\x62\xf4\x63\xf4\x64\xf4\x65\xf4\x66\xf4\x67\xf4\x68\xf4\x69\xf4\x6a\xf4\x6b\xf4\x6c\xf4\x6d\xf4\x6e\xf4\x6f\xf4\x70\xf4\x71\xf4\x72\xf4\x73\xf4\x74\xf4\x75\xf4\x76\xf4\x77\xf4\x78\xf4\x79\xf4\x7a\xf4\x7b\xf4\x7c\xf4\x7d\xf4\x7e\xf4\x7f\xf4\x80\xf4\x81\xf4\x82\xf4\x83\xf4\x84\xf4\x85\xf4\x86\xf4\x87\xf4\x88\xf4\x89\xf4\x8a\xf4\x8b\xf4\x8c\xf4\x8d\xf4\x8e\xf4\x8f\x00\x00\x00\x00", /* de00 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf4\x90\xf4\x91\xf4\x92\xf4\x93\xf4\x94\xf4\x95\xf4\x96\xf4\x97\xf4\x98\xf4\x99\xf4\x9a\xf4\x9b\xf4\x9c\xf4\x9d\xf4\x9e\xf4\x9f\xf4\xa0\xf4\xa1\xf4\xa2\xf4\xa3\xf4\xa4\xf4\xa5\xf4\xa6\xf4\xa7\xf4\xa8\xf4\xa9\xf4\xaa\xf4\xab\xf4\xac\xf4\xad\xf4\xae\xf4\xaf\xf4\xb0\xf4\xb1\xf4\xb2\xf4\xb3\xf4\xb4\xf4\xb5\xf4\xb6\xf4\xb7\xf4\xb8\xf4\xb9\xf4\xba\xf4\xbb\xf4\xbc\xf4\xbd\xf4\xbe\xf4\xbf\xf4\xc0\xf4\xc1\xf4\xc2\xf4\xc3\xf4\xc4\xf4\xc5\xf4\xc6\xf4\xc7\xf4\xc8\xf4\xc9\xf4\xca\xf4\xcb\xf4\xcc\xf4\xcd\xf4\xce", /* de80 */ "\x00\x00\xf4\xcf\xf4\xd0\xf4\xd1\xf4\xd2\xf4\xd3\xf4\xd4\xf4\xd5\xf4\xd6\xf4\xd7\xf4\xd8\xf4\xd9\xf4\xda\xf4\xdb\xf4\xdc\xf4\xdd\xf4\xde\xf4\xdf\xf4\xe0\xf4\xe1\xf4\xe2\xf4\xe3\xf4\xe4\xf4\xe5\xf4\xe6\xf4\xe7\xf4\xe8\xf4\xe9\xf4\xea\xf4\xeb\xf4\xec\xf4\xed\xf4\xee\xf4\xef\xf4\xf0\xf4\xf1\xf4\xf2\xf4\xf3\xf4\xf4\xf4\xf5\xf4\xf6\xf4\xf7\xf4\xf8\xf4\xf9\xf4\xfa\xf4\xfb\xf4\xfc\xf4\xfd\xf4\xfe\xf4\xff\xf5\x00\xf5\x01\xf5\x02\xf5\x03\xf5\x04\xf5\x05\xf5\x06\xf5\x07\xf5\x08\xf5\x09\xf5\x0a\xf5\x0b\xf5\x0c\xf5\x0d\xf5\x0e\xf5\x0f\xf5\x10\xf5\x11\xf5\x12\xf5\x13\xf5\x14\xf5\x15\xf5\x16\xf5\x17\xf5\x18\xf5\x19\xf5\x1a\xf5\x1b\xf5\x1c\xf5\x1d\xf5\x1e\xf5\x1f\xf5\x20\xf5\x21\xf5\x22\xf5\x23\xf5\x24\xf5\x25\xf5\x26\xf5\x27\xf5\x28\xf5\x29\xf5\x2a\xf5\x2b\xf5\x2c\xf5\x2d\xf5\x2e\xf5\x2f\xf5\x30\xf5\x31\xf5\x32\xf5\x33\xf5\x34\xf5\x35\xf5\x36\xf5\x37\xf5\x38\xf5\x39\xf5\x3a\xf5\x3b\xf5\x3c\xf5\x3d\xf5\x3e\xf5\x3f\xf5\x40\xf5\x41\xf5\x42\xf5\x43\xf5\x44\xf5\x45\xf5\x46\xf5\x47\xf5\x48\xf5\x49\xf5\x4a\xf5\x4b\x00\x00\x00\x00", /* df00 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf5\x4c\xf5\x4d\xf5\x4e\xf5\x4f\xf5\x50\xf5\x51\xf5\x52\xf5\x53\xf5\x54\xf5\x55\xf5\x56\xf5\x57\xf5\x58\xf5\x59\xf5\x5a\xf5\x5b\xf5\x5c\xf5\x5d\xf5\x5e\xf5\x5f\xf5\x60\xf5\x61\xf5\x62\xf5\x63\xf5\x64\xf5\x65\xf5\x66\xf5\x67\xf5\x68\xf5\x69\xf5\x6a\xf5\x6b\xf5\x6c\xf5\x6d\xf5\x6e\xf5\x6f\xf5\x70\xf5\x71\xf5\x72\xf5\x73\xf5\x74\xf5\x75\xf5\x76\xf5\x77\xf5\x78\xf5\x79\xf5\x7a\xf5\x7b\xf5\x7c\xf5\x7d\xf5\x7e\xf5\x7f\xf5\x80\xf5\x81\xf5\x82\xf5\x83\xf5\x84\xf5\x85\xf5\x86\xf5\x87\xf5\x88\xf5\x89\xf5\x8a", /* df80 */ "\x00\x00\xf5\x8b\xf5\x8c\xf5\x8d\xf5\x8e\xf5\x8f\xf5\x90\xf5\x91\xf5\x92\xf5\x93\xf5\x94\xf5\x95\xf5\x96\xf5\x97\xf5\x98\xf5\x99\xf5\x9a\xf5\x9b\xf5\x9c\xf5\x9d\xf5\x9e\xf5\x9f\xf5\xa0\xf5\xa1\xf5\xa2\xf5\xa3\xf5\xa4\xf5\xa5\xf5\xa6\xf5\xa7\xf5\xa8\xf5\xa9\xf5\xaa\xf5\xab\xf5\xac\xf5\xad\xf5\xae\xf5\xaf\xf5\xb0\xf5\xb1\xf5\xb2\xf5\xb3\xf5\xb4\xf5\xb5\xf5\xb6\xf5\xb7\xf5\xb8\xf5\xb9\xf5\xba\xf5\xbb\xf5\xbc\xf5\xbd\xf5\xbe\xf5\xbf\xf5\xc0\xf5\xc1\xf5\xc2\xf5\xc3\xf5\xc4\xf5\xc5\xf5\xc6\xf5\xc7\xf5\xc8\xf5\xc9\xf5\xca\xf5\xcb\xf5\xcc\xf5\xcd\xf5\xce\xf5\xcf\xf5\xd0\xf5\xd1\xf5\xd2\xf5\xd3\xf5\xd4\xf5\xd5\xf5\xd6\xf5\xd7\xf5\xd8\xf5\xd9\xf5\xda\xf5\xdb\xf5\xdc\xf5\xdd\xf5\xde\xf5\xdf\xf5\xe0\xf5\xe1\xf5\xe2\xf5\xe3\xf5\xe4\xf5\xe5\xf5\xe6\xf5\xe7\xf5\xe8\xf5\xe9\xf5\xea\xf5\xeb\xf5\xec\xf5\xed\xf5\xee\xf5\xef\xf5\xf0\xf5\xf1\xf5\xf2\xf5\xf3\xf5\xf4\xf5\xf5\xf5\xf6\xf5\xf7\xf5\xf8\xf5\xf9\xf5\xfa\xf5\xfb\xf5\xfc\xf5\xfd\xf5\xfe\xf5\xff\xf6\x00\xf6\x01\xf6\x02\xf6\x03\xf6\x04\xf6\x05\xf6\x06\xf6\x07\x00\x00\x00\x00", /* e000 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf6\x08\xf6\x09\xf6\x0a\xf6\x0b\xf6\x0c\xf6\x0d\xf6\x0e\xf6\x0f\xf6\x10\xf6\x11\xf6\x12\xf6\x13\xf6\x14\xf6\x15\xf6\x16\xf6\x17\xf6\x18\xf6\x19\xf6\x1a\xf6\x1b\xf6\x1c\xf6\x1d\xf6\x1e\xf6\x1f\xf6\x20\xf6\x21\xf6\x22\xf6\x23\xf6\x24\xf6\x25\xf6\x26\xf6\x27\xf6\x28\xf6\x29\xf6\x2a\xf6\x2b\xf6\x2c\xf6\x2d\xf6\x2e\xf6\x2f\xf6\x30\xf6\x31\xf6\x32\xf6\x33\xf6\x34\xf6\x35\xf6\x36\xf6\x37\xf6\x38\xf6\x39\xf6\x3a\xf6\x3b\xf6\x3c\xf6\x3d\xf6\x3e\xf6\x3f\xf6\x40\xf6\x41\xf6\x42\xf6\x43\xf6\x44\xf6\x45\xf6\x46", /* e080 */ "\x00\x00\xf6\x47\xf6\x48\xf6\x49\xf6\x4a\xf6\x4b\xf6\x4c\xf6\x4d\xf6\x4e\xf6\x4f\xf6\x50\xf6\x51\xf6\x52\xf6\x53\xf6\x54\xf6\x55\xf6\x56\xf6\x57\xf6\x58\xf6\x59\xf6\x5a\xf6\x5b\xf6\x5c\xf6\x5d\xf6\x5e\xf6\x5f\xf6\x60\xf6\x61\xf6\x62\xf6\x63\xf6\x64\xf6\x65\xf6\x66\xf6\x67\xf6\x68\xf6\x69\xf6\x6a\xf6\x6b\xf6\x6c\xf6\x6d\xf6\x6e\xf6\x6f\xf6\x70\xf6\x71\xf6\x72\xf6\x73\xf6\x74\xf6\x75\xf6\x76\xf6\x77\xf6\x78\xf6\x79\xf6\x7a\xf6\x7b\xf6\x7c\xf6\x7d\xf6\x7e\xf6\x7f\xf6\x80\xf6\x81\xf6\x82\xf6\x83\xf6\x84\xf6\x85\xf6\x86\xf6\x87\xf6\x88\xf6\x89\xf6\x8a\xf6\x8b\xf6\x8c\xf6\x8d\xf6\x8e\xf6\x8f\xf6\x90\xf6\x91\xf6\x92\xf6\x93\xf6\x94\xf6\x95\xf6\x96\xf6\x97\xf6\x98\xf6\x99\xf6\x9a\xf6\x9b\xf6\x9c\xf6\x9d\xf6\x9e\xf6\x9f\xf6\xa0\xf6\xa1\xf6\xa2\xf6\xa3\xf6\xa4\xf6\xa5\xf6\xa6\xf6\xa7\xf6\xa8\xf6\xa9\xf6\xaa\xf6\xab\xf6\xac\xf6\xad\xf6\xae\xf6\xaf\xf6\xb0\xf6\xb1\xf6\xb2\xf6\xb3\xf6\xb4\xf6\xb5\xf6\xb6\xf6\xb7\xf6\xb8\xf6\xb9\xf6\xba\xf6\xbb\xf6\xbc\xf6\xbd\xf6\xbe\xf6\xbf\xf6\xc0\xf6\xc1\xf6\xc2\xf6\xc3\x00\x00\x00\x00", /* e100 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf6\xc4\xf6\xc5\xf6\xc6\xf6\xc7\xf6\xc8\xf6\xc9\xf6\xca\xf6\xcb\xf6\xcc\xf6\xcd\xf6\xce\xf6\xcf\xf6\xd0\xf6\xd1\xf6\xd2\xf6\xd3\xf6\xd4\xf6\xd5\xf6\xd6\xf6\xd7\xf6\xd8\xf6\xd9\xf6\xda\xf6\xdb\xf6\xdc\xf6\xdd\xf6\xde\xf6\xdf\xf6\xe0\xf6\xe1\xf6\xe2\xf6\xe3\xf6\xe4\xf6\xe5\xf6\xe6\xf6\xe7\xf6\xe8\xf6\xe9\xf6\xea\xf6\xeb\xf6\xec\xf6\xed\xf6\xee\xf6\xef\xf6\xf0\xf6\xf1\xf6\xf2\xf6\xf3\xf6\xf4\xf6\xf5\xf6\xf6\xf6\xf7\xf6\xf8\xf6\xf9\xf6\xfa\xf6\xfb\xf6\xfc\xf6\xfd\xf6\xfe\xf6\xff\xf7\x00\xf7\x01\xf7\x02", /* e180 */ "\x00\x00\xf7\x03\xf7\x04\xf7\x05\xf7\x06\xf7\x07\xf7\x08\xf7\x09\xf7\x0a\xf7\x0b\xf7\x0c\xf7\x0d\xf7\x0e\xf7\x0f\xf7\x10\xf7\x11\xf7\x12\xf7\x13\xf7\x14\xf7\x15\xf7\x16\xf7\x17\xf7\x18\xf7\x19\xf7\x1a\xf7\x1b\xf7\x1c\xf7\x1d\xf7\x1e\xf7\x1f\xf7\x20\xf7\x21\xf7\x22\xf7\x23\xf7\x24\xf7\x25\xf7\x26\xf7\x27\xf7\x28\xf7\x29\xf7\x2a\xf7\x2b\xf7\x2c\xf7\x2d\xf7\x2e\xf7\x2f\xf7\x30\xf7\x31\xf7\x32\xf7\x33\xf7\x34\xf7\x35\xf7\x36\xf7\x37\xf7\x38\xf7\x39\xf7\x3a\xf7\x3b\xf7\x3c\xf7\x3d\xf7\x3e\xf7\x3f\xf7\x40\xf7\x41\xf7\x42\xf7\x43\xf7\x44\xf7\x45\xf7\x46\xf7\x47\xf7\x48\xf7\x49\xf7\x4a\xf7\x4b\xf7\x4c\xf7\x4d\xf7\x4e\xf7\x4f\xf7\x50\xf7\x51\xf7\x52\xf7\x53\xf7\x54\xf7\x55\xf7\x56\xf7\x57\xf7\x58\xf7\x59\xf7\x5a\xf7\x5b\xf7\x5c\xf7\x5d\xf7\x5e\xf7\x5f\xf7\x60\xf7\x61\xf7\x62\xf7\x63\xf7\x64\xf7\x65\xf7\x66\xf7\x67\xf7\x68\xf7\x69\xf7\x6a\xf7\x6b\xf7\x6c\xf7\x6d\xf7\x6e\xf7\x6f\xf7\x70\xf7\x71\xf7\x72\xf7\x73\xf7\x74\xf7\x75\xf7\x76\xf7\x77\xf7\x78\xf7\x79\xf7\x7a\xf7\x7b\xf7\x7c\xf7\x7d\xf7\x7e\xf7\x7f\x00\x00\x00\x00", /* e200 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf7\x80\xf7\x81\xf7\x82\xf7\x83\xf7\x84\xf7\x85\xf7\x86\xf7\x87\xf7\x88\xf7\x89\xf7\x8a\xf7\x8b\xf7\x8c\xf7\x8d\xf7\x8e\xf7\x8f\xf7\x90\xf7\x91\xf7\x92\xf7\x93\xf7\x94\xf7\x95\xf7\x96\xf7\x97\xf7\x98\xf7\x99\xf7\x9a\xf7\x9b\xf7\x9c\xf7\x9d\xf7\x9e\xf7\x9f\xf7\xa0\xf7\xa1\xf7\xa2\xf7\xa3\xf7\xa4\xf7\xa5\xf7\xa6\xf7\xa7\xf7\xa8\xf7\xa9\xf7\xaa\xf7\xab\xf7\xac\xf7\xad\xf7\xae\xf7\xaf\xf7\xb0\xf7\xb1\xf7\xb2\xf7\xb3\xf7\xb4\xf7\xb5\xf7\xb6\xf7\xb7\xf7\xb8\xf7\xb9\xf7\xba\xf7\xbb\xf7\xbc\xf7\xbd\xf7\xbe", /* e280 */ "\x00\x00\xf7\xbf\xf7\xc0\xf7\xc1\xf7\xc2\xf7\xc3\xf7\xc4\xf7\xc5\xf7\xc6\xf7\xc7\xf7\xc8\xf7\xc9\xf7\xca\xf7\xcb\xf7\xcc\xf7\xcd\xf7\xce\xf7\xcf\xf7\xd0\xf7\xd1\xf7\xd2\xf7\xd3\xf7\xd4\xf7\xd5\xf7\xd6\xf7\xd7\xf7\xd8\xf7\xd9\xf7\xda\xf7\xdb\xf7\xdc\xf7\xdd\xf7\xde\xf7\xdf\xf7\xe0\xf7\xe1\xf7\xe2\xf7\xe3\xf7\xe4\xf7\xe5\xf7\xe6\xf7\xe7\xf7\xe8\xf7\xe9\xf7\xea\xf7\xeb\xf7\xec\xf7\xed\xf7\xee\xf7\xef\xf7\xf0\xf7\xf1\xf7\xf2\xf7\xf3\xf7\xf4\xf7\xf5\xf7\xf6\xf7\xf7\xf7\xf8\xf7\xf9\xf7\xfa\xf7\xfb\xf7\xfc\xf7\xfd\xf7\xfe\xf7\xff\xf8\x00\xf8\x01\xf8\x02\xf8\x03\xf8\x04\xf8\x05\xf8\x06\xf8\x07\xf8\x08\xf8\x09\xf8\x0a\xf8\x0b\xf8\x0c\xf8\x0d\xf8\x0e\xf8\x0f\xf8\x10\xf8\x11\xf8\x12\xf8\x13\xf8\x14\xf8\x15\xf8\x16\xf8\x17\xf8\x18\xf8\x19\xf8\x1a\xf8\x1b\xf8\x1c\xf8\x1d\xf8\x1e\xf8\x1f\xf8\x20\xf8\x21\xf8\x22\xf8\x23\xf8\x24\xf8\x25\xf8\x26\xf8\x27\xf8\x28\xf8\x29\xf8\x2a\xf8\x2b\xf8\x2c\xf8\x2d\xf8\x2e\xf8\x2f\xf8\x30\xf8\x31\xf8\x32\xf8\x33\xf8\x34\xf8\x35\xf8\x36\xf8\x37\xf8\x38\xf8\x39\xf8\x3a\xf8\x3b\x00\x00\x00\x00", /* e300 */ NULL, /* e380 */ NULL, /* e400 */ NULL, /* e480 */ NULL, /* e500 */ NULL, /* e580 */ NULL, /* e600 */ NULL, /* e680 */ NULL, /* e700 */ NULL, /* e780 */ NULL, /* e800 */ NULL, /* e880 */ NULL, /* e900 */ NULL, /* e980 */ NULL, /* ea00 */ NULL, /* ea80 */ NULL, /* eb00 */ NULL, /* eb80 */ NULL, /* ec00 */ NULL, /* ec80 */ NULL, /* ed00 */ NULL, /* ed80 */ NULL, /* ee00 */ NULL, /* ee80 */ NULL, /* ef00 */ NULL, /* ef80 */ NULL, /* f000 */ NULL, /* f080 */ NULL, /* f100 */ NULL, /* f180 */ NULL, /* f200 */ NULL, /* f280 */ NULL, /* f300 */ NULL, /* f380 */ NULL, /* f400 */ NULL, /* f480 */ NULL, /* f500 */ NULL, /* f580 */ NULL, /* f600 */ NULL, /* f680 */ NULL, /* f700 */ NULL, /* f780 */ NULL, /* f800 */ NULL, /* f880 */ NULL, /* f900 */ NULL, /* f980 */ NULL, /* fa00 */ NULL, /* fa80 */ NULL, /* fb00 */ NULL, /* fb80 */ NULL, /* fc00 */ NULL, /* fc80 */ NULL, /* fd00 */ NULL, /* fd80 */ NULL, /* fe00 */ NULL, /* fe80 */ NULL, /* ff00 */ NULL, /* ff80 */ NULL } }, { "cp1388", "0x03a90345" /* 937, 837 */, /* Unicode to EBCDIC DBCS translation table for ibm-1388_P103-2001 */ { /* 0000 */ NULL, /* 0080 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x45\x88\x00\x00\x00\x00\x44\x6a\x44\x60\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x44\xed\x44\x4b\x00\x00\x00\x00\x44\x50\x00\x00\x00\x00\x43\x45\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x44\x7a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x46\x44\x46\x42\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x46\x48\x46\x46\x46\x5a\x00\x00\x46\x4c\x46\x4a\x00\x00\x00\x00\x00\x00\x00\x00\x46\x50\x46\x4e\x00\x00\x00\x00\x00\x00\x44\x7b\x00\x00\x46\x54\x46\x52\x00\x00\x46\x59\x00\x00\x00\x00\x00\x00", /* 0100 */ "\x00\x00\x46\x41\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x46\x45\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x46\x47\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x46\x49\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x46\x5d\x00\x00\x00\x00\x00\x00\x46\x5e\x00\x00\x00\x00\x00\x00\x00\x00\x46\x4d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x46\x51\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 0180 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x46\x43\x00\x00\x46\x4b\x00\x00\x46\x4f\x00\x00\x46\x53\x00\x00\x46\x55\x00\x00\x46\x56\x00\x00\x46\x57\x00\x00\x46\x58\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x46\x5f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 0200 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x46\x5b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x46\x60\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 0280 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x45\x46\x00\x00\x45\x45\xcd\x41\xcd\x42\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xcd\x43\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 0300 */ NULL, /* 0380 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x41\x61\x41\x62\x41\x63\x41\x64\x41\x65\x41\x66\x41\x67\x41\x68\x41\x69\x41\x6a\x41\x6b\x41\x6c\x41\x6d\x41\x6e\x41\x6f\x41\x70\x41\x71\x00\x00\x41\x72\x41\x73\x41\x74\x41\x75\x41\x76\x41\x77\x41\x78\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x41\x41\x41\x42\x41\x43\x41\x44\x41\x45\x41\x46\x41\x47\x41\x48\x41\x49\x41\x4a\x41\x4b\x41\x4c\x41\x4d\x41\x4e\x41\x4f\x41\x50\x41\x51\x00\x00\x41\x52\x41\x53\x41\x54\x41\x55\x41\x56\x41\x57\x41\x58\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 0400 */ "\x00\x00\x41\xc6\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x41\xc0\x41\xc1\x41\xc2\x41\xc3\x41\xc4\x41\xc5\x41\xc7\x41\xc8\x41\xc9\x41\xca\x41\xcb\x41\xcc\x41\xcd\x41\xce\x41\xcf\x41\xd0\x41\xd1\x41\xd2\x41\xd3\x41\xd4\x41\xd5\x41\xd6\x41\xd7\x41\xd8\x41\xd9\x41\xda\x41\xdb\x41\xdc\x41\xdd\x41\xde\x41\xdf\x41\xe0\x41\x80\x41\x81\x41\x82\x41\x83\x41\x84\x41\x85\x41\x87\x41\x88\x41\x89\x41\x8a\x41\x8b\x41\x8c\x41\x8d\x41\x8e\x41\x8f\x41\x90\x41\x91\x41\x92\x41\x93\x41\x94\x41\x95\x41\x96\x41\x97\x41\x98\x41\x99\x41\x9a\x41\x9b\x41\x9c\x41\x9d\x41\x9e\x41\x9f\x41\xa0\x00\x00\x41\x86\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 0480 */ NULL, /* 0500 */ NULL, /* 0580 */ NULL, /* 0600 */ "\x47\x5d\x47\x5e\x47\x5f\x47\x60\x47\x61\x47\x62\x47\x63\x47\x64\x47\x65\x47\x66\x47\x67\x47\x68\x47\x69\x47\x6a\x47\x6b\x47\x6c\x47\x6d\x47\x6e\x47\x6f\x47\x70\x47\x71\x47\x72\x47\x73\x47\x74\x47\x75\x47\x76\x47\x77\x47\x78\x47\x79\x47\x7a\x47\x7b\x47\x7c\x47\x7d\x47\x7e\x47\x7f\x47\x80\x47\x81\x47\x82\x47\x83\x47\x84\x47\x85\x47\x86\x47\x87\x47\x88\x47\x89\x47\x8a\x47\x8b\x47\x8c\x47\x8d\x47\x8e\x47\x8f\x47\x90\x47\x91\x47\x92\x47\x93\x47\x94\x47\x95\x47\x96\x47\x97\x47\x98\x47\x99\x47\x9a\x47\x9b\x47\x9c\x47\x9d\x47\x9e\x47\x9f\x47\xa0\x47\xa1\x47\xa2\x47\xa3\x47\xa4\x47\xa5\x47\xa6\x47\xa7\x47\xa8\x47\xa9\x47\xaa\x47\xab\x47\xac\x47\xad\x47\xae\x47\xaf\x47\xb0\x47\xb1\x47\xb2\x47\xb3\x47\xb4\x47\xb5\x47\xb6\x47\xb7\x47\xb8\x47\xb9\x47\xba\x47\xbb\x47\xbc\x47\xbd\x47\xbe\x47\xbf\x47\xc0\x47\xc1\x47\xc2\x47\xc3\x47\xc4\x47\xc5\x47\xc6\x47\xc7\x47\xc8\x47\xc9\x47\xca\x47\xcb\x47\xcc\x47\xcd\x47\xce\x47\xcf\x47\xd0\x47\xd1\x47\xd2\x47\xd3\x47\xd4\x47\xd5\x47\xd6\x47\xd7\x47\xd8\x47\xd9\x47\xda\x47\xdb\x47\xdc", /* 0680 */ "\x47\xdd\x47\xde\x47\xdf\x47\xe0\x47\xe1\x47\xe2\x47\xe3\x47\xe4\x47\xe5\x47\xe6\x47\xe7\x47\xe8\x47\xe9\x47\xea\x47\xeb\x47\xec\x47\xed\x47\xee\x47\xef\x47\xf0\x47\xf1\x47\xf2\x47\xf3\x47\xf4\x47\xf5\x47\xf6\x47\xf7\x47\xf8\x47\xf9\x47\xfa\x47\xfb\x47\xfc\x47\xfd\x47\xfe\x48\x41\x48\x42\x48\x43\x48\x44\x48\x45\x48\x46\x48\x47\x48\x48\x48\x49\x48\x4a\x48\x4b\x48\x4c\x48\x4d\x48\x4e\x48\x4f\x48\x50\x48\x51\x48\x52\x48\x53\x48\x54\x48\x55\x48\x56\x48\x57\x48\x58\x48\x59\x48\x5a\x48\x5b\x48\x5c\x48\x5d\x48\x5e\x48\x5f\x48\x60\x48\x61\x48\x62\x48\x63\x48\x64\x48\x65\x48\x66\x48\x67\x48\x68\x48\x69\x48\x6a\x48\x6b\x48\x6c\x48\x6d\x48\x6e\x48\x6f\x48\x70\x48\x71\x48\x72\x48\x73\x48\x74\x48\x75\x48\x76\x48\x77\x48\x78\x48\x79\x48\x7a\x48\x7b\x48\x7c\x48\x7d\x48\x7e\x48\x7f\x48\x80\x48\x81\x48\x82\x48\x83\x48\x84\x48\x85\x48\x86\x48\x87\x48\x88\x48\x89\x48\x8a\x48\x8b\x48\x8c\x48\x8d\x48\x8e\x48\x8f\x48\x90\x48\x91\x48\x92\x48\x93\x48\x94\x48\x95\x48\x96\x48\x97\x48\x98\x48\x99\x48\x9a\x48\x9b\x48\x9c\x48\x9d\x48\x9e", /* 0700 */ NULL, /* 0780 */ NULL, /* 0800 */ NULL, /* 0880 */ NULL, /* 0900 */ NULL, /* 0980 */ NULL, /* 0a00 */ NULL, /* 0a80 */ NULL, /* 0b00 */ NULL, /* 0b80 */ NULL, /* 0c00 */ NULL, /* 0c80 */ NULL, /* 0d00 */ NULL, /* 0d80 */ NULL, /* 0e00 */ NULL, /* 0e80 */ NULL, /* 0f00 */ "\x6d\x41\x6d\x42\x6d\x43\x6d\x44\x6d\x45\x6d\x46\x6d\x47\x6d\x48\x6d\x49\x6d\x4a\x6d\x4b\x6d\x4c\x6d\x4d\x6d\x4e\x6d\x4f\x6d\x50\x6d\x51\x6d\x52\x6d\x53\x6d\x54\x6d\x55\x6d\x56\x6d\x57\x6d\x58\x6d\x59\x6d\x5a\x6d\x5b\x6d\x5c\x6d\x5d\x6d\x5e\x6d\x5f\x6d\x60\x6d\x61\x6d\x62\x6d\x63\x6d\x64\x6d\x65\x6d\x66\x6d\x67\x6d\x68\x6d\x69\x6d\x6a\x6d\x6b\x6d\x6c\x6d\x6d\x6d\x6e\x6d\x6f\x6d\x70\x6d\x71\x6d\x72\x6d\x73\x6d\x74\x6d\x75\x6d\x76\x6d\x77\x6d\x78\x6d\x79\x6d\x7a\x6d\x7b\x6d\x7c\x6d\x7d\x6d\x7e\x6d\x7f\x6d\x80\x6d\x81\x6d\x82\x6d\x83\x6d\x84\x6d\x85\x6d\x86\x6d\x87\x6d\x88\x6d\x89\x6d\x8a\x6d\x8b\x6d\x8c\x6d\x8d\x6d\x8e\x6d\x8f\x6d\x90\x6d\x91\x6d\x92\x6d\x93\x6d\x94\x6d\x95\x6d\x96\x6d\x97\x6d\x98\x6d\x99\x6d\x9a\x6d\x9b\x6d\x9c\x6d\x9d\x6d\x9e\x6d\x9f\x6d\xa0\x6d\xa1\x6d\xa2\x6d\xa3\x6d\xa4\x6d\xa5\x6d\xa6\x6d\xa7\x6d\xa8\x6d\xa9\x6d\xaa\x6d\xab\x6d\xac\x6d\xad\x6d\xae\x6d\xaf\x6d\xb0\x6d\xb1\x6d\xb2\x6d\xb3\x6d\xb4\x6d\xb5\x6d\xb6\x6d\xb7\x6d\xb8\x6d\xb9\x6d\xba\x6d\xbb\x6d\xbc\x6d\xbd\x6d\xbe\x6d\xbf\x6d\xc0", /* 0f80 */ "\x6d\xc1\x6d\xc2\x6d\xc3\x6d\xc4\x6d\xc5\x6d\xc6\x6d\xc7\x6d\xc8\x6d\xc9\x6d\xca\x6d\xcb\x6d\xcc\x6d\xcd\x6d\xce\x6d\xcf\x6d\xd0\x6d\xd1\x6d\xd2\x6d\xd3\x6d\xd4\x6d\xd5\x6d\xd6\x6d\xd7\x6d\xd8\x6d\xd9\x6d\xda\x6d\xdb\x6d\xdc\x6d\xdd\x6d\xde\x6d\xdf\x6d\xe0\x6d\xe1\x6d\xe2\x6d\xe3\x6d\xe4\x6d\xe5\x6d\xe6\x6d\xe7\x6d\xe8\x6d\xe9\x6d\xea\x6d\xeb\x6d\xec\x6d\xed\x6d\xee\x6d\xef\x6d\xf0\x6d\xf1\x6d\xf2\x6d\xf3\x6d\xf4\x6d\xf5\x6d\xf6\x6d\xf7\x6d\xf8\x6d\xf9\x6d\xfa\x6d\xfb\x6d\xfc\x6d\xfd\x6d\xfe\x6e\x41\x6e\x42\x6e\x43\x6e\x44\x6e\x45\x6e\x46\x6e\x47\x6e\x48\x6e\x49\x6e\x4a\x6e\x4b\x6e\x4c\x6e\x4d\x6e\x4e\x6e\x4f\x6e\x50\x6e\x51\x6e\x52\x6e\x53\x6e\x54\x6e\x55\x6e\x56\x6e\x57\x6e\x58\x6e\x59\x6e\x5a\x6e\x5b\x6e\x5c\x6e\x5d\x6e\x5e\x6e\x5f\x6e\x60\x6e\x61\x6e\x62\x6e\x63\x6e\x64\x6e\x65\x6e\x66\x6e\x67\x6e\x68\x6e\x69\x6e\x6a\x6e\x6b\x6e\x6c\x6e\x6d\x6e\x6e\x6e\x6f\x6e\x70\x6e\x71\x6e\x72\x6e\x73\x6e\x74\x6e\x75\x6e\x76\x6e\x77\x6e\x78\x6e\x79\x6e\x7a\x6e\x7b\x6e\x7c\x6e\x7d\x6e\x7e\x6e\x7f\x6e\x80\x6e\x81\x6e\x82", /* 1000 */ NULL, /* 1080 */ NULL, /* 1100 */ NULL, /* 1180 */ NULL, /* 1200 */ NULL, /* 1280 */ NULL, /* 1300 */ NULL, /* 1380 */ NULL, /* 1400 */ NULL, /* 1480 */ NULL, /* 1500 */ NULL, /* 1580 */ NULL, /* 1600 */ NULL, /* 1680 */ NULL, /* 1700 */ NULL, /* 1780 */ NULL, /* 1800 */ "\x6e\x83\x6e\x84\x6e\x85\x6e\x86\x6e\x87\x6e\x88\x6e\x89\x6e\x8a\x6e\x8b\x6e\x8c\x6e\x8d\x6e\x8e\x6e\x8f\x6e\x90\x6e\x91\x6e\x92\x6e\x93\x6e\x94\x6e\x95\x6e\x96\x6e\x97\x6e\x98\x6e\x99\x6e\x9a\x6e\x9b\x6e\x9c\x6e\x9d\x6e\x9e\x6e\x9f\x6e\xa0\x6e\xa1\x6e\xa2\x6e\xa3\x6e\xa4\x6e\xa5\x6e\xa6\x6e\xa7\x6e\xa8\x6e\xa9\x6e\xaa\x6e\xab\x6e\xac\x6e\xad\x6e\xae\x6e\xaf\x6e\xb0\x6e\xb1\x6e\xb2\x6e\xb3\x6e\xb4\x6e\xb5\x6e\xb6\x6e\xb7\x6e\xb8\x6e\xb9\x6e\xba\x6e\xbb\x6e\xbc\x6e\xbd\x6e\xbe\x6e\xbf\x6e\xc0\x6e\xc1\x6e\xc2\x6e\xc3\x6e\xc4\x6e\xc5\x6e\xc6\x6e\xc7\x6e\xc8\x6e\xc9\x6e\xca\x6e\xcb\x6e\xcc\x6e\xcd\x6e\xce\x6e\xcf\x6e\xd0\x6e\xd1\x6e\xd2\x6e\xd3\x6e\xd4\x6e\xd5\x6e\xd6\x6e\xd7\x6e\xd8\x6e\xd9\x6e\xda\x6e\xdb\x6e\xdc\x6e\xdd\x6e\xde\x6e\xdf\x6e\xe0\x6e\xe1\x6e\xe2\x6e\xe3\x6e\xe4\x6e\xe5\x6e\xe6\x6e\xe7\x6e\xe8\x6e\xe9\x6e\xea\x6e\xeb\x6e\xec\x6e\xed\x6e\xee\x6e\xef\x6e\xf0\x6e\xf1\x6e\xf2\x6e\xf3\x6e\xf4\x6e\xf5\x6e\xf6\x6e\xf7\x6e\xf8\x6e\xf9\x6e\xfa\x6e\xfb\x6e\xfc\x6e\xfd\x6e\xfe\x6f\x41\x6f\x42\x6f\x43\x6f\x44", /* 1880 */ "\x6f\x45\x6f\x46\x6f\x47\x6f\x48\x6f\x49\x6f\x4a\x6f\x4b\x6f\x4c\x6f\x4d\x6f\x4e\x6f\x4f\x6f\x50\x6f\x51\x6f\x52\x6f\x53\x6f\x54\x6f\x55\x6f\x56\x6f\x57\x6f\x58\x6f\x59\x6f\x5a\x6f\x5b\x6f\x5c\x6f\x5d\x6f\x5e\x6f\x5f\x6f\x60\x6f\x61\x6f\x62\x6f\x63\x6f\x64\x6f\x65\x6f\x66\x6f\x67\x6f\x68\x6f\x69\x6f\x6a\x6f\x6b\x6f\x6c\x6f\x6d\x6f\x6e\x6f\x6f\x6f\x70\x6f\x71\x6f\x72\x6f\x73\x6f\x74\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 1900 */ NULL, /* 1980 */ NULL, /* 1a00 */ NULL, /* 1a80 */ NULL, /* 1b00 */ NULL, /* 1b80 */ NULL, /* 1c00 */ NULL, /* 1c80 */ NULL, /* 1d00 */ NULL, /* 1d80 */ NULL, /* 1e00 */ NULL, /* 1e80 */ NULL, /* 1f00 */ NULL, /* 1f80 */ NULL, /* 2000 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x44\x5a\x00\x00\x00\x00\xcd\x44\xcd\x45\x44\x4a\x44\x7c\x00\x00\x44\x61\x44\x71\x00\x00\x00\x00\x44\x62\x44\x72\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x44\x7e\x44\x7f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x45\x8b\x00\x00\x44\xee\x44\xef\x00\x00\xcd\x46\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x44\x6b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 2080 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x45\xeb\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 2100 */ "\x00\x00\x00\x00\x00\x00\x44\x4e\x00\x00\xcd\x47\x00\x00\x00\x00\x00\x00\xcd\x48\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x44\x6e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x44\x6f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x41\xf1\x41\xf2\x41\xf3\x41\xf4\x41\xf5\x41\xf6\x41\xf7\x41\xf8\x41\xf9\x41\xfa\x41\xfb\x41\xfc\x00\x00\x00\x00\x00\x00\x00\x00\x41\xb1\x41\xb2\x41\xb3\x41\xb4\x41\xb5\x41\xb6\x41\xb7\x41\xb8\x41\xb9\x41\xba\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 2180 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x44\xf1\x44\xf2\x44\xf0\x44\xf3\x00\x00\x00\x00\xcd\x49\xcd\x4a\xcd\x4b\xcd\x4c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 2200 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x45\x69\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x45\x66\x00\x00\x45\x65\x00\x00\x00\x00\x00\x00\xcd\x4d\x00\x00\x00\x00\x00\x00\x00\x00\x45\x6b\x00\x00\x00\x00\x45\x77\x44\x4d\xcd\x4e\x45\x6e\x00\x00\x00\x00\xcd\x4f\x00\x00\x45\x6d\x00\x00\x45\x63\x45\x64\x45\x68\x45\x67\x45\x71\x00\x00\x00\x00\x45\x72\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x44\x68\x44\x78\x45\x62\x45\x6a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x45\x76\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x45\x75\x00\x00\x00\x00\x00\x00\x45\x74\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xcd\x50\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x44\x4c\x45\x73\x00\x00\x00\x00\x44\x67\x44\x77\xcd\x51\xcd\x52\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x45\x79\x45\x7a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 2280 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xcd\x90\x00\x00\x00\x00\x00\x00\x45\x70\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x45\x6c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xcd\x53\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 2300 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x45\x6f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 2380 */ NULL, /* 2400 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x45\xe1\x45\xe2\x45\xe3\x45\xe4\x45\xe5\x45\xe6\x45\xe7\x45\xe8\x45\xe9\x45\xea\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x45\xc5\x45\xc6\x45\xc7\x45\xc8\x45\xc9\x45\xca\x45\xcb\x45\xcc\x45\xcd\x45\xce\x45\xcf\x45\xd0", /* 2480 */ "\x45\xd1\x45\xd2\x45\xd3\x45\xd4\x45\xd5\x45\xd6\x45\xd7\x45\xd8\x45\xb1\x45\xb2\x45\xb3\x45\xb4\x45\xb5\x45\xb6\x45\xb7\x45\xb8\x45\xb9\x45\xba\x45\xbb\x45\xbc\x45\xbd\x45\xbe\x45\xbf\x45\xc0\x45\xc1\x45\xc2\x45\xc3\x45\xc4\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 2500 */ "\x46\xa4\x46\xa5\x46\xa6\x46\xa7\x46\xa8\x46\xa9\x46\xaa\x46\xab\x46\xac\x46\xad\x46\xae\x46\xaf\x46\xb0\x46\xb1\x46\xb2\x46\xb3\x46\xb4\x46\xb5\x46\xb6\x46\xb7\x46\xb8\x46\xb9\x46\xba\x46\xbb\x46\xbc\x46\xbd\x46\xbe\x46\xbf\x46\xc0\x46\xc1\x46\xc2\x46\xc3\x46\xc4\x46\xc5\x46\xc6\x46\xc7\x46\xc8\x46\xc9\x46\xca\x46\xcb\x46\xcc\x46\xcd\x46\xce\x46\xcf\x46\xd0\x46\xd1\x46\xd2\x46\xd3\x46\xd4\x46\xd5\x46\xd6\x46\xd7\x46\xd8\x46\xd9\x46\xda\x46\xdb\x46\xdc\x46\xdd\x46\xde\x46\xdf\x46\xe0\x46\xe1\x46\xe2\x46\xe3\x46\xe4\x46\xe5\x46\xe6\x46\xe7\x46\xe8\x46\xe9\x46\xea\x46\xeb\x46\xec\x46\xed\x46\xee\x46\xef\x00\x00\x00\x00\x00\x00\x00\x00\xcd\x54\xcd\x55\xcd\x56\xcd\x57\xcd\x58\xcd\x59\xcd\x5a\xcd\x5b\xcd\x5c\xcd\x5d\xcd\x5e\xcd\x5f\xcd\x60\xcd\x61\xcd\x62\xcd\x63\xcd\x64\xcd\x65\xcd\x66\xcd\x67\xcd\x68\xcd\x69\xcd\x6a\xcd\x6b\xcd\x6c\xcd\x6d\xcd\x6e\xcd\x6f\xcd\x70\xcd\x71\xcd\x72\xcd\x73\xcd\x74\xcd\x75\xcd\x76\xcd\x77\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 2580 */ "\x00\x00\xcd\x78\xcd\x79\xcd\x7a\xcd\x7b\xcd\x7c\xcd\x7d\xcd\x7e\xcd\x7f\xcd\x81\xcd\x82\xcd\x83\xcd\x84\xcd\x85\xcd\x86\xcd\x87\x00\x00\x00\x00\x00\x00\xcd\x88\xcd\x89\xcd\x8a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x44\xea\x44\xe9\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x44\xe3\x44\xe2\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x44\xec\x44\xeb\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x44\xe8\x44\xe7\x00\x00\x00\x00\x00\x00\x44\xe0\x00\x00\x00\x00\x44\xe4\x44\xe1\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xcd\x8b\xcd\x8c\xcd\x8d\xcd\x8e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 2600 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x44\xe6\x44\xe5\x00\x00\x00\x00\xcd\x8f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x44\x79\x00\x00\x44\x69\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 2680 */ NULL, /* 2700 */ NULL, /* 2780 */ NULL, /* 2800 */ NULL, /* 2880 */ NULL, /* 2900 */ NULL, /* 2980 */ NULL, /* 2a00 */ NULL, /* 2a80 */ NULL, /* 2b00 */ NULL, /* 2b80 */ NULL, /* 2c00 */ NULL, /* 2c80 */ NULL, /* 2d00 */ NULL, /* 2d80 */ NULL, /* 2e00 */ NULL, /* 2e80 */ "\x00\x00\xce\x56\x00\x00\x00\x00\xce\x5a\x00\x00\x00\x00\x00\x00\xce\x5d\x00\x00\x00\x00\xce\x5e\xce\x63\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xce\x64\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xce\x71\x00\x00\x00\x00\xce\x74\x00\x00\x00\x00\x00\x00\xce\x77\x00\x00\x00\x00\x00\x00\x00\x00\xce\x79\x00\x00\x00\x00\xce\x7a\xce\x7b\x00\x00\x00\x00\x00\x00\xce\x7f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xce\x8a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 2f00 */ NULL, /* 2f80 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xcd\xca\xcd\xcb\xcd\xcc\xcd\xcd\xcd\xce\xcd\xcf\xcd\xd0\xcd\xd1\xcd\xd2\xcd\xd3\xcd\xd4\xcd\xd5\x00\x00\x00\x00\x00\x00\x00\x00", /* 3000 */ "\x40\x40\x43\x44\x43\x41\x44\x5b\x00\x00\x44\x5d\x44\x5e\x44\x5f\x44\x64\x44\x74\x44\x65\x44\x75\x43\x42\x43\x43\x44\x42\x44\x43\x44\x66\x44\x76\x44\x6c\x44\x7d\x44\x63\x44\x73\x45\x5b\x45\x5c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xcd\x91\xcd\x92\x00\x00\x00\x00\xcd\x93\xcd\x94\xcd\x95\xcd\x96\xcd\x97\xcd\x98\xcd\x99\xcd\x9a\xcd\x9b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xcd\xc9\x00\x00\x00\x00\x44\x47\x44\x81\x44\x48\x44\x82\x44\x49\x44\x83\x44\x51\x44\x84\x44\x52\x44\x85\x44\x86\x44\xc0\x44\x87\x44\xc1\x44\x88\x44\xc2\x44\x89\x44\xc3\x44\x8a\x44\xc4\x44\x8c\x44\xc5\x44\x8d\x44\xc6\x44\x8e\x44\xc7\x44\x8f\x44\xc8\x44\x90\x44\xc9\x44\x91\x44\xca\x44\x92\x44\xcb\x44\x56\x44\x93\x44\xcc\x44\x94\x44\xcd\x44\x95\x44\xce\x44\x96\x44\x97\x44\x98\x44\x99\x44\x9a\x44\x9d\x44\xcf\x44\xd5\x44\x9e\x44\xd0\x44\xd6\x44\x9f\x44\xd1\x44\xd7\x44\xa2\x44\xd2\x44\xd8\x44\xa3\x44\xd3\x44\xd9\x44\xa4\x44\xa5", /* 3080 */ "\x44\xa6\x44\xa7\x44\xa8\x44\x53\x44\xa9\x44\x54\x44\xaa\x44\x55\x44\xac\x44\xad\x44\xae\x44\xaf\x44\xba\x44\xbb\x44\x57\x44\xbc\x44\xda\x44\xdb\x44\x46\x44\xbd\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x43\xbe\x43\xbf\x44\xdc\x44\xdd\x00\x00\x00\x00\x43\x47\x43\x81\x43\x48\x43\x82\x43\x49\x43\x83\x43\x51\x43\x84\x43\x52\x43\x85\x43\x86\x43\xc0\x43\x87\x43\xc1\x43\x88\x43\xc2\x43\x89\x43\xc3\x43\x8a\x43\xc4\x43\x8c\x43\xc5\x43\x8d\x43\xc6\x43\x8e\x43\xc7\x43\x8f\x43\xc8\x43\x90\x43\xc9\x43\x91\x43\xca\x43\x92\x43\xcb\x43\x56\x43\x93\x43\xcc\x43\x94\x43\xcd\x43\x95\x43\xce\x43\x96\x43\x97\x43\x98\x43\x99\x43\x9a\x43\x9d\x43\xcf\x43\xd5\x43\x9e\x43\xd0\x43\xd6\x43\x9f\x43\xd1\x43\xd7\x43\xa2\x43\xd2\x43\xd8\x43\xa3\x43\xd3\x43\xd9\x43\xa4\x43\xa5\x43\xa6\x43\xa7\x43\xa8\x43\x53\x43\xa9\x43\x54\x43\xaa\x43\x55\x43\xac\x43\xad\x43\xae\x43\xaf\x43\xba\x43\xbb\x43\x57\x43\xbc\x43\xda\x43\xdb\x43\x46\x43\xbd\x43\xd4\x43\x59\x43\x5a\x00\x00\x00\x00\x00\x00\x00\x00\x43\x45\x43\x58\x43\xdc\x43\xdd\x00\x00", /* 3100 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x46\x65\x46\x66\x46\x67\x46\x68\x46\x69\x46\x6a\x46\x6b\x46\x6c\x46\x6d\x46\x6e\x46\x6f\x46\x70\x46\x71\x46\x72\x46\x73\x46\x74\x46\x75\x46\x76\x46\x77\x46\x78\x46\x79\x46\x7a\x46\x7b\x46\x7c\x46\x7d\x46\x7e\x46\x7f\x46\x80\x46\x81\x46\x82\x46\x83\x46\x84\x46\x85\x46\x86\x46\x87\x46\x88\x46\x89\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 3180 */ NULL, /* 3200 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x45\xf1\x45\xf2\x45\xf3\x45\xf4\x45\xf5\x45\xf6\x45\xf7\x45\xf8\x45\xf9\x45\xfa\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x44\x6d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 3280 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xcd\x9c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 3300 */ NULL, /* 3380 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xcd\x9d\xcd\x9e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xcd\x9f\xcd\xa0\xcd\xa1\x00\x00\x00\x00\xcd\xa2\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xcd\xa3\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xcd\xa4\x00\x00\x00\x00\xcd\xa5\xcd\xa6\x00\x00\x00\x00\xcd\xa7\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 3400 */ "\xcf\x41\xcf\x42\xcf\x43\xcf\x44\xcf\x45\xcf\x46\xcf\x47\xcf\x48\xcf\x49\xcf\x4a\xcf\x4b\xcf\x4c\xcf\x4d\xcf\x4e\xcf\x4f\xcf\x50\xcf\x51\xcf\x52\xcf\x53\xcf\x54\xcf\x55\xcf\x56\xcf\x57\xcf\x58\xcf\x59\xcf\x5a\xcf\x5b\xcf\x5c\xcf\x5d\xcf\x5e\xcf\x5f\xcf\x60\xcf\x61\xcf\x62\xcf\x63\xcf\x64\xcf\x65\xcf\x66\xcf\x67\xcf\x68\xcf\x69\xcf\x6a\xcf\x6b\xcf\x6c\xcf\x6d\xcf\x6e\xcf\x6f\xcf\x70\xcf\x71\xcf\x72\xcf\x73\xcf\x74\xcf\x75\xcf\x76\xcf\x77\xcf\x78\xcf\x79\xcf\x7a\xcf\x7b\xcf\x7c\xcf\x7d\xcf\x7e\xcf\x7f\xcf\x80\xcf\x81\xcf\x82\xcf\x83\xcf\x84\xcf\x85\xcf\x86\xcf\x87\xce\x5c\xcf\x88\xcf\x89\xcf\x8a\xcf\x8b\xcf\x8c\xcf\x8d\xcf\x8e\xcf\x8f\xcf\x90\xcf\x91\xcf\x92\xcf\x93\xcf\x94\xcf\x95\xcf\x96\xcf\x97\xcf\x98\xcf\x99\xcf\x9a\xcf\x9b\xcf\x9c\xcf\x9d\xcf\x9e\xcf\x9f\xcf\xa0\xcf\xa1\xcf\xa2\xcf\xa3\xcf\xa4\xcf\xa5\xcf\xa6\xcf\xa7\xcf\xa8\xcf\xa9\xcf\xaa\xcf\xab\xcf\xac\xcf\xad\xcf\xae\xcf\xaf\xcf\xb0\xcf\xb1\xcf\xb2\xce\x5b\xcf\xb3\xcf\xb4\xcf\xb5\xcf\xb6\xcf\xb7\xcf\xb8\xcf\xb9\xcf\xba\xcf\xbb\xcf\xbc\xcf\xbd\xcf\xbe", /* 3480 */ "\xcf\xbf\xcf\xc0\xcf\xc1\xcf\xc2\xcf\xc3\xcf\xc4\xcf\xc5\xcf\xc6\xcf\xc7\xcf\xc8\xcf\xc9\xcf\xca\xcf\xcb\xcf\xcc\xcf\xcd\xcf\xce\xcf\xcf\xcf\xd0\xcf\xd1\xcf\xd2\xcf\xd3\xcf\xd4\xcf\xd5\xcf\xd6\xcf\xd7\xcf\xd8\xcf\xd9\xcf\xda\xcf\xdb\xcf\xdc\xcf\xdd\xcf\xde\xcf\xdf\xcf\xe0\xcf\xe1\xcf\xe2\xcf\xe3\xcf\xe4\xcf\xe5\xcf\xe6\xcf\xe7\xcf\xe8\xcf\xe9\xcf\xea\xcf\xeb\xcf\xec\xcf\xed\xcf\xee\xcf\xef\xcf\xf0\xcf\xf1\xcf\xf2\xcf\xf3\xcf\xf4\xcf\xf5\xcf\xf6\xcf\xf7\xcf\xf8\xcf\xf9\xcf\xfa\xcf\xfb\xcf\xfc\xcf\xfd\xcf\xfe\xd0\x41\xd0\x42\xd0\x43\xd0\x44\xd0\x45\xd0\x46\xd0\x47\xd0\x48\xd0\x49\xd0\x4a\xd0\x4b\xd0\x4c\xd0\x4d\xd0\x4e\xd0\x4f\xd0\x50\xd0\x51\xd0\x52\xd0\x53\xd0\x54\xd0\x55\xd0\x56\xd0\x57\xd0\x58\xd0\x59\xd0\x5a\xd0\x5b\xd0\x5c\xd0\x5d\xd0\x5e\xd0\x5f\xd0\x60\xd0\x61\xd0\x62\xd0\x63\xd0\x64\xd0\x65\xd0\x66\xd0\x67\xd0\x68\xd0\x69\xd0\x6a\xd0\x6b\xd0\x6c\xd0\x6d\xd0\x6e\xd0\x6f\xd0\x70\xd0\x71\xd0\x72\xd0\x73\xd0\x74\xd0\x75\xd0\x76\xd0\x77\xd0\x78\xd0\x79\xd0\x7a\xd0\x7b\xd0\x7c\xd0\x7d\xd0\x7e\xd0\x7f\xd0\x80", /* 3500 */ "\xd0\x81\xd0\x82\xd0\x83\xd0\x84\xd0\x85\xd0\x86\xd0\x87\xd0\x88\xd0\x89\xd0\x8a\xd0\x8b\xd0\x8c\xd0\x8d\xd0\x8e\xd0\x8f\xd0\x90\xd0\x91\xd0\x92\xd0\x93\xd0\x94\xd0\x95\xd0\x96\xd0\x97\xd0\x98\xd0\x99\xd0\x9a\xd0\x9b\xd0\x9c\xd0\x9d\xd0\x9e\xd0\x9f\xd0\xa0\xd0\xa1\xd0\xa2\xd0\xa3\xd0\xa4\xd0\xa5\xd0\xa6\xd0\xa7\xd0\xa8\xd0\xa9\xd0\xaa\xd0\xab\xd0\xac\xd0\xad\xd0\xae\xd0\xaf\xd0\xb0\xd0\xb1\xd0\xb2\xd0\xb3\xd0\xb4\xd0\xb5\xd0\xb6\xd0\xb7\xd0\xb8\xd0\xb9\xd0\xba\xd0\xbb\xd0\xbc\xd0\xbd\xd0\xbe\xd0\xbf\xd0\xc0\xd0\xc1\xd0\xc2\xd0\xc3\xd0\xc4\xd0\xc5\xd0\xc6\xd0\xc7\xd0\xc8\xd0\xc9\xd0\xca\xd0\xcb\xd0\xcc\xd0\xcd\xd0\xce\xd0\xcf\xd0\xd0\xd0\xd1\xd0\xd2\xd0\xd3\xd0\xd4\xd0\xd5\xd0\xd6\xd0\xd7\xd0\xd8\xd0\xd9\xd0\xda\xd0\xdb\xd0\xdc\xd0\xdd\xd0\xde\xd0\xdf\xd0\xe0\xd0\xe1\xd0\xe2\xd0\xe3\xd0\xe4\xd0\xe5\xd0\xe6\xd0\xe7\xd0\xe8\xd0\xe9\xd0\xea\xd0\xeb\xd0\xec\xd0\xed\xd0\xee\xd0\xef\xd0\xf0\xd0\xf1\xd0\xf2\xd0\xf3\xd0\xf4\xd0\xf5\xd0\xf6\xd0\xf7\xd0\xf8\xd0\xf9\xd0\xfa\xd0\xfb\xd0\xfc\xd0\xfd\xd0\xfe\xd1\x41\xd1\x42", /* 3580 */ "\xd1\x43\xd1\x44\xd1\x45\xd1\x46\xd1\x47\xd1\x48\xd1\x49\xd1\x4a\xd1\x4b\xd1\x4c\xd1\x4d\xd1\x4e\xd1\x4f\xd1\x50\xd1\x51\xd1\x52\xd1\x53\xd1\x54\xd1\x55\xd1\x56\xd1\x57\xd1\x58\xd1\x59\xd1\x5a\xd1\x5b\xd1\x5c\xd1\x5d\xd1\x5e\xd1\x5f\xd1\x60\xce\x60\xd1\x61\xd1\x62\xd1\x63\xd1\x64\xd1\x65\xd1\x66\xd1\x67\xd1\x68\xd1\x69\xd1\x6a\xd1\x6b\xd1\x6c\xd1\x6d\xd1\x6e\xd1\x6f\xd1\x70\xd1\x71\xd1\x72\xd1\x73\xd1\x74\xd1\x75\xd1\x76\xd1\x77\xd1\x78\xd1\x79\xd1\x7a\xd1\x7b\xd1\x7c\xd1\x7d\xd1\x7e\xd1\x7f\xd1\x80\xd1\x81\xd1\x82\xd1\x83\xd1\x84\xd1\x85\xd1\x86\xd1\x87\xd1\x88\xd1\x89\xd1\x8a\xd1\x8b\xd1\x8c\xd1\x8d\xd1\x8e\xd1\x8f\xd1\x90\xd1\x91\xd1\x92\xd1\x93\xd1\x94\xd1\x95\xd1\x96\xd1\x97\xd1\x98\xd1\x99\xd1\x9a\xd1\x9b\xd1\x9c\xd1\x9d\xd1\x9e\xd1\x9f\xd1\xa0\xd1\xa1\xd1\xa2\xd1\xa3\xd1\xa4\xd1\xa5\xd1\xa6\xd1\xa7\xd1\xa8\xd1\xa9\xd1\xaa\xd1\xab\xd1\xac\xd1\xad\xd1\xae\xd1\xaf\xd1\xb0\xd1\xb1\xd1\xb2\xd1\xb3\xd1\xb4\xd1\xb5\xd1\xb6\xd1\xb7\xd1\xb8\xd1\xb9\xd1\xba\xd1\xbb\xd1\xbc\xd1\xbd\xd1\xbe\xd1\xbf\xd1\xc0\xd1\xc1", /* 3600 */ "\xd1\xc2\xd1\xc3\xd1\xc4\xd1\xc5\xd1\xc6\xd1\xc7\xd1\xc8\xd1\xc9\xd1\xca\xd1\xcb\xd1\xcc\xd1\xcd\xd1\xce\xd1\xcf\xce\x62\xd1\xd0\xd1\xd1\xd1\xd2\xd1\xd3\xd1\xd4\xd1\xd5\xd1\xd6\xd1\xd7\xd1\xd8\xd1\xd9\xd1\xda\xce\x61\xd1\xdb\xd1\xdc\xd1\xdd\xd1\xde\xd1\xdf\xd1\xe0\xd1\xe1\xd1\xe2\xd1\xe3\xd1\xe4\xd1\xe5\xd1\xe6\xd1\xe7\xd1\xe8\xd1\xe9\xd1\xea\xd1\xeb\xd1\xec\xd1\xed\xd1\xee\xd1\xef\xd1\xf0\xd1\xf1\xd1\xf2\xd1\xf3\xd1\xf4\xd1\xf5\xd1\xf6\xd1\xf7\xd1\xf8\xd1\xf9\xd1\xfa\xd1\xfb\xd1\xfc\xd1\xfd\xd1\xfe\xd2\x41\xd2\x42\xd2\x43\xd2\x44\xd2\x45\xd2\x46\xd2\x47\xd2\x48\xd2\x49\xd2\x4a\xd2\x4b\xd2\x4c\xd2\x4d\xd2\x4e\xd2\x4f\xd2\x50\xd2\x51\xd2\x52\xd2\x53\xd2\x54\xd2\x55\xd2\x56\xd2\x57\xd2\x58\xd2\x59\xd2\x5a\xd2\x5b\xd2\x5c\xd2\x5d\xd2\x5e\xd2\x5f\xd2\x60\xd2\x61\xd2\x62\xd2\x63\xd2\x64\xd2\x65\xd2\x66\xd2\x67\xd2\x68\xd2\x69\xd2\x6a\xd2\x6b\xd2\x6c\xd2\x6d\xd2\x6e\xd2\x6f\xd2\x70\xd2\x71\xd2\x72\xd2\x73\xd2\x74\xd2\x75\xd2\x76\xd2\x77\xd2\x78\xd2\x79\xd2\x7a\xd2\x7b\xd2\x7c\xd2\x7d\xd2\x7e\xd2\x7f\xd2\x80\xd2\x81", /* 3680 */ "\xd2\x82\xd2\x83\xd2\x84\xd2\x85\xd2\x86\xd2\x87\xd2\x88\xd2\x89\xd2\x8a\xd2\x8b\xd2\x8c\xd2\x8d\xd2\x8e\xd2\x8f\xd2\x90\xd2\x91\xd2\x92\xd2\x93\xd2\x94\xd2\x95\xd2\x96\xd2\x97\xd2\x98\xd2\x99\xd2\x9a\xd2\x9b\xd2\x9c\xd2\x9d\xd2\x9e\xd2\x9f\xd2\xa0\xd2\xa1\xd2\xa2\xd2\xa3\xd2\xa4\xd2\xa5\xd2\xa6\xd2\xa7\xd2\xa8\xd2\xa9\xd2\xaa\xd2\xab\xd2\xac\xd2\xad\xd2\xae\xd2\xaf\xd2\xb0\xd2\xb1\xd2\xb2\xd2\xb3\xd2\xb4\xd2\xb5\xd2\xb6\xd2\xb7\xd2\xb8\xd2\xb9\xd2\xba\xd2\xbb\xd2\xbc\xd2\xbd\xd2\xbe\xd2\xbf\xd2\xc0\xd2\xc1\xd2\xc2\xd2\xc3\xd2\xc4\xd2\xc5\xd2\xc6\xd2\xc7\xd2\xc8\xd2\xc9\xd2\xca\xd2\xcb\xd2\xcc\xd2\xcd\xd2\xce\xd2\xcf\xd2\xd0\xd2\xd1\xd2\xd2\xd2\xd3\xd2\xd4\xd2\xd5\xd2\xd6\xd2\xd7\xd2\xd8\xd2\xd9\xd2\xda\xd2\xdb\xd2\xdc\xd2\xdd\xd2\xde\xd2\xdf\xd2\xe0\xd2\xe1\xd2\xe2\xd2\xe3\xd2\xe4\xd2\xe5\xd2\xe6\xd2\xe7\xd2\xe8\xd2\xe9\xd2\xea\xd2\xeb\xd2\xec\xd2\xed\xd2\xee\xd2\xef\xd2\xf0\xd2\xf1\xd2\xf2\xd2\xf3\xd2\xf4\xd2\xf5\xd2\xf6\xd2\xf7\xd2\xf8\xd2\xf9\xd2\xfa\xd2\xfb\xd2\xfc\xd2\xfd\xd2\xfe\xd3\x41\xd3\x42\xd3\x43", /* 3700 */ "\xd3\x44\xd3\x45\xd3\x46\xd3\x47\xd3\x48\xd3\x49\xd3\x4a\xd3\x4b\xd3\x4c\xd3\x4d\xd3\x4e\xd3\x4f\xd3\x50\xd3\x51\xd3\x52\xd3\x53\xd3\x54\xd3\x55\xd3\x56\xd3\x57\xd3\x58\xd3\x59\xd3\x5a\xd3\x5b\xd3\x5c\xd3\x5d\xd3\x5e\xd3\x5f\xd3\x60\xd3\x61\xd3\x62\xd3\x63\xd3\x64\xd3\x65\xd3\x66\xd3\x67\xd3\x68\xd3\x69\xd3\x6a\xd3\x6b\xd3\x6c\xd3\x6d\xd3\x6e\xd3\x6f\xd3\x70\xd3\x71\xd3\x72\xd3\x73\xd3\x74\xd3\x75\xd3\x76\xd3\x77\xd3\x78\xd3\x79\xd3\x7a\xd3\x7b\xd3\x7c\xd3\x7d\xd3\x7e\xd3\x7f\xd3\x80\xd3\x81\xd3\x82\xd3\x83\xd3\x84\xd3\x85\xd3\x86\xd3\x87\xd3\x88\xd3\x89\xd3\x8a\xd3\x8b\xd3\x8c\xd3\x8d\xd3\x8e\xd3\x8f\xd3\x90\xd3\x91\xd3\x92\xd3\x93\xd3\x94\xd3\x95\xd3\x96\xd3\x97\xd3\x98\xd3\x99\xd3\x9a\xd3\x9b\xd3\x9c\xd3\x9d\xd3\x9e\xd3\x9f\xd3\xa0\xd3\xa1\xd3\xa2\xd3\xa3\xd3\xa4\xd3\xa5\xd3\xa6\xd3\xa7\xd3\xa8\xd3\xa9\xd3\xaa\xd3\xab\xd3\xac\xd3\xad\xd3\xae\xd3\xaf\xd3\xb0\xd3\xb1\xd3\xb2\xd3\xb3\xd3\xb4\xd3\xb5\xd3\xb6\xd3\xb7\xd3\xb8\xd3\xb9\xd3\xba\xd3\xbb\xd3\xbc\xd3\xbd\xd3\xbe\xd3\xbf\xd3\xc0\xd3\xc1\xd3\xc2\xd3\xc3", /* 3780 */ "\xd3\xc4\xd3\xc5\xd3\xc6\xd3\xc7\xd3\xc8\xd3\xc9\xd3\xca\xd3\xcb\xd3\xcc\xd3\xcd\xd3\xce\xd3\xcf\xd3\xd0\xd3\xd1\xd3\xd2\xd3\xd3\xd3\xd4\xd3\xd5\xd3\xd6\xd3\xd7\xd3\xd8\xd3\xd9\xd3\xda\xd3\xdb\xd3\xdc\xd3\xdd\xd3\xde\xd3\xdf\xd3\xe0\xd3\xe1\xd3\xe2\xd3\xe3\xd3\xe4\xd3\xe5\xd3\xe6\xd3\xe7\xd3\xe8\xd3\xe9\xd3\xea\xd3\xeb\xd3\xec\xd3\xed\xd3\xee\xd3\xef\xd3\xf0\xd3\xf1\xd3\xf2\xd3\xf3\xd3\xf4\xd3\xf5\xd3\xf6\xd3\xf7\xd3\xf8\xd3\xf9\xd3\xfa\xd3\xfb\xd3\xfc\xd3\xfd\xd3\xfe\xd4\x41\xd4\x42\xd4\x43\xd4\x44\xd4\x45\xd4\x46\xd4\x47\xd4\x48\xd4\x49\xd4\x4a\xd4\x4b\xd4\x4c\xd4\x4d\xd4\x4e\xd4\x4f\xd4\x50\xd4\x51\xd4\x52\xd4\x53\xd4\x54\xd4\x55\xd4\x56\xd4\x57\xd4\x58\xd4\x59\xd4\x5a\xd4\x5b\xd4\x5c\xd4\x5d\xd4\x5e\xd4\x5f\xd4\x60\xd4\x61\xd4\x62\xd4\x63\xd4\x64\xd4\x65\xd4\x66\xd4\x67\xd4\x68\xd4\x69\xd4\x6a\xd4\x6b\xd4\x6c\xd4\x6d\xd4\x6e\xd4\x6f\xd4\x70\xd4\x71\xd4\x72\xd4\x73\xd4\x74\xd4\x75\xd4\x76\xd4\x77\xd4\x78\xd4\x79\xd4\x7a\xd4\x7b\xd4\x7c\xd4\x7d\xd4\x7e\xd4\x7f\xd4\x80\xd4\x81\xd4\x82\xd4\x83\xd4\x84\xd4\x85", /* 3800 */ "\xd4\x86\xd4\x87\xd4\x88\xd4\x89\xd4\x8a\xd4\x8b\xd4\x8c\xd4\x8d\xd4\x8e\xd4\x8f\xd4\x90\xd4\x91\xd4\x92\xd4\x93\xd4\x94\xd4\x95\xd4\x96\xd4\x97\xd4\x98\xd4\x99\xd4\x9a\xd4\x9b\xd4\x9c\xd4\x9d\xd4\x9e\xd4\x9f\xd4\xa0\xd4\xa1\xd4\xa2\xd4\xa3\xd4\xa4\xd4\xa5\xd4\xa6\xd4\xa7\xd4\xa8\xd4\xa9\xd4\xaa\xd4\xab\xd4\xac\xd4\xad\xd4\xae\xd4\xaf\xd4\xb0\xd4\xb1\xd4\xb2\xd4\xb3\xd4\xb4\xd4\xb5\xd4\xb6\xd4\xb7\xd4\xb8\xd4\xb9\xd4\xba\xd4\xbb\xd4\xbc\xd4\xbd\xd4\xbe\xd4\xbf\xd4\xc0\xd4\xc1\xd4\xc2\xd4\xc3\xd4\xc4\xd4\xc5\xd4\xc6\xd4\xc7\xd4\xc8\xd4\xc9\xd4\xca\xd4\xcb\xd4\xcc\xd4\xcd\xd4\xce\xd4\xcf\xd4\xd0\xd4\xd1\xd4\xd2\xd4\xd3\xd4\xd4\xd4\xd5\xd4\xd6\xd4\xd7\xd4\xd8\xd4\xd9\xd4\xda\xd4\xdb\xd4\xdc\xd4\xdd\xd4\xde\xd4\xdf\xd4\xe0\xd4\xe1\xd4\xe2\xd4\xe3\xd4\xe4\xd4\xe5\xd4\xe6\xd4\xe7\xd4\xe8\xd4\xe9\xd4\xea\xd4\xeb\xd4\xec\xd4\xed\xd4\xee\xd4\xef\xd4\xf0\xd4\xf1\xd4\xf2\xd4\xf3\xd4\xf4\xd4\xf5\xd4\xf6\xd4\xf7\xd4\xf8\xd4\xf9\xd4\xfa\xd4\xfb\xd4\xfc\xd4\xfd\xd4\xfe\xd5\x41\xd5\x42\xd5\x43\xd5\x44\xd5\x45\xd5\x46\xd5\x47", /* 3880 */ "\xd5\x48\xd5\x49\xd5\x4a\xd5\x4b\xd5\x4c\xd5\x4d\xd5\x4e\xd5\x4f\xd5\x50\xd5\x51\xd5\x52\xd5\x53\xd5\x54\xd5\x55\xd5\x56\xd5\x57\xd5\x58\xd5\x59\xd5\x5a\xd5\x5b\xd5\x5c\xd5\x5d\xd5\x5e\xd5\x5f\xd5\x60\xd5\x61\xd5\x62\xd5\x63\xd5\x64\xd5\x65\xd5\x66\xd5\x67\xd5\x68\xd5\x69\xd5\x6a\xd5\x6b\xd5\x6c\xd5\x6d\xd5\x6e\xd5\x6f\xd5\x70\xd5\x71\xd5\x72\xd5\x73\xd5\x74\xd5\x75\xd5\x76\xd5\x77\xd5\x78\xd5\x79\xd5\x7a\xd5\x7b\xd5\x7c\xd5\x7d\xd5\x7e\xd5\x7f\xd5\x80\xd5\x81\xd5\x82\xd5\x83\xd5\x84\xd5\x85\xd5\x86\xd5\x87\xd5\x88\xd5\x89\xd5\x8a\xd5\x8b\xd5\x8c\xd5\x8d\xd5\x8e\xd5\x8f\xd5\x90\xd5\x91\xd5\x92\xd5\x93\xd5\x94\xd5\x95\xd5\x96\xd5\x97\xd5\x98\xd5\x99\xd5\x9a\xd5\x9b\xd5\x9c\xd5\x9d\xd5\x9e\xd5\x9f\xd5\xa0\xd5\xa1\xd5\xa2\xd5\xa3\xd5\xa4\xd5\xa5\xd5\xa6\xd5\xa7\xd5\xa8\xd5\xa9\xd5\xaa\xd5\xab\xd5\xac\xd5\xad\xd5\xae\xd5\xaf\xd5\xb0\xd5\xb1\xd5\xb2\xd5\xb3\xd5\xb4\xd5\xb5\xd5\xb6\xd5\xb7\xd5\xb8\xd5\xb9\xd5\xba\xd5\xbb\xd5\xbc\xd5\xbd\xd5\xbe\xd5\xbf\xd5\xc0\xd5\xc1\xd5\xc2\xd5\xc3\xd5\xc4\xd5\xc5\xd5\xc6\xd5\xc7", /* 3900 */ "\xd5\xc8\xd5\xc9\xd5\xca\xd5\xcb\xd5\xcc\xd5\xcd\xd5\xce\xd5\xcf\xd5\xd0\xd5\xd1\xd5\xd2\xd5\xd3\xd5\xd4\xd5\xd5\xd5\xd6\xd5\xd7\xd5\xd8\xd5\xd9\xd5\xda\xd5\xdb\xd5\xdc\xd5\xdd\xd5\xde\xd5\xdf\xce\x66\xd5\xe0\xd5\xe1\xd5\xe2\xd5\xe3\xd5\xe4\xd5\xe5\xd5\xe6\xd5\xe7\xd5\xe8\xd5\xe9\xd5\xea\xd5\xeb\xd5\xec\xd5\xed\xd5\xee\xd5\xef\xd5\xf0\xd5\xf1\xd5\xf2\xd5\xf3\xd5\xf4\xd5\xf5\xd5\xf6\xd5\xf7\xd5\xf8\xd5\xf9\xd5\xfa\xd5\xfb\xd5\xfc\xd5\xfd\xd5\xfe\xd6\x41\xd6\x42\xd6\x43\xd6\x44\xd6\x45\xd6\x46\xd6\x47\xd6\x48\xd6\x49\xd6\x4a\xd6\x4b\xd6\x4c\xd6\x4d\xd6\x4e\xd6\x4f\xd6\x50\xd6\x51\xd6\x52\xd6\x53\xd6\x54\xd6\x55\xd6\x56\xd6\x57\xd6\x58\xd6\x59\xd6\x5a\xd6\x5b\xd6\x5c\xd6\x5d\xd6\x5e\xd6\x5f\xd6\x60\xd6\x61\xd6\x62\xd6\x63\xd6\x64\xd6\x65\xd6\x66\xd6\x67\xd6\x68\xd6\x69\xd6\x6a\xd6\x6b\xd6\x6c\xd6\x6d\xd6\x6e\xd6\x6f\xd6\x70\xd6\x71\xd6\x72\xd6\x73\xd6\x74\xd6\x75\xd6\x76\xce\x65\xd6\x77\xd6\x78\xd6\x79\xd6\x7a\xd6\x7b\xd6\x7c\xd6\x7d\xd6\x7e\xd6\x7f\xd6\x80\xd6\x81\xd6\x82\xd6\x83\xd6\x84\xd6\x85\xd6\x86\xd6\x87", /* 3980 */ "\xd6\x88\xd6\x89\xd6\x8a\xd6\x8b\xd6\x8c\xd6\x8d\xd6\x8e\xd6\x8f\xd6\x90\xd6\x91\xd6\x92\xd6\x93\xd6\x94\xd6\x95\xd6\x96\xd6\x97\xd6\x98\xd6\x99\xd6\x9a\xd6\x9b\xd6\x9c\xd6\x9d\xd6\x9e\xd6\x9f\xd6\xa0\xd6\xa1\xd6\xa2\xd6\xa3\xd6\xa4\xd6\xa5\xd6\xa6\xd6\xa7\xd6\xa8\xd6\xa9\xd6\xaa\xd6\xab\xd6\xac\xd6\xad\xd6\xae\xd6\xaf\xd6\xb0\xd6\xb1\xd6\xb2\xd6\xb3\xd6\xb4\xd6\xb5\xd6\xb6\xd6\xb7\xd6\xb8\xd6\xb9\xd6\xba\xd6\xbb\xd6\xbc\xd6\xbd\xd6\xbe\xd6\xbf\xd6\xc0\xd6\xc1\xd6\xc2\xd6\xc3\xd6\xc4\xd6\xc5\xd6\xc6\xd6\xc7\xd6\xc8\xd6\xc9\xd6\xca\xd6\xcb\xd6\xcc\xd6\xcd\xd6\xce\xd6\xcf\xd6\xd0\xd6\xd1\xd6\xd2\xd6\xd3\xd6\xd4\xd6\xd5\xd6\xd6\xce\x68\xce\x6b\xd6\xd7\xd6\xd8\xd6\xd9\xd6\xda\xd6\xdb\xd6\xdc\xd6\xdd\xd6\xde\xd6\xdf\xd6\xe0\xd6\xe1\xd6\xe2\xd6\xe3\xd6\xe4\xce\x69\xd6\xe5\xd6\xe6\xd6\xe7\xd6\xe8\xd6\xe9\xd6\xea\xd6\xeb\xd6\xec\xd6\xed\xd6\xee\xd6\xef\xd6\xf0\xd6\xf1\xd6\xf2\xd6\xf3\xd6\xf4\xd6\xf5\xd6\xf6\xd6\xf7\xd6\xf8\xd6\xf9\xd6\xfa\xd6\xfb\xd6\xfc\xd6\xfd\xd6\xfe\xd7\x41\xd7\x42\xd7\x43\xd7\x44\xd7\x45\xd7\x46", /* 3a00 */ "\xd7\x47\xd7\x48\xd7\x49\xd7\x4a\xd7\x4b\xd7\x4c\xd7\x4d\xd7\x4e\xd7\x4f\xd7\x50\xd7\x51\xd7\x52\xd7\x53\xd7\x54\xd7\x55\xd7\x56\xd7\x57\xd7\x58\xd7\x59\xd7\x5a\xd7\x5b\xd7\x5c\xd7\x5d\xd7\x5e\xd7\x5f\xd7\x60\xd7\x61\xd7\x62\xd7\x63\xd7\x64\xd7\x65\xd7\x66\xd7\x67\xd7\x68\xd7\x69\xd7\x6a\xd7\x6b\xd7\x6c\xd7\x6d\xd7\x6e\xd7\x6f\xd7\x70\xd7\x71\xd7\x72\xd7\x73\xd7\x74\xd7\x75\xd7\x76\xd7\x77\xd7\x78\xd7\x79\xd7\x7a\xd7\x7b\xd7\x7c\xd7\x7d\xd7\x7e\xd7\x7f\xd7\x80\xd7\x81\xd7\x82\xd7\x83\xd7\x84\xd7\x85\xd7\x86\xd7\x87\xd7\x88\xd7\x89\xd7\x8a\xd7\x8b\xd7\x8c\xd7\x8d\xd7\x8e\xd7\x8f\xd7\x90\xd7\x91\xd7\x92\xd7\x93\xd7\x94\xd7\x95\xd7\x96\xd7\x97\xd7\x98\xd7\x99\xd7\x9a\xd7\x9b\xd7\x9c\xd7\x9d\xd7\x9e\xd7\x9f\xd7\xa0\xd7\xa1\xd7\xa2\xd7\xa3\xd7\xa4\xd7\xa5\xd7\xa6\xd7\xa7\xd7\xa8\xd7\xa9\xd7\xaa\xd7\xab\xd7\xac\xd7\xad\xd7\xae\xd7\xaf\xd7\xb0\xd7\xb1\xd7\xb2\xd7\xb3\xd7\xb4\xd7\xb5\xd7\xb6\xd7\xb7\xd7\xb8\xd7\xb9\xce\x6a\xd7\xba\xd7\xbb\xd7\xbc\xd7\xbd\xd7\xbe\xd7\xbf\xd7\xc0\xd7\xc1\xd7\xc2\xd7\xc3\xd7\xc4\xd7\xc5", /* 3a80 */ "\xd7\xc6\xd7\xc7\xd7\xc8\xd7\xc9\xd7\xca\xd7\xcb\xd7\xcc\xd7\xcd\xd7\xce\xd7\xcf\xd7\xd0\xd7\xd1\xd7\xd2\xd7\xd3\xd7\xd4\xd7\xd5\xd7\xd6\xd7\xd7\xd7\xd8\xd7\xd9\xd7\xda\xd7\xdb\xd7\xdc\xd7\xdd\xd7\xde\xd7\xdf\xd7\xe0\xd7\xe1\xd7\xe2\xd7\xe3\xd7\xe4\xd7\xe5\xd7\xe6\xd7\xe7\xd7\xe8\xd7\xe9\xd7\xea\xd7\xeb\xd7\xec\xd7\xed\xd7\xee\xd7\xef\xd7\xf0\xd7\xf1\xd7\xf2\xd7\xf3\xd7\xf4\xd7\xf5\xd7\xf6\xd7\xf7\xd7\xf8\xd7\xf9\xd7\xfa\xd7\xfb\xd7\xfc\xd7\xfd\xd7\xfe\xd8\x41\xd8\x42\xd8\x43\xd8\x44\xd8\x45\xd8\x46\xd8\x47\xd8\x48\xd8\x49\xd8\x4a\xd8\x4b\xd8\x4c\xd8\x4d\xd8\x4e\xd8\x4f\xd8\x50\xd8\x51\xd8\x52\xd8\x53\xd8\x54\xd8\x55\xd8\x56\xd8\x57\xd8\x58\xd8\x59\xd8\x5a\xd8\x5b\xd8\x5c\xd8\x5d\xd8\x5e\xd8\x5f\xd8\x60\xd8\x61\xd8\x62\xd8\x63\xd8\x64\xd8\x65\xd8\x66\xd8\x67\xd8\x68\xd8\x69\xd8\x6a\xd8\x6b\xd8\x6c\xd8\x6d\xd8\x6e\xd8\x6f\xd8\x70\xd8\x71\xd8\x72\xd8\x73\xd8\x74\xd8\x75\xd8\x76\xd8\x77\xd8\x78\xd8\x79\xd8\x7a\xd8\x7b\xd8\x7c\xd8\x7d\xd8\x7e\xd8\x7f\xd8\x80\xd8\x81\xd8\x82\xd8\x83\xd8\x84\xd8\x85\xd8\x86\xd8\x87", /* 3b00 */ "\xd8\x88\xd8\x89\xd8\x8a\xd8\x8b\xd8\x8c\xd8\x8d\xd8\x8e\xd8\x8f\xd8\x90\xd8\x91\xd8\x92\xd8\x93\xd8\x94\xd8\x95\xd8\x96\xd8\x97\xd8\x98\xd8\x99\xd8\x9a\xd8\x9b\xd8\x9c\xd8\x9d\xd8\x9e\xd8\x9f\xd8\xa0\xd8\xa1\xd8\xa2\xd8\xa3\xd8\xa4\xd8\xa5\xd8\xa6\xd8\xa7\xd8\xa8\xd8\xa9\xd8\xaa\xd8\xab\xd8\xac\xd8\xad\xd8\xae\xd8\xaf\xd8\xb0\xd8\xb1\xd8\xb2\xd8\xb3\xd8\xb4\xd8\xb5\xd8\xb6\xd8\xb7\xd8\xb8\xd8\xb9\xd8\xba\xd8\xbb\xd8\xbc\xd8\xbd\xd8\xbe\xd8\xbf\xd8\xc0\xd8\xc1\xd8\xc2\xd8\xc3\xd8\xc4\xd8\xc5\xd8\xc6\xd8\xc7\xd8\xc8\xd8\xc9\xd8\xca\xd8\xcb\xd8\xcc\xd8\xcd\xd8\xce\xd8\xcf\xd8\xd0\xd8\xd1\xd8\xd2\xd8\xd3\xd8\xd4\xd8\xd5\xce\x6e\xd8\xd6\xd8\xd7\xd8\xd8\xd8\xd9\xd8\xda\xd8\xdb\xd8\xdc\xd8\xdd\xd8\xde\xd8\xdf\xd8\xe0\xd8\xe1\xd8\xe2\xd8\xe3\xd8\xe4\xd8\xe5\xd8\xe6\xd8\xe7\xd8\xe8\xd8\xe9\xd8\xea\xd8\xeb\xd8\xec\xd8\xed\xd8\xee\xd8\xef\xd8\xf0\xd8\xf1\xd8\xf2\xd8\xf3\xd8\xf4\xd8\xf5\xd8\xf6\xd8\xf7\xd8\xf8\xd8\xf9\xd8\xfa\xd8\xfb\xd8\xfc\xd8\xfd\xd8\xfe\xd9\x41\xd9\x42\xd9\x43\xd9\x44\xd9\x45\xd9\x46\xd9\x47\xd9\x48", /* 3b80 */ "\xd9\x49\xd9\x4a\xd9\x4b\xd9\x4c\xd9\x4d\xd9\x4e\xd9\x4f\xd9\x50\xd9\x51\xd9\x52\xd9\x53\xd9\x54\xd9\x55\xd9\x56\xd9\x57\xd9\x58\xd9\x59\xd9\x5a\xd9\x5b\xd9\x5c\xd9\x5d\xd9\x5e\xd9\x5f\xd9\x60\xd9\x61\xd9\x62\xd9\x63\xd9\x64\xd9\x65\xd9\x66\xd9\x67\xd9\x68\xd9\x69\xd9\x6a\xd9\x6b\xd9\x6c\xd9\x6d\xd9\x6e\xd9\x6f\xd9\x70\xd9\x71\xd9\x72\xd9\x73\xd9\x74\xd9\x75\xd9\x76\xd9\x77\xd9\x78\xd9\x79\xd9\x7a\xd9\x7b\xd9\x7c\xd9\x7d\xd9\x7e\xd9\x7f\xd9\x80\xd9\x81\xd9\x82\xd9\x83\xd9\x84\xd9\x85\xd9\x86\xd9\x87\xd9\x88\xd9\x89\xd9\x8a\xd9\x8b\xd9\x8c\xd9\x8d\xd9\x8e\xd9\x8f\xd9\x90\xd9\x91\xd9\x92\xd9\x93\xd9\x94\xd9\x95\xd9\x96\xd9\x97\xd9\x98\xd9\x99\xd9\x9a\xd9\x9b\xd9\x9c\xd9\x9d\xd9\x9e\xd9\x9f\xd9\xa0\xd9\xa1\xd9\xa2\xd9\xa3\xd9\xa4\xd9\xa5\xd9\xa6\xd9\xa7\xd9\xa8\xd9\xa9\xd9\xaa\xd9\xab\xd9\xac\xd9\xad\xd9\xae\xd9\xaf\xd9\xb0\xd9\xb1\xd9\xb2\xd9\xb3\xd9\xb4\xd9\xb5\xd9\xb6\xd9\xb7\xd9\xb8\xd9\xb9\xd9\xba\xd9\xbb\xd9\xbc\xd9\xbd\xd9\xbe\xd9\xbf\xd9\xc0\xd9\xc1\xd9\xc2\xd9\xc3\xd9\xc4\xd9\xc5\xd9\xc6\xd9\xc7\xd9\xc8", /* 3c00 */ "\xd9\xc9\xd9\xca\xd9\xcb\xd9\xcc\xd9\xcd\xd9\xce\xd9\xcf\xd9\xd0\xd9\xd1\xd9\xd2\xd9\xd3\xd9\xd4\xd9\xd5\xd9\xd6\xd9\xd7\xd9\xd8\xd9\xd9\xd9\xda\xd9\xdb\xd9\xdc\xd9\xdd\xd9\xde\xd9\xdf\xd9\xe0\xd9\xe1\xd9\xe2\xd9\xe3\xd9\xe4\xd9\xe5\xd9\xe6\xd9\xe7\xd9\xe8\xd9\xe9\xd9\xea\xd9\xeb\xd9\xec\xd9\xed\xd9\xee\xd9\xef\xd9\xf0\xd9\xf1\xd9\xf2\xd9\xf3\xd9\xf4\xd9\xf5\xd9\xf6\xd9\xf7\xd9\xf8\xd9\xf9\xd9\xfa\xd9\xfb\xd9\xfc\xd9\xfd\xd9\xfe\xda\x41\xda\x42\xda\x43\xda\x44\xda\x45\xda\x46\xda\x47\xda\x48\xda\x49\xda\x4a\xda\x4b\xda\x4c\xda\x4d\xda\x4e\xda\x4f\xda\x50\xda\x51\xda\x52\xda\x53\xda\x54\xda\x55\xda\x56\xda\x57\xda\x58\xda\x59\xda\x5a\xda\x5b\xda\x5c\xda\x5d\xda\x5e\xda\x5f\xda\x60\xda\x61\xda\x62\xda\x63\xda\x64\xda\x65\xda\x66\xda\x67\xda\x68\xda\x69\xda\x6a\xda\x6b\xda\x6c\xda\x6d\xda\x6e\xda\x6f\xda\x70\xda\x71\xda\x72\xda\x73\xda\x74\xda\x75\xda\x76\xda\x77\xda\x78\xce\x6f\xda\x79\xda\x7a\xda\x7b\xda\x7c\xda\x7d\xda\x7e\xda\x7f\xda\x80\xda\x81\xda\x82\xda\x83\xda\x84\xda\x85\xda\x86\xda\x87\xda\x88\xda\x89", /* 3c80 */ "\xda\x8a\xda\x8b\xda\x8c\xda\x8d\xda\x8e\xda\x8f\xda\x90\xda\x91\xda\x92\xda\x93\xda\x94\xda\x95\xda\x96\xda\x97\xda\x98\xda\x99\xda\x9a\xda\x9b\xda\x9c\xda\x9d\xda\x9e\xda\x9f\xda\xa0\xda\xa1\xda\xa2\xda\xa3\xda\xa4\xda\xa5\xda\xa6\xda\xa7\xda\xa8\xda\xa9\xda\xaa\xda\xab\xda\xac\xda\xad\xda\xae\xda\xaf\xda\xb0\xda\xb1\xda\xb2\xda\xb3\xda\xb4\xda\xb5\xda\xb6\xda\xb7\xda\xb8\xda\xb9\xda\xba\xda\xbb\xda\xbc\xda\xbd\xda\xbe\xda\xbf\xda\xc0\xda\xc1\xda\xc2\xda\xc3\xda\xc4\xda\xc5\xda\xc6\xda\xc7\xda\xc8\xda\xc9\xda\xca\xda\xcb\xda\xcc\xda\xcd\xda\xce\xda\xcf\xda\xd0\xda\xd1\xda\xd2\xda\xd3\xda\xd4\xda\xd5\xda\xd6\xda\xd7\xda\xd8\xda\xd9\xda\xda\xda\xdb\xda\xdc\xda\xdd\xda\xde\xda\xdf\xda\xe0\xda\xe1\xda\xe2\xda\xe3\xda\xe4\xda\xe5\xda\xe6\xda\xe7\xda\xe8\xda\xe9\xce\x70\xda\xea\xda\xeb\xda\xec\xda\xed\xda\xee\xda\xef\xda\xf0\xda\xf1\xda\xf2\xda\xf3\xda\xf4\xda\xf5\xda\xf6\xda\xf7\xda\xf8\xda\xf9\xda\xfa\xda\xfb\xda\xfc\xda\xfd\xda\xfe\xdb\x41\xdb\x42\xdb\x43\xdb\x44\xdb\x45\xdb\x46\xdb\x47\xdb\x48\xdb\x49\xdb\x4a", /* 3d00 */ "\xdb\x4b\xdb\x4c\xdb\x4d\xdb\x4e\xdb\x4f\xdb\x50\xdb\x51\xdb\x52\xdb\x53\xdb\x54\xdb\x55\xdb\x56\xdb\x57\xdb\x58\xdb\x59\xdb\x5a\xdb\x5b\xdb\x5c\xdb\x5d\xdb\x5e\xdb\x5f\xdb\x60\xdb\x61\xdb\x62\xdb\x63\xdb\x64\xdb\x65\xdb\x66\xdb\x67\xdb\x68\xdb\x69\xdb\x6a\xdb\x6b\xdb\x6c\xdb\x6d\xdb\x6e\xdb\x6f\xdb\x70\xdb\x71\xdb\x72\xdb\x73\xdb\x74\xdb\x75\xdb\x76\xdb\x77\xdb\x78\xdb\x79\xdb\x7a\xdb\x7b\xdb\x7c\xdb\x7d\xdb\x7e\xdb\x7f\xdb\x80\xdb\x81\xdb\x82\xdb\x83\xdb\x84\xdb\x85\xdb\x86\xdb\x87\xdb\x88\xdb\x89\xdb\x8a\xdb\x8b\xdb\x8c\xdb\x8d\xdb\x8e\xdb\x8f\xdb\x90\xdb\x91\xdb\x92\xdb\x93\xdb\x94\xdb\x95\xdb\x96\xdb\x97\xdb\x98\xdb\x99\xdb\x9a\xdb\x9b\xdb\x9c\xdb\x9d\xdb\x9e\xdb\x9f\xdb\xa0\xdb\xa1\xdb\xa2\xdb\xa3\xdb\xa4\xdb\xa5\xdb\xa6\xdb\xa7\xdb\xa8\xdb\xa9\xdb\xaa\xdb\xab\xdb\xac\xdb\xad\xdb\xae\xdb\xaf\xdb\xb0\xdb\xb1\xdb\xb2\xdb\xb3\xdb\xb4\xdb\xb5\xdb\xb6\xdb\xb7\xdb\xb8\xdb\xb9\xdb\xba\xdb\xbb\xdb\xbc\xdb\xbd\xdb\xbe\xdb\xbf\xdb\xc0\xdb\xc1\xdb\xc2\xdb\xc3\xdb\xc4\xdb\xc5\xdb\xc6\xdb\xc7\xdb\xc8\xdb\xc9\xdb\xca", /* 3d80 */ "\xdb\xcb\xdb\xcc\xdb\xcd\xdb\xce\xdb\xcf\xdb\xd0\xdb\xd1\xdb\xd2\xdb\xd3\xdb\xd4\xdb\xd5\xdb\xd6\xdb\xd7\xdb\xd8\xdb\xd9\xdb\xda\xdb\xdb\xdb\xdc\xdb\xdd\xdb\xde\xdb\xdf\xdb\xe0\xdb\xe1\xdb\xe2\xdb\xe3\xdb\xe4\xdb\xe5\xdb\xe6\xdb\xe7\xdb\xe8\xdb\xe9\xdb\xea\xdb\xeb\xdb\xec\xdb\xed\xdb\xee\xdb\xef\xdb\xf0\xdb\xf1\xdb\xf2\xdb\xf3\xdb\xf4\xdb\xf5\xdb\xf6\xdb\xf7\xdb\xf8\xdb\xf9\xdb\xfa\xdb\xfb\xdb\xfc\xdb\xfd\xdb\xfe\xdc\x41\xdc\x42\xdc\x43\xdc\x44\xdc\x45\xdc\x46\xdc\x47\xdc\x48\xdc\x49\xdc\x4a\xdc\x4b\xdc\x4c\xdc\x4d\xdc\x4e\xdc\x4f\xdc\x50\xdc\x51\xdc\x52\xdc\x53\xdc\x54\xdc\x55\xdc\x56\xdc\x57\xdc\x58\xdc\x59\xdc\x5a\xdc\x5b\xdc\x5c\xdc\x5d\xdc\x5e\xdc\x5f\xdc\x60\xdc\x61\xdc\x62\xdc\x63\xdc\x64\xdc\x65\xdc\x66\xdc\x67\xdc\x68\xdc\x69\xdc\x6a\xdc\x6b\xdc\x6c\xdc\x6d\xdc\x6e\xdc\x6f\xdc\x70\xdc\x71\xdc\x72\xdc\x73\xdc\x74\xdc\x75\xdc\x76\xdc\x77\xdc\x78\xdc\x79\xdc\x7a\xdc\x7b\xdc\x7c\xdc\x7d\xdc\x7e\xdc\x7f\xdc\x80\xdc\x81\xdc\x82\xdc\x83\xdc\x84\xdc\x85\xdc\x86\xdc\x87\xdc\x88\xdc\x89\xdc\x8a\xdc\x8b\xdc\x8c", /* 3e00 */ "\xdc\x8d\xdc\x8e\xdc\x8f\xdc\x90\xdc\x91\xdc\x92\xdc\x93\xdc\x94\xdc\x95\xdc\x96\xdc\x97\xdc\x98\xdc\x99\xdc\x9a\xdc\x9b\xdc\x9c\xdc\x9d\xdc\x9e\xdc\x9f\xdc\xa0\xdc\xa1\xdc\xa2\xdc\xa3\xdc\xa4\xdc\xa5\xdc\xa6\xdc\xa7\xdc\xa8\xdc\xa9\xdc\xaa\xdc\xab\xdc\xac\xdc\xad\xdc\xae\xdc\xaf\xdc\xb0\xdc\xb1\xdc\xb2\xdc\xb3\xdc\xb4\xdc\xb5\xdc\xb6\xdc\xb7\xdc\xb8\xdc\xb9\xdc\xba\xdc\xbb\xdc\xbc\xdc\xbd\xdc\xbe\xdc\xbf\xdc\xc0\xdc\xc1\xdc\xc2\xdc\xc3\xdc\xc4\xdc\xc5\xdc\xc6\xdc\xc7\xdc\xc8\xdc\xc9\xdc\xca\xdc\xcb\xdc\xcc\xdc\xcd\xdc\xce\xdc\xcf\xdc\xd0\xdc\xd1\xdc\xd2\xdc\xd3\xdc\xd4\xdc\xd5\xdc\xd6\xdc\xd7\xdc\xd8\xdc\xd9\xdc\xda\xdc\xdb\xdc\xdc\xdc\xdd\xdc\xde\xdc\xdf\xdc\xe0\xdc\xe1\xdc\xe2\xdc\xe3\xdc\xe4\xdc\xe5\xdc\xe6\xdc\xe7\xdc\xe8\xdc\xe9\xdc\xea\xdc\xeb\xdc\xec\xdc\xed\xdc\xee\xdc\xef\xdc\xf0\xdc\xf1\xdc\xf2\xdc\xf3\xdc\xf4\xdc\xf5\xdc\xf6\xdc\xf7\xdc\xf8\xdc\xf9\xdc\xfa\xdc\xfb\xdc\xfc\xdc\xfd\xdc\xfe\xdd\x41\xdd\x42\xdd\x43\xdd\x44\xdd\x45\xdd\x46\xdd\x47\xdd\x48\xdd\x49\xdd\x4a\xdd\x4b\xdd\x4c\xdd\x4d\xdd\x4e", /* 3e80 */ "\xdd\x4f\xdd\x50\xdd\x51\xdd\x52\xdd\x53\xdd\x54\xdd\x55\xdd\x56\xdd\x57\xdd\x58\xdd\x59\xdd\x5a\xdd\x5b\xdd\x5c\xdd\x5d\xdd\x5e\xdd\x5f\xdd\x60\xdd\x61\xdd\x62\xdd\x63\xdd\x64\xdd\x65\xdd\x66\xdd\x67\xdd\x68\xdd\x69\xdd\x6a\xdd\x6b\xdd\x6c\xdd\x6d\xdd\x6e\xdd\x6f\xdd\x70\xdd\x71\xdd\x72\xdd\x73\xdd\x74\xdd\x75\xdd\x76\xdd\x77\xdd\x78\xdd\x79\xdd\x7a\xdd\x7b\xdd\x7c\xdd\x7d\xdd\x7e\xdd\x7f\xdd\x80\xdd\x81\xdd\x82\xdd\x83\xdd\x84\xdd\x85\xdd\x86\xdd\x87\xdd\x88\xdd\x89\xdd\x8a\xdd\x8b\xdd\x8c\xdd\x8d\xdd\x8e\xdd\x8f\xdd\x90\xdd\x91\xdd\x92\xdd\x93\xdd\x94\xdd\x95\xdd\x96\xdd\x97\xdd\x98\xdd\x99\xdd\x9a\xdd\x9b\xdd\x9c\xdd\x9d\xdd\x9e\xdd\x9f\xdd\xa0\xdd\xa1\xdd\xa2\xdd\xa3\xdd\xa4\xdd\xa5\xdd\xa6\xdd\xa7\xdd\xa8\xdd\xa9\xdd\xaa\xdd\xab\xdd\xac\xdd\xad\xdd\xae\xdd\xaf\xdd\xb0\xdd\xb1\xdd\xb2\xdd\xb3\xdd\xb4\xdd\xb5\xdd\xb6\xdd\xb7\xdd\xb8\xdd\xb9\xdd\xba\xdd\xbb\xdd\xbc\xdd\xbd\xdd\xbe\xdd\xbf\xdd\xc0\xdd\xc1\xdd\xc2\xdd\xc3\xdd\xc4\xdd\xc5\xdd\xc6\xdd\xc7\xdd\xc8\xdd\xc9\xdd\xca\xdd\xcb\xdd\xcc\xdd\xcd\xdd\xce", /* 3f00 */ "\xdd\xcf\xdd\xd0\xdd\xd1\xdd\xd2\xdd\xd3\xdd\xd4\xdd\xd5\xdd\xd6\xdd\xd7\xdd\xd8\xdd\xd9\xdd\xda\xdd\xdb\xdd\xdc\xdd\xdd\xdd\xde\xdd\xdf\xdd\xe0\xdd\xe1\xdd\xe2\xdd\xe3\xdd\xe4\xdd\xe5\xdd\xe6\xdd\xe7\xdd\xe8\xdd\xe9\xdd\xea\xdd\xeb\xdd\xec\xdd\xed\xdd\xee\xdd\xef\xdd\xf0\xdd\xf1\xdd\xf2\xdd\xf3\xdd\xf4\xdd\xf5\xdd\xf6\xdd\xf7\xdd\xf8\xdd\xf9\xdd\xfa\xdd\xfb\xdd\xfc\xdd\xfd\xdd\xfe\xde\x41\xde\x42\xde\x43\xde\x44\xde\x45\xde\x46\xde\x47\xde\x48\xde\x49\xde\x4a\xde\x4b\xde\x4c\xde\x4d\xde\x4e\xde\x4f\xde\x50\xde\x51\xde\x52\xde\x53\xde\x54\xde\x55\xde\x56\xde\x57\xde\x58\xde\x59\xde\x5a\xde\x5b\xde\x5c\xde\x5d\xde\x5e\xde\x5f\xde\x60\xde\x61\xde\x62\xde\x63\xde\x64\xde\x65\xde\x66\xde\x67\xde\x68\xde\x69\xde\x6a\xde\x6b\xde\x6c\xde\x6d\xde\x6e\xde\x6f\xde\x70\xde\x71\xde\x72\xde\x73\xde\x74\xde\x75\xde\x76\xde\x77\xde\x78\xde\x79\xde\x7a\xde\x7b\xde\x7c\xde\x7d\xde\x7e\xde\x7f\xde\x80\xde\x81\xde\x82\xde\x83\xde\x84\xde\x85\xde\x86\xde\x87\xde\x88\xde\x89\xde\x8a\xde\x8b\xde\x8c\xde\x8d\xde\x8e\xde\x8f\xde\x90", /* 3f80 */ "\xde\x91\xde\x92\xde\x93\xde\x94\xde\x95\xde\x96\xde\x97\xde\x98\xde\x99\xde\x9a\xde\x9b\xde\x9c\xde\x9d\xde\x9e\xde\x9f\xde\xa0\xde\xa1\xde\xa2\xde\xa3\xde\xa4\xde\xa5\xde\xa6\xde\xa7\xde\xa8\xde\xa9\xde\xaa\xde\xab\xde\xac\xde\xad\xde\xae\xde\xaf\xde\xb0\xde\xb1\xde\xb2\xde\xb3\xde\xb4\xde\xb5\xde\xb6\xde\xb7\xde\xb8\xde\xb9\xde\xba\xde\xbb\xde\xbc\xde\xbd\xde\xbe\xde\xbf\xde\xc0\xde\xc1\xde\xc2\xde\xc3\xde\xc4\xde\xc5\xde\xc6\xde\xc7\xde\xc8\xde\xc9\xde\xca\xde\xcb\xde\xcc\xde\xcd\xde\xce\xde\xcf\xde\xd0\xde\xd1\xde\xd2\xde\xd3\xde\xd4\xde\xd5\xde\xd6\xde\xd7\xde\xd8\xde\xd9\xde\xda\xde\xdb\xde\xdc\xde\xdd\xde\xde\xde\xdf\xde\xe0\xde\xe1\xde\xe2\xde\xe3\xde\xe4\xde\xe5\xde\xe6\xde\xe7\xde\xe8\xde\xe9\xde\xea\xde\xeb\xde\xec\xde\xed\xde\xee\xde\xef\xde\xf0\xde\xf1\xde\xf2\xde\xf3\xde\xf4\xde\xf5\xde\xf6\xde\xf7\xde\xf8\xde\xf9\xde\xfa\xde\xfb\xde\xfc\xde\xfd\xde\xfe\xdf\x41\xdf\x42\xdf\x43\xdf\x44\xdf\x45\xdf\x46\xdf\x47\xdf\x48\xdf\x49\xdf\x4a\xdf\x4b\xdf\x4c\xdf\x4d\xdf\x4e\xdf\x4f\xdf\x50\xdf\x51\xdf\x52", /* 4000 */ "\xdf\x53\xdf\x54\xdf\x55\xdf\x56\xdf\x57\xdf\x58\xdf\x59\xdf\x5a\xdf\x5b\xdf\x5c\xdf\x5d\xdf\x5e\xdf\x5f\xdf\x60\xdf\x61\xdf\x62\xdf\x63\xdf\x64\xdf\x65\xdf\x66\xdf\x67\xdf\x68\xdf\x69\xdf\x6a\xdf\x6b\xdf\x6c\xdf\x6d\xdf\x6e\xdf\x6f\xdf\x70\xdf\x71\xdf\x72\xdf\x73\xdf\x74\xdf\x75\xdf\x76\xdf\x77\xdf\x78\xdf\x79\xdf\x7a\xdf\x7b\xdf\x7c\xdf\x7d\xdf\x7e\xdf\x7f\xdf\x80\xdf\x81\xdf\x82\xdf\x83\xdf\x84\xdf\x85\xdf\x86\xdf\x87\xdf\x88\xdf\x89\xdf\x8a\xdf\x8b\xdf\x8c\xdf\x8d\xdf\x8e\xdf\x8f\xdf\x90\xdf\x91\xdf\x92\xdf\x93\xdf\x94\xdf\x95\xdf\x96\xdf\x97\xdf\x98\xdf\x99\xdf\x9a\xdf\x9b\xdf\x9c\xdf\x9d\xdf\x9e\xdf\x9f\xdf\xa0\xdf\xa1\xdf\xa2\xdf\xa3\xdf\xa4\xdf\xa5\xdf\xa6\xdf\xa7\xdf\xa8\xce\x75\xdf\xa9\xdf\xaa\xdf\xab\xdf\xac\xdf\xad\xdf\xae\xdf\xaf\xdf\xb0\xdf\xb1\xdf\xb2\xdf\xb3\xdf\xb4\xdf\xb5\xdf\xb6\xdf\xb7\xdf\xb8\xdf\xb9\xdf\xba\xdf\xbb\xdf\xbc\xdf\xbd\xdf\xbe\xdf\xbf\xdf\xc0\xdf\xc1\xdf\xc2\xdf\xc3\xdf\xc4\xdf\xc5\xdf\xc6\xdf\xc7\xdf\xc8\xdf\xc9\xdf\xca\xdf\xcb\xdf\xcc\xdf\xcd\xdf\xce\xdf\xcf\xdf\xd0\xdf\xd1", /* 4080 */ "\xdf\xd2\xdf\xd3\xdf\xd4\xdf\xd5\xdf\xd6\xdf\xd7\xdf\xd8\xdf\xd9\xdf\xda\xdf\xdb\xdf\xdc\xdf\xdd\xdf\xde\xdf\xdf\xdf\xe0\xdf\xe1\xdf\xe2\xdf\xe3\xdf\xe4\xdf\xe5\xdf\xe6\xdf\xe7\xdf\xe8\xdf\xe9\xdf\xea\xdf\xeb\xdf\xec\xdf\xed\xdf\xee\xdf\xef\xdf\xf0\xdf\xf1\xdf\xf2\xdf\xf3\xdf\xf4\xdf\xf5\xdf\xf6\xdf\xf7\xdf\xf8\xdf\xf9\xdf\xfa\xdf\xfb\xdf\xfc\xdf\xfd\xdf\xfe\xe0\x41\xe0\x42\xe0\x43\xe0\x44\xe0\x45\xe0\x46\xe0\x47\xe0\x48\xe0\x49\xe0\x4a\xe0\x4b\xe0\x4c\xe0\x4d\xe0\x4e\xe0\x4f\xe0\x50\xe0\x51\xe0\x52\xe0\x53\xe0\x54\xe0\x55\xe0\x56\xe0\x57\xe0\x58\xe0\x59\xe0\x5a\xe0\x5b\xe0\x5c\xe0\x5d\xe0\x5e\xe0\x5f\xe0\x60\xe0\x61\xe0\x62\xe0\x63\xe0\x64\xe0\x65\xe0\x66\xe0\x67\xe0\x68\xe0\x69\xe0\x6a\xe0\x6b\xe0\x6c\xe0\x6d\xe0\x6e\xe0\x6f\xe0\x70\xe0\x71\xe0\x72\xe0\x73\xe0\x74\xe0\x75\xe0\x76\xe0\x77\xe0\x78\xe0\x79\xe0\x7a\xe0\x7b\xe0\x7c\xe0\x7d\xe0\x7e\xe0\x7f\xe0\x80\xe0\x81\xe0\x82\xe0\x83\xe0\x84\xe0\x85\xe0\x86\xe0\x87\xe0\x88\xe0\x89\xe0\x8a\xe0\x8b\xe0\x8c\xe0\x8d\xe0\x8e\xe0\x8f\xe0\x90\xe0\x91\xe0\x92\xe0\x93", /* 4100 */ "\xe0\x94\xe0\x95\xe0\x96\xe0\x97\xe0\x98\xe0\x99\xe0\x9a\xe0\x9b\xe0\x9c\xe0\x9d\xe0\x9e\xe0\x9f\xe0\xa0\xe0\xa1\xe0\xa2\xe0\xa3\xe0\xa4\xe0\xa5\xe0\xa6\xe0\xa7\xe0\xa8\xe0\xa9\xe0\xaa\xe0\xab\xe0\xac\xe0\xad\xe0\xae\xe0\xaf\xe0\xb0\xe0\xb1\xe0\xb2\xe0\xb3\xe0\xb4\xe0\xb5\xe0\xb6\xe0\xb7\xe0\xb8\xe0\xb9\xe0\xba\xe0\xbb\xe0\xbc\xe0\xbd\xe0\xbe\xe0\xbf\xe0\xc0\xe0\xc1\xe0\xc2\xe0\xc3\xe0\xc4\xe0\xc5\xe0\xc6\xe0\xc7\xe0\xc8\xe0\xc9\xe0\xca\xe0\xcb\xe0\xcc\xe0\xcd\xe0\xce\xe0\xcf\xe0\xd0\xe0\xd1\xe0\xd2\xe0\xd3\xe0\xd4\xe0\xd5\xe0\xd6\xe0\xd7\xe0\xd8\xe0\xd9\xe0\xda\xe0\xdb\xe0\xdc\xe0\xdd\xe0\xde\xe0\xdf\xe0\xe0\xe0\xe1\xe0\xe2\xe0\xe3\xe0\xe4\xe0\xe5\xe0\xe6\xe0\xe7\xe0\xe8\xe0\xe9\xe0\xea\xe0\xeb\xe0\xec\xe0\xed\xe0\xee\xe0\xef\xe0\xf0\xe0\xf1\xe0\xf2\xce\x76\xe0\xf3\xe0\xf4\xe0\xf5\xe0\xf6\xe0\xf7\xe0\xf8\xe0\xf9\xe0\xfa\xe0\xfb\xe0\xfc\xe0\xfd\xe0\xfe\xe1\x41\xe1\x42\xe1\x43\xe1\x44\xe1\x45\xe1\x46\xe1\x47\xe1\x48\xe1\x49\xe1\x4a\xe1\x4b\xe1\x4c\xe1\x4d\xe1\x4e\xe1\x4f\xe1\x50\xe1\x51\xe1\x52\xe1\x53\xe1\x54", /* 4180 */ "\xe1\x55\xe1\x56\xe1\x57\xe1\x58\xe1\x59\xe1\x5a\xe1\x5b\xe1\x5c\xe1\x5d\xe1\x5e\xe1\x5f\xe1\x60\xe1\x61\xe1\x62\xe1\x63\xe1\x64\xe1\x65\xe1\x66\xe1\x67\xe1\x68\xe1\x69\xe1\x6a\xe1\x6b\xe1\x6c\xe1\x6d\xe1\x6e\xe1\x6f\xe1\x70\xe1\x71\xe1\x72\xe1\x73\xe1\x74\xe1\x75\xe1\x76\xe1\x77\xe1\x78\xe1\x79\xe1\x7a\xe1\x7b\xe1\x7c\xe1\x7d\xe1\x7e\xe1\x7f\xe1\x80\xe1\x81\xe1\x82\xe1\x83\xe1\x84\xe1\x85\xe1\x86\xe1\x87\xe1\x88\xe1\x89\xe1\x8a\xe1\x8b\xe1\x8c\xe1\x8d\xe1\x8e\xe1\x8f\xe1\x90\xe1\x91\xe1\x92\xe1\x93\xe1\x94\xe1\x95\xe1\x96\xe1\x97\xe1\x98\xe1\x99\xe1\x9a\xe1\x9b\xe1\x9c\xe1\x9d\xe1\x9e\xe1\x9f\xe1\xa0\xe1\xa1\xe1\xa2\xe1\xa3\xe1\xa4\xe1\xa5\xe1\xa6\xe1\xa7\xe1\xa8\xe1\xa9\xe1\xaa\xe1\xab\xe1\xac\xe1\xad\xe1\xae\xe1\xaf\xe1\xb0\xe1\xb1\xe1\xb2\xe1\xb3\xe1\xb4\xe1\xb5\xe1\xb6\xe1\xb7\xe1\xb8\xe1\xb9\xe1\xba\xe1\xbb\xe1\xbc\xe1\xbd\xe1\xbe\xe1\xbf\xe1\xc0\xe1\xc1\xe1\xc2\xe1\xc3\xe1\xc4\xe1\xc5\xe1\xc6\xe1\xc7\xe1\xc8\xe1\xc9\xe1\xca\xe1\xcb\xe1\xcc\xe1\xcd\xe1\xce\xe1\xcf\xe1\xd0\xe1\xd1\xe1\xd2\xe1\xd3\xe1\xd4", /* 4200 */ "\xe1\xd5\xe1\xd6\xe1\xd7\xe1\xd8\xe1\xd9\xe1\xda\xe1\xdb\xe1\xdc\xe1\xdd\xe1\xde\xe1\xdf\xe1\xe0\xe1\xe1\xe1\xe2\xe1\xe3\xe1\xe4\xe1\xe5\xe1\xe6\xe1\xe7\xe1\xe8\xe1\xe9\xe1\xea\xe1\xeb\xe1\xec\xe1\xed\xe1\xee\xe1\xef\xe1\xf0\xe1\xf1\xe1\xf2\xe1\xf3\xe1\xf4\xe1\xf5\xe1\xf6\xe1\xf7\xe1\xf8\xe1\xf9\xe1\xfa\xe1\xfb\xe1\xfc\xe1\xfd\xe1\xfe\xe2\x41\xe2\x42\xe2\x43\xe2\x44\xe2\x45\xe2\x46\xe2\x47\xe2\x48\xe2\x49\xe2\x4a\xe2\x4b\xe2\x4c\xe2\x4d\xe2\x4e\xe2\x4f\xe2\x50\xe2\x51\xe2\x52\xe2\x53\xe2\x54\xe2\x55\xe2\x56\xe2\x57\xe2\x58\xe2\x59\xe2\x5a\xe2\x5b\xe2\x5c\xe2\x5d\xe2\x5e\xe2\x5f\xe2\x60\xe2\x61\xe2\x62\xe2\x63\xe2\x64\xe2\x65\xe2\x66\xe2\x67\xe2\x68\xe2\x69\xe2\x6a\xe2\x6b\xe2\x6c\xe2\x6d\xe2\x6e\xe2\x6f\xe2\x70\xe2\x71\xe2\x72\xe2\x73\xe2\x74\xe2\x75\xe2\x76\xe2\x77\xe2\x78\xe2\x79\xe2\x7a\xe2\x7b\xe2\x7c\xe2\x7d\xe2\x7e\xe2\x7f\xe2\x80\xe2\x81\xe2\x82\xe2\x83\xe2\x84\xe2\x85\xe2\x86\xe2\x87\xe2\x88\xe2\x89\xe2\x8a\xe2\x8b\xe2\x8c\xe2\x8d\xe2\x8e\xe2\x8f\xe2\x90\xe2\x91\xe2\x92\xe2\x93\xe2\x94\xe2\x95\xe2\x96", /* 4280 */ "\xe2\x97\xe2\x98\xe2\x99\xe2\x9a\xe2\x9b\xe2\x9c\xe2\x9d\xe2\x9e\xe2\x9f\xe2\xa0\xe2\xa1\xe2\xa2\xe2\xa3\xe2\xa4\xe2\xa5\xe2\xa6\xe2\xa7\xe2\xa8\xe2\xa9\xe2\xaa\xe2\xab\xe2\xac\xe2\xad\xe2\xae\xe2\xaf\xe2\xb0\xe2\xb1\xe2\xb2\xe2\xb3\xe2\xb4\xe2\xb5\xe2\xb6\xe2\xb7\xe2\xb8\xe2\xb9\xe2\xba\xe2\xbb\xe2\xbc\xe2\xbd\xe2\xbe\xe2\xbf\xe2\xc0\xe2\xc1\xe2\xc2\xe2\xc3\xe2\xc4\xe2\xc5\xe2\xc6\xe2\xc7\xe2\xc8\xe2\xc9\xe2\xca\xe2\xcb\xe2\xcc\xe2\xcd\xe2\xce\xe2\xcf\xe2\xd0\xe2\xd1\xe2\xd2\xe2\xd3\xe2\xd4\xe2\xd5\xe2\xd6\xe2\xd7\xe2\xd8\xe2\xd9\xe2\xda\xe2\xdb\xe2\xdc\xe2\xdd\xe2\xde\xe2\xdf\xe2\xe0\xe2\xe1\xe2\xe2\xe2\xe3\xe2\xe4\xe2\xe5\xe2\xe6\xe2\xe7\xe2\xe8\xe2\xe9\xe2\xea\xe2\xeb\xe2\xec\xe2\xed\xe2\xee\xe2\xef\xe2\xf0\xe2\xf1\xe2\xf2\xe2\xf3\xe2\xf4\xe2\xf5\xe2\xf6\xe2\xf7\xe2\xf8\xe2\xf9\xe2\xfa\xe2\xfb\xe2\xfc\xe2\xfd\xe2\xfe\xe3\x41\xe3\x42\xe3\x43\xe3\x44\xe3\x45\xe3\x46\xe3\x47\xe3\x48\xe3\x49\xe3\x4a\xe3\x4b\xe3\x4c\xe3\x4d\xe3\x4e\xe3\x4f\xe3\x50\xe3\x51\xe3\x52\xe3\x53\xe3\x54\xe3\x55\xe3\x56\xe3\x57\xe3\x58", /* 4300 */ "\xe3\x59\xe3\x5a\xe3\x5b\xe3\x5c\xe3\x5d\xe3\x5e\xe3\x5f\xe3\x60\xe3\x61\xe3\x62\xe3\x63\xe3\x64\xe3\x65\xe3\x66\xe3\x67\xe3\x68\xe3\x69\xe3\x6a\xe3\x6b\xe3\x6c\xe3\x6d\xe3\x6e\xe3\x6f\xe3\x70\xe3\x71\xe3\x72\xe3\x73\xe3\x74\xe3\x75\xe3\x76\xe3\x77\xe3\x78\xe3\x79\xe3\x7a\xe3\x7b\xe3\x7c\xe3\x7d\xe3\x7e\xe3\x7f\xe3\x80\xe3\x81\xe3\x82\xe3\x83\xe3\x84\xe3\x85\xe3\x86\xe3\x87\xe3\x88\xe3\x89\xe3\x8a\xe3\x8b\xe3\x8c\xe3\x8d\xe3\x8e\xe3\x8f\xce\x78\xe3\x90\xe3\x91\xe3\x92\xe3\x93\xe3\x94\xe3\x95\xe3\x96\xe3\x97\xe3\x98\xe3\x99\xe3\x9a\xe3\x9b\xe3\x9c\xe3\x9d\xe3\x9e\xe3\x9f\xe3\xa0\xe3\xa1\xe3\xa2\xe3\xa3\xe3\xa4\xe3\xa5\xe3\xa6\xe3\xa7\xe3\xa8\xe3\xa9\xe3\xaa\xe3\xab\xe3\xac\xe3\xad\xe3\xae\xe3\xaf\xe3\xb0\xe3\xb1\xe3\xb2\xe3\xb3\xe3\xb4\xe3\xb5\xe3\xb6\xe3\xb7\xe3\xb8\xe3\xb9\xe3\xba\xe3\xbb\xe3\xbc\xe3\xbd\xe3\xbe\xe3\xbf\xe3\xc0\xe3\xc1\xe3\xc2\xe3\xc3\xe3\xc4\xe3\xc5\xe3\xc6\xe3\xc7\xe3\xc8\xe3\xc9\xe3\xca\xe3\xcb\xe3\xcc\xe3\xcd\xe3\xce\xe3\xcf\xe3\xd0\xe3\xd1\xe3\xd2\xe3\xd3\xe3\xd4\xe3\xd5\xe3\xd6\xe3\xd7", /* 4380 */ "\xe3\xd8\xe3\xd9\xe3\xda\xe3\xdb\xe3\xdc\xe3\xdd\xe3\xde\xe3\xdf\xe3\xe0\xe3\xe1\xe3\xe2\xe3\xe3\xe3\xe4\xe3\xe5\xe3\xe6\xe3\xe7\xe3\xe8\xe3\xe9\xe3\xea\xe3\xeb\xe3\xec\xe3\xed\xe3\xee\xe3\xef\xe3\xf0\xe3\xf1\xe3\xf2\xe3\xf3\xe3\xf4\xe3\xf5\xe3\xf6\xe3\xf7\xe3\xf8\xe3\xf9\xe3\xfa\xe3\xfb\xe3\xfc\xe3\xfd\xe3\xfe\xe4\x41\xe4\x42\xe4\x43\xe4\x44\xe4\x45\xce\x7e\xe4\x46\xe4\x47\xe4\x48\xe4\x49\xce\x7d\xe4\x4a\xe4\x4b\xe4\x4c\xe4\x4d\xe4\x4e\xe4\x4f\xe4\x50\xe4\x51\xe4\x52\xe4\x53\xe4\x54\xe4\x55\xe4\x56\xe4\x57\xe4\x58\xe4\x59\xe4\x5a\xe4\x5b\xe4\x5c\xe4\x5d\xe4\x5e\xe4\x5f\xe4\x60\xe4\x61\xe4\x62\xe4\x63\xe4\x64\xe4\x65\xe4\x66\xe4\x67\xe4\x68\xe4\x69\xe4\x6a\xe4\x6b\xe4\x6c\xe4\x6d\xe4\x6e\xe4\x6f\xe4\x70\xe4\x71\xe4\x72\xe4\x73\xe4\x74\xce\x81\xe4\x75\xe4\x76\xe4\x77\xe4\x78\xe4\x79\xe4\x7a\xe4\x7b\xe4\x7c\xe4\x7d\xe4\x7e\xe4\x7f\xe4\x80\xe4\x81\xe4\x82\xe4\x83\xe4\x84\xe4\x85\xe4\x86\xe4\x87\xe4\x88\xe4\x89\xe4\x8a\xe4\x8b\xe4\x8c\xe4\x8d\xe4\x8e\xe4\x8f\xe4\x90\xe4\x91\xe4\x92\xe4\x93\xe4\x94\xe4\x95\xe4\x96", /* 4400 */ "\xe4\x97\xe4\x98\xe4\x99\xe4\x9a\xe4\x9b\xe4\x9c\xe4\x9d\xe4\x9e\xe4\x9f\xe4\xa0\xe4\xa1\xe4\xa2\xe4\xa3\xe4\xa4\xe4\xa5\xe4\xa6\xe4\xa7\xe4\xa8\xe4\xa9\xe4\xaa\xe4\xab\xe4\xac\xe4\xad\xe4\xae\xe4\xaf\xe4\xb0\xe4\xb1\xe4\xb2\xe4\xb3\xe4\xb4\xe4\xb5\xe4\xb6\xe4\xb7\xe4\xb8\xe4\xb9\xe4\xba\xe4\xbb\xe4\xbc\xe4\xbd\xe4\xbe\xe4\xbf\xe4\xc0\xe4\xc1\xe4\xc2\xe4\xc3\xe4\xc4\xe4\xc5\xe4\xc6\xe4\xc7\xe4\xc8\xe4\xc9\xe4\xca\xe4\xcb\xe4\xcc\xe4\xcd\xe4\xce\xe4\xcf\xe4\xd0\xe4\xd1\xe4\xd2\xe4\xd3\xe4\xd4\xe4\xd5\xe4\xd6\xe4\xd7\xe4\xd8\xe4\xd9\xe4\xda\xe4\xdb\xe4\xdc\xe4\xdd\xe4\xde\xe4\xdf\xe4\xe0\xe4\xe1\xe4\xe2\xe4\xe3\xe4\xe4\xe4\xe5\xe4\xe6\xe4\xe7\xe4\xe8\xe4\xe9\xe4\xea\xe4\xeb\xe4\xec\xe4\xed\xe4\xee\xe4\xef\xe4\xf0\xe4\xf1\xe4\xf2\xe4\xf3\xe4\xf4\xe4\xf5\xe4\xf6\xe4\xf7\xe4\xf8\xe4\xf9\xe4\xfa\xe4\xfb\xe4\xfc\xe4\xfd\xe4\xfe\xe5\x41\xe5\x42\xe5\x43\xe5\x44\xe5\x45\xe5\x46\xe5\x47\xe5\x48\xe5\x49\xe5\x4a\xe5\x4b\xe5\x4c\xe5\x4d\xe5\x4e\xe5\x4f\xe5\x50\xe5\x51\xe5\x52\xe5\x53\xe5\x54\xe5\x55\xe5\x56\xe5\x57\xe5\x58", /* 4480 */ "\xe5\x59\xe5\x5a\xe5\x5b\xe5\x5c\xe5\x5d\xe5\x5e\xe5\x5f\xe5\x60\xe5\x61\xe5\x62\xe5\x63\xe5\x64\xe5\x65\xe5\x66\xe5\x67\xe5\x68\xe5\x69\xe5\x6a\xe5\x6b\xe5\x6c\xe5\x6d\xe5\x6e\xe5\x6f\xe5\x70\xe5\x71\xe5\x72\xe5\x73\xe5\x74\xe5\x75\xe5\x76\xe5\x77\xe5\x78\xe5\x79\xe5\x7a\xe5\x7b\xe5\x7c\xe5\x7d\xe5\x7e\xe5\x7f\xe5\x80\xe5\x81\xe5\x82\xe5\x83\xe5\x84\xe5\x85\xe5\x86\xe5\x87\xe5\x88\xe5\x89\xe5\x8a\xe5\x8b\xe5\x8c\xe5\x8d\xe5\x8e\xe5\x8f\xe5\x90\xe5\x91\xe5\x92\xe5\x93\xe5\x94\xe5\x95\xe5\x96\xe5\x97\xe5\x98\xe5\x99\xe5\x9a\xe5\x9b\xe5\x9c\xe5\x9d\xe5\x9e\xe5\x9f\xe5\xa0\xe5\xa1\xe5\xa2\xe5\xa3\xe5\xa4\xe5\xa5\xe5\xa6\xe5\xa7\xe5\xa8\xe5\xa9\xe5\xaa\xe5\xab\xe5\xac\xe5\xad\xe5\xae\xce\x82\xe5\xaf\xe5\xb0\xe5\xb1\xe5\xb2\xe5\xb3\xe5\xb4\xe5\xb5\xe5\xb6\xe5\xb7\xe5\xb8\xe5\xb9\xe5\xba\xe5\xbb\xe5\xbc\xe5\xbd\xe5\xbe\xe5\xbf\xe5\xc0\xe5\xc1\xe5\xc2\xe5\xc3\xe5\xc4\xe5\xc5\xe5\xc6\xe5\xc7\xe5\xc8\xe5\xc9\xe5\xca\xe5\xcb\xe5\xcc\xe5\xcd\xe5\xce\xe5\xcf\xe5\xd0\xe5\xd1\xe5\xd2\xe5\xd3\xe5\xd4\xe5\xd5\xe5\xd6\xe5\xd7", /* 4500 */ "\xe5\xd8\xe5\xd9\xe5\xda\xe5\xdb\xe5\xdc\xe5\xdd\xe5\xde\xe5\xdf\xe5\xe0\xe5\xe1\xe5\xe2\xe5\xe3\xe5\xe4\xe5\xe5\xe5\xe6\xe5\xe7\xe5\xe8\xe5\xe9\xe5\xea\xe5\xeb\xe5\xec\xe5\xed\xe5\xee\xe5\xef\xe5\xf0\xe5\xf1\xe5\xf2\xe5\xf3\xe5\xf4\xe5\xf5\xe5\xf6\xe5\xf7\xe5\xf8\xe5\xf9\xe5\xfa\xe5\xfb\xe5\xfc\xe5\xfd\xe5\xfe\xe6\x41\xe6\x42\xe6\x43\xe6\x44\xe6\x45\xe6\x46\xe6\x47\xe6\x48\xe6\x49\xe6\x4a\xe6\x4b\xe6\x4c\xe6\x4d\xe6\x4e\xe6\x4f\xe6\x50\xe6\x51\xe6\x52\xe6\x53\xe6\x54\xe6\x55\xe6\x56\xe6\x57\xe6\x58\xe6\x59\xe6\x5a\xe6\x5b\xe6\x5c\xe6\x5d\xe6\x5e\xe6\x5f\xe6\x60\xe6\x61\xe6\x62\xe6\x63\xe6\x64\xe6\x65\xe6\x66\xe6\x67\xe6\x68\xe6\x69\xe6\x6a\xe6\x6b\xe6\x6c\xe6\x6d\xe6\x6e\xe6\x6f\xe6\x70\xe6\x71\xe6\x72\xe6\x73\xe6\x74\xe6\x75\xe6\x76\xe6\x77\xe6\x78\xe6\x79\xe6\x7a\xe6\x7b\xe6\x7c\xe6\x7d\xe6\x7e\xe6\x7f\xe6\x80\xe6\x81\xe6\x82\xe6\x83\xe6\x84\xe6\x85\xe6\x86\xe6\x87\xe6\x88\xe6\x89\xe6\x8a\xe6\x8b\xe6\x8c\xe6\x8d\xe6\x8e\xe6\x8f\xe6\x90\xe6\x91\xe6\x92\xe6\x93\xe6\x94\xe6\x95\xe6\x96\xe6\x97\xe6\x98\xe6\x99", /* 4580 */ "\xe6\x9a\xe6\x9b\xe6\x9c\xe6\x9d\xe6\x9e\xe6\x9f\xe6\xa0\xe6\xa1\xe6\xa2\xe6\xa3\xe6\xa4\xe6\xa5\xe6\xa6\xe6\xa7\xe6\xa8\xe6\xa9\xe6\xaa\xe6\xab\xe6\xac\xe6\xad\xe6\xae\xe6\xaf\xe6\xb0\xe6\xb1\xe6\xb2\xe6\xb3\xe6\xb4\xe6\xb5\xe6\xb6\xe6\xb7\xe6\xb8\xe6\xb9\xe6\xba\xe6\xbb\xe6\xbc\xe6\xbd\xe6\xbe\xe6\xbf\xe6\xc0\xe6\xc1\xe6\xc2\xe6\xc3\xe6\xc4\xe6\xc5\xe6\xc6\xe6\xc7\xe6\xc8\xe6\xc9\xe6\xca\xe6\xcb\xe6\xcc\xe6\xcd\xe6\xce\xe6\xcf\xe6\xd0\xe6\xd1\xe6\xd2\xe6\xd3\xe6\xd4\xe6\xd5\xe6\xd6\xe6\xd7\xe6\xd8\xe6\xd9\xe6\xda\xe6\xdb\xe6\xdc\xe6\xdd\xe6\xde\xe6\xdf\xe6\xe0\xe6\xe1\xe6\xe2\xe6\xe3\xe6\xe4\xe6\xe5\xe6\xe6\xe6\xe7\xe6\xe8\xe6\xe9\xe6\xea\xe6\xeb\xe6\xec\xe6\xed\xe6\xee\xe6\xef\xe6\xf0\xe6\xf1\xe6\xf2\xe6\xf3\xe6\xf4\xe6\xf5\xe6\xf6\xe6\xf7\xe6\xf8\xe6\xf9\xe6\xfa\xe6\xfb\xe6\xfc\xe6\xfd\xe6\xfe\xe7\x41\xe7\x42\xe7\x43\xe7\x44\xe7\x45\xe7\x46\xe7\x47\xe7\x48\xe7\x49\xe7\x4a\xe7\x4b\xe7\x4c\xe7\x4d\xe7\x4e\xe7\x4f\xe7\x50\xe7\x51\xe7\x52\xe7\x53\xe7\x54\xe7\x55\xe7\x56\xe7\x57\xe7\x58\xe7\x59\xe7\x5a\xe7\x5b", /* 4600 */ "\xe7\x5c\xe7\x5d\xe7\x5e\xe7\x5f\xe7\x60\xe7\x61\xe7\x62\xe7\x63\xe7\x64\xe7\x65\xe7\x66\xe7\x67\xe7\x68\xe7\x69\xe7\x6a\xe7\x6b\xe7\x6c\xe7\x6d\xe7\x6e\xe7\x6f\xe7\x70\xe7\x71\xe7\x72\xe7\x73\xe7\x74\xe7\x75\xe7\x76\xe7\x77\xe7\x78\xe7\x79\xe7\x7a\xe7\x7b\xe7\x7c\xe7\x7d\xe7\x7e\xe7\x7f\xe7\x80\xe7\x81\xe7\x82\xe7\x83\xe7\x84\xe7\x85\xe7\x86\xe7\x87\xe7\x88\xe7\x89\xe7\x8a\xe7\x8b\xe7\x8c\xe7\x8d\xe7\x8e\xe7\x8f\xe7\x90\xe7\x91\xe7\x92\xe7\x93\xe7\x94\xe7\x95\xe7\x96\xe7\x97\xe7\x98\xe7\x99\xe7\x9a\xe7\x9b\xe7\x9c\xe7\x9d\xe7\x9e\xe7\x9f\xe7\xa0\xe7\xa1\xe7\xa2\xe7\xa3\xe7\xa4\xe7\xa5\xe7\xa6\xe7\xa7\xce\x84\xe7\xa8\xe7\xa9\xe7\xaa\xe7\xab\xe7\xac\xe7\xad\xe7\xae\xe7\xaf\xe7\xb0\xe7\xb1\xe7\xb2\xe7\xb3\xe7\xb4\xe7\xb5\xe7\xb6\xe7\xb7\xe7\xb8\xe7\xb9\xe7\xba\xe7\xbb\xce\x83\xe7\xbc\xe7\xbd\xe7\xbe\xe7\xbf\xe7\xc0\xe7\xc1\xe7\xc2\xe7\xc3\xe7\xc4\xe7\xc5\xe7\xc6\xe7\xc7\xe7\xc8\xe7\xc9\xe7\xca\xe7\xcb\xe7\xcc\xe7\xcd\xe7\xce\xe7\xcf\xe7\xd0\xe7\xd1\xe7\xd2\xe7\xd3\xe7\xd4\xe7\xd5\xe7\xd6\xe7\xd7\xe7\xd8\xe7\xd9", /* 4680 */ "\xe7\xda\xe7\xdb\xe7\xdc\xe7\xdd\xe7\xde\xe7\xdf\xe7\xe0\xe7\xe1\xe7\xe2\xe7\xe3\xe7\xe4\xe7\xe5\xe7\xe6\xe7\xe7\xe7\xe8\xe7\xe9\xe7\xea\xe7\xeb\xe7\xec\xe7\xed\xe7\xee\xe7\xef\xe7\xf0\xe7\xf1\xe7\xf2\xe7\xf3\xe7\xf4\xe7\xf5\xe7\xf6\xe7\xf7\xe7\xf8\xe7\xf9\xe7\xfa\xe7\xfb\xe7\xfc\xe7\xfd\xe7\xfe\xe8\x41\xe8\x42\xe8\x43\xe8\x44\xe8\x45\xe8\x46\xe8\x47\xe8\x48\xe8\x49\xe8\x4a\xe8\x4b\xe8\x4c\xe8\x4d\xe8\x4e\xe8\x4f\xe8\x50\xe8\x51\xe8\x52\xe8\x53\xe8\x54\xe8\x55\xe8\x56\xe8\x57\xe8\x58\xe8\x59\xe8\x5a\xe8\x5b\xe8\x5c\xe8\x5d\xe8\x5e\xe8\x5f\xe8\x60\xe8\x61\xe8\x62\xe8\x63\xe8\x64\xe8\x65\xe8\x66\xe8\x67\xe8\x68\xe8\x69\xe8\x6a\xe8\x6b\xe8\x6c\xe8\x6d\xe8\x6e\xe8\x6f\xe8\x70\xe8\x71\xe8\x72\xe8\x73\xe8\x74\xe8\x75\xe8\x76\xe8\x77\xe8\x78\xe8\x79\xe8\x7a\xe8\x7b\xe8\x7c\xe8\x7d\xe8\x7e\xe8\x7f\xe8\x80\xe8\x81\xe8\x82\xe8\x83\xe8\x84\xe8\x85\xe8\x86\xe8\x87\xe8\x88\xe8\x89\xe8\x8a\xe8\x8b\xe8\x8c\xe8\x8d\xe8\x8e\xe8\x8f\xe8\x90\xe8\x91\xe8\x92\xe8\x93\xe8\x94\xe8\x95\xe8\x96\xe8\x97\xe8\x98\xe8\x99\xe8\x9a\xe8\x9b", /* 4700 */ "\xe8\x9c\xe8\x9d\xe8\x9e\xe8\x9f\xe8\xa0\xe8\xa1\xe8\xa2\xe8\xa3\xe8\xa4\xe8\xa5\xe8\xa6\xe8\xa7\xe8\xa8\xe8\xa9\xe8\xaa\xe8\xab\xe8\xac\xe8\xad\xe8\xae\xe8\xaf\xe8\xb0\xe8\xb1\xe8\xb2\xe8\xb3\xe8\xb4\xe8\xb5\xe8\xb6\xe8\xb7\xe8\xb8\xe8\xb9\xe8\xba\xe8\xbb\xe8\xbc\xe8\xbd\xe8\xbe\xce\x86\xe8\xbf\xe8\xc0\xe8\xc1\xe8\xc2\xe8\xc3\xce\x87\xe8\xc4\xe8\xc5\xe8\xc6\xe8\xc7\xe8\xc8\xe8\xc9\xe8\xca\xe8\xcb\xe8\xcc\xe8\xcd\xe8\xce\xe8\xcf\xe8\xd0\xe8\xd1\xe8\xd2\xe8\xd3\xe8\xd4\xe8\xd5\xe8\xd6\xe8\xd7\xe8\xd8\xe8\xd9\xe8\xda\xe8\xdb\xe8\xdc\xe8\xdd\xe8\xde\xe8\xdf\xe8\xe0\xe8\xe1\xe8\xe2\xe8\xe3\xe8\xe4\xe8\xe5\xe8\xe6\xe8\xe7\xe8\xe8\xe8\xe9\xe8\xea\xe8\xeb\xe8\xec\xe8\xed\xe8\xee\xe8\xef\xe8\xf0\xe8\xf1\xe8\xf2\xe8\xf3\xe8\xf4\xe8\xf5\xe8\xf6\xe8\xf7\xe8\xf8\xe8\xf9\xe8\xfa\xe8\xfb\xe8\xfc\xe8\xfd\xe8\xfe\xe9\x41\xe9\x42\xe9\x43\xe9\x44\xe9\x45\xe9\x46\xe9\x47\xe9\x48\xe9\x49\xe9\x4a\xe9\x4b\xe9\x4c\xe9\x4d\xe9\x4e\xe9\x4f\xe9\x50\xe9\x51\xe9\x52\xe9\x53\xe9\x54\xe9\x55\xe9\x56\xe9\x57\xce\x88\xe9\x58\xe9\x59\xe9\x5a", /* 4780 */ "\xe9\x5b\xe9\x5c\xe9\x5d\xe9\x5e\xe9\x5f\xe9\x60\xe9\x61\xe9\x62\xe9\x63\xe9\x64\xe9\x65\xe9\x66\xe9\x67\xce\x89\xe9\x68\xe9\x69\xe9\x6a\xe9\x6b\xe9\x6c\xe9\x6d\xe9\x6e\xe9\x6f\xe9\x70\xe9\x71\xe9\x72\xe9\x73\xe9\x74\xe9\x75\xe9\x76\xe9\x77\xe9\x78\xe9\x79\xe9\x7a\xe9\x7b\xe9\x7c\xe9\x7d\xe9\x7e\xe9\x7f\xe9\x80\xe9\x81\xe9\x82\xe9\x83\xe9\x84\xe9\x85\xe9\x86\xe9\x87\xe9\x88\xe9\x89\xe9\x8a\xe9\x8b\xe9\x8c\xe9\x8d\xe9\x8e\xe9\x8f\xe9\x90\xe9\x91\xe9\x92\xe9\x93\xe9\x94\xe9\x95\xe9\x96\xe9\x97\xe9\x98\xe9\x99\xe9\x9a\xe9\x9b\xe9\x9c\xe9\x9d\xe9\x9e\xe9\x9f\xe9\xa0\xe9\xa1\xe9\xa2\xe9\xa3\xe9\xa4\xe9\xa5\xe9\xa6\xe9\xa7\xe9\xa8\xe9\xa9\xe9\xaa\xe9\xab\xe9\xac\xe9\xad\xe9\xae\xe9\xaf\xe9\xb0\xe9\xb1\xe9\xb2\xe9\xb3\xe9\xb4\xe9\xb5\xe9\xb6\xe9\xb7\xe9\xb8\xe9\xb9\xe9\xba\xe9\xbb\xe9\xbc\xe9\xbd\xe9\xbe\xe9\xbf\xe9\xc0\xe9\xc1\xe9\xc2\xe9\xc3\xe9\xc4\xe9\xc5\xe9\xc6\xe9\xc7\xe9\xc8\xe9\xc9\xe9\xca\xe9\xcb\xe9\xcc\xe9\xcd\xe9\xce\xe9\xcf\xe9\xd0\xe9\xd1\xe9\xd2\xe9\xd3\xe9\xd4\xe9\xd5\xe9\xd6\xe9\xd7\xe9\xd8\xe9\xd9", /* 4800 */ "\xe9\xda\xe9\xdb\xe9\xdc\xe9\xdd\xe9\xde\xe9\xdf\xe9\xe0\xe9\xe1\xe9\xe2\xe9\xe3\xe9\xe4\xe9\xe5\xe9\xe6\xe9\xe7\xe9\xe8\xe9\xe9\xe9\xea\xe9\xeb\xe9\xec\xe9\xed\xe9\xee\xe9\xef\xe9\xf0\xe9\xf1\xe9\xf2\xe9\xf3\xe9\xf4\xe9\xf5\xe9\xf6\xe9\xf7\xe9\xf8\xe9\xf9\xe9\xfa\xe9\xfb\xe9\xfc\xe9\xfd\xe9\xfe\xea\x41\xea\x42\xea\x43\xea\x44\xea\x45\xea\x46\xea\x47\xea\x48\xea\x49\xea\x4a\xea\x4b\xea\x4c\xea\x4d\xea\x4e\xea\x4f\xea\x50\xea\x51\xea\x52\xea\x53\xea\x54\xea\x55\xea\x56\xea\x57\xea\x58\xea\x59\xea\x5a\xea\x5b\xea\x5c\xea\x5d\xea\x5e\xea\x5f\xea\x60\xea\x61\xea\x62\xea\x63\xea\x64\xea\x65\xea\x66\xea\x67\xea\x68\xea\x69\xea\x6a\xea\x6b\xea\x6c\xea\x6d\xea\x6e\xea\x6f\xea\x70\xea\x71\xea\x72\xea\x73\xea\x74\xea\x75\xea\x76\xea\x77\xea\x78\xea\x79\xea\x7a\xea\x7b\xea\x7c\xea\x7d\xea\x7e\xea\x7f\xea\x80\xea\x81\xea\x82\xea\x83\xea\x84\xea\x85\xea\x86\xea\x87\xea\x88\xea\x89\xea\x8a\xea\x8b\xea\x8c\xea\x8d\xea\x8e\xea\x8f\xea\x90\xea\x91\xea\x92\xea\x93\xea\x94\xea\x95\xea\x96\xea\x97\xea\x98\xea\x99\xea\x9a\xea\x9b", /* 4880 */ "\xea\x9c\xea\x9d\xea\x9e\xea\x9f\xea\xa0\xea\xa1\xea\xa2\xea\xa3\xea\xa4\xea\xa5\xea\xa6\xea\xa7\xea\xa8\xea\xa9\xea\xaa\xea\xab\xea\xac\xea\xad\xea\xae\xea\xaf\xea\xb0\xea\xb1\xea\xb2\xea\xb3\xea\xb4\xea\xb5\xea\xb6\xea\xb7\xea\xb8\xea\xb9\xea\xba\xea\xbb\xea\xbc\xea\xbd\xea\xbe\xea\xbf\xea\xc0\xea\xc1\xea\xc2\xea\xc3\xea\xc4\xea\xc5\xea\xc6\xea\xc7\xea\xc8\xea\xc9\xea\xca\xea\xcb\xea\xcc\xea\xcd\xea\xce\xea\xcf\xea\xd0\xea\xd1\xea\xd2\xea\xd3\xea\xd4\xea\xd5\xea\xd6\xea\xd7\xea\xd8\xea\xd9\xea\xda\xea\xdb\xea\xdc\xea\xdd\xea\xde\xea\xdf\xea\xe0\xea\xe1\xea\xe2\xea\xe3\xea\xe4\xea\xe5\xea\xe6\xea\xe7\xea\xe8\xea\xe9\xea\xea\xea\xeb\xea\xec\xea\xed\xea\xee\xea\xef\xea\xf0\xea\xf1\xea\xf2\xea\xf3\xea\xf4\xea\xf5\xea\xf6\xea\xf7\xea\xf8\xea\xf9\xea\xfa\xea\xfb\xea\xfc\xea\xfd\xea\xfe\xeb\x41\xeb\x42\xeb\x43\xeb\x44\xeb\x45\xeb\x46\xeb\x47\xeb\x48\xeb\x49\xeb\x4a\xeb\x4b\xeb\x4c\xeb\x4d\xeb\x4e\xeb\x4f\xeb\x50\xeb\x51\xeb\x52\xeb\x53\xeb\x54\xeb\x55\xeb\x56\xeb\x57\xeb\x58\xeb\x59\xeb\x5a\xeb\x5b\xeb\x5c\xeb\x5d", /* 4900 */ "\xeb\x5e\xeb\x5f\xeb\x60\xeb\x61\xeb\x62\xeb\x63\xeb\x64\xeb\x65\xeb\x66\xeb\x67\xeb\x68\xeb\x69\xeb\x6a\xeb\x6b\xeb\x6c\xeb\x6d\xeb\x6e\xeb\x6f\xeb\x70\xeb\x71\xeb\x72\xeb\x73\xeb\x74\xeb\x75\xeb\x76\xeb\x77\xeb\x78\xeb\x79\xeb\x7a\xeb\x7b\xeb\x7c\xeb\x7d\xeb\x7e\xeb\x7f\xeb\x80\xeb\x81\xeb\x82\xeb\x83\xeb\x84\xeb\x85\xeb\x86\xeb\x87\xeb\x88\xeb\x89\xeb\x8a\xeb\x8b\xeb\x8c\xeb\x8d\xeb\x8e\xeb\x8f\xeb\x90\xeb\x91\xeb\x92\xeb\x93\xeb\x94\xeb\x95\xeb\x96\xeb\x97\xeb\x98\xeb\x99\xeb\x9a\xeb\x9b\xeb\x9c\xeb\x9d\xeb\x9e\xeb\x9f\xeb\xa0\xeb\xa1\xeb\xa2\xeb\xa3\xeb\xa4\xce\x8b\xeb\xa5\xeb\xa6\xeb\xa7\xeb\xa8\xeb\xa9\xeb\xaa\xeb\xab\xeb\xac\xeb\xad\xeb\xae\xeb\xaf\xeb\xb0\xeb\xb1\xeb\xb2\xeb\xb3\xeb\xb4\xeb\xb5\xeb\xb6\xeb\xb7\xeb\xb8\xeb\xb9\xeb\xba\xeb\xbb\xeb\xbc\xeb\xbd\xeb\xbe\xeb\xbf\xeb\xc0\xeb\xc1\xeb\xc2\xeb\xc3\xeb\xc4\xeb\xc5\xeb\xc6\xeb\xc7\xeb\xc8\xeb\xc9\xeb\xca\xeb\xcb\xeb\xcc\xeb\xcd\xeb\xce\xeb\xcf\xeb\xd0\xeb\xd1\xeb\xd2\xeb\xd3\xeb\xd4\xeb\xd5\xeb\xd6\xce\x8c\xeb\xd7\xeb\xd8\xce\x8d\xeb\xd9\xeb\xda", /* 4980 */ "\xeb\xdb\xeb\xdc\xce\x8e\xce\x8f\xeb\xdd\xce\x90\xce\x91\xeb\xde\xeb\xdf\xeb\xe0\xeb\xe1\xeb\xe2\xeb\xe3\xeb\xe4\xeb\xe5\xeb\xe6\xeb\xe7\xeb\xe8\xeb\xe9\xeb\xea\xeb\xeb\xeb\xec\xeb\xed\xeb\xee\xeb\xef\xeb\xf0\xeb\xf1\xce\x93\xeb\xf2\xeb\xf3\xeb\xf4\xce\x92\xeb\xf5\xeb\xf6\xeb\xf7\xeb\xf8\xeb\xf9\xeb\xfa\xeb\xfb\xeb\xfc\xeb\xfd\xeb\xfe\xec\x41\xec\x42\xec\x43\xec\x44\xec\x45\xec\x46\xec\x47\xec\x48\xec\x49\xec\x4a\xec\x4b\xec\x4c\xce\x95\xce\x94\xec\x4d\xec\x4e\xec\x4f\xec\x50\xec\x51\xec\x52\xec\x53\xec\x54\xec\x55\xec\x56\xec\x57\xec\x58\xec\x59\xec\x5a\xec\x5b\xec\x5c\xec\x5d\xec\x5e\xec\x5f\xec\x60\xec\x61\xec\x62\xec\x63\xec\x64\xec\x65\xec\x66\xec\x67\xec\x68\xec\x69\xec\x6a\xec\x6b\xec\x6c\xec\x6d\xec\x6e\xec\x6f\xec\x70\xec\x71\xec\x72\xec\x73\xec\x74\xec\x75\xec\x76\xec\x77\xec\x78\xec\x79\xec\x7a\xec\x7b\xec\x7c\xec\x7d\xec\x7e\xec\x7f\xec\x80\xec\x81\xec\x82\xec\x83\xec\x84\xec\x85\xec\x86\xec\x87\xec\x88\xec\x89\xec\x8a\xec\x8b\xec\x8c\xec\x8d\xec\x8e\xec\x8f\xec\x90\xec\x91\xec\x92\xec\x93\xec\x94", /* 4a00 */ "\xec\x95\xec\x96\xec\x97\xec\x98\xec\x99\xec\x9a\xec\x9b\xec\x9c\xec\x9d\xec\x9e\xec\x9f\xec\xa0\xec\xa1\xec\xa2\xec\xa3\xec\xa4\xec\xa5\xec\xa6\xec\xa7\xec\xa8\xec\xa9\xec\xaa\xec\xab\xec\xac\xec\xad\xec\xae\xec\xaf\xec\xb0\xec\xb1\xec\xb2\xec\xb3\xec\xb4\xec\xb5\xec\xb6\xec\xb7\xec\xb8\xec\xb9\xec\xba\xec\xbb\xec\xbc\xec\xbd\xec\xbe\xec\xbf\xec\xc0\xec\xc1\xec\xc2\xec\xc3\xec\xc4\xec\xc5\xec\xc6\xec\xc7\xec\xc8\xec\xc9\xec\xca\xec\xcb\xec\xcc\xec\xcd\xec\xce\xec\xcf\xec\xd0\xec\xd1\xec\xd2\xec\xd3\xec\xd4\xec\xd5\xec\xd6\xec\xd7\xec\xd8\xec\xd9\xec\xda\xec\xdb\xec\xdc\xec\xdd\xec\xde\xec\xdf\xec\xe0\xec\xe1\xec\xe2\xec\xe3\xec\xe4\xec\xe5\xec\xe6\xec\xe7\xec\xe8\xec\xe9\xec\xea\xec\xeb\xec\xec\xec\xed\xec\xee\xec\xef\xec\xf0\xec\xf1\xec\xf2\xec\xf3\xec\xf4\xec\xf5\xec\xf6\xec\xf7\xec\xf8\xec\xf9\xec\xfa\xec\xfb\xec\xfc\xec\xfd\xec\xfe\xed\x41\xed\x42\xed\x43\xed\x44\xed\x45\xed\x46\xed\x47\xed\x48\xed\x49\xed\x4a\xed\x4b\xed\x4c\xed\x4d\xed\x4e\xed\x4f\xed\x50\xed\x51\xed\x52\xed\x53\xed\x54\xed\x55\xed\x56", /* 4a80 */ "\xed\x57\xed\x58\xed\x59\xed\x5a\xed\x5b\xed\x5c\xed\x5d\xed\x5e\xed\x5f\xed\x60\xed\x61\xed\x62\xed\x63\xed\x64\xed\x65\xed\x66\xed\x67\xed\x68\xed\x69\xed\x6a\xed\x6b\xed\x6c\xed\x6d\xed\x6e\xed\x6f\xed\x70\xed\x71\xed\x72\xed\x73\xed\x74\xed\x75\xed\x76\xed\x77\xed\x78\xed\x79\xed\x7a\xed\x7b\xed\x7c\xed\x7d\xed\x7e\xed\x7f\xed\x80\xed\x81\xed\x82\xed\x83\xed\x84\xed\x85\xed\x86\xed\x87\xed\x88\xed\x89\xed\x8a\xed\x8b\xed\x8c\xed\x8d\xed\x8e\xed\x8f\xed\x90\xed\x91\xed\x92\xed\x93\xed\x94\xed\x95\xed\x96\xed\x97\xed\x98\xed\x99\xed\x9a\xed\x9b\xed\x9c\xed\x9d\xed\x9e\xed\x9f\xed\xa0\xed\xa1\xed\xa2\xed\xa3\xed\xa4\xed\xa5\xed\xa6\xed\xa7\xed\xa8\xed\xa9\xed\xaa\xed\xab\xed\xac\xed\xad\xed\xae\xed\xaf\xed\xb0\xed\xb1\xed\xb2\xed\xb3\xed\xb4\xed\xb5\xed\xb6\xed\xb7\xed\xb8\xed\xb9\xed\xba\xed\xbb\xed\xbc\xed\xbd\xed\xbe\xed\xbf\xed\xc0\xed\xc1\xed\xc2\xed\xc3\xed\xc4\xed\xc5\xed\xc6\xed\xc7\xed\xc8\xed\xc9\xed\xca\xed\xcb\xed\xcc\xed\xcd\xed\xce\xed\xcf\xed\xd0\xed\xd1\xed\xd2\xed\xd3\xed\xd4\xed\xd5\xed\xd6", /* 4b00 */ "\xed\xd7\xed\xd8\xed\xd9\xed\xda\xed\xdb\xed\xdc\xed\xdd\xed\xde\xed\xdf\xed\xe0\xed\xe1\xed\xe2\xed\xe3\xed\xe4\xed\xe5\xed\xe6\xed\xe7\xed\xe8\xed\xe9\xed\xea\xed\xeb\xed\xec\xed\xed\xed\xee\xed\xef\xed\xf0\xed\xf1\xed\xf2\xed\xf3\xed\xf4\xed\xf5\xed\xf6\xed\xf7\xed\xf8\xed\xf9\xed\xfa\xed\xfb\xed\xfc\xed\xfd\xed\xfe\xee\x41\xee\x42\xee\x43\xee\x44\xee\x45\xee\x46\xee\x47\xee\x48\xee\x49\xee\x4a\xee\x4b\xee\x4c\xee\x4d\xee\x4e\xee\x4f\xee\x50\xee\x51\xee\x52\xee\x53\xee\x54\xee\x55\xee\x56\xee\x57\xee\x58\xee\x59\xee\x5a\xee\x5b\xee\x5c\xee\x5d\xee\x5e\xee\x5f\xee\x60\xee\x61\xee\x62\xee\x63\xee\x64\xee\x65\xee\x66\xee\x67\xee\x68\xee\x69\xee\x6a\xee\x6b\xee\x6c\xee\x6d\xee\x6e\xee\x6f\xee\x70\xee\x71\xee\x72\xee\x73\xee\x74\xee\x75\xee\x76\xee\x77\xee\x78\xee\x79\xee\x7a\xee\x7b\xee\x7c\xee\x7d\xee\x7e\xee\x7f\xee\x80\xee\x81\xee\x82\xee\x83\xee\x84\xee\x85\xee\x86\xee\x87\xee\x88\xee\x89\xee\x8a\xee\x8b\xee\x8c\xee\x8d\xee\x8e\xee\x8f\xee\x90\xee\x91\xee\x92\xee\x93\xee\x94\xee\x95\xee\x96\xee\x97\xee\x98", /* 4b80 */ "\xee\x99\xee\x9a\xee\x9b\xee\x9c\xee\x9d\xee\x9e\xee\x9f\xee\xa0\xee\xa1\xee\xa2\xee\xa3\xee\xa4\xee\xa5\xee\xa6\xee\xa7\xee\xa8\xee\xa9\xee\xaa\xee\xab\xee\xac\xee\xad\xee\xae\xee\xaf\xee\xb0\xee\xb1\xee\xb2\xee\xb3\xee\xb4\xee\xb5\xee\xb6\xee\xb7\xee\xb8\xee\xb9\xee\xba\xee\xbb\xee\xbc\xee\xbd\xee\xbe\xee\xbf\xee\xc0\xee\xc1\xee\xc2\xee\xc3\xee\xc4\xee\xc5\xee\xc6\xee\xc7\xee\xc8\xee\xc9\xee\xca\xee\xcb\xee\xcc\xee\xcd\xee\xce\xee\xcf\xee\xd0\xee\xd1\xee\xd2\xee\xd3\xee\xd4\xee\xd5\xee\xd6\xee\xd7\xee\xd8\xee\xd9\xee\xda\xee\xdb\xee\xdc\xee\xdd\xee\xde\xee\xdf\xee\xe0\xee\xe1\xee\xe2\xee\xe3\xee\xe4\xee\xe5\xee\xe6\xee\xe7\xee\xe8\xee\xe9\xee\xea\xee\xeb\xee\xec\xee\xed\xee\xee\xee\xef\xee\xf0\xee\xf1\xee\xf2\xee\xf3\xee\xf4\xee\xf5\xee\xf6\xee\xf7\xee\xf8\xee\xf9\xee\xfa\xee\xfb\xee\xfc\xee\xfd\xee\xfe\xef\x41\xef\x42\xef\x43\xef\x44\xef\x45\xef\x46\xef\x47\xef\x48\xef\x49\xef\x4a\xef\x4b\xef\x4c\xef\x4d\xef\x4e\xef\x4f\xef\x50\xef\x51\xef\x52\xef\x53\xef\x54\xef\x55\xef\x56\xef\x57\xef\x58\xef\x59\xef\x5a", /* 4c00 */ "\xef\x5b\xef\x5c\xef\x5d\xef\x5e\xef\x5f\xef\x60\xef\x61\xef\x62\xef\x63\xef\x64\xef\x65\xef\x66\xef\x67\xef\x68\xef\x69\xef\x6a\xef\x6b\xef\x6c\xef\x6d\xef\x6e\xef\x6f\xef\x70\xef\x71\xef\x72\xef\x73\xef\x74\xef\x75\xef\x76\xef\x77\xef\x78\xef\x79\xef\x7a\xef\x7b\xef\x7c\xef\x7d\xef\x7e\xef\x7f\xef\x80\xef\x81\xef\x82\xef\x83\xef\x84\xef\x85\xef\x86\xef\x87\xef\x88\xef\x89\xef\x8a\xef\x8b\xef\x8c\xef\x8d\xef\x8e\xef\x8f\xef\x90\xef\x91\xef\x92\xef\x93\xef\x94\xef\x95\xef\x96\xef\x97\xef\x98\xef\x99\xef\x9a\xef\x9b\xef\x9c\xef\x9d\xef\x9e\xef\x9f\xef\xa0\xef\xa1\xef\xa2\xef\xa3\xef\xa4\xef\xa5\xef\xa6\xef\xa7\xef\xa8\xef\xa9\xef\xaa\xef\xab\xef\xac\xef\xad\xef\xae\xef\xaf\xef\xb0\xef\xb1\xef\xb2\xef\xb3\xef\xb4\xef\xb5\xef\xb6\xef\xb7\xef\xb8\xef\xb9\xef\xba\xef\xbb\xef\xbc\xef\xbd\xef\xbe\xef\xbf\xef\xc0\xef\xc1\xef\xc2\xef\xc3\xef\xc4\xef\xc5\xef\xc6\xef\xc7\xef\xc8\xef\xc9\xef\xca\xef\xcb\xef\xcc\xef\xcd\xef\xce\xef\xcf\xef\xd0\xef\xd1\xce\x9c\xef\xd2\xef\xd3\xef\xd4\xef\xd5\xef\xd6\xef\xd7\xef\xd8\xef\xd9", /* 4c80 */ "\xef\xda\xef\xdb\xef\xdc\xef\xdd\xef\xde\xef\xdf\xef\xe0\xef\xe1\xef\xe2\xef\xe3\xef\xe4\xef\xe5\xef\xe6\xef\xe7\xef\xe8\xef\xe9\xef\xea\xef\xeb\xef\xec\xef\xed\xef\xee\xef\xef\xef\xf0\xef\xf1\xef\xf2\xef\xf3\xef\xf4\xef\xf5\xef\xf6\xef\xf7\xef\xf8\xce\x99\xce\x9a\xce\x9b\xce\x9d\xce\x98\xef\xf9\xef\xfa\xef\xfb\xef\xfc\xef\xfd\xef\xfe\xf6\x41\xf6\x42\xf6\x43\xf6\x44\xf6\x45\xf6\x46\xf6\x47\xf6\x48\xf6\x49\xf6\x4a\xf6\x4b\xf6\x4c\xf6\x4d\xf6\x4e\xf6\x4f\xf6\x50\xf6\x51\xf6\x52\xf6\x53\xf6\x54\xf6\x55\xf6\x56\xf6\x57\xf6\x58\xf6\x59\xf6\x5a\xf6\x5b\xf6\x5c\xf6\x5d\xf6\x5e\xf6\x5f\xf6\x60\xf6\x61\xf6\x62\xf6\x63\xf6\x64\xf6\x65\xf6\x66\xf6\x67\xf6\x68\xf6\x69\xf6\x6a\xf6\x6b\xf6\x6c\xf6\x6d\xf6\x6e\xf6\x6f\xf6\x70\xf6\x71\xf6\x72\xf6\x73\xf6\x74\xf6\x75\xf6\x76\xf6\x77\xf6\x78\xf6\x79\xf6\x7a\xf6\x7b\xf6\x7c\xf6\x7d\xf6\x7e\xf6\x7f\xf6\x80\xf6\x81\xf6\x82\xf6\x83\xf6\x84\xf6\x85\xf6\x86\xf6\x87\xf6\x88\xf6\x89\xf6\x8a\xf6\x8b\xf6\x8c\xf6\x8d\xf6\x8e\xf6\x8f\xf6\x90\xf6\x91\xf6\x92\xf6\x93\xf6\x94\xf6\x95\xf6\x96", /* 4d00 */ "\xf6\x97\xf6\x98\xf6\x99\xf6\x9a\xf6\x9b\xf6\x9c\xf6\x9d\xf6\x9e\xf6\x9f\xf6\xa0\xf6\xa1\xf6\xa2\xf6\xa3\xf6\xa4\xf6\xa5\xf6\xa6\xf6\xa7\xf6\xa8\xf6\xa9\xce\x9e\xce\x9f\xce\xa0\xce\xa1\xce\xa2\xce\xa3\xce\xa4\xf6\xaa\xf6\xab\xf6\xac\xf6\xad\xf6\xae\xf6\xaf\xf6\xb0\xf6\xb1\xf6\xb2\xf6\xb3\xf6\xb4\xf6\xb5\xf6\xb6\xf6\xb7\xf6\xb8\xf6\xb9\xf6\xba\xf6\xbb\xf6\xbc\xf6\xbd\xf6\xbe\xf6\xbf\xf6\xc0\xf6\xc1\xf6\xc2\xf6\xc3\xf6\xc4\xf6\xc5\xf6\xc6\xf6\xc7\xf6\xc8\xf6\xc9\xf6\xca\xf6\xcb\xf6\xcc\xf6\xcd\xf6\xce\xf6\xcf\xf6\xd0\xf6\xd1\xf6\xd2\xf6\xd3\xf6\xd4\xf6\xd5\xf6\xd6\xf6\xd7\xf6\xd8\xf6\xd9\xf6\xda\xf6\xdb\xf6\xdc\xf6\xdd\xf6\xde\xf6\xdf\xf6\xe0\xf6\xe1\xf6\xe2\xf6\xe3\xf6\xe4\xf6\xe5\xf6\xe6\xf6\xe7\xf6\xe8\xf6\xe9\xf6\xea\xf6\xeb\xf6\xec\xf6\xed\xf6\xee\xf6\xef\xf6\xf0\xf6\xf1\xf6\xf2\xf6\xf3\xf6\xf4\xf6\xf5\xf6\xf6\xf6\xf7\xf6\xf8\xf6\xf9\xf6\xfa\xf6\xfb\xf6\xfc\xf6\xfd\xf6\xfe\xf7\x41\xf7\x42\xf7\x43\xf7\x44\xf7\x45\xf7\x46\xf7\x47\xf7\x48\xf7\x49\xf7\x4a\xf7\x4b\xf7\x4c\xf7\x4d\xf7\x4e\xf7\x4f\xf7\x50\xf7\x51", /* 4d80 */ "\xf7\x52\xf7\x53\xf7\x54\xf7\x55\xf7\x56\xf7\x57\xf7\x58\xf7\x59\xf7\x5a\xf7\x5b\xf7\x5c\xf7\x5d\xf7\x5e\xf7\x5f\xf7\x60\xf7\x61\xf7\x62\xf7\x63\xf7\x64\xf7\x65\xf7\x66\xf7\x67\xf7\x68\xf7\x69\xf7\x6a\xf7\x6b\xf7\x6c\xf7\x6d\xf7\x6e\xf7\x6f\xf7\x70\xf7\x71\xf7\x72\xf7\x73\xf7\x74\xf7\x75\xf7\x76\xf7\x77\xf7\x78\xf7\x79\xf7\x7a\xf7\x7b\xf7\x7c\xf7\x7d\xf7\x7e\xf7\x7f\xce\xa5\xf7\x80\xf7\x81\xf7\x82\xf7\x83\xf7\x84\xf7\x85\xf7\x86\xf7\x87\xf7\x88\xf7\x89\xf7\x8a\xf7\x8b\xf7\x8c\xf7\x8d\xf7\x8e\xf7\x8f\xf7\x90\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 4e00 */ "\x59\xba\x4b\xa0\x81\x41\x53\xde\x81\x42\x81\x43\x81\x44\x57\x93\x5b\x69\x54\xfc\x55\x6f\x58\x62\x5c\xa1\x49\xba\x5a\x8c\x81\x45\x5c\xa3\x4a\x94\x81\x46\x5c\x48\x54\x72\x5c\xa6\x55\xbf\x81\x47\x54\x91\x49\x9c\x59\xb4\x4a\xd3\x4b\xaa\x56\x5f\x5c\xa8\x81\x48\x81\x49\x81\x4a\x4b\xa9\x81\x4b\x51\x5d\x59\x6f\x81\x4c\x55\x45\x5c\xac\x81\x4d\x4c\xf5\x59\x5e\x62\x7c\x5b\xcf\x81\x4e\x81\x4f\x4c\x82\x81\x50\x4a\xad\x81\x51\x51\x79\x81\x52\x5c\xbb\x81\x53\x57\x89\x4b\x44\x57\xa9\x5b\xf6\x81\x54\x50\xf5\x4f\xd8\x5c\xae\x81\x55\x81\x56\x81\x57\x52\xca\x81\x58\x4f\xc2\x81\x59\x5c\xb0\x52\x54\x59\xe4\x81\x5a\x5b\xad\x57\xd9\x5b\x47\x4d\xf4\x4c\x46\x50\xd5\x81\x5b\x53\xb8\x53\x72\x54\x67\x81\x5c\x4d\x74\x81\x5d\x4a\x6b\x59\xd1\x81\x5e\x81\x5f\x5c\xbe\x4f\xc4\x53\xf1\x59\xb1\x58\x50\x58\x88\x81\x60\x81\x61\x81\x62\x81\x63\x55\xe8\x81\x64\x81\x65\x5c\xbf\x81\x66\x81\x67\x81\x68\x81\x69\x81\x6a\x81\x6b\x51\xf1\x51\xd1\x81\x6c\x54\xe8\x81\x6d\x81\x6e\x81\x6f\x81\x70\x81\x71\x81\x72\x81\x73\x81\x74\x81\x75\x81\x76\x54\x4c\x81\x77", /* 4e80 */ "\x81\x78\x81\x79\x81\x7a\x81\x7b\x81\x7c\x81\x7d\x51\x6b\x81\x7e\x5a\x89\x5b\x9a\x81\x7f\x55\xc1\x4b\xfd\x5c\xa0\x5a\x7a\x50\x98\x81\x81\x5a\xc5\x4e\x45\x5c\xc0\x57\xe4\x4f\xad\x81\x82\x81\x83\x5c\xa7\x81\x84\x59\x67\x58\xa8\x81\x85\x81\x86\x81\x87\x5c\xbc\x5d\x90\x57\x97\x50\x5a\x81\x88\x4f\x5b\x4d\xa4\x59\xdf\x49\xf9\x4d\xdf\x52\xb5\x81\x89\x58\x8e\x4f\xa8\x57\x44\x51\x61\x81\x8a\x81\x8b\x81\x8c\x54\x77\x5d\x92\x81\x8d\x5d\x95\x81\x8e\x81\x8f\x81\x90\x81\x91\x54\xca\x5c\xe8\x81\x92\x81\x93\x81\x94\x59\xd9\x55\xb1\x54\xc9\x5c\xeb\x5c\xe9\x5c\xc5\x4f\x97\x53\xcc\x4a\x91\x81\x95\x5c\xea\x4f\x92\x4f\x8a\x81\x96\x54\xd3\x4a\xd2\x81\x97\x81\x98\x51\xd7\x81\x99\x49\xd5\x5c\x70\x55\xca\x56\x9c\x5b\x6c\x4c\xb5\x58\x69\x81\x9a\x81\x9b\x81\x9c\x5d\x7a\x5c\xef\x54\x4a\x81\x9d\x5c\xed\x81\x9e\x4a\xf9\x51\x8f\x59\xd3\x81\x9f\x81\xa0\x5c\xec\x81\xa1\x59\xc6\x5c\xee\x52\x67\x81\xa2\x81\xa3\x81\xa4\x59\x97\x81\xa5\x5b\xd8\x5c\xf1\x81\xa6\x5c\xf4\x4e\xfd\x4e\xda\x81\xa7\x81\xa8\x81\xa9\x54\xcd\x81\xaa\x4c\x7d\x81\xab\x4c\x62", /* 4f00 */ "\x81\xac\x53\xf2\x81\xad\x81\xae\x81\xaf\x81\xb0\x81\xb1\x81\xb2\x81\xb3\x5c\xf7\x59\xc0\x81\xb4\x81\xb5\x57\xe8\x4e\xbe\x4c\x9d\x4c\x45\x58\xdc\x81\xb6\x81\xb7\x81\xb8\x81\xb9\x81\xba\x5b\xd9\x5a\x65\x4e\x90\x4e\x82\x5c\xf0\x81\xbb\x81\xbc\x55\x41\x57\xaf\x4a\xaa\x81\xbd\x5c\xf2\x81\xbe\x55\x6b\x5c\xf5\x51\xd6\x5c\xf6\x81\xbf\x81\xc0\x57\xb0\x5c\xf8\x81\xc1\x81\xc2\x81\xc3\x49\xad\x4d\x60\x81\xc4\x5d\x43\x81\xc5\x48\xe8\x81\xc6\x51\x87\x81\xc7\x55\x8d\x81\xc8\x56\x65\x81\xc9\x56\x66\x5d\x44\x81\xca\x81\xcb\x81\xcc\x81\xcd\x81\xce\x4b\x89\x81\xcf\x81\xd0\x4b\x4b\x81\xd1\x81\xd2\x81\xd3\x81\xd4\x81\xd5\x81\xd6\x57\xba\x4b\x6d\x5c\x41\x5c\x95\x5a\x73\x81\xd7\x56\xe4\x81\xd8\x4d\xcd\x81\xd9\x5d\x42\x5d\x7c\x5a\x81\x5c\xfc\x4c\x91\x5c\x98\x5c\xfd\x5c\xf9\x5d\x41\x52\xe2\x81\xda\x81\xdb\x5a\x56\x5c\xf3\x5d\x7d\x81\xdc\x5c\xfa\x81\xdd\x53\x86\x81\xde\x81\xdf\x50\xcf\x81\xe0\x81\xe1\x59\x91\x48\xda\x81\xe2\x81\xe3\x4e\xd0\x5d\x46\x81\xe4\x5d\x45\x81\xe5\x81\xe6\x81\xe7\x81\xe8\x5d\x4c\x5d\x4e\x81\xe9\x5d\x4b\x55\xb8", /* 4f80 */ "\x81\xea\x81\xeb\x81\xec\x5d\x49\x5b\xb5\x81\xed\x81\xee\x81\xef\x4a\x7e\x5d\x48\x81\xf0\x50\xfc\x81\xf1\x55\xcb\x81\xf2\x5d\x4a\x81\xf3\x5d\x47\x81\xf4\x81\xf5\x5d\x50\x81\xf6\x81\xf7\x4b\xb0\x81\xf8\x81\xf9\x81\xfa\x4d\x49\x81\xfb\x59\xbf\x81\xfc\x81\xfd\x58\x60\x82\x41\x82\x42\x51\xc1\x82\x43\x4f\x64\x5b\x8d\x49\xdf\x54\x68\x50\x8c\x5d\x4d\x82\x44\x5d\x4f\x82\x45\x57\xe9\x4d\xed\x82\x46\x82\x47\x82\x48\x82\x49\x82\x4a\x54\x76\x82\x4b\x82\x4c\x82\x4d\x82\x4e\x82\x4f\x82\x50\x82\x51\x82\x52\x82\x53\x49\x84\x82\x54\x82\x55\x82\x56\x4a\xd8\x4b\xec\x5d\x54\x82\x57\x82\x58\x82\x59\x82\x5a\x50\x41\x82\x5b\x82\x5c\x82\x5d\x5d\x7e\x54\x6e\x50\xfd\x5d\x58\x82\x5e\x82\x5f\x82\x60\x82\x61\x82\x62\x56\x77\x4c\x9e\x82\x63\x5d\x55\x82\x64\x5d\x57\x49\x43\x5a\x82\x5d\x59\x82\x65\x58\xc4\x82\x66\x5d\x56\x82\x67\x82\x68\x5d\x51\x82\x69\x5d\x52\x51\x49\x5d\x53\x82\x6a\x82\x6b\x4e\xf2\x58\xdd\x4c\xa8\x82\x6c\x4f\xe2\x82\x6d\x5d\x5d\x82\x6e\x82\x6f\x82\x70\x82\x71\x5d\x5a\x82\x72\x48\xb2\x82\x73\x82\x74\x82\x75\x5d\x62\x82\x76", /* 5000 */ "\x82\x77\x82\x78\x82\x79\x82\x7a\x82\x7b\x82\x7c\x82\x7d\x82\x7e\x82\x7f\x82\x81\x82\x82\x82\x83\x5d\x64\x49\x56\x82\x84\x5d\x5f\x82\x85\x82\x86\x4b\x59\x82\x87\x4f\xf2\x82\x88\x82\x89\x82\x8a\x56\xc7\x4d\xf1\x59\xcf\x82\x8b\x5d\x63\x82\x8c\x82\x8d\x4f\x89\x82\x8e\x4a\x4b\x82\x8f\x82\x90\x82\x91\x5d\x65\x4f\xea\x82\x92\x5d\x66\x5d\x5b\x52\xde\x82\x93\x5d\x5e\x5d\x61\x5d\x60\x82\x94\x82\x95\x82\x96\x82\x97\x82\x98\x82\x99\x82\x9a\x82\x9b\x82\x9c\x82\x9d\x82\x9e\x5b\x4e\x82\x9f\x5b\xb4\x82\xa0\x54\x84\x82\xa1\x82\xa2\x82\xa3\x82\xa4\x5d\x68\x82\xa5\x82\xa6\x82\xa7\x4e\xd8\x5d\x6a\x82\xa8\x82\xa9\x82\xaa\x5d\x5c\x82\xab\x5d\x6b\x53\xaa\x82\xac\x82\xad\x82\xae\x82\xaf\x82\xb0\x5d\x69\x82\xb1\x82\xb2\x82\xb3\x82\xb4\x5c\x97\x82\xb5\x57\x43\x82\xb6\x82\xb7\x82\xb8\x82\xb9\x82\xba\x82\xbb\x82\xbc\x82\xbd\x4f\x41\x82\xbe\x82\xbf\x82\xc0\x82\xc1\x82\xc2\x82\xc3\x5d\x6c\x82\xc4\x82\xc5\x82\xc6\x82\xc7\x82\xc8\x82\xc9\x82\xca\x82\xcb\x82\xcc\x53\x5c\x57\x55\x82\xcd\x82\xce\x82\xcf\x5d\x6d\x82\xd0\x82\xd1\x5d\x67\x4a\x45", /* 5080 */ "\x50\x9f\x82\xd2\x82\xd3\x82\xd4\x82\xd5\x4c\xb4\x82\xd6\x82\xd7\x50\xfb\x82\xd8\x82\xd9\x82\xda\x82\xdb\x48\xf7\x82\xdc\x82\xdd\x82\xde\x82\xdf\x82\xe0\x82\xe1\x82\xe2\x82\xe3\x82\xe4\x82\xe5\x82\xe6\x82\xe7\x82\xe8\x82\xe9\x82\xea\x82\xeb\x82\xec\x82\xed\x82\xee\x82\xef\x82\xf0\x4a\xf5\x82\xf1\x5d\x6e\x82\xf2\x5d\x6f\x4a\xa1\x5d\x70\x82\xf3\x82\xf4\x4a\xde\x82\xf5\x82\xf6\x82\xf7\x82\xf8\x82\xf9\x48\xc0\x82\xfa\x82\xfb\x82\xfc\x82\xfd\x83\x41\x83\x42\x83\x43\x5d\x71\x55\x55\x83\x44\x83\x45\x83\x46\x83\x47\x83\x48\x83\x49\x83\x4a\x83\x4b\x83\x4c\x83\x4d\x83\x4e\x83\x4f\x83\x50\x83\x51\x83\x52\x83\x53\x83\x54\x83\x55\x83\x56\x58\x92\x83\x57\x83\x58\x83\x59\x83\x5a\x83\x5b\x83\x5c\x5d\x72\x83\x5d\x83\x5e\x83\x5f\x51\x65\x83\x60\x83\x61\x83\x62\x83\x63\x83\x64\x83\x65\x83\x66\x83\x67\x83\x68\x83\x69\x83\x6a\x5d\x76\x55\x4e\x83\x6b\x83\x6c\x83\x6d\x83\x6e\x5d\x75\x5d\x74\x5d\x77\x83\x6f\x83\x70\x83\x71\x83\x72\x56\x7b\x83\x73\x4f\x49\x83\x74\x83\x75\x83\x76\x83\x77\x83\x78\x53\xa6\x83\x79\x83\x7a\x83\x7b\x83\x7c", /* 5100 */ "\x83\x7d\x83\x7e\x83\x7f\x83\x81\x83\x82\x83\x83\x5d\x73\x5d\x78\x83\x84\x83\x85\x83\x86\x5d\x79\x83\x87\x83\x88\x83\x89\x83\x8a\x83\x8b\x83\x8c\x54\xe4\x83\x8d\x83\x8e\x83\x8f\x83\x90\x83\x91\x83\x92\x83\x93\x83\x94\x83\x95\x83\x96\x83\x97\x83\x98\x83\x99\x83\x9a\x50\xdb\x83\x9b\x83\x9c\x83\x9d\x83\x9e\x83\x9f\x83\xa0\x83\xa1\x83\xa2\x83\xa3\x83\xa4\x83\xa5\x83\xa6\x83\xa7\x83\xa8\x83\xa9\x83\xaa\x83\xab\x83\xac\x83\xad\x83\xae\x83\xaf\x83\xb0\x83\xb1\x83\xb2\x83\xb3\x83\xb4\x83\xb5\x83\xb6\x83\xb7\x4b\xf8\x5c\xa2\x5a\xc9\x83\xb8\x5a\xa9\x58\xd5\x4a\x85\x5b\x77\x83\xb9\x58\x68\x4d\x83\x83\xba\x50\x6b\x83\xbb\x52\x83\x83\xbc\x83\xbd\x83\xbe\x4b\xd1\x83\xbf\x83\xc0\x57\x63\x5d\x8f\x5d\x91\x83\xc1\x83\xc2\x83\xc3\x4b\x53\x83\xc4\x4b\xb4\x83\xc5\x83\xc6\x83\xc7\x83\xc8\x83\xc9\x4f\xa3\x83\xca\x83\xcb\x54\xea\x83\xcc\x83\xcd\x54\xaa\x83\xce\x83\xcf\x48\xca\x4d\x4b\x51\x9a\x5d\x83\x83\xd0\x50\xbb\x4d\x52\x83\xd1\x4d\x78\x58\xca\x49\x99\x53\xe3\x4f\xde\x4b\x85\x5c\x68\x83\xd2\x59\x99\x4e\xe5\x55\xdd\x83\xd3\x83\xd4", /* 5180 */ "\x4e\xbc\x5d\x87\x5c\xe6\x83\xd5\x83\xd6\x52\xd9\x83\xd7\x83\xd8\x4c\xd3\x54\xbc\x83\xd9\x83\xda\x49\xe0\x5a\xd8\x83\xdb\x83\xdc\x83\xdd\x83\xde\x52\x50\x83\xdf\x83\xe0\x52\x82\x5d\xa1\x54\xde\x83\xe1\x58\xb3\x83\xe2\x4f\xfb\x53\x49\x83\xe3\x83\xe4\x83\xe5\x4d\x7a\x83\xe6\x5d\xa2\x83\xe7\x5a\xa8\x5d\xa3\x83\xe8\x83\xe9\x83\xea\x83\xeb\x83\xec\x5d\x9c\x4b\xab\x83\xed\x83\xee\x4c\x8c\x49\x9a\x5d\x9d\x4a\x86\x4f\xf5\x83\xef\x50\x97\x59\xb0\x50\xe3\x83\xf0\x83\xf1\x83\xf2\x4b\xb2\x5d\x9f\x5d\x9e\x83\xf3\x83\xf4\x4f\xba\x83\xf5\x83\xf6\x83\xf7\x53\xdf\x83\xf8\x5c\x5c\x5d\xa0\x83\xf9\x51\x59\x83\xfa\x4b\x93\x51\x89\x83\xfb\x83\xfc\x4e\xf4\x83\xfd\x4a\xd4\x84\x41\x84\x42\x84\x43\x84\x44\x84\x45\x84\x46\x84\x47\x84\x48\x84\x49\x51\x7d\x84\x4a\x52\xfc\x84\x4b\x84\x4c\x4e\xb7\x4c\x52\x84\x4d\x84\x4e\x4c\x90\x84\x4f\x84\x50\x84\x51\x84\x52\x84\x53\x84\x54\x5d\x8d\x84\x55\x53\xbd\x84\x56\x50\x4d\x4e\x6b\x84\x57\x84\x58\x4b\x6a\x84\x59\x5e\x69\x58\xd6\x84\x5a\x57\x59\x48\xbb\x4a\x97\x4e\x98\x5e\x6a\x4d\xae\x84\x5b\x5a\xe3", /* 5200 */ "\x4b\x56\x4b\x94\x5c\xd5\x54\xcf\x84\x5c\x84\x5d\x4c\x76\x54\x70\x5c\xd6\x84\x5e\x50\x4f\x84\x5f\x84\x60\x5e\x5b\x5c\xd7\x84\x61\x84\x62\x58\xcb\x4e\x4e\x84\x63\x84\x64\x84\x65\x66\x5e\x51\x70\x51\x96\x5a\xf1\x4c\xd4\x4a\xb3\x84\x66\x4a\x96\x84\x67\x84\x68\x55\x5e\x84\x69\x84\x6a\x84\x6b\x53\x70\x84\x6c\x84\x6d\x84\x6e\x53\x79\x50\xfa\x84\x6f\x49\x91\x84\x70\x5c\xd8\x4d\x6e\x84\x71\x4b\x5d\x84\x72\x84\x73\x5c\xd9\x84\x74\x84\x75\x5b\xc5\x56\x42\x54\xae\x55\x52\x4a\xcb\x50\x6c\x84\x76\x4d\x95\x84\x77\x5c\xda\x5c\xdb\x4b\xe6\x4e\xc0\x56\xe9\x84\x78\x84\x79\x84\x7a\x84\x7b\x84\x7c\x84\x7d\x58\x98\x84\x7e\x5c\xdc\x54\x50\x84\x7f\x84\x81\x4d\x70\x4f\x43\x84\x82\x84\x83\x56\xdd\x84\x84\x53\xc9\x84\x85\x84\x86\x84\x87\x84\x88\x84\x89\x5c\xdf\x84\x8a\x5c\xdd\x84\x8b\x84\x8c\x5c\xde\x84\x8d\x84\x8e\x84\x8f\x48\xfd\x84\x90\x4f\xe6\x84\x91\x55\xa2\x4e\xf3\x84\x92\x84\x93\x84\x94\x84\x95\x4c\xb0\x84\x96\x84\x97\x4c\xed\x84\x98\x84\x99\x84\x9a\x84\x9b\x84\x9c\x84\x9d\x84\x9e\x84\x9f\x84\xa0\x84\xa1\x5c\xe1\x84\xa2\x4f\x6b", /* 5280 */ "\x84\xa3\x5c\xe3\x5c\xe2\x84\xa4\x84\xa5\x84\xa6\x84\xa7\x84\xa8\x53\x9d\x84\xa9\x84\xaa\x84\xab\x84\xac\x84\xad\x84\xae\x84\xaf\x5c\xe4\x84\xb0\x84\xb1\x5c\xe5\x84\xb2\x84\xb3\x84\xb4\x84\xb5\x84\xb6\x84\xb7\x84\xb8\x51\x46\x84\xb9\x54\xaf\x48\xeb\x4d\x46\x4e\xd2\x57\xf0\x5e\x5d\x51\x73\x84\xba\x84\xbb\x84\xbc\x84\xbd\x4b\xae\x5b\xf9\x53\x4c\x4f\x79\x5e\x5e\x5e\x5f\x84\xbe\x84\xbf\x84\xc0\x50\xf7\x4f\xa1\x50\xcc\x84\xc1\x84\xc2\x84\xc3\x84\xc4\x84\xc5\x84\xc6\x84\xc7\x84\xc8\x84\xc9\x84\xca\x5e\x60\x55\xc5\x84\xcb\x84\xcc\x84\xcd\x49\xa9\x84\xce\x84\xcf\x84\xd0\x5a\x62\x84\xd1\x52\x84\x84\xd2\x59\x4b\x84\xd3\x84\xd4\x84\xd5\x84\xd6\x5e\x62\x84\xd7\x50\xd4\x84\xd8\x84\xd9\x84\xda\x5e\x63\x84\xdb\x50\x51\x84\xdc\x84\xdd\x84\xde\x84\xdf\x84\xe0\x84\xe1\x52\xbb\x84\xe2\x84\xe3\x84\xe4\x84\xe5\x54\x7a\x84\xe6\x84\xe7\x84\xe8\x84\xe9\x84\xea\x84\xeb\x84\xec\x84\xed\x84\xee\x84\xef\x84\xf0\x5e\x64\x84\xf1\x84\xf2\x84\xf3\x84\xf4\x84\xf5\x84\xf6\x84\xf7\x84\xf8\x5d\x89\x55\x77\x84\xf9\x84\xfa\x84\xfb\x4d\x54\x57\xef", /* 5300 */ "\x5a\xc7\x84\xfc\x84\xfd\x85\x41\x85\x42\x48\xfb\x4a\xd1\x85\x43\x58\xd8\x85\x44\x85\x45\x85\x46\x85\x47\x5d\x8a\x85\x48\x5f\xca\x5d\x8c\x85\x49\x85\x4a\x85\x4b\x85\x4c\x5c\xaf\x4e\x4f\x49\x51\x85\x4d\x4a\x77\x5c\xcd\x85\x4e\x85\x4f\x5a\xd0\x85\x50\x85\x51\x4f\x53\x50\x90\x85\x52\x58\x5b\x85\x53\x85\x54\x5c\xcf\x85\x55\x85\x56\x85\x57\x4c\x6b\x85\x58\x85\x59\x85\x5a\x5c\xd0\x85\x5b\x85\x5c\x85\x5d\x85\x5e\x85\x5f\x85\x60\x85\x61\x85\x62\x85\x63\x85\x64\x53\xa4\x54\x99\x59\xbc\x85\x65\x85\x66\x5c\xd1\x52\xe3\x85\x67\x55\xad\x85\x68\x54\x47\x85\x69\x5c\xa5\x85\x6a\x55\x9e\x57\xe6\x4e\x7c\x48\xea\x85\x6b\x85\x6c\x85\x6d\x4e\x4a\x58\xac\x85\x6e\x49\x50\x5c\x85\x5c\x5f\x85\x6f\x4b\x45\x51\xf3\x52\xce\x85\x70\x85\x71\x49\xa8\x85\x72\x49\xb6\x85\x73\x49\x86\x60\x52\x5b\x5c\x50\x48\x51\xab\x5c\xd4\x51\xb0\x85\x74\x5c\xd3\x57\xd3\x85\x75\x5d\xdf\x85\x76\x57\xbf\x85\x77\x85\x78\x5c\xb3\x52\x4e\x5a\x41\x57\xa2\x85\x79\x4e\xb3\x54\xb3\x51\xd0\x85\x7a\x4f\xec\x58\xb5\x85\x7b\x5d\xe0\x85\x7c\x85\x7d\x85\x7e\x85\x7f\x54\x85", /* 5380 */ "\x85\x81\x85\x82\x4a\x47\x85\x83\x4b\xf1\x56\xfb\x50\xf9\x85\x84\x85\x85\x50\xf6\x85\x86\x59\x59\x59\x82\x5c\xc6\x85\x87\x85\x88\x85\x89\x85\x8a\x85\x8b\x85\x8c\x85\x8d\x49\xdd\x85\x8e\x85\x8f\x50\xe4\x85\x90\x4d\xf0\x85\x91\x85\x92\x5c\xc7\x85\x93\x5a\xac\x85\x94\x85\x95\x58\x82\x5c\xc8\x85\x96\x5c\xc9\x58\x63\x85\x97\x4a\x99\x4f\xc6\x85\x98\x85\x99\x85\x9a\x85\x9b\x5c\xca\x85\x9c\x85\x9d\x85\x9e\x85\x9f\x85\xa0\x85\xa1\x85\xa2\x5e\x6c\x85\xa3\x85\xa4\x85\xa5\x85\xa6\x54\xa4\x85\xa7\x85\xa8\x85\xa9\x58\x78\x85\xaa\x54\xfd\x49\xcd\x85\xab\x85\xac\x85\xad\x85\xae\x85\xaf\x5a\x76\x49\xe5\x4e\xaf\x5a\x71\x56\x4b\x4c\x54\x85\xb0\x85\xb1\x85\xb2\x4c\x42\x85\xb3\x85\xb4\x55\xe4\x85\xb5\x54\xa0\x55\xdb\x49\x85\x58\xef\x85\xb6\x53\x71\x85\xb7\x85\xb8\x85\xb9\x5e\x65\x4b\x9f\x85\xba\x85\xbb\x50\x7a\x4d\x65\x4f\xe3\x51\x8e\x85\xbc\x60\x56\x60\x55\x5b\xba\x4f\x70\x5b\x79\x48\xc7\x4b\xa2\x50\x69\x56\xa7\x60\x53\x55\xb6\x5a\x72\x85\xbd\x5c\xce\x59\xb5\x4d\xc4\x56\x5e\x56\xbd\x85\xbe\x60\x57\x4b\x91\x60\x54\x85\xbf\x85\xc0", /* 5400 */ "\x85\xc1\x5a\x96\x85\xc2\x4a\x74\x4c\xf6\x85\xc3\x60\x5a\x85\xc4\x4d\xce\x4e\xa9\x4b\x96\x85\xc5\x57\x4c\x52\x9c\x4d\xf2\x50\xf3\x57\x62\x58\x93\x60\x58\x58\x65\x85\xc6\x51\xbf\x60\x59\x51\xef\x85\xc7\x85\xc8\x85\xc9\x4f\xfc\x85\xca\x51\x7f\x57\x6c\x59\xf6\x4c\x6d\x60\x61\x85\xcb\x60\x64\x85\xcc\x85\xcd\x4c\x92\x48\xc8\x4b\xd5\x4c\x74\x85\xce\x4d\xab\x56\xfc\x50\x74\x56\x51\x53\xf3\x85\xcf\x5b\xa7\x60\x65\x85\xd0\x57\xe1\x4a\x53\x85\xd1\x85\xd2\x57\xfb\x4a\xb4\x85\xd3\x57\xc6\x4d\xef\x85\xd4\x57\xe0\x85\xd5\x59\x5d\x85\xd6\x85\xd7\x60\x60\x85\xd8\x85\xd9\x4a\xf3\x85\xda\x4a\x6a\x85\xdb\x4c\xe5\x60\x5b\x85\xdc\x85\xdd\x85\xde\x85\xdf\x52\xc4\x85\xe0\x60\x5c\x60\x5d\x60\x5e\x53\x5b\x60\x5f\x60\x62\x5a\xb0\x60\x63\x85\xe1\x54\x5a\x57\xd7\x85\xe2\x85\xe3\x85\xe4\x85\xe5\x85\xe6\x52\xd7\x85\xe7\x60\x6a\x85\xe8\x60\x6f\x85\xe9\x5b\xdb\x85\xea\x85\xeb\x85\xec\x85\xed\x85\xee\x85\xef\x85\xf0\x85\xf1\x60\x69\x60\x7a\x57\xb5\x85\xf2\x4d\xc6\x60\x6e\x60\x68\x53\x7e\x85\xf3\x85\xf4\x55\x8c\x4d\xf3\x52\x9d\x85\xf5\x85\xf6", /* 5480 */ "\x4f\xd6\x85\xf7\x60\x66\x85\xf8\x60\x6d\x85\xf9\x53\x78\x85\xfa\x85\xfb\x85\xfc\x85\xfd\x5b\x46\x4d\xcc\x86\x41\x4f\xcb\x5a\x5d\x4c\xbf\x86\x42\x5b\xe3\x86\x43\x60\x67\x4d\x5e\x50\x47\x86\x44\x86\x45\x51\x9d\x60\x6b\x60\x6c\x86\x46\x60\x70\x86\x47\x86\x48\x86\x49\x86\x4a\x86\x4b\x60\x7b\x60\x86\x86\x4c\x60\x77\x60\x76\x5c\x69\x60\x84\x60\x85\x63\x8c\x59\xa6\x60\x72\x86\x4d\x50\x49\x86\x4e\x5a\xda\x86\x4f\x50\x68\x60\x74\x86\x50\x86\x51\x86\x52\x58\x6c\x86\x53\x86\x54\x60\x7d\x86\x55\x59\x6a\x86\x56\x60\x7e\x48\xa6\x53\xb6\x60\x73\x86\x57\x4d\xe4\x86\x58\x4b\xde\x57\x7b\x4d\x9f\x5a\xd4\x86\x59\x86\x5a\x60\x7f\x58\x8d\x48\xa4\x60\x88\x60\x71\x59\x66\x60\x75\x60\x78\x60\x79\x60\x7c\x86\x5b\x4e\x49\x86\x5c\x60\x81\x60\x82\x86\x5d\x60\x83\x60\x87\x60\x89\x5a\x54\x86\x5e\x86\x5f\x86\x60\x86\x61\x86\x62\x4c\xe6\x53\x56\x60\x8b\x55\x7a\x51\x48\x52\xc3\x86\x63\x86\x64\x50\x7e\x58\x99\x86\x65\x86\x66\x86\x67\x5b\x7c\x60\x8f\x86\x68\x86\x69\x86\x6a\x86\x6b\x86\x6c\x86\x6d\x49\xb7\x86\x6e\x4d\xde\x60\x8d\x86\x6f\x5e\x61", /* 5500 */ "\x86\x70\x59\x85\x86\x71\x86\x72\x86\x73\x86\x74\x56\x95\x4a\xbc\x86\x75\x48\xa5\x86\x76\x86\x77\x86\x78\x86\x79\x86\x7a\x60\x92\x56\xc5\x60\x93\x86\x7b\x86\x7c\x60\x8e\x86\x7d\x86\x7e\x86\x7f\x86\x81\x86\x82\x86\x83\x60\x8a\x86\x84\x86\x85\x86\x86\x86\x87\x60\x8c\x86\x88\x60\x90\x60\x91\x4e\x5d\x86\x89\x86\x8a\x60\x94\x86\x8b\x86\x8c\x60\x95\x86\x8d\x4e\x43\x86\x8e\x55\xda\x57\xa7\x60\xa6\x4a\x4a\x86\x8f\x60\xa5\x86\x90\x86\x91\x86\x92\x60\xa0\x86\x93\x86\x94\x86\x95\x86\x96\x60\x9f\x86\x97\x57\x79\x60\x9d\x86\x98\x60\x9b\x86\x99\x50\x70\x5c\x64\x86\x9a\x55\x6c\x86\x9b\x86\x9c\x60\x99\x48\xa0\x86\x9d\x86\x9e\x86\x9f\x86\xa0\x86\xa1\x60\x9e\x86\xa2\x86\xa3\x86\xa4\x86\xa5\x60\x9c\x60\xa1\x86\xa6\x86\xa7\x86\xa8\x86\xa9\x86\xaa\x60\xa7\x86\xab\x86\xac\x86\xad\x86\xae\x4c\x68\x86\xaf\x86\xb0\x53\xa0\x55\x56\x50\xb1\x60\x96\x86\xb1\x86\xb2\x53\x5e\x86\xb3\x5c\xc3\x60\x9a\x52\xf5\x86\xb4\x86\xb5\x86\xb6\x86\xb7\x86\xb8\x86\xb9\x60\xa2\x60\xa3\x60\xa4\x58\xa4\x86\xba\x86\xbb\x60\xb3\x56\xe3\x86\xbc\x60\xb0\x86\xbd", /* 5580 */ "\x50\x46\x60\xae\x57\xb8\x60\xaa\x55\x66\x86\xbe\x86\xbf\x50\xad\x60\xad\x4d\xec\x4d\xaf\x60\xa8\x86\xc0\x86\xc1\x86\xc2\x60\x97\x86\xc3\x60\xb2\x86\xc4\x86\xc5\x60\xb7\x86\xc6\x86\xc7\x86\xc8\x4a\xac\x60\xb8\x86\xc9\x86\xca\x58\x52\x4d\xc7\x86\xcb\x60\xaf\x86\xcc\x86\xcd\x86\xce\x86\xcf\x86\xd0\x86\xd1\x86\xd2\x58\xf9\x86\xd3\x86\xd4\x86\xd5\x86\xd6\x86\xd7\x86\xd8\x86\xd9\x86\xda\x86\xdb\x60\xab\x86\xdc\x5a\xfa\x86\xdd\x60\x98\x86\xde\x53\x88\x86\xdf\x60\xac\x86\xe0\x5a\x98\x86\xe1\x60\xb5\x60\xb6\x86\xe2\x86\xe3\x86\xe4\x86\xe5\x86\xe6\x60\xc3\x58\xe0\x86\xe7\x86\xe8\x86\xe9\x60\xbb\x86\xea\x86\xeb\x60\xc8\x60\xc9\x86\xec\x86\xed\x86\xee\x60\xbd\x60\xa9\x55\x44\x60\xc0\x86\xef\x60\xb1\x86\xf0\x86\xf1\x86\xf2\x86\xf3\x86\xf4\x55\xc7\x60\xc2\x86\xf5\x60\xb4\x86\xf6\x57\xca\x86\xf7\x56\x63\x60\xcc\x60\xc5\x60\xc1\x86\xf8\x60\xca\x86\xf9\x60\xb9\x60\xbe\x60\xbf\x86\xfa\x86\xfb\x60\xc4\x86\xfc\x86\xfd\x60\xc6\x60\xc7\x87\x41\x60\xcb\x87\x42\x60\xba\x87\x43\x87\x44\x87\x45\x87\x46\x87\x47\x56\x74\x60\xd4\x87\x48", /* 5600 */ "\x60\xd5\x60\xd1\x87\x49\x87\x4a\x87\x4b\x87\x4c\x87\x4d\x87\x4e\x60\xcf\x4e\xcd\x87\x4f\x87\x50\x60\xd0\x87\x51\x4c\xc1\x5c\xc4\x87\x52\x87\x53\x87\x54\x87\x55\x87\x56\x87\x57\x87\x58\x87\x59\x58\xe9\x87\x5a\x87\x5b\x51\xee\x87\x5c\x87\x5d\x60\xce\x60\xbc\x87\x5e\x87\x5f\x87\x60\x60\xd3\x60\xd2\x87\x61\x87\x62\x60\xd6\x87\x63\x87\x64\x87\x65\x87\x66\x60\xdb\x60\xd7\x87\x67\x87\x68\x87\x69\x5b\xf5\x4a\x50\x87\x6a\x5c\x8d\x87\x6b\x56\x5b\x87\x6c\x87\x6d\x60\xd9\x87\x6e\x57\xfa\x87\x6f\x87\x70\x87\x71\x4d\xd8\x87\x72\x87\x73\x87\x74\x87\x75\x87\x76\x87\x77\x87\x78\x87\x79\x87\x7a\x87\x7b\x87\x7c\x87\x7d\x60\xe0\x60\xdc\x59\xac\x87\x7e\x87\x7f\x87\x81\x87\x82\x87\x83\x60\xe1\x87\x84\x87\x85\x60\xda\x60\xd8\x60\xde\x87\x86\x87\x87\x60\xdf\x87\x88\x87\x89\x87\x8a\x87\x8b\x87\x8c\x60\xdd\x87\x8d\x60\xe3\x87\x8e\x87\x8f\x87\x90\x53\xf6\x5c\xab\x5a\xea\x60\xe5\x55\xc8\x87\x91\x87\x92\x87\x93\x87\x94\x60\xe4\x87\x95\x87\x96\x87\x97\x87\x98\x4c\xc0\x87\x99\x87\x9a\x87\x9b\x87\x9c\x60\xe6\x60\xe7\x87\x9d\x87\x9e\x87\x9f", /* 5680 */ "\x87\xa0\x87\xa1\x87\xa2\x87\xa3\x87\xa4\x60\xe8\x60\xe2\x87\xa5\x87\xa6\x87\xa7\x87\xa8\x87\xa9\x87\xaa\x87\xab\x4d\xbe\x56\xe6\x87\xac\x87\xad\x87\xae\x60\xe9\x87\xaf\x87\xb0\x87\xb1\x87\xb2\x87\xb3\x87\xb4\x87\xb5\x87\xb6\x87\xb7\x87\xb8\x87\xb9\x87\xba\x87\xbb\x87\xbc\x87\xbd\x58\x9a\x87\xbe\x87\xbf\x87\xc0\x87\xc1\x87\xc2\x87\xc3\x87\xc4\x87\xc5\x87\xc6\x87\xc7\x87\xc8\x60\xea\x87\xc9\x87\xca\x87\xcb\x87\xcc\x87\xcd\x87\xce\x87\xcf\x54\xc1\x87\xd0\x87\xd1\x87\xd2\x87\xd3\x4f\x60\x87\xd4\x87\xd5\x87\xd6\x87\xd7\x87\xd8\x87\xd9\x87\xda\x87\xdb\x87\xdc\x87\xdd\x87\xde\x87\xdf\x87\xe0\x52\xd1\x87\xe1\x87\xe2\x87\xe3\x87\xe4\x87\xe5\x87\xe6\x87\xe7\x87\xe8\x87\xe9\x60\xeb\x87\xea\x87\xeb\x60\xec\x87\xec\x87\xed\x54\x95\x56\x64\x87\xee\x60\xed\x4e\x78\x5c\xb5\x59\xf1\x60\xee\x57\x65\x87\xef\x4b\xd9\x87\xf0\x87\xf1\x87\xf2\x87\xf3\x87\xf4\x87\xf5\x60\xf0\x87\xf6\x5a\xaf\x87\xf7\x87\xf8\x50\xa6\x4a\xd0\x87\xf9\x87\xfa\x57\xa6\x60\xef\x87\xfb\x87\xfc\x87\xfd\x60\xf1\x4d\x6c\x88\x41\x88\x42\x4d\x9b\x57\x5c\x60\xf2", /* 5700 */ "\x88\x43\x88\x44\x88\x45\x53\xd3\x60\xf3\x88\x46\x5a\xb1\x88\x47\x54\xa5\x60\xf5\x60\xf4\x88\x48\x88\x49\x88\x4a\x88\x4b\x88\x4c\x88\x4d\x88\x4e\x88\x4f\x88\x50\x88\x51\x88\x52\x88\x53\x88\x54\x88\x55\x88\x56\x88\x57\x88\x58\x60\xf6\x88\x59\x88\x5a\x57\x61\x88\x5b\x88\x5c\x88\x5d\x55\xa4\x88\x5e\x88\x5f\x88\x60\x88\x61\x5a\xd9\x5e\x77\x5e\x79\x88\x62\x5e\x78\x4d\x88\x5e\x7c\x5e\x7d\x4b\x78\x88\x63\x88\x64\x5e\x7a\x88\x65\x88\x66\x88\x67\x88\x68\x88\x69\x5e\x7b\x4a\x41\x5e\x7f\x88\x6a\x88\x6b\x4e\x99\x88\x6c\x5b\xb6\x88\x6d\x5e\x81\x88\x6e\x88\x6f\x88\x70\x88\x71\x4f\xf8\x88\x72\x88\x73\x4c\x5b\x88\x74\x5e\x70\x56\xad\x50\x52\x4e\x55\x5c\x99\x50\x73\x88\x75\x88\x76\x88\x77\x88\x78\x88\x79\x50\x8a\x88\x7a\x88\x7b\x4e\xe0\x56\xb2\x5e\x7e\x48\xd2\x57\xea\x4c\x78\x5c\x59\x53\xc1\x88\x7c\x88\x7d\x50\xa3\x88\x7e\x56\xb8\x88\x7f\x5e\x88\x5e\x82\x53\xb9\x5e\x84\x88\x81\x5e\x89\x88\x82\x53\x98\x88\x83\x88\x84\x88\x85\x5e\x8b\x88\x86\x88\x87\x5e\x8a\x50\x60\x88\x88\x88\x89\x88\x8a\x5e\x87\x5e\x86\x88\x8b\x88\x8c\x88\x8d", /* 5780 */ "\x88\x8e\x88\x8f\x4a\xb8\x50\xab\x51\xa1\x5e\x83\x5e\x85\x88\x90\x88\x91\x88\x92\x88\x93\x58\xcc\x5e\x8e\x88\x94\x88\x95\x88\x96\x88\x97\x88\x98\x50\xdc\x5e\x93\x88\x99\x88\x9a\x88\x9b\x88\x9c\x88\x9d\x88\x9e\x88\x9f\x4b\xe1\x88\xa0\x88\xa1\x88\xa2\x88\xa3\x5e\x94\x5e\x72\x4d\x58\x5a\xaa\x5e\x8d\x88\xa4\x50\x71\x5e\x91\x88\xa5\x5e\x71\x88\xa6\x4b\x87\x88\xa7\x5e\x8c\x50\x86\x88\xa8\x88\xa9\x88\xaa\x5e\x8f\x88\xab\x5e\x92\x88\xac\x88\xad\x88\xae\x5e\x9a\x88\xaf\x88\xb0\x88\xb1\x88\xb2\x88\xb3\x88\xb4\x88\xb5\x88\xb6\x88\xb7\x4d\x41\x48\xa2\x88\xb8\x88\xb9\x88\xba\x88\xbb\x88\xbc\x88\xbd\x88\xbe\x51\xf0\x88\xbf\x88\xc0\x4a\x67\x5e\x90\x88\xc1\x88\xc2\x5e\x99\x88\xc3\x53\xd1\x5e\x95\x88\xc4\x88\xc5\x5e\x96\x5e\x98\x5e\x97\x88\xc6\x88\xc7\x5e\x9f\x88\xc8\x5a\x93\x49\xb9\x88\xc9\x88\xca\x88\xcb\x5e\x9e\x88\xcc\x88\xcd\x88\xce\x88\xcf\x88\xd0\x88\xd1\x88\xd2\x88\xd3\x5e\xa3\x88\xd4\x5e\x9c\x88\xd5\x88\xd6\x88\xd7\x88\xd8\x5e\x9b\x88\xd9\x88\xda\x88\xdb\x5e\x9d\x53\x81\x4e\x9a\x88\xdc\x88\xdd\x5e\xa2\x88\xde\x88\xdf", /* 5800 */ "\x5e\xa4\x88\xe0\x56\xc2\x88\xe1\x88\xe2\x88\xe3\x4b\xd0\x5f\x60\x88\xe4\x88\xe5\x88\xe6\x5e\xa0\x88\xe7\x5e\xa1\x88\xe8\x88\xe9\x88\xea\x54\x55\x88\xeb\x88\xec\x88\xed\x4b\xe8\x88\xee\x88\xef\x88\xf0\x5e\xa6\x88\xf1\x88\xf2\x88\xf3\x88\xf4\x5e\xa5\x88\xf5\x5e\xa8\x49\x44\x88\xf6\x88\xf7\x4b\x6c\x88\xf8\x88\xf9\x88\xfa\x88\xfb\x88\xfc\x50\x50\x88\xfd\x89\x41\x89\x42\x89\x43\x89\x44\x59\x7f\x89\x45\x89\x46\x89\x47\x89\x48\x4b\xc1\x89\x49\x89\x4a\x89\x4b\x89\x4c\x89\x4d\x89\x4e\x89\x4f\x89\x50\x89\x51\x89\x52\x89\x53\x89\x54\x89\x55\x89\x56\x5e\xa7\x89\x57\x89\x58\x89\x59\x89\x5a\x89\x5b\x89\x5c\x89\x5d\x56\x9b\x66\x94\x89\x5e\x89\x5f\x89\x60\x56\x7c\x89\x61\x89\x62\x56\x9f\x89\x63\x89\x64\x89\x65\x56\xc0\x89\x66\x89\x67\x89\x68\x89\x69\x89\x6a\x54\xfa\x89\x6b\x89\x6c\x89\x6d\x89\x6e\x89\x6f\x89\x70\x5e\xa9\x89\x71\x89\x72\x89\x73\x89\x74\x89\x75\x56\xed\x5e\xaa\x89\x76\x89\x77\x89\x78\x89\x79\x89\x7a\x89\x7b\x89\x7c\x89\x7d\x89\x7e\x89\x7f\x89\x81\x89\x82\x89\x83\x89\x84\x89\x85\x89\x86\x89\x87\x5e\x73\x89\x88", /* 5880 */ "\x5e\xae\x5e\xab\x89\x89\x4f\xb2\x89\x8a\x55\xfa\x89\x8b\x89\x8c\x89\x8d\x5e\xac\x89\x8e\x89\x8f\x89\x90\x89\x91\x89\x92\x89\x93\x89\x94\x89\x95\x55\x6a\x52\xb8\x89\x96\x89\x97\x89\x98\x89\x99\x89\x9a\x54\x5d\x5e\xad\x89\x9b\x89\x9c\x89\x9d\x5a\xf5\x58\xe5\x89\x9e\x89\x9f\x89\xa0\x89\xa1\x89\xa2\x89\xa3\x89\xa4\x89\xa5\x52\xaa\x4b\xd4\x89\xa6\x89\xa7\x89\xa8\x89\xa9\x89\xaa\x89\xab\x89\xac\x89\xad\x89\xae\x89\xaf\x89\xb0\x89\xb1\x89\xb2\x89\xb3\x89\xb4\x89\xb5\x89\xb6\x89\xb7\x5e\x74\x89\xb8\x89\xb9\x89\xba\x89\xbb\x49\x7a\x89\xbc\x89\xbd\x89\xbe\x5e\x75\x89\xbf\x89\xc0\x89\xc1\x89\xc2\x89\xc3\x89\xc4\x89\xc5\x89\xc6\x89\xc7\x89\xc8\x89\xc9\x5e\x76\x89\xca\x89\xcb\x89\xcc\x4d\xbd\x89\xcd\x89\xce\x89\xcf\x89\xd0\x89\xd1\x89\xd2\x89\xd3\x89\xd4\x89\xd5\x89\xd6\x89\xd7\x89\xd8\x89\xd9\x89\xda\x54\xbf\x89\xdb\x89\xdc\x89\xdd\x89\xde\x89\xdf\x89\xe0\x55\xbe\x54\xc8\x89\xe1\x5c\x53\x89\xe2\x55\x9a\x89\xe3\x89\xe4\x50\x67\x89\xe5\x89\xe6\x4d\xf7\x89\xe7\x89\xe8\x59\xbb\x89\xe9\x89\xea\x89\xeb\x89\xec\x89\xed\x89\xee", /* 5900 */ "\x89\xef\x89\xf0\x61\xb9\x89\xf1\x4a\xa5\x89\xf2\x89\xf3\x49\x58\x89\xf4\x89\xf5\x89\xf6\x89\xf7\x89\xf8\x4c\xb3\x89\xf9\x58\x64\x89\xfa\x89\xfb\x89\xfc\x89\xfd\x5d\x88\x58\x46\x57\x83\x8a\x41\x8a\x42\x5d\x8e\x4b\xdf\x8a\x43\x59\xb8\x8a\x44\x8a\x45\x4d\x5b\x8a\x46\x8a\x47\x8a\x48\x8a\x49\x61\xb8\x61\xb6\x8a\x4a\x4a\xf2\x8a\x4b\x56\xeb\x56\xaa\x4c\x93\x8a\x4c\x5c\xb1\x59\x8c\x4d\xba\x8a\x4d\x55\xa6\x8a\x4e\x8a\x4f\x57\x57\x8a\x50\x8a\x51\x59\xc3\x50\x85\x4e\xcf\x4b\xe0\x8a\x52\x5f\xc4\x8a\x53\x8a\x54\x8a\x55\x8a\x56\x5f\xc5\x5e\x5c\x8a\x57\x59\x79\x8a\x58\x8a\x59\x53\xe5\x52\xcd\x4c\x8f\x8a\x5a\x4c\x7c\x8a\x5b\x8a\x5c\x50\x9d\x5c\x81\x8a\x5d\x53\xf4\x8a\x5e\x8a\x5f\x49\x5c\x5f\xc7\x4f\x51\x56\xd6\x5f\xc9\x8a\x60\x5f\xc8\x8a\x61\x8a\x62\x8a\x63\x8a\x64\x8a\x65\x4b\x8d\x8a\x66\x55\x7d\x8a\x67\x8a\x68\x48\xc1\x8a\x69\x8a\x6a\x8a\x6b\x8a\x6c\x8a\x6d\x8a\x6e\x8a\x6f\x8a\x70\x8a\x71\x8a\x72\x8a\x73\x8a\x74\x8a\x75\x53\x4e\x53\x4b\x8a\x76\x52\xcb\x8a\x77\x4e\xe8\x56\x9e\x8a\x78\x8a\x79\x8a\x7a\x4d\xc2\x8a\x7b\x8a\x7c", /* 5980 */ "\x8a\x7d\x63\x9a\x54\xe6\x63\x9b\x57\x9e\x8a\x7e\x5c\x51\x4c\xbd\x51\xe7\x8a\x7f\x54\xd0\x8a\x81\x8a\x82\x63\x9c\x8a\x83\x8a\x84\x8a\x85\x8a\x86\x4b\xc9\x4e\xca\x8a\x87\x8a\x88\x59\x9e\x63\xa0\x8a\x89\x52\x8f\x8a\x8a\x8a\x8b\x8a\x8c\x8a\x8d\x63\xa3\x8a\x8e\x8a\x8f\x8a\x90\x8a\x91\x63\x9f\x63\xa4\x57\x77\x8a\x92\x8a\x93\x4c\x61\x63\x9d\x63\x9e\x63\xa2\x8a\x94\x8a\x95\x52\xdc\x63\xa7\x8a\x96\x8a\x97\x63\xa6\x8a\x98\x8a\x99\x8a\x9a\x8a\x9b\x8a\x9c\x8a\x9d\x52\x63\x8a\x9e\x53\xdd\x8a\x9f\x8a\xa0\x63\xa9\x8a\xa1\x8a\xa2\x8a\xa3\x8a\xa4\x8a\xa5\x8a\xa6\x8a\xa7\x52\xb6\x8a\xa8\x8a\xa9\x8a\xaa\x63\xa1\x55\xbb\x8a\xab\x8a\xac\x8a\xad\x8a\xae\x4f\x84\x4d\x63\x63\xa5\x58\xd4\x57\xae\x8a\xaf\x8a\xb0\x63\xa8\x63\xaf\x8a\xb1\x59\xa5\x8a\xb2\x4f\x4a\x63\xac\x8a\xb3\x8a\xb4\x8a\xb5\x8a\xb6\x8a\xb7\x63\xae\x8a\xb8\x50\xd0\x8a\xb9\x8a\xba\x59\xcb\x8a\xbb\x8a\xbc\x8a\xbd\x4e\xa6\x8a\xbe\x8a\xbf\x8a\xc0\x8a\xc1\x8a\xc2\x8a\xc3\x8a\xc4\x8a\xc5\x8a\xc6\x8a\xc7\x8a\xc8\x8a\xc9\x63\xb0\x8a\xca\x59\xf5\x8a\xcb\x8a\xcc\x8a\xcd\x5c\x6b", /* 5a00 */ "\x8a\xce\x57\x9f\x8a\xcf\x57\x7e\x51\xa5\x63\xaa\x63\xab\x4f\x5f\x63\xad\x63\xb2\x8a\xd0\x8a\xd1\x63\xb1\x8a\xd2\x8a\xd3\x8a\xd4\x8a\xd5\x63\xb5\x8a\xd6\x63\xb7\x8a\xd7\x8a\xd8\x8a\xd9\x8a\xda\x52\xee\x8a\xdb\x8a\xdc\x8a\xdd\x52\xc7\x8a\xde\x8a\xdf\x4f\xe9\x55\x90\x8a\xe0\x8a\xe1\x63\xb6\x8a\xe2\x4b\xef\x8a\xe3\x8a\xe4\x8a\xe5\x52\x85\x8a\xe6\x8a\xe7\x8a\xe8\x8a\xe9\x8a\xea\x8a\xeb\x8a\xec\x5a\x8a\x63\xb3\x8a\xed\x63\xb4\x8a\xee\x54\xa1\x8a\xef\x8a\xf0\x8a\xf1\x8a\xf2\x8a\xf3\x63\xbc\x8a\xf4\x8a\xf5\x8a\xf6\x63\xb8\x8a\xf7\x8a\xf8\x8a\xf9\x8a\xfa\x8a\xfb\x53\xc4\x8a\xfc\x8a\xfd\x57\x92\x63\xba\x8b\x41\x8b\x42\x8b\x43\x8b\x44\x8b\x45\x8b\x46\x8b\x47\x8b\x48\x8b\x49\x8b\x4a\x63\xbb\x8b\x4b\x8b\x4c\x8b\x4d\x8b\x4e\x4e\x8a\x8b\x4f\x8b\x50\x8b\x51\x8b\x52\x8b\x53\x8b\x54\x8b\x55\x63\xbd\x8b\x56\x8b\x57\x8b\x58\x8b\x59\x63\xb9\x8b\x5a\x8b\x5b\x50\xb6\x8b\x5c\x8b\x5d\x8b\x5e\x8b\x5f\x8b\x60\x8b\x61\x8b\x62\x8b\x63\x8b\x64\x5a\x44\x63\xbe\x55\x95\x63\xc2\x8b\x65\x8b\x66\x63\xc3\x8b\x67\x8b\x68\x8b\x69\x8b\x6a\x58\xf5", /* 5a80 */ "\x8b\x6b\x8b\x6c\x8b\x6d\x8b\x6e\x8b\x6f\x8b\x70\x8b\x71\x8b\x72\x8b\x73\x8b\x74\x8b\x75\x8b\x76\x8b\x77\x8b\x78\x8b\x79\x8b\x7a\x8b\x7b\x8b\x7c\x52\x5d\x8b\x7d\x8b\x7e\x8b\x7f\x8b\x81\x8b\x82\x8b\x83\x8b\x84\x52\x64\x63\xc1\x8b\x85\x8b\x86\x8b\x87\x8b\x88\x8b\x89\x8b\x8a\x8b\x8b\x8b\x8c\x8b\x8d\x8b\x8e\x8b\x8f\x8b\x90\x8b\x91\x8b\x92\x63\xc0\x8b\x93\x8b\x94\x8b\x95\x8b\x96\x8b\x97\x8b\x98\x8b\x99\x63\xc6\x58\x51\x8b\x9a\x66\x95\x8b\x9b\x8b\x9c\x63\xc9\x8b\x9d\x8b\x9e\x8b\x9f\x8b\xa0\x8b\xa1\x63\xc4\x8b\xa2\x8b\xa3\x4e\xdd\x55\x49\x8b\xa4\x8b\xa5\x8b\xa6\x8b\xa7\x8b\xa8\x8b\xa9\x4e\xb4\x8b\xaa\x8b\xab\x58\x73\x8b\xac\x8b\xad\x8b\xae\x8b\xaf\x8b\xb0\x63\xc7\x8b\xb1\x63\xc8\x8b\xb2\x63\xcd\x8b\xb3\x63\xcf\x8b\xb4\x8b\xb5\x8b\xb6\x63\xd0\x8b\xb7\x8b\xb8\x8b\xb9\x63\xca\x4b\x75\x8b\xba\x63\xcb\x8b\xbb\x8b\xbc\x63\xce\x8b\xbd\x8b\xbe\x52\xda\x8b\xbf\x63\xc5\x8b\xc0\x8b\xc1\x8b\xc2\x8b\xc3\x8b\xc4\x63\xcc\x8b\xc5\x8b\xc6\x8b\xc7\x8b\xc8\x8b\xc9\x8b\xca\x8b\xcb\x8b\xcc\x8b\xcd\x8b\xce\x8b\xcf\x8b\xd0\x8b\xd1\x8b\xd2", /* 5b00 */ "\x8b\xd3\x8b\xd4\x8b\xd5\x8b\xd6\x8b\xd7\x8b\xd8\x8b\xd9\x8b\xda\x8b\xdb\x63\xd1\x8b\xdc\x8b\xdd\x8b\xde\x8b\xdf\x8b\xe0\x8b\xe1\x8b\xe2\x8b\xe3\x8b\xe4\x8b\xe5\x8b\xe6\x8b\xe7\x63\xd3\x63\xd2\x8b\xe8\x8b\xe9\x8b\xea\x8b\xeb\x8b\xec\x8b\xed\x8b\xee\x8b\xef\x8b\xf0\x8b\xf1\x8b\xf2\x8b\xf3\x8b\xf4\x8b\xf5\x8b\xf6\x8b\xf7\x8b\xf8\x8b\xf9\x8b\xfa\x8b\xfb\x8b\xfc\x8b\xfd\x8c\x41\x8c\x42\x8c\x43\x8c\x44\x63\xd4\x8c\x45\x5d\x99\x8c\x46\x8c\x47\x63\xd5\x8c\x48\x8c\x49\x8c\x4a\x8c\x4b\x8c\x4c\x8c\x4d\x8c\x4e\x8c\x4f\x63\xd6\x8c\x50\x8c\x51\x8c\x52\x8c\x53\x8c\x54\x8c\x55\x8c\x56\x8c\x57\x8c\x58\x8c\x59\x8c\x5a\x8c\x5b\x8c\x5c\x8c\x5d\x8c\x5e\x5c\x73\x63\xdc\x8c\x5f\x63\xdd\x50\x77\x5a\xcf\x8c\x60\x5c\x76\x4a\xe5\x56\x90\x63\xd9\x5c\xc2\x5c\x6e\x58\xa1\x8c\x61\x52\x6f\x8c\x62\x8c\x63\x63\xde\x4e\xbd\x4d\x62\x63\xda\x59\x47\x8c\x64\x8c\x65\x4d\xa1\x51\xce\x8c\x66\x5c\xaa\x8c\x67\x8c\x68\x8c\x69\x55\xea\x63\x8f\x8c\x6a\x63\xdb\x8c\x6b\x4c\x96\x8c\x6c\x8c\x6d\x8c\x6e\x8c\x6f\x54\xe5\x8c\x70\x8c\x71\x52\xf4\x8c\x72\x8c\x73", /* 5b80 */ "\x63\x52\x52\xfd\x8c\x74\x56\x9d\x63\x53\x5b\x4c\x8c\x75\x5a\x8f\x55\xd7\x48\xb1\x8c\x76\x56\x6e\x57\x8b\x8c\x77\x8c\x78\x4d\xe9\x8c\x79\x8c\x7a\x8c\x7b\x63\x55\x8c\x7c\x63\x54\x8c\x7d\x5c\x7a\x4d\x79\x5b\xe5\x4b\xa7\x57\x91\x59\xca\x49\x46\x55\xb4\x8c\x7e\x4a\x89\x55\x94\x50\x6d\x58\xfa\x55\xd1\x63\x56\x4e\x62\x8c\x7f\x8c\x81\x8c\x82\x58\x7c\x4d\x4c\x8c\x83\x8c\x84\x8c\x85\x8c\x86\x5a\xd6\x8c\x87\x8c\x88\x4d\xa5\x59\x88\x58\x9d\x4e\xd1\x8c\x89\x63\x57\x54\xdc\x8c\x8a\x8c\x8b\x8c\x8c\x50\x8e\x49\x97\x56\x7e\x8c\x8d\x8c\x8e\x4e\xc4\x8c\x8f\x4e\xc3\x59\xf9\x52\x7c\x50\x7c\x8c\x90\x8c\x91\x8c\x92\x8c\x93\x4c\xba\x8c\x94\x8c\x95\x8c\x96\x52\x62\x8c\x97\x4d\xad\x5a\xa1\x8c\x98\x8c\x99\x8c\x9a\x8c\x9b\x8c\x9c\x8c\x9d\x8c\x9e\x8c\x9f\x8c\xa0\x54\x7e\x52\xae\x49\xeb\x8c\xa1\x4d\x71\x8c\xa2\x8c\xa3\x63\x5b\x51\x68\x8c\xa4\x8c\xa5\x5b\x4f\x8c\xa6\x8c\xa7\x8c\xa8\x8c\xa9\x8c\xaa\x63\x5c\x8c\xab\x63\x5e\x8c\xac\x8c\xad\x8c\xae\x8c\xaf\x8c\xb0\x8c\xb1\x8c\xb2\x4a\xe6\x4b\xd3\x56\x62\x59\x50\x4b\x5c\x8c\xb3\x8c\xb4\x55\xd8", /* 5c00 */ "\x8c\xb5\x4c\x83\x8c\xb6\x8c\xb7\x55\x85\x8c\xb8\x4f\x4b\x8c\xb9\x8c\xba\x57\xbd\x5c\x91\x8c\xbb\x8c\xbc\x8c\xbd\x8c\xbe\x58\xa0\x8c\xbf\x55\x79\x8c\xc0\x8c\xc1\x4b\xfa\x63\xd7\x4e\xe1\x8c\xc2\x4a\x5e\x8c\xc3\x55\x70\x8c\xc4\x63\xd8\x4a\x42\x8c\xc5\x8c\xc6\x8c\xc7\x8c\xc8\x5f\xcb\x8c\xc9\x5a\x68\x5f\xcc\x8c\xca\x59\xa1\x8c\xcb\x8c\xcc\x8c\xcd\x8c\xce\x5f\xcd\x8c\xcf\x8c\xd0\x8c\xd1\x8c\xd2\x4f\xcc\x8c\xd3\x8c\xd4\x5f\xce\x8c\xd5\x8c\xd6\x8c\xd7\x55\xab\x59\xfb\x4a\x7f\x63\x8b\x52\xe0\x4f\xa0\x57\xb1\x52\xf1\x4f\xd5\x53\xa7\x49\xe2\x8c\xd8\x8c\xd9\x4f\xd2\x8c\xda\x8c\xdb\x54\x9d\x56\xea\x4f\x8d\x57\xdc\x8c\xdc\x8c\xdd\x55\xb9\x53\xc0\x63\x8d\x58\xbb\x8c\xde\x8c\xdf\x8c\xe0\x5b\x59\x8c\xe1\x8c\xe2\x8c\xe3\x63\x8e\x8c\xe4\x8c\xe5\x8c\xe6\x8c\xe7\x55\xf3\x8c\xe8\x57\x60\x51\xc4\x8c\xe9\x63\x90\x8c\xea\x51\xc3\x63\x91\x8c\xeb\x8c\xec\x8c\xed\x8c\xee\x8c\xef\x8c\xf0\x8c\xf1\x63\x99\x57\x6d\x8c\xf2\x55\x5d\x8c\xf3\x8c\xf4\x8c\xf5\x8c\xf6\x8c\xf7\x8c\xf8\x8c\xf9\x59\xd8\x61\x48\x8c\xfa\x8c\xfb\x8c\xfc\x8c\xfd\x5a\x8d", /* 5c80 */ "\x8d\x41\x56\x8b\x53\xf0\x8d\x42\x8d\x43\x8d\x44\x8d\x45\x8d\x46\x61\x4c\x8d\x47\x8d\x48\x8d\x49\x61\x47\x61\x49\x8d\x4a\x8d\x4b\x61\x4a\x61\x4f\x8d\x4c\x8d\x4d\x49\xec\x8d\x4e\x61\x4b\x4c\xd9\x61\x4d\x61\x4e\x61\x50\x4b\x5a\x61\x51\x8d\x4f\x8d\x50\x8d\x51\x8d\x52\x8d\x53\x61\x53\x61\x58\x8d\x54\x8d\x55\x8d\x56\x8d\x57\x8d\x58\x59\x72\x8d\x59\x61\x56\x61\x55\x51\x8c\x8d\x5a\x8d\x5b\x8d\x5c\x61\x57\x8d\x5d\x5a\xbf\x8d\x5e\x61\x52\x8d\x5f\x61\x5a\x48\xb5\x8d\x60\x8d\x61\x8d\x62\x8d\x63\x61\x54\x8d\x64\x50\x9a\x8d\x65\x61\x59\x8d\x66\x8d\x67\x61\x5b\x8d\x68\x8d\x69\x8d\x6a\x8d\x6b\x8d\x6c\x8d\x6d\x61\x5e\x8d\x6e\x8d\x6f\x8d\x70\x8d\x71\x8d\x72\x8d\x73\x61\x5c\x8d\x74\x8d\x75\x8d\x76\x8d\x77\x8d\x78\x8d\x79\x5b\xc4\x8d\x7a\x8d\x7b\x8d\x7c\x8d\x7d\x8d\x7e\x8d\x7f\x8d\x81\x58\x5f\x8d\x82\x8d\x83\x61\x5d\x61\x5f\x51\xcc\x8d\x84\x4b\xea\x8d\x85\x5a\x99\x8d\x86\x8d\x87\x54\x6d\x8d\x88\x8d\x89\x4c\x86\x8d\x8a\x8d\x8b\x8d\x8c\x8d\x8d\x8d\x8e\x8d\x8f\x8d\x90\x8d\x91\x8d\x92\x8d\x93\x4f\xfd\x8d\x94\x8d\x95\x8d\x96\x8d\x97", /* 5d00 */ "\x8d\x98\x8d\x99\x61\x60\x61\x61\x8d\x9a\x8d\x9b\x61\x67\x4a\x88\x8d\x9c\x8d\x9d\x8d\x9e\x8d\x9f\x8d\xa0\x8d\xa1\x53\xe8\x8d\xa2\x8d\xa3\x8d\xa4\x8d\xa5\x8d\xa6\x4a\xdd\x8d\xa7\x59\x62\x8d\xa8\x8d\xa9\x8d\xaa\x8d\xab\x61\x68\x8d\xac\x8d\xad\x61\x66\x8d\xae\x8d\xaf\x8d\xb0\x8d\xb1\x8d\xb2\x61\x65\x8d\xb3\x61\x63\x61\x62\x8d\xb4\x49\x60\x8d\xb5\x8d\xb6\x8d\xb7\x5b\x58\x61\x64\x8d\xb8\x8d\xb9\x8d\xba\x8d\xbb\x8d\xbc\x61\x6b\x8d\xbd\x8d\xbe\x8d\xbf\x8d\xc0\x8d\xc1\x8d\xc2\x8d\xc3\x8d\xc4\x61\x6c\x61\x6a\x8d\xc5\x8d\xc6\x8d\xc7\x8d\xc8\x8d\xc9\x8d\xca\x8d\xcb\x8d\xcc\x68\x9b\x8d\xcd\x8d\xce\x61\x73\x61\x72\x54\x56\x8d\xcf\x8d\xd0\x8d\xd1\x8d\xd2\x8d\xd3\x8d\xd4\x8d\xd5\x8d\xd6\x8d\xd7\x8d\xd8\x8d\xd9\x61\x69\x8d\xda\x8d\xdb\x61\x6e\x8d\xdc\x61\x70\x8d\xdd\x8d\xde\x8d\xdf\x8d\xe0\x8d\xe1\x8d\xe2\x8d\xe3\x8d\xe4\x8d\xe5\x8d\xe6\x8d\xe7\x61\x74\x8d\xe8\x61\x71\x61\x6d\x8d\xe9\x8d\xea\x61\x6f\x8d\xeb\x8d\xec\x8d\xed\x8d\xee\x61\x75\x8d\xef\x8d\xf0\x8d\xf1\x8d\xf2\x8d\xf3\x8d\xf4\x8d\xf5\x8d\xf6\x8d\xf7\x8d\xf8\x8d\xf9", /* 5d80 */ "\x8d\xfa\x8d\xfb\x61\x76\x8d\xfc\x8d\xfd\x8e\x41\x8e\x42\x8e\x43\x8e\x44\x8e\x45\x8e\x46\x8e\x47\x8e\x48\x8e\x49\x8e\x4a\x8e\x4b\x8e\x4c\x8e\x4d\x8e\x4e\x8e\x4f\x8e\x50\x8e\x51\x8e\x52\x8e\x53\x8e\x54\x61\x77\x8e\x55\x8e\x56\x8e\x57\x61\x78\x8e\x58\x8e\x59\x8e\x5a\x8e\x5b\x8e\x5c\x8e\x5d\x8e\x5e\x8e\x5f\x8e\x60\x8e\x61\x8e\x62\x8e\x63\x8e\x64\x8e\x65\x8e\x66\x8e\x67\x8e\x68\x8e\x69\x8e\x6a\x8e\x6b\x8e\x6c\x8e\x6d\x8e\x6e\x8e\x6f\x8e\x70\x61\x7a\x8e\x71\x8e\x72\x8e\x73\x8e\x74\x8e\x75\x8e\x76\x8e\x77\x8e\x78\x8e\x79\x8e\x7a\x8e\x7b\x8e\x7c\x8e\x7d\x61\x7b\x8e\x7e\x8e\x7f\x8e\x81\x8e\x82\x8e\x83\x8e\x84\x8e\x85\x57\xa0\x8e\x86\x8e\x87\x8e\x88\x8e\x89\x8e\x8a\x8e\x8b\x8e\x8c\x8e\x8d\x8e\x8e\x8e\x8f\x8e\x90\x8e\x91\x8e\x92\x64\x7d\x8e\x93\x4a\xa7\x5b\xdc\x8e\x94\x8e\x95\x59\x52\x4a\x52\x8e\x96\x8e\x97\x4d\x44\x5c\x94\x54\x69\x4f\xdd\x4d\x4e\x8e\x98\x57\xd6\x8e\x99\x8e\x9a\x49\xed\x5e\x6f\x8e\x9b\x4e\xb9\x59\xd0\x56\x68\x48\xcc\x8e\x9c\x8e\x9d\x58\x90\x8e\x9e\x8e\x9f\x8e\xa0\x8e\xa1\x8e\xa2\x5d\x84\x4f\x8e\x8e\xa3", /* 5e00 */ "\x8e\xa4\x49\x72\x55\xcf\x49\xbb\x8e\xa5\x56\x47\x4c\x4b\x8e\xa6\x55\xa5\x8e\xa7\x8e\xa8\x8e\xa9\x58\x43\x8e\xaa\x8e\xab\x60\xf7\x5b\x6a\x60\xfa\x8e\xac\x8e\xad\x60\xf9\x53\x61\x56\xfa\x8e\xae\x51\x51\x60\xf8\x5b\xe2\x49\xae\x5b\xc3\x4b\x7b\x8e\xaf\x8e\xb0\x8e\xb1\x8e\xb2\x8e\xb3\x8e\xb4\x8e\xb5\x8e\xb6\x4a\xf7\x5b\xa0\x8e\xb7\x8e\xb8\x8e\xb9\x8e\xba\x8e\xbb\x58\x4f\x48\xee\x8e\xbc\x8e\xbd\x60\xfb\x8e\xbe\x8e\xbf\x8e\xc0\x8e\xc1\x8e\xc2\x61\x41\x4a\x43\x8e\xc3\x8e\xc4\x60\xfc\x60\xfd\x52\x51\x8e\xc5\x8e\xc6\x8e\xc7\x8e\xc8\x52\x7d\x8e\xc9\x61\x42\x4c\x9a\x8e\xca\x8e\xcb\x8e\xcc\x8e\xcd\x8e\xce\x8e\xcf\x4e\x6f\x8e\xd0\x8e\xd1\x8e\xd2\x8e\xd3\x8e\xd4\x8e\xd5\x8e\xd6\x61\x43\x52\xba\x8e\xd7\x8e\xd8\x8e\xd9\x8e\xda\x8e\xdb\x61\x44\x8e\xdc\x8e\xdd\x61\x45\x8e\xde\x8e\xdf\x61\x46\x4a\xb0\x8e\xe0\x8e\xe1\x8e\xe2\x8e\xe3\x8e\xe4\x8e\xe5\x8e\xe6\x8e\xe7\x8e\xe8\x8e\xe9\x8e\xea\x8e\xeb\x8e\xec\x8e\xed\x8e\xee\x4c\xc8\x53\xbc\x52\xe9\x8e\xef\x49\xa1\x8e\xf0\x58\xd1\x8e\xf1\x64\x7b\x4e\x63\x5a\x77\x5a\x64\x8e\xf2\x4d\x84", /* 5e80 */ "\x61\xce\x8e\xf3\x8e\xf4\x8e\xf5\x5c\x4f\x8e\xf6\x54\x8d\x49\x73\x8e\xf7\x8e\xf8\x4a\xb1\x61\xd0\x8e\xf9\x8e\xfa\x8e\xfb\x58\xf1\x51\xad\x61\xcf\x8e\xfc\x50\x83\x5a\x46\x4b\x77\x61\xd1\x4b\x8b\x8e\xfd\x52\x8e\x4c\xfc\x8f\x41\x4c\xad\x8f\x42\x53\x73\x4c\x6f\x61\xd3\x8f\x43\x8f\x44\x8f\x45\x8f\x46\x61\xd2\x4b\xc7\x5c\x9a\x8f\x47\x8f\x48\x8f\x49\x8f\x4a\x8f\x4b\x57\x45\x8f\x4c\x8f\x4d\x8f\x4e\x8f\x4f\x8f\x50\x61\xd7\x8f\x51\x61\xd5\x55\xfb\x50\x55\x5a\x59\x61\xd4\x8f\x52\x8f\x53\x8f\x54\x8f\x55\x61\xd6\x8f\x56\x8f\x57\x8f\x58\x8f\x59\x8f\x5a\x8f\x5b\x8f\x5c\x8f\x5d\x8f\x5e\x8f\x5f\x51\x4e\x50\xc7\x8f\x60\x8f\x61\x8f\x62\x8f\x63\x8f\x64\x8f\x65\x61\xda\x61\xd9\x50\xa9\x8f\x66\x8f\x67\x51\x6e\x8f\x68\x8f\x69\x8f\x6a\x8f\x6b\x61\xdb\x8f\x6c\x8f\x6d\x8f\x6e\x8f\x6f\x8f\x70\x8f\x71\x8f\x72\x8f\x73\x8f\x74\x8f\x75\x8f\x76\x8f\x77\x61\xdc\x8f\x78\x61\xdd\x8f\x79\x8f\x7a\x8f\x7b\x8f\x7c\x8f\x7d\x8f\x7e\x8f\x7f\x8f\x81\x8f\x82\x5e\x68\x8f\x83\x59\x73\x57\x42\x8f\x84\x8f\x85\x4f\x48\x8f\x86\x8f\x87\x8f\x88\x5f\xc2\x5c\xa4", /* 5f00 */ "\x50\x4a\x5e\x6d\x59\xeb\x53\xf9\x53\x4a\x8f\x89\x8f\x8a\x8f\x8b\x5f\xc3\x8f\x8c\x49\x77\x60\x4e\x8f\x8d\x8f\x8e\x8f\x8f\x55\xbc\x8f\x90\x60\x51\x8f\x91\x4d\x4d\x8f\x92\x59\xfc\x8f\x93\x4c\xa4\x4d\xea\x8f\x94\x8f\x95\x4a\x7a\x8f\x96\x8f\x97\x8f\x98\x4b\x7c\x5b\x65\x8f\x99\x8f\x9a\x8f\x9b\x8f\x9c\x52\x76\x58\x72\x4e\x41\x8f\x9d\x63\x94\x63\x93\x8f\x9e\x8f\x9f\x63\x95\x8f\xa0\x57\x85\x8f\xa1\x54\xf4\x8f\xa2\x8f\xa3\x8f\xa4\x8f\xa5\x8f\xa6\x8f\xa7\x8f\xa8\x4b\x4f\x54\x5f\x8f\xa9\x63\x97\x8f\xaa\x8f\xab\x8f\xac\x66\xaf\x8f\xad\x8f\xae\x8f\xaf\x8f\xb0\x8f\xb1\x8f\xb2\x8f\xb3\x8f\xb4\x8f\xb5\x8f\xb6\x8f\xb7\x8f\xb8\x8f\xb9\x8f\xba\x8f\xbb\x63\x87\x8f\xbc\x4d\x8a\x4b\x51\x8f\xbd\x51\xbb\x63\x89\x63\x88\x63\x8a\x8f\xbe\x8f\xbf\x8f\xc0\x8f\xc1\x59\xcc\x8f\xc2\x8f\xc3\x8f\xc4\x61\x8b\x58\xcd\x8f\xc5\x57\x4e\x8f\xc6\x59\x86\x8f\xc7\x8f\xc8\x49\xc9\x49\x8c\x8f\xc9\x49\x93\x53\x8e\x8f\xca\x8f\xcb\x5b\x63\x5a\x50\x8f\xcc\x61\x7c\x8f\xcd\x8f\xce\x8f\xcf\x61\x7d\x8f\xd0\x59\xda\x8f\xd1\x4a\x59\x49\x6b\x8f\xd2\x8f\xd3\x8f\xd4", /* 5f80 */ "\x57\x9a\x5b\x98\x61\x7e\x8f\xd5\x4f\xb5\x4a\xfc\x8f\xd6\x61\x7f\x4d\xdb\x61\x81\x4e\x52\x51\xc8\x61\x82\x8f\xd7\x8f\xd8\x8f\xd9\x58\xeb\x8f\xda\x57\x5d\x8f\xdb\x8f\xdc\x61\x83\x8f\xdd\x4b\x63\x53\x67\x61\x84\x8f\xde\x8f\xdf\x61\x85\x8f\xe0\x8f\xe1\x8f\xe2\x8f\xe3\x5a\x9a\x8f\xe4\x8f\xe5\x8f\xe6\x8f\xe7\x8f\xe8\x8f\xe9\x61\x86\x8f\xea\x59\x4d\x8f\xeb\x8f\xec\x61\x87\x57\xa1\x8f\xed\x8f\xee\x8f\xef\x8f\xf0\x8f\xf1\x8f\xf2\x61\x88\x8f\xf3\x4b\x62\x8f\xf4\x8f\xf5\x8f\xf6\x8f\xf7\x61\x89\x4e\x75\x8f\xf8\x8f\xf9\x8f\xfa\x8f\xfb\x8f\xfc\x58\xc3\x61\xdf\x49\x78\x59\xe3\x8f\xfd\x90\x41\x61\xe0\x90\x42\x90\x43\x4e\xc8\x54\xcb\x90\x44\x61\xe2\x66\xfd\x66\xfc\x60\x4f\x90\x45\x90\x46\x90\x47\x61\xe1\x5b\xbd\x57\x9d\x52\x46\x90\x48\x90\x49\x90\x4a\x62\x63\x90\x4b\x90\x4c\x5b\xd1\x61\xe6\x90\x4d\x90\x4e\x61\xe7\x90\x4f\x90\x50\x5a\x67\x90\x51\x90\x52\x61\xeb\x50\x8d\x90\x53\x61\xec\x61\xe4\x90\x54\x90\x55\x4a\x60\x90\x56\x90\x57\x90\x58\x52\xed\x90\x59\x90\x5a\x61\xed\x90\x5b\x90\x5c\x58\xc2\x90\x5d\x4d\xf5\x61\xe8\x4c\x7e", /* 6000 */ "\x4e\x53\x56\xab\x56\x6b\x61\xe3\x61\xe5\x61\xe9\x61\xea\x90\x5e\x90\x5f\x90\x60\x61\xf6\x90\x61\x90\x62\x61\xf3\x5a\xf4\x61\xf2\x90\x63\x90\x64\x53\x4d\x90\x65\x5b\x9b\x53\x62\x49\xbf\x90\x66\x90\x67\x61\xee\x90\x68\x61\xf1\x51\x4f\x56\x5c\x90\x69\x90\x6a\x4b\x41\x61\xf8\x90\x6b\x90\x6c\x90\x6d\x4e\xb0\x61\xf0\x58\xd3\x5a\xb8\x61\xf4\x4d\x76\x61\xf5\x90\x6e\x90\x6f\x90\x70\x54\x73\x90\x71\x90\x72\x90\x73\x90\x74\x90\x75\x61\xef\x90\x76\x90\x77\x90\x78\x90\x79\x90\x7a\x5c\x7c\x67\x41\x90\x7b\x90\x7c\x61\xf7\x90\x7d\x67\x45\x61\xfd\x55\xd0\x90\x7e\x90\x7f\x90\x81\x90\x82\x90\x83\x90\x84\x90\x85\x51\x55\x90\x86\x4e\x70\x90\x87\x90\x88\x50\x76\x90\x89\x4d\xe2\x90\x8a\x90\x8b\x56\x41\x90\x8c\x90\x8d\x90\x8e\x67\x46\x67\x43\x90\x8f\x90\x90\x67\x42\x90\x91\x90\x92\x90\x93\x90\x94\x4e\x76\x67\x47\x58\xf3\x90\x95\x90\x96\x67\x44\x4d\xdd\x4b\xf6\x62\x41\x4b\xb1\x56\xf0\x4d\x47\x90\x97\x58\x42\x54\x41\x90\x98\x90\x99\x50\x72\x90\x9a\x90\x9b\x4b\xf0\x90\x9c\x61\xf9\x61\xfa\x61\xfc\x61\xfb\x52\xd4\x62\x42\x90\x9d\x5a\x61", /* 6080 */ "\x90\x9e\x90\x9f\x90\xa0\x62\x47\x54\x64\x90\xa1\x90\xa2\x90\xa3\x90\xa4\x58\x44\x90\xa5\x90\xa6\x62\x49\x4d\xb6\x90\xa7\x90\xa8\x90\xa9\x90\xaa\x62\x48\x90\xab\x4e\x7a\x90\xac\x62\x43\x90\xad\x90\xae\x90\xaf\x62\x44\x62\x4a\x90\xb0\x62\x46\x90\xb1\x57\xf1\x5a\x66\x90\xb2\x90\xb3\x4e\x5c\x90\xb4\x90\xb5\x5a\xc2\x90\xb6\x52\xf9\x90\xb7\x90\xb8\x67\x48\x58\xfb\x62\x45\x90\xb9\x52\x96\x90\xba\x62\x4d\x49\x4f\x90\xbb\x62\x52\x90\xbc\x90\xbd\x90\xbe\x4e\xc1\x90\xbf\x90\xc0\x62\x4c\x4b\x5f\x90\xc1\x90\xc2\x90\xc3\x90\xc4\x90\xc5\x90\xc6\x90\xc7\x90\xc8\x54\x8a\x62\x50\x90\xc9\x90\xca\x90\xcb\x4f\xa9\x57\x90\x90\xcc\x90\xcd\x90\xce\x90\xcf\x90\xd0\x4e\x94\x90\xd1\x90\xd2\x90\xd3\x56\xe7\x90\xd4\x90\xd5\x62\x4f\x90\xd6\x62\x51\x90\xd7\x58\x47\x62\x4e\x90\xd8\x57\xa8\x4e\x7d\x90\xd9\x90\xda\x90\xdb\x90\xdc\x90\xdd\x4b\x8c\x4f\xe4\x49\xd1\x4a\x6d\x90\xde\x49\x59\x62\x4b\x49\xd0\x4b\x4c\x4d\x7f\x4b\xe7\x90\xdf\x90\xe0\x58\x8c\x62\x57\x90\xe1\x4e\x6c\x90\xe2\x90\xe3\x54\xc6\x58\xc9\x90\xe4\x90\xe5\x90\xe6\x90\xe7\x90\xe8", /* 6100 */ "\x62\x58\x4a\x8f\x90\xe9\x90\xea\x90\xeb\x90\xec\x67\x49\x90\xed\x5a\x9b\x5a\x85\x90\xee\x90\xef\x90\xf0\x67\x4a\x62\x59\x59\xe1\x90\xf1\x90\xf2\x90\xf3\x90\xf4\x90\xf5\x62\x55\x90\xf6\x90\xf7\x90\xf8\x90\xf9\x5a\x7e\x90\xfa\x90\xfb\x90\xfc\x90\xfd\x4c\xcf\x62\x53\x91\x41\x91\x42\x62\x56\x4c\x7f\x91\x43\x62\x54\x50\xa1\x91\x44\x91\x45\x91\x46\x62\x5a\x91\x47\x91\x48\x91\x49\x91\x4a\x91\x4b\x91\x4c\x91\x4d\x91\x4e\x91\x4f\x91\x50\x91\x51\x91\x52\x91\x53\x91\x54\x91\x55\x91\x56\x91\x57\x91\x58\x91\x59\x5a\xb7\x91\x5a\x91\x5b\x91\x5c\x91\x5d\x91\x5e\x91\x5f\x91\x60\x91\x61\x4a\xc7\x91\x62\x62\x5b\x91\x63\x4e\x65\x91\x64\x55\x98\x91\x65\x91\x66\x55\x86\x91\x67\x91\x68\x91\x69\x52\xbc\x91\x6a\x91\x6b\x91\x6c\x91\x6d\x91\x6e\x91\x6f\x91\x70\x67\x4b\x91\x71\x91\x72\x91\x73\x91\x74\x51\xfc\x91\x75\x91\x76\x91\x77\x91\x78\x4e\x7b\x50\x4e\x91\x79\x91\x7a\x91\x7b\x91\x7c\x91\x7d\x91\x7e\x91\x7f\x57\xbe\x91\x81\x91\x82\x91\x83\x91\x84\x62\x5c\x91\x85\x50\x56\x91\x86\x91\x87\x91\x88\x91\x89\x91\x8a\x91\x8b\x91\x8c\x91\x8d", /* 6180 */ "\x91\x8e\x91\x8f\x91\x90\x91\x91\x91\x92\x91\x93\x91\x94\x91\x95\x91\x96\x91\x97\x91\x98\x49\x90\x91\x99\x91\x9a\x5a\xf6\x91\x9b\x91\x9c\x91\x9d\x91\x9e\x91\x9f\x62\x5e\x91\xa0\x91\xa1\x91\xa2\x91\xa3\x91\xa4\x91\xa5\x91\xa6\x91\xa7\x67\x4d\x91\xa8\x91\xa9\x91\xaa\x91\xab\x91\xac\x91\xad\x91\xae\x91\xaf\x91\xb0\x62\x5f\x4d\xa8\x67\x4c\x91\xb1\x91\xb2\x62\x5d\x91\xb3\x91\xb4\x91\xb5\x91\xb6\x91\xb7\x91\xb8\x91\xb9\x91\xba\x91\xbb\x91\xbc\x62\x60\x91\xbd\x91\xbe\x91\xbf\x91\xc0\x91\xc1\x91\xc2\x4d\xb5\x91\xc3\x91\xc4\x91\xc5\x4b\xad\x91\xc6\x91\xc7\x91\xc8\x91\xc9\x91\xca\x58\xb7\x91\xcb\x48\xc2\x67\x4e\x91\xcc\x91\xcd\x91\xce\x91\xcf\x91\xd0\x67\x4f\x50\xc0\x91\xd1\x62\x61\x91\xd2\x91\xd3\x91\xd4\x91\xd5\x91\xd6\x91\xd7\x91\xd8\x91\xd9\x91\xda\x91\xdb\x91\xdc\x91\xdd\x91\xde\x91\xdf\x91\xe0\x91\xe1\x91\xe2\x53\x53\x91\xe3\x91\xe4\x91\xe5\x91\xe6\x91\xe7\x91\xe8\x91\xe9\x91\xea\x91\xeb\x91\xec\x91\xed\x91\xee\x91\xef\x91\xf0\x62\x62\x91\xf1\x91\xf2\x91\xf3\x91\xf4\x91\xf5\x91\xf6\x91\xf7\x91\xf8\x91\xf9\x5e\xb1", /* 6200 */ "\x91\xfa\x91\xfb\x91\xfc\x91\xfd\x92\x41\x92\x42\x67\x50\x92\x43\x4c\xe9\x92\x44\x57\xeb\x65\xa6\x58\xe6\x55\xf8\x54\xd5\x58\x57\x4a\x69\x57\xd1\x4f\x85\x92\x45\x92\x46\x62\x7e\x4e\x93\x65\xa7\x5b\x5d\x92\x47\x53\xdc\x65\xa8\x92\x48\x92\x49\x92\x4a\x65\xa9\x92\x4b\x65\xab\x65\xaa\x92\x4c\x65\xad\x65\xac\x92\x4d\x92\x4e\x92\x4f\x92\x50\x4f\x78\x92\x51\x65\xae\x92\x52\x51\xbd\x92\x53\x92\x54\x92\x55\x92\x56\x4a\xc0\x4a\xf6\x92\x57\x92\x58\x4e\x47\x92\x59\x92\x5a\x92\x5b\x92\x5c\x92\x5d\x66\xe5\x66\xe4\x4c\x5f\x56\x9a\x49\x83\x92\x5e\x66\xe6\x92\x5f\x92\x60\x92\x61\x55\x68\x66\xe7\x66\xe8\x92\x62\x55\xd5\x5f\xcf\x49\xc4\x5a\xf9\x92\x63\x92\x64\x53\xca\x48\xc6\x4a\xf1\x54\xd2\x92\x65\x92\x66\x92\x67\x57\x70\x92\x68\x92\x69\x50\x58\x92\x6a\x92\x6b\x92\x6c\x92\x6d\x92\x6e\x92\x6f\x92\x70\x50\x7b\x92\x71\x92\x72\x54\x44\x5b\xb3\x92\x73\x50\xa8\x5f\xd0\x55\x48\x59\x90\x53\x44\x48\xe6\x4a\x56\x54\xc4\x92\x74\x92\x75\x48\xe1\x92\x76\x92\x77\x4c\x97\x92\x78\x92\x79\x53\x9b\x92\x7a\x92\x7b\x4b\xf2\x92\x7c\x5b\x72\x4a\x70", /* 6280 */ "\x4e\xbb\x92\x7d\x92\x7e\x92\x7f\x4a\x4d\x92\x81\x92\x82\x92\x83\x92\x84\x4f\xf0\x48\xd0\x92\x85\x92\x86\x92\x87\x92\x88\x92\x89\x92\x8a\x59\xd5\x55\xe2\x5c\x45\x92\x8b\x57\x56\x4b\xb5\x50\x59\x5b\x7b\x92\x8c\x4c\xa6\x53\x77\x92\x8d\x92\x8e\x92\x8f\x5f\xd1\x50\x79\x51\xd4\x54\x60\x92\x90\x4e\x44\x49\x48\x92\x91\x92\x92\x53\x8b\x92\x93\x92\x94\x53\x9c\x56\xa6\x92\x95\x92\x96\x92\x97\x92\x98\x49\x47\x92\x99\x92\x9a\x92\x9b\x4b\x76\x92\x9c\x92\x9d\x92\x9e\x52\xa7\x92\x9f\x5f\xd2\x59\x5a\x4a\x8a\x92\xa0\x52\x93\x92\xa1\x92\xa2\x4c\x98\x92\xa3\x5b\xf3\x4b\x43\x49\xef\x52\xb3\x52\xe8\x50\xac\x5f\xd3\x92\xa4\x48\xe7\x53\x64\x51\x81\x92\xa5\x4d\x75\x92\xa6\x4f\xdb\x57\x78\x48\xcd\x92\xa7\x57\x6f\x5f\xd5\x4f\xcf\x5c\x5e\x5f\xd4\x5b\x70\x48\xdc\x92\xa8\x92\xa9\x52\xe1\x92\xaa\x92\xab\x51\xa2\x4e\xef\x92\xac\x5a\x55\x50\xb8\x53\x41\x49\xa5\x5a\xf0\x92\xad\x92\xae\x50\xa7\x55\xc2\x5f\xd6\x5b\x9d\x92\xaf\x4d\x50\x92\xb0\x54\xac\x56\x49\x92\xb1\x5f\xd8\x50\x5d\x92\xb2\x92\xb3\x92\xb4\x92\xb5\x53\xb3\x5c\x47\x55\xaf\x52\xc2", /* 6300 */ "\x92\xb6\x4a\x76\x4d\x72\x92\xb7\x92\xb8\x92\xb9\x92\xba\x5b\xb7\x65\xfb\x48\xb3\x92\xbb\x92\xbc\x92\xbd\x92\xbe\x50\x87\x92\xbf\x92\xc0\x56\xf3\x92\xc1\x92\xc2\x92\xc3\x92\xc4\x57\x7a\x92\xc5\x92\xc6\x92\xc7\x5b\xbe\x51\xcd\x92\xc8\x57\xcd\x56\xa1\x58\xad\x52\xd2\x4b\x52\x5f\xd7\x5b\x96\x4e\xb6\x4e\x73\x92\xc9\x92\xca\x48\xa3\x92\xcb\x53\x52\x4a\xeb\x92\xcc\x92\xcd\x92\xce\x5b\x92\x92\xcf\x92\xd0\x65\xfc\x92\xd1\x92\xd2\x92\xd3\x92\xd4\x92\xd5\x92\xd6\x5f\xd9\x57\x46\x92\xd7\x92\xd8\x57\x8d\x92\xd9\x92\xda\x92\xdb\x92\xdc\x57\xe5\x5f\xdb\x92\xdd\x57\x51\x50\xa5\x92\xde\x92\xdf\x5c\x5d\x92\xe0\x5f\xda\x48\xc5\x4d\xb3\x55\x73\x52\xf2\x4f\xe7\x92\xe1\x92\xe2\x92\xe3\x92\xe4\x49\xb5\x92\xe5\x92\xe6\x92\xe7\x92\xe8\x92\xe9\x92\xea\x92\xeb\x92\xec\x50\xcb\x56\x91\x92\xed\x4e\xf0\x4e\x5b\x4b\x57\x92\xee\x92\xef\x92\xf0\x53\x96\x92\xf1\x5f\xe5\x92\xf2\x92\xf3\x92\xf4\x5f\xe2\x4f\xdc\x92\xf5\x92\xf6\x5f\xde\x92\xf7\x92\xf8\x92\xf9\x92\xfa\x4a\xb6\x4f\x7d\x92\xfb\x92\xfc\x5f\xdf\x52\xec\x92\xfd\x93\x41\x93\x42\x93\x43", /* 6380 */ "\x58\x66\x93\x44\x4b\x81\x93\x45\x93\x46\x93\x47\x93\x48\x4b\xdd\x55\xd9\x4b\x95\x5f\xe4\x93\x49\x5b\x66\x93\x4a\x5f\xe0\x56\xcc\x53\xfd\x93\x4b\x53\x65\x93\x4c\x93\x4d\x93\x4e\x59\xb3\x93\x4f\x4f\xf1\x93\x50\x93\x51\x93\x52\x93\x53\x93\x54\x93\x55\x93\x56\x51\xd2\x93\x57\x56\xbc\x4a\x58\x93\x58\x4f\x73\x93\x59\x50\x78\x57\x66\x59\x7a\x4a\xea\x93\x5a\x5f\xe3\x5f\xdc\x5f\xe6\x93\x5b\x65\xfd\x93\x5c\x93\x5d\x51\xaf\x5f\xe1\x93\x5e\x93\x5f\x5b\xbf\x4b\x47\x93\x60\x49\xf3\x93\x61\x5f\xe7\x93\x62\x5f\xf1\x93\x63\x93\x64\x93\x65\x93\x66\x93\x67\x5f\xec\x93\x68\x5f\xf0\x93\x69\x93\x6a\x54\xdf\x93\x6b\x93\x6c\x93\x6d\x5c\x82\x5f\xee\x52\x89\x56\xe0\x93\x6e\x49\xe4\x93\x6f\x93\x70\x93\x71\x59\xbd\x93\x72\x93\x73\x93\x74\x93\x75\x93\x76\x93\x77\x93\x78\x5f\xed\x93\x79\x5f\xea\x57\xd4\x93\x7a\x4a\xa6\x93\x7b\x93\x7c\x93\x7d\x93\x7e\x93\x7f\x50\x4b\x4f\xbd\x93\x81\x93\x82\x4f\x72\x93\x83\x93\x84\x93\x85\x93\x86\x5f\xe8\x93\x87\x5a\xad\x93\x88\x5f\xdd\x93\x89\x5f\xe9\x93\x8a\x93\x8b\x93\x8c\x93\x8d\x50\xbe\x93\x8e\x5f\xeb", /* 6400 */ "\x49\xf2\x4c\xe8\x51\xa6\x93\x8f\x93\x90\x4f\x61\x93\x91\x93\x92\x93\x93\x93\x94\x93\x95\x5f\xf4\x5f\xf7\x93\x96\x93\x97\x49\xaa\x4a\xa3\x93\x98\x93\x99\x4a\xe9\x55\x46\x93\x9a\x93\x9b\x93\x9c\x93\x9d\x93\x9e\x93\x9f\x5f\xf5\x56\x71\x93\xa0\x4c\xe2\x93\xa1\x5f\xf6\x5f\xf9\x93\xa2\x93\xa3\x93\xa4\x93\xa5\x5f\xf8\x93\xa6\x93\xa7\x93\xa8\x56\xc1\x93\xa9\x48\xe0\x4a\xed\x93\xaa\x93\xab\x93\xac\x93\xad\x93\xae\x93\xaf\x63\x5a\x93\xb0\x93\xb1\x93\xb2\x93\xb3\x93\xb4\x58\xae\x93\xb5\x93\xb6\x49\xea\x93\xb7\x66\x41\x93\xb8\x5f\xf3\x93\xb9\x93\xba\x55\x84\x5f\xf2\x48\xd9\x59\xa0\x49\x98\x93\xbb\x56\xae\x93\xbc\x93\xbd\x93\xbe\x93\xbf\x93\xc0\x93\xc1\x93\xc2\x5f\xef\x93\xc3\x56\x44\x93\xc4\x93\xc5\x93\xc6\x5b\x4a\x93\xc7\x93\xc8\x93\xc9\x93\xca\x93\xcb\x5f\xfa\x93\xcc\x93\xcd\x93\xce\x93\xcf\x93\xd0\x93\xd1\x93\xd2\x93\xd3\x4a\xdc\x93\xd4\x52\xa5\x93\xd5\x93\xd6\x93\xd7\x5f\xfc\x93\xd8\x93\xd9\x93\xda\x93\xdb\x93\xdc\x93\xdd\x93\xde\x93\xdf\x93\xe0\x93\xe1\x52\x9f\x52\xa0\x60\x41\x93\xe2\x93\xe3\x93\xe4\x93\xe5\x93\xe6", /* 6480 */ "\x93\xe7\x93\xe8\x51\x6c\x93\xe9\x5f\xfb\x4f\xee\x93\xea\x53\xb1\x93\xeb\x93\xec\x93\xed\x93\xee\x93\xef\x93\xf0\x93\xf1\x93\xf2\x93\xf3\x4a\x65\x54\xf5\x93\xf4\x93\xf5\x56\x5a\x5f\xfd\x93\xf6\x93\xf7\x60\x44\x93\xf8\x93\xf9\x93\xfa\x93\xfb\x5c\x52\x93\xfc\x93\xfd\x94\x41\x94\x42\x94\x43\x4a\x57\x94\x44\x94\x45\x94\x46\x94\x47\x51\x63\x94\x48\x94\x49\x54\x6b\x49\xa4\x4a\xe8\x94\x4a\x5c\x4b\x94\x4b\x94\x4c\x94\x4d\x94\x4e\x52\xeb\x94\x4f\x60\x42\x60\x43\x94\x50\x60\x45\x94\x51\x4d\xb2\x94\x52\x94\x53\x94\x54\x60\x46\x94\x55\x50\xdd\x94\x56\x94\x57\x55\x63\x94\x58\x94\x59\x94\x5a\x94\x5b\x94\x5c\x94\x5d\x94\x5e\x49\xd8\x54\x87\x94\x5f\x60\x47\x94\x60\x54\x7c\x94\x61\x94\x62\x94\x63\x94\x64\x60\x48\x66\x42\x94\x65\x94\x66\x94\x67\x94\x68\x94\x69\x56\x73\x94\x6a\x94\x6b\x94\x6c\x60\x4a\x94\x6d\x60\x49\x94\x6e\x49\xc0\x94\x6f\x94\x70\x94\x71\x94\x72\x94\x73\x94\x74\x94\x75\x94\x76\x94\x77\x94\x78\x94\x79\x94\x7a\x94\x7b\x94\x7c\x94\x7d\x94\x7e\x94\x7f\x94\x81\x94\x82\x94\x83\x94\x84\x94\x85\x94\x86\x94\x87\x94\x88", /* 6500 */ "\x53\x6a\x94\x89\x94\x8a\x94\x8b\x94\x8c\x94\x8d\x94\x8e\x94\x8f\x94\x90\x60\x4b\x94\x91\x94\x92\x94\x93\x94\x94\x94\x95\x94\x96\x94\x97\x94\x98\x5a\xdb\x94\x99\x94\x9a\x94\x9b\x94\x9c\x94\x9d\x54\xc0\x94\x9e\x94\x9f\x94\xa0\x94\xa1\x94\xa2\x94\xa3\x94\xa4\x94\xa5\x94\xa6\x94\xa7\x94\xa8\x94\xa9\x60\x4c\x94\xaa\x94\xab\x94\xac\x94\xad\x94\xae\x4f\xef\x94\xaf\x94\xb0\x60\x4d\x5b\xa6\x94\xb1\x94\xb2\x94\xb3\x94\xb4\x65\xb6\x66\x56\x55\xd4\x94\xb5\x5c\xfb\x4c\xc3\x94\xb6\x4d\x45\x94\xb7\x94\xb8\x4c\x65\x5b\x9f\x94\xb9\x94\xba\x94\xbb\x94\xbc\x94\xbd\x4d\x6a\x94\xbe\x94\xbf\x58\xa6\x6a\xcc\x94\xc0\x94\xc1\x4b\x70\x94\xc2\x94\xc3\x52\x95\x94\xc4\x4f\xc7\x94\xc5\x94\xc6\x94\xc7\x66\x57\x48\xbc\x94\xc8\x94\xc9\x4f\x6c\x94\xca\x51\x52\x94\xcb\x49\x76\x4a\x48\x94\xcc\x94\xcd\x94\xce\x4c\xd1\x55\x42\x94\xcf\x94\xd0\x4b\xd7\x94\xd1\x94\xd2\x94\xd3\x94\xd4\x66\x58\x4f\xb3\x94\xd5\x94\xd6\x94\xd7\x55\xfc\x94\xd8\x54\x63\x94\xd9\x5b\x9c\x94\xda\x94\xdb\x4c\x94\x94\xdc\x94\xdd\x94\xde\x94\xdf\x94\xe0\x94\xe1\x94\xe2\x94\xe3", /* 6580 */ "\x94\xe4\x94\xe5\x94\xe6\x94\xe7\x94\xe8\x94\xe9\x94\xea\x57\xc3\x94\xeb\x94\xec\x94\xed\x5b\x4b\x49\x94\x94\xee\x94\xef\x94\xf0\x66\xb2\x48\xde\x94\xf1\x66\xb4\x94\xf2\x94\xf3\x94\xf4\x4b\xb6\x94\xf5\x51\x6f\x94\xf6\x6b\x9b\x58\xb0\x94\xf7\x94\xf8\x5b\x86\x94\xf9\x57\xd2\x94\xfa\x94\xfb\x4f\x90\x4a\x83\x94\xfc\x4c\xaa\x94\xfd\x5b\x56\x95\x41\x67\x5d\x95\x42\x4b\xce\x95\x43\x56\x59\x58\xc1\x95\x44\x95\x45\x95\x46\x95\x47\x95\x48\x95\x49\x95\x4a\x95\x4b\x4c\x5d\x95\x4c\x95\x4d\x66\xb5\x55\xa8\x95\x4e\x95\x4f\x95\x50\x53\x74\x95\x51\x66\xb8\x66\xb7\x51\xc2\x66\xb6\x95\x52\x95\x53\x95\x54\x95\x55\x58\xfc\x66\xb9\x95\x56\x66\xba\x5c\x86\x95\x57\x95\x58\x66\xbb\x95\x59\x95\x5a\x95\x5b\x66\xbc\x53\xeb\x95\x5c\x95\x5d\x95\x5e\x95\x5f\x95\x60\x95\x61\x95\x62\x95\x63\x57\xdd\x95\x64\x4e\xc7\x95\x65\x95\x66\x54\xd4\x4b\x49\x4f\xc8\x5b\xbb\x5a\xe6\x95\x67\x95\x68\x59\x4e\x58\xf0\x65\xb7\x65\xb8\x65\xb9\x4d\xb4\x95\x69\x95\x6a\x95\x6b\x95\x6c\x55\xb0\x50\x96\x95\x6d\x95\x6e\x57\x9b\x95\x6f\x95\x70\x95\x71\x95\x72\x95\x73", /* 6600 */ "\x65\xbf\x95\x74\x48\xb9\x65\xbd\x95\x75\x95\x76\x50\xa4\x95\x77\x95\x78\x95\x79\x65\xba\x95\x7a\x49\xfc\x95\x7b\x52\x98\x4e\x89\x95\x7c\x95\x7d\x95\x7e\x59\xd6\x57\xf3\x65\xbe\x95\x7f\x95\x81\x95\x82\x65\xbb\x95\x83\x95\x84\x95\x85\x65\xc2\x95\x86\x58\xc6\x5a\x53\x95\x87\x95\x88\x95\x89\x95\x8a\x4a\xb9\x95\x8b\x52\x61\x5c\x93\x95\x8c\x95\x8d\x95\x8e\x95\x8f\x5b\x71\x95\x90\x55\xc6\x95\x91\x65\xc4\x95\x92\x95\x93\x65\xc3\x65\xc6\x65\xc5\x95\x94\x95\x95\x95\x96\x95\x97\x95\x98\x5b\xe6\x95\x99\x58\x74\x95\x9a\x95\x9b\x65\xca\x95\x9c\x4e\x6e\x95\x9d\x95\x9e\x95\x9f\x95\xa0\x95\xa1\x95\xa2\x95\xa3\x4f\x9b\x55\x6e\x95\xa4\x95\xa5\x65\xcb\x95\xa6\x95\xa7\x55\x59\x58\x9f\x65\xc9\x5a\xcd\x65\xcc\x65\xce\x95\xa8\x95\xa9\x57\x8e\x95\xaa\x95\xab\x95\xac\x95\xad\x65\xc8\x95\xae\x65\xcd\x95\xaf\x95\xb0\x57\xed\x95\xb1\x4e\x7e\x95\xb2\x4a\x5f\x95\xb3\x95\xb4\x95\xb5\x95\xb6\x95\xb7\x53\xd4\x4f\xaf\x57\xf9\x95\xb8\x95\xb9\x95\xba\x54\x88\x95\xbb\x4f\xa6\x65\xcf\x95\xbc\x95\xbd\x5b\xc6\x95\xbe\x95\xbf\x95\xc0\x51\x60\x95\xc1", /* 6680 */ "\x95\xc2\x95\xc3\x5a\xdc\x95\xc4\x65\xd0\x95\xc5\x95\xc6\x58\x5e\x95\xc7\x95\xc8\x95\xc9\x95\xca\x65\xd1\x95\xcb\x95\xcc\x95\xcd\x95\xce\x55\xed\x95\xcf\x95\xd0\x95\xd1\x95\xd2\x53\x4f\x48\xb4\x95\xd3\x95\xd4\x95\xd5\x95\xd6\x95\xd7\x65\xd3\x95\xd8\x95\xd9\x95\xda\x95\xdb\x95\xdc\x95\xdd\x95\xde\x95\xdf\x95\xe0\x65\xd2\x6a\xde\x95\xe1\x95\xe2\x95\xe3\x95\xe4\x95\xe5\x52\xb9\x95\xe6\x95\xe7\x95\xe8\x95\xe9\x95\xea\x49\x49\x95\xeb\x95\xec\x95\xed\x95\xee\x63\x7f\x95\xef\x95\xf0\x95\xf1\x95\xf2\x65\xd4\x95\xf3\x95\xf4\x95\xf5\x95\xf6\x95\xf7\x95\xf8\x95\xf9\x95\xfa\x95\xfb\x95\xfc\x95\xfd\x96\x41\x96\x42\x96\x43\x96\x44\x96\x45\x96\x46\x96\x47\x96\x48\x96\x49\x96\x4a\x96\x4b\x96\x4c\x96\x4d\x96\x4e\x96\x4f\x55\xee\x96\x50\x65\xd5\x65\xd6\x53\xd7\x96\x51\x96\x52\x96\x53\x96\x54\x96\x55\x96\x56\x96\x57\x96\x58\x65\xd7\x96\x59\x96\x5a\x65\xd8\x96\x5b\x96\x5c\x96\x5d\x96\x5e\x96\x5f\x96\x60\x5a\xba\x96\x61\x54\x9b\x59\xb6\x4c\xfb\x96\x62\x96\x63\x65\xc1\x96\x64\x49\xdb\x96\x65\x96\x66\x51\xfb\x96\x67\x5a\xf7\x56\xe5", /* 6700 */ "\x5c\x8f\x96\x68\x96\x69\x96\x6a\x96\x6b\x96\x6c\x96\x6d\x96\x6e\x5a\xc1\x5a\x70\x66\x63\x53\x94\x96\x6f\x4c\x9f\x96\x70\x96\x71\x66\x74\x96\x72\x96\x73\x96\x74\x56\x57\x66\x7e\x96\x75\x50\xc9\x96\x76\x96\x77\x96\x78\x57\x9c\x96\x79\x4a\x4f\x96\x7a\x53\xd9\x96\x7b\x96\x7c\x96\x7d\x96\x7e\x96\x7f\x96\x81\x66\x9d\x96\x82\x52\xbd\x96\x83\x57\xb3\x52\xa8\x49\x5e\x5a\xfc\x96\x84\x55\xf4\x96\x85\x5b\xeb\x96\x86\x96\x87\x53\xd2\x4b\xe3\x96\x88\x96\x89\x96\x8a\x96\x8b\x4e\x9b\x96\x8c\x96\x8d\x58\xdf\x96\x8e\x96\x8f\x55\x51\x96\x90\x5a\xd2\x54\xa7\x96\x91\x96\x92\x4c\xca\x96\x93\x64\xbd\x55\x5c\x96\x94\x96\x95\x64\xba\x96\x96\x50\xed\x58\xd2\x49\xc3\x4a\xe4\x96\x97\x64\xbb\x96\x98\x96\x99\x5b\x68\x96\x9a\x96\x9b\x96\x9c\x96\x9d\x96\x9e\x4b\xc4\x96\x9f\x64\xbc\x55\xf7\x4c\xdb\x56\xf4\x96\xa0\x96\xa1\x96\xa2\x50\xb3\x96\xa3\x96\xa4\x59\x8f\x64\xbe\x64\xc1\x96\xa5\x96\xa6\x4d\xbb\x96\xa7\x49\x4d\x4f\x7c\x96\xa8\x65\xbc\x64\xc2\x96\xa9\x64\xc5\x96\xaa\x64\xca\x96\xab\x96\xac\x96\xad\x96\xae\x64\xcb\x96\xaf\x56\x69\x48\xe4", /* 6780 */ "\x96\xb0\x4e\xaa\x96\xb1\x96\xb2\x4d\x59\x96\xb3\x96\xb4\x64\xc0\x96\xb5\x57\x98\x96\xb6\x64\xc9\x96\xb7\x96\xb8\x96\xb9\x96\xba\x57\xf5\x96\xbb\x96\xbc\x96\xbd\x96\xbe\x5b\x8e\x96\xbf\x51\x76\x64\xc3\x96\xc0\x52\x56\x96\xc1\x4d\x9c\x5b\xa5\x64\xc7\x96\xc2\x96\xc3\x96\xc4\x55\xdf\x5a\xe5\x96\xc5\x64\xbf\x96\xc6\x64\xc4\x64\xc6\x96\xc7\x54\x59\x4c\x84\x96\xc8\x64\xc8\x96\xc9\x50\x7d\x64\xd1\x96\xca\x96\xcb\x64\xd6\x96\xcc\x64\xd4\x4e\xdb\x4e\xce\x64\xda\x96\xcd\x96\xce\x96\xcf\x96\xd0\x96\xd1\x96\xd2\x96\xd3\x96\xd4\x64\xdd\x96\xd5\x64\xd9\x49\x9b\x96\xd6\x96\xd7\x96\xd8\x96\xd9\x96\xda\x96\xdb\x96\xdc\x96\xdd\x96\xde\x96\xdf\x48\xd7\x52\xb2\x4c\xcb\x53\xe1\x54\xbd\x54\xe0\x96\xe0\x96\xe1\x96\xe2\x64\xce\x64\xd3\x64\xd5\x96\xe3\x4d\x92\x64\xd7\x5c\x96\x96\xe4\x52\xfa\x96\xe5\x64\xdb\x96\xe6\x96\xe7\x49\xe8\x96\xe8\x96\xe9\x96\xea\x64\xd0\x96\xeb\x96\xec\x4e\xec\x96\xed\x96\xee\x50\x62\x64\xcc\x5b\xf8\x96\xef\x51\x99\x49\xf0\x96\xf0\x96\xf1\x96\xf2\x96\xf3\x96\xf4\x96\xf5\x96\xf6\x96\xf7\x64\xde\x96\xf8\x55\xc0", /* 6800 */ "\x64\xd8\x96\xf9\x96\xfa\x96\xfb\x96\xfc\x5b\x44\x96\xfd\x49\x8b\x5b\x5b\x64\xcd\x64\xcf\x4b\xaf\x64\xd2\x97\x41\x64\xdc\x50\xb7\x97\x42\x55\xf6\x97\x43\x56\x48\x97\x44\x97\x45\x53\xdb\x50\xf4\x97\x46\x97\x47\x97\x48\x97\x49\x97\x4a\x64\xe8\x97\x4b\x97\x4c\x97\x4d\x58\xa2\x97\x4e\x97\x4f\x97\x50\x97\x51\x97\x52\x97\x53\x97\x54\x64\xf1\x5b\xe9\x97\x55\x97\x56\x97\x57\x97\x58\x97\x59\x97\x5a\x97\x5b\x64\xdf\x64\xe0\x97\x5c\x97\x5d\x97\x5e\x59\x9a\x4d\xca\x4c\xf8\x97\x5f\x97\x60\x4c\xf0\x5a\xd3\x64\xee\x97\x61\x64\xed\x64\xeb\x4d\x91\x56\xd1\x64\xe5\x57\xa5\x50\x93\x97\x62\x48\xb7\x64\xf0\x64\xef\x97\x63\x5c\x60\x97\x64\x64\xe3\x97\x65\x57\x49\x55\x43\x97\x66\x4e\x58\x4f\x7b\x64\xe9\x97\x67\x97\x68\x97\x69\x97\x6a\x97\x6b\x97\x6c\x97\x6d\x97\x6e\x97\x6f\x97\x70\x64\xe1\x64\xe2\x64\xe4\x4b\x55\x64\xe6\x54\x65\x64\xea\x64\xec\x4f\x50\x5c\x4e\x97\x71\x64\xf7\x97\x72\x97\x73\x97\x74\x97\x75\x97\x76\x97\x77\x97\x78\x97\x79\x64\xf4\x97\x7a\x57\x50\x64\xf5\x97\x7b\x97\x7c\x97\x7d\x97\x7e\x97\x7f\x97\x81\x97\x82\x97\x83", /* 6880 */ "\x97\x84\x51\x5a\x97\x85\x64\xe7\x97\x86\x52\x57\x48\xef\x97\x87\x97\x88\x97\x89\x97\x8a\x97\x8b\x97\x8c\x97\x8d\x97\x8e\x64\xf3\x97\x8f\x97\x90\x97\x91\x64\xf6\x97\x92\x97\x93\x97\x94\x4d\x43\x97\x95\x97\x96\x97\x97\x97\x98\x97\x99\x97\x9a\x97\x9b\x97\x9c\x97\x9d\x97\x9e\x55\x72\x97\x9f\x97\xa0\x97\xa1\x52\x6e\x57\xdf\x50\xe5\x97\xa2\x97\xa3\x97\xa4\x97\xa5\x56\x94\x97\xa6\x56\xdc\x58\xb4\x97\xa7\x97\xa8\x55\xe0\x97\xa9\x64\xf2\x97\xaa\x97\xab\x97\xac\x97\xad\x97\xae\x97\xaf\x97\xb0\x97\xb1\x97\xb2\x97\xb3\x4e\xeb\x97\xb4\x64\xf8\x97\xb5\x97\xb6\x97\xb7\x97\xb8\x97\xb9\x97\xba\x52\x7e\x97\xbb\x53\xe4\x97\xbc\x4d\x98\x97\xbd\x97\xbe\x97\xbf\x97\xc0\x48\xf3\x97\xc1\x97\xc2\x5c\x78\x97\xc3\x97\xc4\x4e\xab\x97\xc5\x53\x90\x97\xc6\x97\xc7\x97\xc8\x97\xc9\x97\xca\x56\xc3\x97\xcb\x97\xcc\x65\x46\x97\xcd\x97\xce\x97\xcf\x97\xd0\x97\xd1\x97\xd2\x97\xd3\x97\xd4\x97\xd5\x97\xd6\x55\x4d\x97\xd7\x65\x42\x50\xe1\x97\xd8\x97\xd9\x97\xda\x50\x63\x97\xdb\x97\xdc\x97\xdd\x64\xfd\x4d\x77\x97\xde\x64\xfa\x97\xdf\x97\xe0\x97\xe1", /* 6900 */ "\x97\xe2\x65\x44\x97\xe3\x97\xe4\x97\xe5\x59\xcd\x97\xe6\x97\xe7\x97\xe8\x97\xe9\x97\xea\x65\x43\x97\xeb\x5b\xb1\x5c\x55\x97\xec\x65\x47\x97\xed\x4f\x57\x97\xee\x97\xef\x97\xf0\x97\xf1\x97\xf2\x97\xf3\x97\xf4\x97\xf5\x97\xf6\x97\xf7\x97\xf8\x97\xf9\x64\xfb\x64\xfc\x97\xfa\x97\xfb\x97\xfc\x65\x41\x97\xfd\x98\x41\x98\x42\x98\x43\x98\x44\x98\x45\x98\x46\x98\x47\x57\x76\x98\x48\x98\x49\x59\xab\x98\x4a\x98\x4b\x98\x4c\x65\x52\x98\x4d\x98\x4e\x98\x4f\x98\x50\x65\x49\x98\x51\x98\x52\x98\x53\x4a\xa9\x98\x54\x4a\xba\x98\x55\x98\x56\x65\x4b\x98\x57\x98\x58\x98\x59\x98\x5a\x98\x5b\x98\x5c\x98\x5d\x98\x5e\x98\x5f\x98\x60\x98\x61\x98\x62\x98\x63\x98\x64\x98\x65\x98\x66\x98\x67\x58\xa7\x98\x68\x98\x69\x65\x45\x98\x6a\x98\x6b\x4a\x9f\x98\x6c\x98\x6d\x65\x4c\x50\xe2\x98\x6e\x65\x4a\x98\x6f\x98\x70\x65\x59\x98\x71\x98\x72\x65\x58\x98\x73\x98\x74\x98\x75\x98\x76\x65\x4e\x98\x77\x98\x78\x64\xf9\x98\x79\x98\x7a\x65\x48\x98\x7b\x98\x7c\x98\x7d\x98\x7e\x98\x7f\x50\x4c\x65\x51\x65\x5a\x98\x81\x98\x82\x51\xa4\x98\x83\x98\x84\x98\x85", /* 6980 */ "\x65\x4f\x98\x86\x4c\xc4\x98\x87\x65\x4d\x98\x88\x5a\x7c\x65\x54\x65\x55\x65\x57\x98\x89\x98\x8a\x98\x8b\x65\x67\x98\x8c\x98\x8d\x98\x8e\x98\x8f\x98\x90\x98\x91\x50\xc5\x65\x65\x98\x92\x98\x93\x65\x50\x98\x94\x98\x95\x65\x5b\x48\xf0\x98\x96\x98\x97\x98\x98\x98\x99\x98\x9a\x98\x9b\x98\x9c\x98\x9d\x98\x9e\x98\x9f\x65\x5c\x5b\x45\x98\xa0\x98\xa1\x65\x5e\x98\xa2\x65\x5f\x98\xa3\x98\xa4\x98\xa5\x65\x61\x98\xa6\x98\xa7\x51\x92\x98\xa8\x98\xa9\x54\xb5\x98\xaa\x98\xab\x98\xac\x65\x5d\x98\xad\x98\xae\x98\xaf\x98\xb0\x98\xb1\x65\x62\x98\xb2\x98\xb3\x98\xb4\x98\xb5\x98\xb6\x98\xb7\x98\xb8\x98\xb9\x65\x63\x98\xba\x65\x53\x98\xbb\x65\x56\x98\xbc\x4e\x51\x98\xbd\x98\xbe\x98\xbf\x65\x60\x98\xc0\x98\xc1\x98\xc2\x98\xc3\x98\xc4\x98\xc5\x4e\xf6\x98\xc6\x98\xc7\x98\xc8\x65\x64\x65\x66\x98\xc9\x98\xca\x98\xcb\x98\xcc\x98\xcd\x98\xce\x98\xcf\x98\xd0\x98\xd1\x98\xd2\x98\xd3\x98\xd4\x65\x6a\x98\xd5\x98\xd6\x98\xd7\x98\xd8\x65\x6e\x98\xd9\x98\xda\x98\xdb\x98\xdc\x98\xdd\x98\xde\x98\xdf\x98\xe0\x98\xe1\x98\xe2\x49\xda\x98\xe3\x65\x68", /* 6a00 */ "\x98\xe4\x98\xe5\x98\xe6\x98\xe7\x98\xe8\x98\xe9\x98\xea\x98\xeb\x98\xec\x98\xed\x4c\x4e\x98\xee\x98\xef\x98\xf0\x98\xf1\x98\xf2\x98\xf3\x98\xf4\x98\xf5\x98\xf6\x98\xf7\x98\xf8\x98\xf9\x65\x6b\x65\x6c\x98\xfa\x98\xfb\x98\xfc\x98\xfd\x99\x41\x99\x42\x5b\x61\x99\x43\x52\xa2\x99\x44\x99\x45\x99\x46\x99\x47\x99\x48\x99\x49\x65\x78\x99\x4a\x4d\xe0\x99\x4b\x99\x4c\x99\x4d\x99\x4e\x65\x69\x99\x4f\x5a\x43\x99\x50\x99\x51\x99\x52\x65\x74\x99\x53\x99\x54\x99\x55\x99\x56\x99\x57\x99\x58\x99\x59\x65\x77\x65\x70\x99\x5a\x99\x5b\x99\x5c\x99\x5d\x99\x5e\x65\x6f\x99\x5f\x99\x60\x54\x61\x99\x61\x99\x62\x99\x63\x99\x64\x99\x65\x99\x66\x99\x67\x99\x68\x65\x72\x99\x69\x99\x6a\x99\x6b\x99\x6c\x99\x6d\x99\x6e\x99\x6f\x65\x79\x4a\x68\x99\x70\x65\x73\x99\x71\x99\x72\x99\x73\x99\x74\x99\x75\x58\x91\x99\x76\x99\x77\x99\x78\x65\x6d\x99\x79\x99\x7a\x99\x7b\x99\x7c\x99\x7d\x99\x7e\x99\x7f\x99\x81\x99\x82\x99\x83\x99\x84\x4a\x98\x99\x85\x99\x86\x99\x87\x99\x88\x99\x89\x99\x8a\x99\x8b\x65\x76\x99\x8c\x99\x8d\x65\x7a\x99\x8e\x99\x8f\x99\x90", /* 6a80 */ "\x56\xb3\x99\x91\x99\x92\x99\x93\x58\x4d\x99\x94\x99\x95\x99\x96\x99\x97\x99\x98\x99\x99\x99\x9a\x99\x9b\x99\x9c\x65\x75\x99\x9d\x65\x7c\x65\x7b\x99\x9e\x99\x9f\x99\xa0\x99\xa1\x99\xa2\x65\x7e\x99\xa3\x99\xa4\x99\xa5\x99\xa6\x99\xa7\x99\xa8\x99\xa9\x99\xaa\x65\x71\x99\xab\x99\xac\x99\xad\x99\xae\x99\xaf\x99\xb0\x99\xb1\x99\xb2\x65\x7d\x99\xb3\x65\x7f\x52\x6a\x99\xb4\x99\xb5\x99\xb6\x99\xb7\x99\xb8\x99\xb9\x99\xba\x99\xbb\x99\xbc\x99\xbd\x99\xbe\x99\xbf\x99\xc0\x99\xc1\x99\xc2\x99\xc3\x99\xc4\x99\xc5\x99\xc6\x99\xc7\x99\xc8\x99\xc9\x99\xca\x99\xcb\x99\xcc\x99\xcd\x99\xce\x99\xcf\x99\xd0\x99\xd1\x99\xd2\x99\xd3\x99\xd4\x99\xd5\x99\xd6\x99\xd7\x99\xd8\x99\xd9\x99\xda\x99\xdb\x99\xdc\x99\xdd\x99\xde\x99\xdf\x99\xe0\x99\xe1\x99\xe2\x99\xe3\x99\xe4\x99\xe5\x99\xe6\x99\xe7\x99\xe8\x99\xe9\x99\xea\x99\xeb\x99\xec\x99\xed\x99\xee\x99\xef\x99\xf0\x99\xf1\x99\xf2\x99\xf3\x99\xf4\x99\xf5\x99\xf6\x99\xf7\x99\xf8\x99\xf9\x99\xfa\x99\xfb\x99\xfc\x99\xfd\x9a\x41\x9a\x42\x9a\x43\x9a\x44\x9a\x45\x9a\x46\x9a\x47\x9a\x48\x9a\x49", /* 6b00 */ "\x9a\x4a\x9a\x4b\x9a\x4c\x9a\x4d\x9a\x4e\x9a\x4f\x9a\x50\x9a\x51\x9a\x52\x9a\x53\x9a\x54\x9a\x55\x9a\x56\x9a\x57\x9a\x58\x9a\x59\x9a\x5a\x9a\x5b\x9a\x5c\x9a\x5d\x9a\x5e\x9a\x5f\x9a\x60\x9a\x61\x9a\x62\x9a\x63\x9a\x64\x9a\x65\x9a\x66\x9a\x67\x9a\x68\x9a\x69\x54\x57\x4a\xcd\x4e\x56\x58\xbf\x66\xa2\x9a\x6a\x9a\x6b\x53\x57\x9a\x6c\x9a\x6d\x9a\x6e\x9a\x6f\x9a\x70\x9a\x71\x9a\x72\x9a\x73\x9a\x74\x9a\x75\x5a\x9c\x9a\x76\x9a\x77\x9a\x78\x9a\x79\x66\xa3\x9a\x7a\x66\xa4\x53\xda\x9a\x7b\x9a\x7c\x9a\x7d\x50\x8f\x9a\x7e\x9a\x7f\x9a\x81\x9a\x82\x66\xa5\x9a\x83\x9a\x84\x66\xa6\x58\xa9\x9a\x85\x54\x58\x9a\x86\x9a\x87\x4c\xe7\x9a\x88\x9a\x89\x9a\x8a\x9a\x8b\x9a\x8c\x9a\x8d\x9a\x8e\x9a\x8f\x9a\x90\x9a\x91\x9a\x92\x9a\x93\x66\xa7\x9a\x94\x9a\x95\x9a\x96\x9a\x97\x9a\x98\x9a\x99\x9a\x9a\x9a\x9b\x5b\xb8\x5b\x9e\x4a\xca\x49\xbc\x57\xe3\x53\xe6\x9a\x9c\x9a\x9d\x57\x82\x9a\x9e\x9a\x9f\x9a\xa0\x9a\xa1\x9a\xa2\x9a\xa3\x9a\xa4\x9a\xa5\x9a\xa6\x9a\xa7\x9a\xa8\x9a\xa9\x9a\xaa\x9a\xab\x4a\xf4\x9a\xac\x56\x60\x4e\xde\x9a\xad\x9a\xae\x9a\xaf", /* 6b80 */ "\x9a\xb0\x65\x83\x65\x84\x59\x8b\x65\x86\x9a\xb1\x4a\xf8\x65\x85\x9a\xb2\x59\x53\x55\xe1\x49\xcf\x9a\xb3\x65\x89\x9a\xb4\x9a\xb5\x9a\xb6\x9a\xb7\x65\x87\x65\x88\x9a\xb8\x9a\xb9\x5b\xb2\x9a\xba\x9a\xbb\x9a\xbc\x65\x8a\x65\x8b\x9a\xbd\x9a\xbe\x9a\xbf\x9a\xc0\x9a\xc1\x65\x8c\x9a\xc2\x9a\xc3\x9a\xc4\x9a\xc5\x9a\xc6\x9a\xc7\x9a\xc8\x9a\xc9\x65\x8d\x9a\xca\x9a\xcb\x9a\xcc\x9a\xcd\x9a\xce\x9a\xcf\x9a\xd0\x9a\xd1\x66\xae\x53\x59\x4b\xcd\x9a\xd2\x59\xf2\x9a\xd3\x9a\xd4\x9a\xd5\x9a\xd6\x9a\xd7\x9a\xd8\x9a\xd9\x4b\x8f\x9a\xda\x4e\x79\x66\xb0\x9a\xdb\x9a\xdc\x59\xe2\x9a\xdd\x9a\xde\x9a\xdf\x9a\xe0\x9a\xe1\x57\xe2\x9a\xe2\x52\xb7\x9a\xe3\x52\x5f\x9a\xe4\x9a\xe5\x4b\xbd\x5c\xb8\x49\x68\x49\x6f\x49\x71\x53\x9f\x9a\xe6\x49\x70\x9a\xe7\x52\x4b\x9a\xe8\x9a\xe9\x9a\xea\x9a\xeb\x9a\xec\x5b\x51\x9a\xed\x9a\xee\x9a\xef\x9a\xf0\x9a\xf1\x9a\xf2\x9a\xf3\x9a\xf4\x66\x44\x4d\xc0\x9a\xf5\x9a\xf6\x9a\xf7\x56\xb9\x9a\xf8\x9a\xf9\x9a\xfa\x66\x45\x9a\xfb\x66\x47\x9a\xfc\x9a\xfd\x9b\x41\x66\x48\x9b\x42\x9b\x43\x9b\x44\x66\x46\x9b\x45\x9b\x46", /* 6c00 */ "\x9b\x47\x9b\x48\x9b\x49\x9b\x4a\x9b\x4b\x66\x49\x66\x4b\x66\x4a\x9b\x4c\x9b\x4d\x9b\x4e\x9b\x4f\x9b\x50\x66\x4c\x9b\x51\x55\xce\x5c\xb4\x52\x92\x9b\x52\x52\x45\x53\xf7\x66\x4d\x52\xc9\x9b\x53\x66\x4e\x66\x4f\x66\x50\x4c\x75\x9b\x54\x9b\x55\x9b\x56\x4c\x9b\x9b\x57\x66\x51\x54\x83\x9b\x58\x66\x53\x9b\x59\x4d\xa3\x59\x96\x48\xb0\x66\x52\x66\x54\x9b\x5a\x9b\x5b\x9b\x5c\x4b\x4a\x51\xc7\x54\x89\x9b\x5d\x66\x55\x9b\x5e\x56\x4e\x62\x7f\x9b\x5f\x9b\x60\x5a\x60\x9b\x61\x9b\x62\x9b\x63\x9b\x64\x5d\x7b\x9b\x65\x9b\x66\x57\x41\x5b\xac\x54\x94\x9b\x67\x9b\x68\x9b\x69\x5d\x81\x4e\x84\x9b\x6a\x4d\xb9\x62\x83\x9b\x6b\x9b\x6c\x9b\x6d\x9b\x6e\x9b\x6f\x58\x4b\x9b\x70\x9b\x71\x9b\x72\x62\x81\x55\x67\x9b\x73\x4d\xb8\x9b\x74\x9b\x75\x9b\x76\x59\x54\x62\x82\x54\xe9\x4d\x4f\x4f\x4d\x4a\x78\x57\xda\x9b\x77\x9b\x78\x56\xbf\x9b\x79\x9b\x7a\x9b\x7b\x62\x89\x62\x8a\x57\x95\x9b\x7c\x9b\x7d\x9b\x7e\x9b\x7f\x9b\x81\x56\xac\x9b\x82\x4e\xb2\x9b\x83\x62\x8b\x9b\x84\x62\x8c\x9b\x85\x9b\x86\x58\xd9\x9b\x87\x9b\x88\x9b\x89\x53\xfa\x4c\x7a\x9b\x8a", /* 6c80 */ "\x9b\x8b\x54\x7f\x59\xc9\x57\xd5\x9b\x8c\x62\x85\x62\x8d\x9b\x8d\x55\x93\x4a\x61\x9b\x8e\x9b\x8f\x62\x88\x9b\x90\x9b\x91\x53\xe2\x62\x86\x9b\x92\x9b\x93\x67\x53\x62\x87\x9b\x94\x9b\x95\x9b\x96\x9b\x97\x55\x53\x9b\x98\x53\x87\x9b\x99\x9b\x9a\x9b\x9b\x4d\x55\x9b\x9c\x52\x5b\x9b\x9d\x62\x84\x53\x5d\x51\x44\x51\xd8\x49\xd6\x9b\x9e\x62\x8e\x4e\x46\x52\xac\x9b\x9f\x62\x91\x4f\xd9\x9b\xa0\x9b\xa1\x62\x9c\x62\x96\x4d\xd2\x9b\xa2\x9b\xa3\x9b\xa4\x9b\xa5\x4c\x70\x5a\x6d\x9b\xa6\x5b\xcd\x5b\x73\x4d\x61\x5b\x54\x59\x78\x9b\xa7\x9b\xa8\x9b\xa9\x9b\xaa\x58\xb8\x54\x97\x9b\xab\x9b\xac\x9b\xad\x54\xa9\x49\xb3\x9b\xae\x52\x7a\x9b\xaf\x9b\xb0\x9b\xb1\x62\x8f\x9b\xb2\x9b\xb3\x62\x9d\x62\x90\x4c\x48\x62\x98\x62\x95\x9b\xb4\x9b\xb5\x9b\xb6\x4c\x5a\x9b\xb7\x9b\xb8\x53\x42\x9b\xb9\x62\x97\x53\x7d\x49\xa7\x53\xfb\x9b\xba\x52\xdf\x9b\xbb\x9b\xbc\x5c\x42\x9b\xbd\x50\xe0\x62\x9a\x9b\xbe\x9b\xbf\x62\x9b\x62\x9e\x56\xa8\x62\x94\x9b\xc0\x5a\x5e\x9b\xc1\x49\x63\x67\x54\x62\x92\x62\x93\x9b\xc2\x62\x99\x58\xb9\x53\xc2\x5a\xf2\x62\x9f\x9b\xc3", /* 6d00 */ "\x9b\xc4\x4f\x81\x9b\xc5\x9b\xc6\x62\xa6\x9b\xc7\x9b\xc8\x62\xa5\x9b\xc9\x9b\xca\x9b\xcb\x59\x94\x62\xa2\x9b\xcc\x62\xa8\x9b\xcd\x9b\xce\x9b\xcf\x54\xf6\x9b\xd0\x9b\xd1\x9b\xd2\x9b\xd3\x58\x54\x9b\xd4\x62\xa7\x62\xad\x51\xe4\x9b\xd5\x9b\xd6\x4b\xb3\x9b\xd7\x9b\xd8\x9b\xd9\x9b\xda\x9b\xdb\x9b\xdc\x4f\x93\x9b\xdd\x62\xa1\x9b\xde\x9b\xdf\x4d\xe8\x62\xa9\x9b\xe0\x9b\xe1\x62\xab\x9b\xe2\x9b\xe3\x4b\xfc\x5b\xdd\x62\xb1\x9b\xe4\x62\xac\x9b\xe5\x9b\xe6\x9b\xe7\x62\xa0\x9b\xe8\x4e\x8f\x57\x7d\x54\x42\x53\x69\x9b\xe9\x9b\xea\x51\x98\x9b\xeb\x62\xa3\x9b\xec\x54\x53\x4f\x4c\x4f\x5d\x62\xa4\x9b\xed\x5c\x67\x49\xe1\x9b\xee\x62\xaa\x4e\xc2\x62\xae\x9b\xef\x4e\x8c\x62\xaf\x53\x48\x62\xb0\x9b\xf0\x9b\xf1\x9b\xf2\x9b\xf3\x5b\x84\x50\x43\x9b\xf4\x62\xb9\x9b\xf5\x62\xb6\x9b\xf6\x62\xba\x9b\xf7\x9b\xf8\x62\xbc\x9b\xf9\x9b\xfa\x53\xd5\x9b\xfb\x9b\xfc\x4d\xc5\x50\xca\x9b\xfd\x9c\x41\x9c\x42\x4c\xa0\x62\xb3\x9c\x43\x9c\x44\x9c\x45\x9c\x46\x5a\xa0\x9c\x47\x9c\x48\x4d\xa2\x4f\x9f\x9c\x49\x9c\x4a\x9c\x4b\x62\xbb\x9c\x4c\x9c\x4d\x9c\x4e", /* 6d80 */ "\x9c\x4f\x9c\x50\x57\x5f\x9c\x51\x9c\x52\x52\xf8\x9c\x53\x9c\x54\x58\x9c\x55\x87\x9c\x55\x9c\x56\x5a\x5f\x9c\x57\x58\x71\x9c\x58\x9c\x59\x62\xb2\x9c\x5a\x62\xb7\x62\xb8\x56\xe8\x9c\x5b\x9c\x5c\x9c\x5d\x9c\x5e\x9c\x5f\x56\xcd\x9c\x60\x50\xd3\x62\xb4\x51\x50\x62\xb5\x57\xcf\x9c\x61\x4e\x61\x4b\x73\x9c\x62\x54\xf2\x4f\x47\x5b\x67\x55\x4c\x4c\xa1\x62\xc9\x9c\x63\x9c\x64\x62\xcb\x59\x64\x9c\x65\x9c\x66\x59\xb9\x9c\x67\x9c\x68\x4d\xac\x9c\x69\x9c\x6a\x4d\xd3\x9c\x6b\x9c\x6c\x9c\x6d\x9c\x6e\x9c\x6f\x9c\x70\x62\xc2\x4b\x8e\x9c\x71\x9c\x72\x9c\x73\x5c\x6d\x62\xbf\x58\x9e\x62\xbe\x9c\x74\x9c\x75\x9c\x76\x51\x7c\x56\xc9\x9c\x77\x9c\x78\x9c\x79\x9c\x7a\x55\xe6\x9c\x7b\x9c\x7c\x9c\x7d\x9c\x7e\x52\xd6\x9c\x7f\x56\xd3\x62\xc7\x9c\x81\x9c\x82\x9c\x83\x62\xc6\x62\xc0\x9c\x84\x62\xc3\x4b\x4d\x9c\x85\x9c\x86\x5a\x79\x9c\x87\x62\xc5\x9c\x88\x9c\x89\x9c\x8a\x9c\x8b\x59\xf8\x4a\xe2\x9c\x8c\x4e\x54\x9c\x8d\x9c\x8e\x55\x8f\x9c\x8f\x4a\xbd\x9c\x90\x9c\x91\x9c\x92\x4e\x8d\x9c\x93\x59\x6d\x9c\x94\x56\xec\x67\x55\x9c\x95\x9c\x96\x9c\x97", /* 6e00 */ "\x9c\x98\x9c\x99\x9c\x9a\x9c\x9b\x9c\x9c\x54\x86\x9c\x9d\x9c\x9e\x9c\x9f\x9c\xa0\x5a\xa7\x9c\xa1\x62\xca\x5c\x75\x62\xc1\x9c\xa2\x4f\x45\x62\xc4\x9c\xa3\x9c\xa4\x5a\x87\x9c\xa5\x62\xc8\x55\x99\x9c\xa6\x9c\xa7\x62\xbd\x9c\xa8\x9c\xa9\x5a\x86\x9c\xaa\x9c\xab\x54\x9f\x4b\xc8\x9c\xac\x5a\xfb\x49\xb2\x62\xd6\x9c\xad\x9c\xae\x9c\xaf\x57\xc1\x9c\xb0\x62\xcc\x9c\xb1\x57\xbb\x9c\xb2\x4c\xda\x9c\xb3\x9c\xb4\x62\xd5\x9c\xb5\x50\x6a\x9c\xb6\x9c\xb7\x9c\xb8\x5a\x6e\x9c\xb9\x52\x8d\x9c\xba\x9c\xbb\x9c\xbc\x9c\xbd\x9c\xbe\x9c\xbf\x9c\xc0\x9c\xc1\x53\x68\x62\xd7\x9c\xc2\x9c\xc3\x9c\xc4\x9c\xc5\x9c\xc6\x9c\xc7\x9c\xc8\x9c\xc9\x57\x64\x62\xce\x9c\xca\x9c\xcb\x9c\xcc\x9c\xcd\x62\xd3\x62\xd4\x9c\xce\x4d\xfd\x9c\xcf\x58\x87\x9c\xd0\x9c\xd1\x5b\x5f\x9c\xd2\x9c\xd3\x9c\xd4\x62\xd1\x9c\xd5\x9c\xd6\x9c\xd7\x9c\xd8\x9c\xd9\x9c\xda\x9c\xdb\x9c\xdc\x9c\xdd\x9c\xde\x9c\xdf\x62\xcf\x9c\xe0\x9c\xe1\x62\xcd\x9c\xe2\x9c\xe3\x9c\xe4\x9c\xe5\x9c\xe6\x9c\xe7\x9c\xe8\x9c\xe9\x9c\xea\x9c\xeb\x9c\xec\x9c\xed\x9c\xee\x9c\xef\x9c\xf0\x57\x86\x55\xa9", /* 6e80 */ "\x9c\xf1\x9c\xf2\x9c\xf3\x50\xa2\x9c\xf4\x4f\x46\x62\xd2\x9c\xf5\x9c\xf6\x4c\xc7\x9c\xf7\x9c\xf8\x9c\xf9\x9c\xfa\x9c\xfb\x62\xe6\x5a\xb3\x9c\xfc\x9c\xfd\x9d\x41\x9d\x42\x9d\x43\x9d\x44\x9d\x45\x62\xda\x9d\x46\x9d\x47\x9d\x48\x51\x90\x9d\x49\x9d\x4a\x62\xe8\x9d\x4b\x9d\x4c\x59\xe6\x9d\x4d\x9d\x4e\x62\xde\x9d\x4f\x62\xdf\x9d\x50\x9d\x51\x58\x4a\x9d\x52\x9d\x53\x9d\x54\x9d\x55\x56\x7d\x9d\x56\x62\xd9\x62\xd0\x9d\x57\x62\xe4\x9d\x58\x54\xdb\x62\xe2\x9d\x59\x9d\x5a\x52\xe6\x62\xe1\x9d\x5b\x62\xe0\x9d\x5c\x9d\x5d\x9d\x5e\x4a\x9d\x62\xe7\x9d\x5f\x9d\x60\x9d\x61\x9d\x62\x4b\x82\x9d\x63\x9d\x64\x9d\x65\x5c\x6c\x9d\x66\x9d\x67\x9d\x68\x62\xe5\x9d\x69\x4e\x4c\x9d\x6a\x5c\x72\x56\xce\x66\x99\x9d\x6b\x62\xe3\x9d\x6c\x9d\x6d\x4d\x97\x9d\x6e\x9d\x6f\x9d\x70\x5b\xcc\x62\xd8\x62\xdb\x51\xf9\x62\xdd\x9d\x71\x51\xca\x50\xc3\x51\xcf\x9d\x72\x49\x96\x56\xb1\x9d\x73\x9d\x74\x9d\x75\x9d\x76\x9d\x77\x9d\x78\x9d\x79\x9d\x7a\x9d\x7b\x9d\x7c\x4b\x6e\x9d\x7d\x9d\x7e\x9d\x7f\x9d\x81\x62\xee\x9d\x82\x9d\x83\x9d\x84\x9d\x85\x9d\x86\x9d\x87", /* 6f00 */ "\x9d\x88\x9d\x89\x53\xae\x9d\x8a\x9d\x8b\x9d\x8c\x53\xe0\x9d\x8d\x9d\x8e\x62\xf4\x9d\x8f\x9d\x90\x9d\x91\x9d\x92\x9d\x93\x51\xa8\x9d\x94\x9d\x95\x9d\x96\x50\xeb\x59\x7d\x62\xed\x9d\x97\x9d\x98\x9d\x99\x9d\x9a\x9d\x9b\x9d\x9c\x9d\x9d\x9d\x9e\x9d\x9f\x9d\xa0\x52\xad\x9d\xa1\x9d\xa2\x9d\xa3\x62\xec\x9d\xa4\x9d\xa5\x9d\xa6\x9d\xa7\x62\xf5\x62\xf3\x51\xfd\x9d\xa8\x62\xdc\x9d\xa9\x62\xef\x9d\xaa\x55\xfd\x9d\xab\x5b\x64\x9d\xac\x9d\xad\x62\xf0\x9d\xae\x9d\xaf\x9d\xb0\x9d\xb1\x9d\xb2\x9d\xb3\x9d\xb4\x59\x9b\x9d\xb5\x9d\xb6\x9d\xb7\x9d\xb8\x9d\xb9\x9d\xba\x9d\xbb\x62\xea\x62\xeb\x9d\xbc\x9d\xbd\x9d\xbe\x62\xf1\x9d\xbf\x57\xaa\x9d\xc0\x9d\xc1\x9d\xc2\x9d\xc3\x9d\xc4\x9d\xc5\x9d\xc6\x9d\xc7\x9d\xc8\x9d\xc9\x53\x6b\x9d\xca\x9d\xcb\x9d\xcc\x54\x51\x9d\xcd\x51\xb9\x9d\xce\x9d\xcf\x9d\xd0\x62\xe9\x9d\xd1\x9d\xd2\x9d\xd3\x51\x6a\x9d\xd4\x9d\xd5\x9d\xd6\x9d\xd7\x9d\xd8\x9d\xd9\x56\xb5\x4a\x51\x9d\xda\x9d\xdb\x9d\xdc\x62\xfa\x9d\xdd\x62\xf2\x9d\xde\x9d\xdf\x9d\xe0\x62\xf9\x9d\xe1\x62\xfc\x9d\xe2\x62\xfb\x9d\xe3\x9d\xe4\x9d\xe5", /* 6f80 */ "\x9d\xe6\x9d\xe7\x9d\xe8\x9d\xe9\x4a\x6e\x9d\xea\x9d\xeb\x9d\xec\x4a\x5a\x62\xf6\x9d\xed\x9d\xee\x62\xf8\x62\xf7\x53\x8d\x9d\xef\x9d\xf0\x9d\xf1\x9d\xf2\x9d\xf3\x9d\xf4\x9d\xf5\x9d\xf6\x9d\xf7\x9d\xf8\x9d\xf9\x9d\xfa\x9d\xfb\x50\xbc\x9d\xfc\x9d\xfd\x9e\x41\x9e\x42\x5a\xe7\x9e\x43\x9e\x44\x9e\x45\x9e\x46\x9e\x47\x63\x42\x9e\x48\x9e\x49\x9e\x4a\x9e\x4b\x9e\x4c\x9e\x4d\x9e\x4e\x9e\x4f\x9e\x50\x9e\x51\x9e\x52\x48\xc3\x9e\x53\x9e\x54\x63\x44\x9e\x55\x9e\x56\x63\x43\x9e\x57\x9e\x58\x9e\x59\x9e\x5a\x9e\x5b\x9e\x5c\x4e\xa3\x9e\x5d\x63\x45\x9e\x5e\x9e\x5f\x9e\x60\x9e\x61\x9e\x62\x9e\x63\x63\x41\x9e\x64\x9e\x65\x9e\x66\x9e\x67\x9e\x68\x9e\x69\x9e\x6a\x62\xfd\x49\x95\x9e\x6b\x9e\x6c\x9e\x6d\x9e\x6e\x9e\x6f\x9e\x70\x9e\x71\x9e\x72\x9e\x73\x9e\x74\x9e\x75\x63\x48\x9e\x76\x63\x49\x63\x46\x9e\x77\x9e\x78\x9e\x79\x9e\x7a\x9e\x7b\x9e\x7c\x9e\x7d\x9e\x7e\x9e\x7f\x9e\x81\x9e\x82\x9e\x83\x63\x47\x63\x4a\x9e\x84\x9e\x85\x9e\x86\x9e\x87\x9e\x88\x9e\x89\x9e\x8a\x9e\x8b\x9e\x8c\x9e\x8d\x9e\x8e\x9e\x8f\x9e\x90\x9e\x91\x9e\x92\x9e\x93", /* 7000 */ "\x9e\x94\x9e\x95\x9e\x96\x9e\x97\x9e\x98\x9e\x99\x9e\x9a\x9e\x9b\x9e\x9c\x9e\x9d\x9e\x9e\x9e\x9f\x9e\xa0\x9e\xa1\x9e\xa2\x9e\xa3\x9e\xa4\x53\xd8\x9e\xa5\x9e\xa6\x9e\xa7\x9e\xa8\x9e\xa9\x9e\xaa\x9e\xab\x9e\xac\x63\x4b\x63\x4d\x9e\xad\x9e\xae\x9e\xaf\x9e\xb0\x9e\xb1\x9e\xb2\x9e\xb3\x63\x4c\x9e\xb4\x9e\xb5\x9e\xb6\x9e\xb7\x9e\xb8\x9e\xb9\x9e\xba\x9e\xbb\x9e\xbc\x9e\xbd\x9e\xbe\x9e\xbf\x9e\xc0\x9e\xc1\x9e\xc2\x9e\xc3\x9e\xc4\x63\x4f\x9e\xc5\x9e\xc6\x9e\xc7\x63\x4e\x9e\xc8\x9e\xc9\x9e\xca\x9e\xcb\x9e\xcc\x9e\xcd\x9e\xce\x9e\xcf\x9e\xd0\x9e\xd1\x9e\xd2\x9e\xd3\x9e\xd4\x9e\xd5\x9e\xd6\x9e\xd7\x9e\xd8\x9e\xd9\x4d\x81\x9e\xda\x9e\xdb\x63\x50\x9e\xdc\x9e\xdd\x9e\xde\x9e\xdf\x9e\xe0\x9e\xe1\x9e\xe2\x9e\xe3\x9e\xe4\x9e\xe5\x9e\xe6\x9e\xe7\x9e\xe8\x9e\xe9\x63\x51\x9e\xea\x9e\xeb\x9e\xec\x9e\xed\x9e\xee\x9e\xef\x9e\xf0\x9e\xf1\x9e\xf2\x9e\xf3\x9e\xf4\x9e\xf5\x4e\x91\x66\xe0\x52\x91\x9e\xf6\x4b\x66\x4e\x72\x9e\xf7\x9e\xf8\x9e\xf9\x9e\xfa\x51\x8a\x5a\xed\x9e\xfb\x4f\xc3\x9e\xfc\x9e\xfd\x9f\x41\x5c\x66\x9f\x42\x5a\xd5\x49\xd2", /* 7080 */ "\x66\xbd\x9f\x43\x9f\x44\x9f\x45\x9f\x46\x65\xc0\x9f\x47\x9f\x48\x9f\x49\x51\xae\x4a\xb5\x9f\x4a\x9f\x4b\x9f\x4c\x59\x77\x9f\x4d\x9f\x4e\x9f\x4f\x4a\x54\x9f\x50\x54\xb1\x50\x5b\x66\xbf\x9f\x51\x9f\x52\x5b\xca\x9f\x53\x9f\x54\x66\xbe\x66\xc0\x9f\x55\x9f\x56\x9f\x57\x9f\x58\x9f\x59\x9f\x5a\x9f\x5b\x9f\x5c\x9f\x5d\x9f\x5e\x9f\x5f\x9f\x60\x9f\x61\x66\xc4\x4f\xe5\x56\xbe\x53\x7a\x4f\xbb\x9f\x62\x66\xc5\x9f\x63\x49\x9f\x9f\x64\x9f\x65\x9f\x66\x66\xc3\x5b\x48\x4b\x84\x9f\x67\x66\xc1\x51\x56\x4a\x84\x9f\x68\x9f\x69\x66\xc2\x56\x58\x50\xc2\x56\xfd\x9f\x6a\x9f\x6b\x9f\x6c\x9f\x6d\x51\x72\x9f\x6e\x66\xc7\x9f\x6f\x9f\x70\x9f\x71\x9f\x72\x9f\x73\x9f\x74\x9f\x75\x9f\x76\x9f\x77\x9f\x78\x9f\x79\x9f\x7a\x9f\x7b\x4d\xe5\x50\xd2\x9f\x7c\x5b\xf1\x9f\x7d\x9f\x7e\x9f\x7f\x59\x6c\x9f\x81\x9f\x82\x9f\x83\x9f\x84\x50\x5e\x9f\x85\x4c\x53\x55\x75\x66\xc6\x4e\x83\x9f\x86\x56\xcb\x4f\x9e\x54\xc7\x9f\x87\x58\x49\x9f\x88\x9f\x89\x9f\x8a\x9f\x8b\x9f\x8c\x9f\x8d\x9f\x8e\x57\x8a\x9f\x8f\x53\x8c\x9f\x90\x9f\x91\x9f\x92\x4c\x8a\x9f\x93\x9f\x94", /* 7100 */ "\x9f\x95\x9f\x96\x9f\x97\x9f\x98\x9f\x99\x9f\x9a\x9f\x9b\x9f\x9c\x9f\x9d\x59\x69\x4d\xb7\x9f\x9e\x9f\x9f\x9f\xa0\x9f\xa1\x9f\xa2\x66\xc8\x9f\xa3\x9f\xa4\x66\xc9\x9f\xa5\x4e\x60\x66\xca\x9f\xa6\x66\xe1\x49\x5a\x4c\x79\x9f\xa7\x9f\xa8\x9f\xa9\x9f\xaa\x9f\xab\x9f\xac\x9f\xad\x9f\xae\x9f\xaf\x9f\xb0\x9f\xb1\x4f\x59\x9f\xb2\x9f\xb3\x9f\xb4\x9f\xb5\x9f\xb6\x9f\xb7\x9f\xb8\x9f\xb9\x66\xcb\x59\x87\x66\xcc\x9f\xba\x9f\xbb\x9f\xbc\x9f\xbd\x54\xba\x9f\xbe\x9f\xbf\x9f\xc0\x9f\xc1\x9f\xc2\x9f\xc3\x9f\xc4\x9f\xc5\x9f\xc6\x9f\xc7\x9f\xc8\x9f\xc9\x9f\xca\x9f\xcb\x66\xd0\x9f\xcc\x9f\xcd\x9f\xce\x9f\xcf\x66\xd2\x9f\xd0\x4e\x6d\x9f\xd1\x4e\xe4\x9f\xd2\x9f\xd3\x9f\xd4\x9f\xd5\x9f\xd6\x9f\xd7\x9f\xd8\x9f\xd9\x9f\xda\x9f\xdb\x9f\xdc\x9f\xdd\x9f\xde\x66\xce\x9f\xdf\x55\x57\x9f\xe0\x9f\xe1\x9f\xe2\x9f\xe3\x9f\xe4\x52\x5a\x9f\xe5\x66\xe2\x5b\x75\x66\xcf\x9f\xe6\x9f\xe7\x9f\xe8\x9f\xe9\x9f\xea\x5b\xf2\x9f\xeb\x9f\xec\x9f\xed\x66\xd1\x66\xcd\x9f\xee\x9f\xef\x9f\xf0\x9f\xf1\x66\xd3\x9f\xf2\x66\xd4\x9f\xf3\x9f\xf4\x55\x5f\x9f\xf5\x9f\xf6", /* 7180 */ "\x9f\xf7\x9f\xf8\x9f\xf9\x9f\xfa\x58\x48\x9f\xfb\x9f\xfc\x9f\xfd\xa0\x41\xa0\x42\x58\xdb\xa0\x43\xa0\x44\xa0\x45\xa0\x46\x59\x4c\xa0\x47\xa0\x48\xa0\x49\xa0\x4a\x54\xda\xa0\x4b\xa0\x4c\xa0\x4d\x66\xd5\x57\xf4\xa0\x4e\xa0\x4f\xa0\x50\xa0\x51\xa0\x52\x55\xeb\x66\xd9\xa0\x53\xa0\x54\xa0\x55\xa0\x56\xa0\x57\xa0\x58\xa0\x59\x66\xd8\xa0\x5a\xa0\x5b\xa0\x5c\x48\xbd\xa0\x5d\xa0\x5e\xa0\x5f\xa0\x60\xa0\x61\xa0\x62\x66\xd6\xa0\x63\x66\xd7\xa0\x64\xa0\x65\xa0\x66\x66\xe3\xa0\x67\xa0\x68\xa0\x69\xa0\x6a\xa0\x6b\xa0\x6c\xa0\x6d\xa0\x6e\xa0\x6f\x54\xbb\xa0\x70\xa0\x71\xa0\x72\xa0\x73\xa0\x74\xa0\x75\xa0\x76\xa0\x77\xa0\x78\xa0\x79\x51\x67\xa0\x7a\xa0\x7b\xa0\x7c\xa0\x7d\xa0\x7e\x66\xdb\x59\x81\xa0\x7f\xa0\x81\xa0\x82\xa0\x83\xa0\x84\xa0\x85\xa0\x86\xa0\x87\xa0\x88\xa0\x89\x66\xda\xa0\x8a\xa0\x8b\xa0\x8c\xa0\x8d\x5a\xee\xa0\x8e\x66\xdc\xa0\x8f\xa0\x90\xa0\x91\xa0\x92\xa0\x93\xa0\x94\x5e\x66\xa0\x95\xa0\x96\xa0\x97\xa0\x98\xa0\x99\xa0\x9a\xa0\x9b\xa0\x9c\xa0\x9d\xa0\x9e\x66\xdd\xa0\x9f\xa0\xa0\xa0\xa1\xa0\xa2\xa0\xa3\xa0\xa4", /* 7200 */ "\xa0\xa5\xa0\xa6\xa0\xa7\xa0\xa8\xa0\xa9\xa0\xaa\x49\x4c\xa0\xab\xa0\xac\xa0\xad\xa0\xae\xa0\xaf\xa0\xb0\xa0\xb1\xa0\xb2\xa0\xb3\xa0\xb4\xa0\xb5\xa0\xb6\xa0\xb7\xa0\xb8\xa0\xb9\xa0\xba\xa0\xbb\xa0\xbc\xa0\xbd\xa0\xbe\xa0\xbf\xa0\xc0\x66\xde\xa0\xc1\xa0\xc2\xa0\xc3\xa0\xc4\xa0\xc5\xa0\xc6\xa0\xc7\xa0\xc8\xa0\xc9\xa0\xca\x66\xdf\xa0\xcb\x5c\x46\xa0\xcc\x53\x60\xa0\xcd\xa0\xce\xa0\xcf\x66\x5c\x48\xad\xa0\xd0\xa0\xd1\xa0\xd2\x4f\xf3\x4c\xb7\x59\xae\x48\xd5\x4b\x9a\xa0\xd3\x5c\xb2\xa0\xd4\x56\x4c\xa0\xd5\x62\x7d\xa0\xd6\xa0\xd7\xa0\xd8\xa0\xd9\xa0\xda\xa0\xdb\xa0\xdc\x53\xab\x48\xe5\xa0\xdd\xa0\xde\xa0\xdf\x53\x66\x66\x59\xa0\xe0\xa0\xe1\xa0\xe2\xa0\xe3\x66\x5a\xa0\xe4\xa0\xe5\xa0\xe6\x66\x5b\xa0\xe7\xa0\xe8\x59\x60\xa0\xe9\x53\x43\xa0\xea\x65\xf1\xa0\xeb\x52\xb1\xa0\xec\x52\xb4\x50\xcd\xa0\xed\xa0\xee\xa0\xef\x65\xf2\x52\xc0\xa0\xf0\x57\xee\xa0\xf1\xa0\xf2\xa0\xf3\xa0\xf4\x65\xef\x65\xf3\xa0\xf5\xa0\xf6\x55\x9d\xa0\xf7\xa0\xf8\x54\x43\xa0\xf9\xa0\xfa\xa0\xfb\x56\xd7\x57\xfd\xa0\xfc\xa0\xfd\xa1\x41\x65\xf4\x65\xf5", /* 7280 */ "\x58\x4c\x50\xe6\xa1\x42\xa1\x43\x65\xf6\xa1\x44\xa1\x45\xa1\x46\xa1\x47\xa1\x48\x4b\xbe\x65\xf7\xa1\x49\x65\xf8\xa1\x4a\x65\xf9\xa1\x4b\xa1\x4c\x65\xfa\xa1\x4d\xa1\x4e\xa1\x4f\xa1\x50\xa1\x51\xa1\x52\xa1\x53\xa1\x54\xa1\x55\xa1\x56\xa1\x57\xa1\x58\x65\xf0\xa1\x59\xa1\x5a\xa1\x5b\xa1\x5c\xa1\x5d\xa1\x5e\xa1\x5f\xa1\x60\xa1\x61\xa1\x62\xa1\x63\xa1\x64\x54\xad\x61\x8c\xa1\x65\x4c\x58\x61\x8d\xa1\x66\xa1\x67\xa1\x68\x61\x8e\xa1\x69\x5c\x54\x61\x8f\x61\x90\x5a\x6c\xa1\x6a\xa1\x6b\xa1\x6c\xa1\x6d\xa1\x6e\xa1\x6f\xa1\x70\x61\x92\x50\x92\x61\x91\x4b\x72\xa1\x71\xa1\x72\xa1\x73\x49\x57\xa1\x74\xa1\x75\xa1\x76\xa1\x77\x61\x94\x61\x93\xa1\x78\x4d\xfb\xa1\x79\x61\x95\xa1\x7a\xa1\x7b\xa1\x7c\xa1\x7d\x4d\x57\xa1\x7e\x4f\xd0\xa1\x7f\xa1\x81\xa1\x82\xa1\x83\x52\xfb\xa1\x84\x4d\xdc\x4f\x66\xa1\x85\xa1\x86\xa1\x87\xa1\x88\xa1\x89\xa1\x8a\x61\x96\x61\x98\xa1\x8b\xa1\x8c\x4b\xbf\x58\x61\x55\xa7\x61\x97\x5b\x99\x5a\x9d\x61\x99\x61\x9d\x61\x9a\xa1\x8d\xa1\x8e\x61\x9b\x50\xe9\xa1\x8f\x61\x9f\x61\xa0\x50\xc6\xa1\x90\xa1\x91\xa1\x92", /* 7300 */ "\xa1\x93\x61\x9c\xa1\x94\x61\x9e\xa1\x95\xa1\x96\xa1\x97\xa1\x98\xa1\x99\xa1\x9a\x61\xa4\xa1\x9b\xa1\x9c\xa1\x9d\x51\x74\xa1\x9e\xa1\x9f\xa1\xa0\xa1\xa1\x61\xa2\xa1\xa2\x61\xa7\x49\xfd\x61\xa1\xa1\xa3\xa1\xa4\xa1\xa5\x52\x6d\x49\xc1\x61\xa6\x61\xa5\xa1\xa6\xa1\xa7\x61\xa3\x61\xa8\xa1\xa8\xa1\xa9\x61\xaa\xa1\xaa\xa1\xab\xa1\xac\x58\xc8\x5b\xec\x52\x48\x61\xab\xa1\xad\x58\x77\xa1\xae\xa1\xaf\x61\xad\xa1\xb0\xa1\xb1\x4d\xee\xa1\xb2\xa1\xb3\x65\x81\x61\xac\x61\xa9\xa1\xb4\xa1\xb5\xa1\xb6\xa1\xb7\x4e\x4b\x5a\xb2\xa1\xb8\xa1\xb9\xa1\xba\xa1\xbb\xa1\xbc\xa1\xbd\xa1\xbe\xa1\xbf\xa1\xc0\xa1\xc1\xa1\xc2\xa1\xc3\xa1\xc4\x61\xaf\xa1\xc5\xa1\xc6\x61\xae\xa1\xc7\x65\x82\xa1\xc8\xa1\xc9\xa1\xca\xa1\xcb\x61\xb0\xa1\xcc\xa1\xcd\xa1\xce\xa1\xcf\xa1\xd0\xa1\xd1\xa1\xd2\xa1\xd3\x61\xb1\xa1\xd4\xa1\xd5\xa1\xd6\xa1\xd7\xa1\xd8\xa1\xd9\xa1\xda\xa1\xdb\xa1\xdc\xa1\xdd\xa1\xde\x61\xb2\x56\xa0\xa1\xdf\x61\xb3\xa1\xe0\xa1\xe1\xa1\xe2\xa1\xe3\xa1\xe4\xa1\xe5\xa1\xe6\xa1\xe7\xa1\xe8\xa1\xe9\xa1\xea\xa1\xeb\xa1\xec\xa1\xed\x61\xb4\xa1\xee", /* 7380 */ "\xa1\xef\xa1\xf0\xa1\xf1\xa1\xf2\x58\xfd\xa1\xf3\xa1\xf4\x51\xc9\xa1\xf5\x5a\x92\xa1\xf6\x57\x96\xa1\xf7\xa1\xf8\x64\x81\xa1\xf9\xa1\xfa\x64\x82\xa1\xfb\xa1\xfc\xa1\xfd\xa2\x41\x4f\xc0\xa2\x42\xa2\x43\xa2\x44\xa2\x45\x51\xe9\xa2\x46\xa2\x47\xa2\x48\x64\x85\xa2\x49\xa2\x4a\x64\x84\xa2\x4b\xa2\x4c\xa2\x4d\xa2\x4e\xa2\x4f\xa2\x50\x57\x87\xa2\x51\x52\x55\xa2\x52\xa2\x53\x64\x83\x4e\x57\x58\x76\xa2\x54\x51\x82\x64\x8a\xa2\x55\xa2\x56\xa2\x57\x64\x89\xa2\x58\xa2\x59\x64\x95\x49\xa2\xa2\x5a\xa2\x5b\xa2\x5c\xa2\x5d\x64\x8b\xa2\x5e\x64\x87\xa2\x5f\xa2\x60\xa2\x61\xa2\x62\xa2\x63\x64\x8d\x64\x8c\x55\x5a\xa2\x64\xa2\x65\x5b\x85\xa2\x66\x64\x86\x4c\x49\x64\x88\xa2\x67\xa2\x68\xa2\x69\xa2\x6a\xa2\x6b\xa2\x6c\xa2\x6d\x64\x8f\xa2\x6e\xa2\x6f\xa2\x70\xa2\x71\x64\x94\xa2\x72\x5b\xe8\xa2\x73\xa2\x74\xa2\x75\xa2\x76\x64\x8e\xa2\x77\x64\x93\xa2\x78\x64\x92\xa2\x79\xa2\x7a\xa2\x7b\x48\xdf\xa2\x7c\xa2\x7d\xa2\x7e\xa2\x7f\x64\x96\xa2\x81\xa2\x82\xa2\x83\xa2\x84\xa2\x85\xa2\x86\xa2\x87\xa2\x88\xa2\x89\xa2\x8a\xa2\x8b\xa2\x8c\xa2\x8d", /* 7400 */ "\xa2\x8e\xa2\x8f\xa2\x90\x54\x93\xa2\x91\x50\xc4\x50\xec\xa2\x92\xa2\x93\x51\x91\x64\x91\xa2\x94\xa2\x95\xa2\x96\xa2\x97\x64\x97\x56\x97\xa2\x98\xa2\x99\xa2\x9a\xa2\x9b\xa2\x9c\xa2\x9d\xa2\x9e\xa2\x9f\xa2\xa0\x64\xa1\x64\xa0\xa2\xa1\xa2\xa2\xa2\xa3\xa2\xa4\xa2\xa5\xa2\xa6\x5c\x61\xa2\xa7\xa2\xa8\x64\x9b\x64\x9a\xa2\xa9\x64\x9c\xa2\xaa\x64\x98\xa2\xab\x64\x9f\xa2\xac\x64\x9e\xa2\xad\x64\x9d\xa2\xae\xa2\xaf\x51\x75\x54\x79\x53\x9e\x53\x63\xa2\xb0\xa2\xb1\xa2\xb2\xa2\xb3\xa2\xb4\x54\x8e\xa2\xb5\xa2\xb6\xa2\xb7\xa2\xb8\x64\xa2\xa2\xb9\xa2\xba\xa2\xbb\xa2\xbc\xa2\xbd\xa2\xbe\xa2\xbf\xa2\xc0\xa2\xc1\xa2\xc2\xa2\xc3\xa2\xc4\xa2\xc5\xa2\xc6\xa2\xc7\xa2\xc8\xa2\xc9\xa2\xca\xa2\xcb\x64\xa5\xa2\xcc\x64\xa4\xa2\xcd\x64\xa6\x4d\xf6\x64\x99\x64\xa3\xa2\xce\x54\xef\x55\x4a\xa2\xcf\xa2\xd0\xa2\xd1\xa2\xd2\xa2\xd3\xa2\xd4\xa2\xd5\xa2\xd6\xa2\xd7\xa2\xd8\xa2\xd9\xa2\xda\xa2\xdb\x64\xa8\xa2\xdc\xa2\xdd\x4d\x86\xa2\xde\xa2\xdf\xa2\xe0\xa2\xe1\xa2\xe2\x59\x9f\x64\xa7\xa2\xe3\xa2\xe4\xa2\xe5\xa2\xe6\xa2\xe7\xa2\xe8\x64\xa9\xa2\xe9", /* 7480 */ "\x64\xac\x64\xad\xa2\xea\x51\x47\xa2\xeb\xa2\xec\xa2\xed\x64\xae\xa2\xee\xa2\xef\xa2\xf0\x64\xaf\xa2\xf1\xa2\xf2\x64\xab\xa2\xf3\x64\xb3\xa2\xf4\xa2\xf5\xa2\xf6\xa2\xf7\xa2\xf8\xa2\xf9\xa2\xfa\xa2\xfb\xa2\xfc\xa2\xfd\xa3\x41\x64\xaa\xa3\x42\x64\xb0\xa3\x43\xa3\x44\xa3\x45\xa3\x46\xa3\x47\xa3\x48\xa3\x49\xa3\x4a\x64\xb4\x64\xb1\x64\xb2\xa3\x4b\xa3\x4c\xa3\x4d\xa3\x4e\xa3\x4f\xa3\x50\xa3\x51\xa3\x52\xa3\x53\xa3\x54\xa3\x55\xa3\x56\xa3\x57\xa3\x58\xa3\x59\xa3\x5a\x64\xb6\xa3\x5b\xa3\x5c\xa3\x5d\xa3\x5e\xa3\x5f\xa3\x60\xa3\x61\xa3\x62\xa3\x63\xa3\x64\xa3\x65\xa3\x66\xa3\x67\xa3\x68\xa3\x69\xa3\x6a\xa3\x6b\xa3\x6c\xa3\x6d\xa3\x6e\xa3\x6f\xa3\x70\xa3\x71\x64\xb5\xa3\x72\xa3\x73\xa3\x74\xa3\x75\xa3\x76\xa3\x77\xa3\x78\xa3\x79\xa3\x7a\x4d\x6f\xa3\x7b\x68\xab\xa3\x7c\x68\xac\xa3\x7d\x53\xaf\x48\xe9\x54\xbe\xa3\x7e\x57\x7f\xa3\x7f\xa3\x81\xa3\x82\xa3\x83\xa3\x84\xa3\x85\xa3\x86\x57\xcc\x65\xb0\xa3\x87\xa3\x88\xa3\x89\xa3\x8a\x65\xb1\xa3\x8b\x53\xbe\x4a\xc8\xa3\x8c\xa3\x8d\xa3\x8e\xa3\x8f\xa3\x90\xa3\x91\xa3\x92\x65\xb2", /* 7500 */ "\xa3\x93\xa3\x94\xa3\x95\xa3\x96\x5b\x88\xa3\x97\xa3\x98\xa3\x99\xa3\x9a\xa3\x9b\xa3\x9c\xa3\x9d\xa3\x9e\x5f\x9a\xa3\x9f\x65\xb3\xa3\xa0\x65\xb4\xa3\xa1\x65\xb5\xa3\xa2\xa3\xa3\xa3\xa4\xa3\xa5\x4c\xc9\x60\x50\x55\x96\xa3\xa6\x56\xef\xa3\xa7\xa3\xa8\x55\x9b\xa3\xa9\xa3\xaa\xa3\xab\xa3\xac\xa3\xad\x55\x9c\xa3\xae\xa3\xaf\x5a\x63\x56\x46\xa3\xb0\x4c\xa5\x68\xad\x49\x62\xa3\xb1\x63\x58\x56\xee\x5a\x69\x4e\xd6\x55\x8b\xa3\xb2\x4b\x88\xa3\xb3\x52\xcf\x4b\x8a\xa3\xb4\x67\xad\x4e\x4d\xa3\xb5\xa3\xb6\x64\x7e\xa3\xb7\x67\xae\xa3\xb8\xa3\xb9\xa3\xba\xa3\xbb\x4a\x49\xa3\xbc\xa3\xbd\x67\xb1\xa3\xbe\xa3\xbf\x67\xb0\x4f\x88\xa3\xc0\x67\xaf\x57\xb6\xa3\xc1\xa3\xc2\xa3\xc3\xa3\xc4\x53\x6f\xa3\xc5\xa3\xc6\xa3\xc7\xa3\xc8\x51\x95\x5e\x6e\x67\xb2\x58\xf2\xa3\xc9\xa3\xca\xa3\xcb\xa3\xcc\xa3\xcd\xa3\xce\xa3\xcf\xa3\xd0\x51\xd3\x53\xe7\xa3\xd1\xa3\xd2\xa3\xd3\x4c\x4c\xa3\xd4\xa3\xd5\xa3\xd6\xa3\xd7\xa3\xd8\xa3\xd9\xa3\xda\x67\xb3\xa3\xdb\x4a\x8c\xa3\xdc\xa3\xdd\xa3\xde\x4e\x9c\x67\xb4\xa3\xdf\xa3\xe0\xa3\xe1\xa3\xe2\xa3\xe3\x64\x7c", /* 7580 */ "\xa3\xe4\xa3\xe5\xa3\xe6\x67\xb5\xa3\xe7\xa3\xe8\x4f\x4e\xa3\xe9\xa3\xea\xa3\xeb\xa3\xec\x69\x83\xa3\xed\xa3\xee\xa3\xef\x55\xe7\xa3\xf0\x59\xc8\x68\xd9\xa3\xf1\x68\xda\xa3\xf2\x68\xdb\x51\x66\xa3\xf3\x4c\xec\x4f\xcd\xa3\xf4\xa3\xf5\x68\xdd\xa3\xf6\x53\x51\x68\xdc\x59\x92\xa3\xf7\x68\xdf\x48\xcb\x4f\x8b\xa3\xf8\xa3\xf9\xa3\xfa\xa3\xfb\xa3\xfc\x59\xde\x68\xde\xa3\xfd\x4a\xae\x4c\x89\x68\xe5\x68\xe4\x53\xa2\x68\xe0\x68\xe1\x4a\xc2\xa4\x41\xa4\x42\x68\xe2\x5b\x8f\xa4\x43\xa4\x44\x56\xda\x4f\xd1\x4e\xb1\xa4\x45\xa4\x46\xa4\x47\x68\xe7\x68\xe6\x68\xe3\x49\xa0\xa4\x48\x5b\xa1\x5a\x58\x4f\xb6\x54\xab\xa4\x49\xa4\x4a\x68\xe9\xa4\x4b\xa4\x4c\xa4\x4d\xa4\x4e\x59\x98\xa4\x4f\x5b\xcb\x4d\xda\x68\xe8\xa4\x50\x4b\xba\xa4\x51\xa4\x52\x57\x54\xa4\x53\xa4\x54\x53\xa5\xa4\x55\xa4\x56\xa4\x57\x51\x41\x68\xea\x68\xed\xa4\x58\x68\xec\x68\xef\x68\xeb\xa4\x59\x4e\x5e\x68\xee\xa4\x5a\xa4\x5b\xa4\x5c\xa4\x5d\x56\xb4\x68\xf1\xa4\x5e\xa4\x5f\x4a\x75\xa4\x60\xa4\x61\xa4\x62\xa4\x63\x49\x74\xa4\x64\xa4\x65\x68\xf2\xa4\x66\xa4\x67\x68\xf3", /* 7600 */ "\x68\xf5\x4a\xe0\xa4\x68\x68\xf0\xa4\x69\x68\xf6\xa4\x6a\xa4\x6b\xa4\x6c\xa4\x6d\x68\xf9\xa4\x6e\x68\xf7\xa4\x6f\xa4\x70\xa4\x71\x68\xf4\xa4\x72\xa4\x73\xa4\x74\xa4\x75\x68\xfc\xa4\x76\x68\xf8\x68\xfb\x68\xfd\xa4\x77\x69\x41\xa4\x78\xa4\x79\xa4\x7a\x57\xc0\x69\x44\xa4\x7b\x69\x43\xa4\x7c\x51\x97\x68\xfa\x55\xdc\xa4\x7d\xa4\x7e\x4a\xf0\x49\x92\x56\xb0\xa4\x7f\x69\x46\xa4\x81\xa4\x82\x69\x47\xa4\x83\xa4\x84\x69\x4c\x5b\x6e\x69\x49\xa4\x85\xa4\x86\x54\xb2\xa4\x87\xa4\x88\xa4\x89\x69\x42\xa4\x8a\x69\x4b\x69\x48\x69\x45\xa4\x8b\xa4\x8c\x69\x4a\xa4\x8d\xa4\x8e\xa4\x8f\xa4\x90\xa4\x91\xa4\x92\xa4\x93\xa4\x94\x48\xa8\x69\x4d\xa4\x95\xa4\x96\xa4\x97\xa4\x98\xa4\x99\xa4\x9a\x69\x4f\xa4\x9b\x69\x51\xa4\x9c\xa4\x9d\xa4\x9e\xa4\x9f\xa4\xa0\x69\x50\xa4\xa1\x69\x4e\xa4\xa2\xa4\xa3\xa4\xa4\xa4\xa5\x59\x42\xa4\xa6\xa4\xa7\xa4\xa8\xa4\xa9\xa4\xaa\xa4\xab\xa4\xac\x69\x52\xa4\xad\xa4\xae\xa4\xaf\x69\x53\xa4\xb0\xa4\xb1\xa4\xb2\xa4\xb3\xa4\xb4\xa4\xb5\xa4\xb6\xa4\xb7\x4d\x90\xa4\xb8\xa4\xb9\x4b\x67\xa4\xba\x48\xd6\x48\xd8\xa4\xbb", /* 7680 */ "\xa4\xbc\xa4\xbd\x5a\xec\xa4\xbe\x4b\x64\xa4\xbf\x4f\x74\x4e\x6a\x68\xa6\xa4\xc0\xa4\xc1\x4c\xdd\xa4\xc2\xa4\xc3\x68\xa7\xa4\xc4\xa4\xc5\x48\xa7\xa4\xc6\x68\xa8\xa4\xc7\xa4\xc8\x57\x8f\xa4\xc9\xa4\xca\x68\xa9\xa4\xcb\xa4\xcc\xa4\xcd\xa4\xce\xa4\xcf\xa4\xd0\xa4\xd1\xa4\xd2\xa4\xd3\xa4\xd4\x68\xaa\xa4\xd5\xa4\xd6\xa4\xd7\xa4\xd8\xa4\xd9\xa4\xda\xa4\xdb\xa4\xdc\xa4\xdd\x53\xa3\xa4\xde\xa4\xdf\x5b\xe4\x69\x85\xa4\xe0\x69\x86\xa4\xe1\xa4\xe2\xa4\xe3\xa4\xe4\xa4\xe5\xa4\xe6\xa4\xe7\xa4\xe8\xa4\xe9\xa4\xea\x52\x94\xa4\xeb\xa4\xec\x5a\x7b\xa4\xed\xa4\xee\x5b\xd0\x53\x89\xa4\xef\x5a\x4f\xa4\xf0\x59\xe5\xa4\xf1\xa4\xf2\x67\xc0\x48\xba\x5b\x55\x59\x6e\x4e\xdf\x4d\xcf\xa4\xf3\x50\x99\xa4\xf4\x4c\xc6\x4b\x61\x53\x6c\xa4\xf5\xa4\xf6\x55\xa1\xa4\xf7\xa4\xf8\xa4\xf9\x52\x6b\xa4\xfa\xa4\xfb\xa4\xfc\xa4\xfd\xa5\x41\x67\xc1\xa5\x42\xa5\x43\xa5\x44\xa5\x45\xa5\x46\xa5\x47\xa5\x48\xa5\x49\x52\xbe\x4b\xa1\xa5\x4a\x67\x8d\x52\x44\xa5\x4b\x5b\xb0\xa5\x4c\xa5\x4d\xa5\x4e\x58\x81\x67\x90\xa5\x4f\xa5\x50\x53\x6e\xa5\x51\x4b\xdb\xa5\x52", /* 7700 */ "\xa5\x53\x55\xa0\xa5\x54\xa5\x55\x67\x8e\xa5\x56\xa5\x57\x67\x91\x67\x92\x52\x5c\xa5\x58\x50\x54\xa5\x59\x67\x8f\xa5\x5a\xa5\x5b\xa5\x5c\xa5\x5d\xa5\x5e\xa5\x5f\xa5\x60\xa5\x61\xa5\x62\xa5\x63\xa5\x64\x67\x95\x67\x93\xa5\x65\xa5\x66\xa5\x67\xa5\x68\x5b\x87\x52\x7f\xa5\x69\x67\x94\xa5\x6a\xa5\x6b\xa5\x6c\x67\x97\xa5\x6d\x5b\x43\x59\x43\xa5\x6e\xa5\x6f\xa5\x70\x67\x96\xa5\x71\x52\x70\xa5\x72\xa5\x73\xa5\x74\xa5\x75\xa5\x76\x67\x98\x50\x95\x4f\xeb\x67\x99\xa5\x77\x56\xf6\xa5\x78\x59\x7b\xa5\x79\xa5\x7a\xa5\x7b\x5c\x65\x5b\x97\xa5\x7c\x67\x9d\xa5\x7d\xa5\x7e\xa5\x7f\x67\x9c\xa5\x81\xa5\x82\xa5\x83\xa5\x84\xa5\x85\xa5\x86\xa5\x87\xa5\x88\x67\x9a\x67\x9b\xa5\x89\xa5\x8a\xa5\x8b\xa5\x8c\xa5\x8d\xa5\x8e\xa5\x8f\xa5\x90\x67\x9e\x4f\xa5\xa5\x91\xa5\x92\xa5\x93\xa5\x94\xa5\x95\x56\x4f\x67\xa0\x4b\xbc\xa5\x96\x67\xa1\x52\xbf\xa5\x97\x67\x9f\xa5\x98\xa5\x99\x4f\x7e\x49\xc6\xa5\x9a\xa5\x9b\xa5\x9c\xa5\x9d\xa5\x9e\xa5\x9f\xa5\xa0\xa5\xa1\xa5\xa2\xa5\xa3\xa5\xa4\xa5\xa5\x4b\xc2\xa5\xa6\xa5\xa7\xa5\xa8\x67\xa4\x5c\xb9\x67\xa2", /* 7780 */ "\x67\xa5\xa5\xa9\xa5\xaa\xa5\xab\x52\x8a\x4a\x93\xa5\xac\xa5\xad\xa5\xae\xa5\xaf\xa5\xb0\xa5\xb1\x67\xa6\x67\xa3\x58\x59\xa5\xb2\xa5\xb3\x67\xa7\x51\xf6\xa5\xb4\xa5\xb5\xa5\xb6\xa5\xb7\xa5\xb8\xa5\xb9\xa5\xba\xa5\xbb\xa5\xbc\xa5\xbd\xa5\xbe\xa5\xbf\x67\xa8\x67\xa9\xa5\xc0\x5f\xaa\xa5\xc1\xa5\xc2\x53\xb2\xa5\xc3\x54\x66\xa5\xc4\x5b\xf4\x4b\x69\xa5\xc5\x56\x52\xa5\xc6\xa5\xc7\xa5\xc8\x67\xaa\xa5\xc9\xa5\xca\x57\x4b\xa5\xcb\x67\xab\xa5\xcc\xa5\xcd\xa5\xce\xa5\xcf\xa5\xd0\x5b\x50\xa5\xd1\x67\xac\xa5\xd2\x6b\xc3\xa5\xd3\xa5\xd4\xa5\xd5\xa5\xd6\xa5\xd7\xa5\xd8\xa5\xd9\xa5\xda\xa5\xdb\xa5\xdc\xa5\xdd\xa5\xde\xa5\xdf\x5e\x67\xa5\xe0\xa5\xe1\xa5\xe2\xa5\xe3\xa5\xe4\xa5\xe5\xa5\xe6\xa5\xe7\xa5\xe8\x4a\xa2\xa5\xe9\xa5\xea\xa5\xeb\x52\x4c\x69\x87\xa5\xec\xa5\xed\xa5\xee\xa5\xef\xa5\xf0\x55\xb7\x59\xd2\xa5\xf1\x5b\xa9\xa5\xf2\x68\x93\xa5\xf3\x4f\xd7\xa5\xf4\x4f\x63\x68\x94\x4b\xcb\x48\xaa\xa5\xf5\xa5\xf6\xa5\xf7\xa5\xf8\x55\xae\xa5\xf9\xa5\xfa\x67\x56\xa5\xfb\x67\x57\xa5\xfc\xa5\xfd\xa6\x41\xa6\x42\x57\xf8\x4c\x4f\x50\x94", /* 7800 */ "\x67\x58\x51\xea\x55\x50\xa6\x43\xa6\x44\xa6\x45\xa6\x46\xa6\x47\xa6\x48\x67\x59\xa6\x49\xa6\x4a\x53\xf5\x50\x53\xa6\x4b\xa6\x4c\xa6\x4d\x67\x5c\x53\x99\xa6\x4e\x59\x70\xa6\x4f\x5c\x49\x67\x5a\x67\x5b\xa6\x50\x59\x83\xa6\x51\x67\x5f\x67\x60\xa6\x52\x67\x64\xa6\x53\xa6\x54\xa6\x55\x67\x68\xa6\x56\x67\x66\x67\x6e\x5b\x89\xa6\x57\x67\x69\xa6\x58\xa6\x59\x67\x67\x67\x5e\xa6\x5a\xa6\x5b\x53\x8a\xa6\x5c\xa6\x5d\xa6\x5e\x53\xc5\xa6\x5f\xa6\x60\x55\x8a\x5a\xd1\x67\x61\x67\x62\x67\x63\x67\x65\xa6\x61\x50\xf8\xa6\x62\x4a\xa0\xa6\x63\xa6\x64\xa6\x65\xa6\x66\x4d\x89\xa6\x67\x67\x70\xa6\x68\xa6\x69\xa6\x6a\xa6\x6b\x67\x71\xa6\x6c\x67\x6a\xa6\x6d\x67\x6f\xa6\x6e\x57\xf7\xa6\x6f\xa6\x70\x56\x56\x67\x6c\x67\x6d\xa6\x71\xa6\x72\xa6\x73\xa6\x74\xa6\x75\x58\x96\xa6\x76\xa6\x77\xa6\x78\xa6\x79\xa6\x7a\xa6\x7b\xa6\x7c\xa6\x7d\xa6\x7e\xa6\x7f\xa6\x81\xa6\x82\x67\x72\x51\x93\x5a\x52\x67\x6b\x54\xb6\xa6\x83\xa6\x84\xa6\x85\xa6\x86\xa6\x87\xa6\x88\xa6\x89\xa6\x8a\x4e\xee\xa6\x8b\xa6\x8c\xa6\x8d\xa6\x8e\x53\x91\xa6\x8f\xa6\x90\xa6\x91", /* 7880 */ "\xa6\x92\xa6\x93\xa6\x94\xa6\x95\xa6\x96\xa6\x97\xa6\x98\x67\x76\xa6\x99\x4b\x90\xa6\x9a\xa6\x9b\x51\xb4\x48\xac\x56\x8a\xa6\x9c\xa6\x9d\x49\x4e\xa6\x9e\x67\x74\xa6\x9f\xa6\xa0\xa6\xa1\x57\x8c\x4b\x83\xa6\xa2\x67\x75\x67\x73\x67\x77\xa6\xa3\xa6\xa4\x4b\x9b\xa6\xa5\x67\x78\xa6\xa6\x67\x79\xa6\xa7\x67\x7c\xa6\xa8\x49\x6c\xa6\xa9\xa6\xaa\xa6\xab\xa6\xac\xa6\xad\xa6\xae\xa6\xaf\xa6\xb0\x53\x97\x4e\xed\x67\x7a\x56\xbb\x49\xe9\xa6\xb1\xa6\xb2\xa6\xb3\xa6\xb4\x67\x7b\xa6\xb5\xa6\xb6\xa6\xb7\xa6\xb8\x52\xea\xa6\xb9\xa6\xba\x4a\xc4\xa6\xbb\xa6\xbc\xa6\xbd\x48\xf4\xa6\xbe\xa6\xbf\xa6\xc0\x67\x7f\x50\xd9\x4a\xe7\xa6\xc1\xa6\xc2\xa6\xc3\xa6\xc4\x53\x6d\xa6\xc5\xa6\xc6\xa6\xc7\x67\x7d\x50\x64\xa6\xc8\xa6\xc9\xa6\xca\x67\x7e\xa6\xcb\xa6\xcc\xa6\xcd\xa6\xce\xa6\xcf\xa6\xd0\xa6\xd1\xa6\xd2\xa6\xd3\xa6\xd4\xa6\xd5\xa6\xd6\xa6\xd7\xa6\xd8\x52\xa4\xa6\xd9\xa6\xda\xa6\xdb\x67\x81\xa6\xdc\xa6\xdd\xa6\xde\xa6\xdf\xa6\xe0\x67\x82\xa6\xe1\x67\x84\xa6\xe2\xa6\xe3\x51\x77\xa6\xe4\xa6\xe5\x4e\x67\xa6\xe6\xa6\xe7\xa6\xe8\xa6\xe9\xa6\xea", /* 7900 */ "\xa6\xeb\x4f\x58\xa6\xec\xa6\xed\xa6\xee\x67\x83\xa6\xef\xa6\xf0\xa6\xf1\xa6\xf2\xa6\xf3\xa6\xf4\xa6\xf5\xa6\xf6\xa6\xf7\xa6\xf8\xa6\xf9\xa6\xfa\xa6\xfb\x67\x85\xa6\xfc\xa6\xfd\xa7\x41\xa7\x42\xa7\x43\xa7\x44\xa7\x45\xa7\x46\xa7\x47\xa7\x48\x67\x87\xa7\x49\xa7\x4a\xa7\x4b\xa7\x4c\xa7\x4d\x67\x86\xa7\x4e\xa7\x4f\xa7\x50\xa7\x51\xa7\x52\xa7\x53\xa7\x54\xa7\x55\xa7\x56\xa7\x57\xa7\x58\xa7\x59\xa7\x5a\xa7\x5b\xa7\x5c\x67\x88\xa7\x5d\xa7\x5e\xa7\x5f\xa7\x60\xa7\x61\x55\xbd\x66\xe9\x50\xf0\xa7\x62\x55\x88\xa7\x63\x66\xea\x53\xed\xa7\x64\xa7\x65\xa7\x66\xa7\x67\x66\xeb\xa7\x68\x53\xec\x66\xec\xa7\x69\xa7\x6a\xa7\x6b\xa7\x6c\xa7\x6d\xa7\x6e\xa7\x6f\xa7\x70\xa7\x71\x66\xef\xa7\x72\xa7\x73\x5c\x87\x66\xf2\xa7\x74\xa7\x75\x66\xf0\x66\xed\x66\xee\x5c\x43\x55\x92\x56\x8f\x66\xf3\xa7\x76\x66\xf1\xa7\x77\xa7\x78\x58\x8a\xa7\x79\x66\xf5\x53\xb0\xa7\x7a\xa7\x7b\xa7\x7c\xa7\x7d\x4e\xbf\xa7\x7e\x66\xf4\xa7\x7f\xa7\x81\xa7\x82\xa7\x83\xa7\x84\xa7\x85\xa7\x86\x4b\x5b\x4e\x97\xa7\x87\x66\xf6\xa7\x88\xa7\x89\xa7\x8a\xa7\x8b\xa7\x8c", /* 7980 */ "\x5d\x98\x4f\x9c\xa7\x8d\xa7\x8e\x51\xba\x66\xf7\xa7\x8f\xa7\x90\xa7\x91\xa7\x92\x66\xf8\xa7\x93\xa7\x94\xa7\x95\xa7\x96\x4c\xa2\xa7\x97\xa7\x98\xa7\x99\xa7\x9a\xa7\x9b\xa7\x9c\xa7\x9d\xa7\x9e\xa7\x9f\xa7\xa0\x66\xf9\xa7\xa1\xa7\xa2\xa7\xa3\xa7\xa4\xa7\xa5\xa7\xa6\xa7\xa7\xa7\xa8\xa7\xa9\xa7\xaa\xa7\xab\xa7\xac\x66\xfa\xa7\xad\xa7\xae\xa7\xaf\xa7\xb0\xa7\xb1\xa7\xb2\xa7\xb3\xa7\xb4\xa7\xb5\xa7\xb6\xa7\xb7\x66\xfb\xa7\xb8\xa7\xb9\xa7\xba\xa7\xbb\xa7\xbc\x5a\x8e\x5c\xad\x50\xea\xa7\xbd\x54\x7d\x4d\xcb\xa7\xbe\x58\xe2\x56\x5d\xa7\xbf\x57\x5a\xa7\xc0\xa7\xc1\x4c\xd0\xa7\xc2\xa7\xc3\x49\x9d\xa7\xc4\x54\x90\xa7\xc5\x5b\xd5\xa7\xc6\xa7\xc7\xa7\xc8\x50\x66\x52\x8c\xa7\xc9\xa7\xca\x68\x96\xa7\xcb\xa7\xcc\x52\x78\xa7\xcd\xa7\xce\xa7\xcf\xa7\xd0\xa7\xd1\xa7\xd2\x5c\x83\xa7\xd3\xa7\xd4\xa7\xd5\x68\x98\x4a\x73\xa7\xd6\x54\x78\x59\x8e\xa7\xd7\x5b\xc7\xa7\xd8\x68\x99\xa7\xd9\x68\x97\xa7\xda\x4e\x9e\x4a\x66\xa7\xdb\xa7\xdc\xa7\xdd\xa7\xde\xa7\xdf\xa7\xe0\xa7\xe1\x4f\x75\xa7\xe2\xa7\xe3\x59\xc5\xa7\xe4\x4e\x81\xa7\xe5\xa7\xe6", /* 7a00 */ "\x58\x41\xa7\xe7\x68\x9d\x68\x9c\xa7\xe8\xa7\xe9\x68\x9a\xa7\xea\xa7\xeb\xa7\xec\xa7\xed\x4a\x6c\xa7\xee\x55\x74\x56\x50\xa7\xef\xa7\xf0\xa7\xf1\xa7\xf2\xa7\xf3\x68\x9f\xa7\xf4\xa7\xf5\x48\xdd\xa7\xf6\xa7\xf7\x5b\xc8\xa7\xf8\xa7\xf9\xa7\xfa\x68\x9e\xa7\xfb\x4a\x8e\xa7\xfc\xa7\xfd\x6b\xd4\xa8\x41\xa8\x42\xa8\x43\xa8\x44\xa8\x45\xa8\x46\xa8\x47\xa8\x48\xa8\x49\xa8\x4a\xa8\x4b\xa8\x4c\xa8\x4d\xa8\x4e\xa8\x4f\x57\xc7\xa8\x50\xa8\x51\xa8\x52\x68\xa1\xa8\x53\x68\xa0\xa8\x54\x4b\x5e\x4e\xd9\x4e\x9d\xa8\x55\x4c\xe4\xa8\x56\xa8\x57\xa8\x58\xa8\x59\xa8\x5a\xa8\x5b\x52\xc1\xa8\x5c\xa8\x5d\xa8\x5e\xa8\x5f\xa8\x60\xa8\x61\xa8\x62\xa8\x63\xa8\x64\xa8\x65\x68\xa2\xa8\x66\xa8\x67\xa8\x68\xa8\x69\xa8\x6a\x56\x8c\xa8\x6b\xa8\x6c\xa8\x6d\xa8\x6e\xa8\x6f\xa8\x70\xa8\x71\xa8\x72\xa8\x73\xa8\x74\xa8\x75\xa8\x76\xa8\x77\xa8\x78\xa8\x79\xa8\x7a\xa8\x7b\xa8\x7c\xa8\x7d\xa8\x7e\xa8\x7f\xa8\x81\xa8\x82\xa8\x83\x68\xa5\xa8\x84\xa8\x85\xa8\x86\x59\x48\xa8\x87\x4f\xbe\x54\x8f\x69\x56\x69\x57\x50\x75\xa8\x88\xa8\x89\xa8\x8a\xa8\x8b\x4a\xa8", /* 7a80 */ "\x69\x58\x57\x5b\xa8\x8c\x54\x74\x5b\x4d\xa8\x8d\x69\x59\xa8\x8e\x69\x5a\xa8\x8f\xa8\x90\xa8\x91\xa8\x92\x54\x6f\xa8\x93\xa8\x94\xa8\x95\x59\xa3\x5b\xce\xa8\x96\xa8\x97\x69\x5b\x4f\x71\x4a\xaf\x4f\xbc\xa8\x98\xa8\x99\xa8\x9a\x4a\xdb\x57\xd0\xa8\x9b\x50\x7f\x69\x5d\xa8\x9c\xa8\x9d\xa8\x9e\xa8\x9f\x50\x9b\x69\x5c\xa8\xa0\x69\x5f\xa8\xa1\xa8\xa2\xa8\xa3\x69\x5e\x69\x60\xa8\xa4\xa8\xa5\xa8\xa6\xa8\xa7\xa8\xa8\x69\x61\xa8\xa9\xa8\xaa\xa8\xab\xa8\xac\xa8\xad\xa8\xae\xa8\xaf\xa8\xb0\xa8\xb1\xa8\xb2\xa8\xb3\x51\x9f\xa8\xb4\xa8\xb5\xa8\xb6\xa8\xb7\xa8\xb8\xa8\xb9\xa8\xba\xa8\xbb\xa8\xbc\xa8\xbd\xa8\xbe\x51\x42\xa8\xbf\xa8\xc0\xa8\xc1\xa8\xc2\xa8\xc3\xa8\xc4\xa8\xc5\xa8\xc6\xa8\xc7\xa8\xc8\x55\xf9\xa8\xc9\xa8\xca\x5b\x5e\xa8\xcb\xa8\xcc\xa8\xcd\xa8\xce\x4f\xb9\x4f\xb8\x5b\x62\xa8\xcf\xa8\xd0\x50\x42\xa8\xd1\x57\x4f\x69\x55\xa8\xd2\xa8\xd3\xa8\xd4\xa8\xd5\xa8\xd6\xa8\xd7\x4f\x7f\xa8\xd8\x4b\xca\xa8\xd9\xa8\xda\xa8\xdb\xa8\xdc\xa8\xdd\xa8\xde\xa8\xdf\xa8\xe0\xa8\xe1\x5b\xf0\x6a\x63\xa8\xe2\xa8\xe3\x6a\x64\xa8\xe4\x4c\xcc", /* 7b00 */ "\xa8\xe5\xa8\xe6\xa8\xe7\x6a\x66\x6a\x67\xa8\xe8\x48\xc9\xa8\xe9\x6a\x65\xa8\xea\x6a\x69\x56\x92\xa8\xeb\xa8\xec\xa8\xed\x6a\x6b\xa8\xee\x58\xa5\xa8\xef\xa8\xf0\x49\x6a\x6a\x68\xa8\xf1\xa8\xf2\xa8\xf3\x6a\x6f\xa8\xf4\x4b\x71\xa8\xf5\xa8\xf6\x6a\x77\xa8\xf7\x6a\x72\xa8\xf8\xa8\xf9\xa8\xfa\x6a\x74\x6a\x73\x4c\x9c\xa8\xfb\x49\x5f\xa8\xfc\x6a\x6e\x6a\x6a\x4b\x7a\xa8\xfd\x6a\x70\xa9\x41\xa9\x42\x6a\x71\xa9\x43\x6a\x75\xa9\x44\xa9\x45\xa9\x46\xa9\x47\x6a\x6d\xa9\x48\x4e\xe2\xa9\x49\x51\x9e\xa9\x4a\x6a\x76\xa9\x4b\xa9\x4c\xa9\x4d\xa9\x4e\xa9\x4f\xa9\x50\x6a\x7a\xa9\x51\x6a\x6c\xa9\x52\x4b\x68\xa9\x53\x4f\x8f\x6a\x7c\xa9\x54\xa9\x55\x4c\x44\x50\x91\x5b\xfd\x57\x52\xa9\x56\x4a\xef\xa9\x57\x49\xde\xa9\x58\x6a\x78\xa9\x59\x6a\x79\x55\x58\xa9\x5a\x6a\x7d\xa9\x5b\xa9\x5c\x6a\x7e\xa9\x5d\x6a\x82\xa9\x5e\xa9\x5f\xa9\x60\xa9\x61\xa9\x62\xa9\x63\xa9\x64\xa9\x65\xa9\x66\xa9\x67\xa9\x68\x6a\x7f\xa9\x69\xa9\x6a\x6a\x84\x6a\x83\xa9\x6b\xa9\x6c\x6a\x7b\xa9\x6d\x50\x8b\xa9\x6e\x4a\x90\xa9\x6f\x6a\x81\xa9\x70\xa9\x71\x54\x49\xa9\x72", /* 7b80 */ "\x4e\xf1\xa9\x73\xa9\x74\xa9\x75\xa9\x76\x6a\x8c\xa9\x77\xa9\x78\xa9\x79\xa9\x7a\xa9\x7b\xa9\x7c\xa9\x7d\x4d\x5f\xa9\x7e\xa9\x7f\x6a\x85\xa9\x81\xa9\x82\xa9\x83\x49\xac\x4e\x9f\xa9\x84\x56\x84\xa9\x85\xa9\x86\xa9\x87\xa9\x88\x6a\x8e\x6a\x8a\xa9\x89\xa9\x8a\xa9\x8b\x4d\x7c\x6a\x8f\xa9\x8c\xa9\x8d\xa9\x8e\x6a\x86\x6a\x87\x6a\x8b\x51\xe0\x6a\x8d\x6a\x90\x6a\x89\x4e\xfc\xa9\x8f\xa9\x90\xa9\x91\x58\x85\xa9\x92\xa9\x93\x6a\x91\xa9\x94\xa9\x95\xa9\x96\x6a\x88\xa9\x97\xa9\x98\xa9\x99\xa9\x9a\xa9\x9b\xa9\x9c\xa9\x9d\xa9\x9e\x6a\x93\xa9\x9f\xa9\xa0\xa9\xa1\xa9\xa2\x5c\x4d\x53\xa9\xa9\xa3\xa9\xa4\xa9\xa5\xa9\xa6\x6a\x94\xa9\xa7\xa9\xa8\xa9\xa9\xa9\xaa\x6a\x92\xa9\xab\x51\xa7\xa9\xac\xa9\xad\xa9\xae\xa9\xaf\xa9\xb0\x4c\xdc\x6a\x96\xa9\xb1\xa9\xb2\x6a\x95\xa9\xb3\xa9\xb4\xa9\xb5\x4a\xda\xa9\xb6\xa9\xb7\xa9\xb8\x6a\x97\x6a\x98\xa9\xb9\xa9\xba\xa9\xbb\x6a\x99\xa9\xbc\xa9\xbd\xa9\xbe\x50\xb9\xa9\xbf\xa9\xc0\x50\xe8\xa9\xc1\xa9\xc2\xa9\xc3\xa9\xc4\xa9\xc5\x53\x92\xa9\xc6\xa9\xc7\xa9\xc8\xa9\xc9\x6a\x9c\xa9\xca\x6a\x9b\xa9\xcb", /* 7c00 */ "\xa9\xcc\xa9\xcd\xa9\xce\xa9\xcf\xa9\xd0\xa9\xd1\xa9\xd2\x4a\xd7\xa9\xd3\xa9\xd4\xa9\xd5\x6a\x9f\x6a\x9a\xa9\xd6\xa9\xd7\x6a\x9d\xa9\xd8\xa9\xd9\xa9\xda\xa9\xdb\xa9\xdc\xa9\xdd\x6a\x9e\xa9\xde\xa9\xdf\xa9\xe0\xa9\xe1\xa9\xe2\xa9\xe3\xa9\xe4\xa9\xe5\x6a\xa0\xa9\xe6\xa9\xe7\xa9\xe8\xa9\xe9\xa9\xea\xa9\xeb\x6a\xa2\x4e\x69\xa9\xec\xa9\xed\x6a\xa1\xa9\xee\xa9\xef\xa9\xf0\xa9\xf1\xa9\xf2\xa9\xf3\xa9\xf4\xa9\xf5\xa9\xf6\xa9\xf7\xa9\xf8\xa9\xf9\xa9\xfa\x6a\xa3\xa9\xfb\xa9\xfc\xa9\xfd\xaa\x41\xaa\x42\xaa\x43\x49\xbd\x6a\xa5\x6a\xa4\xaa\x44\xaa\x45\xaa\x46\xaa\x47\xaa\x48\xaa\x49\xaa\x4a\xaa\x4b\xaa\x4c\xaa\x4d\xaa\x4e\x4e\xad\xaa\x4f\xaa\x50\xaa\x51\xaa\x52\xaa\x53\xaa\x54\xaa\x55\xaa\x56\xaa\x57\xaa\x58\xaa\x59\xaa\x5a\xaa\x5b\xaa\x5c\xaa\x5d\xaa\x5e\xaa\x5f\xaa\x60\xaa\x61\xaa\x62\xaa\x63\xaa\x64\xaa\x65\xaa\x66\xaa\x67\xaa\x68\xaa\x69\xaa\x6a\xaa\x6b\xaa\x6c\xaa\x6d\xaa\x6e\xaa\x6f\xaa\x70\xaa\x71\xaa\x72\xaa\x73\x52\x77\x5d\x82\xaa\x74\xaa\x75\xaa\x76\xaa\x77\xaa\x78\xaa\x79\x50\xdf\x6a\xcb\x5c\x71\xaa\x7a\xaa\x7b", /* 7c80 */ "\xaa\x7c\xaa\x7d\xaa\x7e\xaa\x7f\xaa\x81\xaa\x82\xaa\x83\xaa\x84\xaa\x85\x4c\x7b\xaa\x86\xaa\x87\xaa\x88\xaa\x89\xaa\x8a\xaa\x8b\xaa\x8c\x6a\xcd\x51\x43\xaa\x8d\xaa\x8e\x53\xc8\xaa\x8f\x4a\xd5\x5b\x53\xaa\x90\xaa\x91\xaa\x92\x6a\xcf\x6a\xce\x6a\xd0\x56\x7a\xaa\x93\xaa\x94\x6a\xd1\xaa\x95\x5a\xc0\x5b\xdf\xaa\x96\xaa\x97\xaa\x98\xaa\x99\x4c\x81\xaa\x9a\xaa\x9b\xaa\x9c\x51\x58\xaa\x9d\xaa\x9e\x51\x5b\x6a\xd2\x4f\xab\xaa\x9f\xaa\xa0\xaa\xa1\xaa\xa2\xaa\xa3\x4a\xe1\xaa\xa4\xaa\xa5\x6a\xd3\x6a\xd4\x4f\xaa\xaa\xa6\xaa\xa7\x6a\xd5\xaa\xa8\xaa\xa9\xaa\xaa\x6a\xda\xaa\xab\x6a\xd6\x6a\xd9\xaa\xac\x4d\xfc\xaa\xad\x6a\xd7\x6a\xd8\xaa\xae\xaa\xaf\xaa\xb0\xaa\xb1\xaa\xb2\xaa\xb3\xaa\xb4\x4c\xe1\x56\xc6\x6a\xdb\xaa\xb5\x49\xd9\xaa\xb6\xaa\xb7\x52\x73\xaa\xb8\xaa\xb9\x5a\xe2\x50\x57\xaa\xba\xaa\xbb\xaa\xbc\xaa\xbd\xaa\xbe\xaa\xbf\xaa\xc0\x6a\xdc\xaa\xc1\xaa\xc2\xaa\xc3\xaa\xc4\xaa\xc5\xaa\xc6\x53\x54\xaa\xc7\xaa\xc8\xaa\xc9\xaa\xca\xaa\xcb\xaa\xcc\xaa\xcd\xaa\xce\x6a\xe8\xaa\xcf\xaa\xd0\x58\x55\xaa\xd1\xaa\xd2\xaa\xd3\xaa\xd4", /* 7d00 */ "\xaa\xd5\xaa\xd6\xaa\xd7\xaa\xd8\xaa\xd9\xaa\xda\xaa\xdb\xaa\xdc\xaa\xdd\xaa\xde\x57\xc8\xaa\xdf\xaa\xe0\xaa\xe1\xaa\xe2\xaa\xe3\xaa\xe4\xaa\xe5\xaa\xe6\xaa\xe7\xaa\xe8\xaa\xe9\xaa\xea\xaa\xeb\xaa\xec\xaa\xed\xaa\xee\xaa\xef\xaa\xf0\xaa\xf1\xaa\xf2\xaa\xf3\x56\x78\xaa\xf4\x56\x98\xaa\xf5\xaa\xf6\xaa\xf7\xaa\xf8\x4f\x95\xaa\xf9\xaa\xfa\xaa\xfb\x5c\x6f\xaa\xfc\xaa\xfd\xab\x41\x50\xda\xab\x42\xab\x43\xab\x44\xab\x45\xab\x46\xab\x47\xab\x48\xab\x49\xab\x4a\xab\x4b\xab\x4c\xab\x4d\xab\x4e\xab\x4f\xab\x50\xab\x51\xab\x52\xab\x53\xab\x54\xab\x55\xab\x56\xab\x57\xab\x58\xab\x59\xab\x5a\xab\x5b\xab\x5c\xab\x5d\xab\x5e\xab\x5f\xab\x60\xab\x61\xab\x62\xab\x63\xab\x64\xab\x65\xab\x66\xab\x67\xab\x68\xab\x69\xab\x6a\xab\x6b\xab\x6c\xab\x6d\xab\x6e\xab\x6f\xab\x70\xab\x71\xab\x72\xab\x73\xab\x74\xab\x75\xab\x76\xab\x77\xab\x78\xab\x79\xab\x7a\xab\x7b\xab\x7c\xab\x7d\xab\x7e\xab\x7f\x58\xf4\xab\x81\xab\x82\xab\x83\xab\x84\xab\x85\xab\x86\xab\x87\xab\x88\x6a\xe9\xab\x89\xab\x8a\xab\x8b\xab\x8c\xab\x8d\xab\x8e\xab\x8f\xab\x90", /* 7d80 */ "\xab\x91\xab\x92\xab\x93\xab\x94\xab\x95\xab\x96\xab\x97\xab\x98\xab\x99\xab\x9a\xab\x9b\xab\x9c\xab\x9d\xab\x9e\xab\x9f\xab\xa0\xab\xa1\xab\xa2\xab\xa3\xab\xa4\xab\xa5\xab\xa6\xab\xa7\xab\xa8\xab\xa9\xab\xaa\xab\xab\xab\xac\xab\xad\xab\xae\xab\xaf\xab\xb0\xab\xb1\xab\xb2\xab\xb3\xab\xb4\xab\xb5\xab\xb6\x6a\xea\xab\xb7\xab\xb8\xab\xb9\xab\xba\xab\xbb\xab\xbc\xab\xbd\x6a\xeb\xab\xbe\xab\xbf\xab\xc0\xab\xc1\xab\xc2\xab\xc3\xab\xc4\xab\xc5\xab\xc6\xab\xc7\xab\xc8\xab\xc9\xab\xca\xab\xcb\xab\xcc\xab\xcd\xab\xce\xab\xcf\xab\xd0\xab\xd1\xab\xd2\xab\xd3\xab\xd4\xab\xd5\xab\xd6\xab\xd7\xab\xd8\xab\xd9\xab\xda\xab\xdb\xab\xdc\xab\xdd\xab\xde\xab\xdf\xab\xe0\xab\xe1\xab\xe2\xab\xe3\xab\xe4\xab\xe5\xab\xe6\xab\xe7\xab\xe8\xab\xe9\xab\xea\xab\xeb\xab\xec\xab\xed\xab\xee\xab\xef\xab\xf0\xab\xf1\xab\xf2\xab\xf3\xab\xf4\xab\xf5\xab\xf6\xab\xf7\xab\xf8\xab\xf9\xab\xfa\xab\xfb\xab\xfc\xab\xfd\xac\x41\xac\x42\xac\x43\xac\x44\xac\x45\xac\x46\xac\x47\xac\x48\xac\x49\xac\x4a\xac\x4b\xac\x4c\xac\x4d\xac\x4e\xac\x4f\xac\x50\xac\x51", /* 7e00 */ "\xac\x52\xac\x53\xac\x54\xac\x55\xac\x56\xac\x57\xac\x58\xac\x59\xac\x5a\xac\x5b\xac\x5c\xac\x5d\xac\x5e\xac\x5f\xac\x60\xac\x61\xac\x62\xac\x63\xac\x64\xac\x65\xac\x66\xac\x67\xac\x68\xac\x69\xac\x6a\xac\x6b\xac\x6c\xac\x6d\xac\x6e\xac\x6f\xac\x70\xac\x71\xac\x72\xac\x73\xac\x74\xac\x75\xac\x76\xac\x77\xac\x78\xac\x79\xac\x7a\xac\x7b\xac\x7c\xac\x7d\xac\x7e\xac\x7f\xac\x81\xac\x82\xac\x83\xac\x84\xac\x85\xac\x86\xac\x87\xac\x88\xac\x89\xac\x8a\xac\x8b\xac\x8c\xac\x8d\x6c\x84\xac\x8e\xac\x8f\xac\x90\xac\x91\xac\x92\x4c\x51\xac\x93\xac\x94\xac\x95\xac\x96\xac\x97\x6a\xec\xac\x98\xac\x99\xac\x9a\xac\x9b\xac\x9c\xac\x9d\xac\x9e\xac\x9f\xac\xa0\xac\xa1\xac\xa2\xac\xa3\xac\xa4\xac\xa5\xac\xa6\xac\xa7\xac\xa8\xac\xa9\xac\xaa\xac\xab\xac\xac\xac\xad\xac\xae\xac\xaf\xac\xb0\xac\xb1\xac\xb2\xac\xb3\xac\xb4\xac\xb5\xac\xb6\xac\xb7\xac\xb8\xac\xb9\xac\xba\xac\xbb\xac\xbc\xac\xbd\xac\xbe\xac\xbf\xac\xc0\xac\xc1\xac\xc2\xac\xc3\xac\xc4\xac\xc5\xac\xc6\xac\xc7\xac\xc8\xac\xc9\xac\xca\xac\xcb\xac\xcc\xac\xcd\xac\xce\xac\xcf", /* 7e80 */ "\xac\xd0\xac\xd1\x5c\x8c\xac\xd2\xac\xd3\xac\xd4\xac\xd5\xac\xd6\xac\xd7\xac\xd8\xac\xd9\xac\xda\xac\xdb\xac\xdc\xac\xdd\xac\xde\xac\xdf\xac\xe0\xac\xe1\xac\xe2\xac\xe3\xac\xe4\xac\xe5\xac\xe6\xac\xe7\xac\xe8\xac\xe9\x6a\xed\xac\xea\xac\xeb\xac\xec\x63\xf8\x4f\xbf\x63\xf9\x4d\xeb\x63\xfa\x58\x6b\x63\xfb\x5a\xbb\x4e\xb5\x63\xfc\x63\xfd\x4e\xcc\x54\xd1\x57\xb2\x64\x41\xac\xed\x4a\xbe\x64\x42\x55\x54\x4c\xd8\x52\xc8\xac\xee\x5c\x7d\x51\xd9\x4c\x77\x5b\xbc\x57\xc5\x4c\x64\xac\xef\xac\xf0\x53\x46\x64\x43\x58\x7f\x64\x44\x64\x45\x64\x46\x51\x57\x5c\x8a\x55\x91\x58\x58\x5b\xae\x5b\xd4\x64\x47\x48\xec\x64\x48\x64\x49\x55\x7c\x59\xee\x4f\xac\x64\x4a\x48\xf2\x54\xdd\x4f\x82\x64\x4b\x54\xc5\xac\xf1\x64\x4c\x4e\x87\x4c\xf7\x59\x44\x64\x4d\x51\xe6\x4f\xf7\x4f\x6a\x57\x53\x64\x4e\x64\x4f\x4f\xed\x58\xe4\xac\xf2\x56\x88\x56\xcf\x4e\xcb\x64\x50\x4e\xa7\x58\xf6\x64\x51\xac\xf3\x58\xf7\x64\x52\x64\x53\x4a\xc1\x64\x54\x64\x55\x55\x9f\x57\xab\x52\x81\x64\x57\x49\x61\x4a\x92\xac\xf4\x64\x58\x64\x59\x5c\x7b\x5b\x60\x64\x5a\x51\xcb", /* 7f00 */ "\x5c\x5a\x64\x5b\x64\x5c\x64\x5d\x4e\xe9\x52\x86\x50\xc1\x64\x5e\x64\x5f\x4e\xa8\xac\xf5\x64\x60\x64\x61\x64\x56\x4b\xcf\x64\x62\xac\xf6\x64\x63\x64\x64\x4e\x5a\x4b\x7e\x51\xc5\x49\x81\x64\x65\x5a\xb4\x64\x66\x4c\xbe\x64\x68\x64\x67\x4c\x8d\xac\xf7\x64\x69\x49\xf7\x64\x6a\x64\x6b\x64\x6c\x64\x6d\x64\x6e\x64\x6f\x64\x70\x5a\x47\x56\x96\x64\x71\x64\x72\x64\x73\x64\x74\x55\x69\x64\x75\x64\x76\x64\x77\x64\x78\x64\x79\x4f\x69\x64\x7a\x6a\x5e\xac\xf8\x4c\xd6\xac\xf9\x54\xb0\xac\xfa\xac\xfb\xac\xfc\xac\xfd\xad\x41\xad\x42\xad\x43\x6a\x5f\xad\x44\x6a\x60\x6a\x61\xad\x45\xad\x46\xad\x47\xad\x48\xad\x49\xad\x4a\xad\x4b\xad\x4c\xad\x4d\xad\x4e\x4d\x7e\x57\x99\xad\x4f\xad\x50\x5c\xe7\x4d\xb0\xad\x51\x51\xdd\x67\xb6\xad\x52\x4c\x43\xad\x53\xad\x54\xad\x55\xad\x56\x67\xb8\xad\x57\x67\xb7\x48\xd4\xad\x58\xad\x59\xad\x5a\xad\x5b\xad\x5c\x67\xba\x5b\x76\x5c\x90\xad\x5d\xad\x5e\xad\x5f\x5b\xc2\xad\x60\xad\x61\x67\xbc\x55\xef\xad\x62\x67\xbb\xad\x63\xad\x64\xad\x65\xad\x66\x67\xbd\xad\x67\xad\x68\xad\x69\xad\x6a\x67\xbf\xad\x6b", /* 7f80 */ "\xad\x6c\x67\xbe\xad\x6d\xad\x6e\xad\x6f\xad\x70\xad\x71\xad\x72\xad\x73\xad\x74\x59\x93\xad\x75\x54\x5c\xad\x76\x52\x60\xad\x77\xad\x78\xad\x79\xad\x7a\xad\x7b\x4c\xe0\xad\x7c\xad\x7d\xad\x7e\xad\x7f\xad\x81\x51\x88\xad\x82\xad\x83\x6a\xc5\x58\xde\x6a\xc6\xad\x84\x58\x7b\xad\x85\xad\x86\x54\xb9\xad\x87\xad\x88\x6a\xc7\xad\x89\xad\x8a\xad\x8b\xad\x8c\xad\x8d\xad\x8e\xad\x8f\x6a\xc8\x6a\xc9\xad\x90\x6a\xca\xad\x91\xad\x92\xad\x93\xad\x94\xad\x95\x5d\x9b\x4c\xfd\xad\x96\xad\x97\x63\x92\x5a\x91\xad\x98\x6a\xdf\xad\x99\x57\xcb\xad\x9a\xad\x9b\xad\x9c\x4a\x82\xad\x9d\xad\x9e\xad\x9f\xad\xa0\x69\x54\xad\xa1\x59\xed\xad\xa2\x6a\xe0\xad\xa3\xad\xa4\xad\xa5\xad\xa6\xad\xa7\x58\x89\x6a\xe1\xad\xa8\xad\xa9\x54\x6c\xad\xaa\xad\xab\xad\xac\xad\xad\xad\xae\xad\xaf\x4b\x74\x4a\xe3\x6a\xe3\xad\xb0\xad\xb1\xad\xb2\x6a\xe2\x6a\xe4\xad\xb3\xad\xb4\x6a\xe5\xad\xb5\xad\xb6\xad\xb7\xad\xb8\x6a\xe6\xad\xb9\x4d\xb1\x48\xbe\xad\xba\x6a\xe7\xad\xbb\xad\xbc\xad\xbd\xad\xbe\xad\xbf\xad\xc0\xad\xc1\x4c\x4d\x59\xec\xad\xc2\xad\xc3\xad\xc4", /* 8000 */ "\x59\xaa\x50\xce\xad\xc5\x50\x5c\x66\x43\x5b\x7f\x65\xc7\xad\xc6\xad\xc7\xad\xc8\xad\xc9\x69\x94\x4b\xf7\x56\x43\xad\xca\xad\xcb\x52\xcc\xad\xcc\x69\x88\xad\xcd\x69\x89\x4c\xfa\x69\x8a\x4d\xc3\x5a\xc4\x48\xd1\xad\xce\xad\xcf\x69\x8b\xad\xd0\xad\xd1\xad\xd2\x69\x8c\xad\xd3\x69\x8d\xad\xd4\xad\xd5\x69\x8e\x69\x8f\x69\x90\x69\x92\x69\x91\x53\x75\xad\xd6\xad\xd7\xad\xd8\xad\xd9\xad\xda\xad\xdb\x69\x93\xad\xdc\x4b\xf9\xad\xdd\x69\x95\x59\xad\x5f\xc6\x56\x6a\xad\xde\xad\xdf\x4a\x7c\xad\xe0\x4b\x42\xad\xe1\x4d\x42\xad\xe2\xad\xe3\x52\xf3\x69\x96\xad\xe4\xad\xe5\x69\x97\xad\xe6\xad\xe7\xad\xe8\x51\x64\x51\x9c\x5b\xaf\x69\x98\xad\xe9\xad\xea\xad\xeb\xad\xec\x69\x99\xad\xed\x51\x4a\xad\xee\xad\xef\xad\xf0\x53\xb7\xad\xf1\x4f\xda\xad\xf2\xad\xf3\xad\xf4\xad\xf5\xad\xf6\xad\xf7\xad\xf8\xad\xf9\xad\xfa\xad\xfb\xad\xfc\xad\xfd\xae\x41\xae\x42\x69\x9a\x4a\xce\xae\x43\xae\x44\xae\x45\xae\x46\xae\x47\xae\x48\x69\x9b\xae\x49\xae\x4a\xae\x4b\xae\x4c\xae\x4d\xae\x4e\xae\x4f\xae\x50\xae\x51\xae\x52\xae\x53\xae\x54\xae\x55\x67\x52", /* 8080 */ "\x67\x51\xae\x56\xae\x57\x56\x81\x59\xdd\xae\x58\x56\x61\x5b\x78\xae\x59\x54\xe1\xae\x5a\x50\xde\x4e\xa0\xae\x5b\xae\x5c\xae\x5d\xae\x5e\xae\x5f\xae\x60\x66\x61\xae\x61\xae\x62\x58\xa3\xae\x63\x5b\xe1\xae\x64\x4b\xc6\x4c\xd7\x66\x60\x4c\xcd\xae\x65\x66\x5f\x4a\x46\x4d\x69\x5b\xaa\xae\x66\x4c\x95\x4c\x6a\xae\x67\xae\x68\xae\x69\x4e\xe6\x4c\x5e\x66\x66\xae\x6a\x66\x67\x48\xb8\x50\x6f\xae\x6b\x66\x65\x5a\x9e\xae\x6c\x66\x68\xae\x6d\xae\x6e\x66\x69\xae\x6f\xae\x70\x4c\x6e\xae\x71\x66\x62\x66\x64\x55\x97\x5b\xd6\x5b\x6d\x58\xb1\x66\x6f\x57\xb7\x66\x70\xae\x72\x4b\x48\xae\x73\xae\x74\xae\x75\xae\x76\xae\x77\x49\x53\x66\x72\x56\xa4\xae\x78\xae\x79\xae\x7a\xae\x7b\xae\x7c\xae\x7d\xae\x7e\x53\x76\x66\x73\xae\x7f\x66\x71\x53\x7f\x66\x6e\x55\xa3\x66\x75\x48\xfa\xae\x81\xae\x82\x4d\xf9\xae\x83\xae\x84\x5c\xb6\x69\x84\xae\x85\x66\x6a\x66\x6b\x66\x6c\x66\x6d\x66\x76\x63\xbf\x66\x79\xae\x86\x50\x89\x59\xc7\x66\x77\x66\x7c\x4c\xeb\x66\x78\xae\x87\x4f\x5a\xae\x88\x58\xd7\xae\x89\x48\xb6\xae\x8a\x66\x7d\x52\xdb\xae\x8b\xae\x8c", /* 8100 */ "\xae\x8d\xae\x8e\x5b\xab\xae\x8f\xae\x90\xae\x91\x4a\xdf\xae\x92\xae\x93\x51\xf5\x4e\xb8\xae\x94\xae\x95\x66\x7a\x66\x7b\x5a\xdf\x53\xe9\x52\xd3\x66\x7f\x53\x47\x5d\x96\xae\x96\x49\xb0\xae\x97\x66\x85\xae\x98\x4f\x65\xae\x99\xae\x9a\xae\x9b\x66\x83\xae\x9c\xae\x9d\xae\x9e\xae\x9f\xae\xa0\xae\xa1\xae\xa2\xae\xa3\xae\xa4\xae\xa5\xae\xa6\xae\xa7\xae\xa8\x66\x84\xae\xa9\xae\xaa\x4c\xab\xae\xab\x57\x71\x66\x86\xae\xac\xae\xad\xae\xae\x66\x82\xae\xaf\x51\x53\xae\xb0\xae\xb1\xae\xb2\xae\xb3\xae\xb4\x53\xa1\xae\xb5\xae\xb6\xae\xb7\xae\xb8\xae\xb9\xae\xba\xae\xbb\x56\xf2\xae\xbc\x66\x87\xae\xbd\x50\xaf\x59\xb7\x66\x88\xae\xbe\xae\xbf\xae\xc0\x4c\xae\x4c\xac\xae\xc1\x66\x89\x54\x5b\x57\x94\xae\xc2\xae\xc3\xae\xc4\x66\x8b\x66\x8c\xae\xc5\xae\xc6\xae\xc7\xae\xc8\xae\xc9\x66\x8e\xae\xca\xae\xcb\xae\xcc\xae\xcd\x58\xc7\xae\xce\x66\x93\xae\xcf\x66\x8f\xae\xd0\xae\xd1\xae\xd2\x66\x92\x54\xf8\xae\xd3\x59\x9d\x66\x8d\xae\xd4\xae\xd5\x66\x8a\xae\xd6\xae\xd7\xae\xd8\xae\xd9\x4c\xb8\x58\x79\x52\xe4\x66\x90\x66\x91\x56\xd9\x57\x68", /* 8180 */ "\x48\xf1\xae\xda\x66\x97\xae\xdb\xae\xdc\xae\xdd\xae\xde\xae\xdf\x66\x96\xae\xe0\x49\xb1\xae\xe1\xae\xe2\xae\xe3\xae\xe4\x4c\xdf\xae\xe5\x66\x98\xae\xe6\xae\xe7\xae\xe8\xae\xe9\xae\xea\xae\xeb\x49\x8d\xae\xec\xae\xed\x56\xc4\x52\xa3\x58\x45\xae\xee\xae\xef\xae\xf0\xae\xf1\xae\xf2\x66\x9a\xae\xf3\xae\xf4\x66\xa1\xae\xf5\x53\x93\xae\xf6\x66\x9b\xae\xf7\xae\xf8\xae\xf9\xae\xfa\xae\xfb\xae\xfc\xae\xfd\xaf\x41\x55\x65\xaf\x42\xaf\x43\xaf\x44\xaf\x45\xaf\x46\xaf\x47\x61\xde\x66\x9f\xaf\x48\xaf\x49\xaf\x4a\xaf\x4b\x57\x6e\x66\xa0\x49\x7b\x5a\x57\xaf\x4c\xaf\x4d\x59\xdb\xaf\x4e\xaf\x4f\xaf\x50\x66\x9e\xaf\x51\x66\x9c\xaf\x52\xaf\x53\xaf\x54\xaf\x55\xaf\x56\xaf\x57\xaf\x58\xaf\x59\xaf\x5a\xaf\x5b\xaf\x5c\xaf\x5d\xaf\x5e\xaf\x5f\xaf\x60\xaf\x61\xaf\x62\xaf\x63\xaf\x64\xaf\x65\xaf\x66\xaf\x67\x4a\x5c\xaf\x68\xaf\x69\xaf\x6a\x65\xaf\xaf\x6b\xaf\x6c\x5c\x74\xaf\x6d\x6a\xaa\x4a\x95\xaf\x6e\xaf\x6f\xaf\x70\xaf\x71\xaf\x72\x5b\xc0\x5b\xc1\xaf\x73\xaf\x74\xaf\x75\xaf\x76\xaf\x77\xaf\x78\x5b\x8a\x4f\xc9\xaf\x79\x6a\xa6\xaf\x7a", /* 8200 */ "\x59\xa7\x6a\xa7\x6a\xa8\xaf\x7b\x6a\xa9\x4f\xca\x5a\x7f\xaf\x7c\xaf\x7d\xaf\x7e\xaf\x7f\xaf\x81\x55\x81\x55\x82\xaf\x82\xaf\x83\x6a\x62\xaf\x84\x55\xe5\xaf\x85\x56\xf1\xaf\x86\xaf\x87\xaf\x88\xaf\x89\xaf\x8a\xaf\x8b\x61\xb5\x56\x54\xaf\x8c\x57\xe7\x5b\xda\xaf\x8d\x6a\xac\x6a\xad\x6a\xae\xaf\x8e\xaf\x8f\xaf\x90\xaf\x91\x6a\xb1\xaf\x92\x4d\xbc\x6a\xb2\x48\xe2\x6a\xaf\xaf\x93\x6a\xb0\x4f\x42\x49\xd4\xaf\x94\x6a\xb5\x6a\xb6\x4b\xe5\x49\xaf\x58\x6f\x6a\xb3\x4a\xab\xaf\x95\x6a\xb4\xaf\x96\xaf\x97\x6a\xb7\xaf\x98\xaf\x99\xaf\x9a\xaf\x9b\xaf\x9c\x6a\xb8\xaf\x9d\xaf\x9e\x57\x47\xaf\x9f\x6a\xb9\xaf\xa0\x6a\xba\xaf\xa1\xaf\xa2\xaf\xa3\x6a\xbb\xaf\xa4\xaf\xa5\xaf\xa6\xaf\xa7\xaf\xa8\xaf\xa9\xaf\xaa\xaf\xab\x56\x72\xaf\xac\x6a\xbc\xaf\xad\xaf\xae\xaf\xaf\xaf\xb0\x6a\xbd\xaf\xb1\xaf\xb2\xaf\xb3\xaf\xb4\xaf\xb5\xaf\xb6\xaf\xb7\xaf\xb8\x6a\xbe\xaf\xb9\xaf\xba\xaf\xbb\xaf\xbc\xaf\xbd\x6a\xdd\x51\x5c\x4e\xe7\xaf\xbe\x55\x4b\x59\x7e\x63\x96\xaf\xbf\xaf\xc0\xaf\xc1\xaf\xc2\x5e\xb2\x59\xd4\xaf\xc3\xaf\xc4\x5e\xb3\x48\xab\x5e\xb4", /* 8280 */ "\xaf\xc5\xaf\xc6\x4f\x7a\xaf\xc7\x5e\xb8\xaf\xc8\xaf\xc9\xaf\xca\x5c\xc1\xaf\xcb\x5e\xb6\x5a\x94\xaf\xcc\x55\x76\x5e\xb9\x5e\xb5\xaf\xcd\x5e\xba\x52\x42\xaf\xce\xaf\xcf\xaf\xd0\xaf\xd1\x5e\xbb\x5e\xc4\x5e\xbc\xaf\xd2\xaf\xd3\x57\xde\x5b\xa4\xaf\xd4\x5e\xce\xaf\xd5\x5e\xcc\xaf\xd6\xaf\xd7\x5e\xd1\x4f\x87\x51\xaa\xaf\xd8\x5e\xb7\x5e\xca\x5e\xcd\x5e\xbd\x4c\x72\x48\xc4\x5e\xc6\x58\xbd\x5e\xc0\x4e\x48\xaf\xd9\x4c\x5c\x5e\xcb\xaf\xda\xaf\xdb\x5e\xc5\x5e\xbe\x54\x7b\xaf\xdc\xaf\xdd\xaf\xde\x59\x5f\x5e\xbf\xaf\xdf\xaf\xe0\x5e\xc9\xaf\xe1\xaf\xe2\x5e\xcf\xaf\xe3\xaf\xe4\x57\xac\x5e\xc1\xaf\xe5\x5e\xc2\x5e\xc7\x5e\xc8\x49\xd3\x5e\xd0\x56\x75\xaf\xe6\x5a\xb6\x5e\xda\x5e\xde\x56\xa5\x5e\xe5\xaf\xe7\x52\x88\x5e\xdb\xaf\xe8\xaf\xe9\x50\x61\x5e\xd8\xaf\xea\x48\xf9\x4d\x56\x5e\xe4\x5e\xd2\xaf\xeb\x5e\xc3\x5e\xd5\x54\xf3\x50\x81\xaf\xec\xaf\xed\xaf\xee\xaf\xef\x55\x5b\xaf\xf0\xaf\xf1\xaf\xf2\x49\x5d\xaf\xf3\x5a\x42\xaf\xf4\xaf\xf5\x5e\xd9\xaf\xf6\xaf\xf7\x5e\xd4\xaf\xf8\x53\xba\xaf\xf9\x5e\xdd\xaf\xfa\xaf\xfb\xaf\xfc\xaf\xfd", /* 8300 */ "\xb0\x41\x5c\x62\x52\x4f\x4c\x56\x54\x71\x52\x49\x5e\xe1\x5e\xd7\x5e\xea\x5e\xd3\xb0\x42\xb0\x43\x5e\xdc\xb0\x44\x4f\xa4\x5e\xd6\xb0\x45\x5e\xdf\xb0\x46\xb0\x47\x5e\xe2\x5e\xe3\xb0\x48\x5e\xf7\xb0\x49\xb0\x4a\x5e\xe0\x5f\x42\x5e\xe6\xb0\x4b\xb0\x4c\xb0\x4d\xb0\x4e\xb0\x4f\xb0\x50\xb0\x51\xb0\x52\xb0\x53\xb0\x54\x4e\xea\x4a\xc3\xb0\x55\xb0\x56\x52\x43\x49\xe6\x5e\xf9\xb0\x57\x5e\xf1\xb0\x58\x5e\xee\xb0\x59\x5e\xfb\x5e\xed\x59\xef\x49\xe7\xb0\x5a\x54\xd6\x54\xe2\x5e\xfa\xb0\x5b\x5e\xec\xb0\x5c\xb0\x5d\xb0\x5e\x5e\xf6\xb0\x5f\xb0\x60\x5e\xf4\xb0\x61\xb0\x62\x4f\xa2\x5e\xf3\xb0\x63\x49\xdc\xb0\x64\xb0\x65\xb0\x66\xb0\x67\xb0\x68\x5e\xf2\x4e\xf5\x5e\xe7\x4e\x64\xb0\x69\x50\xf2\xb0\x6a\xb0\x6b\xb0\x6c\xb0\x6d\xb0\x6e\x4e\xd3\x5e\xe8\x5e\xe9\xb0\x6f\x5e\xf0\x5e\xf5\x5e\xf8\x4b\x54\xb0\x70\x54\xd8\x4e\x88\x5e\xfd\x5e\xfc\x5a\x4b\x5f\x41\x5f\x43\x5f\x45\x59\xf0\x5f\x44\x5f\x46\x5f\x47\x59\xa8\xb0\x71\xb0\x72\xb0\x73\xb0\x74\xb0\x75\xb0\x76\xb0\x77\x4d\xc8\x5f\x49\xb0\x78\xb0\x79\x5f\x56\x5f\x51\x5f\x54\xb0\x7a\xb0\x7b", /* 8380 */ "\xb0\x7c\xb0\x7d\xb0\x7e\xb0\x7f\xb0\x81\x5f\x50\x53\xcd\xb0\x82\xb0\x83\x50\xf1\xb0\x84\xb0\x85\xb0\x86\xb0\x87\x55\x4f\xb0\x88\xb0\x89\xb0\x8a\x5e\xeb\x5f\x4e\xb0\x8b\xb0\x8c\xb0\x8d\xb0\x8e\x5f\x57\xb0\x8f\xb0\x90\x5e\xef\x5f\x4f\xb0\x91\x5f\x58\xb0\x92\x5f\x4c\xb0\x93\xb0\x94\xb0\x95\xb0\x96\xb0\x97\xb0\x98\xb0\x99\x5f\x59\x5f\x53\x5f\x4d\x52\xa9\xb0\x9a\xb0\x9b\xb0\x9c\xb0\x9d\x5f\x48\x50\xb2\x51\x4b\x5f\x4a\x5f\x4b\xb0\x9e\x5f\x52\x4e\x92\x5f\x55\x5a\x48\x5f\x5a\xb0\x9f\x5f\x5b\x52\x47\xb0\xa0\xb0\xa1\x5f\x72\x5f\x5c\xb0\xa2\xb0\xa3\xb0\xa4\x5f\x71\xb0\xa5\x4d\x5d\xb0\xa6\xb0\xa7\x4f\xd4\xb0\xa8\x4f\xf9\xb0\xa9\xb0\xaa\x4d\xc9\xb0\xab\xb0\xac\xb0\xad\xb0\xae\x5f\x6a\xb0\xaf\x5f\x65\xb0\xb0\x5f\x5f\xb0\xb1\xb0\xb2\xb0\xb3\x49\xca\x5f\x63\xb0\xb4\x5f\x6b\x49\xa3\x5f\x75\xb0\xb5\xb0\xb6\xb0\xb7\x5f\x5e\xb0\xb8\xb0\xb9\xb0\xba\x53\xcf\x5f\x70\xb0\xbb\xb0\xbc\xb0\xbd\xb0\xbe\xb0\xbf\x5f\x74\x51\x83\x4c\x66\xb0\xc0\xb0\xc1\xb0\xc2\xb0\xc3\xb0\xc4\x5f\x6e\x5f\x6f\xb0\xc5\xb0\xc6\xb0\xc7\x5f\x64\xb0\xc8\xb0\xc9", /* 8400 */ "\xb0\xca\x5f\x5d\xb0\xcb\x5f\x6d\x56\xd0\xb0\xcc\x5f\x69\xb0\xcd\xb0\xce\xb0\xcf\xb0\xd0\x5f\x62\x52\x68\x53\xbb\x57\xad\x5f\x6c\xb0\xd1\x5f\x68\xb0\xd2\xb0\xd3\xb0\xd4\xb0\xd5\xb0\xd6\xb0\xd7\x5f\x61\xb0\xd8\xb0\xd9\xb0\xda\x5f\x66\x51\xdb\xb0\xdb\xb0\xdc\xb0\xdd\xb0\xde\xb0\xdf\xb0\xe0\x5a\x49\x5a\x4a\x5f\x73\x58\x95\x54\xf7\xb0\xe1\xb0\xe2\xb0\xe3\xb0\xe4\xb0\xe5\xb0\xe6\xb0\xe7\xb0\xe8\x5f\x87\xb0\xe9\xb0\xea\xb0\xeb\xb0\xec\xb0\xed\xb0\xee\x5f\x67\xb0\xef\xb0\xf0\xb0\xf1\x5f\x81\x51\xe3\xb0\xf2\xb0\xf3\xb0\xf4\xb0\xf5\xb0\xf6\xb0\xf7\xb0\xf8\xb0\xf9\x5f\x82\xb0\xfa\xb0\xfb\xb0\xfc\xb0\xfd\xb1\x41\xb1\x42\xb1\x43\xb1\x44\xb1\x45\xb1\x46\x5f\x77\xb1\x47\xb1\x48\xb1\x49\xb1\x4a\xb1\x4b\x5b\xf7\xb1\x4c\x5f\x79\x5f\x78\x4c\xef\x5f\x76\xb1\x4d\xb1\x4e\xb1\x4f\xb1\x50\x53\xce\xb1\x51\x4b\xac\xb1\x52\xb1\x53\xb1\x54\xb1\x55\xb1\x56\x5f\x83\xb1\x57\x4d\xf8\x5a\xe0\x5f\x88\xb1\x58\xb1\x59\xb1\x5a\x4a\xcf\xb1\x5b\x5f\x7a\xb1\x5c\x50\x9c\x5f\x84\xb1\x5d\x5f\x7f\xb1\x5e\x5f\x7d\xb1\x5f\xb1\x60\xb1\x61\xb1\x62\xb1\x63", /* 8480 */ "\xb1\x64\xb1\x65\x4b\x79\xb1\x66\xb1\x67\xb1\x68\xb1\x69\x5f\x7b\x5f\x7c\x5f\x7e\xb1\x6a\x4f\x4f\x5f\x85\xb1\x6b\x5f\x86\xb1\x6c\xb1\x6d\xb1\x6e\xb1\x6f\xb1\x70\xb1\x71\xb1\x72\xb1\x73\x5f\x96\xb1\x74\x52\x69\xb1\x75\xb1\x76\x56\x83\xb1\x77\xb1\x78\xb1\x79\xb1\x7a\x5f\x93\xb1\x7b\xb1\x7c\xb1\x7d\xb1\x7e\xb1\x7f\xb1\x81\xb1\x82\xb1\x83\xb1\x84\xb1\x85\xb1\x86\xb1\x87\xb1\x88\x5c\xe0\xb1\x89\xb1\x8a\x53\xd0\xb1\x8b\x5f\x95\xb1\x8c\xb1\x8d\xb1\x8e\x5b\x95\x5f\x94\x5f\x91\xb1\x8f\xb1\x90\x5f\x8d\xb1\x91\x5f\x90\xb1\x92\x5f\x89\xb1\x93\xb1\x94\x58\xed\xb1\x95\xb1\x96\xb1\x97\xb1\x98\x54\xd7\x5f\x8f\xb1\x99\xb1\x9a\x5f\x8a\xb1\x9b\xb1\x9c\x5f\x8b\x56\x93\xb1\x9d\x5f\x8e\xb1\x9e\xb1\x9f\x49\x6d\xb1\xa0\xb1\xa1\xb1\xa2\xb1\xa3\xb1\xa4\xb1\xa5\x50\xb5\xb1\xa6\x4e\xba\x5f\x92\xb1\xa7\xb1\xa8\x5f\x98\xb1\xa9\x5f\x97\x5f\x8c\xb1\xaa\xb1\xab\xb1\xac\xb1\xad\xb1\xae\x53\x8f\xb1\xaf\xb1\xb0\xb1\xb1\x5f\x9c\xb1\xb2\xb1\xb3\xb1\xb4\xb1\xb5\xb1\xb6\xb1\xb7\xb1\xb8\xb1\xb9\xb1\xba\xb1\xbb\xb1\xbc\x5f\xa3\xb1\xbd\xb1\xbe\x5f\xa2", /* 8500 */ "\xb1\xbf\xb1\xc0\xb1\xc1\xb1\xc2\xb1\xc3\xb1\xc4\xb1\xc5\xb1\xc6\xb1\xc7\xb1\xc8\xb1\xc9\xb1\xca\x5f\x99\xb1\xcb\xb1\xcc\xb1\xcd\xb1\xce\x52\x90\xb1\xcf\x51\xfa\xb1\xd0\xb1\xd1\xb1\xd2\x5b\x82\xb1\xd3\xb1\xd4\x57\xb4\xb1\xd5\xb1\xd6\xb1\xd7\xb1\xd8\x5f\x9e\xb1\xd9\x49\xcb\xb1\xda\xb1\xdb\xb1\xdc\xb1\xdd\xb1\xde\xb1\xdf\xb1\xe0\xb1\xe1\xb1\xe2\x52\xe7\x55\xde\xb1\xe3\xb1\xe4\xb1\xe5\xb1\xe6\xb1\xe7\xb1\xe8\xb1\xe9\xb1\xea\xb1\xeb\xb1\xec\x54\x5e\x5f\x9b\x5f\x9d\x5f\x9f\x5f\xa1\x48\xa9\x49\x6e\xb1\xed\xb1\xee\xb1\xef\xb1\xf0\xb1\xf1\x5f\xab\xb1\xf2\xb1\xf3\xb1\xf4\xb1\xf5\x5f\xa5\x4f\x56\x54\xee\xb1\xf6\xb1\xf7\xb1\xf8\xb1\xf9\xb1\xfa\xb1\xfb\xb1\xfc\xb1\xfd\xb2\x41\xb2\x42\xb2\x43\x5f\xa0\xb2\x44\xb2\x45\x5f\xa4\xb2\x46\xb2\x47\xb2\x48\xb2\x49\x5f\xa8\xb2\x4a\xb2\x4b\xb2\x4c\xb2\x4d\xb2\x4e\x5f\xa7\xb2\x4f\xb2\x50\xb2\x51\x5f\xa6\xb2\x52\xb2\x53\xb2\x54\xb2\x55\xb2\x56\xb2\x57\xb2\x58\xb2\x59\xb2\x5a\x5f\xac\xb2\x5b\x5a\xcb\xb2\x5c\xb2\x5d\xb2\x5e\xb2\x5f\x5f\xb2\x5f\xa9\x5f\xad\xb2\x60\xb2\x61\x50\xd8\xb2\x62", /* 8580 */ "\xb2\x63\xb2\x64\xb2\x65\xb2\x66\x49\x41\x5f\xb5\xb2\x67\x5f\xb0\xb2\x68\xb2\x69\xb2\x6a\xb2\x6b\xb2\x6c\xb2\x6d\xb2\x6e\x5f\xb1\xb2\x6f\xb2\x70\xb2\x71\xb2\x72\xb2\x73\xb2\x74\xb2\x75\xb2\x76\xb2\x77\xb2\x78\xb2\x79\x59\x46\x5f\xb4\xb2\x7a\xb2\x7b\xb2\x7c\xb2\x7d\xb2\x7e\xb2\x7f\xb2\x81\x5f\xae\xb2\x82\xb2\x83\xb2\x84\x5f\xaf\xb2\x85\x58\xbc\xb2\x86\xb2\x87\xb2\x88\x5f\xb3\x55\xec\x5f\xb8\xb2\x89\xb2\x8a\xb2\x8b\xb2\x8c\xb2\x8d\xb2\x8e\x5f\xb7\xb2\x8f\x5f\xb6\xb2\x90\xb2\x91\xb2\x92\xb2\x93\xb2\x94\xb2\x95\xb2\x96\x5f\xba\xb2\x97\xb2\x98\xb2\x99\xb2\x9a\xb2\x9b\xb2\x9c\xb2\x9d\x4f\x86\xb2\x9e\xb2\x9f\xb2\xa0\xb2\xa1\xb2\xa2\x49\xd7\x52\x8b\xb2\xa3\xb2\xa4\x5f\xb9\xb2\xa5\x53\x5a\xb2\xa6\xb2\xa7\xb2\xa8\xb2\xa9\xb2\xaa\xb2\xab\x5f\xbb\xb2\xac\xb2\xad\xb2\xae\xb2\xaf\xb2\xb0\xb2\xb1\xb2\xb2\x56\xd8\xb2\xb3\xb2\xb4\xb2\xb5\xb2\xb6\x4c\x4a\xb2\xb7\xb2\xb8\xb2\xb9\xb2\xba\xb2\xbb\xb2\xbc\xb2\xbd\xb2\xbe\xb2\xbf\xb2\xc0\xb2\xc1\xb2\xc2\xb2\xc3\xb2\xc4\xb2\xc5\xb2\xc6\xb2\xc7\x5a\xe4\xb2\xc8\xb2\xc9\xb2\xca\x5f\xbc", /* 8600 */ "\xb2\xcb\xb2\xcc\xb2\xcd\xb2\xce\xb2\xcf\x5f\xbe\xb2\xd0\xb2\xd1\xb2\xd2\xb2\xd3\xb2\xd4\xb2\xd5\xb2\xd6\xb2\xd7\xb2\xd8\xb2\xd9\xb2\xda\x52\xa1\xb2\xdb\xb2\xdc\xb2\xdd\xb2\xde\x5f\xc0\xb2\xdf\xb2\xe0\xb2\xe1\xb2\xe2\xb2\xe3\xb2\xe4\xb2\xe5\xb2\xe6\xb2\xe7\xb2\xe8\xb2\xe9\xb2\xea\xb2\xeb\xb2\xec\xb2\xed\xb2\xee\x5f\xbd\xb2\xef\x5f\xbf\xb2\xf0\xb2\xf1\xb2\xf2\xb2\xf3\xb2\xf4\xb2\xf5\xb2\xf6\xb2\xf7\xb2\xf8\xb2\xf9\xb2\xfa\xb2\xfb\xb2\xfc\xb2\xfd\x5b\x5a\xb3\x41\xb3\x42\xb3\x43\x5f\xc1\xb3\x44\xb3\x45\xb3\x46\xb3\x47\xb3\x48\xb3\x49\xb3\x4a\xb3\x4b\xb3\x4c\xb3\x4d\xb3\x4e\xb3\x4f\xb3\x50\xb3\x51\xb3\x52\xb3\x53\x69\xad\x4e\x42\x51\xb1\x53\x50\x51\xc6\xb3\x54\xb3\x55\x69\xae\xb3\x56\xb3\x57\xb3\x58\xb3\x59\xb3\x5a\x58\xe8\xb3\x5b\xb3\x5c\xb3\x5d\x5a\x7d\xb3\x5e\xb3\x5f\xb3\x60\x66\x5d\xb3\x61\xb3\x62\xb3\x63\xb3\x64\xb3\x65\xb3\x66\xb3\x67\xb3\x68\x4a\x87\x69\xaf\xb3\x69\x69\xb0\xb3\x6a\xb3\x6b\x55\xac\xb3\x6c\xb3\x6d\xb3\x6e\xb3\x6f\xb3\x70\xb3\x71\xb3\x72\x4d\xe6\x69\xb2\x69\xb4\x69\xb3\x56\x85\x58\x5a\x69\xb1", /* 8680 */ "\x55\xb3\x59\xce\x51\xeb\xb3\x73\xb3\x74\xb3\x75\xb3\x76\xb3\x77\xb3\x78\xb3\x79\x57\xc2\x69\xb7\x48\xf5\x69\xb6\xb3\x7a\xb3\x7b\xb3\x7c\xb3\x7d\xb3\x7e\x69\xbd\xb3\x7f\x49\xce\xb3\x81\xb3\x82\xb3\x83\xb3\x84\xb3\x85\xb3\x86\x59\x61\x69\xb9\xb3\x87\xb3\x88\xb3\x89\xb3\x8a\xb3\x8b\x69\xbb\x5a\xe8\xb3\x8c\xb3\x8d\x69\xba\x69\xb5\x69\xbe\x69\xbc\xb3\x8e\x69\xb8\xb3\x8f\xb3\x90\x69\xc6\x69\xc3\x69\xc5\xb3\x91\xb3\x92\x69\xc9\x69\xc1\x69\xbf\xb3\x93\xb3\x94\xb3\x95\x69\xc4\xb3\x96\xb3\x97\xb3\x98\xb3\x99\xb3\x9a\x5b\xfa\xb3\x9b\xb3\x9c\xb3\x9d\x69\xc0\xb3\x9e\x54\x9a\x55\x7f\xb3\x9f\x69\xc7\x4d\x66\x4b\x50\xb3\xa0\xb3\xa1\x69\xc2\x69\xc8\x69\xcf\x69\xd5\xb3\xa2\xb3\xa3\x4e\x77\xb3\xa4\xb3\xa5\xb3\xa6\x69\xd4\x57\x7c\xb3\xa7\x5b\xea\xb3\xa8\xb3\xa9\x69\xd1\x69\xd3\xb3\xaa\xb3\xab\xb3\xac\xb3\xad\x4c\xf1\xb3\xae\xb3\xaf\xb3\xb0\xb3\xb1\x69\xca\xb3\xb2\xb3\xb3\xb3\xb4\x69\xcd\x51\xf8\xb3\xb5\x5b\x7d\x69\xcb\x69\xcc\x69\xce\x69\xd2\xb3\xb6\xb3\xb7\xb3\xb8\x69\xd8\x5a\x5c\xb3\xb9\xb3\xba\xb3\xbb\xb3\xbc\x4b\xe9\xb3\xbd", /* 8700 */ "\x55\xf0\xb3\xbe\x4c\x85\x69\xd6\xb3\xbf\xb3\xc0\xb3\xc1\x69\xd7\x69\xd9\x69\xdc\x69\xda\xb3\xc2\xb3\xc3\x69\xdb\xb3\xc4\xb3\xc5\xb3\xc6\xb3\xc7\x59\x71\x69\xd0\xb3\xc8\x57\x69\xb3\xc9\x57\xce\x5b\xa8\xb3\xca\x69\xe2\xb3\xcb\x52\x7b\xb3\xcc\x69\xdf\xb3\xcd\xb3\xce\x50\xae\x69\xeb\x69\xdd\xb3\xcf\x69\xe0\xb3\xd0\xb3\xd1\xb3\xd2\x69\xe7\xb3\xd3\xb3\xd4\xb3\xd5\xb3\xd6\x69\xe1\xb3\xd7\xb3\xd8\x69\xe6\xb3\xd9\xb3\xda\x69\xe5\xb3\xdb\xb3\xdc\x69\xe8\xb3\xdd\xb3\xde\xb3\xdf\x69\xde\xb3\xe0\xb3\xe1\x69\xe3\x69\xe9\xb3\xe2\xb3\xe3\xb3\xe4\xb3\xe5\xb3\xe6\xb3\xe7\xb3\xe8\x5a\x4c\x69\xe4\x49\xf4\xb3\xe9\xb3\xea\x69\xf1\xb3\xeb\x58\xaa\xb3\xec\xb3\xed\xb3\xee\xb3\xef\x69\xf4\xb3\xf0\xb3\xf1\xb3\xf2\x4e\x68\xb3\xf3\x69\xf8\xb3\xf4\xb3\xf5\xb3\xf6\xb3\xf7\xb3\xf8\xb3\xf9\x69\xef\xb3\xfa\xb3\xfb\x69\xf5\x69\xf7\x69\xf9\xb3\xfc\xb3\xfd\xb4\x41\xb4\x42\xb4\x43\xb4\x44\xb4\x45\xb4\x46\x69\xf2\xb4\x47\x69\xf0\xb4\x48\xb4\x49\xb4\x4a\x4d\xfa\xb4\x4b\x4b\x9c\xb4\x4c\xb4\x4d\xb4\x4e\xb4\x4f\x69\xee\x69\xf6\x69\xec\x69\xed\xb4\x50", /* 8780 */ "\xb4\x51\xb4\x52\x69\xea\x6a\x46\xb4\x53\x6a\x43\xb4\x54\xb4\x55\x6a\x42\xb4\x56\xb4\x57\x69\xf3\xb4\x58\x54\xd9\xb4\x59\xb4\x5a\xb4\x5b\xb4\x5c\xb4\x5d\x69\xfa\xb4\x5e\xb4\x5f\xb4\x60\x6a\x45\xb4\x61\xb4\x62\xb4\x63\xb4\x64\xb4\x65\xb4\x66\xb4\x67\x52\x99\xb4\x68\xb4\x69\xb4\x6a\xb4\x6b\xb4\x6c\xb4\x6d\xb4\x6e\xb4\x6f\x69\xfc\xb4\x70\xb4\x71\x6a\x47\x6a\x49\x6a\x44\xb4\x72\x69\xfb\xb4\x73\xb4\x74\xb4\x75\x6a\x4b\xb4\x76\x6a\x4a\xb4\x77\xb4\x78\xb4\x79\xb4\x7a\x51\xdc\xb4\x7b\xb4\x7c\x6a\x4e\xb4\x7d\xb4\x7e\x6a\x50\xb4\x7f\xb4\x81\xb4\x82\xb4\x83\xb4\x84\x6a\x41\xb4\x85\xb4\x86\xb4\x87\x6a\x51\x6a\x4c\xb4\x88\xb4\x89\xb4\x8a\xb4\x8b\xb4\x8c\x6a\x4f\x69\xfd\x6a\x4d\xb4\x8d\xb4\x8e\xb4\x8f\xb4\x90\xb4\x91\xb4\x92\xb4\x93\x6a\x52\xb4\x94\xb4\x95\xb4\x96\xb4\x97\x6a\x54\xb4\x98\xb4\x99\xb4\x9a\xb4\x9b\x6a\x48\xb4\x9c\xb4\x9d\xb4\x9e\xb4\x9f\x6a\x53\xb4\xa0\xb4\xa1\xb4\xa2\x6a\x55\xb4\xa3\xb4\xa4\xb4\xa5\xb4\xa6\xb4\xa7\xb4\xa8\xb4\xa9\xb4\xaa\xb4\xab\xb4\xac\x58\xb6\xb4\xad\xb4\xae\xb4\xaf\xb4\xb0\x6a\x58\xb4\xb1", /* 8800 */ "\xb4\xb2\xb4\xb3\xb4\xb4\x5d\x9a\xb4\xb5\xb4\xb6\xb4\xb7\xb4\xb8\xb4\xb9\xb4\xba\x6a\x59\xb4\xbb\xb4\xbc\xb4\xbd\xb4\xbe\xb4\xbf\xb4\xc0\xb4\xc1\xb4\xc2\x6a\x57\xb4\xc3\x54\xe3\x6a\x56\xb4\xc4\xb4\xc5\xb4\xc6\xb4\xc7\x6a\x5a\xb4\xc8\xb4\xc9\xb4\xca\xb4\xcb\xb4\xcc\x6a\x5b\x4a\xbf\xb4\xcd\xb4\xce\xb4\xcf\xb4\xd0\xb4\xd1\xb4\xd2\xb4\xd3\xb4\xd4\xb4\xd5\xb4\xd6\xb4\xd7\xb4\xd8\xb4\xd9\xb4\xda\xb4\xdb\x67\xc2\xb4\xdc\xb4\xdd\xb4\xde\xb4\xdf\xb4\xe0\xb4\xe1\x6a\x5c\xb4\xe2\xb4\xe3\x6a\x5d\xb4\xe4\xb4\xe5\xb4\xe6\x59\x4a\xb4\xe7\xb4\xe8\xb4\xe9\x6a\xab\x58\xc5\xb4\xea\xb4\xeb\xb4\xec\xb4\xed\xb4\xee\xb4\xef\x58\xcf\x59\x7c\xb4\xf0\xb4\xf1\xb4\xf2\xb4\xf3\xb4\xf4\xb4\xf5\x58\x6e\xb4\xf6\xb4\xf7\x4f\x76\xb4\xf8\x59\x63\xb4\xf9\xb4\xfa\xb4\xfb\xb4\xfc\xb4\xfd\xb5\x41\xb5\x42\x4d\xe1\x61\x8a\x59\xc1\x69\x62\x49\xb8\xb5\x43\xb5\x44\x49\x8e\x69\x63\xb5\x45\x55\x60\x4a\x64\xb5\x46\x5d\x93\xb5\x47\x56\x45\xb5\x48\x69\x64\xb5\x49\xb5\x4a\xb5\x4b\xb5\x4c\x5b\xd3\xb5\x4d\xb5\x4e\xb5\x4f\xb5\x50\xb5\x51\x69\x65\x6a\xbf\x69\x66", /* 8880 */ "\xb5\x52\x5a\xab\x69\x67\xb5\x53\x48\xbf\x6a\xc0\xb5\x54\xb5\x55\x6a\xc1\xb5\x56\xb5\x57\x4a\xfb\xb5\x58\x53\x7b\xb5\x59\xb5\x5a\xb5\x5b\xb5\x5c\x56\xba\xb5\x5d\xb5\x5e\xb5\x5f\x58\xe3\xb5\x60\xb5\x61\xb5\x62\xb5\x63\xb5\x64\x57\x81\xb5\x65\xb5\x66\xb5\x67\xb5\x68\xb5\x69\x69\x68\xb5\x6a\x5d\x94\xb5\x6b\xb5\x6c\xb5\x6d\xb5\x6e\xb5\x6f\xb5\x70\x49\x5b\xb5\x71\x58\x4e\xb5\x72\xb5\x73\xb5\x74\x4c\xa3\xb5\x75\xb5\x76\xb5\x77\xb5\x78\xb5\x79\x69\x6a\xb5\x7a\xb5\x7b\xb5\x7c\xb5\x7d\x69\x6b\xb5\x7e\xb5\x7f\xb5\x81\xb5\x82\x49\xc2\x51\x71\xb5\x83\xb5\x84\x5c\x50\x69\x69\xb5\x85\xb5\x86\x69\x6c\xb5\x87\xb5\x88\xb5\x89\xb5\x8a\x69\x6e\xb5\x8b\xb5\x8c\xb5\x8d\x5d\x97\xb5\x8e\x59\xe0\x5a\xa2\xb5\x8f\xb5\x90\x6a\xc2\x54\xb8\xb5\x91\xb5\x92\xb5\x93\xb5\x94\xb5\x95\x6a\xc3\xb5\x96\xb5\x97\x69\x6d\x69\x6f\x50\x84\x69\x70\xb5\x98\xb5\x99\x69\x74\xb5\x9a\xb5\x9b\xb5\x9c\xb5\x9d\xb5\x9e\xb5\x9f\xb5\xa0\x69\x76\x69\x71\xb5\xa1\x55\x71\x53\x82\xb5\xa2\xb5\xa3\xb5\xa4\x51\xe2\x4d\x9d\xb5\xa5\xb5\xa6\x69\x73\xb5\xa7\x69\x75\xb5\xa8", /* 8900 */ "\xb5\xa9\xb5\xaa\x4d\x73\xb5\xab\xb5\xac\xb5\xad\xb5\xae\xb5\xaf\xb5\xb0\xb5\xb1\x69\x7b\xb5\xb2\xb5\xb3\xb5\xb4\xb5\xb5\xb5\xb6\x4d\xd5\xb5\xb7\x48\xfc\x69\x79\xb5\xb8\xb5\xb9\xb5\xba\xb5\xbb\xb5\xbc\x69\x78\x69\x72\x69\x7a\xb5\xbd\xb5\xbe\xb5\xbf\xb5\xc0\xb5\xc1\x69\x77\xb5\xc2\xb5\xc3\xb5\xc4\x54\xeb\xb5\xc5\xb5\xc6\xb5\xc7\xb5\xc8\x57\x6a\x69\x7d\xb5\xc9\xb5\xca\xb5\xcb\xb5\xcc\x63\x5d\xb5\xcd\xb5\xce\xb5\xcf\x69\x7c\xb5\xd0\x69\x7e\xb5\xd1\xb5\xd2\xb5\xd3\xb5\xd4\xb5\xd5\xb5\xd6\xb5\xd7\xb5\xd8\xb5\xd9\xb5\xda\x69\x7f\xb5\xdb\xb5\xdc\x58\x86\xb5\xdd\xb5\xde\xb5\xdf\xb5\xe0\xb5\xe1\xb5\xe2\xb5\xe3\xb5\xe4\xb5\xe5\xb5\xe6\xb5\xe7\xb5\xe8\xb5\xe9\xb5\xea\xb5\xeb\xb5\xec\xb5\xed\xb5\xee\xb5\xef\xb5\xf0\xb5\xf1\xb5\xf2\xb5\xf3\xb5\xf4\xb5\xf5\x6a\xc4\x4f\x94\xb5\xf6\xb5\xf7\xb5\xf8\xb5\xf9\xb5\xfa\xb5\xfb\x69\x81\xb5\xfc\xb5\xfd\xb6\x41\xb6\x42\xb6\x43\xb6\x44\xb6\x45\xb6\x46\xb6\x47\xb6\x48\xb6\x49\xb6\x4a\xb6\x4b\xb6\x4c\xb6\x4d\xb6\x4e\xb6\x4f\xb6\x50\xb6\x51\xb6\x52\x69\x82\xb6\x53\xb6\x54\xb6\x55\x57\xf6", /* 8980 */ "\xb6\x56\x59\xa9\xb6\x57\x69\x9c\xb6\x58\xb6\x59\x4c\xb1\xb6\x5a\xb6\x5b\xb6\x5c\xb6\x5d\xb6\x5e\xb6\x5f\xb6\x60\xb6\x61\xb6\x62\xb6\x63\xb6\x64\xb6\x65\xb6\x66\xb6\x67\xb6\x68\xb6\x69\xb6\x6a\xb6\x6b\xb6\x6c\xb6\x6d\xb6\x6e\xb6\x6f\xb6\x70\xb6\x71\xb6\x72\xb6\x73\xb6\x74\xb6\x75\xb6\x76\xb6\x77\xb6\x78\xb6\x79\xb6\x7a\xb6\x7b\xb6\x7c\xb6\x7d\xb6\x7e\xb6\x7f\xb6\x81\xb6\x82\xb6\x83\xb6\x84\xb6\x85\xb6\x86\xb6\x87\xb6\x88\xb6\x89\xb6\x8a\xb6\x8b\xb6\x8c\xb6\x8d\xb6\x8e\xb6\x8f\xb6\x90\xb6\x91\xb6\x92\xb6\x93\xb6\x94\x4e\xfa\x4d\x7b\xb6\x95\x4d\x87\x52\x79\x55\xd2\x65\xe7\x50\xbf\x4f\xf4\x65\xe8\x65\xe9\x65\xea\xb6\x96\x65\xeb\x65\xec\x65\xed\x65\xee\x4f\x67\xb6\x97\xb6\x98\xb6\x99\x6b\x9c\xb6\x9a\xb6\x9b\xb6\x9c\x6b\x9e\xb6\x9d\x6b\x9f\xb6\x9e\x6b\x9d\xb6\x9f\xb6\xa0\xb6\xa1\xb6\xa2\x4f\x83\xb6\xa3\x6b\xa0\x4a\xa4\xb6\xa4\xb6\xa5\xb6\xa6\xb6\xa7\x6b\xa1\xb6\xa8\xb6\xa9\xb6\xaa\x6b\xa2\xb6\xab\xb6\xac\xb6\xad\x66\xb1\xb6\xae\xb6\xaf\xb6\xb0\xb6\xb1\xb6\xb2\xb6\xb3\xb6\xb4\xb6\xb5\xb6\xb6\xb6\xb7\xb6\xb8\xb6\xb9", /* 8a00 */ "\x59\x74\xb6\xba\xb6\xbb\xb6\xbc\xb6\xbd\xb6\xbe\xb6\xbf\x5d\x8b\xb6\xc0\xb6\xc1\xb6\xc2\xb6\xc3\xb6\xc4\xb6\xc5\xb6\xc6\xb6\xc7\xb6\xc8\xb6\xc9\xb6\xca\xb6\xcb\xb6\xcc\xb6\xcd\xb6\xce\xb6\xcf\xb6\xd0\xb6\xd1\xb6\xd2\xb6\xd3\xb6\xd4\xb6\xd5\xb6\xd6\xb6\xd7\xb6\xd8\xb6\xd9\xb6\xda\xb6\xdb\xb6\xdc\xb6\xdd\xb6\xde\xb6\xdf\xb6\xe0\xb6\xe1\xb6\xe2\xb6\xe3\xb6\xe4\xb6\xe5\xb6\xe6\xb6\xe7\xb6\xe8\xb6\xe9\xb6\xea\xb6\xeb\xb6\xec\xb6\xed\xb6\xee\xb6\xef\xb6\xf0\xb6\xf1\xb6\xf2\xb6\xf3\xb6\xf4\xb6\xf5\x6b\xa3\xb6\xf6\xb6\xf7\xb6\xf8\xb6\xf9\xb6\xfa\xb6\xfb\xb6\xfc\xb6\xfd\xb7\x41\x67\xb9\xb7\x42\xb7\x43\xb7\x44\xb7\x45\xb7\x46\xb7\x47\xb7\x48\xb7\x49\xb7\x4a\xb7\x4b\xb7\x4c\xb7\x4d\xb7\x4e\xb7\x4f\xb7\x50\xb7\x51\xb7\x52\xb7\x53\xb7\x54\xb7\x55\xb7\x56\xb7\x57\xb7\x58\xb7\x59\xb7\x5a\xb7\x5b\xb7\x5c\xb7\x5d\xb7\x5e\xb7\x5f\xb7\x60\xb7\x61\xb7\x62\xb7\x63\xb7\x64\xb7\x65\xb7\x66\xb7\x67\xb7\x68\xb7\x69\xb7\x6a\xb7\x6b\xb7\x6c\xb7\x6d\xb7\x6e\xb7\x6f\xb7\x70\xb7\x71\x5b\x52\xb7\x72\xb7\x73\xb7\x74\xb7\x75\xb7\x76\xb7\x77", /* 8a80 */ "\xb7\x78\xb7\x79\xb7\x7a\xb7\x7b\xb7\x7c\xb7\x7d\xb7\x7e\xb7\x7f\xb7\x81\x5a\x9f\x56\xdb\xb7\x82\xb7\x83\xb7\x84\xb7\x85\xb7\x86\xb7\x87\xb7\x88\xb7\x89\x55\xc3\xb7\x8a\xb7\x8b\xb7\x8c\xb7\x8d\xb7\x8e\xb7\x8f\xb7\x90\xb7\x91\xb7\x92\xb7\x93\xb7\x94\xb7\x95\xb7\x96\xb7\x97\xb7\x98\xb7\x99\xb7\x9a\xb7\x9b\xb7\x9c\xb7\x9d\xb7\x9e\xb7\x9f\xb7\xa0\xb7\xa1\xb7\xa2\xb7\xa3\xb7\xa4\xb7\xa5\xb7\xa6\xb7\xa7\xb7\xa8\xb7\xa9\xb7\xaa\xb7\xab\xb7\xac\xb7\xad\xb7\xae\xb7\xaf\xb7\xb0\xb7\xb1\xb7\xb2\xb7\xb3\xb7\xb4\xb7\xb5\xb7\xb6\xb7\xb7\xb7\xb8\xb7\xb9\xb7\xba\xb7\xbb\xb7\xbc\xb7\xbd\xb7\xbe\xb7\xbf\xb7\xc0\xb7\xc1\xb7\xc2\xb7\xc3\xb7\xc4\xb7\xc5\xb7\xc6\xb7\xc7\xb7\xc8\xb7\xc9\xb7\xca\xb7\xcb\xb7\xcc\xb7\xcd\xb7\xce\xb7\xcf\xb7\xd0\xb7\xd1\xb7\xd2\xb7\xd3\xb7\xd4\xb7\xd5\xb7\xd6\xb7\xd7\xb7\xd8\xb7\xd9\xb7\xda\xb7\xdb\xb7\xdc\xb7\xdd\xb7\xde\xb7\xdf\xb7\xe0\xb7\xe1\xb7\xe2\xb7\xe3\xb7\xe4\xb7\xe5\xb7\xe6\xb7\xe7\xb7\xe8\xb7\xe9\xb7\xea\xb7\xeb\xb7\xec\xb7\xed\xb7\xee\xb7\xef\xb7\xf0\xb7\xf1\xb7\xf2\xb7\xf3\xb7\xf4\xb7\xf5", /* 8b00 */ "\xb7\xf6\xb7\xf7\xb7\xf8\xb7\xf9\xb7\xfa\xb7\xfb\xb7\xfc\x63\x60\xb7\xfd\xb8\x41\xb8\x42\xb8\x43\xb8\x44\xb8\x45\xb8\x46\xb8\x47\xb8\x48\xb8\x49\xb8\x4a\xb8\x4b\xb8\x4c\xb8\x4d\xb8\x4e\xb8\x4f\xb8\x50\xb8\x51\xb8\x52\xb8\x53\xb8\x54\xb8\x55\xb8\x56\xb8\x57\xb8\x58\xb8\x59\xb8\x5a\xb8\x5b\xb8\x5c\xb8\x5d\x6b\xa4\xb8\x5e\xb8\x5f\xb8\x60\xb8\x61\xb8\x62\xb8\x63\xb8\x64\xb8\x65\xb8\x66\xb8\x67\xb8\x68\xb8\x69\xb8\x6a\xb8\x6b\xb8\x6c\xb8\x6d\xb8\x6e\xb8\x6f\xb8\x70\xb8\x71\xb8\x72\xb8\x73\xb8\x74\xb8\x75\xb8\x76\xb8\x77\xb8\x78\xb8\x79\xb8\x7a\xb8\x7b\xb8\x7c\xb8\x7d\xb8\x7e\xb8\x7f\xb8\x81\xb8\x82\xb8\x83\xb8\x84\xb8\x85\xb8\x86\xb8\x87\xb8\x88\xb8\x89\xb8\x8a\xb8\x8b\xb8\x8c\xb8\x8d\xb8\x8e\xb8\x8f\xb8\x90\xb8\x91\xb8\x92\xb8\x93\xb8\x94\xb8\x95\xb8\x96\xb8\x97\xb8\x98\xb8\x99\xb8\x9a\xb8\x9b\xb8\x9c\xb8\x9d\x4f\xae\xb8\x9e\xb8\x9f\xb8\xa0\xb8\xa1\xb8\xa2\x53\xa8\xb8\xa3\xb8\xa4\xb8\xa5\xb8\xa6\xb8\xa7\xb8\xa8\xb8\xa9\xb8\xaa\xb8\xab\xb8\xac\xb8\xad\xb8\xae\xb8\xaf\xb8\xb0\xb8\xb1\xb8\xb2\xb8\xb3\xb8\xb4\xb8\xb5", /* 8b80 */ "\xb8\xb6\xb8\xb7\xb8\xb8\xb8\xb9\xb8\xba\xb8\xbb\xb8\xbc\xb8\xbd\xb8\xbe\xb8\xbf\xb8\xc0\xb8\xc1\xb8\xc2\xb8\xc3\xb8\xc4\xb8\xc5\xb8\xc6\xb8\xc7\xb8\xc8\xb8\xc9\xb8\xca\xb8\xcb\xb8\xcc\xb8\xcd\xb8\xce\xb8\xcf\xb8\xd0\xb8\xd1\xb8\xd2\xb8\xd3\xb8\xd4\xb8\xd5\x5d\xa4\x4e\xc5\x4b\xa8\x4c\xbb\x54\xce\x4e\xa4\x5d\xa5\x5d\xa6\x56\xd5\x54\xc2\x5d\xa7\x53\xfc\xb8\xd6\x59\x55\x59\xe8\x59\x56\x4e\xc6\xb8\xd7\x4f\x52\x4e\x85\x5d\xa8\x5d\xa9\x59\x68\x5d\xaa\x58\xec\x4b\xee\x51\xda\xb8\xd8\x56\x6f\x4c\x8e\x55\x89\x4c\x63\x4f\xf6\x5b\xa3\x5d\xab\x5d\xac\x53\xbf\x5c\x88\x55\xb5\xb8\xd9\x5b\x49\x56\x7f\x5b\x90\x5d\xad\x5b\xde\x4a\xc9\x5d\xaf\x5d\xae\xb8\xda\x59\xea\x5d\xb0\x5d\xb1\x5d\xb2\x55\xd3\x5d\xb3\x55\xaa\x5d\xb4\x5d\xb5\x4a\x6f\x5b\xee\x5d\xb6\x4e\x50\x4b\x4e\x5d\xb7\x5d\xb8\x4d\x8f\x59\x4f\x59\xe7\x5d\xb9\x4c\xc2\x58\x8b\x49\xee\x5d\xba\x5d\xbb\xb8\xdb\x4f\x8c\x57\xdb\x5a\x90\x5d\xbc\x57\xf2\x5d\xbd\x5a\x75\x4e\x86\x5d\xbe\x56\x55\x56\x70\x5d\xbf\x54\x8c\x5b\xed\x5d\xc0\x53\x55\x4b\xc0\x5d\xc1\x4c\x6c\x50\x6e\x5d\xc2", /* 8c00 */ "\x5d\xc3\x56\x4d\x5d\xc4\x4b\x98\x5d\xc5\x51\x62\x5c\x5b\x5d\xc6\x56\xb7\xb8\xdc\x59\xe9\x52\xb0\x5d\xc7\x4b\x9e\x4e\x71\x5d\xc8\x58\xb2\x5d\xc9\x5d\xca\x57\xbc\x5d\xcb\x5d\xcc\x5d\xcd\x49\xf6\x5d\xd0\x5d\xce\x59\x89\x5d\xcf\x52\x75\x5d\xd1\xb8\xdd\x5d\xd2\x5d\xd3\x5d\xd4\x58\xba\x59\xa4\x48\xf8\x5d\xd5\x54\x4b\x5d\xd6\x4f\x98\x52\x41\x5d\xd7\x5d\xd8\x52\x9e\x56\xb6\x5d\xd9\x5d\xda\x50\xbd\x53\xd6\x5d\xdb\x5d\xdc\x54\x54\x5d\xdd\x5d\xde\x4d\x68\xb8\xde\xb8\xdf\xb8\xe0\xb8\xe1\xb8\xe2\xb8\xe3\xb8\xe4\xb8\xe5\xb8\xe6\x4e\x8e\xb8\xe7\xb8\xe8\xb8\xe9\xb8\xea\x4b\xb8\x6a\xf7\xb8\xeb\x6a\xf8\xb8\xec\xb8\xed\x57\x84\xb8\xee\xb8\xef\xb8\xf0\xb8\xf1\xb8\xf2\xb8\xf3\xb8\xf4\xb8\xf5\x6b\x59\xb8\xf6\xb8\xf7\xb8\xf8\xb8\xf9\x66\x81\xb8\xfa\xb8\xfb\xb8\xfc\xb8\xfd\xb9\x41\xb9\x42\x58\x94\x4e\x5f\xb9\x43\xb9\x44\xb9\x45\xb9\x46\xb9\x47\xb9\x48\xb9\x49\x4d\xbf\x5a\xa4\xb9\x4a\xb9\x4b\xb9\x4c\xb9\x4d\xb9\x4e\xb9\x4f\xb9\x50\x61\x79\xb9\x51\xb9\x52\xb9\x53\xb9\x54\x6b\x95\x49\x4a\x49\xf1\xb9\x55\xb9\x56\xb9\x57\xb9\x58\xb9\x59", /* 8c80 */ "\xb9\x5a\xb9\x5b\x6b\x96\xb9\x5c\xb9\x5d\x6b\x98\xb9\x5e\xb9\x5f\xb9\x60\x4d\xd0\x6b\x97\xb9\x61\x52\x52\xb9\x62\xb9\x63\xb9\x64\xb9\x65\xb9\x66\xb9\x67\xb9\x68\x6b\x9a\xb9\x69\xb9\x6a\xb9\x6b\x6b\x99\xb9\x6c\xb9\x6d\xb9\x6e\xb9\x6f\xb9\x70\xb9\x71\xb9\x72\xb9\x73\xb9\x74\xb9\x75\xb9\x76\xb9\x77\xb9\x78\xb9\x79\xb9\x7a\xb9\x7b\xb9\x7c\xb9\x7d\xb9\x7e\xb9\x7f\xb9\x81\xb9\x82\xb9\x83\xb9\x84\xb9\x85\xb9\x86\xb9\x87\xb9\x88\xb9\x89\xb9\x8a\xb9\x8b\xb9\x8c\xb9\x8d\xb9\x8e\xb9\x8f\xb9\x90\xb9\x91\xb9\x92\xb9\x93\xb9\x94\xb9\x95\xb9\x96\xb9\x97\xb9\x98\xb9\x99\xb9\x9a\xb9\x9b\xb9\x9c\xb9\x9d\xb9\x9e\xb9\x9f\xb9\xa0\xb9\xa1\xb9\xa2\xb9\xa3\xb9\xa4\xb9\xa5\xb9\xa6\xb9\xa7\xb9\xa8\xb9\xa9\xb9\xaa\xb9\xab\xb9\xac\xb9\xad\xb9\xae\xb9\xaf\xb9\xb0\xb9\xb1\xb9\xb2\xb9\xb3\xb9\xb4\xb9\xb5\xb9\xb6\xb9\xb7\xb9\xb8\xb9\xb9\xb9\xba\xb9\xbb\xb9\xbc\xb9\xbd\xb9\xbe\xb9\xbf\xb9\xc0\xb9\xc1\xb9\xc2\xb9\xc3\xb9\xc4\xb9\xc5\xb9\xc6\xb9\xc7\xb9\xc8\xb9\xc9\xb9\xca\xb9\xcb\xb9\xcc\xb9\xcd\xb9\xce\xb9\xcf\xb9\xd0\xb9\xd1\xb9\xd2\xb9\xd3", /* 8d00 */ "\xb9\xd4\xb9\xd5\xb9\xd6\xb9\xd7\xb9\xd8\xb9\xd9\xb9\xda\xb9\xdb\xb9\xdc\xb9\xdd\xb9\xde\xb9\xdf\xb9\xe0\xb9\xe1\xb9\xe2\xb9\xe3\xb9\xe4\xb9\xe5\xb9\xe6\xb9\xe7\xb9\xe8\xb9\xe9\xb9\xea\xb9\xeb\xb9\xec\xb9\xed\xb9\xee\xb9\xef\xb9\xf0\x49\x54\x5b\x8b\x4c\xb9\xb9\xf1\x4d\x51\x49\xc5\x5a\xef\x58\x6d\x48\xdb\x5b\x6b\x4e\x96\x5b\xc9\x4c\x57\x56\xaf\x53\xb5\x49\x82\x4d\x5a\x5b\xfb\x4d\x82\x4c\x41\x4e\xf9\x65\xd9\x65\xda\x56\xf8\x4d\x94\x65\xdb\x4a\xfa\x52\x53\x4c\x71\x4d\xd7\x65\xdc\x5a\xf3\x65\xdd\x4e\xd5\x4e\x7f\x65\xde\x51\x7e\x51\xb7\x5a\xde\x5c\x6a\x65\xdf\x65\xe0\x65\xe3\x65\xe1\x65\xe2\x55\x7e\x4c\xb2\x4b\xc3\x65\xe4\x55\xe9\x55\x6d\x4a\xcc\xb9\xf2\xb9\xf3\x61\xd8\x53\x83\x65\xe5\x50\xb4\xb9\xf4\x5c\x58\x65\xe6\x5c\x4c\x54\xfb\x5c\xd2\x5c\xcc\x5a\xdd\xb9\xf5\x5a\xf8\x55\x64\x5a\x4e\x4c\xd2\x4a\x81\xb9\xf6\x55\x83\x6a\xf5\xb9\xf7\xb9\xf8\xb9\xf9\x4d\xd4\xb9\xfa\x6a\xf6\xb9\xfb\xb9\xfc\x5c\x7f\xb9\xfd\xba\x41\x6a\xf0\x4c\xaf\x5b\x74\x4c\xce\x53\xef\xba\x42\xba\x43\xba\x44\xba\x45\xba\x46\xba\x47\xba\x48\xba\x49", /* 8d80 */ "\xba\x4a\x4a\x63\xba\x4b\xba\x4c\x6a\xf1\x4a\x4c\xba\x4d\xba\x4e\xba\x4f\xba\x50\x5a\xbc\x54\x98\xba\x51\xba\x52\xba\x53\xba\x54\xba\x55\x6a\xf3\xba\x56\xba\x57\x6a\xf2\xba\x58\xba\x59\xba\x5a\xba\x5b\xba\x5c\xba\x5d\xba\x5e\xba\x5f\xba\x60\xba\x61\x56\xca\xba\x62\xba\x63\xba\x64\x54\xa3\xba\x65\xba\x66\xba\x67\xba\x68\xba\x69\xba\x6a\xba\x6b\xba\x6c\xba\x6d\xba\x6e\xba\x6f\xba\x70\xba\x71\x6a\xf4\xba\x72\x5c\x84\x53\x5f\x6b\x60\xba\x73\xba\x74\x6b\x5b\xba\x75\x6b\x63\xba\x76\x6b\x62\xba\x77\x5b\xb9\x6b\x61\xba\x78\xba\x79\xba\x7a\x5a\xbd\x6b\x64\xba\x7b\x6b\x6c\xba\x7c\xba\x7d\xba\x7e\xba\x7f\x48\xce\x4b\x99\xba\x81\x6b\x69\x6b\x6a\xba\x82\x53\x7c\xba\x83\xba\x84\xba\x85\xba\x86\x6b\x65\x6b\x66\xba\x87\xba\x88\x6b\x67\x6b\x6b\xba\x89\x4f\xdf\x6b\x68\x4c\xf9\xba\x8a\xba\x8b\xba\x8c\x6b\x70\x6b\x73\xba\x8d\xba\x8e\xba\x8f\x50\x88\xba\x90\x4d\x93\x6b\x5c\x6b\x6d\xba\x91\xba\x92\x51\xb6\xba\x93\xba\x94\xba\x95\x56\xf7\xba\x96\x4e\xf8\xba\x97\x6b\x6e\x6b\x6f\x6b\x71\x4b\xe4\x6b\x72\xba\x98\x6b\x75\xba\x99\xba\x9a", /* 8e00 */ "\xba\x9b\xba\x9c\xba\x9d\xba\x9e\xba\x9f\x6b\x5d\xba\xa0\xba\xa1\xba\xa2\x6b\x74\x5a\x5b\xba\xa3\x4a\x8d\xba\xa4\xba\xa5\x56\xa3\xba\xa6\xba\xa7\xba\xa8\xba\xa9\x6b\x76\xba\xaa\xba\xab\xba\xac\xba\xad\xba\xae\xba\xaf\xba\xb0\xba\xb1\x6b\x77\x4f\xe0\x6b\x78\xba\xb2\xba\xb3\x56\xde\x6b\x7b\xba\xb4\xba\xb5\xba\xb6\xba\xb7\xba\xb8\x49\xc7\x5c\x79\xba\xb9\x6b\x79\xba\xba\x6b\x7a\x6b\x7c\xba\xbb\x6b\x83\xba\xbc\xba\xbd\xba\xbe\x6b\x81\xba\xbf\xba\xc0\xba\xc1\x6b\x7f\x6b\x7d\xba\xc2\xba\xc3\x6b\x82\xba\xc4\xba\xc5\x6b\x7e\x6b\x85\x6b\x86\xba\xc6\x56\xe2\xba\xc7\xba\xc8\x63\x5f\x4b\x58\x6b\x84\x6b\x89\x56\xa2\xba\xc9\xba\xca\xba\xcb\xba\xcc\xba\xcd\x6b\x87\x6b\x88\xba\xce\xba\xcf\xba\xd0\xba\xd1\xba\xd2\xba\xd3\x6b\x5e\xba\xd4\xba\xd5\xba\xd6\xba\xd7\xba\xd8\xba\xd9\xba\xda\xba\xdb\xba\xdc\xba\xdd\xba\xde\xba\xdf\x49\x64\xba\xe0\xba\xe1\x6b\x5f\xba\xe2\xba\xe3\x4b\x65\x49\xe3\xba\xe4\x6b\x8d\x6b\x8a\xba\xe5\x4b\xd6\xba\xe6\x6b\x8e\xba\xe7\x6b\x8b\xba\xe8\xba\xe9\xba\xea\xba\xeb\xba\xec\x6b\x8c\xba\xed\xba\xee\x4a\xd9", /* 8e80 */ "\xba\xef\x5a\xe9\xba\xf0\xba\xf1\xba\xf2\x6b\x8f\xba\xf3\x4a\x9a\xba\xf4\xba\xf5\xba\xf6\xba\xf7\xba\xf8\xba\xf9\xba\xfa\x6b\x90\x6b\x92\xba\xfb\xba\xfc\xba\xfd\x6b\x91\xbb\x41\xbb\x42\xbb\x43\xbb\x44\xbb\x45\xbb\x46\xbb\x47\x6b\x93\xbb\x48\x6b\x94\xbb\x49\xbb\x4a\xbb\x4b\xbb\x4c\xbb\x4d\xbb\x4e\xbb\x4f\xbb\x50\xbb\x51\xbb\x52\xbb\x53\xbb\x54\x55\x8e\x4d\x4a\xbb\x55\xbb\x56\x54\x9c\xbb\x57\xbb\x58\x4b\xe2\xbb\x59\xbb\x5a\xbb\x5b\xbb\x5c\xbb\x5d\xbb\x5e\xbb\x5f\x56\xc8\xbb\x60\xbb\x61\xbb\x62\xbb\x63\xbb\x64\xbb\x65\xbb\x66\xbb\x67\xbb\x68\xbb\x69\xbb\x6a\xbb\x6b\xbb\x6c\xbb\x6d\xbb\x6e\xbb\x6f\xbb\x70\xbb\x71\xbb\x72\x65\xa5\xbb\x73\xbb\x74\xbb\x75\xbb\x76\xbb\x77\xbb\x78\xbb\x79\xbb\x7a\xbb\x7b\xbb\x7c\xbb\x7d\xbb\x7e\xbb\x7f\xbb\x81\xbb\x82\xbb\x83\xbb\x84\xbb\x85\xbb\x86\xbb\x87\xbb\x88\xbb\x89\xbb\x8a\xbb\x8b\xbb\x8c\xbb\x8d\xbb\x8e\xbb\x8f\xbb\x90\xbb\x91\xbb\x92\xbb\x93\xbb\x94\xbb\x95\xbb\x96\xbb\x97\xbb\x98\xbb\x99\xbb\x9a\xbb\x9b\xbb\x9c\xbb\x9d\xbb\x9e\xbb\x9f\xbb\xa0\xbb\xa1\xbb\xa2\xbb\xa3\xbb\xa4", /* 8f00 */ "\xbb\xa5\xbb\xa6\xbb\xa7\xbb\xa8\xbb\xa9\xbb\xaa\xbb\xab\xbb\xac\xbb\xad\xbb\xae\xbb\xaf\xbb\xb0\xbb\xb1\xbb\xb2\xbb\xb3\xbb\xb4\xbb\xb5\xbb\xb6\xbb\xb7\xbb\xb8\xbb\xb9\xbb\xba\xbb\xbb\xbb\xbc\xbb\xbd\xbb\xbe\xbb\xbf\xbb\xc0\xbb\xc1\xbb\xc2\xbb\xc3\xbb\xc4\xbb\xc5\xbb\xc6\xbb\xc7\xbb\xc8\xbb\xc9\xbb\xca\xbb\xcb\xbb\xcc\xbb\xcd\xbb\xce\xbb\xcf\xbb\xd0\xbb\xd1\xbb\xd2\xbb\xd3\xbb\xd4\xbb\xd5\xbb\xd6\xbb\xd7\xbb\xd8\xbb\xd9\xbb\xda\xbb\xdb\xbb\xdc\xbb\xdd\xbb\xde\xbb\xdf\xbb\xe0\xbb\xe1\xbb\xe2\xbb\xe3\xbb\xe4\xbb\xe5\xbb\xe6\xbb\xe7\xbb\xe8\xbb\xe9\xbb\xea\xbb\xeb\xbb\xec\xbb\xed\xbb\xee\xbb\xef\xbb\xf0\xbb\xf1\xbb\xf2\xbb\xf3\xbb\xf4\xbb\xf5\xbb\xf6\xbb\xf7\xbb\xf8\xbb\xf9\xbb\xfa\xbb\xfb\xbb\xfc\xbb\xfd\xbc\x41\xbc\x42\xbc\x43\xbc\x44\xbc\x45\xbc\x46\xbc\x47\xbc\x48\xbc\x49\xbc\x4a\xbc\x4b\xbc\x4c\xbc\x4d\x4a\x55\x5a\xfd\x4d\x8d\x58\xf8\xbc\x4e\x65\x8e\x5c\x4a\x65\x8f\x51\xd5\x54\xec\x4d\xe3\x65\x90\x65\x91\x65\x92\x5b\xe0\x65\x93\x65\x94\x65\x96\x65\x95\x65\x97\x65\x98\x54\x82\x65\x99\x5a\xd7\x65\x9a\x4f\x6e", /* 8f80 */ "\xbc\x4f\x65\x9b\x65\x9c\x4f\x6f\x65\x9d\x4c\xa7\x51\x5e\x65\x9e\x49\x52\x4e\x74\x4d\x96\x65\x9f\xbc\x50\x65\xa0\x65\xa1\x65\xa2\x4c\x99\x4e\xac\xbc\x51\x55\xe3\x60\xcd\x5a\xae\x58\x5d\x5b\x57\x65\xa3\x5b\x7e\x65\xa4\x58\xc0\x4d\x5c\xbc\x52\x4a\xc6\x49\x79\xbc\x53\xbc\x54\xbc\x55\x50\xb0\xbc\x56\xbc\x57\xbc\x58\xbc\x59\x49\x87\x49\x88\xbc\x5a\x49\x89\xbc\x5b\xbc\x5c\xbc\x5d\xbc\x5e\x4a\x5d\x54\xe7\xbc\x5f\xbc\x60\xbc\x61\xbc\x62\x63\x61\xbc\x63\xbc\x64\x49\x7f\xbc\x65\xbc\x66\xbc\x67\x51\x69\x4a\xee\xbc\x68\xbc\x69\x54\x48\x5a\x78\xbc\x6a\x53\xf8\x59\x58\xbc\x6b\x4d\x9e\x51\xf4\xbc\x6c\xbc\x6d\xbc\x6e\xbc\x6f\xbc\x70\x5a\x4d\xbc\x71\x5a\xca\x4f\x9d\xbc\x72\x63\x62\x4c\x55\x63\x63\xbc\x73\xbc\x74\x4e\x59\x5b\x83\xbc\x75\x4f\x99\x5a\xb5\x57\xa4\x51\x4c\x4a\x79\xbc\x76\xbc\x77\x56\xf5\xbc\x78\x63\x66\x63\x64\x63\x68\xbc\x79\x63\x6a\x63\x67\x4b\x6f\x53\xc7\xbc\x7a\x4b\x9d\x63\x65\xbc\x7b\x55\xf5\xbc\x7c\xbc\x7d\x63\x69\xbc\x7e\xbc\x7f\xbc\x81\x52\x74\x49\x65\x4e\xa2\xbc\x82\xbc\x83\xbc\x84\x5c\x57\xbc\x85\xbc\x86", /* 9000 */ "\x57\x6b\x56\x6d\x55\xc9\x56\xd2\x63\x6c\x63\x6b\x52\xe5\xbc\x87\xbc\x88\x59\x41\x59\x57\x63\x6d\xbc\x89\x63\x70\xbc\x8a\x57\x58\x5b\xef\x63\x6f\x4b\x7d\xbc\x8b\x57\x5e\xbc\x8c\x63\x71\x4b\xb9\xbc\x8d\xbc\x8e\x57\x48\x4d\x85\xbc\x8f\x55\xc4\x4a\x71\x56\x79\x5a\xeb\x63\x72\x4c\x8b\xbc\x90\xbc\x91\xbc\x92\x63\x6e\xbc\x93\xbc\x94\xbc\x95\xbc\x96\xbc\x97\xbc\x98\x63\x75\x4a\xfd\x63\x76\xbc\x99\xbc\x9a\xbc\x9b\xbc\x9c\xbc\x9d\x63\x73\x63\x74\xbc\x9e\x59\xdc\xbc\x9f\xbc\xa0\x51\xde\x49\x66\xbc\xa1\x5a\x83\xbc\xa2\xbc\xa3\x4b\xdc\x56\x8d\xbc\xa4\x63\x77\xbc\xa5\xbc\xa6\x5a\x97\xbc\xa7\xbc\xa8\xbc\xa9\xbc\xaa\xbc\xab\x49\x8a\xbc\xac\x4b\xf3\x63\x7a\x63\x78\x63\x79\x4b\x60\xbc\xad\xbc\xae\xbc\xaf\x59\xc4\x63\x7c\xbc\xb0\xbc\xb1\x63\x7e\xbc\xb2\xbc\xb3\xbc\xb4\xbc\xb5\xbc\xb6\xbc\xb7\x63\x7d\x54\x52\xbc\xb8\x59\xa2\xbc\xb9\xbc\xba\x63\x7b\xbc\xbb\xbc\xbc\xbc\xbd\xbc\xbe\x5a\xe1\x5b\x7a\xbc\xbf\xbc\xc0\xbc\xc1\xbc\xc2\xbc\xc3\x63\x81\x5c\x92\xbc\xc4\xbc\xc5\xbc\xc6\xbc\xc7\xbc\xc8\xbc\xc9\xbc\xca\x63\x82\xbc\xcb\x49\x7c", /* 9080 */ "\x59\x9c\xbc\xcc\x63\x83\x63\x85\xbc\xcd\xbc\xce\xbc\xcf\xbc\xd0\x63\x84\xbc\xd1\xbc\xd2\x63\x86\xbc\xd3\xbc\xd4\xbc\xd5\xbc\xd6\xbc\xd7\x59\xd7\xbc\xd8\x4b\x6b\xbc\xd9\x64\x7f\xbc\xda\x5d\xf4\xbc\xdb\x5d\xf7\xbc\xdc\x5d\xf5\xbc\xdd\x5d\xf6\xbc\xde\xbc\xdf\xbc\xe0\x5d\xf9\x58\xce\x52\xc6\xbc\xe1\xbc\xe2\x48\xed\xbc\xe3\xbc\xe4\xbc\xe5\x58\xaf\xbc\xe6\x5d\xf8\xbc\xe7\x5a\x6a\x4d\xa9\x5e\x42\x54\x92\xbc\xe8\x5d\xfb\x5d\xfa\x55\x7b\x5d\xfc\xbc\xe9\x5e\x41\x5c\x7e\x5d\xfd\x51\x7a\xbc\xea\xbc\xeb\x5e\x45\xbc\xec\xbc\xed\x5a\x95\xbc\xee\xbc\xef\x5e\x47\x5e\x44\xbc\xf0\x5e\x48\xbc\xf1\xbc\xf2\x4f\x5c\xbc\xf3\xbc\xf4\xbc\xf5\x50\xc8\x5e\x43\x5e\x46\x5b\xa2\xbc\xf6\x5e\x49\xbc\xf7\xbc\xf8\xbc\xf9\x5e\x4d\xbc\xfa\xbc\xfb\xbc\xfc\x5e\x4e\x5e\x4c\x4d\xc1\xbc\xfd\xbd\x41\xbd\x42\x50\x44\x5e\x4b\xbd\x43\xbd\x44\xbd\x45\x5e\x4a\x5a\xc6\x49\xbe\xbd\x46\xbd\x47\x5e\x4f\xbd\x48\x4d\x9a\xbd\x49\x5e\x50\xbd\x4a\xbd\x4b\xbd\x4c\xbd\x4d\x4a\x5b\xbd\x4e\xbd\x4f\xbd\x50\x4b\x46\xbd\x51\xbd\x52\xbd\x53\xbd\x54\x4b\xbb\x5e\x51\xbd\x55", /* 9100 */ "\xbd\x56\xbd\x57\x4b\xf4\xbd\x58\x5e\x52\xbd\x59\xbd\x5a\xbd\x5b\xbd\x5c\xbd\x5d\xbd\x5e\xbd\x5f\xbd\x60\xbd\x61\xbd\x62\xbd\x63\xbd\x64\xbd\x65\xbd\x66\xbd\x67\xbd\x68\xbd\x69\xbd\x6a\xbd\x6b\xbd\x6c\x49\x69\xbd\x6d\xbd\x6e\xbd\x6f\xbd\x70\x5e\x54\xbd\x71\xbd\x72\xbd\x73\x5e\x53\x5e\x55\xbd\x74\xbd\x75\xbd\x76\xbd\x77\xbd\x78\xbd\x79\xbd\x7a\xbd\x7b\xbd\x7c\xbd\x7d\xbd\x7e\x5e\x57\xbd\x7f\x5e\x56\xbd\x81\xbd\x82\xbd\x83\xbd\x84\xbd\x85\xbd\x86\xbd\x87\x5e\x58\xbd\x88\xbd\x89\xbd\x8a\xbd\x8b\xbd\x8c\xbd\x8d\xbd\x8e\xbd\x8f\xbd\x90\x5e\x59\xbd\x91\xbd\x92\x5e\x5a\xbd\x93\xbd\x94\x5a\x6f\x6a\xf9\x54\x96\x5c\x63\x53\x85\x6a\xfb\x6a\xfc\x6a\xfa\xbd\x95\x4f\xc5\xbd\x96\xbd\x97\xbd\x98\xbd\x99\x58\xee\xbd\x9a\xbd\x9b\x4c\x73\xbd\x9c\xbd\x9d\x5a\xcc\x56\xa9\xbd\x9e\xbd\x9f\x6b\x42\x6b\x41\x4d\xa7\x6a\xfd\x56\x76\xbd\xa0\xbd\xa1\xbd\xa2\x6b\x44\x50\xd1\xbd\xa3\x4a\x8b\xbd\xa4\x57\x4a\x6b\x45\x6b\x43\x4f\x54\x6b\x48\xbd\xa5\x6b\x49\x4f\x6d\x52\x58\x50\x82\x56\x82\x6b\x4a\xbd\xa6\xbd\xa7\xbd\xa8\x6b\x46\x6b\x47\x52\xef", /* 9180 */ "\xbd\xa9\xbd\xaa\xbd\xab\xbd\xac\xbd\xad\x6b\x4c\xbd\xae\x4a\xbb\xbd\xaf\x5c\x8e\xbd\xb0\x4a\xd6\x6b\x4b\x6b\x4e\xbd\xb1\xbd\xb2\x6b\x4d\x6b\x4f\x58\xd0\xbd\xb3\xbd\xb4\xbd\xb5\xbd\xb6\xbd\xb7\xbd\xb8\xbd\xb9\x52\x71\x54\xa8\xbd\xba\xbd\xbb\xbd\xbc\xbd\xbd\xbd\xbe\xbd\xbf\x6b\x50\x6b\x51\xbd\xc0\xbd\xc1\xbd\xc2\xbd\xc3\xbd\xc4\xbd\xc5\x6b\x52\xbd\xc6\xbd\xc7\x6b\x53\x6b\x54\x6b\x55\xbd\xc8\xbd\xc9\xbd\xca\xbd\xcb\x6b\x57\x6b\x56\xbd\xcc\xbd\xcd\xbd\xce\xbd\xcf\x6b\x58\xbd\xd0\xbd\xd1\xbd\xd2\xbd\xd3\xbd\xd4\xbd\xd5\xbd\xd6\xbd\xd7\xbd\xd8\xbd\xd9\xbd\xda\xbd\xdb\x49\xc8\xbd\xdc\x5a\x74\x55\xcc\xbd\xdd\x50\xee\x5b\xd7\x59\xaf\x51\x5f\xbd\xde\x4f\x91\xbd\xdf\xbd\xe0\xbd\xe1\xbd\xe2\xbd\xe3\xbd\xe4\xbd\xe5\xbd\xe6\xbd\xe7\xbd\xe8\x4c\xa9\xbd\xe9\xbd\xea\xbd\xeb\xbd\xec\xbd\xed\xbd\xee\xbd\xef\xbd\xf0\xbd\xf1\xbd\xf2\xbd\xf3\xbd\xf4\xbd\xf5\xbd\xf6\xbd\xf7\xbd\xf8\xbd\xf9\xbd\xfa\xbd\xfb\xbd\xfc\xbd\xfd\xbe\x41\xbe\x42\xbe\x43\xbe\x44\xbe\x45\xbe\x46\xbe\x47\xbe\x48\xbe\x49\xbe\x4a\xbe\x4b\xbe\x4c\xbe\x4d\xbe\x4e", /* 9200 */ "\xbe\x4f\xbe\x50\xbe\x51\xbe\x52\xbe\x53\xbe\x54\xbe\x55\xbe\x56\xbe\x57\xbe\x58\xbe\x59\xbe\x5a\xbe\x5b\xbe\x5c\xbe\x5d\xbe\x5e\xbe\x5f\xbe\x60\xbe\x61\xbe\x62\xbe\x63\xbe\x64\xbe\x65\xbe\x66\xbe\x67\xbe\x68\xbe\x69\xbe\x6a\xbe\x6b\xbe\x6c\xbe\x6d\xbe\x6e\xbe\x6f\xbe\x70\xbe\x71\xbe\x72\xbe\x73\xbe\x74\xbe\x75\xbe\x76\xbe\x77\xbe\x78\xbe\x79\xbe\x7a\xbe\x7b\xbe\x7c\xbe\x7d\xbe\x7e\xbe\x7f\xbe\x81\xbe\x82\xbe\x83\xbe\x84\xbe\x85\xbe\x86\xbe\x87\xbe\x88\xbe\x89\xbe\x8a\xbe\x8b\xbe\x8c\xbe\x8d\xbe\x8e\xbe\x8f\xbe\x90\xbe\x91\xbe\x92\xbe\x93\xbe\x94\xbe\x95\xbe\x96\xbe\x97\xbe\x98\xbe\x99\xbe\x9a\xbe\x9b\xbe\x9c\xbe\x9d\xbe\x9e\xbe\x9f\xbe\xa0\xbe\xa1\xbe\xa2\xbe\xa3\xbe\xa4\xbe\xa5\xbe\xa6\xbe\xa7\xbe\xa8\xbe\xa9\xbe\xaa\xbe\xab\xbe\xac\xbe\xad\xbe\xae\xbe\xaf\xbe\xb0\xbe\xb1\xbe\xb2\xbe\xb3\xbe\xb4\xbe\xb5\xbe\xb6\xbe\xb7\xbe\xb8\xbe\xb9\xbe\xba\xbe\xbb\xbe\xbc\xbe\xbd\xbe\xbe\xbe\xbf\xbe\xc0\xbe\xc1\xbe\xc2\xbe\xc3\x4e\xf7\xbe\xc4\xbe\xc5\xbe\xc6\xbe\xc7\xbe\xc8\xbe\xc9\xbe\xca\xbe\xcb\xbe\xcc\xbe\xcd\xbe\xce", /* 9280 */ "\xbe\xcf\xbe\xd0\xbe\xd1\xbe\xd2\xbe\xd3\xbe\xd4\xbe\xd5\xbe\xd6\xbe\xd7\xbe\xd8\xbe\xd9\xbe\xda\xbe\xdb\xbe\xdc\x6b\xc5\xbe\xdd\xbe\xde\xbe\xdf\xbe\xe0\xbe\xe1\xbe\xe2\xbe\xe3\xbe\xe4\xbe\xe5\xbe\xe6\xbe\xe7\xbe\xe8\xbe\xe9\xbe\xea\xbe\xeb\xbe\xec\xbe\xed\xbe\xee\xbe\xef\xbe\xf0\xbe\xf1\xbe\xf2\xbe\xf3\xbe\xf4\xbe\xf5\xbe\xf6\xbe\xf7\xbe\xf8\xbe\xf9\xbe\xfa\xbe\xfb\x6b\xc6\xbe\xfc\xbe\xfd\xbf\x41\xbf\x42\xbf\x43\xbf\x44\xbf\x45\xbf\x46\xbf\x47\xbf\x48\xbf\x49\xbf\x4a\xbf\x4b\xbf\x4c\xbf\x4d\xbf\x4e\xbf\x4f\xbf\x50\xbf\x51\xbf\x52\xbf\x53\xbf\x54\xbf\x55\xbf\x56\xbf\x57\x6b\xc7\xbf\x58\xbf\x59\xbf\x5a\xbf\x5b\xbf\x5c\xbf\x5d\xbf\x5e\xbf\x5f\xbf\x60\xbf\x61\xbf\x62\xbf\x63\xbf\x64\xbf\x65\xbf\x66\xbf\x67\xbf\x68\xbf\x69\xbf\x6a\xbf\x6b\xbf\x6c\xbf\x6d\xbf\x6e\xbf\x6f\xbf\x70\xbf\x71\xbf\x72\xbf\x73\xbf\x74\xbf\x75\xbf\x76\xbf\x77\xbf\x78\xbf\x79\xbf\x7a\xbf\x7b\xbf\x7c\xbf\x7d\xbf\x7e\xbf\x7f\xbf\x81\xbf\x82\xbf\x83\xbf\x84\xbf\x85\xbf\x86\xbf\x87\xbf\x88\xbf\x89\xbf\x8a\xbf\x8b\xbf\x8c\xbf\x8d\xbf\x8e\xbf\x8f", /* 9300 */ "\xbf\x90\xbf\x91\xbf\x92\xbf\x93\xbf\x94\xbf\x95\xbf\x96\xbf\x97\xbf\x98\xbf\x99\xbf\x9a\xbf\x9b\xbf\x9c\xbf\x9d\xbf\x9e\xbf\x9f\xbf\xa0\xbf\xa1\xbf\xa2\xbf\xa3\xbf\xa4\xbf\xa5\xbf\xa6\xbf\xa7\xbf\xa8\xbf\xa9\xbf\xaa\xbf\xab\xbf\xac\xbf\xad\xbf\xae\xbf\xaf\xbf\xb0\xbf\xb1\xbf\xb2\xbf\xb3\xbf\xb4\xbf\xb5\xbf\xb6\xbf\xb7\xbf\xb8\xbf\xb9\xbf\xba\xbf\xbb\xbf\xbc\xbf\xbd\xbf\xbe\xbf\xbf\xbf\xc0\xbf\xc1\xbf\xc2\xbf\xc3\xbf\xc4\xbf\xc5\xbf\xc6\xbf\xc7\xbf\xc8\xbf\xc9\xbf\xca\xbf\xcb\xbf\xcc\xbf\xcd\x6b\xc8\xbf\xce\xbf\xcf\xbf\xd0\xbf\xd1\xbf\xd2\xbf\xd3\xbf\xd4\xbf\xd5\xbf\xd6\xbf\xd7\xbf\xd8\xbf\xd9\xbf\xda\xbf\xdb\xbf\xdc\xbf\xdd\xbf\xde\xbf\xdf\xbf\xe0\xbf\xe1\xbf\xe2\xbf\xe3\xbf\xe4\xbf\xe5\xbf\xe6\xbf\xe7\xbf\xe8\xbf\xe9\xbf\xea\xbf\xeb\xbf\xec\xbf\xed\xbf\xee\xbf\xef\xbf\xf0\xbf\xf1\xbf\xf2\xbf\xf3\xbf\xf4\xbf\xf5\xbf\xf6\xbf\xf7\xbf\xf8\x6b\xc9\xbf\xf9\xbf\xfa\xbf\xfb\xbf\xfc\xbf\xfd\xc0\x41\xc0\x42\xc0\x43\xc0\x44\xc0\x45\xc0\x46\xc0\x47\xc0\x48\xc0\x49\xc0\x4a\xc0\x4b\xc0\x4c\xc0\x4d\xc0\x4e\xc0\x4f\xc0\x50", /* 9380 */ "\xc0\x51\xc0\x52\xc0\x53\xc0\x54\xc0\x55\xc0\x56\xc0\x57\xc0\x58\xc0\x59\xc0\x5a\xc0\x5b\xc0\x5c\xc0\x5d\xc0\x5e\xc0\x5f\x6b\xcb\xc0\x60\xc0\x61\xc0\x62\xc0\x63\xc0\x64\xc0\x65\xc0\x66\xc0\x67\xc0\x68\xc0\x69\xc0\x6a\xc0\x6b\xc0\x6c\xc0\x6d\xc0\x6e\xc0\x6f\xc0\x70\xc0\x71\xc0\x72\xc0\x73\xc0\x74\xc0\x75\xc0\x76\xc0\x77\xc0\x78\xc0\x79\xc0\x7a\xc0\x7b\xc0\x7c\xc0\x7d\xc0\x7e\xc0\x7f\xc0\x81\xc0\x82\xc0\x83\xc0\x84\xc0\x85\xc0\x86\xc0\x87\xc0\x88\xc0\x89\xc0\x8a\xc0\x8b\xc0\x8c\xc0\x8d\xc0\x8e\xc0\x8f\xc0\x90\xc0\x91\xc0\x92\xc0\x93\xc0\x94\xc0\x95\xc0\x96\xc0\x97\xc0\x98\xc0\x99\xc0\x9a\x6b\xca\xc0\x9b\xc0\x9c\xc0\x9d\xc0\x9e\xc0\x9f\xc0\xa0\xc0\xa1\xc0\xa2\xc0\xa3\xc0\xa4\xc0\xa5\x6c\x8a\xc0\xa6\xc0\xa7\xc0\xa8\xc0\xa9\xc0\xaa\xc0\xab\xc0\xac\xc0\xad\xc0\xae\xc0\xaf\xc0\xb0\xc0\xb1\xc0\xb2\xc0\xb3\xc0\xb4\xc0\xb5\xc0\xb6\xc0\xb7\xc0\xb8\xc0\xb9\xc0\xba\xc0\xbb\xc0\xbc\xc0\xbd\xc0\xbe\xc0\xbf\xc0\xc0\xc0\xc1\xc0\xc2\xc0\xc3\xc0\xc4\xc0\xc5\xc0\xc6\xc0\xc7\xc0\xc8\xc0\xc9\xc0\xca\xc0\xcb\xc0\xcc\xc0\xcd\xc0\xce", /* 9400 */ "\xc0\xcf\xc0\xd0\xc0\xd1\xc0\xd2\xc0\xd3\xc0\xd4\xc0\xd5\xc0\xd6\xc0\xd7\xc0\xd8\xc0\xd9\xc0\xda\xc0\xdb\xc0\xdc\xc0\xdd\xc0\xde\xc0\xdf\xc0\xe0\xc0\xe1\xc0\xe2\xc0\xe3\xc0\xe4\xc0\xe5\xc0\xe6\xc0\xe7\xc0\xe8\xc0\xe9\xc0\xea\xc0\xeb\xc0\xec\xc0\xed\xc0\xee\xc0\xef\xc0\xf0\xc0\xf1\xc0\xf2\xc0\xf3\xc0\xf4\xc0\xf5\xc0\xf6\xc0\xf7\xc0\xf8\xc0\xf9\xc0\xfa\xc0\xfb\xc0\xfc\xc0\xfd\xc1\x41\xc1\x42\xc1\x43\xc1\x44\xc1\x45\xc1\x46\xc1\x47\xc1\x48\xc1\x49\xc1\x4a\xc1\x4b\xc1\x4c\xc1\x4d\xc1\x4e\xc1\x4f\x6b\xcc\xc1\x50\xc1\x51\xc1\x52\xc1\x53\xc1\x54\xc1\x55\xc1\x56\xc1\x57\xc1\x58\xc1\x59\xc1\x5a\xc1\x5b\xc1\x5c\xc1\x5d\xc1\x5e\xc1\x5f\xc1\x60\xc1\x61\xc1\x62\xc1\x63\xc1\x64\xc1\x65\xc1\x66\xc1\x67\xc1\x68\xc1\x69\xc1\x6a\xc1\x6b\xc1\x6c\xc1\x6d\xc1\x6e\xc1\x6f\xc1\x70\xc1\x71\xc1\x72\xc1\x73\xc1\x74\xc1\x75\xc1\x76\xc1\x77\xc1\x78\xc1\x79\xc1\x7a\xc1\x7b\x6b\xcd\xc1\x7c\xc1\x7d\xc1\x7e\xc1\x7f\xc1\x81\xc1\x82\xc1\x83\xc1\x84\xc1\x85\xc1\x86\xc1\x87\xc1\x88\xc1\x89\xc1\x8a\xc1\x8b\xc1\x8c\xc1\x8d\xc1\x8e\xc1\x8f\xc1\x90", /* 9480 */ "\xc1\x91\xc1\x92\xc1\x93\xc1\x94\xc1\x95\x67\xc3\x67\xc4\x67\xc5\x5b\x8c\x4b\xa3\x67\xc7\x67\xc6\x67\xc8\x67\xc9\x54\x45\x67\xca\x67\xcb\xc1\x96\x4c\x50\x4b\x97\x67\xcc\x67\xce\xc1\x97\x67\xcd\xc1\x98\x4c\xc5\x67\xcf\x67\xd0\x67\xd1\x4b\xda\x4a\x4e\x5b\xd2\x52\xc5\x49\x55\x4c\xd5\x67\xd2\x67\xd3\x5a\xbe\x54\x75\x4f\xfa\x57\xd8\x4d\x53\x67\xd5\x67\xd4\x67\xd7\x67\xd6\x53\x45\x67\xd8\x67\xd9\x54\x4e\x67\xda\x54\x4f\x67\xdb\x49\xa6\x67\xdc\x67\xdd\x67\xde\x67\xdf\x67\xe0\x5c\x8b\x67\xe1\x67\xe2\x4e\xd7\x67\xe3\x5a\x6b\x56\xf9\x49\xab\x51\x86\x67\xe4\x54\x46\x52\x4d\xc1\x99\x67\xe5\x67\xe6\x67\xe7\x67\xe8\x67\xe9\x67\xea\x67\xeb\xc1\x9a\x67\xec\x67\xed\x67\xee\xc1\x9b\xc1\x9c\x67\xef\x67\xf0\x67\xf1\x67\xf3\x67\xf2\xc1\x9d\x67\xf4\x57\x4d\x51\xc0\x67\xf5\x67\xf6\x67\xf7\x5b\x41\x67\xf8\x58\x53\x67\xf9\x67\xfa\xc1\x9e\x67\xfb\x67\xfc\x68\x41\x67\xfd\x68\x42\x4c\xf4\x52\x9b\x68\x43\x68\x44\x4f\x62\x59\xbe\x49\xf8\x68\x45\x68\x46\x68\x47\x59\xf7\x68\x48\x5b\xfc\x68\x49\x53\xcb\xc1\x9f\x68\x4a\x68\x4b\x51\x54\x68\x4c", /* 9500 */ "\x58\x9b\x56\x99\x68\x4e\x68\x4d\x4a\x9b\x4d\x99\x68\x4f\x68\x50\x58\xe1\x68\x51\x68\x52\x4c\x87\x58\xbe\x68\x53\x68\x54\x68\x55\x54\xf0\x56\xdf\x68\x56\x68\x57\x68\x58\x68\x59\x68\x5a\x5b\x81\x68\x5b\x4a\xec\x52\x4a\x68\x5c\xc1\xa0\x68\x5d\x68\x5e\x68\x5f\xc1\xa1\x57\xfc\x68\x60\x51\xdf\x4a\xb7\x5c\x56\x4f\x96\xc1\xa2\x58\x67\x68\x63\x68\x61\x68\x62\x68\x64\x4b\xa6\x4e\xfb\x4f\xe1\x52\x6c\x68\x65\x68\x66\xc1\xa3\x68\x67\x68\x6f\x68\x68\x68\x69\x68\x6a\x54\x62\x68\x92\x4b\xcc\x68\x6b\xc1\xa4\x68\x6c\x68\x6d\x4b\xc5\x52\x5e\x68\x6e\xc1\xa5\x68\x70\x68\x71\x68\x72\x5b\x93\xc1\xa6\x68\x73\x52\xf6\xc1\xa7\x68\x74\x52\xf7\x68\x75\x68\x76\x4c\xe3\x48\xf6\x68\x77\x68\x78\x68\x79\xc1\xa8\x68\x7a\x68\x7b\x68\x7c\x68\x7d\xc1\xa9\x68\x7e\x4f\xb4\x68\x82\x68\x7f\x68\x81\xc1\xaa\x68\x83\x68\x84\x51\x6d\x68\x85\x68\x86\x68\x87\x68\x88\x68\x89\x68\x8a\x68\x8b\x68\x8c\x68\x8d\x50\xd7\xc1\xab\x68\x8e\x51\x4d\x68\x8f\x68\x90\x68\x91\xc1\xac\xc1\xad\x58\x83\xc1\xae\xc1\xaf\xc1\xb0\xc1\xb1\xc1\xb2\xc1\xb3\xc1\xb4\xc1\xb5\x4a\x44", /* 9580 */ "\xc1\xb6\xc1\xb7\xc1\xb8\xc1\xb9\xc1\xba\xc1\xbb\xc1\xbc\xc1\xbd\xc1\xbe\xc1\xbf\xc1\xc0\xc1\xc1\xc1\xc2\xc1\xc3\xc1\xc4\xc1\xc5\xc1\xc6\xc1\xc7\xc1\xc8\xc1\xc9\xc1\xca\xc1\xcb\xc1\xcc\xc1\xcd\xc1\xce\xc1\xcf\xc1\xd0\xc1\xd1\xc1\xd2\xc1\xd3\xc1\xd4\xc1\xd5\xc1\xd6\xc1\xd7\xc1\xd8\xc1\xd9\xc1\xda\xc1\xdb\xc1\xdc\xc1\xdd\xc1\xde\xc1\xdf\xc1\xe0\xc1\xe1\xc1\xe2\xc1\xe3\xc1\xe4\xc1\xe5\xc1\xe6\xc1\xe7\xc1\xe8\xc1\xe9\xc1\xea\xc1\xeb\xc1\xec\xc1\xed\xc1\xee\xc1\xef\xc1\xf0\xc1\xf1\xc1\xf2\xc1\xf3\xc1\xf4\xc1\xf5\xc1\xf6\xc1\xf7\xc1\xf8\xc1\xf9\xc1\xfa\xc1\xfb\xc1\xfc\xc1\xfd\xc2\x41\xc2\x42\xc2\x43\xc2\x44\xc2\x45\xc2\x46\xc2\x47\xc2\x48\xc2\x49\xc2\x4a\xc2\x4b\xc2\x4c\xc2\x4d\xc2\x4e\xc2\x4f\xc2\x50\xc2\x51\xc2\x52\xc2\x53\xc2\x54\xc2\x55\xc2\x56\xc2\x57\xc2\x58\xc2\x59\xc2\x5a\xc2\x5b\xc2\x5c\xc2\x5d\xc2\x5e\xc2\x5f\xc2\x60\x52\x65\x62\x65\x55\x61\x62\x66\xc2\x61\x49\x75\x57\xc9\x4a\xb2\x54\xf1\x62\x67\x58\x70\x62\x68\x4e\xe3\x62\x69\x62\x6a\x52\x66\x5b\x42\x52\xd5\x4d\x8c\x57\xc4\x62\x6b\x52\x97\x62\x6c\xc2\x62", /* 9600 */ "\x4c\x47\x4c\xf2\x4d\xd1\x62\x6d\x62\x6e\x5a\xc3\x62\x6f\xc2\x63\x62\x70\x59\x6b\x62\x71\x62\x72\x62\x73\x62\x74\x59\x76\x62\x75\x49\xfa\x50\xba\x62\x76\xc2\x64\x50\xaa\x62\x77\x62\x78\x62\x79\xc2\x65\x62\x7a\x62\x7b\xc2\x66\x4c\xb6\x5d\xe1\xc2\x67\x4b\xd2\xc2\x68\x5d\xe3\x5d\xe2\xc2\x69\xc2\x6a\xc2\x6b\xc2\x6c\xc2\x6d\xc2\x6e\xc2\x6f\x5d\xe5\xc2\x70\xc2\x71\xc2\x72\x54\xed\xc2\x73\xc2\x74\x5d\xe4\x4c\x60\x59\x95\x59\xf4\x5b\x94\x4f\x77\xc2\x75\xc2\x76\xc2\x77\xc2\x78\x5c\x89\x5d\xe7\x5d\xe6\xc2\x79\x48\xa1\x57\x73\xc2\x7a\x5d\xe8\xc2\x7b\x4c\xbc\x4e\xc9\x51\xbc\x51\xa3\x4a\x62\x5d\xe9\xc2\x7c\x51\xa9\x52\xaf\x4f\x55\xc2\x7d\xc2\x7e\x58\x7e\xc2\x7f\xc2\x81\xc2\x82\x5d\xea\x55\x62\xc2\x83\xc2\x84\xc2\x85\xc2\x86\xc2\x87\x49\x7d\xc2\x88\xc2\x89\xc2\x8a\x5d\xeb\xc2\x8b\x4b\xb7\x5a\xb9\xc2\x8c\x4a\x9e\xc2\x8d\xc2\x8e\x5d\xec\x5a\xc8\x58\x75\x53\x84\xc2\x8f\x5d\xed\xc2\x90\xc2\x91\xc2\x92\xc2\x93\xc2\x94\x5d\xee\xc2\x95\x5d\xef\x51\x8b\x56\xd4\x58\x7d\xc2\x96\xc2\x97\xc2\x98\xc2\x99\xc2\x9a\xc2\x9b\xc2\x9c\xc2\x9d", /* 9680 */ "\xc2\x9e\xc2\x9f\xc2\xa0\xc2\xa1\xc2\xa2\x5a\x88\x51\xa0\xc2\xa3\x5d\xf0\xc2\xa4\xc2\xa5\x56\x86\xc2\xa6\x5d\xf1\xc2\xa7\x56\x87\x59\xfd\xc2\xa8\xc2\xa9\xc2\xaa\x4c\xf3\xc2\xab\xc2\xac\x5d\xf2\x48\xae\x58\x56\xc2\xad\xc2\xae\x5b\x6f\xc2\xaf\xc2\xb0\xc2\xb1\xc2\xb2\xc2\xb3\xc2\xb4\xc2\xb5\xc2\xb6\xc2\xb7\xc2\xb8\x56\x8e\xc2\xb9\xc2\xba\xc2\xbb\xc2\xbc\xc2\xbd\xc2\xbe\xc2\xbf\xc2\xc0\x5d\xf3\xc2\xc1\xc2\xc2\x62\x64\xc2\xc3\xc2\xc4\x51\x45\xc2\xc5\xc2\xc6\x6b\xbe\xc2\xc7\xc2\xc8\x6b\xbf\x6b\xc0\x52\xd0\xc2\xc9\x54\xb7\x59\x84\xc2\xca\xc2\xcb\x58\xda\x59\x65\x4e\xae\x4d\x6d\xc2\xcc\x68\x95\xc2\xcd\xc2\xce\x4a\xc5\x5a\x5a\x6b\xc1\x4a\x9c\xc2\xcf\xc2\xd0\x6b\xc2\xc2\xd1\xc2\xd2\x4b\x92\xc2\xd3\xc2\xd4\xc2\xd5\xc2\xd6\xc2\xd7\xc2\xd8\xc2\xd9\xc2\xda\xc2\xdb\xc2\xdc\x6b\xc4\xc2\xdd\xc2\xde\xc2\xdf\xc2\xe0\xc2\xe1\xc2\xe2\xc2\xe3\x5a\x8b\x6b\xa6\x59\x49\xc2\xe4\xc2\xe5\xc2\xe6\xc2\xe7\x6b\xa8\xc2\xe8\xc2\xe9\xc2\xea\x6b\xa7\xc2\xeb\xc2\xec\x51\x84\x50\xd6\xc2\xed\x49\x42\xc2\xee\xc2\xef\xc2\xf0\xc2\xf1\x57\xec\xc2\xf2", /* 9700 */ "\x58\xe7\x6b\xaa\xc2\xf3\xc2\xf4\x58\x97\xc2\xf5\x6b\xa9\x5b\x91\x6b\xab\x52\x59\xc2\xf6\xc2\xf7\xc2\xf8\x4e\x95\x6b\xad\x6b\xac\xc2\xf9\xc2\xfa\xc2\xfb\x52\xdd\xc2\xfc\xc2\xfd\x51\x78\xc3\x41\xc3\x42\xc3\x43\xc3\x44\xc3\x45\x56\x4a\xc3\x46\x58\x5c\xc3\x47\xc3\x48\xc3\x49\xc3\x4a\xc3\x4b\xc3\x4c\xc3\x4d\xc3\x4e\xc3\x4f\xc3\x50\xc3\x51\x6b\xae\xc3\x52\xc3\x53\x6b\xaf\xc3\x54\xc3\x55\x6b\xb0\xc3\x56\x51\xb5\xc3\x57\xc3\x58\xc3\x59\xc3\x5a\xc3\x5b\x48\xd3\x53\x9a\xc3\x5c\xc3\x5d\xc3\x5e\xc3\x5f\x6b\xb1\xc3\x60\xc3\x61\xc3\x62\xc3\x63\xc3\x64\xc3\x65\xc3\x66\xc3\x67\xc3\x68\xc3\x69\xc3\x6a\xc3\x6b\xc3\x6c\xc3\x6d\xc3\x6e\xc3\x6f\xc3\x70\xc3\x71\xc3\x72\x54\x81\x6b\xa5\xc3\x73\xc3\x74\x4f\xb7\xc3\x75\xc3\x76\x4f\xb1\xc3\x77\x4b\x86\xc3\x78\xc3\x79\x4c\x67\xc3\x7a\x50\x5f\x52\x72\x52\x87\xc3\x7b\xc3\x7c\x5c\xcb\xc3\x7d\xc3\x7e\xc3\x7f\x4c\xee\xc3\x81\xc3\x82\xc3\x83\xc3\x84\xc3\x85\xc3\x86\xc3\x87\xc3\x88\xc3\x89\x4f\x9a\x59\x45\xc3\x8a\x48\xcf\xc3\x8b\xc3\x8c\xc3\x8d\xc3\x8e\xc3\x8f\x6c\x50\xc3\x90\xc3\x91\xc3\x92", /* 9780 */ "\xc3\x93\xc3\x94\xc3\x95\xc3\x96\xc3\x97\x6c\x51\xc3\x98\xc3\x99\xc3\x9a\xc3\x9b\xc3\x9c\x58\xab\xc3\x9d\x48\xaf\xc3\x9e\xc3\x9f\xc3\xa0\x6c\x52\x6c\x53\xc3\xa1\x6c\x54\xc3\xa2\xc3\xa3\xc3\xa4\x54\x6a\xc3\xa5\xc3\xa6\xc3\xa7\xc3\xa8\xc3\xa9\xc3\xaa\xc3\xab\x4f\xce\xc3\xac\xc3\xad\x6c\x57\xc3\xae\xc3\xaf\xc3\xb0\xc3\xb1\xc3\xb2\xc3\xb3\xc3\xb4\x6c\x56\xc3\xb5\x49\x7e\xc3\xb6\x6c\x55\xc3\xb7\xc3\xb8\x6c\x58\xc3\xb9\x6c\x59\xc3\xba\xc3\xbb\xc3\xbc\xc3\xbd\xc3\xbe\xc3\xbf\xc3\xc0\xc3\xc1\xc3\xc2\xc3\xc3\xc3\xc4\xc3\xc5\xc3\xc6\xc3\xc7\xc3\xc8\xc3\xc9\xc3\xca\xc3\xcb\xc3\xcc\xc3\xcd\xc3\xce\xc3\xcf\xc3\xd0\xc3\xd1\xc3\xd2\xc3\xd3\xc3\xd4\xc3\xd5\xc3\xd6\xc3\xd7\xc3\xd8\xc3\xd9\xc3\xda\xc3\xdb\xc3\xdc\xc3\xdd\xc3\xde\xc3\xdf\xc3\xe0\xc3\xe1\xc3\xe2\xc3\xe3\xc3\xe4\xc3\xe5\xc3\xe6\xc3\xe7\xc3\xe8\xc3\xe9\xc3\xea\x57\xa3\x54\xcc\xc3\xeb\x4d\xaa\x64\xb7\x64\xb8\x64\xb9\x4f\xc1\xc3\xec\xc3\xed\xc3\xee\xc3\xef\xc3\xf0\x59\xf3\xc3\xf1\x5a\xce\x55\x78\xc3\xf2\xc3\xf3\xc3\xf4\xc3\xf5\xc3\xf6\xc3\xf7\xc3\xf8\xc3\xf9\xc3\xfa", /* 9800 */ "\xc3\xfb\xc3\xfc\xc3\xfd\xc4\x41\xc4\x42\xc4\x43\xc4\x44\xc4\x45\xc4\x46\xc4\x47\xc4\x48\xc4\x49\xc4\x4a\xc4\x4b\xc4\x4c\xc4\x4d\xc4\x4e\xc4\x4f\xc4\x50\xc4\x51\xc4\x52\xc4\x53\xc4\x54\xc4\x55\xc4\x56\xc4\x57\xc4\x58\xc4\x59\xc4\x5a\xc4\x5b\xc4\x5c\xc4\x5d\xc4\x5e\xc4\x5f\xc4\x60\xc4\x61\xc4\x62\xc4\x63\xc4\x64\xc4\x65\xc4\x66\xc4\x67\xc4\x68\xc4\x69\xc4\x6a\xc4\x6b\xc4\x6c\xc4\x6d\xc4\x6e\xc4\x6f\xc4\x70\xc4\x71\xc4\x72\xc4\x73\xc4\x74\xc4\x75\xc4\x76\xc4\x77\xc4\x78\xc4\x79\xc4\x7a\xc4\x7b\xc4\x7c\xc4\x7d\xc4\x7e\xc4\x7f\xc4\x81\xc4\x82\xc4\x83\xc4\x84\xc4\x85\xc4\x86\xc4\x87\xc4\x88\xc4\x89\xc4\x8a\xc4\x8b\xc4\x8c\xc4\x8d\xc4\x8e\xc4\x8f\xc4\x90\xc4\x91\xc4\x92\xc4\x93\xc4\x94\xc4\x95\xc4\x96\xc4\x97\xc4\x98\xc4\x99\xc4\x9a\xc4\x9b\xc4\x9c\xc4\x9d\xc4\x9e\xc4\x9f\xc4\xa0\xc4\xa1\xc4\xa2\xc4\xa3\xc4\xa4\xc4\xa5\xc4\xa6\xc4\xa7\xc4\xa8\xc4\xa9\xc4\xaa\xc4\xab\xc4\xac\xc4\xad\xc4\xae\xc4\xaf\xc4\xb0\xc4\xb1\xc4\xb2\xc4\xb3\x59\xb2\x4b\xa4\x54\x8b\x69\x9d\x58\x8f\x56\x53\x58\xea\x64\x90\x57\x88\x4d\x6b\x4b\xd8", /* 9880 */ "\x69\x9e\x48\xe3\x56\x6c\x69\x9f\x5a\xa3\x51\xac\x51\x8d\x53\xc3\x4f\xb0\x69\xa0\x4e\xd4\xc4\xb4\x69\xa1\x69\xa2\xc4\xb5\x69\xa3\x59\xc2\x53\xb4\xc4\xb6\x57\x67\x69\xa4\xc4\xb7\x5a\x51\x50\x65\x56\xe1\xc4\xb8\x69\xa5\x69\xa6\x59\x75\x4b\xed\x69\xa7\x69\xa8\x4b\x7f\x69\xa9\x69\xaa\xc4\xb9\x49\xfb\x69\xab\x69\xac\x54\xa6\xc4\xba\xc4\xbb\xc4\xbc\xc4\xbd\xc4\xbe\xc4\xbf\xc4\xc0\xc4\xc1\xc4\xc2\xc4\xc3\xc4\xc4\xc4\xc5\xc4\xc6\xc4\xc7\xc4\xc8\xc4\xc9\xc4\xca\xc4\xcb\xc4\xcc\xc4\xcd\xc4\xce\xc4\xcf\xc4\xd0\xc4\xd1\xc4\xd2\xc4\xd3\xc4\xd4\xc4\xd5\xc4\xd6\xc4\xd7\xc4\xd8\xc4\xd9\xc4\xda\xc4\xdb\xc4\xdc\xc4\xdd\xc4\xde\xc4\xdf\x4c\x88\xc4\xe0\xc4\xe1\x66\xa8\x66\xa9\x66\xaa\xc4\xe2\x66\xab\xc4\xe3\xc4\xe4\x53\xad\x66\xac\x66\xad\xc4\xe5\xc4\xe6\xc4\xe7\x4c\x69\x55\xb2\xc4\xe8\xc4\xe9\xc4\xea\xc4\xeb\xc4\xec\xc4\xed\xc4\xee\x61\xb7\x6c\x6f\xc4\xef\xc4\xf0\xc4\xf1\xc4\xf2\xc4\xf3\xc4\xf4\xc4\xf5\xc4\xf6\xc4\xf7\xc4\xf8\xc4\xf9\xc4\xfa\xc4\xfb\xc4\xfc\xc4\xfd\xc5\x41\xc5\x42\xc5\x43\xc5\x44\xc5\x45\xc5\x46\xc5\x47\xc5\x48", /* 9900 */ "\xc5\x49\xc5\x4a\xc5\x4b\xc5\x4c\xc5\x4d\xc5\x4e\xc5\x4f\xc5\x50\xc5\x51\xc5\x52\xc5\x53\xc5\x54\xc5\x55\x6c\x70\xc5\x56\xc5\x57\x49\xcc\xc5\x58\xc5\x59\xc5\x5a\xc5\x5b\xc5\x5c\xc5\x5d\xc5\x5e\xc5\x5f\xc5\x60\xc5\x61\xc5\x62\xc5\x63\xc5\x64\xc5\x65\xc5\x66\xc5\x67\xc5\x68\xc5\x69\xc5\x6a\xc5\x6b\xc5\x6c\xc5\x6d\xc5\x6e\xc5\x6f\xc5\x70\xc5\x71\xc5\x72\xc5\x73\xc5\x74\x6c\x71\xc5\x75\xc5\x76\xc5\x77\xc5\x78\xc5\x79\xc5\x7a\xc5\x7b\xc5\x7c\xc5\x7d\xc5\x7e\xc5\x7f\xc5\x81\xc5\x82\xc5\x83\xc5\x84\xc5\x85\xc5\x86\xc5\x87\xc5\x88\xc5\x89\xc5\x8a\xc5\x8b\xc5\x8c\xc5\x8d\xc5\x8e\xc5\x8f\xc5\x90\xc5\x91\xc5\x92\xc5\x93\xc5\x94\xc5\x95\xc5\x96\xc5\x97\xc5\x98\xc5\x99\xc5\x9a\x6c\x73\x6c\x72\xc5\x9b\xc5\x9c\xc5\x9d\xc5\x9e\xc5\x9f\xc5\xa0\xc5\xa1\xc5\xa2\xc5\xa3\xc5\xa4\xc5\xa5\xc5\xa6\xc5\xa7\x61\xba\xc5\xa8\x4e\xa1\xc5\xa9\x61\xbb\x61\xbc\x61\xbd\x61\xbe\x61\xbf\x61\xc0\x4c\x59\x59\xfa\x4f\x44\x55\xcd\x49\x45\x56\x67\xc5\xaa\x61\xc1\x4b\xfb\x54\xc3\x61\xc2\xc5\xab\xc5\xac\x4f\x68\xc5\xad\x49\x9e\x61\xc3\xc5\xae\x4b\xf5", /* 9980 */ "\x61\xc4\x52\xd8\xc5\xaf\xc5\xb0\x61\xc5\x58\x7a\x4d\x7d\x61\xc6\x50\xa0\xc5\xb1\x61\xc7\x49\xf5\xc5\xb2\x61\xc8\xc5\xb3\x51\x94\x61\xc9\x61\xca\x51\xf7\x61\xcb\x61\xcc\x61\xcd\x55\xd6\x5c\xb7\x5d\x86\x58\x84\xc5\xb4\xc5\xb5\xc5\xb6\xc5\xb7\xc5\xb8\xc5\xb9\xc5\xba\xc5\xbb\xc5\xbc\xc5\xbd\xc5\xbe\x68\xa4\xc5\xbf\xc5\xc0\x5e\xaf\xc5\xc1\xc5\xc2\xc5\xc3\xc5\xc4\xc5\xc5\xc5\xc6\xc5\xc7\xc5\xc8\xc5\xc9\xc5\xca\xc5\xcb\xc5\xcc\xc5\xcd\xc5\xce\xc5\xcf\xc5\xd0\xc5\xd1\xc5\xd2\xc5\xd3\xc5\xd4\xc5\xd5\xc5\xd6\xc5\xd7\xc5\xd8\xc5\xd9\xc5\xda\xc5\xdb\xc5\xdc\xc5\xdd\xc5\xde\xc5\xdf\xc5\xe0\xc5\xe1\xc5\xe2\xc5\xe3\xc5\xe4\xc5\xe5\xc5\xe6\xc5\xe7\xc5\xe8\xc5\xe9\xc5\xea\xc5\xeb\xc5\xec\xc5\xed\xc5\xee\xc5\xef\xc5\xf0\xc5\xf1\xc5\xf2\xc5\xf3\xc5\xf4\xc5\xf5\xc5\xf6\xc5\xf7\xc5\xf8\xc5\xf9\xc5\xfa\xc5\xfb\xc5\xfc\xc5\xfd\xc6\x41\xc6\x42\xc6\x43\xc6\x44\xc6\x45\xc6\x46\xc6\x47\xc6\x48\xc6\x49\xc6\x4a\xc6\x4b\xc6\x4c\xc6\x4d\xc6\x4e\xc6\x4f\xc6\x50\xc6\x51\xc6\x52\xc6\x53\xc6\x54\xc6\x55\xc6\x56\xc6\x57\xc6\x58\xc6\x59\xc6\x5a", /* 9a00 */ "\xc6\x5b\xc6\x5c\xc6\x5d\xc6\x5e\xc6\x5f\xc6\x60\xc6\x61\xc6\x62\xc6\x63\xc6\x64\xc6\x65\xc6\x66\xc6\x67\xc6\x68\xc6\x69\xc6\x6a\xc6\x6b\xc6\x6c\xc6\x6d\xc6\x6e\xc6\x6f\xc6\x70\xc6\x71\xc6\x72\xc6\x73\xc6\x74\xc6\x75\xc6\x76\xc6\x77\xc6\x78\xc6\x79\xc6\x7a\xc6\x7b\xc6\x7c\xc6\x7d\xc6\x7e\xc6\x7f\xc6\x81\xc6\x82\xc6\x83\xc6\x84\xc6\x85\xc6\x86\xc6\x87\xc6\x88\xc6\x89\xc6\x8a\xc6\x8b\xc6\x8c\xc6\x8d\xc6\x8e\xc6\x8f\xc6\x90\xc6\x91\xc6\x92\xc6\x93\xc6\x94\xc6\x95\xc6\x96\xc6\x97\xc6\x98\xc6\x99\xc6\x9a\xc6\x9b\xc6\x9c\xc6\x9d\xc6\x9e\xc6\x9f\xc6\xa0\xc6\xa1\xc6\xa2\xc6\xa3\xc6\xa4\xc6\xa5\xc6\xa6\xc6\xa7\xc6\xa8\xc6\xa9\xc6\xaa\xc6\xab\xc6\xac\xc6\xad\xc6\xae\xc6\xaf\xc6\xb0\xc6\xb1\xc6\xb2\xc6\xb3\xc6\xb4\xc6\xb5\xc6\xb6\xc6\xb7\xc6\xb8\xc6\xb9\xc6\xba\xc6\xbb\xc6\xbc\xc6\xbd\xc6\xbe\xc6\xbf\xc6\xc0\xc6\xc1\xc6\xc2\xc6\xc3\xc6\xc4\xc6\xc5\xc6\xc6\xc6\xc7\x51\xec\x5a\xa5\x57\x74\x59\x51\x4a\x7b\x54\x9e\xc6\xc8\x49\xb4\x51\xbe\x63\xdf\x55\xba\x63\xe0\x63\xe1\x4f\xd3\x63\xe2\x5c\x44\x57\x75\x63\xe4\x4e\xdc\x63\xe3", /* 9a80 */ "\x63\xe5\x63\xe6\x51\xed\xc6\xc9\x4f\x5e\x63\xe7\x51\xe5\x4d\xa6\x63\xe8\xc6\xca\x63\xe9\x4a\x72\x59\x8a\xc6\xcb\xc6\xcc\x50\x45\x63\xea\x53\xee\x63\xeb\x63\xec\xc6\xcd\xc6\xce\x63\xed\x53\xac\x63\xee\xc6\xcf\x55\x47\x63\xef\x63\xf0\x63\xf1\x63\x59\x63\xf2\x63\xf3\x51\xe1\x63\xf4\x63\xf5\x5b\xe7\x63\xf6\xc6\xd0\x63\xf7\x4d\x67\xc6\xd1\xc6\xd2\xc6\xd3\xc6\xd4\xc6\xd5\xc6\xd6\xc6\xd7\x6c\x5b\x6c\x5a\xc6\xd8\xc6\xd9\xc6\xda\xc6\xdb\x6c\x5e\x6c\x5c\x4d\xa0\xc6\xdc\x6c\x5f\xc6\xdd\x6c\x60\xc6\xde\xc6\xdf\xc6\xe0\x6c\x62\x6c\x61\x6c\x64\xc6\xe1\xc6\xe2\x6c\x63\xc6\xe3\xc6\xe4\xc6\xe5\xc6\xe6\xc6\xe7\x6c\x65\x6c\x66\xc6\xe8\xc6\xe9\xc6\xea\xc6\xeb\x6c\x67\xc6\xec\x56\x89\xc6\xed\xc6\xee\xc6\xef\xc6\xf0\x4c\xde\xc6\xf1\xc6\xf2\xc6\xf3\xc6\xf4\xc6\xf5\xc6\xf6\x6c\x74\xc6\xf7\x6c\x75\xc6\xf8\xc6\xf9\xc6\xfa\xc6\xfb\x6c\x76\xc6\xfc\xc6\xfd\xc7\x41\xc7\x42\x6c\x78\xc7\x43\x6c\x7a\xc7\x44\x6c\x77\xc7\x45\xc7\x46\xc7\x47\xc7\x48\xc7\x49\xc7\x4a\xc7\x4b\xc7\x4c\xc7\x4d\x6c\x7b\xc7\x4e\x6c\x79\xc7\x4f\xc7\x50\xc7\x51\xc7\x52", /* 9b00 */ "\xc7\x53\xc7\x54\xc7\x55\x5c\x77\xc7\x56\xc7\x57\xc7\x58\xc7\x59\x6c\x7c\xc7\x5a\xc7\x5b\xc7\x5c\xc7\x5d\xc7\x5e\xc7\x5f\x6c\x7d\xc7\x60\xc7\x61\xc7\x62\x6c\x7e\xc7\x63\xc7\x64\xc7\x65\xc7\x66\xc7\x67\xc7\x68\xc7\x69\xc7\x6a\xc7\x6b\xc7\x6c\xc7\x6d\x6c\x7f\xc7\x6e\xc7\x6f\xc7\x70\x6c\x81\xc7\x71\xc7\x72\xc7\x73\xc7\x74\xc7\x75\xc7\x76\xc7\x77\xc7\x78\xc7\x79\xc7\x7a\xc7\x7b\x5e\x6b\xc7\x7c\xc7\x7d\x5c\xa9\xc7\x7e\xc7\x7f\xc7\x81\xc7\x82\xc7\x83\xc7\x84\xc7\x85\xc7\x86\x63\x98\x4d\x8e\xc7\x87\xc7\x88\xc7\x89\xc7\x8a\x50\x9e\x4e\x8b\x6c\x69\x53\xc6\x6c\x68\xc7\x8b\x6c\x6a\x6c\x6c\x6c\x6b\xc7\x8c\xc7\x8d\xc7\x8e\x6c\x6d\xc7\x8f\x57\xb9\xc7\x90\x6c\x6e\xc7\x91\xc7\x92\x52\xa6\xc7\x93\xc7\x94\xc7\x95\xc7\x96\xc7\x97\xc7\x98\xc7\x99\xc7\x9a\xc7\x9b\xc7\x9c\xc7\x9d\xc7\x9e\xc7\x9f\xc7\xa0\xc7\xa1\xc7\xa2\xc7\xa3\xc7\xa4\xc7\xa5\xc7\xa6\xc7\xa7\xc7\xa8\xc7\xa9\xc7\xaa\xc7\xab\xc7\xac\xc7\xad\xc7\xae\xc7\xaf\xc7\xb0\xc7\xb1\xc7\xb2\xc7\xb3\xc7\xb4\xc7\xb5\xc7\xb6\xc7\xb7\xc7\xb8\xc7\xb9\xc7\xba\xc7\xbb\xc7\xbc\xc7\xbd", /* 9b80 */ "\xc7\xbe\xc7\xbf\xc7\xc0\xc7\xc1\xc7\xc2\xc7\xc3\xc7\xc4\xc7\xc5\xc7\xc6\xc7\xc7\xc7\xc8\xc7\xc9\xc7\xca\xc7\xcb\xc7\xcc\xc7\xcd\xc7\xce\xc7\xcf\xc7\xd0\xc7\xd1\xc7\xd2\xc7\xd3\xc7\xd4\xc7\xd5\xc7\xd6\xc7\xd7\xc7\xd8\xc7\xd9\xc7\xda\xc7\xdb\xc7\xdc\xc7\xdd\xc7\xde\xc7\xdf\xc7\xe0\xc7\xe1\xc7\xe2\xc7\xe3\xc7\xe4\xc7\xe5\xc7\xe6\xc7\xe7\xc7\xe8\xc7\xe9\xc7\xea\xc7\xeb\xc7\xec\xc7\xed\xc7\xee\xc7\xef\xc7\xf0\xc7\xf1\xc7\xf2\xc7\xf3\xc7\xf4\xc7\xf5\xc7\xf6\xc7\xf7\xc7\xf8\xc7\xf9\xc7\xfa\xc7\xfb\xc7\xfc\xc7\xfd\xc8\x41\xc8\x42\xc8\x43\xc8\x44\xc8\x45\xc8\x46\xc8\x47\xc8\x48\xc8\x49\xc8\x4a\xc8\x4b\xc8\x4c\xc8\x4d\xc8\x4e\xc8\x4f\xc8\x50\xc8\x51\xc8\x52\xc8\x53\xc8\x54\xc8\x55\xc8\x56\xc8\x57\xc8\x58\xc8\x59\xc8\x5a\xc8\x5b\xc8\x5c\xc8\x5d\xc8\x5e\xc8\x5f\xc8\x60\xc8\x61\xc8\x62\xc8\x63\xc8\x64\xc8\x65\xc8\x66\xc8\x67\xc8\x68\xc8\x69\xc8\x6a\xc8\x6b\xc8\x6c\xc8\x6d\xc8\x6e\xc8\x6f\xc8\x70\xc8\x71\xc8\x72\xc8\x73\xc8\x74\xc8\x75\xc8\x76\xc8\x77\xc8\x78\xc8\x79\xc8\x7a\xc8\x7b\xc8\x7c\xc8\x7d\xc8\x7e\xc8\x7f\xc8\x81", /* 9c00 */ "\xc8\x82\xc8\x83\xc8\x84\xc8\x85\xc8\x86\xc8\x87\xc8\x88\xc8\x89\xc8\x8a\xc8\x8b\xc8\x8c\xc8\x8d\xc8\x8e\xc8\x8f\xc8\x90\xc8\x91\xc8\x92\xc8\x93\xc8\x94\xc8\x95\xc8\x96\xc8\x97\xc8\x98\xc8\x99\xc8\x9a\xc8\x9b\xc8\x9c\xc8\x9d\xc8\x9e\xc8\x9f\xc8\xa0\xc8\xa1\xc8\xa2\xc8\xa3\xc8\xa4\xc8\xa5\xc8\xa6\xc8\xa7\xc8\xa8\xc8\xa9\xc8\xaa\xc8\xab\xc8\xac\xc8\xad\xc8\xae\xc8\xaf\xc8\xb0\xc8\xb1\xc8\xb2\xc8\xb3\xc8\xb4\xc8\xb5\xc8\xb6\xc8\xb7\xc8\xb8\xc8\xb9\xc8\xba\xc8\xbb\xc8\xbc\xc8\xbd\xc8\xbe\xc8\xbf\xc8\xc0\xc8\xc1\xc8\xc2\xc8\xc3\xc8\xc4\xc8\xc5\xc8\xc6\xc8\xc7\xc8\xc8\xc8\xc9\xc8\xca\xc8\xcb\xc8\xcc\xc8\xcd\xc8\xce\xc8\xcf\xc8\xd0\xc8\xd1\xc8\xd2\xc8\xd3\xc8\xd4\xc8\xd5\xc8\xd6\xc8\xd7\xc8\xd8\xc8\xd9\xc8\xda\xc8\xdb\xc8\xdc\xc8\xdd\xc8\xde\xc8\xdf\xc8\xe0\xc8\xe1\xc8\xe2\xc8\xe3\xc8\xe4\xc8\xe5\xc8\xe6\xc8\xe7\xc8\xe8\xc8\xe9\xc8\xea\xc8\xeb\xc8\xec\xc8\xed\xc8\xee\xc8\xef\xc8\xf0\xc8\xf1\xc8\xf2\xc8\xf3\xc8\xf4\xc8\xf5\xc8\xf6\xc8\xf7\xc8\xf8\xc8\xf9\xc8\xfa\xc8\xfb\xc8\xfc\xc8\xfd\x5a\x84\xc9\x41\xc9\x42\x6b\xce", /* 9c80 */ "\xc9\x43\x51\xb2\x6b\xcf\xc9\x44\xc9\x45\x6b\xd0\x6b\xd1\x6b\xd2\x6b\xd3\xc9\x46\xc9\x47\x6b\xd5\xc9\x48\x49\x4b\x6b\xd6\xc9\x49\x6b\xd7\x6b\xd8\x6b\xd9\xc9\x4a\x6b\xda\x6b\xdb\xc9\x4b\xc9\x4c\xc9\x4d\xc9\x4e\x6b\xdc\x6b\xdd\x58\x6a\xc9\x4f\x6b\xde\x6b\xdf\x6b\xe0\x6b\xe1\x6b\xe2\x6b\xe3\x50\xef\x6b\xe4\x6b\xe5\x6b\xe6\x6b\xe7\x6b\xe8\xc9\x50\x6b\xe9\xc9\x51\x6b\xea\x6b\xeb\xc9\x52\x6b\xec\x6b\xed\x6b\xee\x6b\xef\x6b\xf0\x6b\xf1\x6b\xf2\x6b\xf3\x4f\xa7\xc9\x53\x6b\xf4\x6b\xf5\x6b\xf6\x6b\xf7\xc9\x54\xc9\x55\xc9\x56\xc9\x57\xc9\x58\x54\xf9\x6b\xf8\x6b\xf9\x6b\xfa\x6b\xfb\xc9\x59\xc9\x5a\x6b\xfc\x6b\xfd\x6c\x41\x6c\x42\x6c\x43\x6c\x44\x6c\x45\xc9\x5b\xc9\x5c\x6c\x46\x6c\x47\x6c\x48\x49\x8f\x6c\x49\x6c\x4a\x6c\x4b\xc9\x5d\xc9\x5e\x6c\x4c\x6c\x4d\x51\x7b\x6c\x4e\xc9\x5f\xc9\x60\x6c\x4f\xc9\x61\xc9\x62\xc9\x63\xc9\x64\xc9\x65\xc9\x66\xc9\x67\xc9\x68\xc9\x69\xc9\x6a\xc9\x6b\xc9\x6c\xc9\x6d\xc9\x6e\xc9\x6f\xc9\x70\xc9\x71\xc9\x72\xc9\x73\xc9\x74\xc9\x75\xc9\x76\xc9\x77\xc9\x78\xc9\x79\xc9\x7a\xc9\x7b\xc9\x7c\xc9\x7d", /* 9d00 */ "\xc9\x7e\xc9\x7f\xc9\x81\xc9\x82\xc9\x83\xc9\x84\xc9\x85\xc9\x86\xc9\x87\xc9\x88\xc9\x89\xc9\x8a\xc9\x8b\xc9\x8c\xc9\x8d\xc9\x8e\xc9\x8f\xc9\x90\xc9\x91\xc9\x92\xc9\x93\xc9\x94\xc9\x95\xc9\x96\xc9\x97\xc9\x98\xc9\x99\xc9\x9a\xc9\x9b\xc9\x9c\xc9\x9d\xc9\x9e\xc9\x9f\xc9\xa0\xc9\xa1\xc9\xa2\xc9\xa3\xc9\xa4\xc9\xa5\xc9\xa6\xc9\xa7\xc9\xa8\xc9\xa9\xc9\xaa\xc9\xab\xc9\xac\xc9\xad\xc9\xae\xc9\xaf\xc9\xb0\xc9\xb1\xc9\xb2\xc9\xb3\xc9\xb4\xc9\xb5\xc9\xb6\xc9\xb7\xc9\xb8\xc9\xb9\xc9\xba\xc9\xbb\xc9\xbc\xc9\xbd\xc9\xbe\xc9\xbf\xc9\xc0\xc9\xc1\xc9\xc2\xc9\xc3\xc9\xc4\xc9\xc5\xc9\xc6\xc9\xc7\xc9\xc8\xc9\xc9\xc9\xca\xc9\xcb\xc9\xcc\xc9\xcd\xc9\xce\xc9\xcf\xc9\xd0\xc9\xd1\xc9\xd2\xc9\xd3\xc9\xd4\xc9\xd5\xc9\xd6\xc9\xd7\xc9\xd8\xc9\xd9\xc9\xda\xc9\xdb\xc9\xdc\xc9\xdd\xc9\xde\xc9\xdf\xc9\xe0\xc9\xe1\xc9\xe2\xc9\xe3\xc9\xe4\xc9\xe5\xc9\xe6\xc9\xe7\xc9\xe8\xc9\xe9\xc9\xea\xc9\xeb\xc9\xec\xc9\xed\xc9\xee\xc9\xef\xc9\xf0\xc9\xf1\xc9\xf2\xc9\xf3\xc9\xf4\xc9\xf5\xc9\xf6\xc9\xf7\xc9\xf8\xc9\xf9\xc9\xfa\xc9\xfb\xc9\xfc\xc9\xfd\xca\x41", /* 9d80 */ "\xca\x42\xca\x43\xca\x44\xca\x45\xca\x46\xca\x47\xca\x48\xca\x49\xca\x4a\xca\x4b\xca\x4c\xca\x4d\xca\x4e\xca\x4f\xca\x50\xca\x51\xca\x52\xca\x53\xca\x54\xca\x55\xca\x56\xca\x57\xca\x58\xca\x59\xca\x5a\xca\x5b\xca\x5c\xca\x5d\xca\x5e\xca\x5f\xca\x60\xca\x61\xca\x62\xca\x63\xca\x64\xca\x65\xca\x66\xca\x67\xca\x68\xca\x69\xca\x6a\xca\x6b\xca\x6c\xca\x6d\xca\x6e\xca\x6f\xca\x70\xca\x71\xca\x72\xca\x73\xca\x74\xca\x75\xca\x76\xca\x77\xca\x78\xca\x79\xca\x7a\xca\x7b\xca\x7c\xca\x7d\xca\x7e\xca\x7f\xca\x81\xca\x82\xca\x83\xca\x84\xca\x85\xca\x86\xca\x87\xca\x88\xca\x89\xca\x8a\xca\x8b\xca\x8c\xca\x8d\xca\x8e\xca\x8f\xca\x90\xca\x91\xca\x92\xca\x93\xca\x94\xca\x95\xca\x96\xca\x97\xca\x98\xca\x99\xca\x9a\xca\x9b\xca\x9c\xca\x9d\xca\x9e\xca\x9f\xca\xa0\xca\xa1\xca\xa2\xca\xa3\xca\xa4\xca\xa5\xca\xa6\xca\xa7\xca\xa8\xca\xa9\xca\xaa\xca\xab\xca\xac\xca\xad\xca\xae\xca\xaf\xca\xb0\xca\xb1\xca\xb2\xca\xb3\xca\xb4\xca\xb5\xca\xb6\xca\xb7\xca\xb8\xca\xb9\xca\xba\xca\xbb\xca\xbc\xca\xbd\xca\xbe\xca\xbf\xca\xc0\xca\xc1\xca\xc2", /* 9e00 */ "\xca\xc3\xca\xc4\xca\xc5\xca\xc6\xca\xc7\xca\xc8\xca\xc9\xca\xca\xca\xcb\xca\xcc\xca\xcd\xca\xce\xca\xcf\xca\xd0\xca\xd1\xca\xd2\xca\xd3\xca\xd4\xca\xd5\xca\xd6\xca\xd7\xca\xd8\xca\xd9\xca\xda\xca\xdb\xca\xdc\xca\xdd\xca\xde\xca\xdf\xca\xe0\xca\xe1\x52\xf0\x68\xae\x4e\xa5\x68\xaf\x52\x9a\xca\xe2\x53\x58\x59\x5b\xca\xe3\x68\xb0\x68\xb1\x68\xb2\x68\xb3\x68\xb4\x59\x5c\xca\xe4\x59\x8d\xca\xe5\x68\xb6\x68\xb5\x5a\xa6\xca\xe6\x57\x72\x68\xb7\x68\xb9\x68\xb8\x68\xba\x68\xbb\xca\xe7\xca\xe8\x4c\xea\x68\xbc\x4d\xe7\xca\xe9\x68\xbd\x68\xbe\x4f\xe8\x68\xbf\x4b\xeb\x68\xc0\x68\xc1\x68\xc2\x68\xc3\x54\xb4\x68\xc4\x68\xc5\xca\xea\x68\xc6\x53\x95\xca\xeb\x68\xc7\xca\xec\xca\xed\xca\xee\x68\xc8\xca\xef\x68\xc9\x6c\x5d\xca\xf0\x68\xca\x68\xcb\x68\xcc\xca\xf1\x68\xcd\xca\xf2\xca\xf3\xca\xf4\xca\xf5\x68\xce\x4d\xd6\xca\xf6\x68\xcf\x68\xd0\x68\xd1\x68\xd2\x68\xd3\x68\xd4\x68\xd5\x68\xd7\xca\xf7\xca\xf8\x5a\x45\x68\xd6\xca\xf9\x68\xd8\xca\xfa\xca\xfb\xca\xfc\xca\xfd\xcb\x41\xcb\x42\xcb\x43\xcb\x44\xcb\x45\xcb\x46\x6b\x5a\x51\xb8", /* 9e80 */ "\xcb\x47\xcb\x48\x6c\x85\xcb\x49\xcb\x4a\xcb\x4b\xcb\x4c\x6c\x86\x6c\x87\xcb\x4d\xcb\x4e\x6c\x88\xcb\x4f\xcb\x50\xcb\x51\xcb\x52\xcb\x53\xcb\x54\x6c\x89\x51\xb3\xcb\x55\xcb\x56\xcb\x57\xcb\x58\xcb\x59\xcb\x5a\xcb\x5b\xcb\x5c\xcb\x5d\x6c\x8b\xcb\x5e\x6c\x8c\xcb\x5f\xcb\x60\xcb\x61\xcb\x62\xcb\x63\xcb\x64\x51\xf2\xcb\x65\xcb\x66\xcb\x67\xcb\x68\xcb\x69\xcb\x6a\xcb\x6b\xcb\x6c\xcb\x6d\xcb\x6e\xcb\x6f\xcb\x70\xcb\x71\x6a\xef\xcb\x72\xcb\x73\xcb\x74\x6a\xee\xcb\x75\xcb\x76\x51\xe8\xcb\x77\x6c\x82\x6c\x83\xcb\x78\xcb\x79\xcb\x7a\xcb\x7b\xcb\x7c\x4e\x66\xcb\x7d\xcb\x7e\xcb\x7f\xcb\x81\x5d\x85\xcb\x82\xcb\x83\xcb\x84\x55\xf1\x50\xe7\x68\xa3\xcb\x85\x4d\xd9\xcb\x86\xcb\x87\x54\x4d\xcb\x88\xcb\x89\xcb\x8a\x52\xab\xcb\x8b\xcb\x8c\x6c\x8d\x6c\x8e\x6c\x8f\xcb\x8d\x6c\x91\x6c\x90\xcb\x8e\x6c\x92\xcb\x8f\xcb\x90\x6c\x95\xcb\x91\x6c\x94\xcb\x92\x6c\x93\x6c\x96\xcb\x93\xcb\x94\xcb\x95\xcb\x96\x6c\x97\xcb\x97\xcb\x98\xcb\x99\xcb\x9a\xcb\x9b\xcb\x9c\xcb\x9d\xcb\x9e\xcb\x9f\x67\x8a\xcb\xa0\x67\x8b\x67\x8c\xcb\xa1\x6b\xbb\xcb\xa2", /* 9f00 */ "\xcb\xa3\xcb\xa4\xcb\xa5\xcb\xa6\xcb\xa7\xcb\xa8\xcb\xa9\xcb\xaa\xcb\xab\xcb\xac\xcb\xad\x6b\xbc\xcb\xae\x6b\xbd\x4b\xa5\xcb\xaf\x5c\xbd\xcb\xb0\xcb\xb1\x4d\x64\xcb\xb2\xcb\xb3\xcb\xb4\x5c\xba\xcb\xb5\x5e\xb0\xcb\xb6\xcb\xb7\xcb\xb8\xcb\xb9\xcb\xba\xcb\xbb\x55\xf2\xcb\xbc\x6c\x98\xcb\xbd\xcb\xbe\xcb\xbf\xcb\xc0\xcb\xc1\xcb\xc2\xcb\xc3\xcb\xc4\xcb\xc5\x6c\x99\xcb\xc6\xcb\xc7\x6c\x9a\xcb\xc8\xcb\xc9\xcb\xca\xcb\xcb\xcb\xcc\xcb\xcd\xcb\xce\x6c\x9c\xcb\xcf\x6c\x9b\xcb\xd0\x49\x67\xcb\xd1\x6c\x9d\x6c\x9e\xcb\xd2\xcb\xd3\xcb\xd4\xcb\xd5\xcb\xd6\x6c\x9f\xcb\xd7\xcb\xd8\xcb\xd9\xcb\xda\xcb\xdb\xcb\xdc\xcb\xdd\xcb\xde\xcb\xdf\xcb\xe0\xcb\xe1\x53\xea\x66\xb3\xcb\xe2\xcb\xe3\xcb\xe4\xcb\xe5\xcb\xe6\xcb\xe7\xcb\xe8\xcb\xe9\xcb\xea\xcb\xeb\xcb\xec\xcb\xed\xcb\xee\xcb\xef\xcb\xf0\xcb\xf1\xcb\xf2\xcb\xf3\xcb\xf4\xcb\xf5\xcb\xf6\xcb\xf7\xcb\xf8\xcb\xf9\xcb\xfa\xcb\xfb\xcb\xfc\xcb\xfd\xcc\x41\xcc\x42\xcc\x43\xcc\x44\xcc\x45\xcc\x46\xcc\x47\xcc\x48\xcc\x49\xcc\x4a\xcc\x4b\xcc\x4c\xcc\x4d\xcc\x4e\xcc\x4f\xcc\x50\xcc\x51\x4a\x7d", /* 9f80 */ "\x6b\xb2\xcc\x52\xcc\x53\x6b\xb3\x51\x85\x6b\xb4\x6b\xb5\x6b\xb6\x6b\xb7\x6b\xb8\x6b\xb9\x54\xa2\x6b\xba\xcc\x54\xcc\x55\xcc\x56\xcc\x57\xcc\x58\xcc\x59\xcc\x5a\xcc\x5b\xcc\x5c\xcc\x5d\xcc\x5e\xcc\x5f\x51\x9b\x4d\x48\x67\x89\xcc\x60\xcc\x61\xcc\x62\x4d\x8b\x5d\x7f\xcc\x63\xcc\x64\xcc\x65\xcc\x66\xcc\x67\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* a000 */ "\x6f\x75\x6f\x76\x6f\x77\x6f\x78\x6f\x79\x6f\x7a\x6f\x7b\x6f\x7c\x6f\x7d\x6f\x7e\x6f\x7f\x6f\x80\x6f\x81\x6f\x82\x6f\x83\x6f\x84\x6f\x85\x6f\x86\x6f\x87\x6f\x88\x6f\x89\x6f\x8a\x6f\x8b\x6f\x8c\x6f\x8d\x6f\x8e\x6f\x8f\x6f\x90\x6f\x91\x6f\x92\x6f\x93\x6f\x94\x6f\x95\x6f\x96\x6f\x97\x6f\x98\x6f\x99\x6f\x9a\x6f\x9b\x6f\x9c\x6f\x9d\x6f\x9e\x6f\x9f\x6f\xa0\x6f\xa1\x6f\xa2\x6f\xa3\x6f\xa4\x6f\xa5\x6f\xa6\x6f\xa7\x6f\xa8\x6f\xa9\x6f\xaa\x6f\xab\x6f\xac\x6f\xad\x6f\xae\x6f\xaf\x6f\xb0\x6f\xb1\x6f\xb2\x6f\xb3\x6f\xb4\x6f\xb5\x6f\xb6\x6f\xb7\x6f\xb8\x6f\xb9\x6f\xba\x6f\xbb\x6f\xbc\x6f\xbd\x6f\xbe\x6f\xbf\x6f\xc0\x6f\xc1\x6f\xc2\x6f\xc3\x6f\xc4\x6f\xc5\x6f\xc6\x6f\xc7\x6f\xc8\x6f\xc9\x6f\xca\x6f\xcb\x6f\xcc\x6f\xcd\x6f\xce\x6f\xcf\x6f\xd0\x6f\xd1\x6f\xd2\x6f\xd3\x6f\xd4\x6f\xd5\x6f\xd6\x6f\xd7\x6f\xd8\x6f\xd9\x6f\xda\x6f\xdb\x6f\xdc\x6f\xdd\x6f\xde\x6f\xdf\x6f\xe0\x6f\xe1\x6f\xe2\x6f\xe3\x6f\xe4\x6f\xe5\x6f\xe6\x6f\xe7\x6f\xe8\x6f\xe9\x6f\xea\x6f\xeb\x6f\xec\x6f\xed\x6f\xee\x6f\xef\x6f\xf0\x6f\xf1\x6f\xf2\x6f\xf3\x6f\xf4", /* a080 */ "\x6f\xf5\x6f\xf6\x6f\xf7\x6f\xf8\x6f\xf9\x6f\xfa\x6f\xfb\x6f\xfc\x6f\xfd\x6f\xfe\x70\x41\x70\x42\x70\x43\x70\x44\x70\x45\x70\x46\x70\x47\x70\x48\x70\x49\x70\x4a\x70\x4b\x70\x4c\x70\x4d\x70\x4e\x70\x4f\x70\x50\x70\x51\x70\x52\x70\x53\x70\x54\x70\x55\x70\x56\x70\x57\x70\x58\x70\x59\x70\x5a\x70\x5b\x70\x5c\x70\x5d\x70\x5e\x70\x5f\x70\x60\x70\x61\x70\x62\x70\x63\x70\x64\x70\x65\x70\x66\x70\x67\x70\x68\x70\x69\x70\x6a\x70\x6b\x70\x6c\x70\x6d\x70\x6e\x70\x6f\x70\x70\x70\x71\x70\x72\x70\x73\x70\x74\x70\x75\x70\x76\x70\x77\x70\x78\x70\x79\x70\x7a\x70\x7b\x70\x7c\x70\x7d\x70\x7e\x70\x7f\x70\x80\x70\x81\x70\x82\x70\x83\x70\x84\x70\x85\x70\x86\x70\x87\x70\x88\x70\x89\x70\x8a\x70\x8b\x70\x8c\x70\x8d\x70\x8e\x70\x8f\x70\x90\x70\x91\x70\x92\x70\x93\x70\x94\x70\x95\x70\x96\x70\x97\x70\x98\x70\x99\x70\x9a\x70\x9b\x70\x9c\x70\x9d\x70\x9e\x70\x9f\x70\xa0\x70\xa1\x70\xa2\x70\xa3\x70\xa4\x70\xa5\x70\xa6\x70\xa7\x70\xa8\x70\xa9\x70\xaa\x70\xab\x70\xac\x70\xad\x70\xae\x70\xaf\x70\xb0\x70\xb1\x70\xb2\x70\xb3\x70\xb4\x70\xb5\x70\xb6", /* a100 */ "\x70\xb7\x70\xb8\x70\xb9\x70\xba\x70\xbb\x70\xbc\x70\xbd\x70\xbe\x70\xbf\x70\xc0\x70\xc1\x70\xc2\x70\xc3\x70\xc4\x70\xc5\x70\xc6\x70\xc7\x70\xc8\x70\xc9\x70\xca\x70\xcb\x70\xcc\x70\xcd\x70\xce\x70\xcf\x70\xd0\x70\xd1\x70\xd2\x70\xd3\x70\xd4\x70\xd5\x70\xd6\x70\xd7\x70\xd8\x70\xd9\x70\xda\x70\xdb\x70\xdc\x70\xdd\x70\xde\x70\xdf\x70\xe0\x70\xe1\x70\xe2\x70\xe3\x70\xe4\x70\xe5\x70\xe6\x70\xe7\x70\xe8\x70\xe9\x70\xea\x70\xeb\x70\xec\x70\xed\x70\xee\x70\xef\x70\xf0\x70\xf1\x70\xf2\x70\xf3\x70\xf4\x70\xf5\x70\xf6\x70\xf7\x70\xf8\x70\xf9\x70\xfa\x70\xfb\x70\xfc\x70\xfd\x70\xfe\x71\x41\x71\x42\x71\x43\x71\x44\x71\x45\x71\x46\x71\x47\x71\x48\x71\x49\x71\x4a\x71\x4b\x71\x4c\x71\x4d\x71\x4e\x71\x4f\x71\x50\x71\x51\x71\x52\x71\x53\x71\x54\x71\x55\x71\x56\x71\x57\x71\x58\x71\x59\x71\x5a\x71\x5b\x71\x5c\x71\x5d\x71\x5e\x71\x5f\x71\x60\x71\x61\x71\x62\x71\x63\x71\x64\x71\x65\x71\x66\x71\x67\x71\x68\x71\x69\x71\x6a\x71\x6b\x71\x6c\x71\x6d\x71\x6e\x71\x6f\x71\x70\x71\x71\x71\x72\x71\x73\x71\x74\x71\x75\x71\x76\x71\x77\x71\x78", /* a180 */ "\x71\x79\x71\x7a\x71\x7b\x71\x7c\x71\x7d\x71\x7e\x71\x7f\x71\x80\x71\x81\x71\x82\x71\x83\x71\x84\x71\x85\x71\x86\x71\x87\x71\x88\x71\x89\x71\x8a\x71\x8b\x71\x8c\x71\x8d\x71\x8e\x71\x8f\x71\x90\x71\x91\x71\x92\x71\x93\x71\x94\x71\x95\x71\x96\x71\x97\x71\x98\x71\x99\x71\x9a\x71\x9b\x71\x9c\x71\x9d\x71\x9e\x71\x9f\x71\xa0\x71\xa1\x71\xa2\x71\xa3\x71\xa4\x71\xa5\x71\xa6\x71\xa7\x71\xa8\x71\xa9\x71\xaa\x71\xab\x71\xac\x71\xad\x71\xae\x71\xaf\x71\xb0\x71\xb1\x71\xb2\x71\xb3\x71\xb4\x71\xb5\x71\xb6\x71\xb7\x71\xb8\x71\xb9\x71\xba\x71\xbb\x71\xbc\x71\xbd\x71\xbe\x71\xbf\x71\xc0\x71\xc1\x71\xc2\x71\xc3\x71\xc4\x71\xc5\x71\xc6\x71\xc7\x71\xc8\x71\xc9\x71\xca\x71\xcb\x71\xcc\x71\xcd\x71\xce\x71\xcf\x71\xd0\x71\xd1\x71\xd2\x71\xd3\x71\xd4\x71\xd5\x71\xd6\x71\xd7\x71\xd8\x71\xd9\x71\xda\x71\xdb\x71\xdc\x71\xdd\x71\xde\x71\xdf\x71\xe0\x71\xe1\x71\xe2\x71\xe3\x71\xe4\x71\xe5\x71\xe6\x71\xe7\x71\xe8\x71\xe9\x71\xea\x71\xeb\x71\xec\x71\xed\x71\xee\x71\xef\x71\xf0\x71\xf1\x71\xf2\x71\xf3\x71\xf4\x71\xf5\x71\xf6\x71\xf7\x71\xf8", /* a200 */ "\x71\xf9\x71\xfa\x71\xfb\x71\xfc\x71\xfd\x71\xfe\x72\x41\x72\x42\x72\x43\x72\x44\x72\x45\x72\x46\x72\x47\x72\x48\x72\x49\x72\x4a\x72\x4b\x72\x4c\x72\x4d\x72\x4e\x72\x4f\x72\x50\x72\x51\x72\x52\x72\x53\x72\x54\x72\x55\x72\x56\x72\x57\x72\x58\x72\x59\x72\x5a\x72\x5b\x72\x5c\x72\x5d\x72\x5e\x72\x5f\x72\x60\x72\x61\x72\x62\x72\x63\x72\x64\x72\x65\x72\x66\x72\x67\x72\x68\x72\x69\x72\x6a\x72\x6b\x72\x6c\x72\x6d\x72\x6e\x72\x6f\x72\x70\x72\x71\x72\x72\x72\x73\x72\x74\x72\x75\x72\x76\x72\x77\x72\x78\x72\x79\x72\x7a\x72\x7b\x72\x7c\x72\x7d\x72\x7e\x72\x7f\x72\x80\x72\x81\x72\x82\x72\x83\x72\x84\x72\x85\x72\x86\x72\x87\x72\x88\x72\x89\x72\x8a\x72\x8b\x72\x8c\x72\x8d\x72\x8e\x72\x8f\x72\x90\x72\x91\x72\x92\x72\x93\x72\x94\x72\x95\x72\x96\x72\x97\x72\x98\x72\x99\x72\x9a\x72\x9b\x72\x9c\x72\x9d\x72\x9e\x72\x9f\x72\xa0\x72\xa1\x72\xa2\x72\xa3\x72\xa4\x72\xa5\x72\xa6\x72\xa7\x72\xa8\x72\xa9\x72\xaa\x72\xab\x72\xac\x72\xad\x72\xae\x72\xaf\x72\xb0\x72\xb1\x72\xb2\x72\xb3\x72\xb4\x72\xb5\x72\xb6\x72\xb7\x72\xb8\x72\xb9\x72\xba", /* a280 */ "\x72\xbb\x72\xbc\x72\xbd\x72\xbe\x72\xbf\x72\xc0\x72\xc1\x72\xc2\x72\xc3\x72\xc4\x72\xc5\x72\xc6\x72\xc7\x72\xc8\x72\xc9\x72\xca\x72\xcb\x72\xcc\x72\xcd\x72\xce\x72\xcf\x72\xd0\x72\xd1\x72\xd2\x72\xd3\x72\xd4\x72\xd5\x72\xd6\x72\xd7\x72\xd8\x72\xd9\x72\xda\x72\xdb\x72\xdc\x72\xdd\x72\xde\x72\xdf\x72\xe0\x72\xe1\x72\xe2\x72\xe3\x72\xe4\x72\xe5\x72\xe6\x72\xe7\x72\xe8\x72\xe9\x72\xea\x72\xeb\x72\xec\x72\xed\x72\xee\x72\xef\x72\xf0\x72\xf1\x72\xf2\x72\xf3\x72\xf4\x72\xf5\x72\xf6\x72\xf7\x72\xf8\x72\xf9\x72\xfa\x72\xfb\x72\xfc\x72\xfd\x72\xfe\x73\x41\x73\x42\x73\x43\x73\x44\x73\x45\x73\x46\x73\x47\x73\x48\x73\x49\x73\x4a\x73\x4b\x73\x4c\x73\x4d\x73\x4e\x73\x4f\x73\x50\x73\x51\x73\x52\x73\x53\x73\x54\x73\x55\x73\x56\x73\x57\x73\x58\x73\x59\x73\x5a\x73\x5b\x73\x5c\x73\x5d\x73\x5e\x73\x5f\x73\x60\x73\x61\x73\x62\x73\x63\x73\x64\x73\x65\x73\x66\x73\x67\x73\x68\x73\x69\x73\x6a\x73\x6b\x73\x6c\x73\x6d\x73\x6e\x73\x6f\x73\x70\x73\x71\x73\x72\x73\x73\x73\x74\x73\x75\x73\x76\x73\x77\x73\x78\x73\x79\x73\x7a\x73\x7b\x73\x7c", /* a300 */ "\x73\x7d\x73\x7e\x73\x7f\x73\x80\x73\x81\x73\x82\x73\x83\x73\x84\x73\x85\x73\x86\x73\x87\x73\x88\x73\x89\x73\x8a\x73\x8b\x73\x8c\x73\x8d\x73\x8e\x73\x8f\x73\x90\x73\x91\x73\x92\x73\x93\x73\x94\x73\x95\x73\x96\x73\x97\x73\x98\x73\x99\x73\x9a\x73\x9b\x73\x9c\x73\x9d\x73\x9e\x73\x9f\x73\xa0\x73\xa1\x73\xa2\x73\xa3\x73\xa4\x73\xa5\x73\xa6\x73\xa7\x73\xa8\x73\xa9\x73\xaa\x73\xab\x73\xac\x73\xad\x73\xae\x73\xaf\x73\xb0\x73\xb1\x73\xb2\x73\xb3\x73\xb4\x73\xb5\x73\xb6\x73\xb7\x73\xb8\x73\xb9\x73\xba\x73\xbb\x73\xbc\x73\xbd\x73\xbe\x73\xbf\x73\xc0\x73\xc1\x73\xc2\x73\xc3\x73\xc4\x73\xc5\x73\xc6\x73\xc7\x73\xc8\x73\xc9\x73\xca\x73\xcb\x73\xcc\x73\xcd\x73\xce\x73\xcf\x73\xd0\x73\xd1\x73\xd2\x73\xd3\x73\xd4\x73\xd5\x73\xd6\x73\xd7\x73\xd8\x73\xd9\x73\xda\x73\xdb\x73\xdc\x73\xdd\x73\xde\x73\xdf\x73\xe0\x73\xe1\x73\xe2\x73\xe3\x73\xe4\x73\xe5\x73\xe6\x73\xe7\x73\xe8\x73\xe9\x73\xea\x73\xeb\x73\xec\x73\xed\x73\xee\x73\xef\x73\xf0\x73\xf1\x73\xf2\x73\xf3\x73\xf4\x73\xf5\x73\xf6\x73\xf7\x73\xf8\x73\xf9\x73\xfa\x73\xfb\x73\xfc", /* a380 */ "\x73\xfd\x73\xfe\x74\x41\x74\x42\x74\x43\x74\x44\x74\x45\x74\x46\x74\x47\x74\x48\x74\x49\x74\x4a\x74\x4b\x74\x4c\x74\x4d\x74\x4e\x74\x4f\x74\x50\x74\x51\x74\x52\x74\x53\x74\x54\x74\x55\x74\x56\x74\x57\x74\x58\x74\x59\x74\x5a\x74\x5b\x74\x5c\x74\x5d\x74\x5e\x74\x5f\x74\x60\x74\x61\x74\x62\x74\x63\x74\x64\x74\x65\x74\x66\x74\x67\x74\x68\x74\x69\x74\x6a\x74\x6b\x74\x6c\x74\x6d\x74\x6e\x74\x6f\x74\x70\x74\x71\x74\x72\x74\x73\x74\x74\x74\x75\x74\x76\x74\x77\x74\x78\x74\x79\x74\x7a\x74\x7b\x74\x7c\x74\x7d\x74\x7e\x74\x7f\x74\x80\x74\x81\x74\x82\x74\x83\x74\x84\x74\x85\x74\x86\x74\x87\x74\x88\x74\x89\x74\x8a\x74\x8b\x74\x8c\x74\x8d\x74\x8e\x74\x8f\x74\x90\x74\x91\x74\x92\x74\x93\x74\x94\x74\x95\x74\x96\x74\x97\x74\x98\x74\x99\x74\x9a\x74\x9b\x74\x9c\x74\x9d\x74\x9e\x74\x9f\x74\xa0\x74\xa1\x74\xa2\x74\xa3\x74\xa4\x74\xa5\x74\xa6\x74\xa7\x74\xa8\x74\xa9\x74\xaa\x74\xab\x74\xac\x74\xad\x74\xae\x74\xaf\x74\xb0\x74\xb1\x74\xb2\x74\xb3\x74\xb4\x74\xb5\x74\xb6\x74\xb7\x74\xb8\x74\xb9\x74\xba\x74\xbb\x74\xbc\x74\xbd\x74\xbe", /* a400 */ "\x74\xbf\x74\xc0\x74\xc1\x74\xc2\x74\xc3\x74\xc4\x74\xc5\x74\xc6\x74\xc7\x74\xc8\x74\xc9\x74\xca\x74\xcb\x74\xcc\x74\xcd\x74\xce\x74\xcf\x74\xd0\x74\xd1\x74\xd2\x74\xd3\x74\xd4\x74\xd5\x74\xd6\x74\xd7\x74\xd8\x74\xd9\x74\xda\x74\xdb\x74\xdc\x74\xdd\x74\xde\x74\xdf\x74\xe0\x74\xe1\x74\xe2\x74\xe3\x74\xe4\x74\xe5\x74\xe6\x74\xe7\x74\xe8\x74\xe9\x74\xea\x74\xeb\x74\xec\x74\xed\x74\xee\x74\xef\x74\xf0\x74\xf1\x74\xf2\x74\xf3\x74\xf4\x74\xf5\x74\xf6\x74\xf7\x74\xf8\x74\xf9\x74\xfa\x74\xfb\x74\xfc\x74\xfd\x74\xfe\x75\x41\x75\x42\x75\x43\x75\x44\x75\x45\x75\x46\x75\x47\x75\x48\x75\x49\x75\x4a\x75\x4b\x75\x4c\x75\x4d\x75\x4e\x75\x4f\x75\x50\x75\x51\x75\x52\x75\x53\x75\x54\x75\x55\x75\x56\x75\x57\x75\x58\x75\x59\x75\x5a\x75\x5b\x75\x5c\x75\x5d\x75\x5e\x75\x5f\x75\x60\x75\x61\x75\x62\x75\x63\x75\x64\x75\x65\x75\x66\x75\x67\x75\x68\x75\x69\x75\x6a\x75\x6b\x75\x6c\x75\x6d\x75\x6e\x75\x6f\x75\x70\x75\x71\x75\x72\x75\x73\x75\x74\x75\x75\x75\x76\x75\x77\x75\x78\x75\x79\x75\x7a\x75\x7b\x75\x7c\x75\x7d\x75\x7e\x75\x7f\x75\x80", /* a480 */ "\x75\x81\x75\x82\x75\x83\x75\x84\x75\x85\x75\x86\x75\x87\x75\x88\x75\x89\x75\x8a\x75\x8b\x75\x8c\x75\x8d\x75\x8e\x75\x8f\x75\x90\x75\x91\x75\x92\x75\x93\x75\x94\x75\x95\x75\x96\x75\x97\x75\x98\x75\x99\x75\x9a\x75\x9b\x75\x9c\x75\x9d\x75\x9e\x75\x9f\x75\xa0\x75\xa1\x75\xa2\x75\xa3\x75\xa4\x75\xa5\x75\xa6\x75\xa7\x75\xa8\x75\xa9\x75\xaa\x75\xab\x75\xac\x75\xad\x75\xae\x75\xaf\x75\xb0\x75\xb1\x75\xb2\x75\xb3\x75\xb4\x75\xb5\x75\xb6\x75\xb7\x75\xb8\x75\xb9\x75\xba\x75\xbb\x75\xbc\x75\xbd\x75\xbe\x75\xbf\x75\xc0\x75\xc1\x75\xc2\x75\xc3\x75\xc4\x75\xc5\x75\xc6\x75\xc7\x75\xc8\x75\xc9\x75\xca\x75\xcb\x75\xcc\x75\xcd\x75\xce\x75\xcf\x75\xd0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* a500 */ NULL, /* a580 */ NULL, /* a600 */ NULL, /* a680 */ NULL, /* a700 */ NULL, /* a780 */ NULL, /* a800 */ NULL, /* a880 */ NULL, /* a900 */ NULL, /* a980 */ NULL, /* aa00 */ NULL, /* aa80 */ NULL, /* ab00 */ NULL, /* ab80 */ NULL, /* ac00 */ NULL, /* ac80 */ NULL, /* ad00 */ NULL, /* ad80 */ NULL, /* ae00 */ NULL, /* ae80 */ NULL, /* af00 */ NULL, /* af80 */ NULL, /* b000 */ NULL, /* b080 */ NULL, /* b100 */ NULL, /* b180 */ NULL, /* b200 */ NULL, /* b280 */ NULL, /* b300 */ NULL, /* b380 */ NULL, /* b400 */ NULL, /* b480 */ NULL, /* b500 */ NULL, /* b580 */ NULL, /* b600 */ NULL, /* b680 */ NULL, /* b700 */ NULL, /* b780 */ NULL, /* b800 */ NULL, /* b880 */ NULL, /* b900 */ NULL, /* b980 */ NULL, /* ba00 */ NULL, /* ba80 */ NULL, /* bb00 */ NULL, /* bb80 */ NULL, /* bc00 */ NULL, /* bc80 */ NULL, /* bd00 */ NULL, /* bd80 */ NULL, /* be00 */ NULL, /* be80 */ NULL, /* bf00 */ NULL, /* bf80 */ NULL, /* c000 */ NULL, /* c080 */ NULL, /* c100 */ NULL, /* c180 */ NULL, /* c200 */ NULL, /* c280 */ NULL, /* c300 */ NULL, /* c380 */ NULL, /* c400 */ NULL, /* c480 */ NULL, /* c500 */ NULL, /* c580 */ NULL, /* c600 */ NULL, /* c680 */ NULL, /* c700 */ NULL, /* c780 */ NULL, /* c800 */ NULL, /* c880 */ NULL, /* c900 */ NULL, /* c980 */ NULL, /* ca00 */ NULL, /* ca80 */ NULL, /* cb00 */ NULL, /* cb80 */ NULL, /* cc00 */ NULL, /* cc80 */ NULL, /* cd00 */ NULL, /* cd80 */ NULL, /* ce00 */ NULL, /* ce80 */ NULL, /* cf00 */ NULL, /* cf80 */ NULL, /* d000 */ NULL, /* d080 */ NULL, /* d100 */ NULL, /* d180 */ NULL, /* d200 */ NULL, /* d280 */ NULL, /* d300 */ NULL, /* d380 */ NULL, /* d400 */ NULL, /* d480 */ NULL, /* d500 */ NULL, /* d580 */ NULL, /* d600 */ NULL, /* d680 */ NULL, /* d700 */ NULL, /* d780 */ NULL, /* d800 */ NULL, /* d880 */ NULL, /* d900 */ NULL, /* d980 */ NULL, /* da00 */ NULL, /* da80 */ NULL, /* db00 */ NULL, /* db80 */ NULL, /* dc00 */ NULL, /* dc80 */ NULL, /* dd00 */ NULL, /* dd80 */ NULL, /* de00 */ NULL, /* de80 */ NULL, /* df00 */ NULL, /* df80 */ NULL, /* e000 */ "\x76\x41\x76\x42\x76\x43\x76\x44\x76\x45\x76\x46\x76\x47\x76\x48\x76\x49\x76\x4a\x76\x4b\x76\x4c\x76\x4d\x76\x4e\x76\x4f\x76\x50\x76\x51\x76\x52\x76\x53\x76\x54\x76\x55\x76\x56\x76\x57\x76\x58\x76\x59\x76\x5a\x76\x5b\x76\x5c\x76\x5d\x76\x5e\x76\x5f\x76\x60\x76\x61\x76\x62\x76\x63\x76\x64\x76\x65\x76\x66\x76\x67\x76\x68\x76\x69\x76\x6a\x76\x6b\x76\x6c\x76\x6d\x76\x6e\x76\x6f\x76\x70\x76\x71\x76\x72\x76\x73\x76\x74\x76\x75\x76\x76\x76\x77\x76\x78\x76\x79\x76\x7a\x76\x7b\x76\x7c\x76\x7d\x76\x7e\x76\x7f\x76\x81\x76\x82\x76\x83\x76\x84\x76\x85\x76\x86\x76\x87\x76\x88\x76\x89\x76\x8a\x76\x8b\x76\x8c\x76\x8d\x76\x8e\x76\x8f\x76\x90\x76\x91\x76\x92\x76\x93\x76\x94\x76\x95\x76\x96\x76\x97\x76\x98\x76\x99\x76\x9a\x76\x9b\x76\x9c\x76\x9d\x76\x9e\x76\x9f\x76\xa0\x76\xa1\x76\xa2\x76\xa3\x76\xa4\x76\xa5\x76\xa6\x76\xa7\x76\xa8\x76\xa9\x76\xaa\x76\xab\x76\xac\x76\xad\x76\xae\x76\xaf\x76\xb0\x76\xb1\x76\xb2\x76\xb3\x76\xb4\x76\xb5\x76\xb6\x76\xb7\x76\xb8\x76\xb9\x76\xba\x76\xbb\x76\xbc\x76\xbd\x76\xbe\x76\xbf\x76\xc0\x76\xc1", /* e080 */ "\x76\xc2\x76\xc3\x76\xc4\x76\xc5\x76\xc6\x76\xc7\x76\xc8\x76\xc9\x76\xca\x76\xcb\x76\xcc\x76\xcd\x76\xce\x76\xcf\x76\xd0\x76\xd1\x76\xd2\x76\xd3\x76\xd4\x76\xd5\x76\xd6\x76\xd7\x76\xd8\x76\xd9\x76\xda\x76\xdb\x76\xdc\x76\xdd\x76\xde\x76\xdf\x76\xe0\x76\xe1\x76\xe2\x76\xe3\x76\xe4\x76\xe5\x76\xe6\x76\xe7\x76\xe8\x76\xe9\x76\xea\x76\xeb\x76\xec\x76\xed\x76\xee\x76\xef\x76\xf0\x76\xf1\x76\xf2\x76\xf3\x76\xf4\x76\xf5\x76\xf6\x76\xf7\x76\xf8\x76\xf9\x76\xfa\x76\xfb\x76\xfc\x76\xfd\x77\x41\x77\x42\x77\x43\x77\x44\x77\x45\x77\x46\x77\x47\x77\x48\x77\x49\x77\x4a\x77\x4b\x77\x4c\x77\x4d\x77\x4e\x77\x4f\x77\x50\x77\x51\x77\x52\x77\x53\x77\x54\x77\x55\x77\x56\x77\x57\x77\x58\x77\x59\x77\x5a\x77\x5b\x77\x5c\x77\x5d\x77\x5e\x77\x5f\x77\x60\x77\x61\x77\x62\x77\x63\x77\x64\x77\x65\x77\x66\x77\x67\x77\x68\x77\x69\x77\x6a\x77\x6b\x77\x6c\x77\x6d\x77\x6e\x77\x6f\x77\x70\x77\x71\x77\x72\x77\x73\x77\x74\x77\x75\x77\x76\x77\x77\x77\x78\x77\x79\x77\x7a\x77\x7b\x77\x7c\x77\x7d\x77\x7e\x77\x7f\x77\x81\x77\x82\x77\x83\x77\x84\x77\x85", /* e100 */ "\x77\x86\x77\x87\x77\x88\x77\x89\x77\x8a\x77\x8b\x77\x8c\x77\x8d\x77\x8e\x77\x8f\x77\x90\x77\x91\x77\x92\x77\x93\x77\x94\x77\x95\x77\x96\x77\x97\x77\x98\x77\x99\x77\x9a\x77\x9b\x77\x9c\x77\x9d\x77\x9e\x77\x9f\x77\xa0\x77\xa1\x77\xa2\x77\xa3\x77\xa4\x77\xa5\x77\xa6\x77\xa7\x77\xa8\x77\xa9\x77\xaa\x77\xab\x77\xac\x77\xad\x77\xae\x77\xaf\x77\xb0\x77\xb1\x77\xb2\x77\xb3\x77\xb4\x77\xb5\x77\xb6\x77\xb7\x77\xb8\x77\xb9\x77\xba\x77\xbb\x77\xbc\x77\xbd\x77\xbe\x77\xbf\x77\xc0\x77\xc1\x77\xc2\x77\xc3\x77\xc4\x77\xc5\x77\xc6\x77\xc7\x77\xc8\x77\xc9\x77\xca\x77\xcb\x77\xcc\x77\xcd\x77\xce\x77\xcf\x77\xd0\x77\xd1\x77\xd2\x77\xd3\x77\xd4\x77\xd5\x77\xd6\x77\xd7\x77\xd8\x77\xd9\x77\xda\x77\xdb\x77\xdc\x77\xdd\x77\xde\x77\xdf\x77\xe0\x77\xe1\x77\xe2\x77\xe3\x77\xe4\x77\xe5\x77\xe6\x77\xe7\x77\xe8\x77\xe9\x77\xea\x77\xeb\x77\xec\x77\xed\x77\xee\x77\xef\x77\xf0\x77\xf1\x77\xf2\x77\xf3\x77\xf4\x77\xf5\x77\xf6\x77\xf7\x77\xf8\x77\xf9\x77\xfa\x77\xfb\x77\xfc\x77\xfd\x78\x41\x78\x42\x78\x43\x78\x44\x78\x45\x78\x46\x78\x47\x78\x48", /* e180 */ "\x78\x49\x78\x4a\x78\x4b\x78\x4c\x78\x4d\x78\x4e\x78\x4f\x78\x50\x78\x51\x78\x52\x78\x53\x78\x54\x78\x55\x78\x56\x78\x57\x78\x58\x78\x59\x78\x5a\x78\x5b\x78\x5c\x78\x5d\x78\x5e\x78\x5f\x78\x60\x78\x61\x78\x62\x78\x63\x78\x64\x78\x65\x78\x66\x78\x67\x78\x68\x78\x69\x78\x6a\x78\x6b\x78\x6c\x78\x6d\x78\x6e\x78\x6f\x78\x70\x78\x71\x78\x72\x78\x73\x78\x74\x78\x75\x78\x76\x78\x77\x78\x78\x78\x79\x78\x7a\x78\x7b\x78\x7c\x78\x7d\x78\x7e\x78\x7f\x78\x81\x78\x82\x78\x83\x78\x84\x78\x85\x78\x86\x78\x87\x78\x88\x78\x89\x78\x8a\x78\x8b\x78\x8c\x78\x8d\x78\x8e\x78\x8f\x78\x90\x78\x91\x78\x92\x78\x93\x78\x94\x78\x95\x78\x96\x78\x97\x78\x98\x78\x99\x78\x9a\x78\x9b\x78\x9c\x78\x9d\x78\x9e\x78\x9f\x78\xa0\x78\xa1\x78\xa2\x78\xa3\x78\xa4\x78\xa5\x78\xa6\x78\xa7\x78\xa8\x78\xa9\x78\xaa\x78\xab\x78\xac\x78\xad\x78\xae\x78\xaf\x78\xb0\x78\xb1\x78\xb2\x78\xb3\x78\xb4\x78\xb5\x78\xb6\x78\xb7\x78\xb8\x78\xb9\x78\xba\x78\xbb\x78\xbc\x78\xbd\x78\xbe\x78\xbf\x78\xc0\x78\xc1\x78\xc2\x78\xc3\x78\xc4\x78\xc5\x78\xc6\x78\xc7\x78\xc8\x78\xc9", /* e200 */ "\x78\xca\x78\xcb\x78\xcc\x78\xcd\x78\xce\x78\xcf\x78\xd0\x78\xd1\x78\xd2\x78\xd3\x78\xd4\x78\xd5\x78\xd6\x78\xd7\x78\xd8\x78\xd9\x78\xda\x78\xdb\x78\xdc\x78\xdd\x78\xde\x78\xdf\x78\xe0\x78\xe1\x78\xe2\x78\xe3\x78\xe4\x78\xe5\x78\xe6\x78\xe7\x78\xe8\x78\xe9\x78\xea\x78\xeb\x78\xec\x78\xed\x78\xee\x78\xef\x78\xf0\x78\xf1\x78\xf2\x78\xf3\x78\xf4\x78\xf5\x78\xf6\x78\xf7\x78\xf8\x78\xf9\x78\xfa\x78\xfb\x78\xfc\x78\xfd\x79\x41\x79\x42\x79\x43\x79\x44\x79\x45\x79\x46\x79\x47\x79\x48\x79\x49\x79\x4a\x79\x4b\x79\x4c\x79\x4d\x79\x4e\x79\x4f\x79\x50\x79\x51\x79\x52\x79\x53\x79\x54\x79\x55\x79\x56\x79\x57\x79\x58\x79\x59\x79\x5a\x79\x5b\x79\x5c\x79\x5d\x79\x5e\x79\x5f\x79\x60\x79\x61\x79\x62\x79\x63\x79\x64\x79\x65\x79\x66\x79\x67\x79\x68\x79\x69\x79\x6a\x79\x6b\x79\x6c\x79\x6d\x79\x6e\x79\x6f\x79\x70\x79\x71\x79\x72\x79\x73\x79\x74\x79\x75\x79\x76\x79\x77\x79\x78\x79\x79\x79\x7a\x79\x7b\x79\x7c\x79\x7d\x79\x7e\x79\x7f\x79\x81\x79\x82\x79\x83\x79\x84\x79\x85\x79\x86\x79\x87\x79\x88\x79\x89\x79\x8a\x79\x8b\x79\x8c\x79\x8d", /* e280 */ "\x79\x8e\x79\x8f\x79\x90\x79\x91\x79\x92\x79\x93\x79\x94\x79\x95\x79\x96\x79\x97\x79\x98\x79\x99\x79\x9a\x79\x9b\x79\x9c\x79\x9d\x79\x9e\x79\x9f\x79\xa0\x79\xa1\x79\xa2\x79\xa3\x79\xa4\x79\xa5\x79\xa6\x79\xa7\x79\xa8\x79\xa9\x79\xaa\x79\xab\x79\xac\x79\xad\x79\xae\x79\xaf\x79\xb0\x79\xb1\x79\xb2\x79\xb3\x79\xb4\x79\xb5\x79\xb6\x79\xb7\x79\xb8\x79\xb9\x79\xba\x79\xbb\x79\xbc\x79\xbd\x79\xbe\x79\xbf\x79\xc0\x79\xc1\x79\xc2\x79\xc3\x79\xc4\x79\xc5\x79\xc6\x79\xc7\x79\xc8\x79\xc9\x79\xca\x79\xcb\x79\xcc\x79\xcd\x79\xce\x79\xcf\x79\xd0\x79\xd1\x79\xd2\x79\xd3\x79\xd4\x79\xd5\x79\xd6\x79\xd7\x79\xd8\x79\xd9\x79\xda\x79\xdb\x79\xdc\x79\xdd\x79\xde\x79\xdf\x79\xe0\x79\xe1\x79\xe2\x79\xe3\x79\xe4\x79\xe5\x79\xe6\x79\xe7\x79\xe8\x79\xe9\x79\xea\x79\xeb\x79\xec\x79\xed\x79\xee\x79\xef\x79\xf0\x79\xf1\x79\xf2\x79\xf3\x79\xf4\x79\xf5\x79\xf6\x79\xf7\x79\xf8\x79\xf9\x79\xfa\x79\xfb\x79\xfc\x79\xfd\x7a\x41\x7a\x42\x7a\x43\x7a\x44\x7a\x45\x7a\x46\x7a\x47\x7a\x48\x7a\x49\x7a\x4a\x7a\x4b\x7a\x4c\x7a\x4d\x7a\x4e\x7a\x4f\x7a\x50", /* e300 */ "\x7a\x51\x7a\x52\x7a\x53\x7a\x54\x7a\x55\x7a\x56\x7a\x57\x7a\x58\x7a\x59\x7a\x5a\x7a\x5b\x7a\x5c\x7a\x5d\x7a\x5e\x7a\x5f\x7a\x60\x7a\x61\x7a\x62\x7a\x63\x7a\x64\x7a\x65\x7a\x66\x7a\x67\x7a\x68\x7a\x69\x7a\x6a\x7a\x6b\x7a\x6c\x7a\x6d\x7a\x6e\x7a\x6f\x7a\x70\x7a\x71\x7a\x72\x7a\x73\x7a\x74\x7a\x75\x7a\x76\x7a\x77\x7a\x78\x7a\x79\x7a\x7a\x7a\x7b\x7a\x7c\x7a\x7d\x7a\x7e\x7a\x7f\x7a\x81\x7a\x82\x7a\x83\x7a\x84\x7a\x85\x7a\x86\x7a\x87\x7a\x88\x7a\x89\x7a\x8a\x7a\x8b\x7a\x8c\x7a\x8d\x7a\x8e\x7a\x8f\x7a\x90\x7a\x91\x7a\x92\x7a\x93\x7a\x94\x7a\x95\x7a\x96\x7a\x97\x7a\x98\x7a\x99\x7a\x9a\x7a\x9b\x7a\x9c\x7a\x9d\x7a\x9e\x7a\x9f\x7a\xa0\x7a\xa1\x7a\xa2\x7a\xa3\x7a\xa4\x7a\xa5\x7a\xa6\x7a\xa7\x7a\xa8\x7a\xa9\x7a\xaa\x7a\xab\x7a\xac\x7a\xad\x7a\xae\x7a\xaf\x7a\xb0\x7a\xb1\x7a\xb2\x7a\xb3\x7a\xb4\x7a\xb5\x7a\xb6\x7a\xb7\x7a\xb8\x7a\xb9\x7a\xba\x7a\xbb\x7a\xbc\x7a\xbd\x7a\xbe\x7a\xbf\x7a\xc0\x7a\xc1\x7a\xc2\x7a\xc3\x7a\xc4\x7a\xc5\x7a\xc6\x7a\xc7\x7a\xc8\x7a\xc9\x7a\xca\x7a\xcb\x7a\xcc\x7a\xcd\x7a\xce\x7a\xcf\x7a\xd0\x7a\xd1", /* e380 */ "\x7a\xd2\x7a\xd3\x7a\xd4\x7a\xd5\x7a\xd6\x7a\xd7\x7a\xd8\x7a\xd9\x7a\xda\x7a\xdb\x7a\xdc\x7a\xdd\x7a\xde\x7a\xdf\x7a\xe0\x7a\xe1\x7a\xe2\x7a\xe3\x7a\xe4\x7a\xe5\x7a\xe6\x7a\xe7\x7a\xe8\x7a\xe9\x7a\xea\x7a\xeb\x7a\xec\x7a\xed\x7a\xee\x7a\xef\x7a\xf0\x7a\xf1\x7a\xf2\x7a\xf3\x7a\xf4\x7a\xf5\x7a\xf6\x7a\xf7\x7a\xf8\x7a\xf9\x7a\xfa\x7a\xfb\x7a\xfc\x7a\xfd\x7b\x41\x7b\x42\x7b\x43\x7b\x44\x7b\x45\x7b\x46\x7b\x47\x7b\x48\x7b\x49\x7b\x4a\x7b\x4b\x7b\x4c\x7b\x4d\x7b\x4e\x7b\x4f\x7b\x50\x7b\x51\x7b\x52\x7b\x53\x7b\x54\x7b\x55\x7b\x56\x7b\x57\x7b\x58\x7b\x59\x7b\x5a\x7b\x5b\x7b\x5c\x7b\x5d\x7b\x5e\x7b\x5f\x7b\x60\x7b\x61\x7b\x62\x7b\x63\x7b\x64\x7b\x65\x7b\x66\x7b\x67\x7b\x68\x7b\x69\x7b\x6a\x7b\x6b\x7b\x6c\x7b\x6d\x7b\x6e\x7b\x6f\x7b\x70\x7b\x71\x7b\x72\x7b\x73\x7b\x74\x7b\x75\x7b\x76\x7b\x77\x7b\x78\x7b\x79\x7b\x7a\x7b\x7b\x7b\x7c\x7b\x7d\x7b\x7e\x7b\x7f\x7b\x81\x7b\x82\x7b\x83\x7b\x84\x7b\x85\x7b\x86\x7b\x87\x7b\x88\x7b\x89\x7b\x8a\x7b\x8b\x7b\x8c\x7b\x8d\x7b\x8e\x7b\x8f\x7b\x90\x7b\x91\x7b\x92\x7b\x93\x7b\x94\x7b\x95", /* e400 */ "\x7b\x96\x7b\x97\x7b\x98\x7b\x99\x7b\x9a\x7b\x9b\x7b\x9c\x7b\x9d\x7b\x9e\x7b\x9f\x7b\xa0\x7b\xa1\x7b\xa2\x7b\xa3\x7b\xa4\x7b\xa5\x7b\xa6\x7b\xa7\x7b\xa8\x7b\xa9\x7b\xaa\x7b\xab\x7b\xac\x7b\xad\x7b\xae\x7b\xaf\x7b\xb0\x7b\xb1\x7b\xb2\x7b\xb3\x7b\xb4\x7b\xb5\x7b\xb6\x7b\xb7\x7b\xb8\x7b\xb9\x7b\xba\x7b\xbb\x7b\xbc\x7b\xbd\x7b\xbe\x7b\xbf\x7b\xc0\x7b\xc1\x7b\xc2\x7b\xc3\x7b\xc4\x7b\xc5\x7b\xc6\x7b\xc7\x7b\xc8\x7b\xc9\x7b\xca\x7b\xcb\x7b\xcc\x7b\xcd\x7b\xce\x7b\xcf\x7b\xd0\x7b\xd1\x7b\xd2\x7b\xd3\x7b\xd4\x7b\xd5\x7b\xd6\x7b\xd7\x7b\xd8\x7b\xd9\x7b\xda\x7b\xdb\x7b\xdc\x7b\xdd\x7b\xde\x7b\xdf\x7b\xe0\x7b\xe1\x7b\xe2\x7b\xe3\x7b\xe4\x7b\xe5\x7b\xe6\x7b\xe7\x7b\xe8\x7b\xe9\x7b\xea\x7b\xeb\x7b\xec\x7b\xed\x7b\xee\x7b\xef\x7b\xf0\x7b\xf1\x7b\xf2\x7b\xf3\x7b\xf4\x7b\xf5\x7b\xf6\x7b\xf7\x7b\xf8\x7b\xf9\x7b\xfa\x7b\xfb\x7b\xfc\x7b\xfd\x7c\x41\x7c\x42\x7c\x43\x7c\x44\x7c\x45\x7c\x46\x7c\x47\x7c\x48\x7c\x49\x7c\x4a\x7c\x4b\x7c\x4c\x7c\x4d\x7c\x4e\x7c\x4f\x7c\x50\x7c\x51\x7c\x52\x7c\x53\x7c\x54\x7c\x55\x7c\x56\x7c\x57\x7c\x58", /* e480 */ "\x7c\x59\x7c\x5a\x7c\x5b\x7c\x5c\x7c\x5d\x7c\x5e\x7c\x5f\x7c\x60\x7c\x61\x7c\x62\x7c\x63\x7c\x64\x7c\x65\x7c\x66\x7c\x67\x7c\x68\x7c\x69\x7c\x6a\x7c\x6b\x7c\x6c\x7c\x6d\x7c\x6e\x7c\x6f\x7c\x70\x7c\x71\x7c\x72\x7c\x73\x7c\x74\x7c\x75\x7c\x76\x7c\x77\x7c\x78\x7c\x79\x7c\x7a\x7c\x7b\x7c\x7c\x7c\x7d\x7c\x7e\x7c\x7f\x7c\x81\x7c\x82\x7c\x83\x7c\x84\x7c\x85\x7c\x86\x7c\x87\x7c\x88\x7c\x89\x7c\x8a\x7c\x8b\x7c\x8c\x7c\x8d\x7c\x8e\x7c\x8f\x7c\x90\x7c\x91\x7c\x92\x7c\x93\x7c\x94\x7c\x95\x7c\x96\x7c\x97\x7c\x98\x7c\x99\x7c\x9a\x7c\x9b\x7c\x9c\x7c\x9d\x7c\x9e\x7c\x9f\x7c\xa0\x7c\xa1\x7c\xa2\x7c\xa3\x7c\xa4\x7c\xa5\x7c\xa6\x7c\xa7\x7c\xa8\x7c\xa9\x7c\xaa\x7c\xab\x7c\xac\x7c\xad\x7c\xae\x7c\xaf\x7c\xb0\x7c\xb1\x7c\xb2\x7c\xb3\x7c\xb4\x7c\xb5\x7c\xb6\x7c\xb7\x7c\xb8\x7c\xb9\x7c\xba\x7c\xbb\x7c\xbc\x7c\xbd\x7c\xbe\x7c\xbf\x7c\xc0\x7c\xc1\x7c\xc2\x7c\xc3\x7c\xc4\x7c\xc5\x7c\xc6\x7c\xc7\x7c\xc8\x7c\xc9\x7c\xca\x7c\xcb\x7c\xcc\x7c\xcd\x7c\xce\x7c\xcf\x7c\xd0\x7c\xd1\x7c\xd2\x7c\xd3\x7c\xd4\x7c\xd5\x7c\xd6\x7c\xd7\x7c\xd8\x7c\xd9", /* e500 */ "\x7c\xda\x7c\xdb\x7c\xdc\x7c\xdd\x7c\xde\x7c\xdf\x7c\xe0\x7c\xe1\x7c\xe2\x7c\xe3\x7c\xe4\x7c\xe5\x7c\xe6\x7c\xe7\x7c\xe8\x7c\xe9\x7c\xea\x7c\xeb\x7c\xec\x7c\xed\x7c\xee\x7c\xef\x7c\xf0\x7c\xf1\x7c\xf2\x7c\xf3\x7c\xf4\x7c\xf5\x7c\xf6\x7c\xf7\x7c\xf8\x7c\xf9\x7c\xfa\x7c\xfb\x7c\xfc\x7c\xfd\x7d\x41\x7d\x42\x7d\x43\x7d\x44\x7d\x45\x7d\x46\x7d\x47\x7d\x48\x7d\x49\x7d\x4a\x7d\x4b\x7d\x4c\x7d\x4d\x7d\x4e\x7d\x4f\x7d\x50\x7d\x51\x7d\x52\x7d\x53\x7d\x54\x7d\x55\x7d\x56\x7d\x57\x7d\x58\x7d\x59\x7d\x5a\x7d\x5b\x7d\x5c\x7d\x5d\x7d\x5e\x7d\x5f\x7d\x60\x7d\x61\x7d\x62\x7d\x63\x7d\x64\x7d\x65\x7d\x66\x7d\x67\x7d\x68\x7d\x69\x7d\x6a\x7d\x6b\x7d\x6c\x7d\x6d\x7d\x6e\x7d\x6f\x7d\x70\x7d\x71\x7d\x72\x7d\x73\x7d\x74\x7d\x75\x7d\x76\x7d\x77\x7d\x78\x7d\x79\x7d\x7a\x7d\x7b\x7d\x7c\x7d\x7d\x7d\x7e\x7d\x7f\x7d\x81\x7d\x82\x7d\x83\x7d\x84\x7d\x85\x7d\x86\x7d\x87\x7d\x88\x7d\x89\x7d\x8a\x7d\x8b\x7d\x8c\x7d\x8d\x7d\x8e\x7d\x8f\x7d\x90\x7d\x91\x7d\x92\x7d\x93\x7d\x94\x7d\x95\x7d\x96\x7d\x97\x7d\x98\x7d\x99\x7d\x9a\x7d\x9b\x7d\x9c\x7d\x9d", /* e580 */ "\x7d\x9e\x7d\x9f\x7d\xa0\x7d\xa1\x7d\xa2\x7d\xa3\x7d\xa4\x7d\xa5\x7d\xa6\x7d\xa7\x7d\xa8\x7d\xa9\x7d\xaa\x7d\xab\x7d\xac\x7d\xad\x7d\xae\x7d\xaf\x7d\xb0\x7d\xb1\x7d\xb2\x7d\xb3\x7d\xb4\x7d\xb5\x7d\xb6\x7d\xb7\x7d\xb8\x7d\xb9\x7d\xba\x7d\xbb\x7d\xbc\x7d\xbd\x7d\xbe\x7d\xbf\x7d\xc0\x7d\xc1\x7d\xc2\x7d\xc3\x7d\xc4\x7d\xc5\x7d\xc6\x7d\xc7\x7d\xc8\x7d\xc9\x7d\xca\x7d\xcb\x7d\xcc\x7d\xcd\x7d\xce\x7d\xcf\x7d\xd0\x7d\xd1\x7d\xd2\x7d\xd3\x7d\xd4\x7d\xd5\x7d\xd6\x7d\xd7\x7d\xd8\x7d\xd9\x7d\xda\x7d\xdb\x7d\xdc\x7d\xdd\x7d\xde\x7d\xdf\x7d\xe0\x7d\xe1\x7d\xe2\x7d\xe3\x7d\xe4\x7d\xe5\x7d\xe6\x7d\xe7\x7d\xe8\x7d\xe9\x7d\xea\x7d\xeb\x7d\xec\x7d\xed\x7d\xee\x7d\xef\x7d\xf0\x7d\xf1\x7d\xf2\x7d\xf3\x7d\xf4\x7d\xf5\x7d\xf6\x7d\xf7\x7d\xf8\x7d\xf9\x7d\xfa\x7d\xfb\x7d\xfc\x7d\xfd\x7e\x41\x7e\x42\x7e\x43\x7e\x44\x7e\x45\x7e\x46\x7e\x47\x7e\x48\x7e\x49\x7e\x4a\x7e\x4b\x7e\x4c\x7e\x4d\x7e\x4e\x7e\x4f\x7e\x50\x7e\x51\x7e\x52\x7e\x53\x7e\x54\x7e\x55\x7e\x56\x7e\x57\x7e\x58\x7e\x59\x7e\x5a\x7e\x5b\x7e\x5c\x7e\x5d\x7e\x5e\x7e\x5f\x7e\x60", /* e600 */ "\x7e\x61\x7e\x62\x7e\x63\x7e\x64\x7e\x65\x7e\x66\x7e\x67\x7e\x68\x7e\x69\x7e\x6a\x7e\x6b\x7e\x6c\x7e\x6d\x7e\x6e\x7e\x6f\x7e\x70\x7e\x71\x7e\x72\x7e\x73\x7e\x74\x7e\x75\x7e\x76\x7e\x77\x7e\x78\x7e\x79\x7e\x7a\x7e\x7b\x7e\x7c\x7e\x7d\x7e\x7e\x7e\x7f\x7e\x81\x7e\x82\x7e\x83\x7e\x84\x7e\x85\x7e\x86\x7e\x87\x7e\x88\x7e\x89\x7e\x8a\x7e\x8b\x7e\x8c\x7e\x8d\x7e\x8e\x7e\x8f\x7e\x90\x7e\x91\x7e\x92\x7e\x93\x7e\x94\x7e\x95\x7e\x96\x7e\x97\x7e\x98\x7e\x99\x7e\x9a\x7e\x9b\x7e\x9c\x7e\x9d\x7e\x9e\x7e\x9f\x7e\xa0\x7e\xa1\x7e\xa2\x7e\xa3\x7e\xa4\x7e\xa5\x7e\xa6\x7e\xa7\x7e\xa8\x7e\xa9\x7e\xaa\x7e\xab\x7e\xac\x7e\xad\x7e\xae\x7e\xaf\x7e\xb0\x7e\xb1\x7e\xb2\x7e\xb3\x7e\xb4\x7e\xb5\x7e\xb6\x7e\xb7\x7e\xb8\x7e\xb9\x7e\xba\x7e\xbb\x7e\xbc\x7e\xbd\x7e\xbe\x7e\xbf\x7e\xc0\x7e\xc1\x7e\xc2\x7e\xc3\x7e\xc4\x7e\xc5\x7e\xc6\x7e\xc7\x7e\xc8\x7e\xc9\x7e\xca\x7e\xcb\x7e\xcc\x7e\xcd\x7e\xce\x7e\xcf\x7e\xd0\x7e\xd1\x7e\xd2\x7e\xd3\x7e\xd4\x7e\xd5\x7e\xd6\x7e\xd7\x7e\xd8\x7e\xd9\x7e\xda\x7e\xdb\x7e\xdc\x7e\xdd\x7e\xde\x7e\xdf\x7e\xe0\x7e\xe1", /* e680 */ "\x7e\xe2\x7e\xe3\x7e\xe4\x7e\xe5\x7e\xe6\x7e\xe7\x7e\xe8\x7e\xe9\x7e\xea\x7e\xeb\x7e\xec\x7e\xed\x7e\xee\x7e\xef\x7e\xf0\x7e\xf1\x7e\xf2\x7e\xf3\x7e\xf4\x7e\xf5\x7e\xf6\x7e\xf7\x7e\xf8\x7e\xf9\x7e\xfa\x7e\xfb\x7e\xfc\x7e\xfd\x7f\x41\x7f\x42\x7f\x43\x7f\x44\x7f\x45\x7f\x46\x7f\x47\x7f\x48\x7f\x49\x7f\x4a\x7f\x4b\x7f\x4c\x7f\x4d\x7f\x4e\x7f\x4f\x7f\x50\x7f\x51\x7f\x52\x7f\x53\x7f\x54\x7f\x55\x7f\x56\x7f\x57\x7f\x58\x7f\x59\x7f\x5a\x7f\x5b\x7f\x5c\x7f\x5d\x7f\x5e\x7f\x5f\x7f\x60\x7f\x61\x7f\x62\x7f\x63\x7f\x64\x7f\x65\x7f\x66\x7f\x67\x7f\x68\x7f\x69\x7f\x6a\x7f\x6b\x7f\x6c\x7f\x6d\x7f\x6e\x7f\x6f\x7f\x70\x7f\x71\x7f\x72\x7f\x73\x7f\x74\x7f\x75\x7f\x76\x7f\x77\x7f\x78\x7f\x79\x7f\x7a\x7f\x7b\x7f\x7c\x7f\x7d\x7f\x7e\x7f\x7f\x7f\x81\x7f\x82\x7f\x83\x7f\x84\x7f\x85\x7f\x86\x7f\x87\x7f\x88\x7f\x89\x7f\x8a\x7f\x8b\x7f\x8c\x7f\x8d\x7f\x8e\x7f\x8f\x7f\x90\x7f\x91\x7f\x92\x7f\x93\x7f\x94\x7f\x95\x7f\x96\x7f\x97\x7f\x98\x7f\x99\x7f\x9a\x7f\x9b\x7f\x9c\x7f\x9d\x7f\x9e\x7f\x9f\x7f\xa0\x7f\xa1\x7f\xa2\x7f\xa3\x7f\xa4\x7f\xa5", /* e700 */ "\x7f\xa6\x7f\xa7\x7f\xa8\x7f\xa9\x7f\xaa\x7f\xab\x7f\xac\x7f\xad\x7f\xae\x7f\xaf\x7f\xb0\x7f\xb1\x7f\xb2\x7f\xb3\x7f\xb4\x7f\xb5\x7f\xb6\x7f\xb7\x7f\xb8\x7f\xb9\x7f\xba\x7f\xbb\x7f\xbc\x7f\xbd\x7f\xbe\x7f\xbf\x7f\xc0\x7f\xc1\x7f\xc2\x7f\xc3\x7f\xc4\x7f\xc5\x7f\xc6\x7f\xc7\x7f\xc8\x7f\xc9\x7f\xca\x7f\xcb\x7f\xcc\x7f\xcd\x7f\xce\x7f\xcf\x7f\xd0\x7f\xd1\x7f\xd2\x7f\xd3\x7f\xd4\x7f\xd5\x7f\xd6\x7f\xd7\x7f\xd8\x7f\xd9\x7f\xda\x7f\xdb\x7f\xdc\x7f\xdd\x7f\xde\x7f\xdf\x7f\xe0\x7f\xe1\x7f\xe2\x7f\xe3\x7f\xe4\x7f\xe5\x7f\xe6\x7f\xe7\x7f\xe8\x7f\xe9\x7f\xea\x7f\xeb\x7f\xec\x7f\xed\x7f\xee\x7f\xef\x7f\xf0\x7f\xf1\x7f\xf2\x7f\xf3\x7f\xf4\x7f\xf5\x7f\xf6\x7f\xf7\x7f\xf8\x7f\xf9\x7f\xfa\x7f\xfb\x7f\xfc\x7f\xfd\x80\x41\x80\x42\x80\x43\x80\x44\x80\x45\x80\x46\x80\x47\x80\x48\x80\x49\x80\x4a\x80\x4b\x80\x4c\x80\x4d\x80\x4e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* e780 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xfc\x90\xfc\x91\xfc\x92\xfc\x93\xfc\x94\xfc\x95\xfc\x96\xfc\x97\xfc\x98\xfc\x99\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x46\x5c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* e800 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xce\x57\xce\x58\xce\x59\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xce\x5f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xce\x67\x00\x00\x00\x00\x00\x00\x00\x00\xce\x6c\xce\x6d\x00\x00\x00\x00\x00\x00\x00\x00\xce\x72\xce\x73\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xce\x7c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xce\x85\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xce\x96\xce\x97\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xce\xa6\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* e880 */ NULL, /* e900 */ NULL, /* e980 */ NULL, /* ea00 */ NULL, /* ea80 */ NULL, /* eb00 */ NULL, /* eb80 */ NULL, /* ec00 */ NULL, /* ec80 */ NULL, /* ed00 */ NULL, /* ed80 */ NULL, /* ee00 */ NULL, /* ee80 */ NULL, /* ef00 */ NULL, /* ef80 */ NULL, /* f000 */ NULL, /* f080 */ NULL, /* f100 */ NULL, /* f180 */ NULL, /* f200 */ NULL, /* f280 */ NULL, /* f300 */ NULL, /* f380 */ NULL, /* f400 */ NULL, /* f480 */ NULL, /* f500 */ NULL, /* f580 */ NULL, /* f600 */ NULL, /* f680 */ NULL, /* f700 */ NULL, /* f780 */ NULL, /* f800 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x43\x5b\x44\x5c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* f880 */ NULL, /* f900 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xce\x41\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xce\x42\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* f980 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xce\x43\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xce\x44\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xce\x45\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* fa00 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xce\x46\xce\x47\xce\x48\xce\x49\x00\x00\xce\x4a\x00\x00\xce\x4b\xce\x4c\x00\x00\x00\x00\x00\x00\xce\x4d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xce\x4e\xce\x4f\xce\x50\x00\x00\xce\x51\xce\x52\x00\x00\x00\x00\xce\x53\xce\x54\xce\x55\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* fa80 */ NULL, /* fb00 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf8\x47\xf8\x48\xf8\x49\xf8\x4a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf8\x6b\xf8\x6c\xf8\x6d\xf8\x6e\x00\x00\x00\x00", /* fb80 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf8\x7f\xf8\x80\xf8\x81\xf8\x82\xf8\x83\xf8\x84\xf8\x85\xf8\x86\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf8\x9b\xf8\x9c\xf8\x9d\xf8\x9e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf8\xc4\xf8\xc5\xf8\xc6\xf8\xc7\xf8\xc8\xf8\xc9\xf8\xca\xf8\xcb\xf8\xcc\xf8\xcd\xf8\xce\xf8\xcf\xf8\xd0\xf8\xd1\xf8\xd2\xf8\xd3\xf8\xd4\xf8\xd5\xf8\xd6\xf8\xd7\xf8\xd8\xf8\xd9\xf8\xda\xf8\xdb\xf8\xdc\xf8\xdd\xf8\xde\xf8\xdf\xf8\xe0\xf8\xe1\xf8\xe2\xf8\xe3\xf8\xe4\xf8\xe5\xf8\xe6\xf8\xe7\xf8\xe8\xf8\xe9\xf8\xea\xf8\xeb\xf8\xec\xf8\xed\xf8\xee\xf8\xef\xf8\xf0", /* fc00 */ NULL, /* fc80 */ NULL, /* fd00 */ NULL, /* fd80 */ NULL, /* fe00 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xcd\xa8\x47\x51\x00\x00\x47\x52\x47\x53\x47\x41\x47\x42\x47\x4f\x47\x50\x47\x43\x47\x44\x47\x4d\x47\x4e\x47\x47\x47\x48\x47\x45\x47\x46\x47\x49\x47\x4a\x47\x4b\x47\x4c\x00\x00\x00\x00\x00\x00\x00\x00\xcd\xa9\xcd\xaa\xcd\xab\xcd\xac\xcd\xad\xcd\xae\xcd\xaf\xcd\xb0\xcd\xb1\xcd\xb2\x00\x00\xcd\xb3\xcd\xb4\xcd\xb5\xcd\xb6\x00\x00\xcd\xb7\xcd\xb8\xcd\xb9\xcd\xba\xcd\xbb\xcd\xbc\xcd\xbd\xcd\xbe\xcd\xbf\xcd\xc0\xcd\xc1\xcd\xc2\xcd\xc3\xcd\xc4\x00\x00\xcd\xc5\xcd\xc6\xcd\xc7\xcd\xc8\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* fe80 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xfb\xd0\xfb\xd1\xfb\xd2\xfb\xd3\xfb\xd4\xfb\xd5\xfb\xd6\xfb\xd7\xfb\xd8\xfb\xd9\x00\x00\x00\x00\xfb\xdc\xfb\xdd\xfb\xde\xfb\xdf\x00\x00\x00\x00\x00\x00\x00\x00\xfb\xe4\xfb\xe5\xfb\xe6\xfb\xe7\xfb\xe8\xfb\xe9\xfb\xea\xfb\xeb\xfb\xec\xfb\xed\xfb\xee\xfb\xef\xfb\xf0\xfb\xf1\x00\x00\x00\x00\xfb\xf4\xfb\xf5\xfb\xf6\xfb\xf7\xfb\xf8\xfb\xf9\xfb\xfa\xfb\xfb\xfb\xfc\xfb\xfd\xfb\xfe\xfc\x41\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xfc\x52\xfc\x53\xfc\x54\xfc\x55\xfc\x56\xfc\x57\xfc\x58\xfc\x59\xfc\x5a\xfc\x5b\xfc\x5c\xfc\x5d\xfc\x5e\xfc\x5f\xfc\x60\xfc\x61\xfc\x62\xfc\x63\xfc\x64\xfc\x65\xfc\x66\xfc\x67\xfc\x68\xfc\x69\xfc\x6a\xfc\x6b\xfc\x6c\xfc\x6d\xfc\x6e\xfc\x6f\xfc\x70\xfc\x71\xfc\x72\xfc\x73\xfc\x74\xfc\x75\xfc\x76\xfc\x77\xfc\x78\xfc\x79\xfc\x7a\xfc\x7b\xfc\x7c\xfc\x7d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xfc\x84\xfc\x85\x00\x00\x00\x00\x00\x00", /* ff00 */ "\x00\x00\x42\x5a\x42\x7f\x42\x7b\x42\xe0\x42\x6c\x42\x50\x42\x7d\x42\x4d\x42\x5d\x42\x5c\x42\x4e\x42\x6b\x42\x60\x42\x4b\x42\x61\x42\xf0\x42\xf1\x42\xf2\x42\xf3\x42\xf4\x42\xf5\x42\xf6\x42\xf7\x42\xf8\x42\xf9\x42\x7a\x42\x5e\x42\x4c\x42\x7e\x42\x6e\x42\x6f\x42\x7c\x42\xc1\x42\xc2\x42\xc3\x42\xc4\x42\xc5\x42\xc6\x42\xc7\x42\xc8\x42\xc9\x42\xd1\x42\xd2\x42\xd3\x42\xd4\x42\xd5\x42\xd6\x42\xd7\x42\xd8\x42\xd9\x42\xe2\x42\xe3\x42\xe4\x42\xe5\x42\xe6\x42\xe7\x42\xe8\x42\xe9\x44\x44\x43\xe0\x44\x45\x44\x70\x42\x6d\x42\x79\x42\x81\x42\x82\x42\x83\x42\x84\x42\x85\x42\x86\x42\x87\x42\x88\x42\x89\x42\x91\x42\x92\x42\x93\x42\x94\x42\x95\x42\x96\x42\x97\x42\x98\x42\x99\x42\xa2\x42\xa3\x42\xa4\x42\xa5\x42\xa6\x42\xa7\x42\xa8\x42\xa9\x42\xc0\x42\x4f\x42\xd0\x43\xa1\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* ff80 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x43\x4a\x42\x4a\x42\x5f\x42\xa1\x42\x6a\x42\x5b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" }, /* EBCDIC DBCS to Unicode translation table for ibm-1388_P103-2001 */ { /* 0000 */ NULL, /* 0080 */ NULL, /* 0100 */ NULL, /* 0180 */ NULL, /* 0200 */ NULL, /* 0280 */ NULL, /* 0300 */ NULL, /* 0380 */ NULL, /* 0400 */ NULL, /* 0480 */ NULL, /* 0500 */ NULL, /* 0580 */ NULL, /* 0600 */ NULL, /* 0680 */ NULL, /* 0700 */ NULL, /* 0780 */ NULL, /* 0800 */ NULL, /* 0880 */ NULL, /* 0900 */ NULL, /* 0980 */ NULL, /* 0a00 */ NULL, /* 0a80 */ NULL, /* 0b00 */ NULL, /* 0b80 */ NULL, /* 0c00 */ NULL, /* 0c80 */ NULL, /* 0d00 */ NULL, /* 0d80 */ NULL, /* 0e00 */ NULL, /* 0e80 */ NULL, /* 0f00 */ NULL, /* 0f80 */ NULL, /* 1000 */ NULL, /* 1080 */ NULL, /* 1100 */ NULL, /* 1180 */ NULL, /* 1200 */ NULL, /* 1280 */ NULL, /* 1300 */ NULL, /* 1380 */ NULL, /* 1400 */ NULL, /* 1480 */ NULL, /* 1500 */ NULL, /* 1580 */ NULL, /* 1600 */ NULL, /* 1680 */ NULL, /* 1700 */ NULL, /* 1780 */ NULL, /* 1800 */ NULL, /* 1880 */ NULL, /* 1900 */ NULL, /* 1980 */ NULL, /* 1a00 */ NULL, /* 1a80 */ NULL, /* 1b00 */ NULL, /* 1b80 */ NULL, /* 1c00 */ NULL, /* 1c80 */ NULL, /* 1d00 */ NULL, /* 1d80 */ NULL, /* 1e00 */ NULL, /* 1e80 */ NULL, /* 1f00 */ NULL, /* 1f80 */ NULL, /* 2000 */ NULL, /* 2080 */ NULL, /* 2100 */ NULL, /* 2180 */ NULL, /* 2200 */ NULL, /* 2280 */ NULL, /* 2300 */ NULL, /* 2380 */ NULL, /* 2400 */ NULL, /* 2480 */ NULL, /* 2500 */ NULL, /* 2580 */ NULL, /* 2600 */ NULL, /* 2680 */ NULL, /* 2700 */ NULL, /* 2780 */ NULL, /* 2800 */ NULL, /* 2880 */ NULL, /* 2900 */ NULL, /* 2980 */ NULL, /* 2a00 */ NULL, /* 2a80 */ NULL, /* 2b00 */ NULL, /* 2b80 */ NULL, /* 2c00 */ NULL, /* 2c80 */ NULL, /* 2d00 */ NULL, /* 2d80 */ NULL, /* 2e00 */ NULL, /* 2e80 */ NULL, /* 2f00 */ NULL, /* 2f80 */ NULL, /* 3000 */ NULL, /* 3080 */ NULL, /* 3100 */ NULL, /* 3180 */ NULL, /* 3200 */ NULL, /* 3280 */ NULL, /* 3300 */ NULL, /* 3380 */ NULL, /* 3400 */ NULL, /* 3480 */ NULL, /* 3500 */ NULL, /* 3580 */ NULL, /* 3600 */ NULL, /* 3680 */ NULL, /* 3700 */ NULL, /* 3780 */ NULL, /* 3800 */ NULL, /* 3880 */ NULL, /* 3900 */ NULL, /* 3980 */ NULL, /* 3a00 */ NULL, /* 3a80 */ NULL, /* 3b00 */ NULL, /* 3b80 */ NULL, /* 3c00 */ NULL, /* 3c80 */ NULL, /* 3d00 */ NULL, /* 3d80 */ NULL, /* 3e00 */ NULL, /* 3e80 */ NULL, /* 3f00 */ NULL, /* 3f80 */ NULL, /* 4000 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x30\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 4080 */ NULL, /* 4100 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\xb1\x03\xb2\x03\xb3\x03\xb4\x03\xb5\x03\xb6\x03\xb7\x03\xb8\x03\xb9\x03\xba\x03\xbb\x03\xbc\x03\xbd\x03\xbe\x03\xbf\x03\xc0\x03\xc1\x03\xc3\x03\xc4\x03\xc5\x03\xc6\x03\xc7\x03\xc8\x03\xc9\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x91\x03\x92\x03\x93\x03\x94\x03\x95\x03\x96\x03\x97\x03\x98\x03\x99\x03\x9a\x03\x9b\x03\x9c\x03\x9d\x03\x9e\x03\x9f\x03\xa0\x03\xa1\x03\xa3\x03\xa4\x03\xa5\x03\xa6\x03\xa7\x03\xa8\x03\xa9\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 4180 */ "\x04\x30\x04\x31\x04\x32\x04\x33\x04\x34\x04\x35\x04\x51\x04\x36\x04\x37\x04\x38\x04\x39\x04\x3a\x04\x3b\x04\x3c\x04\x3d\x04\x3e\x04\x3f\x04\x40\x04\x41\x04\x42\x04\x43\x04\x44\x04\x45\x04\x46\x04\x47\x04\x48\x04\x49\x04\x4a\x04\x4b\x04\x4c\x04\x4d\x04\x4e\x04\x4f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x21\x70\x21\x71\x21\x72\x21\x73\x21\x74\x21\x75\x21\x76\x21\x77\x21\x78\x21\x79\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\x10\x04\x11\x04\x12\x04\x13\x04\x14\x04\x15\x04\x01\x04\x16\x04\x17\x04\x18\x04\x19\x04\x1a\x04\x1b\x04\x1c\x04\x1d\x04\x1e\x04\x1f\x04\x20\x04\x21\x04\x22\x04\x23\x04\x24\x04\x25\x04\x26\x04\x27\x04\x28\x04\x29\x04\x2a\x04\x2b\x04\x2c\x04\x2d\x04\x2e\x04\x2f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x21\x60\x21\x61\x21\x62\x21\x63\x21\x64\x21\x65\x21\x66\x21\x67\x21\x68\x21\x69\x21\x6a\x21\x6b\x00\x00\x00\x00\x00\x00", /* 4200 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xe1\xff\x0e\xff\x1c\xff\x08\xff\x0b\xff\x5c\xff\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\x01\xff\xe5\xff\x0a\xff\x09\xff\x1b\xff\xe2\xff\x0d\xff\x0f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xe4\xff\x0c\xff\x05\xff\x3f\xff\x1e\xff\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\x40\xff\x1a\xff\x03\xff\x20\xff\x07\xff\x1d\xff\x02", /* 4280 */ "\x00\x00\xff\x41\xff\x42\xff\x43\xff\x44\xff\x45\xff\x46\xff\x47\xff\x48\xff\x49\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\x4a\xff\x4b\xff\x4c\xff\x4d\xff\x4e\xff\x4f\xff\x50\xff\x51\xff\x52\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xe3\xff\x53\xff\x54\xff\x55\xff\x56\xff\x57\xff\x58\xff\x59\xff\x5a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\x5b\xff\x21\xff\x22\xff\x23\xff\x24\xff\x25\xff\x26\xff\x27\xff\x28\xff\x29\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\x5d\xff\x2a\xff\x2b\xff\x2c\xff\x2d\xff\x2e\xff\x2f\xff\x30\xff\x31\xff\x32\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\x04\x00\x00\xff\x33\xff\x34\xff\x35\xff\x36\xff\x37\xff\x38\xff\x39\xff\x3a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\x10\xff\x11\xff\x12\xff\x13\xff\x14\xff\x15\xff\x16\xff\x17\xff\x18\xff\x19\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 4300 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x30\x02\x30\x0c\x30\x0d\x30\x01\x30\xfb\x30\xf2\x30\xa1\x30\xa3\x30\xa5\xff\xe0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x30\xa7\x30\xa9\x30\xe3\x30\xe5\x30\xe7\x30\xc3\x30\xee\x30\xfc\x30\xf5\x30\xf6\xf8\x3d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 4380 */ "\x00\x00\x30\xa2\x30\xa4\x30\xa6\x30\xa8\x30\xaa\x30\xab\x30\xad\x30\xaf\x30\xb1\x30\xb3\x00\x00\x30\xb5\x30\xb7\x30\xb9\x30\xbb\x30\xbd\x30\xbf\x30\xc1\x30\xc4\x30\xc6\x30\xc8\x30\xca\x30\xcb\x30\xcc\x30\xcd\x30\xce\x00\x00\x00\x00\x30\xcf\x30\xd2\x30\xd5\x00\x00\xff\x5e\x30\xd8\x30\xdb\x30\xde\x30\xdf\x30\xe0\x30\xe1\x30\xe2\x30\xe4\x30\xe6\x00\x00\x30\xe8\x30\xe9\x30\xea\x30\xeb\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x30\xec\x30\xed\x30\xef\x30\xf3\x30\x9b\x30\x9c\x30\xac\x30\xae\x30\xb0\x30\xb2\x30\xb4\x30\xb6\x30\xb8\x30\xba\x30\xbc\x30\xbe\x30\xc0\x30\xc2\x30\xc5\x30\xc7\x30\xc9\x30\xd0\x30\xd3\x30\xd6\x30\xd9\x30\xdc\x30\xf4\x30\xd1\x30\xd4\x30\xd7\x30\xda\x30\xdd\x30\xf0\x30\xf1\x30\xfd\x30\xfe\x00\x00\x00\x00\xff\x3c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 4400 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x30\x0e\x30\x0f\xff\x3b\xff\x3d\x30\x92\x30\x41\x30\x43\x30\x45\x20\x15\x00\xb1\x22\x60\x22\x1e\x21\x03\x00\x00\x00\xb4\x30\x47\x30\x49\x30\x83\x30\x85\x30\x87\x30\x63\x30\x8e\x00\x00\x00\x00\x20\x10\x30\x03\xf8\x3e\x30\x05\x30\x06\x30\x07\x00\xa8\x20\x18\x20\x1c\x30\x14\x30\x08\x30\x0a\x30\x10\x22\x64\x22\x34\x26\x42\x00\xa7\x20\x3b\x30\x12\x32\x31\x21\x16\x21\x21\xff\x3e\x20\x19\x20\x1d\x30\x15\x30\x09\x30\x0b\x30\x11\x22\x65\x22\x35\x26\x40\x00\xd7\x00\xf7\x20\x16\x30\x13\x20\x25\x20\x26", /* 4480 */ "\x00\x00\x30\x42\x30\x44\x30\x46\x30\x48\x30\x4a\x30\x4b\x30\x4d\x30\x4f\x30\x51\x30\x53\x00\x00\x30\x55\x30\x57\x30\x59\x30\x5b\x30\x5d\x30\x5f\x30\x61\x30\x64\x30\x66\x30\x68\x30\x6a\x30\x6b\x30\x6c\x30\x6d\x30\x6e\x00\x00\x00\x00\x30\x6f\x30\x72\x30\x75\x00\x00\x00\x00\x30\x78\x30\x7b\x30\x7e\x30\x7f\x30\x80\x30\x81\x30\x82\x30\x84\x30\x86\x00\x00\x30\x88\x30\x89\x30\x8a\x30\x8b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x30\x8c\x30\x8d\x30\x8f\x30\x93\x00\x00\x00\x00\x30\x4c\x30\x4e\x30\x50\x30\x52\x30\x54\x30\x56\x30\x58\x30\x5a\x30\x5c\x30\x5e\x30\x60\x30\x62\x30\x65\x30\x67\x30\x69\x30\x70\x30\x73\x30\x76\x30\x79\x30\x7c\x00\x00\x30\x71\x30\x74\x30\x77\x30\x7a\x30\x7d\x30\x90\x30\x91\x30\x9d\x30\x9e\x00\x00\x00\x00\x25\xcb\x25\xcf\x25\xb3\x25\xb2\x25\xce\x26\x06\x26\x05\x25\xc7\x25\xc6\x25\xa1\x25\xa0\x25\xbd\x25\xbc\x00\xb0\x20\x32\x20\x33\x21\x92\x21\x90\x21\x91\x21\x93\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 4500 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\xc9\x02\xc7\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x30\x16\x30\x17\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x22\x36\x22\x27\x22\x28\x22\x11\x22\x0f\x22\x2a\x22\x29\x22\x08\x22\x37\x22\x1a\x22\xa5\x22\x25\x22\x20\x23\x12\x22\x99\x22\x2b\x22\x2e\x22\x61\x22\x4c\x22\x48\x22\x3d\x22\x1d\x00\x00\x22\x6e\x22\x6f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 4580 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa4\x00\x00\x00\x00\x20\x30\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x24\x88\x24\x89\x24\x8a\x24\x8b\x24\x8c\x24\x8d\x24\x8e\x24\x8f\x24\x90\x24\x91\x24\x92\x24\x93\x24\x94\x24\x95\x24\x96\x24\x97\x24\x98\x24\x99\x24\x9a\x24\x9b\x24\x74\x24\x75\x24\x76\x24\x77\x24\x78\x24\x79\x24\x7a\x24\x7b\x24\x7c\x24\x7d\x24\x7e\x24\x7f\x24\x80\x24\x81\x24\x82\x24\x83\x24\x84\x24\x85\x24\x86\x24\x87\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x24\x60\x24\x61\x24\x62\x24\x63\x24\x64\x24\x65\x24\x66\x24\x67\x24\x68\x24\x69\x20\xac\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x32\x20\x32\x21\x32\x22\x32\x23\x32\x24\x32\x25\x32\x26\x32\x27\x32\x28\x32\x29\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 4600 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x01\x00\xe1\x01\xce\x00\xe0\x01\x13\x00\xe9\x01\x1b\x00\xe8\x01\x2b\x00\xed\x01\xd0\x00\xec\x01\x4d\x00\xf3\x01\xd2\x00\xf2\x01\x6b\x00\xfa\x01\xd4\x00\xf9\x01\xd6\x01\xd8\x01\xda\x01\xdc\x00\xfc\x00\xea\x02\x51\xe7\xc7\x01\x44\x01\x48\x01\xf9\x02\x61\x00\x00\x00\x00\x00\x00\x00\x00\x31\x05\x31\x06\x31\x07\x31\x08\x31\x09\x31\x0a\x31\x0b\x31\x0c\x31\x0d\x31\x0e\x31\x0f\x31\x10\x31\x11\x31\x12\x31\x13\x31\x14\x31\x15\x31\x16\x31\x17\x31\x18\x31\x19\x31\x1a\x31\x1b\x31\x1c\x31\x1d\x31\x1e\x31\x1f", /* 4680 */ "\x31\x20\x31\x21\x31\x22\x31\x23\x31\x24\x31\x25\x31\x26\x31\x27\x31\x28\x31\x29\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x25\x00\x25\x01\x25\x02\x25\x03\x25\x04\x25\x05\x25\x06\x25\x07\x25\x08\x25\x09\x25\x0a\x25\x0b\x25\x0c\x25\x0d\x25\x0e\x25\x0f\x25\x10\x25\x11\x25\x12\x25\x13\x25\x14\x25\x15\x25\x16\x25\x17\x25\x18\x25\x19\x25\x1a\x25\x1b\x25\x1c\x25\x1d\x25\x1e\x25\x1f\x25\x20\x25\x21\x25\x22\x25\x23\x25\x24\x25\x25\x25\x26\x25\x27\x25\x28\x25\x29\x25\x2a\x25\x2b\x25\x2c\x25\x2d\x25\x2e\x25\x2f\x25\x30\x25\x31\x25\x32\x25\x33\x25\x34\x25\x35\x25\x36\x25\x37\x25\x38\x25\x39\x25\x3a\x25\x3b\x25\x3c\x25\x3d\x25\x3e\x25\x3f\x25\x40\x25\x41\x25\x42\x25\x43\x25\x44\x25\x45\x25\x46\x25\x47\x25\x48\x25\x49\x25\x4a\x25\x4b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 4700 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xfe\x35\xfe\x36\xfe\x39\xfe\x3a\xfe\x3f\xfe\x40\xfe\x3d\xfe\x3e\xfe\x41\xfe\x42\xfe\x43\xfe\x44\xfe\x3b\xfe\x3c\xfe\x37\xfe\x38\xfe\x31\xfe\x33\xfe\x34\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06\x00\x06\x01\x06\x02\x06\x03\x06\x04\x06\x05\x06\x06\x06\x07\x06\x08\x06\x09\x06\x0a\x06\x0b\x06\x0c\x06\x0d\x06\x0e\x06\x0f\x06\x10\x06\x11\x06\x12\x06\x13\x06\x14\x06\x15\x06\x16\x06\x17\x06\x18\x06\x19\x06\x1a\x06\x1b\x06\x1c\x06\x1d\x06\x1e\x06\x1f\x06\x20\x06\x21\x06\x22", /* 4780 */ "\x06\x23\x06\x24\x06\x25\x06\x26\x06\x27\x06\x28\x06\x29\x06\x2a\x06\x2b\x06\x2c\x06\x2d\x06\x2e\x06\x2f\x06\x30\x06\x31\x06\x32\x06\x33\x06\x34\x06\x35\x06\x36\x06\x37\x06\x38\x06\x39\x06\x3a\x06\x3b\x06\x3c\x06\x3d\x06\x3e\x06\x3f\x06\x40\x06\x41\x06\x42\x06\x43\x06\x44\x06\x45\x06\x46\x06\x47\x06\x48\x06\x49\x06\x4a\x06\x4b\x06\x4c\x06\x4d\x06\x4e\x06\x4f\x06\x50\x06\x51\x06\x52\x06\x53\x06\x54\x06\x55\x06\x56\x06\x57\x06\x58\x06\x59\x06\x5a\x06\x5b\x06\x5c\x06\x5d\x06\x5e\x06\x5f\x06\x60\x06\x61\x06\x62\x06\x63\x06\x64\x06\x65\x06\x66\x06\x67\x06\x68\x06\x69\x06\x6a\x06\x6b\x06\x6c\x06\x6d\x06\x6e\x06\x6f\x06\x70\x06\x71\x06\x72\x06\x73\x06\x74\x06\x75\x06\x76\x06\x77\x06\x78\x06\x79\x06\x7a\x06\x7b\x06\x7c\x06\x7d\x06\x7e\x06\x7f\x06\x80\x06\x81\x06\x82\x06\x83\x06\x84\x06\x85\x06\x86\x06\x87\x06\x88\x06\x89\x06\x8a\x06\x8b\x06\x8c\x06\x8d\x06\x8e\x06\x8f\x06\x90\x06\x91\x06\x92\x06\x93\x06\x94\x06\x95\x06\x96\x06\x97\x06\x98\x06\x99\x06\x9a\x06\x9b\x06\x9c\x06\x9d\x06\x9e\x06\x9f\x06\xa0\x06\xa1\x00\x00", /* 4800 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06\xa2\x06\xa3\x06\xa4\x06\xa5\x06\xa6\x06\xa7\x06\xa8\x06\xa9\x06\xaa\x06\xab\x06\xac\x06\xad\x06\xae\x06\xaf\x06\xb0\x06\xb1\x06\xb2\x06\xb3\x06\xb4\x06\xb5\x06\xb6\x06\xb7\x06\xb8\x06\xb9\x06\xba\x06\xbb\x06\xbc\x06\xbd\x06\xbe\x06\xbf\x06\xc0\x06\xc1\x06\xc2\x06\xc3\x06\xc4\x06\xc5\x06\xc6\x06\xc7\x06\xc8\x06\xc9\x06\xca\x06\xcb\x06\xcc\x06\xcd\x06\xce\x06\xcf\x06\xd0\x06\xd1\x06\xd2\x06\xd3\x06\xd4\x06\xd5\x06\xd6\x06\xd7\x06\xd8\x06\xd9\x06\xda\x06\xdb\x06\xdc\x06\xdd\x06\xde\x06\xdf\x06\xe0", /* 4880 */ "\x06\xe1\x06\xe2\x06\xe3\x06\xe4\x06\xe5\x06\xe6\x06\xe7\x06\xe8\x06\xe9\x06\xea\x06\xeb\x06\xec\x06\xed\x06\xee\x06\xef\x06\xf0\x06\xf1\x06\xf2\x06\xf3\x06\xf4\x06\xf5\x06\xf6\x06\xf7\x06\xf8\x06\xf9\x06\xfa\x06\xfb\x06\xfc\x06\xfd\x06\xfe\x06\xff\x00\x00\x55\x4a\x96\x3f\x57\xc3\x63\x28\x54\xce\x55\x09\x54\xc0\x76\x91\x76\x4c\x85\x3c\x77\xee\x82\x7e\x78\x8d\x72\x31\x96\x98\x97\x8d\x6c\x28\x5b\x89\x4f\xfa\x63\x09\x66\x97\x5c\xb8\x80\xfa\x68\x48\x80\xae\x66\x02\x76\xce\x51\xf9\x65\x56\x71\xac\x7f\xf1\x88\x84\x50\xb2\x59\x65\x61\xca\x6f\xb3\x82\xad\x63\x4c\x62\x52\x53\xed\x54\x27\x7b\x06\x51\x6b\x75\xa4\x5d\xf4\x62\xd4\x8d\xcb\x97\x76\x62\x8a\x80\x19\x57\x5d\x97\x38\x7f\x62\x72\x38\x76\x7d\x67\xcf\x76\x7e\x64\x46\x4f\x70\x8d\x25\x62\xdc\x7a\x17\x65\x91\x73\xed\x64\x2c\x62\x73\x82\x2c\x98\x81\x67\x7f\x72\x48\x62\x6e\x62\xcc\x4f\x34\x74\xe3\x53\x4a\x52\x9e\x7e\xca\x90\xa6\x5e\x2e\x68\x86\x69\x9c\x81\x80\x7e\xd1\x68\xd2\x78\xc5\x86\x8c\x95\x51\x50\x8d\x8c\x24\x82\xde\x80\xde\x53\x05\x89\x12\x52\x65\x00\x00\x00\x00", /* 4900 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x85\x84\x96\xf9\x4f\xdd\x58\x21\x99\x71\x5b\x9d\x62\xb1\x62\xa5\x66\xb4\x8c\x79\x9c\x8d\x72\x06\x67\x6f\x78\x91\x60\xb2\x53\x51\x53\x17\x8f\x88\x80\xcc\x8d\x1d\x94\xa1\x50\x0d\x72\xc8\x59\x07\x60\xeb\x71\x19\x88\xab\x59\x54\x82\xef\x67\x2c\x7b\x28\x5d\x29\x7e\xf7\x75\x2d\x6c\xf5\x8e\x66\x8f\xf8\x90\x3c\x9f\x3b\x6b\xd4\x91\x19\x7b\x14\x5f\x7c\x78\xa7\x84\xd6\x85\x3d\x6b\xd5\x6b\xd9\x6b\xd6\x5e\x01\x5e\x87\x75\xf9\x95\xed\x65\x5d\x5f\x0a\x5f\xc5\x8f\x9f\x58\xc1\x81\xc2\x90\x7f\x96\x5b\x97\xad\x8f\xb9", /* 4980 */ "\x00\x00\x7f\x16\x8d\x2c\x62\x41\x4f\xbf\x53\xd8\x53\x5e\x8f\xa8\x8f\xa9\x8f\xab\x90\x4d\x68\x07\x5f\x6a\x81\x98\x88\x68\x9c\xd6\x61\x8b\x52\x2b\x76\x2a\x5f\x6c\x65\x8c\x6f\xd2\x6e\xe8\x5b\xbe\x64\x48\x51\x75\x51\xb0\x67\xc4\x4e\x19\x79\xc9\x99\x7c\x70\xb3\x75\xc5\x5e\x76\x73\xbb\x83\xe0\x64\xad\x62\xe8\x94\xb5\x6c\xe2\x53\x5a\x52\xc3\x64\x0f\x94\xc2\x7b\x94\x4f\x2f\x5e\x1b\x82\x36\x81\x16\x81\x8a\x6e\x24\x6c\xca\x9a\x73\x63\x55\x53\x5c\x54\xfa\x88\x65\x57\xe0\x4e\x0d\x5e\x03\x6b\x65\x7c\x3f\x90\xe8\x60\x16\x64\xe6\x73\x1c\x88\xc1\x67\x50\x62\x4d\x8d\x22\x77\x6c\x8e\x29\x91\xc7\x5f\x69\x83\xdc\x85\x21\x99\x10\x53\xc2\x86\x95\x6b\x8b\x60\xed\x60\xe8\x70\x7f\x82\xcd\x82\x31\x4e\xd3\x6c\xa7\x85\xcf\x64\xcd\x7c\xd9\x69\xfd\x66\xf9\x83\x49\x53\x95\x7b\x56\x4f\xa7\x51\x8c\x6d\x4b\x5c\x42\x8e\x6d\x63\xd2\x53\xc9\x83\x2c\x83\x36\x67\xe5\x78\xb4\x64\x3d\x5b\xdf\x5c\x94\x5d\xee\x8b\xe7\x62\xc6\x67\xf4\x8c\x7a\x64\x00\x63\xba\x87\x49\x99\x8b\x8c\x17\x7f\x20\x94\xf2\x4e\xa7\x96\x10\x98\xa4\x66\x0c\x73\x16\x00\x00\x00\x00", /* 4a00 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x57\x3a\x5c\x1d\x5e\x38\x95\x7f\x50\x7f\x80\xa0\x53\x82\x65\x5e\x75\x45\x55\x31\x50\x21\x8d\x85\x62\x84\x94\x9e\x67\x1d\x56\x32\x6f\x6e\x5d\xe2\x54\x35\x70\x92\x8f\x66\x62\x6f\x64\xa4\x63\xa3\x5f\x7b\x6f\x88\x90\xf4\x81\xe3\x8f\xb0\x5c\x18\x66\x68\x5f\xf1\x6c\x89\x96\x48\x8d\x81\x88\x6c\x64\x91\x79\xf0\x57\xce\x6a\x59\x62\x10\x54\x48\x4e\x58\x7a\x0b\x60\xe9\x6f\x84\x8b\xda\x62\x7f\x90\x1e\x9a\x8b\x79\xe4\x54\x03\x75\xf4\x63\x01\x53\x19\x6c\x60\x8f\xdf\x5f\x1b\x9a\x70\x80\x3b\x9f\x7f\x4f\x88\x5c\x3a", /* 4a80 */ "\x00\x00\x8d\x64\x7f\xc5\x65\xa5\x70\xbd\x51\x45\x51\xb2\x86\x6b\x5d\x07\x5b\xa0\x62\xbd\x91\x6c\x75\x74\x8e\x0c\x7a\x20\x61\x01\x7b\x79\x4e\xc7\x7e\xf8\x77\x85\x4e\x11\x81\xed\x52\x1d\x51\xfa\x6a\x71\x53\xa8\x8e\x87\x95\x04\x96\xcf\x6e\xc1\x96\x64\x69\x5a\x78\x40\x50\xa8\x77\xd7\x64\x10\x89\xe6\x59\x04\x63\xe3\x5d\xdd\x7a\x7f\x69\x3d\x4f\x20\x82\x39\x55\x98\x4e\x32\x75\xae\x7a\x97\x5e\x62\x5e\x8a\x95\xef\x52\x1b\x54\x39\x70\x8a\x63\x76\x95\x24\x57\x82\x66\x25\x69\x3f\x91\x87\x55\x07\x6d\xf3\x7e\xaf\x88\x22\x62\x33\x7e\xf0\x75\xb5\x83\x28\x78\xc1\x96\xcc\x8f\x9e\x61\x48\x74\xf7\x8b\xcd\x6b\x64\x52\x3a\x8d\x50\x6b\x21\x80\x6a\x84\x71\x56\xf1\x53\x06\x4e\xce\x4e\x1b\x51\xd1\x7c\x97\x91\x8b\x7c\x07\x4f\xc3\x8e\x7f\x7b\xe1\x7a\x9c\x64\x67\x5d\x14\x50\xac\x81\x06\x76\x01\x7c\xb9\x6d\xec\x7f\xe0\x67\x51\x5b\x58\x5b\xf8\x78\xcb\x64\xae\x64\x13\x63\xaa\x63\x2b\x95\x19\x64\x2d\x8f\xbe\x7b\x54\x76\x29\x62\x53\x59\x27\x54\x46\x6b\x79\x50\xa3\x62\x34\x5e\x26\x6b\x86\x4e\xe3\x8d\x37\x88\x8b\x5f\x85\x90\x2e\x00\x00\x00\x00", /* 4b00 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x60\x20\x80\x3d\x62\xc5\x4e\x39\x53\x55\x90\xf8\x63\xb8\x80\xc6\x65\xe6\x6c\x2e\x4f\x46\x60\xee\x6d\xe1\x8b\xde\x5f\x39\x86\xcb\x5f\x53\x63\x21\x51\x5a\x83\x61\x68\x63\x52\x00\x63\x63\x8e\x48\x50\x12\x5c\x9b\x79\x77\x5b\xfc\x52\x30\x7a\x3b\x60\xbc\x90\x53\x76\xd7\x5f\xb7\x5f\x97\x76\x84\x8e\x6c\x70\x6f\x76\x7b\x7b\x49\x77\xaa\x51\xf3\x90\x93\x58\x24\x4f\x4e\x6e\xf4\x8f\xea\x65\x4c\x7b\x1b\x72\xc4\x6d\xa4\x7f\xdf\x5a\xe1\x62\xb5\x5e\x95\x57\x30\x84\x82\x7b\x2c\x5e\x1d\x5f\x1f\x90\x12\x7f\x14\x98\xa0", /* 4b80 */ "\x00\x00\x63\x82\x6e\xc7\x78\x98\x70\xb9\x51\x78\x97\x5b\x57\xab\x75\x35\x4f\x43\x75\x38\x5e\x97\x60\xe6\x59\x60\x6d\xc0\x6b\xbf\x78\x89\x53\xfc\x96\xd5\x51\xcb\x52\x01\x63\x89\x54\x0a\x94\x93\x8c\x03\x8d\xcc\x72\x39\x78\x9f\x87\x76\x8f\xed\x8c\x0d\x53\xe0\x4e\x01\x76\xef\x53\xee\x94\x89\x98\x76\x9f\x0e\x95\x2d\x5b\x9a\x8b\xa2\x4e\x22\x4e\x1c\x51\xac\x84\x63\x61\xc2\x52\xa8\x68\x0b\x4f\x97\x60\x6b\x51\xbb\x6d\x1e\x51\x5c\x62\x96\x65\x97\x96\x61\x8c\x46\x90\x17\x75\xd8\x90\xfd\x77\x63\x6b\xd2\x72\x8a\x72\xec\x8b\xfb\x58\x35\x77\x79\x8d\x4c\x67\x5c\x95\x40\x80\x9a\x5e\xa6\x6e\x21\x59\x92\x7a\xef\x77\xed\x95\x3b\x6b\xb5\x65\xad\x7f\x0e\x58\x06\x51\x51\x96\x1f\x5b\xf9\x58\xa9\x54\x28\x8e\x72\x65\x66\x98\x7f\x56\xe4\x94\x9d\x76\xfe\x90\x41\x63\x87\x54\xc6\x59\x1a\x59\x3a\x57\x9b\x8e\xb2\x67\x35\x8d\xfa\x82\x35\x52\x41\x60\xf0\x58\x15\x86\xfe\x5c\xe8\x9e\x45\x4f\xc4\x98\x9d\x8b\xb9\x5a\x25\x60\x76\x53\x84\x62\x7c\x90\x4f\x91\x02\x99\x7f\x60\x69\x80\x0c\x51\x3f\x80\x33\x5c\x14\x99\x75\x6d\x31\x4e\x8c\x00\x00\x00\x00", /* 4c00 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x8d\x30\x53\xd1\x7f\x5a\x7b\x4f\x4f\x10\x4e\x4f\x96\x00\x6c\xd5\x73\xd0\x85\xe9\x5e\x06\x75\x6a\x7f\xfb\x6a\x0a\x77\xfe\x94\x92\x7e\x41\x51\xe1\x70\xe6\x53\xcd\x8f\xd4\x83\x03\x8d\x29\x72\xaf\x99\x6d\x6c\xdb\x57\x4a\x82\xb3\x65\xb9\x80\xaa\x62\x3f\x96\x32\x59\xa8\x4e\xff\x8b\xbf\x7e\xba\x65\x3e\x83\xf2\x97\x5e\x55\x61\x98\xde\x80\xa5\x53\x2a\x8b\xfd\x54\x20\x80\xba\x5e\x9f\x6c\xb8\x8d\x39\x82\xac\x91\x5a\x54\x29\x6c\x1b\x52\x06\x7e\xb7\x57\x5f\x71\x1a\x6c\x7e\x7c\x89\x59\x4b\x4e\xfd\x5f\xff\x61\x24", /* 4c80 */ "\x00\x00\x7c\xaa\x4e\x30\x5c\x01\x67\xab\x87\x02\x5c\xf0\x95\x0b\x98\xce\x75\xaf\x70\xfd\x90\x22\x51\xaf\x7f\x1d\x8b\xbd\x59\x49\x51\xe4\x4f\x5b\x54\x26\x59\x2b\x65\x77\x80\xa4\x5b\x75\x62\x76\x62\xc2\x8f\x90\x5e\x45\x6c\x1f\x7b\x26\x4f\x0f\x4f\xd8\x67\x0d\x6d\x6e\x6d\xaa\x79\x8f\x88\xb1\x5f\x17\x75\x2b\x62\x9a\x8f\x85\x4f\xef\x91\xdc\x65\xa7\x81\x2f\x81\x51\x5e\x9c\x81\x50\x8d\x74\x52\x6f\x89\x86\x8d\x4b\x59\x0d\x50\x85\x4e\xd8\x96\x1c\x72\x36\x81\x79\x8d\x1f\x5b\xcc\x8b\xa3\x96\x44\x59\x87\x7f\x1a\x54\x90\x56\x76\x56\x0e\x8b\xe5\x65\x39\x69\x82\x94\x99\x76\xd6\x6e\x89\x5e\x72\x75\x18\x67\x46\x67\xd1\x7a\xff\x80\x9d\x8d\x76\x61\x1f\x79\xc6\x65\x62\x8d\x63\x51\x88\x52\x1a\x94\xa2\x7f\x38\x80\x9b\x7e\xb2\x5c\x97\x6e\x2f\x67\x60\x7b\xd9\x76\x8b\x9a\xd8\x81\x8f\x7f\x94\x7c\xd5\x64\x1e\x95\x50\x7a\x3f\x54\x4a\x54\xe5\x6b\x4c\x64\x01\x62\x08\x9e\x3d\x80\xf3\x75\x99\x52\x72\x97\x69\x84\x5b\x68\x3c\x86\xe4\x96\x01\x96\x94\x94\xec\x4e\x2a\x54\x04\x7e\xd9\x68\x39\x8d\xdf\x80\x15\x66\xf4\x5e\x9a\x7f\xb9\x00\x00\x00\x00", /* 4d00 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x57\xc2\x80\x3f\x68\x97\x5d\xe5\x65\x3b\x52\x9f\x60\x6d\x9f\x9a\x4f\x9b\x8e\xac\x51\x6c\x5b\xab\x5f\x13\x5d\xe9\x6c\x5e\x62\xf1\x8d\x21\x51\x71\x94\xa9\x52\xfe\x6c\x9f\x82\xdf\x72\xd7\x57\xa2\x67\x84\x8d\x2d\x59\x1f\x8f\x9c\x83\xc7\x54\x95\x7b\x8d\x4f\x30\x6c\xbd\x5b\x64\x59\xd1\x9f\x13\x53\xe4\x86\xca\x9a\xa8\x8c\x37\x80\xa1\x65\x45\x98\x7e\x56\xfa\x96\xc7\x52\x2e\x74\xdc\x52\x50\x5b\xe1\x63\x02\x89\x02\x4e\x56\x62\xd0\x60\x2a\x68\xfa\x51\x73\x5b\x98\x51\xa0\x89\xc2\x7b\xa1\x99\x86\x7f\x50\x60\xef", /* 4d80 */ "\x00\x00\x70\x4c\x8d\x2f\x51\x49\x5e\x7f\x90\x1b\x74\x70\x89\xc4\x57\x2d\x78\x45\x5f\x52\x9f\x9f\x95\xfa\x8f\x68\x9b\x3c\x8b\xe1\x76\x78\x68\x42\x67\xdc\x8d\xea\x8d\x35\x52\x3d\x8f\x8a\x6e\xda\x68\xcd\x95\x05\x90\xed\x56\xfd\x67\x9c\x88\xf9\x8f\xc7\x54\xc8\x9a\xb8\x5b\x69\x6d\x77\x6c\x26\x4e\xa5\x5b\xb3\x9a\x87\x91\x63\x61\xa8\x90\xaf\x97\xe9\x54\x2b\x6d\xb5\x5b\xd2\x51\xfd\x55\x8a\x7f\x55\x7f\xf0\x64\xbc\x63\x4d\x65\xf1\x61\xbe\x60\x8d\x71\x0a\x6c\x57\x6c\x49\x59\x2f\x67\x6d\x82\x2a\x58\xd5\x56\x8e\x8c\x6a\x6b\xeb\x90\xdd\x59\x7d\x80\x17\x53\xf7\x6d\x69\x54\x75\x55\x9d\x83\x77\x83\xcf\x68\x38\x79\xbe\x54\x8c\x4f\x55\x54\x08\x76\xd2\x8c\x89\x96\x02\x6c\xb3\x6d\xb8\x8d\x6b\x89\x10\x9e\x64\x8d\x3a\x56\x3f\x9e\xd1\x75\xd5\x5f\x88\x72\xe0\x60\x68\x54\xfc\x4e\xa8\x6a\x2a\x88\x61\x60\x52\x8f\x70\x54\xc4\x70\xd8\x86\x79\x9e\x3f\x6d\x2a\x5b\x8f\x5f\x18\x7e\xa2\x55\x89\x4f\xaf\x73\x34\x54\x3c\x53\x9a\x50\x19\x54\x0e\x54\x7c\x4e\x4e\x5f\xfd\x74\x5a\x58\xf6\x84\x6b\x80\xe1\x87\x74\x72\xd0\x7c\xca\x6e\x56\x00\x00\x00\x00", /* 4e00 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5f\x27\x86\x4e\x55\x2c\x62\xa4\x4e\x92\x6c\xaa\x62\x37\x82\xb1\x54\xd7\x53\x4e\x73\x3e\x6e\xd1\x75\x3b\x52\x12\x53\x16\x8b\xdd\x69\xd0\x5f\x8a\x60\x00\x6d\xee\x57\x4f\x6b\x22\x73\xaf\x68\x53\x8f\xd8\x7f\x13\x63\x62\x60\xa3\x55\x24\x75\xea\x8c\x62\x71\x15\x6d\xa3\x5b\xa6\x5e\x7b\x83\x52\x61\x4c\x9e\xc4\x78\xfa\x87\x57\x7c\x27\x76\x87\x51\xf0\x60\xf6\x71\x4c\x66\x43\x5e\x4c\x60\x4d\x8c\x0e\x70\x70\x63\x25\x8f\x89\x5f\xbd\x60\x62\x86\xd4\x56\xde\x6b\xc1\x60\x94\x61\x67\x53\x49\x60\xe0\x66\x66\x8d\x3f", /* 4e80 */ "\x00\x00\x79\xfd\x4f\x1a\x70\xe9\x6c\x47\x8b\xb3\x8b\xf2\x7e\xd8\x83\x64\x66\x0f\x5a\x5a\x9b\x42\x6d\x51\x6d\xf7\x8c\x41\x6d\x3b\x4f\x19\x70\x6b\x83\xb7\x62\x16\x60\xd1\x97\x0d\x8d\x27\x79\x78\x51\xfb\x57\x3e\x57\xfa\x67\x3a\x75\x78\x7a\x3d\x79\xef\x7b\x95\x80\x8c\x99\x65\x8f\xf9\x6f\xc0\x8b\xa5\x9e\x21\x59\xec\x7e\xe9\x7f\x09\x54\x09\x67\x81\x68\xd8\x8f\x91\x7c\x4d\x96\xc6\x53\xca\x60\x25\x75\xbe\x6c\x72\x53\x73\x5a\xc9\x7e\xa7\x63\x24\x51\xe0\x81\x0a\x5d\xf1\x84\xdf\x62\x80\x51\x80\x5b\x63\x4f\x0e\x79\x6d\x52\x42\x60\xb8\x6d\x4e\x5b\xc4\x5b\xc2\x8b\xa1\x8b\xb0\x65\xe2\x5f\xcc\x96\x45\x59\x93\x7e\xe7\x7e\xaa\x56\x09\x67\xb7\x59\x39\x4f\x73\x5b\xb6\x52\xa0\x83\x5a\x98\x8a\x8d\x3e\x75\x32\x94\xbe\x50\x47\x7a\x3c\x4e\xf7\x67\xb6\x9a\x7e\x5a\xc1\x6b\x7c\x76\xd1\x57\x5a\x5c\x16\x7b\x3a\x95\xf4\x71\x4e\x51\x7c\x80\xa9\x82\x70\x59\x78\x7f\x04\x83\x27\x68\xc0\x67\xec\x78\xb1\x78\x77\x62\xe3\x63\x61\x7b\x80\x4f\xed\x52\x6a\x51\xcf\x83\x50\x69\xdb\x92\x74\x8d\xf5\x8d\x31\x89\xc1\x95\x2e\x7b\xad\x4e\xf6\x00\x00\x00\x00", /* 4f00 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x50\x65\x82\x30\x52\x51\x99\x6f\x6e\x10\x6e\x85\x6d\xa7\x5e\xfa\x50\xf5\x59\xdc\x5c\x06\x6d\x46\x6c\x5f\x75\x86\x84\x8b\x68\x68\x59\x56\x8b\xb2\x53\x20\x91\x71\x96\x4d\x85\x49\x69\x12\x79\x01\x71\x26\x80\xf6\x4e\xa4\x90\xca\x6d\x47\x9a\x84\x5a\x07\x56\xbc\x64\x05\x94\xf0\x77\xeb\x4f\xa5\x81\x1a\x72\xe1\x89\xd2\x99\x7a\x7f\x34\x7e\xde\x52\x7f\x65\x59\x91\x75\x8f\x7f\x8f\x83\x53\xeb\x7a\x96\x63\xed\x63\xa5\x76\x86\x79\xf8\x88\x57\x96\x36\x62\x2a\x52\xab\x82\x82\x68\x54\x67\x70\x63\x77\x77\x6b\x7a\xed", /* 4f80 */ "\x00\x00\x6d\x01\x7e\xd3\x89\xe3\x59\xd0\x62\x12\x85\xc9\x82\xa5\x75\x4c\x50\x1f\x4e\xcb\x75\xa5\x8b\xeb\x5c\x4a\x5d\xfe\x7b\x4b\x65\xa4\x91\xd1\x4e\xca\x6d\x25\x89\x5f\x7d\x27\x95\x26\x4e\xc5\x8c\x28\x8f\xdb\x97\x73\x66\x4b\x79\x81\x8f\xd1\x70\xec\x6d\x78\x5c\x3d\x52\xb2\x83\x46\x51\x62\x83\x0e\x77\x5b\x66\x76\x9c\xb8\x4e\xac\x60\xca\x7c\xbe\x7c\xb3\x7e\xcf\x4e\x95\x8b\x66\x66\x6f\x98\x88\x97\x59\x58\x83\x65\x6c\x95\x5c\x5f\x84\x75\xc9\x97\x56\x7a\xdf\x7a\xde\x51\xc0\x70\xaf\x7a\x98\x63\xea\x7a\x76\x7e\xa0\x73\x96\x97\xed\x4e\x45\x70\x78\x4e\x5d\x91\x52\x53\xa9\x65\x51\x65\xe7\x81\xfc\x82\x05\x54\x8e\x5c\x31\x75\x9a\x97\xa0\x62\xd8\x72\xd9\x75\xbd\x5c\x45\x9a\x79\x83\xca\x5c\x40\x54\x80\x77\xe9\x4e\x3e\x6c\xae\x80\x5a\x62\xd2\x63\x6e\x5d\xe8\x51\x77\x8d\xdd\x8e\x1e\x95\x2f\x4f\xf1\x53\xe5\x60\xe7\x70\xac\x52\x67\x63\x50\x9e\x43\x5a\x1f\x50\x26\x77\x37\x53\x77\x7e\xe2\x64\x85\x65\x2b\x62\x89\x63\x98\x50\x14\x72\x35\x89\xc9\x51\xb3\x8b\xc0\x7e\xdd\x57\x47\x83\xcc\x94\xa7\x51\x9b\x54\x1b\x5c\xfb\x00\x00\x00\x00", /* 5000 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4f\xca\x7a\xe3\x6d\x5a\x90\xe1\x9a\x8f\x55\x80\x54\x96\x53\x61\x54\xaf\x5f\x00\x63\xe9\x69\x77\x51\xef\x61\x68\x52\x0a\x58\x2a\x52\xd8\x57\x4e\x78\x0d\x77\x0b\x5e\xb7\x61\x77\x7c\xe0\x62\x5b\x62\x97\x4e\xa2\x70\x95\x80\x03\x62\xf7\x70\xe4\x97\x60\x57\x77\x82\xdb\x67\xef\x68\xf5\x78\xd5\x98\x97\x79\xd1\x58\xf3\x54\xb3\x53\xef\x6e\x34\x51\x4b\x52\x3b\x5b\xa2\x8b\xfe\x80\xaf\x55\x43\x57\xa6\x60\x73\x57\x51\x54\x2d\x7a\x7a\x60\x50\x5b\x54\x63\xa7\x62\xa0\x53\xe3\x62\x63\x5b\xc7\x67\xaf\x54\xed\x7a\x9f", /* 5080 */ "\x00\x00\x82\xe6\x91\x77\x5e\x93\x88\xe4\x59\x38\x57\xae\x63\x0e\x8d\xe8\x80\xef\x57\x57\x7b\x77\x4f\xa9\x5f\xeb\x5b\xbd\x6b\x3e\x53\x21\x7b\x50\x72\xc2\x68\x46\x77\xff\x77\x36\x65\xf7\x51\xb5\x4e\x8f\x76\xd4\x5c\xbf\x7a\xa5\x84\x75\x59\x4e\x9b\x41\x50\x80\x99\x88\x61\x27\x6e\x83\x57\x64\x66\x06\x63\x46\x56\xf0\x62\xec\x62\x69\x5e\xd3\x96\x14\x57\x83\x62\xc9\x55\x87\x87\x21\x81\x4a\x8f\xa3\x55\x66\x83\xb1\x67\x65\x8d\x56\x84\xdd\x5a\x6a\x68\x0f\x62\xe6\x7b\xee\x96\x11\x51\x70\x6f\x9c\x8c\x30\x63\xfd\x89\xc8\x61\xd2\x7f\x06\x70\xc2\x6e\xe5\x74\x05\x69\x94\x72\xfc\x5e\xca\x90\xce\x67\x17\x6d\x6a\x63\x5e\x52\xb3\x72\x62\x80\x01\x4f\x6c\x59\xe5\x91\x6a\x70\xd9\x6d\x9d\x52\xd2\x4e\x50\x96\xf7\x95\x6d\x85\x7e\x78\xca\x7d\x2f\x51\x21\x57\x92\x64\xc2\x80\x8b\x7c\x7b\x6c\xea\x68\xf1\x69\x5e\x51\xb7\x53\x98\x68\xa8\x72\x81\x9e\xce\x7b\xf1\x72\xf8\x79\xbb\x6f\x13\x74\x06\x67\x4e\x91\xcc\x9c\xa4\x79\x3c\x83\x89\x83\x54\x54\x0f\x68\x17\x4e\x3d\x53\x89\x52\xb1\x78\x3e\x53\x86\x52\x29\x50\x88\x4f\x8b\x4f\xd0\x00\x00\x00\x00", /* 5100 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x75\xe2\x7a\xcb\x7c\x92\x6c\xa5\x96\xb6\x52\x9b\x74\x83\x54\xe9\x4f\xe9\x80\x54\x83\xb2\x8f\xde\x95\x70\x5e\xc9\x60\x1c\x6d\x9f\x5e\x18\x65\x5b\x81\x38\x94\xfe\x60\x4b\x70\xbc\x7e\xc3\x7c\xae\x51\xc9\x68\x81\x7c\xb1\x82\x6f\x4e\x24\x8f\x86\x91\xcf\x66\x7e\x4e\xae\x8c\x05\x64\xa9\x80\x4a\x50\xda\x75\x97\x71\xce\x5b\xe5\x8f\xbd\x6f\x66\x4e\x86\x64\x82\x95\x63\x5e\xd6\x65\x99\x52\x17\x88\xc2\x70\xc8\x52\xa3\x73\x0e\x74\x33\x67\x97\x78\xf7\x97\x16\x4e\x34\x90\xbb\x9c\xde\x6d\xcb\x51\xdb\x8d\x41\x54\x1d", /* 5180 */ "\x00\x00\x62\xce\x73\xb2\x83\xf1\x96\xf6\x9f\x84\x94\xc3\x4f\x36\x7f\x9a\x51\xcc\x70\x75\x96\x75\x5c\xad\x98\x86\x53\xe6\x4e\xe4\x6e\x9c\x74\x09\x69\xb4\x78\x6b\x99\x8f\x75\x59\x52\x18\x76\x24\x6d\x41\x67\xf3\x51\x6d\x9f\x99\x80\x4b\x54\x99\x7b\x3c\x7a\xbf\x96\x86\x57\x84\x62\xe2\x96\x47\x69\x7c\x5a\x04\x64\x02\x7b\xd3\x6f\x0f\x96\x4b\x82\xa6\x53\x62\x98\x85\x5e\x90\x70\x89\x63\xb3\x53\x64\x86\x4f\x9c\x81\x9e\x93\x78\x8c\x97\x32\x8d\xef\x8d\x42\x9e\x7f\x6f\x5e\x79\x84\x5f\x55\x96\x46\x62\x2e\x9a\x74\x54\x15\x94\xdd\x4f\xa3\x65\xc5\x5c\x65\x5c\x61\x7f\x15\x86\x51\x6c\x2f\x5f\x8b\x73\x87\x6e\xe4\x7e\xff\x5c\xe6\x63\x1b\x5b\x6a\x6e\xe6\x53\x75\x4e\x71\x63\xa0\x75\x65\x62\xa1\x8f\x6e\x4f\x26\x4e\xd1\x6c\xa6\x7e\xb6\x8b\xba\x84\x1d\x87\xba\x7f\x57\x90\x3b\x95\x23\x7b\xa9\x9a\xa1\x88\xf8\x84\x3d\x6d\x1b\x9a\x86\x7e\xdc\x59\x88\x9e\xbb\x73\x9b\x78\x01\x86\x82\x9a\x6c\x9a\x82\x56\x1b\x54\x17\x57\xcb\x4e\x70\x9e\xa6\x53\x56\x8f\xc8\x81\x09\x77\x92\x99\x92\x86\xee\x6e\xe1\x85\x13\x66\xfc\x61\x62\x6f\x2b\x00\x00\x00\x00", /* 5200 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x8c\x29\x82\x92\x83\x2b\x76\xf2\x6c\x13\x5f\xd9\x83\xbd\x73\x2b\x83\x05\x95\x1a\x6b\xdb\x77\xdb\x94\xc6\x53\x6f\x83\x02\x51\x92\x5e\x3d\x8c\x8c\x8d\x38\x4e\x48\x73\xab\x67\x9a\x68\x85\x91\x76\x97\x09\x71\x64\x6c\xa1\x77\x09\x5a\x92\x95\x41\x6b\xcf\x7f\x8e\x66\x27\x5b\xd0\x59\xb9\x5a\x9a\x95\xe8\x95\xf7\x4e\xec\x84\x0c\x84\x99\x6a\xac\x76\xdf\x95\x30\x73\x1b\x68\xa6\x5b\x5f\x77\x2f\x91\x9a\x97\x61\x7c\xdc\x8f\xf7\x8c\x1c\x5f\x25\x7c\x73\x79\xd8\x89\xc5\x6c\xcc\x87\x1c\x5b\xc6\x5e\x42\x68\xc9\x77\x20", /* 5280 */ "\x00\x00\x7e\xf5\x51\x95\x51\x4d\x52\xc9\x5a\x29\x7f\x05\x97\x62\x82\xd7\x63\xcf\x77\x84\x85\xd0\x79\xd2\x6e\x3a\x5e\x99\x59\x99\x85\x11\x70\x6d\x6c\x11\x62\xbf\x76\xbf\x65\x4f\x60\xaf\x95\xfd\x66\x0e\x87\x9f\x9e\x23\x94\xed\x54\x0d\x54\x7d\x8c\x2c\x64\x78\x64\x79\x86\x11\x6a\x21\x81\x9c\x78\xe8\x64\x69\x9b\x54\x62\xb9\x67\x2b\x83\xab\x58\xa8\x9e\xd8\x6c\xab\x6f\x20\x5b\xde\x96\x4c\x8c\x0b\x72\x5f\x67\xd0\x62\xc7\x72\x61\x4e\xa9\x59\xc6\x6b\xcd\x58\x93\x66\xae\x5e\x55\x52\xdf\x61\x55\x67\x28\x76\xee\x77\x66\x72\x67\x7a\x46\x62\xff\x54\xea\x54\x50\x94\xa0\x90\xa3\x5a\x1c\x7e\xb3\x6c\x16\x4e\x43\x59\x76\x80\x10\x59\x48\x53\x57\x75\x37\x96\xbe\x56\xca\x63\x20\x81\x11\x60\x7c\x95\xf9\x6d\xd6\x54\x62\x99\x81\x51\x85\x5a\xe9\x80\xfd\x59\xae\x97\x13\x50\x2a\x6c\xe5\x5c\x3c\x62\xdf\x4f\x60\x53\x3f\x81\x7b\x90\x06\x6e\xba\x85\x2b\x62\xc8\x5e\x74\x78\xbe\x64\xb5\x63\x7b\x5f\xf5\x5a\x18\x91\x7f\x9e\x1f\x5c\x3f\x63\x4f\x80\x42\x5b\x7d\x55\x6e\x95\x4a\x95\x4d\x6d\x85\x60\xa8\x67\xe0\x72\xde\x51\xdd\x5b\x81\x00\x00\x00\x00", /* 5300 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x62\xe7\x6c\xde\x72\x5b\x62\x6d\x94\xae\x7e\xbd\x81\x13\x6d\x53\x51\x9c\x5f\x04\x59\x74\x52\xaa\x60\x12\x59\x73\x66\x96\x86\x50\x75\x9f\x63\x2a\x61\xe6\x7c\xef\x8b\xfa\x54\xe6\x6b\x27\x9e\x25\x6b\xb4\x85\xd5\x54\x55\x50\x76\x6c\xa4\x55\x6a\x8d\xb4\x72\x2c\x5e\x15\x60\x15\x74\x36\x62\xcd\x63\x92\x72\x4c\x5f\x98\x6e\x43\x6d\x3e\x65\x00\x6f\x58\x76\xd8\x78\xd0\x76\xfc\x75\x54\x52\x24\x53\xdb\x4e\x53\x5e\x9e\x65\xc1\x80\x2a\x80\xd6\x62\x9b\x54\x86\x52\x28\x70\xae\x88\x8d\x8d\xd1\x6c\xe1\x54\x78\x80\xda", /* 5380 */ "\x00\x00\x57\xf9\x88\xf4\x8d\x54\x96\x6a\x91\x4d\x4f\x69\x6c\x9b\x55\xb7\x76\xc6\x78\x30\x62\xa8\x70\xf9\x6f\x8e\x5f\x6d\x84\xec\x68\xda\x78\x7c\x7b\xf7\x81\xa8\x67\x0b\x9e\x4f\x63\x67\x78\xb0\x57\x6f\x78\x12\x97\x39\x62\x79\x62\xab\x52\x88\x74\x35\x6b\xd7\x55\x64\x81\x3e\x75\xb2\x76\xae\x53\x39\x75\xde\x50\xfb\x5c\x41\x8b\x6c\x7b\xc7\x50\x4f\x72\x47\x9a\x97\x98\xd8\x6f\x02\x74\xe2\x79\x68\x64\x87\x77\xa5\x62\xfc\x98\x91\x8d\x2b\x54\xc1\x80\x58\x4e\x52\x57\x6a\x82\xf9\x84\x0d\x5e\x73\x51\xed\x74\xf6\x8b\xc4\x5c\x4f\x57\x61\x6c\xfc\x98\x87\x5a\x46\x78\x34\x9b\x44\x8f\xeb\x7c\x95\x52\x56\x62\x51\x94\xfa\x4e\xc6\x83\x86\x84\x61\x83\xe9\x84\xb2\x57\xd4\x67\x34\x57\x03\x66\x6e\x6d\x66\x8c\x31\x66\xdd\x70\x11\x67\x1f\x6b\x3a\x68\x16\x62\x1a\x59\xbb\x4e\x03\x51\xc4\x6f\x06\x67\xd2\x6c\x8f\x51\x76\x68\xcb\x59\x47\x6b\x67\x75\x66\x5d\x0e\x81\x10\x9f\x50\x65\xd7\x79\x48\x79\x41\x9a\x91\x8d\x77\x5c\x82\x4e\x5e\x4f\x01\x54\x2f\x59\x51\x78\x0c\x56\x68\x6c\x14\x8f\xc4\x5f\x03\x6c\x7d\x6c\xe3\x8b\xab\x63\x90\x00\x00\x00\x00", /* 5400 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x60\x70\x6d\x3d\x72\x75\x62\x66\x94\x8e\x94\xc5\x53\x43\x8f\xc1\x7b\x7e\x4e\xdf\x8c\x26\x4e\x7e\x9e\xd4\x94\xb1\x94\xb3\x52\x4d\x6f\x5c\x90\x63\x6d\x45\x8c\x34\x58\x11\x5d\x4c\x6b\x20\x6b\x49\x67\xaa\x54\x5b\x81\x54\x7f\x8c\x58\x99\x85\x37\x5f\x3a\x62\xa2\x6a\x47\x95\x39\x65\x72\x60\x84\x68\x65\x77\xa7\x4e\x54\x4f\xa8\x5d\xe7\x97\x98\x64\xac\x7f\xd8\x5c\xed\x4f\xcf\x7a\x8d\x52\x07\x83\x04\x4e\x14\x60\x2f\x7a\x83\x94\xa6\x4f\xb5\x4e\xb2\x79\xe6\x74\x34\x52\xe4\x82\xb9\x64\xd2\x79\xbd\x5b\xdd\x6c\x81", /* 5480 */ "\x00\x00\x97\x52\x8f\x7b\x6c\x22\x50\x3e\x53\x7f\x6e\x05\x64\xce\x66\x74\x6c\x30\x60\xc5\x98\x77\x8b\xf7\x5e\x86\x74\x3c\x7a\x77\x79\xcb\x4e\x18\x90\xb1\x74\x03\x6c\x42\x56\xda\x91\x4b\x6c\xc5\x8d\x8b\x53\x3a\x86\xc6\x66\xf2\x8e\xaf\x5c\x48\x9a\x71\x6e\x20\x53\xd6\x5a\x36\x9f\x8b\x8d\xa3\x53\xbb\x57\x08\x98\xa7\x67\x43\x91\x9b\x6c\xc9\x51\x68\x75\xca\x62\xf3\x72\xac\x52\x38\x52\x9d\x7f\x3a\x70\x94\x76\x38\x53\x74\x9e\x4a\x69\xb7\x78\x6e\x96\xc0\x88\xd9\x7f\xa4\x71\x36\x71\xc3\x51\x89\x67\xd3\x74\xe4\x58\xe4\x65\x18\x56\xb7\x8b\xa9\x99\x76\x62\x70\x7e\xd5\x60\xf9\x70\xed\x58\xec\x4e\xc1\x4e\xba\x5f\xcd\x97\xe7\x4e\xfb\x8b\xa4\x52\x03\x59\x8a\x7e\xab\x62\x54\x4e\xcd\x65\xe5\x62\x0e\x83\x38\x84\xc9\x83\x63\x87\x8d\x71\x94\x6e\xb6\x5b\xb9\x7e\xd2\x51\x97\x63\xc9\x67\xd4\x80\x89\x83\x39\x88\x15\x51\x12\x5b\x7a\x59\x82\x8f\xb1\x4e\x73\x6c\x5d\x51\x65\x89\x25\x8f\x6f\x96\x2e\x85\x4a\x74\x5e\x95\x10\x95\xf0\x6d\xa6\x82\xe5\x5f\x31\x64\x92\x6d\x12\x84\x28\x81\x6e\x9c\xc3\x58\x5e\x8d\x5b\x4e\x09\x53\xc1\x00\x00\x00\x00", /* 5500 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4f\x1e\x65\x63\x68\x51\x55\xd3\x4e\x27\x64\x14\x9a\x9a\x62\x6b\x5a\xc2\x74\x5f\x82\x72\x6d\xa9\x68\xee\x50\xe7\x83\x8e\x78\x02\x67\x40\x52\x39\x6c\x99\x7e\xb1\x50\xbb\x55\x65\x71\x5e\x7b\x5b\x66\x52\x73\xca\x82\xeb\x67\x49\x5c\x71\x52\x20\x71\x7d\x88\x6b\x95\xea\x96\x55\x64\xc5\x8d\x61\x81\xb3\x55\x84\x6c\x55\x62\x47\x7f\x2e\x58\x92\x4f\x24\x55\x46\x8d\x4f\x66\x4c\x4e\x0a\x5c\x1a\x88\xf3\x68\xa2\x63\x4e\x7a\x0d\x70\xe7\x82\x8d\x52\xfa\x97\xf6\x5c\x11\x54\xe8\x90\xb5\x7e\xcd\x59\x62\x8d\x4a\x86\xc7", /* 5580 */ "\x00\x00\x82\x0c\x82\x0d\x8d\x66\x64\x44\x5c\x04\x61\x51\x6d\x89\x79\x3e\x8b\xbe\x78\x37\x75\x33\x54\x7b\x4f\x38\x8e\xab\x6d\xf1\x5a\x20\x7e\xc5\x79\x5e\x6c\x88\x5b\xa1\x5a\x76\x75\x1a\x80\xbe\x61\x4e\x6e\x17\x58\xf0\x75\x1f\x75\x25\x72\x72\x53\x47\x7e\xf3\x77\x01\x76\xdb\x52\x69\x80\xdc\x57\x23\x5e\x08\x59\x31\x72\xee\x65\xbd\x6e\x7f\x8b\xd7\x5c\x38\x86\x71\x53\x41\x77\xf3\x62\xfe\x65\xf6\x4e\xc0\x98\xdf\x86\x80\x5b\x9e\x8b\xc6\x53\xf2\x77\xe2\x4f\x7f\x5c\x4e\x9a\x76\x59\xcb\x5f\x0f\x79\x3a\x58\xeb\x4e\x16\x67\xff\x4e\x8b\x62\xed\x8a\x93\x90\x1d\x52\xbf\x66\x2f\x55\xdc\x56\x6c\x90\x02\x4e\xd5\x4f\x8d\x91\xca\x99\x70\x6c\x0f\x5e\x02\x60\x43\x5b\xa4\x89\xc6\x8b\xd5\x65\x36\x62\x4b\x99\x96\x5b\x88\x5b\xff\x63\x88\x55\x2e\x53\xd7\x76\x26\x51\x7d\x85\x2c\x67\xa2\x68\xb3\x6b\x8a\x62\x92\x8f\x93\x53\xd4\x82\x12\x6d\xd1\x75\x8f\x4e\x66\x8d\x4e\x5b\x70\x71\x9f\x85\xaf\x66\x91\x66\xd9\x7f\x72\x87\x00\x9e\xcd\x9f\x20\x5c\x5e\x67\x2f\x8f\xf0\x68\x11\x67\x5f\x62\x0d\x7a\xd6\x58\x85\x5e\xb6\x65\x70\x6f\x31\x00\x00\x00\x00", /* 5600 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x60\x55\x52\x37\x80\x0d\x64\x54\x88\x70\x75\x29\x5e\x05\x68\x13\x62\xf4\x97\x1c\x53\xcc\x72\x3d\x8c\x01\x6c\x34\x77\x61\x7a\x0e\x54\x2e\x77\xac\x98\x7a\x82\x1c\x8b\xf4\x78\x55\x67\x14\x70\xc1\x65\xaf\x64\x95\x56\x36\x60\x1d\x79\xc1\x53\xf8\x4e\x1d\x6b\x7b\x80\x86\x5b\xfa\x55\xe3\x56\xdb\x4f\x3a\x4f\x3c\x99\x72\x5d\xf3\x67\x7e\x80\x38\x60\x02\x98\x82\x90\x01\x5b\x8b\x8b\xbc\x8b\xf5\x64\x1c\x82\x58\x64\xde\x55\xfd\x82\xcf\x91\x65\x4f\xd7\x7d\x20\x90\x1f\x7c\x9f\x50\xf3\x58\x51\x6e\xaf\x5b\xbf\x8b\xc9", /* 5680 */ "\x00\x00\x80\x83\x91\x78\x84\x9c\x7b\x97\x86\x7d\x96\x8b\x96\x8f\x7e\xe5\x9a\xd3\x78\x8e\x5c\x81\x7a\x57\x90\x42\x96\xa7\x79\x5f\x5b\x59\x63\x5f\x7b\x0b\x84\xd1\x68\xad\x55\x06\x7f\x29\x74\x10\x7d\x22\x95\x01\x62\x40\x58\x4c\x4e\xd6\x5b\x83\x59\x79\x58\x54\x73\x6d\x63\x1e\x8e\x4b\x8e\x0f\x80\xce\x82\xd4\x62\xac\x53\xf0\x6c\xf0\x91\x5e\x59\x2a\x60\x01\x6c\x70\x57\x4d\x64\x4a\x8d\x2a\x76\x2b\x6e\xe9\x57\x5b\x6a\x80\x75\xf0\x6f\x6d\x8c\x2d\x8c\x08\x57\x66\x6b\xef\x88\x92\x78\xb3\x63\xa2\x53\xf9\x70\xad\x6c\x64\x58\x58\x64\x2a\x58\x02\x68\xe0\x81\x9b\x55\x10\x7c\xd6\x50\x18\x8e\xba\x6d\xcc\x8d\x9f\x70\xeb\x63\x8f\x6d\x9b\x6e\xd4\x7e\xe6\x84\x04\x68\x43\x90\x03\x6d\xd8\x96\x76\x8b\xa8\x59\x57\x72\x79\x85\xe4\x81\x7e\x75\xbc\x8a\x8a\x68\xaf\x52\x54\x8e\x22\x95\x11\x63\xd0\x98\x98\x8e\x44\x55\x7c\x4f\x53\x66\xff\x56\x8f\x60\xd5\x6d\x95\x52\x43\x5c\x49\x59\x29\x6d\xfb\x58\x6b\x75\x30\x75\x1c\x60\x6c\x82\x14\x81\x46\x63\x11\x67\x61\x8f\xe2\x77\x3a\x8d\xf3\x8d\x34\x94\xc1\x5e\x16\x53\x85\x54\x2c\x70\xc3\x00\x00\x00\x00", /* 5700 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6c\x40\x5e\xf7\x50\x5c\x4e\xad\x5e\xad\x63\x3a\x82\x47\x90\x1a\x68\x50\x91\x6e\x77\xb3\x54\x0c\x94\xdc\x5f\x64\x7a\xe5\x68\x76\x63\x45\x7b\x52\x7e\xdf\x75\xdb\x50\x77\x62\x95\x59\x34\x90\x0f\x51\xf8\x79\xc3\x7a\x81\x56\xfe\x5f\x92\x90\x14\x6d\x82\x5c\x60\x57\x1f\x54\x10\x51\x54\x6e\x4d\x56\xe2\x63\xa8\x98\x93\x81\x7f\x87\x15\x89\x2a\x90\x00\x54\x1e\x5c\x6f\x81\xc0\x62\xd6\x62\x58\x81\x31\x9e\x35\x96\x40\x9a\x6e\x9a\x7c\x69\x2d\x59\xa5\x62\xd3\x55\x3e\x63\x16\x54\xc7\x86\xd9\x6d\x3c\x5a\x03\x74\xe6", /* 5780 */ "\x00\x00\x88\x9c\x6b\x6a\x59\x16\x8c\x4c\x5f\x2f\x6e\x7e\x73\xa9\x98\x7d\x4e\x38\x70\xf7\x5b\x8c\x78\x97\x63\x3d\x66\x5a\x76\x96\x60\xcb\x5b\x9b\x5a\x49\x4e\x07\x81\x55\x6c\x6a\x73\x8b\x4e\xa1\x67\x89\x7f\x51\x5f\x80\x65\xfa\x67\x1b\x5f\xd8\x59\x84\x5a\x01\x5d\xcd\x5f\xae\x53\x71\x97\xe6\x8f\xdd\x68\x45\x56\xf4\x55\x2f\x60\xdf\x4e\x3a\x6f\x4d\x7e\xf4\x82\xc7\x84\x0e\x59\xd4\x4f\x1f\x4f\x2a\x5c\x3e\x7e\xac\x67\x2a\x85\x1a\x54\x73\x75\x4f\x80\xc3\x55\x82\x9b\x4f\x4f\x4d\x6e\x2d\x8c\x13\x5c\x09\x61\x70\x53\x6b\x76\x1f\x6e\x29\x86\x8a\x65\x87\x95\xfb\x7e\xb9\x54\x3b\x7a\x33\x7d\x0a\x95\xee\x55\xe1\x7f\xc1\x74\xee\x63\x1d\x87\x17\x6d\xa1\x7a\x9d\x62\x11\x65\xa1\x53\x67\x63\xe1\x6c\x83\x5d\xeb\x54\x5c\x94\xa8\x4e\x4c\x6c\x61\x8b\xec\x5c\x4b\x65\xe0\x82\x9c\x68\xa7\x54\x3e\x54\x34\x6b\xcb\x6b\x66\x4e\x94\x63\x42\x53\x48\x82\x1e\x4f\x0d\x4f\xae\x57\x5e\x62\x0a\x96\xfe\x66\x64\x72\x69\x52\xff\x52\xa1\x60\x9f\x8b\xef\x66\x14\x71\x99\x67\x90\x89\x7f\x78\x52\x77\xfd\x66\x70\x56\x3b\x54\x38\x95\x21\x72\x7a\x00\x00\x00\x00", /* 5800 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7a\x00\x60\x6f\x5e\x0c\x60\x89\x81\x9d\x59\x15\x60\xdc\x71\x84\x70\xef\x6e\xaa\x6c\x50\x72\x80\x6a\x84\x88\xad\x5e\x2d\x4e\x60\x5a\xb3\x55\x9c\x94\xe3\x6d\x17\x7c\xfb\x96\x99\x62\x0f\x7e\xc6\x77\x8e\x86\x7e\x53\x23\x97\x1e\x8f\x96\x66\x87\x5c\xe1\x4f\xa0\x72\xed\x4e\x0b\x53\xa6\x59\x0f\x54\x13\x63\x80\x95\x28\x51\x48\x4e\xd9\x9c\x9c\x7e\xa4\x54\xb8\x8d\x24\x88\x54\x82\x37\x95\xf2\x6d\x8e\x5f\x26\x5a\xcc\x66\x3e\x96\x69\x73\xb0\x73\x2e\x53\xbf\x81\x7a\x99\x85\x7f\xa1\x5b\xaa\x96\x77\x96\x50\x7e\xbf", /* 5880 */ "\x00\x00\x76\xf8\x53\xa2\x95\x76\x99\x99\x7b\xb1\x89\x44\x6e\x58\x4e\x61\x7f\xd4\x79\x65\x8b\xe6\x60\xf3\x54\xcd\x4e\xab\x98\x79\x5d\xf7\x6a\x61\x50\xcf\x54\x11\x8c\x61\x84\x27\x78\x5d\x97\x04\x52\x4a\x54\xee\x56\xa3\x95\x00\x6d\x88\x5b\xb5\x6d\xc6\x66\x53\x5c\x0f\x5b\x5d\x68\x21\x80\x96\x55\x78\x7b\x11\x65\x48\x69\x54\x4e\x9b\x6b\x47\x87\x4e\x97\x8b\x53\x4f\x63\x1f\x64\x3a\x90\xaa\x65\x9c\x80\xc1\x8c\x10\x51\x99\x68\xb0\x53\x78\x87\xf9\x61\xc8\x6c\xc4\x6c\xfb\x8c\x22\x5c\x51\x85\xaa\x82\xaf\x95\x0c\x6b\x23\x8f\x9b\x65\xb0\x5f\xfb\x5f\xc3\x4f\xe1\x88\x45\x66\x1f\x81\x65\x73\x29\x60\xfa\x51\x74\x52\x11\x57\x8b\x5f\x62\x90\xa2\x88\x4c\x91\x92\x5e\x78\x67\x4f\x60\x27\x59\xd3\x51\x44\x51\xf6\x80\xf8\x53\x08\x6c\x79\x96\xc4\x71\x8a\x4f\x11\x4f\xee\x7f\x9e\x67\x3d\x55\xc5\x95\x08\x79\xc0\x88\x96\x7e\xe3\x58\x9f\x62\x0c\x97\x00\x86\x5a\x56\x18\x98\x7b\x5f\x90\x8b\xb8\x84\xc4\x91\x57\x53\xd9\x65\xed\x5e\x8f\x75\x5c\x60\x64\x7d\x6e\x5a\x7f\x7e\xea\x7e\xed\x8f\x69\x55\xa7\x5b\xa3\x60\xac\x65\xcb\x73\x84\x00\x00\x00\x00", /* 5900 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x90\x09\x76\x63\x77\x29\x7e\xda\x97\x74\x85\x9b\x5b\x66\x7a\x74\x96\xea\x88\x40\x52\xcb\x71\x8f\x5f\xaa\x65\xec\x8b\xe2\x5b\xfb\x9a\x6f\x5d\xe1\x6b\x89\x6c\x5b\x8b\xad\x8b\xaf\x90\x0a\x8f\xc5\x53\x8b\x62\xbc\x9e\x26\x9e\x2d\x54\x40\x4e\x2b\x82\xbd\x72\x59\x86\x9c\x5d\x16\x88\x59\x6d\xaf\x96\xc5\x54\xd1\x4e\x9a\x8b\xb6\x71\x09\x54\xbd\x96\x09\x70\xdf\x6d\xf9\x76\xd0\x4e\x25\x78\x14\x87\x12\x5c\xa9\x5e\xf6\x8a\x00\x98\x9c\x96\x0e\x70\x8e\x6c\xbf\x59\x44\x63\xa9\x77\x3c\x88\x4d\x6f\x14\x82\x73\x58\x30", /* 5980 */ "\x00\x00\x71\xd5\x53\x8c\x78\x1a\x96\xc1\x55\x01\x5f\x66\x71\x30\x5b\xb4\x8c\x1a\x9a\x8c\x6b\x83\x59\x2e\x9e\x2f\x79\xe7\x67\x68\x62\x6c\x4f\x6f\x75\xa1\x7f\x8a\x6d\x0b\x96\x33\x6c\x27\x4e\xf0\x75\xd2\x51\x7b\x68\x37\x6f\x3e\x90\x80\x81\x70\x59\x96\x74\x76\x64\x47\x5c\x27\x90\x65\x7a\x91\x8c\x23\x59\xda\x54\xac\x82\x00\x83\x6f\x89\x81\x80\x00\x69\x30\x56\x4e\x80\x36\x72\x37\x91\xce\x51\xb6\x4e\x5f\x98\x75\x63\x96\x4e\x1a\x53\xf6\x66\xf3\x81\x4b\x59\x1c\x6d\xb2\x4e\x00\x58\xf9\x53\x3b\x63\xd6\x94\xf1\x4f\x9d\x4f\x0a\x88\x63\x98\x90\x59\x37\x90\x57\x79\xfb\x4e\xea\x80\xf0\x75\x91\x6c\x82\x5b\x9c\x59\xe8\x5f\x5d\x69\x05\x86\x81\x50\x1a\x5d\xf2\x4e\x59\x77\xe3\x4e\xe5\x82\x7a\x62\x91\x66\x13\x90\x91\x5c\x79\x4e\xbf\x5f\x79\x81\xc6\x90\x38\x80\x84\x75\xab\x4e\xa6\x88\xd4\x61\x0f\x6b\xc5\x5f\xc6\x4e\x49\x76\xca\x6e\xa2\x8b\xe3\x8b\xae\x8c\x0a\x8b\xd1\x5f\x02\x7f\xfc\x7f\xcc\x7e\xce\x83\x35\x83\x6b\x56\xe0\x6b\xb7\x97\xf3\x96\x34\x59\xfb\x54\x1f\x94\xf6\x6d\xeb\x5b\xc5\x99\x6e\x5c\x39\x5f\x15\x96\x90\x00\x00\x00\x00", /* 5a00 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x53\x70\x82\xf1\x6a\x31\x5a\x74\x9e\x70\x5e\x94\x7f\x28\x83\xb9\x84\x24\x84\x25\x83\x67\x87\x47\x8f\xce\x8d\x62\x76\xc8\x5f\x71\x98\x96\x78\x6c\x66\x20\x54\xdf\x62\xe5\x4f\x63\x81\xc3\x75\xc8\x5e\xb8\x96\xcd\x8e\x0a\x86\xf9\x54\x8f\x6c\xf3\x6d\x8c\x6c\x38\x60\x7f\x52\xc7\x75\x28\x5e\x7d\x4f\x18\x60\xa0\x5f\xe7\x5c\x24\x75\x31\x90\xae\x94\xc0\x72\xb9\x6c\xb9\x6e\x38\x91\x49\x67\x09\x53\xcb\x53\xf3\x4f\x51\x91\xc9\x8b\xf1\x53\xc8\x5e\x7c\x8f\xc2\x6d\xe4\x4e\x8e\x76\xc2\x69\x86\x86\x5e\x61\x1a\x82\x06", /* 5a80 */ "\x00\x00\x4f\x59\x4f\xde\x90\x3e\x9c\x7c\x61\x09\x6e\x1d\x6e\x14\x96\x85\x4e\x88\x5a\x31\x96\xe8\x4e\x0e\x5c\x7f\x79\xb9\x5b\x87\x8b\xed\x7f\xbd\x73\x89\x57\xdf\x82\x8b\x90\xc1\x54\x01\x90\x47\x55\xbb\x5c\xea\x5f\xa1\x61\x08\x6b\x32\x72\xf1\x80\xb2\x8a\x89\x6d\x74\x5b\xd3\x88\xd5\x98\x84\x8c\x6b\x9a\x6d\x9e\x33\x6e\x0a\x51\xa4\x51\x43\x57\xa3\x88\x81\x53\x9f\x63\xf4\x8f\x95\x56\xed\x54\x58\x57\x06\x73\x3f\x6e\x90\x7f\x18\x8f\xdc\x82\xd1\x61\x3f\x60\x28\x96\x62\x66\xf0\x7e\xa6\x8d\x8a\x8d\xc3\x94\xa5\x5c\xb3\x7c\xa4\x67\x08\x60\xa6\x96\x05\x80\x18\x4e\x91\x90\xe7\x53\x00\x96\x68\x51\x41\x8f\xd0\x85\x74\x91\x5d\x66\x55\x97\xf5\x5b\x55\x53\x1d\x78\x38\x67\x42\x68\x3d\x54\xc9\x70\x7e\x5b\xb0\x8f\x7d\x51\x8d\x57\x28\x54\xb1\x65\x12\x66\x82\x8d\x5e\x8d\x43\x81\x0f\x84\x6c\x90\x6d\x7c\xdf\x51\xff\x85\xfb\x67\xa3\x65\xe9\x6f\xa1\x86\xa4\x8e\x81\x56\x6a\x90\x20\x76\x82\x70\x76\x71\xe5\x8d\x23\x62\xe9\x52\x19\x6c\xfd\x8d\x3c\x60\x0e\x58\x9e\x61\x8e\x66\xfe\x8d\x60\x62\x4e\x55\xb3\x6e\x23\x67\x2d\x8f\x67\x00\x00\x00\x00", /* 5b00 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x94\xe1\x95\xf8\x77\x28\x68\x05\x69\xa8\x54\x8b\x4e\x4d\x70\xb8\x8b\xc8\x64\x58\x65\x8b\x5b\x85\x7a\x84\x50\x3a\x5b\xe8\x77\xbb\x6b\xe1\x8a\x79\x7c\x98\x6c\xbe\x76\xcf\x65\xa9\x8f\x97\x5d\x2d\x5c\x55\x86\x38\x68\x08\x53\x60\x62\x18\x7a\xd9\x6e\x5b\x7e\xfd\x6a\x1f\x7a\xe0\x5f\x70\x6f\x33\x5f\x20\x63\x8c\x6d\xa8\x67\x56\x4e\x08\x5e\x10\x8d\x26\x4e\xd7\x80\xc0\x76\x34\x96\x9c\x62\xdb\x66\x2d\x62\x7e\x6c\xbc\x8d\x75\x71\x67\x7f\x69\x51\x46\x80\x87\x53\xec\x90\x6e\x62\x98\x54\xf2\x86\xf0\x8f\x99\x80\x05", /* 5b80 */ "\x00\x00\x95\x17\x85\x17\x8f\xd9\x6d\x59\x73\xcd\x65\x9f\x77\x1f\x75\x04\x78\x27\x81\xfb\x8d\x1e\x94\x88\x4f\xa6\x67\x95\x75\xb9\x8b\xca\x97\x07\x63\x2f\x95\x47\x96\x35\x84\xb8\x63\x23\x77\x41\x5f\x81\x72\xf0\x4e\x89\x60\x14\x65\x74\x62\xef\x6b\x63\x65\x3f\x5e\x27\x75\xc7\x90\xd1\x8b\xc1\x82\x9d\x67\x9d\x65\x2f\x54\x31\x87\x18\x77\xe5\x80\xa2\x81\x02\x6c\x41\x4e\x4b\x7e\xc7\x80\x4c\x76\xf4\x69\x0d\x6b\x96\x62\x67\x50\x3c\x4f\x84\x57\x40\x63\x07\x6b\x62\x8d\xbe\x53\xea\x65\xe8\x7e\xb8\x5f\xd7\x63\x1a\x63\xb7\x81\xf3\x81\xf4\x7f\x6e\x5e\x1c\x5c\xd9\x52\x36\x66\x7a\x79\xe9\x7a\x1a\x8d\x28\x70\x99\x75\xd4\x6e\xde\x6c\xbb\x7a\x92\x4e\x2d\x76\xc5\x5f\xe0\x94\x9f\x88\x77\x7e\xc8\x79\xcd\x80\xbf\x91\xcd\x4e\xf2\x4f\x17\x82\x1f\x54\x68\x5d\xde\x6d\x32\x8b\xcc\x7c\xa5\x8f\x74\x80\x98\x5e\x1a\x54\x92\x76\xb1\x5b\x99\x66\x3c\x9a\xa4\x73\xe0\x68\x2a\x86\xdb\x67\x31\x73\x2a\x8b\xf8\x8b\xdb\x90\x10\x7a\xf9\x70\xdb\x71\x6e\x62\xc4\x77\xa9\x56\x31\x4e\x3b\x84\x57\x67\xf1\x52\xa9\x86\xc0\x8d\x2e\x94\xf8\x7b\x51\x00\x00\x00\x00", /* 5c00 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4f\x4f\x6c\xe8\x79\x5d\x9a\x7b\x62\x93\x72\x2a\x62\xfd\x4e\x13\x78\x16\x8f\x6c\x64\xb0\x8d\x5a\x7b\xc6\x68\x69\x5e\x84\x88\xc5\x59\x86\x64\x9e\x58\xee\x72\xb6\x69\x0e\x95\x25\x8f\xfd\x8d\x58\x57\x60\x7f\x00\x8c\x06\x51\xc6\x63\x49\x62\xd9\x53\x53\x68\x4c\x74\x22\x83\x01\x91\x4c\x55\x44\x77\x40\x70\x7c\x6d\x4a\x51\x79\x54\xa8\x8d\x44\x59\xff\x6e\xcb\x6d\xc4\x5b\x5c\x7d\x2b\x4e\xd4\x7c\x7d\x6e\xd3\x5b\x50\x81\xea\x6e\x0d\x5b\x57\x9b\x03\x68\xd5\x8e\x2a\x5b\x97\x7e\xfc\x60\x3b\x7e\xb5\x90\xb9\x8d\x70", /* 5c80 */ "\x00\x00\x59\x4f\x63\xcd\x79\xdf\x8d\xb3\x53\x52\x65\xcf\x79\x56\x8b\xc5\x96\x3b\x7e\xc4\x94\xbb\x7e\x82\x56\x34\x91\x89\x67\x00\x7f\x6a\x5c\x0a\x90\x75\x66\x28\x5d\xe6\x4f\x50\x67\xde\x50\x5a\x4f\x5c\x57\x50\x5e\xa7\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4e\x8d\x4e\x0c\x51\x40\x4e\x10\x5e\xff\x53\x45\x4e\x15\x4e\x98\x4e\x1e\x9b\x32\x5b\x6c\x56\x69\x4e\x28\x79\xba\x4e\x3f\x53\x15\x4e\x47\x59\x2d\x72\x3b\x53\x6e\x6c\x10\x56\xdf\x80\xe4\x99\x97\x6b\xd3\x77\x7e\x9f\x17\x4e\x36\x4e\x9f\x9f\x10\x4e\x5c\x4e\x69\x4e\x93\x82\x88\x5b\x5b\x55\x6c\x56\x0f\x4e\xc4\x53\x8d\x53\x9d\x53\xa3\x53\xa5\x53\xae\x97\x65\x8d\x5d\x53\x1a\x53\xf5\x53\x26\x53\x2e\x53\x3e\x8d\x5c\x53\x66\x53\x63\x52\x02\x52\x08\x52\x0e\x52\x2d\x52\x33\x52\x3f\x52\x40\x52\x4c\x52\x5e\x52\x61\x52\x5c\x84\xaf\x52\x7d\x52\x82\x52\x81\x52\x90\x52\x93\x51\x82\x7f\x54\x4e\xbb\x4e\xc3\x4e\xc9\x4e\xc2\x4e\xe8\x4e\xe1\x4e\xeb\x4e\xde\x4f\x1b\x4e\xf3\x4f\x22\x4f\x64\x4e\xf5\x4f\x25\x4f\x27\x4f\x09\x4f\x2b\x4f\x5e\x4f\x67\x65\x38\x4f\x5a\x4f\x5d\x00\x00\x00\x00", /* 5d00 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4f\x5f\x4f\x57\x4f\x32\x4f\x3d\x4f\x76\x4f\x74\x4f\x91\x4f\x89\x4f\x83\x4f\x8f\x4f\x7e\x4f\x7b\x4f\xaa\x4f\x7c\x4f\xac\x4f\x94\x4f\xe6\x4f\xe8\x4f\xea\x4f\xc5\x4f\xda\x4f\xe3\x4f\xdc\x4f\xd1\x4f\xdf\x4f\xf8\x50\x29\x50\x4c\x4f\xf3\x50\x2c\x50\x0f\x50\x2e\x50\x2d\x4f\xfe\x50\x1c\x50\x0c\x50\x25\x50\x28\x50\x7e\x50\x43\x50\x55\x50\x48\x50\x4e\x50\x6c\x50\x7b\x50\xa5\x50\xa7\x50\xa9\x50\xba\x50\xd6\x51\x06\x50\xed\x50\xec\x50\xe6\x50\xee\x51\x07\x51\x0b\x4e\xdd\x6c\x3d\x4f\x58\x4f\x65\x4f\xce\x9f\xa0", /* 5d80 */ "\x00\x00\x6c\x46\x7c\x74\x51\x6e\x5d\xfd\x9e\xc9\x99\x98\x51\x81\x59\x14\x52\xf9\x53\x0d\x8a\x07\x53\x10\x51\xeb\x59\x19\x51\x55\x4e\xa0\x51\x56\x4e\xb3\x88\x6e\x88\xa4\x4e\xb5\x81\x14\x88\xd2\x79\x80\x5b\x34\x88\x03\x7f\xb8\x51\xab\x51\xb1\x51\xbd\x51\xbc\x51\xc7\x51\x96\x51\xa2\x51\xa5\x8b\xa0\x8b\xa6\x8b\xa7\x8b\xaa\x8b\xb4\x8b\xb5\x8b\xb7\x8b\xc2\x8b\xc3\x8b\xcb\x8b\xcf\x8b\xce\x8b\xd2\x8b\xd3\x8b\xd4\x8b\xd6\x8b\xd8\x8b\xd9\x8b\xdc\x8b\xdf\x8b\xe0\x8b\xe4\x8b\xe8\x8b\xe9\x8b\xee\x8b\xf0\x8b\xf3\x8b\xf6\x8b\xf9\x8b\xfc\x8b\xff\x8c\x00\x8c\x02\x8c\x04\x8c\x07\x8c\x0c\x8c\x0f\x8c\x11\x8c\x12\x8c\x14\x8c\x15\x8c\x16\x8c\x19\x8c\x1b\x8c\x18\x8c\x1d\x8c\x1f\x8c\x20\x8c\x21\x8c\x25\x8c\x27\x8c\x2a\x8c\x2b\x8c\x2e\x8c\x2f\x8c\x32\x8c\x33\x8c\x35\x8c\x36\x53\x69\x53\x7a\x96\x1d\x96\x22\x96\x21\x96\x31\x96\x2a\x96\x3d\x96\x3c\x96\x42\x96\x49\x96\x54\x96\x5f\x96\x67\x96\x6c\x96\x72\x96\x74\x96\x88\x96\x8d\x96\x97\x96\xb0\x90\x97\x90\x9b\x90\x9d\x90\x99\x90\xac\x90\xa1\x90\xb4\x90\xb3\x90\xb6\x90\xba\x00\x00\x00\x00", /* 5e00 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x90\xb8\x90\xb0\x90\xcf\x90\xc5\x90\xbe\x90\xd0\x90\xc4\x90\xc7\x90\xd3\x90\xe6\x90\xe2\x90\xdc\x90\xd7\x90\xdb\x90\xeb\x90\xef\x90\xfe\x91\x04\x91\x22\x91\x1e\x91\x23\x91\x31\x91\x2f\x91\x39\x91\x43\x91\x46\x52\x0d\x59\x42\x52\xa2\x52\xac\x52\xad\x52\xbe\x54\xff\x52\xd0\x52\xd6\x52\xf0\x53\xdf\x71\xee\x77\xcd\x5e\xf4\x51\xf5\x51\xfc\x9b\x2f\x53\xb6\x5f\x01\x75\x5a\x5d\xef\x57\x4c\x57\xa9\x57\xa1\x58\x7e\x58\xbc\x58\xc5\x58\xd1\x57\x29\x57\x2c\x57\x2a\x57\x33\x57\x39\x57\x2e\x57\x2f\x57\x5c\x57\x3b", /* 5e80 */ "\x00\x00\x57\x42\x57\x69\x57\x85\x57\x6b\x57\x86\x57\x7c\x57\x7b\x57\x68\x57\x6d\x57\x76\x57\x73\x57\xad\x57\xa4\x57\x8c\x57\xb2\x57\xcf\x57\xa7\x57\xb4\x57\x93\x57\xa0\x57\xd5\x57\xd8\x57\xda\x57\xd9\x57\xd2\x57\xb8\x57\xf4\x57\xef\x57\xf8\x57\xe4\x57\xdd\x58\x0b\x58\x0d\x57\xfd\x57\xed\x58\x00\x58\x1e\x58\x19\x58\x44\x58\x20\x58\x65\x58\x6c\x58\x81\x58\x89\x58\x9a\x58\x80\x99\xa8\x9f\x19\x61\xff\x82\x79\x82\x7d\x82\x7f\x82\x8f\x82\x8a\x82\xa8\x82\x84\x82\x8e\x82\x91\x82\x97\x82\x99\x82\xab\x82\xb8\x82\xbe\x82\xb0\x82\xc8\x82\xca\x82\xe3\x82\x98\x82\xb7\x82\xae\x82\xcb\x82\xcc\x82\xc1\x82\xa9\x82\xb4\x82\xa1\x82\xaa\x82\x9f\x82\xc4\x82\xce\x82\xa4\x82\xe1\x83\x09\x82\xf7\x82\xe4\x83\x0f\x83\x07\x82\xdc\x82\xf4\x82\xd2\x82\xd8\x83\x0c\x82\xfb\x82\xd3\x83\x11\x83\x1a\x83\x06\x83\x14\x83\x15\x82\xe0\x82\xd5\x83\x1c\x83\x51\x83\x5b\x83\x5c\x83\x08\x83\x92\x83\x3c\x83\x34\x83\x31\x83\x9b\x83\x5e\x83\x2f\x83\x4f\x83\x47\x83\x43\x83\x5f\x83\x40\x83\x17\x83\x60\x83\x2d\x83\x3a\x83\x33\x83\x66\x83\x65\x00\x00\x00\x00", /* 5f00 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x83\x68\x83\x1b\x83\x69\x83\x6c\x83\x6a\x83\x6d\x83\x6e\x83\xb0\x83\x78\x83\xb3\x83\xb4\x83\xa0\x83\xaa\x83\x93\x83\x9c\x83\x85\x83\x7c\x83\xb6\x83\xa9\x83\x7d\x83\xb8\x83\x7b\x83\x98\x83\x9e\x83\xa8\x83\xba\x83\xbc\x83\xc1\x84\x01\x83\xe5\x83\xd8\x58\x07\x84\x18\x84\x0b\x83\xdd\x83\xfd\x83\xd6\x84\x1c\x84\x38\x84\x11\x84\x06\x83\xd4\x83\xdf\x84\x0f\x84\x03\x83\xf8\x83\xf9\x83\xea\x83\xc5\x83\xc0\x84\x26\x83\xf0\x83\xe1\x84\x5c\x84\x51\x84\x5a\x84\x59\x84\x73\x84\x87\x84\x88\x84\x7a\x84\x89\x84\x78", /* 5f80 */ "\x00\x00\x84\x3c\x84\x46\x84\x69\x84\x76\x84\x8c\x84\x8e\x84\x31\x84\x6d\x84\xc1\x84\xcd\x84\xd0\x84\xe6\x84\xbd\x84\xd3\x84\xca\x84\xbf\x84\xba\x84\xe0\x84\xa1\x84\xb9\x84\xb4\x84\x97\x84\xe5\x84\xe3\x85\x0c\x75\x0d\x85\x38\x84\xf0\x85\x39\x85\x1f\x85\x3a\x85\x56\x85\x3b\x84\xff\x84\xfc\x85\x59\x85\x48\x85\x68\x85\x64\x85\x5e\x85\x7a\x77\xa2\x85\x43\x85\x72\x85\x7b\x85\xa4\x85\xa8\x85\x87\x85\x8f\x85\x79\x85\xae\x85\x9c\x85\x85\x85\xb9\x85\xb7\x85\xb0\x85\xd3\x85\xc1\x85\xdc\x85\xff\x86\x27\x86\x05\x86\x29\x86\x16\x86\x3c\x5e\xfe\x5f\x08\x59\x3c\x59\x41\x80\x37\x59\x55\x59\x5a\x59\x58\x53\x0f\x5c\x22\x5c\x25\x5c\x2c\x5c\x34\x62\x4c\x62\x6a\x62\x9f\x62\xbb\x62\xca\x62\xda\x62\xd7\x62\xee\x63\x22\x62\xf6\x63\x39\x63\x4b\x63\x43\x63\xad\x63\xf6\x63\x71\x63\x7a\x63\x8e\x63\xb4\x63\x6d\x63\xac\x63\x8a\x63\x69\x63\xae\x63\xbc\x63\xf2\x63\xf8\x63\xe0\x63\xff\x63\xc4\x63\xde\x63\xce\x64\x52\x63\xc6\x63\xbe\x64\x45\x64\x41\x64\x0b\x64\x1b\x64\x20\x64\x0c\x64\x26\x64\x21\x64\x5e\x64\x84\x64\x6d\x64\x96\x00\x00\x00\x00", /* 6000 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x64\x7a\x64\xb7\x64\xb8\x64\x99\x64\xba\x64\xc0\x64\xd0\x64\xd7\x64\xe4\x64\xe2\x65\x09\x65\x25\x65\x2e\x5f\x0b\x5f\xd2\x75\x19\x5f\x11\x53\x5f\x53\xf1\x53\xfd\x53\xe9\x53\xe8\x53\xfb\x54\x12\x54\x16\x54\x06\x54\x4b\x54\x52\x54\x53\x54\x54\x54\x56\x54\x43\x54\x21\x54\x57\x54\x59\x54\x23\x54\x32\x54\x82\x54\x94\x54\x77\x54\x71\x54\x64\x54\x9a\x54\x9b\x54\x84\x54\x76\x54\x66\x54\x9d\x54\xd0\x54\xad\x54\xc2\x54\xb4\x54\xd2\x54\xa7\x54\xa6\x54\xd3\x54\xd4\x54\x72\x54\xa3\x54\xd5\x54\xbb\x54\xbf\x54\xcc", /* 6080 */ "\x00\x00\x54\xd9\x54\xda\x54\xdc\x54\xa9\x54\xaa\x54\xa4\x54\xdd\x54\xcf\x54\xde\x55\x1b\x54\xe7\x55\x20\x54\xfd\x55\x14\x54\xf3\x55\x22\x55\x23\x55\x0f\x55\x11\x55\x27\x55\x2a\x55\x67\x55\x8f\x55\xb5\x55\x49\x55\x6d\x55\x41\x55\x55\x55\x3f\x55\x50\x55\x3c\x55\x37\x55\x56\x55\x75\x55\x76\x55\x77\x55\x33\x55\x30\x55\x5c\x55\x8b\x55\xd2\x55\x83\x55\xb1\x55\xb9\x55\x88\x55\x81\x55\x9f\x55\x7e\x55\xd6\x55\x91\x55\x7b\x55\xdf\x55\xbd\x55\xbe\x55\x94\x55\x99\x55\xea\x55\xf7\x55\xc9\x56\x1f\x55\xd1\x55\xeb\x55\xec\x55\xd4\x55\xe6\x55\xdd\x55\xc4\x55\xef\x55\xe5\x55\xf2\x55\xf3\x55\xcc\x55\xcd\x55\xe8\x55\xf5\x55\xe4\x8f\x94\x56\x1e\x56\x08\x56\x0c\x56\x01\x56\x24\x56\x23\x55\xfe\x56\x00\x56\x27\x56\x2d\x56\x58\x56\x39\x56\x57\x56\x2c\x56\x4d\x56\x62\x56\x59\x56\x5c\x56\x4c\x56\x54\x56\x86\x56\x64\x56\x71\x56\x6b\x56\x7b\x56\x7c\x56\x85\x56\x93\x56\xaf\x56\xd4\x56\xd7\x56\xdd\x56\xe1\x56\xf5\x56\xeb\x56\xf9\x56\xff\x57\x04\x57\x0a\x57\x09\x57\x1c\x5e\x0f\x5e\x19\x5e\x14\x5e\x11\x5e\x31\x5e\x3b\x5e\x3c\x00\x00\x00\x00", /* 6100 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5e\x37\x5e\x44\x5e\x54\x5e\x5b\x5e\x5e\x5e\x61\x5c\x8c\x5c\x7a\x5c\x8d\x5c\x90\x5c\x96\x5c\x88\x5c\x98\x5c\x99\x5c\x91\x5c\x9a\x5c\x9c\x5c\xb5\x5c\xa2\x5c\xbd\x5c\xac\x5c\xab\x5c\xb1\x5c\xa3\x5c\xc1\x5c\xb7\x5c\xc4\x5c\xd2\x5c\xe4\x5c\xcb\x5c\xe5\x5d\x02\x5d\x03\x5d\x27\x5d\x26\x5d\x2e\x5d\x24\x5d\x1e\x5d\x06\x5d\x1b\x5d\x58\x5d\x3e\x5d\x34\x5d\x3d\x5d\x6c\x5d\x5b\x5d\x6f\x5d\x5d\x5d\x6b\x5d\x4b\x5d\x4a\x5d\x69\x5d\x74\x5d\x82\x5d\x99\x5d\x9d\x8c\x73\x5d\xb7\x5d\xc5\x5f\x73\x5f\x77\x5f\x82\x5f\x87", /* 6180 */ "\x00\x00\x5f\x89\x5f\x8c\x5f\x95\x5f\x99\x5f\x9c\x5f\xa8\x5f\xad\x5f\xb5\x5f\xbc\x88\x62\x5f\x61\x72\xad\x72\xb0\x72\xb4\x72\xb7\x72\xb8\x72\xc3\x72\xc1\x72\xce\x72\xcd\x72\xd2\x72\xe8\x72\xef\x72\xe9\x72\xf2\x72\xf4\x72\xf7\x73\x01\x72\xf3\x73\x03\x72\xfa\x72\xfb\x73\x17\x73\x13\x73\x21\x73\x0a\x73\x1e\x73\x1d\x73\x15\x73\x22\x73\x39\x73\x25\x73\x2c\x73\x38\x73\x31\x73\x50\x73\x4d\x73\x57\x73\x60\x73\x6c\x73\x6f\x73\x7e\x82\x1b\x59\x25\x98\xe7\x59\x24\x59\x02\x99\x63\x99\x67\x99\x68\x99\x69\x99\x6a\x99\x6b\x99\x6c\x99\x74\x99\x77\x99\x7d\x99\x80\x99\x84\x99\x87\x99\x8a\x99\x8d\x99\x90\x99\x91\x99\x93\x99\x94\x99\x95\x5e\x80\x5e\x91\x5e\x8b\x5e\x96\x5e\xa5\x5e\xa0\x5e\xb9\x5e\xb5\x5e\xbe\x5e\xb3\x8d\x53\x5e\xd2\x5e\xd1\x5e\xdb\x5e\xe8\x5e\xea\x81\xba\x5f\xc4\x5f\xc9\x5f\xd6\x5f\xcf\x60\x03\x5f\xee\x60\x04\x5f\xe1\x5f\xe4\x5f\xfe\x60\x05\x60\x06\x5f\xea\x5f\xed\x5f\xf8\x60\x19\x60\x35\x60\x26\x60\x1b\x60\x0f\x60\x0d\x60\x29\x60\x2b\x60\x0a\x60\x3f\x60\x21\x60\x78\x60\x79\x60\x7b\x60\x7a\x60\x42\x00\x00\x00\x00", /* 6200 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x60\x6a\x60\x7d\x60\x96\x60\x9a\x60\xad\x60\x9d\x60\x83\x60\x92\x60\x8c\x60\x9b\x60\xec\x60\xbb\x60\xb1\x60\xdd\x60\xd8\x60\xc6\x60\xda\x60\xb4\x61\x20\x61\x26\x61\x15\x61\x23\x60\xf4\x61\x00\x61\x0e\x61\x2b\x61\x4a\x61\x75\x61\xac\x61\x94\x61\xa7\x61\xb7\x61\xd4\x61\xf5\x5f\xdd\x96\xb3\x95\xe9\x95\xeb\x95\xf1\x95\xf3\x95\xf5\x95\xf6\x95\xfc\x95\xfe\x96\x03\x96\x04\x96\x06\x96\x08\x96\x0a\x96\x0b\x96\x0c\x96\x0d\x96\x0f\x96\x12\x96\x15\x96\x16\x96\x17\x96\x19\x96\x1a\x4e\x2c\x72\x3f\x62\x15\x6c\x35", /* 6280 */ "\x00\x00\x6c\x54\x6c\x5c\x6c\x4a\x6c\xa3\x6c\x85\x6c\x90\x6c\x94\x6c\x8c\x6c\x68\x6c\x69\x6c\x74\x6c\x76\x6c\x86\x6c\xa9\x6c\xd0\x6c\xd4\x6c\xad\x6c\xf7\x6c\xf8\x6c\xf1\x6c\xd7\x6c\xb2\x6c\xe0\x6c\xd6\x6c\xfa\x6c\xeb\x6c\xee\x6c\xb1\x6c\xd3\x6c\xef\x6c\xfe\x6d\x39\x6d\x27\x6d\x0c\x6d\x43\x6d\x48\x6d\x07\x6d\x04\x6d\x19\x6d\x0e\x6d\x2b\x6d\x4d\x6d\x2e\x6d\x35\x6d\x1a\x6d\x4f\x6d\x52\x6d\x54\x6d\x33\x6d\x91\x6d\x6f\x6d\x9e\x6d\xa0\x6d\x5e\x6d\x93\x6d\x94\x6d\x5c\x6d\x60\x6d\x7c\x6d\x63\x6e\x1a\x6d\xc7\x6d\xc5\x6d\xde\x6e\x0e\x6d\xbf\x6d\xe0\x6e\x11\x6d\xe6\x6d\xdd\x6d\xd9\x6e\x16\x6d\xab\x6e\x0c\x6d\xae\x6e\x2b\x6e\x6e\x6e\x4e\x6e\x6b\x6e\xb2\x6e\x5f\x6e\x86\x6e\x53\x6e\x54\x6e\x32\x6e\x25\x6e\x44\x6e\xdf\x6e\xb1\x6e\x98\x6e\xe0\x6f\x2d\x6e\xe2\x6e\xa5\x6e\xa7\x6e\xbd\x6e\xbb\x6e\xb7\x6e\xd7\x6e\xb4\x6e\xcf\x6e\x8f\x6e\xc2\x6e\x9f\x6f\x62\x6f\x46\x6f\x47\x6f\x24\x6f\x15\x6e\xf9\x6f\x2f\x6f\x36\x6f\x4b\x6f\x74\x6f\x2a\x6f\x09\x6f\x29\x6f\x89\x6f\x8d\x6f\x8c\x6f\x78\x6f\x72\x6f\x7c\x6f\x7a\x6f\xd1\x00\x00\x00\x00", /* 6300 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6f\xc9\x6f\xa7\x6f\xb9\x6f\xb6\x6f\xc2\x6f\xe1\x6f\xee\x6f\xde\x6f\xe0\x6f\xef\x70\x1a\x70\x23\x70\x1b\x70\x39\x70\x35\x70\x4f\x70\x5e\x5b\x80\x5b\x84\x5b\x95\x5b\x93\x5b\xa5\x5b\xb8\x75\x2f\x9a\x9e\x64\x34\x5b\xe4\x5b\xee\x89\x30\x5b\xf0\x8e\x47\x8b\x07\x8f\xb6\x8f\xd3\x8f\xd5\x8f\xe5\x8f\xee\x8f\xe4\x8f\xe9\x8f\xe6\x8f\xf3\x8f\xe8\x90\x05\x90\x04\x90\x0b\x90\x26\x90\x11\x90\x0d\x90\x16\x90\x21\x90\x35\x90\x36\x90\x2d\x90\x2f\x90\x44\x90\x51\x90\x52\x90\x50\x90\x68\x90\x58\x90\x62\x90\x5b\x66\xb9", /* 6380 */ "\x00\x00\x90\x74\x90\x7d\x90\x82\x90\x88\x90\x83\x90\x8b\x5f\x50\x5f\x57\x5f\x56\x5f\x58\x5c\x3b\x54\xab\x5c\x50\x5c\x59\x5b\x71\x5c\x63\x5c\x66\x7f\xbc\x5f\x2a\x5f\x29\x5f\x2d\x82\x74\x5f\x3c\x9b\x3b\x5c\x6e\x59\x81\x59\x83\x59\x8d\x59\xa9\x59\xaa\x59\xa3\x59\x97\x59\xca\x59\xab\x59\x9e\x59\xa4\x59\xd2\x59\xb2\x59\xaf\x59\xd7\x59\xbe\x5a\x05\x5a\x06\x59\xdd\x5a\x08\x59\xe3\x59\xd8\x59\xf9\x5a\x0c\x5a\x09\x5a\x32\x5a\x34\x5a\x11\x5a\x23\x5a\x13\x5a\x40\x5a\x67\x5a\x4a\x5a\x55\x5a\x3c\x5a\x62\x5a\x75\x80\xec\x5a\xaa\x5a\x9b\x5a\x77\x5a\x7a\x5a\xbe\x5a\xeb\x5a\xb2\x5a\xd2\x5a\xd4\x5a\xb8\x5a\xe0\x5a\xe3\x5a\xf1\x5a\xd6\x5a\xe6\x5a\xd8\x5a\xdc\x5b\x09\x5b\x17\x5b\x16\x5b\x32\x5b\x37\x5b\x40\x5c\x15\x5c\x1c\x5b\x5a\x5b\x65\x5b\x73\x5b\x51\x5b\x53\x5b\x62\x9a\x75\x9a\x77\x9a\x78\x9a\x7a\x9a\x7f\x9a\x7d\x9a\x80\x9a\x81\x9a\x85\x9a\x88\x9a\x8a\x9a\x90\x9a\x92\x9a\x93\x9a\x96\x9a\x98\x9a\x9b\x9a\x9c\x9a\x9d\x9a\x9f\x9a\xa0\x9a\xa2\x9a\xa3\x9a\xa5\x9a\xa7\x7e\x9f\x7e\xa1\x7e\xa3\x7e\xa5\x7e\xa8\x7e\xa9\x00\x00\x00\x00", /* 6400 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7e\xad\x7e\xb0\x7e\xbe\x7e\xc0\x7e\xc1\x7e\xc2\x7e\xc9\x7e\xcb\x7e\xcc\x7e\xd0\x7e\xd4\x7e\xd7\x7e\xdb\x7e\xe0\x7e\xe1\x7e\xe8\x7e\xeb\x7e\xee\x7e\xef\x7e\xf1\x7e\xf2\x7f\x0d\x7e\xf6\x7e\xfa\x7e\xfb\x7e\xfe\x7f\x01\x7f\x02\x7f\x03\x7f\x07\x7f\x08\x7f\x0b\x7f\x0c\x7f\x0f\x7f\x11\x7f\x12\x7f\x17\x7f\x19\x7f\x1c\x7f\x1b\x7f\x1f\x7f\x21\x7f\x22\x7f\x23\x7f\x24\x7f\x25\x7f\x26\x7f\x27\x7f\x2a\x7f\x2b\x7f\x2c\x7f\x2d\x7f\x2f\x7f\x30\x7f\x31\x7f\x32\x7f\x33\x7f\x35\x5e\x7a\x75\x7f\x5d\xdb\x75\x3e\x90\x95", /* 6480 */ "\x00\x00\x73\x8e\x73\x91\x73\xae\x73\xa2\x73\x9f\x73\xcf\x73\xc2\x73\xd1\x73\xb7\x73\xb3\x73\xc0\x73\xc9\x73\xc8\x73\xe5\x73\xd9\x98\x7c\x74\x0a\x73\xe9\x73\xe7\x73\xde\x73\xba\x73\xf2\x74\x0f\x74\x2a\x74\x5b\x74\x26\x74\x25\x74\x28\x74\x30\x74\x2e\x74\x2c\x74\x1b\x74\x1a\x74\x41\x74\x5c\x74\x57\x74\x55\x74\x59\x74\x77\x74\x6d\x74\x7e\x74\x9c\x74\x8e\x74\x80\x74\x81\x74\x87\x74\x8b\x74\x9e\x74\xa8\x74\xa9\x74\x90\x74\xa7\x74\xd2\x74\xba\x97\xea\x97\xeb\x97\xec\x67\x4c\x67\x53\x67\x5e\x67\x48\x67\x69\x67\xa5\x67\x87\x67\x6a\x67\x73\x67\x98\x67\xa7\x67\x75\x67\xa8\x67\x9e\x67\xad\x67\x8b\x67\x77\x67\x7c\x67\xf0\x68\x09\x67\xd8\x68\x0a\x67\xe9\x67\xb0\x68\x0c\x67\xd9\x67\xb5\x67\xda\x67\xb3\x67\xdd\x68\x00\x67\xc3\x67\xb8\x67\xe2\x68\x0e\x67\xc1\x67\xfd\x68\x32\x68\x33\x68\x60\x68\x61\x68\x4e\x68\x62\x68\x44\x68\x64\x68\x83\x68\x1d\x68\x55\x68\x66\x68\x41\x68\x67\x68\x40\x68\x3e\x68\x4a\x68\x49\x68\x29\x68\xb5\x68\x8f\x68\x74\x68\x77\x68\x93\x68\x6b\x68\xc2\x69\x6e\x68\xfc\x69\x1f\x69\x20\x68\xf9\x00\x00\x00\x00", /* 6500 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x69\x24\x68\xf0\x69\x0b\x69\x01\x69\x57\x68\xe3\x69\x10\x69\x71\x69\x39\x69\x60\x69\x42\x69\x5d\x69\x84\x69\x6b\x69\x80\x69\x98\x69\x78\x69\x34\x69\xcc\x69\x87\x69\x88\x69\xce\x69\x89\x69\x66\x69\x63\x69\x79\x69\x9b\x69\xa7\x69\xbb\x69\xab\x69\xad\x69\xd4\x69\xb1\x69\xc1\x69\xca\x69\xdf\x69\x95\x69\xe0\x69\x8d\x69\xff\x6a\x2f\x69\xed\x6a\x17\x6a\x18\x6a\x65\x69\xf2\x6a\x44\x6a\x3e\x6a\xa0\x6a\x50\x6a\x5b\x6a\x35\x6a\x8e\x6a\x79\x6a\x3d\x6a\x28\x6a\x58\x6a\x7c\x6a\x91\x6a\x90\x6a\xa9\x6a\x97\x6a\xab", /* 6580 */ "\x00\x00\x73\x37\x73\x52\x6b\x81\x6b\x82\x6b\x87\x6b\x84\x6b\x92\x6b\x93\x6b\x8d\x6b\x9a\x6b\x9b\x6b\xa1\x6b\xaa\x8f\x6b\x8f\x6d\x8f\x71\x8f\x72\x8f\x73\x8f\x75\x8f\x76\x8f\x78\x8f\x77\x8f\x79\x8f\x7a\x8f\x7c\x8f\x7e\x8f\x81\x8f\x82\x8f\x84\x8f\x87\x8f\x8b\x8f\x8d\x8f\x8e\x8f\x8f\x8f\x98\x8f\x9a\x8e\xce\x62\x0b\x62\x17\x62\x1b\x62\x1f\x62\x22\x62\x21\x62\x25\x62\x24\x62\x2c\x81\xe7\x74\xef\x74\xf4\x74\xff\x75\x0f\x75\x11\x75\x13\x65\x34\x65\xee\x65\xef\x65\xf0\x66\x0a\x66\x19\x67\x72\x66\x03\x66\x15\x66\x00\x70\x85\x66\xf7\x66\x1d\x66\x34\x66\x31\x66\x36\x66\x35\x80\x06\x66\x5f\x66\x54\x66\x41\x66\x4f\x66\x56\x66\x61\x66\x57\x66\x77\x66\x84\x66\x8c\x66\xa7\x66\x9d\x66\xbe\x66\xdb\x66\xdc\x66\xe6\x66\xe9\x8d\x32\x8d\x33\x8d\x36\x8d\x3b\x8d\x3d\x8d\x40\x8d\x45\x8d\x46\x8d\x48\x8d\x49\x8d\x47\x8d\x4d\x8d\x55\x8d\x59\x89\xc7\x89\xca\x89\xcb\x89\xcc\x89\xce\x89\xcf\x89\xd0\x89\xd1\x72\x6e\x72\x9f\x72\x5d\x72\x66\x72\x6f\x72\x7e\x72\x7f\x72\x84\x72\x8b\x72\x8d\x72\x8f\x72\x92\x63\x08\x63\x32\x63\xb0\x00\x00\x00\x00", /* 6600 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x64\x3f\x64\xd8\x80\x04\x6b\xea\x6b\xf3\x6b\xfd\x6b\xf5\x6b\xf9\x6c\x05\x6c\x07\x6c\x06\x6c\x0d\x6c\x15\x6c\x18\x6c\x19\x6c\x1a\x6c\x21\x6c\x29\x6c\x24\x6c\x2a\x6c\x32\x65\x35\x65\x55\x65\x6b\x72\x4d\x72\x52\x72\x56\x72\x30\x86\x62\x52\x16\x80\x9f\x80\x9c\x80\x93\x80\xbc\x67\x0a\x80\xbd\x80\xb1\x80\xab\x80\xad\x80\xb4\x80\xb7\x80\xe7\x80\xe8\x80\xe9\x80\xea\x80\xdb\x80\xc2\x80\xc4\x80\xd9\x80\xcd\x80\xd7\x67\x10\x80\xdd\x80\xeb\x80\xf1\x80\xf4\x80\xed\x81\x0d\x81\x0e\x80\xf2\x80\xfc\x67\x15\x81\x12", /* 6680 */ "\x00\x00\x8c\x5a\x81\x36\x81\x1e\x81\x2c\x81\x18\x81\x32\x81\x48\x81\x4c\x81\x53\x81\x74\x81\x59\x81\x5a\x81\x71\x81\x60\x81\x69\x81\x7c\x81\x7d\x81\x6d\x81\x67\x58\x4d\x5a\xb5\x81\x88\x81\x82\x81\x91\x6e\xd5\x81\xa3\x81\xaa\x81\xcc\x67\x26\x81\xca\x81\xbb\x81\xc1\x81\xa6\x6b\x24\x6b\x37\x6b\x39\x6b\x43\x6b\x46\x6b\x59\x98\xd1\x98\xd2\x98\xd3\x98\xd5\x98\xd9\x98\xda\x6b\xb3\x5f\x40\x6b\xc2\x89\xf3\x65\x90\x9f\x51\x65\x93\x65\xbc\x65\xc6\x65\xc4\x65\xc3\x65\xcc\x65\xce\x65\xd2\x65\xd6\x70\x80\x70\x9c\x70\x96\x70\x9d\x70\xbb\x70\xc0\x70\xb7\x70\xab\x70\xb1\x70\xe8\x70\xca\x71\x10\x71\x13\x71\x16\x71\x2f\x71\x31\x71\x73\x71\x5c\x71\x68\x71\x45\x71\x72\x71\x4a\x71\x78\x71\x7a\x71\x98\x71\xb3\x71\xb5\x71\xa8\x71\xa0\x71\xe0\x71\xd4\x71\xe7\x71\xf9\x72\x1d\x72\x28\x70\x6c\x71\x18\x71\x66\x71\xb9\x62\x3e\x62\x3d\x62\x43\x62\x48\x62\x49\x79\x3b\x79\x40\x79\x46\x79\x49\x79\x5b\x79\x5c\x79\x53\x79\x5a\x79\x62\x79\x57\x79\x60\x79\x6f\x79\x67\x79\x7a\x79\x85\x79\x8a\x79\x9a\x79\xa7\x79\xb3\x5f\xd1\x5f\xd0\x00\x00\x00\x00", /* 6700 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x60\x3c\x60\x5d\x60\x5a\x60\x67\x60\x41\x60\x59\x60\x63\x60\xab\x61\x06\x61\x0d\x61\x5d\x61\xa9\x61\x9d\x61\xcb\x61\xd1\x62\x06\x80\x80\x80\x7f\x6c\x93\x6c\xf6\x6d\xfc\x77\xf6\x77\xf8\x78\x00\x78\x09\x78\x17\x78\x18\x78\x11\x65\xab\x78\x2d\x78\x1c\x78\x1d\x78\x39\x78\x3a\x78\x3b\x78\x1f\x78\x3c\x78\x25\x78\x2c\x78\x23\x78\x29\x78\x4e\x78\x6d\x78\x56\x78\x57\x78\x26\x78\x50\x78\x47\x78\x4c\x78\x6a\x78\x9b\x78\x93\x78\x9a\x78\x87\x78\x9c\x78\xa1\x78\xa3\x78\xb2\x78\xb9\x78\xa5\x78\xd4\x78\xd9\x78\xc9", /* 6780 */ "\x00\x00\x78\xec\x78\xf2\x79\x05\x78\xf4\x79\x13\x79\x24\x79\x1e\x79\x34\x9f\x9b\x9e\xf9\x9e\xfb\x9e\xfc\x76\xf1\x77\x04\x77\x0d\x76\xf9\x77\x07\x77\x08\x77\x1a\x77\x22\x77\x19\x77\x2d\x77\x26\x77\x35\x77\x38\x77\x50\x77\x51\x77\x47\x77\x43\x77\x5a\x77\x68\x77\x62\x77\x65\x77\x7f\x77\x8d\x77\x7d\x77\x80\x77\x8c\x77\x91\x77\x9f\x77\xa0\x77\xb0\x77\xb5\x77\xbd\x75\x3a\x75\x40\x75\x4e\x75\x4b\x75\x48\x75\x5b\x75\x72\x75\x79\x75\x83\x7f\x58\x7f\x61\x7f\x5f\x8a\x48\x7f\x68\x7f\x74\x7f\x71\x7f\x79\x7f\x81\x7f\x7e\x76\xcd\x76\xe5\x88\x32\x94\x85\x94\x86\x94\x87\x94\x8b\x94\x8a\x94\x8c\x94\x8d\x94\x8f\x94\x90\x94\x94\x94\x97\x94\x95\x94\x9a\x94\x9b\x94\x9c\x94\xa3\x94\xa4\x94\xab\x94\xaa\x94\xad\x94\xac\x94\xaf\x94\xb0\x94\xb2\x94\xb4\x94\xb6\x94\xb7\x94\xb8\x94\xb9\x94\xba\x94\xbc\x94\xbd\x94\xbf\x94\xc4\x94\xc8\x94\xc9\x94\xca\x94\xcb\x94\xcc\x94\xcd\x94\xce\x94\xd0\x94\xd1\x94\xd2\x94\xd5\x94\xd6\x94\xd7\x94\xd9\x94\xd8\x94\xdb\x94\xde\x94\xdf\x94\xe0\x94\xe2\x94\xe4\x94\xe5\x94\xe7\x94\xe8\x94\xea\x00\x00\x00\x00", /* 6800 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x94\xe9\x94\xeb\x94\xee\x94\xef\x94\xf3\x94\xf4\x94\xf5\x94\xf7\x94\xf9\x94\xfc\x94\xfd\x94\xff\x95\x03\x95\x02\x95\x06\x95\x07\x95\x09\x95\x0a\x95\x0d\x95\x0e\x95\x0f\x95\x12\x95\x13\x95\x14\x95\x15\x95\x16\x95\x18\x95\x1b\x95\x1d\x95\x1e\x95\x1f\x95\x22\x95\x2a\x95\x2b\x95\x29\x95\x2c\x95\x31\x95\x32\x95\x34\x95\x36\x95\x37\x95\x38\x95\x3c\x95\x3e\x95\x3f\x95\x42\x95\x35\x95\x44\x95\x45\x95\x46\x95\x49\x95\x4c\x95\x4e\x95\x4f\x95\x52\x95\x53\x95\x54\x95\x56\x95\x57\x95\x58\x95\x59\x95\x5b\x95\x5e", /* 6880 */ "\x00\x00\x95\x5f\x95\x5d\x95\x61\x95\x62\x95\x64\x95\x65\x95\x66\x95\x67\x95\x68\x95\x69\x95\x6a\x95\x6b\x95\x6c\x95\x6f\x95\x71\x95\x72\x95\x73\x95\x3a\x77\xe7\x77\xec\x96\xc9\x79\xd5\x79\xed\x79\xe3\x79\xeb\x7a\x06\x5d\x47\x7a\x03\x7a\x02\x7a\x1e\x7a\x14\x7a\x39\x7a\x37\x7a\x51\x9e\xcf\x99\xa5\x7a\x70\x76\x88\x76\x8e\x76\x93\x76\x99\x76\xa4\x74\xde\x74\xe0\x75\x2c\x9e\x20\x9e\x22\x9e\x28\x9e\x29\x9e\x2a\x9e\x2b\x9e\x2c\x9e\x32\x9e\x31\x9e\x36\x9e\x38\x9e\x37\x9e\x39\x9e\x3a\x9e\x3e\x9e\x41\x9e\x42\x9e\x44\x9e\x46\x9e\x47\x9e\x48\x9e\x49\x9e\x4b\x9e\x4c\x9e\x4e\x9e\x51\x9e\x55\x9e\x57\x9e\x5a\x9e\x5b\x9e\x5c\x9e\x5e\x9e\x63\x9e\x66\x9e\x67\x9e\x68\x9e\x69\x9e\x6a\x9e\x6b\x9e\x6c\x9e\x71\x9e\x6d\x9e\x73\x75\x92\x75\x94\x75\x96\x75\xa0\x75\x9d\x75\xac\x75\xa3\x75\xb3\x75\xb4\x75\xb8\x75\xc4\x75\xb1\x75\xb0\x75\xc3\x75\xc2\x75\xd6\x75\xcd\x75\xe3\x75\xe8\x75\xe6\x75\xe4\x75\xeb\x75\xe7\x76\x03\x75\xf1\x75\xfc\x75\xff\x76\x10\x76\x00\x76\x05\x76\x0c\x76\x17\x76\x0a\x76\x25\x76\x18\x76\x15\x76\x19\x00\x00\x00\x00", /* 6900 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x76\x1b\x76\x3c\x76\x22\x76\x20\x76\x40\x76\x2d\x76\x30\x76\x3f\x76\x35\x76\x43\x76\x3e\x76\x33\x76\x4d\x76\x5e\x76\x54\x76\x5c\x76\x56\x76\x6b\x76\x6f\x7f\xca\x7a\xe6\x7a\x78\x7a\x79\x7a\x80\x7a\x86\x7a\x88\x7a\x95\x7a\xa6\x7a\xa0\x7a\xac\x7a\xa8\x7a\xad\x7a\xb3\x88\x64\x88\x69\x88\x72\x88\x7d\x88\x7f\x88\x82\x88\xa2\x88\xc6\x88\xb7\x88\xbc\x88\xc9\x88\xe2\x88\xce\x88\xe3\x88\xe5\x88\xf1\x89\x1a\x88\xfc\x88\xe8\x88\xfe\x88\xf0\x89\x21\x89\x19\x89\x13\x89\x1b\x89\x0a\x89\x34\x89\x2b\x89\x36\x89\x41", /* 6980 */ "\x00\x00\x89\x66\x89\x7b\x75\x8b\x80\xe5\x76\xb2\x76\xb4\x77\xdc\x80\x12\x80\x14\x80\x16\x80\x1c\x80\x20\x80\x22\x80\x25\x80\x26\x80\x27\x80\x29\x80\x28\x80\x31\x80\x0b\x80\x35\x80\x43\x80\x46\x80\x4d\x80\x52\x80\x69\x80\x71\x89\x83\x98\x78\x98\x80\x98\x83\x98\x89\x98\x8c\x98\x8d\x98\x8f\x98\x94\x98\x9a\x98\x9b\x98\x9e\x98\x9f\x98\xa1\x98\xa2\x98\xa5\x98\xa6\x86\x4d\x86\x54\x86\x6c\x86\x6e\x86\x7f\x86\x7a\x86\x7c\x86\x7b\x86\xa8\x86\x8d\x86\x8b\x86\xac\x86\x9d\x86\xa7\x86\xa3\x86\xaa\x86\x93\x86\xa9\x86\xb6\x86\xc4\x86\xb5\x86\xce\x86\xb0\x86\xba\x86\xb1\x86\xaf\x86\xc9\x86\xcf\x86\xb4\x86\xe9\x86\xf1\x86\xf2\x86\xed\x86\xf3\x86\xd0\x87\x13\x86\xde\x86\xf4\x86\xdf\x86\xd8\x86\xd1\x87\x03\x87\x07\x86\xf8\x87\x08\x87\x0a\x87\x0d\x87\x09\x87\x23\x87\x3b\x87\x1e\x87\x25\x87\x2e\x87\x1a\x87\x3e\x87\x48\x87\x34\x87\x31\x87\x29\x87\x37\x87\x3f\x87\x82\x87\x22\x87\x7d\x87\x7e\x87\x7b\x87\x60\x87\x70\x87\x4c\x87\x6e\x87\x8b\x87\x53\x87\x63\x87\x7c\x87\x64\x87\x59\x87\x65\x87\x93\x87\xaf\x87\xa8\x87\xd2\x00\x00\x00\x00", /* 6a00 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x87\xc6\x87\x88\x87\x85\x87\xad\x87\x97\x87\x83\x87\xab\x87\xe5\x87\xac\x87\xb5\x87\xb3\x87\xcb\x87\xd3\x87\xbd\x87\xd1\x87\xc0\x87\xca\x87\xdb\x87\xea\x87\xe0\x87\xee\x88\x16\x88\x13\x87\xfe\x88\x0a\x88\x1b\x88\x21\x88\x39\x88\x3c\x7f\x36\x7f\x42\x7f\x44\x7f\x45\x82\x10\x7a\xfa\x7a\xfd\x7b\x08\x7b\x03\x7b\x04\x7b\x15\x7b\x0a\x7b\x2b\x7b\x0f\x7b\x47\x7b\x38\x7b\x2a\x7b\x19\x7b\x2e\x7b\x31\x7b\x20\x7b\x25\x7b\x24\x7b\x33\x7b\x3e\x7b\x1e\x7b\x58\x7b\x5a\x7b\x45\x7b\x75\x7b\x4c\x7b\x5d\x7b\x60\x7b\x6e", /* 6a80 */ "\x00\x00\x7b\x7b\x7b\x62\x7b\x72\x7b\x71\x7b\x90\x7b\xa6\x7b\xa7\x7b\xb8\x7b\xac\x7b\x9d\x7b\xa8\x7b\x85\x7b\xaa\x7b\x9c\x7b\xa2\x7b\xab\x7b\xb4\x7b\xd1\x7b\xc1\x7b\xcc\x7b\xdd\x7b\xda\x7b\xe5\x7b\xe6\x7b\xea\x7c\x0c\x7b\xfe\x7b\xfc\x7c\x0f\x7c\x16\x7c\x0b\x7c\x1f\x7c\x2a\x7c\x26\x7c\x38\x7c\x41\x7c\x40\x81\xfe\x82\x01\x82\x02\x82\x04\x81\xec\x88\x44\x82\x21\x82\x22\x82\x23\x82\x2d\x82\x2f\x82\x28\x82\x2b\x82\x38\x82\x3b\x82\x33\x82\x34\x82\x3e\x82\x44\x82\x49\x82\x4b\x82\x4f\x82\x5a\x82\x5f\x82\x68\x88\x7e\x88\x85\x88\x88\x88\xd8\x88\xdf\x89\x5e\x7f\x9d\x7f\x9f\x7f\xa7\x7f\xaf\x7f\xb0\x7f\xb2\x7c\x7c\x65\x49\x7c\x91\x7c\x9d\x7c\x9c\x7c\x9e\x7c\xa2\x7c\xb2\x7c\xbc\x7c\xbd\x7c\xc1\x7c\xc7\x7c\xcc\x7c\xcd\x7c\xc8\x7c\xc5\x7c\xd7\x7c\xe8\x82\x6e\x66\xa8\x7f\xbf\x7f\xce\x7f\xd5\x7f\xe5\x7f\xe1\x7f\xe6\x7f\xe9\x7f\xee\x7f\xf3\x7c\xf8\x7d\x77\x7d\xa6\x7d\xae\x7e\x47\x7e\x9b\x9e\xb8\x9e\xb4\x8d\x73\x8d\x84\x8d\x94\x8d\x91\x8d\xb1\x8d\x67\x8d\x6d\x8c\x47\x8c\x49\x91\x4a\x91\x50\x91\x4e\x91\x4f\x91\x64\x00\x00\x00\x00", /* 6b00 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x91\x62\x91\x61\x91\x70\x91\x69\x91\x6f\x91\x7d\x91\x7e\x91\x72\x91\x74\x91\x79\x91\x8c\x91\x85\x91\x90\x91\x8d\x91\x91\x91\xa2\x91\xa3\x91\xaa\x91\xad\x91\xae\x91\xaf\x91\xb5\x91\xb4\x91\xba\x8c\x55\x9e\x7e\x8d\xb8\x8d\xeb\x8e\x05\x8e\x59\x8e\x69\x8d\xb5\x8d\xbf\x8d\xbc\x8d\xba\x8d\xc4\x8d\xd6\x8d\xd7\x8d\xda\x8d\xde\x8d\xce\x8d\xcf\x8d\xdb\x8d\xc6\x8d\xec\x8d\xf7\x8d\xf8\x8d\xe3\x8d\xf9\x8d\xfb\x8d\xe4\x8e\x09\x8d\xfd\x8e\x14\x8e\x1d\x8e\x1f\x8e\x2c\x8e\x2e\x8e\x23\x8e\x2f\x8e\x3a\x8e\x40\x8e\x39", /* 6b80 */ "\x00\x00\x8e\x35\x8e\x3d\x8e\x31\x8e\x49\x8e\x41\x8e\x42\x8e\x51\x8e\x52\x8e\x4a\x8e\x70\x8e\x76\x8e\x7c\x8e\x6f\x8e\x74\x8e\x85\x8e\x8f\x8e\x94\x8e\x90\x8e\x9c\x8e\x9e\x8c\x78\x8c\x82\x8c\x8a\x8c\x85\x8c\x98\x8c\x94\x65\x9b\x89\xd6\x89\xde\x89\xda\x89\xdc\x89\xe5\x89\xeb\x89\xef\x8a\x3e\x8b\x26\x97\x53\x96\xe9\x96\xf3\x96\xef\x97\x06\x97\x01\x97\x08\x97\x0f\x97\x0e\x97\x2a\x97\x2d\x97\x30\x97\x3e\x9f\x80\x9f\x83\x9f\x85\x9f\x86\x9f\x87\x9f\x88\x9f\x89\x9f\x8a\x9f\x8c\x9e\xfe\x9f\x0b\x9f\x0d\x96\xb9\x96\xbc\x96\xbd\x96\xce\x96\xd2\x77\xbf\x96\xe0\x92\x8e\x92\xae\x92\xc8\x93\x3e\x93\x6a\x93\xca\x93\x8f\x94\x3e\x94\x6b\x9c\x7f\x9c\x82\x9c\x85\x9c\x86\x9c\x87\x9c\x88\x7a\x23\x9c\x8b\x9c\x8e\x9c\x90\x9c\x91\x9c\x92\x9c\x94\x9c\x95\x9c\x9a\x9c\x9b\x9c\x9e\x9c\x9f\x9c\xa0\x9c\xa1\x9c\xa2\x9c\xa3\x9c\xa5\x9c\xa6\x9c\xa7\x9c\xa8\x9c\xa9\x9c\xab\x9c\xad\x9c\xae\x9c\xb0\x9c\xb1\x9c\xb2\x9c\xb3\x9c\xb4\x9c\xb5\x9c\xb6\x9c\xb7\x9c\xba\x9c\xbb\x9c\xbc\x9c\xbd\x9c\xc4\x9c\xc5\x9c\xc6\x9c\xc7\x9c\xca\x9c\xcb\x00\x00\x00\x00", /* 6c00 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x9c\xcc\x9c\xcd\x9c\xce\x9c\xcf\x9c\xd0\x9c\xd3\x9c\xd4\x9c\xd5\x9c\xd7\x9c\xd8\x9c\xd9\x9c\xdc\x9c\xdd\x9c\xdf\x9c\xe2\x97\x7c\x97\x85\x97\x91\x97\x92\x97\x94\x97\xaf\x97\xab\x97\xa3\x97\xb2\x97\xb4\x9a\xb1\x9a\xb0\x9a\xb7\x9e\x58\x9a\xb6\x9a\xba\x9a\xbc\x9a\xc1\x9a\xc0\x9a\xc5\x9a\xc2\x9a\xcb\x9a\xcc\x9a\xd1\x9b\x45\x9b\x43\x9b\x47\x9b\x49\x9b\x48\x9b\x4d\x9b\x51\x98\xe8\x99\x0d\x99\x2e\x99\x55\x99\x54\x9a\xdf\x9a\xe1\x9a\xe6\x9a\xef\x9a\xeb\x9a\xfb\x9a\xed\x9a\xf9\x9b\x08\x9b\x0f\x9b\x13\x9b\x1f", /* 6c80 */ "\x00\x00\x9b\x23\x9e\xbd\x9e\xbe\x7e\x3b\x9e\x82\x9e\x87\x9e\x88\x9e\x8b\x9e\x92\x93\xd6\x9e\x9d\x9e\x9f\x9e\xdb\x9e\xdc\x9e\xdd\x9e\xe0\x9e\xdf\x9e\xe2\x9e\xe9\x9e\xe7\x9e\xe5\x9e\xea\x9e\xef\x9f\x22\x9f\x2c\x9f\x2f\x9f\x39\x9f\x37\x9f\x3d\x9f\x3e\x9f\x44\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 6d00 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0f\x00\x0f\x01\x0f\x02\x0f\x03\x0f\x04\x0f\x05\x0f\x06\x0f\x07\x0f\x08\x0f\x09\x0f\x0a\x0f\x0b\x0f\x0c\x0f\x0d\x0f\x0e\x0f\x0f\x0f\x10\x0f\x11\x0f\x12\x0f\x13\x0f\x14\x0f\x15\x0f\x16\x0f\x17\x0f\x18\x0f\x19\x0f\x1a\x0f\x1b\x0f\x1c\x0f\x1d\x0f\x1e\x0f\x1f\x0f\x20\x0f\x21\x0f\x22\x0f\x23\x0f\x24\x0f\x25\x0f\x26\x0f\x27\x0f\x28\x0f\x29\x0f\x2a\x0f\x2b\x0f\x2c\x0f\x2d\x0f\x2e\x0f\x2f\x0f\x30\x0f\x31\x0f\x32\x0f\x33\x0f\x34\x0f\x35\x0f\x36\x0f\x37\x0f\x38\x0f\x39\x0f\x3a\x0f\x3b\x0f\x3c\x0f\x3d\x0f\x3e", /* 6d80 */ "\x0f\x3f\x0f\x40\x0f\x41\x0f\x42\x0f\x43\x0f\x44\x0f\x45\x0f\x46\x0f\x47\x0f\x48\x0f\x49\x0f\x4a\x0f\x4b\x0f\x4c\x0f\x4d\x0f\x4e\x0f\x4f\x0f\x50\x0f\x51\x0f\x52\x0f\x53\x0f\x54\x0f\x55\x0f\x56\x0f\x57\x0f\x58\x0f\x59\x0f\x5a\x0f\x5b\x0f\x5c\x0f\x5d\x0f\x5e\x0f\x5f\x0f\x60\x0f\x61\x0f\x62\x0f\x63\x0f\x64\x0f\x65\x0f\x66\x0f\x67\x0f\x68\x0f\x69\x0f\x6a\x0f\x6b\x0f\x6c\x0f\x6d\x0f\x6e\x0f\x6f\x0f\x70\x0f\x71\x0f\x72\x0f\x73\x0f\x74\x0f\x75\x0f\x76\x0f\x77\x0f\x78\x0f\x79\x0f\x7a\x0f\x7b\x0f\x7c\x0f\x7d\x0f\x7e\x0f\x7f\x0f\x80\x0f\x81\x0f\x82\x0f\x83\x0f\x84\x0f\x85\x0f\x86\x0f\x87\x0f\x88\x0f\x89\x0f\x8a\x0f\x8b\x0f\x8c\x0f\x8d\x0f\x8e\x0f\x8f\x0f\x90\x0f\x91\x0f\x92\x0f\x93\x0f\x94\x0f\x95\x0f\x96\x0f\x97\x0f\x98\x0f\x99\x0f\x9a\x0f\x9b\x0f\x9c\x0f\x9d\x0f\x9e\x0f\x9f\x0f\xa0\x0f\xa1\x0f\xa2\x0f\xa3\x0f\xa4\x0f\xa5\x0f\xa6\x0f\xa7\x0f\xa8\x0f\xa9\x0f\xaa\x0f\xab\x0f\xac\x0f\xad\x0f\xae\x0f\xaf\x0f\xb0\x0f\xb1\x0f\xb2\x0f\xb3\x0f\xb4\x0f\xb5\x0f\xb6\x0f\xb7\x0f\xb8\x0f\xb9\x0f\xba\x0f\xbb\x0f\xbc\x0f\xbd\x00\x00", /* 6e00 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0f\xbe\x0f\xbf\x0f\xc0\x0f\xc1\x0f\xc2\x0f\xc3\x0f\xc4\x0f\xc5\x0f\xc6\x0f\xc7\x0f\xc8\x0f\xc9\x0f\xca\x0f\xcb\x0f\xcc\x0f\xcd\x0f\xce\x0f\xcf\x0f\xd0\x0f\xd1\x0f\xd2\x0f\xd3\x0f\xd4\x0f\xd5\x0f\xd6\x0f\xd7\x0f\xd8\x0f\xd9\x0f\xda\x0f\xdb\x0f\xdc\x0f\xdd\x0f\xde\x0f\xdf\x0f\xe0\x0f\xe1\x0f\xe2\x0f\xe3\x0f\xe4\x0f\xe5\x0f\xe6\x0f\xe7\x0f\xe8\x0f\xe9\x0f\xea\x0f\xeb\x0f\xec\x0f\xed\x0f\xee\x0f\xef\x0f\xf0\x0f\xf1\x0f\xf2\x0f\xf3\x0f\xf4\x0f\xf5\x0f\xf6\x0f\xf7\x0f\xf8\x0f\xf9\x0f\xfa\x0f\xfb\x0f\xfc", /* 6e80 */ "\x0f\xfd\x0f\xfe\x0f\xff\x18\x00\x18\x01\x18\x02\x18\x03\x18\x04\x18\x05\x18\x06\x18\x07\x18\x08\x18\x09\x18\x0a\x18\x0b\x18\x0c\x18\x0d\x18\x0e\x18\x0f\x18\x10\x18\x11\x18\x12\x18\x13\x18\x14\x18\x15\x18\x16\x18\x17\x18\x18\x18\x19\x18\x1a\x18\x1b\x18\x1c\x18\x1d\x18\x1e\x18\x1f\x18\x20\x18\x21\x18\x22\x18\x23\x18\x24\x18\x25\x18\x26\x18\x27\x18\x28\x18\x29\x18\x2a\x18\x2b\x18\x2c\x18\x2d\x18\x2e\x18\x2f\x18\x30\x18\x31\x18\x32\x18\x33\x18\x34\x18\x35\x18\x36\x18\x37\x18\x38\x18\x39\x18\x3a\x18\x3b\x18\x3c\x18\x3d\x18\x3e\x18\x3f\x18\x40\x18\x41\x18\x42\x18\x43\x18\x44\x18\x45\x18\x46\x18\x47\x18\x48\x18\x49\x18\x4a\x18\x4b\x18\x4c\x18\x4d\x18\x4e\x18\x4f\x18\x50\x18\x51\x18\x52\x18\x53\x18\x54\x18\x55\x18\x56\x18\x57\x18\x58\x18\x59\x18\x5a\x18\x5b\x18\x5c\x18\x5d\x18\x5e\x18\x5f\x18\x60\x18\x61\x18\x62\x18\x63\x18\x64\x18\x65\x18\x66\x18\x67\x18\x68\x18\x69\x18\x6a\x18\x6b\x18\x6c\x18\x6d\x18\x6e\x18\x6f\x18\x70\x18\x71\x18\x72\x18\x73\x18\x74\x18\x75\x18\x76\x18\x77\x18\x78\x18\x79\x18\x7a\x18\x7b\x00\x00", /* 6f00 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x18\x7c\x18\x7d\x18\x7e\x18\x7f\x18\x80\x18\x81\x18\x82\x18\x83\x18\x84\x18\x85\x18\x86\x18\x87\x18\x88\x18\x89\x18\x8a\x18\x8b\x18\x8c\x18\x8d\x18\x8e\x18\x8f\x18\x90\x18\x91\x18\x92\x18\x93\x18\x94\x18\x95\x18\x96\x18\x97\x18\x98\x18\x99\x18\x9a\x18\x9b\x18\x9c\x18\x9d\x18\x9e\x18\x9f\x18\xa0\x18\xa1\x18\xa2\x18\xa3\x18\xa4\x18\xa5\x18\xa6\x18\xa7\x18\xa8\x18\xa9\x18\xaa\x18\xab\x18\xac\x18\xad\x18\xae\x18\xaf\xa0\x00\xa0\x01\xa0\x02\xa0\x03\xa0\x04\xa0\x05\xa0\x06\xa0\x07\xa0\x08\xa0\x09\xa0\x0a", /* 6f80 */ "\xa0\x0b\xa0\x0c\xa0\x0d\xa0\x0e\xa0\x0f\xa0\x10\xa0\x11\xa0\x12\xa0\x13\xa0\x14\xa0\x15\xa0\x16\xa0\x17\xa0\x18\xa0\x19\xa0\x1a\xa0\x1b\xa0\x1c\xa0\x1d\xa0\x1e\xa0\x1f\xa0\x20\xa0\x21\xa0\x22\xa0\x23\xa0\x24\xa0\x25\xa0\x26\xa0\x27\xa0\x28\xa0\x29\xa0\x2a\xa0\x2b\xa0\x2c\xa0\x2d\xa0\x2e\xa0\x2f\xa0\x30\xa0\x31\xa0\x32\xa0\x33\xa0\x34\xa0\x35\xa0\x36\xa0\x37\xa0\x38\xa0\x39\xa0\x3a\xa0\x3b\xa0\x3c\xa0\x3d\xa0\x3e\xa0\x3f\xa0\x40\xa0\x41\xa0\x42\xa0\x43\xa0\x44\xa0\x45\xa0\x46\xa0\x47\xa0\x48\xa0\x49\xa0\x4a\xa0\x4b\xa0\x4c\xa0\x4d\xa0\x4e\xa0\x4f\xa0\x50\xa0\x51\xa0\x52\xa0\x53\xa0\x54\xa0\x55\xa0\x56\xa0\x57\xa0\x58\xa0\x59\xa0\x5a\xa0\x5b\xa0\x5c\xa0\x5d\xa0\x5e\xa0\x5f\xa0\x60\xa0\x61\xa0\x62\xa0\x63\xa0\x64\xa0\x65\xa0\x66\xa0\x67\xa0\x68\xa0\x69\xa0\x6a\xa0\x6b\xa0\x6c\xa0\x6d\xa0\x6e\xa0\x6f\xa0\x70\xa0\x71\xa0\x72\xa0\x73\xa0\x74\xa0\x75\xa0\x76\xa0\x77\xa0\x78\xa0\x79\xa0\x7a\xa0\x7b\xa0\x7c\xa0\x7d\xa0\x7e\xa0\x7f\xa0\x80\xa0\x81\xa0\x82\xa0\x83\xa0\x84\xa0\x85\xa0\x86\xa0\x87\xa0\x88\xa0\x89\x00\x00", /* 7000 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa0\x8a\xa0\x8b\xa0\x8c\xa0\x8d\xa0\x8e\xa0\x8f\xa0\x90\xa0\x91\xa0\x92\xa0\x93\xa0\x94\xa0\x95\xa0\x96\xa0\x97\xa0\x98\xa0\x99\xa0\x9a\xa0\x9b\xa0\x9c\xa0\x9d\xa0\x9e\xa0\x9f\xa0\xa0\xa0\xa1\xa0\xa2\xa0\xa3\xa0\xa4\xa0\xa5\xa0\xa6\xa0\xa7\xa0\xa8\xa0\xa9\xa0\xaa\xa0\xab\xa0\xac\xa0\xad\xa0\xae\xa0\xaf\xa0\xb0\xa0\xb1\xa0\xb2\xa0\xb3\xa0\xb4\xa0\xb5\xa0\xb6\xa0\xb7\xa0\xb8\xa0\xb9\xa0\xba\xa0\xbb\xa0\xbc\xa0\xbd\xa0\xbe\xa0\xbf\xa0\xc0\xa0\xc1\xa0\xc2\xa0\xc3\xa0\xc4\xa0\xc5\xa0\xc6\xa0\xc7\xa0\xc8", /* 7080 */ "\xa0\xc9\xa0\xca\xa0\xcb\xa0\xcc\xa0\xcd\xa0\xce\xa0\xcf\xa0\xd0\xa0\xd1\xa0\xd2\xa0\xd3\xa0\xd4\xa0\xd5\xa0\xd6\xa0\xd7\xa0\xd8\xa0\xd9\xa0\xda\xa0\xdb\xa0\xdc\xa0\xdd\xa0\xde\xa0\xdf\xa0\xe0\xa0\xe1\xa0\xe2\xa0\xe3\xa0\xe4\xa0\xe5\xa0\xe6\xa0\xe7\xa0\xe8\xa0\xe9\xa0\xea\xa0\xeb\xa0\xec\xa0\xed\xa0\xee\xa0\xef\xa0\xf0\xa0\xf1\xa0\xf2\xa0\xf3\xa0\xf4\xa0\xf5\xa0\xf6\xa0\xf7\xa0\xf8\xa0\xf9\xa0\xfa\xa0\xfb\xa0\xfc\xa0\xfd\xa0\xfe\xa0\xff\xa1\x00\xa1\x01\xa1\x02\xa1\x03\xa1\x04\xa1\x05\xa1\x06\xa1\x07\xa1\x08\xa1\x09\xa1\x0a\xa1\x0b\xa1\x0c\xa1\x0d\xa1\x0e\xa1\x0f\xa1\x10\xa1\x11\xa1\x12\xa1\x13\xa1\x14\xa1\x15\xa1\x16\xa1\x17\xa1\x18\xa1\x19\xa1\x1a\xa1\x1b\xa1\x1c\xa1\x1d\xa1\x1e\xa1\x1f\xa1\x20\xa1\x21\xa1\x22\xa1\x23\xa1\x24\xa1\x25\xa1\x26\xa1\x27\xa1\x28\xa1\x29\xa1\x2a\xa1\x2b\xa1\x2c\xa1\x2d\xa1\x2e\xa1\x2f\xa1\x30\xa1\x31\xa1\x32\xa1\x33\xa1\x34\xa1\x35\xa1\x36\xa1\x37\xa1\x38\xa1\x39\xa1\x3a\xa1\x3b\xa1\x3c\xa1\x3d\xa1\x3e\xa1\x3f\xa1\x40\xa1\x41\xa1\x42\xa1\x43\xa1\x44\xa1\x45\xa1\x46\xa1\x47\x00\x00", /* 7100 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa1\x48\xa1\x49\xa1\x4a\xa1\x4b\xa1\x4c\xa1\x4d\xa1\x4e\xa1\x4f\xa1\x50\xa1\x51\xa1\x52\xa1\x53\xa1\x54\xa1\x55\xa1\x56\xa1\x57\xa1\x58\xa1\x59\xa1\x5a\xa1\x5b\xa1\x5c\xa1\x5d\xa1\x5e\xa1\x5f\xa1\x60\xa1\x61\xa1\x62\xa1\x63\xa1\x64\xa1\x65\xa1\x66\xa1\x67\xa1\x68\xa1\x69\xa1\x6a\xa1\x6b\xa1\x6c\xa1\x6d\xa1\x6e\xa1\x6f\xa1\x70\xa1\x71\xa1\x72\xa1\x73\xa1\x74\xa1\x75\xa1\x76\xa1\x77\xa1\x78\xa1\x79\xa1\x7a\xa1\x7b\xa1\x7c\xa1\x7d\xa1\x7e\xa1\x7f\xa1\x80\xa1\x81\xa1\x82\xa1\x83\xa1\x84\xa1\x85\xa1\x86", /* 7180 */ "\xa1\x87\xa1\x88\xa1\x89\xa1\x8a\xa1\x8b\xa1\x8c\xa1\x8d\xa1\x8e\xa1\x8f\xa1\x90\xa1\x91\xa1\x92\xa1\x93\xa1\x94\xa1\x95\xa1\x96\xa1\x97\xa1\x98\xa1\x99\xa1\x9a\xa1\x9b\xa1\x9c\xa1\x9d\xa1\x9e\xa1\x9f\xa1\xa0\xa1\xa1\xa1\xa2\xa1\xa3\xa1\xa4\xa1\xa5\xa1\xa6\xa1\xa7\xa1\xa8\xa1\xa9\xa1\xaa\xa1\xab\xa1\xac\xa1\xad\xa1\xae\xa1\xaf\xa1\xb0\xa1\xb1\xa1\xb2\xa1\xb3\xa1\xb4\xa1\xb5\xa1\xb6\xa1\xb7\xa1\xb8\xa1\xb9\xa1\xba\xa1\xbb\xa1\xbc\xa1\xbd\xa1\xbe\xa1\xbf\xa1\xc0\xa1\xc1\xa1\xc2\xa1\xc3\xa1\xc4\xa1\xc5\xa1\xc6\xa1\xc7\xa1\xc8\xa1\xc9\xa1\xca\xa1\xcb\xa1\xcc\xa1\xcd\xa1\xce\xa1\xcf\xa1\xd0\xa1\xd1\xa1\xd2\xa1\xd3\xa1\xd4\xa1\xd5\xa1\xd6\xa1\xd7\xa1\xd8\xa1\xd9\xa1\xda\xa1\xdb\xa1\xdc\xa1\xdd\xa1\xde\xa1\xdf\xa1\xe0\xa1\xe1\xa1\xe2\xa1\xe3\xa1\xe4\xa1\xe5\xa1\xe6\xa1\xe7\xa1\xe8\xa1\xe9\xa1\xea\xa1\xeb\xa1\xec\xa1\xed\xa1\xee\xa1\xef\xa1\xf0\xa1\xf1\xa1\xf2\xa1\xf3\xa1\xf4\xa1\xf5\xa1\xf6\xa1\xf7\xa1\xf8\xa1\xf9\xa1\xfa\xa1\xfb\xa1\xfc\xa1\xfd\xa1\xfe\xa1\xff\xa2\x00\xa2\x01\xa2\x02\xa2\x03\xa2\x04\xa2\x05\x00\x00", /* 7200 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa2\x06\xa2\x07\xa2\x08\xa2\x09\xa2\x0a\xa2\x0b\xa2\x0c\xa2\x0d\xa2\x0e\xa2\x0f\xa2\x10\xa2\x11\xa2\x12\xa2\x13\xa2\x14\xa2\x15\xa2\x16\xa2\x17\xa2\x18\xa2\x19\xa2\x1a\xa2\x1b\xa2\x1c\xa2\x1d\xa2\x1e\xa2\x1f\xa2\x20\xa2\x21\xa2\x22\xa2\x23\xa2\x24\xa2\x25\xa2\x26\xa2\x27\xa2\x28\xa2\x29\xa2\x2a\xa2\x2b\xa2\x2c\xa2\x2d\xa2\x2e\xa2\x2f\xa2\x30\xa2\x31\xa2\x32\xa2\x33\xa2\x34\xa2\x35\xa2\x36\xa2\x37\xa2\x38\xa2\x39\xa2\x3a\xa2\x3b\xa2\x3c\xa2\x3d\xa2\x3e\xa2\x3f\xa2\x40\xa2\x41\xa2\x42\xa2\x43\xa2\x44", /* 7280 */ "\xa2\x45\xa2\x46\xa2\x47\xa2\x48\xa2\x49\xa2\x4a\xa2\x4b\xa2\x4c\xa2\x4d\xa2\x4e\xa2\x4f\xa2\x50\xa2\x51\xa2\x52\xa2\x53\xa2\x54\xa2\x55\xa2\x56\xa2\x57\xa2\x58\xa2\x59\xa2\x5a\xa2\x5b\xa2\x5c\xa2\x5d\xa2\x5e\xa2\x5f\xa2\x60\xa2\x61\xa2\x62\xa2\x63\xa2\x64\xa2\x65\xa2\x66\xa2\x67\xa2\x68\xa2\x69\xa2\x6a\xa2\x6b\xa2\x6c\xa2\x6d\xa2\x6e\xa2\x6f\xa2\x70\xa2\x71\xa2\x72\xa2\x73\xa2\x74\xa2\x75\xa2\x76\xa2\x77\xa2\x78\xa2\x79\xa2\x7a\xa2\x7b\xa2\x7c\xa2\x7d\xa2\x7e\xa2\x7f\xa2\x80\xa2\x81\xa2\x82\xa2\x83\xa2\x84\xa2\x85\xa2\x86\xa2\x87\xa2\x88\xa2\x89\xa2\x8a\xa2\x8b\xa2\x8c\xa2\x8d\xa2\x8e\xa2\x8f\xa2\x90\xa2\x91\xa2\x92\xa2\x93\xa2\x94\xa2\x95\xa2\x96\xa2\x97\xa2\x98\xa2\x99\xa2\x9a\xa2\x9b\xa2\x9c\xa2\x9d\xa2\x9e\xa2\x9f\xa2\xa0\xa2\xa1\xa2\xa2\xa2\xa3\xa2\xa4\xa2\xa5\xa2\xa6\xa2\xa7\xa2\xa8\xa2\xa9\xa2\xaa\xa2\xab\xa2\xac\xa2\xad\xa2\xae\xa2\xaf\xa2\xb0\xa2\xb1\xa2\xb2\xa2\xb3\xa2\xb4\xa2\xb5\xa2\xb6\xa2\xb7\xa2\xb8\xa2\xb9\xa2\xba\xa2\xbb\xa2\xbc\xa2\xbd\xa2\xbe\xa2\xbf\xa2\xc0\xa2\xc1\xa2\xc2\xa2\xc3\x00\x00", /* 7300 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa2\xc4\xa2\xc5\xa2\xc6\xa2\xc7\xa2\xc8\xa2\xc9\xa2\xca\xa2\xcb\xa2\xcc\xa2\xcd\xa2\xce\xa2\xcf\xa2\xd0\xa2\xd1\xa2\xd2\xa2\xd3\xa2\xd4\xa2\xd5\xa2\xd6\xa2\xd7\xa2\xd8\xa2\xd9\xa2\xda\xa2\xdb\xa2\xdc\xa2\xdd\xa2\xde\xa2\xdf\xa2\xe0\xa2\xe1\xa2\xe2\xa2\xe3\xa2\xe4\xa2\xe5\xa2\xe6\xa2\xe7\xa2\xe8\xa2\xe9\xa2\xea\xa2\xeb\xa2\xec\xa2\xed\xa2\xee\xa2\xef\xa2\xf0\xa2\xf1\xa2\xf2\xa2\xf3\xa2\xf4\xa2\xf5\xa2\xf6\xa2\xf7\xa2\xf8\xa2\xf9\xa2\xfa\xa2\xfb\xa2\xfc\xa2\xfd\xa2\xfe\xa2\xff\xa3\x00\xa3\x01\xa3\x02", /* 7380 */ "\xa3\x03\xa3\x04\xa3\x05\xa3\x06\xa3\x07\xa3\x08\xa3\x09\xa3\x0a\xa3\x0b\xa3\x0c\xa3\x0d\xa3\x0e\xa3\x0f\xa3\x10\xa3\x11\xa3\x12\xa3\x13\xa3\x14\xa3\x15\xa3\x16\xa3\x17\xa3\x18\xa3\x19\xa3\x1a\xa3\x1b\xa3\x1c\xa3\x1d\xa3\x1e\xa3\x1f\xa3\x20\xa3\x21\xa3\x22\xa3\x23\xa3\x24\xa3\x25\xa3\x26\xa3\x27\xa3\x28\xa3\x29\xa3\x2a\xa3\x2b\xa3\x2c\xa3\x2d\xa3\x2e\xa3\x2f\xa3\x30\xa3\x31\xa3\x32\xa3\x33\xa3\x34\xa3\x35\xa3\x36\xa3\x37\xa3\x38\xa3\x39\xa3\x3a\xa3\x3b\xa3\x3c\xa3\x3d\xa3\x3e\xa3\x3f\xa3\x40\xa3\x41\xa3\x42\xa3\x43\xa3\x44\xa3\x45\xa3\x46\xa3\x47\xa3\x48\xa3\x49\xa3\x4a\xa3\x4b\xa3\x4c\xa3\x4d\xa3\x4e\xa3\x4f\xa3\x50\xa3\x51\xa3\x52\xa3\x53\xa3\x54\xa3\x55\xa3\x56\xa3\x57\xa3\x58\xa3\x59\xa3\x5a\xa3\x5b\xa3\x5c\xa3\x5d\xa3\x5e\xa3\x5f\xa3\x60\xa3\x61\xa3\x62\xa3\x63\xa3\x64\xa3\x65\xa3\x66\xa3\x67\xa3\x68\xa3\x69\xa3\x6a\xa3\x6b\xa3\x6c\xa3\x6d\xa3\x6e\xa3\x6f\xa3\x70\xa3\x71\xa3\x72\xa3\x73\xa3\x74\xa3\x75\xa3\x76\xa3\x77\xa3\x78\xa3\x79\xa3\x7a\xa3\x7b\xa3\x7c\xa3\x7d\xa3\x7e\xa3\x7f\xa3\x80\xa3\x81\x00\x00", /* 7400 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa3\x82\xa3\x83\xa3\x84\xa3\x85\xa3\x86\xa3\x87\xa3\x88\xa3\x89\xa3\x8a\xa3\x8b\xa3\x8c\xa3\x8d\xa3\x8e\xa3\x8f\xa3\x90\xa3\x91\xa3\x92\xa3\x93\xa3\x94\xa3\x95\xa3\x96\xa3\x97\xa3\x98\xa3\x99\xa3\x9a\xa3\x9b\xa3\x9c\xa3\x9d\xa3\x9e\xa3\x9f\xa3\xa0\xa3\xa1\xa3\xa2\xa3\xa3\xa3\xa4\xa3\xa5\xa3\xa6\xa3\xa7\xa3\xa8\xa3\xa9\xa3\xaa\xa3\xab\xa3\xac\xa3\xad\xa3\xae\xa3\xaf\xa3\xb0\xa3\xb1\xa3\xb2\xa3\xb3\xa3\xb4\xa3\xb5\xa3\xb6\xa3\xb7\xa3\xb8\xa3\xb9\xa3\xba\xa3\xbb\xa3\xbc\xa3\xbd\xa3\xbe\xa3\xbf\xa3\xc0", /* 7480 */ "\xa3\xc1\xa3\xc2\xa3\xc3\xa3\xc4\xa3\xc5\xa3\xc6\xa3\xc7\xa3\xc8\xa3\xc9\xa3\xca\xa3\xcb\xa3\xcc\xa3\xcd\xa3\xce\xa3\xcf\xa3\xd0\xa3\xd1\xa3\xd2\xa3\xd3\xa3\xd4\xa3\xd5\xa3\xd6\xa3\xd7\xa3\xd8\xa3\xd9\xa3\xda\xa3\xdb\xa3\xdc\xa3\xdd\xa3\xde\xa3\xdf\xa3\xe0\xa3\xe1\xa3\xe2\xa3\xe3\xa3\xe4\xa3\xe5\xa3\xe6\xa3\xe7\xa3\xe8\xa3\xe9\xa3\xea\xa3\xeb\xa3\xec\xa3\xed\xa3\xee\xa3\xef\xa3\xf0\xa3\xf1\xa3\xf2\xa3\xf3\xa3\xf4\xa3\xf5\xa3\xf6\xa3\xf7\xa3\xf8\xa3\xf9\xa3\xfa\xa3\xfb\xa3\xfc\xa3\xfd\xa3\xfe\xa3\xff\xa4\x00\xa4\x01\xa4\x02\xa4\x03\xa4\x04\xa4\x05\xa4\x06\xa4\x07\xa4\x08\xa4\x09\xa4\x0a\xa4\x0b\xa4\x0c\xa4\x0d\xa4\x0e\xa4\x0f\xa4\x10\xa4\x11\xa4\x12\xa4\x13\xa4\x14\xa4\x15\xa4\x16\xa4\x17\xa4\x18\xa4\x19\xa4\x1a\xa4\x1b\xa4\x1c\xa4\x1d\xa4\x1e\xa4\x1f\xa4\x20\xa4\x21\xa4\x22\xa4\x23\xa4\x24\xa4\x25\xa4\x26\xa4\x27\xa4\x28\xa4\x29\xa4\x2a\xa4\x2b\xa4\x2c\xa4\x2d\xa4\x2e\xa4\x2f\xa4\x30\xa4\x31\xa4\x32\xa4\x33\xa4\x34\xa4\x35\xa4\x36\xa4\x37\xa4\x38\xa4\x39\xa4\x3a\xa4\x3b\xa4\x3c\xa4\x3d\xa4\x3e\xa4\x3f\x00\x00", /* 7500 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa4\x40\xa4\x41\xa4\x42\xa4\x43\xa4\x44\xa4\x45\xa4\x46\xa4\x47\xa4\x48\xa4\x49\xa4\x4a\xa4\x4b\xa4\x4c\xa4\x4d\xa4\x4e\xa4\x4f\xa4\x50\xa4\x51\xa4\x52\xa4\x53\xa4\x54\xa4\x55\xa4\x56\xa4\x57\xa4\x58\xa4\x59\xa4\x5a\xa4\x5b\xa4\x5c\xa4\x5d\xa4\x5e\xa4\x5f\xa4\x60\xa4\x61\xa4\x62\xa4\x63\xa4\x64\xa4\x65\xa4\x66\xa4\x67\xa4\x68\xa4\x69\xa4\x6a\xa4\x6b\xa4\x6c\xa4\x6d\xa4\x6e\xa4\x6f\xa4\x70\xa4\x71\xa4\x72\xa4\x73\xa4\x74\xa4\x75\xa4\x76\xa4\x77\xa4\x78\xa4\x79\xa4\x7a\xa4\x7b\xa4\x7c\xa4\x7d\xa4\x7e", /* 7580 */ "\xa4\x7f\xa4\x80\xa4\x81\xa4\x82\xa4\x83\xa4\x84\xa4\x85\xa4\x86\xa4\x87\xa4\x88\xa4\x89\xa4\x8a\xa4\x8b\xa4\x8c\xa4\x8d\xa4\x8e\xa4\x8f\xa4\x90\xa4\x91\xa4\x92\xa4\x93\xa4\x94\xa4\x95\xa4\x96\xa4\x97\xa4\x98\xa4\x99\xa4\x9a\xa4\x9b\xa4\x9c\xa4\x9d\xa4\x9e\xa4\x9f\xa4\xa0\xa4\xa1\xa4\xa2\xa4\xa3\xa4\xa4\xa4\xa5\xa4\xa6\xa4\xa7\xa4\xa8\xa4\xa9\xa4\xaa\xa4\xab\xa4\xac\xa4\xad\xa4\xae\xa4\xaf\xa4\xb0\xa4\xb1\xa4\xb2\xa4\xb3\xa4\xb4\xa4\xb5\xa4\xb6\xa4\xb7\xa4\xb8\xa4\xb9\xa4\xba\xa4\xbb\xa4\xbc\xa4\xbd\xa4\xbe\xa4\xbf\xa4\xc0\xa4\xc1\xa4\xc2\xa4\xc3\xa4\xc4\xa4\xc5\xa4\xc6\xa4\xc7\xa4\xc8\xa4\xc9\xa4\xca\xa4\xcb\xa4\xcc\xa4\xcd\xa4\xce\xa4\xcf\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 7600 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe0\x00\xe0\x01\xe0\x02\xe0\x03\xe0\x04\xe0\x05\xe0\x06\xe0\x07\xe0\x08\xe0\x09\xe0\x0a\xe0\x0b\xe0\x0c\xe0\x0d\xe0\x0e\xe0\x0f\xe0\x10\xe0\x11\xe0\x12\xe0\x13\xe0\x14\xe0\x15\xe0\x16\xe0\x17\xe0\x18\xe0\x19\xe0\x1a\xe0\x1b\xe0\x1c\xe0\x1d\xe0\x1e\xe0\x1f\xe0\x20\xe0\x21\xe0\x22\xe0\x23\xe0\x24\xe0\x25\xe0\x26\xe0\x27\xe0\x28\xe0\x29\xe0\x2a\xe0\x2b\xe0\x2c\xe0\x2d\xe0\x2e\xe0\x2f\xe0\x30\xe0\x31\xe0\x32\xe0\x33\xe0\x34\xe0\x35\xe0\x36\xe0\x37\xe0\x38\xe0\x39\xe0\x3a\xe0\x3b\xe0\x3c\xe0\x3d\xe0\x3e", /* 7680 */ "\x00\x00\xe0\x3f\xe0\x40\xe0\x41\xe0\x42\xe0\x43\xe0\x44\xe0\x45\xe0\x46\xe0\x47\xe0\x48\xe0\x49\xe0\x4a\xe0\x4b\xe0\x4c\xe0\x4d\xe0\x4e\xe0\x4f\xe0\x50\xe0\x51\xe0\x52\xe0\x53\xe0\x54\xe0\x55\xe0\x56\xe0\x57\xe0\x58\xe0\x59\xe0\x5a\xe0\x5b\xe0\x5c\xe0\x5d\xe0\x5e\xe0\x5f\xe0\x60\xe0\x61\xe0\x62\xe0\x63\xe0\x64\xe0\x65\xe0\x66\xe0\x67\xe0\x68\xe0\x69\xe0\x6a\xe0\x6b\xe0\x6c\xe0\x6d\xe0\x6e\xe0\x6f\xe0\x70\xe0\x71\xe0\x72\xe0\x73\xe0\x74\xe0\x75\xe0\x76\xe0\x77\xe0\x78\xe0\x79\xe0\x7a\xe0\x7b\xe0\x7c\xe0\x7d\xe0\x7e\xe0\x7f\xe0\x80\xe0\x81\xe0\x82\xe0\x83\xe0\x84\xe0\x85\xe0\x86\xe0\x87\xe0\x88\xe0\x89\xe0\x8a\xe0\x8b\xe0\x8c\xe0\x8d\xe0\x8e\xe0\x8f\xe0\x90\xe0\x91\xe0\x92\xe0\x93\xe0\x94\xe0\x95\xe0\x96\xe0\x97\xe0\x98\xe0\x99\xe0\x9a\xe0\x9b\xe0\x9c\xe0\x9d\xe0\x9e\xe0\x9f\xe0\xa0\xe0\xa1\xe0\xa2\xe0\xa3\xe0\xa4\xe0\xa5\xe0\xa6\xe0\xa7\xe0\xa8\xe0\xa9\xe0\xaa\xe0\xab\xe0\xac\xe0\xad\xe0\xae\xe0\xaf\xe0\xb0\xe0\xb1\xe0\xb2\xe0\xb3\xe0\xb4\xe0\xb5\xe0\xb6\xe0\xb7\xe0\xb8\xe0\xb9\xe0\xba\xe0\xbb\x00\x00\x00\x00", /* 7700 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe0\xbc\xe0\xbd\xe0\xbe\xe0\xbf\xe0\xc0\xe0\xc1\xe0\xc2\xe0\xc3\xe0\xc4\xe0\xc5\xe0\xc6\xe0\xc7\xe0\xc8\xe0\xc9\xe0\xca\xe0\xcb\xe0\xcc\xe0\xcd\xe0\xce\xe0\xcf\xe0\xd0\xe0\xd1\xe0\xd2\xe0\xd3\xe0\xd4\xe0\xd5\xe0\xd6\xe0\xd7\xe0\xd8\xe0\xd9\xe0\xda\xe0\xdb\xe0\xdc\xe0\xdd\xe0\xde\xe0\xdf\xe0\xe0\xe0\xe1\xe0\xe2\xe0\xe3\xe0\xe4\xe0\xe5\xe0\xe6\xe0\xe7\xe0\xe8\xe0\xe9\xe0\xea\xe0\xeb\xe0\xec\xe0\xed\xe0\xee\xe0\xef\xe0\xf0\xe0\xf1\xe0\xf2\xe0\xf3\xe0\xf4\xe0\xf5\xe0\xf6\xe0\xf7\xe0\xf8\xe0\xf9\xe0\xfa", /* 7780 */ "\x00\x00\xe0\xfb\xe0\xfc\xe0\xfd\xe0\xfe\xe0\xff\xe1\x00\xe1\x01\xe1\x02\xe1\x03\xe1\x04\xe1\x05\xe1\x06\xe1\x07\xe1\x08\xe1\x09\xe1\x0a\xe1\x0b\xe1\x0c\xe1\x0d\xe1\x0e\xe1\x0f\xe1\x10\xe1\x11\xe1\x12\xe1\x13\xe1\x14\xe1\x15\xe1\x16\xe1\x17\xe1\x18\xe1\x19\xe1\x1a\xe1\x1b\xe1\x1c\xe1\x1d\xe1\x1e\xe1\x1f\xe1\x20\xe1\x21\xe1\x22\xe1\x23\xe1\x24\xe1\x25\xe1\x26\xe1\x27\xe1\x28\xe1\x29\xe1\x2a\xe1\x2b\xe1\x2c\xe1\x2d\xe1\x2e\xe1\x2f\xe1\x30\xe1\x31\xe1\x32\xe1\x33\xe1\x34\xe1\x35\xe1\x36\xe1\x37\xe1\x38\xe1\x39\xe1\x3a\xe1\x3b\xe1\x3c\xe1\x3d\xe1\x3e\xe1\x3f\xe1\x40\xe1\x41\xe1\x42\xe1\x43\xe1\x44\xe1\x45\xe1\x46\xe1\x47\xe1\x48\xe1\x49\xe1\x4a\xe1\x4b\xe1\x4c\xe1\x4d\xe1\x4e\xe1\x4f\xe1\x50\xe1\x51\xe1\x52\xe1\x53\xe1\x54\xe1\x55\xe1\x56\xe1\x57\xe1\x58\xe1\x59\xe1\x5a\xe1\x5b\xe1\x5c\xe1\x5d\xe1\x5e\xe1\x5f\xe1\x60\xe1\x61\xe1\x62\xe1\x63\xe1\x64\xe1\x65\xe1\x66\xe1\x67\xe1\x68\xe1\x69\xe1\x6a\xe1\x6b\xe1\x6c\xe1\x6d\xe1\x6e\xe1\x6f\xe1\x70\xe1\x71\xe1\x72\xe1\x73\xe1\x74\xe1\x75\xe1\x76\xe1\x77\x00\x00\x00\x00", /* 7800 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe1\x78\xe1\x79\xe1\x7a\xe1\x7b\xe1\x7c\xe1\x7d\xe1\x7e\xe1\x7f\xe1\x80\xe1\x81\xe1\x82\xe1\x83\xe1\x84\xe1\x85\xe1\x86\xe1\x87\xe1\x88\xe1\x89\xe1\x8a\xe1\x8b\xe1\x8c\xe1\x8d\xe1\x8e\xe1\x8f\xe1\x90\xe1\x91\xe1\x92\xe1\x93\xe1\x94\xe1\x95\xe1\x96\xe1\x97\xe1\x98\xe1\x99\xe1\x9a\xe1\x9b\xe1\x9c\xe1\x9d\xe1\x9e\xe1\x9f\xe1\xa0\xe1\xa1\xe1\xa2\xe1\xa3\xe1\xa4\xe1\xa5\xe1\xa6\xe1\xa7\xe1\xa8\xe1\xa9\xe1\xaa\xe1\xab\xe1\xac\xe1\xad\xe1\xae\xe1\xaf\xe1\xb0\xe1\xb1\xe1\xb2\xe1\xb3\xe1\xb4\xe1\xb5\xe1\xb6", /* 7880 */ "\x00\x00\xe1\xb7\xe1\xb8\xe1\xb9\xe1\xba\xe1\xbb\xe1\xbc\xe1\xbd\xe1\xbe\xe1\xbf\xe1\xc0\xe1\xc1\xe1\xc2\xe1\xc3\xe1\xc4\xe1\xc5\xe1\xc6\xe1\xc7\xe1\xc8\xe1\xc9\xe1\xca\xe1\xcb\xe1\xcc\xe1\xcd\xe1\xce\xe1\xcf\xe1\xd0\xe1\xd1\xe1\xd2\xe1\xd3\xe1\xd4\xe1\xd5\xe1\xd6\xe1\xd7\xe1\xd8\xe1\xd9\xe1\xda\xe1\xdb\xe1\xdc\xe1\xdd\xe1\xde\xe1\xdf\xe1\xe0\xe1\xe1\xe1\xe2\xe1\xe3\xe1\xe4\xe1\xe5\xe1\xe6\xe1\xe7\xe1\xe8\xe1\xe9\xe1\xea\xe1\xeb\xe1\xec\xe1\xed\xe1\xee\xe1\xef\xe1\xf0\xe1\xf1\xe1\xf2\xe1\xf3\xe1\xf4\xe1\xf5\xe1\xf6\xe1\xf7\xe1\xf8\xe1\xf9\xe1\xfa\xe1\xfb\xe1\xfc\xe1\xfd\xe1\xfe\xe1\xff\xe2\x00\xe2\x01\xe2\x02\xe2\x03\xe2\x04\xe2\x05\xe2\x06\xe2\x07\xe2\x08\xe2\x09\xe2\x0a\xe2\x0b\xe2\x0c\xe2\x0d\xe2\x0e\xe2\x0f\xe2\x10\xe2\x11\xe2\x12\xe2\x13\xe2\x14\xe2\x15\xe2\x16\xe2\x17\xe2\x18\xe2\x19\xe2\x1a\xe2\x1b\xe2\x1c\xe2\x1d\xe2\x1e\xe2\x1f\xe2\x20\xe2\x21\xe2\x22\xe2\x23\xe2\x24\xe2\x25\xe2\x26\xe2\x27\xe2\x28\xe2\x29\xe2\x2a\xe2\x2b\xe2\x2c\xe2\x2d\xe2\x2e\xe2\x2f\xe2\x30\xe2\x31\xe2\x32\xe2\x33\x00\x00\x00\x00", /* 7900 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe2\x34\xe2\x35\xe2\x36\xe2\x37\xe2\x38\xe2\x39\xe2\x3a\xe2\x3b\xe2\x3c\xe2\x3d\xe2\x3e\xe2\x3f\xe2\x40\xe2\x41\xe2\x42\xe2\x43\xe2\x44\xe2\x45\xe2\x46\xe2\x47\xe2\x48\xe2\x49\xe2\x4a\xe2\x4b\xe2\x4c\xe2\x4d\xe2\x4e\xe2\x4f\xe2\x50\xe2\x51\xe2\x52\xe2\x53\xe2\x54\xe2\x55\xe2\x56\xe2\x57\xe2\x58\xe2\x59\xe2\x5a\xe2\x5b\xe2\x5c\xe2\x5d\xe2\x5e\xe2\x5f\xe2\x60\xe2\x61\xe2\x62\xe2\x63\xe2\x64\xe2\x65\xe2\x66\xe2\x67\xe2\x68\xe2\x69\xe2\x6a\xe2\x6b\xe2\x6c\xe2\x6d\xe2\x6e\xe2\x6f\xe2\x70\xe2\x71\xe2\x72", /* 7980 */ "\x00\x00\xe2\x73\xe2\x74\xe2\x75\xe2\x76\xe2\x77\xe2\x78\xe2\x79\xe2\x7a\xe2\x7b\xe2\x7c\xe2\x7d\xe2\x7e\xe2\x7f\xe2\x80\xe2\x81\xe2\x82\xe2\x83\xe2\x84\xe2\x85\xe2\x86\xe2\x87\xe2\x88\xe2\x89\xe2\x8a\xe2\x8b\xe2\x8c\xe2\x8d\xe2\x8e\xe2\x8f\xe2\x90\xe2\x91\xe2\x92\xe2\x93\xe2\x94\xe2\x95\xe2\x96\xe2\x97\xe2\x98\xe2\x99\xe2\x9a\xe2\x9b\xe2\x9c\xe2\x9d\xe2\x9e\xe2\x9f\xe2\xa0\xe2\xa1\xe2\xa2\xe2\xa3\xe2\xa4\xe2\xa5\xe2\xa6\xe2\xa7\xe2\xa8\xe2\xa9\xe2\xaa\xe2\xab\xe2\xac\xe2\xad\xe2\xae\xe2\xaf\xe2\xb0\xe2\xb1\xe2\xb2\xe2\xb3\xe2\xb4\xe2\xb5\xe2\xb6\xe2\xb7\xe2\xb8\xe2\xb9\xe2\xba\xe2\xbb\xe2\xbc\xe2\xbd\xe2\xbe\xe2\xbf\xe2\xc0\xe2\xc1\xe2\xc2\xe2\xc3\xe2\xc4\xe2\xc5\xe2\xc6\xe2\xc7\xe2\xc8\xe2\xc9\xe2\xca\xe2\xcb\xe2\xcc\xe2\xcd\xe2\xce\xe2\xcf\xe2\xd0\xe2\xd1\xe2\xd2\xe2\xd3\xe2\xd4\xe2\xd5\xe2\xd6\xe2\xd7\xe2\xd8\xe2\xd9\xe2\xda\xe2\xdb\xe2\xdc\xe2\xdd\xe2\xde\xe2\xdf\xe2\xe0\xe2\xe1\xe2\xe2\xe2\xe3\xe2\xe4\xe2\xe5\xe2\xe6\xe2\xe7\xe2\xe8\xe2\xe9\xe2\xea\xe2\xeb\xe2\xec\xe2\xed\xe2\xee\xe2\xef\x00\x00\x00\x00", /* 7a00 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe2\xf0\xe2\xf1\xe2\xf2\xe2\xf3\xe2\xf4\xe2\xf5\xe2\xf6\xe2\xf7\xe2\xf8\xe2\xf9\xe2\xfa\xe2\xfb\xe2\xfc\xe2\xfd\xe2\xfe\xe2\xff\xe3\x00\xe3\x01\xe3\x02\xe3\x03\xe3\x04\xe3\x05\xe3\x06\xe3\x07\xe3\x08\xe3\x09\xe3\x0a\xe3\x0b\xe3\x0c\xe3\x0d\xe3\x0e\xe3\x0f\xe3\x10\xe3\x11\xe3\x12\xe3\x13\xe3\x14\xe3\x15\xe3\x16\xe3\x17\xe3\x18\xe3\x19\xe3\x1a\xe3\x1b\xe3\x1c\xe3\x1d\xe3\x1e\xe3\x1f\xe3\x20\xe3\x21\xe3\x22\xe3\x23\xe3\x24\xe3\x25\xe3\x26\xe3\x27\xe3\x28\xe3\x29\xe3\x2a\xe3\x2b\xe3\x2c\xe3\x2d\xe3\x2e", /* 7a80 */ "\x00\x00\xe3\x2f\xe3\x30\xe3\x31\xe3\x32\xe3\x33\xe3\x34\xe3\x35\xe3\x36\xe3\x37\xe3\x38\xe3\x39\xe3\x3a\xe3\x3b\xe3\x3c\xe3\x3d\xe3\x3e\xe3\x3f\xe3\x40\xe3\x41\xe3\x42\xe3\x43\xe3\x44\xe3\x45\xe3\x46\xe3\x47\xe3\x48\xe3\x49\xe3\x4a\xe3\x4b\xe3\x4c\xe3\x4d\xe3\x4e\xe3\x4f\xe3\x50\xe3\x51\xe3\x52\xe3\x53\xe3\x54\xe3\x55\xe3\x56\xe3\x57\xe3\x58\xe3\x59\xe3\x5a\xe3\x5b\xe3\x5c\xe3\x5d\xe3\x5e\xe3\x5f\xe3\x60\xe3\x61\xe3\x62\xe3\x63\xe3\x64\xe3\x65\xe3\x66\xe3\x67\xe3\x68\xe3\x69\xe3\x6a\xe3\x6b\xe3\x6c\xe3\x6d\xe3\x6e\xe3\x6f\xe3\x70\xe3\x71\xe3\x72\xe3\x73\xe3\x74\xe3\x75\xe3\x76\xe3\x77\xe3\x78\xe3\x79\xe3\x7a\xe3\x7b\xe3\x7c\xe3\x7d\xe3\x7e\xe3\x7f\xe3\x80\xe3\x81\xe3\x82\xe3\x83\xe3\x84\xe3\x85\xe3\x86\xe3\x87\xe3\x88\xe3\x89\xe3\x8a\xe3\x8b\xe3\x8c\xe3\x8d\xe3\x8e\xe3\x8f\xe3\x90\xe3\x91\xe3\x92\xe3\x93\xe3\x94\xe3\x95\xe3\x96\xe3\x97\xe3\x98\xe3\x99\xe3\x9a\xe3\x9b\xe3\x9c\xe3\x9d\xe3\x9e\xe3\x9f\xe3\xa0\xe3\xa1\xe3\xa2\xe3\xa3\xe3\xa4\xe3\xa5\xe3\xa6\xe3\xa7\xe3\xa8\xe3\xa9\xe3\xaa\xe3\xab\x00\x00\x00\x00", /* 7b00 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe3\xac\xe3\xad\xe3\xae\xe3\xaf\xe3\xb0\xe3\xb1\xe3\xb2\xe3\xb3\xe3\xb4\xe3\xb5\xe3\xb6\xe3\xb7\xe3\xb8\xe3\xb9\xe3\xba\xe3\xbb\xe3\xbc\xe3\xbd\xe3\xbe\xe3\xbf\xe3\xc0\xe3\xc1\xe3\xc2\xe3\xc3\xe3\xc4\xe3\xc5\xe3\xc6\xe3\xc7\xe3\xc8\xe3\xc9\xe3\xca\xe3\xcb\xe3\xcc\xe3\xcd\xe3\xce\xe3\xcf\xe3\xd0\xe3\xd1\xe3\xd2\xe3\xd3\xe3\xd4\xe3\xd5\xe3\xd6\xe3\xd7\xe3\xd8\xe3\xd9\xe3\xda\xe3\xdb\xe3\xdc\xe3\xdd\xe3\xde\xe3\xdf\xe3\xe0\xe3\xe1\xe3\xe2\xe3\xe3\xe3\xe4\xe3\xe5\xe3\xe6\xe3\xe7\xe3\xe8\xe3\xe9\xe3\xea", /* 7b80 */ "\x00\x00\xe3\xeb\xe3\xec\xe3\xed\xe3\xee\xe3\xef\xe3\xf0\xe3\xf1\xe3\xf2\xe3\xf3\xe3\xf4\xe3\xf5\xe3\xf6\xe3\xf7\xe3\xf8\xe3\xf9\xe3\xfa\xe3\xfb\xe3\xfc\xe3\xfd\xe3\xfe\xe3\xff\xe4\x00\xe4\x01\xe4\x02\xe4\x03\xe4\x04\xe4\x05\xe4\x06\xe4\x07\xe4\x08\xe4\x09\xe4\x0a\xe4\x0b\xe4\x0c\xe4\x0d\xe4\x0e\xe4\x0f\xe4\x10\xe4\x11\xe4\x12\xe4\x13\xe4\x14\xe4\x15\xe4\x16\xe4\x17\xe4\x18\xe4\x19\xe4\x1a\xe4\x1b\xe4\x1c\xe4\x1d\xe4\x1e\xe4\x1f\xe4\x20\xe4\x21\xe4\x22\xe4\x23\xe4\x24\xe4\x25\xe4\x26\xe4\x27\xe4\x28\xe4\x29\xe4\x2a\xe4\x2b\xe4\x2c\xe4\x2d\xe4\x2e\xe4\x2f\xe4\x30\xe4\x31\xe4\x32\xe4\x33\xe4\x34\xe4\x35\xe4\x36\xe4\x37\xe4\x38\xe4\x39\xe4\x3a\xe4\x3b\xe4\x3c\xe4\x3d\xe4\x3e\xe4\x3f\xe4\x40\xe4\x41\xe4\x42\xe4\x43\xe4\x44\xe4\x45\xe4\x46\xe4\x47\xe4\x48\xe4\x49\xe4\x4a\xe4\x4b\xe4\x4c\xe4\x4d\xe4\x4e\xe4\x4f\xe4\x50\xe4\x51\xe4\x52\xe4\x53\xe4\x54\xe4\x55\xe4\x56\xe4\x57\xe4\x58\xe4\x59\xe4\x5a\xe4\x5b\xe4\x5c\xe4\x5d\xe4\x5e\xe4\x5f\xe4\x60\xe4\x61\xe4\x62\xe4\x63\xe4\x64\xe4\x65\xe4\x66\xe4\x67\x00\x00\x00\x00", /* 7c00 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe4\x68\xe4\x69\xe4\x6a\xe4\x6b\xe4\x6c\xe4\x6d\xe4\x6e\xe4\x6f\xe4\x70\xe4\x71\xe4\x72\xe4\x73\xe4\x74\xe4\x75\xe4\x76\xe4\x77\xe4\x78\xe4\x79\xe4\x7a\xe4\x7b\xe4\x7c\xe4\x7d\xe4\x7e\xe4\x7f\xe4\x80\xe4\x81\xe4\x82\xe4\x83\xe4\x84\xe4\x85\xe4\x86\xe4\x87\xe4\x88\xe4\x89\xe4\x8a\xe4\x8b\xe4\x8c\xe4\x8d\xe4\x8e\xe4\x8f\xe4\x90\xe4\x91\xe4\x92\xe4\x93\xe4\x94\xe4\x95\xe4\x96\xe4\x97\xe4\x98\xe4\x99\xe4\x9a\xe4\x9b\xe4\x9c\xe4\x9d\xe4\x9e\xe4\x9f\xe4\xa0\xe4\xa1\xe4\xa2\xe4\xa3\xe4\xa4\xe4\xa5\xe4\xa6", /* 7c80 */ "\x00\x00\xe4\xa7\xe4\xa8\xe4\xa9\xe4\xaa\xe4\xab\xe4\xac\xe4\xad\xe4\xae\xe4\xaf\xe4\xb0\xe4\xb1\xe4\xb2\xe4\xb3\xe4\xb4\xe4\xb5\xe4\xb6\xe4\xb7\xe4\xb8\xe4\xb9\xe4\xba\xe4\xbb\xe4\xbc\xe4\xbd\xe4\xbe\xe4\xbf\xe4\xc0\xe4\xc1\xe4\xc2\xe4\xc3\xe4\xc4\xe4\xc5\xe4\xc6\xe4\xc7\xe4\xc8\xe4\xc9\xe4\xca\xe4\xcb\xe4\xcc\xe4\xcd\xe4\xce\xe4\xcf\xe4\xd0\xe4\xd1\xe4\xd2\xe4\xd3\xe4\xd4\xe4\xd5\xe4\xd6\xe4\xd7\xe4\xd8\xe4\xd9\xe4\xda\xe4\xdb\xe4\xdc\xe4\xdd\xe4\xde\xe4\xdf\xe4\xe0\xe4\xe1\xe4\xe2\xe4\xe3\xe4\xe4\xe4\xe5\xe4\xe6\xe4\xe7\xe4\xe8\xe4\xe9\xe4\xea\xe4\xeb\xe4\xec\xe4\xed\xe4\xee\xe4\xef\xe4\xf0\xe4\xf1\xe4\xf2\xe4\xf3\xe4\xf4\xe4\xf5\xe4\xf6\xe4\xf7\xe4\xf8\xe4\xf9\xe4\xfa\xe4\xfb\xe4\xfc\xe4\xfd\xe4\xfe\xe4\xff\xe5\x00\xe5\x01\xe5\x02\xe5\x03\xe5\x04\xe5\x05\xe5\x06\xe5\x07\xe5\x08\xe5\x09\xe5\x0a\xe5\x0b\xe5\x0c\xe5\x0d\xe5\x0e\xe5\x0f\xe5\x10\xe5\x11\xe5\x12\xe5\x13\xe5\x14\xe5\x15\xe5\x16\xe5\x17\xe5\x18\xe5\x19\xe5\x1a\xe5\x1b\xe5\x1c\xe5\x1d\xe5\x1e\xe5\x1f\xe5\x20\xe5\x21\xe5\x22\xe5\x23\x00\x00\x00\x00", /* 7d00 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe5\x24\xe5\x25\xe5\x26\xe5\x27\xe5\x28\xe5\x29\xe5\x2a\xe5\x2b\xe5\x2c\xe5\x2d\xe5\x2e\xe5\x2f\xe5\x30\xe5\x31\xe5\x32\xe5\x33\xe5\x34\xe5\x35\xe5\x36\xe5\x37\xe5\x38\xe5\x39\xe5\x3a\xe5\x3b\xe5\x3c\xe5\x3d\xe5\x3e\xe5\x3f\xe5\x40\xe5\x41\xe5\x42\xe5\x43\xe5\x44\xe5\x45\xe5\x46\xe5\x47\xe5\x48\xe5\x49\xe5\x4a\xe5\x4b\xe5\x4c\xe5\x4d\xe5\x4e\xe5\x4f\xe5\x50\xe5\x51\xe5\x52\xe5\x53\xe5\x54\xe5\x55\xe5\x56\xe5\x57\xe5\x58\xe5\x59\xe5\x5a\xe5\x5b\xe5\x5c\xe5\x5d\xe5\x5e\xe5\x5f\xe5\x60\xe5\x61\xe5\x62", /* 7d80 */ "\x00\x00\xe5\x63\xe5\x64\xe5\x65\xe5\x66\xe5\x67\xe5\x68\xe5\x69\xe5\x6a\xe5\x6b\xe5\x6c\xe5\x6d\xe5\x6e\xe5\x6f\xe5\x70\xe5\x71\xe5\x72\xe5\x73\xe5\x74\xe5\x75\xe5\x76\xe5\x77\xe5\x78\xe5\x79\xe5\x7a\xe5\x7b\xe5\x7c\xe5\x7d\xe5\x7e\xe5\x7f\xe5\x80\xe5\x81\xe5\x82\xe5\x83\xe5\x84\xe5\x85\xe5\x86\xe5\x87\xe5\x88\xe5\x89\xe5\x8a\xe5\x8b\xe5\x8c\xe5\x8d\xe5\x8e\xe5\x8f\xe5\x90\xe5\x91\xe5\x92\xe5\x93\xe5\x94\xe5\x95\xe5\x96\xe5\x97\xe5\x98\xe5\x99\xe5\x9a\xe5\x9b\xe5\x9c\xe5\x9d\xe5\x9e\xe5\x9f\xe5\xa0\xe5\xa1\xe5\xa2\xe5\xa3\xe5\xa4\xe5\xa5\xe5\xa6\xe5\xa7\xe5\xa8\xe5\xa9\xe5\xaa\xe5\xab\xe5\xac\xe5\xad\xe5\xae\xe5\xaf\xe5\xb0\xe5\xb1\xe5\xb2\xe5\xb3\xe5\xb4\xe5\xb5\xe5\xb6\xe5\xb7\xe5\xb8\xe5\xb9\xe5\xba\xe5\xbb\xe5\xbc\xe5\xbd\xe5\xbe\xe5\xbf\xe5\xc0\xe5\xc1\xe5\xc2\xe5\xc3\xe5\xc4\xe5\xc5\xe5\xc6\xe5\xc7\xe5\xc8\xe5\xc9\xe5\xca\xe5\xcb\xe5\xcc\xe5\xcd\xe5\xce\xe5\xcf\xe5\xd0\xe5\xd1\xe5\xd2\xe5\xd3\xe5\xd4\xe5\xd5\xe5\xd6\xe5\xd7\xe5\xd8\xe5\xd9\xe5\xda\xe5\xdb\xe5\xdc\xe5\xdd\xe5\xde\xe5\xdf\x00\x00\x00\x00", /* 7e00 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe5\xe0\xe5\xe1\xe5\xe2\xe5\xe3\xe5\xe4\xe5\xe5\xe5\xe6\xe5\xe7\xe5\xe8\xe5\xe9\xe5\xea\xe5\xeb\xe5\xec\xe5\xed\xe5\xee\xe5\xef\xe5\xf0\xe5\xf1\xe5\xf2\xe5\xf3\xe5\xf4\xe5\xf5\xe5\xf6\xe5\xf7\xe5\xf8\xe5\xf9\xe5\xfa\xe5\xfb\xe5\xfc\xe5\xfd\xe5\xfe\xe5\xff\xe6\x00\xe6\x01\xe6\x02\xe6\x03\xe6\x04\xe6\x05\xe6\x06\xe6\x07\xe6\x08\xe6\x09\xe6\x0a\xe6\x0b\xe6\x0c\xe6\x0d\xe6\x0e\xe6\x0f\xe6\x10\xe6\x11\xe6\x12\xe6\x13\xe6\x14\xe6\x15\xe6\x16\xe6\x17\xe6\x18\xe6\x19\xe6\x1a\xe6\x1b\xe6\x1c\xe6\x1d\xe6\x1e", /* 7e80 */ "\x00\x00\xe6\x1f\xe6\x20\xe6\x21\xe6\x22\xe6\x23\xe6\x24\xe6\x25\xe6\x26\xe6\x27\xe6\x28\xe6\x29\xe6\x2a\xe6\x2b\xe6\x2c\xe6\x2d\xe6\x2e\xe6\x2f\xe6\x30\xe6\x31\xe6\x32\xe6\x33\xe6\x34\xe6\x35\xe6\x36\xe6\x37\xe6\x38\xe6\x39\xe6\x3a\xe6\x3b\xe6\x3c\xe6\x3d\xe6\x3e\xe6\x3f\xe6\x40\xe6\x41\xe6\x42\xe6\x43\xe6\x44\xe6\x45\xe6\x46\xe6\x47\xe6\x48\xe6\x49\xe6\x4a\xe6\x4b\xe6\x4c\xe6\x4d\xe6\x4e\xe6\x4f\xe6\x50\xe6\x51\xe6\x52\xe6\x53\xe6\x54\xe6\x55\xe6\x56\xe6\x57\xe6\x58\xe6\x59\xe6\x5a\xe6\x5b\xe6\x5c\xe6\x5d\xe6\x5e\xe6\x5f\xe6\x60\xe6\x61\xe6\x62\xe6\x63\xe6\x64\xe6\x65\xe6\x66\xe6\x67\xe6\x68\xe6\x69\xe6\x6a\xe6\x6b\xe6\x6c\xe6\x6d\xe6\x6e\xe6\x6f\xe6\x70\xe6\x71\xe6\x72\xe6\x73\xe6\x74\xe6\x75\xe6\x76\xe6\x77\xe6\x78\xe6\x79\xe6\x7a\xe6\x7b\xe6\x7c\xe6\x7d\xe6\x7e\xe6\x7f\xe6\x80\xe6\x81\xe6\x82\xe6\x83\xe6\x84\xe6\x85\xe6\x86\xe6\x87\xe6\x88\xe6\x89\xe6\x8a\xe6\x8b\xe6\x8c\xe6\x8d\xe6\x8e\xe6\x8f\xe6\x90\xe6\x91\xe6\x92\xe6\x93\xe6\x94\xe6\x95\xe6\x96\xe6\x97\xe6\x98\xe6\x99\xe6\x9a\xe6\x9b\x00\x00\x00\x00", /* 7f00 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe6\x9c\xe6\x9d\xe6\x9e\xe6\x9f\xe6\xa0\xe6\xa1\xe6\xa2\xe6\xa3\xe6\xa4\xe6\xa5\xe6\xa6\xe6\xa7\xe6\xa8\xe6\xa9\xe6\xaa\xe6\xab\xe6\xac\xe6\xad\xe6\xae\xe6\xaf\xe6\xb0\xe6\xb1\xe6\xb2\xe6\xb3\xe6\xb4\xe6\xb5\xe6\xb6\xe6\xb7\xe6\xb8\xe6\xb9\xe6\xba\xe6\xbb\xe6\xbc\xe6\xbd\xe6\xbe\xe6\xbf\xe6\xc0\xe6\xc1\xe6\xc2\xe6\xc3\xe6\xc4\xe6\xc5\xe6\xc6\xe6\xc7\xe6\xc8\xe6\xc9\xe6\xca\xe6\xcb\xe6\xcc\xe6\xcd\xe6\xce\xe6\xcf\xe6\xd0\xe6\xd1\xe6\xd2\xe6\xd3\xe6\xd4\xe6\xd5\xe6\xd6\xe6\xd7\xe6\xd8\xe6\xd9\xe6\xda", /* 7f80 */ "\x00\x00\xe6\xdb\xe6\xdc\xe6\xdd\xe6\xde\xe6\xdf\xe6\xe0\xe6\xe1\xe6\xe2\xe6\xe3\xe6\xe4\xe6\xe5\xe6\xe6\xe6\xe7\xe6\xe8\xe6\xe9\xe6\xea\xe6\xeb\xe6\xec\xe6\xed\xe6\xee\xe6\xef\xe6\xf0\xe6\xf1\xe6\xf2\xe6\xf3\xe6\xf4\xe6\xf5\xe6\xf6\xe6\xf7\xe6\xf8\xe6\xf9\xe6\xfa\xe6\xfb\xe6\xfc\xe6\xfd\xe6\xfe\xe6\xff\xe7\x00\xe7\x01\xe7\x02\xe7\x03\xe7\x04\xe7\x05\xe7\x06\xe7\x07\xe7\x08\xe7\x09\xe7\x0a\xe7\x0b\xe7\x0c\xe7\x0d\xe7\x0e\xe7\x0f\xe7\x10\xe7\x11\xe7\x12\xe7\x13\xe7\x14\xe7\x15\xe7\x16\xe7\x17\xe7\x18\xe7\x19\xe7\x1a\xe7\x1b\xe7\x1c\xe7\x1d\xe7\x1e\xe7\x1f\xe7\x20\xe7\x21\xe7\x22\xe7\x23\xe7\x24\xe7\x25\xe7\x26\xe7\x27\xe7\x28\xe7\x29\xe7\x2a\xe7\x2b\xe7\x2c\xe7\x2d\xe7\x2e\xe7\x2f\xe7\x30\xe7\x31\xe7\x32\xe7\x33\xe7\x34\xe7\x35\xe7\x36\xe7\x37\xe7\x38\xe7\x39\xe7\x3a\xe7\x3b\xe7\x3c\xe7\x3d\xe7\x3e\xe7\x3f\xe7\x40\xe7\x41\xe7\x42\xe7\x43\xe7\x44\xe7\x45\xe7\x46\xe7\x47\xe7\x48\xe7\x49\xe7\x4a\xe7\x4b\xe7\x4c\xe7\x4d\xe7\x4e\xe7\x4f\xe7\x50\xe7\x51\xe7\x52\xe7\x53\xe7\x54\xe7\x55\xe7\x56\xe7\x57\x00\x00\x00\x00", /* 8000 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe7\x58\xe7\x59\xe7\x5a\xe7\x5b\xe7\x5c\xe7\x5d\xe7\x5e\xe7\x5f\xe7\x60\xe7\x61\xe7\x62\xe7\x63\xe7\x64\xe7\x65\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 8080 */ NULL, /* 8100 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4e\x02\x4e\x04\x4e\x05\x4e\x06\x4e\x0f\x4e\x12\x4e\x17\x4e\x1f\x4e\x20\x4e\x21\x4e\x23\x4e\x26\x4e\x29\x4e\x2e\x4e\x2f\x4e\x31\x4e\x33\x4e\x35\x4e\x37\x4e\x3c\x4e\x40\x4e\x41\x4e\x42\x4e\x44\x4e\x46\x4e\x4a\x4e\x51\x4e\x55\x4e\x57\x4e\x5a\x4e\x5b\x4e\x62\x4e\x63\x4e\x64\x4e\x65\x4e\x67\x4e\x68\x4e\x6a\x4e\x6b\x4e\x6c\x4e\x6d\x4e\x6e\x4e\x6f\x4e\x72\x4e\x74\x4e\x75\x4e\x76\x4e\x77\x4e\x78\x4e\x79\x4e\x7a\x4e\x7b\x4e\x7c\x4e\x7d\x4e\x7f\x4e\x80\x4e\x81\x4e\x82\x4e\x83\x4e\x84\x4e\x85\x4e\x87\x4e\x8a", /* 8180 */ "\x00\x00\x4e\x90\x4e\x96\x4e\x97\x4e\x99\x4e\x9c\x4e\x9d\x4e\x9e\x4e\xa3\x4e\xaa\x4e\xaf\x4e\xb0\x4e\xb1\x4e\xb4\x4e\xb6\x4e\xb7\x4e\xb8\x4e\xb9\x4e\xbc\x4e\xbd\x4e\xbe\x4e\xc8\x4e\xcc\x4e\xcf\x4e\xd0\x4e\xd2\x4e\xda\x4e\xdb\x4e\xdc\x4e\xe0\x4e\xe2\x4e\xe6\x4e\xe7\x4e\xe9\x4e\xed\x4e\xee\x4e\xef\x4e\xf1\x4e\xf4\x4e\xf8\x4e\xf9\x4e\xfa\x4e\xfc\x4e\xfe\x4f\x00\x4f\x02\x4f\x03\x4f\x04\x4f\x05\x4f\x06\x4f\x07\x4f\x08\x4f\x0b\x4f\x0c\x4f\x12\x4f\x13\x4f\x14\x4f\x15\x4f\x16\x4f\x1c\x4f\x1d\x4f\x21\x4f\x23\x4f\x28\x4f\x29\x4f\x2c\x4f\x2d\x4f\x2e\x4f\x31\x4f\x33\x4f\x35\x4f\x37\x4f\x39\x4f\x3b\x4f\x3e\x4f\x3f\x4f\x40\x4f\x41\x4f\x42\x4f\x44\x4f\x45\x4f\x47\x4f\x48\x4f\x49\x4f\x4a\x4f\x4b\x4f\x4c\x4f\x52\x4f\x54\x4f\x56\x4f\x61\x4f\x62\x4f\x66\x4f\x68\x4f\x6a\x4f\x6b\x4f\x6d\x4f\x6e\x4f\x71\x4f\x72\x4f\x75\x4f\x77\x4f\x78\x4f\x79\x4f\x7a\x4f\x7d\x4f\x80\x4f\x81\x4f\x82\x4f\x85\x4f\x86\x4f\x87\x4f\x8a\x4f\x8c\x4f\x8e\x4f\x90\x4f\x92\x4f\x93\x4f\x95\x4f\x96\x4f\x98\x4f\x99\x4f\x9a\x4f\x9c\x4f\x9e\x4f\x9f\x00\x00\x00\x00", /* 8200 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4f\xa1\x4f\xa2\x4f\xa4\x4f\xab\x4f\xad\x4f\xb0\x4f\xb1\x4f\xb2\x4f\xb3\x4f\xb4\x4f\xb6\x4f\xb7\x4f\xb8\x4f\xb9\x4f\xba\x4f\xbb\x4f\xbc\x4f\xbd\x4f\xbe\x4f\xc0\x4f\xc1\x4f\xc2\x4f\xc6\x4f\xc7\x4f\xc8\x4f\xc9\x4f\xcb\x4f\xcc\x4f\xcd\x4f\xd2\x4f\xd3\x4f\xd4\x4f\xd5\x4f\xd6\x4f\xd9\x4f\xdb\x4f\xe0\x4f\xe2\x4f\xe4\x4f\xe5\x4f\xe7\x4f\xeb\x4f\xec\x4f\xf0\x4f\xf2\x4f\xf4\x4f\xf5\x4f\xf6\x4f\xf7\x4f\xf9\x4f\xfb\x4f\xfc\x4f\xfd\x4f\xff\x50\x00\x50\x01\x50\x02\x50\x03\x50\x04\x50\x05\x50\x06\x50\x07\x50\x08", /* 8280 */ "\x00\x00\x50\x09\x50\x0a\x50\x0b\x50\x0e\x50\x10\x50\x11\x50\x13\x50\x15\x50\x16\x50\x17\x50\x1b\x50\x1d\x50\x1e\x50\x20\x50\x22\x50\x23\x50\x24\x50\x27\x50\x2b\x50\x2f\x50\x30\x50\x31\x50\x32\x50\x33\x50\x34\x50\x35\x50\x36\x50\x37\x50\x38\x50\x39\x50\x3b\x50\x3d\x50\x3f\x50\x40\x50\x41\x50\x42\x50\x44\x50\x45\x50\x46\x50\x49\x50\x4a\x50\x4b\x50\x4d\x50\x50\x50\x51\x50\x52\x50\x53\x50\x54\x50\x56\x50\x57\x50\x58\x50\x59\x50\x5b\x50\x5d\x50\x5e\x50\x5f\x50\x60\x50\x61\x50\x62\x50\x63\x50\x64\x50\x66\x50\x67\x50\x68\x50\x69\x50\x6a\x50\x6b\x50\x6d\x50\x6e\x50\x6f\x50\x70\x50\x71\x50\x72\x50\x73\x50\x74\x50\x75\x50\x78\x50\x79\x50\x7a\x50\x7c\x50\x7d\x50\x81\x50\x82\x50\x83\x50\x84\x50\x86\x50\x87\x50\x89\x50\x8a\x50\x8b\x50\x8c\x50\x8e\x50\x8f\x50\x90\x50\x91\x50\x92\x50\x93\x50\x94\x50\x95\x50\x96\x50\x97\x50\x98\x50\x99\x50\x9a\x50\x9b\x50\x9c\x50\x9d\x50\x9e\x50\x9f\x50\xa0\x50\xa1\x50\xa2\x50\xa4\x50\xa6\x50\xaa\x50\xab\x50\xad\x50\xae\x50\xaf\x50\xb0\x50\xb1\x50\xb3\x50\xb4\x50\xb5\x50\xb6\x00\x00\x00\x00", /* 8300 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x50\xb7\x50\xb8\x50\xb9\x50\xbc\x50\xbd\x50\xbe\x50\xbf\x50\xc0\x50\xc1\x50\xc2\x50\xc3\x50\xc4\x50\xc5\x50\xc6\x50\xc7\x50\xc8\x50\xc9\x50\xca\x50\xcb\x50\xcc\x50\xcd\x50\xce\x50\xd0\x50\xd1\x50\xd2\x50\xd3\x50\xd4\x50\xd5\x50\xd7\x50\xd8\x50\xd9\x50\xdb\x50\xdc\x50\xdd\x50\xde\x50\xdf\x50\xe0\x50\xe1\x50\xe2\x50\xe3\x50\xe4\x50\xe5\x50\xe8\x50\xe9\x50\xea\x50\xeb\x50\xef\x50\xf0\x50\xf1\x50\xf2\x50\xf4\x50\xf6\x50\xf7\x50\xf8\x50\xf9\x50\xfa\x50\xfc\x50\xfd\x50\xfe\x50\xff\x51\x00\x51\x01\x51\x02", /* 8380 */ "\x00\x00\x51\x03\x51\x04\x51\x05\x51\x08\x51\x09\x51\x0a\x51\x0c\x51\x0d\x51\x0e\x51\x0f\x51\x10\x51\x11\x51\x13\x51\x14\x51\x15\x51\x16\x51\x17\x51\x18\x51\x19\x51\x1a\x51\x1b\x51\x1c\x51\x1d\x51\x1e\x51\x1f\x51\x20\x51\x22\x51\x23\x51\x24\x51\x25\x51\x26\x51\x27\x51\x28\x51\x29\x51\x2a\x51\x2b\x51\x2c\x51\x2d\x51\x2e\x51\x2f\x51\x30\x51\x31\x51\x32\x51\x33\x51\x34\x51\x35\x51\x36\x51\x37\x51\x38\x51\x39\x51\x3a\x51\x3b\x51\x3c\x51\x3d\x51\x3e\x51\x42\x51\x47\x51\x4a\x51\x4c\x51\x4e\x51\x4f\x51\x50\x51\x52\x51\x53\x51\x57\x51\x58\x51\x59\x51\x5b\x51\x5d\x51\x5e\x51\x5f\x51\x60\x51\x61\x51\x63\x51\x64\x51\x66\x51\x67\x51\x69\x51\x6a\x51\x6f\x51\x72\x51\x7a\x51\x7e\x51\x7f\x51\x83\x51\x84\x51\x86\x51\x87\x51\x8a\x51\x8b\x51\x8e\x51\x8f\x51\x90\x51\x91\x51\x93\x51\x94\x51\x98\x51\x9a\x51\x9d\x51\x9e\x51\x9f\x51\xa1\x51\xa3\x51\xa6\x51\xa7\x51\xa8\x51\xa9\x51\xaa\x51\xad\x51\xae\x51\xb4\x51\xb8\x51\xb9\x51\xba\x51\xbe\x51\xbf\x51\xc1\x51\xc2\x51\xc3\x51\xc5\x51\xc8\x51\xca\x51\xcd\x51\xce\x51\xd0\x00\x00\x00\x00", /* 8400 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x51\xd2\x51\xd3\x51\xd4\x51\xd5\x51\xd6\x51\xd7\x51\xd8\x51\xd9\x51\xda\x51\xdc\x51\xde\x51\xdf\x51\xe2\x51\xe3\x51\xe5\x51\xe6\x51\xe7\x51\xe8\x51\xe9\x51\xea\x51\xec\x51\xee\x51\xf1\x51\xf2\x51\xf4\x51\xf7\x51\xfe\x52\x04\x52\x05\x52\x09\x52\x0b\x52\x0c\x52\x0f\x52\x10\x52\x13\x52\x14\x52\x15\x52\x1c\x52\x1e\x52\x1f\x52\x21\x52\x22\x52\x23\x52\x25\x52\x26\x52\x27\x52\x2a\x52\x2c\x52\x2f\x52\x31\x52\x32\x52\x34\x52\x35\x52\x3c\x52\x3e\x52\x44\x52\x45\x52\x46\x52\x47\x52\x48\x52\x49\x52\x4b\x52\x4e", /* 8480 */ "\x00\x00\x52\x4f\x52\x52\x52\x53\x52\x55\x52\x57\x52\x58\x52\x59\x52\x5a\x52\x5b\x52\x5d\x52\x5f\x52\x60\x52\x62\x52\x63\x52\x64\x52\x66\x52\x68\x52\x6b\x52\x6c\x52\x6d\x52\x6e\x52\x70\x52\x71\x52\x73\x52\x74\x52\x75\x52\x76\x52\x77\x52\x78\x52\x79\x52\x7a\x52\x7b\x52\x7c\x52\x7e\x52\x80\x52\x83\x52\x84\x52\x85\x52\x86\x52\x87\x52\x89\x52\x8a\x52\x8b\x52\x8c\x52\x8d\x52\x8e\x52\x8f\x52\x91\x52\x92\x52\x94\x52\x95\x52\x96\x52\x97\x52\x98\x52\x99\x52\x9a\x52\x9c\x52\xa4\x52\xa5\x52\xa6\x52\xa7\x52\xae\x52\xaf\x52\xb0\x52\xb4\x52\xb5\x52\xb6\x52\xb7\x52\xb8\x52\xb9\x52\xba\x52\xbb\x52\xbc\x52\xbd\x52\xc0\x52\xc1\x52\xc2\x52\xc4\x52\xc5\x52\xc6\x52\xc8\x52\xca\x52\xcc\x52\xcd\x52\xce\x52\xcf\x52\xd1\x52\xd3\x52\xd4\x52\xd5\x52\xd7\x52\xd9\x52\xda\x52\xdb\x52\xdc\x52\xdd\x52\xde\x52\xe0\x52\xe1\x52\xe2\x52\xe3\x52\xe5\x52\xe6\x52\xe7\x52\xe8\x52\xe9\x52\xea\x52\xeb\x52\xec\x52\xed\x52\xee\x52\xef\x52\xf1\x52\xf2\x52\xf3\x52\xf4\x52\xf5\x52\xf6\x52\xf7\x52\xf8\x52\xfb\x52\xfc\x52\xfd\x53\x01\x53\x02\x00\x00\x00\x00", /* 8500 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x53\x03\x53\x04\x53\x07\x53\x09\x53\x0a\x53\x0b\x53\x0c\x53\x0e\x53\x11\x53\x12\x53\x13\x53\x14\x53\x18\x53\x1b\x53\x1c\x53\x1e\x53\x1f\x53\x22\x53\x24\x53\x25\x53\x27\x53\x28\x53\x29\x53\x2b\x53\x2c\x53\x2d\x53\x2f\x53\x30\x53\x31\x53\x32\x53\x33\x53\x34\x53\x35\x53\x36\x53\x37\x53\x38\x53\x3c\x53\x3d\x53\x40\x53\x42\x53\x44\x53\x46\x53\x4b\x53\x4c\x53\x4d\x53\x50\x53\x54\x53\x58\x53\x59\x53\x5b\x53\x5d\x53\x65\x53\x68\x53\x6a\x53\x6c\x53\x6d\x53\x72\x53\x76\x53\x79\x53\x7b\x53\x7c\x53\x7d\x53\x7e", /* 8580 */ "\x00\x00\x53\x80\x53\x81\x53\x83\x53\x87\x53\x88\x53\x8a\x53\x8e\x53\x8f\x53\x90\x53\x91\x53\x92\x53\x93\x53\x94\x53\x96\x53\x97\x53\x99\x53\x9b\x53\x9c\x53\x9e\x53\xa0\x53\xa1\x53\xa4\x53\xa7\x53\xaa\x53\xab\x53\xac\x53\xad\x53\xaf\x53\xb0\x53\xb1\x53\xb2\x53\xb3\x53\xb4\x53\xb5\x53\xb7\x53\xb8\x53\xb9\x53\xba\x53\xbc\x53\xbd\x53\xbe\x53\xc0\x53\xc3\x53\xc4\x53\xc5\x53\xc6\x53\xc7\x53\xce\x53\xcf\x53\xd0\x53\xd2\x53\xd3\x53\xd5\x53\xda\x53\xdc\x53\xdd\x53\xde\x53\xe1\x53\xe2\x53\xe7\x53\xf4\x53\xfa\x53\xfe\x53\xff\x54\x00\x54\x02\x54\x05\x54\x07\x54\x0b\x54\x14\x54\x18\x54\x19\x54\x1a\x54\x1c\x54\x22\x54\x24\x54\x25\x54\x2a\x54\x30\x54\x33\x54\x36\x54\x37\x54\x3a\x54\x3d\x54\x3f\x54\x41\x54\x42\x54\x44\x54\x45\x54\x47\x54\x49\x54\x4c\x54\x4d\x54\x4e\x54\x4f\x54\x51\x54\x5a\x54\x5d\x54\x5e\x54\x5f\x54\x60\x54\x61\x54\x63\x54\x65\x54\x67\x54\x69\x54\x6a\x54\x6b\x54\x6c\x54\x6d\x54\x6e\x54\x6f\x54\x70\x54\x74\x54\x79\x54\x7a\x54\x7e\x54\x7f\x54\x81\x54\x83\x54\x85\x54\x87\x54\x88\x54\x89\x54\x8a\x00\x00\x00\x00", /* 8600 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x54\x8d\x54\x91\x54\x93\x54\x97\x54\x98\x54\x9c\x54\x9e\x54\x9f\x54\xa0\x54\xa1\x54\xa2\x54\xa5\x54\xae\x54\xb0\x54\xb2\x54\xb5\x54\xb6\x54\xb7\x54\xb9\x54\xba\x54\xbc\x54\xbe\x54\xc3\x54\xc5\x54\xca\x54\xcb\x54\xd6\x54\xd8\x54\xdb\x54\xe0\x54\xe1\x54\xe2\x54\xe3\x54\xe4\x54\xeb\x54\xec\x54\xef\x54\xf0\x54\xf1\x54\xf4\x54\xf5\x54\xf6\x54\xf7\x54\xf8\x54\xf9\x54\xfb\x54\xfe\x55\x00\x55\x02\x55\x03\x55\x04\x55\x05\x55\x08\x55\x0a\x55\x0b\x55\x0c\x55\x0d\x55\x0e\x55\x12\x55\x13\x55\x15\x55\x16\x55\x17", /* 8680 */ "\x00\x00\x55\x18\x55\x19\x55\x1a\x55\x1c\x55\x1d\x55\x1e\x55\x1f\x55\x21\x55\x25\x55\x26\x55\x28\x55\x29\x55\x2b\x55\x2d\x55\x32\x55\x34\x55\x35\x55\x36\x55\x38\x55\x39\x55\x3a\x55\x3b\x55\x3d\x55\x40\x55\x42\x55\x45\x55\x47\x55\x48\x55\x4b\x55\x4c\x55\x4d\x55\x4e\x55\x4f\x55\x51\x55\x52\x55\x53\x55\x54\x55\x57\x55\x58\x55\x59\x55\x5a\x55\x5b\x55\x5d\x55\x5e\x55\x5f\x55\x60\x55\x62\x55\x63\x55\x68\x55\x69\x55\x6b\x55\x6f\x55\x70\x55\x71\x55\x72\x55\x73\x55\x74\x55\x79\x55\x7a\x55\x7d\x55\x7f\x55\x85\x55\x86\x55\x8c\x55\x8d\x55\x8e\x55\x90\x55\x92\x55\x93\x55\x95\x55\x96\x55\x97\x55\x9a\x55\x9b\x55\x9e\x55\xa0\x55\xa1\x55\xa2\x55\xa3\x55\xa4\x55\xa5\x55\xa6\x55\xa8\x55\xa9\x55\xaa\x55\xab\x55\xac\x55\xad\x55\xae\x55\xaf\x55\xb0\x55\xb2\x55\xb4\x55\xb6\x55\xb8\x55\xba\x55\xbc\x55\xbf\x55\xc0\x55\xc1\x55\xc2\x55\xc3\x55\xc6\x55\xc7\x55\xc8\x55\xca\x55\xcb\x55\xce\x55\xcf\x55\xd0\x55\xd5\x55\xd7\x55\xd8\x55\xd9\x55\xda\x55\xdb\x55\xde\x55\xe0\x55\xe2\x55\xe7\x55\xe9\x55\xed\x55\xee\x55\xf0\x55\xf1\x00\x00\x00\x00", /* 8700 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x55\xf4\x55\xf6\x55\xf8\x55\xf9\x55\xfa\x55\xfb\x55\xfc\x55\xff\x56\x02\x56\x03\x56\x04\x56\x05\x56\x06\x56\x07\x56\x0a\x56\x0b\x56\x0d\x56\x10\x56\x11\x56\x12\x56\x13\x56\x14\x56\x15\x56\x16\x56\x17\x56\x19\x56\x1a\x56\x1c\x56\x1d\x56\x20\x56\x21\x56\x22\x56\x25\x56\x26\x56\x28\x56\x29\x56\x2a\x56\x2b\x56\x2e\x56\x2f\x56\x30\x56\x33\x56\x35\x56\x37\x56\x38\x56\x3a\x56\x3c\x56\x3d\x56\x3e\x56\x40\x56\x41\x56\x42\x56\x43\x56\x44\x56\x45\x56\x46\x56\x47\x56\x48\x56\x49\x56\x4a\x56\x4b\x56\x4f\x56\x50", /* 8780 */ "\x00\x00\x56\x51\x56\x52\x56\x53\x56\x55\x56\x56\x56\x5a\x56\x5b\x56\x5d\x56\x5e\x56\x5f\x56\x60\x56\x61\x56\x63\x56\x65\x56\x66\x56\x67\x56\x6d\x56\x6e\x56\x6f\x56\x70\x56\x72\x56\x73\x56\x74\x56\x75\x56\x77\x56\x78\x56\x79\x56\x7a\x56\x7d\x56\x7e\x56\x7f\x56\x80\x56\x81\x56\x82\x56\x83\x56\x84\x56\x87\x56\x88\x56\x89\x56\x8a\x56\x8b\x56\x8c\x56\x8d\x56\x90\x56\x91\x56\x92\x56\x94\x56\x95\x56\x96\x56\x97\x56\x98\x56\x99\x56\x9a\x56\x9b\x56\x9c\x56\x9d\x56\x9e\x56\x9f\x56\xa0\x56\xa1\x56\xa2\x56\xa4\x56\xa5\x56\xa6\x56\xa7\x56\xa8\x56\xa9\x56\xaa\x56\xab\x56\xac\x56\xad\x56\xae\x56\xb0\x56\xb1\x56\xb2\x56\xb3\x56\xb4\x56\xb5\x56\xb6\x56\xb8\x56\xb9\x56\xba\x56\xbb\x56\xbd\x56\xbe\x56\xbf\x56\xc0\x56\xc1\x56\xc2\x56\xc3\x56\xc4\x56\xc5\x56\xc6\x56\xc7\x56\xc8\x56\xc9\x56\xcb\x56\xcc\x56\xcd\x56\xce\x56\xcf\x56\xd0\x56\xd1\x56\xd2\x56\xd3\x56\xd5\x56\xd6\x56\xd8\x56\xd9\x56\xdc\x56\xe3\x56\xe5\x56\xe6\x56\xe7\x56\xe8\x56\xe9\x56\xea\x56\xec\x56\xee\x56\xef\x56\xf2\x56\xf3\x56\xf6\x56\xf7\x56\xf8\x00\x00\x00\x00", /* 8800 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x56\xfb\x56\xfc\x57\x00\x57\x01\x57\x02\x57\x05\x57\x07\x57\x0b\x57\x0c\x57\x0d\x57\x0e\x57\x0f\x57\x10\x57\x11\x57\x12\x57\x13\x57\x14\x57\x15\x57\x16\x57\x17\x57\x18\x57\x19\x57\x1a\x57\x1b\x57\x1d\x57\x1e\x57\x20\x57\x21\x57\x22\x57\x24\x57\x25\x57\x26\x57\x27\x57\x2b\x57\x31\x57\x32\x57\x34\x57\x35\x57\x36\x57\x37\x57\x38\x57\x3c\x57\x3d\x57\x3f\x57\x41\x57\x43\x57\x44\x57\x45\x57\x46\x57\x48\x57\x49\x57\x4b\x57\x52\x57\x53\x57\x54\x57\x55\x57\x56\x57\x58\x57\x59\x57\x62\x57\x63\x57\x65\x57\x67", /* 8880 */ "\x00\x00\x57\x6c\x57\x6e\x57\x70\x57\x71\x57\x72\x57\x74\x57\x75\x57\x78\x57\x79\x57\x7a\x57\x7d\x57\x7e\x57\x7f\x57\x80\x57\x81\x57\x87\x57\x88\x57\x89\x57\x8a\x57\x8d\x57\x8e\x57\x8f\x57\x90\x57\x91\x57\x94\x57\x95\x57\x96\x57\x97\x57\x98\x57\x99\x57\x9a\x57\x9c\x57\x9d\x57\x9e\x57\x9f\x57\xa5\x57\xa8\x57\xaa\x57\xac\x57\xaf\x57\xb0\x57\xb1\x57\xb3\x57\xb5\x57\xb6\x57\xb7\x57\xb9\x57\xba\x57\xbb\x57\xbc\x57\xbd\x57\xbe\x57\xbf\x57\xc0\x57\xc1\x57\xc4\x57\xc5\x57\xc6\x57\xc7\x57\xc8\x57\xc9\x57\xca\x57\xcc\x57\xcd\x57\xd0\x57\xd1\x57\xd3\x57\xd6\x57\xd7\x57\xdb\x57\xdc\x57\xde\x57\xe1\x57\xe2\x57\xe3\x57\xe5\x57\xe6\x57\xe7\x57\xe8\x57\xe9\x57\xea\x57\xeb\x57\xec\x57\xee\x57\xf0\x57\xf1\x57\xf2\x57\xf3\x57\xf5\x57\xf6\x57\xf7\x57\xfb\x57\xfc\x57\xfe\x57\xff\x58\x01\x58\x03\x58\x04\x58\x05\x58\x08\x58\x09\x58\x0a\x58\x0c\x58\x0e\x58\x0f\x58\x10\x58\x12\x58\x13\x58\x14\x58\x16\x58\x17\x58\x18\x58\x1a\x58\x1b\x58\x1c\x58\x1d\x58\x1f\x58\x22\x58\x23\x58\x25\x58\x26\x58\x27\x58\x28\x58\x29\x58\x2b\x00\x00\x00\x00", /* 8900 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x58\x2c\x58\x2d\x58\x2e\x58\x2f\x58\x31\x58\x32\x58\x33\x58\x34\x58\x36\x58\x37\x58\x38\x58\x39\x58\x3a\x58\x3b\x58\x3c\x58\x3d\x58\x3e\x58\x3f\x58\x40\x58\x41\x58\x42\x58\x43\x58\x45\x58\x46\x58\x47\x58\x48\x58\x49\x58\x4a\x58\x4b\x58\x4e\x58\x4f\x58\x50\x58\x52\x58\x53\x58\x55\x58\x56\x58\x57\x58\x59\x58\x5a\x58\x5b\x58\x5c\x58\x5d\x58\x5f\x58\x60\x58\x61\x58\x62\x58\x63\x58\x64\x58\x66\x58\x67\x58\x68\x58\x69\x58\x6a\x58\x6d\x58\x6e\x58\x6f\x58\x70\x58\x71\x58\x72\x58\x73\x58\x74\x58\x75\x58\x76", /* 8980 */ "\x00\x00\x58\x77\x58\x78\x58\x79\x58\x7a\x58\x7b\x58\x7c\x58\x7d\x58\x7f\x58\x82\x58\x84\x58\x86\x58\x87\x58\x88\x58\x8a\x58\x8b\x58\x8c\x58\x8d\x58\x8e\x58\x8f\x58\x90\x58\x91\x58\x94\x58\x95\x58\x96\x58\x97\x58\x98\x58\x9b\x58\x9c\x58\x9d\x58\xa0\x58\xa1\x58\xa2\x58\xa3\x58\xa4\x58\xa5\x58\xa6\x58\xa7\x58\xaa\x58\xab\x58\xac\x58\xad\x58\xae\x58\xaf\x58\xb0\x58\xb1\x58\xb2\x58\xb3\x58\xb4\x58\xb5\x58\xb6\x58\xb7\x58\xb8\x58\xb9\x58\xba\x58\xbb\x58\xbd\x58\xbe\x58\xbf\x58\xc0\x58\xc2\x58\xc3\x58\xc4\x58\xc6\x58\xc7\x58\xc8\x58\xc9\x58\xca\x58\xcb\x58\xcc\x58\xcd\x58\xce\x58\xcf\x58\xd0\x58\xd2\x58\xd3\x58\xd4\x58\xd6\x58\xd7\x58\xd8\x58\xd9\x58\xda\x58\xdb\x58\xdc\x58\xdd\x58\xde\x58\xdf\x58\xe0\x58\xe1\x58\xe2\x58\xe3\x58\xe5\x58\xe6\x58\xe7\x58\xe8\x58\xe9\x58\xea\x58\xed\x58\xef\x58\xf1\x58\xf2\x58\xf4\x58\xf5\x58\xf7\x58\xf8\x58\xfa\x58\xfb\x58\xfc\x58\xfd\x58\xfe\x58\xff\x59\x00\x59\x01\x59\x03\x59\x05\x59\x06\x59\x08\x59\x09\x59\x0a\x59\x0b\x59\x0c\x59\x0e\x59\x10\x59\x11\x59\x12\x59\x13\x00\x00\x00\x00", /* 8a00 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x59\x17\x59\x18\x59\x1b\x59\x1d\x59\x1e\x59\x20\x59\x21\x59\x22\x59\x23\x59\x26\x59\x28\x59\x2c\x59\x30\x59\x32\x59\x33\x59\x35\x59\x36\x59\x3b\x59\x3d\x59\x3e\x59\x3f\x59\x40\x59\x43\x59\x45\x59\x46\x59\x4a\x59\x4c\x59\x4d\x59\x50\x59\x52\x59\x53\x59\x59\x59\x5b\x59\x5c\x59\x5d\x59\x5e\x59\x5f\x59\x61\x59\x63\x59\x64\x59\x66\x59\x67\x59\x68\x59\x69\x59\x6a\x59\x6b\x59\x6c\x59\x6d\x59\x6e\x59\x6f\x59\x70\x59\x71\x59\x72\x59\x75\x59\x77\x59\x7a\x59\x7b\x59\x7c\x59\x7e\x59\x7f\x59\x80\x59\x85\x59\x89", /* 8a80 */ "\x00\x00\x59\x8b\x59\x8c\x59\x8e\x59\x8f\x59\x90\x59\x91\x59\x94\x59\x95\x59\x98\x59\x9a\x59\x9b\x59\x9c\x59\x9d\x59\x9f\x59\xa0\x59\xa1\x59\xa2\x59\xa6\x59\xa7\x59\xac\x59\xad\x59\xb0\x59\xb1\x59\xb3\x59\xb4\x59\xb5\x59\xb6\x59\xb7\x59\xb8\x59\xba\x59\xbc\x59\xbd\x59\xbf\x59\xc0\x59\xc1\x59\xc2\x59\xc3\x59\xc4\x59\xc5\x59\xc7\x59\xc8\x59\xc9\x59\xcc\x59\xcd\x59\xce\x59\xcf\x59\xd5\x59\xd6\x59\xd9\x59\xdb\x59\xde\x59\xdf\x59\xe0\x59\xe1\x59\xe2\x59\xe4\x59\xe6\x59\xe7\x59\xe9\x59\xea\x59\xeb\x59\xed\x59\xee\x59\xef\x59\xf0\x59\xf1\x59\xf2\x59\xf3\x59\xf4\x59\xf5\x59\xf6\x59\xf7\x59\xf8\x59\xfa\x59\xfc\x59\xfd\x59\xfe\x5a\x00\x5a\x02\x5a\x0a\x5a\x0b\x5a\x0d\x5a\x0e\x5a\x0f\x5a\x10\x5a\x12\x5a\x14\x5a\x15\x5a\x16\x5a\x17\x5a\x19\x5a\x1a\x5a\x1b\x5a\x1d\x5a\x1e\x5a\x21\x5a\x22\x5a\x24\x5a\x26\x5a\x27\x5a\x28\x5a\x2a\x5a\x2b\x5a\x2c\x5a\x2d\x5a\x2e\x5a\x2f\x5a\x30\x5a\x33\x5a\x35\x5a\x37\x5a\x38\x5a\x39\x5a\x3a\x5a\x3b\x5a\x3d\x5a\x3e\x5a\x3f\x5a\x41\x5a\x42\x5a\x43\x5a\x44\x5a\x45\x5a\x47\x5a\x48\x00\x00\x00\x00", /* 8b00 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5a\x4b\x5a\x4c\x5a\x4d\x5a\x4e\x5a\x4f\x5a\x50\x5a\x51\x5a\x52\x5a\x53\x5a\x54\x5a\x56\x5a\x57\x5a\x58\x5a\x59\x5a\x5b\x5a\x5c\x5a\x5d\x5a\x5e\x5a\x5f\x5a\x60\x5a\x61\x5a\x63\x5a\x64\x5a\x65\x5a\x66\x5a\x68\x5a\x69\x5a\x6b\x5a\x6c\x5a\x6d\x5a\x6e\x5a\x6f\x5a\x70\x5a\x71\x5a\x72\x5a\x73\x5a\x78\x5a\x79\x5a\x7b\x5a\x7c\x5a\x7d\x5a\x7e\x5a\x80\x5a\x81\x5a\x82\x5a\x83\x5a\x84\x5a\x85\x5a\x86\x5a\x87\x5a\x88\x5a\x89\x5a\x8a\x5a\x8b\x5a\x8c\x5a\x8d\x5a\x8e\x5a\x8f\x5a\x90\x5a\x91\x5a\x93\x5a\x94\x5a\x95", /* 8b80 */ "\x00\x00\x5a\x96\x5a\x97\x5a\x98\x5a\x99\x5a\x9c\x5a\x9d\x5a\x9e\x5a\x9f\x5a\xa0\x5a\xa1\x5a\xa2\x5a\xa3\x5a\xa4\x5a\xa5\x5a\xa6\x5a\xa7\x5a\xa8\x5a\xa9\x5a\xab\x5a\xac\x5a\xad\x5a\xae\x5a\xaf\x5a\xb0\x5a\xb1\x5a\xb4\x5a\xb6\x5a\xb7\x5a\xb9\x5a\xba\x5a\xbb\x5a\xbc\x5a\xbd\x5a\xbf\x5a\xc0\x5a\xc3\x5a\xc4\x5a\xc5\x5a\xc6\x5a\xc7\x5a\xc8\x5a\xca\x5a\xcb\x5a\xcd\x5a\xce\x5a\xcf\x5a\xd0\x5a\xd1\x5a\xd3\x5a\xd5\x5a\xd7\x5a\xd9\x5a\xda\x5a\xdb\x5a\xdd\x5a\xde\x5a\xdf\x5a\xe2\x5a\xe4\x5a\xe5\x5a\xe7\x5a\xe8\x5a\xea\x5a\xec\x5a\xed\x5a\xee\x5a\xef\x5a\xf0\x5a\xf2\x5a\xf3\x5a\xf4\x5a\xf5\x5a\xf6\x5a\xf7\x5a\xf8\x5a\xf9\x5a\xfa\x5a\xfb\x5a\xfc\x5a\xfd\x5a\xfe\x5a\xff\x5b\x00\x5b\x01\x5b\x02\x5b\x03\x5b\x04\x5b\x05\x5b\x06\x5b\x07\x5b\x08\x5b\x0a\x5b\x0b\x5b\x0c\x5b\x0d\x5b\x0e\x5b\x0f\x5b\x10\x5b\x11\x5b\x12\x5b\x13\x5b\x14\x5b\x15\x5b\x18\x5b\x19\x5b\x1a\x5b\x1b\x5b\x1c\x5b\x1d\x5b\x1e\x5b\x1f\x5b\x20\x5b\x21\x5b\x22\x5b\x23\x5b\x24\x5b\x25\x5b\x26\x5b\x27\x5b\x28\x5b\x29\x5b\x2a\x5b\x2b\x5b\x2c\x5b\x2d\x00\x00\x00\x00", /* 8c00 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5b\x2e\x5b\x2f\x5b\x30\x5b\x31\x5b\x33\x5b\x35\x5b\x36\x5b\x38\x5b\x39\x5b\x3a\x5b\x3b\x5b\x3c\x5b\x3d\x5b\x3e\x5b\x3f\x5b\x41\x5b\x42\x5b\x43\x5b\x44\x5b\x45\x5b\x46\x5b\x47\x5b\x48\x5b\x49\x5b\x4a\x5b\x4b\x5b\x4c\x5b\x4d\x5b\x4e\x5b\x4f\x5b\x52\x5b\x56\x5b\x5e\x5b\x60\x5b\x61\x5b\x67\x5b\x68\x5b\x6b\x5b\x6d\x5b\x6e\x5b\x6f\x5b\x72\x5b\x74\x5b\x76\x5b\x77\x5b\x78\x5b\x79\x5b\x7b\x5b\x7c\x5b\x7e\x5b\x7f\x5b\x82\x5b\x86\x5b\x8a\x5b\x8d\x5b\x8e\x5b\x90\x5b\x91\x5b\x92\x5b\x94\x5b\x96\x5b\x9f\x5b\xa7", /* 8c80 */ "\x00\x00\x5b\xa8\x5b\xa9\x5b\xac\x5b\xad\x5b\xae\x5b\xaf\x5b\xb1\x5b\xb2\x5b\xb7\x5b\xba\x5b\xbb\x5b\xbc\x5b\xc0\x5b\xc1\x5b\xc3\x5b\xc8\x5b\xc9\x5b\xca\x5b\xcb\x5b\xcd\x5b\xce\x5b\xcf\x5b\xd1\x5b\xd4\x5b\xd5\x5b\xd6\x5b\xd7\x5b\xd8\x5b\xd9\x5b\xda\x5b\xdb\x5b\xdc\x5b\xe0\x5b\xe2\x5b\xe3\x5b\xe6\x5b\xe7\x5b\xe9\x5b\xea\x5b\xeb\x5b\xec\x5b\xed\x5b\xef\x5b\xf1\x5b\xf2\x5b\xf3\x5b\xf4\x5b\xf5\x5b\xf6\x5b\xf7\x5b\xfd\x5b\xfe\x5c\x00\x5c\x02\x5c\x03\x5c\x05\x5c\x07\x5c\x08\x5c\x0b\x5c\x0c\x5c\x0d\x5c\x0e\x5c\x10\x5c\x12\x5c\x13\x5c\x17\x5c\x19\x5c\x1b\x5c\x1e\x5c\x1f\x5c\x20\x5c\x21\x5c\x23\x5c\x26\x5c\x28\x5c\x29\x5c\x2a\x5c\x2b\x5c\x2d\x5c\x2e\x5c\x2f\x5c\x30\x5c\x32\x5c\x33\x5c\x35\x5c\x36\x5c\x37\x5c\x43\x5c\x44\x5c\x46\x5c\x47\x5c\x4c\x5c\x4d\x5c\x52\x5c\x53\x5c\x54\x5c\x56\x5c\x57\x5c\x58\x5c\x5a\x5c\x5b\x5c\x5c\x5c\x5d\x5c\x5f\x5c\x62\x5c\x64\x5c\x67\x5c\x68\x5c\x69\x5c\x6a\x5c\x6b\x5c\x6c\x5c\x6d\x5c\x70\x5c\x72\x5c\x73\x5c\x74\x5c\x75\x5c\x76\x5c\x77\x5c\x78\x5c\x7b\x5c\x7c\x5c\x7d\x5c\x7e\x00\x00\x00\x00", /* 8d00 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5c\x80\x5c\x83\x5c\x84\x5c\x85\x5c\x86\x5c\x87\x5c\x89\x5c\x8a\x5c\x8b\x5c\x8e\x5c\x8f\x5c\x92\x5c\x93\x5c\x95\x5c\x9d\x5c\x9e\x5c\x9f\x5c\xa0\x5c\xa1\x5c\xa4\x5c\xa5\x5c\xa6\x5c\xa7\x5c\xa8\x5c\xaa\x5c\xae\x5c\xaf\x5c\xb0\x5c\xb2\x5c\xb4\x5c\xb6\x5c\xb9\x5c\xba\x5c\xbb\x5c\xbc\x5c\xbe\x5c\xc0\x5c\xc2\x5c\xc3\x5c\xc5\x5c\xc6\x5c\xc7\x5c\xc8\x5c\xc9\x5c\xca\x5c\xcc\x5c\xcd\x5c\xce\x5c\xcf\x5c\xd0\x5c\xd1\x5c\xd3\x5c\xd4\x5c\xd5\x5c\xd6\x5c\xd7\x5c\xd8\x5c\xda\x5c\xdb\x5c\xdc\x5c\xdd\x5c\xde\x5c\xdf", /* 8d80 */ "\x00\x00\x5c\xe0\x5c\xe2\x5c\xe3\x5c\xe7\x5c\xe9\x5c\xeb\x5c\xec\x5c\xee\x5c\xef\x5c\xf1\x5c\xf2\x5c\xf3\x5c\xf4\x5c\xf5\x5c\xf6\x5c\xf7\x5c\xf8\x5c\xf9\x5c\xfa\x5c\xfc\x5c\xfd\x5c\xfe\x5c\xff\x5d\x00\x5d\x01\x5d\x04\x5d\x05\x5d\x08\x5d\x09\x5d\x0a\x5d\x0b\x5d\x0c\x5d\x0d\x5d\x0f\x5d\x10\x5d\x11\x5d\x12\x5d\x13\x5d\x15\x5d\x17\x5d\x18\x5d\x19\x5d\x1a\x5d\x1c\x5d\x1d\x5d\x1f\x5d\x20\x5d\x21\x5d\x22\x5d\x23\x5d\x25\x5d\x28\x5d\x2a\x5d\x2b\x5d\x2c\x5d\x2f\x5d\x30\x5d\x31\x5d\x32\x5d\x33\x5d\x35\x5d\x36\x5d\x37\x5d\x38\x5d\x39\x5d\x3a\x5d\x3b\x5d\x3c\x5d\x3f\x5d\x40\x5d\x41\x5d\x42\x5d\x43\x5d\x44\x5d\x45\x5d\x46\x5d\x48\x5d\x49\x5d\x4d\x5d\x4e\x5d\x4f\x5d\x50\x5d\x51\x5d\x52\x5d\x53\x5d\x54\x5d\x55\x5d\x56\x5d\x57\x5d\x59\x5d\x5a\x5d\x5c\x5d\x5e\x5d\x5f\x5d\x60\x5d\x61\x5d\x62\x5d\x63\x5d\x64\x5d\x65\x5d\x66\x5d\x67\x5d\x68\x5d\x6a\x5d\x6d\x5d\x6e\x5d\x70\x5d\x71\x5d\x72\x5d\x73\x5d\x75\x5d\x76\x5d\x77\x5d\x78\x5d\x79\x5d\x7a\x5d\x7b\x5d\x7c\x5d\x7d\x5d\x7e\x5d\x7f\x5d\x80\x5d\x81\x5d\x83\x5d\x84\x00\x00\x00\x00", /* 8e00 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5d\x85\x5d\x86\x5d\x87\x5d\x88\x5d\x89\x5d\x8a\x5d\x8b\x5d\x8c\x5d\x8d\x5d\x8e\x5d\x8f\x5d\x90\x5d\x91\x5d\x92\x5d\x93\x5d\x94\x5d\x95\x5d\x96\x5d\x97\x5d\x98\x5d\x9a\x5d\x9b\x5d\x9c\x5d\x9e\x5d\x9f\x5d\xa0\x5d\xa1\x5d\xa2\x5d\xa3\x5d\xa4\x5d\xa5\x5d\xa6\x5d\xa7\x5d\xa8\x5d\xa9\x5d\xaa\x5d\xab\x5d\xac\x5d\xad\x5d\xae\x5d\xaf\x5d\xb0\x5d\xb1\x5d\xb2\x5d\xb3\x5d\xb4\x5d\xb5\x5d\xb6\x5d\xb8\x5d\xb9\x5d\xba\x5d\xbb\x5d\xbc\x5d\xbd\x5d\xbe\x5d\xbf\x5d\xc0\x5d\xc1\x5d\xc2\x5d\xc3\x5d\xc4\x5d\xc6\x5d\xc7", /* 8e80 */ "\x00\x00\x5d\xc8\x5d\xc9\x5d\xca\x5d\xcb\x5d\xcc\x5d\xce\x5d\xcf\x5d\xd0\x5d\xd1\x5d\xd2\x5d\xd3\x5d\xd4\x5d\xd5\x5d\xd6\x5d\xd7\x5d\xd8\x5d\xd9\x5d\xda\x5d\xdc\x5d\xdf\x5d\xe0\x5d\xe3\x5d\xe4\x5d\xea\x5d\xec\x5d\xed\x5d\xf0\x5d\xf5\x5d\xf6\x5d\xf8\x5d\xf9\x5d\xfa\x5d\xfb\x5d\xfc\x5d\xff\x5e\x00\x5e\x04\x5e\x07\x5e\x09\x5e\x0a\x5e\x0b\x5e\x0d\x5e\x0e\x5e\x12\x5e\x13\x5e\x17\x5e\x1e\x5e\x1f\x5e\x20\x5e\x21\x5e\x22\x5e\x23\x5e\x24\x5e\x25\x5e\x28\x5e\x29\x5e\x2a\x5e\x2b\x5e\x2c\x5e\x2f\x5e\x30\x5e\x32\x5e\x33\x5e\x34\x5e\x35\x5e\x36\x5e\x39\x5e\x3a\x5e\x3e\x5e\x3f\x5e\x40\x5e\x41\x5e\x43\x5e\x46\x5e\x47\x5e\x48\x5e\x49\x5e\x4a\x5e\x4b\x5e\x4d\x5e\x4e\x5e\x4f\x5e\x50\x5e\x51\x5e\x52\x5e\x53\x5e\x56\x5e\x57\x5e\x58\x5e\x59\x5e\x5a\x5e\x5c\x5e\x5d\x5e\x5f\x5e\x60\x5e\x63\x5e\x64\x5e\x65\x5e\x66\x5e\x67\x5e\x68\x5e\x69\x5e\x6a\x5e\x6b\x5e\x6c\x5e\x6d\x5e\x6e\x5e\x6f\x5e\x70\x5e\x71\x5e\x75\x5e\x77\x5e\x79\x5e\x7e\x5e\x81\x5e\x82\x5e\x83\x5e\x85\x5e\x88\x5e\x89\x5e\x8c\x5e\x8d\x5e\x8e\x5e\x92\x5e\x98\x00\x00\x00\x00", /* 8f00 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5e\x9b\x5e\x9d\x5e\xa1\x5e\xa2\x5e\xa3\x5e\xa4\x5e\xa8\x5e\xa9\x5e\xaa\x5e\xab\x5e\xac\x5e\xae\x5e\xaf\x5e\xb0\x5e\xb1\x5e\xb2\x5e\xb4\x5e\xba\x5e\xbb\x5e\xbc\x5e\xbd\x5e\xbf\x5e\xc0\x5e\xc1\x5e\xc2\x5e\xc3\x5e\xc4\x5e\xc5\x5e\xc6\x5e\xc7\x5e\xc8\x5e\xcb\x5e\xcc\x5e\xcd\x5e\xce\x5e\xcf\x5e\xd0\x5e\xd4\x5e\xd5\x5e\xd7\x5e\xd8\x5e\xd9\x5e\xda\x5e\xdc\x5e\xdd\x5e\xde\x5e\xdf\x5e\xe0\x5e\xe1\x5e\xe2\x5e\xe3\x5e\xe4\x5e\xe5\x5e\xe6\x5e\xe7\x5e\xe9\x5e\xeb\x5e\xec\x5e\xed\x5e\xee\x5e\xef\x5e\xf0\x5e\xf1", /* 8f80 */ "\x00\x00\x5e\xf2\x5e\xf3\x5e\xf5\x5e\xf8\x5e\xf9\x5e\xfb\x5e\xfc\x5e\xfd\x5f\x05\x5f\x06\x5f\x07\x5f\x09\x5f\x0c\x5f\x0d\x5f\x0e\x5f\x10\x5f\x12\x5f\x14\x5f\x16\x5f\x19\x5f\x1a\x5f\x1c\x5f\x1d\x5f\x1e\x5f\x21\x5f\x22\x5f\x23\x5f\x24\x5f\x28\x5f\x2b\x5f\x2c\x5f\x2e\x5f\x30\x5f\x32\x5f\x33\x5f\x34\x5f\x35\x5f\x36\x5f\x37\x5f\x38\x5f\x3b\x5f\x3d\x5f\x3e\x5f\x3f\x5f\x41\x5f\x42\x5f\x43\x5f\x44\x5f\x45\x5f\x46\x5f\x47\x5f\x48\x5f\x49\x5f\x4a\x5f\x4b\x5f\x4c\x5f\x4d\x5f\x4e\x5f\x4f\x5f\x51\x5f\x54\x5f\x59\x5f\x5a\x5f\x5b\x5f\x5c\x5f\x5e\x5f\x5f\x5f\x60\x5f\x63\x5f\x65\x5f\x67\x5f\x68\x5f\x6b\x5f\x6e\x5f\x6f\x5f\x72\x5f\x74\x5f\x75\x5f\x76\x5f\x78\x5f\x7a\x5f\x7d\x5f\x7e\x5f\x7f\x5f\x83\x5f\x86\x5f\x8d\x5f\x8e\x5f\x8f\x5f\x91\x5f\x93\x5f\x94\x5f\x96\x5f\x9a\x5f\x9b\x5f\x9d\x5f\x9e\x5f\x9f\x5f\xa0\x5f\xa2\x5f\xa3\x5f\xa4\x5f\xa5\x5f\xa6\x5f\xa7\x5f\xa9\x5f\xab\x5f\xac\x5f\xaf\x5f\xb0\x5f\xb1\x5f\xb2\x5f\xb3\x5f\xb4\x5f\xb6\x5f\xb8\x5f\xb9\x5f\xba\x5f\xbb\x5f\xbe\x5f\xbf\x5f\xc0\x5f\xc1\x5f\xc2\x5f\xc7\x00\x00\x00\x00", /* 9000 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5f\xc8\x5f\xca\x5f\xcb\x5f\xce\x5f\xd3\x5f\xd4\x5f\xd5\x5f\xda\x5f\xdb\x5f\xdc\x5f\xde\x5f\xdf\x5f\xe2\x5f\xe3\x5f\xe5\x5f\xe6\x5f\xe8\x5f\xe9\x5f\xec\x5f\xef\x5f\xf0\x5f\xf2\x5f\xf3\x5f\xf4\x5f\xf6\x5f\xf7\x5f\xf9\x5f\xfa\x5f\xfc\x60\x07\x60\x08\x60\x09\x60\x0b\x60\x0c\x60\x10\x60\x11\x60\x13\x60\x17\x60\x18\x60\x1a\x60\x1e\x60\x1f\x60\x22\x60\x23\x60\x24\x60\x2c\x60\x2d\x60\x2e\x60\x30\x60\x31\x60\x32\x60\x33\x60\x34\x60\x36\x60\x37\x60\x38\x60\x39\x60\x3a\x60\x3d\x60\x3e\x60\x40\x60\x44\x60\x45", /* 9080 */ "\x00\x00\x60\x46\x60\x47\x60\x48\x60\x49\x60\x4a\x60\x4c\x60\x4e\x60\x4f\x60\x51\x60\x53\x60\x54\x60\x56\x60\x57\x60\x58\x60\x5b\x60\x5c\x60\x5e\x60\x5f\x60\x60\x60\x61\x60\x65\x60\x66\x60\x6e\x60\x71\x60\x72\x60\x74\x60\x75\x60\x77\x60\x7e\x60\x80\x60\x81\x60\x82\x60\x85\x60\x86\x60\x87\x60\x88\x60\x8a\x60\x8b\x60\x8e\x60\x8f\x60\x90\x60\x91\x60\x93\x60\x95\x60\x97\x60\x98\x60\x99\x60\x9c\x60\x9e\x60\xa1\x60\xa2\x60\xa4\x60\xa5\x60\xa7\x60\xa9\x60\xaa\x60\xae\x60\xb0\x60\xb3\x60\xb5\x60\xb6\x60\xb7\x60\xb9\x60\xba\x60\xbd\x60\xbe\x60\xbf\x60\xc0\x60\xc1\x60\xc2\x60\xc3\x60\xc4\x60\xc7\x60\xc8\x60\xc9\x60\xcc\x60\xcd\x60\xce\x60\xcf\x60\xd0\x60\xd2\x60\xd3\x60\xd4\x60\xd6\x60\xd7\x60\xd9\x60\xdb\x60\xde\x60\xe1\x60\xe2\x60\xe3\x60\xe4\x60\xe5\x60\xea\x60\xf1\x60\xf2\x60\xf5\x60\xf7\x60\xf8\x60\xfb\x60\xfc\x60\xfd\x60\xfe\x60\xff\x61\x02\x61\x03\x61\x04\x61\x05\x61\x07\x61\x0a\x61\x0b\x61\x0c\x61\x10\x61\x11\x61\x12\x61\x13\x61\x14\x61\x16\x61\x17\x61\x18\x61\x19\x61\x1b\x61\x1c\x61\x1d\x61\x1e\x00\x00\x00\x00", /* 9100 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x61\x21\x61\x22\x61\x25\x61\x28\x61\x29\x61\x2a\x61\x2c\x61\x2d\x61\x2e\x61\x2f\x61\x30\x61\x31\x61\x32\x61\x33\x61\x34\x61\x35\x61\x36\x61\x37\x61\x38\x61\x39\x61\x3a\x61\x3b\x61\x3c\x61\x3d\x61\x3e\x61\x40\x61\x41\x61\x42\x61\x43\x61\x44\x61\x45\x61\x46\x61\x47\x61\x49\x61\x4b\x61\x4d\x61\x4f\x61\x50\x61\x52\x61\x53\x61\x54\x61\x56\x61\x57\x61\x58\x61\x59\x61\x5a\x61\x5b\x61\x5c\x61\x5e\x61\x5f\x61\x60\x61\x61\x61\x63\x61\x64\x61\x65\x61\x66\x61\x69\x61\x6a\x61\x6b\x61\x6c\x61\x6d\x61\x6e\x61\x6f", /* 9180 */ "\x00\x00\x61\x71\x61\x72\x61\x73\x61\x74\x61\x76\x61\x78\x61\x79\x61\x7a\x61\x7b\x61\x7c\x61\x7d\x61\x7e\x61\x7f\x61\x80\x61\x81\x61\x82\x61\x83\x61\x84\x61\x85\x61\x86\x61\x87\x61\x88\x61\x89\x61\x8a\x61\x8c\x61\x8d\x61\x8f\x61\x90\x61\x91\x61\x92\x61\x93\x61\x95\x61\x96\x61\x97\x61\x98\x61\x99\x61\x9a\x61\x9b\x61\x9c\x61\x9e\x61\x9f\x61\xa0\x61\xa1\x61\xa2\x61\xa3\x61\xa4\x61\xa5\x61\xa6\x61\xaa\x61\xab\x61\xad\x61\xae\x61\xaf\x61\xb0\x61\xb1\x61\xb2\x61\xb3\x61\xb4\x61\xb5\x61\xb6\x61\xb8\x61\xb9\x61\xba\x61\xbb\x61\xbc\x61\xbd\x61\xbf\x61\xc0\x61\xc1\x61\xc3\x61\xc4\x61\xc5\x61\xc6\x61\xc7\x61\xc9\x61\xcc\x61\xcd\x61\xce\x61\xcf\x61\xd0\x61\xd3\x61\xd5\x61\xd6\x61\xd7\x61\xd8\x61\xd9\x61\xda\x61\xdb\x61\xdc\x61\xdd\x61\xde\x61\xdf\x61\xe0\x61\xe1\x61\xe2\x61\xe3\x61\xe4\x61\xe5\x61\xe7\x61\xe8\x61\xe9\x61\xea\x61\xeb\x61\xec\x61\xed\x61\xee\x61\xef\x61\xf0\x61\xf1\x61\xf2\x61\xf3\x61\xf4\x61\xf6\x61\xf7\x61\xf8\x61\xf9\x61\xfa\x61\xfb\x61\xfc\x61\xfd\x61\xfe\x62\x00\x62\x01\x62\x02\x62\x03\x00\x00\x00\x00", /* 9200 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x62\x04\x62\x05\x62\x07\x62\x09\x62\x13\x62\x14\x62\x19\x62\x1c\x62\x1d\x62\x1e\x62\x20\x62\x23\x62\x26\x62\x27\x62\x28\x62\x29\x62\x2b\x62\x2d\x62\x2f\x62\x30\x62\x31\x62\x32\x62\x35\x62\x36\x62\x38\x62\x39\x62\x3a\x62\x3b\x62\x3c\x62\x42\x62\x44\x62\x45\x62\x46\x62\x4a\x62\x4f\x62\x50\x62\x55\x62\x56\x62\x57\x62\x59\x62\x5a\x62\x5c\x62\x5d\x62\x5e\x62\x5f\x62\x60\x62\x61\x62\x62\x62\x64\x62\x65\x62\x68\x62\x71\x62\x72\x62\x74\x62\x75\x62\x77\x62\x78\x62\x7a\x62\x7b\x62\x7d\x62\x81\x62\x82\x62\x83", /* 9280 */ "\x00\x00\x62\x85\x62\x86\x62\x87\x62\x88\x62\x8b\x62\x8c\x62\x8d\x62\x8e\x62\x8f\x62\x90\x62\x94\x62\x99\x62\x9c\x62\x9d\x62\x9e\x62\xa3\x62\xa6\x62\xa7\x62\xa9\x62\xaa\x62\xad\x62\xae\x62\xaf\x62\xb0\x62\xb2\x62\xb3\x62\xb4\x62\xb6\x62\xb7\x62\xb8\x62\xba\x62\xbe\x62\xc0\x62\xc1\x62\xc3\x62\xcb\x62\xcf\x62\xd1\x62\xd5\x62\xdd\x62\xde\x62\xe0\x62\xe1\x62\xe4\x62\xea\x62\xeb\x62\xf0\x62\xf2\x62\xf5\x62\xf8\x62\xf9\x62\xfa\x62\xfb\x63\x00\x63\x03\x63\x04\x63\x05\x63\x06\x63\x0a\x63\x0b\x63\x0c\x63\x0d\x63\x0f\x63\x10\x63\x12\x63\x13\x63\x14\x63\x15\x63\x17\x63\x18\x63\x19\x63\x1c\x63\x26\x63\x27\x63\x29\x63\x2c\x63\x2d\x63\x2e\x63\x30\x63\x31\x63\x33\x63\x34\x63\x35\x63\x36\x63\x37\x63\x38\x63\x3b\x63\x3c\x63\x3e\x63\x3f\x63\x40\x63\x41\x63\x44\x63\x47\x63\x48\x63\x4a\x63\x51\x63\x52\x63\x53\x63\x54\x63\x56\x63\x57\x63\x58\x63\x59\x63\x5a\x63\x5b\x63\x5c\x63\x5d\x63\x60\x63\x64\x63\x65\x63\x66\x63\x68\x63\x6a\x63\x6b\x63\x6c\x63\x6f\x63\x70\x63\x72\x63\x73\x63\x74\x63\x75\x63\x78\x63\x79\x63\x7c\x00\x00\x00\x00", /* 9300 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x63\x7d\x63\x7e\x63\x7f\x63\x81\x63\x83\x63\x84\x63\x85\x63\x86\x63\x8b\x63\x8d\x63\x91\x63\x93\x63\x94\x63\x95\x63\x97\x63\x99\x63\x9a\x63\x9b\x63\x9c\x63\x9d\x63\x9e\x63\x9f\x63\xa1\x63\xa4\x63\xa6\x63\xab\x63\xaf\x63\xb1\x63\xb2\x63\xb5\x63\xb6\x63\xb9\x63\xbb\x63\xbd\x63\xbf\x63\xc0\x63\xc1\x63\xc2\x63\xc3\x63\xc5\x63\xc7\x63\xc8\x63\xca\x63\xcb\x63\xcc\x63\xd1\x63\xd3\x63\xd4\x63\xd5\x63\xd7\x63\xd8\x63\xd9\x63\xda\x63\xdb\x63\xdc\x63\xdd\x63\xdf\x63\xe2\x63\xe4\x63\xe5\x63\xe6\x63\xe7\x63\xe8", /* 9380 */ "\x00\x00\x63\xeb\x63\xec\x63\xee\x63\xef\x63\xf0\x63\xf1\x63\xf3\x63\xf5\x63\xf7\x63\xf9\x63\xfa\x63\xfb\x63\xfc\x63\xfe\x64\x03\x64\x04\x64\x06\x64\x07\x64\x08\x64\x09\x64\x0a\x64\x0d\x64\x0e\x64\x11\x64\x12\x64\x15\x64\x16\x64\x17\x64\x18\x64\x19\x64\x1a\x64\x1d\x64\x1f\x64\x22\x64\x23\x64\x24\x64\x25\x64\x27\x64\x28\x64\x29\x64\x2b\x64\x2e\x64\x2f\x64\x30\x64\x31\x64\x32\x64\x33\x64\x35\x64\x36\x64\x37\x64\x38\x64\x39\x64\x3b\x64\x3c\x64\x3e\x64\x40\x64\x42\x64\x43\x64\x49\x64\x4b\x64\x4c\x64\x4d\x64\x4e\x64\x4f\x64\x50\x64\x51\x64\x53\x64\x55\x64\x56\x64\x57\x64\x59\x64\x5a\x64\x5b\x64\x5c\x64\x5d\x64\x5f\x64\x60\x64\x61\x64\x62\x64\x63\x64\x64\x64\x65\x64\x66\x64\x68\x64\x6a\x64\x6b\x64\x6c\x64\x6e\x64\x6f\x64\x70\x64\x71\x64\x72\x64\x73\x64\x74\x64\x75\x64\x76\x64\x77\x64\x7b\x64\x7c\x64\x7d\x64\x7e\x64\x7f\x64\x80\x64\x81\x64\x83\x64\x86\x64\x88\x64\x89\x64\x8a\x64\x8b\x64\x8c\x64\x8d\x64\x8e\x64\x8f\x64\x90\x64\x93\x64\x94\x64\x97\x64\x98\x64\x9a\x64\x9b\x64\x9c\x64\x9d\x64\x9f\x64\xa0\x00\x00\x00\x00", /* 9400 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x64\xa1\x64\xa2\x64\xa3\x64\xa5\x64\xa6\x64\xa7\x64\xa8\x64\xaa\x64\xab\x64\xaf\x64\xb1\x64\xb2\x64\xb3\x64\xb4\x64\xb6\x64\xb9\x64\xbb\x64\xbd\x64\xbe\x64\xbf\x64\xc1\x64\xc3\x64\xc4\x64\xc6\x64\xc7\x64\xc8\x64\xc9\x64\xca\x64\xcb\x64\xcc\x64\xcf\x64\xd1\x64\xd3\x64\xd4\x64\xd5\x64\xd6\x64\xd9\x64\xda\x64\xdb\x64\xdc\x64\xdd\x64\xdf\x64\xe0\x64\xe1\x64\xe3\x64\xe5\x64\xe7\x64\xe8\x64\xe9\x64\xea\x64\xeb\x64\xec\x64\xed\x64\xee\x64\xef\x64\xf0\x64\xf1\x64\xf2\x64\xf3\x64\xf4\x64\xf5\x64\xf6\x64\xf7", /* 9480 */ "\x00\x00\x64\xf8\x64\xf9\x64\xfa\x64\xfb\x64\xfc\x64\xfd\x64\xfe\x64\xff\x65\x01\x65\x02\x65\x03\x65\x04\x65\x05\x65\x06\x65\x07\x65\x08\x65\x0a\x65\x0b\x65\x0c\x65\x0d\x65\x0e\x65\x0f\x65\x10\x65\x11\x65\x13\x65\x14\x65\x15\x65\x16\x65\x17\x65\x19\x65\x1a\x65\x1b\x65\x1c\x65\x1d\x65\x1e\x65\x1f\x65\x20\x65\x21\x65\x22\x65\x23\x65\x24\x65\x26\x65\x27\x65\x28\x65\x29\x65\x2a\x65\x2c\x65\x2d\x65\x30\x65\x31\x65\x32\x65\x33\x65\x37\x65\x3a\x65\x3c\x65\x3d\x65\x40\x65\x41\x65\x42\x65\x43\x65\x44\x65\x46\x65\x47\x65\x4a\x65\x4b\x65\x4d\x65\x4e\x65\x50\x65\x52\x65\x53\x65\x54\x65\x57\x65\x58\x65\x5a\x65\x5c\x65\x5f\x65\x60\x65\x61\x65\x64\x65\x65\x65\x67\x65\x68\x65\x69\x65\x6a\x65\x6d\x65\x6e\x65\x6f\x65\x71\x65\x73\x65\x75\x65\x76\x65\x78\x65\x79\x65\x7a\x65\x7b\x65\x7c\x65\x7d\x65\x7e\x65\x7f\x65\x80\x65\x81\x65\x82\x65\x83\x65\x84\x65\x85\x65\x86\x65\x88\x65\x89\x65\x8a\x65\x8d\x65\x8e\x65\x8f\x65\x92\x65\x94\x65\x95\x65\x96\x65\x98\x65\x9a\x65\x9d\x65\x9e\x65\xa0\x65\xa2\x65\xa3\x65\xa6\x65\xa8\x00\x00\x00\x00", /* 9500 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x65\xaa\x65\xac\x65\xae\x65\xb1\x65\xb2\x65\xb3\x65\xb4\x65\xb5\x65\xb6\x65\xb7\x65\xb8\x65\xba\x65\xbb\x65\xbe\x65\xbf\x65\xc0\x65\xc2\x65\xc7\x65\xc8\x65\xc9\x65\xca\x65\xcd\x65\xd0\x65\xd1\x65\xd3\x65\xd4\x65\xd5\x65\xd8\x65\xd9\x65\xda\x65\xdb\x65\xdc\x65\xdd\x65\xde\x65\xdf\x65\xe1\x65\xe3\x65\xe4\x65\xea\x65\xeb\x65\xf2\x65\xf3\x65\xf4\x65\xf5\x65\xf8\x65\xf9\x65\xfb\x65\xfc\x65\xfd\x65\xfe\x65\xff\x66\x01\x66\x04\x66\x05\x66\x07\x66\x08\x66\x09\x66\x0b\x66\x0d\x66\x10\x66\x11\x66\x12\x66\x16", /* 9580 */ "\x00\x00\x66\x17\x66\x18\x66\x1a\x66\x1b\x66\x1c\x66\x1e\x66\x21\x66\x22\x66\x23\x66\x24\x66\x26\x66\x29\x66\x2a\x66\x2b\x66\x2c\x66\x2e\x66\x30\x66\x32\x66\x33\x66\x37\x66\x38\x66\x39\x66\x3a\x66\x3b\x66\x3d\x66\x3f\x66\x40\x66\x42\x66\x44\x66\x45\x66\x46\x66\x47\x66\x48\x66\x49\x66\x4a\x66\x4d\x66\x4e\x66\x50\x66\x51\x66\x58\x66\x59\x66\x5b\x66\x5c\x66\x5d\x66\x5e\x66\x60\x66\x62\x66\x63\x66\x65\x66\x67\x66\x69\x66\x6a\x66\x6b\x66\x6c\x66\x6d\x66\x71\x66\x72\x66\x73\x66\x75\x66\x78\x66\x79\x66\x7b\x66\x7c\x66\x7d\x66\x7f\x66\x80\x66\x81\x66\x83\x66\x85\x66\x86\x66\x88\x66\x89\x66\x8a\x66\x8b\x66\x8d\x66\x8e\x66\x8f\x66\x90\x66\x92\x66\x93\x66\x94\x66\x95\x66\x98\x66\x99\x66\x9a\x66\x9b\x66\x9c\x66\x9e\x66\x9f\x66\xa0\x66\xa1\x66\xa2\x66\xa3\x66\xa4\x66\xa5\x66\xa6\x66\xa9\x66\xaa\x66\xab\x66\xac\x66\xad\x66\xaf\x66\xb0\x66\xb1\x66\xb2\x66\xb3\x66\xb5\x66\xb6\x66\xb7\x66\xb8\x66\xba\x66\xbb\x66\xbc\x66\xbd\x66\xbf\x66\xc0\x66\xc1\x66\xc2\x66\xc3\x66\xc4\x66\xc5\x66\xc6\x66\xc7\x66\xc8\x66\xc9\x00\x00\x00\x00", /* 9600 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x66\xca\x66\xcb\x66\xcc\x66\xcd\x66\xce\x66\xcf\x66\xd0\x66\xd1\x66\xd2\x66\xd3\x66\xd4\x66\xd5\x66\xd6\x66\xd7\x66\xd8\x66\xda\x66\xde\x66\xdf\x66\xe0\x66\xe1\x66\xe2\x66\xe3\x66\xe4\x66\xe5\x66\xe7\x66\xe8\x66\xea\x66\xeb\x66\xec\x66\xed\x66\xee\x66\xef\x66\xf1\x66\xf5\x66\xf6\x66\xf8\x66\xfa\x66\xfb\x66\xfd\x67\x01\x67\x02\x67\x03\x67\x04\x67\x05\x67\x06\x67\x07\x67\x0c\x67\x0e\x67\x0f\x67\x11\x67\x12\x67\x13\x67\x16\x67\x18\x67\x19\x67\x1a\x67\x1c\x67\x1e\x67\x20\x67\x21\x67\x22\x67\x23\x67\x24", /* 9680 */ "\x00\x00\x67\x25\x67\x27\x67\x29\x67\x2e\x67\x30\x67\x32\x67\x33\x67\x36\x67\x37\x67\x38\x67\x39\x67\x3b\x67\x3c\x67\x3e\x67\x3f\x67\x41\x67\x44\x67\x45\x67\x47\x67\x4a\x67\x4b\x67\x4d\x67\x52\x67\x54\x67\x55\x67\x57\x67\x58\x67\x59\x67\x5a\x67\x5b\x67\x5d\x67\x62\x67\x63\x67\x64\x67\x66\x67\x67\x67\x6b\x67\x6c\x67\x6e\x67\x71\x67\x74\x67\x76\x67\x78\x67\x79\x67\x7a\x67\x7b\x67\x7d\x67\x80\x67\x82\x67\x83\x67\x85\x67\x86\x67\x88\x67\x8a\x67\x8c\x67\x8d\x67\x8e\x67\x8f\x67\x91\x67\x92\x67\x93\x67\x94\x67\x96\x67\x99\x67\x9b\x67\x9f\x67\xa0\x67\xa1\x67\xa4\x67\xa6\x67\xa9\x67\xac\x67\xae\x67\xb1\x67\xb2\x67\xb4\x67\xb9\x67\xba\x67\xbb\x67\xbc\x67\xbd\x67\xbe\x67\xbf\x67\xc0\x67\xc2\x67\xc5\x67\xc6\x67\xc7\x67\xc8\x67\xc9\x67\xca\x67\xcb\x67\xcc\x67\xcd\x67\xce\x67\xd5\x67\xd6\x67\xd7\x67\xdb\x67\xdf\x67\xe1\x67\xe3\x67\xe4\x67\xe6\x67\xe7\x67\xe8\x67\xea\x67\xeb\x67\xed\x67\xee\x67\xf2\x67\xf5\x67\xf6\x67\xf7\x67\xf8\x67\xf9\x67\xfa\x67\xfb\x67\xfc\x67\xfe\x68\x01\x68\x02\x68\x03\x68\x04\x68\x06\x00\x00\x00\x00", /* 9700 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x68\x0d\x68\x10\x68\x12\x68\x14\x68\x15\x68\x18\x68\x19\x68\x1a\x68\x1b\x68\x1c\x68\x1e\x68\x1f\x68\x20\x68\x22\x68\x23\x68\x24\x68\x25\x68\x26\x68\x27\x68\x28\x68\x2b\x68\x2c\x68\x2d\x68\x2e\x68\x2f\x68\x30\x68\x31\x68\x34\x68\x35\x68\x36\x68\x3a\x68\x3b\x68\x3f\x68\x47\x68\x4b\x68\x4d\x68\x4f\x68\x52\x68\x56\x68\x57\x68\x58\x68\x59\x68\x5a\x68\x5b\x68\x5c\x68\x5d\x68\x5e\x68\x5f\x68\x6a\x68\x6c\x68\x6d\x68\x6e\x68\x6f\x68\x70\x68\x71\x68\x72\x68\x73\x68\x75\x68\x78\x68\x79\x68\x7a\x68\x7b\x68\x7c", /* 9780 */ "\x00\x00\x68\x7d\x68\x7e\x68\x7f\x68\x80\x68\x82\x68\x84\x68\x87\x68\x88\x68\x89\x68\x8a\x68\x8b\x68\x8c\x68\x8d\x68\x8e\x68\x90\x68\x91\x68\x92\x68\x94\x68\x95\x68\x96\x68\x98\x68\x99\x68\x9a\x68\x9b\x68\x9c\x68\x9d\x68\x9e\x68\x9f\x68\xa0\x68\xa1\x68\xa3\x68\xa4\x68\xa5\x68\xa9\x68\xaa\x68\xab\x68\xac\x68\xae\x68\xb1\x68\xb2\x68\xb4\x68\xb6\x68\xb7\x68\xb8\x68\xb9\x68\xba\x68\xbb\x68\xbc\x68\xbd\x68\xbe\x68\xbf\x68\xc1\x68\xc3\x68\xc4\x68\xc5\x68\xc6\x68\xc7\x68\xc8\x68\xca\x68\xcc\x68\xce\x68\xcf\x68\xd0\x68\xd1\x68\xd3\x68\xd4\x68\xd6\x68\xd7\x68\xd9\x68\xdb\x68\xdc\x68\xdd\x68\xde\x68\xdf\x68\xe1\x68\xe2\x68\xe4\x68\xe5\x68\xe6\x68\xe7\x68\xe8\x68\xe9\x68\xea\x68\xeb\x68\xec\x68\xed\x68\xef\x68\xf2\x68\xf3\x68\xf4\x68\xf6\x68\xf7\x68\xf8\x68\xfb\x68\xfd\x68\xfe\x68\xff\x69\x00\x69\x02\x69\x03\x69\x04\x69\x06\x69\x07\x69\x08\x69\x09\x69\x0a\x69\x0c\x69\x0f\x69\x11\x69\x13\x69\x14\x69\x15\x69\x16\x69\x17\x69\x18\x69\x19\x69\x1a\x69\x1b\x69\x1c\x69\x1d\x69\x1e\x69\x21\x69\x22\x69\x23\x69\x25\x00\x00\x00\x00", /* 9800 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x69\x26\x69\x27\x69\x28\x69\x29\x69\x2a\x69\x2b\x69\x2c\x69\x2e\x69\x2f\x69\x31\x69\x32\x69\x33\x69\x35\x69\x36\x69\x37\x69\x38\x69\x3a\x69\x3b\x69\x3c\x69\x3e\x69\x40\x69\x41\x69\x43\x69\x44\x69\x45\x69\x46\x69\x47\x69\x48\x69\x49\x69\x4a\x69\x4b\x69\x4c\x69\x4d\x69\x4e\x69\x4f\x69\x50\x69\x51\x69\x52\x69\x53\x69\x55\x69\x56\x69\x58\x69\x59\x69\x5b\x69\x5c\x69\x5f\x69\x61\x69\x62\x69\x64\x69\x65\x69\x67\x69\x68\x69\x69\x69\x6a\x69\x6c\x69\x6d\x69\x6f\x69\x70\x69\x72\x69\x73\x69\x74\x69\x75\x69\x76", /* 9880 */ "\x00\x00\x69\x7a\x69\x7b\x69\x7d\x69\x7e\x69\x7f\x69\x81\x69\x83\x69\x85\x69\x8a\x69\x8b\x69\x8c\x69\x8e\x69\x8f\x69\x90\x69\x91\x69\x92\x69\x93\x69\x96\x69\x97\x69\x99\x69\x9a\x69\x9d\x69\x9e\x69\x9f\x69\xa0\x69\xa1\x69\xa2\x69\xa3\x69\xa4\x69\xa5\x69\xa6\x69\xa9\x69\xaa\x69\xac\x69\xae\x69\xaf\x69\xb0\x69\xb2\x69\xb3\x69\xb5\x69\xb6\x69\xb8\x69\xb9\x69\xba\x69\xbc\x69\xbd\x69\xbe\x69\xbf\x69\xc0\x69\xc2\x69\xc3\x69\xc4\x69\xc5\x69\xc6\x69\xc7\x69\xc8\x69\xc9\x69\xcb\x69\xcd\x69\xcf\x69\xd1\x69\xd2\x69\xd3\x69\xd5\x69\xd6\x69\xd7\x69\xd8\x69\xd9\x69\xda\x69\xdc\x69\xdd\x69\xde\x69\xe1\x69\xe2\x69\xe3\x69\xe4\x69\xe5\x69\xe6\x69\xe7\x69\xe8\x69\xe9\x69\xea\x69\xeb\x69\xec\x69\xee\x69\xef\x69\xf0\x69\xf1\x69\xf3\x69\xf4\x69\xf5\x69\xf6\x69\xf7\x69\xf8\x69\xf9\x69\xfa\x69\xfb\x69\xfc\x69\xfe\x6a\x00\x6a\x01\x6a\x02\x6a\x03\x6a\x04\x6a\x05\x6a\x06\x6a\x07\x6a\x08\x6a\x09\x6a\x0b\x6a\x0c\x6a\x0d\x6a\x0e\x6a\x0f\x6a\x10\x6a\x11\x6a\x12\x6a\x13\x6a\x14\x6a\x15\x6a\x16\x6a\x19\x6a\x1a\x6a\x1b\x6a\x1c\x00\x00\x00\x00", /* 9900 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x1d\x6a\x1e\x6a\x20\x6a\x22\x6a\x23\x6a\x24\x6a\x25\x6a\x26\x6a\x27\x6a\x29\x6a\x2b\x6a\x2c\x6a\x2d\x6a\x2e\x6a\x30\x6a\x32\x6a\x33\x6a\x34\x6a\x36\x6a\x37\x6a\x38\x6a\x39\x6a\x3a\x6a\x3b\x6a\x3c\x6a\x3f\x6a\x40\x6a\x41\x6a\x42\x6a\x43\x6a\x45\x6a\x46\x6a\x48\x6a\x49\x6a\x4a\x6a\x4b\x6a\x4c\x6a\x4d\x6a\x4e\x6a\x4f\x6a\x51\x6a\x52\x6a\x53\x6a\x54\x6a\x55\x6a\x56\x6a\x57\x6a\x5a\x6a\x5c\x6a\x5d\x6a\x5e\x6a\x5f\x6a\x60\x6a\x62\x6a\x63\x6a\x64\x6a\x66\x6a\x67\x6a\x68\x6a\x69\x6a\x6a\x6a\x6b\x6a\x6c", /* 9980 */ "\x00\x00\x6a\x6d\x6a\x6e\x6a\x6f\x6a\x70\x6a\x72\x6a\x73\x6a\x74\x6a\x75\x6a\x76\x6a\x77\x6a\x78\x6a\x7a\x6a\x7b\x6a\x7d\x6a\x7e\x6a\x7f\x6a\x81\x6a\x82\x6a\x83\x6a\x85\x6a\x86\x6a\x87\x6a\x88\x6a\x89\x6a\x8a\x6a\x8b\x6a\x8c\x6a\x8d\x6a\x8f\x6a\x92\x6a\x93\x6a\x94\x6a\x95\x6a\x96\x6a\x98\x6a\x99\x6a\x9a\x6a\x9b\x6a\x9c\x6a\x9d\x6a\x9e\x6a\x9f\x6a\xa1\x6a\xa2\x6a\xa3\x6a\xa4\x6a\xa5\x6a\xa6\x6a\xa7\x6a\xa8\x6a\xaa\x6a\xad\x6a\xae\x6a\xaf\x6a\xb0\x6a\xb1\x6a\xb2\x6a\xb3\x6a\xb4\x6a\xb5\x6a\xb6\x6a\xb7\x6a\xb8\x6a\xb9\x6a\xba\x6a\xbb\x6a\xbc\x6a\xbd\x6a\xbe\x6a\xbf\x6a\xc0\x6a\xc1\x6a\xc2\x6a\xc3\x6a\xc4\x6a\xc5\x6a\xc6\x6a\xc7\x6a\xc8\x6a\xc9\x6a\xca\x6a\xcb\x6a\xcc\x6a\xcd\x6a\xce\x6a\xcf\x6a\xd0\x6a\xd1\x6a\xd2\x6a\xd3\x6a\xd4\x6a\xd5\x6a\xd6\x6a\xd7\x6a\xd8\x6a\xd9\x6a\xda\x6a\xdb\x6a\xdc\x6a\xdd\x6a\xde\x6a\xdf\x6a\xe0\x6a\xe1\x6a\xe2\x6a\xe3\x6a\xe4\x6a\xe5\x6a\xe6\x6a\xe7\x6a\xe8\x6a\xe9\x6a\xea\x6a\xeb\x6a\xec\x6a\xed\x6a\xee\x6a\xef\x6a\xf0\x6a\xf1\x6a\xf2\x6a\xf3\x6a\xf4\x6a\xf5\x6a\xf6\x00\x00\x00\x00", /* 9a00 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\xf7\x6a\xf8\x6a\xf9\x6a\xfa\x6a\xfb\x6a\xfc\x6a\xfd\x6a\xfe\x6a\xff\x6b\x00\x6b\x01\x6b\x02\x6b\x03\x6b\x04\x6b\x05\x6b\x06\x6b\x07\x6b\x08\x6b\x09\x6b\x0a\x6b\x0b\x6b\x0c\x6b\x0d\x6b\x0e\x6b\x0f\x6b\x10\x6b\x11\x6b\x12\x6b\x13\x6b\x14\x6b\x15\x6b\x16\x6b\x17\x6b\x18\x6b\x19\x6b\x1a\x6b\x1b\x6b\x1c\x6b\x1d\x6b\x1e\x6b\x1f\x6b\x25\x6b\x26\x6b\x28\x6b\x29\x6b\x2a\x6b\x2b\x6b\x2c\x6b\x2d\x6b\x2e\x6b\x2f\x6b\x30\x6b\x31\x6b\x33\x6b\x34\x6b\x35\x6b\x36\x6b\x38\x6b\x3b\x6b\x3c\x6b\x3d\x6b\x3f\x6b\x40", /* 9a80 */ "\x00\x00\x6b\x41\x6b\x42\x6b\x44\x6b\x45\x6b\x48\x6b\x4a\x6b\x4b\x6b\x4d\x6b\x4e\x6b\x4f\x6b\x50\x6b\x51\x6b\x52\x6b\x53\x6b\x54\x6b\x55\x6b\x56\x6b\x57\x6b\x58\x6b\x5a\x6b\x5b\x6b\x5c\x6b\x5d\x6b\x5e\x6b\x5f\x6b\x60\x6b\x61\x6b\x68\x6b\x69\x6b\x6b\x6b\x6c\x6b\x6d\x6b\x6e\x6b\x6f\x6b\x70\x6b\x71\x6b\x72\x6b\x73\x6b\x74\x6b\x75\x6b\x76\x6b\x77\x6b\x78\x6b\x7a\x6b\x7d\x6b\x7e\x6b\x7f\x6b\x80\x6b\x85\x6b\x88\x6b\x8c\x6b\x8e\x6b\x8f\x6b\x90\x6b\x91\x6b\x94\x6b\x95\x6b\x97\x6b\x98\x6b\x99\x6b\x9c\x6b\x9d\x6b\x9e\x6b\x9f\x6b\xa0\x6b\xa2\x6b\xa3\x6b\xa4\x6b\xa5\x6b\xa6\x6b\xa7\x6b\xa8\x6b\xa9\x6b\xab\x6b\xac\x6b\xad\x6b\xae\x6b\xaf\x6b\xb0\x6b\xb1\x6b\xb2\x6b\xb6\x6b\xb8\x6b\xb9\x6b\xba\x6b\xbb\x6b\xbc\x6b\xbd\x6b\xbe\x6b\xc0\x6b\xc3\x6b\xc4\x6b\xc6\x6b\xc7\x6b\xc8\x6b\xc9\x6b\xca\x6b\xcc\x6b\xce\x6b\xd0\x6b\xd1\x6b\xd8\x6b\xda\x6b\xdc\x6b\xdd\x6b\xde\x6b\xdf\x6b\xe0\x6b\xe2\x6b\xe3\x6b\xe4\x6b\xe5\x6b\xe6\x6b\xe7\x6b\xe8\x6b\xe9\x6b\xec\x6b\xed\x6b\xee\x6b\xf0\x6b\xf1\x6b\xf2\x6b\xf4\x6b\xf6\x6b\xf7\x00\x00\x00\x00", /* 9b00 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6b\xf8\x6b\xfa\x6b\xfb\x6b\xfc\x6b\xfe\x6b\xff\x6c\x00\x6c\x01\x6c\x02\x6c\x03\x6c\x04\x6c\x08\x6c\x09\x6c\x0a\x6c\x0b\x6c\x0c\x6c\x0e\x6c\x12\x6c\x17\x6c\x1c\x6c\x1d\x6c\x1e\x6c\x20\x6c\x23\x6c\x25\x6c\x2b\x6c\x2c\x6c\x2d\x6c\x31\x6c\x33\x6c\x36\x6c\x37\x6c\x39\x6c\x3a\x6c\x3b\x6c\x3c\x6c\x3e\x6c\x3f\x6c\x43\x6c\x44\x6c\x45\x6c\x48\x6c\x4b\x6c\x4c\x6c\x4d\x6c\x4e\x6c\x4f\x6c\x51\x6c\x52\x6c\x53\x6c\x56\x6c\x58\x6c\x59\x6c\x5a\x6c\x62\x6c\x63\x6c\x65\x6c\x66\x6c\x67\x6c\x6b\x6c\x6c\x6c\x6d\x6c\x6e", /* 9b80 */ "\x00\x00\x6c\x6f\x6c\x71\x6c\x73\x6c\x75\x6c\x77\x6c\x78\x6c\x7a\x6c\x7b\x6c\x7c\x6c\x7f\x6c\x80\x6c\x84\x6c\x87\x6c\x8a\x6c\x8b\x6c\x8d\x6c\x8e\x6c\x91\x6c\x92\x6c\x95\x6c\x96\x6c\x97\x6c\x98\x6c\x9a\x6c\x9c\x6c\x9d\x6c\x9e\x6c\xa0\x6c\xa2\x6c\xa8\x6c\xac\x6c\xaf\x6c\xb0\x6c\xb4\x6c\xb5\x6c\xb6\x6c\xb7\x6c\xba\x6c\xc0\x6c\xc1\x6c\xc2\x6c\xc3\x6c\xc6\x6c\xc7\x6c\xc8\x6c\xcb\x6c\xcd\x6c\xce\x6c\xcf\x6c\xd1\x6c\xd2\x6c\xd8\x6c\xd9\x6c\xda\x6c\xdc\x6c\xdd\x6c\xdf\x6c\xe4\x6c\xe6\x6c\xe7\x6c\xe9\x6c\xec\x6c\xed\x6c\xf2\x6c\xf4\x6c\xf9\x6c\xff\x6d\x00\x6d\x02\x6d\x03\x6d\x05\x6d\x06\x6d\x08\x6d\x09\x6d\x0a\x6d\x0d\x6d\x0f\x6d\x10\x6d\x11\x6d\x13\x6d\x14\x6d\x15\x6d\x16\x6d\x18\x6d\x1c\x6d\x1d\x6d\x1f\x6d\x20\x6d\x21\x6d\x22\x6d\x23\x6d\x24\x6d\x26\x6d\x28\x6d\x29\x6d\x2c\x6d\x2d\x6d\x2f\x6d\x30\x6d\x34\x6d\x36\x6d\x37\x6d\x38\x6d\x3a\x6d\x3f\x6d\x40\x6d\x42\x6d\x44\x6d\x49\x6d\x4c\x6d\x50\x6d\x55\x6d\x56\x6d\x57\x6d\x58\x6d\x5b\x6d\x5d\x6d\x5f\x6d\x61\x6d\x62\x6d\x64\x6d\x65\x6d\x67\x6d\x68\x6d\x6b\x00\x00\x00\x00", /* 9c00 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6d\x6c\x6d\x6d\x6d\x70\x6d\x71\x6d\x72\x6d\x73\x6d\x75\x6d\x76\x6d\x79\x6d\x7a\x6d\x7b\x6d\x7d\x6d\x7e\x6d\x7f\x6d\x80\x6d\x81\x6d\x83\x6d\x84\x6d\x86\x6d\x87\x6d\x8a\x6d\x8b\x6d\x8d\x6d\x8f\x6d\x90\x6d\x92\x6d\x96\x6d\x97\x6d\x98\x6d\x99\x6d\x9a\x6d\x9c\x6d\xa2\x6d\xa5\x6d\xac\x6d\xad\x6d\xb0\x6d\xb1\x6d\xb3\x6d\xb4\x6d\xb6\x6d\xb7\x6d\xb9\x6d\xba\x6d\xbb\x6d\xbc\x6d\xbd\x6d\xbe\x6d\xc1\x6d\xc2\x6d\xc3\x6d\xc8\x6d\xc9\x6d\xca\x6d\xcd\x6d\xce\x6d\xcf\x6d\xd0\x6d\xd2\x6d\xd3\x6d\xd4\x6d\xd5\x6d\xd7", /* 9c80 */ "\x00\x00\x6d\xda\x6d\xdb\x6d\xdc\x6d\xdf\x6d\xe2\x6d\xe3\x6d\xe5\x6d\xe7\x6d\xe8\x6d\xe9\x6d\xea\x6d\xed\x6d\xef\x6d\xf0\x6d\xf2\x6d\xf4\x6d\xf5\x6d\xf6\x6d\xf8\x6d\xfa\x6d\xfd\x6d\xfe\x6d\xff\x6e\x00\x6e\x01\x6e\x02\x6e\x03\x6e\x04\x6e\x06\x6e\x07\x6e\x08\x6e\x09\x6e\x0b\x6e\x0f\x6e\x12\x6e\x13\x6e\x15\x6e\x18\x6e\x19\x6e\x1b\x6e\x1c\x6e\x1e\x6e\x1f\x6e\x22\x6e\x26\x6e\x27\x6e\x28\x6e\x2a\x6e\x2c\x6e\x2e\x6e\x30\x6e\x31\x6e\x33\x6e\x35\x6e\x36\x6e\x37\x6e\x39\x6e\x3b\x6e\x3c\x6e\x3d\x6e\x3e\x6e\x3f\x6e\x40\x6e\x41\x6e\x42\x6e\x45\x6e\x46\x6e\x47\x6e\x48\x6e\x49\x6e\x4a\x6e\x4b\x6e\x4c\x6e\x4f\x6e\x50\x6e\x51\x6e\x52\x6e\x55\x6e\x57\x6e\x59\x6e\x5a\x6e\x5c\x6e\x5d\x6e\x5e\x6e\x60\x6e\x61\x6e\x62\x6e\x63\x6e\x64\x6e\x65\x6e\x66\x6e\x67\x6e\x68\x6e\x69\x6e\x6a\x6e\x6c\x6e\x6d\x6e\x6f\x6e\x70\x6e\x71\x6e\x72\x6e\x73\x6e\x74\x6e\x75\x6e\x76\x6e\x77\x6e\x78\x6e\x79\x6e\x7a\x6e\x7b\x6e\x7c\x6e\x7d\x6e\x80\x6e\x81\x6e\x82\x6e\x84\x6e\x87\x6e\x88\x6e\x8a\x6e\x8b\x6e\x8c\x6e\x8d\x6e\x8e\x6e\x91\x6e\x92\x00\x00\x00\x00", /* 9d00 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6e\x93\x6e\x94\x6e\x95\x6e\x96\x6e\x97\x6e\x99\x6e\x9a\x6e\x9b\x6e\x9d\x6e\x9e\x6e\xa0\x6e\xa1\x6e\xa3\x6e\xa4\x6e\xa6\x6e\xa8\x6e\xa9\x6e\xab\x6e\xac\x6e\xad\x6e\xae\x6e\xb0\x6e\xb3\x6e\xb5\x6e\xb8\x6e\xb9\x6e\xbc\x6e\xbe\x6e\xbf\x6e\xc0\x6e\xc3\x6e\xc4\x6e\xc5\x6e\xc6\x6e\xc8\x6e\xc9\x6e\xca\x6e\xcc\x6e\xcd\x6e\xce\x6e\xd0\x6e\xd2\x6e\xd6\x6e\xd8\x6e\xd9\x6e\xdb\x6e\xdc\x6e\xdd\x6e\xe3\x6e\xe7\x6e\xea\x6e\xeb\x6e\xec\x6e\xed\x6e\xee\x6e\xef\x6e\xf0\x6e\xf1\x6e\xf2\x6e\xf3\x6e\xf5\x6e\xf6\x6e\xf7", /* 9d80 */ "\x00\x00\x6e\xf8\x6e\xfa\x6e\xfb\x6e\xfc\x6e\xfd\x6e\xfe\x6e\xff\x6f\x00\x6f\x01\x6f\x03\x6f\x04\x6f\x05\x6f\x07\x6f\x08\x6f\x0a\x6f\x0b\x6f\x0c\x6f\x0d\x6f\x0e\x6f\x10\x6f\x11\x6f\x12\x6f\x16\x6f\x17\x6f\x18\x6f\x19\x6f\x1a\x6f\x1b\x6f\x1c\x6f\x1d\x6f\x1e\x6f\x1f\x6f\x21\x6f\x22\x6f\x23\x6f\x25\x6f\x26\x6f\x27\x6f\x28\x6f\x2c\x6f\x2e\x6f\x30\x6f\x32\x6f\x34\x6f\x35\x6f\x37\x6f\x38\x6f\x39\x6f\x3a\x6f\x3b\x6f\x3c\x6f\x3d\x6f\x3f\x6f\x40\x6f\x41\x6f\x42\x6f\x43\x6f\x44\x6f\x45\x6f\x48\x6f\x49\x6f\x4a\x6f\x4c\x6f\x4e\x6f\x4f\x6f\x50\x6f\x51\x6f\x52\x6f\x53\x6f\x54\x6f\x55\x6f\x56\x6f\x57\x6f\x59\x6f\x5a\x6f\x5b\x6f\x5d\x6f\x5f\x6f\x60\x6f\x61\x6f\x63\x6f\x64\x6f\x65\x6f\x67\x6f\x68\x6f\x69\x6f\x6a\x6f\x6b\x6f\x6c\x6f\x6f\x6f\x70\x6f\x71\x6f\x73\x6f\x75\x6f\x76\x6f\x77\x6f\x79\x6f\x7b\x6f\x7d\x6f\x7e\x6f\x7f\x6f\x80\x6f\x81\x6f\x82\x6f\x83\x6f\x85\x6f\x86\x6f\x87\x6f\x8a\x6f\x8b\x6f\x8f\x6f\x90\x6f\x91\x6f\x92\x6f\x93\x6f\x94\x6f\x95\x6f\x96\x6f\x97\x6f\x98\x6f\x99\x6f\x9a\x6f\x9b\x6f\x9d\x6f\x9e\x00\x00\x00\x00", /* 9e00 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6f\x9f\x6f\xa0\x6f\xa2\x6f\xa3\x6f\xa4\x6f\xa5\x6f\xa6\x6f\xa8\x6f\xa9\x6f\xaa\x6f\xab\x6f\xac\x6f\xad\x6f\xae\x6f\xaf\x6f\xb0\x6f\xb1\x6f\xb2\x6f\xb4\x6f\xb5\x6f\xb7\x6f\xb8\x6f\xba\x6f\xbb\x6f\xbc\x6f\xbd\x6f\xbe\x6f\xbf\x6f\xc1\x6f\xc3\x6f\xc4\x6f\xc5\x6f\xc6\x6f\xc7\x6f\xc8\x6f\xca\x6f\xcb\x6f\xcc\x6f\xcd\x6f\xce\x6f\xcf\x6f\xd0\x6f\xd3\x6f\xd4\x6f\xd5\x6f\xd6\x6f\xd7\x6f\xd8\x6f\xd9\x6f\xda\x6f\xdb\x6f\xdc\x6f\xdd\x6f\xdf\x6f\xe2\x6f\xe3\x6f\xe4\x6f\xe5\x6f\xe6\x6f\xe7\x6f\xe8\x6f\xe9\x6f\xea", /* 9e80 */ "\x00\x00\x6f\xeb\x6f\xec\x6f\xed\x6f\xf0\x6f\xf1\x6f\xf2\x6f\xf3\x6f\xf4\x6f\xf5\x6f\xf6\x6f\xf7\x6f\xf8\x6f\xf9\x6f\xfa\x6f\xfb\x6f\xfc\x6f\xfd\x6f\xfe\x6f\xff\x70\x00\x70\x01\x70\x02\x70\x03\x70\x04\x70\x05\x70\x06\x70\x07\x70\x08\x70\x09\x70\x0a\x70\x0b\x70\x0c\x70\x0d\x70\x0e\x70\x0f\x70\x10\x70\x12\x70\x13\x70\x14\x70\x15\x70\x16\x70\x17\x70\x18\x70\x19\x70\x1c\x70\x1d\x70\x1e\x70\x1f\x70\x20\x70\x21\x70\x22\x70\x24\x70\x25\x70\x26\x70\x27\x70\x28\x70\x29\x70\x2a\x70\x2b\x70\x2c\x70\x2d\x70\x2e\x70\x2f\x70\x30\x70\x31\x70\x32\x70\x33\x70\x34\x70\x36\x70\x37\x70\x38\x70\x3a\x70\x3b\x70\x3c\x70\x3d\x70\x3e\x70\x3f\x70\x40\x70\x41\x70\x42\x70\x43\x70\x44\x70\x45\x70\x46\x70\x47\x70\x48\x70\x49\x70\x4a\x70\x4b\x70\x4d\x70\x4e\x70\x50\x70\x51\x70\x52\x70\x53\x70\x54\x70\x55\x70\x56\x70\x57\x70\x58\x70\x59\x70\x5a\x70\x5b\x70\x5c\x70\x5d\x70\x5f\x70\x60\x70\x61\x70\x62\x70\x63\x70\x64\x70\x65\x70\x66\x70\x67\x70\x68\x70\x69\x70\x6a\x70\x6e\x70\x71\x70\x72\x70\x73\x70\x74\x70\x77\x70\x79\x70\x7a\x00\x00\x00\x00", /* 9f00 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x70\x7b\x70\x7d\x70\x81\x70\x82\x70\x83\x70\x84\x70\x86\x70\x87\x70\x88\x70\x8b\x70\x8c\x70\x8d\x70\x8f\x70\x90\x70\x91\x70\x93\x70\x97\x70\x98\x70\x9a\x70\x9b\x70\x9e\x70\x9f\x70\xa0\x70\xa1\x70\xa2\x70\xa3\x70\xa4\x70\xa5\x70\xa6\x70\xa7\x70\xa8\x70\xa9\x70\xaa\x70\xb0\x70\xb2\x70\xb4\x70\xb5\x70\xb6\x70\xba\x70\xbe\x70\xbf\x70\xc4\x70\xc5\x70\xc6\x70\xc7\x70\xc9\x70\xcb\x70\xcc\x70\xcd\x70\xce\x70\xcf\x70\xd0\x70\xd1\x70\xd2\x70\xd3\x70\xd4\x70\xd5\x70\xd6\x70\xd7\x70\xda\x70\xdc\x70\xdd\x70\xde", /* 9f80 */ "\x00\x00\x70\xe0\x70\xe1\x70\xe2\x70\xe3\x70\xe5\x70\xea\x70\xee\x70\xf0\x70\xf1\x70\xf2\x70\xf3\x70\xf4\x70\xf5\x70\xf6\x70\xf8\x70\xfa\x70\xfb\x70\xfc\x70\xfe\x70\xff\x71\x00\x71\x01\x71\x02\x71\x03\x71\x04\x71\x05\x71\x06\x71\x07\x71\x08\x71\x0b\x71\x0c\x71\x0d\x71\x0e\x71\x0f\x71\x11\x71\x12\x71\x14\x71\x17\x71\x1b\x71\x1c\x71\x1d\x71\x1e\x71\x1f\x71\x20\x71\x21\x71\x22\x71\x23\x71\x24\x71\x25\x71\x27\x71\x28\x71\x29\x71\x2a\x71\x2b\x71\x2c\x71\x2d\x71\x2e\x71\x32\x71\x33\x71\x34\x71\x35\x71\x37\x71\x38\x71\x39\x71\x3a\x71\x3b\x71\x3c\x71\x3d\x71\x3e\x71\x3f\x71\x40\x71\x41\x71\x42\x71\x43\x71\x44\x71\x46\x71\x47\x71\x48\x71\x49\x71\x4b\x71\x4d\x71\x4f\x71\x50\x71\x51\x71\x52\x71\x53\x71\x54\x71\x55\x71\x56\x71\x57\x71\x58\x71\x59\x71\x5a\x71\x5b\x71\x5d\x71\x5f\x71\x60\x71\x61\x71\x62\x71\x63\x71\x65\x71\x69\x71\x6a\x71\x6b\x71\x6c\x71\x6d\x71\x6f\x71\x70\x71\x71\x71\x74\x71\x75\x71\x76\x71\x77\x71\x79\x71\x7b\x71\x7c\x71\x7e\x71\x7f\x71\x80\x71\x81\x71\x82\x71\x83\x71\x85\x71\x86\x71\x87\x00\x00\x00\x00", /* a000 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x71\x88\x71\x89\x71\x8b\x71\x8c\x71\x8d\x71\x8e\x71\x90\x71\x91\x71\x92\x71\x93\x71\x95\x71\x96\x71\x97\x71\x9a\x71\x9b\x71\x9c\x71\x9d\x71\x9e\x71\xa1\x71\xa2\x71\xa3\x71\xa4\x71\xa5\x71\xa6\x71\xa7\x71\xa9\x71\xaa\x71\xab\x71\xad\x71\xae\x71\xaf\x71\xb0\x71\xb1\x71\xb2\x71\xb4\x71\xb6\x71\xb7\x71\xb8\x71\xba\x71\xbb\x71\xbc\x71\xbd\x71\xbe\x71\xbf\x71\xc0\x71\xc1\x71\xc2\x71\xc4\x71\xc5\x71\xc6\x71\xc7\x71\xc8\x71\xc9\x71\xca\x71\xcb\x71\xcc\x71\xcd\x71\xcf\x71\xd0\x71\xd1\x71\xd2\x71\xd3\x71\xd6", /* a080 */ "\x00\x00\x71\xd7\x71\xd8\x71\xd9\x71\xda\x71\xdb\x71\xdc\x71\xdd\x71\xde\x71\xdf\x71\xe1\x71\xe2\x71\xe3\x71\xe4\x71\xe6\x71\xe8\x71\xe9\x71\xea\x71\xeb\x71\xec\x71\xed\x71\xef\x71\xf0\x71\xf1\x71\xf2\x71\xf3\x71\xf4\x71\xf5\x71\xf6\x71\xf7\x71\xf8\x71\xfa\x71\xfb\x71\xfc\x71\xfd\x71\xfe\x71\xff\x72\x00\x72\x01\x72\x02\x72\x03\x72\x04\x72\x05\x72\x07\x72\x08\x72\x09\x72\x0a\x72\x0b\x72\x0c\x72\x0d\x72\x0e\x72\x0f\x72\x10\x72\x11\x72\x12\x72\x13\x72\x14\x72\x15\x72\x16\x72\x17\x72\x18\x72\x19\x72\x1a\x72\x1b\x72\x1c\x72\x1e\x72\x1f\x72\x20\x72\x21\x72\x22\x72\x23\x72\x24\x72\x25\x72\x26\x72\x27\x72\x29\x72\x2b\x72\x2d\x72\x2e\x72\x2f\x72\x32\x72\x33\x72\x34\x72\x3a\x72\x3c\x72\x3e\x72\x40\x72\x41\x72\x42\x72\x43\x72\x44\x72\x45\x72\x46\x72\x49\x72\x4a\x72\x4b\x72\x4e\x72\x4f\x72\x50\x72\x51\x72\x53\x72\x54\x72\x55\x72\x57\x72\x58\x72\x5a\x72\x5c\x72\x5e\x72\x60\x72\x63\x72\x64\x72\x65\x72\x68\x72\x6a\x72\x6b\x72\x6c\x72\x6d\x72\x70\x72\x71\x72\x73\x72\x74\x72\x76\x72\x77\x72\x78\x72\x7b\x72\x7c\x00\x00\x00\x00", /* a100 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x72\x7d\x72\x82\x72\x83\x72\x85\x72\x86\x72\x87\x72\x88\x72\x89\x72\x8c\x72\x8e\x72\x90\x72\x91\x72\x93\x72\x94\x72\x95\x72\x96\x72\x97\x72\x98\x72\x99\x72\x9a\x72\x9b\x72\x9c\x72\x9d\x72\x9e\x72\xa0\x72\xa1\x72\xa2\x72\xa3\x72\xa4\x72\xa5\x72\xa6\x72\xa7\x72\xa8\x72\xa9\x72\xaa\x72\xab\x72\xae\x72\xb1\x72\xb2\x72\xb3\x72\xb5\x72\xba\x72\xbb\x72\xbc\x72\xbd\x72\xbe\x72\xbf\x72\xc0\x72\xc5\x72\xc6\x72\xc7\x72\xc9\x72\xca\x72\xcb\x72\xcc\x72\xcf\x72\xd1\x72\xd3\x72\xd4\x72\xd5\x72\xd6\x72\xd8\x72\xda", /* a180 */ "\x00\x00\x72\xdb\x72\xdc\x72\xdd\x72\xdf\x72\xe2\x72\xe3\x72\xe4\x72\xe5\x72\xe6\x72\xe7\x72\xea\x72\xeb\x72\xf5\x72\xf6\x72\xf9\x72\xfd\x72\xfe\x72\xff\x73\x00\x73\x02\x73\x04\x73\x05\x73\x06\x73\x07\x73\x08\x73\x09\x73\x0b\x73\x0c\x73\x0d\x73\x0f\x73\x10\x73\x11\x73\x12\x73\x14\x73\x18\x73\x19\x73\x1a\x73\x1f\x73\x20\x73\x23\x73\x24\x73\x26\x73\x27\x73\x28\x73\x2d\x73\x2f\x73\x30\x73\x32\x73\x33\x73\x35\x73\x36\x73\x3a\x73\x3b\x73\x3c\x73\x3d\x73\x40\x73\x41\x73\x42\x73\x43\x73\x44\x73\x45\x73\x46\x73\x47\x73\x48\x73\x49\x73\x4a\x73\x4b\x73\x4c\x73\x4e\x73\x4f\x73\x51\x73\x53\x73\x54\x73\x55\x73\x56\x73\x58\x73\x59\x73\x5a\x73\x5b\x73\x5c\x73\x5d\x73\x5e\x73\x5f\x73\x61\x73\x62\x73\x63\x73\x64\x73\x65\x73\x66\x73\x67\x73\x68\x73\x69\x73\x6a\x73\x6b\x73\x6e\x73\x70\x73\x71\x73\x72\x73\x73\x73\x74\x73\x75\x73\x76\x73\x77\x73\x78\x73\x79\x73\x7a\x73\x7b\x73\x7c\x73\x7d\x73\x7f\x73\x80\x73\x81\x73\x82\x73\x83\x73\x85\x73\x86\x73\x88\x73\x8a\x73\x8c\x73\x8d\x73\x8f\x73\x90\x73\x92\x73\x93\x73\x94\x00\x00\x00\x00", /* a200 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x73\x95\x73\x97\x73\x98\x73\x99\x73\x9a\x73\x9c\x73\x9d\x73\x9e\x73\xa0\x73\xa1\x73\xa3\x73\xa4\x73\xa5\x73\xa6\x73\xa7\x73\xa8\x73\xaa\x73\xac\x73\xad\x73\xb1\x73\xb4\x73\xb5\x73\xb6\x73\xb8\x73\xb9\x73\xbc\x73\xbd\x73\xbe\x73\xbf\x73\xc1\x73\xc3\x73\xc4\x73\xc5\x73\xc6\x73\xc7\x73\xcb\x73\xcc\x73\xce\x73\xd2\x73\xd3\x73\xd4\x73\xd5\x73\xd6\x73\xd7\x73\xd8\x73\xda\x73\xdb\x73\xdc\x73\xdd\x73\xdf\x73\xe1\x73\xe2\x73\xe3\x73\xe4\x73\xe6\x73\xe8\x73\xea\x73\xeb\x73\xec\x73\xee\x73\xef\x73\xf0\x73\xf1", /* a280 */ "\x00\x00\x73\xf3\x73\xf4\x73\xf5\x73\xf6\x73\xf7\x73\xf8\x73\xf9\x73\xfa\x73\xfb\x73\xfc\x73\xfd\x73\xfe\x73\xff\x74\x00\x74\x01\x74\x02\x74\x04\x74\x07\x74\x08\x74\x0b\x74\x0c\x74\x0d\x74\x0e\x74\x11\x74\x12\x74\x13\x74\x14\x74\x15\x74\x16\x74\x17\x74\x18\x74\x19\x74\x1c\x74\x1d\x74\x1e\x74\x1f\x74\x20\x74\x21\x74\x23\x74\x24\x74\x27\x74\x29\x74\x2b\x74\x2d\x74\x2f\x74\x31\x74\x32\x74\x37\x74\x38\x74\x39\x74\x3a\x74\x3b\x74\x3d\x74\x3e\x74\x3f\x74\x40\x74\x42\x74\x43\x74\x44\x74\x45\x74\x46\x74\x47\x74\x48\x74\x49\x74\x4a\x74\x4b\x74\x4c\x74\x4d\x74\x4e\x74\x4f\x74\x50\x74\x51\x74\x52\x74\x53\x74\x54\x74\x56\x74\x58\x74\x5d\x74\x60\x74\x61\x74\x62\x74\x63\x74\x64\x74\x65\x74\x66\x74\x67\x74\x68\x74\x69\x74\x6a\x74\x6b\x74\x6c\x74\x6e\x74\x6f\x74\x71\x74\x72\x74\x73\x74\x74\x74\x75\x74\x78\x74\x79\x74\x7a\x74\x7b\x74\x7c\x74\x7d\x74\x7f\x74\x82\x74\x84\x74\x85\x74\x86\x74\x88\x74\x89\x74\x8a\x74\x8c\x74\x8d\x74\x8f\x74\x91\x74\x92\x74\x93\x74\x94\x74\x95\x74\x96\x74\x97\x74\x98\x74\x99\x74\x9a\x00\x00\x00\x00", /* a300 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x74\x9b\x74\x9d\x74\x9f\x74\xa0\x74\xa1\x74\xa2\x74\xa3\x74\xa4\x74\xa5\x74\xa6\x74\xaa\x74\xab\x74\xac\x74\xad\x74\xae\x74\xaf\x74\xb0\x74\xb1\x74\xb2\x74\xb3\x74\xb4\x74\xb5\x74\xb6\x74\xb7\x74\xb8\x74\xb9\x74\xbb\x74\xbc\x74\xbd\x74\xbe\x74\xbf\x74\xc0\x74\xc1\x74\xc2\x74\xc3\x74\xc4\x74\xc5\x74\xc6\x74\xc7\x74\xc8\x74\xc9\x74\xca\x74\xcb\x74\xcc\x74\xcd\x74\xce\x74\xcf\x74\xd0\x74\xd1\x74\xd3\x74\xd4\x74\xd5\x74\xd6\x74\xd7\x74\xd8\x74\xd9\x74\xda\x74\xdb\x74\xdd\x74\xdf\x74\xe1\x74\xe5\x74\xe7", /* a380 */ "\x00\x00\x74\xe8\x74\xe9\x74\xea\x74\xeb\x74\xec\x74\xed\x74\xf0\x74\xf1\x74\xf2\x74\xf3\x74\xf5\x74\xf8\x74\xf9\x74\xfa\x74\xfb\x74\xfc\x74\xfd\x74\xfe\x75\x00\x75\x01\x75\x02\x75\x03\x75\x05\x75\x06\x75\x07\x75\x08\x75\x09\x75\x0a\x75\x0b\x75\x0c\x75\x0e\x75\x10\x75\x12\x75\x14\x75\x15\x75\x16\x75\x17\x75\x1b\x75\x1d\x75\x1e\x75\x20\x75\x21\x75\x22\x75\x23\x75\x24\x75\x26\x75\x27\x75\x2a\x75\x2e\x75\x34\x75\x36\x75\x39\x75\x3c\x75\x3d\x75\x3f\x75\x41\x75\x42\x75\x43\x75\x44\x75\x46\x75\x47\x75\x49\x75\x4a\x75\x4d\x75\x50\x75\x51\x75\x52\x75\x53\x75\x55\x75\x56\x75\x57\x75\x58\x75\x5d\x75\x5e\x75\x5f\x75\x60\x75\x61\x75\x62\x75\x63\x75\x64\x75\x67\x75\x68\x75\x69\x75\x6b\x75\x6c\x75\x6d\x75\x6e\x75\x6f\x75\x70\x75\x71\x75\x73\x75\x75\x75\x76\x75\x77\x75\x7a\x75\x7b\x75\x7c\x75\x7d\x75\x7e\x75\x80\x75\x81\x75\x82\x75\x84\x75\x85\x75\x87\x75\x88\x75\x89\x75\x8a\x75\x8c\x75\x8d\x75\x8e\x75\x90\x75\x93\x75\x95\x75\x98\x75\x9b\x75\x9c\x75\x9e\x75\xa2\x75\xa6\x75\xa7\x75\xa8\x75\xa9\x75\xaa\x75\xad\x00\x00\x00\x00", /* a400 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x75\xb6\x75\xb7\x75\xba\x75\xbb\x75\xbf\x75\xc0\x75\xc1\x75\xc6\x75\xcb\x75\xcc\x75\xce\x75\xcf\x75\xd0\x75\xd1\x75\xd3\x75\xd7\x75\xd9\x75\xda\x75\xdc\x75\xdd\x75\xdf\x75\xe0\x75\xe1\x75\xe5\x75\xe9\x75\xec\x75\xed\x75\xee\x75\xef\x75\xf2\x75\xf3\x75\xf5\x75\xf6\x75\xf7\x75\xf8\x75\xfa\x75\xfb\x75\xfd\x75\xfe\x76\x02\x76\x04\x76\x06\x76\x07\x76\x08\x76\x09\x76\x0b\x76\x0d\x76\x0e\x76\x0f\x76\x11\x76\x12\x76\x13\x76\x14\x76\x16\x76\x1a\x76\x1c\x76\x1d\x76\x1e\x76\x21\x76\x23\x76\x27\x76\x28\x76\x2c", /* a480 */ "\x00\x00\x76\x2e\x76\x2f\x76\x31\x76\x32\x76\x36\x76\x37\x76\x39\x76\x3a\x76\x3b\x76\x3d\x76\x41\x76\x42\x76\x44\x76\x45\x76\x46\x76\x47\x76\x48\x76\x49\x76\x4a\x76\x4b\x76\x4e\x76\x4f\x76\x50\x76\x51\x76\x52\x76\x53\x76\x55\x76\x57\x76\x58\x76\x59\x76\x5a\x76\x5b\x76\x5d\x76\x5f\x76\x60\x76\x61\x76\x62\x76\x64\x76\x65\x76\x66\x76\x67\x76\x68\x76\x69\x76\x6a\x76\x6c\x76\x6d\x76\x6e\x76\x70\x76\x71\x76\x72\x76\x73\x76\x74\x76\x75\x76\x76\x76\x77\x76\x79\x76\x7a\x76\x7c\x76\x7f\x76\x80\x76\x81\x76\x83\x76\x85\x76\x89\x76\x8a\x76\x8c\x76\x8d\x76\x8f\x76\x90\x76\x92\x76\x94\x76\x95\x76\x97\x76\x98\x76\x9a\x76\x9b\x76\x9c\x76\x9d\x76\x9e\x76\x9f\x76\xa0\x76\xa1\x76\xa2\x76\xa3\x76\xa5\x76\xa6\x76\xa7\x76\xa8\x76\xa9\x76\xaa\x76\xab\x76\xac\x76\xad\x76\xaf\x76\xb0\x76\xb3\x76\xb5\x76\xb6\x76\xb7\x76\xb8\x76\xb9\x76\xba\x76\xbb\x76\xbc\x76\xbd\x76\xbe\x76\xc0\x76\xc1\x76\xc3\x76\xc4\x76\xc7\x76\xc9\x76\xcb\x76\xcc\x76\xd3\x76\xd5\x76\xd9\x76\xda\x76\xdc\x76\xdd\x76\xde\x76\xe0\x76\xe1\x76\xe2\x76\xe3\x00\x00\x00\x00", /* a500 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x76\xe4\x76\xe6\x76\xe7\x76\xe8\x76\xe9\x76\xea\x76\xeb\x76\xec\x76\xed\x76\xf0\x76\xf3\x76\xf5\x76\xf6\x76\xf7\x76\xfa\x76\xfb\x76\xfd\x76\xff\x77\x00\x77\x02\x77\x03\x77\x05\x77\x06\x77\x0a\x77\x0c\x77\x0e\x77\x0f\x77\x10\x77\x11\x77\x12\x77\x13\x77\x14\x77\x15\x77\x16\x77\x17\x77\x18\x77\x1b\x77\x1c\x77\x1d\x77\x1e\x77\x21\x77\x23\x77\x24\x77\x25\x77\x27\x77\x2a\x77\x2b\x77\x2c\x77\x2e\x77\x30\x77\x31\x77\x32\x77\x33\x77\x34\x77\x39\x77\x3b\x77\x3d\x77\x3e\x77\x3f\x77\x42\x77\x44\x77\x45\x77\x46", /* a580 */ "\x00\x00\x77\x48\x77\x49\x77\x4a\x77\x4b\x77\x4c\x77\x4d\x77\x4e\x77\x4f\x77\x52\x77\x53\x77\x54\x77\x55\x77\x56\x77\x57\x77\x58\x77\x59\x77\x5c\x77\x5d\x77\x5e\x77\x5f\x77\x60\x77\x64\x77\x67\x77\x69\x77\x6a\x77\x6d\x77\x6e\x77\x6f\x77\x70\x77\x71\x77\x72\x77\x73\x77\x74\x77\x75\x77\x76\x77\x77\x77\x78\x77\x7a\x77\x7b\x77\x7c\x77\x81\x77\x82\x77\x83\x77\x86\x77\x87\x77\x88\x77\x89\x77\x8a\x77\x8b\x77\x8f\x77\x90\x77\x93\x77\x94\x77\x95\x77\x96\x77\x97\x77\x98\x77\x99\x77\x9a\x77\x9b\x77\x9c\x77\x9d\x77\x9e\x77\xa1\x77\xa3\x77\xa4\x77\xa6\x77\xa8\x77\xab\x77\xad\x77\xae\x77\xaf\x77\xb1\x77\xb2\x77\xb4\x77\xb6\x77\xb7\x77\xb8\x77\xb9\x77\xba\x77\xbc\x77\xbe\x77\xc0\x77\xc1\x77\xc2\x77\xc3\x77\xc4\x77\xc5\x77\xc6\x77\xc7\x77\xc8\x77\xc9\x77\xca\x77\xcb\x77\xcc\x77\xce\x77\xcf\x77\xd0\x77\xd1\x77\xd2\x77\xd3\x77\xd4\x77\xd5\x77\xd6\x77\xd8\x77\xd9\x77\xda\x77\xdd\x77\xde\x77\xdf\x77\xe0\x77\xe1\x77\xe4\x77\xe6\x77\xe8\x77\xea\x77\xef\x77\xf0\x77\xf1\x77\xf2\x77\xf4\x77\xf5\x77\xf7\x77\xf9\x77\xfa\x00\x00\x00\x00", /* a600 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x77\xfb\x77\xfc\x78\x03\x78\x04\x78\x05\x78\x06\x78\x07\x78\x08\x78\x0a\x78\x0b\x78\x0e\x78\x0f\x78\x10\x78\x13\x78\x15\x78\x19\x78\x1b\x78\x1e\x78\x20\x78\x21\x78\x22\x78\x24\x78\x28\x78\x2a\x78\x2b\x78\x2e\x78\x2f\x78\x31\x78\x32\x78\x33\x78\x35\x78\x36\x78\x3d\x78\x3f\x78\x41\x78\x42\x78\x43\x78\x44\x78\x46\x78\x48\x78\x49\x78\x4a\x78\x4b\x78\x4d\x78\x4f\x78\x51\x78\x53\x78\x54\x78\x58\x78\x59\x78\x5a\x78\x5b\x78\x5c\x78\x5e\x78\x5f\x78\x60\x78\x61\x78\x62\x78\x63\x78\x64\x78\x65\x78\x66\x78\x67", /* a680 */ "\x00\x00\x78\x68\x78\x69\x78\x6f\x78\x70\x78\x71\x78\x72\x78\x73\x78\x74\x78\x75\x78\x76\x78\x78\x78\x79\x78\x7a\x78\x7b\x78\x7d\x78\x7e\x78\x7f\x78\x80\x78\x81\x78\x82\x78\x83\x78\x84\x78\x85\x78\x86\x78\x88\x78\x8a\x78\x8b\x78\x8f\x78\x90\x78\x92\x78\x94\x78\x95\x78\x96\x78\x99\x78\x9d\x78\x9e\x78\xa0\x78\xa2\x78\xa4\x78\xa6\x78\xa8\x78\xa9\x78\xaa\x78\xab\x78\xac\x78\xad\x78\xae\x78\xaf\x78\xb5\x78\xb6\x78\xb7\x78\xb8\x78\xba\x78\xbb\x78\xbc\x78\xbd\x78\xbf\x78\xc0\x78\xc2\x78\xc3\x78\xc4\x78\xc6\x78\xc7\x78\xc8\x78\xcc\x78\xcd\x78\xce\x78\xcf\x78\xd1\x78\xd2\x78\xd3\x78\xd6\x78\xd7\x78\xd8\x78\xda\x78\xdb\x78\xdc\x78\xdd\x78\xde\x78\xdf\x78\xe0\x78\xe1\x78\xe2\x78\xe3\x78\xe4\x78\xe5\x78\xe6\x78\xe7\x78\xe9\x78\xea\x78\xeb\x78\xed\x78\xee\x78\xef\x78\xf0\x78\xf1\x78\xf3\x78\xf5\x78\xf6\x78\xf8\x78\xf9\x78\xfb\x78\xfc\x78\xfd\x78\xfe\x78\xff\x79\x00\x79\x02\x79\x03\x79\x04\x79\x06\x79\x07\x79\x08\x79\x09\x79\x0a\x79\x0b\x79\x0c\x79\x0d\x79\x0e\x79\x0f\x79\x10\x79\x11\x79\x12\x79\x14\x79\x15\x00\x00\x00\x00", /* a700 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x79\x16\x79\x17\x79\x18\x79\x19\x79\x1a\x79\x1b\x79\x1c\x79\x1d\x79\x1f\x79\x20\x79\x21\x79\x22\x79\x23\x79\x25\x79\x26\x79\x27\x79\x28\x79\x29\x79\x2a\x79\x2b\x79\x2c\x79\x2d\x79\x2e\x79\x2f\x79\x30\x79\x31\x79\x32\x79\x33\x79\x35\x79\x36\x79\x37\x79\x38\x79\x39\x79\x3d\x79\x3f\x79\x42\x79\x43\x79\x44\x79\x45\x79\x47\x79\x4a\x79\x4b\x79\x4c\x79\x4d\x79\x4e\x79\x4f\x79\x50\x79\x51\x79\x52\x79\x54\x79\x55\x79\x58\x79\x59\x79\x61\x79\x63\x79\x64\x79\x66\x79\x69\x79\x6a\x79\x6b\x79\x6c\x79\x6e\x79\x70", /* a780 */ "\x00\x00\x79\x71\x79\x72\x79\x73\x79\x74\x79\x75\x79\x76\x79\x79\x79\x7b\x79\x7c\x79\x7d\x79\x7e\x79\x7f\x79\x82\x79\x83\x79\x86\x79\x87\x79\x88\x79\x89\x79\x8b\x79\x8c\x79\x8d\x79\x8e\x79\x90\x79\x91\x79\x92\x79\x93\x79\x94\x79\x95\x79\x96\x79\x97\x79\x98\x79\x99\x79\x9b\x79\x9c\x79\x9d\x79\x9e\x79\x9f\x79\xa0\x79\xa1\x79\xa2\x79\xa3\x79\xa4\x79\xa5\x79\xa6\x79\xa8\x79\xa9\x79\xaa\x79\xab\x79\xac\x79\xad\x79\xae\x79\xaf\x79\xb0\x79\xb1\x79\xb2\x79\xb4\x79\xb5\x79\xb6\x79\xb7\x79\xb8\x79\xbc\x79\xbf\x79\xc2\x79\xc4\x79\xc5\x79\xc7\x79\xc8\x79\xca\x79\xcc\x79\xce\x79\xcf\x79\xd0\x79\xd3\x79\xd4\x79\xd6\x79\xd7\x79\xd9\x79\xda\x79\xdb\x79\xdc\x79\xdd\x79\xde\x79\xe0\x79\xe1\x79\xe2\x79\xe5\x79\xe8\x79\xea\x79\xec\x79\xee\x79\xf1\x79\xf2\x79\xf3\x79\xf4\x79\xf5\x79\xf6\x79\xf7\x79\xf9\x79\xfa\x79\xfc\x79\xfe\x79\xff\x7a\x01\x7a\x04\x7a\x05\x7a\x07\x7a\x08\x7a\x09\x7a\x0a\x7a\x0c\x7a\x0f\x7a\x10\x7a\x11\x7a\x12\x7a\x13\x7a\x15\x7a\x16\x7a\x18\x7a\x19\x7a\x1b\x7a\x1c\x7a\x1d\x7a\x1f\x7a\x21\x7a\x22\x00\x00\x00\x00", /* a800 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7a\x24\x7a\x25\x7a\x26\x7a\x27\x7a\x28\x7a\x29\x7a\x2a\x7a\x2b\x7a\x2c\x7a\x2d\x7a\x2e\x7a\x2f\x7a\x30\x7a\x31\x7a\x32\x7a\x34\x7a\x35\x7a\x36\x7a\x38\x7a\x3a\x7a\x3e\x7a\x40\x7a\x41\x7a\x42\x7a\x43\x7a\x44\x7a\x45\x7a\x47\x7a\x48\x7a\x49\x7a\x4a\x7a\x4b\x7a\x4c\x7a\x4d\x7a\x4e\x7a\x4f\x7a\x50\x7a\x52\x7a\x53\x7a\x54\x7a\x55\x7a\x56\x7a\x58\x7a\x59\x7a\x5a\x7a\x5b\x7a\x5c\x7a\x5d\x7a\x5e\x7a\x5f\x7a\x60\x7a\x61\x7a\x62\x7a\x63\x7a\x64\x7a\x65\x7a\x66\x7a\x67\x7a\x68\x7a\x69\x7a\x6a\x7a\x6b\x7a\x6c", /* a880 */ "\x00\x00\x7a\x6d\x7a\x6e\x7a\x6f\x7a\x71\x7a\x72\x7a\x73\x7a\x75\x7a\x7b\x7a\x7c\x7a\x7d\x7a\x7e\x7a\x82\x7a\x85\x7a\x87\x7a\x89\x7a\x8a\x7a\x8b\x7a\x8c\x7a\x8e\x7a\x8f\x7a\x90\x7a\x93\x7a\x94\x7a\x99\x7a\x9a\x7a\x9b\x7a\x9e\x7a\xa1\x7a\xa2\x7a\xa3\x7a\xa4\x7a\xa7\x7a\xa9\x7a\xaa\x7a\xab\x7a\xae\x7a\xaf\x7a\xb0\x7a\xb1\x7a\xb2\x7a\xb4\x7a\xb5\x7a\xb6\x7a\xb7\x7a\xb8\x7a\xb9\x7a\xba\x7a\xbb\x7a\xbc\x7a\xbd\x7a\xbe\x7a\xc0\x7a\xc1\x7a\xc2\x7a\xc3\x7a\xc4\x7a\xc5\x7a\xc6\x7a\xc7\x7a\xc8\x7a\xc9\x7a\xca\x7a\xcc\x7a\xcd\x7a\xce\x7a\xcf\x7a\xd0\x7a\xd1\x7a\xd2\x7a\xd3\x7a\xd4\x7a\xd5\x7a\xd7\x7a\xd8\x7a\xda\x7a\xdb\x7a\xdc\x7a\xdd\x7a\xe1\x7a\xe2\x7a\xe4\x7a\xe7\x7a\xe8\x7a\xe9\x7a\xea\x7a\xeb\x7a\xec\x7a\xee\x7a\xf0\x7a\xf1\x7a\xf2\x7a\xf3\x7a\xf4\x7a\xf5\x7a\xf6\x7a\xf7\x7a\xf8\x7a\xfb\x7a\xfc\x7a\xfe\x7b\x00\x7b\x01\x7b\x02\x7b\x05\x7b\x07\x7b\x09\x7b\x0c\x7b\x0d\x7b\x0e\x7b\x10\x7b\x12\x7b\x13\x7b\x16\x7b\x17\x7b\x18\x7b\x1a\x7b\x1c\x7b\x1d\x7b\x1f\x7b\x21\x7b\x22\x7b\x23\x7b\x27\x7b\x29\x7b\x2d\x00\x00\x00\x00", /* a900 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7b\x2f\x7b\x30\x7b\x32\x7b\x34\x7b\x35\x7b\x36\x7b\x37\x7b\x39\x7b\x3b\x7b\x3d\x7b\x3f\x7b\x40\x7b\x41\x7b\x42\x7b\x43\x7b\x44\x7b\x46\x7b\x48\x7b\x4a\x7b\x4d\x7b\x4e\x7b\x53\x7b\x55\x7b\x57\x7b\x59\x7b\x5c\x7b\x5e\x7b\x5f\x7b\x61\x7b\x63\x7b\x64\x7b\x65\x7b\x66\x7b\x67\x7b\x68\x7b\x69\x7b\x6a\x7b\x6b\x7b\x6c\x7b\x6d\x7b\x6f\x7b\x70\x7b\x73\x7b\x74\x7b\x76\x7b\x78\x7b\x7a\x7b\x7c\x7b\x7d\x7b\x7f\x7b\x81\x7b\x82\x7b\x83\x7b\x84\x7b\x86\x7b\x87\x7b\x88\x7b\x89\x7b\x8a\x7b\x8b\x7b\x8c\x7b\x8e\x7b\x8f", /* a980 */ "\x00\x00\x7b\x91\x7b\x92\x7b\x93\x7b\x96\x7b\x98\x7b\x99\x7b\x9a\x7b\x9b\x7b\x9e\x7b\x9f\x7b\xa0\x7b\xa3\x7b\xa4\x7b\xa5\x7b\xae\x7b\xaf\x7b\xb0\x7b\xb2\x7b\xb3\x7b\xb5\x7b\xb6\x7b\xb7\x7b\xb9\x7b\xba\x7b\xbb\x7b\xbc\x7b\xbd\x7b\xbe\x7b\xbf\x7b\xc0\x7b\xc2\x7b\xc3\x7b\xc4\x7b\xc5\x7b\xc8\x7b\xc9\x7b\xca\x7b\xcb\x7b\xcd\x7b\xce\x7b\xcf\x7b\xd0\x7b\xd2\x7b\xd4\x7b\xd5\x7b\xd6\x7b\xd7\x7b\xd8\x7b\xdb\x7b\xdc\x7b\xde\x7b\xdf\x7b\xe0\x7b\xe2\x7b\xe3\x7b\xe4\x7b\xe7\x7b\xe8\x7b\xe9\x7b\xeb\x7b\xec\x7b\xed\x7b\xef\x7b\xf0\x7b\xf2\x7b\xf3\x7b\xf4\x7b\xf5\x7b\xf6\x7b\xf8\x7b\xf9\x7b\xfa\x7b\xfb\x7b\xfd\x7b\xff\x7c\x00\x7c\x01\x7c\x02\x7c\x03\x7c\x04\x7c\x05\x7c\x06\x7c\x08\x7c\x09\x7c\x0a\x7c\x0d\x7c\x0e\x7c\x10\x7c\x11\x7c\x12\x7c\x13\x7c\x14\x7c\x15\x7c\x17\x7c\x18\x7c\x19\x7c\x1a\x7c\x1b\x7c\x1c\x7c\x1d\x7c\x1e\x7c\x20\x7c\x21\x7c\x22\x7c\x23\x7c\x24\x7c\x25\x7c\x28\x7c\x29\x7c\x2b\x7c\x2c\x7c\x2d\x7c\x2e\x7c\x2f\x7c\x30\x7c\x31\x7c\x32\x7c\x33\x7c\x34\x7c\x35\x7c\x36\x7c\x37\x7c\x39\x7c\x3a\x7c\x3b\x00\x00\x00\x00", /* aa00 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x3c\x7c\x3d\x7c\x3e\x7c\x42\x7c\x43\x7c\x44\x7c\x45\x7c\x46\x7c\x47\x7c\x48\x7c\x49\x7c\x4a\x7c\x4b\x7c\x4c\x7c\x4e\x7c\x4f\x7c\x50\x7c\x51\x7c\x52\x7c\x53\x7c\x54\x7c\x55\x7c\x56\x7c\x57\x7c\x58\x7c\x59\x7c\x5a\x7c\x5b\x7c\x5c\x7c\x5d\x7c\x5e\x7c\x5f\x7c\x60\x7c\x61\x7c\x62\x7c\x63\x7c\x64\x7c\x65\x7c\x66\x7c\x67\x7c\x68\x7c\x69\x7c\x6a\x7c\x6b\x7c\x6c\x7c\x6d\x7c\x6e\x7c\x6f\x7c\x70\x7c\x71\x7c\x72\x7c\x75\x7c\x76\x7c\x77\x7c\x78\x7c\x79\x7c\x7a\x7c\x7e\x7c\x7f\x7c\x80\x7c\x81\x7c\x82\x7c\x83", /* aa80 */ "\x00\x00\x7c\x84\x7c\x85\x7c\x86\x7c\x87\x7c\x88\x7c\x8a\x7c\x8b\x7c\x8c\x7c\x8d\x7c\x8e\x7c\x8f\x7c\x90\x7c\x93\x7c\x94\x7c\x96\x7c\x99\x7c\x9a\x7c\x9b\x7c\xa0\x7c\xa1\x7c\xa3\x7c\xa6\x7c\xa7\x7c\xa8\x7c\xa9\x7c\xab\x7c\xac\x7c\xad\x7c\xaf\x7c\xb0\x7c\xb4\x7c\xb5\x7c\xb6\x7c\xb7\x7c\xb8\x7c\xba\x7c\xbb\x7c\xbf\x7c\xc0\x7c\xc2\x7c\xc3\x7c\xc4\x7c\xc6\x7c\xc9\x7c\xcb\x7c\xce\x7c\xcf\x7c\xd0\x7c\xd1\x7c\xd2\x7c\xd3\x7c\xd4\x7c\xd8\x7c\xda\x7c\xdb\x7c\xdd\x7c\xde\x7c\xe1\x7c\xe2\x7c\xe3\x7c\xe4\x7c\xe5\x7c\xe6\x7c\xe7\x7c\xe9\x7c\xea\x7c\xeb\x7c\xec\x7c\xed\x7c\xee\x7c\xf0\x7c\xf1\x7c\xf2\x7c\xf3\x7c\xf4\x7c\xf5\x7c\xf6\x7c\xf7\x7c\xf9\x7c\xfa\x7c\xfc\x7c\xfd\x7c\xfe\x7c\xff\x7d\x00\x7d\x01\x7d\x02\x7d\x03\x7d\x04\x7d\x05\x7d\x06\x7d\x07\x7d\x08\x7d\x09\x7d\x0b\x7d\x0c\x7d\x0d\x7d\x0e\x7d\x0f\x7d\x10\x7d\x11\x7d\x12\x7d\x13\x7d\x14\x7d\x15\x7d\x16\x7d\x17\x7d\x18\x7d\x19\x7d\x1a\x7d\x1b\x7d\x1c\x7d\x1d\x7d\x1e\x7d\x1f\x7d\x21\x7d\x23\x7d\x24\x7d\x25\x7d\x26\x7d\x28\x7d\x29\x7d\x2a\x7d\x2c\x7d\x2d\x00\x00\x00\x00", /* ab00 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7d\x2e\x7d\x30\x7d\x31\x7d\x32\x7d\x33\x7d\x34\x7d\x35\x7d\x36\x7d\x37\x7d\x38\x7d\x39\x7d\x3a\x7d\x3b\x7d\x3c\x7d\x3d\x7d\x3e\x7d\x3f\x7d\x40\x7d\x41\x7d\x42\x7d\x43\x7d\x44\x7d\x45\x7d\x46\x7d\x47\x7d\x48\x7d\x49\x7d\x4a\x7d\x4b\x7d\x4c\x7d\x4d\x7d\x4e\x7d\x4f\x7d\x50\x7d\x51\x7d\x52\x7d\x53\x7d\x54\x7d\x55\x7d\x56\x7d\x57\x7d\x58\x7d\x59\x7d\x5a\x7d\x5b\x7d\x5c\x7d\x5d\x7d\x5e\x7d\x5f\x7d\x60\x7d\x61\x7d\x62\x7d\x63\x7d\x64\x7d\x65\x7d\x66\x7d\x67\x7d\x68\x7d\x69\x7d\x6a\x7d\x6b\x7d\x6c\x7d\x6d", /* ab80 */ "\x00\x00\x7d\x6f\x7d\x70\x7d\x71\x7d\x72\x7d\x73\x7d\x74\x7d\x75\x7d\x76\x7d\x78\x7d\x79\x7d\x7a\x7d\x7b\x7d\x7c\x7d\x7d\x7d\x7e\x7d\x7f\x7d\x80\x7d\x81\x7d\x82\x7d\x83\x7d\x84\x7d\x85\x7d\x86\x7d\x87\x7d\x88\x7d\x89\x7d\x8a\x7d\x8b\x7d\x8c\x7d\x8d\x7d\x8e\x7d\x8f\x7d\x90\x7d\x91\x7d\x92\x7d\x93\x7d\x94\x7d\x95\x7d\x96\x7d\x97\x7d\x98\x7d\x99\x7d\x9a\x7d\x9b\x7d\x9c\x7d\x9d\x7d\x9e\x7d\x9f\x7d\xa0\x7d\xa1\x7d\xa2\x7d\xa3\x7d\xa4\x7d\xa5\x7d\xa7\x7d\xa8\x7d\xa9\x7d\xaa\x7d\xab\x7d\xac\x7d\xad\x7d\xaf\x7d\xb0\x7d\xb1\x7d\xb2\x7d\xb3\x7d\xb4\x7d\xb5\x7d\xb6\x7d\xb7\x7d\xb8\x7d\xb9\x7d\xba\x7d\xbb\x7d\xbc\x7d\xbd\x7d\xbe\x7d\xbf\x7d\xc0\x7d\xc1\x7d\xc2\x7d\xc3\x7d\xc4\x7d\xc5\x7d\xc6\x7d\xc7\x7d\xc8\x7d\xc9\x7d\xca\x7d\xcb\x7d\xcc\x7d\xcd\x7d\xce\x7d\xcf\x7d\xd0\x7d\xd1\x7d\xd2\x7d\xd3\x7d\xd4\x7d\xd5\x7d\xd6\x7d\xd7\x7d\xd8\x7d\xd9\x7d\xda\x7d\xdb\x7d\xdc\x7d\xdd\x7d\xde\x7d\xdf\x7d\xe0\x7d\xe1\x7d\xe2\x7d\xe3\x7d\xe4\x7d\xe5\x7d\xe6\x7d\xe7\x7d\xe8\x7d\xe9\x7d\xea\x7d\xeb\x7d\xec\x7d\xed\x7d\xee\x00\x00\x00\x00", /* ac00 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7d\xef\x7d\xf0\x7d\xf1\x7d\xf2\x7d\xf3\x7d\xf4\x7d\xf5\x7d\xf6\x7d\xf7\x7d\xf8\x7d\xf9\x7d\xfa\x7d\xfb\x7d\xfc\x7d\xfd\x7d\xfe\x7d\xff\x7e\x00\x7e\x01\x7e\x02\x7e\x03\x7e\x04\x7e\x05\x7e\x06\x7e\x07\x7e\x08\x7e\x09\x7e\x0a\x7e\x0b\x7e\x0c\x7e\x0d\x7e\x0e\x7e\x0f\x7e\x10\x7e\x11\x7e\x12\x7e\x13\x7e\x14\x7e\x15\x7e\x16\x7e\x17\x7e\x18\x7e\x19\x7e\x1a\x7e\x1b\x7e\x1c\x7e\x1d\x7e\x1e\x7e\x1f\x7e\x20\x7e\x21\x7e\x22\x7e\x23\x7e\x24\x7e\x25\x7e\x26\x7e\x27\x7e\x28\x7e\x29\x7e\x2a\x7e\x2b\x7e\x2c\x7e\x2d", /* ac80 */ "\x00\x00\x7e\x2e\x7e\x2f\x7e\x30\x7e\x31\x7e\x32\x7e\x33\x7e\x34\x7e\x35\x7e\x36\x7e\x37\x7e\x38\x7e\x39\x7e\x3a\x7e\x3c\x7e\x3d\x7e\x3e\x7e\x3f\x7e\x40\x7e\x42\x7e\x43\x7e\x44\x7e\x45\x7e\x46\x7e\x48\x7e\x49\x7e\x4a\x7e\x4b\x7e\x4c\x7e\x4d\x7e\x4e\x7e\x4f\x7e\x50\x7e\x51\x7e\x52\x7e\x53\x7e\x54\x7e\x55\x7e\x56\x7e\x57\x7e\x58\x7e\x59\x7e\x5a\x7e\x5b\x7e\x5c\x7e\x5d\x7e\x5e\x7e\x5f\x7e\x60\x7e\x61\x7e\x62\x7e\x63\x7e\x64\x7e\x65\x7e\x66\x7e\x67\x7e\x68\x7e\x69\x7e\x6a\x7e\x6b\x7e\x6c\x7e\x6d\x7e\x6e\x7e\x6f\x7e\x70\x7e\x71\x7e\x72\x7e\x73\x7e\x74\x7e\x75\x7e\x76\x7e\x77\x7e\x78\x7e\x79\x7e\x7a\x7e\x7b\x7e\x7c\x7e\x7d\x7e\x7e\x7e\x7f\x7e\x80\x7e\x81\x7e\x83\x7e\x84\x7e\x85\x7e\x86\x7e\x87\x7e\x88\x7e\x89\x7e\x8a\x7e\x8b\x7e\x8c\x7e\x8d\x7e\x8e\x7e\x8f\x7e\x90\x7e\x91\x7e\x92\x7e\x93\x7e\x94\x7e\x95\x7e\x96\x7e\x97\x7e\x98\x7e\x99\x7e\x9a\x7e\x9c\x7e\x9d\x7e\x9e\x7e\xae\x7e\xb4\x7e\xbb\x7e\xbc\x7e\xd6\x7e\xe4\x7e\xec\x7e\xf9\x7f\x0a\x7f\x10\x7f\x1e\x7f\x37\x7f\x39\x7f\x3b\x7f\x3c\x7f\x3d\x7f\x3e\x00\x00\x00\x00", /* ad00 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7f\x3f\x7f\x40\x7f\x41\x7f\x43\x7f\x46\x7f\x47\x7f\x48\x7f\x49\x7f\x4a\x7f\x4b\x7f\x4c\x7f\x4d\x7f\x4e\x7f\x4f\x7f\x52\x7f\x53\x7f\x56\x7f\x59\x7f\x5b\x7f\x5c\x7f\x5d\x7f\x5e\x7f\x60\x7f\x63\x7f\x64\x7f\x65\x7f\x66\x7f\x67\x7f\x6b\x7f\x6c\x7f\x6d\x7f\x6f\x7f\x70\x7f\x73\x7f\x75\x7f\x76\x7f\x77\x7f\x78\x7f\x7a\x7f\x7b\x7f\x7c\x7f\x7d\x7f\x7f\x7f\x80\x7f\x82\x7f\x83\x7f\x84\x7f\x85\x7f\x86\x7f\x87\x7f\x88\x7f\x89\x7f\x8b\x7f\x8d\x7f\x8f\x7f\x90\x7f\x91\x7f\x92\x7f\x93\x7f\x95\x7f\x96\x7f\x97\x7f\x98", /* ad80 */ "\x00\x00\x7f\x99\x7f\x9b\x7f\x9c\x7f\xa0\x7f\xa2\x7f\xa3\x7f\xa5\x7f\xa6\x7f\xa8\x7f\xa9\x7f\xaa\x7f\xab\x7f\xac\x7f\xad\x7f\xae\x7f\xb1\x7f\xb3\x7f\xb4\x7f\xb5\x7f\xb6\x7f\xb7\x7f\xba\x7f\xbb\x7f\xbe\x7f\xc0\x7f\xc2\x7f\xc3\x7f\xc4\x7f\xc6\x7f\xc7\x7f\xc8\x7f\xc9\x7f\xcb\x7f\xcd\x7f\xcf\x7f\xd0\x7f\xd1\x7f\xd2\x7f\xd3\x7f\xd6\x7f\xd7\x7f\xd9\x7f\xda\x7f\xdb\x7f\xdc\x7f\xdd\x7f\xde\x7f\xe2\x7f\xe3\x7f\xe4\x7f\xe7\x7f\xe8\x7f\xea\x7f\xeb\x7f\xec\x7f\xed\x7f\xef\x7f\xf2\x7f\xf4\x7f\xf5\x7f\xf6\x7f\xf7\x7f\xf8\x7f\xf9\x7f\xfa\x7f\xfd\x7f\xfe\x7f\xff\x80\x02\x80\x07\x80\x08\x80\x09\x80\x0a\x80\x0e\x80\x0f\x80\x11\x80\x13\x80\x1a\x80\x1b\x80\x1d\x80\x1e\x80\x1f\x80\x21\x80\x23\x80\x24\x80\x2b\x80\x2c\x80\x2d\x80\x2e\x80\x2f\x80\x30\x80\x32\x80\x34\x80\x39\x80\x3a\x80\x3c\x80\x3e\x80\x40\x80\x41\x80\x44\x80\x45\x80\x47\x80\x48\x80\x49\x80\x4e\x80\x4f\x80\x50\x80\x51\x80\x53\x80\x55\x80\x56\x80\x57\x80\x59\x80\x5b\x80\x5c\x80\x5d\x80\x5e\x80\x5f\x80\x60\x80\x61\x80\x62\x80\x63\x80\x64\x80\x65\x80\x66\x00\x00\x00\x00", /* ae00 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x67\x80\x68\x80\x6b\x80\x6c\x80\x6d\x80\x6e\x80\x6f\x80\x70\x80\x72\x80\x73\x80\x74\x80\x75\x80\x76\x80\x77\x80\x78\x80\x79\x80\x7a\x80\x7b\x80\x7c\x80\x7d\x80\x7e\x80\x81\x80\x82\x80\x85\x80\x88\x80\x8a\x80\x8d\x80\x8e\x80\x8f\x80\x90\x80\x91\x80\x92\x80\x94\x80\x95\x80\x97\x80\x99\x80\x9e\x80\xa3\x80\xa6\x80\xa7\x80\xa8\x80\xac\x80\xb0\x80\xb3\x80\xb5\x80\xb6\x80\xb8\x80\xb9\x80\xbb\x80\xc5\x80\xc7\x80\xc8\x80\xc9\x80\xca\x80\xcb\x80\xcf\x80\xd0\x80\xd1\x80\xd2\x80\xd3\x80\xd4\x80\xd5\x80\xd8", /* ae80 */ "\x00\x00\x80\xdf\x80\xe0\x80\xe2\x80\xe3\x80\xe6\x80\xee\x80\xf5\x80\xf7\x80\xf9\x80\xfb\x80\xfe\x80\xff\x81\x00\x81\x01\x81\x03\x81\x04\x81\x05\x81\x07\x81\x08\x81\x0b\x81\x0c\x81\x15\x81\x17\x81\x19\x81\x1b\x81\x1c\x81\x1d\x81\x1f\x81\x20\x81\x21\x81\x22\x81\x23\x81\x24\x81\x25\x81\x26\x81\x27\x81\x28\x81\x29\x81\x2a\x81\x2b\x81\x2d\x81\x2e\x81\x30\x81\x33\x81\x34\x81\x35\x81\x37\x81\x39\x81\x3a\x81\x3b\x81\x3c\x81\x3d\x81\x3f\x81\x40\x81\x41\x81\x42\x81\x43\x81\x44\x81\x45\x81\x47\x81\x49\x81\x4d\x81\x4e\x81\x4f\x81\x52\x81\x56\x81\x57\x81\x58\x81\x5b\x81\x5c\x81\x5d\x81\x5e\x81\x5f\x81\x61\x81\x62\x81\x63\x81\x64\x81\x66\x81\x68\x81\x6a\x81\x6b\x81\x6c\x81\x6f\x81\x72\x81\x73\x81\x75\x81\x76\x81\x77\x81\x78\x81\x81\x81\x83\x81\x84\x81\x85\x81\x86\x81\x87\x81\x89\x81\x8b\x81\x8c\x81\x8d\x81\x8e\x81\x90\x81\x92\x81\x93\x81\x94\x81\x95\x81\x96\x81\x97\x81\x99\x81\x9a\x81\x9e\x81\x9f\x81\xa0\x81\xa1\x81\xa2\x81\xa4\x81\xa5\x81\xa7\x81\xa9\x81\xab\x81\xac\x81\xad\x81\xae\x81\xaf\x81\xb0\x81\xb1\x00\x00\x00\x00", /* af00 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x81\xb2\x81\xb4\x81\xb5\x81\xb6\x81\xb7\x81\xb8\x81\xb9\x81\xbc\x81\xbd\x81\xbe\x81\xbf\x81\xc4\x81\xc5\x81\xc7\x81\xc8\x81\xc9\x81\xcb\x81\xcd\x81\xce\x81\xcf\x81\xd0\x81\xd1\x81\xd2\x81\xd3\x81\xd4\x81\xd5\x81\xd6\x81\xd7\x81\xd8\x81\xd9\x81\xda\x81\xdb\x81\xdc\x81\xdd\x81\xde\x81\xdf\x81\xe0\x81\xe1\x81\xe2\x81\xe4\x81\xe5\x81\xe6\x81\xe8\x81\xe9\x81\xeb\x81\xee\x81\xef\x81\xf0\x81\xf1\x81\xf2\x81\xf5\x81\xf6\x81\xf7\x81\xf8\x81\xf9\x81\xfa\x81\xfd\x81\xff\x82\x03\x82\x07\x82\x08\x82\x09\x82\x0a", /* af80 */ "\x00\x00\x82\x0b\x82\x0e\x82\x0f\x82\x11\x82\x13\x82\x15\x82\x16\x82\x17\x82\x18\x82\x19\x82\x1a\x82\x1d\x82\x20\x82\x24\x82\x25\x82\x26\x82\x27\x82\x29\x82\x2e\x82\x32\x82\x3a\x82\x3c\x82\x3d\x82\x3f\x82\x40\x82\x41\x82\x42\x82\x43\x82\x45\x82\x46\x82\x48\x82\x4a\x82\x4c\x82\x4d\x82\x4e\x82\x50\x82\x51\x82\x52\x82\x53\x82\x54\x82\x55\x82\x56\x82\x57\x82\x59\x82\x5b\x82\x5c\x82\x5d\x82\x5e\x82\x60\x82\x61\x82\x62\x82\x63\x82\x64\x82\x65\x82\x66\x82\x67\x82\x69\x82\x6a\x82\x6b\x82\x6c\x82\x6d\x82\x71\x82\x75\x82\x76\x82\x77\x82\x78\x82\x7b\x82\x7c\x82\x80\x82\x81\x82\x83\x82\x85\x82\x86\x82\x87\x82\x89\x82\x8c\x82\x90\x82\x93\x82\x94\x82\x95\x82\x96\x82\x9a\x82\x9b\x82\x9e\x82\xa0\x82\xa2\x82\xa3\x82\xa7\x82\xb2\x82\xb5\x82\xb6\x82\xba\x82\xbb\x82\xbc\x82\xbf\x82\xc0\x82\xc2\x82\xc3\x82\xc5\x82\xc6\x82\xc9\x82\xd0\x82\xd6\x82\xd9\x82\xda\x82\xdd\x82\xe2\x82\xe7\x82\xe8\x82\xe9\x82\xea\x82\xec\x82\xed\x82\xee\x82\xf0\x82\xf2\x82\xf3\x82\xf5\x82\xf6\x82\xf8\x82\xfa\x82\xfc\x82\xfd\x82\xfe\x82\xff\x00\x00\x00\x00", /* b000 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x83\x00\x83\x0a\x83\x0b\x83\x0d\x83\x10\x83\x12\x83\x13\x83\x16\x83\x18\x83\x19\x83\x1d\x83\x1e\x83\x1f\x83\x20\x83\x21\x83\x22\x83\x23\x83\x24\x83\x25\x83\x26\x83\x29\x83\x2a\x83\x2e\x83\x30\x83\x32\x83\x37\x83\x3b\x83\x3d\x83\x3e\x83\x3f\x83\x41\x83\x42\x83\x44\x83\x45\x83\x48\x83\x4a\x83\x4b\x83\x4c\x83\x4d\x83\x4e\x83\x53\x83\x55\x83\x56\x83\x57\x83\x58\x83\x59\x83\x5d\x83\x62\x83\x70\x83\x71\x83\x72\x83\x73\x83\x74\x83\x75\x83\x76\x83\x79\x83\x7a\x83\x7e\x83\x7f\x83\x80\x83\x81\x83\x82\x83\x83", /* b080 */ "\x00\x00\x83\x84\x83\x87\x83\x88\x83\x8a\x83\x8b\x83\x8c\x83\x8d\x83\x8f\x83\x90\x83\x91\x83\x94\x83\x95\x83\x96\x83\x97\x83\x99\x83\x9a\x83\x9d\x83\x9f\x83\xa1\x83\xa2\x83\xa3\x83\xa4\x83\xa5\x83\xa6\x83\xa7\x83\xac\x83\xad\x83\xae\x83\xaf\x83\xb5\x83\xbb\x83\xbe\x83\xbf\x83\xc2\x83\xc3\x83\xc4\x83\xc6\x83\xc8\x83\xc9\x83\xcb\x83\xcd\x83\xce\x83\xd0\x83\xd1\x83\xd2\x83\xd3\x83\xd5\x83\xd7\x83\xd9\x83\xda\x83\xdb\x83\xde\x83\xe2\x83\xe3\x83\xe4\x83\xe6\x83\xe7\x83\xe8\x83\xeb\x83\xec\x83\xed\x83\xee\x83\xef\x83\xf3\x83\xf4\x83\xf5\x83\xf6\x83\xf7\x83\xfa\x83\xfb\x83\xfc\x83\xfe\x83\xff\x84\x00\x84\x02\x84\x05\x84\x07\x84\x08\x84\x09\x84\x0a\x84\x10\x84\x12\x84\x13\x84\x14\x84\x15\x84\x16\x84\x17\x84\x19\x84\x1a\x84\x1b\x84\x1e\x84\x1f\x84\x20\x84\x21\x84\x22\x84\x23\x84\x29\x84\x2a\x84\x2b\x84\x2c\x84\x2d\x84\x2e\x84\x2f\x84\x30\x84\x32\x84\x33\x84\x34\x84\x35\x84\x36\x84\x37\x84\x39\x84\x3a\x84\x3b\x84\x3e\x84\x3f\x84\x40\x84\x41\x84\x42\x84\x43\x84\x44\x84\x45\x84\x47\x84\x48\x84\x49\x84\x4a\x00\x00\x00\x00", /* b100 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x84\x4b\x84\x4c\x84\x4d\x84\x4e\x84\x4f\x84\x50\x84\x52\x84\x53\x84\x54\x84\x55\x84\x56\x84\x58\x84\x5d\x84\x5e\x84\x5f\x84\x60\x84\x62\x84\x64\x84\x65\x84\x66\x84\x67\x84\x68\x84\x6a\x84\x6e\x84\x6f\x84\x70\x84\x72\x84\x74\x84\x77\x84\x79\x84\x7b\x84\x7c\x84\x7d\x84\x7e\x84\x7f\x84\x80\x84\x81\x84\x83\x84\x84\x84\x85\x84\x86\x84\x8a\x84\x8d\x84\x8f\x84\x90\x84\x91\x84\x92\x84\x93\x84\x94\x84\x95\x84\x96\x84\x98\x84\x9a\x84\x9b\x84\x9d\x84\x9e\x84\x9f\x84\xa0\x84\xa2\x84\xa3\x84\xa4\x84\xa5\x84\xa6", /* b180 */ "\x00\x00\x84\xa7\x84\xa8\x84\xa9\x84\xaa\x84\xab\x84\xac\x84\xad\x84\xae\x84\xb0\x84\xb1\x84\xb3\x84\xb5\x84\xb6\x84\xb7\x84\xbb\x84\xbc\x84\xbe\x84\xc0\x84\xc2\x84\xc3\x84\xc5\x84\xc6\x84\xc7\x84\xc8\x84\xcb\x84\xcc\x84\xce\x84\xcf\x84\xd2\x84\xd4\x84\xd5\x84\xd7\x84\xd8\x84\xd9\x84\xda\x84\xdb\x84\xdc\x84\xde\x84\xe1\x84\xe2\x84\xe4\x84\xe7\x84\xe8\x84\xe9\x84\xea\x84\xeb\x84\xed\x84\xee\x84\xef\x84\xf1\x84\xf2\x84\xf3\x84\xf4\x84\xf5\x84\xf6\x84\xf7\x84\xf8\x84\xf9\x84\xfa\x84\xfb\x84\xfd\x84\xfe\x85\x00\x85\x01\x85\x02\x85\x03\x85\x04\x85\x05\x85\x06\x85\x07\x85\x08\x85\x09\x85\x0a\x85\x0b\x85\x0d\x85\x0e\x85\x0f\x85\x10\x85\x12\x85\x14\x85\x15\x85\x16\x85\x18\x85\x19\x85\x1b\x85\x1c\x85\x1d\x85\x1e\x85\x20\x85\x22\x85\x23\x85\x24\x85\x25\x85\x26\x85\x27\x85\x28\x85\x29\x85\x2a\x85\x2d\x85\x2e\x85\x2f\x85\x30\x85\x31\x85\x32\x85\x33\x85\x34\x85\x35\x85\x36\x85\x3e\x85\x3f\x85\x40\x85\x41\x85\x42\x85\x44\x85\x45\x85\x46\x85\x47\x85\x4b\x85\x4c\x85\x4d\x85\x4e\x85\x4f\x85\x50\x85\x51\x85\x52\x00\x00\x00\x00", /* b200 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x85\x53\x85\x54\x85\x55\x85\x57\x85\x58\x85\x5a\x85\x5b\x85\x5c\x85\x5d\x85\x5f\x85\x60\x85\x61\x85\x62\x85\x63\x85\x65\x85\x66\x85\x67\x85\x69\x85\x6a\x85\x6b\x85\x6c\x85\x6d\x85\x6e\x85\x6f\x85\x70\x85\x71\x85\x73\x85\x75\x85\x76\x85\x77\x85\x78\x85\x7c\x85\x7d\x85\x7f\x85\x80\x85\x81\x85\x82\x85\x83\x85\x86\x85\x88\x85\x89\x85\x8a\x85\x8b\x85\x8c\x85\x8d\x85\x8e\x85\x90\x85\x91\x85\x92\x85\x93\x85\x94\x85\x95\x85\x96\x85\x97\x85\x98\x85\x99\x85\x9a\x85\x9d\x85\x9e\x85\x9f\x85\xa0\x85\xa1\x85\xa2", /* b280 */ "\x00\x00\x85\xa3\x85\xa5\x85\xa6\x85\xa7\x85\xa9\x85\xab\x85\xac\x85\xad\x85\xb1\x85\xb2\x85\xb3\x85\xb4\x85\xb5\x85\xb6\x85\xb8\x85\xba\x85\xbb\x85\xbc\x85\xbd\x85\xbe\x85\xbf\x85\xc0\x85\xc2\x85\xc3\x85\xc4\x85\xc5\x85\xc6\x85\xc7\x85\xc8\x85\xca\x85\xcb\x85\xcc\x85\xcd\x85\xce\x85\xd1\x85\xd2\x85\xd4\x85\xd6\x85\xd7\x85\xd8\x85\xd9\x85\xda\x85\xdb\x85\xdd\x85\xde\x85\xdf\x85\xe0\x85\xe1\x85\xe2\x85\xe3\x85\xe5\x85\xe6\x85\xe7\x85\xe8\x85\xea\x85\xeb\x85\xec\x85\xed\x85\xee\x85\xef\x85\xf0\x85\xf1\x85\xf2\x85\xf3\x85\xf4\x85\xf5\x85\xf6\x85\xf7\x85\xf8\x85\xf9\x85\xfa\x85\xfc\x85\xfd\x85\xfe\x86\x00\x86\x01\x86\x02\x86\x03\x86\x04\x86\x06\x86\x07\x86\x08\x86\x09\x86\x0a\x86\x0b\x86\x0c\x86\x0d\x86\x0e\x86\x0f\x86\x10\x86\x12\x86\x13\x86\x14\x86\x15\x86\x17\x86\x18\x86\x19\x86\x1a\x86\x1b\x86\x1c\x86\x1d\x86\x1e\x86\x1f\x86\x20\x86\x21\x86\x22\x86\x23\x86\x24\x86\x25\x86\x26\x86\x28\x86\x2a\x86\x2b\x86\x2c\x86\x2d\x86\x2e\x86\x2f\x86\x30\x86\x31\x86\x32\x86\x33\x86\x34\x86\x35\x86\x36\x86\x37\x00\x00\x00\x00", /* b300 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x86\x39\x86\x3a\x86\x3b\x86\x3d\x86\x3e\x86\x3f\x86\x40\x86\x41\x86\x42\x86\x43\x86\x44\x86\x45\x86\x46\x86\x47\x86\x48\x86\x49\x86\x4a\x86\x4b\x86\x4c\x86\x52\x86\x53\x86\x55\x86\x56\x86\x57\x86\x58\x86\x59\x86\x5b\x86\x5c\x86\x5d\x86\x5f\x86\x60\x86\x61\x86\x63\x86\x64\x86\x65\x86\x66\x86\x67\x86\x68\x86\x69\x86\x6a\x86\x6d\x86\x6f\x86\x70\x86\x72\x86\x73\x86\x74\x86\x75\x86\x76\x86\x77\x86\x78\x86\x83\x86\x84\x86\x85\x86\x86\x86\x87\x86\x88\x86\x89\x86\x8e\x86\x8f\x86\x90\x86\x91\x86\x92\x86\x94", /* b380 */ "\x00\x00\x86\x96\x86\x97\x86\x98\x86\x99\x86\x9a\x86\x9b\x86\x9e\x86\x9f\x86\xa0\x86\xa1\x86\xa2\x86\xa5\x86\xa6\x86\xab\x86\xad\x86\xae\x86\xb2\x86\xb3\x86\xb7\x86\xb8\x86\xb9\x86\xbb\x86\xbc\x86\xbd\x86\xbe\x86\xbf\x86\xc1\x86\xc2\x86\xc3\x86\xc5\x86\xc8\x86\xcc\x86\xcd\x86\xd2\x86\xd3\x86\xd5\x86\xd6\x86\xd7\x86\xda\x86\xdc\x86\xdd\x86\xe0\x86\xe1\x86\xe2\x86\xe3\x86\xe5\x86\xe6\x86\xe7\x86\xe8\x86\xea\x86\xeb\x86\xec\x86\xef\x86\xf5\x86\xf6\x86\xf7\x86\xfa\x86\xfb\x86\xfc\x86\xfd\x86\xff\x87\x01\x87\x04\x87\x05\x87\x06\x87\x0b\x87\x0c\x87\x0e\x87\x0f\x87\x10\x87\x11\x87\x14\x87\x16\x87\x19\x87\x1b\x87\x1d\x87\x1f\x87\x20\x87\x24\x87\x26\x87\x27\x87\x28\x87\x2a\x87\x2b\x87\x2c\x87\x2d\x87\x2f\x87\x30\x87\x32\x87\x33\x87\x35\x87\x36\x87\x38\x87\x39\x87\x3a\x87\x3c\x87\x3d\x87\x40\x87\x41\x87\x42\x87\x43\x87\x44\x87\x45\x87\x46\x87\x4a\x87\x4b\x87\x4d\x87\x4f\x87\x50\x87\x51\x87\x52\x87\x54\x87\x55\x87\x56\x87\x58\x87\x5a\x87\x5b\x87\x5c\x87\x5d\x87\x5e\x87\x5f\x87\x61\x87\x62\x87\x66\x87\x67\x00\x00\x00\x00", /* b400 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x87\x68\x87\x69\x87\x6a\x87\x6b\x87\x6c\x87\x6d\x87\x6f\x87\x71\x87\x72\x87\x73\x87\x75\x87\x77\x87\x78\x87\x79\x87\x7a\x87\x7f\x87\x80\x87\x81\x87\x84\x87\x86\x87\x87\x87\x89\x87\x8a\x87\x8c\x87\x8e\x87\x8f\x87\x90\x87\x91\x87\x92\x87\x94\x87\x95\x87\x96\x87\x98\x87\x99\x87\x9a\x87\x9b\x87\x9c\x87\x9d\x87\x9e\x87\xa0\x87\xa1\x87\xa2\x87\xa3\x87\xa4\x87\xa5\x87\xa6\x87\xa7\x87\xa9\x87\xaa\x87\xae\x87\xb0\x87\xb1\x87\xb2\x87\xb4\x87\xb6\x87\xb7\x87\xb8\x87\xb9\x87\xbb\x87\xbc\x87\xbe\x87\xbf\x87\xc1", /* b480 */ "\x00\x00\x87\xc2\x87\xc3\x87\xc4\x87\xc5\x87\xc7\x87\xc8\x87\xc9\x87\xcc\x87\xcd\x87\xce\x87\xcf\x87\xd0\x87\xd4\x87\xd5\x87\xd6\x87\xd7\x87\xd8\x87\xd9\x87\xda\x87\xdc\x87\xdd\x87\xde\x87\xdf\x87\xe1\x87\xe2\x87\xe3\x87\xe4\x87\xe6\x87\xe7\x87\xe8\x87\xe9\x87\xeb\x87\xec\x87\xed\x87\xef\x87\xf0\x87\xf1\x87\xf2\x87\xf3\x87\xf4\x87\xf5\x87\xf6\x87\xf7\x87\xf8\x87\xfa\x87\xfb\x87\xfc\x87\xfd\x87\xff\x88\x00\x88\x01\x88\x02\x88\x04\x88\x05\x88\x06\x88\x07\x88\x08\x88\x09\x88\x0b\x88\x0c\x88\x0d\x88\x0e\x88\x0f\x88\x10\x88\x11\x88\x12\x88\x14\x88\x17\x88\x18\x88\x19\x88\x1a\x88\x1c\x88\x1d\x88\x1e\x88\x1f\x88\x20\x88\x23\x88\x24\x88\x25\x88\x26\x88\x27\x88\x28\x88\x29\x88\x2a\x88\x2b\x88\x2c\x88\x2d\x88\x2e\x88\x2f\x88\x30\x88\x31\x88\x33\x88\x34\x88\x35\x88\x36\x88\x37\x88\x38\x88\x3a\x88\x3b\x88\x3d\x88\x3e\x88\x3f\x88\x41\x88\x42\x88\x43\x88\x46\x88\x47\x88\x48\x88\x49\x88\x4a\x88\x4b\x88\x4e\x88\x4f\x88\x50\x88\x51\x88\x52\x88\x53\x88\x55\x88\x56\x88\x58\x88\x5a\x88\x5b\x88\x5c\x88\x5d\x88\x5e\x00\x00\x00\x00", /* b500 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x88\x5f\x88\x60\x88\x66\x88\x67\x88\x6a\x88\x6d\x88\x6f\x88\x71\x88\x73\x88\x74\x88\x75\x88\x76\x88\x78\x88\x79\x88\x7a\x88\x7b\x88\x7c\x88\x80\x88\x83\x88\x86\x88\x87\x88\x89\x88\x8a\x88\x8c\x88\x8e\x88\x8f\x88\x90\x88\x91\x88\x93\x88\x94\x88\x95\x88\x97\x88\x98\x88\x99\x88\x9a\x88\x9b\x88\x9d\x88\x9e\x88\x9f\x88\xa0\x88\xa1\x88\xa3\x88\xa5\x88\xa6\x88\xa7\x88\xa8\x88\xa9\x88\xaa\x88\xac\x88\xae\x88\xaf\x88\xb0\x88\xb2\x88\xb3\x88\xb4\x88\xb5\x88\xb6\x88\xb8\x88\xb9\x88\xba\x88\xbb\x88\xbd\x88\xbe", /* b580 */ "\x00\x00\x88\xbf\x88\xc0\x88\xc3\x88\xc4\x88\xc7\x88\xc8\x88\xca\x88\xcb\x88\xcc\x88\xcd\x88\xcf\x88\xd0\x88\xd1\x88\xd3\x88\xd6\x88\xd7\x88\xda\x88\xdb\x88\xdc\x88\xdd\x88\xde\x88\xe0\x88\xe1\x88\xe6\x88\xe7\x88\xe9\x88\xea\x88\xeb\x88\xec\x88\xed\x88\xee\x88\xef\x88\xf2\x88\xf5\x88\xf6\x88\xf7\x88\xfa\x88\xfb\x88\xfd\x88\xff\x89\x00\x89\x01\x89\x03\x89\x04\x89\x05\x89\x06\x89\x07\x89\x08\x89\x09\x89\x0b\x89\x0c\x89\x0d\x89\x0e\x89\x0f\x89\x11\x89\x14\x89\x15\x89\x16\x89\x17\x89\x18\x89\x1c\x89\x1d\x89\x1e\x89\x1f\x89\x20\x89\x22\x89\x23\x89\x24\x89\x26\x89\x27\x89\x28\x89\x29\x89\x2c\x89\x2d\x89\x2e\x89\x2f\x89\x31\x89\x32\x89\x33\x89\x35\x89\x37\x89\x38\x89\x39\x89\x3a\x89\x3b\x89\x3c\x89\x3d\x89\x3e\x89\x3f\x89\x40\x89\x42\x89\x43\x89\x45\x89\x46\x89\x47\x89\x48\x89\x49\x89\x4a\x89\x4b\x89\x4c\x89\x4d\x89\x4e\x89\x4f\x89\x50\x89\x51\x89\x52\x89\x53\x89\x54\x89\x55\x89\x56\x89\x57\x89\x58\x89\x59\x89\x5a\x89\x5b\x89\x5c\x89\x5d\x89\x60\x89\x61\x89\x62\x89\x63\x89\x64\x89\x65\x89\x67\x89\x68\x00\x00\x00\x00", /* b600 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x89\x69\x89\x6a\x89\x6b\x89\x6c\x89\x6d\x89\x6e\x89\x6f\x89\x70\x89\x71\x89\x72\x89\x73\x89\x74\x89\x75\x89\x76\x89\x77\x89\x78\x89\x79\x89\x7a\x89\x7c\x89\x7d\x89\x7e\x89\x80\x89\x82\x89\x84\x89\x85\x89\x87\x89\x88\x89\x89\x89\x8a\x89\x8b\x89\x8c\x89\x8d\x89\x8e\x89\x8f\x89\x90\x89\x91\x89\x92\x89\x93\x89\x94\x89\x95\x89\x96\x89\x97\x89\x98\x89\x99\x89\x9a\x89\x9b\x89\x9c\x89\x9d\x89\x9e\x89\x9f\x89\xa0\x89\xa1\x89\xa2\x89\xa3\x89\xa4\x89\xa5\x89\xa6\x89\xa7\x89\xa8\x89\xa9\x89\xaa\x89\xab\x89\xac", /* b680 */ "\x00\x00\x89\xad\x89\xae\x89\xaf\x89\xb0\x89\xb1\x89\xb2\x89\xb3\x89\xb4\x89\xb5\x89\xb6\x89\xb7\x89\xb8\x89\xb9\x89\xba\x89\xbb\x89\xbc\x89\xbd\x89\xbe\x89\xbf\x89\xc0\x89\xc3\x89\xcd\x89\xd3\x89\xd4\x89\xd5\x89\xd7\x89\xd8\x89\xd9\x89\xdb\x89\xdd\x89\xdf\x89\xe0\x89\xe1\x89\xe2\x89\xe4\x89\xe7\x89\xe8\x89\xe9\x89\xea\x89\xec\x89\xed\x89\xee\x89\xf0\x89\xf1\x89\xf2\x89\xf4\x89\xf5\x89\xf6\x89\xf7\x89\xf8\x89\xf9\x89\xfa\x89\xfb\x89\xfc\x89\xfd\x89\xfe\x89\xff\x8a\x01\x8a\x02\x8a\x03\x8a\x04\x8a\x05\x8a\x06\x8a\x08\x8a\x09\x8a\x0a\x8a\x0b\x8a\x0c\x8a\x0d\x8a\x0e\x8a\x0f\x8a\x10\x8a\x11\x8a\x12\x8a\x13\x8a\x14\x8a\x15\x8a\x16\x8a\x17\x8a\x18\x8a\x19\x8a\x1a\x8a\x1b\x8a\x1c\x8a\x1d\x8a\x1e\x8a\x1f\x8a\x20\x8a\x21\x8a\x22\x8a\x23\x8a\x24\x8a\x25\x8a\x26\x8a\x27\x8a\x28\x8a\x29\x8a\x2a\x8a\x2b\x8a\x2c\x8a\x2d\x8a\x2e\x8a\x2f\x8a\x30\x8a\x31\x8a\x32\x8a\x33\x8a\x34\x8a\x35\x8a\x36\x8a\x37\x8a\x38\x8a\x39\x8a\x3a\x8a\x3b\x8a\x3c\x8a\x3d\x8a\x3f\x8a\x40\x8a\x41\x8a\x42\x8a\x43\x8a\x44\x8a\x45\x8a\x46\x00\x00\x00\x00", /* b700 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x8a\x47\x8a\x49\x8a\x4a\x8a\x4b\x8a\x4c\x8a\x4d\x8a\x4e\x8a\x4f\x8a\x50\x8a\x51\x8a\x52\x8a\x53\x8a\x54\x8a\x55\x8a\x56\x8a\x57\x8a\x58\x8a\x59\x8a\x5a\x8a\x5b\x8a\x5c\x8a\x5d\x8a\x5e\x8a\x5f\x8a\x60\x8a\x61\x8a\x62\x8a\x63\x8a\x64\x8a\x65\x8a\x66\x8a\x67\x8a\x68\x8a\x69\x8a\x6a\x8a\x6b\x8a\x6c\x8a\x6d\x8a\x6e\x8a\x6f\x8a\x70\x8a\x71\x8a\x72\x8a\x73\x8a\x74\x8a\x75\x8a\x76\x8a\x77\x8a\x78\x8a\x7a\x8a\x7b\x8a\x7c\x8a\x7d\x8a\x7e\x8a\x7f\x8a\x80\x8a\x81\x8a\x82\x8a\x83\x8a\x84\x8a\x85\x8a\x86\x8a\x87", /* b780 */ "\x00\x00\x8a\x88\x8a\x8b\x8a\x8c\x8a\x8d\x8a\x8e\x8a\x8f\x8a\x90\x8a\x91\x8a\x92\x8a\x94\x8a\x95\x8a\x96\x8a\x97\x8a\x98\x8a\x99\x8a\x9a\x8a\x9b\x8a\x9c\x8a\x9d\x8a\x9e\x8a\x9f\x8a\xa0\x8a\xa1\x8a\xa2\x8a\xa3\x8a\xa4\x8a\xa5\x8a\xa6\x8a\xa7\x8a\xa8\x8a\xa9\x8a\xaa\x8a\xab\x8a\xac\x8a\xad\x8a\xae\x8a\xaf\x8a\xb0\x8a\xb1\x8a\xb2\x8a\xb3\x8a\xb4\x8a\xb5\x8a\xb6\x8a\xb7\x8a\xb8\x8a\xb9\x8a\xba\x8a\xbb\x8a\xbc\x8a\xbd\x8a\xbe\x8a\xbf\x8a\xc0\x8a\xc1\x8a\xc2\x8a\xc3\x8a\xc4\x8a\xc5\x8a\xc6\x8a\xc7\x8a\xc8\x8a\xc9\x8a\xca\x8a\xcb\x8a\xcc\x8a\xcd\x8a\xce\x8a\xcf\x8a\xd0\x8a\xd1\x8a\xd2\x8a\xd3\x8a\xd4\x8a\xd5\x8a\xd6\x8a\xd7\x8a\xd8\x8a\xd9\x8a\xda\x8a\xdb\x8a\xdc\x8a\xdd\x8a\xde\x8a\xdf\x8a\xe0\x8a\xe1\x8a\xe2\x8a\xe3\x8a\xe4\x8a\xe5\x8a\xe6\x8a\xe7\x8a\xe8\x8a\xe9\x8a\xea\x8a\xeb\x8a\xec\x8a\xed\x8a\xee\x8a\xef\x8a\xf0\x8a\xf1\x8a\xf2\x8a\xf3\x8a\xf4\x8a\xf5\x8a\xf6\x8a\xf7\x8a\xf8\x8a\xf9\x8a\xfa\x8a\xfb\x8a\xfc\x8a\xfd\x8a\xfe\x8a\xff\x8b\x00\x8b\x01\x8b\x02\x8b\x03\x8b\x04\x8b\x05\x8b\x06\x8b\x08\x00\x00\x00\x00", /* b800 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x8b\x09\x8b\x0a\x8b\x0b\x8b\x0c\x8b\x0d\x8b\x0e\x8b\x0f\x8b\x10\x8b\x11\x8b\x12\x8b\x13\x8b\x14\x8b\x15\x8b\x16\x8b\x17\x8b\x18\x8b\x19\x8b\x1a\x8b\x1b\x8b\x1c\x8b\x1d\x8b\x1e\x8b\x1f\x8b\x20\x8b\x21\x8b\x22\x8b\x23\x8b\x24\x8b\x25\x8b\x27\x8b\x28\x8b\x29\x8b\x2a\x8b\x2b\x8b\x2c\x8b\x2d\x8b\x2e\x8b\x2f\x8b\x30\x8b\x31\x8b\x32\x8b\x33\x8b\x34\x8b\x35\x8b\x36\x8b\x37\x8b\x38\x8b\x39\x8b\x3a\x8b\x3b\x8b\x3c\x8b\x3d\x8b\x3e\x8b\x3f\x8b\x40\x8b\x41\x8b\x42\x8b\x43\x8b\x44\x8b\x45\x8b\x46\x8b\x47\x8b\x48", /* b880 */ "\x00\x00\x8b\x49\x8b\x4a\x8b\x4b\x8b\x4c\x8b\x4d\x8b\x4e\x8b\x4f\x8b\x50\x8b\x51\x8b\x52\x8b\x53\x8b\x54\x8b\x55\x8b\x56\x8b\x57\x8b\x58\x8b\x59\x8b\x5a\x8b\x5b\x8b\x5c\x8b\x5d\x8b\x5e\x8b\x5f\x8b\x60\x8b\x61\x8b\x62\x8b\x63\x8b\x64\x8b\x65\x8b\x67\x8b\x68\x8b\x69\x8b\x6a\x8b\x6b\x8b\x6d\x8b\x6e\x8b\x6f\x8b\x70\x8b\x71\x8b\x72\x8b\x73\x8b\x74\x8b\x75\x8b\x76\x8b\x77\x8b\x78\x8b\x79\x8b\x7a\x8b\x7b\x8b\x7c\x8b\x7d\x8b\x7e\x8b\x7f\x8b\x80\x8b\x81\x8b\x82\x8b\x83\x8b\x84\x8b\x85\x8b\x86\x8b\x87\x8b\x88\x8b\x89\x8b\x8a\x8b\x8b\x8b\x8c\x8b\x8d\x8b\x8e\x8b\x8f\x8b\x90\x8b\x91\x8b\x92\x8b\x93\x8b\x94\x8b\x95\x8b\x96\x8b\x97\x8b\x98\x8b\x99\x8b\x9a\x8b\x9b\x8b\x9c\x8b\x9d\x8b\x9e\x8b\x9f\x8b\xac\x8b\xb1\x8b\xbb\x8b\xc7\x8b\xd0\x8b\xea\x8c\x09\x8c\x1e\x8c\x38\x8c\x39\x8c\x3a\x8c\x3b\x8c\x3c\x8c\x3d\x8c\x3e\x8c\x3f\x8c\x40\x8c\x42\x8c\x43\x8c\x44\x8c\x45\x8c\x48\x8c\x4a\x8c\x4b\x8c\x4d\x8c\x4e\x8c\x4f\x8c\x50\x8c\x51\x8c\x52\x8c\x53\x8c\x54\x8c\x56\x8c\x57\x8c\x58\x8c\x59\x8c\x5b\x8c\x5c\x8c\x5d\x8c\x5e\x00\x00\x00\x00", /* b900 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x8c\x5f\x8c\x60\x8c\x63\x8c\x64\x8c\x65\x8c\x66\x8c\x67\x8c\x68\x8c\x69\x8c\x6c\x8c\x6d\x8c\x6e\x8c\x6f\x8c\x70\x8c\x71\x8c\x72\x8c\x74\x8c\x75\x8c\x76\x8c\x77\x8c\x7b\x8c\x7c\x8c\x7d\x8c\x7e\x8c\x7f\x8c\x80\x8c\x81\x8c\x83\x8c\x84\x8c\x86\x8c\x87\x8c\x88\x8c\x8b\x8c\x8d\x8c\x8e\x8c\x8f\x8c\x90\x8c\x91\x8c\x92\x8c\x93\x8c\x95\x8c\x96\x8c\x97\x8c\x99\x8c\x9a\x8c\x9b\x8c\x9c\x8c\x9d\x8c\x9e\x8c\x9f\x8c\xa0\x8c\xa1\x8c\xa2\x8c\xa3\x8c\xa4\x8c\xa5\x8c\xa6\x8c\xa7\x8c\xa8\x8c\xa9\x8c\xaa\x8c\xab\x8c\xac", /* b980 */ "\x00\x00\x8c\xad\x8c\xae\x8c\xaf\x8c\xb0\x8c\xb1\x8c\xb2\x8c\xb3\x8c\xb4\x8c\xb5\x8c\xb6\x8c\xb7\x8c\xb8\x8c\xb9\x8c\xba\x8c\xbb\x8c\xbc\x8c\xbd\x8c\xbe\x8c\xbf\x8c\xc0\x8c\xc1\x8c\xc2\x8c\xc3\x8c\xc4\x8c\xc5\x8c\xc6\x8c\xc7\x8c\xc8\x8c\xc9\x8c\xca\x8c\xcb\x8c\xcc\x8c\xcd\x8c\xce\x8c\xcf\x8c\xd0\x8c\xd1\x8c\xd2\x8c\xd3\x8c\xd4\x8c\xd5\x8c\xd6\x8c\xd7\x8c\xd8\x8c\xd9\x8c\xda\x8c\xdb\x8c\xdc\x8c\xdd\x8c\xde\x8c\xdf\x8c\xe0\x8c\xe1\x8c\xe2\x8c\xe3\x8c\xe4\x8c\xe5\x8c\xe6\x8c\xe7\x8c\xe8\x8c\xe9\x8c\xea\x8c\xeb\x8c\xec\x8c\xed\x8c\xee\x8c\xef\x8c\xf0\x8c\xf1\x8c\xf2\x8c\xf3\x8c\xf4\x8c\xf5\x8c\xf6\x8c\xf7\x8c\xf8\x8c\xf9\x8c\xfa\x8c\xfb\x8c\xfc\x8c\xfd\x8c\xfe\x8c\xff\x8d\x00\x8d\x01\x8d\x02\x8d\x03\x8d\x04\x8d\x05\x8d\x06\x8d\x07\x8d\x08\x8d\x09\x8d\x0a\x8d\x0b\x8d\x0c\x8d\x0d\x8d\x0e\x8d\x0f\x8d\x10\x8d\x11\x8d\x12\x8d\x13\x8d\x14\x8d\x15\x8d\x16\x8d\x17\x8d\x18\x8d\x19\x8d\x1a\x8d\x1b\x8d\x1c\x8d\x20\x8d\x51\x8d\x52\x8d\x57\x8d\x5f\x8d\x65\x8d\x68\x8d\x69\x8d\x6a\x8d\x6c\x8d\x6e\x8d\x6f\x8d\x71\x00\x00\x00\x00", /* ba00 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x8d\x72\x8d\x78\x8d\x79\x8d\x7a\x8d\x7b\x8d\x7c\x8d\x7d\x8d\x7e\x8d\x7f\x8d\x80\x8d\x82\x8d\x83\x8d\x86\x8d\x87\x8d\x88\x8d\x89\x8d\x8c\x8d\x8d\x8d\x8e\x8d\x8f\x8d\x90\x8d\x92\x8d\x93\x8d\x95\x8d\x96\x8d\x97\x8d\x98\x8d\x99\x8d\x9a\x8d\x9b\x8d\x9c\x8d\x9d\x8d\x9e\x8d\xa0\x8d\xa1\x8d\xa2\x8d\xa4\x8d\xa5\x8d\xa6\x8d\xa7\x8d\xa8\x8d\xa9\x8d\xaa\x8d\xab\x8d\xac\x8d\xad\x8d\xae\x8d\xaf\x8d\xb0\x8d\xb2\x8d\xb6\x8d\xb7\x8d\xb9\x8d\xbb\x8d\xbd\x8d\xc0\x8d\xc1\x8d\xc2\x8d\xc5\x8d\xc7\x8d\xc8\x8d\xc9\x8d\xca", /* ba80 */ "\x00\x00\x8d\xcd\x8d\xd0\x8d\xd2\x8d\xd3\x8d\xd4\x8d\xd5\x8d\xd8\x8d\xd9\x8d\xdc\x8d\xe0\x8d\xe1\x8d\xe2\x8d\xe5\x8d\xe6\x8d\xe7\x8d\xe9\x8d\xed\x8d\xee\x8d\xf0\x8d\xf1\x8d\xf2\x8d\xf4\x8d\xf6\x8d\xfc\x8d\xfe\x8d\xff\x8e\x00\x8e\x01\x8e\x02\x8e\x03\x8e\x04\x8e\x06\x8e\x07\x8e\x08\x8e\x0b\x8e\x0d\x8e\x0e\x8e\x10\x8e\x11\x8e\x12\x8e\x13\x8e\x15\x8e\x16\x8e\x17\x8e\x18\x8e\x19\x8e\x1a\x8e\x1b\x8e\x1c\x8e\x20\x8e\x21\x8e\x24\x8e\x25\x8e\x26\x8e\x27\x8e\x28\x8e\x2b\x8e\x2d\x8e\x30\x8e\x32\x8e\x33\x8e\x34\x8e\x36\x8e\x37\x8e\x38\x8e\x3b\x8e\x3c\x8e\x3e\x8e\x3f\x8e\x43\x8e\x45\x8e\x46\x8e\x4c\x8e\x4d\x8e\x4e\x8e\x4f\x8e\x50\x8e\x53\x8e\x54\x8e\x55\x8e\x56\x8e\x57\x8e\x58\x8e\x5a\x8e\x5b\x8e\x5c\x8e\x5d\x8e\x5e\x8e\x5f\x8e\x60\x8e\x61\x8e\x62\x8e\x63\x8e\x64\x8e\x65\x8e\x67\x8e\x68\x8e\x6a\x8e\x6b\x8e\x6e\x8e\x71\x8e\x73\x8e\x75\x8e\x77\x8e\x78\x8e\x79\x8e\x7a\x8e\x7b\x8e\x7d\x8e\x7e\x8e\x80\x8e\x82\x8e\x83\x8e\x84\x8e\x86\x8e\x88\x8e\x89\x8e\x8a\x8e\x8b\x8e\x8c\x8e\x8d\x8e\x8e\x8e\x91\x8e\x92\x8e\x93\x00\x00\x00\x00", /* bb00 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x8e\x95\x8e\x96\x8e\x97\x8e\x98\x8e\x99\x8e\x9a\x8e\x9b\x8e\x9d\x8e\x9f\x8e\xa0\x8e\xa1\x8e\xa2\x8e\xa3\x8e\xa4\x8e\xa5\x8e\xa6\x8e\xa7\x8e\xa8\x8e\xa9\x8e\xaa\x8e\xad\x8e\xae\x8e\xb0\x8e\xb1\x8e\xb3\x8e\xb4\x8e\xb5\x8e\xb6\x8e\xb7\x8e\xb8\x8e\xb9\x8e\xbb\x8e\xbc\x8e\xbd\x8e\xbe\x8e\xbf\x8e\xc0\x8e\xc1\x8e\xc2\x8e\xc3\x8e\xc4\x8e\xc5\x8e\xc6\x8e\xc7\x8e\xc8\x8e\xc9\x8e\xca\x8e\xcb\x8e\xcc\x8e\xcd\x8e\xcf\x8e\xd0\x8e\xd1\x8e\xd2\x8e\xd3\x8e\xd4\x8e\xd5\x8e\xd6\x8e\xd7\x8e\xd8\x8e\xd9\x8e\xda\x8e\xdb", /* bb80 */ "\x00\x00\x8e\xdc\x8e\xdd\x8e\xde\x8e\xdf\x8e\xe0\x8e\xe1\x8e\xe2\x8e\xe3\x8e\xe4\x8e\xe5\x8e\xe6\x8e\xe7\x8e\xe8\x8e\xe9\x8e\xea\x8e\xeb\x8e\xec\x8e\xed\x8e\xee\x8e\xef\x8e\xf0\x8e\xf1\x8e\xf2\x8e\xf3\x8e\xf4\x8e\xf5\x8e\xf6\x8e\xf7\x8e\xf8\x8e\xf9\x8e\xfa\x8e\xfb\x8e\xfc\x8e\xfd\x8e\xfe\x8e\xff\x8f\x00\x8f\x01\x8f\x02\x8f\x03\x8f\x04\x8f\x05\x8f\x06\x8f\x07\x8f\x08\x8f\x09\x8f\x0a\x8f\x0b\x8f\x0c\x8f\x0d\x8f\x0e\x8f\x0f\x8f\x10\x8f\x11\x8f\x12\x8f\x13\x8f\x14\x8f\x15\x8f\x16\x8f\x17\x8f\x18\x8f\x19\x8f\x1a\x8f\x1b\x8f\x1c\x8f\x1d\x8f\x1e\x8f\x1f\x8f\x20\x8f\x21\x8f\x22\x8f\x23\x8f\x24\x8f\x25\x8f\x26\x8f\x27\x8f\x28\x8f\x29\x8f\x2a\x8f\x2b\x8f\x2c\x8f\x2d\x8f\x2e\x8f\x2f\x8f\x30\x8f\x31\x8f\x32\x8f\x33\x8f\x34\x8f\x35\x8f\x36\x8f\x37\x8f\x38\x8f\x39\x8f\x3a\x8f\x3b\x8f\x3c\x8f\x3d\x8f\x3e\x8f\x3f\x8f\x40\x8f\x41\x8f\x42\x8f\x43\x8f\x44\x8f\x45\x8f\x46\x8f\x47\x8f\x48\x8f\x49\x8f\x4a\x8f\x4b\x8f\x4c\x8f\x4d\x8f\x4e\x8f\x4f\x8f\x50\x8f\x51\x8f\x52\x8f\x53\x8f\x54\x8f\x55\x8f\x56\x8f\x57\x8f\x58\x00\x00\x00\x00", /* bc00 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x8f\x59\x8f\x5a\x8f\x5b\x8f\x5c\x8f\x5d\x8f\x5e\x8f\x5f\x8f\x60\x8f\x61\x8f\x62\x8f\x63\x8f\x64\x8f\x65\x8f\x6a\x8f\x80\x8f\x8c\x8f\x92\x8f\x9d\x8f\xa0\x8f\xa1\x8f\xa2\x8f\xa4\x8f\xa5\x8f\xa6\x8f\xa7\x8f\xaa\x8f\xac\x8f\xad\x8f\xae\x8f\xaf\x8f\xb2\x8f\xb3\x8f\xb4\x8f\xb5\x8f\xb7\x8f\xb8\x8f\xba\x8f\xbb\x8f\xbc\x8f\xbf\x8f\xc0\x8f\xc3\x8f\xc6\x8f\xc9\x8f\xca\x8f\xcb\x8f\xcc\x8f\xcd\x8f\xcf\x8f\xd2\x8f\xd6\x8f\xd7\x8f\xda\x8f\xe0\x8f\xe1\x8f\xe3\x8f\xe7\x8f\xec\x8f\xef\x8f\xf1\x8f\xf2\x8f\xf4\x8f\xf5", /* bc80 */ "\x00\x00\x8f\xf6\x8f\xfa\x8f\xfb\x8f\xfc\x8f\xfe\x8f\xff\x90\x07\x90\x08\x90\x0c\x90\x0e\x90\x13\x90\x15\x90\x18\x90\x19\x90\x1c\x90\x23\x90\x24\x90\x25\x90\x27\x90\x28\x90\x29\x90\x2a\x90\x2b\x90\x2c\x90\x30\x90\x31\x90\x32\x90\x33\x90\x34\x90\x37\x90\x39\x90\x3a\x90\x3d\x90\x3f\x90\x40\x90\x43\x90\x45\x90\x46\x90\x48\x90\x49\x90\x4a\x90\x4b\x90\x4c\x90\x4e\x90\x54\x90\x55\x90\x56\x90\x59\x90\x5a\x90\x5c\x90\x5d\x90\x5e\x90\x5f\x90\x60\x90\x61\x90\x64\x90\x66\x90\x67\x90\x69\x90\x6a\x90\x6b\x90\x6c\x90\x6f\x90\x70\x90\x71\x90\x72\x90\x73\x90\x76\x90\x77\x90\x78\x90\x79\x90\x7a\x90\x7b\x90\x7c\x90\x7e\x90\x81\x90\x84\x90\x85\x90\x86\x90\x87\x90\x89\x90\x8a\x90\x8c\x90\x8d\x90\x8e\x90\x8f\x90\x90\x90\x92\x90\x94\x90\x96\x90\x98\x90\x9a\x90\x9c\x90\x9e\x90\x9f\x90\xa0\x90\xa4\x90\xa5\x90\xa7\x90\xa8\x90\xa9\x90\xab\x90\xad\x90\xb2\x90\xb7\x90\xbc\x90\xbd\x90\xbf\x90\xc0\x90\xc2\x90\xc3\x90\xc6\x90\xc8\x90\xc9\x90\xcb\x90\xcc\x90\xcd\x90\xd2\x90\xd4\x90\xd5\x90\xd6\x90\xd8\x90\xd9\x90\xda\x90\xde\x00\x00\x00\x00", /* bd00 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x90\xdf\x90\xe0\x90\xe3\x90\xe4\x90\xe5\x90\xe9\x90\xea\x90\xec\x90\xee\x90\xf0\x90\xf1\x90\xf2\x90\xf3\x90\xf5\x90\xf6\x90\xf7\x90\xf9\x90\xfa\x90\xfb\x90\xfc\x90\xff\x91\x00\x91\x01\x91\x03\x91\x05\x91\x06\x91\x07\x91\x08\x91\x09\x91\x0a\x91\x0b\x91\x0c\x91\x0d\x91\x0e\x91\x0f\x91\x10\x91\x11\x91\x12\x91\x13\x91\x14\x91\x15\x91\x16\x91\x17\x91\x18\x91\x1a\x91\x1b\x91\x1c\x91\x1d\x91\x1f\x91\x20\x91\x21\x91\x24\x91\x25\x91\x26\x91\x27\x91\x28\x91\x29\x91\x2a\x91\x2b\x91\x2c\x91\x2d\x91\x2e\x91\x30", /* bd80 */ "\x00\x00\x91\x32\x91\x33\x91\x34\x91\x35\x91\x36\x91\x37\x91\x38\x91\x3a\x91\x3b\x91\x3c\x91\x3d\x91\x3e\x91\x3f\x91\x40\x91\x41\x91\x42\x91\x44\x91\x45\x91\x47\x91\x48\x91\x51\x91\x53\x91\x54\x91\x55\x91\x56\x91\x58\x91\x59\x91\x5b\x91\x5c\x91\x5f\x91\x60\x91\x66\x91\x67\x91\x68\x91\x6b\x91\x6d\x91\x73\x91\x7a\x91\x7b\x91\x7c\x91\x80\x91\x81\x91\x82\x91\x83\x91\x84\x91\x86\x91\x88\x91\x8a\x91\x8e\x91\x8f\x91\x93\x91\x94\x91\x95\x91\x96\x91\x97\x91\x98\x91\x99\x91\x9c\x91\x9d\x91\x9e\x91\x9f\x91\xa0\x91\xa1\x91\xa4\x91\xa5\x91\xa6\x91\xa7\x91\xa8\x91\xa9\x91\xab\x91\xac\x91\xb0\x91\xb1\x91\xb2\x91\xb3\x91\xb6\x91\xb7\x91\xb8\x91\xb9\x91\xbb\x91\xbc\x91\xbd\x91\xbe\x91\xbf\x91\xc0\x91\xc1\x91\xc2\x91\xc3\x91\xc4\x91\xc5\x91\xc6\x91\xc8\x91\xcb\x91\xd0\x91\xd2\x91\xd3\x91\xd4\x91\xd5\x91\xd6\x91\xd7\x91\xd8\x91\xd9\x91\xda\x91\xdb\x91\xdd\x91\xde\x91\xdf\x91\xe0\x91\xe1\x91\xe2\x91\xe3\x91\xe4\x91\xe5\x91\xe6\x91\xe7\x91\xe8\x91\xe9\x91\xea\x91\xeb\x91\xec\x91\xed\x91\xee\x91\xef\x91\xf0\x91\xf1\x00\x00\x00\x00", /* be00 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x91\xf2\x91\xf3\x91\xf4\x91\xf5\x91\xf6\x91\xf7\x91\xf8\x91\xf9\x91\xfa\x91\xfb\x91\xfc\x91\xfd\x91\xfe\x91\xff\x92\x00\x92\x01\x92\x02\x92\x03\x92\x04\x92\x05\x92\x06\x92\x07\x92\x08\x92\x09\x92\x0a\x92\x0b\x92\x0c\x92\x0d\x92\x0e\x92\x0f\x92\x10\x92\x11\x92\x12\x92\x13\x92\x14\x92\x15\x92\x16\x92\x17\x92\x18\x92\x19\x92\x1a\x92\x1b\x92\x1c\x92\x1d\x92\x1e\x92\x1f\x92\x20\x92\x21\x92\x22\x92\x23\x92\x24\x92\x25\x92\x26\x92\x27\x92\x28\x92\x29\x92\x2a\x92\x2b\x92\x2c\x92\x2d\x92\x2e\x92\x2f\x92\x30", /* be80 */ "\x00\x00\x92\x31\x92\x32\x92\x33\x92\x34\x92\x35\x92\x36\x92\x37\x92\x38\x92\x39\x92\x3a\x92\x3b\x92\x3c\x92\x3d\x92\x3e\x92\x3f\x92\x40\x92\x41\x92\x42\x92\x43\x92\x44\x92\x45\x92\x46\x92\x47\x92\x48\x92\x49\x92\x4a\x92\x4b\x92\x4c\x92\x4d\x92\x4e\x92\x4f\x92\x50\x92\x51\x92\x52\x92\x53\x92\x54\x92\x55\x92\x56\x92\x57\x92\x58\x92\x59\x92\x5a\x92\x5b\x92\x5c\x92\x5d\x92\x5e\x92\x5f\x92\x60\x92\x61\x92\x62\x92\x63\x92\x64\x92\x65\x92\x66\x92\x67\x92\x68\x92\x69\x92\x6a\x92\x6b\x92\x6c\x92\x6d\x92\x6e\x92\x6f\x92\x70\x92\x71\x92\x72\x92\x73\x92\x75\x92\x76\x92\x77\x92\x78\x92\x79\x92\x7a\x92\x7b\x92\x7c\x92\x7d\x92\x7e\x92\x7f\x92\x80\x92\x81\x92\x82\x92\x83\x92\x84\x92\x85\x92\x86\x92\x87\x92\x88\x92\x89\x92\x8a\x92\x8b\x92\x8c\x92\x8d\x92\x8f\x92\x90\x92\x91\x92\x92\x92\x93\x92\x94\x92\x95\x92\x96\x92\x97\x92\x98\x92\x99\x92\x9a\x92\x9b\x92\x9c\x92\x9d\x92\x9e\x92\x9f\x92\xa0\x92\xa1\x92\xa2\x92\xa3\x92\xa4\x92\xa5\x92\xa6\x92\xa7\x92\xa8\x92\xa9\x92\xaa\x92\xab\x92\xac\x92\xad\x92\xaf\x92\xb0\x00\x00\x00\x00", /* bf00 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x92\xb1\x92\xb2\x92\xb3\x92\xb4\x92\xb5\x92\xb6\x92\xb7\x92\xb8\x92\xb9\x92\xba\x92\xbb\x92\xbc\x92\xbd\x92\xbe\x92\xbf\x92\xc0\x92\xc1\x92\xc2\x92\xc3\x92\xc4\x92\xc5\x92\xc6\x92\xc7\x92\xc9\x92\xca\x92\xcb\x92\xcc\x92\xcd\x92\xce\x92\xcf\x92\xd0\x92\xd1\x92\xd2\x92\xd3\x92\xd4\x92\xd5\x92\xd6\x92\xd7\x92\xd8\x92\xd9\x92\xda\x92\xdb\x92\xdc\x92\xdd\x92\xde\x92\xdf\x92\xe0\x92\xe1\x92\xe2\x92\xe3\x92\xe4\x92\xe5\x92\xe6\x92\xe7\x92\xe8\x92\xe9\x92\xea\x92\xeb\x92\xec\x92\xed\x92\xee\x92\xef\x92\xf0", /* bf80 */ "\x00\x00\x92\xf1\x92\xf2\x92\xf3\x92\xf4\x92\xf5\x92\xf6\x92\xf7\x92\xf8\x92\xf9\x92\xfa\x92\xfb\x92\xfc\x92\xfd\x92\xfe\x92\xff\x93\x00\x93\x01\x93\x02\x93\x03\x93\x04\x93\x05\x93\x06\x93\x07\x93\x08\x93\x09\x93\x0a\x93\x0b\x93\x0c\x93\x0d\x93\x0e\x93\x0f\x93\x10\x93\x11\x93\x12\x93\x13\x93\x14\x93\x15\x93\x16\x93\x17\x93\x18\x93\x19\x93\x1a\x93\x1b\x93\x1c\x93\x1d\x93\x1e\x93\x1f\x93\x20\x93\x21\x93\x22\x93\x23\x93\x24\x93\x25\x93\x26\x93\x27\x93\x28\x93\x29\x93\x2a\x93\x2b\x93\x2c\x93\x2d\x93\x2e\x93\x2f\x93\x30\x93\x31\x93\x32\x93\x33\x93\x34\x93\x35\x93\x36\x93\x37\x93\x38\x93\x39\x93\x3a\x93\x3b\x93\x3c\x93\x3d\x93\x3f\x93\x40\x93\x41\x93\x42\x93\x43\x93\x44\x93\x45\x93\x46\x93\x47\x93\x48\x93\x49\x93\x4a\x93\x4b\x93\x4c\x93\x4d\x93\x4e\x93\x4f\x93\x50\x93\x51\x93\x52\x93\x53\x93\x54\x93\x55\x93\x56\x93\x57\x93\x58\x93\x59\x93\x5a\x93\x5b\x93\x5c\x93\x5d\x93\x5e\x93\x5f\x93\x60\x93\x61\x93\x62\x93\x63\x93\x64\x93\x65\x93\x66\x93\x67\x93\x68\x93\x69\x93\x6b\x93\x6c\x93\x6d\x93\x6e\x93\x6f\x00\x00\x00\x00", /* c000 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x93\x70\x93\x71\x93\x72\x93\x73\x93\x74\x93\x75\x93\x76\x93\x77\x93\x78\x93\x79\x93\x7a\x93\x7b\x93\x7c\x93\x7d\x93\x7e\x93\x7f\x93\x80\x93\x81\x93\x82\x93\x83\x93\x84\x93\x85\x93\x86\x93\x87\x93\x88\x93\x89\x93\x8a\x93\x8b\x93\x8c\x93\x8d\x93\x8e\x93\x90\x93\x91\x93\x92\x93\x93\x93\x94\x93\x95\x93\x96\x93\x97\x93\x98\x93\x99\x93\x9a\x93\x9b\x93\x9c\x93\x9d\x93\x9e\x93\x9f\x93\xa0\x93\xa1\x93\xa2\x93\xa3\x93\xa4\x93\xa5\x93\xa6\x93\xa7\x93\xa8\x93\xa9\x93\xaa\x93\xab\x93\xac\x93\xad\x93\xae\x93\xaf", /* c080 */ "\x00\x00\x93\xb0\x93\xb1\x93\xb2\x93\xb3\x93\xb4\x93\xb5\x93\xb6\x93\xb7\x93\xb8\x93\xb9\x93\xba\x93\xbb\x93\xbc\x93\xbd\x93\xbe\x93\xbf\x93\xc0\x93\xc1\x93\xc2\x93\xc3\x93\xc4\x93\xc5\x93\xc6\x93\xc7\x93\xc8\x93\xc9\x93\xcb\x93\xcc\x93\xcd\x93\xce\x93\xcf\x93\xd0\x93\xd1\x93\xd2\x93\xd3\x93\xd4\x93\xd5\x93\xd7\x93\xd8\x93\xd9\x93\xda\x93\xdb\x93\xdc\x93\xdd\x93\xde\x93\xdf\x93\xe0\x93\xe1\x93\xe2\x93\xe3\x93\xe4\x93\xe5\x93\xe6\x93\xe7\x93\xe8\x93\xe9\x93\xea\x93\xeb\x93\xec\x93\xed\x93\xee\x93\xef\x93\xf0\x93\xf1\x93\xf2\x93\xf3\x93\xf4\x93\xf5\x93\xf6\x93\xf7\x93\xf8\x93\xf9\x93\xfa\x93\xfb\x93\xfc\x93\xfd\x93\xfe\x93\xff\x94\x00\x94\x01\x94\x02\x94\x03\x94\x04\x94\x05\x94\x06\x94\x07\x94\x08\x94\x09\x94\x0a\x94\x0b\x94\x0c\x94\x0d\x94\x0e\x94\x0f\x94\x10\x94\x11\x94\x12\x94\x13\x94\x14\x94\x15\x94\x16\x94\x17\x94\x18\x94\x19\x94\x1a\x94\x1b\x94\x1c\x94\x1d\x94\x1e\x94\x1f\x94\x20\x94\x21\x94\x22\x94\x23\x94\x24\x94\x25\x94\x26\x94\x27\x94\x28\x94\x29\x94\x2a\x94\x2b\x94\x2c\x94\x2d\x94\x2e\x00\x00\x00\x00", /* c100 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x94\x2f\x94\x30\x94\x31\x94\x32\x94\x33\x94\x34\x94\x35\x94\x36\x94\x37\x94\x38\x94\x39\x94\x3a\x94\x3b\x94\x3c\x94\x3d\x94\x3f\x94\x40\x94\x41\x94\x42\x94\x43\x94\x44\x94\x45\x94\x46\x94\x47\x94\x48\x94\x49\x94\x4a\x94\x4b\x94\x4c\x94\x4d\x94\x4e\x94\x4f\x94\x50\x94\x51\x94\x52\x94\x53\x94\x54\x94\x55\x94\x56\x94\x57\x94\x58\x94\x59\x94\x5a\x94\x5b\x94\x5c\x94\x5d\x94\x5e\x94\x5f\x94\x60\x94\x61\x94\x62\x94\x63\x94\x64\x94\x65\x94\x66\x94\x67\x94\x68\x94\x69\x94\x6a\x94\x6c\x94\x6d\x94\x6e\x94\x6f", /* c180 */ "\x00\x00\x94\x70\x94\x71\x94\x72\x94\x73\x94\x74\x94\x75\x94\x76\x94\x77\x94\x78\x94\x79\x94\x7a\x94\x7b\x94\x7c\x94\x7d\x94\x7e\x94\x7f\x94\x80\x94\x81\x94\x82\x94\x83\x94\x84\x94\x91\x94\x96\x94\x98\x94\xc7\x94\xcf\x94\xd3\x94\xd4\x94\xda\x94\xe6\x94\xfb\x95\x1c\x95\x20\x95\x27\x95\x33\x95\x3d\x95\x43\x95\x48\x95\x4b\x95\x55\x95\x5a\x95\x60\x95\x6e\x95\x74\x95\x75\x95\x77\x95\x78\x95\x79\x95\x7a\x95\x7b\x95\x7c\x95\x7d\x95\x7e\x95\x80\x95\x81\x95\x82\x95\x83\x95\x84\x95\x85\x95\x86\x95\x87\x95\x88\x95\x89\x95\x8a\x95\x8b\x95\x8c\x95\x8d\x95\x8e\x95\x8f\x95\x90\x95\x91\x95\x92\x95\x93\x95\x94\x95\x95\x95\x96\x95\x97\x95\x98\x95\x99\x95\x9a\x95\x9b\x95\x9c\x95\x9d\x95\x9e\x95\x9f\x95\xa0\x95\xa1\x95\xa2\x95\xa3\x95\xa4\x95\xa5\x95\xa6\x95\xa7\x95\xa8\x95\xa9\x95\xaa\x95\xab\x95\xac\x95\xad\x95\xae\x95\xaf\x95\xb0\x95\xb1\x95\xb2\x95\xb3\x95\xb4\x95\xb5\x95\xb6\x95\xb7\x95\xb8\x95\xb9\x95\xba\x95\xbb\x95\xbc\x95\xbd\x95\xbe\x95\xbf\x95\xc0\x95\xc1\x95\xc2\x95\xc3\x95\xc4\x95\xc5\x95\xc6\x95\xc7\x00\x00\x00\x00", /* c200 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x95\xc8\x95\xc9\x95\xca\x95\xcb\x95\xcc\x95\xcd\x95\xce\x95\xcf\x95\xd0\x95\xd1\x95\xd2\x95\xd3\x95\xd4\x95\xd5\x95\xd6\x95\xd7\x95\xd8\x95\xd9\x95\xda\x95\xdb\x95\xdc\x95\xdd\x95\xde\x95\xdf\x95\xe0\x95\xe1\x95\xe2\x95\xe3\x95\xe4\x95\xe5\x95\xe6\x95\xe7\x95\xec\x95\xff\x96\x07\x96\x13\x96\x18\x96\x1b\x96\x1e\x96\x20\x96\x23\x96\x24\x96\x25\x96\x26\x96\x27\x96\x28\x96\x29\x96\x2b\x96\x2c\x96\x2d\x96\x2f\x96\x30\x96\x37\x96\x38\x96\x39\x96\x3a\x96\x3e\x96\x41\x96\x43\x96\x4a\x96\x4e\x96\x4f\x96\x51", /* c280 */ "\x00\x00\x96\x52\x96\x53\x96\x56\x96\x57\x96\x58\x96\x59\x96\x5a\x96\x5c\x96\x5d\x96\x5e\x96\x60\x96\x63\x96\x65\x96\x66\x96\x6b\x96\x6d\x96\x6e\x96\x6f\x96\x70\x96\x71\x96\x73\x96\x78\x96\x79\x96\x7a\x96\x7b\x96\x7c\x96\x7d\x96\x7e\x96\x7f\x96\x80\x96\x81\x96\x82\x96\x83\x96\x84\x96\x87\x96\x89\x96\x8a\x96\x8c\x96\x8e\x96\x91\x96\x92\x96\x93\x96\x95\x96\x96\x96\x9a\x96\x9b\x96\x9d\x96\x9e\x96\x9f\x96\xa0\x96\xa1\x96\xa2\x96\xa3\x96\xa4\x96\xa5\x96\xa6\x96\xa8\x96\xa9\x96\xaa\x96\xab\x96\xac\x96\xad\x96\xae\x96\xaf\x96\xb1\x96\xb2\x96\xb4\x96\xb5\x96\xb7\x96\xb8\x96\xba\x96\xbb\x96\xbf\x96\xc2\x96\xc3\x96\xc8\x96\xca\x96\xcb\x96\xd0\x96\xd1\x96\xd3\x96\xd4\x96\xd6\x96\xd7\x96\xd8\x96\xd9\x96\xda\x96\xdb\x96\xdc\x96\xdd\x96\xde\x96\xdf\x96\xe1\x96\xe2\x96\xe3\x96\xe4\x96\xe5\x96\xe6\x96\xe7\x96\xeb\x96\xec\x96\xed\x96\xee\x96\xf0\x96\xf1\x96\xf2\x96\xf4\x96\xf5\x96\xf8\x96\xfa\x96\xfb\x96\xfc\x96\xfd\x96\xff\x97\x02\x97\x03\x97\x05\x97\x0a\x97\x0b\x97\x0c\x97\x10\x97\x11\x97\x12\x97\x14\x97\x15\x00\x00\x00\x00", /* c300 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x97\x17\x97\x18\x97\x19\x97\x1a\x97\x1b\x97\x1d\x97\x1f\x97\x20\x97\x21\x97\x22\x97\x23\x97\x24\x97\x25\x97\x26\x97\x27\x97\x28\x97\x29\x97\x2b\x97\x2c\x97\x2e\x97\x2f\x97\x31\x97\x33\x97\x34\x97\x35\x97\x36\x97\x37\x97\x3a\x97\x3b\x97\x3c\x97\x3d\x97\x3f\x97\x40\x97\x41\x97\x42\x97\x43\x97\x44\x97\x45\x97\x46\x97\x47\x97\x48\x97\x49\x97\x4a\x97\x4b\x97\x4c\x97\x4d\x97\x4e\x97\x4f\x97\x50\x97\x51\x97\x54\x97\x55\x97\x57\x97\x58\x97\x5a\x97\x5c\x97\x5d\x97\x5f\x97\x63\x97\x64\x97\x66\x97\x67\x97\x68", /* c380 */ "\x00\x00\x97\x6a\x97\x6b\x97\x6c\x97\x6d\x97\x6e\x97\x6f\x97\x70\x97\x71\x97\x72\x97\x75\x97\x77\x97\x78\x97\x79\x97\x7a\x97\x7b\x97\x7d\x97\x7e\x97\x7f\x97\x80\x97\x81\x97\x82\x97\x83\x97\x84\x97\x86\x97\x87\x97\x88\x97\x89\x97\x8a\x97\x8c\x97\x8e\x97\x8f\x97\x90\x97\x93\x97\x95\x97\x96\x97\x97\x97\x99\x97\x9a\x97\x9b\x97\x9c\x97\x9d\x97\x9e\x97\x9f\x97\xa1\x97\xa2\x97\xa4\x97\xa5\x97\xa6\x97\xa7\x97\xa8\x97\xa9\x97\xaa\x97\xac\x97\xae\x97\xb0\x97\xb1\x97\xb3\x97\xb5\x97\xb6\x97\xb7\x97\xb8\x97\xb9\x97\xba\x97\xbb\x97\xbc\x97\xbd\x97\xbe\x97\xbf\x97\xc0\x97\xc1\x97\xc2\x97\xc3\x97\xc4\x97\xc5\x97\xc6\x97\xc7\x97\xc8\x97\xc9\x97\xca\x97\xcb\x97\xcc\x97\xcd\x97\xce\x97\xcf\x97\xd0\x97\xd1\x97\xd2\x97\xd3\x97\xd4\x97\xd5\x97\xd6\x97\xd7\x97\xd8\x97\xd9\x97\xda\x97\xdb\x97\xdc\x97\xdd\x97\xde\x97\xdf\x97\xe0\x97\xe1\x97\xe2\x97\xe3\x97\xe4\x97\xe5\x97\xe8\x97\xee\x97\xef\x97\xf0\x97\xf1\x97\xf2\x97\xf4\x97\xf7\x97\xf8\x97\xf9\x97\xfa\x97\xfb\x97\xfc\x97\xfd\x97\xfe\x97\xff\x98\x00\x98\x01\x98\x02\x00\x00\x00\x00", /* c400 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x98\x03\x98\x04\x98\x05\x98\x06\x98\x07\x98\x08\x98\x09\x98\x0a\x98\x0b\x98\x0c\x98\x0d\x98\x0e\x98\x0f\x98\x10\x98\x11\x98\x12\x98\x13\x98\x14\x98\x15\x98\x16\x98\x17\x98\x18\x98\x19\x98\x1a\x98\x1b\x98\x1c\x98\x1d\x98\x1e\x98\x1f\x98\x20\x98\x21\x98\x22\x98\x23\x98\x24\x98\x25\x98\x26\x98\x27\x98\x28\x98\x29\x98\x2a\x98\x2b\x98\x2c\x98\x2d\x98\x2e\x98\x2f\x98\x30\x98\x31\x98\x32\x98\x33\x98\x34\x98\x35\x98\x36\x98\x37\x98\x38\x98\x39\x98\x3a\x98\x3b\x98\x3c\x98\x3d\x98\x3e\x98\x3f\x98\x40\x98\x41", /* c480 */ "\x00\x00\x98\x42\x98\x43\x98\x44\x98\x45\x98\x46\x98\x47\x98\x48\x98\x49\x98\x4a\x98\x4b\x98\x4c\x98\x4d\x98\x4e\x98\x4f\x98\x50\x98\x51\x98\x52\x98\x53\x98\x54\x98\x55\x98\x56\x98\x57\x98\x58\x98\x59\x98\x5a\x98\x5b\x98\x5c\x98\x5d\x98\x5e\x98\x5f\x98\x60\x98\x61\x98\x62\x98\x63\x98\x64\x98\x65\x98\x66\x98\x67\x98\x68\x98\x69\x98\x6a\x98\x6b\x98\x6c\x98\x6d\x98\x6e\x98\x6f\x98\x70\x98\x71\x98\x72\x98\x73\x98\x74\x98\x8b\x98\x8e\x98\x92\x98\x95\x98\x99\x98\xa3\x98\xa8\x98\xa9\x98\xaa\x98\xab\x98\xac\x98\xad\x98\xae\x98\xaf\x98\xb0\x98\xb1\x98\xb2\x98\xb3\x98\xb4\x98\xb5\x98\xb6\x98\xb7\x98\xb8\x98\xb9\x98\xba\x98\xbb\x98\xbc\x98\xbd\x98\xbe\x98\xbf\x98\xc0\x98\xc1\x98\xc2\x98\xc3\x98\xc4\x98\xc5\x98\xc6\x98\xc7\x98\xc8\x98\xc9\x98\xca\x98\xcb\x98\xcc\x98\xcd\x98\xcf\x98\xd0\x98\xd4\x98\xd6\x98\xd7\x98\xdb\x98\xdc\x98\xdd\x98\xe0\x98\xe1\x98\xe2\x98\xe3\x98\xe4\x98\xe5\x98\xe6\x98\xe9\x98\xea\x98\xeb\x98\xec\x98\xed\x98\xee\x98\xef\x98\xf0\x98\xf1\x98\xf2\x98\xf3\x98\xf4\x98\xf5\x98\xf6\x98\xf7\x00\x00\x00\x00", /* c500 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x98\xf8\x98\xf9\x98\xfa\x98\xfb\x98\xfc\x98\xfd\x98\xfe\x98\xff\x99\x00\x99\x01\x99\x02\x99\x03\x99\x04\x99\x05\x99\x06\x99\x07\x99\x08\x99\x09\x99\x0a\x99\x0b\x99\x0c\x99\x0e\x99\x0f\x99\x11\x99\x12\x99\x13\x99\x14\x99\x15\x99\x16\x99\x17\x99\x18\x99\x19\x99\x1a\x99\x1b\x99\x1c\x99\x1d\x99\x1e\x99\x1f\x99\x20\x99\x21\x99\x22\x99\x23\x99\x24\x99\x25\x99\x26\x99\x27\x99\x28\x99\x29\x99\x2a\x99\x2b\x99\x2c\x99\x2d\x99\x2f\x99\x30\x99\x31\x99\x32\x99\x33\x99\x34\x99\x35\x99\x36\x99\x37\x99\x38\x99\x39", /* c580 */ "\x00\x00\x99\x3a\x99\x3b\x99\x3c\x99\x3d\x99\x3e\x99\x3f\x99\x40\x99\x41\x99\x42\x99\x43\x99\x44\x99\x45\x99\x46\x99\x47\x99\x48\x99\x49\x99\x4a\x99\x4b\x99\x4c\x99\x4d\x99\x4e\x99\x4f\x99\x50\x99\x51\x99\x52\x99\x53\x99\x56\x99\x57\x99\x58\x99\x59\x99\x5a\x99\x5b\x99\x5c\x99\x5d\x99\x5e\x99\x5f\x99\x60\x99\x61\x99\x62\x99\x64\x99\x66\x99\x73\x99\x78\x99\x79\x99\x7b\x99\x7e\x99\x82\x99\x83\x99\x89\x99\x8c\x99\x8e\x99\x9a\x99\x9b\x99\x9c\x99\x9d\x99\x9e\x99\x9f\x99\xa0\x99\xa1\x99\xa2\x99\xa3\x99\xa4\x99\xa6\x99\xa7\x99\xa9\x99\xaa\x99\xab\x99\xac\x99\xad\x99\xae\x99\xaf\x99\xb0\x99\xb1\x99\xb2\x99\xb3\x99\xb4\x99\xb5\x99\xb6\x99\xb7\x99\xb8\x99\xb9\x99\xba\x99\xbb\x99\xbc\x99\xbd\x99\xbe\x99\xbf\x99\xc0\x99\xc1\x99\xc2\x99\xc3\x99\xc4\x99\xc5\x99\xc6\x99\xc7\x99\xc8\x99\xc9\x99\xca\x99\xcb\x99\xcc\x99\xcd\x99\xce\x99\xcf\x99\xd0\x99\xd1\x99\xd2\x99\xd3\x99\xd4\x99\xd5\x99\xd6\x99\xd7\x99\xd8\x99\xd9\x99\xda\x99\xdb\x99\xdc\x99\xdd\x99\xde\x99\xdf\x99\xe0\x99\xe1\x99\xe2\x99\xe3\x99\xe4\x99\xe5\x00\x00\x00\x00", /* c600 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x99\xe6\x99\xe7\x99\xe8\x99\xe9\x99\xea\x99\xeb\x99\xec\x99\xed\x99\xee\x99\xef\x99\xf0\x99\xf1\x99\xf2\x99\xf3\x99\xf4\x99\xf5\x99\xf6\x99\xf7\x99\xf8\x99\xf9\x99\xfa\x99\xfb\x99\xfc\x99\xfd\x99\xfe\x99\xff\x9a\x00\x9a\x01\x9a\x02\x9a\x03\x9a\x04\x9a\x05\x9a\x06\x9a\x07\x9a\x08\x9a\x09\x9a\x0a\x9a\x0b\x9a\x0c\x9a\x0d\x9a\x0e\x9a\x0f\x9a\x10\x9a\x11\x9a\x12\x9a\x13\x9a\x14\x9a\x15\x9a\x16\x9a\x17\x9a\x18\x9a\x19\x9a\x1a\x9a\x1b\x9a\x1c\x9a\x1d\x9a\x1e\x9a\x1f\x9a\x20\x9a\x21\x9a\x22\x9a\x23\x9a\x24", /* c680 */ "\x00\x00\x9a\x25\x9a\x26\x9a\x27\x9a\x28\x9a\x29\x9a\x2a\x9a\x2b\x9a\x2c\x9a\x2d\x9a\x2e\x9a\x2f\x9a\x30\x9a\x31\x9a\x32\x9a\x33\x9a\x34\x9a\x35\x9a\x36\x9a\x37\x9a\x38\x9a\x39\x9a\x3a\x9a\x3b\x9a\x3c\x9a\x3d\x9a\x3e\x9a\x3f\x9a\x40\x9a\x41\x9a\x42\x9a\x43\x9a\x44\x9a\x45\x9a\x46\x9a\x47\x9a\x48\x9a\x49\x9a\x4a\x9a\x4b\x9a\x4c\x9a\x4d\x9a\x4e\x9a\x4f\x9a\x50\x9a\x51\x9a\x52\x9a\x53\x9a\x54\x9a\x55\x9a\x56\x9a\x57\x9a\x58\x9a\x59\x9a\x5a\x9a\x5b\x9a\x5c\x9a\x5d\x9a\x5e\x9a\x5f\x9a\x60\x9a\x61\x9a\x62\x9a\x63\x9a\x64\x9a\x65\x9a\x66\x9a\x67\x9a\x68\x9a\x69\x9a\x6a\x9a\x6b\x9a\x72\x9a\x83\x9a\x89\x9a\x8d\x9a\x8e\x9a\x94\x9a\x95\x9a\x99\x9a\xa6\x9a\xa9\x9a\xaa\x9a\xab\x9a\xac\x9a\xad\x9a\xae\x9a\xaf\x9a\xb2\x9a\xb3\x9a\xb4\x9a\xb5\x9a\xb9\x9a\xbb\x9a\xbd\x9a\xbe\x9a\xbf\x9a\xc3\x9a\xc4\x9a\xc6\x9a\xc7\x9a\xc8\x9a\xc9\x9a\xca\x9a\xcd\x9a\xce\x9a\xcf\x9a\xd0\x9a\xd2\x9a\xd4\x9a\xd5\x9a\xd6\x9a\xd7\x9a\xd9\x9a\xda\x9a\xdb\x9a\xdc\x9a\xdd\x9a\xde\x9a\xe0\x9a\xe2\x9a\xe3\x9a\xe4\x9a\xe5\x9a\xe7\x9a\xe8\x00\x00\x00\x00", /* c700 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x9a\xe9\x9a\xea\x9a\xec\x9a\xee\x9a\xf0\x9a\xf1\x9a\xf2\x9a\xf3\x9a\xf4\x9a\xf5\x9a\xf6\x9a\xf7\x9a\xf8\x9a\xfa\x9a\xfc\x9a\xfd\x9a\xfe\x9a\xff\x9b\x00\x9b\x01\x9b\x02\x9b\x04\x9b\x05\x9b\x06\x9b\x07\x9b\x09\x9b\x0a\x9b\x0b\x9b\x0c\x9b\x0d\x9b\x0e\x9b\x10\x9b\x11\x9b\x12\x9b\x14\x9b\x15\x9b\x16\x9b\x17\x9b\x18\x9b\x19\x9b\x1a\x9b\x1b\x9b\x1c\x9b\x1d\x9b\x1e\x9b\x20\x9b\x21\x9b\x22\x9b\x24\x9b\x25\x9b\x26\x9b\x27\x9b\x28\x9b\x29\x9b\x2a\x9b\x2b\x9b\x2c\x9b\x2d\x9b\x2e\x9b\x30\x9b\x31\x9b\x33\x9b\x34", /* c780 */ "\x00\x00\x9b\x35\x9b\x36\x9b\x37\x9b\x38\x9b\x39\x9b\x3a\x9b\x3d\x9b\x3e\x9b\x3f\x9b\x40\x9b\x46\x9b\x4a\x9b\x4b\x9b\x4c\x9b\x4e\x9b\x50\x9b\x52\x9b\x53\x9b\x55\x9b\x56\x9b\x57\x9b\x58\x9b\x59\x9b\x5a\x9b\x5b\x9b\x5c\x9b\x5d\x9b\x5e\x9b\x5f\x9b\x60\x9b\x61\x9b\x62\x9b\x63\x9b\x64\x9b\x65\x9b\x66\x9b\x67\x9b\x68\x9b\x69\x9b\x6a\x9b\x6b\x9b\x6c\x9b\x6d\x9b\x6e\x9b\x6f\x9b\x70\x9b\x71\x9b\x72\x9b\x73\x9b\x74\x9b\x75\x9b\x76\x9b\x77\x9b\x78\x9b\x79\x9b\x7a\x9b\x7b\x9b\x7c\x9b\x7d\x9b\x7e\x9b\x7f\x9b\x80\x9b\x81\x9b\x82\x9b\x83\x9b\x84\x9b\x85\x9b\x86\x9b\x87\x9b\x88\x9b\x89\x9b\x8a\x9b\x8b\x9b\x8c\x9b\x8d\x9b\x8e\x9b\x8f\x9b\x90\x9b\x91\x9b\x92\x9b\x93\x9b\x94\x9b\x95\x9b\x96\x9b\x97\x9b\x98\x9b\x99\x9b\x9a\x9b\x9b\x9b\x9c\x9b\x9d\x9b\x9e\x9b\x9f\x9b\xa0\x9b\xa1\x9b\xa2\x9b\xa3\x9b\xa4\x9b\xa5\x9b\xa6\x9b\xa7\x9b\xa8\x9b\xa9\x9b\xaa\x9b\xab\x9b\xac\x9b\xad\x9b\xae\x9b\xaf\x9b\xb0\x9b\xb1\x9b\xb2\x9b\xb3\x9b\xb4\x9b\xb5\x9b\xb6\x9b\xb7\x9b\xb8\x9b\xb9\x9b\xba\x9b\xbb\x9b\xbc\x9b\xbd\x9b\xbe\x9b\xbf\x00\x00\x00\x00", /* c800 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x9b\xc0\x9b\xc1\x9b\xc2\x9b\xc3\x9b\xc4\x9b\xc5\x9b\xc6\x9b\xc7\x9b\xc8\x9b\xc9\x9b\xca\x9b\xcb\x9b\xcc\x9b\xcd\x9b\xce\x9b\xcf\x9b\xd0\x9b\xd1\x9b\xd2\x9b\xd3\x9b\xd4\x9b\xd5\x9b\xd6\x9b\xd7\x9b\xd8\x9b\xd9\x9b\xda\x9b\xdb\x9b\xdc\x9b\xdd\x9b\xde\x9b\xdf\x9b\xe0\x9b\xe1\x9b\xe2\x9b\xe3\x9b\xe4\x9b\xe5\x9b\xe6\x9b\xe7\x9b\xe8\x9b\xe9\x9b\xea\x9b\xeb\x9b\xec\x9b\xed\x9b\xee\x9b\xef\x9b\xf0\x9b\xf1\x9b\xf2\x9b\xf3\x9b\xf4\x9b\xf5\x9b\xf6\x9b\xf7\x9b\xf8\x9b\xf9\x9b\xfa\x9b\xfb\x9b\xfc\x9b\xfd\x9b\xfe", /* c880 */ "\x00\x00\x9b\xff\x9c\x00\x9c\x01\x9c\x02\x9c\x03\x9c\x04\x9c\x05\x9c\x06\x9c\x07\x9c\x08\x9c\x09\x9c\x0a\x9c\x0b\x9c\x0c\x9c\x0d\x9c\x0e\x9c\x0f\x9c\x10\x9c\x11\x9c\x12\x9c\x13\x9c\x14\x9c\x15\x9c\x16\x9c\x17\x9c\x18\x9c\x19\x9c\x1a\x9c\x1b\x9c\x1c\x9c\x1d\x9c\x1e\x9c\x1f\x9c\x20\x9c\x21\x9c\x22\x9c\x23\x9c\x24\x9c\x25\x9c\x26\x9c\x27\x9c\x28\x9c\x29\x9c\x2a\x9c\x2b\x9c\x2c\x9c\x2d\x9c\x2e\x9c\x2f\x9c\x30\x9c\x31\x9c\x32\x9c\x33\x9c\x34\x9c\x35\x9c\x36\x9c\x37\x9c\x38\x9c\x39\x9c\x3a\x9c\x3b\x9c\x3c\x9c\x3d\x9c\x3e\x9c\x3f\x9c\x40\x9c\x41\x9c\x42\x9c\x43\x9c\x44\x9c\x45\x9c\x46\x9c\x47\x9c\x48\x9c\x49\x9c\x4a\x9c\x4b\x9c\x4c\x9c\x4d\x9c\x4e\x9c\x4f\x9c\x50\x9c\x51\x9c\x52\x9c\x53\x9c\x54\x9c\x55\x9c\x56\x9c\x57\x9c\x58\x9c\x59\x9c\x5a\x9c\x5b\x9c\x5c\x9c\x5d\x9c\x5e\x9c\x5f\x9c\x60\x9c\x61\x9c\x62\x9c\x63\x9c\x64\x9c\x65\x9c\x66\x9c\x67\x9c\x68\x9c\x69\x9c\x6a\x9c\x6b\x9c\x6c\x9c\x6d\x9c\x6e\x9c\x6f\x9c\x70\x9c\x71\x9c\x72\x9c\x73\x9c\x74\x9c\x75\x9c\x76\x9c\x77\x9c\x78\x9c\x79\x9c\x7a\x9c\x7b\x00\x00\x00\x00", /* c900 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x9c\x7d\x9c\x7e\x9c\x80\x9c\x83\x9c\x84\x9c\x89\x9c\x8a\x9c\x8c\x9c\x8f\x9c\x93\x9c\x96\x9c\x97\x9c\x98\x9c\x99\x9c\x9d\x9c\xaa\x9c\xac\x9c\xaf\x9c\xb9\x9c\xbe\x9c\xbf\x9c\xc0\x9c\xc1\x9c\xc2\x9c\xc8\x9c\xc9\x9c\xd1\x9c\xd2\x9c\xda\x9c\xdb\x9c\xe0\x9c\xe1\x9c\xe3\x9c\xe4\x9c\xe5\x9c\xe6\x9c\xe7\x9c\xe8\x9c\xe9\x9c\xea\x9c\xeb\x9c\xec\x9c\xed\x9c\xee\x9c\xef\x9c\xf0\x9c\xf1\x9c\xf2\x9c\xf3\x9c\xf4\x9c\xf5\x9c\xf6\x9c\xf7\x9c\xf8\x9c\xf9\x9c\xfa\x9c\xfb\x9c\xfc\x9c\xfd\x9c\xfe\x9c\xff\x9d\x00\x9d\x01", /* c980 */ "\x00\x00\x9d\x02\x9d\x03\x9d\x04\x9d\x05\x9d\x06\x9d\x07\x9d\x08\x9d\x09\x9d\x0a\x9d\x0b\x9d\x0c\x9d\x0d\x9d\x0e\x9d\x0f\x9d\x10\x9d\x11\x9d\x12\x9d\x13\x9d\x14\x9d\x15\x9d\x16\x9d\x17\x9d\x18\x9d\x19\x9d\x1a\x9d\x1b\x9d\x1c\x9d\x1d\x9d\x1e\x9d\x1f\x9d\x20\x9d\x21\x9d\x22\x9d\x23\x9d\x24\x9d\x25\x9d\x26\x9d\x27\x9d\x28\x9d\x29\x9d\x2a\x9d\x2b\x9d\x2c\x9d\x2d\x9d\x2e\x9d\x2f\x9d\x30\x9d\x31\x9d\x32\x9d\x33\x9d\x34\x9d\x35\x9d\x36\x9d\x37\x9d\x38\x9d\x39\x9d\x3a\x9d\x3b\x9d\x3c\x9d\x3d\x9d\x3e\x9d\x3f\x9d\x40\x9d\x41\x9d\x42\x9d\x43\x9d\x44\x9d\x45\x9d\x46\x9d\x47\x9d\x48\x9d\x49\x9d\x4a\x9d\x4b\x9d\x4c\x9d\x4d\x9d\x4e\x9d\x4f\x9d\x50\x9d\x51\x9d\x52\x9d\x53\x9d\x54\x9d\x55\x9d\x56\x9d\x57\x9d\x58\x9d\x59\x9d\x5a\x9d\x5b\x9d\x5c\x9d\x5d\x9d\x5e\x9d\x5f\x9d\x60\x9d\x61\x9d\x62\x9d\x63\x9d\x64\x9d\x65\x9d\x66\x9d\x67\x9d\x68\x9d\x69\x9d\x6a\x9d\x6b\x9d\x6c\x9d\x6d\x9d\x6e\x9d\x6f\x9d\x70\x9d\x71\x9d\x72\x9d\x73\x9d\x74\x9d\x75\x9d\x76\x9d\x77\x9d\x78\x9d\x79\x9d\x7a\x9d\x7b\x9d\x7c\x9d\x7d\x9d\x7e\x00\x00\x00\x00", /* ca00 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x9d\x7f\x9d\x80\x9d\x81\x9d\x82\x9d\x83\x9d\x84\x9d\x85\x9d\x86\x9d\x87\x9d\x88\x9d\x89\x9d\x8a\x9d\x8b\x9d\x8c\x9d\x8d\x9d\x8e\x9d\x8f\x9d\x90\x9d\x91\x9d\x92\x9d\x93\x9d\x94\x9d\x95\x9d\x96\x9d\x97\x9d\x98\x9d\x99\x9d\x9a\x9d\x9b\x9d\x9c\x9d\x9d\x9d\x9e\x9d\x9f\x9d\xa0\x9d\xa1\x9d\xa2\x9d\xa3\x9d\xa4\x9d\xa5\x9d\xa6\x9d\xa7\x9d\xa8\x9d\xa9\x9d\xaa\x9d\xab\x9d\xac\x9d\xad\x9d\xae\x9d\xaf\x9d\xb0\x9d\xb1\x9d\xb2\x9d\xb3\x9d\xb4\x9d\xb5\x9d\xb6\x9d\xb7\x9d\xb8\x9d\xb9\x9d\xba\x9d\xbb\x9d\xbc\x9d\xbd", /* ca80 */ "\x00\x00\x9d\xbe\x9d\xbf\x9d\xc0\x9d\xc1\x9d\xc2\x9d\xc3\x9d\xc4\x9d\xc5\x9d\xc6\x9d\xc7\x9d\xc8\x9d\xc9\x9d\xca\x9d\xcb\x9d\xcc\x9d\xcd\x9d\xce\x9d\xcf\x9d\xd0\x9d\xd1\x9d\xd2\x9d\xd3\x9d\xd4\x9d\xd5\x9d\xd6\x9d\xd7\x9d\xd8\x9d\xd9\x9d\xda\x9d\xdb\x9d\xdc\x9d\xdd\x9d\xde\x9d\xdf\x9d\xe0\x9d\xe1\x9d\xe2\x9d\xe3\x9d\xe4\x9d\xe5\x9d\xe6\x9d\xe7\x9d\xe8\x9d\xe9\x9d\xea\x9d\xeb\x9d\xec\x9d\xed\x9d\xee\x9d\xef\x9d\xf0\x9d\xf1\x9d\xf2\x9d\xf3\x9d\xf4\x9d\xf5\x9d\xf6\x9d\xf7\x9d\xf8\x9d\xf9\x9d\xfa\x9d\xfb\x9d\xfc\x9d\xfd\x9d\xfe\x9d\xff\x9e\x00\x9e\x01\x9e\x02\x9e\x03\x9e\x04\x9e\x05\x9e\x06\x9e\x07\x9e\x08\x9e\x09\x9e\x0a\x9e\x0b\x9e\x0c\x9e\x0d\x9e\x0e\x9e\x0f\x9e\x10\x9e\x11\x9e\x12\x9e\x13\x9e\x14\x9e\x15\x9e\x16\x9e\x17\x9e\x18\x9e\x19\x9e\x1a\x9e\x1b\x9e\x1c\x9e\x1d\x9e\x1e\x9e\x24\x9e\x27\x9e\x2e\x9e\x30\x9e\x34\x9e\x3b\x9e\x3c\x9e\x40\x9e\x4d\x9e\x50\x9e\x52\x9e\x53\x9e\x54\x9e\x56\x9e\x59\x9e\x5d\x9e\x5f\x9e\x60\x9e\x61\x9e\x62\x9e\x65\x9e\x6e\x9e\x6f\x9e\x72\x9e\x74\x9e\x75\x9e\x76\x9e\x77\x00\x00\x00\x00", /* cb00 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x9e\x78\x9e\x79\x9e\x7a\x9e\x7b\x9e\x7c\x9e\x7d\x9e\x80\x9e\x81\x9e\x83\x9e\x84\x9e\x85\x9e\x86\x9e\x89\x9e\x8a\x9e\x8c\x9e\x8d\x9e\x8e\x9e\x8f\x9e\x90\x9e\x91\x9e\x94\x9e\x95\x9e\x96\x9e\x97\x9e\x98\x9e\x99\x9e\x9a\x9e\x9b\x9e\x9c\x9e\x9e\x9e\xa0\x9e\xa1\x9e\xa2\x9e\xa3\x9e\xa4\x9e\xa5\x9e\xa7\x9e\xa8\x9e\xa9\x9e\xaa\x9e\xab\x9e\xac\x9e\xad\x9e\xae\x9e\xaf\x9e\xb0\x9e\xb1\x9e\xb2\x9e\xb3\x9e\xb5\x9e\xb6\x9e\xb7\x9e\xb9\x9e\xba\x9e\xbc\x9e\xbf\x9e\xc0\x9e\xc1\x9e\xc2\x9e\xc3\x9e\xc5\x9e\xc6\x9e\xc7", /* cb80 */ "\x00\x00\x9e\xc8\x9e\xca\x9e\xcb\x9e\xcc\x9e\xd0\x9e\xd2\x9e\xd3\x9e\xd5\x9e\xd6\x9e\xd7\x9e\xd9\x9e\xda\x9e\xde\x9e\xe1\x9e\xe3\x9e\xe4\x9e\xe6\x9e\xe8\x9e\xeb\x9e\xec\x9e\xed\x9e\xee\x9e\xf0\x9e\xf1\x9e\xf2\x9e\xf3\x9e\xf4\x9e\xf5\x9e\xf6\x9e\xf7\x9e\xf8\x9e\xfa\x9e\xfd\x9e\xff\x9f\x00\x9f\x01\x9f\x02\x9f\x03\x9f\x04\x9f\x05\x9f\x06\x9f\x07\x9f\x08\x9f\x09\x9f\x0a\x9f\x0c\x9f\x0f\x9f\x11\x9f\x12\x9f\x14\x9f\x15\x9f\x16\x9f\x18\x9f\x1a\x9f\x1b\x9f\x1c\x9f\x1d\x9f\x1e\x9f\x1f\x9f\x21\x9f\x23\x9f\x24\x9f\x25\x9f\x26\x9f\x27\x9f\x28\x9f\x29\x9f\x2a\x9f\x2b\x9f\x2d\x9f\x2e\x9f\x30\x9f\x31\x9f\x32\x9f\x33\x9f\x34\x9f\x35\x9f\x36\x9f\x38\x9f\x3a\x9f\x3c\x9f\x3f\x9f\x40\x9f\x41\x9f\x42\x9f\x43\x9f\x45\x9f\x46\x9f\x47\x9f\x48\x9f\x49\x9f\x4a\x9f\x4b\x9f\x4c\x9f\x4d\x9f\x4e\x9f\x4f\x9f\x52\x9f\x53\x9f\x54\x9f\x55\x9f\x56\x9f\x57\x9f\x58\x9f\x59\x9f\x5a\x9f\x5b\x9f\x5c\x9f\x5d\x9f\x5e\x9f\x5f\x9f\x60\x9f\x61\x9f\x62\x9f\x63\x9f\x64\x9f\x65\x9f\x66\x9f\x67\x9f\x68\x9f\x69\x9f\x6a\x9f\x6b\x9f\x6c\x9f\x6d\x00\x00\x00\x00", /* cc00 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x9f\x6e\x9f\x6f\x9f\x70\x9f\x71\x9f\x72\x9f\x73\x9f\x74\x9f\x75\x9f\x76\x9f\x77\x9f\x78\x9f\x79\x9f\x7a\x9f\x7b\x9f\x7c\x9f\x7d\x9f\x7e\x9f\x81\x9f\x82\x9f\x8d\x9f\x8e\x9f\x8f\x9f\x90\x9f\x91\x9f\x92\x9f\x93\x9f\x94\x9f\x95\x9f\x96\x9f\x97\x9f\x98\x9f\x9c\x9f\x9d\x9f\x9e\x9f\xa1\x9f\xa2\x9f\xa3\x9f\xa4\x9f\xa5\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* cc80 */ NULL, /* cd00 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\xca\x02\xcb\x02\xd9\x20\x13\x20\x14\x20\x35\x21\x05\x21\x09\x21\x96\x21\x97\x21\x98\x21\x99\x22\x15\x22\x1f\x22\x23\x22\x52\x22\x66\x22\x67\x22\xbf\x25\x50\x25\x51\x25\x52\x25\x53\x25\x54\x25\x55\x25\x56\x25\x57\x25\x58\x25\x59\x25\x5a\x25\x5b\x25\x5c\x25\x5d\x25\x5e\x25\x5f\x25\x60\x25\x61\x25\x62\x25\x63\x25\x64\x25\x65\x25\x66\x25\x67\x25\x68\x25\x69\x25\x6a\x25\x6b\x25\x6c\x25\x6d\x25\x6e\x25\x6f\x25\x70\x25\x71\x25\x72\x25\x73\x25\x81\x25\x82\x25\x83\x25\x84\x25\x85\x25\x86\x25\x87\x25\x88", /* cd80 */ "\x00\x00\x25\x89\x25\x8a\x25\x8b\x25\x8c\x25\x8d\x25\x8e\x25\x8f\x25\x93\x25\x94\x25\x95\x25\xe2\x25\xe3\x25\xe4\x25\xe5\x26\x09\x22\x95\x30\x1d\x30\x1e\x30\x21\x30\x22\x30\x23\x30\x24\x30\x25\x30\x26\x30\x27\x30\x28\x30\x29\x32\xa3\x33\x8e\x33\x8f\x33\x9c\x33\x9d\x33\x9e\x33\xa1\x33\xc4\x33\xce\x33\xd1\x33\xd2\x33\xd5\xfe\x30\xfe\x49\xfe\x4a\xfe\x4b\xfe\x4c\xfe\x4d\xfe\x4e\xfe\x4f\xfe\x50\xfe\x51\xfe\x52\xfe\x54\xfe\x55\xfe\x56\xfe\x57\xfe\x59\xfe\x5a\xfe\x5b\xfe\x5c\xfe\x5d\xfe\x5e\xfe\x5f\xfe\x60\xfe\x61\xfe\x62\xfe\x63\xfe\x64\xfe\x65\xfe\x66\xfe\x68\xfe\x69\xfe\x6a\xfe\x6b\x30\x3e\x2f\xf0\x2f\xf1\x2f\xf2\x2f\xf3\x2f\xf4\x2f\xf5\x2f\xf6\x2f\xf7\x2f\xf8\x2f\xf9\x2f\xfa\x2f\xfb\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* ce00 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf9\x2c\xf9\x79\xf9\x95\xf9\xe7\xf9\xf1\xfa\x0c\xfa\x0d\xfa\x0e\xfa\x0f\xfa\x11\xfa\x13\xfa\x14\xfa\x18\xfa\x1f\xfa\x20\xfa\x21\xfa\x23\xfa\x24\xfa\x27\xfa\x28\xfa\x29\x2e\x81\xe8\x16\xe8\x17\xe8\x18\x2e\x84\x34\x73\x34\x47\x2e\x88\x2e\x8b\xe8\x1e\x35\x9e\x36\x1a\x36\x0e\x2e\x8c\x2e\x97\x39\x6e\x39\x18\xe8\x26\x39\xcf\x39\xdf\x3a\x73\x39\xd0\xe8\x2b\xe8\x2c\x3b\x4e\x3c\x6e\x3c\xe0\x2e\xa7\xe8\x31\xe8\x32\x2e\xaa\x40\x56\x41\x5f\x2e\xae\x43\x37\x2e\xb3\x2e\xb6\x2e\xb7\xe8\x3b\x43\xb1\x43\xac\x2e\xbb", /* ce80 */ "\x00\x00\x43\xdd\x44\xd6\x46\x61\x46\x4c\xe8\x43\x47\x23\x47\x29\x47\x7c\x47\x8d\x2e\xca\x49\x47\x49\x7a\x49\x7d\x49\x82\x49\x83\x49\x85\x49\x86\x49\x9f\x49\x9b\x49\xb7\x49\xb6\xe8\x54\xe8\x55\x4c\xa3\x4c\x9f\x4c\xa0\x4c\xa1\x4c\x77\x4c\xa2\x4d\x13\x4d\x14\x4d\x15\x4d\x16\x4d\x17\x4d\x18\x4d\x19\x4d\xae\xe8\x64\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* cf00 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x34\x00\x34\x01\x34\x02\x34\x03\x34\x04\x34\x05\x34\x06\x34\x07\x34\x08\x34\x09\x34\x0a\x34\x0b\x34\x0c\x34\x0d\x34\x0e\x34\x0f\x34\x10\x34\x11\x34\x12\x34\x13\x34\x14\x34\x15\x34\x16\x34\x17\x34\x18\x34\x19\x34\x1a\x34\x1b\x34\x1c\x34\x1d\x34\x1e\x34\x1f\x34\x20\x34\x21\x34\x22\x34\x23\x34\x24\x34\x25\x34\x26\x34\x27\x34\x28\x34\x29\x34\x2a\x34\x2b\x34\x2c\x34\x2d\x34\x2e\x34\x2f\x34\x30\x34\x31\x34\x32\x34\x33\x34\x34\x34\x35\x34\x36\x34\x37\x34\x38\x34\x39\x34\x3a\x34\x3b\x34\x3c\x34\x3d\x34\x3e", /* cf80 */ "\x34\x3f\x34\x40\x34\x41\x34\x42\x34\x43\x34\x44\x34\x45\x34\x46\x34\x48\x34\x49\x34\x4a\x34\x4b\x34\x4c\x34\x4d\x34\x4e\x34\x4f\x34\x50\x34\x51\x34\x52\x34\x53\x34\x54\x34\x55\x34\x56\x34\x57\x34\x58\x34\x59\x34\x5a\x34\x5b\x34\x5c\x34\x5d\x34\x5e\x34\x5f\x34\x60\x34\x61\x34\x62\x34\x63\x34\x64\x34\x65\x34\x66\x34\x67\x34\x68\x34\x69\x34\x6a\x34\x6b\x34\x6c\x34\x6d\x34\x6e\x34\x6f\x34\x70\x34\x71\x34\x72\x34\x74\x34\x75\x34\x76\x34\x77\x34\x78\x34\x79\x34\x7a\x34\x7b\x34\x7c\x34\x7d\x34\x7e\x34\x7f\x34\x80\x34\x81\x34\x82\x34\x83\x34\x84\x34\x85\x34\x86\x34\x87\x34\x88\x34\x89\x34\x8a\x34\x8b\x34\x8c\x34\x8d\x34\x8e\x34\x8f\x34\x90\x34\x91\x34\x92\x34\x93\x34\x94\x34\x95\x34\x96\x34\x97\x34\x98\x34\x99\x34\x9a\x34\x9b\x34\x9c\x34\x9d\x34\x9e\x34\x9f\x34\xa0\x34\xa1\x34\xa2\x34\xa3\x34\xa4\x34\xa5\x34\xa6\x34\xa7\x34\xa8\x34\xa9\x34\xaa\x34\xab\x34\xac\x34\xad\x34\xae\x34\xaf\x34\xb0\x34\xb1\x34\xb2\x34\xb3\x34\xb4\x34\xb5\x34\xb6\x34\xb7\x34\xb8\x34\xb9\x34\xba\x34\xbb\x34\xbc\x34\xbd\x34\xbe\x34\xbf\x00\x00", /* d000 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x34\xc0\x34\xc1\x34\xc2\x34\xc3\x34\xc4\x34\xc5\x34\xc6\x34\xc7\x34\xc8\x34\xc9\x34\xca\x34\xcb\x34\xcc\x34\xcd\x34\xce\x34\xcf\x34\xd0\x34\xd1\x34\xd2\x34\xd3\x34\xd4\x34\xd5\x34\xd6\x34\xd7\x34\xd8\x34\xd9\x34\xda\x34\xdb\x34\xdc\x34\xdd\x34\xde\x34\xdf\x34\xe0\x34\xe1\x34\xe2\x34\xe3\x34\xe4\x34\xe5\x34\xe6\x34\xe7\x34\xe8\x34\xe9\x34\xea\x34\xeb\x34\xec\x34\xed\x34\xee\x34\xef\x34\xf0\x34\xf1\x34\xf2\x34\xf3\x34\xf4\x34\xf5\x34\xf6\x34\xf7\x34\xf8\x34\xf9\x34\xfa\x34\xfb\x34\xfc\x34\xfd\x34\xfe", /* d080 */ "\x34\xff\x35\x00\x35\x01\x35\x02\x35\x03\x35\x04\x35\x05\x35\x06\x35\x07\x35\x08\x35\x09\x35\x0a\x35\x0b\x35\x0c\x35\x0d\x35\x0e\x35\x0f\x35\x10\x35\x11\x35\x12\x35\x13\x35\x14\x35\x15\x35\x16\x35\x17\x35\x18\x35\x19\x35\x1a\x35\x1b\x35\x1c\x35\x1d\x35\x1e\x35\x1f\x35\x20\x35\x21\x35\x22\x35\x23\x35\x24\x35\x25\x35\x26\x35\x27\x35\x28\x35\x29\x35\x2a\x35\x2b\x35\x2c\x35\x2d\x35\x2e\x35\x2f\x35\x30\x35\x31\x35\x32\x35\x33\x35\x34\x35\x35\x35\x36\x35\x37\x35\x38\x35\x39\x35\x3a\x35\x3b\x35\x3c\x35\x3d\x35\x3e\x35\x3f\x35\x40\x35\x41\x35\x42\x35\x43\x35\x44\x35\x45\x35\x46\x35\x47\x35\x48\x35\x49\x35\x4a\x35\x4b\x35\x4c\x35\x4d\x35\x4e\x35\x4f\x35\x50\x35\x51\x35\x52\x35\x53\x35\x54\x35\x55\x35\x56\x35\x57\x35\x58\x35\x59\x35\x5a\x35\x5b\x35\x5c\x35\x5d\x35\x5e\x35\x5f\x35\x60\x35\x61\x35\x62\x35\x63\x35\x64\x35\x65\x35\x66\x35\x67\x35\x68\x35\x69\x35\x6a\x35\x6b\x35\x6c\x35\x6d\x35\x6e\x35\x6f\x35\x70\x35\x71\x35\x72\x35\x73\x35\x74\x35\x75\x35\x76\x35\x77\x35\x78\x35\x79\x35\x7a\x35\x7b\x35\x7c\x35\x7d\x00\x00", /* d100 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x35\x7e\x35\x7f\x35\x80\x35\x81\x35\x82\x35\x83\x35\x84\x35\x85\x35\x86\x35\x87\x35\x88\x35\x89\x35\x8a\x35\x8b\x35\x8c\x35\x8d\x35\x8e\x35\x8f\x35\x90\x35\x91\x35\x92\x35\x93\x35\x94\x35\x95\x35\x96\x35\x97\x35\x98\x35\x99\x35\x9a\x35\x9b\x35\x9c\x35\x9d\x35\x9f\x35\xa0\x35\xa1\x35\xa2\x35\xa3\x35\xa4\x35\xa5\x35\xa6\x35\xa7\x35\xa8\x35\xa9\x35\xaa\x35\xab\x35\xac\x35\xad\x35\xae\x35\xaf\x35\xb0\x35\xb1\x35\xb2\x35\xb3\x35\xb4\x35\xb5\x35\xb6\x35\xb7\x35\xb8\x35\xb9\x35\xba\x35\xbb\x35\xbc\x35\xbd", /* d180 */ "\x35\xbe\x35\xbf\x35\xc0\x35\xc1\x35\xc2\x35\xc3\x35\xc4\x35\xc5\x35\xc6\x35\xc7\x35\xc8\x35\xc9\x35\xca\x35\xcb\x35\xcc\x35\xcd\x35\xce\x35\xcf\x35\xd0\x35\xd1\x35\xd2\x35\xd3\x35\xd4\x35\xd5\x35\xd6\x35\xd7\x35\xd8\x35\xd9\x35\xda\x35\xdb\x35\xdc\x35\xdd\x35\xde\x35\xdf\x35\xe0\x35\xe1\x35\xe2\x35\xe3\x35\xe4\x35\xe5\x35\xe6\x35\xe7\x35\xe8\x35\xe9\x35\xea\x35\xeb\x35\xec\x35\xed\x35\xee\x35\xef\x35\xf0\x35\xf1\x35\xf2\x35\xf3\x35\xf4\x35\xf5\x35\xf6\x35\xf7\x35\xf8\x35\xf9\x35\xfa\x35\xfb\x35\xfc\x35\xfd\x35\xfe\x35\xff\x36\x00\x36\x01\x36\x02\x36\x03\x36\x04\x36\x05\x36\x06\x36\x07\x36\x08\x36\x09\x36\x0a\x36\x0b\x36\x0c\x36\x0d\x36\x0f\x36\x10\x36\x11\x36\x12\x36\x13\x36\x14\x36\x15\x36\x16\x36\x17\x36\x18\x36\x19\x36\x1b\x36\x1c\x36\x1d\x36\x1e\x36\x1f\x36\x20\x36\x21\x36\x22\x36\x23\x36\x24\x36\x25\x36\x26\x36\x27\x36\x28\x36\x29\x36\x2a\x36\x2b\x36\x2c\x36\x2d\x36\x2e\x36\x2f\x36\x30\x36\x31\x36\x32\x36\x33\x36\x34\x36\x35\x36\x36\x36\x37\x36\x38\x36\x39\x36\x3a\x36\x3b\x36\x3c\x36\x3d\x36\x3e\x00\x00", /* d200 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x36\x3f\x36\x40\x36\x41\x36\x42\x36\x43\x36\x44\x36\x45\x36\x46\x36\x47\x36\x48\x36\x49\x36\x4a\x36\x4b\x36\x4c\x36\x4d\x36\x4e\x36\x4f\x36\x50\x36\x51\x36\x52\x36\x53\x36\x54\x36\x55\x36\x56\x36\x57\x36\x58\x36\x59\x36\x5a\x36\x5b\x36\x5c\x36\x5d\x36\x5e\x36\x5f\x36\x60\x36\x61\x36\x62\x36\x63\x36\x64\x36\x65\x36\x66\x36\x67\x36\x68\x36\x69\x36\x6a\x36\x6b\x36\x6c\x36\x6d\x36\x6e\x36\x6f\x36\x70\x36\x71\x36\x72\x36\x73\x36\x74\x36\x75\x36\x76\x36\x77\x36\x78\x36\x79\x36\x7a\x36\x7b\x36\x7c\x36\x7d", /* d280 */ "\x36\x7e\x36\x7f\x36\x80\x36\x81\x36\x82\x36\x83\x36\x84\x36\x85\x36\x86\x36\x87\x36\x88\x36\x89\x36\x8a\x36\x8b\x36\x8c\x36\x8d\x36\x8e\x36\x8f\x36\x90\x36\x91\x36\x92\x36\x93\x36\x94\x36\x95\x36\x96\x36\x97\x36\x98\x36\x99\x36\x9a\x36\x9b\x36\x9c\x36\x9d\x36\x9e\x36\x9f\x36\xa0\x36\xa1\x36\xa2\x36\xa3\x36\xa4\x36\xa5\x36\xa6\x36\xa7\x36\xa8\x36\xa9\x36\xaa\x36\xab\x36\xac\x36\xad\x36\xae\x36\xaf\x36\xb0\x36\xb1\x36\xb2\x36\xb3\x36\xb4\x36\xb5\x36\xb6\x36\xb7\x36\xb8\x36\xb9\x36\xba\x36\xbb\x36\xbc\x36\xbd\x36\xbe\x36\xbf\x36\xc0\x36\xc1\x36\xc2\x36\xc3\x36\xc4\x36\xc5\x36\xc6\x36\xc7\x36\xc8\x36\xc9\x36\xca\x36\xcb\x36\xcc\x36\xcd\x36\xce\x36\xcf\x36\xd0\x36\xd1\x36\xd2\x36\xd3\x36\xd4\x36\xd5\x36\xd6\x36\xd7\x36\xd8\x36\xd9\x36\xda\x36\xdb\x36\xdc\x36\xdd\x36\xde\x36\xdf\x36\xe0\x36\xe1\x36\xe2\x36\xe3\x36\xe4\x36\xe5\x36\xe6\x36\xe7\x36\xe8\x36\xe9\x36\xea\x36\xeb\x36\xec\x36\xed\x36\xee\x36\xef\x36\xf0\x36\xf1\x36\xf2\x36\xf3\x36\xf4\x36\xf5\x36\xf6\x36\xf7\x36\xf8\x36\xf9\x36\xfa\x36\xfb\x36\xfc\x00\x00", /* d300 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x36\xfd\x36\xfe\x36\xff\x37\x00\x37\x01\x37\x02\x37\x03\x37\x04\x37\x05\x37\x06\x37\x07\x37\x08\x37\x09\x37\x0a\x37\x0b\x37\x0c\x37\x0d\x37\x0e\x37\x0f\x37\x10\x37\x11\x37\x12\x37\x13\x37\x14\x37\x15\x37\x16\x37\x17\x37\x18\x37\x19\x37\x1a\x37\x1b\x37\x1c\x37\x1d\x37\x1e\x37\x1f\x37\x20\x37\x21\x37\x22\x37\x23\x37\x24\x37\x25\x37\x26\x37\x27\x37\x28\x37\x29\x37\x2a\x37\x2b\x37\x2c\x37\x2d\x37\x2e\x37\x2f\x37\x30\x37\x31\x37\x32\x37\x33\x37\x34\x37\x35\x37\x36\x37\x37\x37\x38\x37\x39\x37\x3a\x37\x3b", /* d380 */ "\x37\x3c\x37\x3d\x37\x3e\x37\x3f\x37\x40\x37\x41\x37\x42\x37\x43\x37\x44\x37\x45\x37\x46\x37\x47\x37\x48\x37\x49\x37\x4a\x37\x4b\x37\x4c\x37\x4d\x37\x4e\x37\x4f\x37\x50\x37\x51\x37\x52\x37\x53\x37\x54\x37\x55\x37\x56\x37\x57\x37\x58\x37\x59\x37\x5a\x37\x5b\x37\x5c\x37\x5d\x37\x5e\x37\x5f\x37\x60\x37\x61\x37\x62\x37\x63\x37\x64\x37\x65\x37\x66\x37\x67\x37\x68\x37\x69\x37\x6a\x37\x6b\x37\x6c\x37\x6d\x37\x6e\x37\x6f\x37\x70\x37\x71\x37\x72\x37\x73\x37\x74\x37\x75\x37\x76\x37\x77\x37\x78\x37\x79\x37\x7a\x37\x7b\x37\x7c\x37\x7d\x37\x7e\x37\x7f\x37\x80\x37\x81\x37\x82\x37\x83\x37\x84\x37\x85\x37\x86\x37\x87\x37\x88\x37\x89\x37\x8a\x37\x8b\x37\x8c\x37\x8d\x37\x8e\x37\x8f\x37\x90\x37\x91\x37\x92\x37\x93\x37\x94\x37\x95\x37\x96\x37\x97\x37\x98\x37\x99\x37\x9a\x37\x9b\x37\x9c\x37\x9d\x37\x9e\x37\x9f\x37\xa0\x37\xa1\x37\xa2\x37\xa3\x37\xa4\x37\xa5\x37\xa6\x37\xa7\x37\xa8\x37\xa9\x37\xaa\x37\xab\x37\xac\x37\xad\x37\xae\x37\xaf\x37\xb0\x37\xb1\x37\xb2\x37\xb3\x37\xb4\x37\xb5\x37\xb6\x37\xb7\x37\xb8\x37\xb9\x37\xba\x00\x00", /* d400 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x37\xbb\x37\xbc\x37\xbd\x37\xbe\x37\xbf\x37\xc0\x37\xc1\x37\xc2\x37\xc3\x37\xc4\x37\xc5\x37\xc6\x37\xc7\x37\xc8\x37\xc9\x37\xca\x37\xcb\x37\xcc\x37\xcd\x37\xce\x37\xcf\x37\xd0\x37\xd1\x37\xd2\x37\xd3\x37\xd4\x37\xd5\x37\xd6\x37\xd7\x37\xd8\x37\xd9\x37\xda\x37\xdb\x37\xdc\x37\xdd\x37\xde\x37\xdf\x37\xe0\x37\xe1\x37\xe2\x37\xe3\x37\xe4\x37\xe5\x37\xe6\x37\xe7\x37\xe8\x37\xe9\x37\xea\x37\xeb\x37\xec\x37\xed\x37\xee\x37\xef\x37\xf0\x37\xf1\x37\xf2\x37\xf3\x37\xf4\x37\xf5\x37\xf6\x37\xf7\x37\xf8\x37\xf9", /* d480 */ "\x37\xfa\x37\xfb\x37\xfc\x37\xfd\x37\xfe\x37\xff\x38\x00\x38\x01\x38\x02\x38\x03\x38\x04\x38\x05\x38\x06\x38\x07\x38\x08\x38\x09\x38\x0a\x38\x0b\x38\x0c\x38\x0d\x38\x0e\x38\x0f\x38\x10\x38\x11\x38\x12\x38\x13\x38\x14\x38\x15\x38\x16\x38\x17\x38\x18\x38\x19\x38\x1a\x38\x1b\x38\x1c\x38\x1d\x38\x1e\x38\x1f\x38\x20\x38\x21\x38\x22\x38\x23\x38\x24\x38\x25\x38\x26\x38\x27\x38\x28\x38\x29\x38\x2a\x38\x2b\x38\x2c\x38\x2d\x38\x2e\x38\x2f\x38\x30\x38\x31\x38\x32\x38\x33\x38\x34\x38\x35\x38\x36\x38\x37\x38\x38\x38\x39\x38\x3a\x38\x3b\x38\x3c\x38\x3d\x38\x3e\x38\x3f\x38\x40\x38\x41\x38\x42\x38\x43\x38\x44\x38\x45\x38\x46\x38\x47\x38\x48\x38\x49\x38\x4a\x38\x4b\x38\x4c\x38\x4d\x38\x4e\x38\x4f\x38\x50\x38\x51\x38\x52\x38\x53\x38\x54\x38\x55\x38\x56\x38\x57\x38\x58\x38\x59\x38\x5a\x38\x5b\x38\x5c\x38\x5d\x38\x5e\x38\x5f\x38\x60\x38\x61\x38\x62\x38\x63\x38\x64\x38\x65\x38\x66\x38\x67\x38\x68\x38\x69\x38\x6a\x38\x6b\x38\x6c\x38\x6d\x38\x6e\x38\x6f\x38\x70\x38\x71\x38\x72\x38\x73\x38\x74\x38\x75\x38\x76\x38\x77\x38\x78\x00\x00", /* d500 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x38\x79\x38\x7a\x38\x7b\x38\x7c\x38\x7d\x38\x7e\x38\x7f\x38\x80\x38\x81\x38\x82\x38\x83\x38\x84\x38\x85\x38\x86\x38\x87\x38\x88\x38\x89\x38\x8a\x38\x8b\x38\x8c\x38\x8d\x38\x8e\x38\x8f\x38\x90\x38\x91\x38\x92\x38\x93\x38\x94\x38\x95\x38\x96\x38\x97\x38\x98\x38\x99\x38\x9a\x38\x9b\x38\x9c\x38\x9d\x38\x9e\x38\x9f\x38\xa0\x38\xa1\x38\xa2\x38\xa3\x38\xa4\x38\xa5\x38\xa6\x38\xa7\x38\xa8\x38\xa9\x38\xaa\x38\xab\x38\xac\x38\xad\x38\xae\x38\xaf\x38\xb0\x38\xb1\x38\xb2\x38\xb3\x38\xb4\x38\xb5\x38\xb6\x38\xb7", /* d580 */ "\x38\xb8\x38\xb9\x38\xba\x38\xbb\x38\xbc\x38\xbd\x38\xbe\x38\xbf\x38\xc0\x38\xc1\x38\xc2\x38\xc3\x38\xc4\x38\xc5\x38\xc6\x38\xc7\x38\xc8\x38\xc9\x38\xca\x38\xcb\x38\xcc\x38\xcd\x38\xce\x38\xcf\x38\xd0\x38\xd1\x38\xd2\x38\xd3\x38\xd4\x38\xd5\x38\xd6\x38\xd7\x38\xd8\x38\xd9\x38\xda\x38\xdb\x38\xdc\x38\xdd\x38\xde\x38\xdf\x38\xe0\x38\xe1\x38\xe2\x38\xe3\x38\xe4\x38\xe5\x38\xe6\x38\xe7\x38\xe8\x38\xe9\x38\xea\x38\xeb\x38\xec\x38\xed\x38\xee\x38\xef\x38\xf0\x38\xf1\x38\xf2\x38\xf3\x38\xf4\x38\xf5\x38\xf6\x38\xf7\x38\xf8\x38\xf9\x38\xfa\x38\xfb\x38\xfc\x38\xfd\x38\xfe\x38\xff\x39\x00\x39\x01\x39\x02\x39\x03\x39\x04\x39\x05\x39\x06\x39\x07\x39\x08\x39\x09\x39\x0a\x39\x0b\x39\x0c\x39\x0d\x39\x0e\x39\x0f\x39\x10\x39\x11\x39\x12\x39\x13\x39\x14\x39\x15\x39\x16\x39\x17\x39\x19\x39\x1a\x39\x1b\x39\x1c\x39\x1d\x39\x1e\x39\x1f\x39\x20\x39\x21\x39\x22\x39\x23\x39\x24\x39\x25\x39\x26\x39\x27\x39\x28\x39\x29\x39\x2a\x39\x2b\x39\x2c\x39\x2d\x39\x2e\x39\x2f\x39\x30\x39\x31\x39\x32\x39\x33\x39\x34\x39\x35\x39\x36\x39\x37\x00\x00", /* d600 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x39\x38\x39\x39\x39\x3a\x39\x3b\x39\x3c\x39\x3d\x39\x3e\x39\x3f\x39\x40\x39\x41\x39\x42\x39\x43\x39\x44\x39\x45\x39\x46\x39\x47\x39\x48\x39\x49\x39\x4a\x39\x4b\x39\x4c\x39\x4d\x39\x4e\x39\x4f\x39\x50\x39\x51\x39\x52\x39\x53\x39\x54\x39\x55\x39\x56\x39\x57\x39\x58\x39\x59\x39\x5a\x39\x5b\x39\x5c\x39\x5d\x39\x5e\x39\x5f\x39\x60\x39\x61\x39\x62\x39\x63\x39\x64\x39\x65\x39\x66\x39\x67\x39\x68\x39\x69\x39\x6a\x39\x6b\x39\x6c\x39\x6d\x39\x6f\x39\x70\x39\x71\x39\x72\x39\x73\x39\x74\x39\x75\x39\x76\x39\x77", /* d680 */ "\x39\x78\x39\x79\x39\x7a\x39\x7b\x39\x7c\x39\x7d\x39\x7e\x39\x7f\x39\x80\x39\x81\x39\x82\x39\x83\x39\x84\x39\x85\x39\x86\x39\x87\x39\x88\x39\x89\x39\x8a\x39\x8b\x39\x8c\x39\x8d\x39\x8e\x39\x8f\x39\x90\x39\x91\x39\x92\x39\x93\x39\x94\x39\x95\x39\x96\x39\x97\x39\x98\x39\x99\x39\x9a\x39\x9b\x39\x9c\x39\x9d\x39\x9e\x39\x9f\x39\xa0\x39\xa1\x39\xa2\x39\xa3\x39\xa4\x39\xa5\x39\xa6\x39\xa7\x39\xa8\x39\xa9\x39\xaa\x39\xab\x39\xac\x39\xad\x39\xae\x39\xaf\x39\xb0\x39\xb1\x39\xb2\x39\xb3\x39\xb4\x39\xb5\x39\xb6\x39\xb7\x39\xb8\x39\xb9\x39\xba\x39\xbb\x39\xbc\x39\xbd\x39\xbe\x39\xbf\x39\xc0\x39\xc1\x39\xc2\x39\xc3\x39\xc4\x39\xc5\x39\xc6\x39\xc7\x39\xc8\x39\xc9\x39\xca\x39\xcb\x39\xcc\x39\xcd\x39\xce\x39\xd1\x39\xd2\x39\xd3\x39\xd4\x39\xd5\x39\xd6\x39\xd7\x39\xd8\x39\xd9\x39\xda\x39\xdb\x39\xdc\x39\xdd\x39\xde\x39\xe0\x39\xe1\x39\xe2\x39\xe3\x39\xe4\x39\xe5\x39\xe6\x39\xe7\x39\xe8\x39\xe9\x39\xea\x39\xeb\x39\xec\x39\xed\x39\xee\x39\xef\x39\xf0\x39\xf1\x39\xf2\x39\xf3\x39\xf4\x39\xf5\x39\xf6\x39\xf7\x39\xf8\x39\xf9\x00\x00", /* d700 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x39\xfa\x39\xfb\x39\xfc\x39\xfd\x39\xfe\x39\xff\x3a\x00\x3a\x01\x3a\x02\x3a\x03\x3a\x04\x3a\x05\x3a\x06\x3a\x07\x3a\x08\x3a\x09\x3a\x0a\x3a\x0b\x3a\x0c\x3a\x0d\x3a\x0e\x3a\x0f\x3a\x10\x3a\x11\x3a\x12\x3a\x13\x3a\x14\x3a\x15\x3a\x16\x3a\x17\x3a\x18\x3a\x19\x3a\x1a\x3a\x1b\x3a\x1c\x3a\x1d\x3a\x1e\x3a\x1f\x3a\x20\x3a\x21\x3a\x22\x3a\x23\x3a\x24\x3a\x25\x3a\x26\x3a\x27\x3a\x28\x3a\x29\x3a\x2a\x3a\x2b\x3a\x2c\x3a\x2d\x3a\x2e\x3a\x2f\x3a\x30\x3a\x31\x3a\x32\x3a\x33\x3a\x34\x3a\x35\x3a\x36\x3a\x37\x3a\x38", /* d780 */ "\x3a\x39\x3a\x3a\x3a\x3b\x3a\x3c\x3a\x3d\x3a\x3e\x3a\x3f\x3a\x40\x3a\x41\x3a\x42\x3a\x43\x3a\x44\x3a\x45\x3a\x46\x3a\x47\x3a\x48\x3a\x49\x3a\x4a\x3a\x4b\x3a\x4c\x3a\x4d\x3a\x4e\x3a\x4f\x3a\x50\x3a\x51\x3a\x52\x3a\x53\x3a\x54\x3a\x55\x3a\x56\x3a\x57\x3a\x58\x3a\x59\x3a\x5a\x3a\x5b\x3a\x5c\x3a\x5d\x3a\x5e\x3a\x5f\x3a\x60\x3a\x61\x3a\x62\x3a\x63\x3a\x64\x3a\x65\x3a\x66\x3a\x67\x3a\x68\x3a\x69\x3a\x6a\x3a\x6b\x3a\x6c\x3a\x6d\x3a\x6e\x3a\x6f\x3a\x70\x3a\x71\x3a\x72\x3a\x74\x3a\x75\x3a\x76\x3a\x77\x3a\x78\x3a\x79\x3a\x7a\x3a\x7b\x3a\x7c\x3a\x7d\x3a\x7e\x3a\x7f\x3a\x80\x3a\x81\x3a\x82\x3a\x83\x3a\x84\x3a\x85\x3a\x86\x3a\x87\x3a\x88\x3a\x89\x3a\x8a\x3a\x8b\x3a\x8c\x3a\x8d\x3a\x8e\x3a\x8f\x3a\x90\x3a\x91\x3a\x92\x3a\x93\x3a\x94\x3a\x95\x3a\x96\x3a\x97\x3a\x98\x3a\x99\x3a\x9a\x3a\x9b\x3a\x9c\x3a\x9d\x3a\x9e\x3a\x9f\x3a\xa0\x3a\xa1\x3a\xa2\x3a\xa3\x3a\xa4\x3a\xa5\x3a\xa6\x3a\xa7\x3a\xa8\x3a\xa9\x3a\xaa\x3a\xab\x3a\xac\x3a\xad\x3a\xae\x3a\xaf\x3a\xb0\x3a\xb1\x3a\xb2\x3a\xb3\x3a\xb4\x3a\xb5\x3a\xb6\x3a\xb7\x3a\xb8\x00\x00", /* d800 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3a\xb9\x3a\xba\x3a\xbb\x3a\xbc\x3a\xbd\x3a\xbe\x3a\xbf\x3a\xc0\x3a\xc1\x3a\xc2\x3a\xc3\x3a\xc4\x3a\xc5\x3a\xc6\x3a\xc7\x3a\xc8\x3a\xc9\x3a\xca\x3a\xcb\x3a\xcc\x3a\xcd\x3a\xce\x3a\xcf\x3a\xd0\x3a\xd1\x3a\xd2\x3a\xd3\x3a\xd4\x3a\xd5\x3a\xd6\x3a\xd7\x3a\xd8\x3a\xd9\x3a\xda\x3a\xdb\x3a\xdc\x3a\xdd\x3a\xde\x3a\xdf\x3a\xe0\x3a\xe1\x3a\xe2\x3a\xe3\x3a\xe4\x3a\xe5\x3a\xe6\x3a\xe7\x3a\xe8\x3a\xe9\x3a\xea\x3a\xeb\x3a\xec\x3a\xed\x3a\xee\x3a\xef\x3a\xf0\x3a\xf1\x3a\xf2\x3a\xf3\x3a\xf4\x3a\xf5\x3a\xf6\x3a\xf7", /* d880 */ "\x3a\xf8\x3a\xf9\x3a\xfa\x3a\xfb\x3a\xfc\x3a\xfd\x3a\xfe\x3a\xff\x3b\x00\x3b\x01\x3b\x02\x3b\x03\x3b\x04\x3b\x05\x3b\x06\x3b\x07\x3b\x08\x3b\x09\x3b\x0a\x3b\x0b\x3b\x0c\x3b\x0d\x3b\x0e\x3b\x0f\x3b\x10\x3b\x11\x3b\x12\x3b\x13\x3b\x14\x3b\x15\x3b\x16\x3b\x17\x3b\x18\x3b\x19\x3b\x1a\x3b\x1b\x3b\x1c\x3b\x1d\x3b\x1e\x3b\x1f\x3b\x20\x3b\x21\x3b\x22\x3b\x23\x3b\x24\x3b\x25\x3b\x26\x3b\x27\x3b\x28\x3b\x29\x3b\x2a\x3b\x2b\x3b\x2c\x3b\x2d\x3b\x2e\x3b\x2f\x3b\x30\x3b\x31\x3b\x32\x3b\x33\x3b\x34\x3b\x35\x3b\x36\x3b\x37\x3b\x38\x3b\x39\x3b\x3a\x3b\x3b\x3b\x3c\x3b\x3d\x3b\x3e\x3b\x3f\x3b\x40\x3b\x41\x3b\x42\x3b\x43\x3b\x44\x3b\x45\x3b\x46\x3b\x47\x3b\x48\x3b\x49\x3b\x4a\x3b\x4b\x3b\x4c\x3b\x4d\x3b\x4f\x3b\x50\x3b\x51\x3b\x52\x3b\x53\x3b\x54\x3b\x55\x3b\x56\x3b\x57\x3b\x58\x3b\x59\x3b\x5a\x3b\x5b\x3b\x5c\x3b\x5d\x3b\x5e\x3b\x5f\x3b\x60\x3b\x61\x3b\x62\x3b\x63\x3b\x64\x3b\x65\x3b\x66\x3b\x67\x3b\x68\x3b\x69\x3b\x6a\x3b\x6b\x3b\x6c\x3b\x6d\x3b\x6e\x3b\x6f\x3b\x70\x3b\x71\x3b\x72\x3b\x73\x3b\x74\x3b\x75\x3b\x76\x3b\x77\x00\x00", /* d900 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3b\x78\x3b\x79\x3b\x7a\x3b\x7b\x3b\x7c\x3b\x7d\x3b\x7e\x3b\x7f\x3b\x80\x3b\x81\x3b\x82\x3b\x83\x3b\x84\x3b\x85\x3b\x86\x3b\x87\x3b\x88\x3b\x89\x3b\x8a\x3b\x8b\x3b\x8c\x3b\x8d\x3b\x8e\x3b\x8f\x3b\x90\x3b\x91\x3b\x92\x3b\x93\x3b\x94\x3b\x95\x3b\x96\x3b\x97\x3b\x98\x3b\x99\x3b\x9a\x3b\x9b\x3b\x9c\x3b\x9d\x3b\x9e\x3b\x9f\x3b\xa0\x3b\xa1\x3b\xa2\x3b\xa3\x3b\xa4\x3b\xa5\x3b\xa6\x3b\xa7\x3b\xa8\x3b\xa9\x3b\xaa\x3b\xab\x3b\xac\x3b\xad\x3b\xae\x3b\xaf\x3b\xb0\x3b\xb1\x3b\xb2\x3b\xb3\x3b\xb4\x3b\xb5\x3b\xb6", /* d980 */ "\x3b\xb7\x3b\xb8\x3b\xb9\x3b\xba\x3b\xbb\x3b\xbc\x3b\xbd\x3b\xbe\x3b\xbf\x3b\xc0\x3b\xc1\x3b\xc2\x3b\xc3\x3b\xc4\x3b\xc5\x3b\xc6\x3b\xc7\x3b\xc8\x3b\xc9\x3b\xca\x3b\xcb\x3b\xcc\x3b\xcd\x3b\xce\x3b\xcf\x3b\xd0\x3b\xd1\x3b\xd2\x3b\xd3\x3b\xd4\x3b\xd5\x3b\xd6\x3b\xd7\x3b\xd8\x3b\xd9\x3b\xda\x3b\xdb\x3b\xdc\x3b\xdd\x3b\xde\x3b\xdf\x3b\xe0\x3b\xe1\x3b\xe2\x3b\xe3\x3b\xe4\x3b\xe5\x3b\xe6\x3b\xe7\x3b\xe8\x3b\xe9\x3b\xea\x3b\xeb\x3b\xec\x3b\xed\x3b\xee\x3b\xef\x3b\xf0\x3b\xf1\x3b\xf2\x3b\xf3\x3b\xf4\x3b\xf5\x3b\xf6\x3b\xf7\x3b\xf8\x3b\xf9\x3b\xfa\x3b\xfb\x3b\xfc\x3b\xfd\x3b\xfe\x3b\xff\x3c\x00\x3c\x01\x3c\x02\x3c\x03\x3c\x04\x3c\x05\x3c\x06\x3c\x07\x3c\x08\x3c\x09\x3c\x0a\x3c\x0b\x3c\x0c\x3c\x0d\x3c\x0e\x3c\x0f\x3c\x10\x3c\x11\x3c\x12\x3c\x13\x3c\x14\x3c\x15\x3c\x16\x3c\x17\x3c\x18\x3c\x19\x3c\x1a\x3c\x1b\x3c\x1c\x3c\x1d\x3c\x1e\x3c\x1f\x3c\x20\x3c\x21\x3c\x22\x3c\x23\x3c\x24\x3c\x25\x3c\x26\x3c\x27\x3c\x28\x3c\x29\x3c\x2a\x3c\x2b\x3c\x2c\x3c\x2d\x3c\x2e\x3c\x2f\x3c\x30\x3c\x31\x3c\x32\x3c\x33\x3c\x34\x3c\x35\x00\x00", /* da00 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3c\x36\x3c\x37\x3c\x38\x3c\x39\x3c\x3a\x3c\x3b\x3c\x3c\x3c\x3d\x3c\x3e\x3c\x3f\x3c\x40\x3c\x41\x3c\x42\x3c\x43\x3c\x44\x3c\x45\x3c\x46\x3c\x47\x3c\x48\x3c\x49\x3c\x4a\x3c\x4b\x3c\x4c\x3c\x4d\x3c\x4e\x3c\x4f\x3c\x50\x3c\x51\x3c\x52\x3c\x53\x3c\x54\x3c\x55\x3c\x56\x3c\x57\x3c\x58\x3c\x59\x3c\x5a\x3c\x5b\x3c\x5c\x3c\x5d\x3c\x5e\x3c\x5f\x3c\x60\x3c\x61\x3c\x62\x3c\x63\x3c\x64\x3c\x65\x3c\x66\x3c\x67\x3c\x68\x3c\x69\x3c\x6a\x3c\x6b\x3c\x6c\x3c\x6d\x3c\x6f\x3c\x70\x3c\x71\x3c\x72\x3c\x73\x3c\x74\x3c\x75", /* da80 */ "\x3c\x76\x3c\x77\x3c\x78\x3c\x79\x3c\x7a\x3c\x7b\x3c\x7c\x3c\x7d\x3c\x7e\x3c\x7f\x3c\x80\x3c\x81\x3c\x82\x3c\x83\x3c\x84\x3c\x85\x3c\x86\x3c\x87\x3c\x88\x3c\x89\x3c\x8a\x3c\x8b\x3c\x8c\x3c\x8d\x3c\x8e\x3c\x8f\x3c\x90\x3c\x91\x3c\x92\x3c\x93\x3c\x94\x3c\x95\x3c\x96\x3c\x97\x3c\x98\x3c\x99\x3c\x9a\x3c\x9b\x3c\x9c\x3c\x9d\x3c\x9e\x3c\x9f\x3c\xa0\x3c\xa1\x3c\xa2\x3c\xa3\x3c\xa4\x3c\xa5\x3c\xa6\x3c\xa7\x3c\xa8\x3c\xa9\x3c\xaa\x3c\xab\x3c\xac\x3c\xad\x3c\xae\x3c\xaf\x3c\xb0\x3c\xb1\x3c\xb2\x3c\xb3\x3c\xb4\x3c\xb5\x3c\xb6\x3c\xb7\x3c\xb8\x3c\xb9\x3c\xba\x3c\xbb\x3c\xbc\x3c\xbd\x3c\xbe\x3c\xbf\x3c\xc0\x3c\xc1\x3c\xc2\x3c\xc3\x3c\xc4\x3c\xc5\x3c\xc6\x3c\xc7\x3c\xc8\x3c\xc9\x3c\xca\x3c\xcb\x3c\xcc\x3c\xcd\x3c\xce\x3c\xcf\x3c\xd0\x3c\xd1\x3c\xd2\x3c\xd3\x3c\xd4\x3c\xd5\x3c\xd6\x3c\xd7\x3c\xd8\x3c\xd9\x3c\xda\x3c\xdb\x3c\xdc\x3c\xdd\x3c\xde\x3c\xdf\x3c\xe1\x3c\xe2\x3c\xe3\x3c\xe4\x3c\xe5\x3c\xe6\x3c\xe7\x3c\xe8\x3c\xe9\x3c\xea\x3c\xeb\x3c\xec\x3c\xed\x3c\xee\x3c\xef\x3c\xf0\x3c\xf1\x3c\xf2\x3c\xf3\x3c\xf4\x3c\xf5\x00\x00", /* db00 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3c\xf6\x3c\xf7\x3c\xf8\x3c\xf9\x3c\xfa\x3c\xfb\x3c\xfc\x3c\xfd\x3c\xfe\x3c\xff\x3d\x00\x3d\x01\x3d\x02\x3d\x03\x3d\x04\x3d\x05\x3d\x06\x3d\x07\x3d\x08\x3d\x09\x3d\x0a\x3d\x0b\x3d\x0c\x3d\x0d\x3d\x0e\x3d\x0f\x3d\x10\x3d\x11\x3d\x12\x3d\x13\x3d\x14\x3d\x15\x3d\x16\x3d\x17\x3d\x18\x3d\x19\x3d\x1a\x3d\x1b\x3d\x1c\x3d\x1d\x3d\x1e\x3d\x1f\x3d\x20\x3d\x21\x3d\x22\x3d\x23\x3d\x24\x3d\x25\x3d\x26\x3d\x27\x3d\x28\x3d\x29\x3d\x2a\x3d\x2b\x3d\x2c\x3d\x2d\x3d\x2e\x3d\x2f\x3d\x30\x3d\x31\x3d\x32\x3d\x33\x3d\x34", /* db80 */ "\x3d\x35\x3d\x36\x3d\x37\x3d\x38\x3d\x39\x3d\x3a\x3d\x3b\x3d\x3c\x3d\x3d\x3d\x3e\x3d\x3f\x3d\x40\x3d\x41\x3d\x42\x3d\x43\x3d\x44\x3d\x45\x3d\x46\x3d\x47\x3d\x48\x3d\x49\x3d\x4a\x3d\x4b\x3d\x4c\x3d\x4d\x3d\x4e\x3d\x4f\x3d\x50\x3d\x51\x3d\x52\x3d\x53\x3d\x54\x3d\x55\x3d\x56\x3d\x57\x3d\x58\x3d\x59\x3d\x5a\x3d\x5b\x3d\x5c\x3d\x5d\x3d\x5e\x3d\x5f\x3d\x60\x3d\x61\x3d\x62\x3d\x63\x3d\x64\x3d\x65\x3d\x66\x3d\x67\x3d\x68\x3d\x69\x3d\x6a\x3d\x6b\x3d\x6c\x3d\x6d\x3d\x6e\x3d\x6f\x3d\x70\x3d\x71\x3d\x72\x3d\x73\x3d\x74\x3d\x75\x3d\x76\x3d\x77\x3d\x78\x3d\x79\x3d\x7a\x3d\x7b\x3d\x7c\x3d\x7d\x3d\x7e\x3d\x7f\x3d\x80\x3d\x81\x3d\x82\x3d\x83\x3d\x84\x3d\x85\x3d\x86\x3d\x87\x3d\x88\x3d\x89\x3d\x8a\x3d\x8b\x3d\x8c\x3d\x8d\x3d\x8e\x3d\x8f\x3d\x90\x3d\x91\x3d\x92\x3d\x93\x3d\x94\x3d\x95\x3d\x96\x3d\x97\x3d\x98\x3d\x99\x3d\x9a\x3d\x9b\x3d\x9c\x3d\x9d\x3d\x9e\x3d\x9f\x3d\xa0\x3d\xa1\x3d\xa2\x3d\xa3\x3d\xa4\x3d\xa5\x3d\xa6\x3d\xa7\x3d\xa8\x3d\xa9\x3d\xaa\x3d\xab\x3d\xac\x3d\xad\x3d\xae\x3d\xaf\x3d\xb0\x3d\xb1\x3d\xb2\x3d\xb3\x00\x00", /* dc00 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3d\xb4\x3d\xb5\x3d\xb6\x3d\xb7\x3d\xb8\x3d\xb9\x3d\xba\x3d\xbb\x3d\xbc\x3d\xbd\x3d\xbe\x3d\xbf\x3d\xc0\x3d\xc1\x3d\xc2\x3d\xc3\x3d\xc4\x3d\xc5\x3d\xc6\x3d\xc7\x3d\xc8\x3d\xc9\x3d\xca\x3d\xcb\x3d\xcc\x3d\xcd\x3d\xce\x3d\xcf\x3d\xd0\x3d\xd1\x3d\xd2\x3d\xd3\x3d\xd4\x3d\xd5\x3d\xd6\x3d\xd7\x3d\xd8\x3d\xd9\x3d\xda\x3d\xdb\x3d\xdc\x3d\xdd\x3d\xde\x3d\xdf\x3d\xe0\x3d\xe1\x3d\xe2\x3d\xe3\x3d\xe4\x3d\xe5\x3d\xe6\x3d\xe7\x3d\xe8\x3d\xe9\x3d\xea\x3d\xeb\x3d\xec\x3d\xed\x3d\xee\x3d\xef\x3d\xf0\x3d\xf1\x3d\xf2", /* dc80 */ "\x3d\xf3\x3d\xf4\x3d\xf5\x3d\xf6\x3d\xf7\x3d\xf8\x3d\xf9\x3d\xfa\x3d\xfb\x3d\xfc\x3d\xfd\x3d\xfe\x3d\xff\x3e\x00\x3e\x01\x3e\x02\x3e\x03\x3e\x04\x3e\x05\x3e\x06\x3e\x07\x3e\x08\x3e\x09\x3e\x0a\x3e\x0b\x3e\x0c\x3e\x0d\x3e\x0e\x3e\x0f\x3e\x10\x3e\x11\x3e\x12\x3e\x13\x3e\x14\x3e\x15\x3e\x16\x3e\x17\x3e\x18\x3e\x19\x3e\x1a\x3e\x1b\x3e\x1c\x3e\x1d\x3e\x1e\x3e\x1f\x3e\x20\x3e\x21\x3e\x22\x3e\x23\x3e\x24\x3e\x25\x3e\x26\x3e\x27\x3e\x28\x3e\x29\x3e\x2a\x3e\x2b\x3e\x2c\x3e\x2d\x3e\x2e\x3e\x2f\x3e\x30\x3e\x31\x3e\x32\x3e\x33\x3e\x34\x3e\x35\x3e\x36\x3e\x37\x3e\x38\x3e\x39\x3e\x3a\x3e\x3b\x3e\x3c\x3e\x3d\x3e\x3e\x3e\x3f\x3e\x40\x3e\x41\x3e\x42\x3e\x43\x3e\x44\x3e\x45\x3e\x46\x3e\x47\x3e\x48\x3e\x49\x3e\x4a\x3e\x4b\x3e\x4c\x3e\x4d\x3e\x4e\x3e\x4f\x3e\x50\x3e\x51\x3e\x52\x3e\x53\x3e\x54\x3e\x55\x3e\x56\x3e\x57\x3e\x58\x3e\x59\x3e\x5a\x3e\x5b\x3e\x5c\x3e\x5d\x3e\x5e\x3e\x5f\x3e\x60\x3e\x61\x3e\x62\x3e\x63\x3e\x64\x3e\x65\x3e\x66\x3e\x67\x3e\x68\x3e\x69\x3e\x6a\x3e\x6b\x3e\x6c\x3e\x6d\x3e\x6e\x3e\x6f\x3e\x70\x3e\x71\x00\x00", /* dd00 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3e\x72\x3e\x73\x3e\x74\x3e\x75\x3e\x76\x3e\x77\x3e\x78\x3e\x79\x3e\x7a\x3e\x7b\x3e\x7c\x3e\x7d\x3e\x7e\x3e\x7f\x3e\x80\x3e\x81\x3e\x82\x3e\x83\x3e\x84\x3e\x85\x3e\x86\x3e\x87\x3e\x88\x3e\x89\x3e\x8a\x3e\x8b\x3e\x8c\x3e\x8d\x3e\x8e\x3e\x8f\x3e\x90\x3e\x91\x3e\x92\x3e\x93\x3e\x94\x3e\x95\x3e\x96\x3e\x97\x3e\x98\x3e\x99\x3e\x9a\x3e\x9b\x3e\x9c\x3e\x9d\x3e\x9e\x3e\x9f\x3e\xa0\x3e\xa1\x3e\xa2\x3e\xa3\x3e\xa4\x3e\xa5\x3e\xa6\x3e\xa7\x3e\xa8\x3e\xa9\x3e\xaa\x3e\xab\x3e\xac\x3e\xad\x3e\xae\x3e\xaf\x3e\xb0", /* dd80 */ "\x3e\xb1\x3e\xb2\x3e\xb3\x3e\xb4\x3e\xb5\x3e\xb6\x3e\xb7\x3e\xb8\x3e\xb9\x3e\xba\x3e\xbb\x3e\xbc\x3e\xbd\x3e\xbe\x3e\xbf\x3e\xc0\x3e\xc1\x3e\xc2\x3e\xc3\x3e\xc4\x3e\xc5\x3e\xc6\x3e\xc7\x3e\xc8\x3e\xc9\x3e\xca\x3e\xcb\x3e\xcc\x3e\xcd\x3e\xce\x3e\xcf\x3e\xd0\x3e\xd1\x3e\xd2\x3e\xd3\x3e\xd4\x3e\xd5\x3e\xd6\x3e\xd7\x3e\xd8\x3e\xd9\x3e\xda\x3e\xdb\x3e\xdc\x3e\xdd\x3e\xde\x3e\xdf\x3e\xe0\x3e\xe1\x3e\xe2\x3e\xe3\x3e\xe4\x3e\xe5\x3e\xe6\x3e\xe7\x3e\xe8\x3e\xe9\x3e\xea\x3e\xeb\x3e\xec\x3e\xed\x3e\xee\x3e\xef\x3e\xf0\x3e\xf1\x3e\xf2\x3e\xf3\x3e\xf4\x3e\xf5\x3e\xf6\x3e\xf7\x3e\xf8\x3e\xf9\x3e\xfa\x3e\xfb\x3e\xfc\x3e\xfd\x3e\xfe\x3e\xff\x3f\x00\x3f\x01\x3f\x02\x3f\x03\x3f\x04\x3f\x05\x3f\x06\x3f\x07\x3f\x08\x3f\x09\x3f\x0a\x3f\x0b\x3f\x0c\x3f\x0d\x3f\x0e\x3f\x0f\x3f\x10\x3f\x11\x3f\x12\x3f\x13\x3f\x14\x3f\x15\x3f\x16\x3f\x17\x3f\x18\x3f\x19\x3f\x1a\x3f\x1b\x3f\x1c\x3f\x1d\x3f\x1e\x3f\x1f\x3f\x20\x3f\x21\x3f\x22\x3f\x23\x3f\x24\x3f\x25\x3f\x26\x3f\x27\x3f\x28\x3f\x29\x3f\x2a\x3f\x2b\x3f\x2c\x3f\x2d\x3f\x2e\x3f\x2f\x00\x00", /* de00 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3f\x30\x3f\x31\x3f\x32\x3f\x33\x3f\x34\x3f\x35\x3f\x36\x3f\x37\x3f\x38\x3f\x39\x3f\x3a\x3f\x3b\x3f\x3c\x3f\x3d\x3f\x3e\x3f\x3f\x3f\x40\x3f\x41\x3f\x42\x3f\x43\x3f\x44\x3f\x45\x3f\x46\x3f\x47\x3f\x48\x3f\x49\x3f\x4a\x3f\x4b\x3f\x4c\x3f\x4d\x3f\x4e\x3f\x4f\x3f\x50\x3f\x51\x3f\x52\x3f\x53\x3f\x54\x3f\x55\x3f\x56\x3f\x57\x3f\x58\x3f\x59\x3f\x5a\x3f\x5b\x3f\x5c\x3f\x5d\x3f\x5e\x3f\x5f\x3f\x60\x3f\x61\x3f\x62\x3f\x63\x3f\x64\x3f\x65\x3f\x66\x3f\x67\x3f\x68\x3f\x69\x3f\x6a\x3f\x6b\x3f\x6c\x3f\x6d\x3f\x6e", /* de80 */ "\x3f\x6f\x3f\x70\x3f\x71\x3f\x72\x3f\x73\x3f\x74\x3f\x75\x3f\x76\x3f\x77\x3f\x78\x3f\x79\x3f\x7a\x3f\x7b\x3f\x7c\x3f\x7d\x3f\x7e\x3f\x7f\x3f\x80\x3f\x81\x3f\x82\x3f\x83\x3f\x84\x3f\x85\x3f\x86\x3f\x87\x3f\x88\x3f\x89\x3f\x8a\x3f\x8b\x3f\x8c\x3f\x8d\x3f\x8e\x3f\x8f\x3f\x90\x3f\x91\x3f\x92\x3f\x93\x3f\x94\x3f\x95\x3f\x96\x3f\x97\x3f\x98\x3f\x99\x3f\x9a\x3f\x9b\x3f\x9c\x3f\x9d\x3f\x9e\x3f\x9f\x3f\xa0\x3f\xa1\x3f\xa2\x3f\xa3\x3f\xa4\x3f\xa5\x3f\xa6\x3f\xa7\x3f\xa8\x3f\xa9\x3f\xaa\x3f\xab\x3f\xac\x3f\xad\x3f\xae\x3f\xaf\x3f\xb0\x3f\xb1\x3f\xb2\x3f\xb3\x3f\xb4\x3f\xb5\x3f\xb6\x3f\xb7\x3f\xb8\x3f\xb9\x3f\xba\x3f\xbb\x3f\xbc\x3f\xbd\x3f\xbe\x3f\xbf\x3f\xc0\x3f\xc1\x3f\xc2\x3f\xc3\x3f\xc4\x3f\xc5\x3f\xc6\x3f\xc7\x3f\xc8\x3f\xc9\x3f\xca\x3f\xcb\x3f\xcc\x3f\xcd\x3f\xce\x3f\xcf\x3f\xd0\x3f\xd1\x3f\xd2\x3f\xd3\x3f\xd4\x3f\xd5\x3f\xd6\x3f\xd7\x3f\xd8\x3f\xd9\x3f\xda\x3f\xdb\x3f\xdc\x3f\xdd\x3f\xde\x3f\xdf\x3f\xe0\x3f\xe1\x3f\xe2\x3f\xe3\x3f\xe4\x3f\xe5\x3f\xe6\x3f\xe7\x3f\xe8\x3f\xe9\x3f\xea\x3f\xeb\x3f\xec\x3f\xed\x00\x00", /* df00 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3f\xee\x3f\xef\x3f\xf0\x3f\xf1\x3f\xf2\x3f\xf3\x3f\xf4\x3f\xf5\x3f\xf6\x3f\xf7\x3f\xf8\x3f\xf9\x3f\xfa\x3f\xfb\x3f\xfc\x3f\xfd\x3f\xfe\x3f\xff\x40\x00\x40\x01\x40\x02\x40\x03\x40\x04\x40\x05\x40\x06\x40\x07\x40\x08\x40\x09\x40\x0a\x40\x0b\x40\x0c\x40\x0d\x40\x0e\x40\x0f\x40\x10\x40\x11\x40\x12\x40\x13\x40\x14\x40\x15\x40\x16\x40\x17\x40\x18\x40\x19\x40\x1a\x40\x1b\x40\x1c\x40\x1d\x40\x1e\x40\x1f\x40\x20\x40\x21\x40\x22\x40\x23\x40\x24\x40\x25\x40\x26\x40\x27\x40\x28\x40\x29\x40\x2a\x40\x2b\x40\x2c", /* df80 */ "\x40\x2d\x40\x2e\x40\x2f\x40\x30\x40\x31\x40\x32\x40\x33\x40\x34\x40\x35\x40\x36\x40\x37\x40\x38\x40\x39\x40\x3a\x40\x3b\x40\x3c\x40\x3d\x40\x3e\x40\x3f\x40\x40\x40\x41\x40\x42\x40\x43\x40\x44\x40\x45\x40\x46\x40\x47\x40\x48\x40\x49\x40\x4a\x40\x4b\x40\x4c\x40\x4d\x40\x4e\x40\x4f\x40\x50\x40\x51\x40\x52\x40\x53\x40\x54\x40\x55\x40\x57\x40\x58\x40\x59\x40\x5a\x40\x5b\x40\x5c\x40\x5d\x40\x5e\x40\x5f\x40\x60\x40\x61\x40\x62\x40\x63\x40\x64\x40\x65\x40\x66\x40\x67\x40\x68\x40\x69\x40\x6a\x40\x6b\x40\x6c\x40\x6d\x40\x6e\x40\x6f\x40\x70\x40\x71\x40\x72\x40\x73\x40\x74\x40\x75\x40\x76\x40\x77\x40\x78\x40\x79\x40\x7a\x40\x7b\x40\x7c\x40\x7d\x40\x7e\x40\x7f\x40\x80\x40\x81\x40\x82\x40\x83\x40\x84\x40\x85\x40\x86\x40\x87\x40\x88\x40\x89\x40\x8a\x40\x8b\x40\x8c\x40\x8d\x40\x8e\x40\x8f\x40\x90\x40\x91\x40\x92\x40\x93\x40\x94\x40\x95\x40\x96\x40\x97\x40\x98\x40\x99\x40\x9a\x40\x9b\x40\x9c\x40\x9d\x40\x9e\x40\x9f\x40\xa0\x40\xa1\x40\xa2\x40\xa3\x40\xa4\x40\xa5\x40\xa6\x40\xa7\x40\xa8\x40\xa9\x40\xaa\x40\xab\x40\xac\x00\x00", /* e000 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\xad\x40\xae\x40\xaf\x40\xb0\x40\xb1\x40\xb2\x40\xb3\x40\xb4\x40\xb5\x40\xb6\x40\xb7\x40\xb8\x40\xb9\x40\xba\x40\xbb\x40\xbc\x40\xbd\x40\xbe\x40\xbf\x40\xc0\x40\xc1\x40\xc2\x40\xc3\x40\xc4\x40\xc5\x40\xc6\x40\xc7\x40\xc8\x40\xc9\x40\xca\x40\xcb\x40\xcc\x40\xcd\x40\xce\x40\xcf\x40\xd0\x40\xd1\x40\xd2\x40\xd3\x40\xd4\x40\xd5\x40\xd6\x40\xd7\x40\xd8\x40\xd9\x40\xda\x40\xdb\x40\xdc\x40\xdd\x40\xde\x40\xdf\x40\xe0\x40\xe1\x40\xe2\x40\xe3\x40\xe4\x40\xe5\x40\xe6\x40\xe7\x40\xe8\x40\xe9\x40\xea\x40\xeb", /* e080 */ "\x40\xec\x40\xed\x40\xee\x40\xef\x40\xf0\x40\xf1\x40\xf2\x40\xf3\x40\xf4\x40\xf5\x40\xf6\x40\xf7\x40\xf8\x40\xf9\x40\xfa\x40\xfb\x40\xfc\x40\xfd\x40\xfe\x40\xff\x41\x00\x41\x01\x41\x02\x41\x03\x41\x04\x41\x05\x41\x06\x41\x07\x41\x08\x41\x09\x41\x0a\x41\x0b\x41\x0c\x41\x0d\x41\x0e\x41\x0f\x41\x10\x41\x11\x41\x12\x41\x13\x41\x14\x41\x15\x41\x16\x41\x17\x41\x18\x41\x19\x41\x1a\x41\x1b\x41\x1c\x41\x1d\x41\x1e\x41\x1f\x41\x20\x41\x21\x41\x22\x41\x23\x41\x24\x41\x25\x41\x26\x41\x27\x41\x28\x41\x29\x41\x2a\x41\x2b\x41\x2c\x41\x2d\x41\x2e\x41\x2f\x41\x30\x41\x31\x41\x32\x41\x33\x41\x34\x41\x35\x41\x36\x41\x37\x41\x38\x41\x39\x41\x3a\x41\x3b\x41\x3c\x41\x3d\x41\x3e\x41\x3f\x41\x40\x41\x41\x41\x42\x41\x43\x41\x44\x41\x45\x41\x46\x41\x47\x41\x48\x41\x49\x41\x4a\x41\x4b\x41\x4c\x41\x4d\x41\x4e\x41\x4f\x41\x50\x41\x51\x41\x52\x41\x53\x41\x54\x41\x55\x41\x56\x41\x57\x41\x58\x41\x59\x41\x5a\x41\x5b\x41\x5c\x41\x5d\x41\x5e\x41\x60\x41\x61\x41\x62\x41\x63\x41\x64\x41\x65\x41\x66\x41\x67\x41\x68\x41\x69\x41\x6a\x41\x6b\x00\x00", /* e100 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x41\x6c\x41\x6d\x41\x6e\x41\x6f\x41\x70\x41\x71\x41\x72\x41\x73\x41\x74\x41\x75\x41\x76\x41\x77\x41\x78\x41\x79\x41\x7a\x41\x7b\x41\x7c\x41\x7d\x41\x7e\x41\x7f\x41\x80\x41\x81\x41\x82\x41\x83\x41\x84\x41\x85\x41\x86\x41\x87\x41\x88\x41\x89\x41\x8a\x41\x8b\x41\x8c\x41\x8d\x41\x8e\x41\x8f\x41\x90\x41\x91\x41\x92\x41\x93\x41\x94\x41\x95\x41\x96\x41\x97\x41\x98\x41\x99\x41\x9a\x41\x9b\x41\x9c\x41\x9d\x41\x9e\x41\x9f\x41\xa0\x41\xa1\x41\xa2\x41\xa3\x41\xa4\x41\xa5\x41\xa6\x41\xa7\x41\xa8\x41\xa9\x41\xaa", /* e180 */ "\x41\xab\x41\xac\x41\xad\x41\xae\x41\xaf\x41\xb0\x41\xb1\x41\xb2\x41\xb3\x41\xb4\x41\xb5\x41\xb6\x41\xb7\x41\xb8\x41\xb9\x41\xba\x41\xbb\x41\xbc\x41\xbd\x41\xbe\x41\xbf\x41\xc0\x41\xc1\x41\xc2\x41\xc3\x41\xc4\x41\xc5\x41\xc6\x41\xc7\x41\xc8\x41\xc9\x41\xca\x41\xcb\x41\xcc\x41\xcd\x41\xce\x41\xcf\x41\xd0\x41\xd1\x41\xd2\x41\xd3\x41\xd4\x41\xd5\x41\xd6\x41\xd7\x41\xd8\x41\xd9\x41\xda\x41\xdb\x41\xdc\x41\xdd\x41\xde\x41\xdf\x41\xe0\x41\xe1\x41\xe2\x41\xe3\x41\xe4\x41\xe5\x41\xe6\x41\xe7\x41\xe8\x41\xe9\x41\xea\x41\xeb\x41\xec\x41\xed\x41\xee\x41\xef\x41\xf0\x41\xf1\x41\xf2\x41\xf3\x41\xf4\x41\xf5\x41\xf6\x41\xf7\x41\xf8\x41\xf9\x41\xfa\x41\xfb\x41\xfc\x41\xfd\x41\xfe\x41\xff\x42\x00\x42\x01\x42\x02\x42\x03\x42\x04\x42\x05\x42\x06\x42\x07\x42\x08\x42\x09\x42\x0a\x42\x0b\x42\x0c\x42\x0d\x42\x0e\x42\x0f\x42\x10\x42\x11\x42\x12\x42\x13\x42\x14\x42\x15\x42\x16\x42\x17\x42\x18\x42\x19\x42\x1a\x42\x1b\x42\x1c\x42\x1d\x42\x1e\x42\x1f\x42\x20\x42\x21\x42\x22\x42\x23\x42\x24\x42\x25\x42\x26\x42\x27\x42\x28\x42\x29\x00\x00", /* e200 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x42\x2a\x42\x2b\x42\x2c\x42\x2d\x42\x2e\x42\x2f\x42\x30\x42\x31\x42\x32\x42\x33\x42\x34\x42\x35\x42\x36\x42\x37\x42\x38\x42\x39\x42\x3a\x42\x3b\x42\x3c\x42\x3d\x42\x3e\x42\x3f\x42\x40\x42\x41\x42\x42\x42\x43\x42\x44\x42\x45\x42\x46\x42\x47\x42\x48\x42\x49\x42\x4a\x42\x4b\x42\x4c\x42\x4d\x42\x4e\x42\x4f\x42\x50\x42\x51\x42\x52\x42\x53\x42\x54\x42\x55\x42\x56\x42\x57\x42\x58\x42\x59\x42\x5a\x42\x5b\x42\x5c\x42\x5d\x42\x5e\x42\x5f\x42\x60\x42\x61\x42\x62\x42\x63\x42\x64\x42\x65\x42\x66\x42\x67\x42\x68", /* e280 */ "\x42\x69\x42\x6a\x42\x6b\x42\x6c\x42\x6d\x42\x6e\x42\x6f\x42\x70\x42\x71\x42\x72\x42\x73\x42\x74\x42\x75\x42\x76\x42\x77\x42\x78\x42\x79\x42\x7a\x42\x7b\x42\x7c\x42\x7d\x42\x7e\x42\x7f\x42\x80\x42\x81\x42\x82\x42\x83\x42\x84\x42\x85\x42\x86\x42\x87\x42\x88\x42\x89\x42\x8a\x42\x8b\x42\x8c\x42\x8d\x42\x8e\x42\x8f\x42\x90\x42\x91\x42\x92\x42\x93\x42\x94\x42\x95\x42\x96\x42\x97\x42\x98\x42\x99\x42\x9a\x42\x9b\x42\x9c\x42\x9d\x42\x9e\x42\x9f\x42\xa0\x42\xa1\x42\xa2\x42\xa3\x42\xa4\x42\xa5\x42\xa6\x42\xa7\x42\xa8\x42\xa9\x42\xaa\x42\xab\x42\xac\x42\xad\x42\xae\x42\xaf\x42\xb0\x42\xb1\x42\xb2\x42\xb3\x42\xb4\x42\xb5\x42\xb6\x42\xb7\x42\xb8\x42\xb9\x42\xba\x42\xbb\x42\xbc\x42\xbd\x42\xbe\x42\xbf\x42\xc0\x42\xc1\x42\xc2\x42\xc3\x42\xc4\x42\xc5\x42\xc6\x42\xc7\x42\xc8\x42\xc9\x42\xca\x42\xcb\x42\xcc\x42\xcd\x42\xce\x42\xcf\x42\xd0\x42\xd1\x42\xd2\x42\xd3\x42\xd4\x42\xd5\x42\xd6\x42\xd7\x42\xd8\x42\xd9\x42\xda\x42\xdb\x42\xdc\x42\xdd\x42\xde\x42\xdf\x42\xe0\x42\xe1\x42\xe2\x42\xe3\x42\xe4\x42\xe5\x42\xe6\x42\xe7\x00\x00", /* e300 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x42\xe8\x42\xe9\x42\xea\x42\xeb\x42\xec\x42\xed\x42\xee\x42\xef\x42\xf0\x42\xf1\x42\xf2\x42\xf3\x42\xf4\x42\xf5\x42\xf6\x42\xf7\x42\xf8\x42\xf9\x42\xfa\x42\xfb\x42\xfc\x42\xfd\x42\xfe\x42\xff\x43\x00\x43\x01\x43\x02\x43\x03\x43\x04\x43\x05\x43\x06\x43\x07\x43\x08\x43\x09\x43\x0a\x43\x0b\x43\x0c\x43\x0d\x43\x0e\x43\x0f\x43\x10\x43\x11\x43\x12\x43\x13\x43\x14\x43\x15\x43\x16\x43\x17\x43\x18\x43\x19\x43\x1a\x43\x1b\x43\x1c\x43\x1d\x43\x1e\x43\x1f\x43\x20\x43\x21\x43\x22\x43\x23\x43\x24\x43\x25\x43\x26", /* e380 */ "\x43\x27\x43\x28\x43\x29\x43\x2a\x43\x2b\x43\x2c\x43\x2d\x43\x2e\x43\x2f\x43\x30\x43\x31\x43\x32\x43\x33\x43\x34\x43\x35\x43\x36\x43\x38\x43\x39\x43\x3a\x43\x3b\x43\x3c\x43\x3d\x43\x3e\x43\x3f\x43\x40\x43\x41\x43\x42\x43\x43\x43\x44\x43\x45\x43\x46\x43\x47\x43\x48\x43\x49\x43\x4a\x43\x4b\x43\x4c\x43\x4d\x43\x4e\x43\x4f\x43\x50\x43\x51\x43\x52\x43\x53\x43\x54\x43\x55\x43\x56\x43\x57\x43\x58\x43\x59\x43\x5a\x43\x5b\x43\x5c\x43\x5d\x43\x5e\x43\x5f\x43\x60\x43\x61\x43\x62\x43\x63\x43\x64\x43\x65\x43\x66\x43\x67\x43\x68\x43\x69\x43\x6a\x43\x6b\x43\x6c\x43\x6d\x43\x6e\x43\x6f\x43\x70\x43\x71\x43\x72\x43\x73\x43\x74\x43\x75\x43\x76\x43\x77\x43\x78\x43\x79\x43\x7a\x43\x7b\x43\x7c\x43\x7d\x43\x7e\x43\x7f\x43\x80\x43\x81\x43\x82\x43\x83\x43\x84\x43\x85\x43\x86\x43\x87\x43\x88\x43\x89\x43\x8a\x43\x8b\x43\x8c\x43\x8d\x43\x8e\x43\x8f\x43\x90\x43\x91\x43\x92\x43\x93\x43\x94\x43\x95\x43\x96\x43\x97\x43\x98\x43\x99\x43\x9a\x43\x9b\x43\x9c\x43\x9d\x43\x9e\x43\x9f\x43\xa0\x43\xa1\x43\xa2\x43\xa3\x43\xa4\x43\xa5\x43\xa6\x00\x00", /* e400 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x43\xa7\x43\xa8\x43\xa9\x43\xaa\x43\xab\x43\xad\x43\xae\x43\xaf\x43\xb0\x43\xb2\x43\xb3\x43\xb4\x43\xb5\x43\xb6\x43\xb7\x43\xb8\x43\xb9\x43\xba\x43\xbb\x43\xbc\x43\xbd\x43\xbe\x43\xbf\x43\xc0\x43\xc1\x43\xc2\x43\xc3\x43\xc4\x43\xc5\x43\xc6\x43\xc7\x43\xc8\x43\xc9\x43\xca\x43\xcb\x43\xcc\x43\xcd\x43\xce\x43\xcf\x43\xd0\x43\xd1\x43\xd2\x43\xd3\x43\xd4\x43\xd5\x43\xd6\x43\xd7\x43\xd8\x43\xd9\x43\xda\x43\xdb\x43\xdc\x43\xde\x43\xdf\x43\xe0\x43\xe1\x43\xe2\x43\xe3\x43\xe4\x43\xe5\x43\xe6\x43\xe7\x43\xe8", /* e480 */ "\x43\xe9\x43\xea\x43\xeb\x43\xec\x43\xed\x43\xee\x43\xef\x43\xf0\x43\xf1\x43\xf2\x43\xf3\x43\xf4\x43\xf5\x43\xf6\x43\xf7\x43\xf8\x43\xf9\x43\xfa\x43\xfb\x43\xfc\x43\xfd\x43\xfe\x43\xff\x44\x00\x44\x01\x44\x02\x44\x03\x44\x04\x44\x05\x44\x06\x44\x07\x44\x08\x44\x09\x44\x0a\x44\x0b\x44\x0c\x44\x0d\x44\x0e\x44\x0f\x44\x10\x44\x11\x44\x12\x44\x13\x44\x14\x44\x15\x44\x16\x44\x17\x44\x18\x44\x19\x44\x1a\x44\x1b\x44\x1c\x44\x1d\x44\x1e\x44\x1f\x44\x20\x44\x21\x44\x22\x44\x23\x44\x24\x44\x25\x44\x26\x44\x27\x44\x28\x44\x29\x44\x2a\x44\x2b\x44\x2c\x44\x2d\x44\x2e\x44\x2f\x44\x30\x44\x31\x44\x32\x44\x33\x44\x34\x44\x35\x44\x36\x44\x37\x44\x38\x44\x39\x44\x3a\x44\x3b\x44\x3c\x44\x3d\x44\x3e\x44\x3f\x44\x40\x44\x41\x44\x42\x44\x43\x44\x44\x44\x45\x44\x46\x44\x47\x44\x48\x44\x49\x44\x4a\x44\x4b\x44\x4c\x44\x4d\x44\x4e\x44\x4f\x44\x50\x44\x51\x44\x52\x44\x53\x44\x54\x44\x55\x44\x56\x44\x57\x44\x58\x44\x59\x44\x5a\x44\x5b\x44\x5c\x44\x5d\x44\x5e\x44\x5f\x44\x60\x44\x61\x44\x62\x44\x63\x44\x64\x44\x65\x44\x66\x44\x67\x00\x00", /* e500 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x44\x68\x44\x69\x44\x6a\x44\x6b\x44\x6c\x44\x6d\x44\x6e\x44\x6f\x44\x70\x44\x71\x44\x72\x44\x73\x44\x74\x44\x75\x44\x76\x44\x77\x44\x78\x44\x79\x44\x7a\x44\x7b\x44\x7c\x44\x7d\x44\x7e\x44\x7f\x44\x80\x44\x81\x44\x82\x44\x83\x44\x84\x44\x85\x44\x86\x44\x87\x44\x88\x44\x89\x44\x8a\x44\x8b\x44\x8c\x44\x8d\x44\x8e\x44\x8f\x44\x90\x44\x91\x44\x92\x44\x93\x44\x94\x44\x95\x44\x96\x44\x97\x44\x98\x44\x99\x44\x9a\x44\x9b\x44\x9c\x44\x9d\x44\x9e\x44\x9f\x44\xa0\x44\xa1\x44\xa2\x44\xa3\x44\xa4\x44\xa5\x44\xa6", /* e580 */ "\x44\xa7\x44\xa8\x44\xa9\x44\xaa\x44\xab\x44\xac\x44\xad\x44\xae\x44\xaf\x44\xb0\x44\xb1\x44\xb2\x44\xb3\x44\xb4\x44\xb5\x44\xb6\x44\xb7\x44\xb8\x44\xb9\x44\xba\x44\xbb\x44\xbc\x44\xbd\x44\xbe\x44\xbf\x44\xc0\x44\xc1\x44\xc2\x44\xc3\x44\xc4\x44\xc5\x44\xc6\x44\xc7\x44\xc8\x44\xc9\x44\xca\x44\xcb\x44\xcc\x44\xcd\x44\xce\x44\xcf\x44\xd0\x44\xd1\x44\xd2\x44\xd3\x44\xd4\x44\xd5\x44\xd7\x44\xd8\x44\xd9\x44\xda\x44\xdb\x44\xdc\x44\xdd\x44\xde\x44\xdf\x44\xe0\x44\xe1\x44\xe2\x44\xe3\x44\xe4\x44\xe5\x44\xe6\x44\xe7\x44\xe8\x44\xe9\x44\xea\x44\xeb\x44\xec\x44\xed\x44\xee\x44\xef\x44\xf0\x44\xf1\x44\xf2\x44\xf3\x44\xf4\x44\xf5\x44\xf6\x44\xf7\x44\xf8\x44\xf9\x44\xfa\x44\xfb\x44\xfc\x44\xfd\x44\xfe\x44\xff\x45\x00\x45\x01\x45\x02\x45\x03\x45\x04\x45\x05\x45\x06\x45\x07\x45\x08\x45\x09\x45\x0a\x45\x0b\x45\x0c\x45\x0d\x45\x0e\x45\x0f\x45\x10\x45\x11\x45\x12\x45\x13\x45\x14\x45\x15\x45\x16\x45\x17\x45\x18\x45\x19\x45\x1a\x45\x1b\x45\x1c\x45\x1d\x45\x1e\x45\x1f\x45\x20\x45\x21\x45\x22\x45\x23\x45\x24\x45\x25\x45\x26\x00\x00", /* e600 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x45\x27\x45\x28\x45\x29\x45\x2a\x45\x2b\x45\x2c\x45\x2d\x45\x2e\x45\x2f\x45\x30\x45\x31\x45\x32\x45\x33\x45\x34\x45\x35\x45\x36\x45\x37\x45\x38\x45\x39\x45\x3a\x45\x3b\x45\x3c\x45\x3d\x45\x3e\x45\x3f\x45\x40\x45\x41\x45\x42\x45\x43\x45\x44\x45\x45\x45\x46\x45\x47\x45\x48\x45\x49\x45\x4a\x45\x4b\x45\x4c\x45\x4d\x45\x4e\x45\x4f\x45\x50\x45\x51\x45\x52\x45\x53\x45\x54\x45\x55\x45\x56\x45\x57\x45\x58\x45\x59\x45\x5a\x45\x5b\x45\x5c\x45\x5d\x45\x5e\x45\x5f\x45\x60\x45\x61\x45\x62\x45\x63\x45\x64\x45\x65", /* e680 */ "\x45\x66\x45\x67\x45\x68\x45\x69\x45\x6a\x45\x6b\x45\x6c\x45\x6d\x45\x6e\x45\x6f\x45\x70\x45\x71\x45\x72\x45\x73\x45\x74\x45\x75\x45\x76\x45\x77\x45\x78\x45\x79\x45\x7a\x45\x7b\x45\x7c\x45\x7d\x45\x7e\x45\x7f\x45\x80\x45\x81\x45\x82\x45\x83\x45\x84\x45\x85\x45\x86\x45\x87\x45\x88\x45\x89\x45\x8a\x45\x8b\x45\x8c\x45\x8d\x45\x8e\x45\x8f\x45\x90\x45\x91\x45\x92\x45\x93\x45\x94\x45\x95\x45\x96\x45\x97\x45\x98\x45\x99\x45\x9a\x45\x9b\x45\x9c\x45\x9d\x45\x9e\x45\x9f\x45\xa0\x45\xa1\x45\xa2\x45\xa3\x45\xa4\x45\xa5\x45\xa6\x45\xa7\x45\xa8\x45\xa9\x45\xaa\x45\xab\x45\xac\x45\xad\x45\xae\x45\xaf\x45\xb0\x45\xb1\x45\xb2\x45\xb3\x45\xb4\x45\xb5\x45\xb6\x45\xb7\x45\xb8\x45\xb9\x45\xba\x45\xbb\x45\xbc\x45\xbd\x45\xbe\x45\xbf\x45\xc0\x45\xc1\x45\xc2\x45\xc3\x45\xc4\x45\xc5\x45\xc6\x45\xc7\x45\xc8\x45\xc9\x45\xca\x45\xcb\x45\xcc\x45\xcd\x45\xce\x45\xcf\x45\xd0\x45\xd1\x45\xd2\x45\xd3\x45\xd4\x45\xd5\x45\xd6\x45\xd7\x45\xd8\x45\xd9\x45\xda\x45\xdb\x45\xdc\x45\xdd\x45\xde\x45\xdf\x45\xe0\x45\xe1\x45\xe2\x45\xe3\x45\xe4\x00\x00", /* e700 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x45\xe5\x45\xe6\x45\xe7\x45\xe8\x45\xe9\x45\xea\x45\xeb\x45\xec\x45\xed\x45\xee\x45\xef\x45\xf0\x45\xf1\x45\xf2\x45\xf3\x45\xf4\x45\xf5\x45\xf6\x45\xf7\x45\xf8\x45\xf9\x45\xfa\x45\xfb\x45\xfc\x45\xfd\x45\xfe\x45\xff\x46\x00\x46\x01\x46\x02\x46\x03\x46\x04\x46\x05\x46\x06\x46\x07\x46\x08\x46\x09\x46\x0a\x46\x0b\x46\x0c\x46\x0d\x46\x0e\x46\x0f\x46\x10\x46\x11\x46\x12\x46\x13\x46\x14\x46\x15\x46\x16\x46\x17\x46\x18\x46\x19\x46\x1a\x46\x1b\x46\x1c\x46\x1d\x46\x1e\x46\x1f\x46\x20\x46\x21\x46\x22\x46\x23", /* e780 */ "\x46\x24\x46\x25\x46\x26\x46\x27\x46\x28\x46\x29\x46\x2a\x46\x2b\x46\x2c\x46\x2d\x46\x2e\x46\x2f\x46\x30\x46\x31\x46\x32\x46\x33\x46\x34\x46\x35\x46\x36\x46\x37\x46\x38\x46\x39\x46\x3a\x46\x3b\x46\x3c\x46\x3d\x46\x3e\x46\x3f\x46\x40\x46\x41\x46\x42\x46\x43\x46\x44\x46\x45\x46\x46\x46\x47\x46\x48\x46\x49\x46\x4a\x46\x4b\x46\x4d\x46\x4e\x46\x4f\x46\x50\x46\x51\x46\x52\x46\x53\x46\x54\x46\x55\x46\x56\x46\x57\x46\x58\x46\x59\x46\x5a\x46\x5b\x46\x5c\x46\x5d\x46\x5e\x46\x5f\x46\x60\x46\x62\x46\x63\x46\x64\x46\x65\x46\x66\x46\x67\x46\x68\x46\x69\x46\x6a\x46\x6b\x46\x6c\x46\x6d\x46\x6e\x46\x6f\x46\x70\x46\x71\x46\x72\x46\x73\x46\x74\x46\x75\x46\x76\x46\x77\x46\x78\x46\x79\x46\x7a\x46\x7b\x46\x7c\x46\x7d\x46\x7e\x46\x7f\x46\x80\x46\x81\x46\x82\x46\x83\x46\x84\x46\x85\x46\x86\x46\x87\x46\x88\x46\x89\x46\x8a\x46\x8b\x46\x8c\x46\x8d\x46\x8e\x46\x8f\x46\x90\x46\x91\x46\x92\x46\x93\x46\x94\x46\x95\x46\x96\x46\x97\x46\x98\x46\x99\x46\x9a\x46\x9b\x46\x9c\x46\x9d\x46\x9e\x46\x9f\x46\xa0\x46\xa1\x46\xa2\x46\xa3\x46\xa4\x00\x00", /* e800 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x46\xa5\x46\xa6\x46\xa7\x46\xa8\x46\xa9\x46\xaa\x46\xab\x46\xac\x46\xad\x46\xae\x46\xaf\x46\xb0\x46\xb1\x46\xb2\x46\xb3\x46\xb4\x46\xb5\x46\xb6\x46\xb7\x46\xb8\x46\xb9\x46\xba\x46\xbb\x46\xbc\x46\xbd\x46\xbe\x46\xbf\x46\xc0\x46\xc1\x46\xc2\x46\xc3\x46\xc4\x46\xc5\x46\xc6\x46\xc7\x46\xc8\x46\xc9\x46\xca\x46\xcb\x46\xcc\x46\xcd\x46\xce\x46\xcf\x46\xd0\x46\xd1\x46\xd2\x46\xd3\x46\xd4\x46\xd5\x46\xd6\x46\xd7\x46\xd8\x46\xd9\x46\xda\x46\xdb\x46\xdc\x46\xdd\x46\xde\x46\xdf\x46\xe0\x46\xe1\x46\xe2\x46\xe3", /* e880 */ "\x46\xe4\x46\xe5\x46\xe6\x46\xe7\x46\xe8\x46\xe9\x46\xea\x46\xeb\x46\xec\x46\xed\x46\xee\x46\xef\x46\xf0\x46\xf1\x46\xf2\x46\xf3\x46\xf4\x46\xf5\x46\xf6\x46\xf7\x46\xf8\x46\xf9\x46\xfa\x46\xfb\x46\xfc\x46\xfd\x46\xfe\x46\xff\x47\x00\x47\x01\x47\x02\x47\x03\x47\x04\x47\x05\x47\x06\x47\x07\x47\x08\x47\x09\x47\x0a\x47\x0b\x47\x0c\x47\x0d\x47\x0e\x47\x0f\x47\x10\x47\x11\x47\x12\x47\x13\x47\x14\x47\x15\x47\x16\x47\x17\x47\x18\x47\x19\x47\x1a\x47\x1b\x47\x1c\x47\x1d\x47\x1e\x47\x1f\x47\x20\x47\x21\x47\x22\x47\x24\x47\x25\x47\x26\x47\x27\x47\x28\x47\x2a\x47\x2b\x47\x2c\x47\x2d\x47\x2e\x47\x2f\x47\x30\x47\x31\x47\x32\x47\x33\x47\x34\x47\x35\x47\x36\x47\x37\x47\x38\x47\x39\x47\x3a\x47\x3b\x47\x3c\x47\x3d\x47\x3e\x47\x3f\x47\x40\x47\x41\x47\x42\x47\x43\x47\x44\x47\x45\x47\x46\x47\x47\x47\x48\x47\x49\x47\x4a\x47\x4b\x47\x4c\x47\x4d\x47\x4e\x47\x4f\x47\x50\x47\x51\x47\x52\x47\x53\x47\x54\x47\x55\x47\x56\x47\x57\x47\x58\x47\x59\x47\x5a\x47\x5b\x47\x5c\x47\x5d\x47\x5e\x47\x5f\x47\x60\x47\x61\x47\x62\x47\x63\x47\x64\x00\x00", /* e900 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x47\x65\x47\x66\x47\x67\x47\x68\x47\x69\x47\x6a\x47\x6b\x47\x6c\x47\x6d\x47\x6e\x47\x6f\x47\x70\x47\x71\x47\x72\x47\x73\x47\x74\x47\x75\x47\x76\x47\x77\x47\x78\x47\x79\x47\x7a\x47\x7b\x47\x7d\x47\x7e\x47\x7f\x47\x80\x47\x81\x47\x82\x47\x83\x47\x84\x47\x85\x47\x86\x47\x87\x47\x88\x47\x89\x47\x8a\x47\x8b\x47\x8c\x47\x8e\x47\x8f\x47\x90\x47\x91\x47\x92\x47\x93\x47\x94\x47\x95\x47\x96\x47\x97\x47\x98\x47\x99\x47\x9a\x47\x9b\x47\x9c\x47\x9d\x47\x9e\x47\x9f\x47\xa0\x47\xa1\x47\xa2\x47\xa3\x47\xa4\x47\xa5", /* e980 */ "\x47\xa6\x47\xa7\x47\xa8\x47\xa9\x47\xaa\x47\xab\x47\xac\x47\xad\x47\xae\x47\xaf\x47\xb0\x47\xb1\x47\xb2\x47\xb3\x47\xb4\x47\xb5\x47\xb6\x47\xb7\x47\xb8\x47\xb9\x47\xba\x47\xbb\x47\xbc\x47\xbd\x47\xbe\x47\xbf\x47\xc0\x47\xc1\x47\xc2\x47\xc3\x47\xc4\x47\xc5\x47\xc6\x47\xc7\x47\xc8\x47\xc9\x47\xca\x47\xcb\x47\xcc\x47\xcd\x47\xce\x47\xcf\x47\xd0\x47\xd1\x47\xd2\x47\xd3\x47\xd4\x47\xd5\x47\xd6\x47\xd7\x47\xd8\x47\xd9\x47\xda\x47\xdb\x47\xdc\x47\xdd\x47\xde\x47\xdf\x47\xe0\x47\xe1\x47\xe2\x47\xe3\x47\xe4\x47\xe5\x47\xe6\x47\xe7\x47\xe8\x47\xe9\x47\xea\x47\xeb\x47\xec\x47\xed\x47\xee\x47\xef\x47\xf0\x47\xf1\x47\xf2\x47\xf3\x47\xf4\x47\xf5\x47\xf6\x47\xf7\x47\xf8\x47\xf9\x47\xfa\x47\xfb\x47\xfc\x47\xfd\x47\xfe\x47\xff\x48\x00\x48\x01\x48\x02\x48\x03\x48\x04\x48\x05\x48\x06\x48\x07\x48\x08\x48\x09\x48\x0a\x48\x0b\x48\x0c\x48\x0d\x48\x0e\x48\x0f\x48\x10\x48\x11\x48\x12\x48\x13\x48\x14\x48\x15\x48\x16\x48\x17\x48\x18\x48\x19\x48\x1a\x48\x1b\x48\x1c\x48\x1d\x48\x1e\x48\x1f\x48\x20\x48\x21\x48\x22\x48\x23\x48\x24\x00\x00", /* ea00 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x48\x25\x48\x26\x48\x27\x48\x28\x48\x29\x48\x2a\x48\x2b\x48\x2c\x48\x2d\x48\x2e\x48\x2f\x48\x30\x48\x31\x48\x32\x48\x33\x48\x34\x48\x35\x48\x36\x48\x37\x48\x38\x48\x39\x48\x3a\x48\x3b\x48\x3c\x48\x3d\x48\x3e\x48\x3f\x48\x40\x48\x41\x48\x42\x48\x43\x48\x44\x48\x45\x48\x46\x48\x47\x48\x48\x48\x49\x48\x4a\x48\x4b\x48\x4c\x48\x4d\x48\x4e\x48\x4f\x48\x50\x48\x51\x48\x52\x48\x53\x48\x54\x48\x55\x48\x56\x48\x57\x48\x58\x48\x59\x48\x5a\x48\x5b\x48\x5c\x48\x5d\x48\x5e\x48\x5f\x48\x60\x48\x61\x48\x62\x48\x63", /* ea80 */ "\x48\x64\x48\x65\x48\x66\x48\x67\x48\x68\x48\x69\x48\x6a\x48\x6b\x48\x6c\x48\x6d\x48\x6e\x48\x6f\x48\x70\x48\x71\x48\x72\x48\x73\x48\x74\x48\x75\x48\x76\x48\x77\x48\x78\x48\x79\x48\x7a\x48\x7b\x48\x7c\x48\x7d\x48\x7e\x48\x7f\x48\x80\x48\x81\x48\x82\x48\x83\x48\x84\x48\x85\x48\x86\x48\x87\x48\x88\x48\x89\x48\x8a\x48\x8b\x48\x8c\x48\x8d\x48\x8e\x48\x8f\x48\x90\x48\x91\x48\x92\x48\x93\x48\x94\x48\x95\x48\x96\x48\x97\x48\x98\x48\x99\x48\x9a\x48\x9b\x48\x9c\x48\x9d\x48\x9e\x48\x9f\x48\xa0\x48\xa1\x48\xa2\x48\xa3\x48\xa4\x48\xa5\x48\xa6\x48\xa7\x48\xa8\x48\xa9\x48\xaa\x48\xab\x48\xac\x48\xad\x48\xae\x48\xaf\x48\xb0\x48\xb1\x48\xb2\x48\xb3\x48\xb4\x48\xb5\x48\xb6\x48\xb7\x48\xb8\x48\xb9\x48\xba\x48\xbb\x48\xbc\x48\xbd\x48\xbe\x48\xbf\x48\xc0\x48\xc1\x48\xc2\x48\xc3\x48\xc4\x48\xc5\x48\xc6\x48\xc7\x48\xc8\x48\xc9\x48\xca\x48\xcb\x48\xcc\x48\xcd\x48\xce\x48\xcf\x48\xd0\x48\xd1\x48\xd2\x48\xd3\x48\xd4\x48\xd5\x48\xd6\x48\xd7\x48\xd8\x48\xd9\x48\xda\x48\xdb\x48\xdc\x48\xdd\x48\xde\x48\xdf\x48\xe0\x48\xe1\x48\xe2\x00\x00", /* eb00 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x48\xe3\x48\xe4\x48\xe5\x48\xe6\x48\xe7\x48\xe8\x48\xe9\x48\xea\x48\xeb\x48\xec\x48\xed\x48\xee\x48\xef\x48\xf0\x48\xf1\x48\xf2\x48\xf3\x48\xf4\x48\xf5\x48\xf6\x48\xf7\x48\xf8\x48\xf9\x48\xfa\x48\xfb\x48\xfc\x48\xfd\x48\xfe\x48\xff\x49\x00\x49\x01\x49\x02\x49\x03\x49\x04\x49\x05\x49\x06\x49\x07\x49\x08\x49\x09\x49\x0a\x49\x0b\x49\x0c\x49\x0d\x49\x0e\x49\x0f\x49\x10\x49\x11\x49\x12\x49\x13\x49\x14\x49\x15\x49\x16\x49\x17\x49\x18\x49\x19\x49\x1a\x49\x1b\x49\x1c\x49\x1d\x49\x1e\x49\x1f\x49\x20\x49\x21", /* eb80 */ "\x49\x22\x49\x23\x49\x24\x49\x25\x49\x26\x49\x27\x49\x28\x49\x29\x49\x2a\x49\x2b\x49\x2c\x49\x2d\x49\x2e\x49\x2f\x49\x30\x49\x31\x49\x32\x49\x33\x49\x34\x49\x35\x49\x36\x49\x37\x49\x38\x49\x39\x49\x3a\x49\x3b\x49\x3c\x49\x3d\x49\x3e\x49\x3f\x49\x40\x49\x41\x49\x42\x49\x43\x49\x44\x49\x45\x49\x46\x49\x48\x49\x49\x49\x4a\x49\x4b\x49\x4c\x49\x4d\x49\x4e\x49\x4f\x49\x50\x49\x51\x49\x52\x49\x53\x49\x54\x49\x55\x49\x56\x49\x57\x49\x58\x49\x59\x49\x5a\x49\x5b\x49\x5c\x49\x5d\x49\x5e\x49\x5f\x49\x60\x49\x61\x49\x62\x49\x63\x49\x64\x49\x65\x49\x66\x49\x67\x49\x68\x49\x69\x49\x6a\x49\x6b\x49\x6c\x49\x6d\x49\x6e\x49\x6f\x49\x70\x49\x71\x49\x72\x49\x73\x49\x74\x49\x75\x49\x76\x49\x77\x49\x78\x49\x79\x49\x7b\x49\x7c\x49\x7e\x49\x7f\x49\x80\x49\x81\x49\x84\x49\x87\x49\x88\x49\x89\x49\x8a\x49\x8b\x49\x8c\x49\x8d\x49\x8e\x49\x8f\x49\x90\x49\x91\x49\x92\x49\x93\x49\x94\x49\x95\x49\x96\x49\x97\x49\x98\x49\x99\x49\x9a\x49\x9c\x49\x9d\x49\x9e\x49\xa0\x49\xa1\x49\xa2\x49\xa3\x49\xa4\x49\xa5\x49\xa6\x49\xa7\x49\xa8\x49\xa9\x00\x00", /* ec00 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x49\xaa\x49\xab\x49\xac\x49\xad\x49\xae\x49\xaf\x49\xb0\x49\xb1\x49\xb2\x49\xb3\x49\xb4\x49\xb5\x49\xb8\x49\xb9\x49\xba\x49\xbb\x49\xbc\x49\xbd\x49\xbe\x49\xbf\x49\xc0\x49\xc1\x49\xc2\x49\xc3\x49\xc4\x49\xc5\x49\xc6\x49\xc7\x49\xc8\x49\xc9\x49\xca\x49\xcb\x49\xcc\x49\xcd\x49\xce\x49\xcf\x49\xd0\x49\xd1\x49\xd2\x49\xd3\x49\xd4\x49\xd5\x49\xd6\x49\xd7\x49\xd8\x49\xd9\x49\xda\x49\xdb\x49\xdc\x49\xdd\x49\xde\x49\xdf\x49\xe0\x49\xe1\x49\xe2\x49\xe3\x49\xe4\x49\xe5\x49\xe6\x49\xe7\x49\xe8\x49\xe9\x49\xea", /* ec80 */ "\x49\xeb\x49\xec\x49\xed\x49\xee\x49\xef\x49\xf0\x49\xf1\x49\xf2\x49\xf3\x49\xf4\x49\xf5\x49\xf6\x49\xf7\x49\xf8\x49\xf9\x49\xfa\x49\xfb\x49\xfc\x49\xfd\x49\xfe\x49\xff\x4a\x00\x4a\x01\x4a\x02\x4a\x03\x4a\x04\x4a\x05\x4a\x06\x4a\x07\x4a\x08\x4a\x09\x4a\x0a\x4a\x0b\x4a\x0c\x4a\x0d\x4a\x0e\x4a\x0f\x4a\x10\x4a\x11\x4a\x12\x4a\x13\x4a\x14\x4a\x15\x4a\x16\x4a\x17\x4a\x18\x4a\x19\x4a\x1a\x4a\x1b\x4a\x1c\x4a\x1d\x4a\x1e\x4a\x1f\x4a\x20\x4a\x21\x4a\x22\x4a\x23\x4a\x24\x4a\x25\x4a\x26\x4a\x27\x4a\x28\x4a\x29\x4a\x2a\x4a\x2b\x4a\x2c\x4a\x2d\x4a\x2e\x4a\x2f\x4a\x30\x4a\x31\x4a\x32\x4a\x33\x4a\x34\x4a\x35\x4a\x36\x4a\x37\x4a\x38\x4a\x39\x4a\x3a\x4a\x3b\x4a\x3c\x4a\x3d\x4a\x3e\x4a\x3f\x4a\x40\x4a\x41\x4a\x42\x4a\x43\x4a\x44\x4a\x45\x4a\x46\x4a\x47\x4a\x48\x4a\x49\x4a\x4a\x4a\x4b\x4a\x4c\x4a\x4d\x4a\x4e\x4a\x4f\x4a\x50\x4a\x51\x4a\x52\x4a\x53\x4a\x54\x4a\x55\x4a\x56\x4a\x57\x4a\x58\x4a\x59\x4a\x5a\x4a\x5b\x4a\x5c\x4a\x5d\x4a\x5e\x4a\x5f\x4a\x60\x4a\x61\x4a\x62\x4a\x63\x4a\x64\x4a\x65\x4a\x66\x4a\x67\x4a\x68\x4a\x69\x00\x00", /* ed00 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4a\x6a\x4a\x6b\x4a\x6c\x4a\x6d\x4a\x6e\x4a\x6f\x4a\x70\x4a\x71\x4a\x72\x4a\x73\x4a\x74\x4a\x75\x4a\x76\x4a\x77\x4a\x78\x4a\x79\x4a\x7a\x4a\x7b\x4a\x7c\x4a\x7d\x4a\x7e\x4a\x7f\x4a\x80\x4a\x81\x4a\x82\x4a\x83\x4a\x84\x4a\x85\x4a\x86\x4a\x87\x4a\x88\x4a\x89\x4a\x8a\x4a\x8b\x4a\x8c\x4a\x8d\x4a\x8e\x4a\x8f\x4a\x90\x4a\x91\x4a\x92\x4a\x93\x4a\x94\x4a\x95\x4a\x96\x4a\x97\x4a\x98\x4a\x99\x4a\x9a\x4a\x9b\x4a\x9c\x4a\x9d\x4a\x9e\x4a\x9f\x4a\xa0\x4a\xa1\x4a\xa2\x4a\xa3\x4a\xa4\x4a\xa5\x4a\xa6\x4a\xa7\x4a\xa8", /* ed80 */ "\x4a\xa9\x4a\xaa\x4a\xab\x4a\xac\x4a\xad\x4a\xae\x4a\xaf\x4a\xb0\x4a\xb1\x4a\xb2\x4a\xb3\x4a\xb4\x4a\xb5\x4a\xb6\x4a\xb7\x4a\xb8\x4a\xb9\x4a\xba\x4a\xbb\x4a\xbc\x4a\xbd\x4a\xbe\x4a\xbf\x4a\xc0\x4a\xc1\x4a\xc2\x4a\xc3\x4a\xc4\x4a\xc5\x4a\xc6\x4a\xc7\x4a\xc8\x4a\xc9\x4a\xca\x4a\xcb\x4a\xcc\x4a\xcd\x4a\xce\x4a\xcf\x4a\xd0\x4a\xd1\x4a\xd2\x4a\xd3\x4a\xd4\x4a\xd5\x4a\xd6\x4a\xd7\x4a\xd8\x4a\xd9\x4a\xda\x4a\xdb\x4a\xdc\x4a\xdd\x4a\xde\x4a\xdf\x4a\xe0\x4a\xe1\x4a\xe2\x4a\xe3\x4a\xe4\x4a\xe5\x4a\xe6\x4a\xe7\x4a\xe8\x4a\xe9\x4a\xea\x4a\xeb\x4a\xec\x4a\xed\x4a\xee\x4a\xef\x4a\xf0\x4a\xf1\x4a\xf2\x4a\xf3\x4a\xf4\x4a\xf5\x4a\xf6\x4a\xf7\x4a\xf8\x4a\xf9\x4a\xfa\x4a\xfb\x4a\xfc\x4a\xfd\x4a\xfe\x4a\xff\x4b\x00\x4b\x01\x4b\x02\x4b\x03\x4b\x04\x4b\x05\x4b\x06\x4b\x07\x4b\x08\x4b\x09\x4b\x0a\x4b\x0b\x4b\x0c\x4b\x0d\x4b\x0e\x4b\x0f\x4b\x10\x4b\x11\x4b\x12\x4b\x13\x4b\x14\x4b\x15\x4b\x16\x4b\x17\x4b\x18\x4b\x19\x4b\x1a\x4b\x1b\x4b\x1c\x4b\x1d\x4b\x1e\x4b\x1f\x4b\x20\x4b\x21\x4b\x22\x4b\x23\x4b\x24\x4b\x25\x4b\x26\x4b\x27\x00\x00", /* ee00 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4b\x28\x4b\x29\x4b\x2a\x4b\x2b\x4b\x2c\x4b\x2d\x4b\x2e\x4b\x2f\x4b\x30\x4b\x31\x4b\x32\x4b\x33\x4b\x34\x4b\x35\x4b\x36\x4b\x37\x4b\x38\x4b\x39\x4b\x3a\x4b\x3b\x4b\x3c\x4b\x3d\x4b\x3e\x4b\x3f\x4b\x40\x4b\x41\x4b\x42\x4b\x43\x4b\x44\x4b\x45\x4b\x46\x4b\x47\x4b\x48\x4b\x49\x4b\x4a\x4b\x4b\x4b\x4c\x4b\x4d\x4b\x4e\x4b\x4f\x4b\x50\x4b\x51\x4b\x52\x4b\x53\x4b\x54\x4b\x55\x4b\x56\x4b\x57\x4b\x58\x4b\x59\x4b\x5a\x4b\x5b\x4b\x5c\x4b\x5d\x4b\x5e\x4b\x5f\x4b\x60\x4b\x61\x4b\x62\x4b\x63\x4b\x64\x4b\x65\x4b\x66", /* ee80 */ "\x4b\x67\x4b\x68\x4b\x69\x4b\x6a\x4b\x6b\x4b\x6c\x4b\x6d\x4b\x6e\x4b\x6f\x4b\x70\x4b\x71\x4b\x72\x4b\x73\x4b\x74\x4b\x75\x4b\x76\x4b\x77\x4b\x78\x4b\x79\x4b\x7a\x4b\x7b\x4b\x7c\x4b\x7d\x4b\x7e\x4b\x7f\x4b\x80\x4b\x81\x4b\x82\x4b\x83\x4b\x84\x4b\x85\x4b\x86\x4b\x87\x4b\x88\x4b\x89\x4b\x8a\x4b\x8b\x4b\x8c\x4b\x8d\x4b\x8e\x4b\x8f\x4b\x90\x4b\x91\x4b\x92\x4b\x93\x4b\x94\x4b\x95\x4b\x96\x4b\x97\x4b\x98\x4b\x99\x4b\x9a\x4b\x9b\x4b\x9c\x4b\x9d\x4b\x9e\x4b\x9f\x4b\xa0\x4b\xa1\x4b\xa2\x4b\xa3\x4b\xa4\x4b\xa5\x4b\xa6\x4b\xa7\x4b\xa8\x4b\xa9\x4b\xaa\x4b\xab\x4b\xac\x4b\xad\x4b\xae\x4b\xaf\x4b\xb0\x4b\xb1\x4b\xb2\x4b\xb3\x4b\xb4\x4b\xb5\x4b\xb6\x4b\xb7\x4b\xb8\x4b\xb9\x4b\xba\x4b\xbb\x4b\xbc\x4b\xbd\x4b\xbe\x4b\xbf\x4b\xc0\x4b\xc1\x4b\xc2\x4b\xc3\x4b\xc4\x4b\xc5\x4b\xc6\x4b\xc7\x4b\xc8\x4b\xc9\x4b\xca\x4b\xcb\x4b\xcc\x4b\xcd\x4b\xce\x4b\xcf\x4b\xd0\x4b\xd1\x4b\xd2\x4b\xd3\x4b\xd4\x4b\xd5\x4b\xd6\x4b\xd7\x4b\xd8\x4b\xd9\x4b\xda\x4b\xdb\x4b\xdc\x4b\xdd\x4b\xde\x4b\xdf\x4b\xe0\x4b\xe1\x4b\xe2\x4b\xe3\x4b\xe4\x4b\xe5\x00\x00", /* ef00 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4b\xe6\x4b\xe7\x4b\xe8\x4b\xe9\x4b\xea\x4b\xeb\x4b\xec\x4b\xed\x4b\xee\x4b\xef\x4b\xf0\x4b\xf1\x4b\xf2\x4b\xf3\x4b\xf4\x4b\xf5\x4b\xf6\x4b\xf7\x4b\xf8\x4b\xf9\x4b\xfa\x4b\xfb\x4b\xfc\x4b\xfd\x4b\xfe\x4b\xff\x4c\x00\x4c\x01\x4c\x02\x4c\x03\x4c\x04\x4c\x05\x4c\x06\x4c\x07\x4c\x08\x4c\x09\x4c\x0a\x4c\x0b\x4c\x0c\x4c\x0d\x4c\x0e\x4c\x0f\x4c\x10\x4c\x11\x4c\x12\x4c\x13\x4c\x14\x4c\x15\x4c\x16\x4c\x17\x4c\x18\x4c\x19\x4c\x1a\x4c\x1b\x4c\x1c\x4c\x1d\x4c\x1e\x4c\x1f\x4c\x20\x4c\x21\x4c\x22\x4c\x23\x4c\x24", /* ef80 */ "\x4c\x25\x4c\x26\x4c\x27\x4c\x28\x4c\x29\x4c\x2a\x4c\x2b\x4c\x2c\x4c\x2d\x4c\x2e\x4c\x2f\x4c\x30\x4c\x31\x4c\x32\x4c\x33\x4c\x34\x4c\x35\x4c\x36\x4c\x37\x4c\x38\x4c\x39\x4c\x3a\x4c\x3b\x4c\x3c\x4c\x3d\x4c\x3e\x4c\x3f\x4c\x40\x4c\x41\x4c\x42\x4c\x43\x4c\x44\x4c\x45\x4c\x46\x4c\x47\x4c\x48\x4c\x49\x4c\x4a\x4c\x4b\x4c\x4c\x4c\x4d\x4c\x4e\x4c\x4f\x4c\x50\x4c\x51\x4c\x52\x4c\x53\x4c\x54\x4c\x55\x4c\x56\x4c\x57\x4c\x58\x4c\x59\x4c\x5a\x4c\x5b\x4c\x5c\x4c\x5d\x4c\x5e\x4c\x5f\x4c\x60\x4c\x61\x4c\x62\x4c\x63\x4c\x64\x4c\x65\x4c\x66\x4c\x67\x4c\x68\x4c\x69\x4c\x6a\x4c\x6b\x4c\x6c\x4c\x6d\x4c\x6e\x4c\x6f\x4c\x70\x4c\x71\x4c\x72\x4c\x73\x4c\x74\x4c\x75\x4c\x76\x4c\x78\x4c\x79\x4c\x7a\x4c\x7b\x4c\x7c\x4c\x7d\x4c\x7e\x4c\x7f\x4c\x80\x4c\x81\x4c\x82\x4c\x83\x4c\x84\x4c\x85\x4c\x86\x4c\x87\x4c\x88\x4c\x89\x4c\x8a\x4c\x8b\x4c\x8c\x4c\x8d\x4c\x8e\x4c\x8f\x4c\x90\x4c\x91\x4c\x92\x4c\x93\x4c\x94\x4c\x95\x4c\x96\x4c\x97\x4c\x98\x4c\x99\x4c\x9a\x4c\x9b\x4c\x9c\x4c\x9d\x4c\x9e\x4c\xa4\x4c\xa5\x4c\xa6\x4c\xa7\x4c\xa8\x4c\xa9\x00\x00", /* f000 */ NULL, /* f080 */ NULL, /* f100 */ NULL, /* f180 */ NULL, /* f200 */ NULL, /* f280 */ NULL, /* f300 */ NULL, /* f380 */ NULL, /* f400 */ NULL, /* f480 */ NULL, /* f500 */ NULL, /* f580 */ NULL, /* f600 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4c\xaa\x4c\xab\x4c\xac\x4c\xad\x4c\xae\x4c\xaf\x4c\xb0\x4c\xb1\x4c\xb2\x4c\xb3\x4c\xb4\x4c\xb5\x4c\xb6\x4c\xb7\x4c\xb8\x4c\xb9\x4c\xba\x4c\xbb\x4c\xbc\x4c\xbd\x4c\xbe\x4c\xbf\x4c\xc0\x4c\xc1\x4c\xc2\x4c\xc3\x4c\xc4\x4c\xc5\x4c\xc6\x4c\xc7\x4c\xc8\x4c\xc9\x4c\xca\x4c\xcb\x4c\xcc\x4c\xcd\x4c\xce\x4c\xcf\x4c\xd0\x4c\xd1\x4c\xd2\x4c\xd3\x4c\xd4\x4c\xd5\x4c\xd6\x4c\xd7\x4c\xd8\x4c\xd9\x4c\xda\x4c\xdb\x4c\xdc\x4c\xdd\x4c\xde\x4c\xdf\x4c\xe0\x4c\xe1\x4c\xe2\x4c\xe3\x4c\xe4\x4c\xe5\x4c\xe6\x4c\xe7\x4c\xe8", /* f680 */ "\x4c\xe9\x4c\xea\x4c\xeb\x4c\xec\x4c\xed\x4c\xee\x4c\xef\x4c\xf0\x4c\xf1\x4c\xf2\x4c\xf3\x4c\xf4\x4c\xf5\x4c\xf6\x4c\xf7\x4c\xf8\x4c\xf9\x4c\xfa\x4c\xfb\x4c\xfc\x4c\xfd\x4c\xfe\x4c\xff\x4d\x00\x4d\x01\x4d\x02\x4d\x03\x4d\x04\x4d\x05\x4d\x06\x4d\x07\x4d\x08\x4d\x09\x4d\x0a\x4d\x0b\x4d\x0c\x4d\x0d\x4d\x0e\x4d\x0f\x4d\x10\x4d\x11\x4d\x12\x4d\x1a\x4d\x1b\x4d\x1c\x4d\x1d\x4d\x1e\x4d\x1f\x4d\x20\x4d\x21\x4d\x22\x4d\x23\x4d\x24\x4d\x25\x4d\x26\x4d\x27\x4d\x28\x4d\x29\x4d\x2a\x4d\x2b\x4d\x2c\x4d\x2d\x4d\x2e\x4d\x2f\x4d\x30\x4d\x31\x4d\x32\x4d\x33\x4d\x34\x4d\x35\x4d\x36\x4d\x37\x4d\x38\x4d\x39\x4d\x3a\x4d\x3b\x4d\x3c\x4d\x3d\x4d\x3e\x4d\x3f\x4d\x40\x4d\x41\x4d\x42\x4d\x43\x4d\x44\x4d\x45\x4d\x46\x4d\x47\x4d\x48\x4d\x49\x4d\x4a\x4d\x4b\x4d\x4c\x4d\x4d\x4d\x4e\x4d\x4f\x4d\x50\x4d\x51\x4d\x52\x4d\x53\x4d\x54\x4d\x55\x4d\x56\x4d\x57\x4d\x58\x4d\x59\x4d\x5a\x4d\x5b\x4d\x5c\x4d\x5d\x4d\x5e\x4d\x5f\x4d\x60\x4d\x61\x4d\x62\x4d\x63\x4d\x64\x4d\x65\x4d\x66\x4d\x67\x4d\x68\x4d\x69\x4d\x6a\x4d\x6b\x4d\x6c\x4d\x6d\x4d\x6e\x00\x00", /* f700 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4d\x6f\x4d\x70\x4d\x71\x4d\x72\x4d\x73\x4d\x74\x4d\x75\x4d\x76\x4d\x77\x4d\x78\x4d\x79\x4d\x7a\x4d\x7b\x4d\x7c\x4d\x7d\x4d\x7e\x4d\x7f\x4d\x80\x4d\x81\x4d\x82\x4d\x83\x4d\x84\x4d\x85\x4d\x86\x4d\x87\x4d\x88\x4d\x89\x4d\x8a\x4d\x8b\x4d\x8c\x4d\x8d\x4d\x8e\x4d\x8f\x4d\x90\x4d\x91\x4d\x92\x4d\x93\x4d\x94\x4d\x95\x4d\x96\x4d\x97\x4d\x98\x4d\x99\x4d\x9a\x4d\x9b\x4d\x9c\x4d\x9d\x4d\x9e\x4d\x9f\x4d\xa0\x4d\xa1\x4d\xa2\x4d\xa3\x4d\xa4\x4d\xa5\x4d\xa6\x4d\xa7\x4d\xa8\x4d\xa9\x4d\xaa\x4d\xab\x4d\xac\x4d\xad", /* f780 */ "\x4d\xaf\x4d\xb0\x4d\xb1\x4d\xb2\x4d\xb3\x4d\xb4\x4d\xb5\x4d\xb6\x4d\xb7\x4d\xb8\x4d\xb9\x4d\xba\x4d\xbb\x4d\xbc\x4d\xbd\x4d\xbe\x4d\xbf\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* f800 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xfb\x56\xfb\x57\xfb\x58\xfb\x59\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xfb\x7a\xfb\x7b\xfb\x7c\xfb\x7d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xfb\x8e", /* f880 */ "\xfb\x8f\xfb\x90\xfb\x91\xfb\x92\xfb\x93\xfb\x94\xfb\x95\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xfb\xaa\xfb\xab\xfb\xac\xfb\xad\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xfb\xd3\xfb\xd4\xfb\xd5\xfb\xd6\xfb\xd7\xfb\xd8\xfb\xd9\xfb\xda\xfb\xdb\xfb\xdc\xfb\xdd\xfb\xde\xfb\xdf\xfb\xe0\xfb\xe1\xfb\xe2\xfb\xe3\xfb\xe4\xfb\xe5\xfb\xe6\xfb\xe7\xfb\xe8\xfb\xe9\xfb\xea\xfb\xeb\xfb\xec\xfb\xed\xfb\xee\xfb\xef\xfb\xf0\xfb\xf1\xfb\xf2\xfb\xf3\xfb\xf4\xfb\xf5\xfb\xf6\xfb\xf7\xfb\xf8\xfb\xf9\xfb\xfa\xfb\xfb\xfb\xfc\xfb\xfd\xfb\xfe\xfb\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* f900 */ NULL, /* f980 */ NULL, /* fa00 */ NULL, /* fa80 */ NULL, /* fb00 */ NULL, /* fb80 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xfe\x89\xfe\x8a\xfe\x8b\xfe\x8c\xfe\x8d\xfe\x8e\xfe\x8f\xfe\x90\xfe\x91\xfe\x92\x00\x00\x00\x00\xfe\x95\xfe\x96\xfe\x97\xfe\x98\x00\x00\x00\x00\x00\x00\x00\x00\xfe\x9d\xfe\x9e\xfe\x9f\xfe\xa0\xfe\xa1\xfe\xa2\xfe\xa3\xfe\xa4\xfe\xa5\xfe\xa6\xfe\xa7\xfe\xa8\xfe\xa9\xfe\xaa\x00\x00\x00\x00\xfe\xad\xfe\xae\xfe\xaf\xfe\xb0\xfe\xb1\xfe\xb2\xfe\xb3\xfe\xb4\xfe\xb5\xfe\xb6\xfe\xb7\x00\x00", /* fc00 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xfe\xb8\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xfe\xc9\xfe\xca\xfe\xcb\xfe\xcc\xfe\xcd\xfe\xce\xfe\xcf\xfe\xd0\xfe\xd1\xfe\xd2\xfe\xd3\xfe\xd4\xfe\xd5\xfe\xd6\xfe\xd7\xfe\xd8\xfe\xd9\xfe\xda\xfe\xdb\xfe\xdc\xfe\xdd\xfe\xde\xfe\xdf\xfe\xe0\xfe\xe1\xfe\xe2\xfe\xe3\xfe\xe4\xfe\xe5\xfe\xe6\xfe\xe7\xfe\xe8\xfe\xe9\xfe\xea\xfe\xeb\xfe\xec\xfe\xed\xfe\xee\xfe\xef\xfe\xf0\xfe\xf1\xfe\xf2\xfe\xf3\xfe\xf4\x00\x00\x00\x00", /* fc80 */ "\x00\x00\x00\x00\x00\x00\x00\x00\xfe\xfb\xfe\xfc\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe7\x8d\xe7\x8e\xe7\x8f\xe7\x90\xe7\x91\xe7\x92\xe7\x93\xe7\x94\xe7\x95\xe7\x96\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* fd00 */ NULL, /* fd80 */ NULL, /* fe00 */ NULL, /* fe80 */ NULL, /* ff00 */ NULL, /* ff80 */ NULL } }, { NULL } }; /* Code page aliases. */ typedef struct { char *alias; char *canon; } cpalias_t; cpalias_t cpaliases16[] = { { "chinese-gb18030", "cp1388" }, { "japanese-kana", "cp930" }, { "japanese-latin", "cp930" }, /* 930 and 939 DBCS are the same */ { "simplified-chinese", "cp935" }, { "traditional-chinese", "cp937" }, { "cp939", "cp930" }, { NULL, NULL } }; static uni16_t *cur_uni16 = NULL; /* * Translate a single DBCS EBCDIC character to Unicode. * * If EUO_BLANK_UNDEF is set, undisplayable characters are returned as * wide spaces (U+3000); otherwise they are returned as 0. */ ucs4_t ebcdic_dbcs_to_unicode(ebc_t c, unsigned flags) { int row, col; int ix; if (cur_uni16 == NULL || c < 0x100) return (flags & EUO_BLANK_UNDEF)? 0x3000: 0; if (c == 0x4040) return 0x3000; row = (c >> 7) & 0x1ff; if (cur_uni16->ebc2u[row] == NULL) return (flags & EUO_BLANK_UNDEF)? 0x3000: 0; col = (c & 0x7f) * 2; ix = ((cur_uni16->ebc2u[row][col] & 0xff) << 8) | (cur_uni16->ebc2u[row][col + 1] & 0xff); if (ix) return ix; else return (flags & EUO_BLANK_UNDEF)? 0x3000: 0; } /* * Map a UCS-4 character to a DBCS EBCDIC character. * Returns 0 for failure, nonzero for success. */ ebc_t unicode_to_ebcdic_dbcs(ucs4_t u) { int row, col; int ix; if (cur_uni16 == NULL || !u) return 0; if (u == 0x3000) return 0x4040; row = (u >> 7) & 0x1ff; if (cur_uni16->u2ebc[row] == NULL) return 0; col = (u & 0x7f) * 2; ix = ((cur_uni16->u2ebc[row][col] & 0xff) << 8) | (cur_uni16->u2ebc[row][col + 1] & 0xff); return ix; } /* * Set the EBCDIC-to-Unicode DBCS translation table. * Returns true for success, false for failure. */ bool set_uni_dbcs(const char *cpname, const char **codepage) { int i; const char *realname = cpname; bool rc = false; /* * Check for an all-numeric name. There are no names or aliases that are * just numbers, so adding a 'cp' to the front of an all-numeric name will * not cause any misidentification. */ if (is_all_digits(realname)) { realname = lazyaf("cp%s", realname); } /* Search for an alias. */ for (i = 0; cpaliases16[i].alias != NULL; i++) { if (!strcasecmp(realname, cpaliases16[i].alias)) { realname = cpaliases16[i].canon; break; } } /* Search for a match. */ for (i = 0; uni16[i].name != NULL; i++) { if (!strcasecmp(realname, uni16[i].name)) { cur_uni16 = &uni16[i]; *codepage = uni16[i].codepage; rc = true; break; } } /* * If this fails (which we sometimes do on purpose), forget any * old setting. */ if (!rc) { cur_uni16 = NULL; } return rc; } suite3270-4.1/Common/utf8.c000066400000000000000000000170471413735575200153320ustar00rootroot00000000000000/* * Copyright (c) 2007-2009, 2013, 2015, 2019 Paul Mattes. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the names of Paul Mattes nor the names of his contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO * EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * utf8.c * 3270 Terminal Emulator * UTF-8 conversions */ #include "globals.h" #include "utf8.h" char *locale_codeset = NULL; bool is_utf8 = false; #if defined(_WIN32) /*[*/ # define _STR_HELPER(s) #s # define CPNAME(x) "CP" _STR_HELPER(x) #endif /*]*/ /* * Save the codeset from the locale, and set globals based on known values. */ void set_codeset(char *codeset_name, bool force_utf8) { /* * s3270 and ws3270 have a '-utf8' option and a utf8 resource to force * UTF-8 mode. tcl3270 always forces UTF-8 mode, because that's what the * TCL library uses. */ if (force_utf8) { is_utf8 = true; /* Force the name. */ codeset_name = "UTF-8"; } /* * We're in UTF-8 mode if the codeset looks like 'UTF8', or on Windows, * if it is codepage 65001. */ is_utf8 |= (!strcasecmp(codeset_name, "utf-8") || !strcasecmp(codeset_name, "utf8") || !strcasecmp(codeset_name, "utf_8") #if defined(_WIN32) /*[*/ || !strcasecmp(codeset_name, CPNAME(CP_UTF8)) #endif /*]*/ ); #if defined(_WIN32) /*[*/ if (is_utf8) { /* Force the name, in case they specified it numerically. */ codeset_name = "UTF-8"; } #endif /*]*/ Replace(locale_codeset, NewString(codeset_name)); } /* * Return the local codeset. */ const char * get_codeset(void) { return locale_codeset; } /* * Convert from UCS-4 to UTF-8. * Returns: * >0: length of converted character * -1: invalid UCS-4 */ int unicode_to_utf8(ucs4_t ucs4, char *utf8) { if (ucs4 & 0x80000000) { return -1; } if (ucs4 <= 0x0000007f) { utf8[0] = ucs4 & 0x7f; /* 7 bits */ return 1; } else if (ucs4 <= 0x000007ff) { utf8[0] = 0xc0 | ((ucs4 >> 6) & 0x1f); /* upper 5 bits */ utf8[1] = 0x80 | (ucs4 & 0x3f); /* lower 6 bits */ return 2; } else if (ucs4 <= 0x0000ffff) { utf8[0] = 0xe0 | ((ucs4 >> 12) & 0x0f); /* upper 4 bits */ utf8[1] = 0x80 | ((ucs4 >> 6) & 0x3f); /* next 6 bits */ utf8[2] = 0x80 | (ucs4 & 0x3f); /* last 6 bits */ return 3; } else if (ucs4 <= 0x001fffff) { utf8[0] = 0xf0 | ((ucs4 >> 18) & 0x07); /* upper 3 bits */ utf8[1] = 0x80 | ((ucs4 >> 12) & 0x3f); /* next 6 bits */ utf8[2] = 0x80 | ((ucs4 >> 6) & 0x3f); /* next 6 bits */ utf8[3] = 0x80 | (ucs4 & 0x3f); /* last 6 bits */ return 4; } else if (ucs4 <= 0x03ffffff) { utf8[0] = 0xf8 | ((ucs4 >> 24) & 0x03); /* upper 2 bits */ utf8[1] = 0x80 | ((ucs4 >> 18) & 0x3f); /* next 6 bits */ utf8[2] = 0x80 | ((ucs4 >> 12) & 0x3f); /* next 6 bits */ utf8[3] = 0x80 | ((ucs4 >> 6) & 0x3f); /* next 6 bits */ utf8[4] = 0x80 | (ucs4 & 0x3f); /* last 6 bits */ return 5; } else { utf8[0] = 0xfc | ((ucs4 >> 30) & 0x01); /* upper 1 bit */ utf8[1] = 0x80 | ((ucs4 >> 24) & 0x3f); /* next 6 bits */ utf8[2] = 0x80 | ((ucs4 >> 18) & 0x3f); /* next 6 bits */ utf8[3] = 0x80 | ((ucs4 >> 12) & 0x3f); /* next 6 bits */ utf8[4] = 0x80 | ((ucs4 >> 6) & 0x3f); /* next 6 bits */ utf8[5] = 0x80 | (ucs4 & 0x3f); /* last 6 bits */ return 6; } } /* * Convert at most 'len' bytes from a UTF-8 string to one UCS-4 character. * Returns: * >0: Number of characters consumed. * 0: Incomplete sequence. * -1: Invalid sequence. * -2: Illegal (too-long) encoding. * -3: Invalid lead byte. * * An invalid sequence can be either improperly composed, or using the wrong * encoding length (often used to get past spam filters and such). */ int utf8_to_unicode(const char *utf8, int len, ucs4_t *ucs4) { /* No input is by definition incomplete. */ if (!len) { return 0; } /* See if it's ASCII-7. */ if ((utf8[0] & 0xff) < 0x80) { *ucs4 = utf8[0] & 0x7f; return 1; } /* Now check for specific UTF-8 leading bytes. */ if ((utf8[0] & 0xe0) == 0xc0) { /* 110xxxxx 10xxxxxx * 0x00000080-0x000007ff */ if (len < 2) { return 0; } if ((utf8[1] & 0xc0) != 0x80) { return -1; } *ucs4 = ((utf8[0] << 6) & 0x7c0) | (utf8[1] & 0x03f); if (*ucs4 < 0x00000080) { return -1; } return 2; } if ((utf8[0] & 0xf0) == 0xe0) { /* 1110xxxx 10xxxxxx 10xxxxxx * 0x00000800-0x0000ffff */ if (len < 3) { return 0; } if (((utf8[1] & 0xc0) != 0x80) || ((utf8[2] & 0xc0) != 0x80)) { return -1; } *ucs4 = ((utf8[0] << 12) & 0xf000) | ((utf8[1] << 6) & 0x0fc0) | ((utf8[2]) & 0x003f); if (*ucs4 < 0x00000800) { return -2; } return 3; } if ((utf8[0] & 0xf8) == 0xf0) { /* 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx * 0x00010000-0x001fffff */ if (len < 4) { return 0; } if (((utf8[1] & 0xc0) != 0x80) || ((utf8[2] & 0xc0) != 0x80) || ((utf8[3] & 0xc0) != 0x80)) { return -1; } *ucs4 = ((utf8[0] << 18) & 0x1c0000) | ((utf8[1] << 12) & 0x03f000) | ((utf8[2] << 6) & 0x000fc0) | ((utf8[3]) & 0x00003f); if (*ucs4 < 0x00010000) { return -2; } return 4; } if ((utf8[0] & 0xfc) == 0xf8) { /* 111110xx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx * 0x00200000-0x03ffffff */ if (len < 5) { return 0; } if (((utf8[1] & 0xc0) != 0x80) || ((utf8[2] & 0xc0) != 0x80) || ((utf8[3] & 0xc0) != 0x80) || ((utf8[4] & 0xc0) != 0x80)) { return -1; } *ucs4 = ((utf8[0] << 24) & 0x3000000) | ((utf8[1] << 18) & 0x0fc0000) | ((utf8[2] << 12) & 0x003f000) | ((utf8[3] << 6) & 0x0000fc0) | ((utf8[4]) & 0x000003f); if (*ucs4 < 0x00200000) { return -2; } return 5; } if ((utf8[0] & 0xfe) == 0xfc) { /* 1111110x 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx * 0x04000000-0x7fffffff */ if (len < 6) { return 0; } if (((utf8[1] & 0xc0) != 0x80) || ((utf8[2] & 0xc0) != 0x80) || ((utf8[3] & 0xc0) != 0x80) || ((utf8[4] & 0xc0) != 0x80) || ((utf8[5] & 0xc0) != 0x80)) { return -1; } *ucs4 = ((utf8[0] << 30) & 0x40000000) | ((utf8[1] << 24) & 0x3f000000) | ((utf8[2] << 18) & 0x00fc0000) | ((utf8[3] << 12) & 0x0003f000) | ((utf8[4] << 6) & 0x00000fc0) | ((utf8[5]) & 0x0000003f); if (*ucs4 < 0x04000000) { return -2; } return 6; } return -3; } suite3270-4.1/Common/util.c000066400000000000000000000473141413735575200154210ustar00rootroot00000000000000/* * Copyright (c) 1993-2021 Paul Mattes. * Copyright (c) 1990, Jeff Sparkes. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the names of Paul Mattes, Jeff Sparkes nor the names of their * contributors may be used to endorse or promote products derived from * this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES AND JEFF SPARKES "AS IS" AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL PAUL MATTES OR JEFF SPARKES BE LIABLE FOR * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH * DAMAGE. */ /* * util.c * Utility functions for x3270/c3270/s3270/tcl3270 */ #include "globals.h" #if !defined(_WIN32) /*[*/ # include #endif /*]*/ #include #include #include "boolstr.h" #include "resources.h" #include "codepage.h" #include "fallbacks.h" #include "lazya.h" #include "popups.h" #include "product.h" #include "trace.h" #include "unicodec.h" #include "varbuf.h" #include "utils.h" #define my_isspace(c) isspace((unsigned char)c) static struct dresource { struct dresource *next; const char *name; char *value; } *drdb = NULL, **drdb_next = &drdb; /** * printf-like interface to Warning(). * Displays a warning message, given a printf format. * * @param[in] fmt printf format */ void xs_warning(const char *fmt, ...) { va_list args; char *r; va_start(args, fmt); r = xs_vbuffer(fmt, args); va_end(args); Warning(r); Free(r); } /** * printf-like interface to Error(). * Displays an error message, and exits, given a printf format. * * @param[in] fmt printf format */ void xs_error(const char *fmt, ...) { va_list args; char *r; va_start(args, fmt); r = xs_vbuffer(fmt, args); va_end(args); Error(r); Free(r); } /** * Expand control characters in a string. * * @param[in] s String to format * @param[in] quoted If true, quote the string. * * @returns Expanded string */ static char * catv_common(const char *s, bool quoted) { char c; varbuf_t r; vb_init(&r); if (quoted) { vb_appends(&r, "\""); } while ((c = *s++)) { unsigned char uc = c; /* Expand this character. */ switch (uc) { case '\n': vb_appends(&r, "\\n"); break; case '\t': vb_appends(&r, "\\t"); break; case '\b': vb_appends(&r, "\\b"); break; case '"': if (quoted) { vb_appends(&r, "\\\""); break; } /* else fall through */ default: if (uc < ' ' || uc == 0x7f) { vb_appendf(&r, "\\%03o", uc); } else { vb_append(&r, &c, 1); } break; } } if (quoted) { vb_appends(&r, "\""); } return lazya(vb_consume(&r)); } /** * Expand control characters in a string. * * @param[in] s String to format * * @returns Expanded string */ char * scatv(const char *s) { return catv_common(s, false); } /** * Expand control characters in a string, quoting the result. * * @param[in] s String to format * * @returns Expanded string */ char * qscatv(const char *s) { return catv_common(s, true); } /* * Definition resource splitter, for resources of the repeating form: * left: right\n * * Can be called iteratively to parse a list. * Returns 1 for success, 0 for EOF, -1 for error. * * Note: Modifies the input string. */ int split_dresource(char **st, char **left, char **right) { char *s = *st; char *t; bool quote; /* Skip leading white space. */ while (my_isspace(*s)) { s++; } /* If nothing left, EOF. */ if (!*s) { return 0; } /* There must be a left-hand side. */ if (*s == ':') { return -1; } /* Scan until an unquoted colon is found. */ *left = s; for (; *s && *s != ':' && *s != '\n'; s++) { if (*s == '\\' && *(s+1) == ':') { s++; } } if (*s != ':') { return -1; } /* Stip white space before the colon. */ for (t = s-1; my_isspace(*t); t--) { *t = '\0'; } /* Terminate the left-hand side. */ *(s++) = '\0'; /* Skip white space after the colon. */ while (*s != '\n' && my_isspace(*s)) { s++; } /* There must be a right-hand side. */ if (!*s || *s == '\n') { return -1; } /* Scan until an unquoted newline is found. */ *right = s; quote = false; for (; *s; s++) { if (*s == '\\' && *(s+1) == '"') { s++; } else if (*s == '"') { quote = !quote; } else if (!quote && *s == '\n') { break; } } /* Strip white space before the newline. */ if (*s) { t = s; *st = s+1; } else { t = s-1; *st = s; } while (my_isspace(*t)) { *t-- = '\0'; } /* Done. */ return 1; } /* * Split a DBCS resource into its parts. * Returns the number of parts found: * -1 error (empty sub-field) * 0 nothing found * 1 one and just one thing found * 2 two things found * 3 more than two things found */ int split_dbcs_resource(const char *value, char sep, char **part1, char **part2) { int n_parts = 0; const char *s = value; const char *f_start = NULL; /* start of sub-field */ const char *f_end = NULL; /* end of sub-field */ char c; char **rp; *part1 = NULL; *part2 = NULL; for( ; ; ) { c = *s; if (c == sep || c == '\0') { if (f_start == NULL) { return -1; } if (f_end == NULL) { f_end = s; } if (f_end == f_start) { if (c == sep) { if (*part1) { Free(*part1); *part1 = NULL; } if (*part2) { Free(*part2); *part2 = NULL; } return -1; } else { return n_parts; } } switch (n_parts) { case 0: rp = part1; break; case 1: rp = part2; break; default: return 3; } *rp = Malloc(f_end - f_start + 1); strncpy(*rp, f_start, f_end - f_start); (*rp)[f_end - f_start] = '\0'; f_end = NULL; f_start = NULL; n_parts++; if (c == '\0') { return n_parts; } } else if (isspace((unsigned char)c)) { if (f_end == NULL) { f_end = s; } } else { if (f_start == NULL) { f_start = s; } f_end = NULL; } s++; } } /* * List resource splitter, for lists of elements speparated by newlines. * * Can be called iteratively. * Returns 1 for success, 0 for EOF, -1 for error. */ int split_lresource(char **st, char **value) { char *s = *st; char *t; bool quote; /* Skip leading white space. */ while (my_isspace(*s)) { s++; } /* If nothing left, EOF. */ if (!*s) { return 0; } /* Save starting point. */ *value = s; /* Scan until an unquoted newline is found. */ quote = false; for (; *s; s++) { if (*s == '\\' && *(s+1) == '"') { s++; } else if (*s == '"') { quote = !quote; } else if (!quote && *s == '\n') { break; } } /* Strip white space before the newline. */ if (*s) { t = s; *st = s+1; } else { t = s-1; *st = s; } while (my_isspace(*t)) { *t-- = '\0'; } /* Done. */ return 1; } const char * get_message(const char *key) { char *r; if ((r = get_resource(lazyaf("%s.%s", ResMessage, key))) != NULL) { return r; } else { return lazyaf("[missing \"%s\" message]", key); } } static char * ex_getenv(const char *name, unsigned long flags, int *up) { if (!strcasecmp(name, "TIMESTAMP")) { /* YYYYMMDDHHMMSSUUUUUU */ struct timeval tv; time_t t; /* on Windows, timeval.tv_sec is a long */ struct tm *tm; if (gettimeofday(&tv, NULL) < 0) { return NewString("?"); } t = tv.tv_sec; tm = localtime(&t); return xs_buffer("%04u%02u%02u%02u%02u%02u%06u", tm->tm_year + 1900, tm->tm_mon + 1, tm->tm_mday, tm->tm_hour, tm->tm_min, tm->tm_sec, (unsigned)tv.tv_usec); } else if (!strcasecmp(name, "UNIQUE")) { ++*up; if (*up == 0) { return xs_buffer("%u", (unsigned)getpid()); } else { return xs_buffer("%u-%u", (unsigned)getpid(), *up); } } else { return getenv(name); } } /* Variable and tilde substitution functions. */ static char * var_subst(const char *s, unsigned long flags) { const char *t; enum { VS_BASE, VS_QUOTE, VS_DOLLAR, VS_BRACE, VS_VN, VS_VNB, VS_EOF } state; char c; size_t o_len; char *ob; char *o; const char *vn_start; int u = -1; # define LBR '{' # define RBR '}' if (strchr(s, '$') == NULL) { return NewString(s); } for (;;) { t = s; state = VS_BASE; vn_start = NULL; o_len = strlen(t) + 1; ob = Malloc(o_len); o = ob; while (state != VS_EOF) { c = *t; switch (state) { case VS_BASE: if (c == '\\') { state = VS_QUOTE; } else if (c == '$') { state = VS_DOLLAR; } else { *o++ = c; } break; case VS_QUOTE: if (c == '$') { *o++ = c; o_len--; } else { *o++ = '\\'; *o++ = c; } state = VS_BASE; break; case VS_DOLLAR: if (c == LBR) { state = VS_BRACE; } else if (isalpha((unsigned char)c) || c == '_') { vn_start = t; state = VS_VN; } else { *o++ = '$'; *o++ = c; state = VS_BASE; } break; case VS_BRACE: if (isalpha((unsigned char)c) || c == '_') { vn_start = t; state = VS_VNB; } else { *o++ = '$'; *o++ = LBR; *o++ = c; state = VS_BASE; } break; case VS_VN: case VS_VNB: if (!(isalnum((unsigned char)c) || c == '_')) { size_t vn_len; char *vn; char *vv; vn_len = t - vn_start; if (state == VS_VNB && c != RBR) { *o++ = '$'; *o++ = LBR; strncpy(o, vn_start, vn_len); o += vn_len; state = VS_BASE; continue; /* rescan */ } vn = Malloc(vn_len + 1); strncpy(vn, vn_start, vn_len); vn[vn_len] = '\0'; if ((vv = ex_getenv(vn, flags, &u))) { *o = '\0'; o_len = o_len - 1 /* '$' */ - (state == VS_VNB) /* { */ - vn_len /* name */ - (state == VS_VNB) /* } */ + strlen(vv); ob = Realloc(ob, o_len); o = strchr(ob, '\0'); strcpy(o, vv); o += strlen(vv); } Free(vn); if (state == VS_VNB) { state = VS_BASE; break; } else { /* Rescan this character */ state = VS_BASE; continue; } } break; case VS_EOF: break; } t++; if (c == '\0') { state = VS_EOF; } } /* * Check for $UNIQUE. * * vr_subst() will increment u if $UNIQUE was used. If it has * been incremented, then try creating the resulting file. If * the open() call fails with EEXIST, then re-run this function * with the new value of u, and try this again with the next * name. * * Keep trying until open() succeeds, or fails with something * other than EEXIST. */ if (u != -1) { int fd; fd = open(ob, O_WRONLY | O_EXCL | O_CREAT, 0600); if (fd < 0) { if (errno == EEXIST) { /* Try again. */ Free(ob); continue; } } else { close(fd); } break; } else { break; } } return ob; } #if !defined(_WIN32) /*[*/ /* * Do tilde (home directory) substitution on a string. Returns a malloc'd * result. */ static char * tilde_subst(const char *s) { char *slash; const char *name; const char *rest; struct passwd *p; char *r; char *mname = NULL; /* Does it start with a "~"? */ if (*s != '~') { return NewString(s); } /* Terminate with "/". */ slash = strchr(s, '/'); if (slash) { int len = slash - s; mname = Malloc(len + 1); strncpy(mname, s, len); mname[len] = '\0'; name = mname; rest = slash; } else { name = s; rest = strchr(name, '\0'); } /* Look it up. */ if (!strcmp(name, "~")) { /* this user */ p = getpwuid(getuid()); } else { /* somebody else */ p = getpwnam(name + 1); } /* Free any temporary copy. */ Free(mname); /* Substitute and return. */ if (p == NULL) { r = NewString(s); } else { r = Malloc(strlen(p->pw_dir) + strlen(rest) + 1); strcpy(r, p->pw_dir); strcat(r, rest); } return r; } #else /*][*/ static char * tilde_subst(const char *s) { char *t; if (*s != '~' || (t = getenv("HOMEPATH")) == NULL) { return NewString(s); } switch (*(s + 1)) { case '\0': return NewString(t); case '/': case '\\': return xs_buffer("%s%s", t, s + 1); default: return NewString(s); } } #endif /*]*/ char * do_subst(const char *s, unsigned flags) { if (flags == DS_NONE) { return NewString(s); } if (flags & DS_VARS) { char *t; t = var_subst(s, flags); if (flags & DS_TILDE) { char *u; u = tilde_subst(t); Free(t); return u; } return t; } return tilde_subst(s); } /* * ctl_see * Expands a character in the manner of "cat -v". */ char * ctl_see(int c) { static char buf[64]; char *p = buf; c &= 0xff; if ((c & 0x80) && (c <= 0xa0)) { *p++ = 'M'; *p++ = '-'; c &= 0x7f; } if (c >= ' ' && c != 0x7f) { *p++ = c; } else { *p++ = '^'; if (c == 0x7f) { *p++ = '?'; } else { *p++ = c + '@'; } } *p = '\0'; return buf; } /** * Add a resource value. * * @param[in] name Resource name. * @param[in] value Resource value. */ void add_resource(const char *name, const char *value) { struct dresource *d; for (d = drdb; d != NULL; d = d->next) { if (!strcmp(d->name, name)) { Replace(d->value, NewString(value)); return; } } d = Malloc(sizeof(struct dresource)); d->next = NULL; d->name = name; d->value = NewString(value); *drdb_next = d; drdb_next = &d->next; } /** * Get a string-valued resource. * * @param[in] name Resource name. * * @returns Resource value. */ char * get_resource(const char *name) { struct dresource *d; int i; for (d = drdb; d != NULL; d = d->next) { if (!strcmp(d->name, name)) { return d->value; } } for (i = 0; fallbacks[i] != NULL; i++) { if (!strncmp(fallbacks[i], name, strlen(name)) && *(fallbacks[i] + strlen(name)) == ':') { return fallbacks[i] + strlen(name) + 2; } } return get_underlying_resource(name); } /* A version of get_resource that accepts sprintf arguments. */ char * get_fresource(const char *fmt, ...) { va_list args; char *name; char *r; va_start(args, fmt); name = xs_vbuffer(fmt, args); va_end(args); r = get_resource(name); Free(name); return r; } /** * Get an integer-valued resource. * * @param[in] name Resource name * * @returns Resource value */ int get_resource_int(const char *name) { char *s = get_resource(name); return s? atoi(s): 0; } /** * Get a Boolean-valued resource. * * @param[in] name Resource name * * @returns Resource value */ bool get_resource_bool(const char *name) { char *s = get_resource(name); bool b; if (s == NULL) { return false; } if (boolstr(s, &b) != NULL) { return false; } return b; } /* * Whitespace stripper. */ char * strip_whitespace(const char *s) { char *t = NewString(s); while (*t && my_isspace(*t)) { t++; } if (*t) { char *u = t + strlen(t) - 1; while (my_isspace(*u)) { *u-- = '\0'; } } return t; } /* * Hierarchy (a>b>c) splitter. */ bool split_hier(char *label, char **base, char ***parents) { int n_parents = 0; char *gt; char *lp; label = NewString(label); for (lp = label; (gt = strchr(lp, '>')) != NULL; lp = gt + 1) { if (gt == lp) { return false; } n_parents++; } if (!*lp) { return false; } if (n_parents) { *parents = (char **)Calloc(n_parents + 1, sizeof(char *)); for (n_parents = 0, lp = label; (gt = strchr(lp, '>')) != NULL; lp = gt + 1) { (*parents)[n_parents++] = lp; *gt = '\0'; } *base = lp; } else { (*parents) = NULL; (*base) = label; } return true; } #if defined(_MSC_VER) /*[*/ #define xstr(s) str(s) #define str(s) #s #endif /*]*/ /* Return configuration options. */ const char * build_options(void) { const char *p = product_specific_build_options(); if (p == NULL) { p = ""; } return lazyaf("%s%s", #if defined(X3270_LOCAL_PROCESS) /*[*/ "--enable-local-process" #else /*][*/ "--disable-local-process" #endif /*]*/ , p, using_iconv()? " --with-iconv": "", #if defined(_MSC_VER) /*[*/ " via MSVC " xstr(_MSC_VER) #endif /*]*/ #if defined(__GNUC__) /*[*/ " via gcc " __VERSION__ #endif /*]*/ #if defined(__LP64__) || defined(__LLP64__) /*[*/ " 64-bit" #else /*][*/ " 32-bit" #endif /*]*/ ); } void dump_version(void) { fprintf(stderr, "%s\nBuild options: %s\n", build, build_options()); codepage_list(); fprintf(stderr, "\n" "Copyright 1989-%s, Paul Mattes, GTRC and others.\n" "See the source code or documentation for licensing details.\n" "Distributed WITHOUT ANY WARRANTY; without even the implied warranty of\n" "MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n", cyear); fflush(stderr); exit(0); } /* Scale a number for display. */ const char * display_scale(double d) { if (d >= 1000000.0) { return lazyaf("%.3g M", d / 1000000.0); } else if (d >= 1000.0) { return lazyaf("%.3g K", d / 1000.0); } else { return lazyaf("%.3g ", d); } } /* Add an element to a dynamically-allocated array. */ void array_add(const char ***s, int ix, const char *v) { *s = Realloc((void *)*s, (ix + 1) * sizeof(const char *)); (*s)[ix] = v; } /* Clean the terminal name. */ char * clean_termname(const char *tn) { const char *s = tn; size_t sl; char *ret; if (tn == NULL) { return (char *)tn; } while (*s && isspace((unsigned char)*s)) { s++; } if (!*s) { return NULL; } sl = strlen(s); ret = NewString(s); while (sl && isspace((unsigned char)ret[sl - 1])) { ret[--sl] = 0; } return ret; } #if defined(HAVE_START) /*[*/ void start_help(void) { /* Figure out the version. */ const char *s = build_rpq_version; char *url; char *command = NULL; size_t pnl; pnl = strlen(programname); #if defined(_WIN32) /*[*/ if (pnl > 4 && !strcasecmp(programname + pnl - 4, ".exe")) { pnl -= 4; } #endif /*]*/ while (*s != '\0' && (*s == '.' || isdigit((unsigned char)*s))) { s++; } url = xs_buffer("http://x3270.bgp.nu/%.*s-help/%.*s/", (int)pnl, programname, (int)(s - build_rpq_version), build_rpq_version); /* Get appropriate help. */ #if defined(_WIN32) /*[*/ command = xs_buffer("start \"%.*s help\" \"%s\"", (int)pnl, programname, url); #elif defined(linux) || defined(__linux__) /*[*/ command = xs_buffer("xdg-open %s", url); #elif defined(__APPLE__) /*][*/ command = xs_buffer("open %s", url); #elif defined(__CYGWIN__) /*][*/ command = xs_buffer("cygstart -o %s", url); #endif /*]*/ if (command != NULL) { int rc; vtrace("Starting help command: %s\n", command); rc = system(command); if (rc != 0) { popup_an_error("Help failed, return code %d", rc); } Free(command); } Free(url); } #endif /*]*/ suite3270-4.1/Common/varbuf.c000066400000000000000000000111331413735575200157170ustar00rootroot00000000000000/* * Copyright (c) 2014-2015 Paul Mattes. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the names of Paul Mattes nor the names of his contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO * EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * varbuf.c * x3270 variable-length buffer library */ #include "globals.h" #include "asprintf.h" #include "varbuf.h" #define RA_BASE 16 /* initial allocation size */ /** * Initialize a buffer. * * @param[in,out] r Varbuf to initialize. */ void vb_init(varbuf_t *r) { memset(r, 0, sizeof(*r)); } /** * Expand a buffer. */ static void vb_expand(varbuf_t *r, size_t len) { if (r->len + len > r->alloc_len) { if (r->alloc_len == 0) { r->alloc_len = RA_BASE; } /* Yes, there are cleverer ways to find the nearest power of 2. */ while (r->len + len > r->alloc_len) { r->alloc_len *= 2; } r->buf = Realloc(r->buf, r->alloc_len); } } /** * Append a string to a buffer, restricted by a length. * * @param[in,out] r Varbuf to modify * @param[in] buf Buffer to append * @param[in] len Length of buffer to append */ void vb_append(varbuf_t *r, const char *buf, size_t len) { /* * Allocate more space, if needed. * We allocate an extra byte for the NUL terminator here. */ vb_expand(r, len + 1); /* Append the response. */ memcpy(r->buf + r->len, buf, len); r->len += len; /* Add the NUL terminator. */ r->buf[r->len] = '\0'; } /** * Append a string to a buffer. * * @param[in,out] r Varbuf to modify * @param[in] buf NUL-terminated buffer to append */ void vb_appends(varbuf_t *r, const char *buf) { vb_append(r, buf, strlen(buf)); } /** * Append a printf format to a buffer, varargs style. * * @param[in,out] r Varbuf to modify * @param[in] format Printf format * @param[in] ap Varargs */ void vb_vappendf(varbuf_t *r, const char *format, va_list ap) { va_list ap_copy; int len; /* Figure out how much to add. */ va_copy(ap_copy, ap); len = vscprintf(format, ap_copy); va_end(ap_copy); /* Expand. */ vb_expand(r, len + 1); /* Expand the text. */ vsnprintf(r->buf + r->len, len + 1, format, ap); r->len += len; } /** * Append a printf format to a buffer. * * @param[in,out] r Varbuf to modify * @param[in] format Printf format */ void vb_appendf(varbuf_t *r, const char *format, ...) { va_list ap; va_start(ap, format); vb_vappendf(r, format, ap); va_end(ap); } /** * Return the buffer. * * @param[in] r Varbuf to query * * @return Buffer */ const char * vb_buf(const varbuf_t *r) { return r->buf; } /** * Return the buffer length. * * @param[in] r Varbuf to query * * @return Buffer length */ size_t vb_len(const varbuf_t *r) { return r->len; } /** * Reset the length of a buffer. * * @param[in,out] r Varbuf to reset */ void vb_reset(varbuf_t *r) { r->len = 0; } /** * Consume a buffer (free it and return the contents). * * This function is guaranteed never to return NULL, even if nothing was ever * added. * * @param[in,out] r Varbuf to consume * * @return contents */ char * vb_consume(varbuf_t *r) { char *ret; ret = r->buf; vb_init(r); return ret? ret: NewString(""); } /** * Free a buffer. * * @param[in,out] r Varbuf to free */ void vb_free(varbuf_t *r) { Free(r->buf); vb_init(r); } suite3270-4.1/Common/version.txt000077500000000000000000000000611413735575200165150ustar00rootroot00000000000000version="4.1ga10" adversion="3.3.4" cyear="2021" suite3270-4.1/Common/vstatus.c000066400000000000000000000253051413735575200161510ustar00rootroot00000000000000/* * Copyright (c) 2020-2021 Paul Mattes. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of Paul Mattes nor his contributors may be used * to endorse or promote products derived from this software without * specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. */ /* * vstatus.c * Virtual status-line layer. */ #include "globals.h" #include "3270ds.h" #include "ctlr.h" #include "ctlrc.h" #include "kybd.h" #include "status.h" #include "telnet.h" #include "utils.h" #include "vstatus.h" #define CM (60*10) /* csec per minute */ /* Statics. */ static bool voia_compose = false; static ucs4_t voia_compose_char = 0; static enum keytype voia_compose_keytype = KT_STD; static bool voia_undera = true; static bool voia_im = false; #define LUCNT 8 static char voia_lu[LUCNT+1]; static const char *voia_msg = "X Not Connected"; static unsigned char voia_msg_color = HOST_COLOR_WHITE; static bool voia_rm = false; static char voia_screentrace = 0; static char voia_script = 0; static char *voia_scrolled_msg = NULL; static char voia_timing[32]; static bool voia_ta = false; static bool voia_boxsolid = false; static enum { SS_INSECURE, SS_UNVERIFIED, SS_SECURE } voia_secure = SS_INSECURE; static bool voia_printer = false; static void vstatus_connect(bool connected); void vstatus_compose(bool on, ucs4_t ucs4, enum keytype keytype) { voia_compose = on; voia_compose_char = ucs4; voia_compose_keytype = keytype; status_compose(on, ucs4, keytype); } void vstatus_ctlr_done(void) { voia_undera = true; status_ctlr_done(); } void vstatus_insert_mode(bool on) { voia_im = on; status_insert_mode(on); } void vstatus_keyboard_disable_flash(void) { status_keyboard_disable_flash(); } void vstatus_lu(const char *lu) { if (lu != NULL) { strncpy(voia_lu, lu, LUCNT); voia_lu[LUCNT] = '\0'; } else { memset(voia_lu, '\0', sizeof(voia_lu)); } status_lu(lu); } void vstatus_minus(void) { voia_msg = "X -f"; voia_msg_color = HOST_COLOR_RED; status_minus(); } void vstatus_oerr(int error_type) { switch (error_type) { case KL_OERR_PROTECTED: voia_msg = "X Protected"; break; case KL_OERR_NUMERIC: voia_msg = "X NUM"; break; case KL_OERR_OVERFLOW: voia_msg = "X Overflow"; break; } voia_msg_color = HOST_COLOR_RED; status_oerr(error_type); } void vstatus_reset(void) { if (kybdlock & KL_ENTER_INHIBIT) { voia_msg = "X Inhibit"; } else if (kybdlock & KL_DEFERRED_UNLOCK) { voia_msg = "X"; } else { vstatus_connect(PCONNECTED); } voia_msg_color = HOST_COLOR_WHITE; status_reset(); } void vstatus_reverse_mode(bool on) { voia_rm = on; status_reverse_mode(on); } void vstatus_screentrace(int n) { voia_screentrace = (n < 0)? 0: ((n < 9)? "123456789"[n]: '+'); status_screentrace(n); } void vstatus_script(bool on) { voia_script = on? 's': 0; status_script(on); } void vstatus_scrolled(int n) { if (n) { Replace(voia_scrolled_msg, xs_buffer("X Scrolled %d", n)); } else { Replace(voia_scrolled_msg, NULL); } status_scrolled(n); } void vstatus_syswait(void) { voia_msg = "X SYSTEM"; voia_msg_color = HOST_COLOR_WHITE; status_syswait(); } void vstatus_timing(struct timeval *t0, struct timeval *t1) { static char no_time[] = ":??.?"; if (t1->tv_sec - t0->tv_sec > (99*60)) { strcpy(voia_timing, no_time); } else { unsigned long cs; /* centiseconds */ cs = (t1->tv_sec - t0->tv_sec) * 10 + (t1->tv_usec - t0->tv_usec + 50000) / 100000; if (cs < CM) { snprintf(voia_timing, sizeof(voia_timing), ":%02ld.%ld", cs / 10, cs % 10); } else { snprintf(voia_timing, sizeof(voia_timing), "%02ld:%02ld", cs / CM, (cs % CM) / 10); } } status_timing(t0, t1); } void vstatus_twait(void) { voia_undera = false; voia_msg = "X Wait"; voia_msg_color = HOST_COLOR_WHITE; status_twait(); } void vstatus_typeahead(bool on) { voia_ta = on; status_typeahead(on); } static void vstatus_untiming_internal(void) { voia_timing[0] = '\0'; } void vstatus_untiming(void) { vstatus_untiming_internal(); status_untiming(); } static void vstatus_connect(bool connected) { if (connected) { voia_boxsolid = IN_3270 && !IN_SSCP; if (cstate == RECONNECTING) { voia_msg = "X Reconnecting"; } else if (cstate == RESOLVING) { voia_msg = "X [DNS]"; } else if (cstate == TCP_PENDING) { voia_msg = "X [TCP]"; voia_boxsolid = false; voia_secure = SS_INSECURE; } else if (cstate == TLS_PENDING) { voia_msg = "X [TLS]"; voia_boxsolid = false; voia_secure = SS_INSECURE; } else if (cstate == PROXY_PENDING) { voia_msg = "X [Proxy]"; voia_boxsolid = false; voia_secure = SS_INSECURE; } else if (cstate == TELNET_PENDING) { voia_msg = "X [TELNET]"; voia_boxsolid = false; voia_secure = SS_INSECURE; } else if (cstate == CONNECTED_UNBOUND) { voia_msg = "X [TN3270E]"; } else if (kybdlock & KL_AWAITING_FIRST) { voia_msg = "X [Field]"; } else { voia_msg = NULL; } if (net_secure_connection()) { if (net_secure_unverified()) { voia_secure = SS_UNVERIFIED; } else { voia_secure = SS_SECURE; } } else { voia_secure = SS_INSECURE; } } else { voia_boxsolid = false; voia_msg = "X Not Connected"; voia_secure = SS_INSECURE; } voia_msg_color = HOST_COLOR_WHITE; vstatus_untiming_internal(); } static void vstatus_3270_mode(bool on) { voia_boxsolid = IN_3270 && !IN_SSCP; if (voia_boxsolid) { voia_undera = true; } vstatus_connect(CONNECTED); } static void vstatus_printer(bool on) { voia_printer = on; } /** * Returns the virtual status line, which is effectively the c3270 status * line. * * @param[out] ea Returned text and attributes */ void vstatus_line(struct ea *ea) { int i; int rmargin = COLS - 1; char cursor[9]; struct ea *ea2; int fa; /* Begin with nothing. */ memset(ea, 0, 2 * COLS * sizeof(struct ea)); for (i = 0; i < 2 * COLS; i++) { ea[i].fg = mode.m3279? HOST_COLOR_BLUE: HOST_COLOR_GREEN; } /* Ignore any previous field attributes. */ ea[0].gr = GR_RESET; /* Create the dividing line. */ for (i = 0; i < COLS; i++) { ea[i].ucs4 = ' '; ea[i].gr = GR_UNDERLINE; } /* The OIA looks like (in Model 2/3/4 mode): 1 2 3 4 5 6 7 01234567890123456789012345678901234567890123456789012345678901234567890123456789 4AN Status-Message--------------------- Cn TRIPS+s LU-Name- :ss.s 000/000 7 6 5 4 3 2 1 98765432109876543210987654321098765432109876543210987654321098765432109876543210 ^ -7 ^ -14 ^-25 On wider displays, there is a bigger gap between TRIPS+s and LU-Name. */ ea2 = ea + COLS; ea2[0].gr = GR_REVERSE; ea2[0].ucs4 = '4'; ea2[1].gr = GR_UNDERLINE; if (voia_undera) { ea2[1].ucs4 = IN_E? 'B': 'A'; } ea2[2].gr = GR_REVERSE; ea2[2].ucs4 = IN_NVT? 'N': (voia_boxsolid? 0 :(IN_SSCP? 'S': '?')); /* Display the status message. */ if (voia_msg != NULL) { const char *msg = voia_msg; for (i = 0; i < 35 && *msg; i++) { ea2[7 + i].ucs4 = *msg++; ea2[7 + i].fg = mode.m3279? voia_msg_color: HOST_COLOR_GREEN; ea2[7 + i].gr = GR_INTENSIFY; } } /* Display the miscellaneous state. */ i = rmargin - 35; if (voia_compose) { ea2[i++].ucs4 = voia_compose? 'C': 0; ea2[i++].ucs4 = voia_compose? voia_compose_char: 0; } i++; ea2[i++].ucs4 = voia_ta? 'T': 0; ea2[i++].ucs4 = voia_rm? 'R': 0; ea2[i++].ucs4 = voia_im? 'I': 0; ea2[i++].ucs4 = voia_printer? 'P': 0; if (voia_secure != SS_INSECURE) { ea2[i].fg = (voia_secure == SS_SECURE)? HOST_COLOR_GREEN: HOST_COLOR_YELLOW; ea2[i++].ucs4 = 'S'; } else { i++; } ea2[i++].ucs4 = voia_screentrace; ea2[i++].ucs4 = voia_script; /* Logical unit name. */ i = rmargin - 25; if (voia_lu[0]) { char *lu = voia_lu; while (*lu) { ea2[i++].ucs4 = *lu++; } } /* Timing. */ i = rmargin - 14; if (voia_timing[0]) { char *timing = voia_timing; while (*timing) { ea2[i++].ucs4 = *timing++; } } /* Cursor. */ snprintf(cursor, sizeof(cursor), "%03d/%03d ", cursor_addr / COLS + 1, cursor_addr % COLS + 1); for (i = 0; cursor[i]; i++) { ea2[rmargin - 7 + i].ucs4 = cursor[i]; } /* Copy the final field attribute. */ fa = find_field_attribute((ROWS * COLS) - 1); ea2[COLS - 1] = ea[fa]; /* struct copy */ } /** * Virtual status line module registration. */ void vstatus_register(void) { /* Register for state changes. */ register_schange(ST_NEGOTIATING, vstatus_connect); register_schange(ST_CONNECT, vstatus_connect); register_schange(ST_3270_MODE, vstatus_3270_mode); register_schange(ST_PRINTER, vstatus_printer); } suite3270-4.1/Common/winprint.c000066400000000000000000000055441413735575200163150ustar00rootroot00000000000000/* * Copyright (c) 1994-2020 Paul Mattes. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the names of Paul Mattes nor the names of his contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO * EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * winprint.c * Windows screen printing functions. */ #include "globals.h" #include "appres.h" #include "3270ds.h" #include "ctlr.h" #include "ctlrc.h" #include #include "popups.h" #include "resources.h" #include "print_screen.h" #include "trace.h" #include "utils.h" #include "winprint.h" #include #include #include "w3misc.h" /* Typedefs */ /* Globals */ /* Statics */ /* * A Windows version of something like mkstemp(). Creates a temporary * file in $TEMP, returning its path and an open file descriptor. */ int win_mkstemp(char **path, ptype_t ptype) { char *s; int fd; unsigned gen = 0; char *suffix; int xflags = O_TEXT; switch (ptype) { case P_GDI: suffix = "gdi"; xflags = O_BINARY; break; case P_RTF: suffix = "rtf"; break; default: suffix = "txt"; break; } while (gen < 1000) { s = getenv("TEMP"); if (s == NULL) { s = getenv("TMP"); } if (s == NULL) { s = "C:"; } if (gen) { *path = xs_buffer("%s\\x3h-%u-%u.%s", s, getpid(), gen, suffix); } else { *path = xs_buffer("%s\\x3h-%u.%s", s, getpid(), suffix); } fd = open(*path, O_CREAT | O_EXCL | O_RDWR | xflags, S_IREAD | S_IWRITE); if (fd >= 0) { break; } /* Try again. */ Free(*path); *path = NULL; if (errno != EEXIST) break; gen++; } return fd; } suite3270-4.1/Common/x3270-icon2.xpm000066400000000000000000000701141413735575200166130ustar00rootroot00000000000000/* XPM */ static char * x3270_icon2_xpm[] = { "64 64 1265 2", " c None", ". c #D9D3C8", "+ c #D8D1C6", "@ c #D5CEC3", "# c #CEC7BA", "$ c #C1B9AD", "% c #ADA79E", "& c #A1988B", "* c #938A7B", "= c #837969", "- c #6F6558", "; c #958D82", "> c #938D84", ", c #8D8982", "' c #8C8882", ") c #8E8984", "! c #8E8981", "~ c #928B81", "{ c #908980", "] c #958E83", "^ c #A1988A", "/ c #AAA093", "( c #B3AB9F", "_ c #B9B2A7", ": c #BFB7AD", "< c #C5BCAF", "[ c #CCC3B6", "} c #CDC5B7", "| c #CEC4B6", "1 c #CDC4B6", "2 c #CEC5B7", "3 c #CFC6B8", "4 c #CCC3B5", "5 c #CFC6B9", "6 c #C1B5A5", "7 c #BEB2A1", "8 c #BFB4A3", "9 c #C3B8A8", "0 c #C8BFB1", "a c #CBC2B5", "b c #C9BFB2", "c c #B8B1A5", "d c #A79E91", "e c #8C8378", "f c #746E66", "g c #665F56", "h c #534B41", "i c #3D362F", "j c #3C342B", "k c #372F25", "l c #31281F", "m c #29211A", "n c #271E17", "o c #271D15", "p c #261E18", "q c #27221D", "r c #231C18", "s c #221A14", "t c #281F16", "u c #2A2016", "v c #261C15", "w c #2C231B", "x c #332920", "y c #342C24", "z c #373029", "A c #3E362E", "B c #564A3C", "C c #635A4E", "D c #6E655A", "E c #A59A8B", "F c #BDB1A0", "G c #C6BCAC", "H c #C4BAA9", "I c #C2B7A7", "J c #C1B6A5", "K c #BBAF9E", "L c #B9AC9A", "M c #B8AC9A", "N c #B7AB98", "O c #BAAE9C", "P c #AD9F8B", "Q c #BCB1A0", "R c #CCC3B7", "S c #655E55", "T c #1F1710", "U c #15100C", "V c #130C09", "W c #130C08", "X c #150D06", "Y c #180F07", "Z c #1B1108", "` c #170E07", " . c #170E06", ".. c #1D1309", "+. c #160D05", "@. c #271D13", "#. c #483929", "$. c #241C12", "%. c #130B04", "&. c #160D06", "*. c #1A1008", "=. c #1E130A", "-. c #140C05", ";. c #191008", ">. c #130C05", ",. c #190F07", "'. c #180F08", "). c #1A100A", "!. c #514940", "~. c #B5A896", "{. c #C3B9A8", "]. c #C0B5A3", "^. c #BFB3A2", "/. c #BBAE9D", "(. c #B9AD9B", "_. c #B6A995", ":. c #B4A794", "<. c #B0A28F", "[. c #B2A491", "}. c #B2A591", "|. c #B0A28E", "1. c #A99A86", "2. c #A79985", "3. c #9F907B", "4. c #A3937E", "5. c #B0A391", "6. c #534B42", "7. c #110903", "8. c #120A04", "9. c #1C1209", "0. c #1A1108", "a. c #1B1109", "b. c #1C130A", "c. c #1F150D", "d. c #160E08", "e. c #140D06", "f. c #170D07", "g. c #170D06", "h. c #150E06", "i. c #322C27", "j. c #AEA293", "k. c #C2B8A7", "l. c #C4B9A9", "m. c #C1B7A5", "n. c #BBAF9D", "o. c #B5A995", "p. c #B2A592", "q. c #B3A693", "r. c #B4A693", "s. c #B0A390", "t. c #A89A85", "u. c #A69782", "v. c #9B8B74", "w. c #D1CABE", "x. c #4C453C", "y. c #160E07", "z. c #1B1209", "A. c #1D130A", "B. c #160E06", "C. c #191109", "D. c #1B110A", "E. c #1D140A", "F. c #1F140A", "G. c #170F08", "H. c #140C06", "I. c #28221D", "J. c #A79D8E", "K. c #C1B6A6", "L. c #C7BCAC", "M. c #C2B7A6", "N. c #C0B4A3", "O. c #BDB19F", "P. c #B6AA97", "Q. c #B4A895", "R. c #B6A996", "S. c #B1A591", "T. c #AEA08C", "U. c #AA9C88", "V. c #A49580", "W. c #9C8D77", "X. c #CFC8BC", "Y. c #474036", "Z. c #110A05", "`. c #1B1F0C", " + c #181409", ".+ c #20140A", "++ c #170F07", "@+ c #171508", "#+ c #1C1108", "$+ c #150D07", "%+ c #120B05", "&+ c #261D16", "*+ c #A39989", "=+ c #C8BDAD", "-+ c #C5BAAA", ";+ c #C3B8A7", ">+ c #C0B5A4", ",+ c #B7AB99", "'+ c #B5A895", ")+ c #A69783", "!+ c #A3947F", "~+ c #9D8D78", "{+ c #CFC7BC", "]+ c #120B04", "^+ c #0C0703", "/+ c #090502", "(+ c #130D06", "_+ c #201B0D", ":+ c #201F0D", "<+ c #16350D", "[+ c #1B260D", "}+ c #1B170A", "|+ c #110A04", "1+ c #100A04", "2+ c #150C06", "3+ c #120B06", "4+ c #1A110A", "5+ c #8E8578", "6+ c #C7BDAD", "7+ c #C4BAAA", "8+ c #AB9D88", "9+ c #A99B86", "0+ c #A69883", "a+ c #A3947E", "b+ c #9B8B75", "c+ c #CDC5BA", "d+ c #373129", "e+ c #0B0603", "f+ c #0A0602", "g+ c #160F08", "h+ c #1A1D0C", "i+ c #12230A", "j+ c #122E0D", "k+ c #1D3A13", "l+ c #1A1F0D", "m+ c #130C06", "n+ c #110B04", "o+ c #130B05", "p+ c #181007", "q+ c #110B05", "r+ c #867F75", "s+ c #C1B5A4", "t+ c #C8BEAE", "u+ c #C4B9A8", "v+ c #BEB3A1", "w+ c #BAAE9D", "x+ c #B8AC99", "y+ c #B3A694", "z+ c #B2A593", "A+ c #B1A491", "B+ c #AEA08D", "C+ c #AD9E8A", "D+ c #A89985", "E+ c #A3937F", "F+ c #9B8C76", "G+ c #CFC6BC", "H+ c #302B27", "I+ c #0B0602", "J+ c #100A05", "K+ c #0D0703", "L+ c #0E1306", "M+ c #18210D", "N+ c #0C2B0A", "O+ c #10240B", "P+ c #1C3815", "Q+ c #1F3014", "R+ c #0F0903", "S+ c #120C05", "T+ c #7D756A", "U+ c #BDB29F", "V+ c #BCB09E", "W+ c #B4A795", "X+ c #AFA28E", "Y+ c #AE9F8C", "Z+ c #AC9D89", "`+ c #A99B87", " @ c #988972", ".@ c #CCC3B8", "+@ c #090401", "@@ c #0B0703", "#@ c #100904", "$@ c #0F0904", "%@ c #111307", "&@ c #16230D", "*@ c #122D0B", "=@ c #111607", "-@ c #1F3A14", ";@ c #29401D", ">@ c #120D06", ",@ c #120A05", "'@ c #0E0803", ")@ c #150E07", "!@ c #171007", "~@ c #181008", "{@ c #696358", "]@ c #C5BAA8", "^@ c #BBB09E", "/@ c #B3A592", "(@ c #AC9E8A", "_@ c #A99A85", ":@ c #A59782", "<@ c #A49480", "[@ c #9E8F78", "}@ c #342E29", "|@ c #140F0A", "1@ c #100B06", "2@ c #100D06", "3@ c #111608", "4@ c #221F10", "5@ c #1D1D0D", "6@ c #171B0B", "7@ c #130B06", "8@ c #0D0803", "9@ c #100A03", "0@ c #181108", "a@ c #4C4943", "b@ c #C2B7A5", "c@ c #C5BCAB", "d@ c #BEB3A2", "e@ c #BCB19F", "f@ c #AFA28F", "g@ c #AD9F8A", "h@ c #ADA08B", "i@ c #AB9C88", "j@ c #A49681", "k@ c #A1927D", "l@ c #140E08", "m@ c #0A0502", "n@ c #151208", "o@ c #18190B", "p@ c #20220E", "q@ c #151007", "r@ c #160D07", "s@ c #150C05", "t@ c #49443F", "u@ c #C1B7A6", "v@ c #B7AA98", "w@ c #B6AA96", "x@ c #AC9D8A", "y@ c #AB9E8A", "z@ c #9E8F7A", "A@ c #363029", "B@ c #060301", "C@ c #241A0E", "D@ c #1D270F", "E@ c #132009", "F@ c #1A3B11", "G@ c #0F1005", "H@ c #100903", "I@ c #130A04", "J@ c #443E38", "K@ c #C7BBAA", "L@ c #BBAF9C", "M@ c #B6A997", "N@ c #AA9C87", "O@ c #AA9B87", "P@ c #A59682", "Q@ c #3F372F", "R@ c #0C0602", "S@ c #070402", "T@ c #160C07", "U@ c #1A160B", "V@ c #131D09", "W@ c #122A0C", "X@ c #141C0A", "Y@ c #0E0804", "Z@ c #0E0903", "`@ c #191007", " # c #C5BAA9", ".# c #B5A996", "+# c #B2A492", "@# c #B1A390", "## c #A99B85", "$# c #9A8B75", "%# c #433C34", "&# c #090501", "*# c #0F0805", "=# c #0E1D07", "-# c #15210B", ";# c #141F0A", "># c #122F0D", ",# c #101407", "'# c #0E0904", ")# c #20150B", "!# c #2A241B", "~# c #C3B9A9", "{# c #C5BBAB", "]# c #514A41", "^# c #060401", "/# c #080401", "(# c #080501", "_# c #0E0704", ":# c #17250D", "<# c #14200A", "[# c #12200A", "}# c #1D3814", "|# c #161C0B", "1# c #100B05", "2# c #1B150F", "3# c #B5AA9A", "4# c #B9AD9A", "5# c #B1A490", "6# c #A89A86", "7# c #A79884", "8# c #A2937E", "9# c #9A8A75", "0# c #5B544C", "a# c #0B0702", "b# c #101F09", "c# c #14270C", "d# c #1A2E11", "e# c #171E0B", "f# c #201913", "g# c #16110C", "h# c #B1A899", "i# c #B7AA97", "j# c #AFA18D", "k# c #AC9E8B", "l# c #ADA08C", "m# c #A79984", "n# c #A59681", "o# c #998A73", "p# c #615C55", "q# c #0F0804", "r# c #141D0A", "s# c #17200C", "t# c #1E190E", "u# c #14230E", "v# c #0E1408", "w# c #3C3228", "x# c #1C150F", "y# c #B2A99A", "z# c #A2927D", "A# c #A0917C", "B# c #998973", "C# c #625F5B", "D# c #1B0807", "E# c #120605", "F# c #070301", "G# c #0D0C05", "H# c #131508", "I# c #20200E", "J# c #141B09", "K# c #0A0C04", "L# c #150D05", "M# c #140E06", "N# c #0D0804", "O# c #150F09", "P# c #3D2F1F", "Q# c #17110C", "R# c #B0A797", "S# c #BDB2A0", "T# c #B1A38F", "U# c #AC9E89", "V# c #A89B86", "W# c #9D8D77", "X# c #95856F", "Y# c #666360", "Z# c #531615", "`# c #2A0E0D", " $ c #080502", ".$ c #14150A", "+$ c #17180C", "@$ c #181F0B", "#$ c #122308", "$$ c #101908", "%$ c #0D0903", "&$ c #181208", "*$ c #1C1611", "=$ c #312820", "-$ c #15100B", ";$ c #ADA494", ">$ c #C5BBA9", ",$ c #B8AB99", "'$ c #AD9F8C", ")$ c #AB9D89", "!$ c #A2947F", "~$ c #9D8E78", "{$ c #9B8C75", "]$ c #94846D", "^$ c #605953", "/$ c #6D1715", "($ c #2F0D0A", "_$ c #0C0803", ":$ c #090402", "<$ c #140E07", "[$ c #150F08", "}$ c #130D07", "|$ c #110D05", "1$ c #1A130C", "2$ c #261F18", "3$ c #16100C", "4$ c #AA9F8F", "5$ c #AEA18D", "6$ c #A4947F", "7$ c #9F907A", "8$ c #908069", "9$ c #685B4F", "0$ c #66221F", "a$ c #240D0A", "b$ c #070401", "c$ c #1C140B", "d$ c #1B180A", "e$ c #16270B", "f$ c #140D05", "g$ c #1C1208", "h$ c #2B1F13", "i$ c #16100A", "j$ c #A59A8A", "k$ c #C3B9A7", "l$ c #AFA18E", "m$ c #AEA08B", "n$ c #A1917C", "o$ c #9C8C76", "p$ c #9A8A73", "q$ c #91816A", "r$ c #867E73", "s$ c #0C0604", "t$ c #110804", "u$ c #0C0804", "v$ c #0F0D04", "w$ c #131307", "x$ c #1A200C", "y$ c #22170C", "z$ c #130C07", "A$ c #2B2217", "B$ c #120C07", "C$ c #A39887", "D$ c #C3B7A6", "E$ c #A79882", "F$ c #A69681", "G$ c #A0907A", "H$ c #9A8B74", "I$ c #9A8A74", "J$ c #978871", "K$ c #92826C", "L$ c #959189", "M$ c #0F0A05", "N$ c #100905", "O$ c #121006", "P$ c #141107", "Q$ c #20160C", "R$ c #19120C", "S$ c #9F9483", "T$ c #A0907B", "U$ c #96866F", "V$ c #90816A", "W$ c #A19C95", "X$ c #0D0805", "Y$ c #0C0702", "Z$ c #110C05", "`$ c #1A1A0A", " % c #1A180A", ".% c #140B06", "+% c #1A1309", "@% c #1B1208", "#% c #180E07", "$% c #110B06", "%% c #A09382", "&% c #BFB2A0", "*% c #A0917B", "=% c #9E8E78", "-% c #978771", ";% c #95856E", ">% c #90806A", ",% c #BDB5AB", "'% c #211B14", ")% c #171108", "!% c #1A1209", "~% c #140D07", "{% c #0F0803", "]% c #9F9482", "^% c #A79883", "/% c #9E8F79", "(% c #9F8F7A", "_% c #968770", ":% c #8E7E67", "<% c #D0CAC0", "[% c #2E2A25", "}% c #20160B", "|% c #190F08", "1% c #241B11", "2% c #181009", "3% c #9F9381", "4% c #B9AC9B", "5% c #94856E", "6% c #95866E", "7% c #8F8068", "8% c #D9D3CC", "9% c #373330", "0% c #201910", "a% c #160F09", "b% c #100B07", "c% c #A29785", "d% c #BAAD9A", "e% c #978770", "f% c #94836C", "g% c #91826A", "h% c #49423A", "i% c #1A1109", "j% c #150F0A", "k% c #A49988", "l% c #B5A795", "m% c #A1927C", "n% c #A2937D", "o% c #9C8D76", "p% c #93836C", "q% c #95866F", "r% c #94846E", "s% c #645D53", "t% c #150C04", "u% c #201A16", "v% c #1D1814", "w% c #140E0A", "x% c #A49987", "y% c #B9AC99", "z% c #A0927C", "A% c #9E8E79", "B% c #968670", "C% c #92826B", "D% c #757068", "E% c #1B120A", "F% c #28201B", "G% c #251E18", "H% c #150F0B", "I% c #A59A89", "J% c #B4A793", "K% c #9E907B", "L% c #978873", "M% c #9E978C", "N% c #26231E", "O% c #1D1611", "P% c #1F170F", "Q% c #A99C8A", "R% c #AA9B86", "S% c #A3957F", "T% c #907F68", "U% c #978874", "V% c #999389", "W% c #847B6F", "X% c #58524A", "Y% c #464038", "Z% c #322C25", "`% c #221E1C", " & c #201914", ".& c #170F09", "+& c #130D08", "@& c #2B251E", "#& c #92836C", "$& c #8E7D65", "%& c #8D7C64", "&& c #988A77", "*& c #CCC0B0", "=& c #CEC4B5", "-& c #B0A697", ";& c #9D9589", ">& c #8E8475", ",& c #756B5F", "'& c #666059", ")& c #69645E", "!& c #68645E", "~& c #68645D", "{& c #625D56", "]& c #605951", "^& c #59534A", "/& c #564F44", "(& c #4E473D", "_& c #443E37", ":& c #403A34", "<& c #433932", "[& c #443B34", "}& c #453C35", "|& c #484038", "1& c #484138", "2& c #4F483F", "3& c #585147", "4& c #5C574E", "5& c #746C61", "6& c #9F9079", "7& c #988973", "8& c #988871", "9& c #8C7C64", "0& c #978976", "a& c #BCB1A2", "b& c #A89B88", "c& c #A09481", "d& c #928471", "e& c #8E806E", "f& c #918371", "g& c #998C7A", "h& c #9F9281", "i& c #A69988", "j& c #AB9E8C", "k& c #ADA18F", "l& c #AEA290", "m& c #AA9F8E", "n& c #A79B8B", "o& c #A59988", "p& c #A69A89", "q& c #A89C8A", "r& c #A59986", "s& c #A69986", "t& c #A59885", "u& c #A19480", "v& c #9A8C78", "w& c #92826D", "x& c #7D6D55", "y& c #8B7B65", "z& c #9F8F79", "A& c #8E7E66", "B& c #8B7B63", "C& c #998C79", "D& c #8B7D68", "E& c #6C5B46", "F& c #685743", "G& c #65543F", "H& c #65543E", "I& c #604F3A", "J& c #64543E", "K& c #6A5944", "L& c #73624C", "M& c #72624C", "N& c #776651", "O& c #7D6D57", "P& c #85755E", "Q& c #82725C", "R& c #7E6D57", "S& c #7E6F58", "T& c #80705A", "U& c #7C6B55", "V& c #75654E", "W& c #716049", "X& c #675540", "Y& c #67553F", "Z& c #67563F", "`& c #5D4B36", " * c #5C4B37", ".* c #706049", "+* c #8A7B64", "@* c #988872", "#* c #93836D", "$* c #918069", "%* c #8E7E65", "&* c #9A8D7A", "** c #887963", "=* c #887862", "-* c #887760", ";* c #807058", ">* c #77664E", ",* c #74634C", "'* c #6D5C45", ")* c #66553E", "!* c #65533D", "~* c #62503A", "{* c #5C4A34", "]* c #5C4A33", "^* c #56442F", "/* c #503F2A", "(* c #4B3B27", "_* c #493925", ":* c #4D3C28", "<* c #4B3A27", "[* c #473623", "}* c #443421", "|* c #41311E", "1* c #3C2D1C", "2* c #3B2C1B", "3* c #3C2D1D", "4* c #3E2F1E", "5* c #40301E", "6* c #433423", "7* c #574834", "8* c #857560", "9* c #9A8B76", "0* c #998972", "a* c #8C7B63", "b* c #A49784", "c* c #86755F", "d* c #796751", "e* c #7B6951", "f* c #73624A", "g* c #705E47", "h* c #6F5E46", "i* c #6D5B43", "j* c #64523B", "k* c #614F39", "l* c #5E4D36", "m* c #5E4C35", "n* c #56452F", "o* c #4E3D28", "p* c #4B3A26", "q* c #4B3A25", "r* c #4C3B27", "s* c #483723", "t* c #433320", "u* c #40301F", "v* c #362818", "w* c #342516", "x* c #2D2012", "y* c #2C1F12", "z* c #2F2113", "A* c #2B1F12", "B* c #392E21", "C* c #5C4E3F", "D* c #8F7F68", "E* c #8A7961", "F* c #9A8C77", "G* c #A0917D", "H* c #887860", "I* c #75634B", "J* c #74624B", "K* c #6A5841", "L* c #65533C", "M* c #63513A", "N* c #604F38", "O* c #5B4934", "P* c #54422D", "Q* c #574530", "R* c #51402B", "S* c #493825", "T* c #463422", "U* c #463622", "V* c #423220", "W* c #3E2E1C", "X* c #3C2C1B", "Y* c #2F2213", "Z* c #291C10", "`* c #24180D", " = c #26190D", ".= c #1F150A", "+= c #20150C", "@= c #22160C", "#= c #84755E", "$= c #8F7E67", "%= c #8B7A62", "&= c #A39580", "*= c #7D6C54", "== c #79674F", "-= c #705E46", ";= c #6B5942", ">= c #66543D", ",= c #614F38", "'= c #5C4B34", ")= c #5B4A33", "!= c #55432E", "~= c #53412C", "{= c #55442F", "]= c #4E3D29", "^= c #4A3925", "/= c #483724", "(= c #42311F", "_= c #362617", ":= c #2D2011", "<= c #271B0F", "[= c #21150B", "}= c #20150A", "|= c #21150A", "1= c #7A6A54", "2= c #92836B", "3= c #8C7C65", "4= c #897861", "5= c #877761", "6= c #A69885", "7= c #84735B", "8= c #7E6D55", "9= c #726048", "0= c #6D5B45", "a= c #67553E", "b= c #604E38", "c= c #574630", "d= c #52412B", "e= c #54432E", "f= c #54432D", "g= c #463522", "h= c #3D2D1C", "i= c #342616", "j= c #291C0F", "k= c #27190D", "l= c #1F130A", "m= c #1D1209", "n= c #22160B", "o= c #23170C", "p= c #24170B", "q= c #72624D", "r= c #93846D", "s= c #92816A", "t= c #8F7F67", "u= c #87765E", "v= c #8A7A65", "w= c #857C6F", "x= c #A29D96", "y= c #92887A", "z= c #7A6C59", "A= c #766652", "B= c #796952", "C= c #6E5C45", "D= c #68563F", "E= c #625039", "F= c #604E37", "G= c #5E4C36", "H= c #5D4B35", "I= c #55442E", "J= c #53422C", "K= c #4F3D29", "L= c #493824", "M= c #453522", "N= c #3F2E1D", "O= c #392A19", "P= c #362717", "Q= c #2D1F12", "R= c #2A1D0F", "S= c #26190E", "T= c #24180C", "U= c #22170D", "V= c #271A0E", "W= c #2B1D10", "X= c #73644E", "Y= c #86755D", "Z= c #8B7C67", "`= c #A8A49F", " - c #4B443D", ".- c #31291F", "+- c #2D241C", "@- c #291F15", "#- c #2F2418", "$- c #362A1C", "%- c #3A2E20", "&- c #35291B", "*- c #3C2E1E", "=- c #413322", "-- c #433524", ";- c #443624", ">- c #453826", ",- c #463826", "'- c #463725", ")- c #493A27", "!- c #413222", "~- c #413120", "{- c #3B2C1C", "]- c #3A2B1B", "^- c #392919", "/- c #392A1A", "(- c #2E2012", "_- c #2C1F11", ":- c #261A0E", "<- c #291B0F", "[- c #302113", "}- c #302213", "|- c #342515", "1- c #73634D", "2- c #908068", "3- c #877760", "4- c #3B352E", "5- c #150E09", "6- c #2A1F12", "7- c #1E140A", "8- c #180E06", "9- c #180F06", "0- c #1B1007", "a- c #1D120A", "b- c #1F150C", "c- c #21160C", "d- c #2A1F13", "e- c #3D3123", "f- c #3C3022", "g- c #665641", "h- c #8D7C65", "i- c #978975", "j- c #9C8F7C", "k- c #645B50", "l- c #4C433A", "m- c #41372B", "n- c #2E251D", "o- c #29221C", "p- c #251E17", "q- c #1F170D", "r- c #0D0603", "s- c #0E0703", "t- c #0A0603", "u- c #1B1006", "v- c #1A1007", "w- c #514638", "x- c #928575", "y- c #918473", "z- c #665847", "A- c #5F4F3B", "B- c #8D7D65", "C- c #93846C", "D- c #988975", "E- c #D1C8BC", "F- c #918679", "G- c #322922", "H- c #281D13", "I- c #423628", "J- c #4E4437", "K- c #91887B", "L- c #9A8D7B", "M- c #918575", "N- c #80776C", "O- c #82796C", "P- c #81796C", "Q- c #827A6E", "R- c #7B7164", "S- c #797063", "T- c #726758", "U- c #665B4C", "V- c #5D5143", "W- c #473E34", "X- c #433B32", "Y- c #3F372D", "Z- c #372E24", "`- c #342A1F", " ; c #251B12", ".; c #241A11", "+; c #1C140D", "@; c #1E150E", "#; c #191108", "$; c #4C4033", "%; c #9F927E", "&; c #908270", "*; c #5C4B36", "=; c #8C7B64", "-; c #B4A997", ";; c #C8C0B3", ">; c #9C9284", ",; c #494038", "'; c #312518", "); c #221910", "!; c #38312A", "~; c #8F8575", "{; c #C0B4A2", "]; c #B3A794", "^; c #AFA290", "/; c #AC9F8C", "(; c #AEA18E", "_; c #AEA18F", ":; c #B1A593", "<; c #B1A492", "[; c #B3A796", "}; c #ADA190", "|; c #ACA191", "1; c #AFA494", "2; c #918577", "3; c #43392D", "4; c #372E23", "5; c #483E31", "6; c #43372A", "7; c #2B1F14", "8; c #291E13", "9; c #292118", "0; c #493F31", "a; c #938571", "b; c #AA9D89", "c; c #A0927F", "d; c #60513C", "e; c #918068", "f; c #9D8F7A", "g; c #B8AE9C", "h; c #9E9484", "i; c #322921", "j; c #2D2218", "k; c #32271A", "l; c #312B24", "m; c #423F3B", "n; c #BBAE9C", "o; c #B0A290", "p; c #BAAF9D", "q; c #BEB2A2", "r; c #C8BFAE", "s; c #CAC1B1", "t; c #968E82", "u; c #1D150D", "v; c #261E16", "w; c #292015", "x; c #1C130B", "y; c #2A1E13", "z; c #3D342A", "A; c #9E917D", "B; c #B0A38F", "C; c #A99C87", "D; c #655643", "E; c #A69984", "F; c #A99C89", "G; c #C2B8A9", "H; c #7A7166", "I; c #130F0A", "J; c #1E150C", "K; c #2C2217", "L; c #1E140B", "M; c #807566", "N; c #A19686", "O; c #A19582", "P; c #A29481", "Q; c #A89A87", "R; c #A69985", "S; c #A69884", "T; c #CCC5B7", "U; c #5D5751", "V; c #231A12", "W; c #453B2F", "X; c #261D12", "Y; c #23180E", "Z; c #1D130B", "`; c #4C4439", " > c #AA9D8A", ".> c #B3A695", "+> c #70604B", "@> c #9F9380", "#> c #C7BDAF", "$> c #A09584", "%> c #756A5A", "&> c #665A4B", "*> c #43392F", "=> c #2D261E", "-> c #352B21", ";> c #473B2E", ">> c #4E4438", ",> c #5A4F42", "'> c #685B4B", ")> c #716350", "!> c #7F725F", "~> c #877A68", "{> c #8C7F6B", "]> c #988A76", "^> c #AB9F8C", "/> c #B9AE9C", "(> c #938A7D", "_> c #665C50", ":> c #6C6358", "<> c #1E1611", "[> c #3D342B", "}> c #2F261C", "|> c #25190E", "1> c #1F140B", "2> c #241C13", "3> c #ABA091", "4> c #C8BEB0", "5> c #B3A692", "6> c #6F675D", "7> c #473E38", "8> c #4A433B", "9> c #41382E", "0> c #382F25", "a> c #30261B", "b> c #221A13", "c> c #19140F", "d> c #1B150E", "e> c #231A11", "f> c #261B11", "g> c #2A2118", "h> c #30261A", "i> c #392E22", "j> c #4A4033", "k> c #51483B", "l> c #625648", "m> c #6D6254", "n> c #271E14", "o> c #3B332A", "p> c #18110B", "q> c #21160B", "r> c #A89984", "s> c #D1C9BE", "t> c #AA9E8D", "u> c #A39785", "v> c #A19482", "w> c #9D907D", "x> c #958773", "y> c #8F806B", "z> c #887965", "A> c #7D705E", "B> c #716553", "C> c #695B4A", "D> c #6E6251", "E> c #504537", "F> c #443B31", "G> c #362D21", "H> c #2A1F14", "I> c #1B140C", "J> c #1A140E", "K> c #18120C", "L> c #1B140D", "M> c #1D1711", "N> c #1A140D", "O> c #342B21", "P> c #5A4D3E", "Q> c #342A20", "R> c #261C13", "S> c #716556", "T> c #AB9D8A", "U> c #A39480", "V> c #CAC1B4", "W> c #B3A593", "X> c #B2A692", "Y> c #AD9E8B", "Z> c #988974", "`> c #998A74", " , c #968773", "., c #938573", "+, c #978A79", "@, c #968978", "#, c #988C7B", "$, c #978B79", "%, c #928573", "&, c #8A7C69", "*, c #746757", "=, c #978B7A", "-, c #A49886", ";, c #A59B8B", ">, c #A0907C", ",, c #AFA492", "', c #8D7D67", "), c #8E7F69", "!, c #9C8E78", "~, c #AC9F8B", "{, c #B2A693", "], c #CFC8BD", "^, c #72614A", "/, c #6E5D46", "(, c #715F48", "_, c #7A6951", ":, c #7B6A52", "<, c #8A7962", "[, c #8E7D66", "}, c #958670", "|, c #998A75", "1, c #9D8E79", "2, c #A49581", "3, c #AA9D88", "4, c #9C8C77", "5, c #B5A898", "6, c #B7AEA3", "7, c #A3998D", "8, c #7E6E58", "9, c #675744", "0, c #665643", "a, c #786853", "b, c #7F6F59", "c, c #7F6E58", "d, c #84735C", "e, c #827159", "f, c #85755D", "g, c #8A7A62", "h, c #91806A", "i, c #94856D", "j, c #B4A694", "k, c #A49783", "l, c #CAC2B7", "m, c #BAB0A4", "n, c #ADA293", "o, c #9D8F7B", "p, c #84745D", "q, c #81705A", "r, c #A1937F", "s, c #92836F", "t, c #968772", "u, c #897961", "v, c #85745B", "w, c #918169", "x, c #9F907D", "y, c #9C8D79", "z, c #7E6E59", "A, c #A79A86", "B, c #B2A695", "C, c #B7AD9D", "D, c #B1A594", " ", " ", " ", " . + @ # $ % & * = - ; > , ' ) ! > ~ { ] ^ / ( _ : < [ } | 1 1 2 3 4 5 6 7 8 9 0 a b ", " c d e f g h i j k l m n o p q r s t u v t w x y z A B C D E F G H 9 I J F K L M N O L N P Q R ", " S T U V W X X Y Z ` ...+.@.#.$.%.&.*.=.&.-.;.>.` &.,.'.).!.~.{.J ].^.Q /.(._.:.<.[.}.|.P 1.2.3.4.5. ", " 6.7.X 8.*.9.'.Y 9.0.;.a.` b.c.d.8. .;.*.X e.*.` f.g.Y h.Y i.j.k.l.m.8 ^.n.n.o.:.p.q.p.r.s.P t.u.4.v.w. ", " x.8.-.-.>.9.` y.z.0.A.*.B.C.D.Z 0.E.F.F.9.G.;.0.-.,.H.y.&.I.J.K.L.l.M.N.O.O P.Q.R.Q.Q.q.S.T.U.V.4.W.X. ", " Y.8.-.H.Z.X '.a.`. +.+F. .++Y *.Y @+C.#+b.$+y.y. .Y %+e.&.&+*+J =+-+;+>+7 n.,+:.:.q.'+:.p.T.U.)+!+~+{+ ", " j ]+-.^+/+(+_+:+<+[+}+X y.` |+H.%+1+2+g.%+3+++` %+B.]+e.` 4+5+].6+7+9 N.F n.M :.q.:.:.[.<.8+9+0+a+b+c+ ", " d+Z.(+e+f+g+h+i+j+k+l+m+-.'.X Z.X n+o+ .p+%+Y 2+%+q+o+o+` G.r+s+t+7+u+>+v+w+x+q.y+z+q.A+B+C+U.D+E+F+G+ ", " H+I+J+K+I+L+M+N+O+P+Q+H.X -.>.J+R+R+|+X >.S+|+]+B.Y ;.-.&.2+T+u+t+7+u+s+U+V+x+q.W+q.[.s.X+Y+Z+`+E+ @.@ ", " H++@@@#@$@%@&@*@=@-@;@>@>.,@#@^+$@%+'@H.>.)@%+!@E.~@*.X 9.++{@]@6+-+{.8 ^@O.,+/@:.q.<.B+T.(@_@:@<@[@ ", " }@|@$@$@$@1@2@3@4@5@6@e.%+H.7@8@n+1+9@|+q+q+o+0@E.X 8.#@++J+a@b@c@7+K.d@e@O ,+:.W+A+f@g@h@(@i@j@:@k@ ", " }@l@|+K+m@K+>@n@o@p@q@|+|+H.o+$@%+%+o+Y |+r@|+y.y.H.m+%+s@|+t@;+7+l.u@7 V+v@N w@~.p.X+P (@x@y@1.)+z@ ", " A@$@^+m@B@q+C@D@E@F@G@H@-.Y |+K+%+X y.Y 8.-.e.e.~@>.#@y.e.I@J@K@-+9 >+U+L@M N o.M@/@<.T.(@i@N@O@P@W. ", " Q@R@I+/+S@$@T@U@V@W@X@#@-.q+Y@Z@-.++%+~@`@X B.1+e.S+|+1+;.o+d+ #7+9 >+e@O N N '+.#[.+#@#Z+Z+(@##u.$# ", " %#+@m@&#@@*#=#-#;#>#,#R@'#J+K+3+X y.>.&.A.)#%+1+B.e. .|+B.#@!#d@~#{#>+F L@.#.#y+:.[.[.B+i@(@9+1.:@W. ", " ]#^#I+/#(#_#:#<#[#}#|#'@I+1#'#q+1+o+X o+Y@o+|+8@-.#@Z.H.o+|+2#3#l.G J F 4#.#Q.q.5#T.(@g@U.6#7#j@8#9# ", " 0#m@'#^+a#Y@|#b#c#d#e#$@>.8@Z.%+*.X o+H.q+%+%+>.1+Z.'#,@J+f#g#h#H G J O.i#~./@p.j#k#O@l#N@m#n#!+k@o# ", " p#+@/+8@f+q#r#s#t#u#v#f+e.#@$+Y ;.1+]+9@|+H.%+++y.%+I+'@l@w#x#y# #G M.F N .#/@A+j#U.6#U.9+0+n#z#A#B# ", " C#D#E#I+F#/+G#H#I#J#K#I+L#H.X 9.++M#'@'@R+>.|+$@)@S+J+N#O#P#Q#R#{#l.M.S#4#~.p.T#X+U#t.V#V.V.0+8#W#X# ", " Y#Z#`# $/+I+.$+$@$#$$$%$X y.q+X e.&$%+o+H@>.H.o+m+q+;.J+*$=$-$;$>$;+>+e@,$W+:.@#'$)$9+1.!$A#A#~${$]$ ", " ^$/$($_$:$e+<$[$}$>@|$1+-.e.y.++o+-.H.X #@o+'.Y >.-.'.J+1$2$3$4$-+M.7 V+x+R.}.5$(@U.9+D+6$7$W.F+B#8$ ", " 9$0$a$'#m@b$m+c$d$d$e$f$g$` 0.*.Y .Z@-.,@` ` -.g+H.Y %+J+h$i$j$k$].F (..#:.l$m$)$N@D+m#n$W.o$~+p$q$ ", " r$s$t$^+b$b$/+u$v$w$x$e.9.`@y$=.;.*.Y@e.&.B.-.#@$@q+y.s@z$A$B$C$D$^.K v@:.+#P i@t.E$F$n#G$H$I$J$ @K$ ", " L$N#'@I+^+_$M$N$$@S+O$P$f.a.Q$Z ` ` m+'.-.>.q+$@|+q#|+-.Z.R$1@S$s+^.V+,+q.Y+)$1.E$4.z#T$b+o$B#U$U$V$ ", " W$X$#@Y$I+e+^+$@q+Z$`$ %.%,.+%@%#%z.~@X |+Z.|+R+R+R+a#%+o+#@$%%%&%O.O ,$<._@0+7#u.*%*%=%b+I$-%;%U$>% ", " ,%'%%+Z@R@I+^+'@1+$@)%!%~@Z.;.A.y.G.C.G.'#~%$@$@R+%.{%o+o+H@z$]%7 V+(.(.l$^%!+0+V.*%/%(%B#_%U$_%;%:% ", " <%[%_$K+'@'@@@Z.%+S+}%|%B.r@8.|+` p+G.J+_$M$Y$8@]+8.'@)@1%2%B$3%L@4%N N P n#n$V.8#7${$I$ @5%5%U$6%7% ", " 8%9%K+^+f+^+^+K+$@X 0@Z.H.~@B.$@>.A.y.>.#@8@1+$@;.&.'@H.0%a%b%c%d%M@R.o.P u.z#!+k@T$W# @e%]$f%]$]$g% ", " h%#@H.8@_$R@'@$@|+$@Y$|+e.X X 2+@%g.B.` $+y. .'..%q+H.i%|+j%k%L l%:.[.U.n#m%n%3.=%o% @e%]$p%]$q%r% ", " s%t%>.|+-.'@^+]+L#S+1+J+$@#@#@'@Z.J+#@;.X y.` J+$@m+S+u%v%w%x%y%q.X+'$D+V.n%z%A%o$F+$#B%C%]$C%C%r% ", " D%-.o+8.8@%+$@|+H@%+K+%+o+>.#@H.J+3+-.9.E%&.|+8@'@$@Z.F%G%H%I%J%[.5$(@7#a+7$K%=%b+o$b+;%]$U$p%C%L% ", " M%N%O%g+|+'#e+I+{%-.8.X H.X %+~@,@X -.B.C.X #@'@'@K+o+X .P%Q%R%U.O@D+8#S%~+~+W#W.{$o#q%U$5%q$T%U% ", " V%W%X%Y%Z%`% &i$B$d..&B$B$$+$+>.#@R+N#.%%+3+R@I+m@3+$++&@&N@1.t.n#8#7$~$b+I$o#{$b+ @U$]$#&$&%&&& ", " *&=&u+-&;&>&,&'&)&!&~&{&]&^&/&(&_&:&<&[&}&|&1&2&3&0#4&5&6&1.m#8#3.6&o$7&8&B#{$b+J$U$q$q$9&%&0& ", " a&b&c&d&e&f&g&h&i&j&k&k&l&k&m&n&o&I%p&q&r&s&t&u&v&w&x&y&$#7$z&~$~+$#H$I$W#H$p%q$K$g%A&B&C& ", " D&E&F&G&H&I&J&K&L&M&N&O&P&Q&R&S&O&T&U&V&W&X&Y&Z&`& *.*+*@*W#~$H$o#H${$@*p%q$#*q$$*%*&* ", " b&**=*-*;*>*,*'*)*!*~*{*]*^*/*(*_*:*<*[*}*|*1*2*3*4*5*6*7*8*9*o$H$0*8&J$U$]$]$C%T%a*b* ", " !$c*d*e*f*g*h*i*j*k*l*{*m*n*o*p*q*r*s*t*u*v*w*x*x*x*y*z*A*B*C*_% @e%;%e%e%-%U$q$D*E*F* ", " G*H*I*J*K*L*M*M*N*O*^*P*Q*R*S*T*[*U*V*W*X*Y*Z*`* =.=)#y$+=A.@=#=;%]$U$e%5%e%]$D*$=%=c* ", " &=9&*===-=;=>=,='=)=!=~={=n*]=^=S*S*/=(=_=:=<=[=[=.=..9.}=F.|=1=2=p%;%q%p%;%p%D*3=4=5= ", " 6=$&7=8=9=0=a=b={*{*c=d=e=n*f=]=r*S*g=h=i=z*j=k=l=[=@=m=n=o=p=q=2=r=#&p%C%;%]$s=t=u=v= ", " % w=x=y=z=A=B=C=D=E=F=G=H=I=J=f=!=n*/*K=L=M=N=O=P=Q=R=S=T=U=@=V=W=z*X=p%C%]$C%]$5%p%C%8$Y=Z= ", " `= -.-y +-@-#-$-%-&-$-*-=---;->-,-'-)-!-6*~-{-]-^-/-(-_-:-:-Z*<-[-}-|-1-2-$*#&$*s=p%C%C%$&3- ", " 4-5-6-7-8-9-,.0-B.X ` 0.3+)@9.a.E%i%a-)@'.)#b-Q$c-`*U=7-b.7-7-d-e-f-{-g-A&h-D*$*D*q$p%>%i-j- ", " k-l-m-n-o-p-q-`@t$r-{%H@s-R@t-t%L#..`@u-v-#%8-z.++-.Z X o+B.p+|+w-x-y-z-A-B-3=9&A&8$C-B#D- ", " E-F-G-H-I-J-K-k%m&L-M-w=N-O-P-Q-R-S-T-U-V-W-X-Y-Z-`- ;.;+;@;9.;.#;~@$;%;}.9+&;*;=;B&B-2-H$-; ", " ;;>;,;).';$-);!;~;{;O ];z+^;'$/;(;_;^;:;<;[;};|;1;h&2;3;4;5;6;7;8;9;0;a;|.b;8+c;d;D*e;_%f;j& ", " g;h;i;4+j;k;Y l;m;j$n;P.q.<.o;s.@#'+i#i#p;F O.q;u@r;s;t;u;v;m-w;x;y;z;A;B;C;U.j#j&D;U$E;F; ", " G;q.H;I;J;K;L;-.M;N;O;P;Q;R;)+S;:@)$j#q.P.,+Q N.M.G 6+T;U;V;W;X;Y;Z;v-`; >(@9+<./@.>+>@> ", " #>5$'+$>%>C Z-g.$+&>*>=>->;>>>,>'>)>!>~>{>]>b*^>/>V+(>_>:><>[>}>c-|>1>2>f&Z+2.j#s.N (.3> ", " 4>y+l$5>v@/@W+6>,;7>8>9>0>a>b>c>d>e>f>v g>h>i>j>k>l>m>y =.)#n>o>p>U=q>g>m>r>8#U.l$j#:.'+s> ", " {.i#q.p.q.:./@l$t>u>v>w>x>y>z>A>B>C>D>E>F>G>H>I>J>K>L>M>N>Q$v-O>P>Q>R>L>S>T>3.U>l#5$P j#|.@ ", " V>X+<.X+T#W>p.X>:./@j#Y>N@V.7$o$~$o$o#$#Z>W#`> ,.,+,@,#,$,%,&,*,=,(@6=-,;,p.2.>,1.`+D+7#(@p. ", " ,,',),C%#*`>!,m#V#`+`+U.k#~,O@m#u.7#V.V.a+a+*%A#A#n#!+!+m#1.7#D+l$Y>C+l$~.y@9#8#n#V.n$6#{,], ", " -,^,/,(,f*_,:,<,[,3=D*8$},|,1,7$!$2,&=z#8#:@:@u.1.3,k#~,X+(@7#X+@#A+<.W>[.b+8&o$F+4,5,< ", " 6,7,.,8,9,0,a,b,c,d,e,f,u=4=g,D*$=A&D*h,;%i,-%o#~$k@2.y@P@(@5$q.j,p.'+n#o# @@*q%k, ", " l,m,n,o,p,q,r,Z>s, ,t,t,r%u,v,g,%&q$w,u,i,5%@*$#o$F+W#p$f;s& ", " x,t&y,t,z,$&%=%=%=D*8$B#A, ", " B,C,D, ", " ", " "}; suite3270-4.1/Common/x3270.man.m4000066400000000000000000000066231413735575200160750ustar00rootroot00000000000000dnl Copyright (c) 1993-2020, Paul Mattes. dnl Copyright (c) 1990, Jeff Sparkes. dnl All rights reserved. dnl dnl Redistribution and use in source and binary forms, with or without dnl modification, are permitted provided that the following conditions are met: dnl * Redistributions of source code must retain the above copyright dnl notice, this list of conditions and the following disclaimer. dnl * Redistributions in binary form must reproduce the above copyright dnl notice, this list of conditions and the following disclaimer in the dnl documentation and/or other materials provided with the distribution. dnl * Neither the names of Paul Mattes, Jeff Sparkes nor the names of their dnl contributors may be used to endorse or promote products derived from dnl this software without specific prior written permission. dnl dnl THIS SOFTWARE IS PROVIDED BY PAUL MATTES AND JEFF SPARKES "AS IS" AND dnl ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE dnl IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE dnl ARE DISCLAIMED. IN NO EVENT SHALL PAUL MATTES OR JEFF SPARKES BE LIABLE FOR dnl ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL dnl DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR dnl SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER dnl CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT dnl LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY dnl OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH dnl DAMAGE. define(XX_KEY,$1`'XX_LT()Key>$2)dnl define(XX_BTN,$1`'XX_LT()Btn$2>)dnl XX_TH(XX_PRODUCT,1,XX_DATE) XX_SH(Name) XX_PRODUCT XX_DASH ifelse(XX_PRODUCT,c3270,`curses-based ')dnl XX_SM(IBM) host access tool ifelse(XX_PRODUCT,b3270,`back end ')dnl XX_SH(Synopsis) XX_FB(XX_PRODUCT) [XX_FI(options)] ifelse(XX_PRODUCT,b3270,,`[XX_FI(host)]') XX_BR XX_FB(XX_PRODUCT) [XX_FI(options)] XX_FI(session-file).XX_PRODUCT XX_SH(Description) XX_FB(XX_PRODUCT) opens a telnet connection to an XX_SM(IBM) ifelse(XX_PRODUCT,x3270,`host in an X window.', XX_PRODUCT,s3270,`host, then allows a script to control the host login session. It is derived from XX_LINK(x3270-man.html,XX_FI(x3270)(1)), an X-windows IBM 3270 emulator.', XX_PRODUCT,ws3270,`host, then allows a script to control the host login session.', XX_MODE,console,`host in a console window.', XX_PRODUCT,b3270,`host, handling the 3270, TELNET and TLS protocols, allowing a front-end application handle user interactions. It uses XML on its standard input and standard output to communicate with the front end. ') It implements RFCs 2355 (TN3270E), 1576 (TN3270) and 1646 (LU name selection), and supports IND$FILE file transfer. ifelse(XX_PRODUCT,x3270, `The window created by XX_FB(XX_PRODUCT) can use its own font for displaying characters, so it is a fairly accurate representation of an XX_SM(IBM) 3278 or 3279. It is similar to XX_FI(tn3270)(1) except that it is X11-based, not curses-based. ')dnl ifelse(XX_PRODUCT,c3270, `If the console is capable of displaying colors, then XX_FB(c3270) emulates an XX_SM(IBM) 3279. Otherwise, it emulates a 3278. ')dnl XX_SH(Wiki) Primary documentation for XX_PRODUCT is on the XX_FB(x3270 Wiki), XX_LINK(https://x3270.miraheze.org/wiki/Main_Page,https://x3270.miraheze.org/wiki/Main_Page). XX_SH(Version) XX_PRODUCT XX_VERSION_NUMBER suite3270-4.1/Common/x3270_glue.expect000066400000000000000000000210271413735575200173020ustar00rootroot00000000000000# Copyright (c) 2000-2009, Paul Mattes. # All rights reserved. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions are met: # * Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # * Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in the # documentation and/or other materials provided with the distribution. # * Neither the names of Paul Mattes nor the names of his contributors # may be used to endorse or promote products derived from this software # without specific prior written permission. # # THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS OR IMPLIED # WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF # MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO # EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, # SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, # PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; # OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, # WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR # OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF # ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. # Glue functions between 'expect' and x3270 # Usage: source x3270_glue.expect namespace eval x3270 { variable verbose 0 variable pid 0 # Start function: Start ?-nohup? ?program? ?options? # # Sets up the 'expect' environment correctly and spawns a 3270 # interface process. # # The 'program' and 'options' can be: # "x3270 -script" to drive an x3270 session # "s3270" to drive a displayless 3270 session # "x3270if -i" to run as a child script of x3270 (via the Script() # action) # # If "args" is empty, or starts with an option besides '-nohup', # guesses which process to start. # It will only guess "x3270if -i" or "s3270"; if you want to start # x3270, you need to specify it explicitly. # # Returns the process ID of the spawned process. proc Start {args} { global stty_init timeout spawn_id env variable verbose variable pid if {$pid != 0} {return -code error "Already started."} # If the first argument is "-nohup", remember that as an # argument to 'spawn'. if {[lindex $args 0] == "-nohup"} { set nohup {-ignore HUP} set args [lrange $args 1 end] } { set nohup {} } # If there are no arguments, or the first argument is an # option, guess what to start. # If X3270INPUT is defined in the environment, this must be a # child script; start x3270if. Otherwise, this must be a peer # script; start s3270. if {$args == {} || [string index [lindex $args 0] 0] == "-"} { if {[info exists env(X3270INPUT)]} { set args [concat x3270if -i $args] } { if {$::tcl_platform(platform) == "windows"} { set args [concat ws3270 $args] } { set args [concat s3270 $args] } } } # Set up the pty initialization default. set stty_init -echo # Spawn the process. if {$verbose} { set pid [eval [concat spawn $nohup $args]] } { set pid [eval [concat spawn -noecho $nohup $args]] log_user 0 } # Set the 'expect' timeout. set timeout -1 return $pid } # Basic interface command. Used internally by the action functions # below. proc cmd {cmd} { variable verbose variable pid if {$pid==0} { return -code error "Not started yet." } if {$verbose} {puts "+$cmd"} send "$cmd\r" expect { -re "data: (.*)\r?\n.*\r?\nok\r?\n$" { set r $expect_out(buffer) } -re ".*ok\r?\n" { return {} } -re "(.*)\r?\n.*?\r?\nerror\r?\n" { return -code error "$expect_out(1,string)" } -re ".*error\r?\n" { return -code error \ "$cmd failed: $expect_out(buffer)" } eof { set pid 0; error "process died" } } # Convert result to a list. set ret {} set iter 0 while {1} { if {! [regexp "data: (.*?)\r?\n" $r dummy elt]} {break} if {$iter==1} {set ret [list $ret]} set r [string range $r [expr [string length $elt]+7] \ end] if {$iter > 0} { set ret [linsert $ret end $elt] } { set ret $elt } set iter [expr $iter + 1] } if {$verbose} {puts "ret $iter"} return $ret } # Convert an argument list to a comma-separated list that x3270 will # accept. proc commafy {alist} { set i 0 set a "" while {$i < [llength $alist]} { if {$i > 0} { set a "$a,[lindex $alist $i]" } { set a [lindex $alist $i] } incr i } return $a } # Quote a text string into x3270-acceptable format. proc stringify {text} { set a "\"" set i 0 while {$i < [string len $text]} { set c [string range $text $i $i] switch -- $c { "\n" { set a "$a\\n" } "\r" { set a "$a\\r" } " " { set a "$a\\ " } "\"" { set a "$a\\\"" } default { set a "$a$c" } } incr i } set a "$a\"" return $a } # User-accessible actions. # Some of these apply only to x3270 and x3270if, and not to s3270. proc AltCursor {} { return [cmd "AltCursor"] } proc Ascii {args} { return [cmd "Ascii([commafy $args])"] } proc AsciiField {} { return [cmd "AsciiField"] } proc Attn {} { return [cmd "Attn"] } proc BackSpace {} { return [cmd "BackSpace"] } proc BackTab {} { return [cmd "BackTab"] } proc CircumNot {} { return [cmd "CircumNot"] } proc Clear {} { return [cmd "Clear"] } proc CloseScript {} { return [cmd "CloseScript"] } proc Cols {} { return [lindex [Status] 7] } proc Compose {} { return [cmd "Compose"] } proc Connect {host} { return [cmd "Connect($host)"] } proc CursorSelect {} { return [cmd "CursorSelect"] } proc Delete {} { return [cmd "Delete"] } proc DeleteField {} { return [cmd "DeleteField"] } proc DeleteWord {} { return [cmd "DeleteWord"] } proc Disconnect {} { return [cmd "Disconnect"] } proc Down {} { return [cmd "Down"] } proc Dup {} { return [cmd "Dup"] } proc Ebcdic {args} { return [cmd "Ebcdic([commafy $args])"] } proc EbcdicField {} { return [cmd "EbcdicField"] } proc Enter {} { return [cmd "Enter"] } proc Erase {} { return [cmd "Erase"] } proc EraseEOF {} { return [cmd "EraseEOF"] } proc EraseInput {} { return [cmd "EraseInput"] } proc FieldEnd {} { return [cmd "FieldEnd"] } proc FieldMark {} { return [cmd "FieldMark"] } proc FieldExit {} { return [cmd "FieldExit"] } proc Flip {} { return [cmd "Flip"] } proc HexString {x} { return [cmd "HexString($x)"] } proc Home {} { return [cmd "Home"] } proc Info {text} { return [cmd "Info([stringify $text])"] } proc Insert {} { return [cmd "Insert"] } proc Interrupt {} { return [cmd "Interrupt"] } proc Key {k} { return [cmd "Key($k)"] } proc Keymap {k} { return [cmd "Keymap($k)"] } proc Left {} { return [cmd "Left"] } proc Left2 {} { return [cmd "Left2"] } proc MonoCase {} { return [cmd "MonoCase"] } proc MoveCursor {r c} { return [cmd "MoveCursor($r,$c)"] } proc Newline {} { return [cmd "Newline"] } proc NextWord {} { return [cmd "NextWord"] } proc PA {n} { return [cmd "PA($n)"] } proc PF {n} { return [cmd "PF($n)"] } proc PreviousWord {} { return [cmd "PreviousWord"] } proc Quit {} { exit } proc Reset {} { return [cmd "Reset"] } proc Right {} { return [cmd "Right"] } proc Right2 {} { return [cmd "Right2"] } proc Rows {} { return [lindex [Status] 6] } proc SetFont {font} { return [cmd "SetFont($font)"] } proc Snap {args} { return [cmd "Snap([commafy $args])"] } proc Status {} { variable verbose variable pid if {$pid==0} { return -code error "Not started yet." } if {$verbose} {puts "+(nothing)"} send "\r" expect { -re ".*ok\r?\n" { set r $expect_out(buffer) } eof { set pid 0; error "process died" } } return [string range $r 0 [expr [string length $r]-7]] } proc String {text} { return [cmd "String([stringify $text])"] } proc SysReq {} { return [cmd "SysReq"] } proc Tab {} { return [cmd "Tab"] } proc ToggleInsert {} { return [cmd "ToggleInsert"] } proc ToggleReverse {} { return [cmd "ToggleReverse"] } proc TemporaryKeymap {args} { return [cmd "TemporaryKeymap($args)"] } proc Transfer {args} { return [cmd "Transfer([commafy $args])"] } proc Up {} { return [cmd "Up"] } proc Wait {args} { return [cmd "Wait([commafy $args])"] } # Extra function to toggle verbosity on the fly. proc Setverbose {level} { variable verbose set verbose $level return } # Export all the user-visible functions. namespace export \[A-Z\]* } # Import all of the exported functions. namespace import x3270::* suite3270-4.1/Common/x3270if.c000066400000000000000000001101011413735575200155270ustar00rootroot00000000000000/* * Copyright (c) 1995-2009, 2013-2021 Paul Mattes. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the names of Paul Mattes nor the names of his contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO * EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * Script interface utility for x3270, c3270, wc3270, s3270 and ws3270. * * Accesses an emulator command stream in one of several different ways: * * - (Unix only) Using the file descriptors defined by the environment * variables X3270OUTPUT (output from the emulator, input to script) and * X3270INPUT (input to the emulator, output from script). These are * automatically passed to child scripts by the Unix emulators' Script() * action. * * - Using a loopback IPv4 socket whose TCP port is defined by the * environment variable X3270PORT. This is automatically passed to child * scripts by the Windows emulators' Script() action. * * - (Unix only) Using the Unix-domain socket /tmp/x3sck.. This * socket is created by the Unix emulators' -socket option. * * - Using a loopback IPv4 socket whose TCP port is passed in explicitly. * This port is bound by the emulators by the -scriptport option. */ #include "globals.h" #include #if !defined(_WIN32) /*[*/ # include # include # include # include # include # include #endif /*]*/ #if !defined(_WIN32) /*[*/ # if defined(HAVE_NCURSESW_NCURSES_H) /*[*/ # include # elif defined(HAVE_NCURSES_NCURSES_H) /*][*/ # include # elif defined(HAVE_NCURSES_H) /*][*/ # include # else /*][*/ # include # endif /*]*/ # if defined(HAVE_NCURSESW_TERM_H) /*[*/ # include # elif defined(HAVE_NCURSES_TERM_H) /*][*/ # include # elif defined(HAVE_TERM_H) /*][*/ # include # endif /*]*/ # if defined(HAVE_LIBREADLINE) /*[*/ # include # if defined(HAVE_READLINE_HISTORY_H) /*[*/ # include # endif /*]*/ # endif /*]*/ #endif #include "base64.h" #include "s3270_proto.h" #include "w3misc.h" #define IBS 4096 #define NO_STATUS (-1) #define ALL_FIELDS (-2) #if defined(_WIN32) /*[*/ #define DIRSEP '\\' #define OPTS "H:iI:L:s:St:v" #define FD_ENV_REQUIRED true #else /*][*/ #define DIRSEP '/' #define OPTS "H:iI:L:p:Ps:St:v" #define FD_ENV_REQUIRED false #endif /*]*/ #if !defined(HAVE_TIPARM) /*[*/ #define tiparm tparm #endif /*]*/ typedef enum { ITYPE_DATA, /* data: */ ITYPE_INPUT, /* input: */ ITYPE_PWINPUT /* pwinput: */ } itype_t; static char *me; static int verbose = 0; static char *buf; static size_t buf_size = 0; static void iterative_io(int pid, unsigned short port); static int single_io(int pid, unsigned short port, socket_t socket, int infd, int outfd, int fn, char *cmd, char **data_ret, char **prompt_ret, itype_t *itype); static void interactive_io(int port, const char *emulator_name, const char *help_name, const char *localization); #if defined(HAVE_LIBREADLINE) /*[*/ static char **attempted_completion(); static char *completion_entry(const char *, int); #endif /*]*/ /* Localization data. */ typedef struct i18n { struct i18n *next; char *key; char *translation; } i18n_t; i18n_t *i18n = NULL; #define BANNER "x3270if.banner" #define QUIT "x3270if.quit" static void x3270if_usage(void) { fprintf(stderr, "\ usage:\n\ %s [options] \"action[(param[,...])]\"\n\ execute the named action\n\ %s [options] -s field\n\ display status field 0..12\n\ %s [options] -S\n\ display all status fields\n\ %s [options] -i\n\ shuttle commands and responses between stdin/stdout and emulator\n\ %s [options] -I [-H ]\n\ interactive command window\n\ %s --version\n\ options:\n\ -v verbose operation\n" #if !defined(_WIN32) /*[*/ " -p pid connect to process \n" #endif /*]*/ " -t port connect to TCP port \n", me, me, me, me, me, me); exit(__LINE__); } /* Get a file descriptor from the environment. */ static int fd_env(const char *name, bool required) { char *fdname; int fd; fdname = getenv(name); if (fdname == NULL) { if (required) { fprintf(stderr, "%s: %s not set in the environment\n", me, name); exit(__LINE__); } else { return -1; } } fd = atoi(fdname); if (fd <= 0) { fprintf(stderr, "%s: invalid value '%s' for %s\n", me, fdname, name); exit(__LINE__); } if (verbose) { fprintf(stderr, "%s is %d\n", name, fd); } return fd; } int main(int argc, char *argv[]) { int c; int fn = NO_STATUS; char *ptr; int iterative = 0; int pid = 0; unsigned short port = 0; const char *emulator_name = NULL; const char *help_name = NULL; const char *localization = NULL; #if !defined(_WIN32) /*[*/ bool force_pipes = false; #endif /*]*/ #if defined(_WIN32) /*[*/ if (sockstart() < 0) { exit(__LINE__); } #endif /*]*/ /* Identify yourself. */ if ((me = strrchr(argv[0], DIRSEP)) != NULL) { me++; } else { me = argv[0]; } if (argc > 1 && !strcmp(argv[1], "--version")) { printf("%s\n", build); return 0; } /* Parse options. */ opterr = 0; while ((c = getopt(argc, argv, OPTS)) != -1) { switch (c) { case 'H': help_name = optarg; break; case 'i': if (fn >= 0) { x3270if_usage(); } iterative++; break; case 'I': if (fn > 0) { x3270if_usage(); } iterative++; emulator_name = optarg; break; case 'L': localization = optarg; break; #if !defined(_WIN32) /*[*/ case 'p': pid = (int)strtoul(optarg, &ptr, 0); if (ptr == optarg || *ptr != '\0' || pid <= 0) { fprintf(stderr, "%s: Invalid process ID: '%s'\n", me, optarg); x3270if_usage(); } break; case 'P': force_pipes = true; break; #endif /*]*/ case 's': if (fn >= 0 || iterative) { x3270if_usage(); } fn = (int)strtol(optarg, &ptr, 0); if (ptr == optarg || *ptr != '\0' || fn < 0) { fprintf(stderr, "%s: Invalid field number: '%s'\n", me, optarg); x3270if_usage(); } break; case 'S': if (fn >= 0 || iterative) { x3270if_usage(); } fn = ALL_FIELDS; break; case 't': port = (unsigned short)strtoul(optarg, &ptr, 0); if (ptr == optarg || *ptr != '\0' || port <= 0) { fprintf(stderr, "%s: Invalid port: '%s'\n", me, optarg); x3270if_usage(); } break; case 'v': verbose++; break; default: x3270if_usage(); break; } } /* Validate positional arguments. */ if (optind == argc) { /* No positional arguments. */ if (fn == NO_STATUS && !iterative) { x3270if_usage(); } } else { /* Got positional arguments. */ if (iterative) { x3270if_usage(); } if (argc - optind > 1) { x3270if_usage(); } } if (pid && port) { x3270if_usage(); } if (help_name != NULL && emulator_name == NULL) { x3270if_usage(); } #if !defined(_WIN32) /*[*/ /* Ignore broken pipes. */ signal(SIGPIPE, SIG_IGN); #endif /*]*/ /* Do the I/O. */ if (iterative && emulator_name != NULL) { interactive_io(port, emulator_name, help_name, localization); } else if (iterative) { iterative_io(pid, port); } else { int infd = -1; int outfd = -1; #if !defined(_WIN32) /*[*/ if (force_pipes) { infd = fd_env(OUTPUT_ENV, true); outfd = fd_env(INPUT_ENV, true); } #endif /*]*/ return single_io(pid, port, INVALID_SOCKET, infd, outfd, fn, argv[optind], NULL, NULL, NULL); } return 0; } #if !defined(_WIN32) /*[*/ /* Connect to a Unix-domain socket. */ static socket_t usock(int pid) { struct sockaddr_un ssun; socket_t fd; fd = socket(AF_UNIX, SOCK_STREAM, 0); if (fd == INVALID_SOCKET) { perror("socket"); exit(__LINE__); } memset(&ssun, '\0', sizeof(struct sockaddr_un)); ssun.sun_family = AF_UNIX; snprintf(ssun.sun_path, sizeof(ssun.sun_path), "/tmp/x3sck.%d", pid); if (connect(fd, (struct sockaddr *)&ssun, sizeof(ssun)) < 0) { perror("connect"); exit(__LINE__); } return fd; } #endif /*]*/ /* Connect to a TCP socket. */ static socket_t tsock(unsigned short port) { struct sockaddr_in sin; socket_t fd; fd = socket(AF_INET, SOCK_STREAM, 0); if (fd == INVALID_SOCKET) { #if defined(_WIN32) /*[*/ win32_perror("socket"); #else /*][*/ perror("socket"); #endif /*]*/ exit(__LINE__); } memset(&sin, '\0', sizeof(struct sockaddr_in)); sin.sin_family = AF_INET; sin.sin_port = htons(port); sin.sin_addr.s_addr = htonl(INADDR_LOOPBACK); if (connect(fd, (struct sockaddr *)&sin, sizeof(sin)) < 0) { #if defined(_WIN32) /*[*/ win32_perror("connect(%u)", port); #else /*][*/ perror("connect"); #endif /*]*/ exit(__LINE__); } return fd; } /* Get the input type from a buffer. */ static itype_t get_itype(const char *buf) { if (!strncmp(buf, DATA_PREFIX, PREFIX_LEN)) { return ITYPE_DATA; } if (!strncmp(buf, INPUT_PREFIX, PREFIX_LEN)) { return ITYPE_INPUT; } if (!strncmp(buf, PWINPUT_PREFIX, PREFIX_LEN)) { return ITYPE_PWINPUT; } return ITYPE_DATA; /* wrong */ } /* Do a single command, and interpret the results. */ static int single_io(int pid, unsigned short port, socket_t socket, int xinfd, int xoutfd, int fn, char *cmd, char **data_ret, char **prompt_ret, itype_t *itype) { int port_env; int infd = -1, outfd = -1; socket_t insocket = INVALID_SOCKET, outsocket = INVALID_SOCKET; bool is_socket = false; char *status = NULL; int nr; int xs = -1; int nw = 0; char rbuf[IBS]; size_t sl = 0; int done = 0; char *cmd_nl; char *wstr; size_t ret_sl = 0; itype_t input_itype = ITYPE_DATA; /* Verify the environment and open files. */ if (socket != INVALID_SOCKET) { insocket = socket; outsocket = socket; is_socket = true; } else if (xinfd != -1 && xoutfd != -1) { infd = xinfd; outfd = xoutfd; } else { #if !defined(_WIN32) /*[*/ if (pid) { insocket = outsocket = usock(pid); is_socket = true; } else #endif /*]*/ if (port) { insocket = outsocket = tsock(port); is_socket = true; } else if ((port_env = fd_env(PORT_ENV, FD_ENV_REQUIRED)) >= 0) { insocket = outsocket = tsock(port_env); is_socket = true; } else { #if defined(_WIN32) /*[*/ return -1; #else /*][*/ infd = fd_env(OUTPUT_ENV, true); outfd = fd_env(INPUT_ENV, true); #endif /*]*/ } if ((!is_socket && infd < 0) || (is_socket && insocket == INVALID_SOCKET)) { perror("x3270if: input"); exit(__LINE__); } if ((!is_socket && outfd < 0) || (is_socket && outsocket == INVALID_SOCKET)) { perror("x3270if: output"); exit(__LINE__); } } if (prompt_ret != NULL) { *prompt_ret = NULL; } if (itype != NULL) { *itype = ITYPE_DATA; } /* Speak to x3270. */ if (verbose) { fprintf(stderr, "i+ out %s\n", (cmd != NULL) ? cmd : ""); } if (cmd != NULL) { cmd_nl = Malloc(strlen(cmd) + 2); sprintf(cmd_nl, "%s\n", cmd); wstr = cmd_nl; } else { cmd_nl = NULL; wstr = "\n"; } if (is_socket) { nw = send(outsocket, wstr, (int)strlen(wstr), 0); } else { nw = write(outfd, wstr, (int)strlen(wstr)); } if (nw < 0) { if (is_socket) { #if defined(_WIN32) /*[*/ win32_perror("x3270if: send"); #else /*][*/ perror("x3270if: send"); #endif /*]*/ } else { perror("x3270if: write"); } exit(__LINE__); } if (cmd_nl != NULL) { Free(cmd_nl); } if (data_ret != NULL) { *data_ret = NULL; } #if defined(_WIN32) /*[*/ retry: #endif /*]*/ /* Get the answer. */ while (!done && (nr = (is_socket? recv(insocket, rbuf, IBS, 0): read(infd, rbuf, IBS))) > 0) { int i; bool get_more = false; i = 0; do { /* Copy from rbuf into buf until '\n'. */ while (i < nr && rbuf[i] != '\n') { if (sl + 2 > buf_size) { buf = Realloc(buf, buf_size + IBS); buf_size += IBS; } buf[sl++] = rbuf[i++]; } if (rbuf[i] == '\n') { i++; } else { /* Go get more input. */ get_more = true; break; } /* Process one line of output. */ buf[sl] = '\0'; if (verbose) { fprintf(stderr, "i+ in %s\n", buf); } if (!strcmp(buf, PROMPT_OK)) { fflush(stdout); xs = 0; done = 1; break; } else if (!strcmp(buf, PROMPT_ERROR)) { fflush(stdout); xs = 1; done = 1; break; } else if (!strncmp(buf, DATA_PREFIX, PREFIX_LEN) || !strncmp(buf, INPUT_PREFIX, PREFIX_LEN) || !strncmp(buf, PWINPUT_PREFIX, PREFIX_LEN)) { /* * The protocol is somewhat ambiguous: You could get multiple * inpt: and inpw: in the same response. * We only keep the last. */ if (data_ret != NULL) { itype_t this_itype; this_itype = get_itype(buf); if (this_itype == ITYPE_INPUT || this_itype == ITYPE_PWINPUT) { input_itype = this_itype; if (*prompt_ret != NULL) { Free(*prompt_ret); } *prompt_ret = NewString(buf + PREFIX_LEN); } else { *data_ret = Realloc(*data_ret, ret_sl + strlen(buf + PREFIX_LEN) + 2); *(*data_ret + ret_sl) = '\0'; strcat(strcat(*data_ret, buf + PREFIX_LEN), "\n"); ret_sl += strlen(buf + PREFIX_LEN) + 1; } } else { if (printf("%s\n", buf + PREFIX_LEN) < 0) { perror("x3270if: printf"); exit(__LINE__); } } } else { Replace(status, NewString(buf)); } /* Get ready for the next. */ sl = 0; } while (i < nr); if (get_more) { get_more = false; continue; } } if (nr < 0) { if (is_socket) { #if defined(_WIN32) /*[*/ if (WSAGetLastError() == WSAEWOULDBLOCK) { goto retry; } win32_perror("x3270if: recv"); #else /*][*/ perror("recv"); #endif /*]*/ } else { perror("read"); } exit(__LINE__); } else if (nr == 0) { fprintf(stderr, "x3270if: unexpected EOF\n"); exit(__LINE__); } if (fflush(stdout) < 0) { perror("x3270if: fflush"); exit(__LINE__); } /* Print status, if that's what they want. */ if (fn != NO_STATUS) { char *sf = NULL; char *sb = status; int rc; if (fn == ALL_FIELDS) { rc = printf("%s\n", status); } else { do { if (!fn--) { break; } sf = strtok(sb, " \t"); sb = NULL; } while (sf != NULL); rc = printf("%s\n", (sf != NULL) ? sf : ""); } if (rc < 0) { perror("x3270if: printf"); exit(__LINE__); } } if (fflush(stdout) < 0) { perror("x3270if: fflush"); exit(__LINE__); } if (is_socket && socket == INVALID_SOCKET) { shutdown(insocket, 2); #if defined(_WIN32) /*[*/ closesocket(insocket); #else /*][*/ close(insocket); if (verbose) { fprintf(stderr, "closed %d\n", insocket); } #endif /*]*/ } if (itype != NULL) { *itype = input_itype; } Free(status); return xs; } /* Fetch the ports from the environment. */ static void get_ports(socket_t *socket, int *infd, int *outfd) { #if !defined(_WIN32) /*[*/ int socketport = -1; if (socket != NULL) { socketport = fd_env(PORT_ENV, false); } if (socketport == -1) { *infd = fd_env(OUTPUT_ENV, true); *outfd = fd_env(INPUT_ENV, true); } else { *socket = tsock(socketport); } if (verbose) { fprintf(stderr, "socket: %d, input: %d, output: %d\n", (socket != NULL)? *socket: -1, *infd, *outfd); } #else /*][*/ int socketport = fd_env(PORT_ENV, true); *socket = tsock(socketport); if (verbose) { fprintf(stderr, "port: %d\n", socketport); } #endif /*]*/ } #if !defined(_WIN32) /*[*/ /* Act as a passive pipe to the emulator. */ static void iterative_io(int pid, unsigned short port) { # define N_IO 2 struct { const char *name; int rfd, wfd; char buf[IBS]; int offset, count; } io[N_IO]; /* [0] is script->emulator, [1] is emulator->script */ fd_set rfds, wfds; int fd_max = 0; int i; int port_env = -1; /* Get the x3270 file descriptors. */ io[0].name = "script->emulator"; io[0].rfd = fileno(stdin); if (pid) { io[0].wfd = usock(pid); } else if (port) { io[0].wfd = tsock(port); } else if ((port_env = fd_env(PORT_ENV, FD_ENV_REQUIRED)) >= 0) { io[0].wfd = tsock(port_env); } else { io[0].wfd = fd_env(INPUT_ENV, true); } io[1].name = "emulator->script"; if (pid || port || (port_env >= 0)) { io[1].rfd = dup(io[0].wfd); } else { io[1].rfd = fd_env(OUTPUT_ENV, true); } io[1].wfd = fileno(stdout); for (i = 0; i < N_IO; i++) { if (io[i].rfd > fd_max) { fd_max = io[i].rfd; } if (io[i].wfd > fd_max) { fd_max = io[i].wfd; } io[i].offset = 0; io[i].count = 0; } fd_max++; for (;;) { int rv; FD_ZERO(&rfds); FD_ZERO(&wfds); for (i = 0; i < N_IO; i++) { if (io[i].count) { FD_SET(io[i].wfd, &wfds); if (verbose) { fprintf(stderr, "enabling output %s %d\n", io[i].name, io[i].wfd); } } else { FD_SET(io[i].rfd, &rfds); if (verbose) { fprintf(stderr, "enabling input %s %d\n", io[i].name, io[i].rfd); } } } if ((rv = select(fd_max, &rfds, &wfds, NULL, NULL)) < 0) { perror("x3270if: select"); exit(__LINE__); } if (verbose) { fprintf(stderr, "select->%d\n", rv); } for (i = 0; i < N_IO; i++) { if (io[i].count) { if (FD_ISSET(io[i].wfd, &wfds)) { rv = write(io[i].wfd, io[i].buf + io[i].offset, io[i].count); if (rv < 0) { fprintf(stderr, "x3270if: write(%s): %s", io[i].name, strerror(errno)); exit(__LINE__); } io[i].offset += rv; io[i].count -= rv; if (verbose) { fprintf(stderr, "write(%s)->%d\n", io[i].name, rv); } } } else if (FD_ISSET(io[i].rfd, &rfds)) { rv = read(io[i].rfd, io[i].buf, IBS); if (rv < 0) { fprintf(stderr, "x3270if: read(%s): %s", io[i].name, strerror(errno)); exit(__LINE__); } if (rv == 0) { exit(0); } io[i].offset = 0; io[i].count = rv; if (verbose) { fprintf(stderr, "read(%s)->%d\n", io[i].name, rv); } } } } } #else /*][*/ static HANDLE stdin_thread; static HANDLE stdin_enable_event, stdin_done_event; static char stdin_buf[1024]; static int stdin_nr; static int stdin_error; /* * stdin input thread * * Endlessly: * - waits for stdin_enable_event * - reads from stdin * - leaves the input in stdin_buf and the length in stdin_nr * - sets stdin_done_event * * If there is a read error, leaves -1 in stdin_nr and a Windows error code in * stdin_error. */ static DWORD WINAPI stdin_read(LPVOID lpParameter) { for (;;) { DWORD rv; rv = WaitForSingleObject(stdin_enable_event, INFINITE); switch (rv) { case WAIT_ABANDONED: case WAIT_TIMEOUT: case WAIT_FAILED: stdin_nr = -1; stdin_error = GetLastError(); SetEvent(stdin_done_event); break; case WAIT_OBJECT_0: stdin_nr = read(0, stdin_buf, sizeof(stdin_buf)); if (stdin_nr < 0) { stdin_error = GetLastError(); } SetEvent(stdin_done_event); break; } } return 0; } /* Act as a passive pipe to the emulator. */ static void iterative_io(int pid, unsigned short port) { char *port_env; socket_t s; struct sockaddr_in sin; HANDLE socket_event; HANDLE ha[2]; DWORD ret; char buf[1024]; int nr; if (!port) { port_env = getenv(PORT_ENV); if (port_env == NULL) { fprintf(stderr, "Must specify port or put port in " PORT_ENV ".\n"); exit(__LINE__); } port = atoi(port_env); if (port <= 0 || (port & ~0xffff)) { fprintf(stderr, "Invalid " PORT_ENV ".\n"); exit(__LINE__); } } /* Open the socket. */ s = socket(PF_INET, SOCK_STREAM, 0); if (s < 0) { win32_perror("socket"); exit(__LINE__); } memset(&sin, '\0', sizeof(sin)); sin.sin_family = AF_INET; sin.sin_port = htons(port); sin.sin_addr.s_addr = htonl(INADDR_LOOPBACK); if (connect(s, (struct sockaddr *)&sin, sizeof(sin)) < 0) { win32_perror("connect(%u) failed", port); exit(__LINE__); } if (verbose) { fprintf(stderr, "\n", port); } socket_event = CreateEvent(NULL, FALSE, FALSE, NULL); if (socket_event == NULL) { win32_perror("CreateEvent failed"); exit(__LINE__); } if (WSAEventSelect(s, socket_event, FD_READ | FD_CLOSE) != 0) { win32_perror("WSAEventSelect failed"); exit(__LINE__); } /* Create a thread to read data from the socket. */ stdin_enable_event = CreateEvent(NULL, FALSE, FALSE, NULL); stdin_done_event = CreateEvent(NULL, FALSE, FALSE, NULL); stdin_thread = CreateThread(NULL, 0, stdin_read, NULL, 0, NULL); if (stdin_thread == NULL) { win32_perror("CreateThread failed"); exit(__LINE__); } SetEvent(stdin_enable_event); ha[0] = socket_event; ha[1] = stdin_done_event; for (;;) { ret = WaitForMultipleObjects(2, ha, FALSE, INFINITE); switch (ret) { case WAIT_OBJECT_0: /* socket input */ nr = recv(s, buf, sizeof(buf), 0); if (verbose) { fprintf(stderr, "<%d byte%s from socket>\n", nr, (nr == 1)? "": "s"); } if (nr < 0) { win32_perror("recv failed"); exit(__LINE__); } if (nr == 0) { exit(__LINE__); } fwrite(buf, 1, nr, stdout); fflush(stdout); break; case WAIT_OBJECT_0 + 1: /* stdin input */ if (verbose) { fprintf(stderr, "<%d byte%s from stdin>\n", stdin_nr, (stdin_nr == 1)? "": "s"); } if (stdin_nr < 0) { fprintf(stderr, "stdin read failed: %s\n", win32_strerror(stdin_error)); exit(__LINE__); } if (stdin_nr == 0) { exit(0); } send(s, stdin_buf, stdin_nr, 0); SetEvent(stdin_enable_event); break; case WAIT_FAILED: win32_perror("WaitForMultipleObjects failed"); exit(__LINE__); default: fprintf(stderr, "Unexpected return %d from " "WaitForMultipleObjects\n", (int)ret); exit(__LINE__); } } } #endif /*]*/ #if defined(HAVE_LIBREADLINE) /*[*/ static char ** attempted_completion(const char *text, int start, int end) { /* * At some point, we may get the action list from the emulator, but for * now, just fail. */ return NULL; } static char * completion_entry(const char *text, int state) { /* * At some point, we may get the action list from the emulator, but for * now, just fail. */ return NULL; } /* The command line read by readline. */ static char *readline_command; /* True if readline is finished reading a command. */ static bool readline_done = false; /* Handle a command line. */ static void rl_handler(char *command) { /* * readline's callback handler API doesn't allow context to be passed in or * out of the handler. So the only way for it to communicate with the * function that calls rl_callback_read_char() is through global variables. */ readline_done = true; readline_command = command; /* * Remove the callback handler. If we don't remove it, readline() will * display the prompt as soon as this function returns. */ rl_callback_handler_remove(); } #endif /*]*/ #if defined(_WIN32) /*[*/ static void set_text_attribute(HANDLE out, WORD attributes) { if (!SetConsoleTextAttribute(out, attributes)) { win32_perror("Can't set console text attribute"); exit(__LINE__); } } #endif /*[*/ /* Copy and translate a translation. */ static void xlcpy(char *dest, const char *src) { bool backslash = false; char c; /* Skip spaces. */ while ((c = *src) == ' ') { src++; } /* Copy, translating certain escape sequences. */ while ((c = *src++) != '\0') { if (backslash) { if (c == 'n') { *dest++ = '\n'; } else if (c != 'r') { *dest++ = c; } backslash = false; } else if (c == '\\') { backslash = true; } else { *dest++ = c; } } *dest = '\0'; } /* Read the localization file. */ static void read_localization(const char *filename) { FILE *f = fopen(filename, "r"); char buf[1024]; char *s; int line = 1; if (f == NULL) { perror(filename); exit(__LINE__); } while ((s = fgets(buf, sizeof(buf), f)) != NULL) { size_t sl; char *colon; i18n_t *ie; sl = strlen(s); if (sl > 0 && s[sl - 1] == '\n') { s[sl - 1] = '\0'; } colon = strchr(s, ':'); if (colon == NULL || colon == s) { fprintf(stderr, "%s, line %d: bad format\n", filename, line); exit(__LINE__); } ie = (i18n_t *)Malloc(sizeof(i18n_t) + sl + 2); ie->key = (char *)(ie + 1); strncpy(ie->key, s, colon - s); ie->key[colon - s] = '\0'; ie->translation = ie->key + strlen(ie->key) + 1; xlcpy(ie->translation, colon + 1); ie->next = i18n; i18n = ie; } fclose(f); } /* Get a localized string. */ static const char * i18n_get(const char *key) { i18n_t *ie; for (ie = i18n; ie != NULL; ie = ie->next) { if (!strcmp(key, ie->key)) { return ie->translation; } } return NULL; } #if !defined(_WIN32) /*[*/ static char * tigetstr_def(const char *name, char *def) { char *s = tigetstr((char *)name); if (s != NULL && s != (char *)-1) { return s; } return def; } /* Get an ANSI color setting attribute. */ static const char * xsetaf(const char *setaf, int color, const char *sgr) { static char *x_ret = NULL; /* Clean up the previous value. */ if (x_ret != NULL) { Free(x_ret); x_ret = NULL; } if (setaf != NULL) { char *a, *s; /* Encode AF. */ a = tiparm((char *)setaf, color); if (sgr == NULL) { return a; } /* Save encoded AF and encode SGR. */ a = NewString(a); s = tiparm((char *)sgr, 0, 0, 0, 0, 0, 1, 0, 0, 0); x_ret = Malloc(strlen(a) + strlen(s) + 1); sprintf(x_ret, "%s%s", s, a); Free(a); /* Return combined SGR and AF. */ return x_ret; } else { return ""; } } #endif /*]*/ static void interactive_io(int port, const char *emulator_name, const char *help_name, const char *localization) { char *prompt, *real_prompt; socket_t s = INVALID_SOCKET; int infd = -1, outfd = -1; size_t prompt_len; char *data_ret; char *prompt_ret; bool aux_input = false; itype_t itype; const char *l; #if defined(_WIN32) /*[*/ HANDLE conout; CONSOLE_SCREEN_BUFFER_INFO info; HANDLE socket_event; #else /*][*/ int colors; char *setaf; char *op; char *sgr; char *sgr0; char *prompt_setaf; int color_offset = 0; #endif /*]*/ #if !defined(_WIN32) /*[*/ /* Set up terminfo and check for ANSI color. */ setupterm(NULL, fileno(stdout), NULL); colors = tigetnum("colors"); setaf = tigetstr_def("setaf", NULL); op = tigetstr_def("op", ""); if (!op[0]) { setaf = NULL; } sgr = tigetstr_def("sgr", NULL); sgr0 = tigetstr_def("sgr0", ""); if (!sgr0[0]) { sgr = NULL; } if (colors < 8 || setaf == NULL) { /* No usable color. */ setaf = NULL; op = ""; sgr = NULL; sgr0 = ""; } else if (colors >= 16 && sgr != NULL) { /* Use brighter colors. */ color_offset = 8; sgr = NULL; sgr0 = ""; } if (op[0] && sgr0[0]) { /* Combine OP and SGR0. */ char *s = Malloc(strlen(op) + strlen(sgr0) + 1); sprintf(s, "%s%s", op, sgr0); op = s; } #endif if (port) { s = tsock(port); } else { #if !defined(_WIN32) /*[*/ get_ports(&s, &infd, &outfd); #else /*][*/ get_ports(&s, NULL, NULL); #endif /*]*/ } #if defined(HAVE_LIBREADLINE) /*[*/ # define MLEN 1 # define LEFT "\001" # define RIGHT "\002" #else /*]*/ # define MLEN 0 # define LEFT "" # define RIGHT "" #endif /*]*/ /* Localize. */ if (localization != NULL) { read_localization(localization); } /* Announce our capabilities. */ data_ret = NULL; single_io(0, 0, s, infd, outfd, NO_STATUS, "Capabilities(interactive)", &data_ret, NULL, &itype); /* Set up the prompt. */ #if !defined(_WIN32) /*[*/ prompt_setaf = (char *)xsetaf(setaf, color_offset + COLOR_BLUE, sgr); prompt_setaf = Malloc(strlen(prompt_setaf) + 1); strcpy(prompt_setaf, xsetaf(setaf, color_offset + COLOR_BLUE, sgr)); prompt_len = MLEN + strlen(prompt_setaf) + MLEN + strlen(emulator_name) + strlen("> ") + MLEN + strlen(op) + MLEN + 1; prompt = Malloc(prompt_len); snprintf(prompt, prompt_len, LEFT "%s" RIGHT "%s> " LEFT "%s" RIGHT, prompt_setaf, emulator_name, op); #else /*][*/ prompt_len = strlen(emulator_name) + strlen("> ") + 1; prompt = Malloc(prompt_len); snprintf(prompt, prompt_len, "%s> ", emulator_name); #endif /*]*/ real_prompt = prompt; # if defined(HAVE_LIBREADLINE) /*[*/ /* Set up readline. */ rl_readline_name = (char *)emulator_name; rl_initialize(); rl_attempted_completion_function = attempted_completion; # if defined(RL_READLINE_VERSION) && (RL_READLINE_VERSION > 0x0402) /*[*/ rl_completion_entry_function = completion_entry; # else /*][*/ rl_completion_entry_function = (Function *)completion_entry; # endif /*]*/ # endif /*]*/ #if defined(_WIN32) /*[*/ /* Open the console handle. */ conout = CreateFile("CONOUT$", GENERIC_READ | GENERIC_WRITE, FILE_SHARE_WRITE, NULL, OPEN_EXISTING, 0, NULL); if (conout == NULL) { win32_perror("Can't open console output handle"); exit(__LINE__); } if (!GetConsoleScreenBufferInfo(conout, &info)) { win32_perror("Can't get console info"); exit(__LINE__); } /* wx3270 speaks Unicode. */ SetConsoleOutputCP(65001); /* Set the title. */ SetConsoleTitle(prompt); /* Set up the stdin thread. */ stdin_enable_event = CreateEvent(NULL, FALSE, FALSE, NULL); stdin_done_event = CreateEvent(NULL, FALSE, FALSE, NULL); stdin_thread = CreateThread(NULL, 0, stdin_read, NULL, 0, NULL); if (stdin_thread == NULL) { win32_perror("Cannot create stdin thread"); exit(__LINE__); } /* Set up the socket event. */ socket_event = CreateEvent(NULL, FALSE, FALSE, NULL); if (socket_event == NULL) { win32_perror("Cannot create socket event"); exit(__LINE__); } if (WSAEventSelect(s, socket_event, FD_CLOSE) != 0) { win32_perror("Cannot set socket events"); exit(__LINE__); } #endif /*]*/ /* Introduce yourself. */ l = i18n_get(BANNER); if (l != NULL) { printf("%s\n", l); } else { printf("%s Prompt\n\n", emulator_name); printf("To execute one action and close this window, end the command line with '/'.\n"); printf("To close this window, enter just '/' as the command line.\n"); if (help_name != NULL) { printf("To get help, use the '%s()' action.\n", help_name); } } #if !defined(_WIN32) /*[*/ printf("%s", xsetaf(setaf, color_offset + COLOR_YELLOW, sgr)); # else /*][*/ fflush(stdout); set_text_attribute(conout, FOREGROUND_GREEN | FOREGROUND_RED); #endif /*]*/ l = i18n_get(QUIT); if (l != NULL) { printf("%s", l); } else { printf("Note: The 'Quit()' action will cause %s to exit.", emulator_name); } #if !defined(_WIN32) /*[*/ printf("%s", op); # else /*][*/ fflush(stdout); set_text_attribute(conout, info.wAttributes); #endif /*]*/ printf("\n\n"); for (;;) { char *command; int rc; char *nl; size_t sl; bool done = false; #if !defined(_WIN32) /*[*/ # if !defined(HAVE_LIBREADLINE) /*[*/ char inbuf[1024]; # endif /*]*/ # else /*][*/ HANDLE ha[2]; DWORD rv; #endif /*]*/ /* Display the prompt. */ #if !defined(_WIN32) /*[*/ # if defined(HAVE_LIBREADLINE) /*[*/ rl_callback_handler_install(prompt, &rl_handler); # else /*][*/ fputs(prompt, stdout); fflush(stdout); # endif /*]*/ #else /*][*/ if (!aux_input) { set_text_attribute(conout, FOREGROUND_INTENSITY | FOREGROUND_BLUE); } fputs(prompt, stdout); fflush(stdout); if (!aux_input) { set_text_attribute(conout, info.wAttributes); } /* Enable console input. */ SetEvent(stdin_enable_event); #endif /*]*/ /* Wait for socket or console input. */ #if !defined(_WIN32) /*[*/ do { fd_set rfds; int mfd = (s == INVALID_SOCKET)? infd: s; FD_ZERO(&rfds); FD_SET(0, &rfds); FD_SET(mfd, &rfds); select(mfd + 1, &rfds, NULL, NULL, NULL); if (FD_ISSET(mfd, &rfds)) { /* Pipe input (EOF). */ done = true; break; } if (FD_ISSET(0, &rfds)) { /* Keyboard input. */ # if defined(HAVE_LIBREADLINE) /*[*/ rl_callback_read_char(); if (!readline_done) { /* No input yet. */ continue; } command = readline_command; # else /*][*/ command = fgets(inbuf, sizeof(inbuf), stdin); # endif /*]*/ if (command == NULL) { done = true; } break; } } while (true); if (done) { # if defined(HAVE_LIBREADLINE) /*[*/ rl_callback_handler_remove(); # endif /*]*/ exit(0); } # if defined(HAVE_LIBREADLINE) /*[*/ readline_command = NULL; readline_done = false; # endif /*]*/ # else /*][*/ ha[0] = socket_event; ha[1] = stdin_done_event; rv = WaitForMultipleObjects(2, ha, FALSE, INFINITE); switch (rv) { case WAIT_OBJECT_0: /* socket close */ exit(0); break; case WAIT_OBJECT_0 + 1: /* console input */ if (stdin_nr <= 0) { exit(0); } command = stdin_buf; break; case WAIT_FAILED: win32_perror("WaitForMultipleObjects failed"); exit(__LINE__); break; default: fprintf(stderr, "Unexpected return %d from " "WaitForMultipleObjects\n", (int)rv); fflush(stderr); exit(__LINE__); break; } #endif /*]*/ /* We have a line of input. */ if ((nl = strchr(command, '\n')) != NULL) { *nl = '\0'; } sl = strlen(command); if (sl > 0 && command[sl - 1] == '/') { command[--sl] = '\0'; done = true; } # if defined(HAVE_LIBREADLINE) /*[*/ if (!aux_input && command[0]) { add_history(command); } # endif /*]*/ data_ret = NULL; prompt_ret = NULL; if (!aux_input) { rc = single_io(0, 0, s, infd, outfd, NO_STATUS, command, &data_ret, &prompt_ret, &itype); } else { char *command_base64 = base64_encode(command); char *response = Malloc(strlen(command_base64) + 128); if (response == NULL) { fprintf(stderr, "Out of memory\n"); exit(__LINE__); } sprintf(response, RESUME_INPUT "(%s)", command_base64[0]? command_base64: "\"\""); Free(command_base64); rc = single_io(0, 0, s, infd, outfd, NO_STATUS, response, &data_ret, &prompt_ret, &itype); Free(response); Free(prompt); prompt = real_prompt; aux_input = false; } # if defined(HAVE_LIBREADLINE) /*[*/ Free(command); # endif /*]*/ if (prompt_ret != NULL) { prompt = base64_decode(prompt_ret); Free(prompt_ret); aux_input = true; } if (data_ret != NULL) { if ((sl = strlen(data_ret)) > 0 && data_ret[sl - 1] == '\n') { data_ret[sl - 1] = '\0'; } if (*data_ret) { #if !defined(_WIN32) /*[*/ if (aux_input) { printf("%s\n", data_ret); } else { if (rc) { printf("%s%s%s\n", xsetaf(setaf, color_offset + COLOR_RED, sgr), data_ret, op); } else { printf("%s\n", data_ret); } } # else /*][*/ if (!aux_input) { set_text_attribute(conout, rc? (FOREGROUND_INTENSITY | FOREGROUND_RED): info.wAttributes); } fputs(data_ret, stdout); fflush(stdout); if (!aux_input) { set_text_attribute(conout, info.wAttributes); } fputc('\n', stdout); #endif /*]*/ } Free(data_ret); fflush(stdout); } if (done) { exit(0); } } } void Error(const char *msg) { fprintf(stderr, "%s\n", msg); exit(1); } suite3270-4.1/Common/x3270if.man.m4000066400000000000000000000042601413735575200164070ustar00rootroot00000000000000dnl Copyright (c) 1999-2009, 2013, 2018, 2020 Paul Mattes. dnl All rights reserved. dnl dnl Redistribution and use in source and binary forms, with or without dnl modification, are permitted provided that the following conditions are met: dnl * Redistributions of source code must retain the above copyright dnl notice, this list of conditions and the following disclaimer. dnl * Redistributions in binary form must reproduce the above copyright dnl notice, this list of conditions and the following disclaimer in the dnl documentation and/or other materials provided with the distribution. dnl * Neither the names of Paul Mattes nor the names of his contributors dnl may be used to endorse or promote products derived from this software dnl without specific prior written permission. dnl dnl THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS OR IMPLIED dnl WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF dnl MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO dnl EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, dnl SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED dnl TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR dnl PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF dnl LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING dnl NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS dnl SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. XX_TH(X3270IF,1,XX_DATE) XX_SH(Name) x3270if XX_DASHED() script interface to 3270 emulators XX_SH(Synopsis) XX_FB(x3270if) [option]... [ XX_FI(action) ] XX_BR XX_FB(x3270if) [option]... XX_DASHED(i) XX_BR XX_FB(x3270if) [option]... XX_DASHED(I) XX_FI(emulator-name) [XX_DASHED(H) XX_FI(help-action)] XX_SH(Description) XX_FB(x3270if) provides an interface between scripts and the 3270 emulators x3270, c3270, wc3270 s3270 and b3270. XX_SH(Wiki) Primary documentation for XX_PRODUCT is on the XX_FB(x3270 Wiki), XX_LINK(https://x3270.miraheze.org/wiki/Main_Page,https://x3270.miraheze.org/wiki/Main_Page). XX_SH(Version) XX_PRODUCT XX_VERSION_NUMBER suite3270-4.1/Common/xio.c000066400000000000000000000121461413735575200152360ustar00rootroot00000000000000/* * Copyright (c) 1993-2013, 2015, 2018, 2020 Paul Mattes. * Copyright (c) 1990, Jeff Sparkes. * Copyright (c) 1989, Georgia Tech Research Corporation (GTRC), Atlanta, * GA 30332. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the names of Paul Mattes, Jeff Sparkes, GTRC nor their * contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES, JEFF SPARKES AND GTRC "AS IS" * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL PAUL MATTES, JEFF SPARKES OR * GTRC BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, * OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * xio.c * Low-level I/O setup functions and exit code. */ #include "globals.h" #include "actions.h" #include "names.h" #include "telnet.h" #include "trace.h" #include "utils.h" #include "xio.h" /* Globals. */ int x3270_exit_code = 0; bool x3270_exiting = false; /* Statics. */ static ioid_t ns_read_id; static ioid_t ns_exception_id; static bool reading = false; static bool excepting = false; /* * Called to set up input on a new network connection. */ void x_add_input(iosrc_t iosrc) { ns_exception_id = AddExcept(iosrc, net_exception); excepting = true; ns_read_id = AddInput(iosrc, net_input); reading = true; } /* * Called when an exception is received to disable further exceptions. */ void x_except_off(void) { if (excepting) { RemoveInput(ns_exception_id); excepting = false; } } /* * Called when exception processing is complete to re-enable exceptions. * This includes removing and restoring reading, so the exceptions are always * processed first. */ void x_except_on(iosrc_t iosrc) { if (excepting) { return; } if (reading) { RemoveInput(ns_read_id); } ns_exception_id = AddExcept(iosrc, net_exception); excepting = true; if (reading) { ns_read_id = AddInput(iosrc, net_input); } } /* * Called to disable input on a closing network connection. */ void x_remove_input(void) { if (reading) { RemoveInput(ns_read_id); reading = false; } if (excepting) { RemoveInput(ns_exception_id); excepting = false; } } /* * Application exit, with cleanup. */ void x3270_exit(int n) { /* Handle unintentional recursion. */ if (x3270_exiting) { return; } x3270_exiting = true; vtrace("Exiting with status %d\n", n); /* Set the exit code. */ x3270_exit_code = n; /* Flush any pending output (mostly for Windows). */ fflush(stdout); fflush(stderr); /* Tell everyone else who's interested. */ st_changed(ST_EXITING, true); #if !defined(_WIN32) /*[*/ exit(n); #else /*][*/ /* * On Windows, call ExitProcess() instead of the POSIXish exit(). * Apparently calling exit() in a ConsoleCtrlHandler is a bad thing on * XP, and causes a hang. */ ExitProcess(n); #endif /*]*/ } /* * Delayed Quit. * Called with a zero timeout so that the Quit() action can return * successfully. */ static void delayed_quit(ioid_t id) { x3270_exit(0); } static bool Quit_action(ia_t ia, unsigned argc, const char **argv) { bool force = false; action_debug(AnQuit, ia, argc, argv); if (check_argc(AnQuit, argc, 0, 1) < 0) { return false; } if (argc > 0 && (!strcasecmp(argv[0], KwDashForce) || !strcasecmp(argv[0], KwForce))) { force = true; } /* * We allow Quit() to succeed if invoked from anything besides a keymap, and * from a keymap if we're not connected. * * This test is imperfect. Someone could put a Source() in a keymap and * read in a file that includes a Quit(). If we are connected, it will * fail. */ if (force || (!IA_IS_KEY(ia) || !FULL_SESSION)) { AddTimeOut(0, delayed_quit); return true; } return false; } /* * X I/O module registration. */ void xio_register(void) { static action_table_t xio_actions[] = { { AnQuit, Quit_action, ACTION_KE }, { AnExit, Quit_action, ACTION_KE } }; /* Register our actions. */ register_actions(xio_actions, array_count(xio_actions)); } suite3270-4.1/Common/xl.h000066400000000000000000000032521413735575200150650ustar00rootroot00000000000000/* * Copyright (c) 2002-2009, Paul Mattes. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the names of Paul Mattes nor the names of his contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO * EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * xl.h * DBCS translation table structure. */ typedef struct { unsigned n; unsigned short *data; } xl_t; #define XL_SIZE(e) ((sizeof(e)/sizeof(e[0]))/3) suite3270-4.1/Common/xpopen.c000066400000000000000000000142531413735575200157510ustar00rootroot00000000000000/* * Copyright (c) 2018 Paul Mattes. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the names of Paul Mattes nor the names of his contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO * EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * xpopen.c * popen that exposes the child process ID */ #include "globals.h" #include #include #include #include "utils.h" #include "xpopen.h" /* Typedefs */ typedef struct { /* xpopen context */ llist_t llist; /* linkage */ FILE *fp; /* file pointer */ pid_t pid; /* child process ID */ } xpopen_t; llist_t xpopens = LLIST_INIT(xpopens); /* Globals */ /* Statics */ /* Create a file pointer to a subprocess. */ FILE * xpopen(const char *command, const char *mode, pid_t *pidp) { char *r, *w; xpopen_t *xp = NULL; int rwmode; /* 0 for read, 1 for write */ int pipes[2] = { -1, -1 }; /* Check the mode. */ r = strchr(mode, 'r'); w = strchr(mode, 'w'); if ((r == NULL) == (w == NULL)) { /* Both, or neither. */ errno = EINVAL; goto fail; } rwmode = (w != NULL); /* Allocate the context. */ xp = Calloc(1, sizeof(xpopen_t)); /* Create the pipes. */ if (pipe(pipes) < 0) { goto fail; } /* Add the file pointer. */ xp->fp = fdopen(pipes[rwmode], mode); if (xp->fp == NULL) { goto fail; } /* Create the child process. */ switch (xp->pid = fork()) { default: /* parent */ break; case 0: /* child */ /* Redirect I/O. */ close(pipes[rwmode]); if (dup2(pipes[!rwmode], !rwmode) < 0) { exit(1); } close(pipes[!rwmode]); /* Run the command. */ if (execl("/bin/sh", "/bin/sh", "-c", command, NULL) < 0) { exit(1); } break; case -1: /* error */ pipes[rwmode] = -1; /* belongs to xp->fp */ goto fail; } /* Close the child's end of the pipe. */ close(pipes[!rwmode]); /* Remember for xpclose. */ llist_init(&xp->llist); LLIST_APPEND(&xp->llist, xpopens); /* Done. */ *pidp = xp->pid; return xp->fp; fail: /* Clean up after a failure. */ if (xp != NULL) { if (xp->fp != NULL) { fclose(xp->fp); } if (pipes[0] != -1) { close(pipes[0]); } if (pipes[1] != -1) { close(pipes[1]); } Free(xp); } return NULL; } /* Complete the subprocess, waiting for it to complete. */ int xpclose(FILE *fp, unsigned flags) { xpopen_t *xp; bool found = false; pid_t pid; int status = 0; FOREACH_LLIST(&xpopens, xp, xpopen_t *) { if (xp->fp == fp) { found = true; break; } } FOREACH_LLIST_END(&xpopens, xp, xpopen_t *); if (!found) { errno = EINVAL; return -1; } /* Close the file. */ fclose(fp); /* Free the context. */ pid = xp->pid; llist_unlink(&xp->llist); Free(xp); /* Wait for the child to exit. */ if (!(flags & XPC_NOWAIT) && waitpid(pid, &status, 0) < 0) { return -1; } return status; } #if defined(UNIT_TEST) /*[*/ #include void nothing(int ignored) { } int main(int argc, char *argv[]) { char buf[1024]; char outfile[256]; char cmd[1024]; pid_t pid; FILE *f; char *s; int rv, status; signal(SIGPIPE, SIG_IGN); signal(SIGCHLD, nothing); /* Try an input stream. */ f = xpopen("cat /etc/hosts", "r", &pid); if (f == NULL) { perror("xpopen"); exit(1); } while ((s = fgets(buf, sizeof(buf), f)) != NULL) { fputs(s, stdout); } rv = xpclose(f, 0); if (rv != 0) { fprintf(stderr, "child exited with status %d\n", rv); exit(1); } printf("\n========\n\n"); /* Try an input stream with explicit wait. */ f = xpopen("cat /etc/hosts", "r", &pid); if (f == NULL) { perror("xpopen"); exit(1); } while ((s = fgets(buf, sizeof(buf), f)) != NULL) { fputs(s, stdout); } xpclose(f, XPC_NOWAIT); rv = waitpid(pid, &status, 0); if (rv < 0) { perror("waitpid"); } if (status != 0) { fprintf(stderr, "child exited with status %d\n", status); exit(1); } printf("\n========\n\n"); /* Try an output stream. */ sprintf(outfile, "/tmp/xpopen.%d", getpid()); sprintf(cmd, "tr A-Z a-z >%s", outfile); f = xpopen(cmd, "w", &pid); if (f == NULL) { perror("xpopen"); exit(1); } fputs("Mixed Case\n", f); rv = xpclose(f, 0); if (rv != 0) { fprintf(stderr, "child exited with status %d\n", rv); exit(1); } f = fopen(outfile, "r"); if (f == NULL) { perror(outfile); exit(1); } while ((s = fgets(buf, sizeof(buf), f)) != NULL) { fputs(s, stdout); } fclose(f); unlink(outfile); } void * Malloc(size_t len) { void *ret = malloc(len); if (ret == NULL) { fprintf(stderr, "Out of memory\n"); exit(1); } return ret; } void * Calloc(size_t num_elem, size_t elem_size) { void *ret = Malloc(num_elem * elem_size); memset(ret, '\0', num_elem * elem_size); return ret; } void Free(void *buf) { free(buf); } #endif /*]*/ suite3270-4.1/Common/xs_buffer.c000066400000000000000000000051051413735575200164170ustar00rootroot00000000000000/* * Copyright (c) 1993-2015 Paul Mattes. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the names of Paul Mattes, Jeff Sparkes nor the names of their * contributors may be used to endorse or promote products derived from * this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO * EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * xs_buffer.c * Simplified version of asprintf/vsprintf. */ #include "globals.h" #include "asprintf.h" #include "utils.h" /** * Local variation of vasprintf(). Returns the buffer instead of a count, and * crashes if it runs out of memory. * * @param[in] fmt printf format string * @param[in] args argument list * * @return malloc'd buffer, guaranteed not to be NULL. Must free() when done. */ char * xs_vbuffer(const char *fmt, va_list args) { char *r = NULL; int nw; nw = vasprintf(&r, fmt, args); if (nw < 0) { Error("xs_vbuffer: vasprintf failure"); } if (r == NULL) { Error("Out of memory"); } return r; } /** * Local variation of vsprintf(). Returns the buffer instead of a count, and * crashes if it runs out of memory. * * @param[in] fmt printf format string * * @return malloc'd buffer, guaranteed not to be NULL. Must free() when done. */ char * xs_buffer(const char *fmt, ...) { va_list args; char *r; va_start(args, fmt); r = xs_vbuffer(fmt, args); va_end(args); return r; } suite3270-4.1/ConvTools/000077500000000000000000000000001413735575200147655ustar00rootroot00000000000000suite3270-4.1/ConvTools/Ddbcs_ucm.pl000077500000000000000000000021361413735575200172120ustar00rootroot00000000000000#!/usr/bin/perl # Convert a DBCS ucm file to a translation table. my $file = $ARGV[0]; my $in = 0; #my %d2u; my %u2d; open TABLE, "<" . $file . ".ucm" or die "No table."; while () { chomp; next if /^#/; last if /^END CHARMAP/; if (/^CHARMAP/) { $in = 1; next; } next if (! $in); # \x20 #|0 SPACE / +\\x([0-9a-fA-F]+)\\x([0-9a-fA-F]+)/; my $u = hex($1); my $d = hex($2 . $3); if ($d & 0xff00) { #$d2u{$d} = $u; $u2d{$u} = $d; } } # Dump Unicode-to-DBCS. */ print "/* Unicode-to-DBCS translation table for $file */\n"; print "unsigned char *u2d[] = {\n"; my $row = ""; my $i; my $any = 0; foreach $i (0..65535) { if ($i && !($i % 128)) { printf "/* %04x */ ", $i - 128; if ($any) { print "\"$row\",\n"; } else { print "NULL,\n"; } $row = ""; $any = 0; } if ($u2d{$i}) { $row .= sprintf("\\x%02x\\x%02x", ($u2d{$i} >> 8) & 0xff, $u2d{$i} & 0xff); $any = 1; } else { $row .= "\\x00\\x00"; } } print "/* ff00 */ "; if ($any) { print "\"$row\""; } else { print "NULL"; } print " };\n"; suite3270-4.1/ConvTools/Dsbcs_ucm.pl000077500000000000000000000007721413735575200172350ustar00rootroot00000000000000#!/usr/bin/perl my $in = 0; my %d2u; open TABLE, ") { chomp; next if /^#/; last if /^END CHARMAP/; if (/^CHARMAP/) { $in = 1; next; } next if (! $in); # \x20 #|0 SPACE / +\\x([0-9a-fA-F]+)/; my $u = hex($1); my $d = hex($2); $d2u{$d} = $u; } my $i; foreach $i (0..256) { if (defined($d2u{$i})) { printf "0x%08x,", $d2u{$i}; } else { print "0x00000000,"; } } print "\n"; suite3270-4.1/ConvTools/Edbcs_ucm.pl000077500000000000000000000033031413735575200172100ustar00rootroot00000000000000#!/usr/bin/perl # Grab the DBCS part of a DBCS or MBCS ucm file and output DBCS translation # tables. my $file = $ARGV[0]; my $in = 0; my %d2u; my %u2d; open TABLE, "<". $file . ".ucm" or die "No table."; while (
) { chomp; next if /^#/; last if /^END CHARMAP/; if (/^CHARMAP/) { $in = 1; next; } next if (! $in); # \x20 #|0 SPACE if (/ +\\x([0-9a-fA-F]+)\\x([0-9a-fA-F]+)/) { my $u = hex($1); my $d = hex($2 . $3); #printf "got U+%04x -> X'%02X'\n", $u, $d; $d2u{$d} = $u; $u2d{$u} = $d; } elsif (/ +\\x([0-9a-fA-F]+)/) { } else { die "Eh?"; } } print "/* Unicode to EBCDIC DBCS translation table for $file */\n"; my $row = ""; my $i; my $any = 0; foreach $i (0..65535) { if ($i && !($i % 128)) { printf "/* %04x */ ", $i - 128; if ($any) { print "\"$row\",\n"; } else { print "NULL,\n"; } $row = ""; $any = 0; } if ($u2d{$i}) { $row .= sprintf("\\x%02x\\x%02x", ($u2d{$i} >> 8) & 0xff, $u2d{$i} & 0xff); $any = 1; } else { $row .= "\\x00\\x00"; } } print "/* ff80 */ "; if ($any) { print "\"$row\""; } else { print "NULL"; } print " };\n"; print "/* EBCDIC DBCS to Unicode translation table for $file */\n"; $row = ""; $any = 0; foreach $i (0..65535) { if ($i && !($i % 128)) { printf "/* %04x */ ", $i - 128; if ($any) { print "\"$row\",\n"; } else { print "NULL,\n"; } $row = ""; $any = 0; } if ($d2u{$i}) { $row .= sprintf("\\x%02x\\x%02x", ($d2u{$i} >> 8) & 0xff, $d2u{$i} & 0xff); $any = 1; } else { $row .= "\\x00\\x00"; } } print "/* ff80 */ "; if ($any) { print "\"$row\""; } else { print "NULL"; } print " };\n"; suite3270-4.1/ConvTools/Esbcs_ucm.pl000077500000000000000000000017111413735575200172300ustar00rootroot00000000000000#!/usr/bin/perl # Grab the SBCS part of a SBCS or MBCS ucm file and output an SBCS translation # table. my $file = $ARGV[0]; my $in = 0; my %d2u; open TABLE, "<". $file . ".ucm" or die "No table."; while (
) { chomp; next if /^#/; last if /^END CHARMAP/; if (/^CHARMAP/) { $in = 1; next; } next if (! $in); # \x20 #|0 SPACE if (/ +\\x([0-9a-fA-F]+)\\x([0-9a-fA-F])+/) { } elsif (/ +\\x([0-9a-fA-F]+)/) { my $u = hex($1); my $d = hex($2); #printf "got U+%04x -> X'%02X'\n", $u, $d; $d2u{$d} = $u; } else { die "Eh?"; } } print "/* EBCDIC to Unicode translation table for $file */\n"; print "unsigned short e2u[] = {\n"; my $i; foreach $i (0x41..0xfe) { if (!(($i - 0x41) % 8)) { if (($i - 0x41)) { print "\n"; } printf "/* %02x */ ", $i; } if (defined($d2u{$i})) { printf "0x%04x, ", $d2u{$i}; } else { print "0x0000, "; } } print "};\n"; suite3270-4.1/ConvTools/cg.c000066400000000000000000000046001413735575200155220ustar00rootroot00000000000000#include #include unsigned short asc2cg[256] = { /*00*/ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /*08*/ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /*10*/ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /*18*/ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /*20*/ 0x10, 0x19, 0x13, 0x2c, 0x1a, 0x2e, 0x30, 0x12, /*28*/ 0x0d, 0x0c, 0xbf, 0x35, 0x33, 0x31, 0x32, 0x14, /*30*/ 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, /*38*/ 0x28, 0x29, 0x34, 0xbe, 0x09, 0x11, 0x08, 0x18, /*40*/ 0x2d, 0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, /*48*/ 0xa7, 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, /*50*/ 0xaf, 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, /*58*/ 0xb7, 0xb8, 0xb9, 0x0a, 0x15, 0x0b, 0x3a, 0x2f, /*60*/ 0x3d, 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, /*68*/ 0x87, 0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, 0x8e, /*70*/ 0x8f, 0x90, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, /*78*/ 0x97, 0x98, 0x99, 0x0f, 0x16, 0x0e, 0x3b, 0x00, /*80*/ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /*88*/ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /*90*/ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /*98*/ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /*a0*/ 0x01, 0x6e, 0x1b, 0x1c, 0x1f, 0x1d, 0x17, 0x2b, /*a8*/ 0x3c, 0xd0, 0x6a, 0x6c, 0x36, 0x07, 0xd1, 0x37, /*b0*/ 0x38, 0xd6, 0x68, 0x69, 0x3e, 0x54, 0x1e, 0x39, /*b8*/ 0x3f, 0x67, 0x6b, 0x6d, 0x4b, 0x4c, 0x4d, 0x6f, /*c0*/ 0x60, 0x7a, 0x75, 0x65, 0x70, 0xbc, 0xba, 0xbd, /*c8*/ 0x61, 0x7b, 0x76, 0x71, 0x62, 0x7c, 0x77, 0x72, /*d0*/ 0xd7, 0x7f, 0x63, 0x7d, 0x78, 0x66, 0x73, 0x5b, /*d8*/ 0xbb, 0x64, 0x7e, 0x79, 0x74, 0x48, 0xd9, 0x2a, /*e0*/ 0x40, 0x5a, 0x55, 0x45, 0x50, 0x9c, 0x9a, 0x4f, /*e8*/ 0x41, 0x4a, 0x56, 0x51, 0x42, 0x5c, 0x57, 0x52, /*f0*/ 0xf7, 0x5f, 0x43, 0x5d, 0x58, 0x46, 0x53, 0x9d, /*f8*/ 0x9b, 0x44, 0x5e, 0x59, 0x4e, 0x49, 0xf9, 0x47 }; int main(int argc, char *argv[]) { unsigned char u2cg[256]; int i; /* * Use asc2cg[] to make a table that maps from Unicode * to 3270cg-1. */ memset(u2cg, '\0', sizeof(u2cg)); for (i = 0; i < 256; i++) { /* asc2cg['a'] is 0x80. Thus u2cg[0x80] = 'a'. */ if (asc2cg[i] == 0 && i != 0x20) continue; u2cg[asc2cg[i]] = i; } /* Dump th resulting table. */ for (i = 0; i < 256; i++) { if (i && !(i % 4)) printf("\n"); if (!(i % 4)) printf("\t /* CG %03x */ ", i); printf("0x%08x, ", u2cg[i]); } printf("\n"); return 0; } suite3270-4.1/ConvTools/d8.c000066400000000000000000000020651413735575200154470ustar00rootroot00000000000000/* Generate a d8 table for a given character set. */ #include #include #include #include int main(int argc, char *argv[]) { iconv_t iu; int i; unsigned short d8[256]; char inbuf[2]; unsigned short outbuf[2]; char *inbufp; char *outbufp; size_t inbytesleft; size_t outbytesleft; if (argc != 2) { fprintf(stderr, "usage: %s csname\n", argv[0]); exit(1); } iu = iconv_open("UCS-2LE", argv[1]); if (iu == (iconv_t)-1) { fprintf(stderr, "no converter\n"); exit(1); } memset(d8, '\0', sizeof(d8)); for (i = 0x20; i <= 0xff; i++) { size_t nc; inbuf[0] = i; inbuf[1] = '\0'; inbufp = (char *)&inbuf; inbytesleft = 1; outbufp = (char *)&outbuf; outbytesleft = sizeof(outbuf); nc = iconv(iu, &inbufp, &inbytesleft, &outbufp, &outbytesleft); if (nc >= 0) { d8[i] = outbuf[0]; } } for (i = 0; i <= 0xff; i++) { if (i && !(i % 4)) printf("\n"); if (!(i % 4)) printf("\t"); printf("0x%08x, ", d8[i]); } printf("\n"); return 0; } suite3270-4.1/ConvTools/ebc2u.c000066400000000000000000000020001413735575200161210ustar00rootroot00000000000000/* Generate an ebcdic_to_unicode d8 table for a given character set. */ #include #include #include #include int main(int argc, char *argv[]) { iconv_t iu; int i; unsigned short d8[256]; char inbuf[2]; unsigned short outbuf[2]; char *inbufp; char *outbufp; size_t inbytesleft; size_t outbytesleft; if (argc != 2) { fprintf(stderr, "usage: %s csname\n", argv[0]); exit(1); } iu = iconv_open("UCS-2LE", argv[1]); if (iu == (iconv_t)-1) { fprintf(stderr, "no converter\n"); exit(1); } memset(d8, '\0', sizeof(d8)); for (i = 0x41; i < 0xff; i++) { size_t nc; inbuf[0] = i; inbuf[1] = '\0'; inbufp = (char *)&inbuf; inbytesleft = 1; outbufp = (char *)&outbuf; outbytesleft = sizeof(outbuf); nc = iconv(iu, &inbufp, &inbytesleft, &outbufp, &outbytesleft); if (nc >= 0) { d8[i] = outbuf[0]; } } for (i = 0x41; i < 0xff; i++) { printf(" 0x%04x,", d8[i]); } printf("\n"); return 0; } suite3270-4.1/ConvTools/gb18030.c000066400000000000000000000026771413735575200161310ustar00rootroot00000000000000#include #include #define PER_ROW 128 unsigned short u2gb[65536]; int main(int argc, char *argv[]) { iconv_t i; int j; i = iconv_open("GB18030", "UCS2" /* BE */); if (i == (iconv_t)-1) { fprintf(stderr, "iconv_open failed\n"); return 1; } for (j = 0; j <= 0xffff; j++) { char ucs2[2]; char gb18030[16]; char *inbuf; char *outbuf; size_t inbytesleft; size_t outbytesleft; size_t nc; /* iconv's UCS2 is little-endian */ ucs2[0] = j & 0xff; ucs2[1] = (j >> 8) & 0xff; inbuf = ucs2; outbuf = gb18030; inbytesleft = 2; outbytesleft = 16; nc = iconv(i, &inbuf, &inbytesleft, &outbuf, &outbytesleft); if (inbytesleft == 2) { /*printf("U+%04x does not convert\n", j);*/ } else if (outbytesleft != 14) { /*printf("U+%04x converts to %d-byte GB\n", j, 16 - outbytesleft);*/ } else { u2gb[j] = ((gb18030[0] << 8) & 0xff00) | (gb18030[1] & 0xff); /*printf("U+%04x converts to GB %04x (%02x %02x)\n", j, u2gb[j], gb18030[0] & 0xff, gb18030[1] & 0xff); */ } } for (j = 0; j <= 0xffff; j += PER_ROW) { int k; int any = 0; for (k = j; k < j + PER_ROW; k++) { if (u2gb[k] != 0) { any = 1; break; } } if (!any) { printf("/* %04x */ NULL,\n", j); continue; } printf("/* %04x */ \"", j); for (k = j; k < j + PER_ROW; k++) { printf("\\x%02x\\x%02x", (u2gb[k] >> 8) & 0xff, u2gb[k] & 0xff); } printf("\",\n"); } return 0; } suite3270-4.1/ConvTools/gb_2312_80-1.ucm000077700000000000000000000000001413735575200230472../Common/gb_2312_80-1.ucmustar00rootroot00000000000000suite3270-4.1/ConvTools/greek.c000066400000000000000000000221041413735575200162250ustar00rootroot00000000000000#include #include /* Table to translate EBCDIC codes X'41' through X'FE' to UCS-2. */ unsigned short cp875[] = { 0x0391, 0x0392, 0x0393, 0x0394, 0x0395, 0x0396, 0x0397, 0x0398, 0x0399, 0x005b, 0x002e, 0x003c, 0x0028, 0x002b, 0x0021, 0x0026, 0x039a, 0x039b, 0x039c, 0x039d, 0x039e, 0x039f, 0x03a0, 0x03a1, 0x03a3, 0x005d, 0x0024, 0x002a, 0x0029, 0x003b, 0x005e, 0x002d, 0x002f, 0x03a4, 0x03a5, 0x03a6, 0x03a7, 0x03a8, 0x03a9, 0x03aa, 0x03ab, 0x0000, 0x002c, 0x0025, 0x005f, 0x003e, 0x003f, 0x00a8, 0x0386, 0x0388, 0x0389, 0x2207, 0x038a, 0x038c, 0x038e, 0x038f, 0x0060, 0x003a, 0x0023, 0x0040, 0x0027, 0x003d, 0x0022, 0x0385, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 0x0068, 0x0069, 0x03b1, 0x03b2, 0x03b3, 0x03b4, 0x03b5, 0x03b6, 0x00b0, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, 0x0070, 0x0071, 0x0072, 0x03b7, 0x03b8, 0x03b9, 0x03ba, 0x03bb, 0x03bc, 0x00b4, 0x007e, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078, 0x0079, 0x007a, 0x03bd, 0x03be, 0x03bf, 0x03c0, 0x03c1, 0x03c3, 0x00a3, 0x03ac, 0x03ad, 0x03ae, 0x0390, 0x03af, 0x03cc, 0x03cd, 0x03b0, 0x03ce, 0x03c2, 0x03c4, 0x03c5, 0x03c6, 0x03c7, 0x03c8, 0x007b, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 0x0048, 0x0049, 0x00ad, 0x03c9, 0x03ca, 0x03cb, 0x2018, 0x2015, 0x007d, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 0x0050, 0x0051, 0x0052, 0x00b1, 0x00bd, 0x0000, 0x00b7, 0x2019, 0x00a6, 0x005c, 0x0000, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, 0x0059, 0x005a, 0x00b2, 0x00a7, 0x0000, 0x0000, 0x00ab, 0x00ac, 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 0x0038, 0x0039, 0x00b3, 0x00a9, 0x0000, 0x0000, 0x00bb }; /* Table to translate EBCDIC codes X'00' through X'FF' to CG. */ unsigned char ebc2cg0[] = { /*00*/ 0x00, 0xdf, 0xdf, 0xdf, 0xdf, 0xdf, 0xdf, 0xdf, \ /*08*/ 0xdf, 0xdf, 0xdf, 0xdf, 0x02, 0x03, 0x00, 0x00, \ /*10*/ 0xdf, 0xdf, 0xdf, 0xdf, 0xdf, 0x04, 0xdf, 0xdf, \ /*18*/ 0xdf, 0x05, 0xdf, 0xdf, 0x9f, 0xdf, 0x9e, 0xdf, \ /*20*/ 0xdf, 0xdf, 0xdf, 0xdf, 0xdf, 0xdf, 0xdf, 0xdf, \ /*28*/ 0xdf, 0xdf, 0xdf, 0xdf, 0xdf, 0xdf, 0xdf, 0xdf, \ /*30*/ 0xdf, 0xdf, 0xdf, 0xdf, 0xdf, 0xdf, 0xdf, 0xdf, \ /*38*/ 0xdf, 0xdf, 0xdf, 0xdf, 0xdf, 0xdf, 0xdf, 0xdf, \ /*40*/ 0x10, 0x01, 0x55, 0x50, 0x40, 0x5a, 0x45, 0x9c, \ /*48*/ 0x4f, 0x5f, 0x1b, 0x32, 0x09, 0x0d, 0x35, 0x16, \ /*50*/ 0x30, 0x4a, 0x56, 0x51, 0x41, 0x5c, 0x57, 0x52, \ /*58*/ 0x42, 0x2a, 0x19, 0x1a, 0xbf, 0x0c, 0xbe, 0x36, \ /*60*/ 0x31, 0x14, 0x75, 0x70, 0x60, 0x7a, 0x65, 0xbc, \ /*68*/ 0xbd, 0x7f, 0x17, 0x33, 0x2e, 0x2f, 0x08, 0x18, \ /*70*/ 0x9b, 0x7b, 0x76, 0x71, 0x61, 0x7c, 0x77, 0x72, \ /*78*/ 0x62, 0x3d, 0x34, 0x2c, 0x2d, 0x12, 0x11, 0x13, \ /*80*/ 0xbb, 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, \ /*88*/ 0x87, 0x88, 0x6c, 0x6d, 0xf7, 0x49, 0xf9, 0xd6, \ /*90*/ 0x38, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, 0x8e, 0x8f, \ /*98*/ 0x90, 0x91, 0x6a, 0x6b, 0x9a, 0x3f, 0xba, 0x1f, \ /*a0*/ 0x54, 0x3b, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97, \ /*a8*/ 0x98, 0x99, 0x6e, 0x6f, 0xd7, 0x48, 0xd9, 0xd1, \ /*b0*/ 0x3a, 0x1c, 0x1d, 0x39, 0xd0, 0x2b, 0x1e, 0x4b, \ /*b8*/ 0x4c, 0x4d, 0x0a, 0x0b, 0x37, 0x3c, 0x3e, 0x5b, \ /*c0*/ 0x0f, 0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, \ /*c8*/ 0xa7, 0xa8, 0x07, 0x58, 0x53, 0x43, 0x5d, 0x46, \ /*d0*/ 0x0e, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf, \ /*d8*/ 0xb0, 0xb1, 0x67, 0x59, 0x4e, 0x44, 0x5e, 0x47, \ /*e0*/ 0x15, 0x9d, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7, \ /*e8*/ 0xb8, 0xb9, 0x68, 0x78, 0x73, 0x63, 0x7d, 0x66, \ /*f0*/ 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, \ /*f8*/ 0x28, 0x29, 0x69, 0x79, 0x74, 0x64, 0x7e, 0x06 }; /* Base ebc2asc. */ unsigned char ebc2asc0[256] = { /*00*/ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, \ /*08*/ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, \ /*10*/ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, \ /*18*/ 0x20, 0x20, 0x20, 0x20, 0x2a, 0x20, 0x3b, 0x20, \ /*20*/ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, \ /*28*/ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, \ /*30*/ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, \ /*38*/ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, \ /*40*/ 0x20, 0x20, 0xe2, 0xe4, 0xe0, 0xe1, 0xe3, 0xe5, \ /*48*/ 0xe7, 0xf1, 0xa2, 0x2e, 0x3c, 0x28, 0x2b, 0x7c, \ /*50*/ 0x26, 0xe9, 0xea, 0xeb, 0xe8, 0xed, 0xee, 0xef, \ /*58*/ 0xec, 0xdf, 0x21, 0x24, 0x2a, 0x29, 0x3b, 0xac, \ /*60*/ 0x2d, 0x2f, 0xc2, 0xc4, 0xc0, 0xc1, 0xc3, 0xc5, \ /*68*/ 0xc7, 0xd1, 0xa6, 0x2c, 0x25, 0x5f, 0x3e, 0x3f, \ /*70*/ 0xf8, 0xc9, 0xca, 0xcb, 0xc8, 0xcd, 0xce, 0xcf, \ /*78*/ 0xcc, 0x60, 0x3a, 0x23, 0x40, 0x27, 0x3d, 0x22, \ /*80*/ 0xd8, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, \ /*88*/ 0x68, 0x69, 0xab, 0xbb, 0xf0, 0xfd, 0xfe, 0xb1, \ /*90*/ 0xb0, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f, 0x70, \ /*98*/ 0x71, 0x72, 0xaa, 0xba, 0xe6, 0xb8, 0xc6, 0xa4, \ /*a0*/ 0xb5, 0x7e, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, \ /*a8*/ 0x79, 0x7a, 0xa1, 0xbf, 0xd0, 0xdd, 0xde, 0xae, \ /*b0*/ 0x5e, 0xa3, 0xa5, 0xb7, 0xa9, 0xa7, 0xb6, 0xbc, \ /*b8*/ 0xbd, 0xbe, 0x5b, 0x5d, 0xaf, 0xa8, 0xb4, 0xd7, \ /*c0*/ 0x7b, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, \ /*c8*/ 0x48, 0x49, 0xad, 0xf4, 0xf6, 0xf2, 0xf3, 0xf5, \ /*d0*/ 0x7d, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f, 0x50, \ /*d8*/ 0x51, 0x52, 0xb9, 0xfb, 0xfc, 0xf9, 0xfa, 0xff, \ /*e0*/ 0x5c, 0xf7, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, \ /*e8*/ 0x59, 0x5a, 0xb2, 0xd4, 0xd6, 0xd2, 0xd3, 0xd5, \ /*f0*/ 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, \ /*f8*/ 0x38, 0x39, 0xb3, 0xdb, 0xdc, 0xd9, 0xda, 0x20 }; /* Map of EBCDIC to ISO8859-7. */ unsigned char greek_remap[256] = { 0, 1, 2, 3, 156, 9, 134, 127, 151, 141, 142, 11, 12, 13, 14, 15, 16, 17, 18, 19, 157, 133, 8, 135, 24, 25, 146, 143, 28, 29, 30, 31, 128, 129, 130, 131, 132, 10, 23, 27, 136, 137, 138, 139, 140, 5, 6, 7, 144, 145, 22, 147, 148, 149, 150, 4, 152, 153, 154, 155, 20, 21, 158, 26, 32, 193, 194, 195, 196, 197, 198, 199, 200, 201, 91, 46, 60, 40, 43, 33, 38, 202, 203, 204, 205, 206, 207, 208, 209, 211, 93, 36, 42, 41, 59, 94, 45, 47, 212, 213, 214, 215, 216, 217, 218, 219, 174, 44, 37, 95, 62, 63, 168, 182, 184, 185, 210, 186, 188, 190, 191, 96, 58, 35, 64, 39, 61, 34, 181, 97, 98, 99, 100, 101, 102, 103, 104, 105, 225, 226, 227, 228, 229, 230, 176, 106, 107, 108, 109, 110, 111, 112, 113, 114, 231, 232, 233, 234, 235, 236, 180, 126, 115, 116, 117, 118, 119, 120, 121, 122, 237, 238, 239, 240, 241, 243, 163, 220, 221, 222, 250, 223, 252, 253, 251, 254, 242, 244, 245, 246, 247, 248, 123, 65, 66, 67, 68, 69, 70, 71, 72, 73, 173, 249, 192, 224, 164, 175, 125, 74, 75, 76, 77, 78, 79, 80, 81, 82, 177, 189, 124, 183, 162, 166, 92, 161, 83, 84, 85, 86, 87, 88, 89, 90, 178, 167, 255, 170, 171, 172, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 179, 169, 165, 160, 187, 159 }; /* ASCII to CG translation table. */ unsigned char asc2cg[256] = { /*00*/ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /*08*/ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /*10*/ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /*18*/ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /*20*/ 0x10, 0x19, 0x13, 0x2c, 0x1a, 0x2e, 0x30, 0x12, /*28*/ 0x0d, 0x0c, 0xbf, 0x35, 0x33, 0x31, 0x32, 0x14, /*30*/ 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, /*38*/ 0x28, 0x29, 0x34, 0xbe, 0x09, 0x11, 0x08, 0x18, /*40*/ 0x2d, 0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, /*48*/ 0xa7, 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, /*50*/ 0xaf, 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, /*58*/ 0xb7, 0xb8, 0xb9, 0x0a, 0x15, 0x0b, 0x3a, 0x2f, /*60*/ 0x3d, 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, /*68*/ 0x87, 0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, 0x8e, /*70*/ 0x8f, 0x90, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, /*78*/ 0x97, 0x98, 0x99, 0x0f, 0x16, 0x0e, 0x3b, 0x00, /*80*/ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /*88*/ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /*90*/ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /*98*/ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /*a0*/ 0x01, 0x6e, 0x1b, 0x1c, 0x1f, 0x1d, 0x17, 0x2b, /*a8*/ 0x3c, 0xd0, 0x6a, 0x6c, 0x36, 0x07, 0xd1, 0x37, /*b0*/ 0x38, 0xd6, 0x68, 0x69, 0x3e, 0x54, 0x1e, 0x39, /*b8*/ 0x3f, 0x67, 0x6b, 0x6d, 0x4b, 0x4c, 0x4d, 0x6f, /*c0*/ 0x60, 0x7a, 0x75, 0x65, 0x70, 0xbc, 0xba, 0xbd, /*c8*/ 0x61, 0x7b, 0x76, 0x71, 0x62, 0x7c, 0x77, 0x72, /*d0*/ 0xd7, 0x7f, 0x63, 0x7d, 0x78, 0x66, 0x73, 0x5b, /*d8*/ 0xbb, 0x64, 0x7e, 0x79, 0x74, 0x48, 0xd9, 0x2a, /*e0*/ 0x40, 0x5a, 0x55, 0x45, 0x50, 0x9c, 0x9a, 0x4f, /*e8*/ 0x41, 0x4a, 0x56, 0x51, 0x42, 0x5c, 0x57, 0x52, /*f0*/ 0xf7, 0x5f, 0x43, 0x5d, 0x58, 0x46, 0x53, 0x9d, /*f8*/ 0x9b, 0x44, 0x5e, 0x59, 0x4e, 0x49, 0xf9, 0x47 }; int main(int argc, char *argv[]) { int i; unsigned char ebc2cg[256]; unsigned short cg2u[256]; /* Use greek_remap to rearrange ebc2cg0 into a Greek ebc2cg. */ /*memcpy(ebc2cg, ebc2cg0, sizeof(ebc2cg));*/ memset(ebc2cg, '\0', sizeof(ebc2cg)); for (i = 0; i < 256; i++) { if (greek_remap[i] != 0) ebc2cg[i] = asc2cg[greek_remap[i]]; } /* Now create cg2u from ebc2cg and cp875. */ memset(cg2u, '\0', sizeof(cg2u)); for (i = 0x41; i <= 0xfe; i++) { if ((cp875[i-0x41] & 0xff00) == 0x0300) cg2u[ebc2cg[i]] = cp875[i-0x41]; } /* Dump cg2u out. */ for (i = 0; i < 256; i++) { if (i && !(i % 4)) printf("\n"); if (!(i % 4)) printf("\t /* CG %03x */ ", i); printf("0x%08x, ", cg2u[i]); } printf("\n"); return 0; } suite3270-4.1/ConvTools/hebrew.c000066400000000000000000000217151413735575200164130ustar00rootroot00000000000000#include #include /* Table to translate EBCDIC codes X'41' through X'FE' to UCS-2. */ unsigned short cp424[] = { 0x05d0, 0x05d1, 0x05d2, 0x05d3, 0x05d4, 0x05d5, 0x05d6, 0x05d7, 0x05d8, 0x00a2, 0x002e, 0x003c, 0x0028, 0x002b, 0x007c, 0x0026, 0x05d9, 0x05da, 0x05db, 0x05dc, 0x05dd, 0x05de, 0x05df, 0x05e0, 0x05e1, 0x0021, 0x0024, 0x002a, 0x0029, 0x003b, 0x00ac, 0x002d, 0x002f, 0x05e2, 0x05e3, 0x05e4, 0x05e5, 0x05e6, 0x05e7, 0x05e8, 0x05e9, 0x00a6, 0x002c, 0x0025, 0x005f, 0x003e, 0x003f, 0x0000, 0x05ea, 0x0000, 0x0000, 0x00a0, 0x0000, 0x0000, 0x0000, 0x21d4, 0x0060, 0x003a, 0x0023, 0x0040, 0x0027, 0x003d, 0x0022, 0x0000, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 0x0068, 0x0069, 0x00ab, 0x00bb, 0x0000, 0x0000, 0x0000, 0x0000, 0x00b0, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, 0x0070, 0x0071, 0x0072, 0x0000, 0x0000, 0x0000, 0x00b8, 0x0000, 0x00a4, 0x00b5, 0x007e, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078, 0x0079, 0x007a, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x00ae, 0x005e, 0x00a3, 0x00a5, 0x00b7, 0x00a9, 0x00a7, 0x00b6, 0x00bc, 0x00bd, 0x00be, 0x005b, 0x005d, 0x203e, 0x00a8, 0x00b4, 0x00d7, 0x007b, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 0x0048, 0x0049, 0x00ad, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x007d, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 0x0050, 0x0051, 0x0052, 0x00b9, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x005c, 0x00f7, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, 0x0059, 0x005a, 0x00b2, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 0x0038, 0x0039, 0x00b3, 0x0000, 0x0000, 0x0000, 0x0000 }; /* Table to translate EBCDIC codes X'00' through X'FF' to CG. */ unsigned char ebc2cg0[] = { /*00*/ 0x00, 0xdf, 0xdf, 0xdf, 0xdf, 0xdf, 0xdf, 0xdf, \ /*08*/ 0xdf, 0xdf, 0xdf, 0xdf, 0x02, 0x03, 0x00, 0x00, \ /*10*/ 0xdf, 0xdf, 0xdf, 0xdf, 0xdf, 0x04, 0xdf, 0xdf, \ /*18*/ 0xdf, 0x05, 0xdf, 0xdf, 0x9f, 0xdf, 0x9e, 0xdf, \ /*20*/ 0xdf, 0xdf, 0xdf, 0xdf, 0xdf, 0xdf, 0xdf, 0xdf, \ /*28*/ 0xdf, 0xdf, 0xdf, 0xdf, 0xdf, 0xdf, 0xdf, 0xdf, \ /*30*/ 0xdf, 0xdf, 0xdf, 0xdf, 0xdf, 0xdf, 0xdf, 0xdf, \ /*38*/ 0xdf, 0xdf, 0xdf, 0xdf, 0xdf, 0xdf, 0xdf, 0xdf, \ /*40*/ 0x10, 0x01, 0x55, 0x50, 0x40, 0x5a, 0x45, 0x9c, \ /*48*/ 0x4f, 0x5f, 0x1b, 0x32, 0x09, 0x0d, 0x35, 0x16, \ /*50*/ 0x30, 0x4a, 0x56, 0x51, 0x41, 0x5c, 0x57, 0x52, \ /*58*/ 0x42, 0x2a, 0x19, 0x1a, 0xbf, 0x0c, 0xbe, 0x36, \ /*60*/ 0x31, 0x14, 0x75, 0x70, 0x60, 0x7a, 0x65, 0xbc, \ /*68*/ 0xbd, 0x7f, 0x17, 0x33, 0x2e, 0x2f, 0x08, 0x18, \ /*70*/ 0x9b, 0x7b, 0x76, 0x71, 0x61, 0x7c, 0x77, 0x72, \ /*78*/ 0x62, 0x3d, 0x34, 0x2c, 0x2d, 0x12, 0x11, 0x13, \ /*80*/ 0xbb, 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, \ /*88*/ 0x87, 0x88, 0x6c, 0x6d, 0xf7, 0x49, 0xf9, 0xd6, \ /*90*/ 0x38, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, 0x8e, 0x8f, \ /*98*/ 0x90, 0x91, 0x6a, 0x6b, 0x9a, 0x3f, 0xba, 0x1f, \ /*a0*/ 0x54, 0x3b, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97, \ /*a8*/ 0x98, 0x99, 0x6e, 0x6f, 0xd7, 0x48, 0xd9, 0xd1, \ /*b0*/ 0x3a, 0x1c, 0x1d, 0x39, 0xd0, 0x2b, 0x1e, 0x4b, \ /*b8*/ 0x4c, 0x4d, 0x0a, 0x0b, 0x37, 0x3c, 0x3e, 0x5b, \ /*c0*/ 0x0f, 0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, \ /*c8*/ 0xa7, 0xa8, 0x07, 0x58, 0x53, 0x43, 0x5d, 0x46, \ /*d0*/ 0x0e, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf, \ /*d8*/ 0xb0, 0xb1, 0x67, 0x59, 0x4e, 0x44, 0x5e, 0x47, \ /*e0*/ 0x15, 0x9d, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7, \ /*e8*/ 0xb8, 0xb9, 0x68, 0x78, 0x73, 0x63, 0x7d, 0x66, \ /*f0*/ 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, \ /*f8*/ 0x28, 0x29, 0x69, 0x79, 0x74, 0x64, 0x7e, 0x06 }; /* Base ebc2asc. */ unsigned char ebc2asc0[256] = { /*00*/ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, \ /*08*/ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, \ /*10*/ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, \ /*18*/ 0x20, 0x20, 0x20, 0x20, 0x2a, 0x20, 0x3b, 0x20, \ /*20*/ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, \ /*28*/ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, \ /*30*/ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, \ /*38*/ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, \ /*40*/ 0x20, 0x20, 0xe2, 0xe4, 0xe0, 0xe1, 0xe3, 0xe5, \ /*48*/ 0xe7, 0xf1, 0xa2, 0x2e, 0x3c, 0x28, 0x2b, 0x7c, \ /*50*/ 0x26, 0xe9, 0xea, 0xeb, 0xe8, 0xed, 0xee, 0xef, \ /*58*/ 0xec, 0xdf, 0x21, 0x24, 0x2a, 0x29, 0x3b, 0xac, \ /*60*/ 0x2d, 0x2f, 0xc2, 0xc4, 0xc0, 0xc1, 0xc3, 0xc5, \ /*68*/ 0xc7, 0xd1, 0xa6, 0x2c, 0x25, 0x5f, 0x3e, 0x3f, \ /*70*/ 0xf8, 0xc9, 0xca, 0xcb, 0xc8, 0xcd, 0xce, 0xcf, \ /*78*/ 0xcc, 0x60, 0x3a, 0x23, 0x40, 0x27, 0x3d, 0x22, \ /*80*/ 0xd8, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, \ /*88*/ 0x68, 0x69, 0xab, 0xbb, 0xf0, 0xfd, 0xfe, 0xb1, \ /*90*/ 0xb0, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f, 0x70, \ /*98*/ 0x71, 0x72, 0xaa, 0xba, 0xe6, 0xb8, 0xc6, 0xa4, \ /*a0*/ 0xb5, 0x7e, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, \ /*a8*/ 0x79, 0x7a, 0xa1, 0xbf, 0xd0, 0xdd, 0xde, 0xae, \ /*b0*/ 0x5e, 0xa3, 0xa5, 0xb7, 0xa9, 0xa7, 0xb6, 0xbc, \ /*b8*/ 0xbd, 0xbe, 0x5b, 0x5d, 0xaf, 0xa8, 0xb4, 0xd7, \ /*c0*/ 0x7b, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, \ /*c8*/ 0x48, 0x49, 0xad, 0xf4, 0xf6, 0xf2, 0xf3, 0xf5, \ /*d0*/ 0x7d, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f, 0x50, \ /*d8*/ 0x51, 0x52, 0xb9, 0xfb, 0xfc, 0xf9, 0xfa, 0xff, \ /*e0*/ 0x5c, 0xf7, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, \ /*e8*/ 0x59, 0x5a, 0xb2, 0xd4, 0xd6, 0xd2, 0xd3, 0xd5, \ /*f0*/ 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, \ /*f8*/ 0x38, 0x39, 0xb3, 0xdb, 0xdc, 0xd9, 0xda, 0x20 }; /* Map of EBCDIC to ISO8859-8. Hebrew is in the range 0xe0 through 0xfa. */ unsigned char hebrew_remap[256] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 224, 225, 226, 227, 228, 229, 230, 231, 232, 162, 46, 60, 40, 43, 124, 38, 233, 234, 235, 236, 237, 238, 239, 240, 241, 33, 36, 42, 41, 59, 172, 45, 47, 242, 243, 244, 245, 246, 247, 248, 249, 166, 44, 37, 95, 62, 63, 0, 250, 0, 0, 0, 0, 0, 0, 0, 96, 58, 35, 64, 39, 61, 34, 0, 97, 98, 99, 100, 101, 102, 103, 104, 105, 171, 187, 0, 0, 0, 177, 176, 106, 107, 108, 109, 110, 111, 112, 113, 114, 0, 0, 0, 184, 0, 164, 181, 126, 115, 116, 117, 118, 119, 120, 121, 122, 0, 0, 0, 0, 0, 174, 94, 163, 165, 183, 169, 167, 182, 188, 189, 190, 91, 93, 175, 168, 180, 170, 123, 65, 66, 67, 68, 69, 70, 71, 72, 73, 173, 0, 0, 0, 0, 0, 125, 74, 75, 76, 77, 78, 79, 80, 81, 82, 185, 0, 0, 0, 0, 0, 92, 186, 83, 84, 85, 86, 87, 88, 89, 90, 178, 0, 0, 0, 0, 0, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 179, 0, 0, 0, 0, 159 }; /* ASCII to CG translation table. */ unsigned char asc2cg[256] = { /*00*/ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /*08*/ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /*10*/ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /*18*/ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /*20*/ 0x10, 0x19, 0x13, 0x2c, 0x1a, 0x2e, 0x30, 0x12, /*28*/ 0x0d, 0x0c, 0xbf, 0x35, 0x33, 0x31, 0x32, 0x14, /*30*/ 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, /*38*/ 0x28, 0x29, 0x34, 0xbe, 0x09, 0x11, 0x08, 0x18, /*40*/ 0x2d, 0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, /*48*/ 0xa7, 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, /*50*/ 0xaf, 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, /*58*/ 0xb7, 0xb8, 0xb9, 0x0a, 0x15, 0x0b, 0x3a, 0x2f, /*60*/ 0x3d, 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, /*68*/ 0x87, 0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, 0x8e, /*70*/ 0x8f, 0x90, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, /*78*/ 0x97, 0x98, 0x99, 0x0f, 0x16, 0x0e, 0x3b, 0x00, /*80*/ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /*88*/ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /*90*/ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /*98*/ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /*a0*/ 0x01, 0x6e, 0x1b, 0x1c, 0x1f, 0x1d, 0x17, 0x2b, /*a8*/ 0x3c, 0xd0, 0x6a, 0x6c, 0x36, 0x07, 0xd1, 0x37, /*b0*/ 0x38, 0xd6, 0x68, 0x69, 0x3e, 0x54, 0x1e, 0x39, /*b8*/ 0x3f, 0x67, 0x6b, 0x6d, 0x4b, 0x4c, 0x4d, 0x6f, /*c0*/ 0x60, 0x7a, 0x75, 0x65, 0x70, 0xbc, 0xba, 0xbd, /*c8*/ 0x61, 0x7b, 0x76, 0x71, 0x62, 0x7c, 0x77, 0x72, /*d0*/ 0xd7, 0x7f, 0x63, 0x7d, 0x78, 0x66, 0x73, 0x5b, /*d8*/ 0xbb, 0x64, 0x7e, 0x79, 0x74, 0x48, 0xd9, 0x2a, /*e0*/ 0x40, 0x5a, 0x55, 0x45, 0x50, 0x9c, 0x9a, 0x4f, /*e8*/ 0x41, 0x4a, 0x56, 0x51, 0x42, 0x5c, 0x57, 0x52, /*f0*/ 0xf7, 0x5f, 0x43, 0x5d, 0x58, 0x46, 0x53, 0x9d, /*f8*/ 0x9b, 0x44, 0x5e, 0x59, 0x4e, 0x49, 0xf9, 0x47 }; int main(int argc, char *argv[]) { int i; unsigned char ebc2cg[256]; unsigned short cg2u[256]; /* Use hebrew_remap to rearrange ebc2cg0 into a Hebrew ebc2cg. */ /*memcpy(ebc2cg, ebc2cg0, sizeof(ebc2cg));*/ memset(ebc2cg, '\0', sizeof(ebc2cg)); for (i = 0; i < 256; i++) { if (hebrew_remap[i] != 0) ebc2cg[i] = asc2cg[hebrew_remap[i]]; } /* Now create cg2u from ebc2cg and cp424. */ memset(cg2u, '\0', sizeof(cg2u)); for (i = 0x41; i <= 0xfe; i++) { if ((cp424[i-0x41] & 0xff00) == 0x0500) cg2u[ebc2cg[i]] = cp424[i-0x41]; } /* Dump cg2u out. */ for (i = 0; i < 256; i++) { if (i && !(i % 4)) printf("\n"); if (!(i % 4)) printf("\t /* CG %03x */ ", i); printf("0x%08x, ", cg2u[i]); } printf("\n"); return 0; } suite3270-4.1/ConvTools/ibm-1027_P100-1995.ucm000077700000000000000000000000001413735575200243452../Common/ibm-1027_P100-1995.ucmustar00rootroot00000000000000suite3270-4.1/ConvTools/ibm-1385_P100-1997.ucm000077700000000000000000000000001413735575200243672../Common/ibm-1385_P100-1997.ucmustar00rootroot00000000000000suite3270-4.1/ConvTools/ibm-1388_P103-2001.ucm000077700000000000000000000000001413735575200243252../Common/ibm-1388_P103-2001.ucmustar00rootroot00000000000000suite3270-4.1/ConvTools/ibm-300_P110-1997.ucm000077700000000000000000000000001413735575200241752../Common/ibm-300_P110-1997.ucmustar00rootroot00000000000000suite3270-4.1/ConvTools/ibm-837_P100-2000.ucm000077700000000000000000000000001413735575200241512../Common/ibm-837_P100-2000.ucmustar00rootroot00000000000000suite3270-4.1/ConvTools/ibm-937_P110-1999.ucm000077700000000000000000000000001413735575200242412../Common/ibm-937_P110-1999.ucmustar00rootroot00000000000000suite3270-4.1/ConvTools/jisx-201.ucm000077700000000000000000000000001413735575200223712../Common/jisx-201.ucmustar00rootroot00000000000000suite3270-4.1/ConvTools/jisx-208.ucm000077700000000000000000000000001413735575200224072../Common/jisx-208.ucmustar00rootroot00000000000000suite3270-4.1/Makefile.aux000066400000000000000000000112261413735575200152750ustar00rootroot00000000000000# Copyright (c) 2015-2017 Paul Mattes. # All rights reserved. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # * Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # * Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in the # documentation and/or other materials provided with the distribution. # * Neither the name of Paul Mattes nor his contributors may be used # to endorse or promote products derived from this software without # specific prior written permission. # # THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS OR # IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES # OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN # NO EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, # SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED # TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR # PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF # LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING # NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS # SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. # Top-level auxiliary Makefile for suite3270. all: @echo "Must pick a specific make target." @false FORCE: src.tgz: prepare man Webpage program-src ./mktar.sh prepare: configure configure: configure.in autoconf prepare: lib-prepare c3270-prepare s3270-prepare b3270-prepare tcl3270-prepare x3270-prepare pr3287-prepare x3270if-prepare mitm-prepare Webpage-prepare lib-prepare: cd lib && $(MAKE) -f Makefile.aux prepare c3270-prepare: cd c3270 && $(MAKE) -f Makefile.aux prepare s3270-prepare: cd s3270 && $(MAKE) -f Makefile.aux prepare b3270-prepare: cd b3270 && $(MAKE) -f Makefile.aux prepare tcl3270-prepare: cd tcl3270 && $(MAKE) -f Makefile.aux prepare x3270-prepare: cd x3270 && $(MAKE) -f Makefile.aux prepare pr3287-prepare: cd pr3287 && $(MAKE) -f Makefile.aux prepare x3270if-prepare: cd x3270if && $(MAKE) -f Makefile.aux prepare mitm-prepare: cd mitm && $(MAKE) -f Makefile.aux prepare Webpage-prepare: cd Webpage && $(MAKE) -f Makefile.aux prepare man: prepare man: c3270-man s3270-man b3270-man tcl3270-man x3270-man pr3287-man x3270if-man mitm-man wc3270-man ws3270-man wb3270-man wpr3287-man wx3270if-man wmitm-man c3270-man: cd c3270 && $(MAKE) -f Makefile.aux man s3270-man: cd s3270 && $(MAKE) -f Makefile.aux man b3270-man: cd b3270 && $(MAKE) -f Makefile.aux man tcl3270-man: cd tcl3270 && $(MAKE) -f Makefile.aux man x3270-man: cd x3270 && $(MAKE) -f Makefile.aux man pr3287-man: cd pr3287 && $(MAKE) -f Makefile.aux man x3270if-man: cd x3270if && $(MAKE) -f Makefile.aux man mitm-man: cd mitm && $(MAKE) -f Makefile.aux man wc3270-man: cd wc3270 && $(MAKE) -f Makefile.aux man ws3270-man: cd ws3270 && $(MAKE) -f Makefile.aux man wb3270-man: cd wb3270 && $(MAKE) -f Makefile.aux man wpr3287-man: cd wpr3287 && $(MAKE) -f Makefile.aux man wx3270if-man: cd wx3270if && $(MAKE) -f Makefile.aux man wmitm-man: cd wmitm && $(MAKE) -f Makefile.aux man Webpage: program-src man FORCE cd Webpage && $(MAKE) program-src: c3270-src.tgz s3270-src.tgz b3270-src.tgz tcl3270-src.tgz x3270-src.tgz pr3287-src.tgz x3270if-src.tgz mitm-src.tgz wc3270-src.tgz ws3270-src.tgz wb3270-src.tgz wpr3287-src.tgz wx3270if-src.tgz wmitm-src.tgz lib-src.tgz lib-src.tgz: cd lib && $(MAKE) -f Makefile.aux src.tgz c3270-src.tgz: cd c3270 && $(MAKE) -f Makefile.aux src.tgz s3270-src.tgz: cd s3270 && $(MAKE) -f Makefile.aux src.tgz b3270-src.tgz: cd b3270 && $(MAKE) -f Makefile.aux src.tgz tcl3270-src.tgz: cd tcl3270 && $(MAKE) -f Makefile.aux src.tgz x3270-src.tgz: cd x3270 && $(MAKE) -f Makefile.aux src.tgz pr3287-src.tgz: cd pr3287 && $(MAKE) -f Makefile.aux src.tgz x3270if-src.tgz: cd x3270if && $(MAKE) -f Makefile.aux src.tgz mitm-src.tgz: cd mitm && $(MAKE) -f Makefile.aux src.tgz wc3270-src.tgz: cd wc3270 && $(MAKE) -f Makefile.aux src.tgz ws3270-src.tgz: cd ws3270 && $(MAKE) -f Makefile.aux src.tgz wb3270-src.tgz: cd wb3270 && $(MAKE) -f Makefile.aux src.tgz wpr3287-src.tgz: cd wpr3287 && $(MAKE) -f Makefile.aux src.tgz wx3270if-src.tgz: cd wx3270if && $(MAKE) -f Makefile.aux src.tgz wmitm-src.tgz: cd wmitm && $(MAKE) -f Makefile.aux src.tgz # Target for building the Inno Setup .exe file and the .zip file. windows-release: man $(MAKE) windows cd wc3270 && $(MAKE) -f Makefile.aux $@ suite3270-4.1/Makefile.in000066400000000000000000000263661413735575200151210ustar00rootroot00000000000000# Copyright (c) 2015-2016, 2018, 2020 Paul Mattes. # All rights reserved. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # * Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # * Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in the # documentation and/or other materials provided with the distribution. # * Neither the name of Paul Mattes nor his contributors may be used # to endorse or promote products derived from this software without # specific prior written permission. # # THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS OR # IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES # OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN # NO EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, # SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED # TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR # PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF # LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING # NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS # SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. # Top-level Makefile for suite3270. all: @T_ALL@ # Cleverness for 'make targets': # MIXED is true if there is at least one Unix target and at least one Windows # target # M1 is true if there is more than one target MIXED := $(shell (echo @T_ALL@ | grep -q '\<[^w]') && (echo @T_ALL@ | grep -q '\<[w]') && echo true) M1 := $(shell test `echo @T_ALL@ | wc -w` -gt 1 && echo true) # List targets targets: @echo "Targets:" @echo " all @T_ALL@" ifdef MIXED @echo " unix build all Unix programs" @echo " windows build all Windows programs" endif @echo " lib build all libraries" ifdef MIXED @echo " unix-lib build all Unix libraries" @echo " windows-lib build all Windows libraries" endif ifdef M1 @echo " build " endif @echo " install install programs" @echo " install.man install man pages" @echo " clean remove all intermediate files" ifdef MIXED @echo " unix-clean remove Unix intermediate files" @echo " windows-clean remove Windows intermediate files" endif @echo " lib-clean remove library intermediate files" ifdef MIXED @echo " unix-lib-clean remove Unix library intermediate files" @echo " windows-lib-clean remove Windows library intermediate files" endif ifdef M1 @echo " -clean remove intermediate files" endif @echo " clobber remove all derived files" ifdef MIXED @echo " unix-clobber remove Unix derived files" @echo " windows-clobber remove Windows derived files" endif @echo " lib-clobber remove library derived files" ifdef MIXED @echo " unix-lib-clobber remove Unix library derived files" @echo " windows-lib-clobber remove Windows library derived files" endif ifdef M1 @echo " -clobber remove derived files" endif # Library ependencies. c3270 s3270 b3270 tcl3270 x3270 pr3287: unix-lib wc3270 ws3270 wb3270 wpr3287: windows-lib # x3270if dependencies. c3270 s3270 b3270 tcl3270 x3270: x3270if wc3270 ws3270 wb3270: wx3270if .PHONY: x3270if # s3270 dependencies. tcl3270: s3270 .PHONY: s3270 # Individual targets. unix-lib: lib3270 lib3270i lib32xx lib3270stubs windows-lib: libw3270 libw3270i libw32xx libw3270stubs libexpat lib: @T_LIB@ lib3270: cd lib/3270 && $(MAKE) lib3270i: cd lib/3270i && $(MAKE) lib32xx: cd lib/32xx && $(MAKE) lib3270stubs: cd lib/3270stubs && $(MAKE) libw3270: libw3270-32 libw3270-64 libw3270-32: cd lib/w3270 && $(MAKE) libw3270-64: cd lib/w3270 && $(MAKE) WIN64=1 libw3270i: libw3270i-32 libw3270i-64 libw3270i-32: cd lib/w3270i && $(MAKE) libw3270i-64: cd lib/w3270i && $(MAKE) WIN64=1 libw32xx: libw32xx-32 libw32xx-64 libw32xx-32: cd lib/w32xx && $(MAKE) libw32xx-64: cd lib/w32xx && $(MAKE) WIN64=1 libw3270stubs: libw3270stubs-32 libw3270stubs-64 libw3270stubs-32: cd lib/w3270stubs && $(MAKE) libw3270stubs-64: cd lib/w3270stubs && $(MAKE) WIN64=1 libexpat: libexpat-32 libexpat-64 libexpat-32: cd lib/libexpat && $(MAKE) libexpat-64: cd lib/libexpat && $(MAKE) WIN64=1 c3270: lib3270 lib3270i lib32xx cd c3270 && $(MAKE) s3270: lib3270 lib32xx cd s3270 && $(MAKE) b3270: lib3270 lib32xx cd b3270 && $(MAKE) tcl3270: lib3270 lib32xx cd tcl3270 && $(MAKE) x3270: lib3270 lib3270i lib32xx cd x3270 && $(MAKE) pr3287: lib32xx cd pr3287 && $(MAKE) x3270if: cd x3270if && $(MAKE) wc3270: wc3270-32 wc3270-64 wc3270-32: libw3270-32 libw3270i-32 libw32xx-32 cd wc3270 && $(MAKE) wc3270-64: libw3270-64 libw3270i-64 libw32xx-64 cd wc3270 && $(MAKE) WIN64=1 ws3270: ws3270-32 ws3270-64 ws3270-32: libw3270-32 libw32xx-32 cd ws3270 && $(MAKE) ws3270-64: libw3270-64 libw32xx-64 cd ws3270 && $(MAKE) WIN64=1 wb3270: wb3270-32 wb3270-64 wb3270-32: libw3270-32 libw32xx-32 cd wb3270 && $(MAKE) wb3270-64: libw3270-64 libw32xx-64 cd wb3270 && $(MAKE) WIN64=1 wpr3287: wpr3287-32 wpr3287-64 wpr3287-32: libw32xx-32 cd wpr3287 && $(MAKE) wpr3287-64: libw32xx-64 cd wpr3287 && $(MAKE) WIN64=1 wx3270if: wx3270if-32 wx3270if-64 wx3270if-32: cd wx3270if && $(MAKE) wx3270if-64: cd wx3270if && $(MAKE) WIN64=1 FORCE: unix: c3270 s3270 b3270 tcl3270 x3270 pr3287 x3270if windows: wc3270 ws3270 wb3270 wpr3287 wx3270if # Installation install unix-install: @T_INSTALL@ x3270-install: x3270 cd x3270 && $(MAKE) install c3270-install: c3270 cd c3270 && $(MAKE) install s3270-install: s3270 cd s3270 && $(MAKE) install b3270-install: b3270 cd b3270 && $(MAKE) install tcl3270-install: tcl3270 cd tcl3270 && $(MAKE) install pr3287-install: pr3287 cd pr3287 && $(MAKE) install x3270if-install: x3270if cd x3270if && $(MAKE) install # Manual page install install.man unix-install.man: @T_INSTALL_MAN@ x3270-install.man: x3270 cd x3270 && $(MAKE) install.man c3270-install.man: c3270 cd c3270 && $(MAKE) install.man s3270-install.man: s3270 cd s3270 && $(MAKE) install.man b3270-install.man: b3270 cd b3270 && $(MAKE) install.man tcl3270-install.man: tcl3270 cd tcl3270 && $(MAKE) install.man pr3287-install.man: pr3287 cd pr3287 && $(MAKE) install.man x3270if-install.man: x3270if cd x3270if && $(MAKE) install.man # Clean and clobber targets clean: @T_CLEAN@ unix-lib-clean: lib3270-clean lib3270i-clean lib32xx-clean lib3270stubs-clean windows-lib-clean: libw3270-clean libw3270i-clean libw32xx-clean libw3270stubs-clean libexpat-clean lib-clean: @T_LIB_CLEAN@ unix-clean: @T_UNIX_CLEAN@ windows-clean: @T_WINDOWS_CLEAN@ lib3270-clean: cd lib/3270 && $(MAKE) clean lib3270i-clean: cd lib/3270i && $(MAKE) clean lib32xx-clean: cd lib/32xx && $(MAKE) clean lib3270stubs-clean: cd lib/3270stubs && $(MAKE) clean libw3270-clean: libw3270-clean-32 libw3270-clean-64 libw3270-clean-32: cd lib/w3270 && $(MAKE) clean libw3270-clean-64: cd lib/w3270 && $(MAKE) clean WIN64=1 libw3270i-clean: libw3270i-clean-32 libw3270i-clean-64 libw3270i-clean-32: cd lib/w3270i && $(MAKE) clean libw3270i-clean-64: cd lib/w3270i && $(MAKE) clean WIN64=1 libw32xx-clean: libw32xx-clean-32 libw32xx-clean-64 libw32xx-clean-32: cd lib/w32xx && $(MAKE) clean libw32xx-clean-64: cd lib/w32xx && $(MAKE) clean WIN64=1 libw3270stubs-clean: libw3270stubs-clean-32 libw3270stubs-clean-64 libw3270stubs-clean-32: cd lib/w3270stubs && $(MAKE) clean libw3270stubs-clean-64: cd lib/w3270stubs && $(MAKE) clean WIN64=1 libexpat-clean: libexpat-clean-32 libexpat-clean-64 libexpat-clean-32: cd lib/libexpat && $(MAKE) clean libexpat-clean-64: cd lib/libexpat && $(MAKE) clean WIN64=1 x3270-clean: cd x3270 && $(MAKE) clean c3270-clean: cd c3270 && $(MAKE) clean s3270-clean: cd s3270 && $(MAKE) clean b3270-clean: cd b3270 && $(MAKE) clean tcl3270-clean: cd tcl3270 && $(MAKE) clean pr3287-clean: cd pr3287 && $(MAKE) clean x3270if-clean: cd x3270if && $(MAKE) clean wc3270-clean: wc3270-clean-32 wc3270-clean-64 wc3270-clean-32: cd wc3270 && $(MAKE) clean wc3270-clean-64: cd wc3270 && $(MAKE) clean WIN64=1 ws3270-clean: ws3270-clean-32 ws3270-clean-64 ws3270-clean-32: cd ws3270 && $(MAKE) clean ws3270-clean-64: cd ws3270 && $(MAKE) clean WIN64=1 wb3270-clean: wb3270-clean-32 wb3270-clean-64 wb3270-clean-32: cd wb3270 && $(MAKE) clean wb3270-clean-64: cd wb3270 && $(MAKE) clean WIN64=1 wx3270if-clean: wx3270if-clean-32 wx3270if-clean-64 wx3270if-clean-32: cd wx3270if && $(MAKE) clean wx3270if-clean-64: cd wx3270if && $(MAKE) clean WIN64=1 clobber: @T_CLOBBER@ unix-lib-clobber: lib3270-clobber lib3270i-clobber lib32xx-clobber lib3270stubs-clobber windows-lib-clobber: libw3270-clobber libw3270i-clobber libw32xx-clobber libw3270stubs-clobber libexpat-clobber lib-clobber: @T_LIB_CLOBBER@ unix-clobber: @T_UNIX_CLOBBER@ windows-clobber: @T_WINDOWS_CLOBBER@ lib3270-clobber: cd lib/3270 && $(MAKE) clobber lib3270i-clobber: cd lib/3270i && $(MAKE) clobber lib32xx-clobber: cd lib/32xx && $(MAKE) clobber lib3270stubs-clobber: cd lib/3270stubs && $(MAKE) clobber libw3270-clobber: libw3270-clobber-32 libw3270-clobber-64 libw3270-clobber-32: cd lib/w3270 && $(MAKE) clobber libw3270-clobber-64: cd lib/w3270 && $(MAKE) clobber WIN64=1 libw3270i-clobber: libw3270i-clobber-32 libw3270i-clobber-64 libw3270i-clobber-32: cd lib/w3270i && $(MAKE) clobber libw3270i-clobber-64: cd lib/w3270i && $(MAKE) clobber WIN64=1 libw32xx-clobber: libw32xx-clobber-32 libw32xx-clobber-64 libw32xx-clobber-32: cd lib/w32xx && $(MAKE) clobber libw32xx-clobber-64: cd lib/w32xx && $(MAKE) clobber WIN64=1 libw3270stubs-clobber: libw3270stubs-clobber-32 libw3270stubs-clobber-64 libw3270stubs-clobber-32: cd lib/w3270stubs && $(MAKE) clobber libw3270stubs-clobber-64: cd lib/w3270stubs && $(MAKE) clobber WIN64=1 libexpat-clobber: libexpat-clobber-32 libexpat-clobber-64 libexpat-clobber-32: cd lib/libexpat && $(MAKE) clobber libexpat-clobber-64: cd lib/libexpat && $(MAKE) clobber WIN64=1 x3270-clobber: cd x3270 && $(MAKE) clobber c3270-clobber: cd c3270 && $(MAKE) clobber s3270-clobber: cd s3270 && $(MAKE) clobber b3270-clobber: cd b3270 && $(MAKE) clobber tcl3270-clobber: cd tcl3270 && $(MAKE) clobber pr3287-clobber: cd pr3287 && $(MAKE) clobber x3270if-clobber: cd x3270if && $(MAKE) clobber wc3270-clobber: wc3270-clobber-32 wc3270-clobber-64 wc3270-clobber-32: cd wc3270 && $(MAKE) clobber wc3270-clobber-64: cd wc3270 && $(MAKE) clobber WIN64=1 ws3270-clobber: ws3270-clobber-32 ws3270-clobber-64 ws3270-clobber-32: cd ws3270 && $(MAKE) clobber ws3270-clobber-64: cd ws3270 && $(MAKE) clobber WIN64=1 wb3270-clobber: wb3270-clobber-32 wb3270-clobber-64 wb3270-clobber-32: cd wb3270 && $(MAKE) clobber wb3270-clobber-64: cd wb3270 && $(MAKE) clobber WIN64=1 wpr3287-clobber: wpr3287-clobber-32 wpr3287-clobber-64 wpr3287-clobber-32: cd wpr3287 && $(MAKE) clobber wpr3287-clobber-64: cd wpr3287 && $(MAKE) clobber WIN64=1 wx3270if-clobber: wx3270if-clobber-32 wx3270if-clobber-64 wx3270if-clobber-32: cd wx3270if && $(MAKE) clobber wx3270if-clobber-64: cd wx3270if && $(MAKE) clobber WIN64=1 suite3270-4.1/Playback/000077500000000000000000000000001413735575200145655ustar00rootroot00000000000000suite3270-4.1/Playback/.gitignore000066400000000000000000000000151413735575200165510ustar00rootroot00000000000000playback *.o suite3270-4.1/Playback/Makefile000066400000000000000000000002621413735575200162250ustar00rootroot00000000000000CFLAGS = -g -Wall -Werror -ansi -pedantic -D_XOPEN_SOURCE -D_XOPEN_SOURCE_EXTENDED -D_DEFAULT_SOURCE all: playback playback: playback.o $(CC) $(CFLAGS) -o playback playback.o suite3270-4.1/Playback/Makefile.aux000066400000000000000000000031031413735575200170160ustar00rootroot00000000000000# Copyright (c) 2013, 2015 Paul Mattes. # All rights reserved. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # * Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # * Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in the # documentation and/or other materials provided with the distribution. # * Neither the name of Paul Mattes nor his contributors may be used # to endorse or promote products derived from this software without # specific prior written permission. # # THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS OR # IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES # OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN # NO EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, # SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED # TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR # PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF # LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING # NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS # SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. # Auxiliary makefile for Playback utility. all: @echo "Must pick a specific make target." src.tgz: suite3270-4.1/Playback/playback.c000066400000000000000000000263511413735575200165260ustar00rootroot00000000000000/* * Copyright (c) 1994-2009, 2014, 2019 Paul Mattes. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of Paul Mattes nor his contributors may be used * to endorse or promote products derived from this software without * specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. */ /* * Playback file facility for x3270 */ #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #define PORT 4001 #define BSIZE 16384 #define LINEDUMP_MAX 32 int port = PORT; char *me; static enum { NONE, WRONG, BASE, LESS, SPACE, ZERO, X, N, SPACE2, D1, D2 } pstate = NONE; static enum { T_NONE, T_IAC } tstate = T_NONE; int fdisp = 0; static void process(FILE *f, int s); typedef enum { STEP_LINE, /* step one line in the file */ STEP_EOR, /* step until IAC EOR */ STEP_MARK /* step until a mark (line starting with '+') */ } step_t; static int step(FILE *f, int s, step_t type); static int process_command(FILE *f, int s); void usage(void) { fprintf(stderr, "usage: %s [-p port] file\n", me); exit(1); } int main(int argc, char *argv[]) { int c; FILE *f; int s; union { struct sockaddr sa; #if defined(AF_INET6) /*[*/ struct sockaddr_in6 sin6; #else /*][*/ struct sockaddr_in sin; #endif /*]*/ } addr; #if defined(AF_INET6) /*[*/ int proto = AF_INET6; #else /*][*/ int proto = AF_INET; #endif /*]*/ int addrlen = sizeof(addr); int one = 1; socklen_t len; int flags; /* Parse command-line arguments */ if ((me = strrchr(argv[0], '/')) != NULL) { me++; } else { me = argv[0]; } while ((c = getopt(argc, argv, "p:")) != -1) { switch (c) { case 'p': port = atoi(optarg); break; default: usage(); } } if (argc - optind != 1) { usage(); } /* Open the file. */ f = fopen(argv[optind], "r"); if (f == NULL) { perror(argv[optind]); exit(1); } /* Listen on a socket. */ s = socket(proto, SOCK_STREAM, 0); if (s < 0) { perror("socket"); exit(1); } if (setsockopt(s, SOL_SOCKET, SO_REUSEADDR, (char *)&one, sizeof(one)) < 0) { perror("setsockopt"); exit(1); } memset(&addr, '\0', sizeof(addr)); addr.sa.sa_family = proto; #if defined(AF_INET6) /*[*/ addr.sin6.sin6_port = htons(port); #else /*][*/ addr.sin.sin_port = htons(port); #endif /*]*/ if (bind(s, &addr.sa, addrlen) < 0) { perror("bind"); exit(1); } if (listen(s, 1) < 0) { perror("listen"); exit(1); } if ((flags = fcntl(s, F_GETFL)) < 0) { perror("fcntl(F_GETFD)"); exit(1); } if (fcntl(s, F_SETFL, flags | O_NONBLOCK) < 0) { perror("fcntl(F_SETFD)"); exit(1); } signal(SIGPIPE, SIG_IGN); /* Accept connections and process them. */ for (;;) { int s2; #if defined(AF_INET6) /*[*/ char buf[INET6_ADDRSTRLEN]; #endif /*]*/ memset((char *)&addr, '\0', sizeof(addr)); addr.sa.sa_family = proto; len = addrlen; printf("Waiting for connection on port %u.\n", port); for (;;) { fd_set rfds; int ns; FD_ZERO(&rfds); FD_SET(0, &rfds); FD_SET(s, &rfds); printf("playback> "); fflush(stdout); ns = select(s + 1, &rfds, NULL, NULL, NULL); if (ns < 0) { perror("select"); exit(1); } if (FD_ISSET(0, &rfds)) { process_command(NULL, -1); } if (FD_ISSET(s, &rfds)) { break; } } s2 = accept(s, &addr.sa, &len); if (s2 < 0) { perror("accept"); continue; } printf("\nConnection from %s, port %u.\n", #if defined(AF_INET6) /*[*/ inet_ntop(proto, &addr.sin6.sin6_addr, buf, INET6_ADDRSTRLEN) + (IN6_IS_ADDR_V4MAPPED(&addr.sin6.sin6_addr)? 7: 0), ntohs(addr.sin6.sin6_port) #else /*][*/ inet_ntoa(addr.sin.sin_addr), ntohs(addr.sin.sin_port) #endif /*]*/ ); rewind(f); pstate = BASE; fdisp = 0; process(f, s2); } } /* * Process a command on stdin. * * f is NULL and s is -1 if we are not connected. * * Returns 0 for no change, -1 to stop processing the file. */ static int process_command(FILE *f, int s) { char buf[BUFSIZ]; size_t sl; char *t; if (fgets(buf, BUFSIZ, stdin) == NULL) { printf("\n"); exit(0); } sl = strlen(buf); if (sl > 0 && buf[sl - 1] == '\n') { buf[sl - 1] = '\0'; } t = buf; while (*t == ' ') { t++; } if (!*t) { return 0; } if (!strncmp(t, "s", 1)) { /* step line */ if (f == NULL) { printf("Not connected.\n"); return 0; } if (!step(f, s, STEP_LINE)) { return -1; } } else if (!strncmp(t, "r", 1)) { /* step record */ if (f == NULL) { printf("Not connected.\n"); return 0; } if (!step(f, s, STEP_EOR)) { return -1; } } else if (!strncmp(t, "t", 1)) { /* to mark */ if (f == NULL) { printf("Not connected.\n"); return 0; } if (!step(f, s, STEP_MARK)) { return -1; } } else if (!strncmp(t, "e", 1)) { /* to EOF */ if (f == NULL) { printf("Not connected.\n"); return 0; } while (step(f, s, STEP_EOR)) { usleep(1000000 / 4); } return -1; } else if (!strncmp(t, "q", 1)) { /* quit */ exit(0); } else if (!strncmp(t, "d", 1)) { /* disconnect */ if (f == NULL) { printf("Not connected.\n"); return 0; } return -1; } else if (t[0] == '?' || t[0] == 'h') { printf("\ s: step line\n\ r: step record\n\ t: to mark\n\ e: play to EOF\n\ q: quit\n\ d: disconnect\n\ ?: help\n"); } else { printf("%c? Use '?' for help.\n", *t); } return 0; } /* Trace data from the host or emulator. */ void trace_netdata(char *direction, unsigned char *buf, int len) { int offset; printf("\n"); for (offset = 0; offset < len; offset++) { if (!(offset % LINEDUMP_MAX)) { printf("%s%s 0x%-3x ", (offset ? "\n" : ""), direction, offset); } printf("%02x", buf[offset]); } printf("\n"); } /* * Process commands until a file is exhausted or we get a 'quit' command or * EOF. */ static void process(FILE *f, int s) { char buf[BSIZE]; /* Loop, looking for keyboard input or emulator response. */ for (;;) { fd_set rfds; int ns; printf("playback> "); fflush(stdout); FD_ZERO(&rfds); FD_SET(s, &rfds); FD_SET(0, &rfds); ns = select(s+1, &rfds, NULL, NULL, NULL); if (ns < 0) { perror("select"); exit(1); } if (ns == 0) { continue; } if (FD_ISSET(s, &rfds)) { int nr; nr = read(s, buf, BSIZE); if (nr < 0) { perror("read"); break; } if (nr == 0) { printf("Emulator disconnected.\n"); break; } trace_netdata("emul", (unsigned char *)buf, nr); } if (FD_ISSET(0, &rfds)) { if (process_command(f, s) < 0) { break; } } } close(s); pstate = NONE; tstate = T_NONE; fdisp = 0; return; } /* * Step through the file. * * Returns 0 for EOF, nonzeo otherwise. */ static int step(FILE *f, int s, step_t type) { int c = 0; static int d1; static char hexes[] = "0123456789abcdef"; # define isxd(c) strchr(hexes, c) static int again = 0; char obuf[BSIZE]; char *cp = obuf; int at_mark = 0; int stop_eor = 0; # define NO_FDISP { if (fdisp) { printf("\n"); fdisp = 0; } } top: while (again || ((c = fgetc(f)) != EOF)) { if (c == '\r') { continue; } if (!again) { if (!fdisp || c == '\n') { printf("\nfile "); fdisp = 1; } if (c != '\n') { putchar(c); } } again = 0; switch (pstate) { case NONE: assert(pstate != NONE); break; case WRONG: if (c == '\n') { pstate = BASE; } break; case BASE: if (c == '+' && (type == STEP_MARK)) { /* Hit the mark. */ at_mark = 1; goto run_it; } if (c == '<') { pstate = LESS; } else { pstate = WRONG; again = 1; } break; case LESS: if (c == ' ') { pstate = SPACE; } else { pstate = WRONG; again = 1; } break; case SPACE: if (c == '0') { pstate = ZERO; } else { pstate = WRONG; again = 1; } break; case ZERO: if (c == 'x') { pstate = X; } else { pstate = WRONG; again = 1; } break; case X: if (isxd(c)) { pstate = N; } else { pstate = WRONG; again = 1; } break; case N: if (isxd(c)) { pstate = N; } else if (c == ' ' || c == '\t') { pstate = SPACE2; } else { pstate = WRONG; again = 1; } break; case SPACE2: if (isxd(c)) { d1 = strchr(hexes, c) - hexes; pstate = D1; cp = obuf; } else if (c == ' ' || c == '\t') { pstate = SPACE2; } else { pstate = WRONG; again = 1; } break; case D1: if (isxd(c)) { int at_eor = 0; *cp = ((d1*16)+(strchr(hexes,c)-hexes)); pstate = D2; switch (tstate) { case T_NONE: if (*(unsigned char *)cp == IAC) { tstate = T_IAC; } break; case T_IAC: if (*(unsigned char *)cp == EOR && type == STEP_EOR) { at_eor = 1; } tstate = T_NONE; break; } cp++; if (at_eor && type == STEP_EOR) { stop_eor = 1; } if (at_eor || (cp - obuf >= BUFSIZ)) { goto run_it; } } else { NO_FDISP; printf("Non-hex char '%c' in playback file, skipping to " "newline.", c); pstate = WRONG; again = 1; } break; case D2: if (isxd(c)) { d1 = strchr(hexes, c) - hexes; pstate = D1; } else if (c == '\n') { pstate = BASE; goto run_it; } else { NO_FDISP; printf("Non-hex char '%c' in playback file, skipping to " "newline.", c); pstate = WRONG; again = 1; } break; } } goto done; run_it: NO_FDISP; trace_netdata("host", (unsigned char *)obuf, cp - obuf); if (write(s, obuf, cp - obuf) < 0) { perror("socket write"); return 0; } if (type == STEP_EOR && !stop_eor) { cp = obuf; goto top; } if (type == STEP_MARK && !at_mark) { cp = obuf; goto top; } return 1; done: if (c == EOF) { NO_FDISP; printf("Playback file EOF.\n"); } return 0; } suite3270-4.1/Playback/playback.man000066400000000000000000000022441413735575200170520ustar00rootroot00000000000000'\" t .TH PLAYBACK 1 "25 October 1994" .SH NAME playback \- .SM IBM x3270 trace file playback tool .SH SYNOPSIS .B playback [ .B \-p .I port ] .I trace_file .SH DESCRIPTION .B playback opens a trace file (presumably created by the .B x3270 .I "Trace Data Stream" facility) and plays the host data it contains back over a socket to processes that connect to it. It also displays the data produced by the process in response. .LP Once connected to a process, .B playback is used interactively. Keyboard commands control the flow of data from the file to the socket. These commands are: .TP .B s Send one line of data. .TP .B r Send one record of data (send data until the TELNET EOR sequence is reached). .TP .B q Exit .B playback. .TP .B d Disconnect the current socket and wait for another connection. .SH EXAMPLE Suppose you wanted to play back a trace file called .B /usr/tmp/x3trc.12345. In one window, run: .sp playback /usr/tmp/x3trc.12345 .LP In another window, start .B x3270 with the command: .sp x3270 localhost 4001 .LP .B playback will announce the connection. .LP Thereafter, the .B s and .B r commands will send data from the file to .B x3270. .SH "SEE ALSO" .IR x3270 (1) suite3270-4.1/README.md000066400000000000000000000002201413735575200143100ustar00rootroot00000000000000x3270 is a family of IBM 3270 terminal emulators and related tools. Primary documentation is here: suite3270-4.1/ReleaseTools/000077500000000000000000000000001413735575200154405ustar00rootroot00000000000000suite3270-4.1/ReleaseTools/CopyrightCheck000077500000000000000000000003751413735575200203010ustar00rootroot00000000000000#!/usr/bin/env bash # Check for out-of-date copyrights svn list -R | while read f do case $f in */) continue ;; esac if svn log $f | grep 2008- >/dev/null then if grep 'Copyright.*2008' $f >/dev/null then : else echo $f fi fi done suite3270-4.1/ReleaseTools/check-ssl000077500000000000000000000007421413735575200172450ustar00rootroot00000000000000#!/usr/bin/env bash # Check the OpenSSL DLL link. link="Win32OpenSSL_Light" urlfile=Webpage/openssl-url.txt # Check that we are in the right place. if [ ! -f $urlfile ] then echo >&2 "Must run from top of tree." exit 1 fi # Get the URL. . $urlfile # Set up the temp file. tf=/tmp/ch.$$ rm -f $tf rc=0 # See if it's accessible. if wget $URL32 -O /dev/null >$tf 2>&1 then echo "The link is still good." else echo "*** FAILURE ***" cat $tf rc=1 fi rm -f $tf exit $rc suite3270-4.1/ReleaseTools/cs000077500000000000000000000017141413735575200157760ustar00rootroot00000000000000#!/usr/bin/env bash # Wrapper for cscope function usage() { echo >&2 "usage: $me [-u|-b]" exit 1 } me=${0##*/} unset update build while [ "$1" != "" ] do case "$1" in -b) build=1 ;; -u) update=1 ;; *) usage ;; esac shift done [ "$update" -a "$build" ] && usage if [ "$update" ] then # update the database cscope -u elif [ "$build" ] then # (re-)build the database /bin/rm -f cscope.* # Find plain files. find * -name '*.[ch]' ! -type l -print >cscope.files # Find symbolic links in the current directory. find * -type d -prune -o -name '*.[ch]' -type l -printf "%l\n" >>cscope.files # Find symbolic links in subdirectories one level deep. # What I really want is 'find' to work sort of like 'tar -h', but that # doesn't seem to be possible. find * -type d -print -prune | while read d do find $d/* -type d -prune -o -name '*.[ch]' -printf "%l\n" | sed 's/^\.\.\///' done >>cscope.files cscope -b -i cscope.files else # just run cscope -d fi suite3270-4.1/ReleaseTools/make-all000077500000000000000000000075541413735575200170640ustar00rootroot00000000000000#!/usr/bin/env bash # Make everything. Really. # Must be run in the top-level directory. # By default, builds but does not release. # With -release, releases. # By default, builds everything. # Can specify individual products as arguments. # If anything fails, stop. set -e # Make sure 'sort' works correctly. export LC_ALL="C" build=1 release="" all_prods="x3270 tcl3270 s3270 pr3287 c3270 wc3270 wpr3287 ws3270 Playback" function usage { echo >&2 "Usage: $0 [--release] [--win32] [...]" exit 0 } # Parse the options. while [ $# -gt 0 ] do case "$1" in -help|--help) usage ;; -release|--release) release=1 shift ;; -win32|--win32|-windows|--windows) all_prods="wc3270 wpr3287 ws3270" just_win32=1 shift ;; -*) usage ;; *) break ;; esac done # Set up the product list. if [ $# -gt 0 ] then prods=$* else prods=$all_prods [ -z "$just_win32" ] && all=1 fi # Check for a full Windows release. if [[ "$build" && \ "$prods" =~ wc3270 && \ "$prods" =~ ws3270 && \ "$prods" =~ wpr3287 ]] then winrel=1; fi # Make sure the product directories exist. for i in $prods do if [ ! -d "$i" ] then echo >&2 "No $i directory -- must be run from top-level dir." exit 1 fi done # Trace whatever we do. #set -x # Pull in the version. source Common/version.txt d1=$PWD reldir=$d1/../../Release suite=suite3270-$version-src.tgz setup=wc3270-$version-setup.exe zip32=wc3270-$version-noinstall-32.zip zip64=wc3270-$version-noinstall-64.zip ver=${version%%[a-z]*} # Check for existing targets before we do any real work. if [ "$release" ] then for prod in $prods do if [ -f $reldir/$prod-$version-src.tgz ] then echo >&2 "$prod-$version-src.tgz already exists" exit 1 fi done if [ "$all" -a -f $reldir/$suite ] then echo >&2 "$suite already exists" exit 1 fi if [ "$winrel" -a -f $reldir/$setup ] then echo >&2 "$setup already exists" exit 1 fi if [ "$winrel" -a -f $reldir/$zip32 ] then echo >&2 "$zip32 already exists" exit 1 fi if [ "$winrel" -a -f $reldir/$zip64 ] then echo >&2 "$zip64 already exists" exit 1 fi fi # Build the tarball. echo "===== Building the tarball." make -f Makefile.aux -j4 src.tgz # Work in a clean temporary directory tmpdir=/hd/xfer/mka rm -rf $tmpdir mkdir $tmpdir cd $tmpdir tar -xzf $d1/$suite builddir=$tmpdir/suite3270-$ver cd $builddir # Configure. if [ "$prods" != Playback ] then # Configure. for prod in $prods do if [ "$prod" != Playback ] then enable="$enable --enable-$prod" fi done echo "===== Configuring." ./configure $enable # Build. echo "===== Building." make -j4 CDEBUGFLAGS="-g -Werror" fi # Test the installation. for prod in $prods do cd $builddir # Build it. d2=$d1/$prod if [ "$build" ] then cd $prod if [ "$prod" = Playback ] then echo "===== Building $prod." make -j4 fi if [ -f $d2/instlist.base ] then echo "===== Test installing $prod (base)." mkdir i make install DESTDIR=$PWD/i find i -print | tail -n +2 | sed 's/^..//' | sort >cmp.files diff $d2/instlist.base cmp.files || exit 1 rm -rf i fi if [ -f $d2/instlist.man ] then echo "===== Test installing $prod (man)." mkdir i make install.man DESTDIR=$PWD/i find i -print | tail -n +2 | sed 's/^..//' | sort >cmp.files diff $d2/instlist.man cmp.files || exit 1 rm -rf i fi fi done # Release wc3270 via Inno Setup under Wine. if [ "$winrel" ] then echo "===== Building setup.exe and noinstall.zip." cd $builddir make -f Makefile.aux -j4 windows-release fi # Release each product. if [ "$release" ] then echo "===== Releasing." # Release the tarball. if [ "$all" ] then cp -p $d1/$suite $reldir/ chmod ugo-w $reldir/$suite fi # Release the setup.exe and zip file. if [ "$winrel" ] then cp -p $builddir/wc3270/$setup $builddir/wc3270/$zip32 $builddir/wc3270/$zip64 $reldir/ chmod ugo-w $reldir/$setup $reldir/$zip32 $reldir/$zip64 fi fi suite3270-4.1/ReleaseTools/mega-tarball000077500000000000000000000016171413735575200177230ustar00rootroot00000000000000#!/usr/bin/env bash # Make a mega-tarball for a given release. # Must be run from the Release directorty. if [ $# -ne 1 ] then echo >&2 "usage: $0 release-num" exit 1 fi if [ ${PWD##*/} != Release ] then echo >&2 "must be run from the Release directory" exit 1 fi set -e #set -x if [[ "$1" = *p? ]] then typeset -i patch=${1##*p} echo "Is patch $patch." rev=${1%p*} else echo "Is a base release." typeset -i patch=0 rev=$1 fi td=/tmp/mt$$ rm -rf $td mkdir $td cd $td for i in x3270 c3270 wc3270 s3270 ws3270 tcl3270 pr3287 wpr3287 do typeset -i pp=$patch while (( pp >= 0 )) do if [ $pp -eq 0 ] then f=~-/$i-$rev-src.tgz else f=~-/$i-${rev}p$pp-src.tgz fi [ -f $f ] && break if [ $pp -eq 0 ] then echo >&2 "Can't find a matching rev of $i" exit 1 fi pp=pp-1 done echo "Using $f" tar -xzf $f done tar -czf ~-/suite3270-$1-src.tgz * chmod -w ~-/suite3270-$1-src.tgz cd - rm -rf $td suite3270-4.1/ReleaseTools/mingwmakedep000077500000000000000000000013711413735575200200400ustar00rootroot00000000000000#!/usr/bin/env bash # gccmakedep for MinGW # Does not include system headers -- just local files # mingwmakedep -C compiler <-I, -D, -U> usage() { echo >&2 "usage: $me [-C compiler] [-I... -D... -U...] source-files" exit 1 } me=${0##*/} compiler=gcc if [ "X$1" = X-C ] then compiler=$2 shift 2 fi unset args unset srcs while [ $# -gt 0 ] do case "$1" in -I*|-D*|-U*) args="$args $1" shift ;; -*) echo >&2 "unknown option $1" usage ;; *) srcs="$srcs $1" shift ;; esac done for cfile in $srcs do deps=$($compiler -E $args $cfile | grep '^# 1 ' | sed 's/^# 1 "\(.*\)".*/\1/' | sed 's/^\.\///' | sort -u | grep -v '^<' | grep -v '^/usr/lib' | grep -v $cfile) echo "${cfile%.c}.o: $(echo $deps)" done suite3270-4.1/ReleaseTools/patch-build000077500000000000000000000036641413735575200175730ustar00rootroot00000000000000#!/usr/bin/env bash # Build patched tarfiles. # We cannot fail. set -e # Remember where we are. pwd=$PWD release=$pwd/../../Release # Pull in the current version number. if [ "X$1" = "X-v" ] then shift version=$1 shift else source x3270/version.txt fi base_version=${version%.*} # Define the product list. if [ $# -gt 0 ] then products="$*" else products="x3270 s3270 c3270 tcl3270 pr3287" fi # Figure out the patch level of the release. That's the highest-numbered # patch of any of the patches we find. Note that so they sort as text, # patch numbers are two digits, with an optional leading zero. The patch level # appended to the version number, however, doesn't have the zero. #pl=0 #for product in $products #do patch_pattern="$release/Patches/$product-$version-*.txt" # patches=$(echo $patch_pattern) # if [ "$patches" != "$patch_pattern" ] # then for patch in $patches # do p=${patch##*-} # p=${p%.txt} # p=${p#0} # if [ $p -gt $pl ] # then pl=$p # fi # done # fi #done #echo "Patch level is $pl." # Now make tarballs from the patched versions. for product in $products do patch_pattern="$release/Patches/$product-$version-*.txt" patches=$(echo $patch_pattern) if [ "$patches" != "$patch_pattern" ] then echo "Constructing $product..." pl=0 for patch in $patches do p=${patch##*-} p=${p%.txt} p=${p#0} if [ $p -gt $pl ] then pl=$p fi done echo "Patch level for $product is $pl." tdir=/usr/tmp/$product rm -rf $tdir mkdir $tdir cd $tdir tar -xzf $release/$product-$version.tgz for patch in $patches do patch -p0 <$patch done cd $product-$base_version sed "s/^version=\"$version/&p$pl/" version.txt >v2 chmod -w v2 rm -f version.txt mv v2 version.txt if [ -f $pwd/x3270/README.p$pl ] then cp -p $pwd/x3270/README.p$pl . fi cd .. tarball=$release/$product-${version}p$pl.tgz tar -czf $tarball $product-$base_version chmod -w $tarball cd $pwd rm -rf $tdir fi done suite3270-4.1/ReleaseTools/permute000077500000000000000000000071471413735575200170600ustar00rootroot00000000000000#!/usr/bin/env bash # Run through all possible configuration combinations # permute [-n] [-s] [-v] [program...] # -n Just display the combinations # -s Just run the singles # Needs to be run from the top of a source tree (where x3270, s3270, tcl3270 # and c3270 can be seen). TD=${TD-/tmp} ver=3.3 prog=${0##*/} function usage() { echo >&2 "usage $prog [-n] [-s] [-v] [program...]" exit 1 } while (( $# > 0 )) do case $1 in -n) noop=1 shift ;; -s) singles=1 shift ;; -v) verbose=1 shift ;; -*) usage ;; *) break esac done if [ $# -eq 0 ] then progs="x3270 s3270 tcl3270 c3270 pr3287" else progs="$@" fi # Run one iteration # $prog program name # $c configure options # # $TD temporary directory # $noop if 1, display rather than run function iterate() { typeset rc=0 if [ $noop ] then echo $prog: $c else ./configure --without-pr3287 $c >/dev/null 2>&1 || (echo "$prog configure --without-pr3287 $c failed"; exit 1) make clean >/dev/null 2>&1 if mk >$TD/mk$$ 2>&1 then echo -n "." else echo echo "$prog failed: $c" [ $verbose ] && cat $TD/mk$$ rc=1 fi if grep 'warning:' $TD/mk$$ then echo "Warnings: $c" fi rm $TD/mk$$ fi return $rc } # Compute the options for the given iteration. # $1 iteration # # $n_opts number of possible options for this program # $masks[] bit mask for each option # $opts[] name of each option # $nixpr --without-pr3287 option, if applicable function config_opts() { typeset -i x=$1 typeset c="" typeset -i j=0 while (( j < n_opts )) do if (( x & ${masks[$j]} )) then c="$c --${opts[$j]}" fi j=j+1 done echo $c $nixpr } # Count the bits in $1. # $1 integer to evaluate function cob() { typeset -i n=$1 b=1 r=0 while (( $b <= $n )) do if (( $n & $b )) then r=r+1 fi b=b*2 done echo $r } for prog in $progs do echo "Trying $prog." rm -rf $TD/$prog-$ver/ p=$PWD cd $prog make -f Makefile.aux $prog-src.tgz cd $TD/ tar -xzf ~-/$prog-src.tgz cd $prog-$ver/ [ -f $p/$prog/.mk ] && cp $p/$prog/.mk . typeset -i b=1 unset opts[@] if [ $prog = x3270 -o $prog = c3270 ] then nixpr=--without-pr3287 else unset nixpr fi typeset -a opts masks typeset -i n_opts=0 for opt in disable-ansi disable-apl disable-local-process disable-printer disable-script disable-tn3270e disable-trace disable-menus disable-keypad disable-ft disable-ssl disable-dbcs with-iconv disable-ipv6 do unset ok case $opt in disable-dbcs|disable-ssl|with-iconv|disable-ipv6) # apply to all ok=1 ;; disable-ansi|disable-apl|disable-local-process|disable-tn3270e|disable-trace|disable-ft) # apply to all except pr3287 if [ $prog != pr3287 ] then ok=1 fi ;; disable-printer|disable-menus) # only apply to x3270 and c3270 if [ $prog = x3270 -o $prog = c3270 ] then ok=1 fi ;; disable-script) # required for s3270 and tcl3270 if [ $prog != s3270 -a $prog != tcl3270 -a $prog != pr3287 ] then ok=1 fi ;; disable-keypad) # apply only to x3270 if [ $prog = x3270 ] then ok=1 fi ;; esac if [ "$ok" ] then opts[$n_opts]=$opt masks[$n_opts]=$b b=b*2 n_opts=n_opts+1 fi done echo "$prog: possible options are [${opts[@]}]: $b combinations" # Loop through the singles. typeset -i x=0 while (( x < b )) do c=$(config_opts $x) iterate || exit 1 if (( $x == 0 )) then x=1 else x=x*2 fi done # Loop through everything else. if [ ! "$singles" ] then typeset -i x=0 while (( x < b )) do c=$(config_opts $x) typeset nb=$(cob $x) if (( nb > 1 )) then iterate fi x=x+1 done fi echo cd .. rm -rf $prog-$ver/ cd $p done suite3270-4.1/ReleaseTools/scanner000077500000000000000000000010261413735575200170160ustar00rootroot00000000000000#!/usr/bin/env perl use strict; open DEFS, "<../Common/resources.h" or die "No resources file.\n"; my %res; while () { chomp; next unless /^#define\s+Res([A-Za-z0-9]+)\s+/; my $lc = substr $1, 0, 1; $lc =~ tr/[A-Z]/[a-z]/; $res{$lc . substr($1, 1)} = 1; } close DEFS; open DOCS, ") { chomp; next unless /^name\s+([A-Za-z0-9]+)/; $doc{$1} = 1; } close DOCS; foreach my $r (sort keys %res) { if (!defined($doc{$r})) { print "Not documented: $r\n"; } } suite3270-4.1/ReleaseTools/zipit000077500000000000000000000027551413735575200165360ustar00rootroot00000000000000#!/usr/bin/env bash # Create a staged zip file # Change a possibly-relative pathname to a full pathname. function repath { case $1 in /*) echo "$1" ;; *) echo "$PWD/$1" ;; esac } # Pick off '-c' if [ "X$1" = "X-c" ] then comment="$2" shift 2 fi # Pick off '-o' if [ "X$1" = "X-o" ] then ofile="$(repath $2)" shift 2 fi if [ $# -ne 1 ] then echo >&2 "Usage: ZipIt [-c comment] [-o ofile] template-file" exit 1 fi zd=/tmp/zi$$ rm -rf $zd trap "rm -rf $zd" EXIT trap "exit 0" INT mkdir $zd exec 5<$1 || exit 1 while read -u5 kw p1 p2 p3 do case "$kw" in \#*) ;; O) # Output file if [ -z "$p1" ] then echo >&2 "Missing parameter for O" exit 1 fi if [ -n "$p2" ] then echo >&2 "Too many parameters for O" exit 1 fi ofile=$(repath $p1) ;; D) # Create subdir if [ -z "$p1" ] then echo >&2 "Missing parameter for D" exit 1 fi if [ -n "$p2" ] then echo >&2 "Too many parameters for D" exit 1 fi mkdir -p $zd/$p1 ;; F) # File if [ -z "$p1" ] then echo >&2 "Missing parameter(s) for F" exit 1 fi if [ -z "$p2" ] then p2=$p1 fi if [ -n "$p3" ] then echo >&2 "Too many parameters for F" exit 1 fi if [ ! -f "$p1" ] then echo >&2 "No such file: $p1" exit 1 fi ln -s $(repath $p1) $zd/$p2 ;; *) echo >&2 "Unknown keyword '$kw'" exit 1 esac done if [ -z "$ofile" ] then echo >&2 "Must specify output file" exit 1 fi cd $zd if [ -n "$comment" ] then echo "$comment" | zip -r -z -X $ofile . else zip -r -X $ofile . fi cd - suite3270-4.1/Releases000066400000000000000000000014051413735575200145250ustar00rootroot000000000000003.3.10alpha1 575 3.3.10alpha2 589 3.3.10ga3 593 3.3.10ga4 609 3.3.10ga5 673 3.3.11beta2 684 3.3.11beta3 687 3.3.11beta4 697 3.3.11ga6 711 3.3.12alpha3 732 3.3.12ga7 760 3.3.12b9 772 3.3.12ga10 782 3.3.12ga11 788 3.3.12ga12 829 3.3.12ga13 888 3.3.13alpha1 954 3.3.13alpha2 973 3.3.13beta3 976 3.3.13beta4 1023 3.3.13beta5 1065 3.3.13ga6 1080 3.3.13ga7 1084 3.3.14alpha1 1133 3.3.14alpha2 1142 3.3.14alpha3 1151 3.3.14alpha4 1153 3.3.14alpha5 1179 3.3.14ga6 1204 3.3.14ga7 1240 3.3.14beta8 1248 3.3.14ga9 1258 3.3.14ga11 1271 3.3.15alpha1 1316 3.3.15beta2 1342 3.3.15ga4 1373 3.3.15ga5 1378 3.3.15ga6 1400 3.3.15ga7 1432 3.3.15ga8 1469 3.4alpha1 1825 3.4alpha2 1867 3.3.15ga9 1878 3.4beta3 1880 3.4ga4 1897 3.4ga5 1931 3.5alpha1 1939 3.4ga6 1958 3.4ga7 1979 3.4ga8 1998 suite3270-4.1/Shared/000077500000000000000000000000001413735575200142455ustar00rootroot00000000000000suite3270-4.1/Shared/Actions.txt000066400000000000000000000060701413735575200164110ustar00rootroot00000000000000Emulator Actions Key: W Supported for Xt as a wrapper X Supported for Xt directly S Supported for scripting - Not supported Action x3270 c3270 wc3270 s3270 ws3270 tcl3270 ----------------------- ------- ------- ------- ------- ------- ------- Abort - S S - - - AltCursor WS - - - - - AnsiText S S S S S - AsciiField S S S S S S Ascii S S S S S S Attn WS S S S S S BackSpace WS S S S S S BackTab WS S S S S S Bell WS S S - - - CircumNot WS S S S S S Clear WS S S S S S CloseScript S S S S S - Close S S S S S S Compose WS S S - - - Connect WS S S S S S ContinueScript WS S S S S - Copy - - S - - - CursorSelect WS S S S S S Cut X - S - - - Default X - - - - - DeleteField WS S S S S S Delete WS S S S S S DeleteWord WS S S S S S Disconnect WS S S S S S Down WS S S S S S Dup WS S S S S S EbcdicField S S S S S S Ebcdic S S S S S S Enter WS S S S S S EraseEOF WS S S S S S EraseInput WS S S S S S Erase WS S S S S S Escape - S S - - - Execute WS S S S S - Exit - S S - - - Expect S S S S S - FieldEnd WS S S S S S FieldMark WS S S S S S Flip WS S S - - - HandleMenu X - - - - - Help - S S - - - HexString WS S S S S S Home WS S S S S S ignore S S S - - - Info S S S - - - insert-selection X - - - - - Insert WS S S S S S Interrupt WS S S S S S Keymap WS - - - - - Keypad - S S - - - Key WS S S S S S KybdSelect X - - - - - Left2 WS S S S S S Left WS S S S S S Macro WS S S S S - Menu - S S - - - MonoCase WS S S S S S MouseSelect X - - - - - MoveCursor XS S S S S S move-select X - - - - - Newline WS S S S S S NextWord WS S S S S S Open S S S S S S PA-ConfigureNotify X - - - - - PA-Confirm X - - - - - PA-dialog-focus X - - - - - PA-dialog-next X - - - - - PA-End X - - - - - PA-EnterLeave X - - - - - PA-Expose X - - - - - PA-Focus X - - - - - PA-GraphicsExpose X - - - - - PA-KeymapNotify X - - - - - PA-KeymapTrace X - - - - - PA-Shift X - - - - - PA-StateChanged X - - - - - Paste - - S - - - PauseScript S S S S S - PA-VisibilityNotify X - - - - - PA WS S S S S S PA-WMProtocols X - - - - - PF WS S S S S S PreviousWord WS S S S S S Printer WS S S - - - PrintText WS S S S S S PrintWindow WS - - - - - Query S S S S S S Quit WS S S S S S ReadBuffer S S S S S S Reconnect WS S S - - - Redraw X S S - - - Reset WS S S S S S Right2 WS S S S S S Right WS S S S S S Script WS S S S S - ScreenTrace - S S - - - Scroll WS S S - - - SelectAll X - - - - - SelectDown X - - - - - select-end X - - - - - select-extend X - - - - - SelectMotion X - - - - - select-start X - - - - - SelectUp X - - - - - SetFont WS - - - - - set-select X - - - - - Show - S S - - - Snap S S S S S S Source WS S S S S - start-extend X - - - - - Status - - - - - S String WS S S S S S SysReq WS S S S S S Tab WS S S S S S TemporaryKeymap WS - - - - - Title WS - S - - - ToggleInsert WS S S S S S ToggleReverse WS S S S S S Toggle WS S S S S S Trace - S S - - - Transfer WS S S S S S Unselect X - - - - - Up WS S S S S S Wait WS S S S S S WindowState WS - - - - - suite3270-4.1/Shared/Makefile000066400000000000000000000000521413735575200157020ustar00rootroot00000000000000# Makefile for shared objects bootstrap: suite3270-4.1/VisualStudio/000077500000000000000000000000001413735575200154725ustar00rootroot00000000000000suite3270-4.1/VisualStudio/.gitignore000066400000000000000000000000151413735575200174560ustar00rootroot00000000000000*.VC.* *.ipchsuite3270-4.1/VisualStudio/README.txt000066400000000000000000000004761413735575200171770ustar00rootroot00000000000000README for VS2013 solution -------------------------- This directory contains the necessary files for building wc3270 and associated utilities with Microsoft Visual Studio 2013. It might work with other versions of Visual Studio, but this has not been verified. The top-level solution file is suite3270.sln. suite3270-4.1/VisualStudio/catf/000077500000000000000000000000001413735575200164075ustar00rootroot00000000000000suite3270-4.1/VisualStudio/catf/catf.vcxproj000077500000000000000000000177111413735575200207530ustar00rootroot00000000000000 Debug Win32 Debug x64 Release Win32 Release x64 {2BA5D6CF-59E7-4747-A8BF-A5A1DA3C2567} Win32Proj catf Application true MultiByte v142 Application true MultiByte v142 Application false true MultiByte v142 Application false true MultiByte v142 true true false false Level3 Disabled WIN32;_DEBUG;_CONSOLE;_WIN32;_CRT_SECURE_NO_DEPRECATE;_WINSOCK_DEPRECATED_NO_WARNINGS;%(PreprocessorDefinitions) %(ProjectDir)..\..\include;%(AdditionalIncludeDirectories) true Console true Level3 Disabled WIN32;_DEBUG;_CONSOLE;_WIN32;_CRT_SECURE_NO_DEPRECATE;_WINSOCK_DEPRECATED_NO_WARNINGS;%(PreprocessorDefinitions) %(ProjectDir)..\..\include;%(AdditionalIncludeDirectories) true Console true Level3 MaxSpeed true true WIN32;NDEBUG;_CONSOLE;_WIN32;_CRT_SECURE_NO_DEPRECATE;_WINSOCK_DEPRECATED_NO_WARNINGS;%(PreprocessorDefinitions) true %(ProjectDir)..\..\include;%(AdditionalIncludeDirectories) Console true true true Level3 MaxSpeed true true WIN32;NDEBUG;_CONSOLE;_WIN32;_CRT_SECURE_NO_DEPRECATE;_WINSOCK_DEPRECATED_NO_WARNINGS;%(PreprocessorDefinitions) true %(ProjectDir)..\..\include;%(AdditionalIncludeDirectories) Console true true true suite3270-4.1/VisualStudio/catf/catf.vcxproj.filters000077500000000000000000000017061413735575200224170ustar00rootroot00000000000000 {4FC737F1-C7A5-4376-A066-2A32D752A2FF} cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx {93995380-89BD-4b04-88EB-625FBE52EBFB} h;hpp;hxx;hm;inl;inc;xsd {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms Source Files suite3270-4.1/VisualStudio/catf/catf.vcxproj.user000077500000000000000000000002171413735575200217210ustar00rootroot00000000000000 suite3270-4.1/VisualStudio/libexpat/000077500000000000000000000000001413735575200173025ustar00rootroot00000000000000suite3270-4.1/VisualStudio/libexpat/libexpat.vcxproj000077500000000000000000000171131413735575200225350ustar00rootroot00000000000000 Debug Win32 Release Win32 Debug x64 Release x64 15.0 {58A619A3-C1FC-4293-82A2-CC4156B83013} Win32Proj libexpat StaticLibrary true v142 Unicode StaticLibrary false v142 true Unicode StaticLibrary true v142 Unicode StaticLibrary false v142 true Unicode true true false false Level3 Disabled true WIN32;_DEBUG;_LIB;COMPILED_FROM_DSP;%(PreprocessorDefinitions) true Windows true Use Level3 Disabled true _DEBUG;_LIB;%(PreprocessorDefinitions) true Windows true Use Level3 MaxSpeed true true true WIN32;NDEBUG;_LIB;%(PreprocessorDefinitions) true Windows true true true Use Level3 MaxSpeed true true true NDEBUG;_LIB;%(PreprocessorDefinitions) true Windows true true true suite3270-4.1/VisualStudio/libexpat/libexpat.vcxproj.filters000077500000000000000000000026451413735575200242100ustar00rootroot00000000000000 {4FC737F1-C7A5-4376-A066-2A32D752A2FF} cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx {93995380-89BD-4b04-88EB-625FBE52EBFB} h;hh;hpp;hxx;hm;inl;inc;ipp;xsd {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms Source Files Source Files Source Files Source Files Source Files suite3270-4.1/VisualStudio/libexpat/libexpat.vcxproj.user000077500000000000000000000002451413735575200235100ustar00rootroot00000000000000 suite3270-4.1/VisualStudio/libw3270/000077500000000000000000000000001413735575200167435ustar00rootroot00000000000000suite3270-4.1/VisualStudio/libw3270/libw3270.vcxproj000077500000000000000000000247271413735575200216500ustar00rootroot00000000000000 Debug Win32 Debug x64 Release Win32 Release x64 {7B2EBB95-B987-4FC6-BB3F-B7612B54BD00} Win32Proj libw3270 StaticLibrary true MultiByte v142 StaticLibrary true MultiByte v142 StaticLibrary false true MultiByte v142 StaticLibrary false true MultiByte v142 Level3 Disabled WIN32;_DEBUG;_CONSOLE;_WIN32;_CRT_SECURE_NO_DEPRECATE;_WINSOCK_DEPRECATED_NO_WARNINGS;%(PreprocessorDefinitions) %(RootDir)%(Directory);%(ProjectDir)..\..\lib\include\windows;%(ProjectDir)..\..\lib\include;%(ProjectDir)..\..\include;%(AdditionalIncludeDirectories) true Windows true Level3 Disabled WIN32;_DEBUG;_CONSOLE;_WIN32;_CRT_SECURE_NO_DEPRECATE;_WINSOCK_DEPRECATED_NO_WARNINGS;%(PreprocessorDefinitions) %(RootDir)%(Directory);%(ProjectDir)..\..\lib\include\windows;%(ProjectDir)..\..\lib\include;%(ProjectDir)..\..\include;%(AdditionalIncludeDirectories) true Windows true Level3 MaxSpeed true true WIN32;NDEBUG;_CONSOLE;_WIN32;_CRT_SECURE_NO_DEPRECATE;_WINSOCK_DEPRECATED_NO_WARNINGS;%(PreprocessorDefinitions) true %(RootDir)%(Directory);%(ProjectDir)..\..\lib\include\windows;%(ProjectDir)..\..\lib\include;%(ProjectDir)..\..\include;%(AdditionalIncludeDirectories) Windows true true true Level3 MaxSpeed true true WIN32;NDEBUG;_CONSOLE;_WIN32;_CRT_SECURE_NO_DEPRECATE;_WINSOCK_DEPRECATED_NO_WARNINGS;%(PreprocessorDefinitions) true %(RootDir)%(Directory);%(ProjectDir)..\..\lib\include\windows;%(ProjectDir)..\..\lib\include;%(ProjectDir)..\..\include;%(AdditionalIncludeDirectories) Windows true true true suite3270-4.1/VisualStudio/libw3270/libw3270.vcxproj.filters000077500000000000000000000056221413735575200233100ustar00rootroot00000000000000 suite3270-4.1/VisualStudio/libw3270/libw3270.vcxproj.user000077500000000000000000000002171413735575200226110ustar00rootroot00000000000000 suite3270-4.1/VisualStudio/libw3270i/000077500000000000000000000000001413735575200171145ustar00rootroot00000000000000suite3270-4.1/VisualStudio/libw3270i/libw3270i.vcxproj000077500000000000000000000175421413735575200221670ustar00rootroot00000000000000 Debug Win32 Debug x64 Release Win32 Release x64 {B306FA2C-263B-423D-A42D-F1930DA727F3} Win32Proj libw3270i StaticLibrary true MultiByte v142 StaticLibrary true MultiByte v142 StaticLibrary false true MultiByte v142 StaticLibrary false true MultiByte v142 Level3 Disabled WIN32;_DEBUG;_CONSOLE;_WIN32;_CRT_SECURE_NO_DEPRECATE;_WINSOCK_DEPRECATED_NO_WARNINGS;%(PreprocessorDefinitions) %(RootDir)%(Directory);%(ProjectDir)..\..\lib\include\windows;%(ProjectDir)..\..\lib\include;%(ProjectDir)..\..\include;%(AdditionalIncludeDirectories) true Windows true Level3 Disabled WIN32;_DEBUG;_CONSOLE;_WIN32;_CRT_SECURE_NO_DEPRECATE;_WINSOCK_DEPRECATED_NO_WARNINGS;%(PreprocessorDefinitions) %(RootDir)%(Directory);%(ProjectDir)..\..\lib\include\windows;%(ProjectDir)..\..\lib\include;%(ProjectDir)..\..\include;%(AdditionalIncludeDirectories) true Windows true Level3 MaxSpeed true true WIN32;NDEBUG;_CONSOLE;_WIN32;_CRT_SECURE_NO_DEPRECATE;_WINSOCK_DEPRECATED_NO_WARNINGS;%(PreprocessorDefinitions) true %(RootDir)%(Directory);%(ProjectDir)..\..\lib\include\windows;%(ProjectDir)..\..\lib\include;%(ProjectDir)..\..\include;%(AdditionalIncludeDirectories) Windows true true true Level3 MaxSpeed true true WIN32;NDEBUG;_CONSOLE;_WIN32;_CRT_SECURE_NO_DEPRECATE;_WINSOCK_DEPRECATED_NO_WARNINGS;%(PreprocessorDefinitions) true %(RootDir)%(Directory);%(ProjectDir)..\..\lib\include\windows;%(ProjectDir)..\..\lib\include;%(ProjectDir)..\..\include;%(AdditionalIncludeDirectories) Windows true true true suite3270-4.1/VisualStudio/libw3270i/libw3270i.vcxproj.filters000077500000000000000000000020661413735575200236310ustar00rootroot00000000000000 {4FC737F1-C7A5-4376-A066-2A32D752A2FF} cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx {93995380-89BD-4b04-88EB-625FBE52EBFB} h;hpp;hxx;hm;inl;inc;xsd {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms Source Files Source Files suite3270-4.1/VisualStudio/libw3270i/libw3270i.vcxproj.user000077500000000000000000000002171413735575200231330ustar00rootroot00000000000000 suite3270-4.1/VisualStudio/libw3270stubs/000077500000000000000000000000001413735575200200245ustar00rootroot00000000000000suite3270-4.1/VisualStudio/libw3270stubs/libw3270stubs.vcxproj000077500000000000000000000225311413735575200240010ustar00rootroot00000000000000 Debug Win32 Debug x64 Release Win32 Release x64 {A6D4C4FA-6515-416C-9EB2-244A5C40488E} Win32Proj libw3270stubs StaticLibrary true MultiByte v142 StaticLibrary true MultiByte v142 StaticLibrary false true MultiByte v142 StaticLibrary false true MultiByte v142 Level3 Disabled WIN32;_DEBUG;_CONSOLE;_WIN32;_CRT_SECURE_NO_DEPRECATE;_WINSOCK_DEPRECATED_NO_WARNINGS;%(PreprocessorDefinitions) %(RootDir)%(Directory);%(ProjectDir)..\..\lib\include\windows;%(ProjectDir)..\..\lib\include;%(ProjectDir)..\..\include;%(AdditionalIncludeDirectories) true Windows true Level3 Disabled WIN32;_DEBUG;_CONSOLE;_WIN32;_CRT_SECURE_NO_DEPRECATE;_WINSOCK_DEPRECATED_NO_WARNINGS;%(PreprocessorDefinitions) %(RootDir)%(Directory);%(ProjectDir)..\..\lib\include\windows;%(ProjectDir)..\..\lib\include;%(ProjectDir)..\..\include;%(AdditionalIncludeDirectories) true Windows true Level3 MaxSpeed true true WIN32;NDEBUG;_CONSOLE;_WIN32;_CRT_SECURE_NO_DEPRECATE;_WINSOCK_DEPRECATED_NO_WARNINGS;%(PreprocessorDefinitions) true %(RootDir)%(Directory);%(ProjectDir)..\..\lib\include\windows;%(ProjectDir)..\..\lib\include;%(ProjectDir)..\..\include;%(AdditionalIncludeDirectories) Windows true true true Level3 MaxSpeed true true WIN32;NDEBUG;_CONSOLE;_WIN32;_CRT_SECURE_NO_DEPRECATE;_WINSOCK_DEPRECATED_NO_WARNINGS;%(PreprocessorDefinitions) true %(RootDir)%(Directory);%(ProjectDir)..\..\lib\include\windows;%(ProjectDir)..\..\lib\include;%(ProjectDir)..\..\include;%(AdditionalIncludeDirectories) Windows true true true suite3270-4.1/VisualStudio/libw3270stubs/libw3270stubs.vcxproj.filters000077500000000000000000000076131413735575200254540ustar00rootroot00000000000000 {4FC737F1-C7A5-4376-A066-2A32D752A2FF} cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx {93995380-89BD-4b04-88EB-625FBE52EBFB} h;hpp;hxx;hm;inl;inc;xsd {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files suite3270-4.1/VisualStudio/libw3270stubs/libw3270stubs.vcxproj.user000077500000000000000000000002171413735575200247530ustar00rootroot00000000000000 suite3270-4.1/VisualStudio/libw32xx/000077500000000000000000000000001413735575200171545ustar00rootroot00000000000000suite3270-4.1/VisualStudio/libw32xx/libw32xx.vcxproj000077500000000000000000000226731413735575200222700ustar00rootroot00000000000000 Debug Win32 Debug x64 Release Win32 Release x64 {9403B3C3-2EA9-44F8-99D4-45DE7692BB1A} Win32Proj libw32xx StaticLibrary true MultiByte v142 StaticLibrary true MultiByte v142 StaticLibrary false true MultiByte v142 StaticLibrary false true MultiByte v142 Level3 Disabled WIN32;_DEBUG;_CONSOLE;_WIN32;_CRT_SECURE_NO_DEPRECATE;_WINSOCK_DEPRECATED_NO_WARNINGS;%(PreprocessorDefinitions) %(RootDir)%(Directory);%(ProjectDir)..\..\lib\include\windows;%(ProjectDir)..\..\lib\include;%(ProjectDir)..\..\include;%(AdditionalIncludeDirectories) true Windows true Level3 Disabled WIN32;_DEBUG;_CONSOLE;_WIN32;_CRT_SECURE_NO_DEPRECATE;_WINSOCK_DEPRECATED_NO_WARNINGS;%(PreprocessorDefinitions) %(RootDir)%(Directory);%(ProjectDir)..\..\lib\include\windows;%(ProjectDir)..\..\lib\include;%(ProjectDir)..\..\include;%(AdditionalIncludeDirectories) true Windows true Level3 MaxSpeed true true WIN32;NDEBUG;_CONSOLE;_WIN32;_CRT_SECURE_NO_DEPRECATE;_WINSOCK_DEPRECATED_NO_WARNINGS;%(PreprocessorDefinitions) true %(RootDir)%(Directory);%(ProjectDir)..\..\lib\include\windows;%(ProjectDir)..\..\lib\include;%(ProjectDir)..\..\include;%(AdditionalIncludeDirectories) Windows true true true Level3 MaxSpeed true true WIN32;NDEBUG;_CONSOLE;_WIN32;_CRT_SECURE_NO_DEPRECATE;_WINSOCK_DEPRECATED_NO_WARNINGS;%(PreprocessorDefinitions) true %(RootDir)%(Directory);%(ProjectDir)..\..\lib\include\windows;%(ProjectDir)..\..\lib\include;%(ProjectDir)..\..\include;%(AdditionalIncludeDirectories) Windows true true true suite3270-4.1/VisualStudio/libw32xx/libw32xx.vcxproj.filters000077500000000000000000000103061413735575200237250ustar00rootroot00000000000000 {4FC737F1-C7A5-4376-A066-2A32D752A2FF} cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx {93995380-89BD-4b04-88EB-625FBE52EBFB} h;hpp;hxx;hm;inl;inc;xsd {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files suite3270-4.1/VisualStudio/libw32xx/libw32xx.vcxproj.user000077500000000000000000000002171413735575200232330ustar00rootroot00000000000000 suite3270-4.1/VisualStudio/mkfb/000077500000000000000000000000001413735575200164115ustar00rootroot00000000000000suite3270-4.1/VisualStudio/mkfb/mkfb.bat000077500000000000000000000004771413735575200200330ustar00rootroot00000000000000cd ..\..\wc3270 %1\mkfb.exe -c -o fallbacks.c ..\Common\fb-common ..\Common\fb-printSession ..\Common\fb-messages ..\Common\fb-composeMap ..\Common\fb-c3270 cd ..\ws3270 %1\mkfb.exe -c -o fallbacks.c ..\Common\fb-common cd ..\wb3270 %1\mkfb.exe -c -o fallbacks.c ..\Common\fb-common ..\Common\fb-printSession suite3270-4.1/VisualStudio/mkfb/mkfb.vcxproj000077500000000000000000000225741413735575200207620ustar00rootroot00000000000000 Debug Win32 Debug x64 Release Win32 Release x64 {2A000DFC-320A-4F19-AFB1-42F11775664F} mkfb Win32Proj Application MultiByte true v142 Application MultiByte true v142 Application MultiByte v142 Application MultiByte v142 <_ProjectFileVersion>10.0.40219.1 $(SolutionDir)$(Configuration)\ $(Configuration)\ true true $(SolutionDir)$(Configuration)\ $(Configuration)\ false false Disabled WIN32;_DEBUG;_CONSOLE;_WIN32;_CRT_SECURE_NO_DEPRECATE;_WINSOCK_DEPRECATED_NO_WARNINGS;%(PreprocessorDefinitions) true EnableFastChecks MultiThreadedDebugDLL Level3 EditAndContinue %(ProjectDir)..\..\include;%(ProjectDir)..\..\ws3270 true true Console MachineX86 "$(ProjectDir)\mkfb.bat" "$(OutDir)" Disabled WIN32;_DEBUG;_CONSOLE;_WIN32;_CRT_SECURE_NO_DEPRECATE;_WINSOCK_DEPRECATED_NO_WARNINGS;%(PreprocessorDefinitions) EnableFastChecks MultiThreadedDebugDLL Level3 ProgramDatabase %(ProjectDir)..\..\include;%(ProjectDir)..\..\ws3270 true true Console "$(ProjectDir)\mkfb.bat" "$(OutDir)" MaxSpeed true WIN32;NDEBUG;_CONSOLE;_WIN32;_CRT_SECURE_NO_DEPRECATE;_WINSOCK_DEPRECATED_NO_WARNINGS;%(PreprocessorDefinitions) MultiThreadedDLL true Level3 ProgramDatabase true %(ProjectDir)..\..\include;%(ProjectDir)..\..\ws3270 true Console true true MachineX86 "$(ProjectDir)\mkfb.bat" "$(OutDir)" MaxSpeed true WIN32;NDEBUG;_CONSOLE;_WIN32;_CRT_SECURE_NO_DEPRECATE;_WINSOCK_DEPRECATED_NO_WARNINGS;%(PreprocessorDefinitions) MultiThreadedDLL true Level3 ProgramDatabase true %(ProjectDir)..\..\include;%(ProjectDir)..\..\ws3270 true Console true true "$(ProjectDir)\mkfb.bat" "$(OutDir)" suite3270-4.1/VisualStudio/mkfb/mkfb.vcxproj.filters000077500000000000000000000016671413735575200224310ustar00rootroot00000000000000 {4FC737F1-C7A5-4376-A066-2A32D752A2FF} cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx {93995380-89BD-4b04-88EB-625FBE52EBFB} h;hpp;hxx;hm;inl;inc;xsd {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav Source Files suite3270-4.1/VisualStudio/mkfb/mkfb.vcxproj.user000077500000000000000000000002171413735575200217250ustar00rootroot00000000000000 suite3270-4.1/VisualStudio/mkicon/000077500000000000000000000000001413735575200167525ustar00rootroot00000000000000suite3270-4.1/VisualStudio/mkicon/mkfaviconc.bat000077500000000000000000000001101413735575200215550ustar00rootroot00000000000000cd ..\..\lib\w3270 %1\mkicon.exe ..\..\Common\favicon.ico > favicon.c suite3270-4.1/VisualStudio/mkicon/mkicon.vcxproj000077500000000000000000000176311413735575200216620ustar00rootroot00000000000000 Debug Win32 Debug x64 Release Win32 Release x64 {07A63EBF-BCDC-40E7-B1EA-6384B461A448} Win32Proj mkicon Application true MultiByte v142 Application true MultiByte v142 Application false true MultiByte v142 Application false true MultiByte v142 true true false false Level3 Disabled WIN32;_DEBUG;_CONSOLE;_WIN32;_CRT_SECURE_NO_DEPRECATE;_WINSOCK_DEPRECATED_NO_WARNINGS;%(PreprocessorDefinitions) true Console true "$(ProjectDir)\mkfaviconc.bat" "$(OutDir)" Level3 Disabled WIN32;_DEBUG;_CONSOLE;_WIN32;_CRT_SECURE_NO_DEPRECATE;_WINSOCK_DEPRECATED_NO_WARNINGS;%(PreprocessorDefinitions) true Console true "$(ProjectDir)\mkfaviconc.bat" "$(OutDir)" Level3 MaxSpeed true true WIN32;NDEBUG;_CONSOLE;_WIN32;_CRT_SECURE_NO_DEPRECATE;_WINSOCK_DEPRECATED_NO_WARNINGS;%(PreprocessorDefinitions) true Console true true true "$(ProjectDir)\mkfaviconc.bat" "$(OutDir)" Level3 MaxSpeed true true WIN32;NDEBUG;_CONSOLE;_WIN32;_CRT_SECURE_NO_DEPRECATE;_WINSOCK_DEPRECATED_NO_WARNINGS;%(PreprocessorDefinitions) true Console true true true "$(ProjectDir)\mkfaviconc.bat" "$(OutDir)" suite3270-4.1/VisualStudio/mkicon/mkicon.vcxproj.filters000077500000000000000000000017061413735575200233250ustar00rootroot00000000000000 {4FC737F1-C7A5-4376-A066-2A32D752A2FF} cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx {93995380-89BD-4b04-88EB-625FBE52EBFB} h;hpp;hxx;hm;inl;inc;xsd {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms Source Files suite3270-4.1/VisualStudio/mkicon/mkicon.vcxproj.user000077500000000000000000000002171413735575200226270ustar00rootroot00000000000000 suite3270-4.1/VisualStudio/mkkeypad/000077500000000000000000000000001413735575200172775ustar00rootroot00000000000000suite3270-4.1/VisualStudio/mkkeypad/mkkeypad.vcxproj000077500000000000000000000216721413735575200225340ustar00rootroot00000000000000 Debug Win32 Debug x64 Release Win32 Release x64 {54F94101-1334-443A-B501-5BFBDFEC5323} mkkeypad Win32Proj Application MultiByte true v142 Application MultiByte true v142 Application MultiByte v142 Application MultiByte v142 <_ProjectFileVersion>10.0.40219.1 $(SolutionDir)$(Configuration)\ $(Configuration)\ true true $(SolutionDir)$(Configuration)\ $(Configuration)\ false false Disabled WIN32;_DEBUG;_CONSOLE;_WIN32;_CRT_SECURE_NO_DEPRECATE;_WINSOCK_DEPRECATED_NO_WARNINGS;%(PreprocessorDefinitions) true EnableFastChecks MultiThreadedDebugDLL Level3 EditAndContinue true true Console MachineX86 "$(ProjectDir)\mkkeypadh.bat" "$(OutDir)" Disabled WIN32;_DEBUG;_CONSOLE;_WIN32;_CRT_SECURE_NO_DEPRECATE;_WINSOCK_DEPRECATED_NO_WARNINGS;%(PreprocessorDefinitions) EnableFastChecks MultiThreadedDebugDLL Level3 ProgramDatabase true true Console "$(ProjectDir)\mkkeypadh.bat" "$(OutDir)" MaxSpeed true WIN32;NDEBUG;_CONSOLE;_WIN32;_CRT_SECURE_NO_DEPRECATE;_WINSOCK_DEPRECATED_NO_WARNINGS;%(PreprocessorDefinitions) MultiThreadedDLL true Level3 ProgramDatabase true true Console true true MachineX86 "$(ProjectDir)\mkkeypadh.bat" "$(OutDir)" MaxSpeed true WIN32;NDEBUG;_CONSOLE;_WIN32;_CRT_SECURE_NO_DEPRECATE;_WINSOCK_DEPRECATED_NO_WARNINGS;%(PreprocessorDefinitions) MultiThreadedDLL true Level3 ProgramDatabase true true Console true true "$(ProjectDir)\mkkeypadh.bat" "$(OutDir)" suite3270-4.1/VisualStudio/mkkeypad/mkkeypad.vcxproj.filters000077500000000000000000000017011413735575200241720ustar00rootroot00000000000000 {4FC737F1-C7A5-4376-A066-2A32D752A2FF} cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx {93995380-89BD-4b04-88EB-625FBE52EBFB} h;hpp;hxx;hm;inl;inc;xsd {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav Source Files suite3270-4.1/VisualStudio/mkkeypad/mkkeypad.vcxproj.user000077500000000000000000000002171413735575200235010ustar00rootroot00000000000000 suite3270-4.1/VisualStudio/mkkeypad/mkkeypadh.bat000077500000000000000000000001101413735575200217370ustar00rootroot00000000000000cd ..\..\wc3270 %1\mkkeypad.exe -I..\Common\c3270 > compiled_keypad.h suite3270-4.1/VisualStudio/mkmanifest/000077500000000000000000000000001413735575200176305ustar00rootroot00000000000000suite3270-4.1/VisualStudio/mkmanifest/mkmanifest.bat000077500000000000000000000007521413735575200224650ustar00rootroot00000000000000cd ..\..\wc3270 %1\mkmanifest.exe -a %2 -d "wc3270 terminal emulator" -e wc3270 -m ..\Common\Win32\manifest.tmpl -v ..\Common\version.txt >wc3270.exe.manifest cd ..\ws3270 %1\mkmanifest.exe -a %2 -d "ws3270 scripting terminal emulator" -e ws3270 -m ..\Common\Win32\manifest.tmpl -v ..\Common\version.txt >ws3270.exe.manifest cd ..\wpr3287 %1\mkmanifest.exe -a %2 -d "wpr3287 printer emulator" -e wpr3287 -m ..\Common\Win32\manifest.tmpl -v ..\Common\version.txt >wpr3287.exe.manifest suite3270-4.1/VisualStudio/mkmanifest/mkmanifest.vcxproj000077500000000000000000000171211413735575200234100ustar00rootroot00000000000000 Debug Win32 Release Win32 Debug x64 Release x64 {6CB171E9-F0B7-425C-A9EE-2B2EAFABF6B6} Win32Proj mkmanifest Application true v142 Unicode Application false v142 true Unicode Application true v142 MultiByte Application false v142 true Unicode true true false false Level3 Disabled WIN32;_DEBUG;_CONSOLE;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions) %(ProjectDir)..\..\include;%(AdditionalIncludeDirectories) Console true "$(ProjectDir)\mkmanifest.bat" "$(OutDir)" $(Platform) Level3 Disabled _DEBUG;_CONSOLE;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions) %(ProjectDir)..\..\include;%(AdditionalIncludeDirectories) Console true "$(ProjectDir)\mkmanifest.bat" "$(OutDir)" $(Platform) Level3 MaxSpeed true true WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) Console true true true Level3 MaxSpeed true true NDEBUG;_CONSOLE;%(PreprocessorDefinitions) Console true true true suite3270-4.1/VisualStudio/mkmanifest/mkmanifest.vcxproj.filters000077500000000000000000000017231413735575200250600ustar00rootroot00000000000000 {4FC737F1-C7A5-4376-A066-2A32D752A2FF} cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx {93995380-89BD-4b04-88EB-625FBE52EBFB} h;hh;hpp;hxx;hm;inl;inc;xsd {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms Source Files suite3270-4.1/VisualStudio/mkmanifest/mkmanifest.vcxproj.user000077500000000000000000000002451413735575200243640ustar00rootroot00000000000000 suite3270-4.1/VisualStudio/mkshort/000077500000000000000000000000001413735575200171615ustar00rootroot00000000000000suite3270-4.1/VisualStudio/mkshort/mkshort.vcxproj000077500000000000000000000206441413735575200222760ustar00rootroot00000000000000 Debug Win32 Debug x64 Release Win32 Release x64 {F42388CA-CE98-4F9F-96B7-D0DC1F9DA67E} Win32Proj mkshort Application true MultiByte v142 Application true MultiByte v142 Application false true MultiByte v142 Application false true MultiByte v142 true true false false Level3 Disabled WIN32;_DEBUG;_CONSOLE;_WIN32;_CRT_SECURE_NO_DEPRECATE;_WINSOCK_DEPRECATED_NO_WARNINGS;%(PreprocessorDefinitions) true %(ProjectDir)..\..\include;%(ProjectDir)..\..\Common\c3270 Console true $(OutDir)libw32xx.lib;%(AdditionalDependencies) Level3 Disabled WIN32;_DEBUG;_CONSOLE;_WIN32;_CRT_SECURE_NO_DEPRECATE;_WINSOCK_DEPRECATED_NO_WARNINGS;%(PreprocessorDefinitions) true %(ProjectDir)..\..\include;%(ProjectDir)..\..\Common\c3270 Console true $(OutDir)libw32xx.lib;%(AdditionalDependencies) Level3 MaxSpeed true true WIN32;NDEBUG;_CONSOLE;_WIN32;_CRT_SECURE_NO_DEPRECATE;_WINSOCK_DEPRECATED_NO_WARNINGS;%(PreprocessorDefinitions) true %(ProjectDir)..\..\include;%(ProjectDir)..\..\Common\c3270 Console true true true $(OutDir)libw32xx.lib;%(AdditionalDependencies) Level3 MaxSpeed true true WIN32;NDEBUG;_CONSOLE;_WIN32;_CRT_SECURE_NO_DEPRECATE;_WINSOCK_DEPRECATED_NO_WARNINGS;%(PreprocessorDefinitions) true %(ProjectDir)..\..\include;%(ProjectDir)..\..\Common\c3270 Console true true true $(OutDir)libw32xx.lib;%(AdditionalDependencies) suite3270-4.1/VisualStudio/mkshort/mkshort.vcxproj.filters000077500000000000000000000020611413735575200237360ustar00rootroot00000000000000 {4FC737F1-C7A5-4376-A066-2A32D752A2FF} cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx {93995380-89BD-4b04-88EB-625FBE52EBFB} h;hpp;hxx;hm;inl;inc;xsd {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms Source Files Source Files suite3270-4.1/VisualStudio/mkshort/mkshort.vcxproj.user000077500000000000000000000002171413735575200232450ustar00rootroot00000000000000 suite3270-4.1/VisualStudio/mkversion/000077500000000000000000000000001413735575200175075ustar00rootroot00000000000000suite3270-4.1/VisualStudio/mkversion/mkversion.bat000077500000000000000000000005521413735575200222210ustar00rootroot00000000000000cd ..\..\wc3270 %1\mkversion.exe wc3270 ..\Common\version.txt %1\mkversion.exe -w wc3270 ..\Common\version.txt cd ..\ws3270 %1\mkversion.exe ws3270 ..\Common\version.txt cd ..\wpr3287 %1\mkversion.exe wpr3287 ..\Common\version.txt cd ..\wb3270 %1\mkversion.exe wb3270 ..\Common\version.txt cd ..\x3270if %1\mkversion.exe x3270if ..\Common\version.txt suite3270-4.1/VisualStudio/mkversion/mkversion.vcxproj000077500000000000000000000231741413735575200231530ustar00rootroot00000000000000 Debug Win32 Debug x64 Release Win32 Release x64 {1A5B909A-4E61-4AB0-BC7A-2BC07F3BE1CE} mkversion Win32Proj Application MultiByte true v142 Application MultiByte true v142 Application MultiByte v142 Application MultiByte v142 <_ProjectFileVersion>10.0.40219.1 $(SolutionDir)$(Configuration)\ $(Configuration)\ true true $(SolutionDir)$(Configuration)\ $(Configuration)\ false false Disabled WIN32;_DEBUG;_CONSOLE;_WIN32;_CRT_SECURE_NO_DEPRECATE;_WINSOCK_DEPRECATED_NO_WARNINGS;%(PreprocessorDefinitions) true EnableFastChecks MultiThreadedDebugDLL Level3 EditAndContinue true %(ProjectDir)..\..\include;%(RootDir)%(Directory);%(RootDir)%(Directory)\..;%(AdditionalIncludeDirectories) true Console MachineX86 "$(ProjectDir)\mkversion.bat" "$(OutDir)" Disabled WIN32;_DEBUG;_CONSOLE;_WIN32;_CRT_SECURE_NO_DEPRECATE;_WINSOCK_DEPRECATED_NO_WARNINGS;%(PreprocessorDefinitions) EnableFastChecks MultiThreadedDebugDLL Level3 ProgramDatabase true %(ProjectDir)..\..\include;%(RootDir)%(Directory);%(RootDir)%(Directory)\..;%(AdditionalIncludeDirectories) true Console "$(ProjectDir)\mkversion.bat" "$(OutDir)" MaxSpeed true WIN32;NDEBUG;_CONSOLE;_WIN32;_CRT_SECURE_NO_DEPRECATE;_WINSOCK_DEPRECATED_NO_WARNINGS;%(PreprocessorDefinitions) MultiThreadedDLL true Level3 ProgramDatabase true %(ProjectDir)..\..\include;%(RootDir)%(Directory);%(RootDir)%(Directory)\..;%(AdditionalIncludeDirectories) true Console true true MachineX86 "$(ProjectDir)\mkversion.bat" "$(OutDir)" MaxSpeed true WIN32;NDEBUG;_CONSOLE;_WIN32;_CRT_SECURE_NO_DEPRECATE;_WINSOCK_DEPRECATED_NO_WARNINGS;%(PreprocessorDefinitions) MultiThreadedDLL true Level3 ProgramDatabase true %(ProjectDir)..\..\include;%(RootDir)%(Directory);%(RootDir)%(Directory)\..;%(AdditionalIncludeDirectories) true Console true true "$(ProjectDir)\mkversion.bat" "$(OutDir)" suite3270-4.1/VisualStudio/mkversion/mkversion.vcxproj.filters000077500000000000000000000017021413735575200246130ustar00rootroot00000000000000 {4FC737F1-C7A5-4376-A066-2A32D752A2FF} cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx {93995380-89BD-4b04-88EB-625FBE52EBFB} h;hpp;hxx;hm;inl;inc;xsd {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav Source Files suite3270-4.1/VisualStudio/mkversion/mkversion.vcxproj.user000077500000000000000000000002171413735575200241210ustar00rootroot00000000000000 suite3270-4.1/VisualStudio/suite3270.sln000077500000000000000000000407631413735575200176720ustar00rootroot00000000000000 Microsoft Visual Studio Solution File, Format Version 12.00 # Visual Studio 15 VisualStudioVersion = 15.0.27428.2005 MinimumVisualStudioVersion = 10.0.40219.1 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "wc3270", "wc3270\wc3270.vcxproj", "{3F0E2661-72DE-4C76-B013-3FA3ED125DF3}" ProjectSection(ProjectDependencies) = postProject {B306FA2C-263B-423D-A42D-F1930DA727F3} = {B306FA2C-263B-423D-A42D-F1930DA727F3} {7B2EBB95-B987-4FC6-BB3F-B7612B54BD00} = {7B2EBB95-B987-4FC6-BB3F-B7612B54BD00} {9403B3C3-2EA9-44F8-99D4-45DE7692BB1A} = {9403B3C3-2EA9-44F8-99D4-45DE7692BB1A} {6CB171E9-F0B7-425C-A9EE-2B2EAFABF6B6} = {6CB171E9-F0B7-425C-A9EE-2B2EAFABF6B6} {A6D4C4FA-6515-416C-9EB2-244A5C40488E} = {A6D4C4FA-6515-416C-9EB2-244A5C40488E} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mkkeypad", "mkkeypad\mkkeypad.vcxproj", "{54F94101-1334-443A-B501-5BFBDFEC5323}" EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mkversion", "mkversion\mkversion.vcxproj", "{1A5B909A-4E61-4AB0-BC7A-2BC07F3BE1CE}" EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mkfb", "mkfb\mkfb.vcxproj", "{2A000DFC-320A-4F19-AFB1-42F11775664F}" EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "wc3270wiz", "wc3270wiz\wc3270wiz.vcxproj", "{7CC1CB4D-16D7-446A-B132-963F5C1247E9}" ProjectSection(ProjectDependencies) = postProject {1A5B909A-4E61-4AB0-BC7A-2BC07F3BE1CE} = {1A5B909A-4E61-4AB0-BC7A-2BC07F3BE1CE} {9403B3C3-2EA9-44F8-99D4-45DE7692BB1A} = {9403B3C3-2EA9-44F8-99D4-45DE7692BB1A} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ws3270", "ws3270\ws3270.vcxproj", "{74911F0D-82AF-4FFC-8A43-C411597A64C1}" ProjectSection(ProjectDependencies) = postProject {7B2EBB95-B987-4FC6-BB3F-B7612B54BD00} = {7B2EBB95-B987-4FC6-BB3F-B7612B54BD00} {9403B3C3-2EA9-44F8-99D4-45DE7692BB1A} = {9403B3C3-2EA9-44F8-99D4-45DE7692BB1A} {6CB171E9-F0B7-425C-A9EE-2B2EAFABF6B6} = {6CB171E9-F0B7-425C-A9EE-2B2EAFABF6B6} {A6D4C4FA-6515-416C-9EB2-244A5C40488E} = {A6D4C4FA-6515-416C-9EB2-244A5C40488E} {2A000DFC-320A-4F19-AFB1-42F11775664F} = {2A000DFC-320A-4F19-AFB1-42F11775664F} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "wpr3287", "wpr3287\wpr3287.vcxproj", "{0094B3D7-0924-4296-BED4-300B53F63562}" ProjectSection(ProjectDependencies) = postProject {1A5B909A-4E61-4AB0-BC7A-2BC07F3BE1CE} = {1A5B909A-4E61-4AB0-BC7A-2BC07F3BE1CE} {9403B3C3-2EA9-44F8-99D4-45DE7692BB1A} = {9403B3C3-2EA9-44F8-99D4-45DE7692BB1A} {6CB171E9-F0B7-425C-A9EE-2B2EAFABF6B6} = {6CB171E9-F0B7-425C-A9EE-2B2EAFABF6B6} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "x3270if", "x3270if\x3270if.vcxproj", "{25CA97FA-186C-4235-8280-BF1F56FD3CFF}" ProjectSection(ProjectDependencies) = postProject {9403B3C3-2EA9-44F8-99D4-45DE7692BB1A} = {9403B3C3-2EA9-44F8-99D4-45DE7692BB1A} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mkshort", "mkshort\mkshort.vcxproj", "{F42388CA-CE98-4F9F-96B7-D0DC1F9DA67E}" ProjectSection(ProjectDependencies) = postProject {9403B3C3-2EA9-44F8-99D4-45DE7692BB1A} = {9403B3C3-2EA9-44F8-99D4-45DE7692BB1A} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "catf", "catf\catf.vcxproj", "{2BA5D6CF-59E7-4747-A8BF-A5A1DA3C2567}" EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libw3270", "libw3270\libw3270.vcxproj", "{7B2EBB95-B987-4FC6-BB3F-B7612B54BD00}" ProjectSection(ProjectDependencies) = postProject {07A63EBF-BCDC-40E7-B1EA-6384B461A448} = {07A63EBF-BCDC-40E7-B1EA-6384B461A448} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libw3270stubs", "libw3270stubs\libw3270stubs.vcxproj", "{A6D4C4FA-6515-416C-9EB2-244A5C40488E}" EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mkicon", "mkicon\mkicon.vcxproj", "{07A63EBF-BCDC-40E7-B1EA-6384B461A448}" EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libw3270i", "libw3270i\libw3270i.vcxproj", "{B306FA2C-263B-423D-A42D-F1930DA727F3}" EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libw32xx", "libw32xx\libw32xx.vcxproj", "{9403B3C3-2EA9-44F8-99D4-45DE7692BB1A}" EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mkmanifest", "mkmanifest\mkmanifest.vcxproj", "{6CB171E9-F0B7-425C-A9EE-2B2EAFABF6B6}" EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "wb3270", "wb3270\wb3270.vcxproj", "{018143FA-C64F-4BD3-9F16-A419B13835F0}" ProjectSection(ProjectDependencies) = postProject {B306FA2C-263B-423D-A42D-F1930DA727F3} = {B306FA2C-263B-423D-A42D-F1930DA727F3} {7B2EBB95-B987-4FC6-BB3F-B7612B54BD00} = {7B2EBB95-B987-4FC6-BB3F-B7612B54BD00} {58A619A3-C1FC-4293-82A2-CC4156B83013} = {58A619A3-C1FC-4293-82A2-CC4156B83013} {9403B3C3-2EA9-44F8-99D4-45DE7692BB1A} = {9403B3C3-2EA9-44F8-99D4-45DE7692BB1A} {A6D4C4FA-6515-416C-9EB2-244A5C40488E} = {A6D4C4FA-6515-416C-9EB2-244A5C40488E} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libexpat", "libexpat\libexpat.vcxproj", "{58A619A3-C1FC-4293-82A2-CC4156B83013}" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Win32 = Debug|Win32 Debug|x64 = Debug|x64 Release|Win32 = Release|Win32 Release|x64 = Release|x64 EndGlobalSection GlobalSection(ProjectConfigurationPlatforms) = postSolution {3F0E2661-72DE-4C76-B013-3FA3ED125DF3}.Debug|Win32.ActiveCfg = Debug|Win32 {3F0E2661-72DE-4C76-B013-3FA3ED125DF3}.Debug|Win32.Build.0 = Debug|Win32 {3F0E2661-72DE-4C76-B013-3FA3ED125DF3}.Debug|x64.ActiveCfg = Debug|x64 {3F0E2661-72DE-4C76-B013-3FA3ED125DF3}.Debug|x64.Build.0 = Debug|x64 {3F0E2661-72DE-4C76-B013-3FA3ED125DF3}.Release|Win32.ActiveCfg = Release|Win32 {3F0E2661-72DE-4C76-B013-3FA3ED125DF3}.Release|Win32.Build.0 = Release|Win32 {3F0E2661-72DE-4C76-B013-3FA3ED125DF3}.Release|x64.ActiveCfg = Release|x64 {3F0E2661-72DE-4C76-B013-3FA3ED125DF3}.Release|x64.Build.0 = Release|x64 {54F94101-1334-443A-B501-5BFBDFEC5323}.Debug|Win32.ActiveCfg = Debug|Win32 {54F94101-1334-443A-B501-5BFBDFEC5323}.Debug|Win32.Build.0 = Debug|Win32 {54F94101-1334-443A-B501-5BFBDFEC5323}.Debug|x64.ActiveCfg = Debug|x64 {54F94101-1334-443A-B501-5BFBDFEC5323}.Debug|x64.Build.0 = Debug|x64 {54F94101-1334-443A-B501-5BFBDFEC5323}.Release|Win32.ActiveCfg = Release|Win32 {54F94101-1334-443A-B501-5BFBDFEC5323}.Release|Win32.Build.0 = Release|Win32 {54F94101-1334-443A-B501-5BFBDFEC5323}.Release|x64.ActiveCfg = Release|x64 {54F94101-1334-443A-B501-5BFBDFEC5323}.Release|x64.Build.0 = Release|x64 {1A5B909A-4E61-4AB0-BC7A-2BC07F3BE1CE}.Debug|Win32.ActiveCfg = Debug|Win32 {1A5B909A-4E61-4AB0-BC7A-2BC07F3BE1CE}.Debug|Win32.Build.0 = Debug|Win32 {1A5B909A-4E61-4AB0-BC7A-2BC07F3BE1CE}.Debug|x64.ActiveCfg = Debug|x64 {1A5B909A-4E61-4AB0-BC7A-2BC07F3BE1CE}.Debug|x64.Build.0 = Debug|x64 {1A5B909A-4E61-4AB0-BC7A-2BC07F3BE1CE}.Release|Win32.ActiveCfg = Release|Win32 {1A5B909A-4E61-4AB0-BC7A-2BC07F3BE1CE}.Release|Win32.Build.0 = Release|Win32 {1A5B909A-4E61-4AB0-BC7A-2BC07F3BE1CE}.Release|x64.ActiveCfg = Release|x64 {1A5B909A-4E61-4AB0-BC7A-2BC07F3BE1CE}.Release|x64.Build.0 = Release|x64 {2A000DFC-320A-4F19-AFB1-42F11775664F}.Debug|Win32.ActiveCfg = Debug|Win32 {2A000DFC-320A-4F19-AFB1-42F11775664F}.Debug|Win32.Build.0 = Debug|Win32 {2A000DFC-320A-4F19-AFB1-42F11775664F}.Debug|x64.ActiveCfg = Debug|x64 {2A000DFC-320A-4F19-AFB1-42F11775664F}.Debug|x64.Build.0 = Debug|x64 {2A000DFC-320A-4F19-AFB1-42F11775664F}.Release|Win32.ActiveCfg = Release|Win32 {2A000DFC-320A-4F19-AFB1-42F11775664F}.Release|Win32.Build.0 = Release|Win32 {2A000DFC-320A-4F19-AFB1-42F11775664F}.Release|x64.ActiveCfg = Release|x64 {2A000DFC-320A-4F19-AFB1-42F11775664F}.Release|x64.Build.0 = Release|x64 {7CC1CB4D-16D7-446A-B132-963F5C1247E9}.Debug|Win32.ActiveCfg = Debug|Win32 {7CC1CB4D-16D7-446A-B132-963F5C1247E9}.Debug|Win32.Build.0 = Debug|Win32 {7CC1CB4D-16D7-446A-B132-963F5C1247E9}.Debug|x64.ActiveCfg = Debug|x64 {7CC1CB4D-16D7-446A-B132-963F5C1247E9}.Debug|x64.Build.0 = Debug|x64 {7CC1CB4D-16D7-446A-B132-963F5C1247E9}.Release|Win32.ActiveCfg = Release|Win32 {7CC1CB4D-16D7-446A-B132-963F5C1247E9}.Release|Win32.Build.0 = Release|Win32 {7CC1CB4D-16D7-446A-B132-963F5C1247E9}.Release|x64.ActiveCfg = Release|x64 {7CC1CB4D-16D7-446A-B132-963F5C1247E9}.Release|x64.Build.0 = Release|x64 {74911F0D-82AF-4FFC-8A43-C411597A64C1}.Debug|Win32.ActiveCfg = Debug|Win32 {74911F0D-82AF-4FFC-8A43-C411597A64C1}.Debug|Win32.Build.0 = Debug|Win32 {74911F0D-82AF-4FFC-8A43-C411597A64C1}.Debug|x64.ActiveCfg = Debug|x64 {74911F0D-82AF-4FFC-8A43-C411597A64C1}.Debug|x64.Build.0 = Debug|x64 {74911F0D-82AF-4FFC-8A43-C411597A64C1}.Release|Win32.ActiveCfg = Release|Win32 {74911F0D-82AF-4FFC-8A43-C411597A64C1}.Release|Win32.Build.0 = Release|Win32 {74911F0D-82AF-4FFC-8A43-C411597A64C1}.Release|x64.ActiveCfg = Release|x64 {74911F0D-82AF-4FFC-8A43-C411597A64C1}.Release|x64.Build.0 = Release|x64 {0094B3D7-0924-4296-BED4-300B53F63562}.Debug|Win32.ActiveCfg = Debug|Win32 {0094B3D7-0924-4296-BED4-300B53F63562}.Debug|Win32.Build.0 = Debug|Win32 {0094B3D7-0924-4296-BED4-300B53F63562}.Debug|x64.ActiveCfg = Debug|x64 {0094B3D7-0924-4296-BED4-300B53F63562}.Debug|x64.Build.0 = Debug|x64 {0094B3D7-0924-4296-BED4-300B53F63562}.Release|Win32.ActiveCfg = Release|Win32 {0094B3D7-0924-4296-BED4-300B53F63562}.Release|Win32.Build.0 = Release|Win32 {0094B3D7-0924-4296-BED4-300B53F63562}.Release|x64.ActiveCfg = Release|x64 {0094B3D7-0924-4296-BED4-300B53F63562}.Release|x64.Build.0 = Release|x64 {25CA97FA-186C-4235-8280-BF1F56FD3CFF}.Debug|Win32.ActiveCfg = Debug|Win32 {25CA97FA-186C-4235-8280-BF1F56FD3CFF}.Debug|Win32.Build.0 = Debug|Win32 {25CA97FA-186C-4235-8280-BF1F56FD3CFF}.Debug|x64.ActiveCfg = Debug|x64 {25CA97FA-186C-4235-8280-BF1F56FD3CFF}.Debug|x64.Build.0 = Debug|x64 {25CA97FA-186C-4235-8280-BF1F56FD3CFF}.Release|Win32.ActiveCfg = Release|Win32 {25CA97FA-186C-4235-8280-BF1F56FD3CFF}.Release|Win32.Build.0 = Release|Win32 {25CA97FA-186C-4235-8280-BF1F56FD3CFF}.Release|x64.ActiveCfg = Release|x64 {25CA97FA-186C-4235-8280-BF1F56FD3CFF}.Release|x64.Build.0 = Release|x64 {F42388CA-CE98-4F9F-96B7-D0DC1F9DA67E}.Debug|Win32.ActiveCfg = Debug|Win32 {F42388CA-CE98-4F9F-96B7-D0DC1F9DA67E}.Debug|Win32.Build.0 = Debug|Win32 {F42388CA-CE98-4F9F-96B7-D0DC1F9DA67E}.Debug|x64.ActiveCfg = Debug|x64 {F42388CA-CE98-4F9F-96B7-D0DC1F9DA67E}.Debug|x64.Build.0 = Debug|x64 {F42388CA-CE98-4F9F-96B7-D0DC1F9DA67E}.Release|Win32.ActiveCfg = Release|Win32 {F42388CA-CE98-4F9F-96B7-D0DC1F9DA67E}.Release|Win32.Build.0 = Release|Win32 {F42388CA-CE98-4F9F-96B7-D0DC1F9DA67E}.Release|x64.ActiveCfg = Release|x64 {F42388CA-CE98-4F9F-96B7-D0DC1F9DA67E}.Release|x64.Build.0 = Release|x64 {2BA5D6CF-59E7-4747-A8BF-A5A1DA3C2567}.Debug|Win32.ActiveCfg = Debug|Win32 {2BA5D6CF-59E7-4747-A8BF-A5A1DA3C2567}.Debug|Win32.Build.0 = Debug|Win32 {2BA5D6CF-59E7-4747-A8BF-A5A1DA3C2567}.Debug|x64.ActiveCfg = Debug|x64 {2BA5D6CF-59E7-4747-A8BF-A5A1DA3C2567}.Debug|x64.Build.0 = Debug|x64 {2BA5D6CF-59E7-4747-A8BF-A5A1DA3C2567}.Release|Win32.ActiveCfg = Release|Win32 {2BA5D6CF-59E7-4747-A8BF-A5A1DA3C2567}.Release|Win32.Build.0 = Release|Win32 {2BA5D6CF-59E7-4747-A8BF-A5A1DA3C2567}.Release|x64.ActiveCfg = Release|x64 {2BA5D6CF-59E7-4747-A8BF-A5A1DA3C2567}.Release|x64.Build.0 = Release|x64 {7B2EBB95-B987-4FC6-BB3F-B7612B54BD00}.Debug|Win32.ActiveCfg = Debug|Win32 {7B2EBB95-B987-4FC6-BB3F-B7612B54BD00}.Debug|Win32.Build.0 = Debug|Win32 {7B2EBB95-B987-4FC6-BB3F-B7612B54BD00}.Debug|x64.ActiveCfg = Debug|x64 {7B2EBB95-B987-4FC6-BB3F-B7612B54BD00}.Debug|x64.Build.0 = Debug|x64 {7B2EBB95-B987-4FC6-BB3F-B7612B54BD00}.Release|Win32.ActiveCfg = Release|Win32 {7B2EBB95-B987-4FC6-BB3F-B7612B54BD00}.Release|Win32.Build.0 = Release|Win32 {7B2EBB95-B987-4FC6-BB3F-B7612B54BD00}.Release|x64.ActiveCfg = Release|x64 {7B2EBB95-B987-4FC6-BB3F-B7612B54BD00}.Release|x64.Build.0 = Release|x64 {A6D4C4FA-6515-416C-9EB2-244A5C40488E}.Debug|Win32.ActiveCfg = Debug|Win32 {A6D4C4FA-6515-416C-9EB2-244A5C40488E}.Debug|Win32.Build.0 = Debug|Win32 {A6D4C4FA-6515-416C-9EB2-244A5C40488E}.Debug|x64.ActiveCfg = Debug|x64 {A6D4C4FA-6515-416C-9EB2-244A5C40488E}.Debug|x64.Build.0 = Debug|x64 {A6D4C4FA-6515-416C-9EB2-244A5C40488E}.Release|Win32.ActiveCfg = Release|Win32 {A6D4C4FA-6515-416C-9EB2-244A5C40488E}.Release|Win32.Build.0 = Release|Win32 {A6D4C4FA-6515-416C-9EB2-244A5C40488E}.Release|x64.ActiveCfg = Release|x64 {A6D4C4FA-6515-416C-9EB2-244A5C40488E}.Release|x64.Build.0 = Release|x64 {07A63EBF-BCDC-40E7-B1EA-6384B461A448}.Debug|Win32.ActiveCfg = Debug|Win32 {07A63EBF-BCDC-40E7-B1EA-6384B461A448}.Debug|Win32.Build.0 = Debug|Win32 {07A63EBF-BCDC-40E7-B1EA-6384B461A448}.Debug|x64.ActiveCfg = Debug|x64 {07A63EBF-BCDC-40E7-B1EA-6384B461A448}.Debug|x64.Build.0 = Debug|x64 {07A63EBF-BCDC-40E7-B1EA-6384B461A448}.Release|Win32.ActiveCfg = Release|Win32 {07A63EBF-BCDC-40E7-B1EA-6384B461A448}.Release|Win32.Build.0 = Release|Win32 {07A63EBF-BCDC-40E7-B1EA-6384B461A448}.Release|x64.ActiveCfg = Release|x64 {07A63EBF-BCDC-40E7-B1EA-6384B461A448}.Release|x64.Build.0 = Release|x64 {B306FA2C-263B-423D-A42D-F1930DA727F3}.Debug|Win32.ActiveCfg = Debug|Win32 {B306FA2C-263B-423D-A42D-F1930DA727F3}.Debug|Win32.Build.0 = Debug|Win32 {B306FA2C-263B-423D-A42D-F1930DA727F3}.Debug|x64.ActiveCfg = Debug|x64 {B306FA2C-263B-423D-A42D-F1930DA727F3}.Debug|x64.Build.0 = Debug|x64 {B306FA2C-263B-423D-A42D-F1930DA727F3}.Release|Win32.ActiveCfg = Release|Win32 {B306FA2C-263B-423D-A42D-F1930DA727F3}.Release|Win32.Build.0 = Release|Win32 {B306FA2C-263B-423D-A42D-F1930DA727F3}.Release|x64.ActiveCfg = Release|x64 {B306FA2C-263B-423D-A42D-F1930DA727F3}.Release|x64.Build.0 = Release|x64 {9403B3C3-2EA9-44F8-99D4-45DE7692BB1A}.Debug|Win32.ActiveCfg = Debug|Win32 {9403B3C3-2EA9-44F8-99D4-45DE7692BB1A}.Debug|Win32.Build.0 = Debug|Win32 {9403B3C3-2EA9-44F8-99D4-45DE7692BB1A}.Debug|x64.ActiveCfg = Debug|x64 {9403B3C3-2EA9-44F8-99D4-45DE7692BB1A}.Debug|x64.Build.0 = Debug|x64 {9403B3C3-2EA9-44F8-99D4-45DE7692BB1A}.Release|Win32.ActiveCfg = Release|Win32 {9403B3C3-2EA9-44F8-99D4-45DE7692BB1A}.Release|Win32.Build.0 = Release|Win32 {9403B3C3-2EA9-44F8-99D4-45DE7692BB1A}.Release|x64.ActiveCfg = Release|x64 {9403B3C3-2EA9-44F8-99D4-45DE7692BB1A}.Release|x64.Build.0 = Release|x64 {6CB171E9-F0B7-425C-A9EE-2B2EAFABF6B6}.Debug|Win32.ActiveCfg = Debug|Win32 {6CB171E9-F0B7-425C-A9EE-2B2EAFABF6B6}.Debug|Win32.Build.0 = Debug|Win32 {6CB171E9-F0B7-425C-A9EE-2B2EAFABF6B6}.Debug|x64.ActiveCfg = Debug|x64 {6CB171E9-F0B7-425C-A9EE-2B2EAFABF6B6}.Debug|x64.Build.0 = Debug|x64 {6CB171E9-F0B7-425C-A9EE-2B2EAFABF6B6}.Release|Win32.ActiveCfg = Release|Win32 {6CB171E9-F0B7-425C-A9EE-2B2EAFABF6B6}.Release|Win32.Build.0 = Release|Win32 {6CB171E9-F0B7-425C-A9EE-2B2EAFABF6B6}.Release|x64.ActiveCfg = Release|x64 {6CB171E9-F0B7-425C-A9EE-2B2EAFABF6B6}.Release|x64.Build.0 = Release|x64 {018143FA-C64F-4BD3-9F16-A419B13835F0}.Debug|Win32.ActiveCfg = Debug|Win32 {018143FA-C64F-4BD3-9F16-A419B13835F0}.Debug|Win32.Build.0 = Debug|Win32 {018143FA-C64F-4BD3-9F16-A419B13835F0}.Debug|x64.ActiveCfg = Debug|x64 {018143FA-C64F-4BD3-9F16-A419B13835F0}.Debug|x64.Build.0 = Debug|x64 {018143FA-C64F-4BD3-9F16-A419B13835F0}.Release|Win32.ActiveCfg = Release|Win32 {018143FA-C64F-4BD3-9F16-A419B13835F0}.Release|Win32.Build.0 = Release|Win32 {018143FA-C64F-4BD3-9F16-A419B13835F0}.Release|x64.ActiveCfg = Release|x64 {018143FA-C64F-4BD3-9F16-A419B13835F0}.Release|x64.Build.0 = Release|x64 {58A619A3-C1FC-4293-82A2-CC4156B83013}.Debug|Win32.ActiveCfg = Debug|Win32 {58A619A3-C1FC-4293-82A2-CC4156B83013}.Debug|Win32.Build.0 = Debug|Win32 {58A619A3-C1FC-4293-82A2-CC4156B83013}.Debug|x64.ActiveCfg = Debug|x64 {58A619A3-C1FC-4293-82A2-CC4156B83013}.Debug|x64.Build.0 = Debug|x64 {58A619A3-C1FC-4293-82A2-CC4156B83013}.Release|Win32.ActiveCfg = Release|Win32 {58A619A3-C1FC-4293-82A2-CC4156B83013}.Release|Win32.Build.0 = Release|Win32 {58A619A3-C1FC-4293-82A2-CC4156B83013}.Release|x64.ActiveCfg = Release|x64 {58A619A3-C1FC-4293-82A2-CC4156B83013}.Release|x64.Build.0 = Release|x64 EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution SolutionGuid = {C502EE5E-AEE0-429A-8035-853FC8D48706} EndGlobalSection EndGlobal suite3270-4.1/VisualStudio/wb3270/000077500000000000000000000000001413735575200164165ustar00rootroot00000000000000suite3270-4.1/VisualStudio/wb3270/wb3270.vcxproj000077500000000000000000000272211413735575200207660ustar00rootroot00000000000000 Debug Win32 Debug x64 Release Win32 Release x64 {018143FA-C64F-4BD3-9F16-A419B13835F0} wb3270 Win32Proj b3270 Application MultiByte true v142 Application MultiByte true v142 Application MultiByte v142 Application MultiByte v142 <_ProjectFileVersion>10.0.40219.1 $(SolutionDir)$(Configuration)\ $(Configuration)\ true true $(SolutionDir)$(Configuration)\ $(Configuration)\ false false Disabled %(RootDir)%(Directory);%(ProjectDir)..\..\include;%(ProjectDir)..\..\Common\b3270;%(ProjectDir)..\..\wb3270;%(ProjectDir)..\..\Common;%(ProjectDir)..\..\Common\libexpat;%(AdditionalIncludeDirectories) WIN32;_DEBUG;_CONSOLE;_WIN32;_CRT_SECURE_NO_DEPRECATE;_WINSOCK_DEPRECATED_NO_WARNINGS;XML_STATIC;%(PreprocessorDefinitions) true EnableFastChecks MultiThreadedDebugDLL Level3 EditAndContinue true Ws2_32.lib;$(OutDir)libw3270.lib;$(OutDir)libw3270i.lib;$(OutDir)libw32xx.lib;$(OutDir)libw3270stubs.lib;$(OutDir)libexpat.lib;crypt32.lib;secur32.lib;%(AdditionalDependencies) true Console MachineX86 Disabled %(RootDir)%(Directory);%(ProjectDir)..\..\include;%(ProjectDir)..\..\Common\b3270;%(ProjectDir)..\..\wb3270;%(ProjectDir)..\..\Common;%(ProjectDir)..\..\Common\libexpat;%(AdditionalIncludeDirectories) WIN32;_DEBUG;_CONSOLE;_WIN32;_CRT_SECURE_NO_DEPRECATE;_WINSOCK_DEPRECATED_NO_WARNINGS;%(PreprocessorDefinitions) EnableFastChecks MultiThreadedDebugDLL Level3 ProgramDatabase true Ws2_32.lib;$(OutDir)libw3270.lib;$(OutDir)libw3270i.lib;$(OutDir)libw32xx.lib;$(OutDir)libw3270stubs.lib;crypt32.lib;secur32.lib;%(AdditionalDependencies) true Console MaxSpeed true %(RootDir)%(Directory);%(ProjectDir)..\..\include;%(ProjectDir)..\..\Common\b3270;%(ProjectDir)..\..\wb3270;%(ProjectDir)..\..\Common;%(ProjectDir)..\..\Common\libexpat;%(AdditionalIncludeDirectories) WIN32;NDEBUG;_CONSOLE;_WIN32;_CRT_SECURE_NO_DEPRECATE;_WINSOCK_DEPRECATED_NO_WARNINGS;%(PreprocessorDefinitions) MultiThreadedDLL true Level3 ProgramDatabase true Ws2_32.lib;$(OutDir)libw3270.lib;$(OutDir)libw3270i.lib;$(OutDir)libw32xx.lib;$(OutDir)libw3270stubs.lib;%(AdditionalDependencies) true Console true true MachineX86 MaxSpeed true %(RootDir)%(Directory);%(ProjectDir)..\..\include;%(ProjectDir)..\..\Common\b3270;%(ProjectDir)..\..\wb3270;%(ProjectDir)..\..\Common;%(ProjectDir)..\..\Common\libexpat;%(AdditionalIncludeDirectories) WIN32;NDEBUG;_CONSOLE;_WIN32;_CRT_SECURE_NO_DEPRECATE;_WINSOCK_DEPRECATED_NO_WARNINGS;%(PreprocessorDefinitions) MultiThreadedDLL true Level3 ProgramDatabase true Ws2_32.lib;$(OutDir)libw3270.lib;$(OutDir)libw3270i.lib;$(OutDir)libw32xx.lib;$(OutDir)libw3270stubs.lib;%(AdditionalDependencies) true Console true true {2a000dfc-320a-4f19-afb1-42f11775664f} false {1a5b909a-4e61-4ab0-bc7a-2bc07f3be1ce} false suite3270-4.1/VisualStudio/wb3270/wb3270.vcxproj.filters000077500000000000000000000040501413735575200224300ustar00rootroot00000000000000 {4FC737F1-C7A5-4376-A066-2A32D752A2} cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx {93995380-89BD-4b04-88EB-625FBE52EBFB} h;hpp;hxx;hm;inl;inc;xsd {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav Resource Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files suite3270-4.1/VisualStudio/wb3270/wb3270.vcxproj.user000077500000000000000000000006001413735575200217330ustar00rootroot00000000000000 -verifycert -trace WindowsLocalDebugger suite3270-4.1/VisualStudio/wc3270/000077500000000000000000000000001413735575200164175ustar00rootroot00000000000000suite3270-4.1/VisualStudio/wc3270/wc3270.vcxproj000077500000000000000000000275211413735575200207730ustar00rootroot00000000000000 Debug Win32 Debug x64 Release Win32 Release x64 {3F0E2661-72DE-4C76-B013-3FA3ED125DF3} wc3270 Win32Proj Application MultiByte true v142 Application MultiByte true v142 Application MultiByte v142 Application MultiByte v142 <_ProjectFileVersion>10.0.40219.1 $(SolutionDir)$(Configuration)\ $(Configuration)\ true true $(SolutionDir)$(Configuration)\ $(Configuration)\ false false Disabled %(RootDir)%(Directory);%(ProjectDir)..\..\include;%(ProjectDir)..\..\wc3270;%(ProjectDir)..\..\Common;%(ProjectDir)..\..\Common\c3270;%(AdditionalIncludeDirectories) WIN32;_DEBUG;_CONSOLE;_WIN32;_CRT_SECURE_NO_DEPRECATE;_WINSOCK_DEPRECATED_NO_WARNINGS;%(PreprocessorDefinitions) true EnableFastChecks MultiThreadedDebugDLL Level3 EditAndContinue true Ws2_32.lib;$(OutDir)libw3270.lib;$(OutDir)libw3270i.lib;$(OutDir)libw32xx.lib;$(OutDir)libw3270stubs.lib;crypt32.lib;secur32.lib;%(AdditionalDependencies) true Console MachineX86 Disabled %(RootDir)%(Directory);%(ProjectDir)..\..\include;%(ProjectDir)..\..\wc3270;%(ProjectDir)..\..\Common;%(ProjectDir)..\..\Common\c3270;%(AdditionalIncludeDirectories) WIN32;_DEBUG;_CONSOLE;_WIN32;_CRT_SECURE_NO_DEPRECATE;_WINSOCK_DEPRECATED_NO_WARNINGS;%(PreprocessorDefinitions) EnableFastChecks MultiThreadedDebugDLL Level3 ProgramDatabase true Ws2_32.lib;$(OutDir)libw3270.lib;$(OutDir)libw3270i.lib;$(OutDir)libw32xx.lib;$(OutDir)libw3270stubs.lib;crypt32.lib;secur32.lib;%(AdditionalDependencies) true Console MaxSpeed true %(RootDir)%(Directory);%(ProjectDir)..\..\include;%(ProjectDir)..\..\wc3270;%(ProjectDir)..\..\Common;%(ProjectDir)..\..\Common\c3270;%(AdditionalIncludeDirectories) WIN32;NDEBUG;_CONSOLE;_WIN32;_CRT_SECURE_NO_DEPRECATE;_WINSOCK_DEPRECATED_NO_WARNINGS;%(PreprocessorDefinitions) MultiThreadedDLL true Level3 ProgramDatabase true Ws2_32.lib;$(OutDir)libw3270.lib;$(OutDir)libw3270i.lib;$(OutDir)libw32xx.lib;$(OutDir)libw3270stubs.lib;%(AdditionalDependencies) true Console true true MachineX86 MaxSpeed true %(RootDir)%(Directory);%(ProjectDir)..\..\include;%(ProjectDir)..\..\wc3270;%(ProjectDir)..\..\Common;%(ProjectDir)..\..\Common\c3270;%(AdditionalIncludeDirectories) WIN32;NDEBUG;_CONSOLE;_WIN32;_CRT_SECURE_NO_DEPRECATE;_WINSOCK_DEPRECATED_NO_WARNINGS;%(PreprocessorDefinitions) MultiThreadedDLL true Level3 ProgramDatabase true Ws2_32.lib;$(OutDir)libw3270.lib;$(OutDir)libw3270i.lib;$(OutDir)libw32xx.lib;$(OutDir)libw3270stubs.lib;%(AdditionalDependencies) true Console true true {2a000dfc-320a-4f19-afb1-42f11775664f} false {54f94101-1334-443a-b501-5bfbdfec5323} false {1a5b909a-4e61-4ab0-bc7a-2bc07f3be1ce} false suite3270-4.1/VisualStudio/wc3270/wc3270.vcxproj.filters000077500000000000000000000050751413735575200224420ustar00rootroot00000000000000 {4FC737F1-C7A5-4376-A066-2A32D752A2FF} cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx {93995380-89BD-4b04-88EB-625FBE52EBFB} h;hpp;hxx;hm;inl;inc;xsd {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav Resource Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files suite3270-4.1/VisualStudio/wc3270/wc3270.vcxproj.user000077500000000000000000000006001413735575200217350ustar00rootroot00000000000000 -verifycert -trace WindowsLocalDebugger suite3270-4.1/VisualStudio/wc3270wiz/000077500000000000000000000000001413735575200171515ustar00rootroot00000000000000suite3270-4.1/VisualStudio/wc3270wiz/wc3270wiz.vcxproj000077500000000000000000000210151413735575200222470ustar00rootroot00000000000000 Debug Win32 Debug x64 Release Win32 Release x64 {7CC1CB4D-16D7-446A-B132-963F5C1247E9} Win32Proj wc3270wiz Application true MultiByte v142 Application true MultiByte v142 Application false true MultiByte v142 Application false true MultiByte v142 true true false false Level3 Disabled WIN32;_DEBUG;_CONSOLE;_WIN32;_CRT_SECURE_NO_DEPRECATE;_WINSOCK_DEPRECATED_NO_WARNINGS;%(PreprocessorDefinitions) true %(ProjectDir)..\..\include;%(ProjectDir)..\..\Common\c3270 Console true $(OutDir)libw32xx.lib;%(AdditionalDependencies) Level3 Disabled WIN32;_DEBUG;_CONSOLE;_WIN32;_CRT_SECURE_NO_DEPRECATE;_WINSOCK_DEPRECATED_NO_WARNINGS;%(PreprocessorDefinitions) true %(ProjectDir)..\..\include;%(ProjectDir)..\..\Common\c3270 Console true $(OutDir)libw32xx.lib;%(AdditionalDependencies) Level3 MaxSpeed true true WIN32;NDEBUG;_CONSOLE;_WIN32;_CRT_SECURE_NO_DEPRECATE;_WINSOCK_DEPRECATED_NO_WARNINGS;%(PreprocessorDefinitions) true %(ProjectDir)..\..\include;%(ProjectDir)..\..\Common\c3270 Console true true true $(OutDir)libw32xx.lib;%(AdditionalDependencies) Level3 MaxSpeed true true WIN32;NDEBUG;_CONSOLE;_WIN32;_CRT_SECURE_NO_DEPRECATE;_WINSOCK_DEPRECATED_NO_WARNINGS;%(PreprocessorDefinitions) true %(ProjectDir)..\..\include;%(ProjectDir)..\..\Common\c3270 Console true true true $(OutDir)libw32xx.lib;%(AdditionalDependencies) suite3270-4.1/VisualStudio/wc3270wiz/wc3270wiz.vcxproj.filters000077500000000000000000000024041413735575200237170ustar00rootroot00000000000000 {4FC737F1-C7A5-4376-A066-2A32D752A2FF} cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx {93995380-89BD-4b04-88EB-625FBE52EBFB} h;hpp;hxx;hm;inl;inc;xsd {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms Source Files Source Files Source Files Source Files suite3270-4.1/VisualStudio/wc3270wiz/wc3270wiz.vcxproj.user000077500000000000000000000002171413735575200232250ustar00rootroot00000000000000 suite3270-4.1/VisualStudio/wpr3287/000077500000000000000000000000001413735575200166265ustar00rootroot00000000000000suite3270-4.1/VisualStudio/wpr3287/wpr3287.vcxproj000077500000000000000000000235631413735575200214130ustar00rootroot00000000000000 Debug Win32 Debug x64 Release Win32 Release x64 {0094B3D7-0924-4296-BED4-300B53F63562} Win32Proj wpr3287 pr3287 Application true MultiByte v142 Application true MultiByte v142 Application false true MultiByte v142 Application false true MultiByte v142 true true false false Level3 Disabled WIN32;_DEBUG;_CONSOLE;_WIN32;_CRT_SECURE_NO_DEPRECATE;_WINSOCK_DEPRECATED_NO_WARNINGS;%(PreprocessorDefinitions) true %(RootDir)%(Directory);%(ProjectDir)..\..\include;%(ProjectDir)..\..\Common\pr3287;%(ProjectDir)..\..\wpr3287;%(AdditionalIncludeDirectories) Console true $(OutDir)libw32xx.lib;Ws2_32.lib;crypt32.lib;secur32.lib;%(AdditionalDependencies) cmd.exe /c copy "$(OutDir)\pr3287.exe" "$(OutDir)\wpr3287.exe" Level3 Disabled WIN32;_DEBUG;_CONSOLE;_WIN32;_CRT_SECURE_NO_DEPRECATE;_WINSOCK_DEPRECATED_NO_WARNINGS;%(PreprocessorDefinitions) true %(RootDir)%(Directory);%(ProjectDir)..\..\include;%(ProjectDir)..\..\Common\pr3287;%(ProjectDir)..\..\wpr3287;%(AdditionalIncludeDirectories) Console true $(OutDir)libw32xx.lib;Ws2_32.lib;crypt32.lib;secur32.lib;%(AdditionalDependencies) cmd.exe /c copy "$(OutDir)\pr3287.exe" "$(OutDir)\wpr3287.exe" Level3 MaxSpeed true true WIN32;NDEBUG;_CONSOLE;_WIN32;_CRT_SECURE_NO_DEPRECATE;_WINSOCK_DEPRECATED_NO_WARNINGS;%(PreprocessorDefinitions) true %(RootDir)%(Directory);%(ProjectDir)..\..\include;%(ProjectDir)..\..\Common\pr3287;%(ProjectDir)..\..\wpr3287;%(AdditionalIncludeDirectories) Console true true true $(OutDir)libw32xx.lib;Ws2_32.lib;%(AdditionalDependencies) cmd.exe /c copy "$(OutDir)\pr3287.exe" "$(OutDir)\wpr3287.exe" Level3 MaxSpeed true true WIN32;NDEBUG;_CONSOLE;_WIN32;_CRT_SECURE_NO_DEPRECATE;_WINSOCK_DEPRECATED_NO_WARNINGS;%(PreprocessorDefinitions) true %(RootDir)%(Directory);%(ProjectDir)..\..\include;%(ProjectDir)..\..\Common\pr3287;%(ProjectDir)..\..\wpr3287;%(AdditionalIncludeDirectories) Console true true true $(OutDir)libw32xx.lib;Ws2_32.lib;%(AdditionalDependencies) cmd.exe /c copy "$(OutDir)\pr3287.exe" "$(OutDir)\wpr3287.exe" suite3270-4.1/VisualStudio/wpr3287/wpr3287.vcxproj.filters000077500000000000000000000037131413735575200230550ustar00rootroot00000000000000 {4FC737F1-C7A5-4376-A066-2A32D752A2FF} cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx {93995380-89BD-4b04-88EB-625FBE52EBFB} h;hpp;hxx;hm;inl;inc;xsd {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms Resource Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files suite3270-4.1/VisualStudio/wpr3287/wpr3287.vcxproj.user000077500000000000000000000002171413735575200223570ustar00rootroot00000000000000 suite3270-4.1/VisualStudio/ws3270/000077500000000000000000000000001413735575200164375ustar00rootroot00000000000000suite3270-4.1/VisualStudio/ws3270/ws3270.vcxproj000077500000000000000000000234351413735575200210330ustar00rootroot00000000000000 Debug Win32 Debug x64 Release Win32 Release x64 {74911F0D-82AF-4FFC-8A43-C411597A64C1} Win32Proj ws3270 s3270 Application true MultiByte v142 Application true MultiByte v142 Application false true MultiByte v142 Application false true MultiByte v142 true true false false Level3 Disabled WIN32;_DEBUG;_CONSOLE;_WIN32;_CRT_SECURE_NO_DEPRECATE;_WINSOCK_DEPRECATED_NO_WARNINGS;%(PreprocessorDefinitions) true %(RootDir)%(Directory);%(ProjectDir)..\..\include;%(ProjectDir)..\..\ws3270;%(ProjectDir)..\..\Common\s3270;%(AdditionalIncludeDirectories) false Console true Ws2_32.lib;$(OutDir)libw3270.lib;$(OutDir)libw32xx.lib;$(OutDir)libw3270stubs.lib;crypt32.lib;secur32.lib;%(AdditionalDependencies) cmd.exe /c copy "$(OutDir)\s3270.exe" "$(OutDir)\ws3270.exe" Level3 Disabled WIN32;_DEBUG;_CONSOLE;_WIN32;_CRT_SECURE_NO_DEPRECATE;_WINSOCK_DEPRECATED_NO_WARNINGS;%(PreprocessorDefinitions) true %(RootDir)%(Directory);%(ProjectDir)..\..\include;%(ProjectDir)..\..\ws3270;%(ProjectDir)..\..\Common\s3270;%(AdditionalIncludeDirectories) false Console true Ws2_32.lib;$(OutDir)libw3270.lib;$(OutDir)libw32xx.lib;$(OutDir)libw3270stubs.lib;crypt32.lib;secur32.lib;%(AdditionalDependencies) cmd.exe /c copy "$(OutDir)\s3270.exe" "$(OutDir)\ws3270.exe" Level3 MaxSpeed true true WIN32;NDEBUG;_CONSOLE;_WIN32;_CRT_SECURE_NO_DEPRECATE;_WINSOCK_DEPRECATED_NO_WARNINGS;%(PreprocessorDefinitions) true %(RootDir)%(Directory);%(ProjectDir)..\..\include;%(ProjectDir)..\..\ws3270;%(ProjectDir)..\..\Common\s3270;%(AdditionalIncludeDirectories) Console true true true Ws2_32.lib;$(OutDir)libw3270.lib;$(OutDir)libw32xx.lib;$(OutDir)libw3270stubs.lib;%(AdditionalDependencies) cmd.exe /c copy "$(OutDir)\s3270.exe" "$(OutDir)\ws3270.exe" Level3 MaxSpeed true true WIN32;NDEBUG;_CONSOLE;_WIN32;_CRT_SECURE_NO_DEPRECATE;_WINSOCK_DEPRECATED_NO_WARNINGS;%(PreprocessorDefinitions) true %(RootDir)%(Directory);%(ProjectDir)..\..\include;%(ProjectDir)..\..\ws3270;%(ProjectDir)..\..\Common\s3270;%(AdditionalIncludeDirectories) Console true true true Ws2_32.lib;$(OutDir)libw3270.lib;$(OutDir)libw32xx.lib;$(OutDir)libw3270stubs.lib;%(AdditionalDependencies) cmd.exe /c copy "$(OutDir)\s3270.exe" "$(OutDir)\ws3270.exe" suite3270-4.1/VisualStudio/ws3270/ws3270.vcxproj.filters000077500000000000000000000024611413735575200224760ustar00rootroot00000000000000 {4FC737F1-C7A5-4376-A066-2A32D752A2FF} cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx {93995380-89BD-4b04-88EB-625FBE52EBFB} h;hpp;hxx;hm;inl;inc;xsd {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms Resource Files Source Files Source Files Source Files suite3270-4.1/VisualStudio/ws3270/ws3270.vcxproj.user000077500000000000000000000002211413735575200217740ustar00rootroot00000000000000 suite3270-4.1/VisualStudio/x3270if/000077500000000000000000000000001413735575200165745ustar00rootroot00000000000000suite3270-4.1/VisualStudio/x3270if/x3270if.vcxproj000077500000000000000000000216641413735575200213270ustar00rootroot00000000000000 Debug Win32 Debug x64 Release Win32 Release x64 {1a5b909a-4e61-4ab0-bc7a-2bc07f3be1ce} {25CA97FA-186C-4235-8280-BF1F56FD3CFF} Win32Proj x3270if Application true MultiByte v142 Application true MultiByte v142 Application false true MultiByte v142 Application false true MultiByte v142 true true false false Level3 Disabled WIN32;_DEBUG;_CONSOLE;_WIN32;_CRT_SECURE_NO_DEPRECATE;_WINSOCK_DEPRECATED_NO_WARNINGS;%(PreprocessorDefinitions) true %(ProjectDir)..\..\include;%(ProjectDir)..\..\ws3270;%(ProjectDir)..\..\Common\s3270 Console true $(OutDir)libw32xx.lib;ws2_32.lib;%(AdditionalDependencies) Level3 Disabled WIN32;_DEBUG;_CONSOLE;_WIN32;_CRT_SECURE_NO_DEPRECATE;_WINSOCK_DEPRECATED_NO_WARNINGS;%(PreprocessorDefinitions) true %(ProjectDir)..\..\include;%(ProjectDir)..\..\ws3270;%(ProjectDir)..\..\Common\s3270 Console true $(OutDir)libw32xx.lib;ws2_32.lib;%(AdditionalDependencies) Level3 MaxSpeed true true WIN32;NDEBUG;_CONSOLE;_WIN32;_CRT_SECURE_NO_DEPRECATE;_WINSOCK_DEPRECATED_NO_WARNINGS;%(PreprocessorDefinitions) true %(ProjectDir)..\..\include;%(ProjectDir)..\..\ws3270;%(ProjectDir)..\..\Common\s3270 Console true true true $(OutDir)libw32xx.lib;ws2_32.lib;%(AdditionalDependencies) Level3 MaxSpeed true true WIN32;NDEBUG;_CONSOLE;_WIN32;_CRT_SECURE_NO_DEPRECATE;_WINSOCK_DEPRECATED_NO_WARNINGS;%(PreprocessorDefinitions) true %(ProjectDir)..\..\include;%(ProjectDir)..\..\ws3270;%(ProjectDir)..\..\Common\s3270 Console true true true $(OutDir)libw32xx.lib;ws2_32.lib;%(AdditionalDependencies) suite3270-4.1/VisualStudio/x3270if/x3270if.vcxproj.filters000077500000000000000000000026321413735575200227700ustar00rootroot00000000000000 {4FC737F1-C7A5-4376-A066-2A32D752A2FF} cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx {93995380-89BD-4b04-88EB-625FBE52EBFB} h;hpp;hxx;hm;inl;inc;xsd {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms Source Files Source Files Source Files Source Files Resource Files suite3270-4.1/VisualStudio/x3270if/x3270if.vcxproj.user000077500000000000000000000002171413735575200222730ustar00rootroot00000000000000 suite3270-4.1/Webpage/000077500000000000000000000000001413735575200144115ustar00rootroot00000000000000suite3270-4.1/Webpage/.gitignore000066400000000000000000000004701413735575200164020ustar00rootroot00000000000000credits.html documentation-bugs.html documentation-faq.html documentation-manpages.html documentation-misc.html documentation-other.html documentation-relnotes.html documentation-ssl-body.html documentation-ssl.html documentation.html download.html index.html license.html screenshots.html webpage.tgz x026.html suite3270-4.1/Webpage/.htaccess000066400000000000000000000036151413735575200162140ustar00rootroot00000000000000Redirect /Brackets.html "https://x3270.miraheze.org/wiki/Why_are_the_square_bracket_characters_displayed_wrong%3F" Redirect /Build.html "https://x3270.miraheze.org/wiki/Build" Redirect /c3270-Resources.html "https://x3270.miraheze.org/wiki/Category:C3270_resources" Redirect /c3270Keymap.html "https://x3270.miraheze.org/wiki/C3270/Keymap" Redirect /Charset.html "https://x3270.miraheze.org/wiki/3270cg_encoding" Redirect /credits.html "https://x3270.miraheze.org/wiki/Credits" Redirect /documentation-faq.html "https://x3270.miraheze.org/wiki/Category:Frequently-asked_questions" Redirect /documentation-relnotes.html "https://x3270.miraheze.org/wiki/Release_Notes" Redirect /documentation-ssl.html "https://x3270.miraheze.org/wiki/Transport_Layer_Security" Redirect /download.html "https://x3270.miraheze.org/wiki/Downloads" Redirect /Keymap.html "https://x3270.miraheze.org/wiki/X3270/Keymap" Redirect /license.html "https://x3270.miraheze.org/wiki/X3270_license" Redirect /rest.html "https://x3270.miraheze.org/wiki/HTTP_server" Redirect /s3270-Resources.html "https://x3270.miraheze.org/wiki/Category:S3270_resources" Redirect /tcl3270-Resources.html "https://x3270.miraheze.org/wiki/Category:S3270_resources" Redirect /wc3270-Resources.html "https://x3270.miraheze.org/wiki/Category:Wc3270_resources" Redirect /ws3270-Resources.html "https://x3270.miraheze.org/wiki/Category:S3270_resources" Redirect /wc3270Keymap.html "https://x3270.miraheze.org/wiki/Wc3270/Keymap" Redirect /WindowsInstall.html "https://x3270.miraheze.org/wiki/Wc3270/Installer" Redirect /x3270-Resources.html "https://x3270.miraheze.org/wiki/Category:X3270_resources" Redirect /Unix-x3270if.html "https://x3270.miraheze.org/wiki/X3270if" Redirect /Windows-x3270if.html "https://x3270.miraheze.org/wiki/X3270if" Redirect /x3270-script.html "https://x3270.miraheze.org/wiki/Scripting" Redirect /wc3270-script.html "https://x3270.miraheze.org/wiki/Scripting" suite3270-4.1/Webpage/Makefile000066400000000000000000000073341413735575200160600ustar00rootroot00000000000000# Copyright (c) 2007-2018, 2020 Paul Mattes. # All rights reserved. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions are met: # * Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # * Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in the # documentation and/or other materials provided with the distribution. # * Neither the names of Paul Mattes nor the names of his contributors # may be used to endorse or promote products derived from this software # without specific prior written permission. # # THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS OR IMPLIED # WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF # MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO # EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, # SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED # TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR # PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF # LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING # NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS # SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. # # Makefile for the Webpage directory PAGES = documentation-bugs.html documentation-manpages.html \ documentation-misc.html documentation-other.html documentation.html \ index.html screenshots.html x026.html SCREENS = c3270-thumb.png c3270.png cyrillic-thumb.png cyrillic.png \ japanese-thumb.png japanese.png keypad-thumb.png keypad.png \ wc3270-thumb.png wc3270.png x3270_main-thumb.png x3270_main.png OTHERS = $(SCREENS) SS-HCS12-1372-00.pdf c3270-man.html ibm_hosts.html \ man/FAQ.html pr3287-man.html s3270-man.html styles.css \ tcl3270-man.html wc3270-man.html x026.gif x3270-man.html \ x3270.jpg .htaccess c3270-help/.htaccess wc3270-help/.htaccess \ wx3270-help/.htaccess x3270-help/.htaccess all: $(PAGES) webpage.tgz clean: $(RM) $(PAGES) webpage.tgz # Rules for HTML files with the navigation bar. documentation.html: documentation-body.html mkpages.bash version.txt ./mkpages.bash documentation documentation-bugs.html: documentation-bugs-body.html mkpages.bash version.txt ./mkpages.bash documentation-bugs documentation-manpages.html: documentation-manpages-body.html mkpages.bash \ version.txt ./mkpages.bash documentation-manpages documentation-misc.html: documentation-misc-body.html mkpages.bash version.txt ./mkpages.bash documentation-misc documentation-other.html: documentation-other-body.html mkpages.bash version.txt ./mkpages.bash documentation-other index.html: index-body.html mkpages.bash version.txt ./mkpages.bash index screenshots.html: screenshots-body.html mkpages.bash version.txt ./mkpages.bash screenshots x026.html: x026-body.html mkpages.bash version.txt ./mkpages.bash x026 c3270-man.html: cd ../c3270 && $(MAKE) -f Makefile.aux html/c3270-man.html ibm_hosts.html: cd ../x3270 && $(MAKE) -f Makefile.aux html/ibm_hosts.html pr3287-man.html: cd ../pr3287 && $(MAKE) -f Makefile.aux html/pr3287-man.html s3270-man.html: cd ../s3270 && $(MAKE) -f Makefile.aux html/s3270-man.html tcl3270-man.html: cd ../tcl3270 && $(MAKE) -f Makefile.aux html/tcl3270-man.html x3270-man.html: cd ../x3270 && $(MAKE) -f Makefile.aux html/x3270-man.html wc3270-man.html: cd ../wc3270 && $(MAKE) -f Makefile.aux html/wc3270-man.html webpage.tgz: $(PAGES) $(OTHERS) mkpages.bash Makefile tar -czhf webpage.tgz $(PAGES) $(OTHERS) suite3270-4.1/Webpage/Makefile.aux000066400000000000000000000031651413735575200166520ustar00rootroot00000000000000# # Copyright (c) 2015 Paul Mattes. # All rights reserved. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions are met: # * Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # * Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in the # documentation and/or other materials provided with the distribution. # * Neither the names of Paul Mattes nor the names of his contributors # may be used to endorse or promote products derived from this software # without specific prior written permission. # # THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS OR IMPLIED # WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF # MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO # EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, # SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, # PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; # OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, # WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR # OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF # ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. # # Auxiliary makefile for Webpage all: @echo "Must pick a specific make target." # Rule for building the source tarball. src.tgz: prepare: suite3270-4.1/Webpage/SS-HCS12-1372-00.pdf000077500000000000000000005476771413735575200170530ustar00rootroot00000000000000%PDF-1.5 %µµµµ 1 0 obj <>>> endobj 2 0 obj <> endobj 3 0 obj <>/ExtGState<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/MediaBox[ 0 0 612 792] /Contents 4 0 R/Group<>/Tabs/S/StructParents 0>> endobj 4 0 obj <> stream xœÅY[Oã8~Gâ?œ‡‘(Z¹§]Fn³] £•Ê샛º­wÓ$JX¤ùñ{ì´Ä-8±%¤ …4Çç|_Îås ÁçÏwWÓkp¿|Ëë+¸¼?>º¸õ`ì¸!Ü/“ª"9б>èe…ÛEÁnx6eÆèâ ³)ÍšËWg–ÍX‰Ø$—´ê0Â}ªk'í ‹|Êf’L¤3ÙY·wD0œÇØsQx¤kü—ÌYÆ¢‚Ãcº± t­ªÆ±5ôÎD@_2._`Ñà|¥MFPg4UYÔT6’¶zÒŒ0ÄŽmƒ¶³‰”eöl©/ˆv³çRa©¿ŒTlFe´ï¦—P­’P Oìäœb"ÅrÀþ‹½F4V©Þ²"Åv”‘çmSnj*rf—`T´à·Ý8—”ˆ rÉ×*Ù%±-ôΤ…ÞM å@Ϩ(A½~RãI] š¶%$Zô‚–¨tjèJÄ&еJ6ÂŒÛÉ9ÅD@/rùä^ñízŽ$úD²µ|;‡P™àÀÆÿoçðÖ¨ÿ}Þ7±¾ K 8–´¢7BõlËRg"Y*iµ{ùHó'V¹Ì¢ÛÖ8`s AW"6®•§JÜÄùÎâWlt”xMpkåi„27Šì€w&rw;°ÇAõöM¹(1TWôUäEÿ‹Ô=G8µè›Ô"IgÂ’VÌF(ŠmYêL~I~(›@×ÊÎ¥kh·QLÞ¾ù;?F²¢rOÃ Ž½âq4§+–o߆ˆÁód?•£»ħΠx%fðzበÖ¼bbðNQãáƒßAàÄ‘ê¬ÏÅ€j3¸{ª×þ¡•Á!êéÀ3ZC«üBTÛ5¿ Ñ=!Üú{†»/ÜÄWg6ßµaçúše ¿£“ÚˆVOtáôïKÕ€5iü?V¾,Û endstream endobj 5 0 obj <> endobj 6 0 obj <> endobj 7 0 obj <> endobj 8 0 obj <>/ExtGState<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/MediaBox[ 0 0 612 792] /Contents 9 0 R/Group<>/Tabs/S/StructParents 1>> endobj 9 0 obj <> stream xœXÛnÛ8}à˜‡}P€]EwÙ@Q õ¥M±u‚Äm±Pö–h‹¨$"m#ýúJJ$·¡#mıŹœÃᙡáêÞ½»ú2½™õþ=|˜MáÃjtqµ°alZ¬6£ ,üµÁ·LBobÚ¬r\ôñ!„­]X°­ÞÙVóöãèþ²LËAqd\þ «Ï£‹9ºVîŸ=V×_d¦0ýº‚ëå ®þYN?Ýß.o¿>Àâæï9¬î¯—‹ù½Æ›ã…¦ãw=âÇUüŽÌ¿L:°íì_Zù0­IÐŽ6´kÝ1éÚÕ†vlsâ ÝšT[hÚ·ßæ÷ßnæß5V¶ë ë“`=’ö´IÛN›ÁY¾Ö…åšáxîÖ$2¼¬*_®ÅS§%/ø^‘’ÄéŸ S Ÿ«;Ø *@HR$¤L`M× =Hˆ$B–”ä ¹&¨çz¦žäÚƒ¶@‡9˜xC1wL"#Æl%ÿ£lx™ FL²Œ&ø`S’œ>^"zü\QЋ)”4æÛ‚ýD*ˆúqL XSrß5ƒð$ãÈC-ò±oÁ0ä­Id°„’m˜)N–Q%)Ć–5j`¡^A L`2–3‰’×xù í‰c!a9Oh¦ƒ¸¦ž¤ÜúX = Cï˜Ô¡ÝbÏë"`4u‚ ää­ ‚ìv” qX1/™­9z©–ªDІHáÏj¡,9–Xùe¿å}–²‰–² 4ýarÜ1‰ŒŒ“„[¬ˆò¶NÖT+>jÊ…lÎ…»©*Ç<ßeL¤X5FªG¨1Zq˜T ;Éöi–µ?Œº5‰ŒõíHJuØ·r½ß f³¦Ñåüð|*TÍHŠƒÌžàÈdÊ÷HJ&i‰ô©…oìw'ã>е­?ÀÂÖ»&ulqöŒ¼áÅæQ²õ^62¹+¹Dn6Õ,/± n dj_´OP“²——Z® ¾’ïy®´³J€3Ï`®^L"%}•šºQ›ãœ„铯vÀ pPrûŒ ¶vܧqÑñ‹Ed¬”°©CpLYœª£°ËHŒ[Çj%¨º‡ªV(TkÜ -·=Ð’d ŸvX|ó†´©öaM;¶kÚG…Ö$2j(U]3”yÉó ­d–IÈ(9 žJõ™øªA(–=6Êjå3Jj'…±š‘º ÷A®’,o0òÖ‘7qŸ%“²îÏ0ŽJ…ÏóêhË•ÄYr¿M›zyy'á>ȵC’?ñMkؤÐ1‰ŒªÈwD¨Wõ–e{œp‰ìÔ:vq~Tâž0²ÅÂ:p퉺ÜusêN;ùã Íô¼í\àã|1ñúøp´]ÖÇvÝÓ‡¶]ù¸ñã^×G+ã>öƒž>´Òê£F‡½\h¥ÕGuöýWjîýhk ¯Q~7VdÜ,gT_2ÌÚ{NZÍU¬›¯¦ÿ¨tð endstream endobj 10 0 obj <> endobj 11 0 obj <>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/MediaBox[ 0 0 612 792] /Contents 12 0 R/Group<>/Tabs/S/StructParents 2>> endobj 12 0 obj <> stream xœµmoÔHÇß#ñúe‡ñóƒ„`ÂîåNèÈí›p/†Ä‘ÂLvf²‰mWy\»ºÿž%Y)ÊÂÔ¯»ªìîê¿ËÁ¼ü`^½zù~qqnÂׯÍÛó…y{ùôÉËß"Saj.¿<}™Ðþ™, RS¤UåæòÛÓ'¡ùÚ|ûýéó" ÂØ~úúêÌL}=ûŸ¹ü×Ó'ï,ºÁwÄ(‹‚8–Ì«³Og‹OÏTƒÂÎáÈ`±¹ÿ±]}½Ý›‹õ¾Þ®—ûÕf½¼3ov«u½Û™÷ËëÛæ'³Ølï7ÛöïMTUY Œ’fIrûÇ­oÂÀ¼{¿0FÄ/ñ; Y؆²­«ˆ$êžXkK£ ré¹j·‘žø…üRqXe6cÈ8²ax•¨áŠ£ ŠA¸zÎÕÙÏ7/ß½]œ_,ÌObÀµ“ªžD1䉿G[I±áýÓ\n—ëÝÝ >OÄ O2Õ“0 Šòo{ÒSlFŒïꕟv^¬Q‘µ+‘˜¤çþ(ãùŒïÏÕeBzãLB®%!¯Ò_Ai’pøÒ®¤¨¬š»I\I…êD™yþ·è)C'?©éHŠ&²Ú '˜yÒž„Ö¹£qœ+Õˆ¹1eè< Ê•{¦y“_uwX"{UÛ;OØÚqŽ2¡ßç|eIc_Ⲫ4±+¢Iâ"5ç—q—QXœI©Ô¤äEMîéΤôVÍe{~ññßŽðØ•¦¹Ô¥3|kˆ™yVÁ$ÊXsåÅøË“9Ñ&)ïÖ×››z $e4ew­ªYÉÊS²Ò[õ‹‰¸~¿|K‹Ä9ã–GGŸ÷m%¹Ý3ÍKhý‚ÇêR#qgE-¡s[Ч“e3+½”ç¶Ñ…ZÌ„ÜWë'µœ„Û}µüÏÓð$÷ÃÜ÷ºùïöI­Ñs[æ'³]ê°irlC:˜vû‘+hGÿÿÏÍn¯ÝYÑ.Gž¸Ã¨ò8>!Œ½ ®Å¢ ãáóÃyÊ©½.†Õ¨EeŒQË´õ ¡–¶ª©U2rK£VåÈ-µ°ä  v3Bµç¯¤FE[ !Tû™¤ÆÅ±[¾Ò¡rå€Pé0QéÜQI{‚¨Yg+álåœ-’½ *d!*a!ª½ÑlqIŽP«ÎVU¡ÙŠÃÍŸÄ!*Á!jT¶;%B“¶¦B¨\"#T{– • N„šÆÇn©Ô´8vK¥fñ±[*ÕÞ†h¶¸XõÕ5µˆàlÙC"š-{¢Ùj¤Z…p¶¸°¨]IP{‚ÙJ ½·’(E³•Dš­$NÑl%ñhÉP©ÉhÉP©ÉhÉP©éhÉP©©]2 ŒjoòÀ¨\À"ÔÜ. ÕàcZÄÇn©T{–:u\g«òun×ÿPNO?XЍ(ÿóbõ>¯t=ØÞ¤3½òT=°Çx6?1xÁ[àô¤™‰×O|D^E^9C­ªÖ™]eC@µžqáPü¸9æ'qQš÷ÿ97±~”'¯äŒ3¨*/geþH®õ`R0>^oëzm*»&f„¸¦Š´™]@*èÁë\׺ꕙ8/wª­f E–k(Ï­5c,ÎToà{8®j¶™Ý;NL’;U?÷H~¿ÞÀ瓪xfY#gÌv¤¤ì¯´3ø¬GÛ¸,î@\Vw .Ë;—õˆËÄe…ã’ăqIãÁ¸$ò`\Ry0.É<—tŒKBÆ%¥ã’ÔƒqIëÁ¸$ö`\R{0.É=—ôŒK‚Æ¥zäVxÞHóÁ¸$ú@\V} .Ë>—tŒKÂÆå2ârqIûÁ¸$þ`\R0.É?—÷XùYßö qéT…Í—T—4 ŒK"Æ%ãr­q¹Ì‚¸$A\V‚ .KA ·‚óÆbÆ%5ã’„qãñZâ„0n2^K<’Æ%Mã’(„qI¸$ a\Ò…0. C—”!Œ[F#ßT®=yûæ>¨Oý³´RŽ¿æXÓã pôõaá¹ØÄä€v¬ödièäîÕxo9|ÞçúD>K¢ ËfŸÜ„ÔÚ  õ6[wsƒzxçj@rý­Û4`_»CŽãN‹*àfö0tBZz«¾Ýîç+ÏANM4ÁyDJ®Ê$ä9ÖŸHÁŽ"w¦*g¶ôMg÷–+ZV<‡ùqÇýÜ]¹ÇtíËþÝyío¤ˆ G‘ˆé¯å±Þ ëÓòÝ•’7㮓ÇîJ9Ž;bªtœÚ’3‰æFLX‰ˆ¹•9’dUNí”…´¾+Ã@ë;>XœÞÀ÷Ϊ¦EDÄPUÏ4/;Æ0¶Z¬BiruöÛêëö6I`ïþå~Iï¹|Ùl¿µ¯ºìŒýѼÙýX_ûÃâ¿—æfó}}·YÞ¸+v9-àÚIÔ’.ͪ¦BEb¤L©ýNULŽõ&6FÖõÍÃþóæa}cöm€êíÎ|:û²Ý|3ûÛÚÜnv{³ß´?X|zöþÉüµ¼[Ý,÷õÎÔËë[óe»üV71UFNíYÃÖØrÂHôÔÊ*µÅY5µ…;<ïM®Î/î·›{»'ìê?êõumÖß>Ûÿ_ÚXÜ4WÌj½¯¿nWûöºØ›¯õºÞ¶/׿ Ëj}³º¶¦yT͉ENñZ-\R[üÌõº7¹:û~[[Ç·Í¿ÞìÛTRâ¾/­W××õý¾¾ Ì¥ýó6Ûúº^ýUߘÏ?º¼_ÝݙϪÃQÖ:,æ‰8¬Ö©-`Ê©]ÔápobÓÌ/·YÜuÚÀª½úÛ"kE¯‘Þ™¦|ØÙKe½ïbÑÜÚ[£¬FÈÙ#aP‹‰ÔV%%´½&úöj·èbj¯r„R˜x6ªv_›Á½MñC|¨n_ë |!Q·ïÄÖ3C"LÄ!À=U9 ò¨º­6‚B6oK&}yä íÀÆ_3òc99OéYÉ`wDÔ"!±…ÆÜˆô&Ó%¶šMž¶ɦZ$¶’HçmÞÂä´¹‹!‘¹«…Gb‹—tÞF$M€ÅDZL„íPÓž¤<] ÞQ„ûÉzü`w>Ôr(±ß“Éӿėç>(ì>ž‰=$ôýËCèŽçꎟZX%iäŸZA´ábfàùùß½ðØEAL‰‚Zm%IÄ“ÇYï—Ç5†:œ”™N3†"™×5”ïVÇÇâLõ¾$©µ`Ò„ô´$¹SÅñx¨ÃIø|RkÓ¦^§¶ñ_ä“Àc>õ>ŸôâÒ¨Õã=Íø±ú©?±¡G‰rnÈ/òP+Òæ1ñ´“®½]ZA­iÂÀÛš6ø¬§5 â²: q¹5 ârkÄåÂârqYóøtRƸ´'b\jMøԚ†q©5 ãRkÆ¥Ö4ŒK­i—ZÓ0.Õj—Ê4ŒK­i—ZÓ0.µ¦a\jMøԚr+ë©!0.µ¦aó¥Ö4ŒK­i—ZÓ0.µ¦a\*’1.ÕÇ—ZÓ .?Ï„¸ü(äVpÞX ƸԚ†q©5 ãÆãµÄÓš†q“ñZâiMøԚ†q©5 ãRkÆ¥Ö4ŒK­i—ZÓ0.µ¦a\jMøԚ¦rÇGU‚Ëv¹{¬sŽÄCm[ÂÀç“*ÍÆEqšOžíY`}¿æî«éy Ò/êøˆ¼²÷¾è©âpœ—AŠ‘3¢×cÑ—Ù'1ä´«ª¬qV=Šc=}µ‘óASåÏØ~Ï=š’çTØ”€øbÐÏ»5¦§ì¼'¸8ćâ Ñ1”ïþÃÇêR*ãè̦*ãÆÍõñB‰‡Ô4aàóIU=›C:©:…&a… M½_h’Ÿõ M·šn'4!ÜNhB¸Ð„p;¡ ávBÄå%â²ÐqYh‚¸,4A\š . M—…&ˆËBÄe¡ â²ÐqYh‚¸,4A\š . M—…&ˆËBÆ­ð¼±ÐqYhB¸Ð„p;¡ âòv qy§†¸,4A\š . M—…&ˆËµÄå2âò+?ëÛ^!. MÐ|Yh‚¸,4A\®‰ .—C—…&ˆËBÄe¡ ávBÂí„&Œ[Áyë„&ˆËBÄe¡ âÆãµÄ'4AÜd¼–ø„&ˆËBÄe¡ â²ÐqYh‚¸,4A\š . M—…&ˆËB“ÆÔ&f‹˜> §T*ÂÓÛĵâô˜s^áâM°ZÒ&ßëqýº`ÎçÈ w@Õ…Ø®‰¯CÁС¼ƒÅèíÄTŸr½!!ÌŸœçDa½‘£ ½‘#lÛKáãèÈå#€4.º®R<©I†ç×ÍÏ©Û#áv¥ÇkUyŽª¼{f®…þçÀÈy:ß >ÿ\þkAêH\…ä^Ud|}u힨„Ìñj<šøj›æñݹVù¨lÏãssÝ[ú¥þá£Ã_!oŠ’kbFˆkª\e0ûÂÞhä˜g-‘–øR"­ž»Çá•dæ8¼ˆ`@ëˆÅUÕìš>?þ#ø­S1r½¨b}”UA5ù‹:VЧ mqø`]lz_\TÙ;²ßA†*37÷H9õë+µX…ÒäðÒi:xéôN{ãôáÞõ¾)üäŒËF-Ÿ•²„þí¨\­#»‹S¿]ÑžÞäê,ЧJÄù_Êp©-*ìÁDÎR Ùÿ³¿¸` endstream endobj 13 0 obj <>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/MediaBox[ 0 0 612 792] /Contents 14 0 R/Group<>/Tabs/S/StructParents 3>> endobj 14 0 obj <> stream xœ­[KoÛH¾ðèÃhLÂð-$²½ãݱãÍ8؃¼JjYÄH¤–¤â5à¿ÕMQ,š,vS°ŽÜÕ]_½¾ªÅ>ݳϟ?ÝNo.™õå ûv9eßÎÏ>]Û,4-=¬ÎÏlfÁ?›ù–鱉™vÀ¶çg{?þ~~Æ>Z¦åÀêÅÌ`ìâ?ìáçgW°Ø«,,<3éã›f»—ñ-ìÎV(åd^SŠ\@¸4ìPö "o¬}ÈÌè |ö+‰YÌRþŒsÝ$vt‚Àôü–"€&$ Ð7ƒ@§‚†ä“ ÞBÛ&HDCûˆ<:˜˜þ¸âDfF`:¦ÃØôûííÏ»›éׇ›ïwìúïÿW|¬}Y¤þ~Ø(3¼Ép©7®T!‘™ñ•­’ guÅb‚æŸd‚4ûZ¼¤‹už¥Ù¾`qYõË„/Ùv·IŠuÎü‹uœ>‘Å*pE2buÌGrwô?ºÕ@ÏVU uVV©lS”9/Ÿ9…ñC™ƒx¯ôÈÛuÁ*;pZ–/ï¥ìy,$W+ŒKÇ@$uиãìs”˜¿â<~¯zòev‰sáå0–`¶² ¸»€êÆÀ®âýcHm‹2)÷%'Ëô!2}up“ô8ÎXÜG oIZÛí>MUw{laõĬØ/Ð ¯ö›voVð÷Ê`#Àìl9LÞH[Ô$y¶kÚ#É©tØ—Âu2Z?ˆìOV¢ݧG‡‹K:?TŽ ÿ<ÉuL²lÔ°®: iF¶¼Ñ ½Xìe›–T|tµèí"{í'7¥ì¾½‚&%{…²Ë@ˆ°¦XäÉ\twŠ Gë@'¹Û‡‘ËG¼Hdf,y'›êBFø<ƒ1c¿Ûdñ²vXfÏ©üÕ•¸Vd~K#hdOá‡A£çðdsàC“k°ˆ†þIì>tcÏnD‰i3v—å[¾»Œ +ÛDS‚¬tÿH –:”ŽW"/È(cl÷0 ™ ªGögwÓºWƒÇuýB6K>4\¡£WÙuøÐ¾„ãº$23Úõc•ís`‘§}ÉW¬³çž|œî+~muc?›ü¦¬¯ŽñÈn‡¶d2w-13.5„±+è# ese!x¨•KÚÄsc Ìw`¦âPt囲õdó<á+죶:¨É^‡žÄ÷ÇÁnDD•¼°“}DÝhT6Ÿs.Â_˜¨ºbIºLZË—hñ‘qylÉI…‚…16#‘­‡-ÌX#5"`¤#VÑ]€Ï¡Ñ̳çšm«HÉ9¨ÊЏ(²E"qÊ;1.JÈÉE¬ÌÁôÕN¶>ô1Þ¸V‰T½fÅÃ¥/TD\l“¢ïACZv —khÃtŠ›=Ç3ÃIKSÈtÛýËQÿá=H~÷ Qpí³ÑWÇÁ#-É™‡ÎëwP(‚‰>ô[úè‡l:ÎËDÖøíyþÒüU®VàCjéà#›XÏL«¯™Sâk¾ÏTÌzrO|ÌðPR9Þ^ßýÞ+¾;ª«â›R‡ uOROçÊu=ly@/xíp¨m¿?O  ‡Ê1ª°ÿÁw› |Ó̾Ê+f`­d@Šé$Ùâ{0*D}Ý«a#¨Qìñbe±G*éû~ ï• ÚêÔÉЫ(öýª«‹}G©aÿ“Ó‹cÐiþo»Å~šm·rjóñ%*öŒ]W£m3àƒ]ü¿d/Ã+«ƒš]<˜Â¾ÑE‰ºÔ¡tŒàíUQßá½¢¾£º*ê)uÐ9GE-(²¯räó`v<-TÁn‚\É'þÉ @’ˆªßz½I‘¨J mÈìÀB69¶"›2l¢'Zpåä¤Á¯Ôà¼XÉ!H%=éÇð^Ù¤­NM-° éW]Í!¥†ýOþ.èÜëú"‹ $€2—Óæ8Uk­â"AkßCü(¿´òúR\kþ7ØEÉ®åG…­¬¦ãP »fQ\h=ø[ ¬kG"þ°¿ÕÉk8;®2]HÃ¥‘×n˜~ßX:eˆ¨/J¾ÆGhñuëE…!ô§ ÓU]QaHuÚ9GÁ×Ä9¯tur<@4Ïêrù©Ãôð¤+ÎÛ7£¶ÓðDõHYÔäm”ë:¦sÊüŒ5n£ð1zÝ-Þ^õýÞ+ê;ª«¢žRGQ›;稺ۖY‚ׇ yå:Òžx¥‡ÓIò2Iìgòé#Ô ¼XIH%= èÇð^É ­N -° èW]M¥†ýO_&A&F§|䆵ž"!N¢í_‡C#'ž"¡B!|{Èá—ÂÿÚ@kÿZ7íƒê hò¿O^ó5÷ G~' D53× ‘™qèÄ·zÿÄ_Ÿ×VÓ?epQýÖù:_I$Çsæü£VÃ{CžÓâDëCŸìËhð5÷ {;~Zôç“’#¾I¬·I¡аiíA’”ð³æd¡s g\­@èd±üzγ„ã_ÃÉΚǧæÄ\”9·ŒÙ.ýå÷ê«/X_"1þŠòSƒ endstream endobj 15 0 obj <>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/MediaBox[ 0 0 612 792] /Contents 16 0 R/Group<>/Tabs/S/StructParents 4>> endobj 16 0 obj <> stream xœµ[[oÛÊ~àÿ°}Pp†\Þ €#'­Û&uõIé-Qq$Ò%éòã;Ë‹9+rv—:® ޳³;ßܾ!ÍÞß°Þ]^_1ûãGöéjÉ>­.Þ¼ÿâ°È²=¶Ú]¼q˜ _ómËc¡[NÀVÇ‹76»ßþrñ†½³-›ÃêÍzÁ¦>oÿÃV»xó¶Û÷;:¾cqŽ÷\/~,–?Þ²eñð\f÷ûš]çuZæIyr`Ÿ«,O«Š}M6{ñ¬,вùæÄ1q’çy–Ê'ùµØw­@Z ¿n°!öùë’1d?ÙïÄdvcÊæPåœÜÂuú-F¶&@„žåqIr½¸YNzçôó×¢ª‰]yd[‘/éc`—ÄÅ+擸‚Ø ¸,Ø*ð›ÆÓ'½{÷Ž‹"+’åàŒÖ>×ß®þôåúŸÙÍ¿WìÇâfu»ËÙ®f»coDJû÷å}i-\ðú3àºà=Ù^éôÃÏôÍ ¸^ü"ã3†Ô?Y¬uRIm†Ø=UåÄëfÒ‡vcdcuz§K`I—ƒ¢>¥úGöKãù‘RJ÷û¤ûm× £sÜ? ÷3ök¨,·i²e7IYgM½þ×cZ>£ÂÓ¬ÖÀCjÀ (xAì x¨ˆõš=ñ1­ºš—¶×D7a~8;‘0­tô¬D£Ô$©9™ž ñ9”³ºº);KYÒZeP…dPE¾çÕ (åL› ·éÃáˆf tS”ì²zÎ7,©k¸ñ˜d VÌ k"`œ pÔs‚´XÇ X%#N 0¼'˜«Ó§‚VÍ „êZN+¥tLº?-úªqÿ ˆã{YI¾e—›ßóâénïÓcš×ìK™SÌ Œ}ÉîË”9ÞxHîáÇ€º¾s[Üõ±²&×w›DíGg¢M¨cFx{]ÐOcx­ ©® zJMý£«ÿ’4I‚תC…lõh½sîÌHptibŸE Ìþž €T5_úœ¤Hü’"ÜѤR×$EÈþ4€÷LÜ6Æ­á¼XË H%3^˜ÆðZ)b¬NŸ"X /L«®ç…‘Rjÿ“}|à:–;á~Êù6–P›#€ÌG«i[ô…–jf&»ö¡7 ð#NÓ«â)?Ðß\%u"QX—¤Týï‹Û©E43 ½Ÿ €ºNÜ„Ý$ÐßúÚRÒ@¶<c ësÈ›4yÚKù²5åKuÚ8zÉIGÀùÜè}‘UKOíÃfÌŽ¶×U­IÝ_«hê­«Y„2šÀ?=EGê“§ü¢‹÷š"©:f-ä`$p\Ë™š(Âeiãå~×ÁCj™à£'#à•¹ø‘Ÿ¦˜âåZGê˜ñø´þ¯•Æêô9!Õðø´ê ¼?RKí}r„áƒÖöT‡O{‹p9Z®%si­†Íöí"p.Ê.¥#ä Þ²bG0¿È_u[PÃýFvéÈßÈ.ûvy¡ÿH´ÔQ`y¡|œQ2F¯Ž]r:僓^Õu!HРQÇÇѹ´½¦z^©zU×T/RM@ÎÑpºìM@ãµêP!'Y~Xñ93$xf£®‡3HNN­|¸‘Ÿ‡pÔ·äÒb•c•Œ¨œÀðZÉ`¬NŸ X5•ªk[ò±Rjÿ“£(ßF?Çÿƒ ŽðoEyLbdûpH›§wË"¯Ëâ€ïdŇY-Õ7ö€”5AM¢|/žF­¸¾ "ª…qðb=S m̘o¯KŽi¨¯•#ÕuÉA©£aŠÑ9:¦< I&ɵʈ"G[¾g[á9iô"÷ÿá‰A-“„!g¾ëX¾¾AЀ&ðb-M •ÌhbÃke‚±:}&H`541­ºž&FJ©ýON3|ÎÏô?4z‹8‰¶ƒÜËX“ð®´}Ñ1Ûûo¯v 9ˆñ×ò\£=èvª¬7o¶‰DÖ‹ŽÊ‹±ïéÓ|“²]Q2ñ*ÂUñDÙØŽšÚŽwjfãÔz—Ÿ¬7 j²ôÀÇ®cd9²Cð Ëèö0µ1y+’¼»{ah9ñ¼³‘õ"°¸ø¢)KpV﹊wB_¼†‹O5QŸ¼zzA4è¢Þƒ¼Èy~,.†³L0ˆ¬«}V±*Ý47Õ‡²ø™mÓŠmÓ:É•¸—Öû”mŠãñ1Ï6íÛÃUo&ö´Ï6{ˆóáx ÉËk,ÞƪšØ¼jx¾=³=`tàbÇ’œ¥÷áŸi JV Ä èu™äÕ1«*Xɽ‚_5Ë{ðOÙáÀîHäp_÷BIaää-ăÛL<ÅB äƒH<ݲŠÕ6ÎÞ²,¯ V? ü›Þe–Vf[1¢¤jZ–6Fo©À혉7ÑóûÎV`¸OE½× a31IÕpþ\# "ëEõóCÚáÙ§YÉ’ª*6Y"ŒG¥CcÔ´Ú”Ù]cVƒ”@ªš`&9ÐæñY/ÚëjAE½ôßý->ÐDs’y=`ïȈ½]šÇ€Ù„DLô'ùÏy6Y/®.W—ìóíí?o¿Sw¸èÎðA{$kŠ´oD;I].p ?y‘ îÊKS3Ê“šÚæQW©Ú4êëp-~ÕÔ¦¬®Òî-ÉÏBD]]°Â&Ö# × šýf!DP ~Ú§-´å>Ýüξ?¡6‡¦Æ$÷I–Wu³ Á[¦›4û)ÐPjò¢fǤc)jL‡)l‚œ¤]øÛ›WW‘Èz¡ÅY‰wXðêi€lÓäPÛÖ{v÷Lv|ñrÖÓ0ɶ.|wçU$²^”iõPä[QUûdËvͰA’°Û´l–§÷@(?S–Èoy¶!NòˆgE¡¤© d’;]Ï™ yY/àY›®Ž»‚,g!4ƲX áýbˆÖlDù®,ŽìnñöÄIGÈìfÙ…ÅC†Êe¥Àm3±ɶ.ôa|fÍD€mÛnñ.Î%yÖãÒQ&:“<ërwP@½ɳ¢i·§ª> \<ÈÆRšçÞíÈ„8F1iÇÈHNš€|š~ÙŒœ|ø\Üm¥ÝÓ¯ ÕÆ$1X‘¶Wûƒ¾{À%&žº*ý1H©fóÝHŸ¡™Íw^ÀÛSFèfV€³'‘^ؘv¤²ÎÕ”¤Ï1íŸCÙ½ÉòšøÀkÕšFÞôÄ o~| )<’¿¥ªkW©ðaê@qx(ZB»UÏßzB¼„kÃËS³nÒÆmýÛÛÝË“cÅÔæ$/½.ÎÑä XiN$ÕOy¾+H€Ž¨nXL¨¤«”c4‰Jžó‡Õ\.Q%Ó›ûÍ"Beú‘A—xc¥ÔáBv ZŽ3Âeê²L¼8jc£I<ÛmoZ±u‰ñ—L›ªgm½åFЍ-GvZ–pêª¶Ü eÀkø #^“¶×¥Ë4€?š.#•uéB©¡æµñ9^“-¯ ¼VdcÆ¡Ã;#>”Ñ=”8F{Er&OâtNÄ»iï¡æ {àíÕþ »FߣÞÂ'{*ÍY0¯§B"/OàÂ~v ?Òiÿ*øÇ[vgu;Ž{†&Rý8ëdRÐÈæK<¸óŒ.û>Ù|qhà ÷ M‡kt© èK¥í›îAÞ¤œ8±g²I¯NÔÜ"Mö ‰Æ #k^Ì ë…ãµ ¬¦g,aüTžøPó pIb4D´þ”xª endstream endobj 17 0 obj <>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/MediaBox[ 0 0 612 792] /Contents 18 0 R/Group<>/Tabs/S/StructParents 5>> endobj 18 0 obj <> stream xœ­[moÛ8þ^ ÿXPw/Q%êÕ@Q Mœ6w—n‘ú>¹÷A±åXX[òJrs9ôÇßP²¬aä!)§^ (ùÌû34—½ûÊÞ¿w{ysÅìØÇ«KöqúúÕ»k‡E–í±éòõ+‡ÙðŸÃ|ÛòXè-'`ÓÍëW6{?>½~ÅÎmËæ°z>1öö?lúׯ&°Ø«l,<}]~Ë.óíS‘>¬*v“UI‘ÅUšgñš}Ü•i–”%»ç+ñ/XYló¢þ;sÆcßb݇8Òs|‹‡øXøu  °Éí%cÈ2Ä3ÝíÚ&5|åœÜÂuÚ-d£‘Vó¬H’jø;µ|lœ<æüüœ‹¼z’ƒ3:û~Œì*®bv]Ä›äðk ÷¹eûònôÙ<,Ï $‹?Û^é—tw¬1ìŽNj6úI- =Ëãž¼Xk„Gmƒ(²"N*p®ûP–õÂÚ²Æ0ZOKJ’k+ò)ÈØO»{ ”>÷HŸ;üŸwRÂçŒýdw !àØ®Å¹tP˜²ŒcC±å²igå&­š ¼KþÚ%eÕfb…ýNÙ.ò­À?Ei;Ÿ´hFƒm×I Û½§f V“ÏP›­M¼½._Ž+ðÒ|éAÖå ƒ,‘NíÆÞ9”ÝÛš*Y^“_x­2<*<‚±wBx ©}j‘™5ŽêšŠÏÑeVа}f•¥àùòY›«¡¨mÖ¢4\HN¤i0Øp”¾I‹u}ã1êC„/Ì+sû¼’•T÷!²¶õA)}‘>ƒS|ޤŒ¨ qŒ– "9‰ cðnZ*h®dë¼½ÒcÒAhùFlÒ±É=ü¨Ýã™KIŸîÔ ÎF¿³Àâ–gùgì·;ª®¹\0I.©h¢ðƒ ·ˆ-]îÕžB:˜ Kä´ÀÔåq#ƒ’ãR—wŒ«Ñ3&™®Ó‡]‘À(Ë›LŠ"/Ø7a™lž0Aÿ=…!ô&K«4®’»bÕ*aŸó²¢ÌäFuˆ"d&f"G¦×ÈJ$£ 8ßoal¤NÂ<Éǵœc _qt' xrw{óåbzóå›ÜÝýq÷Šw/æÆç™§™Šíu(Ô{MÛû–}¬€ÓÊ#P>)6©¸ðÈX"³dóüGR°8{j±Hªd.Ò7I!4 V¦‹D§"0Ôˆ;w ¬‰åȶåGÁ`­;‘Ùèq•ÎW,†¬Ìò eei1lñ;u“vSI¹[W,ÍË´{5ÌNüj™®)^éAÑóBI7#‘Íć~4>ÖFêDf£Ú¯Ë¤€º5äó|³Ùeé¼Q§Ü—¯’5¶Ü+¾,ò ‹¥h¢ˆÝ'`Qæ°æœl>´Ñ¡šw"³xá´TbHˆûzYG~)…þRd „R¹Ê³Öõ˦èß'ëüÑ¢Ôö Ù…ZµÉfçû‚] ’Í·† ¾˜ÀRF„8FK‘\K/ó¬*ò5ƒëÝj¡´›–š+¹'„ÒöjÙ‡wG+dpÕN0ºéÀ›k²ãà_8õðj|„ú–£wŠæ’C2¹.,º¥ê¨ É–|Í÷‡¸NDîúŠÁåFbR¼HçªR'25¬úª­Ü/Q !1Q‰äw>Eï'V'o'Õ^òŠÏÅ}^Tìbþg–?®“ÅC²I² +ÅöswcçÔüòºó €&šÒ,˜ì švRú«#i±¶M <-IKÏçùf»NË„kµ*òÝêŽÙr^$IÆÒ ¥÷»e½ž|„¸âFlb>’{pà/á°'Hd6Ô- f_{&K Šñ¶:¼cÚ›é1]¯Ù}ÂétQ_@U9«sÈòÐfË4Y/Ê3 ü [‚‹ê@UóGʼÍ#&5è¾yIÄL 5o'2M6»u\öå:„²WU‘Þï*°Àüx^¾ù/Éf¡žCŒ`Âá†ujbäæ ›!ôÛy3Lž±Œ|OèÚãgÇið‰ŠKŸ¹HËí:~‚w›¤HçÐÄk/‘a¹xî¨I¨ µÇIVÃág0¬"ˆóŒí²ƒý𮣷éC<@×á,âbŸEJ@AIÿ×¾ë,ÉwŠÍ³5ŒÖDm’

ƒlF“±‰ê$Oâ@¸†ªÞ‰ÌFrÜ×z‚ó‡LD¹Ð¨)‚re¬=^wß5¦‡°—§I„ÖDm’Úq(Vî@zÕ‰<¾Nгö9ê:†„‡ NëŠ'®‚# ;ÄU³&Hç±0Ñ\¿Ú7JM”#¨:4¥´ýÁ:w"Îqš•ûÌe®q €x ªùòâŒqý´o,Ï«(ß0*òÅnóŽƒ5Ñšd Î8#˜ HêD¡ø¿ Mö ©œF–ÑøtÅ™ùè5ú)un¾\ýíúæ_“ú«¨²*’xØã“Që‰Aa%Ü÷ÝѶn endstream endobj 19 0 obj <>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/MediaBox[ 0 0 612 792] /Contents 20 0 R/Group<>/Tabs/S/StructParents 6>> endobj 20 0 obj <> stream xœµ[ÛnãF}7àè·Ñ`/ݼAlm¼ˆ=ÆXAÈû@Km™ˆL*$½3YÌÇoßh6-Y¤7`t1«ObWõ©V‹|¸!?üðáj~yNÜ$ÏçäãòôäÃÂ#±ãR²|8=ñˆ+þy„¹%M/$˧Ó—låÿ<=!ß»Žë‹«×«iïÿM–ÿ:=¹ÊA›q<7p|ßɶ‚Œ˜w`t7›ß½'óbÿW™mkr™×¼ÌÓ:+òtG>>WYΫŠ\¥ëGùJ\Yî‹RýxI‹²À #K|¬¸YäâjNˆ?ÏŠß«¹*”šhß>8Dà5Ctc 0ÝŽ Âû„ö='ñÇA·&«Yèøb²ø|vuAÎ/nçŸ/o–—Ÿ®o¡K,Â} ºïù­/½C0p1_£x\Z“Õì2(Ê'=í²Šð¯ëÇ4ßò ¹çõÎsR?rr3'i¾Q/*ªšÈÉ»Uoç¿,IZ×b?ñ¼&O¼~,6ÐÌ EjEÁ !æaBÇ2·LV3M"ð#W¸]Ué–W!ËG…НU@6¼Z—Ù½ÈNɵ¹J¼ *êRÔ…Ik’–œð|]ldXÿ’cAöqÇ¡ŒPÌœ0¡Öd5ûi±¼Q7¾âòî* ë"¯Ëb·ã¥Š'9ÿZ¿Dìnös±ÍÖ¢Â}æ%¯E¥{xà%Y¨YVݽËZìШã2‚z RÂÑÔ[“Õ¬½óÅÉ»²îºßó´$™NŽ{M°hR*ÜÍä°Äéßû[H&ÚУ >°eÚd`kÞã´çÆjŽZX“ÚóUÊwn ƒh(›¹`z÷wXL_;:”®‰ª ½`p¾š£h8Ó)Áõ'‡¸É0&˜FzÍǃ™¼›Ï ñä–æ¸$‚ƒ6È|÷µ%&qÁýÆb9óàÄíùŠDgc;€îAæî,ªJ?Ç^¬z ¢ºwé4%g=-ˆ •å'†0¸IÃhòFÂí°ø²_Õ^†°å'†0¸£Ä¨ëDoâÛØ ºs½íûMm«I6·uZ?WŠ×•ÞmhšÞänæ%•ð‹Ÿ¾`ÍD7ÎØ[·(ÆIéÛ-ÿó™çkNÌ`·+½`91О˜Z|Üë7Ï¢^?£ ¶îÌ÷ßÕv€¿5m,?1„Á>ž QKíÆôq˸¼Ð²í¯æMl,,œ¢9îNÑàÁŒ¢™f Ì(š^°AEƒ†kÍFÑ 1E3%ž¢ÁƒE3-ž¢ÁÙôƒà 9ã2yŒá§?ká})qOଅ·éCZsDbaá²ö¸s¸¬Åƒ™¬f²f²v X³1‡kÖÖ^°~ÈÄU;xÈ„½öŸ²ÂÝx Xè}”I`¢! ‹‹|•°öŒïO:p“Š ÞѤƒ¶ìä¬é¶9ÚŸtÕEœ›¯:L7á©öã·w®y˜OÍUѼ§ÓбÙ`j¸éIã ’k;Àð6/ð×®–‹˜Xàþ"ÇKÞµ@q½]HïÉ÷eÑ¿Åi#k pqs@¯t!h‰f ÖQþÌ«}‘WÜÄ\{}S5"öŽ÷Çlái¿1öíÖ<«ùºæòmþ\VE)Ø•<íÎ3ˆ —È¢Ù¾XWÉ®×E¾ÉªýP-☂{”%r¼7D°ÀŠàÕùRžÈÔëç'^fë!®–‹®àven×þ¾Æ²Eõ56J!ΡÒ0­¦™Â€Ó i˜QHx0£úÁ0 i¤VH“ø5¹3 i˜VH#ÀšÌ³&}Ò{R”ºNÂPc€;04ðš1°ß¡Z&«Ù"Û>—\dšsì°oOË™CšÐÆæ†[î` ¸ÑB}‘ú(€mýc<îèŒe²š-Õ‰V“ôULTL²ŠB ×?l°ýÅUx ¦ëHâ–Éjfè›E®å»Ìs¿S8»/J“=Õwòô<ß×’úËQiA½ºáêзí.æ7 "„´gÇTaïÖd53ûj·[Rlv÷2¾ÛTæÐw¥/’gÚ%»4%w³þZßÁ0_ݽSh#¦F­NÕ‹h×bAqÒ?°éaâªç@Èð±qjMV31³S°žêÐ?šP´^Žë8’/ÙnGî9¹ß¥ùào}|ª¦†å)†2(wƒP²GT\ ÊÈ@èQ:n5²M0þƒ«i þÆU{ˤ93î“Ãlî?.®¹Øèà‚P¯õ© pñ ßñ=ÔàâH•‰\^O,WÇšêÃ1àJ-J~‚š– ¬zRœ Ç+‚/JKŒk L1_ä*r 0Å|‘¦j~00U|‘sѸT±LV3/$ÿ—Gÿö¿í%Rÿö³ endstream endobj 21 0 obj <>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/MediaBox[ 0 0 612 792] /Contents 22 0 R/Group<>/Tabs/S/StructParents 7>> endobj 22 0 obj <> stream xœµ\moã6þ¾Àþ~8 ^ÜU«ê­( dMoMºhrèœû 8rbœc¥’rÛöÇ)RÑ8ÖC¹vØõjøÌ3âÏP¤ÙûÏì‡Þ_Ì?1ÿÇÙ‡³9ûpýöÍûó€ežÏÙõê훀ù⿀žÇYÊs/HØõãÛ7>»—~zû†}ç{~(®^.fŒ½û»þÇÛ7E;²­Þ<ñ¡ñbv3›ß¼cóêék½¾hÙ§m[ÖÛ¢]WÛbÃ><7ëmÙ4ì¢X>ÈOâÊú©ª»gAžÇ^$b/L!¬øºs°sÆ@ ˆWÜý.&ûÆ&B´‰(è›  ˜(ïÿŠ]̽ CøN½Ë<óxÈ ?òÂpX%^º€ñÀK¦‚¥ñkG-`™lzXD^;€…|lÃá’À.Iìpˆmä‹+]À"_tÇÉÜ".ÆŸÔ.½,5Âa–iòÚ’0JDhЇ—‡n)>˜,fߨ'azÂäûy¬Þç¡zõŸ¥ç»ßpŸûâ“%8À5EŽR BgŠƒ‰¤¨^¶w†ê{2lÕ<ôýw̧ L\ŒN ›iæ¸Á¤søãÕ¼ ÐÇßT ~›«ÿ¿úp*߯ç§:„úv3óÅDK œ#L0’IÎ]I“ŽäÍìúêöËåÏÿî<ßïWë{©zŒ& #LQ’Yì%‰ÉÁÄ)œ)×3”¢])‚VAHZ…¥µÊ$0­UÀ”V™¦´Š˜Ò*“À´V¡ƒi­b³i85ÂOâ¦Çz:˜Ö*¹i­â§ƒÃÌ’Ðãc8ÆüÎÑüNR/«E,UUŸ€ƒ¹ÁçÀϺ. °,}ZLµYˆ9gI .úŒXt7 ,㯵ekÞ F0<¢°ë¢d¸0J»Œ³À™óˆ»aF~nÇD³H ÓN`:í¦Å3ʹ6à—'68l"ô_[R–!|4qãÌœ¸hêöÙ84 êy¤ªˆ¦Qï™è«òÓUY²Ëª-…){]€œÊ *à'…0ºð’ð\æõ„‡pé?¹*/MøI!Œ.%Ü·¶h`¿ïÈh€F¿Í«m[W›oçuñXv»-Ú禋ÉEÙ4Å}Ù‡H—7³ ¸”íÖ`™|ÜZp'¢pé/öá;ÉèÛUùûs¹]–Lqxß¼¤°Ekï$ cûbÔL¼¤°E æD¨Ô`¬–41³¼ØšÇç>2‹¦QÆ£i:˜Ö(“À´F¡ƒib³j2\¯Q&‰ògβЧå Ù½^ÎL }/gè`ZÎL‹E/gèp:Q18LËø±—Œá˜_,÷Op<Çû"d0'!‹–àãÎÑœ¦|˜Np:˜Nð)`a¨º4, ³®7‚™!s¿[ Cæñké)+ÜÍ\À¢H­¡LÕ€LX:Xv {¼9éÐÅËXÉ[Ù£ŠЀ* ‚3ý B×AWPüëÄ×/ý­¾*jEºH`ÐUÌ8Kä:4`_¶EþÕ¸HኮèÄiâ准 ŽëÕ¹ôþŸÛ§]²ìD<V *óç>¸ù{N¡Ô@ˆD@ÈùVÝ_Ëæ©Ú6½¤W?×UK¸M{$Í{Ðú=©Øm]²-—myǾ͟릪»Óº,öºäeµ½[7O6®ÀE W´tãLÞ—¸ ®g׬ÚÚÒïòù±¬×KWà"…+ZµÇ¢ü7pŪ‰¾c¬¦KXIË Î‘´Œ˜Ò2ÓÀt ÓÁ”–™¦µ Lk3EË8@*-3‰ŸÖ2t0­e¦)-ã¦3öysÒ¡«?1÷½”Ôº¤GÇN:Éb¦VH¿g×%{Ô‹b«u¹¹cë†e>[>u!Ææºa7³Û¯mÙܼc›j{ÏŠí[VÛ¶Xo,TBðtÇGÊ …®¨Äa8N–<  ,f­ ¼ª6›êËZÐùøa~öiÎÚòVDã×ÓË+?í¯7%»®‹m³*k6¯Ÿ6e[š Yè&…/Z`Æ¢Rå‡,˜3x‹ÅÍ}*îîÄ”ûeÝ>°ÛM±ý¯¼Ãr3ÎÉÍ;ó"t‹Â×ò¢½÷Ìm ™‹& œ˜,fçëûçZ¤@è1vYÕŦ¿Ër³¦Z;^Éï[Ïü´:B‰ ª„¹Èš÷Ìû¸P™ÆÓÔ r·¨ &ª¯tÑ0¯ÕïØŒNt³¦Ü¶lUWLæÛß«¦emÕ}þ<—ŸÖBÒ- 15ÏË¥è«ç ¶|GrùR£ìuCåO2ç &‹Ùr`[­:F+9X´ý`Q=•jË/Þqº}Ð !TÃñ8—3¥ã Sý¾ rP€ Åt.ãb:ÌÝæ2`²˜%^èqOŒÚ§·Uݪ.ˆMMAâËéBR|G§&.æ¸GÌm Ã=óF66Üø&*i!uVˆí¹ƒ<̳ö¡hÅäÍʺ•ÖCѰj¹|®kqÙzûÒÑÇÁ\îþ€žR†Î\L%®”1‡ï%[§K$G³ð†À–§Œ9—u⩌׀-Æ;êÛ’ò6”wbN‘7e¥nÇ—õfÊ :¾q.óÈìÙ~lñ™QÌ®©ãÌ8˜,fÅÿÊ®?4Ãø·î‹»õJÄ\쪵_Ÿzz‚{óT.×BCÞ±Û¯Ýåú¹«|‰QO")œ Çê艹ؑ:0YÌTä’T…}v\@•¬oðmѬ—:Dݤ÷P}ÙJƒ^]Dæ9 úKÙÜŒÎûRqÇns0YÌD~’ä‚ ›´tI(£³p$¦óxsèĉ”»MZЄ°ÛA0—–ú9J«*f(Æc¾cØ]Ž]­6†:ø¥6†N ‚^4uS+§“ÀôÆP:˜Þj³m u€S¥Â$nzc(LWk¹éGºpjc¨ ]QI^[R†TÃFBs7 LŽzŠºFáˆjåHüÜ„09ê~è…#ª©#1ì¸rLŽ|â:Ga‰ªþ( ½ÐQ« &àȉe‚6Ç8yP‚Ö‘\Þv È`rÜ® \£pDµy­ï¨Ó€ E±Œ#Ð ªW,SÀzBÓ2d˜–!t0-C¦€õ2„ ÖË#˜U†Ðá´ ™Â­—!d°^†LãÖË:œÎT } ÔOÙÇ1'8^ ÖùXIbY¸ï3p0·ï ƒX¤ç©ˆs¤ç©`êyê40õ<ÕL-ë˜Ál›?épzó§ ΜHÜ SïèœO½£ÓLçÝ´xêapjG§ ]‘ô_[RN9£+(òÁµ1qmÏÜ@ãTjñ:Ùߥîx@úI!Œ.À„Y"ûᄇ޹-úI!Œ®…iz á¡ã3žR(£q(JëôÉ c4~R£åq(êìà µS?)„ÑZ9“±¢ÉÄU6¶¤Ã&‹¤7çHzÃLéi`Jo8€)½a³é :œÖ68‚Þ cj½1)žZo8€)½11žZo8Àõé‡ÀabC ÙÇ1g-ºöÊŠÍZþ©ÇTÌNí-à¡eÂCêYÐÀ‘Ž©@)\ÑÚ=ÈR™E“Ê`K*s I0!Α“˜LÓÀÔ8á¦Ó$0-€è`Z™Á(*ÈR© Iü´ ¢ƒi4 L© 0y°Ó›“]= ÒÌs{;X,f`÷_ó=+»SYó“›wø|¦ºÝl™+ÕM‹oçÌ»ôåÔöP{ofò„º+ñ¿ýJž<ñRn±Í¥º…~4èi îûòIÕIó]B—¼‚$½K”y H»p¿´°˜¿÷÷)3Þ§N£h›¦Qã²uQVÝœÇuÓÈM·¦û…ݧ,uüžßæÐ£‹oAœ{¹é‡ ö^–xíÉc]ÃûQ?Î'(lÐE‰@üÍI§ô´p’Â+sûýM`2œÊ‰¼ÝüØA,2ò×Dãg(‘AK¤@.Û%¤È ¥G îV:v"|ÿ÷[Q -žša;¼° r.°³O—g9ÿôóGvV´EÓ ñûÈĆ>šë @o‘ðÿE¯÷Þ endstream endobj 23 0 obj <>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/MediaBox[ 0 0 612 792] /Contents 24 0 R/Group<>/Tabs/S/StructParents 8>> endobj 24 0 obj <> stream xœ­[koÛFý ÿaÐ/V°)ÃÇðUjÙîfQ§Aí¢(äýÀP”DT&U’ŠcÀ?~ïp†æÈÒ%ïÐë–cóιçpîc†Cöá3ûñÇ×óÌþé'v~1gç·oß|¸rXdٜݮ޾q˜ ÿæÛg!-'`·÷oߨl-¾ýòö ûÞ¶l®N3¦½û/»ýÏÛ7—0¤¶Éq\+rõ±z;ÌÄw,÷…ÉÝl~÷ŽÍËÝc•¯7 ûX4YU$M^É–ïë¼Èêš]'éFüWV»²jÿΜ8ö-‹ûž„:üºå¦°Ëë9cš~Ž¦ß ÉìVJIshÂsº!µF¶n²˜Ýn2–– OÑÔ¬\±þ Ú$댭òl»dùv˾dl™í²b ×1I\vÓ$Í^h·ÌØ×d»Ï,Ʈʊ%˜xg¹áÇñ<”¹ëX±kƼ7Y̶yÝtŒï%ãš=lòtÃÒ¤`Én—%Ë‹I’*KÞ³:ËX`ùïÙw—UŒÕ_ktÖD&ç(qˆSâ½Éb–Ëö¦!—Çà¬ËMêïÄMß ¼ »Í0-:ÝÞë*¶"±¼f‘;<6 êÝ,Ý$U’BÖwïFTÒØTòQ•lÏ #3•z˜e±¦·úìb¬©’¢¾Ï›&[ŠÉqy>¿ø8gBSñ×]²\ÂT„Èäó7Œ³Ç[Κ¯ÎÆ9ˆ¹)gÍd1û²MŠ¿ÅíúvÆí³»wXt<?€#¸¢nG¾”4¡C„A7™yo²˜‰ -îXòOË>râøë)îÄo3£Hž L„„AQYo3ÖŠ8|¿uo ÂÅ(ë ´|³ä¯™ˆ29r£U.Ðq(õÎF†÷IÏA‹fÅ—›¥?Ý„â?Zm(ØÆØÏ&‹Y`¹ÌÆ.’&a¿gÿì3(BWUrŸÁ¼»I«,+ت¬î“F|°ÏsÖ”ìß%\t+óN]C‚çPÛ¶¢ðÀM _´ÆP«=ÒíB«Uàºj²bϲ=Y ­*¥ÕªÕ ‚®nòf/Š‹Ëì~×<ª¿Õ¢EYUå}û—V;ÐPüܪ9ÜÙiÞR„C«Oàx–c˜‰{ÈÄ¢ûÚn³e[=¤bB´Õg•U¥ г HAµÕ5H¶u BT_EÑBÛ7n)k®R8ãÕÇæÆœ{“ÅlWÖy“ïÓ¿‹òȯ³{q3µÛ·À?ïªìk^Bj–|¡k%zHjVïÓ²ôj¿Ý>·ºÃæhóaÅ`›UÍd1«²4âK´ÞBK†â/Z-ý(èÁ‡Ç@k5,6«=º‰ôÿ_ØÅÜŠ0„ïå×pÅ¢CuÚNs Ž\0îXÁT°ÐéèX$†žæBR|0×áý0.p á‚`±õ HÚ&`ä‰h27G–šÀù®(âÓ¸Ads#°Ø‹ò!0,‰:þKKBRrÑÞЇ&Ó4¡ô&‹Ùûvæ†gL|^ùòsîÊOÇ‘ŸþExuønCÜ_;¢’æ"…+ÚÃúP€"³>R3\6Ä"q!?4@/îòåñèŒaŸƒ¿QP#NQíÄ}héMìMZŽ—7óÖïË?¥ÿÎåÿoΟ·óŸ¯3õhÑmXŠßµýû8[ÍI [´÷¡¡ Év-×»ÙíÍoì·O¿þÕ8¾³7ùZlžº³j™2ÊõÙE Ut½àÃ’Ã÷͸ö&ã“÷pÊbåJ§ÈøúÀ×U”S~ÐCC#NQ]{ø°†1UP3¡tf§hªë̦€uLuf“ÀTgFSÙ°®3#ƒuÙ ØhgF‡SÙn]‘ÁºÎl·®3£Ã©Îl7Õ™ÑÁTZÀÀ†·€Žq†³ ºª÷a¾ñS8#åºpïÍœvì¨  k$‚äsBĹ‘påØ3“O§Eü¥£c¹!nÑ0×…Œé€¹nÔÜ$0•è`*3Lë2¬Ë `˜%h‚ |s< üÉ¶ŠŠ~¹Êq.ÔŠÅ9ü¬kµ¶ñV2JÍ) ;t+‰Ç¾å9¯`§ @hÞ†§ÖÁXÃèjBéîKF„;„Ô Ý:ãP ^§Y?@«ÙÍ•ÐæbWaÛÛªEÑ‘%]*^¢¡1áÞ€gq<î6™=WÎ/ª ®Êp™:2®É`a ÃESax£›œÛV|j+‹\ÝúTï|ü$@uÓáïš;Jš;”ÈD·è¸ç¼’W?Àq×lÐ7+^š;^èfwab¾f­£ ;[¹ó~7sb'[×ÏÝîçªê";fšCfè*ŽÃrðuÌúïØ§²XæõnŒ—æ…¾~ƒR¾j-Ò0ò\JíÉà«L<ú¡Zûû¬ÊÓ1µ4’µÐ•›«?\­á~T³%õ£:©¢"Α*ª˜¬¨Ã`8œ¬p²LNâ¦Ê$L•Éi`²L€É¹y0-†„£K\±·ìǤ1Ð…¤+RÿÔBj¤™,fWùz_Á‘[§N7bؼê6åd<º^ô‚ö`E´kö ýæfÏ4“ÅL.•‡òÒr_4â,ü}¹ÜoKðö¨¸8®W¤¥8*ž¤iY-ób-޹)‚vÜÛèç‘Øè×Ý¥h‡öZ|÷H‡=9Ú×xÜéÆ k§™PüG{¢Ý=•›°{“îl®Ï`âvgü &2wÅ]Ð} AÛ O,¦iY-íb9iFto"ÏÞ*-F nuZ61ãëóœIÍŠlœ<ñY®°I/éêÔ(:ãPlv²B3YÌ΢ÊSºý!dˆá¤`ûݶL–êUu¶[½v´ê¤ÉÅ{Uyšl‡(·©Mw˜òz Z3\¨;†Ì5Á¼çqò4»xIê¹(<ç³¶‹Ï¾¥Ù®92NtºÃæh¥s¡ZFf ^3YÌÚwÝõogs40B±sp`枉;]e»m’BÞÿòØò×’¨âDÚü KùêÑ”N€¢Z.]¨»Ïþ –KJnh–òuŠÿhÉr¡ö™b÷&]Êû£Q9åü½jËöòH…Oá–M¾¤lï£åÏXÌÊŸf"³ýªÜnËÑ‹,ód :°zS>ÈTõœ¸]&Hây#çµ<ÂÎÔýöÅ, å‹ ºÇùÐb)ú|nVè4ñÔ ä*áõ¯åºÍ¿g«*«7ì|¿/[ÈÉI=mß^©—ÅN&óöÍ¿‘L¦ù{LüD¹C~ÆÒO'ð αÀh'!¶öMîM³/­ŒúÚ’ÚpÖa(þ¢UÝ…öÀ#-¼>Ú>u ´Ò8q Ö„”1ÐíD¡XSÆ@s´F)½hªu‚Ø2Ë.½ÅbæDìÿò…Íw¸W&šÈôùИX endstream endobj 25 0 obj <>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/MediaBox[ 0 0 612 792] /Contents 26 0 R/Group<>/Tabs/S/StructParents 9>> endobj 26 0 obj <> stream xœµZÛnÛF}7à؇VP„!—»¼A[¶[Ij$î“ÜÆ¢,¡²èŠTùøoâÈÖ,g©DlAÑì™3Ü9³cñæZ¼}ûæÃøê\¸ïÞ‰³ó±8»9>zsé‰Èq•¸™yÂ…žÐ®£D¨bÇ ÄÍÃñ‘+îË¿‰×®ãJøöÝd$Ä«¿ÅÍÇG°N¹Vk¸Øx2ºo_‰qöøm½¸ŸâjU¤ëUR,²U²g›|±Jó\|Hîæå;øæú1[Wÿ/¼8ÖŽè^¤ò´#C WN"qña, „‡ñŒ»[Ťr߸„$—ð½v vÐIíý¯Ô—•Q¯ëaGŽ’ÊÊs}GÊ0ÎSàÙÀi¯޲ ,V`Q샹I_:‘¶€“~èz7B\¬ÀÂÀq‚ùnüÜQ3˜ï)G™Á(K?znÉ8¸>yê¤çÄÒîÔu&“Ñwñõ$ŸVŸœmf³´úä<)ø}¹NÒ~jÈ%µ€¢ÄÊ–2j·£‹7Ÿn_}×YîP™L†eÚÄhµ×d®„äåJÚ=Ê¿&¡ïú¸Ý5§Óéº,åð ²iäÏé¿›tu—šƒýÒmc°C2Ø‘v‚À.Ø &ru¿ÊÖéˆYF%ZWU‘Ä ­«Ífyš°÷Œ(Dd óÛF™0”ÀR|¨Fy˜Áú”‡\­<qk”‡X­<rk”®Qƒ¸5ÊìVƒÀåÁkÏF™IõÜGÆ‘‹É#„ŽÞ'ö{Ú–öLtæŸ=7ª ÂêÙdPž#I9Ç;>|°æøÁh8¨vpqÌ3nì ¨¶³= øi™ûK—Ü0:2oº7» [ V­­V]ÂëI:cåi!o8m3Ù7Ы}•M«[À¤X™´7Zd/(÷PZ.¦5ž§wÿliE‹Q•é±}kÅŠ€k²¯  ?ó ÀÖ¾äÿyóP±~Ÿ®î‹¹õcí|áp"ª@ÊÃ8míÀVí|áp";©Àóo¯ž7ð‰TõEdkîÙ[þ‹Wˆö;Ç+D|°¦Áz ®)D=pœBÄÆl7 ~`æ C÷§Ð½0× Û.kǵk8Édt¹¸ß¬SxpŽ=.³dZgƺS¿ÌÖIaVÂØÎù!{'_æ5H1¨ATÆv7¿Ø„á¿$u…mb‹Ý™LF#èÅ·Ïáb5Ù =ê9xÕ5†çð …„EIÎsdÕÖPþ#» 3d2ÝÌÓgüÍ)jǸܹ‹\$"LïÉRLË%fÕŽÞäéT™È÷«Åì›(æI!’å²D*t¶XRqVÚw‚p‡'Îd]× B˵“QÅižäâKš®Dž®ŠrTSÆmVږЋ]T‡`ºY/V÷ÍVË!\i*ľr8“u_ƒ~ÐÚŽtg2åóìi%«æYU¹ëKºÌžÈ˹úvãrE^ƒXØzc^ƒÌûj‡Ú§~ A@&ŒK"uIćj.‰Ì`}⮃¸µÛ€V_ äÖ–F6\sI4ˆ[£H,ÀêK¢A`Í%¬¹$2™ÇS/¡ÌÇŽ–J ·l]gòSæSØ%7R;)a¾gÅ ™ü”v‰ÃÔt t¡-·Îä§L¨°Kœ‘)©U:^lÇ­3±Qa4ÖˆŠt¯gDµëãvß Q½tÛmRÙª ²ŽvgrØŒjg¡A3*ì=' ¤8W:.5U C,ýÁ‡jô‡¬OXÀÕúc·FX€Õúc ·Fðáý1ˆ[£?,Àjý1¬Ñ|°öðP`æ!ÕKó™#›=?÷ž¹žûÎí¡Øš÷O©0ërpŽy~Ø`íù1õ]ZÀÕ—ƒ}pŒËA>æö( §eÞ0d§¬ ãŽ÷uÊÜ+r´Àî”*ò"¿šR}=ÑãÓø„sG޽ᜲVЈF«[àð«ì ‡ÙÒ+ éZ`ДjÇ~üI\üyÉ‹rœ²»RЦnÃçTØ-º±õîk>Ø´º~À~EÞph‘=•ÍMË<«B¶¬YÆb•#Â9V9²«Ë‘¬¯YÀÕ娎QŽø˜Í®Ùy`æ?€%U:^³Ö Û/ú8m×~!“nV8ôŒ¤gdÕD9Âù³`²“ò¡%S¬B¯HeèƒÄTvWâØ„ã?)2|øéÛ]‰!“vd qž=­ì†‡2*õ5v€Ã„Ô¾ò:·ÌkE܇®IÚ]4!“zh5Ë–Kê& éWwlžÊ)Ìt‘ÜCÈD9ÝÈëÑÆÎ gOtrֳț©–a|ê ÜaÆ 3Yå}é[‡¨3™Œðì)Ó–W‘‰‡ì¿T$wÅ&YVC¸vh—=T!˜gyQ~­|=všI—a*ªtu4±Ãæ¤(ûH×2yu&ÛÉU.’\,ŠòÍ—Íb9mgY¿_Þ\S·wM7=àP¡‹?¨ˆ˜•µ4Y$Ôæd=PS"Ö,M“XB*g®Af` Yžÿryõþ¢Ê•y±N!¯‚ø¢²„Te~ÄÞGë¥‚Ò endstream endobj 27 0 obj <>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/MediaBox[ 0 0 612 792] /Contents 28 0 R/Group<>/Tabs/S/StructParents 10>> endobj 28 0 obj <> stream xœ½\moÛFþn ÿa¿YÅ]¾¿Š¶lßõP'AíCï ÜV¢-"²è’ò¹úão—»4G/³;»ŠãV,sö™g¸³|f4 {ÿ‰ýðÃûëéOÌÿñGv~1eç·ïNÞ_,÷ü˜ÝÞ½; ˜Ïÿ,ñ½˜eqá)»}xwâ³{ñíïïNØ÷¾ç‡üêùlÂ}}÷_vûÏw'—|i±ü°b^Â5g“Ï“éçïØ´y|iëûå†ý´ÞTíºÜÔͺ\±ó§®^W]Ç®ËùRü_Ù>6mÿ{Eâ!Xqyi±øÛ½ÃÀ€]^OA @Pvâà÷ñé}Ö.¢KDÁ°Äv©¿e"½ÿ vqìåÂ÷ò ±,r/c ¨Àú»èD©—‡6`q८`Y²ë¨,K»…ßo‰XðÀ'0. ,áÒÔ ‡ØF>¿Ò,òùvtæÅü,Êlà’ÐË3Gn9‹XÁ1=v$É®%áHŠÐó$ ¼"´;OF“ÙäOöÇi˜2þŠåCöÙ ­N¯’ÞätÊ× ¯ÉEvµýNìǾºV¼cˆ'`CˆJŒF…ûl•ÑDDE~™^µï¨ T”*?ˆ³ÜŽêhÒS½¼™ön_þ*Ýÿu*¾9?¯·Ó³kEL½Ã>O|þ¼îß»(7¥™,p’@6ÅȦElK˜ôd?Ono>²~þOÏ`ÿÎÞÔ÷Bt˜ï£<Þ¶Ö7iu¨íø4m•1„:!„Â<ñÒÔ.„£É7I è"jŽRÍRkªÀ„ µ’Ö¢C)­å¦´–˜ÔZn`RkY€I­å¦´Li-=˜IkYÀI­åÄMi-:Øp¹qŽ%:œÔZnܤֲS§† -ÃüŽö0)ÐÃ$ͼäPáf8ò‡lÍ5>~ÞçÀ2$gˆs†lù°“•»Xï:j:ŠþÒ‚áÙ…}>áÂ(ëÓÛ§OÚØ3ò 3&š²ü™`¦rÜ-žCÒáŠÔ‡åmèïZRz6>š¸I®O\¼S¥², =ÁôË£Á¶×Û×fýþ>ìݧ]'«¦ù\¾®ø×)ÐRJPm•^gºKÞ=.ú¨¢­°4.ÄáqDTÇpQÉö ï]` ü¤FwiìKØ„¯ÚòAˆ~6]Vó/¯uTÏlø«úQ]Ÿ'AÄ¢h1Rö­(£½…4 ¼èƯöœðMõûSµžWìæé¡çõsµ¾ß,·ï0v8~/¥ÀzøÅÃ1 Á­wÍÈœA´‘†áq|µÓ½¤°E[)WäÁ¡ê\Ç”ëq!°Õ?†È,šD:ìM"ÑÁ”DrS‰¦$’Ì(‘ÈpƒD2ÀQ$sH.ñ$LI$·x‰§²ƒCëšD|¦µ£ÏZ¼§Æï žµxâ…ÍhN(l-k;GËZ:˜ÊZ'0•µt0•µ.`a(·4, 󾑠ÓCªg/²Hv}¤§,w7·‹"Ùrã†HX:Xö w¼>éÐ.lƒäjMR•X@~ˆ  Àpïú ðŒ0Äë¿O}õ¥ÞUWeSMU!#ÙPÎ"´c›äé‘a0·ª‘߸)\цR’¥^qL] è¹Þ\ ïÿµ~l}"K øáæï!¡^Ƀ¡ÅõÿFFù—ª{lÖ]¥b.½þÔ6Bì÷×a =„§þq±ûlSÍ7Õ‚ý9}j»¦åìÎÚ VròõC³^ÔÝ£‰+p‘­Ô^òç¡áæ%|cÀ+‘¨‚‘^é^_ܲfmJ¾OU[ÏMAR‚‚VóI\è¨bµŠ@ß2–ÏCXIô ΑD˜=n`*×é`Rô8)ÑCS¢GF=Rô8ñS¢‡¦D˜=`*óàž×'ÚOJbßËHK  •$ ¼$±úH˜Ì&WõýS[ñ¡ÇØEó¼^5åBöÛdCîªiÊ v“ã°ßÀÊ!„öK’0=Ó¯Vo /ãC-&M@€ Å\Är!l‹=šÌ&©ÇãéàN\®¬¹7ÄáÀ TwÆ<}£€t'P=sa¨Ö F˜Ì&·ËjŸ?«;V²î±š×åêàŽ}^Öó¥¸ì©ãÒcñÔÖë{ý'+ÐQÊ誢â,ó‚ÂŽñhÂËE§c›†uõýº¾{a›e¹aåj%â°á!¹«W[¾Ë²c¿UÕšmÚrÝÝUm[-x‹¸ÝõiËM0æ\7ÄÙ–Ã樦ŠÓÜšùh2›bÿhº þizø¶wKV¯ešÕªyæ·–ÇCœ`ØÀsÄržmùG!Šê¤8)Ä–!$F„ûqâkƒLc8‚þI¨úWt(5†ã¦Æp,À䆪ºThN`§—¨²"´ðKV„NAP;t05±£3MìXÀɉ'njb‡¦ZáŽÜT«ÚNNì¸q“;`²®Ãj9½¥?{P½sÉYØéE`²5ýV3ÏÐE WTNÆ\—ÚrM¾Éd't‘•½1—ιô&îSÏh ÷Ù!¬¤!J`PMó3Ö60£‰ã„4ؤYfè$…-®Ûù!šYjîÑäÛlyà"…+Z_D¼F±ä M2 A É(:”’QN`JFY€Iå&µ‘˜ÔFN`JÑÁ”6Òƒ™´‘œÔFNÜ”6¢ƒ)mäÈMi# 8©Ü¸Imd& FršyGÿ¤ÐÚ]øª` -ð!ÝGsó§þ‹ÔGœ#5À-ÀdÃÌRÇGÃÀ’ì•[ø%{åú ˜Æzèpj¬Ç§OðØSõ8Ýg5Öc¦Î·xùJ‡“c=:8}nJŸãh—*Ê2}Ž›>Ð ÈRhw(9ò~v@TAÓ³âT #Ë¡dè'…0Ú­ŠÒ¾Íwáq·¸„~R£­µ()ÄSùÂㆡäé/ìòãÕ@ãĽJníóÛ6(úd>ÌÃvòY»W´mñïÑ1ƒ»`êì³ÓF~R£½ƒˆëäã ¼iæ?)„ÑBÄ“á¡jJÇUÍ*[Ò¬2Ä¢éŸÃÎÑôLé'0%jè`JÔhÁŒ¢† 7ˆEÔ1QãÏAÔÐÁ”¨q‹ç jèp*ý08´jég•÷qôY‹v·"1 ‚f-ž¸CÕ2šª€EËÚÃÎiÛá’ö£•àt¿T‚ã~™œ¦ÜLMøÐÁÔçÿz0=¤œð±€”>NüÔ„LMø¸É  09á³µ õù‰öc…þóª8ÆÔXóמU†.RÎ"¼ËŸÅQÅÆ¸ÀÍ*C)ÿÇ Ú-›ÿ(®`»YeˆLšUÞB2Ì*#´¾Ê¬ò¾ãúØ£U|˜§âð8"öão4« ]¤pE ø0ËŽä:.ðF#ÈÐE W´vÓÜËÐ’K_[R±HZqŽTX€Iâ¦R˜&Š˜(t0%Pô`b)Š?%Pè`J ¸Ib¦2nz}Ò¡0)¨k ½’Oí>ˆ&ã rîé&_ £ÈYÚï/à å0BÛ!¡øœ”$þ´8Ezl7 M(þ£ÂS$¨-öh2Œ">ã˜gó/ëæyU-îªõ¦ŸN½#§u×Õ\°»¶yèç7ÑtêÇA Sv¨Ô ¹fHS˜).áx)ÙMa9ž¼;…*‡TÕ€ªØ­xíþ_ÙÖÍÝË#¿Œïìò5¨UU¬cÇ}®o ¡KQõ©8mh“ÙDŽW—<_;î5ûí¥gÇ7 ßpŠ·æ:i^n*ÖVóª~Üô”夲Ú6r×pŒ¹œQ†S˜£Z*È3ñpµb>šÌ&KÎŒŸP>Þ^²¿‰Ó¨çÛÕk½þÞZã~U±3îå—êeoüµ_oÞ¬7-ßVUËžëÕŠ•«çòß¹ø2£„•`A–{vùh1›”‹…¤ 4ÿ±ÿIuÉOò’‰âüéîŽó:S¿P;¦’'½ø« Æ6ðû 1:I!‹>ú‚´°%ûj1›ÀŒ Ÿa(ô¢8Œ>gþ¬.HÿÎ:EŸkÿN\}®‰¢<%­>ŸD§/·û¯(Élúì«|éû´ÐKäÖý¹¨” endstream endobj 29 0 obj <>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/MediaBox[ 0 0 612 792] /Contents 30 0 R/Group<>/Tabs/S/StructParents 11>> endobj 30 0 obj <> stream xœµ[moãÆþnÀÿa?8Exär—/AÀ–åÆmÎ1î„¢€Ü:™–‰J¤CRI¯Èï\š#[Cβ¨°fžgf_æ™åZ|¼?üðñÓüöZ¸?þ(®®çâjy~öñÆ‘ã*±|:?ó„ ÿ<¡]G‰PÅŽˆåþüÌÛúÇ_ÎÏÄw®ãJøöf5ââŸbù×ó³ø©}uæ‹W³‡ÙüáBÌó—oEº}®ÄmV%E¶®Ò<[.¼H9‘ÌwËÅ燋ˆA8$ GÚ ;½ {:`݈¤Öt‘ cû!XÛªKKo0’‘˜ÌH:šµƒy.éCGvV{“Õì&ÝŠŠ”´E]0Åß’o”±ÀTG˜m®¨äz!p”Lj¤óP7y=Ð}^¦Uú[".7ÿÊòßwÉãvŸd•¨rñS^VbY¬³rŸ–%”hÀG…'اž,É”v%YÃGÖä@¹öð!΢8À[l¨nQ ‚‘pž ši‡ÓÞ8ܰ泋âfÖO‹MúÒ‰´œôC'ÐÓb“!äÅ v1w"˜ïÆo‰ƒùžrÔ §!/¡ \ ›õÞŒ-SR( 5}»UújÑÊÄd"üÞÀ«}ç™OôuxÕ¾SóöwYÖ¿ÿñ¡€-.»ðzjœÝŒ—”¶!¾Z -ñÚ‚þg$Äž'DRžïx– ¯7A‚TÌE™õ»/W—Í'W‡§§¤ùäsB­5-›µ†X WO©ƒfë hS¼»]àˆûM±Þ'ƒü|½[ÍÖ%t¼£ãó.¢á¢%¸«¬¨7©èavã=\@˜ jC—aS=ÚˆŒ=Ü•4=RÒ˜ºv̱›ý—E}ÊK}ŸVðÉ—ä×C’m1ÏκxÀpÞÉNBÇÚqí¤92Á1Ýn³¼HÑ‚uò9)_&¯~LŽ%Ù€hжQ"†Ö"XZ‹e´Ö0ֲؘ€kµÖ¤ØŒÖ²kµÖÄØŒÖâí5)6³ËZ€µZk˜ÑZ|0£µ&&Òh- 8³V{ƒ±eJvÅÒóN:É®XCgÛuÅÈäµ+–.tÅwÉv=ÒyR^ŸœècϯM*”*º«Èqã(† ”Ò" ©°Mo\=\Pæqpo8ýdg¬¡ÅŽX’[’±†î:²ëŒ‘Éjv—W‰øJÏ&I_*‘?‰õ©¡Lš± »ÍBBtFTÔ+©)þýXˆ§"ß‹ê9÷sñ{ºÛ‰ÍúPR4L‰z„ßÑN/ÙÑhèŠBËìv«YÍú§›å}½ в‘Y‰¥²N3«LÞš„½Éoi~(wßDYßdÔz›Pz¯Û<ßNÙ)i踴fÍn²ÑÐÒìü#Ž9ÀÓ"l¨N‹ôc)!Å¿†.BÙu È¤í²ƒñ‡1†3 hÑ êÛ–ooÂ>~Ç0¾¤üU°/ùž_dÂ~ƒa8|I @KØòíMšç1óŸ—ãÏc0ƒ±Oª†ŽÛ1îMØ3Ãpø’eZ‘5_dÂØ„Ö&ćêòÒŒ¥„TJǵâø K«‚Ÿ®]mE&­ø$¾Æ¨:þz­S=ЩÐdË6ÏEž¥ÿ9¥pþþ‰Ô2rë¾ çL,²B*¨´1«ød…TPec» ‰M8“ó4or²¡ºÉÙŒ¥„¬ ªldWq‰©‹Ñ ‰a8Ó€¬ J­-ßÞ„¿"_ºBB© -+No¯†Ã—¬>”ZK¾ÈÄ—^Êú¸t˜1â\`!+dýVÛUd‚fÄñfG>Qnžü`бÇÕÍ#è#HÒyTó§"Z~ù…²‹ÕiRÃ)%‹¸jÀ6¥È„±O¬}’ÕMµÞ`,%d÷A(VWd÷A(»òƒLú$9P™Ma†¹2V™1Îl!+³?}Ÿ•²2ûÊë|°SƒL83î4oƱ¡º76vŽnמ£OŠÍœ£[€µçèc3çè|8sŽ>)6sŽnÖž£O3GA|0sŽ>1‘æÝ®=GGcË”T‹> ¢´T½‰¹µ Ço-Ìý ·09ΆFjL_úÖQö&ÿç‹ ˜'JR™Ö³Ðµ,ò½ óæÂ<Ϫ"ßño A°n à88 ¡¥/hèØ®ÇF&ÝMɼ)€ÑXgØ$½‘›o8¾¿)ÐÞ °¾)ð>€á+ݤ€¯nXæ™üÏ7.¿æEE…Ú^ïÄ 9¡’ÂZFÍí«P‘ Cæ,™Ã‡22glLæXÀµ2gRlFæX€µ2gblFæðáŒÌ™›‘9`­Ì™fdÌÈœ‰‰42ǮݖÁØ2%›= #ÓÙìIhC»Ž™ôÍžÍ^³E½=~¥†Ø‹š¬#xΖEvwÚÄ%5ÙÝIøØ *d²šÝý²\Pß…å]û;úþ÷bùœÀ¾ßè‡M]ΞÒd÷(Ò¬yÔ»þš¿^_Š´Y^‰C™ôßÜT‡õŽ@V_ÿ5Ž“iR\Kè¶YêMV³tÿ²kBiþ¦”­šÀ`Ö¤X®7<Å:\Ѥ•0Ë•E&«Ùeöv‰´(ðm;‡]=ÊíÈ~M¶i–¥Ù¶¾Åa&8(¢†\ûͦ„ør’GJN [¤o)}z“Õì5À缬П_’D,ŠTO'çʇ j*t¥‘àü±-ä\ÝSöA*$/ê’ÆñAnß^Ô(ìJyà5|´Š\8.„G>nï®ÿtsûóB\¯«uYÉz/`$¨y'U}SFŒÔ7¡QÉ endstream endobj 31 0 obj <>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/MediaBox[ 0 0 612 792] /Contents 32 0 R/Group<>/Tabs/S/StructParents 12>> endobj 32 0 obj <> stream xœµ[]OãÈ}Gâ?ôÝ»ÆnÅÒj%dfVÃ.Ëdž2÷!$†X7ع¶Y.Òüø­¶\NRîj&!Õ§N¹ºëTw"Îoů¿žßL>_ û·ßÄåÕD\ÎNOΧŽ[¶'f§'ްáǾmy"ô"Ë ÄìéôÄê×ÇÓñ‹mÙÞ½œÄ±Ç‡ÿˆÙï§'×0´~7¢ã;–”xÌùèûhòýƒ˜dÛ×Êcê‘H¯ûfŽ2_¤ÅSRPˆþ­ØÖ”«õaQÏO°8,ÔW3â¢xM—ë>'Å^._bQ7éJ3+Çêdõ@xfõ™ÌGp­ïˆ7½j@ŒÁq–Ô H Ué²à \3¾­Ç{²NRš"¿YÔBÃâËŸ?O.¾ˆ»ëéÝõ×OâòÛtz}'¦ÞÝ\̾CI7´;À!Bª…Àq-g̺ tåµ½Ýìh´&µâø’=&KÂwñ¬®kİîN³üiQÔHR‚ž÷»£Á:Þ¬Ïj¥z¨hÖo±Z”J´À Õ4^l·ñ"×ÌNDŽi²\û âm³¢…L棦ÚÜ×ÉÒVdAħ¬(Õrt;3´f}Aè×eØ_q²ZûãÀ˜xkÄ ñ’'e©jOV1ÈãGx²‰JŬ³—tW˜’Çg(×÷ñ&{¡(7 TùÁ>rÈ’Ú‡Jñ:(²„ùP #³†MjÿÿE½Ù³ÆÂ/õƒ°Œ@ÊHÏÊe½Ñ 0Ç ¬±4ó0ÁBßQ ØX ­#ᤄ¸øpÍ2§ƒ#ñ '»æØHcìR)X¾³.¼S†]´þ‰@ ”ÑØLÐ “ùè(ù ûL¨kQÔ×å²¾nà¡þêyüÐ0DÞ1Ö IJ!4•)ÍÖDÑlü%®âçh"ï84Iµæƒâ Yî,ɳ‹3åí4_<ÅŠÒdCKþC\©zV“¬þ´,kÉ7ß8I]胾ô}3’­‰bY³ùñ5†¶2]ÆâëóSÅíKœ>–kR9°8ûøCÇÖ ãþþT¾ôúpKRšú qMcÙš(Õ̿״@Þqh’êÙî™õØ„Sí#ðª=jW퇀íª=¬©öƒÀšjÏkª}/˜¶Ú³ávÕž‚ëo ‘Ù|t>8»¼íÏnºëöÉ4»[˜Ävã°Ó\esu0Mä‡&ÙãxÐ,¹ŽMdB,¸T:¶š,û¾…Œ5h#ó0: šv½è Ù3yÐ|™¯5ÑT+ýCÇyÇ9"Û:/ -'2£Ùš¼;Mä‡&)Ú½`lL³5ywšÈ;MR´{~¤6Œh¶&Zšç¤ÐsÕ*ÑkdY¨•a›®ƒ¥é²˜‰°–b°þ.») „wÚ“r£”9ôª?–¤Ž•ãj]5Šek‚­w]vó¼¿BuÆÐ´u]ÚCý™ù†9s‚GJg Ü4xÈ„!ˆ– âC5‚hØ.ëù`µ V "°&݆€í Ö¢a`µ 2«Q?˜NñáADÂQfPÚº!Á‡üºyzà]ÿ<%ÛS -nhÖª!Æ¡¾×\ñÁ~Ȧ‰¼ãÐ$;R ­­)ÍÖä½O2±wšd++áw`&o‘ÉMjÝR}Û£cg‘þÞó`}v¡ëMoðÈ^ªÕ×0x­É»çòŽ“#d $A¼yf‚™¼;Mä‡&Ùר­XSš­É@šÔQ¿ëDj_ûÔ/˜›=øŽGšíw‚0«?tLÓ‹wë¿CdK&¡º†½Jk28™GáØ;Îw™é–Ìöi¶&?A³¹jh"ï84Énɉ•â&4‘Épš¼ómì‡&Ù×8ãPÉl#š­É@šý ²3¾îÃ]gþÈÒURluÁCœ9Á#ŦŽ-³ÛZ ÏÞq6òÑTšN™rl-mïññû²©‡&U¸~5¨×³þúÇjnÖÛûu÷‰”ÊhîˆõmÙ€TŒüŽÌ¾-‹LÚ“N°Û‰:«Î;ù'ØNÖ’¢Pí<ŒV4HÅ¥v™cšÀ]²¾j’×e14ûÎ%2™¤Ô/*ÃÖë0P‡õ°^ŠsÐ1 îò?Klqµ endstream endobj 33 0 obj <>/ExtGState<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/MediaBox[ 0 0 612 792] /Contents 34 0 R/Group<>/Tabs/S/StructParents 13>> endobj 34 0 obj <> stream xœ½\moÛÈþ ÿaq(.¡ùþRÙ¾SÛ8†­´(”~ )J"N"}$ÇE~|g_(.- 94UÃŽ5ÏîÌîÎ<óp-vvÃÞ¿?û4]0óÃöñbÊ>Î_¿:»²Xh˜.›¯^¿²˜ ÿ,晆Ë72,ŸÍwð¦_ï¶®^¿2ÙZüd™êÇ__¿bïLô YLûù?lþ·×¯.šÃ7ˆ¾©ã-&_'Ó¯?³iñðTfëMÍfy–y\gEoÙÇ}•åiU±Oq²áßÁ;ˇ¢¿gVyk_È®åv  ÿ-&©°ËOSÆ´ØXZlž…ÃaÓï…°QÇj ÈAÓL³wСmˈìqC·&‹‰oØ†ÏØùÝ¿¯§¿Ý~¾þüåŽM?_ßÍ..oÏç3ø²mǰ½Îø?\ÔËn'Õ á¡¦cá¸P´&‹Éyõ”'›²È‹}Å⺆-ºKóšeËvÛ”ÿ.Y–³z“²*Þ¥lçyZ²öñ—¹nó˜Õþ6l ûŽØÂÚŒ Áó1ÏýÈë¹f²˜¬Ší¶xÌò5K¿'é?Œ•ØZ¾i„vgHÂÔtê¡gø>eÝC"ð²÷­Ébò ¤š™\Ôi±Ûa~;6@w-ã|ÉΓßóâq›.×bƒ°¯“«l½/SfY rÚC¼†oý¯?¿e×E¹ƒcÀfâ1Æ6‡íaÐq‹á Þ©äÔ—cCW¼Q³å©½ñÌn= ¸gç÷E©{î´¿ùï/â:f·éû´Òßæ2<>Ô® 3wJŽ7Ñ xá˃ÐÚ.&Ò«j_ü‹â1ßñRzxUBN¨4ƒCl“Ço±ïo‚éžSøÛ¸ªûS„>qJÐ2çC¹tO JZ[HYº]‚“7eQcùÍr-÷»v $O~òeV=lã'ø~¿KË,XB8Êþ3üzÿÄbˆÒ•ù¦DXbar\à :ÞQ„–rØÀËÃd¶îœC©¶Ý2s” øÀ(J"µÐ"ìÛ¶‚ 'Òƒ…Ì£s^¡lSXÇ:eÉ&M~gÕ~Çä¶9ZèzS¦ê½é÷:Í—ð qŽØ”›Žv¾”СÌÁ·Ã:U?)‹ÞÚ.&w<ÇåIjÀÖ­À¯ ö.g¶¾áö[öÓôv*òÿ¾–ŒvÌÈð½Î´¤ï0 N× nEœ¸!> ÃËš C?˜ã²UQ,ÇÑ|û×ç3¦ûòõhm“eZÇÙ¶â^duÅ’x›ì·"ôø¹´­PÄR›Å”áxÐÔ˜$†c¡Ç ýƒz2uÊüQþà‰Æ57š ï0Æ.®æìjöK6¿=¿¾»º¼ÅÚ +éP”0{-ü0ˆˆÖÝ¡¥ÓƒŽë±4“Åäª(Edð–-9Y¨Ë8¯VÐ<ܧõcšJþ¹)€ ñãǸ™òt' 'ŒYµ)³Ÿ3ê3¥„ -ƒÔÓ±.·&ërŸÔ@‚ ›óÄ_±ÇM–lX ´h_ÁÿÖ$Gp”;[¦Iš}ƒn*­*È5•螠ͺ߯x€ª(˜ßn(üÖ¦Kñ-¢Tã`¤Ûòø–-eiS+¸¯³m†îu3¡~2š^ı“]îx¾*ÊJ’ÇC„x+ÞnpAeÝ×izŽáº_”ø  Á’áyãÔš,&Ÿ®fP?Űº²Ê }h ,ð6冸W™x¾‡Øùͬ2ǨRñÛ߆v†6aŠç(Gð€kŒõ¼5R$}q¶*‹ðµ·Ÿï¨P[.(@ªMöU‹Ÿ”Cjø–Åâ‡ùôüìbzÞ_ŽõS\G˱uÝÇ 5`þq¹T£dØ xàD™2^t¡z»$6l£E×…ÂíX£ÜÖLdÚ/öõ=òöh†ívMŠ=Ïý¼2첪â2 œ±c[@m‡›iÓPv«Iu84ý AwŽi”¸À3ÆF©5QídÅ–i•”Ù}£¯Aá[É^iiÛ-TI^&Šužý·“_¡8îöy–H>Ëí•ãÚ|)Â+Ê,Ü 0¬hœã­ÉbÂs×’Wi¦…Zíø€ò±zH“ ¢Ö¼ëmCú¡>]Šß(âÒÌX¿[“ŤõËfÈ•¶Ž¸­sž¹«qÝfÐM\Áæþ¤XÄK1ªïѧO‰J‘\/â!Å8(Ýpá«9Žoh&2Ådù}Ú€S¢Õ—¦ µ‹´ S¢‡ I4®œj&‡´QmŠ=0È x-œH%‡ÇK9~êpA;Û‰¶o\àÔnЙ0Ås”H¸ÀHÆzÞš,&\bùíj~#óâ!)>[T¬¹umÞÜv»ë¯„B ' XȘ*îÚb?è>Q‚ƒR 8K8Žjh&\ [*—\€z úH”)£TÃÎ’¨†ƒS  +ÁÈ"Úš,&_òmö{ʺO°`Û§RoEÚÍË‚åE [è}ýDšCùäÝÄ} gcàÑ•>cJøPþàéºfÓ&}:´C²;(Åüeš+òí“t[ê>²zðߨXÔ…÷¢$"ðÅ.ÐæGq%Ž/Š !y¸(‰p€ˆ¸§ ®2`×Pzñ b¸¢WAFz'^(›sÄžkMå“‚æ… iùOÓ»wÚ«ÿZÝ5Û¶éuÇé_”Ó8ðÕ9U¼†â`¸˜ü`³»¿³ïÑúes­«cÓùÜZŸ[@,džÿ|­1CÏ6Òbòá‡ÈJg2EýZƒçsì_”b9®õÂ…h ùBˆ×ýë\«$CÞh“ xƒr"VÐ>U!½i Oz3tôtóGO›.íèéãôÇ%aûE1j OÆH½0©­©¨Úð”µF‰ gž*|ƒ~h†´\~z$R.oM›\>”Lt‹ád…‘Ø€ºÕ‡ÎzœxýöùnŽUm?àœõ8Fý«„sV ¿Ñ©¶]$×;Výs›5m ðǹÍrêïÅp¾Y‰¸êq* 7äOˆ¸‘s솫$Rn³7)¸Ja¢áªrK•­% úO—Š+¯ŠÐpU½'áªÓI•Wzh¸®äŠëYôuS ƒ„+ï)ÒpUÁ#áÊÔ4\ù€†šôuƒÃI^7•KI¸‘{äÆršÊGÁµM—¼n6œÍÐ#âZ¿'CÕ×:h¸ŠÉp‰!áÂÙ|îŠëG¾¡¸RÕ£áºÁ‘o(®gù†âÂÙ$¯›oÑ×Í÷éëXôuƒNž¼np6ÉëÆ/4Sq#“¾n‘G^7Ç4ÉëÆßD]7u/†+¯¤Ñp壮í’×ͱs Šëç×9Î%(®{œKP\WÜz¦áÂÙ "®ðGŸ4\߿РWñjn`ù†â*•„ZG¾¡¸¡ä[ÿßš ò-?ާ[€žWÙÕ!eðÏþÚ« ù*­v(ÒöýÄTº¥©h™>ì€%¹2Oº,AQUô®S½ÑEå];(Ñ¥…¬ÅâJ¿,u&/J Qú$m¯‡ ͶÁiYm¼7-x#®zòš×7Ú$(Þ j­íEž7m;Ÿ|Äv&ØÄ­5 ª«ÚðÕ?­²My²ƒÑ¥¨Ð&ÛÍ`È TOµy'{Ò‹>õF·"©7šÁ zÓyï€zCÂUê W©7$\¥Þp•zCÂUê W©74\©ÞÐp¥zCÕê WI®Toh¸R½¡áJõ††+Õ®Toh¸R½¡áª¼JÂU)•„+Õ®Toh¸R½¡áªÜ§¿UYTÚ#á*Iš¯b\¥Þp•zCÕê Wª74\U!I¸ª8’p¥zCÕê Wª74\©ÞÐp¥zCÕê Wª74\©ÞÐp¥zCÕê Wª74\©ÞÐp¥zCÕê W©7$\¥Þq#òº)õ††+Õ®Toh¸öq.Poh¸Îq.Poh¸R½¡áJõ††+Õ®Toh¸R½¡áJõ††+Õ®Toh¸R½Aq[ôºOåîéÇìÄþEñ©G³¨ûºÍɇÚh'§ŽÐÛ+6'S7Pw¯n¦;H‹¥ÍFo4ðjL 55~à@¯­ÈÓé¼;~ G\G×´ÝÑdûÈ^9°!!;cõFzl›º×ŽÒÞ†ðP›å3lpEÕôþ¶£=Ô&FñÕZ­ÈçÇñö³b ÷9Z0ô ˆH2õ P’},ö®W½GõW+­7U=­ 4ÆÝOo-ÍGÁؾÁä‡Äˆ„‡KÈ•ø3ñ×ñÙ6U¿LKìwšvJ” ‰J –¤J꣒ åEF44“Åäúóü’ýUÜÑ>¾Æ¾U1â×ûãí–-‹hc-&³ë‹¿ˆ€àÇ ªË4Þ1 ‚ú@}¶ÈþE™· endstream endobj 35 0 obj <>/ExtGState<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/MediaBox[ 0 0 612 792] /Contents 36 0 R/Group<>/Tabs/S/StructParents 14>> endobj 36 0 obj <> stream xœ­\msÛ6þž™üLç>¨mÂðýå&“™D¶S_kÇ;ÓÊ} %ÈâMêH*nnòão‰ r 'µãIZ,ñ<‹Ý}v!ÉäÍ yûöÍÕüòŒØïÞ‘gsòáîå‹7‰-Û'wë—/bÃ? lË'‘ŸXNHîaÑÇÛˆ<Ô/_Øäÿͱýøòym[¶ X.f¤ïõó¿ÈÝ?^¾8‡ÝØŽí&NàX®+o³˜}Í¿þŒDëÈ`^n¿WÙæ!—EC«"m²²HsòaWg­kr•.7ìOd^VÛ²âÿŸ8IXÈ.~àYa$ïÿ™s“ Èù՜ɥŽäÒ#/ÚÜ»íà#\ôžÓ>Bõ5 ´ôºµëX‰;nka²˜…–g9„Ì?]]}¹¾œ¿¿»ütM.þøô'vÄ1ÛDÙÖ¾Âw\eðúÛ³¢xœ„Éböž¬³œ’¦J‹zM+rO›'J Òl(¹™“´Xñ?þvqwCXÌ>³‹;’6 Ä-Éj’.—åã6Ïê ]‘ûïl1¸±åG `ß…ñ0ñÇ—L3ú×r“””k²J›”S]–ES•9ÉŠuY=î“qÏÚs#›œÝ’º©vËfWÛuFóUmr*«­0æ¡g¹‘‚Ø€y„2+ Ç1&‹YV§MÇǶǤ%­sVdµ«}¶T pUÝdÍ®¡5FÛ­8RàÐŽQÚQ8š¶0ŸÕÇ]‘-÷'[Óÿìh±feERRï–K(Éë]®R…¾\Cx]AÿÚÒeCWc×çŒ%¤Œ”qYÁ¸Â*™,fìl‘¥QÚæ«Ëå0€(¨²o´~ÅN¾`äiU—6iMÊårW±•,cwuEƒ¬hš7ä)k6¨pœ#‘2.õÔ“ÀH¹TýBPQœ~H&‹™¨…´hHó} µÛ‚75¹ß­Y¢ÔÙAÞ!–X"­«ò‘¸¿“¦„’ò;„ÖŸ› 7Y»~¸zÊ€M¼‡ŠvèÛã™Û‚9cE* €kÆà³üJËø¡-©û2ó”å9 ‘š¹ŠdxŒ¯HÇÜÅíBè=¼qÄŸ-3žº:¬®¯X|ݱӅ¡ÜdßÒœGJ‰û VÖ‡5q]RÈÄ‹3¡mIèºc=ôl±¯³›’W¨«”ÕŽt ¡èæôÍ¡møwQ>åtõ@yæ0ïj«õõgd#ê*« ž M´u hþb£‚w!¶ß>ÃØWÂd1c­ÃºÌóò‰«ìS G¿d~ª¡¢ÖË*ƒ¼a½fíHÎ+î9/Ä­vÕm½1l¿dÀ&ÞC»F{œK&‹ë(1©ˆ}þ1(é9›$÷ŒùP‘ÕÐ;"Bk@¹4æé=Ís¦€àžvÞâÿ‘ ä¾Êèzø¶DBkÂUÆ6ÆÑ&‹Ù¾¦où)3v´¼gl€{Êeà0x°;Ûâ« ú€ÓÅÐe¥]Ù‰í+2†Ê s3qª«èóX' pç*¹ˆ;HʧÃᢅ·ŸûDHëº\fœ+›AåAÅìø" s ° s´ £ðÇuN’ ´Nû®pE›4cß.,6³ºæWEÖt¨7l `ÔÑAÌKx)Àš°Æ;h)ž) ?Uh¤Þsz<‡ßÏF>oµ%ËÅìfÞ{Ã{üú ÚSL\b¨@Ácâ´mð¡õ@ˆaA‘X¡«îüªqDÿN¯_cj3ÙSì`Ý¥¸ç2ÉWlðžTÔÅ—×g»¸üãœÜ|¹ƒm,ö’NãèÂy¸ú(œ™g'¬C0w¡ç€?|#öj~YN2åÀ…áböúýŲX{¤a?$Þ1”£P2{¡‡hs/ÃiO]!‹ž9 0èïÈÍÑw@ Ÿ?ÚMúa<ñü…!;B~ˆ´øLÓ¹I«&ãZðÏ­¾KYÃWkøI°Lø¡®$–Ý×ùiù CÆïíðì'o3LI_£«å' J½¼X[ê%Hf¥¾ŸÃ©RÁN› YM©ï‡®/õPÃç:>LLÓÎ_vâûÓ–|®ßÏô½ñMÈÅ~ò<r°M(4®¯†ßx‘ÑšÐF§Æ¥¸oÊÑÒ†& mc¦òãuaßÏáTaß® { ŽF:ûè Ÿ}øñ˜¾bP\ áçKá‡N›þ‘¥Qô¡Ó¦cë´è†ýI÷^¼'1œt¡` 9Ç5FkŸáÀ£Ic¤04y±Vj$HfRÓÏáT9g §Í9…¬Fjú¡ë¥¦jøüÑk0÷ž?~³$› ;$„b"/ÇÝq*e­æZÂ蹇øCX¾Sú¿[Úù®ªÙg6ŠùUR“•CÍìºEs‹`DöpÞFd='añ‡ýµ­2‘q•éRþ8zwáÅ¡ôÍ®Q&LX}Ѫº¼…‘ª+h* ‚ß¼–8€2vÕ=§£.KM1B‘k‚¹³¦@öù2hmÝFÝC¯G¼(bÂdbêzâ £9êô%áËõÂ-¯Õ ·ÉsÛɲEy‹6§™ ß¤uCÎAÝË5tÝ9=|èEä´¦,v<¨Óx¿´oâ—VãûýÒj¼/ÆwÏÕ”£¥á€D/­<øéM™Ÿ$Cý$¡,Ö–$ ’YIêç0 ëûÏ·¡:Aõ2FÞV/¦zõ³Ô]Pá‚Þoy¾31T„aÏý-¼æyYSò™}Ž¥VÚ÷£QÛwD‚8š‘Àš°F¯·<ϵÜ)£¶dhp½%ocÖË×%H?‡Sivº.ê18š2ÞÙG×Ý*' Éyíp¨ wQžëM aØ“ mvàopˆqÍDk’ è]s =åNÉÐ@AäÅZ‘ ™)H?‡S%ˆ1œ6A²Y臮—…¨áóÇï¢ ;“)oëI†ý²ðüÞÇ­kˆé‰z/0¿‘À°лvR“XK†² oc$ Êã5Qp8QÔw¡k¢…3, Ý}4² žÀp–(k‡C½ãpãáœ*ÂP÷ÿÖı,h¨I°LR½Ñp£h"?a¨e±NdHF >[»ÿ6Â÷DYcŒ¼Íä­@kµ¢ j8TÐë7Œ­hÊ!ª©puû‘üܵ_C³oÓ†§!¿ 7<1¯"2Šè@íÂd>¢04i3a¯Ë†~§†t]ˆcp4ÂÐÙG' Ê hRB^;*è@íÂÏpʼ v„_|¿?ú>:/ØÆà2X“Aj—} xkah òb­\HÌ䢟ƒ&þŸ–>‚öÿå’1ò6—”Í5rÑÏR/Pá‚Ô.8ÌŸ2ZʆFŸ–GvÂýßFް“>-¯}éI~*Ž¡-[ÆdÛó‘?|4èÔﺞé3ÐÉÑ8Þ¤J.f¿ö}F×rìWä§Ã¤HnÅﱸà¿Àà‚ÿŸôåÎóbî# ›Éï%ÁE;X‡ŸNN²°ó®‘d²˜ª½Yäùë”G_ĺ#¨2o ³‚Gì·(™xm"(¶ŒnêB´Is ÌŠ· @bôuñ•B~&ã¾..™,f°þ$/Lù!tÃHA‰þÿDP„c endstream endobj 37 0 obj <>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/MediaBox[ 0 0 612 792] /Contents 38 0 R/Group<>/Tabs/S/StructParents 15>> endobj 38 0 obj <> stream xœ­\ÛnÛH}7àh öA™™0dó¾Lì8ëÅz6këMÞE¦matñòf øã·›"ÕÕ"««DKɸ«ûÔõt©ˆßÄÇ®Î.Ï…ÿ铸|~&>OO>\"óüHŒïOOá«ÿû^$Ò(÷‚DŒ—§'¾xÐ?¾žžˆ÷¾çKµz6 ñî¿büÏÓ“/j½W+žøPx2ºݾgë§—rþ𸗫MQ®¦›ùz5]ˆÏÏÕ|UT•¸šÎõŸÔÊòi]Ö¿AžÇž0äÈ(ˆ=™ÂcÕÿ®AñåêL`ˆbOw¿¶I ß¹…D·ƒv Ûh.5²¨^d'£og‚óùÇºÚ »Ê\Š-D ㄨf2ðrÙ¯‚ ¼HÚ’[¿`¹'%zÔû÷ï¹<ô[NaŒtùûùß..ÿõE|ý2Võê\R… Œ@ú k|8ú0ˆjGñ ò=d„S#Ô©êT#9½R‘ “^˜Üvȳ}({ç}ÿ³á´þ·”E×F^cÐ?‰WÂõPNÿǨÿýÐK³Aþ7’ÚÿB¼‚ªt]LïÄ·i¹™×Õü?ÏEùb~[¯&ô¸ú%˜~I ÔHjý>bžy™½ºÁK¹µ=߈GŠï.t"¾Q8¨Xî%}ç`hê¡íw¼Xk¡’¢¡’Å^’ #ÙMÑDÿuñ´xûF*@\ŒTÈPýÒd¨~F’.õÖbªÔCL¬R(Áˆö NÔò}xó†¼Íë`7+ Z’¬Ðå • •$õbäK„Š‘ìK!þýT¬Äýºçë«ÅZÑ„• B\ÌžËBi$qªwœ ÕÛHrØœÃc ¸=•"ýJ‹-:Щ¸ÇàlÑ9‡b‹þstTµ!%MHeDD9OïFÚQ&ª3ݯd'“ê$úmöÇjýcQÜ=,‹Õ¦C*µÚ˜É¢°ö%<¢¶Pb,”£R%*µãXm˜Õsµ-DÐ\LÒÀÄ£¥~%Ž•sl8mÎYÊ\Óæš(w s…$ ¼°ÏÿؘIÁ†Bn‹$ùÖ£»õ¸AÚ°K‰9g×6þzµüdñãŽϧ›©øü|_”0«1ViKæ¾MˆyGÑÖÙ ECUüQô—¶ç» úD…ÙWÇ_èˆ#‘r@|í„ti¡ ÝœÁãs°=UZz᫲ì㦠†ÌýS(*ï=å¯H2«+™ë˜nÀ 3‘$½ wfàŒ#µ ‹±ëŒî26æÕ«h…à–íN„CmÃk“z‘ÏO=`Ž)ññ‹â˜¦4R[S¥.'© âQ{¿ ÇJ@6œ6-e jI‡J¥,w C•X©é÷\¥XôH~·ÖÏÚ· CTUw@ZGXÝòÙb]âºøó¹¨¬û}sÇwÝ® ‰ëË.Í}€e—æB€Ø¥½D¦ÑwYêªäŽJtg •TÏ$}><‡u/°¶' ¢Ä‘ S:Q˜P8D˜vÎ!.¶ˆ0…kݱ‚ÎÂâ4ñòA3! Ù…m“ëáíYX$ù)Ð2RD¢£°8I‡ªm$é¶ÜZLq7ÄÄânD‰c¥N›"–²nîF “my”;ÐÉUë6(ŒdÏ x7¾*ªJ…tÕ?¹ª›Å˜=Ž‚h9j£ã¨8ʇªm$9ÔÎáQÜžŠû~%F{”ÖÏg§HGK*E0ä‹tΡXÄr‘Rp­;¬Ð!Wù^:,ªZÁAS`J³*NÒ #–8 ¼8¤ž‘d\L’ÀÄ#‹~%ŽEl8m&XÊdÑ&‹(w #“XÊ¡`$­¿ºù*þ®ˆ`Qˆq9]Uzz¶^>-ŠMa“ÅϘŽaX—£#:ˈƒÐ‹z‰¤ŽF’à à3Àí© ïWâXAÞN9‡(÷s¨roy€H ¸Ö+øØCååÀX1’Û| |¿¿¼ù óF¤¿àO¡bœlB[ðHEL ±¤)ÃZLQÄÄ¢ D‰#eN“M¶²nÊ@ “”Ñå´¯ŽTo>0€$ëubä(Üm<9ëubâCy îŠch*_ÙÖAp{÷›Þhó¥©ä¬=Ðþ1J²vCýk$'£Ÿ…RÇ“^àÿ*~jZFq³)ŸgUºîT +êçº\N7?2†B”y~j¡ã¼ö‹Qœëý8¦B›ƒHýôûºlèíC‘ɨ.ãD„ëõû/ž7z²¼šÛ×±.Æ»çÏXY SM¾-Çthשî#Y¦C/ž‘ºÁæ}O‡é€?z!ŒÔÍ2ë#yÇÙFd2ÒxRˆ/e©<к£BăT±‚´NåÀGï(‘ºçd¬{Nˆ³¸"“´¯ˆ;L`D&£ñã¼U1«ß*×ÿ›ß•¸+6Óù¢ÒÙ¼y,Äl½\>¯æ³í7ƒªÖLâÇã|ö¨‚w±XÿÐ Ñ›KýJ„ʱJ\¡bÀu"“‘Ò®Qx}/¦+QÔÞW-æJ‰RTÊúWZõn}–óªRËUÆ^4‰z¯Û¢MÓUèÛ‘q¨‡xŠG(+„ŠY⾊îP܈LFëÕâElŠr9×_[=l5¯0ñ&Þ­-¦ê¶ºµŸ*ý·£i%VkqöXÌþ7ÏK¡‚i6]ÌžSý{]Ö´ïÔ]3QéZ5ã˜%½Pç¡&2"“Qãï‚ïݾc…~ ¶-&Ú½ ±5P5+çß•¾¿¸ò" õwç dŽî(†ŠR£ÃX ˆLFÛDÖjÞͧåtYyXdÄAà@r”CÅወ"”ÌBõ3<ø5#(ÅzЃ_#þríUv j‹¸(×Ëú»„î+¬Œ¥¾ÂZ»9ú˜$Ñvå+)Ó@_a­íÝþ@/a ñ‡‘rMjš¾žážÔ´^€ÛcFhÆ@ˆƒ{Êí¿ ™r5õy /‰ÝsЗš ±,OÄ\ëŽôò†Ò“²¸Q7P–×¾Õ á”1ôBÊð`•ŒÈd´e—ó–^ߢ@ÂQ ½_ê&Øïm"Yl¤º ·Z^ÕÓzU–Rf šNRbdšèDÈQ¿VªûiÞûˆÈ©ª‘r ÚÆÚZL2Àã®mÁêWà­‹ £-X–’èÚúK2>kã»Êýí[ôJ­'}‡;Hõ?ì>^?üÁzß!GUôj,³Ú䇪j¤„ Ï`²µ=߈oŒï.d"¾QnBîžC²myw>XkÝñ¶Rõ!âÃHÙ©€?ßKÆWžÚT9©€öR5.éÁwS E—zk1Uê!V©Gxk*°a´©`)é.õd²ÔwA¹Ž6ˆR5™œn¤z¯ûë‘“X5Œ¶üÍ_µ´`¥ö]êožÇrŽ ÐžLªŸIï#· vR gð(nOÅ}¿oûd*î1tΡ(À²<‘'p­;>ОLª¾n@|)›ðgàŒbá=Ú•IÕÞE·0@ŠQìáb²Ø<¼b߯À[ƒž £ zKI¢Ø÷C¦‹}”Ûéhß*U<Àé@Š5 DŽÁ߯€‘ã<ئ<ws8¾)*l%[§ÀíÝþ@›k©ºôõ”6Á{5?n÷8ħFŠû0›H¸áϽì¶>P‚óï*¡í\' Ç¢è•?ÈR=Ç?d`DšçÞúÞÇ$»ÇÛ·£ó‹ñí;q¹šoæõ“¡ï/âÛf¨í ÇPèe?H3Å‹ zu Tºó¶@¯^ºÃå¬)Aé9P?™{ l(ZÍo^þÁ\¸}uœ5íþ @}+¨6e1] UÀÐgÆõÛn-ÿÄ ˆ¤ endstream endobj 39 0 obj <>/ExtGState<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/MediaBox[ 0 0 612 792] /Contents 40 0 R/Group<>/Tabs/S/StructParents 16>> endobj 40 0 obj <> stream xœ¥[moÛ8þ^ ÿØ/uw7*E‰z)Ši·=lº½Ä àÜÅVlá+'Ë—æ¿CÊŠ¨X#Ž5œ„Ùg8œy†´ÙûìãÇ÷ç§ßÆŒúÄ>OÙçéÑ›÷—E÷ÙôæèË8üs™äŽÏB?vÜ€MoaЗË-·Go8[êŸ\¾ÿñËÑvÌ.`‚ùlĺžwÿfÓ½9mJc­Ä•®#„©f6º^½c§ùÝC‘-W%û¶)Ób“”Y¾IÖìón›mÒí–'ó•z#‹»¼ÐgnKÑåKÏ BSüZl°³óSÆ ?¹†Ÿž¹†k—i›{§èž[OÑv ‚ à-‘Cë[ƒ}'2‡ÏF¿a#c'¨5ÇÇLj\äëAmìëdúÖìù¼Z’¼`ã¤L`ánnÒ‚1Ì !…Ãe{6\·Ç—î@§!ÒžMß»jºjÂubѱjý+ÑHÍFØÐÐw|á·[ýoØÓïƒ(r"8¶=˜gýP{–lF½Ò-èØÀ‰$fò'öhYî£z×ÜG×Ü/YóFJ­9c¹ñ陦Åm¦2Ýf‰ÁФÈ–9X…Å='ŒÃj¤H°ÎŠB%´Lçeº@fö8×AaXD@`È‚Ø2CêÙŸwé†Ýs¨>É ~ªQ“l¹+RæIïƒè{*&[J`"&bL „¶°|¢>QÁ öI#¥|òË\1ò¶ŽÊVKöjMoI\€W&®C“-‰ 5­U®Ú´‡z0¿ï‹[Ûóý‰®5¶7<"4<Âà%áÑHµ·ŒÞ/'óÿlòûuºXÞ¦›’um™@oÒ>0 $샄Žì¢]ý@){o ¶pÓRG¼vͨ÷A dGL¶ðC£úÙ:G]F/YôFªÝç—_Ø6½8ù~ùóg]Ìèþ-à\»Ã°† íBèfüÁÄÄ¢ätC-§›ÓÛb¹ÀkcùÀd[,cfXrú[NoyÞûæØþø@[̺ԗÄ7ã£I꺓Óº ïqÖ!(´  ‰ócz"¤oc¬5{7ÆÐ’w§ñ¯wªu¸›-™»Ó^{â~nQÿZ£W Ä ÖºêwÇþè£[ îõzéŸÄÔÁ‡í±-‰1YÏzïÓ`½Æäý öŠë9nDšïʸ_Ï1d5©ÙèW8ÐF9.ÿýRÞ˲ØÍK “  •é^óâ6)y¢–Ç4x^¤jXF‰W´É’±t8‰ˆ»(—QPÏA=4Df# Öýù­5Z³pî´Žö=ûeúß]º™§ìj4žL¯Þ±o›¬ÌèâÙõûšoKÌ«2Tg­&ŠWQÊ.úÇ´ÃV”J ’ñ°ÓVS„`¿@iš”*ùÓ݈ÌF:滜^üu:ýëâlÌ&ßÎþ€×?/ÎO¦—Øæç‘Êà¦r ”LH $‰´vK á0GL¶,aÛÝõ6-Y~S!˶e‘]ïÔ6Õ;O6‰ò†×•ŽÛJAìùñùÕ»þÛÅKhy‘P¡†z©/óU¦N!ýÞÙݦE•¨Òu~ÿÁ²C åh“P$}R¡xRäwQžO"ûÑÊãCõòÜAº ‘}žr\ã´tœßoÖy‚ûº@¥ ¥˜z)ÐBáCÅy²¦ÿ~-~:n<Ì †ˆ…q*Fƒh°‘}¢•‹Ê\WhïZÔá  üxˆÂP·xv…ýMMňéj÷­ U­E½d# ¨÷"WåÂ>õXåò¹$!ü=”gøA48tÕÿ|˹ðÞ2õnÌ9wEõž»<€ÿ.÷ùþ¯üþí×ÕãoѶ°ö‘a )ÊE|«3áAH‘êT£~ºÞc‘ >í©˜Ed͘ööcóŸ›â?”‡ùð:ØÜDP5]xL'û½÷&ÙO(º?’"²’ê7»Í\}`Ë. ÈT“FCÊ!Eù—<.Æ, …´ê):… Ý–úýé*Ù¨kÀI¶Æ¡~SµKÐ ­¡QÚ¦EI\SÃ@ R”Cù@Ɔ"mDÒ?ÒͲ\=ßi9wZ1úâè5 ¤ Ey–„-Æ‘LJ‰îÖ@-Ñdeu‰¶¨³–hºÂ}‰¶*$•h²ÚºDÕK4Y}€˜zL,vUkt¨§?nQnïCùèŒ[K ‰#}ncˆ÷]Ç ¡‹ƒÝÆÑV¤&òt¥Q¬×¢ 'Oèp"«^¨ ·#6´(bˆÆý'ZZkÖ6x[ý]ØÕ–Y§Ž…f‚ŠäIΥܛð=™óx¬ÞÍßN¦Æ'Ó“&·ÇeØDÙhËæc_ΘàY=v¼ë+T8Ó&ÊçÆÐ^Òƒ~Tvr2¸fNŸç|Ï˹*¿·äzFWÛö™EiØ÷[§¦sßÌY]f ¥¸ ía>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/MediaBox[ 0 0 612 792] /Contents 42 0 R/Group<>/Tabs/S/StructParents 17>> endobj 42 0 obj <> stream xœ½\[o·~7àÿÀ‡QpÚ —ÜëAQ ±âÖEì^â@>ª¼¶È’« ÒøÇw¸ËõÎZ;äPn"#Ž"íð›™r¾.#Þü*¾ÿþÍùÉÙXÈ~ïÆ'âÝåñÑ›ÓX‘LÄåÍñQ,$üÄ"•Q"ò¤ŒâL\ÞIqk~ýx|$¾“‘Tpõl2âõÿÄåÏÇGïa3V+žI,<]N®^‹“ÕÃçõüön+ΖÛj½œnç«åt!Þí6óeµÙˆóéìμƒ+׫uý½ˆË2D÷" “8TŽaáãZI$ ÞŸŸ#G<³]Ö>©Õw¡È!tÜÁvi´ÿuqÂwí‹%ÜoÇ**”ŽÌÒ( ÌÁ@'¬JU$ÓX•fQ‘²a=ð:‡Ñòx]ÄQ–;á©à—ésIFðk2rU•*,r;‘ÉèQüõJJU¾æÝXJ«æ½Œeb™Hm?y ?öÇõw¾ñ¸)È04! …À5´1†¶¯G´Bá÷Ô'Oßx E 2 MIC¥Žò"ÌÐNÄúq»ÞͶ˜òËCµlÍ:ÿU]‹_§ëé}K:5¯’ŽÛ/¥†è!sGžRu õãE+[¿6Z]úy"U«:ðØJçQ–z!)éB™%ñ`8­Š08­5Îh§±Ì"™÷ãÄ]äIrþ¤=ÈÔNŠN¸¡¼©”iª¤>•–Ú2S¹Lš-àe?ײ¦Æ³W§—ÿ¿½|ëà»ÖV¤'§ª%ËÚ Êãdˆð² î„1õJáCĸw…Ï`¤'Ç`²Ïùƒ%6x<ÝNÅÅjÛšó{5[­¯ÅÇùÿ+CÕÌ_¢!Å”qRÖI»¨ÄÅ}Ô2é àÑ~ßÈ ße^å¢>Ô5O²Æ3'«û‡uµÙ4<üQüTM¯«u맫ч³ó³ üÅ£¸Y­kžËˆ…NM޹d±—A~9ØÜ'Ù¡Èÿôfai®ùYAzK±5äÂßMÃZÇùÕë>ö£øïÍ:jbÔëÑç:¸=JV•Y¬£x¨"isÍ„;)wW£õ=Bá‘aµxL°elЖQ0@=Œ‚ Ù2 ¤‡Qðá,£8 ®el¸–Qøêa|D;-p`º§Ý w ²êNË4’aÅ(™ŒNç·»uއû7ÙîÉ™¾ŽY–Ç«OËÅjz ÷§9¬jïv77°h›«NÓÚ™žKÓÅ8]­ï§[wg›ÄYrÈB=-²Na÷dÕ”BõU†5æ±CE2ÎXk(v'2e‘ŽÌâÝtáÌÝúσ¹Wäâ”Bµ×Cå¨OòÇ45k2k[„¤d)p»"¬éŠE½Á»ô7½>˜íµøà|¹&°É5~@whz-|XÛkáÂú–ç¦×‡·½¼gõÙƒr‡.ɘS Þy`ä¶OÛ":`[$–O{#Œm¤ÇL’)§À¸Ó4ÌÎNd`[„ ç$®ãË:¯·óek¸eÖ}ÈlŽÿH^œBr õ_'ÂÞmo„`9–’t'Ê” UK;‘wB~¬¶ü{ŠäXJ“2 v¡–v"/Þ ¡¬Ì€Æå}$ÇÕvåE¦4>ñ9±7¼Ó$qK€ê8ÈX„‘õ fÖçƒÙ¬ïƒóeýÀ&ëû9YŸk³>–—õùð6öHxwñ·ãŽ[²XH àŒ[ÏÌ, ¸g=q‡Òm ",^ +Ç»#q‘<ÃZ”uàz@Ý]>œír0l¤€P!ˆ¶?Û»gî'hÈ:/Éó(.aC“ ÝÄîBÀ.‚µ éÄy<ˆ¬“¬x¡qݮގ5éÄ1Ž,O“´4Í × 0´kP7½Ù-kÒ‰cYÀ$ðû…ÆIlÕøçõ÷[ãdqdÙ’@ùSÑn¶qÝ®6?¯ÕnC:qŒ#kŠŠÚ8ªƒžÔ"Yw½ÜúañòаrayˆjóÔ“‡ØpmòÛèÉClÄ6vðms‡ Y %Pé,ê®ÉÒ'ª+}H×ÖÑ^Û²ßMöQ<¦·ñ¬¡fé ±æ]¿Àx9\RC äa5á<éJ ¤&ÊÙìN¤m<'ûwÐn Íð«×ÔÌ2³ŠUáØDò „æIA÷dº×À’°ž™Œ.ïæ1]4çªÆ;(¨oêö\²39òÓ|[» GŽÇçâ·]µþ ®{X|óåõ|Cl¨^fªM=„õå8¤8EÖ¤B"“Ñt *ÿ±Ú-¯Åb~?ߊÛu55]©í|¥dRˆ?>ƒ9be>ªÄÆ<Ѹcµ¬?Ÿ^ŠÕC}ÈcNZ­KSÎae9V“AÃo¶–!‘ÉhóPÍæ`ŵ˜.ëûÚZMæ*ÒãÉA5OTaÖ¬+Çh’;è$îÐÝc‰DCÚTkaôofÿ†f9‹Î׿ lú7~@Nÿ†kÓ&–׿áÃÛþ Þ½k³å]’¿h¥ƒC·9è8Kؾ Vc)IRt „?0Éw"_á< Vc)M¥€Ž•i»qn±¸«ŽÞ(ÿÌn ¶…sȇäx¦Ðt ù »1XAŽ¥$óSE½¶YÚ‰|…ƒ)XAŽ¥$?UÀqC-E"Œ¼K 0ó.Ìæ]œ/ï6y×ÈÉ»|X›w¹°¼¼Ë‡o‚wï›ìã¸ã–,/Ô)ùàã¶ÎXì¤\×Ú3,½«}‘b…X‘ðn[¬lÐ6X îÆÒ6¶|”tói\óépö1R>œ}Œ”áPÏŒà#6‘öcØ9{È2UA½;<{œí^éð—>˜‚õä,d‰ªàwFo³ú ~þÒS°žƒÉzZ™gŸ6¸öL¡¦cs¡7>Ã~0›Äñ Y°™•,¡÷=¾é„¿øÑ¬(Çb²pSPnq'üÒÓ)XÖñBñ—OÙ×ÂíV²JTPnêÁíN' é¤XT0 Y «Æ,Ø -³`€z˜²eH³àÃYfq\Ë,Øp-³ð;ÔÃ,øˆv^àÀtÿ×t@¦Ü1Èê;uTXMŠDº Ád`Cð8sb½…µäüod ¹9DÁqYÅy±v3’ÆYÉ‚dY1еrðÀÞ!/Êý¥JÖdtv1þæôìÃûzýßl×Õô^@­I5€Ubj^¬-qÿ¥|Pƒ endstream endobj 43 0 obj <>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/MediaBox[ 0 0 612 792] /Contents 44 0 R/Group<>/Tabs/S/StructParents 18>> endobj 44 0 obj <> stream xœ­[moÛ8þ ÿßìÅݪ$Eêå°X Iên×4hs¸¼÷Ak+‰±Ž•e´òão¨“Š=âp³8–‡Ï<Ã!ç‰eonØO?½ùxùáŠñŸfW—ìâöüìÍL°,âŠÝÞŸ ÆáG0Í#ÅR•G"a·çgœÝ›_ïÏÏØ<â¾½˜OÙ©×ÿc·ÿ‹ó¾Y=m«æ:y®#Ké8JR >nv Ø»—Œ9ANP^Ä7ñi|B¢CÄ¢b@„AÂ&ïcZŠ(—aÐÖd>M¢8’‘Æ'–ÇÍĺ6ŸžÊ »ÛVì#Ì_q_b¦™ñgà!©B™ i]B£C™4 –5™O;¾;vWmYýP²_¶»šÕÛæýÍ%+ª’íÊMÍŠ[Ý™O¿³¯%|X°eQìnµ.#ÆþóPn°ä–*ÊÒ§„ %ã$W¡Œ“ùô±gl˜ÝoW›{Ãö·Ž¥am(±Õþ\Ý­ÊŠMf·ÿhvŠ «Ê§u±cóÙÕÛÛ·¶By·‹Úõ—À;Eyg:J’0ÞÖd>5Ì>ݼ»ìË]ÁîÅŠß¶UÍv«zßlR»†!¶Úµ1ùºª¶ûâRAj`l¹nغ‹õv×Ä÷[PJg‘XQb”¡1J“àY“ùÔf4ºwdfpqþ樿IiÒF-8:„P‡íÔ®Iëþß°/ÃÒÅ~ì_žX‘Ál‡™ôÂဠdQ` ¤ŽÂJ-#®`¥N¢L“a=ð1ä"l¯tø8ÍJ÷¬ñ#¨ñÔEuJzG…UzÇd>}fß&œËxÂÌ»+ιí{.xÿW¼»ÊßÂO÷¢¹ÆáŠ'FŽƒ¦¨œJgÊ]¦ýëÙQ®Ïìåëø“ÃSÄUo ¨À8ŒèÁÂðüRWû§gö [µR6«Ö13ê­ã?[}+—즨ŠÇĹùd¿Y´Åí3T¾U—I±D(AE^îä`a2[•ëeCís[¸›÷—ÅÆˆ˜«¿7Ÿ|1WA²@#òa³+«š8ñÖ= MTˆ&"ŽD ,³&†è¿ÊÍ}ýð2ÃËzý5î8HaŠ P®‚™:&”‚{ZpÉ`}ÁõÀy .°+¸^@RÁ%Ãö—‹VZã`˜ƒ±§6“=ísó3ËE$Oጧ8Úkè\Gü”ŽöÜ3ÉAÍËùˆÓ]ººX¤tEœ£Í¡ÈÔË1< YnrÜŠe^,MæÑádœF‰¦pÄK‚snVÓ`ÎÆÓm¿t–Œ§ÍÈ=™6ì­ºÓœk-y<㊋ynÞ-œžÝ÷a5˜Ø;NQÚ¬iXÌù©F‹ÌÎà*º—ump'×ΚãœD»H èëÈÙ ¹+ÓI_oëž’Ñ)ìú1êÚ5È3/9Ç' 9´ÏÐаd§Ô7™œÀ»Ü>>Uån×*ÉgöKY,AjÂ;s ±¡êŸ9Ç' 9´µÐУ¼ŽœàTZ~}³n„Ù3ûï]µë%çøD!‡vÚ’ã†ø;¼ù¢5ojQ8 ѪÐIÏŠ²«AãžDë+—Ÿ§Qñ)c§ka¨úPIØïãb¢°CEN¬D0;kB}°ô·‡ã…*‚âXF2¬t:&ÃÇùf{îÙ´÷€-»Ïå[•ûK^\÷?®\/‘‰û?‘‡ endstream endobj 45 0 obj <>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/MediaBox[ 0 0 612 792] /Contents 46 0 R/Group<>/Tabs/S/StructParents 19>> endobj 46 0 obj <> stream xœ­\moã6þ ÿ(Xmµ$E½Eæ­—Ãî¶·I?¹÷Ak+‰QÇrm§{ ôÇßè…ÖØÕCç\ÀÕn5|æ9ÏPrÅÛ_Ä÷ß¿}y{%ä?ˆ‹«Kqq~ööF‰<’FÜ?œŸ)!á%‘™"R©¸>?“â±ùúéüL|'#©áîÙt"Ä×ÿ÷ÿ:?»†qš±¬y*±ñtòÛäò·¯Åe½þ²Y<>íÄíjWmVånQ¯Ê¥¸xÙ.VÕv+Þ—³§æ îܬëMûß…*Š$í‡@‹ éìÑu¿QÉÑýð×-d ®ß_ b¦PÌŽÂ$Ûðu¸®!49D¬ììø"“Îûo¨›M”SßÙa«$¤†SJG¹öÂÑ€i¥A€ÐHXkGi§U™„Á†Ìe”AæÉ±ÇÔÂÅ8;g–Æd–j:,K“éä/ñß7Kø¼ÍÕ•4©Lºë4–iwµê?ð'O83 R†$ Jj0iHÙÏpå¸öBÎ0H%$)GYFj0iHÝ݈eµŠÀù«rWЇzÓùXÍêÍ_qH!g¤RŠTZ˜PRȤ!u»š-£vF~ªvûÙùðòü©Úà+ŠOª>ƒ:ÊL¿Ð±Û}O¼Çw…*#CÕŒ”†…j0iB“/–ó£DþgUλP ~Rcg󟓤²4˜2aIY$ù`}‘ôÁùŠd`W$Oä×I>\_$ýü|E2²Ï5 ’2m©Çpœ)Z)šfQ2¦ãì‡p£€xés‡Ï6Ý/ÝÆó&[’Â¥ÒGÙÂÞg‚ÀŠ"Ò'sÓF·‰Ê†Ó&kóÅçeÊ„aƪ8Âôu*’ÌÏ$wç'™¡6é†:=w)sÙk8Õý{Ÿ7G‚,–ò‹ÓŠ‘½X =Ssl‚ÃcÚn\í1"¿8ÉN15òµ%&ت»–ÎEõ¸X ü7ûKADl2RhVâ×ðÛÛ7ô>Ô;qY?“[›j7²sÝ·Žºh#÷—xW­wOÁ)rì…;€dC“jýºîíNëMµÝV¼¬çUÃi½|ÙŠ$˜Ýà‡ÙÙ¤ EÔXàb–›öFdëî›m$¯ÂŽ;Ç­°|¸¾Â:à(KÅ¡¥KhôŘïW_ŒO ƒ-Æl8[Œ=pœbÌÆ´éŒèNeºŸ•†;Ùè% _eXO„L¦“›Åã˦qmñ¯ëe]λ]ìâåá½»Ýæe¶ƒ;æâfQA;xSožË;6Ø'ÎZ'¾$OOÝcŠ<e_„¬b†ÿšT[ (¶PìÁd:I£8ÒQu¸þ¼:ž÷ÄФ J@™åš3šÔ, ˆŸ<ìˆ ›0wÙ¸óÁú}ÞçkÜ»ÆÝèßWù ý¾ê¥,3ulÉÉ>R & *³Àı]"¥üqÞœ©¾G‘J&:)çÌ6 {8THY–€¼K’0.ƒ çœÙ¥Â,ä‡ )Ãs{×( IiÞ Ùá¾CU}wc©Þ®¶Õf×]ßTÕüS9ûGÍ¡M–ìʾ×^ƒIÃfè >V¼TÛ@×ÕœÅ9ÁaC‹ ¡l“ÿWJ"'8lHµ`@vÄ*ˆ 6aTYeø`}•ñÁùªL`Weü€þ*Ãí知̠YÊÇpÜiC D"s4m %²ux\Ä0‡@îÈô§Á„gÞÙ7ª}6œ2i;û8G›ØJN> –¦]§ñ³yÇKt$œû±BX!Ûep·8ŽÃàâ8çÀ¹0ŠY¦Q@1;L~÷ d‡d²,R}XåYQƒuSŒÈí7nÓß|ôB&MwýÊÓlÄŠó¾Ù|™4Mxk­>ù€ÛrF®r8“Í¢IŠHŽi~çÁúP;¶ó®®Å+μ-gä*‡3Ùæø~ g‰9 ëåî œÚ´â¬ÝvêàÜ{ŒìÛ¯Ç9ž|j¾ŸƒcŸÝs@ögú¼b¬?ãÍÁ`M¯µWŸ¥[ÎÈUg²‹3М)\ttC÷€ âiŸqϸڇ gµΫ}Ø€VûœÆÏ®%>\¯}œpíÃëµÏiܬöaÃYíã;¿öacÚˆóß½øÈ³£¡Ë‹Yc¼Q±ƒÝó&Ãñ2‡>ÐyÛ›!¯8ûÝÒÃbÉx“ìïbh³°clÂyµ””·1HädL¿9°û@I!ÞCå(«Àùè{e쇩Gc¶{çÜcú.¡hÂÎt‘ÉtÒGb+¶Õj'6õ³Ø=Uâ©ÞîÄSùgÕþi[>Ã׫‡6Vm¬D¹=Ìuj©'q³7`9Á#E^ jÑ„#“é¤[‘Ûoŧà«vÑüˆ4Eslœžm`>U³òeÛâ p^.ëÏ¢\‰zݼÒYoö7FâÈ_qRYÅð‡mRÈd:¹‡ í§®~%µQ¹KæÁˆGkhÉôƒBDÅ~GõŠŠOlšŒÀ´8ñ!UX ¢%4>ƒÉt²n6†XRÓÙ+*ŒÂq—¬[q¬#ÍÚ” Y·bÛ1Ø”“é䮪ìiߊ¯®7Héý¦P®æ­¸Þ~ó'ºÈ¤mÖ7ÛÂ~‰|~ZÌžÄ VE¹^Wåfž\ íòÇs¢G–´æ…X“餡1oòv€²[¶6ïwTBôé°'Jt……*]dœ„HÈJÙ¼‡[„UlÂù­YÕtÞVÉ ìÁd_¥Uvðãì÷UýyYÍ«g(Qî>csHeUCiÎYŠ4!+”†R—…mDØ„ñ…@`>AáƒõOP|p¾'(€Ý ™ ­lþ;šç…|dà}ß ß»øü`ôã{î”$µƒš’ƒÉþ€ tÔ{úOΰ3œÅJV| ßiXùC&üÃ\÷iÒžÕà ‡) tsøÈj0¡õŸô£3ì ‡)U4ÈV°‘Éáì‡FÅ.ûÙ¿ýêŒÃ 9ÃaEÊ z&”Õ`r˜«õòK}ð1÷ióÁx¾cV»øðK½]ìVäi„iξ0UNÌH£A0Å™pÊã8·<²ÁlyôÀyË#°/§ñ³åŽ gkž—Ÿ·æñ!û:ø~æJka™pÇ 5­*ÒFã‡ä*2Ù «ÚÓ±Wœ_“jWåYsìÎ ©vU–GaÕ Yp¼'EJ‹Pä½Åtrùîç»kññúß¿^ßÝSëMëf½! ŽÃ¤^Q | Ö›ê)©|3Ç kqóx'{Ûý¤•«ÝOÖtrûáê7·ï®Ûµ}vU> h@éÿÃHwD„ý%&àhÈìE endstream endobj 47 0 obj <>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/MediaBox[ 0 0 612 792] /Contents 48 0 R/Group<>/Tabs/S/StructParents 20>> endobj 48 0 obj <> stream xœµ[mOÛHþŽÄØoMuªë}ñÚ–ªJ4„¶wW¨º/é}HÁ…èBÂ9¦-§þø;6;n=ÙYhƒYàgŸgfvgž¼ ž¿/^<7~{(â—/ūñxu¶¿÷üHŠ,Š8û´¿'E ?R$qdDjòHZqv½¿‹ËúéõþžxG±‚»Ïg#1ôxú·8û}oK×Ëw+ÊDFJá5g££ñ‡§b¼¾¹+—W•x»ªŠr5¯ëÕ|)^Ýn«b³ïæçWõÜYÞ¬ËæïBæy\&Ñ‘M1üºŒbòn,JŠDIù.q“ŸFóÎ%¹„–ÝýظÙªÿºÙDÅð¬{Pe‰¡ö*€LJeÊKGÚ$²A„)$°ðA“EP2ÊUXd6ú&¾>‰ã8y"ê«ÃØ@.àÚ£‘26¡!ÅCÞCÅ;H-¾{|C‡Õ'‘2Ä'¤øXGi&ÞAjñÓ£Nüx¹Þ,ñˆ”!ÞRâmnBÅ#H-þÏbuY]ÕâO‹o‹MåIâSR|Ç͆‰wnLÊŸ‘âS,A]“``vM>YÛ5HÈ{ÓºCú¤yl€¶¶hXÛÎzåd½l%¬-cr$ëÖ`×ÜAf££ÅåmY##ѶŠîÌM«òö¼‚?^ˆ£E±„çuy=¯ˆuØ •ôäp<i",˜£X¹!]„5q·;7ÂÑOO óW‡Qß#f#éHERu598ÿgµþ²,..‹ëbEÖŽY–`jNäµJÝ Ú½9Ȭԑ œÂéHà ܎Ä&ë:’‡ÎÛfø„m›q_艛à*8È‘‹s¯‘äœmHŽä:K6Õä#“rÔ“39Él°zy •äõä„J`ÈåaÓA¾÷r7Ë;–zDÊP¯ÈÙ˜À| Uï Ã;‡|¹në~ÒƒÓ7o{–·Ó—˜Þê;sBÎÕt61„Ñ‘ fG擵ÙGçëÈ„mÀWÒ™$àn˜k#«’†òá|ŸŠèÿ´Ö‘M°(ÎÑ%½G&IX "ÍGþ…¹9:¿&ÌÇa'ôàƒ Êí ³ÑäôôäTœN¦ïOާjS«´~ŸsqD“óÎÀàÔ’•trê_íÜÀ1„Ñ£f⓵=ÊGçëQ„ÛõÀø”l1ŸNÉ,2Éƒé¬ ¤³ö;:ß{›¤70iɹ  aœ+ÏL³¦àtÒëjðË)ËËÒËhðCIØäÇF§"žõT3ЪnW|F©mÝ®Xœ;ÔN3ºþ¨‚/H›¬–à+iÒ4¸½ÐR9H=.»±ßšÎÁtS׃r]tHçƒwÒµi°&Ìã`g73íF6c·9œÙlA]½ÀW*ÒŽjðµ&Ìâ H½ãXˆ“›bÕº¶XÞÿâh¾X™|=/nšo ùÞBÕ2o vÞß&Űû]Ô.q=‚‰#]¯†g6s»Þ.qªNÜAY.>Ï—bZŸñÕy!Ž×•8¨0d’yŒ‘2Î1&í¯628DÑÆuˆãõõõ|u!¦w«jþõþXP§BÊ8!’îKC/Pa>C8j˜!¨S±»NÅá|L§b êêå¾R‘&W+\*©w#ôJñvµ)Ê*ìÀ‘ïw7¯9°®÷âPözª<‰Ã÷îNé…µÃh8dàëIÛâÛ/–6»­®Öåâ?×¥8Ç)ãcÚBƒÏ ‡ƒüÒN…”q¾H:üúÛ5!b£S !ŠÏØv*ç#:_P[/ð•Štø ^%daž AšN•hH•ß–Ør?Í`eœÝH:|/²!Õ»3‰ïÎ:î>œ´_w21!'¤…V`ÃÓ0›„!œ“9Ìt2ÙŒÝÉäp>æd²uõr_©HÓ®Àø‡–ÊAš“i…x]TÝnüy')ãìFÒ´+x¶a6 AœjB¬c~?ßTb§nýIÁK»Ð‡”qB$M»÷¢ƒüÒž‚”qB$Í®‚SkÂ<†pzÊ0CPOa3v=…Ãù˜žÂÔÕË|¥"íµ‹Z*izŠî‹}?s7"eœÝHÚk>]zOáìÆa† ÝÈfìv#‡ó1»‘-¨«—øþó†~™'Ü5Hÿ*s[ë)7†lc=ÚUn‚¡ýBšŽ`oo7üi±¹YÃKöæííÍîÿ~Ô°;~ÒÜʬùB'‡¤)”i…(„à¨'=Ž´y(ó=¢þ·#ÄáÁÙŸÿ59¾=9žŠƒãC1~3ÿ1Ýý-âæÄ@š n(g}åÝ’.AÂ3s r K˜çYØW·d6Òñ÷-ûa‚ÎÀa·iO%‘öÿŒì † endstream endobj 49 0 obj <>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/MediaBox[ 0 0 612 792] /Contents 50 0 R/Group<>/Tabs/S/StructParents 21>> endobj 50 0 obj <> stream xœYÛnÛH}7à臖x^š” pdgGƒÄš],˜}h“-‹Šdx±£ùú­jRbÓvIÍMÙ±YÝuêrêt“½ûÌ~ýõÝÇåê†9¿ýÆÞß,ÙûõåÅ».›ÛgëÍå…Ëøë²À±9›ñ…í†l½»¼pØ#~üýò‚ýâØŽOÇ‘ÅØÏÿaë?./na\ë`:ºqd}µ–_fË¢ÜWéã¶a«¼‘U.š´ÈEÆÞ·ušËºfE¼Åïàɪ,*õ{æ.͆?Ä–Ü lo¦o ?VNjìöã’1-®ˆØåþÉ%\ïm·_-K8¾=›OKé`YŠŠ5•Èë]ZרWͶ*ÚÇ-|•¬Ž+)s–îÄ£díf#+öœ6[†ÁM}¹“ysÅÒ\T{–ˆFP}È!³³‘»‘ )Øá‚O…­™DÖ®­¶I+ø|,.ò'Y52aiÞL°º©Òü‘–¤u™‰½xÈà±­¨D Uñ¬á¹8.ve–Ö­´¦‡>2î±ò‰K0œ†|0‰¬+¦úJåØ BV{Dø6Œ¦I¶f¢’‚§4‘ ±¾ï«ÔÝz ol ÚÀ¡ð½ ÔdScÚ’ÁÁ™ðžÜÿUxçdxgáäð&^-zÄf7o– m¼-jh0ÀΛt³W9‰‹DªFK±åäšÇÈ$òpfÓæ’fY‡¤]1‘'ð‰$IûQ~„ÝAÓñbŒŽ ǾÚjýx¹æ±ÉPwHèÁ|2ôÁ$²÷3¤ØAÚ² Ô)p ”ïÚ1 ăêg¡ÚI_þP1›"ËŠg`©‡½ÎQT` >a3 )}BP|šxÐL°3’QýoŠ®ê¡ÒE3„«…`eS™Áoð âñ¡3È5‡M“Š-äÎtä΀<&Èã¢Eu«fŒjò6ÆN—KUýðð@Ñ0·r'Y%ë6:L´ ›sÛ™¼5MªÅT§? õÑ"²ž ®à-ó(yZÏñô]NK=ÄÒÜ#¼‚b¢Ì¼™íMÙÆ÷^¸¥mã2ù£±„©éÓˆ½ßQt%ðyQcWâoŽ¥\·ñ¶«nUïgHí¥£§³GjËÐó¦fïhYYúMf{$jQ–RT@æÿ1öüHQv+öÕJmiþ¬ÜŠÙ¤ñ+¶¯áˆ×uø™v6N*âŽîDi8˜DÖ!©BÇ9Ý纻!­XÛ;Ì,rr¥†š]ÇBG¯HØ"ÖÝ5ÁMKb‡OÆ=˜t¸AŽ4lýE•óúËšíÄõq[´¥ Ðn»îŽòT¤0ð¡þ‰M ¾Ö± ó Šq6ò×8©ˆƒE`;Ó$›fY0¤5ešFô½Lœ&uf0N¯A*¶”ßbšlÑL" ¥V£d)õ7P¤‰ç<&Åsž"©¯Æ„ÖK™ÊÆU-+œª]¥ëîÄÎ#åZºo*îÁdPªXÒÏÛZX°'‘µRiDÚ K12mžôúô;%Þ!Õ7{³Óü¯ƒ3‰©× Õù4Õ¢™DrÀ±á32åeXŸ«´iº3 >]´MÙ6ýe„ëfÅé«9ÝOÀ¤L @ïM<˜DVÝ>Ôò{‹Cîño5»}¿¼Y-ûBPd­"P$òGwg fb×LPUE•ú3í ¹k‚›Ôi¾ÙDØ‹ÈZmTÞzx=Çw8j–‰÷oÚÞç.êÔ©ÿm_ÿ’•ªžþ p 5úâ{3Þà¤|¦’4XÍ¡—O‹ŽWþŸÎ©¶PmA0- ƒ Žg³>!P†Õƒ€Á¹:DG²\þh†Á¹A"+äJâófŸ+Ìš¯& I¥€b› z0!ŠšmÅ“ÄnRˆ{¤øßª‚ n¡ÓŠ8n«Jáü”Çr(‹iŸ­ùjš”Y>Ÿ&¬5-Ó˜¾DÂ7»4—‰–áãxRÍ6ÀAÐgÑ!ìSuNÜ•@Á§e–îoœ¼Ué[B÷öthIÚnj¨Œb‰®¬YYɧ´hk¦µKß/{5Œ"]‹æñÑ3cWóؤ>HaÇA!úî$èšIdÉïÅ`êæ8[uäÇË‘7 ét¾u‡M“r”ƒ¤Š|0‰¬±ª|¿û _£¢âF\öA¨š‡&ïÑHÊg3Û]˜ôˆOê3Îk‡k0éÞÜ´eF<½€æ÷øØbPòeUÄøfâ -ÇE®ÿRÌKÉüJÆÅcžþ…\%2jß¾tp&‘&Ex©5)JƒÉÛ¢®îß)Çé[ˆÕõüñ‚®íouN\¾)Q§»k‚›u>'ãvÜ/©SÍZÈñµ¦®Ä7È÷¦*vz‡¡ìßá¥OrQopŽF4‡M“RŠƒ$[LSšIdmE§:âá9ž5øØßp6,“›FÁý¼½…¨û[Žëûåj¥bV³2 CðLgdYÊ|úF¹ådùÜ5]ƒ¬Sß÷lÏ,·dúžoºY§¾ËmÇ,·tB­/Þš7ÿ×’(8&_Û+²Vw7?}Xýã–݈FôWîð Å£Ç1«{KPÍÿ¯(â endstream endobj 51 0 obj <>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/MediaBox[ 0 0 612 792] /Contents 52 0 R/Group<>/Tabs/S/StructParents 22>> endobj 52 0 obj <> stream xœ½œooܸ‡ßðwà»:-N)’¢Ðë«]ùâkÓ¤÷¯Ý®ë$¾^ìÀö(p¾äˆKή=ÒP-ìŽ&ÖhæR£imÄñ;ñõ×ÇoÖ§Qóè7kÑŸŸHáªZ‹³‡RÔþ¦®´huWI+Î>Ôâcøöíáøª®jåϾ:?Ï}½ú»8ûîð`ð——ß^QY)…¯y~tq´¾x%Öw_þsóñÓ£8½}¼¾¿½|¼¹»½üQô?=ÜÜ^?<ˆ7—WŸÂ‘?óþËÝ=ü\È®3K›¦²-ŽåÿFbx³E¢¢ìÕ¡†ú@Γ—Pä%¹½Än [︌ÙÿŠ:YWŽŠðUú¢ÆEªÊ©‚hR¶•UËãY³ï>¯õ\OIWiSO©¦Rfy¼Vî»ÏÄkmU/×(½ï>¯Q®rÿC<Ÿ®kKâ9 7cv˜¹‰ò&R²êTÙM”]Î~bè×›SήޯOOE8|{özøÞŸŸœ ^¿}&ÆÃFµ:Î0¢ G“ þž,E.œnñ|v·`GÛv‹¥ñb·àÇ‹Ýb"åÙé=Ïéó·…Ú¶±,,Ŷ±ðãÅÆ²0Þ¶±°ãmËÒx±±ðãÅ›ØäýfÈû­nªÖ•ÝoÙ%4–_‹‹#3÷ÃÅ«ŸÅo¼ÑÇRã—á'ëãþ$¿?ÙKŒ‹£±CsY¿ÝxçùƒRe´K![?Û ‘± £Å¸-†-¶˜ÅñÆSol1KãžÁûÆâxcß(ˆ7ö¥ñbßàÇ‹}cq¼±oÄï$ä0sµäMäüÔ±e7Qv }ãý;ßt 7þh¨hL¬¤\gžld¶t¨í\ÝMzâ|­öΟIMé&ç‚Ôâ´ÞOM×àe<œ™O’œ Žœ ~–N†ì’_Q§¶_:ïFxš)vpâ)ùe·'ÙJ„é'ÓŒ»8ªkd¬’±–©ª+^U's}RÕŽ¬ªm+S¶pF.¡ª} Y«‘ ­00¦_%c­2°d£D9› 5Il\1qv Äk nF0tƒ‰1þ°JÄM&V,b”(‡˜Ü_±º ý©ˆ8»ÄŽ$RöŒC ¬®áÑ…/>y~|ÔQÉÌÔasêGn.Y]—ׯÆ)o`Æèq*€¡5ž1xú }š1:Ϙ†G\“;¶‘USœ<ï¼fCÌ‹á‡uâ5™W³xsš\r?À*UŠ›<î àÚ‘ m1.f6 ×f\ÃÂÍirpÉ嘕M% ×&Ù% ÀíH†n·X¤ªÒ°ì@±§Ÿ±[ö|²¾ª¸ÄÃªÚæªZVU'3zZVzÉWëâ²f—%möÉá )JCJêrÓ™ª.“bÈ%¾† äÆAC;|Ç´xlOÒØº<¶-‡'Ê!&ŧq¶˜8»âS îF0t‡‰1þua—‰‹%Ê!&…¡ñ³+“IÈ%P6Qñ¡W˜ãInîXÄ(Q±"…¡ñ ³”8»âßq”`ècüU26H ¯XÄ(Q1) W˜®LØ —èX8A))áŒ×‚¥¤Ù%þÆ6 50ô-èÓ ë½Ëûi€Ö=«8ˆ‰SRí/ÛÂÚl=Bîo 4QÓ¡7¸4¸N«dlº]óxSš\Rí¯)ãÍ.ø÷UzÀÀ˜~•Œ ’·0J”CL >ã…c)qv Äo8*.0ô &Æø«dlÂXÄ(Q1©ÅŒuºLÒ#—ç;ùâ…âª]wúäq3|6ÖÒ~‰°9õ£ž—Š¥õË.é̘¨ãÀ0xë«ÆÓg•Œ Rï',b”(‡˜TxÚKÅF#—@ü Ž: ƒ÷¾$Æï“±Éš¶¯9Ä8Q1©ð´—Š¥ÄÙ%ÄQÇaðÞ—Äø}VxYÓörêΊ¿yÀyŽÀsÂYN¿ AŠAݶ•ìÊŠ“]àW kc=À0x›GâJõɲìY»„8QÆthH1¨­+&Î./ q‚RR jÓUu™àA.ô Æ6'oiI<Ð}2†¬ðzÖ~N”CL*<í¿טø@!Á0xWKbüÞ”øµÌì^|N)ïeâ똕cÏÚ'Äøœ:’ÒQ{ Ú• )ä²ÿÔ1– ƒ÷±$.jŸŒ!KÇžµUˆå“ÒQ{ ZJœ]ñŸ8B‚aðîŽÄø}2†,{Ö6N”CLJGí5¨+“>Èå%ú JCJŠ<íÕb)iv ¤±Ã †¡„¯¶áW;þxËKâ9Ñ'cÈz°gíøa&Nqh=è…e[¨Ž²K(Î_¡8 ƒ·¼$Æï“1 =ÈÚñÉrˆI=ØxaYHŒ\ñ߀8B‚að–—Äø}2¤Y;~8QÎk ¤Èk¼P4e’¹âˀ⢴Ã&{{÷x-¯KŠßåNW ZýÚ¶RínÀ9©ŒXRy÷ê“U$…cãhi³Ë 4Lœ g¾Â±ñ T—É(äHÿS!ª}0l^ ®é÷p¬÷ÈÄ'Bâk/?eóű^ÜxšìtõIÛx5¬Ë¤r Ù_Aõ£Ã6ÏUÿâhú–ˢݱd8M/)6ÿ½){<#—ÀûOàÒ « ^jÞÀعnÚévY‡;ÖzqJCªÒFËâÒd—Pšk(MØ`XC”&íX»¬ÂkÝÓäð’š´iT¥ ÍÙå%Z,JCJjÒ&¼Œ[Hš]éÙ¸ÃZbdÓּ˫ ÇZ_á49¼¤Ìl¤®ê‡gv ¼7*f0lKð¦y—eµc­®pš^ZdzµÚ>B³Kàý¼Q/ƒaÁ›¶•]ÕŽµŒÀi2x )1•ת…¼È%ðÞoTË`ØŽàÍ3KjÇZDà49¼¤T^Pº²‡4r)ëTÓÊ…sÙ™¢ NQHݨ¼--Jv ÙÿÆ·‹K 0ìª\7â°FDà~`-~`mq¼8füxãÖ–Æ‹âÇ‹X[/vh~¼ñkKãÅ·øùñâÖÇ÷ âÅ[);ÌÝEäòEùufí§rI†W—- ËùÑÉÍǟ֕›ËÇKñðx}ùY\ÝÝþûúþ!üçWŸ.ï}ãùþ’âîƒPd¿kdÓeÅi4ä @ù¥DÓrJdiU]î5H¥*;¸8× …tmøOW8× å‰l]Åšu–|âKÛUe­;{œ5Jü_¾ˆhÚ•¿»PŽÄôù/ÖÈÜ endstream endobj 53 0 obj <>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/MediaBox[ 0 0 612 792] /Contents 54 0 R/Group<>/Tabs/S/StructParents 23>> endobj 54 0 obj <> stream xœ½\moÛFþ ÿaQÜ‹zMî._{Ez±®>4I‘¸Êá@ËŒ-Ô‘½¤õá~üÍ.WÜ‘ä!gu@ÀÑHÎóÌîÎ>CŠ/ßÿòÕør"â~£ÉXŒ®ž?{9•¢ˆâD\}xþLŠþI‘ÆQ"ò¤Œd&®>>‹[óëïÏŸ‰oã(Vpô|6â뉫<vç1çÚ»g1vž ÞÆï¿ãÕÃãzq{·—Ëm½^VÛÅjYÝ‹Ñn³XÖ›xUÍïÌ+8rý°ZÛÏ…,Ë4þ‡™È4R9 o[ÈA\¼ !Q"ޏÇ6'~ç)y -÷§`' ¹4è¿¡N¢‚ŠðmûC8K©¢BD“22u~¼,=vCϧd%i@<¥t¤Òóãåòؽ'^žEñùñ´JŽÝ»ãiUDÅÿàyH¼BFÙCÏ"Òä"R2*UØ"ò.³Á…¸'—^ß//…yùæêÇ‹·p|ûRÙÄoÞ]‰æ¥Vyb^öpD'!‰Âš %Š\8ÕâéìjÁ޶¯çÆsÕ‚ÏU‹3ãí«;Þ¾ZxˆB[Ø¥Úƒ­§°ð¡¹Ârf*ö……o_XÎç ?ž[t8õë-%×[¬£¼[oÞÅ–¥ïe ÂF8#»hŒöǾ|?(&û÷Ë´}¿˜4/{˜"˜Œò’Qt³2 ¥‹\ Ý•¥›5L¬‘M ºmÊÌÓ½àÐÅ0ts’n5$ £ë] ÝK7o˜X# ºmÊÜÓ²è"˜ ºIÖQ(]ïbè~²t ä{xÊ/—Og¦l3VíûeÌÊ bÄÈLIf&Ë£4L„#«Hñ²‡(ÈiXb’iZ3õ.†éÚŽYÙŒ™5rõÔÀR{O¢Ì>Šq4„ÈÝ-ÉÍîFïÕì‹Gøan•~šIVöOÀvgŸì3è;“0ù†\ úIøÐ%ܹ~zYM†û÷‡ÊóU,¾&‡/ÙÜfIÎ7Æ|·–¯£hŠÕø ˜º¤4NAb§i_ïò%j>ÈaJjÞ´s(Sïb˜j;´®Ã³†Ö}…F¥ÝýQðîB#ËÄtx$ÚŽBÓ\÷?ÝL4Mj•Aš¼zkÙqˆ©ïc«=ÍG÷¨’Ê>…! ëí‹AŸØQu¬5t‚ÖètˆlûÉÔ÷²ŠÕËb Æ´¶‡&!”±w1ŒSËËõnÖÐ)f6AË ÆÈÅ0Î,/×½YCg˜ñ3n©ïß«Ã@9ŒI%ž€¤eì]žªÊTµI2Smœ»oz™žXg×zL›‘?Mêû$Ï#Y†åÏ»N¹®ÿµ†ÎñŒ™0&FÂR˜$ôŽPMU>bó×÷ãŠÕŸ‚íÎ?©ð“¬οw1è ›e×[C8ÿXF¥­1õ½³bõÎ(‡1)”“´Œâ0݈\ ãÒòr¥5t‰O1ãÖ˜ú.N•ôÑлÁ8Ù×p`J¬†ãðìy$åw¿ƒóã<þÑÞÊuEÜ ïnùˆ»rÞÊ¥ ÷¯ÜCBdc?ª¬û̧`»óOö ôe˜JF._ À9LÉ~ Æ"”©w1Lÿd—¢»ð` …UEŽUEÙiÜ2Ö1‹1ÊaLjåDw¦‘‹aüo»¶ÜÞ÷gËïŠ9næKjΧÊ|'çàÌ­_6ñŸõ̉“RV' ÏC“ã]LrÞ íÄqi,…7­oZek$žsÌú †ÊáL kPèy Ìô.–ó×v ì9[Kám+ÇÛVÙ)â ™:”»Or j+bò¡ŸÇ¼Q=AÞ=ª¤(×6ˆ@ã] •ðw÷ÿjGµ÷¢Ç>ÿ(8/ÿÚþü‚nòßâ̼¤ŠYWòN‘wçŸn Ó(%•wù{È`š’ ‚‚N#)r1Lÿ†›°†ž2gΚi$ÚÞ™vºãøæÊš»òw´F@˦~7)ºNà.Òžbí™=»'Ùg)hØŠ0 Ž]Ïö¸Ïöñ£¹gûÎŽ×lsñšgûηŸÑìxîÙ¾³ã¹iÊ×<°wn<÷À?ž{`ïìxnñã¹UäúVÙ»«<瞃솴Õy˜ÌG.³ÁëÕ¶þNü´ú­^‹yµ©EuÿpW‰ùê¦ÞˆÅ²}¬øÓ®ºYWË­¨ÖµX×›zý¹¾¡R”*›S³M‘M›‚î/”£w™ >¬€Ûj¹]¯îbQ÷ÍpœìÁüÎ$k€É®FA{”…i|ä2L·;²ÄüɉIµ­Äf»®«&!ŸëõÆüAŠù]µÞÂÖý`þSbõA(²в´õ¡â¤ˆlaôBIÉJ)˜M‰KÂ3váà'Å¢Õ©%”w™ `ÂEÐ&ßŽÅøÍ«Ÿ¹^]¾yMJ'·y  =Ò)OÍU ƒ´.3ø)Fã_®ÄðõD {öéÝ?_ìQN'T:"£µlœ>Mñô¤¬‘ef0… &rµ…Æä©Ún«ùÝ ±½«Åø®žÿ*Þí>ŠÏÕý®‹ ÔÙûùî¾ÚÖ7âúQTb½[.Ë[qñûü~·Y|®‰p P„­£ìýDÆæš+AëÍ[‹¿¤”{Z»s†ˆÜïda/I¥×»Ì×ÛÚìI&­¶”=¬Öö/ê@Å2ï}XWk(sWmÚ7vH¸ùðÞnq›Åïâz±Ý8’¸¶‰Fx9ÄÉMZæEV½Çl»íî~kw®QmÄænõÛRÀ66_/®á­Ýò˜ÙBÉâ«‹%jæ“Ù÷¦&'â]ýiW/çõ Š0¨.رÎS¾‡Ç—6AOòú©^ÞnïÈP™6_Dé ušZRȬ Mmë1TË¿@¿2Ë᡺­AÀ ¡HL{¢rГA‚Ò( VÑ"‚„ßeØ£mÈ¥)ZÃÍãr~·^-W»«^ëåö¸‚½˜÷8¿_ÌÅÛú&^µœ?6@×߸ªg]!Äœô‘âA‚ )žúB.³VÝ·‚ðùY·‚@PqÄÆ-Aq *ûÆL5“Û"VQ ’ &bµ¾·õ²^W[ÈòÃêþq¹ú¸¨îM©º©o×5ÌKÕT·žz}‚º;½¤®’/4½Þe6@û²u]C!î[](.‡)Î$h’œõçšrRWH(Ìsк"¶ ž¼<þC*óÄ\@±fƒËד?L/º°Û¥þBëž]¡%Òÿ?Ä*ª% endstream endobj 55 0 obj <>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/MediaBox[ 0 0 612 792] /Contents 56 0 R/Group<>/Tabs/S/StructParents 24>> endobj 56 0 obj <> stream xœ¥Zßoã6~ÿ÷ í¥Z‰õãÐ+Ðx“"E·(°> €sŒMۺʒO’“u°üÍP²E'™êy±Vìh†ó ‡ó}¤Â>þÎ~øáãçÉÃ'æýø#»ý4a·Óë«÷>K\/dÓåõ•Ï<øç3á¹!‹ÃÔõ#6Ý\_yl…o?__±ï=×ãp÷|æ°s¯ÿfÓ_®¯îÀ5º?xô…ïrnúœ9Îäñ›”Û}•­Ö {(U²ÉÊBæìvWg…ªköYÎ×øÜYmËJÿžùi*\b¬Pn›cÁ×:`ÀÝ}ž0f$Å7’ò&žÎŽyÐ']þÁ@*s~ìFÜt1s~~tþ€Ôý¬þøî»àïøÎ#Ö^ƒîÊÛ«ß}ï>ûTÚ<¡ÓfÄj‘¶€ÄÌ}7å0“ 9wCnú°¶LÃw–-n¯Å³ö*ºkØ]¹¾Â2?PÄ'¸,ò’ùñ¹mÈ… ]x'gRL ˆ<ÓdæÜg«]¥X¹ŒMÖjþ'û²Û°•*¬²²bÛ2ßå&“9áG¾‰“8,RQx"˜»cpƒ.bÒEEJ‰a2s¦ke¤"«Ù\æó].µ`e‘ïÙòÒÀMY?mÚfô²Îæk&·[%«~£oXÈFR•@Æ'±Z¤-!1ÇÑh̽ÉÌYf*_Ô¬\¶q—/E^Ê{t`ÉP«,I±)™#·¾^–'ãÒK8E® `ù©@ï“Å‚í¶‡@9å+ðÀRŒ4ðB7v^ŠåOš@ õ¼RŠrq]æ`EMñZ·%ñ,ƒe“’eÅ®°â5ß#}ˆäàúôz“KËM×ãÝíäÓÄ©ÿî²g™«¢9ª*æåî[f¹bM%‹z©*jÅ…‰N®$ 5AÚ"HÑ"’èàÃ6W† jzƦ§ùÁ¼´lÝ&ªº¹érŸŸö:¡Gº!i6ñ±*Ìm²Eò¬¾Níö$Ï àêtÏ&}¶žö:Q¨Fiõ<,+u’Éz#ó\Õ “‹4o’lZYkÆj‘8N’¬¶NÈ$tC¼Ñ°E«+!—ÕÊ@Ÿë†*î'n(NB°ÁB§N¬ˆ…“Ä"€œâq5p´0JtV€d«ìš–Ļߔ§:[Ù2›KÐ\`uXP¹‚¼](>R›¬‘d$€Ô„ø‹ÐÛΜ·P†¦¾#Tsl$ `Ôc Ã>Hf@Qá8Qa˜¼ÕÙ õœIlZxa+xàºAÈ$'6ÕE·DÍV«­ÕJª®6nñI°6™£yk,êÞ¤ÛØö ±ß¹í"xWÑol¡'ô[Žö8ò%kÖÀ»ê(Ç E¶>èX÷FÀ6ÈIv arÔDÉ6 `Ê‚¨GzÓT Q®aé/²ç agÜ_g_Y½{êð Ý,”œ¯/œµšñÚ'É2Ö Ü0iÇžR7æFX«Z½ÉnŠ˜§v«‚}ò›Ðl{lUÉ-$”ᶤnO† 7\*ï£>f%¥AÇ®ŸŽËXo¢KÅÜMÞ0–|?ØGÊ Öçý†ÁP`±Àç’t`ÃKO1æ˜ÉüEîkæ‘í%õôªy‡jxFI¡À{pŽLGÎèÑËÌÁÞï™.ß××áçºæð68H±„~Á°RL†ûV>HqðààÚz“·‡3(ËPhB'=(µvGöŸ9v ¢®¶è^»¤ø;%jÆk3¤< | òq[Oèp¢–F°¸ÜmãˆëÔµ<ðÏ(ÄI06¨hAÊ$mJB ÎA ¤ãv{†Iû ]NSЪ”g™ïÔáñÐñkWC¡à!êó…úÚfQËUù”_xNj†k‘;AªÊ%·3LfN½._;üiRŒgr[¹Rx€Vª] Ug ÆBAø)Š3&p$ùsP‰ÕWlÊ–c«ž%ÈþÍ,}½“Ã{dÕ÷Ù;9ô_KdïäÐC+©+È6Ä¡Ÿ…ãÚa2s‚ðõý¥×° 3£$Êð楧® endstream endobj 57 0 obj <>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/MediaBox[ 0 0 612 792] /Contents 58 0 R/Group<>/Tabs/S/StructParents 25>> endobj 58 0 obj <> stream xœ\moÛFþ ÿa?.š2är—/E@’åĽ8ÉÙ¾Þ‹s‹¶ÔÊ’Kɉsè¿YÎÈ9rW.`E$ggžgvgž%骗Õ«W/OFLJ*~ýZ GjxþüÙË£DQlÔùÕóg‰Šá¿DÙ82*7e”dêüæù³X]»_ož?S?ÅQ¬áêË‹¥~ø¯:ÿåù³1ŒãÆÚšg17¾8øt0úôƒ­n¿ÕóëÙF/7U½œlæ«åd¡†wkaQawÇš/«õZL.gî_0h}»ª›¡TR–6Rí0ªIl¤s>*nð05>)Å8KghŠúšè:‡Ðâi²›_f‚Ñÿ(]l¢BòðSó#–i”ià©,"£E4¾GZøJR #ïç+‹£"ÈWf‰ý|•8á¦à¦™œ’3­a5Ú]‹NÚfÍ"ñ†£³$Êì^pt Ó5ȬH½Ÿ¯T›GDôøJuñ˜o_6²<ÄW¦#“ïf©sí§âÚ×IT갵ߚ\ü %pZ)ø˜Mjøx»Zoà#Õy î§óŠ|,8iD‰ÉL| ÜÓ¼ œ·§mÛÃ×¶ÀyûÚ¸}|Qó÷En_TàZSßÇ-¼ œ7œmÛζÀùû¢·‡¯móöµ-pûø¢çï‹ ÏRçÚ·âÚÓ(/ÂÖ~kâ œ‚ã®–M¤9Aºùέdù·]‰|Iã£@WMÙ›~áwEk ²GÙÌ$ê2X\Ô1¤ƒþŒ DX dÚ| $ANzAòà<@æ"ÈŠO²5Aô%L9ViÄ+º$ Îd!‚̳`­ ‚Ä §Òp¬Ò6‡¯¤ý Yp Kd–G6lÃL•¹i/wð} ;%¬q1"d¦"&-'”˜Ìš11‰W L?“~¿§ŒE*mLek‚ó£¾"”K(óæãˆPâÛ’çƒRÜ:g°7a²™ JŒúšPæ,¡,š7„¯dý(Yp>(ÅÝ}fâp”ñ.JŒzF( –P–ÍÇ[B‰W rÉGj¡eæ;¡u/(»õÈ®íæNÜe°ÁJè{°@æ‰91Wrñ˜ÁŽLÌტ~´¡ùLqo”i ñÁ!bÈ¿!€2áH "û¿’Ž)û!¶¡ù@%`–¤Q¨cZ“d‚Yú@’Žpxìo’tÌ $ Î¥¬ÖbŒ²5A”˜š¡$!3ä(ñØ;B™JØãö1;ã‹ÐFäq0ƒa?w ²w¢´°ŠÃô3Aî0ã7Äé£çw¤F½(yp>(Eh‹,ek‚(1ÿKBIÚå£Äcï %i—Ã~”,8”¢ ´ 'Ë0íÂL%æfE(I»Œ9J<öP’v÷£dÁy Ô¢B³ õBQ¶&ˆssK(I»É’ÒÉÚÝqºžthº›ýôô‘¸#EÔáw˃ìèû,È"L1ä3þq‡ ½ä›wƒÇþN(ñÛ°ó΃óA)ê> 2ek‚(175¡,y‡'”xì”Pâ·aÿîçƒRThT^rk13kD0мÁã1‹i=Ãoc<5ìß¼³Ð| Š Í‚Ò³6 ck‚ 11™Êw§ðÞícû’ïó-N€sâƒîßôïó9BD=gA†Òš4€4æôŽ1¼iJÌó?%žöïÁyp>(E=gAš0eÎL%fê ¡´¼iJÌÞ¯„O û÷à<8”²ò в5A”˜©¯„2ãM›PböþI(ñÔ°΃óA)*/.M‚P2D‰™ºï¸±¬Ý~—»êÞSÓh!¶?›ý;SD%N‘•xj˜÷RÙÖ÷TŠò΀N ¥²5A*q:|£ SðN(qŠü›PRóîß”óà(Ei@†¢lM”Th~F 9ÞL¹ŒÌ0{†Pâ)Ý/#yp>(Ei@a‹™ JÌÔ4cñ>HÊed†Ù³„Oé~ɃóA)ÊHz4%3ñxÃGðàó†¿'zÃg_Û*êí‹ÞðÙËî|á>{ùÂ7|˜©ç>;>oøøÃ¡7|öCoøøÂ7|öñE7Öý}Ñ>{ùÂt¾¨ð,u/~ywÛ´<ñCÜV¤@s¶­`&Gó뻺iìúúxy¹šÎ—×êjU«£zrS©³ê»jyY½PïªåõföBM–S5šU—¿«³»›Hd)w/‹óè|^„÷)lPléC•U{ ò߆©vn⿨¥Så&L1“‹@é9=ýpªNÆggƒ7ã35x¨FÇgÝ·½¹k ¢†LAŒë•Q¡¥ð; ëwÌäâà|VዸGóE¥Îk±Gd®Ðï˜N–뫪VëÕ5Ìlu¹º¹¹[Î/'›j­êjsW/áØ¾lVjn>ŽÔÝÚ-†›j½ž\Wki®›º¡ùð,ê»Ô$Áµ&ƒÅâ!fuU¯n83ÇÚlò¥j¾]­‹ÕWZê7“´ŒãÒ5 ‘4QԥлµWÅ3¢dJÝÓ™§*žêz¦S¸§;Æ0™NïÏîï ~E„©Mu¿y-µ4ü»€býwO›c¿¢&×è!e`aiM.îïÕ|ÝL ¶Ô—É⮂Žà–ÛÃTú:›_ÎÔ×9L¯ÏÛË«©úü­1{tþQMêJZ$¦poÎðp=¸³bCpò"73¹8XÌ×|Ë@ZØtg’»ò‰Yl@ºhôšG¾­ØH4t¤"lóÇLP‚6ó>vئŠnj*PoÕFJ¡†Å ãð|èû‰†Æ”{I(+ö =)«•Ì„ÓaD:^ÀœßÌ`Â_®êéZ­«ë›jé&ϧƒ³ªRËÕ¦ÂyôéiòëÒu¬sb‡Ðð;ó*£V,Åjz&™ cνZ¡Æu ’ñk=ß4=¥áqÕôœŸéÛ«P“‹jÚ-yt>T‰ÝÂMZãUc­X§Ýû&L82N•y ª®&Óªš&Ý’Õ½ãÑt?(¡-˜¾wFòÌUîn·ß³)v, ]/Í}2’ÉÕ?¶Û1¼3ÒšðŒ¸[?§°Ç™×° ´Þ¬j§î–“/“ùbòyQÎaÇ c,HŸ?gûFRf.>Œ‰}#)šÛ,!Œ1ÎXÿ:†b qóö‡Àš“ ¡K$AœïDæC“ØO’¼ˆ¼Šb&¶“$+£°šØZpŽòFŠžÌ×ÍBÁzWóÊÔùÙ¥¦“ÍDA3ïKØhƒmÈkÙëeysç‚…ìÞØShNåS¯avªj|ŒÃlÝ_­ŸÏ@Rnµ»•௖‹obƒÔIêö<0bsKà÷C@Ýcˆ#T„½uÈLügÃèäl›ûù„Åüj^ÕÛéà]ròæÅt³bËs7YŸï3ZÛ'gï'=“·Y<,bÃI så^mœ‹ '¦•‡½¶ÈLød(vÊçê¶ù_0¬o«K—÷é~j‰Gçó7er§‰›ûÝ>T‰š•}òÿÊÐû#‡Âé6îÓ£Iá;Ý;æÇïÿrtün¬¡ ¯7 ÆnÜ“!Q¾·¸80åÿç¡Æ4 endstream endobj 59 0 obj <>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/MediaBox[ 0 0 612 792] /Contents 60 0 R/Group<>/Tabs/S/StructParents 26>> endobj 60 0 obj <> stream xœ­˜moâFÇßGÊw˜—Dí9Þ'?T§“BÛô. Jè©é  X562&éõÓwÖ@X'2–J¤hžñÌϳóŸ5œáãÇó›þõøŸ>ÁåU.G§'ç? ˆ<_Ãhvz"ÀÇ?Æ÷4„:öD£åé‰sûï§Óøà{¾Ä«'ãü×çìýrz2@×ÖýÞ£0“Òõ9î=öúgÐ/Wߪl¾¨áº¨ÓªHê¬,’.7ë¬H×k¸I& »Â+«UY5¿ƒˆcã÷ÒFyAèÞ ¿nv `pÓp Ê+~ç‰ù¨ IºPbï¢ È ð]“qï;;º¿¸}1®UUVP¥É4+æ€Ëç*«í².aQ®k˜fë¿~€Y–§PWI±ž¥L’b’æé”b&1¬°(ƒ™"–‹%‡™&]¹wÁfv0q˜ÉW×ÅS’gS(WMùü¶ût¤¤Œô¢°ƒ’!Sô•FJå"ˆõÞ—’câRŠiJðœÕ ¸ô×_] KO†­8ÈB2ßÈxAÀA‘.Â`ï‚ì`â Sþ{È.†ÃÁíUgbeØ “A,&Ó BϰڗðI&Úû`#;˜¸ÈŒp$¥ò¤i;ÛÓ-75< /ú+rÛêÜœ8ò@êC€:£Y½N ÆènÍÎ1qË÷jrxõеëÅẢ‘Œ‡EF±x‘âH¹sÁÆõbáÒR¸º+òoP)”3ûmÿóÃ÷ÐÿýËõíÕà—_/¿Üõ?C’çås:íZljÚß!^:R1¡<ÁR AK†¯÷>Øð&.=«þÍÖHQÖ0+7Å[BÔÞÆ Îîm×÷;…(#/jY°h’bb0Ÿ%&‚T{\šŽ‰KÓìhÚé ²5Üã€G¡C¾lÝ{ âiÐ#‚µ; kOÐMc~ÁqŒ¤JT»˜7d“*ePéân*嘸"xõ(lm'“ žF:7eB{qcc€’¤Ú”­ˆ¥6’TƒŠuSÇľ5ÛäyW@"n*ɉ‰ˆTƒ2²øêbP ŒéÆç`âð‰íPý³=’­ªr^%KH›³Û¤œ¦(ËÎ1dÇŒb¤"O›öMºÍßnJ¼¤T²—Žû È Šénò혌{·w£yqd÷GûÇ{c¬¼@vJàáMÊv`£Eº{òxˆ†%ö‹dŽß”v€dµÊ³t ö˜Ã_G=¬ކg€5±\&Å^¤^…¾†}ê©F!Îos<þ@h!D=éú@&(Ûu.WõÚ¦¶Yåe2…ªtRVÓíЙ@žs\Ì«4©±jëER4).“¿³åfùò{ö„ÉÏÊŠ|·ÙÑ0'sR¾5Žx(é’¹c2îÙšw.ÍþMjÈŠ¬ÎpúþgûžªÎ–©‡5—íx`—¬«MAME»­Þº ›Z´oyŸ:Ýä8”HuÖ(ó])LƽíSµx>  Í ñ$Ó§ …Ö^n3ƱÊÓæjœÐí7–õñúpæ¼Ç"g †žˆ»e~0ÁúØ·i,x›¦·HÖðgŠ<¦xè ÞaJ±-çöœ<ȱAÑ!¨ã>ȱA›Øž9>HuÖÆçú åY£ÂÇ, R¤ŒiÔC¦RÆ4JaÄ:È*²ójláLtÃf –r‡+l<šÜ+ 7aÕ˜&ëTaÁ3}uª‚¦p|uª°Ö5«>4Y§ ÿ+Ö³Õd*-¸>È:UJz²[÷vLƽæ8ô?|¨–í{Br£$ZÝ¿@ÓK endstream endobj 61 0 obj <> endobj 68 0 obj <> stream xœœ»Î^IEs$Þá¼O×¥/Òh2"’C†ˆÐˆ$„fÞž½ÚvD·ËýÛ]]}ªVUíöH3çó>ó<=žõ>ãggt>+žxëYùD÷³êÉw>«Ÿìõ¬ùÔ»Ÿµžêó¬-ë÷Y:dƳuܨggÎùlÎÛÏÖy:~ëÏC[úÙ:pÏç„¶¬ç舽å=µçèw™Ýfd=G×wë3"÷sR¿ë/O=úkíký®Î|F•ö-ý~´OçuóIú5_¯Ùq?r¬7ñ§Eë }èØ¯Nâ×n¥çÕYü:Íå¶òr»£Åäzïcè°1´˜:C?„VÜ\‹)+…"2ØÜZ,6Ï'*ؼ´XlÖÉlÖÉ­ÄL¾X'O…m(l±r-–Žˆ]lÖû†Gžb³<$ŽÒVÚ¬ÀæD-‚NO<2µà“ìÌ—ÍÊròò—¥O¹´˜ìÙ@×TÈ!Açè9Ca+<•È¡¤ä’ŸQ:yqyÝ)w’¼É¬¥¤éäÒÉ÷ªºe½uHÞS7EJ^)…ZŒ§‚‹éÞó+Ÿ• íPòJ^IõSEœõ%U¢v4t*6CÉ«C¬Öª¾­¦(:K{u²À­jS'ob¨tÖ¦©“ éûûùë—ˆÍK¾N¾4/VO‡R=TE}PŒ:•Æ¡;u û¡_]Ê•ÐÓ‚t ‚îFÜ‚}PSS1·ªH®öõ*ðÔÉ ºU$½›¡êêsÖÉGß-„!¯“uÖ|õMCU6AoÉ}‡ m†°æZè.C߯ðèdù›)?CÅ6K\ ج}Ká™ u Íl.¦«ÌIÄŽœJ¥ªä™«(¸õS(Š7ErUÈ›§Ù¬æòÞÚR{¡¬B·nÑbˆz(Ä+(ÚLЙTqKÔj¡#È´P‹Z¨i)…iXŠ8¥©Å¡Xi]¢.Tqë^U‡®%âBè¬ýÞòÕB4šu¸˜*n‘ª¸ýRÐr¼_Q´¯[¬Jç&áðmþ8Tz;”½ §¥¨ ]nç¦ ¨–¨ ¥|—¢ ñî¢UèäVhC¥·§¨SÏP‡TØè}{1a±7MHiØ[Ô…JoŒJoQúÈóÒh£ê%L|lÀ¤Q¨ø“À€šÉPý2³†Q@ÃUÁ©?Óáâ6zZJÐ’±°„ÐJç'ƒQ¼ªý¿wÉ.é…"m2l´jýœ(ƒdT ù`¦(µòAW¢îTb…РM)°ò1ð!صÂÇaV1}ôYó¹cUוú«œ3ÒmwÎ0b“6EŸÐ¸+ö1Âøê¤ÿf6³‰W/Ì5 Æ SÛ3DzgJXQ7O:uÎÉ”ÄGG±Zì»c2¦øØ‹óðqÂyg§XIš¨‚vG,+1€žÑe€ÞÙH·MZkQ£I÷¯{ûb`¦ØÍbªÖË|ÞWÉÇ¢ÍM[JÇdh3tSSìòõš¿¦ÃÇZ w|lTBß¡,vQ|šÊhtP1šÍ<}™ð…J>îdf~'£°éúIu7-"©î†•¤º›ÝIu·>øù:Ãu-­®p d>z¡"î`‡Ý«N'ìRÝúË+6XÁ.ÕÝv©îÞ°Ku7²(©î>AuÏv©î‰Lª{"îä› ¤º'­*©î £IuOn™WAìRݳ`w_Å»T÷DÍå¹â›^…ž£¹JGýs…v£b%)TÔôDÓÑ4­¹ýÕ"H¥¤¦².©é…®+jz]]DM/¦i]K®+t©¿¢¦€xI‘ìBp”" GR%by¯ ŸšV3GŒ]©¢H5½¸}QÓ͆-vɧVú†ºJè í®ôxu·¢¦¥µåƒšÞ좦÷•eÔôf˜W­DHQÓ›º¯@Éù+ åL>¨î]ÊhQÝ»µx5â\T÷žb·¨î-ñ!Áˆ‰4$+Å´¨nÁ.T·4ª|PÝú ù º*¥ò¾ ÐT÷Aß3ʵ»Eu´D]‰ÄÜ©º:*¥¨%ˆ+ªûà³®pªzådôJÕ×'û8yê&‚Vb¥úŠ/õ‚¢¦ÕƯÎE‡q{jZ*‹¾’ "˜ïûbqÕÙWAŒ<ì»B ¹ÛNJ—|4á »áøÂ.ŠDä]PDìš/P7WdBñ™¼6˜ô‘~¯?W'4êPrL/䘴Vð>a¥Ì÷‹%v…#±£÷Õµ[ì2ã´âEƒp“Ôž³ñòÁ{VÒ@>PBù¼s©<û>iyk4oÚD¡6oÙDÅðJÔåSz¹VúþŽ«uEzóžM¾µQ~ÉK¾#ÝËíÑS‰6ã'Õôb*^>öà……- 5XÆb—ú׊‡¢»P–}UîË3+‘¼‹aU+Qy_äúù¾ ]ÖyE´ØmôpÝÛ¢™êÔÈBP++0£•Ømtœ G>ò*ù@9 où¨yû¼øð±§«G—| ÷| ùï@46ÿ"Ò<œ”²ä‘ˆ$Ož‹oÞpW6Ê¿©îFöUã(‚¦º›™ÐTwÓšênh@×h¥ŸÑgiÊr_ÝοÝ4ÕÝkðÅÇâ)Ku÷V~šêî}ªø8Š{SÝ}x†RÝó…Ý«ñ_ˆ º'ÿ*ÀL× v©î‰6ë«ûÑ¡?üðå'½-Ÿ÷ùÓ—Ÿ¿üôåÏÿù×/_~þõß¿ýí×?üã—~ùã_ž÷¯Ï—Ÿþþ${~üñ÷¿û?LÆç&ñ¹I~nRŸ›ôç&ós“õ¹ÉþÜä©tÒoä ƒ€a 0 †Á0(Ãà Âéapapapapð ƒýù4øÄ$>7ÉÏMês“þÜd~n²>7ÙŸ›#•Núü€a0 †ÁÀ0 ÃÀ`„ÁA8}Àà Âàà[ô4ú¸~d†M6eØ´a3 ›eØlÃæ89µ@pH Ãaa80 ‡†áà0†Äpˆ‡ˆ°zƒCD8D„CD8D„CD8D„CD8D¤CD:D¤5."Ò!""Ò!""Ò!""Ê!¢"Ê!¢,áQåQåQíÑíÑm‰J‡ˆvˆh‡ˆvˆh‡ˆé1"¦CÄtˆ˜Ózg8DL‡ˆé1"¾aüǘl°Iæ ›6l¦a³ ›mØ'§ ÃAa8, †áÐ0†ÃÃp€áVopˆ‡ˆpˆ‡ˆpˆ‡ˆpˆ‡ˆtˆH‡ˆ´Æ…CD:D¤CD:D¤CD:D¤CD9D”CD9D”¥ "Ê!¢"Ê!¢"Ê!¢"Ú!¢"Ú!¢-QéÑíÑí1"¾Û´ñ,ùÄ& ›4lʰiÃf6˰نÍqrjà0†ÃÂp` ÃÁa8< ˆáaõ‡ˆpˆ‡ˆpˆ‡ˆpˆ‡ˆpˆH‡ˆtˆHk\8D¤CD:D¤CD:D¤CD:D”CD9D”CDY Â!¢"Ê!¢"Ê!¢"Ú!¢"Ú!¢"Ú•íÑíÑÓ!b:DL‡ˆéñý“–ñjúÄ& ›4lʰiÃf6˰نÍqrjà0†ÃÂp` ÃÁa8< ˆáaõ‡ˆpˆ‡ˆpˆ‡ˆpˆ‡ˆpˆH‡ˆtˆHk\8D¤CD:D¤CD:D¤CD:D”CD9D”CDY Â!¢"Ê!¢"Ê!¢"Ú!¢"Ú!¢"Ú•íÑíÑÓ!b:DL‡ˆé1"¾Çá|¢Ü ›0lÒ°)æ ›iØ,Ãf6ÇÉ©‚CÂpP Ãa84 ‡áð0 †CD8D„Õ"Â!""Â!""Â!""Â!""Ò!"­qá‘é‘é‘éQåQe)‡ˆrˆ(‡ˆrˆ(‡ˆrˆh‡ˆvˆh‡ˆvˆh‡ˆoqã‚ð‘M6iØ”aÓ†Í4l–a³ ›ãäÔÁ!a8( ‡…áÀ0†ƒÃpxÃ!""Âê áááá‘é‘Ö¸pˆH‡ˆtˆH‡ˆtˆH‡ˆtˆ(‡ˆrˆ(‡ˆ²„CD9D”CD9D”CD9D´CD;D´CD;D´%*"Ú!¢"Ú!¢"¦CÄtˆ˜Ó!b:DLëá1"¦CÄtˆXßmŒÿsÂG6aؤaS†M6Ó°Y†Í6lŽ“S ‡„á 0†ÃphÃáa8@ ‡ˆpˆ«78D„CD8D„CD8D„CD8D„CD:D¤CDZãÂ!""Ò!""Ò!""Ò!¢"Ê!¢"ÊRåQåQåÑíÑíÑ–¨tˆh‡ˆvˆèÿ!â¿Ø›ƒ– endstream endobj 577 0 obj <> stream xœœ½Ž®W …{$îὃymoï ¥£¢‰¢B H…‚»çY{2 ³Šd|æûlïŸgÙÞGJzÍç}zí§‹ç‰w>½ß'úð3žŒäg>9›ŸõTðÕÝO-Üö|FêóõŒ5øÉg)ÿóò¼Ï,¾wâ™Äè“Ï*¾wêYøöÏ.}¯ŸÍwúÌç }¾žÃ?}6ëi`añÖ3_V=1â‰|FbÌĨ'*c`ÌÑOŒ$7{ -p¾‹å ²¶9 ³ˆDž,j‘W™ÇbÉ3ˆ¼‘ƒÈ›EMÒÄi"Ç|ò%ጅÑDæ|’µbŒIä|ŸÄÂà8s™3Ëâ_3 c9Ç“#‰œÁ¹OÎ1›Ãš,7u“s"'‘'g¨³Í5ˆ\D^Ò,"ï&2[ÊÃLBäi"—ö²¹Yc¹×ÉÂ'wP±tYça]D&M%lÌO çH .q ›œH -ŒTëÄïeê‹spr½“[¬Åç“S«»TVY[gyut¹=0Z_îg¼\Ñä¦Ç;õ ޲“SqŽØcÍóÅX¸ó½QÛ„†AŒz¿ÂP;¡x4Û“Èw©Äè&ÄŒ u“‹õNNdl-ly‹ºEä#êÈ7ލö¯¨ãûuœZ‡¨[¢NRHQÇš:Eÿt‰:nšåÌOy !ë!ê6‘[Ô±î–Dgëü&‡ÞKÔIpKÔí«V"Ÿ+K"_=‰º#á‰:óŠºs•@d]Lˆº#îEöŸ¢NùR—{©‡õ^>Pî« æÎ×+ø|ÝËã>ïš$»õÞ³Þ:5¨[¯öÏ=,Ý놺¥sÜœñºë†:}9 êV(g³8bþ€{èã­"¹Jþ„q稼ðe°@Á|™kXw©l{£/°¹Ü…â–ŠÇBqKÄ-ÐYZÝâªÖ‚¦ÅѬŠsT°ø5Š£$(<(Xàµ_¹rû]w ÏŽR©£¬··PܾKEq;¹™ÅvA Í.N}qÄÔ"£¸Ýœèb'»¡n!¤­BÅV0¦¶Bä{$ìm/¨“´ö¾Û%ò†:¶KQÕVJÑ"2è 3@bè ‘Þ –°Þ •gâ$á‰OêÄÀ뮋ë<ƒ^Hï ~Íù=TA"sX§¡n±¸£¢¸øÃ‘’tåç?Ò;ké°‰¼u´èÙP§ œ£ËÅᜭã§SW ö°Äâ‹7t›œ;–Èc£ñ¦Ð#2Bì–àCñÑw;ÛÐ ÕÛÞÖÙmEnÝêVdìµYz_[‘/.[‘ïÊ·"oéVä­ÛÞêQG8lå8ø­óÞvÅ÷¸k¬s©Á ®r±,$·@4"¹¨…#J8ò{,ñ8HõA6.äÔ$÷¯kW+ u™­^ªMªZTv°ÜꆡýoµÃØ—WåØìk«!Æêˆ)ð©%æ+ÖÔi²äPSÌIêŠÔÝã²àD‰,ü¶cl `k! ,YÜ1bÀj(Ý¡Ííí|oÿ–0”C¥q§r\A¥rèÜw*Ç–\R9@K9ŽÄÊ:Àâ á¡i x5c¼w4 ÷„4Ù—Î "vip(Ö‹"eMI’¥Ùf£],nsŸ\Lî;³`ÁÖì!Å÷NäÊñ©gåÐ}ï¡[jʱ¹GMhvõ{.šûÙÈ v7:Ð%|`¡#uK 4DÁ KgŠ„¡J·†±Ö­X#å¡ÈcÉC‘ïê[‘5üìVdÍ ”Y[õE9n¡šÊ!–ÕObì[†”cÃèžÊqTdÐ3d¼Š¢ñê%ûžš¯PÖ‘ET•z†/±+M3(’Cšî»ziºKìJÓ=Ä®4ÝCìJÓÝZ©4Ýš@÷RÍ.Ò!–ؽ“ë­“RwKC[êÆRwkÔØR7c'9¤nÆJrHÝŒŠ©ú‰bWꦞ©¦jPL±+uì¸3+žØ•ºYŠ*-9}È!u3 ‘CêžštrXbWêžš¡4Pb‰]©{~–é;Â§nïHÝlòU—¥+uÓ©¨R7Ý–*uÓAUã—,NñHÝTaê¬ÔMc#‡ÔÈTùïÈË®Ïyì©›¢¡ £Gê^Æ5XÄÒw¤î¥~¤îu»„Ô½T3Ô*±ÔòNÓZ©4M™Ûj4ÌÓ/ß9Ò4ňxÒ4EFKÖ’‘÷]½4½5Biéâ!M#I<¤i0Uú#ûÑ÷”ƒÑJML–ÞÒôÖlz¤é­AF5KíOšÞª‡GšÞRÄ‘¦·NâHÓ\#9¤ésW/MsØ¥¶ˆEÚ²–Z%9Ø49¤i6CišE’.±Ž(9E©›¯Cê>šWŽÔ}ôÈÑ„Œ¥þ,uÍQGê>·ûJÝGuøHÝGJWyPÃ!oèÙÙ¾^}jÔÊÊv²\´LÕl¦*LÍ¡· æç„¥l·É¾zÞæ­³¯¸y¥öꉛçÎGzäÖ+½zæ2 (Û}èÆ¸Cšžº¡ª÷ê±[)ð_=w«TÏ4Cc iQÉÖT©^=zk¨é=¥ÉMsžL5¡eÓã·æ ë>¬UA æûJÙn¿KÙnÉלßR½Ö©bÔ<Ä_éYc(æýËꀆe£ðdW~¹̾Ӧò¥Ò*_LõN&OÌ¡¢ùR 0çGÉFKV¶¡l}gØV6=ö5¦ÊüœS•MO Leûœ@[Ùîè¡®‹©îÃL‹y þFS}å¥pæwéԃ츧˜U„NõŒW%¡³ï_ ý=D\·–y7¤ªÐãÞ…ÊÝằ¡î¸nÊÖwdWeèy ÒÐó*@µ¡×U€ŠCÿ:p+Û´ô@ż P}è[o_ˆ>Wªó½ P‰ º(›jÄüÜŠsñ¾C»Ì«•‰YWªbžßýîãGž°Ïûüñã§?þôŸþüñÓ/ÿú÷_ùýßþÇÇþÌú/Ïǃ}ë‡~û›ÿÃi¾ŽS8Né8•ã4 §¯sèoø„ᓆO>ÃðiÃg>ËðÙ†ÏqîÔÁ!!Âa!¡!Âá! Â!""Òª é‘é‘é‘éQåQV»pˆ(‡ˆrˆ(‡ˆrˆ(‡ˆrˆÃ!b8D k‚pˆÃ!b8D ‡ˆáÑíÑíÑÖPéÑíÑ_w»ŒÇÂw|Òð)Ãg>møLÃg>Ûð9ÎZ 8$„ƒB8,„C84„ƒC8<„D8D¤CDZµÁ!""Ò!""Ò!""Ò!""Ê!¢"ÊjåQåQåQÃ!b8D ‡ˆaMÃ!b8D ‡ˆá1"Ú!¢"Ú!¢"Ú*"Ú!¢"Ú!¢"¦CÄtˆ˜Ó!b:DLëá1"¦CÄ×ÝžïL£†O>eø ç Ÿiø,Ãg>ǹS ‡„pP‡…p`‡†pp‡‡p€‡ˆtˆH«68D¤CD:D¤CD:D¤CD:D¤CD9D”CDYíÂ!¢"Ê!¢"Ê!¢"Ê!b8D ‡ˆá1¬ Â!b8D ‡ˆá1"†CD;D´CD;D´CD[C¥CD;D´CD;D´CÄtˆ˜Ó!â×ÕU|ÿô-Ÿ4|Êð†O>ÓðY†Ï6|Žs§ á  áÀ áàáé‘VmpˆH‡ˆtˆH‡ˆtˆH‡ˆtˆH‡ˆrˆ(‡ˆ²Ú…CD9D”CD9D”CD9D”CÄpˆÃ!bX„CÄpˆÃ!b8D ‡ˆvˆh‡ˆvˆh‡ˆ¶†J‡ˆvˆh‡ˆvˆh‡ˆé1"¦CÄtˆ˜Ózg8DL‡ˆé1"–CÄ—ÏwþK²0|Òð)Ãg>møLÃg>Ûð9ÎZ 8$„ƒB8,„C84„ƒC8<„D8D¤CDZµÁ!""Ò!""Ò!""Ò!""Ê!¢"ÊjåQåQåQÃ!b8D ‡ˆaMÃ!b8D ‡ˆá1"Ú!¢"Ú!¢"Ú*"Ú!¢"Ú!¢"¦CÄtˆ˜Ó!b:DLëá1"¦CÄtˆø¢¿3Â>iø”á3 Ÿ6|¦á³ ŸmøçN-ÂA!Â!ÂÁ!Â""Ò!"­Úà‘é‘é‘é‘åQeµ ‡ˆrˆ(‡ˆrˆ(‡ˆrˆ(‡ˆá1"†Cİ&‡ˆá1"†CÄpˆíÑíÑm •íÑíÑÓ!b:DL‡ˆé1"¦õÎpˆø:qãÿó-Ÿ4|Êð†O>ÓðY†Ï6|Žs§ á  áÀ áàáé‘VmpˆH‡ˆtˆH‡ˆtˆH‡ˆtˆH‡ˆrˆ(‡ˆ²Ú…CD9D”CD9D”CD9D”CÄpˆÃ!bX„CÄpˆÃ!b8D ‡ˆvˆh‡ˆvˆh‡ˆ¶†J‡ˆvˆh‡ˆvˆh‡ˆé1"¦CÄtˆ˜Ózg8DL‡ˆ¯k2þç/ßòIç Ÿaø´á3 ŸeølÃç8wjà á° áÐáðá‘iÕ‡ˆtˆH‡ˆtˆÈÿ!⿱9²û endstream endobj 1086 0 obj <> stream xœœ»®fG…s$Þa¿Áì®[wK–3" “!"d‘€„ x{ÖZÿLBäYÇu|vuuW}ué–<ë=ý¼ÏzÏ~:ùïƒ?†Â}VãŸ÷¾O¬ °ž˜¦O.~wóɽ(ÔSQú©½) Öã ®|Ï3É•ï}†«¯÷}v…õlhBˆçÔ¡ÏÅ…PÏí¢@Ëï¦ÄEæ¥ÄWR¢Ò %¬‹Ë/|›ë/¬”AEw)úÀ¢»¹ÜÞóJ+xf*vÏ\Þò3’¹ˆÀ}Ès <}™8 Ò0‘óFPJHd7ÒCä!5$²‹Œx&ÈnÀÐÙ—ƒìrz’ìrzŠì"s ]%;l4Ù ¸s†ìrz†ìl6wŠ ƒDvØÎ!»,æ]&Ý\²Èé¹d™øì—ìް_²K¼7S RA"»ðì »ìÞAv‘»ÏNú9pÔ]d7°Ô.²KÌv“Ý@wÓ§ÈñgÙ d÷²K—ìMv&÷&»÷!» ÷>d7Ýû’Ý@vïKv®;/ÙåÖŽ :jÆs˜â‰d7–£ d÷I²pñI²8Â)FŸŸœ"»ì>MvÙ}šìð9Cv¡8CvQž³Én`)l”6€Ô9d7Óçh§Ô¹ò)q®¢C÷M®‡œ¾l>â¹,KÐ>»G@oÈÏpØ  a9iìçÖËs §oµ¾»h)Ÿæ-váØ;b¿#v‘ÓHAž9}·ØÅ÷ˆ]rØEî»8àýì~³s¾‚÷° ¾¢—Ÿ¿Kø’¥wi·êŽ!€™ÉoŠàÃ~—Bø°á•æâo buêÅ íÛ˜yÿŽ8¦ËÞÈ—Ö¶HæFPEhœ¾G~§+ÑûiíªG‹æ«N.œ¯º²ü|?͆R™E| å1DõC2*%©®û~:SST{!Ö©ú]ä:Ubš`§Úy“ì|UÖ‰v®Om¦5•žM¸µ8ª)­©œâK5‘ÇJµØKÀóS¸Õ”ã^"®Y&4L¤f?A¯UÆrÉŒOjÓšxÐgjÉHAZS6IÏPÂi뱕 úVèÍ!"4¹®véTFlÖotK¡Dµ5ŒE °s¥¦ˆ•Ô]'¥û¶¾ÕYéðLù…Ü«”&+(Dm„ä§¼%ǨS`EjTéWüìÔÖŸüªyU¶üHž”uçèw´³eS{ÚÚ:)ÏóY‡?¤BƒîÄß±ã XÒº?Df@rÿõãøs±“C„n±˜ÃæK‘(¨ N¢^@d$ÏŠ¦­ýqÞ+f€hDA¦5F·úè,´6òÑÐÚ0ä—Ú:7íÔQÜ:: I¨« Ø´¦É.À$ù~æNŽ—¯2€{jM”ITz)X ;”, ˆ¤ÅJÒßÊî¿KÀŸ1|\¹b+¦Ä …ÖX@z'Æ•‚ÖxV´óR e :­±€ £Ó Z:­1Žp®BFQ[gվɪ1KÀÌa+„x)òXê…#â‹ X5FSa±j`» !žN©ÑZs'E'Ï”¾¥µ¡¡bÕ˜ÝZ—Ö•‹À#Ç>q‚ç(Ã< ó€ðãϪ±_EšUc/f@ñW[*¶ÙÑ?åk«¤—îÊÐbÕØòr±jì*‘º0Ð]§ÓqJÓÚ0Šdo¶è8ôZ£É­‰Kï#Рžܔ®2ûŠL\JtÁIФ­¸½Ã Æ’“'Ë%€NÈë, Gm¥X@ŽªDÑõ'¯r†—ÍŽUºí0š„qñQ~ÑÚ08ÅrFʳ`Ò=û“‹4qèåbÕ8GYǪq4ãx®ò‹~¹Ÿõçr¥¼å튷(ˆMQp±j\ÎRKÝþª‘}xU‹{ºb[ÃÌÕV‹UãÖUæÓZs'Å^ÍÃ깸OðlÌ`xšÖ˜˜iû¿Ÿ±jÜóµv@¼D¡›{YØïІ´uT ˆÌñBÕÀèÌ¡ÎPdÞ²òbŒVlÞÕÌÙ`0R+P5 *àŒ×ʬˆö¦ 8´ÖÊ€Ck£ 8´6ŠÅ¡µ­ 8´¶•‡ÖŽ2àÐÚ‘×­]eÀ¡µ« Ð#Á« à3Þ o¸Ê°ºh@,>((P@â3P H|ú£Ÿt¯Ë›±¢ÇY?X3YCi­çSYyufà–¤[4ë×Kk›ÀÐUo_Z;ÌŽÞUC_ZÓôÙ/­]ÕÅ—ñ—˜sT„È hT Œ¥âº©ó[T \L#ü¸!°”5Ü ±¥¡¢…ËÅ–Mhí ‰&F T0j°¡P$W¸Ùñ5 ô-­mv˜æ«&I®ËgL‡Ÿ®ñ¦£µ«NÀ—Œc4̧…ÔDÝz[àý"xÅc³á‹ƒÄç…ÔÇ6 ‘Ð|`HY>—@ÔÖùÄýyD¡µf4Љi¯ è®´VzÊ`4ßÐúh­hí¤ú­u®¢µË 袵«n„Ÿ2p‹¥¨X`Ó¸î0x¡ÅLöª#Ef î>òzóéD“n¿Uè„È `Ê VÌ€nZëý驇€«2Euå¡µÍ `!ªÓ­fq…È À½âFCk—Ð4|Î  ãH­a# ÐÆ8© `éP°€´ÆÙfiM'ÍÒj6Ü4De Hk"åp QÀ‚Ò ¬·2€¿¢5>¬ã|ÕÃÿj^  pͪ1¯¼Îªë8 ³jŒ^éšUc4bó wº¥Ù‚‹Ÿ±jL~^à’"¼ñÃ_~Â-ÿyŸ?}ùùËO_þüßýòåç_ÿýŸ¿ýú‡üòÏ/üËû¯Ï—Ÿþþ€|õã¿ÿÝoQ:ŽÒ5”òu”–£ŽR:Jå(µ£4Ž’CD:D¤CD9D”CD9D”CD9D”CD9D”CD9D”CD;D´CD;D´CD;D´CD;D´CD;D´CÄ8DŒCÄWCè÷¿]g:a褡S†N:cèlCç:׉©‚CÂrPX Ëa94,‡åð° –CD8D„U"Â!""Â!""Â!""Â!""Ò!"­vá‘é‘é‘éQåQeMåQåQåÑíÑíÑÖPéÑíÑí1ã1ã1ãñÍyù=ãž¡†N:eè´¡3†Î6tŽ¡s˜Z 8$,…å°°–CÃrpXËb9D„CDXµÁ!""Â!""Â!""Â!""Ò!""Òjé‘é‘é‘åQåQÖáQåQåQíÑíÑm •íÑíÑã1ã1ã1ßœ×ß3î:a褡S†N:cèlCç:׉©‚CÂrPX Ëa94,‡åð° –CD8D„U"Â!""Â!""Â!""Â!""Ò!"­vá‘é‘é‘éQåQeMåQåQåÑíÑíÑÖPéÑíÑí1ã1ã1cÝ3"Æ!â[˜ö÷ –†N:i蔡ӆÎ:ÛÐ9†Îubjà°–ÃÂr`X ËÁa9<,ˆåaÕ‡ˆpˆ‡ˆpˆ‡ˆpˆ‡ˆpˆH‡ˆtˆH«]8D¤CD:D¤CD:D¤CD:D”CD9D”CDY„CD9D”CD9D”CD9D´CD;D´CD;D´5T:D´CD;D´CD;DŒCÄ8DŒCÄ8DŒCÄX÷ ‡ˆqˆø¦ïùÿ𖡆N:eè´¡3†Î6tŽ¡s˜Z 8$,…å°°–CÃrpXËb9D„CDXµÁ!""Â!""Â!""Â!""Ò!""Òjé‘é‘é‘åQåQÖáQåQåQ_hãïhø.0tÒÐ)C§ 1t¶¡s ëÄÔÁ!a9(,‡…åÀ°–ƒÃrxXË!""ª áááá‘é‘V»pˆH‡ˆtˆH‡ˆtˆH‡ˆtˆ(‡ˆrˆ(‡ˆ²&‡ˆrˆ(‡ˆrˆ(‡ˆrˆh‡ˆvˆh‡ˆvˆhk¨tˆh‡ˆvˆh‡ˆvˆ‡ˆqˆ‡ˆqˆ‡ˆo~0þº…ïÒ C' 2tÚÐCg:ÇйNL-–ƒÂrXX Ë¡a98,‡‡å±"Â!"¬Úàáááé‘iµ ‡ˆtˆH‡ˆtˆH‡ˆtˆH‡ˆrˆ(‡ˆrˆ(k‚pˆ(‡ˆrˆ(‡ˆrˆ(‡ˆvˆh‡ˆvˆh‡ˆ¶†J‡ˆvˆh‡ˆvˆh‡ˆqˆ‡ˆqˆ‡ˆqˆëžá1ã1Û!b;D|3Ôß3,:a褡S†N:cèlCç:÷ÿuþˆ ý endstream endobj 1595 0 obj <> stream xœíÝ®$G„ï‘x‡~ƒÉÈÿ”Òjí Ði/ƒ9k,ì4Œ%xûͬú"=-‰%„ÝœÊ3§+²ª+¾îvEd£2ò#úùà®çy^Š.ÌSMÒµG£¶Îc ¤¯Çõ9jë<¦‡æÁ/½yÉRêë<¦hÊi©Ôé Ü×yÔ9GÉk¶:çX¶œ£9Ç:ð9šs´°æ˜O]º¾Î9úòj­s޾ÌZça¤q¹uú2ëH§r¸ü:Ÿâ.öéS]ŽmeŽ.ËÎÃÍñòìü5ÇË´Ó*9]®—b>ákŽ9_¾íš£Ë¸ó´r¹œ;wËõzž§¥r½¼;/Yn—wûœ£]ÞísŽ~=§óôs¿¼;åç¥\sLëåqyw^Ú.ïŽ8G—wGz]ÞOSÑåÝy%&,ZâåÝi’.ïNšKº¼;qž&™s¬§³”åÝe‹R–wÛüµ,@çhα.ÔÍ9Úòn[P·åÝvQ½¼»N«ôåÝ6w+cy·MûLû­9&ÙóÅaÍ1ÑžÂkŽyy&ÖkŽyú“Ò5Ç”Ÿô­9&Ý“ª5Ǥ{2²æ˜6›Þ_sÌËXsYsÌɧk—Êdzzp=n2]×KÇMåe¤9šÊKjަr«×Sù>úÉô¼×SyÄk1GË»mša>#ë<æ“=Ïo=nžÌ<îu“éyGs޶¼ÛæEé}y·Íì}zwmÇ|’æ£'~sÒùà˜4On>6^/Ós1-Ö›Qëp¦ì|ʵ^kçk\^ôÆy\±h½ÄõZ¸h[ÈÆù²¿H{ÔõjU´^ ã¼°eNÛ:ïë5³ÇuµFm^ØuÀq,3öõú8ú|uÓm)¬¯1•S¸ŒÖËÊò‡¦SÔœKZˆëÂ̓G’.×ûPš(®·¤i””˺€ëà¦×)ek*×ûÓ:¼4ßw®WüõZØuÁ2uçOýèÕ¯ÖÓ¯_}òêW¯~ý×?½¼úäÃû¯>ýðÓ/^¾|õóßÌcûíãÕ¯>›|¯GýøÇ?üÁÿg'ìOvJ';å“ÊÉNõd§v²S?ÙiìOOOOOOOOOO‘N‘N‘N‘N‘N‘N‘N‘N‘N‘N‘O‘O‘O‘O‘O‘O‘O‘O‘O‘OQNQNQNQNQNQNQNQNQNákÛþ‘Ïûă}ÒÁ>ù`Ÿr°O=اìÓö'×ôÈ'NЉtâ˜A'nЉtâB'Žˆ'ŽˆG¯ 'Žˆ'Žˆ'Žˆ'Žˆ'Žˆ'Žˆ'Žˆ'ŽH'ŽH'ŽHGo'ŽH'ŽH'ŽH'ŽH'ŽH'ŽH'ŽÈ'ŽÈ'ŽÈ'ŽÈGŸ N‘O‘O‘O‘O‘OQNQNQNQNQŽ>Tž8¢œ8¢œ8¢œ8¢œ8¢ž8¢ž8¢ž8¢ž8¢ž8¢ýwƉ#ê‰#ê‰#ê‰#Ú‰#Ú‰#Ú‰#|tãù„}°O<Ø'ì“ö)ûÔƒ}ÚÁ>ý`ŸqrMŒpâXA'^ЉtâØA'~Љ!tâˆxâˆxôÚpâˆxâˆxâˆxâˆxâˆxâˆxâˆxâˆtâˆtâˆtôvqâˆtâˆtâˆtâˆtâˆtâˆtâˆ|âˆ|âˆ|âˆ|ô âÄùÄùo8"z§7ï?|óÇäõ€ùqôÚ´potoâ½I÷&ß›roîýZ»7ýÞÜ*ýVé·J¿Uú­Òo•~«ô[¥ß*ýVé·Ê¸UÆ­2n•q«Œ[eÜ*ãV·Ê¸U[±lÛ̶°­l[ë܇#¡'ô„žÐzBOè =¡'ô"z½ˆ^D/¢щèDt": „NB'¡“ÐIWB/¡—ÐKèeô2z½Œ^F/£—ÑËèeô2z½‚^A¯ WÐ+èô z½‚^E¯¢WÑ«èUô*z8\½Š–ž¦®¶¾ÆÎÖÞæîöþ‚ @` 8  ‚ƒÀ@æ`Ü:"Ñá¢ÃE‡‹.:\ôèÛÔèÁE‡‹.:\t¸èpÑá¢ÃEO¾ï\t¸èpÑá¢ÃE‡‹.:\ôìéèÁE‡‹.:\txèðÐá¡ß‘G:Ñ>8}püàüÁ„GÎ v\t¸èpÑá¢ÃE‡‹.:\ôáTñ¹\ ¸p1àbÀÅ€‹.\ 9'A.\ ¸p1àbÀÅ€‹.< xð0àaÀÀ‡< xÉ zð0àaÀÀ‡< xð0²#!ôàaÀÀ‡ï.\ ¸Åzp1àbÀÅ€‹.\ ¸p1ªC+ôàbÀÅ€‹.\ ¸p1àb4§`èÁÅ€‹.\ ¸p1àbÀÅèŽÕÐs.ç`ÎÉœ£9gsçœÎ9žÖ!ßÁAÝNêvT·³ºÖí´nÇu;¯Û»àÈ.8³ í‚S»àØ.8· î‚“»àè.8» ï‚Ó»àø.8¿ ðB´²£¼à,/8Ì Nó‚ã¼àa/P0h®RÈ] ¹L!·)ä:…ܧ r£B®TÈ ¹T!·*äZ…Ü«‹r³B®VÈÝ ¹\!·+äz…ܯ rÃB®XÈ ¹d!·,䚅ܳ‹rÓB®ZÈ] ¹l!·-亅ܷ rãB®\È ¹t!·.®oÝf`e£ç†\Á»rùBn_Èõ ¹!0ä†\Á;r CnaÈ5 ¹‡!1ä&†\Å»rCncÈu ¹!2äF†\É;r)Cneȵ ¹—!3äf†\Í»r9CngÈõ ¹Ÿ!4䆆\Ñ;rICniÈ5 ¹§!Š¿}°Hî£Eq¿~ÿòòúÝ»¯^¿ûâåoþô¸w^‹ç^Þ^}Ü*÷·RÜ2ýõ—/ùðó—¿>bCûgSìí»/¯~¹~üôíï¿þå×ó±¿{÷—WŸ¼|úáÕ½¼ùýËû{¼öñø¿ß~ñùÛ—Oþðfâú‡ÿx;Þ|øüÝ[~ÿáóÿ}3×oÿóîý÷îÝ_ýäݧ_}9êú—?ÿáååýðo>}ÿî£ßÿóóçG¿ÿäó7_¼ûì£øä‹ÏÿòÑcïyæÃ>{ÿæËW?ûü³¯Þ¿p®¿üêË?ÿf>%~{xáÑÃ÷åÓÃ÷JóÃ7ÄÊÃw4îï_£v}ïøõ‡?AÞß;~ ‡Ç~Å¿¿yüÆë«Ç¯aº¾{üæëËǯáýíã÷kÉýõã·îï¿Æýþòk<îo ¿Î€ÿ+Œk¬û;ȯq¼¿„ü§û[ȯq¾¿†üó=ä׸Þ_D¾Ý÷\~ùÛÇ:­ïÆÌû\ž 1÷Çj¶û30Ûýi’íþ\ÆvÔa»?4°Ýoìl÷{%Ûý®ÃÖï ~cðû‚‰Fï_³Ól¢÷\°yo¿yÁæm–çªMô¾_«6¹øÏ¥›lÑ{.Ýd‹Þ7/ݼÍó\¿‰Þsý&[ô¾yý&ùËs'['Uè}¿q:œCô¹’ó¹’“•ÿ™•œ$_Ï圯ŸË9Xùo-çÄ2Ï5¯Ÿk:ïÁ·²¦Ó¶z.ì|.ìd`åfa§û@ÏÕÏÕ ¬üí®îÄhÏ%ž¯ŸK<XùÛ]âi£=×yþ[¯óä2>{¾~.öd<Ȫ̓îÁG·Ÿ+>¯ÁsÅç¿vÅ§Íø\öù\öÉàã·¼çÚÏ×ϵŸ ’ÙƒâAõ yÐ=°ò·²öW>€¾þwXúÃü¾× endstream endobj 1766 0 obj [ 600 0 600 0 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 0 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 0 600 0 0 600 0 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 0 600] endobj 1767 0 obj <> stream xœì| \”ÕÖ÷ZûyÆd@T‘G.:àoˆ£ Þð‚Š jÉE”2ÓBÍ,….Z¡¥vµô¨Ý/d HjŠ'»gv1»yŽVšÌ좋Âóþ÷žD«Sß÷ß÷{ïÛ,Öïgß÷Úk¯½öãŒÄDÔ Sï¬I£FW¨'N¯#Š~dDVöðKÈd¢ï]Db̈Üñ“¢î}á,Ñ·¥N1iò°ÓîÓÄÎChäàøI½RB—¶#âz´Z8%kl~JíØ´UIvwɼ¢©YY[ˆ’#P懒ŠmOµ-E<ýn¢Àճ̙W> …¨—™ÈôÑœ¢òä¤6è? íYç\qíìOF=~‚h„h¥»¬´hÖû_\޶0>P†Ë3q^ˆçneó.é~²ÝC{$Q§ÙWÌ/)úš^»’h_!ž‹ç-Y`=4å×£¼íÊ¢y¥·}4&„è˽D–ìóË6Ç“œ°Ì_pué‚[ÖÄõ;‚ü’²3uînk^ùüÌP×s Ÿ‡ã&ÉðåMŒÀ­ÕÏšxl£ÊË€'›î‡Ð÷Æ{úÙ–ÿG“)ÁômRÏ‚¬ÔKŽDû ýª}¯E®Ùô€©/šŒñ†ZÍá&“ÔÚaº~„z´$SŸ¼±™6r“M[®o^.G"渉 Ã@íbýN9SÒõ}4G–F(|‚-´ƒŽ‚›ù3q 'Óç´–´÷Ñ—t 9Õô¤½NïÓqnÇû8•Š©”îævô!…ÑTª M”O›©’æ¢F5 I=©Œ¶ó©ÖÐ$Ì3Žr©„>Cè ¬ëQô¾“ÖR2j,Giäð"ÕÑnŒ¦=]AëW‰Üýt'M§Á”Š^ï¡“|pñÝ(ª@û²§Ihé:Ç0Šëi ÏW£Vbᜎ~Â1Öyh©˜îO#ôu=NŸq"ÇÓÌf}É'0ÏÛ¨c™„™U žS8œÖßcþŸrÇ¡ y $HsEµ¥vt’tÒ´†9H·ô¼T¦h’¢íìBŸ.NÄ5¼óHo úl€d> “Âe4Ñ hýô—ŒÕkË‹y2—ø4N®Ë2´)KW`ž’—ÇÄ^ô¹Vñ&<7¡÷JÅ•hÙÏ=!7ÉeZ>êI–í¬ÁŠHž)JÆ(W`†Ó ¯ç8šÖÓ;tqŒÃoK‚—ùY"= YÝOkEŒÜ "FÄHô²ÿÃË+K{·Å¯Äý#æø# P?ƒõŽÇ.Ô0’ ªÇ,æ·™C1î6X$c½v Oðe|=Ý2òKÎ/%¯¤–µð\èî\ 9ïhÅ/¢F4k7då—g¥Ož~™zå¹´E–~Žƒ¾Ë5ýPõ˥ؕ2ÝÏȇ~¹èVŒ>å‚(Z˜¡;ØLnãæ“aü3q€~P;µ=~ vi¤!÷è]Ç,èÍ^Œ¡=Ä ¹%TŒU[Å;h*ë4œ§Ð*Ú&B¡)”G£9c㞊5̦EœˆØ:ð"¥É ¥ÇÕä€üÃèJB/rÒZŒ¦|ã,]M‰ kP"#òŽ¢£HRã( î8¹tµvS¡Ý0ÞµÝuЫi#ð”ZB})õ×¥%y ã¿óKÃÉÊAëÑÔnB­;P[Ú“aꨯñ-Vl jÌEÏë±ÃûP™ˆãÑ<ŠG‰nüh=¯G,Gt Õë…K[E üt{·§‡i _ã°ºe\޵ª£FXØi<â?пè¯ô½LOÓ[´«¼¹»éïX߯Pþ¥ŸÈkPüŽ"Ë¥°´çÛ]¡Ú”-¶´Ç×`Eêò´ÈäÕ\ÈÝøU~•Î l*>Ä÷ñÃà7øSþ˜gÁ²æ Îãlæ@N {QúK1šßå9„8 +{~ÿ½!4ÁBã‡ø®æy<i¹˜ ¡{qªH¨’VŒC~ÖBòroÉ$?OÁR~G÷¿C©MØ ŒDÚioú}|€‘?Áo | ÖÁÙúãÿƾQpDØåzºšßÈ;ùjœÊX Æ7·ÌÕŸæ›ëÏÂMùøBŽÂú¶ ý²…öTaö»Ì7ÓU*¬åZ•Þ ­–Ï?b¬òƒù¨¹‚”/ø[Þƒ_…6¡¯á7¼MûørølwÐ>Ú©¼¹{è6h`} mß z•€ýXÉ—€vvò|ø¼´[¤ 5EÊ9FéñP>ýHŸð?°^o#IÚSØMŒá~ìÚ½ü&7¾ Ím`'vF$_ÊYÚ2zMÕßÌ/ò£ü’ÚãNE‰ŠŒÚ ´~>OÃPÜr~þ^n}vüƒU’g†ÿtø½|ñÉÑšK”ßáe9ÙǯÔá^AgÀ°…°Ï°£KÏ£¾ä\hvwØVyÞ Ã˜Ñôa5O瑼4RÑ5jIMôkãE»è÷†¿ºÛ~cþ"ßÞÐj‡þ_¼scÿlÇþV(w´ŸM¾{€ßjúvùÏB¿5ý°Å:üJè·¿¶ÈV^ç*ŽüZ˺þ‡b—ú¬©oý½–H†Ó¼$OÜ&òqª4òaÁ)A-:ó\¤”ó[¼´•úH« ¢¹ñâUðK–¼VIOÃI¿‘^ðÛ¹ÖŒöÒàË­á"c¸ƒþÉ!ʹOù*íá…Cß&ÀûÐÁÒ‹î€ÜdŲD5üc™RIÏa§^n+qiÝô…òîvÀ ¶Gªôì\Ø]Po›òìöÂwº–UúË.ì²!(%=å} od/tîNJÆæ8•âFaY03ök È‚¾°s¹W‹è÷9eÏ~ð ­†®xëÊ< F ½Í‹mׯl¿À•ì·~ï¾äõiWÒq5b+rÇ'^`¤m)î‡òÀ.GLÞçÆ©¾Œn-UÓ#(;çÑz¾¤ôwàVɵ÷I/ %Æá”YG努!¡CÀ;@ûqÏ’ô.F'ïƒõXy'ÌÀÓIÜÌVÓVhX¸½^‡^å èJxv•*Çâ£â–Ø“¸M†ƒæq2÷%ÓW8 ¾nmÜ$ÚŠ¶¸o¹Õ-p)-p¢ìºpNí”g*±^‘‹·àæÕ—Çr÷g7ž]¸ýq’w·tìÁìBí¦dqZ'Õ–·…ãç[“s•uàÏoçªO»lMÕL”ïE¼÷BÈíqøpmñôwá—¡¿g"Z7ËzЪТ÷|»œ_ðm <õæ\ŽçŽ<ˆ5¬Ä»Â`œý½³„€7Kàu”‚³Z®õj¬Ãf7‚Õ8•åÊyuedÝ€›ÈKêÎ~´f§ŠÕ¡^5ýº“ˆç4ìó{á—Rö3LÞ¸`»ã\‘áµØ‘1¸QÈž¢°º’»À¿wÓLÔ‹ÀLeí ´Y)»Dˆ!%¢Ý©4[íÜ8ꇺV\á÷˹ûh*ö·¼Á­Ý ÉSÌ[%ùXËyçÀ}b®d‰HŠå´–]$wŸÜ8ùT ÙÏKƒì_²GÜ+ »Âϲ%¶bgX1#¹«'ÀZÔ~Pr¸à«äð!Ü@êá›|ÄC€GÁj£èsŠà)¼ëˆú ÞÖ£x®ÆÓz<‡[J/\ã¿ðu>ká·a^;V-oú?ã_òD6Ãnž¿Õ^ÈÒC‘DZ?·~g 9Zágÿ;„ÖïZó6e+“[,Që÷ ³ÿ½ÃÅïZ³:#ÙG–‹di¥üï)$OFýT¤­Å\‹/¢V#ÚˆæVÔ:{àBº¨žác° ÷*¶\ô*PêíºV$ëlí5öª³©5‘±=v!‘ñ1´mʱ«1b,\Éժݩê^¾è·æø[sù=}·"¹ëäÝ= {tä½lÕ¶ðÑ\åó'ÂG(éÊ—£ò½ò¼9-x$ì Ö-±ÕxümºD"¬ÂýÐUÿG¾SŒ‡}K£/å;Üg¾9 {¼–x0úßÇó‘´°£ø(ìin²T¤hëkGjé`Ü?â ‰ò-‚¤µô3öÑ~X)yzÝ®†¶9¸›’þctè1š‚Eâ’'ÖIÔò o=žæ"/6ç3:ˆÛww€5î¨nç³á‰ŸåŽt€¾‡§Ë0†°ƒƒè/j—kô5Ãn÷†½îÒ`ËaÃâ»ÀñÈŒ¶Æ@¿Ï f5Á3·á”Ë…ïˆ4™ÒG¦œ_iÍ¿j%ßÉ×¢î%¸îQðíý÷Zÿ'B`·ºàįÓy‡©#rBFé-¥¤GZ!-(<ß 0eƒ*±s÷CK´UX‡hÞ‚RåeIZ­m€-»†×Ó!Ü?W·Š}Ð…O0ÎÿÔ-¢õ]ÝçW^|ÿþU¯Þï©_úïãßËæYû=ñ‹o„soPžèpÞ@ÛOÒ8àg…öM¡ÀåXÑЖ·äÉJk K¥(? k²kжÕûGù¯ «¡ƒ8·à>< ¤ÁSȽy¨Þ± ë·žÕH€îDpSÚ3’Ûá¶~†¯RÔ3¥fñ7а}ʈ‡öõÇšÊs±§ÂEV-y)ØK[66Z§KýE쎰å¡ê,’DÂPĤ ¯V´C½±óÛvyãäæ©^¢=´닽‹¹Ë½ºåÀ7ÉW¾¶<Åä©%Oïíö:~…àæáR^[%ΩJ®ð¾Eç%\[ºTÉq8±*Õ©²'rdn¢(H"™?-PäòkËIÓN%Eš¾ j¤˜ œúF3µ¡6¸WXQ~ 0xŽÚR0T¡•ÚÃ(^G¸ÂvdUH°=ð_؇áÀŽÔIÆ?©uF)Œ¦ŽÀÎÀ`ÏF»P'`¬BE‡m”Ø•:cüïIbœÂxêL Xã |‰ÝÉì<ߘD`²ÂžÔÍø‘zQ°·Â>L¡ãX¼À~äö~ÍN¤d`ªÂAÔÓø¶Fâ`êtQàà)J)Àtê t«w¹Ô8Œú3fÑã$öÕ@àpJŽ AÀ‘Àoh¥GÓ``ð!p¬Âq48žÒ¯¡c'8‘2€“€ƒ^NV8…²¯ Á#€ù h$p2ŽÃ/‘8ƒF/Qx)å_bŸÒX`3Ža׌7äx‰³(XJŒ£ðn%Ρ‰À2…—Qžñî[“s^ASŒÏá¯O^©p>å?ƒÝ)^MÓåÀ#Ø3€‹èàb…×Ð¥ÆaìŠBàµT\JÅÀë¨Äø+]O³€Ë¨¸øìÂÙÀJš¼AáTf™'ñfº¸‚æW?Å­ì à­4xðª¢+«®¦ùÀÛiñ1¬åUÀ5t5p-•q+4>Âþ]¼KáÝ´Èø6a1ð^…÷ÑàzºÖ8ˆWât=pƒÂ´Ìø€þDË›n¦ ãm¡€*|ˆn>L7ïãÆ*ñQºø˜ÂÇi…ñ=A+OÒ-À§èVã]ؘۀO+ÜJUÀg€ïг´ è¡ÕÀ…µt‡±çä`Âçh­ñ6=¯ðZ¬§; À}°©wwÐ=†|‡zŸñìãzà.º¸[a#=`¼ «'ñÏ´ømî¥?oÐË´ ø m¾ |^£-À×¾Aߤ‡Œ×è-…ûèàÛô(p?ðUz‡¾«ð=zÜx…Þ§'€~@ORµñ2¬·ÄèiàÇ ?¡­ðh?¥g€‡þ…ž5^¢¿R-ð0m¡:àgôœñgØU‰_ÐóÀ£ Ñ ÆønõÀã ¿¢£‘þF;€_+®›£«ÝÛ%¦stT§ÈŽÚG´ ³†¶ ²´1˜tM0%e;†Ú<ñ…=Þ1rd²|v!¡¨UB¡Ç†¤á–ñØ U1Û…%Ý(9û¢’noIwKI¶Ú\äJN²e;lž}Y[=O›øíYŽ›ç¤ŠUñµ*‚¸ÝŽ ¶ìȲ,›‡ mÙžá‹Ëª² ³Ð\M%Ó‘YjIN¢K¢Aˆy::ÔpÇ¡¬"¢cvZ så‰rde{:9²ää{ô8ü(¥žUh†Vª¶ ÷X Gz±Àb·ÿÎJõÆw²– ÎWó Ó“æ¼ðyðÏ /¸JÀõx‘“7­ªÊrAÞpX ªªáÛðªÂª¢z£²Øa³:ª´x-¾jAv¡Eëí«¢=ÃW`eœm4¬ÆÁ·N¨q󭓦å7Xa oÍ˯,2 ‡ÔtC^~ƒ 6W¥Š–Tùd“O”ÃÐôZaVYÑ n¢J•««õ\RϤÒÌþ4¦’záM³ª4|’·Ã©nÔk'÷u×#HSÁ¶¶ÝR*e¢ÂÚ6}Ó3zi´ü,x?X§™À _ŠF±Àt°L]£ò·h;Èn¿–)Û‘²)Û‘²)éZ=±ö‚ö|m·Xt]·­S·”SQÚ62ÀB[§­ÂE-V»ÔÎô…kö@¸ÖÞ®­ªšÑÏL§€X`nkGŒOiP‘.ÙàOÙ° )±´ÕFŒj#Fµ£:d´ºé¾éTúbÕ”½»¯)_dcmh_ "­@›‚»_¬–ï §jSjSbwgj“Ñô³ ·hyÀ5 g*¯°BåV¨ø|Ÿ¯âé*žî‹KìÕ c†JÔ&j“p_Õ&h£U˜«eã^«Ç³ Çi£T8V¡Â1HD˜ƒráGkê;;Ú(M÷ƒeâó±½ísb“¼)ñÞ ›ýE-Ðd~šÙéN |=pf ;pP`ÏÀäÀÄÀ„@G`l`„9Ül5·5›-f³9À¬›…™ÌõÆ·SÞ¢"¬2Ð%ê*n•ßR.–_6 MžvZŽÈ™4Œs<%”Slóü4ÉQÏœ©&Ç0ö„çPNÞ°HÏ@gN} 1Ñ“êÌñ´Éž_Ã|Gž<âVYyùõlȤÑÒ}m 椷Gû‚Y'¿FçÛo/ ‹Ó#Ódž žõ PèCçùO¤³õFã¹7gR¾ç©˜OŠŒ19œôvDªÕ Ê  ¿ÁR)R³'ÊtKeVÁùrdCzVÙe Ê‘M–#ÛE庈²\œ ¼åº¨r].(W3ÄžUc·ûË Qe†\XfÎ…eæ¨2s|e4o{«2GÈ®ÊØü¬L—ßQ&îË´’fé0ç¿ùpæƒ5™KåU¡Ð‘] .ô¬Z\é©,¶Ù(“únñ…Å%e2,*­çƒŽÒ,O¦#ËV3zéÏó=KeöhGV -ÍÎ˯Yê.ͪíí(Ê*Ø6¢¨ÇÖ º»Íß]M¢_h¬H6ÖCö5bë/do•Ù#d_[e_[e_#Ü#T_Jë¡–fVßT…ÛD \m/ÖÁº`¨ÒæÁöÈåÑÛuâ'(®z0®}!`™•œ‘œ!³°ËdV[y#ôeE.lÞÎOø²¬Hs £Èì˲ðW^î‹üοòòò…—–_Z.CõW¾pX.“ü²øB 2‚Õù k,mó*ðje£µòò‚…¤Ö´|ÉÖJ8ßxKlZæòÖJ@å¤f8ÉËh®|£”,¸È§6åò'Eh†ä }­éÇÁwR4Â.Z1Nl2ûøsù‹m™ßÜdâCÎó±÷“ºGaõ†4‹¨ïf߇´¾ü6=In EúÒ˜8Ÿ\t]CÐdã{¤Úéa:EI4ˆÊŒfõ]¼f^F³÷×±©ô¾ü>špiNýŒcî­Uó”ŒVòè^êHûÑbÂçm"F¸P+ÞÔfš“ŒÞÆܨ¿nÓCìõgè-:É]uj¾ÉXel06R[:­Å4½dô1æ¡Öd*¤Et=FPI›hˆ!b·q›ú t)R_ 7Ù …*„G7¥o¦õÔ@»h?}Dǘ9”¹’ßç&jÚÛ¼×eó)›ÆQ.U"7†ã8CLÓ¦i[µ›¾h>btAÛy´˜–Ðu´Fý>üCú˜>eMXDž˜¬m¥h¢~¹¼2ÛI¾N‡ÙÌý8ݼ’Ÿ‹u­i/NxÚC‚#•ô×ÑÈôQz–öÒ;ô.Úü^}#³2Ïàe¼‚ïà»ùQ~šŸáÂ$>Ò4íýýDóAÃb<`<‰~£©3Ùàë&a Æ`=÷Ñט_Nât~O8E’ÆzpSss_c„Qa¼l|HJ@Ù!ðk³i,MŨ¯¥›h½‚ºûèmú’þ)ilápÈÂÆžÈ“xF±•Oq“è€õKWˆZq@sjûô©ú3MuÍí›k›O5Fµá1^2ÞRë;ýdb.¡ØbrÅžC?/ÓQúA‹±ŽäÌw=Ú?Ìç Nf±\<- x¿kµ×õNúúæqÍóš×7o3úc¡[œ®NÔ”m’ßÅ+Wß›}Xývc´ç }ˑ܅{ó(žÂù\Èe<ŸðU|_©>Éu¼ƒò§ü-®Ž¢=ää%âFq—¨{ÅAqT#mî0Wi×iwiuÚ;ÚWºUOÒ{ëcõBýZ}© .Y@ó[ç:ž›×TÜô@ÓKÍ=›³šç6¯jÞÓ|°ùs#ÈØmƒ+Úc, 9ã2Ì%ÝA›¡OaŒŸÑq:5ÿ²Ð¸ GaıjÝ21î±ùT¸L³Ae|9ä_ÉÕ\Ë;¹‘÷ðëü&¿Ç‡ø.ÏíEOÐ`ì‚Éb6æð€¨ñ1èŒø'®åIZŠÖ·ŠBÌæíVÌç>ívLz{½>I¯Ð_5i¦Y¦{ML{M¯™¾°L÷ÙˆóD¾«}KìчjWÐÜ4íkñžpñ2q–1¼½Åྕ+2Å`øF; åó("pC€=À."ÈX(Û÷‹dmª¯ÓBù« 1M¬…ô盧b$4m±¶Ol3µ úúPþ÷‹=:‰þ‰2(ƒ‡bíÞ§«°BÉÚ³ºüÝ&™ÌÚ9Ó<bÜ¢7 í=ØÁ!,´7xŸä\ÑÒ,î ž­|á(ìÀ¡ù p;Sõ#Új1Z|Š´+è.Þƒ9î +Ä~ë’Šýx5çòF­-ç« At¹¸›ºŠ¢+ôy2ýÈ7r{ìܳX›nb6éZˆ(¡¢«þ‡‹ž¼z:Vq%q7Ò[b àRm×¹NM‰‚Ïäm$ÕðYýuýu8ßg!Éh®÷gÐé èå²kñКT2 Üã°Ÿ ±×Ãľ^\A—ñzíoü¨È ñTª•‹á|oó=Cë ‰m‡5É d&“Ë£÷ʧ¡ê7TP¦6Ý(ãÚûÚi£À°7Ï4µm>DK!‘°n«°—FÒ'Ü/å º!rtØBÕâYýÑ‘ƒÙNïØaÍϱ‹»6¾Êâ ÐðKåÿa¢¯ÒWè‹ôëq6…Õ\IwÒôgœ&àÜJ€Ç@š3`{.ÃÑ›R¨?f7TþËB^.M=-„•œMWÒU°¼¢§©'Täq)êͦˑ^Žê:ZŽý ­† ¸—£wÅSb3î¸·Š—Åbq}BŸh¯jnžBôÛô š„;ðn‡žb•bQoµñ>zëNѰþý°K¡÷Æ ã ñDÓ~´÷˜üÅXÀ0:I‰4žÒ£ØûêsLòŸ0ixM@`=× &“.#YLˆ<¯i"ªM L{ž©“yüu‘ÎqÖÓ®±M®qÖŸ\c­M¸Ô»š\’ûôîf‹³‡ÙçètΦ5žs›è,ÙôFì§Æçâs“ 'Q,w‡ :$̲r»…Qhþw»Š êðŒu([†Æ<ƒkT î£p:4ó8ŠtZºääÑ£Ö£G)=ý¤õ$‡…Â_ŸÞ0‹Z@€£k|‚߿߀¾)ÚGh HE’x!^t ï(âD/‡£gi‚sÈÐô;›¦Ù¢¢lâ±È ®={:,çÌCœI®!=’å Äñ¸¶GOý±°¦­©^¬t[ØÒFþ7–ÛlPØå¶…íÛv8ìT˜)l;w !vm3cï׋Gžëmž{ÙNq?Nóï9×;Ó'­M˜Íé“Ëê‚<1 »oç#èkx€­S'[ÏQÑÈ(›I¯9*>66ž¿ô†ËQ#CûÊ4~Ðåî”®]ƒ­é££»-q\Ûm7}0¹ëÍ]Ÿëú\7=ßl³wut‹‹LˆÍ?n옜ѣ&¦×‹7kS?^ÏÓkSRzd‹¨'µ¯S[Á܉¿À¹ß™§×™w£³]ê1ëNA¨^Ï!ÛRæô¨o??xÔ„¨)ý2,( Œ6äÿœ0Ìâ†ÚØ!_ó±ä´1k¤Ñiœ>yê4bAÜeÅòR¯Ó—¸NZ"«—L9} 8HrŸÞ™×º]#òbºÇÅåÄÇäźɞ Óm”›Gtÿ/ƾ>Šòüÿ}gfwgöšcwgwö>gïÝl’Í ;!ž` (¢E~ )Ô»?¤V< jEñ+ÞU+g ^mmk=ZßïóÎF‚§ù5<…gDá¥hïô)j†ã±SzNJ ¡tFèÈ‚ÑÀUõ¯•+A[N›ú“ÄŒ9gn?18Õyü3£ œF?FxG?nÓ¿f£~`¾õXsɲ»¥6sênƒÿbQ£Ëé–·L¢ÐT{¡\V“NcmFÞê–á妯–r³þž¤©Ý‡û¸3;°Gtx<AfŒm§.¸¹«„'¶õNßúy}ãB“l“AÂ0<¤öb?1‰‰zTÌÌwcwGó¤šÐÒ–ÂZÌ&`&°R ÙÍÖv20“)˜u6MLáöV*¥®êÎà šø¶Y`p\)äÆ0 Ãjxl¢Š\›ìŸà—ývG7 à¡¢Á³çè¾¶±/5¸zà˜škaBBÀ`¨­·¶´&jf2Òÿæ\êý Ýzë¢E·v,›1cyàS}e7YD“A¢ÍvÖ “ІE 7ÀI:ÇN¢.¾í¶Å‹7lX|Úòå§ÁcÏ#YÍf£±þ\o¸írÒÌeËO;õ;Ë¡FTGß¡«L‹þ9㯴 Wš®ä®l¿6LÌÌjX[P¼ÂôýIkº2ýhÒÏ'™ãÅ´V.NÐúÕÓ'ã ¥R¬½ #ĵgµR¹|<Km¥X¬TŠ#Î /vÅqÃÅÚéŒñð”§ }ɤ:ˆ½Ûƒ9ïÆë `Ú ¹Û¹’£-™²·;Òg}¢#gT&ö”gǯ!•©‚T&Té®tð*Þ¢w˜ H-NêᲺµWxÞƒXa¤âȃ…ÏŠž_MŸ‡'áyÉçý‘dÝ­jÝîš‹Œ&“ZÏtGKkmÉ3šÜõÚƒ5µÒ3µ97^ºóŠÅS·.ŒÍšEÅîê uE_0ggìÔ —w&&µŸôzƒÕî™ç]sÚÒ“Ïûþ3km _25uÞ.Y‘¬NKÌï;¿Òµ®ºnÙd“Ù‡úgx(³óŠÓçßãw©uÔ_%±(­ †°ôuzl;ª—¡Ä—Ó}#®ÃG–žwI™‰x â0Œ|‘‰D2ä&þê!`«€VëÕ’ikF  n»Ã,ÉF£ApË×$‡¡‡ã›íq„Åÿâp VtŸô÷Œè ? ˆ¤-ñB;)Ýý¸Y’ZÇBžr9%·n»hR¥Tª¿ãá¤Õ.)¦‹æÎ½È¤HvkâA ¾ SøÔ˜Å#š­/V·ÜWüµLj‰â)U°@¾zˆZQ¿Ú4Gq^À!/C®˜“ŒnY0ájÍf¸h¸^è…¼-C¸gìz¿"×».X¿Ü£®ÖIQ¦±T•ÊÍTR­C¹$S+¾ñj?[V­>µ*pµ¿Æ'm¹Ÿô"\-ðêN¸ZôÊDÿ\m7kW;ýBLóé=7t+«W9é/?%NgâgÛ¾å¸0þ²û é€ïÓ8›ËDi”2;í¬3"å2IÞl`(Ÿ'âÎD"LŽÅý>§ßïóy}~oÜ!9‰cÙ¸$:%IÌ'â1¿¥¼Iä v6Ž$.Ï Ä Mk’h’úX™â=¾°ô4ðû Þ¨ñ¬æë‘Â&8—ù:…Ñ îÔ,ÓSKRTJ)üj<û{totxaØë†û‡ÉÌæ$O•}•vÂÜðXAgêɸÚ^ðdÙ™00Aú¹MMº'j$÷÷DkUXLŒ%¥a,‚’cžjMÔ3×Mµy ]°è0 Ñ[ýÛC‚"Ê®‡r¹$E|¨ú‰"zx‹ƒ^‡C¤FVßmTD^fgïwÛ$%ðá‡E²¹÷Ïa]¼¨è·1­GÝL'ÓAÔ§•”¾P!Öù€ÐÇ<Àò}ÇúÿˆúXwŸ(zúÅ}&ûÇ+¶*a¶w%”¸"·™ëã.à.Æ—rkØ5Ü­øvî>ü·íĿ¿æ~ßÇr_ნÛÂaË ~am™„ú¸A¼.ª}ºHcúMqï~â)°Êþ¨9u» ô÷ãÆi©‹‘½#g‰@®ÌÔ½§]T ñœ™Px«Ëð Û®ð ÷à÷Þo }¡"~t›D™cC£Ÿ#zôÀÖ<›Zñ9J@ÉÑ¿#®Ñ¿ïôÛ9;k§†FÓø|kÀž'ïÈŒ~®ÅÒ¿=dJ²A¿„ 8i°EcöH§”ë4HƒÍÛ Êäå¥x§]i¸gHgâ¹zñž¼‹p=ÑÚÅöö¹šCÕ£¸Yq)NÅ`ôû¾ /äcŒI5¥¦ÕŒÊ-V³•³²V“Õ`¤Õ¨×PØáÕpÖ˜ÐPž)j8ÆG4ìS`P­9 (ÆÙU¾²+ÑiÂmG~uŸu¦æƒ¥â ŠîŠH9”*ÑÁÑjL’N¿ƒO€AáapÛ+12$² f0ÐN8J–JÞ ƒLf§!ßäcÍ Þé‘w…*”Y'¹Ép˜ûÙ‡ÇlìL5ÚO|YЋ{7!m5-@2 Ûoj”Êôþ•ó7N¹º8žwÃlê÷ ÁãyfwFIµŸxÃæî¬'Õ~Òõ›©?ì©~v÷•Ë‘›:g-Ûƒ2ÞÔ1kÅ%¯tÆ”XuïsO^ò›Î¨Ç‘çH¶í!¿Ÿ9Uë=¨ñ¢±œOóõJ½>†ã‡¨‡ß¡q‚ÕÊ Ïp,EV °"aƒÂϰõ›M’Ï9D½‰DjÁ.dàX«B9wƒ*‘›úfF D/å.„ó-Ô…(‡0–•ÂWHR ’,Zûî†qÝŒ¨fFÈN(.yäDXuE<rÄD »CN KqêÙµreÍÞð…ð@vvkdLÄFÊñÖITY×&c½rÖñËh4!Óu ),‡ÞÀèó™¡Ç®¸èaÅÈYѽðÉsîú‹Úwqõ­¡™â¤ï\ùþ'KþgzjñýÿÛï1™ÝBÖ¹o¯pβåÕ?ÞCbõç£aÀP¿mq @­¦ÆÆ²8!~r|J¢»íÛȸ"²ªí‡ÌÍå[Ûî+ßßö¤cÈý’ã%ç+î?8þäþØñ÷hQ$ïÛጂãÄAð &i–·dS"]„ ñ CÌ”`8¥æpý¶pXÊ â¶©MÀgnØ!uc-ƒØ¦™]´ßßN{'‡À~jå.‹ÒÞd0Ú>ÂWÕAä(È}û¦ ïƒí{HOoŒìƒC¢F \ê!OÈJ 4ýÍåxÂád ‰æ˜FD¥†ãeU#2T#ʯ€žÌfÛúÚPÛ–å±>BZÖZj] ºõ#ÝKc9RsíX~ù—ƒ‹÷x· 8ïxô¦_œ³³?èU”“nÞxå7åÑ"zθl㦗ϥiÞqî†Îj$ÁÃ/ÛµtêúÓH.áµ}s×w4;9·ê<ýÙïϼjÓïI>C  zU³A=SÁˆ!òË`Ö÷wÏȼKÄgk’ÝþŒ+‰, h`Ê4 …Áð»hš1D‚¶ é0!;¨W?Iñ°&»èAêjÇû‚@ „ø †TQ¡îÓ,CX‰2ŒË Õê5pGü°;zF¾êè耴ès"¼SøDçRzkm¤Cl7ÁÔÅIœ/ßè{æK 8RÆM⟛ԨIc˜¦G^ǯ?~¡„'ècõ2Þ•«žçC'½LlWýr ð<ê‘Äùó$ÎÁr9ôg-jñqþ(—V&x ùô)éyé‹Ò·¥­üÁóW« –I;`â ÇX§ŽË!/"èiLþ.&7–à}èd3RŽAüçî4{;6 Q× 4µxœ¹ ÄÚ%(ùc áq›ÝÕú)„d’>ŠÞW©‘òv=ŽõèõxüÎo€úíá`ðVX÷xäB g³ýXƒ ¢ÜމÜXÔTg¯u]¼bʵwÿîÓí—\4MS=‚èØ°õæçî¿êê«Ã6QS„07Uç‡BÞñÂÁr¢5"KŠtï¸ñÑãLå |J`]/ H 5à‡5k!êŒ7GƒÙ`$¨~E6•5{™™Èv3SÙÓ™9¬1Þö ן£ús¬9>8ú†f&è¶Axç †aX'ãdUFe3Ž Ž©Ž>Ç"ÇeŽk×Äw;vÄß¶¼-ýÕæ°`k U…‡‘ùáó"—E.K-+.mØÝù½õ/æ÷­ÒH Ja‡3ä Ê·"xlQ·YÕŒŠT!U$mÊf n£Ý/AŽÜ·#ßIÓœoÿY“CNC²“³yÞ5v¢Œ g2LæiêÔˆâ8ެÔý»¢ Ô”Òn܆W¦tý¤!"ŒôëR ñõ¾Zïüˆvª?‘ G‡À‹¼ÄÓF«Íb£Œ9&£á°#:ˆ¬¹j.—ˆ§XXÌòŽð!òŠ'lI ¥MI Õ‰œÐ¡39‚kzÁÑÙR­ôdñx¨è‘e‡ÄJ=vbQD:§G„^<í¾ù«ö<óÀ…O·tW6ÿîÊ™mY´IéΟWŸUÔ{—,Ý´yþ9s:(Dz‹ÞÙrë׫®{ôµ»¯]¸i~”W$·ÙY}âƒÈ«;ï|üú«|Z+dåë£Uú÷•.tÕM · +C4õ gµÙ¸ÓåB. V·ÅeE´€©³È fF°Z† 1õàv7§ÈAŸ÷õèħ¢àŽÞlÒ“ tl­ÝtLÝÆåÈXo8âÂc€N¯¹Ÿ` MWce»ä12‹U=-6­úç ^Ñ#˜%@á@3| k†*áÕÚqÒÑÑ'è+ãe®lþŒì|Ê`±3ŸÝéYë¹od7ZnNnÊޙߛÜA=k²e_1¿˜u\†ï‹P%g˜ÍV,88ú§­ ±ÂÐèŸ@lÜ.²©Tœ¬eRÑ¡ÑQbô£­Éh„Ð )›ÒØXg:m t: ÅN£-6ˆÿŸ&¤Ó² vÒïz;+òt™’ñ°fi w ïæ:9¥ñÙA¶úõ{ñ}=PIœê¡Ù/ùB¢‹aƒRXC~'àPÁš¡Áe4$"ù\0äÙ¢†J 0ÆÅ)¬ÿª$P?î@ÝäÖ®ìèþm àÙ¿ DyÖ@#ãܵ¿ýíÚs{'|¸øŽ;{óÍUÓ’-[.úöƒ.:Ý Ô„{µ¼‰e2¦,*<ŠU’± v 6{°±Ù…¡QnÊ%s.ÂÄø¾Ò{Ò×±/2 †g.”$ï$N—Áÿ¡F°SÞetî(=_z½ÄÌemq¤Ú­IKŠË€úƒ™M…ÃÇÓfÁ3Í\@3G:e›:˜e£î×ÌñNÞ[ö¾kêÌ=M=ˆšÇ¡K80²Oß:ðªEþÊp½eÔ>\Éd!c\6»ÕNE 3Á)0FC"ÃAŒ¤,#I5ꊤràCÄ&›†E; 1!ë;PÞX<Œ]G€êÏÀÀ‡1 æz’Ž5‚u¿êlùˆš‡ÊÍIuܽ­-ô³]ÛæžqïÙÏnþöSÍÝíêÍgýïµsÚ½ÑêN6ý7:Ëw-¼àG?:ⲦõËeË¿õÓEGn\ýè{[/î½µX‰ Ñmqà¦2o½tóöÖlÓ´,øYï•Ðç"h¾’Æñ[e »¥ÝXL`°¼ÃbQÿxó¤£G¨©½ç{T Åñï*ã}noëÄiä1²îp—…Âm£éWáAgjâsö=ö·„½ö…Oí_ &7”‡·5ð˜Ä^ƒëã¿~*3ƒXÖl–fûk¼Œå·d¬_%ª`‚jm°a˜Öú®G]9 •ÔÌDÛôÞVfœ…Ùê{.Eô„G\êËÕ†¨tYÉÿ¼‹º˜v¦tìÕZð #f9.ްqfDvuãH„9‹D¶“ËFæ>±‹Ã#3~ *ì­ ‡A,~j«ñIWœ·(Þ3]Âð—ŠRE¢%Å_ß°ï’LvEŠÀ—õŽ]iפÃQGL鮵é[ÈxÄœÚE˜—Þj|4õF"F·€U/ЭºJ‹>k|Õú¹•>ÊšGZ¹OÔ- î²€e‰U‰uë–…²úˆfEOØ†í½ 9Ò°#ûþ ÃŽ7àp=+™ -×-K›ý½nÙªQ·,þ þIݲ9é¿2?FYBÏh]DZø.ûÝ"e³o2ßa£“\"ö½Øãv&ϲ(F÷µ—¼¼œXž³È›ù,© Ã䂸¯ø¸‰M ≚£ø}–ml²æ"Þ&GŸGi¼—4Ê¿U¯{:‘¢w€ô“yÈZeX'âýu˜ úÂ6ѯ ) §ø¼ö5…EŸÄ¶0ŸÂ5ÒE (©nýxŒWþÔõâ+µt::«¨[@»xþЛ¿÷{“¿3“ð; Ó¦=ðÒeÕ—gæ:+™™ÙÎIu:‰†fÌÈ·tS0=K?:Þêxáö¹?¨žzĽ ˆy–¹ ePïÔ²-"!ߤ\kþDédï)¹ò½R¯<Ï;/×›?˜á³(“É0EåÍ µE“mël›lÔ;6lK‹6› Ì¢K“—ìªÚ”QÕt&Ëä8Z_2›tú਼âЗdy–$Ë) HbÔO–N ¡ÐU¡õ!zO‡Ò¾PÈï D}^o.“ ú¼NŸÏ+‰bʃrÍÇc13Ä.fùB¨@ œ’Ï©^‡êU(ï>åð$Í™Q}ÏUˆy_È·×÷©ºžÛÙ@©b^•†ð$$Ž>·M4WÄÁÑç4ÎåEŒÄéâßÄQ‘TÈm+¿â¡Ö<G’FOm:¢wшžÕ7ºõ›lÀÇ« º˜] ¿ú»Go`ö<̎樿Û䕿šŽÑô#o Ü£ï1ü’Œ]xÙA½g÷ÞØ¥/ÿŠÈæÍ7kWW_“ËôGHþù³Ãòy5uÞÈ]侤3 †fC ùQ5âóµ§Ï<’ý¥ù–7͆u™µÙ»Âw$6eK¯ˆ¯H,Ë~'¿Î¼Îy]|]‚=]˜/¬0/–ŠK¥¥Ó”pOääøÔì*»¡‘Ÿž™¨d&fçOX®¨„ý_—ñc|&Ë^&<ÿU‘>!|rââðªðÚ††ï ï³9Ö/+Y„2Ų؆°Ž¥ìád ­ÊI• ‚¥ÆF™¥d6–à­!kÑZ±N·Î³.±š¬ƒøj-O Q)^\/>'î÷ŠŸŠFÑÛœL±¾uú)))MS.«ÅÁ¼ú½Výz«ƒè ð—.à…ZÏ©Þd=ºµQCxNrš-5›È8óyœ0Çò8'¥ó(nQóód‚ýð•cGT“\ÛÖ®;ÚilmÑ%r¾¥Ö˜Š`4 o7 wý⾫/ï½ïœ}+ê8=ozçq·\R݆šqé¤Ùw_W}mfÍÝ;.ß8¯xçÜ™×K\NµÄü‹Z§_sH>iQ»vé$ò)ºÑw˜S˜GQzG»4ïÄETAÓm]ò,÷|ç·ä……¥ÎeòRÏv·¹ÕßÒ0EžÒÒçî+/rÿOùÿíEsS‰û¢Ѭ]v·6†cAÞ†hÉÛž•­–ë˜`"ÛJ3T–³«ìÙUõNð©|)T*–*%¦¤´¯> 5¤!æ×wGjÖ×Éh}?ÛÝNx)À5ªÝDŸ1†ôÔÁ¡Ú=D;dÙí÷Ècw„¨†LëÁqûIoÂÂÒd]AŽP Ëåf Vè·j5XtS†YËo9g–¦NNú±°}ñ#½¢K’³§¾²°oîIs×4^óÁê=Lh"qɇ!¯Ç7³kv6”Ÿ6ï„3o~ªú×¹ó\²è.žÕóôÈÎxäJL>€IþR,s1ä^ ÎªEn4¯±\+­q¬q^ïZZ^¹!¹6½.cµ¤p2œöGÈÇŽ¸Û“;"T7ë¼µxÓÈë  €›¥ÈqÙÖ»ãV,ð¡ ,‚n6ä8*ÈRq•’ȇyŠ÷rÁ ƒ·)¤äwãvÌŽw3Æ“YH} :û?m3@.4‡3f—·ñVÞÂ3F5‘L¤éctHN‰2Fs¼€Ã®X'ølG¥P¡Þæ"›RõÖ98*?Ȧñ›i õ¬ ©gF@¿§?¿èñÂôtàÛל÷½jY¹—=Ù¯Ä'ǯŸQým=)Îl›·¨gáò•ŸÏ™L²bíOçÞ6­svoîdȇ3ÁEðGKšw^h‰q…‘-ö¬$,Q¨‹ü4g„:³Vȳ–㕊qUÑéugŽ€·¹@œ*eËå@!™'$*“UÕ@>4ˆk^ «–X\õ–‘š"dñR6ªò~ü7ÿ¨ŸòwÑ*âp/·™ÛÃíå>å \YU (/ä©ü TD9‘ªäNu¥¿IŸÚ2e‰§î¹áÒ§=@*™Ð?ä~ Žf#µF-ùè5Œ„/ûßè8<©#š~˜Í޽pxl"aql#C<ܹó’8Ö`?§¾‚O§V³:‡xd@Ç0zY¹ë]Fˆ¨r5¤×±êöñjU}‡¬¼R:Oå2Î/m/-/5£Ï´¹g0ÏY³‚à"¾`9 øšò|C¨jÈ67òPFZH‘WVŠšCi!M¥³‰D ©J3JÄU„ð §PÛœÈ'T”r½9:Gì‹Çc«BTE¾°êõmöíÑyˆÁwª0®Ö Ÿ Œ ”¿z’äÑá’Æêþ ­rÒ¶é÷űÖGGz¡ÿœ€ûÝÅ«» õ?ûàÎÚö^Õ7æÞ¤ï"†ùîÑN8Š/ØÌßìðÁUP9®ÊÑU­íúðÆ0U*Ât>ÙzB|–¥ß:+~¿åþøSÆ!+ÇÄÜ1ÕšŒ©ñ–¸±µ¯Gíí(ÐR.ÀjâqcK¡±±X”Íl()ä8èö@yÊ·dBŽø:Ô–¢Úr~¹Ì8" ; ôo¡v:T&ÁpÁó …|cä”Ty6ÄR¬Ò¹zÉ1eE¿‰ZÐÛ³:ž¶·o¼¼´×ïyщGÁ\ çjDúQyºÌH€šc ílô#”†Gjô£q9*ÇÆê rƒÛIe)PõÂân>úvÖÚf2¤%˜¡¶3ÈÏ~vÞêWnœ¾æ“ë_ºÞDº•Itcã«W,ß=££wOùÞ5WaЂo­ÞVné]¿uÍÆµØ°vIÉÉ{ƒÏ„wàôÅóoì¿øöW¿ §p+¸ØƒÝ›l^Yµ²ªÿL³J÷È·ÉÏ™šT°Ø²u…à ëÌ_à@6„#o®Q_BE\L7‹M\Çd²$ð•P…ªd»+•ÉÝŽšŽ°³uQ9]×Ù„þ}@j¥²ñT*d'–ÉR7jÃmÙæ¶¶rs`b,DsJ£šËeê7¡f³5ÍÐ1q¢ES0ÞŒwkþPó¦îÇ»©uÝïtS݃ÔnÍw¼ŒDÄ`¥Që)z:µ‡¢xjµ„¢©§¨Ýè8òAL¤ßm™KȤq¶CïçŒí JAç„‚~«c"*ßxôïþÓ»Žý:èMÕ"”ŽwVd †"¢]vÀPkFþe“­Õ‡7á"ÿ²r¬Ü¸zäu®«ÔÓ¾™‹¯u¡òKƒ^%ô5Yiž7vŽZJµTƒGKÈOÁÛÇæ‡ä±×!æÞò!Ä\½©å‹LÁ³†magØUôƒ“ MÖgƒ«â¯§º­šSsMõOLºÈ§ä!r¬-úMI!ýØß‚üþ (5.dä¯q!DŽ“®Ñå’Ä€'¤*’ªx(Jey•ãX"BÅé”ðõïxs âup6ñúðãÊoòÖ¿ÜuqT(Fýà˜;/öê$_ï 1“Æ5nL‚¾ú>vSÑçÚ•ÿK¯p\î\C]O¯s¬u”Y޲8-.z#u—éaÓÂ{Î÷d##œ/ìv:™FV ÇÊ °ÂJÈÿ'2ñ’Å„C”hêq(ÕlbiV¡²á«àçySüùö ËšÈ &òÂU&lR’w=‰W/w@áÆî›V—ØõO­ “{;‹€­ß$¢‚L]²FÑÀêòF“ƒvç±` –))_#‡z×%SPýõõ’õûóh²EôÒ1–¥ßw÷¼]‹IaÃ=¦œzrk_u XêüšqG¼·ï=ã<Ü¢‡ïç'ž˜ Þ8ƒzÿˆžÛl@ÄÛÁÊ“©oiýž¼§ÅÛo*7µ¶œéëZYÜuIäÊ®µÚÚ®Ûµ;ºïÚÝõR“ƒG-MÇ7ÑÌðÑlË Í]åY¥ç+?מëb}Q_iataé–æÇóµì~ÿºÅÜ8¡ÒX4gŠf;òcS:P2 zÃ&œ_Ÿ§ò8Ÿ__ÊçJL ÕbÝŽ ØÐtT¸[€ðÔÂ=#ǽ*¯†Ô•V³QRoéh¤«Yka*“£%$¡`$êŒD¢(RŠ2aÜ fbj&VJÑhòÆCµµª“*–TcÑ uùöHÄÃ5â3w…'O.¡Éjã~E©Ë5·Ö[:»´´D£ÿÏÙ·ÀGQ^}Ïóìý’ÝÙÙÙÙ™½ÌîìeöšÝ${IHbv *ŠAE!À â Rµ¨­+Šx)X¤Ö¢’·Hë¥*&€ªøú¡¢´B½ö…ZÄË+ŠýªÍ÷<3»›į­’gfžÝdfÎ9Ïÿœó?gë¥ú©õªõG&߸ Ì üDä%Û™‚ëA‚#XõÚ'oÓFœÙ%omåÈ£®!ö¸0]'ÛÞÃlÁuX6ËC­²ƒ"39[1;A^Ö—¥˜ËÆߊ¤ÙÓˆ® ÎZ4ÐÑ‚RsеLs³B}eGÇiÒßo±GGxŠ=ßk´u²µU!Im!øP{rýh‹þ„.l&dõt&[¨h0ÆbÌ€«0áƒPŒ€‹ÖÈÔ‰¾¬ æâ™5ðÌÙrE ž ”.¿³š{%žùÍÒËÀ륻N54CÇ¡¦jÁçÅo¹nü™¾rå‘vÌ@Ú! ¥&ä$å°“„!8²-nä$½Wö‰rØ'‚¢ÉÝ«\MóvŠ ¬¿qT™Û¡"BÇJòdŸ‚Œ1Mw„˜ûÝ÷ ìƒ)™E5_ìÎò]ø°bPÁ¹x¡*]<ƨ‚E×ó"ºž&‘š?ðâa1¹éEbñ&xÛó†÷q óÃDÄáŦIžéžÇø-ü^b/Øëý|ì­™Á³¬yöµØÍö!7;f·Z)»×ì“¡ I¦` &aÑëKËàÆÔÉ74äòÞ´I#ë3j½^£öšÜåÃX`e},dc4Ë:h¯;U4>15±H"xSƒÃwK/ ü¯—x䛂÷ò4šBÚê•L|XôùxÞã>žìñ¸›¡Ê!ºa*É‹é´ÉdVÛE³^Œ45yyÞÛ˜ç#±ø"s"Ý‘g"Û#šˆ‰e#•³FVDöDDŽ ¹Aø7Éáõ9®»ñw‘¨=5„jï ¼Qbì~•šVóöÝöýö/ìj;7Ï:+±Ì]·K+ÿŠ=è°˜Hô°ä!—Ì.³ØRto Ø<ÈŠæ#ÉÁaÛe7+‰ ÍÍäŽ{zhÕóŸá³y]ÿÂô= Nå2UT€Ó҂𑹥çÉ5òÂó:'åðøgÐÆýYÆT jïFªKaªÓX$0”„{O†SªO±V¦ߊ¤8 º%FÁÃy૘€ÖíŒ[m²ÉBf‰Q‹ il8¡ݱd4šHzÃFµ|Š.£ÒéÔ*ùiùØ™@ºB#eñø8 d¼‚À{½!7à•:à&ì 1æÅP-L7mvÓ"Ò|Ú•ŒÀd4½×ÃäœIn‚HJáœ5Ù™œ“ìN®HîOj“®Tñ”Ÿn§æØ»í+ìGìj«Ø¹Úæ««N]ŽtJ” CC Xk-ƒ5…å/ûtåUÀ ôÈâÚæAé–ù]rhÿßv§‚rÙ| ÁÓð kÊÕpáÐjÅVï’)o²­~.\ƒ­“‚I&©'οÿHõò„Ä^¼ð‚'¤á׬/s:Äb¿!¿¡Ž2G9í«Ì;ä;Ô_˜·ØOÈO(‹tQ†aÕ¯RßZÙUV›…k78Ï~·7V_…§IÙ |˜²† ! ±È%‹…­»Òµ"’\êØH¢ žÆÑiì] YÃCº÷!ä£ÁdÅ~pW¹fþ_w×0g Of«(°LÞ—s3Al_Cˆãã§Þ›ÔpöÔæ‹JßsqÝÙOü¬´(]w²Fÿqùy? 7¹ìÓ.¸¡mÞ#ŠNÛdNÍà5iβÄuweH<˜},úÛø£)=uUý•hŒ¨î kEbr]{¶=Ö¸³›‹¡™á‹"ź 2f§7Î7»y~b~ýåÙ¹O×­Ëö5>_·9ÓŸÝи¥ù•Ä+u:s#’öÍÍÆ:}ïí¯×g°°v%Ì}¬66.-Ä›k›Çš”¸7twä¶ÄÒÔÒºåù5¡5‘U‰•©Õuæ×¿M¼™ødÜ·uDzÇòß6{òãšÕÙL*) ÁDîÆ¤£Èð_ÔoZ Ë%»*ìl CC8挩‚Ë‚$1Šýà°/l.ÆaX².Ù—Ô$çÂ"ׂ4|°JhCZN:ˆÃz…4Žê!ÿ³´uÃ/öÈl¢ë ÷!‹æeh`¹yLjE¨°ô匃ÌU“:‚­œµšÏS…D )l!ò<²xÈãš—,ò<:/k^²xÈãš—,4Rx0FK»@Q£+—ªy&™¯«$¡Êt"ÌaýÅZl¥ÁðG‹.Èϸ°Uhžä1SN£crS>~ÿÄú\vm°±Îm¿û)7RðÒž÷ªê-L³ùiÊi·šX?—7Ûl–¦Ée10ùc¬ð¥ÇJ_–¾*ýέöP΀¼€´¾–hÿµ…†wHçú…¶ídÛfåÔ__¯Ò%šë'×Ïtͨ¿Î]ò†Ü½¹õñ'êw‹û|oú÷‹ûj¿mVÑP?Ñ×!ܼÝwWò>ßo|O&wú_%jømÃ_Âúâd¶eÄBøüñ„  Ô&ƒ¾‘/{£µŸNa¥Oa}O¥ôÈÑãqÏñm…7µ°Oª!Ð…ðd&ì!D "ñڴijƒðˆJ¸©àÔ@_`OàH@ÀxØj“H&äš&/<9?\ì9XËõ¦ÑN0”å$1’åDÉõEçD—DWD×FwG¿ˆê£Ûà:üv2èmŒ”F?è­ŒäÊY™/ä“¡$æb»±_ãw<~M¨Ð¯VƒZÉá£Á‹4 ERM§f…f·F­y½#&ÊÑýù ó0ÑÏ9ò ‹J õ`˜ÌâÈ¡{X©(D¯²äçDÕ¾•3q8À?$GúäæšJ ¼3BÙDŸGŒ ç‰óÔ EgÎÞ "`GÀì9Ø ]Nã*C°³7¸ª48üY?Ô;‡<ˈ†CúÅb—ļÍ1ñ»=c·™S½µôóO–þÔ'›Î&¼‚íèþû­Ÿ\ó²bKñ„OU8ñßê¶j.5 JŸxCõ?£¬èT¤i½8‹3Òj*š…¦`®]2w2©ñMç™ç0ÅÔyM—˜Èü0uIÓ#©•M¿ RƒÂ`v°}'µSØ™ÝÙþ6ñYö‹Âáö_‚/É‹>¶Pí6ª=H‚¤Í4!›m§(в´ d‚$Eò  "œMŠVÑh)Qý¢k‚Ø.fÅœØR/6ˆþAxƒäA8ݨwé[`~‘Y±½½ÐÔTS©H;†æTa¼†Иͯ×Ì0^€§mVMZS@r5G£Ñ¸&6ˆA4»)²À‹~~ÝØ‰t®Û«òrgn¢Lis(ë&7å(‹L-æ´ãÕ“›r¥*Ñf?rü¢<Ç¡ƒêd± e°xxô€»Œ<‰“J$N*‘8©D(¾@Zj4˜éŠ+ØU¶ärîžÞ;€ÞC ¢-z›¼Eï¤pì½Y>FïÇÛþ“?Šþ“ ¹ü9™á/%»ÅY°Ymž‚MãÀé(àØ’dGS‹^lÇÉZiåóѶmŸC[›ùt ê¤Ê´±”ã1y4165v>V(ÑàñŽÒúÒãwÈÇG15%î*Ý)Ëø‡X¢/g‚ ã½CxΧ U9Ê/”&(ûF‹ ãGÕlT¬%óóÌ_d¾<„l 8}¸ÏÄGRÎÎ6€!hhà‚\ÕÁ+´3©‹™9Þ™‚Z/ÌÜXPÿSø:µ‚!踠º¼Ê•]S…ïRS%»D=š S 5_’L ©T}ƒ7Ñ@TœØ\Ù‰åì¸w!ƒÏ©’äã!™óI#‘PЀ ØghÚëÅDHLÄýbÜ%P”ÌiA <(Nm ƒpû&dÕE‰ö$« T'µ“ÿ2£ñá”ÃrÝñÑâá2üV¢2ƒ¡µµâÑŒ2t_döNŽú“‘ãéÏTyõ O–+÷l X[&àößå¬þÿeiUøs¾wK+ðÑGx¸4ƒÌùU¹i€dé̪Üü¦ª¢ïŒfNì#U É Z¥q7ªu‰áÇ\f‘±Ç´ˆÑª>†[Uzˆ~¬>•Ó…iUþ’ ÕÕbëÉåðN•UA&ÃEå_á1Å‘ï¤Ò\NX‰s6¢&.‹ìÓÛR Ú18ÃÁ•zµeìܨféq÷31Ëð|Ú,o‘ÚW·€]„Ü©Ühˆ#!iªÔs•Ë@3\gälÛPmÜš ßÎ`Œ$Ö<î0‘x #†v«ÿT 5DÍFÝ,`R§ÓJ7¡“ë²V_'{-EÇ í®Š$V"Oò"U/%òàRé¼'túžH©D]Ø×¢¾Î¾Øõcw/}»ëôjדº>úQ×ÓéMº?Xž¥7º¶ð»,GëFÀ8PýÚv¿ þ$uWjMê Ë“©—ë÷ÕX¯áÓ’+œÂဈR^»3–ˆ| ¨2fC2?H3ÁQ˜T&ƒ€C£‹’ªd¬ÅlŽÒ‘‚W‡_¨!ü~AB«‡Ui¡ t s„µÂ3Âva¿ \MÎu‚¿Þ­]«Ý®Ý¯Uk¹Æø¶S†•I< ªRО.ÆÞ¦\?\ŒŒ³cÊ ÞvB‡Üììð"‡~¸á£”>¥¯tj,ö”©”4:uÁ£SìÃ/–{8…ÜHgF稸]’þ/ •(¿V®UÍxnÏOx«ùÎÎÞÞKŸõH§Ñ2ï¡©kûay|¹eéYÏ]~îâ]³mÞ¿~°û¦ÍVòΉ ÆYÊf´ºâÏÚ+Ç´~c#;[Î?çŠéspL¾=ûéê¡g±ëð´d"Ó²Û¨ñ0øØÎ¥Ç8^§&¿h.šÁ¼M¢`ð ½Ì“â*²>:ƒÉ+XчZW<80û4.p²ÒÝô~©eìâŸ~ø!¬¤; ¸»ÛAV#°r°ÌYý¾Ö?go0—†4í*¨3Õ…&E/ŠÎ>Xzl1ýß١٥߫~_Pó©ÞƨëAƒæ S;è4Å_.ÔuEÓ|°@³Ðt=ü‰ñ'ü¾åüVßóMaéò‘~þôYžQzÞAO°¡gD8hG‚c‚“`T]6ˆÿê­A -ýsÓû«^ÅäÝ_üâ]ü£þhèÍWJ_½´£tä•õr¢6™Ü±sí_ÿºý”Ùpg#ÍŒG6 F“'ÜŽII´óªãýð;‘¾Âÿ†?èBŽs¦JxJäB1<3r•õ*îÊðrÎÌàtÛµvºË~‘ãêð‚È1—FëâH‡+Fƨ°ë.r ùKvµk½c=:7(R6+G»åªÎãTb“Ä6!¦3 ¨µžß8… ÉÒ¢ïêó•¾}ÐçJÒ‚ˆrŸ0 k¥¨¹ÄŽQÏi›ÌSFæþ¨Òƒý°ÌN)|QÂ8^ƒ‰p‰‘þ¸ÚÑHft=K0@ä²D¦Aõ²L…“kY´ÏÜ¿í¥¿°nï¦ÒN[bÂÕ@õê.`ƺp ºÛOâo—@÷ûo›ÏŠ_‡ù<­PÐÒ2ø èyO‘î´ÓífÞÈ¢†¢©Á@T@÷©ƒ? ÐÄUmT´sÚj¤ÁYåÑ-ÔP11¿øÛÞ¸ñÆ7®}ÿ—òñ¢·Wÿòí·¹úmõGǯÁ¶åw;o<°ø†ý7íï*’Ü÷þû}X’¡ÌªO#Iæ?±GºÒÈ<è€ p<΃¯ÀWì¯sïRïrï»ÿÎ~èû–©áJ¸†öÇõÈ[þºŸ×8;žÔ×áMÌœÁ“µLz$)7Ò}ºrUæ­³ÀàHO±Æ|[˜ËR™†“º“ܪ¬}!vÑì)r‘Í—“G˜eûž:~ü©}ËvÝ{ïë¯ß{ï.¸óײŨ2mBòâ¨\½qÎYññ'¶°i JgßÿÇ?­ºÿOBºp!Ò…k.4IµºŽû¡8À|íõÚ•à~Ø…À4®×þV·Q³I÷ŠîmÝ~—Î¥·9e»m¥}4¤g³4íd¶XZ<ÉÙuÉdº.#н¯5³åtG€Tð«)<»Œ_q3ê§¥`.-÷¢4\¾¨ŽE£èq7jiÔüÜ~ ubdj&ýöºÝu°nüïÀ¸I—Tëµw¶u¨bòå ¹í´ÿ_­Á@/U¨`øEÜ© `N®ÍUæä"…$]nNvk8pé<ŠJâ~\#ÙÚ-„vøè&¿ÙG+è§KI*ºF0jUu«;]Úœ?uÕ¬K—Ͼ9¾Òr€ä¶ëgO/]%k6ÂEǧOš¸¢sèŸUýUͺ©Ö¿xè³jÇÆ6¥‹ñ<’Fc#TÁ.‘⮓¸ó¹yÜuÜRNg¯!gÐÇj͆MÀÌx¸Õ„cU/ÃApÿf¶Æl$À6€T¹!µZãwtÒ€æ¼ç-)— ‡ä§ÔZ8vx m—]Áææì§TE”o\ùÓ%`2¾î!V{Nþ s 5¶wÞ)wâ£,Â2Ø.m,Ý¢j’¯ÌK¬•$n˜ IÕ,k—¡;ÏuÖ^¢ôÂ^Õj«å\ý ýZý“ž­GïÆIvÒf yOmV«&å‚%‹IëšÆù)»…YÅãÄçÉ¡JÅûÌ5~¯·S Ô¿loìHRN.ª$>‡Ž ÔNâÎHhÄW^½âÑ­š†|îÿé­¥耓fÌ8cZé+ù®^Н~脬ùó®^Yë“ÿžË‘–oGÏuÒòÜBÄ35…®N¥ÍòVê¤L…Ëí¿µÃY§ãáT,žæÆ… á3b…ìUôUAÓ;Úóv˜ ;cï„ßÉ~þ,{<|<«o7g¯ ]•{’~2¨ å‚AB1㦪 ÷`¥ßHø€Ï‡©™,øä yûf}¾@0à µÙZÔÕudëê2Ù@m6g3ÉdI-“1`ÃLgäA)4göA™çpÓö¤ˆç'Åb³Ã±˜$áp(äÏeé\.¤í”ÝOi‚ö\ˆÖA Åãq´¸µbK2ÓR[›LBS e#ô-iìBºƒ øëpèÂÜVÐG„ÑLÍ¢loú³uÙ¹YU[#o£­ýhõYdè5@Òà7Ô¡¼i \~x˜èU#e øëEpµíárä­’©Ë‡Ê\Tç¸eê”¶ïà[1QpQÙr ÊÖY+oûG ®P»tk¾£›þɉ¿ÓÇïÆž‹LÙ)§ŸTª`>0à ei™ýhËÚ±yD[¹!¯_AÐA„ i}7GÎ]õˆÎ@gM-Ÿõõ@˜Ëú«Uù8ø\¥ÆŽàšj\P¨ÆO Kÿa”³ø2¸,!ëJ 6—”ÁÚKdzË<ÛRzü¸t×(×ñ[ÄæCî±óy©«6¼iÔ6¤Q4Ò(–(JÙK×:ns ðaž1#B‰30B¤XÇj›-ÀÀo#ÉNr;©"9n´5”›óžÞ žÖÞw²ýû¶×a”QG«wA˜¬Æ¥Vk£µÉ2ÎÚlmµža•¬íÖ‰J4çÍÝýIuä¼Ðs©îRÏuºë<š¼®Á3Q7Ñs¡NS§ovk,~'#ùruL/™¢—÷GD|,öŠP<ÑF¤ý…6È"Ú¶·ínSµq“âO±£b&h'ÑZÝT 8Ë}•H85Žø*1‹§–üT´F‹­° &Æ‚Š2ªðGc,g4«5¦pLñ–3:} ª‰ûkvùQéî(·Ö+Üp‡?'ÔèG7ü.ú]ï"ðòf{¥ßžÿ®6¹KÚ⿤m•FÚE»Cùv ÙupŒôdUÚ|< ©ŒUÒ¯^8þR¡éÚæYùIr÷…5çfR ÆwÈ»õµÉ3Úåéd&»¼«ºôÂk'vtLl9gæÐ&ù5¦M¼lèMyÿ¾öéÞØ|å`ÄAR¾Iùt$åM`™Ô¸O»Owhwèá:}¿¶_¯êÑõêà<Ý|ý|·j{½þÄ76B•Çw•@ !¯§”X„Õás@G‡Lá Pc1­²$Yð×0t”W%Ó’D˜ Ã1À¶&סۆ–&-Ø ~0O²{µa\в F¿k?8¼ 2¼]Yׇà-‡±íd*#[E8‡Ž¢Åâ߯þwq-íöhô:½Vµ 8·Þ«`Û¸ŒmÝU&"Þú?ϺiE¼zäö5Å"Bpù²ãyŠtœ,E§ÀÛé3~Þ5·³i–,“ ~vÍ7õŒF·eYYÒufŒ¿û¬¡/FÐm×OÚoúrŒ€ xßð~u+’á?š(FÍÐNFõxÍ´¾§ù«nŸI{µîJ¼ ^¦¾R¥ñªš…¶Ëì œz‡ ² •É 3 „ÜÕƒ+È[‹SÞJ5ŽÜD1AÌA¸Lb)A+áž:§[»]»[{@{D«Ñ‚Xd‚*~ ZÜ{°ËPéöRó€mƒ(=|t#I[hçÖáЊûÁ@ oãGüÉ¢œTÃyfƒËVh<ØpxÓnå & z#tx°áV¡^„øt´‰B/¢¡mÎ6v§|‡wHÚ1XÓãANù€ÄÿcïÛã£*îÅgÎ9{r²ïWv³›×ÙÍfóÚì†$@`#¬)AãJ ÁCC@P~ˆÖRDE hýQKQ‘FŠ€ˆh-R¤–p1RJ¹\¤H©××K¹\*á÷ï9»9 ª}Ø?²óùÎ|ç;sæùýÎ|göÌœÄ÷—Wl²½ÛøþŒv—«¢ëÓ»º>£ö];©c‡kÖ|È€¾òv×jûûLÅ™_>wì?~ôìñÿ`;ç]óQzÙí©E±¡ýô–A¹ý‹n¢¸‰¦: }"Þmj§÷´… ïˆoë—ô»ä#¹¿ëwJüH/yøÒb~¿]é(²žH†Ç“žáw)³”Á¾§Ç”t½?¢ÎFÔ”±DSÒ£À©æˆÏ Ï÷ѧ„$’̓>‹D%oiˆ˜åLK†òÞ€á)Ñn¾£jßzÿ´7®´pí×{µÛcyÆb¶î(—{M2e½ÞïÒ¿ÿ<7»Çuìµ"elw‡m¢_U¤zì¥Ú0kÞÁ™]ßüpñ^©Í–úÞ_¹ª³sÕ;ù)«î¸³}Û–®K¯u‰Ê»¦ WDQ!j\¶ÿÀÒeö³ÝHè»õÐwÙ$BG³{\Ïm² ÊgÌWnÔA^HëÈá«É÷¼u¤Ù;Ý7“ÌóΟ<î}$¼*ølè‡á—‚Bë¶µÙô™ü—å—óyeý`Ön)c³!e:,+Ãp5†ã‹âÍ-JÚ™"o.ò¥ë“ÙQ®<åO PO²G^ §ýqý=¯÷ö+ð±ëçÖdmÌögÏ:“ÅgyŠã›ÈÚ!%æœg¦¡ä±úéö¹öØWˆ?r$¥+Û8Y{ÔÕ[ZÊv®;±X²º(c—ttÄÆæÁ:ü…³Óh€>Ñ%™¨ƒ8ÍV} 'J EýP+L†°cK²4½%éL—ä-"N9`É—­làɳ=¡‹Kº'Då °r¿Ä€ ëøm´Ô6諾VÍIzΦö܇Óì²§Ç5(Uêz\Ërµ XŽ[û“F=èqèÍŽì2ÏÀg~AÛQuŸÁVñ¿Á£|ü”Îåê½O’#Û[órWvŽÝææv¨úÍ~öõ7²Jú_±…Ρé×söÑä6ÒX¹AÞ0ðÇå{¿vÌqÈuhÈï‡ý§ãdÙéa_:Ζf78D—nHò°,GŠ+eHÚ°ÇüO—½a1Ü긽¼±|zô¾òùÑ”ÿ úSç&§~ItKw“T˜Ÿì»®¢Ì›j1'¥‘²’âl!<Àb6òzÂÛ<Ñë®óÙ|ÃõÛhÿͼÌ^q¡+béÁ>‰&Mä›É^²ç3½#úÏŽæ§øbl–tÁ|»­%Ÿæ{nžÄ‹A½Ï0I9|Jý-üT½!ß¹g}<±û…ûAšWîÕ[yìÊÅœå‡ÙåôGŽ{HJ‰¦ Ê¢e°ìÃÀëššEÜ©C®œQºŒ7ZQž5 ‹8¯·¡*Ýý ÊÄ(5½¿9ê,Ó§ï¸ôGâé­±âÒûªßU‘Þ½¯«\÷‰Úu9̱ɰìˆ:Á*g3nª5|`U²)¶Ò “j¥Ó`šÎÒ–a‘^cŠ…“Yš)f÷+]JÇ®f×$Ð~ÍÒÕ}m{n0 ÞÌÏSV³ì½òêGQüÈ+•µßÛ÷î»H)Ê7,=îìU-k×ÜTÝõîÂÑOuð…À©K3½.OEnù ÂþyéGjö¼‘w¿Pïwš½™?öM g½¯rL$"—5T4=ÀVO‚¶e'ŒÉ¯c¿¤QSš7[«ß¢ß©_R¯›m~Äü´yy·áAtKì› D m±I’$?µ:“Sl«ÍîÔyŒùÛèOb¶Ìh ¥”ˆFŸÇà\(l£/Åœ¡”,}»Iº5]NoMÿEº4€^-b =ö,ü›ålüR'v\ù£ô²›ê”ÿW¼izƒÁ›œEôiÆ,¢ü¿¢^)—p›³÷_TÁþ=ÿoq¥€ºw t•ϺgÂîN“5Õ$ÿÏ=OuàKïϰÎà§0á¾øoßR*›Ø7s|U‹fqFÄ[ÎX;Þíx?…äÂHlÔ [\\ž‹z%K2ŽÀƈd4&K~‹òGª!mŒúGj®ù‹Ø FÈ€OöçR—Å)û¢$WïNfefZ¤ä¨Õ":}¼A– q»Ø$9ßj“¥ýI4‰m°çõÞ`¯¨P.­VßS_1úªÓa|¸éiŒ ¶rmt»ƒÝîlYÄ.:•–WÄСŠá›$ÄÏÊýÒ õC|$WÓüØ7»½ñ÷?Ù°çþØÍÊNPØÿ÷2vÃ縌¸ÿÙá5³¸LìŒÇ«§ïPPe™õAfÃ'¡²é÷bý^¦/Û78xY/dv ‘Y¶È°r‹Òrû`Ç4î.[£³1ûˆ´ÞaeQv1VG,ÅDLVSÄÄ›ÆàY~½Í®L¢PÛ,ªÙe·_u°[tïÄë¯üÉU¶=‡¦*ûžcÛž6ŽRYù‚ 3›Ùát:N‡½ºÁ™fêù¨>YÌŽ:·Ñé1ƒƒ‹FlCm¯ØxÛv:8hr̳Ób{‹}ý€]°¿I_žÉ¡>õlP„NáéƒO‰æÉЊk<èýõÞ™¾Â;ÔøÏìË6õJ{S¸Kº^ÀÛŽ)Þ£ù-Ë¡aåƒ{ì‘ ¼)~9öÅï(ë¿ø^Xù¥KÂrèÉ<>ûiž+×ý¿ÞõS÷6îu×f·D8+÷€ë ×+®·\ÿáêrIk¸Ü~Ž—)%UHMÉãò…¼”\w¹Pž2R™r«p«³&¥ÆS“7Þ-4¤Üå¾ËsWÞýœ”•®îuÜË‹)kÜ[¸7„m)ݯy^Ëûµë]÷ï]î?¹Nº ®4W!Wè*t?êy4oƒë ×nÝnçQ×izÚ}žû‹ë¼Û¦¼Cd¶&^"RÎtÄB­Jr àÏ0lMà@€o ,pì0¬Â“~õ$BG,ÿ{xPˆgçÆ&óŸ'ÓWðPÏîZI^…ï(úÕC À•<‘à—=©O㉄K7ÆJâ'äĉYs"AÖœHÕ ¿ Ça¹ÝÜtœmEÒã±lŒ§”/ès£>oTvDMbÔè“e“É(¶¤ÒÔw<”ý$OybÅý=±¼Â2O,'¬ŒL°<^°,¶2O469æ½A_À£ÅÜ® \¬ß 2ŽÅãX<.fµ•qÛè 1“NžœBSÞq O9£:¶ÕUÜŸ9¯–*Co¡â…lÐ…Ð…çхƳ»ÜeºXJÿtOè8vrÓ½IO|Äœ›811wÊN'Ld‡àw.LŒ](<{Š’Ôž'z†ž­°ž´â‡•¿æá…Ë6ù'N¼ç²?W"ªïÆw¶äII°v+4´Í—Äó¹|¯·nµ‡â4~aÃëÛ:ò/àÞýô«uÛž˜Îv§O1¥7réOR„Nãœ?áVk¥´ÆÛé ¥Ã¹'cOgٲ윽Üv«Kc{,YþÉt†½Å×’=yø;ôë>û>ßÞì½%;Ëv·H$•¬ôóW:ˆ€‡dåðJ•C \”F-Q(Q{Ô•£Þ~Ñ’h š-í-‹Fcñƒ¹ápîÐÛteÛhx³<|õP+û³(@ðù\F£Ž¸(;„°Ú¢kÖðÞPá¯f¯Îµc<ßêÜÛ,uA—á©Ôë½ú1*žÚN“Ÿ6‹+Â'WëkÎ"Ld‡Ø´”}üéF@lz—{ˆ ¦Ì!ïϴ¥Ì>0Ý6”2køÀ4+`` g/+Sfùôò2 X%NOÚ+Ó»K˜¢ ®]u‡o»´ëU«“í|ɮËǬ«^¢Á”qªœ}»Öáõ«$Wya]ÌæÖЃN ¬Ò¿`BñX×ë]oàÖõy¦×âÒ»Öþ›Ïêhͨc"ô Ð_u=Ç¿£u½«ìuš\I°0)aÛ£ùœÚ©2º$ª§»æ +AªJèP&Hª=Õ_hò¹ûÓþ¶±¦˜û/Žÿõ’£7úhƒmŽcŽ¡c¡ÿuÛ›ŽíþÝþßúÍ šö»­Ä¡è4™&S$¡Ì¤ù3dÒÌUþÌL¿?ÍŸÍN?tlãÚЭð–8’•—uºUÊ+€É”°‹ƒ`Êq»©;‚—ù½Žv¢#6#77‚‡ üÙ~GI‰¬Üañeß±°;-»)SgOfªOZš3êõ‚DsLõ D úE Ì$s\&ךy<ó [™–cGϬ:Yת;®;£užÒ‚í8Š+šxõ ñMò£¾iɾw¡SGã¿ò‡ëWUˆâ^kïØI’µBR¾‚î£ñïA^•½zýê㚺îódzM).<q½•Vߣž­±:Ã?ù>ò§I06ÛM)É88å~®°0W÷Ž£?%„ÿ ¸ÉMþÓ›Ù1•ÌzîÍKçˆéÒy¢'[$Eðr(¿Þ…,SéˆX«Åï2SÎÎÉ&³Ód2›Œœ™ºLœ‘š-2qƒÖ+Œz:QˆZôCõ-l¿ÎãšØÂ>Õœ:K³EW¥¾ï|2qØaP÷Wó`¨S®@å”?Í96Ãp….ŒXàÞãU|ˆJ½æ) ¼ý£¦ÐøÉI¾þ4ñ½0þÐÅǸr|ßâ"áÚ.žSw£.^‡Ÿ~Þ3ŠÛÙÆw å*º.rË„?ñ½mT3-#$Éc®)~Óú-x^=Vyr˨ú§FªÐqáQ– n. ~U³Œ|D>â,¼ÿO!EhÞÑ=/±X¼Qlw'ýQjJ¾NïÔÿÜ0Ù8ÏxÜô‰ù¸%Û2×rÔ°þÀ±Eì79Æ:-Îߦ¬w5¹'¤>á)ôK›‘öAFyf$k¢ìñÕøçdWf¿x:çû¹åy›ò÷<æWh>*ø¨ð¡MEawxk¤®¸¢ßð~K"¥‡ËÂý<`ÓÀå“l‹6V˜*ö_·yè£×— »mØŸ‡ýy¸ÜgúLŸé3}¦Ïô™>ÓgúLŸé3}¦Ïô™>ÓgúLŸé3}¦Ïô™>óÏ6ì/2˜{‹°/a³ßt´N‰ } 爙«8On§CT\ÐÄÑ‘TºRÅE’N7ªxÙˆ#‘b²NÅ“!Î^7q«éivGþú ©8%á5çH’Ϋâ<)ÒùT\ÐÄÑ£nŒŠ‹Ä¬»]Å“ÈÔD‰¤ ¨x2ÄiPq­Ò͆”©ÀC^FñÄu€[Å÷‘þÄ“þ9ââ—OVÛPÁ•6Tp¥ \iC4q”6Tp¥ \iCWÚPÁ•6Tp¥ ®×”ßÀÊ–dAܨ¡›ž”…¸••-)‚¸p{Òuˆ;5ñS°Ž îÒÐ=øìXÄÓ0/%Í Mœ, Àø/@ünÄ‹ŸËpIS~I“—QC7Æëò‘I ´H1)loÕ ]GCÿ+϶iBZ±6uËTLQé{1¯©`_9_ÅÏâN…RÏBN¨Ã¸-`×ax+¶üÜD¿)y5ª)LUÓªG›q§|YÍYŒ&Äòà¹|p¿MIäu¥r5_–öWo¥îÔë0¥»€Ö†Ü¤ðÕÔ×^¹öݜܳ\QM°š(uiÇüâòÀÒWêZ‡¼ÁjÞ‚2våš*-]Û£UëU¹è-¬UÛ!Þ,|’•v6Ö¦>‘‹Ù1®ÙG/É%ÅÅåòø†z¹ª¥¹¥}nk½<¼¥­µ¥­¶½±¥9,_ßÔ$W7ÞÕÐ>S®®ŸYß6»¾.<¼eV[c}›<¦þ^¹q¦\+··ÕÖÕϨm»[n™vÕ´äÆf¹Â&47¶××É7·×¶×ÃÃÍu‘–6¹BÚä©-³šÛ!é™áêú»f5Õ¶ÅÓ¬Érðìú¶™,½þá~ý伪Ʃm-3[¦µçߢ¡«ñ!ú¸›«Æl¹·¶­NUßÞÞTßv[Ë,yFí\yÖÌz(T`ZKs»\;Sn­o›ÑØÎ 7e.õ† £¯‡Ð6ô´¶µÔÍšÚΪqoCãÔͳà66OmšU¶·Èu3[› ¨<Õ¦B¬úæö°,Ç3oinš+ç5æËõ3¦°§ºÓjŽÇ¾b‘0z]có]r[ýLh«©¬i5Ùc#«iE±yK{ý Ömk]˽ÍM-µÚL¡ÐµJQ¡ÝÑ2«½uV»\W?»qj=‹ÓPßÔÚ«F0¶ Ö³5³·0¤&`°éàÿÐñpeègBƒÃ$¿šÿ9ÿ&ÿ €×ùíüMZ,vcÂÿ!¦]ß#¯ú©azB¦ÐO%|G¸ìA»„‚‰›2I4ÐôÇ ¯±Aàzˆß¦N/µq~]Ù0’“„.§ýñ„iJB/¡®v¡^%êv“À>„w˜ýÂs‹ åçVž[Í­üîÀŸåžüGÜs€ÿ_î àÿÅüy¡¼È'ž—x ðd´,^Ï7ñ6ÂñvÞ7ïJ*ïP½K"Ä¿^ø.à7 £-Œ|¬0ðq­c0 ð»„&Àg÷Cè<áÀ?üy].¡º<]!áu!ñzBÅaâH‹ßo|”x3àãÅñ€Ok¿MXl§N¼[}Ll›Ÿ!μYœ ø½â½gŽ8(sÅ€?(>ôï‹O¾Tü!ÐWJïÆöéO„—>6˜5˜ Ðæ·ÊcÈ3^hèx‰¡”p†2Ãwi€²¾k x•4IÃ8Ã8Ào2ÜxµáfÀÇnüvã(ÐüF«gc|¸EP9Ä¥“ðµmµSˆ³¡~J)iªmo&C „N¨®”‰“੸¹MŠ›ŸâlTâ…ÞRÝÝÈ 4Ô.‹[ò—Ò¼¼,8z·$±ô0J9ˆG “ ŠÓrœG(ÁNݱ$M¬ –Avo!~±$8r–Br@Jn!E†•bB“+“Ÿgk$UK ï· ðNpaÜ ÕÌXð!Å0†Þª†f*UÖ¶¥ÃÀ°`9ÀC«Ö¬SÝ ›¶AZÇÁÝ£Cø¸ÀýÒy`$À˜3Jaµ^:ÜiM›¶¼ °›K ÃyEÏE¦…á0BA8*ˆ´…†…ë"s"ó‹¤ð…бð…"oxƒPSø¡Ðd„å¡É‘‡C›Ão1(* †`OŠ,RâN…OuF†…2!m©*tÀs ìáÁeEÇ!Þˆw;<¿ò±C{¼<áÑPžI‘9Ảõæ/@ ôà8ƒ1à¶G9B9Ÿ×ø— ´> aIè Àüð„‡Ãж‚û"”íEµŒoìïRá=„½€38øA¤E8ø1ÿ$à Îü8>­Â{ï{¡9€3øðLCéhß"'Ôï$”é´»Ú/E¡^íKÄ^t'@{$³è>ð?)FX~/é­ uD:Bã•ö+Ú¨…ˆ1^ÿ¢S‘‘¬ÿÀƒý¨ðÅfè“ÇÔrÉð@¢•~œèGm{vt§ªˆl×ô[ï~d}¯ôÿtÈ÷mèój„ñáÖÈnð÷Žùó5ÀÏ{áùÙðüAhÓ‡TX¢BO7Ÿ¬F`þ6ô¯X§<«¿ã/Þa°4¼I…m‹TXa+0\¡?Þ9 þçÁ}Vu»Úi»Ê{o«mw-ˆÇSå1ÁŸ‡Ãiø÷B7ÿBØ>p â3ˆóïÇÀ{køôòäé"ð/‘o{öÿIä‰È“À‹—… 8Œ)861ù8ÁÏ’‚?ŸEè=®Äù|øO‚ðÈÇà¯ÿ!E%‘sEæˆ1²(ò%Æ-ˆG€sà¿1<©XbþˆXÌEÄ"oÄX(b®Ø¬Äg~5þ8ˆrW4%b/ö‚\-¹zü à—ÁÿøW‚¿üAð/Žd—£¦‚¦‚Šî‹(rWþÙ]\²6 ôb¤£hkd@Ñ>p×G*ºÃaüE:ø»Ç«ÕÀw«Ùˆ°òê–[;ƒËx£ãÊP´§ìS!.óŸ€ûŽÉu‘¥P–x¼Sᄇx·ƒ;¹è<´ƒ.4¼u o?ƒøØý<{Ç¥r¥ŸJ—¬`ò€2Ÿ[öAݶB_¨n¨ 4ˆ0,2?²Æö0>0SªSƌҫVDæÃx1:T þñà‡6--.-Oø7_ŸIKãsÑ4µí¯8FÀ¸¨t@eé¥ãÀ½%Ñî½çˆ/Ù‰ËTé”ði„;¿³;\Å/—­^þ+ÉB\˜ ,”6D•6—.ˆ#´C~÷ÁÐsN¸P´µô‘¢}¥ÄÛ¥tqd@é“ŬM'•®X þçºý½ç˜ÄØÓ{ RëÿÖÐ8âæ>‡5,µ'øøRXºøaé…UÞMd‰0ÖzKu!ÝOÈrÝ:ÝKÔ¨ëÐí¢VÝnÝnš«Û#RšÐÑ)¢$šhh]tº˜*zé=bº˜NÛÅLq %‡Ò'`•WGŸ§‰ ôÇú{ô÷е°.ˤ?5ÜaØCk„œ¹[_ô»Ò <® ðµìªp€2Ð'ý5 a-XxL ×XUÝ1ßîhÐ%ý kúAÿôƒéýÒ?[uAŸôƒé_imôJ?¬ûìzò5àî€tæ¤d @§/w@À|€‡,Xk« ´ô`R ë¨X5Á*jYD–ÃêE²‰ì »É¿̕r¹\¨®>Ø•kÍ3ÏæÚƒã‚皃g Þù\=„ºû,x(מ› ØÉàÞà—Áƒ€ î„§õð„Ü<| Ÿí~<¡]ÁµÁÎàzÀ.WOv.¸4øvp`_§÷¶ÒÞ„µup<ÙÜØ‚`Cpe°°ÙÁIðôº8oò¸ÏAÄXýK¸æ¶ØéÞ<*‡¹äÒˆç §¡ÊPE܆±†±$ç Ï×kû¶-%Í8»Ù—(ÈZ²|ê¨ìÆx»@W'GºãQ+¹>g"ŸY-OÉsËÄÜØ»:Ê APE”Á$”Ád”A=Ê gBÓß9%Ö[C‡­‘ó-§ÄÚ•ýW£éÄ6LE{cýçÐÕM£¢ÒO4]CËÄ^¢´LC ô­¡Ç^¢tºJãˆáoâ5Æe©WíS"˜Å”8L‰Ç”$L#ùªO P²Ç¡dË |K&b~IW}‚ç–pKÕºðXNáª}ôuâ^»$Wzâ«ÕœIØjò0ö§"9ìuEæ(H_œÆî·ûSïy¥7É6•ö÷“«k˯6ôòÚµPV§N•ç•:y‘ö9Š<¯¡Q=9«i#…V¦ò¼–6Zåy-mºÊóqÚ?–ãÿ~<û·ÉÓ¿*ÇS²•ìE]œõI…µv*¬µSÞ"UÎÝÿª†ÕYz_zjwB:µû£ôG }e­l"Û»×)ÐÚÜóH•㘣ÌvG<áª!G5¾^¦;¦s˜šçášô.OKCqnïi˜ŒJ¿•Ž|ÓÚ»ª\óÁ< f¾Ãî°3Ÿã0Ú“Ñ.V\ãZ÷³'”˜ÝqæaÇÞxŠÝéÅãa:š\óígígó{¬a§têkèG àê{ƒ:’¤§ÏÓgiü+µTNâ8ÊVÀõ 6s ô<Á¯mh¨Ü>nøoÑRùÁ|Çô¬Xê~5_þ •¿T3Â¥iêfçžç~uû)·FÝ—¸—@®7p`­º‘Û5߯m#IPó_‰ÛõOæös`|<ȽOLÜÜÄÂæ+w„;BlÜqî8¤ùމ²A†11ÛMR 9†ìùkÿܲ°•ûãh/ûó^õ­ä½ì[ÌûÉo1ïåßbÞO‹y¯ÂÑ©„C4þ¶Z:Ò `Ì¢äLš× G{м”i‘{zÐìÔ¾Í=hzÊÞnZӃƑ/Á·XKƒµàY^—®êuŸhô:…ö19©ÑëÚ Ôÿ*zÐŽàš(¯í êÎälÄ!¨‡PÔC8ÔCxÐCŽ6|´‘¤’àXéhîeöSº‚wvsÓq½þ¸_Ökã¨Ï>­ISÁÿ½÷°zå?Ø.öf Ö,£;Ô‚ÅÛD”½QJôDZ¿>áï1 ›Ob)'U†æU£Y)|E=ƒ¾H?ÃýÔ6¨7¨ç„šÍ `þÞ Ð9 ÜÙË?%Ss@3º M"UúâoÑûVsÿÆæï¶ÆúªÚç êB¾A ·a€2B’[¯ F½Š×tƒÑEª¤ßÜÉßòô_3ßp]ÿd*©ƒÐ¤ù `þÞГ>ùò8’·;.àqˆÓªÄ£ÿÂæ„ ÿbæŸ.Sì}ç šµûwNêj½xRk¾Æ¬Ë4 ŠRÊæ±=—ÊãóW«KA;ì:´gꊧHÏ{:Òk؉\Î/T!=ìFÝT°cB-Ø[…ÑH·°g…›À¾S¨ÆPg†Þ!,ÇP†î@ü$Ã1ýjŒy‡Ÿ…îä׃]ÌNùrÅâNÄÏ >‰Ù|'³…r´wa(”–72:ože¶n1Úm¶»“_Éla2âeh‰–ÂL­†=EÏêö0\¥Ì;È(@?ÊpÌ=ˆOuuh/F›½—?‰…ÒI¬ `ïB[ɱó*g6ÆÜ)œC|ÚXBÌ}'{–«Äô+Ù³\%öE%>{c.E<¤ÚÏ"¥¹SX«[öÝ °Ïë~öFÝEh™V𷈵3ß)†˜ÍÚð¥ŒÎ(ÊZ^ÂZï@{–m‘‚cÙa ,â^Ä–™Œ­ådº”oÅ2ïB¼ñˆYù1NSûÞ¥~h3k»4ìÙ—n»áë÷êK/ýÙ¥gX3Næ–_<Âpf“ ]l_örøÄ÷t1ýo³9;£ÓFçì][Ñ>ÍúT¥°Rµ].¥fJÛ0¾¹«í!Œ‚ô>[ƒ¹×à³5,wºS-ƒÌp|væ~sßé/Åtvb.!Œ³ôÿWwPU$[¿¯sêT ”œAÐ"YD$ bB%‰‚"* É€ ‚8*fGPPsó˜E1g1`VxÕdœ{ç¾ûÖzßwg]Yî³»ºjwªß¿ªºOõiÏ ûü¥u3ŸG¤ÐnùüÌçÙ¹[T€<*¼@œñ­py‹¾@ÊB~¯ yŸÅdÐ#8!š$Ä #ªpføœ-pEÜ;ο‡Mp¥Zà ¶@íjz%×~¼í5ŽÚ"4@Nw8?-|=DóàxUÚãA£xv*°ö_oÑ->&ÛâfØÛ^ éü=>Õ@M>Kø·PÏ";™5æë-;Òp¤PùºŠø‚¶R°Û¡oþðÛÇX0’i›(dÚäÁ¿Æ[6‚ãý°)í¥Ú>2Ëñ9[áΓàˆÐ>Žúy:&b£2¡Ú÷cà{ðeyŸE`c[á]nؼå¯,Vækñó͘ÅÇáóã弆qÞ`«¡îÿþ\Âxq|ŠDwPx^ysrüZ‰Q~,ø\èáðB4¨]apGÊ-X 1¿ó­LXk ³%ßy]Mý^Ë·2ßOÂZÞ*òƒ6¨Ú -Ð6ñŒ/"¬ýÎl+c¶·è=Dîe—@ü~-·–ÀñÑRÁîä²ø¶ÒÃÀΟaáp¢­Ûˆì Øâ{°ûùµü·$„©„ßó±Ü0°ƒ˜Uänò¸nÀ,hÐZ<ŠÐ¬Ö®ÌÛ­•"¯]è*(Ø!¾b–û½M˜q~ãu˜µt¼•ä-:dç‰F_€ëñüf>ßN)ò5Šm•¯ÿÔy·v¦:FÍf<ïP?ǃ=y´ N€ épµý® Ó#>Ï|°é¼e{ÀÛ`ƒÈn|d„Ú”a+ûÀ²ÞBÛøÖ§¼…8§Àû ±~+ÃûÛ ‚#Øí:ø9…y‚xôóœB7˜SÐ9§PæJ þ}#’¨ êÊÿ@¤ñ}4 $ÅúTòHQD:g á^Ÿçjü4ËPÀFíŸrH144.¥€M›‰ "¢ãƒÑ|°EÑñÑ)¨lEtrB,Zv3ËŒv€­‹MEûÀ{*.<,{%‰y ì=8va§œE½CÞ’Ÿ¬ÄOVô“¥?YÜq.ô0yËýd%;¬;¨7²úËYíå;>SÛçñ¡yí½VA ³Rì3µãsaû'w±ýSÚ”ågŸ²ÇÚËɽè˜ý¸µ=½kÇlÄ®ó»fðc:$ñ‚ø)üw‘HBFBVBN¢ <[úÌ«»@S 3±(*H™²½ˆÜ‘?ÛcžVà¿© ÞNÏ­ÓÚé¹wzÃÀãØ•P¤ÅΉ)DyÞBéwP²J½‡ø7ß°Z¦Â΢f# á'ÜJõ€RÊ_•ÏÏ îq” ,ÿÔð Û*ÂXIÀ71%aÔ‰¹Ln¦j,nù4–†>´ œ–?å”ð>§Ì)3 zplDÉÿœÏ!@UXka=l„Mqol­p6ÎÁy¸ÏÁóñB\„—â¼ Wâux#ÞŒ·âíxÞ…÷à}ø>†Oá³ø"¾‚oàÛø~„Ÿáø~ߊ|E#ˆéCÌI_ÒX[ÒŸ82”øO2‚Œ&ãH0 'Ñ$Ž$I$™L&id*™F¦“™$‹Ì"¹$ŸÌ&sI!Y@–ed%)'kÈz²T“Z²—ì'Éar”œ gÈr™\'ä.yHž’—ä yO>“#œ'Ëuåºqšœ6§Ëés†œ1׋3ãúpæ\?Κ³çúsŽÜn<ÂEQÚƒªÑ@DÃh¥‰4…N¡4“æÐ<:‡Î§‹éRZBWÑJºŽn¤[麋î¡ûè!z„òO<«°:VgWCk²«¡‹u‘bCv5zá^¬™a3D°96Gî‡û±kš…³$ž…g!)œ‹s‘4ÎÇùˆâÙx6« …¸Éâx’ÃKØÕì‚‹q1’Ç+ð Ô—á2¤€WãÕH¯Åk‘Þ€7 nxÞ„”ñ¼uÇÛð6¤‚Å¿"U¼ïD=ðn¼õÄõ¸©áƒø RÇG1Õâ“ø$ÒÄgð¤…/à H_Æ—‘¾Ž¯#]܈Y ¾‹ï"}ü?Dø)~Š ñsüá—ø%2ÆÍ¸™à7ø ê%òù S‘¿È™SbŠzö‡ú1¥Š‰±@æÄ’X" bE¬P_bCl%q ¨H"+2˜ FÖĸ!âA<-ña=;âOü‘=EF!HQD‚ÐÆZIGE¢Ð@Kb‘‰g-æ ’H‘3I"Ih0I!)È…¤’TäJ¦°6qI'éÈd°V{(™Af w’I2Ñ0’M²‘É!9È“ä‘<äE Hò&sÈäCæ±–Ô—Ì'óÑp²˜,F~d)YŠüI )A#È*² JR‰F’udE¶’­h4ÙAv 1dÙ…Æ’=d $ûXŸm9@ ñä9„&#ä bõú & ¤…óä< %¿“ßQ¹F®¡pr‹õ‘"HiB‘äy€¢ÈòE“äšH^³_ i!-(–|"ŸPùF¾¡xŽöNĉP"'ÉI¢Iœ 'ƒ’8yN%sJœâç¥h Éœ§…R9Ö«Lãô8=4…3à ÐTΈ3Béœ g‚¦q¦¬ï—Áõæz£éœ˜£œ%g‰frVœÊäì8;”Å9p(›À @³¸ÑÜh”ÃãÆ¡\.˜ Fy\$‰òiwÚPUªŠfSuªŽæÐ±t,šK'Ð h ¥¡¨FÒH4ŸÆÐ´€&д&Ód´ˆ¦Ñ4´˜N£ÓÐ:“ÎDEt…Ši.ÍEKél:-£…´-§‹è"´‚ÓbTBWÐh%-£e¨”®¦«Q]K×¢UtÝ€ÊéºUÐ_é¯h5ÝIw¢Jº›îFkh=­G¿Ðƒô ZKÓÃh=J"þ—o¡¬ƒ ° cKÜ‚çáÅx9.Åø\…kpþ ÀGð Ü€Ïãßñ5| 7áø Ó˸Eä'Iì‰#q&CÈ0âG¼ÉH2–L ¡$’ÄE¤˜¬ ed5Ù@~%;ÉnRÏbãä49G.‘«ä&¹Cî“Çä9i&ïÈGò•´á'Å:œ"§ÊYp\F5èxB#èDO“h*M§3hGÒ"ºœ–Ò ú ­¢›évZCëèoô心J†@É dBÐ0 & # U¨”è“$è“è“4è}’’’ê:$:ÔtHtHtH t¨è2èPwÐ!Ð!UС C=A‡Ô@{ÔA{4@{4AW´@W´AWt@WtAWô@WôAW @W AWŒ@WŒAWL@Wz®˜ñf@|o ¾/âÍu `½/°n ¬÷Ö­€rk Ü(·Êí€r{ Ü(ï”Êò@¹P>(wÊå.@¹+P>(w¾‡ßîÀ÷0èx©žÀ¢°è ,úy¾@Þp ÏÈóòFy@ÞH o7È´Ú¶q@Ûx mдm!@[(д…m@[$дEaY-|’±6ÖÇÆ¸î‹ßá¹x^†Wâr¼¯ÇÕ¸ïÅûña|ŸÆçð%|ßÄwð}ü˜¯¢áøh¸(Ï%vdD\‰;N¼HCÆ“A&’…¤ˆ,'¥¤‚©vÙNjHù•¹„õÉ1rŠœ%ÉrƒÜ&÷È#òŒ¼"oÉò…´âÇÄŽ“ÆÚœ§ÂYAÌËMàBÉEÚ“Ž£Á4œFÓ8:‰N¦SétšOçÒt ]FWÒrº†®§›è6ZMké^ºŸgÇšü_Fßæ«wÀ&p§­º6Чôé}z@Ÿ>Ðgô}F@Ÿ1ÐgôõúL>3 ¯7Ð×è}æ@ŸÐ×Ú[K`°0h Zƒ6À -´·v@¢=è$ö‰Ž@â@ Ñ H$:‰ƒD ÑH$º‰CDw qèí­'ðèÀ£/ð8ÚL?h3ýÍÀf°9ÚÉQ@èh t : BÇ¡ãÐ @h „†¡¡@h„F¡‘@h „NBc€ÐX 4B€ÐD tšß®–a#œ T‰6£]è:…~G·Ñô}c#–Žñ2Ab6sÀl¬ÃÆ™ÍÁŸ™-À_™Ïe1«ÁE#!1ãb˜íÃÅ1kþ>@„Oá Dø²!ÂDˆ â!Áq |ð;½I^R§—Üé¥tz“;½ÔžŒG§ç ¿1ÕiBˆ©C3Ûê[ò‰˜J°Q#SНH’~€¿?!(EªÈ Bl4Ä.…¥ :ÏÝ ô€Ÿ‚%PhŒ«À¾'¢Fl\¸<ãNÏä‡'<üåàíôÎuzç;½ àaÝ+ /òKƒHH½„÷™¿ò\êÌý{§wùOå®@¹CÌ 3[ y®þ”GYx„'<ÊÆ±ËÙçµÎH×;½ÞÍNïV§×ØéÝîôîtzMàI yV;´:îR8O²­•±í„­– ü¶Sli[>©«„¬wÃìÝÎX÷Àãç>¶ß·B¸Žå¬nFÒ­­¨‹p»ðW$/¬Ö á.á¤Ôñ^%þ­>0WÁd~îÝj¶b“p‹YÃòca½°¾7,ÁÓH~^?N—`1ÜÏÒíx£š:¼KMƒÅØ4áé¢#<]äã»Ã,)d ÷ ä©kXÃÏ~xœ2Ôˆ¾léÃ7B>9<“µl]û'~w ø‘%‚1¢€•¼÷KPûL‘ð1ÛSþ¾@XÛ%ìÿ¸÷)„§áX:¯ûþ[)à=ìôýð¸t>÷ÿõÜü¸ÕñÖ°žüE%HE=óÄÙ=³9)“<·¼² aEvÏd–” Ì©XŠ#½ä°°Aâ`Nº' ²­…Q…ŸØWlúSŠZ¥F¦r€?o/E…—™†£üŸXû§`"%U3UŸGêLÚyoÄúƧ¬‡M¬ÈV"Î)ˆ³…_*°P vAÑ\‡‚®|}qg X¶sOù·‹Í{‰9=.Åk›JÃR)#m4raP´õÞa mc¿þ!-¹îbVÀÈæ]ö㕳ÒD7>ìÛšYܺýÌÌ+ë{$:œúíµäq5—{²Z+M1÷Ž³Š¿&«JœµVœUÉΦº@”U"ÎZ–)?ö|bstÒ*]ßJ;<ç·^ôŸ¿~Ùÿ¦Žcþ?¡ ß-Sé÷²N w-­ë»À ‹òUôô²¨`ÁI»GÚo_\bº³bȉæoWìíÇl°ònÕ‹s<Ù°ñ6Éh4/ì_.Ÿ8qo«‚·Jôoçïw£åý,dÚ¶ª'zYë›í _­0G¿KèšþjŸµO^éönøæxg ‰ïÙÝ?=ŒŒ•õýPÿføñúÇGÄß´Ì¥ Ô‹{x^V®}“Ù„kƶüÚxbä«ð¡Ç‡ûïªÁF m ¯¼–\0£nÙÑMÖ¦ÒT¥ÝO­@ç':¼h5§ÉI¡ªßÄžoö»û»šèA•‹èƾ6ñžj²!µÒ•ó.]öwt=£6b]âM»ü%“Ë×_¬`ª$ÎÆíª Ý{S×[>me§üÐõ¿K ÷6ìS &æl±ß1˜ Ê‚pŠÂ~æŠâ®ü‚¤¢ôÈàä¨èøÈ¶y±Ÿ(¡(1<<,.!>ìÇŽIÿ«Ók·ïXŸ×‡…kùEGÆó¯xõqvú·ªP;uú•qÕ.¶U–›Ío|Öï74íÀWÍUÇ]&5_p}òû¼Ã1ÃCZV{^ÛGo@øþ³ºµÔ­væäF—ú ä|Žê÷z[ñXVWó‚“Þ—çT]Ö.q×\q¦ºÎaw³Œ„ëÝ4ìçÙÊÛ6Ö·DØ› ,ÚZ ÝÖíŒä—~ݳ#tföçÀЬœÜùÛßÖ­9g³Î'·»a¾W£øêßrìsÿ¬}y/cm×÷¶üPÓ{›ôôES"J—'Ëæm{{äÖno…ÂÐÓ¦×-\T_íu_jïã§r6ÂwêÆ-ù'”gûÄ“_ûœ¦W?<¢ÿ ¯†^3úÆç á.¬:ïž'ŒÏC¿È¿ãס _ÄYÅŠ¼(è‹dÄÒœ$kБÀø¿C*ºðû¨(´‰ˆ³±:Ÿ 'R)5¨ŸME‰c·½¹qÄ«Äwpï5ƒC_‹)¿º‹HÄ0Êû Иi›¶Îp7x{ö7¯”ÊQ†)&“«ó¾oò(š‚<Ÿžz®r+ú¨\eÆ;¡ó±Sù Ÿü•×$¼¼a0zµôDÉeµ:Z®*[tõ†ÆãéÍ/×%o^pÛv~ÿ峉»X°M÷û§W¢¥Ô·ÞE{-ß}Ìø,¯Ð›<7^ºdPŒÑ¤Z›M²'ÇE©ÏtЉ¨Ú[»w¾å©·X>#ýýŦAw¦µÞ½»¹õÃ˲ՉWß÷ÞeS™aö{ÿ›–4ÄZXž5Qwö‡ÀÐÛÇìµ½4oDN¾ïí—WdËTN˜[mZ»zíéM7´ví«æj)Éšü6¼Å©i¼øþb£èüƒ‰÷Þ­ßt6sPRªÓ˜t¦1!ÌfAIògŽÓ™¿‘j^pl˜ÒXX˜[XöëÇ Ž˜u?Øb_~Qœ5ëeßd¡â°ª+òôöþ#;þÙÿ­öÔ'ÕÌ~¬Vž{<¥.([õ/ý¾"½ÄØUgûú|¿—¯\íŽ%tdUí)ÒpÉ#mHbnõÃÓw"¯ùžb¸$²üꃦ¨¿Ø^l[a]Ñ/¯oTJJ¢]Ÿ>¡I±½ã~\ÃÞ¡ q}c¢ùÔ>¯-OîãìÇ*^o–$vû±‡¬_â ¶ÛüX óL;¦¥¥ýUÀð¤Ÿ"¥üP >ÎÆçBëcï'Ç^q5N¦Àþ˜[rºþYÓ{ÖÓÊ,ËëuÏî»s-pj×E_-Aè÷M÷5Q6úýÂã•&çTd/*NZdü" þó•£²}¶…›Åyº$åx;^œ¨î²ajàü×ÇÓæœõ.;^Úëán©ÆËî=L//_à·º1È;mù¤ ª±¶‹.mRÐ$O»l¸tÈw÷¶º[߸Ô’²æf[ƒz….‘x`Øïв…ª³ƒ Ÿ|Íé¥qAtzþ¹lÙ«UžÎ'_¼Ý˜Ö<'0¦K~Ø‚š=µ{6Eúk»ltzì?~®R`ä” ±ü"É2=­eOî ®‰>ïHJ¬ÝzïP¹²©OSŸÜvõ‘ŸHWx@ú›ºÞtÑ•Yùô÷ôu¬Ä¶æVbs±¥¥5/=¶lñoèëøGÇ…'§Ç%þ¿öunYÇÝvbû$•gÝøø²Ii©Å^ïá'f½Ð÷úPóÅF»…5iúäì94ìÂLò©yò¾¹Ç«.oNŒ˜bñdWmsîî3¯6~Wø…ŽÖ1îsnàõQÏÔqaqîþ7ßÜÞ_>ëxæ™Bë¢÷VIhD 9sý@j`Ÿé»ôE5c'ª…¶ef8¼º,Ò÷´MK‘w(ðZžµéä“rÏ4l¥2R[ËbãÓ›^ X°lÕ$¹ &Þ*!A«.Îòê¥å2÷vŸyŸŸwö(Œ}¥¿RñÓiù«¹r-Ù©ÉVÇŠÓ+‚¸d{^ßÚOEcsœrFåÅo×4ukH(unšød¦Áü˜v½É±3¢÷WŠ#ùßÑÛ‘ç¤:î7tð]ô“P&<ñr\¶ÛrÓ°¼¿•>Ûlïä|ì¼Xµ³€’P$£!üÐd‚œ‘ÓŸ{BÿÔú *òìj~(Ãgo×ù«ƒ%ró] ›“ý륈Y[¯_®ÚKÛEµkèíy»ì{^øºyýÉÚ_}µ{&HFψÁ•:®/ckâ2tê\/å¼+ì²ObŽÕÁç3ž&Žs)_|±álãüw÷›œÉxqr«ÅåüݧCX]PÑÞŸzÛ¾¤ºgò*í‚k55 þóZJ…»—”Íéb\1|ŠÛÞs[fÙyou[üô©­úýÙooØf}VÔž–ʉ–¾-:÷™æZ°§Mx=ü³ûí8eI5‰—i(»eœáö¦{iWm¡ZþfîèR‹º‡ùõ¯ß0ûö“ëÂ¥¥ ÛÓü}í®$ Þ¡û ÔF&P‹;»GEfÐ=’úûºGÿ$Ð=[[ôcÒdaÕ·}Ñœ_gUÿ'ºG†býöExçèDþ1û¹h¹øyÙY;ÙX˜YÙØ8™ÙºÚZ˜ë‹uÛIíÏÇdæÇ”–_xÿ ÿVÞŠ³¤µ©ø¦_/~¹òû­ü _å(>Ûhm¤Úêé³)u™É’!M¢…‹fxæÞœ9©y2º¹×9ökÂæI¯{]ÈX|¶¨{Ùê£{>œÑ|×L¬Qj`–êøÈuéü­×f[_kh~wnìáoQMoì|rXáóš}9ß®Ì=Kú× R} ñ§œZå¼Â }ãŒMέý¾|L?uoå6×4‚û[U(uK+¶—ÿ‚¶/¹7Îz“áÞPS7¥¬÷cŸmèU\X 7c Z›¦'±Ü$×™è-,¹}´RgØ~Ñ\š’óöaKr$Gíj}š?TʪºúSß 3<*§Î´m,·jçû&‡UŽ/\íîNý!FÅû…öÏoí™îÚåËé–emþÔSúKÅøÿé)¥$'†ÿô”~DJùk±þSÿ;ðWj…^mþvïbAÄ)ãûcvŸAÙ3ºÕ­°·êcÌÕüÖÂÓ;S5{ê|øx÷TÍn'Aë-nÖK¿4ô]o4¯ŽîJQ4ª­ž|×DêÞ\ï;Ë—ÕZ*d=“oT¿µ'윗½Çœïªú[//Í6ìÈÃןº<Y0=5ýaBk¾Öæ%¥óJöOèQÑM¬×T9#x‘º±ñá¡ íœgÍ~uûò¬FoÓ~öœ‘ }{ehϳƒ §mgV8Îøî¾Â™‹º¥Ö}U2ܘ :Èh”Ýû¹ÔmX;ažT™„ºfÆ}ùƒ×R²4Lj }½Žœ.˜ÖmÛÁ¢}ߤÇ>œêä,ƒ]ÏžNn~4tÔñé!ÅúQªº£‡ÌŒr}7éͦ#ëú?¯Á endstream endobj 1768 0 obj <<5E008F2DFBBFC042841E311D2C6D2DB0>] /Filter/FlateDecode/Length 3348>> stream xœ5ÚwøÕóÿÇñÏ#¡a¡„Y…ÌJ)#™•PV¢’ŒlJ‘U"B‘Ìʨ왽÷Þ›l²öê{¼nï_t»^]ŸÎuÎûuÎë~=?ç]WWû³hQj7­«û1…Œ(Ô^h0ºÐ°C¡Q (4\hÒý M»ZÝTh=­ÐþÞB‡™…N:/(ôl„Ÿ }&ú]8§0hJaØc…áó £šáŸÂØé…qã )Lœ[¸hTaêØÂ¬…Ù×n­o ¼RxðÃÂ3 ϶.¼>¿ðÆÕ…F¸ =ÁoN*üÒ?þý¢°è¥ÿH£òÂÒxP¡y·B‹v…¶ïV¼°ÁÃ…Žåd³µ-©«[¢kÝÌÅ<\_£®çÿÿÈ µÿЩuYÕþ1¨‡ÅP‹c ,‰hˆFhŒ¥°4–Á²h‚¦XË£VÀŠX ÍÑ+£%VÁªXÍë»ÑªZ£ Úbu¬vXkam¬ƒuѰÖÇèˆ ±6Æ&Ø›¡“g}“UgtÁæèŠnØÝÑ[b+lmÐÛ¢¶ÃöØ;b'ìŒÞ胾Øý°+vÃîèØ{b/ì}0ƒ°/öÃ`ìp †à Œ¡†á8#p(Fâ0Ž#p$Fá(cp,ŽÃñ8'â$ŒÆ~³ÕÉ‹q8§býÕÇ©ºÈ·àV܆ÛqîÄ]¸óq«å^܇ûñÄCxàQ<†ÇñžÄSxÏàY<‡çñ^ÄKx¯àU¼†×ñÞÄ[xïà]¼‡÷ñ>ÄGX€ñ >Ågø_àK|…¯±ßà[|‡ïñ~ÄOø?üŒ_ð+~ÃïøÚÆê]ðþÆ?ø‹ ‘ÈHd$2‰ŒDF"#‘‘ÈHd$2‰ŒDF"#‘‘ÈHd$2‰ŒDF"#‘‘ÈHd$2‰ŒDf5hc´1ÚmŒ6F£ÑÆhc´1ÚmŒ6F£ÑÆhc´1ÚmŒ6F£ÑÆt‚(F#Šéj7}˜£ÑÆhc´1ÚmŒ6F£ÑÆhc´1ÚmŒ6F£ÑÆhc´1ÚmŒ6F£ÑÆhc´1ÚmŒ6F£ÑÆhc´1ÚmŒ6F£ÑÆhc´1ÚmŒ6F£ÑÆhc´1ÚmÌ(ûà4DF"#‘‘ÈHd$2‰ŒDF"3ÚmŒ6F£ÑÆhc´1ÚmŒ6F£ÑÆhc´1ÚmŒ6F£ÑÆhc´1ÚmŒ6F£ÑÆhc´1ÚmŒ6F£ÑÆhc´1ÚmŒ6F£ÑÆhc´1ÚmŒ6FÕâTLõqªvS£ÑÆhcæÛ÷êGî6F£ÑÆhc´1ÚmŒ6F£ÑÆhc´1ÚmŒ6F£ÑÆhc´1ÚmŒ6F£ÑÆhc´1ÚmŒ6F£ÑÆhc´1ÚmŒ6F£ÑÆhc´1ÚmŒ6F£ÑÆhc´1ÚmÌm¬·U™ {u(£^mÔÃb¨Å±„M½ÓjI4@C4Bc,…¥± –E4ÅrXͰVÄJhŽX-± VÅjh…Öhƒ¶Xk ÖÄZXë`]´G¬‡õ±:bCl„± 6Åfè„Îè‚ÍÑݰº£¶ÄVöè.«­± zb[ôÂvØ;`Gì„Ñ}л vÅnØý1{`Oì…½±böÅ~ŒýqÄ„ƒ1Ã0‡`ÅH†ÃqŽÄ(…£q ŽÅq8'àDœ„у“1ãp NÅxœ†Óq†¾ÛêLœ… ˜ˆ³1 çà\LÆy8Sp.ÄE˜Ši¸—`:.Å \†Ëq®ÄU¸31 ³q ®Åu¸s0ópnÄM¸·àV܆ÛqªÓ­úUWw>îÁ½¸÷ã<ˆ‡ð0Á£x ۿꡟÀ“x Oã<‹çð<^À‹x /㼊×ð:ÞÀ›x o㼋÷ð>>À‡ø ð1>Á§ø Ÿã |‰¯ð5â|‹ïð=~Àø UÎ~Æ/ø¿áwü?ñþÆ?ø‹ ÑÆhc´1ÚmŒ6–¯†(F#Šňb™ñjûî½mŒ6F£ÑÆhc´1ÚmŒ6F£ÑÆhc´1ÚmŒ6F£ÑÆhc´1ÚmŒ6F£ÑÆhc´1ÚmŒ6F£ÑÆhc´1ÚmŒ6F£ÑÆhc´1ÚmŒ6F£eÆ«!ŠňbD1¢QŒ(F#ŠňbD1¢QŒ(FËŒWÛp§F´1ÚmŒ6F£ÑÆhc´1ÚmŒ6F£ÑÆhc´1ÚmŒ6F£ÑÆhc´1ÚmŒ6F£ÑÆhc´1ÚmŒ6F£ÑÆhc´1ÚmŒ6F£ÑÆhc´1Úm,3^ QŒ(F#ŠňbD1¢QŒ(F#Šňb™ñj{+ÑÆhc´1ÚmŒ6F£ÑÆhc´1ÚmŒ6F£ÑÆhc´1ÚmŒ6F£ÑÆhc´1ÚmŒ6F£ÑÆhc´1–ê<«ÞåÕÑÆhc´1ÚmŒ6F£eÆ«!ŠňbD1¢QŒ(F#ŠňbD1¢QŒ(F#Šňb™ñj[\½mŒ6F£ÑÆhc´1ÚmŒ6F£ÑÆhc´1ÚmŒ6F£ÑÆhc´1Úm,£^ýîuuµQ¯ïº:« C},Ž%°$ !¡1–ÂÒXË¢ šb9,fX+b%4G ¬Œ–X«b5´Bk´A[¬nÿ°Zí°&ÖÂÚXë¢=:`=¬ Ðb#lŒM°)6C'tFlŽ®è†-Ð=°%¶ÂÖØ=±-za;l°#vÂÎè>è‹]лb7ìŽþ€=°'öÂÞØ1ûb? Æþ8b²©ZŒ¡†á8#p(Fâ0Ž#p$Fá(cp,ŽÃñ8'â$ŒÆœŒ±‡Sp*Æã4œŽ3p&ÎÂLÄÙ˜„sp.&ã<œ)¸â"LÅ4\ŒK0—b.Ãå¸Wâ*\™˜…Ù¸×ÚÔ‡¬®Ãõ˜ƒ¹˜‡p#nÂ͸·â6ÜŽ;p'îÂݘ{p/îÃý¨Ž’êÍW=݇ñÅcxOàI<…§ñ žÅsx/àE¼„—ñ ^ÅkxoàM¼…·ñÞÅ{xàC|„øŸàS|†Ïñ¾ÄWø mqu±¾Á·øßãüˆŸPåìgü‚_ñ~Çøáoüƒ±¨mŒ6F£ÑÆhc´1ÚmŒ6F£ÑÆhc´1ÚmŒ6F£ÑÆhc´1ÚmŒ6F£ÑÆhc´1ÚmŒ6FËŒWC#ŠňbD1¢QŒ(F#ŠÅ2ãÕ¶Ø!ÚmŒ6F£ÑÆhc´1ÚmŒ6F£ÑÆhc´1ÚmŒ6F£ÑÆhc´1ÚmŒ6F£ÑÆhc´1ÚmŒ6F£ÑÆhc´1ÚmŒ6F£ÑÆhc´1ÚXf¼ÚEvÌD"#‘‘È2êÕÐÆhc´1ÚmŒ6F£ÑÆhc´1ÚmŒ6F£ÑÆhc´1ÚmŒ6F£ÑÆhc´1ÚmŒ6F£ÑÆhc´1ÚmŒ6F£ÑÆhc´1ÚmŒ6F£ÑÆhc´1ÚmŒ6F£ÑÆhc´1ÚXf¼ÚnªE$2‰ŒD–Q¯†6F£ÑÆhc´1ÚmŒ6F£ÑÆhc´1ÚmŒ6F£ÑÆhc´1ÚmŒ6ÆqŸêH¨Þ´Õ«ÕÆhc´1ÚmŒ6F£ÑÆhc´1ÚmŒ6F£ÑÆhc´1ÚmŒ6F£ÑÆhc´1ÚmŒ6F£ÑÆhc´1Úm,3^mû«+±ÚmŒ6F£ÑÆhcõjòߨ7dr]u;gP‹¡>Gõ­Þ’h€†h„ƨ~s¹4–Á²h‚¦XË£VÀŠX ÍÑ+£%VÁª¨nàl…Öhƒ¶¨F½5Ðkb-¬u°.Ú£ÖÃú¨rÖâ l„± 6Åf¨nàìŒ.ØÕM*ݰº£¶Dõ­ÞÖØ=±-za;l°#vÂÎè>è‹]ÐÕo.wÃîèØ{b/ì}0ƒ°/öÃ`T9;bªQï` Å0 Ç!C1‡áp#QÝrŽÆ18Çáxœ€ñ$NÂhT7pžŒ±‡Sp*Æã4œŽê[½3q&`"ÎÆ$œƒs1çá|LÁ¸Õo.§b.Æ%˜ŽK1—ár\+qªœÍÄ,ÌÆ5¨F½ëj‡Õ˜¯Ë™5vh]Ýÿ‡o2} endstream endobj xref 0 1769 0000000062 65535 f 0000000017 00000 n 0000000125 00000 n 0000000363 00000 n 0000000617 00000 n 0000002172 00000 n 0000002348 00000 n 0000002593 00000 n 0000002646 00000 n 0000002912 00000 n 0000004123 00000 n 0000004177 00000 n 0000004409 00000 n 0000008111 00000 n 0000008343 00000 n 0000011195 00000 n 0000011427 00000 n 0000014329 00000 n 0000014561 00000 n 0000017418 00000 n 0000017650 00000 n 0000020108 00000 n 0000020340 00000 n 0000023722 00000 n 0000023954 00000 n 0000026820 00000 n 0000027052 00000 n 0000029204 00000 n 0000029437 00000 n 0000032666 00000 n 0000032899 00000 n 0000035266 00000 n 0000035499 00000 n 0000038258 00000 n 0000038527 00000 n 0000042140 00000 n 0000042409 00000 n 0000045572 00000 n 0000045805 00000 n 0000048850 00000 n 0000049119 00000 n 0000051767 00000 n 0000052000 00000 n 0000054713 00000 n 0000054946 00000 n 0000057453 00000 n 0000057686 00000 n 0000060306 00000 n 0000060539 00000 n 0000062728 00000 n 0000062961 00000 n 0000065255 00000 n 0000065488 00000 n 0000068212 00000 n 0000068445 00000 n 0000071740 00000 n 0000071973 00000 n 0000074460 00000 n 0000074693 00000 n 0000077761 00000 n 0000077994 00000 n 0000079423 00000 n 0000000063 65535 f 0000000064 65535 f 0000000065 65535 f 0000000066 65535 f 0000000067 65535 f 0000000068 65535 f 0000000069 65535 f 0000000070 65535 f 0000000071 65535 f 0000000072 65535 f 0000000073 65535 f 0000000074 65535 f 0000000075 65535 f 0000000076 65535 f 0000000077 65535 f 0000000078 65535 f 0000000079 65535 f 0000000080 65535 f 0000000081 65535 f 0000000082 65535 f 0000000083 65535 f 0000000084 65535 f 0000000085 65535 f 0000000086 65535 f 0000000087 65535 f 0000000088 65535 f 0000000089 65535 f 0000000090 65535 f 0000000091 65535 f 0000000092 65535 f 0000000093 65535 f 0000000094 65535 f 0000000095 65535 f 0000000096 65535 f 0000000097 65535 f 0000000098 65535 f 0000000099 65535 f 0000000100 65535 f 0000000101 65535 f 0000000102 65535 f 0000000103 65535 f 0000000104 65535 f 0000000105 65535 f 0000000106 65535 f 0000000107 65535 f 0000000108 65535 f 0000000109 65535 f 0000000110 65535 f 0000000111 65535 f 0000000112 65535 f 0000000113 65535 f 0000000114 65535 f 0000000115 65535 f 0000000116 65535 f 0000000117 65535 f 0000000118 65535 f 0000000119 65535 f 0000000120 65535 f 0000000121 65535 f 0000000122 65535 f 0000000123 65535 f 0000000124 65535 f 0000000125 65535 f 0000000126 65535 f 0000000127 65535 f 0000000128 65535 f 0000000129 65535 f 0000000130 65535 f 0000000131 65535 f 0000000132 65535 f 0000000133 65535 f 0000000134 65535 f 0000000135 65535 f 0000000136 65535 f 0000000137 65535 f 0000000138 65535 f 0000000139 65535 f 0000000140 65535 f 0000000141 65535 f 0000000142 65535 f 0000000143 65535 f 0000000144 65535 f 0000000145 65535 f 0000000146 65535 f 0000000147 65535 f 0000000148 65535 f 0000000149 65535 f 0000000150 65535 f 0000000151 65535 f 0000000152 65535 f 0000000153 65535 f 0000000154 65535 f 0000000155 65535 f 0000000156 65535 f 0000000157 65535 f 0000000158 65535 f 0000000159 65535 f 0000000160 65535 f 0000000161 65535 f 0000000162 65535 f 0000000163 65535 f 0000000164 65535 f 0000000165 65535 f 0000000166 65535 f 0000000167 65535 f 0000000168 65535 f 0000000169 65535 f 0000000170 65535 f 0000000171 65535 f 0000000172 65535 f 0000000173 65535 f 0000000174 65535 f 0000000175 65535 f 0000000176 65535 f 0000000177 65535 f 0000000178 65535 f 0000000179 65535 f 0000000180 65535 f 0000000181 65535 f 0000000182 65535 f 0000000183 65535 f 0000000184 65535 f 0000000185 65535 f 0000000186 65535 f 0000000187 65535 f 0000000188 65535 f 0000000189 65535 f 0000000190 65535 f 0000000191 65535 f 0000000192 65535 f 0000000193 65535 f 0000000194 65535 f 0000000195 65535 f 0000000196 65535 f 0000000197 65535 f 0000000198 65535 f 0000000199 65535 f 0000000200 65535 f 0000000201 65535 f 0000000202 65535 f 0000000203 65535 f 0000000204 65535 f 0000000205 65535 f 0000000206 65535 f 0000000207 65535 f 0000000208 65535 f 0000000209 65535 f 0000000210 65535 f 0000000211 65535 f 0000000212 65535 f 0000000213 65535 f 0000000214 65535 f 0000000215 65535 f 0000000216 65535 f 0000000217 65535 f 0000000218 65535 f 0000000219 65535 f 0000000220 65535 f 0000000221 65535 f 0000000222 65535 f 0000000223 65535 f 0000000224 65535 f 0000000225 65535 f 0000000226 65535 f 0000000227 65535 f 0000000228 65535 f 0000000229 65535 f 0000000230 65535 f 0000000231 65535 f 0000000232 65535 f 0000000233 65535 f 0000000234 65535 f 0000000235 65535 f 0000000236 65535 f 0000000237 65535 f 0000000238 65535 f 0000000239 65535 f 0000000240 65535 f 0000000241 65535 f 0000000242 65535 f 0000000243 65535 f 0000000244 65535 f 0000000245 65535 f 0000000246 65535 f 0000000247 65535 f 0000000248 65535 f 0000000249 65535 f 0000000250 65535 f 0000000251 65535 f 0000000252 65535 f 0000000253 65535 f 0000000254 65535 f 0000000255 65535 f 0000000256 65535 f 0000000257 65535 f 0000000258 65535 f 0000000259 65535 f 0000000260 65535 f 0000000261 65535 f 0000000262 65535 f 0000000263 65535 f 0000000264 65535 f 0000000265 65535 f 0000000266 65535 f 0000000267 65535 f 0000000268 65535 f 0000000269 65535 f 0000000270 65535 f 0000000271 65535 f 0000000272 65535 f 0000000273 65535 f 0000000274 65535 f 0000000275 65535 f 0000000276 65535 f 0000000277 65535 f 0000000278 65535 f 0000000279 65535 f 0000000280 65535 f 0000000281 65535 f 0000000282 65535 f 0000000283 65535 f 0000000284 65535 f 0000000285 65535 f 0000000286 65535 f 0000000287 65535 f 0000000288 65535 f 0000000289 65535 f 0000000290 65535 f 0000000291 65535 f 0000000292 65535 f 0000000293 65535 f 0000000294 65535 f 0000000295 65535 f 0000000296 65535 f 0000000297 65535 f 0000000298 65535 f 0000000299 65535 f 0000000300 65535 f 0000000301 65535 f 0000000302 65535 f 0000000303 65535 f 0000000304 65535 f 0000000305 65535 f 0000000306 65535 f 0000000307 65535 f 0000000308 65535 f 0000000309 65535 f 0000000310 65535 f 0000000311 65535 f 0000000312 65535 f 0000000313 65535 f 0000000314 65535 f 0000000315 65535 f 0000000316 65535 f 0000000317 65535 f 0000000318 65535 f 0000000319 65535 f 0000000320 65535 f 0000000321 65535 f 0000000322 65535 f 0000000323 65535 f 0000000324 65535 f 0000000325 65535 f 0000000326 65535 f 0000000327 65535 f 0000000328 65535 f 0000000329 65535 f 0000000330 65535 f 0000000331 65535 f 0000000332 65535 f 0000000333 65535 f 0000000334 65535 f 0000000335 65535 f 0000000336 65535 f 0000000337 65535 f 0000000338 65535 f 0000000339 65535 f 0000000340 65535 f 0000000341 65535 f 0000000342 65535 f 0000000343 65535 f 0000000344 65535 f 0000000345 65535 f 0000000346 65535 f 0000000347 65535 f 0000000348 65535 f 0000000349 65535 f 0000000350 65535 f 0000000351 65535 f 0000000352 65535 f 0000000353 65535 f 0000000354 65535 f 0000000355 65535 f 0000000356 65535 f 0000000357 65535 f 0000000358 65535 f 0000000359 65535 f 0000000360 65535 f 0000000361 65535 f 0000000362 65535 f 0000000363 65535 f 0000000364 65535 f 0000000365 65535 f 0000000366 65535 f 0000000367 65535 f 0000000368 65535 f 0000000369 65535 f 0000000370 65535 f 0000000371 65535 f 0000000372 65535 f 0000000373 65535 f 0000000374 65535 f 0000000375 65535 f 0000000376 65535 f 0000000377 65535 f 0000000378 65535 f 0000000379 65535 f 0000000380 65535 f 0000000381 65535 f 0000000382 65535 f 0000000383 65535 f 0000000384 65535 f 0000000385 65535 f 0000000386 65535 f 0000000387 65535 f 0000000388 65535 f 0000000389 65535 f 0000000390 65535 f 0000000391 65535 f 0000000392 65535 f 0000000393 65535 f 0000000394 65535 f 0000000395 65535 f 0000000396 65535 f 0000000397 65535 f 0000000398 65535 f 0000000399 65535 f 0000000400 65535 f 0000000401 65535 f 0000000402 65535 f 0000000403 65535 f 0000000404 65535 f 0000000405 65535 f 0000000406 65535 f 0000000407 65535 f 0000000408 65535 f 0000000409 65535 f 0000000410 65535 f 0000000411 65535 f 0000000412 65535 f 0000000413 65535 f 0000000414 65535 f 0000000415 65535 f 0000000416 65535 f 0000000417 65535 f 0000000418 65535 f 0000000419 65535 f 0000000420 65535 f 0000000421 65535 f 0000000422 65535 f 0000000423 65535 f 0000000424 65535 f 0000000425 65535 f 0000000426 65535 f 0000000427 65535 f 0000000428 65535 f 0000000429 65535 f 0000000430 65535 f 0000000431 65535 f 0000000432 65535 f 0000000433 65535 f 0000000434 65535 f 0000000435 65535 f 0000000436 65535 f 0000000437 65535 f 0000000438 65535 f 0000000439 65535 f 0000000440 65535 f 0000000441 65535 f 0000000442 65535 f 0000000443 65535 f 0000000444 65535 f 0000000445 65535 f 0000000446 65535 f 0000000447 65535 f 0000000448 65535 f 0000000449 65535 f 0000000450 65535 f 0000000451 65535 f 0000000452 65535 f 0000000453 65535 f 0000000454 65535 f 0000000455 65535 f 0000000456 65535 f 0000000457 65535 f 0000000458 65535 f 0000000459 65535 f 0000000460 65535 f 0000000461 65535 f 0000000462 65535 f 0000000463 65535 f 0000000464 65535 f 0000000465 65535 f 0000000466 65535 f 0000000467 65535 f 0000000468 65535 f 0000000469 65535 f 0000000470 65535 f 0000000471 65535 f 0000000472 65535 f 0000000473 65535 f 0000000474 65535 f 0000000475 65535 f 0000000476 65535 f 0000000477 65535 f 0000000478 65535 f 0000000479 65535 f 0000000480 65535 f 0000000481 65535 f 0000000482 65535 f 0000000483 65535 f 0000000484 65535 f 0000000485 65535 f 0000000486 65535 f 0000000487 65535 f 0000000488 65535 f 0000000489 65535 f 0000000490 65535 f 0000000491 65535 f 0000000492 65535 f 0000000493 65535 f 0000000494 65535 f 0000000495 65535 f 0000000496 65535 f 0000000497 65535 f 0000000498 65535 f 0000000499 65535 f 0000000500 65535 f 0000000501 65535 f 0000000502 65535 f 0000000503 65535 f 0000000504 65535 f 0000000505 65535 f 0000000506 65535 f 0000000507 65535 f 0000000508 65535 f 0000000509 65535 f 0000000510 65535 f 0000000511 65535 f 0000000512 65535 f 0000000513 65535 f 0000000514 65535 f 0000000515 65535 f 0000000516 65535 f 0000000517 65535 f 0000000518 65535 f 0000000519 65535 f 0000000520 65535 f 0000000521 65535 f 0000000522 65535 f 0000000523 65535 f 0000000524 65535 f 0000000525 65535 f 0000000526 65535 f 0000000527 65535 f 0000000528 65535 f 0000000529 65535 f 0000000530 65535 f 0000000531 65535 f 0000000532 65535 f 0000000533 65535 f 0000000534 65535 f 0000000535 65535 f 0000000536 65535 f 0000000537 65535 f 0000000538 65535 f 0000000539 65535 f 0000000540 65535 f 0000000541 65535 f 0000000542 65535 f 0000000543 65535 f 0000000544 65535 f 0000000545 65535 f 0000000546 65535 f 0000000547 65535 f 0000000548 65535 f 0000000549 65535 f 0000000550 65535 f 0000000551 65535 f 0000000552 65535 f 0000000553 65535 f 0000000554 65535 f 0000000555 65535 f 0000000556 65535 f 0000000557 65535 f 0000000558 65535 f 0000000559 65535 f 0000000560 65535 f 0000000561 65535 f 0000000562 65535 f 0000000563 65535 f 0000000564 65535 f 0000000565 65535 f 0000000566 65535 f 0000000567 65535 f 0000000568 65535 f 0000000569 65535 f 0000000570 65535 f 0000000571 65535 f 0000000572 65535 f 0000000573 65535 f 0000000574 65535 f 0000000575 65535 f 0000000576 65535 f 0000000577 65535 f 0000000578 65535 f 0000000579 65535 f 0000000580 65535 f 0000000581 65535 f 0000000582 65535 f 0000000583 65535 f 0000000584 65535 f 0000000585 65535 f 0000000586 65535 f 0000000587 65535 f 0000000588 65535 f 0000000589 65535 f 0000000590 65535 f 0000000591 65535 f 0000000592 65535 f 0000000593 65535 f 0000000594 65535 f 0000000595 65535 f 0000000596 65535 f 0000000597 65535 f 0000000598 65535 f 0000000599 65535 f 0000000600 65535 f 0000000601 65535 f 0000000602 65535 f 0000000603 65535 f 0000000604 65535 f 0000000605 65535 f 0000000606 65535 f 0000000607 65535 f 0000000608 65535 f 0000000609 65535 f 0000000610 65535 f 0000000611 65535 f 0000000612 65535 f 0000000613 65535 f 0000000614 65535 f 0000000615 65535 f 0000000616 65535 f 0000000617 65535 f 0000000618 65535 f 0000000619 65535 f 0000000620 65535 f 0000000621 65535 f 0000000622 65535 f 0000000623 65535 f 0000000624 65535 f 0000000625 65535 f 0000000626 65535 f 0000000627 65535 f 0000000628 65535 f 0000000629 65535 f 0000000630 65535 f 0000000631 65535 f 0000000632 65535 f 0000000633 65535 f 0000000634 65535 f 0000000635 65535 f 0000000636 65535 f 0000000637 65535 f 0000000638 65535 f 0000000639 65535 f 0000000640 65535 f 0000000641 65535 f 0000000642 65535 f 0000000643 65535 f 0000000644 65535 f 0000000645 65535 f 0000000646 65535 f 0000000647 65535 f 0000000648 65535 f 0000000649 65535 f 0000000650 65535 f 0000000651 65535 f 0000000652 65535 f 0000000653 65535 f 0000000654 65535 f 0000000655 65535 f 0000000656 65535 f 0000000657 65535 f 0000000658 65535 f 0000000659 65535 f 0000000660 65535 f 0000000661 65535 f 0000000662 65535 f 0000000663 65535 f 0000000664 65535 f 0000000665 65535 f 0000000666 65535 f 0000000667 65535 f 0000000668 65535 f 0000000669 65535 f 0000000670 65535 f 0000000671 65535 f 0000000672 65535 f 0000000673 65535 f 0000000674 65535 f 0000000675 65535 f 0000000676 65535 f 0000000677 65535 f 0000000678 65535 f 0000000679 65535 f 0000000680 65535 f 0000000681 65535 f 0000000682 65535 f 0000000683 65535 f 0000000684 65535 f 0000000685 65535 f 0000000686 65535 f 0000000687 65535 f 0000000688 65535 f 0000000689 65535 f 0000000690 65535 f 0000000691 65535 f 0000000692 65535 f 0000000693 65535 f 0000000694 65535 f 0000000695 65535 f 0000000696 65535 f 0000000697 65535 f 0000000698 65535 f 0000000699 65535 f 0000000700 65535 f 0000000701 65535 f 0000000702 65535 f 0000000703 65535 f 0000000704 65535 f 0000000705 65535 f 0000000706 65535 f 0000000707 65535 f 0000000708 65535 f 0000000709 65535 f 0000000710 65535 f 0000000711 65535 f 0000000712 65535 f 0000000713 65535 f 0000000714 65535 f 0000000715 65535 f 0000000716 65535 f 0000000717 65535 f 0000000718 65535 f 0000000719 65535 f 0000000720 65535 f 0000000721 65535 f 0000000722 65535 f 0000000723 65535 f 0000000724 65535 f 0000000725 65535 f 0000000726 65535 f 0000000727 65535 f 0000000728 65535 f 0000000729 65535 f 0000000730 65535 f 0000000731 65535 f 0000000732 65535 f 0000000733 65535 f 0000000734 65535 f 0000000735 65535 f 0000000736 65535 f 0000000737 65535 f 0000000738 65535 f 0000000739 65535 f 0000000740 65535 f 0000000741 65535 f 0000000742 65535 f 0000000743 65535 f 0000000744 65535 f 0000000745 65535 f 0000000746 65535 f 0000000747 65535 f 0000000748 65535 f 0000000749 65535 f 0000000750 65535 f 0000000751 65535 f 0000000752 65535 f 0000000753 65535 f 0000000754 65535 f 0000000755 65535 f 0000000756 65535 f 0000000757 65535 f 0000000758 65535 f 0000000759 65535 f 0000000760 65535 f 0000000761 65535 f 0000000762 65535 f 0000000763 65535 f 0000000764 65535 f 0000000765 65535 f 0000000766 65535 f 0000000767 65535 f 0000000768 65535 f 0000000769 65535 f 0000000770 65535 f 0000000771 65535 f 0000000772 65535 f 0000000773 65535 f 0000000774 65535 f 0000000775 65535 f 0000000776 65535 f 0000000777 65535 f 0000000778 65535 f 0000000779 65535 f 0000000780 65535 f 0000000781 65535 f 0000000782 65535 f 0000000783 65535 f 0000000784 65535 f 0000000785 65535 f 0000000786 65535 f 0000000787 65535 f 0000000788 65535 f 0000000789 65535 f 0000000790 65535 f 0000000791 65535 f 0000000792 65535 f 0000000793 65535 f 0000000794 65535 f 0000000795 65535 f 0000000796 65535 f 0000000797 65535 f 0000000798 65535 f 0000000799 65535 f 0000000800 65535 f 0000000801 65535 f 0000000802 65535 f 0000000803 65535 f 0000000804 65535 f 0000000805 65535 f 0000000806 65535 f 0000000807 65535 f 0000000808 65535 f 0000000809 65535 f 0000000810 65535 f 0000000811 65535 f 0000000812 65535 f 0000000813 65535 f 0000000814 65535 f 0000000815 65535 f 0000000816 65535 f 0000000817 65535 f 0000000818 65535 f 0000000819 65535 f 0000000820 65535 f 0000000821 65535 f 0000000822 65535 f 0000000823 65535 f 0000000824 65535 f 0000000825 65535 f 0000000826 65535 f 0000000827 65535 f 0000000828 65535 f 0000000829 65535 f 0000000830 65535 f 0000000831 65535 f 0000000832 65535 f 0000000833 65535 f 0000000834 65535 f 0000000835 65535 f 0000000836 65535 f 0000000837 65535 f 0000000838 65535 f 0000000839 65535 f 0000000840 65535 f 0000000841 65535 f 0000000842 65535 f 0000000843 65535 f 0000000844 65535 f 0000000845 65535 f 0000000846 65535 f 0000000847 65535 f 0000000848 65535 f 0000000849 65535 f 0000000850 65535 f 0000000851 65535 f 0000000852 65535 f 0000000853 65535 f 0000000854 65535 f 0000000855 65535 f 0000000856 65535 f 0000000857 65535 f 0000000858 65535 f 0000000859 65535 f 0000000860 65535 f 0000000861 65535 f 0000000862 65535 f 0000000863 65535 f 0000000864 65535 f 0000000865 65535 f 0000000866 65535 f 0000000867 65535 f 0000000868 65535 f 0000000869 65535 f 0000000870 65535 f 0000000871 65535 f 0000000872 65535 f 0000000873 65535 f 0000000874 65535 f 0000000875 65535 f 0000000876 65535 f 0000000877 65535 f 0000000878 65535 f 0000000879 65535 f 0000000880 65535 f 0000000881 65535 f 0000000882 65535 f 0000000883 65535 f 0000000884 65535 f 0000000885 65535 f 0000000886 65535 f 0000000887 65535 f 0000000888 65535 f 0000000889 65535 f 0000000890 65535 f 0000000891 65535 f 0000000892 65535 f 0000000893 65535 f 0000000894 65535 f 0000000895 65535 f 0000000896 65535 f 0000000897 65535 f 0000000898 65535 f 0000000899 65535 f 0000000900 65535 f 0000000901 65535 f 0000000902 65535 f 0000000903 65535 f 0000000904 65535 f 0000000905 65535 f 0000000906 65535 f 0000000907 65535 f 0000000908 65535 f 0000000909 65535 f 0000000910 65535 f 0000000911 65535 f 0000000912 65535 f 0000000913 65535 f 0000000914 65535 f 0000000915 65535 f 0000000916 65535 f 0000000917 65535 f 0000000918 65535 f 0000000919 65535 f 0000000920 65535 f 0000000921 65535 f 0000000922 65535 f 0000000923 65535 f 0000000924 65535 f 0000000925 65535 f 0000000926 65535 f 0000000927 65535 f 0000000928 65535 f 0000000929 65535 f 0000000930 65535 f 0000000931 65535 f 0000000932 65535 f 0000000933 65535 f 0000000934 65535 f 0000000935 65535 f 0000000936 65535 f 0000000937 65535 f 0000000938 65535 f 0000000939 65535 f 0000000940 65535 f 0000000941 65535 f 0000000942 65535 f 0000000943 65535 f 0000000944 65535 f 0000000945 65535 f 0000000946 65535 f 0000000947 65535 f 0000000948 65535 f 0000000949 65535 f 0000000950 65535 f 0000000951 65535 f 0000000952 65535 f 0000000953 65535 f 0000000954 65535 f 0000000955 65535 f 0000000956 65535 f 0000000957 65535 f 0000000958 65535 f 0000000959 65535 f 0000000960 65535 f 0000000961 65535 f 0000000962 65535 f 0000000963 65535 f 0000000964 65535 f 0000000965 65535 f 0000000966 65535 f 0000000967 65535 f 0000000968 65535 f 0000000969 65535 f 0000000970 65535 f 0000000971 65535 f 0000000972 65535 f 0000000973 65535 f 0000000974 65535 f 0000000975 65535 f 0000000976 65535 f 0000000977 65535 f 0000000978 65535 f 0000000979 65535 f 0000000980 65535 f 0000000981 65535 f 0000000982 65535 f 0000000983 65535 f 0000000984 65535 f 0000000985 65535 f 0000000986 65535 f 0000000987 65535 f 0000000988 65535 f 0000000989 65535 f 0000000990 65535 f 0000000991 65535 f 0000000992 65535 f 0000000993 65535 f 0000000994 65535 f 0000000995 65535 f 0000000996 65535 f 0000000997 65535 f 0000000998 65535 f 0000000999 65535 f 0000001000 65535 f 0000001001 65535 f 0000001002 65535 f 0000001003 65535 f 0000001004 65535 f 0000001005 65535 f 0000001006 65535 f 0000001007 65535 f 0000001008 65535 f 0000001009 65535 f 0000001010 65535 f 0000001011 65535 f 0000001012 65535 f 0000001013 65535 f 0000001014 65535 f 0000001015 65535 f 0000001016 65535 f 0000001017 65535 f 0000001018 65535 f 0000001019 65535 f 0000001020 65535 f 0000001021 65535 f 0000001022 65535 f 0000001023 65535 f 0000001024 65535 f 0000001025 65535 f 0000001026 65535 f 0000001027 65535 f 0000001028 65535 f 0000001029 65535 f 0000001030 65535 f 0000001031 65535 f 0000001032 65535 f 0000001033 65535 f 0000001034 65535 f 0000001035 65535 f 0000001036 65535 f 0000001037 65535 f 0000001038 65535 f 0000001039 65535 f 0000001040 65535 f 0000001041 65535 f 0000001042 65535 f 0000001043 65535 f 0000001044 65535 f 0000001045 65535 f 0000001046 65535 f 0000001047 65535 f 0000001048 65535 f 0000001049 65535 f 0000001050 65535 f 0000001051 65535 f 0000001052 65535 f 0000001053 65535 f 0000001054 65535 f 0000001055 65535 f 0000001056 65535 f 0000001057 65535 f 0000001058 65535 f 0000001059 65535 f 0000001060 65535 f 0000001061 65535 f 0000001062 65535 f 0000001063 65535 f 0000001064 65535 f 0000001065 65535 f 0000001066 65535 f 0000001067 65535 f 0000001068 65535 f 0000001069 65535 f 0000001070 65535 f 0000001071 65535 f 0000001072 65535 f 0000001073 65535 f 0000001074 65535 f 0000001075 65535 f 0000001076 65535 f 0000001077 65535 f 0000001078 65535 f 0000001079 65535 f 0000001080 65535 f 0000001081 65535 f 0000001082 65535 f 0000001083 65535 f 0000001084 65535 f 0000001085 65535 f 0000001086 65535 f 0000001087 65535 f 0000001088 65535 f 0000001089 65535 f 0000001090 65535 f 0000001091 65535 f 0000001092 65535 f 0000001093 65535 f 0000001094 65535 f 0000001095 65535 f 0000001096 65535 f 0000001097 65535 f 0000001098 65535 f 0000001099 65535 f 0000001100 65535 f 0000001101 65535 f 0000001102 65535 f 0000001103 65535 f 0000001104 65535 f 0000001105 65535 f 0000001106 65535 f 0000001107 65535 f 0000001108 65535 f 0000001109 65535 f 0000001110 65535 f 0000001111 65535 f 0000001112 65535 f 0000001113 65535 f 0000001114 65535 f 0000001115 65535 f 0000001116 65535 f 0000001117 65535 f 0000001118 65535 f 0000001119 65535 f 0000001120 65535 f 0000001121 65535 f 0000001122 65535 f 0000001123 65535 f 0000001124 65535 f 0000001125 65535 f 0000001126 65535 f 0000001127 65535 f 0000001128 65535 f 0000001129 65535 f 0000001130 65535 f 0000001131 65535 f 0000001132 65535 f 0000001133 65535 f 0000001134 65535 f 0000001135 65535 f 0000001136 65535 f 0000001137 65535 f 0000001138 65535 f 0000001139 65535 f 0000001140 65535 f 0000001141 65535 f 0000001142 65535 f 0000001143 65535 f 0000001144 65535 f 0000001145 65535 f 0000001146 65535 f 0000001147 65535 f 0000001148 65535 f 0000001149 65535 f 0000001150 65535 f 0000001151 65535 f 0000001152 65535 f 0000001153 65535 f 0000001154 65535 f 0000001155 65535 f 0000001156 65535 f 0000001157 65535 f 0000001158 65535 f 0000001159 65535 f 0000001160 65535 f 0000001161 65535 f 0000001162 65535 f 0000001163 65535 f 0000001164 65535 f 0000001165 65535 f 0000001166 65535 f 0000001167 65535 f 0000001168 65535 f 0000001169 65535 f 0000001170 65535 f 0000001171 65535 f 0000001172 65535 f 0000001173 65535 f 0000001174 65535 f 0000001175 65535 f 0000001176 65535 f 0000001177 65535 f 0000001178 65535 f 0000001179 65535 f 0000001180 65535 f 0000001181 65535 f 0000001182 65535 f 0000001183 65535 f 0000001184 65535 f 0000001185 65535 f 0000001186 65535 f 0000001187 65535 f 0000001188 65535 f 0000001189 65535 f 0000001190 65535 f 0000001191 65535 f 0000001192 65535 f 0000001193 65535 f 0000001194 65535 f 0000001195 65535 f 0000001196 65535 f 0000001197 65535 f 0000001198 65535 f 0000001199 65535 f 0000001200 65535 f 0000001201 65535 f 0000001202 65535 f 0000001203 65535 f 0000001204 65535 f 0000001205 65535 f 0000001206 65535 f 0000001207 65535 f 0000001208 65535 f 0000001209 65535 f 0000001210 65535 f 0000001211 65535 f 0000001212 65535 f 0000001213 65535 f 0000001214 65535 f 0000001215 65535 f 0000001216 65535 f 0000001217 65535 f 0000001218 65535 f 0000001219 65535 f 0000001220 65535 f 0000001221 65535 f 0000001222 65535 f 0000001223 65535 f 0000001224 65535 f 0000001225 65535 f 0000001226 65535 f 0000001227 65535 f 0000001228 65535 f 0000001229 65535 f 0000001230 65535 f 0000001231 65535 f 0000001232 65535 f 0000001233 65535 f 0000001234 65535 f 0000001235 65535 f 0000001236 65535 f 0000001237 65535 f 0000001238 65535 f 0000001239 65535 f 0000001240 65535 f 0000001241 65535 f 0000001242 65535 f 0000001243 65535 f 0000001244 65535 f 0000001245 65535 f 0000001246 65535 f 0000001247 65535 f 0000001248 65535 f 0000001249 65535 f 0000001250 65535 f 0000001251 65535 f 0000001252 65535 f 0000001253 65535 f 0000001254 65535 f 0000001255 65535 f 0000001256 65535 f 0000001257 65535 f 0000001258 65535 f 0000001259 65535 f 0000001260 65535 f 0000001261 65535 f 0000001262 65535 f 0000001263 65535 f 0000001264 65535 f 0000001265 65535 f 0000001266 65535 f 0000001267 65535 f 0000001268 65535 f 0000001269 65535 f 0000001270 65535 f 0000001271 65535 f 0000001272 65535 f 0000001273 65535 f 0000001274 65535 f 0000001275 65535 f 0000001276 65535 f 0000001277 65535 f 0000001278 65535 f 0000001279 65535 f 0000001280 65535 f 0000001281 65535 f 0000001282 65535 f 0000001283 65535 f 0000001284 65535 f 0000001285 65535 f 0000001286 65535 f 0000001287 65535 f 0000001288 65535 f 0000001289 65535 f 0000001290 65535 f 0000001291 65535 f 0000001292 65535 f 0000001293 65535 f 0000001294 65535 f 0000001295 65535 f 0000001296 65535 f 0000001297 65535 f 0000001298 65535 f 0000001299 65535 f 0000001300 65535 f 0000001301 65535 f 0000001302 65535 f 0000001303 65535 f 0000001304 65535 f 0000001305 65535 f 0000001306 65535 f 0000001307 65535 f 0000001308 65535 f 0000001309 65535 f 0000001310 65535 f 0000001311 65535 f 0000001312 65535 f 0000001313 65535 f 0000001314 65535 f 0000001315 65535 f 0000001316 65535 f 0000001317 65535 f 0000001318 65535 f 0000001319 65535 f 0000001320 65535 f 0000001321 65535 f 0000001322 65535 f 0000001323 65535 f 0000001324 65535 f 0000001325 65535 f 0000001326 65535 f 0000001327 65535 f 0000001328 65535 f 0000001329 65535 f 0000001330 65535 f 0000001331 65535 f 0000001332 65535 f 0000001333 65535 f 0000001334 65535 f 0000001335 65535 f 0000001336 65535 f 0000001337 65535 f 0000001338 65535 f 0000001339 65535 f 0000001340 65535 f 0000001341 65535 f 0000001342 65535 f 0000001343 65535 f 0000001344 65535 f 0000001345 65535 f 0000001346 65535 f 0000001347 65535 f 0000001348 65535 f 0000001349 65535 f 0000001350 65535 f 0000001351 65535 f 0000001352 65535 f 0000001353 65535 f 0000001354 65535 f 0000001355 65535 f 0000001356 65535 f 0000001357 65535 f 0000001358 65535 f 0000001359 65535 f 0000001360 65535 f 0000001361 65535 f 0000001362 65535 f 0000001363 65535 f 0000001364 65535 f 0000001365 65535 f 0000001366 65535 f 0000001367 65535 f 0000001368 65535 f 0000001369 65535 f 0000001370 65535 f 0000001371 65535 f 0000001372 65535 f 0000001373 65535 f 0000001374 65535 f 0000001375 65535 f 0000001376 65535 f 0000001377 65535 f 0000001378 65535 f 0000001379 65535 f 0000001380 65535 f 0000001381 65535 f 0000001382 65535 f 0000001383 65535 f 0000001384 65535 f 0000001385 65535 f 0000001386 65535 f 0000001387 65535 f 0000001388 65535 f 0000001389 65535 f 0000001390 65535 f 0000001391 65535 f 0000001392 65535 f 0000001393 65535 f 0000001394 65535 f 0000001395 65535 f 0000001396 65535 f 0000001397 65535 f 0000001398 65535 f 0000001399 65535 f 0000001400 65535 f 0000001401 65535 f 0000001402 65535 f 0000001403 65535 f 0000001404 65535 f 0000001405 65535 f 0000001406 65535 f 0000001407 65535 f 0000001408 65535 f 0000001409 65535 f 0000001410 65535 f 0000001411 65535 f 0000001412 65535 f 0000001413 65535 f 0000001414 65535 f 0000001415 65535 f 0000001416 65535 f 0000001417 65535 f 0000001418 65535 f 0000001419 65535 f 0000001420 65535 f 0000001421 65535 f 0000001422 65535 f 0000001423 65535 f 0000001424 65535 f 0000001425 65535 f 0000001426 65535 f 0000001427 65535 f 0000001428 65535 f 0000001429 65535 f 0000001430 65535 f 0000001431 65535 f 0000001432 65535 f 0000001433 65535 f 0000001434 65535 f 0000001435 65535 f 0000001436 65535 f 0000001437 65535 f 0000001438 65535 f 0000001439 65535 f 0000001440 65535 f 0000001441 65535 f 0000001442 65535 f 0000001443 65535 f 0000001444 65535 f 0000001445 65535 f 0000001446 65535 f 0000001447 65535 f 0000001448 65535 f 0000001449 65535 f 0000001450 65535 f 0000001451 65535 f 0000001452 65535 f 0000001453 65535 f 0000001454 65535 f 0000001455 65535 f 0000001456 65535 f 0000001457 65535 f 0000001458 65535 f 0000001459 65535 f 0000001460 65535 f 0000001461 65535 f 0000001462 65535 f 0000001463 65535 f 0000001464 65535 f 0000001465 65535 f 0000001466 65535 f 0000001467 65535 f 0000001468 65535 f 0000001469 65535 f 0000001470 65535 f 0000001471 65535 f 0000001472 65535 f 0000001473 65535 f 0000001474 65535 f 0000001475 65535 f 0000001476 65535 f 0000001477 65535 f 0000001478 65535 f 0000001479 65535 f 0000001480 65535 f 0000001481 65535 f 0000001482 65535 f 0000001483 65535 f 0000001484 65535 f 0000001485 65535 f 0000001486 65535 f 0000001487 65535 f 0000001488 65535 f 0000001489 65535 f 0000001490 65535 f 0000001491 65535 f 0000001492 65535 f 0000001493 65535 f 0000001494 65535 f 0000001495 65535 f 0000001496 65535 f 0000001497 65535 f 0000001498 65535 f 0000001499 65535 f 0000001500 65535 f 0000001501 65535 f 0000001502 65535 f 0000001503 65535 f 0000001504 65535 f 0000001505 65535 f 0000001506 65535 f 0000001507 65535 f 0000001508 65535 f 0000001509 65535 f 0000001510 65535 f 0000001511 65535 f 0000001512 65535 f 0000001513 65535 f 0000001514 65535 f 0000001515 65535 f 0000001516 65535 f 0000001517 65535 f 0000001518 65535 f 0000001519 65535 f 0000001520 65535 f 0000001521 65535 f 0000001522 65535 f 0000001523 65535 f 0000001524 65535 f 0000001525 65535 f 0000001526 65535 f 0000001527 65535 f 0000001528 65535 f 0000001529 65535 f 0000001530 65535 f 0000001531 65535 f 0000001532 65535 f 0000001533 65535 f 0000001534 65535 f 0000001535 65535 f 0000001536 65535 f 0000001537 65535 f 0000001538 65535 f 0000001539 65535 f 0000001540 65535 f 0000001541 65535 f 0000001542 65535 f 0000001543 65535 f 0000001544 65535 f 0000001545 65535 f 0000001546 65535 f 0000001547 65535 f 0000001548 65535 f 0000001549 65535 f 0000001550 65535 f 0000001551 65535 f 0000001552 65535 f 0000001553 65535 f 0000001554 65535 f 0000001555 65535 f 0000001556 65535 f 0000001557 65535 f 0000001558 65535 f 0000001559 65535 f 0000001560 65535 f 0000001561 65535 f 0000001562 65535 f 0000001563 65535 f 0000001564 65535 f 0000001565 65535 f 0000001566 65535 f 0000001567 65535 f 0000001568 65535 f 0000001569 65535 f 0000001570 65535 f 0000001571 65535 f 0000001572 65535 f 0000001573 65535 f 0000001574 65535 f 0000001575 65535 f 0000001576 65535 f 0000001577 65535 f 0000001578 65535 f 0000001579 65535 f 0000001580 65535 f 0000001581 65535 f 0000001582 65535 f 0000001583 65535 f 0000001584 65535 f 0000001585 65535 f 0000001586 65535 f 0000001587 65535 f 0000001588 65535 f 0000001589 65535 f 0000001590 65535 f 0000001591 65535 f 0000001592 65535 f 0000001593 65535 f 0000001594 65535 f 0000001595 65535 f 0000001596 65535 f 0000001597 65535 f 0000001598 65535 f 0000001599 65535 f 0000001600 65535 f 0000001601 65535 f 0000001602 65535 f 0000001603 65535 f 0000001604 65535 f 0000001605 65535 f 0000001606 65535 f 0000001607 65535 f 0000001608 65535 f 0000001609 65535 f 0000001610 65535 f 0000001611 65535 f 0000001612 65535 f 0000001613 65535 f 0000001614 65535 f 0000001615 65535 f 0000001616 65535 f 0000001617 65535 f 0000001618 65535 f 0000001619 65535 f 0000001620 65535 f 0000001621 65535 f 0000001622 65535 f 0000001623 65535 f 0000001624 65535 f 0000001625 65535 f 0000001626 65535 f 0000001627 65535 f 0000001628 65535 f 0000001629 65535 f 0000001630 65535 f 0000001631 65535 f 0000001632 65535 f 0000001633 65535 f 0000001634 65535 f 0000001635 65535 f 0000001636 65535 f 0000001637 65535 f 0000001638 65535 f 0000001639 65535 f 0000001640 65535 f 0000001641 65535 f 0000001642 65535 f 0000001643 65535 f 0000001644 65535 f 0000001645 65535 f 0000001646 65535 f 0000001647 65535 f 0000001648 65535 f 0000001649 65535 f 0000001650 65535 f 0000001651 65535 f 0000001652 65535 f 0000001653 65535 f 0000001654 65535 f 0000001655 65535 f 0000001656 65535 f 0000001657 65535 f 0000001658 65535 f 0000001659 65535 f 0000001660 65535 f 0000001661 65535 f 0000001662 65535 f 0000001663 65535 f 0000001664 65535 f 0000001665 65535 f 0000001666 65535 f 0000001667 65535 f 0000001668 65535 f 0000001669 65535 f 0000001670 65535 f 0000001671 65535 f 0000001672 65535 f 0000001673 65535 f 0000001674 65535 f 0000001675 65535 f 0000001676 65535 f 0000001677 65535 f 0000001678 65535 f 0000001679 65535 f 0000001680 65535 f 0000001681 65535 f 0000001682 65535 f 0000001683 65535 f 0000001684 65535 f 0000001685 65535 f 0000001686 65535 f 0000001687 65535 f 0000001688 65535 f 0000001689 65535 f 0000001690 65535 f 0000001691 65535 f 0000001692 65535 f 0000001693 65535 f 0000001694 65535 f 0000001695 65535 f 0000001696 65535 f 0000001697 65535 f 0000001698 65535 f 0000001699 65535 f 0000001700 65535 f 0000001701 65535 f 0000001702 65535 f 0000001703 65535 f 0000001704 65535 f 0000001705 65535 f 0000001706 65535 f 0000001707 65535 f 0000001708 65535 f 0000001709 65535 f 0000001710 65535 f 0000001711 65535 f 0000001712 65535 f 0000001713 65535 f 0000001714 65535 f 0000001715 65535 f 0000001716 65535 f 0000001717 65535 f 0000001718 65535 f 0000001719 65535 f 0000001720 65535 f 0000001721 65535 f 0000001722 65535 f 0000001723 65535 f 0000001724 65535 f 0000001725 65535 f 0000001726 65535 f 0000001727 65535 f 0000001728 65535 f 0000001729 65535 f 0000001730 65535 f 0000001731 65535 f 0000001732 65535 f 0000001733 65535 f 0000001734 65535 f 0000001735 65535 f 0000001736 65535 f 0000001737 65535 f 0000001738 65535 f 0000001739 65535 f 0000001740 65535 f 0000001741 65535 f 0000001742 65535 f 0000001743 65535 f 0000001744 65535 f 0000001745 65535 f 0000001746 65535 f 0000001747 65535 f 0000001748 65535 f 0000001749 65535 f 0000001750 65535 f 0000001751 65535 f 0000001752 65535 f 0000001753 65535 f 0000001754 65535 f 0000001755 65535 f 0000001756 65535 f 0000001757 65535 f 0000001758 65535 f 0000001759 65535 f 0000001760 65535 f 0000001761 65535 f 0000001762 65535 f 0000001763 65535 f 0000001764 65535 f 0000001765 65535 f 0000000000 65535 f 0000097770 00000 n 0000098151 00000 n 0000144975 00000 n trailer <<5E008F2DFBBFC042841E311D2C6D2DB0>] >> startxref 148529 %%EOF xref 0 0 trailer <<5E008F2DFBBFC042841E311D2C6D2DB0>] /Prev 148529/XRefStm 144975>> startxref 184071 %%EOFsuite3270-4.1/Webpage/c3270-help/000077500000000000000000000000001413735575200160755ustar00rootroot00000000000000suite3270-4.1/Webpage/c3270-help/.htaccess000066400000000000000000000001371413735575200176740ustar00rootroot00000000000000RedirectMatch permanent "(?i)^/c3270-help/[0-9.]+/.*$" "https://x3270.miraheze.org/wiki/c3270" suite3270-4.1/Webpage/c3270-man.html000077700000000000000000000000001413735575200227132../c3270/html/c3270-man.htmlustar00rootroot00000000000000suite3270-4.1/Webpage/c3270-thumb.png000066400000000000000000000200561413735575200167750ustar00rootroot00000000000000‰PNG  IHDR´d ‘JgAMA±Ž|ûQ“ cHRMz%€ƒùÿ€èu0ê`:—o—©™Ô¹IDATxœ´11 ;¡CˆâEÇ/èø Oáƒù %(rÌr¡D„æ\­“]{dw8žæ‹øÀTŸf$2s("ÕlDf6¶ÎAòû³Q5…iMoõTsl 8æn½Îp=—¢?‚bŒ×À=þCþ`@2K·ê‘._à§ÆÀöÇý¶ß-CðõÑ{]"’sF[JŽ1¦”^ˆE\Jíу[Þ?Ñ1ôúüé½²ºÕ‡·÷þüùû/£ˆ 3?û›wߘ˜Y˜™€Nÿõû Ì·ÿÀ©“ÁôçÏo66¶?þ02bU€`€]ÃTÏ´¯J膯ßþ¹<²è pD£Ý_¾¢WPn œÁÁÎÉ+#Ë+)!ÆÎÎñäÉ E@òÇÂÂÂ’’’¿~ýŠüøñ˜>ˆåÇ÷oʶû¶ö\¿¸]רŸíÿmöÿwx8¿½ú$ÌÇ«¤ªÀL ªJ¼?þýýû+ó½Gï^½ù L4 Ÿ“v0 ˜ÿÁƒJ`püÿ‡|*¡ †ÿ˜ÀÜÿ¿ÿ gR‰Ý~ÿ¥¿3€êÿúÁÁ!zíÚµ“'OùùùmnV U}a¶Ÿ?ßK‹«Š ™³°°ýÿÿçß¿÷ïß› ƒfß×/ÀDÊ )Ê ¬¿À)(È )ÙÀ"P9 Ëÿ¿ÿ€•ᬠà PÂgú®| ¨DÑ,,‰P9ê güûÃlS2ˆŠŠIII+`"ðõõªV|Àf‡ ðà@±ðò0j¨p?¶‚‹‹“‰ýÞõmŒŒ?a œß`’("ÀÀðÜü5UiŒØ>Û4Ä5FÁ`ÏûL6¸• eË Xû(++ÙØ¥c€¢¯Ô*}Š ˜=®Os•óÝ.ÁÆB]  ¨¥¤²ƒ¤ñmðáge‘CŸRâFCËf¦ß"5;+ _ž¼ùü­òrŽBŒñ@,À¦.¤Hb`øÅÀ ÈÀ ÇÀÀÅÀ  .êÀ…Çra†Ë ò ¬ /Î30È€µ‚ •Q0Ü$IrðëÂàÂÀá*¸ÑGÿ-†@†SàzX¨`†¦¾I-üÏR'-œÛ‡4 >`À¤èþŠ[±°1}eaa³eF5Ã5piaÆÀðÌ-†•%×LÀ¦¬d`xÈÀð¬Ë™Á\õÈ€%|à .„¸ÁN‡4PDÀκÇÀp!ž¡,> H àø†¿à #pfçÕÛà<ù¬LÜ|¼ÁÀ`ÎÀp–a=ƒ;8‰È20le`‡¿ 8I€Û”Àx±d`˜€f@1i¨J1³@*`}q…Á œÔ¦20(20ð20<'p*¦5}0›fÂK0×lº6¸1k&YÁÕ$ƒ(Ø4U°2VpBy¶k€ÑRkp¤>§‰/¨‘".€Éhƒƒ+¸‘ÀÎØ¿Á½N1p³ò"¸Ê .3þcÚ@, ŒÀnõ?0›l8òv5ìW(gÀ¹|?¸˜ª[üi0è¸yànËpJz Ö"–z Öt÷"-°#Þ€}õ ìÊ4 Âa ÎƒËæWà8† 1<‡ùp3ÁÇÀµÏypúØ ó³à‚D œÃƒ3-°¿ÎÀ°\IÝÇ>: äé°eÀõË7pB{N/Àñúl½Ã}p¬ÃÁkp%r¬ëXã_p×—ý?ÁE‹&¸É æ>»x4eîcú-8 ?Ãó;,^‘{_ÁYú38ÓÍfp¤°‚SÕOp}Ž)FpÞþ°à—=(Í€BNÿÀÑü Và‚û®ÇÀ…Øp ' .…€)`ØHù ®‰€í°Ó5ÀI›œ$wƒëšÝàúoC,Ùz‚«ª¯4Ça þ‚[ÀC0x* òÀ8žn@°³"¤00¬·‰`Xã_pÉ,ÔóÀË÷à”!Žt`ÂrÇ5  &Tî0ú .6>#˜zÖ‚#U\R €Ó#¸apjø N§Àzä¸ta›ð–þƒ]ùì+ pzd€ïàbã¸ÑŒ…màªá?8ßóƒc ^ƒ+[àðç+¶7>î‚“3¸-ÂNCßÁåÐ*°z€³ÉÂ(Z6Îjé \Aâîaé"–h%¯‰ÆJ¢ Ñ1éŒ/óçM¾{4 à`"Îh‚D‚¸@òN8"¾®Ùpj‡!†žƒ³LÔ¥EÂ%÷Ê8¢æµRwònaȤzr–„¨;d«ÙZIjŽMöðTÒ¹Ù§öM2Æ3Äýë/üo*¼ëòž1ø-åò^¦n Œ2}°´œÑ¢À4g{)%êË0ó@ȉ˜|ÀmN0[\HK‚4p-#Ž!vp9&î8ñ€û®3Á‰€ÜkâëzN•Áå^ 8iûÆÛÁ Áu¡¸÷ )¢¤À]$#pº|Ž$H4›‚Çßžƒ³ÈAp¿úØvˆW%ÀõØ `c5Àž×;þ1Ø®Õà>ÔM°#÷ƒ¥¾Â ¿öš4¸,ý îI׃@à6í¸¿w\ÃnûbÛà þsƘÈ?°_0dl ¹Wø¦"a?Ãc@!W+’àð: ®„ÔÁféÂ2438Ö›ÈÀ n–>Ç«2¬5ÄnšxUš€UªÓ#¸$îã@ÚAöà&ˆX±+Ø“ÁµÕsp/EÀù\ªƒ«Ò7`]ÏÁ)O ¦ì 8^Ï‚{ÑàNÓo°²/àf Ø Jà ÷ò€S!d¼Hì5=pÈ, 6ç(8ígN… `ÿ2ã Äá 0cÇ(Ã`†-.Ŷ^ ‡ðtžÂ‹x§Bqth¡ ‚ŠÑòHÅ fJCòÿ$ß—·I¾ÉqŠ8±A‚Œx;-CYЦò[i‰7îҢ÷è]Ðr¯’0Y­í¼˜åLý§›‚¥>$?J}€ T‚SW² ÿY„‡Ý³¢ktZ›E*û„u®à÷¦k?¦hcë&uÑró9dÉ=Á†9ñzý[)þ¯¼ÃÒ¥Ksssa^¦ðç0LÆv¼RšpÏù¼k¡û#€XPÝ­+`¹À•…$¬¶~Ž42ö¯¸”¸jÀ£Y ¢ò —·i CŠ g‡òp²xGÈðçHnÀï5¸á °>'~¯I€WÙDNõH«ü @hÕÊ( ©Vˆ‰°ÂQ0R@&ŽQ€Ðhâ8@&ŽQ€ÐðI¬¬¬ööönnnÊÊÊ@.//oXX˜¨¨(DÊÂÂHBTª¨¨ØØØpsƒ†.ØØØlÀ(ËÄÄäää4D]]Í4ÀÎÎîìì,--lA7ÏÒÐðIþüqqq),,vÏ---¿|õñ€dǯ¯ï÷ïßüÍóIII€¤¤ä¿ÿ+**äååÑL@?þÊBØp€ úø”n €†Ï~¤ÿÿÿ=zôùóç÷ïßrÑïÞ=... ã÷ïߟ>}RSS»p4~èÐ!`Ù”}ÿþý‹/^¿-L2899gÏž-++ A6ÓºG}ýú¢n=ýK@Ãmœƒéä.0€°e>°š€«ááá«ä¬¦!›€à1aˆÈ8@ Ÿ’`Û,@àÛ·opö/0€«A®, õ V€l€Ç„! hø´9FÕ@&ŽQ€Ðhâ8@bÎ`ˆ‚ XúÁ;xy{Ï ê9ò`!EH$¤É6îÓµ›iüŸ9cPPÀ¿ÖšP–˜R‚šnR!ØlÂZÛ{?³ MXƒ1΂!„cÜ6\²ôAç Þûœ3iȇ’RÆ[kt8Á/Xgs;mÁ¢×ZJ©9'Úžžæœ+¥ÔZ¿÷²4ZrŒœ €†[WvP@º²4ZrŒœ €¦ÍÖb””|þü9I•ëÀ¶9€M ##£ÇMÀê¼áÑæ Ñ’cà4ÚæX¤Í@ô®VØÙÙ™˜˜þþý ìÁ;«@ò7 )cˆ ÉÌÌüïß¿Ÿ?IÞs´‹ƒƒnPrÚ&ò(;©.:ìÇà³7AXeprrB¸¤ެ«á ˆÞ‰Ã××WXXøæÍ›ÆÆÆgÏž555=räÈñãÇÑ”™˜˜ØØØœ>}¢L]]ýíÛ·kÖ¬!Õ:`å{æÌ`hPDZZzæÌ™d¤3¸Ë‰+V[q`K%%%ØD Ãpd½@ÃÍ4Ã#°Z¶¼&OžLûFKd0hK`µ@ô.9à ™#…Ï”¢xŠÁ¥€HLDάh.‡`R Û L½ú—º €è”8€€³³óû÷ C1»sxº²hý=bFÖ‘??¿­­-°ÇK¶ ˜.ÇÕË533v›÷ìÙC ÃÐhWvà4Ú•X¤+ @£%Ç(À ˆæm´dÊÚ)999"«vÊÛplRðòòÝ Õ†¸×ð9‘`·9h´ä8@¶9FisÍ«fffŽß¿“= …9R,‰4òA0¬c\@;;;Ö1:VVV666"²í ͇¬¬lDD°USS#omŒXÁëëëOŸ>(>Ç::lôøøø\¹rÅÈÈmtßÄÄÄÑÑqÙ²eÄ òás€¢ùðùhÉA’×IÉ> š—@B¶ ’ (c¦|øëè8ÐSAL—`*"ÞðA5|@Е¥|›ž]YdÛ±ê%¨€$¯ ª®,@veGN@£]ÙQ€@º²4ZrŒœ €FÛÄ‚ÃçpÄ·y› €FKŽQ€Ðh›c`6@–£' ÑÄ1 p€M£' ÑÄ1 p€M£' ÑÄ1 p€Mø333òÁ¦Tlllœœœ¸¤à‡-Ó=E¤J€Ì\M«EP}¯§”ˆèŽ˜20P]1WÌüdcCQH(™àÞ.ñVW½pëíÑé´×Þk³†»ýÇqÓ4iš~ŽÍ–e£(â8nŠ¢H’ÄßÀ×*ôûý>Ž#MÓaVU…gÝ÷Ý÷}QÛ¶µ,K×õ²,$âÂÀÁuÝyžAÃ0A¸Ýn¦iæyþõ^‡íyÞ4MI’Eqž'8 ¹ëºÇãî²,ƒR–eÇq€’×u½<*I’ã8u]¿@´O@‚ èûþõz¡ ¢(@=ŸÏeY ™<Ï_FgƶmGeÜ~)…ÆmÛþÆ\TUÕ4íWbÎ…B Ã/šÁ"b›‚G06˜« Íà=,vO!“QÌE¼…Ñö>Þ»‚gqvüÿo&Èâû?Œ{w©ªEQ×uyžãJ)Š‚Äš¦MÓ†!p!EApÛ6ß÷Çqüü¾ÄŠeYHMÓ ®mÛišVUeÆyžàOË²à„”>Žãëºîû–.’ u]7Msžç$Iú¾—÷Žîå Çq°s† Hâº.xyž·ï;Iho"Ѷ-»Ì$…€²,ã œQ 0(éyÞb]×,ËxD(¦®ky꿾wï(Â@€÷¶!G°ñ¶–¦$^l=€ØŠÝ~8˲wØ&c†ù Ì¿ÿVt]×aT6¡]¥QˆÒ(U½ž+<¦¦i$ÀâhÆS5÷}ÿˆÊö}¿, ÙѱXxÄõŸóü´ Þ¶­ë:Xr!Ôlëû)%ošæ{WÍ„àO×u•R$Æáx Z7âÂÏrÎÞãe4€÷qq¨TkµÅ8ލ€^ I¸Ä$O –ÍóŒ¬mÛF‰ßñ€¼;È(Ê^ï^_ø©ñva`R¥LÕöïÓçåoö'z7QÀÕ@ô8ûJ ˆ< & ’Ù ¢d´%ûö9!ú‰®1sr&OPÛ‚ƒOY¹·‘„¡Vi›ýŽ0o@® †ÊDldÂ[å¾0 üõÚV‡Ô9Ëè@p½×iß§«¦Ï4Ò«øÚO _´™Â…ÂJ‡œqY¨Ì.9޽ݎ|¾D |¥ 0ÇcÚøæÍ8÷óg”ËÆ!3´p,?àë!—7 ŸÚ޼L¨X„@ØðƒÞ‘hÂ×kBt¡Y„râ€Ü4>zuèèÕ¡Bà«Ýÿ íŒVA(º±Øÿà`½š%‹+7„ ö"”¦W«ç‡Þ n˜‘b¾‚“ `'ó€á‚÷$àÔG|mß6 ˆ.¾CuŲÒ^Ag£˜•ä Í5­>];’°…¼wãÿqa¾©ÑJòí+`º¼ß9½<ù:üÿRÆ_:G³¬Z[ à t5DI ×é±z‡ž®wÉ“ltMÒ!ýè+|T¬ë.ÈÌøþ8VkCJ³1`\×4\U¾m'¨q-2¨ˆÂÑ9(73 Aäùè~¾wß”ºŒêªÔýÀàµùa°qg¶fežóÜSQM®¡¼ 4SB kß_gï¶}¤F„J-X«™'ïͲ  K€<‘.ˬëÒ5ÆT¶®QWòçç ÆƒùŸ¹ÑCæËÐ`ˆ¢k‘TÐ-X‚ϨÛ`‘H@3Kô¥®M*šVô$î÷ß;1‡1+”NîÎ9Ñ3€¹¡!2ŒCÌ€§µÖ!„ÛöH§åØa ìÂô $ž k­¸VJÉ{ŸsƸí½ãú1ÆKZ¿/À͹ÁEÄZ Ø+¥J)è%´Ïì@Ì8Æ@ˆpì†h­Ñç·ü¤v˜»cˆB ТɝA00ÁÈÀέÁJ,e‚-À v#qãïƒ_”eÂÁŒ1PR‚dü0Ï¥(ñÙ ÃåÈ,i—”’7«š†Ã¿ f{×{ïœs­5&Dž7x10›= ?U¿Í#Fk-u(¥8YFŒ§çœZ§µ&é9§÷N‡OŒ @ þt"#$]*ù“ø@µ« Á#Š øª}DmD‹û5ùhS ±DKAðqž‰šà#ˆ,l/Š¥¶[,ÜÂÂ7;3‡*(N“ÉØqÜjµ2 )mL§³\.‹/‚‰€c#¼s¾C Ñ´6ç]×,˦´žHÄ}_rà†ds¹ Ë„¿… @îYéÜggÛ{j@Åízž}ïygE‰á…„¸n·Öb±lµš(xw§¸zéˆ:!5B ?ô¢$yØ[W¡€ôÈdÒƒA[ ‚àâº.csÆVÝn'Ÿ/˜fyd\† Aq*•TÕâñxÖõ6c\Žà_Oä> ãìY‚0ü.dÏËå°SˆUt Vúóm,S¥ DPÄÂ2„+¼uîYFN…+ö˜Ù™ý¸cŸ·˜½+‡ü0-&m@3Ãב´…ÂÚ‡©.Ùü,‡ÖwªþöU7*fJvŒåë+"qÎîP˘ùMaÝq҉Ç£'zÌxZÏ€©Ld“Žöë/µ’ɶüÕçÁ'6t‘›¢R«¿³RÀšJw»V&މ6•vÐh„[mÏ|\'5*ãD¢Oéø/ø]~œv›žx+F2@>Léõ ÌM&û^ ²"rs;ë –Ln*YØ…ôM#¡€Ì´÷5L¤Â9ïÅ}‰^.‡¼ÀvÙëBÄQü÷”T²D£Qˆ¨|ÂÆÅ ¨<ƒ7ðÁ6² ACˆmÄG¬¬B#QoäJˆÆÉoc³…[ÜÜ™3çœÿ™ÉLÿž#ä¶àÀ{N8-X†=X3.eÛr ¸rzfŠTáfà¦\’†qÊ«Á¥¯ܶË.· SL[ѱ¿­Ð‹–Aè†5“zn] ’¼†þÎ ’ÎÂ5Ìéfúw˜òKµh‚Oû4® þæ('þíÑÁ¿t,s[QgðdßÂb¤lŽ›êPùi¿êºç[&Ñ~uadXQчõø°›âúÿnÇWK° òiÚ¬æ ³#¥¦¯ÒFG}(í?1'©)Mܺ† ÈðQ!-3c÷ùïú€lûiI þ‚d˜ »‚ÿN*yÒkЗí+xêì¡ctHðâM KE\à Ö2—wgæyŸ÷yfÙýs|¾$É s}#½¢ök†žfC w2Íöî? (/ù ©^zì—H#&úƒ’®1ÕCY*‹{>+³Î§O©pÝj- ½Ê<åÁØ‚¶#š®ª¿×äìk­è ˜!¯z‘ÔíˆïçÀb"hb`kk¼#²Næƒ=VJ8=ýß0GÈF¾{¡+ò}ÝÁÖ@T¶giFnÃE-g˜Ù` Ïå'O/dWCHC((£EO<™öÕnd?XÈ75­ãÒ‘™BˆþàmÉäíÿâ8ÀÕÙì0A¿ZÒú=öèÝ÷¬&ßdÕƒ°;;Ãn4ƒ·í󖕉ÇBSÅÌíÕŠÚ©À½!&3•h™û‹N@óe_ Jv¢°¢×nhÉhvˆfæâY ž=r««Ùwž‰¯Ä¢¿;‚•öé«iX–awÓ¨Û[ùc 4¿ËÔAuê=Û«‚ðYÌŠõjAæß¯ÅêÁ ¤5'b£ÓmÓ1ØÍÿiL%÷ï`EÛç?躂Bèÿÿ¶OØÃþ ÓB±ØB¢LŽu*˜¦IPAÈRùü=/±¡Åðx`9¯|Tné<ŠÇm¹¾øFq)þ{^AËÆt¶$˜+’%a!uíE`IØGȸjêà@²A:>$ ù¼ìÓÉ“'ÅɶmÛFSÆÈÄîG•10þÿ¿ùÛ·)à.ïjðR x´ŠáþýûíÈaäÁC·ÀÏÀÝKVðˆÑ'0)7X‰GÉŒÀäSŠí•çÿO`Ü[t6˜öÜmþü K½f€@AÆ|€éc%xL- ì°[i¸ub¤p|ÿe`‡³&xdì>8ªÎ‡‰™Á#¿œàQÝ à)†…”YÊž‚çyÈx¼xlÞ <âNwÁC…ÓÁ£òŸÁé4XÉÈøõÑÇ3ÿÚ[¾VUÕ/þÚ—›imnŸúèc‡‡™Ýe>ù‘G{~ò#VUÕÎ?Ìé.v˜þw˜ÛÁ»Þõ¨ &L˜0a¢;Ñ‹~4ŒFg&’~ðƒ‚˜|ðg÷ÏÑ|î=¾ùÒ—¾õÑwõ³«ëgžyæ0ø¶ýo]×ÃéÃ_NOôfVUÕ›îN´«´¾ùê×þÖßþi&L˜0aÂÄaâk/þ§îã›W_}µªªªªÞö¶·U÷½òÊ+‡‰o~ó›½Ç1¯¾úêaÉv™vÝW^yetù^æÝ"ÚåGÆ”|ñ‹_ªÆ|úcﮪêúâ§?öî|苽Ôú³¥7ç±Ç J†ë"ž6Xù­ßø¹Ãt;‘?³› Œú£¯üçnPòòË/æ¿ýíoo—y饗ßúÖ·zAÆË/¿|X²]¦]÷¥—^]>'ÿ‘1%ÍôxŽ÷ÿêïB“á2=öØè*wïÞ=D'‡ÿ&òïÎo§Û;4Ý™£Kަ³ŠŸÑ —ÉÏ*‘õÃ÷”TÍðß“ÏÍÍÍýÕ?9,ñäÇßÓ[àý¿útïßaÉC°ÒýooÅOìÝøÐï}àC‡p§¹?löÞÄ!éðozkɱԦªš÷¼çÝ&L˜0a„‰Û·¼yßìÌ6©·LwÎèòo¾ùæÃ?ÜùðÃOå_µcJž~úé^ÂSŸxïÍÍÍŸýàï¦3Û9SÚ%Ÿø•/tç´VUõäÇÿY¾´¶3»©™3{ü¯7þäo<ôS&L˜0a„‰ÃÄÿáïtß¼øâ‹Õ´ï~÷»½Ç1/¾øâ;ÞñŽÑ…_xá…ôò/¼ðBUUÝ?ÛåGÆ”<ý…/tsêß¼ïæææÏ¾ÿ÷ºs½ù=‡ÅžøåßíÍìÎyòï}7FùÄ{ßÿ+_xòï­ªê0ÿÉû‘M»Xw•vz8Lùã¯~®”<ÿüó‰…¿ÿýï÷‚ŒçŸþ‘G]ø¹çž]¾ªªGyä¹çžk—lÿl—ŸSòã?òªªþ÷_üdUýpf÷Í%ðóSÛpHêðxüƒŸïÎé…,‡?»3{ L¥'€Lï)yöÙñל&÷<ûì³ÝÔÞŸ=÷ßSrx3~Õüø|ãæææ>ø¹vÎáߟþÅßmß\rçßþó^j´ï}ßûL˜0a„ ݉îéÿîÝ»™Ô ޽üÁ½Ç7¿ûùÏþþÌoþü/üëß™ a>ó›?˜¸¹¹ùÓïýÄÔb|ë~ã¯ÿÍŸ4a„ &L&¾þG_hßTyÚÇ1Ç[~dLÉç?7ˆà¿ÿ·§?ûÛ~衇N]‘[FÆ”|ï{ÿçGëoœ´VÀýÔOüØ;wN]‹?þøaâѹ;èÆIoI,°›†³ÞúÖ·î_઼þúë½9î”!J€FßdhnÿYßž_–¬“I½<»Ë$ÊJ¯•®O"Cà4 î”´gúúþ}x¦/γ—[·¬j:u´‰Zm[y`ëßÔKn64ƒ‰êvlÑ º™Þ#]ë0휓â dôÃ轇“"83AI÷IJÙ³5kmmlž!P®ìNÉÔ žÑ[&e¡À¶D#"€hÖŒ)K†ƒBÖÛ<€¨…Žnå@×¥çõî¸ÔLniÀU(ûJpzPH{³d4’ÎìÞ\™zyIÓù7»p~Šº6›ŽÌ(n²f KÙ]g#€©Û!‰9™·U-S ¿}„ (B”!Jàì¿T}· K” túu›áa?ä;ûNØ©_ñúÒÍʯáŒf˜øÀÌ9Sï‘+k ®JÎÁpêH;”>­1z0Oü®\Y†½Ô‚÷„m˜á¼{wJþýgþeö*m=êé½µh­ÞûUG_·ZOÌßÜæg5ñ#ÆÕò6Ḭ̀¤\›¥G×ÏD‰+ö¥«çd8[ÄæzKUUÿègê×_½4‡Þ^¬ò¢Ô­Â‹f0q‘a™Í3ÌUðò´z°2›¬`­VñŠeêNêÝ­®'æWƒÔ‚ è~ßbÃ<×g›yvè&¥üg‡Í3Ü@Ù]gë—x$±ÕZS7ò‹Ë_=QVq5¶Ý. ÀAâx8{€Z=}ŒÝv$Úq¸Å©ûd8¯,(ö´yñjÖò!J€%@cJ¦¾–’x½Çp~zDqwNA†Å¦ÊJ—®|•D=”ÞäD†‰\•5'©¥g¢•¦ -(+çPðÝœa†Å5ÌRö•àƒÄæ¥7c/¡O—x—üÒ ‹Ë*(®Íª·JqNe8üðlÒ g'}€=Îç伉 ß&•s XTÜÉÎ)qß4ƒ‰|S‘ìnF+ßÝ©›Ô0‘aü–29Öœ‰–”¸zïý›5{ XR$2\Z·eâ%›;ê[Mø8(8ÝŸD ÊJG$kΕۿZíHï)I¼J/½ Á_޾gå‹_Gè}¯kLÌñ–ØÙÒWžÖ?v™:§å\s¤ $}ÚÒ}íV¯xß\ûФ¾=sóÊW¥õ‘”™=˜oþÖtV£ƒ9ÒežšÁŸ+3LÌ_kçÇ7õí½~¾bÖ_Dp1N~›üç”8cJºã7ÏN„Ê‹HVŠp0/“xÑ”ºè+Áë¿Z¼ÌI‚’Í¿ö=uÃjÏû‰¯+WíÂD†ÝãÍEÜ‹8‰‚õ†‡Üæöñ|XŸÑ²Öœ6Ïp•ct­6bÓ>r[_JNYÅõžPW¦ágÀìq>sÝ#{#®î8¿&(Éå×p~z”MΜÙ]U°/«äW#±¥™Ùn¾ ÀZs’ªòÎD9©KW<Þ) Ý#mï¼8cJ€«&(B”!J k·_¾8†³®<@ù@×ÑAÈ£ßS~mut­¡Ñ¦2ïÍ™ú¾ñ¶¯ïVo´J9IÕ 5ZÃÑ9S5ɬa™ôN­az“´—‡ÊÚ°¬ò‰¤œ[ §ò‹ŠHC!ñ!Úû@4eAIïôŸójýa€Ò®•ˆ3ÊÊj¥GY/ÍmTb»IUöi&¿¡fë9{ÄmÍOSŽÖ0g“wØËmµaºòS ·À±¥;@A®ùÀ×®àñMï0Z—~ù6g­aYíÌêöô÷«g/ß«ävµ¡rjØ[¾Z½+¯ÜlÝÐæ÷6¯ülZÚEë²ó˜’K=%¶«l“·m¨cœšM3Œs¢ªÝ?#Ô°•x$¸ÎÒnAIïyͦ2l¦‹+~‘_=ög5VPÙ&7ÔT WJ´aü /o8ÂT÷;ž ÛðH]¸{Þ)©oŸq7ɰJ4ë‰GeÇÙœç2ø¤`“‹*±Eŧ©6,~֓Ȱڴ†›G$;ŸJ›‰x«­ÆyE$ÕÖYèH¿}“Pß?ÒpÜl4ÓÓtþ›Èsj»Ê6yÑZ95¼6K÷r4ê¼aê¢À¼þJð†Yísø®o_”'žè®[VâÒå5ŒÏ\ /Þ쇸jAIïhÒ½½ÜMýjëú²ªÁ©º8"Ù䰘خ²M>Ƙ›)‰]9kÏz®qì“_N +³òùm¸¦G>¾©Çb‘aÒÔüáZeeÍ*(n©Äv¥7¹L·w}Ê*G=8IÌ6ïæ5Ig8¬áÊ 7WІ£¦:ÀÎÖ|¾6Ï0±+wÞËÀi))xT1{(Y´âÔõÜ¢¬ò£‚²Ž‘”SŸÞœÙM.Û_'†5;%ff†‹·a"uÛ°FNõ•¸áviÑÀyóÛ7@‚ A ‚ AP„ (B”!J€%@ot} xâ×1$I’$I’$I’F“n)Jö|«º$I’$I’$é‚“nñøAP„ (B”!J€%@‚ A ‚ AP„ (B”!J€%@‚ A ‚ AP„ (B”!J€%@‚ „N]8cMÓTUU×ubNbÅ®ÙUò3O—¿úÒµvnÂò‹+kC`A œÌ>ç¶ndÐ4MÓ4K#ŒüµÖØ¡5Ú"–†wû·\'o`‡Õ©k1¢wö­ëºàžG{2Î/1ùøÖ´°ˆ Áã8™öjûòžÜH¸àÖ2 Jàd.ïì[×uû$ë0½hÝ£Õ 8ß@¹vxÁa¬Fñ·c¨%À¶1™È ( (KÖûªHæ·„†kUK⌠‹HV¶Ϙ8™}ÞiÖç‘_PÙZkD~;Ùþ­×IP«tÏOǾ—P|.ܧ¸áòùТ‚Ö+(Q ;ðøAP„ (B”!J€%@‚ A ‚ AP„ (B”!J€%@‚ A ‚ AP„ (B”!J€%@‚ „N]"jšf8³®ë⤠6ß.Ië“®P–—ÔM"A #ŸÒ²¤ 6ß.Ië“®P–—D@‚F\êUHk2Iݤ+¤å%u“BPˆK½ rM&éÊiyId +‚ AP„ (B”!J€%@‚ A ‚ AP„à·o.\» òYA¶KR7iOAj¤å%u“BPrá‚üØUŸÈ ²]’N%H ƒ´¼$”\¸ W!A®]‚l—¤nÒž‚Ô0HËKê&„ ä¹ ríd»$JiyId +‚ AP„ (B”!J€%@‚ A ‚ AP„à·o.AüߦŠ_à 4T¦=[ã [^?äT%— þoSůa*Óž­q…-¯r*‚’Kÿ²&~ ƒÐP™Ü)9*ýS”\‚ø—5ñk„†ÊäNÉQé‡œŠ®@‚ A ‚ AP„ (B”!J€%@‚ A ‚ß¾9›ÿDÖ¥&5­Ñ¿5´|fd”œÍ"ëR“ΚÖèŠßZ>3 2 JÎFûñ“ΚÖèŠßZ>3 2 JÎFûñ“ΚÖèŠßZ>3 2è „ (B”!J€%@‚ A ‚ AP„ (B”!øí›X‚ü¦Ý¥&Åw…›\F·9*mÈ©Jb ò›v—šßnrÝæ¨´!§"(‰%È…KMŠï 7¹ŒnsTÚS”ÄäŽÂ¥&Åw…›\F·9*mÈ©è „ (B”!J€%@‚ A ‚ AP„ (B”!øí›XüV×¶ÆnrÂæ›¼góžõNÑ9AI,~«ë [ã 79aóMÞ³yÏz§è‡œŠ $(]WØW¸É Š~È©JbqÒu…­q…›œàNÉ©è‡œŠ®@‚ A ‚ AP„ (B”!J€%@‚ A ‚ß¾‰Åï`u]ak\á&'Ùä ÕØ“~È©Jbñ;X]WØW¸É A69H5ö¤r*‚’X\ t]ak\á&'Ùä ÕØ“~È©JbqÒu…­q…›œd“ƒTcOú!§b +‚ AP„ (B”!J€%@‚ A ‚ AP„à·obñ;X]WØW¸Ée6o¨²6¼Ô¢r*‚’XüV×¶Ænr™Íª¬ /u§è‡œŠ $(]WØW¸ÉeÜ)9*ýS”Äâ¥ë [ã 7¹Œ;%G¥r*º!J€%@‚ A ‚ AP„ (B”!J€%@‚ A ‚ AP„ (B”!J€%@‚ A ‚ AP„ (B”!J€%@‚ A ‚ AP„ (B”!J€%@‚ „N]€ªªª¦iªªªëºx5k•e~Ö›ÜÊÜö5{aiYñQ·9—ª J€¾Þ)¤:‡cYXÓÁ°yÚeÚ­5[‡ÞòÃ⎧¬¬Ñ¦;jð´›KÒÖ”ãº'’ü“Áúâ.^ï ÝÛðvf¯ÙÓk%t—ßgWnëì*<«·}¾º%À2½“\5qA?œ9zZ½dL\[Þ˜]+mj‹Êb‚ÃÉæ„¡@¯¶‹ê0º+§rî­RP\ÑÐÙÛ„©:§ïQUs}~t±|é>?ÕU*þ|%öfâ¦Ý¶{Ù@W ÐðÄŸ8N©ïK1º@/ix*Jd;¥=?íðD#Ç ¯nÓ»rª¡êŽÑ—Jä3Õºû=Ý»¦2LÔ|v‹–ÞÁJTcvÛs,ú|%>DmRwþ1>,‚ eêâïpZšºŒÛähUvIºf0Á†•¯nŸ&ó3ln'öfwå¶ µ²†krÍ0Š%Nð™õéÞÒHT#Qó‚€{4ŸnYÝ<ó›w“šty|ŒKß½ïËf³ª;0ÖŸN†5<ª5•/ØÌ£>ñÙ°ñùo+Ñ+Ò-má©>_ЪݸgXôv «±ÿç+}pXCPŒ;᳃L‘kØžo ÖªîŸfÚémëv$£#Ž*HË‘í^î­g»¦fŸælU¨Ç7ÀÞ‚sóuÄK/ˆ×<}?ÆÍ’s´Õs¢î£±Þc²SÕðûw‡>ÓíÕÛ”ÛèÝ‘®n ŽÚà ¹à(;%‚}B„Ñí*Sv²LïÊ^ÝIÇ“èë3,»úÏoêÄ8¡âíZùùê••H:ö 'A °™œ; eÞ‡kuÇŽÞý.¸n¸§º?Ñ}öQ|e4Ï¥ç’ô®m¨nA›?ÄYÔ†©ùE¬ï³Å ë6ÕŒe„–.œþõ’Ò•_Ϙ /}”)N-[qjtafY™GÌôben æ g.ÚêüÊä¤Ü+𱦠—6Ålò3ÌœŸ¿uî‘ãå¹ÉuÅRî”!¸S0ÃhS؇;%@‚ A ‚ AP„ (B”!¼§dôºµ$I’$I’$IÒ¤[ ‚’ÄK„$I’$I’$I’ò“nñøAP„ (B”!J€ ¾}C†Ño?äŽA€ëâN ‚ ¡üñMÓ4UUÕuÿiÄaþA/uiR¯ˆîŸÃÒ›¦é& «Ê¶û«ì—Þ¾ëe5º+}&-Žgj —IïÊDߘê]Ã9‰CÊ¢‚€=m|§¤=. OeI9ÅõÔ÷þÉItwñÔ^®;†ó‡« ÷rÎZ[z/%úFN·™Ís¸Öl'Ì/ØVaP2z[¢w¥Ò=O,Jª.Ýna¢îÊìíÌ*Ù7F“š¦éå¶þ¢ÛÀ©œñ˜޳cg1%Ñ7t¸%AI{Œ©{clªÃ4÷&u3!¾©1Õฑè9Ýf«êÞ) òa‘á3»ÑFïÏWaº³Úb¸ËržË$FmõI×£ ¬Åß¾9|žÅ”©ëºíB™g…nèéDßè>Ê9n$úÆ0é0§7HE‚sW~§¤`Hü1œ¼,å4pµf‰¾¡ÛÀ5Ør ëðë|SO‘ÓIíÌnÒ†—5é± I$ö×ú¦+‹>G»Êì0£¥&)‰ÅzåWÑm`ÿöM{OµýsäÄiŸù ¦öWoWc{3:Ô]~Xâhw" DßÈé69yæ÷ÝNkqP2;x­ììÒ¤œBA̶5[z:é¬Ã§Œ6ذÙÓ{¹  âšäd{ËYïå„d,j½^̺2ÏÌAµ‰.¢ÛÀÕó+ÁÇ‘8'9F]{`9AÉq8'ÀBgüFWà’\Òã”Mî]l˜ÕÙ.¤gJëÅq©ûâTÛµC¹kŠè>,?»~©}µ\YP21‘Ù¦vÀ5°—ÙÍ>­WÊèŸ]SKö2]%šá&¤+?»i£mRWUSUÍòv¸Â£Í…oòš;%Û(Ó®p“ɤo\¹‚Ð] ÎÇ;HœÿÒ•ŸÚ–ôW¶Ãñ\ÕÆfÙöñMÛƒÛž7z11L­¦oÁu?‹"ÄDïO—5LššßMªaâÖâÒ¯öš·¬9mÃ2·kv/'L-_ÖrvÙ0iª¬Dk¤ J”•N*³anÒÙóó“Ò5ìMOµð±[þ$}*goÞì ¹}vØ¡¸ƒcR ’òPSk¥O²Ãù£çåኧÿ¤c k3ÖLugf}ûϪÓj£újzf¢Õ ”tYÝù½¤a……攕®ál)‰VJWc˜ZV©íJïåœ ‡5ì-³´z³-¿²³¥73¿¬?RoÛ†íòÅ-ÿó•Þ_Sf;Ûè(QÃs´ô(ºÈæáËlV‹jÞÜîBÍÄ^Nd¸¨‰êå½·ìœ2»ÖTS5l³]úq8Í'eÍ’©°«¾ÿßü¾5Ìd¸L~»$2Ìÿ˜­6©ÆP·y›A&éjôÖ*«Fo­õǬD »Ë0FÜéúlò!L4Ôæ‡û#µášÎ–“óÒ¤EFDkZ>ÝnSÇÃÌl‹8k2YïTåV·ûÞ°gVÇ<¤ÌÖjiRY†ù¤?zT 1%éž±á)0]Vñ‘eª†;_‡mÛPqlWbW.ílÝãÚ†ŸÕsï}>g§ìÐuËZ~ôBs˜ZPEëÎ^íô»÷ÎÖ$æ±héÇ¡8$]³—­uŒãÉ î#ÆùJðžw´¬âk¾‚²8ªÙ]d§©Ææ–~¾ŽôÑKÒòŗΣ—þÅ–I—¤…·Òë“ÃkÃŽ]¶V¢†kœÙ’‹´ùNåTŽ·+/쀻§ÄNñÑË—ˆKÒËWKzïÒRÖ;áà•6ïØ×ûqˆðF×ჽ•»¡›a3Ô+«Ùz÷'ÊJÔ0ÓÒ‡÷ݲêé¤ÑRòÛ°L¢†e»²¸òŸ3;Àh5š…ró6ìU&3òÏ׿½„Í{ï©ô6$s»Îñ|_`‡C÷Ïm;öúCÙq£·îæÇ¨\› t­ŠöêöÙqt~±ácÔ¥uضà 5L+h¥ÄuÒT5Ú?µaNêÒHïÊ•mÑò9 ¬é²¶:¯ìlÝ;eÍGoeg[TVZ¢þÛU†å¶ 6ß®=o–lÛuwHé7ïØ³kîèD wÔcT–² dªrö+^wvþ¬z0±¾¬E[4›š¨aA†›W£ž˜^YÜÒUÊ:@YõÖlTAž³IK¯BŽ÷!Z”á¶M1k¶s.í½³EäèÒI›ôêüíZsnÆ%+?û£ ×ð$¿¾¤X¿Ö¢Ú®9FmϘhó{ÎPl‡~¨«s äŒøÜ^“ïë“W€ Ù›œ]%@ ‚ A ‚ Aè^7šßIDATP„ (B”!J€%@‚ A ‚ AP„ (B”!J€%@‚ „AIÓ4MÓœºÀ)…J꺮ªJ\×ì¥+Œ†‰¨b6©>Ü/éήÇâ $4”%u——ÀÕŠr§¤]FD×)Ê \¹]E$Àâ;%Ç BÜ)”!Œ>¾I¼Ä,ñœ¥l-€ªr§BP4É';ÉùöÍááK·®ÍØœÊðtRO$õæwàÍØ£Ë ωu{g ç”|Åm8ÜÝÅe%2\»+gï”$r¬§{!{ª;‡ëzìнôˆÝ=åtW©ÇÊêW͟ʰé¬R Ré*nÃÙ&MG¨ÃÕG3Ü`W¦ƒ’Zç¸hÍ`¢º}BÚäâ3‘a/ÄaJq6Ë6ݦ2Ü`W&‚’üˆD78ŽØ×fv/}²“³dÁÓ¢ªšS’‘ ÀîÒGìmoЧÇ"̮贲ÆÉÛ°xïWÕÜ’ô­˜Úó€31zÄîÞ™ßð46:ÐdÖÉϦ x4ëæ{¿* 6ùJ°¸à\ÄCredits x3270 began life as 3270tool, a 3270 emulator for Suntools (Sun's original proprietary windowing environment). 3270tool was developed by Robert Viduya at Georgia Tech.

3270tool was then ported to X11R4 by Jeff Sparkes, and given the name x3270.

Paul Mattes has been modifying and extending x3270 since version 3.1 in 1993, and is the current maintainer. c3270, wc3270, s3270, tcl3270 and pr3287 were derived by him from the original x3270 code.

Over the years, a number of other people have made significant contributions to x3270:

  • Don Russell added RPQNAMES support.
  • Dick Altenbern added DFT file transfer support.
suite3270-4.1/Webpage/cyrillic-thumb.png000066400000000000000000000017441413735575200200540ustar00rootroot00000000000000‰PNG  IHDR¥dhýgœ pHYsÃÃÇo¨d–IDATxœí›;nã0E¹´ì"¥;—Z‹ì&KP—Œ1MŒ.¦x .Òk 9ŠB‰4)=~u ƒ ÈGŠ—?R ¶F×u}àñññ/K3¢mÛfÂMèÏÏϧ§§Ãá ”:ŸÏ½öç }-fž&Ó®š,ÀJš¦ù÷EÛ¶½ŽmÛþ| t]w<Çãõz=NJ©“¦i–ÅÏ&°__š¦ùý…MïçççÝn·ÛíÞÞÞÞ¡X\Çóý~ÿ`¿ß£w%(¥î¦‘×Û¥Tdhð> Í¼†˜>“Þã wËž-"Æ¿!&c§ÜÌ’½ëáîªÚËXoØw»€(Ãê%<Ÿñ×- ÂÃåãáò1„-ƒRº3dǯlœÝ?û÷wÊŸÂÏöM­±[ÄÓ.ùJN·€ª±ûhÕîßöÿÙR¦ ìU²·$sLàrƒ•à¢÷b;ú6Ÿƒ$&ã³f‹ $RUª|Óu·ßÖ®šrÙ BIŒséCäÐo|ÍB$Æž=Õ`¬Ÿ6 ˜F“k¦ò@…ÈžJZîl‹T·–ûm»OðM©Å›tòÕÃT¥õUõ%´}€P¼vêÕg!Û”ÞbÄ˾½èüY0±ùÆW AS]Sé½ R5z/c•/ÀÔ¸©U˸R÷8Iu©G€à£ÄR„H|nÄvñЄöËCäN­"™ö ¥äáŠô½u þQÁ-Ä£ôÆ*½þrÊ4}îø®£™âEÖ[ÌëJŸeM„FÜšN¹¼œmwúÍ@îz‹Œ·eé]J×YþÂlš\sˆLúõµ ûQ‚õ‰ã9ˆ‘ÅyˆC¨ý©^bË:ÇzL^lÁsE"öMYôƒÐç^AŒŒüÛ÷’ネo¹U’Ñü;É|ŒIÔLþ¿qq"œ_[Xƒ"&!ËŒ'œ§¥ïék¬ýØ ‚KOò›Èm¾îE.Ïo©uÁók¹}§"Bïß«> –J/âß¾EgøpÍúÑ™uå`ÂÚõµ„ïç¹ís1U‰½?fÁw¼yÿÊS$FMa­[§ê‰ ß×¼ì/("ëù˜àÃ/·ókR„> eƒØU2·øpù¸eâ¦÷} ÝÈ”¶”8Í 1ýÉ~uÿt½§a¨“^àá½WâÒ€‚<–Ï%þ‡Òè]:š÷¦ia3üÏ~ s+Mn'IEND®B`‚suite3270-4.1/Webpage/cyrillic.png000066400000000000000000000272401413735575200167360ustar00rootroot00000000000000‰PNG  IHDRÞ¼f"5Ä IDATxœíÝO¯%EùÀñ:÷^2üQƒ  $jPã$¬ 0‡…l4莑Ìüpãáð “ C@LLxÌ‹™I\L@#2&p! !j€Ì™þ-z¦¨[Õ]§Ow×SUO?™À¹}º»ºútw=]UÝe @1VƘ¦iroðä“O>ýôÓ¹·¢Û“O>yúôé½öwÞy'ïÖûÛßroB̵Ф­8ùÊW¾bŒùøã¯^½Y榛nÚÙÙ1Æüõ¯M¿…`f[UI?~|?éün´t(41Æ<óÌ3O=õÔ|ÐþyÛm·ÝvÛmøÃÜUüøÇ?~ôÑG¿÷½ïÑ@¥Îž=;pÎãÇ Ìo M>ùä“§žzjww÷ĉƘƒƒƒo¼ñk_ûÚ‘#Gvww_yå•ýýýgŸ}öÖ[oýË_þ20UPšNö÷÷Ý#õü­C¡É•+W>øàƒ'N|éK_²Ówvv®\¹²»»{õêÕÕjõÈ#œ9sæààÀtõŸ½ûî»1þ󟽉ޔNÏ>ûlûág?ûYd¢Ò7Ý]|Hî·‘eó²Ûæn¤Àèöþûï5¿ t¶Ò¹TÓ4«ÕêOúSûç׿þõ!ëÿå/ùÄO´ŸŸ}öÙösçD;¥¡]sçœC’’£B´ÛöÄOD²<ï¨×Ö5l5ÿÑ£G;¿zï½÷úÖôèQ÷[ïOÏNû¿¦il©¼»»»Z­V«ÕÕ«W÷ööŽ9rùòåÝÝÝö[»p°Ó¿~];ѧ-½?ÿïÿþÏ]Iû¡s¢» Áý¶sƬÍ\/¹íÃMíœâNôÖàM²TgŠvƒí<©÷X¸‘C¶<Ì (^p)*Œ:'F¾ºtéRÊ=z´]§ûgçz:jMÞ~ûí÷Þ{oggçèÑ£ï¾ûîîîîwÜñŸÿüçÒ¥K7ß|³³­ñìïï?~üìÙ³n]wý§Nzî¹çN:eŒ9sæÌ©S§ì·gΜigðö7›åNéûê\Û©S§Üév ½MíœâN´Ÿ›ëE¾·UC–r·³ýÊ]•7OŠ=Ö¹‘ñ-o7Òýqå³µ&_ýêWíÄ·ß~{ãüî<í²0mPÑÎpçwºIôUØt„&GŽ9räÈm·Ýöüã›ßüæç?ÿùþóŸ~øáÿþ÷¿;î¸Ãí52üÑ ¯ä;yòd[¦žÿüó‹§Ûcócg°â¡! }ñÄÆùÃy"«zë­·¾ño؉o½õV$‰k¡Iû"“Õjµ»»{þüùïÿû—.]úâ¿øûßÿ¾aggçsŸû܇~øÎ;ïìíí­V+cÌÃ?ܹÒýýý‡~øìÙ³ííúC§¿ð ?þxçlÞD÷Ï«W¯¾ð öÏÇ|ãÚ¼•xkkWòüóÏ»k3Æ´Sú–myüñǽtãKE25dÎÑ{,>óí‰o! @£[mÂy†¯*²~ãÕšÜ|óÍ?ÿùÏŸyæ™gžy¦oþð‡G޹å–[Œ1o¼ñ†÷íw¾ós=dqÿëÝF¿øâ‹?ýéO1/¼ðBûÁNq·§¸±†#ü³išm׿­¤³zÀÛf;%²¬ýÓ8d©Èf¸ÙÙ*ñ=ŸyãölÌ  @2µ&÷ÝwŸ;ñ»ßý®­ûù :¿øÅ/î¼óÎo}ë[} |æ3Ÿ¹ë®»^yå•Gy¤³jc‘×_Ý&o—U¿úÕ¯Nœ8ÑN9qâÄ‹/¾Ø¾FecÛGçÂEú–ŠL§Û~ní›­ó[ãd°sóú– “îL4éÛ¸‘„& €­ÀøÝï~NŒÌïE}K]ºtéþûïw“hÿ¼ï¾ûÜ]}Mn¿ýöx –cn¹å–K—.õ•@¯½öšýêµ×^»çž{"…bûçc=ÖÀƘÇ{Ì-íl=öXßú÷ô­Í¡–Á6 »þ¾Dã5—z饗ÚmpS|饗¼9Sì±0é­òKhÕñððV_œ;wîØ±cçÎkgðþ ]yøµ×^3ÆÜsÏ=¯¿þú›o¾yùòecÌÞÞÞM7Ýôßÿþ·õ–[n988xÿý÷o¿ýö[o½õþûïçm°Ôå׿þõz½~çwΞ=ûôÓOÿö·¿Ì|õêÕv¶öµ­éæoÇÐ9}úô§#··¹o¼ñÆ•+Wîºë®«W¯îìì\¾|ùã?þ¾pà 7c>úè£Ûo¿ýÝwß}óÍ7ß{サロ›cêµÕ |ó·…&o¿ýöþþþÞÞ^Ó4W®\1ƬV«n¸Á¶}ôÑG>ú褔·TRã“Ñ?KuBÒUþbM YU&’:;( Yp\·†ŸÚÝ*:qÿ—å¤lš­vlöŸÑ ƒlªëºvP-ÊôÛßáý Ò­¼LUo9±„Ô Ah2UÆ[wÊìe@$-/¡éI܇³äqcZ3îÉ!iÙ©ÓšQ!iyåØq8‹áçòôbux¾ÔìCÒÒ€‰új•Sak°g<ˆ‡Ô–Ï•Ü|ÍÕÈIkö‚ȱ1{sü8œ1 ФÕ7Oº´fÌT$­Î˜R&­Î)3¦5ïOk–õKKÍ>œ=­r¸ :ÆšÌÁ^ýÉñ)s¥5o¦5o¢C~¯y¯2yó•"kó5{”?¡Rÿ^^‘ vJ¦•t&*JKÛ‡s‘L«„&I 9RÄÔ‰’ظÂÔ÷@Sæ—–wG’èhÊ<ãÒÒzfÉ—@Z’Ç¡ä>LW¬.9_šÐ v~Í…WÅzZ•V“ {cö|­¼×ýgfꦗ=_¤U]Zᡘ.­H«®´ E­ÉD‘ZåÙ+œ7®pöZô銥5=õyIú{IæK~Î{„u~ ¤•ñØ _ÓÓš…dZå AgNÏ·«d#iÍ^ \HZarSÚ˜Öés¥%™/á}˜(>îKKàü2‡÷aÒ´f/‡ŸËSRÙ˜ÖìÉ’/ákï”5ŽÐ„¾& P„&  „&  „&  „&  „&  „&  „&  „&  „&  „&  „&  „&  „&  „&  „&  „&  {¹7XžóMïW­·cn’ùòÒ’ÜonÒUÿ^@©¨5€òœo>ý‡)Tî@•™rè M𠝿ÞÔÏ=ᵟü(ÝC«kÿT’9¿Î7jw jJB⨢4„&Í…WWÞ›{+ ‚{¹äÒ ¤ —@ԳΧúФ3. +Q¨VÁ n?`vÔ—`€ºŸÐé«/Y=x¯û•þj•ŒO+h^4¹Œ3â„Â0‡&ñ€ÃF'úãs8I}¯®?ݵFëC¶…T2W½Btöç䚦âÐÄÍ4^²”¸ÄȶqÚS®½Jš´üéM#N{ÅPVl{—DáD•ª84ñbŽ0 ¡Ö[Ó~™©ŒN0·ê»Áö±IäÞ(˜d¿ïÔµ­ò ÉÓš¯ë*®5‰Xn˦/dÜÛ)¨¬;Q–¬ô„&^,ùèÅÅåìS)äˤ¨22ú¯TzBÐC{Ù#‡=Y!µ}M@¨5ÑÅ>ЫìFA2_Âû0uBáÃÞé’“<ê„ß cw÷_ š@Tõý77èQv›!IßMÚbTšt>\\w×öÃé…~¦XÞWq’ˆ[×%Ce)®² ¹¥5_×Uš˜=z´FÀ5ö€àV±‚L•‰0ûcqU ­ ÷ºÁ¨÷Û25QHÔ®¶ï¿Ukw£ ¶d:Ь¡àgrÙ#__ÖÕ‡&Í…Wí?wb8›ìvHÏ–¬c9)®8qIŽÖ©¬dx£®WS¢7:©»AÇ{Ç«÷rzûU¶WÁÚãFå%ÌÒ1Øfäº9{¾¼´Töy>*R§"Ü×DŒdF¼´tì@aáSº+MâцNÊzE½ä#©­ÔÉ¥î{è}N—/o…2ôšô‡„ä>t —@2Ï`«¬2±wP¿”dZòôå(ŸŠC“òÇ%^7X•Cf'½ã~w…ØfHÖšH¾×DžLÅdä½&:v¦XŽTî=$ 94)¨ÖD÷y¨#_¹^¦øÀHÊžSÕ3Ëék’ôJÕÙOBß>Ä*îïÙêõ;‘Ú¨¼;˜]{NÙíbÊÏ1âËlœ2;ÉèG ìbT\kÆ}ý^³ÕxµÍÜ%`9„{´¤¦µÊĽe볯c×!¥ŠCÓß6œž­MG²s%Peǹ|_ùÊ •wM™¢j|>u‡&œ|_ù(A_\b”fj*îkB´ö5ÁŒTÖ<²Œþ(Càêá Ð#íIv3WvH´Ü7×)¥$4‰¿þ5g\âÕ”¦;óåk2lZ2ISu?‘{ì%-$+í½•'JKñûˆÝ—¦ˆÅ%Þ¥£vêG˜ÏAIh²ÑIΆï­Ì&åñ*_“!_k"y¯/s/®¸Ì“!³»Â`K†îƒAG\b´ÿL™hMú‚"†Î±‰ð5Te_“¤á‚ÀÍw_ºÉIjŠK}›‘dƒŽ{Ÿ¦ïPÁL4„&}òךH6èxúšÈSV*H+:ŸÂ¨²—|ƒŽQ×U‚ªMú";=gt"Ù #yzp*b }e¹$…«?PÕ‡&â½bóÐôžiNŹ'Iû¿”½[l´mÉ´²kšæâÅ‹ëõ:÷†ŒÑ××Ä’­6%2˜­|êó®Y,kášÅÒJÚ±@2_2ëïL%i¢’Ç¡d^B©÷áÆ)³§%µŒ[ÉßKWç§õzmC‘ŠtÌõºöŸØ)ôAI"cœ.üd¯öú¥ëBfŒ¢ßU³ïà—¬ÃP\_RuƒÎÆrŠ:G’²RG=±ßKx\YÔ…ëÆ,Ú.]ÚOçŠC“Ú¸d)щÊÁèuSye ‡÷Ã’¿Ñ,ÚŸLæ‡Ó—˜ªt¼F/±.ôÉò&Ml7B{Ñ´ÿ€%°±BÒ¡¶½´T«»ÖÄ ;:ãw¶0#hÝo¹ò%Y~‹Qvݰž²|anuךÄcŽ‚†Öwê˰™}g™äð¼¨VÝ¡I\—äNT–â½1€Å’o6’$“£e4|hUqƒŽÇ AìŸîèĨ¼²´Ú¦œ¶Y°r*ÃÔCˆEª»ÖÄëúêNwÿÌYw"—äŠdº‹ºTv)HJx\±'t„T–⩟<2êxaŒ•HÓ4v$bÔÊ;7T^£Q¾¼‡=P­õzmC= :@ºtð)É÷\ µ&Š´áA 2Ê{øqð*š€‚hMr> fU}hbß«–{CO^ÀbÔš”ò^50“ŠŸÐ‰¼W-|ÁZ¶W®…·û:zêÉ.?½äð¼I“[HZ’£Þ·’æKì;ùsY ¹,Ç¡ÀˆåZ ”@Å¡I„÷úלq‰Êq$O{·ÍbFÞ«KÕüp’£Þ‡ë×Jê;*²>3©»A'Â6ñäÞo 4žiy·ÅšÆbU?ð½@¾2î7•?YRYÎeíê®5‰÷/É?ì°îA=¼)€%6ð½<­ùÂv[IDAT’áø2®½u‡&a‡ïÏR¢·&S‡eT*¦e }{Ow¾{À§>H–qíUÛ SÊÃ;*†p«Qع2iBF¶ÖP2_2ä*ϯ¤™ò ­•å²ê®5éyxG”ʸÄähÐqSL—VøX„À LÇ/\{ò(irÞQ‘ºø1‚uébOèhmœí<—uPù{ujšÆŽDŒºu^@%PsØ«ÉHQØ«Å[¯×6QÛ @9 ôáØ¨œÎúI¾— uÑÚPµ„&ºØþÀ¨<ÔUfJ»±f4耂T\kâ=Ì+_eq‡,iɼQWøZF˸Q6 KÇx=n¢òdžÑY?Tqhb‡#¼X"É!{Ä^%§±°ù”P&ME†7 ©ä+×”ÒÓ “ùÕjtËò*9”¯=0ì±Áá1=¡‰7Ôpø­øÉ>À¦•ú T õ}H”œ¾|I». Þø ª»AÇ 8"¯¥­gf’©KÒš/I2uõ–Öø€_§ãÁòšÕšDúšØè„¸d~ZÏs­ùRLkí…ÖY2#:öØRÕš¸Â(¤ˆ¸DòîGò9…\)ÊPVÚe)¿õÊŽ  `zB“Pµ&’w?bÏ)dLQ†›/ÂãP,E5džü>–Jg7X÷OžÜ™ŸÖ‹²Ö|H§­•´C«ª‰Å³ª»Ö¤¯lA-;*t„ǧy6ÇèÍWYŽF5EB–ãÐþ™(¹p\ô¤¥¸ä›ëlïo5G` š¦±#ÈCe€‚êèxˆZ¯×6ÑÓ (WX£@zšeà2p¢„&  „&^X ‡ž'tÌá‡t–K~`n5Ée|,"iŠÂ©Kþ^’ï R™/á}(ö8UÞcä<—µ¾)ø°ŠC“ðyàüï~Í.Ë í©Ïù,¯­K‘mÔ—|A°ÖK'ˆÎ"ËÞ“¿$bU :Ä%ym—ON,!.1ÓQoË;ð$ƒ!™Ñ¶e’sSÑt.£QLUhb…¯ÕÿBØŒƒ¶+;óììù+—HžÈÄ%ãd96ÄUÜ á½þ5sCäK Å0àøt’ûPëï¥÷®Q¨eÖ’KRß>µ+×t´/‰ÎÐÄ8ÑIPô’}2´RÙ×Ä%Ðá‘!÷f‘%.IMqƒ¬pØšƒÚÐÄä:'$pÛšë<\Ày‚1l¿QŒ Ö¥]e\ÒâÒT-Í¡IAµ&-É.â†"¨–×¥]Í“bò‚ÖèD_ŽSÕ Öíëj#’6:É·Q  ²÷œ¡¡ ™dìÒžZ–JÓ\ŒŠkM˜£¯ßkYu':ˆu« /+boB~•œ@Š„/I6_ô¯¬NÒºîaišÆŽDŒùÙ½@—õzmCU : v„&  „&éÙžö`BPŠŸÐé{Þ{’ ’iy(êFÈø{ñмÚè M¶žl/„]È)Áez[/Ó©Ù¬I¾i¸üdµ©»A§ïm°Þë_óò—úÄð¢ŸÔ¯…u‹UNøŠˆ] %›2…›M)ä¦ %%ߎ-ܵE •ÜêM"‡N2Ç%22GÇ Â±ê㡾l(™zgJö5‘욺Œ®Hu‡&qÅ%ò£Ì¸I'•º§½bb×hy*ó¥,;­pì-• ÐúŽFí4‡&eÕš$=7„O9NrDØÃCSy &#¡\mašÌMg7Xãô/i£“Ü›äfk2R±´Þ…«±_‡¨6uך„1GŽx5%¥Ô¨¹KÐ:0·|¾d 75¡¼°W°µžË†n°õkšÆŽD l½^ÛPDmƒ¨¡ (¡ õ°¯­Ó‹Ð¤â't: ÎÿNH¸CµÌób=Ò%ˆ“Ö”/™2æKåS©Ó²yø¡j’ù’‰}1*ML™ˆÇ=F…‡HšŠØ©(9½p*’/Ém¤Ó;¿$yÅE佨 :) ¿~JÍõ+B¬NHӞ̘ÉpAÍëÝ4{®ö÷²ÿtüXHCgh¶õè!¬dñ“ë–N_\r¾ùô¶åoÊJ}¼_‡èýênÐqŽÈë_‹xlj*o‹½„’ŽK$G•¯K{Ñ­ý,F¸U‘ ¦ë¨Ó{„ÔšD,".É%KUd:yGdTSÁ Ö×$˽’ÝÔ$)«,«þ «ôª;4‰#.IKÙå²å]bÔäQ>2¾%G²Õq$”À ¹tÛ¸SˆÇêNÍ¡ µ& ©)³]Z‹ @Òé½@éìkœþ%mt’g#´vÓî¡’Ö|µdŽŒç—ü;oÐZ%‰tÖšx5%9ëNĺéy×èÔ)Š ¯uÐvÉ|i݇F¶¬Xý¹ðïeÓJ ·Aˆå ‰4McG"@MŠÒ1tÖëµ EÔ6耚´SÓˆ¹ „&Ô£ ³T[„&  „&  „&  „&  „&  „&  „&  „&  „&  „&  „&  „&  „&  „&  „&  „&  „&  „&  „&  „&  „&  „&  „&  „&  „&  „&  „&  „&  „&  „&  „&  „&  „&  „&  „&  „&  „&  „&  „&  „&  „&  „&  „&  „&  „&  „&  „&  „&  „&  „&  „&  „&  „&  „&  „&  „&  „&  „&  „&  „&  „&  {¹7Õ³ŠNiŒ1Á<£<ø÷?†/|ùÛíWíwfûUd©á_yë€Zš‡E‚’0¬ÙdD|` ×ø ûbͶÏWlc :@.U BÀÑ\ÿ×9=2Ãö.|ùÛù£“x¾šÃÿ®Ð[vÈ #›®aHZÞÚ†oüì{Ã[çF6>²7EhÐÁòD.諞ìô-«úÝࣳuf‹f—M+ôA«äkc§œ¾zušþTì”q»7’V¸¶ß7總®sÈÞ¿¥ Ch‚å ‹„d6ÆÛF'ûšlë$!YŽö¥UuY^õƓѠd6oËNíD.ïîÛ6‘Ñi•/õÞªEhä7o=Gqщµ þ-{èAhŒRömîøè¤|±À‚Ñ×p4‡?x7²+g†a÷¸³¿ -É«Õ:óµ æ‰·õW8d3Véû„¦ØáÌãV(¿7€M°0…DäÛ‹÷þz´ÑSÆÍÜ¡3_ãʼÈRãvoÁl\aüWÞh®½1î`Ûj)âhDƒ(¡ (¡ (¡ (HÐ ö´ú´RÄ«¡FŠÖgÛ‹öùÆ¿€{Sì²áu¾ó«p…‘¯úÒ ×Ù¹ñmû{¹ßnܱmÒš„kx,²‹Ç}ÜÙÂb)ߌз’ ¬Ñ¿×'s‡¯pzZƒtÜú’q3êâ*^ÅyßW³¤G\Òiôï5"ÔKŸÖ¦ÐdÈ1G @uFÔŸ¥N˳¡A'—ô5 JSEw ŠybqÉÀ´®ëMâõ%ô5€Z”‰ŽôWÀòlª5ñþì VÚéF€q(AÊ”©pïM @úº°ù*æxåU& LäÙŠéxLÁMr'Éß+}Zƒ_¹æ¡¿Ô.¬ï{ò3Ò¾¿ñÅí ‘´Æ}ψßË #ÜâQżi‡&Ä"P£ø{ô·_Í»¶!ë„kÆßkãnŸ÷Ø8Œ1t@A¶oС$ÓšPr8š¬×ë\Û`lhr×]w=ýôÓÛ.üä“OŽX h5=6¸šìïï^Å”e€>SbžÐ!4!4YÌe8}útîMpü?Z. ¿=€ÂéIEND®B`‚suite3270-4.1/Webpage/documentation-body.html000066400000000000000000000014451413735575200211070ustar00rootroot00000000000000

Online Documentation for x3270, c3270, wc3270, s3270, tcl3270 and pr3287

All of the documentation for x3270 is available online. Select a category on the left or below.

Release notes for release @VERSION@.

Manual pages for each program.

Frequently asked questions.

Miscellaneous documents -- build and install instructions, how to define keymaps, resource documentation, SSL set-up, HTTP and REST APIs, reference manuals, RFCs.

Links to other 3270 information.

suite3270-4.1/Webpage/documentation-bugs-body.html000066400000000000000000000011371413735575200220430ustar00rootroot00000000000000

Known Bugs in x3270, c3270, wc3270, s3270, tcl3270, pr3287 and wpr3287 @VERSION@

Bugs Fixed in the Current Patch Release

  • (none)

Bugs Fixed but not yet in a Patch Release

  • (none)

Outstanding Bugs

  • When wc3270 copies DBCS text to the Windows clipboard, it adds an extra space character between each pair of DBCS characters.
  • 'Flipped' mode (for right-to-left languages) is disabled.
If you discover any other problems in this software, please contact Paul Mattes. suite3270-4.1/Webpage/documentation-manpages-body.html000066400000000000000000000011341413735575200226730ustar00rootroot00000000000000

Manual Pages

x3270 manual page

c3270 manual page

wc3270 manual page

s3270 manual page

tcl3270 manual page

pr3287 manual page

x3270if manual page

Manual page for scripting features

Manual page for the ibm_hosts file

suite3270-4.1/Webpage/documentation-misc-body.html000066400000000000000000000045661413735575200220470ustar00rootroot00000000000000

Miscellaneous Documentation

Here are several miscellaneous x3270 documents.

Windows installer instructions.

How to build from source code on Unix.
How to build from source code on Windows.

Brackets - How to get the square bracket characters `[' and `]' right.

Charset - Documentation for the x3270 Character Generator character set.

How to create a custom keymap:
x3270 keymaps
c3270 keymaps
wc3270 keymaps

Resource references:
x3270 resources
c3270 resources
wc3270 resources
s3270 resources

Information about using secure connections (TLS/SSL).

Documentation for the x3270 HTTP server and REST APIs.

IBM Reference Manuals
3270 Data Stream Programmer's Reference GA23-0059
3174 Character Set Reference GA27-3831
IND$FILE Protocol SS-HCS12-1372-00

RFCs
RFC 1576, TN3270 Current Practices
RFC 1646, TN3270 Extensions for LUname and Printer Selection
RFC 2355, TN3270 Enhancements

suite3270-4.1/Webpage/documentation-other-body.html000066400000000000000000000014771413735575200222330ustar00rootroot00000000000000

Other x3270 Resources

h3270 is a tool that allows IBM host access from within a web browser. It is based on s3270.

Carey Evans maintains x3270 for Debian. He has a page that documents how to use x3270 to access AS/400 hosts.

Valerio Di Giampietro maintains an AS/400 and Linux page which uses s3270.

Don Russell developed the x3270 extensions for the RPQNAMES Query Reply. His webpage includes additional documentation and tools for this facility.

py3270, a Python interface to s3270 and x3270.

suite3270-4.1/Webpage/ibm_hosts.html000077700000000000000000000000001413735575200241002../x3270/html/ibm_hosts.htmlustar00rootroot00000000000000suite3270-4.1/Webpage/index-body.html000066400000000000000000000047371413735575200173540ustar00rootroot00000000000000x3270 is an IBM 3270 terminal emulator for the X Window System and Windows. It runs on most Unix-like operating systems -- e.g., Linux, Mac OS X, Solaris and Cygwin. It also runs natively on Windows.

x3270 runs over a TELNET connection, emulating either an IBM 3279 (color) or 3278 (monochrome). It supports:

  • The full TN3270E protocol
  • SSL/TLS (via the OpenSSL library) for encrypted sessions
  • APL2 characters
  • Non-English character sets, including Russian, Turkish, Hebrew and DBCS Chinese and Japanese
  • IND$FILE file transfer
  • NVT mode (emulating a color xterm)
  • A pop-up keypad for 3270-specific keys
  • A scrollbar
  • Printer session integration
  • Extensive debugging and scripting facilities
It does not yet support graphics. x3270 is distributed as source code, and can be used for free.

x3270 is available in several different forms:

  • x3270 is for use on an X graphics display
  • wx3270 is a graphical version for use on Miscosoft Windows
  • c3270 is a curses-based version for use on a dumb terminal (e.g., a serial terminal or a Linux console)
  • wc3270 is the Windows console version of c3270
  • s3270 is a displayless version for writing screen-scraping scripts
  • ws3270 is the native Windows version of s3270
  • tcl3270 is similar to s3270, but integrated with Tcl
  • pr3287 is for printer emulation
  • wpr3287 is the native Windows version of pr3287
Also available is x026, an IBM 026 Keypunch emulator.

Comments and questions about x3270 should be directed to Paul Mattes.

News

2020-07-26 x3270 4.0ga10 and wx3270 1.0alpha1 released.
2020-03-17 The x3270 Wiki is launched.
2020-03-16 3.6ga11 released.
suite3270-4.1/Webpage/japanese-thumb.png000066400000000000000000000016441413735575200200270ustar00rootroot00000000000000‰PNG  IHDR‰d=œ„ pHYsÃÃÇo¨dVIDATxœí?²« ÆÙcöð&kH‘=љŠy3±±¸•«HÏ+Ì#\8òGQ ~¿ÉÜA@8žƒ(3^Æ@Í(¥tú§PJ™iÆ{½^·Ûí~¿_¯×qÇqœu8çn¦Y4·¬ 8çÓ4MÓô‘1¥Ôœù ]v¹\†a†a>â˜õ0ƒuç\J)¥œµ‘RÎBÌ )å[”çóÙ÷}ß÷Bˆ¿à8çB!„N!”Rfš1Æþ€*ykÓ ®Îº®ƒ6Å õЉ.¨>!©?Îi!=cic’S²hé¢üs” Y1Fq¿©—·6äÄ|x>Ëÿ»H1–ÑO¤ÓÍ7NsZýÇÌÜ£ëd<~sKõáœðŸ›RïÃÞÚ¬¨¹ÂчjóPïybŠóë 3Qزoœ¬Ü"‹=ú4&+,bª™ Ï)Ç>¿6fÚª°eê[R:§6,tÃ^7›Ñ&Xä÷f|³,bí°Uý—t´+Œ{Š]Xç¸ñ %&87ßœ…µiÑæ5´x-Ú ¾‹Ç`‹6Ÿhئcx/öã©^  é nêÚ6‚iäPÚuw»–P޳ÄM‹×٢͔qpÁÌP;Y>2Óîžt‹6ƒï¢Å1Ø¢ÍgÚ€Ò´8[´y g¹NŽ#æûdë£dþO™I_zŒoóAý§#·Mý·žC3s¿ÃX?’nõÔ±rÈþ¬~‘ýހ͈4Ìû³µ°ªY‰¥LOžuK°ß`f|éê~#Ks’ª ùÓEpñšE› ë–£GceâNö-ÅÍÞýš½“ýÖ‚é üjøÙÚè4Ð<–çÛm2ÊÕtËІÄrV®AL6B o†´11èêòn‡ÿÛ@pÎ(„RÊ<üi°®kÙl¹IEND®B`‚suite3270-4.1/Webpage/japanese.png000066400000000000000000000251641413735575200167150ustar00rootroot00000000000000‰PNG  IHDR>¢h[^ IDATxœíÝM¯%EýÀñ:÷ÎdxPƒ Â&QƒcV ‡…l4ènF ¯€×`ff† hbÂ+`n\Ì,\™,@#ÎhbÀ…,„¨¼—¹ç¿h(ëÖSÿª«º«ëô÷“ÉäÜ>ÕÕuºûô¯ëáT+@SVJ©ÍfS»€¹xöÙg/\¸P»~Ï>ûìÅ‹uܼy³nióñ—¿ü¥vb> ]]Åë«_ýªRê£>:<<Œ¬sçwîìì(¥þüç?_B@IUš3gÎìííšÞŒ¦GB—RêùçŸî¹çÞÿýîÏ{ï½÷Þ{ïýýïofñ£ýèÉ'Ÿüîw¿KK#l±k×® Sž9sf‚ôÚ‘ÐõñÇ?÷Üs»»»çÎSJíììÜqÇ_ÿú×Oœ8qpp°»»ûꫯîíí½ð ÷ÜsÏŸþô'áV-êíôÚÛÛ3#ÐØé;GB×íÛ·ßÿýsçÎ}å+_ÑËwvvnß¾½»»{xx¸Z­žxâ‰+W®(ßøŽ|P)õÇ?þÑZh-ñzá…º?ûÙÏ" õ’ÐrsuÉ&Ìw#ëÊé|r2Œ¬k½%Üo½Ù€×{ï½7«ôÊm0Lâ]k³Ù¬V«?üáÝŸßøÆ7$ù_ºté§?ýi÷ú…^è^{ê%]‚.goJÉ&$ŸhON†Þu/]ºd¾%ßoÝŠ™E°@]]%)ýÉ“'½o½ûüOžHdoèœ ]’ìïï—Jï}kÿPJøÏþsÿý÷›½Vò¡Öåòé§Ÿî¢ÔÓO?m¾õôÓO+¥®\¹Ò½è¼øâ‹V2ïBaèòææ®:‡PÜ”ÂÌÝôz‰YrB€É„âMoz7M$«·Þzëÿþïÿô·Þz+²‰OCW÷C®Õjµ»»{ãÆï}ï{ûûû_þò—÷»ßu vvv¾ð…/|ðÁ7oÞ iæÿÖþK/½ô“ŸüD)uõêÕî…^b–§[Ø[CrÿÜl6©¹Y™ôVe¬Ò½Nª`Y¯­ânÎŒ‘¡dÔº7M­ëá‡6~ç;ßÑu'—Ý`ø‹_üâøÖ·¾ZásŸûÜ©S§^}õÕ'žxÂ{ìbÕ믿®7¯Ž^._~ùåsçÎuKÎ;÷ÒK/u?#F +w•ÐZ‘åñíº »HR ãŠ7C3™~W9ŸÐ`TºôÛßþÖ]IoE£ÐZûûû<òˆ¹‰îχ~ØÜ¢ÉÓ×uß}÷=ú裱ϡÔÝwß½¿¿º¾öÚkú­×^{í¡‡Š_=7›ÍÙ³g_~ùåîϳgÏšAB';{öl(‡Ðê–PnV¶ÞÜ$ _~ùå.ÛH‰çc}ö³gÏþò—¿t‹ªÓÈ‹ê® Ç'½upppýúõÇ{ìúõë]ëO×§3Ç¿öÚkJ©‡zèõ×_óÍ7?ùä¥Ô±cÇî¼óÎÿûß]Ò»ï¾ûààà½÷Þ»ï¾ûî¹çžGy„Ù4`ûüêW¿Z¯×7oÞ¼víÚ… ~ó›ßDvɺi/ÆKßÍaxñâÅÿÍß݉¿ñÆ·oß>uêÔáááÎÎÎ'Ÿ|òÑG}éK_:~ü¸RêÃ?¼ï¾ûÞyç7ß|óÝwß}ðÁ¹€í–4Iîé;GB×Ûo¿½··wìØ±Ífsûöm¥Ôjµ:~ü¸nüðß|òÉG}ôøüç?ÿücÀ&­Ï;MúΑÐõÃþðûßÿ~|ýÄE¯ l¯3gÎXóµ×Moú4týóŸÿ¼víÚ¯ýëa¹¶ÉÅ‹kÁc½^w/Ž™K?þøã… ÇwÜ¡_ïT,sýøÇ?ž¾x½òÊ+Öj]€Æºñ4–æ±Ç«]Ûõë×CoºJECÅôâ¡”C@c¨uÀ–³j0³ª] Cè€mÖ==$¾$´b©2t›‹g˜P'm0|,@¿5ea°Ê,Iì¾€Éè(e^»º§aIVïÖÍÿßÌP/·^$©Pëj´®ª¹úì$F?2€í`^¯’®]ºj‘ù¿•¡÷E’ÊÃ4¼Õ‘¤ÊÍ4̸¥ŽV~½Gë…[óÖɬ<Ãý`QÊÖº®G%lv# u´Î‡Y+WN3“©À§³rht?˜?ùõ¤x­«” †ú“lS3ZþgñæÐųmÚQF :„x;Ÿ"Æ»ò˜E¶• µ.IõV2³¾µð]@H8Vb2oÊg:8~†;º =(©gÀ2u ïÿÃrË,·ÇÄz=¬nv}]¦ùT8¬'«CKEñà“ÆÝ D„âÖàËHd,»äER†IfWëêvô ûÃâÓ÷5æ.½yË#ÿt³Ýf«l­KEDz'½ÐW°Hš$“†.÷úë‰7ÛËt¼`ƒ?]èÝÙî³UvŒŸnpÊ|aææM“jvµ.À0‘0ÙÝ•ù¢Ty´OC×ã?¾^¯s2ÔUvpÀx ?ù9SJ­V«[·n]¼x±D‘‡f=s°¨kÑŽRj³ÙÔ.Rôu”jjÂ9B ±öÆYÿ$¡ ÐOƒá+¯¼2}9¢ÖhÌ‘Z×åË—k•€sÞ j]€Æº!tCèB.ùDb™SŽéÕ…ùtÉ"‰Ý·˜Í2ÙÁ’º0Üf³Ùl6«Õª`Ê"¥’/ße-éMJV]©R­V+ág”§DónäåÌÕ•RiA™Û;½úßÂÓ«#iN¯ü)­4eyó´¡R+çOwO¯Ä)ÕÑd[CŠ& Zîjm1´D/﮹îºîµX§7W´rÖÉ"BrW4Sš›‹l»†±>o‘”K¹*vo™U‰RWÑÞ­Ç7d­®¢ŸÔ»®™R¼õÄ9 CKž²D¼µyó,½!ái¢“m¶4b)ñ¥9)¥$+3Tx#йÐLf­b^Ö­×ʹè÷*—ð n8’¿™²VTÐe°‚Ç}«x¯Šúµ~OVVdë:AhïêÞÊL|‹ÖrÙÇÚ`hU­„)ç]ßÒ„AϬcmq ²tWdaܦL¥cŒÉZbþé}Ëj$TFc ~ú\½i”ìÂm•*íÌdµtoaÊ…ÒWEóJ%¿¨ õæÖ»õø…tÔÂ÷™væø1î¼yޱ¡Å«RÙ23T‚ªŒ[ñ²^›«G²ŠG®‡MSáèm6¯ÕŽêWÜÐ8 ‡µ‚ÞB3Ú…ÒrË]]°õV›åöc)£‚µrRªT¹*öléN©H/”Õ¾×[˜x Y¿1£¦¤´‘úS|ÏôUðô„-¢I)ÑO_Ó%—Yóʾ#c?$6Êû ½)ÍÏ)É$©Hfž#lÈ:ø^®f<ÒLoN7ÄE¶î fnVòM›=R¡‡íx ÔŸ´ìÞ–ç6ñQnOÒ8‹Èê’L„Ã4tø1GIÈÆøùWwCf(oʤ­o6›[·n™Bää·ó97þÖº¡Š‘Ug²^»5*o•+TÎPbož>cÜH•×R­R0Už~wãû‡EÑq"~Û®¯ŒIw÷î§™WáÞÚ››¾`‘B•N`¸Ì>—:öê׺¬ÏÄW ^¡j‡»x­si)$ýOšÛg–¿-7Oo‹ßiçwʽEJ/jZèŠ\V¼ŒÓ!¡°$¹¶ª¾K­7“HýÃLožÏ™V>n1´…Q¯ê츗òÔ8”·â=sñüÍŽ:7z’Ö`iÓèRëoŽnsÓ-W¡V8yÊ1DZØäf69š–:‡­½$IÙ+ì#9oŽŽ‚[+çzä3\–=:yPí0·¯KÞ–9s«ù)‡ÙÜ%fÈqÊy£ Y†yÖB’Bµ¾›œøãÌç\ZºÌ!½yÈ?g4ãQ#Ž04ïj1[újh¯HÅZ’2¿#”Ô5jIL:–Xµ*Ö•zð¶B!-iu—uõzíî ïÎ1÷’»Ç2‹7ÏsizG.x ¨HVñ¦‰¬(v!\=”LöIëÏaH{"âäý%ñ…’xf¶R¦F—Þôf}1”2³*iåãÍjq¡ÛhüЭ´NñJªecZÞŠTêZÂw{ƒÜ°Â$¥_}60$'IˆOØnÓÖºBm ¡4nâ?7—Œ1ä0­É ­Ž8å ':›Xb^¹i'ëJÇ=.Le’GMš3\¹º1-æ‹ñœîû‰\¼¨®R+¥VtÙÀtF®u…jN½kY/„[./ecT¶VGÿŒf’ZWªÞzXjÝÈÊ\RÌÕ˜µ.y))½r:ÌBá-”§ðÇz€Y-tE&¶¸ƒ2„Á,ÒyÃyNŒ5F±Tô¢‹ &7Zè EùŠÂYL¼AhðÏÈ{çb±˜ c0‰ñûºäSré…ºâucëÖºá<Ù °“̦¡_Äk3]a­K^“VçÌÕ„ƒãÝ)„u•3†µ¶ÂÈ# uDѱÊ\b½PN¢wâ¨ÞgÆ îfKµŠþ Çø# 5ɬNƒ‡WHÊ0 z˜ŸÑGÚ@ê‹=O…H <4*6+õ¹Y½ñf QõŸ×Õ ]M’bËõhiä§Mjæl.¡+é èƒ$ˆ-#?m¬Óƒ³hÚ¸¡ËlöQ¾ëEwé1Ó{ÿWSÕ¨J=£9Æ8m¬'Ü'µFJ ¬8m€ MWë uEx¯)Š–(¥Æ ªß` ×=}Ûz›÷ÑØ‘p{¹ãæyoÀlº0?:ö¸ñ£súhÛ ™ÌZEÇëyÙ:ÿH@r±)°"¶Ó!taÞ¼õ*Eª/™")Ý*a ˜BfÆ Ñ0ÜŠ—õú´=(ÃNãm´êd’¸E`¦Eèœèha oŒ‘tq¹É")­·„q Àä]˜“PX’·ìÅW1«tÞ”¡vHsBèBË䑯¸a-÷¦÷Ž %&ÎS!t¡n%)ÒƒeÒcõZÂañ*ÐÒ`]hA|„¡ŠÆ›xÛ£;¾#åÅ0&B§ã⡆Æ"ÐBÚªfYu¦œF?š¹"t¡Mñ’pŽ OôusÅô»˜áÈøøZÂ4¡µ„?P¡ ÐB 1„.@c]€Æº!t“ø».ëw-Þ)sXÈB²…,¶Pn³Ùܺuk½^§­ÀTÖëµU4Cè4†Ðh ¡ ÐB 1s ]z ¤ðÑ]²-~…äiôòmZÙòOpÖÕÚáutë§ÙôFú¾o©Ÿ×Õ= ·w¹÷aƒ‘' LFœÐç•ç`-ÑÎ/ÛÄÌ"[Æ.ð¬KÊÐä~¨Q?Qü9ÁΔo=éjíÊÿ¾‡2¬žÉ8Ûj0ty¯¼î’Ð.r RÆ—Áús‘»V(ÆGnÝÖñ¶ùÂ#¹ÍuSZÇ7Ó£ž·E¾¤¥¾é&÷Ò:è–z6¡ËºÈ†¢Ž™Þû¿òݵõîwov››à¦Ãü\æ9­—[ ­2›ùxyk*î'g2ù‘òþö>_ñ³ÎºQ°¶ân½wIªÈì=™‹\é*n]Îûuðîüâßù÷}[¹•ËAr6¡Ëú$n v_{³Šï—Ð3eô’,„y£Šä®v>­¦ÅÃXÁ³N¾EUh‰œ†Ým ø ´²õRo›ÆÛôx*®H½3²zJžó]zHnÍâ¯çø{Åw‚ü «›¡ häê9å ²òè"[õ¬³öž÷;_¶ÖåmJ°z‹[ŸRÁ˷ΰÔÇï&ÀmH(’–^æ„.]YŽ÷X/Ìuã&«<ÍY¤aþQß­è„:QäF:넽&Þ4Âjô½7"-º‘šqoVÓ_s¬o‡°ýÖ[ÎHɺn©¬J¾ Q3]¡ DïÕÁý3§Ùp&z«\n‚Ìó H3Ñtß’n}ÊÙúHg]o…µ7çÁŸH¸Ñ‘Ž×¨[Å•±¹7v½Mæ74Ôí®UV¼¨Âr†nj­”§Wž IªÞR¥˜AèJÙèDî’†åzKòå,kú-êíj–ØÐÂHkI‘Cu´z:;ª»õºþj–ªufzE>”¼œn e˜iÐ~›qèrol#—S¤e,ԇ쭓×p’t#—¹‰¿?|cõWQÿi½(U€Rg{í–43bbcÔä †cqâj@Ãæ¥ºfºzÃ{êeË[·5ßr›¶ç·Ü² +I9%±îã܆”ñö•ÛF)g¦Ì³Îmý“²H­ IÜ/Q~µ)iÝñ¾2V»ˆk&UC•µfº"ôigÞŒ{/1©7Åïâ…’¡¼Î^°©PïçRA]^›™É7MrÖÅ»â9—Rö>¦­­K ;S O?MÜ*’¾lC¨umS¡+W¼QgØíF•¯VfÜ*’­œLÃÞ*¸JÇj|ÏÏP¸9ÉYR°ÖU7<Œ´õ²¡}ÀiÜDÜ äM nsÂ0¡{¾tM…®Þ»ƒFUoAž¾u4ÇÄ唟uñ«•<‡aWêP-°7·"aÔ­KÚfÇ3F=¦¬ ê‘Ë\0«ÍfsëÖ­õz],GŠZ¯×:TÍé¡'¤‡®ÐsG&‘ºn¿Ä¶–0‰”Ðeý\ÀüYh+=ü@Aܱ•”èë"naÌ_¹˜Ã4€A"?0²¦~ו©Ô¯ê€§PÉ’BØ 4CÑÑT’ºUh ÓêIl0ôNžh=<‰†%(;£6€é}]ò'nÛ3¨„¾.@c]€ÆºIïëŠ ÓP´þF—ºô*÷…•€q”˜9X&¾@%Ù}]Ô±°Lü$¨§è0 Z ±ÌÔ³¤éw™9eq •” ]ó¯rͼx™B †ó[@qtt•”˜9ž¸…b˜POöÌñî˜0†%`æx žì™ãùêb±8ùJ˜ÃÐB 1„.@c²gŽwGXÑSöÌñV b¬0`dEgŽg¬0…5 ’r}]Ä-, ?Iê)7”âkŒ%aæx žBÓï61)3Ç£,N! ’%=ô„ l…ìC ±Xœü@%%fŽˆþ] žì™ã­QòÄ3,3ÇõdÏï],g>P sCè4†ÐhLz躱 Žªb´`|‰¡«Rš{€ñš9žQÂX n×€Jèëá'É@=%BU.,3Çõ,iú]fŽGYœB@%Ù¡«¡*W+åDj0Ô#æiúÇrp¶•dÏß•ïþ)j6X îÕ€zk]]ôj¨‘ ÷j@=%fŽ—¼lNx ~×h ¡ ÐB 1é}]Ý*ÝÊ¢0¦ÄÐ¥ÇZSñ0•B3Ç ÄW¨¤Ä†æ˜Bÿ$™s˜\‰Ðe~uù&c!º†Îv †ìÐÕÐW—™ãQ§PÉ’zÂ…¶Böïºè©Æbqò•dÏ,3Çõ$6êè%O<ÃB0L¨§ÄÌñ|{±Lœù@%Ìah ¡ ÐB 1Ù3Ç› Ýå”VbæxÆY&”=s•`[$†.w40ÓÉc±8ÛJC£?Iêa˜03Çõ”˜~·Ì²8…€J–º¸ÐÀV ÁŠŽ. ’ìÐÕ;<°•¦Ô“Ø`hF)eôT[ÓÉ[™ãzÒz’´Øbœö@%ôuCè4†ÐhL¡™ãC (­ÄÌñ¡…Œ {æøÐB`ëqÇTRbæxâÝMr~ /IDATˆŸ$õ0L„™ãz–4ý.3Ç£,N! ’%…..4°h0†¢£ ¨„Ð Â0  ž3Ç{Û™ãzJÌÏ·ËÄ™TBƒ! 1„.@c]€Æ ú]—Õ;m²¢õ0²ôÐevÃÑ 0¦3ÇËĺ€J²gŽ'’a™øI2POÑaÔɰÌÔ³¤éw™9eq •” ]ó¯rͼx™B †ó[@qtt•”]Ä-,Ã4€z²gŽw¿À„1,3ÇõdÏÏW‹ÅÉT†€Æº!t“=s¼;ŠÀ˜²gŽ·c…#+:s´Øzœù@%4Cè4†ÐhÌ ÐUÅh+ÀøÒCq PU¡™ã%Œâv ¨¤ÜÌñÀ¢ð“d žÃ4¨ra˜9¨gIÓï2s<Êâ*É] U¹Z)' ªPƒa÷OÑô%ál*É®u™U™†j`@&}¯Æ9L.}p¼þÆrˉ%c˜PO‰™ã…ï[†¨„9 )ºÚmE4KÞî§0y‡Ïx?ZïçÝŽ`[ý]Wdš(-óÙ²Þkèdí6½Wðü’ìöïòI:Þ_¿ñD`sR.t §7̼7/Ç:[ëÏÁÌ¢†®à¡ô³¢ ¦_t±G){¹~m¦4óш^f£Pƒ¡|:ù1®}½Õ‹Þñû×e>q­NÝãŸH*wyï*º™qXÓ"Œ¯\­+rY´îÖÝ”4Ä ™U¦+nù½ŸËýŒ‘*r("À´J„.Éí¼M/3Bô6Æó·šÅÜ…Vâ‘â™ÙÊ×»•Þ2„*pÞ¦Bg<}h LküéwÍÖ¼RR󚛓‰yɶ:„z7á {ÕÅ£‹Õ­åíè">˜±©fŽ·X‘Ë¢¼ŽÒ›‰û§0Ï‚aXgÕÅ’Áʬ½¹º®;+`«ð}@‘ƒåóÂB²…îB¹ÍfsëÖ­õz¶š2êê·–›C¼ÿâ9D O`þoUÂBŸ¨`ÇäS»é{óì]â.7wB©¬×kªJÔºâ½÷’ÛöYµM™·ÓÌ»‹2k“:ù¦o|6´2ÞL:«ƒ`‘Êͦ^–²—¿Hû˜N ߢŽ½ÙÆs•äéî«ÓÆ@7®f¹m§nåf P_W¤âå€ÌQæë1:fÌŠda¶LZÛ-[€Þ|¬º¦ùÂ\‘*€(ú».ï»õ"+IËgî6z;À¼Êx jh‹’åBÞ†îô¨ïvs`~ŠŽ0ôF¯¶Dºy’šëîáÖCÖ;:£éà `»”ßè®lí°• ¯óµò‰,Ïë4†Ðh ¡ ÐB 1„.@c]€Æº!tCè4†Ðh ¡ ÐB 1„.@c††®ZÌåA½rÂ}å} ×Ü̹lÇ%z"y²÷ð( ó¾òRÅ·ë}lU|ao¶¶I“Éû/“Lä^¾7ï×@—a@+„wawŽÊŸœš )Ù`V»e<ܪ£GS¿ð#ë»­_wËõ†zofC)ãŸ%Tì1Ä·;=ïeq²MsÜUJµvÂI”èër¯Ö[ƒ³½!k WµO,ùÖ埨ÈvCWï×5rCiBé§<îò”Ÿ!’²ÍájÈq—Ì Ïs8p[*=tÉï>’Òçè½Kj1(~ñÐ=P¤òÒhã†ü¸ç ꛵ó ž{¡<½{¬bÅ.Õl»µ¹9ïÃö%†.·q)$ÒUü2Ñ{ƒ“ÔRQF¶È3t„¡æí³õ¦)‚ó#•Ûj¼ím6,Ò3ìB¶}ǽ‰ž›Çó“1ÂP²uÅ Nn‚Ð’¤ûÈŠ‘”KÖÊ~à¸c–x^ 1N­‹ÎFÀÜ­¸;¡‹z=`Þ}]Þº—|H(ñ0úºã­J0ÂPÿx‹_‰˜F|F%ï÷Uøç¤½¿ô÷þV!)Ï-3Ææifγ/t…FH71/ €íãÞÈ»óûDBdõÔ<·L©_½waT´Áðtx*¿È[0’øõ±÷º$\=)Ï-3Æ‘ç)¾!Ú×µÅwf+sZ¦œ«WÍ64)r—MíÈè±8É+2¤OO¬¼3@œ>ïÂ륻ŽãÈ9—9ç”Òã/^Tb÷SJ…sãîû¾m[YxTL±ûOÜA:nWü>T³ð£/NÒ¾rÄsË¢ú¨UšýÒü¿ÎfàF)ö@~8ÒÝý²9  —k6{57ð½{æ<ÐȆyhâºü:›½šûšó@ àgUÒM¼ãòËÎÀÿ<4̃$ùÉŽÿeîÈûíÐß Ü›DäV;Õ¾ êô ò{Çð«7ë9z‚þºy •õ.iãVaøΣš¥(¿±\°€FÒÑ/›#qiÊ”{ˆ’ä«UWp=õ<¹ÌY“A/÷Œzžm¢ü.ÁUây®¿€¹ä=,Ã=_ÀàêMÿüóO?ýTo_»vMoMŠÎ Ìé`Ê 3W«Á=(¥Ž=ú÷ß›Dç£Ã &˜Íûï¿o´ãÇëÄo¿ýV)µ··çdÖ¿¦óñ“O>1)æøÁD{G“ÁþÖÏi'Ú{™M°„f[o89ƒ»ÛÙ‚… ÏfÿèÑ£ZŒýý}çcP˜è¨ì½÷Þ3Ú|÷ÝwJ©®ë~ÿýw?çÚÚÚõë××ÖÖ”R7nÜX[[3ynܸ¡38{9Ù vJlÛNô£Sô¶)Uìh&ƒS~ç[“xýúõXaÒ<|øðå—_VJ½ôÒK&ýáǺ2ù¤†Ë<8qâ„RêÝwß=qâăbeZ]]Õ¬®®ÚyVWWõ‰é Íææ¦“-˜8S1SÝ`¢QoÄÊ`¾ÝÜÜì'ŒRjooïµ×^3‰{{{1U”æÉ“'±¿ýö›–'‘ÇËcÒ·¶¶®\¹Ìæ$Úƒù¯\¹¢”ÚÜÜÔ†ÍÍMG½áD†ØÚÚŠíž>ÇÁö*ÖˆiR5æ7Þèºîûï¿×_ýõ_ý5x”íííË—/+¥¶¶¶ô†I±¯cWœ“žÓ”)¥._¾l‚jü¸vžt¥´‹½½½®pùèšqêÔ);ñÍ7ß¼{÷nl—pçxx¨U9wîܹsçLî~øÁϹ½½}éÒ%½}éÒ%s>vOèl$Žàç îe'š NºI4éÎaý½ÒÅÞÞÞŽ‚_<›ýý}£Ê;wîܹ£·O:5_çòäÉ®ëΞ=«Óïß¿òäIõìÎæìÙ³ÎQ½‹}eeå‹/¾ÐWVVL“¨ÓcGˆí ªó¯¬¬Äv4ü½ìœÎîÎ1WVV¾üòË`aÒìîîž>}zwwW×ç£Ï}†÷ïß7I?þøc×u¿üò‹O'êm竱ðÕW_}üñDZâ±Ö××=ztûöí«W¯þôÓO‰ÌOž<ÑÙô\ÙÆÆÆÆÆ†[cnݺÕuݽ{÷œëâwÞQÏjÌ[o½uïÞ½§S¯¿þú£>òkv…Ð;;;=ör…éºî矖øÌ™3¦ÒܺuëÌ™3}ŠÙ‚o¾ùæÃ?ôOªŽ0ùó˜6®0wïÞM×EÔ9+>øà¿´ÁDY–——9ã|ž óï¿ÿö–ÄØØØè±—~|©Œ0CŽE¤0ª(G¥Ôîînݧœ>}ÚþøB«r4  ……€âŽÊlœqBô˜pÑâI £”züø±ta¢,---l\6e PP( (  …eÆp9?ÊtÆfè¹´´$8 ÍŒk¥BçÄý=è/Œ ýô~QÒ£õBqíKAð²˜×þ8ðÄË6e²ueD ?ñ²Â´R¥íÕ r9jÊüv\¼e·P÷–ˆ«S†Ç•éc)%ÈŒ+ÞæÄ•êÛž6eo¿ývïC`2öîí¥Ô‘#GF}>­T‚¾¨”:<<¸Z@ SP½1ùÉ|ûV¦Y3Wƒ+r\ÁМ’…€Ba@¡0 PP( (”÷1%ž¦ä°hq}R´zWfÑâaS ½Ëíã¡w"®›2P( (  ……€Rû¬DÝ•=ÄsÅUrκâÞåäÄ-úØ¿‚gºFS†33Xhï²jj¼[ZZï51Yï²¹ Jto3½Ë ¤‰¥ª.3ãº,x—ËaÚ“ñ¶*M(þ~ŒF!MÜŽ‚AM,‚âVqËz—s¾*W\z—‰R  ……€Ba@¡0 Ð» ׇÞåöqƒ°)…ÞåöqƒÐ» ׇM(  ……€Ba@)ë]ž€‡¸UܲÞeÁuˆçŠÛjÝå‘y—ÕøW¨¬ûPjx—Å«Ë̸…|esÅÈ4×].ÝÇä¤@¯í¯Ø»ô…}Œ$Âë.Oz—g¤Ä‡° qÙ”Ba@¡0 PP( (  ½Ëq}è]n7›2Pè]n7½Ëq}Ø”Ba@¡0 PP( (”¹-ç/·ìûc†8fFwàÃÿ>Ïüs–=öé:óߨwÜ~á†Änl+Ò”%®YA¯â\q‹R"JaZ9ü`¡=èÓ”!/·Œ·weÔÇ$RJ0º¸Cš8—K1Ž—LŸ¿ óá§YÄ»lš`½aÇêt&n°$âªçÐ=âÎ-Ì\ïˆd¦—‹;\‰VqÙÇ€Ba@¡0 PP( (  ½Ëq}è]n7›2Pßó‡ò·Q…ä!n›2P( ( ʤ„õÿÄ;LGçùîØ™ˆ0¾CµUI¤˜‚0AÆ®Íè…I0jm@ïüó ®Ú:ëÚèkÌT¡0 PP( (  ……€2úLÃn*mXc@¡0 PP( ( ÿ¨gìE@ÐY6e pÝåöqƒpÝeˆ¸>lÊ@¡0 PP( (ˆ÷13ɹýûd³°0Õ–#ƒýÝ¥~ɦŒó(‘ßALªb3ü×iʪ ÐÐ lÓ„™÷ˆÒ¿ZÕ337[E­C¨+6½Ÿ©ÝÇ ](½* ÚªÀ´éýûô1Îÿ(4‘Ê)C¹Û©œ5ãó3'iÊÚÖ›à_‡4¯7±>á0p´ÁZw¹š6‰@ ª7%£Z·ivF­ŠšÞpYƒp} dšÂL  ……€Âu—!âúpÝåöqƒ°)…ÞåöqƒÐ» ׇM( #–¯l‘±—–zx*æ+k>¡Û°·ÿ*hÚ_— çž¹!‚„€¯Ìþ+e‰" }ââmÆ aœÒ,ˆ6KϰÅÏþ¯‘Ék£ÏZ£Ï´PÿÚS»4Î4mm|#N¡FŸQ™£Š¿­µi>N+DK°O‰Y„ì‚NX•:ƒ™áò”þ¸e&¶6å¢ ½Átš²ÁåéS€Db‰ß®ÎùŽÒ‰™T¼<æVºÄ‹ƒä[Ë­Z³`s_Hïbex?¦Î4³‰Ã©v2ïÇ·+cêMÑ~¥£\#Æ”Æè| ……€Ba@¡w"®½ËíãaS ½Ëíã¡w"®›2P( (  ……€ÒÿyLl”é?ì“}ü—WÜ‘WÐ7;èA™oõ3v…¢V’™qc–ÄÒqƒWF?„W*wÌpu•·zã wø‰—ícƾhX?D.ÇAMY+Cl~ÜBÝ[â˜RM…Lc¨Ó’dÆoHsâJõmÂ.™VvY?nî­ÜùNó>¦•ûPPž²¾2ûúU 0™/ø"Ja‚ïù9ÛuL‘8qCO³)›  ……€Ba@¡0 Ð» ׇÞåöqƒ°)Ë»<„Vþã!ŒÃ»<„Vþã!лŸ±¬]>oÙ*œTñ¦ Y=µ}Ì$µ)}R•:ÿ‰iSát8*E^˜‰UŽ|dOœ5  ……€ê]ÂËìƒè]ÂË„M(ô.·„ÞeDè]%  ……€Ba@¡0 PPÄìK¾£§þª~s!{O*î••&¸2xåå©{Pb5s)ä 3×$V^­2)fEöôqÊ‘(¡² ü([ìz‚«UNJp}þrEÒ±Hÿ„Þ.TÚªÿNž¾¯ê¬šœþ Å·ŽéW^˜Äµ“¾úÄK’ƒ£Mb©Øà_^”CF˜Ä• @Œ6~ ý&f“ïÅjLzYâÌ”š~ΪÉÁòd¶á &(  ……€Ba@¡0 Ð» ½Ë °)…Þå–лŒ½Ë£„€"fư?Ž¢1/sÁç1ø —¹Ô3ÿ ß¥‡¥&Pe.køs$=<(RÅ]™k&gyØæÞ™ÖÌ,ªà#ó²f sn¶NŸÑ¤)s‚¦ËP¹¨U›2§MhrWèìqdy¿¨¥«{¦Ìà´i­š¯ÄSó£ÏÜÅO”=ªÞe´Ž™zÂP•¹à” (”E|£,g4ÕÛ<&Õ•¶¼ÁlBæ\YsOsUû’©¶­X~1fÖ¡Ä^Τ_nçRÍt>ÊâßæÔ¡™…ד‰#ÌKÙ¦Ì7b›¯ÊÅIpòÑùÊ'‘gdwþÊÓ¡§ ^Ñ9Kk&~jÅû£Mb’ª&éb8M«ùÅ3÷²ÓAû˜àœXâR­©PNé—’NŸ Þ`‚ä]–ŠEï2"c,s6e Ð»Üz—¡wy”PP( (  ……€Ba@‘&ø¾‹3Uª±á‹8=~“éA©lÁb‚é{G‚)RþrHÛ\ìÇáÁ™ž¯Ïpwƒ¼0N[á{G‚nÁw±òËé×!û*qœÿ1sLæËfó"/L¿§ÅømKŒ„e@AÕ|Ä+e°æ Moved This page has moved.
Your browser should automatically take you to http://x3270.bgp.nu/documentation-faq.html in 15 seconds. suite3270-4.1/Webpage/mkpages.bash000077500000000000000000000075541413735575200167150ustar00rootroot00000000000000#!/usr/bin/env bash # Create x3270 webpages, using a common template. . ./version.txt if [ "X$1" = "X-g" ] then geo_sub="http://x3270.bgp.nu/" shift else geo_sub="" fi unset w3 if [ "X$1" = "X-w" ] then w3=1 shift fi # hard wire it now w3=1 case "$1" in index) title=x3270 ;; screenshots) title="x3270 -- Screenshots" ;; documentation) title="x3270 -- Documentation" ;; documentation-relnotes) title="x3270 -- Release Notes" ;; documentation-bugs) title="x3270 -- Known Bugs" ;; documentation-manpages) title="x3270 -- Manual Pages" ;; documentation-faq) title="x3270 -- Frequently Asked Questions" ;; documentation-misc) title="x3270 -- Miscellaneous Documentation" ;; documentation-other) title="x3270 -- Other 3270 Resources" ;; documentation-ssl) title="x3270 -- Secure Connections Using SSL" ;; license) title="x3270 -- License" ;; download) title="x3270 -- Download" ;; credits) title="x3270 -- Credits" ;; x026) title="x026" ;; *) echo >&2 "Unknown page name." exit 1 ;; esac html="$1" if [ ! -f ${html}-body.html ] then echo >&2 "No body file found." exit 1 fi if [ $# -gt 1 ] then outfile=$2 else outfile=${html}.html fi (cat < $title
x3270 x3270
EOF case "$html" in documentation*) cat <

Note: This page is no longer being maintained for x3270 4.0 and later. Please refer to the the x3270 Wiki for up-to-date documentation.


EOF ;; esac sed "s/CYEAR/$cyear/g" ${html}-body.html cat <
EOF ) | sed -e "s~@HOME@~${geo_sub}~g" -e "s/@VERSION@/$version/g" >$outfile suite3270-4.1/Webpage/pr3287-man.html000077700000000000000000000000001413735575200235402../pr3287/html/pr3287-man.htmlustar00rootroot00000000000000suite3270-4.1/Webpage/s3270-man.html000077700000000000000000000000001413735575200227732../s3270/html/s3270-man.htmlustar00rootroot00000000000000suite3270-4.1/Webpage/screenshots-body.html000066400000000000000000000017461413735575200206020ustar00rootroot00000000000000Here is a typical x3270 screen shot, plus the optional pop-up keypad:

x3270 main x3270 keypad

Here is the same host, using c3270 running in an xterm window:

c3270

Here is the same host, using wc3270 running on Windows:

wc3270

Here are some examples of non-English character sets, in this case, Cyrillic and Japanese:

Cyrillic Japanese

suite3270-4.1/Webpage/styles.css000066400000000000000000000026751413735575200164600ustar00rootroot00000000000000BODY { FONT-FAMILY: Verdana, Myriad Web, Syntax, sans-serif } TABLE { FONT-FAMILY: Verdana, Myriad Web, Syntax, sans-serif } TD { FONT-FAMILY: Verdana, Myriad Web, Syntax, sans-serif } TR { FONT-FAMILY: Verdana, Myriad Web, Syntax, sans-serif } DIV { FONT-FAMILY: Verdana, Myriad Web, Syntax, sans-serif } P { FONT-FAMILY: Verdana, Myriad Web, Syntax, sans-serif } PRE { FONT-FAMILY: Verdana, Myriad Web, Syntax, sans-serif } H1 { FONT-FAMILY: Verdana, Myriad Web, Syntax, sans-serif } H2 { FONT-FAMILY: Verdana, Myriad Web, Syntax, sans-serif } H3 { FONT-FAMILY: Verdana, Myriad Web, Syntax, sans-serif } H4 { FONT-FAMILY: Verdana, Myriad Web, Syntax, sans-serif } UL { FONT-FAMILY: Verdana, Myriad Web, Syntax, sans-serif } BODY { FONT-SIZE: 13px } TD { FONT-SIZE: 13px } DIV { FONT-SIZE: 13px } P { FONT-SIZE: 13px } PRE { FONT-SIZE: 13px } UL { FONT-SIZE: 13px } H1 { FONT-SIZE: 18px } H2 { FONT-SIZE: 16px } H3 { FONT-SIZE: 13px } .huge { FONT-SIZE: 32px } .small { FONT-SIZE: 12px } .mini { FONT-SIZE: 11px } .minimini { FONT-SIZE: 10px } .menu { PADDING-LEFT: 30px; PADDING-TOP: 30px } .content { PADDING-RIGHT: 30px; PADDING-TOP: 30px } A { FONT-WEIGHT: bold; FONT-SIZE: 13px; TEXT-DECORATION: none } A:link { COLOR: #036 } A:visited { COLOR: #339900 } A:active { COLOR: #036 } A:hover { COLOR: #036 } B.bluer { COLOR: #003366 } suite3270-4.1/Webpage/tcl3270-man.html000077700000000000000000000000001413735575200241532../tcl3270/html/tcl3270-man.htmlustar00rootroot00000000000000suite3270-4.1/Webpage/version.txt000077700000000000000000000000001413735575200225232../Common/version.txtustar00rootroot00000000000000suite3270-4.1/Webpage/wc3270-help/000077500000000000000000000000001413735575200162645ustar00rootroot00000000000000suite3270-4.1/Webpage/wc3270-help/.htaccess000066400000000000000000000001371413735575200200630ustar00rootroot00000000000000RedirectMatch permanent "(?i)^/wc3270-help/[^/]+/.*$" "https://x3270.miraheze.org/wiki/wc3270" suite3270-4.1/Webpage/wc3270-man.html000077700000000000000000000000001413735575200234602../wc3270/html/wc3270-man.htmlustar00rootroot00000000000000suite3270-4.1/Webpage/wc3270-thumb.png000066400000000000000000000137541413735575200171730ustar00rootroot00000000000000‰PNG  IHDR¨dì, pHYs  šœtIME×ù2?T‹IDATxÚíyp[É}ç?â" Þ‡DФx‰CŠ£Ã¥ñ83I$yÏØ3åJ¥*•Jþq9©MUþˆËU©Ýìþµ»ÿnþȺ*ëD[µãñLƱcݶ¤‘4‘ÄS$Añˆ“¸`ÿx <$Q£Ñe½¯T͇~}»û׿î~ÝBÀ·$ŠId¼JøbtT%Š©ú¿V$R¶.ÉZXÿB¾y–ƒÜçùXwßñý0ï›ÂFK!/Øû¿6ýÌó²%%tÂòò%¬»Ûàz=À\¹å'FØ’˜mÓ¶ñ熴ÝO¿°91l»ô·ÉNgyJ²ñz½‹Ez¾»àÕJ+"Íf;æ¿4¬¢ (ãZMV0¨ÄÅUEZ¡ÏÑ *̪E_ºÒ¢\ð¥ëìª%_ÆfT̸ÄtöÁd냰-Ç[êÁvÜl$>¯ô·­”›É{Dá ÷)Í'ö?º ‚ð@nR)·‹k»’|p-Ümÿx—3›¸œ.*ÐÆ¢Q­N«"ZY}¤Ç¶ ˆ¢8tÓ ¨¤dÙ}ÿ¯Õ¶èYu/ÎͪªÿÎZÙ]kW `6(4jaÔ™úË7õÿr)v´MsúVâ›íJX‹gï,ˆÿ>—{ÎÙuƒì/uÖn³¸Ý«¥»÷ÿô¿:oñðÁý°PHŠqk6€gƦÍd3é@4û?þÄôß>0~p¨ðžGô†2®`&)f›ª¡ÙT¹Ié^Ë,xÓZ•\Ô/îÞû×S? …Â@U¥£÷µ®ÊJ‡ôªP_øÅcÅÅéç—Ô9C¦ÙÉ(T£PfUEÉTö¯~ȼ'ÝÛXŒf¿˜OùÙŸ]j„SWbc â¡=¿MÈeýBÁn³öõvkµZ «so<ëêÜ{m2|óØ7þèÛ¿ ®1ÛYñE"ÅCw;=¦ŒdÿµËø¥®ºËRWï„KLéyt>n¬ê¬ÆL&ûó»eÜpOð¸ÿùÿºRéìöijaÄ,l°EØXA„ÍÞ6ûÙèh»Ÿ› Û©ùÄäyÞðö~·”WÊÛæåáq Âò³Mþwô6/Ší2»5Âcô úB]CòŠ X½ü_Ïž»@?„à4€Ì 4Âè!V@ÄaRî]_:üíßþ µå* ‰.-»À1¸­ðM˜-Lƒ ÎB#@ü; B¬ð¹_:„ÃÑû£zIé‡ôA+üÆà.è ïÀ=PBša7ÔÀgr!¾¼ÈWÈR0 á\mA HÁ-HÀ9È‚~ Qåâ{a ‡È£lH|ì/̃ja Zá:´Ã"ƒ>†lŽõ>IE-ƒP ‹`ƒj¸4ÃÏáø'™¢Gá¨á*ì‡)8 7 ®C¼9go€”Ð?…^ˆƒV¡NC¬B5üÞ€_B8?ÅÆiŸ,¬ÁÂ4¤! K0vˆB'8ÀÆœ7¸ÁjØ-P PJÐÀ!a œ2«;€ÎÂÛÐ…°^0‚ªò†þi(†ü´Â2è@‘soØ œëÂiñ"¤! ŸA’ € èàCPç"ør ÷V ?5¸¡œP _À4‚ºÀM0!sûP¤`&!pA‚P–0@ ÔÍé0‚Jaj?ŠY¨…(ËIŸ0hsË *ˆCÀ +P sP÷øí¤¸ÌàÌÕ⪂e°ÿ«W€Çízôè¡C‡¶F±gÏž>ø@¯×‡cpp°¨¨H&þ9£¼¼üG?ú‘J¥’ÈV(~¿_"Û`øò[¡ÞÞÞ‹/NMMIÌ-,,TVVJ¯Z[[¥ ØívÉï&Œ---E"©n={¶··W&þ9cqqñÂ… ÓÓÓ€ÇãÉd2%%%@4mii©ªª®^½zøða‰àÅÅÅŠŠŠ{÷îIÞ?úè£>úHzv¹\’ß­p¹\ë•`ppðêÕ«¿ }½¬ÇËz¼ yp'C&^†L¼Œß<·3- ÅÀÀÀÜÜ\uuõÒÒ’Ýn÷ù|wîÜyˆ—†††ššš™™™úúú›³³³µµµ eeeÇd2…Ãa­V+Š" R©âñxQQÑ•+W¾Jñ©T‡–"r:.—Ëb±ƒA½^ŸH$”J¥ ©TJ§Ó…B!³Ùìv»Çüü|mmíÃS~ëÖ-·Û-·x²:'ã‰Õ¹gÚÕ«T*›Í … ƒd†Ãa½^Fu:]"‘P«Õ¢(*•Êl6ëõnþôÂ`0å{ß¹‰Dt:]<×h4©TJ©Tf2Iâ¤ÓiµZý NU§Ó™L&)¯×›L&7 ¬ÒÒÒü¼Äb±ü(A!N«TªT*¥Ñhb±Xaaa$yd^ü~<þ´SþÍúá'ŸüÛøÄô3 ¾¸¸ø;ßùN<?vì˜dŠ¢800 T*{{{‹ŠŠÚÛÛm6[cccuuõøøø&ïûöí;räH¾÷˜Édrppèïï/,,ììì4›ÍMMM•••5556›mïÞ½£££Û¦¹±±ñ­·Þ’‚r:áð†oN ¾÷½ïIo3™ÌÁƒ5;}ûŒFcKKKyyy]]]]]]YYYkk«ÑhÜ·o_AAÁ¡C‡ÒéôàààÃS¾ººêóù¾vŽ,³›å®þíêåÁ¬Î=åN¾§§'_W™žžžŸßü‰L___,S«ÕÙl6Nk4šk×o{µ^¯ïëëÛ¤ÎÍÎÎ>V Rÿ,y¿téR"ñå—_&“©»»[²¿}ûöúâÍ#ÑÞÞ¾I;þ¼<#CVçdÈ2^ÆË-ã+**Þ|óÍ›7ovwwo5GFFÚÚÚ&''kkk—––¬VëÚÚšV«Íd2¢(»Ý~êÔ©FWRRròäÉü(††††††v软¯¯¥¥exx¸««Kò~êÔ)iûÍ:,ËñãÇ/\¸p÷îÝûÆo{<‡Ã177·{÷îŸüä'¿ãÄû|¾sçÎùýþ`0¸Õ ^¯7 -..æO}d³Ùl6«T*S©”´Áf‡ˆD"[£Û¹÷©©)—Ë€ä}}d·ŽP(tîܹÕÕÕ;::ªV«‰Äììl$Y^^–e¼Œç#ãŸb‹·Ûímmm_€Ú´:g06©s‘HÄh4z½ÞÒÒÒ‹/>{u.ß¼qãF0ü E!«s2duN†¬ÎÉøÕo•ñµ¥¤££ãÙËø]»vUVVÎÍÍÕÕÕ]¸p!N———ïÙ³'?À‘‘¯×«Õj_ýõ‰‰‰ÅÅEYÆËe¼ŒWVÓét%%%›¶”Äb±z·X,ÒNAAA"‘Ðét;™÷P«Õ›6ù„B¡Ph§gèF½^/y\^^Îf7\Õ£Ñh,ËWÈ‹ÙlÞ´ç¹Ïá<Å8555o¿ýv<?zô¨dºÝîÏ£=zt×®]f³¹££C§ÓõõõídæÕd2½óÎ;ù‘&‰¥¥¥FÚÓÓsøðaiÓÎðð°´=k¥¥¥Ç—‚õx<;ß300ÐÒÒR\\ÜÝÝ­V«ÒÞH}}ý·¿ým鹩©ÉjµZ,@„êêê­q8p`ýgÿ¶¹0›Í]]];)Õ«F|yy¹F£éïï¿yófUUU(Êd2ñx<™LZ,–ÁÁÁÎÎN­VÛßßá‡ÃqîÜ9@¥R;v¬¬¬ìôéÓ•••ŸþyAAACCC&“Y[[Ëf³]]]üñÚÚÚÄÄ`µZÓét$™žž|ûí·‰Diiéw¿ûÝÏ?ÿüý÷ßÿñ\[[»^½Z[[ÎÎÎk×®566NOOØl¶©©©d2ÙÜÜ|æÌ™ööö;wîHË›6›Íårýð‡?”vý †T*‹Åìv{OOOaa¡Édzíµ×Μ9c6›?üðÃW½Å;ÎO?ýôÖ­[CCCñx<¯­­E"‘¡¡!ŸÏÇ#‘H0…BÉdR:#)—/_þþ÷¿/­WWW§R)›Í&µ‡ßÿýõonB¡Õjíïï"‘ˆ‘ô  a4ׯ®®ºÝîT*5<<|åÊ•¥¥¥±±1“É$}©‰D.\¸°°°àóùÖ]õz½õõõ‹‹‹ããã·oß¾yóf8CCC@@Ú(à÷û‡††æææÒéô6!OÙîuuu—/5žÃ8/;¾ÂBß ù*ù*¯¶éê­V«Çãéëë[YY±Z­@ ¨¨h||\ºŸA¡P@àkß2f6›»Ý^PP ÑhÒét6›]\\´Ûí™LÆd2-,,l=:å ÑÝÝ …¦§§ÍfsAAAccãøøx[[ÛÈȈÏç«­­ÕétÁ`Ðb±$“ÉÂÂÂnýruõœ“±ÁþLf(‘P@úà:h J š»ÐÞ}™Ìe(€X:­¥(–CìÿóÔÿ܃.ðÃ$èÁn°Ã=¨†Y¨ƒz¸hÁL¶ÁP:½ˆ¢ÂP ªdr#ƒ_­°*Švp‹b°—é%¦ëÀ 50ù›áë`jÀ—£ÄqPׇšf2)Ð&“0ÀÒÀ8“¹ PŸLJ—c·‰âmøCQLÁ¢(®@Þ‚[ »ý\$!Ê‹ Pm¹z—yØ —`ÎH³Æðü Ô‚ Já^®N4À”,€}p , B܆¨ …°»áX·\彌×C!da/$sºÁŸÂ8¹ñ]P'@ 3à…ih†oÁ]àO.Øý0— –à÷ è-¨r5L:-T­¹¶~”xD`?ÔÀ]¸û APÁ^A=†bøl}6Bpêá×9âÀ*Xà7ð6ˆ°ËÐ Áñ:ðA”Ák`ƒÌ€¡ & zHéK à Ü€÷`V@g%©gáýœö53P XÿX' ^è9xÆaÒ „6h‡øáSðB ôÀç  ÔÂAX04À8| jà¿ol Û†0ÂJá8A™×M…@ wA€h!”+¯™œZ¼¹ëá¥fw†@0 ípŒ°"Ø`* IH€\°>š[†b¸^X)pC#8As°a îÂðÏÜ͵?¬ä‚2Â,ÀŒ@â „eÐçÜÜ„V˜…UH€¤³ ]0jÔÐãð+pæ<þ l0.h„[9ûx†à´À¨‡2Ø›ÇJÆÀ{àÜÍ J5ÄAs ƒYÐæJfT0µ L@ ÂÐ càƒ,ƒÓÏ~ʶâ™\ _€ô¨áÈ©¼%Ï~¹ä™MÙ.>sâ£/@zRpn£w;g~žä¯(dâeâe¼J¸/ãu:]þ7‚ÒµJN§ÓétÊ%õʵø§q;†Œ¥Å+•ÊD"qöìY`nnnÝÜù9½2¥R©T*7]d¤V«S©”d>‘â¨VZ­6‘H$“I)@é N'šÉd C ØL|GG‡t¶ÇãYYY‘©ztwwOMM544D£Q³Ù¬P(–––¤Ei] ƒÁ²²²ÉÉÉÞÞÞK—.=ItÒ>`·Û]YY‡FãÔÔ”Õj5™LÆëõ:ޱ±1iÿçúq@ À`0¨Õj½^¯P(ž°öÉü~(Z_ÈI§Ó‚ d³Y—˵²²¢T*c±˜tµXYY™Ôþ¤²ªjzz:“ÎHâ'™Lư×#B*›Éd3 AP YŠõ¥úz«ÍìÚ03“5¦˜2¨ -EÍn×ÊØø”\Ê/&Âáðÿ2ÐÙ«$14¶IEND®B`‚suite3270-4.1/Webpage/wc3270.png000077500000000000000000000174661413735575200160650ustar00rootroot00000000000000‰PNG  IHDRŒ…ø¶5Ô pHYs  šœtIME×ôêþÕIDATxÚíÝ{ìdÕaðsæ7» ‹Y°½áC\‰à(*Á$MkוÕT©2¥1ñ#ôá%4•ëF1©,J×ÈNWmì6‘ÌâHVnlÇJòG)ÔÁŽ(D8k£àìÔŒµÙ]`a÷·¿ßí³ Ã̽wî{îÌ|>BhwîÜÇ9gîwιwîGž~4=³ÿ­Ãž³/VПùäÂpôÇ—ü %½2ÿë¼óÏV°pß}üðtH‡öþÂ]¬<†8ÿ¥Xô])oˆÙ/…9/Å83Kúß1å8ýR ™Ë(±âÔE¿ü¥˜]61Ì{)Vª ”RÏ© X®²s*({ÏæWÐLQç¼+foQ• ÊÞ›ùT¸¨ó·®t½´%*hú¥˜±Eê.Vª ÜÖËu™ *PÔs^Š¥ßU ¤bñcfé Êý<:úÍ?fæuù šSÒ=ñÿâ‘ñ¿¾°@? ëæóÿ¶ÄÌ¿øžwý÷ß^jþ/\z{…µŒÞ%¤XwG»ÈlwýéÕæ¯ó.! ÀºÛôÎ=ï|ÓîsÎÚ!<ø­Í+ùÉÑü'ÿ×…Ó_ ÞöÂûÞòŠ_øé3Î9kãè±í;¿tü¿þ´ú ²½ç^–óê¡'î4¤ÿnòÀу_lìL}õë’ž áÑ䨑gÏ&›'Ú¦Ë.9¶ýªùø'ÞýÊë߸û?¾å£¾â’/l&ß}ì}מyëõ{¾þëç¾öß=B¾í±B á}מùþ·îùêã'Cû®Úý¾kÏüÖ¡­ oüΗÿÛ9o}Ãéϼ°}ãÇŽhd,*à'ƒ|vJ¹>ùðŸñOn+´î×];<ûÇ› é×ßôäèDøÛÿÇÓ׿q÷köžÚÈŸúÀ¡Ñ?~åž¹õú=ãéc×ýäé!„/~c3„pÃUgìÚÿøà !„ßýócïëž7½n—V@Y™šßÉžœm´„‚óçÝÌd+‰!„«¯¾:I’$I®¾úêñKSg©“$„™ÓÖO|ìüäÓÝ|Ý™!„›¯;ó¥ÿó3·?uÑwo??„p÷-{ŸþøÛŸºèé_pà†éû’~âݯ !¾kGüÒ=g׎øà7OŒÿ}ï#ÇCgížsçð×ßôdáÒ ^ é®:ã ?¼3„ð›Ÿ}njæKÏßq|3ùùÛO=9äèÌ`øìèÌÔyè"§¥ç?`cÔi z‡‰ç‡ŒÀs|úþçC—_²óøfòcï}òøfrù%;C¿ßó!„ã›IÙ=üå·¼b׎xÿ×NÜô;G'§ÎRǺCß=²BøÐ;ö„~õ{Bß|jK`6;§þk5¡=ñðäùéº!}çwÆcŒ£ÞóÔôü÷~ô?÷à7O„¾ø—þÿà7O|ô®çB£þôÝ·ì !<üásÿï~`ô®ƒ:ç¿qnánzUáÁomŽ“ø5{‡OÙú‡ÿé©©ýÄßÙBøÊc/¥]×=:ÿýO~tWáÀÝÏi‹4›è¥r}ÏTwNz8(ú ËAŒ!¦w‹ïþ«ã—_²s™|ð…¿é®»ÿêøè¥«n=t÷-{¯|íÎíO]täØöoþÔÝMø›?óvo}òÂã›Éý_;ñÆ›OEòÏý£Ý!„sÎÚ8ù{§î^2üÙÇFÿ]Ëýù¯¼tBú¦ß9zÁ+7®ù±]›Ÿ¸àè±íßüìsþÏ1Í €¬àlpÎ"ï­{áØÑáÅ—üÄÏllìÈ_D Û›;/:r<}0ù—~ëÈ/ýÖ©[ˆ|à3Ï|à3ÏL>Àüª[M-+„pÃÃ7H¹ëÈ?÷¬mxõ¿~|¶S?¾Å˜«ºXFy!ýбžþêÌíO'!9yrÏÅJ: éí³^ï÷L°(EËד€UuןÞÑêüuÞ%¤X_¿øžwµ:w iÖÚ.½})Öâœ4ôÔËzÒ‡~Ã=¹ —!}ÏŸ}N‰À¢\wý¾ï=ùHzH‡î½ïeÝÛ¿ÿ–¼žôȯ}äcJ úÒ=“#ÎL 3Ó³æŸ|É-ºX)BzêiW1# “™¬MfþŒ3ù³s7uþ¤ðFÀЇtjÇŒ@MŠ-'ègÍŸ“ÖQ?€¥æwÒ°:!”émûÓeû²ú¾ér⋹›zfºŸÕ À2ªvuwœ¿ØB¸©…„´-€UéR½çX2t›è–Í,·/Ë ã˜ðIÚï² ÎzÒ/dS½Õ˜=`žºü8ïæ'Æ·XëŽe^µgUç—Ó,=¿“! i!4w«ŒÅÜrc¨k×YlhQžîPüx›ÿȆ¬ChÙ§/_NÁEµÒÅŸ‚³ç…›Zè³Ïª¼ÿYW§'ÙSê)^9û›ºœ‚OñXH¿snç¡ìñ¼f7&멉›eŸ¾Xj9¡;µú¬œùCWÛ‹­·òS¹ÊÖJ,ùí m±@²Ëãy‘§&9ö–}úbÛË)¤sÒÝÐ&  ÀNŠMìáq;iùtdšz VÎÓ®’FJ…Uó)^É¢· ç±·Âaœ¼øßbÎIç¤+<í$ë*ÁPì©P9ëÄjÖ&¥®·øS°j–Oñ2hµïQäx5÷8ÙÔS°šzZ`Îo·J=`)kædáOÁªö´“RwòÊz–TS{ÞêS°*”OþÓ®’†ndPÿ8_áY±éM*~ü\ƒålCÉL˜I2€åê²'˰üjËiì4å¢BºÏO…ªù¬66 ÿ§e9je=‘ºìÓ«fÇÌ~Vhô±¬æÜ0«?OÁªP>XáîrÖq¯íC\囥$ónÒRd9 {Te…)x…T¾ ¶±Fã–ÙÀ’v²—¢ÝÈr*<%l¾A·EfFb/[U²è휺‹½„zÆKÑ—X¾›‘ :¬Â¦¾d¥~YЧ`è4wsÜNÒ.1Ž‹[NE-“Î ¶‚LIýí]hÏ_~hî)(¥ÊÇÓ®€e‘sü¬œ ež5Ÿ8÷Ú©Pã¾(±OÁÊ à"sÆyo¯ÖáîÏS°j–O#ßOÚè7õ”¿VÛŽÃe_ŠMìTQîÝ =%¤@HBV@… Dz®RÎy0ÈÔü9OY iéUxÊJåKì’ÜG…bÎJ]uÙró vn9‡æžBæ]¥Yðñ/~®ÐbH'µ3/äÞÛ+)ç¯Fž¾2"­lØÄûU| “«Nê]@^³Þ=Ý ¥†»Ûî¥Þ¬¼c}{4d,öÌéÊ¿>LªwÔXpHWŽÞ³*ió±Ìö'-—CNg½Wqh -Ö—?yf´ã§K5r¯¬í/»_”CÙò Â`ÍCºƒˆjäé[ùO/é>ªçnOñþkgg(¢^5À2†ôäA¼æÛ«Ý½Â=f‹oÙýŠ…Ï/§¢zÒmw•⼫»cÕe–íqö!xò·'ÎÜh¾Ú×—Pø¢°¸$å°¾=é˜ñ{Ù¬§”}J,.¹þÓ·R¿ $Ù; LOj”CÎöäçth¢ Š×{þv¶º=Bz~Ïiîô OA‰e¦”zúV…͈MBÙ (¾=±…ò/>sƒå@ ·! iÒ€! i@HÀ²){3“ÔûSšnºé¦›nºéL¯ÒÑtÓM7ÝtÓMomúËî€žÒ ¤! BÒ ¤! iÒ€! i@H€„4i@H€„4 ¤@H *V[’$1Æ"'_š’3óÜ¥YÅÜ·ç/8çx¶©?Ùß:{Úøþ‚†µÓj6” õÉù+|!XìþVØòö–…ánÖ¨KÓ·[lϾøü1ÆÅnÇå³òû B¦szµ;gã`Ó …eg¸›7J¬:çŒ×!çÖmAHÃrG»ý„4tÔSåКœà¬6~ôsÒ°€ø¬<ñè]Ò„®¼¿ ' «‹Eú•Ç\dþÙœ.>K‰Uv;«/ †µÈéâý²ÁP!HÚ[ÅìœsßÛM–Z‹l†ÃÝ ¤! BÒ ¤! iÒ€! i@H€„4i@H€„4 ¤@H *‚–$ÉÔ”c…é˾ý¦÷³~µí!½Ö²>Be§/ûö›¾ž‡Tõ«ý¬ÃÝ 'Mç w›ÞçúÕ~´„ôZ3Ümú:RÕ¯ö³ w€„4i@H€„4 ¤@HpDZe²n· tÛÅÕ¸­£ö£ý ¤×ºÝ&Ðm—«¾šªGíGûaÌp7èIS›ánÃŒ}®¯¦êQûÑ~ÒKÉp·é}®¯¦êQûÑ~3Ü BÒ ¤! BÒ€! 4ÂÇúhUoÏ©^Ö³ú¶|í!M-«z{Nõ²žåзåk?,ÃÝ 'Ma†»ÕË*•Cß–¯ý ¤©Åp·zY¥rèÛòµ–ˆánÒ€! iÒ€„4i î8¶HMÝ&pÙ§¯[}Ùßf·Gy"¤iES· \öéëV_ö·ÙíQž¬0ÃÝ 'Í Ã݆+íoýíQžiZa¸{=ëËþ6»=Ê“f¸„4 ¤@HB„4 ¤! Bh„;ŽuÁí?Wãö‡nëØM{vp[P„t§Üþ³ÚôU­Gíy=#GùPánГ^c†¯ w¯RßÈp·öƒ^)†¯«M_ÕzÔž×3r”î! iÒ€! i@H€áŽc]X·Ûº-èzÖã¢ÊMûAHS˺ÝÐmA׳UnÚ+Ìp7èI¯1䆻סUnÚBšZ “®ÆþªÇjûe¸{=Û0Ü BÒ ¤! BÒ€! 4ÂǺàv’n ºõ¸ìëÕ~ÒkÊí$WcÕc7û¥ÚkÈp7èI¯1Ã݆»W©od¸[ûAH¯ÃÝ«±¿†+›-ÃÝëÙ~(Åp7i@H€„4i@HB„4 ¤@HBÒ ¤! BÒ ¤! iÒ€! i@H€„4i@H€„4 ¤@HË.I’$Iòg(»Àš3,uIÎ-Ï:[jù=,Ÿelÿ‹2tlÖóKI!ÆØø’ÇËlé ßöòÒ@õžG¹ÒÞb;.¨ü›|uôïÉT(“nª¦Áb™ý³È[Öá#ÐÛö/¤a ”=Èú*3›ÇÅ»§‹w‰*b©ÛÌš7x! ËÝq‡ÓTÉž©%Ìö'R>•ˆùë-®S]Û ‡éѾ”Zu壵÷æ”O~=¶ÔÕ›]þxÊÔKùõ’µñYí³©N-ŸÔõVkÿ9«Èoÿ Ö—†¥Ïé©£ÃÔ¨ïèß³ÇÙÉ—R;£ù£Ç9CÇ¡ðéÒÙMÍÙÎf#³ûþYj½ä¿ÔÔJÎ×—ÙòŸ»®‚æMhdÐ"uÕ©ßʶÿ²ëm©E¹º–,•SYGÉ©ŽBeeÓ¢àѪûaÌÑE¼9$ôl½,d8·T¨Œ7x²«=›|YûUytdôÞÑbs¾Dfµ«šÝô²½ÿ6’ž4,S67u4op˜±q“‡þ²Ýè"#ÞYC ý©6Ê9uu}x…’Ÿì׿¾½öŸº…BÖB#Ÿùñaº~8õíBž:ëú»“3¢Û`’µ¨•ÏÔܘq‡»BTWè¦ý7>ôm¸V-γÎOw™‚5ïã1Þ,5":>¥ÚAÇ·ìy„üzé¦G[óÜÇTqMHThoãAìeù(-Šž4¬rNÏXKF§®»É:xͯ àæ^ý[¶»9wËžÝl)§S·yê¥Ùå7Òœ[e;¬u*±Hƒ,¸‘EÖ^¶ZYëmé"! Kº¥¦7øÒÔ5A¥6©àÅeÕ65žüÍ(rƺfÕ”ZuN94²©©=àjí$났R_ä½usåB+¾´ ë­Ìp7Ð;nx zÒ@ãÙ]Õ@Hý"›a’ánÒ€! iX3e¯îžýñb4ÝtÓM7ÝtÓš^+¤£é¦›nºé¦›ÞÚô—1Ü =%¤@HB„4 ¤@HBÈTñyÒI’L=öuü¨ö‘ñ«s§O.gj±ã?S§O-yviÔ¬ÖÉ?Sëq¶ f§O-pîBÔ`#õ˜_¤u>¿³ïú¨æ×ûÜ#P7¤gÍ©ŸÛ‚ӳ晻¨²K ©ð.rlM­Ô¯\ù_Ô¨&ÿ»oÍÏo‘v2õÞœö Þ!Ç ò!`üQ¯“ÐS‹íaY yòPÿs­Þ¡™^Ô^Ÿá…w¦ÂjÔcÖWç õž:¸ 4h¨(ò i|DÎ9—™:¦êðÝÿoWYõ›:=ë´tÁÍРŞ:ŸÔq¯ºû52÷PžNZÿ{áÙœuÞwöÓT*ªë4 Åž´™¨.Õ|¯Zà7ª ŸßœßMLNŸ½œ[{€6 *|øÇJ}ªç~ÚOˆ$IRg.;Æ£¢ÔA\=6[#SŸß–¾½¥~®sVªÞ¡nO:õ—3£‰³Ù9š³Èôœ+BS?Ò ¿‚ìž{îIþæ7¿yÅzÉE~Ò:÷×®“êS×§._7«%9Ÿß²79Èj'YŸë¹íA½C!™s?“õ§çü¬¶íU§øÏYGÁe‰âêµ\mz~#™[ìmÕã²wºb•8þÒ\¶$³ê´øçwaõ«Òœòþ*áÇr}Yè÷î=é.$õúGI‘V™sÏÉ‚úk‰~båúe^—ÛßFk¬¼Ìñ¹Ÿèó«' àÛL#y3uaEL›Xð«Iôýu5zÒ³Õ‹µ€¥ ®v/\ý.K;™Zx’?1wc’^6€Ù­ÍÚΜýÍoä+ù)޽iŸ½iG:`‰¾iÅ%9pgmgÌÙïÂõ¤Ë}mI2¾î%óšWÌ]NÁÎ}ΗÓ8oz’ûiI /'”ßøÔåYo,Pɼ?'w!™·kÅË¿N=¬¯Ôöç•pȘ§x“¨ðѨ_>uÚIÍé9{Tê#ÐTy.ª¿›ë­&J¯ƒÝÅV”dWÙB>×>ŒIö0CS¹Óêñ¡»žj|ÉÄŽœ¶³ß[ðKbR`hhj™e¿™ÎjËZ~RµÜrÖ;wæjë{è)»ñuê±r;‰ÙÛP¤~ ®·æ‡¢Zù”m'eÛ©,¾¨©yê—ç¢:uûã¼/ÁË2,‘:üÞT»Ízo©v˜õùÍ©¦¹‹*~8mïøPÈ RóÿWyªÈž·4®•T]lÙOc,¿Ùùë=ä%U×›4tÑJÎö”­Ç¤«vRdù=,ŸØPûLú\”ÚÎ å™uœÉš^­lÝ_õ]{ÒnCËíp!í¶Óoc <'tÛÖgÇCb¿·­äÔKR£‚â×o©ößà碩òlj¨¼ì‹ ^ƒ6;x“´pZ$,ÿ5@­¶Ã í6YP{î4¤›=./dù|¨\@×^TǪå'N/Å~·Ïпößê…Á±åÓ„ºË•<žäœ×o°Ÿ?{zZ_ƒÕj˸=IùÃG…¯ü!û2±:Í´Èöô<É’J5›t^>Fnºl±Ì9פd¢tP•uÛ |®—âøÐbOºì©èÔS±¡Ÿ0Æ™ë†Bîò›º$/kùùÛPdªÍ\¤bnNÇyÓëo|ÁF ”s‘Îtµªlµ}6u¼ˆUÛgýK»CívR³4 þ¤¸~®Ä—_xØ«Ÿ\'iÿnp“šj·1ãR¯¦ÚaÎü?×Iɦ»€ö0,_èE¦)Še–_p“bíåãŠ%·§T©6¸ÞX~ïbí&jWÕ–ßÈÒbC߯›jç´“Fj¼øöĆU¬ºý5Ûal¢Éå´Ÿ6ö+ió#›h$uê+Ö>Äò‹Mdªs[P¨ÐqE©=øRÑ•´³1çJñ¨Jh¤sÀÚÆsìM+Ò2…4>Th'¨ºb¸„4 ¤@HB„4 ¤! BÒ ¤! iÒ€! iÒI’DÑ@¾aÍp1V˜c½4ú¨ÒY™ZvúdŠËiHµàsÒ£.µÑo¨Û“nj¸{rzÒÐ@H78Üíœ44ÒMÑ€¹sNZB@OCÒ ¤`Eíß¿¿§!½¨-XÉc}SÕœå8nÏ–óþ Ê3ui—3wÕ9†¥AþŸ+ß…ÿ™:}òÿ©ާL½”µ¨"Ó%tV¦Næâd±dMojù95R:ª<ýh’$}éþCO<üû¿wÛø÷ÿ&§Ai@Tç‡tÁ0˜{8­Æƒ| ¿TU›˜š²u*.ÿÕQ"zâᇾtÿ(‘“€ùýæ…TÞ¬Ån7@?ã©c¡ë'BwîJ+¬zXvêŒã¬Øá¾ÕãaÎ(«„l*¥–9,Ø8fÛ¢8‚·z<,»ÌZ(éF·œÓÕ +×tå ÊVòÐ?•ÙÝuKèÕlpá@»‘9›B´›$®Yæ©o鸇uZžF¬OÜæÿ*µÈñ0ÿçÑs“>g‹”óÜ¢+Xž©ËÏYN­ÜÌù4ø~Ö¿“€ÝñÅÒ°øntªáÌfݲÿ-ªúÒ×]¿O‰@Cú{O>¢D w!ýÝÇ+èWHæ“ôMôÃhèiH_øê3Nl Þÿ+¿zã7N¾ðÁ~ðàÁƒçwÞÖÖVŒñT¿{8Œ1žJust for fun: x026 x026 is an IBM 026 Keypunch Emulator for the X Window System.

Animated x026 image

Features

  • Requires slow, deliberate typing or input will be lost (typeahead can be enabled if you insist)
  • Overpunches available by backspacing or holding down Alt or Meta
  • Tab set for FORTRAN
  • Automatic sequence numbers in columns 73-80 (can be disabled)
  • Paste X11 selection with middle mouse button
  • Can save deck in file, either in ASCII or in Douglas Jones's standard format
  • Can select from several card and keypunch types

Source Code

The source for x026 is here.

Keypunch Links

For lots of information on punched cards (including the images used to construct x026), try Douglas Jones's Punched Card Collection.
For a picture of a real 029 keypunch, try Ed Thelen's Antique Computers page.

Ongoing Development

I used a real 026, once, sometime around 1976.  I don't recall many of the specifics. I would appreciate any help to make the emulation more accurate -- contact me with manuals, anecdotes, complaints, etc.
suite3270-4.1/Webpage/x026.gif000077700000000000000000000000001413735575200207222../x3270/html/x026.gifustar00rootroot00000000000000suite3270-4.1/Webpage/x3270-help/000077500000000000000000000000001413735575200161225ustar00rootroot00000000000000suite3270-4.1/Webpage/x3270-help/.htaccess000066400000000000000000000001371413735575200177210ustar00rootroot00000000000000RedirectMatch permanent "(?i)^/x3270-help/[0-9.]+/.*$" "https://x3270.miraheze.org/wiki/x3270" suite3270-4.1/Webpage/x3270-man.html000077700000000000000000000000001413735575200230122../x3270/html/x3270-man.htmlustar00rootroot00000000000000suite3270-4.1/Webpage/x3270.jpg000077700000000000000000000000001413735575200211202../x3270/html/x3270.jpgustar00rootroot00000000000000suite3270-4.1/Webpage/x3270_main-thumb.png000066400000000000000000000240661413735575200200330ustar00rootroot00000000000000‰PNG  IHDR¯dß÷UgAMA±Ž|ûQ“ cHRMz%€ƒùÿ€èu0ê`:—o—©™Ô'ÁIDATxœì‘;!D+aãa½£°²0Q܉$›ý”Ûî„™(€RJ1ÆÖ9ç˜ÙZ»Ö2ÆŒ1"E£ùœSsUdîBªH7<(ê9~EïU¿¾çí½×Z½÷úAü7„PJ•-ÞÊ9°K†8ƒP5AT`NÁ%86]¹¦Ò¤0;Y’еk÷+>ó óˆs.¥tÇ}ßÞûBŒQÈ1k­Œ18ÂeΉZë1ÆyžJ), rÎÑzpº¬{ï¡BJ)Û¶áúÃÇu]”RÀ‡-z.Ï[¿øø×/µh@öˆ`ß÷ÖÚëS9g)¥µY¬PðóoØ)c€A&R=3 13°Q1+0eºt9Ù+¤Ìw`c#ÿû/\À- Ð{ŸsB¡÷^ ~§€LÞ ˆT¡ì½ijè†:è€R1Fävˆ—ðý ‡(HsέµP74¥fÁó;ÄW`ìl&ËTk­9gkíÞ™vJ©µÆ±”®¾°WïFƒ0E7`6gHè”è¿:  ð±5v­ Ð'¸½„ÍcΉhïýwíj•Ö<º@¥]˜xºxÚ{‡Äÿ>e•Ò&•R”8Êt ÑQƒaÚ*É9§;¬–ÿ2‰#–„ÌO oÅcôÌ¢Öê×¹Dm­…F¤µ† ‡ìÖ±À P»ñÿÀ·ö•KìÚ± ƒãÝWwƒº0〟”„×0Ëv¾a¹fاç‡né ÖãI ’ÂÏÉ㟱 ¾‹üö‰yvý;"Àè–« -„Àm Ê-€Xž>} lÈÊÊõ¼~ý÷ àè„G®œ 4Ά+†Ôú£™{`$îqÌ´À(,})" éÓ0l 8°øÖÄŒ~`Y!//QŠÜ‚ªæZ` ê„´ñX ,s€E=¤ 4˜!yRLáÑ> ¨ u÷£G€ñ ì œ9sXêÛsÈ¥2„ ÀT,¤¥¥"Ø/c€a6! FðàÞ‚–†‚ŠYr …H•/‘É/^ÿWWŠQ»xÉÌäéýñ˜äy‰ˆªb¥ˆ¸;í=½ý“‰4ß|ÄÎö§™qÉ0ˆ]€ß½7qˆ&ª*!`­k-ó옱 ! E››!U2ˆœ1E–ÈqbayåýÊB±øáûŸÏçp‘W2dSfªª»Ã'çÄlá}U‰÷A,ÄÀZ‹aÑݤšs’@×ã¿>T{Dе1î ´xfb{Ml›HØ|Ð_è€;¶ aØüìAÅþ[ýIn"¡t_>U(B¤Ø88|$¾TKÉ("‡=ù,Ú¡ÂÌ0“ÝMЂF9ö­nºòÇ·‘á]'»vkç/ÍäÓ±™ëOð P?2Œ0¸¡@ujjj àB’ €fá‰N`ºQUU}ùò%°ó LŒæææÅá&ÈHÃhj 506]\\€D X0#˜õÙ2$$M%0ÒYX}<~üq@A€b¶¿c`fax÷œAH’áõ †oŸ^=¢­WFÅ€˜ÒÒ† p $ÀÆÎ ,ÉðõƒªPˆA\áÏ/>†‡×Ô Þ>gàf“eàe`ç`øó›AT–áí3†o~~£µF°x XB|xÅÀ-Àðù=+;ÃÓ _3¨€ `!!&Ãðà:°F¥F&†Ÿ_A)æÛ§Ñ¤0œ@òË¥‡`(ˆÂ_¹E+T¼Bbãÿïývb%VHJªZ}™) Ö–Îâ.&“Yœœ™sχ( Nºëá…š…i¨/ˆ&ZmDGlW¢!½‚åBߺM‘É¡ÁØHlµªÊtŽ@¢õG•`½¡LcúöÊŸ~¬ÿ·CžéB ÃEŽÛ%M*2“7·/ôÆ4ŒÁõØ­µSúG3ü#Þ€ëY‡Äßï7↣Öÿ§BJ ¬l úö ï_0|ýÄÀÉÍÀÊÁ Êðò!ƒ¼&Ãû× œ ®1èXƒ¢ùñ Pùt С@-@g¹|BÀ%ÈÀê¨RTšG€áÉEmP+˜Î€©äÁU£¹‚¬DC'PF}vT<›kÀ†3'ÃõÓ Y`4 0"¤”ÅAÙìëGP€ët`ž¦`ê²/¥9MPì¼ ÒÌä¢Y@H½ ®€H`’¶%ßE!°.¸}dÐ\ ÷Ók[J”\€Xx|| ²h °ÙLwOï0@Ú,À$L @eož4Ó,°©L @ÿ¡K(ðþ¨TVÐfàà•¬×Žƒ¢˜ÀH¦.¨2`,ož…?P1°6jdbeZ`2j 0¹#˜ª°Uñ„T6ã…ï^€Lùü”Ë14h.°Øø£J€'¶Ê ^APiÀx½w‘á÷/P±óý3¨:V4À. 0¹<¹Å ,Åðá%û— DÃÍR,?عFÇ#HÀ¸yT}Ën>P­}ç"ƒ¬(Ý„FP˜{­{`ƒØ7A‰Ô¼û*Ýi¨ìþPñL @) iØ@öÌBˆ¢ÁNPAl¬ÖvQKïžÀÂÆF°Z,„UÄàû6ZzS„0˜7ÿOȘBUJœ ÀÁ:+¤êØÌºiñ­åúÔº=€Ñ M¨™ˆK3t¢ÕõEbœÊhPŽªRc/¿àÒËÛ{>T3ÒÛ6æ“«¯çyϳΡÉû]‰` é#Ùˆ4AæÝ*ç(("‚…`áÿ¯ÄNT¨4$`ae£ß\|‚…GŠ˜»ÜíîÍÎÎÅo4¸…ÃkúÖT—Šìl·”Œ w5ÑNU˜Ð øsi7kö,\‹]XŒ’Áëg'‚(r1˜´2’z‘q‡"¥Å²%'¡'m`¿Ö1/+ 㕈f@˜çJ&ú#ÚK` œDŒ˜A”÷ÍËé¾Z³õLôÈÃÂ%V˜X‘0á|j ¥Ž¯ÁÜPø®Ž-ƒ–ÈŒ30^`½$âåùÁžT :+I‹­P±è 3h$(AÃMfC$aÀv¡.v«Ý×.ò›pqa.l¦öÿŸûøˆû´Õøñê}åsX¾B æ4×0|NSq>ú¹Ô]fÍ^a  ‚• ±Q%B@C´°ÐÂ÷bcº„ …Å þÄ*~sŠø¦;ÈÝíÍÎÍì†ü° ‡SMÅV=,è }.w£)×@jèûcÁDFiNfK (Ä&^0ž"&/·ÚJùƒÕ±o × Rž …¾y–n„•™Ê`ÒÌŽØS´°bûi‡Ê¶£ Á Á‘¨?Àš!£íNÖ ÞíE(Kà>qvbùÔÉY8Wœäé[¾âVìŽð’0Š_j±^¨eoµMVê¥ÏÎòT‰GØÞÝC”’MêC&G)¡;dbîýê¨Hrn*Å5?’Ρ.yn­Ëð—¿z¼àÍŽY‚(¯±ÓB­,„ãÀâ0h'Vþýþ‚«9D± "ø½•ÛkÜ"„„Ìîμ÷vfòZaÞ³n;NÊlž­Òit£ˆôPñyØ€9Ã¦åøŠãÙGÂò~/¢$ ˆ5ž&~|ÄfcU®§øÝ‡bÆ#0„÷Zšô7Exø±Ôd–¦±/5u„~6¿ñ¯iR[O©'Æ0Kœ<Œò?%Rô›W¬ ÌaB@žéâò×lqˆôŠÊŠŒ®*zÝ•Š||•Ïe´g±Éš h¾ÔÚÚ,Œì1øSUÊ\ ({dÓá}>ÅEÀN»®Åa ­¶¹‡frëÞ⌇̚ € Å+ ám¼‹_;e94~À†»-Ð#XJ))¥ùmEÕ[Dx—¼Ô Ó´Ûi›J"öa B'áøK^‚ø8Q²õ‚DäѨðP°8(Á÷níšQÌOþEo¦+ Úyž ˜û\Å&5 9³+ÁÙ!Úðµ1–Zé÷q>%Ò@÷´Ä† ŸIO®ºÉ¢R¢Ÿ÷'÷O’s¾ ÃnVˆa ú"¾ÿ› Š «~“QÁƒ—=t§i~ši’_ÏR:Ë3)‹Ê¼‚jñ2ó"Y+´ø#È=!ôaìfÄÁH©bæÂ̪ooòà”¥àéwyY/k¶¸ íƒ{bè u?§Ë¶ŒÆO9]JÙ(ÏŽŸ-Ûg(Þ 9a>F¦¿€%=9Û€ÛŒU[`+´eZa}ÔI¦3i‚šm„³Ô ¼‹…Ÿr˧VgTTÛGÏuEL@KˆÁ«§Ç&“ÀǘV3[Õ»õEœ.Êu´ÅC©Ç `GÛyIã´‚‘\ckZÝòüuZÁÝ{Ÿ3x @¦ä Q”D$¬L$ Ôh´„‹s7îtÑïwª©aC\|§3¯uþ”¸Çqš¦ôßjz£ýDðTrÂ/x6gÝ2ŽwµÜm§˜¨¡¤9ÓB° ³$W[Œ1Ÿq}–¯£˜˜tHJÅB(ÜE÷0ȃ’¸U¬«È•¦‰ë™Øï—^{/£¿XˆÙ’Í^36€Ä^1I ?"ö‰6ÎWTÚN2rJߢ¸×ÓJ"9”Æ!¨ê_d¦6ž ÀÄœS–_h0ÐNÍeÐ*MN« ¶‘0&ÂA'ˆ uiÜÆ†r1 ¸^׊$nT¸Aû#<‹Cm¡qΈl¥=þ:|FM1 F*Ö4º½i @¦†Q€4šFÐ0I }ÃÂÂÂÆÆÆ""" àÕÃ@q¸2NNNmmmÈÊ? sssvvv [PP¨KHHˆ¼ ¨FSSÓ Q666rrreúúúJJJÃé´ €&©AFFÆÝÝÙ@60.%%%¿|õŠ dˆ ¬žžÞû÷ï!ñªÆ( ŒûÀÀ@+++ ›‡‡ÇÀÀàãG,s¾_¿~åââ‚,*¦ [TT9µ u@Ã$5c˜×!ñôçÏ`‘é(ýû÷OGG’Ñ!×¥¥¥áº!û—üø±ÿþ/@#ùÆÀhÆ´²1¢h‹˜˜777|ÛÚ04Lz˜,,,ð-%@6???h(Ì»ÀìQä¥ Ê •„ ÙRßmŒc¸4€|0Ü ¥ÑðÀ&@±V5r²áå<0£#oráRÀŒ—‚ŸXák\!o,†œ“2œ@ “šbPÐhj@\S«a`X¶ÀBräÈ)\²¹²Ï²“röÄ`£nœ|^AÅ€°‚Ä|Èéˆh^c€íŠ„l­Çê<Š£éˆ9cˆA ŠîÒØˆ ÅNOäõ‚GI•@±ôûÙÀ–î²ÍN%2otŠÿÿ< ”RX»}ß•R¥”u]ÇÛ¶MŽ@†zÜÔ²,çyJ)sÎÆTÓZ_×+µú3w_2OÆþG€I8ç¼÷­5ƪYkß­~äñ2ºxTX` ¥Ä9?Žã†™'Çk­¿±}OÄìS´´´ Tƒ˜S!’Áó0ëÂ888à‘2À²f‡dP´ƒDˆQLиäØCÈùv˜e¦3 Ç AŠ+bFáÁ x°O€˜3F„a`ÿÿj‹Tqq1„¤­âb>Ü SÚÉÈs©ò°Ç$ÎY£W·ÏZÆtM%¶ˆbbü*NSÉl†ÌóèÜ€wÊÙE›šMB-ÈS›lÅZŒø­"#ÅœÁ¯ÃÔšÄ\A ! ìö¢ˆ ‚ú ÿîÄ/x؃ ¾¡Ã ¥¸¥·ROA†˜Lâ/þ¡´Öιó<…­5ˆêˆø¯I¡wJia£¤xïçœ ¾ŽãÀÈx÷¦”ê½K)aÃ'^Œ(ùºñßÁØGÿÅ?FNÁ,c0ÆrÎPï ‡ÖZÌàͳ¥ö¸&2BW! àk­œóRʇ;8¥„ÓR•k= æŽQa(€öþ7u4'ðÑY”RºÔAD~B’ŸDqð‡là磪ðjî5”TNwÌ¡P öJµC„’`®ûÛÊ|LÜÚp?ç¤ÍZaAæ gÏà6à84ƒˆ¨þ°ut~óîZ76–Ç€¼ã°ƒ?_o_Ž%€†ÉXä( Û DײÁÀÀؤ‡Ñ222ÀV4fÑl–k÷ïß“)Ù%¤¨¨(°TG«)pUx°›¬Ú€å9š3€:99ÁçÀNž¼ï43‰Uñ;w01Uz˜ ð&°š’¡F¬c‘D]]ÝÁÙà ڦø¸!lx˜“ÇÝðEbUŒuÀÇ ‘Ç"ÉðкW¯^A¬† /B†‰tVðîÝ; 7ác‘kdÈ6Š €F{˜£ €í€¢mÙÌ‘FFFyH`~âãã;wîñ½)i0æ!aaa`wC\\ü)ÔÈÏÏl«5« `™v ˆw<°›ÃÅűX’C®Ûš ÌÍÀü,ØNöS f‰ô²É@èB`Ïëš}:€¢y+˜ E4äÖ+ IÒvÈí7À6$1Ùý00úáE1|“xŒ0 ^È}]ðÕØ@6Ð ,ç‘×Uï5ˆÉï@̇4'ÐhM1  XSÍËÈFØð"¤H|g²Òyàò7ÔHűH ¥˜n†{ R ±H€¢mjöΓ““(øð¢ŒŒÌÌ™3‰`/ÑÂÂyàòĉÇ'¨‘Šc‘úúúÓ§OGs3Ük‘ƒÕ«W“jò ‹ š×Àh@^$uØëÀ%1©8‰ËÍÀên8I&Ú±H€¢yMY½Ã^„ì\#¾¦€¬4Ĭ$ÒjªŒEB®ˆÆä²ixÙÙ Ù|Yˉ¹Š+´c‘Dó±Hkkkä±H¬Kñyyy´E”ƒm,ROOÜ($Òkƒv, €è=‰u©#€¹ˆr°EÓ:اÄ/o´c‘4ÚÃPl7ÐÀ7^FÁà4šFÐhj@£©a @¦†Q€4šF çìq(a\$@°ÀÀÏ ÷¿`?ÕRUõ½t‹1˜Çßý ¥”9§µVÌàs<-¦™dkí&žÇ bŒ¿ayïsÎk-¹àœÛ{˶ÒC2„Às)%i-k­”ȳà¸ü+ÈžL›ìÄ@õÞ_½i[(ÍÌn©’Š“×EwŠ¡W!É[ÝùWp ÀÌÙ£@Qxïa­6*èì<¬Ð*°HðlD Q°QÙn/°›b„ùá½WÍ ù±ú/Žëº@@¿m îû.Òçyæy–6¨4›‡aˆã8MÓó<-Ë‚†qqäµià–H뺆rÑPžç²ÌòúÈóô'I" ·®ëÈŽÂ ’"Ã0Ä¥m[ß÷û¾wG)µ®+Å£˜ëº°2ª%Ȳ,Üe+kÛö4MQ•e)RÐZ NßsÇ6ƒ0†³HÌ@ÃöoY€%(O÷ Kin„KAlä÷ãËÿ›Ä÷œ#¦¢Iá#UJ)м)á‹Ð;s°0þÜç¹=çâÎ Iès¢->˜¥Sè%6ÞŒÌ9YŽ´a¡1ŒJ)c k)- y ,ða•®µð×{Ç_x¡.&Þ;<[qkä “r(½÷f<ú3ª~j­à0Í9ÿ^•} ïjsA¨-ZAiwŒî6Þÿ6}<»5ÙöGüH$Ñ'þïYä§$$^œ„ðKZg@Éœ÷ÞÁ©[ãØýF@‰îHßç‰-?¥ç» ãN¢‡ìƒ…âMnAq+Yµj8‚jtX¼7,*øa›Ú˜§Šýœ"Ѓ~ß«5ÓmɬZ'Ñ[ëfð@‘Ï2Ï¡ Õ̩ |#pZcŒKÖî`Ap2Ä÷4Ï&>€¨Œ–Ú–¡‰1áâu”î_á¸äû²kšLͨgg²J ÙÁ}û'²þSVÙdX6e•ÿ0,Kq—Ãĵ¸p»FàyQqÂ꣔ÝPÑ’Ö†81OÈò"ôh¦R{Â8ôzÇ¥<_®À|½Ü¥‘³>:´^¶ ´j%6´Ñ™äãë$Íi$aArº¢ O€ƒç)±M#ÎlBNIN2¡ôÓòÉ5Ú™w!Ê_Äτ†79õsЍ[ËÑö-Ä'Iç10Ô)6†hâyÅYg_íš—¬Ý;€ ÐÂÊÆBc€J½ÿá´´qfw! ‰V6dÂgBh_g×$±©F/˜‰›1,§È*hVíš7YE’)‚¥t ˇ¬ò'ò;ަØ5Ck×à Øˆv gg×(GƒpXå¾™+çÃz0»FŽáÃXYí þ¸Ò–bøL3K¦þxۦ鰰·k*tSu ,±jø "¿þ0Ü‚?—‚?rZ­mh/¸µkDƒšØ@¶¸¹+ƒ k €ÄÜ1€ À>Á™ÞáÓýÏqòb'‰ &–.rCíå¦@•8/ÔZ+y¶ÖH'ûzY†;ojûêö‘¾KÔâ‘›D¿,¿‰^ˆr‰®èæì‚Äܸ婧²gØ{šÓá`âJ†ØZ¼‹*å%Úþ´[¦ëºk¨B­«ùÉËðÞ“ªæùI>ìT«wáéút€®+Êm¡`;Ôvë¸v«VêǶì»ÿ±öwíÏò‚?¢Dï 70/®gâR€¦ùñbl»2„b½òß(c›X81m*7ÁP•š‰©}c úA®…î“ ÆLÞ ÖJ̤â^|\©%ÝSÄ8LCªÏtÚíÃу”ÚÇt‡X¦Pb¨;öaN„UnŒØæ¨h0 vî…2žQ/ÃàK7sŽÔX#ñTi²"ôwšT£Rͥ…¿¼SÔ];·ó~½Y,!FÓ00b´È52’ Ír3Úd7ˆTãK ¯&ú:LXvWÜ éøN[Ýsô; 冯-8;í*,#naG#ƒ„Ä) h¹.ñ"ŠU&O¡ÿÿÿnø€­³{I Ãø#ŒR¡"Ló“Ä‚-)ºª«èOèÏ ¢û¨èã*ƒÄj~”5kvR‹ÜÉžwÖEÐ.·qÎyß±ñüÆÆï¯G{kåSÞï„…Në#e½qÜzE%ó°Ë"ƒfKELµë#qYLÅ/Þ) „™\*ÕsI÷úDöÏ["Žú.ó°‘&l$е`WÄDÁi R–ÌÒ»~ˆÆ?Y$Å’t³ªŠÝñb9loaÝGèÛsõØ|J@bë™ö‰|³†ˆ4ïkp¿4$Ýe-Q¬òöú¶„–¤MÕ…,¥,¬Afáái¡ÙŽÿß\kä g 7e NÓs„¯¸Íãš¾r!$Y»DaS@±t(yžø°¶ƒó¤-(GÌ­ ömÿáÁÅpð\ÁW O6ï!¿Š«#‰úîÓû|yCìЉE!¦±PµUE_ÉEÍXBò,‡ãÄ2âpîwMþ¼ àDæ:Îö‘6Å5ñê^ªg±Š·ïÄñýßö-Yg·Ò0DáƒÔ46&Öb­x!ÕŠ7–RêøÀ>ƒ¯PQÁZü*x#JQ¿“-"ºä&›ÝaæÌìfÏÞœ_·QÔWP›ÿQ½›˜ ÔŇ-†¯yáÁ»}Ò¿Ù­”©SÏš^*‰4+oh½­¯ê?EÚÚSšq4ÐÓš©:]b^ëuI¼m®ÆŽíµ®;P&ÐÈûë%:G ኄ ¸4»ò ¤L±™·•µÔ)Ž-¸Þ;ÖŠŠŽ¨Õ4¿åœãÎrÇnÚ{õÑ©éf©~?Å%%,ƒÏ…¹âáȢʡm¸XA)÷Oœ§ç3@U[Ž“«702­Òž‡®aðòèê¿8÷LýY¸ó™uâ™8‡· z(Äíž6J53‹Äã0U,3<¡P¦%™†gæ¨0Iꛈ’5CÇ`#Òí[®Î…a†¢›@¶»J¦Rz‚ÞÿT}òs”Ä&“#É’eeø×/LÀ–PƒÄ¸uè®/D2Áç”{‰ŒÀ¸¬^¥3(J”ŽÍ×7€î€Ðþ×ï±OÂ<lÈ–FâBœÎ+bÁÐÝB˾$Kºpã°ùù…d†&ãqŽç»ÜîCÑådÉm=¨T44©’#Á»KRf³–¬â<${êõZy1…Öcðîh˨oíþŸ+EÝ›öÁî“¥ÏÎÛ.JŸ0›Ú >ê6ϯƒJñ@#wdz `j ‘;k5 0@¦†Q€„2 Y92« ÙV™¤ÃJjðõõe, Cj\·n””Ô¥K—ð\7 †  pjøÝ/¶yãð°!#°løsêÄ .n®çOŸ~M #85pò2üuf~@&€}w`ßšƒûó?ŒoÞ|õ†ÑmÑþýc¬ƒØ ÀüÊvÀ|ê–ÿ÷*ÿÃ0Âú˜L ”„:Ð(Ð*&°Õ`[€$Ä  ½ÿÁ£“ÿÁ–‚–t€¤ˆ¤HJ‰´à4äÂÈ ¢ÏÀÎÁpîÃÛg¿‰|Ø`, Å& Ñ'`°°‚†>?½Is PêÏoðžß Œ JO@ÀÈæk K2|~â~û²ñ€,úþ4Êt•¨4Ãëg@ÄZÕ Ë‚F»€.p‹cg8¼‘áÚ ª…Å(гcxp•AÓ4â Ñç%?»šž`e‡#éåC721ȹ} È#H«€†êàòQ.ai†[gAÉNA ä`…ðáh`ðæYm+И·”@ ÿÀ´ ,”DAIFP ” 8ÀiyP³hàÿ?(¾} ó³€g(¾ Nÿ šIaeM‘|zšà lÉhV <.).Ëðæ×w u@ó @)nPQ,z¸ø@5¨ó@,ÿþ3üzL# ÏîƒÊf³Õ œ ÏR# F <¹ËÀÀÌðð&Ãï+  Ðl(¨ ý4© vYe‚õÓ +7%ù?Ên¸{x_”åÕ™î\5?‚§~üåö/Þ½•Lß2¼zôç¿.@1.\¸ðý‡?™A•Öÿï_þþùË™9m6Ró°.ø [© V¤[÷ÔV€ÌõÀž‘â±AÈŠ_`瀅f2ØôÔÏ?¸88A‹Tþþebc@,7oÞTVVæjÖgÜœ e<æî 8—jÐ022BŽA…\®ÇÊÊzåÊ€´¸È¬¬UJÁIEND®B`‚suite3270-4.1/Webpage/x3270_main.png000066400000000000000000000224501413735575200167110ustar00rootroot00000000000000‰PNG  IHDRÞ£”¢…Š IDATxœíÝOÏ$GyðžÝE‹1‰à¶’-%‚PB$N ٗظ‘Ül,rÉëOÀg@^É’±-øìŠÃî!'$ þ(ÆÎáÂ! $´kïä0¦ÓÛjª«{ºŸ™ùýd­çíꪮ®îéz¦ª§§ªÂØTUµÝn×®°„çž{îùçŸ_»ýž{î¹k×®]Ùýñæ›o®[`ÿþïÿ¾vRÞ Mv'ù—YUÕþð‡»wï&òÜwß}—.]ªªê—¿üåákÌlÔÄã?~ãÆƒ®ßŒ–î Mªªzá…¾þõ¯ÿö·¿ÝýùÀ<ðÀ?úÑšEüã?þã—¿üå¿û»¿3Gêúõë™k>þøã ¬_»'4ùãÿøõ¯ýòåËO=õTUU—.]ºsçÎûßÿþüãW¯^½sçÎåË—¿ÿýï߸qãÅ_üЇ>ôoÿöo™[¢Ù{ÓÉ7šÆ¡×ß¹'4y÷ÝwûÛß>õÔSûØÇêå—.]z÷Ýw/_¾|÷îÝÍfóÅ/~ñå—_¾sçNÕwÿì'>ñ‰ªª~ñ‹_´¶–ôzñÅw/þùŸÿ9±°^2´¼™=gÍÔÝòúE¦ÌŒc‹+oo9sÀQûÍo~jýª;¡3Jo®ív»Ùl~þóŸïþüä'?™Sþ7¿ùͯ}ík»×/¾øâîuïÂzÉn…]ɽkæl¢ék_ûZ]ϱ ²[¿YBbµ2sMŸeV€s°kµþC=Ô›ôöÛo•ÿÐC5S[¶\Úýo»ÝÖÕåË—7›Íf³¹{÷î•+WîܹsõêÕwÞyçòåË»Ô:ó¶£^þÉ?Ù-l®³‹'Z~õ«_m²{Ñ»°™±^¡™Ú[±½¥5+¶Kýæ7¿Ù¬êîu½¤™T—ÖJm•Ð]­µõÖúÍzó¶^U¸Y«êOñ\7o·JéZe6¡´â€ÛIݸ¡wa"éöíÛ»P桇Ú•Ùü³·œžQ“;wî¼ñÆo¿ýö¥K—zè¡_ÿú×—/_þèG?úßÿýß·oßþÀ>P¯¹i¹qãÆã?~ýúõæ ºÍòŸ}öÙ—^zéÙgŸ­ªêå—_~öÙgëÔ—_~y·B«íZ«ÕšK†^w •ÖÌX×°~Q¿~饗Z{Ñ̘.a»Ýön}·°•±^¸ÛbwõëÞìÝ:<ûì³Í­·ò63æÔ*¿q«5ù«¿ú«záo¼±wýæ:»¼½0» b·ÂÃ?ÜÜÄЀMOhrõêÕ«W¯>ðÀ¿úÕ¯>õ©O}øÃþÿøßýîwÿû¿ÿûÑ~´y×HþWƒZ=ñ3Ï<³‹Bžyæ™fÒ3ÏýôÓ½«µ6ÿ¼{÷¾ZÿùôÓOï-­UH«´)/¯›šNòôÓO¿òÊ+O?ýtk_2³w_ì ¬­Ô´·å3[€˜Šgmºëä•(¿jš|àø—ù—^xá…^ÊðÿðW¯^½ÿþû«ªúÉO~ÒJý›¿ù›êO!KóßÖè×^{í+_ùJUU¯¾úêîE½¤YŸÝ½#Ý?·ÛíØÒZ…$Æ0ƾh¾þÊW¾RïrSs÷_{íµt!õëzɨìÝ­cÑÛ C 3[€˜–5ùìg?Û\ø·û·õØGW{BçßøÆÃ?üéOz(Ã?øÁGyäûßÿþ¿øÅÞ¾g‹üøÇ?®7_ÝÛK}ë[ßzê©§vKžzê©×^{m÷•t‡×Ô,¡›e(Wbyw…ºV½•)M¶Ûms—÷Ö÷â[ßúVsa]ÂÞù¬œbטÝõ[K†Všµzã_ÿõ_» ë·¢¡\·oßþÜç>×ÜÄîÏÏ~ö³Í-6õÜkòàƒ~þóŸOíGUÝÿý·oßê{^ýõ:éõ×_ÿÌg>“#v>ùä“»¸ªª'Ÿ|²Ù#Ö«=ùä“C% eo*­[l]`³´YB“ºð'Ÿ|òÛßþö®­úïR›uøö·¿hÃÞìCuh¥v÷t¨V­õó€° ¾<<*éÎ;7oÞ|ì±ÇnÞ¼¹[¡õg×{¿<üúë¯WUõ™Ï|æÇ?þñOúÓwÞy§ªª+W®Üwß}ÿó?ÿ³[õþûï¿sçÎo~ó›|ðCúÐç>÷9Oƒ€ãòï|çâââÍ7ß¼~ýúóÏ?ÿƒü ±òÝ»ww«íÛz¸õw¿¡síÚµÿÿåáÝÜŸüä'ï¾ûî#Àñõ#| ¬¿sOhòÆoܸqãÊ•+ÛíöÝwß­ªj³Ù¼ï}ï«g~ÿûßùË_þüç?ÿðÃÿÙŸýÙþçlˆ ÿø–YçžÐäK_úÒ¾ð…t†ûî»ïÒ¥ÿ†lÁ&€u=þøã­ßû]wý¦÷B“ÿú¯ÿº~ýúw¿ûݲR€cqíÚµµ«Ðãââb÷âJséÿøÇ5*œµ÷¿ÿýõëK+Ö åJwÑ?ýÓ?-_à }ï{ßk-1j"4é™ÐNÉc=¶vÚnÞ¼9”$4€Ó—–—•Lè5€#Ö5:RFhÇê±ÇkÅ"Ý%CçªÃnséGL‹Nè<6 NZ²2ZuÎY¹ûfQG!;éæÍ›™=Î.ïô›ÖË[/FYaÔäHÇšêC^ýé$Èß‘#ÝeâköG£ú¦zh`â¿­{_Œ²òm°½Ã £'–ÑŒKª{¯z~Z/º#(½c*­]ØœŒyGMn&ªX¸oèÔA@ÎÜUÍQµªÄ4W«ö®U‘¶ëÊï/f5™Ë :õžœÒ4Çô}é-a¯œRCP`(¨C„Þ›?׳4«Z¶•FMr†wÌb4ÇKμ)¨²ïE`â‡ê _ØÐ«¨o´ug§g×ôþ[VÚÄúôÞ±Ðz]6Oî^“¦8­>Z7”TÉc\|Òt·ÀÙŠKŠ»‰Äw}s^Œ*p”p£&»†x?JºbuÜÚ¼v·~3¤Íß»°íÀ*æ5©’ßõõ¢î¡댲hhÒí_{¿É¶NW¬xï†Rö«˜÷;2õ„ÀÄÍÒz×+ܨ Еèæ'Þn2ñÅ\õ©½š<ñÄS gÞ›/70?½ä+UUm6›·ÞzëÚµksTéì˜vàÐΪ¯¹TUÕv»]»Uå^8AÆ‘Ch'î¸æƒB?r 87B ž ï}ï{Ë× 2j„rϨÉK/½´V=€³Õ|î«Q ¡ ˆÐDh"4‰ô ú[ú•ÁG7ƒIÝÔD®]jïr ¤ÒÐäÖ½?V\wÿÝP ^’HJ¼Nÿ™ÈÕ­dºæ@E¡I:ÈÈÌØ ZÙݤšœ\ujot’ˆ{€UÍt¯IÝ»·¢Þè¡»<§äâ*í]­7|ÖPšìºó²½5¶Ñ²·ÌÞ¼b 8¥£&nVo8Ää‹ ˆdÚ7têè¤÷ž¡^? $’1ÄØØ"ñ}`U“¿<¼÷fÕYÌ[¾p¢*šÐÙ;“¾¡dhýfù9_¢IçŽPѨI÷.“é1A³ÌV\R ?Œd(pœJ'töÆÝö.{cJÎ 9ÕÂð:@ B ¡ H¤_>U³ß¨[öÍ„’øòGKæõ<ÝÝ|uöó,øËÃé\]õSIe¿28$§À±KÒ¿¨Ü”߆?Ñ p>r¾Cšùcõ{{¢b‰‹yYɉ«¢_t™½ÀQ¶Ûí[o½uqq‘›¡[¡ÖóEö¾ž²¤™Ô*bKuKèý³»p¨‰ÝI'Í[ À¹Éé}†.’ \NG]ÌsÊÉé—sJž½Àlu(2÷/Wc~^xƧ¡Ì5Bøa z½u™^µ~¢à´ =Ÿ3ì/Ïï>‘îý¼={¦Ç9Ì/÷> vÊïï­ÌÐx]ÁæzOÖîh[ot’ÿ‹Êem˜(0]aªŒ‹yq±eåôöÍÿö~ZÞ[`~Mæ-p‚i\Ûÿ•åj¶Ë2ÝíØío¥òsÊÇ`ùž¨ÞVúÄYë5ðËóç*~ ì”†îÆª{#ÇÄæÒIC­QV`°3 –²a€ÝŸP1}‘Pàd+ýòðá fÔŠNwsòŒ­¼IV·ð7Mæuêã%;‡ùåásMqˆ[[Fº÷ªš¶Øý€j‘kãØî&}1o•œøoAC…ÏRàLüåá²\ÕÀ]BÇ¢¹×{o¤R`ïW¹Ž¨¡æÒºÎr%œ½'J_Ì{·²wRiì.Ï^àŒF?×`>x® À„&@ B ¿<|x+ÞF@d½SëÊï>rê:ö©§ó˜¡(4I4ܨ¤Ä¢º_‹meé8WÓŒÝVºò‰×]mC€3±·wºÎ]E'† C†¾o\\ræSíó{‡Ù ÌWþ Þßš)XùVÆo÷–ÜÊ5—QÛJT>g/–lC€³2örš1Ÿ®÷‰S¶•_`æ&f/0)ä7têïO_‰ŸAš]÷A±+?‹ Õ8RK^EÓ¿7r+ã—‡3 œý!ú‡ï_"ÝkÒû#FSÜÿû>ù%·ŠMW~±Xaö68+eWÑ»›½Só·µ@“ 4IÜsìÏ*]ì†ÖnC€ctÈ»>SæýÀ9{q˜ÃMµÜû;vóîáìí•þ!ƒ½;^°¡¡¤ÅÚàÜô^E÷>Ó}1³oD/ÙYã^“%o 9Õwaõ pDŽd¼dg¥Û`ѳöΟ¨ÿÎ<$ò—E'A,ÙÝl+ÝûÌ^àd¾×dghiìW«»_¤®pÿǼÛ*ûåÆC´!;_Ãɼ,O7û …½ßžRììöòËÃÀŠB>×@h„"4‰ô4XX]}[Ü1Þ_|Ô•?„ÄèeIé­4 ý8hÎ|ŽÚb⑌³$Á¦…&Ý÷pïל†Þ™ïÒD®‚_‰œx—uïE?q£rúæ¡‹`YC Õ0sIÁ¶FI”Ye"iâ÷'v5p”5T±üÊ}§ åµÅ;Ø:@­.H’¾ •¿÷22d–}ÉL‚~C§õöë.ÌO*[r«èW"s6‘ÎÛZÉ]N,I×0]çÌC9Qú ä·jfù+÷®–߆ Wµ÷`í­RÁÖ§¿Szse¾‰ 6šY‡íòØm•m¨¬ò‡Þe˜ÃßÐiEÖeQöôØüÑ%²ùq'ýîñ‰õ£r%j˜¨ó,‡rº O«w¿Ûqj8tÎ'*¿¤Ä•ÿ&:Reï¦üËWÙµeö+XQhRì.F³_–yìX÷ŠSïHb¿Êv¹,W¢†CKº¹ÆnqÞ£¿» RÃeÎù2‰Ší=EçU¿†ª4ûPÍÞƒÒ»ÂÄ÷`ÁDXY,hÙÛ`‡æË¡yqɼ“£Xb¿Êvù@ 5¶KK´a™½ÎXÃÙr]Î2¡pk£«R2ÍÃ4Ë!K·Æ¼qINË‹K8]k|C§þ´4co‘¹°™4ö}¸÷ƒTb¿Êvyl®œz£>ª¦·[6r–³Î,5<\¼ÀØIbö6\lÌ©w„fhþ«kì%el}öÚ»²¸„“V4¡3ýÒüèfý±ñ±ØÕ¹þ/±ÎÐäNÁ.Ê•Sêê¹dG3ã%ò@;xVñ±ÁbbåÌSôÄÌÞë‹K8u¥·Á¶.@9W®˜]àôZbÆzI‡²^3à1íŠ~—)ÑÉ*ß­CÝõ–%—Àx&tšoã¡÷vfRæVòsU}ÄYnn*¡wC{+«ï«Å»\¬÷PVÙm˜o­zƒÈ”ãÕ{,)¿ò£ÚpèŒJHʲÓ&Q‡²¤õñmmâΞëòËÃÀŠüò0”ÐDh"4šM€@„&@ B Ò§Á&ž(I’$I’$I’”ŸÔåi°ÀŠ< Jh"4šM€@„&@ B ¡ ˆÐDh"4šM€@„&@ B ¡ ˆÐDh"4šM€@„&@ WÖ®·ív»ÙlÒKzsuæäÚ»NÎF3 iU2'×’­Q¦x[­”šÀ:îÛš!Bf¸Pdt7”Y½ÅZcT#ÔŠ[(`BN_«=hŸºÙlv‰Î(#4·|ˆ°‹NÄ%@:0±qs²C/®5€šÐÖqÚðؽ;íÖF1¡'®¾ùà(M`»Ùœ°@«naë P™Ð‰š·|Žºý³<]#3Wuot’“¥itÎ¥x¿–±pkÀ™šÀTßË-ëØ&v‡ ÜÿÑÍ’ÝÐtLèM€@„&@ B ¡ ˆÐDh"4šM€@„&@ B ¡ ˆÐDh"4šM€@„&@ B +kW€ ¶Ûmwáf³)N böý’4=é iyIÍ$âšÐ/ñ^-K böý’4=é iyIÄdBĨ ýNu°4Èб¤fÒ Òò’šIÄ!4¡ß©–:–tæ‚´¼$b2¡"4šM€@„&@ B ¡ ˆÐDhâi°§/ÈC ƒ<::È~Ij&-)H ƒ´¼¤fqMN_‡@yttý’´– 5 Òò’ˆÉ„ˆQ“Ód°4Èký’ÔLZRiyIÍ$âšœ¾ ƒ¥A†Xƒì—¤µ©a–—DL&t€@„&@ B ¡ ˆÐDh"4šM€@< öDÄfsü¡¡2-ÙgØòÎCV$49ñŸÙ¿†Ah¨LK¶Æ¶¼ó™Ð1jr"â¾Æ¯a*“ ƒr²"¡É‰ˆ?ú¿†Ah¨L&tÊyÈŠLèM€@„&@ B ¡ ˆÐDh"4šxì1™ýÑѧštÔ´FSüÖÐò™IOhrLftô©&5­Ñ¿5´|fä3¡bÔ䘙.‰ŸtÔ´FSüÖÐò™IOhrL‚L—ÄO:jZ£)~khùÌ$ÈgBDh"4šM€@„&@ B ¡ ˆÐÄÓ`à ò¬÷SMŠï w¹ŒÓæ ´!+š„äYï§šßîr§ÍAiCVdBĨI8A&>N5)¾3Üå2N›ƒÒ†¬HhN‰SMŠï w¹ŒÓæ ´!+2¡"4šM€@„&@ B ¡ ˆÐDhâi°áx>tÓ¶ÆîrÂ컼dóõAq²"¡I8žÝt†­q†»œ0û./Ù¼G}Pœ‡¬È„ˆQ“pŒ£6akœá.'˜ÐY‹ó MÂ1ŽÚt†­q†»œ`Bg-ÎCVdBDh"4šM€@„&@ B ¡ ˆÐÄÓ`Ãñ|è¦3l3Üå„ »¤Kr²"¡I8žÝt†­q†»œd—ƒTcIÎCVdBĨI8ÆQ›Î°5Îp—‚ìrj,ÉyÈŠ„&áGm:ÃÖ8Ã]N²ËAª±$ç!+2¡"4šM€@„&@ B ¡ ˆÐDhâi°áx>tÓ¶Æîr™Ùª¬ Oõ 8Y‘Ð$χn:ÃÖ8Ã].3{C•µá©ç!+2¡bÔ$ã¨MgØg¸ËeLè”ó MÂ1ŽÚt†­q†»\Æ„ÎA9Y‘  ¡ ˆÐDh"4šM€@„&@ B ¡ ˆÐDh"4šM€@„&@ B ¡ ˆÐDh"4šM€@„&@ B ¡ ˆÐDh"4šM€@„&@ B ¡ ˆÐˆb»ÝN\aJ®²ÂOè}ŸØPK¶ó2Û:–3çXêYUÕ•µ+DÔºŠm6›6ºÌV–·Ýn[»ÖÛIÔëìR»­‘ε·£Ö¢·éŽk†,ÿ;¢všýš²“é–·kºV6£¡®·›”È•S‡²¼«;º ç8ákB`¿fçÚ|Q§Ök6? ¦ƒ›ü«óÐ@ôжҹ††ZËïEê5»ÑÉb†¢¢œŒC¹c0éƒR Ñt95l A¥Ïº½gïÞÁ§â£<êMÔ­Æ\ﯜj¤“f!4ÆÙuUße±¸ Oê9ÒÛÊ•6ïÐB7&8¢OÆéæM4Ô!Ûz›.§†£*(0qÎ'JØ»GÕ@l7±£$â•ÄêÐCªnƒöK÷@9¦úª:T`ævsL¿V¶j»¤Ý¦%ˆY¬¡V<"Í:ô¾Þ{È6›MÙNõVcÉ÷Wk[FM€åúê3Ýê}Õ^e“JeÝ̨Êî€î t;ò)Ûš7ø›2Ó> rb'ª‘õ™…Ðè7ûE§–Ÿqœz!™*þ|ÙüsÔÔÒ¼mUWæ ã1Ý¡þyË_àóz™)Gª{\¦D9‹½¿z:™Ðâ*ñžØ)öN`íÊ\lªe®>æ S!Ç2ñÔÒššnTAÆEÊ¡b_Œš³Ùû¡¶ »ºöu—wï9ÍßÊNúûËÜÇÚ¬ù’ÑIïM»Í?[+÷.ïs™~[F¯ô εéûÚÔô!™ü㕨|Ù~­ÀPMrªá^`9c¹ËòŽ]žY“±ë\ô –´öv6Ó§–ÆVcbQ£VH¯Ü{è¨m%J(;±GUiÆmÍ•·à@:@7¡°ßŠ3Ç8cSMö8Ò;*àH Mö—À’„&@ B ¡ ˆÐDhRúȵ[÷>XðÑ$I’$I’$IRIR×v»}ë­·...R+ÆÅÅEŠ˜ÐšM€@„&@ B ¡ HésMØk;œäGL`€ÐäzCDÈgoRh²Ýn7›þ€íö½¸»BoR½°•ÔÝD½$Ô­ÒPU™Qâ TÉ£Ü-jèPvËï.Ú‡–Óò½×DÆ‚‹C:WkÓ{³ +MvW¡«ÌÐå£7)}‰Ù[‡îòÄÅ‹µ¤râ0¥ÏÞ“°µÐi°¤¡÷{sIâ²ÐZRvqu²ÕIN¢ð6ØÖ›¹7i'qšþ¶ïn#²Øußy²–VË'®ÝŒIórÚÀZJB“Þ­½I‰\sqù8»#å`­Äu#qn8mà Âm°CóJD34D_Ý;Í?t7Io*‘å¿1çF"iìVêõ»åq†&Ñ>Ä;9"õÁÊœÝÛÛ3J~”ÙÕ{nìMËÁ†&‰oI$nM=èµ@trD úccÇbÔÍCë” ŸŒ­§3 bšÿi°Ýßr’–˜½.Kb¯éMW}ö~_à G¢U÷6xý•Ÿ‚í¦3:m`-¹×¤uƒÛÞ¤î"'‰€Še÷Ú9ö¶Ë8´0Qq”6Í“¡ubä_7š6DIh24К^’N*ø®à”j”}5qô¥*ñI©7is$II³ÊDR7ØU`Áó‹m r¼<Šåô#’sb¤«å´³w ßЉ«÷Š´NJä •D¦ ÇË ¡É!™_€‘„&ãC'Œ7ÿ7tö»µø`ÂŒ[Ê™m˜¹dháÞj8hÎr²M|ëeV5]½âm%w¢„QIckR|y™òÞZ˜Ó™˜~ô» géS† œ½O)î‰ò ÉÙýÙ¯Qû\\\Ô;`P=ãIDAT¡Hé¨ÉÂÁTæha­7ÍÙJ3㨖©ak‹ÝB–©ÆôÊ5v¿f?”­3[`ù†JÛ†­¼ÓO¶ÄA™r¼››WfœQ¶Ý±§J¨SëÖðàMf\ªeÊÛ¡[Ô¼'ö!ÞCBH aî59|D–µ­zÔk®\r¿hJÊ %H5fWöþšý­—PÖò³Ï —0Ô¬uMĬ§dÉ»,×ì'Àzר0Ï5YòlNo«ž†ŒùÑ|C‡²ì ÔeœiÅï¯yßz{ë°ºâj „CÎxÒîÝÖ©J U8±ÇæÚ[Ãëå5žk²€G‡oOh}8hÀ8½üY®5eÕ8tãL·ä¡L˜¸é[aÕ0ËÉ–8(AŽ×ÛJõúäƒ1GôÌ~bKOtÈ Ô÷šìL9Ÿº­s¸N7±­VÒ!êІ«Î’_½ô~e6Twúsƶ:t˧›}lKN¹²5à¨jŒÚÐÓO¶*ïýuˆÊ9ÄÕ&q=œ÷RÙ*'ñ–ìn¨xìäƒ.½fÜÊ󺶳ŸØ³äª²Ûs±kÔX£¿¡ÃZ|š<«™8ÙNŒJlÍoèœè„µÅnåLãD g,Ìm°@M/ÂŒÄ%£&GÅõ…Å8ÙN†CɱšM€@„&@ B ¡ ˆÐDh"4šM€@„&@ B ¡ ˆÐDh%4Ùn·kWX_”Ðd³ÙˆN€+yzcˆÍfSœT¿Þn·Í%À¹) MÑCYRsÑ œ³(:53;pÎMèÔ…5€³kBG\g.Ð„Ž¸ˆšˆK€*Nh".ª8¡ @%4BšM€@:Ï5¹åI¬À‚½ç«0ÐäQß”VcB¤äAõUuï¼O=Ð’˜ 2d( MÝT·¶ïõ ÎDýYÔõ?ŽÄAéPh¦Ž=Žé ·ÀîøÅÀFB㧤·#i]ê[I­«}sIâuWý!6?©·ð¡%ì ”œ?gÜV¢ÀÌÕR£&CqP÷Og @p͡‰¬yño­Ö,$Ñ]UÉÎ"? ¢Wâ ¤ƒ¹]jNÃØ{í-0Y«¼Û`Pæ.\ëz^ÿ¹î@Ej¯t£e6i~ã笶¯´ŒÐDäpö«t×_Fº4M®—¥ìÈȵï6Ø¡‘™:†­Lè³ÅnhM܉™¸ë…Í—˘fJ†&‰œÎ€Ó0× "ùJÒéL·÷¶’QÒY¦”äHXƨIý"q—5Çnõy“Õ+pÂ"Œ—dK†&½¡t:"àHevEéïõL$:)“ÿe«L鬂`L•J¹Àéý’Kó®ÁjÌø|óÄü\™OÜ”:(­£Ü]a¨´‚mefÙ—+/4qе¡ ýî—wFm®l[£ÊaìQµÎ¨,Å5©ª*š˜7š”…¥‚Y`š¼§Á,âžQ“‹‹‹µêPÕ¡É#<òüóÏÍüÜsÏäNÕôØà½ÐäÆÅELÉ œž)±{M€@„&@ B Må‹9@ ×®][» ÿq-™E×¢"nIEND®B`‚suite3270-4.1/b3270/000077500000000000000000000000001413735575200135745ustar00rootroot00000000000000suite3270-4.1/b3270/.gitignore000066400000000000000000000000241413735575200155600ustar00rootroot00000000000000conf.h Makefile.obj suite3270-4.1/b3270/Makefile.aux000066400000000000000000000042741413735575200160370ustar00rootroot00000000000000# Copyright (c) 1995-2011, 2013-2017, 2020 Paul Mattes. # All rights reserved. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # * Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # * Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in the # documentation and/or other materials provided with the distribution. # * Neither the name of Paul Mattes nor his contributors may be used # to endorse or promote products derived from this software without # specific prior written permission. # # THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS OR # IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES # OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN # NO EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, # SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED # TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR # PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF # LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING # NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS # SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. # Auxiliary makefile for b3270 PRODUCT=b3270 all: @echo "Must pick a specific make target." # Development tools. MISC = $(PRODUCT).man Makefile.in conf.h.in configure configure.in \ version.txt HTML = html/$(PRODUCT)-man.html html/x3270.xbm FILES = $(SOURCES) $(HEADERS) $(MISC) $(HTML) src.tgz: prepare $(FILES) prepare: configure configure: configure.in autoconf MANDEP = man.m4 html.m4 m4man Makefile.aux version.txt MKMAN = ./m4man -t man -p $(PRODUCT) MKHTML = ./m4man -t html -p $(PRODUCT) man: $(PRODUCT).man $(HTML) $(PRODUCT).man: x3270.man.m4 $(MANDEP) $(MKMAN) -n $(PRODUCT) -o $@ x3270.man.m4 html/$(PRODUCT)-man.html: x3270.man.m4 $(MANDEP) $(MKHTML) -n $(PRODUCT) -o $@ x3270.man.m4 suite3270-4.1/b3270/Makefile.in000066400000000000000000000043411413735575200156430ustar00rootroot00000000000000# Copyright (c) 2016 Paul Mattes. # All rights reserved. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # * Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # * Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in the # documentation and/or other materials provided with the distribution. # * Neither the name of Paul Mattes nor his contributors may be used # to endorse or promote products derived from this software without # specific prior written permission. # # THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS OR # IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES # OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN # NO EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, # SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED # TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR # PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF # LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING # NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS # SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. # VPATH-based Makefile for b3270 top = ../../.. objdir = ../obj/@host@/b3270 this = $(top)/b3270 export VPATH = $(this):$(top)/Common/b3270:$(top)/Common export TOP = $(top) export THIS = $(this) MAKEINC = -I$(this) -I$(top)/Common -I$(top)/Common/b3270 all: $(objdir) cd $(objdir) && $(MAKE) $(MAKEINC) -f $(this)/Makefile.obj $@ install: $(objdir) cd $(objdir) && $(MAKE) $(MAKEINC) -f $(this)/Makefile.obj $@ install.man: $(objdir) cd $(objdir) && $(MAKE) $(MAKEINC) -f $(this)/Makefile.obj $@ clean: $(objdir) cd $(objdir) && $(MAKE) $(MAKEINC) -f $(this)/Makefile.obj $@ clobber: $(objdir) cd $(objdir) && $(MAKE) $(MAKEINC) -f $(this)/Makefile.obj $@ depend: $(objdir) cd $(objdir) && $(MAKE) $(MAKEINC) -f $(this)/Makefile.obj $@ $(objdir): mkdir -p $(objdir) suite3270-4.1/b3270/Makefile.obj.in000066400000000000000000000063311413735575200164150ustar00rootroot00000000000000# Copyright (c) 1999-2009, 2013-2018, 2020 Paul Mattes. # All rights reserved. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # * Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # * Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in the # documentation and/or other materials provided with the distribution. # * Neither the name of Paul Mattes nor his contributors may be used # to endorse or promote products derived from this software without # specific prior written permission. # # THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS OR # IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES # OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN # NO EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, # SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED # TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR # PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF # LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING # NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS # SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. # Makefile for b3270 (backend for scripted 3270 emulator) RM = rm -f CC = @CC@ all: b3270 x3270if HOST = @host@ include b3270_files.mk libs.mk VOBJS = $(B3270_OBJECTS) fallbacks.o OBJS1 = $(VOBJS) version.o LIBDIR = @libdir@ prefix = @prefix@ exec_prefix = @exec_prefix@ sysconfdir = @sysconfdir@ datarootdir = @datarootdir@ LIBX3270DIR = @LIBX3270DIR@ MANDIR = @mandir@ BINDIR = @bindir@ INSTALL = @INSTALL@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_DATA = @INSTALL_DATA@ CCOPTIONS = @CCOPTIONS@ XCPPFLAGS = -I$(THIS) -I$(TOP)/include -I$(TOP)/Common/b3270 -DLIBX3270DIR=\"$(LIBX3270DIR)\" @CPPFLAGS@ CFLAGS = $(CCOPTIONS) $(CDEBUGFLAGS) $(XCPPFLAGS) @CFLAGS@ LDFLAGS = @LDFLAGS@ LIBS = @LIBS@ XVERSION = xversion.c version.o: mkversion.sh $(VOBJS) version.txt $(RM) $(XVERSION) sh $< b3270 $(filter %.txt,$^) >$(XVERSION) $(CC) $(CFLAGS) -c -o $@ $(XVERSION) $(RM) $(XVERSION) FALLBACKS = fb-common fb-printSession fallbacks.c: mkfb $(FALLBACKS) $(RM) $@ ./mkfb -c -o $@ $(filter-out mkfb,$^) mkfb: mkfb.c $(CC) $(CFLAGS) $(LDFLAGS) -o $@ $(filter %.c,$^) b3270: $(OBJS1) $(DEP3270) $(DEP3270I) $(DEP32XX) $(DEP3270STUBS) $(CC) -o $@ $(OBJS1) $(LDFLAGS) $(LD3270) $(LD3270I) $(LD32XX) $(LD3270STUBS) $(LIBS) x3270if: ../x3270if/x3270if cp -p ../x3270if/x3270if $@ man:: b3270.man if [ ! -f $(notdir $^) ]; then cp $< $(notdir $^); fi install: b3270 [ -d $(DESTDIR)$(BINDIR) ] || \ mkdir -p $(DESTDIR)$(BINDIR) $(INSTALL_PROGRAM) b3270 $(DESTDIR)$(BINDIR)/b3270 install.man: man [ -d $(DESTDIR)$(MANDIR)/man1 ] || \ mkdir -p $(DESTDIR)$(MANDIR)/man1 $(INSTALL_DATA) b3270.man $(DESTDIR)$(MANDIR)/man1/b3270.1 clean: $(RM) *.o mkfb clobber: clean $(RM) b3270 *.d # Include auto-generated dependencies. -include $(OBJS:.o=.d) mkfb.d suite3270-4.1/b3270/b3270.man000066400000000000000000000013301413735575200150230ustar00rootroot00000000000000'\" t .TH b3270 1 "30 October 2021" .SH "NAME" b3270 \- \s-1IBM\s+1 host access tool back end .SH "SYNOPSIS" \fBb3270\fP [\fIoptions\fP] .br \fBb3270\fP [\fIoptions\fP] \fIsession-file\fP.b3270 .SH "DESCRIPTION" \fBb3270\fP opens a telnet connection to an \s-1IBM\s+1 host, handling the 3270, TELNET and TLS protocols, allowing a front-end application handle user interactions. It uses XML on its standard input and standard output to communicate with the front end. It implements RFCs 2355 (TN3270E), 1576 (TN3270) and 1646 (LU name selection), and supports IND$FILE file transfer. .SH "WIKI" Primary documentation for b3270 is on the \fBx3270 Wiki\fP, https://x3270.miraheze.org/wiki/Main_Page. .SH "VERSION" b3270 4.1pre10 suite3270-4.1/b3270/conf.h.in000066400000000000000000000037551413735575200153110ustar00rootroot00000000000000/* * Copyright (c) 2000-2009, 2015, 2019 Paul Mattes. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of Paul Mattes nor his contributors may be used * to endorse or promote products derived from this software without * specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. */ /* * conf.h * System-specific #defines for libraries and library functions. * Automatically generated from conf.h.in by configure. */ /* Libraries. */ /* Header files. */ #undef HAVE_SYS_SELECT_H #undef HAVE_PTY_H #undef HAVE_LIBUTIL_H #undef HAVE_UTIL_H #undef HAVE_GETOPT_H /* Uncommon functions. */ #undef HAVE_VASPRINTF #undef HAVE_FSEEKO #undef HAVE_FORKPTY /* Configuration options. */ /* Optional parts. */ #undef X3270_LOCAL_PROCESS #undef X3270_IPV6 suite3270-4.1/b3270/configure000077500000000000000000004505001413735575200155070ustar00rootroot00000000000000#! /bin/sh # Guess values for system-dependent variables and create Makefiles. # Generated by GNU Autoconf 2.69 for b3270 4.0. # # # Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc. # # # This configure script is free software; the Free Software Foundation # gives unlimited permission to copy, distribute and modify it. ## -------------------- ## ## M4sh Initialization. ## ## -------------------- ## # Be more Bourne compatible DUALCASE=1; export DUALCASE # for MKS sh if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST else case `(set -o) 2>/dev/null` in #( *posix*) : set -o posix ;; #( *) : ;; esac fi as_nl=' ' export as_nl # Printing a long string crashes Solaris 7 /usr/bin/printf. as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo # Prefer a ksh shell builtin over an external printf program on Solaris, # but without wasting forks for bash or zsh. if test -z "$BASH_VERSION$ZSH_VERSION" \ && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then as_echo='print -r --' as_echo_n='print -rn --' elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then as_echo='printf %s\n' as_echo_n='printf %s' else if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' as_echo_n='/usr/ucb/echo -n' else as_echo_body='eval expr "X$1" : "X\\(.*\\)"' as_echo_n_body='eval arg=$1; case $arg in #( *"$as_nl"*) expr "X$arg" : "X\\(.*\\)$as_nl"; arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; esac; expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" ' export as_echo_n_body as_echo_n='sh -c $as_echo_n_body as_echo' fi export as_echo_body as_echo='sh -c $as_echo_body as_echo' fi # The user is always right. if test "${PATH_SEPARATOR+set}" != set; then PATH_SEPARATOR=: (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || PATH_SEPARATOR=';' } fi # IFS # We need space, tab and new line, in precisely that order. Quoting is # there to prevent editors from complaining about space-tab. # (If _AS_PATH_WALK were called with IFS unset, it would disable word # splitting by setting IFS to empty value.) IFS=" "" $as_nl" # Find who we are. Look in the path if we contain no directory separator. as_myself= case $0 in #(( *[\\/]* ) as_myself=$0 ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break done IFS=$as_save_IFS ;; esac # We did not find ourselves, most probably we were run as `sh COMMAND' # in which case we are not to be found in the path. if test "x$as_myself" = x; then as_myself=$0 fi if test ! -f "$as_myself"; then $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 exit 1 fi # Unset variables that we do not need and which cause bugs (e.g. in # pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" # suppresses any "Segmentation fault" message there. '((' could # trigger a bug in pdksh 5.2.14. for as_var in BASH_ENV ENV MAIL MAILPATH do eval test x\${$as_var+set} = xset \ && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : done PS1='$ ' PS2='> ' PS4='+ ' # NLS nuisances. LC_ALL=C export LC_ALL LANGUAGE=C export LANGUAGE # CDPATH. (unset CDPATH) >/dev/null 2>&1 && unset CDPATH # Use a proper internal environment variable to ensure we don't fall # into an infinite loop, continuously re-executing ourselves. if test x"${_as_can_reexec}" != xno && test "x$CONFIG_SHELL" != x; then _as_can_reexec=no; export _as_can_reexec; # We cannot yet assume a decent shell, so we have to provide a # neutralization value for shells without unset; and this also # works around shells that cannot unset nonexistent variables. # Preserve -v and -x to the replacement shell. BASH_ENV=/dev/null ENV=/dev/null (unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV case $- in # (((( *v*x* | *x*v* ) as_opts=-vx ;; *v* ) as_opts=-v ;; *x* ) as_opts=-x ;; * ) as_opts= ;; esac exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} # Admittedly, this is quite paranoid, since all the known shells bail # out after a failed `exec'. $as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2 as_fn_exit 255 fi # We don't want this to propagate to other subprocesses. { _as_can_reexec=; unset _as_can_reexec;} if test "x$CONFIG_SHELL" = x; then as_bourne_compatible="if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on \${1+\"\$@\"}, which # is contrary to our usage. Disable this feature. alias -g '\${1+\"\$@\"}'='\"\$@\"' setopt NO_GLOB_SUBST else case \`(set -o) 2>/dev/null\` in #( *posix*) : set -o posix ;; #( *) : ;; esac fi " as_required="as_fn_return () { (exit \$1); } as_fn_success () { as_fn_return 0; } as_fn_failure () { as_fn_return 1; } as_fn_ret_success () { return 0; } as_fn_ret_failure () { return 1; } exitcode=0 as_fn_success || { exitcode=1; echo as_fn_success failed.; } as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; } as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; } as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; } if ( set x; as_fn_ret_success y && test x = \"\$1\" ); then : else exitcode=1; echo positional parameters were not saved. fi test x\$exitcode = x0 || exit 1 test -x / || exit 1" as_suggested=" as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" && test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1 test \$(( 1 + 1 )) = 2 || exit 1" if (eval "$as_required") 2>/dev/null; then : as_have_required=yes else as_have_required=no fi if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null; then : else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR as_found=false for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. as_found=: case $as_dir in #( /*) for as_base in sh bash ksh sh5; do # Try only shells that exist, to save several forks. as_shell=$as_dir/$as_base if { test -f "$as_shell" || test -f "$as_shell.exe"; } && { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$as_shell"; } 2>/dev/null; then : CONFIG_SHELL=$as_shell as_have_required=yes if { $as_echo "$as_bourne_compatible""$as_suggested" | as_run=a "$as_shell"; } 2>/dev/null; then : break 2 fi fi done;; esac as_found=false done $as_found || { if { test -f "$SHELL" || test -f "$SHELL.exe"; } && { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$SHELL"; } 2>/dev/null; then : CONFIG_SHELL=$SHELL as_have_required=yes fi; } IFS=$as_save_IFS if test "x$CONFIG_SHELL" != x; then : export CONFIG_SHELL # We cannot yet assume a decent shell, so we have to provide a # neutralization value for shells without unset; and this also # works around shells that cannot unset nonexistent variables. # Preserve -v and -x to the replacement shell. BASH_ENV=/dev/null ENV=/dev/null (unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV case $- in # (((( *v*x* | *x*v* ) as_opts=-vx ;; *v* ) as_opts=-v ;; *x* ) as_opts=-x ;; * ) as_opts= ;; esac exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} # Admittedly, this is quite paranoid, since all the known shells bail # out after a failed `exec'. $as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2 exit 255 fi if test x$as_have_required = xno; then : $as_echo "$0: This script requires a shell more modern than all" $as_echo "$0: the shells that I found on your system." if test x${ZSH_VERSION+set} = xset ; then $as_echo "$0: In particular, zsh $ZSH_VERSION has bugs and should" $as_echo "$0: be upgraded to zsh 4.3.4 or later." else $as_echo "$0: Please tell bug-autoconf@gnu.org about your system, $0: including any error possibly output before this $0: message. Then install a modern shell, or manually run $0: the script under such a shell if you do have one." fi exit 1 fi fi fi SHELL=${CONFIG_SHELL-/bin/sh} export SHELL # Unset more variables known to interfere with behavior of common tools. CLICOLOR_FORCE= GREP_OPTIONS= unset CLICOLOR_FORCE GREP_OPTIONS ## --------------------- ## ## M4sh Shell Functions. ## ## --------------------- ## # as_fn_unset VAR # --------------- # Portably unset VAR. as_fn_unset () { { eval $1=; unset $1;} } as_unset=as_fn_unset # as_fn_set_status STATUS # ----------------------- # Set $? to STATUS, without forking. as_fn_set_status () { return $1 } # as_fn_set_status # as_fn_exit STATUS # ----------------- # Exit the shell with STATUS, even in a "trap 0" or "set -e" context. as_fn_exit () { set +e as_fn_set_status $1 exit $1 } # as_fn_exit # as_fn_mkdir_p # ------------- # Create "$as_dir" as a directory, including parents if necessary. as_fn_mkdir_p () { case $as_dir in #( -*) as_dir=./$as_dir;; esac test -d "$as_dir" || eval $as_mkdir_p || { as_dirs= while :; do case $as_dir in #( *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( *) as_qdir=$as_dir;; esac as_dirs="'$as_qdir' $as_dirs" as_dir=`$as_dirname -- "$as_dir" || $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_dir" : 'X\(//\)[^/]' \| \ X"$as_dir" : 'X\(//\)$' \| \ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$as_dir" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` test -d "$as_dir" && break done test -z "$as_dirs" || eval "mkdir $as_dirs" } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" } # as_fn_mkdir_p # as_fn_executable_p FILE # ----------------------- # Test if FILE is an executable regular file. as_fn_executable_p () { test -f "$1" && test -x "$1" } # as_fn_executable_p # as_fn_append VAR VALUE # ---------------------- # Append the text in VALUE to the end of the definition contained in VAR. Take # advantage of any shell optimizations that allow amortized linear growth over # repeated appends, instead of the typical quadratic growth present in naive # implementations. if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : eval 'as_fn_append () { eval $1+=\$2 }' else as_fn_append () { eval $1=\$$1\$2 } fi # as_fn_append # as_fn_arith ARG... # ------------------ # Perform arithmetic evaluation on the ARGs, and store the result in the # global $as_val. Take advantage of shells that can avoid forks. The arguments # must be portable across $(()) and expr. if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : eval 'as_fn_arith () { as_val=$(( $* )) }' else as_fn_arith () { as_val=`expr "$@" || test $? -eq 1` } fi # as_fn_arith # as_fn_error STATUS ERROR [LINENO LOG_FD] # ---------------------------------------- # Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are # provided, also output the error to LOG_FD, referencing LINENO. Then exit the # script with STATUS, using 1 if that was 0. as_fn_error () { as_status=$1; test $as_status -eq 0 && as_status=1 if test "$4"; then as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 fi $as_echo "$as_me: error: $2" >&2 as_fn_exit $as_status } # as_fn_error if expr a : '\(a\)' >/dev/null 2>&1 && test "X`expr 00001 : '.*\(...\)'`" = X001; then as_expr=expr else as_expr=false fi if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then as_basename=basename else as_basename=false fi if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then as_dirname=dirname else as_dirname=false fi as_me=`$as_basename -- "$0" || $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ X"$0" : 'X\(//\)$' \| \ X"$0" : 'X\(/\)' \| . 2>/dev/null || $as_echo X/"$0" | sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/ q } /^X\/\(\/\/\)$/{ s//\1/ q } /^X\/\(\/\).*/{ s//\1/ q } s/.*/./; q'` # Avoid depending upon Character Ranges. as_cr_letters='abcdefghijklmnopqrstuvwxyz' as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' as_cr_Letters=$as_cr_letters$as_cr_LETTERS as_cr_digits='0123456789' as_cr_alnum=$as_cr_Letters$as_cr_digits as_lineno_1=$LINENO as_lineno_1a=$LINENO as_lineno_2=$LINENO as_lineno_2a=$LINENO eval 'test "x$as_lineno_1'$as_run'" != "x$as_lineno_2'$as_run'" && test "x`expr $as_lineno_1'$as_run' + 1`" = "x$as_lineno_2'$as_run'"' || { # Blame Lee E. McMahon (1931-1989) for sed's syntax. :-) sed -n ' p /[$]LINENO/= ' <$as_myself | sed ' s/[$]LINENO.*/&-/ t lineno b :lineno N :loop s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ t loop s/-\n.*// ' >$as_me.lineno && chmod +x "$as_me.lineno" || { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; } # If we had to re-execute with $CONFIG_SHELL, we're ensured to have # already done that, so ensure we don't try to do so again and fall # in an infinite loop. This has already happened in practice. _as_can_reexec=no; export _as_can_reexec # Don't try to exec as it changes $[0], causing all sort of problems # (the dirname of $[0] is not the place where we might find the # original and so on. Autoconf is especially sensitive to this). . "./$as_me.lineno" # Exit status is that of the last command. exit } ECHO_C= ECHO_N= ECHO_T= case `echo -n x` in #((((( -n*) case `echo 'xy\c'` in *c*) ECHO_T=' ';; # ECHO_T is single tab character. xy) ECHO_C='\c';; *) echo `echo ksh88 bug on AIX 6.1` > /dev/null ECHO_T=' ';; esac;; *) ECHO_N='-n';; esac rm -f conf$$ conf$$.exe conf$$.file if test -d conf$$.dir; then rm -f conf$$.dir/conf$$.file else rm -f conf$$.dir mkdir conf$$.dir 2>/dev/null fi if (echo >conf$$.file) 2>/dev/null; then if ln -s conf$$.file conf$$ 2>/dev/null; then as_ln_s='ln -s' # ... but there are two gotchas: # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. # In both cases, we have to default to `cp -pR'. ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || as_ln_s='cp -pR' elif ln conf$$.file conf$$ 2>/dev/null; then as_ln_s=ln else as_ln_s='cp -pR' fi else as_ln_s='cp -pR' fi rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file rmdir conf$$.dir 2>/dev/null if mkdir -p . 2>/dev/null; then as_mkdir_p='mkdir -p "$as_dir"' else test -d ./-p && rmdir ./-p as_mkdir_p=false fi as_test_x='test -x' as_executable_p=as_fn_executable_p # Sed expression to map a string onto a valid CPP name. as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" # Sed expression to map a string onto a valid variable name. as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" test -n "$DJDIR" || exec 7<&0 &1 # Name of the host. # hostname on some systems (SVR3.2, old GNU/Linux) returns a bogus exit status, # so uname gets run too. ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q` # # Initializations. # ac_default_prefix=/usr/local ac_clean_files= ac_config_libobj_dir=. LIBOBJS= cross_compiling=no subdirs= MFLAGS= MAKEFLAGS= # Identity of this package. PACKAGE_NAME='b3270' PACKAGE_TARNAME='b3270' PACKAGE_VERSION='4.0' PACKAGE_STRING='b3270 4.0' PACKAGE_BUGREPORT='' PACKAGE_URL='' # Factoring default headers for most tests. ac_includes_default="\ #include #ifdef HAVE_SYS_TYPES_H # include #endif #ifdef HAVE_SYS_STAT_H # include #endif #ifdef STDC_HEADERS # include # include #else # ifdef HAVE_STDLIB_H # include # endif #endif #ifdef HAVE_STRING_H # if !defined STDC_HEADERS && defined HAVE_MEMORY_H # include # endif # include #endif #ifdef HAVE_STRINGS_H # include #endif #ifdef HAVE_INTTYPES_H # include #endif #ifdef HAVE_STDINT_H # include #endif #ifdef HAVE_UNISTD_H # include #endif" ac_subst_vars='LTLIBOBJS LIBOBJS LIBX3270DIR EGREP GREP CPP CCOPTIONS HSOPTS host_os host_vendor host_cpu host build_os build_vendor build_cpu build OBJEXT EXEEXT ac_ct_CC CPPFLAGS LDFLAGS CFLAGS CC INSTALL_DATA INSTALL_SCRIPT INSTALL_PROGRAM target_alias host_alias build_alias LIBS ECHO_T ECHO_N ECHO_C DEFS mandir localedir libdir psdir pdfdir dvidir htmldir infodir docdir oldincludedir includedir runstatedir localstatedir sharedstatedir sysconfdir datadir datarootdir libexecdir sbindir bindir program_transform_name prefix exec_prefix PACKAGE_URL PACKAGE_BUGREPORT PACKAGE_STRING PACKAGE_VERSION PACKAGE_TARNAME PACKAGE_NAME PATH_SEPARATOR SHELL' ac_subst_files='' ac_user_opts=' enable_option_checking enable_dbcs enable_local_process enable_ipv6 ' ac_precious_vars='build_alias host_alias target_alias CC CFLAGS LDFLAGS LIBS CPPFLAGS CPP' # Initialize some variables set by options. ac_init_help= ac_init_version=false ac_unrecognized_opts= ac_unrecognized_sep= # The variables have the same names as the options, with # dashes changed to underlines. cache_file=/dev/null exec_prefix=NONE no_create= no_recursion= prefix=NONE program_prefix=NONE program_suffix=NONE program_transform_name=s,x,x, silent= site= srcdir= verbose= x_includes=NONE x_libraries=NONE # Installation directory options. # These are left unexpanded so users can "make install exec_prefix=/foo" # and all the variables that are supposed to be based on exec_prefix # by default will actually change. # Use braces instead of parens because sh, perl, etc. also accept them. # (The list follows the same order as the GNU Coding Standards.) bindir='${exec_prefix}/bin' sbindir='${exec_prefix}/sbin' libexecdir='${exec_prefix}/libexec' datarootdir='${prefix}/share' datadir='${datarootdir}' sysconfdir='${prefix}/etc' sharedstatedir='${prefix}/com' localstatedir='${prefix}/var' runstatedir='${localstatedir}/run' includedir='${prefix}/include' oldincludedir='/usr/include' docdir='${datarootdir}/doc/${PACKAGE_TARNAME}' infodir='${datarootdir}/info' htmldir='${docdir}' dvidir='${docdir}' pdfdir='${docdir}' psdir='${docdir}' libdir='${exec_prefix}/lib' localedir='${datarootdir}/locale' mandir='${datarootdir}/man' ac_prev= ac_dashdash= for ac_option do # If the previous option needs an argument, assign it. if test -n "$ac_prev"; then eval $ac_prev=\$ac_option ac_prev= continue fi case $ac_option in *=?*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;; *=) ac_optarg= ;; *) ac_optarg=yes ;; esac # Accept the important Cygnus configure options, so we can diagnose typos. case $ac_dashdash$ac_option in --) ac_dashdash=yes ;; -bindir | --bindir | --bindi | --bind | --bin | --bi) ac_prev=bindir ;; -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*) bindir=$ac_optarg ;; -build | --build | --buil | --bui | --bu) ac_prev=build_alias ;; -build=* | --build=* | --buil=* | --bui=* | --bu=*) build_alias=$ac_optarg ;; -cache-file | --cache-file | --cache-fil | --cache-fi \ | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) ac_prev=cache_file ;; -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) cache_file=$ac_optarg ;; --config-cache | -C) cache_file=config.cache ;; -datadir | --datadir | --datadi | --datad) ac_prev=datadir ;; -datadir=* | --datadir=* | --datadi=* | --datad=*) datadir=$ac_optarg ;; -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \ | --dataroo | --dataro | --datar) ac_prev=datarootdir ;; -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \ | --dataroot=* | --dataroo=* | --dataro=* | --datar=*) datarootdir=$ac_optarg ;; -disable-* | --disable-*) ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid feature name: $ac_useropt" ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "enable_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--disable-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval enable_$ac_useropt=no ;; -docdir | --docdir | --docdi | --doc | --do) ac_prev=docdir ;; -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*) docdir=$ac_optarg ;; -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv) ac_prev=dvidir ;; -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*) dvidir=$ac_optarg ;; -enable-* | --enable-*) ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid feature name: $ac_useropt" ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "enable_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--enable-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval enable_$ac_useropt=\$ac_optarg ;; -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ | --exec | --exe | --ex) ac_prev=exec_prefix ;; -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \ | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \ | --exec=* | --exe=* | --ex=*) exec_prefix=$ac_optarg ;; -gas | --gas | --ga | --g) # Obsolete; use --with-gas. with_gas=yes ;; -help | --help | --hel | --he | -h) ac_init_help=long ;; -help=r* | --help=r* | --hel=r* | --he=r* | -hr*) ac_init_help=recursive ;; -help=s* | --help=s* | --hel=s* | --he=s* | -hs*) ac_init_help=short ;; -host | --host | --hos | --ho) ac_prev=host_alias ;; -host=* | --host=* | --hos=* | --ho=*) host_alias=$ac_optarg ;; -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht) ac_prev=htmldir ;; -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \ | --ht=*) htmldir=$ac_optarg ;; -includedir | --includedir | --includedi | --included | --include \ | --includ | --inclu | --incl | --inc) ac_prev=includedir ;; -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \ | --includ=* | --inclu=* | --incl=* | --inc=*) includedir=$ac_optarg ;; -infodir | --infodir | --infodi | --infod | --info | --inf) ac_prev=infodir ;; -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*) infodir=$ac_optarg ;; -libdir | --libdir | --libdi | --libd) ac_prev=libdir ;; -libdir=* | --libdir=* | --libdi=* | --libd=*) libdir=$ac_optarg ;; -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \ | --libexe | --libex | --libe) ac_prev=libexecdir ;; -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \ | --libexe=* | --libex=* | --libe=*) libexecdir=$ac_optarg ;; -localedir | --localedir | --localedi | --localed | --locale) ac_prev=localedir ;; -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*) localedir=$ac_optarg ;; -localstatedir | --localstatedir | --localstatedi | --localstated \ | --localstate | --localstat | --localsta | --localst | --locals) ac_prev=localstatedir ;; -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*) localstatedir=$ac_optarg ;; -mandir | --mandir | --mandi | --mand | --man | --ma | --m) ac_prev=mandir ;; -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*) mandir=$ac_optarg ;; -nfp | --nfp | --nf) # Obsolete; use --without-fp. with_fp=no ;; -no-create | --no-create | --no-creat | --no-crea | --no-cre \ | --no-cr | --no-c | -n) no_create=yes ;; -no-recursion | --no-recursion | --no-recursio | --no-recursi \ | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) no_recursion=yes ;; -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \ | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \ | --oldin | --oldi | --old | --ol | --o) ac_prev=oldincludedir ;; -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \ | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \ | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*) oldincludedir=$ac_optarg ;; -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) ac_prev=prefix ;; -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) prefix=$ac_optarg ;; -program-prefix | --program-prefix | --program-prefi | --program-pref \ | --program-pre | --program-pr | --program-p) ac_prev=program_prefix ;; -program-prefix=* | --program-prefix=* | --program-prefi=* \ | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*) program_prefix=$ac_optarg ;; -program-suffix | --program-suffix | --program-suffi | --program-suff \ | --program-suf | --program-su | --program-s) ac_prev=program_suffix ;; -program-suffix=* | --program-suffix=* | --program-suffi=* \ | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*) program_suffix=$ac_optarg ;; -program-transform-name | --program-transform-name \ | --program-transform-nam | --program-transform-na \ | --program-transform-n | --program-transform- \ | --program-transform | --program-transfor \ | --program-transfo | --program-transf \ | --program-trans | --program-tran \ | --progr-tra | --program-tr | --program-t) ac_prev=program_transform_name ;; -program-transform-name=* | --program-transform-name=* \ | --program-transform-nam=* | --program-transform-na=* \ | --program-transform-n=* | --program-transform-=* \ | --program-transform=* | --program-transfor=* \ | --program-transfo=* | --program-transf=* \ | --program-trans=* | --program-tran=* \ | --progr-tra=* | --program-tr=* | --program-t=*) program_transform_name=$ac_optarg ;; -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd) ac_prev=pdfdir ;; -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*) pdfdir=$ac_optarg ;; -psdir | --psdir | --psdi | --psd | --ps) ac_prev=psdir ;; -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*) psdir=$ac_optarg ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil) silent=yes ;; -runstatedir | --runstatedir | --runstatedi | --runstated \ | --runstate | --runstat | --runsta | --runst | --runs \ | --run | --ru | --r) ac_prev=runstatedir ;; -runstatedir=* | --runstatedir=* | --runstatedi=* | --runstated=* \ | --runstate=* | --runstat=* | --runsta=* | --runst=* | --runs=* \ | --run=* | --ru=* | --r=*) runstatedir=$ac_optarg ;; -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) ac_prev=sbindir ;; -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ | --sbi=* | --sb=*) sbindir=$ac_optarg ;; -sharedstatedir | --sharedstatedir | --sharedstatedi \ | --sharedstated | --sharedstate | --sharedstat | --sharedsta \ | --sharedst | --shareds | --shared | --share | --shar \ | --sha | --sh) ac_prev=sharedstatedir ;; -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \ | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \ | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \ | --sha=* | --sh=*) sharedstatedir=$ac_optarg ;; -site | --site | --sit) ac_prev=site ;; -site=* | --site=* | --sit=*) site=$ac_optarg ;; -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) ac_prev=srcdir ;; -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) srcdir=$ac_optarg ;; -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \ | --syscon | --sysco | --sysc | --sys | --sy) ac_prev=sysconfdir ;; -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \ | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*) sysconfdir=$ac_optarg ;; -target | --target | --targe | --targ | --tar | --ta | --t) ac_prev=target_alias ;; -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) target_alias=$ac_optarg ;; -v | -verbose | --verbose | --verbos | --verbo | --verb) verbose=yes ;; -version | --version | --versio | --versi | --vers | -V) ac_init_version=: ;; -with-* | --with-*) ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid package name: $ac_useropt" ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "with_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--with-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval with_$ac_useropt=\$ac_optarg ;; -without-* | --without-*) ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid package name: $ac_useropt" ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "with_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--without-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval with_$ac_useropt=no ;; --x) # Obsolete; use --with-x. with_x=yes ;; -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \ | --x-incl | --x-inc | --x-in | --x-i) ac_prev=x_includes ;; -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \ | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*) x_includes=$ac_optarg ;; -x-libraries | --x-libraries | --x-librarie | --x-librari \ | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l) ac_prev=x_libraries ;; -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \ | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) x_libraries=$ac_optarg ;; -*) as_fn_error $? "unrecognized option: \`$ac_option' Try \`$0 --help' for more information" ;; *=*) ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='` # Reject names that are not valid shell variable names. case $ac_envvar in #( '' | [0-9]* | *[!_$as_cr_alnum]* ) as_fn_error $? "invalid variable name: \`$ac_envvar'" ;; esac eval $ac_envvar=\$ac_optarg export $ac_envvar ;; *) # FIXME: should be removed in autoconf 3.0. $as_echo "$as_me: WARNING: you should use --build, --host, --target" >&2 expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && $as_echo "$as_me: WARNING: invalid host type: $ac_option" >&2 : "${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}" ;; esac done if test -n "$ac_prev"; then ac_option=--`echo $ac_prev | sed 's/_/-/g'` as_fn_error $? "missing argument to $ac_option" fi if test -n "$ac_unrecognized_opts"; then case $enable_option_checking in no) ;; fatal) as_fn_error $? "unrecognized options: $ac_unrecognized_opts" ;; *) $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;; esac fi # Check all directory arguments for consistency. for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \ datadir sysconfdir sharedstatedir localstatedir includedir \ oldincludedir docdir infodir htmldir dvidir pdfdir psdir \ libdir localedir mandir runstatedir do eval ac_val=\$$ac_var # Remove trailing slashes. case $ac_val in */ ) ac_val=`expr "X$ac_val" : 'X\(.*[^/]\)' \| "X$ac_val" : 'X\(.*\)'` eval $ac_var=\$ac_val;; esac # Be sure to have absolute directory names. case $ac_val in [\\/$]* | ?:[\\/]* ) continue;; NONE | '' ) case $ac_var in *prefix ) continue;; esac;; esac as_fn_error $? "expected an absolute directory name for --$ac_var: $ac_val" done # There might be people who depend on the old broken behavior: `$host' # used to hold the argument of --host etc. # FIXME: To remove some day. build=$build_alias host=$host_alias target=$target_alias # FIXME: To remove some day. if test "x$host_alias" != x; then if test "x$build_alias" = x; then cross_compiling=maybe elif test "x$build_alias" != "x$host_alias"; then cross_compiling=yes fi fi ac_tool_prefix= test -n "$host_alias" && ac_tool_prefix=$host_alias- test "$silent" = yes && exec 6>/dev/null ac_pwd=`pwd` && test -n "$ac_pwd" && ac_ls_di=`ls -di .` && ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` || as_fn_error $? "working directory cannot be determined" test "X$ac_ls_di" = "X$ac_pwd_ls_di" || as_fn_error $? "pwd does not report name of working directory" # Find the source files, if location was not specified. if test -z "$srcdir"; then ac_srcdir_defaulted=yes # Try the directory containing this script, then the parent directory. ac_confdir=`$as_dirname -- "$as_myself" || $as_expr X"$as_myself" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_myself" : 'X\(//\)[^/]' \| \ X"$as_myself" : 'X\(//\)$' \| \ X"$as_myself" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$as_myself" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` srcdir=$ac_confdir if test ! -r "$srcdir/$ac_unique_file"; then srcdir=.. fi else ac_srcdir_defaulted=no fi if test ! -r "$srcdir/$ac_unique_file"; then test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .." as_fn_error $? "cannot find sources ($ac_unique_file) in $srcdir" fi ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work" ac_abs_confdir=`( cd "$srcdir" && test -r "./$ac_unique_file" || as_fn_error $? "$ac_msg" pwd)` # When building in place, set srcdir=. if test "$ac_abs_confdir" = "$ac_pwd"; then srcdir=. fi # Remove unnecessary trailing slashes from srcdir. # Double slashes in file names in object file debugging info # mess up M-x gdb in Emacs. case $srcdir in */) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;; esac for ac_var in $ac_precious_vars; do eval ac_env_${ac_var}_set=\${${ac_var}+set} eval ac_env_${ac_var}_value=\$${ac_var} eval ac_cv_env_${ac_var}_set=\${${ac_var}+set} eval ac_cv_env_${ac_var}_value=\$${ac_var} done # # Report the --help message. # if test "$ac_init_help" = "long"; then # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF \`configure' configures b3270 4.0 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... To assign environment variables (e.g., CC, CFLAGS...), specify them as VAR=VALUE. See below for descriptions of some of the useful variables. Defaults for the options are specified in brackets. Configuration: -h, --help display this help and exit --help=short display options specific to this package --help=recursive display the short help of all the included packages -V, --version display version information and exit -q, --quiet, --silent do not print \`checking ...' messages --cache-file=FILE cache test results in FILE [disabled] -C, --config-cache alias for \`--cache-file=config.cache' -n, --no-create do not create output files --srcdir=DIR find the sources in DIR [configure dir or \`..'] Installation directories: --prefix=PREFIX install architecture-independent files in PREFIX [$ac_default_prefix] --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX [PREFIX] By default, \`make install' will install all the files in \`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify an installation prefix other than \`$ac_default_prefix' using \`--prefix', for instance \`--prefix=\$HOME'. For better control, use the options below. Fine tuning of the installation directories: --bindir=DIR user executables [EPREFIX/bin] --sbindir=DIR system admin executables [EPREFIX/sbin] --libexecdir=DIR program executables [EPREFIX/libexec] --sysconfdir=DIR read-only single-machine data [PREFIX/etc] --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] --localstatedir=DIR modifiable single-machine data [PREFIX/var] --runstatedir=DIR modifiable per-process data [LOCALSTATEDIR/run] --libdir=DIR object code libraries [EPREFIX/lib] --includedir=DIR C header files [PREFIX/include] --oldincludedir=DIR C header files for non-gcc [/usr/include] --datarootdir=DIR read-only arch.-independent data root [PREFIX/share] --datadir=DIR read-only architecture-independent data [DATAROOTDIR] --infodir=DIR info documentation [DATAROOTDIR/info] --localedir=DIR locale-dependent data [DATAROOTDIR/locale] --mandir=DIR man documentation [DATAROOTDIR/man] --docdir=DIR documentation root [DATAROOTDIR/doc/b3270] --htmldir=DIR html documentation [DOCDIR] --dvidir=DIR dvi documentation [DOCDIR] --pdfdir=DIR pdf documentation [DOCDIR] --psdir=DIR ps documentation [DOCDIR] _ACEOF cat <<\_ACEOF System types: --build=BUILD configure for building on BUILD [guessed] --host=HOST cross-compile to build programs to run on HOST [BUILD] _ACEOF fi if test -n "$ac_init_help"; then case $ac_init_help in short | recursive ) echo "Configuration of b3270 4.0:";; esac cat <<\_ACEOF Optional Features: --disable-option-checking ignore unrecognized --enable/--with options --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) --enable-FEATURE[=ARG] include FEATURE [ARG=yes] --disable-dbcs leave out DBCS support --disable-local-process leave out local process support --disable-ipv6 leave out IPv6 support Some influential environment variables: CC C compiler command CFLAGS C compiler flags LDFLAGS linker flags, e.g. -L if you have libraries in a nonstandard directory LIBS libraries to pass to the linker, e.g. -l CPPFLAGS (Objective) C/C++ preprocessor flags, e.g. -I if you have headers in a nonstandard directory CPP C preprocessor Use these variables to override the choices made by `configure' or to help it to find libraries and programs with nonstandard names/locations. Report bugs to the package provider. _ACEOF ac_status=$? fi if test "$ac_init_help" = "recursive"; then # If there are subdirs, report their specific --help. for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue test -d "$ac_dir" || { cd "$srcdir" && ac_pwd=`pwd` && srcdir=. && test -d "$ac_dir"; } || continue ac_builddir=. case "$ac_dir" in .) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` # A ".." for each directory in $ac_dir_suffix. ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` case $ac_top_builddir_sub in "") ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; esac ;; esac ac_abs_top_builddir=$ac_pwd ac_abs_builddir=$ac_pwd$ac_dir_suffix # for backward compatibility: ac_top_builddir=$ac_top_build_prefix case $srcdir in .) # We are building in place. ac_srcdir=. ac_top_srcdir=$ac_top_builddir_sub ac_abs_top_srcdir=$ac_pwd ;; [\\/]* | ?:[\\/]* ) # Absolute name. ac_srcdir=$srcdir$ac_dir_suffix; ac_top_srcdir=$srcdir ac_abs_top_srcdir=$srcdir ;; *) # Relative name. ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix ac_top_srcdir=$ac_top_build_prefix$srcdir ac_abs_top_srcdir=$ac_pwd/$srcdir ;; esac ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix cd "$ac_dir" || { ac_status=$?; continue; } # Check for guested configure. if test -f "$ac_srcdir/configure.gnu"; then echo && $SHELL "$ac_srcdir/configure.gnu" --help=recursive elif test -f "$ac_srcdir/configure"; then echo && $SHELL "$ac_srcdir/configure" --help=recursive else $as_echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2 fi || ac_status=$? cd "$ac_pwd" || { ac_status=$?; break; } done fi test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF b3270 configure 4.0 generated by GNU Autoconf 2.69 Copyright (C) 2012 Free Software Foundation, Inc. This configure script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it. _ACEOF exit fi ## ------------------------ ## ## Autoconf initialization. ## ## ------------------------ ## # ac_fn_c_try_compile LINENO # -------------------------- # Try to compile conftest.$ac_ext, and return whether this succeeded. ac_fn_c_try_compile () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack rm -f conftest.$ac_objext if { { ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_compile") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then : ac_retval=0 else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_c_try_compile # ac_fn_c_try_link LINENO # ----------------------- # Try to link conftest.$ac_ext, and return whether this succeeded. ac_fn_c_try_link () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack rm -f conftest.$ac_objext conftest$ac_exeext if { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || test -x conftest$ac_exeext }; then : ac_retval=0 else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would # interfere with the next link command; also delete a directory that is # left behind by Apple's compiler. We do this before executing the actions. rm -rf conftest.dSYM conftest_ipa8_conftest.oo eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_c_try_link # ac_fn_c_check_func LINENO FUNC VAR # ---------------------------------- # Tests whether FUNC exists, setting the cache variable VAR accordingly ac_fn_c_check_func () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 $as_echo_n "checking for $2... " >&6; } if eval \${$3+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Define $2 to an innocuous variant, in case declares $2. For example, HP-UX 11i declares gettimeofday. */ #define $2 innocuous_$2 /* System header to define __stub macros and hopefully few prototypes, which can conflict with char $2 (); below. Prefer to if __STDC__ is defined, since exists even on freestanding compilers. */ #ifdef __STDC__ # include #else # include #endif #undef $2 /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char $2 (); /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined __stub_$2 || defined __stub___$2 choke me #endif int main () { return $2 (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : eval "$3=yes" else eval "$3=no" fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi eval ac_res=\$$3 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } # ac_fn_c_check_func # ac_fn_c_try_cpp LINENO # ---------------------- # Try to preprocess conftest.$ac_ext, and return whether this succeeded. ac_fn_c_try_cpp () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack if { { ac_try="$ac_cpp conftest.$ac_ext" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } > conftest.i && { test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || test ! -s conftest.err }; then : ac_retval=0 else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_c_try_cpp # ac_fn_c_check_header_mongrel LINENO HEADER VAR INCLUDES # ------------------------------------------------------- # Tests whether HEADER exists, giving a warning if it cannot be compiled using # the include files in INCLUDES and setting the cache variable VAR # accordingly. ac_fn_c_check_header_mongrel () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack if eval \${$3+:} false; then : { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 $as_echo_n "checking for $2... " >&6; } if eval \${$3+:} false; then : $as_echo_n "(cached) " >&6 fi eval ac_res=\$$3 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } else # Is the header compilable? { $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 usability" >&5 $as_echo_n "checking $2 usability... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 #include <$2> _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_header_compiler=yes else ac_header_compiler=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_compiler" >&5 $as_echo "$ac_header_compiler" >&6; } # Is the header present? { $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 presence" >&5 $as_echo_n "checking $2 presence... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include <$2> _ACEOF if ac_fn_c_try_cpp "$LINENO"; then : ac_header_preproc=yes else ac_header_preproc=no fi rm -f conftest.err conftest.i conftest.$ac_ext { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_preproc" >&5 $as_echo "$ac_header_preproc" >&6; } # So? What about this header? case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in #(( yes:no: ) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&5 $as_echo "$as_me: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5 $as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;} ;; no:yes:* ) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: present but cannot be compiled" >&5 $as_echo "$as_me: WARNING: $2: present but cannot be compiled" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: check for missing prerequisite headers?" >&5 $as_echo "$as_me: WARNING: $2: check for missing prerequisite headers?" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: see the Autoconf documentation" >&5 $as_echo "$as_me: WARNING: $2: see the Autoconf documentation" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&5 $as_echo "$as_me: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5 $as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;} ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 $as_echo_n "checking for $2... " >&6; } if eval \${$3+:} false; then : $as_echo_n "(cached) " >&6 else eval "$3=\$ac_header_compiler" fi eval ac_res=\$$3 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } fi eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } # ac_fn_c_check_header_mongrel # ac_fn_c_try_run LINENO # ---------------------- # Try to link conftest.$ac_ext, and return whether this succeeded. Assumes # that executables *can* be run. ac_fn_c_try_run () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack if { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { ac_try='./conftest$ac_exeext' { { case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_try") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; }; then : ac_retval=0 else $as_echo "$as_me: program exited with status $ac_status" >&5 $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=$ac_status fi rm -rf conftest.dSYM conftest_ipa8_conftest.oo eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_c_try_run # ac_fn_c_check_header_compile LINENO HEADER VAR INCLUDES # ------------------------------------------------------- # Tests whether HEADER exists and can be compiled using the include files in # INCLUDES, setting the cache variable VAR accordingly. ac_fn_c_check_header_compile () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 $as_echo_n "checking for $2... " >&6; } if eval \${$3+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 #include <$2> _ACEOF if ac_fn_c_try_compile "$LINENO"; then : eval "$3=yes" else eval "$3=no" fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi eval ac_res=\$$3 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } # ac_fn_c_check_header_compile cat >config.log <<_ACEOF This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. It was created by b3270 $as_me 4.0, which was generated by GNU Autoconf 2.69. Invocation command line was $ $0 $@ _ACEOF exec 5>>config.log { cat <<_ASUNAME ## --------- ## ## Platform. ## ## --------- ## hostname = `(hostname || uname -n) 2>/dev/null | sed 1q` uname -m = `(uname -m) 2>/dev/null || echo unknown` uname -r = `(uname -r) 2>/dev/null || echo unknown` uname -s = `(uname -s) 2>/dev/null || echo unknown` uname -v = `(uname -v) 2>/dev/null || echo unknown` /usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown` /bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown` /bin/arch = `(/bin/arch) 2>/dev/null || echo unknown` /usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown` /usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown` /usr/bin/hostinfo = `(/usr/bin/hostinfo) 2>/dev/null || echo unknown` /bin/machine = `(/bin/machine) 2>/dev/null || echo unknown` /usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown` /bin/universe = `(/bin/universe) 2>/dev/null || echo unknown` _ASUNAME as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. $as_echo "PATH: $as_dir" done IFS=$as_save_IFS } >&5 cat >&5 <<_ACEOF ## ----------- ## ## Core tests. ## ## ----------- ## _ACEOF # Keep a trace of the command line. # Strip out --no-create and --no-recursion so they do not pile up. # Strip out --silent because we don't want to record it for future runs. # Also quote any args containing shell meta-characters. # Make two passes to allow for proper duplicate-argument suppression. ac_configure_args= ac_configure_args0= ac_configure_args1= ac_must_keep_next=false for ac_pass in 1 2 do for ac_arg do case $ac_arg in -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil) continue ;; *\'*) ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; esac case $ac_pass in 1) as_fn_append ac_configure_args0 " '$ac_arg'" ;; 2) as_fn_append ac_configure_args1 " '$ac_arg'" if test $ac_must_keep_next = true; then ac_must_keep_next=false # Got value, back to normal. else case $ac_arg in *=* | --config-cache | -C | -disable-* | --disable-* \ | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \ | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \ | -with-* | --with-* | -without-* | --without-* | --x) case "$ac_configure_args0 " in "$ac_configure_args1"*" '$ac_arg' "* ) continue ;; esac ;; -* ) ac_must_keep_next=true ;; esac fi as_fn_append ac_configure_args " '$ac_arg'" ;; esac done done { ac_configure_args0=; unset ac_configure_args0;} { ac_configure_args1=; unset ac_configure_args1;} # When interrupted or exit'd, cleanup temporary files, and complete # config.log. We remove comments because anyway the quotes in there # would cause problems or look ugly. # WARNING: Use '\'' to represent an apostrophe within the trap. # WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug. trap 'exit_status=$? # Save into config.log some information that might help in debugging. { echo $as_echo "## ---------------- ## ## Cache variables. ## ## ---------------- ##" echo # The following way of writing the cache mishandles newlines in values, ( for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do eval ac_val=\$$ac_var case $ac_val in #( *${as_nl}*) case $ac_var in #( *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 $as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; esac case $ac_var in #( _ | IFS | as_nl) ;; #( BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( *) { eval $ac_var=; unset $ac_var;} ;; esac ;; esac done (set) 2>&1 | case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #( *${as_nl}ac_space=\ *) sed -n \ "s/'\''/'\''\\\\'\'''\''/g; s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p" ;; #( *) sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" ;; esac | sort ) echo $as_echo "## ----------------- ## ## Output variables. ## ## ----------------- ##" echo for ac_var in $ac_subst_vars do eval ac_val=\$$ac_var case $ac_val in *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; esac $as_echo "$ac_var='\''$ac_val'\''" done | sort echo if test -n "$ac_subst_files"; then $as_echo "## ------------------- ## ## File substitutions. ## ## ------------------- ##" echo for ac_var in $ac_subst_files do eval ac_val=\$$ac_var case $ac_val in *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; esac $as_echo "$ac_var='\''$ac_val'\''" done | sort echo fi if test -s confdefs.h; then $as_echo "## ----------- ## ## confdefs.h. ## ## ----------- ##" echo cat confdefs.h echo fi test "$ac_signal" != 0 && $as_echo "$as_me: caught signal $ac_signal" $as_echo "$as_me: exit $exit_status" } >&5 rm -f core *.core core.conftest.* && rm -f -r conftest* confdefs* conf$$* $ac_clean_files && exit $exit_status ' 0 for ac_signal in 1 2 13 15; do trap 'ac_signal='$ac_signal'; as_fn_exit 1' $ac_signal done ac_signal=0 # confdefs.h avoids OS command line length limits that DEFS can exceed. rm -f -r conftest* confdefs.h $as_echo "/* confdefs.h */" > confdefs.h # Predefined preprocessor variables. cat >>confdefs.h <<_ACEOF #define PACKAGE_NAME "$PACKAGE_NAME" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_TARNAME "$PACKAGE_TARNAME" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_VERSION "$PACKAGE_VERSION" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_STRING "$PACKAGE_STRING" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_URL "$PACKAGE_URL" _ACEOF # Let the site file select an alternate cache file if it wants to. # Prefer an explicitly selected file to automatically selected ones. ac_site_file1=NONE ac_site_file2=NONE if test -n "$CONFIG_SITE"; then # We do not want a PATH search for config.site. case $CONFIG_SITE in #(( -*) ac_site_file1=./$CONFIG_SITE;; */*) ac_site_file1=$CONFIG_SITE;; *) ac_site_file1=./$CONFIG_SITE;; esac elif test "x$prefix" != xNONE; then ac_site_file1=$prefix/share/config.site ac_site_file2=$prefix/etc/config.site else ac_site_file1=$ac_default_prefix/share/config.site ac_site_file2=$ac_default_prefix/etc/config.site fi for ac_site_file in "$ac_site_file1" "$ac_site_file2" do test "x$ac_site_file" = xNONE && continue if test /dev/null != "$ac_site_file" && test -r "$ac_site_file"; then { $as_echo "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5 $as_echo "$as_me: loading site script $ac_site_file" >&6;} sed 's/^/| /' "$ac_site_file" >&5 . "$ac_site_file" \ || { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "failed to load site script $ac_site_file See \`config.log' for more details" "$LINENO" 5; } fi done if test -r "$cache_file"; then # Some versions of bash will fail to source /dev/null (special files # actually), so we avoid doing that. DJGPP emulates it as a regular file. if test /dev/null != "$cache_file" && test -f "$cache_file"; then { $as_echo "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5 $as_echo "$as_me: loading cache $cache_file" >&6;} case $cache_file in [\\/]* | ?:[\\/]* ) . "$cache_file";; *) . "./$cache_file";; esac fi else { $as_echo "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5 $as_echo "$as_me: creating cache $cache_file" >&6;} >$cache_file fi # Check that the precious variables saved in the cache have kept the same # value. ac_cache_corrupted=false for ac_var in $ac_precious_vars; do eval ac_old_set=\$ac_cv_env_${ac_var}_set eval ac_new_set=\$ac_env_${ac_var}_set eval ac_old_val=\$ac_cv_env_${ac_var}_value eval ac_new_val=\$ac_env_${ac_var}_value case $ac_old_set,$ac_new_set in set,) { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 $as_echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} ac_cache_corrupted=: ;; ,set) { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was not set in the previous run" >&5 $as_echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} ac_cache_corrupted=: ;; ,);; *) if test "x$ac_old_val" != "x$ac_new_val"; then # differences in whitespace do not lead to failure. ac_old_val_w=`echo x $ac_old_val` ac_new_val_w=`echo x $ac_new_val` if test "$ac_old_val_w" != "$ac_new_val_w"; then { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' has changed since the previous run:" >&5 $as_echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} ac_cache_corrupted=: else { $as_echo "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5 $as_echo "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;} eval $ac_var=\$ac_old_val fi { $as_echo "$as_me:${as_lineno-$LINENO}: former value: \`$ac_old_val'" >&5 $as_echo "$as_me: former value: \`$ac_old_val'" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: current value: \`$ac_new_val'" >&5 $as_echo "$as_me: current value: \`$ac_new_val'" >&2;} fi;; esac # Pass precious variables to config.status. if test "$ac_new_set" = set; then case $ac_new_val in *\'*) ac_arg=$ac_var=`$as_echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; *) ac_arg=$ac_var=$ac_new_val ;; esac case " $ac_configure_args " in *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy. *) as_fn_append ac_configure_args " '$ac_arg'" ;; esac fi done if $ac_cache_corrupted; then { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5 $as_echo "$as_me: error: changes in the environment can compromise the build" >&2;} as_fn_error $? "run \`make distclean' and/or \`rm $cache_file' and start over" "$LINENO" 5 fi ## -------------------- ## ## Main body of script. ## ## -------------------- ## ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu ac_aux_dir= for ac_dir in "$srcdir" "$srcdir/.." "$srcdir/../.."; do if test -f "$ac_dir/install-sh"; then ac_aux_dir=$ac_dir ac_install_sh="$ac_aux_dir/install-sh -c" break elif test -f "$ac_dir/install.sh"; then ac_aux_dir=$ac_dir ac_install_sh="$ac_aux_dir/install.sh -c" break elif test -f "$ac_dir/shtool"; then ac_aux_dir=$ac_dir ac_install_sh="$ac_aux_dir/shtool install -c" break fi done if test -z "$ac_aux_dir"; then as_fn_error $? "cannot find install-sh, install.sh, or shtool in \"$srcdir\" \"$srcdir/..\" \"$srcdir/../..\"" "$LINENO" 5 fi # These three variables are undocumented and unsupported, # and are intended to be withdrawn in a future Autoconf release. # They can cause serious problems if a builder's source tree is in a directory # whose full name contains unusual characters. ac_config_guess="$SHELL $ac_aux_dir/config.guess" # Please don't use this var. ac_config_sub="$SHELL $ac_aux_dir/config.sub" # Please don't use this var. ac_configure="$SHELL $ac_aux_dir/configure" # Please don't use this var. # Find a good install program. We prefer a C program (faster), # so one script is as good as another. But avoid the broken or # incompatible versions: # SysV /etc/install, /usr/sbin/install # SunOS /usr/etc/install # IRIX /sbin/install # AIX /bin/install # AmigaOS /C/install, which installs bootblocks on floppy discs # AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag # AFS /usr/afsws/bin/install, which mishandles nonexistent args # SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" # OS/2's system install, which has a completely different semantic # ./install, which can be erroneously created by make from ./install.sh. # Reject install programs that cannot install multiple files. { $as_echo "$as_me:${as_lineno-$LINENO}: checking for a BSD-compatible install" >&5 $as_echo_n "checking for a BSD-compatible install... " >&6; } if test -z "$INSTALL"; then if ${ac_cv_path_install+:} false; then : $as_echo_n "(cached) " >&6 else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. # Account for people who put trailing slashes in PATH elements. case $as_dir/ in #(( ./ | .// | /[cC]/* | \ /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \ ?:[\\/]os2[\\/]install[\\/]* | ?:[\\/]OS2[\\/]INSTALL[\\/]* | \ /usr/ucb/* ) ;; *) # OSF1 and SCO ODT 3.0 have their own names for install. # Don't use installbsd from OSF since it installs stuff as root # by default. for ac_prog in ginstall scoinst install; do for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then if test $ac_prog = install && grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then # AIX install. It has an incompatible calling convention. : elif test $ac_prog = install && grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then # program-specific install script used by HP pwplus--don't use. : else rm -rf conftest.one conftest.two conftest.dir echo one > conftest.one echo two > conftest.two mkdir conftest.dir if "$as_dir/$ac_prog$ac_exec_ext" -c conftest.one conftest.two "`pwd`/conftest.dir" && test -s conftest.one && test -s conftest.two && test -s conftest.dir/conftest.one && test -s conftest.dir/conftest.two then ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c" break 3 fi fi fi done done ;; esac done IFS=$as_save_IFS rm -rf conftest.one conftest.two conftest.dir fi if test "${ac_cv_path_install+set}" = set; then INSTALL=$ac_cv_path_install else # As a last resort, use the slow shell script. Don't cache a # value for INSTALL within a source directory, because that will # break other packages using the cache if that directory is # removed, or if the value is a relative name. INSTALL=$ac_install_sh fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $INSTALL" >&5 $as_echo "$INSTALL" >&6; } # Use test -z because SunOS4 sh mishandles braces in ${var-val}. # It thinks the first close brace ends the variable substitution. test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}' test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}' test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. set dummy ${ac_tool_prefix}gcc; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CC="${ac_tool_prefix}gcc" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_CC"; then ac_ct_CC=$CC # Extract the first word of "gcc", so it can be a program name with args. set dummy gcc; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CC="gcc" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 $as_echo "$ac_ct_CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_CC" = x; then CC="" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CC=$ac_ct_CC fi else CC="$ac_cv_prog_CC" fi if test -z "$CC"; then if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. set dummy ${ac_tool_prefix}cc; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CC="${ac_tool_prefix}cc" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi fi if test -z "$CC"; then # Extract the first word of "cc", so it can be a program name with args. set dummy cc; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else ac_prog_rejected=no as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then ac_prog_rejected=yes continue fi ac_cv_prog_CC="cc" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS if test $ac_prog_rejected = yes; then # We found a bogon in the path, so make sure we never use it. set dummy $ac_cv_prog_CC shift if test $# != 0; then # We chose a different compiler from the bogus one. # However, it has the same basename, so the bogon will be chosen # first if we set CC to just the basename; use the full file name. shift ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@" fi fi fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$CC"; then if test -n "$ac_tool_prefix"; then for ac_prog in cl.exe do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CC="$ac_tool_prefix$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$CC" && break done fi if test -z "$CC"; then ac_ct_CC=$CC for ac_prog in cl.exe do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CC="$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 $as_echo "$ac_ct_CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$ac_ct_CC" && break done if test "x$ac_ct_CC" = x; then CC="" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CC=$ac_ct_CC fi fi fi test -z "$CC" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "no acceptable C compiler found in \$PATH See \`config.log' for more details" "$LINENO" 5; } # Provide some information about the compiler. $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5 set X $ac_compile ac_compiler=$2 for ac_option in --version -v -V -qversion; do { { ac_try="$ac_compiler $ac_option >&5" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_compiler $ac_option >&5") 2>conftest.err ac_status=$? if test -s conftest.err; then sed '10a\ ... rest of stderr output deleted ... 10q' conftest.err >conftest.er1 cat conftest.er1 >&5 fi rm -f conftest.er1 conftest.err $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } done cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF ac_clean_files_save=$ac_clean_files ac_clean_files="$ac_clean_files a.out a.out.dSYM a.exe b.out" # Try to create an executable without -o first, disregard a.out. # It will help us diagnose broken compilers, and finding out an intuition # of exeext. { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler works" >&5 $as_echo_n "checking whether the C compiler works... " >&6; } ac_link_default=`$as_echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'` # The possible output files: ac_files="a.out conftest.exe conftest a.exe a_out.exe b.out conftest.*" ac_rmfiles= for ac_file in $ac_files do case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; * ) ac_rmfiles="$ac_rmfiles $ac_file";; esac done rm -f $ac_rmfiles if { { ac_try="$ac_link_default" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link_default") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then : # Autoconf-2.13 could set the ac_cv_exeext variable to `no'. # So ignore a value of `no', otherwise this would lead to `EXEEXT = no' # in a Makefile. We should not override ac_cv_exeext if it was cached, # so that the user can short-circuit this test for compilers unknown to # Autoconf. for ac_file in $ac_files '' do test -f "$ac_file" || continue case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; [ab].out ) # We found the default executable, but exeext='' is most # certainly right. break;; *.* ) if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no; then :; else ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` fi # We set ac_cv_exeext here because the later test for it is not # safe: cross compilers may not add the suffix if given an `-o' # argument, so we may need to know it at that point already. # Even if this section looks crufty: it has the advantage of # actually working. break;; * ) break;; esac done test "$ac_cv_exeext" = no && ac_cv_exeext= else ac_file='' fi if test -z "$ac_file"; then : { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error 77 "C compiler cannot create executables See \`config.log' for more details" "$LINENO" 5; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler default output file name" >&5 $as_echo_n "checking for C compiler default output file name... " >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5 $as_echo "$ac_file" >&6; } ac_exeext=$ac_cv_exeext rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out ac_clean_files=$ac_clean_files_save { $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5 $as_echo_n "checking for suffix of executables... " >&6; } if { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then : # If both `conftest.exe' and `conftest' are `present' (well, observable) # catch `conftest.exe'. For instance with Cygwin, `ls conftest' will # work properly (i.e., refer to `conftest.exe'), while it won't with # `rm'. for ac_file in conftest.exe conftest conftest.*; do test -f "$ac_file" || continue case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` break;; * ) break;; esac done else { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "cannot compute suffix of executables: cannot compile and link See \`config.log' for more details" "$LINENO" 5; } fi rm -f conftest conftest$ac_cv_exeext { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5 $as_echo "$ac_cv_exeext" >&6; } rm -f conftest.$ac_ext EXEEXT=$ac_cv_exeext ac_exeext=$EXEEXT cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main () { FILE *f = fopen ("conftest.out", "w"); return ferror (f) || fclose (f) != 0; ; return 0; } _ACEOF ac_clean_files="$ac_clean_files conftest.out" # Check that the compiler produces executables we can run. If not, either # the compiler is broken, or we cross compile. { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5 $as_echo_n "checking whether we are cross compiling... " >&6; } if test "$cross_compiling" != yes; then { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } if { ac_try='./conftest$ac_cv_exeext' { { case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_try") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; }; then cross_compiling=no else if test "$cross_compiling" = maybe; then cross_compiling=yes else { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "cannot run C compiled programs. If you meant to cross compile, use \`--host'. See \`config.log' for more details" "$LINENO" 5; } fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5 $as_echo "$cross_compiling" >&6; } rm -f conftest.$ac_ext conftest$ac_cv_exeext conftest.out ac_clean_files=$ac_clean_files_save { $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5 $as_echo_n "checking for suffix of object files... " >&6; } if ${ac_cv_objext+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF rm -f conftest.o conftest.obj if { { ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_compile") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then : for ac_file in conftest.o conftest.obj conftest.*; do test -f "$ac_file" || continue; case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM ) ;; *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'` break;; esac done else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "cannot compute suffix of object files: cannot compile See \`config.log' for more details" "$LINENO" 5; } fi rm -f conftest.$ac_cv_objext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5 $as_echo "$ac_cv_objext" >&6; } OBJEXT=$ac_cv_objext ac_objext=$OBJEXT { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C compiler" >&5 $as_echo_n "checking whether we are using the GNU C compiler... " >&6; } if ${ac_cv_c_compiler_gnu+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { #ifndef __GNUC__ choke me #endif ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_compiler_gnu=yes else ac_compiler_gnu=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_cv_c_compiler_gnu=$ac_compiler_gnu fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5 $as_echo "$ac_cv_c_compiler_gnu" >&6; } if test $ac_compiler_gnu = yes; then GCC=yes else GCC= fi ac_test_CFLAGS=${CFLAGS+set} ac_save_CFLAGS=$CFLAGS { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5 $as_echo_n "checking whether $CC accepts -g... " >&6; } if ${ac_cv_prog_cc_g+:} false; then : $as_echo_n "(cached) " >&6 else ac_save_c_werror_flag=$ac_c_werror_flag ac_c_werror_flag=yes ac_cv_prog_cc_g=no CFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_prog_cc_g=yes else CFLAGS="" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : else ac_c_werror_flag=$ac_save_c_werror_flag CFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_prog_cc_g=yes fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_c_werror_flag=$ac_save_c_werror_flag fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5 $as_echo "$ac_cv_prog_cc_g" >&6; } if test "$ac_test_CFLAGS" = set; then CFLAGS=$ac_save_CFLAGS elif test $ac_cv_prog_cc_g = yes; then if test "$GCC" = yes; then CFLAGS="-g -O2" else CFLAGS="-g" fi else if test "$GCC" = yes; then CFLAGS="-O2" else CFLAGS= fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5 $as_echo_n "checking for $CC option to accept ISO C89... " >&6; } if ${ac_cv_prog_cc_c89+:} false; then : $as_echo_n "(cached) " >&6 else ac_cv_prog_cc_c89=no ac_save_CC=$CC cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include struct stat; /* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */ struct buf { int x; }; FILE * (*rcsopen) (struct buf *, struct stat *, int); static char *e (p, i) char **p; int i; { return p[i]; } static char *f (char * (*g) (char **, int), char **p, ...) { char *s; va_list v; va_start (v,p); s = g (p, va_arg (v,int)); va_end (v); return s; } /* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has function prototypes and stuff, but not '\xHH' hex character constants. These don't provoke an error unfortunately, instead are silently treated as 'x'. The following induces an error, until -std is added to get proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an array size at least. It's necessary to write '\x00'==0 to get something that's true only with -std. */ int osf4_cc_array ['\x00' == 0 ? 1 : -1]; /* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters inside strings and character constants. */ #define FOO(x) 'x' int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1]; int test (int i, double x); struct s1 {int (*f) (int a);}; struct s2 {int (*f) (double a);}; int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int); int argc; char **argv; int main () { return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]; ; return 0; } _ACEOF for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \ -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" do CC="$ac_save_CC $ac_arg" if ac_fn_c_try_compile "$LINENO"; then : ac_cv_prog_cc_c89=$ac_arg fi rm -f core conftest.err conftest.$ac_objext test "x$ac_cv_prog_cc_c89" != "xno" && break done rm -f conftest.$ac_ext CC=$ac_save_CC fi # AC_CACHE_VAL case "x$ac_cv_prog_cc_c89" in x) { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 $as_echo "none needed" >&6; } ;; xno) { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 $as_echo "unsupported" >&6; } ;; *) CC="$CC $ac_cv_prog_cc_c89" { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5 $as_echo "$ac_cv_prog_cc_c89" >&6; } ;; esac if test "x$ac_cv_prog_cc_c89" != xno; then : fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu ansi="-std=c99 -pedantic" # Make sure we can run config.sub. $SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 || as_fn_error $? "cannot run $SHELL $ac_aux_dir/config.sub" "$LINENO" 5 { $as_echo "$as_me:${as_lineno-$LINENO}: checking build system type" >&5 $as_echo_n "checking build system type... " >&6; } if ${ac_cv_build+:} false; then : $as_echo_n "(cached) " >&6 else ac_build_alias=$build_alias test "x$ac_build_alias" = x && ac_build_alias=`$SHELL "$ac_aux_dir/config.guess"` test "x$ac_build_alias" = x && as_fn_error $? "cannot guess build type; you must specify one" "$LINENO" 5 ac_cv_build=`$SHELL "$ac_aux_dir/config.sub" $ac_build_alias` || as_fn_error $? "$SHELL $ac_aux_dir/config.sub $ac_build_alias failed" "$LINENO" 5 fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build" >&5 $as_echo "$ac_cv_build" >&6; } case $ac_cv_build in *-*-*) ;; *) as_fn_error $? "invalid value of canonical build" "$LINENO" 5;; esac build=$ac_cv_build ac_save_IFS=$IFS; IFS='-' set x $ac_cv_build shift build_cpu=$1 build_vendor=$2 shift; shift # Remember, the first character of IFS is used to create $*, # except with old shells: build_os=$* IFS=$ac_save_IFS case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking host system type" >&5 $as_echo_n "checking host system type... " >&6; } if ${ac_cv_host+:} false; then : $as_echo_n "(cached) " >&6 else if test "x$host_alias" = x; then ac_cv_host=$ac_cv_build else ac_cv_host=`$SHELL "$ac_aux_dir/config.sub" $host_alias` || as_fn_error $? "$SHELL $ac_aux_dir/config.sub $host_alias failed" "$LINENO" 5 fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_host" >&5 $as_echo "$ac_cv_host" >&6; } case $ac_cv_host in *-*-*) ;; *) as_fn_error $? "invalid value of canonical host" "$LINENO" 5;; esac host=$ac_cv_host ac_save_IFS=$IFS; IFS='-' set x $ac_cv_host shift host_cpu=$1 host_vendor=$2 shift; shift # Remember, the first character of IFS is used to create $*, # except with old shells: host_os=$* IFS=$ac_save_IFS case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac case "$host_os" in *cygwin*) ansi="" ;; solaris2*) CPPFLAGS="$CPPFLAGS -D__EXTENSIONS__" ;; darwin*) CCOPTIONS="$CCOPTIONS -no-cpp-precomp -Wno-deprecated-declarations" ;; linux*) CPPFLAGS="$CPPFLAGS -D_POSIX_SOURCE" ;; esac if test "$GCC" = yes then # Add common gcc options, plus flags for dependency generation. CCOPTIONS="$CCOPTIONS -Wall -Wsign-compare $ansi -Wno-variadic-macros -MMD -MP" fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing forkpty" >&5 $as_echo_n "checking for library containing forkpty... " >&6; } if ${ac_cv_search_forkpty+:} false; then : $as_echo_n "(cached) " >&6 else ac_func_search_save_LIBS=$LIBS cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char forkpty (); int main () { return forkpty (); ; return 0; } _ACEOF for ac_lib in '' util; do if test -z "$ac_lib"; then ac_res="none required" else ac_res=-l$ac_lib LIBS="-l$ac_lib $ac_func_search_save_LIBS" fi if ac_fn_c_try_link "$LINENO"; then : ac_cv_search_forkpty=$ac_res fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext if ${ac_cv_search_forkpty+:} false; then : break fi done if ${ac_cv_search_forkpty+:} false; then : else ac_cv_search_forkpty=no fi rm conftest.$ac_ext LIBS=$ac_func_search_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_forkpty" >&5 $as_echo "$ac_cv_search_forkpty" >&6; } ac_res=$ac_cv_search_forkpty if test "$ac_res" != no; then : test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" fi for ac_func in forkpty do : ac_fn_c_check_func "$LINENO" "forkpty" "ac_cv_func_forkpty" if test "x$ac_cv_func_forkpty" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_FORKPTY 1 _ACEOF fi done { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing gethostbyname" >&5 $as_echo_n "checking for library containing gethostbyname... " >&6; } if ${ac_cv_search_gethostbyname+:} false; then : $as_echo_n "(cached) " >&6 else ac_func_search_save_LIBS=$LIBS cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char gethostbyname (); int main () { return gethostbyname (); ; return 0; } _ACEOF for ac_lib in '' nsl; do if test -z "$ac_lib"; then ac_res="none required" else ac_res=-l$ac_lib LIBS="-l$ac_lib $ac_func_search_save_LIBS" fi if ac_fn_c_try_link "$LINENO"; then : ac_cv_search_gethostbyname=$ac_res fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext if ${ac_cv_search_gethostbyname+:} false; then : break fi done if ${ac_cv_search_gethostbyname+:} false; then : else ac_cv_search_gethostbyname=no fi rm conftest.$ac_ext LIBS=$ac_func_search_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_gethostbyname" >&5 $as_echo "$ac_cv_search_gethostbyname" >&6; } ac_res=$ac_cv_search_gethostbyname if test "$ac_res" != no; then : test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing socket" >&5 $as_echo_n "checking for library containing socket... " >&6; } if ${ac_cv_search_socket+:} false; then : $as_echo_n "(cached) " >&6 else ac_func_search_save_LIBS=$LIBS cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char socket (); int main () { return socket (); ; return 0; } _ACEOF for ac_lib in '' socket; do if test -z "$ac_lib"; then ac_res="none required" else ac_res=-l$ac_lib LIBS="-l$ac_lib $ac_func_search_save_LIBS" fi if ac_fn_c_try_link "$LINENO"; then : ac_cv_search_socket=$ac_res fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext if ${ac_cv_search_socket+:} false; then : break fi done if ${ac_cv_search_socket+:} false; then : else ac_cv_search_socket=no fi rm conftest.$ac_ext LIBS=$ac_func_search_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_socket" >&5 $as_echo "$ac_cv_search_socket" >&6; } ac_res=$ac_cv_search_socket if test "$ac_res" != no; then : test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing XML_ParserCreate" >&5 $as_echo_n "checking for library containing XML_ParserCreate... " >&6; } if ${ac_cv_search_XML_ParserCreate+:} false; then : $as_echo_n "(cached) " >&6 else ac_func_search_save_LIBS=$LIBS cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char XML_ParserCreate (); int main () { return XML_ParserCreate (); ; return 0; } _ACEOF for ac_lib in '' expat; do if test -z "$ac_lib"; then ac_res="none required" else ac_res=-l$ac_lib LIBS="-l$ac_lib $ac_func_search_save_LIBS" fi if ac_fn_c_try_link "$LINENO"; then : ac_cv_search_XML_ParserCreate=$ac_res fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext if ${ac_cv_search_XML_ParserCreate+:} false; then : break fi done if ${ac_cv_search_XML_ParserCreate+:} false; then : else ac_cv_search_XML_ParserCreate=no fi rm conftest.$ac_ext LIBS=$ac_func_search_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_XML_ParserCreate" >&5 $as_echo "$ac_cv_search_XML_ParserCreate" >&6; } ac_res=$ac_cv_search_XML_ParserCreate if test "$ac_res" != no; then : test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" fi ac_config_headers="$ac_config_headers conf.h" ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C preprocessor" >&5 $as_echo_n "checking how to run the C preprocessor... " >&6; } # On Suns, sometimes $CPP names a directory. if test -n "$CPP" && test -d "$CPP"; then CPP= fi if test -z "$CPP"; then if ${ac_cv_prog_CPP+:} false; then : $as_echo_n "(cached) " >&6 else # Double quotes because CPP needs to be expanded for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp" do ac_preproc_ok=false for ac_c_preproc_warn_flag in '' yes do # Use a header file that comes with gcc, so configuring glibc # with a fresh cross-compiler works. # Prefer to if __STDC__ is defined, since # exists even on freestanding compilers. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifdef __STDC__ # include #else # include #endif Syntax error _ACEOF if ac_fn_c_try_cpp "$LINENO"; then : else # Broken: fails on valid input. continue fi rm -f conftest.err conftest.i conftest.$ac_ext # OK, works on sane cases. Now check whether nonexistent headers # can be detected and how. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if ac_fn_c_try_cpp "$LINENO"; then : # Broken: success on invalid input. continue else # Passes both tests. ac_preproc_ok=: break fi rm -f conftest.err conftest.i conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f conftest.i conftest.err conftest.$ac_ext if $ac_preproc_ok; then : break fi done ac_cv_prog_CPP=$CPP fi CPP=$ac_cv_prog_CPP else ac_cv_prog_CPP=$CPP fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CPP" >&5 $as_echo "$CPP" >&6; } ac_preproc_ok=false for ac_c_preproc_warn_flag in '' yes do # Use a header file that comes with gcc, so configuring glibc # with a fresh cross-compiler works. # Prefer to if __STDC__ is defined, since # exists even on freestanding compilers. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifdef __STDC__ # include #else # include #endif Syntax error _ACEOF if ac_fn_c_try_cpp "$LINENO"; then : else # Broken: fails on valid input. continue fi rm -f conftest.err conftest.i conftest.$ac_ext # OK, works on sane cases. Now check whether nonexistent headers # can be detected and how. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if ac_fn_c_try_cpp "$LINENO"; then : # Broken: success on invalid input. continue else # Passes both tests. ac_preproc_ok=: break fi rm -f conftest.err conftest.i conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f conftest.i conftest.err conftest.$ac_ext if $ac_preproc_ok; then : else { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "C preprocessor \"$CPP\" fails sanity check See \`config.log' for more details" "$LINENO" 5; } fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu { $as_echo "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5 $as_echo_n "checking for grep that handles long lines and -e... " >&6; } if ${ac_cv_path_GREP+:} false; then : $as_echo_n "(cached) " >&6 else if test -z "$GREP"; then ac_path_GREP_found=false # Loop through the user's path and test for each of PROGNAME-LIST as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_prog in grep ggrep; do for ac_exec_ext in '' $ac_executable_extensions; do ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext" as_fn_executable_p "$ac_path_GREP" || continue # Check for GNU ac_path_GREP and select it if it is found. # Check for GNU $ac_path_GREP case `"$ac_path_GREP" --version 2>&1` in *GNU*) ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;; *) ac_count=0 $as_echo_n 0123456789 >"conftest.in" while : do cat "conftest.in" "conftest.in" >"conftest.tmp" mv "conftest.tmp" "conftest.in" cp "conftest.in" "conftest.nl" $as_echo 'GREP' >> "conftest.nl" "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break as_fn_arith $ac_count + 1 && ac_count=$as_val if test $ac_count -gt ${ac_path_GREP_max-0}; then # Best one so far, save it but keep looking for a better one ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_max=$ac_count fi # 10*(2^10) chars as input seems more than enough test $ac_count -gt 10 && break done rm -f conftest.in conftest.tmp conftest.nl conftest.out;; esac $ac_path_GREP_found && break 3 done done done IFS=$as_save_IFS if test -z "$ac_cv_path_GREP"; then as_fn_error $? "no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 fi else ac_cv_path_GREP=$GREP fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP" >&5 $as_echo "$ac_cv_path_GREP" >&6; } GREP="$ac_cv_path_GREP" { $as_echo "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5 $as_echo_n "checking for egrep... " >&6; } if ${ac_cv_path_EGREP+:} false; then : $as_echo_n "(cached) " >&6 else if echo a | $GREP -E '(a|b)' >/dev/null 2>&1 then ac_cv_path_EGREP="$GREP -E" else if test -z "$EGREP"; then ac_path_EGREP_found=false # Loop through the user's path and test for each of PROGNAME-LIST as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_prog in egrep; do for ac_exec_ext in '' $ac_executable_extensions; do ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext" as_fn_executable_p "$ac_path_EGREP" || continue # Check for GNU ac_path_EGREP and select it if it is found. # Check for GNU $ac_path_EGREP case `"$ac_path_EGREP" --version 2>&1` in *GNU*) ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;; *) ac_count=0 $as_echo_n 0123456789 >"conftest.in" while : do cat "conftest.in" "conftest.in" >"conftest.tmp" mv "conftest.tmp" "conftest.in" cp "conftest.in" "conftest.nl" $as_echo 'EGREP' >> "conftest.nl" "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break as_fn_arith $ac_count + 1 && ac_count=$as_val if test $ac_count -gt ${ac_path_EGREP_max-0}; then # Best one so far, save it but keep looking for a better one ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_max=$ac_count fi # 10*(2^10) chars as input seems more than enough test $ac_count -gt 10 && break done rm -f conftest.in conftest.tmp conftest.nl conftest.out;; esac $ac_path_EGREP_found && break 3 done done done IFS=$as_save_IFS if test -z "$ac_cv_path_EGREP"; then as_fn_error $? "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 fi else ac_cv_path_EGREP=$EGREP fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5 $as_echo "$ac_cv_path_EGREP" >&6; } EGREP="$ac_cv_path_EGREP" { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5 $as_echo_n "checking for ANSI C header files... " >&6; } if ${ac_cv_header_stdc+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include #include #include int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_header_stdc=yes else ac_cv_header_stdc=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext if test $ac_cv_header_stdc = yes; then # SunOS 4.x string.h does not declare mem*, contrary to ANSI. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "memchr" >/dev/null 2>&1; then : else ac_cv_header_stdc=no fi rm -f conftest* fi if test $ac_cv_header_stdc = yes; then # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "free" >/dev/null 2>&1; then : else ac_cv_header_stdc=no fi rm -f conftest* fi if test $ac_cv_header_stdc = yes; then # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. if test "$cross_compiling" = yes; then : : else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include #if ((' ' & 0x0FF) == 0x020) # define ISLOWER(c) ('a' <= (c) && (c) <= 'z') # define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) #else # define ISLOWER(c) \ (('a' <= (c) && (c) <= 'i') \ || ('j' <= (c) && (c) <= 'r') \ || ('s' <= (c) && (c) <= 'z')) # define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) #endif #define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) int main () { int i; for (i = 0; i < 256; i++) if (XOR (islower (i), ISLOWER (i)) || toupper (i) != TOUPPER (i)) return 2; return 0; } _ACEOF if ac_fn_c_try_run "$LINENO"; then : else ac_cv_header_stdc=no fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdc" >&5 $as_echo "$ac_cv_header_stdc" >&6; } if test $ac_cv_header_stdc = yes; then $as_echo "#define STDC_HEADERS 1" >>confdefs.h fi # On IRIX 5.3, sys/types and inttypes.h are conflicting. for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \ inttypes.h stdint.h unistd.h do : as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default " if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : cat >>confdefs.h <<_ACEOF #define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF fi done for ac_header in sys/select.h do : ac_fn_c_check_header_mongrel "$LINENO" "sys/select.h" "ac_cv_header_sys_select_h" "$ac_includes_default" if test "x$ac_cv_header_sys_select_h" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_SYS_SELECT_H 1 _ACEOF fi done for ac_header in pty.h do : ac_fn_c_check_header_mongrel "$LINENO" "pty.h" "ac_cv_header_pty_h" "$ac_includes_default" if test "x$ac_cv_header_pty_h" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_PTY_H 1 _ACEOF fi done for ac_header in libutil.h do : ac_fn_c_check_header_mongrel "$LINENO" "libutil.h" "ac_cv_header_libutil_h" "$ac_includes_default" if test "x$ac_cv_header_libutil_h" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_LIBUTIL_H 1 _ACEOF fi done for ac_header in util.h do : ac_fn_c_check_header_mongrel "$LINENO" "util.h" "ac_cv_header_util_h" "$ac_includes_default" if test "x$ac_cv_header_util_h" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_UTIL_H 1 _ACEOF fi done for ac_header in getopt.h do : ac_fn_c_check_header_mongrel "$LINENO" "getopt.h" "ac_cv_header_getopt_h" "$ac_includes_default" if test "x$ac_cv_header_getopt_h" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_GETOPT_H 1 _ACEOF fi done for ac_header in expat.h do : ac_fn_c_check_header_mongrel "$LINENO" "expat.h" "ac_cv_header_expat_h" "$ac_includes_default" if test "x$ac_cv_header_expat_h" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_EXPAT_H 1 _ACEOF else as_fn_error $? "Cannot find libexpat header file" "$LINENO" 5 fi done for ac_func in vasprintf do : ac_fn_c_check_func "$LINENO" "vasprintf" "ac_cv_func_vasprintf" if test "x$ac_cv_func_vasprintf" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_VASPRINTF 1 _ACEOF fi done { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _LARGEFILE_SOURCE value needed for large files" >&5 $as_echo_n "checking for _LARGEFILE_SOURCE value needed for large files... " >&6; } if ${ac_cv_sys_largefile_source+:} false; then : $as_echo_n "(cached) " >&6 else while :; do cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include /* for off_t */ #include int main () { int (*fp) (FILE *, off_t, int) = fseeko; return fseeko (stdin, 0, 0) && fp (stdin, 0, 0); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_sys_largefile_source=no; break fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #define _LARGEFILE_SOURCE 1 #include /* for off_t */ #include int main () { int (*fp) (FILE *, off_t, int) = fseeko; return fseeko (stdin, 0, 0) && fp (stdin, 0, 0); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_sys_largefile_source=1; break fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext ac_cv_sys_largefile_source=unknown break done fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_largefile_source" >&5 $as_echo "$ac_cv_sys_largefile_source" >&6; } case $ac_cv_sys_largefile_source in #( no | unknown) ;; *) cat >>confdefs.h <<_ACEOF #define _LARGEFILE_SOURCE $ac_cv_sys_largefile_source _ACEOF ;; esac rm -rf conftest* # We used to try defining _XOPEN_SOURCE=500 too, to work around a bug # in glibc 2.1.3, but that breaks too many other things. # If you want fseeko and ftello with glibc, upgrade to a fixed glibc. if test $ac_cv_sys_largefile_source != unknown; then $as_echo "#define HAVE_FSEEKO 1" >>confdefs.h fi LIBX3270DIR='${sysconfdir}/x3270' # Check whether --enable-dbcs was given. if test "${enable_dbcs+set}" = set; then : enableval=$enable_dbcs; fi case "$enable_dbcs" in no) ;; *) $as_echo "#define X3270_DBCS 1" >>confdefs.h ;; esac # Check whether --enable-local_process was given. if test "${enable_local_process+set}" = set; then : enableval=$enable_local_process; fi case "$enable_local_process" in ""|yes) $as_echo "#define X3270_LOCAL_PROCESS 1" >>confdefs.h ;; esac # Check whether --enable-ipv6 was given. if test "${enable_ipv6+set}" = set; then : enableval=$enable_ipv6; fi case "$enable_ipv6" in ""|yes) $as_echo "#define X3270_IPV6 1" >>confdefs.h ;; esac ac_config_files="$ac_config_files Makefile Makefile.obj" cat >confcache <<\_ACEOF # This file is a shell script that caches the results of configure # tests run on this system so they can be shared between configure # scripts and configure runs, see configure's option --config-cache. # It is not useful on other systems. If it contains results you don't # want to keep, you may remove or edit it. # # config.status only pays attention to the cache file if you give it # the --recheck option to rerun configure. # # `ac_cv_env_foo' variables (set or unset) will be overridden when # loading this file, other *unset* `ac_cv_foo' will be assigned the # following values. _ACEOF # The following way of writing the cache mishandles newlines in values, # but we know of no workaround that is simple, portable, and efficient. # So, we kill variables containing newlines. # Ultrix sh set writes to stderr and can't be redirected directly, # and sets the high bit in the cache file unless we assign to the vars. ( for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do eval ac_val=\$$ac_var case $ac_val in #( *${as_nl}*) case $ac_var in #( *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 $as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; esac case $ac_var in #( _ | IFS | as_nl) ;; #( BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( *) { eval $ac_var=; unset $ac_var;} ;; esac ;; esac done (set) 2>&1 | case $as_nl`(ac_space=' '; set) 2>&1` in #( *${as_nl}ac_space=\ *) # `set' does not quote correctly, so add quotes: double-quote # substitution turns \\\\ into \\, and sed turns \\ into \. sed -n \ "s/'/'\\\\''/g; s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" ;; #( *) # `set' quotes correctly as required by POSIX, so do not add quotes. sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" ;; esac | sort ) | sed ' /^ac_cv_env_/b end t clear :clear s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/ t end s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ :end' >>confcache if diff "$cache_file" confcache >/dev/null 2>&1; then :; else if test -w "$cache_file"; then if test "x$cache_file" != "x/dev/null"; then { $as_echo "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5 $as_echo "$as_me: updating cache $cache_file" >&6;} if test ! -f "$cache_file" || test -h "$cache_file"; then cat confcache >"$cache_file" else case $cache_file in #( */* | ?:*) mv -f confcache "$cache_file"$$ && mv -f "$cache_file"$$ "$cache_file" ;; #( *) mv -f confcache "$cache_file" ;; esac fi fi else { $as_echo "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5 $as_echo "$as_me: not updating unwritable cache $cache_file" >&6;} fi fi rm -f confcache test "x$prefix" = xNONE && prefix=$ac_default_prefix # Let make expand exec_prefix. test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' DEFS=-DHAVE_CONFIG_H ac_libobjs= ac_ltlibobjs= U= for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue # 1. Remove the extension, and $U if already installed. ac_script='s/\$U\././;s/\.o$//;s/\.obj$//' ac_i=`$as_echo "$ac_i" | sed "$ac_script"` # 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR # will be set to the directory where LIBOBJS objects are built. as_fn_append ac_libobjs " \${LIBOBJDIR}$ac_i\$U.$ac_objext" as_fn_append ac_ltlibobjs " \${LIBOBJDIR}$ac_i"'$U.lo' done LIBOBJS=$ac_libobjs LTLIBOBJS=$ac_ltlibobjs : "${CONFIG_STATUS=./config.status}" ac_write_fail=0 ac_clean_files_save=$ac_clean_files ac_clean_files="$ac_clean_files $CONFIG_STATUS" { $as_echo "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5 $as_echo "$as_me: creating $CONFIG_STATUS" >&6;} as_write_fail=0 cat >$CONFIG_STATUS <<_ASEOF || as_write_fail=1 #! $SHELL # Generated by $as_me. # Run this file to recreate the current configuration. # Compiler output produced by configure, useful for debugging # configure, is in config.log if it exists. debug=false ac_cs_recheck=false ac_cs_silent=false SHELL=\${CONFIG_SHELL-$SHELL} export SHELL _ASEOF cat >>$CONFIG_STATUS <<\_ASEOF || as_write_fail=1 ## -------------------- ## ## M4sh Initialization. ## ## -------------------- ## # Be more Bourne compatible DUALCASE=1; export DUALCASE # for MKS sh if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST else case `(set -o) 2>/dev/null` in #( *posix*) : set -o posix ;; #( *) : ;; esac fi as_nl=' ' export as_nl # Printing a long string crashes Solaris 7 /usr/bin/printf. as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo # Prefer a ksh shell builtin over an external printf program on Solaris, # but without wasting forks for bash or zsh. if test -z "$BASH_VERSION$ZSH_VERSION" \ && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then as_echo='print -r --' as_echo_n='print -rn --' elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then as_echo='printf %s\n' as_echo_n='printf %s' else if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' as_echo_n='/usr/ucb/echo -n' else as_echo_body='eval expr "X$1" : "X\\(.*\\)"' as_echo_n_body='eval arg=$1; case $arg in #( *"$as_nl"*) expr "X$arg" : "X\\(.*\\)$as_nl"; arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; esac; expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" ' export as_echo_n_body as_echo_n='sh -c $as_echo_n_body as_echo' fi export as_echo_body as_echo='sh -c $as_echo_body as_echo' fi # The user is always right. if test "${PATH_SEPARATOR+set}" != set; then PATH_SEPARATOR=: (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || PATH_SEPARATOR=';' } fi # IFS # We need space, tab and new line, in precisely that order. Quoting is # there to prevent editors from complaining about space-tab. # (If _AS_PATH_WALK were called with IFS unset, it would disable word # splitting by setting IFS to empty value.) IFS=" "" $as_nl" # Find who we are. Look in the path if we contain no directory separator. as_myself= case $0 in #(( *[\\/]* ) as_myself=$0 ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break done IFS=$as_save_IFS ;; esac # We did not find ourselves, most probably we were run as `sh COMMAND' # in which case we are not to be found in the path. if test "x$as_myself" = x; then as_myself=$0 fi if test ! -f "$as_myself"; then $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 exit 1 fi # Unset variables that we do not need and which cause bugs (e.g. in # pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" # suppresses any "Segmentation fault" message there. '((' could # trigger a bug in pdksh 5.2.14. for as_var in BASH_ENV ENV MAIL MAILPATH do eval test x\${$as_var+set} = xset \ && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : done PS1='$ ' PS2='> ' PS4='+ ' # NLS nuisances. LC_ALL=C export LC_ALL LANGUAGE=C export LANGUAGE # CDPATH. (unset CDPATH) >/dev/null 2>&1 && unset CDPATH # as_fn_error STATUS ERROR [LINENO LOG_FD] # ---------------------------------------- # Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are # provided, also output the error to LOG_FD, referencing LINENO. Then exit the # script with STATUS, using 1 if that was 0. as_fn_error () { as_status=$1; test $as_status -eq 0 && as_status=1 if test "$4"; then as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 fi $as_echo "$as_me: error: $2" >&2 as_fn_exit $as_status } # as_fn_error # as_fn_set_status STATUS # ----------------------- # Set $? to STATUS, without forking. as_fn_set_status () { return $1 } # as_fn_set_status # as_fn_exit STATUS # ----------------- # Exit the shell with STATUS, even in a "trap 0" or "set -e" context. as_fn_exit () { set +e as_fn_set_status $1 exit $1 } # as_fn_exit # as_fn_unset VAR # --------------- # Portably unset VAR. as_fn_unset () { { eval $1=; unset $1;} } as_unset=as_fn_unset # as_fn_append VAR VALUE # ---------------------- # Append the text in VALUE to the end of the definition contained in VAR. Take # advantage of any shell optimizations that allow amortized linear growth over # repeated appends, instead of the typical quadratic growth present in naive # implementations. if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : eval 'as_fn_append () { eval $1+=\$2 }' else as_fn_append () { eval $1=\$$1\$2 } fi # as_fn_append # as_fn_arith ARG... # ------------------ # Perform arithmetic evaluation on the ARGs, and store the result in the # global $as_val. Take advantage of shells that can avoid forks. The arguments # must be portable across $(()) and expr. if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : eval 'as_fn_arith () { as_val=$(( $* )) }' else as_fn_arith () { as_val=`expr "$@" || test $? -eq 1` } fi # as_fn_arith if expr a : '\(a\)' >/dev/null 2>&1 && test "X`expr 00001 : '.*\(...\)'`" = X001; then as_expr=expr else as_expr=false fi if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then as_basename=basename else as_basename=false fi if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then as_dirname=dirname else as_dirname=false fi as_me=`$as_basename -- "$0" || $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ X"$0" : 'X\(//\)$' \| \ X"$0" : 'X\(/\)' \| . 2>/dev/null || $as_echo X/"$0" | sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/ q } /^X\/\(\/\/\)$/{ s//\1/ q } /^X\/\(\/\).*/{ s//\1/ q } s/.*/./; q'` # Avoid depending upon Character Ranges. as_cr_letters='abcdefghijklmnopqrstuvwxyz' as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' as_cr_Letters=$as_cr_letters$as_cr_LETTERS as_cr_digits='0123456789' as_cr_alnum=$as_cr_Letters$as_cr_digits ECHO_C= ECHO_N= ECHO_T= case `echo -n x` in #((((( -n*) case `echo 'xy\c'` in *c*) ECHO_T=' ';; # ECHO_T is single tab character. xy) ECHO_C='\c';; *) echo `echo ksh88 bug on AIX 6.1` > /dev/null ECHO_T=' ';; esac;; *) ECHO_N='-n';; esac rm -f conf$$ conf$$.exe conf$$.file if test -d conf$$.dir; then rm -f conf$$.dir/conf$$.file else rm -f conf$$.dir mkdir conf$$.dir 2>/dev/null fi if (echo >conf$$.file) 2>/dev/null; then if ln -s conf$$.file conf$$ 2>/dev/null; then as_ln_s='ln -s' # ... but there are two gotchas: # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. # In both cases, we have to default to `cp -pR'. ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || as_ln_s='cp -pR' elif ln conf$$.file conf$$ 2>/dev/null; then as_ln_s=ln else as_ln_s='cp -pR' fi else as_ln_s='cp -pR' fi rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file rmdir conf$$.dir 2>/dev/null # as_fn_mkdir_p # ------------- # Create "$as_dir" as a directory, including parents if necessary. as_fn_mkdir_p () { case $as_dir in #( -*) as_dir=./$as_dir;; esac test -d "$as_dir" || eval $as_mkdir_p || { as_dirs= while :; do case $as_dir in #( *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( *) as_qdir=$as_dir;; esac as_dirs="'$as_qdir' $as_dirs" as_dir=`$as_dirname -- "$as_dir" || $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_dir" : 'X\(//\)[^/]' \| \ X"$as_dir" : 'X\(//\)$' \| \ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$as_dir" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` test -d "$as_dir" && break done test -z "$as_dirs" || eval "mkdir $as_dirs" } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" } # as_fn_mkdir_p if mkdir -p . 2>/dev/null; then as_mkdir_p='mkdir -p "$as_dir"' else test -d ./-p && rmdir ./-p as_mkdir_p=false fi # as_fn_executable_p FILE # ----------------------- # Test if FILE is an executable regular file. as_fn_executable_p () { test -f "$1" && test -x "$1" } # as_fn_executable_p as_test_x='test -x' as_executable_p=as_fn_executable_p # Sed expression to map a string onto a valid CPP name. as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" # Sed expression to map a string onto a valid variable name. as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" exec 6>&1 ## ----------------------------------- ## ## Main body of $CONFIG_STATUS script. ## ## ----------------------------------- ## _ASEOF test $as_write_fail = 0 && chmod +x $CONFIG_STATUS || ac_write_fail=1 cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # Save the log message, to keep $0 and so on meaningful, and to # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" This file was extended by b3270 $as_me 4.0, which was generated by GNU Autoconf 2.69. Invocation command line was CONFIG_FILES = $CONFIG_FILES CONFIG_HEADERS = $CONFIG_HEADERS CONFIG_LINKS = $CONFIG_LINKS CONFIG_COMMANDS = $CONFIG_COMMANDS $ $0 $@ on `(hostname || uname -n) 2>/dev/null | sed 1q` " _ACEOF case $ac_config_files in *" "*) set x $ac_config_files; shift; ac_config_files=$*;; esac case $ac_config_headers in *" "*) set x $ac_config_headers; shift; ac_config_headers=$*;; esac cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 # Files that config.status was made for. config_files="$ac_config_files" config_headers="$ac_config_headers" _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 ac_cs_usage="\ \`$as_me' instantiates files and other configuration actions from templates according to the current configuration. Unless the files and actions are specified as TAGs, all are instantiated by default. Usage: $0 [OPTION]... [TAG]... -h, --help print this help, then exit -V, --version print version number and configuration settings, then exit --config print configuration, then exit -q, --quiet, --silent do not print progress messages -d, --debug don't remove temporary files --recheck update $as_me by reconfiguring in the same conditions --file=FILE[:TEMPLATE] instantiate the configuration file FILE --header=FILE[:TEMPLATE] instantiate the configuration header FILE Configuration files: $config_files Configuration headers: $config_headers Report bugs to the package provider." _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" ac_cs_version="\\ b3270 config.status 4.0 configured by $0, generated by GNU Autoconf 2.69, with options \\"\$ac_cs_config\\" Copyright (C) 2012 Free Software Foundation, Inc. This config.status script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it." ac_pwd='$ac_pwd' srcdir='$srcdir' INSTALL='$INSTALL' test -n "\$AWK" || AWK=awk _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # The default lists apply if the user does not specify any file. ac_need_defaults=: while test $# != 0 do case $1 in --*=?*) ac_option=`expr "X$1" : 'X\([^=]*\)='` ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'` ac_shift=: ;; --*=) ac_option=`expr "X$1" : 'X\([^=]*\)='` ac_optarg= ac_shift=: ;; *) ac_option=$1 ac_optarg=$2 ac_shift=shift ;; esac case $ac_option in # Handling of the options. -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) ac_cs_recheck=: ;; --version | --versio | --versi | --vers | --ver | --ve | --v | -V ) $as_echo "$ac_cs_version"; exit ;; --config | --confi | --conf | --con | --co | --c ) $as_echo "$ac_cs_config"; exit ;; --debug | --debu | --deb | --de | --d | -d ) debug=: ;; --file | --fil | --fi | --f ) $ac_shift case $ac_optarg in *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; '') as_fn_error $? "missing file argument" ;; esac as_fn_append CONFIG_FILES " '$ac_optarg'" ac_need_defaults=false;; --header | --heade | --head | --hea ) $ac_shift case $ac_optarg in *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; esac as_fn_append CONFIG_HEADERS " '$ac_optarg'" ac_need_defaults=false;; --he | --h) # Conflict between --help and --header as_fn_error $? "ambiguous option: \`$1' Try \`$0 --help' for more information.";; --help | --hel | -h ) $as_echo "$ac_cs_usage"; exit ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil | --si | --s) ac_cs_silent=: ;; # This is an error. -*) as_fn_error $? "unrecognized option: \`$1' Try \`$0 --help' for more information." ;; *) as_fn_append ac_config_targets " $1" ac_need_defaults=false ;; esac shift done ac_configure_extra_args= if $ac_cs_silent; then exec 6>/dev/null ac_configure_extra_args="$ac_configure_extra_args --silent" fi _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 if \$ac_cs_recheck; then set X $SHELL '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion shift \$as_echo "running CONFIG_SHELL=$SHELL \$*" >&6 CONFIG_SHELL='$SHELL' export CONFIG_SHELL exec "\$@" fi _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 exec 5>>config.log { echo sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX ## Running $as_me. ## _ASBOX $as_echo "$ac_log" } >&5 _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # Handling of arguments. for ac_config_target in $ac_config_targets do case $ac_config_target in "conf.h") CONFIG_HEADERS="$CONFIG_HEADERS conf.h" ;; "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;; "Makefile.obj") CONFIG_FILES="$CONFIG_FILES Makefile.obj" ;; *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;; esac done # If the user did not use the arguments to specify the items to instantiate, # then the envvar interface is used. Set only those that are not. # We use the long form for the default assignment because of an extremely # bizarre bug on SunOS 4.1.3. if $ac_need_defaults; then test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers fi # Have a temporary directory for convenience. Make it in the build tree # simply because there is no reason against having it here, and in addition, # creating and moving files from /tmp can sometimes cause problems. # Hook for its removal unless debugging. # Note that there is a small window in which the directory will not be cleaned: # after its creation but before its name has been assigned to `$tmp'. $debug || { tmp= ac_tmp= trap 'exit_status=$? : "${ac_tmp:=$tmp}" { test ! -d "$ac_tmp" || rm -fr "$ac_tmp"; } && exit $exit_status ' 0 trap 'as_fn_exit 1' 1 2 13 15 } # Create a (secure) tmp directory for tmp files. { tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` && test -d "$tmp" } || { tmp=./conf$$-$RANDOM (umask 077 && mkdir "$tmp") } || as_fn_error $? "cannot create a temporary directory in ." "$LINENO" 5 ac_tmp=$tmp # Set up the scripts for CONFIG_FILES section. # No need to generate them if there are no CONFIG_FILES. # This happens for instance with `./config.status config.h'. if test -n "$CONFIG_FILES"; then ac_cr=`echo X | tr X '\015'` # On cygwin, bash can eat \r inside `` if the user requested igncr. # But we know of no other shell where ac_cr would be empty at this # point, so we can use a bashism as a fallback. if test "x$ac_cr" = x; then eval ac_cr=\$\'\\r\' fi ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' /dev/null` if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then ac_cs_awk_cr='\\r' else ac_cs_awk_cr=$ac_cr fi echo 'BEGIN {' >"$ac_tmp/subs1.awk" && _ACEOF { echo "cat >conf$$subs.awk <<_ACEOF" && echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' && echo "_ACEOF" } >conf$$subs.sh || as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 ac_delim_num=`echo "$ac_subst_vars" | grep -c '^'` ac_delim='%!_!# ' for ac_last_try in false false false false false :; do . ./conf$$subs.sh || as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 ac_delim_n=`sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | grep -c X` if test $ac_delim_n = $ac_delim_num; then break elif $ac_last_try; then as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 else ac_delim="$ac_delim!$ac_delim _$ac_delim!! " fi done rm -f conf$$subs.sh cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 cat >>"\$ac_tmp/subs1.awk" <<\\_ACAWK && _ACEOF sed -n ' h s/^/S["/; s/!.*/"]=/ p g s/^[^!]*!// :repl t repl s/'"$ac_delim"'$// t delim :nl h s/\(.\{148\}\)..*/\1/ t more1 s/["\\]/\\&/g; s/^/"/; s/$/\\n"\\/ p n b repl :more1 s/["\\]/\\&/g; s/^/"/; s/$/"\\/ p g s/.\{148\}// t nl :delim h s/\(.\{148\}\)..*/\1/ t more2 s/["\\]/\\&/g; s/^/"/; s/$/"/ p b :more2 s/["\\]/\\&/g; s/^/"/; s/$/"\\/ p g s/.\{148\}// t delim ' >$CONFIG_STATUS || ac_write_fail=1 rm -f conf$$subs.awk cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 _ACAWK cat >>"\$ac_tmp/subs1.awk" <<_ACAWK && for (key in S) S_is_set[key] = 1 FS = "" } { line = $ 0 nfields = split(line, field, "@") substed = 0 len = length(field[1]) for (i = 2; i < nfields; i++) { key = field[i] keylen = length(key) if (S_is_set[key]) { value = S[key] line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3) len += length(value) + length(field[++i]) substed = 1 } else len += 1 + keylen } print line } _ACAWK _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g" else cat fi < "$ac_tmp/subs1.awk" > "$ac_tmp/subs.awk" \ || as_fn_error $? "could not setup config files machinery" "$LINENO" 5 _ACEOF # VPATH may cause trouble with some makes, so we remove sole $(srcdir), # ${srcdir} and @srcdir@ entries from VPATH if srcdir is ".", strip leading and # trailing colons and then remove the whole line if VPATH becomes empty # (actually we leave an empty line to preserve line numbers). if test "x$srcdir" = x.; then ac_vpsub='/^[ ]*VPATH[ ]*=[ ]*/{ h s/// s/^/:/ s/[ ]*$/:/ s/:\$(srcdir):/:/g s/:\${srcdir}:/:/g s/:@srcdir@:/:/g s/^:*// s/:*$// x s/\(=[ ]*\).*/\1/ G s/\n// s/^[^=]*=[ ]*$// }' fi cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 fi # test -n "$CONFIG_FILES" # Set up the scripts for CONFIG_HEADERS section. # No need to generate them if there are no CONFIG_HEADERS. # This happens for instance with `./config.status Makefile'. if test -n "$CONFIG_HEADERS"; then cat >"$ac_tmp/defines.awk" <<\_ACAWK || BEGIN { _ACEOF # Transform confdefs.h into an awk script `defines.awk', embedded as # here-document in config.status, that substitutes the proper values into # config.h.in to produce config.h. # Create a delimiter string that does not exist in confdefs.h, to ease # handling of long lines. ac_delim='%!_!# ' for ac_last_try in false false :; do ac_tt=`sed -n "/$ac_delim/p" confdefs.h` if test -z "$ac_tt"; then break elif $ac_last_try; then as_fn_error $? "could not make $CONFIG_HEADERS" "$LINENO" 5 else ac_delim="$ac_delim!$ac_delim _$ac_delim!! " fi done # For the awk script, D is an array of macro values keyed by name, # likewise P contains macro parameters if any. Preserve backslash # newline sequences. ac_word_re=[_$as_cr_Letters][_$as_cr_alnum]* sed -n ' s/.\{148\}/&'"$ac_delim"'/g t rset :rset s/^[ ]*#[ ]*define[ ][ ]*/ / t def d :def s/\\$// t bsnl s/["\\]/\\&/g s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ D["\1"]=" \3"/p s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2"/p d :bsnl s/["\\]/\\&/g s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ D["\1"]=" \3\\\\\\n"\\/p t cont s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2\\\\\\n"\\/p t cont d :cont n s/.\{148\}/&'"$ac_delim"'/g t clear :clear s/\\$// t bsnlc s/["\\]/\\&/g; s/^/"/; s/$/"/p d :bsnlc s/["\\]/\\&/g; s/^/"/; s/$/\\\\\\n"\\/p b cont ' >$CONFIG_STATUS || ac_write_fail=1 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 for (key in D) D_is_set[key] = 1 FS = "" } /^[\t ]*#[\t ]*(define|undef)[\t ]+$ac_word_re([\t (]|\$)/ { line = \$ 0 split(line, arg, " ") if (arg[1] == "#") { defundef = arg[2] mac1 = arg[3] } else { defundef = substr(arg[1], 2) mac1 = arg[2] } split(mac1, mac2, "(") #) macro = mac2[1] prefix = substr(line, 1, index(line, defundef) - 1) if (D_is_set[macro]) { # Preserve the white space surrounding the "#". print prefix "define", macro P[macro] D[macro] next } else { # Replace #undef with comments. This is necessary, for example, # in the case of _POSIX_SOURCE, which is predefined and required # on some systems where configure will not decide to define it. if (defundef == "undef") { print "/*", prefix defundef, macro, "*/" next } } } { print } _ACAWK _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 as_fn_error $? "could not setup config headers machinery" "$LINENO" 5 fi # test -n "$CONFIG_HEADERS" eval set X " :F $CONFIG_FILES :H $CONFIG_HEADERS " shift for ac_tag do case $ac_tag in :[FHLC]) ac_mode=$ac_tag; continue;; esac case $ac_mode$ac_tag in :[FHL]*:*);; :L* | :C*:*) as_fn_error $? "invalid tag \`$ac_tag'" "$LINENO" 5;; :[FH]-) ac_tag=-:-;; :[FH]*) ac_tag=$ac_tag:$ac_tag.in;; esac ac_save_IFS=$IFS IFS=: set x $ac_tag IFS=$ac_save_IFS shift ac_file=$1 shift case $ac_mode in :L) ac_source=$1;; :[FH]) ac_file_inputs= for ac_f do case $ac_f in -) ac_f="$ac_tmp/stdin";; *) # Look for the file first in the build tree, then in the source tree # (if the path is not absolute). The absolute path cannot be DOS-style, # because $ac_f cannot contain `:'. test -f "$ac_f" || case $ac_f in [\\/$]*) false;; *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";; esac || as_fn_error 1 "cannot find input file: \`$ac_f'" "$LINENO" 5;; esac case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac as_fn_append ac_file_inputs " '$ac_f'" done # Let's still pretend it is `configure' which instantiates (i.e., don't # use $as_me), people would be surprised to read: # /* config.h. Generated by config.status. */ configure_input='Generated from '` $as_echo "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g' `' by configure.' if test x"$ac_file" != x-; then configure_input="$ac_file. $configure_input" { $as_echo "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5 $as_echo "$as_me: creating $ac_file" >&6;} fi # Neutralize special characters interpreted by sed in replacement strings. case $configure_input in #( *\&* | *\|* | *\\* ) ac_sed_conf_input=`$as_echo "$configure_input" | sed 's/[\\\\&|]/\\\\&/g'`;; #( *) ac_sed_conf_input=$configure_input;; esac case $ac_tag in *:-:* | *:-) cat >"$ac_tmp/stdin" \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;; esac ;; esac ac_dir=`$as_dirname -- "$ac_file" || $as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$ac_file" : 'X\(//\)[^/]' \| \ X"$ac_file" : 'X\(//\)$' \| \ X"$ac_file" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$ac_file" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` as_dir="$ac_dir"; as_fn_mkdir_p ac_builddir=. case "$ac_dir" in .) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` # A ".." for each directory in $ac_dir_suffix. ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` case $ac_top_builddir_sub in "") ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; esac ;; esac ac_abs_top_builddir=$ac_pwd ac_abs_builddir=$ac_pwd$ac_dir_suffix # for backward compatibility: ac_top_builddir=$ac_top_build_prefix case $srcdir in .) # We are building in place. ac_srcdir=. ac_top_srcdir=$ac_top_builddir_sub ac_abs_top_srcdir=$ac_pwd ;; [\\/]* | ?:[\\/]* ) # Absolute name. ac_srcdir=$srcdir$ac_dir_suffix; ac_top_srcdir=$srcdir ac_abs_top_srcdir=$srcdir ;; *) # Relative name. ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix ac_top_srcdir=$ac_top_build_prefix$srcdir ac_abs_top_srcdir=$ac_pwd/$srcdir ;; esac ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix case $ac_mode in :F) # # CONFIG_FILE # case $INSTALL in [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;; *) ac_INSTALL=$ac_top_build_prefix$INSTALL ;; esac _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # If the template does not know about datarootdir, expand it. # FIXME: This hack should be removed a few years after 2.60. ac_datarootdir_hack=; ac_datarootdir_seen= ac_sed_dataroot=' /datarootdir/ { p q } /@datadir@/p /@docdir@/p /@infodir@/p /@localedir@/p /@mandir@/p' case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in *datarootdir*) ac_datarootdir_seen=yes;; *@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 $as_echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;} _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_datarootdir_hack=' s&@datadir@&$datadir&g s&@docdir@&$docdir&g s&@infodir@&$infodir&g s&@localedir@&$localedir&g s&@mandir@&$mandir&g s&\\\${datarootdir}&$datarootdir&g' ;; esac _ACEOF # Neutralize VPATH when `$srcdir' = `.'. # Shell code in configure.ac might set extrasub. # FIXME: do we really want to maintain this feature? cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_sed_extra="$ac_vpsub $extrasub _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 :t /@[a-zA-Z_][a-zA-Z_0-9]*@/!b s|@configure_input@|$ac_sed_conf_input|;t t s&@top_builddir@&$ac_top_builddir_sub&;t t s&@top_build_prefix@&$ac_top_build_prefix&;t t s&@srcdir@&$ac_srcdir&;t t s&@abs_srcdir@&$ac_abs_srcdir&;t t s&@top_srcdir@&$ac_top_srcdir&;t t s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t s&@builddir@&$ac_builddir&;t t s&@abs_builddir@&$ac_abs_builddir&;t t s&@abs_top_builddir@&$ac_abs_top_builddir&;t t s&@INSTALL@&$ac_INSTALL&;t t $ac_datarootdir_hack " eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$ac_tmp/subs.awk" \ >$ac_tmp/out || as_fn_error $? "could not create $ac_file" "$LINENO" 5 test -z "$ac_datarootdir_hack$ac_datarootdir_seen" && { ac_out=`sed -n '/\${datarootdir}/p' "$ac_tmp/out"`; test -n "$ac_out"; } && { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' \ "$ac_tmp/out"`; test -z "$ac_out"; } && { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir' which seems to be undefined. Please make sure it is defined" >&5 $as_echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir' which seems to be undefined. Please make sure it is defined" >&2;} rm -f "$ac_tmp/stdin" case $ac_file in -) cat "$ac_tmp/out" && rm -f "$ac_tmp/out";; *) rm -f "$ac_file" && mv "$ac_tmp/out" "$ac_file";; esac \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;; :H) # # CONFIG_HEADER # if test x"$ac_file" != x-; then { $as_echo "/* $configure_input */" \ && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" } >"$ac_tmp/config.h" \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 if diff "$ac_file" "$ac_tmp/config.h" >/dev/null 2>&1; then { $as_echo "$as_me:${as_lineno-$LINENO}: $ac_file is unchanged" >&5 $as_echo "$as_me: $ac_file is unchanged" >&6;} else rm -f "$ac_file" mv "$ac_tmp/config.h" "$ac_file" \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 fi else $as_echo "/* $configure_input */" \ && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" \ || as_fn_error $? "could not create -" "$LINENO" 5 fi ;; esac done # for ac_tag as_fn_exit 0 _ACEOF ac_clean_files=$ac_clean_files_save test $ac_write_fail = 0 || as_fn_error $? "write failure creating $CONFIG_STATUS" "$LINENO" 5 # configure is writing to config.log, and then calls config.status. # config.status does its own redirection, appending to config.log. # Unfortunately, on DOS this fails, as config.log is still kept open # by configure, so config.status won't be able to write to it; its # output is simply discarded. So we exec the FD to /dev/null, # effectively closing config.log, so it can be properly (re)opened and # appended to by config.status. When coming back to configure, we # need to make the FD available again. if test "$no_create" != yes; then ac_cs_success=: ac_config_status_args= test "$silent" = yes && ac_config_status_args="$ac_config_status_args --quiet" exec 5>/dev/null $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false exec 5>>config.log # Use ||, not &&, to avoid exiting from the if with $? = 1, which # would make configure fail if this is the last instruction. $ac_cs_success || as_fn_exit 1 fi if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5 $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;} fi suite3270-4.1/b3270/configure.in000066400000000000000000000072431413735575200161130ustar00rootroot00000000000000dnl Copyright (c) 2000-2009, 2014-2016, 2020 Paul Mattes. dnl All rights reserved. dnl dnl Redistribution and use in source and binary forms, with or without dnl modification, are permitted provided that the following conditions dnl are met: dnl * Redistributions of source code must retain the above copyright dnl notice, this list of conditions and the following disclaimer. dnl * Redistributions in binary form must reproduce the above copyright dnl notice, this list of conditions and the following disclaimer in the dnl documentation and/or other materials provided with the distribution. dnl * Neither the name of Paul Mattes nor his contributors may be used dnl to endorse or promote products derived from this software without dnl specific prior written permission. dnl dnl THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS dnl OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED dnl WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE dnl DISCLAIMED. IN NO EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, dnl INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES dnl (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR dnl SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) dnl HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, dnl STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING dnl IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE dnl POSSIBILITY OF SUCH DAMAGE. dnl Process this file with autoconf to produce a configure script. AC_INIT(b3270,4.0) AC_PREREQ(2.50) dnl Checks for programs. AC_PROG_INSTALL AC_PROG_CC dnl Figure out what sort of host this is. dnl If it's solaris, then pass the -D__EXTENSIONS__ flag to cc, so that dnl all of usual Unix functions are visible to strict ANSI compilers. ansi="-std=c99 -pedantic" AC_CANONICAL_HOST case "$host_os" in *cygwin*) ansi="" ;; solaris2*) CPPFLAGS="$CPPFLAGS -D__EXTENSIONS__" ;; darwin*) CCOPTIONS="$CCOPTIONS -no-cpp-precomp -Wno-deprecated-declarations" ;; linux*) CPPFLAGS="$CPPFLAGS -D_POSIX_SOURCE" ;; esac if test "$GCC" = yes then # Add common gcc options, plus flags for dependency generation. CCOPTIONS="$CCOPTIONS -Wall -Wsign-compare $ansi -Wno-variadic-macros -MMD -MP" fi AC_SUBST(host) AC_SUBST(HSOPTS) AC_SUBST(CCOPTIONS) dnl Check for libraries. dnl Note that the order here is important. The last libraries should appear dnl first, so that objects in them can be used by subsequent libraries. AC_SEARCH_LIBS(forkpty, util) AC_CHECK_FUNCS(forkpty) AC_SEARCH_LIBS(gethostbyname, nsl) AC_SEARCH_LIBS(socket, socket) AC_SEARCH_LIBS(XML_ParserCreate, expat) dnl Checks for header files. AC_CONFIG_HEADER(conf.h) AC_CHECK_HEADERS(sys/select.h) AC_CHECK_HEADERS(pty.h) AC_CHECK_HEADERS(libutil.h) AC_CHECK_HEADERS(util.h) AC_CHECK_HEADERS(getopt.h) AC_CHECK_HEADERS(expat.h, , [AC_MSG_ERROR(Cannot find libexpat header file)]) dnl Checks for library functions. AC_CHECK_FUNCS(vasprintf) AC_FUNC_FSEEKO dnl Set up the configuration directory. LIBX3270DIR='${sysconfdir}/x3270' AC_SUBST(LIBX3270DIR) dnl Check for unwanted parts. AC_ARG_ENABLE(dbcs,[ --disable-dbcs leave out DBCS support]) case "$enable_dbcs" in no) ;; *) AC_DEFINE(X3270_DBCS,1) ;; esac AC_ARG_ENABLE(local_process,[ --disable-local-process leave out local process support]) case "$enable_local_process" in ""|yes) AC_DEFINE(X3270_LOCAL_PROCESS,1) ;; esac AC_ARG_ENABLE(ipv6,[ --disable-ipv6 leave out IPv6 support]) case "$enable_ipv6" in ""|yes) AC_DEFINE(X3270_IPV6,1) ;; esac dnl Generate the Makefiles. AC_CONFIG_FILES(Makefile Makefile.obj) AC_OUTPUT suite3270-4.1/b3270/ft.inc000077700000000000000000000000001413735575200174422../Common/ft.incustar00rootroot00000000000000suite3270-4.1/b3270/html.m4000077700000000000000000000000001413735575200176462../Common/html.m4ustar00rootroot00000000000000suite3270-4.1/b3270/html/000077500000000000000000000000001413735575200145405ustar00rootroot00000000000000suite3270-4.1/b3270/html/.gitignore000066400000000000000000000000311413735575200165220ustar00rootroot00000000000000*-man.html *-script.html suite3270-4.1/b3270/html/x3270.xbm000066400000000000000000000043441413735575200160400ustar00rootroot00000000000000#define x3270_width 50 #define x3270_height 50 static unsigned char x3270_bits[] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0xe0, 0xff, 0xff, 0xff, 0xff, 0x1f, 0x00, 0xf0, 0xff, 0xaf, 0xfe, 0xff, 0xe7, 0x00, 0xf0, 0xff, 0xff, 0xff, 0xff, 0x07, 0x00, 0xf8, 0xab, 0xaa, 0xaa, 0xea, 0x0f, 0x00, 0xf8, 0x55, 0x55, 0x55, 0xd5, 0x0f, 0x00, 0xf8, 0xaa, 0xaa, 0xaa, 0xaa, 0x0f, 0x00, 0x78, 0x55, 0x55, 0x55, 0x55, 0x0f, 0x00, 0xf8, 0xaa, 0xaa, 0xaa, 0xaa, 0x0f, 0x00, 0x78, 0x55, 0x55, 0x55, 0x55, 0x0f, 0x00, 0xf8, 0xaa, 0xaa, 0xaa, 0xaa, 0x0f, 0x00, 0x78, 0x55, 0x55, 0x55, 0x55, 0x0f, 0x00, 0xf8, 0xaa, 0xaa, 0xaa, 0xaa, 0x0f, 0x00, 0x78, 0x55, 0x55, 0x55, 0x55, 0x0f, 0x00, 0xf8, 0xaa, 0xaa, 0xaa, 0xaa, 0x0f, 0x00, 0x78, 0x55, 0x55, 0x55, 0x55, 0x0f, 0x00, 0xf8, 0xfa, 0xff, 0xff, 0xbf, 0x0f, 0x00, 0x78, 0xed, 0x62, 0x0c, 0x73, 0x0f, 0x00, 0xf8, 0x5a, 0xdf, 0x7b, 0xad, 0x0f, 0x00, 0x78, 0xb5, 0xe7, 0xbc, 0x6d, 0x0f, 0x00, 0xf8, 0x5a, 0x5f, 0xdf, 0xed, 0x0f, 0x00, 0x78, 0xed, 0x62, 0xd8, 0x73, 0x0f, 0x00, 0xf8, 0xfa, 0xff, 0xff, 0xff, 0x0f, 0x00, 0xf8, 0x55, 0x55, 0x55, 0xd5, 0x0f, 0x00, 0xf8, 0xab, 0xaa, 0xaa, 0xea, 0x0f, 0x00, 0xf0, 0xff, 0xff, 0xff, 0x7f, 0x06, 0x00, 0xf0, 0xff, 0xff, 0xff, 0x7f, 0x06, 0x00, 0xe0, 0xff, 0xff, 0xff, 0xff, 0x07, 0x00, 0x80, 0xff, 0xff, 0xff, 0xff, 0x18, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x40, 0x00, 0xc0, 0xff, 0xff, 0xff, 0xff, 0x43, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x43, 0x00, 0x10, 0x44, 0x44, 0x44, 0x84, 0x42, 0x00, 0x08, 0x11, 0x11, 0x11, 0x41, 0x42, 0x00, 0x84, 0x88, 0x88, 0x88, 0x48, 0x42, 0x00, 0x24, 0x22, 0x22, 0x22, 0x22, 0xfe, 0x00, 0xfc, 0xff, 0xff, 0xff, 0x1f, 0x03, 0x00, 0x04, 0x00, 0x00, 0x00, 0xd0, 0x00, 0x00, 0xfc, 0xff, 0xff, 0xff, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; suite3270-4.1/b3270/m4man000077700000000000000000000000001413735575200171302../Common/m4manustar00rootroot00000000000000suite3270-4.1/b3270/man.m4000077700000000000000000000000001413735575200172642../Common/man.m4ustar00rootroot00000000000000suite3270-4.1/b3270/version.txt000077700000000000000000000000001413735575200217062../Common/version.txtustar00rootroot00000000000000suite3270-4.1/b3270/x3270.man.m4000077700000000000000000000000001413735575200206302../Common/x3270.man.m4ustar00rootroot00000000000000suite3270-4.1/c3270/000077500000000000000000000000001413735575200135755ustar00rootroot00000000000000suite3270-4.1/c3270/.gitignore000066400000000000000000000000241413735575200155610ustar00rootroot00000000000000conf.h Makefile.obj suite3270-4.1/c3270/Makefile.aux000066400000000000000000000047471413735575200160450ustar00rootroot00000000000000# # Copyright (c) 1995-2011, 2013-2015, 2017, 2020 Paul Mattes. # All rights reserved. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions are met: # * Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # * Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in the # documentation and/or other materials provided with the distribution. # * Neither the names of Paul Mattes nor the names of his contributors # may be used to endorse or promote products derived from this software # without specific prior written permission. # # THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS OR IMPLIED # WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF # MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO # EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, # SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, # PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; # OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, # WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR # OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF # ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. # # Auxiliary makefile for c3270 PRODUCT = c3270 all: @echo "Must pick a specific make target." DOCS = $(PRODUCT).man html/$(PRODUCT)-man.html # Rule for building the source tarball: run autoconf and build the # documentation. src.tgz: prepare $(DOCS) Makefile.aux # Rule for preparing a freshly-pulled working copy: run autoconf. prepare: configure configure: configure.in autoconf MANDEP = man.m4 html.m4 m4man Makefile.aux version.txt MKMAN = ./m4man -t man -p $(PRODUCT) MKHTML = ./m4man -t html -p $(PRODUCT) # Rule for building the documentation. man: $(DOCS) # Rules for building man pages and derived HTML documentation. $(PRODUCT).man: x3270.man.m4 $(MANDEP) $(MKMAN) -n $(PRODUCT) -o $@ x3270.man.m4 html/$(PRODUCT)-man.html: x3270.man.m4 $(MANDEP) $(MKHTML) -n $(PRODUCT) -o $@ x3270.man.m4 ibm_hosts.man: ibm_hosts.man.m4 $(MANDEP) $(MKMAN) -n ibm_hosts -o $@ ibm_hosts.man.m4 html/ibm_hosts.html: ibm_hosts.man.m4 $(MANDEP) $(MKHTML) -n ibm_hosts -o $@ ibm_hosts.man.m4 suite3270-4.1/c3270/Makefile.in000066400000000000000000000043201413735575200156410ustar00rootroot00000000000000# Copyright (c) 2016-2017 Paul Mattes. # All rights reserved. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # * Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # * Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in the # documentation and/or other materials provided with the distribution. # * Neither the name of Paul Mattes nor his contributors may be used # to endorse or promote products derived from this software without # specific prior written permission. # # THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS OR # IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES # OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN # NO EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, # SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED # TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR # PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF # LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING # NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS # SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. # VPATH-based Makefile for c3270 top = ../../.. objdir = ../obj/@host@/c3270 this = $(top)/c3270 export VPATH = $(this):$(top)/Common/c3270:$(top)/Common export TOP = $(top) export THIS = $(this) MAKEINC = -I$(this) -I$(top)/Common all: $(objdir) cd $(objdir) && $(MAKE) $(MAKEINC) -f $(this)/Makefile.obj $@ install: $(objdir) cd $(objdir) && $(MAKE) $(MAKEINC) -f $(this)/Makefile.obj $@ install.man: $(objdir) cd $(objdir) && $(MAKE) $(MAKEINC) -f $(this)/Makefile.obj $@ clean: $(objdir) cd $(objdir) && $(MAKE) $(MAKEINC) -f $(this)/Makefile.obj $@ clobber: $(objdir) cd $(objdir) && $(MAKE) $(MAKEINC) -f $(this)/Makefile.obj $@ depend: $(objdir) cd $(objdir) && $(MAKE) $(MAKEINC) -f $(this)/Makefile.obj $@ $(objdir): mkdir -p $(objdir) suite3270-4.1/c3270/Makefile.obj.in000066400000000000000000000076111413735575200164200ustar00rootroot00000000000000# Copyright (c) 1999-2009, 2013-2017, 2020 Paul Mattes. # All rights reserved. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions are met: # * Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # * Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in the # documentation and/or other materials provided with the distribution. # * Neither the names of Paul Mattes nor the names of his contributors # may be used to endorse or promote products derived from this software # without specific prior written permission. # # THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS OR IMPLIED # WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF # MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO # EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, # SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, # PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; # OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, # WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR # OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF # ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. # # Makefile for c3270 (console-based 3270 emulator) RM = rm -f CC = @CC@ all: c3270 x3270if HOST = @host@ include c3270_files.mk libs.mk VOBJS = $(C3270_OBJECTS) fallbacks.o OBJS1 = $(VOBJS) version.o LIBDIR = @libdir@ prefix = @prefix@ exec_prefix = @exec_prefix@ sysconfdir = @sysconfdir@ datarootdir = @datarootdir@ LIBX3270DIR = @LIBX3270DIR@ MANDIR = @mandir@ BINDIR = @bindir@ INSTALL = @INSTALL@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_DATA = @INSTALL_DATA@ CCOPTIONS = @CCOPTIONS@ XCPPFLAGS = -I. -I$(THIS) -I$(TOP)/Common/c3270 -I$(TOP)/Common -I$(TOP)/include -DLIBX3270DIR=\"$(LIBX3270DIR)\" @CPPFLAGS@ CFLAGS = $(CCOPTIONS) $(CDEBUGFLAGS) $(XCPPFLAGS) @CFLAGS@ LDFLAGS = @LDFLAGS@ LIBS = @LIBS@ XVERSION = xversion.c version.o: mkversion.sh $(VOBJS) version.txt $(RM) $(XVERSION) sh $< c3270 $(filter %.txt,$^) >$(XVERSION) $(CC) $(CFLAGS) -c -o $@ $(XVERSION) $(RM) $(XVERSION) FALLBACKS = fb-common fb-printSession fb-messages fb-composeMap fb-c3270 fallbacks.c: mkfb $(FALLBACKS) $(RM) $@ ./mkfb -c -o $@ $(filter-out mkfb,$^) mkfb: mkfb.c $(CC) $(CFLAGS) $(LDFLAGS) -o $@ $(filter %.c,$^) keypad.o: compiled_keypad.h compiled_keypad.h: keypad.full keypad.labels keypad.map keypad.outline keypad.callbacks mkkeypad ./mkkeypad -I$(TOP)/Common/c3270 >$@ c3270: $(OBJS1) $(DEP3270) $(DEP3270I) $(DEP32XX) $(DEP3270STUBS) $(DEP32XX) $(CC) -o $@ $(OBJS1) $(LDFLAGS) $(LD3270) $(LD3270I) $(LD32XX) $(LD3270STUBS) $(LIBS) x3270if: ../x3270if/x3270if cp -p ../x3270if/x3270if $@ man:: c3270.man if [ ! -f $(notdir $^) ]; then cp $< $(notdir $^); fi man:: ibm_hosts.man if [ ! -f $(notdir $^) ]; then cp $< $(notdir $^); fi install:: c3270 [ -d $(DESTDIR)$(BINDIR) ] || \ mkdir -p $(DESTDIR)$(BINDIR) $(INSTALL_PROGRAM) c3270 $(DESTDIR)$(BINDIR)/c3270 install:: ibm_hosts [ -d $(DESTDIR)$(LIBX3270DIR) ] || \ mkdir -p $(DESTDIR)$(LIBX3270DIR) [ -r $(DESTDIR)$(LIBX3270DIR)/ibm_hosts ] || \ $(INSTALL_DATA) $< $(DESTDIR)$(LIBX3270DIR)/ibm_hosts install.man: man [ -d $(DESTDIR)$(MANDIR)/man1 ] || \ mkdir -p $(DESTDIR)$(MANDIR)/man1 [ -d $(DESTDIR)$(MANDIR)/man5 ] || \ mkdir -p $(DESTDIR)$(MANDIR)/man5 $(INSTALL_DATA) c3270.man $(DESTDIR)$(MANDIR)/man1/c3270.1 $(INSTALL_DATA) ibm_hosts.man $(DESTDIR)$(MANDIR)/man5/ibm_hosts.5 clean: $(RM) *.o mkfb fallbacks.c compiled_keypad.h clobber: clean $(RM) c3270 *.d *.man # Include auto-generated dependencies. -include $(OBJS:.o=.d) mkfb.d suite3270-4.1/c3270/c3270.man000066400000000000000000000012721413735575200150320ustar00rootroot00000000000000'\" t .TH c3270 1 "30 October 2021" .SH "NAME" c3270 \- curses-based \s-1IBM\s+1 host access tool .SH "SYNOPSIS" \fBc3270\fP [\fIoptions\fP] [\fIhost\fP] .br \fBc3270\fP [\fIoptions\fP] \fIsession-file\fP.c3270 .SH "DESCRIPTION" \fBc3270\fP opens a telnet connection to an \s-1IBM\s+1 host in a console window. It implements RFCs 2355 (TN3270E), 1576 (TN3270) and 1646 (LU name selection), and supports IND$FILE file transfer. If the console is capable of displaying colors, then \fBc3270\fP emulates an \s-1IBM\s+1 3279. Otherwise, it emulates a 3278. .SH "WIKI" Primary documentation for c3270 is on the \fBx3270 Wiki\fP, https://x3270.miraheze.org/wiki/Main_Page. .SH "VERSION" c3270 4.1pre10 suite3270-4.1/c3270/c3270_files.mk000066400000000000000000000002151413735575200160440ustar00rootroot00000000000000# c3270-specific object files C3270_OBJECTS = c3270.o ft_gui.o help.o keymap.o keypad.o menubar.o screen.o \ status_dump.o tls_passwd_gui.o suite3270-4.1/c3270/common_files.mk000077700000000000000000000000001413735575200232412../Common/common_files.mkustar00rootroot00000000000000suite3270-4.1/c3270/conf.h.in000066400000000000000000000047441413735575200153110ustar00rootroot00000000000000/* * Copyright (c) 2000-2015, 2017, 2019 Paul Mattes. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the names of Paul Mattes nor the names of his contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO * EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * conf.h * System-specific #defines for libraries and library functions. * Automatically generated from conf.h.in by configure. */ /* Libraries. */ #undef HAVE_LIBNCURSESW #undef HAVE_LIBNCURSES #undef HAVE_LIBCURSES #undef HAVE_LIBREADLINE /* Header files. */ #undef HAVE_NCURSESW_NCURSES_H #undef HAVE_NCURSES_NCURSES_H #undef HAVE_NCURSES_H #undef HAVE_CURSES_H #undef HAVE_NCURSESW_TERM_H #undef HAVE_NCURSES_TERM_H #undef HAVE_TERM_H #undef HAVE_SYS_SELECT_H #undef HAVE_READLINE_HISTORY_H #undef HAVE_PTY_H #undef HAVE_LIBUTIL_H #undef HAVE_UTIL_H #undef HAVE_GETOPT_H /* Uncommon functions. */ #undef HAVE_VASPRINTF #undef HAVE_FSEEKO #undef HAVE_FORKPTY #undef HAVE_USE_DEFAULT_COLORS #undef HAVE_TIPARM /* Default pager. */ #define LESSPATH "" #define MOREPATH "" /* Wide curses. */ #undef CURSES_WIDE /* Configuration options. */ /* Broken stuff. */ #undef BROKEN_NEWTERM /* Optional parts. */ #undef X3270_LOCAL_PROCESS #undef X3270_IPV6 suite3270-4.1/c3270/configure000077500000000000000000004742561413735575200155260ustar00rootroot00000000000000#! /bin/sh # Guess values for system-dependent variables and create Makefiles. # Generated by GNU Autoconf 2.69 for c3270 4.0. # # # Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc. # # # This configure script is free software; the Free Software Foundation # gives unlimited permission to copy, distribute and modify it. ## -------------------- ## ## M4sh Initialization. ## ## -------------------- ## # Be more Bourne compatible DUALCASE=1; export DUALCASE # for MKS sh if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST else case `(set -o) 2>/dev/null` in #( *posix*) : set -o posix ;; #( *) : ;; esac fi as_nl=' ' export as_nl # Printing a long string crashes Solaris 7 /usr/bin/printf. as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo # Prefer a ksh shell builtin over an external printf program on Solaris, # but without wasting forks for bash or zsh. if test -z "$BASH_VERSION$ZSH_VERSION" \ && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then as_echo='print -r --' as_echo_n='print -rn --' elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then as_echo='printf %s\n' as_echo_n='printf %s' else if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' as_echo_n='/usr/ucb/echo -n' else as_echo_body='eval expr "X$1" : "X\\(.*\\)"' as_echo_n_body='eval arg=$1; case $arg in #( *"$as_nl"*) expr "X$arg" : "X\\(.*\\)$as_nl"; arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; esac; expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" ' export as_echo_n_body as_echo_n='sh -c $as_echo_n_body as_echo' fi export as_echo_body as_echo='sh -c $as_echo_body as_echo' fi # The user is always right. if test "${PATH_SEPARATOR+set}" != set; then PATH_SEPARATOR=: (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || PATH_SEPARATOR=';' } fi # IFS # We need space, tab and new line, in precisely that order. Quoting is # there to prevent editors from complaining about space-tab. # (If _AS_PATH_WALK were called with IFS unset, it would disable word # splitting by setting IFS to empty value.) IFS=" "" $as_nl" # Find who we are. Look in the path if we contain no directory separator. as_myself= case $0 in #(( *[\\/]* ) as_myself=$0 ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break done IFS=$as_save_IFS ;; esac # We did not find ourselves, most probably we were run as `sh COMMAND' # in which case we are not to be found in the path. if test "x$as_myself" = x; then as_myself=$0 fi if test ! -f "$as_myself"; then $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 exit 1 fi # Unset variables that we do not need and which cause bugs (e.g. in # pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" # suppresses any "Segmentation fault" message there. '((' could # trigger a bug in pdksh 5.2.14. for as_var in BASH_ENV ENV MAIL MAILPATH do eval test x\${$as_var+set} = xset \ && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : done PS1='$ ' PS2='> ' PS4='+ ' # NLS nuisances. LC_ALL=C export LC_ALL LANGUAGE=C export LANGUAGE # CDPATH. (unset CDPATH) >/dev/null 2>&1 && unset CDPATH # Use a proper internal environment variable to ensure we don't fall # into an infinite loop, continuously re-executing ourselves. if test x"${_as_can_reexec}" != xno && test "x$CONFIG_SHELL" != x; then _as_can_reexec=no; export _as_can_reexec; # We cannot yet assume a decent shell, so we have to provide a # neutralization value for shells without unset; and this also # works around shells that cannot unset nonexistent variables. # Preserve -v and -x to the replacement shell. BASH_ENV=/dev/null ENV=/dev/null (unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV case $- in # (((( *v*x* | *x*v* ) as_opts=-vx ;; *v* ) as_opts=-v ;; *x* ) as_opts=-x ;; * ) as_opts= ;; esac exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} # Admittedly, this is quite paranoid, since all the known shells bail # out after a failed `exec'. $as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2 as_fn_exit 255 fi # We don't want this to propagate to other subprocesses. { _as_can_reexec=; unset _as_can_reexec;} if test "x$CONFIG_SHELL" = x; then as_bourne_compatible="if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on \${1+\"\$@\"}, which # is contrary to our usage. Disable this feature. alias -g '\${1+\"\$@\"}'='\"\$@\"' setopt NO_GLOB_SUBST else case \`(set -o) 2>/dev/null\` in #( *posix*) : set -o posix ;; #( *) : ;; esac fi " as_required="as_fn_return () { (exit \$1); } as_fn_success () { as_fn_return 0; } as_fn_failure () { as_fn_return 1; } as_fn_ret_success () { return 0; } as_fn_ret_failure () { return 1; } exitcode=0 as_fn_success || { exitcode=1; echo as_fn_success failed.; } as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; } as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; } as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; } if ( set x; as_fn_ret_success y && test x = \"\$1\" ); then : else exitcode=1; echo positional parameters were not saved. fi test x\$exitcode = x0 || exit 1 test -x / || exit 1" as_suggested=" as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" && test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1 test \$(( 1 + 1 )) = 2 || exit 1" if (eval "$as_required") 2>/dev/null; then : as_have_required=yes else as_have_required=no fi if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null; then : else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR as_found=false for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. as_found=: case $as_dir in #( /*) for as_base in sh bash ksh sh5; do # Try only shells that exist, to save several forks. as_shell=$as_dir/$as_base if { test -f "$as_shell" || test -f "$as_shell.exe"; } && { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$as_shell"; } 2>/dev/null; then : CONFIG_SHELL=$as_shell as_have_required=yes if { $as_echo "$as_bourne_compatible""$as_suggested" | as_run=a "$as_shell"; } 2>/dev/null; then : break 2 fi fi done;; esac as_found=false done $as_found || { if { test -f "$SHELL" || test -f "$SHELL.exe"; } && { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$SHELL"; } 2>/dev/null; then : CONFIG_SHELL=$SHELL as_have_required=yes fi; } IFS=$as_save_IFS if test "x$CONFIG_SHELL" != x; then : export CONFIG_SHELL # We cannot yet assume a decent shell, so we have to provide a # neutralization value for shells without unset; and this also # works around shells that cannot unset nonexistent variables. # Preserve -v and -x to the replacement shell. BASH_ENV=/dev/null ENV=/dev/null (unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV case $- in # (((( *v*x* | *x*v* ) as_opts=-vx ;; *v* ) as_opts=-v ;; *x* ) as_opts=-x ;; * ) as_opts= ;; esac exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} # Admittedly, this is quite paranoid, since all the known shells bail # out after a failed `exec'. $as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2 exit 255 fi if test x$as_have_required = xno; then : $as_echo "$0: This script requires a shell more modern than all" $as_echo "$0: the shells that I found on your system." if test x${ZSH_VERSION+set} = xset ; then $as_echo "$0: In particular, zsh $ZSH_VERSION has bugs and should" $as_echo "$0: be upgraded to zsh 4.3.4 or later." else $as_echo "$0: Please tell bug-autoconf@gnu.org about your system, $0: including any error possibly output before this $0: message. Then install a modern shell, or manually run $0: the script under such a shell if you do have one." fi exit 1 fi fi fi SHELL=${CONFIG_SHELL-/bin/sh} export SHELL # Unset more variables known to interfere with behavior of common tools. CLICOLOR_FORCE= GREP_OPTIONS= unset CLICOLOR_FORCE GREP_OPTIONS ## --------------------- ## ## M4sh Shell Functions. ## ## --------------------- ## # as_fn_unset VAR # --------------- # Portably unset VAR. as_fn_unset () { { eval $1=; unset $1;} } as_unset=as_fn_unset # as_fn_set_status STATUS # ----------------------- # Set $? to STATUS, without forking. as_fn_set_status () { return $1 } # as_fn_set_status # as_fn_exit STATUS # ----------------- # Exit the shell with STATUS, even in a "trap 0" or "set -e" context. as_fn_exit () { set +e as_fn_set_status $1 exit $1 } # as_fn_exit # as_fn_mkdir_p # ------------- # Create "$as_dir" as a directory, including parents if necessary. as_fn_mkdir_p () { case $as_dir in #( -*) as_dir=./$as_dir;; esac test -d "$as_dir" || eval $as_mkdir_p || { as_dirs= while :; do case $as_dir in #( *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( *) as_qdir=$as_dir;; esac as_dirs="'$as_qdir' $as_dirs" as_dir=`$as_dirname -- "$as_dir" || $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_dir" : 'X\(//\)[^/]' \| \ X"$as_dir" : 'X\(//\)$' \| \ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$as_dir" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` test -d "$as_dir" && break done test -z "$as_dirs" || eval "mkdir $as_dirs" } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" } # as_fn_mkdir_p # as_fn_executable_p FILE # ----------------------- # Test if FILE is an executable regular file. as_fn_executable_p () { test -f "$1" && test -x "$1" } # as_fn_executable_p # as_fn_append VAR VALUE # ---------------------- # Append the text in VALUE to the end of the definition contained in VAR. Take # advantage of any shell optimizations that allow amortized linear growth over # repeated appends, instead of the typical quadratic growth present in naive # implementations. if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : eval 'as_fn_append () { eval $1+=\$2 }' else as_fn_append () { eval $1=\$$1\$2 } fi # as_fn_append # as_fn_arith ARG... # ------------------ # Perform arithmetic evaluation on the ARGs, and store the result in the # global $as_val. Take advantage of shells that can avoid forks. The arguments # must be portable across $(()) and expr. if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : eval 'as_fn_arith () { as_val=$(( $* )) }' else as_fn_arith () { as_val=`expr "$@" || test $? -eq 1` } fi # as_fn_arith # as_fn_error STATUS ERROR [LINENO LOG_FD] # ---------------------------------------- # Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are # provided, also output the error to LOG_FD, referencing LINENO. Then exit the # script with STATUS, using 1 if that was 0. as_fn_error () { as_status=$1; test $as_status -eq 0 && as_status=1 if test "$4"; then as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 fi $as_echo "$as_me: error: $2" >&2 as_fn_exit $as_status } # as_fn_error if expr a : '\(a\)' >/dev/null 2>&1 && test "X`expr 00001 : '.*\(...\)'`" = X001; then as_expr=expr else as_expr=false fi if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then as_basename=basename else as_basename=false fi if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then as_dirname=dirname else as_dirname=false fi as_me=`$as_basename -- "$0" || $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ X"$0" : 'X\(//\)$' \| \ X"$0" : 'X\(/\)' \| . 2>/dev/null || $as_echo X/"$0" | sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/ q } /^X\/\(\/\/\)$/{ s//\1/ q } /^X\/\(\/\).*/{ s//\1/ q } s/.*/./; q'` # Avoid depending upon Character Ranges. as_cr_letters='abcdefghijklmnopqrstuvwxyz' as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' as_cr_Letters=$as_cr_letters$as_cr_LETTERS as_cr_digits='0123456789' as_cr_alnum=$as_cr_Letters$as_cr_digits as_lineno_1=$LINENO as_lineno_1a=$LINENO as_lineno_2=$LINENO as_lineno_2a=$LINENO eval 'test "x$as_lineno_1'$as_run'" != "x$as_lineno_2'$as_run'" && test "x`expr $as_lineno_1'$as_run' + 1`" = "x$as_lineno_2'$as_run'"' || { # Blame Lee E. McMahon (1931-1989) for sed's syntax. :-) sed -n ' p /[$]LINENO/= ' <$as_myself | sed ' s/[$]LINENO.*/&-/ t lineno b :lineno N :loop s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ t loop s/-\n.*// ' >$as_me.lineno && chmod +x "$as_me.lineno" || { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; } # If we had to re-execute with $CONFIG_SHELL, we're ensured to have # already done that, so ensure we don't try to do so again and fall # in an infinite loop. This has already happened in practice. _as_can_reexec=no; export _as_can_reexec # Don't try to exec as it changes $[0], causing all sort of problems # (the dirname of $[0] is not the place where we might find the # original and so on. Autoconf is especially sensitive to this). . "./$as_me.lineno" # Exit status is that of the last command. exit } ECHO_C= ECHO_N= ECHO_T= case `echo -n x` in #((((( -n*) case `echo 'xy\c'` in *c*) ECHO_T=' ';; # ECHO_T is single tab character. xy) ECHO_C='\c';; *) echo `echo ksh88 bug on AIX 6.1` > /dev/null ECHO_T=' ';; esac;; *) ECHO_N='-n';; esac rm -f conf$$ conf$$.exe conf$$.file if test -d conf$$.dir; then rm -f conf$$.dir/conf$$.file else rm -f conf$$.dir mkdir conf$$.dir 2>/dev/null fi if (echo >conf$$.file) 2>/dev/null; then if ln -s conf$$.file conf$$ 2>/dev/null; then as_ln_s='ln -s' # ... but there are two gotchas: # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. # In both cases, we have to default to `cp -pR'. ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || as_ln_s='cp -pR' elif ln conf$$.file conf$$ 2>/dev/null; then as_ln_s=ln else as_ln_s='cp -pR' fi else as_ln_s='cp -pR' fi rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file rmdir conf$$.dir 2>/dev/null if mkdir -p . 2>/dev/null; then as_mkdir_p='mkdir -p "$as_dir"' else test -d ./-p && rmdir ./-p as_mkdir_p=false fi as_test_x='test -x' as_executable_p=as_fn_executable_p # Sed expression to map a string onto a valid CPP name. as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" # Sed expression to map a string onto a valid variable name. as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" test -n "$DJDIR" || exec 7<&0 &1 # Name of the host. # hostname on some systems (SVR3.2, old GNU/Linux) returns a bogus exit status, # so uname gets run too. ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q` # # Initializations. # ac_default_prefix=/usr/local ac_clean_files= ac_config_libobj_dir=. LIBOBJS= cross_compiling=no subdirs= MFLAGS= MAKEFLAGS= # Identity of this package. PACKAGE_NAME='c3270' PACKAGE_TARNAME='c3270' PACKAGE_VERSION='4.0' PACKAGE_STRING='c3270 4.0' PACKAGE_BUGREPORT='' PACKAGE_URL='' # Factoring default headers for most tests. ac_includes_default="\ #include #ifdef HAVE_SYS_TYPES_H # include #endif #ifdef HAVE_SYS_STAT_H # include #endif #ifdef STDC_HEADERS # include # include #else # ifdef HAVE_STDLIB_H # include # endif #endif #ifdef HAVE_STRING_H # if !defined STDC_HEADERS && defined HAVE_MEMORY_H # include # endif # include #endif #ifdef HAVE_STRINGS_H # include #endif #ifdef HAVE_INTTYPES_H # include #endif #ifdef HAVE_STDINT_H # include #endif #ifdef HAVE_UNISTD_H # include #endif" ac_subst_vars='LTLIBOBJS LIBOBJS DBCS LIBX3270DIR MOREPATH LESSPATH CURSES_WIDE EGREP GREP CPP CCOPTIONS BROKEN_NEWTERM host_os host_vendor host_cpu host build_os build_vendor build_cpu build OBJEXT EXEEXT ac_ct_CC CPPFLAGS LDFLAGS CFLAGS CC INSTALL_DATA INSTALL_SCRIPT INSTALL_PROGRAM target_alias host_alias build_alias LIBS ECHO_T ECHO_N ECHO_C DEFS mandir localedir libdir psdir pdfdir dvidir htmldir infodir docdir oldincludedir includedir runstatedir localstatedir sharedstatedir sysconfdir datadir datarootdir libexecdir sbindir bindir program_transform_name prefix exec_prefix PACKAGE_URL PACKAGE_BUGREPORT PACKAGE_STRING PACKAGE_VERSION PACKAGE_TARNAME PACKAGE_NAME PATH_SEPARATOR SHELL' ac_subst_files='' ac_user_opts=' enable_option_checking with_readline enable_dbcs enable_local_process enable_ipv6 ' ac_precious_vars='build_alias host_alias target_alias CC CFLAGS LDFLAGS LIBS CPPFLAGS CPP' # Initialize some variables set by options. ac_init_help= ac_init_version=false ac_unrecognized_opts= ac_unrecognized_sep= # The variables have the same names as the options, with # dashes changed to underlines. cache_file=/dev/null exec_prefix=NONE no_create= no_recursion= prefix=NONE program_prefix=NONE program_suffix=NONE program_transform_name=s,x,x, silent= site= srcdir= verbose= x_includes=NONE x_libraries=NONE # Installation directory options. # These are left unexpanded so users can "make install exec_prefix=/foo" # and all the variables that are supposed to be based on exec_prefix # by default will actually change. # Use braces instead of parens because sh, perl, etc. also accept them. # (The list follows the same order as the GNU Coding Standards.) bindir='${exec_prefix}/bin' sbindir='${exec_prefix}/sbin' libexecdir='${exec_prefix}/libexec' datarootdir='${prefix}/share' datadir='${datarootdir}' sysconfdir='${prefix}/etc' sharedstatedir='${prefix}/com' localstatedir='${prefix}/var' runstatedir='${localstatedir}/run' includedir='${prefix}/include' oldincludedir='/usr/include' docdir='${datarootdir}/doc/${PACKAGE_TARNAME}' infodir='${datarootdir}/info' htmldir='${docdir}' dvidir='${docdir}' pdfdir='${docdir}' psdir='${docdir}' libdir='${exec_prefix}/lib' localedir='${datarootdir}/locale' mandir='${datarootdir}/man' ac_prev= ac_dashdash= for ac_option do # If the previous option needs an argument, assign it. if test -n "$ac_prev"; then eval $ac_prev=\$ac_option ac_prev= continue fi case $ac_option in *=?*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;; *=) ac_optarg= ;; *) ac_optarg=yes ;; esac # Accept the important Cygnus configure options, so we can diagnose typos. case $ac_dashdash$ac_option in --) ac_dashdash=yes ;; -bindir | --bindir | --bindi | --bind | --bin | --bi) ac_prev=bindir ;; -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*) bindir=$ac_optarg ;; -build | --build | --buil | --bui | --bu) ac_prev=build_alias ;; -build=* | --build=* | --buil=* | --bui=* | --bu=*) build_alias=$ac_optarg ;; -cache-file | --cache-file | --cache-fil | --cache-fi \ | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) ac_prev=cache_file ;; -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) cache_file=$ac_optarg ;; --config-cache | -C) cache_file=config.cache ;; -datadir | --datadir | --datadi | --datad) ac_prev=datadir ;; -datadir=* | --datadir=* | --datadi=* | --datad=*) datadir=$ac_optarg ;; -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \ | --dataroo | --dataro | --datar) ac_prev=datarootdir ;; -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \ | --dataroot=* | --dataroo=* | --dataro=* | --datar=*) datarootdir=$ac_optarg ;; -disable-* | --disable-*) ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid feature name: $ac_useropt" ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "enable_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--disable-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval enable_$ac_useropt=no ;; -docdir | --docdir | --docdi | --doc | --do) ac_prev=docdir ;; -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*) docdir=$ac_optarg ;; -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv) ac_prev=dvidir ;; -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*) dvidir=$ac_optarg ;; -enable-* | --enable-*) ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid feature name: $ac_useropt" ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "enable_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--enable-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval enable_$ac_useropt=\$ac_optarg ;; -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ | --exec | --exe | --ex) ac_prev=exec_prefix ;; -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \ | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \ | --exec=* | --exe=* | --ex=*) exec_prefix=$ac_optarg ;; -gas | --gas | --ga | --g) # Obsolete; use --with-gas. with_gas=yes ;; -help | --help | --hel | --he | -h) ac_init_help=long ;; -help=r* | --help=r* | --hel=r* | --he=r* | -hr*) ac_init_help=recursive ;; -help=s* | --help=s* | --hel=s* | --he=s* | -hs*) ac_init_help=short ;; -host | --host | --hos | --ho) ac_prev=host_alias ;; -host=* | --host=* | --hos=* | --ho=*) host_alias=$ac_optarg ;; -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht) ac_prev=htmldir ;; -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \ | --ht=*) htmldir=$ac_optarg ;; -includedir | --includedir | --includedi | --included | --include \ | --includ | --inclu | --incl | --inc) ac_prev=includedir ;; -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \ | --includ=* | --inclu=* | --incl=* | --inc=*) includedir=$ac_optarg ;; -infodir | --infodir | --infodi | --infod | --info | --inf) ac_prev=infodir ;; -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*) infodir=$ac_optarg ;; -libdir | --libdir | --libdi | --libd) ac_prev=libdir ;; -libdir=* | --libdir=* | --libdi=* | --libd=*) libdir=$ac_optarg ;; -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \ | --libexe | --libex | --libe) ac_prev=libexecdir ;; -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \ | --libexe=* | --libex=* | --libe=*) libexecdir=$ac_optarg ;; -localedir | --localedir | --localedi | --localed | --locale) ac_prev=localedir ;; -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*) localedir=$ac_optarg ;; -localstatedir | --localstatedir | --localstatedi | --localstated \ | --localstate | --localstat | --localsta | --localst | --locals) ac_prev=localstatedir ;; -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*) localstatedir=$ac_optarg ;; -mandir | --mandir | --mandi | --mand | --man | --ma | --m) ac_prev=mandir ;; -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*) mandir=$ac_optarg ;; -nfp | --nfp | --nf) # Obsolete; use --without-fp. with_fp=no ;; -no-create | --no-create | --no-creat | --no-crea | --no-cre \ | --no-cr | --no-c | -n) no_create=yes ;; -no-recursion | --no-recursion | --no-recursio | --no-recursi \ | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) no_recursion=yes ;; -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \ | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \ | --oldin | --oldi | --old | --ol | --o) ac_prev=oldincludedir ;; -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \ | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \ | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*) oldincludedir=$ac_optarg ;; -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) ac_prev=prefix ;; -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) prefix=$ac_optarg ;; -program-prefix | --program-prefix | --program-prefi | --program-pref \ | --program-pre | --program-pr | --program-p) ac_prev=program_prefix ;; -program-prefix=* | --program-prefix=* | --program-prefi=* \ | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*) program_prefix=$ac_optarg ;; -program-suffix | --program-suffix | --program-suffi | --program-suff \ | --program-suf | --program-su | --program-s) ac_prev=program_suffix ;; -program-suffix=* | --program-suffix=* | --program-suffi=* \ | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*) program_suffix=$ac_optarg ;; -program-transform-name | --program-transform-name \ | --program-transform-nam | --program-transform-na \ | --program-transform-n | --program-transform- \ | --program-transform | --program-transfor \ | --program-transfo | --program-transf \ | --program-trans | --program-tran \ | --progr-tra | --program-tr | --program-t) ac_prev=program_transform_name ;; -program-transform-name=* | --program-transform-name=* \ | --program-transform-nam=* | --program-transform-na=* \ | --program-transform-n=* | --program-transform-=* \ | --program-transform=* | --program-transfor=* \ | --program-transfo=* | --program-transf=* \ | --program-trans=* | --program-tran=* \ | --progr-tra=* | --program-tr=* | --program-t=*) program_transform_name=$ac_optarg ;; -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd) ac_prev=pdfdir ;; -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*) pdfdir=$ac_optarg ;; -psdir | --psdir | --psdi | --psd | --ps) ac_prev=psdir ;; -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*) psdir=$ac_optarg ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil) silent=yes ;; -runstatedir | --runstatedir | --runstatedi | --runstated \ | --runstate | --runstat | --runsta | --runst | --runs \ | --run | --ru | --r) ac_prev=runstatedir ;; -runstatedir=* | --runstatedir=* | --runstatedi=* | --runstated=* \ | --runstate=* | --runstat=* | --runsta=* | --runst=* | --runs=* \ | --run=* | --ru=* | --r=*) runstatedir=$ac_optarg ;; -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) ac_prev=sbindir ;; -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ | --sbi=* | --sb=*) sbindir=$ac_optarg ;; -sharedstatedir | --sharedstatedir | --sharedstatedi \ | --sharedstated | --sharedstate | --sharedstat | --sharedsta \ | --sharedst | --shareds | --shared | --share | --shar \ | --sha | --sh) ac_prev=sharedstatedir ;; -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \ | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \ | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \ | --sha=* | --sh=*) sharedstatedir=$ac_optarg ;; -site | --site | --sit) ac_prev=site ;; -site=* | --site=* | --sit=*) site=$ac_optarg ;; -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) ac_prev=srcdir ;; -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) srcdir=$ac_optarg ;; -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \ | --syscon | --sysco | --sysc | --sys | --sy) ac_prev=sysconfdir ;; -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \ | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*) sysconfdir=$ac_optarg ;; -target | --target | --targe | --targ | --tar | --ta | --t) ac_prev=target_alias ;; -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) target_alias=$ac_optarg ;; -v | -verbose | --verbose | --verbos | --verbo | --verb) verbose=yes ;; -version | --version | --versio | --versi | --vers | -V) ac_init_version=: ;; -with-* | --with-*) ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid package name: $ac_useropt" ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "with_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--with-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval with_$ac_useropt=\$ac_optarg ;; -without-* | --without-*) ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid package name: $ac_useropt" ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "with_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--without-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval with_$ac_useropt=no ;; --x) # Obsolete; use --with-x. with_x=yes ;; -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \ | --x-incl | --x-inc | --x-in | --x-i) ac_prev=x_includes ;; -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \ | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*) x_includes=$ac_optarg ;; -x-libraries | --x-libraries | --x-librarie | --x-librari \ | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l) ac_prev=x_libraries ;; -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \ | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) x_libraries=$ac_optarg ;; -*) as_fn_error $? "unrecognized option: \`$ac_option' Try \`$0 --help' for more information" ;; *=*) ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='` # Reject names that are not valid shell variable names. case $ac_envvar in #( '' | [0-9]* | *[!_$as_cr_alnum]* ) as_fn_error $? "invalid variable name: \`$ac_envvar'" ;; esac eval $ac_envvar=\$ac_optarg export $ac_envvar ;; *) # FIXME: should be removed in autoconf 3.0. $as_echo "$as_me: WARNING: you should use --build, --host, --target" >&2 expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && $as_echo "$as_me: WARNING: invalid host type: $ac_option" >&2 : "${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}" ;; esac done if test -n "$ac_prev"; then ac_option=--`echo $ac_prev | sed 's/_/-/g'` as_fn_error $? "missing argument to $ac_option" fi if test -n "$ac_unrecognized_opts"; then case $enable_option_checking in no) ;; fatal) as_fn_error $? "unrecognized options: $ac_unrecognized_opts" ;; *) $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;; esac fi # Check all directory arguments for consistency. for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \ datadir sysconfdir sharedstatedir localstatedir includedir \ oldincludedir docdir infodir htmldir dvidir pdfdir psdir \ libdir localedir mandir runstatedir do eval ac_val=\$$ac_var # Remove trailing slashes. case $ac_val in */ ) ac_val=`expr "X$ac_val" : 'X\(.*[^/]\)' \| "X$ac_val" : 'X\(.*\)'` eval $ac_var=\$ac_val;; esac # Be sure to have absolute directory names. case $ac_val in [\\/$]* | ?:[\\/]* ) continue;; NONE | '' ) case $ac_var in *prefix ) continue;; esac;; esac as_fn_error $? "expected an absolute directory name for --$ac_var: $ac_val" done # There might be people who depend on the old broken behavior: `$host' # used to hold the argument of --host etc. # FIXME: To remove some day. build=$build_alias host=$host_alias target=$target_alias # FIXME: To remove some day. if test "x$host_alias" != x; then if test "x$build_alias" = x; then cross_compiling=maybe elif test "x$build_alias" != "x$host_alias"; then cross_compiling=yes fi fi ac_tool_prefix= test -n "$host_alias" && ac_tool_prefix=$host_alias- test "$silent" = yes && exec 6>/dev/null ac_pwd=`pwd` && test -n "$ac_pwd" && ac_ls_di=`ls -di .` && ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` || as_fn_error $? "working directory cannot be determined" test "X$ac_ls_di" = "X$ac_pwd_ls_di" || as_fn_error $? "pwd does not report name of working directory" # Find the source files, if location was not specified. if test -z "$srcdir"; then ac_srcdir_defaulted=yes # Try the directory containing this script, then the parent directory. ac_confdir=`$as_dirname -- "$as_myself" || $as_expr X"$as_myself" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_myself" : 'X\(//\)[^/]' \| \ X"$as_myself" : 'X\(//\)$' \| \ X"$as_myself" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$as_myself" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` srcdir=$ac_confdir if test ! -r "$srcdir/$ac_unique_file"; then srcdir=.. fi else ac_srcdir_defaulted=no fi if test ! -r "$srcdir/$ac_unique_file"; then test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .." as_fn_error $? "cannot find sources ($ac_unique_file) in $srcdir" fi ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work" ac_abs_confdir=`( cd "$srcdir" && test -r "./$ac_unique_file" || as_fn_error $? "$ac_msg" pwd)` # When building in place, set srcdir=. if test "$ac_abs_confdir" = "$ac_pwd"; then srcdir=. fi # Remove unnecessary trailing slashes from srcdir. # Double slashes in file names in object file debugging info # mess up M-x gdb in Emacs. case $srcdir in */) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;; esac for ac_var in $ac_precious_vars; do eval ac_env_${ac_var}_set=\${${ac_var}+set} eval ac_env_${ac_var}_value=\$${ac_var} eval ac_cv_env_${ac_var}_set=\${${ac_var}+set} eval ac_cv_env_${ac_var}_value=\$${ac_var} done # # Report the --help message. # if test "$ac_init_help" = "long"; then # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF \`configure' configures c3270 4.0 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... To assign environment variables (e.g., CC, CFLAGS...), specify them as VAR=VALUE. See below for descriptions of some of the useful variables. Defaults for the options are specified in brackets. Configuration: -h, --help display this help and exit --help=short display options specific to this package --help=recursive display the short help of all the included packages -V, --version display version information and exit -q, --quiet, --silent do not print \`checking ...' messages --cache-file=FILE cache test results in FILE [disabled] -C, --config-cache alias for \`--cache-file=config.cache' -n, --no-create do not create output files --srcdir=DIR find the sources in DIR [configure dir or \`..'] Installation directories: --prefix=PREFIX install architecture-independent files in PREFIX [$ac_default_prefix] --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX [PREFIX] By default, \`make install' will install all the files in \`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify an installation prefix other than \`$ac_default_prefix' using \`--prefix', for instance \`--prefix=\$HOME'. For better control, use the options below. Fine tuning of the installation directories: --bindir=DIR user executables [EPREFIX/bin] --sbindir=DIR system admin executables [EPREFIX/sbin] --libexecdir=DIR program executables [EPREFIX/libexec] --sysconfdir=DIR read-only single-machine data [PREFIX/etc] --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] --localstatedir=DIR modifiable single-machine data [PREFIX/var] --runstatedir=DIR modifiable per-process data [LOCALSTATEDIR/run] --libdir=DIR object code libraries [EPREFIX/lib] --includedir=DIR C header files [PREFIX/include] --oldincludedir=DIR C header files for non-gcc [/usr/include] --datarootdir=DIR read-only arch.-independent data root [PREFIX/share] --datadir=DIR read-only architecture-independent data [DATAROOTDIR] --infodir=DIR info documentation [DATAROOTDIR/info] --localedir=DIR locale-dependent data [DATAROOTDIR/locale] --mandir=DIR man documentation [DATAROOTDIR/man] --docdir=DIR documentation root [DATAROOTDIR/doc/c3270] --htmldir=DIR html documentation [DOCDIR] --dvidir=DIR dvi documentation [DOCDIR] --pdfdir=DIR pdf documentation [DOCDIR] --psdir=DIR ps documentation [DOCDIR] _ACEOF cat <<\_ACEOF System types: --build=BUILD configure for building on BUILD [guessed] --host=HOST cross-compile to build programs to run on HOST [BUILD] _ACEOF fi if test -n "$ac_init_help"; then case $ac_init_help in short | recursive ) echo "Configuration of c3270 4.0:";; esac cat <<\_ACEOF Optional Features: --disable-option-checking ignore unrecognized --enable/--with options --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) --enable-FEATURE[=ARG] include FEATURE [ARG=yes] --disable-dbcs leave out DBCS support --disable-local-process leave out local process support --disable-ipv6 leave out IPv6 support Optional Packages: --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) --without-readline Don't use the readline library Some influential environment variables: CC C compiler command CFLAGS C compiler flags LDFLAGS linker flags, e.g. -L if you have libraries in a nonstandard directory LIBS libraries to pass to the linker, e.g. -l CPPFLAGS (Objective) C/C++ preprocessor flags, e.g. -I if you have headers in a nonstandard directory CPP C preprocessor Use these variables to override the choices made by `configure' or to help it to find libraries and programs with nonstandard names/locations. Report bugs to the package provider. _ACEOF ac_status=$? fi if test "$ac_init_help" = "recursive"; then # If there are subdirs, report their specific --help. for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue test -d "$ac_dir" || { cd "$srcdir" && ac_pwd=`pwd` && srcdir=. && test -d "$ac_dir"; } || continue ac_builddir=. case "$ac_dir" in .) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` # A ".." for each directory in $ac_dir_suffix. ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` case $ac_top_builddir_sub in "") ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; esac ;; esac ac_abs_top_builddir=$ac_pwd ac_abs_builddir=$ac_pwd$ac_dir_suffix # for backward compatibility: ac_top_builddir=$ac_top_build_prefix case $srcdir in .) # We are building in place. ac_srcdir=. ac_top_srcdir=$ac_top_builddir_sub ac_abs_top_srcdir=$ac_pwd ;; [\\/]* | ?:[\\/]* ) # Absolute name. ac_srcdir=$srcdir$ac_dir_suffix; ac_top_srcdir=$srcdir ac_abs_top_srcdir=$srcdir ;; *) # Relative name. ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix ac_top_srcdir=$ac_top_build_prefix$srcdir ac_abs_top_srcdir=$ac_pwd/$srcdir ;; esac ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix cd "$ac_dir" || { ac_status=$?; continue; } # Check for guested configure. if test -f "$ac_srcdir/configure.gnu"; then echo && $SHELL "$ac_srcdir/configure.gnu" --help=recursive elif test -f "$ac_srcdir/configure"; then echo && $SHELL "$ac_srcdir/configure" --help=recursive else $as_echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2 fi || ac_status=$? cd "$ac_pwd" || { ac_status=$?; break; } done fi test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF c3270 configure 4.0 generated by GNU Autoconf 2.69 Copyright (C) 2012 Free Software Foundation, Inc. This configure script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it. _ACEOF exit fi ## ------------------------ ## ## Autoconf initialization. ## ## ------------------------ ## # ac_fn_c_try_compile LINENO # -------------------------- # Try to compile conftest.$ac_ext, and return whether this succeeded. ac_fn_c_try_compile () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack rm -f conftest.$ac_objext if { { ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_compile") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then : ac_retval=0 else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_c_try_compile # ac_fn_c_try_cpp LINENO # ---------------------- # Try to preprocess conftest.$ac_ext, and return whether this succeeded. ac_fn_c_try_cpp () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack if { { ac_try="$ac_cpp conftest.$ac_ext" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } > conftest.i && { test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || test ! -s conftest.err }; then : ac_retval=0 else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_c_try_cpp # ac_fn_c_check_header_mongrel LINENO HEADER VAR INCLUDES # ------------------------------------------------------- # Tests whether HEADER exists, giving a warning if it cannot be compiled using # the include files in INCLUDES and setting the cache variable VAR # accordingly. ac_fn_c_check_header_mongrel () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack if eval \${$3+:} false; then : { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 $as_echo_n "checking for $2... " >&6; } if eval \${$3+:} false; then : $as_echo_n "(cached) " >&6 fi eval ac_res=\$$3 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } else # Is the header compilable? { $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 usability" >&5 $as_echo_n "checking $2 usability... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 #include <$2> _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_header_compiler=yes else ac_header_compiler=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_compiler" >&5 $as_echo "$ac_header_compiler" >&6; } # Is the header present? { $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 presence" >&5 $as_echo_n "checking $2 presence... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include <$2> _ACEOF if ac_fn_c_try_cpp "$LINENO"; then : ac_header_preproc=yes else ac_header_preproc=no fi rm -f conftest.err conftest.i conftest.$ac_ext { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_preproc" >&5 $as_echo "$ac_header_preproc" >&6; } # So? What about this header? case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in #(( yes:no: ) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&5 $as_echo "$as_me: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5 $as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;} ;; no:yes:* ) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: present but cannot be compiled" >&5 $as_echo "$as_me: WARNING: $2: present but cannot be compiled" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: check for missing prerequisite headers?" >&5 $as_echo "$as_me: WARNING: $2: check for missing prerequisite headers?" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: see the Autoconf documentation" >&5 $as_echo "$as_me: WARNING: $2: see the Autoconf documentation" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&5 $as_echo "$as_me: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5 $as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;} ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 $as_echo_n "checking for $2... " >&6; } if eval \${$3+:} false; then : $as_echo_n "(cached) " >&6 else eval "$3=\$ac_header_compiler" fi eval ac_res=\$$3 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } fi eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } # ac_fn_c_check_header_mongrel # ac_fn_c_try_run LINENO # ---------------------- # Try to link conftest.$ac_ext, and return whether this succeeded. Assumes # that executables *can* be run. ac_fn_c_try_run () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack if { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { ac_try='./conftest$ac_exeext' { { case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_try") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; }; then : ac_retval=0 else $as_echo "$as_me: program exited with status $ac_status" >&5 $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=$ac_status fi rm -rf conftest.dSYM conftest_ipa8_conftest.oo eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_c_try_run # ac_fn_c_check_header_compile LINENO HEADER VAR INCLUDES # ------------------------------------------------------- # Tests whether HEADER exists and can be compiled using the include files in # INCLUDES, setting the cache variable VAR accordingly. ac_fn_c_check_header_compile () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 $as_echo_n "checking for $2... " >&6; } if eval \${$3+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 #include <$2> _ACEOF if ac_fn_c_try_compile "$LINENO"; then : eval "$3=yes" else eval "$3=no" fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi eval ac_res=\$$3 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } # ac_fn_c_check_header_compile # ac_fn_c_try_link LINENO # ----------------------- # Try to link conftest.$ac_ext, and return whether this succeeded. ac_fn_c_try_link () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack rm -f conftest.$ac_objext conftest$ac_exeext if { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || test -x conftest$ac_exeext }; then : ac_retval=0 else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would # interfere with the next link command; also delete a directory that is # left behind by Apple's compiler. We do this before executing the actions. rm -rf conftest.dSYM conftest_ipa8_conftest.oo eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_c_try_link # ac_fn_c_check_func LINENO FUNC VAR # ---------------------------------- # Tests whether FUNC exists, setting the cache variable VAR accordingly ac_fn_c_check_func () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 $as_echo_n "checking for $2... " >&6; } if eval \${$3+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Define $2 to an innocuous variant, in case declares $2. For example, HP-UX 11i declares gettimeofday. */ #define $2 innocuous_$2 /* System header to define __stub macros and hopefully few prototypes, which can conflict with char $2 (); below. Prefer to if __STDC__ is defined, since exists even on freestanding compilers. */ #ifdef __STDC__ # include #else # include #endif #undef $2 /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char $2 (); /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined __stub_$2 || defined __stub___$2 choke me #endif int main () { return $2 (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : eval "$3=yes" else eval "$3=no" fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi eval ac_res=\$$3 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } # ac_fn_c_check_func cat >config.log <<_ACEOF This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. It was created by c3270 $as_me 4.0, which was generated by GNU Autoconf 2.69. Invocation command line was $ $0 $@ _ACEOF exec 5>>config.log { cat <<_ASUNAME ## --------- ## ## Platform. ## ## --------- ## hostname = `(hostname || uname -n) 2>/dev/null | sed 1q` uname -m = `(uname -m) 2>/dev/null || echo unknown` uname -r = `(uname -r) 2>/dev/null || echo unknown` uname -s = `(uname -s) 2>/dev/null || echo unknown` uname -v = `(uname -v) 2>/dev/null || echo unknown` /usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown` /bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown` /bin/arch = `(/bin/arch) 2>/dev/null || echo unknown` /usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown` /usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown` /usr/bin/hostinfo = `(/usr/bin/hostinfo) 2>/dev/null || echo unknown` /bin/machine = `(/bin/machine) 2>/dev/null || echo unknown` /usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown` /bin/universe = `(/bin/universe) 2>/dev/null || echo unknown` _ASUNAME as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. $as_echo "PATH: $as_dir" done IFS=$as_save_IFS } >&5 cat >&5 <<_ACEOF ## ----------- ## ## Core tests. ## ## ----------- ## _ACEOF # Keep a trace of the command line. # Strip out --no-create and --no-recursion so they do not pile up. # Strip out --silent because we don't want to record it for future runs. # Also quote any args containing shell meta-characters. # Make two passes to allow for proper duplicate-argument suppression. ac_configure_args= ac_configure_args0= ac_configure_args1= ac_must_keep_next=false for ac_pass in 1 2 do for ac_arg do case $ac_arg in -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil) continue ;; *\'*) ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; esac case $ac_pass in 1) as_fn_append ac_configure_args0 " '$ac_arg'" ;; 2) as_fn_append ac_configure_args1 " '$ac_arg'" if test $ac_must_keep_next = true; then ac_must_keep_next=false # Got value, back to normal. else case $ac_arg in *=* | --config-cache | -C | -disable-* | --disable-* \ | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \ | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \ | -with-* | --with-* | -without-* | --without-* | --x) case "$ac_configure_args0 " in "$ac_configure_args1"*" '$ac_arg' "* ) continue ;; esac ;; -* ) ac_must_keep_next=true ;; esac fi as_fn_append ac_configure_args " '$ac_arg'" ;; esac done done { ac_configure_args0=; unset ac_configure_args0;} { ac_configure_args1=; unset ac_configure_args1;} # When interrupted or exit'd, cleanup temporary files, and complete # config.log. We remove comments because anyway the quotes in there # would cause problems or look ugly. # WARNING: Use '\'' to represent an apostrophe within the trap. # WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug. trap 'exit_status=$? # Save into config.log some information that might help in debugging. { echo $as_echo "## ---------------- ## ## Cache variables. ## ## ---------------- ##" echo # The following way of writing the cache mishandles newlines in values, ( for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do eval ac_val=\$$ac_var case $ac_val in #( *${as_nl}*) case $ac_var in #( *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 $as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; esac case $ac_var in #( _ | IFS | as_nl) ;; #( BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( *) { eval $ac_var=; unset $ac_var;} ;; esac ;; esac done (set) 2>&1 | case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #( *${as_nl}ac_space=\ *) sed -n \ "s/'\''/'\''\\\\'\'''\''/g; s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p" ;; #( *) sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" ;; esac | sort ) echo $as_echo "## ----------------- ## ## Output variables. ## ## ----------------- ##" echo for ac_var in $ac_subst_vars do eval ac_val=\$$ac_var case $ac_val in *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; esac $as_echo "$ac_var='\''$ac_val'\''" done | sort echo if test -n "$ac_subst_files"; then $as_echo "## ------------------- ## ## File substitutions. ## ## ------------------- ##" echo for ac_var in $ac_subst_files do eval ac_val=\$$ac_var case $ac_val in *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; esac $as_echo "$ac_var='\''$ac_val'\''" done | sort echo fi if test -s confdefs.h; then $as_echo "## ----------- ## ## confdefs.h. ## ## ----------- ##" echo cat confdefs.h echo fi test "$ac_signal" != 0 && $as_echo "$as_me: caught signal $ac_signal" $as_echo "$as_me: exit $exit_status" } >&5 rm -f core *.core core.conftest.* && rm -f -r conftest* confdefs* conf$$* $ac_clean_files && exit $exit_status ' 0 for ac_signal in 1 2 13 15; do trap 'ac_signal='$ac_signal'; as_fn_exit 1' $ac_signal done ac_signal=0 # confdefs.h avoids OS command line length limits that DEFS can exceed. rm -f -r conftest* confdefs.h $as_echo "/* confdefs.h */" > confdefs.h # Predefined preprocessor variables. cat >>confdefs.h <<_ACEOF #define PACKAGE_NAME "$PACKAGE_NAME" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_TARNAME "$PACKAGE_TARNAME" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_VERSION "$PACKAGE_VERSION" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_STRING "$PACKAGE_STRING" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_URL "$PACKAGE_URL" _ACEOF # Let the site file select an alternate cache file if it wants to. # Prefer an explicitly selected file to automatically selected ones. ac_site_file1=NONE ac_site_file2=NONE if test -n "$CONFIG_SITE"; then # We do not want a PATH search for config.site. case $CONFIG_SITE in #(( -*) ac_site_file1=./$CONFIG_SITE;; */*) ac_site_file1=$CONFIG_SITE;; *) ac_site_file1=./$CONFIG_SITE;; esac elif test "x$prefix" != xNONE; then ac_site_file1=$prefix/share/config.site ac_site_file2=$prefix/etc/config.site else ac_site_file1=$ac_default_prefix/share/config.site ac_site_file2=$ac_default_prefix/etc/config.site fi for ac_site_file in "$ac_site_file1" "$ac_site_file2" do test "x$ac_site_file" = xNONE && continue if test /dev/null != "$ac_site_file" && test -r "$ac_site_file"; then { $as_echo "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5 $as_echo "$as_me: loading site script $ac_site_file" >&6;} sed 's/^/| /' "$ac_site_file" >&5 . "$ac_site_file" \ || { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "failed to load site script $ac_site_file See \`config.log' for more details" "$LINENO" 5; } fi done if test -r "$cache_file"; then # Some versions of bash will fail to source /dev/null (special files # actually), so we avoid doing that. DJGPP emulates it as a regular file. if test /dev/null != "$cache_file" && test -f "$cache_file"; then { $as_echo "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5 $as_echo "$as_me: loading cache $cache_file" >&6;} case $cache_file in [\\/]* | ?:[\\/]* ) . "$cache_file";; *) . "./$cache_file";; esac fi else { $as_echo "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5 $as_echo "$as_me: creating cache $cache_file" >&6;} >$cache_file fi # Check that the precious variables saved in the cache have kept the same # value. ac_cache_corrupted=false for ac_var in $ac_precious_vars; do eval ac_old_set=\$ac_cv_env_${ac_var}_set eval ac_new_set=\$ac_env_${ac_var}_set eval ac_old_val=\$ac_cv_env_${ac_var}_value eval ac_new_val=\$ac_env_${ac_var}_value case $ac_old_set,$ac_new_set in set,) { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 $as_echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} ac_cache_corrupted=: ;; ,set) { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was not set in the previous run" >&5 $as_echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} ac_cache_corrupted=: ;; ,);; *) if test "x$ac_old_val" != "x$ac_new_val"; then # differences in whitespace do not lead to failure. ac_old_val_w=`echo x $ac_old_val` ac_new_val_w=`echo x $ac_new_val` if test "$ac_old_val_w" != "$ac_new_val_w"; then { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' has changed since the previous run:" >&5 $as_echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} ac_cache_corrupted=: else { $as_echo "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5 $as_echo "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;} eval $ac_var=\$ac_old_val fi { $as_echo "$as_me:${as_lineno-$LINENO}: former value: \`$ac_old_val'" >&5 $as_echo "$as_me: former value: \`$ac_old_val'" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: current value: \`$ac_new_val'" >&5 $as_echo "$as_me: current value: \`$ac_new_val'" >&2;} fi;; esac # Pass precious variables to config.status. if test "$ac_new_set" = set; then case $ac_new_val in *\'*) ac_arg=$ac_var=`$as_echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; *) ac_arg=$ac_var=$ac_new_val ;; esac case " $ac_configure_args " in *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy. *) as_fn_append ac_configure_args " '$ac_arg'" ;; esac fi done if $ac_cache_corrupted; then { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5 $as_echo "$as_me: error: changes in the environment can compromise the build" >&2;} as_fn_error $? "run \`make distclean' and/or \`rm $cache_file' and start over" "$LINENO" 5 fi ## -------------------- ## ## Main body of script. ## ## -------------------- ## ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu ac_config_headers="$ac_config_headers conf.h" ac_aux_dir= for ac_dir in "$srcdir" "$srcdir/.." "$srcdir/../.."; do if test -f "$ac_dir/install-sh"; then ac_aux_dir=$ac_dir ac_install_sh="$ac_aux_dir/install-sh -c" break elif test -f "$ac_dir/install.sh"; then ac_aux_dir=$ac_dir ac_install_sh="$ac_aux_dir/install.sh -c" break elif test -f "$ac_dir/shtool"; then ac_aux_dir=$ac_dir ac_install_sh="$ac_aux_dir/shtool install -c" break fi done if test -z "$ac_aux_dir"; then as_fn_error $? "cannot find install-sh, install.sh, or shtool in \"$srcdir\" \"$srcdir/..\" \"$srcdir/../..\"" "$LINENO" 5 fi # These three variables are undocumented and unsupported, # and are intended to be withdrawn in a future Autoconf release. # They can cause serious problems if a builder's source tree is in a directory # whose full name contains unusual characters. ac_config_guess="$SHELL $ac_aux_dir/config.guess" # Please don't use this var. ac_config_sub="$SHELL $ac_aux_dir/config.sub" # Please don't use this var. ac_configure="$SHELL $ac_aux_dir/configure" # Please don't use this var. # Find a good install program. We prefer a C program (faster), # so one script is as good as another. But avoid the broken or # incompatible versions: # SysV /etc/install, /usr/sbin/install # SunOS /usr/etc/install # IRIX /sbin/install # AIX /bin/install # AmigaOS /C/install, which installs bootblocks on floppy discs # AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag # AFS /usr/afsws/bin/install, which mishandles nonexistent args # SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" # OS/2's system install, which has a completely different semantic # ./install, which can be erroneously created by make from ./install.sh. # Reject install programs that cannot install multiple files. { $as_echo "$as_me:${as_lineno-$LINENO}: checking for a BSD-compatible install" >&5 $as_echo_n "checking for a BSD-compatible install... " >&6; } if test -z "$INSTALL"; then if ${ac_cv_path_install+:} false; then : $as_echo_n "(cached) " >&6 else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. # Account for people who put trailing slashes in PATH elements. case $as_dir/ in #(( ./ | .// | /[cC]/* | \ /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \ ?:[\\/]os2[\\/]install[\\/]* | ?:[\\/]OS2[\\/]INSTALL[\\/]* | \ /usr/ucb/* ) ;; *) # OSF1 and SCO ODT 3.0 have their own names for install. # Don't use installbsd from OSF since it installs stuff as root # by default. for ac_prog in ginstall scoinst install; do for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then if test $ac_prog = install && grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then # AIX install. It has an incompatible calling convention. : elif test $ac_prog = install && grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then # program-specific install script used by HP pwplus--don't use. : else rm -rf conftest.one conftest.two conftest.dir echo one > conftest.one echo two > conftest.two mkdir conftest.dir if "$as_dir/$ac_prog$ac_exec_ext" -c conftest.one conftest.two "`pwd`/conftest.dir" && test -s conftest.one && test -s conftest.two && test -s conftest.dir/conftest.one && test -s conftest.dir/conftest.two then ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c" break 3 fi fi fi done done ;; esac done IFS=$as_save_IFS rm -rf conftest.one conftest.two conftest.dir fi if test "${ac_cv_path_install+set}" = set; then INSTALL=$ac_cv_path_install else # As a last resort, use the slow shell script. Don't cache a # value for INSTALL within a source directory, because that will # break other packages using the cache if that directory is # removed, or if the value is a relative name. INSTALL=$ac_install_sh fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $INSTALL" >&5 $as_echo "$INSTALL" >&6; } # Use test -z because SunOS4 sh mishandles braces in ${var-val}. # It thinks the first close brace ends the variable substitution. test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}' test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}' test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. set dummy ${ac_tool_prefix}gcc; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CC="${ac_tool_prefix}gcc" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_CC"; then ac_ct_CC=$CC # Extract the first word of "gcc", so it can be a program name with args. set dummy gcc; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CC="gcc" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 $as_echo "$ac_ct_CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_CC" = x; then CC="" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CC=$ac_ct_CC fi else CC="$ac_cv_prog_CC" fi if test -z "$CC"; then if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. set dummy ${ac_tool_prefix}cc; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CC="${ac_tool_prefix}cc" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi fi if test -z "$CC"; then # Extract the first word of "cc", so it can be a program name with args. set dummy cc; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else ac_prog_rejected=no as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then ac_prog_rejected=yes continue fi ac_cv_prog_CC="cc" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS if test $ac_prog_rejected = yes; then # We found a bogon in the path, so make sure we never use it. set dummy $ac_cv_prog_CC shift if test $# != 0; then # We chose a different compiler from the bogus one. # However, it has the same basename, so the bogon will be chosen # first if we set CC to just the basename; use the full file name. shift ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@" fi fi fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$CC"; then if test -n "$ac_tool_prefix"; then for ac_prog in cl.exe do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CC="$ac_tool_prefix$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$CC" && break done fi if test -z "$CC"; then ac_ct_CC=$CC for ac_prog in cl.exe do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CC="$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 $as_echo "$ac_ct_CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$ac_ct_CC" && break done if test "x$ac_ct_CC" = x; then CC="" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CC=$ac_ct_CC fi fi fi test -z "$CC" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "no acceptable C compiler found in \$PATH See \`config.log' for more details" "$LINENO" 5; } # Provide some information about the compiler. $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5 set X $ac_compile ac_compiler=$2 for ac_option in --version -v -V -qversion; do { { ac_try="$ac_compiler $ac_option >&5" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_compiler $ac_option >&5") 2>conftest.err ac_status=$? if test -s conftest.err; then sed '10a\ ... rest of stderr output deleted ... 10q' conftest.err >conftest.er1 cat conftest.er1 >&5 fi rm -f conftest.er1 conftest.err $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } done cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF ac_clean_files_save=$ac_clean_files ac_clean_files="$ac_clean_files a.out a.out.dSYM a.exe b.out" # Try to create an executable without -o first, disregard a.out. # It will help us diagnose broken compilers, and finding out an intuition # of exeext. { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler works" >&5 $as_echo_n "checking whether the C compiler works... " >&6; } ac_link_default=`$as_echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'` # The possible output files: ac_files="a.out conftest.exe conftest a.exe a_out.exe b.out conftest.*" ac_rmfiles= for ac_file in $ac_files do case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; * ) ac_rmfiles="$ac_rmfiles $ac_file";; esac done rm -f $ac_rmfiles if { { ac_try="$ac_link_default" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link_default") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then : # Autoconf-2.13 could set the ac_cv_exeext variable to `no'. # So ignore a value of `no', otherwise this would lead to `EXEEXT = no' # in a Makefile. We should not override ac_cv_exeext if it was cached, # so that the user can short-circuit this test for compilers unknown to # Autoconf. for ac_file in $ac_files '' do test -f "$ac_file" || continue case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; [ab].out ) # We found the default executable, but exeext='' is most # certainly right. break;; *.* ) if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no; then :; else ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` fi # We set ac_cv_exeext here because the later test for it is not # safe: cross compilers may not add the suffix if given an `-o' # argument, so we may need to know it at that point already. # Even if this section looks crufty: it has the advantage of # actually working. break;; * ) break;; esac done test "$ac_cv_exeext" = no && ac_cv_exeext= else ac_file='' fi if test -z "$ac_file"; then : { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error 77 "C compiler cannot create executables See \`config.log' for more details" "$LINENO" 5; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler default output file name" >&5 $as_echo_n "checking for C compiler default output file name... " >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5 $as_echo "$ac_file" >&6; } ac_exeext=$ac_cv_exeext rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out ac_clean_files=$ac_clean_files_save { $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5 $as_echo_n "checking for suffix of executables... " >&6; } if { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then : # If both `conftest.exe' and `conftest' are `present' (well, observable) # catch `conftest.exe'. For instance with Cygwin, `ls conftest' will # work properly (i.e., refer to `conftest.exe'), while it won't with # `rm'. for ac_file in conftest.exe conftest conftest.*; do test -f "$ac_file" || continue case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` break;; * ) break;; esac done else { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "cannot compute suffix of executables: cannot compile and link See \`config.log' for more details" "$LINENO" 5; } fi rm -f conftest conftest$ac_cv_exeext { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5 $as_echo "$ac_cv_exeext" >&6; } rm -f conftest.$ac_ext EXEEXT=$ac_cv_exeext ac_exeext=$EXEEXT cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main () { FILE *f = fopen ("conftest.out", "w"); return ferror (f) || fclose (f) != 0; ; return 0; } _ACEOF ac_clean_files="$ac_clean_files conftest.out" # Check that the compiler produces executables we can run. If not, either # the compiler is broken, or we cross compile. { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5 $as_echo_n "checking whether we are cross compiling... " >&6; } if test "$cross_compiling" != yes; then { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } if { ac_try='./conftest$ac_cv_exeext' { { case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_try") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; }; then cross_compiling=no else if test "$cross_compiling" = maybe; then cross_compiling=yes else { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "cannot run C compiled programs. If you meant to cross compile, use \`--host'. See \`config.log' for more details" "$LINENO" 5; } fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5 $as_echo "$cross_compiling" >&6; } rm -f conftest.$ac_ext conftest$ac_cv_exeext conftest.out ac_clean_files=$ac_clean_files_save { $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5 $as_echo_n "checking for suffix of object files... " >&6; } if ${ac_cv_objext+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF rm -f conftest.o conftest.obj if { { ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_compile") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then : for ac_file in conftest.o conftest.obj conftest.*; do test -f "$ac_file" || continue; case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM ) ;; *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'` break;; esac done else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "cannot compute suffix of object files: cannot compile See \`config.log' for more details" "$LINENO" 5; } fi rm -f conftest.$ac_cv_objext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5 $as_echo "$ac_cv_objext" >&6; } OBJEXT=$ac_cv_objext ac_objext=$OBJEXT { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C compiler" >&5 $as_echo_n "checking whether we are using the GNU C compiler... " >&6; } if ${ac_cv_c_compiler_gnu+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { #ifndef __GNUC__ choke me #endif ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_compiler_gnu=yes else ac_compiler_gnu=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_cv_c_compiler_gnu=$ac_compiler_gnu fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5 $as_echo "$ac_cv_c_compiler_gnu" >&6; } if test $ac_compiler_gnu = yes; then GCC=yes else GCC= fi ac_test_CFLAGS=${CFLAGS+set} ac_save_CFLAGS=$CFLAGS { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5 $as_echo_n "checking whether $CC accepts -g... " >&6; } if ${ac_cv_prog_cc_g+:} false; then : $as_echo_n "(cached) " >&6 else ac_save_c_werror_flag=$ac_c_werror_flag ac_c_werror_flag=yes ac_cv_prog_cc_g=no CFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_prog_cc_g=yes else CFLAGS="" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : else ac_c_werror_flag=$ac_save_c_werror_flag CFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_prog_cc_g=yes fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_c_werror_flag=$ac_save_c_werror_flag fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5 $as_echo "$ac_cv_prog_cc_g" >&6; } if test "$ac_test_CFLAGS" = set; then CFLAGS=$ac_save_CFLAGS elif test $ac_cv_prog_cc_g = yes; then if test "$GCC" = yes; then CFLAGS="-g -O2" else CFLAGS="-g" fi else if test "$GCC" = yes; then CFLAGS="-O2" else CFLAGS= fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5 $as_echo_n "checking for $CC option to accept ISO C89... " >&6; } if ${ac_cv_prog_cc_c89+:} false; then : $as_echo_n "(cached) " >&6 else ac_cv_prog_cc_c89=no ac_save_CC=$CC cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include struct stat; /* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */ struct buf { int x; }; FILE * (*rcsopen) (struct buf *, struct stat *, int); static char *e (p, i) char **p; int i; { return p[i]; } static char *f (char * (*g) (char **, int), char **p, ...) { char *s; va_list v; va_start (v,p); s = g (p, va_arg (v,int)); va_end (v); return s; } /* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has function prototypes and stuff, but not '\xHH' hex character constants. These don't provoke an error unfortunately, instead are silently treated as 'x'. The following induces an error, until -std is added to get proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an array size at least. It's necessary to write '\x00'==0 to get something that's true only with -std. */ int osf4_cc_array ['\x00' == 0 ? 1 : -1]; /* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters inside strings and character constants. */ #define FOO(x) 'x' int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1]; int test (int i, double x); struct s1 {int (*f) (int a);}; struct s2 {int (*f) (double a);}; int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int); int argc; char **argv; int main () { return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]; ; return 0; } _ACEOF for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \ -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" do CC="$ac_save_CC $ac_arg" if ac_fn_c_try_compile "$LINENO"; then : ac_cv_prog_cc_c89=$ac_arg fi rm -f core conftest.err conftest.$ac_objext test "x$ac_cv_prog_cc_c89" != "xno" && break done rm -f conftest.$ac_ext CC=$ac_save_CC fi # AC_CACHE_VAL case "x$ac_cv_prog_cc_c89" in x) { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 $as_echo "none needed" >&6; } ;; xno) { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 $as_echo "unsupported" >&6; } ;; *) CC="$CC $ac_cv_prog_cc_c89" { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5 $as_echo "$ac_cv_prog_cc_c89" >&6; } ;; esac if test "x$ac_cv_prog_cc_c89" != xno; then : fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu ansi="-std=c99 -pedantic" # Make sure we can run config.sub. $SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 || as_fn_error $? "cannot run $SHELL $ac_aux_dir/config.sub" "$LINENO" 5 { $as_echo "$as_me:${as_lineno-$LINENO}: checking build system type" >&5 $as_echo_n "checking build system type... " >&6; } if ${ac_cv_build+:} false; then : $as_echo_n "(cached) " >&6 else ac_build_alias=$build_alias test "x$ac_build_alias" = x && ac_build_alias=`$SHELL "$ac_aux_dir/config.guess"` test "x$ac_build_alias" = x && as_fn_error $? "cannot guess build type; you must specify one" "$LINENO" 5 ac_cv_build=`$SHELL "$ac_aux_dir/config.sub" $ac_build_alias` || as_fn_error $? "$SHELL $ac_aux_dir/config.sub $ac_build_alias failed" "$LINENO" 5 fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build" >&5 $as_echo "$ac_cv_build" >&6; } case $ac_cv_build in *-*-*) ;; *) as_fn_error $? "invalid value of canonical build" "$LINENO" 5;; esac build=$ac_cv_build ac_save_IFS=$IFS; IFS='-' set x $ac_cv_build shift build_cpu=$1 build_vendor=$2 shift; shift # Remember, the first character of IFS is used to create $*, # except with old shells: build_os=$* IFS=$ac_save_IFS case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking host system type" >&5 $as_echo_n "checking host system type... " >&6; } if ${ac_cv_host+:} false; then : $as_echo_n "(cached) " >&6 else if test "x$host_alias" = x; then ac_cv_host=$ac_cv_build else ac_cv_host=`$SHELL "$ac_aux_dir/config.sub" $host_alias` || as_fn_error $? "$SHELL $ac_aux_dir/config.sub $host_alias failed" "$LINENO" 5 fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_host" >&5 $as_echo "$ac_cv_host" >&6; } case $ac_cv_host in *-*-*) ;; *) as_fn_error $? "invalid value of canonical host" "$LINENO" 5;; esac host=$ac_cv_host ac_save_IFS=$IFS; IFS='-' set x $ac_cv_host shift host_cpu=$1 host_vendor=$2 shift; shift # Remember, the first character of IFS is used to create $*, # except with old shells: host_os=$* IFS=$ac_save_IFS case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac case "$host_os" in *cygwin*) CPPFLAGS="$CPPFLAGS -D_XOPEN_SOURCE_EXTENDED" ansi="" ;; hpux) CPPFLAGS="$CPPFLAGS -D_XOPEN_SOURCE_EXTENDED" ;; solaris2*) CPPFLAGS="$CPPFLAGS -D__EXTENSIONS__ -D_XOPEN_SOURCE_EXTENDED" ;; darwin*) CCOPTIONS="$CCOPTIONS -no-cpp-precomp -Wno-deprecated-declarations" CPPFLAGS="$CPPFLAGS -D_XOPEN_SOURCE_EXTENDED" ;; linux*) CPPFLAGS="$CPPFLAGS -D_POSIX_SOURCE -D_BSD_SOURCE -D_DEFAULT_SOURCE -D_XOPEN_SOURCE" ;; aix*) BROKEN_NEWTERM=1 ;; *bsd*) CPPFLAGS="$CPPFLAGS -D_XOPEN_SOURCE_EXTENDED" ;; esac if test "$GCC" = yes then # Add common gcc options, plus flags for dependency generation. CCOPTIONS="$CCOPTIONS -Wall -Wsign-compare $ansi -Wno-variadic-macros -MMD -MP" fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C preprocessor" >&5 $as_echo_n "checking how to run the C preprocessor... " >&6; } # On Suns, sometimes $CPP names a directory. if test -n "$CPP" && test -d "$CPP"; then CPP= fi if test -z "$CPP"; then if ${ac_cv_prog_CPP+:} false; then : $as_echo_n "(cached) " >&6 else # Double quotes because CPP needs to be expanded for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp" do ac_preproc_ok=false for ac_c_preproc_warn_flag in '' yes do # Use a header file that comes with gcc, so configuring glibc # with a fresh cross-compiler works. # Prefer to if __STDC__ is defined, since # exists even on freestanding compilers. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifdef __STDC__ # include #else # include #endif Syntax error _ACEOF if ac_fn_c_try_cpp "$LINENO"; then : else # Broken: fails on valid input. continue fi rm -f conftest.err conftest.i conftest.$ac_ext # OK, works on sane cases. Now check whether nonexistent headers # can be detected and how. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if ac_fn_c_try_cpp "$LINENO"; then : # Broken: success on invalid input. continue else # Passes both tests. ac_preproc_ok=: break fi rm -f conftest.err conftest.i conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f conftest.i conftest.err conftest.$ac_ext if $ac_preproc_ok; then : break fi done ac_cv_prog_CPP=$CPP fi CPP=$ac_cv_prog_CPP else ac_cv_prog_CPP=$CPP fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CPP" >&5 $as_echo "$CPP" >&6; } ac_preproc_ok=false for ac_c_preproc_warn_flag in '' yes do # Use a header file that comes with gcc, so configuring glibc # with a fresh cross-compiler works. # Prefer to if __STDC__ is defined, since # exists even on freestanding compilers. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifdef __STDC__ # include #else # include #endif Syntax error _ACEOF if ac_fn_c_try_cpp "$LINENO"; then : else # Broken: fails on valid input. continue fi rm -f conftest.err conftest.i conftest.$ac_ext # OK, works on sane cases. Now check whether nonexistent headers # can be detected and how. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if ac_fn_c_try_cpp "$LINENO"; then : # Broken: success on invalid input. continue else # Passes both tests. ac_preproc_ok=: break fi rm -f conftest.err conftest.i conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f conftest.i conftest.err conftest.$ac_ext if $ac_preproc_ok; then : else { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "C preprocessor \"$CPP\" fails sanity check See \`config.log' for more details" "$LINENO" 5; } fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu { $as_echo "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5 $as_echo_n "checking for grep that handles long lines and -e... " >&6; } if ${ac_cv_path_GREP+:} false; then : $as_echo_n "(cached) " >&6 else if test -z "$GREP"; then ac_path_GREP_found=false # Loop through the user's path and test for each of PROGNAME-LIST as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_prog in grep ggrep; do for ac_exec_ext in '' $ac_executable_extensions; do ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext" as_fn_executable_p "$ac_path_GREP" || continue # Check for GNU ac_path_GREP and select it if it is found. # Check for GNU $ac_path_GREP case `"$ac_path_GREP" --version 2>&1` in *GNU*) ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;; *) ac_count=0 $as_echo_n 0123456789 >"conftest.in" while : do cat "conftest.in" "conftest.in" >"conftest.tmp" mv "conftest.tmp" "conftest.in" cp "conftest.in" "conftest.nl" $as_echo 'GREP' >> "conftest.nl" "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break as_fn_arith $ac_count + 1 && ac_count=$as_val if test $ac_count -gt ${ac_path_GREP_max-0}; then # Best one so far, save it but keep looking for a better one ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_max=$ac_count fi # 10*(2^10) chars as input seems more than enough test $ac_count -gt 10 && break done rm -f conftest.in conftest.tmp conftest.nl conftest.out;; esac $ac_path_GREP_found && break 3 done done done IFS=$as_save_IFS if test -z "$ac_cv_path_GREP"; then as_fn_error $? "no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 fi else ac_cv_path_GREP=$GREP fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP" >&5 $as_echo "$ac_cv_path_GREP" >&6; } GREP="$ac_cv_path_GREP" { $as_echo "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5 $as_echo_n "checking for egrep... " >&6; } if ${ac_cv_path_EGREP+:} false; then : $as_echo_n "(cached) " >&6 else if echo a | $GREP -E '(a|b)' >/dev/null 2>&1 then ac_cv_path_EGREP="$GREP -E" else if test -z "$EGREP"; then ac_path_EGREP_found=false # Loop through the user's path and test for each of PROGNAME-LIST as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_prog in egrep; do for ac_exec_ext in '' $ac_executable_extensions; do ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext" as_fn_executable_p "$ac_path_EGREP" || continue # Check for GNU ac_path_EGREP and select it if it is found. # Check for GNU $ac_path_EGREP case `"$ac_path_EGREP" --version 2>&1` in *GNU*) ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;; *) ac_count=0 $as_echo_n 0123456789 >"conftest.in" while : do cat "conftest.in" "conftest.in" >"conftest.tmp" mv "conftest.tmp" "conftest.in" cp "conftest.in" "conftest.nl" $as_echo 'EGREP' >> "conftest.nl" "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break as_fn_arith $ac_count + 1 && ac_count=$as_val if test $ac_count -gt ${ac_path_EGREP_max-0}; then # Best one so far, save it but keep looking for a better one ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_max=$ac_count fi # 10*(2^10) chars as input seems more than enough test $ac_count -gt 10 && break done rm -f conftest.in conftest.tmp conftest.nl conftest.out;; esac $ac_path_EGREP_found && break 3 done done done IFS=$as_save_IFS if test -z "$ac_cv_path_EGREP"; then as_fn_error $? "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 fi else ac_cv_path_EGREP=$EGREP fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5 $as_echo "$ac_cv_path_EGREP" >&6; } EGREP="$ac_cv_path_EGREP" { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5 $as_echo_n "checking for ANSI C header files... " >&6; } if ${ac_cv_header_stdc+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include #include #include int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_header_stdc=yes else ac_cv_header_stdc=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext if test $ac_cv_header_stdc = yes; then # SunOS 4.x string.h does not declare mem*, contrary to ANSI. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "memchr" >/dev/null 2>&1; then : else ac_cv_header_stdc=no fi rm -f conftest* fi if test $ac_cv_header_stdc = yes; then # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "free" >/dev/null 2>&1; then : else ac_cv_header_stdc=no fi rm -f conftest* fi if test $ac_cv_header_stdc = yes; then # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. if test "$cross_compiling" = yes; then : : else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include #if ((' ' & 0x0FF) == 0x020) # define ISLOWER(c) ('a' <= (c) && (c) <= 'z') # define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) #else # define ISLOWER(c) \ (('a' <= (c) && (c) <= 'i') \ || ('j' <= (c) && (c) <= 'r') \ || ('s' <= (c) && (c) <= 'z')) # define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) #endif #define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) int main () { int i; for (i = 0; i < 256; i++) if (XOR (islower (i), ISLOWER (i)) || toupper (i) != TOUPPER (i)) return 2; return 0; } _ACEOF if ac_fn_c_try_run "$LINENO"; then : else ac_cv_header_stdc=no fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdc" >&5 $as_echo "$ac_cv_header_stdc" >&6; } if test $ac_cv_header_stdc = yes; then $as_echo "#define STDC_HEADERS 1" >>confdefs.h fi # On IRIX 5.3, sys/types and inttypes.h are conflicting. for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \ inttypes.h stdint.h unistd.h do : as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default " if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : cat >>confdefs.h <<_ACEOF #define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF fi done for ac_header in sys/select.h do : ac_fn_c_check_header_mongrel "$LINENO" "sys/select.h" "ac_cv_header_sys_select_h" "$ac_includes_default" if test "x$ac_cv_header_sys_select_h" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_SYS_SELECT_H 1 _ACEOF fi done if test "$with_readline" != no; then for ac_header in readline/history.h do : ac_fn_c_check_header_mongrel "$LINENO" "readline/history.h" "ac_cv_header_readline_history_h" "$ac_includes_default" if test "x$ac_cv_header_readline_history_h" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_READLINE_HISTORY_H 1 _ACEOF fi done fi for ac_header in pty.h do : ac_fn_c_check_header_mongrel "$LINENO" "pty.h" "ac_cv_header_pty_h" "$ac_includes_default" if test "x$ac_cv_header_pty_h" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_PTY_H 1 _ACEOF fi done for ac_header in libutil.h do : ac_fn_c_check_header_mongrel "$LINENO" "libutil.h" "ac_cv_header_libutil_h" "$ac_includes_default" if test "x$ac_cv_header_libutil_h" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_LIBUTIL_H 1 _ACEOF fi done for ac_header in util.h do : ac_fn_c_check_header_mongrel "$LINENO" "util.h" "ac_cv_header_util_h" "$ac_includes_default" if test "x$ac_cv_header_util_h" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_UTIL_H 1 _ACEOF fi done for ac_header in getopt.h do : ac_fn_c_check_header_mongrel "$LINENO" "getopt.h" "ac_cv_header_getopt_h" "$ac_includes_default" if test "x$ac_cv_header_getopt_h" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_GETOPT_H 1 _ACEOF fi done for ac_header in ncursesw/ncurses.h do : ac_fn_c_check_header_mongrel "$LINENO" "ncursesw/ncurses.h" "ac_cv_header_ncursesw_ncurses_h" "$ac_includes_default" if test "x$ac_cv_header_ncursesw_ncurses_h" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_NCURSESW_NCURSES_H 1 _ACEOF else for ac_header in ncurses/ncurses.h do : ac_fn_c_check_header_mongrel "$LINENO" "ncurses/ncurses.h" "ac_cv_header_ncurses_ncurses_h" "$ac_includes_default" if test "x$ac_cv_header_ncurses_ncurses_h" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_NCURSES_NCURSES_H 1 _ACEOF else for ac_header in ncurses.h do : ac_fn_c_check_header_mongrel "$LINENO" "ncurses.h" "ac_cv_header_ncurses_h" "$ac_includes_default" if test "x$ac_cv_header_ncurses_h" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_NCURSES_H 1 _ACEOF else for ac_header in curses.h do : ac_fn_c_check_header_mongrel "$LINENO" "curses.h" "ac_cv_header_curses_h" "$ac_includes_default" if test "x$ac_cv_header_curses_h" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_CURSES_H 1 _ACEOF else as_fn_error $? "No curses header file" "$LINENO" 5 fi done fi done fi done fi done for ac_header in ncursesw/term.h do : ac_fn_c_check_header_mongrel "$LINENO" "ncursesw/term.h" "ac_cv_header_ncursesw_term_h" "$ac_includes_default" if test "x$ac_cv_header_ncursesw_term_h" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_NCURSESW_TERM_H 1 _ACEOF else for ac_header in ncurses/term.h do : ac_fn_c_check_header_mongrel "$LINENO" "ncurses/term.h" "ac_cv_header_ncurses_term_h" "$ac_includes_default" if test "x$ac_cv_header_ncurses_term_h" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_NCURSES_TERM_H 1 _ACEOF else for ac_header in term.h do : ac_fn_c_check_header_mongrel "$LINENO" "term.h" "ac_cv_header_term_h" "$ac_includes_default" if test "x$ac_cv_header_term_h" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_TERM_H 1 _ACEOF fi done fi done fi done # Check whether --with-readline was given. if test "${with_readline+set}" = set; then : withval=$with_readline; fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing forkpty" >&5 $as_echo_n "checking for library containing forkpty... " >&6; } if ${ac_cv_search_forkpty+:} false; then : $as_echo_n "(cached) " >&6 else ac_func_search_save_LIBS=$LIBS cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char forkpty (); int main () { return forkpty (); ; return 0; } _ACEOF for ac_lib in '' util; do if test -z "$ac_lib"; then ac_res="none required" else ac_res=-l$ac_lib LIBS="-l$ac_lib $ac_func_search_save_LIBS" fi if ac_fn_c_try_link "$LINENO"; then : ac_cv_search_forkpty=$ac_res fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext if ${ac_cv_search_forkpty+:} false; then : break fi done if ${ac_cv_search_forkpty+:} false; then : else ac_cv_search_forkpty=no fi rm conftest.$ac_ext LIBS=$ac_func_search_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_forkpty" >&5 $as_echo "$ac_cv_search_forkpty" >&6; } ac_res=$ac_cv_search_forkpty if test "$ac_res" != no; then : test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" fi for ac_func in forkpty do : ac_fn_c_check_func "$LINENO" "forkpty" "ac_cv_func_forkpty" if test "x$ac_cv_func_forkpty" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_FORKPTY 1 _ACEOF fi done { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing newterm" >&5 $as_echo_n "checking for library containing newterm... " >&6; } if ${ac_cv_search_newterm+:} false; then : $as_echo_n "(cached) " >&6 else ac_func_search_save_LIBS=$LIBS cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char newterm (); int main () { return newterm (); ; return 0; } _ACEOF for ac_lib in '' ncursesw ncurses curses; do if test -z "$ac_lib"; then ac_res="none required" else ac_res=-l$ac_lib LIBS="-l$ac_lib $ac_func_search_save_LIBS" fi if ac_fn_c_try_link "$LINENO"; then : ac_cv_search_newterm=$ac_res fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext if ${ac_cv_search_newterm+:} false; then : break fi done if ${ac_cv_search_newterm+:} false; then : else ac_cv_search_newterm=no fi rm conftest.$ac_ext LIBS=$ac_func_search_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_newterm" >&5 $as_echo "$ac_cv_search_newterm" >&6; } ac_res=$ac_cv_search_newterm if test "$ac_res" != no; then : test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" else as_fn_error $? "Can't find libncurses or new-enough libcurses" "$LINENO" 5 fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing setupterm" >&5 $as_echo_n "checking for library containing setupterm... " >&6; } if ${ac_cv_search_setupterm+:} false; then : $as_echo_n "(cached) " >&6 else ac_func_search_save_LIBS=$LIBS cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char setupterm (); int main () { return setupterm (); ; return 0; } _ACEOF for ac_lib in '' tinfow tinfo; do if test -z "$ac_lib"; then ac_res="none required" else ac_res=-l$ac_lib LIBS="-l$ac_lib $ac_func_search_save_LIBS" fi if ac_fn_c_try_link "$LINENO"; then : ac_cv_search_setupterm=$ac_res fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext if ${ac_cv_search_setupterm+:} false; then : break fi done if ${ac_cv_search_setupterm+:} false; then : else ac_cv_search_setupterm=no fi rm conftest.$ac_ext LIBS=$ac_func_search_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_setupterm" >&5 $as_echo "$ac_cv_search_setupterm" >&6; } ac_res=$ac_cv_search_setupterm if test "$ac_res" != no; then : test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" else as_fn_error $? "Can't find terminfo library" "$LINENO" 5 fi if test "$with_readline" != no; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking for rl_initialize in -lreadline" >&5 $as_echo_n "checking for rl_initialize in -lreadline... " >&6; } if ${ac_cv_lib_readline_rl_initialize+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lreadline $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char rl_initialize (); int main () { return rl_initialize (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_readline_rl_initialize=yes else ac_cv_lib_readline_rl_initialize=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_readline_rl_initialize" >&5 $as_echo "$ac_cv_lib_readline_rl_initialize" >&6; } if test "x$ac_cv_lib_readline_rl_initialize" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_LIBREADLINE 1 _ACEOF LIBS="-lreadline $LIBS" fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing gethostbyname" >&5 $as_echo_n "checking for library containing gethostbyname... " >&6; } if ${ac_cv_search_gethostbyname+:} false; then : $as_echo_n "(cached) " >&6 else ac_func_search_save_LIBS=$LIBS cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char gethostbyname (); int main () { return gethostbyname (); ; return 0; } _ACEOF for ac_lib in '' nsl; do if test -z "$ac_lib"; then ac_res="none required" else ac_res=-l$ac_lib LIBS="-l$ac_lib $ac_func_search_save_LIBS" fi if ac_fn_c_try_link "$LINENO"; then : ac_cv_search_gethostbyname=$ac_res fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext if ${ac_cv_search_gethostbyname+:} false; then : break fi done if ${ac_cv_search_gethostbyname+:} false; then : else ac_cv_search_gethostbyname=no fi rm conftest.$ac_ext LIBS=$ac_func_search_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_gethostbyname" >&5 $as_echo "$ac_cv_search_gethostbyname" >&6; } ac_res=$ac_cv_search_gethostbyname if test "$ac_res" != no; then : test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing socket" >&5 $as_echo_n "checking for library containing socket... " >&6; } if ${ac_cv_search_socket+:} false; then : $as_echo_n "(cached) " >&6 else ac_func_search_save_LIBS=$LIBS cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char socket (); int main () { return socket (); ; return 0; } _ACEOF for ac_lib in '' socket; do if test -z "$ac_lib"; then ac_res="none required" else ac_res=-l$ac_lib LIBS="-l$ac_lib $ac_func_search_save_LIBS" fi if ac_fn_c_try_link "$LINENO"; then : ac_cv_search_socket=$ac_res fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext if ${ac_cv_search_socket+:} false; then : break fi done if ${ac_cv_search_socket+:} false; then : else ac_cv_search_socket=no fi rm conftest.$ac_ext LIBS=$ac_func_search_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_socket" >&5 $as_echo "$ac_cv_search_socket" >&6; } ac_res=$ac_cv_search_socket if test "$ac_res" != no; then : test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" fi if test -n "$BROKEN_NEWTERM" then if test "$ac_cv_lib_ncurses_newterm" = yes then : else $as_echo "#define BROKEN_NEWTERM 1" >>confdefs.h fi fi for ac_func in use_default_colors do : ac_fn_c_check_func "$LINENO" "use_default_colors" "ac_cv_func_use_default_colors" if test "x$ac_cv_func_use_default_colors" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_USE_DEFAULT_COLORS 1 _ACEOF fi done for ac_func in vasprintf do : ac_fn_c_check_func "$LINENO" "vasprintf" "ac_cv_func_vasprintf" if test "x$ac_cv_func_vasprintf" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_VASPRINTF 1 _ACEOF fi done { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _LARGEFILE_SOURCE value needed for large files" >&5 $as_echo_n "checking for _LARGEFILE_SOURCE value needed for large files... " >&6; } if ${ac_cv_sys_largefile_source+:} false; then : $as_echo_n "(cached) " >&6 else while :; do cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include /* for off_t */ #include int main () { int (*fp) (FILE *, off_t, int) = fseeko; return fseeko (stdin, 0, 0) && fp (stdin, 0, 0); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_sys_largefile_source=no; break fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #define _LARGEFILE_SOURCE 1 #include /* for off_t */ #include int main () { int (*fp) (FILE *, off_t, int) = fseeko; return fseeko (stdin, 0, 0) && fp (stdin, 0, 0); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_sys_largefile_source=1; break fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext ac_cv_sys_largefile_source=unknown break done fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_largefile_source" >&5 $as_echo "$ac_cv_sys_largefile_source" >&6; } case $ac_cv_sys_largefile_source in #( no | unknown) ;; *) cat >>confdefs.h <<_ACEOF #define _LARGEFILE_SOURCE $ac_cv_sys_largefile_source _ACEOF ;; esac rm -rf conftest* # We used to try defining _XOPEN_SOURCE=500 too, to work around a bug # in glibc 2.1.3, but that breaks too many other things. # If you want fseeko and ftello with glibc, upgrade to a fixed glibc. if test $ac_cv_sys_largefile_source != unknown; then $as_echo "#define HAVE_FSEEKO 1" >>confdefs.h fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing wadd_wch" >&5 $as_echo_n "checking for library containing wadd_wch... " >&6; } if ${ac_cv_search_wadd_wch+:} false; then : $as_echo_n "(cached) " >&6 else ac_func_search_save_LIBS=$LIBS cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char wadd_wch (); int main () { return wadd_wch (); ; return 0; } _ACEOF for ac_lib in '' ncursesw ncurses curses; do if test -z "$ac_lib"; then ac_res="none required" else ac_res=-l$ac_lib LIBS="-l$ac_lib $ac_func_search_save_LIBS" fi if ac_fn_c_try_link "$LINENO"; then : ac_cv_search_wadd_wch=$ac_res fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext if ${ac_cv_search_wadd_wch+:} false; then : break fi done if ${ac_cv_search_wadd_wch+:} false; then : else ac_cv_search_wadd_wch=no fi rm conftest.$ac_ext LIBS=$ac_func_search_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_wadd_wch" >&5 $as_echo "$ac_cv_search_wadd_wch" >&6; } ac_res=$ac_cv_search_wadd_wch if test "$ac_res" != no; then : test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" $as_echo "#define CURSES_WIDE 1" >>confdefs.h Cw=1 else { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Wide curses not found -- c3270 will not be able to support multi-byte character encodings" >&5 $as_echo "$as_me: WARNING: Wide curses not found -- c3270 will not be able to support multi-byte character encodings" >&2;} fi for ac_func in tiparm do : ac_fn_c_check_func "$LINENO" "tiparm" "ac_cv_func_tiparm" if test "x$ac_cv_func_tiparm" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_TIPARM 1 _ACEOF fi done # Extract the first word of "less", so it can be a program name with args. set dummy less; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_path_LESSPATH+:} false; then : $as_echo_n "(cached) " >&6 else case $LESSPATH in [\\/]* | ?:[\\/]*) ac_cv_path_LESSPATH="$LESSPATH" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_path_LESSPATH="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac fi LESSPATH=$ac_cv_path_LESSPATH if test -n "$LESSPATH"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LESSPATH" >&5 $as_echo "$LESSPATH" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi cat >>confdefs.h <<_ACEOF #define LESSPATH "$LESSPATH" _ACEOF # Extract the first word of "more", so it can be a program name with args. set dummy more; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_path_MOREPATH+:} false; then : $as_echo_n "(cached) " >&6 else case $MOREPATH in [\\/]* | ?:[\\/]*) ac_cv_path_MOREPATH="$MOREPATH" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_path_MOREPATH="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac fi MOREPATH=$ac_cv_path_MOREPATH if test -n "$MOREPATH"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MOREPATH" >&5 $as_echo "$MOREPATH" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi cat >>confdefs.h <<_ACEOF #define MOREPATH "$MOREPATH" _ACEOF LIBX3270DIR='${sysconfdir}/x3270' # Check whether --enable-dbcs was given. if test "${enable_dbcs+set}" = set; then : enableval=$enable_dbcs; fi case "$enable_dbcs" in no) ;; *) $as_echo "#define X3270_DBCS 1" >>confdefs.h DBCS=-DX3270_DBCS=1 ;; esac # Check whether --enable-local_process was given. if test "${enable_local_process+set}" = set; then : enableval=$enable_local_process; fi case "$enable_local_process" in ""|yes) $as_echo "#define X3270_LOCAL_PROCESS 1" >>confdefs.h ;; esac # Check whether --enable-ipv6 was given. if test "${enable_ipv6+set}" = set; then : enableval=$enable_ipv6; fi case "$enable_ipv6" in ""|yes) $as_echo "#define X3270_IPV6 1" >>confdefs.h ;; esac ac_config_files="$ac_config_files Makefile Makefile.obj" cat >confcache <<\_ACEOF # This file is a shell script that caches the results of configure # tests run on this system so they can be shared between configure # scripts and configure runs, see configure's option --config-cache. # It is not useful on other systems. If it contains results you don't # want to keep, you may remove or edit it. # # config.status only pays attention to the cache file if you give it # the --recheck option to rerun configure. # # `ac_cv_env_foo' variables (set or unset) will be overridden when # loading this file, other *unset* `ac_cv_foo' will be assigned the # following values. _ACEOF # The following way of writing the cache mishandles newlines in values, # but we know of no workaround that is simple, portable, and efficient. # So, we kill variables containing newlines. # Ultrix sh set writes to stderr and can't be redirected directly, # and sets the high bit in the cache file unless we assign to the vars. ( for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do eval ac_val=\$$ac_var case $ac_val in #( *${as_nl}*) case $ac_var in #( *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 $as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; esac case $ac_var in #( _ | IFS | as_nl) ;; #( BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( *) { eval $ac_var=; unset $ac_var;} ;; esac ;; esac done (set) 2>&1 | case $as_nl`(ac_space=' '; set) 2>&1` in #( *${as_nl}ac_space=\ *) # `set' does not quote correctly, so add quotes: double-quote # substitution turns \\\\ into \\, and sed turns \\ into \. sed -n \ "s/'/'\\\\''/g; s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" ;; #( *) # `set' quotes correctly as required by POSIX, so do not add quotes. sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" ;; esac | sort ) | sed ' /^ac_cv_env_/b end t clear :clear s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/ t end s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ :end' >>confcache if diff "$cache_file" confcache >/dev/null 2>&1; then :; else if test -w "$cache_file"; then if test "x$cache_file" != "x/dev/null"; then { $as_echo "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5 $as_echo "$as_me: updating cache $cache_file" >&6;} if test ! -f "$cache_file" || test -h "$cache_file"; then cat confcache >"$cache_file" else case $cache_file in #( */* | ?:*) mv -f confcache "$cache_file"$$ && mv -f "$cache_file"$$ "$cache_file" ;; #( *) mv -f confcache "$cache_file" ;; esac fi fi else { $as_echo "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5 $as_echo "$as_me: not updating unwritable cache $cache_file" >&6;} fi fi rm -f confcache test "x$prefix" = xNONE && prefix=$ac_default_prefix # Let make expand exec_prefix. test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' DEFS=-DHAVE_CONFIG_H ac_libobjs= ac_ltlibobjs= U= for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue # 1. Remove the extension, and $U if already installed. ac_script='s/\$U\././;s/\.o$//;s/\.obj$//' ac_i=`$as_echo "$ac_i" | sed "$ac_script"` # 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR # will be set to the directory where LIBOBJS objects are built. as_fn_append ac_libobjs " \${LIBOBJDIR}$ac_i\$U.$ac_objext" as_fn_append ac_ltlibobjs " \${LIBOBJDIR}$ac_i"'$U.lo' done LIBOBJS=$ac_libobjs LTLIBOBJS=$ac_ltlibobjs : "${CONFIG_STATUS=./config.status}" ac_write_fail=0 ac_clean_files_save=$ac_clean_files ac_clean_files="$ac_clean_files $CONFIG_STATUS" { $as_echo "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5 $as_echo "$as_me: creating $CONFIG_STATUS" >&6;} as_write_fail=0 cat >$CONFIG_STATUS <<_ASEOF || as_write_fail=1 #! $SHELL # Generated by $as_me. # Run this file to recreate the current configuration. # Compiler output produced by configure, useful for debugging # configure, is in config.log if it exists. debug=false ac_cs_recheck=false ac_cs_silent=false SHELL=\${CONFIG_SHELL-$SHELL} export SHELL _ASEOF cat >>$CONFIG_STATUS <<\_ASEOF || as_write_fail=1 ## -------------------- ## ## M4sh Initialization. ## ## -------------------- ## # Be more Bourne compatible DUALCASE=1; export DUALCASE # for MKS sh if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST else case `(set -o) 2>/dev/null` in #( *posix*) : set -o posix ;; #( *) : ;; esac fi as_nl=' ' export as_nl # Printing a long string crashes Solaris 7 /usr/bin/printf. as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo # Prefer a ksh shell builtin over an external printf program on Solaris, # but without wasting forks for bash or zsh. if test -z "$BASH_VERSION$ZSH_VERSION" \ && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then as_echo='print -r --' as_echo_n='print -rn --' elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then as_echo='printf %s\n' as_echo_n='printf %s' else if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' as_echo_n='/usr/ucb/echo -n' else as_echo_body='eval expr "X$1" : "X\\(.*\\)"' as_echo_n_body='eval arg=$1; case $arg in #( *"$as_nl"*) expr "X$arg" : "X\\(.*\\)$as_nl"; arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; esac; expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" ' export as_echo_n_body as_echo_n='sh -c $as_echo_n_body as_echo' fi export as_echo_body as_echo='sh -c $as_echo_body as_echo' fi # The user is always right. if test "${PATH_SEPARATOR+set}" != set; then PATH_SEPARATOR=: (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || PATH_SEPARATOR=';' } fi # IFS # We need space, tab and new line, in precisely that order. Quoting is # there to prevent editors from complaining about space-tab. # (If _AS_PATH_WALK were called with IFS unset, it would disable word # splitting by setting IFS to empty value.) IFS=" "" $as_nl" # Find who we are. Look in the path if we contain no directory separator. as_myself= case $0 in #(( *[\\/]* ) as_myself=$0 ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break done IFS=$as_save_IFS ;; esac # We did not find ourselves, most probably we were run as `sh COMMAND' # in which case we are not to be found in the path. if test "x$as_myself" = x; then as_myself=$0 fi if test ! -f "$as_myself"; then $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 exit 1 fi # Unset variables that we do not need and which cause bugs (e.g. in # pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" # suppresses any "Segmentation fault" message there. '((' could # trigger a bug in pdksh 5.2.14. for as_var in BASH_ENV ENV MAIL MAILPATH do eval test x\${$as_var+set} = xset \ && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : done PS1='$ ' PS2='> ' PS4='+ ' # NLS nuisances. LC_ALL=C export LC_ALL LANGUAGE=C export LANGUAGE # CDPATH. (unset CDPATH) >/dev/null 2>&1 && unset CDPATH # as_fn_error STATUS ERROR [LINENO LOG_FD] # ---------------------------------------- # Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are # provided, also output the error to LOG_FD, referencing LINENO. Then exit the # script with STATUS, using 1 if that was 0. as_fn_error () { as_status=$1; test $as_status -eq 0 && as_status=1 if test "$4"; then as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 fi $as_echo "$as_me: error: $2" >&2 as_fn_exit $as_status } # as_fn_error # as_fn_set_status STATUS # ----------------------- # Set $? to STATUS, without forking. as_fn_set_status () { return $1 } # as_fn_set_status # as_fn_exit STATUS # ----------------- # Exit the shell with STATUS, even in a "trap 0" or "set -e" context. as_fn_exit () { set +e as_fn_set_status $1 exit $1 } # as_fn_exit # as_fn_unset VAR # --------------- # Portably unset VAR. as_fn_unset () { { eval $1=; unset $1;} } as_unset=as_fn_unset # as_fn_append VAR VALUE # ---------------------- # Append the text in VALUE to the end of the definition contained in VAR. Take # advantage of any shell optimizations that allow amortized linear growth over # repeated appends, instead of the typical quadratic growth present in naive # implementations. if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : eval 'as_fn_append () { eval $1+=\$2 }' else as_fn_append () { eval $1=\$$1\$2 } fi # as_fn_append # as_fn_arith ARG... # ------------------ # Perform arithmetic evaluation on the ARGs, and store the result in the # global $as_val. Take advantage of shells that can avoid forks. The arguments # must be portable across $(()) and expr. if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : eval 'as_fn_arith () { as_val=$(( $* )) }' else as_fn_arith () { as_val=`expr "$@" || test $? -eq 1` } fi # as_fn_arith if expr a : '\(a\)' >/dev/null 2>&1 && test "X`expr 00001 : '.*\(...\)'`" = X001; then as_expr=expr else as_expr=false fi if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then as_basename=basename else as_basename=false fi if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then as_dirname=dirname else as_dirname=false fi as_me=`$as_basename -- "$0" || $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ X"$0" : 'X\(//\)$' \| \ X"$0" : 'X\(/\)' \| . 2>/dev/null || $as_echo X/"$0" | sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/ q } /^X\/\(\/\/\)$/{ s//\1/ q } /^X\/\(\/\).*/{ s//\1/ q } s/.*/./; q'` # Avoid depending upon Character Ranges. as_cr_letters='abcdefghijklmnopqrstuvwxyz' as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' as_cr_Letters=$as_cr_letters$as_cr_LETTERS as_cr_digits='0123456789' as_cr_alnum=$as_cr_Letters$as_cr_digits ECHO_C= ECHO_N= ECHO_T= case `echo -n x` in #((((( -n*) case `echo 'xy\c'` in *c*) ECHO_T=' ';; # ECHO_T is single tab character. xy) ECHO_C='\c';; *) echo `echo ksh88 bug on AIX 6.1` > /dev/null ECHO_T=' ';; esac;; *) ECHO_N='-n';; esac rm -f conf$$ conf$$.exe conf$$.file if test -d conf$$.dir; then rm -f conf$$.dir/conf$$.file else rm -f conf$$.dir mkdir conf$$.dir 2>/dev/null fi if (echo >conf$$.file) 2>/dev/null; then if ln -s conf$$.file conf$$ 2>/dev/null; then as_ln_s='ln -s' # ... but there are two gotchas: # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. # In both cases, we have to default to `cp -pR'. ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || as_ln_s='cp -pR' elif ln conf$$.file conf$$ 2>/dev/null; then as_ln_s=ln else as_ln_s='cp -pR' fi else as_ln_s='cp -pR' fi rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file rmdir conf$$.dir 2>/dev/null # as_fn_mkdir_p # ------------- # Create "$as_dir" as a directory, including parents if necessary. as_fn_mkdir_p () { case $as_dir in #( -*) as_dir=./$as_dir;; esac test -d "$as_dir" || eval $as_mkdir_p || { as_dirs= while :; do case $as_dir in #( *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( *) as_qdir=$as_dir;; esac as_dirs="'$as_qdir' $as_dirs" as_dir=`$as_dirname -- "$as_dir" || $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_dir" : 'X\(//\)[^/]' \| \ X"$as_dir" : 'X\(//\)$' \| \ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$as_dir" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` test -d "$as_dir" && break done test -z "$as_dirs" || eval "mkdir $as_dirs" } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" } # as_fn_mkdir_p if mkdir -p . 2>/dev/null; then as_mkdir_p='mkdir -p "$as_dir"' else test -d ./-p && rmdir ./-p as_mkdir_p=false fi # as_fn_executable_p FILE # ----------------------- # Test if FILE is an executable regular file. as_fn_executable_p () { test -f "$1" && test -x "$1" } # as_fn_executable_p as_test_x='test -x' as_executable_p=as_fn_executable_p # Sed expression to map a string onto a valid CPP name. as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" # Sed expression to map a string onto a valid variable name. as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" exec 6>&1 ## ----------------------------------- ## ## Main body of $CONFIG_STATUS script. ## ## ----------------------------------- ## _ASEOF test $as_write_fail = 0 && chmod +x $CONFIG_STATUS || ac_write_fail=1 cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # Save the log message, to keep $0 and so on meaningful, and to # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" This file was extended by c3270 $as_me 4.0, which was generated by GNU Autoconf 2.69. Invocation command line was CONFIG_FILES = $CONFIG_FILES CONFIG_HEADERS = $CONFIG_HEADERS CONFIG_LINKS = $CONFIG_LINKS CONFIG_COMMANDS = $CONFIG_COMMANDS $ $0 $@ on `(hostname || uname -n) 2>/dev/null | sed 1q` " _ACEOF case $ac_config_files in *" "*) set x $ac_config_files; shift; ac_config_files=$*;; esac case $ac_config_headers in *" "*) set x $ac_config_headers; shift; ac_config_headers=$*;; esac cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 # Files that config.status was made for. config_files="$ac_config_files" config_headers="$ac_config_headers" _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 ac_cs_usage="\ \`$as_me' instantiates files and other configuration actions from templates according to the current configuration. Unless the files and actions are specified as TAGs, all are instantiated by default. Usage: $0 [OPTION]... [TAG]... -h, --help print this help, then exit -V, --version print version number and configuration settings, then exit --config print configuration, then exit -q, --quiet, --silent do not print progress messages -d, --debug don't remove temporary files --recheck update $as_me by reconfiguring in the same conditions --file=FILE[:TEMPLATE] instantiate the configuration file FILE --header=FILE[:TEMPLATE] instantiate the configuration header FILE Configuration files: $config_files Configuration headers: $config_headers Report bugs to the package provider." _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" ac_cs_version="\\ c3270 config.status 4.0 configured by $0, generated by GNU Autoconf 2.69, with options \\"\$ac_cs_config\\" Copyright (C) 2012 Free Software Foundation, Inc. This config.status script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it." ac_pwd='$ac_pwd' srcdir='$srcdir' INSTALL='$INSTALL' test -n "\$AWK" || AWK=awk _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # The default lists apply if the user does not specify any file. ac_need_defaults=: while test $# != 0 do case $1 in --*=?*) ac_option=`expr "X$1" : 'X\([^=]*\)='` ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'` ac_shift=: ;; --*=) ac_option=`expr "X$1" : 'X\([^=]*\)='` ac_optarg= ac_shift=: ;; *) ac_option=$1 ac_optarg=$2 ac_shift=shift ;; esac case $ac_option in # Handling of the options. -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) ac_cs_recheck=: ;; --version | --versio | --versi | --vers | --ver | --ve | --v | -V ) $as_echo "$ac_cs_version"; exit ;; --config | --confi | --conf | --con | --co | --c ) $as_echo "$ac_cs_config"; exit ;; --debug | --debu | --deb | --de | --d | -d ) debug=: ;; --file | --fil | --fi | --f ) $ac_shift case $ac_optarg in *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; '') as_fn_error $? "missing file argument" ;; esac as_fn_append CONFIG_FILES " '$ac_optarg'" ac_need_defaults=false;; --header | --heade | --head | --hea ) $ac_shift case $ac_optarg in *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; esac as_fn_append CONFIG_HEADERS " '$ac_optarg'" ac_need_defaults=false;; --he | --h) # Conflict between --help and --header as_fn_error $? "ambiguous option: \`$1' Try \`$0 --help' for more information.";; --help | --hel | -h ) $as_echo "$ac_cs_usage"; exit ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil | --si | --s) ac_cs_silent=: ;; # This is an error. -*) as_fn_error $? "unrecognized option: \`$1' Try \`$0 --help' for more information." ;; *) as_fn_append ac_config_targets " $1" ac_need_defaults=false ;; esac shift done ac_configure_extra_args= if $ac_cs_silent; then exec 6>/dev/null ac_configure_extra_args="$ac_configure_extra_args --silent" fi _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 if \$ac_cs_recheck; then set X $SHELL '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion shift \$as_echo "running CONFIG_SHELL=$SHELL \$*" >&6 CONFIG_SHELL='$SHELL' export CONFIG_SHELL exec "\$@" fi _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 exec 5>>config.log { echo sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX ## Running $as_me. ## _ASBOX $as_echo "$ac_log" } >&5 _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # Handling of arguments. for ac_config_target in $ac_config_targets do case $ac_config_target in "conf.h") CONFIG_HEADERS="$CONFIG_HEADERS conf.h" ;; "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;; "Makefile.obj") CONFIG_FILES="$CONFIG_FILES Makefile.obj" ;; *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;; esac done # If the user did not use the arguments to specify the items to instantiate, # then the envvar interface is used. Set only those that are not. # We use the long form for the default assignment because of an extremely # bizarre bug on SunOS 4.1.3. if $ac_need_defaults; then test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers fi # Have a temporary directory for convenience. Make it in the build tree # simply because there is no reason against having it here, and in addition, # creating and moving files from /tmp can sometimes cause problems. # Hook for its removal unless debugging. # Note that there is a small window in which the directory will not be cleaned: # after its creation but before its name has been assigned to `$tmp'. $debug || { tmp= ac_tmp= trap 'exit_status=$? : "${ac_tmp:=$tmp}" { test ! -d "$ac_tmp" || rm -fr "$ac_tmp"; } && exit $exit_status ' 0 trap 'as_fn_exit 1' 1 2 13 15 } # Create a (secure) tmp directory for tmp files. { tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` && test -d "$tmp" } || { tmp=./conf$$-$RANDOM (umask 077 && mkdir "$tmp") } || as_fn_error $? "cannot create a temporary directory in ." "$LINENO" 5 ac_tmp=$tmp # Set up the scripts for CONFIG_FILES section. # No need to generate them if there are no CONFIG_FILES. # This happens for instance with `./config.status config.h'. if test -n "$CONFIG_FILES"; then ac_cr=`echo X | tr X '\015'` # On cygwin, bash can eat \r inside `` if the user requested igncr. # But we know of no other shell where ac_cr would be empty at this # point, so we can use a bashism as a fallback. if test "x$ac_cr" = x; then eval ac_cr=\$\'\\r\' fi ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' /dev/null` if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then ac_cs_awk_cr='\\r' else ac_cs_awk_cr=$ac_cr fi echo 'BEGIN {' >"$ac_tmp/subs1.awk" && _ACEOF { echo "cat >conf$$subs.awk <<_ACEOF" && echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' && echo "_ACEOF" } >conf$$subs.sh || as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 ac_delim_num=`echo "$ac_subst_vars" | grep -c '^'` ac_delim='%!_!# ' for ac_last_try in false false false false false :; do . ./conf$$subs.sh || as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 ac_delim_n=`sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | grep -c X` if test $ac_delim_n = $ac_delim_num; then break elif $ac_last_try; then as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 else ac_delim="$ac_delim!$ac_delim _$ac_delim!! " fi done rm -f conf$$subs.sh cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 cat >>"\$ac_tmp/subs1.awk" <<\\_ACAWK && _ACEOF sed -n ' h s/^/S["/; s/!.*/"]=/ p g s/^[^!]*!// :repl t repl s/'"$ac_delim"'$// t delim :nl h s/\(.\{148\}\)..*/\1/ t more1 s/["\\]/\\&/g; s/^/"/; s/$/\\n"\\/ p n b repl :more1 s/["\\]/\\&/g; s/^/"/; s/$/"\\/ p g s/.\{148\}// t nl :delim h s/\(.\{148\}\)..*/\1/ t more2 s/["\\]/\\&/g; s/^/"/; s/$/"/ p b :more2 s/["\\]/\\&/g; s/^/"/; s/$/"\\/ p g s/.\{148\}// t delim ' >$CONFIG_STATUS || ac_write_fail=1 rm -f conf$$subs.awk cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 _ACAWK cat >>"\$ac_tmp/subs1.awk" <<_ACAWK && for (key in S) S_is_set[key] = 1 FS = "" } { line = $ 0 nfields = split(line, field, "@") substed = 0 len = length(field[1]) for (i = 2; i < nfields; i++) { key = field[i] keylen = length(key) if (S_is_set[key]) { value = S[key] line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3) len += length(value) + length(field[++i]) substed = 1 } else len += 1 + keylen } print line } _ACAWK _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g" else cat fi < "$ac_tmp/subs1.awk" > "$ac_tmp/subs.awk" \ || as_fn_error $? "could not setup config files machinery" "$LINENO" 5 _ACEOF # VPATH may cause trouble with some makes, so we remove sole $(srcdir), # ${srcdir} and @srcdir@ entries from VPATH if srcdir is ".", strip leading and # trailing colons and then remove the whole line if VPATH becomes empty # (actually we leave an empty line to preserve line numbers). if test "x$srcdir" = x.; then ac_vpsub='/^[ ]*VPATH[ ]*=[ ]*/{ h s/// s/^/:/ s/[ ]*$/:/ s/:\$(srcdir):/:/g s/:\${srcdir}:/:/g s/:@srcdir@:/:/g s/^:*// s/:*$// x s/\(=[ ]*\).*/\1/ G s/\n// s/^[^=]*=[ ]*$// }' fi cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 fi # test -n "$CONFIG_FILES" # Set up the scripts for CONFIG_HEADERS section. # No need to generate them if there are no CONFIG_HEADERS. # This happens for instance with `./config.status Makefile'. if test -n "$CONFIG_HEADERS"; then cat >"$ac_tmp/defines.awk" <<\_ACAWK || BEGIN { _ACEOF # Transform confdefs.h into an awk script `defines.awk', embedded as # here-document in config.status, that substitutes the proper values into # config.h.in to produce config.h. # Create a delimiter string that does not exist in confdefs.h, to ease # handling of long lines. ac_delim='%!_!# ' for ac_last_try in false false :; do ac_tt=`sed -n "/$ac_delim/p" confdefs.h` if test -z "$ac_tt"; then break elif $ac_last_try; then as_fn_error $? "could not make $CONFIG_HEADERS" "$LINENO" 5 else ac_delim="$ac_delim!$ac_delim _$ac_delim!! " fi done # For the awk script, D is an array of macro values keyed by name, # likewise P contains macro parameters if any. Preserve backslash # newline sequences. ac_word_re=[_$as_cr_Letters][_$as_cr_alnum]* sed -n ' s/.\{148\}/&'"$ac_delim"'/g t rset :rset s/^[ ]*#[ ]*define[ ][ ]*/ / t def d :def s/\\$// t bsnl s/["\\]/\\&/g s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ D["\1"]=" \3"/p s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2"/p d :bsnl s/["\\]/\\&/g s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ D["\1"]=" \3\\\\\\n"\\/p t cont s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2\\\\\\n"\\/p t cont d :cont n s/.\{148\}/&'"$ac_delim"'/g t clear :clear s/\\$// t bsnlc s/["\\]/\\&/g; s/^/"/; s/$/"/p d :bsnlc s/["\\]/\\&/g; s/^/"/; s/$/\\\\\\n"\\/p b cont ' >$CONFIG_STATUS || ac_write_fail=1 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 for (key in D) D_is_set[key] = 1 FS = "" } /^[\t ]*#[\t ]*(define|undef)[\t ]+$ac_word_re([\t (]|\$)/ { line = \$ 0 split(line, arg, " ") if (arg[1] == "#") { defundef = arg[2] mac1 = arg[3] } else { defundef = substr(arg[1], 2) mac1 = arg[2] } split(mac1, mac2, "(") #) macro = mac2[1] prefix = substr(line, 1, index(line, defundef) - 1) if (D_is_set[macro]) { # Preserve the white space surrounding the "#". print prefix "define", macro P[macro] D[macro] next } else { # Replace #undef with comments. This is necessary, for example, # in the case of _POSIX_SOURCE, which is predefined and required # on some systems where configure will not decide to define it. if (defundef == "undef") { print "/*", prefix defundef, macro, "*/" next } } } { print } _ACAWK _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 as_fn_error $? "could not setup config headers machinery" "$LINENO" 5 fi # test -n "$CONFIG_HEADERS" eval set X " :F $CONFIG_FILES :H $CONFIG_HEADERS " shift for ac_tag do case $ac_tag in :[FHLC]) ac_mode=$ac_tag; continue;; esac case $ac_mode$ac_tag in :[FHL]*:*);; :L* | :C*:*) as_fn_error $? "invalid tag \`$ac_tag'" "$LINENO" 5;; :[FH]-) ac_tag=-:-;; :[FH]*) ac_tag=$ac_tag:$ac_tag.in;; esac ac_save_IFS=$IFS IFS=: set x $ac_tag IFS=$ac_save_IFS shift ac_file=$1 shift case $ac_mode in :L) ac_source=$1;; :[FH]) ac_file_inputs= for ac_f do case $ac_f in -) ac_f="$ac_tmp/stdin";; *) # Look for the file first in the build tree, then in the source tree # (if the path is not absolute). The absolute path cannot be DOS-style, # because $ac_f cannot contain `:'. test -f "$ac_f" || case $ac_f in [\\/$]*) false;; *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";; esac || as_fn_error 1 "cannot find input file: \`$ac_f'" "$LINENO" 5;; esac case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac as_fn_append ac_file_inputs " '$ac_f'" done # Let's still pretend it is `configure' which instantiates (i.e., don't # use $as_me), people would be surprised to read: # /* config.h. Generated by config.status. */ configure_input='Generated from '` $as_echo "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g' `' by configure.' if test x"$ac_file" != x-; then configure_input="$ac_file. $configure_input" { $as_echo "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5 $as_echo "$as_me: creating $ac_file" >&6;} fi # Neutralize special characters interpreted by sed in replacement strings. case $configure_input in #( *\&* | *\|* | *\\* ) ac_sed_conf_input=`$as_echo "$configure_input" | sed 's/[\\\\&|]/\\\\&/g'`;; #( *) ac_sed_conf_input=$configure_input;; esac case $ac_tag in *:-:* | *:-) cat >"$ac_tmp/stdin" \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;; esac ;; esac ac_dir=`$as_dirname -- "$ac_file" || $as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$ac_file" : 'X\(//\)[^/]' \| \ X"$ac_file" : 'X\(//\)$' \| \ X"$ac_file" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$ac_file" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` as_dir="$ac_dir"; as_fn_mkdir_p ac_builddir=. case "$ac_dir" in .) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` # A ".." for each directory in $ac_dir_suffix. ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` case $ac_top_builddir_sub in "") ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; esac ;; esac ac_abs_top_builddir=$ac_pwd ac_abs_builddir=$ac_pwd$ac_dir_suffix # for backward compatibility: ac_top_builddir=$ac_top_build_prefix case $srcdir in .) # We are building in place. ac_srcdir=. ac_top_srcdir=$ac_top_builddir_sub ac_abs_top_srcdir=$ac_pwd ;; [\\/]* | ?:[\\/]* ) # Absolute name. ac_srcdir=$srcdir$ac_dir_suffix; ac_top_srcdir=$srcdir ac_abs_top_srcdir=$srcdir ;; *) # Relative name. ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix ac_top_srcdir=$ac_top_build_prefix$srcdir ac_abs_top_srcdir=$ac_pwd/$srcdir ;; esac ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix case $ac_mode in :F) # # CONFIG_FILE # case $INSTALL in [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;; *) ac_INSTALL=$ac_top_build_prefix$INSTALL ;; esac _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # If the template does not know about datarootdir, expand it. # FIXME: This hack should be removed a few years after 2.60. ac_datarootdir_hack=; ac_datarootdir_seen= ac_sed_dataroot=' /datarootdir/ { p q } /@datadir@/p /@docdir@/p /@infodir@/p /@localedir@/p /@mandir@/p' case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in *datarootdir*) ac_datarootdir_seen=yes;; *@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 $as_echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;} _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_datarootdir_hack=' s&@datadir@&$datadir&g s&@docdir@&$docdir&g s&@infodir@&$infodir&g s&@localedir@&$localedir&g s&@mandir@&$mandir&g s&\\\${datarootdir}&$datarootdir&g' ;; esac _ACEOF # Neutralize VPATH when `$srcdir' = `.'. # Shell code in configure.ac might set extrasub. # FIXME: do we really want to maintain this feature? cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_sed_extra="$ac_vpsub $extrasub _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 :t /@[a-zA-Z_][a-zA-Z_0-9]*@/!b s|@configure_input@|$ac_sed_conf_input|;t t s&@top_builddir@&$ac_top_builddir_sub&;t t s&@top_build_prefix@&$ac_top_build_prefix&;t t s&@srcdir@&$ac_srcdir&;t t s&@abs_srcdir@&$ac_abs_srcdir&;t t s&@top_srcdir@&$ac_top_srcdir&;t t s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t s&@builddir@&$ac_builddir&;t t s&@abs_builddir@&$ac_abs_builddir&;t t s&@abs_top_builddir@&$ac_abs_top_builddir&;t t s&@INSTALL@&$ac_INSTALL&;t t $ac_datarootdir_hack " eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$ac_tmp/subs.awk" \ >$ac_tmp/out || as_fn_error $? "could not create $ac_file" "$LINENO" 5 test -z "$ac_datarootdir_hack$ac_datarootdir_seen" && { ac_out=`sed -n '/\${datarootdir}/p' "$ac_tmp/out"`; test -n "$ac_out"; } && { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' \ "$ac_tmp/out"`; test -z "$ac_out"; } && { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir' which seems to be undefined. Please make sure it is defined" >&5 $as_echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir' which seems to be undefined. Please make sure it is defined" >&2;} rm -f "$ac_tmp/stdin" case $ac_file in -) cat "$ac_tmp/out" && rm -f "$ac_tmp/out";; *) rm -f "$ac_file" && mv "$ac_tmp/out" "$ac_file";; esac \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;; :H) # # CONFIG_HEADER # if test x"$ac_file" != x-; then { $as_echo "/* $configure_input */" \ && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" } >"$ac_tmp/config.h" \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 if diff "$ac_file" "$ac_tmp/config.h" >/dev/null 2>&1; then { $as_echo "$as_me:${as_lineno-$LINENO}: $ac_file is unchanged" >&5 $as_echo "$as_me: $ac_file is unchanged" >&6;} else rm -f "$ac_file" mv "$ac_tmp/config.h" "$ac_file" \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 fi else $as_echo "/* $configure_input */" \ && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" \ || as_fn_error $? "could not create -" "$LINENO" 5 fi ;; esac done # for ac_tag as_fn_exit 0 _ACEOF ac_clean_files=$ac_clean_files_save test $ac_write_fail = 0 || as_fn_error $? "write failure creating $CONFIG_STATUS" "$LINENO" 5 # configure is writing to config.log, and then calls config.status. # config.status does its own redirection, appending to config.log. # Unfortunately, on DOS this fails, as config.log is still kept open # by configure, so config.status won't be able to write to it; its # output is simply discarded. So we exec the FD to /dev/null, # effectively closing config.log, so it can be properly (re)opened and # appended to by config.status. When coming back to configure, we # need to make the FD available again. if test "$no_create" != yes; then ac_cs_success=: ac_config_status_args= test "$silent" = yes && ac_config_status_args="$ac_config_status_args --quiet" exec 5>/dev/null $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false exec 5>>config.log # Use ||, not &&, to avoid exiting from the if with $? = 1, which # would make configure fail if this is the last instruction. $ac_cs_success || as_fn_exit 1 fi if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5 $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;} fi suite3270-4.1/c3270/configure.in000066400000000000000000000133601413735575200161110ustar00rootroot00000000000000dnl Copyright (c) 2000-2017, 2020 Paul Mattes. dnl All rights reserved. dnl dnl Redistribution and use in source and binary forms, with or without dnl modification, are permitted provided that the following conditions are met: dnl * Redistributions of source code must retain the above copyright dnl notice, this list of conditions and the following disclaimer. dnl * Redistributions in binary form must reproduce the above copyright dnl notice, this list of conditions and the following disclaimer in the dnl documentation and/or other materials provided with the distribution. dnl * Neither the names of Paul Mattes nor the names of his contributors dnl may be used to endorse or promote products derived from this software dnl without specific prior written permission. dnl dnl THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS OR IMPLIED dnl WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF dnl MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO dnl EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, dnl SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED dnl TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR dnl PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF dnl LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING dnl NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS dnl SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. dnl Process this file with autoconf to produce a configure script. AC_INIT(c3270,4.0) AC_PREREQ(2.50) AC_CONFIG_HEADER(conf.h) dnl Checks for programs. AC_PROG_INSTALL AC_PROG_CC dnl Figure out what sort of host this is. dnl If it's hpux, then pass the -D_XOPEN_SOURCE_EXTENDED flag to cc, so that dnl all of the curses KEY_XXX definitions are visible. dnl If it's solaris2, then pass the -D__EXTENSIONS__ flas to cc, so that all dnl of the usual Unix functions are visible. ansi="-std=c99 -pedantic" AC_CANONICAL_HOST case "$host_os" in *cygwin*) CPPFLAGS="$CPPFLAGS -D_XOPEN_SOURCE_EXTENDED" dnl On Cygwin, gcc -ansi or -std=xxx hides POSIX declarations, dnl and there is no macro you can set to get them back. ansi="" ;; hpux) CPPFLAGS="$CPPFLAGS -D_XOPEN_SOURCE_EXTENDED" ;; solaris2*) CPPFLAGS="$CPPFLAGS -D__EXTENSIONS__ -D_XOPEN_SOURCE_EXTENDED" ;; darwin*) CCOPTIONS="$CCOPTIONS -no-cpp-precomp -Wno-deprecated-declarations" CPPFLAGS="$CPPFLAGS -D_XOPEN_SOURCE_EXTENDED" ;; linux*) CPPFLAGS="$CPPFLAGS -D_POSIX_SOURCE -D_BSD_SOURCE -D_DEFAULT_SOURCE -D_XOPEN_SOURCE" ;; aix*) BROKEN_NEWTERM=1 ;; *bsd*) CPPFLAGS="$CPPFLAGS -D_XOPEN_SOURCE_EXTENDED" ;; esac if test "$GCC" = yes then # Add common gcc options, plus flags for dependency generation. CCOPTIONS="$CCOPTIONS -Wall -Wsign-compare $ansi -Wno-variadic-macros -MMD -MP" fi AC_SUBST(host) AC_SUBST(BROKEN_NEWTERM) AC_SUBST(CCOPTIONS) dnl Checks for header files. AC_CHECK_HEADERS(sys/select.h) if test "$with_readline" != no; then AC_CHECK_HEADERS(readline/history.h) fi AC_CHECK_HEADERS(pty.h) AC_CHECK_HEADERS(libutil.h) AC_CHECK_HEADERS(util.h) AC_CHECK_HEADERS(getopt.h) dnl Find the best curses header file and hope it's consistent with the library dnl we found. AC_CHECK_HEADERS(ncursesw/ncurses.h, , [AC_CHECK_HEADERS(ncurses/ncurses.h, , [AC_CHECK_HEADERS(ncurses.h, , [AC_CHECK_HEADERS(curses.h, , [AC_MSG_ERROR(No curses header file)])])])]) AC_CHECK_HEADERS(ncursesw/term.h, , [AC_CHECK_HEADERS(ncurses/term.h, , [AC_CHECK_HEADERS(term.h)])]) dnl Check for --without-readline AC_ARG_WITH(readline, [ --without-readline Don't use the readline library]) dnl Check for libraries. dnl Note that the order here is important. The last libraries should appear dnl first, so that objects in them can be used by subsequent libraries. AC_SEARCH_LIBS(forkpty, util) AC_CHECK_FUNCS(forkpty) AC_SEARCH_LIBS(newterm, ncursesw ncurses curses, , [AC_MSG_ERROR(Can't find libncurses or new-enough libcurses)]) AC_SEARCH_LIBS(setupterm, tinfow tinfo, , [AC_MSG_ERROR(Can't find terminfo library)]) if test "$with_readline" != no; then AC_CHECK_LIB(readline, rl_initialize) fi AC_SEARCH_LIBS(gethostbyname, nsl) AC_SEARCH_LIBS(socket, socket) dnl If we're on AIX and have ncurses, cancel BROKEN_NEWTERM. if test -n "$BROKEN_NEWTERM" then if test "$ac_cv_lib_ncurses_newterm" = yes then : else AC_DEFINE(BROKEN_NEWTERM,1) fi fi dnl Check for the ncurses default-color extensions. AC_CHECK_FUNCS(use_default_colors) dnl Checks for library functions. AC_CHECK_FUNCS(vasprintf) AC_FUNC_FSEEKO dnl Check for curses wide character support. AC_SEARCH_LIBS(wadd_wch, ncursesw ncurses curses, [AC_DEFINE(CURSES_WIDE,1) Cw=1], [AC_MSG_WARN(Wide curses not found -- c3270 will not be able to support multi-byte character encodings)]) AC_SUBST(CURSES_WIDE) AC_CHECK_FUNCS(tiparm) dnl Check for default pager AC_PATH_PROG(LESSPATH, less) AC_DEFINE_UNQUOTED(LESSPATH,"$LESSPATH") AC_PATH_PROG(MOREPATH, more) AC_DEFINE_UNQUOTED(MOREPATH,"$MOREPATH") dnl Set up the configuration directory. LIBX3270DIR='${sysconfdir}/x3270' AC_SUBST(LIBX3270DIR) dnl Check for unwanted parts. AC_ARG_ENABLE(dbcs,[ --disable-dbcs leave out DBCS support]) case "$enable_dbcs" in no) ;; *) AC_DEFINE(X3270_DBCS,1) DBCS=-DX3270_DBCS=1 ;; esac AC_SUBST(DBCS) AC_ARG_ENABLE(local_process,[ --disable-local-process leave out local process support]) case "$enable_local_process" in ""|yes) AC_DEFINE(X3270_LOCAL_PROCESS,1) ;; esac AC_ARG_ENABLE(ipv6,[ --disable-ipv6 leave out IPv6 support]) case "$enable_ipv6" in ""|yes) AC_DEFINE(X3270_IPV6,1) ;; esac dnl Generate the Makefile. AC_CONFIG_FILES(Makefile Makefile.obj) AC_OUTPUT suite3270-4.1/c3270/fb-c3270000077700000000000000000000000001413735575200173472../Common/fb-c3270ustar00rootroot00000000000000suite3270-4.1/c3270/fb-common000077700000000000000000000000001413735575200206332../Common/fb-commonustar00rootroot00000000000000suite3270-4.1/c3270/ft.inc000077700000000000000000000000001413735575200174432../Common/ft.incustar00rootroot00000000000000suite3270-4.1/c3270/html.m4000077700000000000000000000000001413735575200176472../Common/html.m4ustar00rootroot00000000000000suite3270-4.1/c3270/html/000077500000000000000000000000001413735575200145415ustar00rootroot00000000000000suite3270-4.1/c3270/html/.gitignore000066400000000000000000000001071413735575200165270ustar00rootroot00000000000000*-man.html ReleaseNotes.html Resources.html SSL.html x3270-script.html suite3270-4.1/c3270/ibm_hosts000077700000000000000000000000001413735575200210572../Common/ibm_hostsustar00rootroot00000000000000suite3270-4.1/c3270/ibm_hosts.man000066400000000000000000000057101413735575200162640ustar00rootroot00000000000000'\" t .TH IBM_HOSTS 5 "18 October 2020" .SH "NAME" ibm_hosts \- host database for x3270 and c3270 .SH "SYNOPSIS" /usr/lib/X11/x3270/ibm_hosts .SH "DESCRIPTION" The \fBibm_hosts\fP file contains information regarding IBM hosts on the network. An \fIIBM host\fP is a host which can communicate with a 3270 terminal emulator such as \fBx3270\fP or \fBc3270\fP. Each line defines a name in the following format (optional fields are shown in brackets): .LP \fIname\fP \fItype\fP [\fIopt\fP:]...[\fIluname\fP@]\fIhostname\fP[:\fIport\fP] [\fIactions\fP] .LP Items are separated by any number of blanks and/or TAB characters. A line beginning with # is taken as a comment (note that # anywhere else on a line does \fInot\fP indicate a comment). .LP The \fIname\fP field is a mnemonic used to identify the host. .LP The \fItype\fP field is a keyword that indicates the type of entry. The value \fBprimary\fP means that the \fIname\fP will be included in host-selection menus that may be displayed by a 3270 emulator. The value \fBalias\fP means that the \fIname\fP will not be included in menus, but will still be accepted as valid input when a host name is required. .LP The \fIhostname\fP field is the Internet hostname or dot-notation Internet address of the host. .LP The \fIhostname\fP can include `s:' or `p:' prefixes, e.g., \fBs:finicky\fP (see the \fIx3270\fP(1) or \fIc3270\fP(1) man page sfor details). It can also include an LU name, separated by an `@' character, e.g., \fBoddlu@bluehost\fP. Finally, it can include a non-default \fIport\fP number, appended to the \fIhostname\fP with a colon `:' character, e.g., \fBbluehost:97\fP. (For compatibility with earlier versions of \fIx3270\fP, the \fIport\fP can also be separated by a slash `/' character.) .LP The optional \fIactions\fP field specifies actions to be taken once the connection is made and a data-entry field is defined. If the text looks like an action, e.g., \fBPF(1)\fP, it is unmodified; otherwise it is taken as the parameter to the \fBString()\fP action. The \fIactions\fP are not intended for entering usernames and passwords; rather they provide an automated way of specifying a front-end menu option. .SH "EXAMPLE" Given the following \fBibm_hosts\fP file: .LP .RS mvs primary mvs-host .br tso alias mvs-host .br mvs2 primary mvs-host:4012 .br vm primary vtam Tab() String(3) Enter() .RE A 3270 emulator will display four names (\fBmvs\fP, \fBmvs2\fP, \fBafhost\fP and \fBvm\fP) on its hosts menu. The names \fBmvs\fP and \fBtso\fP will cause connections to the host \fBmvs-host\fP. The name \fBmvs2\fP will also cause a connection to \fBmvs-host\fP, but to port 4012 rather than the emulator's default port (usually 23). The name \fBvm\fP will cause the 3270 emulator to connect to the host \fBvtam\fP (presumably some sort of host-selection front-end), enter the string `3' on the second data-entry field on the screen, and send the Enter \s-1AID\s+1 sequence. .SH "FILES" /usr/lib/X11/x3270/ibm_hosts .SH "SEE ALSO" x3270(1), c3270(1) suite3270-4.1/c3270/ibm_hosts.man.m4000077700000000000000000000000001413735575200232412../Common/ibm_hosts.man.m4ustar00rootroot00000000000000suite3270-4.1/c3270/instlist.base000066400000000000000000000001601413735575200162770ustar00rootroot00000000000000usr usr/local usr/local/bin usr/local/bin/c3270 usr/local/etc usr/local/etc/x3270 usr/local/etc/x3270/ibm_hosts suite3270-4.1/c3270/instlist.man000066400000000000000000000002521413735575200161420ustar00rootroot00000000000000usr usr/local usr/local/share usr/local/share/man usr/local/share/man/man1 usr/local/share/man/man1/c3270.1 usr/local/share/man/man5 usr/local/share/man/man5/ibm_hosts.5 suite3270-4.1/c3270/keymap.h000066400000000000000000000034531413735575200152410ustar00rootroot00000000000000/* * Copyright (c) 2000-2009, 2015, 2019 Paul Mattes. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the names of Paul Mattes nor the names of his contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO * EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* c3270 version of keymap.h */ #define KM_CTRL 0x0001 #define KM_ALT 0x0002 void keymap_register(void); void keymap_init(void); char *lookup_key(int k, ucs4_t ucs4, int modifiers); const char *keymap_dump(void); const char *decode_key(int k, ucs4_t ucs4, int hint, char *buf); suite3270-4.1/c3270/m4man000077700000000000000000000000001413735575200171312../Common/m4manustar00rootroot00000000000000suite3270-4.1/c3270/man.m4000077700000000000000000000000001413735575200172652../Common/man.m4ustar00rootroot00000000000000suite3270-4.1/c3270/mkversion.sh000077700000000000000000000000001413735575200221552../Common/mkversion.shustar00rootroot00000000000000suite3270-4.1/c3270/screen.c000066400000000000000000002170411413735575200152250ustar00rootroot00000000000000/* * Copyright (c) 2000-2020 Paul Mattes. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the names of Paul Mattes nor the names of his contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO * EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * screen.c * A curses-based 3270 Terminal Emulator * Screen drawing */ #include "globals.h" #include #include "appres.h" #include "3270ds.h" #include "resources.h" #include "ctlr.h" #include "toggles.h" #include "actions.h" #include "codepage.h" #include "ctlrc.h" #include "cmenubar.h" #include "cstatus.h" #include "glue.h" #include "host.h" #include "keymap.h" #include "kybd.h" #include "lazya.h" #include "names.h" #include "popups.h" #include "screen.h" #include "see.h" #include "status.h" #include "task.h" #include "telnet.h" #include "toupper.h" #include "trace.h" #include "unicodec.h" #include "utf8.h" #include "utils.h" #include "xio.h" #include "xscroll.h" #include "cscreen.h" /* * The usual x3270 COLS variable (current number of columns in the 3270 * display) is called cCOLS in c3270, to avoid a conflict with curses COLS (the * number of columns on the physical termal). For c3270, globals.h #defines * COLS as cCOLS, so common code can use COLS transparently -- everywhere but * here. In this module, we #undef COLS, after #including globals.h but before * #including curses.h, and we use (curses) COLS and (c3270) cCOLS explicitly. */ #undef COLS #if defined(HAVE_NCURSESW_NCURSES_H) /*[*/ # include #elif defined(HAVE_NCURSES_NCURSES_H) /*][*/ # include #elif defined(HAVE_NCURSES_H) /*][*/ # include #else /*][*/ # include #endif /*]*/ #if defined(HAVE_NCURSESW_TERM_H) /*[*/ # include #elif defined(HAVE_NCURSES_TERM_H) /*][*/ # include #elif defined(HAVE_TERM_H) /*][*/ # include #endif /*]*/ /* Curses' 'COLS' becomes cursesCOLS, to remove any ambiguity. */ #define cursesCOLS COLS #define cursesLINES LINES #define STATUS_SCROLL_START_MS 1500 #define STATUS_SCROLL_MS 100 #define STATUS_PUSH_MS 5000 #define CM (60*10) /* csec per minute */ #if !defined(HAVE_TIPARM) /*[*/ #define tiparm tparm #endif /*]*/ typedef int curses_color; typedef int curses_attr; typedef int host_color_ix; typedef int color_pair; static color_pair cp[16][16][2]; static curses_color cmap8[16] = { COLOR_BLACK, /* neutral black */ COLOR_BLUE, /* blue */ COLOR_RED, /* red */ COLOR_MAGENTA, /* pink */ COLOR_GREEN, /* green */ COLOR_CYAN, /* turquoise */ COLOR_YELLOW, /* yellow */ COLOR_WHITE, /* neutral white */ COLOR_BLACK, /* black */ /* alas, this may be gray */ COLOR_BLUE, /* deep blue */ COLOR_YELLOW, /* orange */ COLOR_MAGENTA, /* purple */ COLOR_GREEN, /* pale green */ COLOR_CYAN, /* pale turquoise */ COLOR_BLACK, /* gray */ COLOR_WHITE /* white */ }; static curses_color cmap8_rv[16] = { COLOR_WHITE, /* neutral black (reversed) */ COLOR_BLUE, /* blue */ COLOR_RED, /* red */ COLOR_MAGENTA, /* pink */ COLOR_GREEN, /* green */ COLOR_CYAN, /* turquoise */ COLOR_YELLOW, /* yellow */ COLOR_BLACK, /* neutral white (reversed) */ COLOR_BLACK, /* black */ /* alas, this may be gray */ COLOR_BLUE, /* deep blue */ COLOR_YELLOW, /* orange */ COLOR_MAGENTA, /* purple */ COLOR_GREEN, /* pale green */ COLOR_CYAN, /* pale turquoise */ COLOR_BLACK, /* gray */ COLOR_WHITE /* white */ }; static curses_color cmap16[16] = { COLOR_BLACK, /* neutral black */ 8 + COLOR_BLUE, /* blue */ COLOR_RED, /* red */ 8 + COLOR_MAGENTA, /* pink */ 8 + COLOR_GREEN, /* green */ 8 + COLOR_CYAN, /* turquoise */ 8 + COLOR_YELLOW, /* yellow */ 8 + COLOR_WHITE, /* neutral white */ COLOR_BLACK, /* black */ /* alas, this may be gray */ COLOR_BLUE, /* deep blue */ 8 + COLOR_RED, /* orange */ COLOR_MAGENTA, /* purple */ COLOR_GREEN, /* pale green */ COLOR_CYAN, /* pale turquoise */ COLOR_WHITE, /* gray */ 8 + COLOR_WHITE /* white */ }; static curses_color cmap16_rv[16] = { 8 + COLOR_WHITE, /* neutral black (reversed) */ COLOR_BLUE, /* blue */ COLOR_RED, /* red */ 8 + COLOR_MAGENTA, /* pink */ COLOR_GREEN, /* green */ COLOR_CYAN, /* turquoise */ COLOR_YELLOW, /* yellow */ COLOR_BLACK, /* neutral white (reversed) */ COLOR_BLACK, /* black */ /* alas, this may be gray */ COLOR_BLUE, /* deep blue */ 8 + COLOR_RED, /* orange */ COLOR_MAGENTA, /* purple */ 8 + COLOR_GREEN, /* pale green */ 8 + COLOR_CYAN, /* pale turquoise */ 8 + COLOR_WHITE, /* gray */ 8 + COLOR_WHITE /* white */ }; static curses_color *cmap = cmap8; static curses_attr cattrmap[16] = { A_NORMAL, A_NORMAL, A_NORMAL, A_NORMAL, A_NORMAL, A_NORMAL, A_NORMAL, A_NORMAL, A_NORMAL, A_NORMAL, A_NORMAL, A_NORMAL, A_NORMAL, A_NORMAL, A_NORMAL, A_NORMAL }; static int defcolor_offset = 0; static curses_color field_colors8[4] = { COLOR_GREEN, /* default */ COLOR_RED, /* intensified */ COLOR_BLUE, /* protected */ COLOR_WHITE /* protected, intensified */ }; static curses_color field_colors8_rv[4] = { COLOR_GREEN, /* default */ COLOR_RED, /* intensified */ COLOR_BLUE, /* protected */ COLOR_BLACK /* protected, intensified */ }; static curses_color field_colors16[4] = { 8 + COLOR_GREEN, /* default */ COLOR_RED, /* intensified */ 8 + COLOR_BLUE, /* protected */ 8 + COLOR_WHITE /* protected, intensified */ }; static curses_color field_colors16_rv[4] = { COLOR_GREEN, /* default */ COLOR_RED, /* intensified */ COLOR_BLUE, /* protected */ COLOR_BLACK /* protected, intensified */ }; static curses_color *field_colors = field_colors8; static curses_attr field_cattrmap[4] = { A_NORMAL, A_NORMAL, A_NORMAL, A_NORMAL }; static curses_color bg_color = COLOR_BLACK; static curses_attr defattr = A_NORMAL; static curses_attr xhattr = A_NORMAL; static ioid_t input_id = NULL_IOID; static int rmargin; bool escaped = true; bool initscr_done = false; int curs_set_state = -1; enum ts { TS_AUTO, TS_ON, TS_OFF }; enum ts me_mode = TS_AUTO; enum ts ab_mode = TS_AUTO; #if defined(C3270_80_132) /*[*/ struct screen_spec { int rows, cols; char *mode_switch; } screen_spec; struct screen_spec altscreen_spec, defscreen_spec; static SCREEN *def_screen = NULL, *alt_screen = NULL; static SCREEN *cur_screen = NULL; static void parse_screen_spec(const char *str, struct screen_spec *spec); #endif /*]*/ static struct { char *name; curses_color index; } cc_name[] = { { "black", COLOR_BLACK }, { "red", COLOR_RED }, { "green", COLOR_GREEN }, { "yellow", COLOR_YELLOW }, { "blue", COLOR_BLUE }, { "magenta", COLOR_MAGENTA }, { "cyan", COLOR_CYAN }, { "white", COLOR_WHITE }, { "intensified-black", 8 + COLOR_BLACK }, { "intensified-red", 8 + COLOR_RED }, { "intensified-green", 8 + COLOR_GREEN }, { "intensified-yellow", 8 + COLOR_YELLOW }, { "intensified-blue", 8 + COLOR_BLUE }, { "intensified-magenta", 8 + COLOR_MAGENTA }, { "intensified-cyan", 8 + COLOR_CYAN }, { "intensified-white", 8 + COLOR_WHITE }, { NULL, 0 } }; static int status_row = 0; /* Row to display the status line on */ static int status_skip = 0; /* Row to blank above the status line */ static int screen_yoffset = 0; /* Vertical offset to top of screen. If 0, there is no menu bar. If nonzero (2, actually), menu bar is at the top of the display. */ static host_color_ix crosshair_color = HOST_COLOR_PURPLE; static bool curses_alt = false; #if defined(HAVE_USE_DEFAULT_COLORS) /*[*/ static bool default_colors = false; #endif /*]*/ static bool screen_initted = false; static ioid_t disabled_done_id = NULL_IOID; /* Layered OIA messages. */ static char *disabled_msg = NULL; /* layer 0 (top) */ static char *scrolled_msg = NULL; /* layer 1 */ static char *info_msg = NULL; /* layer 2 */ static char *other_msg = NULL; /* layer 3 */ static curses_attr other_attr; /* layer 3 color */ static char *info_base_msg = NULL; /* original info message (unscrolled) */ /* Terminfo state. */ static struct { int colors; /* number of colors */ char *op; /* original pair (restore color) */ char *setaf; /* set foreground */ char *sgr; /* set graphic rendition */ char *sgr0; /* reset graphic rendition */ bool bold; /* use bold SGR for certain colors */ } ti; static void kybd_input(iosrc_t fd, ioid_t id); static void kybd_input2(int k, ucs4_t ucs4, int alt); static void draw_oia(void); static void status_connect(bool ignored); static void status_3270_mode(bool ignored); static void status_printer(bool on); static int get_color_pair(int fg, int bg); static int color_from_fa(unsigned char); static void set_status_row(int screen_rows, int emulator_rows); static bool ts_value(const char *s, enum ts *tsp); static void display_linedraw(ucs4_t ucs); static void display_ge(unsigned char ebc); static void init_user_colors(void); static void init_user_attribute_colors(void); static void screen_init2(void); static action_t Redraw_action; /* * Crosshair color init. */ static void crosshair_color_init(void) { int c; if (appres.interactive.crosshair_color != NULL) { c = decode_host_color(appres.interactive.crosshair_color); if (c >= 0) { crosshair_color = c; return; } else { xs_warning("Invalid %s: %s", ResCrosshairColor, appres.interactive.crosshair_color); } } crosshair_color = HOST_COLOR_PURPLE; } /* Initialize the screen. */ void screen_init(void) { setupterm(NULL, fileno(stdout), NULL); menu_init(); #if defined(C3270_80_132) /*[*/ /* Parse altscreen/defscreen. */ if ((appres.c3270.altscreen != NULL) ^ (appres.c3270.defscreen != NULL)) { fprintf(stderr, "Must specify both altscreen and defscreen\n"); exit(1); } if (appres.c3270.altscreen != NULL) { parse_screen_spec(appres.c3270.altscreen, &altscreen_spec); if (altscreen_spec.rows < 27 || altscreen_spec.cols < 132) { fprintf(stderr, "Rows and/or cols too small on " "alternate screen (minimum 27x132)\n"); exit(1); } parse_screen_spec(appres.c3270.defscreen, &defscreen_spec); if (defscreen_spec.rows < 24 || defscreen_spec.cols < 80) { fprintf(stderr, "Rows and/or cols too small on " "default screen (minimum 24x80)\n"); exit(1); } } #endif /*]*/ /* * See about keyboard Meta-key behavior. * * Note: Formerly, "auto" meant to use the terminfo 'km' capability (if * set, then disable metaEscape). But popular terminals like the * Linux console and xterms are actually configurable, though they have * fixed terminfo capabilities. It is harmless to enable metaEscape * when the terminal supports it, so the default is now 'on'. * * Setting the high bit for the Meta key is a pretty achaic idea, IMO, * so we no loger support it. */ if (!ts_value(appres.c3270.meta_escape, &me_mode)) popup_an_error("Invalid %s value: '%s', assuming 'auto'\n", ResMetaEscape, appres.c3270.meta_escape); if (me_mode == TS_AUTO) { me_mode = TS_ON; } /* * If they don't want ACS and they're not in a UTF-8 locale, switch * to ASCII-art mode for box drawing. */ if ( #if defined(CURSES_WIDE) /*[*/ !appres.c3270.acs && #endif /*]*/ !is_utf8) { appres.c3270.ascii_box_draw = true; } /* Initialize the controller. */ ctlr_init(ALL_CHANGE); } /* * Find and save a terminfo string. */ static char * ti_save(const char *name) { char *str = tigetstr((char *)name); if (str != NULL && str != (char *)-1) { return NewString(str); } return NULL; } /* * Returns true if the screen supports ANSI color sequences. */ bool screen_has_ansi_color(void) { /* Check for disqualifying conditions. */ if (appres.interactive.mono || ((ti.colors = tigetnum("colors")) < 8) || ((ti.setaf = ti_save("setaf")) == NULL) || ((ti.op = ti_save("op")) == NULL)) { return false; } /* Save the other strings, which are optional. */ ti.sgr = ti_save("sgr"); ti.sgr0 = ti_save("sgr0"); /* Figure out bold mode. */ if (ti.sgr != NULL && ti.sgr0 != NULL) { if (appres.c3270.all_bold_on) { ti.bold = true; } else { enum ts ab; if (!ts_value(appres.c3270.all_bold, &ab)) { ab = TS_AUTO; } if (ab == TS_AUTO) { ti.bold = ti.colors < 16; } else { ti.bold = (ab == TS_ON); } } } /* Recompute 'op'. */ if (ti.op != NULL && ti.sgr0 != NULL) { char *s = xs_buffer("%s%s", ti.op, ti.sgr0); Replace(ti.op, s); } return true; } /* * Returns the "op" (original pair) string. */ const char * screen_op(void) { return ti.op; } /* * Returns the sequence to set a foreground color. */ const char * screen_setaf(acolor_t color) { static int color_map8[] = { COLOR_BLUE, COLOR_RED, COLOR_YELLOW }; static int color_map16[] = { 8 + COLOR_BLUE, COLOR_RED, 8 + COLOR_YELLOW }; char *setaf; setaf = tiparm(ti.setaf, (ti.colors >= 16)? color_map16[color]: color_map8[color]); setaf = lazya(NewString(setaf)); if (ti.bold && color_map16[color] >= 8) { char *sgr = tiparm(ti.sgr, 0, 0, 0, 0, 0, 1, 0, 0, 0); return lazyaf("%s%s", sgr, setaf); } else { return setaf; } } /* * Finish screen initialization, when a host connects or when we go into * 'zombie' mode (no prompt, no connection). */ static void finish_screen_init(void) { int want_ov_rows = ov_rows; int want_ov_cols = ov_cols; bool oversize = false; char *cl; if (screen_initted) { return; } screen_initted = true; /* Clear the (original) screen first. */ #if defined(C3270_80_132) /*[*/ if (appres.c3270.defscreen != NULL) { putenv(xs_buffer("COLUMNS=%d", defscreen_spec.cols)); putenv(xs_buffer("LINES=%d", defscreen_spec.rows)); } #endif /*]*/ if ((cl = tigetstr("clear")) != NULL) { putp(cl); } #if !defined(C3270_80_132) /*[*/ /* Initialize curses. */ if (initscr() == NULL) { fprintf(stderr, "Can't initialize terminal.\n"); exit(1); } initscr_done = true; #else /*][*/ /* Set up ncurses, and see if it's within bounds. */ if (appres.c3270.defscreen != NULL) { putenv(xs_buffer("COLUMNS=%d", defscreen_spec.cols)); putenv(xs_buffer("LINES=%d", defscreen_spec.rows)); def_screen = newterm(NULL, stdout, stdin); initscr_done = true; if (def_screen == NULL) { fprintf(stderr, "Can't initialize %dx%d defscreen terminal.\n", defscreen_spec.rows, defscreen_spec.cols); exit(1); } if (write(1, defscreen_spec.mode_switch, strlen(defscreen_spec.mode_switch)) < 0) { endwin(); exit(1); } } if (appres.c3270.altscreen) { putenv(xs_buffer("COLUMNS=%d", altscreen_spec.cols)); putenv(xs_buffer("LINES=%d", altscreen_spec.rows)); } alt_screen = newterm(NULL, stdout, stdin); if (alt_screen == NULL) { popup_an_error("Can't initialize terminal.\n"); exit(1); } initscr_done = true; if (def_screen == NULL) { def_screen = alt_screen; cur_screen = def_screen; } if (appres.c3270.altscreen) { set_term(alt_screen); cur_screen = alt_screen; } /* If they want 80/132 switching, then they want a model 5. */ if (def_screen != alt_screen && model_num != 5) { set_rows_cols(5, 0, 0); } #endif /*]*/ while (cursesLINES < maxROWS || cursesCOLS < maxCOLS) { /* * First, cancel any oversize. This will get us to the correct * model number, if there is any. */ if ((ov_cols && ov_cols > cursesCOLS) || (ov_rows && ov_rows > cursesLINES)) { ov_cols = 0; ov_rows = 0; oversize = true; continue; } /* If we're at the smallest screen now, give up. */ if (model_num == 2) { popup_an_error("Emulator won't fit on a %dx%d display.\n", cursesLINES, cursesCOLS); exit(1); } /* Try a smaller model. */ set_rows_cols(model_num - 1, 0, 0); } /* * Now, if they wanted an oversize, but didn't get it, try applying it * again. */ if (oversize) { if (want_ov_rows > cursesLINES - 2) { want_ov_rows = cursesLINES - 2; } if (want_ov_rows < maxROWS) { want_ov_rows = maxROWS; } if (want_ov_cols > cursesCOLS) { want_ov_cols = cursesCOLS; } set_rows_cols(model_num, want_ov_cols, want_ov_rows); } /* * Finally, if they want automatic oversize, see if that's possible. */ if (ov_auto && (maxROWS < cursesLINES - 3 || maxCOLS < cursesCOLS)) { set_rows_cols(model_num, cursesCOLS, cursesLINES - 3); } #if defined(NCURSES_MOUSE_VERSION) /*[*/ if (appres.c3270.mouse && mousemask(BUTTON1_RELEASED, NULL) == 0) { appres.c3270.mouse = false; } #endif /*]*/ /* Figure out where the status line goes, if it fits. */ #if defined(C3270_80_132) /*[*/ if (def_screen != alt_screen) { /* Start out in defscreen mode. */ set_status_row(defscreen_spec.rows, MODEL_2_ROWS); } else #endif /*]*/ { /* Start out in altscreen mode. */ set_status_row(cursesLINES, maxROWS); } /* Implement reverse video. */ if (appres.c3270.reverse_video) { bg_color = COLOR_WHITE; } /* Play with curses color. */ if (!appres.interactive.mono) { #if defined(HAVE_USE_DEFAULT_COLORS) /*[*/ char *colorterm; #endif /*]*/ start_color(); if (has_colors() && COLORS >= 16) { cmap = appres.c3270.reverse_video? cmap16_rv: cmap16; field_colors = appres.c3270.reverse_video? field_colors16_rv: field_colors16; if (appres.c3270.reverse_video) { bg_color += 8; } else { defcolor_offset = 8; } } else if (appres.c3270.reverse_video) { cmap = cmap8_rv; field_colors = field_colors8_rv; } init_user_colors(); init_user_attribute_colors(); crosshair_color_init(); /* See about all-bold behavior. */ if (appres.c3270.all_bold_on) { ab_mode = TS_ON; } else if (!ts_value(appres.c3270.all_bold, &ab_mode)) { popup_an_error("Invalid %s value: '%s', assuming 'auto'\n", ResAllBold, appres.c3270.all_bold); } if (ab_mode == TS_AUTO) { ab_mode = (mode.m3279 && (COLORS < 16) && !appres.c3270.reverse_video)? TS_ON: TS_OFF; } if (ab_mode == TS_ON) { int i; defattr |= A_BOLD; for (i = 0; i < 4; i++) { field_cattrmap[i] = A_BOLD; } } #if defined(HAVE_USE_DEFAULT_COLORS) /*[*/ if ((appres.c3270.default_fgbg || (((colorterm = getenv("COLORTERM")) != NULL && !strcmp(colorterm, "gnome-terminal")) || getenv("VTE_VERSION") != NULL)) && use_default_colors() != ERR) { default_colors = true; } #endif /*]*/ if (has_colors() && COLORS >= 8) { if (mode.m3279) { /* Use 'protected' attributes for the OIA. */ defattr = get_color_pair(field_colors[2], bg_color) | field_cattrmap[2]; xhattr = get_color_pair(defcolor_offset + cmap[crosshair_color], bg_color) | cattrmap[crosshair_color]; } else { defattr = get_color_pair(defcolor_offset + COLOR_GREEN, bg_color); xhattr = get_color_pair(defcolor_offset + COLOR_GREEN, bg_color); } #if defined(C3270_80_132) && defined(NCURSES_VERSION) /*[*/ if (def_screen != alt_screen) { SCREEN *s = cur_screen; /* Initialize the colors for the other screen. */ if (s == def_screen) { set_term(alt_screen); } else { set_term(def_screen); } start_color(); curses_alt = !curses_alt; get_color_pair(field_colors[2], bg_color); curses_alt = !curses_alt; set_term(s); } #endif /*]*/ } else { appres.interactive.mono = true; mode.m3279 = false; /* Get the terminal name right. */ set_rows_cols(model_num, want_ov_cols, want_ov_rows); } } /* Set up the scrollbar. */ scroll_buf_init(); screen_init2(); } /* Configure the TTY settings for a curses screen. */ static void setup_tty(void) { extern void pause_for_errors(void); if (appres.c3270.cbreak_mode) { cbreak(); } else { raw(); } noecho(); nonl(); intrflush(stdscr,FALSE); if (appres.c3270.curses_keypad) { keypad(stdscr, TRUE); } meta(stdscr, TRUE); nodelay(stdscr, TRUE); refresh(); } #if defined(C3270_80_132) /*[*/ static void swap_screens(SCREEN *new_screen) { set_term(new_screen); cur_screen = new_screen; } #endif /*]*/ /* Secondary screen initialization. */ static void screen_init2(void) { escaped = false; /* * Finish initializing ncurses. This should be the first time that it * will send anything to the terminal. */ /* Set up the keyboard. */ #if defined(C3270_80_132) /*[*/ swap_screens(alt_screen); #endif /*]*/ setup_tty(); scrollok(stdscr, FALSE); #if defined(C3270_80_132) /*[*/ if (def_screen != alt_screen) { /* * The first setup_tty() set up altscreen. * Set up defscreen now, and leave it as the * current curses screen. */ swap_screens(def_screen); setup_tty(); scrollok(stdscr, FALSE); #if defined(NCURSES_MOUSE_VERSION) /*[*/ if (appres.c3270.mouse) { mousemask(BUTTON1_RELEASED, NULL); } #endif /*]*/ } #endif /*]*/ /* Subscribe to input events. */ if (input_id == NULL_IOID) { input_id = AddInput(0, kybd_input); } /* Ignore SIGINT and SIGTSTP. */ signal(SIGINT, SIG_IGN); signal(SIGTSTP, SIG_IGN); #if defined(C3270_80_132) /*[*/ /* Ignore SIGWINCH -- it might happen when we do 80/132 changes. */ if (def_screen != alt_screen) { signal(SIGWINCH, SIG_IGN); } #endif /*]*/ } /* Calculate where the status line goes now. */ static void set_status_row(int screen_rows, int emulator_rows) { /* Check for OIA room first. */ if (screen_rows < emulator_rows + 1) { status_row = status_skip = 0; } else if (screen_rows == emulator_rows + 1) { status_skip = 0; status_row = emulator_rows; } else { status_skip = screen_rows - 2; status_row = screen_rows - 1; } /* Then check for menubar room. Use 2 rows, 1 in a pinch. */ if (appres.interactive.menubar && appres.c3270.mouse) { if (screen_rows >= emulator_rows + (status_row != 0) + 2) { screen_yoffset = 2; } else if (screen_rows >= emulator_rows + (status_row != 0) + 1) { screen_yoffset = 1; } else { screen_yoffset = 0; } } } /* * Parse a tri-state resource value. * Returns true for success, false for failure. */ static bool ts_value(const char *s, enum ts *tsp) { *tsp = TS_AUTO; if (s != NULL && s[0]) { int sl = strlen(s); if (!strncasecmp(s, "true", sl)) { *tsp = TS_ON; } else if (!strncasecmp(s, "false", sl)) { *tsp = TS_OFF; } else if (strncasecmp(s, "auto", sl)) { return false; } } return true; } /* Allocate a color pair. */ static curses_attr get_color_pair(curses_color fg, curses_color bg) { static int next_pair[2] = { 1, 1 }; color_pair pair; #if defined(C3270_80_132) && defined(NCURSES_VERSION) /*[*/ /* ncurses allocates colors for each screen. */ int pair_index = !!curses_alt; #else /*][*/ /* curses allocates colors globally. */ const int pair_index = 0; #endif /*]*/ curses_color bg_arg = bg; curses_color fg_arg = fg; if ((pair = cp[fg][bg][pair_index])) { return COLOR_PAIR(pair); } if (next_pair[pair_index] >= COLOR_PAIRS) { return 0; } #if defined(HAVE_USE_DEFAULT_COLORS) /*[*/ /* * Assume that by default, the terminal displays some sort of 'white' * against some sort of 'black', and that looks better than the * explicit curses COLOR_WHITE over COLOR_BLACK. */ if (default_colors) { if (bg == COLOR_BLACK) { bg_arg = -1; /* use the default background, not black */ } if (fg == COLOR_WHITE) { fg_arg = -1; /* use the default foreground, not white */ } } #endif /*]*/ if (init_pair(next_pair[pair_index], fg_arg, bg_arg) != OK) { return 0; } pair = cp[fg][bg][pair_index] = next_pair[pair_index]++; return COLOR_PAIR(pair); } /* * Initialize the user-specified attribute color mappings. */ static void init_user_attribute_color(curses_color *color, curses_attr *attr, const char *resname) { char *r; unsigned long l; char *ptr; int i; if ((r = get_resource(resname)) == NULL) { return; } for (i = 0; cc_name[i].name != NULL; i++) { if (!strcasecmp(r, cc_name[i].name)) { if (cc_name[i].index < COLORS) { *color = cc_name[i].index; } else { *color = cc_name[i].index - 8; *attr = A_BOLD; } return; } } l = strtoul(r, &ptr, 0); if (ptr == r || *ptr != '\0') { xs_warning("Invalid %s value: %s", resname, r); return; } if ((int)l >= COLORS) { if (l < 16 && COLORS == 8) { *color = (int)l; *attr = A_BOLD; } else { xs_warning("Invalid %s value %s exceeds maximum color index %d", resname, r, COLORS - 1); return; } } *color = (int)l; } static void init_user_attribute_colors(void) { init_user_attribute_color(&field_colors[0], &field_cattrmap[0], ResCursesColorForDefault); init_user_attribute_color(&field_colors[1], &field_cattrmap[0], ResCursesColorForIntensified); init_user_attribute_color(&field_colors[2], &field_cattrmap[2], ResCursesColorForProtected); init_user_attribute_color(&field_colors[3], &field_cattrmap[3], ResCursesColorForProtectedIntensified); } /* * Map a field attribute to a curses color index. * Applies only to m3279 mode -- does not work for mono. */ #define DEFCOLOR_MAP(f) \ ((((f) & FA_PROTECT) >> 4) | (((f) & FA_INT_HIGH_SEL) >> 3)) static curses_color default_color_from_fa(unsigned char fa) { return field_colors[DEFCOLOR_MAP(fa)]; } static int attrmap_from_fa(unsigned char fa) { return DEFCOLOR_MAP(fa); } static curses_attr color_from_fa(unsigned char fa) { if (mode.m3279) { int ai = attrmap_from_fa(fa); curses_color fg = default_color_from_fa(fa); return get_color_pair(fg, bg_color) | (((ab_mode == TS_ON) || FA_IS_HIGH(fa))? A_BOLD: A_NORMAL) | field_cattrmap[ai]; } else if (!appres.interactive.mono) { return get_color_pair(defcolor_offset + COLOR_GREEN, bg_color) | (((ab_mode == TS_ON) || FA_IS_HIGH(fa))? A_BOLD: A_NORMAL); } else { /* No color at all. */ return ((ab_mode == TS_ON) || FA_IS_HIGH(fa))? A_BOLD: A_NORMAL; } } /* * Set up the user-specified color mappings. */ void init_user_color(const char *name, host_color_ix ix) { char *r; int i; unsigned long l; curses_color il; char *ptr; r = get_fresource("%s%s", ResCursesColorForHostColor, name); if (r == NULL) { r = get_fresource("%s%d", ResCursesColorForHostColor, ix); } if (r == NULL) { return; } for (i = 0; cc_name[i].name != NULL; i++) { if (!strcasecmp(r, cc_name[i].name)) { cmap[ix] = cc_name[i].index; if (COLORS < 16 && cmap[ix] > 8) { /* * When there are only 8 colors, the intensified colors are * mapped to bold. */ cmap[ix] -= 8; cattrmap[ix] = A_BOLD; } return; } } l = strtoul(r, &ptr, 0); if (ptr == r || *ptr == '\0') { xs_warning("Invalid %s value '%s'", ResCursesColorForHostColor, r); return; } il = (curses_color)l; if (COLORS < 16 && il > 8 && il <= 16) { /* Map 9..15 to 0..8 + bold as above. */ cmap[ix] = il - 8; cattrmap[ix] = A_BOLD; return; } if (il < COLORS) { cmap[ix] = il; return; } xs_warning("Out of range %s value '%s'", ResCursesColorForHostColor, r); } static void init_user_colors(void) { int i; for (i = 0; host_color[i].name != NULL; i++) { init_user_color(host_color[i].name, host_color[i].index); } } /* * Find the display attributes for a baddr, fa_addr and fa. */ static curses_attr calc_attrs(int baddr, int fa_addr, int fa) { curses_color fg, bg; int gr; curses_attr a; if (FA_IS_ZERO(fa)) { return color_from_fa(fa); } /* Compute the color. */ /* * Monochrome is easy, and so is color if nothing is * specified. */ if (!mode.m3279 || (!ea_buf[baddr].fg && !ea_buf[fa_addr].fg && !ea_buf[baddr].bg && !ea_buf[fa_addr].bg)) { a = color_from_fa(fa); } else { host_color_ix ix; curses_attr attr; /* The current location or the fa specifies the fg or bg. */ if (ea_buf[baddr].fg) { ix = ea_buf[baddr].fg & 0x0f; fg = cmap[ix]; attr = cattrmap[ix]; } else if (ea_buf[fa_addr].fg) { ix = ea_buf[fa_addr].fg & 0x0f; fg = cmap[ix]; attr = cattrmap[ix]; } else { ix = attrmap_from_fa(fa); fg = default_color_from_fa(fa); attr = field_cattrmap[attrmap_from_fa(fa)]; } if (ea_buf[baddr].bg) { bg = cmap[ea_buf[baddr].bg & 0x0f]; } else if (ea_buf[fa_addr].bg) { bg = cmap[ea_buf[fa_addr].bg & 0x0f]; } else { bg = cmap[HOST_COLOR_NEUTRAL_BLACK]; } a = get_color_pair(fg, bg) | attr; } /* Compute the display attributes. */ if (ea_buf[baddr].gr) { gr = ea_buf[baddr].gr; } else if (ea_buf[fa_addr].gr) { gr = ea_buf[fa_addr].gr; } else { gr = 0; } if (gr & GR_BLINK) { a |= A_BLINK; } if (gr & GR_REVERSE) { a |= A_REVERSE; } if (gr & GR_UNDERLINE) { a |= A_UNDERLINE; } if ((gr & GR_INTENSIFY) || (ab_mode == TS_ON) || FA_IS_HIGH(fa)) { a |= A_BOLD; } return a; } /* * Return a visible control character for a field attribute. */ static unsigned char visible_fa(unsigned char fa) { static unsigned char varr[32] = "0123456789ABCDEFGHIJKLMNOPQRSTUV"; unsigned ix; /* * This code knows that: * FA_PROTECT is 0b100000, and we map it to 0b010000 * FA_NUMERIC is 0b010000, and we map it to 0b001000 * FA_INTENSITY is 0b001100, and we map it to 0b000110 * FA_MODIFY is 0b000001, and we copy to 0b000001 */ ix = ((fa & (FA_PROTECT | FA_NUMERIC | FA_INTENSITY)) >> 1) | (fa & FA_MODIFY); return varr[ix]; } /** * Return a space or a line-drawing character, depending on whether the * given buffer address has a crosshair cursor on it. * * @param[in] baddr Buffer address * @param[out] acs Returned true if the returned character is a * curses ACS code * * @return Blank if not a crosshair region, possibly an ACS code (if acs * returned true), possibly an ASCII-art character (if asciiBoxDraw is * set), possibly a Unicode line-drawing character. */ static ucs4_t crosshair_blank(int baddr, unsigned char *acs) { ucs4_t u = ' '; *acs = 0; if (toggled(CROSSHAIR)) { bool same_row = ((baddr / cCOLS) == (cursor_addr / cCOLS)); bool same_col = ((baddr % cCOLS) == (cursor_addr % cCOLS)); if (same_row && same_col) { map_acs('n', &u, acs); /* cross */ } else if (same_row) { map_acs('q', &u, acs); /* horizontal */ } else if (same_col) { map_acs('x', &u, acs); /* vertical */ } } return u; } /** * Draw a crosshair line-drawing character returned by crosshair_blank(). * * @param[in] u Line-drawing character * @param[in] acs true if u is a curses ACS code */ static void draw_crosshair(ucs4_t u, bool acs) { char mb[16]; attrset(xhattr); #if defined(CURSES_WIDE) /*[*/ if (u < 0x100 || acs) { addch(u); } else if (unicode_to_multibyte(u, mb, sizeof(mb))) { addstr(mb); } else { addch(' '); } #else /*][*/ addch(u); #endif /*]*/ } /* Display what's in the buffer. */ void screen_disp(bool erasing _is_unused) { int row, col; curses_attr field_attrs; unsigned char fa; struct screen_spec *cur_spec; enum dbcs_state d; int fa_addr; char mb[16]; /* This may be called when it isn't time. */ if (escaped) { return; } #if defined(C3270_80_132) /*[*/ /* See if they've switched screens on us. */ if (def_screen != alt_screen && screen_alt != curses_alt) { if (screen_alt) { if (write(1, altscreen_spec.mode_switch, strlen(altscreen_spec.mode_switch)) < 0) { exit(1); } vtrace("Switching to alt (%dx%d) screen.\n", altscreen_spec.rows, altscreen_spec.cols); swap_screens(alt_screen); cur_spec = &altscreen_spec; } else { if (write(1, defscreen_spec.mode_switch, strlen(defscreen_spec.mode_switch)) < 0) { exit(1); } vtrace("Switching to default (%dx%d) screen.\n", defscreen_spec.rows, defscreen_spec.cols); swap_screens(def_screen); cur_spec = &defscreen_spec; } /* Figure out where the status line goes now, if it fits. */ set_status_row(cur_spec->rows, ROWS); curses_alt = screen_alt; /* Tell curses to forget what may be on the screen already. */ clear(); } #endif /*]*/ /* If the menubar is separate, draw it first. */ if (screen_yoffset) { ucs4_t u = 0; bool highlight; unsigned char acs; curses_attr norm, high; if (menu_is_up) { if (mode.m3279) { norm = get_color_pair(COLOR_WHITE, COLOR_BLACK); high = get_color_pair(COLOR_BLACK, COLOR_WHITE); } else { norm = defattr & ~A_BOLD; high = defattr | A_BOLD; } } else { if (mode.m3279) { norm = get_color_pair(COLOR_WHITE, COLOR_BLACK); high = get_color_pair(COLOR_WHITE, COLOR_BLACK); } else { norm = defattr & ~A_BOLD; high = defattr & ~A_BOLD; } } for (row = 0; row < screen_yoffset; row++) { move(row, 0); for (col = 0; col < cCOLS; col++) { if (menu_char(row, col, true, &u, &highlight, &acs)) { attrset(highlight? high: norm); #if defined(CURSES_WIDE) /*[*/ if (u < 0x100 || acs) { addch(u); } else if (unicode_to_multibyte(u, mb, sizeof(mb))) { addstr(mb); } else { addch(' '); } #else /*][*/ addch(u); #endif /*]*/ } else { attrset(norm); addch(' '); } } } } fa = get_field_attribute(0); fa_addr = find_field_attribute(0); field_attrs = calc_attrs(fa_addr, fa_addr, fa); for (row = 0; row < ROWS; row++) { int baddr; if (!flipped) { move(row + screen_yoffset, 0); } for (col = 0; col < cCOLS; col++) { bool underlined = false; curses_attr attr_mask = toggled(UNDERSCORE)? (int)~A_UNDERLINE: -1; bool is_menu = false; ucs4_t u = 0; bool highlight = false; unsigned char acs = 0; if (flipped) { move(row + screen_yoffset, cCOLS-1 - col); } is_menu = menu_char(row + screen_yoffset, flipped? (cCOLS-1 - col): col, false, &u, &highlight, &acs); if (is_menu) { if (!u) { abort(); } if (mode.m3279) { if (highlight) { attrset(get_color_pair(HOST_COLOR_NEUTRAL_BLACK, HOST_COLOR_NEUTRAL_WHITE)); } else { attrset(get_color_pair(HOST_COLOR_NEUTRAL_WHITE, HOST_COLOR_NEUTRAL_BLACK)); } } else { if (highlight) { attrset(defattr | A_BOLD); } else { attrset(defattr); } } #if defined(CURSES_WIDE) /*[*/ if (u < 0x100 || acs) { addch(u); } else if (unicode_to_multibyte(u, mb, sizeof(mb))) { addstr(mb); } else { addch(' '); } #else /*][*/ addch(u); #endif /*]*/ } baddr = row*cCOLS+col; if (ea_buf[baddr].fa) { fa_addr = baddr; fa = ea_buf[baddr].fa; field_attrs = calc_attrs(baddr, baddr, fa); if (!is_menu) { if (toggled(VISIBLE_CONTROL)) { attrset(get_color_pair(COLOR_YELLOW, COLOR_BLACK) | A_BOLD | A_UNDERLINE); addch(visible_fa(fa)); } else { u = crosshair_blank(baddr, &acs); if (u == ' ') { attrset(defattr); addch(' '); } else { draw_crosshair(u, acs); } } } } else if (FA_IS_ZERO(fa)) { if (!is_menu) { u = crosshair_blank(baddr, &acs); if (u == ' ') { attrset(field_attrs & attr_mask); addch(' '); } else { draw_crosshair(u, acs); } if (field_attrs & A_UNDERLINE) { underlined = true; } } } else { char mb[16]; int len; int attrs; if (is_menu) { continue; } if (!(ea_buf[baddr].gr || ea_buf[baddr].fg || ea_buf[baddr].bg)) { attrs = field_attrs & attr_mask; attrset(attrs); if (field_attrs & A_UNDERLINE) { underlined = true; } } else { int buf_attrs; buf_attrs = calc_attrs(baddr, fa_addr, fa); attrs = buf_attrs & attr_mask; attrset(attrs); if (buf_attrs & A_UNDERLINE) { underlined = true; } } d = ctlr_dbcs_state(baddr); if (IS_LEFT(d)) { int xaddr = baddr; INC_BA(xaddr); if (toggled(VISIBLE_CONTROL) && ea_buf[baddr].ec == EBC_null && ea_buf[xaddr].ec == EBC_null) { attrset(attrs | A_UNDERLINE); addstr(".."); } else { if (ea_buf[baddr].ucs4 != 0) { len = unicode_to_multibyte(ea_buf[baddr].ucs4, mb, sizeof(mb)); } else { len = ebcdic_to_multibyte( (ea_buf[baddr].ec << 8) | ea_buf[xaddr].ec, mb, sizeof(mb)); } addstr(mb); } } else if (!IS_RIGHT(d)) { if (toggled(VISIBLE_CONTROL) && ea_buf[baddr].ucs4 == 0 && ea_buf[baddr].ec == EBC_null) { attrset(attrs | A_UNDERLINE); addstr("."); } else if (toggled(VISIBLE_CONTROL) && ea_buf[baddr].ec == EBC_so) { attrset(attrs | A_UNDERLINE); addstr("<"); } else if (toggled(VISIBLE_CONTROL) && ea_buf[baddr].ec == EBC_si) { attrset(attrs | A_UNDERLINE); addstr(">"); } else if (ea_buf[baddr].cs == CS_LINEDRAW) { display_linedraw(ea_buf[baddr].ucs4); } else if (ea_buf[baddr].cs == CS_APL || (ea_buf[baddr].cs & CS_GE)) { display_ge(ea_buf[baddr].ec); } else { bool done_sbcs = false; ucs4_t uu; if ((uu = ea_buf[baddr].ucs4) != 0) { if (toggled(MONOCASE)) { uu = u_toupper(uu); } len = unicode_to_multibyte(uu, mb, sizeof(mb)); } else { unsigned flags = EUO_BLANK_UNDEF | (appres.c3270.ascii_box_draw? EUO_ASCII_BOX: 0) | (toggled(MONOCASE)? EUO_TOUPPER: 0); len = ebcdic_to_multibyte_x( ea_buf[baddr].ec, CS_BASE, mb, sizeof(mb), flags, NULL); } if (len > 0) { len--; } if ((len == 1) && (mb[0] == ' ')) { u = crosshair_blank(baddr, &acs); if (u != ' ') { draw_crosshair(u, acs); done_sbcs = true; } } if (!done_sbcs) { if (toggled(UNDERSCORE) && underlined && (len == 1) && mb[0] == ' ') { mb[0] = '_'; } #if defined(CURSES_WIDE) /*[*/ addstr(mb); #else /*][*/ if (len > 1) { addch(' '); } else { addch(mb[0] & 0xff); } #endif /*]*/ } } } } } } if (status_row) { draw_oia(); } attrset(defattr); if (menu_is_up) { menu_cursor(&row, &col); move(row, col); } else { if (flipped) { move((cursor_addr / cCOLS + screen_yoffset), cCOLS-1 - (cursor_addr % cCOLS)); } else { move((cursor_addr / cCOLS) + screen_yoffset, cursor_addr % cCOLS); } } refresh(); } /* ESC processing. */ static unsigned long eto = 0L; static bool meta_escape = false; static void escape_timeout(ioid_t id _is_unused) { vtrace("Timeout waiting for key following Escape, processing separately\n"); eto = 0L; meta_escape = false; kybd_input2(0, 0x1b, 0); } /* Keyboard input. */ static void kybd_input(iosrc_t fd _is_unused, ioid_t id _is_unused) { int k = 0; /* KEY_XXX, or 0 */ ucs4_t ucs4 = 0; /* input character, or 0 */ bool first = true; static bool failed_first = false; for (;;) { volatile int alt = 0; char dbuf[128]; #if defined(CURSES_WIDE) /*[*/ wint_t wch; size_t sz; #endif /*]*/ if (!initscr_done || isendwin()) { return; } ucs4 = 0; #if defined(CURSES_WIDE) /*[*/ k = wget_wch(stdscr, &wch); #else /*][*/ k = wgetch(stdscr); #endif /*]*/ vtrace("kbd_input: k=%d " # if defined(CURSES_WIDE) /*[*/ "wch=%lu " # endif /*]*/ "\n", k # if defined(CURSES_WIDE) /*[*/ , (unsigned long)wch # endif /*]*/ ); if (k == ERR) { if (first) { if (failed_first) { vtrace("End of File, exiting.\n"); x3270_exit(1); } failed_first = true; } vtrace("kbd_input: k == ERR, return\n"); return; } else { failed_first = false; } #if !defined(CURSES_WIDE) /*[*/ /* Differentiate between KEY_XXX and regular input. */ if (!(k & ~0xff)) { char mb[2]; int consumed; enum me_fail error; /* Convert from local multi-byte to Unicode. */ mb[0] = k; mb[1] = '\0'; ucs4 = multibyte_to_unicode(mb, 1, &consumed, &error); if (ucs4 == 0) { vtrace("Invalid input char 0x%x\n", k); return; } k = 0; } #endif /*]*/ #if defined(CURSES_WIDE) /*[*/ if (k == KEY_CODE_YES) k = (int)wch; /* KEY_XXX */ else { char mbs[16]; wchar_t wcs[2]; k = 0; wcs[0] = wch; wcs[1] = 0; sz = wcstombs(mbs, wcs, sizeof(mbs)); if (sz == (size_t)-1) { vtrace("Invalid input wchar 0x%lx\n", (unsigned long)wch); return; } if (sz == 1) { ucs4 = mbs[0] & 0xff; } else { int consumed; enum me_fail error; ucs4 = multibyte_to_unicode(mbs, sz, &consumed, &error); if (ucs4 == 0) { vtrace("Unsupported input wchar 0x%lx\n", (unsigned long)wch); return; } } } #endif /*]*/ #if defined(NCURSES_MOUSE_VERSION) /*[*/ if (k == KEY_MOUSE) { MEVENT m; if (menu_is_up) { menu_key(MK_MOUSE, 0); return; } if (getmouse(&m) != OK) { return; } if ((m.bstate & BUTTON1_RELEASED)) { vtrace("Mouse BUTTON1_RELEASED (x=%d,y=%d)\n", m.x, m.y); if (screen_yoffset != 0 && m.y == 0) { popup_menu(m.x, (screen_yoffset != 0)); screen_disp(false); } else if (status_row && m.x == rmargin - 28 && m.y == status_row) { run_action(AnShow, IA_DEFAULT, KwStatus, NULL); } else if (m.x < cCOLS && m.y - screen_yoffset >= 0 && m.y - screen_yoffset < ROWS) { if (flipped) { cursor_move(((m.y - screen_yoffset) * cCOLS) + (cCOLS - m.x)); } else { cursor_move(((m.y - screen_yoffset) * cCOLS) + m.x); } move(m.y + screen_yoffset, m.x); refresh(); } } return; } #endif /*]*/ /* Handle Meta-Escapes. */ if (meta_escape) { if (eto != 0L) { RemoveTimeOut(eto); eto = 0L; } meta_escape = false; alt = KM_ALT; } else if (me_mode == TS_ON && ucs4 == 0x1b) { vtrace("Key '%s' (curses key 0x%x, char code 0x%x)\n", decode_key(k, ucs4, alt, dbuf), k, ucs4); eto = AddTimeOut(100L, escape_timeout); vtrace(" waiting to see if Escape is followed by another key\n"); meta_escape = true; continue; } vtrace("Key '%s' (curses key 0x%x, char code 0x%x)\n", decode_key(k, ucs4, alt, dbuf), k, ucs4); kybd_input2(k, ucs4, alt); first = false; } } /* Translate a curses key to a menubar abstract key. */ static menu_key_t key_to_mkey(int k) { switch (k) { #if defined(NCURSES_MOUSE_VERSION) /*[*/ case KEY_MOUSE: return MK_MOUSE; #endif /*]*/ case KEY_UP: return MK_UP; case KEY_DOWN: return MK_DOWN; case KEY_LEFT: return MK_LEFT; case KEY_RIGHT: return MK_RIGHT; case KEY_HOME: return MK_HOME; case KEY_END: return MK_END; case KEY_ENTER: return MK_ENTER; case 0: return MK_NONE; default: return MK_OTHER; } } static void kybd_input2(int k, ucs4_t ucs4, int alt) { char buf[16]; char *action; int i; if (menu_is_up) { menu_key(key_to_mkey(k), ucs4); screen_disp(false); return; } action = lookup_key(k, ucs4, alt); if (action != NULL) { if (strcmp(action, "[ignore]")) { push_keymap_action(action); } return; } ia_cause = IA_DEFAULT; /* These first cases apply to both 3270 and NVT modes. */ switch (k) { case KEY_UP: run_action(AnUp, IA_DEFAULT, NULL, NULL); return; case KEY_DOWN: run_action(AnDown, IA_DEFAULT, NULL, NULL); return; case KEY_LEFT: run_action(AnLeft, IA_DEFAULT, NULL, NULL); return; case KEY_RIGHT: run_action(AnRight, IA_DEFAULT, NULL, NULL); return; case KEY_HOME: run_action(AnRight, IA_DEFAULT, NULL, NULL); return; default: break; } switch (ucs4) { case 0x1d: run_action(AnEscape, IA_DEFAULT, NULL, NULL); return; } /* Then look for 3270-only cases. */ if (IN_3270) { switch (k) { case KEY_DC: run_action(AnDelete, IA_DEFAULT, NULL, NULL); return; case KEY_BACKSPACE: run_action(AnBackSpace, IA_DEFAULT, NULL, NULL); return; case KEY_HOME: run_action(AnHome, IA_DEFAULT, NULL, NULL); return; default: break; } switch (ucs4) { case 0x03: run_action(AnClear, IA_DEFAULT, NULL, NULL); return; case 0x12: run_action(AnReset, IA_DEFAULT, NULL, NULL); return; case 'L' & 0x1f: run_action(AnRedraw, IA_DEFAULT, NULL, NULL); return; case '\t': run_action(AnTab, IA_DEFAULT, NULL, NULL); return; case 0177: run_action(AnDelete, IA_DEFAULT, NULL, NULL); return; case '\b': run_action(AnBackSpace, IA_DEFAULT, NULL, NULL); return; case '\r': run_action(AnEnter, IA_DEFAULT, NULL, NULL); return; case '\n': run_action(AnNewline, IA_DEFAULT, NULL, NULL); return; default: break; } } /* Do some NVT-only translations. */ if (IN_NVT) { switch (k) { case KEY_DC: ucs4 = 0x7f; k = 0; break; case KEY_BACKSPACE: ucs4 = '\b'; k = 0; break; } } /* Catch PF keys. */ for (i = 1; i <= 24; i++) { if (k == KEY_F(i)) { sprintf(buf, "%d", i); run_action(AnPF, IA_DEFAULT, buf, NULL); return; } } /* Then any other 8-bit ASCII character. */ if (ucs4) { char ks[16]; sprintf(ks, "U+%04x", ucs4); run_action(AnKey, IA_DEFAULT, ks, NULL); return; } vtrace(" dropped (no default)\n"); } bool screen_suspend(void) { static bool need_to_scroll = false; bool needed = false; if (!initscr_done) { return false; } if (!isendwin()) { #if defined(C3270_80_132) /*[*/ if (def_screen != alt_screen) { /* * Call endwin() for the last-defined screen * (altscreen) first. Note that this will leave * the curses screen set to defscreen when this * function exits; if the 3270 is really in altscreen * mode, we will have to switch it back when we resume * the screen, below. */ if (!curses_alt) { swap_screens(alt_screen); } curs_set_state = curs_set(1); endwin(); swap_screens(def_screen); (void) curs_set(1); endwin(); } else { curs_set_state = curs_set(1); endwin(); } #else /*][*/ curs_set_state = curs_set(1); endwin(); #endif /*]*/ needed = true; } if (!escaped) { escaped = true; if (need_to_scroll) { printf("\n"); } else { need_to_scroll = true; } #if defined(C3270_80_132) /*[*/ if (curses_alt && def_screen != alt_screen) { if (write(1, defscreen_spec.mode_switch, strlen(defscreen_spec.mode_switch)) < 0) { x3270_exit(1); } } #endif /*]*/ RemoveInput(input_id); input_id = NULL_IOID; } return needed; } void screen_resume(void) { char *cl; if (!escaped) { return; } escaped = false; /* Ignore signals we don't like. */ signal(SIGINT, SIG_IGN); signal(SIGTSTP, SIG_IGN); /* * Clear the screen first, if possible, so future command output * starts at the bottom of the screen. */ if ((cl = tigetstr("clear")) != NULL) { putp(cl); } /* Finish screen initialization. */ if (!screen_initted) { finish_screen_init(); } #if defined(C3270_80_132) /*[*/ if (def_screen != alt_screen && curses_alt) { /* * When we suspended the screen, we switched to defscreen so * that endwin() got called in the right order. Switch back. */ swap_screens(alt_screen); if (write(1, altscreen_spec.mode_switch, strlen(altscreen_spec.mode_switch)) < 0) { x3270_exit(1); } } #endif /*]*/ screen_disp(false); refresh(); if (curs_set_state != -1) { curs_set(curs_set_state); curs_set_state = -1; } if (input_id == NULL_IOID) { input_id = AddInput(0, kybd_input); } } void cursor_move(int baddr) { cursor_addr = baddr; } static void toggle_monocase(toggle_index_t ix _is_unused, enum toggle_type tt _is_unused) { screen_disp(false); } static void toggle_underscore(toggle_index_t ix _is_unused, enum toggle_type tt _is_unused) { screen_disp(false); } static void toggle_visibleControl(toggle_index_t ix _is_unused, enum toggle_type tt _is_unused) { screen_disp(false); } /** * Toggle timing display. */ static void toggle_showTiming(toggle_index_t ix _is_unused, enum toggle_type tt _is_unused) { if (!toggled(SHOW_TIMING)) { status_untiming(); } } /** * Toggle crosshair cursor. */ static void toggle_crosshair(toggle_index_t ix _is_unused, enum toggle_type tt _is_unused) { screen_disp(false); } /* Status line stuff. */ static bool status_ta = false; static bool status_rm = false; static bool status_im = false; static enum { SS_INSECURE, SS_UNVERIFIED, SS_SECURE } status_secure = SS_INSECURE; static bool oia_boxsolid = false; static bool oia_undera = true; static bool oia_compose = false; static bool oia_printer = false; static ucs4_t oia_compose_char = 0; static enum keytype oia_compose_keytype = KT_STD; #define LUCNT 8 static char oia_lu[LUCNT+1]; static char oia_timing[32]; /* :ss.s*/ static char oia_screentrace = ' '; static char oia_script = ' '; static ioid_t info_done_timeout = NULL_IOID; static ioid_t info_scroll_timeout = NULL_IOID; void status_ctlr_done(void) { oia_undera = true; } void status_insert_mode(bool on) { status_im = on; } /* Remove the info message. */ static void info_done(ioid_t id _is_unused) { Replace(info_base_msg, NULL); info_msg = NULL; info_done_timeout = NULL_IOID; } /* Scroll the info message. */ static void info_scroll(ioid_t id _is_unused) { ++info_msg; if (strlen(info_msg) > 35) { info_scroll_timeout = AddTimeOut(STATUS_SCROLL_MS, info_scroll); } else { info_done_timeout = AddTimeOut(STATUS_PUSH_MS, info_done); info_scroll_timeout = NULL_IOID; } } /* Pop up an info message. */ void status_push(char *msg) { char *new_msg = msg? NewString(msg): NULL; Replace(info_base_msg, new_msg); info_msg = info_base_msg; if (info_scroll_timeout != NULL_IOID) { RemoveTimeOut(info_scroll_timeout); info_scroll_timeout = NULL_IOID; } if (info_done_timeout != NULL_IOID) { RemoveTimeOut(info_done_timeout); info_done_timeout = NULL_IOID; } } /* * Reset the info message, so when it is revealed, it starts at the beginning. */ static void reset_info(void) { if (info_base_msg != NULL) { info_msg = info_base_msg; } /* Stop any timers. */ if (info_scroll_timeout != NULL_IOID) { RemoveTimeOut(info_scroll_timeout); info_scroll_timeout = NULL_IOID; } if (info_done_timeout != NULL_IOID) { RemoveTimeOut(info_done_timeout); info_done_timeout = NULL_IOID; } } /* * The info message has been displayed. Set the timer to scroll or erase it. */ static void set_info_timer(void) { if (info_scroll_timeout != NULL_IOID || info_done_timeout != NULL_IOID) { return; } if (strlen(info_msg) > 35) { info_scroll_timeout = AddTimeOut(STATUS_SCROLL_START_MS, info_scroll); } else { info_done_timeout = AddTimeOut(STATUS_PUSH_MS, info_done); } } /* Compute the color pair for an OIA field. */ static curses_attr status_colors(curses_color fg) { if (appres.c3270.reverse_video && (fg == COLOR_WHITE || fg == defcolor_offset + COLOR_WHITE)) { fg = COLOR_BLACK; } return mode.m3279? get_color_pair(fg, bg_color): defattr; } void status_minus(void) { other_msg = "X -f"; other_attr = status_colors(defcolor_offset + COLOR_RED) | A_BOLD; } void status_oerr(int error_type) { switch (error_type) { case KL_OERR_PROTECTED: other_msg = "X Protected"; break; case KL_OERR_NUMERIC: other_msg = "X NUM"; break; case KL_OERR_OVERFLOW: other_msg = "X Overflow"; break; } other_attr = status_colors(defcolor_offset + COLOR_RED) | A_BOLD; } void status_reset(void) { if (kybdlock & KL_ENTER_INHIBIT) { other_msg = "X Inhibit"; } else if (kybdlock & KL_DEFERRED_UNLOCK) { other_msg = "X"; } else { status_connect(PCONNECTED); } other_attr = status_colors(defcolor_offset + COLOR_WHITE) | A_BOLD; } void status_reverse_mode(bool on) { status_rm = on; } void status_syswait(void) { other_msg = "X SYSTEM"; other_attr = status_colors(defcolor_offset + COLOR_WHITE) | A_BOLD; } void status_twait(void) { oia_undera = false; other_msg = "X Wait"; other_attr = status_colors(defcolor_offset + COLOR_WHITE) | A_BOLD; } void status_typeahead(bool on) { status_ta = on; } void status_compose(bool on, ucs4_t ucs4, enum keytype keytype) { oia_compose = on; oia_compose_char = ucs4; oia_compose_keytype = keytype; } void status_lu(const char *lu) { if (lu != NULL) { strncpy(oia_lu, lu, LUCNT); oia_lu[LUCNT] = '\0'; } else { memset(oia_lu, '\0', sizeof(oia_lu)); } } static void status_connect(bool connected) { if (connected) { oia_boxsolid = IN_3270 && !IN_SSCP; if (cstate == RECONNECTING) { other_msg = "X Reconnecting"; } else if (cstate == RESOLVING) { other_msg = "X [DNS]"; } else if (cstate == TCP_PENDING) { other_msg = "X [TCP]"; oia_boxsolid = false; status_secure = SS_INSECURE; } else if (cstate == TLS_PENDING) { other_msg = "X [TLS]"; oia_boxsolid = false; status_secure = SS_INSECURE; } else if (cstate == PROXY_PENDING) { other_msg = "X [Proxy]"; oia_boxsolid = false; status_secure = SS_INSECURE; } else if (cstate == TELNET_PENDING) { other_msg = "X [TELNET]"; oia_boxsolid = false; status_secure = SS_INSECURE; } else if (cstate == CONNECTED_UNBOUND) { other_msg = "X [TN3270E]"; } else if (kybdlock & KL_AWAITING_FIRST) { other_msg = "X [Field]"; } else { other_msg = NULL; } if (net_secure_connection()) { if (net_secure_unverified()) { status_secure = SS_UNVERIFIED; } else { status_secure = SS_SECURE; } } else { status_secure = SS_INSECURE; } } else { oia_boxsolid = false; other_msg = "X Not Connected"; status_secure = SS_INSECURE; } other_attr = status_colors(defcolor_offset + COLOR_WHITE) | A_BOLD; status_untiming(); } static void status_3270_mode(bool ignored _is_unused) { oia_boxsolid = IN_3270 && !IN_SSCP; if (oia_boxsolid) { oia_undera = true; } status_connect(CONNECTED); } static void status_printer(bool on) { oia_printer = on; } void status_timing(struct timeval *t0, struct timeval *t1) { static char no_time[] = ":??.?"; if (t1->tv_sec - t0->tv_sec > (99*60)) { strcpy(oia_timing, no_time); } else { unsigned long cs; /* centiseconds */ cs = (t1->tv_sec - t0->tv_sec) * 10 + (t1->tv_usec - t0->tv_usec + 50000) / 100000; if (cs < CM) { snprintf(oia_timing, sizeof(oia_timing), ":%02ld.%ld", cs / 10, cs % 10); } else { snprintf(oia_timing, sizeof(oia_timing), "%02ld:%02ld", cs / CM, (cs % CM) / 10); } } } void status_untiming(void) { oia_timing[0] = '\0'; } void status_scrolled(int n) { if (n) { Replace(scrolled_msg, xs_buffer("X Scrolled %d", n)); } else { Replace(scrolled_msg, NULL); } } /* Remove 'X Disabled'. */ static void disabled_done(ioid_t id _is_unused) { disabled_msg = NULL; disabled_done_id = NULL_IOID; } /* Flash 'X Disabled' in the OIA. */ void status_keyboard_disable_flash(void) { if (disabled_done_id == NULL_IOID) { disabled_msg = "X Disabled"; } else { RemoveTimeOut(disabled_done_id); disabled_done_id = NULL_IOID; } disabled_done_id = AddTimeOut(1000L, disabled_done); } void status_screentrace(int n) { if (n < 0) { oia_screentrace = ' '; } else if (n < 9) { oia_screentrace = "123456789"[n]; } else { oia_screentrace = '+'; } } void status_script(bool on) { oia_script = on? 's': ' '; } static void draw_oia(void) { static bool filled_extra[2] = { false, false }; int i, j; int cursor_row = cursor_addr / cCOLS; int cursor_col = cursor_addr % cCOLS; int fl_cursor_col = flipped? (cursesCOLS - 1 - cursor_col): cursor_col; char *status_msg_now; int msg_attr; static struct { ucs4_t u; unsigned char acs; } vbar, hbar; static bool bars_done = false; /* Prepare the line-drawing characters for the crosshair. */ if (toggled(CROSSHAIR) && !bars_done) { map_acs('x', &vbar.u, &vbar.acs); map_acs('q', &hbar.u, &hbar.acs); bars_done = true; } #if defined(C3270_80_132) /*[*/ if (def_screen != alt_screen) { if (curses_alt) { rmargin = altscreen_spec.cols - 1; } else { rmargin = defscreen_spec.cols - 1; } } else #endif /*]*/ { rmargin = maxCOLS - 1; } /* Black out the parts of the screen we aren't using. */ if (!appres.interactive.mono && !filled_extra[!!curses_alt]) { int r, c; attrset(defattr); for (r = 0; r <= status_row; r++) { int c0; if (r >= maxROWS && r != status_row) { c0 = 0; } else { c0 = maxCOLS; } move(r + screen_yoffset, c0); for (c = c0; c < cursesCOLS; c++) { printw(" "); } } } /* Make sure the status line region is filled in properly. */ if (!appres.interactive.mono) { int i; attrset(defattr); if (status_skip) { move(status_skip + screen_yoffset, 0); for (i = 0; i < rmargin; i++) { printw(" "); } } move(status_row + screen_yoffset, 0); for (i = 0; i < rmargin; i++) { printw(" "); } } /* Draw or undraw the crosshair cursor outside the primary display. */ attrset(xhattr); /* Draw the crosshair over the menubar line. */ if (screen_yoffset && toggled(CROSSHAIR) && !menu_is_up && (mvinch(0, fl_cursor_col) & A_CHARTEXT) == ' ') { draw_crosshair(vbar.u, vbar.acs); } /* Draw the crosshair between the menubar and display. */ if (!menu_is_up && screen_yoffset > 1) { for (j = 0; j < cursesCOLS; j++) { move(1, j); if (toggled(CROSSHAIR) && j == fl_cursor_col) { draw_crosshair(vbar.u, vbar.acs); } else { addch(' '); } } } /* Draw the crosshair to the right of the display. */ for (i = 0; i < ROWS; i++) { for (j = cCOLS; j < cursesCOLS; j++) { move(i + screen_yoffset, j); if (toggled(CROSSHAIR) && i == cursor_row) { draw_crosshair(hbar.u, hbar.acs); } else { addch(' '); } } } /* * Draw the crosshair between the bottom of the display and the * OIA. */ for (i = screen_yoffset + ROWS; i < status_row; i++) { for (j = 0; j < cursesCOLS; j++) { move(i, j); if (toggled(CROSSHAIR) && j == fl_cursor_col) { draw_crosshair(vbar.u, vbar.acs); } else { addch(' '); } } } /* The OIA looks like (in Model 2/3/4 mode): 1 2 3 4 5 6 7 01234567890123456789012345678901234567890123456789012345678901234567890123456789 4AN Status-Message--------------------- Cn TRIPS+s LU-Name- :ss.s 000/000 7 6 5 4 3 2 1 98765432109876543210987654321098765432109876543210987654321098765432109876543210 ^ -7 ^ -14 ^-25 On wider displays, there is a bigger gap between TRIPSs and LU-Name. */ /* * If there is at least one black line between the 3270 display and the * OIA, draw a row of underlined blanks above the OIA. This is * something c3270 can do that wc3270 cannot, since Windows consoles * can't do underlining. */ if (status_row > screen_yoffset + maxROWS) { int i; attrset(A_UNDERLINE | defattr); move(status_row - 1, 0); for (i = 0; i < rmargin; i++) { if (toggled(CROSSHAIR) && i == fl_cursor_col) { move(status_row - 1, i + 1); } else { printw(" "); } } } /* Clean up the OIA first, from a possible previous crosshair cursor. */ { int i; move(status_row, 0); attrset(defattr); for (i = 0; i < cursesCOLS - 1; i++) { printw(" "); } } attrset(A_REVERSE | defattr); mvprintw(status_row, 0, "4"); attrset(A_UNDERLINE | defattr); if (oia_undera) { printw("%c", IN_E? 'B': 'A'); } else { printw(" "); } attrset(A_REVERSE | defattr); if (IN_NVT) { printw("N"); } else if (oia_boxsolid) { printw(" "); } else if (IN_SSCP) { printw("S"); } else { printw("?"); } /* Figure out the status message. */ msg_attr = defattr; if (disabled_msg != NULL) { msg_attr = status_colors(defcolor_offset + COLOR_RED) | A_BOLD; status_msg_now = disabled_msg; reset_info(); } else if (scrolled_msg != NULL) { msg_attr = status_colors(defcolor_offset + COLOR_WHITE) | A_BOLD; status_msg_now = scrolled_msg; reset_info(); } else if (info_msg != NULL) { msg_attr = status_colors(defcolor_offset + COLOR_WHITE) | A_BOLD; status_msg_now = info_msg; set_info_timer(); } else if (other_msg != NULL) { status_msg_now = other_msg; msg_attr = other_attr; } else { status_msg_now = ""; } attrset(msg_attr); mvprintw(status_row, 7, "%-35.35s", status_msg_now); attrset(defattr); mvprintw(status_row, rmargin-35, "%c%c %c%c%c%c", oia_compose? 'C': ' ', oia_compose? oia_compose_char: ' ', status_ta? 'T': ' ', status_rm? 'R': ' ', status_im? 'I': ' ', oia_printer? 'P': ' '); if (status_secure != SS_INSECURE) { attrset(status_colors(defcolor_offset + ((status_secure == SS_SECURE)? COLOR_GREEN: COLOR_YELLOW)) | A_BOLD); printw("S"); attrset(defattr); } else { printw(" "); } printw("%c%c", oia_screentrace,oia_script); mvprintw(status_row, rmargin-25, "%s", oia_lu); mvprintw(status_row, rmargin-14, "%s", oia_timing); mvprintw(status_row, rmargin-7, "%03d/%03d ", cursor_addr/cCOLS + 1, cursor_addr%cCOLS + 1); /* Draw the crosshair in the OIA. */ if (toggled(CROSSHAIR) && cursor_col > 2 && (mvinch(status_row, fl_cursor_col) & A_CHARTEXT) == ' ') { draw_crosshair(vbar.u, vbar.acs); } } bool Redraw_action(ia_t ia, unsigned argc, const char **argv) { action_debug(AnRedraw, ia, argc, argv); if (check_argc(AnRedraw, argc, 0, 0) < 0) { return false; } if (!escaped) { endwin(); refresh(); } return true; } void ring_bell(void) { beep(); } void screen_flip(void) { flipped = !flipped; screen_disp(false); } bool screen_flipped(void) { return flipped; } #if defined(C3270_80_132) /*[*/ /* Alt/default screen spec parsing. */ static void parse_screen_spec(const char *str, struct screen_spec *spec) { char msbuf[3]; char *s, *t, c; bool escaped = false; if (sscanf(str, "%dx%d=%2s", &spec->rows, &spec->cols, msbuf) != 3) { fprintf(stderr, "Invalid screen screen spec '%s', must " "be 'x='\n", str); exit(1); } s = strchr(str, '=') + 1; spec->mode_switch = Malloc(strlen(s) + 1); t = spec->mode_switch; while ((c = *s++)) { if (escaped) { switch (c) { case 'E': *t++ = 0x1b; break; case 'n': *t++ = '\n'; break; case 'r': *t++ = '\r'; break; case 'b': *t++ = '\b'; break; case 't': *t++ = '\t'; break; case '\\': *t++ = '\\'; break; default: *t++ = c; break; } escaped = false; } else if (c == '\\') { escaped = true; } else { *t++ = c; } } *t = '\0'; } #endif /*]*/ void screen_132(void) { #if defined(C3270_80_132) /*[*/ if (cur_screen != alt_screen) { swap_screens(alt_screen); if (write(1, altscreen_spec.mode_switch, strlen(altscreen_spec.mode_switch)) < 0) { x3270_exit(1); } ctlr_erase(true); screen_disp(true); } #endif /*]*/ } void screen_80(void) { #if defined(C3270_80_132) /*[*/ if (cur_screen != def_screen) { swap_screens(def_screen); if (write(1, defscreen_spec.mode_switch, strlen(defscreen_spec.mode_switch)) < 0) { x3270_exit(1); } ctlr_erase(false); screen_disp(true); } #endif /*]*/ } /* * Translate an x3270 font line-drawing character (the first two rows of a * standard X11 fixed-width font) to a curses ACS character. * * Returns -1 if there is no translation. */ static int linedraw_to_acs(unsigned char c) { switch (c) { #if defined(ACS_BLOCK) /*[*/ case 0x0: return ACS_BLOCK; #endif /*]*/ #if defined(ACS_DIAMOND) /*[*/ case 0x1: return ACS_DIAMOND; #endif /*]*/ #if defined(ACS_CKBOARD) /*[*/ case 0x2: return ACS_CKBOARD; #endif /*]*/ #if defined(ACS_DEGREE) /*[*/ case 0x7: return ACS_DEGREE; #endif /*]*/ #if defined(ACS_PLMINUS) /*[*/ case 0x8: return ACS_PLMINUS; #endif /*]*/ #if defined(ACS_BOARD) /*[*/ case 0x9: return ACS_BOARD; #endif /*]*/ #if defined(ACS_LANTERN) /*[*/ case 0xa: return ACS_LANTERN; #endif /*]*/ #if defined(ACS_LRCORNER) /*[*/ case 0xb: return ACS_LRCORNER; #endif /*]*/ #if defined(ACS_URCORNER) /*[*/ case 0xc: return ACS_URCORNER; #endif /*]*/ #if defined(ACS_ULCORNER) /*[*/ case 0xd: return ACS_ULCORNER; #endif /*]*/ #if defined(ACS_LLCORNER) /*[*/ case 0xe: return ACS_LLCORNER; #endif /*]*/ #if defined(ACS_PLUS) /*[*/ case 0xf: return ACS_PLUS; #endif /*]*/ #if defined(ACS_S1) /*[*/ case 0x10: return ACS_S1; #endif /*]*/ #if defined(ACS_S3) /*[*/ case 0x11: return ACS_S3; #endif /*]*/ #if defined(ACS_HLINE) /*[*/ case 0x12: return ACS_HLINE; #endif /*]*/ #if defined(ACS_S7) /*[*/ case 0x13: return ACS_S7; #endif /*]*/ #if defined(ACS_S9) /*[*/ case 0x14: return ACS_S9; #endif /*]*/ #if defined(ACS_LTEE) /*[*/ case 0x15: return ACS_LTEE; #endif /*]*/ #if defined(ACS_RTEE) /*[*/ case 0x16: return ACS_RTEE; #endif /*]*/ #if defined(ACS_BTEE) /*[*/ case 0x17: return ACS_BTEE; #endif /*]*/ #if defined(ACS_TTEE) /*[*/ case 0x18: return ACS_TTEE; #endif /*]*/ #if defined(ACS_VLINE) /*[*/ case 0x19: return ACS_VLINE; #endif /*]*/ #if defined(ACS_LEQUAL) /*[*/ case 0x1a: return ACS_LEQUAL; #endif /*]*/ #if defined(ACS_GEQUAL) /*[*/ case 0x1b: return ACS_GEQUAL; #endif /*]*/ #if defined(ACS_PI) /*[*/ case 0x1c: return ACS_PI; #endif /*]*/ #if defined(ACS_NEQUAL) /*[*/ case 0x1d: return ACS_NEQUAL; #endif /*]*/ #if defined(ACS_STERLING) /*[*/ case 0x1e: return ACS_STERLING; #endif /*]*/ #if defined(ACS_BULLET) /*[*/ case 0x1f: return ACS_BULLET; #endif /*]*/ default: return -1; } } static void display_linedraw(ucs4_t u) { char mb[16]; int len; #if defined(CURSES_WIDE) /*[*/ if (appres.c3270.acs) #endif /*]*/ { /* Try ACS first. */ int c = linedraw_to_acs(u); if (c != -1) { addch(c); return; } } /* Then try Unicode. */ len = unicode_to_multibyte( linedraw_to_unicode(u, appres.c3270.ascii_box_draw), mb, sizeof(mb)); if (len > 0) { len--; } #if defined(CURSES_WIDE) /*[*/ addstr(mb); #else /*][*/ if (len > 1) { addch(mb[0] & 0xff); } else { addch(' '); } #endif /*]*/ } static int apl_to_acs(unsigned char c) { switch (c) { #if defined(ACS_DEGREE) /*[*/ case 0xaf: /* CG 0xd1 */ return ACS_DEGREE; #endif /*]*/ #if defined(ACS_LRCORNER) /*[*/ case 0xd4: /* CG 0xac */ return ACS_LRCORNER; #endif /*]*/ #if defined(ACS_URCORNER) /*[*/ case 0xd5: /* CG 0xad */ return ACS_URCORNER; #endif /*]*/ #if defined(ACS_ULCORNER) /*[*/ case 0xc5: /* CG 0xa4 */ return ACS_ULCORNER; #endif /*]*/ #if defined(ACS_LLCORNER) /*[*/ case 0xc4: /* CG 0xa3 */ return ACS_LLCORNER; #endif /*]*/ #if defined(ACS_PLUS) /*[*/ case 0xd3: /* CG 0xab */ return ACS_PLUS; #endif /*]*/ #if defined(ACS_HLINE) /*[*/ case 0xa2: /* CG 0x92 */ return ACS_HLINE; #endif /*]*/ #if defined(ACS_LTEE) /*[*/ case 0xc6: /* CG 0xa5 */ return ACS_LTEE; #endif /*]*/ #if defined(ACS_RTEE) /*[*/ case 0xd6: /* CG 0xae */ return ACS_RTEE; #endif /*]*/ #if defined(ACS_BTEE) /*[*/ case 0xc7: /* CG 0xa6 */ return ACS_BTEE; #endif /*]*/ #if defined(ACS_TTEE) /*[*/ case 0xd7: /* CG 0xaf */ return ACS_TTEE; #endif /*]*/ #if defined(ACS_VLINE) /*[*/ case 0x85: /* CG 0xa84? */ return ACS_VLINE; #endif /*]*/ #if defined(ACS_LEQUAL) /*[*/ case 0x8c: /* CG 0xf7 */ return ACS_LEQUAL; #endif /*]*/ #if defined(ACS_GEQUAL) /*[*/ case 0xae: /* CG 0xd9 */ return ACS_GEQUAL; #endif /*]*/ #if defined(ACS_NEQUAL) /*[*/ case 0xbe: /* CG 0x3e */ return ACS_NEQUAL; #endif /*]*/ #if defined(ACS_BULLET) /*[*/ case 0xa3: /* CG 0x93 */ return ACS_BULLET; #endif /*]*/ case 0xad: return '['; case 0xbd: return ']'; default: return -1; } } static void display_ge(unsigned char ebc) { int c; char mb[16]; int len; #if defined(CURSES_WIDE) /*[*/ if (appres.c3270.acs) #endif /*]*/ { /* Try UCS first. */ c = apl_to_acs(ebc); if (c != -1) { addch(c); return; } } /* Then try Unicode. */ len = ebcdic_to_multibyte_x(ebc, CS_GE, mb, sizeof(mb), EUO_BLANK_UNDEF | (appres.c3270.ascii_box_draw? EUO_ASCII_BOX: 0), NULL); if (len > 0) { len--; } #if defined(CURSES_WIDE) /*[*/ addstr(mb); #else /*][*/ if (len > 1) { addch(mb[0] & 0xff); } else { addch(' '); } #endif /*]*/ } void screen_final() { char *cl; if ((cl = tigetstr("clear")) != NULL) { putp(cl); } } /** * Check if an area of the screen is selected. * This is implemented by wc3270, but not c3270, so it is a stub here. * * @param[in] baddr Buffer address. */ bool screen_selected(int baddr _is_unused) { return false; } /** * Stub for scrollbar function. * * @param[in] top Where the top of the scrollbar should be (percentage) * @param[in] shown How much of the scrollbar to show (percentage) * @param[in] saved Number of lines saved * @param[in] screen Size of a screen * @param[in] back Number of lines scrolled back */ void screen_set_thumb(float top _is_unused, float shown _is_unused, int saved _is_unused, int screen _is_unused, int back _is_unused) { } /** * Enable or disable the cursor when scrolling. * * @param[in] on Enable (true) or disable (false) the cursor display. */ void enable_cursor(bool on) { if (initscr_done && !isendwin()) { curs_set(on? 1: 0); } } /** * Screen module registration. */ void screen_register(void) { static toggle_register_t toggles[] = { { MONOCASE, toggle_monocase, 0 }, { SHOW_TIMING, toggle_showTiming, 0 }, { UNDERSCORE, toggle_underscore, 0 }, { VISIBLE_CONTROL, toggle_visibleControl, 0 }, { CROSSHAIR, toggle_crosshair, 0 }, { TYPEAHEAD, NULL, 0 } }; static action_table_t screen_actions[] = { { AnRedraw, Redraw_action, ACTION_KE } }; /* Register the toggles. */ register_toggles(toggles, array_count(toggles)); /* Register for state changes. */ register_schange(ST_NEGOTIATING, status_connect); register_schange(ST_CONNECT, status_connect); register_schange(ST_3270_MODE, status_3270_mode); register_schange(ST_PRINTER, status_printer); /* Register the actions. */ register_actions(screen_actions, array_count(screen_actions)); } suite3270-4.1/c3270/version.txt000077700000000000000000000000001413735575200217072../Common/version.txtustar00rootroot00000000000000suite3270-4.1/c3270/x3270.man.m4000077700000000000000000000000001413735575200206312../Common/x3270.man.m4ustar00rootroot00000000000000suite3270-4.1/c3270/x3270_glue.expect000077700000000000000000000000001413735575200232552../Common/x3270_glue.expectustar00rootroot00000000000000suite3270-4.1/config.guess000077700000000000000000000000001413735575200211142Common/config.guessustar00rootroot00000000000000suite3270-4.1/config.sub000077700000000000000000000000001413735575200202222Common/config.subustar00rootroot00000000000000suite3270-4.1/configure000077500000000000000000003127751413735575200147650ustar00rootroot00000000000000#! /bin/sh # Guess values for system-dependent variables and create Makefiles. # Generated by GNU Autoconf 2.69 for suite3270 4.0. # # # Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc. # # # This configure script is free software; the Free Software Foundation # gives unlimited permission to copy, distribute and modify it. ## -------------------- ## ## M4sh Initialization. ## ## -------------------- ## # Be more Bourne compatible DUALCASE=1; export DUALCASE # for MKS sh if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST else case `(set -o) 2>/dev/null` in #( *posix*) : set -o posix ;; #( *) : ;; esac fi as_nl=' ' export as_nl # Printing a long string crashes Solaris 7 /usr/bin/printf. as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo # Prefer a ksh shell builtin over an external printf program on Solaris, # but without wasting forks for bash or zsh. if test -z "$BASH_VERSION$ZSH_VERSION" \ && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then as_echo='print -r --' as_echo_n='print -rn --' elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then as_echo='printf %s\n' as_echo_n='printf %s' else if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' as_echo_n='/usr/ucb/echo -n' else as_echo_body='eval expr "X$1" : "X\\(.*\\)"' as_echo_n_body='eval arg=$1; case $arg in #( *"$as_nl"*) expr "X$arg" : "X\\(.*\\)$as_nl"; arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; esac; expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" ' export as_echo_n_body as_echo_n='sh -c $as_echo_n_body as_echo' fi export as_echo_body as_echo='sh -c $as_echo_body as_echo' fi # The user is always right. if test "${PATH_SEPARATOR+set}" != set; then PATH_SEPARATOR=: (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || PATH_SEPARATOR=';' } fi # IFS # We need space, tab and new line, in precisely that order. Quoting is # there to prevent editors from complaining about space-tab. # (If _AS_PATH_WALK were called with IFS unset, it would disable word # splitting by setting IFS to empty value.) IFS=" "" $as_nl" # Find who we are. Look in the path if we contain no directory separator. as_myself= case $0 in #(( *[\\/]* ) as_myself=$0 ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break done IFS=$as_save_IFS ;; esac # We did not find ourselves, most probably we were run as `sh COMMAND' # in which case we are not to be found in the path. if test "x$as_myself" = x; then as_myself=$0 fi if test ! -f "$as_myself"; then $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 exit 1 fi # Unset variables that we do not need and which cause bugs (e.g. in # pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" # suppresses any "Segmentation fault" message there. '((' could # trigger a bug in pdksh 5.2.14. for as_var in BASH_ENV ENV MAIL MAILPATH do eval test x\${$as_var+set} = xset \ && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : done PS1='$ ' PS2='> ' PS4='+ ' # NLS nuisances. LC_ALL=C export LC_ALL LANGUAGE=C export LANGUAGE # CDPATH. (unset CDPATH) >/dev/null 2>&1 && unset CDPATH # Use a proper internal environment variable to ensure we don't fall # into an infinite loop, continuously re-executing ourselves. if test x"${_as_can_reexec}" != xno && test "x$CONFIG_SHELL" != x; then _as_can_reexec=no; export _as_can_reexec; # We cannot yet assume a decent shell, so we have to provide a # neutralization value for shells without unset; and this also # works around shells that cannot unset nonexistent variables. # Preserve -v and -x to the replacement shell. BASH_ENV=/dev/null ENV=/dev/null (unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV case $- in # (((( *v*x* | *x*v* ) as_opts=-vx ;; *v* ) as_opts=-v ;; *x* ) as_opts=-x ;; * ) as_opts= ;; esac exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} # Admittedly, this is quite paranoid, since all the known shells bail # out after a failed `exec'. $as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2 as_fn_exit 255 fi # We don't want this to propagate to other subprocesses. { _as_can_reexec=; unset _as_can_reexec;} if test "x$CONFIG_SHELL" = x; then as_bourne_compatible="if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on \${1+\"\$@\"}, which # is contrary to our usage. Disable this feature. alias -g '\${1+\"\$@\"}'='\"\$@\"' setopt NO_GLOB_SUBST else case \`(set -o) 2>/dev/null\` in #( *posix*) : set -o posix ;; #( *) : ;; esac fi " as_required="as_fn_return () { (exit \$1); } as_fn_success () { as_fn_return 0; } as_fn_failure () { as_fn_return 1; } as_fn_ret_success () { return 0; } as_fn_ret_failure () { return 1; } exitcode=0 as_fn_success || { exitcode=1; echo as_fn_success failed.; } as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; } as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; } as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; } if ( set x; as_fn_ret_success y && test x = \"\$1\" ); then : else exitcode=1; echo positional parameters were not saved. fi test x\$exitcode = x0 || exit 1 test -x / || exit 1" as_suggested=" as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" && test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1" if (eval "$as_required") 2>/dev/null; then : as_have_required=yes else as_have_required=no fi if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null; then : else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR as_found=false for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. as_found=: case $as_dir in #( /*) for as_base in sh bash ksh sh5; do # Try only shells that exist, to save several forks. as_shell=$as_dir/$as_base if { test -f "$as_shell" || test -f "$as_shell.exe"; } && { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$as_shell"; } 2>/dev/null; then : CONFIG_SHELL=$as_shell as_have_required=yes if { $as_echo "$as_bourne_compatible""$as_suggested" | as_run=a "$as_shell"; } 2>/dev/null; then : break 2 fi fi done;; esac as_found=false done $as_found || { if { test -f "$SHELL" || test -f "$SHELL.exe"; } && { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$SHELL"; } 2>/dev/null; then : CONFIG_SHELL=$SHELL as_have_required=yes fi; } IFS=$as_save_IFS if test "x$CONFIG_SHELL" != x; then : export CONFIG_SHELL # We cannot yet assume a decent shell, so we have to provide a # neutralization value for shells without unset; and this also # works around shells that cannot unset nonexistent variables. # Preserve -v and -x to the replacement shell. BASH_ENV=/dev/null ENV=/dev/null (unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV case $- in # (((( *v*x* | *x*v* ) as_opts=-vx ;; *v* ) as_opts=-v ;; *x* ) as_opts=-x ;; * ) as_opts= ;; esac exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} # Admittedly, this is quite paranoid, since all the known shells bail # out after a failed `exec'. $as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2 exit 255 fi if test x$as_have_required = xno; then : $as_echo "$0: This script requires a shell more modern than all" $as_echo "$0: the shells that I found on your system." if test x${ZSH_VERSION+set} = xset ; then $as_echo "$0: In particular, zsh $ZSH_VERSION has bugs and should" $as_echo "$0: be upgraded to zsh 4.3.4 or later." else $as_echo "$0: Please tell bug-autoconf@gnu.org about your system, $0: including any error possibly output before this $0: message. Then install a modern shell, or manually run $0: the script under such a shell if you do have one." fi exit 1 fi fi fi SHELL=${CONFIG_SHELL-/bin/sh} export SHELL # Unset more variables known to interfere with behavior of common tools. CLICOLOR_FORCE= GREP_OPTIONS= unset CLICOLOR_FORCE GREP_OPTIONS ## --------------------- ## ## M4sh Shell Functions. ## ## --------------------- ## # as_fn_unset VAR # --------------- # Portably unset VAR. as_fn_unset () { { eval $1=; unset $1;} } as_unset=as_fn_unset # as_fn_set_status STATUS # ----------------------- # Set $? to STATUS, without forking. as_fn_set_status () { return $1 } # as_fn_set_status # as_fn_exit STATUS # ----------------- # Exit the shell with STATUS, even in a "trap 0" or "set -e" context. as_fn_exit () { set +e as_fn_set_status $1 exit $1 } # as_fn_exit # as_fn_mkdir_p # ------------- # Create "$as_dir" as a directory, including parents if necessary. as_fn_mkdir_p () { case $as_dir in #( -*) as_dir=./$as_dir;; esac test -d "$as_dir" || eval $as_mkdir_p || { as_dirs= while :; do case $as_dir in #( *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( *) as_qdir=$as_dir;; esac as_dirs="'$as_qdir' $as_dirs" as_dir=`$as_dirname -- "$as_dir" || $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_dir" : 'X\(//\)[^/]' \| \ X"$as_dir" : 'X\(//\)$' \| \ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$as_dir" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` test -d "$as_dir" && break done test -z "$as_dirs" || eval "mkdir $as_dirs" } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" } # as_fn_mkdir_p # as_fn_executable_p FILE # ----------------------- # Test if FILE is an executable regular file. as_fn_executable_p () { test -f "$1" && test -x "$1" } # as_fn_executable_p # as_fn_append VAR VALUE # ---------------------- # Append the text in VALUE to the end of the definition contained in VAR. Take # advantage of any shell optimizations that allow amortized linear growth over # repeated appends, instead of the typical quadratic growth present in naive # implementations. if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : eval 'as_fn_append () { eval $1+=\$2 }' else as_fn_append () { eval $1=\$$1\$2 } fi # as_fn_append # as_fn_arith ARG... # ------------------ # Perform arithmetic evaluation on the ARGs, and store the result in the # global $as_val. Take advantage of shells that can avoid forks. The arguments # must be portable across $(()) and expr. if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : eval 'as_fn_arith () { as_val=$(( $* )) }' else as_fn_arith () { as_val=`expr "$@" || test $? -eq 1` } fi # as_fn_arith # as_fn_error STATUS ERROR [LINENO LOG_FD] # ---------------------------------------- # Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are # provided, also output the error to LOG_FD, referencing LINENO. Then exit the # script with STATUS, using 1 if that was 0. as_fn_error () { as_status=$1; test $as_status -eq 0 && as_status=1 if test "$4"; then as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 fi $as_echo "$as_me: error: $2" >&2 as_fn_exit $as_status } # as_fn_error if expr a : '\(a\)' >/dev/null 2>&1 && test "X`expr 00001 : '.*\(...\)'`" = X001; then as_expr=expr else as_expr=false fi if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then as_basename=basename else as_basename=false fi if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then as_dirname=dirname else as_dirname=false fi as_me=`$as_basename -- "$0" || $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ X"$0" : 'X\(//\)$' \| \ X"$0" : 'X\(/\)' \| . 2>/dev/null || $as_echo X/"$0" | sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/ q } /^X\/\(\/\/\)$/{ s//\1/ q } /^X\/\(\/\).*/{ s//\1/ q } s/.*/./; q'` # Avoid depending upon Character Ranges. as_cr_letters='abcdefghijklmnopqrstuvwxyz' as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' as_cr_Letters=$as_cr_letters$as_cr_LETTERS as_cr_digits='0123456789' as_cr_alnum=$as_cr_Letters$as_cr_digits as_lineno_1=$LINENO as_lineno_1a=$LINENO as_lineno_2=$LINENO as_lineno_2a=$LINENO eval 'test "x$as_lineno_1'$as_run'" != "x$as_lineno_2'$as_run'" && test "x`expr $as_lineno_1'$as_run' + 1`" = "x$as_lineno_2'$as_run'"' || { # Blame Lee E. McMahon (1931-1989) for sed's syntax. :-) sed -n ' p /[$]LINENO/= ' <$as_myself | sed ' s/[$]LINENO.*/&-/ t lineno b :lineno N :loop s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ t loop s/-\n.*// ' >$as_me.lineno && chmod +x "$as_me.lineno" || { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; } # If we had to re-execute with $CONFIG_SHELL, we're ensured to have # already done that, so ensure we don't try to do so again and fall # in an infinite loop. This has already happened in practice. _as_can_reexec=no; export _as_can_reexec # Don't try to exec as it changes $[0], causing all sort of problems # (the dirname of $[0] is not the place where we might find the # original and so on. Autoconf is especially sensitive to this). . "./$as_me.lineno" # Exit status is that of the last command. exit } ECHO_C= ECHO_N= ECHO_T= case `echo -n x` in #((((( -n*) case `echo 'xy\c'` in *c*) ECHO_T=' ';; # ECHO_T is single tab character. xy) ECHO_C='\c';; *) echo `echo ksh88 bug on AIX 6.1` > /dev/null ECHO_T=' ';; esac;; *) ECHO_N='-n';; esac rm -f conf$$ conf$$.exe conf$$.file if test -d conf$$.dir; then rm -f conf$$.dir/conf$$.file else rm -f conf$$.dir mkdir conf$$.dir 2>/dev/null fi if (echo >conf$$.file) 2>/dev/null; then if ln -s conf$$.file conf$$ 2>/dev/null; then as_ln_s='ln -s' # ... but there are two gotchas: # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. # In both cases, we have to default to `cp -pR'. ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || as_ln_s='cp -pR' elif ln conf$$.file conf$$ 2>/dev/null; then as_ln_s=ln else as_ln_s='cp -pR' fi else as_ln_s='cp -pR' fi rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file rmdir conf$$.dir 2>/dev/null if mkdir -p . 2>/dev/null; then as_mkdir_p='mkdir -p "$as_dir"' else test -d ./-p && rmdir ./-p as_mkdir_p=false fi as_test_x='test -x' as_executable_p=as_fn_executable_p # Sed expression to map a string onto a valid CPP name. as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" # Sed expression to map a string onto a valid variable name. as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" test -n "$DJDIR" || exec 7<&0 &1 # Name of the host. # hostname on some systems (SVR3.2, old GNU/Linux) returns a bogus exit status, # so uname gets run too. ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q` # # Initializations. # ac_default_prefix=/usr/local ac_clean_files= ac_config_libobj_dir=. LIBOBJS= cross_compiling=no subdirs= MFLAGS= MAKEFLAGS= # Identity of this package. PACKAGE_NAME='suite3270' PACKAGE_TARNAME='suite3270' PACKAGE_VERSION='4.0' PACKAGE_STRING='suite3270 4.0' PACKAGE_BUGREPORT='' PACKAGE_URL='' enable_option_checking=no ac_subst_vars='LTLIBOBJS LIBOBJS T_WINDOWS_CLOBBER T_WINDOWS_CLEAN T_UNIX_CLOBBER T_UNIX_CLEAN T_LIB_CLOBBER T_LIB_CLEAN T_LIB T_INSTALL_MAN T_INSTALL T_CLOBBER T_CLEAN T_ALL subdirs mingw32_found mingw64_found target_alias host_alias build_alias LIBS ECHO_T ECHO_N ECHO_C DEFS mandir localedir libdir psdir pdfdir dvidir htmldir infodir docdir oldincludedir includedir runstatedir localstatedir sharedstatedir sysconfdir datadir datarootdir libexecdir sbindir bindir program_transform_name prefix exec_prefix PACKAGE_URL PACKAGE_BUGREPORT PACKAGE_STRING PACKAGE_VERSION PACKAGE_TARNAME PACKAGE_NAME PATH_SEPARATOR SHELL' ac_subst_files='' ac_user_opts=' enable_option_checking enable_unix enable_windows enable_x3270 enable_c3270 enable_s3270 enable_b3270 enable_tcl3270 enable_pr3287 enable_x3270if enable_unix_lib enable_wc3270 enable_ws3270 enable_wb3270 enable_wpr3287 enable_wx3270if enable_windows_lib ' ac_precious_vars='build_alias host_alias target_alias' ac_subdirs_all='lib lib/w32xx x3270 c3270 s3270 b3270 tcl3270 pr3287 x3270if' # Initialize some variables set by options. ac_init_help= ac_init_version=false ac_unrecognized_opts= ac_unrecognized_sep= # The variables have the same names as the options, with # dashes changed to underlines. cache_file=/dev/null exec_prefix=NONE no_create= no_recursion= prefix=NONE program_prefix=NONE program_suffix=NONE program_transform_name=s,x,x, silent= site= srcdir= verbose= x_includes=NONE x_libraries=NONE # Installation directory options. # These are left unexpanded so users can "make install exec_prefix=/foo" # and all the variables that are supposed to be based on exec_prefix # by default will actually change. # Use braces instead of parens because sh, perl, etc. also accept them. # (The list follows the same order as the GNU Coding Standards.) bindir='${exec_prefix}/bin' sbindir='${exec_prefix}/sbin' libexecdir='${exec_prefix}/libexec' datarootdir='${prefix}/share' datadir='${datarootdir}' sysconfdir='${prefix}/etc' sharedstatedir='${prefix}/com' localstatedir='${prefix}/var' runstatedir='${localstatedir}/run' includedir='${prefix}/include' oldincludedir='/usr/include' docdir='${datarootdir}/doc/${PACKAGE_TARNAME}' infodir='${datarootdir}/info' htmldir='${docdir}' dvidir='${docdir}' pdfdir='${docdir}' psdir='${docdir}' libdir='${exec_prefix}/lib' localedir='${datarootdir}/locale' mandir='${datarootdir}/man' ac_prev= ac_dashdash= for ac_option do # If the previous option needs an argument, assign it. if test -n "$ac_prev"; then eval $ac_prev=\$ac_option ac_prev= continue fi case $ac_option in *=?*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;; *=) ac_optarg= ;; *) ac_optarg=yes ;; esac # Accept the important Cygnus configure options, so we can diagnose typos. case $ac_dashdash$ac_option in --) ac_dashdash=yes ;; -bindir | --bindir | --bindi | --bind | --bin | --bi) ac_prev=bindir ;; -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*) bindir=$ac_optarg ;; -build | --build | --buil | --bui | --bu) ac_prev=build_alias ;; -build=* | --build=* | --buil=* | --bui=* | --bu=*) build_alias=$ac_optarg ;; -cache-file | --cache-file | --cache-fil | --cache-fi \ | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) ac_prev=cache_file ;; -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) cache_file=$ac_optarg ;; --config-cache | -C) cache_file=config.cache ;; -datadir | --datadir | --datadi | --datad) ac_prev=datadir ;; -datadir=* | --datadir=* | --datadi=* | --datad=*) datadir=$ac_optarg ;; -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \ | --dataroo | --dataro | --datar) ac_prev=datarootdir ;; -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \ | --dataroot=* | --dataroo=* | --dataro=* | --datar=*) datarootdir=$ac_optarg ;; -disable-* | --disable-*) ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid feature name: $ac_useropt" ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "enable_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--disable-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval enable_$ac_useropt=no ;; -docdir | --docdir | --docdi | --doc | --do) ac_prev=docdir ;; -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*) docdir=$ac_optarg ;; -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv) ac_prev=dvidir ;; -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*) dvidir=$ac_optarg ;; -enable-* | --enable-*) ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid feature name: $ac_useropt" ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "enable_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--enable-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval enable_$ac_useropt=\$ac_optarg ;; -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ | --exec | --exe | --ex) ac_prev=exec_prefix ;; -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \ | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \ | --exec=* | --exe=* | --ex=*) exec_prefix=$ac_optarg ;; -gas | --gas | --ga | --g) # Obsolete; use --with-gas. with_gas=yes ;; -help | --help | --hel | --he | -h) ac_init_help=long ;; -help=r* | --help=r* | --hel=r* | --he=r* | -hr*) ac_init_help=recursive ;; -help=s* | --help=s* | --hel=s* | --he=s* | -hs*) ac_init_help=short ;; -host | --host | --hos | --ho) ac_prev=host_alias ;; -host=* | --host=* | --hos=* | --ho=*) host_alias=$ac_optarg ;; -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht) ac_prev=htmldir ;; -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \ | --ht=*) htmldir=$ac_optarg ;; -includedir | --includedir | --includedi | --included | --include \ | --includ | --inclu | --incl | --inc) ac_prev=includedir ;; -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \ | --includ=* | --inclu=* | --incl=* | --inc=*) includedir=$ac_optarg ;; -infodir | --infodir | --infodi | --infod | --info | --inf) ac_prev=infodir ;; -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*) infodir=$ac_optarg ;; -libdir | --libdir | --libdi | --libd) ac_prev=libdir ;; -libdir=* | --libdir=* | --libdi=* | --libd=*) libdir=$ac_optarg ;; -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \ | --libexe | --libex | --libe) ac_prev=libexecdir ;; -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \ | --libexe=* | --libex=* | --libe=*) libexecdir=$ac_optarg ;; -localedir | --localedir | --localedi | --localed | --locale) ac_prev=localedir ;; -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*) localedir=$ac_optarg ;; -localstatedir | --localstatedir | --localstatedi | --localstated \ | --localstate | --localstat | --localsta | --localst | --locals) ac_prev=localstatedir ;; -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*) localstatedir=$ac_optarg ;; -mandir | --mandir | --mandi | --mand | --man | --ma | --m) ac_prev=mandir ;; -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*) mandir=$ac_optarg ;; -nfp | --nfp | --nf) # Obsolete; use --without-fp. with_fp=no ;; -no-create | --no-create | --no-creat | --no-crea | --no-cre \ | --no-cr | --no-c | -n) no_create=yes ;; -no-recursion | --no-recursion | --no-recursio | --no-recursi \ | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) no_recursion=yes ;; -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \ | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \ | --oldin | --oldi | --old | --ol | --o) ac_prev=oldincludedir ;; -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \ | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \ | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*) oldincludedir=$ac_optarg ;; -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) ac_prev=prefix ;; -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) prefix=$ac_optarg ;; -program-prefix | --program-prefix | --program-prefi | --program-pref \ | --program-pre | --program-pr | --program-p) ac_prev=program_prefix ;; -program-prefix=* | --program-prefix=* | --program-prefi=* \ | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*) program_prefix=$ac_optarg ;; -program-suffix | --program-suffix | --program-suffi | --program-suff \ | --program-suf | --program-su | --program-s) ac_prev=program_suffix ;; -program-suffix=* | --program-suffix=* | --program-suffi=* \ | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*) program_suffix=$ac_optarg ;; -program-transform-name | --program-transform-name \ | --program-transform-nam | --program-transform-na \ | --program-transform-n | --program-transform- \ | --program-transform | --program-transfor \ | --program-transfo | --program-transf \ | --program-trans | --program-tran \ | --progr-tra | --program-tr | --program-t) ac_prev=program_transform_name ;; -program-transform-name=* | --program-transform-name=* \ | --program-transform-nam=* | --program-transform-na=* \ | --program-transform-n=* | --program-transform-=* \ | --program-transform=* | --program-transfor=* \ | --program-transfo=* | --program-transf=* \ | --program-trans=* | --program-tran=* \ | --progr-tra=* | --program-tr=* | --program-t=*) program_transform_name=$ac_optarg ;; -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd) ac_prev=pdfdir ;; -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*) pdfdir=$ac_optarg ;; -psdir | --psdir | --psdi | --psd | --ps) ac_prev=psdir ;; -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*) psdir=$ac_optarg ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil) silent=yes ;; -runstatedir | --runstatedir | --runstatedi | --runstated \ | --runstate | --runstat | --runsta | --runst | --runs \ | --run | --ru | --r) ac_prev=runstatedir ;; -runstatedir=* | --runstatedir=* | --runstatedi=* | --runstated=* \ | --runstate=* | --runstat=* | --runsta=* | --runst=* | --runs=* \ | --run=* | --ru=* | --r=*) runstatedir=$ac_optarg ;; -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) ac_prev=sbindir ;; -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ | --sbi=* | --sb=*) sbindir=$ac_optarg ;; -sharedstatedir | --sharedstatedir | --sharedstatedi \ | --sharedstated | --sharedstate | --sharedstat | --sharedsta \ | --sharedst | --shareds | --shared | --share | --shar \ | --sha | --sh) ac_prev=sharedstatedir ;; -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \ | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \ | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \ | --sha=* | --sh=*) sharedstatedir=$ac_optarg ;; -site | --site | --sit) ac_prev=site ;; -site=* | --site=* | --sit=*) site=$ac_optarg ;; -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) ac_prev=srcdir ;; -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) srcdir=$ac_optarg ;; -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \ | --syscon | --sysco | --sysc | --sys | --sy) ac_prev=sysconfdir ;; -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \ | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*) sysconfdir=$ac_optarg ;; -target | --target | --targe | --targ | --tar | --ta | --t) ac_prev=target_alias ;; -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) target_alias=$ac_optarg ;; -v | -verbose | --verbose | --verbos | --verbo | --verb) verbose=yes ;; -version | --version | --versio | --versi | --vers | -V) ac_init_version=: ;; -with-* | --with-*) ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid package name: $ac_useropt" ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "with_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--with-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval with_$ac_useropt=\$ac_optarg ;; -without-* | --without-*) ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid package name: $ac_useropt" ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "with_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--without-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval with_$ac_useropt=no ;; --x) # Obsolete; use --with-x. with_x=yes ;; -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \ | --x-incl | --x-inc | --x-in | --x-i) ac_prev=x_includes ;; -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \ | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*) x_includes=$ac_optarg ;; -x-libraries | --x-libraries | --x-librarie | --x-librari \ | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l) ac_prev=x_libraries ;; -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \ | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) x_libraries=$ac_optarg ;; -*) as_fn_error $? "unrecognized option: \`$ac_option' Try \`$0 --help' for more information" ;; *=*) ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='` # Reject names that are not valid shell variable names. case $ac_envvar in #( '' | [0-9]* | *[!_$as_cr_alnum]* ) as_fn_error $? "invalid variable name: \`$ac_envvar'" ;; esac eval $ac_envvar=\$ac_optarg export $ac_envvar ;; *) # FIXME: should be removed in autoconf 3.0. $as_echo "$as_me: WARNING: you should use --build, --host, --target" >&2 expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && $as_echo "$as_me: WARNING: invalid host type: $ac_option" >&2 : "${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}" ;; esac done if test -n "$ac_prev"; then ac_option=--`echo $ac_prev | sed 's/_/-/g'` as_fn_error $? "missing argument to $ac_option" fi if test -n "$ac_unrecognized_opts"; then case $enable_option_checking in no) ;; fatal) as_fn_error $? "unrecognized options: $ac_unrecognized_opts" ;; *) $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;; esac fi # Check all directory arguments for consistency. for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \ datadir sysconfdir sharedstatedir localstatedir includedir \ oldincludedir docdir infodir htmldir dvidir pdfdir psdir \ libdir localedir mandir runstatedir do eval ac_val=\$$ac_var # Remove trailing slashes. case $ac_val in */ ) ac_val=`expr "X$ac_val" : 'X\(.*[^/]\)' \| "X$ac_val" : 'X\(.*\)'` eval $ac_var=\$ac_val;; esac # Be sure to have absolute directory names. case $ac_val in [\\/$]* | ?:[\\/]* ) continue;; NONE | '' ) case $ac_var in *prefix ) continue;; esac;; esac as_fn_error $? "expected an absolute directory name for --$ac_var: $ac_val" done # There might be people who depend on the old broken behavior: `$host' # used to hold the argument of --host etc. # FIXME: To remove some day. build=$build_alias host=$host_alias target=$target_alias # FIXME: To remove some day. if test "x$host_alias" != x; then if test "x$build_alias" = x; then cross_compiling=maybe elif test "x$build_alias" != "x$host_alias"; then cross_compiling=yes fi fi ac_tool_prefix= test -n "$host_alias" && ac_tool_prefix=$host_alias- test "$silent" = yes && exec 6>/dev/null ac_pwd=`pwd` && test -n "$ac_pwd" && ac_ls_di=`ls -di .` && ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` || as_fn_error $? "working directory cannot be determined" test "X$ac_ls_di" = "X$ac_pwd_ls_di" || as_fn_error $? "pwd does not report name of working directory" # Find the source files, if location was not specified. if test -z "$srcdir"; then ac_srcdir_defaulted=yes # Try the directory containing this script, then the parent directory. ac_confdir=`$as_dirname -- "$as_myself" || $as_expr X"$as_myself" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_myself" : 'X\(//\)[^/]' \| \ X"$as_myself" : 'X\(//\)$' \| \ X"$as_myself" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$as_myself" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` srcdir=$ac_confdir if test ! -r "$srcdir/$ac_unique_file"; then srcdir=.. fi else ac_srcdir_defaulted=no fi if test ! -r "$srcdir/$ac_unique_file"; then test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .." as_fn_error $? "cannot find sources ($ac_unique_file) in $srcdir" fi ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work" ac_abs_confdir=`( cd "$srcdir" && test -r "./$ac_unique_file" || as_fn_error $? "$ac_msg" pwd)` # When building in place, set srcdir=. if test "$ac_abs_confdir" = "$ac_pwd"; then srcdir=. fi # Remove unnecessary trailing slashes from srcdir. # Double slashes in file names in object file debugging info # mess up M-x gdb in Emacs. case $srcdir in */) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;; esac for ac_var in $ac_precious_vars; do eval ac_env_${ac_var}_set=\${${ac_var}+set} eval ac_env_${ac_var}_value=\$${ac_var} eval ac_cv_env_${ac_var}_set=\${${ac_var}+set} eval ac_cv_env_${ac_var}_value=\$${ac_var} done # # Report the --help message. # if test "$ac_init_help" = "long"; then # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF \`configure' configures suite3270 4.0 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... To assign environment variables (e.g., CC, CFLAGS...), specify them as VAR=VALUE. See below for descriptions of some of the useful variables. Defaults for the options are specified in brackets. Configuration: -h, --help display this help and exit --help=short display options specific to this package --help=recursive display the short help of all the included packages -V, --version display version information and exit -q, --quiet, --silent do not print \`checking ...' messages --cache-file=FILE cache test results in FILE [disabled] -C, --config-cache alias for \`--cache-file=config.cache' -n, --no-create do not create output files --srcdir=DIR find the sources in DIR [configure dir or \`..'] Installation directories: --prefix=PREFIX install architecture-independent files in PREFIX [$ac_default_prefix] --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX [PREFIX] By default, \`make install' will install all the files in \`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify an installation prefix other than \`$ac_default_prefix' using \`--prefix', for instance \`--prefix=\$HOME'. For better control, use the options below. Fine tuning of the installation directories: --bindir=DIR user executables [EPREFIX/bin] --sbindir=DIR system admin executables [EPREFIX/sbin] --libexecdir=DIR program executables [EPREFIX/libexec] --sysconfdir=DIR read-only single-machine data [PREFIX/etc] --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] --localstatedir=DIR modifiable single-machine data [PREFIX/var] --runstatedir=DIR modifiable per-process data [LOCALSTATEDIR/run] --libdir=DIR object code libraries [EPREFIX/lib] --includedir=DIR C header files [PREFIX/include] --oldincludedir=DIR C header files for non-gcc [/usr/include] --datarootdir=DIR read-only arch.-independent data root [PREFIX/share] --datadir=DIR read-only architecture-independent data [DATAROOTDIR] --infodir=DIR info documentation [DATAROOTDIR/info] --localedir=DIR locale-dependent data [DATAROOTDIR/locale] --mandir=DIR man documentation [DATAROOTDIR/man] --docdir=DIR documentation root [DATAROOTDIR/doc/suite3270] --htmldir=DIR html documentation [DOCDIR] --dvidir=DIR dvi documentation [DOCDIR] --pdfdir=DIR pdf documentation [DOCDIR] --psdir=DIR ps documentation [DOCDIR] _ACEOF cat <<\_ACEOF _ACEOF fi if test -n "$ac_init_help"; then case $ac_init_help in short | recursive ) echo "Configuration of suite3270 4.0:";; esac cat <<\_ACEOF Optional Features: --disable-option-checking ignore unrecognized --enable/--with options --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) --enable-FEATURE[=ARG] include FEATURE [ARG=yes] --enable-unix build all Unix emulators --enable-windows build all Windows emulators --enable-x3270 build x3270 --enable-c3270 build c3270 --enable-s3270 build s3270 --enable-b3270 build b3270 --enable-tcl3270 build tcl3270 --enable-pr3287 build pr3287 --enable-x3270if build x3270if --enable-lib build Unix libraries --enable-wc3270 build wc3270 --enable-ws3270 build Windows s3270 --enable-wb3270 build Windows b3270 --enable-wpr3287 build Windows pr3287 --enable-wx3270if build Windows x3270if --enable-windows-lib build Windows libraries Report bugs to the package provider. _ACEOF ac_status=$? fi if test "$ac_init_help" = "recursive"; then # If there are subdirs, report their specific --help. for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue test -d "$ac_dir" || { cd "$srcdir" && ac_pwd=`pwd` && srcdir=. && test -d "$ac_dir"; } || continue ac_builddir=. case "$ac_dir" in .) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` # A ".." for each directory in $ac_dir_suffix. ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` case $ac_top_builddir_sub in "") ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; esac ;; esac ac_abs_top_builddir=$ac_pwd ac_abs_builddir=$ac_pwd$ac_dir_suffix # for backward compatibility: ac_top_builddir=$ac_top_build_prefix case $srcdir in .) # We are building in place. ac_srcdir=. ac_top_srcdir=$ac_top_builddir_sub ac_abs_top_srcdir=$ac_pwd ;; [\\/]* | ?:[\\/]* ) # Absolute name. ac_srcdir=$srcdir$ac_dir_suffix; ac_top_srcdir=$srcdir ac_abs_top_srcdir=$srcdir ;; *) # Relative name. ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix ac_top_srcdir=$ac_top_build_prefix$srcdir ac_abs_top_srcdir=$ac_pwd/$srcdir ;; esac ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix cd "$ac_dir" || { ac_status=$?; continue; } # Check for guested configure. if test -f "$ac_srcdir/configure.gnu"; then echo && $SHELL "$ac_srcdir/configure.gnu" --help=recursive elif test -f "$ac_srcdir/configure"; then echo && $SHELL "$ac_srcdir/configure" --help=recursive else $as_echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2 fi || ac_status=$? cd "$ac_pwd" || { ac_status=$?; break; } done fi test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF suite3270 configure 4.0 generated by GNU Autoconf 2.69 Copyright (C) 2012 Free Software Foundation, Inc. This configure script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it. _ACEOF exit fi ## ------------------------ ## ## Autoconf initialization. ## ## ------------------------ ## cat >config.log <<_ACEOF This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. It was created by suite3270 $as_me 4.0, which was generated by GNU Autoconf 2.69. Invocation command line was $ $0 $@ _ACEOF exec 5>>config.log { cat <<_ASUNAME ## --------- ## ## Platform. ## ## --------- ## hostname = `(hostname || uname -n) 2>/dev/null | sed 1q` uname -m = `(uname -m) 2>/dev/null || echo unknown` uname -r = `(uname -r) 2>/dev/null || echo unknown` uname -s = `(uname -s) 2>/dev/null || echo unknown` uname -v = `(uname -v) 2>/dev/null || echo unknown` /usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown` /bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown` /bin/arch = `(/bin/arch) 2>/dev/null || echo unknown` /usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown` /usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown` /usr/bin/hostinfo = `(/usr/bin/hostinfo) 2>/dev/null || echo unknown` /bin/machine = `(/bin/machine) 2>/dev/null || echo unknown` /usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown` /bin/universe = `(/bin/universe) 2>/dev/null || echo unknown` _ASUNAME as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. $as_echo "PATH: $as_dir" done IFS=$as_save_IFS } >&5 cat >&5 <<_ACEOF ## ----------- ## ## Core tests. ## ## ----------- ## _ACEOF # Keep a trace of the command line. # Strip out --no-create and --no-recursion so they do not pile up. # Strip out --silent because we don't want to record it for future runs. # Also quote any args containing shell meta-characters. # Make two passes to allow for proper duplicate-argument suppression. ac_configure_args= ac_configure_args0= ac_configure_args1= ac_must_keep_next=false for ac_pass in 1 2 do for ac_arg do case $ac_arg in -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil) continue ;; *\'*) ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; esac case $ac_pass in 1) as_fn_append ac_configure_args0 " '$ac_arg'" ;; 2) as_fn_append ac_configure_args1 " '$ac_arg'" if test $ac_must_keep_next = true; then ac_must_keep_next=false # Got value, back to normal. else case $ac_arg in *=* | --config-cache | -C | -disable-* | --disable-* \ | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \ | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \ | -with-* | --with-* | -without-* | --without-* | --x) case "$ac_configure_args0 " in "$ac_configure_args1"*" '$ac_arg' "* ) continue ;; esac ;; -* ) ac_must_keep_next=true ;; esac fi as_fn_append ac_configure_args " '$ac_arg'" ;; esac done done { ac_configure_args0=; unset ac_configure_args0;} { ac_configure_args1=; unset ac_configure_args1;} # When interrupted or exit'd, cleanup temporary files, and complete # config.log. We remove comments because anyway the quotes in there # would cause problems or look ugly. # WARNING: Use '\'' to represent an apostrophe within the trap. # WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug. trap 'exit_status=$? # Save into config.log some information that might help in debugging. { echo $as_echo "## ---------------- ## ## Cache variables. ## ## ---------------- ##" echo # The following way of writing the cache mishandles newlines in values, ( for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do eval ac_val=\$$ac_var case $ac_val in #( *${as_nl}*) case $ac_var in #( *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 $as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; esac case $ac_var in #( _ | IFS | as_nl) ;; #( BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( *) { eval $ac_var=; unset $ac_var;} ;; esac ;; esac done (set) 2>&1 | case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #( *${as_nl}ac_space=\ *) sed -n \ "s/'\''/'\''\\\\'\'''\''/g; s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p" ;; #( *) sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" ;; esac | sort ) echo $as_echo "## ----------------- ## ## Output variables. ## ## ----------------- ##" echo for ac_var in $ac_subst_vars do eval ac_val=\$$ac_var case $ac_val in *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; esac $as_echo "$ac_var='\''$ac_val'\''" done | sort echo if test -n "$ac_subst_files"; then $as_echo "## ------------------- ## ## File substitutions. ## ## ------------------- ##" echo for ac_var in $ac_subst_files do eval ac_val=\$$ac_var case $ac_val in *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; esac $as_echo "$ac_var='\''$ac_val'\''" done | sort echo fi if test -s confdefs.h; then $as_echo "## ----------- ## ## confdefs.h. ## ## ----------- ##" echo cat confdefs.h echo fi test "$ac_signal" != 0 && $as_echo "$as_me: caught signal $ac_signal" $as_echo "$as_me: exit $exit_status" } >&5 rm -f core *.core core.conftest.* && rm -f -r conftest* confdefs* conf$$* $ac_clean_files && exit $exit_status ' 0 for ac_signal in 1 2 13 15; do trap 'ac_signal='$ac_signal'; as_fn_exit 1' $ac_signal done ac_signal=0 # confdefs.h avoids OS command line length limits that DEFS can exceed. rm -f -r conftest* confdefs.h $as_echo "/* confdefs.h */" > confdefs.h # Predefined preprocessor variables. cat >>confdefs.h <<_ACEOF #define PACKAGE_NAME "$PACKAGE_NAME" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_TARNAME "$PACKAGE_TARNAME" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_VERSION "$PACKAGE_VERSION" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_STRING "$PACKAGE_STRING" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_URL "$PACKAGE_URL" _ACEOF # Let the site file select an alternate cache file if it wants to. # Prefer an explicitly selected file to automatically selected ones. ac_site_file1=NONE ac_site_file2=NONE if test -n "$CONFIG_SITE"; then # We do not want a PATH search for config.site. case $CONFIG_SITE in #(( -*) ac_site_file1=./$CONFIG_SITE;; */*) ac_site_file1=$CONFIG_SITE;; *) ac_site_file1=./$CONFIG_SITE;; esac elif test "x$prefix" != xNONE; then ac_site_file1=$prefix/share/config.site ac_site_file2=$prefix/etc/config.site else ac_site_file1=$ac_default_prefix/share/config.site ac_site_file2=$ac_default_prefix/etc/config.site fi for ac_site_file in "$ac_site_file1" "$ac_site_file2" do test "x$ac_site_file" = xNONE && continue if test /dev/null != "$ac_site_file" && test -r "$ac_site_file"; then { $as_echo "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5 $as_echo "$as_me: loading site script $ac_site_file" >&6;} sed 's/^/| /' "$ac_site_file" >&5 . "$ac_site_file" \ || { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "failed to load site script $ac_site_file See \`config.log' for more details" "$LINENO" 5; } fi done if test -r "$cache_file"; then # Some versions of bash will fail to source /dev/null (special files # actually), so we avoid doing that. DJGPP emulates it as a regular file. if test /dev/null != "$cache_file" && test -f "$cache_file"; then { $as_echo "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5 $as_echo "$as_me: loading cache $cache_file" >&6;} case $cache_file in [\\/]* | ?:[\\/]* ) . "$cache_file";; *) . "./$cache_file";; esac fi else { $as_echo "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5 $as_echo "$as_me: creating cache $cache_file" >&6;} >$cache_file fi # Check that the precious variables saved in the cache have kept the same # value. ac_cache_corrupted=false for ac_var in $ac_precious_vars; do eval ac_old_set=\$ac_cv_env_${ac_var}_set eval ac_new_set=\$ac_env_${ac_var}_set eval ac_old_val=\$ac_cv_env_${ac_var}_value eval ac_new_val=\$ac_env_${ac_var}_value case $ac_old_set,$ac_new_set in set,) { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 $as_echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} ac_cache_corrupted=: ;; ,set) { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was not set in the previous run" >&5 $as_echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} ac_cache_corrupted=: ;; ,);; *) if test "x$ac_old_val" != "x$ac_new_val"; then # differences in whitespace do not lead to failure. ac_old_val_w=`echo x $ac_old_val` ac_new_val_w=`echo x $ac_new_val` if test "$ac_old_val_w" != "$ac_new_val_w"; then { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' has changed since the previous run:" >&5 $as_echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} ac_cache_corrupted=: else { $as_echo "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5 $as_echo "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;} eval $ac_var=\$ac_old_val fi { $as_echo "$as_me:${as_lineno-$LINENO}: former value: \`$ac_old_val'" >&5 $as_echo "$as_me: former value: \`$ac_old_val'" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: current value: \`$ac_new_val'" >&5 $as_echo "$as_me: current value: \`$ac_new_val'" >&2;} fi;; esac # Pass precious variables to config.status. if test "$ac_new_set" = set; then case $ac_new_val in *\'*) ac_arg=$ac_var=`$as_echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; *) ac_arg=$ac_var=$ac_new_val ;; esac case " $ac_configure_args " in *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy. *) as_fn_append ac_configure_args " '$ac_arg'" ;; esac fi done if $ac_cache_corrupted; then { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5 $as_echo "$as_me: error: changes in the environment can compromise the build" >&2;} as_fn_error $? "run \`make distclean' and/or \`rm $cache_file' and start over" "$LINENO" 5 fi ## -------------------- ## ## Main body of script. ## ## -------------------- ## ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu # Check whether --enable-unix was given. if test "${enable_unix+set}" = set; then : enableval=$enable_unix; fi # Check whether --enable-windows was given. if test "${enable_windows+set}" = set; then : enableval=$enable_windows; fi # Check whether --enable-x3270 was given. if test "${enable_x3270+set}" = set; then : enableval=$enable_x3270; fi # Check whether --enable-c3270 was given. if test "${enable_c3270+set}" = set; then : enableval=$enable_c3270; fi # Check whether --enable-s3270 was given. if test "${enable_s3270+set}" = set; then : enableval=$enable_s3270; fi # Check whether --enable-b3270 was given. if test "${enable_b3270+set}" = set; then : enableval=$enable_b3270; fi # Check whether --enable-tcl3270 was given. if test "${enable_tcl3270+set}" = set; then : enableval=$enable_tcl3270; fi # Check whether --enable-pr3287 was given. if test "${enable_pr3287+set}" = set; then : enableval=$enable_pr3287; fi # Check whether --enable-x3270if was given. if test "${enable_x3270if+set}" = set; then : enableval=$enable_x3270if; fi # Check whether --enable-unix-lib was given. if test "${enable_unix_lib+set}" = set; then : enableval=$enable_unix_lib; fi # Check whether --enable-wc3270 was given. if test "${enable_wc3270+set}" = set; then : enableval=$enable_wc3270; fi # Check whether --enable-ws3270 was given. if test "${enable_ws3270+set}" = set; then : enableval=$enable_ws3270; fi # Check whether --enable-wb3270 was given. if test "${enable_wb3270+set}" = set; then : enableval=$enable_wb3270; fi # Check whether --enable-wpr3287 was given. if test "${enable_wpr3287+set}" = set; then : enableval=$enable_wpr3287; fi # Check whether --enable-wx3270if was given. if test "${enable_wx3270if+set}" = set; then : enableval=$enable_wx3270if; fi # Check whether --enable-windows-lib was given. if test "${enable_windows_lib+set}" = set; then : enableval=$enable_windows_lib; fi # Extract the first word of "x86_64-w64-mingw32-gcc", so it can be a program name with args. set dummy x86_64-w64-mingw32-gcc; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_mingw64_found+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$mingw64_found"; then ac_cv_prog_mingw64_found="$mingw64_found" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_mingw64_found="yes" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS test -z "$ac_cv_prog_mingw64_found" && ac_cv_prog_mingw64_found="no" fi fi mingw64_found=$ac_cv_prog_mingw64_found if test -n "$mingw64_found"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $mingw64_found" >&5 $as_echo "$mingw64_found" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi # Extract the first word of "i686-w64-mingw32-gcc", so it can be a program name with args. set dummy i686-w64-mingw32-gcc; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_mingw32_found+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$mingw32_found"; then ac_cv_prog_mingw32_found="$mingw32_found" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_mingw32_found="yes" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS test -z "$ac_cv_prog_mingw32_found" && ac_cv_prog_mingw32_found="no" fi fi mingw32_found=$ac_cv_prog_mingw32_found if test -n "$mingw32_found"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $mingw32_found" >&5 $as_echo "$mingw32_found" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$enable_unix" = xyes; then if test "x$enable_x3270" != xno; then enable_x3270=yes; fi if test "x$enable_c3270" != xno; then enable_c3270=yes; fi if test "x$enable_s3270" != xno; then enable_s3270=yes; fi if test "x$enable_b3270" != xno; then enable_b3270=yes; fi if test "x$enable_tcl3270" != xno; then enable_tcl3270=yes; fi if test "x$enable_pr3287" != xno; then enable_pr3287=yes; fi if test "x$enable_x3270if" != xno; then enable_x3270if=yes; fi fi if test "x$enable_unix" = xno; then enable_x3270=no enable_c3270=no enable_s3270=no enable_b3270=no enable_tcl3270=no enable_pr3287=no enable_x3270if=no fi if test "$mingw64_found" = "no" -o "$mingw32_found" = "no" then { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Disabling Windows cross-compile" >&5 $as_echo "$as_me: WARNING: Disabling Windows cross-compile" >&2;} enable_windows=no fi if test "x$enable_windows" = xyes; then if test "x$enable_wc3270" != xno; then enable_wc3270=yes; fi if test "x$enable_ws3270" != xno; then enable_ws3270=yes; fi if test "x$enable_wb3270" != xno; then enable_wb3270=yes; fi if test "x$enable_wpr3287" != xno; then enable_wpr3287=yes; fi if test "x$enable_wx3270if" != xno; then enable_wx3270if=yes; fi fi if test "x$enable_windows" = xno; then enable_wc3270=no enable_ws3270=no enable_wb3270=no enable_wpr3287=no enable_wx3270if=no enable_windows_lib=no fi if test "x$enable_x3270" = x -a \ "x$enable_c3270" = x -a \ "x$enable_s3270" = x -a \ "x$enable_b3270" = x -a \ "x$enable_tcl3270" = x -a \ "x$enable_pr3287" = x -a \ "x$enable_x3270if" = x -a \ "x$enable_unix_lib" = x -a \ "x$enable_wc3270" = x -a \ "x$enable_ws3270" = x -a \ "x$enable_wb3270" = x -a \ "x$enable_wpr3287" = x -a \ "x$enable_wx3270if" = x -a \ "x$enable_windows_lib" = x; then { $as_echo "$as_me:${as_lineno-$LINENO}: configuring all emulators... use --enable or --disable options to pick a subset" >&5 $as_echo "$as_me: configuring all emulators... use --enable or --disable options to pick a subset" >&6;} enable_x3270=yes enable_c3270=yes enable_s3270=yes enable_b3270=yes enable_tcl3270=yes enable_pr3287=yes enable_x3270if=yes enable_wc3270=yes enable_ws3270=yes enable_wb3270=yes enable_wpr3287=yes enable_wx3270if=yes fi lparen="(" rparen=")" if test "x$enable_x3270" != xyes -a \ "x$enable_c3270" != xyes -a \ "x$enable_s3270" != xyes -a \ "x$enable_b3270" != xyes -a \ "x$enable_tcl3270" != xyes -a \ "x$enable_pr3287" != xyes -a \ "x$enable_x3270if" != xyes -a \ "x$enable_unix_lib" != xyes -a \ "x$enable_wc3270" != xyes -a \ "x$enable_ws3270" != xyes -a \ "x$enable_wb3270" != xyes -a \ "x$enable_wpr3287" != xyes -a \ "x$enable_wx3270if" != xyes -a \ "x$enable_windows_lib" != xyes -a \ $lparen "x$enable_x3270" = xno -o \ "x$enable_c3270" = xno -o \ "x$enable_s3270" = xno -o \ "x$enable_b3270" = xno -o \ "x$enable_tcl3270" = xno -o \ "x$enable_pr3287" = xno -o \ "x$enable_x3270if" = xno -o \ "x$enable_unix_lib" = xno -o \ "x$enable_wc3270" = xno -o \ "x$enable_ws3270" = xno -o \ "x$enable_wb3270" = xno -o \ "x$enable_wpr3287" = xno -o \ "x$enable_wx3270if" = xno -o \ "x$enable_windows_lib" = xno $rparen; then if test "x$enable_x3270" != xno; then enable_x3270=yes; fi if test "x$enable_c3270" != xno; then enable_c3270=yes; fi if test "x$enable_s3270" != xno; then enable_s3270=yes; fi if test "x$enable_b3270" != xno; then enable_b3270=yes; fi if test "x$enable_tcl3270" != xno; then enable_tcl3270=yes; fi if test "x$enable_pr3287" != xno; then enable_pr3287=yes; fi if test "x$enable_x3270if" != xno; then enable_x3270if=yes; fi if test "x$enable_wc3270" != xno; then enable_wc3270=yes; fi if test "x$enable_ws3270" != xno; then enable_ws3270=yes; fi if test "x$enable_wb3270" != xno; then enable_wb3270=yes; fi if test "x$enable_wpr3287" != xno; then enable_wpr3287=yes; fi if test "x$enable_wx3270if" != xno; then enable_wx3270if=yes; fi fi if test "x$enable_tcl3270" = xyes; then enable_s3270=yes fi if test "x$enable_x3270" = xyes -o \ "x$enable_c3270" = xyes -o \ "x$enable_s3270" = xyes -o \ "x$enable_b3270" = xyes -o \ "x$enable_tcl3270" = xyes; then enable_x3270if=yes fi if test "x$enable_wc3270" = xyes -o \ "x$enable_ws3270" = xyes -o \ "x$enable_wb3270" = xyes; then enable_wx3270if=yes fi if test "x$enable_x3270" = xyes -o \ "x$enable_c3270" = xyes -o \ "x$enable_s3270" = xyes -o \ "x$enable_b3270" = xyes -o \ "x$enable_pr3287" = xyes; then enable_unix_lib=yes fi if test "x$enable_wc3270" = xyes -o \ "x$enable_ws3270" = xyes -o \ "x$enable_wb3270" = xyes -o \ "x$enable_wpr3287" = xyes; then enable_windows_lib=yes fi if test "x$enable_unix_lib" = xyes; then ac_aux_dir= for ac_dir in "$srcdir" "$srcdir/.." "$srcdir/../.."; do if test -f "$ac_dir/install-sh"; then ac_aux_dir=$ac_dir ac_install_sh="$ac_aux_dir/install-sh -c" break elif test -f "$ac_dir/install.sh"; then ac_aux_dir=$ac_dir ac_install_sh="$ac_aux_dir/install.sh -c" break elif test -f "$ac_dir/shtool"; then ac_aux_dir=$ac_dir ac_install_sh="$ac_aux_dir/shtool install -c" break fi done if test -z "$ac_aux_dir"; then as_fn_error $? "cannot find install-sh, install.sh, or shtool in \"$srcdir\" \"$srcdir/..\" \"$srcdir/../..\"" "$LINENO" 5 fi # These three variables are undocumented and unsupported, # and are intended to be withdrawn in a future Autoconf release. # They can cause serious problems if a builder's source tree is in a directory # whose full name contains unusual characters. ac_config_guess="$SHELL $ac_aux_dir/config.guess" # Please don't use this var. ac_config_sub="$SHELL $ac_aux_dir/config.sub" # Please don't use this var. ac_configure="$SHELL $ac_aux_dir/configure" # Please don't use this var. subdirs="$subdirs lib" fi if test "x$enable_windows_lib" = xyes; then subdirs="$subdirs lib/w32xx" fi T_ALL="" T_CLEAN="" T_CLOBBER="" T_INSTALL="" T_INSTALL_MAN="" T_LIB="" T_LIB_CLEAN="" T_LIB_CLOBBER="" T_UNIX_CLEAN="" T_UNIX_CLOBBER="" T_WINDOWS_CLEAN="" T_WINDOWS_CLOBBER="" for i in x3270 c3270 s3270 b3270 tcl3270 pr3287 x3270if wc3270 ws3270 wb3270 wc3270 wpr3287 wx3270if; do eval x=\$enable_$i if test "x$x" = xyes; then T_ALL="$T_ALL $i" T_CLEAN="$T_CLEAN $i-clean" T_CLOBBER="$T_CLOBBER $i-clobber" case "$i" in w*) ;; *) T_INSTALL="$T_INSTALL $i-install" T_INSTALL_MAN="$T_INSTALL_MAN $i-install.man" esac fi done if test "x$enable_unix_lib" = xyes; then T_CLEAN="$T_CLEAN unix-lib-clean" T_CLOBBER="$T_CLOBBER unix-lib-clobber" T_LIB="$T_LIB unix-lib" T_LIB_CLEAN="$T_LIB_CLEAN unix-lib-clean" T_LIB_CLOBBER="$T_LIB_CLOBBER unix-lib-clobber" T_UNIX_CLEAN="$T_UNIX_CLEAN unix-lib-clean" T_UNIX_CLOBBER="$T_UNIX_CLOBBER unix-lib-clobber" fi if test "x$enable_windows_lib" = xyes; then T_CLEAN="$T_CLEAN windows-lib-clean" T_CLOBBER="$T_CLOBBER windows-lib-clobber" T_LIB="$T_LIB windows-lib" T_LIB_CLEAN="$T_LIB_CLEAN windows-lib-clean" T_LIB_CLOBBER="$T_LIB_CLOBBER windows-lib-clobber" T_WINDOWS_CLEAN="$T_WINDOWS_CLEAN windows-lib-clean" T_WINDOWS_CLOBBER="$T_WINDOWS_CLOBBER windows-lib-clobber" fi if test "x$enable_x3270" = xyes; then subdirs="$subdirs x3270" T_UNIX_CLEAN="$T_UNIX_CLEAN x3270-clean" T_UNIX_CLOBBER="$T_UNIX_CLOBBER x3270-clobber" fi if test "x$enable_c3270" = xyes; then subdirs="$subdirs c3270" T_UNIX_CLEAN="$T_UNIX_CLEAN c3270-clean" T_UNIX_CLOBBER="$T_UNIX_CLOBBER c3270-clobber" fi if test "x$enable_s3270" = xyes; then subdirs="$subdirs s3270" T_UNIX_CLEAN="$T_UNIX_CLEAN s3270-clean" T_UNIX_CLOBBER="$T_UNIX_CLOBBER s3270-clobber" fi if test "x$enable_b3270" = xyes; then subdirs="$subdirs b3270" T_UNIX_CLEAN="$T_UNIX_CLEAN b3270-clean" T_UNIX_CLOBBER="$T_UNIX_CLOBBER b3270-clobber" fi if test "x$enable_tcl3270" = xyes; then subdirs="$subdirs tcl3270" T_UNIX_CLEAN="$T_UNIX_CLEAN tcl3270-clean" T_UNIX_CLOBBER="$T_UNIX_CLOBBER tcl3270-clobber" fi if test "x$enable_pr3287" = xyes; then subdirs="$subdirs pr3287" T_UNIX_CLEAN="$T_UNIX_CLEAN pr3287-clean" T_UNIX_CLOBBER="$T_UNIX_CLOBBER pr3287-clobber" fi if test "x$enable_x3270if" = xyes; then subdirs="$subdirs x3270if" T_UNIX_CLEAN="$T_UNIX_CLEAN x3270if-clean" T_UNIX_CLOBBER="$T_UNIX_CLOBBER x3270if-clobber" fi if test "x$enable_wc3270" = xyes; then T_WINDOWS_CLEAN="$T_WINDOWS_CLEAN wc3270-clean" T_WINDOWS_CLOBBER="$T_WINDOWS_CLOBBER wc3270-clobber" fi if test "x$enable_ws3270" = xyes; then T_WINDOWS_CLEAN="$T_WINDOWS_CLEAN ws3270-clean" T_WINDOWS_CLOBBER="$T_WINDOWS_CLOBBER ws3270-clobber" fi if test "x$enable_wb3270" = xyes; then T_WINDOWS_CLEAN="$T_WINDOWS_CLEAN wb3270-clean" T_WINDOWS_CLOBBER="$T_WINDOWS_CLOBBER wb3270-clobber" fi if test "x$enable_wpr3287" = xyes; then T_WINDOWS_CLEAN="$T_WINDOWS_CLEAN wpr3287-clean" T_WINDOWS_CLOBBER="$T_WINDOWS_CLOBBER wpr3287-clobber" fi if test "x$enable_wx3270if" = xyes; then T_WINDOWS_CLEAN="$T_WINDOWS_CLEAN wwx3270if-clean" T_WINDOWS_CLOBBER="$T_WINDOWS_CLOBBER wwx3270if-clobber" fi ac_config_files="$ac_config_files Makefile" cat >confcache <<\_ACEOF # This file is a shell script that caches the results of configure # tests run on this system so they can be shared between configure # scripts and configure runs, see configure's option --config-cache. # It is not useful on other systems. If it contains results you don't # want to keep, you may remove or edit it. # # config.status only pays attention to the cache file if you give it # the --recheck option to rerun configure. # # `ac_cv_env_foo' variables (set or unset) will be overridden when # loading this file, other *unset* `ac_cv_foo' will be assigned the # following values. _ACEOF # The following way of writing the cache mishandles newlines in values, # but we know of no workaround that is simple, portable, and efficient. # So, we kill variables containing newlines. # Ultrix sh set writes to stderr and can't be redirected directly, # and sets the high bit in the cache file unless we assign to the vars. ( for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do eval ac_val=\$$ac_var case $ac_val in #( *${as_nl}*) case $ac_var in #( *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 $as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; esac case $ac_var in #( _ | IFS | as_nl) ;; #( BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( *) { eval $ac_var=; unset $ac_var;} ;; esac ;; esac done (set) 2>&1 | case $as_nl`(ac_space=' '; set) 2>&1` in #( *${as_nl}ac_space=\ *) # `set' does not quote correctly, so add quotes: double-quote # substitution turns \\\\ into \\, and sed turns \\ into \. sed -n \ "s/'/'\\\\''/g; s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" ;; #( *) # `set' quotes correctly as required by POSIX, so do not add quotes. sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" ;; esac | sort ) | sed ' /^ac_cv_env_/b end t clear :clear s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/ t end s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ :end' >>confcache if diff "$cache_file" confcache >/dev/null 2>&1; then :; else if test -w "$cache_file"; then if test "x$cache_file" != "x/dev/null"; then { $as_echo "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5 $as_echo "$as_me: updating cache $cache_file" >&6;} if test ! -f "$cache_file" || test -h "$cache_file"; then cat confcache >"$cache_file" else case $cache_file in #( */* | ?:*) mv -f confcache "$cache_file"$$ && mv -f "$cache_file"$$ "$cache_file" ;; #( *) mv -f confcache "$cache_file" ;; esac fi fi else { $as_echo "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5 $as_echo "$as_me: not updating unwritable cache $cache_file" >&6;} fi fi rm -f confcache test "x$prefix" = xNONE && prefix=$ac_default_prefix # Let make expand exec_prefix. test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' # Transform confdefs.h into DEFS. # Protect against shell expansion while executing Makefile rules. # Protect against Makefile macro expansion. # # If the first sed substitution is executed (which looks for macros that # take arguments), then branch to the quote section. Otherwise, # look for a macro that doesn't take arguments. ac_script=' :mline /\\$/{ N s,\\\n,, b mline } t clear :clear s/^[ ]*#[ ]*define[ ][ ]*\([^ (][^ (]*([^)]*)\)[ ]*\(.*\)/-D\1=\2/g t quote s/^[ ]*#[ ]*define[ ][ ]*\([^ ][^ ]*\)[ ]*\(.*\)/-D\1=\2/g t quote b any :quote s/[ `~#$^&*(){}\\|;'\''"<>?]/\\&/g s/\[/\\&/g s/\]/\\&/g s/\$/$$/g H :any ${ g s/^\n// s/\n/ /g p } ' DEFS=`sed -n "$ac_script" confdefs.h` ac_libobjs= ac_ltlibobjs= U= for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue # 1. Remove the extension, and $U if already installed. ac_script='s/\$U\././;s/\.o$//;s/\.obj$//' ac_i=`$as_echo "$ac_i" | sed "$ac_script"` # 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR # will be set to the directory where LIBOBJS objects are built. as_fn_append ac_libobjs " \${LIBOBJDIR}$ac_i\$U.$ac_objext" as_fn_append ac_ltlibobjs " \${LIBOBJDIR}$ac_i"'$U.lo' done LIBOBJS=$ac_libobjs LTLIBOBJS=$ac_ltlibobjs : "${CONFIG_STATUS=./config.status}" ac_write_fail=0 ac_clean_files_save=$ac_clean_files ac_clean_files="$ac_clean_files $CONFIG_STATUS" { $as_echo "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5 $as_echo "$as_me: creating $CONFIG_STATUS" >&6;} as_write_fail=0 cat >$CONFIG_STATUS <<_ASEOF || as_write_fail=1 #! $SHELL # Generated by $as_me. # Run this file to recreate the current configuration. # Compiler output produced by configure, useful for debugging # configure, is in config.log if it exists. debug=false ac_cs_recheck=false ac_cs_silent=false SHELL=\${CONFIG_SHELL-$SHELL} export SHELL _ASEOF cat >>$CONFIG_STATUS <<\_ASEOF || as_write_fail=1 ## -------------------- ## ## M4sh Initialization. ## ## -------------------- ## # Be more Bourne compatible DUALCASE=1; export DUALCASE # for MKS sh if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST else case `(set -o) 2>/dev/null` in #( *posix*) : set -o posix ;; #( *) : ;; esac fi as_nl=' ' export as_nl # Printing a long string crashes Solaris 7 /usr/bin/printf. as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo # Prefer a ksh shell builtin over an external printf program on Solaris, # but without wasting forks for bash or zsh. if test -z "$BASH_VERSION$ZSH_VERSION" \ && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then as_echo='print -r --' as_echo_n='print -rn --' elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then as_echo='printf %s\n' as_echo_n='printf %s' else if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' as_echo_n='/usr/ucb/echo -n' else as_echo_body='eval expr "X$1" : "X\\(.*\\)"' as_echo_n_body='eval arg=$1; case $arg in #( *"$as_nl"*) expr "X$arg" : "X\\(.*\\)$as_nl"; arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; esac; expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" ' export as_echo_n_body as_echo_n='sh -c $as_echo_n_body as_echo' fi export as_echo_body as_echo='sh -c $as_echo_body as_echo' fi # The user is always right. if test "${PATH_SEPARATOR+set}" != set; then PATH_SEPARATOR=: (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || PATH_SEPARATOR=';' } fi # IFS # We need space, tab and new line, in precisely that order. Quoting is # there to prevent editors from complaining about space-tab. # (If _AS_PATH_WALK were called with IFS unset, it would disable word # splitting by setting IFS to empty value.) IFS=" "" $as_nl" # Find who we are. Look in the path if we contain no directory separator. as_myself= case $0 in #(( *[\\/]* ) as_myself=$0 ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break done IFS=$as_save_IFS ;; esac # We did not find ourselves, most probably we were run as `sh COMMAND' # in which case we are not to be found in the path. if test "x$as_myself" = x; then as_myself=$0 fi if test ! -f "$as_myself"; then $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 exit 1 fi # Unset variables that we do not need and which cause bugs (e.g. in # pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" # suppresses any "Segmentation fault" message there. '((' could # trigger a bug in pdksh 5.2.14. for as_var in BASH_ENV ENV MAIL MAILPATH do eval test x\${$as_var+set} = xset \ && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : done PS1='$ ' PS2='> ' PS4='+ ' # NLS nuisances. LC_ALL=C export LC_ALL LANGUAGE=C export LANGUAGE # CDPATH. (unset CDPATH) >/dev/null 2>&1 && unset CDPATH # as_fn_error STATUS ERROR [LINENO LOG_FD] # ---------------------------------------- # Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are # provided, also output the error to LOG_FD, referencing LINENO. Then exit the # script with STATUS, using 1 if that was 0. as_fn_error () { as_status=$1; test $as_status -eq 0 && as_status=1 if test "$4"; then as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 fi $as_echo "$as_me: error: $2" >&2 as_fn_exit $as_status } # as_fn_error # as_fn_set_status STATUS # ----------------------- # Set $? to STATUS, without forking. as_fn_set_status () { return $1 } # as_fn_set_status # as_fn_exit STATUS # ----------------- # Exit the shell with STATUS, even in a "trap 0" or "set -e" context. as_fn_exit () { set +e as_fn_set_status $1 exit $1 } # as_fn_exit # as_fn_unset VAR # --------------- # Portably unset VAR. as_fn_unset () { { eval $1=; unset $1;} } as_unset=as_fn_unset # as_fn_append VAR VALUE # ---------------------- # Append the text in VALUE to the end of the definition contained in VAR. Take # advantage of any shell optimizations that allow amortized linear growth over # repeated appends, instead of the typical quadratic growth present in naive # implementations. if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : eval 'as_fn_append () { eval $1+=\$2 }' else as_fn_append () { eval $1=\$$1\$2 } fi # as_fn_append # as_fn_arith ARG... # ------------------ # Perform arithmetic evaluation on the ARGs, and store the result in the # global $as_val. Take advantage of shells that can avoid forks. The arguments # must be portable across $(()) and expr. if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : eval 'as_fn_arith () { as_val=$(( $* )) }' else as_fn_arith () { as_val=`expr "$@" || test $? -eq 1` } fi # as_fn_arith if expr a : '\(a\)' >/dev/null 2>&1 && test "X`expr 00001 : '.*\(...\)'`" = X001; then as_expr=expr else as_expr=false fi if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then as_basename=basename else as_basename=false fi if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then as_dirname=dirname else as_dirname=false fi as_me=`$as_basename -- "$0" || $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ X"$0" : 'X\(//\)$' \| \ X"$0" : 'X\(/\)' \| . 2>/dev/null || $as_echo X/"$0" | sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/ q } /^X\/\(\/\/\)$/{ s//\1/ q } /^X\/\(\/\).*/{ s//\1/ q } s/.*/./; q'` # Avoid depending upon Character Ranges. as_cr_letters='abcdefghijklmnopqrstuvwxyz' as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' as_cr_Letters=$as_cr_letters$as_cr_LETTERS as_cr_digits='0123456789' as_cr_alnum=$as_cr_Letters$as_cr_digits ECHO_C= ECHO_N= ECHO_T= case `echo -n x` in #((((( -n*) case `echo 'xy\c'` in *c*) ECHO_T=' ';; # ECHO_T is single tab character. xy) ECHO_C='\c';; *) echo `echo ksh88 bug on AIX 6.1` > /dev/null ECHO_T=' ';; esac;; *) ECHO_N='-n';; esac rm -f conf$$ conf$$.exe conf$$.file if test -d conf$$.dir; then rm -f conf$$.dir/conf$$.file else rm -f conf$$.dir mkdir conf$$.dir 2>/dev/null fi if (echo >conf$$.file) 2>/dev/null; then if ln -s conf$$.file conf$$ 2>/dev/null; then as_ln_s='ln -s' # ... but there are two gotchas: # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. # In both cases, we have to default to `cp -pR'. ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || as_ln_s='cp -pR' elif ln conf$$.file conf$$ 2>/dev/null; then as_ln_s=ln else as_ln_s='cp -pR' fi else as_ln_s='cp -pR' fi rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file rmdir conf$$.dir 2>/dev/null # as_fn_mkdir_p # ------------- # Create "$as_dir" as a directory, including parents if necessary. as_fn_mkdir_p () { case $as_dir in #( -*) as_dir=./$as_dir;; esac test -d "$as_dir" || eval $as_mkdir_p || { as_dirs= while :; do case $as_dir in #( *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( *) as_qdir=$as_dir;; esac as_dirs="'$as_qdir' $as_dirs" as_dir=`$as_dirname -- "$as_dir" || $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_dir" : 'X\(//\)[^/]' \| \ X"$as_dir" : 'X\(//\)$' \| \ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$as_dir" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` test -d "$as_dir" && break done test -z "$as_dirs" || eval "mkdir $as_dirs" } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" } # as_fn_mkdir_p if mkdir -p . 2>/dev/null; then as_mkdir_p='mkdir -p "$as_dir"' else test -d ./-p && rmdir ./-p as_mkdir_p=false fi # as_fn_executable_p FILE # ----------------------- # Test if FILE is an executable regular file. as_fn_executable_p () { test -f "$1" && test -x "$1" } # as_fn_executable_p as_test_x='test -x' as_executable_p=as_fn_executable_p # Sed expression to map a string onto a valid CPP name. as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" # Sed expression to map a string onto a valid variable name. as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" exec 6>&1 ## ----------------------------------- ## ## Main body of $CONFIG_STATUS script. ## ## ----------------------------------- ## _ASEOF test $as_write_fail = 0 && chmod +x $CONFIG_STATUS || ac_write_fail=1 cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # Save the log message, to keep $0 and so on meaningful, and to # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" This file was extended by suite3270 $as_me 4.0, which was generated by GNU Autoconf 2.69. Invocation command line was CONFIG_FILES = $CONFIG_FILES CONFIG_HEADERS = $CONFIG_HEADERS CONFIG_LINKS = $CONFIG_LINKS CONFIG_COMMANDS = $CONFIG_COMMANDS $ $0 $@ on `(hostname || uname -n) 2>/dev/null | sed 1q` " _ACEOF case $ac_config_files in *" "*) set x $ac_config_files; shift; ac_config_files=$*;; esac cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 # Files that config.status was made for. config_files="$ac_config_files" _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 ac_cs_usage="\ \`$as_me' instantiates files and other configuration actions from templates according to the current configuration. Unless the files and actions are specified as TAGs, all are instantiated by default. Usage: $0 [OPTION]... [TAG]... -h, --help print this help, then exit -V, --version print version number and configuration settings, then exit --config print configuration, then exit -q, --quiet, --silent do not print progress messages -d, --debug don't remove temporary files --recheck update $as_me by reconfiguring in the same conditions --file=FILE[:TEMPLATE] instantiate the configuration file FILE Configuration files: $config_files Report bugs to the package provider." _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" ac_cs_version="\\ suite3270 config.status 4.0 configured by $0, generated by GNU Autoconf 2.69, with options \\"\$ac_cs_config\\" Copyright (C) 2012 Free Software Foundation, Inc. This config.status script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it." ac_pwd='$ac_pwd' srcdir='$srcdir' test -n "\$AWK" || AWK=awk _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # The default lists apply if the user does not specify any file. ac_need_defaults=: while test $# != 0 do case $1 in --*=?*) ac_option=`expr "X$1" : 'X\([^=]*\)='` ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'` ac_shift=: ;; --*=) ac_option=`expr "X$1" : 'X\([^=]*\)='` ac_optarg= ac_shift=: ;; *) ac_option=$1 ac_optarg=$2 ac_shift=shift ;; esac case $ac_option in # Handling of the options. -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) ac_cs_recheck=: ;; --version | --versio | --versi | --vers | --ver | --ve | --v | -V ) $as_echo "$ac_cs_version"; exit ;; --config | --confi | --conf | --con | --co | --c ) $as_echo "$ac_cs_config"; exit ;; --debug | --debu | --deb | --de | --d | -d ) debug=: ;; --file | --fil | --fi | --f ) $ac_shift case $ac_optarg in *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; '') as_fn_error $? "missing file argument" ;; esac as_fn_append CONFIG_FILES " '$ac_optarg'" ac_need_defaults=false;; --he | --h | --help | --hel | -h ) $as_echo "$ac_cs_usage"; exit ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil | --si | --s) ac_cs_silent=: ;; # This is an error. -*) as_fn_error $? "unrecognized option: \`$1' Try \`$0 --help' for more information." ;; *) as_fn_append ac_config_targets " $1" ac_need_defaults=false ;; esac shift done ac_configure_extra_args= if $ac_cs_silent; then exec 6>/dev/null ac_configure_extra_args="$ac_configure_extra_args --silent" fi _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 if \$ac_cs_recheck; then set X $SHELL '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion shift \$as_echo "running CONFIG_SHELL=$SHELL \$*" >&6 CONFIG_SHELL='$SHELL' export CONFIG_SHELL exec "\$@" fi _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 exec 5>>config.log { echo sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX ## Running $as_me. ## _ASBOX $as_echo "$ac_log" } >&5 _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # Handling of arguments. for ac_config_target in $ac_config_targets do case $ac_config_target in "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;; *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;; esac done # If the user did not use the arguments to specify the items to instantiate, # then the envvar interface is used. Set only those that are not. # We use the long form for the default assignment because of an extremely # bizarre bug on SunOS 4.1.3. if $ac_need_defaults; then test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files fi # Have a temporary directory for convenience. Make it in the build tree # simply because there is no reason against having it here, and in addition, # creating and moving files from /tmp can sometimes cause problems. # Hook for its removal unless debugging. # Note that there is a small window in which the directory will not be cleaned: # after its creation but before its name has been assigned to `$tmp'. $debug || { tmp= ac_tmp= trap 'exit_status=$? : "${ac_tmp:=$tmp}" { test ! -d "$ac_tmp" || rm -fr "$ac_tmp"; } && exit $exit_status ' 0 trap 'as_fn_exit 1' 1 2 13 15 } # Create a (secure) tmp directory for tmp files. { tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` && test -d "$tmp" } || { tmp=./conf$$-$RANDOM (umask 077 && mkdir "$tmp") } || as_fn_error $? "cannot create a temporary directory in ." "$LINENO" 5 ac_tmp=$tmp # Set up the scripts for CONFIG_FILES section. # No need to generate them if there are no CONFIG_FILES. # This happens for instance with `./config.status config.h'. if test -n "$CONFIG_FILES"; then ac_cr=`echo X | tr X '\015'` # On cygwin, bash can eat \r inside `` if the user requested igncr. # But we know of no other shell where ac_cr would be empty at this # point, so we can use a bashism as a fallback. if test "x$ac_cr" = x; then eval ac_cr=\$\'\\r\' fi ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' /dev/null` if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then ac_cs_awk_cr='\\r' else ac_cs_awk_cr=$ac_cr fi echo 'BEGIN {' >"$ac_tmp/subs1.awk" && _ACEOF { echo "cat >conf$$subs.awk <<_ACEOF" && echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' && echo "_ACEOF" } >conf$$subs.sh || as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 ac_delim_num=`echo "$ac_subst_vars" | grep -c '^'` ac_delim='%!_!# ' for ac_last_try in false false false false false :; do . ./conf$$subs.sh || as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 ac_delim_n=`sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | grep -c X` if test $ac_delim_n = $ac_delim_num; then break elif $ac_last_try; then as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 else ac_delim="$ac_delim!$ac_delim _$ac_delim!! " fi done rm -f conf$$subs.sh cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 cat >>"\$ac_tmp/subs1.awk" <<\\_ACAWK && _ACEOF sed -n ' h s/^/S["/; s/!.*/"]=/ p g s/^[^!]*!// :repl t repl s/'"$ac_delim"'$// t delim :nl h s/\(.\{148\}\)..*/\1/ t more1 s/["\\]/\\&/g; s/^/"/; s/$/\\n"\\/ p n b repl :more1 s/["\\]/\\&/g; s/^/"/; s/$/"\\/ p g s/.\{148\}// t nl :delim h s/\(.\{148\}\)..*/\1/ t more2 s/["\\]/\\&/g; s/^/"/; s/$/"/ p b :more2 s/["\\]/\\&/g; s/^/"/; s/$/"\\/ p g s/.\{148\}// t delim ' >$CONFIG_STATUS || ac_write_fail=1 rm -f conf$$subs.awk cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 _ACAWK cat >>"\$ac_tmp/subs1.awk" <<_ACAWK && for (key in S) S_is_set[key] = 1 FS = "" } { line = $ 0 nfields = split(line, field, "@") substed = 0 len = length(field[1]) for (i = 2; i < nfields; i++) { key = field[i] keylen = length(key) if (S_is_set[key]) { value = S[key] line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3) len += length(value) + length(field[++i]) substed = 1 } else len += 1 + keylen } print line } _ACAWK _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g" else cat fi < "$ac_tmp/subs1.awk" > "$ac_tmp/subs.awk" \ || as_fn_error $? "could not setup config files machinery" "$LINENO" 5 _ACEOF # VPATH may cause trouble with some makes, so we remove sole $(srcdir), # ${srcdir} and @srcdir@ entries from VPATH if srcdir is ".", strip leading and # trailing colons and then remove the whole line if VPATH becomes empty # (actually we leave an empty line to preserve line numbers). if test "x$srcdir" = x.; then ac_vpsub='/^[ ]*VPATH[ ]*=[ ]*/{ h s/// s/^/:/ s/[ ]*$/:/ s/:\$(srcdir):/:/g s/:\${srcdir}:/:/g s/:@srcdir@:/:/g s/^:*// s/:*$// x s/\(=[ ]*\).*/\1/ G s/\n// s/^[^=]*=[ ]*$// }' fi cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 fi # test -n "$CONFIG_FILES" eval set X " :F $CONFIG_FILES " shift for ac_tag do case $ac_tag in :[FHLC]) ac_mode=$ac_tag; continue;; esac case $ac_mode$ac_tag in :[FHL]*:*);; :L* | :C*:*) as_fn_error $? "invalid tag \`$ac_tag'" "$LINENO" 5;; :[FH]-) ac_tag=-:-;; :[FH]*) ac_tag=$ac_tag:$ac_tag.in;; esac ac_save_IFS=$IFS IFS=: set x $ac_tag IFS=$ac_save_IFS shift ac_file=$1 shift case $ac_mode in :L) ac_source=$1;; :[FH]) ac_file_inputs= for ac_f do case $ac_f in -) ac_f="$ac_tmp/stdin";; *) # Look for the file first in the build tree, then in the source tree # (if the path is not absolute). The absolute path cannot be DOS-style, # because $ac_f cannot contain `:'. test -f "$ac_f" || case $ac_f in [\\/$]*) false;; *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";; esac || as_fn_error 1 "cannot find input file: \`$ac_f'" "$LINENO" 5;; esac case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac as_fn_append ac_file_inputs " '$ac_f'" done # Let's still pretend it is `configure' which instantiates (i.e., don't # use $as_me), people would be surprised to read: # /* config.h. Generated by config.status. */ configure_input='Generated from '` $as_echo "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g' `' by configure.' if test x"$ac_file" != x-; then configure_input="$ac_file. $configure_input" { $as_echo "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5 $as_echo "$as_me: creating $ac_file" >&6;} fi # Neutralize special characters interpreted by sed in replacement strings. case $configure_input in #( *\&* | *\|* | *\\* ) ac_sed_conf_input=`$as_echo "$configure_input" | sed 's/[\\\\&|]/\\\\&/g'`;; #( *) ac_sed_conf_input=$configure_input;; esac case $ac_tag in *:-:* | *:-) cat >"$ac_tmp/stdin" \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;; esac ;; esac ac_dir=`$as_dirname -- "$ac_file" || $as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$ac_file" : 'X\(//\)[^/]' \| \ X"$ac_file" : 'X\(//\)$' \| \ X"$ac_file" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$ac_file" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` as_dir="$ac_dir"; as_fn_mkdir_p ac_builddir=. case "$ac_dir" in .) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` # A ".." for each directory in $ac_dir_suffix. ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` case $ac_top_builddir_sub in "") ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; esac ;; esac ac_abs_top_builddir=$ac_pwd ac_abs_builddir=$ac_pwd$ac_dir_suffix # for backward compatibility: ac_top_builddir=$ac_top_build_prefix case $srcdir in .) # We are building in place. ac_srcdir=. ac_top_srcdir=$ac_top_builddir_sub ac_abs_top_srcdir=$ac_pwd ;; [\\/]* | ?:[\\/]* ) # Absolute name. ac_srcdir=$srcdir$ac_dir_suffix; ac_top_srcdir=$srcdir ac_abs_top_srcdir=$srcdir ;; *) # Relative name. ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix ac_top_srcdir=$ac_top_build_prefix$srcdir ac_abs_top_srcdir=$ac_pwd/$srcdir ;; esac ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix case $ac_mode in :F) # # CONFIG_FILE # _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # If the template does not know about datarootdir, expand it. # FIXME: This hack should be removed a few years after 2.60. ac_datarootdir_hack=; ac_datarootdir_seen= ac_sed_dataroot=' /datarootdir/ { p q } /@datadir@/p /@docdir@/p /@infodir@/p /@localedir@/p /@mandir@/p' case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in *datarootdir*) ac_datarootdir_seen=yes;; *@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 $as_echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;} _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_datarootdir_hack=' s&@datadir@&$datadir&g s&@docdir@&$docdir&g s&@infodir@&$infodir&g s&@localedir@&$localedir&g s&@mandir@&$mandir&g s&\\\${datarootdir}&$datarootdir&g' ;; esac _ACEOF # Neutralize VPATH when `$srcdir' = `.'. # Shell code in configure.ac might set extrasub. # FIXME: do we really want to maintain this feature? cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_sed_extra="$ac_vpsub $extrasub _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 :t /@[a-zA-Z_][a-zA-Z_0-9]*@/!b s|@configure_input@|$ac_sed_conf_input|;t t s&@top_builddir@&$ac_top_builddir_sub&;t t s&@top_build_prefix@&$ac_top_build_prefix&;t t s&@srcdir@&$ac_srcdir&;t t s&@abs_srcdir@&$ac_abs_srcdir&;t t s&@top_srcdir@&$ac_top_srcdir&;t t s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t s&@builddir@&$ac_builddir&;t t s&@abs_builddir@&$ac_abs_builddir&;t t s&@abs_top_builddir@&$ac_abs_top_builddir&;t t $ac_datarootdir_hack " eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$ac_tmp/subs.awk" \ >$ac_tmp/out || as_fn_error $? "could not create $ac_file" "$LINENO" 5 test -z "$ac_datarootdir_hack$ac_datarootdir_seen" && { ac_out=`sed -n '/\${datarootdir}/p' "$ac_tmp/out"`; test -n "$ac_out"; } && { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' \ "$ac_tmp/out"`; test -z "$ac_out"; } && { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir' which seems to be undefined. Please make sure it is defined" >&5 $as_echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir' which seems to be undefined. Please make sure it is defined" >&2;} rm -f "$ac_tmp/stdin" case $ac_file in -) cat "$ac_tmp/out" && rm -f "$ac_tmp/out";; *) rm -f "$ac_file" && mv "$ac_tmp/out" "$ac_file";; esac \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;; esac done # for ac_tag as_fn_exit 0 _ACEOF ac_clean_files=$ac_clean_files_save test $ac_write_fail = 0 || as_fn_error $? "write failure creating $CONFIG_STATUS" "$LINENO" 5 # configure is writing to config.log, and then calls config.status. # config.status does its own redirection, appending to config.log. # Unfortunately, on DOS this fails, as config.log is still kept open # by configure, so config.status won't be able to write to it; its # output is simply discarded. So we exec the FD to /dev/null, # effectively closing config.log, so it can be properly (re)opened and # appended to by config.status. When coming back to configure, we # need to make the FD available again. if test "$no_create" != yes; then ac_cs_success=: ac_config_status_args= test "$silent" = yes && ac_config_status_args="$ac_config_status_args --quiet" exec 5>/dev/null $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false exec 5>>config.log # Use ||, not &&, to avoid exiting from the if with $? = 1, which # would make configure fail if this is the last instruction. $ac_cs_success || as_fn_exit 1 fi # # CONFIG_SUBDIRS section. # if test "$no_recursion" != yes; then # Remove --cache-file, --srcdir, and --disable-option-checking arguments # so they do not pile up. ac_sub_configure_args= ac_prev= eval "set x $ac_configure_args" shift for ac_arg do if test -n "$ac_prev"; then ac_prev= continue fi case $ac_arg in -cache-file | --cache-file | --cache-fil | --cache-fi \ | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) ac_prev=cache_file ;; -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* \ | --c=*) ;; --config-cache | -C) ;; -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) ac_prev=srcdir ;; -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) ;; -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) ac_prev=prefix ;; -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) ;; --disable-option-checking) ;; *) case $ac_arg in *\'*) ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; esac as_fn_append ac_sub_configure_args " '$ac_arg'" ;; esac done # Always prepend --prefix to ensure using the same prefix # in subdir configurations. ac_arg="--prefix=$prefix" case $ac_arg in *\'*) ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; esac ac_sub_configure_args="'$ac_arg' $ac_sub_configure_args" # Pass --silent if test "$silent" = yes; then ac_sub_configure_args="--silent $ac_sub_configure_args" fi # Always prepend --disable-option-checking to silence warnings, since # different subdirs can have different --enable and --with options. ac_sub_configure_args="--disable-option-checking $ac_sub_configure_args" ac_popdir=`pwd` for ac_dir in : $subdirs; do test "x$ac_dir" = x: && continue # Do not complain, so a configure script can configure whichever # parts of a large source tree are present. test -d "$srcdir/$ac_dir" || continue ac_msg="=== configuring in $ac_dir (`pwd`/$ac_dir)" $as_echo "$as_me:${as_lineno-$LINENO}: $ac_msg" >&5 $as_echo "$ac_msg" >&6 as_dir="$ac_dir"; as_fn_mkdir_p ac_builddir=. case "$ac_dir" in .) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` # A ".." for each directory in $ac_dir_suffix. ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` case $ac_top_builddir_sub in "") ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; esac ;; esac ac_abs_top_builddir=$ac_pwd ac_abs_builddir=$ac_pwd$ac_dir_suffix # for backward compatibility: ac_top_builddir=$ac_top_build_prefix case $srcdir in .) # We are building in place. ac_srcdir=. ac_top_srcdir=$ac_top_builddir_sub ac_abs_top_srcdir=$ac_pwd ;; [\\/]* | ?:[\\/]* ) # Absolute name. ac_srcdir=$srcdir$ac_dir_suffix; ac_top_srcdir=$srcdir ac_abs_top_srcdir=$srcdir ;; *) # Relative name. ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix ac_top_srcdir=$ac_top_build_prefix$srcdir ac_abs_top_srcdir=$ac_pwd/$srcdir ;; esac ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix cd "$ac_dir" # Check for guested configure; otherwise get Cygnus style configure. if test -f "$ac_srcdir/configure.gnu"; then ac_sub_configure=$ac_srcdir/configure.gnu elif test -f "$ac_srcdir/configure"; then ac_sub_configure=$ac_srcdir/configure elif test -f "$ac_srcdir/configure.in"; then # This should be Cygnus configure. ac_sub_configure=$ac_aux_dir/configure else { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: no configuration information is in $ac_dir" >&5 $as_echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2;} ac_sub_configure= fi # The recursion is here. if test -n "$ac_sub_configure"; then # Make the cache file name correct relative to the subdirectory. case $cache_file in [\\/]* | ?:[\\/]* ) ac_sub_cache_file=$cache_file ;; *) # Relative name. ac_sub_cache_file=$ac_top_build_prefix$cache_file ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: running $SHELL $ac_sub_configure $ac_sub_configure_args --cache-file=$ac_sub_cache_file --srcdir=$ac_srcdir" >&5 $as_echo "$as_me: running $SHELL $ac_sub_configure $ac_sub_configure_args --cache-file=$ac_sub_cache_file --srcdir=$ac_srcdir" >&6;} # The eval makes quoting arguments work. eval "\$SHELL \"\$ac_sub_configure\" $ac_sub_configure_args \ --cache-file=\"\$ac_sub_cache_file\" --srcdir=\"\$ac_srcdir\"" || as_fn_error $? "$ac_sub_configure failed for $ac_dir" "$LINENO" 5 fi cd "$ac_popdir" done fi if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5 $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;} fi suite3270-4.1/configure.in000066400000000000000000000265431413735575200153620ustar00rootroot00000000000000dnl Copyright (c) 2015-2016, 2018, 2020 Paul Mattes. dnl All rights reserved. dnl dnl Redistribution and use in source and binary forms, with or without dnl modification, are permitted provided that the following conditions are met: dnl * Redistributions of source code must retain the above copyright dnl notice, this list of conditions and the following disclaimer. dnl * Redistributions in binary form must reproduce the above copyright dnl notice, this list of conditions and the following disclaimer in the dnl documentation and/or other materials provided with the distribution. dnl * Neither the names of Paul Mattes nor the names of his contributors dnl may be used to endorse or promote products derived from this software dnl without specific prior written permission. dnl dnl THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS OR IMPLIED dnl WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF dnl MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO dnl EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, dnl SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED dnl TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR dnl PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF dnl LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING dnl NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS dnl SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. dnl Process this file with autoconf to produce a configure script. AC_INIT(suite3270,4.0) AC_PREREQ(2.50) AC_ARG_ENABLE(unix,[ --enable-unix build all Unix emulators]) AC_ARG_ENABLE(windows,[ --enable-windows build all Windows emulators]) AC_ARG_ENABLE(x3270,[ --enable-x3270 build x3270]) AC_ARG_ENABLE(c3270,[ --enable-c3270 build c3270]) AC_ARG_ENABLE(s3270,[ --enable-s3270 build s3270]) AC_ARG_ENABLE(b3270,[ --enable-b3270 build b3270]) AC_ARG_ENABLE(tcl3270,[ --enable-tcl3270 build tcl3270]) AC_ARG_ENABLE(pr3287,[ --enable-pr3287 build pr3287]) AC_ARG_ENABLE(x3270if,[ --enable-x3270if build x3270if]) AC_ARG_ENABLE(unix-lib,[ --enable-lib build Unix libraries]) AC_ARG_ENABLE(wc3270,[ --enable-wc3270 build wc3270]) AC_ARG_ENABLE(ws3270,[ --enable-ws3270 build Windows s3270]) AC_ARG_ENABLE(wb3270,[ --enable-wb3270 build Windows b3270]) AC_ARG_ENABLE(wpr3287,[ --enable-wpr3287 build Windows pr3287]) AC_ARG_ENABLE(wx3270if,[ --enable-wx3270if build Windows x3270if]) AC_ARG_ENABLE(windows-lib,[ --enable-windows-lib build Windows libraries]) AC_CHECK_PROG(mingw64_found,x86_64-w64-mingw32-gcc,yes,no) AC_CHECK_PROG(mingw32_found,i686-w64-mingw32-gcc,yes,no) dnl Handle expansion of enable-unix. if test "x$enable_unix" = xyes; then if test "x$enable_x3270" != xno; then enable_x3270=yes; fi if test "x$enable_c3270" != xno; then enable_c3270=yes; fi if test "x$enable_s3270" != xno; then enable_s3270=yes; fi if test "x$enable_b3270" != xno; then enable_b3270=yes; fi if test "x$enable_tcl3270" != xno; then enable_tcl3270=yes; fi if test "x$enable_pr3287" != xno; then enable_pr3287=yes; fi if test "x$enable_x3270if" != xno; then enable_x3270if=yes; fi fi if test "x$enable_unix" = xno; then enable_x3270=no enable_c3270=no enable_s3270=no enable_b3270=no enable_tcl3270=no enable_pr3287=no enable_x3270if=no fi dnl Handle missing Windows tools. if test "$mingw64_found" = "no" -o "$mingw32_found" = "no" then AC_MSG_WARN(Disabling Windows cross-compile) enable_windows=no fi dnl Handle expansion of enable-windows. if test "x$enable_windows" = xyes; then if test "x$enable_wc3270" != xno; then enable_wc3270=yes; fi if test "x$enable_ws3270" != xno; then enable_ws3270=yes; fi if test "x$enable_wb3270" != xno; then enable_wb3270=yes; fi if test "x$enable_wpr3287" != xno; then enable_wpr3287=yes; fi if test "x$enable_wx3270if" != xno; then enable_wx3270if=yes; fi fi if test "x$enable_windows" = xno; then enable_wc3270=no enable_ws3270=no enable_wb3270=no enable_wpr3287=no enable_wx3270if=no enable_windows_lib=no fi dnl Handle all-default case. if test "x$enable_x3270" = x -a \ "x$enable_c3270" = x -a \ "x$enable_s3270" = x -a \ "x$enable_b3270" = x -a \ "x$enable_tcl3270" = x -a \ "x$enable_pr3287" = x -a \ "x$enable_x3270if" = x -a \ "x$enable_unix_lib" = x -a \ "x$enable_wc3270" = x -a \ "x$enable_ws3270" = x -a \ "x$enable_wb3270" = x -a \ "x$enable_wpr3287" = x -a \ "x$enable_wx3270if" = x -a \ "x$enable_windows_lib" = x; then AC_MSG_NOTICE(configuring all emulators... use --enable or --disable options to pick a subset) enable_x3270=yes enable_c3270=yes enable_s3270=yes enable_b3270=yes enable_tcl3270=yes enable_pr3287=yes enable_x3270if=yes enable_wc3270=yes enable_ws3270=yes enable_wb3270=yes enable_wpr3287=yes enable_wx3270if=yes fi dnl Handle the just-disable case. lparen="(" rparen=")" if test "x$enable_x3270" != xyes -a \ "x$enable_c3270" != xyes -a \ "x$enable_s3270" != xyes -a \ "x$enable_b3270" != xyes -a \ "x$enable_tcl3270" != xyes -a \ "x$enable_pr3287" != xyes -a \ "x$enable_x3270if" != xyes -a \ "x$enable_unix_lib" != xyes -a \ "x$enable_wc3270" != xyes -a \ "x$enable_ws3270" != xyes -a \ "x$enable_wb3270" != xyes -a \ "x$enable_wpr3287" != xyes -a \ "x$enable_wx3270if" != xyes -a \ "x$enable_windows_lib" != xyes -a \ $lparen "x$enable_x3270" = xno -o \ "x$enable_c3270" = xno -o \ "x$enable_s3270" = xno -o \ "x$enable_b3270" = xno -o \ "x$enable_tcl3270" = xno -o \ "x$enable_pr3287" = xno -o \ "x$enable_x3270if" = xno -o \ "x$enable_unix_lib" = xno -o \ "x$enable_wc3270" = xno -o \ "x$enable_ws3270" = xno -o \ "x$enable_wb3270" = xno -o \ "x$enable_wpr3287" = xno -o \ "x$enable_wx3270if" = xno -o \ "x$enable_windows_lib" = xno $rparen; then dnl Enable everything that wasn't explicitly disabled. if test "x$enable_x3270" != xno; then enable_x3270=yes; fi if test "x$enable_c3270" != xno; then enable_c3270=yes; fi if test "x$enable_s3270" != xno; then enable_s3270=yes; fi if test "x$enable_b3270" != xno; then enable_b3270=yes; fi if test "x$enable_tcl3270" != xno; then enable_tcl3270=yes; fi if test "x$enable_pr3287" != xno; then enable_pr3287=yes; fi if test "x$enable_x3270if" != xno; then enable_x3270if=yes; fi if test "x$enable_wc3270" != xno; then enable_wc3270=yes; fi if test "x$enable_ws3270" != xno; then enable_ws3270=yes; fi if test "x$enable_wb3270" != xno; then enable_wb3270=yes; fi if test "x$enable_wpr3287" != xno; then enable_wpr3287=yes; fi if test "x$enable_wx3270if" != xno; then enable_wx3270if=yes; fi fi dnl Handle dependencies. if test "x$enable_tcl3270" = xyes; then enable_s3270=yes fi if test "x$enable_x3270" = xyes -o \ "x$enable_c3270" = xyes -o \ "x$enable_s3270" = xyes -o \ "x$enable_b3270" = xyes -o \ "x$enable_tcl3270" = xyes; then enable_x3270if=yes fi if test "x$enable_wc3270" = xyes -o \ "x$enable_ws3270" = xyes -o \ "x$enable_wb3270" = xyes; then enable_wx3270if=yes fi if test "x$enable_x3270" = xyes -o \ "x$enable_c3270" = xyes -o \ "x$enable_s3270" = xyes -o \ "x$enable_b3270" = xyes -o \ "x$enable_pr3287" = xyes; then enable_unix_lib=yes fi if test "x$enable_wc3270" = xyes -o \ "x$enable_ws3270" = xyes -o \ "x$enable_wb3270" = xyes -o \ "x$enable_wpr3287" = xyes; then enable_windows_lib=yes fi dnl Start recursing. if test "x$enable_unix_lib" = xyes; then AC_CONFIG_SUBDIRS(lib) fi if test "x$enable_windows_lib" = xyes; then AC_CONFIG_SUBDIRS(lib/w32xx) fi T_ALL="" T_CLEAN="" T_CLOBBER="" T_INSTALL="" T_INSTALL_MAN="" T_LIB="" T_LIB_CLEAN="" T_LIB_CLOBBER="" T_UNIX_CLEAN="" T_UNIX_CLOBBER="" T_WINDOWS_CLEAN="" T_WINDOWS_CLOBBER="" for i in x3270 c3270 s3270 b3270 tcl3270 pr3287 x3270if wc3270 ws3270 wb3270 wc3270 wpr3287 wx3270if; do eval x=\$enable_$i if test "x$x" = xyes; then T_ALL="$T_ALL $i" T_CLEAN="$T_CLEAN $i-clean" T_CLOBBER="$T_CLOBBER $i-clobber" case "$i" in w*) ;; *) T_INSTALL="$T_INSTALL $i-install" T_INSTALL_MAN="$T_INSTALL_MAN $i-install.man" esac fi done if test "x$enable_unix_lib" = xyes; then T_CLEAN="$T_CLEAN unix-lib-clean" T_CLOBBER="$T_CLOBBER unix-lib-clobber" T_LIB="$T_LIB unix-lib" T_LIB_CLEAN="$T_LIB_CLEAN unix-lib-clean" T_LIB_CLOBBER="$T_LIB_CLOBBER unix-lib-clobber" T_UNIX_CLEAN="$T_UNIX_CLEAN unix-lib-clean" T_UNIX_CLOBBER="$T_UNIX_CLOBBER unix-lib-clobber" fi if test "x$enable_windows_lib" = xyes; then T_CLEAN="$T_CLEAN windows-lib-clean" T_CLOBBER="$T_CLOBBER windows-lib-clobber" T_LIB="$T_LIB windows-lib" T_LIB_CLEAN="$T_LIB_CLEAN windows-lib-clean" T_LIB_CLOBBER="$T_LIB_CLOBBER windows-lib-clobber" T_WINDOWS_CLEAN="$T_WINDOWS_CLEAN windows-lib-clean" T_WINDOWS_CLOBBER="$T_WINDOWS_CLOBBER windows-lib-clobber" fi if test "x$enable_x3270" = xyes; then AC_CONFIG_SUBDIRS(x3270) T_UNIX_CLEAN="$T_UNIX_CLEAN x3270-clean" T_UNIX_CLOBBER="$T_UNIX_CLOBBER x3270-clobber" fi if test "x$enable_c3270" = xyes; then AC_CONFIG_SUBDIRS(c3270) T_UNIX_CLEAN="$T_UNIX_CLEAN c3270-clean" T_UNIX_CLOBBER="$T_UNIX_CLOBBER c3270-clobber" fi if test "x$enable_s3270" = xyes; then AC_CONFIG_SUBDIRS(s3270) T_UNIX_CLEAN="$T_UNIX_CLEAN s3270-clean" T_UNIX_CLOBBER="$T_UNIX_CLOBBER s3270-clobber" fi if test "x$enable_b3270" = xyes; then AC_CONFIG_SUBDIRS(b3270) T_UNIX_CLEAN="$T_UNIX_CLEAN b3270-clean" T_UNIX_CLOBBER="$T_UNIX_CLOBBER b3270-clobber" fi if test "x$enable_tcl3270" = xyes; then AC_CONFIG_SUBDIRS(tcl3270) T_UNIX_CLEAN="$T_UNIX_CLEAN tcl3270-clean" T_UNIX_CLOBBER="$T_UNIX_CLOBBER tcl3270-clobber" fi if test "x$enable_pr3287" = xyes; then AC_CONFIG_SUBDIRS(pr3287) T_UNIX_CLEAN="$T_UNIX_CLEAN pr3287-clean" T_UNIX_CLOBBER="$T_UNIX_CLOBBER pr3287-clobber" fi if test "x$enable_x3270if" = xyes; then AC_CONFIG_SUBDIRS(x3270if) T_UNIX_CLEAN="$T_UNIX_CLEAN x3270if-clean" T_UNIX_CLOBBER="$T_UNIX_CLOBBER x3270if-clobber" fi if test "x$enable_wc3270" = xyes; then T_WINDOWS_CLEAN="$T_WINDOWS_CLEAN wc3270-clean" T_WINDOWS_CLOBBER="$T_WINDOWS_CLOBBER wc3270-clobber" fi if test "x$enable_ws3270" = xyes; then T_WINDOWS_CLEAN="$T_WINDOWS_CLEAN ws3270-clean" T_WINDOWS_CLOBBER="$T_WINDOWS_CLOBBER ws3270-clobber" fi if test "x$enable_wb3270" = xyes; then T_WINDOWS_CLEAN="$T_WINDOWS_CLEAN wb3270-clean" T_WINDOWS_CLOBBER="$T_WINDOWS_CLOBBER wb3270-clobber" fi if test "x$enable_wpr3287" = xyes; then T_WINDOWS_CLEAN="$T_WINDOWS_CLEAN wpr3287-clean" T_WINDOWS_CLOBBER="$T_WINDOWS_CLOBBER wpr3287-clobber" fi if test "x$enable_wx3270if" = xyes; then T_WINDOWS_CLEAN="$T_WINDOWS_CLEAN wwx3270if-clean" T_WINDOWS_CLOBBER="$T_WINDOWS_CLOBBER wwx3270if-clobber" fi AC_SUBST(T_ALL) AC_SUBST(T_CLEAN) AC_SUBST(T_CLOBBER) AC_SUBST(T_INSTALL) AC_SUBST(T_INSTALL_MAN) AC_SUBST(T_LIB) AC_SUBST(T_LIB_CLEAN) AC_SUBST(T_LIB_CLOBBER) AC_SUBST(T_UNIX_CLEAN) AC_SUBST(T_UNIX_CLOBBER) AC_SUBST(T_WINDOWS_CLEAN) AC_SUBST(T_WINDOWS_CLOBBER) dnl Generate to top-level Makefile. AC_OUTPUT(Makefile) suite3270-4.1/include/000077500000000000000000000000001413735575200144625ustar00rootroot00000000000000suite3270-4.1/include/3270ds.h000066400000000000000000000363141413735575200155640ustar00rootroot00000000000000/* * Copyright (c) 1993-2009, 2013, 2018, 2020 Paul Mattes. * Copyright (c) 2004, Don Russell. * Copyright (c) 1990, Jeff Sparkes. * Copyright (c) 1989, Georgia Tech Research Corporation (GTRC), Atlanta, GA * 30332. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the names of Paul Mattes, Don Russell, Jeff Sparkes, GTRC nor * the names of their contributors may be used to endorse or promote * products derived from this software without specific prior written * permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES, DON RUSSELL, JEFF SPARKES AND GTRC * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL PAUL MATTES, DON RUSSELL, JEFF * SPARKES OR GTRC BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * 3270ds.h * * Header file for the 3270 Data Stream Protocol. */ /* 3270 commands */ #define CMD_W 0x01 /* write */ #define CMD_RB 0x02 /* read buffer */ #define CMD_NOP 0x03 /* no-op */ #define CMD_EW 0x05 /* erase/write */ #define CMD_RM 0x06 /* read modified */ #define CMD_EWA 0x0d /* erase/write alternate */ #define CMD_RMA 0x0e /* read modified all */ #define CMD_EAU 0x0f /* erase all unprotected */ #define CMD_WSF 0x11 /* write structured field */ /* SNA 3270 commands */ #define SNA_CMD_RMA 0x6e /* read modified all */ #define SNA_CMD_EAU 0x6f /* erase all unprotected */ #define SNA_CMD_EWA 0x7e /* erase/write alternate */ #define SNA_CMD_W 0xf1 /* write */ #define SNA_CMD_RB 0xf2 /* read buffer */ #define SNA_CMD_WSF 0xf3 /* write structured field */ #define SNA_CMD_EW 0xf5 /* erase/write */ #define SNA_CMD_RM 0xf6 /* read modified */ /* 3270 orders */ #define ORDER_PT 0x05 /* program tab */ #define ORDER_GE 0x08 /* graphic escape */ #define ORDER_SBA 0x11 /* set buffer address */ #define ORDER_EUA 0x12 /* erase unprotected to address */ #define ORDER_IC 0x13 /* insert cursor */ #define ORDER_SF 0x1d /* start field */ #define ORDER_SA 0x28 /* set attribute */ #define ORDER_SFE 0x29 /* start field extended */ #define ORDER_YALE 0x2b /* Yale sub command */ #define ORDER_MF 0x2c /* modify field */ #define ORDER_RA 0x3c /* repeat to address */ #define FCORDER_NULL 0x00 /* format control: null */ #define FCORDER_FF 0x0c /* form feed */ #define FCORDER_CR 0x0d /* carriage return */ #define FCORDER_SO 0x0e /* shift out (DBCS subfield) */ #define FCORDER_SI 0x0f /* shift in (DBCS end) */ #define FCORDER_NL 0x15 /* new line */ #define FCORDER_EM 0x19 /* end of medium */ #define FCORDER_LF 0x25 /* line feed */ #define FCORDER_DUP 0x1c /* duplicate */ #define FCORDER_FM 0x1e /* field mark */ #define FCORDER_SUB 0x3f /* substitute */ #define FCORDER_EO 0xff /* eight ones */ /* SCS control code, some overlap orders */ #define SCS_BS 0x16 /* Back Space */ #define SCS_BEL 0x2f /* Bell Function */ #define SCS_CR 0x0d /* Carriage Return */ #define SCS_ENP 0x14 /* Enable Presentation */ #define SCS_FF 0x0c /* Forms Feed */ #define SCS_GE 0x08 /* Graphic Escape */ #define SCS_HT 0x05 /* Horizontal Tab */ #define SCS_INP 0x24 /* Inhibit Presentation */ #define SCS_IRS 0x1e /* Interchange-Record Separator */ #define SCS_LF 0x25 /* Line Feed */ #define SCS_NL 0x15 /* New Line */ #define SCS_SA 0x28 /* Set Attribute: */ #define SCS_SA_RESET 0x00 /* Reset all */ #define SCS_SA_HIGHLIGHT 0x41 /* Highlighting */ #define SCS_SA_CS 0x42 /* Character set */ #define SCS_SA_GRID 0xc2 /* Grid */ #define SCS_SET 0x2b /* Set: */ #define SCS_SHF 0xc1 /* Horizontal format */ #define SCS_SLD 0xc6 /* Line Density */ #define SCS_SVF 0xc2 /* Vertical Format */ #define SCS_SO 0x0e /* Shift out (DBCS subfield start) */ #define SCS_SI 0x0f /* Shift in (DBCS subfield end) */ #define SCS_TRN 0x35 /* Transparent */ #define SCS_VCS 0x04 /* Vertical Channel Select */ #define SCS_VT 0x0b /* Vertical Tab */ /* Structured fields */ #define SF_READ_PART 0x01 /* read partition */ #define SF_RP_QUERY 0x02 /* query */ #define SF_RP_QLIST 0x03 /* query list */ #define SF_RPQ_LIST 0x00 /* QCODE list */ #define SF_RPQ_EQUIV 0x40 /* equivalent+ QCODE list */ #define SF_RPQ_ALL 0x80 /* all */ #define SF_ERASE_RESET 0x03 /* erase/reset */ #define SF_ER_DEFAULT 0x00 /* default */ #define SF_ER_ALT 0x80 /* alternate */ #define SF_SET_REPLY_MODE 0x09 /* set reply mode */ #define SF_SRM_FIELD 0x00 /* field */ #define SF_SRM_XFIELD 0x01 /* extended field */ #define SF_SRM_CHAR 0x02 /* character */ #define SF_CREATE_PART 0x0c /* create partition */ #define CPFLAG_PROT 0x40 /* protected flag */ #define CPFLAG_COPY_PS 0x20 /* local copy to presentation space */ #define CPFLAG_BASE 0x07 /* base character set index */ #define SF_OUTBOUND_DS 0x40 /* outbound 3270 DS */ #define SF_TRANSFER_DATA 0xd0 /* file transfer open request */ /* Query replies */ #define QR_SUMMARY 0x80 /* summary */ #define QR_USABLE_AREA 0x81 /* usable area */ #define QR_IMAGE 0x82 /* image */ #define QR_TEXT_PART 0x83 /* text partitions */ #define QR_ALPHA_PART 0x84 /* alphanumeric partitions */ #define QR_CHARSETS 0x85 /* character sets */ #define QR_COLOR 0x86 /* color */ #define QR_HIGHLIGHTING 0x87 /* highlighting */ #define QR_REPLY_MODES 0x88 /* reply modes */ #define QR_FIELD_VAL 0x8a /* field validation */ #define QR_MSR_CTL 0x8b /* MSR control */ #define QR_OUTLINING 0x8c /* field outlining */ #define QR_PART_CHAR 0x8e /* partition characteristics */ #define QR_OEM_AUX 0x8f /* OEM auxiliary device */ #define QR_FMT_PRES 0x90 /* format presentation */ #define QR_DBCS_ASIA 0x91 /* DBCS-Asia */ #define QR_SAVE_RESTORE 0x92 /* save/restore format */ #define QR_PC3270 0x93 /* PC3270 */ #define QR_FMT_SAD 0x94 /* format storage auxiliary device */ #define QR_DDM 0x95 /* distributed data management */ #define QR_STG_POOLS 0x96 /* storage pools */ #define QR_DIA 0x97 /* document interchange architecture */ #define QR_DATA_CHAIN 0x98 /* data chaining */ #define QR_AUX_DEVICE 0x99 /* auxiliary device */ #define QR_3270_IPDS 0x9a /* 3270 IPDS */ #define QR_PDDS 0x9c /* product defined data stream */ #define QR_IBM_AUX 0x9e /* IBM auxiliary device */ #define QR_BEGIN_EOF 0x9f /* begin/end of file */ #define QR_DEVICE_CHAR 0xa0 /* device characteristics */ #define QR_RPQNAMES 0xa1 /* RPQ names */ #define QR_DATA_STREAMS 0xa2 /* data streams */ #define QR_IMP_PART 0xa6 /* implicit partition */ #define QR_PAPER_FEED 0xa7 /* paper feed techniques */ #define QR_TRANSPARENCY 0xa8 /* transparency */ #define QR_SPC 0xa9 /* settable printer characteristics */ #define QR_IOCA_AD 0xaa /* IOCA auxiliary device */ #define QR_CPR 0xab /* cooperative proc. requestor */ #define QR_SEGMENT 0xb0 /* segment */ #define QR_PROCEDURE 0xb1 /* procedure */ #define QR_LINE_TYPE 0xb2 /* line type */ #define QR_PORT 0xb3 /* port */ #define QR_GCOLOR 0xb4 /* graphic color */ #define QR_XDR 0xb5 /* extended drawing routine */ #define QR_GSS 0xb6 /* graphic symbol sets */ #define QR_NULL 0xff /* null */ #define BA_TO_ROW(ba) ((ba) / COLS) #define BA_TO_COL(ba) ((ba) % COLS) #define ROWCOL_TO_BA(r,c) (((r) * COLS) + c) #define INC_BA(ba) { (ba) = ((ba) + 1) % (COLS * ROWS); } #define DEC_BA(ba) { (ba) = (ba) ? (ba - 1) : ((COLS*ROWS) - 1); } /* Field attributes. */ #define FA_PRINTABLE 0xc0 /* these make the character "printable" */ #define FA_PROTECT 0x20 /* unprotected (0) / protected (1) */ #define FA_NUMERIC 0x10 /* alphanumeric (0) /numeric (1) */ #define FA_INTENSITY 0x0c /* display/selector pen detectable: */ #define FA_INT_NORM_NSEL 0x00 /* 00 normal, non-detect */ #define FA_INT_NORM_SEL 0x04 /* 01 normal, detectable */ #define FA_INT_HIGH_SEL 0x08 /* 10 intensified, detectable */ #define FA_INT_ZERO_NSEL 0x0c /* 11 nondisplay, non-detect */ #define FA_RESERVED 0x02 /* must be 0 */ #define FA_MODIFY 0x01 /* modified (1) */ /* Bits in the field attribute that are stored. */ #define FA_MASK (FA_PROTECT | FA_NUMERIC | FA_INTENSITY | FA_MODIFY) /* Tests for various attribute properties. */ #define FA_IS_MODIFIED(c) ((c) & FA_MODIFY) #define FA_IS_NUMERIC(c) ((c) & FA_NUMERIC) #define FA_IS_PROTECTED(c) ((c) & FA_PROTECT) #define FA_IS_SKIP(c) (((c) & FA_PROTECT) && ((c) & FA_NUMERIC)) #define FA_IS_ZERO(c) \ (((c) & FA_INTENSITY) == FA_INT_ZERO_NSEL) #define FA_IS_HIGH(c) \ (((c) & FA_INTENSITY) == FA_INT_HIGH_SEL) #define FA_IS_NORMAL(c) \ ( \ ((c) & FA_INTENSITY) == FA_INT_NORM_NSEL \ || \ ((c) & FA_INTENSITY) == FA_INT_NORM_SEL \ ) #define FA_IS_SELECTABLE(c) \ ( \ ((c) & FA_INTENSITY) == FA_INT_NORM_SEL \ || \ ((c) & FA_INTENSITY) == FA_INT_HIGH_SEL \ ) #define FA_IS_INTENSE(c) \ ((c & FA_INT_HIGH_SEL) == FA_INT_HIGH_SEL) /* Extended attributes */ #define XA_ALL 0x00 #define XA_3270 0xc0 #define XA_VALIDATION 0xc1 #define XAV_FILL 0x04 #define XAV_ENTRY 0x02 #define XAV_TRIGGER 0x01 #define XA_OUTLINING 0xc2 #define XAO_UNDERLINE 0x01 #define XAO_RIGHT 0x02 #define XAO_OVERLINE 0x04 #define XAO_LEFT 0x08 #define XA_HIGHLIGHTING 0x41 #define XAH_DEFAULT 0x00 #define XAH_NORMAL 0xf0 #define XAH_BLINK 0xf1 #define XAH_REVERSE 0xf2 #define XAH_UNDERSCORE 0xf4 #define XAH_INTENSIFY 0xf8 #define XA_FOREGROUND 0x42 #define XAC_DEFAULT 0x00 #define XA_CHARSET 0x43 #define XA_BACKGROUND 0x45 #define XA_TRANSPARENCY 0x46 #define XAT_DEFAULT 0x00 #define XAT_OR 0xf0 #define XAT_XOR 0xf1 #define XAT_OPAQUE 0xff #define XA_INPUT_CONTROL 0xfe #define XAI_DISABLED 0x00 #define XAI_ENABLED 0x01 /* WCC definitions */ #define WCC_RESET_BIT 0x40 #define WCC_START_PRINTER_BIT 0x08 #define WCC_SOUND_ALARM_BIT 0x04 #define WCC_KEYBOARD_RESTORE_BIT 0x02 #define WCC_RESET_MDT_BIT 0x01 #define WCC_RESET(c) ((c) & WCC_RESET_BIT) #define WCC_START_PRINTER(c) ((c) & WCC_START_PRINTER_BIT) #define WCC_SOUND_ALARM(c) ((c) & WCC_SOUND_ALARM_BIT) #define WCC_KEYBOARD_RESTORE(c) ((c) & WCC_KEYBOARD_RESTORE_BIT) #define WCC_RESET_MDT(c) ((c) & WCC_RESET_MDT_BIT) /* AIDs */ #define AID_NO 0x60 /* no AID generated */ #define AID_QREPLY 0x61 #define AID_ENTER 0x7d #define AID_PF1 0xf1 #define AID_PF2 0xf2 #define AID_PF3 0xf3 #define AID_PF4 0xf4 #define AID_PF5 0xf5 #define AID_PF6 0xf6 #define AID_PF7 0xf7 #define AID_PF8 0xf8 #define AID_PF9 0xf9 #define AID_PF10 0x7a #define AID_PF11 0x7b #define AID_PF12 0x7c #define AID_PF13 0xc1 #define AID_PF14 0xc2 #define AID_PF15 0xc3 #define AID_PF16 0xc4 #define AID_PF17 0xc5 #define AID_PF18 0xc6 #define AID_PF19 0xc7 #define AID_PF20 0xc8 #define AID_PF21 0xc9 #define AID_PF22 0x4a #define AID_PF23 0x4b #define AID_PF24 0x4c #define AID_OICR 0xe6 #define AID_MSR_MHS 0xe7 #define AID_SELECT 0x7e #define AID_PA1 0x6c #define AID_PA2 0x6e #define AID_PA3 0x6b #define AID_CLEAR 0x6d #define AID_SYSREQ 0xf0 #define AID_SF 0x88 #define SFID_QREPLY 0x81 /* Colors */ #define HOST_COLOR_NEUTRAL_BLACK 0 #define HOST_COLOR_BLUE 1 #define HOST_COLOR_RED 2 #define HOST_COLOR_PINK 3 #define HOST_COLOR_GREEN 4 #define HOST_COLOR_TURQUOISE 5 #define HOST_COLOR_YELLOW 6 #define HOST_COLOR_NEUTRAL_WHITE 7 #define HOST_COLOR_BLACK 8 #define HOST_COLOR_DEEP_BLUE 9 #define HOST_COLOR_ORANGE 10 #define HOST_COLOR_PURPLE 11 #define HOST_COLOR_PALE_GREEN 12 #define HOST_COLOR_PALE_TURQUOISE 13 #define HOST_COLOR_GREY 14 #define HOST_COLOR_WHITE 15 /* Data stream manipulation macros. */ #define MASK32 0xff000000U #define MASK24 0x00ff0000U #define MASK16 0x0000ff00U #define MASK08 0x000000ffU #define MINUS1 0xffffffffU #define SET16(ptr, val) { \ *((ptr)++) = (unsigned char)(((val) & MASK16) >> 8); \ *((ptr)++) = (unsigned char)(((val) & MASK08)); \ } #define GET16(val, ptr) { \ (val) = *((ptr)+1); \ (val) += *(ptr) << 8; \ } #define SET32(ptr, val) { \ *((ptr)++) = (unsigned char)(((val) & MASK32) >> 24); \ *((ptr)++) = (unsigned char)(((val) & MASK24) >> 16); \ *((ptr)++) = (unsigned char)(((val) & MASK16) >> 8); \ *((ptr)++) = (unsigned char)(((val) & MASK08)); \ } #define HIGH8(s) (((s) >> 8) & 0xff) #define LOW8(s) ((s) & 0xff) /* Other EBCDIC control codes. */ #define EBC_null 0x00 #define EBC_soh 0x01 #define EBC_stx 0x02 #define EBC_ff 0x0c #define EBC_cr 0x0d #define EBC_so 0x0e #define EBC_si 0x0f #define EBC_nl 0x15 #define EBC_em 0x19 #define EBC_dup 0x1c #define EBC_fm 0x1e #define EBC_sub 0x3f #define EBC_space 0x40 #define EBC_nobreakspace 0x41 #define EBC_period 0x4b #define EBC_ampersand 0x50 #define EBC_slash 0x61 #define EBC_comma 0x6b #define EBC_percent 0x6c #define EBC_underscore 0x6d #define EBC_greater 0x6e #define EBC_question 0x6f #define EBC_Yacute 0xad #define EBC_diaeresis 0xbd #define EBC_minus 0xca #define EBC_0 0xf0 #define EBC_1 0xf1 #define EBC_2 0xf2 #define EBC_3 0xf3 #define EBC_4 0xf4 #define EBC_5 0xf5 #define EBC_6 0xf6 #define EBC_7 0xf7 #define EBC_8 0xf8 #define EBC_9 0xf9 #define EBC_A 0xc1 #define EBC_B 0xc2 #define EBC_C 0xc3 #define EBC_D 0xc4 #define EBC_E 0xc5 #define EBC_F 0xc6 #define EBC_G 0xc7 #define EBC_H 0xc8 #define EBC_I 0xc9 #define EBC_J 0xd1 #define EBC_K 0xd2 #define EBC_L 0xd3 #define EBC_M 0xd4 #define EBC_N 0xd5 #define EBC_O 0xd6 #define EBC_P 0xd7 #define EBC_Q 0xd8 #define EBC_R 0xd9 #define EBC_S 0xe2 #define EBC_T 0xe3 #define EBC_U 0xe4 #define EBC_V 0xe5 #define EBC_eo 0xff #define EBC_less 0x4c #define EBC_greaer 0x6e /* Unicode private-use definitions. */ #define UPRIV_GE_00 0xf700 /* first GE */ #define UPRIV_GE_ff 0xf7ff /* last GE */ #define UPRIV_sub 0xf8fc #define UPRIV_eo 0xf8fd #define UPRIV_fm 0xf8fe #define UPRIV_dup 0xf8ff /* Second set of PUA definitions. */ #define UPRIV2 0xe000 #define UPRIV2_dup (UPRIV2 + '*') #define UPRIV2_fm (UPRIV2 + ';') #define UPRIV2_Aunderline (UPRIV2 + 'A') #define UPRIV2_Zunderline (UPRIV2 + 'Z') /* BIND definitions. */ #define BIND_RU 0x31 #define BIND_OFF_MAXRU_SEC 10 #define BIND_OFF_MAXRU_PRI 11 #define BIND_OFF_RD 20 #define BIND_OFF_CD 21 #define BIND_OFF_RA 22 #define BIND_OFF_CA 23 #define BIND_OFF_SSIZE 24 #define BIND_OFF_PLU_NAME_LEN 27 #define BIND_PLU_NAME_MAX 8 #define BIND_OFF_PLU_NAME 28 /* Screen sizes. */ #define MODEL_2_ROWS 24 #define MODEL_2_COLS 80 #define MODEL_3_ROWS 32 #define MODEL_3_COLS 80 #define MODEL_4_ROWS 43 #define MODEL_4_COLS 80 #define MODEL_5_ROWS 27 #define MODEL_5_COLS 132 suite3270-4.1/include/Makefile.aux000066400000000000000000000032531413735575200167210ustar00rootroot00000000000000# # Copyright (c) 1995-2011, 2013-2015, 2017 Paul Mattes. # All rights reserved. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions are met: # * Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # * Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in the # documentation and/or other materials provided with the distribution. # * Neither the names of Paul Mattes nor the names of his contributors # may be used to endorse or promote products derived from this software # without specific prior written permission. # # THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS OR IMPLIED # WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF # MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO # EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, # SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, # PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; # OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, # WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR # OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF # ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. # # Auxiliary makefile for the include directory all: @echo "Must pick a specific make target." # Development tools. include include_files.mk src.tgz: $(INCLUDE_HEADERS) suite3270-4.1/include/actions.h000066400000000000000000000060021413735575200162710ustar00rootroot00000000000000/* * Copyright (c) 1995-2009, 2014-2016, 2018, 2020 Paul Mattes. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the names of Paul Mattes nor the names of his contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO * EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * actions.h * Global declarations for actions.c. */ typedef struct { const char *name; action_t *action; unsigned flags; unsigned help_flags; const char *help_parms; const char *help_text; ia_t ia_restrict; } action_table_t; #define ACTION_KE 0x1 /* action is valid from key events */ #define ACTION_HIDDEN 0x2 /* action does not have help or tab expansion */ typedef struct action_elt { llist_t list; /* linkage */ action_table_t t; /* payload */ } action_elt_t; extern llist_t actions_list; extern unsigned actions_list_count; extern const char *ia_name[]; extern const char *current_action_name; void action_debug(const char *aname, ia_t ia, unsigned argc, const char **argv); bool run_action(const char *name, enum iaction cause, const char *parm1, const char *parm2); bool run_action_a(const char *name, enum iaction cause, unsigned count, const char **parms); bool run_action_entry(action_elt_t *e, enum iaction cause, unsigned count, const char **parms); int check_argc(const char *aname, unsigned nargs, unsigned nargs_min, unsigned nargs_max); void register_actions(action_table_t *actions, unsigned count); char *safe_param(const char *s); void disable_keyboard(bool disable, bool explicit, const char *why); #define DISABLE true #define ENABLE false #define EXPLICIT true #define IMPLICIT false void force_enable_keyboard(void); bool keyboard_disabled(void); const char *all_actions(void); bool action_args_are(const char *name, ...); suite3270-4.1/include/apl.h000066400000000000000000000033251413735575200154120ustar00rootroot00000000000000/* * Copyright (c) 1995-2009, 2014-2015, 2018 Paul Mattes. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the names of Paul Mattes nor the names of his contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO * EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * apl.h * Global declarations for apl.c. */ void check_apl_consistency(ucs4_t apl2uc[]); ucs4_t apl_key_to_ucs4(const char *s, bool *is_ge); const char *ucs4_to_apl_key(ucs4_t ucs4); suite3270-4.1/include/appres.h000066400000000000000000000116511413735575200161310ustar00rootroot00000000000000/* * Copyright (c) 1993-2012, 2016-2020 Paul Mattes. * Copyright (c) 1990, Jeff Sparkes. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the names of Paul Mattes, Jeff Sparkes nor the names of their * contributors may be used to endorse or promote products derived from * this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES AND JEFF SPARKES "AS IS" AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL PAUL MATTES OR JEFF SPARKES BE LIABLE FOR * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH * DAMAGE. */ /* * appres.h * Application resource definitions for x3270, c3270, s3270 and * tcl3270. */ /* * Alas, a nested #include here, so everyone who wants the appres definitions * does not need to explicitly include tls_config.h. */ #include "tls_config.h" /* Application resources */ typedef struct { /* Common options. */ bool modified_sel; bool once; bool scripted; bool numeric_lock; bool secure; bool oerr_lock; bool debug_tracing; bool disconnect_clear; bool highlight_bold; bool bsd_tm; bool unlock_delay; bool qr_bg_color; bool bind_limit; bool new_environ; bool socket; bool trace_monitor; bool script_port_once; bool bind_unlock; char *script_port; char *httpd_port; char *dbcs_cgcsgid; char *conf_dir; char *model; char *hostsfile; char *port; char *codepage; char *charset; /* deprecated */ char *sbcs_cgcsgid; char *termname; char *devname; /* for 5250 */ char *user; /* for 5250 */ char *login_macro; char *macros; char *trace_dir; char *trace_file; char *trace_file_size; char *oversize; char *ft_command; char *connectfile_name; char *idle_command; bool idle_command_enabled; char *idle_timeout; char *proxy; int unlock_delay_ms; char *hostname; bool utf8; int max_recent; bool nvt_mode; char *suppress_actions; char *min_version; int connect_timeout; int nop_seconds; char *alias; #if defined(_WIN32) /*[*/ int local_cp; int ft_cp; #endif /*]*/ /* Toggles. */ bool toggle[N_TOGGLES]; /* Line-mode TTY parameters. */ struct { bool icrnl; bool inlcr; bool onlcr; char *erase; char *kill; char *werase; char *rprnt; char *lnext; char *intr; char *quit; char *eof; } linemode; /* TLS fields. */ tls_config_t tls; /* Interactive (x3270/c3270/wc3270) fields. */ struct { bool mono; bool reconnect; bool do_confirms; bool menubar; bool visual_bell; char *key_map; char *compose_map; char *printer_lu; char *printer_opts; int save_lines; char *crosshair_color; char *console; bool print_dialog; /* Windows only */ char *no_telnet_input_mode; } interactive; /* File transfer fields. */ struct { char *allocation; int avblock; int blksize; char *cr; char *direction; char *exist; char *host; char *host_file; char *local_file; int lrecl; char *mode; int primary_space; char *recfm; char *remap; int secondary_space; int dft_buffer_size; #if defined(_WIN32) /*[*/ int codepage; #endif /*]*/ } ft; /* c3270/wc3270-specific fields. */ struct { bool all_bold_on; bool ascii_box_draw; bool acs; #if !defined(_WIN32) /*[*/ bool default_fgbg; bool cbreak_mode; bool curses_keypad; bool mouse; bool reverse_video; #else /*]*/ bool auto_shortcut; bool lightpen_primary; #endif /*]*/ char *all_bold; #if !defined(_WIN32) /*[*/ char *altscreen; char *defscreen; char *meta_escape; #else /*][*/ char *bell_mode; char *title; #endif /*]*/ } c3270; /* screen tracing */ struct { char *file; char *target; char *type; } screentrace; /* scripting-specific fields. */ struct { char *callback; } scripting; } AppRes, *AppResptr; extern AppRes appres; suite3270-4.1/include/arpa_telnet.h000066400000000000000000000116161413735575200171360ustar00rootroot00000000000000/* @(#)telnet.h 1.7 88/08/19 SMI; from UCB 5.1 5/30/85 */ /* * Copyright (c) 1983 Regents of the University of California. * All rights reserved. The Berkeley software License Agreement * specifies the terms and conditions for redistribution. */ /* * Definitions for the TELNET protocol. */ #ifndef _arpa_telnet_h #define _arpa_telnet_h #define IAC 255 /* interpret as command: */ #define DONT 254 /* you are not to use option */ #define DO 253 /* please, you use option */ #define WONT 252 /* I won't use option */ #define WILL 251 /* I will use option */ #define SB 250 /* interpret as subnegotiation */ #define GA 249 /* you may reverse the line */ #define EL 248 /* erase the current line */ #define EC 247 /* erase the current character */ #define AYT 246 /* are you there */ #define AO 245 /* abort output--but let prog finish */ #define IP 244 /* interrupt process--permanently */ #define BREAK 243 /* break */ #define DM 242 /* data mark--for connect. cleaning */ #define NOP 241 /* nop */ #define SE 240 /* end sub negotiation */ #define EOR 239 /* end of record (transparent mode) */ #define SUSP 237 /* suspend process */ #define xEOF 236 /* end of file */ #define SYNCH 242 /* for telfunc calls */ #ifdef TELCMDS const char *telcmds[] = { "EOF", "SUSP", "ABORT", "EOR", "SE", "NOP", "DMARK", "BRK", "IP", "AO", "AYT", "EC", "EL", "GA", "SB", "WILL", "WONT", "DO", "DONT", "IAC", 0 }; #endif #define TELCMD_FIRST xEOF #define TELCMD_LAST IAC #define TELCMD_OK(x) ((unsigned int)(x) <= TELCMD_LAST && \ (unsigned int)(x) >= TELCMD_FIRST) #define TELCMD(x) telcmds[(x)-TELCMD_FIRST] /* telnet options */ #define TELOPT_BINARY 0 /* 8-bit data path */ #define TELOPT_ECHO 1 /* echo */ #define TELOPT_RCP 2 /* prepare to reconnect */ #define TELOPT_SGA 3 /* suppress go ahead */ #define TELOPT_NAMS 4 /* approximate message size */ #define TELOPT_STATUS 5 /* give status */ #define TELOPT_TM 6 /* timing mark */ #define TELOPT_RCTE 7 /* remote controlled transmission and echo */ #define TELOPT_NAOL 8 /* negotiate about output line width */ #define TELOPT_NAOP 9 /* negotiate about output page size */ #define TELOPT_NAOCRD 10 /* negotiate about CR disposition */ #define TELOPT_NAOHTS 11 /* negotiate about horizontal tabstops */ #define TELOPT_NAOHTD 12 /* negotiate about horizontal tab disposition */ #define TELOPT_NAOFFD 13 /* negotiate about formfeed disposition */ #define TELOPT_NAOVTS 14 /* negotiate about vertical tab stops */ #define TELOPT_NAOVTD 15 /* negotiate about vertical tab disposition */ #define TELOPT_NAOLFD 16 /* negotiate about output LF disposition */ #define TELOPT_XASCII 17 /* extended ascic character set */ #define TELOPT_LOGOUT 18 /* force logout */ #define TELOPT_BM 19 /* byte macro */ #define TELOPT_DET 20 /* data entry terminal */ #define TELOPT_SUPDUP 21 /* supdup protocol */ #define TELOPT_SUPDUPOUTPUT 22 /* supdup output */ #define TELOPT_SNDLOC 23 /* send location */ #define TELOPT_TTYPE 24 /* terminal type */ #define TELOPT_EOR 25 /* end or record */ #define TELOPT_TUID 26 /* TACACS user identification */ #define TELOPT_OUTMRK 27 /* output marking */ #define TELOPT_TTYLOC 28 /* terminal location number */ #define TELOPT_3270REGIME 29 /* 3270 regime */ #define TELOPT_X3PAD 30 /* X.3 PAD */ #define TELOPT_NAWS 31 /* window size */ #define TELOPT_TSPEED 32 /* terminal speed */ #define TELOPT_LFLOW 33 /* remote flow control */ #define TELOPT_LINEMODE 34 /* linemode option */ #define TELOPT_XDISPLOC 35 /* X Display Location */ #define TELOPT_OLD_ENVIRON 36 /* old - Environment variables */ #define TELOPT_AUTHENTICATION 37/* authenticate */ #define TELOPT_ENCRYPT 38 /* encryption option */ #define TELOPT_NEW_ENVIRON 39 /* new - environment variables */ #define TELOPT_TN3270E 40 /* extended 3270 regime */ #define TELOPT_EXOPL 255 /* extended-options-list */ #define NTELOPTS (1+TELOPT_TN3270E) #ifdef TELOPTS const char *telopts[NTELOPTS+1] = { "BINARY", "ECHO", "RCP", "SUPPRESS GO AHEAD", "NAME", "STATUS", "TIMING MARK", "RCTE", "NAOL", "NAOP", "NAOCRD", "NAOHTS", "NAOHTD", "NAOFFD", "NAOVTS", "NAOVTD", "NAOLFD", "EXTEND ASCII", "LOGOUT", "BYTE MACRO", "DATA ENTRY TERMINAL", "SUPDUP", "SUPDUP OUTPUT", "SEND LOCATION", "TERMINAL TYPE", "END OF RECORD", "TACACS UID", "OUTPUT MARKING", "TTYLOC", "3270 REGIME", "X.3 PAD", "NAWS", "TSPEED", "LFLOW", "LINEMODE", "XDISPLOC", "OLD-ENVIRON", "AUTHENTICATION", "ENCRYPT", "NEW-ENVIRON", "TN3270E", 0 }; #define TELOPT_FIRST TELOPT_BINARY #define TELOPT_LAST TELOPT_TN3270E #define TELOPT_OK(x) ((unsigned int)(x) <= TELOPT_LAST) #define TELOPT(x) telopts[(x)-TELOPT_FIRST] #endif /* sub-option qualifiers */ #define TELQUAL_IS 0 /* option is... */ #define TELQUAL_SEND 1 /* send option */ #define TELQUAL_INFO 2 /* new-environ objects */ #define TELOBJ_VAR 0 #define TELOBJ_VALUE 1 #define TELOBJ_ESC 2 #define TELOBJ_USERVAR 3 #endif /*!_arpa_telnet_h*/ suite3270-4.1/include/asprintf.h000066400000000000000000000037471413735575200164740ustar00rootroot00000000000000/* * Copyright (c) 2014-2015 Paul Mattes. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the names of Paul Mattes nor the names of his contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO * EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * asprintf.h * Header file for vcsprintf, asprintf and vasprintf. */ #if !defined(_WIN32) /*[*/ extern int vscprintf(const char *fmt, va_list ap); #else /*][*/ # define vscprintf _vscprintf #endif /*]*/ #if !defined(HAVE_VASPRINTF) /*[*/ extern int my_asprintf(char **bufp, const char *fmt, ...) printflike(2, 3); # define asprintf my_asprintf extern int my_vasprintf(char **bufp, const char *fmt, va_list ap); # define vasprintf my_vasprintf #endif /*]*/ suite3270-4.1/include/b3270_popups.h000066400000000000000000000032141413735575200167760ustar00rootroot00000000000000/* * Copyright (c) 2021 Paul Mattes. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the names of Paul Mattes, Jeff Sparkes, GTRC nor their * contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO * EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * b3270_popups.h * A GUI back-end for a 3270 Terminal Emulator * Error and info pop-ups. */ void popups_dump(void); suite3270-4.1/include/b3270proto.h000066400000000000000000000150441413735575200164600ustar00rootroot00000000000000/* * Copyright (c) 2018-2021 Paul Mattes. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the names of Paul Mattes nor the names of his contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO * EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * b3270proto.h * Constants for the XML b3270 protocol. */ /* Start elements. */ #define DocIn "b3270-in" #define DocOut "b3270-out" /* Indications. */ #define IndAttr "attr" #define IndBell "bell" #define IndChar "char" #define IndCodePage "code-page" #define IndCodePages "code-pages" #define IndConnectAttempt "connect-attempt" #define IndConnection "connection" #define IndCursor "cursor" #define IndErase "erase" #define IndFlipped "flipped" #define IndFont "font" #define IndFormatted "formatted" #define IndFt "ft" #define IndHello "hello" #define IndInitialize "initialize" #define IndIconName "icon-name" #define IndModels "models" #define IndModel "model" #define IndOia "oia" #define IndPassthru "passthru" #define IndPrefixes "prefixes" #define IndProxies "proxies" #define IndProxy "proxy" #define IndPopup "popup" #define IndRow "row" #define IndRunResult "run-result" #define IndScreen "screen" #define IndScreenMode "screen-mode" #define IndScroll "scroll" #define IndSetting "setting" #define IndStats "stats" #define IndTerminalName "terminal-name" #define IndThumb "thumb" #define IndTls "tls" #define IndTlsHello "tls-hello" #define IndTraceFile "trace-file" #define IndUiError "ui-error" #define IndWindowTitle "window-title" /* Operations. */ #define OperFail "fail" #define OperRegister "register" #define OperRun "run" #define OperSucceed "succeed" /* Attributes. */ #define AttrAbort "abort" #define AttrAction "action" #define AttrActions "actions" #define AttrArg "arg" #define AttrAttribute "attribute" #define AttrBack "back" #define AttrBg "bg" #define AttrBuild "build" #define AttrBytes "bytes" #define AttrBytesReceived "bytes-received" #define AttrBytesSent "bytes-sent" #define AttrCause "cause" #define AttrChar "char" #define AttrColor "color" #define AttrColumn "column" #define AttrColumns "columns" #define AttrCount "count" #define AttrCopyright "copyright" #define AttrElement "element" #define AttrEnabled "enabled" #define AttrError "error" #define AttrExtended "extended" #define AttrFatal "fatal" #define AttrField "field" #define AttrHelpText "help-text" #define AttrHelpParms "help-parms" #define AttrHost "host" #define AttrHostCert "host-cert" #define AttrHostIp "host-ip" #define AttrFg "fg" #define AttrField "field" #define AttrLine "line" #define AttrLogicalColumns "logical-columns" #define AttrLogicalRows "logical-rows" #define AttrLu "lu" #define AttrModel "model" #define AttrName "name" #define AttrOptions "options" #define AttrOverride "override" #define AttrOversize "oversize" #define AttrPTag "p-tag" #define AttrParentRTag "parent-r-tag" #define AttrPort "port" #define AttrProvider "provider" #define AttrRecordsReceived "records-received" #define AttrRecordsSent "records-sent" #define AttrRTag "r-tag" #define AttrRow "row" #define AttrRows "rows" #define AttrSaved "saved" #define AttrScreen "screen" #define AttrSecure "secure" #define AttrSession "session" #define AttrShown "shown" #define AttrState "state" #define AttrSuccess "success" #define AttrSupported "supported" #define AttrText "text" #define AttrTime "time" #define AttrTop "top" #define AttrType "type" #define AttrUsername "username" #define AttrValue "value" #define AttrVerified "verified" #define AttrVersion "version" /* Connection states. */ #define CstateNotConnected "not-connected" #define CstateReconnecting "reconnecting" #define CstateTlsPasswordPending "tls-password-pending" #define CstateResolving "resolving" #define CstateTcpPending "tcp-pending" #define CstateTlsPending "tls-pending" #define CstateProxyPending "proxy-pending" #define CstateTelnetPending "telnet-pending" #define CstateConnectedNvt "connected-nvt" #define CstateConnectedNvtCharmode "connected-nvt-charmode" #define CstateConnected3270 "connected-3270" #define CstateConnectedUnbound "connected-unbound" #define CstateConnectedEnvt "connected-e-nvt" #define CstateConnectedSscp "connected-sscp" #define CstateConnectedTn3270e "connected-tn3270e" /* OIA fields. */ #define OiaNotUndera "not-undera" #define OiaCompose "compose" #define OiaInsert "insert" #define OiaLock "lock" #define OiaLu "lu" #define OiaReverseInput "reverse-input" #define OiaScreentrace "screentrace" #define OiaScript "script" #define OiaTiming "timing" #define OiaTypeahead "typeahead" /* OIA lock reasons. */ #define OiaLockNotConnected "not-connected" #define OiaLockDeferred "deferred" #define OiaLockInhibit "inhibit" #define OiaLockMinus "minus" #define OiaLockOerr "oerr" #define OiaLockScrolled "scrolled" #define OiaLockSyswait "syswait" #define OiaLockTwait "twait" #define OiaLockDisabled "disabled" #define OiaLockField "field" /* OIA operator errors */ #define OiaOerrProtected "protected" #define OiaOerrNumeric "numeric" #define OiaOerrOverflow "overflow" #define OiaOerrDbcs "dbcs" /* Pop-up types. */ #define PtChild "child" #define PtConnectionError "connection-error" #define PtError "error" #define PtInfo "info" #define PtPrinter "printer" #define PtResult "result" /* Values. */ #define ValTrue ResTrue #define ValFalse ResFalse #define ValTrueFalse(b) ((b)? ValTrue: ValFalse) suite3270-4.1/include/b8.h000066400000000000000000000041261413735575200151470ustar00rootroot00000000000000/* * Copyright (c) 2014-2015 Paul Mattes. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the names of Paul Mattes, Don Russell, Jeff Sparkes, GTRC * nor their contributors may be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO * EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * b8.h * Declarations for 256-bit bitmap manipulation functions. */ #define MX8 256 /* maxiumum number of bits */ #define NB8 64 /* bits per unit */ #define NU8 (MX8 / NB8) /* units per object */ typedef struct { uint64_t u[NU8]; } b8_t; void b8_zero(b8_t *b); void b8_not(b8_t *b); void b8_and(b8_t *r, b8_t *a, b8_t *b); void b8_set_bit(b8_t *b, unsigned bit); bool b8_bit_is_set(b8_t *b, unsigned bit); bool b8_is_zero(b8_t *b); void b8_copy(b8_t *to, b8_t *from); bool b8_none_added(b8_t *want, b8_t *got); suite3270-4.1/include/base64.h000066400000000000000000000031611413735575200157200ustar00rootroot00000000000000/* * Copyright (c) 2018 Paul Mattes. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the names of Paul Mattes nor the names of his contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO * EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * base64.c * Base64 encoding. */ char *base64_encode(const char *s); char *base64_decode(const char *s); suite3270-4.1/include/bind-opt.h000066400000000000000000000034471413735575200163570ustar00rootroot00000000000000/* * Copyright (c) 2014-2015, 2018 Paul Mattes. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the names of Paul Mattes nor the names of his contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO * EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * bind-opt.h * Header file for option parsing for -scriptport and -httpd. * */ bool parse_bind_opt(const char *spec, struct sockaddr **addr, socklen_t *addrlen); char *canonical_bind_opt(struct sockaddr *sa); char *canonical_bind_opt_res(const char *res); suite3270-4.1/include/boolstr.h000066400000000000000000000031661413735575200163250ustar00rootroot00000000000000/* * Copyright (c) 2018 Paul Mattes. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the names of Paul Mattes nor the names of his contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO * EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * boolstr.h * Boolean value parsing. */ const char *boolstr(const char *text, bool *result); suite3270-4.1/include/child.h000066400000000000000000000033621413735575200157220ustar00rootroot00000000000000/* * Copyright (c) 2001-2009, 2013, 2014, 2018, 2020 Paul Mattes. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the names of Paul Mattes nor the names of his contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO * EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * child.h * Global declarations for child.c. */ #if !defined(_WIN32) /*[*/ int fork_child(void); #else /*][*/ void get_child_handles(HANDLE *out, HANDLE *err); #endif /*]*/ void child_ignore_output(void); suite3270-4.1/include/child_popups.h000066400000000000000000000033161413735575200173270ustar00rootroot00000000000000/* * Copyright (c) 1999-2009, 2014-2015 Paul Mattes. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the names of Paul Mattes nor the names of his contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO * EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * child_popups.h * Child shell popups delarations. */ void popup_child_output(bool is_err, abort_callback_t *a, const char *fmt, ...) printflike(3, 4); void child_popup_init(void); suite3270-4.1/include/childscript.h000066400000000000000000000034011413735575200171410ustar00rootroot00000000000000/* * Copyright (c) 2016, 2018 Paul Mattes. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the names of Paul Mattes nor the names of his contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO * EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * childscript.h * Global declarations for childscript.c. */ bool Script_action(ia_t ia, unsigned argc, const char **argv); bool Prompt_action(ia_t ia, unsigned argc, const char **argv); void array_add(const char ***s, int ix, const char *v); suite3270-4.1/include/codepage.h000066400000000000000000000040701413735575200164030ustar00rootroot00000000000000/* * Copyright (c) 1993-2009, 2013-2016, 2018-2019 Paul Mattes. * Copyright (c) 1990, Jeff Sparkes. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the names of Paul Mattes, Jeff Sparkes nor the names of their * contributors may be used to endorse or promote products derived from * this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES AND JEFF SPARKES "AS IS" AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL PAUL MATTES OR JEFF SPARKES BE LIABLE FOR * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH * DAMAGE. */ /* * codepage.h * Global declarations for codepage.c */ extern bool codepage_changed; extern unsigned long cgcsgid; extern unsigned long cgcsgid_dbcs; enum cs_result { CS_OKAY, CS_NOTFOUND, CS_BAD, CS_PREREQ, CS_ILLEGAL }; enum cs_result codepage_init(const char *cpname); const char *get_codepage_name(void); const char *get_codepage_number(void); const char *get_canonical_codepage(void); void codepage_list(void); void codepage_register(void); suite3270-4.1/include/copyright.h000066400000000000000000000034641413735575200166520ustar00rootroot00000000000000/* * Copyright (c) 1993-2018 Paul Mattes. * Copyright (c) 1990, Jeff Sparkes. * Copyright (c) 1989, Georgia Tech Research Corporation (GTRC), Atlanta, GA * 30332. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the names of Paul Mattes, Jeff Sparkes, GTRC nor the names of * their contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES, JEFF SPARKES AND GTRC "AS IS" AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL PAUL MATTES, JEFF SPARKES OR GTRC BE * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. */ /* * copyright.h * A 3270 Terminal Emulator * Copyright display */ const char *show_copyright(void); suite3270-4.1/include/ctlr.h000066400000000000000000000036211413735575200156010ustar00rootroot00000000000000/* * Copyright (c) 1995-2009, Paul Mattes. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the names of Paul Mattes nor the names of his contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO * EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * ctlr.h * External declarations for ctlr.c data structures. */ extern int buffer_addr; /* buffer address */ extern int cursor_addr; /* cursor address */ extern struct ea *ea_buf; /* 3270 device buffer */ extern struct ea *aea_buf; /* alternate 3270 device buffer */ extern bool formatted; /* contains at least one field? */ extern bool is_altbuffer; /* in alternate-buffer mode? */ suite3270-4.1/include/ctlrc.h000066400000000000000000000130371413735575200157460ustar00rootroot00000000000000/* * Copyright (c) 2005-2009, 2013-2015, 2018, 2020 Paul Mattes. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the names of Paul Mattes nor the names of his contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO * EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * ctlrc.h * Global declarations for ctlr.c. */ enum pds { PDS_OKAY_NO_OUTPUT = 0, /* command accepted, produced no output */ PDS_OKAY_OUTPUT = 1, /* command accepted, produced output */ PDS_BAD_CMD = -1, /* command rejected */ PDS_BAD_ADDR = -2 /* command contained a bad address */ }; extern unsigned char crm_attr[]; extern int crm_nattr; extern unsigned char reply_mode; extern bool screen_alt; extern bool screen_changed; extern int first_changed; extern int last_changed; void ctlr_aclear(int baddr, int count, int clear_ea); void ctlr_add(int baddr, unsigned char c, unsigned char cs); void ctlr_add_nvt(int baddr, ucs4_t ucs4, unsigned char cs); void ctlr_add_bg(int baddr, unsigned char color); void ctlr_add_cs(int baddr, unsigned char cs); void ctlr_add_fa(int baddr, unsigned char fa, unsigned char cs); void ctlr_add_fg(int baddr, unsigned char color); void ctlr_add_gr(int baddr, unsigned char gr); void ctlr_altbuffer(bool alt); bool ctlr_any_data(void); void ctlr_bcopy(int baddr_from, int baddr_to, int count, int move_ea); void ctlr_changed(int bstart, int bend); void ctlr_clear(bool can_snap); void ctlr_erase(bool alt); void ctlr_erase_all_unprotected(void); void ctlr_init(unsigned cmask); const char *ctlr_query_cur_size(void); const char *ctlr_query_cur_size_old(void); const char *ctlr_query_cursor(void); const char *ctlr_query_cursor1(void); const char *ctlr_query_formatted(void); const char *ctlr_query_max_size(void); const char *ctlr_query_max_size_old(void); void ctlr_read_buffer(unsigned char aid_byte); void ctlr_read_modified(unsigned char aid_byte, bool all); void ctlr_reinit(unsigned cmask); void ctlr_reset(void); void ctlr_scroll(unsigned char fg, unsigned char bg); void ctlr_shrink(void); void ctlr_snap_buffer(void); void ctlr_snap_buffer_sscp_lu(void); bool ctlr_snap_modes(void); void ctlr_wrapping_memmove(int baddr_to, int baddr_from, int count); enum pds ctlr_write(unsigned char buf[], size_t buflen, bool erase); void ctlr_write_sscp_lu(unsigned char buf[], size_t buflen); struct ea *fa2ea(int baddr); int find_field_attribute(int baddr); int find_field_attribute_ea(int baddr, struct ea *ea); unsigned char get_field_attribute(register int baddr); bool get_bounded_field_attribute(register int baddr, register int bound, unsigned char *fa_out); void mdt_clear(int baddr); void mdt_set(int baddr); int next_unprotected(int baddr0); enum pds process_ds(unsigned char *buf, size_t buflen); void ps_process(void); void set_rows_cols(int mn, int ovc, int ovr); void ticking_start(bool anyway); void ctlr_register(void); enum dbcs_state { DBCS_NONE = 0, /* position is not DBCS */ DBCS_LEFT, /* position is left half of DBCS character */ DBCS_RIGHT, /* position is right half of DBCS character */ DBCS_SI, /* position is SI terminating DBCS subfield */ DBCS_SB, /* position is SBCS character after the SI */ DBCS_LEFT_WRAP, /* position is left half of split DBCS */ DBCS_RIGHT_WRAP, /* position is right half of split DBCS */ DBCS_DEAD /* position is dead left-half DBCS */ }; #define IS_LEFT(d) ((d) == DBCS_LEFT || (d) == DBCS_LEFT_WRAP) #define IS_RIGHT(d) ((d) == DBCS_RIGHT || (d) == DBCS_RIGHT_WRAP) #define IS_DBCS(d) (IS_LEFT(d) || IS_RIGHT(d)) #define MAKE_LEFT(b) { \ if (((b) % COLS) == ((ROWS * COLS) - 1)) \ ea_buf[(b)].db = DBCS_LEFT_WRAP; \ else \ ea_buf[(b)].db = DBCS_LEFT; \ } #define MAKE_RIGHT(b) { \ if (!((b) % COLS)) \ ea_buf[(b)].db = DBCS_RIGHT_WRAP; \ else \ ea_buf[(b)].db = DBCS_RIGHT; \ } #define SOSI(c) (((c) == EBC_so)? EBC_si: EBC_so) enum dbcs_why { DBCS_FIELD, DBCS_SUBFIELD, DBCS_ATTRIBUTE }; enum dbcs_state ctlr_dbcs_state(int baddr); enum dbcs_state ctlr_dbcs_state_ea(int baddr, struct ea *ea); enum dbcs_state ctlr_lookleft_state(int baddr, enum dbcs_why *why); int ctlr_dbcs_postprocess(void); #define EC_SCROLL 0x01 /* Enable cursor from scroll logic */ #define EC_NVT 0x02 /* Enable cursor from NVT */ #define EC_CONNECT 0x04 /* Enable cursor from connection state */ void ctlr_enable_cursor(bool enable, unsigned source); suite3270-4.1/include/fallbacks.h000066400000000000000000000034231413735575200165570ustar00rootroot00000000000000/* * Copyright (c) 2013, 2015 Paul Mattes. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the names of Paul Mattes nor the names of his contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO * EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * fallbacks.h * Global declarations for fallbacks.c. */ #if defined(X3270_DISPLAY) /*[*/ extern unsigned char common_fallbacks[]; extern unsigned char color_fallbacks[]; extern unsigned char mono_fallbacks[]; #else /*][*/ extern char *fallbacks[]; #endif /*]*/ suite3270-4.1/include/find_console.h000066400000000000000000000040311413735575200172730ustar00rootroot00000000000000/* * Copyright (c) 2019-2020 Paul Mattes. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the names of Paul Mattes nor the names of his contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO * EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * find_console.h * Console window support. */ #define TITLE_SUBST "%T%" /* Window title substitution */ #define COMMAND_SUBST "%C%" /* Command substitution */ /* How to start a console in a window. */ typedef struct { const char *program; /* program name */ const char *command_string; /* command string */ } console_desc_t; bool find_in_path(const char *program); console_desc_t *find_console(const char **errmsg); int console_args(console_desc_t *t, const char *title, const char ***s, int ix); suite3270-4.1/include/fprint_screen.h000066400000000000000000000052441413735575200175010ustar00rootroot00000000000000/* * Copyright (c) 1994-2015, 2018, 2021 Paul Mattes. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the names of Paul Mattes nor the names of his contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO * EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * fprint_screen.h * Screen printing functions. */ #define FPS_EVEN_IF_EMPTY 0x1 /* print even if screen is blank */ #define FPS_MODIFIED_ITALIC 0x2 /* print modified fields in italic */ #define FPS_FF_SEP 0x4 /* use FFs to divide pages in text */ #define FPS_NO_HEADER 0x8 /* do not generate HTML header */ #define FPS_NO_DIALOG 0x10 /* do not use Windows print dialog */ #define FPS_DIALOG_COMPLETE 0x20 /* Windows dialog is complete */ #define FPS_OIA 0x40 /* include the OIA */ #define FPS_INCLUDE_ZERO_INPUT 0x80 /* include zero input fields */ typedef struct _fps *fps_t; typedef enum { FPS_STATUS_SUCCESS = 0, FPS_STATUS_SUCCESS_WRITTEN = 1, FPS_STATUS_WAIT = 2, FPS_STATUS_ERROR = -1, FPS_STATUS_CANCEL = -2 } fps_status_t; #define FPS_IS_ERROR(fps) ((int)fps < 0) fps_status_t fprint_screen(FILE *f, ptype_t ptype, unsigned opts, const char *caption, const char *printer_name, void *wait_context); fps_status_t fprint_screen_start(FILE *f, ptype_t ptype, unsigned opts, const char *caption, const char *printer_name, fps_t *fps, void *wait_context); fps_status_t fprint_screen_body(fps_t fps); fps_status_t fprint_screen_done(fps_t *fps); suite3270-4.1/include/ft.h000066400000000000000000000055371413735575200152560ustar00rootroot00000000000000/* * Copyright (c) 1996-2009, 2014-2015, 2020 Paul Mattes. * Copyright (c) 1995, Dick Altenbern. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the names of Paul Mattes, Dick Altenbern nor the names of * their contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES AND DICK ALTENBERN "AS IS" AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL PAUL MATTES OR DICK ALTENBERN BE LIABLE FOR * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH * DAMAGE. */ /* * ft.h * Global declarations for ft.c. */ enum ft_state { FT_NONE, /* No transfer in progress */ FT_AWAIT_ACK, /* IND$FILE sent, awaiting acknowledgement message */ FT_RUNNING, /* Ack received, data flowing */ FT_ABORT_WAIT, /* Awaiting chance to send an abort */ FT_ABORT_SENT /* Abort sent; awaiting response */ }; extern enum ft_state ft_state; extern enum iaction ft_cause; extern unsigned char i_ft2asc[], i_asc2ft[]; void ft_aborting(void); void ft_complete(const char *errmsg); void ft_init(void); void ft_running(bool is_cut); void ft_update_length(void); bool ft_do_cancel(void); void ft_register(void); # if defined(_WIN32) /*[*/ size_t ft_ebcdic_to_multibyte(ebc_t ebc, char mb[], size_t mb_len); int ft_unicode_to_multibyte(ucs4_t ucs4, char *mb, size_t mb_len); ucs4_t ft_multibyte_to_unicode(const char *mb, size_t mb_len, int *consumedp, enum me_fail *errorp); # else /*][*/ # define ft_ebcdic_to_multibyte(ebc, mb, mb_len) \ ebcdic_to_multibyte(ebc, mb, mb_len) # define ft_unicode_to_multibyte(ucs4, mb, mb_len) \ unicode_to_multibyte(ucs4, mb, mb_len) # define ft_multibyte_to_unicode(mb, mb_len, consumedp, errorp) \ multibyte_to_unicode(mb, mb_len, consumedp, errorp) # endif /*]*/ suite3270-4.1/include/ft_cut.h000066400000000000000000000031261413735575200161210ustar00rootroot00000000000000/* * Copyright (c) 1996-2009, 2015 Paul Mattes. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the names of Paul Mattes nor the names of his contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO * EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * ft_cut.c * Declarations for ft_cut.c. */ void ft_cut_data(void); suite3270-4.1/include/ft_cut_ds.h000066400000000000000000000073251413735575200166140ustar00rootroot00000000000000/* * Copyright (c) 1996-2009, 2015 Paul Mattes. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the names of Paul Mattes nor the names of his contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO * EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * ft_cut_ds.c * Data Stream definitions for CUT-style file transfers. */ /* Primary Area */ #define O_FRAME_TYPE 0 /* offset to frame type */ #define FT_CONTROL_CODE 0xc3 /* frame type: control code (host->) */ #define O_CC_FRAME_SEQ 1 /* offset to frame sequence */ #define O_CC_STATUS_CODE 2 /* offset to status code */ #define SC_HOST_ACK 0x8181 /* ack of IND$FILE command */ #define SC_XFER_COMPLETE 0x8189 /* file transfer complete */ #define SC_ABORT_FILE 0x8194 /* abort, file error */ #define SC_ABORT_XMIT 0x8198 /* abort, transmission error */ #define O_CC_MESSAGE 4 /* offset of message text */ #define FT_DATA_REQUEST 0xc2 /* frame type: data request (host->) */ #define O_DR_SF 1 /* offset to start field */ #define O_DR_DATA_CODE 2 /* offset to data code */ #define O_DR_FRAME_SEQ 3 /* offset to frame sequence */ #define FT_RETRANSMIT 0x4c /* frame type: retransmit (host->) */ #define FT_DATA 0xc1 /* frame type: data (bidirectional) */ #define O_DT_FRAME_SEQ 1 /* offset to frame sequence */ #define O_DT_CSUM 2 /* offset to checksum */ #define O_DT_LEN 3 /* offset to length */ #define O_DT_DATA 5 /* offset to data */ /* Response Area */ #define O_RESPONSE 1914 /* offset to response area */ #define RO_FRAME_TYPE (O_RESPONSE+1) /* response frame type */ #define RFT_RETRANSMIT 0x4c /* response frame type: retransmit */ #define RFT_CONTROL_CODE 0xc3 /* response frame type: control code */ #define RO_FRAME_SEQ (O_RESPONSE+2) /* response frame sequence */ #define RO_REASON_CODE (O_RESPONSE+3) /* response reason code */ /* Special Data */ #define EOF_DATA1 0x5c /* special data for EOF */ #define EOF_DATA2 0xa9 /* Acknowledgement AIDs */ #define ACK_OK AID_ENTER #define ACK_RETRANSMIT AID_PF1 #define ACK_RESYNC_VM AID_CLEAR #define ACK_RESYNC_TSO AID_PA2 #define ACK_ABORT AID_PF2 /* Data area for uploads. */ #define O_UP_DATA_CODE 2 /* offset to data code */ #define O_UP_FRAME_SEQ 3 /* offset to frame sequence */ #define O_UP_CSUM 4 /* offset to checksum */ #define O_UP_LEN 5 /* offset to length */ #define O_UP_DATA 7 /* offset to start of data */ #define O_UP_MAX (1919 - O_UP_DATA) /* max upload data */ suite3270-4.1/include/ft_dft.h000066400000000000000000000034151413735575200161040ustar00rootroot00000000000000/* * Copyright (c) 1996-2009, 2015 Paul Mattes. * Copyright (c) 1995, Dick Altenbern. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the names of Paul Mattes, Dick Altenbern nor the names of * their contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES AND DICK ALTENBERN "AS IS" AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL PAUL MATTES OR DICK ALTENBERN BE LIABLE FOR * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH * DAMAGE. */ /* * ft_dft.h * Declarations for ft_dft.c. */ void ft_dft_data(unsigned char *data, int length); void dft_read_modified(void); int set_dft_buffersize(int); suite3270-4.1/include/ft_dft_ds.h000066400000000000000000000051111413735575200165650ustar00rootroot00000000000000/* * Copyright (c) 1996-2009, 2015 Paul Mattes. * Copyright (c) 1995, Dick Altenbern. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the names of Paul Mattes, Dick Altenbern nor the names of * their contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES AND DICK ALTENBERN "AS IS" AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL PAUL MATTES OR DICK ALTENBERN BE LIABLE FOR * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH * DAMAGE. */ /* * ft_dft_ds.h * DFT-style file transfer codes. */ /* Host requests. */ #define TR_OPEN_REQ 0x0012 /* open request */ #define TR_CLOSE_REQ 0x4112 /* close request */ #define TR_SET_CUR_REQ 0x4511 /* set cursor request */ #define TR_GET_REQ 0x4611 /* get request */ #define TR_INSERT_REQ 0x4711 /* insert request */ #define TR_DATA_INSERT 0x4704 /* data to insert */ /* PC replies. */ #define TR_GET_REPLY 0x4605 /* data for get */ #define TR_NORMAL_REPLY 0x4705 /* insert normal reply */ #define TR_ERROR_REPLY 0x08 /* error reply (low 8 bits) */ #define TR_CLOSE_REPLY 0x4109 /* close acknowledgement */ /* Other headers. */ #define TR_RECNUM_HDR 0x6306 /* record number header */ #define TR_ERROR_HDR 0x6904 /* error header */ #define TR_NOT_COMPRESSED 0xc080 /* data not compressed */ #define TR_BEGIN_DATA 0x61 /* beginning of data */ /* Error codes. */ #define TR_ERR_EOF 0x2200 /* get past end of file */ #define TR_ERR_CMDFAIL 0x0100 /* command failed */ suite3270-4.1/include/ft_gui.h000066400000000000000000000043611413735575200161140ustar00rootroot00000000000000/* * Copyright (c) 1996-2015, 2018, 2020 Paul Mattes. * Copyright (c) 1995, Dick Altenbern. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the names of Paul Mattes, Dick Altenbern nor the names of * their contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES AND DICK ALTENBERN "AS IS" AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL PAUL MATTES OR DICK ALTENBERN BE LIABLE FOR * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH * DAMAGE. */ /* * ft_gui.h * Header file for file transfer dialogs. */ void ft_gui_progress_popdown(void); void ft_gui_errmsg_prepare(char *msg); void ft_gui_clear_progress(void); void ft_gui_complete_popup(const char *msg, bool is_error); void ft_gui_update_length(size_t length); void ft_gui_running(size_t length); void ft_gui_aborting(void); typedef enum { FGI_NOP, /* interaction not supported */ FGI_SUCCESS, /* parameters set, proceed */ FGI_ABORT, /* user aborted transfer */ FGI_ASYNC /* dialog running asynchronously */ } ft_gui_interact_t; ft_gui_interact_t ft_gui_interact(ft_conf_t *p); void ft_gui_awaiting(void); suite3270-4.1/include/ft_private.h000066400000000000000000000064241413735575200170040ustar00rootroot00000000000000/* * Copyright (c) 1996-2014, 2018-2020 Paul Mattes. * Copyright (c) 1995, Dick Altenbern. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the names of Paul Mattes, Dick Altenbern nor the names of * their contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES AND DICK ALTENBERN "AS IS" AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL PAUL MATTES OR DICK ALTENBERN BE LIABLE FOR * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH * DAMAGE. */ /* * ft_private.h * Private definitions for ft.c. */ typedef enum { HT_TSO, HT_VM, HT_CICS } host_type_t; bool ft_encode_host_type(const char *s, host_type_t *ht); const char *ft_decode_host_type(host_type_t ht); typedef enum { DEFAULT_RECFM, RECFM_FIXED, RECFM_VARIABLE, RECFM_UNDEFINED } recfm_t; bool ft_encode_recfm(const char *s, recfm_t *recfm); const char *ft_decode_recfm(recfm_t recfm); typedef enum { DEFAULT_UNITS, TRACKS, CYLINDERS, AVBLOCK } units_t; bool ft_encode_units(const char *s, units_t *units); const char *ft_decode_units(units_t units); typedef struct { /* User-specified parameters. */ char *host_filename; char *local_filename; bool receive_flag; bool append_flag; host_type_t host_type; bool ascii_flag; bool cr_flag; bool remap_flag; recfm_t recfm; units_t units; bool allow_overwrite; int lrecl; int blksize; int primary_space; int secondary_space; int avblock; int dft_buffersize; #if defined(_WIN32) /*[*/ int windows_codepage; #endif /*]*/ /* Invocation state. */ bool is_action; } ft_conf_t; extern ft_conf_t *ftc; char *ft_resolve_dir(ft_conf_t *p); FILE *ft_go(ft_conf_t *p, enum iaction cause); void ft_init_conf(ft_conf_t *p); bool ft_start_backend(ft_conf_t *p, enum iaction cause); /* Transient state. */ typedef struct { char *resolved_local_filename; FILE *local_file; size_t length; bool is_cut; bool last_dbcs; bool last_cr; enum ftd { FT_DBCS_NONE, FT_DBCS_SO, FT_DBCS_LEFT } dbcs_state; unsigned char dbcs_byte1; } ft_tstate_t; extern ft_tstate_t fts; #define __FT_PRIVATE_H suite3270-4.1/include/gdi_print.h000066400000000000000000000043611413735575200166160ustar00rootroot00000000000000/* * Copyright (c) 2014-2015, 2018 Paul Mattes. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the names of Paul Mattes nor the names of his contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO * EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * gdi_print.h * GDI screen printing functions. */ #if !defined(_WIN32) /*[*/ #error For Windows ony #endif /*]*/ /* Header for screen snapshots. */ typedef struct { unsigned signature; /* Signature, to make sure we haven't gotten lost */ unsigned short rows; /* Rows */ unsigned short cols; /* Columns */ } gdi_header_t; /* Signature for GDI snapshot files. */ #define GDI_SIGNATURE 0x33323730 typedef enum { GDI_STATUS_SUCCESS = 0, GDI_STATUS_WAIT = 1, GDI_STATUS_ERROR = -1, GDI_STATUS_CANCEL = -2 } gdi_status_t; #define GDI_STATUS_IS_ERROR(gs) ((int)gs < 0) gdi_status_t gdi_print_start(const char *printer_name, unsigned opts, void *wait_context); gdi_status_t gdi_print_finish(FILE *f, const char *caption); suite3270-4.1/include/globals.h000066400000000000000000000354511413735575200162660ustar00rootroot00000000000000/* * Copyright (c) 1993-2021 Paul Mattes. * Copyright (c) 2005, Don Russell. * Copyright (c) 1990, Jeff Sparkes. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the names of Paul Mattes, Don Russell, Jeff Sparkes nor the * names of their contributors may be used to endorse or promote * products derived from this software without specific prior written * permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES, DON RUSSELL AND JEFF SPARKES * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL PAUL MATTES, DON RUSSELL OR JEFF * SPARKES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, * OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. */ /* * globals.h * Common definitions for x3270, c3270, s3270 and tcl3270. */ /* Autoconf settings. */ #include "conf.h" /* autoconf settings */ #if defined(HAVE_VASPRINTF) && !defined(_GNU_SOURCE) /*[*/ #define _GNU_SOURCE /* vasprintf isn't POSIX */ #endif /*]*/ /* * OS-specific #defines. Except for the blocking-connect workarounds, these * should be replaced with autoconf probes as soon as possible. */ /* * BLOCKING_CONNECT_ONLY * Use only blocking sockets. */ #if defined(sco) /*[*/ # define BLOCKING_CONNECT_ONLY 1 #endif /*]*/ #if defined(apollo) /*[*/ # define BLOCKING_CONNECT_ONLY 1 #endif /*]*/ /* * Compiler-specific #defines. */ /* '_is_unused' explicitly flags an unused parameter */ #if defined(__GNUC__) /*[*/ # define _is_unused __attribute__((__unused__)) # define printflike(s,f) __attribute__ ((__format__ (__printf__, s, f))) #else /*][*/ # define _is_unused /* nothing */ # define printflike(s, f) /* nothing */ #endif /*]*/ #if 'A' > 'a' /*[*/ # define EBCDIC_HOST 1 #endif /*]*/ /* * Prerequisite #includes. */ #include /* Unix standard I/O library */ #include /* Other Unix library functions */ #if !defined(_MSC_VER) /*[*/ # include /* Unix system calls */ #endif /*]*/ #include /* Character classes */ #include /* String manipulations */ #include /* Integer types */ #include /* Basic system data types */ #if !defined(_WIN32) /*[*/ # include /* Socket data types */ #endif /*]*/ #if !defined(_MSC_VER) /*[*/ # include /* System time-related data types */ #endif /*]*/ #include /* C library time functions */ #include /* variable argument lists */ #if !defined(_MSC_VER) /*[*/ # include /* bool, true, false */ #else /*][*/ typedef char bool; /* roll our own for MSC */ # define true 1 # define false 0 #endif /*]*/ #if defined(_WIN32) /*[*/ # include "wincmn.h" /* Common Windows definitions */ #endif /*]*/ #include "localdefs.h" /* {s,tcl,c}3270-specific defines */ /* * Helpful macros. */ #define STR_HELPER(x) #x #define STR(x) STR_HELPER(x) /* * Unicode UCS-4 characters are (hopefully) 32 bits. * EBCDIC (including DBCS) is (hopefully) 16 bits. */ typedef unsigned int ucs4_t; typedef unsigned short ebc_t; /* * Cancel out contradictory parts. */ #if defined(X3270_IPV6) && !defined(AF_INET6) /*[*/ # undef X3270_IPV6 #endif /*]*/ /* Local process (-e) header files. */ #if defined(X3270_LOCAL_PROCESS) && defined(HAVE_FORKPTY) /*[*/ # define LOCAL_PROCESS 1 # include # if defined(HAVE_PTY_H) /*[*/ # include # endif /*]*/ # if defined(HAVE_LIBUTIL_H) /*[*/ # include # endif /*]*/ # if defined(HAVE_UTIL_H) /*[*/ # include # endif /*]*/ #endif /*]*/ /* Stop conflicting with curses' COLS, even if we don't link with it. */ #define COLS cCOLS /* Check for some version of 'start' or 'open'. */ #if defined(_WIN32) || defined(linux) || defined(__linux__) || defined(__APPLE__) || defined(__CYGWIN__) /*[*/ #define HAVE_START 1 #endif /*]*/ /* Memory allocation. */ void *Malloc(size_t); void Free(void *); void *Calloc(size_t, size_t); void *Realloc(void *, size_t); char *NewString(const char *); /* Error exits. */ void Error(const char *); void Warning(const char *); /* A key symbol. */ typedef unsigned long ks_t; #define KS_NONE 0L /* Host flags. */ #define HOST_FLAG(t) HOST_nFLAG(host_flags, t) /* Simple global variables */ extern int COLS; /* current */ extern int ROWS; extern int maxCOLS; /* maximum */ extern int maxROWS; extern int defROWS; /* default (EraseWrite) */ extern int defCOLS; extern int altROWS; /* alternate (EraseWriteAlternate) */ extern int altCOLS; extern const char *app; extern const char *build; extern const char *cyear; extern const char *build_rpq_timestamp; extern const char *build_rpq_version; extern char *connected_lu; extern char *connected_type; extern char *current_host; extern unsigned short current_port; extern bool dbcs; extern char *efontname; extern bool ever_3270; extern bool exiting; extern bool flipped; extern char *full_current_host; extern char *full_efontname; extern char *full_efontname_dbcs; extern char full_model_name[]; extern bool *funky_font; extern char *hostname; extern unsigned host_flags; extern char luname[]; #if defined(LOCAL_PROCESS) /*[*/ extern bool local_process; #endif /*]*/ extern char *model_name; extern int model_num; extern bool non_tn3270e_host; extern int ov_cols, ov_rows; extern bool ov_auto; extern char *profile_name; extern const char *programname; extern char *qualified_host; extern char *reconnect_host; extern int screen_depth; extern bool scroll_initted; extern bool shifted; extern bool *standard_font; extern char *termtype; extern bool visible_control; extern int *xtra_width; extern int x3270_exit_code; extern bool x3270_exiting; #if defined(_WIN32) /*[*/ extern char *instdir; extern char *mydesktop; extern char *mydocs3270; extern char *commondocs3270; #endif /*]*/ #if defined(_WIN32) /*[*/ extern unsigned windirs_flags; #endif /*]*/ typedef struct { bool m3279; /* 3270 (color) mode */ bool extended; /* 3270 extended (-E) mode */ } xmode_t; extern xmode_t mode; /* Data types and complex global variables */ /* connection state */ enum cstate { NOT_CONNECTED, /* no socket, unknown mode */ RECONNECTING, /* delay before automatic reconnect */ TLS_PASS, /* waiting for interactive TLS password */ /* Half-connected states. */ RESOLVING, /* resolving hostname */ TCP_PENDING, /* socket connection pending */ TLS_PENDING, /* TLS negotiation pending */ PROXY_PENDING, /* proxy negotiation pending */ TELNET_PENDING, /* TELNET negotiation pending */ /* Connected states. */ CONNECTED_NVT, /* connected in NVT mode */ CONNECTED_NVT_CHAR, /* connected in NVT character-at-a-time mode */ CONNECTED_3270, /* connected in RFC 1576 TN3270 mode */ CONNECTED_UNBOUND, /* connected in TN3270E mode, unbound */ CONNECTED_E_NVT, /* connected in TN3270E mode, NVT mode */ CONNECTED_SSCP, /* connected in TN3270E mode, SSCP-LU mode */ CONNECTED_TN3270E, /* connected in TN3270E mode, 3270 mode */ NUM_CSTATE /* number of cstates */ }; extern enum cstate cstate; #define cPCONNECTED(c) (c > NOT_CONNECTED) #define cHALF_CONNECTED(c) (c >= RESOLVING && c < CONNECTED_NVT) #define cCONNECTED(c) (c > TCP_PENDING) #define cIN_NVT(c) (c == CONNECTED_NVT || \ c == CONNECTED_NVT_CHAR || \ c == CONNECTED_E_NVT) #define cIN_3270(c) (c == CONNECTED_3270 || \ c == CONNECTED_TN3270E || \ c == CONNECTED_SSCP) #define cIN_SSCP(c) (c == CONNECTED_SSCP) #define cIN_TN3270E(c) (c == CONNECTED_TN3270E) #define cIN_E(c) (c >= CONNECTED_UNBOUND) #define cFULL_SESSION(c) (cIN_NVT(c) || cIN_3270(c) || cIN_SSCP(c)) #define PCONNECTED cPCONNECTED(cstate) #define HALF_CONNECTED cHALF_CONNECTED(cstate) #define CONNECTED cCONNECTED(cstate) #define IN_NVT cIN_NVT(cstate) #define IN_3270 cIN_3270(cstate) #define IN_SSCP cIN_SSCP(cstate) #define IN_TN3270E cIN_TN3270E(cstate) #define IN_E cIN_E(cstate) #define FULL_SESSION cFULL_SESSION(cstate) /* network connection status */ typedef enum { NC_FAILED, /* failed */ NC_RESOLVING, /* name resolution in progress */ NC_TLS_PASS, /* TLS password pending */ NC_CONNECT_PENDING, /* connection pending */ NC_CONNECTED /* connected */ } net_connect_t; /* toggles */ typedef enum { MONOCASE, /* all-uppercase display */ ALT_CURSOR, /* block cursor */ CURSOR_BLINK, /* blinking cursor */ SHOW_TIMING, /* display command execution time in the OIA */ TRACING, /* trace data and events */ SCROLL_BAR, /* include scroll bar */ LINE_WRAP, /* NVT xterm line-wrap mode (auto-wraparound) */ BLANK_FILL, /* treat trailing blanks like NULLs on input */ SCREEN_TRACE, /* trace screen contents to file or printer */ MARGINED_PASTE, /* respect left margin when pasting */ RECTANGLE_SELECT, /* select by rectangles */ CROSSHAIR, /* display cursor crosshair */ VISIBLE_CONTROL, /* display visible control characters */ AID_WAIT, /* make scripts wait for AIDs to complete */ UNDERSCORE, /* special c3270/wc3270 underscore display mode */ OVERLAY_PASTE, /* overlay protected fields when pasting */ TYPEAHEAD, /* typeahead */ APL_MODE, /* APL mode */ ALWAYS_INSERT, /* always-insert mode */ RIGHT_TO_LEFT, /* right-to-left display */ REVERSE_INPUT, /* reverse input */ INSERT_MODE, /* insert mode */ SELECT_URL, /* double-click on a URL opens the browser */ N_TOGGLES } toggle_index_t; bool toggled(toggle_index_t ix); /* * ea.ucs4 (Unicode) will be non-zero if the buffer location was set in NVT * mode. * ea.ec (EBCDIC) will be non-zero if the buffer location was set in 3270 mode. * They will *never* both be non-zero. * * We translate between the two values as needed for display or for the Ascii() * action, but when getting a raw buffer dump via ReadBuffer(Ebcdic) or sending * the buffer to the host (Read Modified), we only send EBCDIC: If there is * Unicode in a buffer location, we consider it an EBCDIC X'00' (NUL). * * Note that the right-hand location of a DBCS pair is ec=0 in 3270 mode, but * ucs4=0x20 (a space) in NVT mode. */ /* extended attributes */ struct ea { unsigned char ec; /* EBCDIC code */ unsigned char fa; /* field attribute, if nonzero */ unsigned char fg; /* foreground color (0x00 or 0xf) */ unsigned char bg; /* background color (0x00 or 0xf) */ unsigned char gr; /* ANSI graphics rendition bits */ unsigned char cs; /* character set (GE flag, or 0..2) */ unsigned char ic; /* input control (DBCS) */ unsigned char db; /* DBCS state */ ucs4_t ucs4; /* Unicode value, if set in NVT mode */ }; #define GR_BLINK 0x01 #define GR_REVERSE 0x02 #define GR_UNDERLINE 0x04 #define GR_INTENSIFY 0x08 #define GR_WRAP 0x10 /* NVT-mode wrap occurred after this position */ #define GR_RESET 0x20 /* ignore preceding field attribute */ #define CS_MASK 0x03 /* mask for specific character sets */ #define CS_BASE 0x00 /* base character set (X'00') */ #define CS_APL 0x01 /* APL character set (X'01' or GE) */ #define CS_LINEDRAW 0x02 /* DEC line-drawing character set (ANSI) */ #define CS_DBCS 0x03 /* DBCS character set (X'F8') */ #define CS_GE 0x04 /* cs flag for Graphic Escape */ /* input key type */ enum keytype { KT_STD, KT_GE }; /* Shorthand macros */ #define Replace(var, value) do { Free(var); var = (value); } while(false) /* Configuration change masks. */ #define NO_CHANGE 0x0000 /* no change */ #define MODEL_CHANGE 0x0001 /* screen dimensions changed */ #define FONT_CHANGE 0x0002 /* emulator font changed */ #define COLOR_CHANGE 0x0004 /* color scheme or 3278/9 mode changed */ #define SCROLL_CHANGE 0x0008 /* scrollbar snapped on or off */ #define CODEPAGE_CHANGE 0x0010 /* code page changed */ #define ALL_CHANGE 0xffff /* everything changed */ /* Portability macros */ /* Equivalent of setlinebuf */ #if defined(_IOLBF) /*[*/ # define SETLINEBUF(s) setvbuf(s, NULL, _IOLBF, BUFSIZ) #else /*][*/ # define SETLINEBUF(s) setlinebuf(s) #endif /*]*/ /* Default DFT file transfer buffer size. */ #if !defined(DFT_BUF) /*[*/ # define DFT_BUF 16384 #endif /*]*/ #define DFT_MIN_BUF 256 #define DFT_MAX_BUF 32767 /* DBCS Preedit Types */ #define PT_ROOT "Root" #define PT_OVER_THE_SPOT "OverTheSpot" #define PT_OFF_THE_SPOT "OffTheSpot" #define PT_ON_THE_SPOT "OnTheSpot" /* I/O typedefs */ #if !defined(_WIN32) /*[*/ typedef int iosrc_t; # define INVALID_IOSRC (-1) #else /*][*/ typedef HANDLE iosrc_t; # define INVALID_IOSRC INVALID_HANDLE_VALUE #endif /*]*/ typedef uintptr_t ioid_t; #define NULL_IOID 0L /* Screen print types. */ typedef enum { P_NONE, P_TEXT, P_HTML, P_RTF, P_GDI } ptype_t; /* Usage message with error exit. */ void usage(const char *); /* Emulator actions. */ /* types of internal actions */ typedef enum iaction { IA_NONE, IA_STRING, IA_PASTE, IA_REDRAW, IA_KEYPAD, IA_DEFAULT, IA_MACRO, IA_SCRIPT, IA_PEEK, IA_TYPEAHEAD, IA_FT, IA_COMMAND, IA_KEYMAP, IA_IDLE, IA_PASSWORD, IA_UI, IA_HTTPD } ia_t; #define IA_IS_KEY(ia) \ ((ia) == IA_KEYPAD || (ia) == IA_KEYMAP || (ia) == IA_DEFAULT) extern enum iaction ia_cause; typedef bool (action_t)(ia_t ia, unsigned argc, const char **argv); /* Common socket definitions. */ #if !defined(_WIN32) /*[*/ typedef int socket_t; # define INVALID_SOCKET (-1) # define INET_ADDR_T in_addr_t # define SOCK_CLOSE(s) close(s) # define socket_errno() errno # define SE_EWOULDBLOCK EWOULDBLOCK #else /*][*/ typedef SOCKET socket_t; # define INET_ADDR_T unsigned long # define SOCK_CLOSE(s) closesocket(s) # define socket_errno() WSAGetLastError() # define SE_EWOULDBLOCK WSAEWOULDBLOCK # if !defined(WSA_FLAG_NO_HANDLE_INHERIT) /*[*/ # define WSA_FLAG_NO_HANDLE_INHERIT 0x80 # endif /*]*/ #endif /*]*/ /* Handy stuff. */ #define array_count(a) sizeof(a)/sizeof(a[0]) /* Doubly-linked lists. */ typedef struct llist { struct llist *next; struct llist *prev; } llist_t; /* Resource types. */ enum resource_type { XRM_STRING, /* char * */ XRM_BOOLEAN, /* bool */ XRM_INT /* int */ }; suite3270-4.1/include/glue.h000066400000000000000000000042421413735575200155710ustar00rootroot00000000000000/* * Copyright (c) 2000-2009, 2013-2015, 2017-2018, 2020 Paul Mattes. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the names of Paul Mattes nor the names of his contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO * EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * glue.h * Declarations for glue.c and XtGlue.c */ /* glue.c */ struct host_color { char *name; int index; }; extern struct host_color host_color[]; extern char *profile_path; int parse_command_line(int argc, const char **argv, const char **cl_hostname); void parse_xrm(const char *arg, const char *where); char *safe_string(const char *s); bool process_events(bool block); void cmdline_help(bool as_action); void model_init(void); typedef bool merge_profile_t(void); void register_merge_profile(merge_profile_t *); /* XtGlue.c */ extern void (*Error_redirect)(const char *); extern void (*Warning_redirect)(const char *); suite3270-4.1/include/glue_gui.h000066400000000000000000000033331413735575200164350ustar00rootroot00000000000000/* * Copyright (c) 2015, 2018 Paul Mattes. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the names of Paul Mattes nor the names of his contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO * EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * glue_gui.h * Declarations for GUI-specific functions called from the glue * logic. */ bool glue_gui_output(const char *s); /* default False */ bool glue_gui_error(const char *s); /* default False */ suite3270-4.1/include/host.h000066400000000000000000000044061413735575200156140ustar00rootroot00000000000000/* * Copyright (c) 1995-2009, 2014-2015, 2017-2018 Paul Mattes. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the names of Paul Mattes nor the names of his contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO * EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * host.h * Global declarations for host.c. */ struct host { char *name; char **parents; char *hostname; enum { PRIMARY, ALIAS, RECENT } entry_type; char *loginstring; time_t connect_time; struct host *prev, *next; }; extern struct host *hosts; extern enum iaction connect_ia; /* Host connect/disconnect and state change. */ void hostfile_init(void); bool host_connect(const char *n, enum iaction ia); void host_connected(void); void host_continue_connect(iosrc_t iosrc, net_connect_t nc); void host_new_connection(bool pending); void host_disconnect(bool disable); void host_in3270(enum cstate); void host_newfd(iosrc_t s); bool host_reconnecting(void); void host_register(void); void host_set_flag(int flag); suite3270-4.1/include/host_gui.h000066400000000000000000000034431413735575200164600ustar00rootroot00000000000000/* * Copyright (c) 1993-2015 Paul Mattes. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the names of Paul Mattes nor the names of his contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO * EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * host_gui.h * Declarations for GUI-specific functions called from the host * connect/disconnect logic. */ bool host_gui_connect(void); /* default False */ void host_gui_connect_initial(void); bool host_gui_disconnect(void); /* default False */ void host_gui_connected(void); suite3270-4.1/include/httpd-core.h000066400000000000000000000072251413735575200167120ustar00rootroot00000000000000/* * Copyright (c) 2014-2015, 2019-2020 Paul Mattes. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the names of Paul Mattes nor the names of his contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO * EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * httpd-core.h * x3270 webserver, header file for core protocol module */ typedef enum { CT_HTML, CT_TEXT, CT_JSON, CT_BINARY } content_t; /* Flags. */ #define HF_NONE 0x0 #define HF_TRAILER 0x1 /* include standard trailer */ #define HF_HIDDEN 0x2 /* do not include in directory listings */ typedef enum { HS_CONTINUE = 0, /* incomplete request */ HS_SUCCESS_OPEN = 1, /* request succeeded, leave socket open */ HS_ERROR_OPEN = 2, /* request failed, leave socket open */ HS_PENDING = 3, /* request is pending (async) */ HS_ERROR_CLOSE = -1, /* request failed, close socket */ HS_SUCCESS_CLOSE = -2 /* request succeeded, close socket */ } httpd_status_t; /* Registration functions. */ typedef httpd_status_t reg_dyn_t(const char *uri, void *dhandle); void *httpd_register_dir(const char *path, const char *desc); void *httpd_register_fixed(const char *path, const char *desc, content_t content_type, const char *content_str, unsigned flags, const char *fixed); void *httpd_register_fixed_binary(const char *path, const char *desc, content_t content_type, const char *content_str, unsigned flags, const unsigned char *fixed, unsigned lenrth); void *httpd_register_dyn_term(const char *path, const char *desc, content_t content_type, const char *content_str, unsigned flags, reg_dyn_t *dyn); void *httpd_register_dyn_nonterm(const char *path, const char *desc, content_t content_type, const char *content_str, unsigned flags, reg_dyn_t *dyn); void httpd_set_alias(void *nhandle, const char *text); /* Called from the main logic. */ void *httpd_mhandle(void *dhandle); void *httpd_new(void *mhandle, const char *client_name); httpd_status_t httpd_input(void *dhandle, const char *data, size_t len); void httpd_close(void *dhandle, const char *why); /* Callable from methods. */ httpd_status_t httpd_dyn_complete(void *dhandle, const char *format, ...); httpd_status_t httpd_dyn_error(void *dhandle, content_t content_type, int status_code, const char *format, ...); char *html_quote(const char *text); char *uri_quote(const char *text); const char *httpd_fetch_query(void *dhandle, const char *name); suite3270-4.1/include/httpd-io.h000066400000000000000000000051701413735575200163660ustar00rootroot00000000000000/* * Copyright (c) 2014-2015, 2018-2019 Paul Mattes. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the names of Paul Mattes nor the names of his contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO * EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * httpd-io.h * x3270 webserver, header file for I/O module */ typedef enum { SENDTO_PENDING = 0, /* command queued */ SENDTO_COMPLETE = 1, /* command executed (successfully or not) */ SENDTO_INVALID = -1,/* invalid command */ SENDTO_FAILURE = -2 /* IPC failure */ } sendto_t; typedef enum { SC_SUCCESS, /* command succeeded */ SC_USER_ERROR, /* user errror (400) */ SC_SYSTEM_ERROR /* system error (500) */ } sendto_cbs_t; typedef struct hio_listener hio_listener_t; /* Callback function for hio_to3270(). */ typedef void sendto_callback_t(void *, sendto_cbs_t, const char *buf, size_t len, const char *slbuf, size_t sl_len); sendto_t hio_to3270(const char *cmd, sendto_callback_t *callback, void *dhandle, content_t content_type); void hio_send(void *mhandle, const char *buf, size_t len); void hio_async_done(void *dhandle, httpd_status_t rv); void hio_init(struct sockaddr *sa, socklen_t sa_len); hio_listener_t *hio_init_x(struct sockaddr *sa, socklen_t sa_len); void hio_stop(void); void hio_stop_x(hio_listener_t *l); void hio_register(void); suite3270-4.1/include/httpd-nodes.h000066400000000000000000000032011413735575200170600ustar00rootroot00000000000000/* * Copyright (c) 2014-2015 Paul Mattes. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the names of Paul Mattes nor the names of his contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO * EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * httpd-node.h * x3270 webserver, header file for objects module */ void httpd_objects_init(void); suite3270-4.1/include/icmdc.h000066400000000000000000000033711413735575200157160ustar00rootroot00000000000000/* * Copyright (c) 2007-2009, 2014-2015 Paul Mattes. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the names of Paul Mattes nor the names of his contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO * EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * icmdc.h * A curses-based 3270 Terminal Emulator * Declarations for icmd.c. */ void icmd_register(void); void ft_help(bool as_action); #if defined(__FT_PRIVATE_H) /*[*/ int interactive_transfer(ft_conf_t *p); #endif /*]*/ suite3270-4.1/include/idle.h000066400000000000000000000040451413735575200155530ustar00rootroot00000000000000/* * Copyright (c) 2002-2009, 2013-2015 Paul Mattes. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the names of Paul Mattes nor the names of his contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO * EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * idle.h * Global declarations for idle.c. */ enum idle_enum { IDLE_DISABLED = 0, IDLE_SESSION = 1, IDLE_PERM = 2 }; void cancel_idle_timer(void); void idle_init(void); void reset_idle_timer(void); char *get_idle_command(); char *get_idle_timeout(); extern bool idle_changed; extern char *idle_command; extern char *idle_timeout_string; extern enum idle_enum idle_user_enabled; bool process_idle_timeout_value(const char *string); void idle_register(void); void idle_ft_complete(void); void idle_ft_start(void); suite3270-4.1/include/include_files.mk000066400000000000000000000015301413735575200176170ustar00rootroot00000000000000INCLUDE_HEADERS = 3270ds.h actions.h apl.h appres.h arpa_telnet.h asprintf.h \ b8.h bind-opt.h charset.h child.h child_popups.h ctlr.h ctlrc.h \ fallbacks.h fprint_screen.h ft.h ft_cut.h ft_cut_ds.h ft_dft.h \ ft_dft_ds.h ft_gui.h ft_private.h gdi_print.h globals.h glue.h \ glue_gui.h host.h host_gui.h httpd-core.h httpd-io.h httpd-nodes.h \ idle.h kybd.h latin1.h lazya.h linemode.h macros.h menubar.h nvt.h \ nvt_gui.h opts.h popups.h pr3287_session.h print_gui.h print_screen.h \ product.h proxy.h proxy_names.h readres.h resolver.h resources.h \ rpq.h save.h screen.h scroll.h see.h selectc.h sf.h status.h tables.h \ telnet.h telnet_core.h telnet_gui.h telnet_private.h tls_passwd_gui.h \ tn3270e.h toggles.h trace.h trace_gui.h unicode_dbcs.h unicodec.h \ utf8.h util.h varbuf.h w3misc.h wincmn.h windirs.h winprint.h \ winvers.h xio.h suite3270-4.1/include/indent_s.h000066400000000000000000000031471413735575200164430ustar00rootroot00000000000000/* * Copyright (c) 2017 Paul Mattes. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the names of Paul Mattes, Jeff Sparkes, GTRC nor the names of * their contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO * EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * indent_s.h * String indent function. */ char *indent_s(const char *s); suite3270-4.1/include/kybd.h000066400000000000000000000057511413735575200155740ustar00rootroot00000000000000/* * Copyright (c) 1995-2009, 2013-2019, 2021 Paul Mattes. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the names of Paul Mattes nor the names of his contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO * EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * kybd.h * Global declarations for kybd.c. */ /* keyboard lock states */ extern unsigned int kybdlock; #define KL_OERR_MASK 0x000f #define KL_OERR_PROTECTED 1 #define KL_OERR_NUMERIC 2 #define KL_OERR_OVERFLOW 3 #define KL_OERR_DBCS 4 #define KL_NOT_CONNECTED 0x0010 #define KL_AWAITING_FIRST 0x0020 #define KL_OIA_TWAIT 0x0040 #define KL_OIA_LOCKED 0x0080 #define KL_DEFERRED_UNLOCK 0x0100 #define KL_ENTER_INHIBIT 0x0200 #define KL_SCROLLED 0x0400 #define KL_OIA_MINUS 0x0800 extern unsigned char aid; void do_reset(bool explicit); size_t emulate_input(const char *s, size_t len, bool pasting, bool force_utf8); size_t emulate_uinput(const ucs4_t *s, size_t len, bool pasting); void hex_input(const char *s); void kybdlock_clr(unsigned int bits, const char *cause); void kybd_inhibit(bool inhibit); void kybd_register(void); #define KYP_LOCKED (-1) #define KYP_NOT_3270 (-2) #define KYP_NO_FIELD (-3) int kybd_prime(void); void kybd_scroll_lock(bool lock); bool run_ta(void); int state_from_keymap(char keymap[32]); void lightpen_select(int baddr); void key_UCharacter(ucs4_t ucs4, enum keytype keytype, enum iaction cause, bool fail); void kybd_register(void); bool Down_action(ia_t ia, unsigned argc, const char **argv); bool Left_action(ia_t ia, unsigned argc, const char **argv); bool Right_action(ia_t ia, unsigned argc, const char **argv); bool temporary_compose_map(const char *name, const char *how); bool Up_action(ia_t ia, unsigned argc, const char **argv); suite3270-4.1/include/latin1.h000066400000000000000000000151531413735575200160300ustar00rootroot00000000000000/* * Copyright (c) 2015 Paul Mattes. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the names of Paul Mattes nor the names of his contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO * EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * latin1.h * Symbolic names for ISO 8859-1 Latin-1 characters. */ /* * With the addition of nul, [0-9a-fA-F] and del, these are the standard HTML * entity names. */ typedef enum { latin1_nul = 0x00, latin1_sp = 0x20, latin1_excl = 0x21, latin1_quot = 0x22, latin1_num = 0x23, latin1_dollar = 0x24, latin1_percnt = 0x25, latin1_amp = 0x26, latin1_apos = 0x27, latin1_lpar = 0x28, latin1_rpar = 0x29, latin1_ast = 0x2a, latin1_plus = 0x2b, latin1_comma = 0x2c, latin1_minus = 0x2d, latin1_period = 0x2e, latin1_sol = 0x2f, latin1_0 = 0x30, latin1_1 = 0x31, latin1_2 = 0x32, latin1_3 = 0x33, latin1_4 = 0x34, latin1_5 = 0x35, latin1_6 = 0x36, latin1_7 = 0x37, latin1_8 = 0x38, latin1_9 = 0x39, latin1_colon = 0x3a, latin1_semi = 0x3b, latin1_lt = 0x3c, latin1_equals = 0x3d, latin1_gt = 0x3e, latin1_quest = 0x3f, latin1_commat = 0x40, latin1_A = 0x41, latin1_B = 0x42, latin1_C = 0x43, latin1_D = 0x44, latin1_E = 0x45, latin1_F = 0x46, latin1_G = 0x47, latin1_H = 0x48, latin1_I = 0x49, latin1_J = 0x4a, latin1_K = 0x4b, latin1_L = 0x4c, latin1_M = 0x4d, latin1_N = 0x4e, latin1_O = 0x4f, latin1_P = 0x50, latin1_Q = 0x51, latin1_R = 0x52, latin1_S = 0x53, latin1_T = 0x54, latin1_U = 0x55, latin1_V = 0x56, latin1_W = 0x57, latin1_X = 0x58, latin1_Y = 0x59, latin1_Z = 0x5a, latin1_lsqb = 0x5b, latin1_bsol = 0x5c, latin1_rsqb = 0x5d, latin1_circ = 0x5e, latin1_lowbar = 0x5f, latin1_grave = 0x60, latin1_a = 0x61, latin1_b = 0x62, latin1_c = 0x63, latin1_d = 0x64, latin1_e = 0x65, latin1_f = 0x66, latin1_g = 0x67, latin1_h = 0x68, latin1_i = 0x69, latin1_j = 0x6a, latin1_k = 0x6b, latin1_l = 0x6c, latin1_m = 0x6d, latin1_n = 0x6e, latin1_o = 0x6f, latin1_p = 0x70, latin1_q = 0x71, latin1_r = 0x72, latin1_s = 0x73, latin1_t = 0x74, latin1_u = 0x75, latin1_v = 0x76, latin1_w = 0x77, latin1_x = 0x78, latin1_y = 0x79, latin1_z = 0x7a, latin1_lcub = 0x7b, latin1_verbar = 0x7c, latin1_rcub = 0x7d, latin1_tilde = 0x7e, latin1_del = 0x7f, latin1_nbsp = 0xa0, latin1_iexcl = 0xa1, latin1_cent = 0xa2, latin1_pound = 0xa3, latin1_curren = 0xa4, latin1_yen = 0xa5, latin1_brkbar = 0xa6, latin1_sect = 0xa7, latin1_uml = 0xa8, latin1_copy = 0xa9, latin1_ordf = 0xaa, latin1_laquo = 0xab, latin1_not = 0xac, latin1_shy = 0xad, latin1_reg = 0xae, latin1_macr = 0xaf, latin1_deg = 0xb0, latin1_plusmn = 0xb1, latin1_sup2 = 0xb2, latin1_sup3 = 0xb3, latin1_acute = 0xb4, latin1_micro = 0xb5, latin1_para = 0xb6, latin1_middot = 0xb7, latin1_cedil = 0xb8, latin1_sup1 = 0xb9, latin1_ordm = 0xba, latin1_raquo = 0xbb, latin1_frac14 = 0xbc, latin1_frac12 = 0xbd, latin1_frac34 = 0xbe, latin1_iquest = 0xbf, latin1_Agrave = 0xc0, latin1_Aacute = 0xc1, latin1_Acirc = 0xc2, latin1_Atilde = 0xc3, latin1_Auml = 0xc4, latin1_Aring = 0xc5, latin1_AElig = 0xc6, latin1_Ccedil = 0xc7, latin1_Egrave = 0xc8, latin1_Eacute = 0xc9, latin1_Ecirc = 0xca, latin1_Euml = 0xcb, latin1_Igrave = 0xcc, latin1_Iacute = 0xcd, latin1_Icirc = 0xce, latin1_Iuml = 0xcf, latin1_ETH = 0xd0, latin1_Ntilde = 0xd1, latin1_Ograve = 0xd2, latin1_Oacute = 0xd3, latin1_Ocirc = 0xd4, latin1_Otilde = 0xd5, latin1_Ouml = 0xd6, latin1_times = 0xd7, latin1_Oslash = 0xd8, latin1_Ugrave = 0xd9, latin1_Uacute = 0xda, latin1_Ucirc = 0xdb, latin1_Uuml = 0xdc, latin1_Yacute = 0xdd, latin1_THORN = 0xde, latin1_szlig = 0xdf, latin1_agrave = 0xe0, latin1_aacute = 0xe1, latin1_acirc = 0xe2, latin1_atilde = 0xe3, latin1_auml = 0xe4, latin1_aring = 0xe5, latin1_aelig = 0xe6, latin1_ccedil = 0xe7, latin1_egrave = 0xe8, latin1_eacute = 0xe9, latin1_ecirc = 0xea, latin1_euml = 0xeb, latin1_igrave = 0xec, latin1_iacute = 0xed, latin1_icirc = 0xee, latin1_iuml = 0xef, latin1_eth = 0xf0, latin1_ntilde = 0xf1, latin1_ograve = 0xf2, latin1_oacute = 0xf3, latin1_ocirc = 0xf4, latin1_otilde = 0xf5, latin1_ouml = 0xf6, latin1_divide = 0xf7, latin1_oslash = 0xf8, latin1_ugrave = 0xf9, latin1_uacute = 0xfa, latin1_ucirc = 0xfb, latin1_uuml = 0xfc, latin1_yacute = 0xfd, latin1_thorn = 0xfe, latin1_yuml = 0xff } latin1_symbol_t; suite3270-4.1/include/lazya.h000066400000000000000000000032761413735575200157630ustar00rootroot00000000000000/* * Copyright (c) 2015, 2018 Paul Mattes. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the names of Paul Mattes nor the names of his contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO * EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * lazya.h * Lazy allocations. */ char *lazya(void *buf); char *lazyaf(const char *fmt, ...); char *vlazyaf(const char *fmt, va_list args); void lazya_flush(); suite3270-4.1/include/linemode.h000066400000000000000000000040461413735575200164330ustar00rootroot00000000000000/* * Copyright (c) 1995-2009, 2013-2015 Paul Mattes. * Copyright (c) 2004, Don Russell. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the names of Paul Mattes, Don Russell, Jeff Sparkes, GTRC nor * the names of their contributors may be used to endorse or promote * products derived from this software without specific prior written * permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES AND DON RUSSELL "AS IS" AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL PAUL MATTES OR DON RUSSELL BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * linemode.h * Header file for linemode.c. */ /* Spelled-out tty control character. */ struct ctl_char { const char *name; char value[3]; }; void linemode_init(void); void linemode_buf_init(void); struct ctl_char *linemode_chars(void); void linemode_out(const char *buf, size_t len); void linemode_send_erase(void); void linemode_send_kill(void); void linemode_send_werase(void); void linemode_dump(void); suite3270-4.1/include/login_macro.h000066400000000000000000000032331413735575200171250ustar00rootroot00000000000000/* * Copyright (c) 1993-2016, 2018, 2020 Paul Mattes. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the names of Paul Mattes nor the names of his contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO * EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * login_macro.h * Declarations for login_macro.c. */ void login_macro(char *s); void login_macro_register(void); suite3270-4.1/include/menubar.h000066400000000000000000000032331413735575200162650ustar00rootroot00000000000000/* * Copyright (c) 1995-2010, 2013-2015 Paul Mattes. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the names of Paul Mattes nor the names of his contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO * EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * menubar.h * Global declarations for menubar.c. */ void menubar_as_set(bool sensitive); void menubar_retoggle(toggle_index_t ix); suite3270-4.1/include/min_version.h000066400000000000000000000032351413735575200171660ustar00rootroot00000000000000/* * Copyright (c) 2015-2017 Paul Mattes. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the names of Paul Mattes nor the names of his contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO * EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * min_version.h * Minimum version checker. */ extern int our_major, our_minor, our_iteration; void check_min_version(const char *min_version); suite3270-4.1/include/model.h000066400000000000000000000031741413735575200157400ustar00rootroot00000000000000/* * Copyright (c) 2016-2019 Paul Mattes. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of Paul Mattes, nor his contributors may be used to * endorse or promote products derived from this software without * specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO * EVENT SHALL PAUL MATTES, JEFF SPARKES OR GTRC BE LIABLE FOR ANY DIRECT, * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * model.h * Declarations for model.c. */ void model_register(void); bool model_can_change(void); suite3270-4.1/include/names.h000066400000000000000000000206371413735575200157460ustar00rootroot00000000000000/* * Copyright (c) 2020-2021 Paul Mattes. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the names of Paul Mattes nor the names of his contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO * EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * names.h * Common names. */ /* Action names. */ #define AnAbort "Abort" #define AnAltCursor "AltCursor" #define AnAttn "Attn" #define AnBackSpace "BackSpace" #define AnBackTab "BackTab" #define AnBell "Bell" #define AnAnsiText "AnsiText" #define AnAscii "Ascii" #define AnAscii1 "Ascii1" #define AnAsciiField "AsciiField" #define AnCapabilities "Capabilities" #define AnCircumNot "CircumNot" #define AnClear "Clear" #define AnClearRegion "ClearRegion" #define AnClose "Close" #define AnCompose "Compose" #define AnConnect "Connect" #define AnCopy "Copy" #define AnCrash "Crash" #define AnCursorSelect "CursorSelect" #define AnCloseScript "CloseScript" #define AnCut "Cut" #define AnDelete "Delete" #define AnDeleteField "DeleteField" #define AnDeleteWord "DeleteWord" #define AnDisconnect "Disconnect" #define AnDown "Down" #define AnDup "Dup" #define AnEbcdic "Ebcdic" #define AnEbcdic1 "Ebcdic1" #define AnEbcdicField "EbcdicField" #define AnEnter "Enter" #define AnErase "Erase" #define AnEraseEOF "EraseEOF" #define AnEraseInput "EraseInput" #define AnEscape "Escape" #define AnExecute "Execute" #define AnExit "Exit" #define AnExpect "Expect" #define AnFieldEnd "FieldEnd" #define AnFieldMark "FieldMark" #define AnFlip "Flip" #define AnHexString "HexString" #define AnHome "Home" #define AnHelp "Help" #define Anignore "ignore" #define AnInfo "Info" #define AnInsert "Insert" #define AnInterrupt "Interrupt" #define AnKey "Key" #define AnKeyboardDisable "KeyboardDisable" #define AnKeymap "Keymap" #define AnKeypad "Keypad" #define AnLeft "Left" #define AnLeft2 "Left2" #define AnMacro "Macro" #define AnMenu "Menu" #define AnMonoCase "MonoCase" #define AnMoveCursor "MoveCursor" #define AnMoveCursor1 "MoveCursor1" #define AnNewline "Newline" #define AnNextWord "NextWord" #define AnNvtText "NvtText" #define AnOpen "Open" #define AnPA "PA" #define AnPaste "Paste" #define AnPasteString "PasteString" #define AnPF "PF" #define AnPreviousWord "PreviousWord" #define AnPrinter "Printer" #define AnPrintText "PrintText" #define AnPrintWindow "PrintWindow" #define AnPause "Pause" #define AnPrompt "Prompt" #define AnQuery "Query" #define AnQuit "Quit" #define AnReadBuffer "ReadBuffer" #define AnReconnect "Reconnect" #define AnRedraw "Redraw" #define AnRequestInput "RequestInput" #define AnReset "Reset" #define AnRestoreInput "RestoreInput" #define AnRight "Right" #define AnRight2 "Right2" #define AnSaveInput "SaveInput" #define AnScreenTrace "ScreenTrace" #define AnScript "Script" #define AnScroll "Scroll" #define AnSelectDown "SelectDown" #define AnSelectLeft "SelectLeft" #define AnSelectRight "SelectRight" #define AnSelectUp "SelectUp" #define AnSet "Set" #define AnSetFont "SetFont" #define AnShow "Show" #define AnSnap "Snap" #define AnSource "Source" #define AnString "String" #define AnSubjectNames "SubjectNames" #define AnSysReq "SysReq" #define AnTab "Tab" #define AnTemporaryComposeMap "TemporaryComposeMap" #define AnTemporaryKeymap "TemporaryKeymap" #define AnTitle "Title" #define AnToggle "Toggle" #define AnToggleInsert "ToggleInsert" #define AnToggleReverse "ToggleReverse" #define AnTrace "Trace" #define AnTransfer "Transfer" #define AnUp "Up" #define AnWait "Wait" #define AnWindowState "WindowState" /* Keywords. */ /* Common keywords. */ #define KwFailOnError "failonerror" #define KwNoFailOnError "nofailonerror" /* Parameters to Crash(). */ #define KwAssert "assert" #define KwExit "exit" #define KwNull "null" /* Parameters to HexString(). */ #define KwDashAscii "-ascii" /* Parameters to KeyboardDisable(). */ #define KwForceEnable "forceenable" /* Parameters to Keymap(). */ #define KwNone "none" /* Parameters to Printer(). */ #define KwStart "start" #define KwStop "stop" /* Parameters to PrintText(). */ #define KwFile "file" #define KwHtml "html" #define KwRtf "rtf" #define KwReplace "replace" #define KwAppend "append" #define KwGdi "gdi" #define KwNoDialog "nodialog" #define KwDialog "dialog" #define KwSecure "secure" #define KwCommand "command" #define KwString "string" #define KwModi "modi" #define KwCaption "caption" #define KwOia "oia" /* Parameters to Query(). */ #define KwAbout "About" #define KwActions "Actions" #define KwBindPluName "BindPluName" #define KwBuildOptions "BuildOptions" #define KwConnectionState "ConnectionState" #define KwConnectTime "ConnectTime" #define KwCodePage "CodePage" #define KwCodePages "CodePages" #define KwCopyright "Copyright" #define KwCursor "Cursor" #define KwCursor1 "Cursor1" #define KwFormatted "Formatted" #define KwHost "Host" #define KwKeymap "Keymap" #define KwLocalEncoding "LocalEncoding" #define KwLuName "LuName" #define KwModel "Model" #define KwPrefixes "Prefixes" #define KwProxy "Proxy" #define KwScreenCurSize "ScreenCurSize" #define KwScreenMaxSize "ScreenMaxSize" #define KwScreenSizeCurrent "ScreenSizeCurrent" #define KwScreenSizeMax "ScreenSizeMax" #define KwScreenTraceFile "ScreenTraceFile" #define KwSsl "Ssl" #define KwStats "Stats" #define KwStatus "Status" #define KwStatsRx "StatsRx" #define KwStatsTx "StatsTx" #define KwTasks "Tasks" #define KwTelnetMyOptions "TelnetMyOptions" #define KwTelnetHostOptions "TelnetHostOptions" #define KwTerminalName "TerminalName" #define KwTn3270eOptions "Tn3270eOptions" #define KwTraceFile "TraceFile" #define KwTls "Tls" #define KwTlsCertInfo "TlsCertInfo" #define KwTlsProvider "TlsProvider" #define KwTlsSessionInfo "TlsSessionInfo" #define KwTlsSubjectNames "TlsSubjectNames" #define KwVersion "Version" /* Parameters to Quit(). */ #define KwDashForce "-force" #define KwForce "force" /* Parameters to ReadBuffer(). */ #define KwAscii "ascii" #define KwEbcdic "ebcdic" #define KwUnicode "unicode" #define KwField "field" /* Parameters to RequestInput(). */ #define KwDashNoEcho "-noecho" /* Parameters to ScreenTrace(). */ #define KwOn "on" #define KwOff "off" #define KwInfo "info" #define KwFile "file" #define KwPrinter "printer" #define KwText "text" #define KwHtml "html" #define KwRtf "rtf" #define KwGdi "gdi" #define KwDialog "dialog" #define KwNoDialog "nodialog" #define KwWordPad "wordpad" /* Parameters to Script(). */ #define KwDashAsync "-async" #define KwDashNoLock "-nolock" #define KwDashSingle "-single" #define KwDashNoStdoutRedirect "-nostdoutredirect" #define KwDashShareConsole "-shareconsole" /* Parameters to Scroll(). */ #define KwForward "forward" #define KwBackward "backward" #define KwReset "reset" #define KwSet "set" /* Parameters to Snap(). */ #define KwSave "save" #define KwSnapStatus "status" #define KwRows "rows" #define KwCols "cols" /* Parameters to Transfer(). */ #define KwCancel "cancel" /* Parameters to Wait(). */ #define Kw3270 "3270" #define Kw3270Mode "3270mode" #define KwAnsi "ansi" #define KwDisconnect "disconnect" #define KwInputField "inputfield" #define KwNvtMode "nvtmode" #define KwOutput "output" #define KwUnlock "unlock" #define KwSeconds "seconds" /* Parameters to WindowState(). */ #define KwIconic "iconic" #define KwNormal "normal" suite3270-4.1/include/nvt.h000066400000000000000000000040011413735575200154350ustar00rootroot00000000000000/* * Copyright (c) 1995-2009, 2014-2015, 2018, 2020 Paul Mattes. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the names of Paul Mattes nor the names of his contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO * EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * nvt.h * Global declarations for nvt.c. */ void nvt_init(void); void nvt_process(unsigned int c); void nvt_send_clear(void); void nvt_send_down(void); void nvt_send_home(void); void nvt_send_left(void); void nvt_send_pa(int nn); void nvt_send_pf(int nn); void nvt_send_right(void); void nvt_send_up(void); void nvt_snap(void); void nvt_snap_modes(void); void nvt_register(void); void nvt_wrapping_backspace(void); bool is_nvt(struct ea *ea, bool ascii_box_draw, ucs4_t *u); suite3270-4.1/include/nvt_gui.h000066400000000000000000000031621413735575200163100ustar00rootroot00000000000000/* * Copyright (c) 2014-2015 Paul Mattes. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the names of Paul Mattes nor the names of his contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO * EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * nvt_gui.h * Global declarations for nvt_gui.c. */ void xterm_text_gui(int code, const char *text); suite3270-4.1/include/opts.h000066400000000000000000000060461413735575200156260ustar00rootroot00000000000000/* * Copyright (c) 2015, 2018, 2020 Paul Mattes. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the names of Paul Mattes nor the names of his contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO * EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * opts.h * Command-line option processing declarations. */ /* Offset macros. */ #define aoffset(n) (void *)&appres.n #define toggle_aoffset(index) aoffset(toggle[index]) /* Option defition. */ typedef struct { const char *name; enum { OPT_BOOLEAN, /* set bool to True or False */ OPT_STRING, /* set a (char *) */ OPT_XRM, /* special for "-xrm" syntax */ OPT_SKIP2, /* skip the next token */ OPT_NOP, /* do nothing */ OPT_INT, /* set an integer */ OPT_V, /* special for "-v" */ OPT_HELP, /* special for "--help */ OPT_DONE /* option-list terminator */ } type; bool flag; /* value if OPT_BOOLEAN */ const char *res_name; /* name of resource to set, or NULL */ void *aoff; /* appres offset */ char *help_opts; /* options to display for help, or NULL */ char *help_text; /* help text, or NULL */ } opt_t; /* Register an array of options. */ void register_opts(opt_t *opts, unsigned num_opts); /* Resource definition. */ typedef struct { const char *name; void *address; enum resource_type type; } res_t; /* Register an array of resources. */ void register_resources(res_t *res, unsigned num_res); /* Explicit (non-appres) resource definition. */ typedef struct { const char *name; enum { V_FLAT, /* match the full name: */ V_WILD, /* name is the root, i.e., .* */ V_COLOR /* match or */ } type; } xres_t; /* Register an array of explicit resources. */ void register_xresources(xres_t *xres, unsigned num_xres); suite3270-4.1/include/peerscript.h000066400000000000000000000037441413735575200170230ustar00rootroot00000000000000/* * Copyright (c) 2016, 2018, 2020 Paul Mattes. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the names of Paul Mattes nor the names of his contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO * EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * peerscript.h * Global declarations for peerscript.c. */ typedef struct _peer_listen *peer_listen_t; typedef enum { PLM_MULTI, /* allow multiple connections */ PLM_SINGLE, /* allow a single connection */ PLM_ONCE /* exit after single connection */ } peer_listen_mode; peer_listen_t peer_init(struct sockaddr *sa, socklen_t sa_len, peer_listen_mode mode); void peer_shutdown(peer_listen_t listener); void peer_accepted(socket_t s, void *listener); suite3270-4.1/include/popups.h000066400000000000000000000043341413735575200161650ustar00rootroot00000000000000/* * Copyright (c) 1999-2009, 2014-2015, 2021 Paul Mattes. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the names of Paul Mattes nor the names of his contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO * EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * popups.h * Common declarations for popups.c */ /* Error type for popup_an_xerror(). */ typedef enum { ET_CONNECT, ET_OTHER } pae_t; extern const char *popup_separator; void action_output(const char *fmt, ...) printflike(1, 2); void popup_a_vxerror(pae_t type, const char *fmt, va_list ap); void popup_an_info(const char *fmt, ...) printflike(1, 2); void popup_an_errno(int errn, const char *fmt, ...) printflike(2, 3); void popup_an_error(const char *fmt, ...) printflike(1, 2); void popup_an_xerror(pae_t type, const char *fmt, ...) printflike(2, 3); typedef void abort_callback_t(void); void popup_printer_output(bool is_err, abort_callback_t *a, const char *fmt, ...) printflike(3, 4); suite3270-4.1/include/pr3287_session.h000066400000000000000000000034151413735575200173460ustar00rootroot00000000000000/* * Copyright (c) 1995-2009, 2013-2017 Paul Mattes. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the names of Paul Mattes nor the names of his contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO * EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * pr3287_session.h * Printer session support */ void pr3287_session_register(void); void pr3287_session_start(const char *lu); void pr3287_session_stop(void); bool pr3287_session_running(void); const char *pr3287_session_lu(); suite3270-4.1/include/print_command.h000066400000000000000000000032661413735575200174740ustar00rootroot00000000000000/* * Copyright (c) 2020 Paul Mattes. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the names of Paul Mattes nor the names of his contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO * EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * print_command.h * Global declarations for print_command.c. */ #if !defined(_WIN32) /*[*/ FILE *printer_open(const char *command, void (*fail_callback)(void)); #endif /*]*/ suite3270-4.1/include/print_gui.h000066400000000000000000000031641413735575200166370ustar00rootroot00000000000000/* * Copyright (c) 1995-2009, 2013-2015 Paul Mattes. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the names of Paul Mattes nor the names of his contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO * EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * print_gui.h * Global declarations for print_gui.c. */ bool print_text_gui(bool use_file); suite3270-4.1/include/print_screen.h000066400000000000000000000032251413735575200173300ustar00rootroot00000000000000/* * Copyright (c) 1995-2009, 2013-2015 Paul Mattes. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the names of Paul Mattes nor the names of his contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO * EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * print_screen.h * Global declarations for print_screen.c. */ char *default_caption(void); void print_screen_register(void); suite3270-4.1/include/product.h000066400000000000000000000035671413735575200163260ustar00rootroot00000000000000/* * Copyright (c) 2015 Paul Mattes. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the names of Paul Mattes nor the names of his contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO * EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * product.h * Global declarations for product functions. * * A product can define these functions, or let a stub define a * default value. */ bool product_has_display(void); /* default False */ const char *product_specific_build_options(void); /* default NULL */ bool product_auto_oversize(void); /* default False */ void product_set_appres_defaults(void); suite3270-4.1/include/proxy.h000066400000000000000000000052411413735575200160160ustar00rootroot00000000000000/* * Copyright (c) 2007-2009, 2015, 2018-2020 Paul Mattes. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the names of Paul Mattes nor the names of his contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO * EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * proxy.h * Declarations for proxy.c. */ /* * Supported proxy types. */ typedef enum { PT_NONE, PT_PASSTHRU,/* Sun telnet-passthru */ PT_HTTP, /* RFC 2817 CONNECT tunnel */ PT_TELNET, /* 'connect host port' proxy */ PT_SOCKS4, /* SOCKS version 4 (or 4A if necessary) */ PT_SOCKS4A, /* SOCKS version 4A (force remote name resolution) */ PT_SOCKS5, /* SOCKS version 5 (RFC 1928) */ PT_SOCKS5D, /* SOCKS version 5D (force remote name resolution) */ PT_MAX, PT_ERROR = -1, PT_FIRST = PT_PASSTHRU } proxytype_t; /* * Proxy negotiate return codes. */ typedef enum { PX_SUCCESS, /* success */ PX_FAILURE, /* failure */ PX_WANTMORE /* more input needed */ } proxy_negotiate_ret_t; typedef void *proxy_t; int proxy_setup(const char *spec, char **puser, char **phost, char **pport); proxy_negotiate_ret_t proxy_negotiate(socket_t fd, const char *user, const char *host, unsigned short port, bool blocking); proxy_negotiate_ret_t proxy_continue(void); void proxy_close(void); const char *proxy_type_name(int type); bool proxy_takes_username(int type); int proxy_default_port(proxytype_t type); suite3270-4.1/include/proxy_http.h000066400000000000000000000033321413735575200170540ustar00rootroot00000000000000/* * Copyright (c) 2019 Paul Mattes. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the names of Paul Mattes nor the names of his contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO * EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * proxy_http.h * HTTP proxy definitions. */ proxy_negotiate_ret_t proxy_http(socket_t fd, const char *user, const char *host, unsigned short port); continue_t proxy_http_continue; void proxy_http_close(void); suite3270-4.1/include/proxy_names.h000066400000000000000000000042521413735575200172020ustar00rootroot00000000000000/* * Copyright (c) 2007-2009, 2015 Paul Mattes. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the names of Paul Mattes nor the names of his contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO * EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * proxy_names.h * Common definitions for proxy. */ #define PROXY_PASSTHRU "passthru" #define NPORT_PASSTHRU 3514 #define PORT_PASSTHRU STR(NPORT_PASSTHRU) #define PROXY_HTTP "http" #define NPORT_HTTP 3128 #define PORT_HTTP STR(NPORT_HTTP) #define PROXY_TELNET "telnet" #define PROXY_SOCKS4 "socks4" #define NPORT_SOCKS4 1080 #define PORT_SOCKS4 STR(NPORT_SOCKS4) #define PROXY_SOCKS4A "socks4a" #define NPORT_SOCKS4A NPORT_SOCKS4 #define PORT_SOCKS4A PORT_SOCKS4 #define PROXY_SOCKS5 "socks5" #define NPORT_SOCKS5 1080 #define PORT_SOCKS5 STR(NPORT_SOCKS5) #define PROXY_SOCKS5D "socks5d" #define NPORT_SOCKS5D NPORT_SOCKS5 #define PORT_SOCKS5D PORT_SOCKS5 suite3270-4.1/include/proxy_passthru.h000066400000000000000000000032271413735575200177510ustar00rootroot00000000000000/* * Copyright (c) 2019 Paul Mattes. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the names of Paul Mattes nor the names of his contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO * EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * proxy_passthru.h * Passthru proxy definitions. */ proxy_negotiate_ret_t proxy_passthru(socket_t fd, const char *host, unsigned short port); suite3270-4.1/include/proxy_private.h000066400000000000000000000037021413735575200175500ustar00rootroot00000000000000/* * Copyright (c) 2007-2009, 2013-2015, 2018-2019 Paul Mattes. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the names of Paul Mattes nor the names of his contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO * EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * proxy_private.h * Common header for proxy implementations. */ /* * Platform-independent socket definitions. These should be common between * proxy and telnet. */ #if defined(_WIN32) /*[*/ # define socket_errno() WSAGetLastError() # define SE_EWOULDBLOCK WSAEWOULDBLOCK #else /*][*/ # define socket_errno() errno # define SE_EWOULDBLOCK EWOULDBLOCK #endif /*]*/ typedef proxy_negotiate_ret_t continue_t(void); suite3270-4.1/include/proxy_socks4.h000066400000000000000000000033731413735575200173100ustar00rootroot00000000000000/* * Copyright (c) 2019 Paul Mattes. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the names of Paul Mattes nor the names of his contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO * EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * proxy_socks4.h * SOCKS version 4 proxy definitions. */ proxy_negotiate_ret_t proxy_socks4(socket_t fd, const char *user, const char *host, unsigned short port, bool force_a); continue_t proxy_socks4_continue; void proxy_socks4_close(void); suite3270-4.1/include/proxy_socks5.h000066400000000000000000000033731413735575200173110ustar00rootroot00000000000000/* * Copyright (c) 2019 Paul Mattes. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the names of Paul Mattes nor the names of his contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO * EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * proxy_socks5.h * SOCKS version 5 proxy definitions. */ proxy_negotiate_ret_t proxy_socks5(socket_t fd, const char *user, const char *host, unsigned short port, bool force_d); continue_t proxy_socks5_continue; void proxy_socks5_close(void); suite3270-4.1/include/proxy_telnet.h000066400000000000000000000032211413735575200173650ustar00rootroot00000000000000/* * Copyright (c) 2019 Paul Mattes. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the names of Paul Mattes nor the names of his contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO * EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * proxy_telnet.h * Telnet proxy definitions. */ proxy_negotiate_ret_t proxy_telnet(socket_t fd, const char *host, unsigned short port); suite3270-4.1/include/proxy_toggle.h000066400000000000000000000031321413735575200173540ustar00rootroot00000000000000/* * Copyright (c) 2019 Paul Mattes. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the names of Paul Mattes nor the names of his contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO * EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * proxy_toggle.h * Declarations for proxy_toggle.c. */ void proxy_register(void); suite3270-4.1/include/query.h000066400000000000000000000037051413735575200160050ustar00rootroot00000000000000/* * Copyright (c) 1993-2019 Paul Mattes. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the names of Paul Mattes nor the names of his contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO * EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * query.h * The Query() action. */ typedef struct { char *name; const char *(*fn)(void); const char *string; bool hidden; bool specific; } query_t; void register_queries(query_t queries[], size_t count); void query_register(void); bool Query_action(ia_t ia, unsigned argc, const char **argv); bool query_common(const char *name, ia_t ia, unsigned argc, const char **argv); const char *get_about(void); suite3270-4.1/include/readres.h000066400000000000000000000033741413735575200162670ustar00rootroot00000000000000/* * Copyright (c) 2009, 2014-2015 Paul Mattes. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the names of Paul Mattes, Jeff Sparkes, GTRC nor the names of * their contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO * EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * readres.h * Header for resource file reader. */ int validate_and_split_resource(const char *where, const char *arg, const char **left, size_t *rnlenp, const char **right); bool read_resource_filex(const char *filename, bool fatal); suite3270-4.1/include/resolver.h000066400000000000000000000050431413735575200164760ustar00rootroot00000000000000/* * Copyright (c) 2007-2009, 2014-2015, 2019 Paul Mattes. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the names of Paul Mattes nor the names of his contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO * EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * resolver.h * Hostname resolution. */ typedef enum { RHP_SUCCESS = 0, /* success (synchronous) */ RHP_PENDING = 1, /* success (asynchronos pending) */ RHP_FATAL = -1, /* impossible to resolve */ RHP_CANNOT_RESOLVE = -2 /* cannot resolve */ } rhp_t; #define RHP_IS_ERROR(r) ((r) < 0) rhp_t resolve_host_and_port(const char *host, char *portname, unsigned short *pport, struct sockaddr *sa, size_t sa_len, socklen_t *sa_rlen, char **errmsg, int max, int *nr); rhp_t resolve_host_and_port_a(const char *host, char *portname, unsigned short *pport, struct sockaddr *sa, size_t sa_len, socklen_t *sa_rlen, char **errmsg, int max, int *nr, int *slot, int pipe, iosrc_t event); rhp_t collect_host_and_port(int slot, struct sockaddr *sa, size_t sa_len, socklen_t *sa_rlen, unsigned short *pport, char **errmsg, int max, int *nr); void cleanup_host_and_port(int slot); bool numeric_host_and_port(const struct sockaddr *sa, socklen_t salen, char *host, size_t hostlen, char *serv, size_t servlen, char **errmsg); suite3270-4.1/include/resources.h000066400000000000000000000506141413735575200166530ustar00rootroot00000000000000/* * Copyright (c) 1995-2020, Paul Mattes. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the names of Paul Mattes nor the names of his contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO * EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * resources.h * x3270/c3270/s3270/tcl3270 resource and option names. */ /* Resources. */ #define ResAcs "acs" #define ResAcceptHostname "acceptHostname" #define ResActiveIcon "activeIcon" #define ResAdVersion "adVersion" #define ResAidWait "aidWait" #define ResAlias "alias" #define ResAllBold "allBold" #define ResAllowResize "allowResize" #define ResAltCursor "altCursor" #define ResAltScreen "altScreen" #define ResAlwaysInsert "alwaysInsert" #define ResAplCircledAlpha "aplCircledAlpha" #define ResAplMode "aplMode" #define ResAsciiBoxDraw "asciiBoxDraw" #define ResAssocCommand "printer.assocCommandLine" #define ResAutoShortcut "autoShortcut" #define ResBaselevelTranslations "baselevelTranslations" #define ResBellMode "bellMode" #define ResBellVolume "bellVolume" #define ResBindUnlock "bindUnlock" #define ResBindLimit "bindLimit" #define ResBlankFill "blankFill" #define ResBoldColor "boldColor" #define ResBsdTm "bsdTm" #define ResCaDir "caDir" #define ResCaFile "caFile" #define ResCallback "callback" #define ResCbreak "cbreak" #define ResCertFile "certFile" #define ResCertFileType "certFileType" #define ResChainFile "chainFile" #define ResCharClass "charClass" #define ResCharset "charset" #define ResCharsetList "charsetList" #define ResClientCert "clientCert" #define ResCodePage "codePage" #define ResColorBackground "colorBackground" #define ResColorScheme "colorScheme" #define ResCommandTimeout "commandTimeout" #define ResComposeMap "composeMap" #define ResConfDir "confDir" #define ResConnectFileName "connectFileName" #define ResConnectTimeout "connectTimeout" #define ResConsole "console" #define ResConsoleColorForHostColor "consoleColorForHostColor" #define ResCrosshair "crosshair" #define ResCrosshairColor "crosshairColor" #define ResCursesColorFor "cursesColorFor" #define ResCursesColorForDefault ResCursesColorFor "Default" #define ResCursesColorForHostColor ResCursesColorFor "HostColor" #define ResCursesColorForIntensified ResCursesColorFor "Intensified" #define ResCursesColorForProtected ResCursesColorFor "Protected" #define ResCursesColorForProtectedIntensified ResCursesColorFor "ProtectedIntensified" #define ResCursesKeypad "cursesKeypad" #define ResCursorBlink "cursorBlink" #define ResCursorColor "cursorColor" #define ResDbcsCgcsgid "dbcsCgcsgid" #define ResDebugTracing "debugTracing" #define ResDefaultFgBg "defaultFgBg" #define ResDefScreen "defScreen" #define ResDevName "devName" #define ResDisconnectClear "disconnectClear" #define ResDoConfirms "doConfirms" #define ResDpi "dpi" #define ResEmulatorFont "emulatorFont" #define ResEof "eof" #define ResErase "erase" #define ResFixedSize "fixedSize" #define ResFtAllocation "ftAllocation" #define ResFtAvblock "ftAvblock" #define ResFtBlksize "ftBlksize" #define ResFtBufferSize "ftBufferSize" #define ResFtCr "ftCr" #define ResFtDirection "ftDirection" #define ResFtExist "ftExist" #define ResFtHost "ftHost" #define ResFtHostFile "ftHostFile" #define ResFtLocalFile "ftLocalFile" #define ResFtLrecl "ftLrecl" #define ResFtMode "ftMode" #define ResFtPrimarySpace "ftPrimarySpace" #define ResFtRecfm "ftRecfm" #define ResFtRemap "ftRemap" #define ResFtSecondarySpace "ftSecondarySpace" #define ResFtWindowsCodePage "ftWindowsCodePage" #define ResHighlightBold "highlightBold" #define ResHostColorFor "hostColorFor" #define ResHostColorForDefault ResHostColorFor "Default" #define ResHostColorForIntensified ResHostColorFor "Intensified" #define ResHostColorForProtected ResHostColorFor "Protected" #define ResHostColorForProtectedIntensified ResHostColorFor "ProtectedIntensified" #define ResHostname "hostname" #define ResHostsFile "hostsFile" #define ResHttpd "httpd" #define ResIconFont "iconFont" #define ResIconLabelFont "iconLabelFont" #define ResIcrnl "icrnl" #define ResIdleCommand "idleCommand" #define ResIdleCommandEnabled "idleCommandEnabled" #define ResIdleTimeout "idleTimeout" #define ResInlcr "inlcr" #define ResInputColor "inputColor" #define ResInputMethod "inputMethod" #define ResInsertMode "insertMode" #define ResIntr "intr" #define ResInvertKeypadShift "invertKeypadShift" #define ResKeyFile "keyFile" #define ResKeyFileType "keyFileType" #define ResKeymap "keymap" #define ResKeypad "keypad" #define ResKeypadBackground "keypadBackground" #define ResKeypadOn "keypadOn" #define ResKeyPasswd "keyPasswd" #define ResKill "kill" #define ResLabelIcon "labelIcon" #define ResLightPenPrimary "lightPenPrimary" #define ResLineWrap "lineWrap" #define ResLnext "lnext" #define ResLocalCp "localCp" #define ResLoginMacro "loginMacro" #define ResLockedCursor "lockedCursor" #define ResLuCommandLine "printer.luCommandLine" #define ResMacros "macros" #define ResMarginedPaste "marginedPaste" #define ResMaxRecent "maxRecent" #define ResMenuBar "menuBar" #define ResMetaEscape "metaEscape" #define ResMinVersion "minVersion" #define ResModel "model" #define ResModifiedSel "modifiedSel" #define ResModifiedSelColor "modifiedSelColor" #define ResMono "mono" #define ResMonoCase "monoCase" #define ResMouse "mouse" #define ResNewEnviron "newEnviron" #define ResNoOther "noOther" #define ResNoPrompt "noPrompt" #define ResNopSeconds "nopSeconds" #define ResNoTelnetInputMode "noTelnetInputMode" #define ResNormalColor "normalColor" #define ResNormalCursor "normalCursor" #define ResNumericLock "numericLock" #define ResNvtMode "nvtMode" #define ResOerrLock "oerrLock" #define ResOnce "once" #define ResOnlcr "onlcr" #define ResOverlayPaste "overlayPaste" #define ResOversize "oversize" #define ResPort "port" #define ResPreeditType "preeditType" #define ResPrinterCodepage "printer.codepage" #define ResPrinterCommand "printer.command" #define ResPrinterLu "printerLu" #define ResPrinterName "printer.name" #define ResPrinterOptions "printer.options" #define ResPrintDialog "printDialog" #define ResProxy "proxy" #define ResQuit "quit" #define ResQrBgColor "qrBgColor" #define ResReconnect "reconnect" #define ResRectangleSelect "rectangleSelect" #define ResReverseInputMode "reverseInputMode" #define ResReverseVideo "reverseVideo" #define ResRightToLeftMode "rightToLeftMode" #define ResRprnt "rprnt" #define ResSaveLines "saveLines" #define ResSchemeList "schemeList" #define ResScreenTrace "screenTrace" #define ResScreenTraceFile "screenTraceFile" #define ResScreenTraceTarget "screenTraceTarget" #define ResScreenTraceType "screenTraceType" #define ResScripted "scripted" #define ResScriptPort "scriptPort" #define ResScriptPortOnce "scriptPortOnce" #define ResScrollBar "scrollBar" #define ResSecure "secure" #define ResSelectBackground "selectBackground" #define ResSelectUrl "selectUrl" #define ResSbcsCgcsgid "sbcsCgcsgid" #define ResShowTiming "showTiming" #define ResSocket "socket" #define ResStartTls "startTls" #define ResSuppressActions "suppressActions" #define ResSuppressHost "suppressHost" #define ResSuppressFontMenu "suppressFontMenu" #define ResSuppress "suppress" #define ResTermName "termName" #define ResTitle "title" #define ResTrace "trace" #define ResTraceDir "traceDir" #define ResTraceFile "traceFile" #define ResTraceFileSize "traceFileSize" #define ResTraceMonitor "traceMonitor" #define ResTypeahead "typeahead" #define ResUnderscore "underscore" #define ResUnlockDelay "unlockDelay" #define ResUnlockDelayMs "unlockDelayMs" #define ResUseCursorColor "useCursorColor" #define ResUser "user" #define ResUtf8 "utf8" #define ResVerifyHostCert "verifyHostCert" #define ResVisibleControl "visibleControl" #define ResVisualBell "visualBell" #define ResVisualSelect "visualSelect" #define ResVisualSelectColor "visualSelectColor" #define ResWaitCursor "waitCursor" #define ResWerase "werase" #define ResXQuartzHack "xQuartzHack" /* Dotted resource names. */ #define DotAcceptHostname "." ResAcceptHostname #define DotActiveIcon "." ResActiveIcon #define DotAlias "." ResAlias #define DotAplMode "." ResAplMode #define DotCaDir "." ResCaDir #define DotCaFile "." ResCaFile #define DotCertFile "." ResCertFile #define DotCertFileType "." ResCertFileType #define DotChainFile "." ResChainFile #define DotCbreak "." ResCbreak #define DotCharClass "." ResCharClass #define DotClientCert "." ResClientCert #define DotCodePage "." ResCodePage #define DotColorScheme "." ResColorScheme #define DotConnectTimeout "." ResConnectTimeout #define DotDevName "." ResDevName #define DotEmulatorFont "." ResEmulatorFont #define DotHostsFile "." ResHostsFile #define DotHttpd "." ResHttpd #define DotInputMethod "." ResInputMethod #define DotKeyFile "." ResKeyFile #define DotKeyFileType "." ResKeyFileType #define DotKeymap "." ResKeymap #define DotKeypadOn "." ResKeypadOn #define DotKeyPasswd "." ResKeyPasswd #define DotLoginMacro "." ResLoginMacro #define DotMinVersion "." ResMinVersion #define DotModel "." ResModel #define DotMono "." ResMono #define DotNopSeconds "." ResNopSeconds #define DotNvtMode "." ResNvtMode #define DotOnce "." ResOnce #define DotOversize "." ResOversize #define DotPort "." ResPort #define DotPreeditType "." ResPreeditType #define DotPrinterLu "." ResPrinterLu #define DotProxy "." ResProxy #define DotReconnect "." ResReconnect #define DotSaveLines "." ResSaveLines #define DotScripted "." ResScripted #define DotScriptPort "." ResScriptPort #define DotScriptPortOnce "." ResScriptPortOnce #define DotScrollBar "." ResScrollBar #define DotSecure "." ResSecure #define DotSelfSignedOk "." ResSelfSignedOk #define DotSocket "." ResSocket #define DotTermName "." ResTermName #define DotTitle "." ResTitle #define DotTrace "." ResTrace #define DotTraceFile "." ResTraceFile #define DotTraceFileSize "." ResTraceFileSize #define DotUser "." ResUser #define DotUtf8 "." ResUtf8 #define DotVerifyHostCert "." ResVerifyHostCert /* Resource classes. */ #define ClsAcceptHostname "AcceptHostname" #define ClsActiveIcon "ActiveIcon" #define ClsAdVersion "AdVersion" #define ClsAidWait "AidWait" #define ClsAllBold "AllBold" #define ClsAllowResize "AllowResize" #define ClsAltCursor "AltCursor" #define ClsAlwaysInsert "AlwaysInsert" #define ClsAplCircledAlpha "AplCircledAlpha" #define ClsAplMode "AplMode" #define ClsBaselevelTranslations "BaselevelTranslations" #define ClsBellVolume "BellVolume" #define ClsBindLimit "BindLimit" #define ClsBindUnlock "BindUnlock" #define ClsBlankFill "BlankFill" #define ClsBoldColor "BoldColor" #define ClsBsdTm "BsdTm" #define ClsCaDir "CaDir" #define ClsCaFile "CaFile" #define ClsCbreak "Cbreak" #define ClsCertFile "CertFile" #define ClsCertFileType "CertFileType" #define ClsChainFile "ChainFile" #define ClsCharClass "CharClass" #define ClsCharset "Charset" #define ClsClientCert "ClientCert" #define ClsCodePage "CodePage" #define ClsColorBackground "ColorBackground" #define ClsColorScheme "ColorScheme" #define ClsComposeMap "ComposeMap" #define ClsConfDir "ConfDir" #define ClsConnectFileName "ConnectFileName" #define ClsConnectTimeout "ConnectTimeout" #define ClsConsole "Console" #define ClsCrosshair "Crosshair" #define ClsCrosshairColor "CrosshairColor" #define ClsCursorBlink "CursorBlink" #define ClsCursorColor "CursorColor" #define ClsDbcsCgcsgid "DbcsCgcsgid" #define ClsDebugTracing "DebugTracing" #define ClsDevName "DevName" #define ClsDisconnectClear "DisconnectClear" #define ClsDoConfirms "DoConfirms" #define ClsDpi "Dpi" #define ClsEmulatorFont "EmulatorFont" #define ClsEof "Eof" #define ClsErase "Erase" #define ClsFixedSize "FixedSize" #define ClsFtAllocation "FtAllocation" #define ClsFtAvblock "FtAvblock" #define ClsFtBlksize "FtBlksize" #define ClsFtBufferSize "FtBufferSize" #define ClsFtCr "FtCr" #define ClsFtDirection "FtDirection" #define ClsFtExist "FtExist" #define ClsFtHost "FtHost" #define ClsFtHostFile "FtHostFile" #define ClsFtLocalFile "FtLocalFile" #define ClsFtLrecl "FtLrecl" #define ClsFtMode "FtMode" #define ClsFtPrimarySpace "FtPrimarySpace" #define ClsFtRecfm "FtRecfm" #define ClsFtRemap "FtRemap" #define ClsFtSecondarySpace "FtSecondarySpace" #define ClsFtWindowsCodePage "ClsWindowsCodePage" #define ClsHighlightBold "HighlightBold" #define ClsHostname "Hostname" #define ClsHostsFile "HostsFile" #define ClsHttpd "Httpd" #define ClsIconFont "IconFont" #define ClsIconLabelFont "IconLabelFont" #define ClsIcrnl "Icrnl" #define ClsIdleCommand "IdleCommand" #define ClsIdleCommandEnabled "IdleCommandEnabled" #define ClsIdleTimeout "IdleTimeout" #define ClsInlcr "Inlcr" #define ClsInputColor "InputColor" #define ClsInputMethod "InputMethod" #define ClsInsertMode "InsertMode" #define ClsIntr "Intr" #define ClsInvertKeypadShift "InvertKeypadShift" #define ClsKeyFile "KeyFile" #define ClsKeyFileType "KeyFileType" #define ClsKeymap "Keymap" #define ClsKeypad "Keypad" #define ClsKeypadBackground "KeypadBackground" #define ClsKeypadOn "KeypadOn" #define ClsKeyPasswd "KeyPasswd" #define ClsKill "Kill" #define ClsLabelIcon "LabelIcon" #define ClsLineWrap "LineWrap" #define ClsLnext "Lnext" #define ClsLockedCursor "LockedCursor" #define ClsLoginMacro "LoginMacro" #define ClsMacros "Macros" #define ClsMarginedPaste "MarginedPaste" #define ClsMaxRecent "MaxRecent" #define ClsMenuBar "MenuBar" #define ClsMetaEscape "MetaEscape" #define ClsMinVersion "MinVersion" #define ClsModel "Model" #define ClsModifiedSel "ModifiedSel" #define ClsModifiedSelColor "ModifiedSelColor" #define ClsMono "Mono" #define ClsMonoCase "MonoCase" #define ClsNewEnviron "NewEnviron" #define ClsNoOther "NoOther" #define ClsNoTelnetInputMode "NoTelnetInputMode" #define ClsNopSeconds "NopSeconds" #define ClsNormalColor "NormalColor" #define ClsNormalCursor "NormalCursor" #define ClsNumericLock "NumericLock" #define ClsNvtMode "NvtMode" #define ClsOerrLock "OerrLock" #define ClsOnce "Once" #define ClsOnlcr "Onlcr" #define ClsOverlayPaste "OverlayPaste" #define ClsOversize "Oversize" #define ClsPort "Port" #define ClsPreeditType "PreeditType" #define ClsPrinterLu "PrinterLu" #define ClsProxy "Proxy" #define ClsQuit "Quit" #define ClsReconnect "Reconnect" #define ClsRectangleSelect "RectangleSelect" #define ClsReverseInputMode "ReverseInputMode" #define ClsRightToLeftMode "RightToLeftMode" #define ClsRprnt "Rprnt" #define ClsSaveLines "SaveLines" #define ClsSbcsCgcsgid "SbcsSgcsgid" #define ClsScreenTrace "ScreenTrace" #define ClsScreenTraceFile "ScreenTraceFile" #define ClsScreenTraceTarget "ScreenTraceTarget" #define ClsScreenTraceType "ScreenTraceType" #define ClsScripted "Scripted" #define ClsScriptPort "ScriptPort" #define ClsScriptPortOnce "ScriptPortOnce" #define ClsScrollBar "ScrollBar" #define ClsSecure "Secure" #define ClsSelectBackground "SelectBackground" #define ClsSelectUrl "SelectUrl" #define ClsShowTiming "ShowTiming" #define ClsSocket "Socket" #define ClsStartTls "StartTls" #define ClsSuppressActions "SuppressActions" #define ClsSuppressHost "SuppressHost" #define ClsSuppressFontMenu "SuppressFontMenu" #define ClsTermName "TermName" #define ClsTrace "Trace" #define ClsTraceDir "TraceDir" #define ClsTraceFile "TraceFile" #define ClsTraceFileSize "TraceFileSize" #define ClsTraceMonitor "TraceMonitor" #define ClsTypeahead "Typeahead" #define ClsUnlockDelay "UnlockDelay" #define ClsUnlockDelayMs "UnlockDelayMs" #define ClsUseCursorColor "UseCursorColor" #define ClsUser "User" #define ClsUtf8 "Utf8" #define ClsVerifyHostCert "VerifyHostCert" #define ClsVisibleControl "VisibleControl" #define ClsVisualBell "VisualBell" #define ClsVisualSelect "VisualSelect" #define ClsVisualSelectColor "VisualSelectColor" #define ClsWaitCursor "WaitCursor" #define ClsWerase "Werase" #define ClsXQuartzHack "XQuartzHack" /* Options. */ #define OptAcceptHostname "-accepthostname" #define OptActiveIcon "-activeicon" #define OptAlias "-alias" #define OptAllBold "-allbold" #define OptAltScreen "-altscreen" #define OptAplMode "-apl" #define OptCaDir "-cadir" #define OptCaFile "-cafile" #define OptCallback "-callback" #define OptCbreak "-cbreak" #define OptCertFile "-certfile" #define OptCertFileType "-certfiletype" #define OptChainFile "-chainfile" #define OptCharClass "-cc" #define OptCharset "-charset" #define OptClientCert "-clientcert" #define OptClear "-clear" #define OptCodePage "-codepage" #define OptColorScheme "-scheme" #define OptConnectTimeout "-connecttimeout" #define OptDefaultFgBg "-defaultfgbg" #define OptDefScreen "-defscreen" #define OptDevName "-devname" #define OptTrace "-trace" #define OptEmulatorFont "-efont" #define OptHostsFile "-hostsfile" #define OptHelp1 "--help" #define OptHelp2 "-?" #define OptHelp3 "/?" #define OptHttpd "-httpd" #define OptIconName "-iconname" #define OptIconX "-iconx" #define OptIconY "-icony" #define OptInputMethod "-im" #define OptKeyFile "-keyfile" #define OptKeyFileType "-keyfiletype" #define OptKeymap "-keymap" #define OptKeypadOn "-keypad" #define OptKeyPasswd "-keypasswd" #define OptLocalCp "-localcp" #define OptLocalProcess "-e" #define OptLoginMacro "-loginmacro" #define OptMinVersion "-minversion" #define OptModel "-model" #define OptMono "-mono" #define OptNoPrompt "-noprompt" #define OptNoScrollBar "+sb" #define OptNvtMode "-nvt" #define OptOnce "-once" #define OptOversize "-oversize" #define OptPort "-port" #define OptPreeditType "-pt" #define OptPrinterLu "-printerlu" #define OptProxy "-proxy" #define OptReconnect "-reconnect" #define OptReverseVideo "-rv" #define OptSaveLines "-sl" #define OptSecure "-secure" #define OptScripted "-script" #define OptScriptPort "-scriptport" #define OptScriptPortOnce "-scriptportonce" #define OptScrollBar "-sb" #define OptSet "-set" #define OptSocket "-socket" #define OptSyncPort "-syncport" #define OptAutoShortcut "-S" #define OptNoAutoShortcut "+S" #define OptNoVerifyHostCert "-noverifycert" #define OptTermName "-tn" #define OptTitle "-title" #define OptTraceFile "-tracefile" #define OptTraceFileSize "-tracefilesize" #define OptUser "-user" #define OptUtf8 "-utf8" #define OptV "-v" #define OptVerifyHostCert "-verifycert" #define OptVersion "--version" /* Miscellaneous values. */ #define ResTrue "true" #define ResFalse "false" #define KpLeft "left" #define KpRight "right" #define KpBottom "bottom" #define KpIntegral "integral" #define KpInsideRight "insideRight" #define Apl "apl" /* Resources that are gotten explicitly. */ #define ResComposeMap "composeMap" #define ResEmulatorFontList "emulatorFontList" #define ResKeyHeight "keyHeight" #define ResKeyWidth "keyWidth" #define ResLargeKeyWidth "largeKeyWidth" #define ResMessage "message" #define ResNvt "nvt" #define ResPaWidth "paWidth" #define ResPfWidth "pfWidth" #define ResPrintTextCommand "printTextCommand" #define ResPrintTextFont "printTextFont" #define ResPrintTextHorizontalMargin "printTextHorizontalMargin" #define ResPrintTextOrientation "printTextOrientation" #define ResPrintTextScreensPerPage "printTextScreensPerPage" #define ResPrintTextSize "printTextSize" #define ResPrintTextVerticalMargin "printTextVerticalMargin" #define ResPrintWindowCommand "printWindowCommand" #define ResUser "user" suite3270-4.1/include/rpq.h000066400000000000000000000033461413735575200154430ustar00rootroot00000000000000/* * Copyright (c) 2005-2009, 2013, 2015 Paul Mattes. * Copyright (c) 2004-2005, Don Russell. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the names of Paul Mattes, Don Russell, Jeff Sparkes, GTRC nor * the names of their contributors may be used to endorse or promote * products derived from this software without specific prior written * permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES AND DON RUSSELL "AS IS" AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL PAUL MATTES OR DON RUSSELL BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * rpq.h * RPQNAMES structured field support. * */ extern qr_single_fn_t do_qr_rpqnames; suite3270-4.1/include/s3270_proto.h000066400000000000000000000042011413735575200166310ustar00rootroot00000000000000/* * Copyright (c) 2018-2019 Paul Mattes. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the names of Paul Mattes nor the names of his contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO * EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * s3270_proto.h * The s3270 protocol. */ /* Environment variables passed to child scripts. */ #define OUTPUT_ENV "X3270OUTPUT" #define INPUT_ENV "X3270INPUT" #define PORT_ENV "X3270PORT" #define URL_ENV "X3270URL" /* Common length for all prefixes. */ #define PREFIX_LEN 6 /* Prefix for data output. */ #define DATA_PREFIX "data: " /* Prefixes for input. */ #define INPUT_PREFIX "inpt: " #define PWINPUT_PREFIX "inpw: " /* Prompt terminators. */ #define PROMPT_OK "ok" #define PROMPT_ERROR "error" /* Action to continue or abort interactive input. */ #define RESUME_INPUT "ResumeInput" #define RESUME_INPUT_ABORT "-Abort" suite3270-4.1/include/save.h000066400000000000000000000031621413735575200155730ustar00rootroot00000000000000/* * Copyright (c) 1999-2009, 2015 Paul Mattes. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the names of Paul Mattes nor the names of his contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO * EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * save.h * Declarations for save.c. */ extern char *command_string; void save_yourself(void); suite3270-4.1/include/save_restore.h000066400000000000000000000031521413735575200173350ustar00rootroot00000000000000/* * Copyright (c) 2021 Paul Mattes. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the names of Paul Mattes nor the names of his contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO * EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * save_restore.h * Screen save and restore. */ void save_restore_register(void); suite3270-4.1/include/screen.h000066400000000000000000000047351413735575200161230ustar00rootroot00000000000000/* * Copyright (c) 1999-2009, 2014-2015, 2018-2020 Paul Mattes. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the names of Paul Mattes nor the names of his contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO * EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * screen.h * Declarations for screen.c. */ extern int *char_width, *char_height; void cursor_move(int baddr); void blink_start(void); unsigned display_heightMM(void); unsigned display_height(void); unsigned display_widthMM(void); unsigned display_width(void); void mcursor_locked(void); void mcursor_normal(void); void mcursor_waiting(void); bool screen_obscured(void); void screen_scroll(unsigned char fg, unsigned char bg); unsigned long screen_window_number(void); bool screen_has_bg_color(void); void ring_bell(void); void screen_disp(bool erasing); void screen_80(void); void screen_132(void); void screen_flip(void); bool screen_flipped(void); bool screen_selected(int baddr); bool screen_new_display_charsets(const char *realname, const char *csnames); void screen_system_fixup(void); bool screen_suspend(void); void screen_set_thumb(float top, float shown, int saved, int screen, int back); void enable_cursor(bool on); void screen_init(void); suite3270-4.1/include/screentrace.h000066400000000000000000000040471413735575200171360ustar00rootroot00000000000000/* * Copyright (c) 1995-2017, 2020 Paul Mattes. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the names of Paul Mattes nor the names of his contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO * EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * screentrace.h * Global declarations for screentrace.c. */ char *screentrace_default_file(ptype_t ptype); char *screentrace_default_printer(void); void screentrace_resource_setup(void); void trace_nvt_disc(void); void trace_char(char c); tss_t trace_get_screentrace_target(void); const char *trace_get_screentrace_name(void); ptype_t trace_get_screentrace_type(void); void trace_screen(bool is_clear); void trace_set_screentrace_file(tss_t target, ptype_t ptype, unsigned opts, const char *name); void screentrace_register(void); suite3270-4.1/include/scroll.h000066400000000000000000000031721413735575200161340ustar00rootroot00000000000000/* * Copyright (c) 1995-2009, 2013-2017 Paul Mattes. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of Paul Mattes nor his contributors may be used * to endorse or promote products derived from this software without * specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. */ /* * scroll.h * Global declarations for scroll.c. */ void scroll_save(int n); void scroll_to_bottom(void); suite3270-4.1/include/see.h000066400000000000000000000036421413735575200154140ustar00rootroot00000000000000/* * Copyright (c) 1993-2009, 2013-2015 Paul Mattes. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the names of Paul Mattes nor the names of his contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO * EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * see.h * Declarations for see.c * */ const char *see_aid(unsigned char code); const char *see_attr(unsigned char fa); const char *see_color(unsigned char setting); const char *see_ebc(unsigned char ch); const char *see_efa(unsigned char efa, unsigned char value); const char *see_efa_only(unsigned char efa); const char *see_qcode(unsigned char id); int decode_host_color(const char *name); suite3270-4.1/include/selectc.h000066400000000000000000000032601413735575200162560ustar00rootroot00000000000000/* * Copyright (c) 1999-2009, 2015 Paul Mattes. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the names of Paul Mattes nor the names of his contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO * EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * selectc.h * Common declarations for select.c. */ void unselect(int baddr, int len); bool area_is_selected(int baddr, int len); void select_register(void); suite3270-4.1/include/sf.h000066400000000000000000000032541413735575200152470ustar00rootroot00000000000000/* * Copyright (c) 1995-2009, 2013, 2015 Paul Mattes. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the names of Paul Mattes nor the names of his contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO * EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * sf.h * Global declarations for sf.c. */ typedef void qr_single_fn_t(void); enum pds write_structured_field(unsigned char buf[], size_t buflen); suite3270-4.1/include/sio.h000066400000000000000000000057341413735575200154360ustar00rootroot00000000000000/* * Copyright (c) 2017, 2019-2020 Paul Mattes. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the names of Paul Mattes, Don Russell, Jeff Sparkes, GTRC * nor their contributors may be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. * IN NO EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, INDIRECT, * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * sio.h * External definitions for functions and data for secure I/O, * implemented in various platform-specific ways. */ /* Special return values from sio_read and sio_write. */ #define SIO_EOF 0 #define SIO_FATAL_ERROR (-1) #define SIO_EWOULDBLOCK (-2) /* Return values from sio_init. */ typedef enum { SI_SUCCESS, /* success */ SI_FAILURE, /* failure, reason in sio_last_error */ SI_NEED_PASSWORD, /* need a password */ SI_WRONG_PASSWORD /* password is wrong */ } sio_init_ret_t; /* Return values from sio_negotiate. */ typedef enum { SIG_SUCCESS, /* success */ SIG_FAILURE, /* failure */ SIG_WANTMORE /* more input needed */ } sio_negotiate_ret_t; typedef void *sio_t; /* Implemented in common code. */ const char *sio_last_error(void); unsigned sio_all_options_supported(); /* Implemented in platform-specific code. */ bool sio_supported(void); const char *sio_provider(void); unsigned sio_options_supported(void); sio_init_ret_t sio_init(tls_config_t *config, const char *password, sio_t *sio_ret); sio_negotiate_ret_t sio_negotiate(sio_t sio, socket_t sock, const char *hostname, bool *data); int sio_read(sio_t sio, char *buf, size_t buflen); int sio_write(sio_t sio, const char *buf, size_t buflen); void sio_close(sio_t sio); bool sio_secure_unverified(sio_t sio); const char *sio_session_info(sio_t sio); const char *sio_server_cert_info(sio_t sio); const char *sio_server_subject_names(sio_t sio); suite3270-4.1/include/sio_glue.h000066400000000000000000000031561413735575200164460ustar00rootroot00000000000000/* * Copyright (c) 2017 Paul Mattes. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the names of Paul Mattes, Don Russell, Jeff Sparkes, GTRC * nor their contributors may be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. * IN NO EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, INDIRECT, * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * sio_glue.h * Secure I/O glue functions. */ void sio_glue_register(void); suite3270-4.1/include/sio_internal.h000066400000000000000000000031771413735575200173310ustar00rootroot00000000000000/* * Copyright (c) 2017 Paul Mattes. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the names of Paul Mattes, Don Russell, Jeff Sparkes, GTRC * nor their contributors may be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. * IN NO EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, INDIRECT, * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * sio_internal.h * Internal secure I/O data and functions. */ char *sio_option_names(void); suite3270-4.1/include/sioc.h000066400000000000000000000036161413735575200155760ustar00rootroot00000000000000/* * Copyright (c) 2017, 2020 Paul Mattes. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the names of Paul Mattes, Don Russell, Jeff Sparkes, GTRC * nor their contributors may be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. * IN NO EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, INDIRECT, * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * sioc.h * Common back-end logic for secure I/O. */ void sioc_set_error(const char *fmt, ...); void sioc_error_reset(void); char *sioc_string_from_file(const char *path, size_t *len_ret); char *sioc_parse_password_spec(const char *spec); void sioc_subject_add(char ***subjects, char *s, ssize_t len); void sioc_subject_print(varbuf_t *v, char ***subjects); suite3270-4.1/include/source.h000066400000000000000000000031221413735575200161310ustar00rootroot00000000000000/* * Copyright (c) 2016 Paul Mattes. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the names of Paul Mattes nor the names of his contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO * EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * source.h * Global declarations for source.c. */ action_t Source_action; suite3270-4.1/include/split_host.h000066400000000000000000000041601413735575200170240ustar00rootroot00000000000000/* * Copyright (c) 1993-2020 Paul Mattes. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the names of Paul Mattes nor the names of his contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO * EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * split_host.h * Host name parsing. */ /* Host flags. */ typedef enum { ANSI_HOST, /* A: */ NO_LOGIN_HOST, /* C: */ TLS_HOST, /* L: */ NON_TN3270E_HOST, /* N: */ PASSTHRU_HOST, /* P: */ STD_DS_HOST, /* S: */ BIND_LOCK_HOST, /* B:, now a no-op */ NO_VERIFY_CERT_HOST,/* Y: */ NO_TELNET_HOST /* T: */ } host_flags_t; #define HOST_nFLAG(flags, t) ((flags & (1 << t)) != 0) extern const char *host_prefixes(void); bool new_split_host(char *raw, char **lu, char **host, char **port, char **accept, unsigned *prefixes, char **error); suite3270-4.1/include/stats.h000066400000000000000000000031251413735575200157720ustar00rootroot00000000000000/* * Copyright (c) 2019 Paul Mattes. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the names of Paul Mattes nor the names of his contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO * EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * stats.h * Statistics interface. */ void stats_poke(void); suite3270-4.1/include/status.h000066400000000000000000000042201413735575200161540ustar00rootroot00000000000000/* * Copyright (c) 1995-2009, 2015, 2018, 2021 Paul Mattes. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of Paul Mattes nor his contributors may be used * to endorse or promote products derived from this software without * specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. */ /* * status.h * Global declarations for status.c. */ void status_compose(bool on, ucs4_t ucs4, enum keytype keytype); void status_ctlr_done(void); void status_insert_mode(bool on); void status_keyboard_disable_flash(void); void status_lu(const char *); void status_minus(void); void status_oerr(int error_type); void status_reset(void); void status_reverse_mode(bool on); void status_screentrace(int n); void status_script(bool on); void status_scrolled(int n); void status_syswait(void); void status_timing(struct timeval *t0, struct timeval *t1); void status_twait(void); void status_typeahead(bool on); void status_untiming(void); suite3270-4.1/include/status_dump.h000066400000000000000000000035051413735575200172060ustar00rootroot00000000000000/* * Copyright (c) 1993-2019 Paul Mattes. * Copyright (c) 1990, Jeff Sparkes. * Copyright (c) 1989, Georgia Tech Research Corporation (GTRC), Atlanta, GA * 30332. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the names of Paul Mattes, Jeff Sparkes, GTRC nor the names of * their contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES, JEFF SPARKES AND GTRC "AS IS" AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL PAUL MATTES, JEFF SPARKES OR GTRC BE * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. */ /* * status_dump.h * A curses-based 3270 Terminal Emulator * 'Show(Status)' action. */ const char *status_dump(void); suite3270-4.1/include/stdinscript.h000066400000000000000000000031331413735575200172010ustar00rootroot00000000000000/* * Copyright (c) 2016 Paul Mattes. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the names of Paul Mattes nor the names of his contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO * EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * stdinscript.h * Global declarations for stdinscript.c. */ void stdin_init(void); suite3270-4.1/include/stringscript.h000066400000000000000000000032321413735575200173660ustar00rootroot00000000000000/* * Copyright (c) 2016, 2018-2019 Paul Mattes. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the names of Paul Mattes nor the names of his contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO * EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * stringscript.h * Global declarations for stringscript.c. */ void push_string(char *st, bool is_hex, bool is_paste, bool force_utf8); suite3270-4.1/include/tables.h000066400000000000000000000032311413735575200161040ustar00rootroot00000000000000/* * Copyright (c) 1995-2009, 2015 Paul Mattes. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the names of Paul Mattes nor the names of his contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO * EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * tables.h * Global declarations for tables.c. */ extern const unsigned char ebc2asc0[256]; extern const unsigned char asc2ebc0[256]; suite3270-4.1/include/task.h000066400000000000000000000136631413735575200156060ustar00rootroot00000000000000/* * Copyright (c) 1995-2009, 2014-2021 Paul Mattes. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the names of Paul Mattes nor the names of his contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO * EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * task.h * Global declarations for task.c. */ /* macro definition */ struct macro_def { char *name; char **parents; char *action; struct macro_def *next; }; extern struct macro_def *macro_defs; typedef void *task_cbh; void abort_script(void); void abort_script_by_cb(const char *cb_name); void abort_queue(const char *unique_name); void macro_command(struct macro_def *m); void peer_script_init(void); void connect_error(const char *fmt, ...); void connect_errno(int e, const char *fmt, ...); void macros_init(void); void ps_set(char *s, bool is_hex, bool force_utf8); void push_keymap_action(char *); void push_keypad_action(char *); void push_macro(char *); void push_stack_macro(char *); bool task_active(void); bool task_can_kbwait(void); void task_connect_wait(void); bool run_tasks(void); void task_error(const char *msg); void task_host_output(void); void task_info(const char *fmt, ...) printflike(1, 2); bool task_ifield_can_proceed(void); void task_kbwait(void); void task_passthru_done(const char *tag, bool success, const char *result); bool task_redirect(void); const char *task_set_passthru(task_cbh **ret_cbh); void task_store(unsigned char c); void task_abort_input_request_irhandle(void *irhandle); void task_abort_input_request(void); bool task_is_interactive(void); bool task_nonblocking_connect(void); /* Input request vectors. */ typedef void (*ir_state_abort_cb)(void *state); typedef void (*task_setir_cb)(task_cbh handle, void *irhandle); typedef void *(*task_getir_cb)(task_cbh handle); typedef void (*task_setir_state_cb)(task_cbh handle, const char *name, void *state, ir_state_abort_cb abort_cb); typedef void *(*task_getir_state_cb)(task_cbh handle, const char *name); typedef struct { task_setir_cb setir; task_getir_cb getir; task_setir_state_cb setir_state; task_getir_state_cb getir_state; } irv_t; typedef void (*task_data_cb)(task_cbh handle, const char *buf, size_t len, bool success); typedef bool (*task_done_cb)(task_cbh handle, bool success, bool abort); typedef bool (*task_run_cb)(task_cbh handle, bool *success); typedef void (*task_closescript_cb)(task_cbh handle); typedef void (*task_setflags_cb)(task_cbh handle, unsigned flags); typedef unsigned (*task_getflags_cb)(task_cbh handle); typedef bool (*task_need_delay_cb)(task_cbh handle); typedef const char *(*task_command_cb)(task_cbh handle); typedef void (*task_reqinput_cb)(task_cbh handle, const char *buf, size_t len, bool echo); typedef struct { const char *shortname; enum iaction ia; unsigned flags; task_data_cb data; task_done_cb done; task_run_cb run; task_closescript_cb closescript; task_setflags_cb setflags; task_getflags_cb getflags; irv_t *irv; task_command_cb command; task_reqinput_cb reqinput; } tcb_t; #define CB_UI 0x1 /* came from the UI */ #define CB_NEEDS_RUN 0x2 /* needs its run method called */ #define CB_NEW_TASKQ 0x4 /* creates a new task queue */ #define CB_PEER 0x8 /* peer script (don't abort) */ #define CBF_INTERACTIVE 0x1 /* settable: interactive (e.g., c3270 prompt) */ #define CBF_CONNECT_NONBLOCK 0x2 /* do not block Connect()/Open() */ #define CBF_PWINPUT 0x4 /* can do password (no echo) input */ char *push_cb(const char *buf, size_t len, const tcb_t *cb, task_cbh handle); void task_activate(task_cbh handle); void task_register(void); char *task_cb_prompt(task_cbh handle); unsigned long task_cb_msec(task_cbh handle); typedef bool continue_fn(void *, const char *); typedef void abort_fn(void *); bool task_request_input(const char *action, const char *prompt, continue_fn *continue_fn, abort_fn *abort_fn, void *handle, bool no_echo); bool task_can_request_input(const char *action, bool no_echo); typedef llist_t task_cb_ir_state_t; void task_cb_init_ir_state(task_cb_ir_state_t *ir_state); void task_cb_set_ir_state(task_cb_ir_state_t *ir_state, const char *name, void *state, ir_state_abort_cb abort); void *task_cb_get_ir_state(task_cb_ir_state_t *ir_state, const char *name); void task_cb_abort_ir_state(task_cb_ir_state_t *ir_state); void task_set_ir_state(const char *name, void *state, ir_state_abort_cb abort); void *task_get_ir_state(const char *name); void task_resume_xwait(void *context, bool cancel, const char *why); typedef void xcontinue_fn(void *context, bool cancel); void task_xwait(void *context, xcontinue_fn *continue_fn, const char *why); char *task_get_tasks(void); bool validate_command(const char *command, int offset, char **error); suite3270-4.1/include/telnet.h000066400000000000000000000067251413735575200161400ustar00rootroot00000000000000/* * Copyright (c) 1995-2009, 2013-2020 Paul Mattes. * Copyright (c) 2004, Don Russell. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the names of Paul Mattes, Don Russell, Jeff Sparkes, GTRC nor * the names of their contributors may be used to endorse or promote * products derived from this software without specific prior written * permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES AND DON RUSSELL "AS IS" AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL PAUL MATTES OR DON RUSSELL BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * telnet.h * Global declarations for telnet.c, beyond what is declared in * telnet_core.h. */ #if defined(PR3287) /*[*/ # error "Do not include this file for pr3287" #endif /*]*/ extern int ns_brcvd; extern int ns_bsent; extern int ns_rrcvd; extern int ns_rsent; extern time_t ns_time; extern const char *state_name[]; extern struct timeval net_last_recv_ts; void net_abort(void); void net_break(char c); void net_charmode(void); net_connect_t net_connect(const char *, char *, char *, bool, iosrc_t *); void net_exception(iosrc_t fd, ioid_t id); int net_getsockname(void *buf, int *len); void net_hexnvt_out(unsigned char *buf, int len); void net_input(iosrc_t fd, ioid_t id); void net_interrupt(char c); void net_linemode(void); void net_nop_seconds(void); void net_nvt_break(void); const char *net_query_bind_plu_name(void); const char *net_query_connection_state(void); const char *net_query_host(void); const char *net_query_lu_name(void); const char *net_query_tls(void); void net_sendc(char c); void net_sends(const char *s); bool net_snap_options(void); const char *tn3270e_current_opts(void); const char *net_proxy_type(void); const char *net_proxy_user(void); const char *net_proxy_host(void); const char *net_proxy_port(void); bool net_bound(void); extern bool linemode; bool net_secure_connection(); void net_set_default_termtype(void); bool net_secure_unverified(void); const char *net_server_cert_info(void); const char *net_server_subject_names(void); const char *net_session_info(void); void net_password_continue(const char *password); unsigned net_sio_supported(void); const char *net_sio_provider(void); const char *net_myopts(void); const char *net_hisopts(void); void net_register(void); /* These are for linemode.c to call, not external users. */ void net_cookedout(const char *buf, size_t len); void net_cookout(const char *buf, size_t len); suite3270-4.1/include/telnet_core.h000066400000000000000000000041501413735575200171360ustar00rootroot00000000000000/* * Copyright (c) 1995-2009, 2013-2015, 2020 Paul Mattes. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the names of Paul Mattes, Don Russell, Jeff Sparkes, GTRC nor * the names of their contributors may be used to endorse or promote * products derived from this software without specific prior written * permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES AND DON RUSSELL "AS IS" AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL PAUL MATTES OR DON RUSSELL BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * telnet_core.h * Global declarations for telnet.c functions and data common to * both the 3270 and 3287 emulators. */ /* Output buffer. */ extern unsigned char *obuf, *obptr; /* Entry points. */ void popup_a_sockerr(const char *fmt, ...) printflike(1, 2); bool net_add_dummy_tn3270e(void); void net_add_eor(unsigned char *buf, size_t len); void net_disconnect(bool including_tls); void net_output(void); void space3270out(size_t n); void trace_netdata(char direction, unsigned const char *buf, size_t len); suite3270-4.1/include/telnet_gui.h000066400000000000000000000032201413735575200167670ustar00rootroot00000000000000/* * Copyright (c) 2015 Paul Mattes. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the names of Paul Mattes, Jeff Sparkes, GTRC nor the names of * their contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO * EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * telnet_gui.h * Declarations for interactive TELNET functions */ void telnet_gui_connecting(const char *hostname, const char *portname); suite3270-4.1/include/telnet_private.h000066400000000000000000000040021413735575200176540ustar00rootroot00000000000000/* * Copyright (c) 1995-2009, 2013-2017, 2020 Paul Mattes. * Copyright (c) 2004, Don Russell. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the names of Paul Mattes, Don Russell, Jeff Sparkes, GTRC nor * the names of their contributors may be used to endorse or promote * products derived from this software without specific prior written * permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES AND DON RUSSELL "AS IS" AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL PAUL MATTES OR DON RUSSELL BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * telnet_private.h * Private (locally-shared) declarations for telnet.c. */ extern sio_t sio; extern const char *telquals[]; const char *cmd(int c); const char *opt(unsigned char c); bool telnet_new_environ(unsigned char *request_buf, size_t request_buflen, unsigned char **reply_buf, size_t *reply_buflen, char **trace_inp, char **trace_outp); void environ_init(void); suite3270-4.1/include/telnet_sio.h000066400000000000000000000033031413735575200167770ustar00rootroot00000000000000/* * Copyright (c) 2017 Paul Mattes. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the names of Paul Mattes, Don Russell, Jeff Sparkes, GTRC * nor their contributors may be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO * EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * telnet_sio.h * Glue between telnet and secure I/O (sio). */ sio_t sio_init_wrapper(const char *password, bool force_no_verify, char *accept, bool *pending); suite3270-4.1/include/tls_config.h000066400000000000000000000060761413735575200167730ustar00rootroot00000000000000/* * Copyright (c) 1993-2012, 2016-2017, 2020 Paul Mattes. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the names of Paul Mattes, Jeff Sparkes nor the names of their * contributors may be used to endorse or promote products derived from * this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO * EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * tls_config.h * Secure I/O configuration. */ typedef struct { /* Required options. */ char *accept_hostname; bool verify_host_cert; bool starttls; /* Options that might or might not be supported. */ char *ca_dir; char *ca_file; char *cert_file; char *cert_file_type; char *chain_file; char *key_file; char *key_file_type; char *key_passwd; char *client_cert; } tls_config_t; /* Required options. */ #define TLS_OPT_ACCEPT_HOSTNAME 0x00000001 #define TLS_OPT_VERIFY_HOST_CERT 0x00000002 #define TLS_OPT_STARTTLS 0x00000004 #define TLS_REQUIRED_OPTS \ (TLS_OPT_ACCEPT_HOSTNAME | TLS_OPT_VERIFY_HOST_CERT | TLS_OPT_STARTTLS) /* Options optionally supported by specific implementations. */ #define TLS_OPT_CA_DIR 0x00000008 #define TLS_OPT_CA_FILE 0x00000010 #define TLS_OPT_CERT_FILE 0x00000020 #define TLS_OPT_CERT_FILE_TYPE 0x00000040 #define TLS_OPT_CHAIN_FILE 0x00000080 #define TLS_OPT_KEY_FILE 0x00000100 #define TLS_OPT_KEY_FILE_TYPE 0x00000200 #define TLS_OPT_KEY_PASSWD 0x00000400 #define TLS_OPT_CLIENT_CERT 0x00000800 #define TLS_OPTIONAL_OPTS \ (TLS_OPT_CA_DIR | TLS_OPT_CA_FILE | TLS_OPT_CERT_FILE | \ TLS_OPT_CERT_FILE_TYPE | TLS_OPT_CHAIN_FILE | TLS_OPT_KEY_FILE | \ TLS_OPT_KEY_FILE_TYPE | TLS_OPT_KEY_PASSWD | TLS_OPT_CLIENT_CERT) #define TLS_ALL_OPTS (TLS_REQUIRED_OPTS | TLS_OPTIONAL_OPTS) #define FOREACH_TLS_OPTS(opt) { \ unsigned opt = 1; \ while (TLS_ALL_OPTS & opt) { #define FOREACH_TLS_OPTS_END(opt) \ opt <<= 1; \ } \ } suite3270-4.1/include/tls_passwd_gui.h000066400000000000000000000035171413735575200176700ustar00rootroot00000000000000/* * Copyright (c) 2014-2017, 2020 Paul Mattes. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the names of Paul Mattes nor the names of his contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO * EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * tls_passwd_gui.h * Global declarations for tls_passwd_gui.c. */ typedef enum { SP_SUCCESS, /* got a password */ SP_FAILURE, /* aborted */ SP_PENDING, /* pending */ SP_NOT_SUPPORTED /* can't prompt */ } tls_passwd_ret_t; tls_passwd_ret_t tls_passwd_gui_callback(char *buf, int size, bool again); suite3270-4.1/include/tn3270e.h000066400000000000000000000077741413735575200157540ustar00rootroot00000000000000/* * Copyright (c) 1996-2009, 2014 Paul Mattes. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the names of Paul Mattes nor the names of his contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO * EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * tn3270e.h * * Header file for the TN3270E Protocol, RFC 2355. */ /* Negotiation operations. */ #define TN3270E_OP_ASSOCIATE 0 #define TN3270E_OP_CONNECT 1 #define TN3270E_OP_DEVICE_TYPE 2 #define TN3270E_OP_FUNCTIONS 3 #define TN3270E_OP_IS 4 #define TN3270E_OP_REASON 5 #define TN3270E_OP_REJECT 6 #define TN3270E_OP_REQUEST 7 #define TN3270E_OP_SEND 8 /* Negotiation reason-codes. */ #define TN3270E_REASON_CONN_PARTNER 0 #define TN3270E_REASON_DEVICE_IN_USE 1 #define TN3270E_REASON_INV_ASSOCIATE 2 #define TN3270E_REASON_INV_DEVICE_NAME 3 #define TN3270E_REASON_INV_DEVICE_TYPE 4 #define TN3270E_REASON_TYPE_NAME_ERROR 5 #define TN3270E_REASON_UNKNOWN_ERROR 6 #define TN3270E_REASON_UNSUPPORTED_REQ 7 /* Negotiation function Names. */ #define TN3270E_FUNC_BIND_IMAGE 0 #define TN3270E_FUNC_DATA_STREAM_CTL 1 #define TN3270E_FUNC_RESPONSES 2 #define TN3270E_FUNC_SCS_CTL_CODES 3 #define TN3270E_FUNC_SYSREQ 4 /* Header data type names. */ #define TN3270E_DT_3270_DATA 0x00 #define TN3270E_DT_SCS_DATA 0x01 #define TN3270E_DT_RESPONSE 0x02 #define TN3270E_DT_BIND_IMAGE 0x03 #define TN3270E_DT_UNBIND 0x04 #define TN3270E_DT_NVT_DATA 0x05 #define TN3270E_DT_REQUEST 0x06 #define TN3270E_DT_SSCP_LU_DATA 0x07 #define TN3270E_DT_PRINT_EOJ 0x08 /* Header request flags. */ #define TN3270E_RQF_ERR_COND_CLEARED 0x00 /* Header response flags. */ #define TN3270E_RSF_NO_RESPONSE 0x00 #define TN3270E_RSF_ERROR_RESPONSE 0x01 #define TN3270E_RSF_ALWAYS_RESPONSE 0x02 #define TN3270E_RSF_POSITIVE_RESPONSE 0x00 #define TN3270E_RSF_NEGATIVE_RESPONSE 0x01 /* Header response data. */ #define TN3270E_POS_DEVICE_END 0x00 #define TN3270E_NEG_COMMAND_REJECT 0x00 #define TN3270E_NEG_INTERVENTION_REQUIRED 0x01 #define TN3270E_NEG_OPERATION_CHECK 0x02 #define TN3270E_NEG_COMPONENT_DISCONNECTED 0x03 /* TN3270E data header. */ typedef struct { unsigned char data_type; unsigned char request_flag; unsigned char response_flag; unsigned char seq_number[2]; /* actually, 16 bits, unaligned (!) */ } tn3270e_header; #define EH_SIZE 5 /* UNBIND types. */ #define TN3270E_UNBIND_NORMAL 0x01 #define TN3270E_UNBIND_BIND_FORTHCOMING 0x02 #define TN3270E_UNBIND_VR_INOPERATIVE 0x07 #define TN3270E_UNBIND_RX_INOPERATIVE 0x08 #define TN3270E_UNBIND_HRESET 0x09 #define TN3270E_UNBIND_SSCP_GONE 0x0a #define TN3270E_UNBIND_VR_DEACTIVATED 0x0b #define TN3270E_UNBIND_LU_FAILURE_PERM 0x0c #define TN3270E_UNBIND_LU_FAILURE_TEMP 0x0e #define TN3270E_UNBIND_CLEANUP 0x0f #define TN3270E_UNBIND_BAD_SENSE 0xfe suite3270-4.1/include/toggles.h000066400000000000000000000076141413735575200163070ustar00rootroot00000000000000/* * Copyright (c) 1993-2009, 2013-2015, 2018-2019 Paul Mattes. * Copyright (c) 1990, Jeff Sparkes. * Copyright (c) 1989, Georgia Tech Research Corporation (GTRC), Atlanta, GA * 30332. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the names of Paul Mattes, Jeff Sparkes, GTRC nor the names of * their contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES, JEFF SPARKES AND GTRC "AS IS" AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL PAUL MATTES, JEFF SPARKES OR GTRC BE * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. */ /* * toggles.h * Global declarations for toggles.c. */ typedef struct { const char *name; toggle_index_t index; bool is_alias; } toggle_name_t; extern toggle_name_t toggle_names[]; enum toggle_type { TT_INITIAL, /* at start-up */ TT_INTERACTIVE, /* at the prompt */ TT_ACTION, /* from a keymap, script or macro */ TT_XMENU, /* from a GUI menu */ TT_FINAL /* at shutdown */ }; typedef void toggle_upcall_t(toggle_index_t ix, enum toggle_type type); void do_menu_toggle(int); void do_toggle(int); void initialize_toggles(void); void toggles_register(void); void toggle_toggle(toggle_index_t ix); void set_toggle(toggle_index_t ix, bool value); void set_toggle_initial(toggle_index_t ix, bool value); bool toggle_changed(toggle_index_t ix); bool toggle_supported(toggle_index_t ix); #define TOGGLE_NEED_INIT 0x1 /* needs start-up initialization */ #define TOGGLE_NEED_CLEANUP 0x2 /* needs shutdown clean-up */ typedef struct { toggle_index_t ix; toggle_upcall_t *upcall; unsigned flags; } toggle_register_t; void register_toggles(toggle_register_t toggles[], unsigned count); typedef bool toggle_extended_upcall_t(const char *name, const char *value); typedef bool toggle_extended_done_t(bool success); typedef char *toggle_extended_canonicalize_t(const char *value); void register_extended_toggle(const char *name, toggle_extended_upcall_t upcall, toggle_extended_done_t done, toggle_extended_canonicalize_t canonicalize, void **appres_address, enum resource_type resource_type); typedef void toggle_extended_notify_t(const char *name, const char *value, ia_t ia); void register_extended_toggle_notify(toggle_extended_notify_t notify); void force_toggle_notify(const char *name, ia_t ia); char **extended_toggle_names(int *countp, bool bool_only); void *find_extended_toggle(const char *name, enum resource_type type); int init_extended_toggle(const char *name, size_t nlen, bool bool_only, const char *value, const char **proper_namep); bool Set_action(ia_t ia, unsigned argc, const char **argv); bool Toggle_action(ia_t ia, unsigned argc, const char **argv); typedef struct { const char *name; const char *value; } tnv_t; tnv_t *toggle_values(void); suite3270-4.1/include/toupper.h000077500000000000000000000031461413735575200163400ustar00rootroot00000000000000/* * Copyright (c) 2018 Paul Mattes. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the names of Paul Mattes nor the names of his contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO * EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * toupper.h * 3270 Terminal Emulator * Uppercase translation */ ucs4_t u_toupper(ucs4_t u); suite3270-4.1/include/trace.h000066400000000000000000000042141413735575200157320ustar00rootroot00000000000000/* * Copyright (c) 1995-2017, 2020 Paul Mattes. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the names of Paul Mattes nor the names of his contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO * EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * trace.h * Global declarations for trace.c. */ typedef enum { TSS_FILE, /* trace to file */ TSS_PRINTER /* trace to printer */ } tss_t; extern bool trace_skipping; extern char *tracefile_name; extern struct timeval ds_ts; const char *rcba(int baddr); void trace_ds(const char *fmt, ...) printflike(1, 2); void vtrace(const char *fmt, ...) printflike(1, 2); void ntvtrace(const char *fmt, ...) printflike(1, 2); void trace_set_trace_file(const char *path); void trace_rollover_check(void); void tracefile_ok(const char *tfn); #if defined(_WIN32) /*[*/ const char *default_trace_dir(void); #endif void trace_register(void); suite3270-4.1/include/trace_gui.h000066400000000000000000000033411413735575200165760ustar00rootroot00000000000000/* * Copyright (c) 2014-2015 Paul Mattes. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the names of Paul Mattes nor the names of his contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO * EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * trace_gui.h * Global declarations for trace_gui.c. */ void trace_gui_bad_size(const char *default_value); bool trace_gui_on(int reason, enum toggle_type tt, const char *tracefile); void trace_gui_toggle(void); suite3270-4.1/include/ui_stream.h000066400000000000000000000035121413735575200166240ustar00rootroot00000000000000/* * Copyright (c) 2016 Paul Mattes. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the names of Paul Mattes, Jeff Sparkes, GTRC nor their * contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO * EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * ui_stream.h * A UI back-end for a 3270 Terminal Emulator * UI data stream I/O. */ void ui_io_init(void); void ui_leaf(const char *name, const char *args[]); void ui_pop(void); void ui_push(const char *name, const char *args[]); void ui_vleaf(const char *name, ...); void ui_vpush(const char *name, ...); suite3270-4.1/include/unicode_dbcs.h000066400000000000000000000033731413735575200172620ustar00rootroot00000000000000/* * Copyright (c) 2008-2009, 2014-2015, 2019 Paul Mattes. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the names of Paul Mattes nor the names of his contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO * EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * unicode_dbcs.h * Declarations for DBCS Unicode functions. */ ucs4_t ebcdic_dbcs_to_unicode(ebc_t e, unsigned flags); ebc_t unicode_to_ebcdic_dbcs(ucs4_t u); bool set_uni_dbcs(const char *cpname, const char **codepage); suite3270-4.1/include/unicodec.h000066400000000000000000000103251413735575200164250ustar00rootroot00000000000000/* * Copyright (c) 2008-2009, 2015-2019 Paul Mattes. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the names of Paul Mattes nor the names of his contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO * EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * unicodec.h * Declarations for Unicode translation functions. */ extern bool dbcs_allowed; /* EBCDIC-to-Unicode options */ #define EUO_NONE 0x00000000 /* no options */ #define EUO_BLANK_UNDEF 0x00000001 /* if undefined, return U+0020 */ #define EUO_UPRIV 0x00000002 /* translate FM/DUP/SUB/EO to UPRIV */ #define EUO_ASCII_BOX 0x00000004 /* use ASCII for box drawing */ #define EUO_APL_CIRCLED 0x00000010 /* map APL underscored capital letters to DBCS circled alphabetics */ #define EUO_TOUPPER 0x00000020 /* uppercase */ #define IS_UNICODE_DBCS(u) ((u) >= 0x2e80 && (u) <= 0x9fff) bool codepage_matches_alias(const char *alias, const char *canon); ucs4_t ebcdic_to_unicode(ebc_t e, unsigned char cs, unsigned flags); ucs4_t ebcdic_base_to_unicode(ebc_t e, unsigned flags); ebc_t unicode_to_ebcdic(ucs4_t u); ebc_t unicode_to_ebcdic_ge(ucs4_t u, bool *ge, bool prefer_apl); bool set_uni(const char *cpname, int local_cp, const char **host_codepage, const char **cgcsgid, const char **realnamep, bool *is_dbcs); ucs4_t linedraw_to_unicode(ucs4_t e, bool ascii_art); int apl_to_unicode(ebc_t e, unsigned flags); size_t ebcdic_to_multibyte(ebc_t ebc, char mb[], size_t mb_len); size_t ebcdic_to_multibyte_f(ebc_t ebc, char mb[], size_t mb_len, bool force_utf8); size_t ebcdic_to_multibyte_fx(ebc_t ebc, unsigned char cs, char mb[], size_t mb_len, unsigned flags, ucs4_t *ucp, bool force_utf8); size_t ebcdic_to_multibyte_string(unsigned char *ebc, size_t ebc_len, char mb[], size_t mb_len); size_t ebcdic_to_multibyte_x(ebc_t ebc, unsigned char cs, char mb[], size_t mb_len, unsigned flags, ucs4_t *uc); int mb_max_len(int len); enum me_fail { ME_NONE, /* no error */ ME_INVALID, /* invalid sequence */ ME_SHORT /* incomplete sequence */ }; ucs4_t multibyte_to_unicode(const char *mb, size_t mb_len, int *consumedp, enum me_fail *errorp); ucs4_t multibyte_to_unicode_f(const char *mb, size_t mb_len, int *consumedp, enum me_fail *errorp, bool force_utf8); int multibyte_to_unicode_string(const char *mb, size_t mb_len, ucs4_t *ucs4, size_t u_len, bool force_utf8); ebc_t multibyte_to_ebcdic(const char *mb, size_t mb_len, int *consumedp, enum me_fail *errorp); int multibyte_to_ebcdic_string(char *mb, size_t mb_len, unsigned char *ebc, size_t ebc_len, enum me_fail *errorp); int unicode_to_multibyte(ucs4_t ucs4, char *mb, size_t mb_len); int unicode_to_multibyte_f(ucs4_t ucs4, char *mb, size_t mb_len, bool force_utf8); bool using_iconv(void); const char *canonical_codepage(const char *alias); typedef struct { const char *name; bool dbcs; int num_aliases; const char **aliases; } cpname_t; cpname_t *get_cpnames(void); void free_cpnames(cpname_t *cpnames); bool is_all_digits(const char *s); suite3270-4.1/include/utf8.h000066400000000000000000000034701413735575200155250ustar00rootroot00000000000000/* * Copyright (c) 2007-2009, 2013, 2015 Paul Mattes. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the names of Paul Mattes nor the names of his contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO * EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * utf8.h * UTF-8 conversion functions. */ extern char *locale_codeset; extern bool is_utf8; void set_codeset(char *codeset_name, bool force_utf8); int unicode_to_utf8(ucs4_t ucs4, char *utf8); int utf8_to_unicode(const char *utf8, int len, ucs4_t *ucs4); const char *get_codeset(void); suite3270-4.1/include/utils.h000066400000000000000000000116621413735575200160010ustar00rootroot00000000000000/* * Copyright (c) 1995-2009, 2013-2021 Paul Mattes. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the names of Paul Mattes nor the names of his contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO * EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * utils.h * Global declarations for util.c. */ void add_resource(const char *name, const char *value); char *ctl_see(int c); char *do_subst(const char *s, unsigned flags); #define DS_NONE 0x0 #define DS_VARS 0x1 #define DS_TILDE 0x2 #define DS_UNIQUE 0x4 const char *get_message(const char *key); char *get_fresource(const char *fmt, ...) printflike(1, 2); char *get_resource(const char *name); int get_resource_int(const char *name); bool get_resource_bool(const char *name); char *get_underlying_resource(const char *name); char *qscatv(const char *s); char *scatv(const char *s); int split_dbcs_resource(const char *value, char sep, char **part1, char **part2); int split_dresource(char **st, char **left, char **right); int split_lresource(char **st, char **value); char *strip_whitespace(const char *s); char *xs_vbuffer(const char *fmt, va_list); char *xs_buffer(const char *fmt, ...) printflike(1, 2); void xs_error(const char *fmt, ...) printflike(1, 2); void xs_warning(const char *fmt, ...) printflike(1, 2); typedef void (*iofn_t)(iosrc_t, ioid_t id); typedef void (*tofn_t)(ioid_t id); typedef void (*childfn_t)(ioid_t id, int status); ioid_t AddInput(iosrc_t fd, iofn_t fn); ioid_t AddExcept(iosrc_t fd, iofn_t fn); ioid_t AddOutput(iosrc_t fd, iofn_t fn); #if !defined(_WIN32) /*[*/ ioid_t AddChild(pid_t pid, childfn_t fn); #endif /*]*/ void RemoveInput(ioid_t); ioid_t AddTimeOut(unsigned long msec, tofn_t); void RemoveTimeOut(ioid_t id); ks_t string_to_key(char *s); char *key_to_string(ks_t k); bool read_resource_file(const char *filename, bool fatal); bool split_hier(char *label, char **base, char ***parents); const char *build_options(void); void dump_version(void); const char *display_scale(double d); void array_add(const char ***s, int ix, const char *v); /* Doubly-linked lists. */ bool llist_isempty(llist_t *l); void llist_init(llist_t *l); void llist_insert_before(llist_t *element, llist_t *before); void llist_unlink(llist_t *element); #define LLIST_INIT(head) { &head, &head } #define FOREACH_LLIST(head, elt, type) { \ llist_t *_elt; \ llist_t *_next; \ for (_elt = (head)->next; _elt != (head); _elt = _next) { \ _next = _elt->next; \ (elt) = (type)(void *)_elt; #define FOREACH_LLIST_END(head, elt, type) \ } \ } #define LLIST_APPEND(elt, head) llist_insert_before(elt, &head) #define LLIST_PREPEND(elt, head) llist_insert_before(elt, head.next) /* State changes. */ enum st { ST_NEGOTIATING, /* protocol negotiation start */ ST_CONNECT, /* connection exists or is in progress */ ST_3270_MODE, /* into 3270 or NVT mode */ ST_LINE_MODE, /* in or out of NVT line mode */ ST_REMODEL, /* model changed */ ST_PRINTER, /* printer session state changed */ ST_EXITING, /* emulator exiting */ ST_CODEPAGE, /* code page changing */ ST_SELECTING, /* screen selection changing */ ST_SECURE, /* secure mode changing */ ST_KBD_DISABLE, /* keyboard disable changing */ ST_TERMINAL_NAME, /* terminal name changing */ N_ST }; #define ORDER_DONTCARE 0xfffe #define ORDER_LAST 0xffff typedef void schange_callback_t(bool); void register_schange_ordered(enum st tx, schange_callback_t *func, unsigned short order); void register_schange(enum st tx, schange_callback_t *func); void st_changed(enum st tx, bool mode); #if !defined(PR3287) /*[*/ void change_cstate(enum cstate cstate, const char *why); #endif /*]*/ char *clean_termname(const char *tn); void start_help(void); suite3270-4.1/include/varbuf.h000066400000000000000000000041411413735575200161200ustar00rootroot00000000000000/* * Copyright (c) 2014-2015 Paul Mattes. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the names of Paul Mattes nor the names of his contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO * EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * varbuf.h * Header file for x3270 variable-length buffer library. */ typedef struct { char *buf; size_t len; size_t alloc_len; } varbuf_t; void vb_init(varbuf_t *r); void vb_append(varbuf_t *r, const char *buf, size_t len); void vb_appends(varbuf_t *r, const char *buf); void vb_vappendf(varbuf_t *r, const char *format, va_list ap); void vb_appendf(varbuf_t *r, const char *format, ...) printflike(2, 3); const char *vb_buf(const varbuf_t *r); size_t vb_len(const varbuf_t *r); void vb_reset(varbuf_t *r); char *vb_consume(varbuf_t *r); void vb_free(varbuf_t *r); suite3270-4.1/include/vstatus.h000066400000000000000000000043471413735575200163540ustar00rootroot00000000000000/* * Copyright (c) 1995-2009, 2015, 2018, 2020-2021 Paul Mattes. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of Paul Mattes nor his contributors may be used * to endorse or promote products derived from this software without * specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. */ /* * vstatus.h * Global declarations for vstatus.c. */ void vstatus_compose(bool on, ucs4_t ucs4, enum keytype keytype); void vstatus_ctlr_done(void); void vstatus_insert_mode(bool on); void vstatus_keyboard_disable_flash(void); void vstatus_line(struct ea *ea); void vstatus_lu(const char *); void vstatus_minus(void); void vstatus_oerr(int error_type); void vstatus_register(void); void vstatus_reset(void); void vstatus_reverse_mode(bool on); void vstatus_screentrace(int n); void vstatus_script(bool on); void vstatus_scrolled(int n); void vstatus_syswait(void); void vstatus_timing(struct timeval *t0, struct timeval *t1); void vstatus_twait(void); void vstatus_typeahead(bool on); void vstatus_untiming(void); suite3270-4.1/include/w3misc.h000066400000000000000000000037061413735575200160460ustar00rootroot00000000000000/* * Copyright (c) 2007-2009, 2013, 2015, 2021 Paul Mattes. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the names of Paul Mattes nor the names of his contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO * EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * w3misc.h * Miscellaneous Win32 functions. */ /* * Note: This header file declares only the x3270-specific functions in * w3misc.c. The libc replacement functions defined in w3misc.c are declared * in wincmn.h. */ #if defined(_WIN32) /*[*/ void set_local_cp(int cp); int sockstart(void); const char *win32_strerror(int e); void win32_perror(const char *fmt, ...); const char *to_localcp(const char *s); #endif /*]*/ suite3270-4.1/include/wincmn.h000066400000000000000000000102621413735575200161270ustar00rootroot00000000000000/* * Copyright (c) 2007-2015 Paul Mattes. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the names of Paul Mattes nor the names of his contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO * EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * wincmn.h * Common Windows definitions. */ #if defined(_WIN32) /*[*/ /* * Pull in the Windows header files needed for the function names redefined * below, and containing the typedefs for the substitute functions defined * below. */ # define WIN32_LEAN_AND_MEAN 1 /* Skip things we don't need */ # include /* Has to come before windows.h */ # include /* Common definitions for Windows */ # include # include # include # include # include # include # include /* * Windows has inet_ntop() only in Vista and up. We define our own in * w3misc.c. */ # define inet_ntop my_inet_ntop const char *inet_ntop(int af, const void *src, char *dst, socklen_t cnt); /* * MinGW has no IsWindowsVersionOrGreater(). */ # if !defined(__GNUC__) /*[*/ # include # else /*][*/ # define IsWindowsVersionOrGreater my_IsWindowsVersionOrGreater extern BOOL IsWindowsVersionOrGreater(WORD major_version, WORD minor_version, WORD service_pack_major); # endif /*]*/ /* * Windows has no in_addr_t. */ typedef unsigned long in_addr_t; /* * Prior to VS2013, Windows did not define va_copy(). */ # if !defined(va_copy) /*[*/ # define va_copy(to, from) (to) = (from) # endif /*]*/ /* * Windows snprintf/vsnprintf do not guarantee NUL termination, so we have our * own. */ int safe_vsnprintf(char *str, size_t size, const char *fmt, va_list ap); int safe_snprintf(char *str, size_t size, const char *fmt, ...); # if !defined(IS_SNPRINTF_C) /*[*/ # define vsnprintf safe_vsnprintf # define snprintf safe_snprintf # endif /*]*/ /* * We always use _vscprintf instead of vscprintf. */ # define vscprintf _vscprintf # if defined(_MSC_VER) /*[*/ /* MSVC does not define the constants for access(). */ # define R_OK 4 /* MSVC says these POSIX names are deprecated. */ # define access _access # define close _close # define dup _dup # define fdopen _fdopen # define fileno _fileno # define getcwd _getcwd # define getpid _getpid # define open _open # define putenv _putenv # define read _read # define strdup _strdup # define unlink _unlink # define write _write /* Non-standard string function names. */ # define strcasecmp _stricmp # define strncasecmp _strnicmp /* MSVC has no POSIX ssize_t. */ typedef SSIZE_T ssize_t; /* MSVC has no gettimeofday(). We define it in w3misc.c. */ int gettimeofday(struct timeval *, void *); /* MSVC has no getopt(). We define it in w3misc.c. */ int getopt(int argc, char * const argv[], const char *optstring); extern char *optarg; extern int optind, opterr, optopt; # endif /*]*/ #endif /*]*/ suite3270-4.1/include/windirs.h000066400000000000000000000036351413735575200163210ustar00rootroot00000000000000/* * Copyright (c) 2006-2009, 2016 Paul Mattes. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the names of Paul Mattes nor the names of his contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO * EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * windirs.h * Global declarations for windirs.c. */ #if !defined(_WIN32) /*[*/ #error For Windows only #endif /*]*/ #define GD_INSTALLED 0x1 #define GD_CATF 0x2 bool get_dirs(char *appname, char **instdir, char **desktop, char **appdata, char **common_desktop, char **common_appdata, char **documents, char **common_documnts, char **docs3270, char **common_docs3270, unsigned *flags); suite3270-4.1/include/winprint.h000066400000000000000000000031671413735575200165140ustar00rootroot00000000000000/* * Copyright (c) 2013-2015, 2020 Paul Mattes. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the names of Paul Mattes nor the names of his contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO * EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * winprint.h * Global declaratoins for winprint.c. */ int win_mkstemp(char **path, ptype_t ptype); suite3270-4.1/include/winvers.h000066400000000000000000000032661413735575200163370ustar00rootroot00000000000000/* * Copyright (c) 2007-2009, 2014-2016 Paul Mattes. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the names of Paul Mattes nor the names of his contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO * EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * winvers.h * Declarations for winvers.c. */ #if !defined(_WIN32) /*[*/ #error For Windows only #endif /*[*/ int get_version_info(void); bool is_wine(void); suite3270-4.1/include/xio.h000066400000000000000000000033531413735575200154360ustar00rootroot00000000000000/* * Copyright (c) 1995-2009, 2014-2015 Paul Mattes. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the names of Paul Mattes nor the names of his contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO * EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * xio.h * Global declarations for xio.c. */ void x3270_exit(int n); void x_add_input(iosrc_t iosrc); void x_except_off(void); void x_except_on(iosrc_t iosrc); void xio_register(void); void x_remove_input(void); suite3270-4.1/include/xpopen.h000066400000000000000000000033511413735575200161460ustar00rootroot00000000000000/* * Copyright (c) 2018 Paul Mattes. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the names of Paul Mattes nor the names of his contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO * EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * xpopen.h * popen that exposes the child process ID */ #if !defined(_WIN32) /*[*/ FILE *xpopen(const char *command, const char *mode, pid_t *pidp); int xpclose(FILE *fp, unsigned flags); # define XPC_NOWAIT 0x1 #endif /*]*/ suite3270-4.1/include/xscroll.h000066400000000000000000000033271413735575200163260ustar00rootroot00000000000000/* * Copyright (c) 1995-2009, 2013-2017 Paul Mattes. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of Paul Mattes nor his contributors may be used * to endorse or promote products derived from this software without * specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. */ /* * xscrollc.h * Global declarations for x3270 scroll.c. */ void jump_proc(float top); void rethumb(void); void scroll_buf_init(void); void scroll_proc(int n, int total); void scroll_register(void); suite3270-4.1/install-sh000077700000000000000000000000001413735575200202642Common/install-shustar00rootroot00000000000000suite3270-4.1/lib/000077500000000000000000000000001413735575200136055ustar00rootroot00000000000000suite3270-4.1/lib/3270/000077500000000000000000000000001413735575200142005ustar00rootroot00000000000000suite3270-4.1/lib/3270/.gitignore000066400000000000000000000000151413735575200161640ustar00rootroot00000000000000Makefile.obj suite3270-4.1/lib/3270/Makefile.aux000066400000000000000000000031311413735575200164320ustar00rootroot00000000000000# # Copyright (c) 1995-2011, 2013-2015 Paul Mattes. # All rights reserved. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions are met: # * Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # * Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in the # documentation and/or other materials provided with the distribution. # * Neither the names of Paul Mattes nor the names of his contributors # may be used to endorse or promote products derived from this software # without specific prior written permission. # # THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS OR IMPLIED # WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF # MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO # EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, # SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, # PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; # OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, # WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR # OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF # ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. # # Auxiliary makefile for 3270 library all: @echo "Must pick a specific make target." src.tgz: suite3270-4.1/lib/3270/Makefile.in000066400000000000000000000040611413735575200162460ustar00rootroot00000000000000# Copyright (c) 2016 Paul Mattes. # All rights reserved. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # * Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # * Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in the # documentation and/or other materials provided with the distribution. # * Neither the name of Paul Mattes nor his contributors may be used # to endorse or promote products derived from this software without # specific prior written permission. # # THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS OR # IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES # OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN # NO EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, # SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED # TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR # PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF # LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING # NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS # SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. # VPATH-based Makefile for lib3270 objdir = ../../obj/@host@/lib3270 top = ../../.. this = $(top)/lib/3270 export VPATH = $(this):$(top)/Common:$(top)/Common/Nodisplay export TOP = $(top) export THIS = $(this) MAKEINC = -I$(top)/Common -I$(this) all: $(objdir) cd $(objdir) && $(MAKE) $(MAKEINC) -f $(this)/Makefile.obj $@ clean: $(objdir) cd $(objdir) && $(MAKE) $(MAKEINC) -f $(this)/Makefile.obj $@ clobber: $(objdir) cd $(objdir) && $(MAKE) $(MAKEINC) -f $(this)/Makefile.obj $@ depend: $(objdir) cd $(objdir) && $(MAKE) $(MAKEINC) -f $(this)/Makefile.obj $@ $(objdir): mkdir -p $(objdir) suite3270-4.1/lib/3270/Makefile.obj.in000066400000000000000000000044471413735575200170270ustar00rootroot00000000000000# Copyright (c) 1999-2009, 2013-2017, 2020-2021 Paul Mattes. # All rights reserved. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions are met: # * Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # * Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in the # documentation and/or other materials provided with the distribution. # * Neither the names of Paul Mattes nor the names of his contributors # may be used to endorse or promote products derived from this software # without specific prior written permission. # # THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS OR IMPLIED # WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF # MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO # EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, # SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, # PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; # OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, # WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR # OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF # ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. # # Makefile for 3270 emulation library LIB3270 = lib3270.a RM = rm -f CC = @CC@ AR = @AR@ RANLIB = @RANLIB@ all: $(LIB3270) include lib3270_files.mk include lib3270u_files.mk OBJS = $(LIB3270_OBJECTS) $(LIB3270U_OBJECTS) LIBDIR = @libdir@ prefix = @prefix@ exec_prefix = @exec_prefix@ sysconfdir = @sysconfdir@ datarootdir = @datarootdir@ LIBX3270DIR = @LIBX3270DIR@ CCOPTIONS = @CCOPTIONS@ XCPPFLAGS = -I$(THIS) -I$(THIS)/../include/unix -I$(THIS)/../include -I$(TOP)/include -DLIBX3270DIR=\"$(LIBX3270DIR)\" @CPPFLAGS@ CFLAGS = $(CCOPTIONS) $(CDEBUGFLAGS) $(XCPPFLAGS) @CFLAGS@ $(LIB3270): $(OBJS) $(AR) cr $@ $(OBJS) $(RANLIB) $@ favicon.o: favicon.c favicon.c: favicon.ico mkicon ./mkicon $< >$@ clean: $(RM) *.o favicon.c mkicon clobber: clean $(RM) $(LIB3270) *.d -include $(OBJS:.o=.d) suite3270-4.1/lib/3270/lib3270u_files.mk000066400000000000000000000001341413735575200171600ustar00rootroot00000000000000# Unix-specific object files for lib3270. LIB3270U_OBJECTS = find_console.o print_command.o suite3270-4.1/lib/3270i/000077500000000000000000000000001413735575200143515ustar00rootroot00000000000000suite3270-4.1/lib/3270i/.gitignore000066400000000000000000000000151413735575200163350ustar00rootroot00000000000000Makefile.obj suite3270-4.1/lib/3270i/Makefile.aux000066400000000000000000000031451413735575200166100ustar00rootroot00000000000000# # Copyright (c) 1995-2011, 2013-2015 Paul Mattes. # All rights reserved. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions are met: # * Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # * Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in the # documentation and/or other materials provided with the distribution. # * Neither the names of Paul Mattes nor the names of his contributors # may be used to endorse or promote products derived from this software # without specific prior written permission. # # THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS OR IMPLIED # WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF # MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO # EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, # SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, # PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; # OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, # WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR # OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF # ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. # # Auxiliary makefile for 3270 interactive library all: @echo "Must pick a specific make target." src.tgz: suite3270-4.1/lib/3270i/Makefile.in000066400000000000000000000040341413735575200164170ustar00rootroot00000000000000# Copyright (c) 2016 Paul Mattes. # All rights reserved. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # * Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # * Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in the # documentation and/or other materials provided with the distribution. # * Neither the name of Paul Mattes nor his contributors may be used # to endorse or promote products derived from this software without # specific prior written permission. # # THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS OR # IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES # OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN # NO EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, # SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED # TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR # PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF # LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING # NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS # SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. # VPATH-based Makefile for lib3270i objdir = ../../obj/@host@/lib3270i top = ../../.. this = $(top)/lib/3270i export VPATH = $(this):$(top)/Common export TOP = $(top) export THIS = $(this) MAKEINC = -I$(top)/Common -I$(this) all: $(objdir) cd $(objdir) && $(MAKE) $(MAKEINC) -f $(this)/Makefile.obj $@ clean: $(objdir) cd $(objdir) && $(MAKE) $(MAKEINC) -f $(this)/Makefile.obj $@ clobber: $(objdir) cd $(objdir) && $(MAKE) $(MAKEINC) -f $(this)/Makefile.obj $@ depend: $(objdir) cd $(objdir) && $(MAKE) $(MAKEINC) -f $(this)/Makefile.obj $@ $(objdir): mkdir -p $(objdir) suite3270-4.1/lib/3270i/Makefile.obj.in000066400000000000000000000042731413735575200171750ustar00rootroot00000000000000# Copyright (c) 1999-2009, 2013-2017, 2020-2021 Paul Mattes. # All rights reserved. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions are met: # * Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # * Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in the # documentation and/or other materials provided with the distribution. # * Neither the names of Paul Mattes nor the names of his contributors # may be used to endorse or promote products derived from this software # without specific prior written permission. # # THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS OR IMPLIED # WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF # MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO # EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, # SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, # PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; # OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, # WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR # OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF # ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. # # Makefile for 3270 interactive emulation common library LIB3270I = lib3270i.a RM = rm -f CC = @CC@ AR = @AR@ RANLIB = @RANLIB@ all: $(LIB3270I) include lib3270i_files.mk OBJS = $(LIB3270I_OBJECTS) LIBDIR = @libdir@ prefix = @prefix@ exec_prefix = @exec_prefix@ sysconfdir = @sysconfdir@ datarootdir = @datrootdir@ LIBX3270DIR = @LIBX3270DIR@ CCOPTIONS = @CCOPTIONS@ XCPPFLAGS = -I$(THIS) -I$(THIS)/../include/unix -I$(THIS)/../include -I$(TOP)/include -DLIBX3270DIR=\"$(LIBX3270DIR)\" @CPPFLAGS@ CFLAGS = $(CCOPTIONS) $(CDEBUGFLAGS) $(XCPPFLAGS) @CFLAGS@ $(LIB3270I): $(OBJS) $(AR) cr $@ $(OBJS) $(RANLIB) $@ clean: $(RM) *.o clobber: clean $(RM) $(LIB3270I) *.d -include $(OBJS:.o=.d) suite3270-4.1/lib/3270stubs/000077500000000000000000000000001413735575200152615ustar00rootroot00000000000000suite3270-4.1/lib/3270stubs/.gitignore000066400000000000000000000000151413735575200172450ustar00rootroot00000000000000Makefile.obj suite3270-4.1/lib/3270stubs/Makefile.aux000066400000000000000000000031321413735575200175140ustar00rootroot00000000000000# # Copyright (c) 1995-2011, 2013-2015 Paul Mattes. # All rights reserved. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions are met: # * Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # * Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in the # documentation and/or other materials provided with the distribution. # * Neither the names of Paul Mattes nor the names of his contributors # may be used to endorse or promote products derived from this software # without specific prior written permission. # # THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS OR IMPLIED # WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF # MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO # EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, # SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, # PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; # OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, # WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR # OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF # ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. # # Auxiliary makefile for stubs library all: @echo "Must pick a specific make target." src.tgz: suite3270-4.1/lib/3270stubs/Makefile.in000066400000000000000000000040501413735575200173250ustar00rootroot00000000000000# Copyright (c) 2016 Paul Mattes. # All rights reserved. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # * Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # * Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in the # documentation and/or other materials provided with the distribution. # * Neither the name of Paul Mattes nor his contributors may be used # to endorse or promote products derived from this software without # specific prior written permission. # # THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS OR # IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES # OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN # NO EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, # SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED # TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR # PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF # LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING # NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS # SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. # VPATH-based Makefile for lib3270stubs objdir = ../../obj/@host@/lib3270stubs top = ../../.. this = $(top)/lib/3270stubs export VPATH = $(this):$(top)/Common export TOP = $(top) export THIS = $(this) MAKEINC = -I$(top)/Common -I$(this) all: $(objdir) cd $(objdir) && $(MAKE) $(MAKEINC) -f $(this)/Makefile.obj $@ clean: $(objdir) cd $(objdir) && $(MAKE) $(MAKEINC) -f $(this)/Makefile.obj $@ clobber: $(objdir) cd $(objdir) && $(MAKE) $(MAKEINC) -f $(this)/Makefile.obj $@ depend: $(objdir) cd $(objdir) && $(MAKE) $(MAKEINC) -f $(this)/Makefile.obj $@ $(objdir): mkdir -p $(objdir) suite3270-4.1/lib/3270stubs/Makefile.obj.in000066400000000000000000000043431413735575200201030ustar00rootroot00000000000000# Copyright (c) 1999-2009, 2013-2017, 2020-2021 Paul Mattes. # All rights reserved. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions are met: # * Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # * Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in the # documentation and/or other materials provided with the distribution. # * Neither the names of Paul Mattes nor the names of his contributors # may be used to endorse or promote products derived from this software # without specific prior written permission. # # THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS OR IMPLIED # WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF # MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO # EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, # SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, # PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; # OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, # WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR # OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF # ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. # # Makefile for stubs library LIBSTUBS = lib3270stubs.a RM = rm -f CC = @CC@ AR = @AR@ RANLIB = @RANLIB@ all: $(LIBSTUBS) include lib3270stubs_files.mk include lib3270stubsu_files.mk OBJS = $(LIB3270STUBS_OBJECTS) $(LIB3270STUBSU_OBJECTS) LIBDIR = @libdir@ prefix = @prefix@ exec_prefix = @exec_prefix@ sysconfdir = @sysconfdir@ datarootdir = @datarootdir@ LIBX3270DIR = @LIBX3270DIR@ CCOPTIONS = @CCOPTIONS@ XCPPFLAGS = -I$(THIS) -I$(THIS)/../include/unix -I$(THIS)/../include -I$(TOP)/include -DLIBX3270DIR=\"$(LIBX3270DIR)\" @CPPFLAGS@ CFLAGS = $(CCOPTIONS) $(CDEBUGFLAGS) $(XCPPFLAGS) @CFLAGS@ $(LIBSTUBS): $(OBJS) $(AR) cr $@ $(OBJS) $(RANLIB) $@ clean: $(RM) *.o clobber: clean $(RM) $(LIBSTUBS) *.d -include $(OBJS:.o=.d) suite3270-4.1/lib/3270stubs/child_stubs.c000066400000000000000000000032521413735575200177320ustar00rootroot00000000000000/* * Copyright (c) 2015 Paul Mattes. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the names of Paul Mattes nor the names of his contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO * EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * child_stubs.c * Stubs for child.c. */ #include "globals.h" #include "child.h" int fork_child(void) { return fork(); } void child_ignore_output(void) { } suite3270-4.1/lib/3270stubs/conf.h.in000066400000000000000000000040071413735575200167650ustar00rootroot00000000000000/* * Copyright (c) 2000-2015, 2017, 2019 Paul Mattes. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the names of Paul Mattes nor the names of his contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO * EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * conf.h * System-specific #defines for libraries and library functions. * Automatically generated from conf.h.in by configure. */ /* Libraries. */ #undef HAVE_LIBSSL /* Header files. */ #undef HAVE_SYS_SELECT_H #undef HAVE_PTY_H #undef HAVE_LIBUTIL_H #undef HAVE_UTIL_H #undef HAVE_GETOPT_H /* Uncommon functions. */ #undef HAVE_VASPRINTF #undef HAVE_FSEEKO #undef HAVE_FORKPTY /* Configuration options. */ /* Optional parts. */ #undef X3270_LOCAL_PROCESS #undef X3270_IPV6 suite3270-4.1/lib/3270stubs/lib3270stubsu_files.mk000066400000000000000000000001211413735575200213160ustar00rootroot00000000000000# Unix-only object files for lib3270stubs. LIB3270STUBSU_OBJECTS = child_stubs.o suite3270-4.1/lib/32xx/000077500000000000000000000000001413735575200144115ustar00rootroot00000000000000suite3270-4.1/lib/32xx/.gitignore000066400000000000000000000000151413735575200163750ustar00rootroot00000000000000Makefile.obj suite3270-4.1/lib/32xx/32xx-deplibs.mk.in000066400000000000000000000001751413735575200175760ustar00rootroot00000000000000# lib32xx depends on various libraries found by autoconf. LIB32XX_DEPLIBS = @TLS_LDFLAGS@ @TLS_LIBS@ @ICONV_LIBS@ @GAI_LIBS@ suite3270-4.1/lib/32xx/Makefile.aux000066400000000000000000000031451413735575200166500ustar00rootroot00000000000000# # Copyright (c) 1995-2011, 2013-2015 Paul Mattes. # All rights reserved. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions are met: # * Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # * Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in the # documentation and/or other materials provided with the distribution. # * Neither the names of Paul Mattes nor the names of his contributors # may be used to endorse or promote products derived from this software # without specific prior written permission. # # THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS OR IMPLIED # WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF # MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO # EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, # SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, # PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; # OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, # WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR # OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF # ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. # # Auxiliary makefile for 3270/3287 common library all: @echo "Must pick a specific make target." src.tgz: suite3270-4.1/lib/32xx/Makefile.in000066400000000000000000000040311413735575200164540ustar00rootroot00000000000000# Copyright (c) 2016 Paul Mattes. # All rights reserved. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # * Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # * Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in the # documentation and/or other materials provided with the distribution. # * Neither the name of Paul Mattes nor his contributors may be used # to endorse or promote products derived from this software without # specific prior written permission. # # THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS OR # IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES # OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN # NO EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, # SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED # TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR # PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF # LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING # NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS # SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. # VPATH-based Makefile for lib32xx objdir = ../../obj/@host@/lib32xx top = ../../.. this = $(top)/lib/32xx export VPATH = $(this):$(top)/Common export TOP = $(top) export THIS = $(this) MAKEINC = -I$(top)/Common -I$(this) all: $(objdir) cd $(objdir) && $(MAKE) $(MAKEINC) -f $(this)/Makefile.obj $@ clean: $(objdir) cd $(objdir) && $(MAKE) $(MAKEINC) -f $(this)/Makefile.obj $@ clobber: $(objdir) cd $(objdir) && $(MAKE) $(MAKEINC) -f $(this)/Makefile.obj $@ depend: $(objdir) cd $(objdir) && $(MAKE) $(MAKEINC) -f $(this)/Makefile.obj $@ $(objdir): mkdir -p $(objdir) suite3270-4.1/lib/32xx/Makefile.obj.in000066400000000000000000000043411413735575200172310ustar00rootroot00000000000000# Copyright (c) 1999-2009, 2013-2017, 2020-2021 Paul Mattes. # All rights reserved. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions are met: # * Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # * Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in the # documentation and/or other materials provided with the distribution. # * Neither the names of Paul Mattes nor the names of his contributors # may be used to endorse or promote products derived from this software # without specific prior written permission. # # THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS OR IMPLIED # WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF # MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO # EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, # SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, # PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; # OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, # WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR # OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF # ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. # # Makefile for 3270/3287 emulation common library LIB32XX = lib32xx.a RM = rm -f CC = @CC@ AR = @AR@ RANLIB = @RANLIB@ all: $(LIB32XX) include lib32xx_files.mk lib32xxu_files.mk OBJS = $(LIB32XX_OBJECTS) $(LIB32XXU_OBJECTS) @TLS_MODULES@ LIBDIR = @libdir@ prefix = @prefix@ exec_prefix = @exec_prefix@ sysconfdir = @sysconfdir@ datarootdir = @datarootdir@ LIBX3270DIR = @LIBX3270DIR@ CCOPTIONS = @CCOPTIONS@ XCPPFLAGS = -I$(THIS) -I$(THIS)/../include/unix -I$(THIS)/../include -I$(TOP)/include -DLIBX3270DIR=\"$(LIBX3270DIR)\" @CPPFLAGS@ CFLAGS = $(CCOPTIONS) $(CDEBUGFLAGS) $(XCPPFLAGS) @CFLAGS@ $(LIB32XX): $(OBJS) $(AR) cr $@ $(OBJS) $(RANLIB) $@ clean: $(RM) *.o clobber: clean $(RM) $(LIB32XX) *.d -include $(OBJS:.o=.d) suite3270-4.1/lib/32xx/lib32xxu_files.mk000066400000000000000000000001061413735575200176010ustar00rootroot00000000000000# Unix-specific object files for lib32xx. LIB32XXU_OBJECTS = xpopen.o suite3270-4.1/lib/Makefile.aux000066400000000000000000000036061413735575200160460ustar00rootroot00000000000000# Copyright (c) 2015 Paul Mattes. # All rights reserved. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # * Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # * Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in the # documentation and/or other materials provided with the distribution. # * Neither the name of Paul Mattes nor his contributors may be used # to endorse or promote products derived from this software without # specific prior written permission. # # THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS OR # IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES # OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN # NO EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, # SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED # TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR # PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF # LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING # NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS # SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. # # Auxiliary Makefile for lib. prepare: configure configure: configure.in autoconf src.tgz: prepare cd 3270 && $(MAKE) -f Makefile.aux $@ cd 3270i && $(MAKE) -f Makefile.aux $@ cd 32xx && $(MAKE) -f Makefile.aux $@ cd 3270stubs && $(MAKE) -f Makefile.aux $@ cd w3270 && $(MAKE) -f Makefile.aux $@ cd w3270i && $(MAKE) -f Makefile.aux $@ cd w32xx && $(MAKE) -f Makefile.aux $@ cd w3270stubs && $(MAKE) -f Makefile.aux $@ suite3270-4.1/lib/configure000077500000000000000000005144551413735575200155320ustar00rootroot00000000000000#! /bin/sh # Guess values for system-dependent variables and create Makefiles. # Generated by GNU Autoconf 2.69 for suite3270-lib 4.0. # # # Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc. # # # This configure script is free software; the Free Software Foundation # gives unlimited permission to copy, distribute and modify it. ## -------------------- ## ## M4sh Initialization. ## ## -------------------- ## # Be more Bourne compatible DUALCASE=1; export DUALCASE # for MKS sh if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST else case `(set -o) 2>/dev/null` in #( *posix*) : set -o posix ;; #( *) : ;; esac fi as_nl=' ' export as_nl # Printing a long string crashes Solaris 7 /usr/bin/printf. as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo # Prefer a ksh shell builtin over an external printf program on Solaris, # but without wasting forks for bash or zsh. if test -z "$BASH_VERSION$ZSH_VERSION" \ && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then as_echo='print -r --' as_echo_n='print -rn --' elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then as_echo='printf %s\n' as_echo_n='printf %s' else if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' as_echo_n='/usr/ucb/echo -n' else as_echo_body='eval expr "X$1" : "X\\(.*\\)"' as_echo_n_body='eval arg=$1; case $arg in #( *"$as_nl"*) expr "X$arg" : "X\\(.*\\)$as_nl"; arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; esac; expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" ' export as_echo_n_body as_echo_n='sh -c $as_echo_n_body as_echo' fi export as_echo_body as_echo='sh -c $as_echo_body as_echo' fi # The user is always right. if test "${PATH_SEPARATOR+set}" != set; then PATH_SEPARATOR=: (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || PATH_SEPARATOR=';' } fi # IFS # We need space, tab and new line, in precisely that order. Quoting is # there to prevent editors from complaining about space-tab. # (If _AS_PATH_WALK were called with IFS unset, it would disable word # splitting by setting IFS to empty value.) IFS=" "" $as_nl" # Find who we are. Look in the path if we contain no directory separator. as_myself= case $0 in #(( *[\\/]* ) as_myself=$0 ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break done IFS=$as_save_IFS ;; esac # We did not find ourselves, most probably we were run as `sh COMMAND' # in which case we are not to be found in the path. if test "x$as_myself" = x; then as_myself=$0 fi if test ! -f "$as_myself"; then $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 exit 1 fi # Unset variables that we do not need and which cause bugs (e.g. in # pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" # suppresses any "Segmentation fault" message there. '((' could # trigger a bug in pdksh 5.2.14. for as_var in BASH_ENV ENV MAIL MAILPATH do eval test x\${$as_var+set} = xset \ && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : done PS1='$ ' PS2='> ' PS4='+ ' # NLS nuisances. LC_ALL=C export LC_ALL LANGUAGE=C export LANGUAGE # CDPATH. (unset CDPATH) >/dev/null 2>&1 && unset CDPATH # Use a proper internal environment variable to ensure we don't fall # into an infinite loop, continuously re-executing ourselves. if test x"${_as_can_reexec}" != xno && test "x$CONFIG_SHELL" != x; then _as_can_reexec=no; export _as_can_reexec; # We cannot yet assume a decent shell, so we have to provide a # neutralization value for shells without unset; and this also # works around shells that cannot unset nonexistent variables. # Preserve -v and -x to the replacement shell. BASH_ENV=/dev/null ENV=/dev/null (unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV case $- in # (((( *v*x* | *x*v* ) as_opts=-vx ;; *v* ) as_opts=-v ;; *x* ) as_opts=-x ;; * ) as_opts= ;; esac exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} # Admittedly, this is quite paranoid, since all the known shells bail # out after a failed `exec'. $as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2 as_fn_exit 255 fi # We don't want this to propagate to other subprocesses. { _as_can_reexec=; unset _as_can_reexec;} if test "x$CONFIG_SHELL" = x; then as_bourne_compatible="if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on \${1+\"\$@\"}, which # is contrary to our usage. Disable this feature. alias -g '\${1+\"\$@\"}'='\"\$@\"' setopt NO_GLOB_SUBST else case \`(set -o) 2>/dev/null\` in #( *posix*) : set -o posix ;; #( *) : ;; esac fi " as_required="as_fn_return () { (exit \$1); } as_fn_success () { as_fn_return 0; } as_fn_failure () { as_fn_return 1; } as_fn_ret_success () { return 0; } as_fn_ret_failure () { return 1; } exitcode=0 as_fn_success || { exitcode=1; echo as_fn_success failed.; } as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; } as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; } as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; } if ( set x; as_fn_ret_success y && test x = \"\$1\" ); then : else exitcode=1; echo positional parameters were not saved. fi test x\$exitcode = x0 || exit 1 test -x / || exit 1" as_suggested=" as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" && test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1 test \$(( 1 + 1 )) = 2 || exit 1" if (eval "$as_required") 2>/dev/null; then : as_have_required=yes else as_have_required=no fi if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null; then : else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR as_found=false for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. as_found=: case $as_dir in #( /*) for as_base in sh bash ksh sh5; do # Try only shells that exist, to save several forks. as_shell=$as_dir/$as_base if { test -f "$as_shell" || test -f "$as_shell.exe"; } && { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$as_shell"; } 2>/dev/null; then : CONFIG_SHELL=$as_shell as_have_required=yes if { $as_echo "$as_bourne_compatible""$as_suggested" | as_run=a "$as_shell"; } 2>/dev/null; then : break 2 fi fi done;; esac as_found=false done $as_found || { if { test -f "$SHELL" || test -f "$SHELL.exe"; } && { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$SHELL"; } 2>/dev/null; then : CONFIG_SHELL=$SHELL as_have_required=yes fi; } IFS=$as_save_IFS if test "x$CONFIG_SHELL" != x; then : export CONFIG_SHELL # We cannot yet assume a decent shell, so we have to provide a # neutralization value for shells without unset; and this also # works around shells that cannot unset nonexistent variables. # Preserve -v and -x to the replacement shell. BASH_ENV=/dev/null ENV=/dev/null (unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV case $- in # (((( *v*x* | *x*v* ) as_opts=-vx ;; *v* ) as_opts=-v ;; *x* ) as_opts=-x ;; * ) as_opts= ;; esac exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} # Admittedly, this is quite paranoid, since all the known shells bail # out after a failed `exec'. $as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2 exit 255 fi if test x$as_have_required = xno; then : $as_echo "$0: This script requires a shell more modern than all" $as_echo "$0: the shells that I found on your system." if test x${ZSH_VERSION+set} = xset ; then $as_echo "$0: In particular, zsh $ZSH_VERSION has bugs and should" $as_echo "$0: be upgraded to zsh 4.3.4 or later." else $as_echo "$0: Please tell bug-autoconf@gnu.org about your system, $0: including any error possibly output before this $0: message. Then install a modern shell, or manually run $0: the script under such a shell if you do have one." fi exit 1 fi fi fi SHELL=${CONFIG_SHELL-/bin/sh} export SHELL # Unset more variables known to interfere with behavior of common tools. CLICOLOR_FORCE= GREP_OPTIONS= unset CLICOLOR_FORCE GREP_OPTIONS ## --------------------- ## ## M4sh Shell Functions. ## ## --------------------- ## # as_fn_unset VAR # --------------- # Portably unset VAR. as_fn_unset () { { eval $1=; unset $1;} } as_unset=as_fn_unset # as_fn_set_status STATUS # ----------------------- # Set $? to STATUS, without forking. as_fn_set_status () { return $1 } # as_fn_set_status # as_fn_exit STATUS # ----------------- # Exit the shell with STATUS, even in a "trap 0" or "set -e" context. as_fn_exit () { set +e as_fn_set_status $1 exit $1 } # as_fn_exit # as_fn_mkdir_p # ------------- # Create "$as_dir" as a directory, including parents if necessary. as_fn_mkdir_p () { case $as_dir in #( -*) as_dir=./$as_dir;; esac test -d "$as_dir" || eval $as_mkdir_p || { as_dirs= while :; do case $as_dir in #( *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( *) as_qdir=$as_dir;; esac as_dirs="'$as_qdir' $as_dirs" as_dir=`$as_dirname -- "$as_dir" || $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_dir" : 'X\(//\)[^/]' \| \ X"$as_dir" : 'X\(//\)$' \| \ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$as_dir" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` test -d "$as_dir" && break done test -z "$as_dirs" || eval "mkdir $as_dirs" } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" } # as_fn_mkdir_p # as_fn_executable_p FILE # ----------------------- # Test if FILE is an executable regular file. as_fn_executable_p () { test -f "$1" && test -x "$1" } # as_fn_executable_p # as_fn_append VAR VALUE # ---------------------- # Append the text in VALUE to the end of the definition contained in VAR. Take # advantage of any shell optimizations that allow amortized linear growth over # repeated appends, instead of the typical quadratic growth present in naive # implementations. if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : eval 'as_fn_append () { eval $1+=\$2 }' else as_fn_append () { eval $1=\$$1\$2 } fi # as_fn_append # as_fn_arith ARG... # ------------------ # Perform arithmetic evaluation on the ARGs, and store the result in the # global $as_val. Take advantage of shells that can avoid forks. The arguments # must be portable across $(()) and expr. if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : eval 'as_fn_arith () { as_val=$(( $* )) }' else as_fn_arith () { as_val=`expr "$@" || test $? -eq 1` } fi # as_fn_arith # as_fn_error STATUS ERROR [LINENO LOG_FD] # ---------------------------------------- # Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are # provided, also output the error to LOG_FD, referencing LINENO. Then exit the # script with STATUS, using 1 if that was 0. as_fn_error () { as_status=$1; test $as_status -eq 0 && as_status=1 if test "$4"; then as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 fi $as_echo "$as_me: error: $2" >&2 as_fn_exit $as_status } # as_fn_error if expr a : '\(a\)' >/dev/null 2>&1 && test "X`expr 00001 : '.*\(...\)'`" = X001; then as_expr=expr else as_expr=false fi if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then as_basename=basename else as_basename=false fi if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then as_dirname=dirname else as_dirname=false fi as_me=`$as_basename -- "$0" || $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ X"$0" : 'X\(//\)$' \| \ X"$0" : 'X\(/\)' \| . 2>/dev/null || $as_echo X/"$0" | sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/ q } /^X\/\(\/\/\)$/{ s//\1/ q } /^X\/\(\/\).*/{ s//\1/ q } s/.*/./; q'` # Avoid depending upon Character Ranges. as_cr_letters='abcdefghijklmnopqrstuvwxyz' as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' as_cr_Letters=$as_cr_letters$as_cr_LETTERS as_cr_digits='0123456789' as_cr_alnum=$as_cr_Letters$as_cr_digits as_lineno_1=$LINENO as_lineno_1a=$LINENO as_lineno_2=$LINENO as_lineno_2a=$LINENO eval 'test "x$as_lineno_1'$as_run'" != "x$as_lineno_2'$as_run'" && test "x`expr $as_lineno_1'$as_run' + 1`" = "x$as_lineno_2'$as_run'"' || { # Blame Lee E. McMahon (1931-1989) for sed's syntax. :-) sed -n ' p /[$]LINENO/= ' <$as_myself | sed ' s/[$]LINENO.*/&-/ t lineno b :lineno N :loop s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ t loop s/-\n.*// ' >$as_me.lineno && chmod +x "$as_me.lineno" || { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; } # If we had to re-execute with $CONFIG_SHELL, we're ensured to have # already done that, so ensure we don't try to do so again and fall # in an infinite loop. This has already happened in practice. _as_can_reexec=no; export _as_can_reexec # Don't try to exec as it changes $[0], causing all sort of problems # (the dirname of $[0] is not the place where we might find the # original and so on. Autoconf is especially sensitive to this). . "./$as_me.lineno" # Exit status is that of the last command. exit } ECHO_C= ECHO_N= ECHO_T= case `echo -n x` in #((((( -n*) case `echo 'xy\c'` in *c*) ECHO_T=' ';; # ECHO_T is single tab character. xy) ECHO_C='\c';; *) echo `echo ksh88 bug on AIX 6.1` > /dev/null ECHO_T=' ';; esac;; *) ECHO_N='-n';; esac rm -f conf$$ conf$$.exe conf$$.file if test -d conf$$.dir; then rm -f conf$$.dir/conf$$.file else rm -f conf$$.dir mkdir conf$$.dir 2>/dev/null fi if (echo >conf$$.file) 2>/dev/null; then if ln -s conf$$.file conf$$ 2>/dev/null; then as_ln_s='ln -s' # ... but there are two gotchas: # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. # In both cases, we have to default to `cp -pR'. ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || as_ln_s='cp -pR' elif ln conf$$.file conf$$ 2>/dev/null; then as_ln_s=ln else as_ln_s='cp -pR' fi else as_ln_s='cp -pR' fi rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file rmdir conf$$.dir 2>/dev/null if mkdir -p . 2>/dev/null; then as_mkdir_p='mkdir -p "$as_dir"' else test -d ./-p && rmdir ./-p as_mkdir_p=false fi as_test_x='test -x' as_executable_p=as_fn_executable_p # Sed expression to map a string onto a valid CPP name. as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" # Sed expression to map a string onto a valid variable name. as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" test -n "$DJDIR" || exec 7<&0 &1 # Name of the host. # hostname on some systems (SVR3.2, old GNU/Linux) returns a bogus exit status, # so uname gets run too. ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q` # # Initializations. # ac_default_prefix=/usr/local ac_clean_files= ac_config_libobj_dir=. LIBOBJS= cross_compiling=no subdirs= MFLAGS= MAKEFLAGS= # Identity of this package. PACKAGE_NAME='suite3270-lib' PACKAGE_TARNAME='suite3270-lib' PACKAGE_VERSION='4.0' PACKAGE_STRING='suite3270-lib 4.0' PACKAGE_BUGREPORT='' PACKAGE_URL='' # Factoring default headers for most tests. ac_includes_default="\ #include #ifdef HAVE_SYS_TYPES_H # include #endif #ifdef HAVE_SYS_STAT_H # include #endif #ifdef STDC_HEADERS # include # include #else # ifdef HAVE_STDLIB_H # include # endif #endif #ifdef HAVE_STRING_H # if !defined STDC_HEADERS && defined HAVE_MEMORY_H # include # endif # include #endif #ifdef HAVE_STRINGS_H # include #endif #ifdef HAVE_INTTYPES_H # include #endif #ifdef HAVE_STDINT_H # include #endif #ifdef HAVE_UNISTD_H # include #endif" ac_subst_vars='LTLIBOBJS LIBOBJS TLS_MODULES LIBX3270DIR HAVE_GETADDRINFO_A GAI_LIBS TLS_LIBS TLS_LDFLAGS ICONV_LIBS USE_ICONV EGREP GREP CPP CONNECT_GETPEERNAME CCOPTIONS host_os host_vendor host_cpu host build_os build_vendor build_cpu build ac_ct_AR AR RANLIB OBJEXT EXEEXT ac_ct_CC CPPFLAGS LDFLAGS CFLAGS CC INSTALL_DATA INSTALL_SCRIPT INSTALL_PROGRAM target_alias host_alias build_alias LIBS ECHO_T ECHO_N ECHO_C DEFS mandir localedir libdir psdir pdfdir dvidir htmldir infodir docdir oldincludedir includedir runstatedir localstatedir sharedstatedir sysconfdir datadir datarootdir libexecdir sbindir bindir program_transform_name prefix exec_prefix PACKAGE_URL PACKAGE_BUGREPORT PACKAGE_STRING PACKAGE_VERSION PACKAGE_TARNAME PACKAGE_NAME PATH_SEPARATOR SHELL' ac_subst_files='' ac_user_opts=' enable_option_checking with_ssl with_iconv enable_dbcs enable_local_process enable_tls enable_ipv6 enable_stransport enable_mock_tls ' ac_precious_vars='build_alias host_alias target_alias CC CFLAGS LDFLAGS LIBS CPPFLAGS CPP' # Initialize some variables set by options. ac_init_help= ac_init_version=false ac_unrecognized_opts= ac_unrecognized_sep= # The variables have the same names as the options, with # dashes changed to underlines. cache_file=/dev/null exec_prefix=NONE no_create= no_recursion= prefix=NONE program_prefix=NONE program_suffix=NONE program_transform_name=s,x,x, silent= site= srcdir= verbose= x_includes=NONE x_libraries=NONE # Installation directory options. # These are left unexpanded so users can "make install exec_prefix=/foo" # and all the variables that are supposed to be based on exec_prefix # by default will actually change. # Use braces instead of parens because sh, perl, etc. also accept them. # (The list follows the same order as the GNU Coding Standards.) bindir='${exec_prefix}/bin' sbindir='${exec_prefix}/sbin' libexecdir='${exec_prefix}/libexec' datarootdir='${prefix}/share' datadir='${datarootdir}' sysconfdir='${prefix}/etc' sharedstatedir='${prefix}/com' localstatedir='${prefix}/var' runstatedir='${localstatedir}/run' includedir='${prefix}/include' oldincludedir='/usr/include' docdir='${datarootdir}/doc/${PACKAGE_TARNAME}' infodir='${datarootdir}/info' htmldir='${docdir}' dvidir='${docdir}' pdfdir='${docdir}' psdir='${docdir}' libdir='${exec_prefix}/lib' localedir='${datarootdir}/locale' mandir='${datarootdir}/man' ac_prev= ac_dashdash= for ac_option do # If the previous option needs an argument, assign it. if test -n "$ac_prev"; then eval $ac_prev=\$ac_option ac_prev= continue fi case $ac_option in *=?*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;; *=) ac_optarg= ;; *) ac_optarg=yes ;; esac # Accept the important Cygnus configure options, so we can diagnose typos. case $ac_dashdash$ac_option in --) ac_dashdash=yes ;; -bindir | --bindir | --bindi | --bind | --bin | --bi) ac_prev=bindir ;; -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*) bindir=$ac_optarg ;; -build | --build | --buil | --bui | --bu) ac_prev=build_alias ;; -build=* | --build=* | --buil=* | --bui=* | --bu=*) build_alias=$ac_optarg ;; -cache-file | --cache-file | --cache-fil | --cache-fi \ | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) ac_prev=cache_file ;; -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) cache_file=$ac_optarg ;; --config-cache | -C) cache_file=config.cache ;; -datadir | --datadir | --datadi | --datad) ac_prev=datadir ;; -datadir=* | --datadir=* | --datadi=* | --datad=*) datadir=$ac_optarg ;; -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \ | --dataroo | --dataro | --datar) ac_prev=datarootdir ;; -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \ | --dataroot=* | --dataroo=* | --dataro=* | --datar=*) datarootdir=$ac_optarg ;; -disable-* | --disable-*) ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid feature name: $ac_useropt" ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "enable_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--disable-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval enable_$ac_useropt=no ;; -docdir | --docdir | --docdi | --doc | --do) ac_prev=docdir ;; -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*) docdir=$ac_optarg ;; -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv) ac_prev=dvidir ;; -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*) dvidir=$ac_optarg ;; -enable-* | --enable-*) ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid feature name: $ac_useropt" ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "enable_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--enable-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval enable_$ac_useropt=\$ac_optarg ;; -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ | --exec | --exe | --ex) ac_prev=exec_prefix ;; -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \ | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \ | --exec=* | --exe=* | --ex=*) exec_prefix=$ac_optarg ;; -gas | --gas | --ga | --g) # Obsolete; use --with-gas. with_gas=yes ;; -help | --help | --hel | --he | -h) ac_init_help=long ;; -help=r* | --help=r* | --hel=r* | --he=r* | -hr*) ac_init_help=recursive ;; -help=s* | --help=s* | --hel=s* | --he=s* | -hs*) ac_init_help=short ;; -host | --host | --hos | --ho) ac_prev=host_alias ;; -host=* | --host=* | --hos=* | --ho=*) host_alias=$ac_optarg ;; -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht) ac_prev=htmldir ;; -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \ | --ht=*) htmldir=$ac_optarg ;; -includedir | --includedir | --includedi | --included | --include \ | --includ | --inclu | --incl | --inc) ac_prev=includedir ;; -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \ | --includ=* | --inclu=* | --incl=* | --inc=*) includedir=$ac_optarg ;; -infodir | --infodir | --infodi | --infod | --info | --inf) ac_prev=infodir ;; -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*) infodir=$ac_optarg ;; -libdir | --libdir | --libdi | --libd) ac_prev=libdir ;; -libdir=* | --libdir=* | --libdi=* | --libd=*) libdir=$ac_optarg ;; -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \ | --libexe | --libex | --libe) ac_prev=libexecdir ;; -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \ | --libexe=* | --libex=* | --libe=*) libexecdir=$ac_optarg ;; -localedir | --localedir | --localedi | --localed | --locale) ac_prev=localedir ;; -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*) localedir=$ac_optarg ;; -localstatedir | --localstatedir | --localstatedi | --localstated \ | --localstate | --localstat | --localsta | --localst | --locals) ac_prev=localstatedir ;; -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*) localstatedir=$ac_optarg ;; -mandir | --mandir | --mandi | --mand | --man | --ma | --m) ac_prev=mandir ;; -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*) mandir=$ac_optarg ;; -nfp | --nfp | --nf) # Obsolete; use --without-fp. with_fp=no ;; -no-create | --no-create | --no-creat | --no-crea | --no-cre \ | --no-cr | --no-c | -n) no_create=yes ;; -no-recursion | --no-recursion | --no-recursio | --no-recursi \ | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) no_recursion=yes ;; -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \ | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \ | --oldin | --oldi | --old | --ol | --o) ac_prev=oldincludedir ;; -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \ | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \ | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*) oldincludedir=$ac_optarg ;; -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) ac_prev=prefix ;; -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) prefix=$ac_optarg ;; -program-prefix | --program-prefix | --program-prefi | --program-pref \ | --program-pre | --program-pr | --program-p) ac_prev=program_prefix ;; -program-prefix=* | --program-prefix=* | --program-prefi=* \ | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*) program_prefix=$ac_optarg ;; -program-suffix | --program-suffix | --program-suffi | --program-suff \ | --program-suf | --program-su | --program-s) ac_prev=program_suffix ;; -program-suffix=* | --program-suffix=* | --program-suffi=* \ | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*) program_suffix=$ac_optarg ;; -program-transform-name | --program-transform-name \ | --program-transform-nam | --program-transform-na \ | --program-transform-n | --program-transform- \ | --program-transform | --program-transfor \ | --program-transfo | --program-transf \ | --program-trans | --program-tran \ | --progr-tra | --program-tr | --program-t) ac_prev=program_transform_name ;; -program-transform-name=* | --program-transform-name=* \ | --program-transform-nam=* | --program-transform-na=* \ | --program-transform-n=* | --program-transform-=* \ | --program-transform=* | --program-transfor=* \ | --program-transfo=* | --program-transf=* \ | --program-trans=* | --program-tran=* \ | --progr-tra=* | --program-tr=* | --program-t=*) program_transform_name=$ac_optarg ;; -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd) ac_prev=pdfdir ;; -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*) pdfdir=$ac_optarg ;; -psdir | --psdir | --psdi | --psd | --ps) ac_prev=psdir ;; -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*) psdir=$ac_optarg ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil) silent=yes ;; -runstatedir | --runstatedir | --runstatedi | --runstated \ | --runstate | --runstat | --runsta | --runst | --runs \ | --run | --ru | --r) ac_prev=runstatedir ;; -runstatedir=* | --runstatedir=* | --runstatedi=* | --runstated=* \ | --runstate=* | --runstat=* | --runsta=* | --runst=* | --runs=* \ | --run=* | --ru=* | --r=*) runstatedir=$ac_optarg ;; -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) ac_prev=sbindir ;; -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ | --sbi=* | --sb=*) sbindir=$ac_optarg ;; -sharedstatedir | --sharedstatedir | --sharedstatedi \ | --sharedstated | --sharedstate | --sharedstat | --sharedsta \ | --sharedst | --shareds | --shared | --share | --shar \ | --sha | --sh) ac_prev=sharedstatedir ;; -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \ | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \ | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \ | --sha=* | --sh=*) sharedstatedir=$ac_optarg ;; -site | --site | --sit) ac_prev=site ;; -site=* | --site=* | --sit=*) site=$ac_optarg ;; -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) ac_prev=srcdir ;; -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) srcdir=$ac_optarg ;; -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \ | --syscon | --sysco | --sysc | --sys | --sy) ac_prev=sysconfdir ;; -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \ | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*) sysconfdir=$ac_optarg ;; -target | --target | --targe | --targ | --tar | --ta | --t) ac_prev=target_alias ;; -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) target_alias=$ac_optarg ;; -v | -verbose | --verbose | --verbos | --verbo | --verb) verbose=yes ;; -version | --version | --versio | --versi | --vers | -V) ac_init_version=: ;; -with-* | --with-*) ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid package name: $ac_useropt" ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "with_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--with-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval with_$ac_useropt=\$ac_optarg ;; -without-* | --without-*) ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid package name: $ac_useropt" ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "with_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--without-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval with_$ac_useropt=no ;; --x) # Obsolete; use --with-x. with_x=yes ;; -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \ | --x-incl | --x-inc | --x-in | --x-i) ac_prev=x_includes ;; -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \ | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*) x_includes=$ac_optarg ;; -x-libraries | --x-libraries | --x-librarie | --x-librari \ | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l) ac_prev=x_libraries ;; -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \ | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) x_libraries=$ac_optarg ;; -*) as_fn_error $? "unrecognized option: \`$ac_option' Try \`$0 --help' for more information" ;; *=*) ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='` # Reject names that are not valid shell variable names. case $ac_envvar in #( '' | [0-9]* | *[!_$as_cr_alnum]* ) as_fn_error $? "invalid variable name: \`$ac_envvar'" ;; esac eval $ac_envvar=\$ac_optarg export $ac_envvar ;; *) # FIXME: should be removed in autoconf 3.0. $as_echo "$as_me: WARNING: you should use --build, --host, --target" >&2 expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && $as_echo "$as_me: WARNING: invalid host type: $ac_option" >&2 : "${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}" ;; esac done if test -n "$ac_prev"; then ac_option=--`echo $ac_prev | sed 's/_/-/g'` as_fn_error $? "missing argument to $ac_option" fi if test -n "$ac_unrecognized_opts"; then case $enable_option_checking in no) ;; fatal) as_fn_error $? "unrecognized options: $ac_unrecognized_opts" ;; *) $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;; esac fi # Check all directory arguments for consistency. for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \ datadir sysconfdir sharedstatedir localstatedir includedir \ oldincludedir docdir infodir htmldir dvidir pdfdir psdir \ libdir localedir mandir runstatedir do eval ac_val=\$$ac_var # Remove trailing slashes. case $ac_val in */ ) ac_val=`expr "X$ac_val" : 'X\(.*[^/]\)' \| "X$ac_val" : 'X\(.*\)'` eval $ac_var=\$ac_val;; esac # Be sure to have absolute directory names. case $ac_val in [\\/$]* | ?:[\\/]* ) continue;; NONE | '' ) case $ac_var in *prefix ) continue;; esac;; esac as_fn_error $? "expected an absolute directory name for --$ac_var: $ac_val" done # There might be people who depend on the old broken behavior: `$host' # used to hold the argument of --host etc. # FIXME: To remove some day. build=$build_alias host=$host_alias target=$target_alias # FIXME: To remove some day. if test "x$host_alias" != x; then if test "x$build_alias" = x; then cross_compiling=maybe elif test "x$build_alias" != "x$host_alias"; then cross_compiling=yes fi fi ac_tool_prefix= test -n "$host_alias" && ac_tool_prefix=$host_alias- test "$silent" = yes && exec 6>/dev/null ac_pwd=`pwd` && test -n "$ac_pwd" && ac_ls_di=`ls -di .` && ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` || as_fn_error $? "working directory cannot be determined" test "X$ac_ls_di" = "X$ac_pwd_ls_di" || as_fn_error $? "pwd does not report name of working directory" # Find the source files, if location was not specified. if test -z "$srcdir"; then ac_srcdir_defaulted=yes # Try the directory containing this script, then the parent directory. ac_confdir=`$as_dirname -- "$as_myself" || $as_expr X"$as_myself" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_myself" : 'X\(//\)[^/]' \| \ X"$as_myself" : 'X\(//\)$' \| \ X"$as_myself" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$as_myself" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` srcdir=$ac_confdir if test ! -r "$srcdir/$ac_unique_file"; then srcdir=.. fi else ac_srcdir_defaulted=no fi if test ! -r "$srcdir/$ac_unique_file"; then test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .." as_fn_error $? "cannot find sources ($ac_unique_file) in $srcdir" fi ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work" ac_abs_confdir=`( cd "$srcdir" && test -r "./$ac_unique_file" || as_fn_error $? "$ac_msg" pwd)` # When building in place, set srcdir=. if test "$ac_abs_confdir" = "$ac_pwd"; then srcdir=. fi # Remove unnecessary trailing slashes from srcdir. # Double slashes in file names in object file debugging info # mess up M-x gdb in Emacs. case $srcdir in */) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;; esac for ac_var in $ac_precious_vars; do eval ac_env_${ac_var}_set=\${${ac_var}+set} eval ac_env_${ac_var}_value=\$${ac_var} eval ac_cv_env_${ac_var}_set=\${${ac_var}+set} eval ac_cv_env_${ac_var}_value=\$${ac_var} done # # Report the --help message. # if test "$ac_init_help" = "long"; then # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF \`configure' configures suite3270-lib 4.0 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... To assign environment variables (e.g., CC, CFLAGS...), specify them as VAR=VALUE. See below for descriptions of some of the useful variables. Defaults for the options are specified in brackets. Configuration: -h, --help display this help and exit --help=short display options specific to this package --help=recursive display the short help of all the included packages -V, --version display version information and exit -q, --quiet, --silent do not print \`checking ...' messages --cache-file=FILE cache test results in FILE [disabled] -C, --config-cache alias for \`--cache-file=config.cache' -n, --no-create do not create output files --srcdir=DIR find the sources in DIR [configure dir or \`..'] Installation directories: --prefix=PREFIX install architecture-independent files in PREFIX [$ac_default_prefix] --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX [PREFIX] By default, \`make install' will install all the files in \`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify an installation prefix other than \`$ac_default_prefix' using \`--prefix', for instance \`--prefix=\$HOME'. For better control, use the options below. Fine tuning of the installation directories: --bindir=DIR user executables [EPREFIX/bin] --sbindir=DIR system admin executables [EPREFIX/sbin] --libexecdir=DIR program executables [EPREFIX/libexec] --sysconfdir=DIR read-only single-machine data [PREFIX/etc] --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] --localstatedir=DIR modifiable single-machine data [PREFIX/var] --runstatedir=DIR modifiable per-process data [LOCALSTATEDIR/run] --libdir=DIR object code libraries [EPREFIX/lib] --includedir=DIR C header files [PREFIX/include] --oldincludedir=DIR C header files for non-gcc [/usr/include] --datarootdir=DIR read-only arch.-independent data root [PREFIX/share] --datadir=DIR read-only architecture-independent data [DATAROOTDIR] --infodir=DIR info documentation [DATAROOTDIR/info] --localedir=DIR locale-dependent data [DATAROOTDIR/locale] --mandir=DIR man documentation [DATAROOTDIR/man] --docdir=DIR documentation root [DATAROOTDIR/doc/suite3270-lib] --htmldir=DIR html documentation [DOCDIR] --dvidir=DIR dvi documentation [DOCDIR] --pdfdir=DIR pdf documentation [DOCDIR] --psdir=DIR ps documentation [DOCDIR] _ACEOF cat <<\_ACEOF System types: --build=BUILD configure for building on BUILD [guessed] --host=HOST cross-compile to build programs to run on HOST [BUILD] _ACEOF fi if test -n "$ac_init_help"; then case $ac_init_help in short | recursive ) echo "Configuration of suite3270-lib 4.0:";; esac cat <<\_ACEOF Optional Features: --disable-option-checking ignore unrecognized --enable/--with options --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) --enable-FEATURE[=ARG] include FEATURE [ARG=yes] --disable-dbcs leave out DBCS support --disable-local-process leave out local process support --disable-tls leave out TLS support --disable-ipv6 leave out IPv6 support --disable-stransport use OpenSSL instead of Secure Transport (MacOS) --enable-mock-tls use TLS mock for testing Optional Packages: --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) --with-openssl=DIR specify OpenSSL install directory --with-iconv ignore __STDC_ISO_10646__ and use iconv() instead Some influential environment variables: CC C compiler command CFLAGS C compiler flags LDFLAGS linker flags, e.g. -L if you have libraries in a nonstandard directory LIBS libraries to pass to the linker, e.g. -l CPPFLAGS (Objective) C/C++ preprocessor flags, e.g. -I if you have headers in a nonstandard directory CPP C preprocessor Use these variables to override the choices made by `configure' or to help it to find libraries and programs with nonstandard names/locations. Report bugs to the package provider. _ACEOF ac_status=$? fi if test "$ac_init_help" = "recursive"; then # If there are subdirs, report their specific --help. for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue test -d "$ac_dir" || { cd "$srcdir" && ac_pwd=`pwd` && srcdir=. && test -d "$ac_dir"; } || continue ac_builddir=. case "$ac_dir" in .) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` # A ".." for each directory in $ac_dir_suffix. ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` case $ac_top_builddir_sub in "") ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; esac ;; esac ac_abs_top_builddir=$ac_pwd ac_abs_builddir=$ac_pwd$ac_dir_suffix # for backward compatibility: ac_top_builddir=$ac_top_build_prefix case $srcdir in .) # We are building in place. ac_srcdir=. ac_top_srcdir=$ac_top_builddir_sub ac_abs_top_srcdir=$ac_pwd ;; [\\/]* | ?:[\\/]* ) # Absolute name. ac_srcdir=$srcdir$ac_dir_suffix; ac_top_srcdir=$srcdir ac_abs_top_srcdir=$srcdir ;; *) # Relative name. ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix ac_top_srcdir=$ac_top_build_prefix$srcdir ac_abs_top_srcdir=$ac_pwd/$srcdir ;; esac ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix cd "$ac_dir" || { ac_status=$?; continue; } # Check for guested configure. if test -f "$ac_srcdir/configure.gnu"; then echo && $SHELL "$ac_srcdir/configure.gnu" --help=recursive elif test -f "$ac_srcdir/configure"; then echo && $SHELL "$ac_srcdir/configure" --help=recursive else $as_echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2 fi || ac_status=$? cd "$ac_pwd" || { ac_status=$?; break; } done fi test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF suite3270-lib configure 4.0 generated by GNU Autoconf 2.69 Copyright (C) 2012 Free Software Foundation, Inc. This configure script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it. _ACEOF exit fi ## ------------------------ ## ## Autoconf initialization. ## ## ------------------------ ## # ac_fn_c_try_compile LINENO # -------------------------- # Try to compile conftest.$ac_ext, and return whether this succeeded. ac_fn_c_try_compile () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack rm -f conftest.$ac_objext if { { ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_compile") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then : ac_retval=0 else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_c_try_compile # ac_fn_c_try_cpp LINENO # ---------------------- # Try to preprocess conftest.$ac_ext, and return whether this succeeded. ac_fn_c_try_cpp () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack if { { ac_try="$ac_cpp conftest.$ac_ext" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } > conftest.i && { test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || test ! -s conftest.err }; then : ac_retval=0 else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_c_try_cpp # ac_fn_c_check_header_mongrel LINENO HEADER VAR INCLUDES # ------------------------------------------------------- # Tests whether HEADER exists, giving a warning if it cannot be compiled using # the include files in INCLUDES and setting the cache variable VAR # accordingly. ac_fn_c_check_header_mongrel () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack if eval \${$3+:} false; then : { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 $as_echo_n "checking for $2... " >&6; } if eval \${$3+:} false; then : $as_echo_n "(cached) " >&6 fi eval ac_res=\$$3 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } else # Is the header compilable? { $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 usability" >&5 $as_echo_n "checking $2 usability... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 #include <$2> _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_header_compiler=yes else ac_header_compiler=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_compiler" >&5 $as_echo "$ac_header_compiler" >&6; } # Is the header present? { $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 presence" >&5 $as_echo_n "checking $2 presence... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include <$2> _ACEOF if ac_fn_c_try_cpp "$LINENO"; then : ac_header_preproc=yes else ac_header_preproc=no fi rm -f conftest.err conftest.i conftest.$ac_ext { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_preproc" >&5 $as_echo "$ac_header_preproc" >&6; } # So? What about this header? case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in #(( yes:no: ) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&5 $as_echo "$as_me: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5 $as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;} ;; no:yes:* ) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: present but cannot be compiled" >&5 $as_echo "$as_me: WARNING: $2: present but cannot be compiled" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: check for missing prerequisite headers?" >&5 $as_echo "$as_me: WARNING: $2: check for missing prerequisite headers?" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: see the Autoconf documentation" >&5 $as_echo "$as_me: WARNING: $2: see the Autoconf documentation" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&5 $as_echo "$as_me: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5 $as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;} ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 $as_echo_n "checking for $2... " >&6; } if eval \${$3+:} false; then : $as_echo_n "(cached) " >&6 else eval "$3=\$ac_header_compiler" fi eval ac_res=\$$3 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } fi eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } # ac_fn_c_check_header_mongrel # ac_fn_c_try_run LINENO # ---------------------- # Try to link conftest.$ac_ext, and return whether this succeeded. Assumes # that executables *can* be run. ac_fn_c_try_run () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack if { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { ac_try='./conftest$ac_exeext' { { case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_try") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; }; then : ac_retval=0 else $as_echo "$as_me: program exited with status $ac_status" >&5 $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=$ac_status fi rm -rf conftest.dSYM conftest_ipa8_conftest.oo eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_c_try_run # ac_fn_c_check_header_compile LINENO HEADER VAR INCLUDES # ------------------------------------------------------- # Tests whether HEADER exists and can be compiled using the include files in # INCLUDES, setting the cache variable VAR accordingly. ac_fn_c_check_header_compile () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 $as_echo_n "checking for $2... " >&6; } if eval \${$3+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 #include <$2> _ACEOF if ac_fn_c_try_compile "$LINENO"; then : eval "$3=yes" else eval "$3=no" fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi eval ac_res=\$$3 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } # ac_fn_c_check_header_compile # ac_fn_c_check_decl LINENO SYMBOL VAR INCLUDES # --------------------------------------------- # Tests whether SYMBOL is declared in INCLUDES, setting cache variable VAR # accordingly. ac_fn_c_check_decl () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack as_decl_name=`echo $2|sed 's/ *(.*//'` as_decl_use=`echo $2|sed -e 's/(/((/' -e 's/)/) 0&/' -e 's/,/) 0& (/g'` { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $as_decl_name is declared" >&5 $as_echo_n "checking whether $as_decl_name is declared... " >&6; } if eval \${$3+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 int main () { #ifndef $as_decl_name #ifdef __cplusplus (void) $as_decl_use; #else (void) $as_decl_name; #endif #endif ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : eval "$3=yes" else eval "$3=no" fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi eval ac_res=\$$3 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } # ac_fn_c_check_decl # ac_fn_c_try_link LINENO # ----------------------- # Try to link conftest.$ac_ext, and return whether this succeeded. ac_fn_c_try_link () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack rm -f conftest.$ac_objext conftest$ac_exeext if { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || test -x conftest$ac_exeext }; then : ac_retval=0 else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would # interfere with the next link command; also delete a directory that is # left behind by Apple's compiler. We do this before executing the actions. rm -rf conftest.dSYM conftest_ipa8_conftest.oo eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_c_try_link # ac_fn_c_check_func LINENO FUNC VAR # ---------------------------------- # Tests whether FUNC exists, setting the cache variable VAR accordingly ac_fn_c_check_func () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 $as_echo_n "checking for $2... " >&6; } if eval \${$3+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Define $2 to an innocuous variant, in case declares $2. For example, HP-UX 11i declares gettimeofday. */ #define $2 innocuous_$2 /* System header to define __stub macros and hopefully few prototypes, which can conflict with char $2 (); below. Prefer to if __STDC__ is defined, since exists even on freestanding compilers. */ #ifdef __STDC__ # include #else # include #endif #undef $2 /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char $2 (); /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined __stub_$2 || defined __stub___$2 choke me #endif int main () { return $2 (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : eval "$3=yes" else eval "$3=no" fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi eval ac_res=\$$3 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } # ac_fn_c_check_func cat >config.log <<_ACEOF This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. It was created by suite3270-lib $as_me 4.0, which was generated by GNU Autoconf 2.69. Invocation command line was $ $0 $@ _ACEOF exec 5>>config.log { cat <<_ASUNAME ## --------- ## ## Platform. ## ## --------- ## hostname = `(hostname || uname -n) 2>/dev/null | sed 1q` uname -m = `(uname -m) 2>/dev/null || echo unknown` uname -r = `(uname -r) 2>/dev/null || echo unknown` uname -s = `(uname -s) 2>/dev/null || echo unknown` uname -v = `(uname -v) 2>/dev/null || echo unknown` /usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown` /bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown` /bin/arch = `(/bin/arch) 2>/dev/null || echo unknown` /usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown` /usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown` /usr/bin/hostinfo = `(/usr/bin/hostinfo) 2>/dev/null || echo unknown` /bin/machine = `(/bin/machine) 2>/dev/null || echo unknown` /usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown` /bin/universe = `(/bin/universe) 2>/dev/null || echo unknown` _ASUNAME as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. $as_echo "PATH: $as_dir" done IFS=$as_save_IFS } >&5 cat >&5 <<_ACEOF ## ----------- ## ## Core tests. ## ## ----------- ## _ACEOF # Keep a trace of the command line. # Strip out --no-create and --no-recursion so they do not pile up. # Strip out --silent because we don't want to record it for future runs. # Also quote any args containing shell meta-characters. # Make two passes to allow for proper duplicate-argument suppression. ac_configure_args= ac_configure_args0= ac_configure_args1= ac_must_keep_next=false for ac_pass in 1 2 do for ac_arg do case $ac_arg in -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil) continue ;; *\'*) ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; esac case $ac_pass in 1) as_fn_append ac_configure_args0 " '$ac_arg'" ;; 2) as_fn_append ac_configure_args1 " '$ac_arg'" if test $ac_must_keep_next = true; then ac_must_keep_next=false # Got value, back to normal. else case $ac_arg in *=* | --config-cache | -C | -disable-* | --disable-* \ | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \ | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \ | -with-* | --with-* | -without-* | --without-* | --x) case "$ac_configure_args0 " in "$ac_configure_args1"*" '$ac_arg' "* ) continue ;; esac ;; -* ) ac_must_keep_next=true ;; esac fi as_fn_append ac_configure_args " '$ac_arg'" ;; esac done done { ac_configure_args0=; unset ac_configure_args0;} { ac_configure_args1=; unset ac_configure_args1;} # When interrupted or exit'd, cleanup temporary files, and complete # config.log. We remove comments because anyway the quotes in there # would cause problems or look ugly. # WARNING: Use '\'' to represent an apostrophe within the trap. # WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug. trap 'exit_status=$? # Save into config.log some information that might help in debugging. { echo $as_echo "## ---------------- ## ## Cache variables. ## ## ---------------- ##" echo # The following way of writing the cache mishandles newlines in values, ( for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do eval ac_val=\$$ac_var case $ac_val in #( *${as_nl}*) case $ac_var in #( *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 $as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; esac case $ac_var in #( _ | IFS | as_nl) ;; #( BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( *) { eval $ac_var=; unset $ac_var;} ;; esac ;; esac done (set) 2>&1 | case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #( *${as_nl}ac_space=\ *) sed -n \ "s/'\''/'\''\\\\'\'''\''/g; s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p" ;; #( *) sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" ;; esac | sort ) echo $as_echo "## ----------------- ## ## Output variables. ## ## ----------------- ##" echo for ac_var in $ac_subst_vars do eval ac_val=\$$ac_var case $ac_val in *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; esac $as_echo "$ac_var='\''$ac_val'\''" done | sort echo if test -n "$ac_subst_files"; then $as_echo "## ------------------- ## ## File substitutions. ## ## ------------------- ##" echo for ac_var in $ac_subst_files do eval ac_val=\$$ac_var case $ac_val in *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; esac $as_echo "$ac_var='\''$ac_val'\''" done | sort echo fi if test -s confdefs.h; then $as_echo "## ----------- ## ## confdefs.h. ## ## ----------- ##" echo cat confdefs.h echo fi test "$ac_signal" != 0 && $as_echo "$as_me: caught signal $ac_signal" $as_echo "$as_me: exit $exit_status" } >&5 rm -f core *.core core.conftest.* && rm -f -r conftest* confdefs* conf$$* $ac_clean_files && exit $exit_status ' 0 for ac_signal in 1 2 13 15; do trap 'ac_signal='$ac_signal'; as_fn_exit 1' $ac_signal done ac_signal=0 # confdefs.h avoids OS command line length limits that DEFS can exceed. rm -f -r conftest* confdefs.h $as_echo "/* confdefs.h */" > confdefs.h # Predefined preprocessor variables. cat >>confdefs.h <<_ACEOF #define PACKAGE_NAME "$PACKAGE_NAME" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_TARNAME "$PACKAGE_TARNAME" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_VERSION "$PACKAGE_VERSION" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_STRING "$PACKAGE_STRING" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_URL "$PACKAGE_URL" _ACEOF # Let the site file select an alternate cache file if it wants to. # Prefer an explicitly selected file to automatically selected ones. ac_site_file1=NONE ac_site_file2=NONE if test -n "$CONFIG_SITE"; then # We do not want a PATH search for config.site. case $CONFIG_SITE in #(( -*) ac_site_file1=./$CONFIG_SITE;; */*) ac_site_file1=$CONFIG_SITE;; *) ac_site_file1=./$CONFIG_SITE;; esac elif test "x$prefix" != xNONE; then ac_site_file1=$prefix/share/config.site ac_site_file2=$prefix/etc/config.site else ac_site_file1=$ac_default_prefix/share/config.site ac_site_file2=$ac_default_prefix/etc/config.site fi for ac_site_file in "$ac_site_file1" "$ac_site_file2" do test "x$ac_site_file" = xNONE && continue if test /dev/null != "$ac_site_file" && test -r "$ac_site_file"; then { $as_echo "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5 $as_echo "$as_me: loading site script $ac_site_file" >&6;} sed 's/^/| /' "$ac_site_file" >&5 . "$ac_site_file" \ || { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "failed to load site script $ac_site_file See \`config.log' for more details" "$LINENO" 5; } fi done if test -r "$cache_file"; then # Some versions of bash will fail to source /dev/null (special files # actually), so we avoid doing that. DJGPP emulates it as a regular file. if test /dev/null != "$cache_file" && test -f "$cache_file"; then { $as_echo "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5 $as_echo "$as_me: loading cache $cache_file" >&6;} case $cache_file in [\\/]* | ?:[\\/]* ) . "$cache_file";; *) . "./$cache_file";; esac fi else { $as_echo "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5 $as_echo "$as_me: creating cache $cache_file" >&6;} >$cache_file fi # Check that the precious variables saved in the cache have kept the same # value. ac_cache_corrupted=false for ac_var in $ac_precious_vars; do eval ac_old_set=\$ac_cv_env_${ac_var}_set eval ac_new_set=\$ac_env_${ac_var}_set eval ac_old_val=\$ac_cv_env_${ac_var}_value eval ac_new_val=\$ac_env_${ac_var}_value case $ac_old_set,$ac_new_set in set,) { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 $as_echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} ac_cache_corrupted=: ;; ,set) { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was not set in the previous run" >&5 $as_echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} ac_cache_corrupted=: ;; ,);; *) if test "x$ac_old_val" != "x$ac_new_val"; then # differences in whitespace do not lead to failure. ac_old_val_w=`echo x $ac_old_val` ac_new_val_w=`echo x $ac_new_val` if test "$ac_old_val_w" != "$ac_new_val_w"; then { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' has changed since the previous run:" >&5 $as_echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} ac_cache_corrupted=: else { $as_echo "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5 $as_echo "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;} eval $ac_var=\$ac_old_val fi { $as_echo "$as_me:${as_lineno-$LINENO}: former value: \`$ac_old_val'" >&5 $as_echo "$as_me: former value: \`$ac_old_val'" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: current value: \`$ac_new_val'" >&5 $as_echo "$as_me: current value: \`$ac_new_val'" >&2;} fi;; esac # Pass precious variables to config.status. if test "$ac_new_set" = set; then case $ac_new_val in *\'*) ac_arg=$ac_var=`$as_echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; *) ac_arg=$ac_var=$ac_new_val ;; esac case " $ac_configure_args " in *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy. *) as_fn_append ac_configure_args " '$ac_arg'" ;; esac fi done if $ac_cache_corrupted; then { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5 $as_echo "$as_me: error: changes in the environment can compromise the build" >&2;} as_fn_error $? "run \`make distclean' and/or \`rm $cache_file' and start over" "$LINENO" 5 fi ## -------------------- ## ## Main body of script. ## ## -------------------- ## ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu ac_aux_dir= for ac_dir in "$srcdir" "$srcdir/.." "$srcdir/../.."; do if test -f "$ac_dir/install-sh"; then ac_aux_dir=$ac_dir ac_install_sh="$ac_aux_dir/install-sh -c" break elif test -f "$ac_dir/install.sh"; then ac_aux_dir=$ac_dir ac_install_sh="$ac_aux_dir/install.sh -c" break elif test -f "$ac_dir/shtool"; then ac_aux_dir=$ac_dir ac_install_sh="$ac_aux_dir/shtool install -c" break fi done if test -z "$ac_aux_dir"; then as_fn_error $? "cannot find install-sh, install.sh, or shtool in \"$srcdir\" \"$srcdir/..\" \"$srcdir/../..\"" "$LINENO" 5 fi # These three variables are undocumented and unsupported, # and are intended to be withdrawn in a future Autoconf release. # They can cause serious problems if a builder's source tree is in a directory # whose full name contains unusual characters. ac_config_guess="$SHELL $ac_aux_dir/config.guess" # Please don't use this var. ac_config_sub="$SHELL $ac_aux_dir/config.sub" # Please don't use this var. ac_configure="$SHELL $ac_aux_dir/configure" # Please don't use this var. # Find a good install program. We prefer a C program (faster), # so one script is as good as another. But avoid the broken or # incompatible versions: # SysV /etc/install, /usr/sbin/install # SunOS /usr/etc/install # IRIX /sbin/install # AIX /bin/install # AmigaOS /C/install, which installs bootblocks on floppy discs # AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag # AFS /usr/afsws/bin/install, which mishandles nonexistent args # SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" # OS/2's system install, which has a completely different semantic # ./install, which can be erroneously created by make from ./install.sh. # Reject install programs that cannot install multiple files. { $as_echo "$as_me:${as_lineno-$LINENO}: checking for a BSD-compatible install" >&5 $as_echo_n "checking for a BSD-compatible install... " >&6; } if test -z "$INSTALL"; then if ${ac_cv_path_install+:} false; then : $as_echo_n "(cached) " >&6 else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. # Account for people who put trailing slashes in PATH elements. case $as_dir/ in #(( ./ | .// | /[cC]/* | \ /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \ ?:[\\/]os2[\\/]install[\\/]* | ?:[\\/]OS2[\\/]INSTALL[\\/]* | \ /usr/ucb/* ) ;; *) # OSF1 and SCO ODT 3.0 have their own names for install. # Don't use installbsd from OSF since it installs stuff as root # by default. for ac_prog in ginstall scoinst install; do for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then if test $ac_prog = install && grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then # AIX install. It has an incompatible calling convention. : elif test $ac_prog = install && grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then # program-specific install script used by HP pwplus--don't use. : else rm -rf conftest.one conftest.two conftest.dir echo one > conftest.one echo two > conftest.two mkdir conftest.dir if "$as_dir/$ac_prog$ac_exec_ext" -c conftest.one conftest.two "`pwd`/conftest.dir" && test -s conftest.one && test -s conftest.two && test -s conftest.dir/conftest.one && test -s conftest.dir/conftest.two then ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c" break 3 fi fi fi done done ;; esac done IFS=$as_save_IFS rm -rf conftest.one conftest.two conftest.dir fi if test "${ac_cv_path_install+set}" = set; then INSTALL=$ac_cv_path_install else # As a last resort, use the slow shell script. Don't cache a # value for INSTALL within a source directory, because that will # break other packages using the cache if that directory is # removed, or if the value is a relative name. INSTALL=$ac_install_sh fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $INSTALL" >&5 $as_echo "$INSTALL" >&6; } # Use test -z because SunOS4 sh mishandles braces in ${var-val}. # It thinks the first close brace ends the variable substitution. test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}' test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}' test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. set dummy ${ac_tool_prefix}gcc; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CC="${ac_tool_prefix}gcc" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_CC"; then ac_ct_CC=$CC # Extract the first word of "gcc", so it can be a program name with args. set dummy gcc; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CC="gcc" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 $as_echo "$ac_ct_CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_CC" = x; then CC="" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CC=$ac_ct_CC fi else CC="$ac_cv_prog_CC" fi if test -z "$CC"; then if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. set dummy ${ac_tool_prefix}cc; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CC="${ac_tool_prefix}cc" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi fi if test -z "$CC"; then # Extract the first word of "cc", so it can be a program name with args. set dummy cc; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else ac_prog_rejected=no as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then ac_prog_rejected=yes continue fi ac_cv_prog_CC="cc" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS if test $ac_prog_rejected = yes; then # We found a bogon in the path, so make sure we never use it. set dummy $ac_cv_prog_CC shift if test $# != 0; then # We chose a different compiler from the bogus one. # However, it has the same basename, so the bogon will be chosen # first if we set CC to just the basename; use the full file name. shift ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@" fi fi fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$CC"; then if test -n "$ac_tool_prefix"; then for ac_prog in cl.exe do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CC="$ac_tool_prefix$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$CC" && break done fi if test -z "$CC"; then ac_ct_CC=$CC for ac_prog in cl.exe do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CC="$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 $as_echo "$ac_ct_CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$ac_ct_CC" && break done if test "x$ac_ct_CC" = x; then CC="" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CC=$ac_ct_CC fi fi fi test -z "$CC" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "no acceptable C compiler found in \$PATH See \`config.log' for more details" "$LINENO" 5; } # Provide some information about the compiler. $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5 set X $ac_compile ac_compiler=$2 for ac_option in --version -v -V -qversion; do { { ac_try="$ac_compiler $ac_option >&5" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_compiler $ac_option >&5") 2>conftest.err ac_status=$? if test -s conftest.err; then sed '10a\ ... rest of stderr output deleted ... 10q' conftest.err >conftest.er1 cat conftest.er1 >&5 fi rm -f conftest.er1 conftest.err $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } done cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF ac_clean_files_save=$ac_clean_files ac_clean_files="$ac_clean_files a.out a.out.dSYM a.exe b.out" # Try to create an executable without -o first, disregard a.out. # It will help us diagnose broken compilers, and finding out an intuition # of exeext. { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler works" >&5 $as_echo_n "checking whether the C compiler works... " >&6; } ac_link_default=`$as_echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'` # The possible output files: ac_files="a.out conftest.exe conftest a.exe a_out.exe b.out conftest.*" ac_rmfiles= for ac_file in $ac_files do case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; * ) ac_rmfiles="$ac_rmfiles $ac_file";; esac done rm -f $ac_rmfiles if { { ac_try="$ac_link_default" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link_default") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then : # Autoconf-2.13 could set the ac_cv_exeext variable to `no'. # So ignore a value of `no', otherwise this would lead to `EXEEXT = no' # in a Makefile. We should not override ac_cv_exeext if it was cached, # so that the user can short-circuit this test for compilers unknown to # Autoconf. for ac_file in $ac_files '' do test -f "$ac_file" || continue case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; [ab].out ) # We found the default executable, but exeext='' is most # certainly right. break;; *.* ) if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no; then :; else ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` fi # We set ac_cv_exeext here because the later test for it is not # safe: cross compilers may not add the suffix if given an `-o' # argument, so we may need to know it at that point already. # Even if this section looks crufty: it has the advantage of # actually working. break;; * ) break;; esac done test "$ac_cv_exeext" = no && ac_cv_exeext= else ac_file='' fi if test -z "$ac_file"; then : { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error 77 "C compiler cannot create executables See \`config.log' for more details" "$LINENO" 5; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler default output file name" >&5 $as_echo_n "checking for C compiler default output file name... " >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5 $as_echo "$ac_file" >&6; } ac_exeext=$ac_cv_exeext rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out ac_clean_files=$ac_clean_files_save { $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5 $as_echo_n "checking for suffix of executables... " >&6; } if { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then : # If both `conftest.exe' and `conftest' are `present' (well, observable) # catch `conftest.exe'. For instance with Cygwin, `ls conftest' will # work properly (i.e., refer to `conftest.exe'), while it won't with # `rm'. for ac_file in conftest.exe conftest conftest.*; do test -f "$ac_file" || continue case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` break;; * ) break;; esac done else { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "cannot compute suffix of executables: cannot compile and link See \`config.log' for more details" "$LINENO" 5; } fi rm -f conftest conftest$ac_cv_exeext { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5 $as_echo "$ac_cv_exeext" >&6; } rm -f conftest.$ac_ext EXEEXT=$ac_cv_exeext ac_exeext=$EXEEXT cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main () { FILE *f = fopen ("conftest.out", "w"); return ferror (f) || fclose (f) != 0; ; return 0; } _ACEOF ac_clean_files="$ac_clean_files conftest.out" # Check that the compiler produces executables we can run. If not, either # the compiler is broken, or we cross compile. { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5 $as_echo_n "checking whether we are cross compiling... " >&6; } if test "$cross_compiling" != yes; then { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } if { ac_try='./conftest$ac_cv_exeext' { { case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_try") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; }; then cross_compiling=no else if test "$cross_compiling" = maybe; then cross_compiling=yes else { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "cannot run C compiled programs. If you meant to cross compile, use \`--host'. See \`config.log' for more details" "$LINENO" 5; } fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5 $as_echo "$cross_compiling" >&6; } rm -f conftest.$ac_ext conftest$ac_cv_exeext conftest.out ac_clean_files=$ac_clean_files_save { $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5 $as_echo_n "checking for suffix of object files... " >&6; } if ${ac_cv_objext+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF rm -f conftest.o conftest.obj if { { ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_compile") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then : for ac_file in conftest.o conftest.obj conftest.*; do test -f "$ac_file" || continue; case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM ) ;; *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'` break;; esac done else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "cannot compute suffix of object files: cannot compile See \`config.log' for more details" "$LINENO" 5; } fi rm -f conftest.$ac_cv_objext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5 $as_echo "$ac_cv_objext" >&6; } OBJEXT=$ac_cv_objext ac_objext=$OBJEXT { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C compiler" >&5 $as_echo_n "checking whether we are using the GNU C compiler... " >&6; } if ${ac_cv_c_compiler_gnu+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { #ifndef __GNUC__ choke me #endif ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_compiler_gnu=yes else ac_compiler_gnu=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_cv_c_compiler_gnu=$ac_compiler_gnu fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5 $as_echo "$ac_cv_c_compiler_gnu" >&6; } if test $ac_compiler_gnu = yes; then GCC=yes else GCC= fi ac_test_CFLAGS=${CFLAGS+set} ac_save_CFLAGS=$CFLAGS { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5 $as_echo_n "checking whether $CC accepts -g... " >&6; } if ${ac_cv_prog_cc_g+:} false; then : $as_echo_n "(cached) " >&6 else ac_save_c_werror_flag=$ac_c_werror_flag ac_c_werror_flag=yes ac_cv_prog_cc_g=no CFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_prog_cc_g=yes else CFLAGS="" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : else ac_c_werror_flag=$ac_save_c_werror_flag CFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_prog_cc_g=yes fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_c_werror_flag=$ac_save_c_werror_flag fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5 $as_echo "$ac_cv_prog_cc_g" >&6; } if test "$ac_test_CFLAGS" = set; then CFLAGS=$ac_save_CFLAGS elif test $ac_cv_prog_cc_g = yes; then if test "$GCC" = yes; then CFLAGS="-g -O2" else CFLAGS="-g" fi else if test "$GCC" = yes; then CFLAGS="-O2" else CFLAGS= fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5 $as_echo_n "checking for $CC option to accept ISO C89... " >&6; } if ${ac_cv_prog_cc_c89+:} false; then : $as_echo_n "(cached) " >&6 else ac_cv_prog_cc_c89=no ac_save_CC=$CC cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include struct stat; /* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */ struct buf { int x; }; FILE * (*rcsopen) (struct buf *, struct stat *, int); static char *e (p, i) char **p; int i; { return p[i]; } static char *f (char * (*g) (char **, int), char **p, ...) { char *s; va_list v; va_start (v,p); s = g (p, va_arg (v,int)); va_end (v); return s; } /* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has function prototypes and stuff, but not '\xHH' hex character constants. These don't provoke an error unfortunately, instead are silently treated as 'x'. The following induces an error, until -std is added to get proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an array size at least. It's necessary to write '\x00'==0 to get something that's true only with -std. */ int osf4_cc_array ['\x00' == 0 ? 1 : -1]; /* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters inside strings and character constants. */ #define FOO(x) 'x' int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1]; int test (int i, double x); struct s1 {int (*f) (int a);}; struct s2 {int (*f) (double a);}; int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int); int argc; char **argv; int main () { return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]; ; return 0; } _ACEOF for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \ -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" do CC="$ac_save_CC $ac_arg" if ac_fn_c_try_compile "$LINENO"; then : ac_cv_prog_cc_c89=$ac_arg fi rm -f core conftest.err conftest.$ac_objext test "x$ac_cv_prog_cc_c89" != "xno" && break done rm -f conftest.$ac_ext CC=$ac_save_CC fi # AC_CACHE_VAL case "x$ac_cv_prog_cc_c89" in x) { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 $as_echo "none needed" >&6; } ;; xno) { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 $as_echo "unsupported" >&6; } ;; *) CC="$CC $ac_cv_prog_cc_c89" { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5 $as_echo "$ac_cv_prog_cc_c89" >&6; } ;; esac if test "x$ac_cv_prog_cc_c89" != xno; then : fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args. set dummy ${ac_tool_prefix}ranlib; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_RANLIB+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$RANLIB"; then ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi RANLIB=$ac_cv_prog_RANLIB if test -n "$RANLIB"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $RANLIB" >&5 $as_echo "$RANLIB" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_RANLIB"; then ac_ct_RANLIB=$RANLIB # Extract the first word of "ranlib", so it can be a program name with args. set dummy ranlib; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_RANLIB+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_RANLIB"; then ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_RANLIB="ranlib" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB if test -n "$ac_ct_RANLIB"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_RANLIB" >&5 $as_echo "$ac_ct_RANLIB" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_RANLIB" = x; then RANLIB=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac RANLIB=$ac_ct_RANLIB fi else RANLIB="$ac_cv_prog_RANLIB" fi if test -n "$ac_tool_prefix"; then for ac_prog in ar do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_AR+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$AR"; then ac_cv_prog_AR="$AR" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_AR="$ac_tool_prefix$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi AR=$ac_cv_prog_AR if test -n "$AR"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AR" >&5 $as_echo "$AR" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$AR" && break done fi if test -z "$AR"; then ac_ct_AR=$AR for ac_prog in ar do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_AR+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_AR"; then ac_cv_prog_ac_ct_AR="$ac_ct_AR" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_AR="$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_AR=$ac_cv_prog_ac_ct_AR if test -n "$ac_ct_AR"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_AR" >&5 $as_echo "$ac_ct_AR" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$ac_ct_AR" && break done if test "x$ac_ct_AR" = x; then AR="" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac AR=$ac_ct_AR fi fi # Make sure we can run config.sub. $SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 || as_fn_error $? "cannot run $SHELL $ac_aux_dir/config.sub" "$LINENO" 5 { $as_echo "$as_me:${as_lineno-$LINENO}: checking build system type" >&5 $as_echo_n "checking build system type... " >&6; } if ${ac_cv_build+:} false; then : $as_echo_n "(cached) " >&6 else ac_build_alias=$build_alias test "x$ac_build_alias" = x && ac_build_alias=`$SHELL "$ac_aux_dir/config.guess"` test "x$ac_build_alias" = x && as_fn_error $? "cannot guess build type; you must specify one" "$LINENO" 5 ac_cv_build=`$SHELL "$ac_aux_dir/config.sub" $ac_build_alias` || as_fn_error $? "$SHELL $ac_aux_dir/config.sub $ac_build_alias failed" "$LINENO" 5 fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build" >&5 $as_echo "$ac_cv_build" >&6; } case $ac_cv_build in *-*-*) ;; *) as_fn_error $? "invalid value of canonical build" "$LINENO" 5;; esac build=$ac_cv_build ac_save_IFS=$IFS; IFS='-' set x $ac_cv_build shift build_cpu=$1 build_vendor=$2 shift; shift # Remember, the first character of IFS is used to create $*, # except with old shells: build_os=$* IFS=$ac_save_IFS case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking host system type" >&5 $as_echo_n "checking host system type... " >&6; } if ${ac_cv_host+:} false; then : $as_echo_n "(cached) " >&6 else if test "x$host_alias" = x; then ac_cv_host=$ac_cv_build else ac_cv_host=`$SHELL "$ac_aux_dir/config.sub" $host_alias` || as_fn_error $? "$SHELL $ac_aux_dir/config.sub $host_alias failed" "$LINENO" 5 fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_host" >&5 $as_echo "$ac_cv_host" >&6; } case $ac_cv_host in *-*-*) ;; *) as_fn_error $? "invalid value of canonical host" "$LINENO" 5;; esac host=$ac_cv_host ac_save_IFS=$IFS; IFS='-' set x $ac_cv_host shift host_cpu=$1 host_vendor=$2 shift; shift # Remember, the first character of IFS is used to create $*, # except with old shells: host_os=$* IFS=$ac_save_IFS case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac ansi="-std=c99 -pedantic" case "$host_os" in *cygwin*) CPPFLAGS="$CPPFLAGS -D_XOPEN_SOURCE_EXTENDED -D_GNU_SOURCE" ansi="" ;; hpux|*cygwin*) CPPFLAGS="$CPPFLAGS -D_XOPEN_SOURCE_EXTENDED -D_GNU_SOURCE" ;; solaris2*) CPPFLAGS="$CPPFLAGS -D__EXTENSIONS__" $as_echo "#define CONNECT_GETPEERNAME 1" >>confdefs.h ;; darwin*) CCOPTIONS="$CCOPTIONS -no-cpp-precomp -Wno-deprecated-declarations" CPPFLAGS="$CPPFLAGS -D_XOPEN_SOURCE_EXTENDED -D_GNU_SOURCE" mac_os=1 ;; linux*) CPPFLAGS="$CPPFLAGS -D_POSIX_SOURCE -D_BSD_SOURCE -D_DEFAULT_SOURCE -D_XOPEN_SOURCE -D_GNU_SOURCE" ;; esac if test "$GCC" = yes then CCOPTIONS="$CCOPTIONS -Wall -Wsign-compare $ansi -Wno-variadic-macros -MMD -MP" fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C preprocessor" >&5 $as_echo_n "checking how to run the C preprocessor... " >&6; } # On Suns, sometimes $CPP names a directory. if test -n "$CPP" && test -d "$CPP"; then CPP= fi if test -z "$CPP"; then if ${ac_cv_prog_CPP+:} false; then : $as_echo_n "(cached) " >&6 else # Double quotes because CPP needs to be expanded for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp" do ac_preproc_ok=false for ac_c_preproc_warn_flag in '' yes do # Use a header file that comes with gcc, so configuring glibc # with a fresh cross-compiler works. # Prefer to if __STDC__ is defined, since # exists even on freestanding compilers. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifdef __STDC__ # include #else # include #endif Syntax error _ACEOF if ac_fn_c_try_cpp "$LINENO"; then : else # Broken: fails on valid input. continue fi rm -f conftest.err conftest.i conftest.$ac_ext # OK, works on sane cases. Now check whether nonexistent headers # can be detected and how. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if ac_fn_c_try_cpp "$LINENO"; then : # Broken: success on invalid input. continue else # Passes both tests. ac_preproc_ok=: break fi rm -f conftest.err conftest.i conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f conftest.i conftest.err conftest.$ac_ext if $ac_preproc_ok; then : break fi done ac_cv_prog_CPP=$CPP fi CPP=$ac_cv_prog_CPP else ac_cv_prog_CPP=$CPP fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CPP" >&5 $as_echo "$CPP" >&6; } ac_preproc_ok=false for ac_c_preproc_warn_flag in '' yes do # Use a header file that comes with gcc, so configuring glibc # with a fresh cross-compiler works. # Prefer to if __STDC__ is defined, since # exists even on freestanding compilers. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifdef __STDC__ # include #else # include #endif Syntax error _ACEOF if ac_fn_c_try_cpp "$LINENO"; then : else # Broken: fails on valid input. continue fi rm -f conftest.err conftest.i conftest.$ac_ext # OK, works on sane cases. Now check whether nonexistent headers # can be detected and how. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if ac_fn_c_try_cpp "$LINENO"; then : # Broken: success on invalid input. continue else # Passes both tests. ac_preproc_ok=: break fi rm -f conftest.err conftest.i conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f conftest.i conftest.err conftest.$ac_ext if $ac_preproc_ok; then : else { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "C preprocessor \"$CPP\" fails sanity check See \`config.log' for more details" "$LINENO" 5; } fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu { $as_echo "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5 $as_echo_n "checking for grep that handles long lines and -e... " >&6; } if ${ac_cv_path_GREP+:} false; then : $as_echo_n "(cached) " >&6 else if test -z "$GREP"; then ac_path_GREP_found=false # Loop through the user's path and test for each of PROGNAME-LIST as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_prog in grep ggrep; do for ac_exec_ext in '' $ac_executable_extensions; do ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext" as_fn_executable_p "$ac_path_GREP" || continue # Check for GNU ac_path_GREP and select it if it is found. # Check for GNU $ac_path_GREP case `"$ac_path_GREP" --version 2>&1` in *GNU*) ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;; *) ac_count=0 $as_echo_n 0123456789 >"conftest.in" while : do cat "conftest.in" "conftest.in" >"conftest.tmp" mv "conftest.tmp" "conftest.in" cp "conftest.in" "conftest.nl" $as_echo 'GREP' >> "conftest.nl" "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break as_fn_arith $ac_count + 1 && ac_count=$as_val if test $ac_count -gt ${ac_path_GREP_max-0}; then # Best one so far, save it but keep looking for a better one ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_max=$ac_count fi # 10*(2^10) chars as input seems more than enough test $ac_count -gt 10 && break done rm -f conftest.in conftest.tmp conftest.nl conftest.out;; esac $ac_path_GREP_found && break 3 done done done IFS=$as_save_IFS if test -z "$ac_cv_path_GREP"; then as_fn_error $? "no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 fi else ac_cv_path_GREP=$GREP fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP" >&5 $as_echo "$ac_cv_path_GREP" >&6; } GREP="$ac_cv_path_GREP" { $as_echo "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5 $as_echo_n "checking for egrep... " >&6; } if ${ac_cv_path_EGREP+:} false; then : $as_echo_n "(cached) " >&6 else if echo a | $GREP -E '(a|b)' >/dev/null 2>&1 then ac_cv_path_EGREP="$GREP -E" else if test -z "$EGREP"; then ac_path_EGREP_found=false # Loop through the user's path and test for each of PROGNAME-LIST as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_prog in egrep; do for ac_exec_ext in '' $ac_executable_extensions; do ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext" as_fn_executable_p "$ac_path_EGREP" || continue # Check for GNU ac_path_EGREP and select it if it is found. # Check for GNU $ac_path_EGREP case `"$ac_path_EGREP" --version 2>&1` in *GNU*) ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;; *) ac_count=0 $as_echo_n 0123456789 >"conftest.in" while : do cat "conftest.in" "conftest.in" >"conftest.tmp" mv "conftest.tmp" "conftest.in" cp "conftest.in" "conftest.nl" $as_echo 'EGREP' >> "conftest.nl" "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break as_fn_arith $ac_count + 1 && ac_count=$as_val if test $ac_count -gt ${ac_path_EGREP_max-0}; then # Best one so far, save it but keep looking for a better one ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_max=$ac_count fi # 10*(2^10) chars as input seems more than enough test $ac_count -gt 10 && break done rm -f conftest.in conftest.tmp conftest.nl conftest.out;; esac $ac_path_EGREP_found && break 3 done done done IFS=$as_save_IFS if test -z "$ac_cv_path_EGREP"; then as_fn_error $? "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 fi else ac_cv_path_EGREP=$EGREP fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5 $as_echo "$ac_cv_path_EGREP" >&6; } EGREP="$ac_cv_path_EGREP" { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5 $as_echo_n "checking for ANSI C header files... " >&6; } if ${ac_cv_header_stdc+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include #include #include int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_header_stdc=yes else ac_cv_header_stdc=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext if test $ac_cv_header_stdc = yes; then # SunOS 4.x string.h does not declare mem*, contrary to ANSI. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "memchr" >/dev/null 2>&1; then : else ac_cv_header_stdc=no fi rm -f conftest* fi if test $ac_cv_header_stdc = yes; then # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "free" >/dev/null 2>&1; then : else ac_cv_header_stdc=no fi rm -f conftest* fi if test $ac_cv_header_stdc = yes; then # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. if test "$cross_compiling" = yes; then : : else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include #if ((' ' & 0x0FF) == 0x020) # define ISLOWER(c) ('a' <= (c) && (c) <= 'z') # define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) #else # define ISLOWER(c) \ (('a' <= (c) && (c) <= 'i') \ || ('j' <= (c) && (c) <= 'r') \ || ('s' <= (c) && (c) <= 'z')) # define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) #endif #define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) int main () { int i; for (i = 0; i < 256; i++) if (XOR (islower (i), ISLOWER (i)) || toupper (i) != TOUPPER (i)) return 2; return 0; } _ACEOF if ac_fn_c_try_run "$LINENO"; then : else ac_cv_header_stdc=no fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdc" >&5 $as_echo "$ac_cv_header_stdc" >&6; } if test $ac_cv_header_stdc = yes; then $as_echo "#define STDC_HEADERS 1" >>confdefs.h fi # On IRIX 5.3, sys/types and inttypes.h are conflicting. for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \ inttypes.h stdint.h unistd.h do : as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default " if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : cat >>confdefs.h <<_ACEOF #define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF fi done for ac_header in sys/select.h do : ac_fn_c_check_header_mongrel "$LINENO" "sys/select.h" "ac_cv_header_sys_select_h" "$ac_includes_default" if test "x$ac_cv_header_sys_select_h" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_SYS_SELECT_H 1 _ACEOF fi done for ac_header in readline/history.h do : ac_fn_c_check_header_mongrel "$LINENO" "readline/history.h" "ac_cv_header_readline_history_h" "$ac_includes_default" if test "x$ac_cv_header_readline_history_h" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_READLINE_HISTORY_H 1 _ACEOF fi done for ac_header in pty.h do : ac_fn_c_check_header_mongrel "$LINENO" "pty.h" "ac_cv_header_pty_h" "$ac_includes_default" if test "x$ac_cv_header_pty_h" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_PTY_H 1 _ACEOF fi done for ac_header in libutil.h do : ac_fn_c_check_header_mongrel "$LINENO" "libutil.h" "ac_cv_header_libutil_h" "$ac_includes_default" if test "x$ac_cv_header_libutil_h" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_LIBUTIL_H 1 _ACEOF fi done for ac_header in util.h do : ac_fn_c_check_header_mongrel "$LINENO" "util.h" "ac_cv_header_util_h" "$ac_includes_default" if test "x$ac_cv_header_util_h" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_UTIL_H 1 _ACEOF fi done for ac_header in getopt.h do : ac_fn_c_check_header_mongrel "$LINENO" "getopt.h" "ac_cv_header_getopt_h" "$ac_includes_default" if test "x$ac_cv_header_getopt_h" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_GETOPT_H 1 _ACEOF fi done for ac_header in malloc.h do : ac_fn_c_check_header_mongrel "$LINENO" "malloc.h" "ac_cv_header_malloc_h" "$ac_includes_default" if test "x$ac_cv_header_malloc_h" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_MALLOC_H 1 _ACEOF fi done if test ! "$enable_tls" = no then use_openssl=yes else use_openssl=no fi if test ! -z "$mac_os" -a "$enable_stransport" != no then use_openssl=no fi # Check whether --with-ssl was given. if test "${with_ssl+set}" = set; then : withval=$with_ssl; fi if test "$use_openssl" != no then orig_CPPFLAGS="$CPPFLAGS" unset any for dir in "$with_openssl" /usr/local /usr/local/ssl /usr/lib/ssl /usr/pkg/ssl /usr/ssl /var/ssl /opt/ssl do header_fail=0 if test -n "$dir" -a ! -d "$dir/include" then header_fail=1 continue fi if test -n "$any" then { $as_echo "$as_me:${as_lineno-$LINENO}: retrying with -I$dir/include" >&5 $as_echo "$as_me: retrying with -I$dir/include" >&6;} fi if test -n "$dir" then CPPFLAGS="$orig_CPPFLAGS -I$dir/include" fi for ac_header in openssl/ssl.h do : ac_fn_c_check_header_mongrel "$LINENO" "openssl/ssl.h" "ac_cv_header_openssl_ssl_h" "$ac_includes_default" if test "x$ac_cv_header_openssl_ssl_h" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_OPENSSL_SSL_H 1 _ACEOF else header_fail=1 fi done if test "$header_fail" -eq 0 then break fi unset `echo ac_cv_header_openssl/ssl_h | $as_tr_sh` CPPFLAGS="$orig_CPPFLAGS" any=1 done if test $header_fail -eq 1 then { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Disabling OpenSSL -- missing headers" >&5 $as_echo "$as_me: WARNING: Disabling OpenSSL -- missing headers" >&2;} use_openssl="no" enable_tls="no" unset HAVE_LIBSSL fi fi ac_fn_c_check_decl "$LINENO" "__STDC_ISO_10646__" "ac_cv_have_decl___STDC_ISO_10646__" "$ac_includes_default" if test "x$ac_cv_have_decl___STDC_ISO_10646__" = xyes; then : ac_have_decl=1 else ac_have_decl=0 fi cat >>confdefs.h <<_ACEOF #define HAVE_DECL___STDC_ISO_10646__ $ac_have_decl _ACEOF if test $ac_have_decl = 1; then : unset unkw else unkw=1 fi # Check whether --with-iconv was given. if test "${with_iconv+set}" = set; then : withval=$with_iconv; fi case "$with_iconv" in no|"") ;; yes|*) $as_echo "#define USE_ICONV 1" >>confdefs.h unkw=1 ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing forkpty" >&5 $as_echo_n "checking for library containing forkpty... " >&6; } if ${ac_cv_search_forkpty+:} false; then : $as_echo_n "(cached) " >&6 else ac_func_search_save_LIBS=$LIBS cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char forkpty (); int main () { return forkpty (); ; return 0; } _ACEOF for ac_lib in '' util; do if test -z "$ac_lib"; then ac_res="none required" else ac_res=-l$ac_lib LIBS="-l$ac_lib $ac_func_search_save_LIBS" fi if ac_fn_c_try_link "$LINENO"; then : ac_cv_search_forkpty=$ac_res fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext if ${ac_cv_search_forkpty+:} false; then : break fi done if ${ac_cv_search_forkpty+:} false; then : else ac_cv_search_forkpty=no fi rm conftest.$ac_ext LIBS=$ac_func_search_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_forkpty" >&5 $as_echo "$ac_cv_search_forkpty" >&6; } ac_res=$ac_cv_search_forkpty if test "$ac_res" != no; then : test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" fi for ac_func in forkpty do : ac_fn_c_check_func "$LINENO" "forkpty" "ac_cv_func_forkpty" if test "x$ac_cv_func_forkpty" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_FORKPTY 1 _ACEOF fi done { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing gethostbyname" >&5 $as_echo_n "checking for library containing gethostbyname... " >&6; } if ${ac_cv_search_gethostbyname+:} false; then : $as_echo_n "(cached) " >&6 else ac_func_search_save_LIBS=$LIBS cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char gethostbyname (); int main () { return gethostbyname (); ; return 0; } _ACEOF for ac_lib in '' nsl; do if test -z "$ac_lib"; then ac_res="none required" else ac_res=-l$ac_lib LIBS="-l$ac_lib $ac_func_search_save_LIBS" fi if ac_fn_c_try_link "$LINENO"; then : ac_cv_search_gethostbyname=$ac_res fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext if ${ac_cv_search_gethostbyname+:} false; then : break fi done if ${ac_cv_search_gethostbyname+:} false; then : else ac_cv_search_gethostbyname=no fi rm conftest.$ac_ext LIBS=$ac_func_search_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_gethostbyname" >&5 $as_echo "$ac_cv_search_gethostbyname" >&6; } ac_res=$ac_cv_search_gethostbyname if test "$ac_res" != no; then : test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing socket" >&5 $as_echo_n "checking for library containing socket... " >&6; } if ${ac_cv_search_socket+:} false; then : $as_echo_n "(cached) " >&6 else ac_func_search_save_LIBS=$LIBS cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char socket (); int main () { return socket (); ; return 0; } _ACEOF for ac_lib in '' socket; do if test -z "$ac_lib"; then ac_res="none required" else ac_res=-l$ac_lib LIBS="-l$ac_lib $ac_func_search_save_LIBS" fi if ac_fn_c_try_link "$LINENO"; then : ac_cv_search_socket=$ac_res fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext if ${ac_cv_search_socket+:} false; then : break fi done if ${ac_cv_search_socket+:} false; then : else ac_cv_search_socket=no fi rm conftest.$ac_ext LIBS=$ac_func_search_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_socket" >&5 $as_echo "$ac_cv_search_socket" >&6; } ac_res=$ac_cv_search_socket if test "$ac_res" != no; then : test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" fi for ac_header in iconv.h do : ac_fn_c_check_header_mongrel "$LINENO" "iconv.h" "ac_cv_header_iconv_h" "$ac_includes_default" if test "x$ac_cv_header_iconv_h" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_ICONV_H 1 _ACEOF fi done { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing libiconv" >&5 $as_echo_n "checking for library containing libiconv... " >&6; } if ${ac_cv_search_libiconv+:} false; then : $as_echo_n "(cached) " >&6 else ac_func_search_save_LIBS=$LIBS cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char libiconv (); int main () { return libiconv (); ; return 0; } _ACEOF for ac_lib in '' iconv; do if test -z "$ac_lib"; then ac_res="none required" else ac_res=-l$ac_lib LIBS="-l$ac_lib $ac_func_search_save_LIBS" fi if ac_fn_c_try_link "$LINENO"; then : ac_cv_search_libiconv=$ac_res fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext if ${ac_cv_search_libiconv+:} false; then : break fi done if ${ac_cv_search_libiconv+:} false; then : else ac_cv_search_libiconv=no fi rm conftest.$ac_ext LIBS=$ac_func_search_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_libiconv" >&5 $as_echo "$ac_cv_search_libiconv" >&6; } ac_res=$ac_cv_search_libiconv if test "$ac_res" != no; then : test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" else { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing iconv" >&5 $as_echo_n "checking for library containing iconv... " >&6; } if ${ac_cv_search_iconv+:} false; then : $as_echo_n "(cached) " >&6 else ac_func_search_save_LIBS=$LIBS cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char iconv (); int main () { return iconv (); ; return 0; } _ACEOF for ac_lib in '' iconv; do if test -z "$ac_lib"; then ac_res="none required" else ac_res=-l$ac_lib LIBS="-l$ac_lib $ac_func_search_save_LIBS" fi if ac_fn_c_try_link "$LINENO"; then : ac_cv_search_iconv=$ac_res fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext if ${ac_cv_search_iconv+:} false; then : break fi done if ${ac_cv_search_iconv+:} false; then : else ac_cv_search_iconv=no fi rm conftest.$ac_ext LIBS=$ac_func_search_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_iconv" >&5 $as_echo "$ac_cv_search_iconv" >&6; } ac_res=$ac_cv_search_iconv if test "$ac_res" != no; then : test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" else if test "$unkw"; then as_fn_error $? "No iconv library function" "$LINENO" 5; fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing getaddrinfo_a" >&5 $as_echo_n "checking for library containing getaddrinfo_a... " >&6; } if ${ac_cv_search_getaddrinfo_a+:} false; then : $as_echo_n "(cached) " >&6 else ac_func_search_save_LIBS=$LIBS cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char getaddrinfo_a (); int main () { return getaddrinfo_a (); ; return 0; } _ACEOF for ac_lib in '' anl; do if test -z "$ac_lib"; then ac_res="none required" else ac_res=-l$ac_lib LIBS="-l$ac_lib $ac_func_search_save_LIBS" fi if ac_fn_c_try_link "$LINENO"; then : ac_cv_search_getaddrinfo_a=$ac_res fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext if ${ac_cv_search_getaddrinfo_a+:} false; then : break fi done if ${ac_cv_search_getaddrinfo_a+:} false; then : else ac_cv_search_getaddrinfo_a=no fi rm conftest.$ac_ext LIBS=$ac_func_search_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_getaddrinfo_a" >&5 $as_echo "$ac_cv_search_getaddrinfo_a" >&6; } ac_res=$ac_cv_search_getaddrinfo_a if test "$ac_res" != no; then : test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" $as_echo "#define HAVE_GETADDRINFO_A 1" >>confdefs.h fi if echo "$LIBS" | grep -e '-liconv\>' >/dev/null then ICONV_LIBS="-liconv" fi for ac_func in vasprintf do : ac_fn_c_check_func "$LINENO" "vasprintf" "ac_cv_func_vasprintf" if test "x$ac_cv_func_vasprintf" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_VASPRINTF 1 _ACEOF fi done for ac_func in malloc_usable_size do : ac_fn_c_check_func "$LINENO" "malloc_usable_size" "ac_cv_func_malloc_usable_size" if test "x$ac_cv_func_malloc_usable_size" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_MALLOC_USABLE_SIZE 1 _ACEOF fi done { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _LARGEFILE_SOURCE value needed for large files" >&5 $as_echo_n "checking for _LARGEFILE_SOURCE value needed for large files... " >&6; } if ${ac_cv_sys_largefile_source+:} false; then : $as_echo_n "(cached) " >&6 else while :; do cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include /* for off_t */ #include int main () { int (*fp) (FILE *, off_t, int) = fseeko; return fseeko (stdin, 0, 0) && fp (stdin, 0, 0); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_sys_largefile_source=no; break fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #define _LARGEFILE_SOURCE 1 #include /* for off_t */ #include int main () { int (*fp) (FILE *, off_t, int) = fseeko; return fseeko (stdin, 0, 0) && fp (stdin, 0, 0); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_sys_largefile_source=1; break fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext ac_cv_sys_largefile_source=unknown break done fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_largefile_source" >&5 $as_echo "$ac_cv_sys_largefile_source" >&6; } case $ac_cv_sys_largefile_source in #( no | unknown) ;; *) cat >>confdefs.h <<_ACEOF #define _LARGEFILE_SOURCE $ac_cv_sys_largefile_source _ACEOF ;; esac rm -rf conftest* # We used to try defining _XOPEN_SOURCE=500 too, to work around a bug # in glibc 2.1.3, but that breaks too many other things. # If you want fseeko and ftello with glibc, upgrade to a fixed glibc. if test $ac_cv_sys_largefile_source != unknown; then $as_echo "#define HAVE_FSEEKO 1" >>confdefs.h fi if test "$use_openssl" != no then orig_LDFLAGS="$LDFLAGS" orig_LIBS="$LIBS" unset any if test -n "$with_openssl" then ssl_libs="$with_openssl/lib $with_openssl/ssl/lib" else ssl_libs="nil /usr/local/ssl/lib /usr/pkg/ssl/lib /usr/ssl/lib /var/ssl/lib /opt/ssl/lib" fi for dir in $ssl_libs do lib_fail=0 if test "$dir" = nil then dir="" fi if test -n "$dir" -a ! -d "$dir" then lib_fail=1 continue fi if test -n "$any" then { $as_echo "$as_me:${as_lineno-$LINENO}: retrying with -L$dir" >&5 $as_echo "$as_me: retrying with -L$dir" >&6;} fi if test -n "$dir" then LDFLAGS="$orig_LDFLAGS -L$dir" TLS_LDFLAGS=-L$dir fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for CRYPTO_malloc in -lcrypto" >&5 $as_echo_n "checking for CRYPTO_malloc in -lcrypto... " >&6; } if ${ac_cv_lib_crypto_CRYPTO_malloc+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lcrypto $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char CRYPTO_malloc (); int main () { return CRYPTO_malloc (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_crypto_CRYPTO_malloc=yes else ac_cv_lib_crypto_CRYPTO_malloc=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_crypto_CRYPTO_malloc" >&5 $as_echo "$ac_cv_lib_crypto_CRYPTO_malloc" >&6; } if test "x$ac_cv_lib_crypto_CRYPTO_malloc" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_LIBCRYPTO 1 _ACEOF LIBS="-lcrypto $LIBS" else lib_fail=1 fi if test "$lib_fail" -eq 0 then { $as_echo "$as_me:${as_lineno-$LINENO}: checking for SSL_new in -lssl" >&5 $as_echo_n "checking for SSL_new in -lssl... " >&6; } if ${ac_cv_lib_ssl_SSL_new+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lssl $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char SSL_new (); int main () { return SSL_new (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_ssl_SSL_new=yes else ac_cv_lib_ssl_SSL_new=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_ssl_SSL_new" >&5 $as_echo "$ac_cv_lib_ssl_SSL_new" >&6; } if test "x$ac_cv_lib_ssl_SSL_new" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_LIBSSL 1 _ACEOF LIBS="-lssl $LIBS" else lib_fail=1 fi fi if test "$lib_fail" -eq 0 then break fi unset `echo ac_cv_lib_crypto_CRYPTO_malloc | $as_tr_sh` unset `echo ac_cv_lib_ssl_SSL_new | $as_tr_sh` LDFLAGS="$orig_LDFLAGS" unset TLS_LDFLAGS any=1 done if test $lib_fail -eq 1 then { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Disabling OpenSSL -- missing libs" >&5 $as_echo "$as_me: WARNING: Disabling OpenSSL -- missing libs" >&2;} use_openssl="no" enable_tls="no" else TLS_LIBS="-lssl -lcrypto" fi fi if echo "$LIBS" | grep -e '-lanl\>' >/dev/null then GAI_LIBS="-lanl" fi LIBX3270DIR='${sysconfdir}/x3270' # Check whether --enable-dbcs was given. if test "${enable_dbcs+set}" = set; then : enableval=$enable_dbcs; fi case "$enable_dbcs" in no) ;; *) $as_echo "#define X3270_DBCS 1" >>confdefs.h ;; esac # Check whether --enable-local_process was given. if test "${enable_local_process+set}" = set; then : enableval=$enable_local_process; fi case "$enable_local_process" in ""|yes) $as_echo "#define X3270_LOCAL_PROCESS 1" >>confdefs.h ;; esac # Check whether --enable-tls was given. if test "${enable_tls+set}" = set; then : enableval=$enable_tls; fi # Check whether --enable-ipv6 was given. if test "${enable_ipv6+set}" = set; then : enableval=$enable_ipv6; fi case "$enable_ipv6" in ""|yes) $as_echo "#define X3270_IPV6 1" >>confdefs.h ;; esac # Check whether --enable-stransport was given. if test "${enable_stransport+set}" = set; then : enableval=$enable_stransport; fi if test ! -z "$mac_os" -a "$enable_stransport" = no -a "use_openssl" = no then enable_tls=no fi if test -z "$mac_os" -a ! -z "$enable_stransport" then as_fn_error $? "--enable-stransport/--disable-stransport is only for MacOS" "$LINENO" 5; fi # Check whether --enable-mock_tls was given. if test "${enable_mock_tls+set}" = set; then : enableval=$enable_mock_tls; fi if test "$enable_mock_tls" = yes then use_openssl=no fi if test "$enable_mock_tls" = yes then TLS_MODULES=sio_mock.o elif test "$enable_tls" = no then TLS_MODULES="" elif test ! -z "$mac_os" -a "$enable_stransport" != no then TLS_MODULES=sio_secure_transport.o TLS_LIBS="-framework CoreFoundation -framework Security" else TLS_MODULES=sio_openssl.o fi ac_config_headers="$ac_config_headers include/unix/conf.h" ac_config_files="$ac_config_files 3270/Makefile 3270/Makefile.obj 3270i/Makefile 3270i/Makefile.obj 32xx/Makefile 32xx/Makefile.obj 3270stubs/Makefile 3270stubs/Makefile.obj 32xx/32xx-deplibs.mk" cat >confcache <<\_ACEOF # This file is a shell script that caches the results of configure # tests run on this system so they can be shared between configure # scripts and configure runs, see configure's option --config-cache. # It is not useful on other systems. If it contains results you don't # want to keep, you may remove or edit it. # # config.status only pays attention to the cache file if you give it # the --recheck option to rerun configure. # # `ac_cv_env_foo' variables (set or unset) will be overridden when # loading this file, other *unset* `ac_cv_foo' will be assigned the # following values. _ACEOF # The following way of writing the cache mishandles newlines in values, # but we know of no workaround that is simple, portable, and efficient. # So, we kill variables containing newlines. # Ultrix sh set writes to stderr and can't be redirected directly, # and sets the high bit in the cache file unless we assign to the vars. ( for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do eval ac_val=\$$ac_var case $ac_val in #( *${as_nl}*) case $ac_var in #( *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 $as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; esac case $ac_var in #( _ | IFS | as_nl) ;; #( BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( *) { eval $ac_var=; unset $ac_var;} ;; esac ;; esac done (set) 2>&1 | case $as_nl`(ac_space=' '; set) 2>&1` in #( *${as_nl}ac_space=\ *) # `set' does not quote correctly, so add quotes: double-quote # substitution turns \\\\ into \\, and sed turns \\ into \. sed -n \ "s/'/'\\\\''/g; s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" ;; #( *) # `set' quotes correctly as required by POSIX, so do not add quotes. sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" ;; esac | sort ) | sed ' /^ac_cv_env_/b end t clear :clear s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/ t end s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ :end' >>confcache if diff "$cache_file" confcache >/dev/null 2>&1; then :; else if test -w "$cache_file"; then if test "x$cache_file" != "x/dev/null"; then { $as_echo "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5 $as_echo "$as_me: updating cache $cache_file" >&6;} if test ! -f "$cache_file" || test -h "$cache_file"; then cat confcache >"$cache_file" else case $cache_file in #( */* | ?:*) mv -f confcache "$cache_file"$$ && mv -f "$cache_file"$$ "$cache_file" ;; #( *) mv -f confcache "$cache_file" ;; esac fi fi else { $as_echo "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5 $as_echo "$as_me: not updating unwritable cache $cache_file" >&6;} fi fi rm -f confcache test "x$prefix" = xNONE && prefix=$ac_default_prefix # Let make expand exec_prefix. test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' DEFS=-DHAVE_CONFIG_H ac_libobjs= ac_ltlibobjs= U= for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue # 1. Remove the extension, and $U if already installed. ac_script='s/\$U\././;s/\.o$//;s/\.obj$//' ac_i=`$as_echo "$ac_i" | sed "$ac_script"` # 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR # will be set to the directory where LIBOBJS objects are built. as_fn_append ac_libobjs " \${LIBOBJDIR}$ac_i\$U.$ac_objext" as_fn_append ac_ltlibobjs " \${LIBOBJDIR}$ac_i"'$U.lo' done LIBOBJS=$ac_libobjs LTLIBOBJS=$ac_ltlibobjs : "${CONFIG_STATUS=./config.status}" ac_write_fail=0 ac_clean_files_save=$ac_clean_files ac_clean_files="$ac_clean_files $CONFIG_STATUS" { $as_echo "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5 $as_echo "$as_me: creating $CONFIG_STATUS" >&6;} as_write_fail=0 cat >$CONFIG_STATUS <<_ASEOF || as_write_fail=1 #! $SHELL # Generated by $as_me. # Run this file to recreate the current configuration. # Compiler output produced by configure, useful for debugging # configure, is in config.log if it exists. debug=false ac_cs_recheck=false ac_cs_silent=false SHELL=\${CONFIG_SHELL-$SHELL} export SHELL _ASEOF cat >>$CONFIG_STATUS <<\_ASEOF || as_write_fail=1 ## -------------------- ## ## M4sh Initialization. ## ## -------------------- ## # Be more Bourne compatible DUALCASE=1; export DUALCASE # for MKS sh if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST else case `(set -o) 2>/dev/null` in #( *posix*) : set -o posix ;; #( *) : ;; esac fi as_nl=' ' export as_nl # Printing a long string crashes Solaris 7 /usr/bin/printf. as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo # Prefer a ksh shell builtin over an external printf program on Solaris, # but without wasting forks for bash or zsh. if test -z "$BASH_VERSION$ZSH_VERSION" \ && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then as_echo='print -r --' as_echo_n='print -rn --' elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then as_echo='printf %s\n' as_echo_n='printf %s' else if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' as_echo_n='/usr/ucb/echo -n' else as_echo_body='eval expr "X$1" : "X\\(.*\\)"' as_echo_n_body='eval arg=$1; case $arg in #( *"$as_nl"*) expr "X$arg" : "X\\(.*\\)$as_nl"; arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; esac; expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" ' export as_echo_n_body as_echo_n='sh -c $as_echo_n_body as_echo' fi export as_echo_body as_echo='sh -c $as_echo_body as_echo' fi # The user is always right. if test "${PATH_SEPARATOR+set}" != set; then PATH_SEPARATOR=: (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || PATH_SEPARATOR=';' } fi # IFS # We need space, tab and new line, in precisely that order. Quoting is # there to prevent editors from complaining about space-tab. # (If _AS_PATH_WALK were called with IFS unset, it would disable word # splitting by setting IFS to empty value.) IFS=" "" $as_nl" # Find who we are. Look in the path if we contain no directory separator. as_myself= case $0 in #(( *[\\/]* ) as_myself=$0 ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break done IFS=$as_save_IFS ;; esac # We did not find ourselves, most probably we were run as `sh COMMAND' # in which case we are not to be found in the path. if test "x$as_myself" = x; then as_myself=$0 fi if test ! -f "$as_myself"; then $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 exit 1 fi # Unset variables that we do not need and which cause bugs (e.g. in # pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" # suppresses any "Segmentation fault" message there. '((' could # trigger a bug in pdksh 5.2.14. for as_var in BASH_ENV ENV MAIL MAILPATH do eval test x\${$as_var+set} = xset \ && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : done PS1='$ ' PS2='> ' PS4='+ ' # NLS nuisances. LC_ALL=C export LC_ALL LANGUAGE=C export LANGUAGE # CDPATH. (unset CDPATH) >/dev/null 2>&1 && unset CDPATH # as_fn_error STATUS ERROR [LINENO LOG_FD] # ---------------------------------------- # Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are # provided, also output the error to LOG_FD, referencing LINENO. Then exit the # script with STATUS, using 1 if that was 0. as_fn_error () { as_status=$1; test $as_status -eq 0 && as_status=1 if test "$4"; then as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 fi $as_echo "$as_me: error: $2" >&2 as_fn_exit $as_status } # as_fn_error # as_fn_set_status STATUS # ----------------------- # Set $? to STATUS, without forking. as_fn_set_status () { return $1 } # as_fn_set_status # as_fn_exit STATUS # ----------------- # Exit the shell with STATUS, even in a "trap 0" or "set -e" context. as_fn_exit () { set +e as_fn_set_status $1 exit $1 } # as_fn_exit # as_fn_unset VAR # --------------- # Portably unset VAR. as_fn_unset () { { eval $1=; unset $1;} } as_unset=as_fn_unset # as_fn_append VAR VALUE # ---------------------- # Append the text in VALUE to the end of the definition contained in VAR. Take # advantage of any shell optimizations that allow amortized linear growth over # repeated appends, instead of the typical quadratic growth present in naive # implementations. if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : eval 'as_fn_append () { eval $1+=\$2 }' else as_fn_append () { eval $1=\$$1\$2 } fi # as_fn_append # as_fn_arith ARG... # ------------------ # Perform arithmetic evaluation on the ARGs, and store the result in the # global $as_val. Take advantage of shells that can avoid forks. The arguments # must be portable across $(()) and expr. if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : eval 'as_fn_arith () { as_val=$(( $* )) }' else as_fn_arith () { as_val=`expr "$@" || test $? -eq 1` } fi # as_fn_arith if expr a : '\(a\)' >/dev/null 2>&1 && test "X`expr 00001 : '.*\(...\)'`" = X001; then as_expr=expr else as_expr=false fi if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then as_basename=basename else as_basename=false fi if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then as_dirname=dirname else as_dirname=false fi as_me=`$as_basename -- "$0" || $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ X"$0" : 'X\(//\)$' \| \ X"$0" : 'X\(/\)' \| . 2>/dev/null || $as_echo X/"$0" | sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/ q } /^X\/\(\/\/\)$/{ s//\1/ q } /^X\/\(\/\).*/{ s//\1/ q } s/.*/./; q'` # Avoid depending upon Character Ranges. as_cr_letters='abcdefghijklmnopqrstuvwxyz' as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' as_cr_Letters=$as_cr_letters$as_cr_LETTERS as_cr_digits='0123456789' as_cr_alnum=$as_cr_Letters$as_cr_digits ECHO_C= ECHO_N= ECHO_T= case `echo -n x` in #((((( -n*) case `echo 'xy\c'` in *c*) ECHO_T=' ';; # ECHO_T is single tab character. xy) ECHO_C='\c';; *) echo `echo ksh88 bug on AIX 6.1` > /dev/null ECHO_T=' ';; esac;; *) ECHO_N='-n';; esac rm -f conf$$ conf$$.exe conf$$.file if test -d conf$$.dir; then rm -f conf$$.dir/conf$$.file else rm -f conf$$.dir mkdir conf$$.dir 2>/dev/null fi if (echo >conf$$.file) 2>/dev/null; then if ln -s conf$$.file conf$$ 2>/dev/null; then as_ln_s='ln -s' # ... but there are two gotchas: # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. # In both cases, we have to default to `cp -pR'. ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || as_ln_s='cp -pR' elif ln conf$$.file conf$$ 2>/dev/null; then as_ln_s=ln else as_ln_s='cp -pR' fi else as_ln_s='cp -pR' fi rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file rmdir conf$$.dir 2>/dev/null # as_fn_mkdir_p # ------------- # Create "$as_dir" as a directory, including parents if necessary. as_fn_mkdir_p () { case $as_dir in #( -*) as_dir=./$as_dir;; esac test -d "$as_dir" || eval $as_mkdir_p || { as_dirs= while :; do case $as_dir in #( *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( *) as_qdir=$as_dir;; esac as_dirs="'$as_qdir' $as_dirs" as_dir=`$as_dirname -- "$as_dir" || $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_dir" : 'X\(//\)[^/]' \| \ X"$as_dir" : 'X\(//\)$' \| \ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$as_dir" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` test -d "$as_dir" && break done test -z "$as_dirs" || eval "mkdir $as_dirs" } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" } # as_fn_mkdir_p if mkdir -p . 2>/dev/null; then as_mkdir_p='mkdir -p "$as_dir"' else test -d ./-p && rmdir ./-p as_mkdir_p=false fi # as_fn_executable_p FILE # ----------------------- # Test if FILE is an executable regular file. as_fn_executable_p () { test -f "$1" && test -x "$1" } # as_fn_executable_p as_test_x='test -x' as_executable_p=as_fn_executable_p # Sed expression to map a string onto a valid CPP name. as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" # Sed expression to map a string onto a valid variable name. as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" exec 6>&1 ## ----------------------------------- ## ## Main body of $CONFIG_STATUS script. ## ## ----------------------------------- ## _ASEOF test $as_write_fail = 0 && chmod +x $CONFIG_STATUS || ac_write_fail=1 cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # Save the log message, to keep $0 and so on meaningful, and to # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" This file was extended by suite3270-lib $as_me 4.0, which was generated by GNU Autoconf 2.69. Invocation command line was CONFIG_FILES = $CONFIG_FILES CONFIG_HEADERS = $CONFIG_HEADERS CONFIG_LINKS = $CONFIG_LINKS CONFIG_COMMANDS = $CONFIG_COMMANDS $ $0 $@ on `(hostname || uname -n) 2>/dev/null | sed 1q` " _ACEOF case $ac_config_files in *" "*) set x $ac_config_files; shift; ac_config_files=$*;; esac case $ac_config_headers in *" "*) set x $ac_config_headers; shift; ac_config_headers=$*;; esac cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 # Files that config.status was made for. config_files="$ac_config_files" config_headers="$ac_config_headers" _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 ac_cs_usage="\ \`$as_me' instantiates files and other configuration actions from templates according to the current configuration. Unless the files and actions are specified as TAGs, all are instantiated by default. Usage: $0 [OPTION]... [TAG]... -h, --help print this help, then exit -V, --version print version number and configuration settings, then exit --config print configuration, then exit -q, --quiet, --silent do not print progress messages -d, --debug don't remove temporary files --recheck update $as_me by reconfiguring in the same conditions --file=FILE[:TEMPLATE] instantiate the configuration file FILE --header=FILE[:TEMPLATE] instantiate the configuration header FILE Configuration files: $config_files Configuration headers: $config_headers Report bugs to the package provider." _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" ac_cs_version="\\ suite3270-lib config.status 4.0 configured by $0, generated by GNU Autoconf 2.69, with options \\"\$ac_cs_config\\" Copyright (C) 2012 Free Software Foundation, Inc. This config.status script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it." ac_pwd='$ac_pwd' srcdir='$srcdir' INSTALL='$INSTALL' test -n "\$AWK" || AWK=awk _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # The default lists apply if the user does not specify any file. ac_need_defaults=: while test $# != 0 do case $1 in --*=?*) ac_option=`expr "X$1" : 'X\([^=]*\)='` ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'` ac_shift=: ;; --*=) ac_option=`expr "X$1" : 'X\([^=]*\)='` ac_optarg= ac_shift=: ;; *) ac_option=$1 ac_optarg=$2 ac_shift=shift ;; esac case $ac_option in # Handling of the options. -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) ac_cs_recheck=: ;; --version | --versio | --versi | --vers | --ver | --ve | --v | -V ) $as_echo "$ac_cs_version"; exit ;; --config | --confi | --conf | --con | --co | --c ) $as_echo "$ac_cs_config"; exit ;; --debug | --debu | --deb | --de | --d | -d ) debug=: ;; --file | --fil | --fi | --f ) $ac_shift case $ac_optarg in *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; '') as_fn_error $? "missing file argument" ;; esac as_fn_append CONFIG_FILES " '$ac_optarg'" ac_need_defaults=false;; --header | --heade | --head | --hea ) $ac_shift case $ac_optarg in *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; esac as_fn_append CONFIG_HEADERS " '$ac_optarg'" ac_need_defaults=false;; --he | --h) # Conflict between --help and --header as_fn_error $? "ambiguous option: \`$1' Try \`$0 --help' for more information.";; --help | --hel | -h ) $as_echo "$ac_cs_usage"; exit ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil | --si | --s) ac_cs_silent=: ;; # This is an error. -*) as_fn_error $? "unrecognized option: \`$1' Try \`$0 --help' for more information." ;; *) as_fn_append ac_config_targets " $1" ac_need_defaults=false ;; esac shift done ac_configure_extra_args= if $ac_cs_silent; then exec 6>/dev/null ac_configure_extra_args="$ac_configure_extra_args --silent" fi _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 if \$ac_cs_recheck; then set X $SHELL '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion shift \$as_echo "running CONFIG_SHELL=$SHELL \$*" >&6 CONFIG_SHELL='$SHELL' export CONFIG_SHELL exec "\$@" fi _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 exec 5>>config.log { echo sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX ## Running $as_me. ## _ASBOX $as_echo "$ac_log" } >&5 _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # Handling of arguments. for ac_config_target in $ac_config_targets do case $ac_config_target in "include/unix/conf.h") CONFIG_HEADERS="$CONFIG_HEADERS include/unix/conf.h" ;; "3270/Makefile") CONFIG_FILES="$CONFIG_FILES 3270/Makefile" ;; "3270/Makefile.obj") CONFIG_FILES="$CONFIG_FILES 3270/Makefile.obj" ;; "3270i/Makefile") CONFIG_FILES="$CONFIG_FILES 3270i/Makefile" ;; "3270i/Makefile.obj") CONFIG_FILES="$CONFIG_FILES 3270i/Makefile.obj" ;; "32xx/Makefile") CONFIG_FILES="$CONFIG_FILES 32xx/Makefile" ;; "32xx/Makefile.obj") CONFIG_FILES="$CONFIG_FILES 32xx/Makefile.obj" ;; "3270stubs/Makefile") CONFIG_FILES="$CONFIG_FILES 3270stubs/Makefile" ;; "3270stubs/Makefile.obj") CONFIG_FILES="$CONFIG_FILES 3270stubs/Makefile.obj" ;; "32xx/32xx-deplibs.mk") CONFIG_FILES="$CONFIG_FILES 32xx/32xx-deplibs.mk" ;; *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;; esac done # If the user did not use the arguments to specify the items to instantiate, # then the envvar interface is used. Set only those that are not. # We use the long form for the default assignment because of an extremely # bizarre bug on SunOS 4.1.3. if $ac_need_defaults; then test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers fi # Have a temporary directory for convenience. Make it in the build tree # simply because there is no reason against having it here, and in addition, # creating and moving files from /tmp can sometimes cause problems. # Hook for its removal unless debugging. # Note that there is a small window in which the directory will not be cleaned: # after its creation but before its name has been assigned to `$tmp'. $debug || { tmp= ac_tmp= trap 'exit_status=$? : "${ac_tmp:=$tmp}" { test ! -d "$ac_tmp" || rm -fr "$ac_tmp"; } && exit $exit_status ' 0 trap 'as_fn_exit 1' 1 2 13 15 } # Create a (secure) tmp directory for tmp files. { tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` && test -d "$tmp" } || { tmp=./conf$$-$RANDOM (umask 077 && mkdir "$tmp") } || as_fn_error $? "cannot create a temporary directory in ." "$LINENO" 5 ac_tmp=$tmp # Set up the scripts for CONFIG_FILES section. # No need to generate them if there are no CONFIG_FILES. # This happens for instance with `./config.status config.h'. if test -n "$CONFIG_FILES"; then ac_cr=`echo X | tr X '\015'` # On cygwin, bash can eat \r inside `` if the user requested igncr. # But we know of no other shell where ac_cr would be empty at this # point, so we can use a bashism as a fallback. if test "x$ac_cr" = x; then eval ac_cr=\$\'\\r\' fi ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' /dev/null` if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then ac_cs_awk_cr='\\r' else ac_cs_awk_cr=$ac_cr fi echo 'BEGIN {' >"$ac_tmp/subs1.awk" && _ACEOF { echo "cat >conf$$subs.awk <<_ACEOF" && echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' && echo "_ACEOF" } >conf$$subs.sh || as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 ac_delim_num=`echo "$ac_subst_vars" | grep -c '^'` ac_delim='%!_!# ' for ac_last_try in false false false false false :; do . ./conf$$subs.sh || as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 ac_delim_n=`sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | grep -c X` if test $ac_delim_n = $ac_delim_num; then break elif $ac_last_try; then as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 else ac_delim="$ac_delim!$ac_delim _$ac_delim!! " fi done rm -f conf$$subs.sh cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 cat >>"\$ac_tmp/subs1.awk" <<\\_ACAWK && _ACEOF sed -n ' h s/^/S["/; s/!.*/"]=/ p g s/^[^!]*!// :repl t repl s/'"$ac_delim"'$// t delim :nl h s/\(.\{148\}\)..*/\1/ t more1 s/["\\]/\\&/g; s/^/"/; s/$/\\n"\\/ p n b repl :more1 s/["\\]/\\&/g; s/^/"/; s/$/"\\/ p g s/.\{148\}// t nl :delim h s/\(.\{148\}\)..*/\1/ t more2 s/["\\]/\\&/g; s/^/"/; s/$/"/ p b :more2 s/["\\]/\\&/g; s/^/"/; s/$/"\\/ p g s/.\{148\}// t delim ' >$CONFIG_STATUS || ac_write_fail=1 rm -f conf$$subs.awk cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 _ACAWK cat >>"\$ac_tmp/subs1.awk" <<_ACAWK && for (key in S) S_is_set[key] = 1 FS = "" } { line = $ 0 nfields = split(line, field, "@") substed = 0 len = length(field[1]) for (i = 2; i < nfields; i++) { key = field[i] keylen = length(key) if (S_is_set[key]) { value = S[key] line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3) len += length(value) + length(field[++i]) substed = 1 } else len += 1 + keylen } print line } _ACAWK _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g" else cat fi < "$ac_tmp/subs1.awk" > "$ac_tmp/subs.awk" \ || as_fn_error $? "could not setup config files machinery" "$LINENO" 5 _ACEOF # VPATH may cause trouble with some makes, so we remove sole $(srcdir), # ${srcdir} and @srcdir@ entries from VPATH if srcdir is ".", strip leading and # trailing colons and then remove the whole line if VPATH becomes empty # (actually we leave an empty line to preserve line numbers). if test "x$srcdir" = x.; then ac_vpsub='/^[ ]*VPATH[ ]*=[ ]*/{ h s/// s/^/:/ s/[ ]*$/:/ s/:\$(srcdir):/:/g s/:\${srcdir}:/:/g s/:@srcdir@:/:/g s/^:*// s/:*$// x s/\(=[ ]*\).*/\1/ G s/\n// s/^[^=]*=[ ]*$// }' fi cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 fi # test -n "$CONFIG_FILES" # Set up the scripts for CONFIG_HEADERS section. # No need to generate them if there are no CONFIG_HEADERS. # This happens for instance with `./config.status Makefile'. if test -n "$CONFIG_HEADERS"; then cat >"$ac_tmp/defines.awk" <<\_ACAWK || BEGIN { _ACEOF # Transform confdefs.h into an awk script `defines.awk', embedded as # here-document in config.status, that substitutes the proper values into # config.h.in to produce config.h. # Create a delimiter string that does not exist in confdefs.h, to ease # handling of long lines. ac_delim='%!_!# ' for ac_last_try in false false :; do ac_tt=`sed -n "/$ac_delim/p" confdefs.h` if test -z "$ac_tt"; then break elif $ac_last_try; then as_fn_error $? "could not make $CONFIG_HEADERS" "$LINENO" 5 else ac_delim="$ac_delim!$ac_delim _$ac_delim!! " fi done # For the awk script, D is an array of macro values keyed by name, # likewise P contains macro parameters if any. Preserve backslash # newline sequences. ac_word_re=[_$as_cr_Letters][_$as_cr_alnum]* sed -n ' s/.\{148\}/&'"$ac_delim"'/g t rset :rset s/^[ ]*#[ ]*define[ ][ ]*/ / t def d :def s/\\$// t bsnl s/["\\]/\\&/g s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ D["\1"]=" \3"/p s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2"/p d :bsnl s/["\\]/\\&/g s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ D["\1"]=" \3\\\\\\n"\\/p t cont s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2\\\\\\n"\\/p t cont d :cont n s/.\{148\}/&'"$ac_delim"'/g t clear :clear s/\\$// t bsnlc s/["\\]/\\&/g; s/^/"/; s/$/"/p d :bsnlc s/["\\]/\\&/g; s/^/"/; s/$/\\\\\\n"\\/p b cont ' >$CONFIG_STATUS || ac_write_fail=1 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 for (key in D) D_is_set[key] = 1 FS = "" } /^[\t ]*#[\t ]*(define|undef)[\t ]+$ac_word_re([\t (]|\$)/ { line = \$ 0 split(line, arg, " ") if (arg[1] == "#") { defundef = arg[2] mac1 = arg[3] } else { defundef = substr(arg[1], 2) mac1 = arg[2] } split(mac1, mac2, "(") #) macro = mac2[1] prefix = substr(line, 1, index(line, defundef) - 1) if (D_is_set[macro]) { # Preserve the white space surrounding the "#". print prefix "define", macro P[macro] D[macro] next } else { # Replace #undef with comments. This is necessary, for example, # in the case of _POSIX_SOURCE, which is predefined and required # on some systems where configure will not decide to define it. if (defundef == "undef") { print "/*", prefix defundef, macro, "*/" next } } } { print } _ACAWK _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 as_fn_error $? "could not setup config headers machinery" "$LINENO" 5 fi # test -n "$CONFIG_HEADERS" eval set X " :F $CONFIG_FILES :H $CONFIG_HEADERS " shift for ac_tag do case $ac_tag in :[FHLC]) ac_mode=$ac_tag; continue;; esac case $ac_mode$ac_tag in :[FHL]*:*);; :L* | :C*:*) as_fn_error $? "invalid tag \`$ac_tag'" "$LINENO" 5;; :[FH]-) ac_tag=-:-;; :[FH]*) ac_tag=$ac_tag:$ac_tag.in;; esac ac_save_IFS=$IFS IFS=: set x $ac_tag IFS=$ac_save_IFS shift ac_file=$1 shift case $ac_mode in :L) ac_source=$1;; :[FH]) ac_file_inputs= for ac_f do case $ac_f in -) ac_f="$ac_tmp/stdin";; *) # Look for the file first in the build tree, then in the source tree # (if the path is not absolute). The absolute path cannot be DOS-style, # because $ac_f cannot contain `:'. test -f "$ac_f" || case $ac_f in [\\/$]*) false;; *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";; esac || as_fn_error 1 "cannot find input file: \`$ac_f'" "$LINENO" 5;; esac case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac as_fn_append ac_file_inputs " '$ac_f'" done # Let's still pretend it is `configure' which instantiates (i.e., don't # use $as_me), people would be surprised to read: # /* config.h. Generated by config.status. */ configure_input='Generated from '` $as_echo "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g' `' by configure.' if test x"$ac_file" != x-; then configure_input="$ac_file. $configure_input" { $as_echo "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5 $as_echo "$as_me: creating $ac_file" >&6;} fi # Neutralize special characters interpreted by sed in replacement strings. case $configure_input in #( *\&* | *\|* | *\\* ) ac_sed_conf_input=`$as_echo "$configure_input" | sed 's/[\\\\&|]/\\\\&/g'`;; #( *) ac_sed_conf_input=$configure_input;; esac case $ac_tag in *:-:* | *:-) cat >"$ac_tmp/stdin" \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;; esac ;; esac ac_dir=`$as_dirname -- "$ac_file" || $as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$ac_file" : 'X\(//\)[^/]' \| \ X"$ac_file" : 'X\(//\)$' \| \ X"$ac_file" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$ac_file" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` as_dir="$ac_dir"; as_fn_mkdir_p ac_builddir=. case "$ac_dir" in .) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` # A ".." for each directory in $ac_dir_suffix. ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` case $ac_top_builddir_sub in "") ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; esac ;; esac ac_abs_top_builddir=$ac_pwd ac_abs_builddir=$ac_pwd$ac_dir_suffix # for backward compatibility: ac_top_builddir=$ac_top_build_prefix case $srcdir in .) # We are building in place. ac_srcdir=. ac_top_srcdir=$ac_top_builddir_sub ac_abs_top_srcdir=$ac_pwd ;; [\\/]* | ?:[\\/]* ) # Absolute name. ac_srcdir=$srcdir$ac_dir_suffix; ac_top_srcdir=$srcdir ac_abs_top_srcdir=$srcdir ;; *) # Relative name. ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix ac_top_srcdir=$ac_top_build_prefix$srcdir ac_abs_top_srcdir=$ac_pwd/$srcdir ;; esac ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix case $ac_mode in :F) # # CONFIG_FILE # case $INSTALL in [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;; *) ac_INSTALL=$ac_top_build_prefix$INSTALL ;; esac _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # If the template does not know about datarootdir, expand it. # FIXME: This hack should be removed a few years after 2.60. ac_datarootdir_hack=; ac_datarootdir_seen= ac_sed_dataroot=' /datarootdir/ { p q } /@datadir@/p /@docdir@/p /@infodir@/p /@localedir@/p /@mandir@/p' case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in *datarootdir*) ac_datarootdir_seen=yes;; *@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 $as_echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;} _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_datarootdir_hack=' s&@datadir@&$datadir&g s&@docdir@&$docdir&g s&@infodir@&$infodir&g s&@localedir@&$localedir&g s&@mandir@&$mandir&g s&\\\${datarootdir}&$datarootdir&g' ;; esac _ACEOF # Neutralize VPATH when `$srcdir' = `.'. # Shell code in configure.ac might set extrasub. # FIXME: do we really want to maintain this feature? cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_sed_extra="$ac_vpsub $extrasub _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 :t /@[a-zA-Z_][a-zA-Z_0-9]*@/!b s|@configure_input@|$ac_sed_conf_input|;t t s&@top_builddir@&$ac_top_builddir_sub&;t t s&@top_build_prefix@&$ac_top_build_prefix&;t t s&@srcdir@&$ac_srcdir&;t t s&@abs_srcdir@&$ac_abs_srcdir&;t t s&@top_srcdir@&$ac_top_srcdir&;t t s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t s&@builddir@&$ac_builddir&;t t s&@abs_builddir@&$ac_abs_builddir&;t t s&@abs_top_builddir@&$ac_abs_top_builddir&;t t s&@INSTALL@&$ac_INSTALL&;t t $ac_datarootdir_hack " eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$ac_tmp/subs.awk" \ >$ac_tmp/out || as_fn_error $? "could not create $ac_file" "$LINENO" 5 test -z "$ac_datarootdir_hack$ac_datarootdir_seen" && { ac_out=`sed -n '/\${datarootdir}/p' "$ac_tmp/out"`; test -n "$ac_out"; } && { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' \ "$ac_tmp/out"`; test -z "$ac_out"; } && { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir' which seems to be undefined. Please make sure it is defined" >&5 $as_echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir' which seems to be undefined. Please make sure it is defined" >&2;} rm -f "$ac_tmp/stdin" case $ac_file in -) cat "$ac_tmp/out" && rm -f "$ac_tmp/out";; *) rm -f "$ac_file" && mv "$ac_tmp/out" "$ac_file";; esac \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;; :H) # # CONFIG_HEADER # if test x"$ac_file" != x-; then { $as_echo "/* $configure_input */" \ && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" } >"$ac_tmp/config.h" \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 if diff "$ac_file" "$ac_tmp/config.h" >/dev/null 2>&1; then { $as_echo "$as_me:${as_lineno-$LINENO}: $ac_file is unchanged" >&5 $as_echo "$as_me: $ac_file is unchanged" >&6;} else rm -f "$ac_file" mv "$ac_tmp/config.h" "$ac_file" \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 fi else $as_echo "/* $configure_input */" \ && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" \ || as_fn_error $? "could not create -" "$LINENO" 5 fi ;; esac done # for ac_tag as_fn_exit 0 _ACEOF ac_clean_files=$ac_clean_files_save test $ac_write_fail = 0 || as_fn_error $? "write failure creating $CONFIG_STATUS" "$LINENO" 5 # configure is writing to config.log, and then calls config.status. # config.status does its own redirection, appending to config.log. # Unfortunately, on DOS this fails, as config.log is still kept open # by configure, so config.status won't be able to write to it; its # output is simply discarded. So we exec the FD to /dev/null, # effectively closing config.log, so it can be properly (re)opened and # appended to by config.status. When coming back to configure, we # need to make the FD available again. if test "$no_create" != yes; then ac_cs_success=: ac_config_status_args= test "$silent" = yes && ac_config_status_args="$ac_config_status_args --quiet" exec 5>/dev/null $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false exec 5>>config.log # Use ||, not &&, to avoid exiting from the if with $? = 1, which # would make configure fail if this is the last instruction. $ac_cs_success || as_fn_exit 1 fi if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5 $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;} fi suite3270-4.1/lib/configure.in000066400000000000000000000177241413735575200161310ustar00rootroot00000000000000dnl Copyright (c) 2000-2017, 2019-2021 Paul Mattes. dnl All rights reserved. dnl dnl Redistribution and use in source and binary forms, with or without dnl modification, are permitted provided that the following conditions are met: dnl * Redistributions of source code must retain the above copyright dnl notice, this list of conditions and the following disclaimer. dnl * Redistributions in binary form must reproduce the above copyright dnl notice, this list of conditions and the following disclaimer in the dnl documentation and/or other materials provided with the distribution. dnl * Neither the names of Paul Mattes nor the names of his contributors dnl may be used to endorse or promote products derived from this software dnl without specific prior written permission. dnl dnl THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS OR IMPLIED dnl WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF dnl MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO dnl EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, dnl SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED dnl TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR dnl PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF dnl LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING dnl NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS dnl SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. dnl Process this file with autoconf to produce a configure script. AC_INIT(suite3270-lib,4.0) AC_PREREQ(2.50) dnl Checks for programs. AC_PROG_INSTALL AC_PROG_CC AC_PROG_RANLIB AC_CHECK_TOOLS(AR, [ar]) dnl Figure out what sort of host this is. AC_CANONICAL_HOST ansi="-std=c99 -pedantic" case "$host_os" in *cygwin*) CPPFLAGS="$CPPFLAGS -D_XOPEN_SOURCE_EXTENDED -D_GNU_SOURCE" ansi="" ;; hpux|*cygwin*) CPPFLAGS="$CPPFLAGS -D_XOPEN_SOURCE_EXTENDED -D_GNU_SOURCE" ;; solaris2*) CPPFLAGS="$CPPFLAGS -D__EXTENSIONS__" AC_DEFINE(CONNECT_GETPEERNAME,1) ;; darwin*) CCOPTIONS="$CCOPTIONS -no-cpp-precomp -Wno-deprecated-declarations" CPPFLAGS="$CPPFLAGS -D_XOPEN_SOURCE_EXTENDED -D_GNU_SOURCE" mac_os=1 ;; linux*) CPPFLAGS="$CPPFLAGS -D_POSIX_SOURCE -D_BSD_SOURCE -D_DEFAULT_SOURCE -D_XOPEN_SOURCE -D_GNU_SOURCE" ;; esac if test "$GCC" = yes then CCOPTIONS="$CCOPTIONS -Wall -Wsign-compare $ansi -Wno-variadic-macros -MMD -MP" fi AC_SUBST(host) AC_SUBST(CCOPTIONS) AC_SUBST(CONNECT_GETPEERNAME) dnl Checks for header files. AC_CHECK_HEADERS(sys/select.h) AC_CHECK_HEADERS(readline/history.h) AC_CHECK_HEADERS(pty.h) AC_CHECK_HEADERS(libutil.h) AC_CHECK_HEADERS(util.h) AC_CHECK_HEADERS(getopt.h) AC_CHECK_HEADERS(malloc.h) dnl If TLS is disabled, don't go looking for OpenSSL. if test ! "$enable_tls" = no then use_openssl=yes else use_openssl=no fi dnl Default to secure Transport on the Mac. if test ! -z "$mac_os" -a "$enable_stransport" != no then use_openssl=no fi dnl Check for OpenSSL header files. AC_ARG_WITH(ssl,[ --with-openssl=DIR specify OpenSSL install directory]) if test "$use_openssl" != no then orig_CPPFLAGS="$CPPFLAGS" unset any for dir in "$with_openssl" /usr/local /usr/local/ssl /usr/lib/ssl /usr/pkg/ssl /usr/ssl /var/ssl /opt/ssl do header_fail=0 if test -n "$dir" -a ! -d "$dir/include" then header_fail=1 continue fi if test -n "$any" then AC_MSG_NOTICE(retrying with -I$dir/include) fi if test -n "$dir" then CPPFLAGS="$orig_CPPFLAGS -I$dir/include" fi AC_CHECK_HEADERS(openssl/ssl.h, ,[header_fail=1]) if test "$header_fail" -eq 0 then break fi unset `echo ac_cv_header_openssl/ssl_h | $as_tr_sh` CPPFLAGS="$orig_CPPFLAGS" any=1 done if test $header_fail -eq 1 then AC_MSG_WARN(Disabling OpenSSL -- missing headers) use_openssl="no" enable_tls="no" unset HAVE_LIBSSL fi fi dnl Check for ISO 10646 (wchar_t is Unicode) and --with-iconv AC_CHECK_DECLS(__STDC_ISO_10646__, unset unkw, unkw=1) AC_ARG_WITH(iconv,[ --with-iconv ignore __STDC_ISO_10646__ and use iconv() instead]) case "$with_iconv" in no|"") ;; yes|*) AC_DEFINE(USE_ICONV,1) unkw=1 ;; esac AC_SUBST(USE_ICONV) dnl Check for libraries. dnl Note that the order here is important. The last libraries should appear dnl first, so that objects in them can be used by subsequent libraries. AC_SEARCH_LIBS(forkpty, util) AC_CHECK_FUNCS(forkpty) AC_SEARCH_LIBS(gethostbyname, nsl) AC_SEARCH_LIBS(socket, socket) AC_CHECK_HEADERS(iconv.h) AC_SEARCH_LIBS(libiconv, iconv, , AC_SEARCH_LIBS(iconv, iconv, , if test "$unkw"; then AC_MSG_ERROR(No iconv library function); fi)) AC_SEARCH_LIBS(getaddrinfo_a, anl, AC_DEFINE(HAVE_GETADDRINFO_A,1)) dnl Handle iconv library dependency. if echo "$LIBS" | grep -e '-liconv\>' >/dev/null then ICONV_LIBS="-liconv" fi AC_SUBST(ICONV_LIBS) dnl Checks for library functions. AC_CHECK_FUNCS(vasprintf) AC_CHECK_FUNCS(malloc_usable_size) AC_FUNC_FSEEKO dnl Check for OpenSSL libraries. if test "$use_openssl" != no then orig_LDFLAGS="$LDFLAGS" orig_LIBS="$LIBS" unset any if test -n "$with_openssl" then ssl_libs="$with_openssl/lib $with_openssl/ssl/lib" else ssl_libs="nil /usr/local/ssl/lib /usr/pkg/ssl/lib /usr/ssl/lib /var/ssl/lib /opt/ssl/lib" fi for dir in $ssl_libs do lib_fail=0 if test "$dir" = nil then dir="" fi if test -n "$dir" -a ! -d "$dir" then lib_fail=1 continue fi if test -n "$any" then AC_MSG_NOTICE(retrying with -L$dir) fi if test -n "$dir" then LDFLAGS="$orig_LDFLAGS -L$dir" TLS_LDFLAGS=-L$dir fi AC_CHECK_LIB(crypto, CRYPTO_malloc, , [lib_fail=1]) if test "$lib_fail" -eq 0 then AC_CHECK_LIB(ssl, SSL_new, , [lib_fail=1]) fi if test "$lib_fail" -eq 0 then break fi unset `echo ac_cv_lib_crypto_CRYPTO_malloc | $as_tr_sh` unset `echo ac_cv_lib_ssl_SSL_new | $as_tr_sh` LDFLAGS="$orig_LDFLAGS" unset TLS_LDFLAGS any=1 done if test $lib_fail -eq 1 then AC_MSG_WARN(Disabling OpenSSL -- missing libs) use_openssl="no" enable_tls="no" else TLS_LIBS="-lssl -lcrypto" fi fi AC_SUBST(TLS_LDFLAGS) AC_SUBST(TLS_LIBS) dnl Set up getaddrinfo_a dependencies. if echo "$LIBS" | grep -e '-lanl\>' >/dev/null then GAI_LIBS="-lanl" fi AC_SUBST(GAI_LIBS) AC_SUBST(HAVE_GETADDRINFO_A) dnl Set up the configuration directory. LIBX3270DIR='${sysconfdir}/x3270' AC_SUBST(LIBX3270DIR) dnl Check for unwanted parts. AC_ARG_ENABLE(dbcs,[ --disable-dbcs leave out DBCS support]) case "$enable_dbcs" in no) ;; *) AC_DEFINE(X3270_DBCS,1) ;; esac AC_ARG_ENABLE(local_process,[ --disable-local-process leave out local process support]) case "$enable_local_process" in ""|yes) AC_DEFINE(X3270_LOCAL_PROCESS,1) ;; esac AC_ARG_ENABLE(tls,[ --disable-tls leave out TLS support]) AC_ARG_ENABLE(ipv6,[ --disable-ipv6 leave out IPv6 support]) case "$enable_ipv6" in ""|yes) AC_DEFINE(X3270_IPV6,1) ;; esac AC_ARG_ENABLE(stransport,[ --disable-stransport use OpenSSL instead of Secure Transport (MacOS)]) if test ! -z "$mac_os" -a "$enable_stransport" = no -a "use_openssl" = no then enable_tls=no fi if test -z "$mac_os" -a ! -z "$enable_stransport" then AC_MSG_ERROR(--enable-stransport/--disable-stransport is only for MacOS); fi AC_ARG_ENABLE(mock_tls,[ --enable-mock-tls use TLS mock for testing]) if test "$enable_mock_tls" = yes then use_openssl=no fi dnl Set up TLS modules and libraries if test "$enable_mock_tls" = yes then TLS_MODULES=sio_mock.o elif test "$enable_tls" = no then TLS_MODULES="" elif test ! -z "$mac_os" -a "$enable_stransport" != no then TLS_MODULES=sio_secure_transport.o TLS_LIBS="-framework CoreFoundation -framework Security" else TLS_MODULES=sio_openssl.o fi AC_SUBST(TLS_MODULES) AC_SUBST(TLS_LIBS) dnl Generate the files. AC_CONFIG_HEADERS(include/unix/conf.h) AC_CONFIG_FILES(3270/Makefile 3270/Makefile.obj 3270i/Makefile 3270i/Makefile.obj 32xx/Makefile 32xx/Makefile.obj 3270stubs/Makefile 3270stubs/Makefile.obj 32xx/32xx-deplibs.mk) AC_OUTPUT suite3270-4.1/lib/include/000077500000000000000000000000001413735575200152305ustar00rootroot00000000000000suite3270-4.1/lib/include/localdefs.h000066400000000000000000000031231413735575200173340ustar00rootroot00000000000000/* * Copyright (c) 2000-2009, 2013-2015 Paul Mattes. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the names of Paul Mattes nor the names of his contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO * EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * localdefs.h * Local definitions for the stubs library. */ suite3270-4.1/lib/include/unix/000077500000000000000000000000001413735575200162135ustar00rootroot00000000000000suite3270-4.1/lib/include/unix/.gitignore000066400000000000000000000000071413735575200202000ustar00rootroot00000000000000conf.h suite3270-4.1/lib/include/unix/conf.h.in000066400000000000000000000042201413735575200177140ustar00rootroot00000000000000/* * Copyright (c) 2000-2015, 2017, 2019 Paul Mattes. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the names of Paul Mattes nor the names of his contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO * EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * conf.h * System-specific #defines for libraries and library functions. * Automatically generated from conf.h.in by configure. */ /* Libraries. */ /* Header files. */ #undef HAVE_SYS_SELECT_H #undef HAVE_PTY_H #undef HAVE_LIBUTIL_H #undef HAVE_UTIL_H #undef HAVE_GETOPT_H #undef HAVE_MALLOC_H /* Uncommon functions. */ #undef HAVE_VASPRINTF #undef HAVE_FSEEKO #undef HAVE_FORKPTY #undef HAVE_GETADDRINFO_A #undef HAVE_MALLOC_USABLE_SIZE /* Configuration options. */ #undef USE_ICONV /* Platform-specific oddness. */ #undef CONNECT_GETPEERNAME /* Optional parts. */ #undef X3270_LOCAL_PROCESS #undef X3270_IPV6 suite3270-4.1/lib/include/windows/000077500000000000000000000000001413735575200167225ustar00rootroot00000000000000suite3270-4.1/lib/include/windows/conf.h000066400000000000000000000001221413735575200200130ustar00rootroot00000000000000/* Hard-coded conf.h for wc3270 */ #define LIBX3270DIR "." #define X3270_IPV6 1 suite3270-4.1/lib/libexpat/000077500000000000000000000000001413735575200154155ustar00rootroot00000000000000suite3270-4.1/lib/libexpat/Makefile000066400000000000000000000042511413735575200170570ustar00rootroot00000000000000# Copyright (c) 2016 Paul Mattes. # All rights reserved. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # * Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # * Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in the # documentation and/or other materials provided with the distribution. # * Neither the name of Paul Mattes nor his contributors may be used # to endorse or promote products derived from this software without # specific prior written permission. # # THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS OR # IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES # OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN # NO EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, # SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED # TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR # PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF # LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING # NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS # SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. # VPATH-based Makefile for (Windows) libexpat, can build either 32- or 64-bit ifdef WIN64 objdir = ../../obj/win64/libexpat else objdir = ../../obj/win32/libexpat endif top = ../../.. this = $(top)/lib/libexpat export VPATH = $(this):$(top)/Common/libexpat export TOP = $(top) export THIS = $(this) MAKEINC = -I$(top)/Common/libexpat -I$(top)/Common/Win32 -I$(this) all: $(objdir) cd $(objdir) && $(MAKE) $(MAKEINC) -f $(this)/Makefile.obj $@ clean: $(objdir) cd $(objdir) && $(MAKE) $(MAKEINC) -f $(this)/Makefile.obj $@ clobber: $(objdir) cd $(objdir) && $(MAKE) $(MAKEINC) -f $(this)/Makefile.obj $@ depend: $(objdir) cd $(objdir) && $(MAKE) $(MAKEINC) -f $(this)/Makefile.obj $@ $(objdir): mkdir -p $(objdir) suite3270-4.1/lib/libexpat/Makefile.aux000066400000000000000000000031151413735575200176510ustar00rootroot00000000000000# # Copyright (c) 2016 Paul Mattes. # All rights reserved. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions are met: # * Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # * Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in the # documentation and/or other materials provided with the distribution. # * Neither the names of Paul Mattes nor the names of his contributors # may be used to endorse or promote products derived from this software # without specific prior written permission. # # THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS OR IMPLIED # WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF # MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO # EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, # SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, # PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; # OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, # WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR # OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF # ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. # # Auxiliary makefile for Windows libexpat all: @echo "Must pick a specific make target." src.tgz: suite3270-4.1/lib/libexpat/Makefile.obj000066400000000000000000000037031413735575200176310ustar00rootroot00000000000000# Copyright (c) 1999-2009, 2013-2016 Paul Mattes. # All rights reserved. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions are met: # * Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # * Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in the # documentation and/or other materials provided with the distribution. # * Neither the names of Paul Mattes nor the names of his contributors # may be used to endorse or promote products derived from this software # without specific prior written permission. # # THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS OR IMPLIED # WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF # MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO # EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, # SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, # PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; # OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, # WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR # OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF # ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. # # Makefile for (Windows) libexpat LIBEXPAT = libexpat.a include winenv.mk XCPPFLAGS = $(WIN32_FLAGS) -I. -I$(THIS)/../Common/libexpat -I$(THIS)/../include -I$(TOP)/include -DWIN32 -DCOMPILED_FROM_DSP CFLAGS = $(EXTRA_FLAGS) -g -Wall -Werror $(XCPPFLAGS) all:: $(LIBEXPAT) OBJ = o include libexpat_files.mk OBJS = $(LIBEXPAT_OBJECTS) $(LIBEXPAT): $(OBJS) $(AR) crs $@ $(OBJS) clean: $(RM) *.o clobber: clean $(RM) $(LIBEXPAT) *.d -include $(OBJS:.o=.d) suite3270-4.1/lib/libexpat/libexpat_files.mk000066400000000000000000000004671413735575200207470ustar00rootroot00000000000000# Source files specific to libexpat. LIBEXPAT_SOURCES = xmlparse.c xmlrole.c xmltok.c xmltok_impl.c xmltok_ns.c # Object files specific to libexpat. LIBEXPAT_OBJECTS = xmlparse.$(OBJ) xmlrole.$(OBJ) xmltok.$(OBJ) \ xmltok_impl.$(OBJ) xmltok_ns.$(OBJ) # Header files specific to libexpat. LIBEXPAT_HEADERS = suite3270-4.1/lib/w3270/000077500000000000000000000000001413735575200143675ustar00rootroot00000000000000suite3270-4.1/lib/w3270/Makefile000066400000000000000000000042641413735575200160350ustar00rootroot00000000000000# Copyright (c) 2016 Paul Mattes. # All rights reserved. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # * Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # * Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in the # documentation and/or other materials provided with the distribution. # * Neither the name of Paul Mattes nor his contributors may be used # to endorse or promote products derived from this software without # specific prior written permission. # # THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS OR # IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES # OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN # NO EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, # SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED # TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR # PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF # LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING # NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS # SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. # VPATH-based Makefile for libw3270, can build either 32- or 64-bit ifdef WIN64 objdir = ../../obj/win64/lib3270 else objdir = ../../obj/win32/lib3270 endif top = ../../.. this = $(top)/lib/w3270 export VPATH = $(this):$(top)/Common/Win32:$(top)/Common:$(top)/Common/Nodisplay export TOP = $(top) export THIS = $(this) MAKEINC = -I$(top)/Common -I$(top)/Common/Win32 -I$(this) all: $(objdir) cd $(objdir) && $(MAKE) $(MAKEINC) -f $(this)/Makefile.obj $@ clean: $(objdir) cd $(objdir) && $(MAKE) $(MAKEINC) -f $(this)/Makefile.obj $@ clobber: $(objdir) cd $(objdir) && $(MAKE) $(MAKEINC) -f $(this)/Makefile.obj $@ depend: $(objdir) cd $(objdir) && $(MAKE) $(MAKEINC) -f $(this)/Makefile.obj $@ $(objdir): mkdir -p $(objdir) suite3270-4.1/lib/w3270/Makefile.aux000066400000000000000000000031431413735575200166240ustar00rootroot00000000000000# # Copyright (c) 1995-2011, 2013-2015 Paul Mattes. # All rights reserved. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions are met: # * Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # * Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in the # documentation and/or other materials provided with the distribution. # * Neither the names of Paul Mattes nor the names of his contributors # may be used to endorse or promote products derived from this software # without specific prior written permission. # # THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS OR IMPLIED # WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF # MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO # EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, # SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, # PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; # OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, # WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR # OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF # ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. # # Auxiliary makefile for 3270 emulation library all: @echo "Must pick a specific make target." src.tgz: suite3270-4.1/lib/w3270/Makefile.obj000066400000000000000000000043261413735575200166050ustar00rootroot00000000000000# Copyright (c) 1999-2009, 2013-2017 Paul Mattes. # All rights reserved. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions are met: # * Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # * Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in the # documentation and/or other materials provided with the distribution. # * Neither the names of Paul Mattes nor the names of his contributors # may be used to endorse or promote products derived from this software # without specific prior written permission. # # THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS OR IMPLIED # WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF # MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO # EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, # SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, # PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; # OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, # WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR # OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF # ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. # # Makefile for 3270 emulation library (Windows) LIB3270 = lib3270.a include winenv.mk XCPPFLAGS = $(WIN32_FLAGS) -I. -I$(THIS)/../include/windows -I$(THIS)/../include -I$(TOP)/include CFLAGS = $(EXTRA_FLAGS) -g -Wall -Werror $(XCPPFLAGS) $(SSLCPP) all:: $(LIB3270) include lib3270_files.mk include libw3270_files.mk OBJS = $(LIB3270_OBJECTS) $(LIBW3270_OBJECTS) $(LIB3270): $(OBJS) $(RM) $@ $(AR) crs $@ $(OBJS) favicon.o: favicon.c favicon.c: favicon.ico mkicon$(NATIVE_SFX) ./mkicon$(NATIVE_SFX) $< >favicon.c mkicon.o: CC = $(NATIVECC) mkicon.o: CFLAGS = mkicon$(NATIVE_SFX): mkicon.o $(NATIVECC) -o $@ mkicon.o clean: $(RM) *.o favicon.c mkicon$(NATIVE_SFX) clobber: clean $(RM) $(LIB3270) *.d -include $(OBJS:.o=.d) suite3270-4.1/lib/w3270/libw3270_files.mk000066400000000000000000000001171413735575200173520ustar00rootroot00000000000000# Object files specific to libw3270. LIBW3270_OBJECTS = gdi_print.o winprint.o suite3270-4.1/lib/w3270i/000077500000000000000000000000001413735575200145405ustar00rootroot00000000000000suite3270-4.1/lib/w3270i/Makefile000066400000000000000000000042371413735575200162060ustar00rootroot00000000000000# Copyright (c) 2016 Paul Mattes. # All rights reserved. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # * Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # * Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in the # documentation and/or other materials provided with the distribution. # * Neither the name of Paul Mattes nor his contributors may be used # to endorse or promote products derived from this software without # specific prior written permission. # # THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS OR # IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES # OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN # NO EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, # SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED # TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR # PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF # LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING # NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS # SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. # VPATH-based Makefile for libw3270, can build either 32- or 64-bit ifdef WIN64 objdir = ../../obj/win64/lib3270i else objdir = ../../obj/win32/lib3270i endif top = ../../.. this = $(top)/lib/w3270i export VPATH = $(this):$(top)/Common/Win32:$(top)/Common export TOP = $(top) export THIS = $(this) MAKEINC = -I$(top)/Common -I$(top)/Common/Win32 -I$(this) all: $(objdir) cd $(objdir) && $(MAKE) $(MAKEINC) -f $(this)/Makefile.obj $@ clean: $(objdir) cd $(objdir) && $(MAKE) $(MAKEINC) -f $(this)/Makefile.obj $@ clobber: $(objdir) cd $(objdir) && $(MAKE) $(MAKEINC) -f $(this)/Makefile.obj $@ depend: $(objdir) cd $(objdir) && $(MAKE) $(MAKEINC) -f $(this)/Makefile.obj $@ $(objdir): mkdir -p $(objdir) suite3270-4.1/lib/w3270i/Makefile.aux000066400000000000000000000031451413735575200167770ustar00rootroot00000000000000# # Copyright (c) 1995-2011, 2013-2015 Paul Mattes. # All rights reserved. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions are met: # * Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # * Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in the # documentation and/or other materials provided with the distribution. # * Neither the names of Paul Mattes nor the names of his contributors # may be used to endorse or promote products derived from this software # without specific prior written permission. # # THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS OR IMPLIED # WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF # MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO # EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, # SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, # PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; # OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, # WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR # OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF # ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. # # Auxiliary makefile for 3270 interactive library all: @echo "Must pick a specific make target." src.tgz: suite3270-4.1/lib/w3270i/Makefile.obj000066400000000000000000000037121413735575200167540ustar00rootroot00000000000000# Copyright (c) 1999-2009, 2013-2017 Paul Mattes. # All rights reserved. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions are met: # * Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # * Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in the # documentation and/or other materials provided with the distribution. # * Neither the names of Paul Mattes nor the names of his contributors # may be used to endorse or promote products derived from this software # without specific prior written permission. # # THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS OR IMPLIED # WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF # MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO # EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, # SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, # PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; # OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, # WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR # OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF # ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. # # Makefile for 3270 emulation library (Windows) LIB3270I = lib3270i.a include winenv.mk XCPPFLAGS = $(WIN32_FLAGS) -I. -I$(THIS)/../include/windows -I$(THIS)/../include -I$(TOP)/include CFLAGS = $(EXTRA_FLAGS) -g -Wall -Werror -MMD -MP $(XCPPFLAGS) $(SSLCPP) all:: $(LIB3270I) include lib3270i_files.mk OBJS = $(LIB3270I_OBJECTS) $(LIB3270I): $(OBJS) $(RM) $@ $(AR) crs $@ $(OBJS) clean: $(RM) *.o clobber: clean $(RM) $(LIB3270I) *.d -include $(OBJS:.o=.d) suite3270-4.1/lib/w3270stubs/000077500000000000000000000000001413735575200154505ustar00rootroot00000000000000suite3270-4.1/lib/w3270stubs/Makefile000066400000000000000000000042601413735575200171120ustar00rootroot00000000000000# Copyright (c) 2016 Paul Mattes. # All rights reserved. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # * Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # * Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in the # documentation and/or other materials provided with the distribution. # * Neither the name of Paul Mattes nor his contributors may be used # to endorse or promote products derived from this software without # specific prior written permission. # # THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS OR # IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES # OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN # NO EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, # SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED # TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR # PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF # LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING # NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS # SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. # VPATH-based Makefile for libw3270stubs, can build either 32- or 64-bit ifdef WIN64 objdir = ../../obj/win64/lib3270stubs else objdir = ../../obj/win32/lib3270stubs endif top = ../../.. this = $(top)/lib/w3270stubs export VPATH = $(this):$(top)/Common/Win32:$(top)/Common export TOP = $(top) export THIS = $(this) MAKEINC = -I$(top)/Common -I$(top)/Common/Win32 -I$(this) all: $(objdir) cd $(objdir) && $(MAKE) $(MAKEINC) -f $(this)/Makefile.obj $@ clean: $(objdir) cd $(objdir) && $(MAKE) $(MAKEINC) -f $(this)/Makefile.obj $@ clobber: $(objdir) cd $(objdir) && $(MAKE) $(MAKEINC) -f $(this)/Makefile.obj $@ depend: $(objdir) cd $(objdir) && $(MAKE) $(MAKEINC) -f $(this)/Makefile.obj $@ $(objdir): mkdir -p $(objdir) suite3270-4.1/lib/w3270stubs/Makefile.aux000066400000000000000000000031321413735575200177030ustar00rootroot00000000000000# # Copyright (c) 1995-2011, 2013-2015 Paul Mattes. # All rights reserved. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions are met: # * Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # * Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in the # documentation and/or other materials provided with the distribution. # * Neither the names of Paul Mattes nor the names of his contributors # may be used to endorse or promote products derived from this software # without specific prior written permission. # # THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS OR IMPLIED # WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF # MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO # EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, # SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, # PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; # OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, # WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR # OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF # ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. # # Auxiliary makefile for stubs library all: @echo "Must pick a specific make target." src.tgz: suite3270-4.1/lib/w3270stubs/Makefile.obj000066400000000000000000000040261413735575200176630ustar00rootroot00000000000000# Copyright (c) 1999-2009, 2013-2017 Paul Mattes. # All rights reserved. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions are met: # * Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # * Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in the # documentation and/or other materials provided with the distribution. # * Neither the names of Paul Mattes nor the names of his contributors # may be used to endorse or promote products derived from this software # without specific prior written permission. # # THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS OR IMPLIED # WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF # MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO # EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, # SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, # PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; # OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, # WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR # OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF # ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. # # Makefile for 3270 emulation stubs library (Windows) LIB3270 = lib3270stubs.a include winenv.mk XCPPFLAGS = $(WIN32_FLAGS) -I$(THIS) -I$(THIS)/../include/windows -I$(THIS)/../include -I$(TOP)/include CFLAGS = $(EXTRA_FLAGS) -g -Wall -Werror -MMD -MP $(XCPPFLAGS) $(SSLCPP) all:: $(LIB3270) include lib3270stubs_files.mk include libw3270stubs_files.mk OBJS = $(LIB3270STUBS_OBJECTS) $(LIBW3270STUBS_OBJECTS) $(LIB3270): $(OBJS) $(RM) $@ $(AR) crs $@ $(OBJS) clean: $(RM) *.o clobber: clean $(RM) $(LIB3270) *.d -include $(OBJS:.o=.d) suite3270-4.1/lib/w3270stubs/libw3270stubs_files.mk000066400000000000000000000001031413735575200215070ustar00rootroot00000000000000# Object files specific to libw3270stubs. LIBW3270STUBS_OBJECTS = suite3270-4.1/lib/w32xx/000077500000000000000000000000001413735575200146005ustar00rootroot00000000000000suite3270-4.1/lib/w32xx/.gitignore000066400000000000000000000000151413735575200165640ustar00rootroot00000000000000Makefile.obj suite3270-4.1/lib/w32xx/Makefile000066400000000000000000000042341413735575200162430ustar00rootroot00000000000000# Copyright (c) 2016 Paul Mattes. # All rights reserved. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # * Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # * Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in the # documentation and/or other materials provided with the distribution. # * Neither the name of Paul Mattes nor his contributors may be used # to endorse or promote products derived from this software without # specific prior written permission. # # THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS OR # IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES # OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN # NO EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, # SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED # TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR # PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF # LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING # NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS # SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. # VPATH-based Makefile for libw32xx, can build either 32- or 64-bit ifdef WIN64 objdir = ../../obj/win64/lib32xx else objdir = ../../obj/win32/lib32xx endif top = ../../.. this = $(top)/lib/w32xx export VPATH = $(this):$(top)/Common/Win32:$(top)/Common export TOP = $(top) export THIS = $(this) MAKEINC = -I$(top)/Common -I$(top)/Common/Win32 -I$(this) all: $(objdir) cd $(objdir) && $(MAKE) $(MAKEINC) -f $(this)/Makefile.obj $@ clean: $(objdir) cd $(objdir) && $(MAKE) $(MAKEINC) -f $(this)/Makefile.obj $@ clobber: $(objdir) cd $(objdir) && $(MAKE) $(MAKEINC) -f $(this)/Makefile.obj $@ depend: $(objdir) cd $(objdir) && $(MAKE) $(MAKEINC) -f $(this)/Makefile.obj $@ $(objdir): mkdir -p $(objdir) suite3270-4.1/lib/w32xx/Makefile.aux000066400000000000000000000031521413735575200170350ustar00rootroot00000000000000# # Copyright (c) 1995-2011, 2013-2015 Paul Mattes. # All rights reserved. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions are met: # * Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # * Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in the # documentation and/or other materials provided with the distribution. # * Neither the names of Paul Mattes nor the names of his contributors # may be used to endorse or promote products derived from this software # without specific prior written permission. # # THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS OR IMPLIED # WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF # MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO # EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, # SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, # PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; # OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, # WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR # OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF # ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. # # Auxiliary makefile for 3270/3287 interactive library all: @echo "Must pick a specific make target." src.tgz: suite3270-4.1/lib/w32xx/Makefile.obj.in000066400000000000000000000040211413735575200174130ustar00rootroot00000000000000# Copyright (c) 1999-2009, 2013-2017, 2020 Paul Mattes. # All rights reserved. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions are met: # * Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # * Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in the # documentation and/or other materials provided with the distribution. # * Neither the names of Paul Mattes nor the names of his contributors # may be used to endorse or promote products derived from this software # without specific prior written permission. # # THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS OR IMPLIED # WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF # MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO # EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, # SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, # PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; # OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, # WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR # OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF # ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. # # Makefile for 3270/3287 emulation common library (Windows) LIB32XX = lib32xx.a include winenv.mk XCPPFLAGS = $(WIN32_FLAGS) -I$(THIS) -I$(THIS)/../include/windows -I$(THIS)/../include -I$(TOP)/include CFLAGS = $(EXTRA_FLAGS) -g -Wall -Werror -MMD -MP $(XCPPFLAGS) $(SSLCPP) all:: $(LIB32XX) include lib32xx_files.mk include libw32xx_files.mk OBJS = $(LIB32XX_OBJECTS) $(LIBW32XX_OBJECTS) @WIN_TLS_MODULES@ $(LIB32XX): $(OBJS) $(AR) crs $@ $(OBJS) clean: $(RM) *.o clobber: clean $(RM) $(LIB32XX) *.d -include $(OBJS:.o=.d) suite3270-4.1/lib/w32xx/configure000077500000000000000000002445771413735575200165320ustar00rootroot00000000000000#! /bin/sh # Guess values for system-dependent variables and create Makefiles. # Generated by GNU Autoconf 2.69 for suite3270-lib 4.0. # # # Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc. # # # This configure script is free software; the Free Software Foundation # gives unlimited permission to copy, distribute and modify it. ## -------------------- ## ## M4sh Initialization. ## ## -------------------- ## # Be more Bourne compatible DUALCASE=1; export DUALCASE # for MKS sh if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST else case `(set -o) 2>/dev/null` in #( *posix*) : set -o posix ;; #( *) : ;; esac fi as_nl=' ' export as_nl # Printing a long string crashes Solaris 7 /usr/bin/printf. as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo # Prefer a ksh shell builtin over an external printf program on Solaris, # but without wasting forks for bash or zsh. if test -z "$BASH_VERSION$ZSH_VERSION" \ && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then as_echo='print -r --' as_echo_n='print -rn --' elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then as_echo='printf %s\n' as_echo_n='printf %s' else if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' as_echo_n='/usr/ucb/echo -n' else as_echo_body='eval expr "X$1" : "X\\(.*\\)"' as_echo_n_body='eval arg=$1; case $arg in #( *"$as_nl"*) expr "X$arg" : "X\\(.*\\)$as_nl"; arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; esac; expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" ' export as_echo_n_body as_echo_n='sh -c $as_echo_n_body as_echo' fi export as_echo_body as_echo='sh -c $as_echo_body as_echo' fi # The user is always right. if test "${PATH_SEPARATOR+set}" != set; then PATH_SEPARATOR=: (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || PATH_SEPARATOR=';' } fi # IFS # We need space, tab and new line, in precisely that order. Quoting is # there to prevent editors from complaining about space-tab. # (If _AS_PATH_WALK were called with IFS unset, it would disable word # splitting by setting IFS to empty value.) IFS=" "" $as_nl" # Find who we are. Look in the path if we contain no directory separator. as_myself= case $0 in #(( *[\\/]* ) as_myself=$0 ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break done IFS=$as_save_IFS ;; esac # We did not find ourselves, most probably we were run as `sh COMMAND' # in which case we are not to be found in the path. if test "x$as_myself" = x; then as_myself=$0 fi if test ! -f "$as_myself"; then $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 exit 1 fi # Unset variables that we do not need and which cause bugs (e.g. in # pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" # suppresses any "Segmentation fault" message there. '((' could # trigger a bug in pdksh 5.2.14. for as_var in BASH_ENV ENV MAIL MAILPATH do eval test x\${$as_var+set} = xset \ && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : done PS1='$ ' PS2='> ' PS4='+ ' # NLS nuisances. LC_ALL=C export LC_ALL LANGUAGE=C export LANGUAGE # CDPATH. (unset CDPATH) >/dev/null 2>&1 && unset CDPATH # Use a proper internal environment variable to ensure we don't fall # into an infinite loop, continuously re-executing ourselves. if test x"${_as_can_reexec}" != xno && test "x$CONFIG_SHELL" != x; then _as_can_reexec=no; export _as_can_reexec; # We cannot yet assume a decent shell, so we have to provide a # neutralization value for shells without unset; and this also # works around shells that cannot unset nonexistent variables. # Preserve -v and -x to the replacement shell. BASH_ENV=/dev/null ENV=/dev/null (unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV case $- in # (((( *v*x* | *x*v* ) as_opts=-vx ;; *v* ) as_opts=-v ;; *x* ) as_opts=-x ;; * ) as_opts= ;; esac exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} # Admittedly, this is quite paranoid, since all the known shells bail # out after a failed `exec'. $as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2 as_fn_exit 255 fi # We don't want this to propagate to other subprocesses. { _as_can_reexec=; unset _as_can_reexec;} if test "x$CONFIG_SHELL" = x; then as_bourne_compatible="if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on \${1+\"\$@\"}, which # is contrary to our usage. Disable this feature. alias -g '\${1+\"\$@\"}'='\"\$@\"' setopt NO_GLOB_SUBST else case \`(set -o) 2>/dev/null\` in #( *posix*) : set -o posix ;; #( *) : ;; esac fi " as_required="as_fn_return () { (exit \$1); } as_fn_success () { as_fn_return 0; } as_fn_failure () { as_fn_return 1; } as_fn_ret_success () { return 0; } as_fn_ret_failure () { return 1; } exitcode=0 as_fn_success || { exitcode=1; echo as_fn_success failed.; } as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; } as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; } as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; } if ( set x; as_fn_ret_success y && test x = \"\$1\" ); then : else exitcode=1; echo positional parameters were not saved. fi test x\$exitcode = x0 || exit 1 test -x / || exit 1" as_suggested=" as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" && test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1" if (eval "$as_required") 2>/dev/null; then : as_have_required=yes else as_have_required=no fi if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null; then : else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR as_found=false for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. as_found=: case $as_dir in #( /*) for as_base in sh bash ksh sh5; do # Try only shells that exist, to save several forks. as_shell=$as_dir/$as_base if { test -f "$as_shell" || test -f "$as_shell.exe"; } && { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$as_shell"; } 2>/dev/null; then : CONFIG_SHELL=$as_shell as_have_required=yes if { $as_echo "$as_bourne_compatible""$as_suggested" | as_run=a "$as_shell"; } 2>/dev/null; then : break 2 fi fi done;; esac as_found=false done $as_found || { if { test -f "$SHELL" || test -f "$SHELL.exe"; } && { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$SHELL"; } 2>/dev/null; then : CONFIG_SHELL=$SHELL as_have_required=yes fi; } IFS=$as_save_IFS if test "x$CONFIG_SHELL" != x; then : export CONFIG_SHELL # We cannot yet assume a decent shell, so we have to provide a # neutralization value for shells without unset; and this also # works around shells that cannot unset nonexistent variables. # Preserve -v and -x to the replacement shell. BASH_ENV=/dev/null ENV=/dev/null (unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV case $- in # (((( *v*x* | *x*v* ) as_opts=-vx ;; *v* ) as_opts=-v ;; *x* ) as_opts=-x ;; * ) as_opts= ;; esac exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} # Admittedly, this is quite paranoid, since all the known shells bail # out after a failed `exec'. $as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2 exit 255 fi if test x$as_have_required = xno; then : $as_echo "$0: This script requires a shell more modern than all" $as_echo "$0: the shells that I found on your system." if test x${ZSH_VERSION+set} = xset ; then $as_echo "$0: In particular, zsh $ZSH_VERSION has bugs and should" $as_echo "$0: be upgraded to zsh 4.3.4 or later." else $as_echo "$0: Please tell bug-autoconf@gnu.org about your system, $0: including any error possibly output before this $0: message. Then install a modern shell, or manually run $0: the script under such a shell if you do have one." fi exit 1 fi fi fi SHELL=${CONFIG_SHELL-/bin/sh} export SHELL # Unset more variables known to interfere with behavior of common tools. CLICOLOR_FORCE= GREP_OPTIONS= unset CLICOLOR_FORCE GREP_OPTIONS ## --------------------- ## ## M4sh Shell Functions. ## ## --------------------- ## # as_fn_unset VAR # --------------- # Portably unset VAR. as_fn_unset () { { eval $1=; unset $1;} } as_unset=as_fn_unset # as_fn_set_status STATUS # ----------------------- # Set $? to STATUS, without forking. as_fn_set_status () { return $1 } # as_fn_set_status # as_fn_exit STATUS # ----------------- # Exit the shell with STATUS, even in a "trap 0" or "set -e" context. as_fn_exit () { set +e as_fn_set_status $1 exit $1 } # as_fn_exit # as_fn_mkdir_p # ------------- # Create "$as_dir" as a directory, including parents if necessary. as_fn_mkdir_p () { case $as_dir in #( -*) as_dir=./$as_dir;; esac test -d "$as_dir" || eval $as_mkdir_p || { as_dirs= while :; do case $as_dir in #( *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( *) as_qdir=$as_dir;; esac as_dirs="'$as_qdir' $as_dirs" as_dir=`$as_dirname -- "$as_dir" || $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_dir" : 'X\(//\)[^/]' \| \ X"$as_dir" : 'X\(//\)$' \| \ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$as_dir" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` test -d "$as_dir" && break done test -z "$as_dirs" || eval "mkdir $as_dirs" } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" } # as_fn_mkdir_p # as_fn_executable_p FILE # ----------------------- # Test if FILE is an executable regular file. as_fn_executable_p () { test -f "$1" && test -x "$1" } # as_fn_executable_p # as_fn_append VAR VALUE # ---------------------- # Append the text in VALUE to the end of the definition contained in VAR. Take # advantage of any shell optimizations that allow amortized linear growth over # repeated appends, instead of the typical quadratic growth present in naive # implementations. if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : eval 'as_fn_append () { eval $1+=\$2 }' else as_fn_append () { eval $1=\$$1\$2 } fi # as_fn_append # as_fn_arith ARG... # ------------------ # Perform arithmetic evaluation on the ARGs, and store the result in the # global $as_val. Take advantage of shells that can avoid forks. The arguments # must be portable across $(()) and expr. if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : eval 'as_fn_arith () { as_val=$(( $* )) }' else as_fn_arith () { as_val=`expr "$@" || test $? -eq 1` } fi # as_fn_arith # as_fn_error STATUS ERROR [LINENO LOG_FD] # ---------------------------------------- # Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are # provided, also output the error to LOG_FD, referencing LINENO. Then exit the # script with STATUS, using 1 if that was 0. as_fn_error () { as_status=$1; test $as_status -eq 0 && as_status=1 if test "$4"; then as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 fi $as_echo "$as_me: error: $2" >&2 as_fn_exit $as_status } # as_fn_error if expr a : '\(a\)' >/dev/null 2>&1 && test "X`expr 00001 : '.*\(...\)'`" = X001; then as_expr=expr else as_expr=false fi if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then as_basename=basename else as_basename=false fi if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then as_dirname=dirname else as_dirname=false fi as_me=`$as_basename -- "$0" || $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ X"$0" : 'X\(//\)$' \| \ X"$0" : 'X\(/\)' \| . 2>/dev/null || $as_echo X/"$0" | sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/ q } /^X\/\(\/\/\)$/{ s//\1/ q } /^X\/\(\/\).*/{ s//\1/ q } s/.*/./; q'` # Avoid depending upon Character Ranges. as_cr_letters='abcdefghijklmnopqrstuvwxyz' as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' as_cr_Letters=$as_cr_letters$as_cr_LETTERS as_cr_digits='0123456789' as_cr_alnum=$as_cr_Letters$as_cr_digits as_lineno_1=$LINENO as_lineno_1a=$LINENO as_lineno_2=$LINENO as_lineno_2a=$LINENO eval 'test "x$as_lineno_1'$as_run'" != "x$as_lineno_2'$as_run'" && test "x`expr $as_lineno_1'$as_run' + 1`" = "x$as_lineno_2'$as_run'"' || { # Blame Lee E. McMahon (1931-1989) for sed's syntax. :-) sed -n ' p /[$]LINENO/= ' <$as_myself | sed ' s/[$]LINENO.*/&-/ t lineno b :lineno N :loop s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ t loop s/-\n.*// ' >$as_me.lineno && chmod +x "$as_me.lineno" || { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; } # If we had to re-execute with $CONFIG_SHELL, we're ensured to have # already done that, so ensure we don't try to do so again and fall # in an infinite loop. This has already happened in practice. _as_can_reexec=no; export _as_can_reexec # Don't try to exec as it changes $[0], causing all sort of problems # (the dirname of $[0] is not the place where we might find the # original and so on. Autoconf is especially sensitive to this). . "./$as_me.lineno" # Exit status is that of the last command. exit } ECHO_C= ECHO_N= ECHO_T= case `echo -n x` in #((((( -n*) case `echo 'xy\c'` in *c*) ECHO_T=' ';; # ECHO_T is single tab character. xy) ECHO_C='\c';; *) echo `echo ksh88 bug on AIX 6.1` > /dev/null ECHO_T=' ';; esac;; *) ECHO_N='-n';; esac rm -f conf$$ conf$$.exe conf$$.file if test -d conf$$.dir; then rm -f conf$$.dir/conf$$.file else rm -f conf$$.dir mkdir conf$$.dir 2>/dev/null fi if (echo >conf$$.file) 2>/dev/null; then if ln -s conf$$.file conf$$ 2>/dev/null; then as_ln_s='ln -s' # ... but there are two gotchas: # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. # In both cases, we have to default to `cp -pR'. ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || as_ln_s='cp -pR' elif ln conf$$.file conf$$ 2>/dev/null; then as_ln_s=ln else as_ln_s='cp -pR' fi else as_ln_s='cp -pR' fi rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file rmdir conf$$.dir 2>/dev/null if mkdir -p . 2>/dev/null; then as_mkdir_p='mkdir -p "$as_dir"' else test -d ./-p && rmdir ./-p as_mkdir_p=false fi as_test_x='test -x' as_executable_p=as_fn_executable_p # Sed expression to map a string onto a valid CPP name. as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" # Sed expression to map a string onto a valid variable name. as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" test -n "$DJDIR" || exec 7<&0 &1 # Name of the host. # hostname on some systems (SVR3.2, old GNU/Linux) returns a bogus exit status, # so uname gets run too. ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q` # # Initializations. # ac_default_prefix=/usr/local ac_clean_files= ac_config_libobj_dir=. LIBOBJS= cross_compiling=no subdirs= MFLAGS= MAKEFLAGS= # Identity of this package. PACKAGE_NAME='suite3270-lib' PACKAGE_TARNAME='suite3270-lib' PACKAGE_VERSION='4.0' PACKAGE_STRING='suite3270-lib 4.0' PACKAGE_BUGREPORT='' PACKAGE_URL='' ac_subst_vars='LTLIBOBJS LIBOBJS WIN_TLS_MODULES target_alias host_alias build_alias LIBS ECHO_T ECHO_N ECHO_C DEFS mandir localedir libdir psdir pdfdir dvidir htmldir infodir docdir oldincludedir includedir runstatedir localstatedir sharedstatedir sysconfdir datadir datarootdir libexecdir sbindir bindir program_transform_name prefix exec_prefix PACKAGE_URL PACKAGE_BUGREPORT PACKAGE_STRING PACKAGE_VERSION PACKAGE_TARNAME PACKAGE_NAME PATH_SEPARATOR SHELL' ac_subst_files='' ac_user_opts=' enable_option_checking enable_tls ' ac_precious_vars='build_alias host_alias target_alias' # Initialize some variables set by options. ac_init_help= ac_init_version=false ac_unrecognized_opts= ac_unrecognized_sep= # The variables have the same names as the options, with # dashes changed to underlines. cache_file=/dev/null exec_prefix=NONE no_create= no_recursion= prefix=NONE program_prefix=NONE program_suffix=NONE program_transform_name=s,x,x, silent= site= srcdir= verbose= x_includes=NONE x_libraries=NONE # Installation directory options. # These are left unexpanded so users can "make install exec_prefix=/foo" # and all the variables that are supposed to be based on exec_prefix # by default will actually change. # Use braces instead of parens because sh, perl, etc. also accept them. # (The list follows the same order as the GNU Coding Standards.) bindir='${exec_prefix}/bin' sbindir='${exec_prefix}/sbin' libexecdir='${exec_prefix}/libexec' datarootdir='${prefix}/share' datadir='${datarootdir}' sysconfdir='${prefix}/etc' sharedstatedir='${prefix}/com' localstatedir='${prefix}/var' runstatedir='${localstatedir}/run' includedir='${prefix}/include' oldincludedir='/usr/include' docdir='${datarootdir}/doc/${PACKAGE_TARNAME}' infodir='${datarootdir}/info' htmldir='${docdir}' dvidir='${docdir}' pdfdir='${docdir}' psdir='${docdir}' libdir='${exec_prefix}/lib' localedir='${datarootdir}/locale' mandir='${datarootdir}/man' ac_prev= ac_dashdash= for ac_option do # If the previous option needs an argument, assign it. if test -n "$ac_prev"; then eval $ac_prev=\$ac_option ac_prev= continue fi case $ac_option in *=?*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;; *=) ac_optarg= ;; *) ac_optarg=yes ;; esac # Accept the important Cygnus configure options, so we can diagnose typos. case $ac_dashdash$ac_option in --) ac_dashdash=yes ;; -bindir | --bindir | --bindi | --bind | --bin | --bi) ac_prev=bindir ;; -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*) bindir=$ac_optarg ;; -build | --build | --buil | --bui | --bu) ac_prev=build_alias ;; -build=* | --build=* | --buil=* | --bui=* | --bu=*) build_alias=$ac_optarg ;; -cache-file | --cache-file | --cache-fil | --cache-fi \ | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) ac_prev=cache_file ;; -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) cache_file=$ac_optarg ;; --config-cache | -C) cache_file=config.cache ;; -datadir | --datadir | --datadi | --datad) ac_prev=datadir ;; -datadir=* | --datadir=* | --datadi=* | --datad=*) datadir=$ac_optarg ;; -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \ | --dataroo | --dataro | --datar) ac_prev=datarootdir ;; -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \ | --dataroot=* | --dataroo=* | --dataro=* | --datar=*) datarootdir=$ac_optarg ;; -disable-* | --disable-*) ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid feature name: $ac_useropt" ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "enable_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--disable-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval enable_$ac_useropt=no ;; -docdir | --docdir | --docdi | --doc | --do) ac_prev=docdir ;; -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*) docdir=$ac_optarg ;; -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv) ac_prev=dvidir ;; -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*) dvidir=$ac_optarg ;; -enable-* | --enable-*) ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid feature name: $ac_useropt" ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "enable_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--enable-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval enable_$ac_useropt=\$ac_optarg ;; -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ | --exec | --exe | --ex) ac_prev=exec_prefix ;; -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \ | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \ | --exec=* | --exe=* | --ex=*) exec_prefix=$ac_optarg ;; -gas | --gas | --ga | --g) # Obsolete; use --with-gas. with_gas=yes ;; -help | --help | --hel | --he | -h) ac_init_help=long ;; -help=r* | --help=r* | --hel=r* | --he=r* | -hr*) ac_init_help=recursive ;; -help=s* | --help=s* | --hel=s* | --he=s* | -hs*) ac_init_help=short ;; -host | --host | --hos | --ho) ac_prev=host_alias ;; -host=* | --host=* | --hos=* | --ho=*) host_alias=$ac_optarg ;; -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht) ac_prev=htmldir ;; -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \ | --ht=*) htmldir=$ac_optarg ;; -includedir | --includedir | --includedi | --included | --include \ | --includ | --inclu | --incl | --inc) ac_prev=includedir ;; -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \ | --includ=* | --inclu=* | --incl=* | --inc=*) includedir=$ac_optarg ;; -infodir | --infodir | --infodi | --infod | --info | --inf) ac_prev=infodir ;; -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*) infodir=$ac_optarg ;; -libdir | --libdir | --libdi | --libd) ac_prev=libdir ;; -libdir=* | --libdir=* | --libdi=* | --libd=*) libdir=$ac_optarg ;; -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \ | --libexe | --libex | --libe) ac_prev=libexecdir ;; -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \ | --libexe=* | --libex=* | --libe=*) libexecdir=$ac_optarg ;; -localedir | --localedir | --localedi | --localed | --locale) ac_prev=localedir ;; -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*) localedir=$ac_optarg ;; -localstatedir | --localstatedir | --localstatedi | --localstated \ | --localstate | --localstat | --localsta | --localst | --locals) ac_prev=localstatedir ;; -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*) localstatedir=$ac_optarg ;; -mandir | --mandir | --mandi | --mand | --man | --ma | --m) ac_prev=mandir ;; -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*) mandir=$ac_optarg ;; -nfp | --nfp | --nf) # Obsolete; use --without-fp. with_fp=no ;; -no-create | --no-create | --no-creat | --no-crea | --no-cre \ | --no-cr | --no-c | -n) no_create=yes ;; -no-recursion | --no-recursion | --no-recursio | --no-recursi \ | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) no_recursion=yes ;; -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \ | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \ | --oldin | --oldi | --old | --ol | --o) ac_prev=oldincludedir ;; -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \ | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \ | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*) oldincludedir=$ac_optarg ;; -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) ac_prev=prefix ;; -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) prefix=$ac_optarg ;; -program-prefix | --program-prefix | --program-prefi | --program-pref \ | --program-pre | --program-pr | --program-p) ac_prev=program_prefix ;; -program-prefix=* | --program-prefix=* | --program-prefi=* \ | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*) program_prefix=$ac_optarg ;; -program-suffix | --program-suffix | --program-suffi | --program-suff \ | --program-suf | --program-su | --program-s) ac_prev=program_suffix ;; -program-suffix=* | --program-suffix=* | --program-suffi=* \ | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*) program_suffix=$ac_optarg ;; -program-transform-name | --program-transform-name \ | --program-transform-nam | --program-transform-na \ | --program-transform-n | --program-transform- \ | --program-transform | --program-transfor \ | --program-transfo | --program-transf \ | --program-trans | --program-tran \ | --progr-tra | --program-tr | --program-t) ac_prev=program_transform_name ;; -program-transform-name=* | --program-transform-name=* \ | --program-transform-nam=* | --program-transform-na=* \ | --program-transform-n=* | --program-transform-=* \ | --program-transform=* | --program-transfor=* \ | --program-transfo=* | --program-transf=* \ | --program-trans=* | --program-tran=* \ | --progr-tra=* | --program-tr=* | --program-t=*) program_transform_name=$ac_optarg ;; -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd) ac_prev=pdfdir ;; -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*) pdfdir=$ac_optarg ;; -psdir | --psdir | --psdi | --psd | --ps) ac_prev=psdir ;; -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*) psdir=$ac_optarg ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil) silent=yes ;; -runstatedir | --runstatedir | --runstatedi | --runstated \ | --runstate | --runstat | --runsta | --runst | --runs \ | --run | --ru | --r) ac_prev=runstatedir ;; -runstatedir=* | --runstatedir=* | --runstatedi=* | --runstated=* \ | --runstate=* | --runstat=* | --runsta=* | --runst=* | --runs=* \ | --run=* | --ru=* | --r=*) runstatedir=$ac_optarg ;; -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) ac_prev=sbindir ;; -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ | --sbi=* | --sb=*) sbindir=$ac_optarg ;; -sharedstatedir | --sharedstatedir | --sharedstatedi \ | --sharedstated | --sharedstate | --sharedstat | --sharedsta \ | --sharedst | --shareds | --shared | --share | --shar \ | --sha | --sh) ac_prev=sharedstatedir ;; -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \ | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \ | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \ | --sha=* | --sh=*) sharedstatedir=$ac_optarg ;; -site | --site | --sit) ac_prev=site ;; -site=* | --site=* | --sit=*) site=$ac_optarg ;; -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) ac_prev=srcdir ;; -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) srcdir=$ac_optarg ;; -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \ | --syscon | --sysco | --sysc | --sys | --sy) ac_prev=sysconfdir ;; -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \ | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*) sysconfdir=$ac_optarg ;; -target | --target | --targe | --targ | --tar | --ta | --t) ac_prev=target_alias ;; -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) target_alias=$ac_optarg ;; -v | -verbose | --verbose | --verbos | --verbo | --verb) verbose=yes ;; -version | --version | --versio | --versi | --vers | -V) ac_init_version=: ;; -with-* | --with-*) ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid package name: $ac_useropt" ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "with_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--with-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval with_$ac_useropt=\$ac_optarg ;; -without-* | --without-*) ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid package name: $ac_useropt" ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "with_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--without-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval with_$ac_useropt=no ;; --x) # Obsolete; use --with-x. with_x=yes ;; -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \ | --x-incl | --x-inc | --x-in | --x-i) ac_prev=x_includes ;; -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \ | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*) x_includes=$ac_optarg ;; -x-libraries | --x-libraries | --x-librarie | --x-librari \ | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l) ac_prev=x_libraries ;; -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \ | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) x_libraries=$ac_optarg ;; -*) as_fn_error $? "unrecognized option: \`$ac_option' Try \`$0 --help' for more information" ;; *=*) ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='` # Reject names that are not valid shell variable names. case $ac_envvar in #( '' | [0-9]* | *[!_$as_cr_alnum]* ) as_fn_error $? "invalid variable name: \`$ac_envvar'" ;; esac eval $ac_envvar=\$ac_optarg export $ac_envvar ;; *) # FIXME: should be removed in autoconf 3.0. $as_echo "$as_me: WARNING: you should use --build, --host, --target" >&2 expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && $as_echo "$as_me: WARNING: invalid host type: $ac_option" >&2 : "${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}" ;; esac done if test -n "$ac_prev"; then ac_option=--`echo $ac_prev | sed 's/_/-/g'` as_fn_error $? "missing argument to $ac_option" fi if test -n "$ac_unrecognized_opts"; then case $enable_option_checking in no) ;; fatal) as_fn_error $? "unrecognized options: $ac_unrecognized_opts" ;; *) $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;; esac fi # Check all directory arguments for consistency. for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \ datadir sysconfdir sharedstatedir localstatedir includedir \ oldincludedir docdir infodir htmldir dvidir pdfdir psdir \ libdir localedir mandir runstatedir do eval ac_val=\$$ac_var # Remove trailing slashes. case $ac_val in */ ) ac_val=`expr "X$ac_val" : 'X\(.*[^/]\)' \| "X$ac_val" : 'X\(.*\)'` eval $ac_var=\$ac_val;; esac # Be sure to have absolute directory names. case $ac_val in [\\/$]* | ?:[\\/]* ) continue;; NONE | '' ) case $ac_var in *prefix ) continue;; esac;; esac as_fn_error $? "expected an absolute directory name for --$ac_var: $ac_val" done # There might be people who depend on the old broken behavior: `$host' # used to hold the argument of --host etc. # FIXME: To remove some day. build=$build_alias host=$host_alias target=$target_alias # FIXME: To remove some day. if test "x$host_alias" != x; then if test "x$build_alias" = x; then cross_compiling=maybe elif test "x$build_alias" != "x$host_alias"; then cross_compiling=yes fi fi ac_tool_prefix= test -n "$host_alias" && ac_tool_prefix=$host_alias- test "$silent" = yes && exec 6>/dev/null ac_pwd=`pwd` && test -n "$ac_pwd" && ac_ls_di=`ls -di .` && ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` || as_fn_error $? "working directory cannot be determined" test "X$ac_ls_di" = "X$ac_pwd_ls_di" || as_fn_error $? "pwd does not report name of working directory" # Find the source files, if location was not specified. if test -z "$srcdir"; then ac_srcdir_defaulted=yes # Try the directory containing this script, then the parent directory. ac_confdir=`$as_dirname -- "$as_myself" || $as_expr X"$as_myself" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_myself" : 'X\(//\)[^/]' \| \ X"$as_myself" : 'X\(//\)$' \| \ X"$as_myself" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$as_myself" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` srcdir=$ac_confdir if test ! -r "$srcdir/$ac_unique_file"; then srcdir=.. fi else ac_srcdir_defaulted=no fi if test ! -r "$srcdir/$ac_unique_file"; then test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .." as_fn_error $? "cannot find sources ($ac_unique_file) in $srcdir" fi ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work" ac_abs_confdir=`( cd "$srcdir" && test -r "./$ac_unique_file" || as_fn_error $? "$ac_msg" pwd)` # When building in place, set srcdir=. if test "$ac_abs_confdir" = "$ac_pwd"; then srcdir=. fi # Remove unnecessary trailing slashes from srcdir. # Double slashes in file names in object file debugging info # mess up M-x gdb in Emacs. case $srcdir in */) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;; esac for ac_var in $ac_precious_vars; do eval ac_env_${ac_var}_set=\${${ac_var}+set} eval ac_env_${ac_var}_value=\$${ac_var} eval ac_cv_env_${ac_var}_set=\${${ac_var}+set} eval ac_cv_env_${ac_var}_value=\$${ac_var} done # # Report the --help message. # if test "$ac_init_help" = "long"; then # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF \`configure' configures suite3270-lib 4.0 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... To assign environment variables (e.g., CC, CFLAGS...), specify them as VAR=VALUE. See below for descriptions of some of the useful variables. Defaults for the options are specified in brackets. Configuration: -h, --help display this help and exit --help=short display options specific to this package --help=recursive display the short help of all the included packages -V, --version display version information and exit -q, --quiet, --silent do not print \`checking ...' messages --cache-file=FILE cache test results in FILE [disabled] -C, --config-cache alias for \`--cache-file=config.cache' -n, --no-create do not create output files --srcdir=DIR find the sources in DIR [configure dir or \`..'] Installation directories: --prefix=PREFIX install architecture-independent files in PREFIX [$ac_default_prefix] --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX [PREFIX] By default, \`make install' will install all the files in \`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify an installation prefix other than \`$ac_default_prefix' using \`--prefix', for instance \`--prefix=\$HOME'. For better control, use the options below. Fine tuning of the installation directories: --bindir=DIR user executables [EPREFIX/bin] --sbindir=DIR system admin executables [EPREFIX/sbin] --libexecdir=DIR program executables [EPREFIX/libexec] --sysconfdir=DIR read-only single-machine data [PREFIX/etc] --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] --localstatedir=DIR modifiable single-machine data [PREFIX/var] --runstatedir=DIR modifiable per-process data [LOCALSTATEDIR/run] --libdir=DIR object code libraries [EPREFIX/lib] --includedir=DIR C header files [PREFIX/include] --oldincludedir=DIR C header files for non-gcc [/usr/include] --datarootdir=DIR read-only arch.-independent data root [PREFIX/share] --datadir=DIR read-only architecture-independent data [DATAROOTDIR] --infodir=DIR info documentation [DATAROOTDIR/info] --localedir=DIR locale-dependent data [DATAROOTDIR/locale] --mandir=DIR man documentation [DATAROOTDIR/man] --docdir=DIR documentation root [DATAROOTDIR/doc/suite3270-lib] --htmldir=DIR html documentation [DOCDIR] --dvidir=DIR dvi documentation [DOCDIR] --pdfdir=DIR pdf documentation [DOCDIR] --psdir=DIR ps documentation [DOCDIR] _ACEOF cat <<\_ACEOF _ACEOF fi if test -n "$ac_init_help"; then case $ac_init_help in short | recursive ) echo "Configuration of suite3270-lib 4.0:";; esac cat <<\_ACEOF Optional Features: --disable-option-checking ignore unrecognized --enable/--with options --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) --enable-FEATURE[=ARG] include FEATURE [ARG=yes] --disable-tls leave out TLS support Report bugs to the package provider. _ACEOF ac_status=$? fi if test "$ac_init_help" = "recursive"; then # If there are subdirs, report their specific --help. for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue test -d "$ac_dir" || { cd "$srcdir" && ac_pwd=`pwd` && srcdir=. && test -d "$ac_dir"; } || continue ac_builddir=. case "$ac_dir" in .) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` # A ".." for each directory in $ac_dir_suffix. ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` case $ac_top_builddir_sub in "") ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; esac ;; esac ac_abs_top_builddir=$ac_pwd ac_abs_builddir=$ac_pwd$ac_dir_suffix # for backward compatibility: ac_top_builddir=$ac_top_build_prefix case $srcdir in .) # We are building in place. ac_srcdir=. ac_top_srcdir=$ac_top_builddir_sub ac_abs_top_srcdir=$ac_pwd ;; [\\/]* | ?:[\\/]* ) # Absolute name. ac_srcdir=$srcdir$ac_dir_suffix; ac_top_srcdir=$srcdir ac_abs_top_srcdir=$srcdir ;; *) # Relative name. ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix ac_top_srcdir=$ac_top_build_prefix$srcdir ac_abs_top_srcdir=$ac_pwd/$srcdir ;; esac ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix cd "$ac_dir" || { ac_status=$?; continue; } # Check for guested configure. if test -f "$ac_srcdir/configure.gnu"; then echo && $SHELL "$ac_srcdir/configure.gnu" --help=recursive elif test -f "$ac_srcdir/configure"; then echo && $SHELL "$ac_srcdir/configure" --help=recursive else $as_echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2 fi || ac_status=$? cd "$ac_pwd" || { ac_status=$?; break; } done fi test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF suite3270-lib configure 4.0 generated by GNU Autoconf 2.69 Copyright (C) 2012 Free Software Foundation, Inc. This configure script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it. _ACEOF exit fi ## ------------------------ ## ## Autoconf initialization. ## ## ------------------------ ## cat >config.log <<_ACEOF This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. It was created by suite3270-lib $as_me 4.0, which was generated by GNU Autoconf 2.69. Invocation command line was $ $0 $@ _ACEOF exec 5>>config.log { cat <<_ASUNAME ## --------- ## ## Platform. ## ## --------- ## hostname = `(hostname || uname -n) 2>/dev/null | sed 1q` uname -m = `(uname -m) 2>/dev/null || echo unknown` uname -r = `(uname -r) 2>/dev/null || echo unknown` uname -s = `(uname -s) 2>/dev/null || echo unknown` uname -v = `(uname -v) 2>/dev/null || echo unknown` /usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown` /bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown` /bin/arch = `(/bin/arch) 2>/dev/null || echo unknown` /usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown` /usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown` /usr/bin/hostinfo = `(/usr/bin/hostinfo) 2>/dev/null || echo unknown` /bin/machine = `(/bin/machine) 2>/dev/null || echo unknown` /usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown` /bin/universe = `(/bin/universe) 2>/dev/null || echo unknown` _ASUNAME as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. $as_echo "PATH: $as_dir" done IFS=$as_save_IFS } >&5 cat >&5 <<_ACEOF ## ----------- ## ## Core tests. ## ## ----------- ## _ACEOF # Keep a trace of the command line. # Strip out --no-create and --no-recursion so they do not pile up. # Strip out --silent because we don't want to record it for future runs. # Also quote any args containing shell meta-characters. # Make two passes to allow for proper duplicate-argument suppression. ac_configure_args= ac_configure_args0= ac_configure_args1= ac_must_keep_next=false for ac_pass in 1 2 do for ac_arg do case $ac_arg in -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil) continue ;; *\'*) ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; esac case $ac_pass in 1) as_fn_append ac_configure_args0 " '$ac_arg'" ;; 2) as_fn_append ac_configure_args1 " '$ac_arg'" if test $ac_must_keep_next = true; then ac_must_keep_next=false # Got value, back to normal. else case $ac_arg in *=* | --config-cache | -C | -disable-* | --disable-* \ | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \ | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \ | -with-* | --with-* | -without-* | --without-* | --x) case "$ac_configure_args0 " in "$ac_configure_args1"*" '$ac_arg' "* ) continue ;; esac ;; -* ) ac_must_keep_next=true ;; esac fi as_fn_append ac_configure_args " '$ac_arg'" ;; esac done done { ac_configure_args0=; unset ac_configure_args0;} { ac_configure_args1=; unset ac_configure_args1;} # When interrupted or exit'd, cleanup temporary files, and complete # config.log. We remove comments because anyway the quotes in there # would cause problems or look ugly. # WARNING: Use '\'' to represent an apostrophe within the trap. # WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug. trap 'exit_status=$? # Save into config.log some information that might help in debugging. { echo $as_echo "## ---------------- ## ## Cache variables. ## ## ---------------- ##" echo # The following way of writing the cache mishandles newlines in values, ( for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do eval ac_val=\$$ac_var case $ac_val in #( *${as_nl}*) case $ac_var in #( *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 $as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; esac case $ac_var in #( _ | IFS | as_nl) ;; #( BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( *) { eval $ac_var=; unset $ac_var;} ;; esac ;; esac done (set) 2>&1 | case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #( *${as_nl}ac_space=\ *) sed -n \ "s/'\''/'\''\\\\'\'''\''/g; s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p" ;; #( *) sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" ;; esac | sort ) echo $as_echo "## ----------------- ## ## Output variables. ## ## ----------------- ##" echo for ac_var in $ac_subst_vars do eval ac_val=\$$ac_var case $ac_val in *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; esac $as_echo "$ac_var='\''$ac_val'\''" done | sort echo if test -n "$ac_subst_files"; then $as_echo "## ------------------- ## ## File substitutions. ## ## ------------------- ##" echo for ac_var in $ac_subst_files do eval ac_val=\$$ac_var case $ac_val in *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; esac $as_echo "$ac_var='\''$ac_val'\''" done | sort echo fi if test -s confdefs.h; then $as_echo "## ----------- ## ## confdefs.h. ## ## ----------- ##" echo cat confdefs.h echo fi test "$ac_signal" != 0 && $as_echo "$as_me: caught signal $ac_signal" $as_echo "$as_me: exit $exit_status" } >&5 rm -f core *.core core.conftest.* && rm -f -r conftest* confdefs* conf$$* $ac_clean_files && exit $exit_status ' 0 for ac_signal in 1 2 13 15; do trap 'ac_signal='$ac_signal'; as_fn_exit 1' $ac_signal done ac_signal=0 # confdefs.h avoids OS command line length limits that DEFS can exceed. rm -f -r conftest* confdefs.h $as_echo "/* confdefs.h */" > confdefs.h # Predefined preprocessor variables. cat >>confdefs.h <<_ACEOF #define PACKAGE_NAME "$PACKAGE_NAME" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_TARNAME "$PACKAGE_TARNAME" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_VERSION "$PACKAGE_VERSION" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_STRING "$PACKAGE_STRING" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_URL "$PACKAGE_URL" _ACEOF # Let the site file select an alternate cache file if it wants to. # Prefer an explicitly selected file to automatically selected ones. ac_site_file1=NONE ac_site_file2=NONE if test -n "$CONFIG_SITE"; then # We do not want a PATH search for config.site. case $CONFIG_SITE in #(( -*) ac_site_file1=./$CONFIG_SITE;; */*) ac_site_file1=$CONFIG_SITE;; *) ac_site_file1=./$CONFIG_SITE;; esac elif test "x$prefix" != xNONE; then ac_site_file1=$prefix/share/config.site ac_site_file2=$prefix/etc/config.site else ac_site_file1=$ac_default_prefix/share/config.site ac_site_file2=$ac_default_prefix/etc/config.site fi for ac_site_file in "$ac_site_file1" "$ac_site_file2" do test "x$ac_site_file" = xNONE && continue if test /dev/null != "$ac_site_file" && test -r "$ac_site_file"; then { $as_echo "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5 $as_echo "$as_me: loading site script $ac_site_file" >&6;} sed 's/^/| /' "$ac_site_file" >&5 . "$ac_site_file" \ || { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "failed to load site script $ac_site_file See \`config.log' for more details" "$LINENO" 5; } fi done if test -r "$cache_file"; then # Some versions of bash will fail to source /dev/null (special files # actually), so we avoid doing that. DJGPP emulates it as a regular file. if test /dev/null != "$cache_file" && test -f "$cache_file"; then { $as_echo "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5 $as_echo "$as_me: loading cache $cache_file" >&6;} case $cache_file in [\\/]* | ?:[\\/]* ) . "$cache_file";; *) . "./$cache_file";; esac fi else { $as_echo "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5 $as_echo "$as_me: creating cache $cache_file" >&6;} >$cache_file fi # Check that the precious variables saved in the cache have kept the same # value. ac_cache_corrupted=false for ac_var in $ac_precious_vars; do eval ac_old_set=\$ac_cv_env_${ac_var}_set eval ac_new_set=\$ac_env_${ac_var}_set eval ac_old_val=\$ac_cv_env_${ac_var}_value eval ac_new_val=\$ac_env_${ac_var}_value case $ac_old_set,$ac_new_set in set,) { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 $as_echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} ac_cache_corrupted=: ;; ,set) { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was not set in the previous run" >&5 $as_echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} ac_cache_corrupted=: ;; ,);; *) if test "x$ac_old_val" != "x$ac_new_val"; then # differences in whitespace do not lead to failure. ac_old_val_w=`echo x $ac_old_val` ac_new_val_w=`echo x $ac_new_val` if test "$ac_old_val_w" != "$ac_new_val_w"; then { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' has changed since the previous run:" >&5 $as_echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} ac_cache_corrupted=: else { $as_echo "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5 $as_echo "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;} eval $ac_var=\$ac_old_val fi { $as_echo "$as_me:${as_lineno-$LINENO}: former value: \`$ac_old_val'" >&5 $as_echo "$as_me: former value: \`$ac_old_val'" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: current value: \`$ac_new_val'" >&5 $as_echo "$as_me: current value: \`$ac_new_val'" >&2;} fi;; esac # Pass precious variables to config.status. if test "$ac_new_set" = set; then case $ac_new_val in *\'*) ac_arg=$ac_var=`$as_echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; *) ac_arg=$ac_var=$ac_new_val ;; esac case " $ac_configure_args " in *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy. *) as_fn_append ac_configure_args " '$ac_arg'" ;; esac fi done if $ac_cache_corrupted; then { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5 $as_echo "$as_me: error: changes in the environment can compromise the build" >&2;} as_fn_error $? "run \`make distclean' and/or \`rm $cache_file' and start over" "$LINENO" 5 fi ## -------------------- ## ## Main body of script. ## ## -------------------- ## ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu # Check whether --enable-tls was given. if test "${enable_tls+set}" = set; then : enableval=$enable_tls; fi if test "$enable_tls" = no then WIN_TLS_MODULES="" else WIN_TLS_MODULES=sio_schannel.o fi ac_config_files="$ac_config_files Makefile.obj" cat >confcache <<\_ACEOF # This file is a shell script that caches the results of configure # tests run on this system so they can be shared between configure # scripts and configure runs, see configure's option --config-cache. # It is not useful on other systems. If it contains results you don't # want to keep, you may remove or edit it. # # config.status only pays attention to the cache file if you give it # the --recheck option to rerun configure. # # `ac_cv_env_foo' variables (set or unset) will be overridden when # loading this file, other *unset* `ac_cv_foo' will be assigned the # following values. _ACEOF # The following way of writing the cache mishandles newlines in values, # but we know of no workaround that is simple, portable, and efficient. # So, we kill variables containing newlines. # Ultrix sh set writes to stderr and can't be redirected directly, # and sets the high bit in the cache file unless we assign to the vars. ( for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do eval ac_val=\$$ac_var case $ac_val in #( *${as_nl}*) case $ac_var in #( *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 $as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; esac case $ac_var in #( _ | IFS | as_nl) ;; #( BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( *) { eval $ac_var=; unset $ac_var;} ;; esac ;; esac done (set) 2>&1 | case $as_nl`(ac_space=' '; set) 2>&1` in #( *${as_nl}ac_space=\ *) # `set' does not quote correctly, so add quotes: double-quote # substitution turns \\\\ into \\, and sed turns \\ into \. sed -n \ "s/'/'\\\\''/g; s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" ;; #( *) # `set' quotes correctly as required by POSIX, so do not add quotes. sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" ;; esac | sort ) | sed ' /^ac_cv_env_/b end t clear :clear s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/ t end s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ :end' >>confcache if diff "$cache_file" confcache >/dev/null 2>&1; then :; else if test -w "$cache_file"; then if test "x$cache_file" != "x/dev/null"; then { $as_echo "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5 $as_echo "$as_me: updating cache $cache_file" >&6;} if test ! -f "$cache_file" || test -h "$cache_file"; then cat confcache >"$cache_file" else case $cache_file in #( */* | ?:*) mv -f confcache "$cache_file"$$ && mv -f "$cache_file"$$ "$cache_file" ;; #( *) mv -f confcache "$cache_file" ;; esac fi fi else { $as_echo "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5 $as_echo "$as_me: not updating unwritable cache $cache_file" >&6;} fi fi rm -f confcache test "x$prefix" = xNONE && prefix=$ac_default_prefix # Let make expand exec_prefix. test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' # Transform confdefs.h into DEFS. # Protect against shell expansion while executing Makefile rules. # Protect against Makefile macro expansion. # # If the first sed substitution is executed (which looks for macros that # take arguments), then branch to the quote section. Otherwise, # look for a macro that doesn't take arguments. ac_script=' :mline /\\$/{ N s,\\\n,, b mline } t clear :clear s/^[ ]*#[ ]*define[ ][ ]*\([^ (][^ (]*([^)]*)\)[ ]*\(.*\)/-D\1=\2/g t quote s/^[ ]*#[ ]*define[ ][ ]*\([^ ][^ ]*\)[ ]*\(.*\)/-D\1=\2/g t quote b any :quote s/[ `~#$^&*(){}\\|;'\''"<>?]/\\&/g s/\[/\\&/g s/\]/\\&/g s/\$/$$/g H :any ${ g s/^\n// s/\n/ /g p } ' DEFS=`sed -n "$ac_script" confdefs.h` ac_libobjs= ac_ltlibobjs= U= for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue # 1. Remove the extension, and $U if already installed. ac_script='s/\$U\././;s/\.o$//;s/\.obj$//' ac_i=`$as_echo "$ac_i" | sed "$ac_script"` # 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR # will be set to the directory where LIBOBJS objects are built. as_fn_append ac_libobjs " \${LIBOBJDIR}$ac_i\$U.$ac_objext" as_fn_append ac_ltlibobjs " \${LIBOBJDIR}$ac_i"'$U.lo' done LIBOBJS=$ac_libobjs LTLIBOBJS=$ac_ltlibobjs : "${CONFIG_STATUS=./config.status}" ac_write_fail=0 ac_clean_files_save=$ac_clean_files ac_clean_files="$ac_clean_files $CONFIG_STATUS" { $as_echo "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5 $as_echo "$as_me: creating $CONFIG_STATUS" >&6;} as_write_fail=0 cat >$CONFIG_STATUS <<_ASEOF || as_write_fail=1 #! $SHELL # Generated by $as_me. # Run this file to recreate the current configuration. # Compiler output produced by configure, useful for debugging # configure, is in config.log if it exists. debug=false ac_cs_recheck=false ac_cs_silent=false SHELL=\${CONFIG_SHELL-$SHELL} export SHELL _ASEOF cat >>$CONFIG_STATUS <<\_ASEOF || as_write_fail=1 ## -------------------- ## ## M4sh Initialization. ## ## -------------------- ## # Be more Bourne compatible DUALCASE=1; export DUALCASE # for MKS sh if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST else case `(set -o) 2>/dev/null` in #( *posix*) : set -o posix ;; #( *) : ;; esac fi as_nl=' ' export as_nl # Printing a long string crashes Solaris 7 /usr/bin/printf. as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo # Prefer a ksh shell builtin over an external printf program on Solaris, # but without wasting forks for bash or zsh. if test -z "$BASH_VERSION$ZSH_VERSION" \ && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then as_echo='print -r --' as_echo_n='print -rn --' elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then as_echo='printf %s\n' as_echo_n='printf %s' else if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' as_echo_n='/usr/ucb/echo -n' else as_echo_body='eval expr "X$1" : "X\\(.*\\)"' as_echo_n_body='eval arg=$1; case $arg in #( *"$as_nl"*) expr "X$arg" : "X\\(.*\\)$as_nl"; arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; esac; expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" ' export as_echo_n_body as_echo_n='sh -c $as_echo_n_body as_echo' fi export as_echo_body as_echo='sh -c $as_echo_body as_echo' fi # The user is always right. if test "${PATH_SEPARATOR+set}" != set; then PATH_SEPARATOR=: (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || PATH_SEPARATOR=';' } fi # IFS # We need space, tab and new line, in precisely that order. Quoting is # there to prevent editors from complaining about space-tab. # (If _AS_PATH_WALK were called with IFS unset, it would disable word # splitting by setting IFS to empty value.) IFS=" "" $as_nl" # Find who we are. Look in the path if we contain no directory separator. as_myself= case $0 in #(( *[\\/]* ) as_myself=$0 ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break done IFS=$as_save_IFS ;; esac # We did not find ourselves, most probably we were run as `sh COMMAND' # in which case we are not to be found in the path. if test "x$as_myself" = x; then as_myself=$0 fi if test ! -f "$as_myself"; then $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 exit 1 fi # Unset variables that we do not need and which cause bugs (e.g. in # pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" # suppresses any "Segmentation fault" message there. '((' could # trigger a bug in pdksh 5.2.14. for as_var in BASH_ENV ENV MAIL MAILPATH do eval test x\${$as_var+set} = xset \ && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : done PS1='$ ' PS2='> ' PS4='+ ' # NLS nuisances. LC_ALL=C export LC_ALL LANGUAGE=C export LANGUAGE # CDPATH. (unset CDPATH) >/dev/null 2>&1 && unset CDPATH # as_fn_error STATUS ERROR [LINENO LOG_FD] # ---------------------------------------- # Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are # provided, also output the error to LOG_FD, referencing LINENO. Then exit the # script with STATUS, using 1 if that was 0. as_fn_error () { as_status=$1; test $as_status -eq 0 && as_status=1 if test "$4"; then as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 fi $as_echo "$as_me: error: $2" >&2 as_fn_exit $as_status } # as_fn_error # as_fn_set_status STATUS # ----------------------- # Set $? to STATUS, without forking. as_fn_set_status () { return $1 } # as_fn_set_status # as_fn_exit STATUS # ----------------- # Exit the shell with STATUS, even in a "trap 0" or "set -e" context. as_fn_exit () { set +e as_fn_set_status $1 exit $1 } # as_fn_exit # as_fn_unset VAR # --------------- # Portably unset VAR. as_fn_unset () { { eval $1=; unset $1;} } as_unset=as_fn_unset # as_fn_append VAR VALUE # ---------------------- # Append the text in VALUE to the end of the definition contained in VAR. Take # advantage of any shell optimizations that allow amortized linear growth over # repeated appends, instead of the typical quadratic growth present in naive # implementations. if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : eval 'as_fn_append () { eval $1+=\$2 }' else as_fn_append () { eval $1=\$$1\$2 } fi # as_fn_append # as_fn_arith ARG... # ------------------ # Perform arithmetic evaluation on the ARGs, and store the result in the # global $as_val. Take advantage of shells that can avoid forks. The arguments # must be portable across $(()) and expr. if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : eval 'as_fn_arith () { as_val=$(( $* )) }' else as_fn_arith () { as_val=`expr "$@" || test $? -eq 1` } fi # as_fn_arith if expr a : '\(a\)' >/dev/null 2>&1 && test "X`expr 00001 : '.*\(...\)'`" = X001; then as_expr=expr else as_expr=false fi if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then as_basename=basename else as_basename=false fi if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then as_dirname=dirname else as_dirname=false fi as_me=`$as_basename -- "$0" || $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ X"$0" : 'X\(//\)$' \| \ X"$0" : 'X\(/\)' \| . 2>/dev/null || $as_echo X/"$0" | sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/ q } /^X\/\(\/\/\)$/{ s//\1/ q } /^X\/\(\/\).*/{ s//\1/ q } s/.*/./; q'` # Avoid depending upon Character Ranges. as_cr_letters='abcdefghijklmnopqrstuvwxyz' as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' as_cr_Letters=$as_cr_letters$as_cr_LETTERS as_cr_digits='0123456789' as_cr_alnum=$as_cr_Letters$as_cr_digits ECHO_C= ECHO_N= ECHO_T= case `echo -n x` in #((((( -n*) case `echo 'xy\c'` in *c*) ECHO_T=' ';; # ECHO_T is single tab character. xy) ECHO_C='\c';; *) echo `echo ksh88 bug on AIX 6.1` > /dev/null ECHO_T=' ';; esac;; *) ECHO_N='-n';; esac rm -f conf$$ conf$$.exe conf$$.file if test -d conf$$.dir; then rm -f conf$$.dir/conf$$.file else rm -f conf$$.dir mkdir conf$$.dir 2>/dev/null fi if (echo >conf$$.file) 2>/dev/null; then if ln -s conf$$.file conf$$ 2>/dev/null; then as_ln_s='ln -s' # ... but there are two gotchas: # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. # In both cases, we have to default to `cp -pR'. ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || as_ln_s='cp -pR' elif ln conf$$.file conf$$ 2>/dev/null; then as_ln_s=ln else as_ln_s='cp -pR' fi else as_ln_s='cp -pR' fi rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file rmdir conf$$.dir 2>/dev/null # as_fn_mkdir_p # ------------- # Create "$as_dir" as a directory, including parents if necessary. as_fn_mkdir_p () { case $as_dir in #( -*) as_dir=./$as_dir;; esac test -d "$as_dir" || eval $as_mkdir_p || { as_dirs= while :; do case $as_dir in #( *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( *) as_qdir=$as_dir;; esac as_dirs="'$as_qdir' $as_dirs" as_dir=`$as_dirname -- "$as_dir" || $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_dir" : 'X\(//\)[^/]' \| \ X"$as_dir" : 'X\(//\)$' \| \ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$as_dir" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` test -d "$as_dir" && break done test -z "$as_dirs" || eval "mkdir $as_dirs" } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" } # as_fn_mkdir_p if mkdir -p . 2>/dev/null; then as_mkdir_p='mkdir -p "$as_dir"' else test -d ./-p && rmdir ./-p as_mkdir_p=false fi # as_fn_executable_p FILE # ----------------------- # Test if FILE is an executable regular file. as_fn_executable_p () { test -f "$1" && test -x "$1" } # as_fn_executable_p as_test_x='test -x' as_executable_p=as_fn_executable_p # Sed expression to map a string onto a valid CPP name. as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" # Sed expression to map a string onto a valid variable name. as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" exec 6>&1 ## ----------------------------------- ## ## Main body of $CONFIG_STATUS script. ## ## ----------------------------------- ## _ASEOF test $as_write_fail = 0 && chmod +x $CONFIG_STATUS || ac_write_fail=1 cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # Save the log message, to keep $0 and so on meaningful, and to # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" This file was extended by suite3270-lib $as_me 4.0, which was generated by GNU Autoconf 2.69. Invocation command line was CONFIG_FILES = $CONFIG_FILES CONFIG_HEADERS = $CONFIG_HEADERS CONFIG_LINKS = $CONFIG_LINKS CONFIG_COMMANDS = $CONFIG_COMMANDS $ $0 $@ on `(hostname || uname -n) 2>/dev/null | sed 1q` " _ACEOF case $ac_config_files in *" "*) set x $ac_config_files; shift; ac_config_files=$*;; esac cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 # Files that config.status was made for. config_files="$ac_config_files" _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 ac_cs_usage="\ \`$as_me' instantiates files and other configuration actions from templates according to the current configuration. Unless the files and actions are specified as TAGs, all are instantiated by default. Usage: $0 [OPTION]... [TAG]... -h, --help print this help, then exit -V, --version print version number and configuration settings, then exit --config print configuration, then exit -q, --quiet, --silent do not print progress messages -d, --debug don't remove temporary files --recheck update $as_me by reconfiguring in the same conditions --file=FILE[:TEMPLATE] instantiate the configuration file FILE Configuration files: $config_files Report bugs to the package provider." _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" ac_cs_version="\\ suite3270-lib config.status 4.0 configured by $0, generated by GNU Autoconf 2.69, with options \\"\$ac_cs_config\\" Copyright (C) 2012 Free Software Foundation, Inc. This config.status script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it." ac_pwd='$ac_pwd' srcdir='$srcdir' test -n "\$AWK" || AWK=awk _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # The default lists apply if the user does not specify any file. ac_need_defaults=: while test $# != 0 do case $1 in --*=?*) ac_option=`expr "X$1" : 'X\([^=]*\)='` ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'` ac_shift=: ;; --*=) ac_option=`expr "X$1" : 'X\([^=]*\)='` ac_optarg= ac_shift=: ;; *) ac_option=$1 ac_optarg=$2 ac_shift=shift ;; esac case $ac_option in # Handling of the options. -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) ac_cs_recheck=: ;; --version | --versio | --versi | --vers | --ver | --ve | --v | -V ) $as_echo "$ac_cs_version"; exit ;; --config | --confi | --conf | --con | --co | --c ) $as_echo "$ac_cs_config"; exit ;; --debug | --debu | --deb | --de | --d | -d ) debug=: ;; --file | --fil | --fi | --f ) $ac_shift case $ac_optarg in *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; '') as_fn_error $? "missing file argument" ;; esac as_fn_append CONFIG_FILES " '$ac_optarg'" ac_need_defaults=false;; --he | --h | --help | --hel | -h ) $as_echo "$ac_cs_usage"; exit ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil | --si | --s) ac_cs_silent=: ;; # This is an error. -*) as_fn_error $? "unrecognized option: \`$1' Try \`$0 --help' for more information." ;; *) as_fn_append ac_config_targets " $1" ac_need_defaults=false ;; esac shift done ac_configure_extra_args= if $ac_cs_silent; then exec 6>/dev/null ac_configure_extra_args="$ac_configure_extra_args --silent" fi _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 if \$ac_cs_recheck; then set X $SHELL '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion shift \$as_echo "running CONFIG_SHELL=$SHELL \$*" >&6 CONFIG_SHELL='$SHELL' export CONFIG_SHELL exec "\$@" fi _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 exec 5>>config.log { echo sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX ## Running $as_me. ## _ASBOX $as_echo "$ac_log" } >&5 _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # Handling of arguments. for ac_config_target in $ac_config_targets do case $ac_config_target in "Makefile.obj") CONFIG_FILES="$CONFIG_FILES Makefile.obj" ;; *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;; esac done # If the user did not use the arguments to specify the items to instantiate, # then the envvar interface is used. Set only those that are not. # We use the long form for the default assignment because of an extremely # bizarre bug on SunOS 4.1.3. if $ac_need_defaults; then test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files fi # Have a temporary directory for convenience. Make it in the build tree # simply because there is no reason against having it here, and in addition, # creating and moving files from /tmp can sometimes cause problems. # Hook for its removal unless debugging. # Note that there is a small window in which the directory will not be cleaned: # after its creation but before its name has been assigned to `$tmp'. $debug || { tmp= ac_tmp= trap 'exit_status=$? : "${ac_tmp:=$tmp}" { test ! -d "$ac_tmp" || rm -fr "$ac_tmp"; } && exit $exit_status ' 0 trap 'as_fn_exit 1' 1 2 13 15 } # Create a (secure) tmp directory for tmp files. { tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` && test -d "$tmp" } || { tmp=./conf$$-$RANDOM (umask 077 && mkdir "$tmp") } || as_fn_error $? "cannot create a temporary directory in ." "$LINENO" 5 ac_tmp=$tmp # Set up the scripts for CONFIG_FILES section. # No need to generate them if there are no CONFIG_FILES. # This happens for instance with `./config.status config.h'. if test -n "$CONFIG_FILES"; then ac_cr=`echo X | tr X '\015'` # On cygwin, bash can eat \r inside `` if the user requested igncr. # But we know of no other shell where ac_cr would be empty at this # point, so we can use a bashism as a fallback. if test "x$ac_cr" = x; then eval ac_cr=\$\'\\r\' fi ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' /dev/null` if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then ac_cs_awk_cr='\\r' else ac_cs_awk_cr=$ac_cr fi echo 'BEGIN {' >"$ac_tmp/subs1.awk" && _ACEOF { echo "cat >conf$$subs.awk <<_ACEOF" && echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' && echo "_ACEOF" } >conf$$subs.sh || as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 ac_delim_num=`echo "$ac_subst_vars" | grep -c '^'` ac_delim='%!_!# ' for ac_last_try in false false false false false :; do . ./conf$$subs.sh || as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 ac_delim_n=`sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | grep -c X` if test $ac_delim_n = $ac_delim_num; then break elif $ac_last_try; then as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 else ac_delim="$ac_delim!$ac_delim _$ac_delim!! " fi done rm -f conf$$subs.sh cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 cat >>"\$ac_tmp/subs1.awk" <<\\_ACAWK && _ACEOF sed -n ' h s/^/S["/; s/!.*/"]=/ p g s/^[^!]*!// :repl t repl s/'"$ac_delim"'$// t delim :nl h s/\(.\{148\}\)..*/\1/ t more1 s/["\\]/\\&/g; s/^/"/; s/$/\\n"\\/ p n b repl :more1 s/["\\]/\\&/g; s/^/"/; s/$/"\\/ p g s/.\{148\}// t nl :delim h s/\(.\{148\}\)..*/\1/ t more2 s/["\\]/\\&/g; s/^/"/; s/$/"/ p b :more2 s/["\\]/\\&/g; s/^/"/; s/$/"\\/ p g s/.\{148\}// t delim ' >$CONFIG_STATUS || ac_write_fail=1 rm -f conf$$subs.awk cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 _ACAWK cat >>"\$ac_tmp/subs1.awk" <<_ACAWK && for (key in S) S_is_set[key] = 1 FS = "" } { line = $ 0 nfields = split(line, field, "@") substed = 0 len = length(field[1]) for (i = 2; i < nfields; i++) { key = field[i] keylen = length(key) if (S_is_set[key]) { value = S[key] line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3) len += length(value) + length(field[++i]) substed = 1 } else len += 1 + keylen } print line } _ACAWK _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g" else cat fi < "$ac_tmp/subs1.awk" > "$ac_tmp/subs.awk" \ || as_fn_error $? "could not setup config files machinery" "$LINENO" 5 _ACEOF # VPATH may cause trouble with some makes, so we remove sole $(srcdir), # ${srcdir} and @srcdir@ entries from VPATH if srcdir is ".", strip leading and # trailing colons and then remove the whole line if VPATH becomes empty # (actually we leave an empty line to preserve line numbers). if test "x$srcdir" = x.; then ac_vpsub='/^[ ]*VPATH[ ]*=[ ]*/{ h s/// s/^/:/ s/[ ]*$/:/ s/:\$(srcdir):/:/g s/:\${srcdir}:/:/g s/:@srcdir@:/:/g s/^:*// s/:*$// x s/\(=[ ]*\).*/\1/ G s/\n// s/^[^=]*=[ ]*$// }' fi cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 fi # test -n "$CONFIG_FILES" eval set X " :F $CONFIG_FILES " shift for ac_tag do case $ac_tag in :[FHLC]) ac_mode=$ac_tag; continue;; esac case $ac_mode$ac_tag in :[FHL]*:*);; :L* | :C*:*) as_fn_error $? "invalid tag \`$ac_tag'" "$LINENO" 5;; :[FH]-) ac_tag=-:-;; :[FH]*) ac_tag=$ac_tag:$ac_tag.in;; esac ac_save_IFS=$IFS IFS=: set x $ac_tag IFS=$ac_save_IFS shift ac_file=$1 shift case $ac_mode in :L) ac_source=$1;; :[FH]) ac_file_inputs= for ac_f do case $ac_f in -) ac_f="$ac_tmp/stdin";; *) # Look for the file first in the build tree, then in the source tree # (if the path is not absolute). The absolute path cannot be DOS-style, # because $ac_f cannot contain `:'. test -f "$ac_f" || case $ac_f in [\\/$]*) false;; *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";; esac || as_fn_error 1 "cannot find input file: \`$ac_f'" "$LINENO" 5;; esac case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac as_fn_append ac_file_inputs " '$ac_f'" done # Let's still pretend it is `configure' which instantiates (i.e., don't # use $as_me), people would be surprised to read: # /* config.h. Generated by config.status. */ configure_input='Generated from '` $as_echo "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g' `' by configure.' if test x"$ac_file" != x-; then configure_input="$ac_file. $configure_input" { $as_echo "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5 $as_echo "$as_me: creating $ac_file" >&6;} fi # Neutralize special characters interpreted by sed in replacement strings. case $configure_input in #( *\&* | *\|* | *\\* ) ac_sed_conf_input=`$as_echo "$configure_input" | sed 's/[\\\\&|]/\\\\&/g'`;; #( *) ac_sed_conf_input=$configure_input;; esac case $ac_tag in *:-:* | *:-) cat >"$ac_tmp/stdin" \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;; esac ;; esac ac_dir=`$as_dirname -- "$ac_file" || $as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$ac_file" : 'X\(//\)[^/]' \| \ X"$ac_file" : 'X\(//\)$' \| \ X"$ac_file" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$ac_file" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` as_dir="$ac_dir"; as_fn_mkdir_p ac_builddir=. case "$ac_dir" in .) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` # A ".." for each directory in $ac_dir_suffix. ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` case $ac_top_builddir_sub in "") ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; esac ;; esac ac_abs_top_builddir=$ac_pwd ac_abs_builddir=$ac_pwd$ac_dir_suffix # for backward compatibility: ac_top_builddir=$ac_top_build_prefix case $srcdir in .) # We are building in place. ac_srcdir=. ac_top_srcdir=$ac_top_builddir_sub ac_abs_top_srcdir=$ac_pwd ;; [\\/]* | ?:[\\/]* ) # Absolute name. ac_srcdir=$srcdir$ac_dir_suffix; ac_top_srcdir=$srcdir ac_abs_top_srcdir=$srcdir ;; *) # Relative name. ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix ac_top_srcdir=$ac_top_build_prefix$srcdir ac_abs_top_srcdir=$ac_pwd/$srcdir ;; esac ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix case $ac_mode in :F) # # CONFIG_FILE # _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # If the template does not know about datarootdir, expand it. # FIXME: This hack should be removed a few years after 2.60. ac_datarootdir_hack=; ac_datarootdir_seen= ac_sed_dataroot=' /datarootdir/ { p q } /@datadir@/p /@docdir@/p /@infodir@/p /@localedir@/p /@mandir@/p' case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in *datarootdir*) ac_datarootdir_seen=yes;; *@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 $as_echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;} _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_datarootdir_hack=' s&@datadir@&$datadir&g s&@docdir@&$docdir&g s&@infodir@&$infodir&g s&@localedir@&$localedir&g s&@mandir@&$mandir&g s&\\\${datarootdir}&$datarootdir&g' ;; esac _ACEOF # Neutralize VPATH when `$srcdir' = `.'. # Shell code in configure.ac might set extrasub. # FIXME: do we really want to maintain this feature? cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_sed_extra="$ac_vpsub $extrasub _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 :t /@[a-zA-Z_][a-zA-Z_0-9]*@/!b s|@configure_input@|$ac_sed_conf_input|;t t s&@top_builddir@&$ac_top_builddir_sub&;t t s&@top_build_prefix@&$ac_top_build_prefix&;t t s&@srcdir@&$ac_srcdir&;t t s&@abs_srcdir@&$ac_abs_srcdir&;t t s&@top_srcdir@&$ac_top_srcdir&;t t s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t s&@builddir@&$ac_builddir&;t t s&@abs_builddir@&$ac_abs_builddir&;t t s&@abs_top_builddir@&$ac_abs_top_builddir&;t t $ac_datarootdir_hack " eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$ac_tmp/subs.awk" \ >$ac_tmp/out || as_fn_error $? "could not create $ac_file" "$LINENO" 5 test -z "$ac_datarootdir_hack$ac_datarootdir_seen" && { ac_out=`sed -n '/\${datarootdir}/p' "$ac_tmp/out"`; test -n "$ac_out"; } && { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' \ "$ac_tmp/out"`; test -z "$ac_out"; } && { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir' which seems to be undefined. Please make sure it is defined" >&5 $as_echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir' which seems to be undefined. Please make sure it is defined" >&2;} rm -f "$ac_tmp/stdin" case $ac_file in -) cat "$ac_tmp/out" && rm -f "$ac_tmp/out";; *) rm -f "$ac_file" && mv "$ac_tmp/out" "$ac_file";; esac \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;; esac done # for ac_tag as_fn_exit 0 _ACEOF ac_clean_files=$ac_clean_files_save test $ac_write_fail = 0 || as_fn_error $? "write failure creating $CONFIG_STATUS" "$LINENO" 5 # configure is writing to config.log, and then calls config.status. # config.status does its own redirection, appending to config.log. # Unfortunately, on DOS this fails, as config.log is still kept open # by configure, so config.status won't be able to write to it; its # output is simply discarded. So we exec the FD to /dev/null, # effectively closing config.log, so it can be properly (re)opened and # appended to by config.status. When coming back to configure, we # need to make the FD available again. if test "$no_create" != yes; then ac_cs_success=: ac_config_status_args= test "$silent" = yes && ac_config_status_args="$ac_config_status_args --quiet" exec 5>/dev/null $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false exec 5>>config.log # Use ||, not &&, to avoid exiting from the if with $? = 1, which # would make configure fail if this is the last instruction. $ac_cs_success || as_fn_exit 1 fi if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5 $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;} fi suite3270-4.1/lib/w32xx/configure.in000066400000000000000000000036051413735575200171150ustar00rootroot00000000000000dnl Copyright (c) 2000-2017, 2020 Paul Mattes. dnl All rights reserved. dnl dnl Redistribution and use in source and binary forms, with or without dnl modification, are permitted provided that the following conditions are met: dnl * Redistributions of source code must retain the above copyright dnl notice, this list of conditions and the following disclaimer. dnl * Redistributions in binary form must reproduce the above copyright dnl notice, this list of conditions and the following disclaimer in the dnl documentation and/or other materials provided with the distribution. dnl * Neither the names of Paul Mattes nor the names of his contributors dnl may be used to endorse or promote products derived from this software dnl without specific prior written permission. dnl dnl THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS OR IMPLIED dnl WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF dnl MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO dnl EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, dnl SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED dnl TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR dnl PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF dnl LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING dnl NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS dnl SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. dnl Process this file with autoconf to produce a configure script. AC_INIT(suite3270-lib,4.0) AC_PREREQ(2.50) AC_ARG_ENABLE(tls,[ --disable-tls leave out TLS support]) if test "$enable_tls" = no then WIN_TLS_MODULES="" else WIN_TLS_MODULES=sio_schannel.o fi AC_SUBST(WIN_TLS_MODULES) dnl Generate the files. AC_CONFIG_FILES(Makefile.obj) AC_OUTPUT suite3270-4.1/lib/w32xx/libw32xx_files.mk000066400000000000000000000001401413735575200177700ustar00rootroot00000000000000# Object files specific to libw32xx. LIBW32XX_OBJECTS = snprintf.o w3misc.o windirs.o winvers.o suite3270-4.1/mitm/000077500000000000000000000000001413735575200140055ustar00rootroot00000000000000suite3270-4.1/mitm/.gitignore000066400000000000000000000000241413735575200157710ustar00rootroot00000000000000conf.h Makefile.obj suite3270-4.1/mitm/Makefile.aux000066400000000000000000000041761413735575200162510ustar00rootroot00000000000000# Copyright (c) 1995-2011, 2013-2018 Paul Mattes. # All rights reserved. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # * Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # * Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in the # documentation and/or other materials provided with the distribution. # * Neither the name of Paul Mattes nor his contributors may be used # to endorse or promote products derived from this software without # specific prior written permission. # # THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS OR # IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES # OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN # NO EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, # SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED # TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR # PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF # LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING # NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS # SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. # Auxiliary makefile for mitm PRODUCT=mitm all: @echo "Must pick a specific make target." # Development tools. include mitm_files.mk MISC = $(PRODUCT).man HTML = html/Unix-$(PRODUCT).html FILES = $(SOURCES) $(HEADERS) $(MISC) $(HTML) src.tgz: prepare $(FILES) prepare: configure configure: configure.in autoconf MANDEP = man.m4 html.m4 m4man Makefile.aux version.txt MKMAN = ./m4man -t man -p $(PRODUCT) MKHTML = ./m4man -t html -p $(PRODUCT) man: $(PRODUCT).man html/Unix-$(PRODUCT).html $(PRODUCT).man: mitm.man.m4 $(MANDEP) $(MKMAN) -n mitm -o $@ mitm.man.m4 html/Unix-$(PRODUCT).html: mitm.man.m4 $(MANDEP) $(MKHTML) -n mitm -o $@ mitm.man.m4 suite3270-4.1/mitm/Makefile.in000066400000000000000000000043171413735575200160570ustar00rootroot00000000000000# Copyright (c) 2016-2018 Paul Mattes. # All rights reserved. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # * Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # * Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in the # documentation and/or other materials provided with the distribution. # * Neither the name of Paul Mattes nor his contributors may be used # to endorse or promote products derived from this software without # specific prior written permission. # # THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS OR # IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES # OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN # NO EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, # SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED # TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR # PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF # LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING # NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS # SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. # VPATH-based Makefile for mitm top = ../../.. objdir = ../obj/@host@/mitm this = $(top)/mitm export VPATH = $(this):$(top)/Common/x3270if:$(top)/Common export TOP = $(top) export THIS = $(this) MAKEINC = -I$(this) -I$(top)/Common all: $(objdir) cd $(objdir) && $(MAKE) $(MAKEINC) -f $(this)/Makefile.obj $@ install: $(objdir) cd $(objdir) && $(MAKE) $(MAKEINC) -f $(this)/Makefile.obj $@ install.man: $(objdir) cd $(objdir) && $(MAKE) $(MAKEINC) -f $(this)/Makefile.obj $@ clean: $(objdir) cd $(objdir) && $(MAKE) $(MAKEINC) -f $(this)/Makefile.obj $@ clobber: $(objdir) cd $(objdir) && $(MAKE) $(MAKEINC) -f $(this)/Makefile.obj $@ depend: $(objdir) cd $(objdir) && $(MAKE) $(MAKEINC) -f $(this)/Makefile.obj $@ $(objdir): mkdir -p $(objdir) suite3270-4.1/mitm/Makefile.obj.in000066400000000000000000000054371413735575200166340ustar00rootroot00000000000000# Copyright (c) 1999-2009, 2013-2018, 2020 Paul Mattes. # All rights reserved. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # * Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # * Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in the # documentation and/or other materials provided with the distribution. # * Neither the name of Paul Mattes nor his contributors may be used # to endorse or promote products derived from this software without # specific prior written permission. # # THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS OR # IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES # OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN # NO EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, # SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED # TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR # PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF # LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING # NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS # SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. # Makefile for mitm (man-in-the-middle tracing daemon) RM = rm -f CC = @CC@ all: mitm HOST = @host@ include mitm_files.mk libs.mk VOBJS = $(MITM_OBJECTS) OBJS1 = $(VOBJS) version.o LIBDIR = @libdir@ prefix = @prefix@ exec_prefix = @exec_prefix@ sysconfdir = @sysconfdir@ datarootdir = @datarootdir@ MANDIR = @mandir@ BINDIR = @bindir@ INSTALL = @INSTALL@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_DATA = @INSTALL_DATA@ CCOPTIONS = @CCOPTIONS@ XCPPFLAGS = -I$(THIS) -I$(TOP)/include @CPPFLAGS@ CFLAGS = $(CCOPTIONS) $(CDEBUGFLAGS) $(XCPPFLAGS) @CFLAGS@ LDFLAGS = @LDFLAGS@ LIBS = @LIBS@ XVERSION = xversion.c version.o: mkversion.sh $(VOBJS) version.txt $(RM) $(XVERSION) sh $< mitm $(filter %.txt,$^) >$(XVERSION) $(CC) $(CFLAGS) -c -o $@ $(XVERSION) $(RM) $(XVERSION) mitm: $(OBJS1) $(DEP3270) $(CC) -o $@ $(LDFLAGS) $(OBJS1) $(LD32XX) $(LIBS) man:: mitm.man if [ ! -f $(notdir $^) ]; then cp $< $(notdir $^); fi install: mitm [ -d $(DESTDIR)$(BINDIR) ] || \ mkdir -p $(DESTDIR)$(BINDIR) $(INSTALL_PROGRAM) mitm $(DESTDIR)$(BINDIR)/mitm install.man: man [ -d $(DESTDIR)$(MANDIR)/man1 ] || \ mkdir -p $(DESTDIR)$(MANDIR)/man1 $(INSTALL_DATA) mitm.man $(DESTDIR)$(MANDIR)/man1/mitm.1 clean: $(RM) *.o clobber: clean $(RM) mitm *.d *.man # Include auto-generated dependencies. -include $(OBJS:.o=.d) suite3270-4.1/mitm/conf.h.in000066400000000000000000000035151413735575200155140ustar00rootroot00000000000000/* * Copyright (c) 2000-2009, 2015, 2017-2018 Paul Mattes. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of Paul Mattes nor his contributors may be used * to endorse or promote products derived from this software without * specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. */ /* * conf.h * System-specific #defines for libraries and library functions. * Automatically generated from conf.h.in by configure. */ /* Libraries. */ /* Header files. */ #undef HAVE_SYS_SELECT_H #undef HAVE_GETOPT_H /* Uncommon functions. */ /* Configuration options. */ /* Optional parts. */ suite3270-4.1/mitm/configure000077500000000000000000004265571413735575200157370ustar00rootroot00000000000000#! /bin/sh # Guess values for system-dependent variables and create Makefiles. # Generated by GNU Autoconf 2.69 for mitm 4.0. # # # Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc. # # # This configure script is free software; the Free Software Foundation # gives unlimited permission to copy, distribute and modify it. ## -------------------- ## ## M4sh Initialization. ## ## -------------------- ## # Be more Bourne compatible DUALCASE=1; export DUALCASE # for MKS sh if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST else case `(set -o) 2>/dev/null` in #( *posix*) : set -o posix ;; #( *) : ;; esac fi as_nl=' ' export as_nl # Printing a long string crashes Solaris 7 /usr/bin/printf. as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo # Prefer a ksh shell builtin over an external printf program on Solaris, # but without wasting forks for bash or zsh. if test -z "$BASH_VERSION$ZSH_VERSION" \ && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then as_echo='print -r --' as_echo_n='print -rn --' elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then as_echo='printf %s\n' as_echo_n='printf %s' else if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' as_echo_n='/usr/ucb/echo -n' else as_echo_body='eval expr "X$1" : "X\\(.*\\)"' as_echo_n_body='eval arg=$1; case $arg in #( *"$as_nl"*) expr "X$arg" : "X\\(.*\\)$as_nl"; arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; esac; expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" ' export as_echo_n_body as_echo_n='sh -c $as_echo_n_body as_echo' fi export as_echo_body as_echo='sh -c $as_echo_body as_echo' fi # The user is always right. if test "${PATH_SEPARATOR+set}" != set; then PATH_SEPARATOR=: (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || PATH_SEPARATOR=';' } fi # IFS # We need space, tab and new line, in precisely that order. Quoting is # there to prevent editors from complaining about space-tab. # (If _AS_PATH_WALK were called with IFS unset, it would disable word # splitting by setting IFS to empty value.) IFS=" "" $as_nl" # Find who we are. Look in the path if we contain no directory separator. as_myself= case $0 in #(( *[\\/]* ) as_myself=$0 ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break done IFS=$as_save_IFS ;; esac # We did not find ourselves, most probably we were run as `sh COMMAND' # in which case we are not to be found in the path. if test "x$as_myself" = x; then as_myself=$0 fi if test ! -f "$as_myself"; then $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 exit 1 fi # Unset variables that we do not need and which cause bugs (e.g. in # pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" # suppresses any "Segmentation fault" message there. '((' could # trigger a bug in pdksh 5.2.14. for as_var in BASH_ENV ENV MAIL MAILPATH do eval test x\${$as_var+set} = xset \ && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : done PS1='$ ' PS2='> ' PS4='+ ' # NLS nuisances. LC_ALL=C export LC_ALL LANGUAGE=C export LANGUAGE # CDPATH. (unset CDPATH) >/dev/null 2>&1 && unset CDPATH # Use a proper internal environment variable to ensure we don't fall # into an infinite loop, continuously re-executing ourselves. if test x"${_as_can_reexec}" != xno && test "x$CONFIG_SHELL" != x; then _as_can_reexec=no; export _as_can_reexec; # We cannot yet assume a decent shell, so we have to provide a # neutralization value for shells without unset; and this also # works around shells that cannot unset nonexistent variables. # Preserve -v and -x to the replacement shell. BASH_ENV=/dev/null ENV=/dev/null (unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV case $- in # (((( *v*x* | *x*v* ) as_opts=-vx ;; *v* ) as_opts=-v ;; *x* ) as_opts=-x ;; * ) as_opts= ;; esac exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} # Admittedly, this is quite paranoid, since all the known shells bail # out after a failed `exec'. $as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2 as_fn_exit 255 fi # We don't want this to propagate to other subprocesses. { _as_can_reexec=; unset _as_can_reexec;} if test "x$CONFIG_SHELL" = x; then as_bourne_compatible="if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on \${1+\"\$@\"}, which # is contrary to our usage. Disable this feature. alias -g '\${1+\"\$@\"}'='\"\$@\"' setopt NO_GLOB_SUBST else case \`(set -o) 2>/dev/null\` in #( *posix*) : set -o posix ;; #( *) : ;; esac fi " as_required="as_fn_return () { (exit \$1); } as_fn_success () { as_fn_return 0; } as_fn_failure () { as_fn_return 1; } as_fn_ret_success () { return 0; } as_fn_ret_failure () { return 1; } exitcode=0 as_fn_success || { exitcode=1; echo as_fn_success failed.; } as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; } as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; } as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; } if ( set x; as_fn_ret_success y && test x = \"\$1\" ); then : else exitcode=1; echo positional parameters were not saved. fi test x\$exitcode = x0 || exit 1 test -x / || exit 1" as_suggested=" as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" && test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1 test \$(( 1 + 1 )) = 2 || exit 1" if (eval "$as_required") 2>/dev/null; then : as_have_required=yes else as_have_required=no fi if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null; then : else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR as_found=false for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. as_found=: case $as_dir in #( /*) for as_base in sh bash ksh sh5; do # Try only shells that exist, to save several forks. as_shell=$as_dir/$as_base if { test -f "$as_shell" || test -f "$as_shell.exe"; } && { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$as_shell"; } 2>/dev/null; then : CONFIG_SHELL=$as_shell as_have_required=yes if { $as_echo "$as_bourne_compatible""$as_suggested" | as_run=a "$as_shell"; } 2>/dev/null; then : break 2 fi fi done;; esac as_found=false done $as_found || { if { test -f "$SHELL" || test -f "$SHELL.exe"; } && { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$SHELL"; } 2>/dev/null; then : CONFIG_SHELL=$SHELL as_have_required=yes fi; } IFS=$as_save_IFS if test "x$CONFIG_SHELL" != x; then : export CONFIG_SHELL # We cannot yet assume a decent shell, so we have to provide a # neutralization value for shells without unset; and this also # works around shells that cannot unset nonexistent variables. # Preserve -v and -x to the replacement shell. BASH_ENV=/dev/null ENV=/dev/null (unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV case $- in # (((( *v*x* | *x*v* ) as_opts=-vx ;; *v* ) as_opts=-v ;; *x* ) as_opts=-x ;; * ) as_opts= ;; esac exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} # Admittedly, this is quite paranoid, since all the known shells bail # out after a failed `exec'. $as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2 exit 255 fi if test x$as_have_required = xno; then : $as_echo "$0: This script requires a shell more modern than all" $as_echo "$0: the shells that I found on your system." if test x${ZSH_VERSION+set} = xset ; then $as_echo "$0: In particular, zsh $ZSH_VERSION has bugs and should" $as_echo "$0: be upgraded to zsh 4.3.4 or later." else $as_echo "$0: Please tell bug-autoconf@gnu.org about your system, $0: including any error possibly output before this $0: message. Then install a modern shell, or manually run $0: the script under such a shell if you do have one." fi exit 1 fi fi fi SHELL=${CONFIG_SHELL-/bin/sh} export SHELL # Unset more variables known to interfere with behavior of common tools. CLICOLOR_FORCE= GREP_OPTIONS= unset CLICOLOR_FORCE GREP_OPTIONS ## --------------------- ## ## M4sh Shell Functions. ## ## --------------------- ## # as_fn_unset VAR # --------------- # Portably unset VAR. as_fn_unset () { { eval $1=; unset $1;} } as_unset=as_fn_unset # as_fn_set_status STATUS # ----------------------- # Set $? to STATUS, without forking. as_fn_set_status () { return $1 } # as_fn_set_status # as_fn_exit STATUS # ----------------- # Exit the shell with STATUS, even in a "trap 0" or "set -e" context. as_fn_exit () { set +e as_fn_set_status $1 exit $1 } # as_fn_exit # as_fn_mkdir_p # ------------- # Create "$as_dir" as a directory, including parents if necessary. as_fn_mkdir_p () { case $as_dir in #( -*) as_dir=./$as_dir;; esac test -d "$as_dir" || eval $as_mkdir_p || { as_dirs= while :; do case $as_dir in #( *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( *) as_qdir=$as_dir;; esac as_dirs="'$as_qdir' $as_dirs" as_dir=`$as_dirname -- "$as_dir" || $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_dir" : 'X\(//\)[^/]' \| \ X"$as_dir" : 'X\(//\)$' \| \ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$as_dir" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` test -d "$as_dir" && break done test -z "$as_dirs" || eval "mkdir $as_dirs" } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" } # as_fn_mkdir_p # as_fn_executable_p FILE # ----------------------- # Test if FILE is an executable regular file. as_fn_executable_p () { test -f "$1" && test -x "$1" } # as_fn_executable_p # as_fn_append VAR VALUE # ---------------------- # Append the text in VALUE to the end of the definition contained in VAR. Take # advantage of any shell optimizations that allow amortized linear growth over # repeated appends, instead of the typical quadratic growth present in naive # implementations. if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : eval 'as_fn_append () { eval $1+=\$2 }' else as_fn_append () { eval $1=\$$1\$2 } fi # as_fn_append # as_fn_arith ARG... # ------------------ # Perform arithmetic evaluation on the ARGs, and store the result in the # global $as_val. Take advantage of shells that can avoid forks. The arguments # must be portable across $(()) and expr. if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : eval 'as_fn_arith () { as_val=$(( $* )) }' else as_fn_arith () { as_val=`expr "$@" || test $? -eq 1` } fi # as_fn_arith # as_fn_error STATUS ERROR [LINENO LOG_FD] # ---------------------------------------- # Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are # provided, also output the error to LOG_FD, referencing LINENO. Then exit the # script with STATUS, using 1 if that was 0. as_fn_error () { as_status=$1; test $as_status -eq 0 && as_status=1 if test "$4"; then as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 fi $as_echo "$as_me: error: $2" >&2 as_fn_exit $as_status } # as_fn_error if expr a : '\(a\)' >/dev/null 2>&1 && test "X`expr 00001 : '.*\(...\)'`" = X001; then as_expr=expr else as_expr=false fi if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then as_basename=basename else as_basename=false fi if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then as_dirname=dirname else as_dirname=false fi as_me=`$as_basename -- "$0" || $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ X"$0" : 'X\(//\)$' \| \ X"$0" : 'X\(/\)' \| . 2>/dev/null || $as_echo X/"$0" | sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/ q } /^X\/\(\/\/\)$/{ s//\1/ q } /^X\/\(\/\).*/{ s//\1/ q } s/.*/./; q'` # Avoid depending upon Character Ranges. as_cr_letters='abcdefghijklmnopqrstuvwxyz' as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' as_cr_Letters=$as_cr_letters$as_cr_LETTERS as_cr_digits='0123456789' as_cr_alnum=$as_cr_Letters$as_cr_digits as_lineno_1=$LINENO as_lineno_1a=$LINENO as_lineno_2=$LINENO as_lineno_2a=$LINENO eval 'test "x$as_lineno_1'$as_run'" != "x$as_lineno_2'$as_run'" && test "x`expr $as_lineno_1'$as_run' + 1`" = "x$as_lineno_2'$as_run'"' || { # Blame Lee E. McMahon (1931-1989) for sed's syntax. :-) sed -n ' p /[$]LINENO/= ' <$as_myself | sed ' s/[$]LINENO.*/&-/ t lineno b :lineno N :loop s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ t loop s/-\n.*// ' >$as_me.lineno && chmod +x "$as_me.lineno" || { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; } # If we had to re-execute with $CONFIG_SHELL, we're ensured to have # already done that, so ensure we don't try to do so again and fall # in an infinite loop. This has already happened in practice. _as_can_reexec=no; export _as_can_reexec # Don't try to exec as it changes $[0], causing all sort of problems # (the dirname of $[0] is not the place where we might find the # original and so on. Autoconf is especially sensitive to this). . "./$as_me.lineno" # Exit status is that of the last command. exit } ECHO_C= ECHO_N= ECHO_T= case `echo -n x` in #((((( -n*) case `echo 'xy\c'` in *c*) ECHO_T=' ';; # ECHO_T is single tab character. xy) ECHO_C='\c';; *) echo `echo ksh88 bug on AIX 6.1` > /dev/null ECHO_T=' ';; esac;; *) ECHO_N='-n';; esac rm -f conf$$ conf$$.exe conf$$.file if test -d conf$$.dir; then rm -f conf$$.dir/conf$$.file else rm -f conf$$.dir mkdir conf$$.dir 2>/dev/null fi if (echo >conf$$.file) 2>/dev/null; then if ln -s conf$$.file conf$$ 2>/dev/null; then as_ln_s='ln -s' # ... but there are two gotchas: # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. # In both cases, we have to default to `cp -pR'. ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || as_ln_s='cp -pR' elif ln conf$$.file conf$$ 2>/dev/null; then as_ln_s=ln else as_ln_s='cp -pR' fi else as_ln_s='cp -pR' fi rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file rmdir conf$$.dir 2>/dev/null if mkdir -p . 2>/dev/null; then as_mkdir_p='mkdir -p "$as_dir"' else test -d ./-p && rmdir ./-p as_mkdir_p=false fi as_test_x='test -x' as_executable_p=as_fn_executable_p # Sed expression to map a string onto a valid CPP name. as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" # Sed expression to map a string onto a valid variable name. as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" test -n "$DJDIR" || exec 7<&0 &1 # Name of the host. # hostname on some systems (SVR3.2, old GNU/Linux) returns a bogus exit status, # so uname gets run too. ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q` # # Initializations. # ac_default_prefix=/usr/local ac_clean_files= ac_config_libobj_dir=. LIBOBJS= cross_compiling=no subdirs= MFLAGS= MAKEFLAGS= # Identity of this package. PACKAGE_NAME='mitm' PACKAGE_TARNAME='mitm' PACKAGE_VERSION='4.0' PACKAGE_STRING='mitm 4.0' PACKAGE_BUGREPORT='' PACKAGE_URL='' # Factoring default headers for most tests. ac_includes_default="\ #include #ifdef HAVE_SYS_TYPES_H # include #endif #ifdef HAVE_SYS_STAT_H # include #endif #ifdef STDC_HEADERS # include # include #else # ifdef HAVE_STDLIB_H # include # endif #endif #ifdef HAVE_STRING_H # if !defined STDC_HEADERS && defined HAVE_MEMORY_H # include # endif # include #endif #ifdef HAVE_STRINGS_H # include #endif #ifdef HAVE_INTTYPES_H # include #endif #ifdef HAVE_STDINT_H # include #endif #ifdef HAVE_UNISTD_H # include #endif" ac_subst_vars='LTLIBOBJS LIBOBJS EGREP GREP CPP CCOPTIONS host_os host_vendor host_cpu host build_os build_vendor build_cpu build OBJEXT EXEEXT ac_ct_CC CPPFLAGS LDFLAGS CFLAGS CC INSTALL_DATA INSTALL_SCRIPT INSTALL_PROGRAM target_alias host_alias build_alias LIBS ECHO_T ECHO_N ECHO_C DEFS mandir localedir libdir psdir pdfdir dvidir htmldir infodir docdir oldincludedir includedir runstatedir localstatedir sharedstatedir sysconfdir datadir datarootdir libexecdir sbindir bindir program_transform_name prefix exec_prefix PACKAGE_URL PACKAGE_BUGREPORT PACKAGE_STRING PACKAGE_VERSION PACKAGE_TARNAME PACKAGE_NAME PATH_SEPARATOR SHELL' ac_subst_files='' ac_user_opts=' enable_option_checking ' ac_precious_vars='build_alias host_alias target_alias CC CFLAGS LDFLAGS LIBS CPPFLAGS CPP' # Initialize some variables set by options. ac_init_help= ac_init_version=false ac_unrecognized_opts= ac_unrecognized_sep= # The variables have the same names as the options, with # dashes changed to underlines. cache_file=/dev/null exec_prefix=NONE no_create= no_recursion= prefix=NONE program_prefix=NONE program_suffix=NONE program_transform_name=s,x,x, silent= site= srcdir= verbose= x_includes=NONE x_libraries=NONE # Installation directory options. # These are left unexpanded so users can "make install exec_prefix=/foo" # and all the variables that are supposed to be based on exec_prefix # by default will actually change. # Use braces instead of parens because sh, perl, etc. also accept them. # (The list follows the same order as the GNU Coding Standards.) bindir='${exec_prefix}/bin' sbindir='${exec_prefix}/sbin' libexecdir='${exec_prefix}/libexec' datarootdir='${prefix}/share' datadir='${datarootdir}' sysconfdir='${prefix}/etc' sharedstatedir='${prefix}/com' localstatedir='${prefix}/var' runstatedir='${localstatedir}/run' includedir='${prefix}/include' oldincludedir='/usr/include' docdir='${datarootdir}/doc/${PACKAGE_TARNAME}' infodir='${datarootdir}/info' htmldir='${docdir}' dvidir='${docdir}' pdfdir='${docdir}' psdir='${docdir}' libdir='${exec_prefix}/lib' localedir='${datarootdir}/locale' mandir='${datarootdir}/man' ac_prev= ac_dashdash= for ac_option do # If the previous option needs an argument, assign it. if test -n "$ac_prev"; then eval $ac_prev=\$ac_option ac_prev= continue fi case $ac_option in *=?*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;; *=) ac_optarg= ;; *) ac_optarg=yes ;; esac # Accept the important Cygnus configure options, so we can diagnose typos. case $ac_dashdash$ac_option in --) ac_dashdash=yes ;; -bindir | --bindir | --bindi | --bind | --bin | --bi) ac_prev=bindir ;; -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*) bindir=$ac_optarg ;; -build | --build | --buil | --bui | --bu) ac_prev=build_alias ;; -build=* | --build=* | --buil=* | --bui=* | --bu=*) build_alias=$ac_optarg ;; -cache-file | --cache-file | --cache-fil | --cache-fi \ | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) ac_prev=cache_file ;; -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) cache_file=$ac_optarg ;; --config-cache | -C) cache_file=config.cache ;; -datadir | --datadir | --datadi | --datad) ac_prev=datadir ;; -datadir=* | --datadir=* | --datadi=* | --datad=*) datadir=$ac_optarg ;; -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \ | --dataroo | --dataro | --datar) ac_prev=datarootdir ;; -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \ | --dataroot=* | --dataroo=* | --dataro=* | --datar=*) datarootdir=$ac_optarg ;; -disable-* | --disable-*) ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid feature name: $ac_useropt" ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "enable_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--disable-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval enable_$ac_useropt=no ;; -docdir | --docdir | --docdi | --doc | --do) ac_prev=docdir ;; -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*) docdir=$ac_optarg ;; -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv) ac_prev=dvidir ;; -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*) dvidir=$ac_optarg ;; -enable-* | --enable-*) ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid feature name: $ac_useropt" ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "enable_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--enable-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval enable_$ac_useropt=\$ac_optarg ;; -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ | --exec | --exe | --ex) ac_prev=exec_prefix ;; -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \ | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \ | --exec=* | --exe=* | --ex=*) exec_prefix=$ac_optarg ;; -gas | --gas | --ga | --g) # Obsolete; use --with-gas. with_gas=yes ;; -help | --help | --hel | --he | -h) ac_init_help=long ;; -help=r* | --help=r* | --hel=r* | --he=r* | -hr*) ac_init_help=recursive ;; -help=s* | --help=s* | --hel=s* | --he=s* | -hs*) ac_init_help=short ;; -host | --host | --hos | --ho) ac_prev=host_alias ;; -host=* | --host=* | --hos=* | --ho=*) host_alias=$ac_optarg ;; -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht) ac_prev=htmldir ;; -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \ | --ht=*) htmldir=$ac_optarg ;; -includedir | --includedir | --includedi | --included | --include \ | --includ | --inclu | --incl | --inc) ac_prev=includedir ;; -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \ | --includ=* | --inclu=* | --incl=* | --inc=*) includedir=$ac_optarg ;; -infodir | --infodir | --infodi | --infod | --info | --inf) ac_prev=infodir ;; -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*) infodir=$ac_optarg ;; -libdir | --libdir | --libdi | --libd) ac_prev=libdir ;; -libdir=* | --libdir=* | --libdi=* | --libd=*) libdir=$ac_optarg ;; -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \ | --libexe | --libex | --libe) ac_prev=libexecdir ;; -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \ | --libexe=* | --libex=* | --libe=*) libexecdir=$ac_optarg ;; -localedir | --localedir | --localedi | --localed | --locale) ac_prev=localedir ;; -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*) localedir=$ac_optarg ;; -localstatedir | --localstatedir | --localstatedi | --localstated \ | --localstate | --localstat | --localsta | --localst | --locals) ac_prev=localstatedir ;; -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*) localstatedir=$ac_optarg ;; -mandir | --mandir | --mandi | --mand | --man | --ma | --m) ac_prev=mandir ;; -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*) mandir=$ac_optarg ;; -nfp | --nfp | --nf) # Obsolete; use --without-fp. with_fp=no ;; -no-create | --no-create | --no-creat | --no-crea | --no-cre \ | --no-cr | --no-c | -n) no_create=yes ;; -no-recursion | --no-recursion | --no-recursio | --no-recursi \ | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) no_recursion=yes ;; -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \ | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \ | --oldin | --oldi | --old | --ol | --o) ac_prev=oldincludedir ;; -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \ | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \ | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*) oldincludedir=$ac_optarg ;; -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) ac_prev=prefix ;; -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) prefix=$ac_optarg ;; -program-prefix | --program-prefix | --program-prefi | --program-pref \ | --program-pre | --program-pr | --program-p) ac_prev=program_prefix ;; -program-prefix=* | --program-prefix=* | --program-prefi=* \ | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*) program_prefix=$ac_optarg ;; -program-suffix | --program-suffix | --program-suffi | --program-suff \ | --program-suf | --program-su | --program-s) ac_prev=program_suffix ;; -program-suffix=* | --program-suffix=* | --program-suffi=* \ | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*) program_suffix=$ac_optarg ;; -program-transform-name | --program-transform-name \ | --program-transform-nam | --program-transform-na \ | --program-transform-n | --program-transform- \ | --program-transform | --program-transfor \ | --program-transfo | --program-transf \ | --program-trans | --program-tran \ | --progr-tra | --program-tr | --program-t) ac_prev=program_transform_name ;; -program-transform-name=* | --program-transform-name=* \ | --program-transform-nam=* | --program-transform-na=* \ | --program-transform-n=* | --program-transform-=* \ | --program-transform=* | --program-transfor=* \ | --program-transfo=* | --program-transf=* \ | --program-trans=* | --program-tran=* \ | --progr-tra=* | --program-tr=* | --program-t=*) program_transform_name=$ac_optarg ;; -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd) ac_prev=pdfdir ;; -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*) pdfdir=$ac_optarg ;; -psdir | --psdir | --psdi | --psd | --ps) ac_prev=psdir ;; -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*) psdir=$ac_optarg ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil) silent=yes ;; -runstatedir | --runstatedir | --runstatedi | --runstated \ | --runstate | --runstat | --runsta | --runst | --runs \ | --run | --ru | --r) ac_prev=runstatedir ;; -runstatedir=* | --runstatedir=* | --runstatedi=* | --runstated=* \ | --runstate=* | --runstat=* | --runsta=* | --runst=* | --runs=* \ | --run=* | --ru=* | --r=*) runstatedir=$ac_optarg ;; -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) ac_prev=sbindir ;; -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ | --sbi=* | --sb=*) sbindir=$ac_optarg ;; -sharedstatedir | --sharedstatedir | --sharedstatedi \ | --sharedstated | --sharedstate | --sharedstat | --sharedsta \ | --sharedst | --shareds | --shared | --share | --shar \ | --sha | --sh) ac_prev=sharedstatedir ;; -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \ | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \ | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \ | --sha=* | --sh=*) sharedstatedir=$ac_optarg ;; -site | --site | --sit) ac_prev=site ;; -site=* | --site=* | --sit=*) site=$ac_optarg ;; -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) ac_prev=srcdir ;; -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) srcdir=$ac_optarg ;; -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \ | --syscon | --sysco | --sysc | --sys | --sy) ac_prev=sysconfdir ;; -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \ | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*) sysconfdir=$ac_optarg ;; -target | --target | --targe | --targ | --tar | --ta | --t) ac_prev=target_alias ;; -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) target_alias=$ac_optarg ;; -v | -verbose | --verbose | --verbos | --verbo | --verb) verbose=yes ;; -version | --version | --versio | --versi | --vers | -V) ac_init_version=: ;; -with-* | --with-*) ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid package name: $ac_useropt" ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "with_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--with-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval with_$ac_useropt=\$ac_optarg ;; -without-* | --without-*) ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid package name: $ac_useropt" ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "with_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--without-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval with_$ac_useropt=no ;; --x) # Obsolete; use --with-x. with_x=yes ;; -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \ | --x-incl | --x-inc | --x-in | --x-i) ac_prev=x_includes ;; -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \ | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*) x_includes=$ac_optarg ;; -x-libraries | --x-libraries | --x-librarie | --x-librari \ | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l) ac_prev=x_libraries ;; -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \ | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) x_libraries=$ac_optarg ;; -*) as_fn_error $? "unrecognized option: \`$ac_option' Try \`$0 --help' for more information" ;; *=*) ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='` # Reject names that are not valid shell variable names. case $ac_envvar in #( '' | [0-9]* | *[!_$as_cr_alnum]* ) as_fn_error $? "invalid variable name: \`$ac_envvar'" ;; esac eval $ac_envvar=\$ac_optarg export $ac_envvar ;; *) # FIXME: should be removed in autoconf 3.0. $as_echo "$as_me: WARNING: you should use --build, --host, --target" >&2 expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && $as_echo "$as_me: WARNING: invalid host type: $ac_option" >&2 : "${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}" ;; esac done if test -n "$ac_prev"; then ac_option=--`echo $ac_prev | sed 's/_/-/g'` as_fn_error $? "missing argument to $ac_option" fi if test -n "$ac_unrecognized_opts"; then case $enable_option_checking in no) ;; fatal) as_fn_error $? "unrecognized options: $ac_unrecognized_opts" ;; *) $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;; esac fi # Check all directory arguments for consistency. for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \ datadir sysconfdir sharedstatedir localstatedir includedir \ oldincludedir docdir infodir htmldir dvidir pdfdir psdir \ libdir localedir mandir runstatedir do eval ac_val=\$$ac_var # Remove trailing slashes. case $ac_val in */ ) ac_val=`expr "X$ac_val" : 'X\(.*[^/]\)' \| "X$ac_val" : 'X\(.*\)'` eval $ac_var=\$ac_val;; esac # Be sure to have absolute directory names. case $ac_val in [\\/$]* | ?:[\\/]* ) continue;; NONE | '' ) case $ac_var in *prefix ) continue;; esac;; esac as_fn_error $? "expected an absolute directory name for --$ac_var: $ac_val" done # There might be people who depend on the old broken behavior: `$host' # used to hold the argument of --host etc. # FIXME: To remove some day. build=$build_alias host=$host_alias target=$target_alias # FIXME: To remove some day. if test "x$host_alias" != x; then if test "x$build_alias" = x; then cross_compiling=maybe elif test "x$build_alias" != "x$host_alias"; then cross_compiling=yes fi fi ac_tool_prefix= test -n "$host_alias" && ac_tool_prefix=$host_alias- test "$silent" = yes && exec 6>/dev/null ac_pwd=`pwd` && test -n "$ac_pwd" && ac_ls_di=`ls -di .` && ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` || as_fn_error $? "working directory cannot be determined" test "X$ac_ls_di" = "X$ac_pwd_ls_di" || as_fn_error $? "pwd does not report name of working directory" # Find the source files, if location was not specified. if test -z "$srcdir"; then ac_srcdir_defaulted=yes # Try the directory containing this script, then the parent directory. ac_confdir=`$as_dirname -- "$as_myself" || $as_expr X"$as_myself" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_myself" : 'X\(//\)[^/]' \| \ X"$as_myself" : 'X\(//\)$' \| \ X"$as_myself" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$as_myself" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` srcdir=$ac_confdir if test ! -r "$srcdir/$ac_unique_file"; then srcdir=.. fi else ac_srcdir_defaulted=no fi if test ! -r "$srcdir/$ac_unique_file"; then test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .." as_fn_error $? "cannot find sources ($ac_unique_file) in $srcdir" fi ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work" ac_abs_confdir=`( cd "$srcdir" && test -r "./$ac_unique_file" || as_fn_error $? "$ac_msg" pwd)` # When building in place, set srcdir=. if test "$ac_abs_confdir" = "$ac_pwd"; then srcdir=. fi # Remove unnecessary trailing slashes from srcdir. # Double slashes in file names in object file debugging info # mess up M-x gdb in Emacs. case $srcdir in */) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;; esac for ac_var in $ac_precious_vars; do eval ac_env_${ac_var}_set=\${${ac_var}+set} eval ac_env_${ac_var}_value=\$${ac_var} eval ac_cv_env_${ac_var}_set=\${${ac_var}+set} eval ac_cv_env_${ac_var}_value=\$${ac_var} done # # Report the --help message. # if test "$ac_init_help" = "long"; then # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF \`configure' configures mitm 4.0 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... To assign environment variables (e.g., CC, CFLAGS...), specify them as VAR=VALUE. See below for descriptions of some of the useful variables. Defaults for the options are specified in brackets. Configuration: -h, --help display this help and exit --help=short display options specific to this package --help=recursive display the short help of all the included packages -V, --version display version information and exit -q, --quiet, --silent do not print \`checking ...' messages --cache-file=FILE cache test results in FILE [disabled] -C, --config-cache alias for \`--cache-file=config.cache' -n, --no-create do not create output files --srcdir=DIR find the sources in DIR [configure dir or \`..'] Installation directories: --prefix=PREFIX install architecture-independent files in PREFIX [$ac_default_prefix] --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX [PREFIX] By default, \`make install' will install all the files in \`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify an installation prefix other than \`$ac_default_prefix' using \`--prefix', for instance \`--prefix=\$HOME'. For better control, use the options below. Fine tuning of the installation directories: --bindir=DIR user executables [EPREFIX/bin] --sbindir=DIR system admin executables [EPREFIX/sbin] --libexecdir=DIR program executables [EPREFIX/libexec] --sysconfdir=DIR read-only single-machine data [PREFIX/etc] --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] --localstatedir=DIR modifiable single-machine data [PREFIX/var] --runstatedir=DIR modifiable per-process data [LOCALSTATEDIR/run] --libdir=DIR object code libraries [EPREFIX/lib] --includedir=DIR C header files [PREFIX/include] --oldincludedir=DIR C header files for non-gcc [/usr/include] --datarootdir=DIR read-only arch.-independent data root [PREFIX/share] --datadir=DIR read-only architecture-independent data [DATAROOTDIR] --infodir=DIR info documentation [DATAROOTDIR/info] --localedir=DIR locale-dependent data [DATAROOTDIR/locale] --mandir=DIR man documentation [DATAROOTDIR/man] --docdir=DIR documentation root [DATAROOTDIR/doc/mitm] --htmldir=DIR html documentation [DOCDIR] --dvidir=DIR dvi documentation [DOCDIR] --pdfdir=DIR pdf documentation [DOCDIR] --psdir=DIR ps documentation [DOCDIR] _ACEOF cat <<\_ACEOF System types: --build=BUILD configure for building on BUILD [guessed] --host=HOST cross-compile to build programs to run on HOST [BUILD] _ACEOF fi if test -n "$ac_init_help"; then case $ac_init_help in short | recursive ) echo "Configuration of mitm 4.0:";; esac cat <<\_ACEOF Some influential environment variables: CC C compiler command CFLAGS C compiler flags LDFLAGS linker flags, e.g. -L if you have libraries in a nonstandard directory LIBS libraries to pass to the linker, e.g. -l CPPFLAGS (Objective) C/C++ preprocessor flags, e.g. -I if you have headers in a nonstandard directory CPP C preprocessor Use these variables to override the choices made by `configure' or to help it to find libraries and programs with nonstandard names/locations. Report bugs to the package provider. _ACEOF ac_status=$? fi if test "$ac_init_help" = "recursive"; then # If there are subdirs, report their specific --help. for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue test -d "$ac_dir" || { cd "$srcdir" && ac_pwd=`pwd` && srcdir=. && test -d "$ac_dir"; } || continue ac_builddir=. case "$ac_dir" in .) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` # A ".." for each directory in $ac_dir_suffix. ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` case $ac_top_builddir_sub in "") ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; esac ;; esac ac_abs_top_builddir=$ac_pwd ac_abs_builddir=$ac_pwd$ac_dir_suffix # for backward compatibility: ac_top_builddir=$ac_top_build_prefix case $srcdir in .) # We are building in place. ac_srcdir=. ac_top_srcdir=$ac_top_builddir_sub ac_abs_top_srcdir=$ac_pwd ;; [\\/]* | ?:[\\/]* ) # Absolute name. ac_srcdir=$srcdir$ac_dir_suffix; ac_top_srcdir=$srcdir ac_abs_top_srcdir=$srcdir ;; *) # Relative name. ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix ac_top_srcdir=$ac_top_build_prefix$srcdir ac_abs_top_srcdir=$ac_pwd/$srcdir ;; esac ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix cd "$ac_dir" || { ac_status=$?; continue; } # Check for guested configure. if test -f "$ac_srcdir/configure.gnu"; then echo && $SHELL "$ac_srcdir/configure.gnu" --help=recursive elif test -f "$ac_srcdir/configure"; then echo && $SHELL "$ac_srcdir/configure" --help=recursive else $as_echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2 fi || ac_status=$? cd "$ac_pwd" || { ac_status=$?; break; } done fi test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF mitm configure 4.0 generated by GNU Autoconf 2.69 Copyright (C) 2012 Free Software Foundation, Inc. This configure script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it. _ACEOF exit fi ## ------------------------ ## ## Autoconf initialization. ## ## ------------------------ ## # ac_fn_c_try_compile LINENO # -------------------------- # Try to compile conftest.$ac_ext, and return whether this succeeded. ac_fn_c_try_compile () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack rm -f conftest.$ac_objext if { { ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_compile") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then : ac_retval=0 else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_c_try_compile # ac_fn_c_try_link LINENO # ----------------------- # Try to link conftest.$ac_ext, and return whether this succeeded. ac_fn_c_try_link () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack rm -f conftest.$ac_objext conftest$ac_exeext if { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || test -x conftest$ac_exeext }; then : ac_retval=0 else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would # interfere with the next link command; also delete a directory that is # left behind by Apple's compiler. We do this before executing the actions. rm -rf conftest.dSYM conftest_ipa8_conftest.oo eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_c_try_link # ac_fn_c_try_cpp LINENO # ---------------------- # Try to preprocess conftest.$ac_ext, and return whether this succeeded. ac_fn_c_try_cpp () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack if { { ac_try="$ac_cpp conftest.$ac_ext" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } > conftest.i && { test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || test ! -s conftest.err }; then : ac_retval=0 else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_c_try_cpp # ac_fn_c_check_header_mongrel LINENO HEADER VAR INCLUDES # ------------------------------------------------------- # Tests whether HEADER exists, giving a warning if it cannot be compiled using # the include files in INCLUDES and setting the cache variable VAR # accordingly. ac_fn_c_check_header_mongrel () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack if eval \${$3+:} false; then : { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 $as_echo_n "checking for $2... " >&6; } if eval \${$3+:} false; then : $as_echo_n "(cached) " >&6 fi eval ac_res=\$$3 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } else # Is the header compilable? { $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 usability" >&5 $as_echo_n "checking $2 usability... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 #include <$2> _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_header_compiler=yes else ac_header_compiler=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_compiler" >&5 $as_echo "$ac_header_compiler" >&6; } # Is the header present? { $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 presence" >&5 $as_echo_n "checking $2 presence... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include <$2> _ACEOF if ac_fn_c_try_cpp "$LINENO"; then : ac_header_preproc=yes else ac_header_preproc=no fi rm -f conftest.err conftest.i conftest.$ac_ext { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_preproc" >&5 $as_echo "$ac_header_preproc" >&6; } # So? What about this header? case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in #(( yes:no: ) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&5 $as_echo "$as_me: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5 $as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;} ;; no:yes:* ) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: present but cannot be compiled" >&5 $as_echo "$as_me: WARNING: $2: present but cannot be compiled" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: check for missing prerequisite headers?" >&5 $as_echo "$as_me: WARNING: $2: check for missing prerequisite headers?" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: see the Autoconf documentation" >&5 $as_echo "$as_me: WARNING: $2: see the Autoconf documentation" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&5 $as_echo "$as_me: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5 $as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;} ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 $as_echo_n "checking for $2... " >&6; } if eval \${$3+:} false; then : $as_echo_n "(cached) " >&6 else eval "$3=\$ac_header_compiler" fi eval ac_res=\$$3 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } fi eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } # ac_fn_c_check_header_mongrel # ac_fn_c_try_run LINENO # ---------------------- # Try to link conftest.$ac_ext, and return whether this succeeded. Assumes # that executables *can* be run. ac_fn_c_try_run () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack if { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { ac_try='./conftest$ac_exeext' { { case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_try") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; }; then : ac_retval=0 else $as_echo "$as_me: program exited with status $ac_status" >&5 $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=$ac_status fi rm -rf conftest.dSYM conftest_ipa8_conftest.oo eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_c_try_run # ac_fn_c_check_header_compile LINENO HEADER VAR INCLUDES # ------------------------------------------------------- # Tests whether HEADER exists and can be compiled using the include files in # INCLUDES, setting the cache variable VAR accordingly. ac_fn_c_check_header_compile () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 $as_echo_n "checking for $2... " >&6; } if eval \${$3+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 #include <$2> _ACEOF if ac_fn_c_try_compile "$LINENO"; then : eval "$3=yes" else eval "$3=no" fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi eval ac_res=\$$3 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } # ac_fn_c_check_header_compile cat >config.log <<_ACEOF This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. It was created by mitm $as_me 4.0, which was generated by GNU Autoconf 2.69. Invocation command line was $ $0 $@ _ACEOF exec 5>>config.log { cat <<_ASUNAME ## --------- ## ## Platform. ## ## --------- ## hostname = `(hostname || uname -n) 2>/dev/null | sed 1q` uname -m = `(uname -m) 2>/dev/null || echo unknown` uname -r = `(uname -r) 2>/dev/null || echo unknown` uname -s = `(uname -s) 2>/dev/null || echo unknown` uname -v = `(uname -v) 2>/dev/null || echo unknown` /usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown` /bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown` /bin/arch = `(/bin/arch) 2>/dev/null || echo unknown` /usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown` /usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown` /usr/bin/hostinfo = `(/usr/bin/hostinfo) 2>/dev/null || echo unknown` /bin/machine = `(/bin/machine) 2>/dev/null || echo unknown` /usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown` /bin/universe = `(/bin/universe) 2>/dev/null || echo unknown` _ASUNAME as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. $as_echo "PATH: $as_dir" done IFS=$as_save_IFS } >&5 cat >&5 <<_ACEOF ## ----------- ## ## Core tests. ## ## ----------- ## _ACEOF # Keep a trace of the command line. # Strip out --no-create and --no-recursion so they do not pile up. # Strip out --silent because we don't want to record it for future runs. # Also quote any args containing shell meta-characters. # Make two passes to allow for proper duplicate-argument suppression. ac_configure_args= ac_configure_args0= ac_configure_args1= ac_must_keep_next=false for ac_pass in 1 2 do for ac_arg do case $ac_arg in -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil) continue ;; *\'*) ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; esac case $ac_pass in 1) as_fn_append ac_configure_args0 " '$ac_arg'" ;; 2) as_fn_append ac_configure_args1 " '$ac_arg'" if test $ac_must_keep_next = true; then ac_must_keep_next=false # Got value, back to normal. else case $ac_arg in *=* | --config-cache | -C | -disable-* | --disable-* \ | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \ | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \ | -with-* | --with-* | -without-* | --without-* | --x) case "$ac_configure_args0 " in "$ac_configure_args1"*" '$ac_arg' "* ) continue ;; esac ;; -* ) ac_must_keep_next=true ;; esac fi as_fn_append ac_configure_args " '$ac_arg'" ;; esac done done { ac_configure_args0=; unset ac_configure_args0;} { ac_configure_args1=; unset ac_configure_args1;} # When interrupted or exit'd, cleanup temporary files, and complete # config.log. We remove comments because anyway the quotes in there # would cause problems or look ugly. # WARNING: Use '\'' to represent an apostrophe within the trap. # WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug. trap 'exit_status=$? # Save into config.log some information that might help in debugging. { echo $as_echo "## ---------------- ## ## Cache variables. ## ## ---------------- ##" echo # The following way of writing the cache mishandles newlines in values, ( for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do eval ac_val=\$$ac_var case $ac_val in #( *${as_nl}*) case $ac_var in #( *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 $as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; esac case $ac_var in #( _ | IFS | as_nl) ;; #( BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( *) { eval $ac_var=; unset $ac_var;} ;; esac ;; esac done (set) 2>&1 | case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #( *${as_nl}ac_space=\ *) sed -n \ "s/'\''/'\''\\\\'\'''\''/g; s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p" ;; #( *) sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" ;; esac | sort ) echo $as_echo "## ----------------- ## ## Output variables. ## ## ----------------- ##" echo for ac_var in $ac_subst_vars do eval ac_val=\$$ac_var case $ac_val in *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; esac $as_echo "$ac_var='\''$ac_val'\''" done | sort echo if test -n "$ac_subst_files"; then $as_echo "## ------------------- ## ## File substitutions. ## ## ------------------- ##" echo for ac_var in $ac_subst_files do eval ac_val=\$$ac_var case $ac_val in *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; esac $as_echo "$ac_var='\''$ac_val'\''" done | sort echo fi if test -s confdefs.h; then $as_echo "## ----------- ## ## confdefs.h. ## ## ----------- ##" echo cat confdefs.h echo fi test "$ac_signal" != 0 && $as_echo "$as_me: caught signal $ac_signal" $as_echo "$as_me: exit $exit_status" } >&5 rm -f core *.core core.conftest.* && rm -f -r conftest* confdefs* conf$$* $ac_clean_files && exit $exit_status ' 0 for ac_signal in 1 2 13 15; do trap 'ac_signal='$ac_signal'; as_fn_exit 1' $ac_signal done ac_signal=0 # confdefs.h avoids OS command line length limits that DEFS can exceed. rm -f -r conftest* confdefs.h $as_echo "/* confdefs.h */" > confdefs.h # Predefined preprocessor variables. cat >>confdefs.h <<_ACEOF #define PACKAGE_NAME "$PACKAGE_NAME" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_TARNAME "$PACKAGE_TARNAME" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_VERSION "$PACKAGE_VERSION" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_STRING "$PACKAGE_STRING" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_URL "$PACKAGE_URL" _ACEOF # Let the site file select an alternate cache file if it wants to. # Prefer an explicitly selected file to automatically selected ones. ac_site_file1=NONE ac_site_file2=NONE if test -n "$CONFIG_SITE"; then # We do not want a PATH search for config.site. case $CONFIG_SITE in #(( -*) ac_site_file1=./$CONFIG_SITE;; */*) ac_site_file1=$CONFIG_SITE;; *) ac_site_file1=./$CONFIG_SITE;; esac elif test "x$prefix" != xNONE; then ac_site_file1=$prefix/share/config.site ac_site_file2=$prefix/etc/config.site else ac_site_file1=$ac_default_prefix/share/config.site ac_site_file2=$ac_default_prefix/etc/config.site fi for ac_site_file in "$ac_site_file1" "$ac_site_file2" do test "x$ac_site_file" = xNONE && continue if test /dev/null != "$ac_site_file" && test -r "$ac_site_file"; then { $as_echo "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5 $as_echo "$as_me: loading site script $ac_site_file" >&6;} sed 's/^/| /' "$ac_site_file" >&5 . "$ac_site_file" \ || { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "failed to load site script $ac_site_file See \`config.log' for more details" "$LINENO" 5; } fi done if test -r "$cache_file"; then # Some versions of bash will fail to source /dev/null (special files # actually), so we avoid doing that. DJGPP emulates it as a regular file. if test /dev/null != "$cache_file" && test -f "$cache_file"; then { $as_echo "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5 $as_echo "$as_me: loading cache $cache_file" >&6;} case $cache_file in [\\/]* | ?:[\\/]* ) . "$cache_file";; *) . "./$cache_file";; esac fi else { $as_echo "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5 $as_echo "$as_me: creating cache $cache_file" >&6;} >$cache_file fi # Check that the precious variables saved in the cache have kept the same # value. ac_cache_corrupted=false for ac_var in $ac_precious_vars; do eval ac_old_set=\$ac_cv_env_${ac_var}_set eval ac_new_set=\$ac_env_${ac_var}_set eval ac_old_val=\$ac_cv_env_${ac_var}_value eval ac_new_val=\$ac_env_${ac_var}_value case $ac_old_set,$ac_new_set in set,) { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 $as_echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} ac_cache_corrupted=: ;; ,set) { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was not set in the previous run" >&5 $as_echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} ac_cache_corrupted=: ;; ,);; *) if test "x$ac_old_val" != "x$ac_new_val"; then # differences in whitespace do not lead to failure. ac_old_val_w=`echo x $ac_old_val` ac_new_val_w=`echo x $ac_new_val` if test "$ac_old_val_w" != "$ac_new_val_w"; then { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' has changed since the previous run:" >&5 $as_echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} ac_cache_corrupted=: else { $as_echo "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5 $as_echo "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;} eval $ac_var=\$ac_old_val fi { $as_echo "$as_me:${as_lineno-$LINENO}: former value: \`$ac_old_val'" >&5 $as_echo "$as_me: former value: \`$ac_old_val'" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: current value: \`$ac_new_val'" >&5 $as_echo "$as_me: current value: \`$ac_new_val'" >&2;} fi;; esac # Pass precious variables to config.status. if test "$ac_new_set" = set; then case $ac_new_val in *\'*) ac_arg=$ac_var=`$as_echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; *) ac_arg=$ac_var=$ac_new_val ;; esac case " $ac_configure_args " in *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy. *) as_fn_append ac_configure_args " '$ac_arg'" ;; esac fi done if $ac_cache_corrupted; then { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5 $as_echo "$as_me: error: changes in the environment can compromise the build" >&2;} as_fn_error $? "run \`make distclean' and/or \`rm $cache_file' and start over" "$LINENO" 5 fi ## -------------------- ## ## Main body of script. ## ## -------------------- ## ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu ac_aux_dir= for ac_dir in "$srcdir" "$srcdir/.." "$srcdir/../.."; do if test -f "$ac_dir/install-sh"; then ac_aux_dir=$ac_dir ac_install_sh="$ac_aux_dir/install-sh -c" break elif test -f "$ac_dir/install.sh"; then ac_aux_dir=$ac_dir ac_install_sh="$ac_aux_dir/install.sh -c" break elif test -f "$ac_dir/shtool"; then ac_aux_dir=$ac_dir ac_install_sh="$ac_aux_dir/shtool install -c" break fi done if test -z "$ac_aux_dir"; then as_fn_error $? "cannot find install-sh, install.sh, or shtool in \"$srcdir\" \"$srcdir/..\" \"$srcdir/../..\"" "$LINENO" 5 fi # These three variables are undocumented and unsupported, # and are intended to be withdrawn in a future Autoconf release. # They can cause serious problems if a builder's source tree is in a directory # whose full name contains unusual characters. ac_config_guess="$SHELL $ac_aux_dir/config.guess" # Please don't use this var. ac_config_sub="$SHELL $ac_aux_dir/config.sub" # Please don't use this var. ac_configure="$SHELL $ac_aux_dir/configure" # Please don't use this var. # Find a good install program. We prefer a C program (faster), # so one script is as good as another. But avoid the broken or # incompatible versions: # SysV /etc/install, /usr/sbin/install # SunOS /usr/etc/install # IRIX /sbin/install # AIX /bin/install # AmigaOS /C/install, which installs bootblocks on floppy discs # AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag # AFS /usr/afsws/bin/install, which mishandles nonexistent args # SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" # OS/2's system install, which has a completely different semantic # ./install, which can be erroneously created by make from ./install.sh. # Reject install programs that cannot install multiple files. { $as_echo "$as_me:${as_lineno-$LINENO}: checking for a BSD-compatible install" >&5 $as_echo_n "checking for a BSD-compatible install... " >&6; } if test -z "$INSTALL"; then if ${ac_cv_path_install+:} false; then : $as_echo_n "(cached) " >&6 else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. # Account for people who put trailing slashes in PATH elements. case $as_dir/ in #(( ./ | .// | /[cC]/* | \ /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \ ?:[\\/]os2[\\/]install[\\/]* | ?:[\\/]OS2[\\/]INSTALL[\\/]* | \ /usr/ucb/* ) ;; *) # OSF1 and SCO ODT 3.0 have their own names for install. # Don't use installbsd from OSF since it installs stuff as root # by default. for ac_prog in ginstall scoinst install; do for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then if test $ac_prog = install && grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then # AIX install. It has an incompatible calling convention. : elif test $ac_prog = install && grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then # program-specific install script used by HP pwplus--don't use. : else rm -rf conftest.one conftest.two conftest.dir echo one > conftest.one echo two > conftest.two mkdir conftest.dir if "$as_dir/$ac_prog$ac_exec_ext" -c conftest.one conftest.two "`pwd`/conftest.dir" && test -s conftest.one && test -s conftest.two && test -s conftest.dir/conftest.one && test -s conftest.dir/conftest.two then ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c" break 3 fi fi fi done done ;; esac done IFS=$as_save_IFS rm -rf conftest.one conftest.two conftest.dir fi if test "${ac_cv_path_install+set}" = set; then INSTALL=$ac_cv_path_install else # As a last resort, use the slow shell script. Don't cache a # value for INSTALL within a source directory, because that will # break other packages using the cache if that directory is # removed, or if the value is a relative name. INSTALL=$ac_install_sh fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $INSTALL" >&5 $as_echo "$INSTALL" >&6; } # Use test -z because SunOS4 sh mishandles braces in ${var-val}. # It thinks the first close brace ends the variable substitution. test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}' test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}' test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. set dummy ${ac_tool_prefix}gcc; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CC="${ac_tool_prefix}gcc" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_CC"; then ac_ct_CC=$CC # Extract the first word of "gcc", so it can be a program name with args. set dummy gcc; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CC="gcc" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 $as_echo "$ac_ct_CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_CC" = x; then CC="" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CC=$ac_ct_CC fi else CC="$ac_cv_prog_CC" fi if test -z "$CC"; then if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. set dummy ${ac_tool_prefix}cc; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CC="${ac_tool_prefix}cc" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi fi if test -z "$CC"; then # Extract the first word of "cc", so it can be a program name with args. set dummy cc; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else ac_prog_rejected=no as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then ac_prog_rejected=yes continue fi ac_cv_prog_CC="cc" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS if test $ac_prog_rejected = yes; then # We found a bogon in the path, so make sure we never use it. set dummy $ac_cv_prog_CC shift if test $# != 0; then # We chose a different compiler from the bogus one. # However, it has the same basename, so the bogon will be chosen # first if we set CC to just the basename; use the full file name. shift ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@" fi fi fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$CC"; then if test -n "$ac_tool_prefix"; then for ac_prog in cl.exe do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CC="$ac_tool_prefix$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$CC" && break done fi if test -z "$CC"; then ac_ct_CC=$CC for ac_prog in cl.exe do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CC="$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 $as_echo "$ac_ct_CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$ac_ct_CC" && break done if test "x$ac_ct_CC" = x; then CC="" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CC=$ac_ct_CC fi fi fi test -z "$CC" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "no acceptable C compiler found in \$PATH See \`config.log' for more details" "$LINENO" 5; } # Provide some information about the compiler. $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5 set X $ac_compile ac_compiler=$2 for ac_option in --version -v -V -qversion; do { { ac_try="$ac_compiler $ac_option >&5" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_compiler $ac_option >&5") 2>conftest.err ac_status=$? if test -s conftest.err; then sed '10a\ ... rest of stderr output deleted ... 10q' conftest.err >conftest.er1 cat conftest.er1 >&5 fi rm -f conftest.er1 conftest.err $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } done cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF ac_clean_files_save=$ac_clean_files ac_clean_files="$ac_clean_files a.out a.out.dSYM a.exe b.out" # Try to create an executable without -o first, disregard a.out. # It will help us diagnose broken compilers, and finding out an intuition # of exeext. { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler works" >&5 $as_echo_n "checking whether the C compiler works... " >&6; } ac_link_default=`$as_echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'` # The possible output files: ac_files="a.out conftest.exe conftest a.exe a_out.exe b.out conftest.*" ac_rmfiles= for ac_file in $ac_files do case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; * ) ac_rmfiles="$ac_rmfiles $ac_file";; esac done rm -f $ac_rmfiles if { { ac_try="$ac_link_default" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link_default") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then : # Autoconf-2.13 could set the ac_cv_exeext variable to `no'. # So ignore a value of `no', otherwise this would lead to `EXEEXT = no' # in a Makefile. We should not override ac_cv_exeext if it was cached, # so that the user can short-circuit this test for compilers unknown to # Autoconf. for ac_file in $ac_files '' do test -f "$ac_file" || continue case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; [ab].out ) # We found the default executable, but exeext='' is most # certainly right. break;; *.* ) if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no; then :; else ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` fi # We set ac_cv_exeext here because the later test for it is not # safe: cross compilers may not add the suffix if given an `-o' # argument, so we may need to know it at that point already. # Even if this section looks crufty: it has the advantage of # actually working. break;; * ) break;; esac done test "$ac_cv_exeext" = no && ac_cv_exeext= else ac_file='' fi if test -z "$ac_file"; then : { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error 77 "C compiler cannot create executables See \`config.log' for more details" "$LINENO" 5; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler default output file name" >&5 $as_echo_n "checking for C compiler default output file name... " >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5 $as_echo "$ac_file" >&6; } ac_exeext=$ac_cv_exeext rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out ac_clean_files=$ac_clean_files_save { $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5 $as_echo_n "checking for suffix of executables... " >&6; } if { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then : # If both `conftest.exe' and `conftest' are `present' (well, observable) # catch `conftest.exe'. For instance with Cygwin, `ls conftest' will # work properly (i.e., refer to `conftest.exe'), while it won't with # `rm'. for ac_file in conftest.exe conftest conftest.*; do test -f "$ac_file" || continue case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` break;; * ) break;; esac done else { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "cannot compute suffix of executables: cannot compile and link See \`config.log' for more details" "$LINENO" 5; } fi rm -f conftest conftest$ac_cv_exeext { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5 $as_echo "$ac_cv_exeext" >&6; } rm -f conftest.$ac_ext EXEEXT=$ac_cv_exeext ac_exeext=$EXEEXT cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main () { FILE *f = fopen ("conftest.out", "w"); return ferror (f) || fclose (f) != 0; ; return 0; } _ACEOF ac_clean_files="$ac_clean_files conftest.out" # Check that the compiler produces executables we can run. If not, either # the compiler is broken, or we cross compile. { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5 $as_echo_n "checking whether we are cross compiling... " >&6; } if test "$cross_compiling" != yes; then { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } if { ac_try='./conftest$ac_cv_exeext' { { case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_try") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; }; then cross_compiling=no else if test "$cross_compiling" = maybe; then cross_compiling=yes else { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "cannot run C compiled programs. If you meant to cross compile, use \`--host'. See \`config.log' for more details" "$LINENO" 5; } fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5 $as_echo "$cross_compiling" >&6; } rm -f conftest.$ac_ext conftest$ac_cv_exeext conftest.out ac_clean_files=$ac_clean_files_save { $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5 $as_echo_n "checking for suffix of object files... " >&6; } if ${ac_cv_objext+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF rm -f conftest.o conftest.obj if { { ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_compile") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then : for ac_file in conftest.o conftest.obj conftest.*; do test -f "$ac_file" || continue; case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM ) ;; *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'` break;; esac done else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "cannot compute suffix of object files: cannot compile See \`config.log' for more details" "$LINENO" 5; } fi rm -f conftest.$ac_cv_objext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5 $as_echo "$ac_cv_objext" >&6; } OBJEXT=$ac_cv_objext ac_objext=$OBJEXT { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C compiler" >&5 $as_echo_n "checking whether we are using the GNU C compiler... " >&6; } if ${ac_cv_c_compiler_gnu+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { #ifndef __GNUC__ choke me #endif ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_compiler_gnu=yes else ac_compiler_gnu=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_cv_c_compiler_gnu=$ac_compiler_gnu fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5 $as_echo "$ac_cv_c_compiler_gnu" >&6; } if test $ac_compiler_gnu = yes; then GCC=yes else GCC= fi ac_test_CFLAGS=${CFLAGS+set} ac_save_CFLAGS=$CFLAGS { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5 $as_echo_n "checking whether $CC accepts -g... " >&6; } if ${ac_cv_prog_cc_g+:} false; then : $as_echo_n "(cached) " >&6 else ac_save_c_werror_flag=$ac_c_werror_flag ac_c_werror_flag=yes ac_cv_prog_cc_g=no CFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_prog_cc_g=yes else CFLAGS="" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : else ac_c_werror_flag=$ac_save_c_werror_flag CFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_prog_cc_g=yes fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_c_werror_flag=$ac_save_c_werror_flag fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5 $as_echo "$ac_cv_prog_cc_g" >&6; } if test "$ac_test_CFLAGS" = set; then CFLAGS=$ac_save_CFLAGS elif test $ac_cv_prog_cc_g = yes; then if test "$GCC" = yes; then CFLAGS="-g -O2" else CFLAGS="-g" fi else if test "$GCC" = yes; then CFLAGS="-O2" else CFLAGS= fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5 $as_echo_n "checking for $CC option to accept ISO C89... " >&6; } if ${ac_cv_prog_cc_c89+:} false; then : $as_echo_n "(cached) " >&6 else ac_cv_prog_cc_c89=no ac_save_CC=$CC cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include struct stat; /* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */ struct buf { int x; }; FILE * (*rcsopen) (struct buf *, struct stat *, int); static char *e (p, i) char **p; int i; { return p[i]; } static char *f (char * (*g) (char **, int), char **p, ...) { char *s; va_list v; va_start (v,p); s = g (p, va_arg (v,int)); va_end (v); return s; } /* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has function prototypes and stuff, but not '\xHH' hex character constants. These don't provoke an error unfortunately, instead are silently treated as 'x'. The following induces an error, until -std is added to get proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an array size at least. It's necessary to write '\x00'==0 to get something that's true only with -std. */ int osf4_cc_array ['\x00' == 0 ? 1 : -1]; /* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters inside strings and character constants. */ #define FOO(x) 'x' int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1]; int test (int i, double x); struct s1 {int (*f) (int a);}; struct s2 {int (*f) (double a);}; int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int); int argc; char **argv; int main () { return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]; ; return 0; } _ACEOF for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \ -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" do CC="$ac_save_CC $ac_arg" if ac_fn_c_try_compile "$LINENO"; then : ac_cv_prog_cc_c89=$ac_arg fi rm -f core conftest.err conftest.$ac_objext test "x$ac_cv_prog_cc_c89" != "xno" && break done rm -f conftest.$ac_ext CC=$ac_save_CC fi # AC_CACHE_VAL case "x$ac_cv_prog_cc_c89" in x) { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 $as_echo "none needed" >&6; } ;; xno) { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 $as_echo "unsupported" >&6; } ;; *) CC="$CC $ac_cv_prog_cc_c89" { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5 $as_echo "$ac_cv_prog_cc_c89" >&6; } ;; esac if test "x$ac_cv_prog_cc_c89" != xno; then : fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu # Make sure we can run config.sub. $SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 || as_fn_error $? "cannot run $SHELL $ac_aux_dir/config.sub" "$LINENO" 5 { $as_echo "$as_me:${as_lineno-$LINENO}: checking build system type" >&5 $as_echo_n "checking build system type... " >&6; } if ${ac_cv_build+:} false; then : $as_echo_n "(cached) " >&6 else ac_build_alias=$build_alias test "x$ac_build_alias" = x && ac_build_alias=`$SHELL "$ac_aux_dir/config.guess"` test "x$ac_build_alias" = x && as_fn_error $? "cannot guess build type; you must specify one" "$LINENO" 5 ac_cv_build=`$SHELL "$ac_aux_dir/config.sub" $ac_build_alias` || as_fn_error $? "$SHELL $ac_aux_dir/config.sub $ac_build_alias failed" "$LINENO" 5 fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build" >&5 $as_echo "$ac_cv_build" >&6; } case $ac_cv_build in *-*-*) ;; *) as_fn_error $? "invalid value of canonical build" "$LINENO" 5;; esac build=$ac_cv_build ac_save_IFS=$IFS; IFS='-' set x $ac_cv_build shift build_cpu=$1 build_vendor=$2 shift; shift # Remember, the first character of IFS is used to create $*, # except with old shells: build_os=$* IFS=$ac_save_IFS case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking host system type" >&5 $as_echo_n "checking host system type... " >&6; } if ${ac_cv_host+:} false; then : $as_echo_n "(cached) " >&6 else if test "x$host_alias" = x; then ac_cv_host=$ac_cv_build else ac_cv_host=`$SHELL "$ac_aux_dir/config.sub" $host_alias` || as_fn_error $? "$SHELL $ac_aux_dir/config.sub $host_alias failed" "$LINENO" 5 fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_host" >&5 $as_echo "$ac_cv_host" >&6; } case $ac_cv_host in *-*-*) ;; *) as_fn_error $? "invalid value of canonical host" "$LINENO" 5;; esac host=$ac_cv_host ac_save_IFS=$IFS; IFS='-' set x $ac_cv_host shift host_cpu=$1 host_vendor=$2 shift; shift # Remember, the first character of IFS is used to create $*, # except with old shells: host_os=$* IFS=$ac_save_IFS case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac ansi="-std=c99 -pedantic" case "$host_os" in *cygwin*) ansi="" ;; solaris2*) CPPFLAGS="$CPPFLAGS -D__EXTENSIONS__" ;; darwin*) CCOPTIONS="$CCOPTIONS -no-cpp-precomp -Wno-deprecated-declarations" ;; linux*) CPPFLAGS="$CPPFLAGS -D_POSIX_SOURCE" ;; esac if test "$GCC" = yes then # Add common gcc options, plus flags for dependency generation. CCOPTIONS="$CCOPTIONS -Wall -Wsign-compare $ansi -Wno-variadic-macros -MMD -MP" fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing gethostbyname" >&5 $as_echo_n "checking for library containing gethostbyname... " >&6; } if ${ac_cv_search_gethostbyname+:} false; then : $as_echo_n "(cached) " >&6 else ac_func_search_save_LIBS=$LIBS cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char gethostbyname (); int main () { return gethostbyname (); ; return 0; } _ACEOF for ac_lib in '' nsl; do if test -z "$ac_lib"; then ac_res="none required" else ac_res=-l$ac_lib LIBS="-l$ac_lib $ac_func_search_save_LIBS" fi if ac_fn_c_try_link "$LINENO"; then : ac_cv_search_gethostbyname=$ac_res fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext if ${ac_cv_search_gethostbyname+:} false; then : break fi done if ${ac_cv_search_gethostbyname+:} false; then : else ac_cv_search_gethostbyname=no fi rm conftest.$ac_ext LIBS=$ac_func_search_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_gethostbyname" >&5 $as_echo "$ac_cv_search_gethostbyname" >&6; } ac_res=$ac_cv_search_gethostbyname if test "$ac_res" != no; then : test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing socket" >&5 $as_echo_n "checking for library containing socket... " >&6; } if ${ac_cv_search_socket+:} false; then : $as_echo_n "(cached) " >&6 else ac_func_search_save_LIBS=$LIBS cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char socket (); int main () { return socket (); ; return 0; } _ACEOF for ac_lib in '' socket; do if test -z "$ac_lib"; then ac_res="none required" else ac_res=-l$ac_lib LIBS="-l$ac_lib $ac_func_search_save_LIBS" fi if ac_fn_c_try_link "$LINENO"; then : ac_cv_search_socket=$ac_res fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext if ${ac_cv_search_socket+:} false; then : break fi done if ${ac_cv_search_socket+:} false; then : else ac_cv_search_socket=no fi rm conftest.$ac_ext LIBS=$ac_func_search_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_socket" >&5 $as_echo "$ac_cv_search_socket" >&6; } ac_res=$ac_cv_search_socket if test "$ac_res" != no; then : test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C preprocessor" >&5 $as_echo_n "checking how to run the C preprocessor... " >&6; } # On Suns, sometimes $CPP names a directory. if test -n "$CPP" && test -d "$CPP"; then CPP= fi if test -z "$CPP"; then if ${ac_cv_prog_CPP+:} false; then : $as_echo_n "(cached) " >&6 else # Double quotes because CPP needs to be expanded for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp" do ac_preproc_ok=false for ac_c_preproc_warn_flag in '' yes do # Use a header file that comes with gcc, so configuring glibc # with a fresh cross-compiler works. # Prefer to if __STDC__ is defined, since # exists even on freestanding compilers. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifdef __STDC__ # include #else # include #endif Syntax error _ACEOF if ac_fn_c_try_cpp "$LINENO"; then : else # Broken: fails on valid input. continue fi rm -f conftest.err conftest.i conftest.$ac_ext # OK, works on sane cases. Now check whether nonexistent headers # can be detected and how. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if ac_fn_c_try_cpp "$LINENO"; then : # Broken: success on invalid input. continue else # Passes both tests. ac_preproc_ok=: break fi rm -f conftest.err conftest.i conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f conftest.i conftest.err conftest.$ac_ext if $ac_preproc_ok; then : break fi done ac_cv_prog_CPP=$CPP fi CPP=$ac_cv_prog_CPP else ac_cv_prog_CPP=$CPP fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CPP" >&5 $as_echo "$CPP" >&6; } ac_preproc_ok=false for ac_c_preproc_warn_flag in '' yes do # Use a header file that comes with gcc, so configuring glibc # with a fresh cross-compiler works. # Prefer to if __STDC__ is defined, since # exists even on freestanding compilers. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifdef __STDC__ # include #else # include #endif Syntax error _ACEOF if ac_fn_c_try_cpp "$LINENO"; then : else # Broken: fails on valid input. continue fi rm -f conftest.err conftest.i conftest.$ac_ext # OK, works on sane cases. Now check whether nonexistent headers # can be detected and how. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if ac_fn_c_try_cpp "$LINENO"; then : # Broken: success on invalid input. continue else # Passes both tests. ac_preproc_ok=: break fi rm -f conftest.err conftest.i conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f conftest.i conftest.err conftest.$ac_ext if $ac_preproc_ok; then : else { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "C preprocessor \"$CPP\" fails sanity check See \`config.log' for more details" "$LINENO" 5; } fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu { $as_echo "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5 $as_echo_n "checking for grep that handles long lines and -e... " >&6; } if ${ac_cv_path_GREP+:} false; then : $as_echo_n "(cached) " >&6 else if test -z "$GREP"; then ac_path_GREP_found=false # Loop through the user's path and test for each of PROGNAME-LIST as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_prog in grep ggrep; do for ac_exec_ext in '' $ac_executable_extensions; do ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext" as_fn_executable_p "$ac_path_GREP" || continue # Check for GNU ac_path_GREP and select it if it is found. # Check for GNU $ac_path_GREP case `"$ac_path_GREP" --version 2>&1` in *GNU*) ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;; *) ac_count=0 $as_echo_n 0123456789 >"conftest.in" while : do cat "conftest.in" "conftest.in" >"conftest.tmp" mv "conftest.tmp" "conftest.in" cp "conftest.in" "conftest.nl" $as_echo 'GREP' >> "conftest.nl" "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break as_fn_arith $ac_count + 1 && ac_count=$as_val if test $ac_count -gt ${ac_path_GREP_max-0}; then # Best one so far, save it but keep looking for a better one ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_max=$ac_count fi # 10*(2^10) chars as input seems more than enough test $ac_count -gt 10 && break done rm -f conftest.in conftest.tmp conftest.nl conftest.out;; esac $ac_path_GREP_found && break 3 done done done IFS=$as_save_IFS if test -z "$ac_cv_path_GREP"; then as_fn_error $? "no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 fi else ac_cv_path_GREP=$GREP fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP" >&5 $as_echo "$ac_cv_path_GREP" >&6; } GREP="$ac_cv_path_GREP" { $as_echo "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5 $as_echo_n "checking for egrep... " >&6; } if ${ac_cv_path_EGREP+:} false; then : $as_echo_n "(cached) " >&6 else if echo a | $GREP -E '(a|b)' >/dev/null 2>&1 then ac_cv_path_EGREP="$GREP -E" else if test -z "$EGREP"; then ac_path_EGREP_found=false # Loop through the user's path and test for each of PROGNAME-LIST as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_prog in egrep; do for ac_exec_ext in '' $ac_executable_extensions; do ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext" as_fn_executable_p "$ac_path_EGREP" || continue # Check for GNU ac_path_EGREP and select it if it is found. # Check for GNU $ac_path_EGREP case `"$ac_path_EGREP" --version 2>&1` in *GNU*) ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;; *) ac_count=0 $as_echo_n 0123456789 >"conftest.in" while : do cat "conftest.in" "conftest.in" >"conftest.tmp" mv "conftest.tmp" "conftest.in" cp "conftest.in" "conftest.nl" $as_echo 'EGREP' >> "conftest.nl" "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break as_fn_arith $ac_count + 1 && ac_count=$as_val if test $ac_count -gt ${ac_path_EGREP_max-0}; then # Best one so far, save it but keep looking for a better one ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_max=$ac_count fi # 10*(2^10) chars as input seems more than enough test $ac_count -gt 10 && break done rm -f conftest.in conftest.tmp conftest.nl conftest.out;; esac $ac_path_EGREP_found && break 3 done done done IFS=$as_save_IFS if test -z "$ac_cv_path_EGREP"; then as_fn_error $? "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 fi else ac_cv_path_EGREP=$EGREP fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5 $as_echo "$ac_cv_path_EGREP" >&6; } EGREP="$ac_cv_path_EGREP" { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5 $as_echo_n "checking for ANSI C header files... " >&6; } if ${ac_cv_header_stdc+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include #include #include int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_header_stdc=yes else ac_cv_header_stdc=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext if test $ac_cv_header_stdc = yes; then # SunOS 4.x string.h does not declare mem*, contrary to ANSI. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "memchr" >/dev/null 2>&1; then : else ac_cv_header_stdc=no fi rm -f conftest* fi if test $ac_cv_header_stdc = yes; then # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "free" >/dev/null 2>&1; then : else ac_cv_header_stdc=no fi rm -f conftest* fi if test $ac_cv_header_stdc = yes; then # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. if test "$cross_compiling" = yes; then : : else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include #if ((' ' & 0x0FF) == 0x020) # define ISLOWER(c) ('a' <= (c) && (c) <= 'z') # define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) #else # define ISLOWER(c) \ (('a' <= (c) && (c) <= 'i') \ || ('j' <= (c) && (c) <= 'r') \ || ('s' <= (c) && (c) <= 'z')) # define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) #endif #define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) int main () { int i; for (i = 0; i < 256; i++) if (XOR (islower (i), ISLOWER (i)) || toupper (i) != TOUPPER (i)) return 2; return 0; } _ACEOF if ac_fn_c_try_run "$LINENO"; then : else ac_cv_header_stdc=no fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdc" >&5 $as_echo "$ac_cv_header_stdc" >&6; } if test $ac_cv_header_stdc = yes; then $as_echo "#define STDC_HEADERS 1" >>confdefs.h fi # On IRIX 5.3, sys/types and inttypes.h are conflicting. for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \ inttypes.h stdint.h unistd.h do : as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default " if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : cat >>confdefs.h <<_ACEOF #define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF fi done for ac_header in sys/select.h do : ac_fn_c_check_header_mongrel "$LINENO" "sys/select.h" "ac_cv_header_sys_select_h" "$ac_includes_default" if test "x$ac_cv_header_sys_select_h" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_SYS_SELECT_H 1 _ACEOF fi done for ac_header in getopt.h do : ac_fn_c_check_header_mongrel "$LINENO" "getopt.h" "ac_cv_header_getopt_h" "$ac_includes_default" if test "x$ac_cv_header_getopt_h" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_GETOPT_H 1 _ACEOF fi done ac_config_headers="$ac_config_headers conf.h" ac_config_files="$ac_config_files Makefile Makefile.obj" cat >confcache <<\_ACEOF # This file is a shell script that caches the results of configure # tests run on this system so they can be shared between configure # scripts and configure runs, see configure's option --config-cache. # It is not useful on other systems. If it contains results you don't # want to keep, you may remove or edit it. # # config.status only pays attention to the cache file if you give it # the --recheck option to rerun configure. # # `ac_cv_env_foo' variables (set or unset) will be overridden when # loading this file, other *unset* `ac_cv_foo' will be assigned the # following values. _ACEOF # The following way of writing the cache mishandles newlines in values, # but we know of no workaround that is simple, portable, and efficient. # So, we kill variables containing newlines. # Ultrix sh set writes to stderr and can't be redirected directly, # and sets the high bit in the cache file unless we assign to the vars. ( for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do eval ac_val=\$$ac_var case $ac_val in #( *${as_nl}*) case $ac_var in #( *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 $as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; esac case $ac_var in #( _ | IFS | as_nl) ;; #( BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( *) { eval $ac_var=; unset $ac_var;} ;; esac ;; esac done (set) 2>&1 | case $as_nl`(ac_space=' '; set) 2>&1` in #( *${as_nl}ac_space=\ *) # `set' does not quote correctly, so add quotes: double-quote # substitution turns \\\\ into \\, and sed turns \\ into \. sed -n \ "s/'/'\\\\''/g; s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" ;; #( *) # `set' quotes correctly as required by POSIX, so do not add quotes. sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" ;; esac | sort ) | sed ' /^ac_cv_env_/b end t clear :clear s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/ t end s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ :end' >>confcache if diff "$cache_file" confcache >/dev/null 2>&1; then :; else if test -w "$cache_file"; then if test "x$cache_file" != "x/dev/null"; then { $as_echo "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5 $as_echo "$as_me: updating cache $cache_file" >&6;} if test ! -f "$cache_file" || test -h "$cache_file"; then cat confcache >"$cache_file" else case $cache_file in #( */* | ?:*) mv -f confcache "$cache_file"$$ && mv -f "$cache_file"$$ "$cache_file" ;; #( *) mv -f confcache "$cache_file" ;; esac fi fi else { $as_echo "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5 $as_echo "$as_me: not updating unwritable cache $cache_file" >&6;} fi fi rm -f confcache test "x$prefix" = xNONE && prefix=$ac_default_prefix # Let make expand exec_prefix. test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' DEFS=-DHAVE_CONFIG_H ac_libobjs= ac_ltlibobjs= U= for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue # 1. Remove the extension, and $U if already installed. ac_script='s/\$U\././;s/\.o$//;s/\.obj$//' ac_i=`$as_echo "$ac_i" | sed "$ac_script"` # 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR # will be set to the directory where LIBOBJS objects are built. as_fn_append ac_libobjs " \${LIBOBJDIR}$ac_i\$U.$ac_objext" as_fn_append ac_ltlibobjs " \${LIBOBJDIR}$ac_i"'$U.lo' done LIBOBJS=$ac_libobjs LTLIBOBJS=$ac_ltlibobjs : "${CONFIG_STATUS=./config.status}" ac_write_fail=0 ac_clean_files_save=$ac_clean_files ac_clean_files="$ac_clean_files $CONFIG_STATUS" { $as_echo "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5 $as_echo "$as_me: creating $CONFIG_STATUS" >&6;} as_write_fail=0 cat >$CONFIG_STATUS <<_ASEOF || as_write_fail=1 #! $SHELL # Generated by $as_me. # Run this file to recreate the current configuration. # Compiler output produced by configure, useful for debugging # configure, is in config.log if it exists. debug=false ac_cs_recheck=false ac_cs_silent=false SHELL=\${CONFIG_SHELL-$SHELL} export SHELL _ASEOF cat >>$CONFIG_STATUS <<\_ASEOF || as_write_fail=1 ## -------------------- ## ## M4sh Initialization. ## ## -------------------- ## # Be more Bourne compatible DUALCASE=1; export DUALCASE # for MKS sh if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST else case `(set -o) 2>/dev/null` in #( *posix*) : set -o posix ;; #( *) : ;; esac fi as_nl=' ' export as_nl # Printing a long string crashes Solaris 7 /usr/bin/printf. as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo # Prefer a ksh shell builtin over an external printf program on Solaris, # but without wasting forks for bash or zsh. if test -z "$BASH_VERSION$ZSH_VERSION" \ && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then as_echo='print -r --' as_echo_n='print -rn --' elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then as_echo='printf %s\n' as_echo_n='printf %s' else if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' as_echo_n='/usr/ucb/echo -n' else as_echo_body='eval expr "X$1" : "X\\(.*\\)"' as_echo_n_body='eval arg=$1; case $arg in #( *"$as_nl"*) expr "X$arg" : "X\\(.*\\)$as_nl"; arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; esac; expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" ' export as_echo_n_body as_echo_n='sh -c $as_echo_n_body as_echo' fi export as_echo_body as_echo='sh -c $as_echo_body as_echo' fi # The user is always right. if test "${PATH_SEPARATOR+set}" != set; then PATH_SEPARATOR=: (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || PATH_SEPARATOR=';' } fi # IFS # We need space, tab and new line, in precisely that order. Quoting is # there to prevent editors from complaining about space-tab. # (If _AS_PATH_WALK were called with IFS unset, it would disable word # splitting by setting IFS to empty value.) IFS=" "" $as_nl" # Find who we are. Look in the path if we contain no directory separator. as_myself= case $0 in #(( *[\\/]* ) as_myself=$0 ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break done IFS=$as_save_IFS ;; esac # We did not find ourselves, most probably we were run as `sh COMMAND' # in which case we are not to be found in the path. if test "x$as_myself" = x; then as_myself=$0 fi if test ! -f "$as_myself"; then $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 exit 1 fi # Unset variables that we do not need and which cause bugs (e.g. in # pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" # suppresses any "Segmentation fault" message there. '((' could # trigger a bug in pdksh 5.2.14. for as_var in BASH_ENV ENV MAIL MAILPATH do eval test x\${$as_var+set} = xset \ && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : done PS1='$ ' PS2='> ' PS4='+ ' # NLS nuisances. LC_ALL=C export LC_ALL LANGUAGE=C export LANGUAGE # CDPATH. (unset CDPATH) >/dev/null 2>&1 && unset CDPATH # as_fn_error STATUS ERROR [LINENO LOG_FD] # ---------------------------------------- # Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are # provided, also output the error to LOG_FD, referencing LINENO. Then exit the # script with STATUS, using 1 if that was 0. as_fn_error () { as_status=$1; test $as_status -eq 0 && as_status=1 if test "$4"; then as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 fi $as_echo "$as_me: error: $2" >&2 as_fn_exit $as_status } # as_fn_error # as_fn_set_status STATUS # ----------------------- # Set $? to STATUS, without forking. as_fn_set_status () { return $1 } # as_fn_set_status # as_fn_exit STATUS # ----------------- # Exit the shell with STATUS, even in a "trap 0" or "set -e" context. as_fn_exit () { set +e as_fn_set_status $1 exit $1 } # as_fn_exit # as_fn_unset VAR # --------------- # Portably unset VAR. as_fn_unset () { { eval $1=; unset $1;} } as_unset=as_fn_unset # as_fn_append VAR VALUE # ---------------------- # Append the text in VALUE to the end of the definition contained in VAR. Take # advantage of any shell optimizations that allow amortized linear growth over # repeated appends, instead of the typical quadratic growth present in naive # implementations. if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : eval 'as_fn_append () { eval $1+=\$2 }' else as_fn_append () { eval $1=\$$1\$2 } fi # as_fn_append # as_fn_arith ARG... # ------------------ # Perform arithmetic evaluation on the ARGs, and store the result in the # global $as_val. Take advantage of shells that can avoid forks. The arguments # must be portable across $(()) and expr. if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : eval 'as_fn_arith () { as_val=$(( $* )) }' else as_fn_arith () { as_val=`expr "$@" || test $? -eq 1` } fi # as_fn_arith if expr a : '\(a\)' >/dev/null 2>&1 && test "X`expr 00001 : '.*\(...\)'`" = X001; then as_expr=expr else as_expr=false fi if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then as_basename=basename else as_basename=false fi if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then as_dirname=dirname else as_dirname=false fi as_me=`$as_basename -- "$0" || $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ X"$0" : 'X\(//\)$' \| \ X"$0" : 'X\(/\)' \| . 2>/dev/null || $as_echo X/"$0" | sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/ q } /^X\/\(\/\/\)$/{ s//\1/ q } /^X\/\(\/\).*/{ s//\1/ q } s/.*/./; q'` # Avoid depending upon Character Ranges. as_cr_letters='abcdefghijklmnopqrstuvwxyz' as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' as_cr_Letters=$as_cr_letters$as_cr_LETTERS as_cr_digits='0123456789' as_cr_alnum=$as_cr_Letters$as_cr_digits ECHO_C= ECHO_N= ECHO_T= case `echo -n x` in #((((( -n*) case `echo 'xy\c'` in *c*) ECHO_T=' ';; # ECHO_T is single tab character. xy) ECHO_C='\c';; *) echo `echo ksh88 bug on AIX 6.1` > /dev/null ECHO_T=' ';; esac;; *) ECHO_N='-n';; esac rm -f conf$$ conf$$.exe conf$$.file if test -d conf$$.dir; then rm -f conf$$.dir/conf$$.file else rm -f conf$$.dir mkdir conf$$.dir 2>/dev/null fi if (echo >conf$$.file) 2>/dev/null; then if ln -s conf$$.file conf$$ 2>/dev/null; then as_ln_s='ln -s' # ... but there are two gotchas: # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. # In both cases, we have to default to `cp -pR'. ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || as_ln_s='cp -pR' elif ln conf$$.file conf$$ 2>/dev/null; then as_ln_s=ln else as_ln_s='cp -pR' fi else as_ln_s='cp -pR' fi rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file rmdir conf$$.dir 2>/dev/null # as_fn_mkdir_p # ------------- # Create "$as_dir" as a directory, including parents if necessary. as_fn_mkdir_p () { case $as_dir in #( -*) as_dir=./$as_dir;; esac test -d "$as_dir" || eval $as_mkdir_p || { as_dirs= while :; do case $as_dir in #( *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( *) as_qdir=$as_dir;; esac as_dirs="'$as_qdir' $as_dirs" as_dir=`$as_dirname -- "$as_dir" || $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_dir" : 'X\(//\)[^/]' \| \ X"$as_dir" : 'X\(//\)$' \| \ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$as_dir" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` test -d "$as_dir" && break done test -z "$as_dirs" || eval "mkdir $as_dirs" } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" } # as_fn_mkdir_p if mkdir -p . 2>/dev/null; then as_mkdir_p='mkdir -p "$as_dir"' else test -d ./-p && rmdir ./-p as_mkdir_p=false fi # as_fn_executable_p FILE # ----------------------- # Test if FILE is an executable regular file. as_fn_executable_p () { test -f "$1" && test -x "$1" } # as_fn_executable_p as_test_x='test -x' as_executable_p=as_fn_executable_p # Sed expression to map a string onto a valid CPP name. as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" # Sed expression to map a string onto a valid variable name. as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" exec 6>&1 ## ----------------------------------- ## ## Main body of $CONFIG_STATUS script. ## ## ----------------------------------- ## _ASEOF test $as_write_fail = 0 && chmod +x $CONFIG_STATUS || ac_write_fail=1 cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # Save the log message, to keep $0 and so on meaningful, and to # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" This file was extended by mitm $as_me 4.0, which was generated by GNU Autoconf 2.69. Invocation command line was CONFIG_FILES = $CONFIG_FILES CONFIG_HEADERS = $CONFIG_HEADERS CONFIG_LINKS = $CONFIG_LINKS CONFIG_COMMANDS = $CONFIG_COMMANDS $ $0 $@ on `(hostname || uname -n) 2>/dev/null | sed 1q` " _ACEOF case $ac_config_files in *" "*) set x $ac_config_files; shift; ac_config_files=$*;; esac case $ac_config_headers in *" "*) set x $ac_config_headers; shift; ac_config_headers=$*;; esac cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 # Files that config.status was made for. config_files="$ac_config_files" config_headers="$ac_config_headers" _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 ac_cs_usage="\ \`$as_me' instantiates files and other configuration actions from templates according to the current configuration. Unless the files and actions are specified as TAGs, all are instantiated by default. Usage: $0 [OPTION]... [TAG]... -h, --help print this help, then exit -V, --version print version number and configuration settings, then exit --config print configuration, then exit -q, --quiet, --silent do not print progress messages -d, --debug don't remove temporary files --recheck update $as_me by reconfiguring in the same conditions --file=FILE[:TEMPLATE] instantiate the configuration file FILE --header=FILE[:TEMPLATE] instantiate the configuration header FILE Configuration files: $config_files Configuration headers: $config_headers Report bugs to the package provider." _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" ac_cs_version="\\ mitm config.status 4.0 configured by $0, generated by GNU Autoconf 2.69, with options \\"\$ac_cs_config\\" Copyright (C) 2012 Free Software Foundation, Inc. This config.status script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it." ac_pwd='$ac_pwd' srcdir='$srcdir' INSTALL='$INSTALL' test -n "\$AWK" || AWK=awk _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # The default lists apply if the user does not specify any file. ac_need_defaults=: while test $# != 0 do case $1 in --*=?*) ac_option=`expr "X$1" : 'X\([^=]*\)='` ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'` ac_shift=: ;; --*=) ac_option=`expr "X$1" : 'X\([^=]*\)='` ac_optarg= ac_shift=: ;; *) ac_option=$1 ac_optarg=$2 ac_shift=shift ;; esac case $ac_option in # Handling of the options. -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) ac_cs_recheck=: ;; --version | --versio | --versi | --vers | --ver | --ve | --v | -V ) $as_echo "$ac_cs_version"; exit ;; --config | --confi | --conf | --con | --co | --c ) $as_echo "$ac_cs_config"; exit ;; --debug | --debu | --deb | --de | --d | -d ) debug=: ;; --file | --fil | --fi | --f ) $ac_shift case $ac_optarg in *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; '') as_fn_error $? "missing file argument" ;; esac as_fn_append CONFIG_FILES " '$ac_optarg'" ac_need_defaults=false;; --header | --heade | --head | --hea ) $ac_shift case $ac_optarg in *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; esac as_fn_append CONFIG_HEADERS " '$ac_optarg'" ac_need_defaults=false;; --he | --h) # Conflict between --help and --header as_fn_error $? "ambiguous option: \`$1' Try \`$0 --help' for more information.";; --help | --hel | -h ) $as_echo "$ac_cs_usage"; exit ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil | --si | --s) ac_cs_silent=: ;; # This is an error. -*) as_fn_error $? "unrecognized option: \`$1' Try \`$0 --help' for more information." ;; *) as_fn_append ac_config_targets " $1" ac_need_defaults=false ;; esac shift done ac_configure_extra_args= if $ac_cs_silent; then exec 6>/dev/null ac_configure_extra_args="$ac_configure_extra_args --silent" fi _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 if \$ac_cs_recheck; then set X $SHELL '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion shift \$as_echo "running CONFIG_SHELL=$SHELL \$*" >&6 CONFIG_SHELL='$SHELL' export CONFIG_SHELL exec "\$@" fi _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 exec 5>>config.log { echo sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX ## Running $as_me. ## _ASBOX $as_echo "$ac_log" } >&5 _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # Handling of arguments. for ac_config_target in $ac_config_targets do case $ac_config_target in "conf.h") CONFIG_HEADERS="$CONFIG_HEADERS conf.h" ;; "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;; "Makefile.obj") CONFIG_FILES="$CONFIG_FILES Makefile.obj" ;; *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;; esac done # If the user did not use the arguments to specify the items to instantiate, # then the envvar interface is used. Set only those that are not. # We use the long form for the default assignment because of an extremely # bizarre bug on SunOS 4.1.3. if $ac_need_defaults; then test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers fi # Have a temporary directory for convenience. Make it in the build tree # simply because there is no reason against having it here, and in addition, # creating and moving files from /tmp can sometimes cause problems. # Hook for its removal unless debugging. # Note that there is a small window in which the directory will not be cleaned: # after its creation but before its name has been assigned to `$tmp'. $debug || { tmp= ac_tmp= trap 'exit_status=$? : "${ac_tmp:=$tmp}" { test ! -d "$ac_tmp" || rm -fr "$ac_tmp"; } && exit $exit_status ' 0 trap 'as_fn_exit 1' 1 2 13 15 } # Create a (secure) tmp directory for tmp files. { tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` && test -d "$tmp" } || { tmp=./conf$$-$RANDOM (umask 077 && mkdir "$tmp") } || as_fn_error $? "cannot create a temporary directory in ." "$LINENO" 5 ac_tmp=$tmp # Set up the scripts for CONFIG_FILES section. # No need to generate them if there are no CONFIG_FILES. # This happens for instance with `./config.status config.h'. if test -n "$CONFIG_FILES"; then ac_cr=`echo X | tr X '\015'` # On cygwin, bash can eat \r inside `` if the user requested igncr. # But we know of no other shell where ac_cr would be empty at this # point, so we can use a bashism as a fallback. if test "x$ac_cr" = x; then eval ac_cr=\$\'\\r\' fi ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' /dev/null` if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then ac_cs_awk_cr='\\r' else ac_cs_awk_cr=$ac_cr fi echo 'BEGIN {' >"$ac_tmp/subs1.awk" && _ACEOF { echo "cat >conf$$subs.awk <<_ACEOF" && echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' && echo "_ACEOF" } >conf$$subs.sh || as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 ac_delim_num=`echo "$ac_subst_vars" | grep -c '^'` ac_delim='%!_!# ' for ac_last_try in false false false false false :; do . ./conf$$subs.sh || as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 ac_delim_n=`sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | grep -c X` if test $ac_delim_n = $ac_delim_num; then break elif $ac_last_try; then as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 else ac_delim="$ac_delim!$ac_delim _$ac_delim!! " fi done rm -f conf$$subs.sh cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 cat >>"\$ac_tmp/subs1.awk" <<\\_ACAWK && _ACEOF sed -n ' h s/^/S["/; s/!.*/"]=/ p g s/^[^!]*!// :repl t repl s/'"$ac_delim"'$// t delim :nl h s/\(.\{148\}\)..*/\1/ t more1 s/["\\]/\\&/g; s/^/"/; s/$/\\n"\\/ p n b repl :more1 s/["\\]/\\&/g; s/^/"/; s/$/"\\/ p g s/.\{148\}// t nl :delim h s/\(.\{148\}\)..*/\1/ t more2 s/["\\]/\\&/g; s/^/"/; s/$/"/ p b :more2 s/["\\]/\\&/g; s/^/"/; s/$/"\\/ p g s/.\{148\}// t delim ' >$CONFIG_STATUS || ac_write_fail=1 rm -f conf$$subs.awk cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 _ACAWK cat >>"\$ac_tmp/subs1.awk" <<_ACAWK && for (key in S) S_is_set[key] = 1 FS = "" } { line = $ 0 nfields = split(line, field, "@") substed = 0 len = length(field[1]) for (i = 2; i < nfields; i++) { key = field[i] keylen = length(key) if (S_is_set[key]) { value = S[key] line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3) len += length(value) + length(field[++i]) substed = 1 } else len += 1 + keylen } print line } _ACAWK _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g" else cat fi < "$ac_tmp/subs1.awk" > "$ac_tmp/subs.awk" \ || as_fn_error $? "could not setup config files machinery" "$LINENO" 5 _ACEOF # VPATH may cause trouble with some makes, so we remove sole $(srcdir), # ${srcdir} and @srcdir@ entries from VPATH if srcdir is ".", strip leading and # trailing colons and then remove the whole line if VPATH becomes empty # (actually we leave an empty line to preserve line numbers). if test "x$srcdir" = x.; then ac_vpsub='/^[ ]*VPATH[ ]*=[ ]*/{ h s/// s/^/:/ s/[ ]*$/:/ s/:\$(srcdir):/:/g s/:\${srcdir}:/:/g s/:@srcdir@:/:/g s/^:*// s/:*$// x s/\(=[ ]*\).*/\1/ G s/\n// s/^[^=]*=[ ]*$// }' fi cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 fi # test -n "$CONFIG_FILES" # Set up the scripts for CONFIG_HEADERS section. # No need to generate them if there are no CONFIG_HEADERS. # This happens for instance with `./config.status Makefile'. if test -n "$CONFIG_HEADERS"; then cat >"$ac_tmp/defines.awk" <<\_ACAWK || BEGIN { _ACEOF # Transform confdefs.h into an awk script `defines.awk', embedded as # here-document in config.status, that substitutes the proper values into # config.h.in to produce config.h. # Create a delimiter string that does not exist in confdefs.h, to ease # handling of long lines. ac_delim='%!_!# ' for ac_last_try in false false :; do ac_tt=`sed -n "/$ac_delim/p" confdefs.h` if test -z "$ac_tt"; then break elif $ac_last_try; then as_fn_error $? "could not make $CONFIG_HEADERS" "$LINENO" 5 else ac_delim="$ac_delim!$ac_delim _$ac_delim!! " fi done # For the awk script, D is an array of macro values keyed by name, # likewise P contains macro parameters if any. Preserve backslash # newline sequences. ac_word_re=[_$as_cr_Letters][_$as_cr_alnum]* sed -n ' s/.\{148\}/&'"$ac_delim"'/g t rset :rset s/^[ ]*#[ ]*define[ ][ ]*/ / t def d :def s/\\$// t bsnl s/["\\]/\\&/g s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ D["\1"]=" \3"/p s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2"/p d :bsnl s/["\\]/\\&/g s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ D["\1"]=" \3\\\\\\n"\\/p t cont s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2\\\\\\n"\\/p t cont d :cont n s/.\{148\}/&'"$ac_delim"'/g t clear :clear s/\\$// t bsnlc s/["\\]/\\&/g; s/^/"/; s/$/"/p d :bsnlc s/["\\]/\\&/g; s/^/"/; s/$/\\\\\\n"\\/p b cont ' >$CONFIG_STATUS || ac_write_fail=1 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 for (key in D) D_is_set[key] = 1 FS = "" } /^[\t ]*#[\t ]*(define|undef)[\t ]+$ac_word_re([\t (]|\$)/ { line = \$ 0 split(line, arg, " ") if (arg[1] == "#") { defundef = arg[2] mac1 = arg[3] } else { defundef = substr(arg[1], 2) mac1 = arg[2] } split(mac1, mac2, "(") #) macro = mac2[1] prefix = substr(line, 1, index(line, defundef) - 1) if (D_is_set[macro]) { # Preserve the white space surrounding the "#". print prefix "define", macro P[macro] D[macro] next } else { # Replace #undef with comments. This is necessary, for example, # in the case of _POSIX_SOURCE, which is predefined and required # on some systems where configure will not decide to define it. if (defundef == "undef") { print "/*", prefix defundef, macro, "*/" next } } } { print } _ACAWK _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 as_fn_error $? "could not setup config headers machinery" "$LINENO" 5 fi # test -n "$CONFIG_HEADERS" eval set X " :F $CONFIG_FILES :H $CONFIG_HEADERS " shift for ac_tag do case $ac_tag in :[FHLC]) ac_mode=$ac_tag; continue;; esac case $ac_mode$ac_tag in :[FHL]*:*);; :L* | :C*:*) as_fn_error $? "invalid tag \`$ac_tag'" "$LINENO" 5;; :[FH]-) ac_tag=-:-;; :[FH]*) ac_tag=$ac_tag:$ac_tag.in;; esac ac_save_IFS=$IFS IFS=: set x $ac_tag IFS=$ac_save_IFS shift ac_file=$1 shift case $ac_mode in :L) ac_source=$1;; :[FH]) ac_file_inputs= for ac_f do case $ac_f in -) ac_f="$ac_tmp/stdin";; *) # Look for the file first in the build tree, then in the source tree # (if the path is not absolute). The absolute path cannot be DOS-style, # because $ac_f cannot contain `:'. test -f "$ac_f" || case $ac_f in [\\/$]*) false;; *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";; esac || as_fn_error 1 "cannot find input file: \`$ac_f'" "$LINENO" 5;; esac case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac as_fn_append ac_file_inputs " '$ac_f'" done # Let's still pretend it is `configure' which instantiates (i.e., don't # use $as_me), people would be surprised to read: # /* config.h. Generated by config.status. */ configure_input='Generated from '` $as_echo "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g' `' by configure.' if test x"$ac_file" != x-; then configure_input="$ac_file. $configure_input" { $as_echo "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5 $as_echo "$as_me: creating $ac_file" >&6;} fi # Neutralize special characters interpreted by sed in replacement strings. case $configure_input in #( *\&* | *\|* | *\\* ) ac_sed_conf_input=`$as_echo "$configure_input" | sed 's/[\\\\&|]/\\\\&/g'`;; #( *) ac_sed_conf_input=$configure_input;; esac case $ac_tag in *:-:* | *:-) cat >"$ac_tmp/stdin" \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;; esac ;; esac ac_dir=`$as_dirname -- "$ac_file" || $as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$ac_file" : 'X\(//\)[^/]' \| \ X"$ac_file" : 'X\(//\)$' \| \ X"$ac_file" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$ac_file" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` as_dir="$ac_dir"; as_fn_mkdir_p ac_builddir=. case "$ac_dir" in .) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` # A ".." for each directory in $ac_dir_suffix. ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` case $ac_top_builddir_sub in "") ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; esac ;; esac ac_abs_top_builddir=$ac_pwd ac_abs_builddir=$ac_pwd$ac_dir_suffix # for backward compatibility: ac_top_builddir=$ac_top_build_prefix case $srcdir in .) # We are building in place. ac_srcdir=. ac_top_srcdir=$ac_top_builddir_sub ac_abs_top_srcdir=$ac_pwd ;; [\\/]* | ?:[\\/]* ) # Absolute name. ac_srcdir=$srcdir$ac_dir_suffix; ac_top_srcdir=$srcdir ac_abs_top_srcdir=$srcdir ;; *) # Relative name. ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix ac_top_srcdir=$ac_top_build_prefix$srcdir ac_abs_top_srcdir=$ac_pwd/$srcdir ;; esac ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix case $ac_mode in :F) # # CONFIG_FILE # case $INSTALL in [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;; *) ac_INSTALL=$ac_top_build_prefix$INSTALL ;; esac _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # If the template does not know about datarootdir, expand it. # FIXME: This hack should be removed a few years after 2.60. ac_datarootdir_hack=; ac_datarootdir_seen= ac_sed_dataroot=' /datarootdir/ { p q } /@datadir@/p /@docdir@/p /@infodir@/p /@localedir@/p /@mandir@/p' case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in *datarootdir*) ac_datarootdir_seen=yes;; *@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 $as_echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;} _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_datarootdir_hack=' s&@datadir@&$datadir&g s&@docdir@&$docdir&g s&@infodir@&$infodir&g s&@localedir@&$localedir&g s&@mandir@&$mandir&g s&\\\${datarootdir}&$datarootdir&g' ;; esac _ACEOF # Neutralize VPATH when `$srcdir' = `.'. # Shell code in configure.ac might set extrasub. # FIXME: do we really want to maintain this feature? cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_sed_extra="$ac_vpsub $extrasub _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 :t /@[a-zA-Z_][a-zA-Z_0-9]*@/!b s|@configure_input@|$ac_sed_conf_input|;t t s&@top_builddir@&$ac_top_builddir_sub&;t t s&@top_build_prefix@&$ac_top_build_prefix&;t t s&@srcdir@&$ac_srcdir&;t t s&@abs_srcdir@&$ac_abs_srcdir&;t t s&@top_srcdir@&$ac_top_srcdir&;t t s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t s&@builddir@&$ac_builddir&;t t s&@abs_builddir@&$ac_abs_builddir&;t t s&@abs_top_builddir@&$ac_abs_top_builddir&;t t s&@INSTALL@&$ac_INSTALL&;t t $ac_datarootdir_hack " eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$ac_tmp/subs.awk" \ >$ac_tmp/out || as_fn_error $? "could not create $ac_file" "$LINENO" 5 test -z "$ac_datarootdir_hack$ac_datarootdir_seen" && { ac_out=`sed -n '/\${datarootdir}/p' "$ac_tmp/out"`; test -n "$ac_out"; } && { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' \ "$ac_tmp/out"`; test -z "$ac_out"; } && { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir' which seems to be undefined. Please make sure it is defined" >&5 $as_echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir' which seems to be undefined. Please make sure it is defined" >&2;} rm -f "$ac_tmp/stdin" case $ac_file in -) cat "$ac_tmp/out" && rm -f "$ac_tmp/out";; *) rm -f "$ac_file" && mv "$ac_tmp/out" "$ac_file";; esac \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;; :H) # # CONFIG_HEADER # if test x"$ac_file" != x-; then { $as_echo "/* $configure_input */" \ && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" } >"$ac_tmp/config.h" \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 if diff "$ac_file" "$ac_tmp/config.h" >/dev/null 2>&1; then { $as_echo "$as_me:${as_lineno-$LINENO}: $ac_file is unchanged" >&5 $as_echo "$as_me: $ac_file is unchanged" >&6;} else rm -f "$ac_file" mv "$ac_tmp/config.h" "$ac_file" \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 fi else $as_echo "/* $configure_input */" \ && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" \ || as_fn_error $? "could not create -" "$LINENO" 5 fi ;; esac done # for ac_tag as_fn_exit 0 _ACEOF ac_clean_files=$ac_clean_files_save test $ac_write_fail = 0 || as_fn_error $? "write failure creating $CONFIG_STATUS" "$LINENO" 5 # configure is writing to config.log, and then calls config.status. # config.status does its own redirection, appending to config.log. # Unfortunately, on DOS this fails, as config.log is still kept open # by configure, so config.status won't be able to write to it; its # output is simply discarded. So we exec the FD to /dev/null, # effectively closing config.log, so it can be properly (re)opened and # appended to by config.status. When coming back to configure, we # need to make the FD available again. if test "$no_create" != yes; then ac_cs_success=: ac_config_status_args= test "$silent" = yes && ac_config_status_args="$ac_config_status_args --quiet" exec 5>/dev/null $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false exec 5>>config.log # Use ||, not &&, to avoid exiting from the if with $? = 1, which # would make configure fail if this is the last instruction. $ac_cs_success || as_fn_exit 1 fi if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5 $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;} fi suite3270-4.1/mitm/configure.in000066400000000000000000000052421413735575200163210ustar00rootroot00000000000000dnl Copyright (c) 2000-2009, 2014-2018, 2020 Paul Mattes. dnl All rights reserved. dnl dnl Redistribution and use in source and binary forms, with or without dnl modification, are permitted provided that the following conditions dnl are met: dnl * Redistributions of source code must retain the above copyright dnl notice, this list of conditions and the following disclaimer. dnl * Redistributions in binary form must reproduce the above copyright dnl notice, this list of conditions and the following disclaimer in the dnl documentation and/or other materials provided with the distribution. dnl * Neither the name of Paul Mattes nor his contributors may be used dnl to endorse or promote products derived from this software without dnl specific prior written permission. dnl dnl THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS dnl OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED dnl WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE dnl DISCLAIMED. IN NO EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, dnl INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES dnl (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR dnl SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) dnl HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, dnl STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING dnl IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE dnl POSSIBILITY OF SUCH DAMAGE. dnl Process this file with autoconf to produce a configure script. AC_INIT(mitm,4.0) AC_PREREQ(2.50) dnl Checks for programs. AC_PROG_INSTALL AC_PROG_CC dnl Figure out what sort of host and compiler this is. AC_CANONICAL_HOST ansi="-std=c99 -pedantic" case "$host_os" in *cygwin*) ansi="" ;; solaris2*) CPPFLAGS="$CPPFLAGS -D__EXTENSIONS__" ;; darwin*) CCOPTIONS="$CCOPTIONS -no-cpp-precomp -Wno-deprecated-declarations" ;; linux*) CPPFLAGS="$CPPFLAGS -D_POSIX_SOURCE" ;; esac if test "$GCC" = yes then # Add common gcc options, plus flags for dependency generation. CCOPTIONS="$CCOPTIONS -Wall -Wsign-compare $ansi -Wno-variadic-macros -MMD -MP" fi AC_SUBST(host) AC_SUBST(CCOPTIONS) dnl Check for libraries. dnl Note that the order here is important. The last libraries should appear dnl first, so that objects in them can be used by subsequent libraries. AC_SEARCH_LIBS(gethostbyname, nsl) AC_SEARCH_LIBS(socket, socket) dnl Checks for header files. AC_CHECK_HEADERS(sys/select.h) AC_CHECK_HEADERS(getopt.h) dnl Generate conf.h. AC_CONFIG_HEADER(conf.h) dnl Generate the Makefiles. AC_CONFIG_FILES(Makefile Makefile.obj) AC_OUTPUT suite3270-4.1/mitm/html.m4000077700000000000000000000000001413735575200200572../Common/html.m4ustar00rootroot00000000000000suite3270-4.1/mitm/html/000077500000000000000000000000001413735575200147515ustar00rootroot00000000000000suite3270-4.1/mitm/html/.gitignore000066400000000000000000000000171413735575200167370ustar00rootroot00000000000000Unix-mitm.html suite3270-4.1/mitm/localdefs.h000066400000000000000000000034661413735575200161230ustar00rootroot00000000000000/* * Copyright (c) 2000-2009, 2014-2015, 2018 Paul Mattes. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of Paul Mattes nor his contributors may be used * to endorse or promote products derived from this software without * specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. */ /* * localdefs.h * Local definitions for mitm. * * This file contains definitions for environment-specific * facilities, such as memory allocation, I/O registration, * and timers. */ /* Identify ourselves. */ #define MITM 1 #if defined(_WIN32) /*[*/ # define WMITM 1 #endif /*]*/ suite3270-4.1/mitm/m4man000077700000000000000000000000001413735575200173412../Common/m4manustar00rootroot00000000000000suite3270-4.1/mitm/man.m4000077700000000000000000000000001413735575200174752../Common/man.m4ustar00rootroot00000000000000suite3270-4.1/mitm/mitm.man000066400000000000000000000046451413735575200154610ustar00rootroot00000000000000'\" t .TH mitm 1 "30 October 2021" .SH "NAME" mitm \- network stream trace facility .SH "SYNOPSIS" \fBmitm\fP [\-p \fIlistenport\fP] [\-f \fIoutfile\fP] .SH "DESCRIPTION" \fBmitm\fP is a proxy server that traces the data passing through it. It supports the Sun \fIpassthru\fP protocol, where the client writes the desired host name and port, separated by a space and terminated by a carriage return and line feed, at the beginning of the session. .LP Network data is written in hexadecimal to the specified file. .LP The name is derived from its position in the network stream: the man in the middle. .SH "OPTIONS" .TP \fB\-p\fP \fIlistenport\fP Specifies the port to listen on. The default port is 4200. .TP \fB\-f\fP \fIoutfile\fP Specifies the trace file to create. The default is /tmp/mitm.\fIpid\fP. .SH "EXAMPLE" The emulator command-line option to route connection through \fBmitm\fP is: .IP .RS \-proxy passthru:127.0.0.1:4200 .RE .SH "SEE ALSO" s3270(1), x3270(1), c3270(1) .SH "COPYRIGHTS" Copyright 2018-2021, Paul Mattes. .br All rights reserved. .LP Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: .TP * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. .TP * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. .TP * Neither the name of Paul Mattes nor the names of his contributors may be used to endorse or promote products derived from this software without specific prior written permission. .LP THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. .SH "VERSION" mitm 4.1pre10 suite3270-4.1/mitm/mitm.man.m4000077700000000000000000000000001413735575200214072../Common/mitm.man.m4ustar00rootroot00000000000000suite3270-4.1/mitm/mitm_files.mk000066400000000000000000000000631413735575200164650ustar00rootroot00000000000000# mitm-specific object files MITM_OBJECTS = mitm.o suite3270-4.1/mitm/version.txt000077700000000000000000000000001413735575200221172../Common/version.txtustar00rootroot00000000000000suite3270-4.1/mktar.sh000077500000000000000000000002411413735575200145110ustar00rootroot00000000000000#!/usr/bin/env bash set -x . Common/version.txt ver=${version%%[a-z]*} git archive --format=tar --prefix=suite3270-$ver/ HEAD | gzip >suite3270-$version-src.tgz suite3270-4.1/pr3287/000077500000000000000000000000001413735575200140045ustar00rootroot00000000000000suite3270-4.1/pr3287/.gitignore000066400000000000000000000000241413735575200157700ustar00rootroot00000000000000conf.h Makefile.obj suite3270-4.1/pr3287/Makefile.aux000077700000000000000000000000001413735575200230772../Common/pr3287/Makefile.auxustar00rootroot00000000000000suite3270-4.1/pr3287/Makefile.in000077700000000000000000000000001413735575200225212../Common/pr3287/Makefile.inustar00rootroot00000000000000suite3270-4.1/pr3287/Makefile.obj.in000066400000000000000000000055201413735575200166240ustar00rootroot00000000000000# Copyright (c) 1999-2010, 2013-2017, 2020 Paul Mattes. # All rights reserved. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions are met: # * Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # * Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in the # documentation and/or other materials provided with the distribution. # * Neither the names of Paul Mattes nor the names of his contributors # may be used to endorse or promote products derived from this software # without specific prior written permission. # # THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS OR IMPLIED # WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF # MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO # EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, # SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, # PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; # OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, # WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR # OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF # ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. # Makefile for pr3287 RM = rm -f CC = @CC@ all: pr3287 prefix = @prefix@ exec_prefix = @exec_prefix@ datarootdir = @datarootdir@ MANDIR = @mandir@ BINDIR = @bindir@ sysconfdir = @sysconfdir@ CCOPTIONS = @CCOPTIONS@ XCPPFLAGS = @CPPFLAGS@ -I$(THIS) -I$(TOP)/include CFLAGS = $(CCOPTIONS) $(CDEBUGFLAGS) $(XCPPFLAGS) \ -DLIBX3270DIR=\"@LIBX3270DIR@\" @CFLAGS@ LDFLAGS = @LDFLAGS@ LIBS = @LIBS@ INSTALL = @INSTALL@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_DATA = @INSTALL_DATA@ HOST = @host@ include pr3287_files.mk libs.mk OBJECTS = $(PR3287_OBJECTS) XVERSION = xversion.c version.o: mkversion.sh $(OBJECTS) version.txt $(RM) $(XVERSION) sh $< pr3287 $(filter %.txt,$^) >$(XVERSION) $(CC) $(CFLAGS) -c -o $@ $(XVERSION) $(RM) $(XVERSION) pr3287: $(OBJECTS) version.o $(DEP32XX) $(DEP3270STUBS) $(CC) -o $@ $(OBJECTS) version.o $(LDFLAGS) $(LD32XX) $(LD3270STUBS) $(LIBS) man:: pr3287.man if [ ! -f $(notdir $^) ]; then cp $< $(notdir $^); fi install: pr3287 [ -d $(DESTDIR)$(BINDIR) ] || \ mkdir -p $(DESTDIR)$(BINDIR) $(INSTALL_PROGRAM) pr3287 $(DESTDIR)$(BINDIR)/pr3287 install.man: man [ -d $(DESTDIR)$(MANDIR)/man1 ] || \ mkdir -p $(DESTDIR)$(MANDIR)/man1 $(INSTALL_DATA) pr3287.man $(DESTDIR)$(MANDIR)/man1/pr3287.1 clean: $(RM) *.o clobber: clean $(RM) pr3287 *.d *.man # Include auto-generated dependencies. -include $(OBJS:.o=.d) suite3270-4.1/pr3287/conf.h.in000066400000000000000000000035151413735575200155130ustar00rootroot00000000000000/* * Copyright (c) 2000-2009, 2014-2015, 2017, 2019 Paul Mattes. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of Paul Mattes nor his contributors may be used * to endorse or promote products derived from this software without * specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. */ /* * conf.h * System-specific #defines for libraries and library functions. * Automatically generated from conf.h.in by configure. */ /* Libraries. */ /* Header files. */ /* Uncommon functions. */ #undef HAVE_VASPRINTF /* Configuration options. */ /* Optional parts. */ #undef X3270_IPV6 suite3270-4.1/pr3287/configure000077500000000000000000004366551413735575200157360ustar00rootroot00000000000000#! /bin/sh # Guess values for system-dependent variables and create Makefiles. # Generated by GNU Autoconf 2.69 for pr3287 4.0. # # # Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc. # # # This configure script is free software; the Free Software Foundation # gives unlimited permission to copy, distribute and modify it. ## -------------------- ## ## M4sh Initialization. ## ## -------------------- ## # Be more Bourne compatible DUALCASE=1; export DUALCASE # for MKS sh if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST else case `(set -o) 2>/dev/null` in #( *posix*) : set -o posix ;; #( *) : ;; esac fi as_nl=' ' export as_nl # Printing a long string crashes Solaris 7 /usr/bin/printf. as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo # Prefer a ksh shell builtin over an external printf program on Solaris, # but without wasting forks for bash or zsh. if test -z "$BASH_VERSION$ZSH_VERSION" \ && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then as_echo='print -r --' as_echo_n='print -rn --' elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then as_echo='printf %s\n' as_echo_n='printf %s' else if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' as_echo_n='/usr/ucb/echo -n' else as_echo_body='eval expr "X$1" : "X\\(.*\\)"' as_echo_n_body='eval arg=$1; case $arg in #( *"$as_nl"*) expr "X$arg" : "X\\(.*\\)$as_nl"; arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; esac; expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" ' export as_echo_n_body as_echo_n='sh -c $as_echo_n_body as_echo' fi export as_echo_body as_echo='sh -c $as_echo_body as_echo' fi # The user is always right. if test "${PATH_SEPARATOR+set}" != set; then PATH_SEPARATOR=: (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || PATH_SEPARATOR=';' } fi # IFS # We need space, tab and new line, in precisely that order. Quoting is # there to prevent editors from complaining about space-tab. # (If _AS_PATH_WALK were called with IFS unset, it would disable word # splitting by setting IFS to empty value.) IFS=" "" $as_nl" # Find who we are. Look in the path if we contain no directory separator. as_myself= case $0 in #(( *[\\/]* ) as_myself=$0 ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break done IFS=$as_save_IFS ;; esac # We did not find ourselves, most probably we were run as `sh COMMAND' # in which case we are not to be found in the path. if test "x$as_myself" = x; then as_myself=$0 fi if test ! -f "$as_myself"; then $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 exit 1 fi # Unset variables that we do not need and which cause bugs (e.g. in # pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" # suppresses any "Segmentation fault" message there. '((' could # trigger a bug in pdksh 5.2.14. for as_var in BASH_ENV ENV MAIL MAILPATH do eval test x\${$as_var+set} = xset \ && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : done PS1='$ ' PS2='> ' PS4='+ ' # NLS nuisances. LC_ALL=C export LC_ALL LANGUAGE=C export LANGUAGE # CDPATH. (unset CDPATH) >/dev/null 2>&1 && unset CDPATH # Use a proper internal environment variable to ensure we don't fall # into an infinite loop, continuously re-executing ourselves. if test x"${_as_can_reexec}" != xno && test "x$CONFIG_SHELL" != x; then _as_can_reexec=no; export _as_can_reexec; # We cannot yet assume a decent shell, so we have to provide a # neutralization value for shells without unset; and this also # works around shells that cannot unset nonexistent variables. # Preserve -v and -x to the replacement shell. BASH_ENV=/dev/null ENV=/dev/null (unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV case $- in # (((( *v*x* | *x*v* ) as_opts=-vx ;; *v* ) as_opts=-v ;; *x* ) as_opts=-x ;; * ) as_opts= ;; esac exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} # Admittedly, this is quite paranoid, since all the known shells bail # out after a failed `exec'. $as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2 as_fn_exit 255 fi # We don't want this to propagate to other subprocesses. { _as_can_reexec=; unset _as_can_reexec;} if test "x$CONFIG_SHELL" = x; then as_bourne_compatible="if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on \${1+\"\$@\"}, which # is contrary to our usage. Disable this feature. alias -g '\${1+\"\$@\"}'='\"\$@\"' setopt NO_GLOB_SUBST else case \`(set -o) 2>/dev/null\` in #( *posix*) : set -o posix ;; #( *) : ;; esac fi " as_required="as_fn_return () { (exit \$1); } as_fn_success () { as_fn_return 0; } as_fn_failure () { as_fn_return 1; } as_fn_ret_success () { return 0; } as_fn_ret_failure () { return 1; } exitcode=0 as_fn_success || { exitcode=1; echo as_fn_success failed.; } as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; } as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; } as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; } if ( set x; as_fn_ret_success y && test x = \"\$1\" ); then : else exitcode=1; echo positional parameters were not saved. fi test x\$exitcode = x0 || exit 1 test -x / || exit 1" as_suggested=" as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" && test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1 test \$(( 1 + 1 )) = 2 || exit 1" if (eval "$as_required") 2>/dev/null; then : as_have_required=yes else as_have_required=no fi if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null; then : else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR as_found=false for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. as_found=: case $as_dir in #( /*) for as_base in sh bash ksh sh5; do # Try only shells that exist, to save several forks. as_shell=$as_dir/$as_base if { test -f "$as_shell" || test -f "$as_shell.exe"; } && { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$as_shell"; } 2>/dev/null; then : CONFIG_SHELL=$as_shell as_have_required=yes if { $as_echo "$as_bourne_compatible""$as_suggested" | as_run=a "$as_shell"; } 2>/dev/null; then : break 2 fi fi done;; esac as_found=false done $as_found || { if { test -f "$SHELL" || test -f "$SHELL.exe"; } && { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$SHELL"; } 2>/dev/null; then : CONFIG_SHELL=$SHELL as_have_required=yes fi; } IFS=$as_save_IFS if test "x$CONFIG_SHELL" != x; then : export CONFIG_SHELL # We cannot yet assume a decent shell, so we have to provide a # neutralization value for shells without unset; and this also # works around shells that cannot unset nonexistent variables. # Preserve -v and -x to the replacement shell. BASH_ENV=/dev/null ENV=/dev/null (unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV case $- in # (((( *v*x* | *x*v* ) as_opts=-vx ;; *v* ) as_opts=-v ;; *x* ) as_opts=-x ;; * ) as_opts= ;; esac exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} # Admittedly, this is quite paranoid, since all the known shells bail # out after a failed `exec'. $as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2 exit 255 fi if test x$as_have_required = xno; then : $as_echo "$0: This script requires a shell more modern than all" $as_echo "$0: the shells that I found on your system." if test x${ZSH_VERSION+set} = xset ; then $as_echo "$0: In particular, zsh $ZSH_VERSION has bugs and should" $as_echo "$0: be upgraded to zsh 4.3.4 or later." else $as_echo "$0: Please tell bug-autoconf@gnu.org about your system, $0: including any error possibly output before this $0: message. Then install a modern shell, or manually run $0: the script under such a shell if you do have one." fi exit 1 fi fi fi SHELL=${CONFIG_SHELL-/bin/sh} export SHELL # Unset more variables known to interfere with behavior of common tools. CLICOLOR_FORCE= GREP_OPTIONS= unset CLICOLOR_FORCE GREP_OPTIONS ## --------------------- ## ## M4sh Shell Functions. ## ## --------------------- ## # as_fn_unset VAR # --------------- # Portably unset VAR. as_fn_unset () { { eval $1=; unset $1;} } as_unset=as_fn_unset # as_fn_set_status STATUS # ----------------------- # Set $? to STATUS, without forking. as_fn_set_status () { return $1 } # as_fn_set_status # as_fn_exit STATUS # ----------------- # Exit the shell with STATUS, even in a "trap 0" or "set -e" context. as_fn_exit () { set +e as_fn_set_status $1 exit $1 } # as_fn_exit # as_fn_mkdir_p # ------------- # Create "$as_dir" as a directory, including parents if necessary. as_fn_mkdir_p () { case $as_dir in #( -*) as_dir=./$as_dir;; esac test -d "$as_dir" || eval $as_mkdir_p || { as_dirs= while :; do case $as_dir in #( *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( *) as_qdir=$as_dir;; esac as_dirs="'$as_qdir' $as_dirs" as_dir=`$as_dirname -- "$as_dir" || $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_dir" : 'X\(//\)[^/]' \| \ X"$as_dir" : 'X\(//\)$' \| \ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$as_dir" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` test -d "$as_dir" && break done test -z "$as_dirs" || eval "mkdir $as_dirs" } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" } # as_fn_mkdir_p # as_fn_executable_p FILE # ----------------------- # Test if FILE is an executable regular file. as_fn_executable_p () { test -f "$1" && test -x "$1" } # as_fn_executable_p # as_fn_append VAR VALUE # ---------------------- # Append the text in VALUE to the end of the definition contained in VAR. Take # advantage of any shell optimizations that allow amortized linear growth over # repeated appends, instead of the typical quadratic growth present in naive # implementations. if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : eval 'as_fn_append () { eval $1+=\$2 }' else as_fn_append () { eval $1=\$$1\$2 } fi # as_fn_append # as_fn_arith ARG... # ------------------ # Perform arithmetic evaluation on the ARGs, and store the result in the # global $as_val. Take advantage of shells that can avoid forks. The arguments # must be portable across $(()) and expr. if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : eval 'as_fn_arith () { as_val=$(( $* )) }' else as_fn_arith () { as_val=`expr "$@" || test $? -eq 1` } fi # as_fn_arith # as_fn_error STATUS ERROR [LINENO LOG_FD] # ---------------------------------------- # Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are # provided, also output the error to LOG_FD, referencing LINENO. Then exit the # script with STATUS, using 1 if that was 0. as_fn_error () { as_status=$1; test $as_status -eq 0 && as_status=1 if test "$4"; then as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 fi $as_echo "$as_me: error: $2" >&2 as_fn_exit $as_status } # as_fn_error if expr a : '\(a\)' >/dev/null 2>&1 && test "X`expr 00001 : '.*\(...\)'`" = X001; then as_expr=expr else as_expr=false fi if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then as_basename=basename else as_basename=false fi if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then as_dirname=dirname else as_dirname=false fi as_me=`$as_basename -- "$0" || $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ X"$0" : 'X\(//\)$' \| \ X"$0" : 'X\(/\)' \| . 2>/dev/null || $as_echo X/"$0" | sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/ q } /^X\/\(\/\/\)$/{ s//\1/ q } /^X\/\(\/\).*/{ s//\1/ q } s/.*/./; q'` # Avoid depending upon Character Ranges. as_cr_letters='abcdefghijklmnopqrstuvwxyz' as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' as_cr_Letters=$as_cr_letters$as_cr_LETTERS as_cr_digits='0123456789' as_cr_alnum=$as_cr_Letters$as_cr_digits as_lineno_1=$LINENO as_lineno_1a=$LINENO as_lineno_2=$LINENO as_lineno_2a=$LINENO eval 'test "x$as_lineno_1'$as_run'" != "x$as_lineno_2'$as_run'" && test "x`expr $as_lineno_1'$as_run' + 1`" = "x$as_lineno_2'$as_run'"' || { # Blame Lee E. McMahon (1931-1989) for sed's syntax. :-) sed -n ' p /[$]LINENO/= ' <$as_myself | sed ' s/[$]LINENO.*/&-/ t lineno b :lineno N :loop s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ t loop s/-\n.*// ' >$as_me.lineno && chmod +x "$as_me.lineno" || { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; } # If we had to re-execute with $CONFIG_SHELL, we're ensured to have # already done that, so ensure we don't try to do so again and fall # in an infinite loop. This has already happened in practice. _as_can_reexec=no; export _as_can_reexec # Don't try to exec as it changes $[0], causing all sort of problems # (the dirname of $[0] is not the place where we might find the # original and so on. Autoconf is especially sensitive to this). . "./$as_me.lineno" # Exit status is that of the last command. exit } ECHO_C= ECHO_N= ECHO_T= case `echo -n x` in #((((( -n*) case `echo 'xy\c'` in *c*) ECHO_T=' ';; # ECHO_T is single tab character. xy) ECHO_C='\c';; *) echo `echo ksh88 bug on AIX 6.1` > /dev/null ECHO_T=' ';; esac;; *) ECHO_N='-n';; esac rm -f conf$$ conf$$.exe conf$$.file if test -d conf$$.dir; then rm -f conf$$.dir/conf$$.file else rm -f conf$$.dir mkdir conf$$.dir 2>/dev/null fi if (echo >conf$$.file) 2>/dev/null; then if ln -s conf$$.file conf$$ 2>/dev/null; then as_ln_s='ln -s' # ... but there are two gotchas: # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. # In both cases, we have to default to `cp -pR'. ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || as_ln_s='cp -pR' elif ln conf$$.file conf$$ 2>/dev/null; then as_ln_s=ln else as_ln_s='cp -pR' fi else as_ln_s='cp -pR' fi rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file rmdir conf$$.dir 2>/dev/null if mkdir -p . 2>/dev/null; then as_mkdir_p='mkdir -p "$as_dir"' else test -d ./-p && rmdir ./-p as_mkdir_p=false fi as_test_x='test -x' as_executable_p=as_fn_executable_p # Sed expression to map a string onto a valid CPP name. as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" # Sed expression to map a string onto a valid variable name. as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" test -n "$DJDIR" || exec 7<&0 &1 # Name of the host. # hostname on some systems (SVR3.2, old GNU/Linux) returns a bogus exit status, # so uname gets run too. ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q` # # Initializations. # ac_default_prefix=/usr/local ac_clean_files= ac_config_libobj_dir=. LIBOBJS= cross_compiling=no subdirs= MFLAGS= MAKEFLAGS= # Identity of this package. PACKAGE_NAME='pr3287' PACKAGE_TARNAME='pr3287' PACKAGE_VERSION='4.0' PACKAGE_STRING='pr3287 4.0' PACKAGE_BUGREPORT='' PACKAGE_URL='' # Factoring default headers for most tests. ac_includes_default="\ #include #ifdef HAVE_SYS_TYPES_H # include #endif #ifdef HAVE_SYS_STAT_H # include #endif #ifdef STDC_HEADERS # include # include #else # ifdef HAVE_STDLIB_H # include # endif #endif #ifdef HAVE_STRING_H # if !defined STDC_HEADERS && defined HAVE_MEMORY_H # include # endif # include #endif #ifdef HAVE_STRINGS_H # include #endif #ifdef HAVE_INTTYPES_H # include #endif #ifdef HAVE_STDINT_H # include #endif #ifdef HAVE_UNISTD_H # include #endif" ac_subst_vars='LTLIBOBJS LIBOBJS LIBX3270DIR EGREP GREP CPP CCOPTIONS host_os host_vendor host_cpu host build_os build_vendor build_cpu build OBJEXT EXEEXT ac_ct_CC CPPFLAGS LDFLAGS CFLAGS CC INSTALL_DATA INSTALL_SCRIPT INSTALL_PROGRAM target_alias host_alias build_alias LIBS ECHO_T ECHO_N ECHO_C DEFS mandir localedir libdir psdir pdfdir dvidir htmldir infodir docdir oldincludedir includedir runstatedir localstatedir sharedstatedir sysconfdir datadir datarootdir libexecdir sbindir bindir program_transform_name prefix exec_prefix PACKAGE_URL PACKAGE_BUGREPORT PACKAGE_STRING PACKAGE_VERSION PACKAGE_TARNAME PACKAGE_NAME PATH_SEPARATOR SHELL' ac_subst_files='' ac_user_opts=' enable_option_checking with_ssl enable_dbcs enable_ipv6 ' ac_precious_vars='build_alias host_alias target_alias CC CFLAGS LDFLAGS LIBS CPPFLAGS CPP' # Initialize some variables set by options. ac_init_help= ac_init_version=false ac_unrecognized_opts= ac_unrecognized_sep= # The variables have the same names as the options, with # dashes changed to underlines. cache_file=/dev/null exec_prefix=NONE no_create= no_recursion= prefix=NONE program_prefix=NONE program_suffix=NONE program_transform_name=s,x,x, silent= site= srcdir= verbose= x_includes=NONE x_libraries=NONE # Installation directory options. # These are left unexpanded so users can "make install exec_prefix=/foo" # and all the variables that are supposed to be based on exec_prefix # by default will actually change. # Use braces instead of parens because sh, perl, etc. also accept them. # (The list follows the same order as the GNU Coding Standards.) bindir='${exec_prefix}/bin' sbindir='${exec_prefix}/sbin' libexecdir='${exec_prefix}/libexec' datarootdir='${prefix}/share' datadir='${datarootdir}' sysconfdir='${prefix}/etc' sharedstatedir='${prefix}/com' localstatedir='${prefix}/var' runstatedir='${localstatedir}/run' includedir='${prefix}/include' oldincludedir='/usr/include' docdir='${datarootdir}/doc/${PACKAGE_TARNAME}' infodir='${datarootdir}/info' htmldir='${docdir}' dvidir='${docdir}' pdfdir='${docdir}' psdir='${docdir}' libdir='${exec_prefix}/lib' localedir='${datarootdir}/locale' mandir='${datarootdir}/man' ac_prev= ac_dashdash= for ac_option do # If the previous option needs an argument, assign it. if test -n "$ac_prev"; then eval $ac_prev=\$ac_option ac_prev= continue fi case $ac_option in *=?*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;; *=) ac_optarg= ;; *) ac_optarg=yes ;; esac # Accept the important Cygnus configure options, so we can diagnose typos. case $ac_dashdash$ac_option in --) ac_dashdash=yes ;; -bindir | --bindir | --bindi | --bind | --bin | --bi) ac_prev=bindir ;; -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*) bindir=$ac_optarg ;; -build | --build | --buil | --bui | --bu) ac_prev=build_alias ;; -build=* | --build=* | --buil=* | --bui=* | --bu=*) build_alias=$ac_optarg ;; -cache-file | --cache-file | --cache-fil | --cache-fi \ | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) ac_prev=cache_file ;; -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) cache_file=$ac_optarg ;; --config-cache | -C) cache_file=config.cache ;; -datadir | --datadir | --datadi | --datad) ac_prev=datadir ;; -datadir=* | --datadir=* | --datadi=* | --datad=*) datadir=$ac_optarg ;; -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \ | --dataroo | --dataro | --datar) ac_prev=datarootdir ;; -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \ | --dataroot=* | --dataroo=* | --dataro=* | --datar=*) datarootdir=$ac_optarg ;; -disable-* | --disable-*) ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid feature name: $ac_useropt" ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "enable_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--disable-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval enable_$ac_useropt=no ;; -docdir | --docdir | --docdi | --doc | --do) ac_prev=docdir ;; -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*) docdir=$ac_optarg ;; -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv) ac_prev=dvidir ;; -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*) dvidir=$ac_optarg ;; -enable-* | --enable-*) ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid feature name: $ac_useropt" ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "enable_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--enable-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval enable_$ac_useropt=\$ac_optarg ;; -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ | --exec | --exe | --ex) ac_prev=exec_prefix ;; -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \ | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \ | --exec=* | --exe=* | --ex=*) exec_prefix=$ac_optarg ;; -gas | --gas | --ga | --g) # Obsolete; use --with-gas. with_gas=yes ;; -help | --help | --hel | --he | -h) ac_init_help=long ;; -help=r* | --help=r* | --hel=r* | --he=r* | -hr*) ac_init_help=recursive ;; -help=s* | --help=s* | --hel=s* | --he=s* | -hs*) ac_init_help=short ;; -host | --host | --hos | --ho) ac_prev=host_alias ;; -host=* | --host=* | --hos=* | --ho=*) host_alias=$ac_optarg ;; -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht) ac_prev=htmldir ;; -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \ | --ht=*) htmldir=$ac_optarg ;; -includedir | --includedir | --includedi | --included | --include \ | --includ | --inclu | --incl | --inc) ac_prev=includedir ;; -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \ | --includ=* | --inclu=* | --incl=* | --inc=*) includedir=$ac_optarg ;; -infodir | --infodir | --infodi | --infod | --info | --inf) ac_prev=infodir ;; -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*) infodir=$ac_optarg ;; -libdir | --libdir | --libdi | --libd) ac_prev=libdir ;; -libdir=* | --libdir=* | --libdi=* | --libd=*) libdir=$ac_optarg ;; -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \ | --libexe | --libex | --libe) ac_prev=libexecdir ;; -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \ | --libexe=* | --libex=* | --libe=*) libexecdir=$ac_optarg ;; -localedir | --localedir | --localedi | --localed | --locale) ac_prev=localedir ;; -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*) localedir=$ac_optarg ;; -localstatedir | --localstatedir | --localstatedi | --localstated \ | --localstate | --localstat | --localsta | --localst | --locals) ac_prev=localstatedir ;; -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*) localstatedir=$ac_optarg ;; -mandir | --mandir | --mandi | --mand | --man | --ma | --m) ac_prev=mandir ;; -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*) mandir=$ac_optarg ;; -nfp | --nfp | --nf) # Obsolete; use --without-fp. with_fp=no ;; -no-create | --no-create | --no-creat | --no-crea | --no-cre \ | --no-cr | --no-c | -n) no_create=yes ;; -no-recursion | --no-recursion | --no-recursio | --no-recursi \ | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) no_recursion=yes ;; -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \ | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \ | --oldin | --oldi | --old | --ol | --o) ac_prev=oldincludedir ;; -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \ | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \ | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*) oldincludedir=$ac_optarg ;; -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) ac_prev=prefix ;; -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) prefix=$ac_optarg ;; -program-prefix | --program-prefix | --program-prefi | --program-pref \ | --program-pre | --program-pr | --program-p) ac_prev=program_prefix ;; -program-prefix=* | --program-prefix=* | --program-prefi=* \ | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*) program_prefix=$ac_optarg ;; -program-suffix | --program-suffix | --program-suffi | --program-suff \ | --program-suf | --program-su | --program-s) ac_prev=program_suffix ;; -program-suffix=* | --program-suffix=* | --program-suffi=* \ | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*) program_suffix=$ac_optarg ;; -program-transform-name | --program-transform-name \ | --program-transform-nam | --program-transform-na \ | --program-transform-n | --program-transform- \ | --program-transform | --program-transfor \ | --program-transfo | --program-transf \ | --program-trans | --program-tran \ | --progr-tra | --program-tr | --program-t) ac_prev=program_transform_name ;; -program-transform-name=* | --program-transform-name=* \ | --program-transform-nam=* | --program-transform-na=* \ | --program-transform-n=* | --program-transform-=* \ | --program-transform=* | --program-transfor=* \ | --program-transfo=* | --program-transf=* \ | --program-trans=* | --program-tran=* \ | --progr-tra=* | --program-tr=* | --program-t=*) program_transform_name=$ac_optarg ;; -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd) ac_prev=pdfdir ;; -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*) pdfdir=$ac_optarg ;; -psdir | --psdir | --psdi | --psd | --ps) ac_prev=psdir ;; -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*) psdir=$ac_optarg ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil) silent=yes ;; -runstatedir | --runstatedir | --runstatedi | --runstated \ | --runstate | --runstat | --runsta | --runst | --runs \ | --run | --ru | --r) ac_prev=runstatedir ;; -runstatedir=* | --runstatedir=* | --runstatedi=* | --runstated=* \ | --runstate=* | --runstat=* | --runsta=* | --runst=* | --runs=* \ | --run=* | --ru=* | --r=*) runstatedir=$ac_optarg ;; -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) ac_prev=sbindir ;; -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ | --sbi=* | --sb=*) sbindir=$ac_optarg ;; -sharedstatedir | --sharedstatedir | --sharedstatedi \ | --sharedstated | --sharedstate | --sharedstat | --sharedsta \ | --sharedst | --shareds | --shared | --share | --shar \ | --sha | --sh) ac_prev=sharedstatedir ;; -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \ | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \ | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \ | --sha=* | --sh=*) sharedstatedir=$ac_optarg ;; -site | --site | --sit) ac_prev=site ;; -site=* | --site=* | --sit=*) site=$ac_optarg ;; -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) ac_prev=srcdir ;; -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) srcdir=$ac_optarg ;; -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \ | --syscon | --sysco | --sysc | --sys | --sy) ac_prev=sysconfdir ;; -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \ | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*) sysconfdir=$ac_optarg ;; -target | --target | --targe | --targ | --tar | --ta | --t) ac_prev=target_alias ;; -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) target_alias=$ac_optarg ;; -v | -verbose | --verbose | --verbos | --verbo | --verb) verbose=yes ;; -version | --version | --versio | --versi | --vers | -V) ac_init_version=: ;; -with-* | --with-*) ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid package name: $ac_useropt" ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "with_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--with-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval with_$ac_useropt=\$ac_optarg ;; -without-* | --without-*) ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid package name: $ac_useropt" ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "with_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--without-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval with_$ac_useropt=no ;; --x) # Obsolete; use --with-x. with_x=yes ;; -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \ | --x-incl | --x-inc | --x-in | --x-i) ac_prev=x_includes ;; -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \ | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*) x_includes=$ac_optarg ;; -x-libraries | --x-libraries | --x-librarie | --x-librari \ | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l) ac_prev=x_libraries ;; -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \ | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) x_libraries=$ac_optarg ;; -*) as_fn_error $? "unrecognized option: \`$ac_option' Try \`$0 --help' for more information" ;; *=*) ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='` # Reject names that are not valid shell variable names. case $ac_envvar in #( '' | [0-9]* | *[!_$as_cr_alnum]* ) as_fn_error $? "invalid variable name: \`$ac_envvar'" ;; esac eval $ac_envvar=\$ac_optarg export $ac_envvar ;; *) # FIXME: should be removed in autoconf 3.0. $as_echo "$as_me: WARNING: you should use --build, --host, --target" >&2 expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && $as_echo "$as_me: WARNING: invalid host type: $ac_option" >&2 : "${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}" ;; esac done if test -n "$ac_prev"; then ac_option=--`echo $ac_prev | sed 's/_/-/g'` as_fn_error $? "missing argument to $ac_option" fi if test -n "$ac_unrecognized_opts"; then case $enable_option_checking in no) ;; fatal) as_fn_error $? "unrecognized options: $ac_unrecognized_opts" ;; *) $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;; esac fi # Check all directory arguments for consistency. for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \ datadir sysconfdir sharedstatedir localstatedir includedir \ oldincludedir docdir infodir htmldir dvidir pdfdir psdir \ libdir localedir mandir runstatedir do eval ac_val=\$$ac_var # Remove trailing slashes. case $ac_val in */ ) ac_val=`expr "X$ac_val" : 'X\(.*[^/]\)' \| "X$ac_val" : 'X\(.*\)'` eval $ac_var=\$ac_val;; esac # Be sure to have absolute directory names. case $ac_val in [\\/$]* | ?:[\\/]* ) continue;; NONE | '' ) case $ac_var in *prefix ) continue;; esac;; esac as_fn_error $? "expected an absolute directory name for --$ac_var: $ac_val" done # There might be people who depend on the old broken behavior: `$host' # used to hold the argument of --host etc. # FIXME: To remove some day. build=$build_alias host=$host_alias target=$target_alias # FIXME: To remove some day. if test "x$host_alias" != x; then if test "x$build_alias" = x; then cross_compiling=maybe elif test "x$build_alias" != "x$host_alias"; then cross_compiling=yes fi fi ac_tool_prefix= test -n "$host_alias" && ac_tool_prefix=$host_alias- test "$silent" = yes && exec 6>/dev/null ac_pwd=`pwd` && test -n "$ac_pwd" && ac_ls_di=`ls -di .` && ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` || as_fn_error $? "working directory cannot be determined" test "X$ac_ls_di" = "X$ac_pwd_ls_di" || as_fn_error $? "pwd does not report name of working directory" # Find the source files, if location was not specified. if test -z "$srcdir"; then ac_srcdir_defaulted=yes # Try the directory containing this script, then the parent directory. ac_confdir=`$as_dirname -- "$as_myself" || $as_expr X"$as_myself" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_myself" : 'X\(//\)[^/]' \| \ X"$as_myself" : 'X\(//\)$' \| \ X"$as_myself" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$as_myself" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` srcdir=$ac_confdir if test ! -r "$srcdir/$ac_unique_file"; then srcdir=.. fi else ac_srcdir_defaulted=no fi if test ! -r "$srcdir/$ac_unique_file"; then test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .." as_fn_error $? "cannot find sources ($ac_unique_file) in $srcdir" fi ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work" ac_abs_confdir=`( cd "$srcdir" && test -r "./$ac_unique_file" || as_fn_error $? "$ac_msg" pwd)` # When building in place, set srcdir=. if test "$ac_abs_confdir" = "$ac_pwd"; then srcdir=. fi # Remove unnecessary trailing slashes from srcdir. # Double slashes in file names in object file debugging info # mess up M-x gdb in Emacs. case $srcdir in */) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;; esac for ac_var in $ac_precious_vars; do eval ac_env_${ac_var}_set=\${${ac_var}+set} eval ac_env_${ac_var}_value=\$${ac_var} eval ac_cv_env_${ac_var}_set=\${${ac_var}+set} eval ac_cv_env_${ac_var}_value=\$${ac_var} done # # Report the --help message. # if test "$ac_init_help" = "long"; then # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF \`configure' configures pr3287 4.0 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... To assign environment variables (e.g., CC, CFLAGS...), specify them as VAR=VALUE. See below for descriptions of some of the useful variables. Defaults for the options are specified in brackets. Configuration: -h, --help display this help and exit --help=short display options specific to this package --help=recursive display the short help of all the included packages -V, --version display version information and exit -q, --quiet, --silent do not print \`checking ...' messages --cache-file=FILE cache test results in FILE [disabled] -C, --config-cache alias for \`--cache-file=config.cache' -n, --no-create do not create output files --srcdir=DIR find the sources in DIR [configure dir or \`..'] Installation directories: --prefix=PREFIX install architecture-independent files in PREFIX [$ac_default_prefix] --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX [PREFIX] By default, \`make install' will install all the files in \`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify an installation prefix other than \`$ac_default_prefix' using \`--prefix', for instance \`--prefix=\$HOME'. For better control, use the options below. Fine tuning of the installation directories: --bindir=DIR user executables [EPREFIX/bin] --sbindir=DIR system admin executables [EPREFIX/sbin] --libexecdir=DIR program executables [EPREFIX/libexec] --sysconfdir=DIR read-only single-machine data [PREFIX/etc] --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] --localstatedir=DIR modifiable single-machine data [PREFIX/var] --runstatedir=DIR modifiable per-process data [LOCALSTATEDIR/run] --libdir=DIR object code libraries [EPREFIX/lib] --includedir=DIR C header files [PREFIX/include] --oldincludedir=DIR C header files for non-gcc [/usr/include] --datarootdir=DIR read-only arch.-independent data root [PREFIX/share] --datadir=DIR read-only architecture-independent data [DATAROOTDIR] --infodir=DIR info documentation [DATAROOTDIR/info] --localedir=DIR locale-dependent data [DATAROOTDIR/locale] --mandir=DIR man documentation [DATAROOTDIR/man] --docdir=DIR documentation root [DATAROOTDIR/doc/pr3287] --htmldir=DIR html documentation [DOCDIR] --dvidir=DIR dvi documentation [DOCDIR] --pdfdir=DIR pdf documentation [DOCDIR] --psdir=DIR ps documentation [DOCDIR] _ACEOF cat <<\_ACEOF System types: --build=BUILD configure for building on BUILD [guessed] --host=HOST cross-compile to build programs to run on HOST [BUILD] _ACEOF fi if test -n "$ac_init_help"; then case $ac_init_help in short | recursive ) echo "Configuration of pr3287 4.0:";; esac cat <<\_ACEOF Optional Features: --disable-option-checking ignore unrecognized --enable/--with options --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) --enable-FEATURE[=ARG] include FEATURE [ARG=yes] --disable-dbcs leave out DBCS support --disable-ipv6 leave out IPv6 support Optional Packages: --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) --with-ssl=DIR specify OpenSSL install directory Some influential environment variables: CC C compiler command CFLAGS C compiler flags LDFLAGS linker flags, e.g. -L if you have libraries in a nonstandard directory LIBS libraries to pass to the linker, e.g. -l CPPFLAGS (Objective) C/C++ preprocessor flags, e.g. -I if you have headers in a nonstandard directory CPP C preprocessor Use these variables to override the choices made by `configure' or to help it to find libraries and programs with nonstandard names/locations. Report bugs to the package provider. _ACEOF ac_status=$? fi if test "$ac_init_help" = "recursive"; then # If there are subdirs, report their specific --help. for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue test -d "$ac_dir" || { cd "$srcdir" && ac_pwd=`pwd` && srcdir=. && test -d "$ac_dir"; } || continue ac_builddir=. case "$ac_dir" in .) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` # A ".." for each directory in $ac_dir_suffix. ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` case $ac_top_builddir_sub in "") ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; esac ;; esac ac_abs_top_builddir=$ac_pwd ac_abs_builddir=$ac_pwd$ac_dir_suffix # for backward compatibility: ac_top_builddir=$ac_top_build_prefix case $srcdir in .) # We are building in place. ac_srcdir=. ac_top_srcdir=$ac_top_builddir_sub ac_abs_top_srcdir=$ac_pwd ;; [\\/]* | ?:[\\/]* ) # Absolute name. ac_srcdir=$srcdir$ac_dir_suffix; ac_top_srcdir=$srcdir ac_abs_top_srcdir=$srcdir ;; *) # Relative name. ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix ac_top_srcdir=$ac_top_build_prefix$srcdir ac_abs_top_srcdir=$ac_pwd/$srcdir ;; esac ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix cd "$ac_dir" || { ac_status=$?; continue; } # Check for guested configure. if test -f "$ac_srcdir/configure.gnu"; then echo && $SHELL "$ac_srcdir/configure.gnu" --help=recursive elif test -f "$ac_srcdir/configure"; then echo && $SHELL "$ac_srcdir/configure" --help=recursive else $as_echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2 fi || ac_status=$? cd "$ac_pwd" || { ac_status=$?; break; } done fi test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF pr3287 configure 4.0 generated by GNU Autoconf 2.69 Copyright (C) 2012 Free Software Foundation, Inc. This configure script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it. _ACEOF exit fi ## ------------------------ ## ## Autoconf initialization. ## ## ------------------------ ## # ac_fn_c_try_compile LINENO # -------------------------- # Try to compile conftest.$ac_ext, and return whether this succeeded. ac_fn_c_try_compile () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack rm -f conftest.$ac_objext if { { ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_compile") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then : ac_retval=0 else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_c_try_compile # ac_fn_c_try_link LINENO # ----------------------- # Try to link conftest.$ac_ext, and return whether this succeeded. ac_fn_c_try_link () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack rm -f conftest.$ac_objext conftest$ac_exeext if { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || test -x conftest$ac_exeext }; then : ac_retval=0 else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would # interfere with the next link command; also delete a directory that is # left behind by Apple's compiler. We do this before executing the actions. rm -rf conftest.dSYM conftest_ipa8_conftest.oo eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_c_try_link # ac_fn_c_try_cpp LINENO # ---------------------- # Try to preprocess conftest.$ac_ext, and return whether this succeeded. ac_fn_c_try_cpp () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack if { { ac_try="$ac_cpp conftest.$ac_ext" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } > conftest.i && { test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || test ! -s conftest.err }; then : ac_retval=0 else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_c_try_cpp # ac_fn_c_check_header_mongrel LINENO HEADER VAR INCLUDES # ------------------------------------------------------- # Tests whether HEADER exists, giving a warning if it cannot be compiled using # the include files in INCLUDES and setting the cache variable VAR # accordingly. ac_fn_c_check_header_mongrel () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack if eval \${$3+:} false; then : { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 $as_echo_n "checking for $2... " >&6; } if eval \${$3+:} false; then : $as_echo_n "(cached) " >&6 fi eval ac_res=\$$3 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } else # Is the header compilable? { $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 usability" >&5 $as_echo_n "checking $2 usability... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 #include <$2> _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_header_compiler=yes else ac_header_compiler=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_compiler" >&5 $as_echo "$ac_header_compiler" >&6; } # Is the header present? { $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 presence" >&5 $as_echo_n "checking $2 presence... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include <$2> _ACEOF if ac_fn_c_try_cpp "$LINENO"; then : ac_header_preproc=yes else ac_header_preproc=no fi rm -f conftest.err conftest.i conftest.$ac_ext { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_preproc" >&5 $as_echo "$ac_header_preproc" >&6; } # So? What about this header? case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in #(( yes:no: ) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&5 $as_echo "$as_me: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5 $as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;} ;; no:yes:* ) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: present but cannot be compiled" >&5 $as_echo "$as_me: WARNING: $2: present but cannot be compiled" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: check for missing prerequisite headers?" >&5 $as_echo "$as_me: WARNING: $2: check for missing prerequisite headers?" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: see the Autoconf documentation" >&5 $as_echo "$as_me: WARNING: $2: see the Autoconf documentation" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&5 $as_echo "$as_me: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5 $as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;} ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 $as_echo_n "checking for $2... " >&6; } if eval \${$3+:} false; then : $as_echo_n "(cached) " >&6 else eval "$3=\$ac_header_compiler" fi eval ac_res=\$$3 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } fi eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } # ac_fn_c_check_header_mongrel # ac_fn_c_try_run LINENO # ---------------------- # Try to link conftest.$ac_ext, and return whether this succeeded. Assumes # that executables *can* be run. ac_fn_c_try_run () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack if { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { ac_try='./conftest$ac_exeext' { { case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_try") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; }; then : ac_retval=0 else $as_echo "$as_me: program exited with status $ac_status" >&5 $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=$ac_status fi rm -rf conftest.dSYM conftest_ipa8_conftest.oo eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_c_try_run # ac_fn_c_check_header_compile LINENO HEADER VAR INCLUDES # ------------------------------------------------------- # Tests whether HEADER exists and can be compiled using the include files in # INCLUDES, setting the cache variable VAR accordingly. ac_fn_c_check_header_compile () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 $as_echo_n "checking for $2... " >&6; } if eval \${$3+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 #include <$2> _ACEOF if ac_fn_c_try_compile "$LINENO"; then : eval "$3=yes" else eval "$3=no" fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi eval ac_res=\$$3 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } # ac_fn_c_check_header_compile # ac_fn_c_check_func LINENO FUNC VAR # ---------------------------------- # Tests whether FUNC exists, setting the cache variable VAR accordingly ac_fn_c_check_func () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 $as_echo_n "checking for $2... " >&6; } if eval \${$3+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Define $2 to an innocuous variant, in case declares $2. For example, HP-UX 11i declares gettimeofday. */ #define $2 innocuous_$2 /* System header to define __stub macros and hopefully few prototypes, which can conflict with char $2 (); below. Prefer to if __STDC__ is defined, since exists even on freestanding compilers. */ #ifdef __STDC__ # include #else # include #endif #undef $2 /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char $2 (); /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined __stub_$2 || defined __stub___$2 choke me #endif int main () { return $2 (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : eval "$3=yes" else eval "$3=no" fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi eval ac_res=\$$3 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } # ac_fn_c_check_func cat >config.log <<_ACEOF This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. It was created by pr3287 $as_me 4.0, which was generated by GNU Autoconf 2.69. Invocation command line was $ $0 $@ _ACEOF exec 5>>config.log { cat <<_ASUNAME ## --------- ## ## Platform. ## ## --------- ## hostname = `(hostname || uname -n) 2>/dev/null | sed 1q` uname -m = `(uname -m) 2>/dev/null || echo unknown` uname -r = `(uname -r) 2>/dev/null || echo unknown` uname -s = `(uname -s) 2>/dev/null || echo unknown` uname -v = `(uname -v) 2>/dev/null || echo unknown` /usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown` /bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown` /bin/arch = `(/bin/arch) 2>/dev/null || echo unknown` /usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown` /usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown` /usr/bin/hostinfo = `(/usr/bin/hostinfo) 2>/dev/null || echo unknown` /bin/machine = `(/bin/machine) 2>/dev/null || echo unknown` /usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown` /bin/universe = `(/bin/universe) 2>/dev/null || echo unknown` _ASUNAME as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. $as_echo "PATH: $as_dir" done IFS=$as_save_IFS } >&5 cat >&5 <<_ACEOF ## ----------- ## ## Core tests. ## ## ----------- ## _ACEOF # Keep a trace of the command line. # Strip out --no-create and --no-recursion so they do not pile up. # Strip out --silent because we don't want to record it for future runs. # Also quote any args containing shell meta-characters. # Make two passes to allow for proper duplicate-argument suppression. ac_configure_args= ac_configure_args0= ac_configure_args1= ac_must_keep_next=false for ac_pass in 1 2 do for ac_arg do case $ac_arg in -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil) continue ;; *\'*) ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; esac case $ac_pass in 1) as_fn_append ac_configure_args0 " '$ac_arg'" ;; 2) as_fn_append ac_configure_args1 " '$ac_arg'" if test $ac_must_keep_next = true; then ac_must_keep_next=false # Got value, back to normal. else case $ac_arg in *=* | --config-cache | -C | -disable-* | --disable-* \ | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \ | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \ | -with-* | --with-* | -without-* | --without-* | --x) case "$ac_configure_args0 " in "$ac_configure_args1"*" '$ac_arg' "* ) continue ;; esac ;; -* ) ac_must_keep_next=true ;; esac fi as_fn_append ac_configure_args " '$ac_arg'" ;; esac done done { ac_configure_args0=; unset ac_configure_args0;} { ac_configure_args1=; unset ac_configure_args1;} # When interrupted or exit'd, cleanup temporary files, and complete # config.log. We remove comments because anyway the quotes in there # would cause problems or look ugly. # WARNING: Use '\'' to represent an apostrophe within the trap. # WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug. trap 'exit_status=$? # Save into config.log some information that might help in debugging. { echo $as_echo "## ---------------- ## ## Cache variables. ## ## ---------------- ##" echo # The following way of writing the cache mishandles newlines in values, ( for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do eval ac_val=\$$ac_var case $ac_val in #( *${as_nl}*) case $ac_var in #( *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 $as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; esac case $ac_var in #( _ | IFS | as_nl) ;; #( BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( *) { eval $ac_var=; unset $ac_var;} ;; esac ;; esac done (set) 2>&1 | case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #( *${as_nl}ac_space=\ *) sed -n \ "s/'\''/'\''\\\\'\'''\''/g; s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p" ;; #( *) sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" ;; esac | sort ) echo $as_echo "## ----------------- ## ## Output variables. ## ## ----------------- ##" echo for ac_var in $ac_subst_vars do eval ac_val=\$$ac_var case $ac_val in *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; esac $as_echo "$ac_var='\''$ac_val'\''" done | sort echo if test -n "$ac_subst_files"; then $as_echo "## ------------------- ## ## File substitutions. ## ## ------------------- ##" echo for ac_var in $ac_subst_files do eval ac_val=\$$ac_var case $ac_val in *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; esac $as_echo "$ac_var='\''$ac_val'\''" done | sort echo fi if test -s confdefs.h; then $as_echo "## ----------- ## ## confdefs.h. ## ## ----------- ##" echo cat confdefs.h echo fi test "$ac_signal" != 0 && $as_echo "$as_me: caught signal $ac_signal" $as_echo "$as_me: exit $exit_status" } >&5 rm -f core *.core core.conftest.* && rm -f -r conftest* confdefs* conf$$* $ac_clean_files && exit $exit_status ' 0 for ac_signal in 1 2 13 15; do trap 'ac_signal='$ac_signal'; as_fn_exit 1' $ac_signal done ac_signal=0 # confdefs.h avoids OS command line length limits that DEFS can exceed. rm -f -r conftest* confdefs.h $as_echo "/* confdefs.h */" > confdefs.h # Predefined preprocessor variables. cat >>confdefs.h <<_ACEOF #define PACKAGE_NAME "$PACKAGE_NAME" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_TARNAME "$PACKAGE_TARNAME" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_VERSION "$PACKAGE_VERSION" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_STRING "$PACKAGE_STRING" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_URL "$PACKAGE_URL" _ACEOF # Let the site file select an alternate cache file if it wants to. # Prefer an explicitly selected file to automatically selected ones. ac_site_file1=NONE ac_site_file2=NONE if test -n "$CONFIG_SITE"; then # We do not want a PATH search for config.site. case $CONFIG_SITE in #(( -*) ac_site_file1=./$CONFIG_SITE;; */*) ac_site_file1=$CONFIG_SITE;; *) ac_site_file1=./$CONFIG_SITE;; esac elif test "x$prefix" != xNONE; then ac_site_file1=$prefix/share/config.site ac_site_file2=$prefix/etc/config.site else ac_site_file1=$ac_default_prefix/share/config.site ac_site_file2=$ac_default_prefix/etc/config.site fi for ac_site_file in "$ac_site_file1" "$ac_site_file2" do test "x$ac_site_file" = xNONE && continue if test /dev/null != "$ac_site_file" && test -r "$ac_site_file"; then { $as_echo "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5 $as_echo "$as_me: loading site script $ac_site_file" >&6;} sed 's/^/| /' "$ac_site_file" >&5 . "$ac_site_file" \ || { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "failed to load site script $ac_site_file See \`config.log' for more details" "$LINENO" 5; } fi done if test -r "$cache_file"; then # Some versions of bash will fail to source /dev/null (special files # actually), so we avoid doing that. DJGPP emulates it as a regular file. if test /dev/null != "$cache_file" && test -f "$cache_file"; then { $as_echo "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5 $as_echo "$as_me: loading cache $cache_file" >&6;} case $cache_file in [\\/]* | ?:[\\/]* ) . "$cache_file";; *) . "./$cache_file";; esac fi else { $as_echo "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5 $as_echo "$as_me: creating cache $cache_file" >&6;} >$cache_file fi # Check that the precious variables saved in the cache have kept the same # value. ac_cache_corrupted=false for ac_var in $ac_precious_vars; do eval ac_old_set=\$ac_cv_env_${ac_var}_set eval ac_new_set=\$ac_env_${ac_var}_set eval ac_old_val=\$ac_cv_env_${ac_var}_value eval ac_new_val=\$ac_env_${ac_var}_value case $ac_old_set,$ac_new_set in set,) { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 $as_echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} ac_cache_corrupted=: ;; ,set) { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was not set in the previous run" >&5 $as_echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} ac_cache_corrupted=: ;; ,);; *) if test "x$ac_old_val" != "x$ac_new_val"; then # differences in whitespace do not lead to failure. ac_old_val_w=`echo x $ac_old_val` ac_new_val_w=`echo x $ac_new_val` if test "$ac_old_val_w" != "$ac_new_val_w"; then { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' has changed since the previous run:" >&5 $as_echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} ac_cache_corrupted=: else { $as_echo "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5 $as_echo "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;} eval $ac_var=\$ac_old_val fi { $as_echo "$as_me:${as_lineno-$LINENO}: former value: \`$ac_old_val'" >&5 $as_echo "$as_me: former value: \`$ac_old_val'" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: current value: \`$ac_new_val'" >&5 $as_echo "$as_me: current value: \`$ac_new_val'" >&2;} fi;; esac # Pass precious variables to config.status. if test "$ac_new_set" = set; then case $ac_new_val in *\'*) ac_arg=$ac_var=`$as_echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; *) ac_arg=$ac_var=$ac_new_val ;; esac case " $ac_configure_args " in *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy. *) as_fn_append ac_configure_args " '$ac_arg'" ;; esac fi done if $ac_cache_corrupted; then { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5 $as_echo "$as_me: error: changes in the environment can compromise the build" >&2;} as_fn_error $? "run \`make distclean' and/or \`rm $cache_file' and start over" "$LINENO" 5 fi ## -------------------- ## ## Main body of script. ## ## -------------------- ## ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu ac_aux_dir= for ac_dir in "$srcdir" "$srcdir/.." "$srcdir/../.."; do if test -f "$ac_dir/install-sh"; then ac_aux_dir=$ac_dir ac_install_sh="$ac_aux_dir/install-sh -c" break elif test -f "$ac_dir/install.sh"; then ac_aux_dir=$ac_dir ac_install_sh="$ac_aux_dir/install.sh -c" break elif test -f "$ac_dir/shtool"; then ac_aux_dir=$ac_dir ac_install_sh="$ac_aux_dir/shtool install -c" break fi done if test -z "$ac_aux_dir"; then as_fn_error $? "cannot find install-sh, install.sh, or shtool in \"$srcdir\" \"$srcdir/..\" \"$srcdir/../..\"" "$LINENO" 5 fi # These three variables are undocumented and unsupported, # and are intended to be withdrawn in a future Autoconf release. # They can cause serious problems if a builder's source tree is in a directory # whose full name contains unusual characters. ac_config_guess="$SHELL $ac_aux_dir/config.guess" # Please don't use this var. ac_config_sub="$SHELL $ac_aux_dir/config.sub" # Please don't use this var. ac_configure="$SHELL $ac_aux_dir/configure" # Please don't use this var. # Find a good install program. We prefer a C program (faster), # so one script is as good as another. But avoid the broken or # incompatible versions: # SysV /etc/install, /usr/sbin/install # SunOS /usr/etc/install # IRIX /sbin/install # AIX /bin/install # AmigaOS /C/install, which installs bootblocks on floppy discs # AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag # AFS /usr/afsws/bin/install, which mishandles nonexistent args # SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" # OS/2's system install, which has a completely different semantic # ./install, which can be erroneously created by make from ./install.sh. # Reject install programs that cannot install multiple files. { $as_echo "$as_me:${as_lineno-$LINENO}: checking for a BSD-compatible install" >&5 $as_echo_n "checking for a BSD-compatible install... " >&6; } if test -z "$INSTALL"; then if ${ac_cv_path_install+:} false; then : $as_echo_n "(cached) " >&6 else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. # Account for people who put trailing slashes in PATH elements. case $as_dir/ in #(( ./ | .// | /[cC]/* | \ /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \ ?:[\\/]os2[\\/]install[\\/]* | ?:[\\/]OS2[\\/]INSTALL[\\/]* | \ /usr/ucb/* ) ;; *) # OSF1 and SCO ODT 3.0 have their own names for install. # Don't use installbsd from OSF since it installs stuff as root # by default. for ac_prog in ginstall scoinst install; do for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then if test $ac_prog = install && grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then # AIX install. It has an incompatible calling convention. : elif test $ac_prog = install && grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then # program-specific install script used by HP pwplus--don't use. : else rm -rf conftest.one conftest.two conftest.dir echo one > conftest.one echo two > conftest.two mkdir conftest.dir if "$as_dir/$ac_prog$ac_exec_ext" -c conftest.one conftest.two "`pwd`/conftest.dir" && test -s conftest.one && test -s conftest.two && test -s conftest.dir/conftest.one && test -s conftest.dir/conftest.two then ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c" break 3 fi fi fi done done ;; esac done IFS=$as_save_IFS rm -rf conftest.one conftest.two conftest.dir fi if test "${ac_cv_path_install+set}" = set; then INSTALL=$ac_cv_path_install else # As a last resort, use the slow shell script. Don't cache a # value for INSTALL within a source directory, because that will # break other packages using the cache if that directory is # removed, or if the value is a relative name. INSTALL=$ac_install_sh fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $INSTALL" >&5 $as_echo "$INSTALL" >&6; } # Use test -z because SunOS4 sh mishandles braces in ${var-val}. # It thinks the first close brace ends the variable substitution. test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}' test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}' test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. set dummy ${ac_tool_prefix}gcc; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CC="${ac_tool_prefix}gcc" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_CC"; then ac_ct_CC=$CC # Extract the first word of "gcc", so it can be a program name with args. set dummy gcc; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CC="gcc" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 $as_echo "$ac_ct_CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_CC" = x; then CC="" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CC=$ac_ct_CC fi else CC="$ac_cv_prog_CC" fi if test -z "$CC"; then if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. set dummy ${ac_tool_prefix}cc; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CC="${ac_tool_prefix}cc" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi fi if test -z "$CC"; then # Extract the first word of "cc", so it can be a program name with args. set dummy cc; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else ac_prog_rejected=no as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then ac_prog_rejected=yes continue fi ac_cv_prog_CC="cc" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS if test $ac_prog_rejected = yes; then # We found a bogon in the path, so make sure we never use it. set dummy $ac_cv_prog_CC shift if test $# != 0; then # We chose a different compiler from the bogus one. # However, it has the same basename, so the bogon will be chosen # first if we set CC to just the basename; use the full file name. shift ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@" fi fi fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$CC"; then if test -n "$ac_tool_prefix"; then for ac_prog in cl.exe do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CC="$ac_tool_prefix$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$CC" && break done fi if test -z "$CC"; then ac_ct_CC=$CC for ac_prog in cl.exe do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CC="$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 $as_echo "$ac_ct_CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$ac_ct_CC" && break done if test "x$ac_ct_CC" = x; then CC="" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CC=$ac_ct_CC fi fi fi test -z "$CC" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "no acceptable C compiler found in \$PATH See \`config.log' for more details" "$LINENO" 5; } # Provide some information about the compiler. $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5 set X $ac_compile ac_compiler=$2 for ac_option in --version -v -V -qversion; do { { ac_try="$ac_compiler $ac_option >&5" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_compiler $ac_option >&5") 2>conftest.err ac_status=$? if test -s conftest.err; then sed '10a\ ... rest of stderr output deleted ... 10q' conftest.err >conftest.er1 cat conftest.er1 >&5 fi rm -f conftest.er1 conftest.err $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } done cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF ac_clean_files_save=$ac_clean_files ac_clean_files="$ac_clean_files a.out a.out.dSYM a.exe b.out" # Try to create an executable without -o first, disregard a.out. # It will help us diagnose broken compilers, and finding out an intuition # of exeext. { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler works" >&5 $as_echo_n "checking whether the C compiler works... " >&6; } ac_link_default=`$as_echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'` # The possible output files: ac_files="a.out conftest.exe conftest a.exe a_out.exe b.out conftest.*" ac_rmfiles= for ac_file in $ac_files do case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; * ) ac_rmfiles="$ac_rmfiles $ac_file";; esac done rm -f $ac_rmfiles if { { ac_try="$ac_link_default" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link_default") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then : # Autoconf-2.13 could set the ac_cv_exeext variable to `no'. # So ignore a value of `no', otherwise this would lead to `EXEEXT = no' # in a Makefile. We should not override ac_cv_exeext if it was cached, # so that the user can short-circuit this test for compilers unknown to # Autoconf. for ac_file in $ac_files '' do test -f "$ac_file" || continue case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; [ab].out ) # We found the default executable, but exeext='' is most # certainly right. break;; *.* ) if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no; then :; else ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` fi # We set ac_cv_exeext here because the later test for it is not # safe: cross compilers may not add the suffix if given an `-o' # argument, so we may need to know it at that point already. # Even if this section looks crufty: it has the advantage of # actually working. break;; * ) break;; esac done test "$ac_cv_exeext" = no && ac_cv_exeext= else ac_file='' fi if test -z "$ac_file"; then : { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error 77 "C compiler cannot create executables See \`config.log' for more details" "$LINENO" 5; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler default output file name" >&5 $as_echo_n "checking for C compiler default output file name... " >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5 $as_echo "$ac_file" >&6; } ac_exeext=$ac_cv_exeext rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out ac_clean_files=$ac_clean_files_save { $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5 $as_echo_n "checking for suffix of executables... " >&6; } if { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then : # If both `conftest.exe' and `conftest' are `present' (well, observable) # catch `conftest.exe'. For instance with Cygwin, `ls conftest' will # work properly (i.e., refer to `conftest.exe'), while it won't with # `rm'. for ac_file in conftest.exe conftest conftest.*; do test -f "$ac_file" || continue case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` break;; * ) break;; esac done else { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "cannot compute suffix of executables: cannot compile and link See \`config.log' for more details" "$LINENO" 5; } fi rm -f conftest conftest$ac_cv_exeext { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5 $as_echo "$ac_cv_exeext" >&6; } rm -f conftest.$ac_ext EXEEXT=$ac_cv_exeext ac_exeext=$EXEEXT cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main () { FILE *f = fopen ("conftest.out", "w"); return ferror (f) || fclose (f) != 0; ; return 0; } _ACEOF ac_clean_files="$ac_clean_files conftest.out" # Check that the compiler produces executables we can run. If not, either # the compiler is broken, or we cross compile. { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5 $as_echo_n "checking whether we are cross compiling... " >&6; } if test "$cross_compiling" != yes; then { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } if { ac_try='./conftest$ac_cv_exeext' { { case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_try") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; }; then cross_compiling=no else if test "$cross_compiling" = maybe; then cross_compiling=yes else { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "cannot run C compiled programs. If you meant to cross compile, use \`--host'. See \`config.log' for more details" "$LINENO" 5; } fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5 $as_echo "$cross_compiling" >&6; } rm -f conftest.$ac_ext conftest$ac_cv_exeext conftest.out ac_clean_files=$ac_clean_files_save { $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5 $as_echo_n "checking for suffix of object files... " >&6; } if ${ac_cv_objext+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF rm -f conftest.o conftest.obj if { { ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_compile") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then : for ac_file in conftest.o conftest.obj conftest.*; do test -f "$ac_file" || continue; case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM ) ;; *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'` break;; esac done else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "cannot compute suffix of object files: cannot compile See \`config.log' for more details" "$LINENO" 5; } fi rm -f conftest.$ac_cv_objext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5 $as_echo "$ac_cv_objext" >&6; } OBJEXT=$ac_cv_objext ac_objext=$OBJEXT { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C compiler" >&5 $as_echo_n "checking whether we are using the GNU C compiler... " >&6; } if ${ac_cv_c_compiler_gnu+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { #ifndef __GNUC__ choke me #endif ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_compiler_gnu=yes else ac_compiler_gnu=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_cv_c_compiler_gnu=$ac_compiler_gnu fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5 $as_echo "$ac_cv_c_compiler_gnu" >&6; } if test $ac_compiler_gnu = yes; then GCC=yes else GCC= fi ac_test_CFLAGS=${CFLAGS+set} ac_save_CFLAGS=$CFLAGS { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5 $as_echo_n "checking whether $CC accepts -g... " >&6; } if ${ac_cv_prog_cc_g+:} false; then : $as_echo_n "(cached) " >&6 else ac_save_c_werror_flag=$ac_c_werror_flag ac_c_werror_flag=yes ac_cv_prog_cc_g=no CFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_prog_cc_g=yes else CFLAGS="" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : else ac_c_werror_flag=$ac_save_c_werror_flag CFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_prog_cc_g=yes fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_c_werror_flag=$ac_save_c_werror_flag fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5 $as_echo "$ac_cv_prog_cc_g" >&6; } if test "$ac_test_CFLAGS" = set; then CFLAGS=$ac_save_CFLAGS elif test $ac_cv_prog_cc_g = yes; then if test "$GCC" = yes; then CFLAGS="-g -O2" else CFLAGS="-g" fi else if test "$GCC" = yes; then CFLAGS="-O2" else CFLAGS= fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5 $as_echo_n "checking for $CC option to accept ISO C89... " >&6; } if ${ac_cv_prog_cc_c89+:} false; then : $as_echo_n "(cached) " >&6 else ac_cv_prog_cc_c89=no ac_save_CC=$CC cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include struct stat; /* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */ struct buf { int x; }; FILE * (*rcsopen) (struct buf *, struct stat *, int); static char *e (p, i) char **p; int i; { return p[i]; } static char *f (char * (*g) (char **, int), char **p, ...) { char *s; va_list v; va_start (v,p); s = g (p, va_arg (v,int)); va_end (v); return s; } /* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has function prototypes and stuff, but not '\xHH' hex character constants. These don't provoke an error unfortunately, instead are silently treated as 'x'. The following induces an error, until -std is added to get proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an array size at least. It's necessary to write '\x00'==0 to get something that's true only with -std. */ int osf4_cc_array ['\x00' == 0 ? 1 : -1]; /* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters inside strings and character constants. */ #define FOO(x) 'x' int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1]; int test (int i, double x); struct s1 {int (*f) (int a);}; struct s2 {int (*f) (double a);}; int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int); int argc; char **argv; int main () { return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]; ; return 0; } _ACEOF for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \ -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" do CC="$ac_save_CC $ac_arg" if ac_fn_c_try_compile "$LINENO"; then : ac_cv_prog_cc_c89=$ac_arg fi rm -f core conftest.err conftest.$ac_objext test "x$ac_cv_prog_cc_c89" != "xno" && break done rm -f conftest.$ac_ext CC=$ac_save_CC fi # AC_CACHE_VAL case "x$ac_cv_prog_cc_c89" in x) { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 $as_echo "none needed" >&6; } ;; xno) { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 $as_echo "unsupported" >&6; } ;; *) CC="$CC $ac_cv_prog_cc_c89" { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5 $as_echo "$ac_cv_prog_cc_c89" >&6; } ;; esac if test "x$ac_cv_prog_cc_c89" != xno; then : fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu # Make sure we can run config.sub. $SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 || as_fn_error $? "cannot run $SHELL $ac_aux_dir/config.sub" "$LINENO" 5 { $as_echo "$as_me:${as_lineno-$LINENO}: checking build system type" >&5 $as_echo_n "checking build system type... " >&6; } if ${ac_cv_build+:} false; then : $as_echo_n "(cached) " >&6 else ac_build_alias=$build_alias test "x$ac_build_alias" = x && ac_build_alias=`$SHELL "$ac_aux_dir/config.guess"` test "x$ac_build_alias" = x && as_fn_error $? "cannot guess build type; you must specify one" "$LINENO" 5 ac_cv_build=`$SHELL "$ac_aux_dir/config.sub" $ac_build_alias` || as_fn_error $? "$SHELL $ac_aux_dir/config.sub $ac_build_alias failed" "$LINENO" 5 fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build" >&5 $as_echo "$ac_cv_build" >&6; } case $ac_cv_build in *-*-*) ;; *) as_fn_error $? "invalid value of canonical build" "$LINENO" 5;; esac build=$ac_cv_build ac_save_IFS=$IFS; IFS='-' set x $ac_cv_build shift build_cpu=$1 build_vendor=$2 shift; shift # Remember, the first character of IFS is used to create $*, # except with old shells: build_os=$* IFS=$ac_save_IFS case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking host system type" >&5 $as_echo_n "checking host system type... " >&6; } if ${ac_cv_host+:} false; then : $as_echo_n "(cached) " >&6 else if test "x$host_alias" = x; then ac_cv_host=$ac_cv_build else ac_cv_host=`$SHELL "$ac_aux_dir/config.sub" $host_alias` || as_fn_error $? "$SHELL $ac_aux_dir/config.sub $host_alias failed" "$LINENO" 5 fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_host" >&5 $as_echo "$ac_cv_host" >&6; } case $ac_cv_host in *-*-*) ;; *) as_fn_error $? "invalid value of canonical host" "$LINENO" 5;; esac host=$ac_cv_host ac_save_IFS=$IFS; IFS='-' set x $ac_cv_host shift host_cpu=$1 host_vendor=$2 shift; shift # Remember, the first character of IFS is used to create $*, # except with old shells: host_os=$* IFS=$ac_save_IFS case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac ansi="-std=c99 -pedantic" case "$host_os" in *cygwin*) ansi="" ;; solaris2*) CPPFLAGS="$CPPFLAGS -D__EXTENSIONS__" ;; darwin*) CCOPTIONS="$CCOPTIONS -no-cpp-precomp -Wno-deprecated-declarations" ;; linux*) CPPFLAGS="$CPPFLAGS -D_BSD_SOURCE -D_DEFAULT_SOURCE -D_POSIX_SOURCE -D_XOPEN_SOURCE" ;; esac if test "$GCC" = yes then # Add common gcc options, plus flags for dependency generation. CCOPTIONS="$CCOPTIONS -Wall -Wsign-compare $ansi -Wno-variadic-macros -MMD -MP" fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing gethostbyname" >&5 $as_echo_n "checking for library containing gethostbyname... " >&6; } if ${ac_cv_search_gethostbyname+:} false; then : $as_echo_n "(cached) " >&6 else ac_func_search_save_LIBS=$LIBS cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char gethostbyname (); int main () { return gethostbyname (); ; return 0; } _ACEOF for ac_lib in '' nsl; do if test -z "$ac_lib"; then ac_res="none required" else ac_res=-l$ac_lib LIBS="-l$ac_lib $ac_func_search_save_LIBS" fi if ac_fn_c_try_link "$LINENO"; then : ac_cv_search_gethostbyname=$ac_res fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext if ${ac_cv_search_gethostbyname+:} false; then : break fi done if ${ac_cv_search_gethostbyname+:} false; then : else ac_cv_search_gethostbyname=no fi rm conftest.$ac_ext LIBS=$ac_func_search_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_gethostbyname" >&5 $as_echo "$ac_cv_search_gethostbyname" >&6; } ac_res=$ac_cv_search_gethostbyname if test "$ac_res" != no; then : test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing socket" >&5 $as_echo_n "checking for library containing socket... " >&6; } if ${ac_cv_search_socket+:} false; then : $as_echo_n "(cached) " >&6 else ac_func_search_save_LIBS=$LIBS cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char socket (); int main () { return socket (); ; return 0; } _ACEOF for ac_lib in '' socket; do if test -z "$ac_lib"; then ac_res="none required" else ac_res=-l$ac_lib LIBS="-l$ac_lib $ac_func_search_save_LIBS" fi if ac_fn_c_try_link "$LINENO"; then : ac_cv_search_socket=$ac_res fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext if ${ac_cv_search_socket+:} false; then : break fi done if ${ac_cv_search_socket+:} false; then : else ac_cv_search_socket=no fi rm conftest.$ac_ext LIBS=$ac_func_search_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_socket" >&5 $as_echo "$ac_cv_search_socket" >&6; } ac_res=$ac_cv_search_socket if test "$ac_res" != no; then : test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C preprocessor" >&5 $as_echo_n "checking how to run the C preprocessor... " >&6; } # On Suns, sometimes $CPP names a directory. if test -n "$CPP" && test -d "$CPP"; then CPP= fi if test -z "$CPP"; then if ${ac_cv_prog_CPP+:} false; then : $as_echo_n "(cached) " >&6 else # Double quotes because CPP needs to be expanded for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp" do ac_preproc_ok=false for ac_c_preproc_warn_flag in '' yes do # Use a header file that comes with gcc, so configuring glibc # with a fresh cross-compiler works. # Prefer to if __STDC__ is defined, since # exists even on freestanding compilers. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifdef __STDC__ # include #else # include #endif Syntax error _ACEOF if ac_fn_c_try_cpp "$LINENO"; then : else # Broken: fails on valid input. continue fi rm -f conftest.err conftest.i conftest.$ac_ext # OK, works on sane cases. Now check whether nonexistent headers # can be detected and how. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if ac_fn_c_try_cpp "$LINENO"; then : # Broken: success on invalid input. continue else # Passes both tests. ac_preproc_ok=: break fi rm -f conftest.err conftest.i conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f conftest.i conftest.err conftest.$ac_ext if $ac_preproc_ok; then : break fi done ac_cv_prog_CPP=$CPP fi CPP=$ac_cv_prog_CPP else ac_cv_prog_CPP=$CPP fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CPP" >&5 $as_echo "$CPP" >&6; } ac_preproc_ok=false for ac_c_preproc_warn_flag in '' yes do # Use a header file that comes with gcc, so configuring glibc # with a fresh cross-compiler works. # Prefer to if __STDC__ is defined, since # exists even on freestanding compilers. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifdef __STDC__ # include #else # include #endif Syntax error _ACEOF if ac_fn_c_try_cpp "$LINENO"; then : else # Broken: fails on valid input. continue fi rm -f conftest.err conftest.i conftest.$ac_ext # OK, works on sane cases. Now check whether nonexistent headers # can be detected and how. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if ac_fn_c_try_cpp "$LINENO"; then : # Broken: success on invalid input. continue else # Passes both tests. ac_preproc_ok=: break fi rm -f conftest.err conftest.i conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f conftest.i conftest.err conftest.$ac_ext if $ac_preproc_ok; then : else { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "C preprocessor \"$CPP\" fails sanity check See \`config.log' for more details" "$LINENO" 5; } fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu { $as_echo "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5 $as_echo_n "checking for grep that handles long lines and -e... " >&6; } if ${ac_cv_path_GREP+:} false; then : $as_echo_n "(cached) " >&6 else if test -z "$GREP"; then ac_path_GREP_found=false # Loop through the user's path and test for each of PROGNAME-LIST as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_prog in grep ggrep; do for ac_exec_ext in '' $ac_executable_extensions; do ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext" as_fn_executable_p "$ac_path_GREP" || continue # Check for GNU ac_path_GREP and select it if it is found. # Check for GNU $ac_path_GREP case `"$ac_path_GREP" --version 2>&1` in *GNU*) ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;; *) ac_count=0 $as_echo_n 0123456789 >"conftest.in" while : do cat "conftest.in" "conftest.in" >"conftest.tmp" mv "conftest.tmp" "conftest.in" cp "conftest.in" "conftest.nl" $as_echo 'GREP' >> "conftest.nl" "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break as_fn_arith $ac_count + 1 && ac_count=$as_val if test $ac_count -gt ${ac_path_GREP_max-0}; then # Best one so far, save it but keep looking for a better one ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_max=$ac_count fi # 10*(2^10) chars as input seems more than enough test $ac_count -gt 10 && break done rm -f conftest.in conftest.tmp conftest.nl conftest.out;; esac $ac_path_GREP_found && break 3 done done done IFS=$as_save_IFS if test -z "$ac_cv_path_GREP"; then as_fn_error $? "no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 fi else ac_cv_path_GREP=$GREP fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP" >&5 $as_echo "$ac_cv_path_GREP" >&6; } GREP="$ac_cv_path_GREP" { $as_echo "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5 $as_echo_n "checking for egrep... " >&6; } if ${ac_cv_path_EGREP+:} false; then : $as_echo_n "(cached) " >&6 else if echo a | $GREP -E '(a|b)' >/dev/null 2>&1 then ac_cv_path_EGREP="$GREP -E" else if test -z "$EGREP"; then ac_path_EGREP_found=false # Loop through the user's path and test for each of PROGNAME-LIST as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_prog in egrep; do for ac_exec_ext in '' $ac_executable_extensions; do ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext" as_fn_executable_p "$ac_path_EGREP" || continue # Check for GNU ac_path_EGREP and select it if it is found. # Check for GNU $ac_path_EGREP case `"$ac_path_EGREP" --version 2>&1` in *GNU*) ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;; *) ac_count=0 $as_echo_n 0123456789 >"conftest.in" while : do cat "conftest.in" "conftest.in" >"conftest.tmp" mv "conftest.tmp" "conftest.in" cp "conftest.in" "conftest.nl" $as_echo 'EGREP' >> "conftest.nl" "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break as_fn_arith $ac_count + 1 && ac_count=$as_val if test $ac_count -gt ${ac_path_EGREP_max-0}; then # Best one so far, save it but keep looking for a better one ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_max=$ac_count fi # 10*(2^10) chars as input seems more than enough test $ac_count -gt 10 && break done rm -f conftest.in conftest.tmp conftest.nl conftest.out;; esac $ac_path_EGREP_found && break 3 done done done IFS=$as_save_IFS if test -z "$ac_cv_path_EGREP"; then as_fn_error $? "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 fi else ac_cv_path_EGREP=$EGREP fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5 $as_echo "$ac_cv_path_EGREP" >&6; } EGREP="$ac_cv_path_EGREP" { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5 $as_echo_n "checking for ANSI C header files... " >&6; } if ${ac_cv_header_stdc+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include #include #include int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_header_stdc=yes else ac_cv_header_stdc=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext if test $ac_cv_header_stdc = yes; then # SunOS 4.x string.h does not declare mem*, contrary to ANSI. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "memchr" >/dev/null 2>&1; then : else ac_cv_header_stdc=no fi rm -f conftest* fi if test $ac_cv_header_stdc = yes; then # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "free" >/dev/null 2>&1; then : else ac_cv_header_stdc=no fi rm -f conftest* fi if test $ac_cv_header_stdc = yes; then # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. if test "$cross_compiling" = yes; then : : else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include #if ((' ' & 0x0FF) == 0x020) # define ISLOWER(c) ('a' <= (c) && (c) <= 'z') # define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) #else # define ISLOWER(c) \ (('a' <= (c) && (c) <= 'i') \ || ('j' <= (c) && (c) <= 'r') \ || ('s' <= (c) && (c) <= 'z')) # define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) #endif #define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) int main () { int i; for (i = 0; i < 256; i++) if (XOR (islower (i), ISLOWER (i)) || toupper (i) != TOUPPER (i)) return 2; return 0; } _ACEOF if ac_fn_c_try_run "$LINENO"; then : else ac_cv_header_stdc=no fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdc" >&5 $as_echo "$ac_cv_header_stdc" >&6; } if test $ac_cv_header_stdc = yes; then $as_echo "#define STDC_HEADERS 1" >>confdefs.h fi # On IRIX 5.3, sys/types and inttypes.h are conflicting. for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \ inttypes.h stdint.h unistd.h do : as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default " if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : cat >>confdefs.h <<_ACEOF #define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF fi done for ac_header in iconv.h do : ac_fn_c_check_header_mongrel "$LINENO" "iconv.h" "ac_cv_header_iconv_h" "$ac_includes_default" if test "x$ac_cv_header_iconv_h" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_ICONV_H 1 _ACEOF fi done # Check whether --with-ssl was given. if test "${with_ssl+set}" = set; then : withval=$with_ssl; fi if test "$enable_tls" != no then orig_CPPFLAGS="$CPPFLAGS" unset any for dir in "$with_ssl" /usr/local /usr/local/ssl /usr/lib/ssl /usr/pkg/ssl /usr/ssl /var/ssl /opt/ssl do header_fail=0 if test -n "$dir" -a ! -d "$dir/include" then header_fail=1 continue fi if test -n "$any" then { $as_echo "$as_me:${as_lineno-$LINENO}: retrying with -I$dir/include" >&5 $as_echo "$as_me: retrying with -I$dir/include" >&6;} fi if test -n "$dir" then CPPFLAGS="$orig_CPPFLAGS -I$dir/include" fi for ac_header in openssl/ssl.h do : ac_fn_c_check_header_mongrel "$LINENO" "openssl/ssl.h" "ac_cv_header_openssl_ssl_h" "$ac_includes_default" if test "x$ac_cv_header_openssl_ssl_h" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_OPENSSL_SSL_H 1 _ACEOF else header_fail=1 fi done if test "$header_fail" -eq 0 then break fi unset `echo ac_cv_header_openssl/ssl_h | $as_tr_sh` CPPFLAGS="$orig_CPPFLAGS" any=1 done if test $header_fail -eq 1 then { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Disabling TLS" >&5 $as_echo "$as_me: WARNING: Disabling TLS" >&2;} enable_tls="no" unset HAVE_LIBSSL fi fi for ac_func in vasprintf do : ac_fn_c_check_func "$LINENO" "vasprintf" "ac_cv_func_vasprintf" if test "x$ac_cv_func_vasprintf" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_VASPRINTF 1 _ACEOF fi done LIBX3270DIR='${sysconfdir}/x3270' # Check whether --enable-dbcs was given. if test "${enable_dbcs+set}" = set; then : enableval=$enable_dbcs; fi case "$enable_dbcs" in no) ;; *) $as_echo "#define X3270_DBCS 1" >>confdefs.h ;; esac # Check whether --enable-ipv6 was given. if test "${enable_ipv6+set}" = set; then : enableval=$enable_ipv6; fi case "$enable_ipv6" in ""|yes) $as_echo "#define X3270_IPV6 1" >>confdefs.h ;; esac ac_config_headers="$ac_config_headers conf.h" ac_config_files="$ac_config_files Makefile Makefile.obj" cat >confcache <<\_ACEOF # This file is a shell script that caches the results of configure # tests run on this system so they can be shared between configure # scripts and configure runs, see configure's option --config-cache. # It is not useful on other systems. If it contains results you don't # want to keep, you may remove or edit it. # # config.status only pays attention to the cache file if you give it # the --recheck option to rerun configure. # # `ac_cv_env_foo' variables (set or unset) will be overridden when # loading this file, other *unset* `ac_cv_foo' will be assigned the # following values. _ACEOF # The following way of writing the cache mishandles newlines in values, # but we know of no workaround that is simple, portable, and efficient. # So, we kill variables containing newlines. # Ultrix sh set writes to stderr and can't be redirected directly, # and sets the high bit in the cache file unless we assign to the vars. ( for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do eval ac_val=\$$ac_var case $ac_val in #( *${as_nl}*) case $ac_var in #( *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 $as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; esac case $ac_var in #( _ | IFS | as_nl) ;; #( BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( *) { eval $ac_var=; unset $ac_var;} ;; esac ;; esac done (set) 2>&1 | case $as_nl`(ac_space=' '; set) 2>&1` in #( *${as_nl}ac_space=\ *) # `set' does not quote correctly, so add quotes: double-quote # substitution turns \\\\ into \\, and sed turns \\ into \. sed -n \ "s/'/'\\\\''/g; s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" ;; #( *) # `set' quotes correctly as required by POSIX, so do not add quotes. sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" ;; esac | sort ) | sed ' /^ac_cv_env_/b end t clear :clear s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/ t end s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ :end' >>confcache if diff "$cache_file" confcache >/dev/null 2>&1; then :; else if test -w "$cache_file"; then if test "x$cache_file" != "x/dev/null"; then { $as_echo "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5 $as_echo "$as_me: updating cache $cache_file" >&6;} if test ! -f "$cache_file" || test -h "$cache_file"; then cat confcache >"$cache_file" else case $cache_file in #( */* | ?:*) mv -f confcache "$cache_file"$$ && mv -f "$cache_file"$$ "$cache_file" ;; #( *) mv -f confcache "$cache_file" ;; esac fi fi else { $as_echo "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5 $as_echo "$as_me: not updating unwritable cache $cache_file" >&6;} fi fi rm -f confcache test "x$prefix" = xNONE && prefix=$ac_default_prefix # Let make expand exec_prefix. test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' DEFS=-DHAVE_CONFIG_H ac_libobjs= ac_ltlibobjs= U= for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue # 1. Remove the extension, and $U if already installed. ac_script='s/\$U\././;s/\.o$//;s/\.obj$//' ac_i=`$as_echo "$ac_i" | sed "$ac_script"` # 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR # will be set to the directory where LIBOBJS objects are built. as_fn_append ac_libobjs " \${LIBOBJDIR}$ac_i\$U.$ac_objext" as_fn_append ac_ltlibobjs " \${LIBOBJDIR}$ac_i"'$U.lo' done LIBOBJS=$ac_libobjs LTLIBOBJS=$ac_ltlibobjs : "${CONFIG_STATUS=./config.status}" ac_write_fail=0 ac_clean_files_save=$ac_clean_files ac_clean_files="$ac_clean_files $CONFIG_STATUS" { $as_echo "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5 $as_echo "$as_me: creating $CONFIG_STATUS" >&6;} as_write_fail=0 cat >$CONFIG_STATUS <<_ASEOF || as_write_fail=1 #! $SHELL # Generated by $as_me. # Run this file to recreate the current configuration. # Compiler output produced by configure, useful for debugging # configure, is in config.log if it exists. debug=false ac_cs_recheck=false ac_cs_silent=false SHELL=\${CONFIG_SHELL-$SHELL} export SHELL _ASEOF cat >>$CONFIG_STATUS <<\_ASEOF || as_write_fail=1 ## -------------------- ## ## M4sh Initialization. ## ## -------------------- ## # Be more Bourne compatible DUALCASE=1; export DUALCASE # for MKS sh if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST else case `(set -o) 2>/dev/null` in #( *posix*) : set -o posix ;; #( *) : ;; esac fi as_nl=' ' export as_nl # Printing a long string crashes Solaris 7 /usr/bin/printf. as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo # Prefer a ksh shell builtin over an external printf program on Solaris, # but without wasting forks for bash or zsh. if test -z "$BASH_VERSION$ZSH_VERSION" \ && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then as_echo='print -r --' as_echo_n='print -rn --' elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then as_echo='printf %s\n' as_echo_n='printf %s' else if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' as_echo_n='/usr/ucb/echo -n' else as_echo_body='eval expr "X$1" : "X\\(.*\\)"' as_echo_n_body='eval arg=$1; case $arg in #( *"$as_nl"*) expr "X$arg" : "X\\(.*\\)$as_nl"; arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; esac; expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" ' export as_echo_n_body as_echo_n='sh -c $as_echo_n_body as_echo' fi export as_echo_body as_echo='sh -c $as_echo_body as_echo' fi # The user is always right. if test "${PATH_SEPARATOR+set}" != set; then PATH_SEPARATOR=: (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || PATH_SEPARATOR=';' } fi # IFS # We need space, tab and new line, in precisely that order. Quoting is # there to prevent editors from complaining about space-tab. # (If _AS_PATH_WALK were called with IFS unset, it would disable word # splitting by setting IFS to empty value.) IFS=" "" $as_nl" # Find who we are. Look in the path if we contain no directory separator. as_myself= case $0 in #(( *[\\/]* ) as_myself=$0 ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break done IFS=$as_save_IFS ;; esac # We did not find ourselves, most probably we were run as `sh COMMAND' # in which case we are not to be found in the path. if test "x$as_myself" = x; then as_myself=$0 fi if test ! -f "$as_myself"; then $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 exit 1 fi # Unset variables that we do not need and which cause bugs (e.g. in # pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" # suppresses any "Segmentation fault" message there. '((' could # trigger a bug in pdksh 5.2.14. for as_var in BASH_ENV ENV MAIL MAILPATH do eval test x\${$as_var+set} = xset \ && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : done PS1='$ ' PS2='> ' PS4='+ ' # NLS nuisances. LC_ALL=C export LC_ALL LANGUAGE=C export LANGUAGE # CDPATH. (unset CDPATH) >/dev/null 2>&1 && unset CDPATH # as_fn_error STATUS ERROR [LINENO LOG_FD] # ---------------------------------------- # Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are # provided, also output the error to LOG_FD, referencing LINENO. Then exit the # script with STATUS, using 1 if that was 0. as_fn_error () { as_status=$1; test $as_status -eq 0 && as_status=1 if test "$4"; then as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 fi $as_echo "$as_me: error: $2" >&2 as_fn_exit $as_status } # as_fn_error # as_fn_set_status STATUS # ----------------------- # Set $? to STATUS, without forking. as_fn_set_status () { return $1 } # as_fn_set_status # as_fn_exit STATUS # ----------------- # Exit the shell with STATUS, even in a "trap 0" or "set -e" context. as_fn_exit () { set +e as_fn_set_status $1 exit $1 } # as_fn_exit # as_fn_unset VAR # --------------- # Portably unset VAR. as_fn_unset () { { eval $1=; unset $1;} } as_unset=as_fn_unset # as_fn_append VAR VALUE # ---------------------- # Append the text in VALUE to the end of the definition contained in VAR. Take # advantage of any shell optimizations that allow amortized linear growth over # repeated appends, instead of the typical quadratic growth present in naive # implementations. if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : eval 'as_fn_append () { eval $1+=\$2 }' else as_fn_append () { eval $1=\$$1\$2 } fi # as_fn_append # as_fn_arith ARG... # ------------------ # Perform arithmetic evaluation on the ARGs, and store the result in the # global $as_val. Take advantage of shells that can avoid forks. The arguments # must be portable across $(()) and expr. if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : eval 'as_fn_arith () { as_val=$(( $* )) }' else as_fn_arith () { as_val=`expr "$@" || test $? -eq 1` } fi # as_fn_arith if expr a : '\(a\)' >/dev/null 2>&1 && test "X`expr 00001 : '.*\(...\)'`" = X001; then as_expr=expr else as_expr=false fi if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then as_basename=basename else as_basename=false fi if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then as_dirname=dirname else as_dirname=false fi as_me=`$as_basename -- "$0" || $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ X"$0" : 'X\(//\)$' \| \ X"$0" : 'X\(/\)' \| . 2>/dev/null || $as_echo X/"$0" | sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/ q } /^X\/\(\/\/\)$/{ s//\1/ q } /^X\/\(\/\).*/{ s//\1/ q } s/.*/./; q'` # Avoid depending upon Character Ranges. as_cr_letters='abcdefghijklmnopqrstuvwxyz' as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' as_cr_Letters=$as_cr_letters$as_cr_LETTERS as_cr_digits='0123456789' as_cr_alnum=$as_cr_Letters$as_cr_digits ECHO_C= ECHO_N= ECHO_T= case `echo -n x` in #((((( -n*) case `echo 'xy\c'` in *c*) ECHO_T=' ';; # ECHO_T is single tab character. xy) ECHO_C='\c';; *) echo `echo ksh88 bug on AIX 6.1` > /dev/null ECHO_T=' ';; esac;; *) ECHO_N='-n';; esac rm -f conf$$ conf$$.exe conf$$.file if test -d conf$$.dir; then rm -f conf$$.dir/conf$$.file else rm -f conf$$.dir mkdir conf$$.dir 2>/dev/null fi if (echo >conf$$.file) 2>/dev/null; then if ln -s conf$$.file conf$$ 2>/dev/null; then as_ln_s='ln -s' # ... but there are two gotchas: # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. # In both cases, we have to default to `cp -pR'. ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || as_ln_s='cp -pR' elif ln conf$$.file conf$$ 2>/dev/null; then as_ln_s=ln else as_ln_s='cp -pR' fi else as_ln_s='cp -pR' fi rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file rmdir conf$$.dir 2>/dev/null # as_fn_mkdir_p # ------------- # Create "$as_dir" as a directory, including parents if necessary. as_fn_mkdir_p () { case $as_dir in #( -*) as_dir=./$as_dir;; esac test -d "$as_dir" || eval $as_mkdir_p || { as_dirs= while :; do case $as_dir in #( *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( *) as_qdir=$as_dir;; esac as_dirs="'$as_qdir' $as_dirs" as_dir=`$as_dirname -- "$as_dir" || $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_dir" : 'X\(//\)[^/]' \| \ X"$as_dir" : 'X\(//\)$' \| \ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$as_dir" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` test -d "$as_dir" && break done test -z "$as_dirs" || eval "mkdir $as_dirs" } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" } # as_fn_mkdir_p if mkdir -p . 2>/dev/null; then as_mkdir_p='mkdir -p "$as_dir"' else test -d ./-p && rmdir ./-p as_mkdir_p=false fi # as_fn_executable_p FILE # ----------------------- # Test if FILE is an executable regular file. as_fn_executable_p () { test -f "$1" && test -x "$1" } # as_fn_executable_p as_test_x='test -x' as_executable_p=as_fn_executable_p # Sed expression to map a string onto a valid CPP name. as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" # Sed expression to map a string onto a valid variable name. as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" exec 6>&1 ## ----------------------------------- ## ## Main body of $CONFIG_STATUS script. ## ## ----------------------------------- ## _ASEOF test $as_write_fail = 0 && chmod +x $CONFIG_STATUS || ac_write_fail=1 cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # Save the log message, to keep $0 and so on meaningful, and to # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" This file was extended by pr3287 $as_me 4.0, which was generated by GNU Autoconf 2.69. Invocation command line was CONFIG_FILES = $CONFIG_FILES CONFIG_HEADERS = $CONFIG_HEADERS CONFIG_LINKS = $CONFIG_LINKS CONFIG_COMMANDS = $CONFIG_COMMANDS $ $0 $@ on `(hostname || uname -n) 2>/dev/null | sed 1q` " _ACEOF case $ac_config_files in *" "*) set x $ac_config_files; shift; ac_config_files=$*;; esac case $ac_config_headers in *" "*) set x $ac_config_headers; shift; ac_config_headers=$*;; esac cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 # Files that config.status was made for. config_files="$ac_config_files" config_headers="$ac_config_headers" _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 ac_cs_usage="\ \`$as_me' instantiates files and other configuration actions from templates according to the current configuration. Unless the files and actions are specified as TAGs, all are instantiated by default. Usage: $0 [OPTION]... [TAG]... -h, --help print this help, then exit -V, --version print version number and configuration settings, then exit --config print configuration, then exit -q, --quiet, --silent do not print progress messages -d, --debug don't remove temporary files --recheck update $as_me by reconfiguring in the same conditions --file=FILE[:TEMPLATE] instantiate the configuration file FILE --header=FILE[:TEMPLATE] instantiate the configuration header FILE Configuration files: $config_files Configuration headers: $config_headers Report bugs to the package provider." _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" ac_cs_version="\\ pr3287 config.status 4.0 configured by $0, generated by GNU Autoconf 2.69, with options \\"\$ac_cs_config\\" Copyright (C) 2012 Free Software Foundation, Inc. This config.status script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it." ac_pwd='$ac_pwd' srcdir='$srcdir' INSTALL='$INSTALL' test -n "\$AWK" || AWK=awk _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # The default lists apply if the user does not specify any file. ac_need_defaults=: while test $# != 0 do case $1 in --*=?*) ac_option=`expr "X$1" : 'X\([^=]*\)='` ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'` ac_shift=: ;; --*=) ac_option=`expr "X$1" : 'X\([^=]*\)='` ac_optarg= ac_shift=: ;; *) ac_option=$1 ac_optarg=$2 ac_shift=shift ;; esac case $ac_option in # Handling of the options. -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) ac_cs_recheck=: ;; --version | --versio | --versi | --vers | --ver | --ve | --v | -V ) $as_echo "$ac_cs_version"; exit ;; --config | --confi | --conf | --con | --co | --c ) $as_echo "$ac_cs_config"; exit ;; --debug | --debu | --deb | --de | --d | -d ) debug=: ;; --file | --fil | --fi | --f ) $ac_shift case $ac_optarg in *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; '') as_fn_error $? "missing file argument" ;; esac as_fn_append CONFIG_FILES " '$ac_optarg'" ac_need_defaults=false;; --header | --heade | --head | --hea ) $ac_shift case $ac_optarg in *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; esac as_fn_append CONFIG_HEADERS " '$ac_optarg'" ac_need_defaults=false;; --he | --h) # Conflict between --help and --header as_fn_error $? "ambiguous option: \`$1' Try \`$0 --help' for more information.";; --help | --hel | -h ) $as_echo "$ac_cs_usage"; exit ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil | --si | --s) ac_cs_silent=: ;; # This is an error. -*) as_fn_error $? "unrecognized option: \`$1' Try \`$0 --help' for more information." ;; *) as_fn_append ac_config_targets " $1" ac_need_defaults=false ;; esac shift done ac_configure_extra_args= if $ac_cs_silent; then exec 6>/dev/null ac_configure_extra_args="$ac_configure_extra_args --silent" fi _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 if \$ac_cs_recheck; then set X $SHELL '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion shift \$as_echo "running CONFIG_SHELL=$SHELL \$*" >&6 CONFIG_SHELL='$SHELL' export CONFIG_SHELL exec "\$@" fi _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 exec 5>>config.log { echo sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX ## Running $as_me. ## _ASBOX $as_echo "$ac_log" } >&5 _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # Handling of arguments. for ac_config_target in $ac_config_targets do case $ac_config_target in "conf.h") CONFIG_HEADERS="$CONFIG_HEADERS conf.h" ;; "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;; "Makefile.obj") CONFIG_FILES="$CONFIG_FILES Makefile.obj" ;; *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;; esac done # If the user did not use the arguments to specify the items to instantiate, # then the envvar interface is used. Set only those that are not. # We use the long form for the default assignment because of an extremely # bizarre bug on SunOS 4.1.3. if $ac_need_defaults; then test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers fi # Have a temporary directory for convenience. Make it in the build tree # simply because there is no reason against having it here, and in addition, # creating and moving files from /tmp can sometimes cause problems. # Hook for its removal unless debugging. # Note that there is a small window in which the directory will not be cleaned: # after its creation but before its name has been assigned to `$tmp'. $debug || { tmp= ac_tmp= trap 'exit_status=$? : "${ac_tmp:=$tmp}" { test ! -d "$ac_tmp" || rm -fr "$ac_tmp"; } && exit $exit_status ' 0 trap 'as_fn_exit 1' 1 2 13 15 } # Create a (secure) tmp directory for tmp files. { tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` && test -d "$tmp" } || { tmp=./conf$$-$RANDOM (umask 077 && mkdir "$tmp") } || as_fn_error $? "cannot create a temporary directory in ." "$LINENO" 5 ac_tmp=$tmp # Set up the scripts for CONFIG_FILES section. # No need to generate them if there are no CONFIG_FILES. # This happens for instance with `./config.status config.h'. if test -n "$CONFIG_FILES"; then ac_cr=`echo X | tr X '\015'` # On cygwin, bash can eat \r inside `` if the user requested igncr. # But we know of no other shell where ac_cr would be empty at this # point, so we can use a bashism as a fallback. if test "x$ac_cr" = x; then eval ac_cr=\$\'\\r\' fi ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' /dev/null` if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then ac_cs_awk_cr='\\r' else ac_cs_awk_cr=$ac_cr fi echo 'BEGIN {' >"$ac_tmp/subs1.awk" && _ACEOF { echo "cat >conf$$subs.awk <<_ACEOF" && echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' && echo "_ACEOF" } >conf$$subs.sh || as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 ac_delim_num=`echo "$ac_subst_vars" | grep -c '^'` ac_delim='%!_!# ' for ac_last_try in false false false false false :; do . ./conf$$subs.sh || as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 ac_delim_n=`sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | grep -c X` if test $ac_delim_n = $ac_delim_num; then break elif $ac_last_try; then as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 else ac_delim="$ac_delim!$ac_delim _$ac_delim!! " fi done rm -f conf$$subs.sh cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 cat >>"\$ac_tmp/subs1.awk" <<\\_ACAWK && _ACEOF sed -n ' h s/^/S["/; s/!.*/"]=/ p g s/^[^!]*!// :repl t repl s/'"$ac_delim"'$// t delim :nl h s/\(.\{148\}\)..*/\1/ t more1 s/["\\]/\\&/g; s/^/"/; s/$/\\n"\\/ p n b repl :more1 s/["\\]/\\&/g; s/^/"/; s/$/"\\/ p g s/.\{148\}// t nl :delim h s/\(.\{148\}\)..*/\1/ t more2 s/["\\]/\\&/g; s/^/"/; s/$/"/ p b :more2 s/["\\]/\\&/g; s/^/"/; s/$/"\\/ p g s/.\{148\}// t delim ' >$CONFIG_STATUS || ac_write_fail=1 rm -f conf$$subs.awk cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 _ACAWK cat >>"\$ac_tmp/subs1.awk" <<_ACAWK && for (key in S) S_is_set[key] = 1 FS = "" } { line = $ 0 nfields = split(line, field, "@") substed = 0 len = length(field[1]) for (i = 2; i < nfields; i++) { key = field[i] keylen = length(key) if (S_is_set[key]) { value = S[key] line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3) len += length(value) + length(field[++i]) substed = 1 } else len += 1 + keylen } print line } _ACAWK _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g" else cat fi < "$ac_tmp/subs1.awk" > "$ac_tmp/subs.awk" \ || as_fn_error $? "could not setup config files machinery" "$LINENO" 5 _ACEOF # VPATH may cause trouble with some makes, so we remove sole $(srcdir), # ${srcdir} and @srcdir@ entries from VPATH if srcdir is ".", strip leading and # trailing colons and then remove the whole line if VPATH becomes empty # (actually we leave an empty line to preserve line numbers). if test "x$srcdir" = x.; then ac_vpsub='/^[ ]*VPATH[ ]*=[ ]*/{ h s/// s/^/:/ s/[ ]*$/:/ s/:\$(srcdir):/:/g s/:\${srcdir}:/:/g s/:@srcdir@:/:/g s/^:*// s/:*$// x s/\(=[ ]*\).*/\1/ G s/\n// s/^[^=]*=[ ]*$// }' fi cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 fi # test -n "$CONFIG_FILES" # Set up the scripts for CONFIG_HEADERS section. # No need to generate them if there are no CONFIG_HEADERS. # This happens for instance with `./config.status Makefile'. if test -n "$CONFIG_HEADERS"; then cat >"$ac_tmp/defines.awk" <<\_ACAWK || BEGIN { _ACEOF # Transform confdefs.h into an awk script `defines.awk', embedded as # here-document in config.status, that substitutes the proper values into # config.h.in to produce config.h. # Create a delimiter string that does not exist in confdefs.h, to ease # handling of long lines. ac_delim='%!_!# ' for ac_last_try in false false :; do ac_tt=`sed -n "/$ac_delim/p" confdefs.h` if test -z "$ac_tt"; then break elif $ac_last_try; then as_fn_error $? "could not make $CONFIG_HEADERS" "$LINENO" 5 else ac_delim="$ac_delim!$ac_delim _$ac_delim!! " fi done # For the awk script, D is an array of macro values keyed by name, # likewise P contains macro parameters if any. Preserve backslash # newline sequences. ac_word_re=[_$as_cr_Letters][_$as_cr_alnum]* sed -n ' s/.\{148\}/&'"$ac_delim"'/g t rset :rset s/^[ ]*#[ ]*define[ ][ ]*/ / t def d :def s/\\$// t bsnl s/["\\]/\\&/g s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ D["\1"]=" \3"/p s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2"/p d :bsnl s/["\\]/\\&/g s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ D["\1"]=" \3\\\\\\n"\\/p t cont s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2\\\\\\n"\\/p t cont d :cont n s/.\{148\}/&'"$ac_delim"'/g t clear :clear s/\\$// t bsnlc s/["\\]/\\&/g; s/^/"/; s/$/"/p d :bsnlc s/["\\]/\\&/g; s/^/"/; s/$/\\\\\\n"\\/p b cont ' >$CONFIG_STATUS || ac_write_fail=1 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 for (key in D) D_is_set[key] = 1 FS = "" } /^[\t ]*#[\t ]*(define|undef)[\t ]+$ac_word_re([\t (]|\$)/ { line = \$ 0 split(line, arg, " ") if (arg[1] == "#") { defundef = arg[2] mac1 = arg[3] } else { defundef = substr(arg[1], 2) mac1 = arg[2] } split(mac1, mac2, "(") #) macro = mac2[1] prefix = substr(line, 1, index(line, defundef) - 1) if (D_is_set[macro]) { # Preserve the white space surrounding the "#". print prefix "define", macro P[macro] D[macro] next } else { # Replace #undef with comments. This is necessary, for example, # in the case of _POSIX_SOURCE, which is predefined and required # on some systems where configure will not decide to define it. if (defundef == "undef") { print "/*", prefix defundef, macro, "*/" next } } } { print } _ACAWK _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 as_fn_error $? "could not setup config headers machinery" "$LINENO" 5 fi # test -n "$CONFIG_HEADERS" eval set X " :F $CONFIG_FILES :H $CONFIG_HEADERS " shift for ac_tag do case $ac_tag in :[FHLC]) ac_mode=$ac_tag; continue;; esac case $ac_mode$ac_tag in :[FHL]*:*);; :L* | :C*:*) as_fn_error $? "invalid tag \`$ac_tag'" "$LINENO" 5;; :[FH]-) ac_tag=-:-;; :[FH]*) ac_tag=$ac_tag:$ac_tag.in;; esac ac_save_IFS=$IFS IFS=: set x $ac_tag IFS=$ac_save_IFS shift ac_file=$1 shift case $ac_mode in :L) ac_source=$1;; :[FH]) ac_file_inputs= for ac_f do case $ac_f in -) ac_f="$ac_tmp/stdin";; *) # Look for the file first in the build tree, then in the source tree # (if the path is not absolute). The absolute path cannot be DOS-style, # because $ac_f cannot contain `:'. test -f "$ac_f" || case $ac_f in [\\/$]*) false;; *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";; esac || as_fn_error 1 "cannot find input file: \`$ac_f'" "$LINENO" 5;; esac case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac as_fn_append ac_file_inputs " '$ac_f'" done # Let's still pretend it is `configure' which instantiates (i.e., don't # use $as_me), people would be surprised to read: # /* config.h. Generated by config.status. */ configure_input='Generated from '` $as_echo "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g' `' by configure.' if test x"$ac_file" != x-; then configure_input="$ac_file. $configure_input" { $as_echo "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5 $as_echo "$as_me: creating $ac_file" >&6;} fi # Neutralize special characters interpreted by sed in replacement strings. case $configure_input in #( *\&* | *\|* | *\\* ) ac_sed_conf_input=`$as_echo "$configure_input" | sed 's/[\\\\&|]/\\\\&/g'`;; #( *) ac_sed_conf_input=$configure_input;; esac case $ac_tag in *:-:* | *:-) cat >"$ac_tmp/stdin" \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;; esac ;; esac ac_dir=`$as_dirname -- "$ac_file" || $as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$ac_file" : 'X\(//\)[^/]' \| \ X"$ac_file" : 'X\(//\)$' \| \ X"$ac_file" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$ac_file" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` as_dir="$ac_dir"; as_fn_mkdir_p ac_builddir=. case "$ac_dir" in .) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` # A ".." for each directory in $ac_dir_suffix. ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` case $ac_top_builddir_sub in "") ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; esac ;; esac ac_abs_top_builddir=$ac_pwd ac_abs_builddir=$ac_pwd$ac_dir_suffix # for backward compatibility: ac_top_builddir=$ac_top_build_prefix case $srcdir in .) # We are building in place. ac_srcdir=. ac_top_srcdir=$ac_top_builddir_sub ac_abs_top_srcdir=$ac_pwd ;; [\\/]* | ?:[\\/]* ) # Absolute name. ac_srcdir=$srcdir$ac_dir_suffix; ac_top_srcdir=$srcdir ac_abs_top_srcdir=$srcdir ;; *) # Relative name. ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix ac_top_srcdir=$ac_top_build_prefix$srcdir ac_abs_top_srcdir=$ac_pwd/$srcdir ;; esac ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix case $ac_mode in :F) # # CONFIG_FILE # case $INSTALL in [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;; *) ac_INSTALL=$ac_top_build_prefix$INSTALL ;; esac _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # If the template does not know about datarootdir, expand it. # FIXME: This hack should be removed a few years after 2.60. ac_datarootdir_hack=; ac_datarootdir_seen= ac_sed_dataroot=' /datarootdir/ { p q } /@datadir@/p /@docdir@/p /@infodir@/p /@localedir@/p /@mandir@/p' case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in *datarootdir*) ac_datarootdir_seen=yes;; *@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 $as_echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;} _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_datarootdir_hack=' s&@datadir@&$datadir&g s&@docdir@&$docdir&g s&@infodir@&$infodir&g s&@localedir@&$localedir&g s&@mandir@&$mandir&g s&\\\${datarootdir}&$datarootdir&g' ;; esac _ACEOF # Neutralize VPATH when `$srcdir' = `.'. # Shell code in configure.ac might set extrasub. # FIXME: do we really want to maintain this feature? cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_sed_extra="$ac_vpsub $extrasub _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 :t /@[a-zA-Z_][a-zA-Z_0-9]*@/!b s|@configure_input@|$ac_sed_conf_input|;t t s&@top_builddir@&$ac_top_builddir_sub&;t t s&@top_build_prefix@&$ac_top_build_prefix&;t t s&@srcdir@&$ac_srcdir&;t t s&@abs_srcdir@&$ac_abs_srcdir&;t t s&@top_srcdir@&$ac_top_srcdir&;t t s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t s&@builddir@&$ac_builddir&;t t s&@abs_builddir@&$ac_abs_builddir&;t t s&@abs_top_builddir@&$ac_abs_top_builddir&;t t s&@INSTALL@&$ac_INSTALL&;t t $ac_datarootdir_hack " eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$ac_tmp/subs.awk" \ >$ac_tmp/out || as_fn_error $? "could not create $ac_file" "$LINENO" 5 test -z "$ac_datarootdir_hack$ac_datarootdir_seen" && { ac_out=`sed -n '/\${datarootdir}/p' "$ac_tmp/out"`; test -n "$ac_out"; } && { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' \ "$ac_tmp/out"`; test -z "$ac_out"; } && { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir' which seems to be undefined. Please make sure it is defined" >&5 $as_echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir' which seems to be undefined. Please make sure it is defined" >&2;} rm -f "$ac_tmp/stdin" case $ac_file in -) cat "$ac_tmp/out" && rm -f "$ac_tmp/out";; *) rm -f "$ac_file" && mv "$ac_tmp/out" "$ac_file";; esac \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;; :H) # # CONFIG_HEADER # if test x"$ac_file" != x-; then { $as_echo "/* $configure_input */" \ && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" } >"$ac_tmp/config.h" \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 if diff "$ac_file" "$ac_tmp/config.h" >/dev/null 2>&1; then { $as_echo "$as_me:${as_lineno-$LINENO}: $ac_file is unchanged" >&5 $as_echo "$as_me: $ac_file is unchanged" >&6;} else rm -f "$ac_file" mv "$ac_tmp/config.h" "$ac_file" \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 fi else $as_echo "/* $configure_input */" \ && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" \ || as_fn_error $? "could not create -" "$LINENO" 5 fi ;; esac done # for ac_tag as_fn_exit 0 _ACEOF ac_clean_files=$ac_clean_files_save test $ac_write_fail = 0 || as_fn_error $? "write failure creating $CONFIG_STATUS" "$LINENO" 5 # configure is writing to config.log, and then calls config.status. # config.status does its own redirection, appending to config.log. # Unfortunately, on DOS this fails, as config.log is still kept open # by configure, so config.status won't be able to write to it; its # output is simply discarded. So we exec the FD to /dev/null, # effectively closing config.log, so it can be properly (re)opened and # appended to by config.status. When coming back to configure, we # need to make the FD available again. if test "$no_create" != yes; then ac_cs_success=: ac_config_status_args= test "$silent" = yes && ac_config_status_args="$ac_config_status_args --quiet" exec 5>/dev/null $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false exec 5>>config.log # Use ||, not &&, to avoid exiting from the if with $? = 1, which # would make configure fail if this is the last instruction. $ac_cs_success || as_fn_exit 1 fi if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5 $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;} fi suite3270-4.1/pr3287/configure.in000077700000000000000000000000001413735575200232312../Common/pr3287/configure.inustar00rootroot00000000000000suite3270-4.1/pr3287/html.m4000077700000000000000000000000001413735575200200562../Common/html.m4ustar00rootroot00000000000000suite3270-4.1/pr3287/html/000077500000000000000000000000001413735575200147505ustar00rootroot00000000000000suite3270-4.1/pr3287/html/.gitignore000066400000000000000000000000351413735575200167360ustar00rootroot00000000000000*-man.html ReleaseNotes.html suite3270-4.1/pr3287/instlist.base000077700000000000000000000000001413735575200236212../Common/pr3287/instlist.baseustar00rootroot00000000000000suite3270-4.1/pr3287/instlist.man000077700000000000000000000000001413735575200233232../Common/pr3287/instlist.manustar00rootroot00000000000000suite3270-4.1/pr3287/m4man000077700000000000000000000000001413735575200173402../Common/m4manustar00rootroot00000000000000suite3270-4.1/pr3287/man.m4000077700000000000000000000000001413735575200174742../Common/man.m4ustar00rootroot00000000000000suite3270-4.1/pr3287/mkversion.sh000077700000000000000000000000001413735575200223642../Common/mkversion.shustar00rootroot00000000000000suite3270-4.1/pr3287/pr3287.man000066400000000000000000000007571413735575200154570ustar00rootroot00000000000000'\" t .TH PR3287 1 "30 October 2021" .SH "NAME" pr3287 \- \s-1IBM\s+1 host printing tool .SH "SYNOPSIS" \fBpr3287\fP [\fIoptions\fP] \fIhostname\fP .SH "DESCRIPTION" \fBpr3287\fP opens a TELNET connection to an \s-1IBM\s+1 host, and emulates an \s-1IBM\s+1 3287 printer. It implements RFCs 2355 (TN3270E), 1576 (TN3270) and 1646 (LU name selection). .SH "WIKI" Primary documentation for pr3287 is on the \fBx3270 Wiki\fP, https://x3270.miraheze.org/wiki/Main_Page. .SH "VERSION" pr3287 4.1pre10 suite3270-4.1/pr3287/pr3287.man.m4000077700000000000000000000000001413735575200223512../Common/pr3287/pr3287.man.m4ustar00rootroot00000000000000suite3270-4.1/pr3287/pr3287_files.mk000077700000000000000000000000001413735575200235472../Common/pr3287/pr3287_files.mkustar00rootroot00000000000000suite3270-4.1/pr3287/version.txt000077700000000000000000000000001413735575200221162../Common/version.txtustar00rootroot00000000000000suite3270-4.1/s3270/000077500000000000000000000000001413735575200136155ustar00rootroot00000000000000suite3270-4.1/s3270/.gitignore000066400000000000000000000000241413735575200156010ustar00rootroot00000000000000conf.h Makefile.obj suite3270-4.1/s3270/Examples/000077500000000000000000000000001413735575200153735ustar00rootroot00000000000000suite3270-4.1/s3270/Examples/cms_cmd.expect000077500000000000000000000111061413735575200202140ustar00rootroot00000000000000#!/usr/bin/expect # Copyright (c) 2000-2009, Paul Mattes. # All rights reserved. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # * Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # * Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in the # documentation and/or other materials provided with the distribution. # * Neither the name of Paul Mattes nor his contributors may be used # to endorse or promote products derived from this software without # specific prior written permission. # # THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS OR # IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES # OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN # NO EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, # SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED # TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR # PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF # LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING # NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS # SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. # Read in the glue functions. source x3270_glue.expect # Pluck the username, password and command from the command line. if {$argc != 4} { puts stderr "Usage: $argv0 hostname username password command" exit 1 } set hostname [lindex $argv 0] set username [lindex $argv 1] set password [lindex $argv 2] set command [lindex $argv 3] # Procedure to wait for a READ prompt from CMS or CP. proc waitread {} { Snap Save while {[Snap Ascii [expr [Snap Rows]-1] [expr [Snap Cols]-17] 4] != "READ"} { Snap Wait Output } } # Procedure to check for the CMS "Ready" prompt. # Returns its row number, or -1 for "MORE..." state, and leaves a screen with # data to read in the Snap buffer. proc cmd_done {} { global verbose Snap Save while {1} { if {[Snap Ascii [expr [Snap Rows]-1] [expr [Snap Cols]-20] 7] == "MORE..."} { if {$verbose} {puts "MORE..."} return -1 } set i [expr [Snap Rows]-2] while {$i >= 0} { set text [Snap Ascii $i 0 [Snap Cols]] switch -regexp $text { "Ready; T=.*" {return $i} "Ready\(.*\); T=.*" { error [Snap Ascii [expr $i-1] 0 \ [Snap Cols]] } "^ *\$" {} default { if {$verbose} {puts "Incomplete $i '[string trimright $text]'"} set i 0 } } incr i -1 } Snap Wait Output } } # Execute a command, return the output. proc cms_cmd {text} { global verbose # Clear the screen. Clear # Send the command. String "$text\n" # 'first' is the row where the first line of output will appear. For # the first screenful it's 1; after that it's 0. set first 1 # r is the result. set r {} while {1} { # Wait for a screenful. set d [cmd_done] # Dump out what's there. set i $first set first 0 if {$d < 0} {set last [expr [Snap Rows]-2]} {set last $d} while {$i < $last} { set r [linsert $r end [string trimright \ [Snap Ascii $i 0 [Snap Cols]]]] incr i } if {$d >= 0} {break} # Clear the screen and go around again. Clear } return $r } # Start of main procedure. # Set 'verbose' to 1 to get debug output from the glue functions. set verbose 0 # Start s3270 Start # Setverbose 1 # Connect to the host and wait for an input field. Connect $hostname Wait InputField # Log in and wait for CP READ or VM READ mode. String "$username\t$password\n" waitread # If we can't log on, we're hosed. if {[Ascii 1 11 7] == "Already"} { puts stderr "Can't run -- already logged in." exit 1 } # If we're in CP mode, which means we disconnected last time, boot CMS. if {[Ascii [expr [Rows]-1] [expr [Cols]-20] 2] == "CP"} { Clear String "i cms\n" waitread } # Enter an empty command to get a CMS prompt. If we don't do this, there will # be a Ready prompt as the first line of output below. Clear Enter cmd_done # Get the output of the user's command and display it. if {[catch {cms_cmd $command} result]} { puts stderr $result set rc 1 } { for {set i 0} {$i < [llength $result]} {incr i} { puts [lindex $result $i] } set rc 0 } # Log off, and wait for the host to hang up on us, so we don't unintentionally # create a disconnected session. Clear if {! [catch {String "logoff\n"}]} {Wait Disconnect} exit $rc suite3270-4.1/s3270/Examples/s3270_glue.expect000066400000000000000000000203771413735575200204100ustar00rootroot00000000000000# Copyright (c) 2000-2009, Paul Mattes. # All rights reserved. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # * Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # * Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in the # documentation and/or other materials provided with the distribution. # * Neither the name of Paul Mattes nor his contributors may be used # to endorse or promote products derived from this software without # specific prior written permission. # # THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS OR # IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES # OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN # NO EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, # SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED # TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR # PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF # LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING # NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS # SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. # Glue functions between 'expect' and x3270 # Usage: source s3270.glue # # These can be used with: # "x3270 -script" to drive an x3270 session # "s3270" to drive a displayless 3270 session # "x3270if -i" to run a child script of x3270 # Basic interface command. Used internally by the action functions below. proc x3270_cmd {cmd} { global verbose if {$verbose} {puts "+$cmd"} send "$cmd\r" expect { -re "data: (.*)\r\n.*\r\nok\r\n$" { set r $expect_out(buffer) } "*ok\r\n" { return {} } "*error\r\n" { error "$cmd failed" } eof { error "s3270 died" } } # Convert to a list. set ret {} while {1} { if {! [regexp "data: (.*?)\r\n" $r dummy elt]} {break} set r [string range $r [expr [string length $elt]+7] end] if {[llength $ret] > 0} { set ret [linsert $ret end $elt] } { set ret $elt } } if {$verbose} {puts "ret llen [llength $ret]"} return $ret } # User-accessible actions. # Some of these apply only to x3270 and x3270if, and not to s3270. proc AltCursor {} { return [x3270_cmd "AltCursor"] } proc Ascii {args} { set i 0 set a "" while {$i < [llength $args]} { if {$i > 0} { set a "$a,[lindex $args $i]" } { set a [lindex $args $i] } incr i } return [x3270_cmd "Ascii($a)"] } proc AsciiField {} { return [x3270_cmd "AsciiField"] } proc Attn {} { return [x3270_cmd "Attn"] } proc BackSpace {} { return [x3270_cmd "BackSpace"] } proc BackTab {} { return [x3270_cmd "BackTab"] } proc CircumNot {} { return [x3270_cmd "CircumNot"] } proc Clear {} { return [x3270_cmd "Clear"] } proc CloseScript {} { return [x3270_cmd "CloseScript"] } proc Cols {} { return [lindex [Status] 7] } proc Compose {} { return [x3270_cmd "Compose"] } proc Connect {host} { return [x3270_cmd "Connect($host)"] } proc CursorSelect {} { return [x3270_cmd "CursorSelect"] } proc Delete {} { return [x3270_cmd "Delete"] } proc DeleteField {} { return [x3270_cmd "DeleteField"] } proc DeleteWord {} { return [x3270_cmd "DeleteWord"] } proc Disconnect {} { return [x3270_cmd "Disconnect"] } proc Down {} { return [x3270_cmd "Down"] } proc Dup {} { return [x3270_cmd "Dup"] } proc Ebcdic {args} { set i 0 set a "" while {$i < [llength $args]} { if {$i > 0} { set a "$a,[lindex $args $i]" } { set a [lindex $args $i] } incr i } return [x3270_cmd "Ebcdic($a)"] } proc EbcdicField {} { return [x3270_cmd "EbcdicField"] } proc Enter {} { return [x3270_cmd "Enter"] } proc Erase {} { return [x3270_cmd "Erase"] } proc EraseEOF {} { return [x3270_cmd "EraseEOF"] } proc EraseInput {} { return [x3270_cmd "EraseInput"] } proc FieldEnd {} { return [x3270_cmd "FieldEnd"] } proc FieldMark {} { return [x3270_cmd "FieldMark"] } proc FieldExit {} { return [x3270_cmd "FieldExit"] } proc Flip {} { return [x3270_cmd "Flip"] } proc HexString {args} { set i 0 set a "" while {$i < [llength $args]} { if {$i > 0} { set a "$a,[lindex $args $i]" } { set a [lindex $args $i] } incr i } return [x3270_cmd "HexString($a)"] } proc Home {} { return [x3270_cmd "Home"] } proc Info {text} { set a "\"" set i 0 while {$i < [string len $text]} { set c [string range $text $i $i] switch $c { "\n" { set a "$a\\n" } "\r" { set a "$a\\r" } " " { set a "$a\\ " } "\"" { set a "$a\\\"" } default { set a "$a$c" } } incr i } set a "$a\"" return [x3270_cmd "Info($a)"] } proc Insert {} { return [x3270_cmd "Insert"] } proc Interrupt {} { return [x3270_cmd "Interrupt"] } proc Key {k} { return [x3270_cmd "Key($k)"] } proc Keymap {k} { return [x3270_cmd "Keymap($k)"] } proc Left {} { return [x3270_cmd "Left"] } proc Left2 {} { return [x3270_cmd "Left2"] } proc MonoCase {} { return [x3270_cmd "MonoCase"] } proc MoveCursor {r c} { return [x3270_cmd "MoveCursor($r,$c)"] } proc Newline {} { return [x3270_cmd "Newline"] } proc NextWord {} { return [x3270_cmd "NextWord"] } proc PA {n} { return [x3270_cmd "PA($n)"] } proc PF {n} { return [x3270_cmd "PF($n)"] } proc PreviousWord {} { return [x3270_cmd "PreviousWord"] } proc Reset {} { return [x3270_cmd "Reset"] } proc Right {} { return [x3270_cmd "Right"] } proc Right2 {} { return [x3270_cmd "Right2"] } proc Rows {} { return [lindex [Status] 6] } proc SetFont {font} { return [x3270_cmd "SetFont($font)"] } proc Snap {args} { set i 0 set a "" while {$i < [llength $args]} { if {$i > 0} { set a "$a,[lindex $args $i]" } { set a [lindex $args $i] } incr i } return [x3270_cmd "Snap($a)"] } proc Status {} { global verbose if {$verbose} {puts "+(nothing)"} send "\r" expect { "*ok\r\n" { set r $expect_out(buffer) } } return [string range $r 0 [expr [string length $r]-7]] } proc String {text} { set a "\"" set i 0 while {$i < [string len $text]} { set c [string range $text $i $i] switch $c { "\n" { set a "$a\\n" } "\r" { set a "$a\\r" } " " { set a "$a\\ " } "\"" { set a "$a\\\"" } default { set a "$a$c" } } incr i } set a "$a\"" return [x3270_cmd "String($a)"] } proc SysReq {} { return [x3270_cmd "SysReq"] } proc Tab {} { return [x3270_cmd "Tab"] } proc ToggleInsert {} { return [x3270_cmd "ToggleInsert"] } proc ToggleReverse {} { return [x3270_cmd "ToggleReverse"] } proc TemporaryKeymap {args} { return [x3270_cmd "TemporaryKeymap($args)"] } proc Transfer {args} { set i 0 set a "" while {$i < [llength $args]} { if {$i > 0} { set a "$a,[lindex $args $i]" } { set a [lindex $args $i] } incr i } return [x3270_cmd "Transfer($a)"] } proc Up {} { return [x3270_cmd "Up"] } proc Wait {args} { return [x3270_cmd "Wait($args)"] } # Start function: Start ?-nohup? ?program? ?options? # # Sets up the 'expect' environment correctly and spawns a 3270 interface # process. # If "args" is empty, or starts with an option besides '-nohup', guesses which # process to start. # It will only guess "x3270if -i" or "s3270"; if you want to start x3270, you # need to specicity it explicitly. proc Start {args} { global stty_init timeout spawn_id verbose env # If the first argument is "-nohup", remember that as an argument to # 'spawn'. if {[lindex $args 0] == "-nohup"} { set nohup {-ignore HUP} set args [lrange $args 1 end] } { set nohup {} } # If there are no arguments, or the first argument is an option, guess # what to start. # If X3270INPUT is defined in the environment, this must be a child # script; start x3270if. Otherwise, this must be a peer script; # start s3270. if {$args == {} || [string index [lindex $args 0] 0] == "-"} { if {[info exists env(X3270INPUT)]} { set args [concat x3270if -i $args] } { set args [concat s3270 $args] } } # If 'verbose' isn't set, set it to 0 now. if {! [info exists verbose]} {set verbose 0} # Set up the pty initialization default. set stty_init -echo # Spawn x3270. if {$verbose} { set pid [eval [concat spawn $nohup $args]] } { set pid [eval [concat spawn -noecho $nohup $args]] log_user 0 } # Set the 'expect' timeout. set timeout -1 return $pid } suite3270-4.1/s3270/Makefile.aux000066400000000000000000000044651413735575200160620ustar00rootroot00000000000000# Copyright (c) 1995-2011, 2013-2017, 2020 Paul Mattes. # All rights reserved. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # * Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # * Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in the # documentation and/or other materials provided with the distribution. # * Neither the name of Paul Mattes nor his contributors may be used # to endorse or promote products derived from this software without # specific prior written permission. # # THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS OR # IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES # OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN # NO EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, # SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED # TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR # PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF # LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING # NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS # SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. # Auxiliary makefile for s3270 PRODUCT=s3270 all: @echo "Must pick a specific make target." # Development tools. include s3270_files.mk MISC = $(PRODUCT).man Examples/cms_cmd.expect Makefile.in \ conf.h.in configure configure.in mkversion.sh \ parts.h.in s3270_files.mk s3270_glue.bash version.txt \ x3270_glue.expect HTML = html/$(PRODUCT)-man.html html/x3270.xbm FILES = $(SOURCES) $(HEADERS) $(MISC) $(HTML) src.tgz: prepare $(FILES) prepare: configure configure: configure.in autoconf MANDEP = man.m4 html.m4 m4man Makefile.aux version.txt MKMAN = ./m4man -t man -p $(PRODUCT) MKHTML = ./m4man -t html -p $(PRODUCT) man: $(PRODUCT).man $(HTML) $(PRODUCT).man: x3270.man.m4 $(MANDEP) $(MKMAN) -n $(PRODUCT) -o $@ x3270.man.m4 html/$(PRODUCT)-man.html: x3270.man.m4 $(MANDEP) $(MKHTML) -n $(PRODUCT) -o $@ x3270.man.m4 suite3270-4.1/s3270/Makefile.in000066400000000000000000000043201413735575200156610ustar00rootroot00000000000000# Copyright (c) 2016-2017 Paul Mattes. # All rights reserved. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # * Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # * Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in the # documentation and/or other materials provided with the distribution. # * Neither the name of Paul Mattes nor his contributors may be used # to endorse or promote products derived from this software without # specific prior written permission. # # THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS OR # IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES # OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN # NO EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, # SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED # TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR # PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF # LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING # NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS # SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. # VPATH-based Makefile for s3270 top = ../../.. objdir = ../obj/@host@/s3270 this = $(top)/s3270 export VPATH = $(this):$(top)/Common/s3270:$(top)/Common export TOP = $(top) export THIS = $(this) MAKEINC = -I$(this) -I$(top)/Common all: $(objdir) cd $(objdir) && $(MAKE) $(MAKEINC) -f $(this)/Makefile.obj $@ install: $(objdir) cd $(objdir) && $(MAKE) $(MAKEINC) -f $(this)/Makefile.obj $@ install.man: $(objdir) cd $(objdir) && $(MAKE) $(MAKEINC) -f $(this)/Makefile.obj $@ clean: $(objdir) cd $(objdir) && $(MAKE) $(MAKEINC) -f $(this)/Makefile.obj $@ clobber: $(objdir) cd $(objdir) && $(MAKE) $(MAKEINC) -f $(this)/Makefile.obj $@ depend: $(objdir) cd $(objdir) && $(MAKE) $(MAKEINC) -f $(this)/Makefile.obj $@ $(objdir): mkdir -p $(objdir) suite3270-4.1/s3270/Makefile.obj.in000066400000000000000000000062531413735575200164410ustar00rootroot00000000000000# Copyright (c) 1999-2009, 2013-2018, 2020 Paul Mattes. # All rights reserved. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # * Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # * Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in the # documentation and/or other materials provided with the distribution. # * Neither the name of Paul Mattes nor his contributors may be used # to endorse or promote products derived from this software without # specific prior written permission. # # THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS OR # IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES # OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN # NO EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, # SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED # TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR # PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF # LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING # NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS # SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. # Makefile for s3270 (scripted 3270 emulator) RM = rm -f CC = @CC@ all: s3270 x3270if HOST = @host@ include s3270_files.mk libs.mk VOBJS = $(S3270_OBJECTS) fallbacks.o OBJS1 = $(VOBJS) version.o LIBDIR = @libdir@ prefix = @prefix@ exec_prefix = @exec_prefix@ sysconfdir = @sysconfdir@ datarootdir = @datarootdir@ LIBX3270DIR = @LIBX3270DIR@ MANDIR = @mandir@ BINDIR = @bindir@ INSTALL = @INSTALL@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_DATA = @INSTALL_DATA@ CCOPTIONS = @CCOPTIONS@ XCPPFLAGS = -I$(THIS) -I$(TOP)/include -I$(TOP)/Common/s3270 -DLIBX3270DIR=\"$(LIBX3270DIR)\" @CPPFLAGS@ CFLAGS = $(CCOPTIONS) $(CDEBUGFLAGS) $(XCPPFLAGS) @CFLAGS@ LDFLAGS = @LDFLAGS@ LIBS = @LIBS@ XVERSION = xversion.c version.o: mkversion.sh $(VOBJS) version.txt $(RM) $(XVERSION) sh $< s3270 $(filter %.txt,$^) >$(XVERSION) $(CC) $(CFLAGS) -c -o $@ $(XVERSION) $(RM) $(XVERSION) FALLBACKS = fb-common fallbacks.c: mkfb $(FALLBACKS) $(RM) $@ ./mkfb -c -o $@ $(filter-out mkfb,$^) mkfb: mkfb.c $(CC) $(CFLAGS) $(LDFLAGS) -o $@ $(filter %.c,$^) s3270: $(OBJS1) $(DEP3270) $(DEP32XX) $(DEP3270STUBS) $(CC) -o $@ $(OBJS1) $(LDFLAGS) $(LD3270) $(LD32XX) $(LD3270STUBS) $(LIBS) x3270if: ../x3270if/x3270if cp -p ../x3270if/x3270if $@ man:: s3270.man if [ ! -f $(notdir $^) ]; then cp $< $(notdir $^); fi install: s3270 [ -d $(DESTDIR)$(BINDIR) ] || \ mkdir -p $(DESTDIR)$(BINDIR) $(INSTALL_PROGRAM) s3270 $(DESTDIR)$(BINDIR)/s3270 install.man: man [ -d $(DESTDIR)$(MANDIR)/man1 ] || \ mkdir -p $(DESTDIR)$(MANDIR)/man1 $(INSTALL_DATA) s3270.man $(DESTDIR)$(MANDIR)/man1/s3270.1 clean: $(RM) *.o mkfb clobber: clean $(RM) s3270 *.d *.man # Include auto-generated dependencies. -include $(OBJS:.o=.d) mkfb.d suite3270-4.1/s3270/common_files.mk000077700000000000000000000000001413735575200232612../Common/common_files.mkustar00rootroot00000000000000suite3270-4.1/s3270/conf.h.in000066400000000000000000000040511413735575200153200ustar00rootroot00000000000000/* * Copyright (c) 2000-2009, 2015, 2017-2019 Paul Mattes. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of Paul Mattes nor his contributors may be used * to endorse or promote products derived from this software without * specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. */ /* * conf.h * System-specific #defines for libraries and library functions. * Automatically generated from conf.h.in by configure. */ /* Libraries. */ #undef HAVE_LIBREADLINE /* Header files. */ #undef HAVE_SYS_SELECT_H #undef HAVE_PTY_H #undef HAVE_LIBUTIL_H #undef HAVE_UTIL_H #undef HAVE_GETOPT_H #undef HAVE_READLINE_HISTORY_H /* Uncommon functions. */ #undef HAVE_VASPRINTF #undef HAVE_FSEEKO #undef HAVE_FORKPTY /* Configuration options. */ /* Optional parts. */ #undef X3270_LOCAL_PROCESS #undef X3270_IPV6 suite3270-4.1/s3270/configure000077500000000000000000004506711413735575200155410ustar00rootroot00000000000000#! /bin/sh # Guess values for system-dependent variables and create Makefiles. # Generated by GNU Autoconf 2.69 for s3270 4.0. # # # Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc. # # # This configure script is free software; the Free Software Foundation # gives unlimited permission to copy, distribute and modify it. ## -------------------- ## ## M4sh Initialization. ## ## -------------------- ## # Be more Bourne compatible DUALCASE=1; export DUALCASE # for MKS sh if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST else case `(set -o) 2>/dev/null` in #( *posix*) : set -o posix ;; #( *) : ;; esac fi as_nl=' ' export as_nl # Printing a long string crashes Solaris 7 /usr/bin/printf. as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo # Prefer a ksh shell builtin over an external printf program on Solaris, # but without wasting forks for bash or zsh. if test -z "$BASH_VERSION$ZSH_VERSION" \ && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then as_echo='print -r --' as_echo_n='print -rn --' elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then as_echo='printf %s\n' as_echo_n='printf %s' else if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' as_echo_n='/usr/ucb/echo -n' else as_echo_body='eval expr "X$1" : "X\\(.*\\)"' as_echo_n_body='eval arg=$1; case $arg in #( *"$as_nl"*) expr "X$arg" : "X\\(.*\\)$as_nl"; arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; esac; expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" ' export as_echo_n_body as_echo_n='sh -c $as_echo_n_body as_echo' fi export as_echo_body as_echo='sh -c $as_echo_body as_echo' fi # The user is always right. if test "${PATH_SEPARATOR+set}" != set; then PATH_SEPARATOR=: (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || PATH_SEPARATOR=';' } fi # IFS # We need space, tab and new line, in precisely that order. Quoting is # there to prevent editors from complaining about space-tab. # (If _AS_PATH_WALK were called with IFS unset, it would disable word # splitting by setting IFS to empty value.) IFS=" "" $as_nl" # Find who we are. Look in the path if we contain no directory separator. as_myself= case $0 in #(( *[\\/]* ) as_myself=$0 ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break done IFS=$as_save_IFS ;; esac # We did not find ourselves, most probably we were run as `sh COMMAND' # in which case we are not to be found in the path. if test "x$as_myself" = x; then as_myself=$0 fi if test ! -f "$as_myself"; then $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 exit 1 fi # Unset variables that we do not need and which cause bugs (e.g. in # pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" # suppresses any "Segmentation fault" message there. '((' could # trigger a bug in pdksh 5.2.14. for as_var in BASH_ENV ENV MAIL MAILPATH do eval test x\${$as_var+set} = xset \ && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : done PS1='$ ' PS2='> ' PS4='+ ' # NLS nuisances. LC_ALL=C export LC_ALL LANGUAGE=C export LANGUAGE # CDPATH. (unset CDPATH) >/dev/null 2>&1 && unset CDPATH # Use a proper internal environment variable to ensure we don't fall # into an infinite loop, continuously re-executing ourselves. if test x"${_as_can_reexec}" != xno && test "x$CONFIG_SHELL" != x; then _as_can_reexec=no; export _as_can_reexec; # We cannot yet assume a decent shell, so we have to provide a # neutralization value for shells without unset; and this also # works around shells that cannot unset nonexistent variables. # Preserve -v and -x to the replacement shell. BASH_ENV=/dev/null ENV=/dev/null (unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV case $- in # (((( *v*x* | *x*v* ) as_opts=-vx ;; *v* ) as_opts=-v ;; *x* ) as_opts=-x ;; * ) as_opts= ;; esac exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} # Admittedly, this is quite paranoid, since all the known shells bail # out after a failed `exec'. $as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2 as_fn_exit 255 fi # We don't want this to propagate to other subprocesses. { _as_can_reexec=; unset _as_can_reexec;} if test "x$CONFIG_SHELL" = x; then as_bourne_compatible="if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on \${1+\"\$@\"}, which # is contrary to our usage. Disable this feature. alias -g '\${1+\"\$@\"}'='\"\$@\"' setopt NO_GLOB_SUBST else case \`(set -o) 2>/dev/null\` in #( *posix*) : set -o posix ;; #( *) : ;; esac fi " as_required="as_fn_return () { (exit \$1); } as_fn_success () { as_fn_return 0; } as_fn_failure () { as_fn_return 1; } as_fn_ret_success () { return 0; } as_fn_ret_failure () { return 1; } exitcode=0 as_fn_success || { exitcode=1; echo as_fn_success failed.; } as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; } as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; } as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; } if ( set x; as_fn_ret_success y && test x = \"\$1\" ); then : else exitcode=1; echo positional parameters were not saved. fi test x\$exitcode = x0 || exit 1 test -x / || exit 1" as_suggested=" as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" && test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1 test \$(( 1 + 1 )) = 2 || exit 1" if (eval "$as_required") 2>/dev/null; then : as_have_required=yes else as_have_required=no fi if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null; then : else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR as_found=false for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. as_found=: case $as_dir in #( /*) for as_base in sh bash ksh sh5; do # Try only shells that exist, to save several forks. as_shell=$as_dir/$as_base if { test -f "$as_shell" || test -f "$as_shell.exe"; } && { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$as_shell"; } 2>/dev/null; then : CONFIG_SHELL=$as_shell as_have_required=yes if { $as_echo "$as_bourne_compatible""$as_suggested" | as_run=a "$as_shell"; } 2>/dev/null; then : break 2 fi fi done;; esac as_found=false done $as_found || { if { test -f "$SHELL" || test -f "$SHELL.exe"; } && { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$SHELL"; } 2>/dev/null; then : CONFIG_SHELL=$SHELL as_have_required=yes fi; } IFS=$as_save_IFS if test "x$CONFIG_SHELL" != x; then : export CONFIG_SHELL # We cannot yet assume a decent shell, so we have to provide a # neutralization value for shells without unset; and this also # works around shells that cannot unset nonexistent variables. # Preserve -v and -x to the replacement shell. BASH_ENV=/dev/null ENV=/dev/null (unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV case $- in # (((( *v*x* | *x*v* ) as_opts=-vx ;; *v* ) as_opts=-v ;; *x* ) as_opts=-x ;; * ) as_opts= ;; esac exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} # Admittedly, this is quite paranoid, since all the known shells bail # out after a failed `exec'. $as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2 exit 255 fi if test x$as_have_required = xno; then : $as_echo "$0: This script requires a shell more modern than all" $as_echo "$0: the shells that I found on your system." if test x${ZSH_VERSION+set} = xset ; then $as_echo "$0: In particular, zsh $ZSH_VERSION has bugs and should" $as_echo "$0: be upgraded to zsh 4.3.4 or later." else $as_echo "$0: Please tell bug-autoconf@gnu.org about your system, $0: including any error possibly output before this $0: message. Then install a modern shell, or manually run $0: the script under such a shell if you do have one." fi exit 1 fi fi fi SHELL=${CONFIG_SHELL-/bin/sh} export SHELL # Unset more variables known to interfere with behavior of common tools. CLICOLOR_FORCE= GREP_OPTIONS= unset CLICOLOR_FORCE GREP_OPTIONS ## --------------------- ## ## M4sh Shell Functions. ## ## --------------------- ## # as_fn_unset VAR # --------------- # Portably unset VAR. as_fn_unset () { { eval $1=; unset $1;} } as_unset=as_fn_unset # as_fn_set_status STATUS # ----------------------- # Set $? to STATUS, without forking. as_fn_set_status () { return $1 } # as_fn_set_status # as_fn_exit STATUS # ----------------- # Exit the shell with STATUS, even in a "trap 0" or "set -e" context. as_fn_exit () { set +e as_fn_set_status $1 exit $1 } # as_fn_exit # as_fn_mkdir_p # ------------- # Create "$as_dir" as a directory, including parents if necessary. as_fn_mkdir_p () { case $as_dir in #( -*) as_dir=./$as_dir;; esac test -d "$as_dir" || eval $as_mkdir_p || { as_dirs= while :; do case $as_dir in #( *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( *) as_qdir=$as_dir;; esac as_dirs="'$as_qdir' $as_dirs" as_dir=`$as_dirname -- "$as_dir" || $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_dir" : 'X\(//\)[^/]' \| \ X"$as_dir" : 'X\(//\)$' \| \ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$as_dir" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` test -d "$as_dir" && break done test -z "$as_dirs" || eval "mkdir $as_dirs" } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" } # as_fn_mkdir_p # as_fn_executable_p FILE # ----------------------- # Test if FILE is an executable regular file. as_fn_executable_p () { test -f "$1" && test -x "$1" } # as_fn_executable_p # as_fn_append VAR VALUE # ---------------------- # Append the text in VALUE to the end of the definition contained in VAR. Take # advantage of any shell optimizations that allow amortized linear growth over # repeated appends, instead of the typical quadratic growth present in naive # implementations. if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : eval 'as_fn_append () { eval $1+=\$2 }' else as_fn_append () { eval $1=\$$1\$2 } fi # as_fn_append # as_fn_arith ARG... # ------------------ # Perform arithmetic evaluation on the ARGs, and store the result in the # global $as_val. Take advantage of shells that can avoid forks. The arguments # must be portable across $(()) and expr. if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : eval 'as_fn_arith () { as_val=$(( $* )) }' else as_fn_arith () { as_val=`expr "$@" || test $? -eq 1` } fi # as_fn_arith # as_fn_error STATUS ERROR [LINENO LOG_FD] # ---------------------------------------- # Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are # provided, also output the error to LOG_FD, referencing LINENO. Then exit the # script with STATUS, using 1 if that was 0. as_fn_error () { as_status=$1; test $as_status -eq 0 && as_status=1 if test "$4"; then as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 fi $as_echo "$as_me: error: $2" >&2 as_fn_exit $as_status } # as_fn_error if expr a : '\(a\)' >/dev/null 2>&1 && test "X`expr 00001 : '.*\(...\)'`" = X001; then as_expr=expr else as_expr=false fi if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then as_basename=basename else as_basename=false fi if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then as_dirname=dirname else as_dirname=false fi as_me=`$as_basename -- "$0" || $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ X"$0" : 'X\(//\)$' \| \ X"$0" : 'X\(/\)' \| . 2>/dev/null || $as_echo X/"$0" | sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/ q } /^X\/\(\/\/\)$/{ s//\1/ q } /^X\/\(\/\).*/{ s//\1/ q } s/.*/./; q'` # Avoid depending upon Character Ranges. as_cr_letters='abcdefghijklmnopqrstuvwxyz' as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' as_cr_Letters=$as_cr_letters$as_cr_LETTERS as_cr_digits='0123456789' as_cr_alnum=$as_cr_Letters$as_cr_digits as_lineno_1=$LINENO as_lineno_1a=$LINENO as_lineno_2=$LINENO as_lineno_2a=$LINENO eval 'test "x$as_lineno_1'$as_run'" != "x$as_lineno_2'$as_run'" && test "x`expr $as_lineno_1'$as_run' + 1`" = "x$as_lineno_2'$as_run'"' || { # Blame Lee E. McMahon (1931-1989) for sed's syntax. :-) sed -n ' p /[$]LINENO/= ' <$as_myself | sed ' s/[$]LINENO.*/&-/ t lineno b :lineno N :loop s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ t loop s/-\n.*// ' >$as_me.lineno && chmod +x "$as_me.lineno" || { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; } # If we had to re-execute with $CONFIG_SHELL, we're ensured to have # already done that, so ensure we don't try to do so again and fall # in an infinite loop. This has already happened in practice. _as_can_reexec=no; export _as_can_reexec # Don't try to exec as it changes $[0], causing all sort of problems # (the dirname of $[0] is not the place where we might find the # original and so on. Autoconf is especially sensitive to this). . "./$as_me.lineno" # Exit status is that of the last command. exit } ECHO_C= ECHO_N= ECHO_T= case `echo -n x` in #((((( -n*) case `echo 'xy\c'` in *c*) ECHO_T=' ';; # ECHO_T is single tab character. xy) ECHO_C='\c';; *) echo `echo ksh88 bug on AIX 6.1` > /dev/null ECHO_T=' ';; esac;; *) ECHO_N='-n';; esac rm -f conf$$ conf$$.exe conf$$.file if test -d conf$$.dir; then rm -f conf$$.dir/conf$$.file else rm -f conf$$.dir mkdir conf$$.dir 2>/dev/null fi if (echo >conf$$.file) 2>/dev/null; then if ln -s conf$$.file conf$$ 2>/dev/null; then as_ln_s='ln -s' # ... but there are two gotchas: # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. # In both cases, we have to default to `cp -pR'. ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || as_ln_s='cp -pR' elif ln conf$$.file conf$$ 2>/dev/null; then as_ln_s=ln else as_ln_s='cp -pR' fi else as_ln_s='cp -pR' fi rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file rmdir conf$$.dir 2>/dev/null if mkdir -p . 2>/dev/null; then as_mkdir_p='mkdir -p "$as_dir"' else test -d ./-p && rmdir ./-p as_mkdir_p=false fi as_test_x='test -x' as_executable_p=as_fn_executable_p # Sed expression to map a string onto a valid CPP name. as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" # Sed expression to map a string onto a valid variable name. as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" test -n "$DJDIR" || exec 7<&0 &1 # Name of the host. # hostname on some systems (SVR3.2, old GNU/Linux) returns a bogus exit status, # so uname gets run too. ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q` # # Initializations. # ac_default_prefix=/usr/local ac_clean_files= ac_config_libobj_dir=. LIBOBJS= cross_compiling=no subdirs= MFLAGS= MAKEFLAGS= # Identity of this package. PACKAGE_NAME='s3270' PACKAGE_TARNAME='s3270' PACKAGE_VERSION='4.0' PACKAGE_STRING='s3270 4.0' PACKAGE_BUGREPORT='' PACKAGE_URL='' # Factoring default headers for most tests. ac_includes_default="\ #include #ifdef HAVE_SYS_TYPES_H # include #endif #ifdef HAVE_SYS_STAT_H # include #endif #ifdef STDC_HEADERS # include # include #else # ifdef HAVE_STDLIB_H # include # endif #endif #ifdef HAVE_STRING_H # if !defined STDC_HEADERS && defined HAVE_MEMORY_H # include # endif # include #endif #ifdef HAVE_STRINGS_H # include #endif #ifdef HAVE_INTTYPES_H # include #endif #ifdef HAVE_STDINT_H # include #endif #ifdef HAVE_UNISTD_H # include #endif" ac_subst_vars='LTLIBOBJS LIBOBJS LIBX3270DIR EGREP GREP CPP CCOPTIONS host_os host_vendor host_cpu host build_os build_vendor build_cpu build OBJEXT EXEEXT ac_ct_CC CPPFLAGS LDFLAGS CFLAGS CC INSTALL_DATA INSTALL_SCRIPT INSTALL_PROGRAM target_alias host_alias build_alias LIBS ECHO_T ECHO_N ECHO_C DEFS mandir localedir libdir psdir pdfdir dvidir htmldir infodir docdir oldincludedir includedir runstatedir localstatedir sharedstatedir sysconfdir datadir datarootdir libexecdir sbindir bindir program_transform_name prefix exec_prefix PACKAGE_URL PACKAGE_BUGREPORT PACKAGE_STRING PACKAGE_VERSION PACKAGE_TARNAME PACKAGE_NAME PATH_SEPARATOR SHELL' ac_subst_files='' ac_user_opts=' enable_option_checking with_readline enable_dbcs enable_local_process enable_ipv6 ' ac_precious_vars='build_alias host_alias target_alias CC CFLAGS LDFLAGS LIBS CPPFLAGS CPP' # Initialize some variables set by options. ac_init_help= ac_init_version=false ac_unrecognized_opts= ac_unrecognized_sep= # The variables have the same names as the options, with # dashes changed to underlines. cache_file=/dev/null exec_prefix=NONE no_create= no_recursion= prefix=NONE program_prefix=NONE program_suffix=NONE program_transform_name=s,x,x, silent= site= srcdir= verbose= x_includes=NONE x_libraries=NONE # Installation directory options. # These are left unexpanded so users can "make install exec_prefix=/foo" # and all the variables that are supposed to be based on exec_prefix # by default will actually change. # Use braces instead of parens because sh, perl, etc. also accept them. # (The list follows the same order as the GNU Coding Standards.) bindir='${exec_prefix}/bin' sbindir='${exec_prefix}/sbin' libexecdir='${exec_prefix}/libexec' datarootdir='${prefix}/share' datadir='${datarootdir}' sysconfdir='${prefix}/etc' sharedstatedir='${prefix}/com' localstatedir='${prefix}/var' runstatedir='${localstatedir}/run' includedir='${prefix}/include' oldincludedir='/usr/include' docdir='${datarootdir}/doc/${PACKAGE_TARNAME}' infodir='${datarootdir}/info' htmldir='${docdir}' dvidir='${docdir}' pdfdir='${docdir}' psdir='${docdir}' libdir='${exec_prefix}/lib' localedir='${datarootdir}/locale' mandir='${datarootdir}/man' ac_prev= ac_dashdash= for ac_option do # If the previous option needs an argument, assign it. if test -n "$ac_prev"; then eval $ac_prev=\$ac_option ac_prev= continue fi case $ac_option in *=?*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;; *=) ac_optarg= ;; *) ac_optarg=yes ;; esac # Accept the important Cygnus configure options, so we can diagnose typos. case $ac_dashdash$ac_option in --) ac_dashdash=yes ;; -bindir | --bindir | --bindi | --bind | --bin | --bi) ac_prev=bindir ;; -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*) bindir=$ac_optarg ;; -build | --build | --buil | --bui | --bu) ac_prev=build_alias ;; -build=* | --build=* | --buil=* | --bui=* | --bu=*) build_alias=$ac_optarg ;; -cache-file | --cache-file | --cache-fil | --cache-fi \ | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) ac_prev=cache_file ;; -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) cache_file=$ac_optarg ;; --config-cache | -C) cache_file=config.cache ;; -datadir | --datadir | --datadi | --datad) ac_prev=datadir ;; -datadir=* | --datadir=* | --datadi=* | --datad=*) datadir=$ac_optarg ;; -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \ | --dataroo | --dataro | --datar) ac_prev=datarootdir ;; -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \ | --dataroot=* | --dataroo=* | --dataro=* | --datar=*) datarootdir=$ac_optarg ;; -disable-* | --disable-*) ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid feature name: $ac_useropt" ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "enable_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--disable-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval enable_$ac_useropt=no ;; -docdir | --docdir | --docdi | --doc | --do) ac_prev=docdir ;; -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*) docdir=$ac_optarg ;; -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv) ac_prev=dvidir ;; -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*) dvidir=$ac_optarg ;; -enable-* | --enable-*) ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid feature name: $ac_useropt" ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "enable_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--enable-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval enable_$ac_useropt=\$ac_optarg ;; -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ | --exec | --exe | --ex) ac_prev=exec_prefix ;; -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \ | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \ | --exec=* | --exe=* | --ex=*) exec_prefix=$ac_optarg ;; -gas | --gas | --ga | --g) # Obsolete; use --with-gas. with_gas=yes ;; -help | --help | --hel | --he | -h) ac_init_help=long ;; -help=r* | --help=r* | --hel=r* | --he=r* | -hr*) ac_init_help=recursive ;; -help=s* | --help=s* | --hel=s* | --he=s* | -hs*) ac_init_help=short ;; -host | --host | --hos | --ho) ac_prev=host_alias ;; -host=* | --host=* | --hos=* | --ho=*) host_alias=$ac_optarg ;; -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht) ac_prev=htmldir ;; -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \ | --ht=*) htmldir=$ac_optarg ;; -includedir | --includedir | --includedi | --included | --include \ | --includ | --inclu | --incl | --inc) ac_prev=includedir ;; -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \ | --includ=* | --inclu=* | --incl=* | --inc=*) includedir=$ac_optarg ;; -infodir | --infodir | --infodi | --infod | --info | --inf) ac_prev=infodir ;; -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*) infodir=$ac_optarg ;; -libdir | --libdir | --libdi | --libd) ac_prev=libdir ;; -libdir=* | --libdir=* | --libdi=* | --libd=*) libdir=$ac_optarg ;; -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \ | --libexe | --libex | --libe) ac_prev=libexecdir ;; -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \ | --libexe=* | --libex=* | --libe=*) libexecdir=$ac_optarg ;; -localedir | --localedir | --localedi | --localed | --locale) ac_prev=localedir ;; -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*) localedir=$ac_optarg ;; -localstatedir | --localstatedir | --localstatedi | --localstated \ | --localstate | --localstat | --localsta | --localst | --locals) ac_prev=localstatedir ;; -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*) localstatedir=$ac_optarg ;; -mandir | --mandir | --mandi | --mand | --man | --ma | --m) ac_prev=mandir ;; -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*) mandir=$ac_optarg ;; -nfp | --nfp | --nf) # Obsolete; use --without-fp. with_fp=no ;; -no-create | --no-create | --no-creat | --no-crea | --no-cre \ | --no-cr | --no-c | -n) no_create=yes ;; -no-recursion | --no-recursion | --no-recursio | --no-recursi \ | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) no_recursion=yes ;; -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \ | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \ | --oldin | --oldi | --old | --ol | --o) ac_prev=oldincludedir ;; -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \ | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \ | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*) oldincludedir=$ac_optarg ;; -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) ac_prev=prefix ;; -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) prefix=$ac_optarg ;; -program-prefix | --program-prefix | --program-prefi | --program-pref \ | --program-pre | --program-pr | --program-p) ac_prev=program_prefix ;; -program-prefix=* | --program-prefix=* | --program-prefi=* \ | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*) program_prefix=$ac_optarg ;; -program-suffix | --program-suffix | --program-suffi | --program-suff \ | --program-suf | --program-su | --program-s) ac_prev=program_suffix ;; -program-suffix=* | --program-suffix=* | --program-suffi=* \ | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*) program_suffix=$ac_optarg ;; -program-transform-name | --program-transform-name \ | --program-transform-nam | --program-transform-na \ | --program-transform-n | --program-transform- \ | --program-transform | --program-transfor \ | --program-transfo | --program-transf \ | --program-trans | --program-tran \ | --progr-tra | --program-tr | --program-t) ac_prev=program_transform_name ;; -program-transform-name=* | --program-transform-name=* \ | --program-transform-nam=* | --program-transform-na=* \ | --program-transform-n=* | --program-transform-=* \ | --program-transform=* | --program-transfor=* \ | --program-transfo=* | --program-transf=* \ | --program-trans=* | --program-tran=* \ | --progr-tra=* | --program-tr=* | --program-t=*) program_transform_name=$ac_optarg ;; -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd) ac_prev=pdfdir ;; -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*) pdfdir=$ac_optarg ;; -psdir | --psdir | --psdi | --psd | --ps) ac_prev=psdir ;; -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*) psdir=$ac_optarg ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil) silent=yes ;; -runstatedir | --runstatedir | --runstatedi | --runstated \ | --runstate | --runstat | --runsta | --runst | --runs \ | --run | --ru | --r) ac_prev=runstatedir ;; -runstatedir=* | --runstatedir=* | --runstatedi=* | --runstated=* \ | --runstate=* | --runstat=* | --runsta=* | --runst=* | --runs=* \ | --run=* | --ru=* | --r=*) runstatedir=$ac_optarg ;; -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) ac_prev=sbindir ;; -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ | --sbi=* | --sb=*) sbindir=$ac_optarg ;; -sharedstatedir | --sharedstatedir | --sharedstatedi \ | --sharedstated | --sharedstate | --sharedstat | --sharedsta \ | --sharedst | --shareds | --shared | --share | --shar \ | --sha | --sh) ac_prev=sharedstatedir ;; -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \ | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \ | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \ | --sha=* | --sh=*) sharedstatedir=$ac_optarg ;; -site | --site | --sit) ac_prev=site ;; -site=* | --site=* | --sit=*) site=$ac_optarg ;; -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) ac_prev=srcdir ;; -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) srcdir=$ac_optarg ;; -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \ | --syscon | --sysco | --sysc | --sys | --sy) ac_prev=sysconfdir ;; -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \ | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*) sysconfdir=$ac_optarg ;; -target | --target | --targe | --targ | --tar | --ta | --t) ac_prev=target_alias ;; -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) target_alias=$ac_optarg ;; -v | -verbose | --verbose | --verbos | --verbo | --verb) verbose=yes ;; -version | --version | --versio | --versi | --vers | -V) ac_init_version=: ;; -with-* | --with-*) ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid package name: $ac_useropt" ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "with_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--with-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval with_$ac_useropt=\$ac_optarg ;; -without-* | --without-*) ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid package name: $ac_useropt" ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "with_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--without-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval with_$ac_useropt=no ;; --x) # Obsolete; use --with-x. with_x=yes ;; -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \ | --x-incl | --x-inc | --x-in | --x-i) ac_prev=x_includes ;; -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \ | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*) x_includes=$ac_optarg ;; -x-libraries | --x-libraries | --x-librarie | --x-librari \ | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l) ac_prev=x_libraries ;; -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \ | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) x_libraries=$ac_optarg ;; -*) as_fn_error $? "unrecognized option: \`$ac_option' Try \`$0 --help' for more information" ;; *=*) ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='` # Reject names that are not valid shell variable names. case $ac_envvar in #( '' | [0-9]* | *[!_$as_cr_alnum]* ) as_fn_error $? "invalid variable name: \`$ac_envvar'" ;; esac eval $ac_envvar=\$ac_optarg export $ac_envvar ;; *) # FIXME: should be removed in autoconf 3.0. $as_echo "$as_me: WARNING: you should use --build, --host, --target" >&2 expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && $as_echo "$as_me: WARNING: invalid host type: $ac_option" >&2 : "${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}" ;; esac done if test -n "$ac_prev"; then ac_option=--`echo $ac_prev | sed 's/_/-/g'` as_fn_error $? "missing argument to $ac_option" fi if test -n "$ac_unrecognized_opts"; then case $enable_option_checking in no) ;; fatal) as_fn_error $? "unrecognized options: $ac_unrecognized_opts" ;; *) $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;; esac fi # Check all directory arguments for consistency. for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \ datadir sysconfdir sharedstatedir localstatedir includedir \ oldincludedir docdir infodir htmldir dvidir pdfdir psdir \ libdir localedir mandir runstatedir do eval ac_val=\$$ac_var # Remove trailing slashes. case $ac_val in */ ) ac_val=`expr "X$ac_val" : 'X\(.*[^/]\)' \| "X$ac_val" : 'X\(.*\)'` eval $ac_var=\$ac_val;; esac # Be sure to have absolute directory names. case $ac_val in [\\/$]* | ?:[\\/]* ) continue;; NONE | '' ) case $ac_var in *prefix ) continue;; esac;; esac as_fn_error $? "expected an absolute directory name for --$ac_var: $ac_val" done # There might be people who depend on the old broken behavior: `$host' # used to hold the argument of --host etc. # FIXME: To remove some day. build=$build_alias host=$host_alias target=$target_alias # FIXME: To remove some day. if test "x$host_alias" != x; then if test "x$build_alias" = x; then cross_compiling=maybe elif test "x$build_alias" != "x$host_alias"; then cross_compiling=yes fi fi ac_tool_prefix= test -n "$host_alias" && ac_tool_prefix=$host_alias- test "$silent" = yes && exec 6>/dev/null ac_pwd=`pwd` && test -n "$ac_pwd" && ac_ls_di=`ls -di .` && ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` || as_fn_error $? "working directory cannot be determined" test "X$ac_ls_di" = "X$ac_pwd_ls_di" || as_fn_error $? "pwd does not report name of working directory" # Find the source files, if location was not specified. if test -z "$srcdir"; then ac_srcdir_defaulted=yes # Try the directory containing this script, then the parent directory. ac_confdir=`$as_dirname -- "$as_myself" || $as_expr X"$as_myself" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_myself" : 'X\(//\)[^/]' \| \ X"$as_myself" : 'X\(//\)$' \| \ X"$as_myself" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$as_myself" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` srcdir=$ac_confdir if test ! -r "$srcdir/$ac_unique_file"; then srcdir=.. fi else ac_srcdir_defaulted=no fi if test ! -r "$srcdir/$ac_unique_file"; then test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .." as_fn_error $? "cannot find sources ($ac_unique_file) in $srcdir" fi ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work" ac_abs_confdir=`( cd "$srcdir" && test -r "./$ac_unique_file" || as_fn_error $? "$ac_msg" pwd)` # When building in place, set srcdir=. if test "$ac_abs_confdir" = "$ac_pwd"; then srcdir=. fi # Remove unnecessary trailing slashes from srcdir. # Double slashes in file names in object file debugging info # mess up M-x gdb in Emacs. case $srcdir in */) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;; esac for ac_var in $ac_precious_vars; do eval ac_env_${ac_var}_set=\${${ac_var}+set} eval ac_env_${ac_var}_value=\$${ac_var} eval ac_cv_env_${ac_var}_set=\${${ac_var}+set} eval ac_cv_env_${ac_var}_value=\$${ac_var} done # # Report the --help message. # if test "$ac_init_help" = "long"; then # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF \`configure' configures s3270 4.0 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... To assign environment variables (e.g., CC, CFLAGS...), specify them as VAR=VALUE. See below for descriptions of some of the useful variables. Defaults for the options are specified in brackets. Configuration: -h, --help display this help and exit --help=short display options specific to this package --help=recursive display the short help of all the included packages -V, --version display version information and exit -q, --quiet, --silent do not print \`checking ...' messages --cache-file=FILE cache test results in FILE [disabled] -C, --config-cache alias for \`--cache-file=config.cache' -n, --no-create do not create output files --srcdir=DIR find the sources in DIR [configure dir or \`..'] Installation directories: --prefix=PREFIX install architecture-independent files in PREFIX [$ac_default_prefix] --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX [PREFIX] By default, \`make install' will install all the files in \`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify an installation prefix other than \`$ac_default_prefix' using \`--prefix', for instance \`--prefix=\$HOME'. For better control, use the options below. Fine tuning of the installation directories: --bindir=DIR user executables [EPREFIX/bin] --sbindir=DIR system admin executables [EPREFIX/sbin] --libexecdir=DIR program executables [EPREFIX/libexec] --sysconfdir=DIR read-only single-machine data [PREFIX/etc] --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] --localstatedir=DIR modifiable single-machine data [PREFIX/var] --runstatedir=DIR modifiable per-process data [LOCALSTATEDIR/run] --libdir=DIR object code libraries [EPREFIX/lib] --includedir=DIR C header files [PREFIX/include] --oldincludedir=DIR C header files for non-gcc [/usr/include] --datarootdir=DIR read-only arch.-independent data root [PREFIX/share] --datadir=DIR read-only architecture-independent data [DATAROOTDIR] --infodir=DIR info documentation [DATAROOTDIR/info] --localedir=DIR locale-dependent data [DATAROOTDIR/locale] --mandir=DIR man documentation [DATAROOTDIR/man] --docdir=DIR documentation root [DATAROOTDIR/doc/s3270] --htmldir=DIR html documentation [DOCDIR] --dvidir=DIR dvi documentation [DOCDIR] --pdfdir=DIR pdf documentation [DOCDIR] --psdir=DIR ps documentation [DOCDIR] _ACEOF cat <<\_ACEOF System types: --build=BUILD configure for building on BUILD [guessed] --host=HOST cross-compile to build programs to run on HOST [BUILD] _ACEOF fi if test -n "$ac_init_help"; then case $ac_init_help in short | recursive ) echo "Configuration of s3270 4.0:";; esac cat <<\_ACEOF Optional Features: --disable-option-checking ignore unrecognized --enable/--with options --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) --enable-FEATURE[=ARG] include FEATURE [ARG=yes] --disable-dbcs leave out DBCS support --disable-local-process leave out local process support --disable-ipv6 leave out IPv6 support Optional Packages: --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) --without-readline Don't use the readline library Some influential environment variables: CC C compiler command CFLAGS C compiler flags LDFLAGS linker flags, e.g. -L if you have libraries in a nonstandard directory LIBS libraries to pass to the linker, e.g. -l CPPFLAGS (Objective) C/C++ preprocessor flags, e.g. -I if you have headers in a nonstandard directory CPP C preprocessor Use these variables to override the choices made by `configure' or to help it to find libraries and programs with nonstandard names/locations. Report bugs to the package provider. _ACEOF ac_status=$? fi if test "$ac_init_help" = "recursive"; then # If there are subdirs, report their specific --help. for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue test -d "$ac_dir" || { cd "$srcdir" && ac_pwd=`pwd` && srcdir=. && test -d "$ac_dir"; } || continue ac_builddir=. case "$ac_dir" in .) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` # A ".." for each directory in $ac_dir_suffix. ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` case $ac_top_builddir_sub in "") ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; esac ;; esac ac_abs_top_builddir=$ac_pwd ac_abs_builddir=$ac_pwd$ac_dir_suffix # for backward compatibility: ac_top_builddir=$ac_top_build_prefix case $srcdir in .) # We are building in place. ac_srcdir=. ac_top_srcdir=$ac_top_builddir_sub ac_abs_top_srcdir=$ac_pwd ;; [\\/]* | ?:[\\/]* ) # Absolute name. ac_srcdir=$srcdir$ac_dir_suffix; ac_top_srcdir=$srcdir ac_abs_top_srcdir=$srcdir ;; *) # Relative name. ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix ac_top_srcdir=$ac_top_build_prefix$srcdir ac_abs_top_srcdir=$ac_pwd/$srcdir ;; esac ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix cd "$ac_dir" || { ac_status=$?; continue; } # Check for guested configure. if test -f "$ac_srcdir/configure.gnu"; then echo && $SHELL "$ac_srcdir/configure.gnu" --help=recursive elif test -f "$ac_srcdir/configure"; then echo && $SHELL "$ac_srcdir/configure" --help=recursive else $as_echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2 fi || ac_status=$? cd "$ac_pwd" || { ac_status=$?; break; } done fi test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF s3270 configure 4.0 generated by GNU Autoconf 2.69 Copyright (C) 2012 Free Software Foundation, Inc. This configure script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it. _ACEOF exit fi ## ------------------------ ## ## Autoconf initialization. ## ## ------------------------ ## # ac_fn_c_try_compile LINENO # -------------------------- # Try to compile conftest.$ac_ext, and return whether this succeeded. ac_fn_c_try_compile () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack rm -f conftest.$ac_objext if { { ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_compile") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then : ac_retval=0 else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_c_try_compile # ac_fn_c_try_link LINENO # ----------------------- # Try to link conftest.$ac_ext, and return whether this succeeded. ac_fn_c_try_link () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack rm -f conftest.$ac_objext conftest$ac_exeext if { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || test -x conftest$ac_exeext }; then : ac_retval=0 else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would # interfere with the next link command; also delete a directory that is # left behind by Apple's compiler. We do this before executing the actions. rm -rf conftest.dSYM conftest_ipa8_conftest.oo eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_c_try_link # ac_fn_c_check_func LINENO FUNC VAR # ---------------------------------- # Tests whether FUNC exists, setting the cache variable VAR accordingly ac_fn_c_check_func () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 $as_echo_n "checking for $2... " >&6; } if eval \${$3+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Define $2 to an innocuous variant, in case declares $2. For example, HP-UX 11i declares gettimeofday. */ #define $2 innocuous_$2 /* System header to define __stub macros and hopefully few prototypes, which can conflict with char $2 (); below. Prefer to if __STDC__ is defined, since exists even on freestanding compilers. */ #ifdef __STDC__ # include #else # include #endif #undef $2 /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char $2 (); /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined __stub_$2 || defined __stub___$2 choke me #endif int main () { return $2 (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : eval "$3=yes" else eval "$3=no" fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi eval ac_res=\$$3 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } # ac_fn_c_check_func # ac_fn_c_try_cpp LINENO # ---------------------- # Try to preprocess conftest.$ac_ext, and return whether this succeeded. ac_fn_c_try_cpp () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack if { { ac_try="$ac_cpp conftest.$ac_ext" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } > conftest.i && { test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || test ! -s conftest.err }; then : ac_retval=0 else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_c_try_cpp # ac_fn_c_check_header_mongrel LINENO HEADER VAR INCLUDES # ------------------------------------------------------- # Tests whether HEADER exists, giving a warning if it cannot be compiled using # the include files in INCLUDES and setting the cache variable VAR # accordingly. ac_fn_c_check_header_mongrel () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack if eval \${$3+:} false; then : { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 $as_echo_n "checking for $2... " >&6; } if eval \${$3+:} false; then : $as_echo_n "(cached) " >&6 fi eval ac_res=\$$3 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } else # Is the header compilable? { $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 usability" >&5 $as_echo_n "checking $2 usability... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 #include <$2> _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_header_compiler=yes else ac_header_compiler=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_compiler" >&5 $as_echo "$ac_header_compiler" >&6; } # Is the header present? { $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 presence" >&5 $as_echo_n "checking $2 presence... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include <$2> _ACEOF if ac_fn_c_try_cpp "$LINENO"; then : ac_header_preproc=yes else ac_header_preproc=no fi rm -f conftest.err conftest.i conftest.$ac_ext { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_preproc" >&5 $as_echo "$ac_header_preproc" >&6; } # So? What about this header? case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in #(( yes:no: ) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&5 $as_echo "$as_me: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5 $as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;} ;; no:yes:* ) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: present but cannot be compiled" >&5 $as_echo "$as_me: WARNING: $2: present but cannot be compiled" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: check for missing prerequisite headers?" >&5 $as_echo "$as_me: WARNING: $2: check for missing prerequisite headers?" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: see the Autoconf documentation" >&5 $as_echo "$as_me: WARNING: $2: see the Autoconf documentation" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&5 $as_echo "$as_me: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5 $as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;} ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 $as_echo_n "checking for $2... " >&6; } if eval \${$3+:} false; then : $as_echo_n "(cached) " >&6 else eval "$3=\$ac_header_compiler" fi eval ac_res=\$$3 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } fi eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } # ac_fn_c_check_header_mongrel # ac_fn_c_try_run LINENO # ---------------------- # Try to link conftest.$ac_ext, and return whether this succeeded. Assumes # that executables *can* be run. ac_fn_c_try_run () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack if { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { ac_try='./conftest$ac_exeext' { { case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_try") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; }; then : ac_retval=0 else $as_echo "$as_me: program exited with status $ac_status" >&5 $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=$ac_status fi rm -rf conftest.dSYM conftest_ipa8_conftest.oo eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_c_try_run # ac_fn_c_check_header_compile LINENO HEADER VAR INCLUDES # ------------------------------------------------------- # Tests whether HEADER exists and can be compiled using the include files in # INCLUDES, setting the cache variable VAR accordingly. ac_fn_c_check_header_compile () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 $as_echo_n "checking for $2... " >&6; } if eval \${$3+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 #include <$2> _ACEOF if ac_fn_c_try_compile "$LINENO"; then : eval "$3=yes" else eval "$3=no" fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi eval ac_res=\$$3 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } # ac_fn_c_check_header_compile cat >config.log <<_ACEOF This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. It was created by s3270 $as_me 4.0, which was generated by GNU Autoconf 2.69. Invocation command line was $ $0 $@ _ACEOF exec 5>>config.log { cat <<_ASUNAME ## --------- ## ## Platform. ## ## --------- ## hostname = `(hostname || uname -n) 2>/dev/null | sed 1q` uname -m = `(uname -m) 2>/dev/null || echo unknown` uname -r = `(uname -r) 2>/dev/null || echo unknown` uname -s = `(uname -s) 2>/dev/null || echo unknown` uname -v = `(uname -v) 2>/dev/null || echo unknown` /usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown` /bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown` /bin/arch = `(/bin/arch) 2>/dev/null || echo unknown` /usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown` /usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown` /usr/bin/hostinfo = `(/usr/bin/hostinfo) 2>/dev/null || echo unknown` /bin/machine = `(/bin/machine) 2>/dev/null || echo unknown` /usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown` /bin/universe = `(/bin/universe) 2>/dev/null || echo unknown` _ASUNAME as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. $as_echo "PATH: $as_dir" done IFS=$as_save_IFS } >&5 cat >&5 <<_ACEOF ## ----------- ## ## Core tests. ## ## ----------- ## _ACEOF # Keep a trace of the command line. # Strip out --no-create and --no-recursion so they do not pile up. # Strip out --silent because we don't want to record it for future runs. # Also quote any args containing shell meta-characters. # Make two passes to allow for proper duplicate-argument suppression. ac_configure_args= ac_configure_args0= ac_configure_args1= ac_must_keep_next=false for ac_pass in 1 2 do for ac_arg do case $ac_arg in -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil) continue ;; *\'*) ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; esac case $ac_pass in 1) as_fn_append ac_configure_args0 " '$ac_arg'" ;; 2) as_fn_append ac_configure_args1 " '$ac_arg'" if test $ac_must_keep_next = true; then ac_must_keep_next=false # Got value, back to normal. else case $ac_arg in *=* | --config-cache | -C | -disable-* | --disable-* \ | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \ | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \ | -with-* | --with-* | -without-* | --without-* | --x) case "$ac_configure_args0 " in "$ac_configure_args1"*" '$ac_arg' "* ) continue ;; esac ;; -* ) ac_must_keep_next=true ;; esac fi as_fn_append ac_configure_args " '$ac_arg'" ;; esac done done { ac_configure_args0=; unset ac_configure_args0;} { ac_configure_args1=; unset ac_configure_args1;} # When interrupted or exit'd, cleanup temporary files, and complete # config.log. We remove comments because anyway the quotes in there # would cause problems or look ugly. # WARNING: Use '\'' to represent an apostrophe within the trap. # WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug. trap 'exit_status=$? # Save into config.log some information that might help in debugging. { echo $as_echo "## ---------------- ## ## Cache variables. ## ## ---------------- ##" echo # The following way of writing the cache mishandles newlines in values, ( for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do eval ac_val=\$$ac_var case $ac_val in #( *${as_nl}*) case $ac_var in #( *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 $as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; esac case $ac_var in #( _ | IFS | as_nl) ;; #( BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( *) { eval $ac_var=; unset $ac_var;} ;; esac ;; esac done (set) 2>&1 | case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #( *${as_nl}ac_space=\ *) sed -n \ "s/'\''/'\''\\\\'\'''\''/g; s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p" ;; #( *) sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" ;; esac | sort ) echo $as_echo "## ----------------- ## ## Output variables. ## ## ----------------- ##" echo for ac_var in $ac_subst_vars do eval ac_val=\$$ac_var case $ac_val in *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; esac $as_echo "$ac_var='\''$ac_val'\''" done | sort echo if test -n "$ac_subst_files"; then $as_echo "## ------------------- ## ## File substitutions. ## ## ------------------- ##" echo for ac_var in $ac_subst_files do eval ac_val=\$$ac_var case $ac_val in *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; esac $as_echo "$ac_var='\''$ac_val'\''" done | sort echo fi if test -s confdefs.h; then $as_echo "## ----------- ## ## confdefs.h. ## ## ----------- ##" echo cat confdefs.h echo fi test "$ac_signal" != 0 && $as_echo "$as_me: caught signal $ac_signal" $as_echo "$as_me: exit $exit_status" } >&5 rm -f core *.core core.conftest.* && rm -f -r conftest* confdefs* conf$$* $ac_clean_files && exit $exit_status ' 0 for ac_signal in 1 2 13 15; do trap 'ac_signal='$ac_signal'; as_fn_exit 1' $ac_signal done ac_signal=0 # confdefs.h avoids OS command line length limits that DEFS can exceed. rm -f -r conftest* confdefs.h $as_echo "/* confdefs.h */" > confdefs.h # Predefined preprocessor variables. cat >>confdefs.h <<_ACEOF #define PACKAGE_NAME "$PACKAGE_NAME" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_TARNAME "$PACKAGE_TARNAME" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_VERSION "$PACKAGE_VERSION" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_STRING "$PACKAGE_STRING" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_URL "$PACKAGE_URL" _ACEOF # Let the site file select an alternate cache file if it wants to. # Prefer an explicitly selected file to automatically selected ones. ac_site_file1=NONE ac_site_file2=NONE if test -n "$CONFIG_SITE"; then # We do not want a PATH search for config.site. case $CONFIG_SITE in #(( -*) ac_site_file1=./$CONFIG_SITE;; */*) ac_site_file1=$CONFIG_SITE;; *) ac_site_file1=./$CONFIG_SITE;; esac elif test "x$prefix" != xNONE; then ac_site_file1=$prefix/share/config.site ac_site_file2=$prefix/etc/config.site else ac_site_file1=$ac_default_prefix/share/config.site ac_site_file2=$ac_default_prefix/etc/config.site fi for ac_site_file in "$ac_site_file1" "$ac_site_file2" do test "x$ac_site_file" = xNONE && continue if test /dev/null != "$ac_site_file" && test -r "$ac_site_file"; then { $as_echo "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5 $as_echo "$as_me: loading site script $ac_site_file" >&6;} sed 's/^/| /' "$ac_site_file" >&5 . "$ac_site_file" \ || { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "failed to load site script $ac_site_file See \`config.log' for more details" "$LINENO" 5; } fi done if test -r "$cache_file"; then # Some versions of bash will fail to source /dev/null (special files # actually), so we avoid doing that. DJGPP emulates it as a regular file. if test /dev/null != "$cache_file" && test -f "$cache_file"; then { $as_echo "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5 $as_echo "$as_me: loading cache $cache_file" >&6;} case $cache_file in [\\/]* | ?:[\\/]* ) . "$cache_file";; *) . "./$cache_file";; esac fi else { $as_echo "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5 $as_echo "$as_me: creating cache $cache_file" >&6;} >$cache_file fi # Check that the precious variables saved in the cache have kept the same # value. ac_cache_corrupted=false for ac_var in $ac_precious_vars; do eval ac_old_set=\$ac_cv_env_${ac_var}_set eval ac_new_set=\$ac_env_${ac_var}_set eval ac_old_val=\$ac_cv_env_${ac_var}_value eval ac_new_val=\$ac_env_${ac_var}_value case $ac_old_set,$ac_new_set in set,) { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 $as_echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} ac_cache_corrupted=: ;; ,set) { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was not set in the previous run" >&5 $as_echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} ac_cache_corrupted=: ;; ,);; *) if test "x$ac_old_val" != "x$ac_new_val"; then # differences in whitespace do not lead to failure. ac_old_val_w=`echo x $ac_old_val` ac_new_val_w=`echo x $ac_new_val` if test "$ac_old_val_w" != "$ac_new_val_w"; then { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' has changed since the previous run:" >&5 $as_echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} ac_cache_corrupted=: else { $as_echo "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5 $as_echo "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;} eval $ac_var=\$ac_old_val fi { $as_echo "$as_me:${as_lineno-$LINENO}: former value: \`$ac_old_val'" >&5 $as_echo "$as_me: former value: \`$ac_old_val'" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: current value: \`$ac_new_val'" >&5 $as_echo "$as_me: current value: \`$ac_new_val'" >&2;} fi;; esac # Pass precious variables to config.status. if test "$ac_new_set" = set; then case $ac_new_val in *\'*) ac_arg=$ac_var=`$as_echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; *) ac_arg=$ac_var=$ac_new_val ;; esac case " $ac_configure_args " in *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy. *) as_fn_append ac_configure_args " '$ac_arg'" ;; esac fi done if $ac_cache_corrupted; then { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5 $as_echo "$as_me: error: changes in the environment can compromise the build" >&2;} as_fn_error $? "run \`make distclean' and/or \`rm $cache_file' and start over" "$LINENO" 5 fi ## -------------------- ## ## Main body of script. ## ## -------------------- ## ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu ac_aux_dir= for ac_dir in "$srcdir" "$srcdir/.." "$srcdir/../.."; do if test -f "$ac_dir/install-sh"; then ac_aux_dir=$ac_dir ac_install_sh="$ac_aux_dir/install-sh -c" break elif test -f "$ac_dir/install.sh"; then ac_aux_dir=$ac_dir ac_install_sh="$ac_aux_dir/install.sh -c" break elif test -f "$ac_dir/shtool"; then ac_aux_dir=$ac_dir ac_install_sh="$ac_aux_dir/shtool install -c" break fi done if test -z "$ac_aux_dir"; then as_fn_error $? "cannot find install-sh, install.sh, or shtool in \"$srcdir\" \"$srcdir/..\" \"$srcdir/../..\"" "$LINENO" 5 fi # These three variables are undocumented and unsupported, # and are intended to be withdrawn in a future Autoconf release. # They can cause serious problems if a builder's source tree is in a directory # whose full name contains unusual characters. ac_config_guess="$SHELL $ac_aux_dir/config.guess" # Please don't use this var. ac_config_sub="$SHELL $ac_aux_dir/config.sub" # Please don't use this var. ac_configure="$SHELL $ac_aux_dir/configure" # Please don't use this var. # Find a good install program. We prefer a C program (faster), # so one script is as good as another. But avoid the broken or # incompatible versions: # SysV /etc/install, /usr/sbin/install # SunOS /usr/etc/install # IRIX /sbin/install # AIX /bin/install # AmigaOS /C/install, which installs bootblocks on floppy discs # AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag # AFS /usr/afsws/bin/install, which mishandles nonexistent args # SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" # OS/2's system install, which has a completely different semantic # ./install, which can be erroneously created by make from ./install.sh. # Reject install programs that cannot install multiple files. { $as_echo "$as_me:${as_lineno-$LINENO}: checking for a BSD-compatible install" >&5 $as_echo_n "checking for a BSD-compatible install... " >&6; } if test -z "$INSTALL"; then if ${ac_cv_path_install+:} false; then : $as_echo_n "(cached) " >&6 else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. # Account for people who put trailing slashes in PATH elements. case $as_dir/ in #(( ./ | .// | /[cC]/* | \ /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \ ?:[\\/]os2[\\/]install[\\/]* | ?:[\\/]OS2[\\/]INSTALL[\\/]* | \ /usr/ucb/* ) ;; *) # OSF1 and SCO ODT 3.0 have their own names for install. # Don't use installbsd from OSF since it installs stuff as root # by default. for ac_prog in ginstall scoinst install; do for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then if test $ac_prog = install && grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then # AIX install. It has an incompatible calling convention. : elif test $ac_prog = install && grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then # program-specific install script used by HP pwplus--don't use. : else rm -rf conftest.one conftest.two conftest.dir echo one > conftest.one echo two > conftest.two mkdir conftest.dir if "$as_dir/$ac_prog$ac_exec_ext" -c conftest.one conftest.two "`pwd`/conftest.dir" && test -s conftest.one && test -s conftest.two && test -s conftest.dir/conftest.one && test -s conftest.dir/conftest.two then ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c" break 3 fi fi fi done done ;; esac done IFS=$as_save_IFS rm -rf conftest.one conftest.two conftest.dir fi if test "${ac_cv_path_install+set}" = set; then INSTALL=$ac_cv_path_install else # As a last resort, use the slow shell script. Don't cache a # value for INSTALL within a source directory, because that will # break other packages using the cache if that directory is # removed, or if the value is a relative name. INSTALL=$ac_install_sh fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $INSTALL" >&5 $as_echo "$INSTALL" >&6; } # Use test -z because SunOS4 sh mishandles braces in ${var-val}. # It thinks the first close brace ends the variable substitution. test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}' test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}' test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. set dummy ${ac_tool_prefix}gcc; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CC="${ac_tool_prefix}gcc" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_CC"; then ac_ct_CC=$CC # Extract the first word of "gcc", so it can be a program name with args. set dummy gcc; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CC="gcc" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 $as_echo "$ac_ct_CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_CC" = x; then CC="" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CC=$ac_ct_CC fi else CC="$ac_cv_prog_CC" fi if test -z "$CC"; then if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. set dummy ${ac_tool_prefix}cc; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CC="${ac_tool_prefix}cc" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi fi if test -z "$CC"; then # Extract the first word of "cc", so it can be a program name with args. set dummy cc; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else ac_prog_rejected=no as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then ac_prog_rejected=yes continue fi ac_cv_prog_CC="cc" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS if test $ac_prog_rejected = yes; then # We found a bogon in the path, so make sure we never use it. set dummy $ac_cv_prog_CC shift if test $# != 0; then # We chose a different compiler from the bogus one. # However, it has the same basename, so the bogon will be chosen # first if we set CC to just the basename; use the full file name. shift ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@" fi fi fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$CC"; then if test -n "$ac_tool_prefix"; then for ac_prog in cl.exe do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CC="$ac_tool_prefix$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$CC" && break done fi if test -z "$CC"; then ac_ct_CC=$CC for ac_prog in cl.exe do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CC="$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 $as_echo "$ac_ct_CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$ac_ct_CC" && break done if test "x$ac_ct_CC" = x; then CC="" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CC=$ac_ct_CC fi fi fi test -z "$CC" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "no acceptable C compiler found in \$PATH See \`config.log' for more details" "$LINENO" 5; } # Provide some information about the compiler. $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5 set X $ac_compile ac_compiler=$2 for ac_option in --version -v -V -qversion; do { { ac_try="$ac_compiler $ac_option >&5" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_compiler $ac_option >&5") 2>conftest.err ac_status=$? if test -s conftest.err; then sed '10a\ ... rest of stderr output deleted ... 10q' conftest.err >conftest.er1 cat conftest.er1 >&5 fi rm -f conftest.er1 conftest.err $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } done cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF ac_clean_files_save=$ac_clean_files ac_clean_files="$ac_clean_files a.out a.out.dSYM a.exe b.out" # Try to create an executable without -o first, disregard a.out. # It will help us diagnose broken compilers, and finding out an intuition # of exeext. { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler works" >&5 $as_echo_n "checking whether the C compiler works... " >&6; } ac_link_default=`$as_echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'` # The possible output files: ac_files="a.out conftest.exe conftest a.exe a_out.exe b.out conftest.*" ac_rmfiles= for ac_file in $ac_files do case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; * ) ac_rmfiles="$ac_rmfiles $ac_file";; esac done rm -f $ac_rmfiles if { { ac_try="$ac_link_default" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link_default") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then : # Autoconf-2.13 could set the ac_cv_exeext variable to `no'. # So ignore a value of `no', otherwise this would lead to `EXEEXT = no' # in a Makefile. We should not override ac_cv_exeext if it was cached, # so that the user can short-circuit this test for compilers unknown to # Autoconf. for ac_file in $ac_files '' do test -f "$ac_file" || continue case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; [ab].out ) # We found the default executable, but exeext='' is most # certainly right. break;; *.* ) if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no; then :; else ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` fi # We set ac_cv_exeext here because the later test for it is not # safe: cross compilers may not add the suffix if given an `-o' # argument, so we may need to know it at that point already. # Even if this section looks crufty: it has the advantage of # actually working. break;; * ) break;; esac done test "$ac_cv_exeext" = no && ac_cv_exeext= else ac_file='' fi if test -z "$ac_file"; then : { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error 77 "C compiler cannot create executables See \`config.log' for more details" "$LINENO" 5; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler default output file name" >&5 $as_echo_n "checking for C compiler default output file name... " >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5 $as_echo "$ac_file" >&6; } ac_exeext=$ac_cv_exeext rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out ac_clean_files=$ac_clean_files_save { $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5 $as_echo_n "checking for suffix of executables... " >&6; } if { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then : # If both `conftest.exe' and `conftest' are `present' (well, observable) # catch `conftest.exe'. For instance with Cygwin, `ls conftest' will # work properly (i.e., refer to `conftest.exe'), while it won't with # `rm'. for ac_file in conftest.exe conftest conftest.*; do test -f "$ac_file" || continue case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` break;; * ) break;; esac done else { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "cannot compute suffix of executables: cannot compile and link See \`config.log' for more details" "$LINENO" 5; } fi rm -f conftest conftest$ac_cv_exeext { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5 $as_echo "$ac_cv_exeext" >&6; } rm -f conftest.$ac_ext EXEEXT=$ac_cv_exeext ac_exeext=$EXEEXT cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main () { FILE *f = fopen ("conftest.out", "w"); return ferror (f) || fclose (f) != 0; ; return 0; } _ACEOF ac_clean_files="$ac_clean_files conftest.out" # Check that the compiler produces executables we can run. If not, either # the compiler is broken, or we cross compile. { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5 $as_echo_n "checking whether we are cross compiling... " >&6; } if test "$cross_compiling" != yes; then { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } if { ac_try='./conftest$ac_cv_exeext' { { case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_try") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; }; then cross_compiling=no else if test "$cross_compiling" = maybe; then cross_compiling=yes else { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "cannot run C compiled programs. If you meant to cross compile, use \`--host'. See \`config.log' for more details" "$LINENO" 5; } fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5 $as_echo "$cross_compiling" >&6; } rm -f conftest.$ac_ext conftest$ac_cv_exeext conftest.out ac_clean_files=$ac_clean_files_save { $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5 $as_echo_n "checking for suffix of object files... " >&6; } if ${ac_cv_objext+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF rm -f conftest.o conftest.obj if { { ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_compile") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then : for ac_file in conftest.o conftest.obj conftest.*; do test -f "$ac_file" || continue; case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM ) ;; *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'` break;; esac done else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "cannot compute suffix of object files: cannot compile See \`config.log' for more details" "$LINENO" 5; } fi rm -f conftest.$ac_cv_objext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5 $as_echo "$ac_cv_objext" >&6; } OBJEXT=$ac_cv_objext ac_objext=$OBJEXT { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C compiler" >&5 $as_echo_n "checking whether we are using the GNU C compiler... " >&6; } if ${ac_cv_c_compiler_gnu+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { #ifndef __GNUC__ choke me #endif ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_compiler_gnu=yes else ac_compiler_gnu=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_cv_c_compiler_gnu=$ac_compiler_gnu fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5 $as_echo "$ac_cv_c_compiler_gnu" >&6; } if test $ac_compiler_gnu = yes; then GCC=yes else GCC= fi ac_test_CFLAGS=${CFLAGS+set} ac_save_CFLAGS=$CFLAGS { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5 $as_echo_n "checking whether $CC accepts -g... " >&6; } if ${ac_cv_prog_cc_g+:} false; then : $as_echo_n "(cached) " >&6 else ac_save_c_werror_flag=$ac_c_werror_flag ac_c_werror_flag=yes ac_cv_prog_cc_g=no CFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_prog_cc_g=yes else CFLAGS="" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : else ac_c_werror_flag=$ac_save_c_werror_flag CFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_prog_cc_g=yes fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_c_werror_flag=$ac_save_c_werror_flag fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5 $as_echo "$ac_cv_prog_cc_g" >&6; } if test "$ac_test_CFLAGS" = set; then CFLAGS=$ac_save_CFLAGS elif test $ac_cv_prog_cc_g = yes; then if test "$GCC" = yes; then CFLAGS="-g -O2" else CFLAGS="-g" fi else if test "$GCC" = yes; then CFLAGS="-O2" else CFLAGS= fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5 $as_echo_n "checking for $CC option to accept ISO C89... " >&6; } if ${ac_cv_prog_cc_c89+:} false; then : $as_echo_n "(cached) " >&6 else ac_cv_prog_cc_c89=no ac_save_CC=$CC cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include struct stat; /* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */ struct buf { int x; }; FILE * (*rcsopen) (struct buf *, struct stat *, int); static char *e (p, i) char **p; int i; { return p[i]; } static char *f (char * (*g) (char **, int), char **p, ...) { char *s; va_list v; va_start (v,p); s = g (p, va_arg (v,int)); va_end (v); return s; } /* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has function prototypes and stuff, but not '\xHH' hex character constants. These don't provoke an error unfortunately, instead are silently treated as 'x'. The following induces an error, until -std is added to get proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an array size at least. It's necessary to write '\x00'==0 to get something that's true only with -std. */ int osf4_cc_array ['\x00' == 0 ? 1 : -1]; /* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters inside strings and character constants. */ #define FOO(x) 'x' int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1]; int test (int i, double x); struct s1 {int (*f) (int a);}; struct s2 {int (*f) (double a);}; int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int); int argc; char **argv; int main () { return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]; ; return 0; } _ACEOF for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \ -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" do CC="$ac_save_CC $ac_arg" if ac_fn_c_try_compile "$LINENO"; then : ac_cv_prog_cc_c89=$ac_arg fi rm -f core conftest.err conftest.$ac_objext test "x$ac_cv_prog_cc_c89" != "xno" && break done rm -f conftest.$ac_ext CC=$ac_save_CC fi # AC_CACHE_VAL case "x$ac_cv_prog_cc_c89" in x) { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 $as_echo "none needed" >&6; } ;; xno) { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 $as_echo "unsupported" >&6; } ;; *) CC="$CC $ac_cv_prog_cc_c89" { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5 $as_echo "$ac_cv_prog_cc_c89" >&6; } ;; esac if test "x$ac_cv_prog_cc_c89" != xno; then : fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu # Make sure we can run config.sub. $SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 || as_fn_error $? "cannot run $SHELL $ac_aux_dir/config.sub" "$LINENO" 5 { $as_echo "$as_me:${as_lineno-$LINENO}: checking build system type" >&5 $as_echo_n "checking build system type... " >&6; } if ${ac_cv_build+:} false; then : $as_echo_n "(cached) " >&6 else ac_build_alias=$build_alias test "x$ac_build_alias" = x && ac_build_alias=`$SHELL "$ac_aux_dir/config.guess"` test "x$ac_build_alias" = x && as_fn_error $? "cannot guess build type; you must specify one" "$LINENO" 5 ac_cv_build=`$SHELL "$ac_aux_dir/config.sub" $ac_build_alias` || as_fn_error $? "$SHELL $ac_aux_dir/config.sub $ac_build_alias failed" "$LINENO" 5 fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build" >&5 $as_echo "$ac_cv_build" >&6; } case $ac_cv_build in *-*-*) ;; *) as_fn_error $? "invalid value of canonical build" "$LINENO" 5;; esac build=$ac_cv_build ac_save_IFS=$IFS; IFS='-' set x $ac_cv_build shift build_cpu=$1 build_vendor=$2 shift; shift # Remember, the first character of IFS is used to create $*, # except with old shells: build_os=$* IFS=$ac_save_IFS case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking host system type" >&5 $as_echo_n "checking host system type... " >&6; } if ${ac_cv_host+:} false; then : $as_echo_n "(cached) " >&6 else if test "x$host_alias" = x; then ac_cv_host=$ac_cv_build else ac_cv_host=`$SHELL "$ac_aux_dir/config.sub" $host_alias` || as_fn_error $? "$SHELL $ac_aux_dir/config.sub $host_alias failed" "$LINENO" 5 fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_host" >&5 $as_echo "$ac_cv_host" >&6; } case $ac_cv_host in *-*-*) ;; *) as_fn_error $? "invalid value of canonical host" "$LINENO" 5;; esac host=$ac_cv_host ac_save_IFS=$IFS; IFS='-' set x $ac_cv_host shift host_cpu=$1 host_vendor=$2 shift; shift # Remember, the first character of IFS is used to create $*, # except with old shells: host_os=$* IFS=$ac_save_IFS case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac ansi="-std=c99 -pedantic" case "$host_os" in *cygwin*) ansi="" ;; solaris2*) CPPFLAGS="$CPPFLAGS -D__EXTENSIONS__" ;; darwin*) CCOPTIONS="$CPPFLAGS -no-cpp-precomp -Wno-deprecated-declarations" ;; linux*) CPPFLAGS="$CPPFLAGS -D_POSIX_SOURCE" ;; esac if test "$GCC" = yes then # Add common gcc options, plus flags for dependency generation. CCOPTIONS="$CCOPTIONS -Wall -Wsign-compare $ansi -Wno-variadic-macros -MMD -MP" fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing forkpty" >&5 $as_echo_n "checking for library containing forkpty... " >&6; } if ${ac_cv_search_forkpty+:} false; then : $as_echo_n "(cached) " >&6 else ac_func_search_save_LIBS=$LIBS cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char forkpty (); int main () { return forkpty (); ; return 0; } _ACEOF for ac_lib in '' util; do if test -z "$ac_lib"; then ac_res="none required" else ac_res=-l$ac_lib LIBS="-l$ac_lib $ac_func_search_save_LIBS" fi if ac_fn_c_try_link "$LINENO"; then : ac_cv_search_forkpty=$ac_res fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext if ${ac_cv_search_forkpty+:} false; then : break fi done if ${ac_cv_search_forkpty+:} false; then : else ac_cv_search_forkpty=no fi rm conftest.$ac_ext LIBS=$ac_func_search_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_forkpty" >&5 $as_echo "$ac_cv_search_forkpty" >&6; } ac_res=$ac_cv_search_forkpty if test "$ac_res" != no; then : test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" fi for ac_func in forkpty do : ac_fn_c_check_func "$LINENO" "forkpty" "ac_cv_func_forkpty" if test "x$ac_cv_func_forkpty" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_FORKPTY 1 _ACEOF fi done { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing gethostbyname" >&5 $as_echo_n "checking for library containing gethostbyname... " >&6; } if ${ac_cv_search_gethostbyname+:} false; then : $as_echo_n "(cached) " >&6 else ac_func_search_save_LIBS=$LIBS cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char gethostbyname (); int main () { return gethostbyname (); ; return 0; } _ACEOF for ac_lib in '' nsl; do if test -z "$ac_lib"; then ac_res="none required" else ac_res=-l$ac_lib LIBS="-l$ac_lib $ac_func_search_save_LIBS" fi if ac_fn_c_try_link "$LINENO"; then : ac_cv_search_gethostbyname=$ac_res fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext if ${ac_cv_search_gethostbyname+:} false; then : break fi done if ${ac_cv_search_gethostbyname+:} false; then : else ac_cv_search_gethostbyname=no fi rm conftest.$ac_ext LIBS=$ac_func_search_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_gethostbyname" >&5 $as_echo "$ac_cv_search_gethostbyname" >&6; } ac_res=$ac_cv_search_gethostbyname if test "$ac_res" != no; then : test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing socket" >&5 $as_echo_n "checking for library containing socket... " >&6; } if ${ac_cv_search_socket+:} false; then : $as_echo_n "(cached) " >&6 else ac_func_search_save_LIBS=$LIBS cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char socket (); int main () { return socket (); ; return 0; } _ACEOF for ac_lib in '' socket; do if test -z "$ac_lib"; then ac_res="none required" else ac_res=-l$ac_lib LIBS="-l$ac_lib $ac_func_search_save_LIBS" fi if ac_fn_c_try_link "$LINENO"; then : ac_cv_search_socket=$ac_res fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext if ${ac_cv_search_socket+:} false; then : break fi done if ${ac_cv_search_socket+:} false; then : else ac_cv_search_socket=no fi rm conftest.$ac_ext LIBS=$ac_func_search_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_socket" >&5 $as_echo "$ac_cv_search_socket" >&6; } ac_res=$ac_cv_search_socket if test "$ac_res" != no; then : test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C preprocessor" >&5 $as_echo_n "checking how to run the C preprocessor... " >&6; } # On Suns, sometimes $CPP names a directory. if test -n "$CPP" && test -d "$CPP"; then CPP= fi if test -z "$CPP"; then if ${ac_cv_prog_CPP+:} false; then : $as_echo_n "(cached) " >&6 else # Double quotes because CPP needs to be expanded for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp" do ac_preproc_ok=false for ac_c_preproc_warn_flag in '' yes do # Use a header file that comes with gcc, so configuring glibc # with a fresh cross-compiler works. # Prefer to if __STDC__ is defined, since # exists even on freestanding compilers. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifdef __STDC__ # include #else # include #endif Syntax error _ACEOF if ac_fn_c_try_cpp "$LINENO"; then : else # Broken: fails on valid input. continue fi rm -f conftest.err conftest.i conftest.$ac_ext # OK, works on sane cases. Now check whether nonexistent headers # can be detected and how. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if ac_fn_c_try_cpp "$LINENO"; then : # Broken: success on invalid input. continue else # Passes both tests. ac_preproc_ok=: break fi rm -f conftest.err conftest.i conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f conftest.i conftest.err conftest.$ac_ext if $ac_preproc_ok; then : break fi done ac_cv_prog_CPP=$CPP fi CPP=$ac_cv_prog_CPP else ac_cv_prog_CPP=$CPP fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CPP" >&5 $as_echo "$CPP" >&6; } ac_preproc_ok=false for ac_c_preproc_warn_flag in '' yes do # Use a header file that comes with gcc, so configuring glibc # with a fresh cross-compiler works. # Prefer to if __STDC__ is defined, since # exists even on freestanding compilers. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifdef __STDC__ # include #else # include #endif Syntax error _ACEOF if ac_fn_c_try_cpp "$LINENO"; then : else # Broken: fails on valid input. continue fi rm -f conftest.err conftest.i conftest.$ac_ext # OK, works on sane cases. Now check whether nonexistent headers # can be detected and how. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if ac_fn_c_try_cpp "$LINENO"; then : # Broken: success on invalid input. continue else # Passes both tests. ac_preproc_ok=: break fi rm -f conftest.err conftest.i conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f conftest.i conftest.err conftest.$ac_ext if $ac_preproc_ok; then : else { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "C preprocessor \"$CPP\" fails sanity check See \`config.log' for more details" "$LINENO" 5; } fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu { $as_echo "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5 $as_echo_n "checking for grep that handles long lines and -e... " >&6; } if ${ac_cv_path_GREP+:} false; then : $as_echo_n "(cached) " >&6 else if test -z "$GREP"; then ac_path_GREP_found=false # Loop through the user's path and test for each of PROGNAME-LIST as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_prog in grep ggrep; do for ac_exec_ext in '' $ac_executable_extensions; do ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext" as_fn_executable_p "$ac_path_GREP" || continue # Check for GNU ac_path_GREP and select it if it is found. # Check for GNU $ac_path_GREP case `"$ac_path_GREP" --version 2>&1` in *GNU*) ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;; *) ac_count=0 $as_echo_n 0123456789 >"conftest.in" while : do cat "conftest.in" "conftest.in" >"conftest.tmp" mv "conftest.tmp" "conftest.in" cp "conftest.in" "conftest.nl" $as_echo 'GREP' >> "conftest.nl" "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break as_fn_arith $ac_count + 1 && ac_count=$as_val if test $ac_count -gt ${ac_path_GREP_max-0}; then # Best one so far, save it but keep looking for a better one ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_max=$ac_count fi # 10*(2^10) chars as input seems more than enough test $ac_count -gt 10 && break done rm -f conftest.in conftest.tmp conftest.nl conftest.out;; esac $ac_path_GREP_found && break 3 done done done IFS=$as_save_IFS if test -z "$ac_cv_path_GREP"; then as_fn_error $? "no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 fi else ac_cv_path_GREP=$GREP fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP" >&5 $as_echo "$ac_cv_path_GREP" >&6; } GREP="$ac_cv_path_GREP" { $as_echo "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5 $as_echo_n "checking for egrep... " >&6; } if ${ac_cv_path_EGREP+:} false; then : $as_echo_n "(cached) " >&6 else if echo a | $GREP -E '(a|b)' >/dev/null 2>&1 then ac_cv_path_EGREP="$GREP -E" else if test -z "$EGREP"; then ac_path_EGREP_found=false # Loop through the user's path and test for each of PROGNAME-LIST as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_prog in egrep; do for ac_exec_ext in '' $ac_executable_extensions; do ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext" as_fn_executable_p "$ac_path_EGREP" || continue # Check for GNU ac_path_EGREP and select it if it is found. # Check for GNU $ac_path_EGREP case `"$ac_path_EGREP" --version 2>&1` in *GNU*) ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;; *) ac_count=0 $as_echo_n 0123456789 >"conftest.in" while : do cat "conftest.in" "conftest.in" >"conftest.tmp" mv "conftest.tmp" "conftest.in" cp "conftest.in" "conftest.nl" $as_echo 'EGREP' >> "conftest.nl" "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break as_fn_arith $ac_count + 1 && ac_count=$as_val if test $ac_count -gt ${ac_path_EGREP_max-0}; then # Best one so far, save it but keep looking for a better one ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_max=$ac_count fi # 10*(2^10) chars as input seems more than enough test $ac_count -gt 10 && break done rm -f conftest.in conftest.tmp conftest.nl conftest.out;; esac $ac_path_EGREP_found && break 3 done done done IFS=$as_save_IFS if test -z "$ac_cv_path_EGREP"; then as_fn_error $? "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 fi else ac_cv_path_EGREP=$EGREP fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5 $as_echo "$ac_cv_path_EGREP" >&6; } EGREP="$ac_cv_path_EGREP" { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5 $as_echo_n "checking for ANSI C header files... " >&6; } if ${ac_cv_header_stdc+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include #include #include int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_header_stdc=yes else ac_cv_header_stdc=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext if test $ac_cv_header_stdc = yes; then # SunOS 4.x string.h does not declare mem*, contrary to ANSI. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "memchr" >/dev/null 2>&1; then : else ac_cv_header_stdc=no fi rm -f conftest* fi if test $ac_cv_header_stdc = yes; then # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "free" >/dev/null 2>&1; then : else ac_cv_header_stdc=no fi rm -f conftest* fi if test $ac_cv_header_stdc = yes; then # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. if test "$cross_compiling" = yes; then : : else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include #if ((' ' & 0x0FF) == 0x020) # define ISLOWER(c) ('a' <= (c) && (c) <= 'z') # define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) #else # define ISLOWER(c) \ (('a' <= (c) && (c) <= 'i') \ || ('j' <= (c) && (c) <= 'r') \ || ('s' <= (c) && (c) <= 'z')) # define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) #endif #define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) int main () { int i; for (i = 0; i < 256; i++) if (XOR (islower (i), ISLOWER (i)) || toupper (i) != TOUPPER (i)) return 2; return 0; } _ACEOF if ac_fn_c_try_run "$LINENO"; then : else ac_cv_header_stdc=no fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdc" >&5 $as_echo "$ac_cv_header_stdc" >&6; } if test $ac_cv_header_stdc = yes; then $as_echo "#define STDC_HEADERS 1" >>confdefs.h fi # On IRIX 5.3, sys/types and inttypes.h are conflicting. for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \ inttypes.h stdint.h unistd.h do : as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default " if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : cat >>confdefs.h <<_ACEOF #define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF fi done for ac_header in sys/select.h do : ac_fn_c_check_header_mongrel "$LINENO" "sys/select.h" "ac_cv_header_sys_select_h" "$ac_includes_default" if test "x$ac_cv_header_sys_select_h" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_SYS_SELECT_H 1 _ACEOF fi done for ac_header in pty.h do : ac_fn_c_check_header_mongrel "$LINENO" "pty.h" "ac_cv_header_pty_h" "$ac_includes_default" if test "x$ac_cv_header_pty_h" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_PTY_H 1 _ACEOF fi done for ac_header in libutil.h do : ac_fn_c_check_header_mongrel "$LINENO" "libutil.h" "ac_cv_header_libutil_h" "$ac_includes_default" if test "x$ac_cv_header_libutil_h" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_LIBUTIL_H 1 _ACEOF fi done for ac_header in util.h do : ac_fn_c_check_header_mongrel "$LINENO" "util.h" "ac_cv_header_util_h" "$ac_includes_default" if test "x$ac_cv_header_util_h" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_UTIL_H 1 _ACEOF fi done for ac_header in getopt.h do : ac_fn_c_check_header_mongrel "$LINENO" "getopt.h" "ac_cv_header_getopt_h" "$ac_includes_default" if test "x$ac_cv_header_getopt_h" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_GETOPT_H 1 _ACEOF fi done if test "$with_readline" != no; then for ac_header in readline/history.h do : ac_fn_c_check_header_mongrel "$LINENO" "readline/history.h" "ac_cv_header_readline_history_h" "$ac_includes_default" if test "x$ac_cv_header_readline_history_h" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_READLINE_HISTORY_H 1 _ACEOF fi done fi # Check whether --with-readline was given. if test "${with_readline+set}" = set; then : withval=$with_readline; fi for ac_func in vasprintf do : ac_fn_c_check_func "$LINENO" "vasprintf" "ac_cv_func_vasprintf" if test "x$ac_cv_func_vasprintf" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_VASPRINTF 1 _ACEOF fi done { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _LARGEFILE_SOURCE value needed for large files" >&5 $as_echo_n "checking for _LARGEFILE_SOURCE value needed for large files... " >&6; } if ${ac_cv_sys_largefile_source+:} false; then : $as_echo_n "(cached) " >&6 else while :; do cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include /* for off_t */ #include int main () { int (*fp) (FILE *, off_t, int) = fseeko; return fseeko (stdin, 0, 0) && fp (stdin, 0, 0); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_sys_largefile_source=no; break fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #define _LARGEFILE_SOURCE 1 #include /* for off_t */ #include int main () { int (*fp) (FILE *, off_t, int) = fseeko; return fseeko (stdin, 0, 0) && fp (stdin, 0, 0); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_sys_largefile_source=1; break fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext ac_cv_sys_largefile_source=unknown break done fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_largefile_source" >&5 $as_echo "$ac_cv_sys_largefile_source" >&6; } case $ac_cv_sys_largefile_source in #( no | unknown) ;; *) cat >>confdefs.h <<_ACEOF #define _LARGEFILE_SOURCE $ac_cv_sys_largefile_source _ACEOF ;; esac rm -rf conftest* # We used to try defining _XOPEN_SOURCE=500 too, to work around a bug # in glibc 2.1.3, but that breaks too many other things. # If you want fseeko and ftello with glibc, upgrade to a fixed glibc. if test $ac_cv_sys_largefile_source != unknown; then $as_echo "#define HAVE_FSEEKO 1" >>confdefs.h fi if test "$with_readline" != no; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking for rl_initialize in -lreadline" >&5 $as_echo_n "checking for rl_initialize in -lreadline... " >&6; } if ${ac_cv_lib_readline_rl_initialize+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lreadline $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char rl_initialize (); int main () { return rl_initialize (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_readline_rl_initialize=yes else ac_cv_lib_readline_rl_initialize=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_readline_rl_initialize" >&5 $as_echo "$ac_cv_lib_readline_rl_initialize" >&6; } if test "x$ac_cv_lib_readline_rl_initialize" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_LIBREADLINE 1 _ACEOF LIBS="-lreadline $LIBS" fi fi LIBX3270DIR='${sysconfdir}/x3270' # Check whether --enable-dbcs was given. if test "${enable_dbcs+set}" = set; then : enableval=$enable_dbcs; fi case "$enable_dbcs" in no) ;; *) $as_echo "#define X3270_DBCS 1" >>confdefs.h ;; esac # Check whether --enable-local_process was given. if test "${enable_local_process+set}" = set; then : enableval=$enable_local_process; fi case "$enable_local_process" in ""|yes) $as_echo "#define X3270_LOCAL_PROCESS 1" >>confdefs.h ;; esac # Check whether --enable-ipv6 was given. if test "${enable_ipv6+set}" = set; then : enableval=$enable_ipv6; fi case "$enable_ipv6" in ""|yes) $as_echo "#define X3270_IPV6 1" >>confdefs.h ;; esac ac_config_headers="$ac_config_headers conf.h" ac_config_files="$ac_config_files Makefile Makefile.obj" cat >confcache <<\_ACEOF # This file is a shell script that caches the results of configure # tests run on this system so they can be shared between configure # scripts and configure runs, see configure's option --config-cache. # It is not useful on other systems. If it contains results you don't # want to keep, you may remove or edit it. # # config.status only pays attention to the cache file if you give it # the --recheck option to rerun configure. # # `ac_cv_env_foo' variables (set or unset) will be overridden when # loading this file, other *unset* `ac_cv_foo' will be assigned the # following values. _ACEOF # The following way of writing the cache mishandles newlines in values, # but we know of no workaround that is simple, portable, and efficient. # So, we kill variables containing newlines. # Ultrix sh set writes to stderr and can't be redirected directly, # and sets the high bit in the cache file unless we assign to the vars. ( for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do eval ac_val=\$$ac_var case $ac_val in #( *${as_nl}*) case $ac_var in #( *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 $as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; esac case $ac_var in #( _ | IFS | as_nl) ;; #( BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( *) { eval $ac_var=; unset $ac_var;} ;; esac ;; esac done (set) 2>&1 | case $as_nl`(ac_space=' '; set) 2>&1` in #( *${as_nl}ac_space=\ *) # `set' does not quote correctly, so add quotes: double-quote # substitution turns \\\\ into \\, and sed turns \\ into \. sed -n \ "s/'/'\\\\''/g; s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" ;; #( *) # `set' quotes correctly as required by POSIX, so do not add quotes. sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" ;; esac | sort ) | sed ' /^ac_cv_env_/b end t clear :clear s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/ t end s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ :end' >>confcache if diff "$cache_file" confcache >/dev/null 2>&1; then :; else if test -w "$cache_file"; then if test "x$cache_file" != "x/dev/null"; then { $as_echo "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5 $as_echo "$as_me: updating cache $cache_file" >&6;} if test ! -f "$cache_file" || test -h "$cache_file"; then cat confcache >"$cache_file" else case $cache_file in #( */* | ?:*) mv -f confcache "$cache_file"$$ && mv -f "$cache_file"$$ "$cache_file" ;; #( *) mv -f confcache "$cache_file" ;; esac fi fi else { $as_echo "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5 $as_echo "$as_me: not updating unwritable cache $cache_file" >&6;} fi fi rm -f confcache test "x$prefix" = xNONE && prefix=$ac_default_prefix # Let make expand exec_prefix. test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' DEFS=-DHAVE_CONFIG_H ac_libobjs= ac_ltlibobjs= U= for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue # 1. Remove the extension, and $U if already installed. ac_script='s/\$U\././;s/\.o$//;s/\.obj$//' ac_i=`$as_echo "$ac_i" | sed "$ac_script"` # 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR # will be set to the directory where LIBOBJS objects are built. as_fn_append ac_libobjs " \${LIBOBJDIR}$ac_i\$U.$ac_objext" as_fn_append ac_ltlibobjs " \${LIBOBJDIR}$ac_i"'$U.lo' done LIBOBJS=$ac_libobjs LTLIBOBJS=$ac_ltlibobjs : "${CONFIG_STATUS=./config.status}" ac_write_fail=0 ac_clean_files_save=$ac_clean_files ac_clean_files="$ac_clean_files $CONFIG_STATUS" { $as_echo "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5 $as_echo "$as_me: creating $CONFIG_STATUS" >&6;} as_write_fail=0 cat >$CONFIG_STATUS <<_ASEOF || as_write_fail=1 #! $SHELL # Generated by $as_me. # Run this file to recreate the current configuration. # Compiler output produced by configure, useful for debugging # configure, is in config.log if it exists. debug=false ac_cs_recheck=false ac_cs_silent=false SHELL=\${CONFIG_SHELL-$SHELL} export SHELL _ASEOF cat >>$CONFIG_STATUS <<\_ASEOF || as_write_fail=1 ## -------------------- ## ## M4sh Initialization. ## ## -------------------- ## # Be more Bourne compatible DUALCASE=1; export DUALCASE # for MKS sh if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST else case `(set -o) 2>/dev/null` in #( *posix*) : set -o posix ;; #( *) : ;; esac fi as_nl=' ' export as_nl # Printing a long string crashes Solaris 7 /usr/bin/printf. as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo # Prefer a ksh shell builtin over an external printf program on Solaris, # but without wasting forks for bash or zsh. if test -z "$BASH_VERSION$ZSH_VERSION" \ && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then as_echo='print -r --' as_echo_n='print -rn --' elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then as_echo='printf %s\n' as_echo_n='printf %s' else if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' as_echo_n='/usr/ucb/echo -n' else as_echo_body='eval expr "X$1" : "X\\(.*\\)"' as_echo_n_body='eval arg=$1; case $arg in #( *"$as_nl"*) expr "X$arg" : "X\\(.*\\)$as_nl"; arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; esac; expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" ' export as_echo_n_body as_echo_n='sh -c $as_echo_n_body as_echo' fi export as_echo_body as_echo='sh -c $as_echo_body as_echo' fi # The user is always right. if test "${PATH_SEPARATOR+set}" != set; then PATH_SEPARATOR=: (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || PATH_SEPARATOR=';' } fi # IFS # We need space, tab and new line, in precisely that order. Quoting is # there to prevent editors from complaining about space-tab. # (If _AS_PATH_WALK were called with IFS unset, it would disable word # splitting by setting IFS to empty value.) IFS=" "" $as_nl" # Find who we are. Look in the path if we contain no directory separator. as_myself= case $0 in #(( *[\\/]* ) as_myself=$0 ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break done IFS=$as_save_IFS ;; esac # We did not find ourselves, most probably we were run as `sh COMMAND' # in which case we are not to be found in the path. if test "x$as_myself" = x; then as_myself=$0 fi if test ! -f "$as_myself"; then $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 exit 1 fi # Unset variables that we do not need and which cause bugs (e.g. in # pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" # suppresses any "Segmentation fault" message there. '((' could # trigger a bug in pdksh 5.2.14. for as_var in BASH_ENV ENV MAIL MAILPATH do eval test x\${$as_var+set} = xset \ && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : done PS1='$ ' PS2='> ' PS4='+ ' # NLS nuisances. LC_ALL=C export LC_ALL LANGUAGE=C export LANGUAGE # CDPATH. (unset CDPATH) >/dev/null 2>&1 && unset CDPATH # as_fn_error STATUS ERROR [LINENO LOG_FD] # ---------------------------------------- # Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are # provided, also output the error to LOG_FD, referencing LINENO. Then exit the # script with STATUS, using 1 if that was 0. as_fn_error () { as_status=$1; test $as_status -eq 0 && as_status=1 if test "$4"; then as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 fi $as_echo "$as_me: error: $2" >&2 as_fn_exit $as_status } # as_fn_error # as_fn_set_status STATUS # ----------------------- # Set $? to STATUS, without forking. as_fn_set_status () { return $1 } # as_fn_set_status # as_fn_exit STATUS # ----------------- # Exit the shell with STATUS, even in a "trap 0" or "set -e" context. as_fn_exit () { set +e as_fn_set_status $1 exit $1 } # as_fn_exit # as_fn_unset VAR # --------------- # Portably unset VAR. as_fn_unset () { { eval $1=; unset $1;} } as_unset=as_fn_unset # as_fn_append VAR VALUE # ---------------------- # Append the text in VALUE to the end of the definition contained in VAR. Take # advantage of any shell optimizations that allow amortized linear growth over # repeated appends, instead of the typical quadratic growth present in naive # implementations. if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : eval 'as_fn_append () { eval $1+=\$2 }' else as_fn_append () { eval $1=\$$1\$2 } fi # as_fn_append # as_fn_arith ARG... # ------------------ # Perform arithmetic evaluation on the ARGs, and store the result in the # global $as_val. Take advantage of shells that can avoid forks. The arguments # must be portable across $(()) and expr. if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : eval 'as_fn_arith () { as_val=$(( $* )) }' else as_fn_arith () { as_val=`expr "$@" || test $? -eq 1` } fi # as_fn_arith if expr a : '\(a\)' >/dev/null 2>&1 && test "X`expr 00001 : '.*\(...\)'`" = X001; then as_expr=expr else as_expr=false fi if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then as_basename=basename else as_basename=false fi if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then as_dirname=dirname else as_dirname=false fi as_me=`$as_basename -- "$0" || $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ X"$0" : 'X\(//\)$' \| \ X"$0" : 'X\(/\)' \| . 2>/dev/null || $as_echo X/"$0" | sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/ q } /^X\/\(\/\/\)$/{ s//\1/ q } /^X\/\(\/\).*/{ s//\1/ q } s/.*/./; q'` # Avoid depending upon Character Ranges. as_cr_letters='abcdefghijklmnopqrstuvwxyz' as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' as_cr_Letters=$as_cr_letters$as_cr_LETTERS as_cr_digits='0123456789' as_cr_alnum=$as_cr_Letters$as_cr_digits ECHO_C= ECHO_N= ECHO_T= case `echo -n x` in #((((( -n*) case `echo 'xy\c'` in *c*) ECHO_T=' ';; # ECHO_T is single tab character. xy) ECHO_C='\c';; *) echo `echo ksh88 bug on AIX 6.1` > /dev/null ECHO_T=' ';; esac;; *) ECHO_N='-n';; esac rm -f conf$$ conf$$.exe conf$$.file if test -d conf$$.dir; then rm -f conf$$.dir/conf$$.file else rm -f conf$$.dir mkdir conf$$.dir 2>/dev/null fi if (echo >conf$$.file) 2>/dev/null; then if ln -s conf$$.file conf$$ 2>/dev/null; then as_ln_s='ln -s' # ... but there are two gotchas: # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. # In both cases, we have to default to `cp -pR'. ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || as_ln_s='cp -pR' elif ln conf$$.file conf$$ 2>/dev/null; then as_ln_s=ln else as_ln_s='cp -pR' fi else as_ln_s='cp -pR' fi rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file rmdir conf$$.dir 2>/dev/null # as_fn_mkdir_p # ------------- # Create "$as_dir" as a directory, including parents if necessary. as_fn_mkdir_p () { case $as_dir in #( -*) as_dir=./$as_dir;; esac test -d "$as_dir" || eval $as_mkdir_p || { as_dirs= while :; do case $as_dir in #( *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( *) as_qdir=$as_dir;; esac as_dirs="'$as_qdir' $as_dirs" as_dir=`$as_dirname -- "$as_dir" || $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_dir" : 'X\(//\)[^/]' \| \ X"$as_dir" : 'X\(//\)$' \| \ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$as_dir" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` test -d "$as_dir" && break done test -z "$as_dirs" || eval "mkdir $as_dirs" } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" } # as_fn_mkdir_p if mkdir -p . 2>/dev/null; then as_mkdir_p='mkdir -p "$as_dir"' else test -d ./-p && rmdir ./-p as_mkdir_p=false fi # as_fn_executable_p FILE # ----------------------- # Test if FILE is an executable regular file. as_fn_executable_p () { test -f "$1" && test -x "$1" } # as_fn_executable_p as_test_x='test -x' as_executable_p=as_fn_executable_p # Sed expression to map a string onto a valid CPP name. as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" # Sed expression to map a string onto a valid variable name. as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" exec 6>&1 ## ----------------------------------- ## ## Main body of $CONFIG_STATUS script. ## ## ----------------------------------- ## _ASEOF test $as_write_fail = 0 && chmod +x $CONFIG_STATUS || ac_write_fail=1 cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # Save the log message, to keep $0 and so on meaningful, and to # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" This file was extended by s3270 $as_me 4.0, which was generated by GNU Autoconf 2.69. Invocation command line was CONFIG_FILES = $CONFIG_FILES CONFIG_HEADERS = $CONFIG_HEADERS CONFIG_LINKS = $CONFIG_LINKS CONFIG_COMMANDS = $CONFIG_COMMANDS $ $0 $@ on `(hostname || uname -n) 2>/dev/null | sed 1q` " _ACEOF case $ac_config_files in *" "*) set x $ac_config_files; shift; ac_config_files=$*;; esac case $ac_config_headers in *" "*) set x $ac_config_headers; shift; ac_config_headers=$*;; esac cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 # Files that config.status was made for. config_files="$ac_config_files" config_headers="$ac_config_headers" _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 ac_cs_usage="\ \`$as_me' instantiates files and other configuration actions from templates according to the current configuration. Unless the files and actions are specified as TAGs, all are instantiated by default. Usage: $0 [OPTION]... [TAG]... -h, --help print this help, then exit -V, --version print version number and configuration settings, then exit --config print configuration, then exit -q, --quiet, --silent do not print progress messages -d, --debug don't remove temporary files --recheck update $as_me by reconfiguring in the same conditions --file=FILE[:TEMPLATE] instantiate the configuration file FILE --header=FILE[:TEMPLATE] instantiate the configuration header FILE Configuration files: $config_files Configuration headers: $config_headers Report bugs to the package provider." _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" ac_cs_version="\\ s3270 config.status 4.0 configured by $0, generated by GNU Autoconf 2.69, with options \\"\$ac_cs_config\\" Copyright (C) 2012 Free Software Foundation, Inc. This config.status script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it." ac_pwd='$ac_pwd' srcdir='$srcdir' INSTALL='$INSTALL' test -n "\$AWK" || AWK=awk _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # The default lists apply if the user does not specify any file. ac_need_defaults=: while test $# != 0 do case $1 in --*=?*) ac_option=`expr "X$1" : 'X\([^=]*\)='` ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'` ac_shift=: ;; --*=) ac_option=`expr "X$1" : 'X\([^=]*\)='` ac_optarg= ac_shift=: ;; *) ac_option=$1 ac_optarg=$2 ac_shift=shift ;; esac case $ac_option in # Handling of the options. -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) ac_cs_recheck=: ;; --version | --versio | --versi | --vers | --ver | --ve | --v | -V ) $as_echo "$ac_cs_version"; exit ;; --config | --confi | --conf | --con | --co | --c ) $as_echo "$ac_cs_config"; exit ;; --debug | --debu | --deb | --de | --d | -d ) debug=: ;; --file | --fil | --fi | --f ) $ac_shift case $ac_optarg in *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; '') as_fn_error $? "missing file argument" ;; esac as_fn_append CONFIG_FILES " '$ac_optarg'" ac_need_defaults=false;; --header | --heade | --head | --hea ) $ac_shift case $ac_optarg in *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; esac as_fn_append CONFIG_HEADERS " '$ac_optarg'" ac_need_defaults=false;; --he | --h) # Conflict between --help and --header as_fn_error $? "ambiguous option: \`$1' Try \`$0 --help' for more information.";; --help | --hel | -h ) $as_echo "$ac_cs_usage"; exit ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil | --si | --s) ac_cs_silent=: ;; # This is an error. -*) as_fn_error $? "unrecognized option: \`$1' Try \`$0 --help' for more information." ;; *) as_fn_append ac_config_targets " $1" ac_need_defaults=false ;; esac shift done ac_configure_extra_args= if $ac_cs_silent; then exec 6>/dev/null ac_configure_extra_args="$ac_configure_extra_args --silent" fi _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 if \$ac_cs_recheck; then set X $SHELL '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion shift \$as_echo "running CONFIG_SHELL=$SHELL \$*" >&6 CONFIG_SHELL='$SHELL' export CONFIG_SHELL exec "\$@" fi _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 exec 5>>config.log { echo sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX ## Running $as_me. ## _ASBOX $as_echo "$ac_log" } >&5 _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # Handling of arguments. for ac_config_target in $ac_config_targets do case $ac_config_target in "conf.h") CONFIG_HEADERS="$CONFIG_HEADERS conf.h" ;; "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;; "Makefile.obj") CONFIG_FILES="$CONFIG_FILES Makefile.obj" ;; *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;; esac done # If the user did not use the arguments to specify the items to instantiate, # then the envvar interface is used. Set only those that are not. # We use the long form for the default assignment because of an extremely # bizarre bug on SunOS 4.1.3. if $ac_need_defaults; then test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers fi # Have a temporary directory for convenience. Make it in the build tree # simply because there is no reason against having it here, and in addition, # creating and moving files from /tmp can sometimes cause problems. # Hook for its removal unless debugging. # Note that there is a small window in which the directory will not be cleaned: # after its creation but before its name has been assigned to `$tmp'. $debug || { tmp= ac_tmp= trap 'exit_status=$? : "${ac_tmp:=$tmp}" { test ! -d "$ac_tmp" || rm -fr "$ac_tmp"; } && exit $exit_status ' 0 trap 'as_fn_exit 1' 1 2 13 15 } # Create a (secure) tmp directory for tmp files. { tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` && test -d "$tmp" } || { tmp=./conf$$-$RANDOM (umask 077 && mkdir "$tmp") } || as_fn_error $? "cannot create a temporary directory in ." "$LINENO" 5 ac_tmp=$tmp # Set up the scripts for CONFIG_FILES section. # No need to generate them if there are no CONFIG_FILES. # This happens for instance with `./config.status config.h'. if test -n "$CONFIG_FILES"; then ac_cr=`echo X | tr X '\015'` # On cygwin, bash can eat \r inside `` if the user requested igncr. # But we know of no other shell where ac_cr would be empty at this # point, so we can use a bashism as a fallback. if test "x$ac_cr" = x; then eval ac_cr=\$\'\\r\' fi ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' /dev/null` if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then ac_cs_awk_cr='\\r' else ac_cs_awk_cr=$ac_cr fi echo 'BEGIN {' >"$ac_tmp/subs1.awk" && _ACEOF { echo "cat >conf$$subs.awk <<_ACEOF" && echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' && echo "_ACEOF" } >conf$$subs.sh || as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 ac_delim_num=`echo "$ac_subst_vars" | grep -c '^'` ac_delim='%!_!# ' for ac_last_try in false false false false false :; do . ./conf$$subs.sh || as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 ac_delim_n=`sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | grep -c X` if test $ac_delim_n = $ac_delim_num; then break elif $ac_last_try; then as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 else ac_delim="$ac_delim!$ac_delim _$ac_delim!! " fi done rm -f conf$$subs.sh cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 cat >>"\$ac_tmp/subs1.awk" <<\\_ACAWK && _ACEOF sed -n ' h s/^/S["/; s/!.*/"]=/ p g s/^[^!]*!// :repl t repl s/'"$ac_delim"'$// t delim :nl h s/\(.\{148\}\)..*/\1/ t more1 s/["\\]/\\&/g; s/^/"/; s/$/\\n"\\/ p n b repl :more1 s/["\\]/\\&/g; s/^/"/; s/$/"\\/ p g s/.\{148\}// t nl :delim h s/\(.\{148\}\)..*/\1/ t more2 s/["\\]/\\&/g; s/^/"/; s/$/"/ p b :more2 s/["\\]/\\&/g; s/^/"/; s/$/"\\/ p g s/.\{148\}// t delim ' >$CONFIG_STATUS || ac_write_fail=1 rm -f conf$$subs.awk cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 _ACAWK cat >>"\$ac_tmp/subs1.awk" <<_ACAWK && for (key in S) S_is_set[key] = 1 FS = "" } { line = $ 0 nfields = split(line, field, "@") substed = 0 len = length(field[1]) for (i = 2; i < nfields; i++) { key = field[i] keylen = length(key) if (S_is_set[key]) { value = S[key] line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3) len += length(value) + length(field[++i]) substed = 1 } else len += 1 + keylen } print line } _ACAWK _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g" else cat fi < "$ac_tmp/subs1.awk" > "$ac_tmp/subs.awk" \ || as_fn_error $? "could not setup config files machinery" "$LINENO" 5 _ACEOF # VPATH may cause trouble with some makes, so we remove sole $(srcdir), # ${srcdir} and @srcdir@ entries from VPATH if srcdir is ".", strip leading and # trailing colons and then remove the whole line if VPATH becomes empty # (actually we leave an empty line to preserve line numbers). if test "x$srcdir" = x.; then ac_vpsub='/^[ ]*VPATH[ ]*=[ ]*/{ h s/// s/^/:/ s/[ ]*$/:/ s/:\$(srcdir):/:/g s/:\${srcdir}:/:/g s/:@srcdir@:/:/g s/^:*// s/:*$// x s/\(=[ ]*\).*/\1/ G s/\n// s/^[^=]*=[ ]*$// }' fi cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 fi # test -n "$CONFIG_FILES" # Set up the scripts for CONFIG_HEADERS section. # No need to generate them if there are no CONFIG_HEADERS. # This happens for instance with `./config.status Makefile'. if test -n "$CONFIG_HEADERS"; then cat >"$ac_tmp/defines.awk" <<\_ACAWK || BEGIN { _ACEOF # Transform confdefs.h into an awk script `defines.awk', embedded as # here-document in config.status, that substitutes the proper values into # config.h.in to produce config.h. # Create a delimiter string that does not exist in confdefs.h, to ease # handling of long lines. ac_delim='%!_!# ' for ac_last_try in false false :; do ac_tt=`sed -n "/$ac_delim/p" confdefs.h` if test -z "$ac_tt"; then break elif $ac_last_try; then as_fn_error $? "could not make $CONFIG_HEADERS" "$LINENO" 5 else ac_delim="$ac_delim!$ac_delim _$ac_delim!! " fi done # For the awk script, D is an array of macro values keyed by name, # likewise P contains macro parameters if any. Preserve backslash # newline sequences. ac_word_re=[_$as_cr_Letters][_$as_cr_alnum]* sed -n ' s/.\{148\}/&'"$ac_delim"'/g t rset :rset s/^[ ]*#[ ]*define[ ][ ]*/ / t def d :def s/\\$// t bsnl s/["\\]/\\&/g s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ D["\1"]=" \3"/p s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2"/p d :bsnl s/["\\]/\\&/g s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ D["\1"]=" \3\\\\\\n"\\/p t cont s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2\\\\\\n"\\/p t cont d :cont n s/.\{148\}/&'"$ac_delim"'/g t clear :clear s/\\$// t bsnlc s/["\\]/\\&/g; s/^/"/; s/$/"/p d :bsnlc s/["\\]/\\&/g; s/^/"/; s/$/\\\\\\n"\\/p b cont ' >$CONFIG_STATUS || ac_write_fail=1 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 for (key in D) D_is_set[key] = 1 FS = "" } /^[\t ]*#[\t ]*(define|undef)[\t ]+$ac_word_re([\t (]|\$)/ { line = \$ 0 split(line, arg, " ") if (arg[1] == "#") { defundef = arg[2] mac1 = arg[3] } else { defundef = substr(arg[1], 2) mac1 = arg[2] } split(mac1, mac2, "(") #) macro = mac2[1] prefix = substr(line, 1, index(line, defundef) - 1) if (D_is_set[macro]) { # Preserve the white space surrounding the "#". print prefix "define", macro P[macro] D[macro] next } else { # Replace #undef with comments. This is necessary, for example, # in the case of _POSIX_SOURCE, which is predefined and required # on some systems where configure will not decide to define it. if (defundef == "undef") { print "/*", prefix defundef, macro, "*/" next } } } { print } _ACAWK _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 as_fn_error $? "could not setup config headers machinery" "$LINENO" 5 fi # test -n "$CONFIG_HEADERS" eval set X " :F $CONFIG_FILES :H $CONFIG_HEADERS " shift for ac_tag do case $ac_tag in :[FHLC]) ac_mode=$ac_tag; continue;; esac case $ac_mode$ac_tag in :[FHL]*:*);; :L* | :C*:*) as_fn_error $? "invalid tag \`$ac_tag'" "$LINENO" 5;; :[FH]-) ac_tag=-:-;; :[FH]*) ac_tag=$ac_tag:$ac_tag.in;; esac ac_save_IFS=$IFS IFS=: set x $ac_tag IFS=$ac_save_IFS shift ac_file=$1 shift case $ac_mode in :L) ac_source=$1;; :[FH]) ac_file_inputs= for ac_f do case $ac_f in -) ac_f="$ac_tmp/stdin";; *) # Look for the file first in the build tree, then in the source tree # (if the path is not absolute). The absolute path cannot be DOS-style, # because $ac_f cannot contain `:'. test -f "$ac_f" || case $ac_f in [\\/$]*) false;; *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";; esac || as_fn_error 1 "cannot find input file: \`$ac_f'" "$LINENO" 5;; esac case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac as_fn_append ac_file_inputs " '$ac_f'" done # Let's still pretend it is `configure' which instantiates (i.e., don't # use $as_me), people would be surprised to read: # /* config.h. Generated by config.status. */ configure_input='Generated from '` $as_echo "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g' `' by configure.' if test x"$ac_file" != x-; then configure_input="$ac_file. $configure_input" { $as_echo "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5 $as_echo "$as_me: creating $ac_file" >&6;} fi # Neutralize special characters interpreted by sed in replacement strings. case $configure_input in #( *\&* | *\|* | *\\* ) ac_sed_conf_input=`$as_echo "$configure_input" | sed 's/[\\\\&|]/\\\\&/g'`;; #( *) ac_sed_conf_input=$configure_input;; esac case $ac_tag in *:-:* | *:-) cat >"$ac_tmp/stdin" \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;; esac ;; esac ac_dir=`$as_dirname -- "$ac_file" || $as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$ac_file" : 'X\(//\)[^/]' \| \ X"$ac_file" : 'X\(//\)$' \| \ X"$ac_file" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$ac_file" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` as_dir="$ac_dir"; as_fn_mkdir_p ac_builddir=. case "$ac_dir" in .) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` # A ".." for each directory in $ac_dir_suffix. ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` case $ac_top_builddir_sub in "") ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; esac ;; esac ac_abs_top_builddir=$ac_pwd ac_abs_builddir=$ac_pwd$ac_dir_suffix # for backward compatibility: ac_top_builddir=$ac_top_build_prefix case $srcdir in .) # We are building in place. ac_srcdir=. ac_top_srcdir=$ac_top_builddir_sub ac_abs_top_srcdir=$ac_pwd ;; [\\/]* | ?:[\\/]* ) # Absolute name. ac_srcdir=$srcdir$ac_dir_suffix; ac_top_srcdir=$srcdir ac_abs_top_srcdir=$srcdir ;; *) # Relative name. ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix ac_top_srcdir=$ac_top_build_prefix$srcdir ac_abs_top_srcdir=$ac_pwd/$srcdir ;; esac ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix case $ac_mode in :F) # # CONFIG_FILE # case $INSTALL in [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;; *) ac_INSTALL=$ac_top_build_prefix$INSTALL ;; esac _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # If the template does not know about datarootdir, expand it. # FIXME: This hack should be removed a few years after 2.60. ac_datarootdir_hack=; ac_datarootdir_seen= ac_sed_dataroot=' /datarootdir/ { p q } /@datadir@/p /@docdir@/p /@infodir@/p /@localedir@/p /@mandir@/p' case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in *datarootdir*) ac_datarootdir_seen=yes;; *@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 $as_echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;} _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_datarootdir_hack=' s&@datadir@&$datadir&g s&@docdir@&$docdir&g s&@infodir@&$infodir&g s&@localedir@&$localedir&g s&@mandir@&$mandir&g s&\\\${datarootdir}&$datarootdir&g' ;; esac _ACEOF # Neutralize VPATH when `$srcdir' = `.'. # Shell code in configure.ac might set extrasub. # FIXME: do we really want to maintain this feature? cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_sed_extra="$ac_vpsub $extrasub _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 :t /@[a-zA-Z_][a-zA-Z_0-9]*@/!b s|@configure_input@|$ac_sed_conf_input|;t t s&@top_builddir@&$ac_top_builddir_sub&;t t s&@top_build_prefix@&$ac_top_build_prefix&;t t s&@srcdir@&$ac_srcdir&;t t s&@abs_srcdir@&$ac_abs_srcdir&;t t s&@top_srcdir@&$ac_top_srcdir&;t t s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t s&@builddir@&$ac_builddir&;t t s&@abs_builddir@&$ac_abs_builddir&;t t s&@abs_top_builddir@&$ac_abs_top_builddir&;t t s&@INSTALL@&$ac_INSTALL&;t t $ac_datarootdir_hack " eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$ac_tmp/subs.awk" \ >$ac_tmp/out || as_fn_error $? "could not create $ac_file" "$LINENO" 5 test -z "$ac_datarootdir_hack$ac_datarootdir_seen" && { ac_out=`sed -n '/\${datarootdir}/p' "$ac_tmp/out"`; test -n "$ac_out"; } && { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' \ "$ac_tmp/out"`; test -z "$ac_out"; } && { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir' which seems to be undefined. Please make sure it is defined" >&5 $as_echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir' which seems to be undefined. Please make sure it is defined" >&2;} rm -f "$ac_tmp/stdin" case $ac_file in -) cat "$ac_tmp/out" && rm -f "$ac_tmp/out";; *) rm -f "$ac_file" && mv "$ac_tmp/out" "$ac_file";; esac \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;; :H) # # CONFIG_HEADER # if test x"$ac_file" != x-; then { $as_echo "/* $configure_input */" \ && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" } >"$ac_tmp/config.h" \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 if diff "$ac_file" "$ac_tmp/config.h" >/dev/null 2>&1; then { $as_echo "$as_me:${as_lineno-$LINENO}: $ac_file is unchanged" >&5 $as_echo "$as_me: $ac_file is unchanged" >&6;} else rm -f "$ac_file" mv "$ac_tmp/config.h" "$ac_file" \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 fi else $as_echo "/* $configure_input */" \ && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" \ || as_fn_error $? "could not create -" "$LINENO" 5 fi ;; esac done # for ac_tag as_fn_exit 0 _ACEOF ac_clean_files=$ac_clean_files_save test $ac_write_fail = 0 || as_fn_error $? "write failure creating $CONFIG_STATUS" "$LINENO" 5 # configure is writing to config.log, and then calls config.status. # config.status does its own redirection, appending to config.log. # Unfortunately, on DOS this fails, as config.log is still kept open # by configure, so config.status won't be able to write to it; its # output is simply discarded. So we exec the FD to /dev/null, # effectively closing config.log, so it can be properly (re)opened and # appended to by config.status. When coming back to configure, we # need to make the FD available again. if test "$no_create" != yes; then ac_cs_success=: ac_config_status_args= test "$silent" = yes && ac_config_status_args="$ac_config_status_args --quiet" exec 5>/dev/null $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false exec 5>>config.log # Use ||, not &&, to avoid exiting from the if with $? = 1, which # would make configure fail if this is the last instruction. $ac_cs_success || as_fn_exit 1 fi if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5 $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;} fi suite3270-4.1/s3270/configure.in000066400000000000000000000072741413735575200161400ustar00rootroot00000000000000dnl Copyright (c) 2000-2009, 2014-2018, 2020 Paul Mattes. dnl All rights reserved. dnl dnl Redistribution and use in source and binary forms, with or without dnl modification, are permitted provided that the following conditions dnl are met: dnl * Redistributions of source code must retain the above copyright dnl notice, this list of conditions and the following disclaimer. dnl * Redistributions in binary form must reproduce the above copyright dnl notice, this list of conditions and the following disclaimer in the dnl documentation and/or other materials provided with the distribution. dnl * Neither the name of Paul Mattes nor his contributors may be used dnl to endorse or promote products derived from this software without dnl specific prior written permission. dnl dnl THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS dnl OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED dnl WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE dnl DISCLAIMED. IN NO EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, dnl INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES dnl (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR dnl SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) dnl HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, dnl STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING dnl IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE dnl POSSIBILITY OF SUCH DAMAGE. dnl Process this file with autoconf to produce a configure script. AC_INIT(s3270,4.0) AC_PREREQ(2.50) dnl Checks for programs. AC_PROG_INSTALL AC_PROG_CC dnl Figure out what sort of host and compiler this is. AC_CANONICAL_HOST ansi="-std=c99 -pedantic" case "$host_os" in *cygwin*) ansi="" ;; solaris2*) CPPFLAGS="$CPPFLAGS -D__EXTENSIONS__" ;; darwin*) CCOPTIONS="$CPPFLAGS -no-cpp-precomp -Wno-deprecated-declarations" ;; linux*) CPPFLAGS="$CPPFLAGS -D_POSIX_SOURCE" ;; esac if test "$GCC" = yes then # Add common gcc options, plus flags for dependency generation. CCOPTIONS="$CCOPTIONS -Wall -Wsign-compare $ansi -Wno-variadic-macros -MMD -MP" fi AC_SUBST(host) AC_SUBST(CCOPTIONS) dnl Check for libraries. dnl Note that the order here is important. The last libraries should appear dnl first, so that objects in them can be used by subsequent libraries. AC_SEARCH_LIBS(forkpty, util) AC_CHECK_FUNCS(forkpty) AC_SEARCH_LIBS(gethostbyname, nsl) AC_SEARCH_LIBS(socket, socket) dnl Checks for header files. AC_CHECK_HEADERS(sys/select.h) AC_CHECK_HEADERS(pty.h) AC_CHECK_HEADERS(libutil.h) AC_CHECK_HEADERS(util.h) AC_CHECK_HEADERS(getopt.h) if test "$with_readline" != no; then AC_CHECK_HEADERS(readline/history.h) fi dnl Check for --without-readline AC_ARG_WITH(readline, [ --without-readline Don't use the readline library]) dnl Checks for library functions. AC_CHECK_FUNCS(vasprintf) AC_FUNC_FSEEKO if test "$with_readline" != no; then AC_CHECK_LIB(readline, rl_initialize) fi dnl Set up the configuration directory. LIBX3270DIR='${sysconfdir}/x3270' AC_SUBST(LIBX3270DIR) dnl Check for unwanted parts. AC_ARG_ENABLE(dbcs,[ --disable-dbcs leave out DBCS support]) case "$enable_dbcs" in no) ;; *) AC_DEFINE(X3270_DBCS,1) ;; esac AC_ARG_ENABLE(local_process,[ --disable-local-process leave out local process support]) case "$enable_local_process" in ""|yes) AC_DEFINE(X3270_LOCAL_PROCESS,1) ;; esac AC_ARG_ENABLE(ipv6,[ --disable-ipv6 leave out IPv6 support]) case "$enable_ipv6" in ""|yes) AC_DEFINE(X3270_IPV6,1) ;; esac dnl Generate conf.h. AC_CONFIG_HEADER(conf.h) dnl Generate the Makefiles. AC_CONFIG_FILES(Makefile Makefile.obj) AC_OUTPUT suite3270-4.1/s3270/ft.inc000077700000000000000000000000001413735575200174632../Common/ft.incustar00rootroot00000000000000suite3270-4.1/s3270/html.m4000077700000000000000000000000001413735575200176672../Common/html.m4ustar00rootroot00000000000000suite3270-4.1/s3270/html/000077500000000000000000000000001413735575200145615ustar00rootroot00000000000000suite3270-4.1/s3270/html/.gitignore000066400000000000000000000000571413735575200165530ustar00rootroot00000000000000*-man.html Unix-x3270if.html x3270-script.html suite3270-4.1/s3270/html/x3270.xbm000066400000000000000000000043441413735575200160610ustar00rootroot00000000000000#define x3270_width 50 #define x3270_height 50 static unsigned char x3270_bits[] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0xe0, 0xff, 0xff, 0xff, 0xff, 0x1f, 0x00, 0xf0, 0xff, 0xaf, 0xfe, 0xff, 0xe7, 0x00, 0xf0, 0xff, 0xff, 0xff, 0xff, 0x07, 0x00, 0xf8, 0xab, 0xaa, 0xaa, 0xea, 0x0f, 0x00, 0xf8, 0x55, 0x55, 0x55, 0xd5, 0x0f, 0x00, 0xf8, 0xaa, 0xaa, 0xaa, 0xaa, 0x0f, 0x00, 0x78, 0x55, 0x55, 0x55, 0x55, 0x0f, 0x00, 0xf8, 0xaa, 0xaa, 0xaa, 0xaa, 0x0f, 0x00, 0x78, 0x55, 0x55, 0x55, 0x55, 0x0f, 0x00, 0xf8, 0xaa, 0xaa, 0xaa, 0xaa, 0x0f, 0x00, 0x78, 0x55, 0x55, 0x55, 0x55, 0x0f, 0x00, 0xf8, 0xaa, 0xaa, 0xaa, 0xaa, 0x0f, 0x00, 0x78, 0x55, 0x55, 0x55, 0x55, 0x0f, 0x00, 0xf8, 0xaa, 0xaa, 0xaa, 0xaa, 0x0f, 0x00, 0x78, 0x55, 0x55, 0x55, 0x55, 0x0f, 0x00, 0xf8, 0xfa, 0xff, 0xff, 0xbf, 0x0f, 0x00, 0x78, 0xed, 0x62, 0x0c, 0x73, 0x0f, 0x00, 0xf8, 0x5a, 0xdf, 0x7b, 0xad, 0x0f, 0x00, 0x78, 0xb5, 0xe7, 0xbc, 0x6d, 0x0f, 0x00, 0xf8, 0x5a, 0x5f, 0xdf, 0xed, 0x0f, 0x00, 0x78, 0xed, 0x62, 0xd8, 0x73, 0x0f, 0x00, 0xf8, 0xfa, 0xff, 0xff, 0xff, 0x0f, 0x00, 0xf8, 0x55, 0x55, 0x55, 0xd5, 0x0f, 0x00, 0xf8, 0xab, 0xaa, 0xaa, 0xea, 0x0f, 0x00, 0xf0, 0xff, 0xff, 0xff, 0x7f, 0x06, 0x00, 0xf0, 0xff, 0xff, 0xff, 0x7f, 0x06, 0x00, 0xe0, 0xff, 0xff, 0xff, 0xff, 0x07, 0x00, 0x80, 0xff, 0xff, 0xff, 0xff, 0x18, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x40, 0x00, 0xc0, 0xff, 0xff, 0xff, 0xff, 0x43, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x43, 0x00, 0x10, 0x44, 0x44, 0x44, 0x84, 0x42, 0x00, 0x08, 0x11, 0x11, 0x11, 0x41, 0x42, 0x00, 0x84, 0x88, 0x88, 0x88, 0x48, 0x42, 0x00, 0x24, 0x22, 0x22, 0x22, 0x22, 0xfe, 0x00, 0xfc, 0xff, 0xff, 0xff, 0x1f, 0x03, 0x00, 0x04, 0x00, 0x00, 0x00, 0xd0, 0x00, 0x00, 0xfc, 0xff, 0xff, 0xff, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; suite3270-4.1/s3270/ibm_hosts000077700000000000000000000000001413735575200210772../Common/ibm_hostsustar00rootroot00000000000000suite3270-4.1/s3270/ibm_hosts.man.m4000077700000000000000000000000001413735575200232612../Common/ibm_hosts.man.m4ustar00rootroot00000000000000suite3270-4.1/s3270/instlist.base000066400000000000000000000001061413735575200163170ustar00rootroot00000000000000usr usr/local usr/local/bin usr/local/bin/s3270 usr/local/bin/x3270if suite3270-4.1/s3270/instlist.man000066400000000000000000000002171413735575200161630ustar00rootroot00000000000000usr usr/local usr/local/share usr/local/share/man usr/local/share/man/man1 usr/local/share/man/man1/s3270.1 usr/local/share/man/man1/x3270if.1 suite3270-4.1/s3270/m4man000077700000000000000000000000001413735575200171512../Common/m4manustar00rootroot00000000000000suite3270-4.1/s3270/man.m4000077700000000000000000000000001413735575200173052../Common/man.m4ustar00rootroot00000000000000suite3270-4.1/s3270/mkversion.sh000077700000000000000000000000001413735575200221752../Common/mkversion.shustar00rootroot00000000000000suite3270-4.1/s3270/parts.h.in000066400000000000000000000032601413735575200155250ustar00rootroot00000000000000/* * Copyright (c) 1996-2009, Paul Mattes. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of Paul Mattes nor his contributors may be used * to endorse or promote products derived from this software without * specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. */ /* * parts.h * #defines for the optional parts of s3270. * @configure_input@ */ @X3270_ANSI@ @X3270_APL@ @X3270_FT@ @X3270_LOCAL_PROCESS@ @X3270_TN3270E@ @X3270_TRACE@ suite3270-4.1/s3270/s3270.man000066400000000000000000000012241413735575200150670ustar00rootroot00000000000000'\" t .TH s3270 1 "30 October 2021" .SH "NAME" s3270 \- \s-1IBM\s+1 host access tool .SH "SYNOPSIS" \fBs3270\fP [\fIoptions\fP] [\fIhost\fP] .br \fBs3270\fP [\fIoptions\fP] \fIsession-file\fP.s3270 .SH "DESCRIPTION" \fBs3270\fP opens a telnet connection to an \s-1IBM\s+1 host, then allows a script to control the host login session. It is derived from \fIx3270\fP(1), an X-windows IBM 3270 emulator. It implements RFCs 2355 (TN3270E), 1576 (TN3270) and 1646 (LU name selection), and supports IND$FILE file transfer. .SH "WIKI" Primary documentation for s3270 is on the \fBx3270 Wiki\fP, https://x3270.miraheze.org/wiki/Main_Page. .SH "VERSION" s3270 4.1pre10 suite3270-4.1/s3270/s3270_files.mk000066400000000000000000000000661413735575200161100ustar00rootroot00000000000000# s3270-specific object files S3270_OBJECTS = s3270.o suite3270-4.1/s3270/s3270_glue.bash000077500000000000000000000122401413735575200162500ustar00rootroot00000000000000#!/usr/bin/env bash # Copyright (c) 1993-2009, 2015 Paul Mattes. # All rights reserved. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # * Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # * Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in the # documentation and/or other materials provided with the distribution. # * Neither the name of Paul Mattes nor his contributors may be used # to endorse or promote products derived from this software without # specific prior written permission. # # THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS OR # IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES # OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN # NO EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, # SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED # TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR # PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF # LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING # NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS # SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. # s3270 glue for bash # # Intended use in a bash script: # # . s3270_glue.bash # Start # Connect host # Wait InputField # # interact with the host as needed # Disconnect # Stop #set -x # Define some handy functions. # s3270 interface function function xi { typeset x y if [ "X$1" = "X-s" ] then echo >&5 read x <&6 read <&6 echo "$x" | awk "{print \$$2}" return fi echo >&5 "$@" while read x <&6 do y=$(expr substr "$x" 1 5) if [ "$y" = "data:" ] then z="${x#?????}" if [ -n "$z" ] then echo "${z#?}" else echo "$z" fi elif [ "$x" = ok ] then return 0 elif [ "$x" = error ] then return 1 fi done return 1 } # 'xi' function, with space-to-comma and double-quote translation function xic { typeset sep cmd="$1(" typeset a shift while [ $# -gt 0 ] do echo "$1" | sed 's/"/\\"/' >/tmp/x$$ a="$($op & xp=$! exec 5>$ip 6<$op # hold the pipes open xi -s 0 >/dev/null || exit 1 } # Stop function function Stop { # Close the pipes. exec 5>&- 6<&- # Remove them. rm -f $ip $op } # Failure. function Die { echo >&2 "$@" Stop exit 1 } suite3270-4.1/s3270/version.txt000077700000000000000000000000001413735575200217272../Common/version.txtustar00rootroot00000000000000suite3270-4.1/s3270/x3270.man.m4000077700000000000000000000000001413735575200206512../Common/x3270.man.m4ustar00rootroot00000000000000suite3270-4.1/s3270/x3270_glue.expect000077700000000000000000000000001413735575200232752../Common/x3270_glue.expectustar00rootroot00000000000000suite3270-4.1/tcl3270/000077500000000000000000000000001413735575200141355ustar00rootroot00000000000000suite3270-4.1/tcl3270/.gitignore000066400000000000000000000000241413735575200161210ustar00rootroot00000000000000conf.h Makefile.obj suite3270-4.1/tcl3270/Examples/000077500000000000000000000000001413735575200157135ustar00rootroot00000000000000suite3270-4.1/tcl3270/Examples/cms_cmd.tcl3270000077500000000000000000000107451413735575200203520ustar00rootroot00000000000000#!tcl3270 # Copyright (c) 2000-2009, Paul Mattes. # All rights reserved. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # * Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # * Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in the # documentation and/or other materials provided with the distribution. # * Neither the name of Paul Mattes nor his contributors may be used # to endorse or promote products derived from this software without # specific prior written permission. # # THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS OR # IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES # OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN # NO EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, # SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED # TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR # PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF # LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING # NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS # SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. # Pluck the username, password and command from the command line. if {$argc != 4} { puts stderr "Usage: $argv0 -- hostname username password command" exit 1 } set hostname [lindex $argv 0] set username [lindex $argv 1] set password [lindex $argv 2] set command [lindex $argv 3] # Procedure to wait for a READ prompt from CMS or CP. proc waitread {} { Snap Save while {[Snap Ascii [expr [Snap Rows]-1] [expr [Snap Cols]-17] 4] != "READ"} { Snap Wait Output } } # Procedure to check for the CMS "Ready" prompt. # Returns its row number, or -1 for "MORE..." state, and leaves a screen with # data to read in the Snap buffer. proc cmd_done {} { global verbose Snap Save while {1} { if {[Snap Ascii [expr [Snap Rows]-1] [expr [Snap Cols]-20] 7] == "MORE..."} { if {$verbose} {puts "MORE..."} return -1 } set i [expr [Snap Rows]-2] while {$i >= 0} { set text [Snap Ascii $i 0 [Snap Cols]] switch -regexp $text { "Ready; T=.*" {return $i} "Ready\(.*\); T=.*" { error [Snap Ascii [expr $i-1] 0 \ [Snap Cols]] } "^ *\$" {} default { if {$verbose} {puts "Incomplete $i '[string trimright $text]'"} set i 0 } } incr i -1 } Snap Wait Output } } # Execute a command, return the output. proc cms_cmd {text} { global verbose # Clear the screen. Clear # Send the command. String "$text\n" # 'first' is the row where the first line of output will appear. For # the first screenful it's 1; after that it's 0. set first 1 # r is the result. set r {} while {1} { # Wait for a screenful. set d [cmd_done] # Dump out what's there. set i $first set first 0 if {$d < 0} {set last [expr [Snap Rows]-2]} {set last $d} while {$i < $last} { set r [linsert $r end [string trimright \ [Snap Ascii $i 0 [Snap Cols]]]] incr i } if {$d >= 0} {break} # Clear the screen and go around again. Clear } return $r } # Start of main procedure. # Set 'verbose' to 1 to get debug output from the glue functions. set verbose 0 # Connect to the host and wait for an input field. Connect $hostname Wait InputField # Log in and wait for CP READ or VM READ mode. String "$username\t$password\n" waitread # If we can't log on, we're hosed. if {[Ascii 1 11 7] == "Already"} { puts stderr "Can't run -- already logged in." exit 1 } # If we're in CP mode, which means we disconnected last time, boot CMS. if {[Ascii [expr [Rows]-1] [expr [Cols]-20] 2] == "CP"} { Clear String "i cms\n" waitread } # Enter an empty command to get a CMS prompt. If we don't do this, there will # be a Ready prompt as the first line of output below. Clear Enter cmd_done # Get the output of the user's command and display it. if {[catch {cms_cmd $command} result]} { puts stderr $result set rc 1 } { for {set i 0} {$i < [llength $result]} {incr i} { puts [lindex $result $i] } set rc 0 } # Log off, and wait for the host to hang up on us, so we don't unintentionally # create a disconnected session. Clear if {! [catch {String "logoff\n"}]} {Wait Disconnect} exit $rc suite3270-4.1/tcl3270/Makefile.aux000066400000000000000000000045221413735575200163740ustar00rootroot00000000000000# Copyright (c) 1995-2011, 2013-2015, 2017-2018, 2020 Paul Mattes. # All rights reserved. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # * Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # * Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in the # documentation and/or other materials provided with the distribution. # * Neither the name of Paul Mattes nor his contributors may be used # to endorse or promote products derived from this software without # specific prior written permission. # # THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS OR # IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES # OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN # NO EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, # SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED # TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR # PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF # LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING # NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS # SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. # Auxiliary makefile for tcl3270 PRODUCT = tcl3270 all: @echo "Must pick a specific make target." DOCS = $(PRODUCT).man html/$(PRODUCT)-man.html # Rule for building the source tarball: run autoconf and build the # documentation. src.tgz: prepare $(DOCS) Makefile.aux # Rule for preparing a freshly-pulled working copy: run autoconf. prepare: configure configure: configure.in autoconf MANDEP = man.m4 html.m4 m4man Makefile.aux version.txt MKMAN = ./m4man -t man -p $(PRODUCT) MKHTML = ./m4man -t html -p $(PRODUCT) # Rule for building the documentation. man: $(PRODUCT).man html/$(PRODUCT)-man.html # Rules for building man pages and derived HTML documentation. $(PRODUCT).man: tcl3270.man.m4 $(MANDEP) $(MKMAN) -n $(PRODUCT) -o $@ tcl3270.man.m4 html/$(PRODUCT)-man.html: tcl3270.man.m4 $(MANDEP) $(MKHTML) -n $(PRODUCT) -o $@ tcl3270.man.m4 suite3270-4.1/tcl3270/Makefile.in000066400000000000000000000043021413735575200162010ustar00rootroot00000000000000# Copyright (c) 2016-2017 Paul Mattes. # All rights reserved. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # * Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # * Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in the # documentation and/or other materials provided with the distribution. # * Neither the name of Paul Mattes nor his contributors may be used # to endorse or promote products derived from this software without # specific prior written permission. # # THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS OR # IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES # OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN # NO EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, # SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED # TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR # PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF # LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING # NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS # SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. # VPATH-based Makefile for tcl3270 top = ../../.. objdir = ../obj/@host@/tcl3270 this = $(top)/tcl3270 export VPATH = $(this):$(top)/Common export TOP = $(top) export THIS = $(this) MAKEINC = -I$(this) -I$(top)/Common all: $(objdir) cd $(objdir) && $(MAKE) $(MAKEINC) -f $(this)/Makefile.obj $@ install: $(objdir) cd $(objdir) && $(MAKE) $(MAKEINC) -f $(this)/Makefile.obj $@ install.man: $(objdir) cd $(objdir) && $(MAKE) $(MAKEINC) -f $(this)/Makefile.obj $@ clean: $(objdir) cd $(objdir) && $(MAKE) $(MAKEINC) -f $(this)/Makefile.obj $@ clobber: $(objdir) cd $(objdir) && $(MAKE) $(MAKEINC) -f $(this)/Makefile.obj $@ depend: $(objdir) cd $(objdir) && $(MAKE) $(MAKEINC) -f $(this)/Makefile.obj $@ $(objdir): mkdir -p $(objdir) suite3270-4.1/tcl3270/Makefile.obj.in000066400000000000000000000064461413735575200167650ustar00rootroot00000000000000# Copyright (c) 1993-2009, 2013-2018, 2020 Paul Mattes. # All rights reserved. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # * Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # * Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in the # documentation and/or other materials provided with the distribution. # * Neither the name of Paul Mattes nor his contributors may be used # to endorse or promote products derived from this software without # specific prior written permission. # # THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS OR # IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES # OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN # NO EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, # SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED # TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR # PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF # LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING # NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS # SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. # Makefile for tcl3270 (tcl-based scripted 3270 emulator) # Makefile. Generated from Makefile.in by configure. RM = rm -f CC = @CC@ all: tcl3270 x3270if s3270 HOST = @host@ include tcl3270_files.mk libs.mk VOBJS = $(TCL3270_OBJECTS) fallbacks.o OBJS1 = $(VOBJS) version.o LIBDIR = @libdir@ exec_prefix = @exec_prefix@ prefix = @prefix@ sysconfdir = @sysconfdir@ datarootdir = @datarootdir@ LIBX3270DIR = @LIBX3270DIR@ MANDIR = @mandir@ BINDIR = @bindir@ INSTALL = @INSTALL@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_DATA = @INSTALL_DATA@ CCOPTIONS = @CCOPTIONS@ XCPPFLAGS = -I$(THIS) -I$(TOP)/include -DLIBX3270DIR=\"$(LIBX3270DIR)\" @CPPFLAGS@ CFLAGS = $(CCOPTIONS) $(CDEBUGFLAGS) $(XCPPFLAGS) @CFLAGS@ LDFLAGS = @LDFLAGS@ LIBS = @LIBS@ XVERSION = xversion.c version.o: mkversion.sh $(VOBJS) version.txt $(RM) $(XVERSION) sh $< tcl3270 $(filter %.txt,$^) >$(XVERSION) $(CC) $(CFLAGS) -c -o $@ $(XVERSION) $(RM) $(XVERSION) FALLBACKS = fb-common fallbacks.c: mkfb $(FALLBACKS) $(RM) $@ ./mkfb -c -o $@ $(filter-out mkfb,$^) mkfb: mkfb.c $(CC) $(CFLAGS) $(LDFLAGS) -o $@ $(filter %.c,$^) tcl3270: $(OBJS1) $(CC) -o $@ $(OBJS1) $(LDFLAGS) $(LIBS) x3270if: ../x3270if/x3270if cp -p ../x3270if/x3270if $@ s3270: ../s3270/s3270 cp -p ../s3270/s3270 $@ man:: tcl3270.man if [ ! -f $(notdir $^) ]; then cp $< $(notdir $^); fi man:: tcl3270.man if [ ! -f $(notdir $^) ]; then cp $< $(notdir $^); fi install: tcl3270 [ -d $(DESTDIR)$(BINDIR) ] || \ mkdir -p $(DESTDIR)$(BINDIR) $(INSTALL_PROGRAM) tcl3270 $(DESTDIR)$(BINDIR)/tcl3270 install.man: man [ -d $(DESTDIR)$(MANDIR)/man1 ] || \ mkdir -p $(DESTDIR)$(MANDIR)/man1 $(INSTALL_DATA) tcl3270.man $(DESTDIR)$(MANDIR)/man1/tcl3270.1 clean: $(RM) *.o mkfb clobber: clean $(RM) tcl3270 *.d *.man # Include auto-generated dependencies. -include $(OBJS:.o=.d) mkfb.d suite3270-4.1/tcl3270/common_files.mk000077700000000000000000000000001413735575200236012../Common/common_files.mkustar00rootroot00000000000000suite3270-4.1/tcl3270/conf.h.in000066400000000000000000000036031413735575200156420ustar00rootroot00000000000000/* * Copyright (c) 2000-2009, 2014-2015, 2017-2019 Paul Mattes. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of Paul Mattes nor his contributors may be used * to endorse or promote products derived from this software without * specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. */ /* * conf.h * System-specific #defines for libraries and library functions. */ /* Libraries. */ /* Header files. */ #undef HAVE_LIBUTIL_H #undef HAVE_UTIL_H #undef HAVE_TCLEXTEND_H /* Uncommon functions. */ #undef HAVE_VASPRINTF #undef HAVE_FSEEKO /* Configuration options. */ /* Optional parts. */ #undef X3270_LOCAL_PROCESS #undef X3270_IPV6 suite3270-4.1/tcl3270/configure000077500000000000000000004543441413735575200160620ustar00rootroot00000000000000#! /bin/sh # Guess values for system-dependent variables and create Makefiles. # Generated by GNU Autoconf 2.69 for tcl3270 4.0. # # # Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc. # # # This configure script is free software; the Free Software Foundation # gives unlimited permission to copy, distribute and modify it. ## -------------------- ## ## M4sh Initialization. ## ## -------------------- ## # Be more Bourne compatible DUALCASE=1; export DUALCASE # for MKS sh if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST else case `(set -o) 2>/dev/null` in #( *posix*) : set -o posix ;; #( *) : ;; esac fi as_nl=' ' export as_nl # Printing a long string crashes Solaris 7 /usr/bin/printf. as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo # Prefer a ksh shell builtin over an external printf program on Solaris, # but without wasting forks for bash or zsh. if test -z "$BASH_VERSION$ZSH_VERSION" \ && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then as_echo='print -r --' as_echo_n='print -rn --' elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then as_echo='printf %s\n' as_echo_n='printf %s' else if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' as_echo_n='/usr/ucb/echo -n' else as_echo_body='eval expr "X$1" : "X\\(.*\\)"' as_echo_n_body='eval arg=$1; case $arg in #( *"$as_nl"*) expr "X$arg" : "X\\(.*\\)$as_nl"; arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; esac; expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" ' export as_echo_n_body as_echo_n='sh -c $as_echo_n_body as_echo' fi export as_echo_body as_echo='sh -c $as_echo_body as_echo' fi # The user is always right. if test "${PATH_SEPARATOR+set}" != set; then PATH_SEPARATOR=: (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || PATH_SEPARATOR=';' } fi # IFS # We need space, tab and new line, in precisely that order. Quoting is # there to prevent editors from complaining about space-tab. # (If _AS_PATH_WALK were called with IFS unset, it would disable word # splitting by setting IFS to empty value.) IFS=" "" $as_nl" # Find who we are. Look in the path if we contain no directory separator. as_myself= case $0 in #(( *[\\/]* ) as_myself=$0 ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break done IFS=$as_save_IFS ;; esac # We did not find ourselves, most probably we were run as `sh COMMAND' # in which case we are not to be found in the path. if test "x$as_myself" = x; then as_myself=$0 fi if test ! -f "$as_myself"; then $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 exit 1 fi # Unset variables that we do not need and which cause bugs (e.g. in # pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" # suppresses any "Segmentation fault" message there. '((' could # trigger a bug in pdksh 5.2.14. for as_var in BASH_ENV ENV MAIL MAILPATH do eval test x\${$as_var+set} = xset \ && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : done PS1='$ ' PS2='> ' PS4='+ ' # NLS nuisances. LC_ALL=C export LC_ALL LANGUAGE=C export LANGUAGE # CDPATH. (unset CDPATH) >/dev/null 2>&1 && unset CDPATH # Use a proper internal environment variable to ensure we don't fall # into an infinite loop, continuously re-executing ourselves. if test x"${_as_can_reexec}" != xno && test "x$CONFIG_SHELL" != x; then _as_can_reexec=no; export _as_can_reexec; # We cannot yet assume a decent shell, so we have to provide a # neutralization value for shells without unset; and this also # works around shells that cannot unset nonexistent variables. # Preserve -v and -x to the replacement shell. BASH_ENV=/dev/null ENV=/dev/null (unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV case $- in # (((( *v*x* | *x*v* ) as_opts=-vx ;; *v* ) as_opts=-v ;; *x* ) as_opts=-x ;; * ) as_opts= ;; esac exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} # Admittedly, this is quite paranoid, since all the known shells bail # out after a failed `exec'. $as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2 as_fn_exit 255 fi # We don't want this to propagate to other subprocesses. { _as_can_reexec=; unset _as_can_reexec;} if test "x$CONFIG_SHELL" = x; then as_bourne_compatible="if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on \${1+\"\$@\"}, which # is contrary to our usage. Disable this feature. alias -g '\${1+\"\$@\"}'='\"\$@\"' setopt NO_GLOB_SUBST else case \`(set -o) 2>/dev/null\` in #( *posix*) : set -o posix ;; #( *) : ;; esac fi " as_required="as_fn_return () { (exit \$1); } as_fn_success () { as_fn_return 0; } as_fn_failure () { as_fn_return 1; } as_fn_ret_success () { return 0; } as_fn_ret_failure () { return 1; } exitcode=0 as_fn_success || { exitcode=1; echo as_fn_success failed.; } as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; } as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; } as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; } if ( set x; as_fn_ret_success y && test x = \"\$1\" ); then : else exitcode=1; echo positional parameters were not saved. fi test x\$exitcode = x0 || exit 1 test -x / || exit 1" as_suggested=" as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" && test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1 test \$(( 1 + 1 )) = 2 || exit 1" if (eval "$as_required") 2>/dev/null; then : as_have_required=yes else as_have_required=no fi if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null; then : else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR as_found=false for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. as_found=: case $as_dir in #( /*) for as_base in sh bash ksh sh5; do # Try only shells that exist, to save several forks. as_shell=$as_dir/$as_base if { test -f "$as_shell" || test -f "$as_shell.exe"; } && { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$as_shell"; } 2>/dev/null; then : CONFIG_SHELL=$as_shell as_have_required=yes if { $as_echo "$as_bourne_compatible""$as_suggested" | as_run=a "$as_shell"; } 2>/dev/null; then : break 2 fi fi done;; esac as_found=false done $as_found || { if { test -f "$SHELL" || test -f "$SHELL.exe"; } && { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$SHELL"; } 2>/dev/null; then : CONFIG_SHELL=$SHELL as_have_required=yes fi; } IFS=$as_save_IFS if test "x$CONFIG_SHELL" != x; then : export CONFIG_SHELL # We cannot yet assume a decent shell, so we have to provide a # neutralization value for shells without unset; and this also # works around shells that cannot unset nonexistent variables. # Preserve -v and -x to the replacement shell. BASH_ENV=/dev/null ENV=/dev/null (unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV case $- in # (((( *v*x* | *x*v* ) as_opts=-vx ;; *v* ) as_opts=-v ;; *x* ) as_opts=-x ;; * ) as_opts= ;; esac exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} # Admittedly, this is quite paranoid, since all the known shells bail # out after a failed `exec'. $as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2 exit 255 fi if test x$as_have_required = xno; then : $as_echo "$0: This script requires a shell more modern than all" $as_echo "$0: the shells that I found on your system." if test x${ZSH_VERSION+set} = xset ; then $as_echo "$0: In particular, zsh $ZSH_VERSION has bugs and should" $as_echo "$0: be upgraded to zsh 4.3.4 or later." else $as_echo "$0: Please tell bug-autoconf@gnu.org about your system, $0: including any error possibly output before this $0: message. Then install a modern shell, or manually run $0: the script under such a shell if you do have one." fi exit 1 fi fi fi SHELL=${CONFIG_SHELL-/bin/sh} export SHELL # Unset more variables known to interfere with behavior of common tools. CLICOLOR_FORCE= GREP_OPTIONS= unset CLICOLOR_FORCE GREP_OPTIONS ## --------------------- ## ## M4sh Shell Functions. ## ## --------------------- ## # as_fn_unset VAR # --------------- # Portably unset VAR. as_fn_unset () { { eval $1=; unset $1;} } as_unset=as_fn_unset # as_fn_set_status STATUS # ----------------------- # Set $? to STATUS, without forking. as_fn_set_status () { return $1 } # as_fn_set_status # as_fn_exit STATUS # ----------------- # Exit the shell with STATUS, even in a "trap 0" or "set -e" context. as_fn_exit () { set +e as_fn_set_status $1 exit $1 } # as_fn_exit # as_fn_mkdir_p # ------------- # Create "$as_dir" as a directory, including parents if necessary. as_fn_mkdir_p () { case $as_dir in #( -*) as_dir=./$as_dir;; esac test -d "$as_dir" || eval $as_mkdir_p || { as_dirs= while :; do case $as_dir in #( *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( *) as_qdir=$as_dir;; esac as_dirs="'$as_qdir' $as_dirs" as_dir=`$as_dirname -- "$as_dir" || $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_dir" : 'X\(//\)[^/]' \| \ X"$as_dir" : 'X\(//\)$' \| \ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$as_dir" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` test -d "$as_dir" && break done test -z "$as_dirs" || eval "mkdir $as_dirs" } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" } # as_fn_mkdir_p # as_fn_executable_p FILE # ----------------------- # Test if FILE is an executable regular file. as_fn_executable_p () { test -f "$1" && test -x "$1" } # as_fn_executable_p # as_fn_append VAR VALUE # ---------------------- # Append the text in VALUE to the end of the definition contained in VAR. Take # advantage of any shell optimizations that allow amortized linear growth over # repeated appends, instead of the typical quadratic growth present in naive # implementations. if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : eval 'as_fn_append () { eval $1+=\$2 }' else as_fn_append () { eval $1=\$$1\$2 } fi # as_fn_append # as_fn_arith ARG... # ------------------ # Perform arithmetic evaluation on the ARGs, and store the result in the # global $as_val. Take advantage of shells that can avoid forks. The arguments # must be portable across $(()) and expr. if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : eval 'as_fn_arith () { as_val=$(( $* )) }' else as_fn_arith () { as_val=`expr "$@" || test $? -eq 1` } fi # as_fn_arith # as_fn_error STATUS ERROR [LINENO LOG_FD] # ---------------------------------------- # Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are # provided, also output the error to LOG_FD, referencing LINENO. Then exit the # script with STATUS, using 1 if that was 0. as_fn_error () { as_status=$1; test $as_status -eq 0 && as_status=1 if test "$4"; then as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 fi $as_echo "$as_me: error: $2" >&2 as_fn_exit $as_status } # as_fn_error if expr a : '\(a\)' >/dev/null 2>&1 && test "X`expr 00001 : '.*\(...\)'`" = X001; then as_expr=expr else as_expr=false fi if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then as_basename=basename else as_basename=false fi if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then as_dirname=dirname else as_dirname=false fi as_me=`$as_basename -- "$0" || $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ X"$0" : 'X\(//\)$' \| \ X"$0" : 'X\(/\)' \| . 2>/dev/null || $as_echo X/"$0" | sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/ q } /^X\/\(\/\/\)$/{ s//\1/ q } /^X\/\(\/\).*/{ s//\1/ q } s/.*/./; q'` # Avoid depending upon Character Ranges. as_cr_letters='abcdefghijklmnopqrstuvwxyz' as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' as_cr_Letters=$as_cr_letters$as_cr_LETTERS as_cr_digits='0123456789' as_cr_alnum=$as_cr_Letters$as_cr_digits as_lineno_1=$LINENO as_lineno_1a=$LINENO as_lineno_2=$LINENO as_lineno_2a=$LINENO eval 'test "x$as_lineno_1'$as_run'" != "x$as_lineno_2'$as_run'" && test "x`expr $as_lineno_1'$as_run' + 1`" = "x$as_lineno_2'$as_run'"' || { # Blame Lee E. McMahon (1931-1989) for sed's syntax. :-) sed -n ' p /[$]LINENO/= ' <$as_myself | sed ' s/[$]LINENO.*/&-/ t lineno b :lineno N :loop s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ t loop s/-\n.*// ' >$as_me.lineno && chmod +x "$as_me.lineno" || { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; } # If we had to re-execute with $CONFIG_SHELL, we're ensured to have # already done that, so ensure we don't try to do so again and fall # in an infinite loop. This has already happened in practice. _as_can_reexec=no; export _as_can_reexec # Don't try to exec as it changes $[0], causing all sort of problems # (the dirname of $[0] is not the place where we might find the # original and so on. Autoconf is especially sensitive to this). . "./$as_me.lineno" # Exit status is that of the last command. exit } ECHO_C= ECHO_N= ECHO_T= case `echo -n x` in #((((( -n*) case `echo 'xy\c'` in *c*) ECHO_T=' ';; # ECHO_T is single tab character. xy) ECHO_C='\c';; *) echo `echo ksh88 bug on AIX 6.1` > /dev/null ECHO_T=' ';; esac;; *) ECHO_N='-n';; esac rm -f conf$$ conf$$.exe conf$$.file if test -d conf$$.dir; then rm -f conf$$.dir/conf$$.file else rm -f conf$$.dir mkdir conf$$.dir 2>/dev/null fi if (echo >conf$$.file) 2>/dev/null; then if ln -s conf$$.file conf$$ 2>/dev/null; then as_ln_s='ln -s' # ... but there are two gotchas: # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. # In both cases, we have to default to `cp -pR'. ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || as_ln_s='cp -pR' elif ln conf$$.file conf$$ 2>/dev/null; then as_ln_s=ln else as_ln_s='cp -pR' fi else as_ln_s='cp -pR' fi rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file rmdir conf$$.dir 2>/dev/null if mkdir -p . 2>/dev/null; then as_mkdir_p='mkdir -p "$as_dir"' else test -d ./-p && rmdir ./-p as_mkdir_p=false fi as_test_x='test -x' as_executable_p=as_fn_executable_p # Sed expression to map a string onto a valid CPP name. as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" # Sed expression to map a string onto a valid variable name. as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" test -n "$DJDIR" || exec 7<&0 &1 # Name of the host. # hostname on some systems (SVR3.2, old GNU/Linux) returns a bogus exit status, # so uname gets run too. ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q` # # Initializations. # ac_default_prefix=/usr/local ac_clean_files= ac_config_libobj_dir=. LIBOBJS= cross_compiling=no subdirs= MFLAGS= MAKEFLAGS= # Identity of this package. PACKAGE_NAME='tcl3270' PACKAGE_TARNAME='tcl3270' PACKAGE_VERSION='4.0' PACKAGE_STRING='tcl3270 4.0' PACKAGE_BUGREPORT='' PACKAGE_URL='' # Factoring default headers for most tests. ac_includes_default="\ #include #ifdef HAVE_SYS_TYPES_H # include #endif #ifdef HAVE_SYS_STAT_H # include #endif #ifdef STDC_HEADERS # include # include #else # ifdef HAVE_STDLIB_H # include # endif #endif #ifdef HAVE_STRING_H # if !defined STDC_HEADERS && defined HAVE_MEMORY_H # include # endif # include #endif #ifdef HAVE_STRINGS_H # include #endif #ifdef HAVE_INTTYPES_H # include #endif #ifdef HAVE_STDINT_H # include #endif #ifdef HAVE_UNISTD_H # include #endif" ac_subst_vars='LTLIBOBJS LIBOBJS LIBX3270DIR EGREP GREP CPP tclsh CCOPTIONS host_os host_vendor host_cpu host build_os build_vendor build_cpu build OBJEXT EXEEXT ac_ct_CC CPPFLAGS LDFLAGS CFLAGS CC INSTALL_DATA INSTALL_SCRIPT INSTALL_PROGRAM target_alias host_alias build_alias LIBS ECHO_T ECHO_N ECHO_C DEFS mandir localedir libdir psdir pdfdir dvidir htmldir infodir docdir oldincludedir includedir runstatedir localstatedir sharedstatedir sysconfdir datadir datarootdir libexecdir sbindir bindir program_transform_name prefix exec_prefix PACKAGE_URL PACKAGE_BUGREPORT PACKAGE_STRING PACKAGE_VERSION PACKAGE_TARNAME PACKAGE_NAME PATH_SEPARATOR SHELL' ac_subst_files='' ac_user_opts=' enable_option_checking enable_dbcs enable_local_process enable_ipv6 ' ac_precious_vars='build_alias host_alias target_alias CC CFLAGS LDFLAGS LIBS CPPFLAGS CPP' # Initialize some variables set by options. ac_init_help= ac_init_version=false ac_unrecognized_opts= ac_unrecognized_sep= # The variables have the same names as the options, with # dashes changed to underlines. cache_file=/dev/null exec_prefix=NONE no_create= no_recursion= prefix=NONE program_prefix=NONE program_suffix=NONE program_transform_name=s,x,x, silent= site= srcdir= verbose= x_includes=NONE x_libraries=NONE # Installation directory options. # These are left unexpanded so users can "make install exec_prefix=/foo" # and all the variables that are supposed to be based on exec_prefix # by default will actually change. # Use braces instead of parens because sh, perl, etc. also accept them. # (The list follows the same order as the GNU Coding Standards.) bindir='${exec_prefix}/bin' sbindir='${exec_prefix}/sbin' libexecdir='${exec_prefix}/libexec' datarootdir='${prefix}/share' datadir='${datarootdir}' sysconfdir='${prefix}/etc' sharedstatedir='${prefix}/com' localstatedir='${prefix}/var' runstatedir='${localstatedir}/run' includedir='${prefix}/include' oldincludedir='/usr/include' docdir='${datarootdir}/doc/${PACKAGE_TARNAME}' infodir='${datarootdir}/info' htmldir='${docdir}' dvidir='${docdir}' pdfdir='${docdir}' psdir='${docdir}' libdir='${exec_prefix}/lib' localedir='${datarootdir}/locale' mandir='${datarootdir}/man' ac_prev= ac_dashdash= for ac_option do # If the previous option needs an argument, assign it. if test -n "$ac_prev"; then eval $ac_prev=\$ac_option ac_prev= continue fi case $ac_option in *=?*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;; *=) ac_optarg= ;; *) ac_optarg=yes ;; esac # Accept the important Cygnus configure options, so we can diagnose typos. case $ac_dashdash$ac_option in --) ac_dashdash=yes ;; -bindir | --bindir | --bindi | --bind | --bin | --bi) ac_prev=bindir ;; -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*) bindir=$ac_optarg ;; -build | --build | --buil | --bui | --bu) ac_prev=build_alias ;; -build=* | --build=* | --buil=* | --bui=* | --bu=*) build_alias=$ac_optarg ;; -cache-file | --cache-file | --cache-fil | --cache-fi \ | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) ac_prev=cache_file ;; -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) cache_file=$ac_optarg ;; --config-cache | -C) cache_file=config.cache ;; -datadir | --datadir | --datadi | --datad) ac_prev=datadir ;; -datadir=* | --datadir=* | --datadi=* | --datad=*) datadir=$ac_optarg ;; -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \ | --dataroo | --dataro | --datar) ac_prev=datarootdir ;; -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \ | --dataroot=* | --dataroo=* | --dataro=* | --datar=*) datarootdir=$ac_optarg ;; -disable-* | --disable-*) ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid feature name: $ac_useropt" ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "enable_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--disable-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval enable_$ac_useropt=no ;; -docdir | --docdir | --docdi | --doc | --do) ac_prev=docdir ;; -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*) docdir=$ac_optarg ;; -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv) ac_prev=dvidir ;; -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*) dvidir=$ac_optarg ;; -enable-* | --enable-*) ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid feature name: $ac_useropt" ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "enable_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--enable-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval enable_$ac_useropt=\$ac_optarg ;; -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ | --exec | --exe | --ex) ac_prev=exec_prefix ;; -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \ | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \ | --exec=* | --exe=* | --ex=*) exec_prefix=$ac_optarg ;; -gas | --gas | --ga | --g) # Obsolete; use --with-gas. with_gas=yes ;; -help | --help | --hel | --he | -h) ac_init_help=long ;; -help=r* | --help=r* | --hel=r* | --he=r* | -hr*) ac_init_help=recursive ;; -help=s* | --help=s* | --hel=s* | --he=s* | -hs*) ac_init_help=short ;; -host | --host | --hos | --ho) ac_prev=host_alias ;; -host=* | --host=* | --hos=* | --ho=*) host_alias=$ac_optarg ;; -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht) ac_prev=htmldir ;; -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \ | --ht=*) htmldir=$ac_optarg ;; -includedir | --includedir | --includedi | --included | --include \ | --includ | --inclu | --incl | --inc) ac_prev=includedir ;; -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \ | --includ=* | --inclu=* | --incl=* | --inc=*) includedir=$ac_optarg ;; -infodir | --infodir | --infodi | --infod | --info | --inf) ac_prev=infodir ;; -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*) infodir=$ac_optarg ;; -libdir | --libdir | --libdi | --libd) ac_prev=libdir ;; -libdir=* | --libdir=* | --libdi=* | --libd=*) libdir=$ac_optarg ;; -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \ | --libexe | --libex | --libe) ac_prev=libexecdir ;; -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \ | --libexe=* | --libex=* | --libe=*) libexecdir=$ac_optarg ;; -localedir | --localedir | --localedi | --localed | --locale) ac_prev=localedir ;; -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*) localedir=$ac_optarg ;; -localstatedir | --localstatedir | --localstatedi | --localstated \ | --localstate | --localstat | --localsta | --localst | --locals) ac_prev=localstatedir ;; -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*) localstatedir=$ac_optarg ;; -mandir | --mandir | --mandi | --mand | --man | --ma | --m) ac_prev=mandir ;; -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*) mandir=$ac_optarg ;; -nfp | --nfp | --nf) # Obsolete; use --without-fp. with_fp=no ;; -no-create | --no-create | --no-creat | --no-crea | --no-cre \ | --no-cr | --no-c | -n) no_create=yes ;; -no-recursion | --no-recursion | --no-recursio | --no-recursi \ | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) no_recursion=yes ;; -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \ | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \ | --oldin | --oldi | --old | --ol | --o) ac_prev=oldincludedir ;; -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \ | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \ | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*) oldincludedir=$ac_optarg ;; -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) ac_prev=prefix ;; -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) prefix=$ac_optarg ;; -program-prefix | --program-prefix | --program-prefi | --program-pref \ | --program-pre | --program-pr | --program-p) ac_prev=program_prefix ;; -program-prefix=* | --program-prefix=* | --program-prefi=* \ | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*) program_prefix=$ac_optarg ;; -program-suffix | --program-suffix | --program-suffi | --program-suff \ | --program-suf | --program-su | --program-s) ac_prev=program_suffix ;; -program-suffix=* | --program-suffix=* | --program-suffi=* \ | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*) program_suffix=$ac_optarg ;; -program-transform-name | --program-transform-name \ | --program-transform-nam | --program-transform-na \ | --program-transform-n | --program-transform- \ | --program-transform | --program-transfor \ | --program-transfo | --program-transf \ | --program-trans | --program-tran \ | --progr-tra | --program-tr | --program-t) ac_prev=program_transform_name ;; -program-transform-name=* | --program-transform-name=* \ | --program-transform-nam=* | --program-transform-na=* \ | --program-transform-n=* | --program-transform-=* \ | --program-transform=* | --program-transfor=* \ | --program-transfo=* | --program-transf=* \ | --program-trans=* | --program-tran=* \ | --progr-tra=* | --program-tr=* | --program-t=*) program_transform_name=$ac_optarg ;; -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd) ac_prev=pdfdir ;; -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*) pdfdir=$ac_optarg ;; -psdir | --psdir | --psdi | --psd | --ps) ac_prev=psdir ;; -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*) psdir=$ac_optarg ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil) silent=yes ;; -runstatedir | --runstatedir | --runstatedi | --runstated \ | --runstate | --runstat | --runsta | --runst | --runs \ | --run | --ru | --r) ac_prev=runstatedir ;; -runstatedir=* | --runstatedir=* | --runstatedi=* | --runstated=* \ | --runstate=* | --runstat=* | --runsta=* | --runst=* | --runs=* \ | --run=* | --ru=* | --r=*) runstatedir=$ac_optarg ;; -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) ac_prev=sbindir ;; -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ | --sbi=* | --sb=*) sbindir=$ac_optarg ;; -sharedstatedir | --sharedstatedir | --sharedstatedi \ | --sharedstated | --sharedstate | --sharedstat | --sharedsta \ | --sharedst | --shareds | --shared | --share | --shar \ | --sha | --sh) ac_prev=sharedstatedir ;; -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \ | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \ | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \ | --sha=* | --sh=*) sharedstatedir=$ac_optarg ;; -site | --site | --sit) ac_prev=site ;; -site=* | --site=* | --sit=*) site=$ac_optarg ;; -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) ac_prev=srcdir ;; -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) srcdir=$ac_optarg ;; -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \ | --syscon | --sysco | --sysc | --sys | --sy) ac_prev=sysconfdir ;; -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \ | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*) sysconfdir=$ac_optarg ;; -target | --target | --targe | --targ | --tar | --ta | --t) ac_prev=target_alias ;; -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) target_alias=$ac_optarg ;; -v | -verbose | --verbose | --verbos | --verbo | --verb) verbose=yes ;; -version | --version | --versio | --versi | --vers | -V) ac_init_version=: ;; -with-* | --with-*) ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid package name: $ac_useropt" ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "with_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--with-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval with_$ac_useropt=\$ac_optarg ;; -without-* | --without-*) ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid package name: $ac_useropt" ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "with_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--without-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval with_$ac_useropt=no ;; --x) # Obsolete; use --with-x. with_x=yes ;; -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \ | --x-incl | --x-inc | --x-in | --x-i) ac_prev=x_includes ;; -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \ | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*) x_includes=$ac_optarg ;; -x-libraries | --x-libraries | --x-librarie | --x-librari \ | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l) ac_prev=x_libraries ;; -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \ | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) x_libraries=$ac_optarg ;; -*) as_fn_error $? "unrecognized option: \`$ac_option' Try \`$0 --help' for more information" ;; *=*) ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='` # Reject names that are not valid shell variable names. case $ac_envvar in #( '' | [0-9]* | *[!_$as_cr_alnum]* ) as_fn_error $? "invalid variable name: \`$ac_envvar'" ;; esac eval $ac_envvar=\$ac_optarg export $ac_envvar ;; *) # FIXME: should be removed in autoconf 3.0. $as_echo "$as_me: WARNING: you should use --build, --host, --target" >&2 expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && $as_echo "$as_me: WARNING: invalid host type: $ac_option" >&2 : "${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}" ;; esac done if test -n "$ac_prev"; then ac_option=--`echo $ac_prev | sed 's/_/-/g'` as_fn_error $? "missing argument to $ac_option" fi if test -n "$ac_unrecognized_opts"; then case $enable_option_checking in no) ;; fatal) as_fn_error $? "unrecognized options: $ac_unrecognized_opts" ;; *) $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;; esac fi # Check all directory arguments for consistency. for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \ datadir sysconfdir sharedstatedir localstatedir includedir \ oldincludedir docdir infodir htmldir dvidir pdfdir psdir \ libdir localedir mandir runstatedir do eval ac_val=\$$ac_var # Remove trailing slashes. case $ac_val in */ ) ac_val=`expr "X$ac_val" : 'X\(.*[^/]\)' \| "X$ac_val" : 'X\(.*\)'` eval $ac_var=\$ac_val;; esac # Be sure to have absolute directory names. case $ac_val in [\\/$]* | ?:[\\/]* ) continue;; NONE | '' ) case $ac_var in *prefix ) continue;; esac;; esac as_fn_error $? "expected an absolute directory name for --$ac_var: $ac_val" done # There might be people who depend on the old broken behavior: `$host' # used to hold the argument of --host etc. # FIXME: To remove some day. build=$build_alias host=$host_alias target=$target_alias # FIXME: To remove some day. if test "x$host_alias" != x; then if test "x$build_alias" = x; then cross_compiling=maybe elif test "x$build_alias" != "x$host_alias"; then cross_compiling=yes fi fi ac_tool_prefix= test -n "$host_alias" && ac_tool_prefix=$host_alias- test "$silent" = yes && exec 6>/dev/null ac_pwd=`pwd` && test -n "$ac_pwd" && ac_ls_di=`ls -di .` && ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` || as_fn_error $? "working directory cannot be determined" test "X$ac_ls_di" = "X$ac_pwd_ls_di" || as_fn_error $? "pwd does not report name of working directory" # Find the source files, if location was not specified. if test -z "$srcdir"; then ac_srcdir_defaulted=yes # Try the directory containing this script, then the parent directory. ac_confdir=`$as_dirname -- "$as_myself" || $as_expr X"$as_myself" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_myself" : 'X\(//\)[^/]' \| \ X"$as_myself" : 'X\(//\)$' \| \ X"$as_myself" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$as_myself" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` srcdir=$ac_confdir if test ! -r "$srcdir/$ac_unique_file"; then srcdir=.. fi else ac_srcdir_defaulted=no fi if test ! -r "$srcdir/$ac_unique_file"; then test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .." as_fn_error $? "cannot find sources ($ac_unique_file) in $srcdir" fi ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work" ac_abs_confdir=`( cd "$srcdir" && test -r "./$ac_unique_file" || as_fn_error $? "$ac_msg" pwd)` # When building in place, set srcdir=. if test "$ac_abs_confdir" = "$ac_pwd"; then srcdir=. fi # Remove unnecessary trailing slashes from srcdir. # Double slashes in file names in object file debugging info # mess up M-x gdb in Emacs. case $srcdir in */) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;; esac for ac_var in $ac_precious_vars; do eval ac_env_${ac_var}_set=\${${ac_var}+set} eval ac_env_${ac_var}_value=\$${ac_var} eval ac_cv_env_${ac_var}_set=\${${ac_var}+set} eval ac_cv_env_${ac_var}_value=\$${ac_var} done # # Report the --help message. # if test "$ac_init_help" = "long"; then # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF \`configure' configures tcl3270 4.0 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... To assign environment variables (e.g., CC, CFLAGS...), specify them as VAR=VALUE. See below for descriptions of some of the useful variables. Defaults for the options are specified in brackets. Configuration: -h, --help display this help and exit --help=short display options specific to this package --help=recursive display the short help of all the included packages -V, --version display version information and exit -q, --quiet, --silent do not print \`checking ...' messages --cache-file=FILE cache test results in FILE [disabled] -C, --config-cache alias for \`--cache-file=config.cache' -n, --no-create do not create output files --srcdir=DIR find the sources in DIR [configure dir or \`..'] Installation directories: --prefix=PREFIX install architecture-independent files in PREFIX [$ac_default_prefix] --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX [PREFIX] By default, \`make install' will install all the files in \`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify an installation prefix other than \`$ac_default_prefix' using \`--prefix', for instance \`--prefix=\$HOME'. For better control, use the options below. Fine tuning of the installation directories: --bindir=DIR user executables [EPREFIX/bin] --sbindir=DIR system admin executables [EPREFIX/sbin] --libexecdir=DIR program executables [EPREFIX/libexec] --sysconfdir=DIR read-only single-machine data [PREFIX/etc] --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] --localstatedir=DIR modifiable single-machine data [PREFIX/var] --runstatedir=DIR modifiable per-process data [LOCALSTATEDIR/run] --libdir=DIR object code libraries [EPREFIX/lib] --includedir=DIR C header files [PREFIX/include] --oldincludedir=DIR C header files for non-gcc [/usr/include] --datarootdir=DIR read-only arch.-independent data root [PREFIX/share] --datadir=DIR read-only architecture-independent data [DATAROOTDIR] --infodir=DIR info documentation [DATAROOTDIR/info] --localedir=DIR locale-dependent data [DATAROOTDIR/locale] --mandir=DIR man documentation [DATAROOTDIR/man] --docdir=DIR documentation root [DATAROOTDIR/doc/tcl3270] --htmldir=DIR html documentation [DOCDIR] --dvidir=DIR dvi documentation [DOCDIR] --pdfdir=DIR pdf documentation [DOCDIR] --psdir=DIR ps documentation [DOCDIR] _ACEOF cat <<\_ACEOF System types: --build=BUILD configure for building on BUILD [guessed] --host=HOST cross-compile to build programs to run on HOST [BUILD] _ACEOF fi if test -n "$ac_init_help"; then case $ac_init_help in short | recursive ) echo "Configuration of tcl3270 4.0:";; esac cat <<\_ACEOF Optional Features: --disable-option-checking ignore unrecognized --enable/--with options --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) --enable-FEATURE[=ARG] include FEATURE [ARG=yes] --disable-dbcs leave out DBCS support --disable-local-process leave out local process support --disable-ipv6 leave out IPv6 support Some influential environment variables: CC C compiler command CFLAGS C compiler flags LDFLAGS linker flags, e.g. -L if you have libraries in a nonstandard directory LIBS libraries to pass to the linker, e.g. -l CPPFLAGS (Objective) C/C++ preprocessor flags, e.g. -I if you have headers in a nonstandard directory CPP C preprocessor Use these variables to override the choices made by `configure' or to help it to find libraries and programs with nonstandard names/locations. Report bugs to the package provider. _ACEOF ac_status=$? fi if test "$ac_init_help" = "recursive"; then # If there are subdirs, report their specific --help. for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue test -d "$ac_dir" || { cd "$srcdir" && ac_pwd=`pwd` && srcdir=. && test -d "$ac_dir"; } || continue ac_builddir=. case "$ac_dir" in .) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` # A ".." for each directory in $ac_dir_suffix. ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` case $ac_top_builddir_sub in "") ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; esac ;; esac ac_abs_top_builddir=$ac_pwd ac_abs_builddir=$ac_pwd$ac_dir_suffix # for backward compatibility: ac_top_builddir=$ac_top_build_prefix case $srcdir in .) # We are building in place. ac_srcdir=. ac_top_srcdir=$ac_top_builddir_sub ac_abs_top_srcdir=$ac_pwd ;; [\\/]* | ?:[\\/]* ) # Absolute name. ac_srcdir=$srcdir$ac_dir_suffix; ac_top_srcdir=$srcdir ac_abs_top_srcdir=$srcdir ;; *) # Relative name. ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix ac_top_srcdir=$ac_top_build_prefix$srcdir ac_abs_top_srcdir=$ac_pwd/$srcdir ;; esac ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix cd "$ac_dir" || { ac_status=$?; continue; } # Check for guested configure. if test -f "$ac_srcdir/configure.gnu"; then echo && $SHELL "$ac_srcdir/configure.gnu" --help=recursive elif test -f "$ac_srcdir/configure"; then echo && $SHELL "$ac_srcdir/configure" --help=recursive else $as_echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2 fi || ac_status=$? cd "$ac_pwd" || { ac_status=$?; break; } done fi test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF tcl3270 configure 4.0 generated by GNU Autoconf 2.69 Copyright (C) 2012 Free Software Foundation, Inc. This configure script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it. _ACEOF exit fi ## ------------------------ ## ## Autoconf initialization. ## ## ------------------------ ## # ac_fn_c_try_compile LINENO # -------------------------- # Try to compile conftest.$ac_ext, and return whether this succeeded. ac_fn_c_try_compile () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack rm -f conftest.$ac_objext if { { ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_compile") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then : ac_retval=0 else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_c_try_compile # ac_fn_c_try_cpp LINENO # ---------------------- # Try to preprocess conftest.$ac_ext, and return whether this succeeded. ac_fn_c_try_cpp () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack if { { ac_try="$ac_cpp conftest.$ac_ext" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } > conftest.i && { test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || test ! -s conftest.err }; then : ac_retval=0 else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_c_try_cpp # ac_fn_c_check_header_mongrel LINENO HEADER VAR INCLUDES # ------------------------------------------------------- # Tests whether HEADER exists, giving a warning if it cannot be compiled using # the include files in INCLUDES and setting the cache variable VAR # accordingly. ac_fn_c_check_header_mongrel () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack if eval \${$3+:} false; then : { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 $as_echo_n "checking for $2... " >&6; } if eval \${$3+:} false; then : $as_echo_n "(cached) " >&6 fi eval ac_res=\$$3 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } else # Is the header compilable? { $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 usability" >&5 $as_echo_n "checking $2 usability... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 #include <$2> _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_header_compiler=yes else ac_header_compiler=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_compiler" >&5 $as_echo "$ac_header_compiler" >&6; } # Is the header present? { $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 presence" >&5 $as_echo_n "checking $2 presence... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include <$2> _ACEOF if ac_fn_c_try_cpp "$LINENO"; then : ac_header_preproc=yes else ac_header_preproc=no fi rm -f conftest.err conftest.i conftest.$ac_ext { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_preproc" >&5 $as_echo "$ac_header_preproc" >&6; } # So? What about this header? case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in #(( yes:no: ) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&5 $as_echo "$as_me: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5 $as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;} ;; no:yes:* ) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: present but cannot be compiled" >&5 $as_echo "$as_me: WARNING: $2: present but cannot be compiled" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: check for missing prerequisite headers?" >&5 $as_echo "$as_me: WARNING: $2: check for missing prerequisite headers?" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: see the Autoconf documentation" >&5 $as_echo "$as_me: WARNING: $2: see the Autoconf documentation" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&5 $as_echo "$as_me: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5 $as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;} ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 $as_echo_n "checking for $2... " >&6; } if eval \${$3+:} false; then : $as_echo_n "(cached) " >&6 else eval "$3=\$ac_header_compiler" fi eval ac_res=\$$3 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } fi eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } # ac_fn_c_check_header_mongrel # ac_fn_c_try_run LINENO # ---------------------- # Try to link conftest.$ac_ext, and return whether this succeeded. Assumes # that executables *can* be run. ac_fn_c_try_run () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack if { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { ac_try='./conftest$ac_exeext' { { case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_try") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; }; then : ac_retval=0 else $as_echo "$as_me: program exited with status $ac_status" >&5 $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=$ac_status fi rm -rf conftest.dSYM conftest_ipa8_conftest.oo eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_c_try_run # ac_fn_c_check_header_compile LINENO HEADER VAR INCLUDES # ------------------------------------------------------- # Tests whether HEADER exists and can be compiled using the include files in # INCLUDES, setting the cache variable VAR accordingly. ac_fn_c_check_header_compile () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 $as_echo_n "checking for $2... " >&6; } if eval \${$3+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 #include <$2> _ACEOF if ac_fn_c_try_compile "$LINENO"; then : eval "$3=yes" else eval "$3=no" fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi eval ac_res=\$$3 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } # ac_fn_c_check_header_compile # ac_fn_c_try_link LINENO # ----------------------- # Try to link conftest.$ac_ext, and return whether this succeeded. ac_fn_c_try_link () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack rm -f conftest.$ac_objext conftest$ac_exeext if { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || test -x conftest$ac_exeext }; then : ac_retval=0 else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would # interfere with the next link command; also delete a directory that is # left behind by Apple's compiler. We do this before executing the actions. rm -rf conftest.dSYM conftest_ipa8_conftest.oo eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_c_try_link # ac_fn_c_check_func LINENO FUNC VAR # ---------------------------------- # Tests whether FUNC exists, setting the cache variable VAR accordingly ac_fn_c_check_func () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 $as_echo_n "checking for $2... " >&6; } if eval \${$3+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Define $2 to an innocuous variant, in case declares $2. For example, HP-UX 11i declares gettimeofday. */ #define $2 innocuous_$2 /* System header to define __stub macros and hopefully few prototypes, which can conflict with char $2 (); below. Prefer to if __STDC__ is defined, since exists even on freestanding compilers. */ #ifdef __STDC__ # include #else # include #endif #undef $2 /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char $2 (); /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined __stub_$2 || defined __stub___$2 choke me #endif int main () { return $2 (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : eval "$3=yes" else eval "$3=no" fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi eval ac_res=\$$3 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } # ac_fn_c_check_func cat >config.log <<_ACEOF This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. It was created by tcl3270 $as_me 4.0, which was generated by GNU Autoconf 2.69. Invocation command line was $ $0 $@ _ACEOF exec 5>>config.log { cat <<_ASUNAME ## --------- ## ## Platform. ## ## --------- ## hostname = `(hostname || uname -n) 2>/dev/null | sed 1q` uname -m = `(uname -m) 2>/dev/null || echo unknown` uname -r = `(uname -r) 2>/dev/null || echo unknown` uname -s = `(uname -s) 2>/dev/null || echo unknown` uname -v = `(uname -v) 2>/dev/null || echo unknown` /usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown` /bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown` /bin/arch = `(/bin/arch) 2>/dev/null || echo unknown` /usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown` /usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown` /usr/bin/hostinfo = `(/usr/bin/hostinfo) 2>/dev/null || echo unknown` /bin/machine = `(/bin/machine) 2>/dev/null || echo unknown` /usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown` /bin/universe = `(/bin/universe) 2>/dev/null || echo unknown` _ASUNAME as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. $as_echo "PATH: $as_dir" done IFS=$as_save_IFS } >&5 cat >&5 <<_ACEOF ## ----------- ## ## Core tests. ## ## ----------- ## _ACEOF # Keep a trace of the command line. # Strip out --no-create and --no-recursion so they do not pile up. # Strip out --silent because we don't want to record it for future runs. # Also quote any args containing shell meta-characters. # Make two passes to allow for proper duplicate-argument suppression. ac_configure_args= ac_configure_args0= ac_configure_args1= ac_must_keep_next=false for ac_pass in 1 2 do for ac_arg do case $ac_arg in -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil) continue ;; *\'*) ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; esac case $ac_pass in 1) as_fn_append ac_configure_args0 " '$ac_arg'" ;; 2) as_fn_append ac_configure_args1 " '$ac_arg'" if test $ac_must_keep_next = true; then ac_must_keep_next=false # Got value, back to normal. else case $ac_arg in *=* | --config-cache | -C | -disable-* | --disable-* \ | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \ | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \ | -with-* | --with-* | -without-* | --without-* | --x) case "$ac_configure_args0 " in "$ac_configure_args1"*" '$ac_arg' "* ) continue ;; esac ;; -* ) ac_must_keep_next=true ;; esac fi as_fn_append ac_configure_args " '$ac_arg'" ;; esac done done { ac_configure_args0=; unset ac_configure_args0;} { ac_configure_args1=; unset ac_configure_args1;} # When interrupted or exit'd, cleanup temporary files, and complete # config.log. We remove comments because anyway the quotes in there # would cause problems or look ugly. # WARNING: Use '\'' to represent an apostrophe within the trap. # WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug. trap 'exit_status=$? # Save into config.log some information that might help in debugging. { echo $as_echo "## ---------------- ## ## Cache variables. ## ## ---------------- ##" echo # The following way of writing the cache mishandles newlines in values, ( for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do eval ac_val=\$$ac_var case $ac_val in #( *${as_nl}*) case $ac_var in #( *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 $as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; esac case $ac_var in #( _ | IFS | as_nl) ;; #( BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( *) { eval $ac_var=; unset $ac_var;} ;; esac ;; esac done (set) 2>&1 | case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #( *${as_nl}ac_space=\ *) sed -n \ "s/'\''/'\''\\\\'\'''\''/g; s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p" ;; #( *) sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" ;; esac | sort ) echo $as_echo "## ----------------- ## ## Output variables. ## ## ----------------- ##" echo for ac_var in $ac_subst_vars do eval ac_val=\$$ac_var case $ac_val in *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; esac $as_echo "$ac_var='\''$ac_val'\''" done | sort echo if test -n "$ac_subst_files"; then $as_echo "## ------------------- ## ## File substitutions. ## ## ------------------- ##" echo for ac_var in $ac_subst_files do eval ac_val=\$$ac_var case $ac_val in *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; esac $as_echo "$ac_var='\''$ac_val'\''" done | sort echo fi if test -s confdefs.h; then $as_echo "## ----------- ## ## confdefs.h. ## ## ----------- ##" echo cat confdefs.h echo fi test "$ac_signal" != 0 && $as_echo "$as_me: caught signal $ac_signal" $as_echo "$as_me: exit $exit_status" } >&5 rm -f core *.core core.conftest.* && rm -f -r conftest* confdefs* conf$$* $ac_clean_files && exit $exit_status ' 0 for ac_signal in 1 2 13 15; do trap 'ac_signal='$ac_signal'; as_fn_exit 1' $ac_signal done ac_signal=0 # confdefs.h avoids OS command line length limits that DEFS can exceed. rm -f -r conftest* confdefs.h $as_echo "/* confdefs.h */" > confdefs.h # Predefined preprocessor variables. cat >>confdefs.h <<_ACEOF #define PACKAGE_NAME "$PACKAGE_NAME" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_TARNAME "$PACKAGE_TARNAME" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_VERSION "$PACKAGE_VERSION" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_STRING "$PACKAGE_STRING" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_URL "$PACKAGE_URL" _ACEOF # Let the site file select an alternate cache file if it wants to. # Prefer an explicitly selected file to automatically selected ones. ac_site_file1=NONE ac_site_file2=NONE if test -n "$CONFIG_SITE"; then # We do not want a PATH search for config.site. case $CONFIG_SITE in #(( -*) ac_site_file1=./$CONFIG_SITE;; */*) ac_site_file1=$CONFIG_SITE;; *) ac_site_file1=./$CONFIG_SITE;; esac elif test "x$prefix" != xNONE; then ac_site_file1=$prefix/share/config.site ac_site_file2=$prefix/etc/config.site else ac_site_file1=$ac_default_prefix/share/config.site ac_site_file2=$ac_default_prefix/etc/config.site fi for ac_site_file in "$ac_site_file1" "$ac_site_file2" do test "x$ac_site_file" = xNONE && continue if test /dev/null != "$ac_site_file" && test -r "$ac_site_file"; then { $as_echo "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5 $as_echo "$as_me: loading site script $ac_site_file" >&6;} sed 's/^/| /' "$ac_site_file" >&5 . "$ac_site_file" \ || { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "failed to load site script $ac_site_file See \`config.log' for more details" "$LINENO" 5; } fi done if test -r "$cache_file"; then # Some versions of bash will fail to source /dev/null (special files # actually), so we avoid doing that. DJGPP emulates it as a regular file. if test /dev/null != "$cache_file" && test -f "$cache_file"; then { $as_echo "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5 $as_echo "$as_me: loading cache $cache_file" >&6;} case $cache_file in [\\/]* | ?:[\\/]* ) . "$cache_file";; *) . "./$cache_file";; esac fi else { $as_echo "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5 $as_echo "$as_me: creating cache $cache_file" >&6;} >$cache_file fi # Check that the precious variables saved in the cache have kept the same # value. ac_cache_corrupted=false for ac_var in $ac_precious_vars; do eval ac_old_set=\$ac_cv_env_${ac_var}_set eval ac_new_set=\$ac_env_${ac_var}_set eval ac_old_val=\$ac_cv_env_${ac_var}_value eval ac_new_val=\$ac_env_${ac_var}_value case $ac_old_set,$ac_new_set in set,) { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 $as_echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} ac_cache_corrupted=: ;; ,set) { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was not set in the previous run" >&5 $as_echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} ac_cache_corrupted=: ;; ,);; *) if test "x$ac_old_val" != "x$ac_new_val"; then # differences in whitespace do not lead to failure. ac_old_val_w=`echo x $ac_old_val` ac_new_val_w=`echo x $ac_new_val` if test "$ac_old_val_w" != "$ac_new_val_w"; then { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' has changed since the previous run:" >&5 $as_echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} ac_cache_corrupted=: else { $as_echo "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5 $as_echo "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;} eval $ac_var=\$ac_old_val fi { $as_echo "$as_me:${as_lineno-$LINENO}: former value: \`$ac_old_val'" >&5 $as_echo "$as_me: former value: \`$ac_old_val'" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: current value: \`$ac_new_val'" >&5 $as_echo "$as_me: current value: \`$ac_new_val'" >&2;} fi;; esac # Pass precious variables to config.status. if test "$ac_new_set" = set; then case $ac_new_val in *\'*) ac_arg=$ac_var=`$as_echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; *) ac_arg=$ac_var=$ac_new_val ;; esac case " $ac_configure_args " in *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy. *) as_fn_append ac_configure_args " '$ac_arg'" ;; esac fi done if $ac_cache_corrupted; then { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5 $as_echo "$as_me: error: changes in the environment can compromise the build" >&2;} as_fn_error $? "run \`make distclean' and/or \`rm $cache_file' and start over" "$LINENO" 5 fi ## -------------------- ## ## Main body of script. ## ## -------------------- ## ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu ac_aux_dir= for ac_dir in "$srcdir" "$srcdir/.." "$srcdir/../.."; do if test -f "$ac_dir/install-sh"; then ac_aux_dir=$ac_dir ac_install_sh="$ac_aux_dir/install-sh -c" break elif test -f "$ac_dir/install.sh"; then ac_aux_dir=$ac_dir ac_install_sh="$ac_aux_dir/install.sh -c" break elif test -f "$ac_dir/shtool"; then ac_aux_dir=$ac_dir ac_install_sh="$ac_aux_dir/shtool install -c" break fi done if test -z "$ac_aux_dir"; then as_fn_error $? "cannot find install-sh, install.sh, or shtool in \"$srcdir\" \"$srcdir/..\" \"$srcdir/../..\"" "$LINENO" 5 fi # These three variables are undocumented and unsupported, # and are intended to be withdrawn in a future Autoconf release. # They can cause serious problems if a builder's source tree is in a directory # whose full name contains unusual characters. ac_config_guess="$SHELL $ac_aux_dir/config.guess" # Please don't use this var. ac_config_sub="$SHELL $ac_aux_dir/config.sub" # Please don't use this var. ac_configure="$SHELL $ac_aux_dir/configure" # Please don't use this var. # Find a good install program. We prefer a C program (faster), # so one script is as good as another. But avoid the broken or # incompatible versions: # SysV /etc/install, /usr/sbin/install # SunOS /usr/etc/install # IRIX /sbin/install # AIX /bin/install # AmigaOS /C/install, which installs bootblocks on floppy discs # AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag # AFS /usr/afsws/bin/install, which mishandles nonexistent args # SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" # OS/2's system install, which has a completely different semantic # ./install, which can be erroneously created by make from ./install.sh. # Reject install programs that cannot install multiple files. { $as_echo "$as_me:${as_lineno-$LINENO}: checking for a BSD-compatible install" >&5 $as_echo_n "checking for a BSD-compatible install... " >&6; } if test -z "$INSTALL"; then if ${ac_cv_path_install+:} false; then : $as_echo_n "(cached) " >&6 else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. # Account for people who put trailing slashes in PATH elements. case $as_dir/ in #(( ./ | .// | /[cC]/* | \ /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \ ?:[\\/]os2[\\/]install[\\/]* | ?:[\\/]OS2[\\/]INSTALL[\\/]* | \ /usr/ucb/* ) ;; *) # OSF1 and SCO ODT 3.0 have their own names for install. # Don't use installbsd from OSF since it installs stuff as root # by default. for ac_prog in ginstall scoinst install; do for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then if test $ac_prog = install && grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then # AIX install. It has an incompatible calling convention. : elif test $ac_prog = install && grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then # program-specific install script used by HP pwplus--don't use. : else rm -rf conftest.one conftest.two conftest.dir echo one > conftest.one echo two > conftest.two mkdir conftest.dir if "$as_dir/$ac_prog$ac_exec_ext" -c conftest.one conftest.two "`pwd`/conftest.dir" && test -s conftest.one && test -s conftest.two && test -s conftest.dir/conftest.one && test -s conftest.dir/conftest.two then ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c" break 3 fi fi fi done done ;; esac done IFS=$as_save_IFS rm -rf conftest.one conftest.two conftest.dir fi if test "${ac_cv_path_install+set}" = set; then INSTALL=$ac_cv_path_install else # As a last resort, use the slow shell script. Don't cache a # value for INSTALL within a source directory, because that will # break other packages using the cache if that directory is # removed, or if the value is a relative name. INSTALL=$ac_install_sh fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $INSTALL" >&5 $as_echo "$INSTALL" >&6; } # Use test -z because SunOS4 sh mishandles braces in ${var-val}. # It thinks the first close brace ends the variable substitution. test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}' test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}' test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. set dummy ${ac_tool_prefix}gcc; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CC="${ac_tool_prefix}gcc" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_CC"; then ac_ct_CC=$CC # Extract the first word of "gcc", so it can be a program name with args. set dummy gcc; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CC="gcc" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 $as_echo "$ac_ct_CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_CC" = x; then CC="" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CC=$ac_ct_CC fi else CC="$ac_cv_prog_CC" fi if test -z "$CC"; then if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. set dummy ${ac_tool_prefix}cc; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CC="${ac_tool_prefix}cc" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi fi if test -z "$CC"; then # Extract the first word of "cc", so it can be a program name with args. set dummy cc; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else ac_prog_rejected=no as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then ac_prog_rejected=yes continue fi ac_cv_prog_CC="cc" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS if test $ac_prog_rejected = yes; then # We found a bogon in the path, so make sure we never use it. set dummy $ac_cv_prog_CC shift if test $# != 0; then # We chose a different compiler from the bogus one. # However, it has the same basename, so the bogon will be chosen # first if we set CC to just the basename; use the full file name. shift ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@" fi fi fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$CC"; then if test -n "$ac_tool_prefix"; then for ac_prog in cl.exe do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CC="$ac_tool_prefix$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$CC" && break done fi if test -z "$CC"; then ac_ct_CC=$CC for ac_prog in cl.exe do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CC="$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 $as_echo "$ac_ct_CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$ac_ct_CC" && break done if test "x$ac_ct_CC" = x; then CC="" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CC=$ac_ct_CC fi fi fi test -z "$CC" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "no acceptable C compiler found in \$PATH See \`config.log' for more details" "$LINENO" 5; } # Provide some information about the compiler. $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5 set X $ac_compile ac_compiler=$2 for ac_option in --version -v -V -qversion; do { { ac_try="$ac_compiler $ac_option >&5" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_compiler $ac_option >&5") 2>conftest.err ac_status=$? if test -s conftest.err; then sed '10a\ ... rest of stderr output deleted ... 10q' conftest.err >conftest.er1 cat conftest.er1 >&5 fi rm -f conftest.er1 conftest.err $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } done cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF ac_clean_files_save=$ac_clean_files ac_clean_files="$ac_clean_files a.out a.out.dSYM a.exe b.out" # Try to create an executable without -o first, disregard a.out. # It will help us diagnose broken compilers, and finding out an intuition # of exeext. { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler works" >&5 $as_echo_n "checking whether the C compiler works... " >&6; } ac_link_default=`$as_echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'` # The possible output files: ac_files="a.out conftest.exe conftest a.exe a_out.exe b.out conftest.*" ac_rmfiles= for ac_file in $ac_files do case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; * ) ac_rmfiles="$ac_rmfiles $ac_file";; esac done rm -f $ac_rmfiles if { { ac_try="$ac_link_default" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link_default") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then : # Autoconf-2.13 could set the ac_cv_exeext variable to `no'. # So ignore a value of `no', otherwise this would lead to `EXEEXT = no' # in a Makefile. We should not override ac_cv_exeext if it was cached, # so that the user can short-circuit this test for compilers unknown to # Autoconf. for ac_file in $ac_files '' do test -f "$ac_file" || continue case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; [ab].out ) # We found the default executable, but exeext='' is most # certainly right. break;; *.* ) if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no; then :; else ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` fi # We set ac_cv_exeext here because the later test for it is not # safe: cross compilers may not add the suffix if given an `-o' # argument, so we may need to know it at that point already. # Even if this section looks crufty: it has the advantage of # actually working. break;; * ) break;; esac done test "$ac_cv_exeext" = no && ac_cv_exeext= else ac_file='' fi if test -z "$ac_file"; then : { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error 77 "C compiler cannot create executables See \`config.log' for more details" "$LINENO" 5; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler default output file name" >&5 $as_echo_n "checking for C compiler default output file name... " >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5 $as_echo "$ac_file" >&6; } ac_exeext=$ac_cv_exeext rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out ac_clean_files=$ac_clean_files_save { $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5 $as_echo_n "checking for suffix of executables... " >&6; } if { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then : # If both `conftest.exe' and `conftest' are `present' (well, observable) # catch `conftest.exe'. For instance with Cygwin, `ls conftest' will # work properly (i.e., refer to `conftest.exe'), while it won't with # `rm'. for ac_file in conftest.exe conftest conftest.*; do test -f "$ac_file" || continue case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` break;; * ) break;; esac done else { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "cannot compute suffix of executables: cannot compile and link See \`config.log' for more details" "$LINENO" 5; } fi rm -f conftest conftest$ac_cv_exeext { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5 $as_echo "$ac_cv_exeext" >&6; } rm -f conftest.$ac_ext EXEEXT=$ac_cv_exeext ac_exeext=$EXEEXT cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main () { FILE *f = fopen ("conftest.out", "w"); return ferror (f) || fclose (f) != 0; ; return 0; } _ACEOF ac_clean_files="$ac_clean_files conftest.out" # Check that the compiler produces executables we can run. If not, either # the compiler is broken, or we cross compile. { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5 $as_echo_n "checking whether we are cross compiling... " >&6; } if test "$cross_compiling" != yes; then { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } if { ac_try='./conftest$ac_cv_exeext' { { case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_try") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; }; then cross_compiling=no else if test "$cross_compiling" = maybe; then cross_compiling=yes else { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "cannot run C compiled programs. If you meant to cross compile, use \`--host'. See \`config.log' for more details" "$LINENO" 5; } fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5 $as_echo "$cross_compiling" >&6; } rm -f conftest.$ac_ext conftest$ac_cv_exeext conftest.out ac_clean_files=$ac_clean_files_save { $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5 $as_echo_n "checking for suffix of object files... " >&6; } if ${ac_cv_objext+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF rm -f conftest.o conftest.obj if { { ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_compile") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then : for ac_file in conftest.o conftest.obj conftest.*; do test -f "$ac_file" || continue; case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM ) ;; *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'` break;; esac done else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "cannot compute suffix of object files: cannot compile See \`config.log' for more details" "$LINENO" 5; } fi rm -f conftest.$ac_cv_objext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5 $as_echo "$ac_cv_objext" >&6; } OBJEXT=$ac_cv_objext ac_objext=$OBJEXT { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C compiler" >&5 $as_echo_n "checking whether we are using the GNU C compiler... " >&6; } if ${ac_cv_c_compiler_gnu+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { #ifndef __GNUC__ choke me #endif ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_compiler_gnu=yes else ac_compiler_gnu=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_cv_c_compiler_gnu=$ac_compiler_gnu fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5 $as_echo "$ac_cv_c_compiler_gnu" >&6; } if test $ac_compiler_gnu = yes; then GCC=yes else GCC= fi ac_test_CFLAGS=${CFLAGS+set} ac_save_CFLAGS=$CFLAGS { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5 $as_echo_n "checking whether $CC accepts -g... " >&6; } if ${ac_cv_prog_cc_g+:} false; then : $as_echo_n "(cached) " >&6 else ac_save_c_werror_flag=$ac_c_werror_flag ac_c_werror_flag=yes ac_cv_prog_cc_g=no CFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_prog_cc_g=yes else CFLAGS="" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : else ac_c_werror_flag=$ac_save_c_werror_flag CFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_prog_cc_g=yes fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_c_werror_flag=$ac_save_c_werror_flag fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5 $as_echo "$ac_cv_prog_cc_g" >&6; } if test "$ac_test_CFLAGS" = set; then CFLAGS=$ac_save_CFLAGS elif test $ac_cv_prog_cc_g = yes; then if test "$GCC" = yes; then CFLAGS="-g -O2" else CFLAGS="-g" fi else if test "$GCC" = yes; then CFLAGS="-O2" else CFLAGS= fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5 $as_echo_n "checking for $CC option to accept ISO C89... " >&6; } if ${ac_cv_prog_cc_c89+:} false; then : $as_echo_n "(cached) " >&6 else ac_cv_prog_cc_c89=no ac_save_CC=$CC cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include struct stat; /* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */ struct buf { int x; }; FILE * (*rcsopen) (struct buf *, struct stat *, int); static char *e (p, i) char **p; int i; { return p[i]; } static char *f (char * (*g) (char **, int), char **p, ...) { char *s; va_list v; va_start (v,p); s = g (p, va_arg (v,int)); va_end (v); return s; } /* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has function prototypes and stuff, but not '\xHH' hex character constants. These don't provoke an error unfortunately, instead are silently treated as 'x'. The following induces an error, until -std is added to get proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an array size at least. It's necessary to write '\x00'==0 to get something that's true only with -std. */ int osf4_cc_array ['\x00' == 0 ? 1 : -1]; /* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters inside strings and character constants. */ #define FOO(x) 'x' int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1]; int test (int i, double x); struct s1 {int (*f) (int a);}; struct s2 {int (*f) (double a);}; int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int); int argc; char **argv; int main () { return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]; ; return 0; } _ACEOF for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \ -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" do CC="$ac_save_CC $ac_arg" if ac_fn_c_try_compile "$LINENO"; then : ac_cv_prog_cc_c89=$ac_arg fi rm -f core conftest.err conftest.$ac_objext test "x$ac_cv_prog_cc_c89" != "xno" && break done rm -f conftest.$ac_ext CC=$ac_save_CC fi # AC_CACHE_VAL case "x$ac_cv_prog_cc_c89" in x) { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 $as_echo "none needed" >&6; } ;; xno) { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 $as_echo "unsupported" >&6; } ;; *) CC="$CC $ac_cv_prog_cc_c89" { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5 $as_echo "$ac_cv_prog_cc_c89" >&6; } ;; esac if test "x$ac_cv_prog_cc_c89" != xno; then : fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu # Make sure we can run config.sub. $SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 || as_fn_error $? "cannot run $SHELL $ac_aux_dir/config.sub" "$LINENO" 5 { $as_echo "$as_me:${as_lineno-$LINENO}: checking build system type" >&5 $as_echo_n "checking build system type... " >&6; } if ${ac_cv_build+:} false; then : $as_echo_n "(cached) " >&6 else ac_build_alias=$build_alias test "x$ac_build_alias" = x && ac_build_alias=`$SHELL "$ac_aux_dir/config.guess"` test "x$ac_build_alias" = x && as_fn_error $? "cannot guess build type; you must specify one" "$LINENO" 5 ac_cv_build=`$SHELL "$ac_aux_dir/config.sub" $ac_build_alias` || as_fn_error $? "$SHELL $ac_aux_dir/config.sub $ac_build_alias failed" "$LINENO" 5 fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build" >&5 $as_echo "$ac_cv_build" >&6; } case $ac_cv_build in *-*-*) ;; *) as_fn_error $? "invalid value of canonical build" "$LINENO" 5;; esac build=$ac_cv_build ac_save_IFS=$IFS; IFS='-' set x $ac_cv_build shift build_cpu=$1 build_vendor=$2 shift; shift # Remember, the first character of IFS is used to create $*, # except with old shells: build_os=$* IFS=$ac_save_IFS case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking host system type" >&5 $as_echo_n "checking host system type... " >&6; } if ${ac_cv_host+:} false; then : $as_echo_n "(cached) " >&6 else if test "x$host_alias" = x; then ac_cv_host=$ac_cv_build else ac_cv_host=`$SHELL "$ac_aux_dir/config.sub" $host_alias` || as_fn_error $? "$SHELL $ac_aux_dir/config.sub $host_alias failed" "$LINENO" 5 fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_host" >&5 $as_echo "$ac_cv_host" >&6; } case $ac_cv_host in *-*-*) ;; *) as_fn_error $? "invalid value of canonical host" "$LINENO" 5;; esac host=$ac_cv_host ac_save_IFS=$IFS; IFS='-' set x $ac_cv_host shift host_cpu=$1 host_vendor=$2 shift; shift # Remember, the first character of IFS is used to create $*, # except with old shells: host_os=$* IFS=$ac_save_IFS case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac ansi="-std=c99 -pedantic" case "$host_os" in cygwin*) CPPFLAGS="$CPPFLAGS -D_XOPEN_SOURCE_EXTENDED" ansi="" ;; solaris2*) CPPFLAGS="$CPPFLAGS -D__EXTENSIONS__" ;; darwin*) CCOPTIONS="$CCOPTIONS -no-cpp-precomp -Wno-deprecated-declarations" ;; linux*) CPPFLAGS="$CPPFLAGS -D_XOPEN_SOURCE -D_BSD_SOURCE -D_DEFAULT_SOURCE" ;; esac if test "$GCC" = yes then # Add common gcc options, plus flags for dependency generation. CCOPTIONS="$CCOPTIONS -Wall -Wsign-compare $ansi -Wno-variadic-macros -Wno-long-long -MMD -MP" fi # Extract the first word of "tclsh", so it can be a program name with args. set dummy tclsh; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_tclsh+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$tclsh"; then ac_cv_prog_tclsh="$tclsh" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_tclsh="yes" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS test -z "$ac_cv_prog_tclsh" && ac_cv_prog_tclsh="no" fi fi tclsh=$ac_cv_prog_tclsh if test -n "$tclsh"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $tclsh" >&5 $as_echo "$tclsh" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "$tclsh" = no then as_fn_error $? "Can't find tclsh" "$LINENO" 5 fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking Tcl version" >&5 $as_echo_n "checking Tcl version... " >&6; } tclver=`echo "puts [set tcl_version]" | tclsh` if test -z "$tclver" then as_fn_error $? "Can't figure out Tcl version" "$LINENO" 5 fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $tclver" >&5 $as_echo "$tclver" >&6; } pthread=`echo $tclver | awk -F . '{ if ($1 > 8 || $2 >= 6) print "1"}'` tclvr=`echo $tclver | tr -d .` ac_config_headers="$ac_config_headers conf.h" ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C preprocessor" >&5 $as_echo_n "checking how to run the C preprocessor... " >&6; } # On Suns, sometimes $CPP names a directory. if test -n "$CPP" && test -d "$CPP"; then CPP= fi if test -z "$CPP"; then if ${ac_cv_prog_CPP+:} false; then : $as_echo_n "(cached) " >&6 else # Double quotes because CPP needs to be expanded for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp" do ac_preproc_ok=false for ac_c_preproc_warn_flag in '' yes do # Use a header file that comes with gcc, so configuring glibc # with a fresh cross-compiler works. # Prefer to if __STDC__ is defined, since # exists even on freestanding compilers. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifdef __STDC__ # include #else # include #endif Syntax error _ACEOF if ac_fn_c_try_cpp "$LINENO"; then : else # Broken: fails on valid input. continue fi rm -f conftest.err conftest.i conftest.$ac_ext # OK, works on sane cases. Now check whether nonexistent headers # can be detected and how. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if ac_fn_c_try_cpp "$LINENO"; then : # Broken: success on invalid input. continue else # Passes both tests. ac_preproc_ok=: break fi rm -f conftest.err conftest.i conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f conftest.i conftest.err conftest.$ac_ext if $ac_preproc_ok; then : break fi done ac_cv_prog_CPP=$CPP fi CPP=$ac_cv_prog_CPP else ac_cv_prog_CPP=$CPP fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CPP" >&5 $as_echo "$CPP" >&6; } ac_preproc_ok=false for ac_c_preproc_warn_flag in '' yes do # Use a header file that comes with gcc, so configuring glibc # with a fresh cross-compiler works. # Prefer to if __STDC__ is defined, since # exists even on freestanding compilers. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifdef __STDC__ # include #else # include #endif Syntax error _ACEOF if ac_fn_c_try_cpp "$LINENO"; then : else # Broken: fails on valid input. continue fi rm -f conftest.err conftest.i conftest.$ac_ext # OK, works on sane cases. Now check whether nonexistent headers # can be detected and how. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if ac_fn_c_try_cpp "$LINENO"; then : # Broken: success on invalid input. continue else # Passes both tests. ac_preproc_ok=: break fi rm -f conftest.err conftest.i conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f conftest.i conftest.err conftest.$ac_ext if $ac_preproc_ok; then : else { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "C preprocessor \"$CPP\" fails sanity check See \`config.log' for more details" "$LINENO" 5; } fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu { $as_echo "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5 $as_echo_n "checking for grep that handles long lines and -e... " >&6; } if ${ac_cv_path_GREP+:} false; then : $as_echo_n "(cached) " >&6 else if test -z "$GREP"; then ac_path_GREP_found=false # Loop through the user's path and test for each of PROGNAME-LIST as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_prog in grep ggrep; do for ac_exec_ext in '' $ac_executable_extensions; do ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext" as_fn_executable_p "$ac_path_GREP" || continue # Check for GNU ac_path_GREP and select it if it is found. # Check for GNU $ac_path_GREP case `"$ac_path_GREP" --version 2>&1` in *GNU*) ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;; *) ac_count=0 $as_echo_n 0123456789 >"conftest.in" while : do cat "conftest.in" "conftest.in" >"conftest.tmp" mv "conftest.tmp" "conftest.in" cp "conftest.in" "conftest.nl" $as_echo 'GREP' >> "conftest.nl" "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break as_fn_arith $ac_count + 1 && ac_count=$as_val if test $ac_count -gt ${ac_path_GREP_max-0}; then # Best one so far, save it but keep looking for a better one ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_max=$ac_count fi # 10*(2^10) chars as input seems more than enough test $ac_count -gt 10 && break done rm -f conftest.in conftest.tmp conftest.nl conftest.out;; esac $ac_path_GREP_found && break 3 done done done IFS=$as_save_IFS if test -z "$ac_cv_path_GREP"; then as_fn_error $? "no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 fi else ac_cv_path_GREP=$GREP fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP" >&5 $as_echo "$ac_cv_path_GREP" >&6; } GREP="$ac_cv_path_GREP" { $as_echo "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5 $as_echo_n "checking for egrep... " >&6; } if ${ac_cv_path_EGREP+:} false; then : $as_echo_n "(cached) " >&6 else if echo a | $GREP -E '(a|b)' >/dev/null 2>&1 then ac_cv_path_EGREP="$GREP -E" else if test -z "$EGREP"; then ac_path_EGREP_found=false # Loop through the user's path and test for each of PROGNAME-LIST as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_prog in egrep; do for ac_exec_ext in '' $ac_executable_extensions; do ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext" as_fn_executable_p "$ac_path_EGREP" || continue # Check for GNU ac_path_EGREP and select it if it is found. # Check for GNU $ac_path_EGREP case `"$ac_path_EGREP" --version 2>&1` in *GNU*) ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;; *) ac_count=0 $as_echo_n 0123456789 >"conftest.in" while : do cat "conftest.in" "conftest.in" >"conftest.tmp" mv "conftest.tmp" "conftest.in" cp "conftest.in" "conftest.nl" $as_echo 'EGREP' >> "conftest.nl" "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break as_fn_arith $ac_count + 1 && ac_count=$as_val if test $ac_count -gt ${ac_path_EGREP_max-0}; then # Best one so far, save it but keep looking for a better one ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_max=$ac_count fi # 10*(2^10) chars as input seems more than enough test $ac_count -gt 10 && break done rm -f conftest.in conftest.tmp conftest.nl conftest.out;; esac $ac_path_EGREP_found && break 3 done done done IFS=$as_save_IFS if test -z "$ac_cv_path_EGREP"; then as_fn_error $? "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 fi else ac_cv_path_EGREP=$EGREP fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5 $as_echo "$ac_cv_path_EGREP" >&6; } EGREP="$ac_cv_path_EGREP" { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5 $as_echo_n "checking for ANSI C header files... " >&6; } if ${ac_cv_header_stdc+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include #include #include int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_header_stdc=yes else ac_cv_header_stdc=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext if test $ac_cv_header_stdc = yes; then # SunOS 4.x string.h does not declare mem*, contrary to ANSI. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "memchr" >/dev/null 2>&1; then : else ac_cv_header_stdc=no fi rm -f conftest* fi if test $ac_cv_header_stdc = yes; then # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "free" >/dev/null 2>&1; then : else ac_cv_header_stdc=no fi rm -f conftest* fi if test $ac_cv_header_stdc = yes; then # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. if test "$cross_compiling" = yes; then : : else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include #if ((' ' & 0x0FF) == 0x020) # define ISLOWER(c) ('a' <= (c) && (c) <= 'z') # define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) #else # define ISLOWER(c) \ (('a' <= (c) && (c) <= 'i') \ || ('j' <= (c) && (c) <= 'r') \ || ('s' <= (c) && (c) <= 'z')) # define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) #endif #define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) int main () { int i; for (i = 0; i < 256; i++) if (XOR (islower (i), ISLOWER (i)) || toupper (i) != TOUPPER (i)) return 2; return 0; } _ACEOF if ac_fn_c_try_run "$LINENO"; then : else ac_cv_header_stdc=no fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdc" >&5 $as_echo "$ac_cv_header_stdc" >&6; } if test $ac_cv_header_stdc = yes; then $as_echo "#define STDC_HEADERS 1" >>confdefs.h fi # On IRIX 5.3, sys/types and inttypes.h are conflicting. for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \ inttypes.h stdint.h unistd.h do : as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default " if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : cat >>confdefs.h <<_ACEOF #define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF fi done for ac_header in util.h do : ac_fn_c_check_header_mongrel "$LINENO" "util.h" "ac_cv_header_util_h" "$ac_includes_default" if test "x$ac_cv_header_util_h" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_UTIL_H 1 _ACEOF fi done if test "$pthread" then { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing pthread_create" >&5 $as_echo_n "checking for library containing pthread_create... " >&6; } if ${ac_cv_search_pthread_create+:} false; then : $as_echo_n "(cached) " >&6 else ac_func_search_save_LIBS=$LIBS cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char pthread_create (); int main () { return pthread_create (); ; return 0; } _ACEOF for ac_lib in '' pthread; do if test -z "$ac_lib"; then ac_res="none required" else ac_res=-l$ac_lib LIBS="-l$ac_lib $ac_func_search_save_LIBS" fi if ac_fn_c_try_link "$LINENO"; then : ac_cv_search_pthread_create=$ac_res fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext if ${ac_cv_search_pthread_create+:} false; then : break fi done if ${ac_cv_search_pthread_create+:} false; then : else ac_cv_search_pthread_create=no fi rm conftest.$ac_ext LIBS=$ac_func_search_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_pthread_create" >&5 $as_echo "$ac_cv_search_pthread_create" >&6; } ac_res=$ac_cv_search_pthread_create if test "$ac_res" != no; then : test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" fi fi for dir in /usr/include/tcl$tclver /usr/include/tcl$tclvr /usr/local/include /usr/local/include/tcl$tclver /usr/local/include/tcl$tclvr do if test -d $dir then CPPFLAGS="$CPPFLAGS -I$dir" fi done for ac_header in tcl.h do : ac_fn_c_check_header_mongrel "$LINENO" "tcl.h" "ac_cv_header_tcl_h" "$ac_includes_default" if test "x$ac_cv_header_tcl_h" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_TCL_H 1 _ACEOF else as_fn_error $? "Cannot find tcl header file" "$LINENO" 5 fi done for ac_func in vasprintf do : ac_fn_c_check_func "$LINENO" "vasprintf" "ac_cv_func_vasprintf" if test "x$ac_cv_func_vasprintf" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_VASPRINTF 1 _ACEOF fi done { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _LARGEFILE_SOURCE value needed for large files" >&5 $as_echo_n "checking for _LARGEFILE_SOURCE value needed for large files... " >&6; } if ${ac_cv_sys_largefile_source+:} false; then : $as_echo_n "(cached) " >&6 else while :; do cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include /* for off_t */ #include int main () { int (*fp) (FILE *, off_t, int) = fseeko; return fseeko (stdin, 0, 0) && fp (stdin, 0, 0); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_sys_largefile_source=no; break fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #define _LARGEFILE_SOURCE 1 #include /* for off_t */ #include int main () { int (*fp) (FILE *, off_t, int) = fseeko; return fseeko (stdin, 0, 0) && fp (stdin, 0, 0); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_sys_largefile_source=1; break fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext ac_cv_sys_largefile_source=unknown break done fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_largefile_source" >&5 $as_echo "$ac_cv_sys_largefile_source" >&6; } case $ac_cv_sys_largefile_source in #( no | unknown) ;; *) cat >>confdefs.h <<_ACEOF #define _LARGEFILE_SOURCE $ac_cv_sys_largefile_source _ACEOF ;; esac rm -rf conftest* # We used to try defining _XOPEN_SOURCE=500 too, to work around a bug # in glibc 2.1.3, but that breaks too many other things. # If you want fseeko and ftello with glibc, upgrade to a fixed glibc. if test $ac_cv_sys_largefile_source != unknown; then $as_echo "#define HAVE_FSEEKO 1" >>confdefs.h fi LDFLAGS="$LDFLAGS -lm" { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing gethostbyname" >&5 $as_echo_n "checking for library containing gethostbyname... " >&6; } if ${ac_cv_search_gethostbyname+:} false; then : $as_echo_n "(cached) " >&6 else ac_func_search_save_LIBS=$LIBS cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char gethostbyname (); int main () { return gethostbyname (); ; return 0; } _ACEOF for ac_lib in '' nsl; do if test -z "$ac_lib"; then ac_res="none required" else ac_res=-l$ac_lib LIBS="-l$ac_lib $ac_func_search_save_LIBS" fi if ac_fn_c_try_link "$LINENO"; then : ac_cv_search_gethostbyname=$ac_res fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext if ${ac_cv_search_gethostbyname+:} false; then : break fi done if ${ac_cv_search_gethostbyname+:} false; then : else ac_cv_search_gethostbyname=no fi rm conftest.$ac_ext LIBS=$ac_func_search_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_gethostbyname" >&5 $as_echo "$ac_cv_search_gethostbyname" >&6; } ac_res=$ac_cv_search_gethostbyname if test "$ac_res" != no; then : test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing socket" >&5 $as_echo_n "checking for library containing socket... " >&6; } if ${ac_cv_search_socket+:} false; then : $as_echo_n "(cached) " >&6 else ac_func_search_save_LIBS=$LIBS cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char socket (); int main () { return socket (); ; return 0; } _ACEOF for ac_lib in '' socket; do if test -z "$ac_lib"; then ac_res="none required" else ac_res=-l$ac_lib LIBS="-l$ac_lib $ac_func_search_save_LIBS" fi if ac_fn_c_try_link "$LINENO"; then : ac_cv_search_socket=$ac_res fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext if ${ac_cv_search_socket+:} false; then : break fi done if ${ac_cv_search_socket+:} false; then : else ac_cv_search_socket=no fi rm conftest.$ac_ext LIBS=$ac_func_search_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_socket" >&5 $as_echo "$ac_cv_search_socket" >&6; } ac_res=$ac_cv_search_socket if test "$ac_res" != no; then : test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" fi if test -d /usr/local/lib then LDFLAGS="$LDFLAGS -L/usr/local/lib" fi tcl_failed=0 as_ac_Lib=`$as_echo "ac_cv_lib_tcl$tclver''_Tcl_Init" | $as_tr_sh` { $as_echo "$as_me:${as_lineno-$LINENO}: checking for Tcl_Init in -ltcl$tclver" >&5 $as_echo_n "checking for Tcl_Init in -ltcl$tclver... " >&6; } if eval \${$as_ac_Lib+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ltcl$tclver $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char Tcl_Init (); int main () { return Tcl_Init (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : eval "$as_ac_Lib=yes" else eval "$as_ac_Lib=no" fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi eval ac_res=\$$as_ac_Lib { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } if eval test \"x\$"$as_ac_Lib"\" = x"yes"; then : cat >>confdefs.h <<_ACEOF #define `$as_echo "HAVE_LIBtcl$tclver" | $as_tr_cpp` 1 _ACEOF LIBS="-ltcl$tclver $LIBS" else tcl_failed=1 fi if test $tcl_failed = 1 then as_ac_Lib=`$as_echo "ac_cv_lib_tcl$tclvr''_Tcl_Init" | $as_tr_sh` { $as_echo "$as_me:${as_lineno-$LINENO}: checking for Tcl_Init in -ltcl$tclvr" >&5 $as_echo_n "checking for Tcl_Init in -ltcl$tclvr... " >&6; } if eval \${$as_ac_Lib+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ltcl$tclvr $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char Tcl_Init (); int main () { return Tcl_Init (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : eval "$as_ac_Lib=yes" else eval "$as_ac_Lib=no" fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi eval ac_res=\$$as_ac_Lib { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } if eval test \"x\$"$as_ac_Lib"\" = x"yes"; then : cat >>confdefs.h <<_ACEOF #define `$as_echo "HAVE_LIBtcl$tclvr" | $as_tr_cpp` 1 _ACEOF LIBS="-ltcl$tclvr $LIBS" else as_fn_error $? "Cannot find TCL library" "$LINENO" 5 fi fi LIBX3270DIR='${sysconfdir}/x3270' # Check whether --enable-dbcs was given. if test "${enable_dbcs+set}" = set; then : enableval=$enable_dbcs; fi case "$enable_dbcs" in no) ;; *) $as_echo "#define X3270_DBCS 1" >>confdefs.h ;; esac # Check whether --enable-local_process was given. if test "${enable_local_process+set}" = set; then : enableval=$enable_local_process; fi case "$enable_local_process" in ""|yes) $as_echo "#define X3270_LOCAL_PROCESS 1" >>confdefs.h ;; esac # Check whether --enable-ipv6 was given. if test "${enable_ipv6+set}" = set; then : enableval=$enable_ipv6; fi case "$enable_ipv6" in ""|yes) $as_echo "#define X3270_IPV6 1" >>confdefs.h ;; esac ac_config_files="$ac_config_files Makefile Makefile.obj" cat >confcache <<\_ACEOF # This file is a shell script that caches the results of configure # tests run on this system so they can be shared between configure # scripts and configure runs, see configure's option --config-cache. # It is not useful on other systems. If it contains results you don't # want to keep, you may remove or edit it. # # config.status only pays attention to the cache file if you give it # the --recheck option to rerun configure. # # `ac_cv_env_foo' variables (set or unset) will be overridden when # loading this file, other *unset* `ac_cv_foo' will be assigned the # following values. _ACEOF # The following way of writing the cache mishandles newlines in values, # but we know of no workaround that is simple, portable, and efficient. # So, we kill variables containing newlines. # Ultrix sh set writes to stderr and can't be redirected directly, # and sets the high bit in the cache file unless we assign to the vars. ( for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do eval ac_val=\$$ac_var case $ac_val in #( *${as_nl}*) case $ac_var in #( *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 $as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; esac case $ac_var in #( _ | IFS | as_nl) ;; #( BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( *) { eval $ac_var=; unset $ac_var;} ;; esac ;; esac done (set) 2>&1 | case $as_nl`(ac_space=' '; set) 2>&1` in #( *${as_nl}ac_space=\ *) # `set' does not quote correctly, so add quotes: double-quote # substitution turns \\\\ into \\, and sed turns \\ into \. sed -n \ "s/'/'\\\\''/g; s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" ;; #( *) # `set' quotes correctly as required by POSIX, so do not add quotes. sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" ;; esac | sort ) | sed ' /^ac_cv_env_/b end t clear :clear s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/ t end s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ :end' >>confcache if diff "$cache_file" confcache >/dev/null 2>&1; then :; else if test -w "$cache_file"; then if test "x$cache_file" != "x/dev/null"; then { $as_echo "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5 $as_echo "$as_me: updating cache $cache_file" >&6;} if test ! -f "$cache_file" || test -h "$cache_file"; then cat confcache >"$cache_file" else case $cache_file in #( */* | ?:*) mv -f confcache "$cache_file"$$ && mv -f "$cache_file"$$ "$cache_file" ;; #( *) mv -f confcache "$cache_file" ;; esac fi fi else { $as_echo "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5 $as_echo "$as_me: not updating unwritable cache $cache_file" >&6;} fi fi rm -f confcache test "x$prefix" = xNONE && prefix=$ac_default_prefix # Let make expand exec_prefix. test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' DEFS=-DHAVE_CONFIG_H ac_libobjs= ac_ltlibobjs= U= for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue # 1. Remove the extension, and $U if already installed. ac_script='s/\$U\././;s/\.o$//;s/\.obj$//' ac_i=`$as_echo "$ac_i" | sed "$ac_script"` # 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR # will be set to the directory where LIBOBJS objects are built. as_fn_append ac_libobjs " \${LIBOBJDIR}$ac_i\$U.$ac_objext" as_fn_append ac_ltlibobjs " \${LIBOBJDIR}$ac_i"'$U.lo' done LIBOBJS=$ac_libobjs LTLIBOBJS=$ac_ltlibobjs : "${CONFIG_STATUS=./config.status}" ac_write_fail=0 ac_clean_files_save=$ac_clean_files ac_clean_files="$ac_clean_files $CONFIG_STATUS" { $as_echo "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5 $as_echo "$as_me: creating $CONFIG_STATUS" >&6;} as_write_fail=0 cat >$CONFIG_STATUS <<_ASEOF || as_write_fail=1 #! $SHELL # Generated by $as_me. # Run this file to recreate the current configuration. # Compiler output produced by configure, useful for debugging # configure, is in config.log if it exists. debug=false ac_cs_recheck=false ac_cs_silent=false SHELL=\${CONFIG_SHELL-$SHELL} export SHELL _ASEOF cat >>$CONFIG_STATUS <<\_ASEOF || as_write_fail=1 ## -------------------- ## ## M4sh Initialization. ## ## -------------------- ## # Be more Bourne compatible DUALCASE=1; export DUALCASE # for MKS sh if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST else case `(set -o) 2>/dev/null` in #( *posix*) : set -o posix ;; #( *) : ;; esac fi as_nl=' ' export as_nl # Printing a long string crashes Solaris 7 /usr/bin/printf. as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo # Prefer a ksh shell builtin over an external printf program on Solaris, # but without wasting forks for bash or zsh. if test -z "$BASH_VERSION$ZSH_VERSION" \ && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then as_echo='print -r --' as_echo_n='print -rn --' elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then as_echo='printf %s\n' as_echo_n='printf %s' else if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' as_echo_n='/usr/ucb/echo -n' else as_echo_body='eval expr "X$1" : "X\\(.*\\)"' as_echo_n_body='eval arg=$1; case $arg in #( *"$as_nl"*) expr "X$arg" : "X\\(.*\\)$as_nl"; arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; esac; expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" ' export as_echo_n_body as_echo_n='sh -c $as_echo_n_body as_echo' fi export as_echo_body as_echo='sh -c $as_echo_body as_echo' fi # The user is always right. if test "${PATH_SEPARATOR+set}" != set; then PATH_SEPARATOR=: (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || PATH_SEPARATOR=';' } fi # IFS # We need space, tab and new line, in precisely that order. Quoting is # there to prevent editors from complaining about space-tab. # (If _AS_PATH_WALK were called with IFS unset, it would disable word # splitting by setting IFS to empty value.) IFS=" "" $as_nl" # Find who we are. Look in the path if we contain no directory separator. as_myself= case $0 in #(( *[\\/]* ) as_myself=$0 ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break done IFS=$as_save_IFS ;; esac # We did not find ourselves, most probably we were run as `sh COMMAND' # in which case we are not to be found in the path. if test "x$as_myself" = x; then as_myself=$0 fi if test ! -f "$as_myself"; then $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 exit 1 fi # Unset variables that we do not need and which cause bugs (e.g. in # pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" # suppresses any "Segmentation fault" message there. '((' could # trigger a bug in pdksh 5.2.14. for as_var in BASH_ENV ENV MAIL MAILPATH do eval test x\${$as_var+set} = xset \ && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : done PS1='$ ' PS2='> ' PS4='+ ' # NLS nuisances. LC_ALL=C export LC_ALL LANGUAGE=C export LANGUAGE # CDPATH. (unset CDPATH) >/dev/null 2>&1 && unset CDPATH # as_fn_error STATUS ERROR [LINENO LOG_FD] # ---------------------------------------- # Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are # provided, also output the error to LOG_FD, referencing LINENO. Then exit the # script with STATUS, using 1 if that was 0. as_fn_error () { as_status=$1; test $as_status -eq 0 && as_status=1 if test "$4"; then as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 fi $as_echo "$as_me: error: $2" >&2 as_fn_exit $as_status } # as_fn_error # as_fn_set_status STATUS # ----------------------- # Set $? to STATUS, without forking. as_fn_set_status () { return $1 } # as_fn_set_status # as_fn_exit STATUS # ----------------- # Exit the shell with STATUS, even in a "trap 0" or "set -e" context. as_fn_exit () { set +e as_fn_set_status $1 exit $1 } # as_fn_exit # as_fn_unset VAR # --------------- # Portably unset VAR. as_fn_unset () { { eval $1=; unset $1;} } as_unset=as_fn_unset # as_fn_append VAR VALUE # ---------------------- # Append the text in VALUE to the end of the definition contained in VAR. Take # advantage of any shell optimizations that allow amortized linear growth over # repeated appends, instead of the typical quadratic growth present in naive # implementations. if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : eval 'as_fn_append () { eval $1+=\$2 }' else as_fn_append () { eval $1=\$$1\$2 } fi # as_fn_append # as_fn_arith ARG... # ------------------ # Perform arithmetic evaluation on the ARGs, and store the result in the # global $as_val. Take advantage of shells that can avoid forks. The arguments # must be portable across $(()) and expr. if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : eval 'as_fn_arith () { as_val=$(( $* )) }' else as_fn_arith () { as_val=`expr "$@" || test $? -eq 1` } fi # as_fn_arith if expr a : '\(a\)' >/dev/null 2>&1 && test "X`expr 00001 : '.*\(...\)'`" = X001; then as_expr=expr else as_expr=false fi if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then as_basename=basename else as_basename=false fi if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then as_dirname=dirname else as_dirname=false fi as_me=`$as_basename -- "$0" || $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ X"$0" : 'X\(//\)$' \| \ X"$0" : 'X\(/\)' \| . 2>/dev/null || $as_echo X/"$0" | sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/ q } /^X\/\(\/\/\)$/{ s//\1/ q } /^X\/\(\/\).*/{ s//\1/ q } s/.*/./; q'` # Avoid depending upon Character Ranges. as_cr_letters='abcdefghijklmnopqrstuvwxyz' as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' as_cr_Letters=$as_cr_letters$as_cr_LETTERS as_cr_digits='0123456789' as_cr_alnum=$as_cr_Letters$as_cr_digits ECHO_C= ECHO_N= ECHO_T= case `echo -n x` in #((((( -n*) case `echo 'xy\c'` in *c*) ECHO_T=' ';; # ECHO_T is single tab character. xy) ECHO_C='\c';; *) echo `echo ksh88 bug on AIX 6.1` > /dev/null ECHO_T=' ';; esac;; *) ECHO_N='-n';; esac rm -f conf$$ conf$$.exe conf$$.file if test -d conf$$.dir; then rm -f conf$$.dir/conf$$.file else rm -f conf$$.dir mkdir conf$$.dir 2>/dev/null fi if (echo >conf$$.file) 2>/dev/null; then if ln -s conf$$.file conf$$ 2>/dev/null; then as_ln_s='ln -s' # ... but there are two gotchas: # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. # In both cases, we have to default to `cp -pR'. ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || as_ln_s='cp -pR' elif ln conf$$.file conf$$ 2>/dev/null; then as_ln_s=ln else as_ln_s='cp -pR' fi else as_ln_s='cp -pR' fi rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file rmdir conf$$.dir 2>/dev/null # as_fn_mkdir_p # ------------- # Create "$as_dir" as a directory, including parents if necessary. as_fn_mkdir_p () { case $as_dir in #( -*) as_dir=./$as_dir;; esac test -d "$as_dir" || eval $as_mkdir_p || { as_dirs= while :; do case $as_dir in #( *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( *) as_qdir=$as_dir;; esac as_dirs="'$as_qdir' $as_dirs" as_dir=`$as_dirname -- "$as_dir" || $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_dir" : 'X\(//\)[^/]' \| \ X"$as_dir" : 'X\(//\)$' \| \ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$as_dir" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` test -d "$as_dir" && break done test -z "$as_dirs" || eval "mkdir $as_dirs" } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" } # as_fn_mkdir_p if mkdir -p . 2>/dev/null; then as_mkdir_p='mkdir -p "$as_dir"' else test -d ./-p && rmdir ./-p as_mkdir_p=false fi # as_fn_executable_p FILE # ----------------------- # Test if FILE is an executable regular file. as_fn_executable_p () { test -f "$1" && test -x "$1" } # as_fn_executable_p as_test_x='test -x' as_executable_p=as_fn_executable_p # Sed expression to map a string onto a valid CPP name. as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" # Sed expression to map a string onto a valid variable name. as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" exec 6>&1 ## ----------------------------------- ## ## Main body of $CONFIG_STATUS script. ## ## ----------------------------------- ## _ASEOF test $as_write_fail = 0 && chmod +x $CONFIG_STATUS || ac_write_fail=1 cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # Save the log message, to keep $0 and so on meaningful, and to # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" This file was extended by tcl3270 $as_me 4.0, which was generated by GNU Autoconf 2.69. Invocation command line was CONFIG_FILES = $CONFIG_FILES CONFIG_HEADERS = $CONFIG_HEADERS CONFIG_LINKS = $CONFIG_LINKS CONFIG_COMMANDS = $CONFIG_COMMANDS $ $0 $@ on `(hostname || uname -n) 2>/dev/null | sed 1q` " _ACEOF case $ac_config_files in *" "*) set x $ac_config_files; shift; ac_config_files=$*;; esac case $ac_config_headers in *" "*) set x $ac_config_headers; shift; ac_config_headers=$*;; esac cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 # Files that config.status was made for. config_files="$ac_config_files" config_headers="$ac_config_headers" _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 ac_cs_usage="\ \`$as_me' instantiates files and other configuration actions from templates according to the current configuration. Unless the files and actions are specified as TAGs, all are instantiated by default. Usage: $0 [OPTION]... [TAG]... -h, --help print this help, then exit -V, --version print version number and configuration settings, then exit --config print configuration, then exit -q, --quiet, --silent do not print progress messages -d, --debug don't remove temporary files --recheck update $as_me by reconfiguring in the same conditions --file=FILE[:TEMPLATE] instantiate the configuration file FILE --header=FILE[:TEMPLATE] instantiate the configuration header FILE Configuration files: $config_files Configuration headers: $config_headers Report bugs to the package provider." _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" ac_cs_version="\\ tcl3270 config.status 4.0 configured by $0, generated by GNU Autoconf 2.69, with options \\"\$ac_cs_config\\" Copyright (C) 2012 Free Software Foundation, Inc. This config.status script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it." ac_pwd='$ac_pwd' srcdir='$srcdir' INSTALL='$INSTALL' test -n "\$AWK" || AWK=awk _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # The default lists apply if the user does not specify any file. ac_need_defaults=: while test $# != 0 do case $1 in --*=?*) ac_option=`expr "X$1" : 'X\([^=]*\)='` ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'` ac_shift=: ;; --*=) ac_option=`expr "X$1" : 'X\([^=]*\)='` ac_optarg= ac_shift=: ;; *) ac_option=$1 ac_optarg=$2 ac_shift=shift ;; esac case $ac_option in # Handling of the options. -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) ac_cs_recheck=: ;; --version | --versio | --versi | --vers | --ver | --ve | --v | -V ) $as_echo "$ac_cs_version"; exit ;; --config | --confi | --conf | --con | --co | --c ) $as_echo "$ac_cs_config"; exit ;; --debug | --debu | --deb | --de | --d | -d ) debug=: ;; --file | --fil | --fi | --f ) $ac_shift case $ac_optarg in *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; '') as_fn_error $? "missing file argument" ;; esac as_fn_append CONFIG_FILES " '$ac_optarg'" ac_need_defaults=false;; --header | --heade | --head | --hea ) $ac_shift case $ac_optarg in *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; esac as_fn_append CONFIG_HEADERS " '$ac_optarg'" ac_need_defaults=false;; --he | --h) # Conflict between --help and --header as_fn_error $? "ambiguous option: \`$1' Try \`$0 --help' for more information.";; --help | --hel | -h ) $as_echo "$ac_cs_usage"; exit ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil | --si | --s) ac_cs_silent=: ;; # This is an error. -*) as_fn_error $? "unrecognized option: \`$1' Try \`$0 --help' for more information." ;; *) as_fn_append ac_config_targets " $1" ac_need_defaults=false ;; esac shift done ac_configure_extra_args= if $ac_cs_silent; then exec 6>/dev/null ac_configure_extra_args="$ac_configure_extra_args --silent" fi _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 if \$ac_cs_recheck; then set X $SHELL '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion shift \$as_echo "running CONFIG_SHELL=$SHELL \$*" >&6 CONFIG_SHELL='$SHELL' export CONFIG_SHELL exec "\$@" fi _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 exec 5>>config.log { echo sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX ## Running $as_me. ## _ASBOX $as_echo "$ac_log" } >&5 _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # Handling of arguments. for ac_config_target in $ac_config_targets do case $ac_config_target in "conf.h") CONFIG_HEADERS="$CONFIG_HEADERS conf.h" ;; "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;; "Makefile.obj") CONFIG_FILES="$CONFIG_FILES Makefile.obj" ;; *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;; esac done # If the user did not use the arguments to specify the items to instantiate, # then the envvar interface is used. Set only those that are not. # We use the long form for the default assignment because of an extremely # bizarre bug on SunOS 4.1.3. if $ac_need_defaults; then test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers fi # Have a temporary directory for convenience. Make it in the build tree # simply because there is no reason against having it here, and in addition, # creating and moving files from /tmp can sometimes cause problems. # Hook for its removal unless debugging. # Note that there is a small window in which the directory will not be cleaned: # after its creation but before its name has been assigned to `$tmp'. $debug || { tmp= ac_tmp= trap 'exit_status=$? : "${ac_tmp:=$tmp}" { test ! -d "$ac_tmp" || rm -fr "$ac_tmp"; } && exit $exit_status ' 0 trap 'as_fn_exit 1' 1 2 13 15 } # Create a (secure) tmp directory for tmp files. { tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` && test -d "$tmp" } || { tmp=./conf$$-$RANDOM (umask 077 && mkdir "$tmp") } || as_fn_error $? "cannot create a temporary directory in ." "$LINENO" 5 ac_tmp=$tmp # Set up the scripts for CONFIG_FILES section. # No need to generate them if there are no CONFIG_FILES. # This happens for instance with `./config.status config.h'. if test -n "$CONFIG_FILES"; then ac_cr=`echo X | tr X '\015'` # On cygwin, bash can eat \r inside `` if the user requested igncr. # But we know of no other shell where ac_cr would be empty at this # point, so we can use a bashism as a fallback. if test "x$ac_cr" = x; then eval ac_cr=\$\'\\r\' fi ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' /dev/null` if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then ac_cs_awk_cr='\\r' else ac_cs_awk_cr=$ac_cr fi echo 'BEGIN {' >"$ac_tmp/subs1.awk" && _ACEOF { echo "cat >conf$$subs.awk <<_ACEOF" && echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' && echo "_ACEOF" } >conf$$subs.sh || as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 ac_delim_num=`echo "$ac_subst_vars" | grep -c '^'` ac_delim='%!_!# ' for ac_last_try in false false false false false :; do . ./conf$$subs.sh || as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 ac_delim_n=`sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | grep -c X` if test $ac_delim_n = $ac_delim_num; then break elif $ac_last_try; then as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 else ac_delim="$ac_delim!$ac_delim _$ac_delim!! " fi done rm -f conf$$subs.sh cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 cat >>"\$ac_tmp/subs1.awk" <<\\_ACAWK && _ACEOF sed -n ' h s/^/S["/; s/!.*/"]=/ p g s/^[^!]*!// :repl t repl s/'"$ac_delim"'$// t delim :nl h s/\(.\{148\}\)..*/\1/ t more1 s/["\\]/\\&/g; s/^/"/; s/$/\\n"\\/ p n b repl :more1 s/["\\]/\\&/g; s/^/"/; s/$/"\\/ p g s/.\{148\}// t nl :delim h s/\(.\{148\}\)..*/\1/ t more2 s/["\\]/\\&/g; s/^/"/; s/$/"/ p b :more2 s/["\\]/\\&/g; s/^/"/; s/$/"\\/ p g s/.\{148\}// t delim ' >$CONFIG_STATUS || ac_write_fail=1 rm -f conf$$subs.awk cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 _ACAWK cat >>"\$ac_tmp/subs1.awk" <<_ACAWK && for (key in S) S_is_set[key] = 1 FS = "" } { line = $ 0 nfields = split(line, field, "@") substed = 0 len = length(field[1]) for (i = 2; i < nfields; i++) { key = field[i] keylen = length(key) if (S_is_set[key]) { value = S[key] line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3) len += length(value) + length(field[++i]) substed = 1 } else len += 1 + keylen } print line } _ACAWK _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g" else cat fi < "$ac_tmp/subs1.awk" > "$ac_tmp/subs.awk" \ || as_fn_error $? "could not setup config files machinery" "$LINENO" 5 _ACEOF # VPATH may cause trouble with some makes, so we remove sole $(srcdir), # ${srcdir} and @srcdir@ entries from VPATH if srcdir is ".", strip leading and # trailing colons and then remove the whole line if VPATH becomes empty # (actually we leave an empty line to preserve line numbers). if test "x$srcdir" = x.; then ac_vpsub='/^[ ]*VPATH[ ]*=[ ]*/{ h s/// s/^/:/ s/[ ]*$/:/ s/:\$(srcdir):/:/g s/:\${srcdir}:/:/g s/:@srcdir@:/:/g s/^:*// s/:*$// x s/\(=[ ]*\).*/\1/ G s/\n// s/^[^=]*=[ ]*$// }' fi cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 fi # test -n "$CONFIG_FILES" # Set up the scripts for CONFIG_HEADERS section. # No need to generate them if there are no CONFIG_HEADERS. # This happens for instance with `./config.status Makefile'. if test -n "$CONFIG_HEADERS"; then cat >"$ac_tmp/defines.awk" <<\_ACAWK || BEGIN { _ACEOF # Transform confdefs.h into an awk script `defines.awk', embedded as # here-document in config.status, that substitutes the proper values into # config.h.in to produce config.h. # Create a delimiter string that does not exist in confdefs.h, to ease # handling of long lines. ac_delim='%!_!# ' for ac_last_try in false false :; do ac_tt=`sed -n "/$ac_delim/p" confdefs.h` if test -z "$ac_tt"; then break elif $ac_last_try; then as_fn_error $? "could not make $CONFIG_HEADERS" "$LINENO" 5 else ac_delim="$ac_delim!$ac_delim _$ac_delim!! " fi done # For the awk script, D is an array of macro values keyed by name, # likewise P contains macro parameters if any. Preserve backslash # newline sequences. ac_word_re=[_$as_cr_Letters][_$as_cr_alnum]* sed -n ' s/.\{148\}/&'"$ac_delim"'/g t rset :rset s/^[ ]*#[ ]*define[ ][ ]*/ / t def d :def s/\\$// t bsnl s/["\\]/\\&/g s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ D["\1"]=" \3"/p s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2"/p d :bsnl s/["\\]/\\&/g s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ D["\1"]=" \3\\\\\\n"\\/p t cont s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2\\\\\\n"\\/p t cont d :cont n s/.\{148\}/&'"$ac_delim"'/g t clear :clear s/\\$// t bsnlc s/["\\]/\\&/g; s/^/"/; s/$/"/p d :bsnlc s/["\\]/\\&/g; s/^/"/; s/$/\\\\\\n"\\/p b cont ' >$CONFIG_STATUS || ac_write_fail=1 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 for (key in D) D_is_set[key] = 1 FS = "" } /^[\t ]*#[\t ]*(define|undef)[\t ]+$ac_word_re([\t (]|\$)/ { line = \$ 0 split(line, arg, " ") if (arg[1] == "#") { defundef = arg[2] mac1 = arg[3] } else { defundef = substr(arg[1], 2) mac1 = arg[2] } split(mac1, mac2, "(") #) macro = mac2[1] prefix = substr(line, 1, index(line, defundef) - 1) if (D_is_set[macro]) { # Preserve the white space surrounding the "#". print prefix "define", macro P[macro] D[macro] next } else { # Replace #undef with comments. This is necessary, for example, # in the case of _POSIX_SOURCE, which is predefined and required # on some systems where configure will not decide to define it. if (defundef == "undef") { print "/*", prefix defundef, macro, "*/" next } } } { print } _ACAWK _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 as_fn_error $? "could not setup config headers machinery" "$LINENO" 5 fi # test -n "$CONFIG_HEADERS" eval set X " :F $CONFIG_FILES :H $CONFIG_HEADERS " shift for ac_tag do case $ac_tag in :[FHLC]) ac_mode=$ac_tag; continue;; esac case $ac_mode$ac_tag in :[FHL]*:*);; :L* | :C*:*) as_fn_error $? "invalid tag \`$ac_tag'" "$LINENO" 5;; :[FH]-) ac_tag=-:-;; :[FH]*) ac_tag=$ac_tag:$ac_tag.in;; esac ac_save_IFS=$IFS IFS=: set x $ac_tag IFS=$ac_save_IFS shift ac_file=$1 shift case $ac_mode in :L) ac_source=$1;; :[FH]) ac_file_inputs= for ac_f do case $ac_f in -) ac_f="$ac_tmp/stdin";; *) # Look for the file first in the build tree, then in the source tree # (if the path is not absolute). The absolute path cannot be DOS-style, # because $ac_f cannot contain `:'. test -f "$ac_f" || case $ac_f in [\\/$]*) false;; *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";; esac || as_fn_error 1 "cannot find input file: \`$ac_f'" "$LINENO" 5;; esac case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac as_fn_append ac_file_inputs " '$ac_f'" done # Let's still pretend it is `configure' which instantiates (i.e., don't # use $as_me), people would be surprised to read: # /* config.h. Generated by config.status. */ configure_input='Generated from '` $as_echo "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g' `' by configure.' if test x"$ac_file" != x-; then configure_input="$ac_file. $configure_input" { $as_echo "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5 $as_echo "$as_me: creating $ac_file" >&6;} fi # Neutralize special characters interpreted by sed in replacement strings. case $configure_input in #( *\&* | *\|* | *\\* ) ac_sed_conf_input=`$as_echo "$configure_input" | sed 's/[\\\\&|]/\\\\&/g'`;; #( *) ac_sed_conf_input=$configure_input;; esac case $ac_tag in *:-:* | *:-) cat >"$ac_tmp/stdin" \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;; esac ;; esac ac_dir=`$as_dirname -- "$ac_file" || $as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$ac_file" : 'X\(//\)[^/]' \| \ X"$ac_file" : 'X\(//\)$' \| \ X"$ac_file" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$ac_file" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` as_dir="$ac_dir"; as_fn_mkdir_p ac_builddir=. case "$ac_dir" in .) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` # A ".." for each directory in $ac_dir_suffix. ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` case $ac_top_builddir_sub in "") ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; esac ;; esac ac_abs_top_builddir=$ac_pwd ac_abs_builddir=$ac_pwd$ac_dir_suffix # for backward compatibility: ac_top_builddir=$ac_top_build_prefix case $srcdir in .) # We are building in place. ac_srcdir=. ac_top_srcdir=$ac_top_builddir_sub ac_abs_top_srcdir=$ac_pwd ;; [\\/]* | ?:[\\/]* ) # Absolute name. ac_srcdir=$srcdir$ac_dir_suffix; ac_top_srcdir=$srcdir ac_abs_top_srcdir=$srcdir ;; *) # Relative name. ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix ac_top_srcdir=$ac_top_build_prefix$srcdir ac_abs_top_srcdir=$ac_pwd/$srcdir ;; esac ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix case $ac_mode in :F) # # CONFIG_FILE # case $INSTALL in [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;; *) ac_INSTALL=$ac_top_build_prefix$INSTALL ;; esac _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # If the template does not know about datarootdir, expand it. # FIXME: This hack should be removed a few years after 2.60. ac_datarootdir_hack=; ac_datarootdir_seen= ac_sed_dataroot=' /datarootdir/ { p q } /@datadir@/p /@docdir@/p /@infodir@/p /@localedir@/p /@mandir@/p' case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in *datarootdir*) ac_datarootdir_seen=yes;; *@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 $as_echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;} _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_datarootdir_hack=' s&@datadir@&$datadir&g s&@docdir@&$docdir&g s&@infodir@&$infodir&g s&@localedir@&$localedir&g s&@mandir@&$mandir&g s&\\\${datarootdir}&$datarootdir&g' ;; esac _ACEOF # Neutralize VPATH when `$srcdir' = `.'. # Shell code in configure.ac might set extrasub. # FIXME: do we really want to maintain this feature? cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_sed_extra="$ac_vpsub $extrasub _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 :t /@[a-zA-Z_][a-zA-Z_0-9]*@/!b s|@configure_input@|$ac_sed_conf_input|;t t s&@top_builddir@&$ac_top_builddir_sub&;t t s&@top_build_prefix@&$ac_top_build_prefix&;t t s&@srcdir@&$ac_srcdir&;t t s&@abs_srcdir@&$ac_abs_srcdir&;t t s&@top_srcdir@&$ac_top_srcdir&;t t s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t s&@builddir@&$ac_builddir&;t t s&@abs_builddir@&$ac_abs_builddir&;t t s&@abs_top_builddir@&$ac_abs_top_builddir&;t t s&@INSTALL@&$ac_INSTALL&;t t $ac_datarootdir_hack " eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$ac_tmp/subs.awk" \ >$ac_tmp/out || as_fn_error $? "could not create $ac_file" "$LINENO" 5 test -z "$ac_datarootdir_hack$ac_datarootdir_seen" && { ac_out=`sed -n '/\${datarootdir}/p' "$ac_tmp/out"`; test -n "$ac_out"; } && { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' \ "$ac_tmp/out"`; test -z "$ac_out"; } && { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir' which seems to be undefined. Please make sure it is defined" >&5 $as_echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir' which seems to be undefined. Please make sure it is defined" >&2;} rm -f "$ac_tmp/stdin" case $ac_file in -) cat "$ac_tmp/out" && rm -f "$ac_tmp/out";; *) rm -f "$ac_file" && mv "$ac_tmp/out" "$ac_file";; esac \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;; :H) # # CONFIG_HEADER # if test x"$ac_file" != x-; then { $as_echo "/* $configure_input */" \ && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" } >"$ac_tmp/config.h" \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 if diff "$ac_file" "$ac_tmp/config.h" >/dev/null 2>&1; then { $as_echo "$as_me:${as_lineno-$LINENO}: $ac_file is unchanged" >&5 $as_echo "$as_me: $ac_file is unchanged" >&6;} else rm -f "$ac_file" mv "$ac_tmp/config.h" "$ac_file" \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 fi else $as_echo "/* $configure_input */" \ && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" \ || as_fn_error $? "could not create -" "$LINENO" 5 fi ;; esac done # for ac_tag as_fn_exit 0 _ACEOF ac_clean_files=$ac_clean_files_save test $ac_write_fail = 0 || as_fn_error $? "write failure creating $CONFIG_STATUS" "$LINENO" 5 # configure is writing to config.log, and then calls config.status. # config.status does its own redirection, appending to config.log. # Unfortunately, on DOS this fails, as config.log is still kept open # by configure, so config.status won't be able to write to it; its # output is simply discarded. So we exec the FD to /dev/null, # effectively closing config.log, so it can be properly (re)opened and # appended to by config.status. When coming back to configure, we # need to make the FD available again. if test "$no_create" != yes; then ac_cs_success=: ac_config_status_args= test "$silent" = yes && ac_config_status_args="$ac_config_status_args --quiet" exec 5>/dev/null $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false exec 5>>config.log # Use ||, not &&, to avoid exiting from the if with $? = 1, which # would make configure fail if this is the last instruction. $ac_cs_success || as_fn_exit 1 fi if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5 $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;} fi suite3270-4.1/tcl3270/configure.in000066400000000000000000000110341413735575200164450ustar00rootroot00000000000000dnl Copyright (c) 2000-2009, 2013-2017, 2020 Paul Mattes. dnl All rights reserved. dnl dnl Redistribution and use in source and binary forms, with or without dnl modification, are permitted provided that the following conditions dnl are met: dnl * Redistributions of source code must retain the above copyright dnl notice, this list of conditions and the following disclaimer. dnl * Redistributions in binary form must reproduce the above copyright dnl notice, this list of conditions and the following disclaimer in the dnl documentation and/or other materials provided with the distribution. dnl * Neither the name of Paul Mattes nor his contributors may be used dnl to endorse or promote products derived from this software without dnl specific prior written permission. dnl dnl THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS dnl OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED dnl WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE dnl DISCLAIMED. IN NO EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, dnl INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES dnl (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR dnl SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) dnl HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, dnl STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING dnl IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE dnl POSSIBILITY OF SUCH DAMAGE. dnl Process this file with autoconf to produce a configure script. AC_INIT(tcl3270,4.0) AC_PREREQ(2.50) dnl Checks for programs. AC_PROG_INSTALL AC_PROG_CC dnl Figure out what sort of host this is. AC_CANONICAL_HOST ansi="-std=c99 -pedantic" case "$host_os" in cygwin*) CPPFLAGS="$CPPFLAGS -D_XOPEN_SOURCE_EXTENDED" ansi="" ;; solaris2*) CPPFLAGS="$CPPFLAGS -D__EXTENSIONS__" ;; darwin*) CCOPTIONS="$CCOPTIONS -no-cpp-precomp -Wno-deprecated-declarations" ;; linux*) CPPFLAGS="$CPPFLAGS -D_XOPEN_SOURCE -D_BSD_SOURCE -D_DEFAULT_SOURCE" ;; esac if test "$GCC" = yes then # Add common gcc options, plus flags for dependency generation. CCOPTIONS="$CCOPTIONS -Wall -Wsign-compare $ansi -Wno-variadic-macros -Wno-long-long -MMD -MP" fi AC_SUBST(host) AC_SUBST(CCOPTIONS) dnl Figure out what version of Tcl they've got AC_CHECK_PROG(tclsh,tclsh,yes,no) if test "$tclsh" = no then AC_ERROR(Can't find tclsh) fi AC_MSG_CHECKING(Tcl version) tclver=`echo "puts [[set tcl_version]]" | tclsh` if test -z "$tclver" then AC_ERROR(Can't figure out Tcl version) fi AC_MSG_RESULT($tclver) dnl If Tcl >= 8.6, we need pthreads. pthread=`echo $tclver | awk -F . '{ if ($1 > 8 || $2 >= 6) print "1"}'` dnl Set up tclvr (tclver without the period, for BSD) tclvr=`echo $tclver | tr -d .` dnl Checks for header files. AC_CONFIG_HEADER(conf.h) AC_CHECK_HEADERS(util.h) dnl Check for pthreads. if test "$pthread" then AC_SEARCH_LIBS(pthread_create, pthread) fi dnl Check for TCL header files. for dir in /usr/include/tcl$tclver /usr/include/tcl$tclvr /usr/local/include /usr/local/include/tcl$tclver /usr/local/include/tcl$tclvr do if test -d $dir then CPPFLAGS="$CPPFLAGS -I$dir" fi done AC_CHECK_HEADERS(tcl.h, ,[AC_ERROR(Cannot find tcl header file)]) dnl Checks for orindary library functions. AC_CHECK_FUNCS(vasprintf) AC_FUNC_FSEEKO dnl Check for libraries. dnl Note that the order here is important. The last libraries should appear dnl first, so that objects in them can be used by subsequent libraries. LDFLAGS="$LDFLAGS -lm" AC_SEARCH_LIBS(gethostbyname, nsl) AC_SEARCH_LIBS(socket, socket) if test -d /usr/local/lib then LDFLAGS="$LDFLAGS -L/usr/local/lib" fi tcl_failed=0 AC_CHECK_LIB(tcl$tclver, Tcl_Init, , [tcl_failed=1]) if test $tcl_failed = 1 then AC_CHECK_LIB(tcl$tclvr, Tcl_Init, , [AC_ERROR(Cannot find TCL library)]) fi dnl Set up the configuration directory. LIBX3270DIR='${sysconfdir}/x3270' AC_SUBST(LIBX3270DIR) dnl Check for unwanted parts. AC_ARG_ENABLE(dbcs,[ --disable-dbcs leave out DBCS support]) case "$enable_dbcs" in no) ;; *) AC_DEFINE(X3270_DBCS,1) ;; esac AC_ARG_ENABLE(local_process,[ --disable-local-process leave out local process support]) case "$enable_local_process" in ""|yes) AC_DEFINE(X3270_LOCAL_PROCESS,1) ;; esac AC_ARG_ENABLE(ipv6,[ --disable-ipv6 leave out IPv6 support]) case "$enable_ipv6" in ""|yes) AC_DEFINE(X3270_IPV6,1) ;; esac dnl Generate the Makefile. AC_CONFIG_FILES(Makefile Makefile.obj) AC_OUTPUT suite3270-4.1/tcl3270/ft.inc000077700000000000000000000000001413735575200200032../Common/ft.incustar00rootroot00000000000000suite3270-4.1/tcl3270/html.m4000077700000000000000000000000001413735575200202072../Common/html.m4ustar00rootroot00000000000000suite3270-4.1/tcl3270/html/000077500000000000000000000000001413735575200151015ustar00rootroot00000000000000suite3270-4.1/tcl3270/html/.gitignore000066400000000000000000000000131413735575200170630ustar00rootroot00000000000000*-man.html suite3270-4.1/tcl3270/ibm_hosts000077700000000000000000000000001413735575200214172../Common/ibm_hostsustar00rootroot00000000000000suite3270-4.1/tcl3270/ibm_hosts.man.m4000077700000000000000000000000001413735575200236012../Common/ibm_hosts.man.m4ustar00rootroot00000000000000suite3270-4.1/tcl3270/instlist.base000066400000000000000000000000621413735575200166400ustar00rootroot00000000000000usr usr/local usr/local/bin usr/local/bin/tcl3270 suite3270-4.1/tcl3270/instlist.man000066400000000000000000000001561413735575200165050ustar00rootroot00000000000000usr usr/local usr/local/share usr/local/share/man usr/local/share/man/man1 usr/local/share/man/man1/tcl3270.1 suite3270-4.1/tcl3270/localdefs.h000066400000000000000000000033671413735575200162530ustar00rootroot00000000000000/* * Copyright (c) 2000-2009, 2015 Paul Mattes. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of Paul Mattes nor his contributors may be used * to endorse or promote products derived from this software without * specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. */ /* * localdefs.h * Local definitions for tcl3270. * * This file contains definitions for environment-specific * facilities, such as memory allocation, I/O registration, * and timers. */ /* Identify ourselves. */ #define TCL3270 1 suite3270-4.1/tcl3270/m4man000077700000000000000000000000001413735575200174712../Common/m4manustar00rootroot00000000000000suite3270-4.1/tcl3270/man.m4000077700000000000000000000000001413735575200176252../Common/man.m4ustar00rootroot00000000000000suite3270-4.1/tcl3270/mkversion.sh000077700000000000000000000000001413735575200225152../Common/mkversion.shustar00rootroot00000000000000suite3270-4.1/tcl3270/parts.h.in000066400000000000000000000032621413735575200160470ustar00rootroot00000000000000/* * Copyright (c) 1996-2009, Paul Mattes. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of Paul Mattes nor his contributors may be used * to endorse or promote products derived from this software without * specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. */ /* * parts.h * #defines for the optional parts of tcl3270. * @configure_input@ */ @X3270_ANSI@ @X3270_APL@ @X3270_FT@ @X3270_LOCAL_PROCESS@ @X3270_TN3270E@ @X3270_TRACE@ suite3270-4.1/tcl3270/tcl3270.c000066400000000000000000000471131413735575200154050ustar00rootroot00000000000000/* * Copyright (c) 1993-2009, 2013-2020 Paul Mattes. * Copyright (c) 1990, Jeff Sparkes. * Copyright (c) 1989, Georgia Tech Research Corporation (GTRC), Atlanta, * GA 30332. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the names of Paul Mattes, Jeff Sparkes, GTRC nor their * contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES, JEFF SPARKES AND GTRC "AS IS" * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL PAUL MATTES, JEFF SPARKES OR * GTRC BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, * OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * tclAppInit.c -- * * Provides a default version of the main program and Tcl_AppInit * procedure for Tcl applications (without Tk). * * Copyright (c) 1993 The Regents of the University of California. * Copyright (c) 1994-1997 Sun Microsystems, Inc. * Copyright (c) 1998-1999 by Scriptics Corporation. * * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * * RCS: @(#) $Id: tcl3270.c,v 1.35 2007/07/17 15:58:53 pdm Exp $ */ /* * tcl3270.c * A Tcl-based 3270 Terminal Emulator * Main proceudre. */ #include "tcl.h" #include "globals.h" #include #include #include "names.h" #include "s3270_proto.h" #if TCL_MAJOR_VERSION > 8 || TCL_MINOR_VERSION >= 6 /*[*/ # define NEED_PTHREADS 1 # include #endif /*]*/ #define IBS 4096 /* * The following variable is a special hack that is needed in order for * Sun shared libraries to be used for Tcl. */ #if defined(_sun) /*[*/ extern int matherr(); int *tclDummyMathPtr = (int *) matherr; #endif /*]*/ static int s3270pipe[2]; static bool verbose = false; static bool interactive = false; static pid_t s3270_pid; static bool s3270_exited = false; static char s3270_errmsg[1024]; #if defined(NEED_PTHREADS) /*[*/ static pthread_mutex_t cmd_mutex; #endif /*]*/ static Tcl_ObjCmdProc x3270_cmd; static Tcl_ObjCmdProc Rows_cmd, Cols_cmd, Status_cmd; static int tcl3270_main(Tcl_Interp *interp, int argc, const char *argv[]); /* *---------------------------------------------------------------------- * * main -- * * This is the main program for the application. * * Results: * None: Tcl_Main never returns here, so this procedure never * returns either. * * Side effects: * Whatever the application does. * *---------------------------------------------------------------------- */ int main(int argc, char **argv) { char *programname = strrchr(argv[0], '/'); if (programname) { char *path = getenv("PATH"); size_t path_len = programname - argv[0]; size_t buf_len = 5 + path_len + (path? strlen(path + 1): 0) + 1; char *buf = Malloc(buf_len); /* Add our path to $PATH so we can find s3270 and x3270if. */ snprintf(buf, buf_len, "PATH=%.*s%s%s", (int)path_len, argv[0], path? ":": "", path? path: ""); putenv(buf); } Tcl_Main(argc, argv, Tcl_AppInit); return 0; } /* *---------------------------------------------------------------------- * * Tcl_AppInit -- * * This procedure performs application-specific initialization. * Most applications, especially those that incorporate additional * packages, will have their own version of this procedure. * * Results: * Returns a standard Tcl completion code, and leaves an error * message in the interp's result if an error occurs. * * Side effects: * Depends on the startup script. * *---------------------------------------------------------------------- */ int Tcl_AppInit(Tcl_Interp *interp) { const char *s0, *s; int tcl_argc; const char **tcl_argv; int argc; const char **argv; unsigned i; int j; Tcl_Obj *argv_obj; static char nbuf[256]; if (Tcl_Init(interp) == TCL_ERROR) { return TCL_ERROR; } /* Use argv and argv0 to figure out our command-line arguments. */ s0 = Tcl_GetVar(interp, "argv0", 0); if (s0 == NULL) { return TCL_ERROR; } s = Tcl_GetVar(interp, "argv", 0); if (s == NULL) { return TCL_ERROR; } Tcl_SplitList(interp, s, &tcl_argc, &tcl_argv); argc = tcl_argc + 1; argv = (const char **)Malloc((argc + 1) * sizeof(char *)); argv[0] = s0; for (j = 0; j < tcl_argc; j++) { argv[1 + j] = tcl_argv[j]; } argv[argc] = NULL; /* Find out if we're interactive. */ s = Tcl_GetVar(interp, "tcl_interactive", 0); interactive = (s != NULL && !strcmp(s, "1")); /* Call main. */ if (tcl3270_main(interp, argc, argv) == TCL_ERROR) { return TCL_ERROR; } /* Replace Tcl's argc and argv with whatever was left. */ argv_obj = Tcl_NewListObj(0, NULL); for (i = 1; argv[i] != NULL; i++) { Tcl_ListObjAppendElement(interp, argv_obj, Tcl_NewStringObj(argv[i], strlen(argv[i]))); } Tcl_SetVar2Ex(interp, "argv", NULL, argv_obj, 0); sprintf(nbuf, "%d", i? i - 1 : 0); Tcl_SetVar(interp, "argc", nbuf, 0); /* * Call the init procedures for included packages. Each call should * look like this: * * if (Mod_Init(interp) == TCL_ERROR) { * return TCL_ERROR; * } * * where "Mod" is the name of the module. */ /* * Specify a user-specific startup file to invoke if the application * is run interactively. Typically the startup file is "~/.apprc" * where "app" is the name of the application. If this line is deleted * then no user-specific startup file will be run under any conditions. */ #if 0 Tcl_SetVar(interp, "tcl_rcFileName", "~/.tclshrc", TCL_GLOBAL_ONLY); #endif return TCL_OK; } void usage(const char *msg) { if (msg != NULL) { fprintf(stderr, "%s\n", msg); } fprintf(stderr, "Usage:\n"); fprintf(stderr, " tcl3270 [single-option]\n"); fprintf(stderr, " tcl3270 [script [script-args]] [-- [tcl3270-options] [s3270-options] [host|session-file.tcl3270]]\n"); fprintf(stderr, "single-options:\n"); fprintf(stderr, " --help display usage\n"); fprintf(stderr, " -v display version\n"); fprintf(stderr, " --version display version\n"); fprintf(stderr, " -? display usage\n"); fprintf(stderr, "tcl3270-options:\n"); fprintf(stderr, " -d debug s3270 I/O\n"); fprintf(stderr, "s3270-options:\n"); system("s3270 --help 2>&1 | tail -n +3 - >&2"); exit(1); } /* Do a single command, and interpret the results. */ static int run_s3270(const char *cmd, bool *success, char **status, char **ret) { int st; int nw = 0; char buf[IBS]; char rbuf[IBS]; int sl = 0; ssize_t nr; bool complete = false; char *cmd_nl; size_t ret_sl = 0; char *nl; int rv = -1; *success = false; if (status != NULL) { *status = NULL; } *ret = NULL; #if defined(NEED_PTHREADS) /*[*/ pthread_mutex_lock(&cmd_mutex); #endif /*]*/ /* Check s3270. */ if (s3270_exited) { *ret = NewString(s3270_errmsg); rv = 0; goto done; } if (waitpid(s3270_pid, &st, WNOHANG) > 0) { s3270_exited = true; if (WIFEXITED(st)) { if (WEXITSTATUS(st) == 0) { exit(0); } snprintf(s3270_errmsg, sizeof(s3270_errmsg), "s3270 exited with status %d", WEXITSTATUS(st)); } else if (WIFSIGNALED(st)) { snprintf(s3270_errmsg, sizeof(s3270_errmsg), "s3270 killed by signal %d", WTERMSIG(st)); } else { snprintf(s3270_errmsg, sizeof(s3270_errmsg), "Unknown s3270 exit status %d", st); } *ret = NewString(s3270_errmsg); rv = 0; goto done; } /* Speak to s3270. */ if (verbose) { fprintf(stderr, "i+ out %s\n", (cmd != NULL) ? cmd : ""); } cmd_nl = Malloc(strlen(cmd) + 2); sprintf(cmd_nl, "%s\n", cmd); nw = write(s3270pipe[1], cmd_nl, strlen(cmd_nl)); if (nw < 0) { perror("s3270 (back end): write"); Free(cmd_nl); goto done; } Free(cmd_nl); /* Get the answer. */ while (!complete && (nr = read(s3270pipe[0], rbuf, IBS)) > 0) { ssize_t i; bool get_more = false; i = 0; do { /* Copy from rbuf into buf until '\n'. */ while (i < nr && rbuf[i] != '\n') { if (sl < IBS - 1) { buf[sl++] = rbuf[i++]; } } if (rbuf[i] == '\n') { i++; } else { /* Go get more input. */ get_more = true; break; } /* Process one line of output. */ buf[sl] = '\0'; if (verbose) { fprintf(stderr, "i+ in %s\n", buf); } if (!strcmp(buf, PROMPT_OK)) { *success = true; complete = true; break; } else if (!strcmp(buf, PROMPT_ERROR)) { *success = false; complete = true; break; } else if (!strncmp(buf, DATA_PREFIX, strlen(DATA_PREFIX))) { *ret = Realloc(*ret, ret_sl + strlen(buf + strlen(DATA_PREFIX)) + 2); *(*ret + ret_sl) = '\0'; strcat(strcat(*ret, buf + strlen(DATA_PREFIX)), "\n"); ret_sl += strlen(buf + strlen(DATA_PREFIX)) + 1; } else if (status != NULL) { *status = NewString(buf); } /* Get ready for the next. */ sl = 0; } while (i < nr); if (get_more) { get_more = false; continue; } } if (nr < 0) { perror("s3270 (back end) read"); if (status != NULL && *status != NULL) { Free(*status); *status = NULL; } if (*ret != NULL) { Free(*ret); *ret = NULL; } goto done; } else if (nr == 0) { if (verbose) { fprintf(stderr, "s3270 EOF\n"); } exit(0); } /* Make sure we return someting. */ if (*ret == NULL) { *ret = NewString(""); } /* Remove any trailing newline. */ if ((nl = strrchr(*ret, '\n')) != NULL && !*(nl + 1)) { *nl = '\0'; } rv = 0; done: #if defined(NEED_PTHREADS) /*[*/ pthread_mutex_unlock(&cmd_mutex); #endif /*]*/ return rv; } /* Initialization procedure for tcl3270. */ static int tcl3270_main(Tcl_Interp *interp, int argc, const char *argv[]) { char **nargv = Calloc(argc + 7, sizeof(char *)); int i_in, i_out = 0; int to_s3270_pipe[2]; int from_s3270_pipe[2]; bool success; char *ret; char *action; char *paren; int skip_ix = -1; /* * Handle special first arguments first, which completely violate the * convention below, but give people a chance to figure out how the command * works without having a manpage. */ if (argc > 1) { if (!strcmp(argv[1], "-v") || !strcmp(argv[1], "--version")) { fprintf(stderr, "%s\n", build); exit(0); } if (!strcmp(argv[1], "--help") || !strcmp(argv[1], "-?")) { usage(NULL); } } /* * The syntax, dictated by tclsh, is: * [script script-args] [-- [tcl3270-args] [host[:port]]] * I.e., the optional script name and arguments come first, then an * optional '--', then tcl3270's arguments. * * Find the '--'. */ for (i_in = 1; i_in < argc; i_in++) { if (!strcmp(argv[i_in], "--")) { skip_ix = i_in; argv[skip_ix] = NULL; break; } } /* * Pick off '-d', which is the only tcl3270-specific option besides -v/-?. */ if (skip_ix >= 0 && argc > skip_ix + 1 && !strcmp(argv[skip_ix + 1], "-d")) { skip_ix++; verbose = true; } /* Set up s3270's command-line arguments. */ nargv[i_out++] = "s3270"; nargv[i_out++] = "-utf8"; nargv[i_out++] = "-minversion"; nargv[i_out++] = "4.0"; nargv[i_out++] = "-alias"; nargv[i_out++] = "tcl3270"; if (skip_ix >= 0) { for (i_in = skip_ix + 1; i_in < argc; i_in++) { nargv[i_out++] = (char *)argv[i_in]; } } nargv[i_out++] = NULL; /* Set up pipes. */ if (pipe(to_s3270_pipe) < 0 || pipe(from_s3270_pipe) < 0) { perror("pipe"); return TCL_ERROR; } /* Start s3270. */ switch (s3270_pid = fork()) { case -1: perror("fork"); return TCL_ERROR; case 0: /* Child. */ /* Redirect I/O. */ close(to_s3270_pipe[1]); if (dup2(to_s3270_pipe[0], 0) < 0) { perror("dup2"); exit(1); } close(to_s3270_pipe[0]); if (dup2(from_s3270_pipe[1], 1) < 0) { perror("dup2"); exit(1); } close(from_s3270_pipe[1]); /* Run s3270. */ if (execvp("s3270", nargv) < 0) { perror("s3270 (back end)"); exit(1); } break; default: /* Parent. */ break; } /* Redirect I/O. */ close(to_s3270_pipe[0]); close(from_s3270_pipe[1]); s3270pipe[0] = from_s3270_pipe[0]; s3270pipe[1] = to_s3270_pipe[1]; #if defined(NEED_PTHREADS) /*[*/ /* Set up the mutex. */ pthread_mutex_init(&cmd_mutex, NULL); #endif /*]*/ /* Run 'Query(Actions)' to learn what Tcl commands we need to add. */ if (run_s3270(AnQuery "(" KwActions ")", &success, NULL, &ret) < 0) { return TCL_ERROR; } if (!success) { fprintf(stderr, AnQuery "(" KwActions ") failed:\n%s\n", ret); return TCL_ERROR; } /* Create the actions. */ action = ret; while ((paren = strchr(action, '(')) != NULL) { /* Create the command. */ *paren = '\0'; if (Tcl_CreateObjCommand(interp, action, x3270_cmd, NULL, NULL) == NULL) { return TCL_ERROR; } /* Skip to the next action. */ paren++; if (*paren == ')') { paren++; } if (*paren == ' ') { paren++; } action = paren; } Free(ret); /* Create some locally-defined actions. */ if (Tcl_CreateObjCommand(interp, "Rows", Rows_cmd, NULL, NULL) == NULL) { return TCL_ERROR; } if (Tcl_CreateObjCommand(interp, "Cols", Cols_cmd, NULL, NULL) == NULL) { return TCL_ERROR; } if (Tcl_CreateObjCommand(interp, "Status", Status_cmd, NULL, NULL) == NULL) { return TCL_ERROR; } return TCL_OK; } /* Quote a string according to Xt event map argument syntax. */ static char * quoted(const char *arg) { static char quoted_chars[] = " ,()"; int i; bool needed = false; char *ret; char *out; char c; char last = '\0'; if (!*arg) { /* Empty string -> quoted. */ return NewString("\"\""); } /* * Check if it contains a character that triggers requires quoting, * or starts with a '"'. */ for (i = 0; quoted_chars[i]; i++) { if (strchr(arg, quoted_chars[i]) != NULL) { needed = true; break; } } if (!needed && arg[0] != '"') { return NewString(arg); } /* * Replace double quotes with a backslash and a double quote. * Replace a backslash at the end with a double backslash. * Wrap the whole thing in double quotes. */ /* * Allocate enough memory for: * opening double quote * every character needing a backslash in front of it * trailing backslash needing to be doubled * trailing double quote * terminating NUL */ ret = out = Malloc(1 + (strlen(arg) * 2) + 1 + 1 + 1); *out++ = '"'; while ((c = *arg++)) { last = c; if (c == '"') { *out++ = '\\'; } *out++ = c; } if (last == '\\') { *out++ = '\\'; } *out++ = '"'; *out = '\0'; return ret; } /* The Tcl "x3270" command: The root of all 3270 access. */ static int x3270_cmd(ClientData clientData, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[]) { int i; size_t len = 0; char *cmd; bool success; int rv; char *ret; char *rest; char *nl; Tcl_Obj *o = NULL; /* Check for control characters. */ for (i = 0; i < objc; i++) { char *s = Tcl_GetString(objv[i]); char c; while ((c = *s++) != '\0') { unsigned char uc = (unsigned char)c; if (uc < ' ' || (uc >= 0x80 && (uc & 0x7f) < ' ')) { Tcl_SetResult(interp, "Control character in parameter", TCL_STATIC); return TCL_ERROR; } } } /* Marshal the arguments. */ for (i = 0; i < objc; i++) { len += 1 + 2 * strlen(Tcl_GetString(objv[i])); } len += 3; /* parens and trailing NUL */ cmd = Malloc(len); strcpy(cmd, Tcl_GetString(objv[0])); strcat(cmd, "("); for (i = 1; i < objc; i++) { char *q; if (i > 1) { strcat(cmd, ","); } q = quoted(Tcl_GetString(objv[i])); strcat(cmd, q); Free(q); } strcat(cmd, ")"); /* Run the action. */ rv = run_s3270(cmd, &success, NULL, &ret); if (rv < 0) { Free(cmd); Tcl_SetResult(interp, "Internal error", TCL_STATIC); return TCL_ERROR; } Free(cmd); if (!success) { Tcl_SetResult(interp, ret, TCL_VOLATILE); Free(ret); return TCL_ERROR; } /* If the output is on one line, return it as a string. */ if (strchr(ret, '\n') == NULL) { Tcl_SetResult(interp, ret, TCL_VOLATILE); Free(ret); return TCL_OK; } /* Return it as a list. */ o = Tcl_NewListObj(0, NULL); rest = ret; while ((nl = strchr(rest, '\n')) != NULL) { *nl = '\0'; Tcl_ListObjAppendElement(interp, o, Tcl_NewStringObj(rest, -1)); rest = nl + 1; } Tcl_ListObjAppendElement(interp, o, Tcl_NewStringObj(rest, -1)); Tcl_SetObjResult(interp, o); Free(ret); return TCL_OK; } /* Return the status line. */ static int Status_cmd(ClientData clientData, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[]) { bool success; char *status; char *ret; if (run_s3270("", &success, &status, &ret) < 0) { Tcl_SetResult(interp, "Internal error", TCL_STATIC); return TCL_ERROR; } Tcl_SetResult(interp, status, TCL_VOLATILE); Free(status); Free(ret); return TCL_OK; } /** * Isolate a field within the status line. * * @param[in] status Status line. * @param[in] index 1-origin field index. */ static char * field(const char *status, int index) { char *space; const char *s = status; size_t len; char *ret; while ((space = strchr(s, ' ')) && --index > 0) { s = space + 1; } if (!*s) { return NewString(""); } if ((space = strchr(s, ' ')) == NULL) { return NewString(s); } len = space - s; ret = Malloc(len + 1); strncpy(ret, s, len); ret[len] = '\0'; return ret; } /* Report the number of rows. */ static int Rows_cmd(ClientData clientData, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[]) { bool success; char *status; char *ret; char *f; if (run_s3270("", &success, &status, &ret) < 0) { Tcl_SetResult(interp, "Internal error", TCL_STATIC); return TCL_ERROR; } Free(ret); f = field(status, 7); Free(status); Tcl_SetResult(interp, f, TCL_VOLATILE); Free(f); return TCL_OK; } /* Report the number of columns. */ static int Cols_cmd(ClientData clientData, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[]) { bool success; char *status; char *ret; char *f; if (run_s3270("", &success, &status, &ret) < 0) { Tcl_SetResult(interp, "Internal error", TCL_STATIC); return TCL_ERROR; } Free(ret); f = field(status, 8); Free(status); Tcl_SetResult(interp, f, TCL_VOLATILE); Free(f); return TCL_OK; } /* Error abort used for Malloc failures. */ void Error(const char *msg) { fprintf(stderr, "%s\n", msg); exit(1); } suite3270-4.1/tcl3270/tcl3270.man000066400000000000000000000026431413735575200157350ustar00rootroot00000000000000'\" t .TH tcl3270 1 "30 October 2021" .SH "NAME" tcl3270 \- \s-1IBM\s+1 host access tool .SH "SYNOPSIS" \fBtcl3270\fP [\fIscript\fP [\fIscript-arg...\fP]] [-- [\fItcl3270-options\fP] [\fIs3270-options\fP] [\fIhost\fP] .br \fBtcl3270\fP [\fIscript\fP [\fIscript-arg...\fP]] [-- [\fItcl3270-options\fP] [\fIs3270-options\fP] [\fIsession-file\fP.tcl3270] .br \fBtcl3270\fP -v .br \fBtcl3270\fP --help .SH "DESCRIPTION" \fBtcl3270\fP opens a telnet connection to an \s-1IBM\s+1 host, then allows a Tcl script to control the host login session. It is derived from \fIs3270\fP(1), a script-based IBM 3270 emulator. .LP For each action supported by s3270, tcl3270 defines a correcponding Tcl command. The result of the Tcl command is the output of the s3270 action. If the output is one line, the result is a string. If the output is multiple lines, the result is a list of strings. .LP On the command line, a session file can be named either \fIname\fP.\fBtcl3270\fP or \fIname\fP.\fBs3270\fP. Resource values, such as those used in \fB\-xrm\fP options or in a session file, can be specified as \fBtcl3270\fP.\fIresource\fP or \fBs3270\fP.\fIresource\fP. .SH "TCL3270-SPECIFIC OPTIONS" .TP \fB\-d\fP Turns on debugging information, tracing data going between tcl3270 and s3270. .SH "SEE ALSO" s3270(1) .SH "WIKI" Primary documentation for tcl3270 is on the \fBx3270 Wiki\fP, https://x3270.miraheze.org/wiki/Main_Page. .SH "VERSION" tcl3270 4.1pre10 suite3270-4.1/tcl3270/tcl3270.man.m4000066400000000000000000000067271413735575200162630ustar00rootroot00000000000000dnl Copyright (c) 1993-2018, Paul Mattes. dnl Copyright (c) 1990, Jeff Sparkes. dnl All rights reserved. dnl dnl Redistribution and use in source and binary forms, with or without dnl modification, are permitted provided that the following conditions are met: dnl * Redistributions of source code must retain the above copyright dnl notice, this list of conditions and the following disclaimer. dnl * Redistributions in binary form must reproduce the above copyright dnl notice, this list of conditions and the following disclaimer in the dnl documentation and/or other materials provided with the distribution. dnl * Neither the names of Paul Mattes, Jeff Sparkes nor the names of their dnl contributors may be used to endorse or promote products derived from dnl this software without specific prior written permission. dnl dnl THIS SOFTWARE IS PROVIDED BY PAUL MATTES AND JEFF SPARKES "AS IS" AND dnl ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE dnl IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE dnl ARE DISCLAIMED. IN NO EVENT SHALL PAUL MATTES OR JEFF SPARKES BE LIABLE FOR dnl ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL dnl DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR dnl SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER dnl CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT dnl LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY dnl OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH dnl DAMAGE. define(XX_KEY,$1`'XX_LT()Key>$2)dnl define(XX_BTN,$1`'XX_LT()Btn$2>)dnl define(XX_action,`ifelse(XX_PRODUCT,tcl3270,command,action)')dnl define(XX_Action,`ifelse(XX_PRODUCT,tcl3270,Command,Action)')dnl XX_TH(XX_PRODUCT,1,XX_DATE) XX_SH(Name) XX_PRODUCT XX_DASH XX_SM(IBM) host access tool XX_SH(Synopsis) XX_FB(XX_PRODUCT) [XX_FI(script) [XX_FI(script-arg...)]] [-- [XX_FI(tcl3270-options)] [XX_FI(XX_S3270`'-options)] [XX_FI(host)] XX_BR XX_FB(XX_PRODUCT) [XX_FI(script) [XX_FI(script-arg...)]] [-- [XX_FI(tcl3270-options)] [XX_FI(XX_S3270`'-options)] [XX_FI(session-file).XX_PRODUCT] XX_BR XX_FB(XX_PRODUCT) -v XX_BR XX_FB(XX_PRODUCT) --help XX_SH(Description) XX_FB(XX_PRODUCT) opens a telnet connection to an XX_SM(IBM) host, then allows a Tcl script to control the host login session. It is derived from XX_LINK(XX_S3270-man.html,XX_FI(XX_S3270)(1)), a script-based IBM 3270 emulator. XX_LP For each action supported by XX_S3270, XX_PRODUCT defines a correcponding Tcl command. The result of the Tcl command is the output of the XX_S3270 action. If the output is one line, the result is a string. If the output is multiple lines, the result is a list of strings. XX_LP On the command line, a session file can be named either XX_FI(name).XX_FB(XX_PRODUCT) or XX_FI(name).XX_FB(XX_S3270). Resource values, such as those used in XX_FB(XX_DASHED(xrm)) options or in a session file, can be specified as XX_FB(XX_PRODUCT).XX_FI(resource) or XX_FB(XX_S3270).XX_FI(resource). XX_SH(XX_PRODUCT-Specific Options) XX_TP(XX_FB(XX_DASHED(d))) Turns on debugging information, tracing data going between XX_PRODUCT and XX_S3270. XX_SH(See Also) XX_LINK(XX_S3270-man.html,XX_S3270`'(1)) XX_SH(Wiki) Primary documentation for XX_PRODUCT is on the XX_FB(x3270 Wiki), XX_LINK(https://x3270.miraheze.org/wiki/Main_Page,https://x3270.miraheze.org/wiki/Main_Page). XX_SH(Version) XX_PRODUCT XX_VERSION_NUMBER suite3270-4.1/tcl3270/tcl3270_files.mk000066400000000000000000000001051413735575200167420ustar00rootroot00000000000000# tcl3270-specific object files TCL3270_OBJECTS = Malloc.o tcl3270.o suite3270-4.1/tcl3270/version.txt000077700000000000000000000000001413735575200222472../Common/version.txtustar00rootroot00000000000000suite3270-4.1/tcl3270/x3270.man.m4000077700000000000000000000000001413735575200211712../Common/x3270.man.m4ustar00rootroot00000000000000suite3270-4.1/tcl3270/x3270_glue.expect000077700000000000000000000000001413735575200236152../Common/x3270_glue.expectustar00rootroot00000000000000suite3270-4.1/wb3270/000077500000000000000000000000001413735575200137635ustar00rootroot00000000000000suite3270-4.1/wb3270/.gitignore000066400000000000000000000000061413735575200157470ustar00rootroot00000000000000*.zip suite3270-4.1/wb3270/Makefile000066400000000000000000000042711413735575200154270ustar00rootroot00000000000000# Copyright (c) 2016 Paul Mattes. # All rights reserved. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # * Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # * Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in the # documentation and/or other materials provided with the distribution. # * Neither the name of Paul Mattes nor his contributors may be used # to endorse or promote products derived from this software without # specific prior written permission. # # THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS OR # IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES # OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN # NO EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, # SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED # TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR # PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF # LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING # NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS # SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. # VPATH-based Makefile for wb3270, can build either 32- or 64-bit ifdef WIN64 objdir = ../obj/win64/wb3270 else objdir = ../obj/win32/wb3270 endif top = ../../.. this = $(top)/wb3270 export VPATH = $(this):$(top)/Common/Win32:$(top)/Common/b3270:$(top)/Common export TOP = $(top) export THIS = $(this) MAKEINC = -I$(this) -I$(top)/Common -I$(top)/Common/b3270 -I$(top)/Common/Win32 all: $(objdir) cd $(objdir) && $(MAKE) $(MAKEINC) -f $(this)/Makefile.obj $@ clean: $(objdir) cd $(objdir) && $(MAKE) $(MAKEINC) -f $(this)/Makefile.obj $@ clobber: $(objdir) cd $(objdir) && $(MAKE) $(MAKEINC) -f $(this)/Makefile.obj $@ depend: $(objdir) cd $(objdir) && $(MAKE) $(MAKEINC) -f $(this)/Makefile.obj $@ $(objdir): mkdir -p $(objdir) suite3270-4.1/wb3270/Makefile.aux000066400000000000000000000031121413735575200162140ustar00rootroot00000000000000# Copyright (c) 1995-2016, 2018, 2020 Paul Mattes. # All rights reserved. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # * Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # * Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in the # documentation and/or other materials provided with the distribution. # * Neither the name of Paul Mattes nor his contributors may be used # to endorse or promote products derived from this software without # specific prior written permission. # # THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS OR # IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES # OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN # NO EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, # SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED # TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR # PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF # LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING # NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS # SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. # Auxiliary makefile for wb3270 all: @echo "Must pick a specific make target." src.tgz: man: suite3270-4.1/wb3270/Makefile.obj000066400000000000000000000064251413735575200162030ustar00rootroot00000000000000# Copyright (c) 2007-2009, 2013-2018, 2020 Paul Mattes. # All rights reserved. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # * Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # * Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in the # documentation and/or other materials provided with the distribution. # * Neither the name of Paul Mattes nor his contributors may be used # to endorse or promote products derived from this software without # specific prior written permission. # # THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS OR # IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES # OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN # NO EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, # SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED # TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR # PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF # LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING # NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS # SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. # Makefile for wb3270 # Set SSLDIR, SSLCPP, SSLLIB, GT_PFX, NATIVE_SFX, NATIVECC, CC, WINDRES and # WIN32_FLAGS. include winenv.mk MKFB = mkfb$(NATIVE_SFX) XCPPFLAGS = $(WIN32_FLAGS) -DWIN32_LEAN_AND_MEAN -I$(THIS) -I$(TOP)/Common/s3270 -I$(TOP)/include -I$(TOP)/Common/libexpat CFLAGS = $(EXTRA_FLAGS) -g -Wall -Werror -MMD -MP $(XCPPFLAGS) $(SSLCPP) OBJ = o ifdef WIN64 HOST = win64 else HOST = win32 endif W = w include b3270_files.mk libs.mk VOBJS = $(B3270_OBJECTS) fallbacks.o wb3270res.o OBJECTS = $(VOBJS) version.o LIBS = $(SSLLIB) -lws2_32 -lcomdlg32 -lgdi32 -lwinspool -lcrypt32 -lsecur32 LIBDEPS = $(DEP3270) $(DEP3270I) $(DEP32XX) $(DEP3270STUBS) $(DEPLIBEXPAT) SHRTLIBS = -lole32 -luuid DLLFLAGS = $(EXTRA_FLAGS) -mno-cygwin -shared -Wl,--export-all-symbols -Wl,--enable-auto-import PROGS = wb3270.exe b3270.exe x3270if.exe all: $(PROGS) XVERSION = xversion.c version.o: mkversion.sh $(VOBJS) $(LIBDEPS) version.txt $(RM) $(XVERSION) sh $< b3270 $(filter %.txt,$^) >$(XVERSION) $(CC) $(CFLAGS) -c -o $@ $(XVERSION) $(RM) $(XVERSION) FALLBACKS = fb-common fb-printSession fallbacks.c: $(MKFB) $(FALLBACKS) $(RM) $@ ./$(MKFB) -c -o $@ $(filter-out $(MKFB),$^) $(MKFB): mkfb.c $(NATIVECC) -DFOR_WIN32 -I$(THIS) -MMD -MP -o $@ $^ wb3270res.o: wb3270.rc wb3270.ico Makefile $(WINDRES) -i $< -o $@ wb3270.exe: $(OBJECTS) $(LIBDEPS) Makefile $(CC) -o wb3270.exe $(CFLAGS) $(OBJECTS) $(LD3270) $(LD3270I) $(LD32XX) $(LD3270STUBS) $(LDLIBEXPAT) $(LIBS) b3270.exe: wb3270.exe cp -p wb3270.exe $@ x3270if.exe: ../x3270if/x3270if.exe cp -p ../x3270if/x3270if.exe $@ wversion.o: mkwversion.sh version.txt sh $< wb3270 $(CC) $(filter %.txt,$^) clean: rm -f *.o mkfb mkfb.exe fallbacks.c clobber: clean rm -f $(PROGS) *.d # Include auto-generated eependencies -include $(OBJS:.o=.d) x3270if.d mkfb.d suite3270-4.1/wb3270/conf.h000066400000000000000000000001221413735575200150540ustar00rootroot00000000000000/* Hard-coded conf.h for wb3270 */ #define LIBX3270DIR "." #define X3270_IPV6 1 suite3270-4.1/wb3270/ft.inc000077700000000000000000000000001413735575200176312../Common/ft.incustar00rootroot00000000000000suite3270-4.1/wb3270/html.m4000077700000000000000000000000001413735575200200352../Common/html.m4ustar00rootroot00000000000000suite3270-4.1/wb3270/m4man000077700000000000000000000000001413735575200173172../Common/m4manustar00rootroot00000000000000suite3270-4.1/wb3270/version.txt000077700000000000000000000000001413735575200220752../Common/version.txtustar00rootroot00000000000000suite3270-4.1/wb3270/wb3270.ico000066400000000000000000000410761413735575200154130ustar00rootroot00000000000000@@ (B(@€ cnvhwƒcs}1eu“j{ˆæTcpàWixàTfsâQamÅP]g›Xgr¼blu©pzyƒ\lxFWbIZhVjyLasfwƒäk}‰ÿ]p~ÿ^r~ÿoŽÿh|Šÿew„ÿgy†ÿfy†ÿcv„ÿXlyÿ[mzÿ]q~øbt€ÿ]o}ÿg{‡ÿl€Œÿq…’ÿr†”ÿs‡•ÿjÜmŠÿo‹—t…p|…:WfqÕ^myÿPbpÿI]jÿLapÿ[qÿ[p€ÿ]t„ø_u…ÿdz‰ÿi~ÿm„’ÿr†–ÿq‡•ÿp…”ÿuŠ™ÿu‹™ÿyŽÿ}’ ÿ‚•£ÿ‰œ©ÿ†š§ÿ‡›©ÿ‘¤±ÿ”§´ÿ’¥³ÿ‘¤²ÿu‹šÿp‡–ÿm‚’ÿr„’ÿ›¦y{‹•7_iqw„Œ]o|ÿ_v„ÿdz‹ÿmƒ“ÿtŠ˜ÿ–¤ÿ‚—¥ÿƒ—¦ÿ†š¨ÿ‰ªÿ†š©ÿƒ˜¦ÿ…™§ÿ–¥ÿ€•¤ÿ•¤ÿ|’¡ÿ}’¡ÿ‚—¦ÿ–¥ÿƒ˜§ÿˆœ«ÿ†š©ÿŒ ¯ÿŒŸ®ÿ‹Ÿ®ÿ”¦´ÿŠž«ÿt‰™ÿ”£ÿ~“£ÿ{žÿx‡’õakt­—žnƒ“ÿ£±ÿ‘¥²ÿ”§´ÿ”§³ÿ“§³ÿ“¦´ÿ¡®ÿ‰«ÿ€•¤ÿwŽÿuŠšÿrˆ˜ÿn…”ÿoƒ’ÿnƒ’ÿi~Œÿfx…ÿkz†ÿjz†ÿl|‡ÿgwƒÿYkxÿZiuÿ€“ ÿxŠ—ÿxˆ’ÿŠœ©ÿ…™¨ÿ€”£ÿˆœªÿ†š©ÿ’ ÿrŠïhv‚Žš¡f—¦²ÿ£±þ’¥²ÿ—ª·ÿ—«¹ÿ}‹•ÿ`lwÿ^jtÿQ`kÿFVbÿ:HSÿ.8Aÿ'2<ÿ$0;ÿ"+ÿ#ÿ ÿ#ÿ!(ÿ%/7ÿÿ ÿÿ.:Dÿ ÿ ÿ+6@ÿyŠ—ÿ•¤ÿ‰ªÿŽ¢¯ÿŽ¢°ÿ…—£ÿs‚Œï ¬µ>–§±ÿ”¨µÿƒ• ÿapzÿ3=Fÿÿ+6?ÿ.9Cÿ&ÿ*5ÿ,7@ÿ9EOÿBS`ÿQcoÿ]nzÿdw„ÿwŠ—ÿ„–¢ÿ—©µÿw„ÿALWÿ*2;ÿ)1:ÿ(ÿ "ÿ  ÿ'1:ÿ…™¨ÿ…™§ÿŽ¢°ÿ”§´ÿ”¦²ÿŒ–Þ I‹¤±¹f–©µþYclÿ ÿ *ÿ ÿ0:Cÿ—ÿ‰ªÿŒŸ®ÿŒ ­ÿˆœ«ÿ‡œªÿ‹Ÿ­ÿ‘¥³ÿ˜«·ÿš¬¸ÿ¢³¾ÿ¤µÁÿ­½ÈÿµÆÏÿ‘›¡ÿ&ÿ,8Aÿ%ÿ ÿ ÿapzÿŒ ®ÿ†›©ÿ£²ÿ“¤±ÿHZhÿp€‹—o}†!»555ÿócFøŒ‘£«\›£ÿ5>Hÿ"ÿ'3ÿ"ÿ!%*ÿˆ™¤ÿ¢´Àÿ—ª·ÿ”¦´ÿ’¥²ÿ¤±ÿ”¨µÿ–©¶ÿ›­¹ÿž¯¼ÿŸ°¼ÿ ±¼ÿ§¸Âÿ˜§²ÿ+5>ÿ(1ÿ,9Dÿ&ÿ!,ÿ;HRÿ“¡ÿ‹ ­ÿ‰«ÿ‰œªÿ>Raÿex…ÿgu€ÿiyƒy}›7 """"à………ÿžžžÿíM===kcccÿÿ¨¡«²,‹”æ*09ÿ(þ)7Bÿmz‚ÿ ¬ÿ¢®ÿ€‘žÿy‡ÿvƒÿv„ÿw„ÿn|‡ÿfu€ÿWgrÿHU`ÿ@JRÿ:EMÿ.:Dÿ"-ÿ&ÿ"ÿ ÿ ÿÿ3@LÿŠŸ¬ÿ£±ÿzŒšÿ8N_ÿd|Œÿ_sÿ]p|ÿduÿi}‰dt !!!½‘‘‘ÿ¶¶¶ÿ‰‰‰ÿëACCC…ªªªÿƒƒƒÿõ„LV]ò/8@ÿ!*ÿÿ ÿ ÿ ÿÿ ÿÿÿÿ ÿÿ ÿ ÿ ÿÿÿÿÿ ÿÿ ÿ9GSÿoŒÿEUcÿAUeÿh€ÿd|Œÿcyˆÿ^q~þ_p|ÿcs~ñp€m}‡Illlÿ¶¶¶ÿ°°°ÿxxxÿé4LLLž¸¸¸ÿ§§§ÿXXXÿÐ$KU]qqqAFJÿ%.ÿ%ÿ ÿ ÿ%ÿ$ÿ$ÿ*ÿ)ÿ#/ÿ$0ÿ$/ÿ&2ÿ*ÿ"/ÿ -ÿ!-ÿ!/ÿ*ÿ%ÿ "ÿ $ÿ)ÿ%2ÿ#1ÿNdtÿi€‘ÿjÿi€‘ÿg~Žÿbvƒÿ^p~ÿcu‚ÿhyƒ^o|,,,¤±±±ÿ³³³ÿ¯¯¯ÿjjjÿè.[[[»¸¸¸ÿ±±±ÿzzzÿ êi®¬°dls\WdlÉx‚Šÿ]lxþK^mÿJ`pÿ=Seÿ6L]ÿ4J\ÿ4J[ÿ.CTÿ,ARÿ-BSÿ/DUÿ)=Nÿ&:Lÿ"5Eÿ->ÿ)9ÿ /ÿ*ÿ %ÿ #ÿ $ÿ*ÿ,ÿUl{ÿm„”ÿm„”ÿk‚’ÿn…”ÿk‚‘ÿhŽÿ^t„ÿ]o|ñAAA QQQÒºººÿ³³³ÿ°°°ÿuuuÿô‹'+++9hhhÛ¸¸¸ÿ¬¬¬ÿzzzÿø‹l‘l€ÿ\t…ÿSk|ÿF]oÿ?Vhÿ7M_ÿ4J\ÿ1GXÿ+ARÿ/DUÿ-CTÿ(Ufÿ=Seÿ7N_ÿ6L^ÿ0EVÿ,@Pÿ,@Qÿ-@Qÿ';Lÿ#7Gÿ 2Bÿ1Aÿ!2Aÿ 2Bÿ.@OÿRgwÿxœÿvŒœÿsŠšÿr‰™ÿqˆ—ÿm„”ÿm„”ÿj’ÿax‰ÿp‹ÿ"---ô†††ÿ§§§ÿ§§§ÿ«««ÿ­­­ÿ«««ÿ¢¢¢ÿ“““ÿ€€€ÿdddÿNNNÿ&&&ÿ¨„Ž–nm~ˆZkwÿUhwÿXl|ÿ]qÿdx‡ÿmÿs‡–ÿvŠ™ÿ{žÿ}’ŸÿxŒ›ÿyŽ›ÿzŽœÿv‹šÿq†•ÿiÿawˆÿVm~ÿG^oÿRgwÿuŒ›ÿzŸÿyŽžÿt‹šÿtŠšÿvœÿrˆ˜ÿj‘ÿl‚’ÿi‘ÿax‡ÿds|ÿr ö___ÿ‡‡‡ÿŠŠŠÿŽŽŽÿ‰‰‰ÿ{{{ÿjjjÿhhhÿwwwÿFFFÿÓ6€‰«¼É Ÿ¬´í ¯ºþŠ— ÿw„ÿfs~ÿbjpÿhotÿhpuÿajpÿZdkÿR^fÿJU\ÿCKQÿ@HRÿBJSÿDMVÿEOWÿMX_ÿU`hÿWagÿiwÿ|“¢ÿƒ˜§ÿ}’¡ÿzŸÿwÿs‰˜ÿrˆ˜ÿuŒ›ÿt‹šÿo†–ÿk‘ÿi€ÿ_v†ÿbp{ÿ}333î}}}ÿ•••ÿ’’’ÿ———ÿ¡¡¡ÿ¬¬¬ÿ¢¢¢ÿeeeÿóž«´ s|‚ÿMW^þ-4:ÿ %ÿÿ ÿÿ ÿÿÿ ÿÿ ÿ ÿ ÿÿ ÿÿÿÿÿ'07ÿŽ£²ÿ†š¨ÿ–¥ÿ}’¡ÿyžÿu‹›ÿtŠšÿuŒ›ÿu‹›ÿqˆ—ÿn…•ÿkƒ’ÿax‰ÿcs~ÿa===÷ªªªÿ···ÿ¶¶¶ÿµµµÿ±±±ÿÿ,,,ÿÉ~‡ï þ ÿ ÿÿ ÿÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿÿ ÿ ÿÿÿÿ ÿÿ"*ÿ“§´ÿ ®ÿŠž¬ÿ„™§ÿ•¤ÿyŽžÿyŽžÿvŒœÿuŒ›ÿqˆ—ÿn…•ÿn…•ÿh~Žÿdtÿ‹fffÿ¸¸¸ÿ³³³ÿ´´´ÿ°°°ÿ}}}ÿ üœZdjàÿ ÿ ÿÿ ÿ ÿ ÿ ÿ ÿ ÿÿ ÿ ÿ ÿÿÿ ÿ ÿ ÿÿ ÿ$ÿ˜«¸ÿ”§´ÿ¡®ÿˆœªÿ€•¤ÿ|“¡ÿzŸÿvŒœÿvŒ›ÿs‰˜ÿk‚’ÿm„”ÿiÿas€ÿ$555ÿ···ÿ²²²ÿ°°°ÿ°°°ÿ€€€ÿö‹ÿÿÿ9AGä ÿ ÿ ÿ ÿÿÿÿ ÿÿÿ ÿ ÿ ÿÿ ÿÿÿ ÿ ÿÿ ÿ&ÿ™«¸ÿ–¨¶ÿ”§´ÿ¡¯ÿ‚—¦ÿ|’¡ÿ}’¡ÿyŸÿvœÿqˆ—ÿm…•ÿlƒ“ÿl‚’ÿbsÿ***Ûªªªÿ«««ÿ¡¡¡ÿ¬¬¬ÿÿÿ¨Yahˆ37;ÿ ÿ ÿ ÿÿ a2ÿ]3ÿ %ÿ ;%ÿ *ÿ 'ÿ ÿ0"ÿ ÿ -$ÿÿÿ ÿ ÿ ÿ ÿ ÿ!ÿ—ª·ÿš«¸ÿ—ª·ÿ‘¥²ÿƒ˜¦ÿ|‘¡ÿ”£ÿ{‘ ÿuŒ›ÿr‰˜ÿn…”ÿm„”ÿlƒ’ÿ^q}ÿ%%%·˜˜˜ÿ£££ÿšššÿ¨¨¨ÿšššÿ333ÿÂgmu€#*0ÿ ÿ ÿ ÿ ÿ ÿa3ÿ ]3ÿ ÿ ÿ ÿ ÿ m3ÿÿÿ ÿ ÿ ÿÿ ÿ ÿ ÿ$ÿ™«·ÿŸ°¼ÿ›­¹ÿ•§´ÿ„™¨ÿ”£ÿ‚—¥ÿ|‘ ÿxŽžÿvŒœÿp‡–ÿo†–ÿm„”ÿ]q}ÿ ”†††ÿ¨¨¨ÿ™™™ÿ§§§ÿ¡¡¡ÿJJJÿÍy‚€ÿÿ ÿÿ ÿ ÿ ÿ ÿÿÿÿÿÿ ÿ ÿ ÿ ÿ ÿÿÿ ÿ ÿ"ÿ™«¹ÿ ²¾ÿœ®ºÿ•§´ÿ‡œ«ÿ„™§ÿ„˜§ÿ|’¡ÿ{‘ ÿvŒœÿu‹›ÿq‡—ÿn…•ÿbtƒÿqrrrÿ®®®ÿ———ÿ¥¥¥ÿ¨¨¨ÿbbbÿØ3y€†€ÿ ÿ ÿÿÿ ÿ ÿ ÿ ;!ÿÿ ÿ 8 ÿ @"ÿ ÿÿ ÿÿ*ÿ ÿ ÿ ÿ"ÿ!ÿ¯»ÿ£´Àÿ¯»ÿ–¨µÿ¢±ÿŠž¬ÿ…š©ÿ€–¥ÿ”¤ÿ{ ÿuŒ›ÿs‰™ÿp‡—ÿfzˆÿN[[[ÿ³³³ÿ–––ÿ£££ÿ¬¬¬ÿuuuÿãRS^\€#)•ÿ 7ÿÿ ÿ ÿ ÿ='ÿ ÿ;%ÿI+ÿ ÿ:$ÿ[5ÿ ÿÿ ÿ ÿÿ ÿÿ ÿ)ÿ%ÿ ²½ÿ¤¶ÁÿŸ°¼ÿ˜ª¶ÿ”§´ÿ ®ÿ‰ž¬ÿ‡œªÿ„™¨ÿ€•¤ÿwœÿvŒœÿvŒ›ÿg{Šÿ-GGGÿµµµÿ———ÿ¡¡¡ÿ­­­ÿƒƒƒÿíqZ^P€´ÿ Jÿÿ ÿÿ ÿ ÿ y0ÿ€3ÿ *ÿ y0ÿ4ÿ (ÿ ÿÿ ÿ ÿ ÿ ÿ ÿÿ 'ÿ &ÿ¥¶Áÿ§¸Ãÿ¡²¾ÿœ®ºÿ—©¶ÿ‘¥²ÿŒ ­ÿ‰œªÿ†›©ÿ‚—¦ÿ{‘ ÿwœÿtŠ™ÿeyˆÿ777ø²²²ÿ›››ÿžžžÿ¬¬¬ÿÿ ødg^€sÿ=ÿÿÿ6"ÿ"ÿ n0ÿq<ÿw-ÿ }3ÿj9ÿ ^"ÿ 'ÿ ÿ F+ÿ O/ÿ ÿÿ ÿ ÿ ÿ+6ÿ &ÿ©ºÃÿ©¹Äÿ¤¶Àÿ¯»ÿ–¨µÿ“¦³ÿŽ¢°ÿŠž¬ÿ…š¨ÿƒ—¦ÿ~“¢ÿ€•£ÿwœÿh|Šÿ...Ô¨¨¨ÿŸŸŸÿœœœÿ©©©ÿ™™™ÿ444ÿ®]dh€ ÿÿ ÿ ÿl9ÿ ;#ÿÿ *#ÿ }0ÿ#ÿ )"ÿ }/ÿ )ÿÿÿÿÿÿÿ ÿ ÿ&1;ÿ%,ÿª»Åÿ¬¼Æÿ¥¶Áÿœ®ºÿ–©µÿ’¥³ÿ£°ÿ‰«ÿ†š¨ÿ‡›©ÿƒ˜¦ÿ–¥ÿzžÿj}‹ÿ(((±šššÿ¤¤¤ÿšššÿ¨¨¨ÿ¡¡¡ÿIIIÿÂR[c€ ÿ ÿ ÿ ÿl*ÿ 6#ÿ  ÿ.ÿ ~.ÿ %#ÿ #ÿÿÿ ÿ ÿÿÿ ÿ ÿ ÿ ÿÿ#(ÿªºÄÿ¬¼Æÿ¤µÀÿ›­ºÿ–¨µÿ’¥³ÿ£±ÿŒŸ­ÿˆœ«ÿŠŸ¬ÿ…š¨ÿ–¥ÿ}‘ ÿkŒÿ ###Žˆˆˆÿ©©©ÿ˜˜˜ÿ¦¦¦ÿ¨¨¨ÿ```ÿÍAKR€ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿÿÿ ÿ ÿÿ ÿÿÿ ÿ ÿ ÿÿ ÿÿ&/5ÿ¬¼Èÿ¬¼Æÿ¤µÀÿž°¼ÿ–ª¶ÿ•¨´ÿ“¦³ÿ£°ÿ¡¯ÿ‰¬ÿˆœªÿ…™¨ÿ€•¢ÿnŽÿ ksssÿ¯¯¯ÿ–––ÿ¤¤¤ÿ®®®ÿuuuÿÙ<6>F€ ÿ ÿ ÿ ÿÿÿ[2ÿiÿA!ÿh6ÿoÿ ?!ÿ$…Eÿÿ7ÿ ~ÿÿ ÿÿÿ ÿ ÿ8BHÿ±ÂÍÿ©¹Ãÿ£´¿ÿž¯»ÿ˜«·ÿ—ª·ÿ•¨µÿ’¥²ÿ’¤²ÿŒ ®ÿ‰¬ÿ‰«ÿ‚—¥ÿm€ÿ"""G\\\ÿ´´´ÿ–––ÿ¢¢¢ÿ¯¯¯ÿÿäZ-4:€ ÿ ÿÿ ÿÿÿ ÿ…ÿ…)ÿ)ÿÿ…'ÿÿÿFÿÿÿÿb7ÿÿÿÿJQXÿ±ÂÎÿ©¸Ãÿ£µÀÿž±¼ÿš¬¸ÿ˜«·ÿ–©¶ÿ“¦´ÿŽ¡¯ÿ‹Ÿ­ÿˆœ«ÿ‡œªÿƒ–¥ÿo‚ÿ"""*IIIÿ¶¶¶ÿ™™™ÿ   ÿ­­­ÿ‰‰‰ÿðz-28€ÿ ÿÿÿY)ÿKÿ ÿ T)ÿ r#ÿ ÿ S(ÿÿ ÿÿ(ÿ Hÿ ÿ ÿ ÿ ÿ ÿ ÿPV[ÿ®ÀËÿªºÄÿ¥¶Àÿ ²½ÿš¬¹ÿ˜«·ÿ•¨µÿ’¥²ÿŽ¡®ÿŠŸ­ÿŠž¬ÿ‰«ÿ•£ÿr„‘ÿ<<<ï²²²ÿœœœÿžžžÿ«««ÿÿ$$$ýš,05€ ÿ ÿ ÿÿ *ÿ {"ÿ‚/ÿ #ÿ ‡&ÿÿ ÿGÿÿ qÿÿ ÿÿ ÿ ÿ ÿÿ ÿcntÿ°ÁÌÿ«ºÅÿ§¸Âÿ ²½ÿŸ±½ÿ˜ª¶ÿ“¦³ÿ“¦³ÿŽ¡¯ÿŒ ®ÿŠž¬ÿ„™¨ÿ~’¡ÿpƒÿ333Ì©©©ÿ   ÿœœœÿªªªÿ———ÿ///ÿ´,05€ ÿ ÿ ÿ ÿ !ÿ P#ÿ ,ÿ "ÿ ÿ ÿ ÿ ÿ ÿÿÿ ÿÿ ÿÿ ÿ ÿÿy…ÿ¯ÀÊÿ«»Äÿ§¹Äÿ¢´¿ÿž°¼ÿ˜«·ÿ”¦³ÿ“¦³ÿ‘¤²ÿ£°ÿŒŸ®ÿ‰«ÿ‚•¤ÿn‚÷šÌí+++ª›››ÿ¥¥¥ÿšššÿ¨¨¨ÿœœœÿ<<<ÿÄ .7>€ ÿ ÿ ÿ ÿ ÿ ÿ ÿ !ÿÿ ÿÿÿÿÿÿ ÿÿ ÿÿ ÿ ÿ ÿ‚Ž–ÿ«½Èÿ«»Äÿ§¸Ãÿ¢³¿ÿž¯»ÿ™«·ÿ“¦³ÿ”¦³ÿ“¦³ÿ¢°ÿ‰ž¬ÿ†›©ÿ–¥ÿuŠšö &&&ˆŠŠŠÿ«««ÿ˜˜˜ÿ¦¦¦ÿ¡¡¡ÿIIIÿÐ,:EL€ ÿ ÿ ÿ ÿ ÿ ÿ ÿ !ÿÿÿÿÿÿÿ ÿ ÿÿÿÿ ÿ ÿ ÿ‘¡«ÿ«¼Çÿ«»Åÿ§¸Ãÿ¢³¿ÿž°¼ÿ˜ª·ÿ”§´ÿ“¦³ÿ•¨µÿ“¦³ÿŒ ®ÿ‡›©ÿ–¥ÿw‹›ö&/%%%etttÿ°°°ÿ–––ÿ¥¥¥ÿ£££ÿTTTÿÝKDMT€ ÿ ÿ ÿ ÿÿÿÿ ÿÿ ÿ ÿÿ ÿ ÿ ÿÿÿÿÿ ÿ ÿÿ˜¨²ÿ«»Æÿ©¹Äÿ¥¶Áÿ¡²¾ÿ¯»ÿ–©µÿ•¨µÿ•¨´ÿ”§´ÿ’¦²ÿ¡¯ÿ‡›©ÿ”¤ÿsˆ—û(((B]]]ÿ´´´ÿ———ÿ£££ÿ¥¥¥ÿ]]]ÿêiQYa€ ÿ ÿÿ ÿ ÿÿÿÿÿ ÿ'4ÿ ÿ ÿÿÿ ÿÿ ÿ ÿ ÿÿ%+1ÿ®ºÿ¨¹Äÿ¤¶Áÿ¢³¿ÿŸ°¼ÿœ®ºÿ”¨µÿ’¤²ÿ‘¤²ÿ‘¥²ÿ£±ÿˆœ«ÿƒ—¥ÿw‹šÿhy…Ñ%%%*LLLÿ¶¶¶ÿ™™™ÿ   ÿ¦¦¦ÿgggÿ÷‡|‡ˆenwÿQX\ÿ=DKÿ(.4ÿ&-2ÿ"*1ÿ#+ÿ$ÿ"ÿ"ÿ!'ÿÿ ÿ#ÿ!ÿ#ÿ *ÿ#+ÿ!)0ÿ1?KÿCMUÿvƒÿŸ°¼ÿ©¹Ãÿ¦µÀÿ¤´¿ÿ ±½ÿ¯ºÿ˜«¸ÿ–©¶ÿ˜«·ÿ•¦´ÿ‰š§ÿž©ÿsƒñl€’X^f ???å³³³ÿ¡¡¡ÿÿªªªÿtttÿÿ§}„‰u†ãox~à{…‹à‚ˆŒàq{‚àft}àYclà}†‹àz€„ày~‚à{…à~†‹à{ƒ‰àw…à‰‘àŽš¢à§®à¦¯·à¨³»à­¹Áà©¶¾à¨³¼à¨´½àª¶¿à¨´¼à£°¹à—¥°àšª³à¢°¹ä «³±’›££sƒŽ222ë²²²ÿ°°°ÿ®®®ÿ²²²ÿ‰‰‰ÿÿÎ){ƒˆ“¥NMMMÿ¸¸¸ÿ´´´ÿ´´´ÿ´´´ÿ¡¡¡ÿRRRÿû  '''Á“““ÿ···ÿ´´´ÿ´´´ÿ³³³ÿ­­­ÿŒŒŒÿ>>>ÿ÷šdsssÿ···ÿ°°°ÿªªªÿ¦¦¦ÿŸŸŸÿ–––ÿ„„„ÿ```ÿ***ÿ û°-%UUUè©©©ÿ¡¡¡ÿžžžÿ¢¢¢ÿ¤¤¤ÿ¤¤¤ÿ¡¡¡ÿœœœÿ’’’ÿlllÿ,,,ÿÿ¨ AAA–––ÿšššÿ   ÿ§§§ÿ®®®ÿ°°°ÿ±±±ÿ±±±ÿ°°°ÿ¬¬¬ÿ   ÿ‚‚‚ÿ>>>ÿ÷vWWWkkkñšššÿ   ÿ­­­ÿ²²²ÿ³³³ÿ³³³ÿ³³³ÿ³³³ÿ³³³ÿ³³³ÿ°°°ÿ§§§ÿ………ÿ000ÿ´000LˆˆˆÿŸŸŸÿ¬¬¬ÿ³³³ÿ···ÿ¼¼¼ÿ½½½ÿ¼¼¼ÿºººÿ¶¶¶ÿ³³³ÿ³³³ÿ¯¯¯ÿ¦¦¦ÿ\\\ÿÓB///v˜˜˜ÿ¦¦¦ÿ²²²ÿ¯¯¯ÿ‚‚‚ÿ;;;ÿ+++ÿ555ÿUUUÿÿºººÿ³³³ÿ²²²ÿ®®®ÿqqqÿãX +++€žžžÿ«««ÿ¶¶¶ÿšššÿó’+ : k"""Æjjjÿ»»»ÿ³³³ÿ²²²ÿtttÿå[&&&iÿ­­­ÿ¶¶¶ÿ’’’ÿåLEQQQï¼¼¼ÿ³³³ÿ´´´ÿjjjÿÕE444/gggÿ¯¯¯ÿ´´´ÿƒƒƒÿÞ0"""<\\\õ»»»ÿ´´´ÿ¥¥¥ÿJJJÿµ 777²¥¥¥ÿ¯¯¯ÿqqqÿ×999Bhhhÿ»»»ÿ···ÿ~~~ÿôu2MMMöªªªÿ^^^ÿÒMMMGtttÿ½½½ÿ”””ÿ---ÿ®L:::úAAAÿÂ^^^O‚‚‚ÿÿ'''ÿ½#7¶v...`---ÿ ÷’e.ÿÿÿÿÿÿÿÿÿÿÿÿÿýÿÿÿÿÿðÿÿÿÿÀÿÿÿ€ÿÿÿ€ÿÿÿ€ÿÿÿÀÿÿÿàÿþpÿø8ø/ð€àà€àðàðàðàððàðü?þ?þÿ~ÿ~ÿ~ÿ>ÿ>ÿ>ÿ€>ÿ€>ÿ€>ÿ€>ÿ€ÿ€ÿ€ÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿàÿàïÿàÿÿÿÿÿÀÿÿÿÿÿÿÀÿÿÿÿÿ€ÿÿÿÿÿÿ€ÿÿÿÿÿÿÿÿÿÿ?ÿÿÿÿþ?ÿÿÿÿþ?ÿÿÿÿþ?ÿÿÿÿþ?ÿÿÿÿÿÀ?ÿÿÿÿÿÀÿÿÿÿÿƒÀÿÿÿÿÿƒÀÿÿÿÿÿÿÃÁÿÿÿÿÿÿãÇÿÿÿÿÿÿÿïÿÿÿÿÿsuite3270-4.1/wb3270/wb3270.rc000066400000000000000000000000421413735575200152310ustar00rootroot00000000000000LANGUAGE 0, 0 100 ICON wb3270.ico suite3270-4.1/wb3270/x3270.man.m4000077700000000000000000000000001413735575200210172../Common/x3270.man.m4ustar00rootroot00000000000000suite3270-4.1/wc3270/000077500000000000000000000000001413735575200137645ustar00rootroot00000000000000suite3270-4.1/wc3270/.gitignore000066400000000000000000000001341413735575200157520ustar00rootroot00000000000000compiled_keypad.h LICENSE.txt mkkeypad wc3270.iss *-noinstall-*.zip package.ps1 package.zip suite3270-4.1/wc3270/CopyToWx3270.ps1000066400000000000000000000007511413735575200164640ustar00rootroot00000000000000# Copy signed executable files to wx3270 repo Param ( [Parameter(Mandatory=$true)] [String]$DestDir ) $x = Test-Path -Path $DestDir -PathType Container if (-Not $x) { Write-Host "No such directory" exit 1 } foreach ($i in @('win32', 'win64')) { copy obj\$i\wb3270\b3270.exe $Destdir\extern\x3270-$i copy obj\$i\ws3270\s3270.exe $Destdir\extern\x3270-$i copy obj\$i\wpr3287\pr3287.exe $Destdir\extern\x3270-$i copy obj\$i\x3270if\x3270if.exe $Destdir\extern\x3270-$i } suite3270-4.1/wc3270/Makefile000077500000000000000000000042311413735575200154270ustar00rootroot00000000000000# Copyright (c) 2016 Paul Mattes. # All rights reserved. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # * Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # * Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in the # documentation and/or other materials provided with the distribution. # * Neither the name of Paul Mattes nor his contributors may be used # to endorse or promote products derived from this software without # specific prior written permission. # # THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS OR # IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES # OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN # NO EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, # SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED # TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR # PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF # LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING # NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS # SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. # VPATH-based Makefile for wc3270, can build either 32- or 64-bit ifdef WIN64 objdir = ../obj/win64/wc3270 else objdir = ../obj/win32/wc3270 endif top = ../../.. this = $(top)/wc3270 export VPATH = $(this):$(top)/Common/Win32:$(top)/Common/c3270:$(top)/Common export TOP = $(top) export THIS = $(this) MAKEINC = -I$(top)/Common -I$(top)/Common/Win32 all: $(objdir) cd $(objdir) && $(MAKE) $(MAKEINC) -f $(this)/Makefile.obj $@ clean: $(objdir) cd $(objdir) && $(MAKE) $(MAKEINC) -f $(this)/Makefile.obj $@ clobber: $(objdir) cd $(objdir) && $(MAKE) $(MAKEINC) -f $(this)/Makefile.obj $@ depend: $(objdir) cd $(objdir) && $(MAKE) $(MAKEINC) -f $(this)/Makefile.obj $@ $(objdir): mkdir -p $(objdir) suite3270-4.1/wc3270/Makefile.aux000066400000000000000000000051701413735575200162230ustar00rootroot00000000000000# Copyright (c) 1995-2015, 2017, 2020 Paul Mattes. # All rights reserved. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # * Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # * Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in the # documentation and/or other materials provided with the distribution. # * Neither the name of Paul Mattes nor his contributors may be used # to endorse or promote products derived from this software without # specific prior written permission. # # THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS OR # IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES # OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN # NO EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, # SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED # TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR # PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF # LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING # NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS # SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. # Auxiliary makefile for wc3270 PRODUCT = wc3270 all: @echo "Must pick a specific make target." DOCS = html/$(PRODUCT)-man.html src.tgz: $(DOCS) wc3270.iss package.ps1 Makefile.aux MANDEP = html.m4 m4man Makefile.aux version.txt MKHTML = ./m4man -t html -p $(PRODUCT) # Rule for building the documentation. man: $(DOCS) # Rules for building man pages and derived HTML documentation. html/$(PRODUCT)-man.html: x3270.man.m4 $(MANDEP) $(MKHTML) -n $(PRODUCT) -o $@ x3270.man.m4 wc3270.iss: version.txt wc3270.iss.tmpl mkiss ./mkiss wc3270.iss package.ps1: version.txt package.ps1.tmpl mkiss ./mkiss package.ps1 # Create the packaging archive. .PHONY: package.zip package.zip: wc3270.iss package.ps1 CopyToWx3270.ps1 wc3270-32.zipit wc3270-64.zipit wx3270-32.zipit wx3270-64.zipit (cd .. && \ rm -f wc3270/package.zip && \ zip wc3270/package.zip obj/win32 obj/win64 -r -i '*.exe' && \ zip wc3270/package.zip wc3270/*.txt wc3270/*.zipit wc3270/wc3270.iss wc3270/x3270-icon2.bmp && \ zip wc3270/package.zip -j wc3270/package.ps1 wc3270/CopyToWx3270.ps1 wc3270/wc3270.iss) windows-release: package.zip suite3270-4.1/wc3270/Makefile.obj000066400000000000000000000103761413735575200162040ustar00rootroot00000000000000# Copyright (c) 2007-2009, 2013-2020 Paul Mattes. # All rights reserved. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # * Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # * Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in the # documentation and/or other materials provided with the distribution. # * Neither the name of Paul Mattes nor his contributors may be used # to endorse or promote products derived from this software without # specific prior written permission. # # THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS OR # IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES # OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN # NO EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, # SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED # TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR # PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF # LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING # NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS # SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. # Makefile for wc3270 # Set GT_PFX, NATIVE_SFX, NATIVECC, CC, WINDRES and WIN32_FLAGS. include winenv.mk MKFB = mkfb$(NATIVE_SFX) MKKEYPAD = mkkeypad$(NATIVE_SFX) XCPPFLAGS = $(WIN32_FLAGS) -I. -I$(THIS) -I$(TOP)/Common/c3270 -I$(TOP)/Common -I$(TOP)/include CFLAGS = $(EXTRA_FLAGS) -g -Wall -Werror -Wno-format-zero-length -MMD -MP $(XCPPFLAGS) ifdef WIN64 HOST = win64 else HOST = win32 endif W = w include $(THIS)/wc3270_files.mk libs.mk VOBJS = $(WC3270_OBJECTS) fallbacks.o wc3270res.o OBJECTS = $(VOBJS) version.o WOBJECTS = wizard.o wc3270res.o wversion.o shortcut.o relink.o MKSHORTOBJECTS = mkshort.o shortcut.o wc3270res.o LIBS = -lws2_32 -lole32 -luuid -lcomdlg32 -lgdi32 -lwinspool -lcrypt32 -lsecur32 LIBDEPS = $(DEP3270) $(DEP3270I) $(DEP3270STUBS) $(DEP32XX) SHRTLIBS = $(LD32XX) -lole32 -luuid WIZLIBS = $(LD32XX) -lole32 -luuid -lwinspool DLLFLAGS = $(EXTRA_FLAGS) -mno-cygwin -shared -Wl,--export-all-symbols -Wl,--enable-auto-import PROGS = wc3270.exe c3270.exe mkshort.exe wc3270wiz.exe catf.exe x3270if.exe all: $(PROGS) version.o: mkversion.sh $(VOBJS) $(LIBDEPS) version.txt $(RM) xversion.c sh $< wc3270 $(filter %.txt,$^) >xversion.c $(CC) $(CFLAGS) -c -o $@ xversion.c $(RM) xversion.c FALLBACKS = fb-common fb-printSession fb-messages fb-composeMap fb-c3270 fallbacks.c: $(MKFB) $(FALLBACKS) $(RM) $@ ./$(MKFB) -c -o $@ $(filter-out $(MKFB),$^) $(MKFB): mkfb.c $(NATIVECC) -DFOR_WIN32 -MMD -MP -I$(THIS) -o $@ $^ keypad.o: keypad.c compiled_keypad.h compiled_keypad.h: keypad.full keypad.labels keypad.map keypad.outline keypad.callbacks $(MKKEYPAD) ./$(MKKEYPAD) -I$(TOP)/Common/c3270 >$@ $(MKKEYPAD): mkkeypad.c $(NATIVECC) -MMD -MP -I$(THIS) -o $@ $^ wc3270.exe.manifest: mkmanifest.sh version.txt manifest.tmpl sh $< $(filter %.txt,$^) $(filter %.tmpl,$^) wc3270 "wc3270 terminal emulator" $(WIN64) >$@.tmp mv -f $@.tmp $@ wc3270res.o: wc3270.rc wc3270.ico wc3270km.ico wc3270.exe.manifest $(WINDRES) -i $< -o $@ wc3270.exe: $(OBJECTS) $(LIBDEPS) Makefile $(CC) -o wc3270.exe $(CFLAGS) $(OBJECTS) $(LD3270) $(LD3270I) $(LD32XX) $(LD3270STUBS) $(LIBS) c3270.exe: wc3270.exe cp -p wc3270.exe $@ mkshort.exe: $(MKSHORTOBJECTS) $(DEP32XX) $(CC) -o mkshort.exe $(CFLAGS) $(MKSHORTOBJECTS) $(SHRTLIBS) wversion.o: mkwversion.sh version.txt sh $< $(CC) $(filter %.txt,$^) wc3270wiz.exe: $(WOBJECTS) $(DEP32XX) $(CC) -o wc3270wiz.exe $(CFLAGS) $(WOBJECTS) $(WIZLIBS) catf_res.o: catf.rc catf.ico $(WINDRES) -i $< -o $@ catf.exe: catf.o catf_res.o $(CC) $(CFLAGS) -o $@ catf.o catf_res.o x3270if.exe: ../x3270if/x3270if.exe cp -p ../x3270if/x3270if.exe $@ clean: rm -f *.o $(MKFB) $(MKKEYPAD) compiled_keypad.h fallbacks.c wc3270.exe.manifest clobber: clean rm -f $(PROGS) *.d # Include auto-generated dependencies. -include $(OBJS:.o=.d) mkbf.d mkkeypad.d wc3270wiz.d suite3270-4.1/wc3270/MingwCross000077500000000000000000000307141413735575200160120ustar00rootroot00000000000000#! /bin/bash # This is my script for building a complete MinGW cross-compiler toolchain # that runs under Linux to produce executables that run under Windows. It # probably works (or can easily be adapted to work) under any unix system. # # It is based in large part on Sam Lantinga's script, which in turn was # based partly on Ray Kelm's script, which in turn was built on # Mo Dejong's script for doing the same, but with some added fixes. # # My changes: # 1. Adapted the script to the new packaging of MinGW GCC, which is # currently split into core and auxiliary components. # 2. The script now determines the GCC and BINUTILS directory name # directly from the tar file contents. This gets around common # problems due to the directory names not always following the # expected patterns. # 3. Grouped together and simplified the macros that users need to # define. # 4. Made optional components truly optional -- leave the # corresponding archive names blank and they will be ignored. # 5. Included an option to purge the installation directory before # installing the current cross-compiler. # # NOTE: If you choose a destination directory for the installation (set # in the macro PREFIX) for which you do not have write access, you will # need to run this script with root (or equivalent) privileges. # # # Updated by Igor Mikolic-Torreira #----------------------------------------------------- # # BEGIN USER SETTINGS # # You need to review and adjust the macros that follow # #----------------------------------------------------- # What flavor of GCC cross-compiler are we building? TARGET=mingw32 # What directory will the cross-compiler be built in? # This is the directory into which source archives will # be downloaded, expanded, compiled, etc. You need to # have write-access to this directory. If you leave it # blank, it defaults to the current directory. BUILDDIR= # Where does the cross-compiler go? # This should be the directory into which your cross-compiler # will be installed. Remember that if you set this to a directory # that only root has write access to, you will need to run this # script as root. PREFIX=/usr/local/mingw32 # Purge anything and everything already in the $PREFIX #(also known as the destination or installation) directory? # Set to "Y" to purge, any other value omits the purge step. PURGE_DIR="Y" # Set the following to the files from the current MinGW release # (or whichever MinGW release you wish to build and install) # You need to set both the URL they will be downloaded from # and the exact name of the individual component files. MINGW_URL="http://heanet.dl.sourceforge.net/sourceforge/mingw" # GCC_CORE is required; the other components are optional. # Set any you don't want to "". You need binutils, # mingw runtime and w32api; do not ever set those to "". #GCC_CORE_ARCHIVE="gcc-core-3.4.2-20040916-1-src.tar.gz" GCC_CORE_ARCHIVE="gcc-core-3.4.4-20050522-1-src.tar.gz" #GCC_GPP_ARCHIVE="gcc-g++-3.4.2-20040916-1-src.tar.gz" GCC_GPP_ARCHIVE="" #GCC_G77_ARCHIVE="gcc-g77-3.4.2-20040916-1-src.tar.gz" GCC_G77_ARCHIVE="" #GCC_OBJC_ARCHIVE="gcc-objc-3.4.2-20040916-1-src.tar.gz" GCC_OBJC_ARCHIVE="" #GCC_JAVA_ARCHIVE="gcc-java-3.4.2-20040916-1-src.tar.gz" GCC_JAVA_ARCHIVE="" GCC_ADA_ARCHIVE="" GCC_PATCH="" #BINUTILS_ARCHIVE="binutils-2.15.91-20040904-1-src.tar.gz" BINUTILS_ARCHIVE="binutils-2.17.50-20060824-1-src.tar.gz" #MINGW_ARCHIVE="mingw-runtime-3.7.tar.gz" MINGW_ARCHIVE="mingw-runtime-3.12.tar.gz" #W32API_ARCHIVE="w32api-3.2.tar.gz" W32API_ARCHIVE="w32api-3.9.tar.gz" # These are the files from the SDL website # These are optional, set them to "" if you don't want them) SDL_URL="http://www.libsdl.org/extras/win32/common" #OPENGL_ARCHIVE="opengl-devel.tar.gz" OPENGL_ARCHIVE="" #DIRECTX_ARCHIVE="directx-devel.tar.gz" DIRECTX_ARCHIVE="" #----------------------------------------------------- # # END USER SETTINGS # # The remainder of the script should not neet any edits # #----------------------------------------------------- # Make sure these are initialized as we want them GCC_CORE="" BINUTILS="" GCC_LANGS="c" # Set our build directory and where our sources will go if [ "x$BUILDDIR" = "x" ]; then # Default to the current directory BUILDDIR=$(pwd) fi SRCDIR="$BUILDDIR/source" # Need install directory first on the path so gcc can find binutils PATH="$PREFIX/bin:$PATH" #----------------------------------------------------- # # Functions that do most of the work # #----------------------------------------------------- function download_files { # Download a file from a given url, only if it is not present mkdir -p "$SRCDIR" # Make sure wget is installed if test "x`which wget`" = "x" ; then echo "You need to install wget." exit 1 fi download_file "$GCC_CORE_ARCHIVE" "$MINGW_URL" if [ "x$GCC_GPP_ARCHIVE" != "x" ]; then download_file "$GCC_GPP_ARCHIVE" "$MINGW_URL" fi if [ "x$GCC_G77_ARCHIVE" != "x" ]; then download_file "$GCC_G77_ARCHIVE" "$MINGW_URL" fi if [ "x$GCC_OBJC_ARCHIVE" != "x" ]; then download_file "$GCC_OBJC_ARCHIVE" "$MINGW_URL" fi if [ "x$GCC_JAVA_ARCHIVE" != "x" ]; then download_file "$GCC_JAVA_ARCHIVE" "$MINGW_URL" fi if [ "x$GCC_ADA_ARCHIVE" != "x" ]; then download_file "$GCC_ADA_ARCHIVE" "$MINGW_URL" fi download_file "$BINUTILS_ARCHIVE" "$MINGW_URL" download_file "$MINGW_ARCHIVE" "$MINGW_URL" download_file "$W32API_ARCHIVE" "$MINGW_URL" if [ "x$OPENGL_ARCHIVE" != "x" ]; then download_file "$OPENGL_ARCHIVE" "$SDL_URL" fi if [ "x$DIRECTX_ARCHIVE" != "x" ]; then download_file "$DIRECTX_ARCHIVE" "$SDL_URL" fi } function download_file { cd "$SRCDIR" if test ! -f $1 ; then echo "Downloading $1" wget "$2/$1" if test ! -f $1 ; then echo "Could not download $1" exit 1 fi else echo "Found $1 in the srcdir $SRCDIR" fi cd "$BUILDDIR" } function purge_existing_install { echo "Purging the existing files in $PREFIX" if cd "$PREFIX"; then rm -rf * fi cd "$BUILDDIR" } function install_libs { echo "Installing cross libs and includes" mkdir -p "$PREFIX/$TARGET" cd "$PREFIX/$TARGET" tar -xzf "$SRCDIR/$MINGW_ARCHIVE" tar -xzf "$SRCDIR/$W32API_ARCHIVE" if [ "x$OPENGL_ARCHIVE" != "x" ]; then tar -xzf "$SRCDIR/$OPENGL_ARCHIVE" fi if [ "x$DIRECTX_ARCHIVE" != "x" ]; then tar -xzf "$SRCDIR/$DIRECTX_ARCHIVE" fi cd "$BUILDDIR" } function extract_binutils { cd "$SRCDIR" BINUTILS=`tar -tzf "$SRCDIR/$BINUTILS_ARCHIVE" | head -n 1` rm -rf "$BINUTILS" echo "Extracting binutils" tar -xzf "$SRCDIR/$BINUTILS_ARCHIVE" cd "$BUILDDIR" } function configure_binutils { cd "$BUILDDIR" rm -rf "binutils-$TARGET" mkdir "binutils-$TARGET" cd "binutils-$TARGET" echo "Configuring binutils" "$SRCDIR/$BINUTILS/configure" --prefix="$PREFIX" --target=$TARGET --disable-nls \ --with-gcc --with-gnu-as --with-gnu-ld --disable-shared &> configure.log cd "$BUILDDIR" } function build_binutils { cd "$BUILDDIR/binutils-$TARGET" echo "Building binutils" make CFLAGS="-O2 -fno-exceptions" LDFLAGS="-s" &> make.log if test $? -ne 0; then echo "make of binutils failed - log available: binutils-$TARGET/make.log" exit 1 fi cd "$BUILDDIR" } function install_binutils { cd "$BUILDDIR/binutils-$TARGET" echo "Installing binutils" make install &> make-install.log if test $? -ne 0; then echo "install of binutils failed - log available: binutils-$TARGET/make-install.log" exit 1 fi cd "$BUILDDIR" } function extract_gcc { cd "$SRCDIR" GCC=`tar -tzf "$SRCDIR/$GCC_CORE_ARCHIVE" | head -n 1` rm -rf "$GCC" echo "Extracting gcc" tar -xzf "$SRCDIR/$GCC_CORE_ARCHIVE" if [ "x$GCC_GPP_ARCHIVE" != "x" ]; then GCC_LANGS=${GCC_LANGS}",c++" tar -xzf "$SRCDIR/$GCC_GPP_ARCHIVE" fi if [ "x$GCC_G77_ARCHIVE" != "x" ]; then GCC_LANGS=${GCC_LANGS}",f77" tar -xzf "$SRCDIR/$GCC_G77_ARCHIVE" fi if [ "x$GCC_OBJC_ARCHIVE" != "x" ]; then GCC_LANGS=${GCC_LANGS}",objc" tar -xzf "$SRCDIR/$GCC_OBJC_ARCHIVE" fi if [ "x$GCC_JAVA_ARCHIVE" != "x" ]; then GCC_LANGS=${GCC_LANGS}",java" tar -xzf "$SRCDIR/$GCC_JAVA_ARCHIVE" fi if [ "x$GCC_ADA_ARCHIVE" != "x" ]; then GCC_LANGS=${GCC_LANGS}",ada" tar -xzf "$SRCDIR/$GCC_ADA_ARCHIVE" fi cd "$BUILDDIR" } function patch_gcc { if [ "$GCC_PATCH" != "" ]; then echo "Patching gcc" cd "$SRCDIR/$GCC" patch -p1 < "$SRCDIR/$GCC_PATCH" cd "$BUILDDIR" fi } function configure_gcc { cd "$BUILDDIR" rm -rf "gcc-$TARGET" mkdir "gcc-$TARGET" cd "gcc-$TARGET" echo "Configuring gcc" "$SRCDIR/$GCC/configure" -v \ --prefix="$PREFIX" --target=$TARGET \ --with-headers="$PREFIX/$TARGET/include" \ --with-gcc --with-gnu-ld --with-gnu-as \ --enable-threads --disable-nls --enable-languages=$GCC_LANGS \ --disable-win32-registry --disable-shared --enable-sjlj-exceptions --enable-libgcj \ --disable-java-awt --without-x --enable-java-gc=boehm --disable-libgcj-debug \ --enable-interpreter --enable-hash-synchronization --enable-libstdcxx-debug \ &> configure.log cd "$BUILDDIR" } function build_gcc { cd "$BUILDDIR/gcc-$TARGET" echo "Building gcc" make CFLAGS="-O2" CXXFLAGS="-O2" GCJFLAGS="-O2" LDFLAGS="-s" DEBUG_FLAGS="-g0" &> make.log if test $? -ne 0; then echo "make of gcc failed - log available: gcc-$TARGET/make.log" exit 1 fi if [ "x$GCC_ADA" != "x" ]; then cd gcc make "CFLAGS=-O2" "LDFLAGS=-s" gnatlib_and_tools &> make-gnatlib.log if test $? -ne 0; then echo "make of gnatlib and tools failed - log available: gcc-$TARGET/make-gnatlib.log" exit 1 fi fi cd "$BUILDDIR" } function install_gcc { cd "$BUILDDIR/gcc-$TARGET" echo "Installing gcc" make install &> make-install.log if test $? -ne 0; then echo "install of gcc failed - log available: gcc-$TARGET/make-install.log" exit 1 fi cd "$BUILDDIR" } function final_tweaks { echo "Finalizing installation" # remove gcc build headers rm -rf "$PREFIX/$TARGET/sys-include" # Add extra binary links if [ ! -f "$PREFIX/$TARGET/bin/objdump" ]; then ln "$PREFIX/bin/$TARGET-objdump" "$PREFIX/$TARGET/bin/objdump" fi # make cc and c++ symlinks to gcc and g++ if [ ! -f "$PREFIX/$TARGET/bin/g++" ]; then ln "$PREFIX/bin/$TARGET-g++" "$PREFIX/$TARGET/bin/g++" fi if [ ! -f "$PREFIX/$TARGET/bin/cc" ]; then ln -s "gcc" "$PREFIX/$TARGET/bin/cc" fi if [ ! -f "$PREFIX/$TARGET/bin/c++" ]; then ln -s "g++" "$PREFIX/$TARGET/bin/c++" fi # strip all the binaries ls "$PREFIX"/bin/* "$PREFIX/$TARGET"/bin/* | egrep -v '.dll$' | egrep -v 'gccbug$' | while read file; do strip "$file" done echo "Installation complete!" } # # Main part of the script # download_files if [ "x$PURGE_DIR" = "xY" ]; then purge_existing_install fi install_libs extract_binutils configure_binutils build_binutils install_binutils extract_gcc patch_gcc configure_gcc build_gcc install_gcc final_tweaks # # End # suite3270-4.1/wc3270/NO-INSTALL.txt000066400000000000000000000052511413735575200161500ustar00rootroot00000000000000Running wc3270 Without Installing It ------------------------------------ It is possible to run wc3270 without installing it. This allows it to be run from a USB flash drive or CD without modifying the system it is run on, or to be bundled with another application without needing to include the full wc3270 installation. When wc3270.exe or wc3270wiz.exe are run without doing a full software installation, they will not use the wc3270 Application Data directory. Instead, keymaps will be searched for in the working directory first, then in the directory where the executable file is. wc3270wiz.exe will write new keymaps to the working directory. wc3270 trace files will be written to the working directory as well. A new feature, auto-shortcut mode, also facilitates installation-free execution. Auto-shortcut mode is controlled by the wc3270.autoShortcut resource. If this resource is set to True in a session file or via the -S command-line option, then wc3270.exe will automatically create a temporary shortcut file (.LNK file) that matches the parameters in a session file (model number, character set, font, etc.) and re-run itself from the shortcut. (Without auto-shortcut mode, wc3270.exe will generally run as a Model 2 in a 25x80 console window, using the system default ANSI code page, and the system default font, which is usually not a Unicode font and thus cannot display all of the EBCDIC characters.) Note that auto-shortcut mode is set in all session files created by the Session Wizard, starting with version 3.3.10. Also note that all shortcuts created by the Session Wizard and by wc3270 itself as part of auto-shortcut mode include the +S command-line switch, to turn auto-shortcut mode off and avoid infinite looping. Thus, the easiest way to create a 'standalone' copy of wc3270 is to simply create a session file with the Session Wizard. Then you can run wc3270 via a 1-line .BAT file (substituting your session name for the session file): wc3270.exe xxx.wc3270 This command can also be passed to the 'system' library call from an application. Only wc3270.exe and the session file need to be present on the flash drive or copied to the target system. Note that custom keymaps can still be used in no-install mode. Keymap files can either be placed in the same directory as wc3270.exe, or the definitions can be included in the session file via a Session Wizard option ('Embed Keymaps'). Note also that it is possible to create a session file that does not specify a hostname. This allows the creation of session files that define things like the model number and character set, but allow the hostname to be entered interactively. suite3270-4.1/wc3270/README-zip.txt000066400000000000000000000016461413735575200162710ustar00rootroot00000000000000wc3270 No-Install README File This is the installer-free distribution of wc3270. Normally these files are installed in "C:\Program Files\wc3270" and the suffix ".wc3270" is registered to associate wc3270 session files with the wc3270 app. It includes the following executable files: wc3270.exe The wc3270 program, runs in a console window wc3270wiz.exe The wc3270 Session Wizard, creates and edits session files and desktop shortcuts ws3270.exe The scripting (screen-scraping) version of wc3270 catf.exe Helper application to monitor trace files x3270if.exe Helper application for wc3270 scripting The documentation is here: html\ HTML documentation, the root is html\README.html LICENSE.txt Legal necessities NO-INSTALL.txt How to run wc3270 without installing it (it can be a bit tricky) suite3270-4.1/wc3270/catf.c000066400000000000000000000072451413735575200150550ustar00rootroot00000000000000/* * Copyright (c) 2007-2009, 2013, 2015, 2019 Paul Mattes. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of Paul Mattes nor his contributors may be used * to endorse or promote products derived from this software without * specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. */ /* * catf.c * A Windows console-based 3270 Terminal Emulator * A subset of the Unix 'tail -f' command. */ #if !defined(_WIN32) /*[*/ #error For Windows only. #endif /*]*/ #include #include "wincmn.h" #include #include #include #define BUFFER_SIZE 16384 static int catf(char *filename, bool utf8); int main(int argc, char *argv[]) { int argi = 1; bool utf8 = false; int rv; if (argc > 1) { if (!strcmp(argv[argi], "-utf8")) { utf8 = true; argi++; } } if (argc - argi != 1) { fprintf(stderr, "usage: catf [-utf8] \n"); exit(1); } if (utf8) { /* Set the console to UTF-8 mode. */ SetConsoleOutputCP(65001); } do { rv = catf(argv[argi], utf8); } while (rv == 0); exit(1); } /* * Tail the file. * Returns -1 for error, 0 for retry (file shrank or possibly disappeared). */ static int catf(char *filename, bool utf8) { int fd; struct stat buf; off_t size; off_t fp = 0; char rbuf[BUFFER_SIZE]; wchar_t rbuf_w[BUFFER_SIZE]; fd = open(filename, O_RDONLY | O_BINARY); if (fd < 0) { perror(filename); return -1; } if (fstat(fd, &buf) < 0) { perror(filename); return -1; } size = buf.st_size; for (;;) { while (fp < size) { int n2r, nr; BOOL udc; if (size - fp > BUFFER_SIZE) { n2r = BUFFER_SIZE; } else { n2r = size - fp; } nr = read(fd, rbuf, n2r); if (nr < 0) { perror(filename); close(fd); return 0; } if (nr == 0) { printf("\nUNEXPECTED EOF\n"); close(fd); return 0; } if (!utf8) { /* Translate ANSI to OEM. */ MultiByteToWideChar(CP_ACP, 0, rbuf, nr, rbuf_w, BUFFER_SIZE); WideCharToMultiByte(CP_OEMCP, 0, rbuf_w, BUFFER_SIZE, rbuf, nr, "?", &udc); } write(1, rbuf, nr); fp += nr; } do { if (fstat(fd, &buf) < 0) { perror(filename); return -1; } if (buf.st_size < size) { printf("\ncatf: '%s' shrank -- reopening\n", filename); close(fd); return 0; } if (buf.st_size == size) { Sleep(1 * 1000); } } while (buf.st_size == size); size = buf.st_size; } } suite3270-4.1/wc3270/catf.ico000077500000000000000000000410761413735575200154100ustar00rootroot00000000000000@@ (B(@€ •¦²­·”¥±aq|Rcs~›j{‰ÿfvƒÿRboÿXjxÿVhvÿUfsÿRbnÛR_i²WgrÛ]jvÌcnv´hwƒÂl~‰ÿl}‹ÿ\o|ÿ\p|ÿo€Žÿo‚Žÿh|‰ÿfw„ÿhz†ÿfy…ÿfy…ÿdv„ÿYmzÿThuøYkxöZn{ñ^q}ÿ^p|ÿXjxÿauÿdx„ÿh|‰ÿlŒÿm€Žÿn‚ÿn‚‘ÿh|‰Òl~‰õq€‹ÿlw°v‹ÿdr~ÿRcpÿFWcÿHZhÿThwÿYm|ÿWjzüYn}ìWm}ÿZpÿZpÿ]rÿ_u„ÿdz‰ÿdyŠÿcz‰ÿdyˆÿey‰ÿi~ÿh~Œÿl€ÿl‚ÿp…“ÿuˆ–ÿ}œÿ‚•¡ÿ}žÿ…˜¦ÿ‰œ¨ÿ‘£°ÿ’¤²ÿ£°ÿ“¦³ÿ”£ÿqˆ–ÿo…”ÿlÿfzˆÿu†‘ÿly‚ÿH[hÿG[jÿH\mÿI_nÿPgwÿQizÿax‰ÿd{Œÿd{‹ÿg~Žÿhÿo…”ÿsˆ–ÿw‹šÿyžÿ”¢ÿ€”£ÿ”¢ÿ|‘¡ÿ}’¡ÿ–¤ÿ–¤ÿ–¥ÿ…™¨ÿ‡œ©ÿŠ«ÿŠž«ÿ¡®ÿ‰«ÿƒ—¦ÿ¡®ÿ£±ÿ‘¤±ÿ¢°ÿ“¥³ÿ‘¤²ÿu‹›ÿqˆ˜ÿu‹›ÿt‰˜ÿs‡—ÿŠ™¥ÿ|Œ–ÿv„Œÿ_rÿe{‰ÿi€ÿl‚’ÿtŠ™ÿxŽœÿ„™§ÿ†›¨ÿ‡›©ÿ‡›©ÿˆœªÿ‹ž¬ÿ‹Ÿ¬ÿ‡›ªÿ„™§ÿ‚—¦ÿ„˜§ÿ€•¤ÿ€•¤ÿ~”£ÿ~”£ÿ{‘ ÿ|‘ ÿ|‘ ÿ–¥ÿ”£ÿ”£ÿ„™§ÿ†š©ÿ„˜§ÿ…™¨ÿŽ¡¯ÿ‹ž­ÿŠž­ÿŽ¡¯ÿ–¨µÿŠž«ÿuŠšÿ~“¢ÿ–¥ÿ€•¤ÿzŸÿzŒ˜ÿt‚Œÿ_iq´Œ•ÿ›ÿŸ­ÿŽ¢¯ÿ£±ÿ“¥³ÿ’¥²ÿ’¦²ÿ”§´ÿ’¥³ÿ¡¯ÿ‹ž­ÿ‡œªÿ€•¤ÿzŸÿvŒœÿxŽÿvŒœÿsŠ™ÿu‹šÿt‰˜ÿwÿtŠ™ÿs‡–ÿs…“ÿyŠ—ÿx‰–ÿ{Œ˜ÿy‹—ÿs…’ÿi|ŠÿWgtÿz‹—ÿŠž¬ÿ…˜¦ÿ†˜¤ÿ‹›¥ÿ’¥²ÿ…™§ÿ| ÿ†š©ÿ‡›©ÿ…™¨ÿ€”£ÿy‹—ÿnz„Ùš¢ÿ¢¯ÿ’¥²ÿ’¥²ÿ“¦³ÿ”§´ÿ’¥³ÿŽ¡¯ÿžªÿ…—£ÿ‚”¡ÿ}ÿs‡•ÿk€ÿeyˆÿ^p}ÿSeqÿJ[iÿQbnÿ7EPÿ1;Dÿ!-6ÿ*ÿ ÿÿ ÿ ÿÿ ÿ  ÿÿ!+4ÿ>MZÿ *4ÿ&ÿ ÿVeqÿŠ«ÿ{Ÿÿ€”£ÿŒ ­ÿ¡®ÿ‹Ÿ­ÿˆœ©ÿ{‹—ÿm{†ÿ©³ÿ‘£°ÿŽ¡¯ÿ’¦³ÿ˜ª·ÿ’¥³ÿ•§´ÿ]goÿ8@Iÿ8>Gÿ;CJÿ.8Aÿ%/8ÿ&0ÿ"ÿÿÿ#ÿ&ÿ&ÿ!*ÿ&0ÿ".9ÿ3@Jÿ;HQÿHVbÿTbmÿ$,4ÿ ÿ  ÿ'ÿ*3;ÿ ÿ "ÿ !ÿ!*ÿTbmÿ„™¨ÿ~“¢ÿˆœªÿŽ¡¯ÿ¡¯ÿ“¦³ÿ‹©ÿ|Œ–ÿ¢¯·ÿŒ ­ÿ•¨µÿ„• ÿZjuÿNZcÿ$.7ÿ ÿ ÿKZfÿ/9Cÿ&-ÿ!+5ÿ.;Gÿ8DNÿBOZÿK[hÿPcqÿ_rÿhz‡ÿkŒÿvŠ˜ÿ„—¤ÿŒŸ«ÿœ®¹ÿž°¼ÿ}Š“ÿP\fÿXclÿÿ+4=ÿ&/ÿ !ÿ%ÿ ÿ$ÿqƒ‘ÿ‰¬ÿ…™§ÿ¡¯ÿ£°ÿ˜«·ÿ“¤°ÿ}Š•ÿ ®·ÿ’¥²ÿfqzÿ ÿ ÿ",ÿ ÿ ÿfu€ÿ†–¡ÿ‚•¡ÿ”¢ÿ‡š¨ÿ…™¦ÿƒ—¦ÿ„˜¦ÿ‚—¥ÿ‰«ÿ¡¯ÿ“¦³ÿ—ª¶ÿ™«·ÿ ±¼ÿ£´Àÿ¦·Âÿ¬¼Æÿ­½Çÿ·ÅÌÿQW]ÿ#ÿ/;Eÿ&ÿ#ÿ ÿÿ9DLÿŠªÿŠž¬ÿ†›©ÿ¢°ÿ’¥³ÿ ­ÿK]kÿn~ˆÿ’£¬ë‚’œÿ!)2ÿ ÿ"-ÿ'2ÿÿ$+1ÿ;?BÿŠš¥ÿœ®»ÿ—ª¶ÿ“¦³ÿ¢°ÿ¢°ÿ£°ÿ£±ÿ•¨µÿ—ª·ÿ—ª·ÿ¯ºÿ ±½ÿŸ±½ÿ¢²¾ÿ¦·Áÿ®¿Èÿ±ÁÊÿ‚Ž–ÿ ÿ&ÿ+7Aÿ )ÿ ÿ*ÿ*4=ÿ}‘žÿ£°ÿ‡œ©ÿˆœªÿ¡¯ÿ‰›¨ÿATbÿcv…ÿiyƒÿn|†ÿqut¤¯¶Ù™ÿ7?Hÿ ÿ%1ÿ*6ÿ"ÿ*18ÿu…ÿ¢´Àÿœ®ºÿ”§³ÿ“¥²ÿ¢¯ÿŒŸ­ÿŒŸ¬ÿŽ¡®ÿ¡®ÿ¢¯ÿ“¥±ÿ’¤±ÿ–§³ÿ¡­ÿ‘¡¬ÿ”¤¯ÿ’Ÿÿw…‘ÿ-9Cÿ#.7ÿ1>Hÿ*7Cÿ+ÿ)ÿ!)ÿ1?Iÿq…“ÿŽ¢°ÿ‰ªÿˆ«ÿ’ ÿ;P_ÿdzˆÿ]p~ÿ_o{ÿev€ÿu…’ÿY[\ÿkoo”£—o{†ÿ#)2ÿ(ÿ(6Aÿ7DNÿ{ˆ‘ÿˆ™¤ÿŽŸªÿ{šÿu…‘ÿo|…ÿlw€ÿly‚ÿlyÿnz‚ÿdq{ÿcpyÿXgrÿL[fÿCQ]ÿ4>Gÿ2;Cÿ-7?ÿ$.7ÿ*4ÿ%ÿ$ÿ ÿÿ ÿÿÿÿ3@Lÿ~’Ÿÿ‘¥²ÿ†›©ÿp‚ÿ6K\ÿd{Œÿ`xˆÿ_t‚ÿ[o|ÿ`p|ÿdv‚ÿKKJÿUVWÿ`ggËKU]ÿ9BJÿ+6@ÿ%.ÿ")ÿ%ÿ ÿÿÿ ÿÿ ÿÿ ÿ ÿ ÿ ÿ ÿÿÿÿÿÿ ÿÿ ÿÿ ÿ ÿÿÿ ÿ8FQÿu…’ÿs„‘ÿGXfÿ;O_ÿe}ÿe|Œÿc{‹ÿbx‡ÿ_rÿ]p{ÿ`q}ÿdtÿWVVÿIHIÿRUUÿ_ccê069ÿ ÿ*ÿ ÿÿÿÿÿÿ ÿÿÿ ÿÿ ÿ ÿ ÿ ÿ ÿÿÿ  ÿ ÿ  ÿ !ÿ $ÿ "ÿ ÿ ÿ ÿ ÿ*ÿ#1=ÿ"0<ÿ,;ÿAVfÿf~Žÿe|ÿhÿi€‘ÿf|Œÿbw…ÿ^o{ÿ[kxÿfw„ÿk{†ÿ¢ ŸÿdbbÿHHHÿQRRÿ^aaøkss…Šÿ=DJÿ'18ÿ*3;ÿ%.ÿ)ÿ$/ÿ*6ÿ .:ÿ)5ÿ*6ÿ.<ÿ"3Aÿ$5Cÿ$6Dÿ&8Eÿ&8Fÿ%7Fÿ':Iÿ"2Aÿ#4Cÿ 1Aÿ,;ÿ+:ÿ)9ÿ*9ÿ .ÿ,ÿ&ÿ&ÿ)ÿ)ÿ!0ÿ"0ÿ%4ÿMcsÿh€ÿi€‘ÿlƒ’ÿi€‘ÿj’ÿj‘ÿe{‰ÿbv…ÿ^t„ÿZmzÿ{{zíš–—ÿwtsÿHHHÿNPPÿ[^_ÿinmTals…box¿‹“ÿuƒÿXkyÿRfvÿRiyÿE\nÿ?Vhÿ9Pbÿ7N`ÿ6L^ÿ5K]ÿ.DUÿ,BSÿ-CTÿ.CUÿ/EVÿ*?Pÿ)=Oÿ$8Iÿ"5Eÿ.?ÿ*9ÿ'6ÿ-ÿ*ÿ&ÿ $ÿ "ÿ "ÿ'ÿ+ÿ!/ÿNdsÿlƒ“ÿk‚’ÿm„”ÿk‚’ÿm„”ÿn…”ÿk‚’ÿi€ÿf}ŒÿYn~ÿ^o|ÿãã。‚ÓŒŠˆÿŒŠˆÿHHHÿMMMÿZ\]ÿgll†u†“ÿbyŠÿ[s„ÿUm~ÿH`rÿE[mÿ>Ugÿ8N`ÿ4J\ÿ4J\ÿ0FWÿ+ARÿ.CTÿ/EVÿ-CTÿ)=Nÿ';Lÿ%8Iÿ"5Fÿ-=ÿ&4ÿ!/ÿ)ÿ 'ÿ ÿ !ÿ "ÿ ÿ "ÿ #ÿ $ÿMbrÿkƒ’ÿm„“ÿlƒ’ÿlƒ“ÿk‚’ÿn…•ÿm„”ÿj’ÿf~ŽÿZp€ÿ\n{ÿ‰‹Š®‚‚€ÿœ›™ÿIHHÿLLMÿWZ[ÿekjªl|‡ÿ_v…ÿTl}ÿOgyÿF^pÿBYkÿ=Tfÿ8Oaÿ4K\ÿ3J[ÿ.CUÿ,ASÿ/DUÿ/EVÿ)=Nÿ%9Jÿ%8Iÿ%8Iÿ$7Hÿ1Bÿ&6ÿ -ÿ'ÿ !ÿ !ÿ ÿ ÿ ÿ  ÿ ÿ !ÿTjzÿkƒ’ÿlƒ“ÿn…•ÿo†•ÿlƒ“ÿn…•ÿlƒ“ÿhÿd{‹ÿ]r‚ÿYkyÿ‘”“ƒ}{{ÿ©¦¦ÿPNNÿKKJÿVXYÿcghÈl{ˆÿ[s€ÿJbtÿKbtÿAXjÿÿ,<ÿ"/ÿ)ÿ $ÿ &ÿ ÿ  ÿ "ÿ  ÿ ÿ "ÿ^u„ÿn…•ÿm„”ÿo†–ÿp‡—ÿn…”ÿp‡—ÿm„”ÿhÿf}Žÿ^t„ÿWjxÿ›ŸW{{{ÿ¯­­ÿ[ZYÿIIIÿUVWÿbggénvu l{‡ÿYm|ÿOewÿQi{ÿJbsÿG^pÿF^oÿC[mÿ;Rdÿ9Oaÿ6M^ÿ4J\ÿ5L^ÿ/EVÿ(=Nÿ&:Kÿ%:Kÿ';Lÿ#7Hÿ 3Cÿ0@ÿ(6ÿ%4ÿ -ÿ -ÿ -ÿ,ÿ!/ÿ+ÿ!.9ÿ?N\ÿp‡–ÿr‰˜ÿp‡—ÿn…•ÿp‡—ÿp‡—ÿq‡—ÿo†–ÿj‘ÿg~Žÿ]sƒÿj|ˆÿ©­«+xyxþ¯­­ÿljiÿHHHÿSTUÿbfgÿlrq)o{†ÿ\o|ÿ`v†ÿ`wˆÿXp€ÿNfwÿLctÿE\mÿ>Ufÿ=Seÿ:Pbÿ4J\ÿ3J\ÿ/DVÿ*?Pÿ';Kÿ%9Iÿ(ÿ0@ÿ#4Cÿ4HWÿ`u…ÿv‹šÿvŒœÿt‹šÿr‰™ÿqˆ˜ÿqˆ—ÿo†–ÿm„”ÿm„”ÿk‚’ÿg~ÿ^t„ÿs‚ÿÁÐÉ ~€}訧¦ÿ|yxÿHHHÿQRRÿ^bbÿjnqMXgrÿCUdÿAUfÿ?Teÿ>Teÿ:O`ÿ>TdÿDYjÿLbsÿLbrÿQfwÿWm}ÿ^u…ÿ\r‚ÿWm~ÿXo~ÿWm}ÿZp€ÿUk|ÿNeuÿI`qÿ@Ugÿ?Ugÿ?Vgÿ6K]ÿ7K\ÿ4HWÿd{Šÿrˆ˜ÿwÿxŽÿt‹šÿsŠ™ÿt‹šÿuŒ›ÿrˆ˜ÿlƒ“ÿj‘ÿmƒ“ÿj‘ÿg~ÿ_u‚ÿguÿ‡‰ŠÑ›ššÿŽŒŠÿIHIÿPPPÿ\^_ÿgkkx†‘™ÿt„Žÿn~‡ÿiz‡ÿl}‹ÿqƒ‘ÿzŒ™ÿ’Ÿÿˆ™¦ÿŒž«ÿ¡­ÿ¡­ÿ¢®ÿ¡­ÿŽŸªÿ‹›§ÿˆ™¥ÿ‰š¥ÿ‰š¦ÿŠœ¨ÿ†™¥ÿ†™¦ÿ…˜¥ÿ€”¡ÿxŒšÿm‚’ÿUm}ÿe{‹ÿu‹šÿzŸÿyŸÿxŽÿxÿu‹šÿt‹šÿtŠšÿwÿt‹šÿlƒ“ÿj‘ÿl‚’ÿj‚‘ÿd|Œÿ\qÿdr{ÿ”•”¶Š‰‰ÿ£ žÿMMMÿMMMÿXZ\ÿu|€ÿ‰–ŸÿyƒŠÿm{„ÿ]isÿY`fÿ^diÿ^dhÿ]dhÿV]bÿQY`ÿJSYÿDOVÿ=GNÿ7>Dÿ4:@ÿ29Cÿ4;Dÿ5Dÿª»ÇÿªºÅÿ¨¸Ãÿ¤µÀÿŸ²½ÿœ¯»ÿš¬¸ÿ˜«·ÿ•©µÿ—©¶ÿ’¥³ÿ¢°ÿŒ ®ÿŠž¬ÿˆœ«ÿ‡œªÿ†š©ÿ~‘Ÿÿm€ÿ).4ÿÿ ÿ ÿ ÿÿm8ÿ‚ ÿÿ ÿ t.ÿ,ˆ8ÿŠÃ™ÿ…Žÿ…¹–ÿ…¿ÿ‡¶ÿ†Œÿ‚†‰ÿ…¿ÿ…ˆÿ…¿ÿ‡¶ÿ†‹ŽÿRVYÿÿ ÿ ÿ ÿ ÿ?DIÿ§¸ÃÿªºÄÿ©¹Äÿ¦·Áÿ¡²¾ÿž°¼ÿ˜ª·ÿ˜«·ÿ–ª¶ÿ–¨µÿ’¥²ÿŽ¢¯ÿ‹Ÿ­ÿŠž¬ÿЬÿŠž«ÿ…™¨ÿ’ ÿoŽÿ).4ÿ ÿ ÿ ÿ ÿÿ !ÿÿÿ !ÿ !ÿˆ&ÿ*ÿYadÿˆ‘’ÿ€„‡ÿ…ˆÿ„‹ÿ‚†Šÿ…ˆÿ€ƒ†ÿ„†‹ÿnosÿÿ ÿÿÿ ÿÿ ÿCILÿ¥·Âÿ«¼ÅÿªºÄÿ¦¶Áÿ¢³¾ÿŸ±¼ÿœ®ºÿ™«·ÿ”§´ÿ•§´ÿ‘¤±ÿ¢¯ÿŠŸ­ÿ‹ ­ÿŠž¬ÿˆœ«ÿ€•£ÿ}‘Ÿÿqƒÿ'+0ÿ ÿ ÿ ÿ ÿÿ ÿ t.ÿ ÿ†1ÿ ÿ t.ÿ ÿ ÿ#ÿ %ÿB‚JÿZ^`ÿ`Žgÿ>CJÿ!(ÿ ÿÿ ÿ ÿ ÿ ÿ ÿ ÿÿXciÿ¨ºÅÿ­½ÇÿªºÅÿ¨¹Ãÿ£´¿ÿž°»ÿŸ±½ÿ™«·ÿ’¥³ÿ”§´ÿ“¦³ÿ¢°ÿ ®ÿŒ ®ÿŠž¬ÿ…š©ÿ–¤ÿ{ŽžÿnŽÿ'+0ÿ ÿ ÿ ÿ ÿÿ !ÿ !ÿˆ&ÿ 'ÿ !ÿ !ÿ ÿ ÿ ÿÿ ÿ ÿ ÿÿ ÿ ÿÿÿ ÿÿ ÿ ÿ ÿ ÿju}ÿ¨¹Äÿ®¾ÈÿªºÄÿ¨¹Äÿ¤µÁÿŸ²½ÿž°¼ÿ™¬¸ÿ“¦³ÿ•§´ÿ“¦³ÿ‘¤²ÿ£°ÿŽ¢¯ÿŒŸ®ÿ‰¬ÿ†š¨ÿ|žÿkŒér‰˜)17ÿ ÿ ÿ ÿ ÿÿÿ ÿ ÿ ÿ  ÿ  ÿÿÿÿÿÿÿ ÿÿ ÿ ÿÿÿÿÿ ÿ ÿÿÿu†ÿ¤µÁÿ®¾ÈÿªºÄÿ¨¹Äÿ¤µÀÿ¡³¾ÿ®ºÿ™¬¸ÿ“¦³ÿ”¦³ÿ“¥²ÿ“¦³ÿ‘¤±ÿ ®ÿŠž­ÿˆœªÿ…™¨ÿ~‘¡ÿsˆ—çd|+4<ÿ ÿ ÿ ÿ ÿÿ !ÿ !ÿ !ÿ 'ÿ !ÿ !ÿ ÿ ÿ ÿÿ ÿ ÿ ÿÿ ÿ ÿÿÿ ÿÿ ÿ ÿÿ ÿx…Žÿ£µÀÿ­½ÇÿªºÄÿ¨¸Ãÿ£´Àÿ ±½ÿ¯»ÿš¬¸ÿ”§´ÿ“¦³ÿ”§´ÿ”§´ÿ‘¤²ÿ¢°ÿˆ«ÿ†›©ÿƒ˜¦ÿ~”£ÿs‰™æd|6@Gÿ ÿ ÿ ÿ ÿÿÿ ÿ ÿ ÿ  ÿ  ÿÿÿÿÿÿÿ ÿÿ ÿ ÿÿÿÿÿ ÿ ÿ ÿ&ÿ‰™£ÿ¥¶Áÿ­½ÈÿªºÅÿ§¸Ãÿ¤µÀÿ¡²¾ÿ¯»ÿ™«·ÿ”§´ÿ”§´ÿ“¦³ÿ•¨µÿ”§´ÿ’¥²ÿŒ ®ÿˆœªÿƒ—¦ÿ”£ÿvŠšçZm{FMÿ/6;ÿ/6;ÿ-4:ÿ'/7ÿ!)1ÿ#*ÿ )ÿ)ÿ 'ÿ$(ÿ$ÿ#ÿ (ÿ!*ÿ'ÿ )ÿ$,ÿ!)3ÿ$,4ÿ)07ÿ.6=ÿ;IUÿMXaÿXclÿˆ–¡ÿ­¹ÿ©¹Ãÿ§·Áÿ¦µÀÿ¥´¿ÿ£³¾ÿž¯»ÿ®¹ÿ™«¸ÿ™«·ÿ—ª¶ÿš¬·ÿ–§´ÿ¡­ÿƒ”¡ÿŸ¨ÿsƒŽÿ{ƒˆÓv€‡ÿdmsÿw€†ÿw€†ÿ~„ˆÿox~ÿkv~ÿ`mvÿR\eÿt}„ÿv}‚ÿtz~ÿsx|ÿvzÿt{€ÿx€…ÿu~„ÿryÿr{ÿz…ÿ…‘™ÿ‘œ£ÿš£ªÿŸ¨°ÿ¡¬´ÿ¦²ºÿ§´»ÿ¦³¼ÿ§³¼ÿ§´¼ÿ©µ¾ÿª¶¿ÿ§´¼ÿ«·¿ÿš¨³ÿ—¦±ÿ™©³ÿž­·ÿ¤±ºÿž©±Ç“¥Öÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿñÿÿÿÿÿÿàÿÿÿÿð?ÿÿàÿÿÀÿÿÀÿÿÀÿÿàÿðÿøÿü?ÿþÿÿ?€ÿðøøüÿ€À€à?€ð€ø€ü€ÿÿ€ÿÀÿàÿàÿàÿàÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿàÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿsuite3270-4.1/wc3270/catf.rc000066400000000000000000000000401413735575200152210ustar00rootroot00000000000000LANGUAGE 0, 0 100 ICON catf.ico suite3270-4.1/wc3270/conf.h000066400000000000000000000001221413735575200150550ustar00rootroot00000000000000/* Hard-coded conf.h for wc3270 */ #define LIBX3270DIR "." #define X3270_IPV6 1 suite3270-4.1/wc3270/ft.inc000077700000000000000000000000001413735575200176322../Common/ft.incustar00rootroot00000000000000suite3270-4.1/wc3270/html.m4000077700000000000000000000000001413735575200200362../Common/html.m4ustar00rootroot00000000000000suite3270-4.1/wc3270/html/000077500000000000000000000000001413735575200147305ustar00rootroot00000000000000suite3270-4.1/wc3270/html/.gitignore000066400000000000000000000001101413735575200167100ustar00rootroot00000000000000*-man.html ReleaseNotes.html Resources.html SSL.html wc3270-script.html suite3270-4.1/wc3270/keymap.c000066400000000000000000000737311413735575200154310ustar00rootroot00000000000000/* * Copyright (c) 2000-2009, 2013-2015, 2019-2021 Paul Mattes. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of Paul Mattes nor his contributors may be used * to endorse or promote products derived from this software without * specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. */ /* * keymap.c * A Windows Console-based 3270 Terminal Emulator * Keyboard mapping */ #include "globals.h" #include #include "appres.h" #include "resources.h" #include "actions.h" #include "glue.h" #include "host.h" #include "keymap.h" #include "lazya.h" #include "names.h" #include "popups.h" #include "screen.h" #include "task.h" #include "trace.h" #include "utils.h" #include "varbuf.h" #include "vstatus.h" #define ISREALLYSPACE(c) ((((c) & 0xff) <= ' ') && isspace(c)) #define WC3270KM_SUFFIX "wc3270km" #define SUFFIX_LEN sizeof(WC3270KM_SUFFIX) #define KM_3270_ONLY 0x0100 /* used in 3270 mode only */ #define KM_NVT_ONLY 0x0200 /* used in NVT mode only */ #define KM_INACTIVE 0x0400 /* wrong NVT/3270 mode, or overridden */ #define KM_KEYMAP 0x8000 #define KM_HINTS (KM_SHIFT | KM_CTRL | KM_ALT | KM_ENHANCED) struct keymap { struct keymap *next; /* next element in the keymap */ struct keymap *successor; /* mapping that overrules this one */ int ncodes; /* number of key codes */ int *codes; /* key codes (ASCII or vkey symbols) */ int *hints; /* hints (modifiers and restrictions) */ char *name; /* keymap name */ char *file; /* file path or resource name */ int line; /* keymap line number */ bool temp; char *action; /* action(s) to perform */ }; #define IS_INACTIVE(k) ((k)->hints[0] & KM_INACTIVE) static struct keymap *master_keymap = NULL; static bool last_3270 = false; static bool last_nvt = false; static int lookup_ccode(const char *s); static void keymap_3270_mode(bool); static void read_one_keymap(const char *name, const char *fn, bool temp, const char *r0, int flags); static void clear_keymap(void); static void set_inactive(void); /* * Parse a key definition. * Returns <0 for error, 1 for key found and parsed, 0 for nothing found. * Returns the balance of the string and the character code. * Is destructive. */ enum { PKE_MKEY = -1, PKE_UMOD = -2, PKE_MSYM = -3, PKE_USYM = -4 } pk_error; static char *pk_errmsg[] = { "Missing ", "Unknown modifier", "Missing key", "Unknown key" }; static int parse_keydef(char **str, int *ccode, int *hint) { char *s = *str; char *t; char *ks; int flags = 0; ks_t Ks; int xccode; /* Check for nothing. */ while (ISREALLYSPACE(*s)) { s++; } if (!*s) { return 0; } *str = s; s = strstr(s, ""); if (s == NULL) { return PKE_MKEY; } ks = s + 5; *s = '\0'; s = *str; while (*s) { while (ISREALLYSPACE(*s)) { s++; } if (!*s) { break; } if (!strncasecmp(s, "Shift", 5)) { flags |= KM_SHIFT; s += 5; } else if (!strncasecmp(s, "Ctrl", 4)) { flags |= KM_CTRL; s += 4; } else if (!strncasecmp(s, "LeftCtrl", 8)) { flags |= KM_LCTRL; s += 8; } else if (!strncasecmp(s, "RightCtrl", 9)) { flags |= KM_RCTRL; s += 9; } else if (!strncasecmp(s, "Alt", 3)) { flags |= KM_ALT; s += 3; } else if (!strncasecmp(s, "LeftAlt", 7)) { flags |= KM_LALT; s += 7; } else if (!strncasecmp(s, "RightAlt", 8)) { flags |= KM_RALT; s += 8; } else if (!strncasecmp(s, "Enhanced", 8)) { flags |= KM_ENHANCED; s += 8; } else { return PKE_UMOD; } } s = ks; while (ISREALLYSPACE(*s)) { s++; } if (!*s) { return PKE_MSYM; } t = s; while (*t && !ISREALLYSPACE(*t)) { t++; } if (*t) { *t++ = '\0'; } xccode = lookup_ccode(s); if (xccode != -1) { *ccode = xccode; } else { if (!strncasecmp(s, "U+", 2) || !strncasecmp(s, "0x", 2)) { unsigned long l; char *ptr; /* * Explicit Unicode. * We limit ourselves to UCS-2 for now, becuase of how * we represent keymaps and keys (VK_xxx in upper 16 * bits, Unicode in lower 16 bits). */ l = strtoul(s, &ptr, 16); if (!((l == 0) || (l & ~0xffff) || *ptr != '\0')) { *ccode = (int)l; } else { return PKE_USYM; } } else if (strlen(s) == 1) { int nc; WCHAR w; /* Single (ANSI CP) character. */ nc = MultiByteToWideChar(CP_ACP, 0, s, 1, &w, 1); if (nc == 1) { *ccode = (int)w; } else { return PKE_USYM; } } else { /* Try for a Latin-1 name. */ Ks = string_to_key(s); if (Ks != KS_NONE) { *ccode = (int)Ks; } else { return PKE_USYM; } } } /* Canonicalize Ctrl. */ if ((flags & KM_CTRL) && *ccode >= '@' && *ccode <= '~') { *ccode &= 0x1f; flags &= ~KM_CTRL; } /* Return the remaining string, and success. */ *str = t; *hint = flags; return 1; } /* * Locate a keymap resource or file. * Returns 0 for do-nothing, 1 for success, -1 for error. * On success, returns the full name of the resource or file (which must be * freed) in '*fullname'. * On success, returns a resource string (which must be closed) or NULL * (indicating a file name to open is in *fullname) in '*r'. */ static int locate_keymap(const char *name, char **fullname, char **r) { char *rs; /* resource value */ char *fnx; /* expanded file name */ char *fny; char *fnp; int a; /* Return nothing, to begin with. */ *fullname = NULL; *r = NULL; /* See if it's a resource. */ rs = get_fresource(ResKeymap ".%s", name); /* If there's a plain version, return it. */ if (rs != NULL) { *fullname = NewString(name); *r = NewString(rs); return 1; } /* See if it's a file. */ fnx = do_subst(name, DS_VARS | DS_TILDE); fny = xs_buffer("%s.%s", fnx, WC3270KM_SUFFIX); /* My Documents\wc3270\foo.wc3270km? */ if (mydocs3270 != NULL) { fnp = xs_buffer("%s%s", mydocs3270, fny); a = access(fnp, R_OK); if (a == 0) { *fullname = fnp; Free(fny); Free(fnx); return 1; } Free(fnp); } /* Public Documents\wc3270\foo.wc3270km? */ if (commondocs3270 != NULL) { fnp = xs_buffer("%s%s", commondocs3270, fny); a = access(fnp, R_OK); if (a == 0) { *fullname = fnp; Free(fny); Free(fnx); return 1; } Free(fnp); } /* InstDir\foo.wc3270km? */ fnp = xs_buffer("%s%s", instdir, fny); a = access(fnp, R_OK); if (a == 0) { Free(fny); Free(fnx); *fullname = fnp; return 1; } Free(fnp); /* foo.wc3270km? */ a = access(fny, R_OK); if (a == 0) { Free(fnx); *fullname = fny; return 1; } Free(fny); /* foo? */ a = access(fnx, R_OK); if (a == 0) { *fullname = fnx; return 1; } Free(fnx); /* No dice. */ return -1; } /* * Compare a pair of keymaps for compatiblity (could k2 match k1). * N.B.: This functon may need to be further parameterized for equality versus * (ambiguous) matching. */ static int codecmp(struct keymap *k1, struct keymap *k2, int len) { int r; int i; /* Compare the raw codes first. */ r = memcmp(k1->codes, k2->codes, len * sizeof(int)); if (r) { return r; } /* The codes agree, now try the modifiers. */ for (i = 0; i < len; i++) { if ((k1->hints[i] & KM_HINTS) != (k2->hints[i] & KM_HINTS)) { return -1; } } /* Same same. */ return 0; } /* Add a keymap entry. */ static void add_keymap_entry(int ncodes, int *codes, int *hints, const char *name, const char *file, int line, bool temp, const char *action, struct keymap ***nextkp) { struct keymap *k; /* Allocate a new node. */ k = Malloc(sizeof(struct keymap)); k->next = NULL; k->successor = NULL; k->ncodes = ncodes; k->codes = Malloc(ncodes * sizeof(int)); memcpy(k->codes, codes, ncodes * sizeof(int)); k->hints = Malloc(ncodes * sizeof(int)); memcpy(k->hints, hints, ncodes * sizeof(int)); k->name = NewString(name); k->file = NewString(file); k->line = line; k->temp = temp; k->action = NewString(action); /* Link it in. */ **nextkp = k; *nextkp = &k->next; } /* * Read a keymap from a file. * Returns true for success, false for an error. * * Keymap files look suspiciously like x3270 keymaps, but aren't. */ static bool read_keymap(const char *name, bool temp) { char *name_3270 = xs_buffer("%s.3270", name); char *name_nvt = xs_buffer("%s.nvt", name); int rc, rc_3270, rc_nvt; char *fn, *fn_3270, *fn_nvt; char *r0, *r0_3270, *r0_nvt; if (master_keymap != NULL && !strcmp(name, master_keymap->name)) { popup_an_error("Duplicate keymap: %s", name); return false; } rc = locate_keymap(name, &fn, &r0); rc_3270 = locate_keymap(name_3270, &fn_3270, &r0_3270); rc_nvt = locate_keymap(name_nvt, &fn_nvt, &r0_nvt); if (rc < 0 && rc_3270 < 0 && rc_nvt < 0) { popup_an_error("No such keymap resource or file: %s", name); Free(name_3270); Free(name_nvt); return false; } if (rc >= 0) { read_one_keymap(name, fn, temp, r0, 0); Free(fn); Free(r0); } if (rc_3270 >= 0) { read_one_keymap(name_3270, fn_3270, temp, r0_3270, KM_3270_ONLY); Free(fn_3270); Free(r0_3270); } if (rc_nvt >= 0) { read_one_keymap(name_nvt, fn_nvt, temp, r0_nvt, KM_NVT_ONLY); Free(fn_nvt); Free(r0_nvt); } Free(name_3270); Free(name_nvt); return true; } /* * Read a keymap from a file. * Accumulates the keymap onto the list pointed to by nextkp. * Returns 0 for success, -1 for an error. * * Keymap files look suspiciously like x3270 keymaps, but aren't. */ static void read_one_keymap_internal(const char *name, const char *fn, bool temp, const char *r0, int flags, struct keymap ***nextkp) { char *r = NULL; /* resource value */ char *r_copy = NULL; /* initial value of r */ FILE *f = NULL; /* resource file */ char buf[1024]; /* file read buffer */ int line = 0; /* line number */ char *left, *right; /* chunks of line */ static int ncodes = 0; static int maxcodes = 0; static int *codes = NULL, *hints = NULL; int rc = 0; char *xfn = NULL; char *action_error; /* Find the resource or file. */ if (r0 != NULL) { r = r_copy = NewString(r0); xfn = (char *)fn; } else { size_t sl; f = fopen(fn, "r"); if (f == NULL) { popup_an_error("File '%s' exists but cannot open: %s", fn, strerror(errno)); return; } sl = strlen(fn); if (sl > SUFFIX_LEN && !strcmp(fn + sl - SUFFIX_LEN, "." WC3270KM_SUFFIX)) { xfn = NewString(fn); xfn[sl - SUFFIX_LEN] = '\0'; } else { xfn = (char *)fn; } } while ((r != NULL)? (rc = split_dresource(&r, &left, &right)): fgets(buf, sizeof(buf), f) != NULL) { char *s; int ccode; int pkr; int hint; line++; /* Skip empty lines and comments. */ if (r == NULL) { s = buf; while (ISREALLYSPACE(*s)) { s++; } if (!*s || *s == '!' || *s == '#') { continue; } } /* Split. */ if (rc < 0 || (r == NULL && split_dresource(&s, &left, &right) < 0)) { popup_an_error("Keymap %s, line %d: syntax error", name, line); goto done; } if (!validate_command(right, (int)(right - left), &action_error)) { popup_an_error("Keymap %s, line %d: error:\n%s", fn, line, action_error); Free(action_error); goto done; } pkr = parse_keydef(&left, &ccode, &hint); if (pkr == 0) { popup_an_error("Keymap %s, line %d: Missing ", name, line); goto done; } if (pkr < 0) { popup_an_error("Keymap %s, line %d: %s", name, line, pk_errmsg[-1 - pkr]); goto done; } /* Accumulate keycodes. */ ncodes = 0; do { if (++ncodes > maxcodes) { maxcodes = ncodes; codes = Realloc(codes, maxcodes * sizeof(int)); hints = Realloc(hints, maxcodes * sizeof(int)); } codes[ncodes - 1] = ccode; hints[ncodes - 1] = hint; pkr = parse_keydef(&left, &ccode, &hint); if (pkr < 0) { popup_an_error("Keymap %s, line %d: %s", name, line, pk_errmsg[-1 - pkr]); goto done; } } while (pkr != 0); /* Add it to the list. */ hints[0] |= flags; add_keymap_entry(ncodes, codes, hints, name, name, line, temp, right, nextkp); } done: Free(r_copy); if (f != NULL) { fclose(f); } if (xfn != fn) { Free(xfn); } } /* * Read a keymap from a file. * Adds the keymap to the front of the 'master_keymap' list. * Returns 0 for success, -1 for an error. */ static void read_one_keymap(const char *name, const char *fn, bool temp, const char *r0, int flags) { struct keymap *one_master; struct keymap **one_nextk; /* Read in the keymap. */ one_master = NULL; one_nextk = &one_master; read_one_keymap_internal(name, fn, temp, r0, flags, &one_nextk); if (one_master == NULL) { /* Nothing added. */ return; } if (master_keymap == NULL) { /* Something added, nothing there before. */ master_keymap = one_master; return; } /* Insert this keymap ahead of the previous ones. */ *one_nextk = master_keymap; master_keymap = one_master; } /* Multi-key keymap support. */ static struct keymap *current_match = NULL; static int consumed = 0; static char *ignore = "[ignore]"; /* Find the shortest keymap with a longer match than k. */ static struct keymap * longer_match(struct keymap *k, int nc) { struct keymap *j; struct keymap *shortest = NULL; for (j = master_keymap; j != NULL; j = j->next) { if (IS_INACTIVE(j)) { continue; } if (j != k && j->ncodes > nc && !codecmp(j, k, nc)) { if (j->ncodes == nc+1) { return j; } if (shortest == NULL || j->ncodes < shortest->ncodes) { shortest = j; } } } return shortest; } /* * Helper function that returns a keymap action, sets the status line, and * traces the result. * * If s is NULL, then this is a failed initial lookup. * If s is 'ignore', then this is a lookup in progress (k non-NULL) or a * failed multi-key lookup (k NULL). * Otherwise, this is a successful lookup. */ static char * status_ret(char *s, struct keymap *k) { /* Set the compose indicator based on the new value of current_match. */ if (k != NULL) { vstatus_compose(true, ' ', KT_STD); } else { vstatus_compose(false, 0, KT_STD); } if (s != NULL && s != ignore) { vtrace(" %s:%d -> %s\n", current_match->file, current_match->line, s); } if ((current_match = k) == NULL) { consumed = 0; } return s; } /* Timeout for ambiguous keymaps. */ static struct keymap *timeout_match = NULL; static ioid_t kto = NULL_IOID; static void key_timeout(ioid_t id _is_unused) { vtrace("Timeout, using shortest keymap match\n"); kto = NULL_IOID; current_match = timeout_match; push_keymap_action(status_ret(timeout_match->action, NULL)); timeout_match = NULL; } static struct keymap * ambiguous(struct keymap *k, int nc) { struct keymap *j; if ((j = longer_match(k, nc)) != NULL) { vtrace(" ambiguous keymap match, shortest is %s:%d, setting timeout\n", j->file, j->line); timeout_match = k; kto = AddTimeOut(500L, key_timeout); } return j; } /* * Check for compatability between a keymap and a key's modifier state. * Returns 1 for success, 0 for failure. */ static int compatible_hint(int hint, int state) { int h = hint & KM_HINTS; int s = state & KM_HINTS; if (!h) { return 1; } /* * This used to be fairly straightforward, but it got murky when * we split the left and right ctrl and alt keys. * * Basically, what we want is if both left and right Alt or Ctrl * are set in 'hint', then either left or right Alt or Ctrl set in * 'state' would be a match. If only left or right is set in 'hint', * then the match in 'state' has to be exact. * * We do this by checking for both being set in 'hint' and either * being set in 'state'. If this is the case, we set both in 'state' * and try for an exact match. */ if ((h & KM_CTRL) == KM_CTRL) { if (s & KM_CTRL) { s |= KM_CTRL; } } if ((h & KM_ALT) == KM_ALT) { if (s & KM_ALT) { s |= KM_ALT; } } return (h & s) == h; } /* * Look up an key in the keymap, return the matching action if there is one. * * This code implements the mutli-key lookup, by returning dummy actions for * partial matches. */ char * lookup_key(unsigned long code, unsigned long state) { struct keymap *j, *k; int n_shortest = 0; int state_match = 0; vtrace("lookup_key(0x%08lx, 0x%lx)\n", code, state); /* If there's a timeout pending, cancel it. */ if (kto != NULL_IOID) { RemoveTimeOut(kto); kto = NULL_IOID; timeout_match = NULL; } /* Translate the Windows state to KM flags. */ if (state & SHIFT_PRESSED) { state_match |= KM_SHIFT; } if (state & LEFT_ALT_PRESSED) { state_match |= KM_LALT; } if (state & RIGHT_ALT_PRESSED) { state_match |= KM_RALT; } if (state & LEFT_CTRL_PRESSED) { state_match |= KM_LCTRL; } if (state & RIGHT_CTRL_PRESSED) { state_match |= KM_RCTRL; } if (state & ENHANCED_KEY) { state_match |= KM_ENHANCED; } /* If there's no match pending, find the shortest one. */ if (current_match == NULL) { struct keymap *shortest = NULL; for (k = master_keymap; k != NULL; k = k->next) { if (IS_INACTIVE(k)) { continue; } if (code == k->codes[0] && compatible_hint(k->hints[0], state_match)) { if (k->ncodes == 1) { shortest = k; break; } if (shortest == NULL || k->ncodes < shortest->ncodes) { shortest = k; n_shortest++; } } } if (shortest != NULL) { current_match = shortest; consumed = 0; } else { return NULL; } } /* See if this character matches the next one we want. */ if (code == current_match->codes[consumed] && compatible_hint(current_match->hints[consumed], state_match)) { consumed++; if (consumed == current_match->ncodes) { /* Final match. */ j = ambiguous(current_match, consumed); if (j == NULL) { return status_ret(current_match->action, NULL); } else { return status_ret(ignore, j); } } else { /* Keep looking. */ vtrace(" partial keymap match in %s:%d %s\n", current_match->file, current_match->line, (n_shortest > 1)? " and other(s)": ""); return status_ret(ignore, current_match); } } /* It doesn't. Try for a better candidate. */ for (k = master_keymap; k != NULL; k = k->next) { if (IS_INACTIVE(k)) continue; if (k == current_match) continue; if (k->ncodes > consumed && !codecmp(k, current_match, consumed) && k->codes[consumed] == code && compatible_hint(k->hints[consumed], state_match)) { consumed++; if (k->ncodes == consumed) { j = ambiguous(k, consumed); if (j == NULL) { current_match = k; return status_ret(k->action, NULL); } else { return status_ret(ignore, j); } } else { return status_ret(ignore, k); } } } /* Complain. */ Beep(750, 150); vtrace(" keymap lookup failure after partial match\n"); return status_ret(ignore, NULL); } static struct { const char *name; unsigned long code; } vk_key[] = { { "SHIFT", VK_SHIFT << 16 }, { "CTRL", VK_CONTROL << 16 }, { "ALT", 0x12 << 16 }, { "CAPSLOCK", 0x14 << 16 }, { "BACK", VK_BACK << 16 }, { "RETURN", VK_RETURN << 16 }, { "TAB", VK_TAB << 16 }, { "ESCAPE", VK_ESCAPE << 16 }, { "CLEAR", VK_CLEAR << 16 }, { "PAUSE", VK_PAUSE << 16 }, { "PRIOR", VK_PRIOR << 16 }, { "NEXT", VK_NEXT << 16 }, { "END", VK_END << 16 }, { "HOME", VK_HOME << 16 }, { "LEFT", VK_LEFT << 16 }, { "UP", VK_UP << 16 }, { "RIGHT", VK_RIGHT << 16 }, { "DOWN", VK_DOWN << 16 }, { "SELECT", VK_SELECT << 16 }, { "PRINT", VK_PRINT << 16 }, { "EXECUTE", VK_EXECUTE << 16 }, { "SNAPSHOT", VK_SNAPSHOT << 16 }, { "INSERT", VK_INSERT << 16 }, { "DELETE", VK_DELETE << 16 }, { "HELP", VK_HELP << 16 }, { "LWIN", VK_LWIN << 16 }, { "RWIN", VK_RWIN << 16 }, { "APPS", VK_APPS << 16 }, { "SLEEP", VK_SLEEP << 16 }, { "NUMPAD0", VK_NUMPAD0 << 16 }, { "NUMPAD1", VK_NUMPAD1 << 16 }, { "NUMPAD2", VK_NUMPAD2 << 16 }, { "NUMPAD3", VK_NUMPAD3 << 16 }, { "NUMPAD4", VK_NUMPAD4 << 16 }, { "NUMPAD5", VK_NUMPAD5 << 16 }, { "NUMPAD6", VK_NUMPAD6 << 16 }, { "NUMPAD7", VK_NUMPAD7 << 16 }, { "NUMPAD8", VK_NUMPAD8 << 16 }, { "NUMPAD9", VK_NUMPAD9 << 16 }, { "MULTIPLY", VK_MULTIPLY << 16 }, { "ADD", VK_ADD << 16 }, { "SEPARATOR", VK_SEPARATOR << 16 }, { "SUBTRACT", VK_SUBTRACT << 16 }, { "DECIMAL", VK_DECIMAL << 16 }, { "DIVIDE", VK_DIVIDE << 16 }, { "F1", VK_F1 << 16 }, { "F2", VK_F2 << 16 }, { "F3", VK_F3 << 16 }, { "F4", VK_F4 << 16 }, { "F5", VK_F5 << 16 }, { "F6", VK_F6 << 16 }, { "F7", VK_F7 << 16 }, { "F8", VK_F8 << 16 }, { "F9", VK_F9 << 16 }, { "F10", VK_F10 << 16 }, { "F11", VK_F11 << 16 }, { "F12", VK_F12 << 16 }, { "F13", VK_F13 << 16 }, { "F14", VK_F14 << 16 }, { "F15", VK_F15 << 16 }, { "F16", VK_F16 << 16 }, { "F17", VK_F17 << 16 }, { "F18", VK_F18 << 16 }, { "F19", VK_F19 << 16 }, { "F20", VK_F20 << 16 }, { "F21", VK_F21 << 16 }, { "F22", VK_F22 << 16 }, { "F23", VK_F23 << 16 }, { "F24", VK_F24 << 16 }, { "NUMLOCK", VK_NUMLOCK << 16 }, { "SCROLL", VK_SCROLL << 16 }, { "LMENU", VK_LMENU << 16 }, { "RMENU", VK_RMENU << 16 }, /* Some handy aliases */ { "BackSpace", VK_BACK << 16 }, { "Enter", VK_RETURN << 16 }, { "PageUp", VK_PRIOR << 16 }, { "PageDown", VK_NEXT << 16 }, { "Esc", VK_ESCAPE << 16 }, { NULL, 0 } }; /* Look up a symbolic vkey name and return its code. */ static int lookup_ccode(const char *s) { int i; /* Look it up in the table. */ for (i = 0; vk_key[i].name != NULL; i++) { if (!strcasecmp(s, vk_key[i].name)) { return vk_key[i].code; } } /* Check for a numeric encoding: VKEY-nnn or VKEY-0xnnn. */ if (!strncasecmp(s, "VKEY-", 5)) { const char *t; int base; unsigned long u; char *ptr; if (!strncasecmp(s + 5, "0x", 2)) { t = s + 7; base = 16; } else { t = s + 5; base = 10; } u = strtoul(t, &ptr, base); if (ptr != t && *ptr == '\0' && u > 0 && u <= 0xfe) { return (int)(u << 16); } } return -1; } /* Look up a vkey code and return its name. */ const char * lookup_cname(unsigned long ccode) { int i; for (i = 0; vk_key[i].name != NULL; i++) { if (ccode == vk_key[i].code) { return vk_key[i].name; } } if (ccode >= (' ' << 16) && ccode <= ('~' << 16)) { static char cbuf[2]; cbuf[0] = (char)(ccode >> 16); cbuf[1] = '\0'; return cbuf; } if (ccode >= (1 << 16) && ccode <= (0xfe << 16)) { return lazyaf("VKEY-0x%02x", ccode >> 16); } return NULL; } /** * Free a temporary keymap entry. */ static void free_keymap(struct keymap *k) { Free(k->codes); Free(k->hints); Free(k->name); Free(k->file); Free(k->action); Free(k); } /** * Push or pop a temporary keymap. */ static bool Keymap_action(ia_t ia, unsigned argc, const char **argv) { action_debug(AnKeymap, ia, argc, argv); if (check_argc(AnKeymap, argc, 0, 1) < 0) { return false; } if (argc > 0) { /* Push this keymap. */ if (!read_keymap(argv[0], true)) { return false; } /* Set the inactive flags. */ set_inactive(); } else { struct keymap *k; char *km_name = NULL; if (master_keymap == NULL || !master_keymap->temp) { return true; } km_name = NewString(master_keymap->name); /* Pop the top keymap. */ while ((k = master_keymap) != NULL) { if (!k->temp || strcmp(k->name, km_name)) { break; } master_keymap = k->next; free_keymap(k); } Free(km_name); /* Set the inactive flags. */ set_inactive(); } return true; } /** * Keymap module registration. */ void keymap_register(void) { static action_table_t keymap_actions[] = { { AnKeymap, Keymap_action, ACTION_KE }, { AnTemporaryKeymap, Keymap_action, ACTION_KE } }; /* Register for state changes. */ register_schange(ST_3270_MODE, keymap_3270_mode); register_schange(ST_CONNECT, keymap_3270_mode); /* Register the actions. */ register_actions(keymap_actions, array_count(keymap_actions)); } /* Read each of the keymaps specified by the keymap resource. */ void keymap_init(void) { char *s0, *s; char *comma; /* In case this is a subsequent call, wipe out the current keymap. */ clear_keymap(); /* Read the base keymap. */ read_keymap("base", false); /* Read the user-defined keymaps. */ if (appres.interactive.key_map != NULL) { s = s0 = NewString(appres.interactive.key_map); while ((comma = strchr(s, ',')) != NULL) { *comma = '\0'; if (*s) { read_keymap(s, false); } s = comma + 1; } if (*s) { read_keymap(s, false); } Free(s0); } last_3270 = IN_3270; last_nvt = IN_NVT; set_inactive(); } /* Erase the current keymap. */ static void clear_keymap(void) { struct keymap *k, *next; for (k = master_keymap; k != NULL; k = next) { next = k->next; free_keymap(k); } master_keymap = NULL; } /* Set the inactive flags for the current keymap. */ static void set_inactive(void) { struct keymap *k, *j; /* Clear the inactive flags and successors. */ for (k = master_keymap; k != NULL; k = k->next) { k->hints[0] &= ~KM_INACTIVE; k->successor = NULL; } /* Turn off elements which have the wrong mode. */ for (k = master_keymap; k != NULL; k = k->next) { /* If the mode is wrong, turn it off. */ if ((!last_3270 && (k->hints[0] & KM_3270_ONLY)) || (!last_nvt && (k->hints[0] & KM_NVT_ONLY))) { k->hints[0] |= KM_INACTIVE; } } /* Compute superseded entries. */ for (k = master_keymap; k != NULL; k = k->next) { if (k->hints[0] & KM_INACTIVE) { continue; } for (j = k->next; j != NULL; j = j->next) { if (j->hints[0] & KM_INACTIVE) { continue; } /* It may supersede other entries. */ if (j->ncodes == k->ncodes && !codecmp(j, k, k->ncodes)) { j->hints[0] |= KM_INACTIVE; j->successor = k; } } } } /* 3270/NVT mode change. */ static void keymap_3270_mode(bool ignored _is_unused) { if (last_3270 != IN_3270 || last_nvt != IN_NVT) { last_3270 = IN_3270; last_nvt = IN_NVT; set_inactive(); } } /* Decode hints (modifiers). */ static const char * decode_hint(int hint) { static char buf[128]; char *s = buf; *s = '\0'; if (hint & KM_SHIFT) { s += sprintf(s, "Shift "); } if ((hint & KM_CTRL) == KM_CTRL) { s += sprintf(s, "Ctrl "); } else if (hint & KM_LCTRL) { s += sprintf(s, "LeftCtrl"); } else if (hint & KM_RCTRL) { s += sprintf(s, "RightCtrl"); } if ((hint & KM_ALT) == KM_ALT) { s += sprintf(s, "Alt "); } else if (hint & KM_LALT) { s += sprintf(s, "LeftAlt"); } else if (hint & KM_RALT) { s += sprintf(s, "RightAlt"); } else if (hint & KM_ENHANCED) { s += sprintf(s, "Enhanced"); } return buf; } /* * Decode a key. * Accepts a hint as to which form was used to specify it, if it came from a * keymap definition. */ const char * decode_key(int k, int hint, char *buf) { char *s = buf; if (k & 0xffff0000) { const char *n; /* VK_xxx */ n = lookup_cname(k); sprintf(buf, "%s%s", decode_hint(hint), n? n: "???"); } else if (k < ' ') { sprintf(s, "%sCtrl %c", decode_hint(hint & ~KM_CTRL), k + '@'); } else if (k == ':') { sprintf(s, "%scolon", decode_hint(hint)); } else if (k == ' ') { sprintf(s, "%sspace", decode_hint(hint)); } else { wchar_t w = k; char c; BOOL udc = FALSE; /* Try translating to OEM for display on the console. */ WideCharToMultiByte(CP_OEMCP, 0, &w, 1, &c, 1, "?", &udc); if (!udc) { sprintf(s, "%s%c", decode_hint(hint), c); } else { sprintf(s, "%sU+%04x", decode_hint(hint), k); } } return buf; } /* Dump the current keymap. */ const char * keymap_dump(void) { varbuf_t r; struct keymap *k; char *s; size_t sl; vb_init(&r); for (k = master_keymap; k != NULL; k = k->next) { if (k->successor != NULL) { vb_appendf(&r, "[%s:%d%s] -- superceded by %s:%d --\n", k->file, k->line, k->temp? " temp": "", k->successor->file, k->successor->line); } else if (!IS_INACTIVE(k)) { int i; char buf[1024]; char *s = buf; char dbuf[128]; char *t = safe_string(k->action); for (i = 0; i < k->ncodes; i++) { s += sprintf(s, " %s", decode_key(k->codes[i], (k->hints[i] & KM_HINTS) | KM_KEYMAP, dbuf)); } vb_appendf(&r, "[%s:%d%s]%s: %s\n", k->file, k->line, k->temp? " temp": "", buf, t); Free(t); } } s = vb_consume(&r); sl = strlen(s); if (sl > 0 && s[sl - 1] == '\n') { s[sl - 1] = '\0'; } return lazya(s); } suite3270-4.1/wc3270/keymap.h000077500000000000000000000037731413735575200154400ustar00rootroot00000000000000/* * Copyright (c) 2000-2009, 2016, 2019 Paul Mattes. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of Paul Mattes nor his contributors may be used * to endorse or promote products derived from this software without * specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. */ /* wc3270 version of keymap.h */ #define KM_SHIFT 0x0001 #define KM_LCTRL 0x0002 #define KM_RCTRL 0x0004 #define KM_CTRL (KM_LCTRL | KM_RCTRL) #define KM_LALT 0x0008 #define KM_RALT 0x0010 #define KM_ALT (KM_LALT | KM_RALT) #define KM_ENHANCED 0x0020 void keymap_init(void); char *lookup_key(unsigned long xk, unsigned long state); const char *keymap_dump(void); const char *decode_key(int k, int hint, char *buf); const char *lookup_cname(unsigned long ccode); void keymap_register(void); suite3270-4.1/wc3270/m4man000077700000000000000000000000001413735575200173202../Common/m4manustar00rootroot00000000000000suite3270-4.1/wc3270/mkiss000077500000000000000000000001361413735575200150400ustar00rootroot00000000000000#!/usr/bin/env bash . ./version.txt sed -e "s/%VERSION%/$version/g" -e "s/%CYEAR%/$cyear/g" suite3270-4.1/wc3270/mkshort.c000066400000000000000000000047741413735575200156330ustar00rootroot00000000000000/* * Copyright (c) 2006-2010, 2013-2015, 2019 Paul Mattes. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of Paul Mattes nor his contributors may be used * to endorse or promote products derived from this software without * specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. */ /* * mkshort.c * A Windows console-based 3270 Terminal Emulator * Quick standalone utility to Create a shortcut to * wc3270.exe on the desktop with the right properties. */ #include "globals.h" #include #include "shortcutc.h" #include "winvers.h" int main(int argc, char *argv[]) { char exe_path[MAX_PATH]; HRESULT hres; char *install_dir; char *exe_name; char *link_path; get_version_info(); /* Pull in the parameter. */ if (argc != 4) { fprintf(stderr, "usage: %s install-dir exe-name link-path\n", argv[0]); return 1; } install_dir = argv[1]; exe_name = argv[2]; link_path = argv[3]; sprintf(exe_path, "%s\\%s", install_dir, exe_name); /* Create the link. */ hres = create_link( exe_path, link_path, NULL, NULL, install_dir, 46, 80, L"Lucida Console", 0, 0); if (hres) { fprintf(stderr, "link creation \"%s\" failed\n", link_path); } return hres; } suite3270-4.1/wc3270/mkversion.sh000077700000000000000000000000001413735575200223442../Common/mkversion.shustar00rootroot00000000000000suite3270-4.1/wc3270/mkwversion.sh000077500000000000000000000032621413735575200165320ustar00rootroot00000000000000#!/usr/bin/env sh # Copyright (c) 1999-2009, 2015 Paul Mattes. # All rights reserved. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # * Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # * Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in the # documentation and/or other materials provided with the distribution. # * Neither the name of Paul Mattes nor his contributors may be used # to endorse or promote products derived from this software without # specific prior written permission. # # THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS OR # IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES # OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN # NO EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, # SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED # TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR # PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF # LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING # NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS # SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. # Create wversion.o from version.txt #set -x set -e . ${2-./version.txt} trap 'rm -f wversion.c' 0 1 2 15 cat <wversion.c char *wversion = "v$version"; EOF ${1-cc} -c wversion.c suite3270-4.1/wc3270/nvt_gui.c000066400000000000000000000040031413735575200156000ustar00rootroot00000000000000/* * Copyright (c) 1993-2009, 2013-2015 Paul Mattes. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the names of Paul Mattes nor the names of his contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO * EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * nvt_gui.c * X11-specific functions for NVT mode. */ #include "globals.h" #include "appres.h" #include "cscreen.h" #include "nvt_gui.h" #include "screen.h" /** * X11 version of the xterm text escape * * @param[in] opcode Operation to perform * @param[in] text Associated text */ void xterm_text_gui(int code, const char *text) { switch (code) { case 0: /* icon name and window title */ case 2: /* window_title */ screen_title(text); break; default: break; } } suite3270-4.1/wc3270/package.ps1.tmpl000077500000000000000000000042251413735575200167650ustar00rootroot00000000000000# Set up constants. $inno = 'C:\Program Files (x86)\Inno Setup 6\ISCC.exe' $cert = 'C:\Users\pdm\Documents\Certs\Cert2020.p12' $signtool = 'C:\Program Files (x86)\Windows Kits\10\App Certification Kit\signtool.exe' $timestamp = 'http://timestamp.digicert.com' # timestamp was http://timestamp.comodoca.com $version = '%VERSION%' # Any error kills the script. $ErrorActionPreference = 'Stop' # Read the password. $p = Read-Host 'Enter key password' -AsSecureString $pass = [Runtime.InteropServices.Marshal]::PtrToStringAuto([Runtime.InteropServices.Marshal]::SecureStringToBSTR($p)) # Sign the binaries. $files = (Get-ChildItem -Path obj -Recurse -Filter "*.exe").FullName Write-Host -ForegroundColor Green 'Signing', $files.Count, 'binaries' & $signtool sign /f $cert /p $pass /td SHA256 /tr $timestamp $files # Create the noinstall files. Write-Host -ForegroundColor Green 'Creating no-install zipfiles' if (Test-Path wc3270-$version-noinstall-32.zip) { Remove-Item wc3270-$version-noinstall-32.zip } $zip32 = Get-Content .\wc3270\wc3270-32.zipit Compress-Archive -Path $zip32 -DestinationPath wc3270-$version-noinstall-32.zip if (Test-Path wc3270-$version-noinstall-64.zip) { Remove-Item wc3270-$version-noinstall-64.zip } $zip64 = Get-Content .\wc3270\wc3270-64.zipit Compress-Archive -Path $zip64 -DestinationPath wc3270-$version-noinstall-64.zip # Create the wx3270 extern zipfiles. Write-Host -ForegroundColor Green 'Creating wx3270 extern zipfiles' if (Test-Path wx3270-$version-extern-32.zip) { Remove-Item wx3270-$version-extern-32.zip } $zip32 = Get-Content .\wc3270\wx3270-32.zipit Compress-Archive -Path $zip32 -DestinationPath wx3270-$version-extern-32.zip if (Test-Path wx3270-$version-extern-64.zip) { Remove-Item wx3270-$version-extern-64.zip } $zip64 = Get-Content .\wc3270\wx3270-64.zipit Compress-Archive -Path $zip64 -DestinationPath wx3270-$version-extern-64.zip # Run Inno Setup to create the installer. Write-Host -ForegroundColor Green 'Running Inno Setup' $signparm = '/smystandard="' + "$signtool sign /f `$q$cert`$q /p $pass /td SHA256 /tr $timestamp `$p" + '"' & $inno $signparm /Qp wc3270.iss suite3270-4.1/wc3270/relink.c000066400000000000000000000233121413735575200154150ustar00rootroot00000000000000/* * Copyright (c) 2006-2009, 2013-2015, 2019-2020 Paul Mattes. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of Paul Mattes nor his contributors may be used * to endorse or promote products derived from this software without * specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. */ /* * relink.c * A Windows console-based 3270 Terminal Emulator * Utility functions to read a session file and create a * compatible shortcut. */ #include "globals.h" #include #include "appres.h" #include "3270ds.h" #include "resources.h" #include "ctlr.h" #include "ctlrc.h" #include "host.h" #include "screen.h" #include "task.h" #include "trace.h" #include "utils.h" #include #include "winvers.h" #include "shortcutc.h" #include "windirs.h" #include "relinkc.h" codepages_t codepages[] = { { "belgian", "500", 0, L"1252" }, { "belgian-euro", "1148", 0, L"1252" }, { "bracket", "37*", 0, L"1252" }, { "brazilian", "275", 0, L"1252" }, { "cp1047", "1047", 0, L"1252" }, { "cp870", "870", 0, L"1250" }, { "chinese-gb18030","1388", 1, L"936" }, { "finnish", "278", 0, L"1252" }, { "finnish-euro", "1143", 0, L"1252" }, { "french", "297", 0, L"1252" }, { "french-euro", "1147", 0, L"1252" }, { "german", "273", 0, L"1252" }, { "german-euro", "1141", 0, L"1252" }, { "greek", "875", 0, L"1253" }, { "hebrew", "424", 0, L"1255" }, { "icelandic", "871", 0, L"1252" }, { "icelandic-euro", "1149", 0, L"1252" }, { "italian", "280", 0, L"1252" }, { "italian-euro", "1144", 0, L"1252" }, { "japanese-kana", "930", 1, L"932" }, { "japanese-latin", "939", 1, L"932" }, { "norwegian", "277", 0, L"1252" }, { "norwegian-euro", "1142", 0, L"1252" }, { "russian", "880", 0, L"1251" }, { "simplified-chinese","935",1,L"936" }, { "spanish", "284", 0, L"1252" }, { "spanish-euro", "1145", 0, L"1252" }, { "thai", "1160", 0, L"874" }, { "traditional-chinese","937",1,L"950" }, { "turkish", "1026", 0, L"1254" }, { "uk", "285", 0, L"1252" }, { "uk-euro", "1146", 0, L"1252" }, { "us-euro", "1140", 0, L"1252" }, { "us-intl", "037", 0, L"1252" }, { NULL, NULL, 0, NULL } }; size_t num_codepages = (sizeof(codepages) / sizeof(codepages[0])) - 1; /* 2 3 4 5 */ int wrows[6] = { 0, 0, MODEL_2_ROWS, MODEL_3_ROWS, MODEL_4_ROWS, MODEL_5_ROWS }; int wcols[6] = { 0, 0, MODEL_2_COLS, MODEL_3_COLS, MODEL_4_COLS, MODEL_5_COLS }; static wchar_t * reg_font_from_cset(char *cset, int *codepage) { unsigned i, j; wchar_t *cpname = NULL; wchar_t data[1024]; DWORD dlen; HKEY key; static wchar_t font[1024]; DWORD type; *codepage = 0; /* Search the table for a match. */ for (i = 0; codepages[i].name != NULL; i++) { if (!strcmp(cset, codepages[i].name)) { cpname = codepages[i].codepage; break; } } /* If no match, use Lucida Console. */ if (cpname == NULL) { return L"Lucida Console"; } /* * Look in the registry for the console font associated with the * Windows code page. */ if (RegOpenKeyEx(HKEY_LOCAL_MACHINE, "Software\\Microsoft\\Windows NT\\CurrentVersion\\" "Console\\TrueTypeFont", 0, KEY_READ, &key) != ERROR_SUCCESS) { printf("RegOpenKey failed -- cannot find font\n"); return L"Lucida Console"; } dlen = sizeof(data); if (RegQueryValueExW(key, cpname, NULL, &type, (LPVOID)data, &dlen) != ERROR_SUCCESS) { /* No codepage-specific match, try the default. */ dlen = sizeof(data); if (RegQueryValueExW(key, L"0", NULL, &type, (LPVOID)data, &dlen) != ERROR_SUCCESS) { RegCloseKey(key); printf("RegQueryValueEx failed -- cannot find font\n"); return L"Lucida Console"; } } RegCloseKey(key); if (type == REG_MULTI_SZ) { for (i = 0; i < dlen/sizeof(wchar_t); i++) { if (data[i] == 0x0000) { break; } } if (i + 1 >= dlen / sizeof(wchar_t) || data[i + 1] == 0x0000) { printf("Bad registry value -- cannot find font\n"); return L"Lucida Console"; } i++; } else { i = 0; } for (j = 0; i < dlen; i++, j++) { if (j == 0 && data[i] == L'*') { i++; } if ((font[j] = data[i]) == 0x0000) { break; } } *codepage = _wtoi(cpname); return font; } /* Convert a hexadecimal digit to a nybble. */ static unsigned hex(char c) { static char *digits = "0123456789abcdef"; char *pos; pos = strchr(digits, c); if (pos == NULL) { return 0; /* XXX */ } return (unsigned)(pos - digits); } //#define DEBUG_EDIT 1 int read_user_settings(FILE *f, char **usp) { int saw_star; char buf[1024]; if (usp == NULL) { return 1; /* success */ } *usp = NULL; /* * Read the balance of the file into a temporary buffer, ignoring * the '!*' line. */ saw_star = 0; while (fgets(buf, sizeof(buf), f) != NULL) { if (!saw_star) { if (buf[0] == '!' && buf[1] == '*') { saw_star = 1; } continue; } if (*usp == NULL) { *usp = malloc(strlen(buf) + 1); (*usp)[0] = '\0'; } else { *usp = realloc(*usp, strlen(*usp) + strlen(buf) + 1); } if (*usp == NULL) { #if defined(DEBUG_EDIT) /*[*/ printf("out of memory]\n"); #endif /*]*/ return 0; } strcat(*usp, buf); } return 1; } /* * Read an existing session file. * Returns 1 for success (file read and editable), 0 for failure. */ int read_session(FILE *f, session_t *s, char **usp) { char buf[1024]; int saw_hex = 0; int saw_star = 0; unsigned long csum; unsigned long fcsum = 0; int ver; int s_off = 0; /* * Look for the checksum and version. Verify the version. * * XXX: It might be a good idea to validate each '!x' line and * make sure that the length is right. */ while (fgets(buf, sizeof(buf), f) != NULL) { if (buf[0] == '!' && buf[1] == 'x') saw_hex = 1; else if (buf[0] == '!' && buf[1] == '*') saw_star = 1; else if (buf[0] == '!' && buf[1] == 'c') { if (sscanf(buf + 2, "%lx %d", &csum, &ver) != 2) { #if defined(DEBUG_EDIT) /*[*/ printf("[bad !c line '%s']\n", buf); #endif /*]*/ return 0; } if (ver > WIZARD_VER) { #if defined(DEBUG_EDIT) /*[*/ printf("[bad ver %d > %d]\n", ver, WIZARD_VER); #endif /*]*/ return 0; } } } if (!saw_hex || !saw_star) { #if defined(DEBUG_EDIT) /*[*/ printf("[missing%s%s]\n", saw_hex? "": "hex", saw_star? "": "star"); #endif /*]*/ return 0; } /* Checksum from the top up to the '!c' line. */ fflush(f); fseek(f, 0, SEEK_SET); fcsum = 0; while (fgets(buf, sizeof(buf), f) != NULL) { char *t; if (buf[0] == '!' && buf[1] == 'c') { break; } for (t = buf; *t; t++) { fcsum += *t & 0xff; } } if (fcsum != csum) { #if defined(DEBUG_EDIT) /*[*/ printf("[checksum mismatch, want 0x%08lx got 0x%08lx]\n", csum, fcsum); #endif /*]*/ return 0; } /* Once more, with feeling. Scribble onto the session structure. */ fflush(f); fseek(f, 0, SEEK_SET); s_off = 0; while (fgets(buf, sizeof(buf), f) != NULL) { if (buf[0] == '!' && buf[1] == 'x') { char *t; for (t = buf + 2; *t; t += 2) { if (*t == '\n') { break; } if (s_off > sizeof(*s)) { #if defined(DEBUG_EDIT) /*[*/ printf("[s overflow: %d > %d]\n", s_off, (int)sizeof(*s)); #endif /*]*/ return 0; } ((char *)s)[s_off++] = (hex(*t) << 4) | hex(*(t + 1)); } } else if (buf[0] == '!' && buf[1] == 'c') { break; } } /* * Read the balance of the file into a temporary buffer, ignoring * the '!*' line. */ if (usp != NULL && read_user_settings(f, usp) == 0) { return 0; } /* Success */ return 1; } HRESULT create_shortcut(session_t *session, char *exepath, char *linkpath, char *args, char *workingdir) { wchar_t *font; int codepage = 0; int extra_height = 1; font = reg_font_from_cset(session->codepage, &codepage); if (!(session->flags & WF_NO_MENUBAR)) { extra_height += 2; } return create_link( exepath, /* path to executable */ linkpath, /* where to put the link */ "wc3270 session", /* description */ args, /* arguments */ workingdir, /* working directory */ (session->ov_rows? session->ov_rows: wrows[session->model]) + extra_height, /* console rows */ session->ov_cols? session->ov_cols: wcols[session->model], /* console columns */ font, /* font */ session->point_size,/* point size */ codepage); /* code page */ } suite3270-4.1/wc3270/relinkc.h000066400000000000000000000101741413735575200155670ustar00rootroot00000000000000/* * Copyright (c) 2006-2012, 2014, 2016, 2019-2021 Paul Mattes. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of Paul Mattes nor his contributors may be used * to endorse or promote products derived from this software without * specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. */ /* * relinkc.h * A Windows console-based 3270 Terminal Emulator * Utility functions to read a session file and create a * compatible shortcut. */ #define STR_SIZE 256 #define WIZARD_VER 4 typedef struct { /* Fields for wc3270 3.3.9 (Wizard version 1) */ char session[STR_SIZE]; /* session name */ char host[STR_SIZE]; /* host name */ DWORD port; /* TCP port */ char luname[STR_SIZE]; /* LU name */ DWORD tls; /* TKS tunnel flag */ char proxy_type[STR_SIZE]; /* proxy type */ char proxy_host[STR_SIZE]; /* proxy host */ char proxy_port[STR_SIZE]; /* proxy port */ DWORD model; /* model number */ char codepage[STR_SIZE]; /* code page name */ DWORD is_dbcs; DWORD wpr3287; /* pr3287 flag */ char printerlu[STR_SIZE]; /* printer LU */ char printer[STR_SIZE]; /* Windows printer name */ char printercp[STR_SIZE]; /* pr3287 code page */ char keymaps[STR_SIZE]; /* keymap names */ /* Fields added for wc3270 3.3.10 (Wizard version 2) */ unsigned char flags; /* miscellaneous flags */ unsigned char ov_rows; /* oversize rows */ unsigned char ov_cols; /* oversize columns */ unsigned char point_size; /* font point size */ unsigned char flags2; /* more flags */ /* Fields added for wc3270 4.0ga10 (Wizard version 3) */ char proxy_user[STR_SIZE]; /* proxy username */ char proxy_password[STR_SIZE]; /* proxy password */ /* Fields added for wc3270 4.1alpha7 (Wizard version 4) */ char accept_hostname[STR_SIZE]; /* accept hostname */ } session_t; #define WF_EMBED_KEYMAPS 0x01 /* embed keymaps in session */ #define WF_AUTO_SHORTCUT 0x02 /* 'auto-shortcut' mode */ #define WF_WHITE_BG 0x04 /* white background */ #define WF_NO_MENUBAR 0x08 /* don't leave room for menu bar */ #define WF_VERIFY_HOST_CERTS 0x10 /* verify host certificate (deprecated) */ #define WF_TRACE 0x20 /* trace at start-up */ #define WF_CROSSHAIR 0x40 /* crosshair cursor */ #define WF_ALTCURSOR 0x80 /* underscore cursor */ #define WF2_NEW_VHC_DEFAULT 0x01 /* has new verify-host-cert default */ #define WF2_NO_VERIFY_HOST_CERT 0x02 /* do not verify host certificate */ #define WF2_ALWAYS_INSERT 0x04 /* always use insert mode */ #define WF2_CURSOR_BLINK 0x08 /* cursor blink */ typedef struct { char *name; char *hostcp; int is_dbcs; wchar_t *codepage; } codepages_t; extern codepages_t codepages[]; extern size_t num_codepages; extern int wrows[6]; extern int wcols[6]; extern int read_user_settings(FILE *f, char **usp); extern int read_session(FILE *f, session_t *s, char **usp); extern HRESULT create_shortcut(session_t *session, char *exepath, char *linkpath, char *args, char *workingdir); suite3270-4.1/wc3270/screen.c000066400000000000000000002534451413735575200154240ustar00rootroot00000000000000/* * Copyright (c) 2000-2021 Paul Mattes. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of Paul Mattes nor his contributors may be used * to endorse or promote products derived from this software without * specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. */ /* * screen.c * A Windows console-based 3270 Terminal Emulator * Screen drawing */ #include "globals.h" #include #include "appres.h" #include "3270ds.h" #include "resources.h" #include "ctlr.h" #include "toggles.h" #include "actions.h" #include "cmenubar.h" #include "cscreen.h" #include "cstatus.h" #include "ctlrc.h" #include "glue.h" #include "host.h" #include "keymap.h" #include "kybd.h" #include "lazya.h" #include "names.h" #include "nvt.h" #include "popups.h" #include "screen.h" #include "see.h" #include "selectc.h" #include "status.h" #include "task.h" #include "telnet.h" #include "trace.h" #include "unicodec.h" #include "utils.h" #include "varbuf.h" #include "w3misc.h" #include "wselectc.h" #include "xio.h" #include "xscroll.h" #include #include "winvers.h" #define STATUS_SCROLL_START_MS 1500 #define STATUS_SCROLL_MS 100 #define STATUS_PUSH_MS 5000 #define CM (60*10) /* csec per minute */ #define XTRA_ROWS (1 + 2 * (appres.interactive.menubar == true)) #if !defined(COMMON_LVB_LEAD_BYTE) /*[*/ # define COMMON_LVB_LEAD_BYTE 0x100 #endif /*]*/ #if !defined(COMMON_LVB_TRAILING_BYTE) /*[*/ # define COMMON_LVB_TRAILING_BYTE 0x200 #endif /*]*/ /* Unicode line-drawing characters for crosshair. */ #define LINEDRAW_VERT 0x2502 #define LINEDRAW_CROSS 0x253c #define LINEDRAW_HORIZ 0x2500 #define MAX_COLORS 16 #define CURSOR_BLINK_MS 500 /* * N.B.: F0 "neutral black" means black on a screen (white-on-black device) and * white on a printer (black-on-white device). * F7 "neutral white" means white on a screen (white-on-black device) and * black on a printer (black-on-white device). */ static int cmap_fg[MAX_COLORS] = { 0, /* F0 neutral black */ FOREGROUND_INTENSITY | FOREGROUND_BLUE, /* F1 blue */ FOREGROUND_INTENSITY | FOREGROUND_RED, /* F2 red */ FOREGROUND_INTENSITY | FOREGROUND_RED | FOREGROUND_BLUE, /* F3 pink */ FOREGROUND_INTENSITY | FOREGROUND_GREEN, /* F4 green */ FOREGROUND_INTENSITY | FOREGROUND_GREEN | FOREGROUND_BLUE, /* F5 turquoise */ FOREGROUND_INTENSITY | FOREGROUND_GREEN | FOREGROUND_RED, /* F6 yellow */ FOREGROUND_INTENSITY | FOREGROUND_GREEN | FOREGROUND_RED | FOREGROUND_BLUE, /* F7 neutral white */ 0, /* F8 black */ FOREGROUND_BLUE, /* F9 deep blue */ FOREGROUND_INTENSITY | FOREGROUND_RED, /* FA orange */ FOREGROUND_RED | FOREGROUND_BLUE, /* FB purple */ FOREGROUND_GREEN, /* FC pale green */ FOREGROUND_GREEN | FOREGROUND_BLUE, /* FD pale turquoise */ FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE, /* FE gray */ FOREGROUND_INTENSITY | FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE, /* FF white */ }; static int cmap_bg[MAX_COLORS] = { 0, /* neutral black */ BACKGROUND_INTENSITY | BACKGROUND_BLUE, /* blue */ BACKGROUND_INTENSITY | BACKGROUND_RED, /* red */ BACKGROUND_INTENSITY | BACKGROUND_RED | BACKGROUND_BLUE, /* pink */ BACKGROUND_INTENSITY | BACKGROUND_GREEN, /* green */ BACKGROUND_INTENSITY | BACKGROUND_GREEN | BACKGROUND_BLUE, /* turquoise */ BACKGROUND_INTENSITY | BACKGROUND_GREEN | BACKGROUND_RED, /* yellow */ BACKGROUND_INTENSITY | BACKGROUND_GREEN | BACKGROUND_RED | BACKGROUND_BLUE, /* neutral white */ 0, /* black */ BACKGROUND_BLUE, /* deep blue */ BACKGROUND_INTENSITY | BACKGROUND_RED, /* orange */ BACKGROUND_RED | BACKGROUND_BLUE, /* purple */ BACKGROUND_GREEN, /* pale green */ BACKGROUND_GREEN | BACKGROUND_BLUE, /* pale turquoise */ BACKGROUND_RED | BACKGROUND_GREEN | BACKGROUND_BLUE, /* gray */ BACKGROUND_INTENSITY | BACKGROUND_RED | BACKGROUND_GREEN | BACKGROUND_BLUE, /* white */ }; static int field_colors[4] = { HOST_COLOR_GREEN, /* default */ HOST_COLOR_RED, /* intensified */ HOST_COLOR_BLUE, /* protected */ HOST_COLOR_NEUTRAL_WHITE /* protected, intensified */ }; static int defattr = 0; static int oia_attr = 0; static int oia_bold_attr = 0; static int oia_red_attr = 0; static int oia_white_attr = 0; static int xhattr = 0; static ioid_t input_id; bool escaped = true; bool isendwin = true; enum ts { TS_AUTO, TS_ON, TS_OFF }; enum ts ab_mode = TS_AUTO; int windows_cp = 0; #if defined(MAYBE_SOMETIME) /*[*/ /* * A bit of a cheat. We know that Windows console attributes are really just * colors, with bits 0-3 for foreground and bits 4-7 for background. That * leaves 8 bits we can play with for our own devious purposes, as long as we * don't accidentally pass one of those bits to Windows. * * The attributes we define are: * WCATTR_UNDERLINE: The character is underlined. Windows does not support * underlining, but we do, by displaying underlined spaces as underscores. * Some people may find this absolutely maddening. */ #endif /*]*/ static CHAR_INFO *onscreen; /* what's on the screen now */ static CHAR_INFO *toscreen; /* what's supposed to be on the screen */ static int onscreen_valid = FALSE; /* is onscreen valid? */ static int status_row = 0; /* Row to display the status line on */ static int status_skip = 0; /* Row to blank above the status line */ static int screen_yoffset = 0; /* Vertical offset to top of screen. If 0, there is no menu bar. If nonzero (2, actually), menu bar is at the top of the display. */ static int rmargin; static ioid_t disabled_done_id = NULL_IOID; /* Layered OIA messages. */ static char *disabled_msg = NULL; /* layer 0 (top) */ static char *scrolled_msg = NULL; /* layer 1 */ static char *info_msg = NULL; /* layer 2 */ static char *other_msg = NULL; /* layer 3 */ static int other_attr; /* layer 3 color */ static char *info_base_msg = NULL; /* original info message (unscrolled) */ static void kybd_input(iosrc_t fd, ioid_t id); static void kybd_input2(INPUT_RECORD *ir); static void draw_oia(void); static void status_connect(bool ignored); static void status_3270_mode(bool ignored); static void status_printer(bool on); static int get_color_pair(int fg, int bg); static int color_from_fa(unsigned char fa); static void set_status_row(int screen_rows, int emulator_rows); static bool ts_value(const char *s, enum ts *tsp); static void relabel(bool ignored); static void init_user_colors(void); static void init_user_attribute_colors(void); static HWND get_console_hwnd(void); static void codepage_changed(bool ignored); static HANDLE chandle; /* console input handle */ static HANDLE cohandle; /* console screen buffer handle */ static HANDLE sbuf; /* dynamically-allocated screen buffer */ HWND console_window; static ctrlc_fn_t ctrlc_fn = NULL; static int console_rows; static int console_cols; static COORD console_max; static bool screen_swapped = false; /* State for blinking text. */ static bool blink_on = true; /* are we displaying them or not? */ static bool blink_ticking = false; /* is the timeout pending? */ static ioid_t blink_id = NULL_IOID; /* timeout ID */ static bool blink_wasticking = false; /* endwin called while blinking */ static void blink_em(ioid_t id); /* blink timeout */ /* State for blinking cursor. */ static struct { ioid_t id; /* timeout ID */ bool visible; /* true if visible */ } cblink = { NULL_IOID, true }; static void cblink_timeout(ioid_t id); static void set_cblink(bool mode); static bool in_focus = true; static int crosshair_color = HOST_COLOR_PURPLE; static char *window_title; static bool selecting; static bool cursor_enabled = true; static HANDLE cc_event; static ioid_t cc_id; CONSOLE_SCREEN_BUFFER_INFO base_info; static action_t Paste_action; static action_t Redraw_action; static action_t Title_action; static void win32_perror_fatal(const char *fmt, ...) { va_list ap; char *buf; va_start(ap, fmt); buf = xs_vbuffer(fmt, ap); va_end(ap); win32_perror("%s", buf); x3270_exit(1); } /* * Control-C handler registration. */ void screen_set_ctrlc_fn(ctrlc_fn_t fn) { ctrlc_fn = fn; } /* * Console event handler. */ BOOL WINAPI cc_handler(DWORD type) { if (type == CTRL_C_EVENT) { /* Set the synchronous event so we can process it in the main loop. */ SetEvent(cc_event); return TRUE; } else if (type == CTRL_CLOSE_EVENT) { /* Exit gracefully. */ vtrace("Window closed\n"); x3270_exit(0); return TRUE; } else { /* Let Windows process it. */ return FALSE; } } /* * Synchronous ^C handler. */ static void synchronous_cc(iosrc_t fd _is_unused, ioid_t id _is_unused) { char *action; vtrace("^C received %s\n", escaped? "at prompt": "in session"); if (escaped) { if (ctrlc_fn) { (*ctrlc_fn)(); } return; } action = lookup_key(0x03, LEFT_CTRL_PRESSED); if (action != NULL) { if (strcmp(action, "[ignore]")) { push_keymap_action(action); } } else { run_action(AnKey, IA_DEFAULT, "0x03", NULL); } } /* * Return the number of rows implied by the given model number. */ static int model_rows(int m) { switch (m) { default: case 2: return MODEL_2_ROWS; case 3: return MODEL_3_ROWS; case 4: return MODEL_4_ROWS; case 5: return MODEL_5_ROWS; } } /* * Return the number of colums implied by the given model number. */ static int model_cols(int m) { switch (m) { default: case 2: return MODEL_2_COLS; case 3: return MODEL_3_COLS; case 4: return MODEL_4_COLS; case 5: return MODEL_5_COLS; } } /* * Resize the newly-created console. * * This function may make the console bigger (if the model number or oversize * requests it) or may make it smaller (if it is larger than what the model * requires). It may also call set_rows_cols() to update other globals derived * from the ov_cols and ov_rows. */ static int resize_console(void) { COORD want_bs; SMALL_RECT sr; bool ov_changed = false; /* * Calculate the rows and columns we want -- start with the * model-number-derived size, increase with oversize, decrease with * the physical limit of the console. */ want_bs.Y = model_rows(model_num) + XTRA_ROWS; if (ov_rows + XTRA_ROWS > want_bs.Y) { want_bs.Y = ov_rows + XTRA_ROWS; } if (console_max.Y && want_bs.Y > console_max.Y) { want_bs.Y = console_max.Y; } want_bs.X = model_cols(model_num); if (ov_cols > want_bs.X) { want_bs.X = ov_cols; } if (console_max.X && want_bs.X > console_max.X) { want_bs.X = console_max.X; } if (want_bs.Y != console_rows || want_bs.X != console_cols) { /* * If we are making anything smaller, we need to shrink the * console window to the least common area first. */ if (want_bs.Y < console_rows || want_bs.X < console_cols) { SMALL_RECT tsr; tsr.Top = 0; if (want_bs.Y < console_rows) { tsr.Bottom = want_bs.Y - 1; } else { tsr.Bottom = console_rows - 1; } tsr.Left = 0; if (want_bs.X < console_cols) { tsr.Right = want_bs.X - 1; } else { tsr.Right = console_cols - 1; } if (SetConsoleWindowInfo(sbuf, TRUE, &tsr) == 0) { win32_perror("SetConsoleWindowInfo(1) failed"); return -1; } } /* Set the console buffer size. */ if (SetConsoleScreenBufferSize(sbuf, want_bs) == 0) { win32_perror("SetConsoleScreenBufferSize failed"); return -1; } /* Set the console window. */ sr.Top = 0; sr.Bottom = want_bs.Y - 1; sr.Left = 0; sr.Right = want_bs.X - 1; if (SetConsoleWindowInfo(sbuf, TRUE, &sr) == 0) { win32_perror("SetConsoleWindowInfo(2) failed"); return -1; } /* Remember the new physical screen dimensions. */ console_rows = want_bs.Y; console_cols = want_bs.X; /* * Calculate new oversize and maximum logical screen * dimensions. * * This gets a bit tricky, because the menu bar and OIA can * disappear if we are constrained by the physical screen, but * we will not turn them off to make oversize fit. */ if (ov_cols > model_cols(model_num)) { if (ov_cols > console_cols) { popup_an_error("Oversize columns (%d) truncated to maximum " "window width (%d)", ov_cols, console_cols); ov_cols = console_cols; ov_changed = true; } } if (ov_rows > model_rows(model_num)) { if (ov_rows + XTRA_ROWS > console_rows) { popup_an_error("Oversize rows (%d) truncated to maximum " "window height (%d) - %d -> %d rows", ov_rows, console_rows, XTRA_ROWS, console_rows - XTRA_ROWS); ov_rows = console_rows - XTRA_ROWS; if (ov_rows <= model_rows(model_num)) { ov_rows = 0; } ov_changed = true; } } } if (ov_changed) { set_rows_cols(model_num, ov_cols, ov_rows); } return 0; } /* * Get a handle for the console. */ static HANDLE initscr(void) { size_t buffer_size; CONSOLE_CURSOR_INFO cursor_info; /* Get a handle to the console. */ chandle = CreateFile("CONIN$", GENERIC_READ | GENERIC_WRITE, FILE_SHARE_READ, NULL, OPEN_EXISTING, 0, NULL); if (chandle == NULL) { win32_perror("CreateFile(CONIN$) failed"); return NULL; } if (SetConsoleMode(chandle, ENABLE_PROCESSED_INPUT | ENABLE_MOUSE_INPUT) == 0) { win32_perror("SetConsoleMode failed"); return NULL; } cohandle = CreateFile("CONOUT$", GENERIC_READ | GENERIC_WRITE, FILE_SHARE_WRITE, NULL, OPEN_EXISTING, 0, NULL); if (cohandle == NULL) { win32_perror("CreateFile(CONOUT$) failed"); return NULL; } console_window = get_console_hwnd(); /* Get its dimensions. */ if (GetConsoleScreenBufferInfo(cohandle, &base_info) == 0) { win32_perror("GetConsoleScreenBufferInfo failed"); return NULL; } console_rows = base_info.srWindow.Bottom - base_info.srWindow.Top + 1; console_cols = base_info.srWindow.Right - base_info.srWindow.Left + 1; /* Get its cursor configuration. */ if (GetConsoleCursorInfo(cohandle, &cursor_info) == 0) { win32_perror("GetConsoleCursorInfo failed"); return NULL; } /* Get its maximum dimensions. */ console_max = GetLargestConsoleWindowSize(cohandle); /* Create the screen buffer. */ sbuf = CreateConsoleScreenBuffer(GENERIC_READ | GENERIC_WRITE, FILE_SHARE_READ | FILE_SHARE_WRITE, NULL, CONSOLE_TEXTMODE_BUFFER, NULL); if (sbuf == NULL) { win32_perror("CreateConsoleScreenBuffer failed"); return NULL; } /* Set its dimensions. */ if (!ov_auto) { if (resize_console() < 0) { return NULL; } } /* Define a console handler. */ if (!SetConsoleCtrlHandler(cc_handler, TRUE)) { win32_perror("SetConsoleCtrlHandler failed"); return NULL; } cc_event = CreateEvent(NULL, FALSE, FALSE, NULL); if (cc_event == NULL) { win32_perror("CreateEvent for ^C failed"); return NULL; } cc_id = AddInput(cc_event, synchronous_cc); /* Allocate and initialize the onscreen and toscreen buffers. */ buffer_size = sizeof(CHAR_INFO) * console_rows * console_cols; onscreen = (CHAR_INFO *)Malloc(buffer_size); memset(onscreen, '\0', buffer_size); onscreen_valid = FALSE; toscreen = (CHAR_INFO *)Malloc(buffer_size); memset(toscreen, '\0', buffer_size); /* More will no doubt follow. */ return chandle; } /* * Virtual curses functions. */ static int cur_row = 0; static int cur_col = 0; static int cur_attr = 0; static void move(int row, int col) { cur_row = row; cur_col = col; } static void attrset(int a) { cur_attr = a; } static void addch(ucs4_t c) { CHAR_INFO *ch = &toscreen[(cur_row * console_cols) + cur_col]; /* Save the desired character. */ if (ch->Char.UnicodeChar != c || ch->Attributes != cur_attr) { ch->Char.UnicodeChar = c; ch->Attributes = cur_attr; } /* Increment and wrap. */ if (++cur_col >= console_cols) { cur_col = 0; if (++cur_row >= console_rows) { cur_row = 0; } } } static int mvinch(int y, int x) { move(y, x); return toscreen[(y * console_cols) + x].Char.UnicodeChar; } #define A_CHARTEXT 0xffff #if 0 /* unused for now */ static void printw(char *fmt, ...) { va_list ap; char *buf; size_t sl; WCHAR *wbuf; int nc; int i; va_start(ap, fmt); buf = xs_vbuffer(fmt, ap); va_end(ap); sl = strlen(buf); wbuf = (WCHAR *)Malloc(sl * sizeof(WCHAR)); nc = MultiByteToWideChar(CP_ACP, 0, buf, (int)sl, wbuf, (int)sl); Free(buf); for (i = 0; i < nc; i++) { addch(wbuf[i]); } Free(wbuf); } #endif static void mvprintw(int row, int col, char *fmt, ...) { va_list ap; char *buf; size_t sl; WCHAR *wbuf; int nc; int i; cur_row = row; cur_col = col; va_start(ap, fmt); buf = xs_vbuffer(fmt, ap); va_end(ap); sl = strlen(buf); wbuf = (WCHAR *)Malloc(sl * sizeof(WCHAR)); nc = MultiByteToWideChar(CP_ACP, 0, buf, (int)sl, wbuf, (int)sl); Free(buf); for (i = 0; i < nc; i++) { addch(wbuf[i]); } Free(wbuf); } static int ix(int row, int col) { return (row * console_cols) + col; } static char *done_array = NULL; static void none_done(void) { if (done_array == NULL) { done_array = Malloc(console_rows * console_cols); } memset(done_array, '\0', console_rows * console_cols); } static int is_done(int row, int col) { return done_array[ix(row, col)]; } static void mark_done(int start_row, int end_row, int start_col, int end_col) { int row; for (row = start_row; row <= end_row; row++) { memset(&done_array[ix(row, start_col)], 1, end_col - start_col + 1); } } static int tos_a(int row, int col) { return toscreen[ix(row, col)].Attributes; } /* * Local version of select_changed() that deals in screen coordinates, not * 3270 display buffer coordinates. */ static bool select_changed_s(unsigned row, unsigned col, unsigned rows, unsigned cols) { int row_adj, rows_adj; int cols_adj; /* Adjust for menu bar. */ row_adj = row - screen_yoffset; rows_adj = rows; if (row_adj < 0) { rows_adj += row_adj; row_adj = 0; if (rows_adj <= 0) { return false; } } /* Adjust for overflow at the bottom. */ if (row_adj >= ROWS) { return false; } if (row_adj + rows_adj >= ROWS) { rows_adj = ROWS - row_adj; if (rows_adj <= 0) { return false; } } /* Adjust for overflow at the right. */ if ((int)col >= COLS) { return false; } cols_adj = cols; if ((int)(col + cols_adj) >= COLS) { cols_adj = COLS - col; if (cols_adj <= 0) { return false; } } /* Now see if the area on the 3270 display has changed. */ return select_changed(row_adj, col, rows_adj, cols_adj); } /* * Local version of select_sync() that deals in screen coordinates, not * 3270 display buffer coordinates. */ static void select_sync_s(unsigned row, unsigned col, unsigned rows, unsigned cols) { int row_adj, rows_adj; int cols_adj; /* Adjust for menu bar. */ row_adj = row - screen_yoffset; rows_adj = rows; if (row_adj < 0) { rows_adj -= row_adj; row_adj = 0; if (rows_adj <= 0) { return; } } /* Adjust for overflow at the bottom. */ if (row_adj >= ROWS) { return; } if (row_adj + rows_adj >= ROWS) { rows_adj = ROWS - row_adj; if (rows_adj <= 0) { return; } } /* Adjust for overflow at the right. */ if ((int)col >= COLS) { return; } cols_adj = cols; if ((int)(col + cols_adj) >= COLS) { cols_adj = COLS - col; if (cols_adj <= 0) { return; } } /* Now see if the area on the 3270 display has changed. */ select_sync(row_adj, col, rows_adj, cols_adj); } #if defined(DEBUG_SCREEN_DRAW) /*[*/ static int changed(int row, int col) { return !onscreen_valid || memcmp(&onscreen[ix(row, col)], &toscreen[ix(row, col)], sizeof(CHAR_INFO)) || select_changed_s(row, col, 1, 1); } #endif /*]*/ /* * Draw a rectangle of homogeneous text. */ static void hdraw(int row, int lrow, int col, int lcol) { COORD bufferSize; COORD bufferCoord; SMALL_RECT writeRegion; int xrow; int rc; #if defined(DEBUG_SCREEN_DRAW) /*[*/ /* * Trace what we've been asked to draw. * Drawn areas are 'h', done areas are 'd'. */ { int trow, tcol; vtrace("hdraw row %d-%d col %d-%d attr 0x%x:\n", row, lrow, col, lcol, tos_a(row, col)); for (trow = 0; trow < console_rows; trow++) { for (tcol = 0; tcol < console_cols; tcol++) { if (trow >= row && trow <= lrow && tcol >= col && tcol <= lcol) { vtrace("h"); } else if (is_done(trow, tcol)) { vtrace("d"); } else { vtrace("."); } } vtrace("\n"); } } #endif /*]*/ /* Write it. */ bufferSize.X = console_cols; bufferSize.Y = console_rows; bufferCoord.X = col; bufferCoord.Y = row; writeRegion.Left = col; writeRegion.Top = row; writeRegion.Right = lcol; writeRegion.Bottom = lrow; rc = WriteConsoleOutputW(sbuf, toscreen, bufferSize, bufferCoord, &writeRegion); if (rc == 0) { win32_perror_fatal("WriteConsoleOutput failed"); } /* Sync 'onscreen'. */ for (xrow = row; xrow <= lrow; xrow++) { memcpy(&onscreen[ix(xrow, col)], &toscreen[ix(xrow, col)], sizeof(CHAR_INFO) * (lcol - col + 1)); } select_sync_s(row, col, lrow - row + 1, lcol - col + 1); /* Mark the region as done. */ mark_done(row, lrow, col, lcol); } /* * Draw a rectanglar region from 'toscreen' onto the screen, without regard to * what is already there. * If the attributes for the entire region are the same, we can draw it in * one go; otherwise we will need to break it into little pieces (fairly * stupidly) with common attributes. * When done, copy the region from 'toscreen' to 'onscreen'. */ static void draw_rect(const char *why, int pc_start, int pc_end, int pr_start, int pr_end) { int a; int ul_row, ul_col, xrow, xcol, lr_row, lr_col; #if defined(DEBUG_SCREEN_DRAW) /*[*/ /* * Trace what we've been asked to draw. * Modified areas are 'r', unmodified (excess) areas are 'x'. */ { int trow, tcol; vtrace("draw_rect %s row %d-%d col %d-%d\n", why, pr_start, pr_end, pc_start, pc_end); for (trow = 0; trow < console_rows; trow++) { for (tcol = 0; tcol < console_cols; tcol++) { if (trow >= pr_start && trow <= pr_end && tcol >= pc_start && tcol <= pc_end) { if (changed(trow, tcol)) { vtrace("r"); } else { vtrace("x"); } } else { vtrace("."); } } vtrace("\n"); } } #endif /*]*/ for (ul_row = pr_start; ul_row <= pr_end; ul_row++) { for (ul_col = pc_start; ul_col <= pc_end; ul_col++) { int col_found = 0; if (is_done(ul_row, ul_col)) { continue; } /* * [ul_row,ul_col] is the upper left-hand corner of an * undrawn region. * * Find the the lower right-hand corner of the * rectangle with common attributes. */ a = tos_a(ul_row, ul_col); lr_col = pc_end; lr_row = pr_end; for (xrow = ul_row; !col_found && xrow <= pr_end; xrow++) { if (is_done(xrow, ul_col) || tos_a(xrow, ul_col) != a) { lr_row = xrow - 1; break; } for (xcol = ul_col; xcol <= lr_col; xcol++) { if (is_done(xrow, xcol) || tos_a(xrow, xcol) != a) { lr_col = xcol - 1; lr_row = xrow; col_found = 1; break; } } } if (tos_a(ul_row, ul_col) & COMMON_LVB_LEAD_BYTE) { continue; } hdraw(ul_row, lr_row, ul_col, lr_col); if (tos_a(ul_row, ul_col) & COMMON_LVB_TRAILING_BYTE) { hdraw(ul_row, lr_row, ul_col-1, lr_col-1); } } } } /* * Compare 'onscreen' (what's on the screen right now) with 'toscreen' (what * we want on the screen) and draw what's changed. Hopefully it will be in * a reasonably optimized fashion. * * Windows lets us draw a rectangular areas with one call, provided that the * whole area has the same attributes. We will take advantage of this where * it is relatively easy to figure out, by walking row by row, holding on to * and widening a vertical band of modified columns and drawing only when we * hit a row that needs no modifications. This will cause us to miss some * easy-seeming cases that require recognizing multiple bands per row. */ static void sync_onscreen(void) { int row; int col; int pending = FALSE; /* is there a draw pending? */ int pc_start, pc_end; /* first and last columns in pending band */ int pr_start; /* first row in pending band */ /* Clear out the 'what we've seen' array. */ none_done(); #if defined(DEBUG_SCREEN_DRAW) /*[*/ /* * Trace what's been modified. * Modified areas are 'm'. */ { int trow, tcol; vtrace("sync_onscreen:\n"); for (trow = 0; trow < console_rows; trow++) { for (tcol = 0; tcol < console_cols; tcol++) { if (changed(trow, tcol)) { vtrace("m"); } else { vtrace("."); } } vtrace("\n"); } } #endif /*]*/ #if 0 hdraw(0, console_rows - 1, 0, console_cols - 1); onscreen_valid = TRUE; #endif /* Sometimes you have to draw everything. */ if (!onscreen_valid) { draw_rect("invalid", 0, console_cols - 1, 0, console_rows - 1); onscreen_valid = TRUE; return; } for (row = 0; row < console_rows; row++) { /* Check the whole row for a match first. */ if (!memcmp(&onscreen[ix(row, 0)], &toscreen[ix(row, 0)], sizeof(CHAR_INFO) * console_cols) && !select_changed_s(row, 0, 1, console_cols)) { if (pending) { draw_rect("middle", pc_start, pc_end, pr_start, row - 1); pending = FALSE; } continue; } for (col = 0; col < console_cols; col++) { if (memcmp(&onscreen[ix(row, col)], &toscreen[ix(row, col)], sizeof(CHAR_INFO)) || select_changed_s(row, col, 1, 1)) { /* * This column differs. * Start or expand the band, and start pending. */ if (!pending || col < pc_start) { pc_start = col; } if (!pending || col > pc_end) { pc_end = col; } if (!pending) { pr_start = row; pending = TRUE; } } } } if (pending) { draw_rect("end", pc_start, pc_end, pr_start, console_rows - 1); } } /* * Set the console cursor size. */ static void set_cursor_size(HANDLE handle) { CONSOLE_CURSOR_INFO cci; memset(&cci, 0, sizeof(cci)); cci.bVisible = (cursor_enabled && cblink.visible)? TRUE: FALSE; if (toggled(ALT_CURSOR)) { cci.dwSize = 25; } else { cci.dwSize = 100; } if (SetConsoleCursorInfo(handle, &cci) == 0) { win32_perror_fatal("\nSetConsoleCursorInfo failed"); } } /* Repaint the screen. */ static void refresh(void) { CONSOLE_SCREEN_BUFFER_INFO info; COORD coord; bool wasendwin = isendwin; isendwin = false; /* Draw the differences between 'onscreen' and 'toscreen' into sbuf. */ sync_onscreen(); /* Move the cursor. */ coord.X = cur_col; coord.Y = cur_row; if (onscreen[ix(cur_row, cur_col)].Attributes & COMMON_LVB_TRAILING_BYTE) { coord.X--; } if (GetConsoleScreenBufferInfo(sbuf, &info) == 0) { win32_perror_fatal("\nrefresh: GetConsoleScreenBufferInfo failed"); } if ((info.dwCursorPosition.X != coord.X || info.dwCursorPosition.Y != coord.Y)) { if (SetConsoleCursorPosition(sbuf, coord) == 0) { win32_perror_fatal("\nrefresh: SetConsoleCursorPosition(x=%d,y=%d) " "failed", coord.X, coord.Y); } } /* Swap in this buffer. */ if (!screen_swapped) { if (SetConsoleActiveScreenBuffer(sbuf) == 0) { win32_perror_fatal("\nSetConsoleActiveScreenBuffer failed"); } screen_swapped = true; } /* Set the cursor size. */ set_cursor_size(sbuf); /* Start blinking again. */ if (blink_wasticking) { blink_wasticking = false; blink_id = AddTimeOut(750, blink_em); } /* Restart cursor blinking. */ if (wasendwin) { set_cblink(toggled(CURSOR_BLINK)); } } /* Set the console to 'cooked' mode. */ static void set_console_cooked(void) { if (SetConsoleMode(chandle, ENABLE_ECHO_INPUT | ENABLE_LINE_INPUT | ENABLE_PROCESSED_INPUT | ENABLE_MOUSE_INPUT) == 0) { win32_perror_fatal("\nSetConsoleMode(CONIN$) failed"); } if (SetConsoleMode(cohandle, ENABLE_PROCESSED_OUTPUT | ENABLE_WRAP_AT_EOL_OUTPUT) == 0) { win32_perror_fatal("\nSetConsoleMode(CONOUT$) failed"); } } /* Toggle cooked echo/noecho modes. */ void screen_echo_mode(bool echo) { if (echo) { if (SetConsoleMode(chandle, ENABLE_ECHO_INPUT | ENABLE_LINE_INPUT | ENABLE_PROCESSED_INPUT | ENABLE_MOUSE_INPUT) == 0) { win32_perror_fatal("\nSetConsoleMode(CONIN$) failed"); } } else { if (SetConsoleMode(chandle, ENABLE_LINE_INPUT | ENABLE_PROCESSED_INPUT | ENABLE_MOUSE_INPUT) == 0) { win32_perror_fatal("\nSetConsoleMode(CONIN$) failed"); } } } /* Go back to the original screen. */ static void endwin(void) { if (isendwin) { return; } isendwin = true; if (blink_ticking) { RemoveTimeOut(blink_id); blink_id = NULL_IOID; blink_ticking = false; blink_on = true; blink_wasticking = true; } /* Turn off the blinking cursor. */ set_cblink(false); set_console_cooked(); /* Swap in the original buffer. */ if (SetConsoleActiveScreenBuffer(cohandle) == 0) { win32_perror_fatal("\nSetConsoleActiveScreenBuffer failed"); } screen_swapped = false; system("cls"); printf("[wc3270]\n\n"); fflush(stdout); } /* Initialize the screen. */ void screen_init(void) { int want_ov_rows; int want_ov_cols; bool oversize = false; if (appres.interactive.menubar) { menu_init(); } /* Initialize the console. */ if (initscr() == NULL) { fprintf(stderr, "Can't initialize terminal.\n"); x3270_exit(1); } want_ov_rows = ov_rows; want_ov_cols = ov_cols; windows_cp = GetConsoleCP(); /* * Respect the console size we are given. */ while (console_rows < maxROWS || console_cols < maxCOLS) { /* * First, cancel any oversize. This will get us to the correct * model number, if there is any. */ if ((ov_cols && ov_cols > console_cols) || (ov_rows && ov_rows > console_rows)) { ov_cols = 0; ov_rows = 0; oversize = true; } /* If we're at the smallest screen now, give up. */ if (model_num == 2) { fprintf(stderr, "Emulator won't fit on a %dx%d display.\n", console_rows, console_cols); x3270_exit(1); } /* Try a smaller model. */ set_rows_cols(model_num - 1, 0, 0); } /* * Now, if they wanted an oversize, but didn't get it, try applying it * again. */ if (oversize) { if (want_ov_rows > console_rows - 2) { want_ov_rows = console_rows - 2; } if (want_ov_rows < maxROWS) { want_ov_rows = maxROWS; } if (want_ov_cols > console_cols) { want_ov_cols = console_cols; } set_rows_cols(model_num, want_ov_cols, want_ov_rows); } /* * Finally, if they want automatic oversize, see if that's possible. */ if (ov_auto && (maxROWS < console_rows - 3 || maxCOLS < console_cols)) { set_rows_cols(model_num, console_cols, console_rows - 3); } /* Figure out where the status line goes, if it fits. */ /* Start out in altscreen mode. */ set_status_row(console_rows, maxROWS); /* Initialize selections. */ select_init(maxROWS, maxCOLS); /* Set up callbacks for state changes. */ register_schange(ST_NEGOTIATING, status_connect); register_schange(ST_CONNECT, status_connect); register_schange(ST_3270_MODE, status_3270_mode); register_schange(ST_PRINTER, status_printer); register_schange(ST_CONNECT, relabel); register_schange(ST_3270_MODE, relabel); register_schange(ST_CODEPAGE, codepage_changed); /* See about all-bold behavior. */ if (appres.c3270.all_bold_on) { ab_mode = TS_ON; } else if (!ts_value(appres.c3270.all_bold, &ab_mode)) { fprintf(stderr, "invalid %s value: '%s', assuming 'auto'\n", ResAllBold, appres.c3270.all_bold); } if (ab_mode == TS_AUTO) { ab_mode = mode.m3279? TS_ON: TS_OFF; } /* If the want monochrome, assume they want green. */ /* XXX: I believe that init_user_colors makes this a no-op. */ if (!mode.m3279) { defattr |= FOREGROUND_GREEN; xhattr |= FOREGROUND_GREEN; if (ab_mode == TS_ON) { defattr |= FOREGROUND_INTENSITY; } } /* Pull in the user's color mappings. */ init_user_colors(); init_user_attribute_colors(); if (mode.m3279) { oia_attr = cmap_fg[HOST_COLOR_GREY] | cmap_bg[HOST_COLOR_NEUTRAL_BLACK]; oia_bold_attr = oia_attr; /* not used */ oia_red_attr = FOREGROUND_RED | FOREGROUND_INTENSITY | cmap_bg[HOST_COLOR_NEUTRAL_BLACK]; oia_white_attr = cmap_fg[HOST_COLOR_NEUTRAL_WHITE] | FOREGROUND_INTENSITY | cmap_bg[HOST_COLOR_NEUTRAL_BLACK]; } else { oia_attr = defattr; oia_bold_attr = FOREGROUND_GREEN | FOREGROUND_INTENSITY | cmap_bg[HOST_COLOR_NEUTRAL_BLACK]; oia_red_attr = oia_bold_attr; oia_white_attr = oia_bold_attr; } /* Set up the controller. */ ctlr_init(ALL_CHANGE); /* Set up the scrollbar. */ scroll_buf_init(); /* Set the window label. */ if (appres.c3270.title != NULL) { screen_title(appres.c3270.title); } else if (profile_name != NULL) { screen_title(profile_name); } else { screen_title("wc3270"); } /* Finish screen initialization. */ set_console_cooked(); } /* Calculate where the status line goes now. */ static void set_status_row(int screen_rows, int emulator_rows) { if (screen_rows < emulator_rows + 1) { status_row = status_skip = 0; } else if (screen_rows == emulator_rows + 1) { status_skip = 0; status_row = emulator_rows; } else { status_skip = screen_rows - 2; status_row = screen_rows - 1; } /* Then check for menubar room. Use 2 rows, 1 in a pinch. */ if (appres.interactive.menubar) { if (screen_rows >= emulator_rows + (status_row != 0) + 2) { screen_yoffset = 2; } else if (screen_rows >= emulator_rows + (status_row != 0) + 1) { screen_yoffset = 1; } else { screen_yoffset = 0; } } } /* * Parse a tri-state resource value. * Returns true for success, false for failure. */ static bool ts_value(const char *s, enum ts *tsp) { *tsp = TS_AUTO; if (s != NULL && s[0]) { size_t sl = strlen(s); if (!strncasecmp(s, "true", sl)) { *tsp = TS_ON; } else if (!strncasecmp(s, "false", sl)) { *tsp = TS_OFF; } else if (strncasecmp(s, "auto", sl)) { return false; } } return true; } /* Allocate a color pair. */ static int get_color_pair(int fg, int bg) { int mfg = fg & 0xf; int mbg = bg & 0xf; if (mfg >= MAX_COLORS) { mfg = 0; } if (mbg >= MAX_COLORS) { mbg = 0; } return cmap_fg[mfg] | cmap_bg[mbg]; } /* * Initialize the user-specified attribute color mappings. */ static void init_user_attribute_color(int *a, const char *resname) { char *r; unsigned long l; char *ptr; int i; if ((r = get_resource(resname)) == NULL) { return; } for (i = 0; host_color[i].name != NULL; i++) { if (!strcasecmp(r, host_color[i].name)) { *a = host_color[i].index; return; } } l = strtoul(r, &ptr, 0); if (ptr == r || *ptr != '\0' || l >= MAX_COLORS) { xs_warning("Invalid %s value: %s", resname, r); return; } *a = (int)l; } static void init_user_attribute_colors(void) { init_user_attribute_color(&field_colors[0], ResHostColorForDefault); init_user_attribute_color(&field_colors[1], ResHostColorForIntensified); init_user_attribute_color(&field_colors[2], ResHostColorForProtected); init_user_attribute_color(&field_colors[3], ResHostColorForProtectedIntensified); } /* * Map a field attribute to a 3270 color index. * Applies only to m3279 mode -- does not work for mono. */ static int color3270_from_fa(unsigned char fa) { # define DEFCOLOR_MAP(f) \ ((((f) & FA_PROTECT) >> 4) | (((f) & FA_INT_HIGH_SEL) >> 3)) return field_colors[DEFCOLOR_MAP(fa)]; } /* Map a field attribute to its default colors. */ static int color_from_fa(unsigned char fa) { if (mode.m3279) { int fg; fg = color3270_from_fa(fa); return get_color_pair(fg, HOST_COLOR_NEUTRAL_BLACK); } else return FOREGROUND_GREEN | (((ab_mode == TS_ON) || FA_IS_HIGH(fa))? FOREGROUND_INTENSITY: 0) | cmap_bg[HOST_COLOR_NEUTRAL_BLACK]; } /* Swap foreground and background colors. */ static int reverse_colors(int a) { int rv = 0; /* Move foreground colors to background colors. */ if (a & FOREGROUND_RED) { rv |= BACKGROUND_RED; } if (a & FOREGROUND_BLUE) { rv |= BACKGROUND_BLUE; } if (a & FOREGROUND_GREEN) { rv |= BACKGROUND_GREEN; } if (a & FOREGROUND_INTENSITY) { rv |= BACKGROUND_INTENSITY; } /* And vice versa. */ if (a & BACKGROUND_RED) { rv |= FOREGROUND_RED; } if (a & BACKGROUND_BLUE) { rv |= FOREGROUND_BLUE; } if (a & BACKGROUND_GREEN) { rv |= FOREGROUND_GREEN; } if (a & BACKGROUND_INTENSITY) { rv |= FOREGROUND_INTENSITY; } return rv; } /* * Set up the user-specified color mappings. */ static void init_user_color(const char *name, int ix) { char *r; unsigned long l; char *ptr; r = get_fresource("%s%s", ResConsoleColorForHostColor, name); if (r == NULL) { r = get_fresource("%s%d", ResConsoleColorForHostColor, ix); } if (r == NULL) { return; } l = strtoul(r, &ptr, 0); if (ptr != r && *ptr == '\0' && l <= 15) { cmap_fg[ix] = (int)l; cmap_bg[ix] = (int)l << 4; return; } xs_warning("Invalid %s value '%s'", ResConsoleColorForHostColor, r); } /* * Crosshair color init. */ static void crosshair_color_init(void) { int c; if (appres.interactive.crosshair_color != NULL) { c = decode_host_color(appres.interactive.crosshair_color); if (c >= 0) { crosshair_color = c; return; } else { xs_warning("Invalid %s: %s", ResCrosshairColor, appres.interactive.crosshair_color); } } crosshair_color = HOST_COLOR_PURPLE; } static void init_user_colors(void) { int i; for (i = 0; host_color[i].name != NULL; i++) { init_user_color(host_color[i].name, host_color[i].index); } if (mode.m3279) { defattr = cmap_fg[HOST_COLOR_NEUTRAL_WHITE] | cmap_bg[HOST_COLOR_NEUTRAL_BLACK]; crosshair_color_init(); xhattr = cmap_fg[crosshair_color] | cmap_bg[HOST_COLOR_NEUTRAL_BLACK]; } else { defattr = cmap_fg[HOST_COLOR_PALE_GREEN] | cmap_bg[HOST_COLOR_NEUTRAL_BLACK]; xhattr = cmap_fg[HOST_COLOR_PALE_GREEN] | cmap_bg[HOST_COLOR_NEUTRAL_BLACK]; } } /* Invert colors (selections). */ static int invert_colors(int a) { unsigned char fg = a & (FOREGROUND_RED|FOREGROUND_GREEN|FOREGROUND_BLUE|FOREGROUND_INTENSITY); /* * Make the background gray. * If the foreground is gray, make it black. * Otherwise leave it. */ if (fg == FOREGROUND_INTENSITY) { fg = 0; } return (a & ~0xff) | BACKGROUND_INTENSITY | fg; } /* Apply selection status. */ static int apply_select(int attr, int baddr) { if (area_is_selected(baddr, 1)) { return invert_colors(attr); } else { return attr; } } /* * Find the display attributes for a baddr, fa_addr and fa. */ static int calc_attrs(int baddr, int fa_addr, int fa, bool *underlined, bool *blinking) { int fg, bg, gr, a; /* Nondisplay fields are simply blank. */ if (FA_IS_ZERO(fa)) { a = get_color_pair(HOST_COLOR_NEUTRAL_BLACK, HOST_COLOR_NEUTRAL_BLACK); goto done; } /* Compute the color. */ /* Monochrome is easy, and so is color if nothing is specified. */ if (!mode.m3279 || (!ea_buf[baddr].fg && !ea_buf[fa_addr].fg && !ea_buf[baddr].bg && !ea_buf[fa_addr].bg)) { a = color_from_fa(fa); } else { /* The current location or the fa specifies the fg or bg. */ if (ea_buf[baddr].fg) { fg = ea_buf[baddr].fg & 0x0f; } else if (ea_buf[fa_addr].fg) { fg = ea_buf[fa_addr].fg & 0x0f; } else { fg = color3270_from_fa(fa); } if (ea_buf[baddr].bg) { bg = ea_buf[baddr].bg & 0x0f; } else if (ea_buf[fa_addr].bg) { bg = ea_buf[fa_addr].bg & 0x0f; } else { bg = HOST_COLOR_NEUTRAL_BLACK; } a = get_color_pair(fg, bg); } /* Compute the display attributes. */ if (ea_buf[baddr].gr) { gr = ea_buf[baddr].gr; } else if (ea_buf[fa_addr].gr) { gr = ea_buf[fa_addr].gr; } else { gr = 0; } if (!toggled(UNDERSCORE) && mode.m3279 && (gr & (GR_BLINK | GR_UNDERLINE)) && !(gr & GR_REVERSE) && !bg) { a |= BACKGROUND_INTENSITY; } if (!mode.m3279 && ((gr & GR_INTENSIFY) || (ab_mode == TS_ON) || FA_IS_HIGH(fa))) { a |= FOREGROUND_INTENSITY; } if (gr & GR_REVERSE) { a = reverse_colors(a); } if (toggled(UNDERSCORE) && (gr & GR_UNDERLINE)) { *underlined = true; } else { *underlined = false; } if (toggled(UNDERSCORE) && (gr & GR_BLINK)) { *blinking = true; } else { *blinking = false; } done: return a; } /* * Blink timeout handler. */ static void blink_em(ioid_t id _is_unused) { vtrace("blink timeout\n"); /* We're not ticking any more. */ blink_id = NULL_IOID; blink_ticking = false; blink_wasticking = false; /* Swap blink state and redraw the screen. */ blink_on = !blink_on; screen_changed = true; screen_disp(false); } /* * Cursor blink handler. */ static void cblink_timeout(ioid_t id _is_unused) { vtrace("cursor blink timeout\n"); cblink.id = AddTimeOut(CURSOR_BLINK_MS, cblink_timeout); cblink.visible = !cblink.visible; set_cursor_size(sbuf); } /* * Map a character onto itself or a space, depending on whether it is supposed * to blink and the current global blink state. * Note that blinked-off spaces are underscores, if in underscore mode. * Also sets up the timeout for the next blink if needed. */ static ucs4_t blinkmap(bool blinking, bool underlined, ucs4_t c) { if (!blinking) { return c; } if (!blink_ticking) { blink_id = AddTimeOut(500, blink_em); blink_ticking = true; } return blink_on? c: (underlined? '_': ' '); } /* * Return a visible control character for a field attribute. */ static unsigned char visible_fa(unsigned char fa) { static unsigned char varr[32] = "0123456789ABCDEFGHIJKLMNOPQRSTUV"; unsigned ix; /* * This code knows that: * FA_PROTECT is 0b100000, and we map it to 0b010000 * FA_NUMERIC is 0b010000, and we map it to 0b001000 * FA_INTENSITY is 0b001100, and we map it to 0b000110 * FA_MODIFY is 0b000001, and we copy to 0b000001 */ ix = ((fa & (FA_PROTECT | FA_NUMERIC | FA_INTENSITY)) >> 1) | (fa & FA_MODIFY); return varr[ix]; } static ucs4_t crosshair_blank(int baddr) { if (in_focus && toggled(CROSSHAIR)) { bool same_row = ((baddr / cCOLS) == (cursor_addr / cCOLS)); bool same_col = ((baddr % cCOLS) == (cursor_addr % cCOLS)); if (same_row && same_col) { return LINEDRAW_CROSS; } else if (same_row) { return LINEDRAW_HORIZ; } else if (same_col) { return LINEDRAW_VERT; } } return ' '; } /* Display what's in the buffer. */ void screen_disp(bool erasing _is_unused) { int row, col; int a; bool a_underlined = false; bool a_blinking = false; unsigned char fa; enum dbcs_state d; int fa_addr; /* This may be called when it isn't time. */ if (escaped) { return; } if (!screen_changed) { /* Draw the status line. */ if (status_row) { draw_oia(); } /* Move the cursor. */ if (menu_is_up) { menu_cursor(&row, &col); move(row, col); } else if (flipped) { move((cursor_addr / cCOLS) + screen_yoffset, cCOLS-1 - (cursor_addr % cCOLS)); } else { move((cursor_addr / cCOLS) + screen_yoffset, cursor_addr % cCOLS); } if (status_row) { refresh(); } else { COORD coord; coord.X = cur_col; coord.Y = cur_row; if (onscreen[ix(cur_row, cur_col)].Attributes & COMMON_LVB_TRAILING_BYTE) { coord.X--; } if (SetConsoleCursorPosition(sbuf, coord) == 0) { win32_perror_fatal("\nscreen_disp: " "SetConsoleCursorPosition(x=%d,y=%d) failed", coord.X, coord.Y); } } return; } /* If the menubar is separate, draw it first. */ if (screen_yoffset) { ucs4_t u; bool highlight; unsigned char acs; int norm0, high0; int norm1, high1; if (menu_is_up) { /* * Menu is up. Both rows are white on black for normal, * black on white for highlighted. */ if (menu_is_up & KEYPAD_IS_UP) { high0 = high1 = cmap_fg[HOST_COLOR_NEUTRAL_BLACK] | cmap_bg[HOST_COLOR_NEUTRAL_WHITE]; norm0 = norm1 = cmap_fg[HOST_COLOR_NEUTRAL_WHITE] | cmap_bg[HOST_COLOR_NEUTRAL_BLACK]; } else { norm0 = cmap_bg[HOST_COLOR_GREY] | cmap_fg[HOST_COLOR_NEUTRAL_BLACK]; high0 = cmap_bg[HOST_COLOR_NEUTRAL_WHITE] | cmap_fg[HOST_COLOR_NEUTRAL_BLACK]; norm1 = cmap_fg[HOST_COLOR_NEUTRAL_WHITE] | cmap_bg[HOST_COLOR_NEUTRAL_BLACK]; high1 = cmap_fg[HOST_COLOR_NEUTRAL_BLACK] | cmap_bg[HOST_COLOR_NEUTRAL_WHITE]; } } else { /* * Menu is not up. * Row 0 is a gray-background stripe. * Row 1 has a black background. */ norm0 = high0 = cmap_bg[HOST_COLOR_GREY] | cmap_fg[HOST_COLOR_NEUTRAL_BLACK]; norm1 = high1 = cmap_bg[HOST_COLOR_NEUTRAL_BLACK] | cmap_fg[HOST_COLOR_GREY]; } for (row = 0; row < screen_yoffset; row++) { int norm, high; move(row, 0); if (row) { norm = norm1; high = high1; } else { norm = norm0; high = high0; } for (col = 0; col < cCOLS; col++) { if (menu_char(row, col, true, &u, &highlight, &acs)) { attrset(highlight? high: norm); addch(u); } else { attrset(norm); addch(' '); } } } } fa = get_field_attribute(0); fa_addr = find_field_attribute(0); /* may be -1, that's okay */ a = calc_attrs(fa_addr, fa_addr, fa, &a_underlined, &a_blinking); for (row = 0; row < ROWS; row++) { int baddr; if (!flipped) { move(row + screen_yoffset, 0); } for (col = 0; col < cCOLS; col++) { bool underlined = false; bool blinking = false; bool is_menu = false; ucs4_t u; bool highlight; unsigned char acs; if (flipped) { move(row + screen_yoffset, cCOLS-1 - col); } is_menu = menu_char(row + screen_yoffset, flipped? (cCOLS-1 - col): col, false, &u, &highlight, &acs); if (is_menu) { if (highlight) { attrset(cmap_fg[HOST_COLOR_NEUTRAL_BLACK] | cmap_bg[HOST_COLOR_NEUTRAL_WHITE]); } else { attrset(cmap_fg[HOST_COLOR_NEUTRAL_WHITE] | cmap_bg[HOST_COLOR_NEUTRAL_BLACK]); } addch(u); } baddr = row*cCOLS+col; if (ea_buf[baddr].fa) { /* Field attribute. */ fa_addr = baddr; fa = ea_buf[baddr].fa; a = calc_attrs(baddr, baddr, fa, &a_underlined, &a_blinking); if (!is_menu) { if (toggled(VISIBLE_CONTROL)) { attrset(apply_select(cmap_fg[HOST_COLOR_NEUTRAL_BLACK] | cmap_bg[HOST_COLOR_YELLOW], baddr)); addch(visible_fa(fa)); } else { u = crosshair_blank(baddr); if (u != ' ') { attrset(apply_select(xhattr, baddr)); } else { attrset(apply_select(defattr, baddr)); } addch(u); } } } else if (FA_IS_ZERO(fa)) { /* Blank. */ if (!is_menu) { u = crosshair_blank(baddr); if (u == ' ') { attrset(apply_select(a, baddr)); } else { attrset(apply_select(xhattr, baddr)); } addch(u); } } else { int attr_this; if (is_menu) { continue; } /* Normal text. */ if (!(ea_buf[baddr].gr || ea_buf[baddr].fg || ea_buf[baddr].bg)) { attr_this = apply_select(a, baddr); underlined = a_underlined; blinking = a_blinking; } else { int b; bool b_underlined; bool b_blinking; /* * Override some of the field * attributes. */ b = calc_attrs(baddr, fa_addr, fa, &b_underlined, &b_blinking); attr_this = apply_select(b, baddr); underlined = b_underlined; blinking = b_blinking; } d = ctlr_dbcs_state(baddr); if (is_nvt(&ea_buf[baddr], appres.c3270.ascii_box_draw, &u)) { /* NVT-mode text. */ if (IS_LEFT(d)) { attrset(attr_this); cur_attr |= COMMON_LVB_LEAD_BYTE; addch(ea_buf[baddr].ucs4); cur_attr &= ~COMMON_LVB_LEAD_BYTE; cur_attr |= COMMON_LVB_TRAILING_BYTE; addch(ea_buf[baddr].ucs4); cur_attr &= ~COMMON_LVB_TRAILING_BYTE; } else if (!IS_RIGHT(d)) { if (u == ' ' && in_focus && toggled(CROSSHAIR)) { u = crosshair_blank(baddr); if (u != ' ') { attr_this = apply_select(xhattr, baddr); } } if (underlined && u == ' ') { u = '_'; } if (toggled(MONOCASE) && iswlower((int)u)) { u = (ucs4_t)towupper((int)u); } attrset(attr_this); addch(blinkmap(blinking, underlined, u)); } } else { /* 3270-mode text. */ if (IS_LEFT(d)) { int xaddr = baddr; INC_BA(xaddr); if (toggled(VISIBLE_CONTROL) && ea_buf[baddr].ec == EBC_null && ea_buf[xaddr].ec == EBC_null) { attrset(apply_select(cmap_fg[HOST_COLOR_NEUTRAL_BLACK] | cmap_bg[HOST_COLOR_YELLOW], baddr)); addch('.'); addch('.'); } else { u = ebcdic_to_unicode( (ea_buf[baddr].ec << 8) | ea_buf[xaddr].ec, CS_BASE, EUO_NONE); attrset(attr_this); cur_attr |= COMMON_LVB_LEAD_BYTE; addch(u); cur_attr &= ~COMMON_LVB_LEAD_BYTE; cur_attr |= COMMON_LVB_TRAILING_BYTE; addch(u); cur_attr &= ~COMMON_LVB_TRAILING_BYTE; } } else if (!IS_RIGHT(d)) { if (toggled(VISIBLE_CONTROL) && ea_buf[baddr].ec == EBC_null) { u = '.'; } else if (toggled(VISIBLE_CONTROL) && ea_buf[baddr].ec == EBC_so) { u = '<'; } else if (toggled(VISIBLE_CONTROL) && ea_buf[baddr].ec == EBC_si) { u = '>'; } else { u = ebcdic_to_unicode(ea_buf[baddr].ec, ea_buf[baddr].cs, appres.c3270.ascii_box_draw? EUO_ASCII_BOX: 0); if (u == 0) { u = crosshair_blank(baddr); if (u != ' ') { attr_this = apply_select(xhattr, baddr); } } else if (u == ' ' && in_focus && toggled(CROSSHAIR)) { u = crosshair_blank(baddr); if (u != ' ') { attr_this = apply_select(xhattr, baddr); } } if (underlined && u == ' ') { u = '_'; } if (toggled(MONOCASE) && iswlower((int)u)) { u = towupper((int)u); } } attrset(attr_this); addch(blinkmap(blinking, underlined, u)); } } } } } if (status_row) { draw_oia(); } attrset(defattr); if (flipped) { move((cursor_addr / cCOLS) + screen_yoffset, cCOLS-1 - (cursor_addr % cCOLS)); } else { move((cursor_addr / cCOLS) + screen_yoffset, cursor_addr % cCOLS); } refresh(); screen_changed = false; } static void codepage_changed(bool ignored _is_unused) { screen_changed = true; screen_disp(false); } static const char * decode_state(int state, bool limited, const char *skip) { char *space = ""; varbuf_t r; vb_init(&r); if (skip == NULL) { skip = ""; } if (state & LEFT_CTRL_PRESSED) { state &= ~LEFT_CTRL_PRESSED; if (strcasecmp(skip, "LeftCtrl")) { vb_appendf(&r, "%sLeftCtrl", space); space = " "; } } if (state & RIGHT_CTRL_PRESSED) { state &= ~RIGHT_CTRL_PRESSED; if (strcasecmp(skip, "RightCtrl")) { vb_appendf(&r, "%sRightCtrl", space); space = " "; } } if (state & LEFT_ALT_PRESSED) { state &= ~LEFT_ALT_PRESSED; if (strcasecmp(skip, "LeftAlt")) { vb_appendf(&r, "%sLeftAlt", space); space = " "; } } if (state & RIGHT_ALT_PRESSED) { state &= ~RIGHT_ALT_PRESSED; if (strcasecmp(skip, "RightAlt")) { vb_appendf(&r, "%sRightAlt", space); space = " "; } } if (state & SHIFT_PRESSED) { state &= ~SHIFT_PRESSED; if (strcasecmp(skip, "Shift")) { vb_appendf(&r, "%sShift", space); space = " "; } } if (state & NUMLOCK_ON) { state &= ~NUMLOCK_ON; if (!limited) { vb_appendf(&r, "%sNumLock", space); space = " "; } } if (state & SCROLLLOCK_ON) { state &= ~SCROLLLOCK_ON; if (!limited) { vb_appendf(&r, "%sScrollLock", space); space = " "; } } if (state & ENHANCED_KEY) { state &= ~ENHANCED_KEY; if (!limited) { vb_appendf(&r, "%sEnhanced", space); space = " "; } } if (state & !limited) { vb_appendf(&r, "%s?0x%x", space, state); } if (vb_len(&r) == 0) { vb_free(&r); return "none"; } return lazya(vb_consume(&r)); } /* Handle mouse events. */ static void handle_mouse_event(MOUSE_EVENT_RECORD *me) { int x, y; int row, col; select_event_t event; bool is_alt; x = me->dwMousePosition.X; y = me->dwMousePosition.Y; /* Check for menu selection. */ if (menu_is_up) { if (me->dwEventFlags == 0 && me->dwButtonState == FROM_LEFT_1ST_BUTTON_PRESSED) { menu_click(x, y); } return; } /* Check for menu pop-up. */ if (screen_yoffset && y == 0) { if (me->dwEventFlags == 0 && me->dwButtonState == FROM_LEFT_1ST_BUTTON_PRESSED) { popup_menu(x, (screen_yoffset != 0)); screen_disp(false); return; } } /* Check for TLS pop-up. */ if (me->dwEventFlags == 0 && me->dwButtonState == FROM_LEFT_1ST_BUTTON_PRESSED && status_row && x == rmargin - 28 && y == status_row) { run_action(AnShow, IA_DEFAULT, KwStatus, NULL); return; } /* Figure out what sort of event it is. */ if ((me->dwEventFlags & DOUBLE_CLICK) && (me->dwButtonState & FROM_LEFT_1ST_BUTTON_PRESSED)) { event = SE_DOUBLE_CLICK; } else if (me->dwEventFlags & MOUSE_MOVED) { event = SE_MOVE; } else if (me->dwButtonState & FROM_LEFT_1ST_BUTTON_PRESSED) { event = SE_BUTTON_DOWN; } else if (me->dwButtonState & RIGHTMOST_BUTTON_PRESSED) { event = SE_RIGHT_BUTTON_DOWN; } else if (me->dwButtonState & (FROM_LEFT_2ND_BUTTON_PRESSED | FROM_LEFT_3RD_BUTTON_PRESSED | FROM_LEFT_4TH_BUTTON_PRESSED)) { /* We only are about left and right button-down events. */ return; } else { event = SE_BUTTON_UP; } /* * Check for out of bounds. * * Some events we just ignore, but others we map to the edge of the * display. */ if ((x >= COLS) || (y - screen_yoffset < 0) || (y - screen_yoffset >= ROWS)) { if (event != SE_MOVE && event != SE_BUTTON_UP) { return; } if (x >= COLS) { x = COLS - 1; } if (y - screen_yoffset < 0) { y = screen_yoffset; } if (y - screen_yoffset >= ROWS) { y = screen_yoffset + ROWS - 1; } } /* Compute the buffer coordinates. */ row = y - screen_yoffset; if (flipped) { col = COLS - x; } else { col = x; } /* * Check for lightpen select. * * The lightPenPrimary resource controls the meaning of left-click with and * without the Alt key: * * lightPenSelect * Event false true * --------------- ---------------- ----------------- * Left-click Cursor move Lightpen select * or copy/select * * Alt-Left-click Lightpen select Cursor move * or copy/select */ is_alt = (me->dwControlKeyState & (LEFT_ALT_PRESSED | RIGHT_ALT_PRESSED)) != 0; if (appres.c3270.lightpen_primary? !is_alt: is_alt) { if (event == SE_BUTTON_DOWN) { vtrace(" lightpen select\n"); lightpen_select((row * COLS) + col); } return; } /* * Pass it to the selection logic. If the event is not consumed, treat * it as a cursor move. */ if (!select_event(row, col, event, (me->dwControlKeyState & SHIFT_PRESSED) != 0) && ever_3270) { vtrace(" cursor move\n"); cursor_move((row * COLS) + col); } } typedef struct { const char *name; unsigned flag; } decode_t; static decode_t decode_button_state[] = { { "left1", FROM_LEFT_1ST_BUTTON_PRESSED }, { "left2", FROM_LEFT_2ND_BUTTON_PRESSED }, { "left3", FROM_LEFT_3RD_BUTTON_PRESSED }, { "left4", FROM_LEFT_4TH_BUTTON_PRESSED }, { "right", RIGHTMOST_BUTTON_PRESSED }, { NULL, 0 } }; static decode_t decode_control_key_state[] = { { "capsLock", CAPSLOCK_ON }, { "enhanced", ENHANCED_KEY }, { "leftAlt", LEFT_ALT_PRESSED }, { "leftCtrl", LEFT_CTRL_PRESSED }, { "numLock", NUMLOCK_ON }, { "rightAlt", RIGHT_ALT_PRESSED }, { "rightCtrl", RIGHT_CTRL_PRESSED }, { "scrollLock", SCROLLLOCK_ON }, { "shift", SHIFT_PRESSED }, { NULL, 0 } }; static decode_t decode_event_flags[] = { { "doubleClick", DOUBLE_CLICK }, #if defined(MOUSE_HWHEELED) /*[*/ { "mouseHwheeled", MOUSE_HWHEELED }, #endif /*]*/ { "mouseMoved", MOUSE_MOVED }, { "mouseWheeled", MOUSE_WHEELED }, { NULL, 0 } }; /* Mouse event decoders. */ static const char * decode_mflags(DWORD flags, decode_t names[]) { unsigned f = flags; varbuf_t r; int i; bool any = false; vb_init(&r); vb_appendf(&r, "0x%x", (unsigned)f); for (i = 0; names[i].name != NULL; i++) { if (f & names[i].flag) { vb_appendf(&r, "%s%s", any? "|": " ", names[i].name); f &= ~names[i].flag; any = true; } } if (f != 0 && f != flags) { vb_appendf(&r, "%s0x%x", any? "|": " ", f); } return lazya(vb_consume(&r)); } /* Keyboard input. */ static void kybd_input(iosrc_t fd _is_unused, ioid_t id _is_unused) { int rc; INPUT_RECORD ir; DWORD nr; const char *s; /* Get the next input event. */ rc = ReadConsoleInputW(chandle, &ir, 1, &nr); if (rc == 0) { win32_perror_fatal("ReadConsoleInput failed"); } if (nr == 0) { return; } switch (ir.EventType) { case FOCUS_EVENT: vtrace("Focus %s\n", ir.Event.FocusEvent.bSetFocus? "set": "unset"); /* * When we get a focus event, the system may have (incorrectly) redrawn * our window. Do it again ourselves. * * We also want to redraw to get the crosshair cursor to appear or * disappear. */ in_focus = (ir.Event.FocusEvent.bSetFocus == TRUE); screen_changed = true; screen_disp(false); break; case KEY_EVENT: if (!ir.Event.KeyEvent.bKeyDown) { return; } s = lookup_cname(ir.Event.KeyEvent.wVirtualKeyCode << 16); if (s == NULL) { s = "?"; } vtrace("Key%s vkey 0x%x (%s) scan 0x%x char U+%04x state 0x%x (%s)\n", ir.Event.KeyEvent.bKeyDown? "Down": "Up", ir.Event.KeyEvent.wVirtualKeyCode, s, ir.Event.KeyEvent.wVirtualScanCode, ir.Event.KeyEvent.uChar.UnicodeChar, (int)ir.Event.KeyEvent.dwControlKeyState, decode_state(ir.Event.KeyEvent.dwControlKeyState, false, NULL)); if (!ir.Event.KeyEvent.bKeyDown) { return; } kybd_input2(&ir); break; case MENU_EVENT: vtrace("Menu\n"); break; case MOUSE_EVENT: vtrace("Mouse (%d,%d) ButtonState %s " "ControlKeyState %s EventFlags %s\n", ir.Event.MouseEvent.dwMousePosition.X, ir.Event.MouseEvent.dwMousePosition.Y, decode_mflags(ir.Event.MouseEvent.dwButtonState, decode_button_state), decode_mflags(ir.Event.MouseEvent.dwControlKeyState, decode_control_key_state), decode_mflags(ir.Event.MouseEvent.dwEventFlags, decode_event_flags)); handle_mouse_event(&ir.Event.MouseEvent); break; case WINDOW_BUFFER_SIZE_EVENT: vtrace("WindowBufferSize\n"); break; default: vtrace("Unknown input event %d\n", ir.EventType); break; } } static void trace_as_keymap(unsigned long xk, KEY_EVENT_RECORD *e) { const char *s; varbuf_t r; vb_init(&r); vb_appendf(&r, "[xk 0x%lx] ", xk); s = decode_state(e->dwControlKeyState, true, NULL); if (strcmp(s, "none")) { vb_appendf(&r, "%s ", s); } if (xk & 0xffff0000) { const char *n = lookup_cname(xk); vb_appendf(&r, "%s", n? n: "???"); } else if (xk > 0x7f) { wchar_t w = (wchar_t)xk; char c; BOOL udc = FALSE; /* * Translate to the ANSI codepage for storage in the trace * file. It will be converted to OEM by 'catf' for display * in the trace window. */ WideCharToMultiByte(CP_ACP, 0, &w, 1, &c, 1, "?", &udc); if (udc) { vb_appendf(&r, "U+%04lx", xk); } else { vb_appendf(&r, "%c", (unsigned char)xk); } } else if (xk < ' ') { /* assume dwControlKeyState includes Ctrl... */ vb_appendf(&r, "%c", (unsigned char)xk + '@'); } else if (xk == ' ') { vb_appendf(&r, "space"); } else if (xk == ':') { vb_appendf(&r, "colon"); } else { vb_appendf(&r, "%c", (unsigned char)xk); } vtrace(" %s ->", lazya(vb_consume(&r))); } /* Translate a Windows virtual key to a menubar abstract key. */ static menu_key_t key_to_mkey(int k) { switch (k) { case VK_UP: return MK_UP; case VK_DOWN: return MK_DOWN; case VK_LEFT: return MK_LEFT; case VK_RIGHT: return MK_RIGHT; case VK_HOME: return MK_HOME; case VK_END: return MK_END; case VK_RETURN: return MK_ENTER; case 0: return MK_NONE; default: return MK_OTHER; } } static void kybd_input2(INPUT_RECORD *ir) { int k; unsigned long xk; char *action; /* First see if this is a select/copy completion. */ if (ir->Event.KeyEvent.wVirtualKeyCode == VK_RETURN && select_return_key()) { return; } /* * Translate the INPUT_RECORD into an integer we can match keymaps * against. * * If VK and ASCII are the same and are a control char, use VK. * If VK is 0x6x, use VK. These are aliases like ADD and NUMPAD0. * Otherwise, if there's Unicode, use it. * Otherwise, use VK. */ if ((ir->Event.KeyEvent.wVirtualKeyCode == ir->Event.KeyEvent.uChar.AsciiChar) && ir->Event.KeyEvent.wVirtualKeyCode < ' ') { xk = (ir->Event.KeyEvent.wVirtualKeyCode << 16) & 0xffff0000; } else if ((ir->Event.KeyEvent.wVirtualKeyCode & 0xf0) == 0x60) { xk = (ir->Event.KeyEvent.wVirtualKeyCode << 16) & 0xffff0000; } else if (ir->Event.KeyEvent.uChar.UnicodeChar) { xk = ir->Event.KeyEvent.uChar.UnicodeChar; } else if (ir->Event.KeyEvent.wVirtualKeyCode >= 0x30 && ir->Event.KeyEvent.wVirtualKeyCode <= 0x5a) { xk = ir->Event.KeyEvent.wVirtualKeyCode; } else { xk = (ir->Event.KeyEvent.wVirtualKeyCode << 16) & 0xffff0000; } if (menu_is_up) { menu_key(key_to_mkey(xk >> 16), xk & 0xffff); return; } if (xk) { trace_as_keymap(xk, &ir->Event.KeyEvent); action = lookup_key(xk, ir->Event.KeyEvent.dwControlKeyState); if (action != NULL) { if (strcmp(action, "[ignore]")) { push_keymap_action(action); } return; } } ia_cause = IA_DEFAULT; k = ir->Event.KeyEvent.wVirtualKeyCode; /* These first cases apply to both 3270 and NVT modes. */ switch (k) { case VK_ESCAPE: run_action(AnEscape, IA_DEFAULT, NULL, NULL); return; case VK_UP: run_action(AnUp, IA_DEFAULT, NULL, NULL); return; case VK_DOWN: run_action(AnDown, IA_DEFAULT, NULL, NULL); return; case VK_LEFT: run_action(AnLeft, IA_DEFAULT, NULL, NULL); return; case VK_RIGHT: run_action(AnRight, IA_DEFAULT, NULL, NULL); return; case VK_HOME: run_action(AnHome, IA_DEFAULT, NULL, NULL); return; default: break; } /* Then look for 3270-only cases. */ if (IN_3270) { switch(k) { /* These cases apply only to 3270 mode. */ case VK_TAB: run_action(AnTab, IA_DEFAULT, NULL, NULL); return; case VK_DELETE: run_action(AnDelete, IA_DEFAULT, NULL, NULL); return; case VK_BACK: run_action(AnBackSpace, IA_DEFAULT, NULL, NULL); return; case VK_RETURN: run_action(AnEnter, IA_DEFAULT, NULL, NULL); return; default: break; } } /* Catch PF keys. */ if (k >= VK_F1 && k <= VK_F24) { run_action(AnPF, IA_DEFAULT, lazyaf("%d", k - VK_F1 + 1), NULL); return; } /* Then any other character. */ if (ir->Event.KeyEvent.uChar.UnicodeChar) { run_action(AnKey, IA_DEFAULT, lazyaf("U+%04x", ir->Event.KeyEvent.uChar.UnicodeChar), NULL); } else { vtrace(" dropped (no default)\n"); } } bool screen_suspend(void) { static bool need_to_scroll = false; if (!isendwin) { endwin(); } if (!escaped) { escaped = true; if (need_to_scroll) { printf("\n"); } else { need_to_scroll = true; } RemoveInput(input_id); } return false; } /* * Get mouse events back after calling system(), which apparently cancels them. */ void screen_system_fixup(void) { if (!escaped) { if (SetConsoleMode(chandle, ENABLE_PROCESSED_INPUT | ENABLE_MOUSE_INPUT) == 0) { win32_perror("SetConsoleMode failed"); } } } void screen_resume(void) { if (!escaped) { return; } escaped = false; screen_disp(false); onscreen_valid = FALSE; refresh(); input_id = AddInput(chandle, kybd_input); if (SetConsoleMode(chandle, ENABLE_PROCESSED_INPUT | ENABLE_MOUSE_INPUT) == 0) { win32_perror("SetConsoleMode failed"); } } void cursor_move(int baddr) { cursor_addr = baddr; if (in_focus && toggled(CROSSHAIR)) { screen_changed = true; screen_disp(false); } } static void toggle_altCursor(toggle_index_t ix _is_unused, enum toggle_type tt _is_unused) { if (!isendwin) { set_cursor_size(sbuf); } } /* * The internals of enabling or disabling cursor blink. */ static void set_cblink(bool mode) { vtrace("set_cblink(%s)\n", mode? "true": "false"); if (mode) { /* Turn it on. */ if (cblink.id == NULL_IOID) { cblink.id = AddTimeOut(CURSOR_BLINK_MS, cblink_timeout); } } else { /* Turn it off. */ if (cblink.id != NULL_IOID) { RemoveTimeOut(cblink.id); cblink.id = NULL_IOID; } if (!cblink.visible) { cblink.visible = true; set_cursor_size(sbuf); } } } static void toggle_cursorBlink(toggle_index_t ix _is_unused, enum toggle_type tt _is_unused) { if (isendwin) { return; } set_cblink(toggled(CURSOR_BLINK)); } static void toggle_monocase(toggle_index_t ix _is_unused, enum toggle_type tt _is_unused) { screen_changed = true; screen_disp(false); } static void toggle_underscore(toggle_index_t ix _is_unused, enum toggle_type tt _is_unused) { screen_changed = true; screen_disp(false); } static void toggle_crosshair(toggle_index_t ix _is_unused, enum toggle_type tt _is_unused) { screen_changed = true; screen_disp(false); } /** * Toggle timing display. */ static void toggle_showTiming(toggle_index_t ix _is_unused, enum toggle_type tt _is_unused) { if (!toggled(SHOW_TIMING)) { status_untiming(); } } static void toggle_visibleControl(toggle_index_t ix _is_unused, enum toggle_type tt _is_unused) { screen_changed = true; screen_disp(false); } /* Status line stuff. */ static bool status_ta = false; static bool status_rm = false; static bool status_im = false; static enum { SS_INSECURE, SS_UNVERIFIED, SS_SECURE } status_secure = SS_INSECURE; static bool oia_boxsolid = false; static bool oia_undera = true; static bool oia_compose = false; static bool oia_printer = false; static ucs4_t oia_compose_char = 0; static enum keytype oia_compose_keytype = KT_STD; #define LUCNT 8 static char oia_lu[LUCNT+1]; static char oia_timing[6]; /* :ss.s*/ static char oia_screentrace = ' '; static char oia_script = ' '; static ioid_t info_done_timeout = NULL_IOID; static ioid_t info_scroll_timeout = NULL_IOID; void status_ctlr_done(void) { oia_undera = true; } void status_insert_mode(bool on) { status_im = on; } /* Remove the info message. */ static void info_done(ioid_t id _is_unused) { Replace(info_base_msg, NULL); info_msg = NULL; info_done_timeout = NULL_IOID; } /* Scroll the info message. */ static void info_scroll(ioid_t id _is_unused) { ++info_msg; if (strlen(info_msg) > 35) { info_scroll_timeout = AddTimeOut(STATUS_SCROLL_MS, info_scroll); } else { info_done_timeout = AddTimeOut(STATUS_PUSH_MS, info_done); info_scroll_timeout = NULL_IOID; } } /* Pop up an info message. */ void status_push(char *msg) { char *new_msg = msg? NewString(msg): NULL; Replace(info_base_msg, new_msg); info_msg = info_base_msg; if (info_scroll_timeout != NULL_IOID) { RemoveTimeOut(info_scroll_timeout); info_scroll_timeout = NULL_IOID; } if (info_done_timeout != NULL_IOID) { RemoveTimeOut(info_done_timeout); info_done_timeout = NULL_IOID; } } /* * Reset the info message, so when it is revealed, it starts at the beginning. */ static void reset_info(void) { if (info_base_msg != NULL) { info_msg = info_base_msg; } /* Stop any timers. */ if (info_scroll_timeout != NULL_IOID) { RemoveTimeOut(info_scroll_timeout); info_scroll_timeout = NULL_IOID; } if (info_done_timeout != NULL_IOID) { RemoveTimeOut(info_done_timeout); info_done_timeout = NULL_IOID; } } /* * The info message has been displayed. Set the timer to scroll or erase it. */ static void set_info_timer(void) { if (info_scroll_timeout != NULL_IOID || info_done_timeout != NULL_IOID) { return; } if (strlen(info_msg) > 35) { info_scroll_timeout = AddTimeOut(STATUS_SCROLL_START_MS, info_scroll); } else { info_done_timeout = AddTimeOut(STATUS_PUSH_MS, info_done); } } void status_minus(void) { other_msg = "X -f"; other_attr = oia_red_attr; } void status_oerr(int error_type) { switch (error_type) { case KL_OERR_PROTECTED: other_msg = "X Protected"; break; case KL_OERR_NUMERIC: other_msg = "X NUM"; break; case KL_OERR_OVERFLOW: other_msg = "X Overflow"; break; } other_attr = oia_red_attr; } void status_reset(void) { if (kybdlock & KL_ENTER_INHIBIT) { other_msg = "X Inhibit"; } else if (kybdlock & KL_DEFERRED_UNLOCK) { other_msg = "X"; } else { status_connect(PCONNECTED); } other_attr = oia_white_attr; } void status_reverse_mode(bool on) { status_rm = on; } void status_syswait(void) { other_msg = "X SYSTEM"; other_attr = oia_white_attr; } void status_twait(void) { oia_undera = false; other_msg = "X Wait"; other_attr = oia_white_attr; } void status_typeahead(bool on) { status_ta = on; } void status_compose(bool on, ucs4_t ucs4, enum keytype keytype) { oia_compose = on; oia_compose_char = ucs4; oia_compose_keytype = keytype; } void status_lu(const char *lu) { if (lu != NULL) { strncpy(oia_lu, lu, LUCNT); oia_lu[LUCNT] = '\0'; } else { memset(oia_lu, '\0', sizeof(oia_lu)); } } static void status_connect(bool connected) { if (connected) { oia_boxsolid = IN_3270 && !IN_SSCP; if (cstate == RECONNECTING) { other_msg = "X Reconnecting"; } else if (cstate == RESOLVING) { other_msg = "X [DNS]"; } else if (cstate == TCP_PENDING) { other_msg = "X [TCP]"; oia_boxsolid = false; status_secure = SS_INSECURE; } else if (cstate == TLS_PENDING) { other_msg = "X [TLS]"; oia_boxsolid = false; status_secure = SS_INSECURE; } else if (cstate == PROXY_PENDING) { other_msg = "X [Proxy]"; oia_boxsolid = false; status_secure = SS_INSECURE; } else if (cstate == TELNET_PENDING) { other_msg = "X [TELNET]"; oia_boxsolid = false; status_secure = SS_INSECURE; } else if (cstate == CONNECTED_UNBOUND) { other_msg = "X [TN3270E]"; } else if (kybdlock & KL_AWAITING_FIRST) { other_msg = "X [Field]"; } else { other_msg = NULL; } if (net_secure_connection()) { if (net_secure_unverified()) { status_secure = SS_UNVERIFIED; } else { status_secure = SS_SECURE; } } else { status_secure = SS_INSECURE; } } else { oia_boxsolid = false; other_msg = "X Not Connected"; status_secure = SS_INSECURE; } other_attr = oia_white_attr; status_untiming(); } static void status_3270_mode(bool ignored _is_unused) { oia_boxsolid = IN_3270 && !IN_SSCP; if (oia_boxsolid) { oia_undera = true; } status_connect(CONNECTED); } static void status_printer(bool on) { oia_printer = on; } void status_timing(struct timeval *t0, struct timeval *t1) { static char no_time[] = ":??.?"; if (t1->tv_sec - t0->tv_sec > (99*60)) { strcpy(oia_timing, no_time); } else { unsigned long cs; /* centiseconds */ cs = (t1->tv_sec - t0->tv_sec) * 10 + (t1->tv_usec - t0->tv_usec + 50000) / 100000; if (cs < CM) { sprintf(oia_timing, ":%02ld.%ld", cs / 10, cs % 10); } else { sprintf(oia_timing, "%02ld:%02ld", cs / CM, (cs % CM) / 10); } } } void status_untiming(void) { oia_timing[0] = '\0'; } void status_scrolled(int n) { if (n) { Replace(scrolled_msg, xs_buffer("X Scrolled %d", n)); } else { Replace(scrolled_msg, NULL); } } /* Remove 'X Disabled'. */ static void disabled_done(ioid_t id _is_unused) { disabled_msg = NULL; disabled_done_id = NULL_IOID; } /* Flash 'X Disabled' in the OIA. */ void status_keyboard_disable_flash(void) { if (disabled_done_id == NULL_IOID) { disabled_msg = "X Disabled"; } else { RemoveTimeOut(disabled_done_id); disabled_done_id = NULL_IOID; } disabled_done_id = AddTimeOut(1000L, disabled_done); } void status_screentrace(int n) { if (n < 0) { oia_screentrace = ' '; } else if (n < 9) { oia_screentrace = "123456789"[n]; } else { oia_screentrace = '+'; } } void status_script(bool on _is_unused) { oia_script = on? 's': ' '; } static void draw_oia(void) { int i, j; int cursor_col = (cursor_addr % cCOLS); int fl_cursor_col = flipped? (console_cols - 1 - cursor_col): cursor_col; char *status_msg_now; int msg_attr; rmargin = maxCOLS - 1; /* Extend or erase the crosshair. */ attrset(xhattr); if (in_focus && toggled(CROSSHAIR)) { if (!menu_is_up && (mvinch(0, fl_cursor_col) & A_CHARTEXT) == ' ') { attrset(cmap_fg[crosshair_color] | cmap_bg[HOST_COLOR_GREY]); addch(LINEDRAW_VERT); attrset(xhattr); } if (screen_yoffset > 1 && (mvinch(1, fl_cursor_col) & A_CHARTEXT) == ' ') { addch(LINEDRAW_VERT); } } for (i = ROWS + screen_yoffset; i < status_row; i++) { for (j = 0; j < maxCOLS; j++) { move(i, j); if (in_focus && toggled(CROSSHAIR) && (j == fl_cursor_col)) { addch(LINEDRAW_VERT); } else { addch(' '); } } } for (i = 0; i < ROWS; i++) { for (j = cCOLS; j < maxCOLS; j++) { move(i + screen_yoffset, j); if (in_focus && toggled(CROSSHAIR) && i == (cursor_addr / cCOLS)) { addch(LINEDRAW_HORIZ); } else { addch(' '); } } } /* Make sure the status line region is filled in properly. */ attrset(defattr); move(maxROWS + screen_yoffset, 0); for (i = maxROWS + screen_yoffset; i < status_row; i++) { for (j = 0; j <= rmargin; j++) { addch(' '); } } move(status_row, 0); attrset(defattr); for (i = 0; i <= rmargin; i++) { addch(' '); } /* Offsets 0, 1, 2 */ if (mode.m3279) { attrset(cmap_fg[HOST_COLOR_NEUTRAL_BLACK] | cmap_bg[HOST_COLOR_GREY]); } else { attrset(reverse_colors(defattr)); } mvprintw(status_row, 0, "4"); if (oia_undera) { addch(IN_E? 'B': 'A'); } else { addch(' '); } if (IN_NVT) { addch('N'); } else if (oia_boxsolid) { addch(' '); } else if (IN_SSCP) { addch('S'); } else { addch('?'); } /* Figure out the status message. */ msg_attr = oia_attr; if (disabled_msg != NULL) { msg_attr = oia_red_attr; status_msg_now = disabled_msg; reset_info(); } else if (scrolled_msg != NULL) { msg_attr = oia_white_attr; status_msg_now = scrolled_msg; reset_info(); } else if (info_msg != NULL) { msg_attr = oia_white_attr; status_msg_now = info_msg; set_info_timer(); } else if (other_msg != NULL) { msg_attr = other_attr; status_msg_now = other_msg; } else { status_msg_now = ""; } /* Offset 8 */ attrset(msg_attr); mvprintw(status_row, 7, "%-35.35s", status_msg_now); attrset(oia_attr); mvprintw(status_row, rmargin-35, "%c%c %c%c%c%c", oia_compose? 'C': ' ', oia_compose? oia_compose_char: ' ', /* XXX */ status_ta? 'T': ' ', status_rm? 'R': ' ', status_im? 'I': ' ', oia_printer? 'P': ' '); if (status_secure != SS_INSECURE) { attrset(mode.m3279? (cmap_fg[(status_secure == SS_SECURE)? HOST_COLOR_GREEN: HOST_COLOR_YELLOW] | cmap_bg[HOST_COLOR_NEUTRAL_BLACK]): oia_attr); addch('S'); attrset(oia_attr); } else { addch(' '); } addch(oia_screentrace); addch(oia_script); mvprintw(status_row, rmargin-25, "%s", oia_lu); mvprintw(status_row, rmargin-14, "%s", oia_timing); mvprintw(status_row, rmargin-7, "%03d/%03d", cursor_addr/cCOLS + 1, cursor_addr%cCOLS + 1); /* Now fill in the crosshair cursor in the status line. */ if (in_focus && toggled(CROSSHAIR) && cursor_col > 2 && (mvinch(status_row, fl_cursor_col) & A_CHARTEXT) == ' ') { attrset(xhattr); addch(LINEDRAW_VERT); } } static bool Redraw_action(ia_t ia, unsigned argc, const char **argv) { action_debug("Redraw", ia, argc, argv); if (check_argc("Redraw", argc, 0, 0) < 0) { return false; } if (!escaped) { onscreen_valid = FALSE; refresh(); } return true; } void ring_bell(void) { static enum { BELL_NOTHING = 0, /* do nothing */ BELL_KNOWN = 0x1, /* have we decoded the option? */ BELL_BEEP = 0x2, /* ring the annoying console bell */ BELL_FLASH = 0x4 /* flash the screen or icon */ } bell_mode = 0; if (!(bell_mode & BELL_KNOWN)) { if (appres.c3270.bell_mode != NULL) { /* * New config: wc3270.bellMode * none do nothing * beep just beep * flash just flash * beepFlash beep and flash * flashBeep beep and flash * anything else do nothing */ if (!strcasecmp(appres.c3270.bell_mode, "none")) { bell_mode = BELL_NOTHING; } else if (!strcasecmp(appres.c3270.bell_mode, "beep")) { bell_mode = BELL_BEEP; } else if (!strcasecmp(appres.c3270.bell_mode, "flash")) { bell_mode = BELL_FLASH; } else if (!strcasecmp(appres.c3270.bell_mode, "beepFlash") || !strcasecmp(appres.c3270.bell_mode, "flashBeep")) { bell_mode = BELL_BEEP | BELL_FLASH; } else { /* * Should cough up a warning here, but it's * a bit late. */ bell_mode = BELL_NOTHING; } } else { /* * No config: beep and flash. */ bell_mode = BELL_BEEP | BELL_FLASH; } /* In any case, only do this once. */ bell_mode |= BELL_KNOWN; } if ((bell_mode & BELL_FLASH) && console_window != NULL) { FLASHWINFO w; memset(&w, '\0', sizeof(FLASHWINFO)); w.cbSize = sizeof(FLASHWINFO); w.hwnd = console_window; w.dwFlags = FLASHW_ALL; w.uCount = 2; w.dwTimeout = 250; /* 1/4s */ FlashWindowEx(&w); } if (bell_mode & BELL_BEEP) { MessageBeep(-1); } } void screen_flip(void) { flipped = !flipped; screen_changed = true; screen_disp(false); } bool screen_flipped(void) { return flipped; } /* * Windows-specific Paste action, that takes advantage of the existing x3270 * instrastructure for multi-line paste. */ static bool Paste_action(ia_t ia, unsigned argc, const char **argv) { HGLOBAL hglb; LPTSTR lptstr; UINT format = CF_UNICODETEXT; action_debug(AnPaste, ia, argc, argv); if (check_argc(AnPaste, argc, 0, 0) < 0) { return false; } if (!IsClipboardFormatAvailable(format)) { return false; } if (!OpenClipboard(NULL)) { return false; } hglb = GetClipboardData(format); if (hglb != NULL) { lptstr = GlobalLock(hglb); if (lptstr != NULL) { int sl = 0; wchar_t *w = (wchar_t *)lptstr; ucs4_t *u; ucs4_t *us; int i; for (i = 0; *w != 0x0000; i++, w++) { sl++; } us = u = Malloc(sl * sizeof(ucs4_t)); /* * Expand from UCS-2 to UCS-4. * XXX: It isn't UCS-2, it's UTF-16. */ w = (wchar_t *)lptstr; for (i = 0; i < sl; i++) { *us++ = *w++; } emulate_uinput(u, sl, true); Free(u); } GlobalUnlock(hglb); } CloseClipboard(); return true; } /* Set the window title. */ static void set_console_title(const char *text, bool selecting) { if (selecting) { SetConsoleTitle(lazyaf("%s [select]", text)); } else { SetConsoleTitle(text); } } void screen_title(const char *text) { Replace(window_title, NewString(text)); set_console_title(text, selecting); } static bool Title_action(ia_t ia, unsigned argc, const char **argv) { action_debug(AnTitle, ia, argc, argv); if (check_argc(AnTitle, argc, 1, 1) < 0) { return false; } screen_title(argv[0]); return true; } static void relabel(bool ignored _is_unused) { if (appres.c3270.title != NULL) { return; } if (PCONNECTED) { char *hostname; if (profile_name != NULL) { hostname = profile_name; } else { hostname = reconnect_host; } screen_title(lazyaf("%s - wc3270", hostname)); } else { screen_title("wc3270"); } } /** * Callback for changes in screen selection state. * * @param[in] selecting true if selection in progress */ static void screen_selecting_changed(bool now_selecting) { selecting = now_selecting; set_console_title(window_title? window_title: "wc3270", selecting); } /* Get the window handle for the console. */ static HWND get_console_hwnd(void) { # define MY_BUFSIZE 1024 /* buffer size for console window titles */ HWND hwnd_found; /* returned to the caller */ char new_window_title[MY_BUFSIZE]; /* fabricated WindowTitle */ char old_window_title[MY_BUFSIZE]; /* original WindowTitle */ /* Fetch current window title. */ GetConsoleTitle(old_window_title, MY_BUFSIZE); /* Format a "unique" NewWindowTitle. */ wsprintf(new_window_title, "%d/%d", GetTickCount(), GetCurrentProcessId()); /* Change current window title. */ SetConsoleTitle(new_window_title); /* Ensure window title has been updated. */ Sleep(40); /* Look for NewWindowTitle. */ hwnd_found = FindWindow(NULL, new_window_title); /* Restore original window title. */ SetConsoleTitle(old_window_title); return hwnd_found; } /* * Read and discard a (printable) key-down event from the console. * Returns true if the key is 'q'. */ bool screen_wait_for_key(char *c) { INPUT_RECORD ir; DWORD nr; /* Get the next keyboard input event. */ do { ReadConsoleInputA(chandle, &ir, 1, &nr); } while ((ir.EventType != KEY_EVENT) || !ir.Event.KeyEvent.bKeyDown); if (c != NULL) { *c = ir.Event.KeyEvent.uChar.AsciiChar; } return (ir.Event.KeyEvent.uChar.AsciiChar == 'q') || (ir.Event.KeyEvent.uChar.AsciiChar == 'Q'); } /** * Query the screen for selections, wc3270 version. * This just defers over to the select logic. * * @param[in] baddr Buffer address. */ bool screen_selected(int baddr) { return area_is_selected(baddr, 1); } void screen_final(void) { } /** * Get the current dimensions of the console. * * @param[out] rows Returned rows * @param[out] cols Returned cols */ void get_console_size(int *rows, int *cols) { CONSOLE_SCREEN_BUFFER_INFO info; if (GetConsoleScreenBufferInfo(cohandle, &info) == 0) { *rows = 25; *cols = 80; return; } *rows = info.srWindow.Bottom - info.srWindow.Top + 1; *cols = info.srWindow.Right - info.srWindow.Left + 1; } /** * Stub for scrollbar function. * * @param[in] top Where the top of the scrollbar should be (percentage) * @param[in] shown How much of the scrollbar to show (percentage) * @param[in] saved Number of lines saved * @param[in] screen Size of a screen * @param[in] back Number of lines scrolled back */ void screen_set_thumb(float top _is_unused, float shown _is_unused, int saved _is_unused, int screen _is_unused, int back _is_unused) { } /** * Enable or disable the cursor. * * @param[in] on Enable (true) or disable (false) the cursor display. */ void enable_cursor(bool on) { cursor_enabled = on; set_cursor_size(sbuf); } /** * Send yourself an ESC, to cancel any pending input. */ void screen_send_esc(void) { if (console_window != NULL) { PostMessage(console_window, WM_KEYDOWN, VK_ESCAPE, 0); } } /* Screen output color map. */ static WORD color_attr[] = { 0, /* PC_DEFAULT */ FOREGROUND_INTENSITY | FOREGROUND_BLUE, /* PC_PROMPT */ FOREGROUND_INTENSITY | FOREGROUND_RED, /* PC_ERROR */ 0, /* PC_NORMAL */ }; /* Change the screen output color. */ void screen_color(pc_t pc) { if (!SetConsoleTextAttribute(cohandle, color_attr[pc]? color_attr[pc]: base_info.wAttributes)) { win32_perror("Can't set console text attribute"); exit(1); } } /** * Screen module registration. */ void screen_register(void) { static toggle_register_t toggles[] = { { ALT_CURSOR, toggle_altCursor, 0 }, { CURSOR_BLINK, toggle_cursorBlink, 0 }, { MONOCASE, toggle_monocase, 0 }, { SHOW_TIMING, toggle_showTiming, 0 }, { UNDERSCORE, toggle_underscore, 0 }, { MARGINED_PASTE, NULL, 0 }, { OVERLAY_PASTE, NULL, 0 }, { VISIBLE_CONTROL, toggle_visibleControl, 0 }, { CROSSHAIR, toggle_crosshair, 0 }, { TYPEAHEAD, NULL, 0 } }; static action_table_t screen_actions[] = { { AnPaste, Paste_action, ACTION_KE }, { AnRedraw, Redraw_action, ACTION_KE }, { AnTitle, Title_action, ACTION_KE } }; /* Register the toggles. */ register_toggles(toggles, array_count(toggles)); /* Register the actions. */ register_actions(screen_actions, array_count(screen_actions)); /* Register for selection state changes. */ register_schange(ST_SELECTING, screen_selecting_changed); } suite3270-4.1/wc3270/select.c000066400000000000000000000653311413735575200154170ustar00rootroot00000000000000/* * Copyright (c) 2013-2016, 2018, 2020 Paul Mattes. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of Paul Mattes nor his contributors may be used * to endorse or promote products derived from this software without * specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. */ /* * select.c * A Windows console-based 3270 Terminal Emulator * Screen selections */ #include "globals.h" #include #include #include "3270ds.h" #include "appres.h" #include "actions.h" #include "cscreen.h" #include "ctlr.h" #include "ctlrc.h" #include "kybd.h" #include "names.h" #include "nvt.h" #include "popups.h" #include "screen.h" #include "toggles.h" #include "toupper.h" #include "trace.h" #include "unicodec.h" #include "utils.h" #include "winvers.h" #include "wselectc.h" #include "selectc.h" /* Unicode DBCS (double-width) blank. */ #define IDEOGRAPHIC_SPACE 0x3000 #define HTTP_PREFIX "http://" #define HTTPS_PREFIX "https://" static char *s_pending; static char *s_onscreen; /* Event names. */ static char *event_name[] = { "BUTTON_DOWN", "RIGHT_BUTTON_DOWN", "BUTTON_UP", "MOVE", "DOUBLE_CLICK" }; /* If true, we are rubber-banding a selection right now. */ static bool rubber_banding = false; /* If true, we have a stored start point. */ static bool select_started = false; /* If true, the current selection was from a double-click. */ static bool word_selected = false; /* Start of selected area. */ static int select_start_row; static int select_start_col; /* End of selected area. */ static int select_end_row; static int select_end_col; /* True if the mouse moved while the button was down. */ static bool moved; /* * Initialize the selection logic, given the maximum screen dimensions. */ void select_init(unsigned max_rows, unsigned max_cols) { s_pending = Malloc(max_rows * max_cols); s_onscreen = Malloc(max_rows * max_cols); unselect(0, max_rows * max_cols); memset(s_onscreen, 0, max_rows * max_cols); } /* * Inform the selection logic of a screen clear. * This does not include redisplaying the screen. */ void unselect(int baddr, int len) { /* * Technically, only the specified area has changed, but intuitively, * the whole selected rectangle has. */ rubber_banding = false; select_started = false; word_selected = false; memset(s_pending, 0, ROWS * COLS); screen_changed = true; st_changed(ST_SELECTING, false); } static void reselect(bool generate_event) { bool any = false; /* Clear out the current selection. */ memset(s_pending, 0, ROWS * COLS); /* Fill in from start to end, which may be backwards. */ if (ever_3270) { /* Rectangular selections. */ int rowA, colA, rowZ, colZ; int row, col; rowA = (select_start_row < select_end_row)? select_start_row: select_end_row; rowZ = (select_start_row > select_end_row)? select_start_row: select_end_row; colA = (select_start_col < select_end_col)? select_start_col: select_end_col; colZ = (select_start_col > select_end_col)? select_start_col: select_end_col; for (row = rowA; row <= rowZ; row++) { for (col = colA; col <= colZ; col++) { s_pending[(row * COLS) + col] = 1; any = true; } } } else { /* Continuous selections. */ int baddrA = (select_start_row * COLS) + select_start_col; int baddrZ = (select_end_row * COLS) + select_end_col; int baddr; if (baddrA > baddrZ) { baddr = baddrZ; baddrZ = baddrA; baddrA = baddr; } for (baddr = baddrA; baddr <= baddrZ; baddr++) { s_pending[baddr] = 1; any = true; } } screen_changed = true; if (generate_event && any) { st_changed(ST_SELECTING, true); } } /* * Returns true if the character at the given location is displayed as a * blank. */ static bool is_blank(int baddr) { ucs4_t u; unsigned char fa; int xbaddr; int c; /* Check for FA or blanked field. */ fa = get_field_attribute(baddr); if (ea_buf[baddr].fa || FA_IS_ZERO(fa)) { return true; } /* Handle NVT-mode text. */ if ((u = ea_buf[baddr].ucs4)) { if (IS_LEFT(baddr)) { return u == IDEOGRAPHIC_SPACE; } else if (IS_RIGHT(baddr)) { xbaddr = baddr; INC_BA(xbaddr); return ea_buf[xbaddr].ucs4 == IDEOGRAPHIC_SPACE; } else { return u == ' ' || u == 0xa0; } } /* Translate to Unicode, exactly as we would display it. */ if (IS_LEFT(baddr)) { xbaddr = baddr; DEC_BA(xbaddr); c = ebcdic_to_unicode((ea_buf[xbaddr].ec << 8) | ea_buf[baddr].ec, CS_BASE, EUO_NONE); if (c == 0 || c == IDEOGRAPHIC_SPACE) { return true; } } else if (IS_RIGHT(baddr)) { xbaddr = baddr; INC_BA(xbaddr); c = ebcdic_to_unicode((ea_buf[baddr].ec << 8) | ea_buf[xbaddr].ec, CS_BASE, EUO_NONE); if (c == 0 || c == IDEOGRAPHIC_SPACE) { return true; } } else { c = ebcdic_to_unicode(ea_buf[baddr].ec, ea_buf[baddr].cs, appres.c3270.ascii_box_draw? EUO_ASCII_BOX: 0); if (c == 0 || c == ' ') { return true; } } return false; } /* * Test a character for being valid in a URL. */ static bool is_url_char(ucs4_t u) { return u > ' ' && u <= 0xff && strchr("abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789.:@[]/", u) != NULL; } /* * Test a screen location for holding a valid URL character. */ static bool is_url_ea(int baddr) { if (ea_buf[baddr].cs != CS_BASE) { return false; } return is_url_char(ea_buf[baddr].ucs4? ea_buf[baddr].ucs4: ebcdic_to_unicode(ea_buf[baddr].ec, ea_buf[baddr].cs, EUO_NONE)); } /* * Test a double-click for a URL, and execute it if found. * * Returns true if a URL was found. */ static bool url_click(int row, int col) { int baddr = (row * COLS) + col; int first, last; char *url; int i; char *command; int rc; if (!is_url_ea(baddr)) { return false; } /* Look left, including NVT-mode wrapping. */ first = baddr; while (true) { if (!(first % COLS)) { if (!first) { break; } if (!(ea_buf[first - 1].gr & GR_WRAP)) { break; } } if (!is_url_ea(first - 1)) { break; } first--; } /* Look right, including NVT-mode wrapping. */ last = baddr; while (true) { if (!is_url_ea(last)) { last--; break; } if (!((last + 1) % COLS)) { if (last == ROWS * COLS) { break; } if (!(ea_buf[last].gr & GR_WRAP)) { break; } } last++; } /* Extract the string. */ url = Malloc(last - first + 2); for (i = 0; i < last - first + 1; i++) { url[i] = (ea_buf[first + i].ucs4? ea_buf[first + i].ucs4: ebcdic_to_unicode(ea_buf[first + i].ec, ea_buf[first + i].cs, EUO_NONE)) & 0xff; } url[i] = '\0'; if (strncmp(url, HTTP_PREFIX, strlen(HTTP_PREFIX)) && strncmp(url, HTTPS_PREFIX, strlen(HTTPS_PREFIX))) { Free(url); return false; } /* Launch the browser. */ command = xs_buffer("start \"browser\" \"%s\"", url); Free(url); vtrace("Starting URL: %s\n", url); rc = system(command); if (rc != 0) { popup_an_error("URL failed, return code %d", rc); } Free(command); /* Get back mouse events */ screen_system_fixup(); return true; } /* * Find the starting and ending columns of a 'word'. * * The rules, from Windows, are a bit strange. * A 'word' is a block of non-blank text, plus one blank to the right. * So if you double-click on a blank, you get just the blank, unless it is to * the right of a non-blank, in which case you get the word to the left as * well. */ static void find_word_end(int row, int col, int *start_rowp, int *start_colp, int *end_rowp, int *end_colp) { int baddr = (row * COLS) + col; assert(row <= ROWS); assert(col <= COLS); *start_rowp = row; *end_rowp = row; /* * If on a blank now, return just that, or that plus the word to the * left. */ if (is_blank(baddr)) { *end_colp = col; while (col && !is_blank((row * COLS) + (col - 1))) { col--; } while (!col && row && (ea_buf[(row * COLS) - 1].gr & GR_WRAP) && !is_blank((row * COLS) - 1)) { row--; col = COLS - 1; while (col && !is_blank((row * COLS) + (col - 1))) { col--; } } *start_rowp = row; *start_colp = col; return; } /* Search left. */ while (col && !is_blank((row * COLS) + (col - 1))) { col--; } while (!col && row && (ea_buf[(row * COLS) - 1].gr & GR_WRAP) && !is_blank((row * COLS) - 1)) { row--; col = COLS - 1; while (col && !is_blank((row * COLS) + (col - 1))) { col--; } } *start_rowp = row; *start_colp = col; /* Search right. */ while (col < (COLS - 1) && !is_blank((row * COLS) + (col + 1))) { col++; } while (col == (COLS - 1) && (row < (ROWS - 1)) && (ea_buf[(row * COLS) + col].gr & GR_WRAP) && !is_blank(((row + 1) * COLS))) { row++; col = 0; while (col < (COLS - 1) && !is_blank((row * COLS) + (col + 1))) { col++; } } if (col < (COLS -1)) { col++; } *end_rowp = row; *end_colp = col; } /* * Pass a mouse event to the select logic. * * Only the essentials of the event are passed in -- the row and column in * display coordinates (not screen coordinates), and the status of the left * mouse button. select_event() infers the user's actions from that. * * Returns true if the event was consumed, or false if it was a cursor-move * event (button up without movement). */ bool select_event(unsigned row, unsigned col, select_event_t event, bool shift) { static int click_cursor_addr = -1; assert((int)row <= ROWS); assert((int)col <= COLS); vtrace(" select_event(%u,%u,%s,%s)\n", row, col, event_name[event], shift? "shift": "no-shift"); if (!rubber_banding) { switch (event) { case SE_BUTTON_DOWN: if (shift && select_started) { /* Extend selection. */ vtrace(" Extending selection\n"); } else { vtrace(" New selection\n"); select_start_row = row; select_start_col = col; /* If there was a previous selection, turn it off. */ st_changed(ST_SELECTING, false); } rubber_banding = true; select_started = true; word_selected = false; select_end_row = row; select_end_col = col; reselect(false); moved = false; break; case SE_DOUBLE_CLICK: vtrace(" Word select\n"); if (toggled(SELECT_URL) && url_click(row, col)) { if (click_cursor_addr != -1) { /* Move the cursor back from the first click. */ cursor_move(click_cursor_addr); click_cursor_addr = -1; } break; } rubber_banding = false; find_word_end(row, col, &select_start_row, &select_start_col, &select_end_row, &select_end_col); word_selected = true; reselect(true); /* If we moved the cursor for the first click, move it back now. */ if (click_cursor_addr != -1) { cursor_move(click_cursor_addr); click_cursor_addr = -1; } break; case SE_RIGHT_BUTTON_DOWN: if (memchr(s_pending, 1, COLS * ROWS) == NULL) { /* No selection pending: Paste. */ vtrace(" Paste\n"); run_action(AnPaste, IA_KEYMAP, NULL, NULL); } else { /* Selection pending: Copy. */ vtrace(" Copy\n"); run_action(AnCopy, IA_KEYMAP, NULL, NULL); } break; default: break; } } else { /* A selection is pending (rubber-banding). */ switch (event) { case SE_BUTTON_UP: rubber_banding = false; word_selected = false; if (row == select_start_row && col == select_start_col && !moved) { /* * No movement. Call it a cursor move, * but they might extend it later. */ s_pending[(row * COLS) + col] = 0; screen_changed = true; if (ever_3270) { vtrace(" Cursor move\n"); click_cursor_addr = cursor_addr; } /* We did not consume the event. */ return false; } vtrace(" Finish selection\n"); select_end_row = row; select_end_col = col; reselect(true); moved = false; break; case SE_MOVE: /* Extend. */ vtrace(" Extend\n"); select_end_row = row; select_end_col = col; reselect(true); moved = true; break; default: break; } } /* We consumed the event. */ return true; } /** * Handle a Return key (usually marked Enter) for completing a select/copy * action. * * @return true if key consumed, false otherwise. */ bool select_return_key(void) { if (memchr(s_pending, 1, COLS * ROWS) != NULL) { run_action(AnCopy, IA_KEYMAP, NULL, NULL); return true; } else { return false; } } /* * Unicode text version of copy-to-clipboard. */ static size_t copy_clipboard_unicode(LPTSTR lptstr) { int r, c; int any_row = -1; int ns = 0; bool last_cjk_space = false; wchar_t *bp = (wchar_t *)lptstr; enum dbcs_state d; ucs4_t u; unsigned char fa; /* Fill in the buffer. */ fa = get_field_attribute(0); for (r = 0; r < ROWS; r++) { for (c = 0; c < COLS; c++) { int baddr = (r * COLS) + c; if (ea_buf[baddr].fa) { fa = ea_buf[baddr].fa; } if (!s_pending[baddr]) { continue; } if (any_row >= 0 && any_row != r && !(ea_buf[baddr - 1].gr & GR_WRAP)) { *bp++ = '\r'; *bp++ = '\n'; ns = 0; last_cjk_space = false; } any_row = r; d = ctlr_dbcs_state(baddr); if (is_nvt(&ea_buf[baddr], appres.c3270.ascii_box_draw, &u)) { if (!IS_RIGHT(d)) { if (!IS_LEFT(d) && toggled(MONOCASE)) { u = u_toupper(u); } } else { continue; } } else { if (IS_LEFT(d)) { int xbaddr = baddr; if (ea_buf[baddr].fa || FA_IS_ZERO(fa)) { u = IDEOGRAPHIC_SPACE; } else { xbaddr = baddr; INC_BA(xbaddr); u = ebcdic_to_unicode( (ea_buf[baddr].ec << 8) | ea_buf[xbaddr].ec, CS_BASE, EUO_NONE); if (u == 0) { u = IDEOGRAPHIC_SPACE; } } } else if (!IS_RIGHT(d)) { if (ea_buf[baddr].fa || FA_IS_ZERO(fa)) { u = ' '; } else { u = ebcdic_to_unicode(ea_buf[baddr].ec, ea_buf[baddr].cs, appres.c3270.ascii_box_draw? EUO_ASCII_BOX: 0); if (u == 0) { u = ' '; } if (toggled(MONOCASE)) { u = u_toupper(u); } } } else { continue; } } if (u == ' ') { if (!word_selected || last_cjk_space) { *bp++ = ' '; } else { ns++; } } else { while (ns) { *bp++ = ' '; ns--; } *bp++ = u; last_cjk_space = (u == IDEOGRAPHIC_SPACE); } } } *bp++ = 0; return bp - (wchar_t *)lptstr; } /* * OEM text version of copy-to-clipboard. */ static size_t copy_clipboard_oemtext(LPTSTR lptstr) { int r, c; int any_row = -1; int ns = 0; bool last_cjk_space = false; char *bp = lptstr; enum dbcs_state d; wchar_t ch; ucs4_t u; unsigned char fa; /* Fill in the buffer. */ fa = get_field_attribute(0); for (r = 0; r < ROWS; r++) { for (c = 0; c < COLS; c++) { int baddr = (r * COLS) + c; if (ea_buf[baddr].fa) { fa = ea_buf[baddr].fa; } if (!s_pending[baddr]) { continue; } if (any_row >= 0 && any_row != r && !(ea_buf[baddr - 1].gr & GR_WRAP)) { *bp++ = '\r'; *bp++ = '\n'; ns = 0; last_cjk_space = false; } any_row = r; d = ctlr_dbcs_state(baddr); if (is_nvt(&ea_buf[baddr], appres.c3270.ascii_box_draw, &u)) { /* NVT-mode text */ if (IS_LEFT(d)) { if (ea_buf[baddr].fa || FA_IS_ZERO(fa)) { u = IDEOGRAPHIC_SPACE; } while (ns) { *bp++ = ' '; ns--; } ch = u; bp += WideCharToMultiByte(CP_OEMCP, 0, &ch, 1, bp, 1, "?", NULL); last_cjk_space = (u == IDEOGRAPHIC_SPACE); } else if (!IS_RIGHT(d)) { if (ea_buf[baddr].fa || FA_IS_ZERO(fa)) { u = ' '; } else if (toggled(MONOCASE)) { u = u_toupper(u); } if (u == ' ') { if (!word_selected || last_cjk_space) { *bp++ = ' '; } else { ns++; } } else { while (ns) { *bp++ = ' '; ns--; } ch = u; bp += WideCharToMultiByte(CP_OEMCP, 0, &ch, 1, bp, 1, "?", NULL); last_cjk_space = false; } } } else { /* 3270-mode text */ if (IS_LEFT(d)) { int xbaddr = baddr; if (ea_buf[baddr].fa || FA_IS_ZERO(fa)) { u = IDEOGRAPHIC_SPACE; } else { xbaddr = baddr; INC_BA(xbaddr); u = ebcdic_to_unicode( (ea_buf[baddr].ec << 8) | ea_buf[xbaddr].ec, CS_BASE, EUO_NONE); if (u == 0) { u = IDEOGRAPHIC_SPACE; } } while (ns) { *bp++ = ' '; ns--; } ch = u; bp += WideCharToMultiByte(CP_OEMCP, 0, &ch, 1, bp, 1, "?", NULL); last_cjk_space = (u == IDEOGRAPHIC_SPACE); } else if (!IS_RIGHT(d)) { if (ea_buf[baddr].fa || FA_IS_ZERO(fa)) { u = ' '; } else { u = ebcdic_to_unicode(ea_buf[baddr].ec, ea_buf[baddr].cs, appres.c3270.ascii_box_draw? EUO_ASCII_BOX: 0); if (u == 0) { u = ' '; } if (toggled(MONOCASE)) { u = u_toupper(u); } } if (u == ' ') { if (!word_selected || last_cjk_space) { *bp++ = ' '; } else { ns++; } } else { while (ns) { *bp++ = ' '; ns--; } ch = u; bp += WideCharToMultiByte(CP_OEMCP, 0, &ch, 1, bp, 1, "?", NULL); last_cjk_space = false; } } } } } *bp++ = 0; return bp - lptstr; } /* * 8-bit text version of clipboard copy. */ static size_t copy_clipboard_text(LPTSTR lptstr) { int r, c; int any_row = -1; int ns = 0; char *bp = lptstr; enum dbcs_state d; unsigned char fa; /* Fill in the buffer. */ fa = get_field_attribute(0); for (r = 0; r < ROWS; r++) { for (c = 0; c < COLS; c++) { int baddr = (r * COLS) + c; char buf[16]; size_t nc; ucs4_t u; if (ea_buf[baddr].fa) { fa = ea_buf[baddr].fa; } if (!s_pending[baddr]) { continue; } if (any_row >= 0 && any_row != r && !(ea_buf[baddr - 1].gr & GR_WRAP)) { *bp++ = '\r'; *bp++ = '\n'; ns = 0; } any_row = r; d = ctlr_dbcs_state(baddr); if (IS_LEFT(d) || IS_RIGHT(d) || ea_buf[baddr].fa || FA_IS_ZERO(fa)) { u = ' '; } else { if (is_nvt(&ea_buf[baddr], appres.c3270.ascii_box_draw, &u)) { nc = unicode_to_multibyte(u, buf, sizeof(buf)); } else { nc = ebcdic_to_multibyte_x(ea_buf[baddr].ec, ea_buf[baddr].cs, buf, sizeof(buf), EUO_BLANK_UNDEF | (appres.c3270.ascii_box_draw? EUO_ASCII_BOX: 0), &u); } if (nc == 2) { u = buf[0]; } else { u = ' '; } if (toggled(MONOCASE)) { u = u_toupper(u); } } if (u == ' ' && word_selected) { ns++; } else { while (ns) { *bp++ = ' '; ns--; } *bp++ = u; } } } *bp++ = 0; return bp - lptstr; } /* * Common code for Copy and Cut. */ void copy_cut_action(bool cutting) { size_t sl; HGLOBAL hglb; LPTSTR lptstr; int r, c; int any_row = -1; #define NUM_TYPES 3 struct { const char *name; int type; size_t esize; size_t (*copy_fn)(LPTSTR); } types[NUM_TYPES] = { { "Unicode", CF_UNICODETEXT, sizeof(wchar_t), copy_clipboard_unicode }, { "OEM text", CF_OEMTEXT, sizeof(char), copy_clipboard_oemtext }, { "text", CF_TEXT, sizeof(char), copy_clipboard_text }, }; int i; /* Make sure we have something to do. */ if (memchr(s_pending, 1, COLS * ROWS) == NULL) { return; } vtrace("Word %sselected\n", word_selected? "": "not "); /* Open the clipboard. */ if (!OpenClipboard(console_window)) { return; } EmptyClipboard(); /* Compute the size of the output buffer. */ sl = 0; for (r = 0; r < ROWS; r++) { for (c = 0; c < COLS; c++) { int baddr = (r * COLS) + c; if (s_pending[baddr]) { if (any_row >= 0 && any_row != r) { sl += 2; /* CR/LF */ } any_row = r; sl++; } } } sl++; /* NUL */ /* Copy it out in the formats we understand. */ for (i = 0; i < NUM_TYPES; i++) { /* Allocate the buffer. */ hglb = GlobalAlloc(GMEM_MOVEABLE, sl * types[i].esize); if (hglb == NULL) { break; } /* Copy the screen data to it. */ lptstr = GlobalLock(hglb); sl = (types[i].copy_fn)(lptstr); GlobalUnlock(hglb); /* Place the handle on the clipboard. */ SetClipboardData(types[i].type, hglb); vtrace("Copy(): Put %ld %s characters on the clipboard\n", (long)sl, types[i].name); } CloseClipboard(); /* Do the 'cutting' part of 'Cut'. */ if (cutting) { unsigned char fa; int baddr; int ba2; char *sp_save; /* * Save the contents of s_pending and use the copy instead of * s_pending, because the first call to ctlr_add() will zero * it. */ sp_save = Malloc(ROWS * COLS); memcpy(sp_save, s_pending, ROWS * COLS); fa = get_field_attribute(0); for (baddr = 0; baddr < ROWS * COLS; baddr++) { if (ea_buf[baddr].fa) { fa = ea_buf[baddr].fa; } else { if (!sp_save[baddr] || FA_IS_PROTECTED(fa) || ea_buf[baddr].ec == EBC_so || ea_buf[baddr].ec == EBC_si) { continue; } switch (ctlr_dbcs_state(baddr)) { case DBCS_NONE: case DBCS_SB: ctlr_add(baddr, EBC_space, ea_buf[baddr].cs); break; case DBCS_LEFT: ctlr_add(baddr, EBC_space, ea_buf[baddr].cs); ba2 = baddr; INC_BA(ba2); ctlr_add(ba2, EBC_space, ea_buf[baddr].cs); break; case DBCS_RIGHT: ba2 = baddr; DEC_BA(ba2); ctlr_add(ba2, EBC_space, ea_buf[baddr].cs); ctlr_add(baddr, EBC_space, ea_buf[baddr].cs); break; default: break; } mdt_set(baddr); } } Free(sp_save); } /* Unselect. */ unselect(0, ROWS * COLS); } /* * The Copy() action, generally mapped onto ^C. */ static bool Copy_action(ia_t ia, unsigned argc, const char **argv) { action_debug(AnCopy, ia, argc, argv); if (check_argc(AnCopy, argc, 0, 0) < 0) { return false; } copy_cut_action(false); return true; } /* * The Cut() action, generally mapped onto ^X. */ static bool Cut_action(ia_t ia, unsigned argc, const char **argv) { action_debug(AnCut, ia, argc, argv); if (check_argc(AnCut, argc, 0, 0) < 0) { return false; } copy_cut_action(true); return true; } /* * Return true if a cell in the specified region is out of sync with the * screen with regard to selection. */ bool select_changed(unsigned row, unsigned col, unsigned rows, unsigned cols) { unsigned r; assert((int)(row + rows) <= ROWS); assert((int)(col + cols) <= COLS); for (r = row; r < row + rows; r++) { if (memcmp(&s_pending [(r * COLS) + col], &s_onscreen[(r * COLS) + col], cols)) { return true; } } return false; } /* * Return TRUE if any cell in a region is selected. */ bool area_is_selected(int baddr, int len) { return memchr(&s_pending[baddr], 1, len) != NULL; } /* * Synchronize the pending and on-screen select state (copies pending to * on-screen). */ void select_sync(unsigned row, unsigned col, unsigned rows, unsigned cols) { unsigned r; assert((int)(row + rows) <= ROWS); assert((int)(col + cols) <= COLS); for (r = row; r < row + rows; r++) { memcpy(&s_onscreen[(r * COLS) + col], &s_pending [(r * COLS) + col], cols); } } /* * Add the current location to the selection. Called from the four SelectXxx * actions. */ static void keyboard_cursor_select(void) { if (select_started) { /* Extend selection. */ vtrace(" Extending selection\n"); } else { vtrace(" New selection\n"); select_start_row = cursor_addr / COLS; select_start_col = cursor_addr % COLS; } /*rubber_banding = true;*/ select_started = true; word_selected = false; select_end_row = cursor_addr / COLS; select_end_col = cursor_addr % COLS; reselect(true); } /* * SelectLeft adds the current column to the selection and moves the cursor * to the left. */ static bool SelectLeft_action(ia_t ia, unsigned argc, const char **argv) { action_debug(AnSelectLeft, ia, argc, argv); if (check_argc(AnSelectLeft, argc, 0, 0) < 0) { return false; } keyboard_cursor_select(); Left_action(ia, 0, NULL); return true; } /* * SelectRight adds the current column to the selection and moves the cursor * to the right. */ static bool SelectRight_action(ia_t ia, unsigned argc, const char **argv) { action_debug(AnSelectRight, ia, argc, argv); if (check_argc(AnSelectRight, argc, 0, 0) < 0) { return false; } keyboard_cursor_select(); Right_action(ia, 0, NULL); return true; } /* * SelectUp adds the current row to the selection and moves the cursor up. */ static bool SelectUp_action(ia_t ia, unsigned argc, const char **argv) { action_debug(AnSelectUp, ia, argc, argv); if (check_argc(AnSelectUp, argc, 0, 0) < 0) { return false; } keyboard_cursor_select(); Up_action(ia, 0, NULL); return true; } /* * SelectDown adds the current row to the selection and moves the cursor down. */ static bool SelectDown_action(ia_t ia, unsigned argc, const char **argv) { action_debug(AnSelectDown, ia, argc, argv); if (check_argc(AnSelectDown, argc, 0, 0) < 0) { return false; } keyboard_cursor_select(); Down_action(ia, 0, NULL); return true; } /** * Selection module registration. */ void select_register(void) { static action_table_t select_actions[] = { { AnCopy, Copy_action, ACTION_KE }, { AnCut, Cut_action, ACTION_KE }, { AnSelectDown, SelectDown_action, ACTION_KE }, { AnSelectLeft, SelectLeft_action, ACTION_KE }, { AnSelectRight,SelectRight_action, ACTION_KE }, { AnSelectUp, SelectUp_action, ACTION_KE } }; static toggle_register_t toggles[] = { { SELECT_URL, NULL, 0 } }; register_actions(select_actions, array_count(select_actions)); register_toggles(toggles, array_count(toggles)); } suite3270-4.1/wc3270/shortcut.c000066400000000000000000000176611413735575200160160ustar00rootroot00000000000000/* * Copyright (c) 1996-2009, 2015-2017, 2020 Paul Mattes. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of Paul Mattes nor his contributors may be used * to endorse or promote products derived from this software without * specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. */ /* * shortcut.c * A Windows console-based 3270 Terminal Emulator * Shell link creation */ #if !defined(_WIN32) /*[*/ # error For Windows only. #endif /*]*/ #include "globals.h" #include "shortcutc.h" #include "winvers.h" /* GUID for Windows 10 v2 console properties. */ #define GUID_DATA1 0x0c570607 #define GUID_DATA2 0x0396 #define GUID_DATA3 0x43de #define GUID_DATA4 0x9d, 0x61, 0xe3, 0x21, 0xd7, 0xdf, 0x50, 0x26 #define PID_FORCE_V2 1 /* Force V2 console mode. */ #define PID_DISABLE_CTRL_KEYS 4 /* Disable control key shortcuts */ /* * create_link - uses the shell's IShellLink and IPersistFile interfaces to * create and store a shortcut to the specified object. * Returns the result of calling the member functions of the interfaces. * path_obj - address of a buffer containing the path of the object * path_link - address of a buffer containing the path where the shell link * is to be stored * desc - address of a buffer containing the description of the shell link */ HRESULT create_link(LPCSTR path_obj, LPSTR path_link, LPSTR desc, LPSTR args, LPSTR dir, int rows, int cols, wchar_t *font, int pointsize, int codepage) { HRESULT hres; int initialized; IShellLink* psl = NULL; IShellLinkDataList* psldl = NULL; IPersistFile* ppf = NULL; IPropertyStore* pps = NULL; NT_CONSOLE_PROPS p; WORD wsz[MAX_PATH]; hres = CoInitialize(NULL); if (!SUCCEEDED(hres)) { fprintf(stderr, "create_link: CoInitialize failed: %ld\n", hres); goto out; } initialized = 1; /* Get a pointer to the IShellLink interface. */ hres = CoCreateInstance(&CLSID_ShellLink, NULL, CLSCTX_INPROC_SERVER, &IID_IShellLink, (LPVOID *)&psl); if (!SUCCEEDED(hres)) { fprintf(stderr, "create_link: CoCreateInstance failed: %ld\n", hres); goto out; } /* Set the path to the shortcut target, and add the description. */ psl->lpVtbl->SetPath(psl, path_obj); if (desc) { psl->lpVtbl->SetDescription(psl, desc); } if (args) { psl->lpVtbl->SetArguments(psl, args); } if (dir) { psl->lpVtbl->SetWorkingDirectory(psl, dir); } /* Add the icon. */ psl->lpVtbl->SetIconLocation(psl, path_obj, 0); hres = psl->lpVtbl->QueryInterface(psl, &IID_IShellLinkDataList, (void **)&psldl); if (!SUCCEEDED(hres)) { fprintf(stderr, "create_link: QueryInterface(DataList) failed: %ld\n", hres); goto out; } memset(&p, '\0', sizeof(NT_CONSOLE_PROPS)); p.cbSize = sizeof(p); p.dwSignature = NT_CONSOLE_PROPS_SIG; p.wFillAttribute = 7; /* ? */ p.wPopupFillAttribute = 245; /* ? */ p.dwScreenBufferSize.X = cols; p.dwScreenBufferSize.Y = 0x012c; p.dwWindowSize.X = cols; p.dwWindowSize.Y = rows; p.dwWindowOrigin.X = 0; p.dwWindowOrigin.Y = 0; p.nFont = 0; p.nInputBufferSize = 0; p.dwFontSize.X = 0; p.dwFontSize.Y = pointsize? pointsize: 12; p.uFontFamily = 0; /* FF_DONTCARE */ p.uFontWeight = 400; /* FW_NORMAL */ wcsncpy(p.FaceName, font, LF_FACESIZE - 1); p.FaceName[LF_FACESIZE - 1] = 0; p.uCursorSize = 100; p.bFullScreen = 0; p.bQuickEdit = 0; p.bInsertMode = 1; p.bAutoPosition = 1; p.uHistoryBufferSize = 0x32; p.uNumberOfHistoryBuffers = 4; p.bHistoryNoDup = 0; p.ColorTable[0] = 0; p.ColorTable[1] = 0x00800000; p.ColorTable[2] = 0x00008000; p.ColorTable[3] = 0x00808000; p.ColorTable[4] = 0x00000080; p.ColorTable[5] = 0x00800080; p.ColorTable[6] = 0x00008080; p.ColorTable[7] = 0x00c0c0c0; p.ColorTable[8] = 0x00808080; p.ColorTable[9] = 0x00ff8000; p.ColorTable[10] = 0x0000ff00; p.ColorTable[11] = 0x00ffff00; p.ColorTable[12] = 0x000a0adc; p.ColorTable[13] = 0x00ff00ff; p.ColorTable[14] = 0x0000ffff; p.ColorTable[15] = 0x00ffffff; hres = psldl->lpVtbl->AddDataBlock(psldl, &p); if (!SUCCEEDED(hres)) { fprintf(stderr, "create_link: AddDataBlock(NT_CONSOLE_PROPS) failed: " "%ld\n", hres); goto out; } if (codepage) { NT_FE_CONSOLE_PROPS pfe; memset(&pfe, '\0', sizeof(pfe)); pfe.cbSize = sizeof(pfe); pfe.dwSignature = NT_FE_CONSOLE_PROPS_SIG; pfe.uCodePage = codepage; hres = psldl->lpVtbl->AddDataBlock(psldl, &pfe); if (!SUCCEEDED(hres)) { fprintf(stderr, "create_link: AddDataBlock(NT_FE_CONSOLE_PROPS) " "failed: %ld\n", hres); goto out; } } /* * On Windows 10, add (just) the v2 console properties we need. */ if (IsWindowsVersionOrGreater(10, 0, 0)) { PROPVARIANT propvarBool; PROPERTYKEY key; static unsigned char guid_bytes[] = { GUID_DATA4 }; hres = psl->lpVtbl->QueryInterface(psl, &IID_IPropertyStore, (void **)&pps); if (!SUCCEEDED(hres)) { fprintf(stderr, "create_link: QueryInterface(PropertyStore) " "failed: %ld\n", hres); goto out; } /* Set a Boolean property to True. */ propvarBool.vt = VT_BOOL; propvarBool.boolVal = VARIANT_TRUE; /* Set up the GUID for the key. */ key.fmtid.Data1 = GUID_DATA1; key.fmtid.Data2 = GUID_DATA2; key.fmtid.Data3 = GUID_DATA3; memcpy(key.fmtid.Data4, guid_bytes, sizeof(key.fmtid.Data4)); /* Set 'force v2' to true. */ key.pid = PID_FORCE_V2; pps->lpVtbl->SetValue(pps, &key, &propvarBool); /* Set 'ctrl keys disable' to true. */ key.pid = PID_DISABLE_CTRL_KEYS; pps->lpVtbl->SetValue(pps, &key, &propvarBool); /* Commit the changes. */ hres = pps->lpVtbl->Commit(pps); if (!SUCCEEDED(hres)) { fprintf(stderr, "create_link: PropertyStore Commit() failed: " "%ld\n", hres); goto out; } } /* * Query IShellLink for the IPersistFile interface for saving the * shortcut in persistent storage. */ hres = psl->lpVtbl->QueryInterface(psl, &IID_IPersistFile, (void **)&ppf); if (!SUCCEEDED(hres)) { fprintf(stderr, "create_link: QueryInterface(Persist) failed: %ld\n", hres); goto out; } /* Ensure that the string is ANSI. */ MultiByteToWideChar(CP_ACP, 0, path_link, -1, wsz, MAX_PATH); /* Save the link by calling IPersistFile::Save. */ hres = ppf->lpVtbl->Save(ppf, wsz, TRUE); if (!SUCCEEDED(hres)) { fprintf(stderr, "create_link: Save failed: %ld\n", hres); goto out; } out: if (ppf != NULL) { ppf->lpVtbl->Release(ppf); } if (psldl != NULL) { psldl->lpVtbl->Release(psldl); } if (psl != NULL) { psl->lpVtbl->Release(psl); } if (pps != NULL) { pps->lpVtbl->Release(pps); } if (initialized) { CoUninitialize(); } return hres; } suite3270-4.1/wc3270/shortcutc.h000066400000000000000000000032461413735575200161600ustar00rootroot00000000000000/* * Copyright (c) 2006-2009, 2014-2015 Paul Mattes. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of Paul Mattes nor his contributors may be used * to endorse or promote products derived from this software without * specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. */ HRESULT create_link(LPCSTR path_obj, LPSTR path_link, LPSTR desc, LPSTR args, LPSTR dir, int rows, int cols, wchar_t *font, int pointsize, int codepage); suite3270-4.1/wc3270/version.txt000077700000000000000000000000001413735575200220762../Common/version.txtustar00rootroot00000000000000suite3270-4.1/wc3270/wc3270-32.zipit000066400000000000000000000004211413735575200162110ustar00rootroot00000000000000wc3270/README-zip.txt wc3270/NO-INSTALL.txt obj/win32/wc3270/wc3270.exe obj/win32/wc3270/wc3270wiz.exe obj/win32/wpr3287/pr3287.exe obj/win32/wpr3287/wpr3287.exe obj/win32/ws3270/s3270.exe obj/win32/ws3270/ws3270.exe obj/win32/x3270if/x3270if.exe obj/win32/wc3270/catf.exe suite3270-4.1/wc3270/wc3270-64.zipit000066400000000000000000000004211413735575200162160ustar00rootroot00000000000000wc3270/README-zip.txt wc3270/NO-INSTALL.txt obj/win64/wc3270/wc3270.exe obj/win64/wc3270/wc3270wiz.exe obj/win64/wpr3287/pr3287.exe obj/win64/wpr3287/wpr3287.exe obj/win64/ws3270/s3270.exe obj/win64/ws3270/ws3270.exe obj/win64/x3270if/x3270if.exe obj/win64/wc3270/catf.exe suite3270-4.1/wc3270/wc3270.h000066400000000000000000000032511413735575200150630ustar00rootroot00000000000000/* * Copyright (c) 2015, 2020 Paul Mattes. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the names of Paul Mattes nor the names of his contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO * EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * wc3270.h * A curses-based 3270 Terminal Emulator * Declarations for functions that are exclusive to wc3270. */ void start_wizard(const char *session); suite3270-4.1/wc3270/wc3270.ico000077500000000000000000000410761413735575200154200ustar00rootroot00000000000000@@ (B(@€ •¦²­·”¥±aq|Rcs~›j{‰ÿfvƒÿRboÿXjxÿVhvÿUfsÿRbnÛR_i²WgrÛ]jvÌcnv´hwƒÂl~‰ÿl}‹ÿ\o|ÿ\p|ÿo€Žÿo‚Žÿh|‰ÿfw„ÿhz†ÿfy…ÿfy…ÿdv„ÿYmzÿThuøYkxöZn{ñ^q}ÿ^p|ÿXjxÿauÿdx„ÿh|‰ÿlŒÿm€Žÿn‚ÿn‚‘ÿh|‰Òl~‰õq€‹ÿlw°v‹ÿdr~ÿRcpÿFWcÿHZhÿThwÿYm|ÿWjzüYn}ìWm}ÿZpÿZpÿ]rÿ_u„ÿdz‰ÿdyŠÿcz‰ÿdyˆÿey‰ÿi~ÿh~Œÿl€ÿl‚ÿp…“ÿuˆ–ÿ}œÿ‚•¡ÿ}žÿ…˜¦ÿ‰œ¨ÿ‘£°ÿ’¤²ÿ£°ÿ“¦³ÿ”£ÿqˆ–ÿo…”ÿlÿfzˆÿu†‘ÿly‚ÿH[hÿG[jÿH\mÿI_nÿPgwÿQizÿax‰ÿd{Œÿd{‹ÿg~Žÿhÿo…”ÿsˆ–ÿw‹šÿyžÿ”¢ÿ€”£ÿ”¢ÿ|‘¡ÿ}’¡ÿ–¤ÿ–¤ÿ–¥ÿ…™¨ÿ‡œ©ÿŠ«ÿŠž«ÿ¡®ÿ‰«ÿƒ—¦ÿ¡®ÿ£±ÿ‘¤±ÿ¢°ÿ“¥³ÿ‘¤²ÿu‹›ÿqˆ˜ÿu‹›ÿt‰˜ÿs‡—ÿŠ™¥ÿ|Œ–ÿv„Œÿ_rÿe{‰ÿi€ÿl‚’ÿtŠ™ÿxŽœÿ„™§ÿ†›¨ÿ‡›©ÿ‡›©ÿˆœªÿ‹ž¬ÿ‹Ÿ¬ÿ‡›ªÿ„™§ÿ‚—¦ÿ„˜§ÿ€•¤ÿ€•¤ÿ~”£ÿ~”£ÿ{‘ ÿ|‘ ÿ|‘ ÿ–¥ÿ”£ÿ”£ÿ„™§ÿ†š©ÿ„˜§ÿ…™¨ÿŽ¡¯ÿ‹ž­ÿŠž­ÿŽ¡¯ÿ–¨µÿŠž«ÿuŠšÿ~“¢ÿ–¥ÿ€•¤ÿzŸÿzŒ˜ÿt‚Œÿ_iq´Œ•ÿ›ÿŸ­ÿŽ¢¯ÿ£±ÿ“¥³ÿ’¥²ÿ’¦²ÿ”§´ÿ’¥³ÿ¡¯ÿ‹ž­ÿ‡œªÿ€•¤ÿzŸÿvŒœÿxŽÿvŒœÿsŠ™ÿu‹šÿt‰˜ÿwÿtŠ™ÿs‡–ÿs…“ÿyŠ—ÿx‰–ÿ{Œ˜ÿy‹—ÿs…’ÿi|ŠÿWgtÿz‹—ÿŠž¬ÿ…˜¦ÿ†˜¤ÿ‹›¥ÿ’¥²ÿ…™§ÿ| ÿ†š©ÿ‡›©ÿ…™¨ÿ€”£ÿy‹—ÿnz„Ùš¢ÿ¢¯ÿ’¥²ÿ’¥²ÿ“¦³ÿ”§´ÿ’¥³ÿŽ¡¯ÿžªÿ…—£ÿ‚”¡ÿ}ÿs‡•ÿk€ÿeyˆÿ^p}ÿSeqÿJ[iÿQbnÿ7EPÿ1;Dÿ!-6ÿ*ÿ ÿÿ ÿ ÿÿ ÿ  ÿÿ!+4ÿ>MZÿ *4ÿ&ÿ ÿVeqÿŠ«ÿ{Ÿÿ€”£ÿŒ ­ÿ¡®ÿ‹Ÿ­ÿˆœ©ÿ{‹—ÿm{†ÿ©³ÿ‘£°ÿŽ¡¯ÿ’¦³ÿ˜ª·ÿ’¥³ÿ•§´ÿ]goÿ8@Iÿ8>Gÿ;CJÿ.8Aÿ%/8ÿ&0ÿ"ÿÿÿ#ÿ&ÿ&ÿ!*ÿ&0ÿ".9ÿ3@Jÿ;HQÿHVbÿTbmÿ$,4ÿ ÿ  ÿ'ÿ*3;ÿ ÿ "ÿ !ÿ!*ÿTbmÿ„™¨ÿ~“¢ÿˆœªÿŽ¡¯ÿ¡¯ÿ“¦³ÿ‹©ÿ|Œ–ÿ¢¯·ÿŒ ­ÿ•¨µÿ„• ÿZjuÿNZcÿ$.7ÿ ÿ ÿKZfÿ/9Cÿ&-ÿ!+5ÿ.;Gÿ8DNÿBOZÿK[hÿPcqÿ_rÿhz‡ÿkŒÿvŠ˜ÿ„—¤ÿŒŸ«ÿœ®¹ÿž°¼ÿ}Š“ÿP\fÿXclÿÿ+4=ÿ&/ÿ !ÿ%ÿ ÿ$ÿqƒ‘ÿ‰¬ÿ…™§ÿ¡¯ÿ£°ÿ˜«·ÿ“¤°ÿ}Š•ÿ ®·ÿ’¥²ÿfqzÿ ÿ ÿ",ÿ ÿ ÿfu€ÿ†–¡ÿ‚•¡ÿ”¢ÿ‡š¨ÿ…™¦ÿƒ—¦ÿ„˜¦ÿ‚—¥ÿ‰«ÿ¡¯ÿ“¦³ÿ—ª¶ÿ™«·ÿ ±¼ÿ£´Àÿ¦·Âÿ¬¼Æÿ­½Çÿ·ÅÌÿQW]ÿ#ÿ/;Eÿ&ÿ#ÿ ÿÿ9DLÿŠªÿŠž¬ÿ†›©ÿ¢°ÿ’¥³ÿ ­ÿK]kÿn~ˆÿ’£¬ë‚’œÿ!)2ÿ ÿ"-ÿ'2ÿÿ$+1ÿ;?BÿŠš¥ÿœ®»ÿ—ª¶ÿ“¦³ÿ¢°ÿ¢°ÿ£°ÿ£±ÿ•¨µÿ—ª·ÿ—ª·ÿ¯ºÿ ±½ÿŸ±½ÿ¢²¾ÿ¦·Áÿ®¿Èÿ±ÁÊÿ‚Ž–ÿ ÿ&ÿ+7Aÿ )ÿ ÿ*ÿ*4=ÿ}‘žÿ£°ÿ‡œ©ÿˆœªÿ¡¯ÿ‰›¨ÿATbÿcv…ÿiyƒÿn|†ÿ¤¯¶Ù™ÿ7?Hÿ ÿ%1ÿ*6ÿ"ÿ*18ÿu…ÿ¢´Àÿœ®ºÿ”§³ÿ“¥²ÿ¢¯ÿŒŸ­ÿŒŸ¬ÿŽ¡®ÿ¡®ÿ¢¯ÿ“¥±ÿ’¤±ÿ–§³ÿ¡­ÿ‘¡¬ÿ”¤¯ÿ’Ÿÿw…‘ÿ-9Cÿ#.7ÿ1>Hÿ*7Cÿ+ÿ)ÿ!)ÿ1?Iÿq…“ÿŽ¢°ÿ‰ªÿˆ«ÿ’ ÿ;P_ÿdzˆÿ]p~ÿ_o{ÿev€ÿu…’ÿ”£—o{†ÿ#)2ÿ(ÿ(6Aÿ7DNÿ{ˆ‘ÿˆ™¤ÿŽŸªÿ{šÿu…‘ÿo|…ÿlw€ÿly‚ÿlyÿnz‚ÿdq{ÿcpyÿXgrÿL[fÿCQ]ÿ4>Gÿ2;Cÿ-7?ÿ$.7ÿ*4ÿ%ÿ$ÿ ÿÿ ÿÿÿÿ3@Lÿ~’Ÿÿ‘¥²ÿ†›©ÿp‚ÿ6K\ÿd{Œÿ`xˆÿ_t‚ÿ[o|ÿ`p|ÿdv‚ÿKU]ÿ9BJÿ+6@ÿ%.ÿ")ÿ%ÿ ÿÿÿ ÿÿ ÿÿ ÿ ÿ ÿ ÿ ÿÿÿÿÿÿ ÿÿ ÿÿ ÿ ÿÿÿ ÿ8FQÿu…’ÿs„‘ÿGXfÿ;O_ÿe}ÿe|Œÿc{‹ÿbx‡ÿ_rÿ]p{ÿ`q}ÿdtÿ069ÿ ÿ*ÿ ÿÿÿÿÿÿ ÿÿÿ ÿÿ ÿ ÿ ÿ ÿ ÿÿÿ  ÿ ÿ  ÿ !ÿ $ÿ "ÿ ÿ ÿ ÿ ÿ*ÿ#1=ÿ"0<ÿ,;ÿAVfÿf~Žÿe|ÿhÿi€‘ÿf|Œÿbw…ÿ^o{ÿ[kxÿfw„ÿk{†ÿ…Šÿ=DJÿ'18ÿ*3;ÿ%.ÿ)ÿ$/ÿ*6ÿ .:ÿ)5ÿ*6ÿ.<ÿ"3Aÿ$5Cÿ$6Dÿ&8Eÿ&8Fÿ%7Fÿ':Iÿ"2Aÿ#4Cÿ 1Aÿ,;ÿ+:ÿ)9ÿ*9ÿ .ÿ,ÿ&ÿ&ÿ)ÿ)ÿ!0ÿ"0ÿ%4ÿMcsÿh€ÿi€‘ÿlƒ’ÿi€‘ÿj’ÿj‘ÿe{‰ÿbv…ÿ^t„ÿZmzÿals…box¿‹“ÿuƒÿXkyÿRfvÿRiyÿE\nÿ?Vhÿ9Pbÿ7N`ÿ6L^ÿ5K]ÿ.DUÿ,BSÿ-CTÿ.CUÿ/EVÿ*?Pÿ)=Oÿ$8Iÿ"5Eÿ.?ÿ*9ÿ'6ÿ-ÿ*ÿ&ÿ $ÿ "ÿ "ÿ'ÿ+ÿ!/ÿNdsÿlƒ“ÿk‚’ÿm„”ÿk‚’ÿm„”ÿn…”ÿk‚’ÿi€ÿf}ŒÿYn~ÿ^o|ÿu†“ÿbyŠÿ[s„ÿUm~ÿH`rÿE[mÿ>Ugÿ8N`ÿ4J\ÿ4J\ÿ0FWÿ+ARÿ.CTÿ/EVÿ-CTÿ)=Nÿ';Lÿ%8Iÿ"5Fÿ-=ÿ&4ÿ!/ÿ)ÿ 'ÿ ÿ !ÿ "ÿ ÿ "ÿ #ÿ $ÿMbrÿkƒ’ÿm„“ÿlƒ’ÿlƒ“ÿk‚’ÿn…•ÿm„”ÿj’ÿf~ŽÿZp€ÿ\n{ÿl|‡ÿ_v…ÿTl}ÿOgyÿF^pÿBYkÿ=Tfÿ8Oaÿ4K\ÿ3J[ÿ.CUÿ,ASÿ/DUÿ/EVÿ)=Nÿ%9Jÿ%8Iÿ%8Iÿ$7Hÿ1Bÿ&6ÿ -ÿ'ÿ !ÿ !ÿ ÿ ÿ ÿ  ÿ ÿ !ÿTjzÿkƒ’ÿlƒ“ÿn…•ÿo†•ÿlƒ“ÿn…•ÿlƒ“ÿhÿd{‹ÿ]r‚ÿYkyÿl{ˆÿ[s€ÿJbtÿKbtÿAXjÿÿ,<ÿ"/ÿ)ÿ $ÿ &ÿ ÿ  ÿ "ÿ  ÿ ÿ "ÿ^u„ÿn…•ÿm„”ÿo†–ÿp‡—ÿn…”ÿp‡—ÿm„”ÿhÿf}Žÿ^t„ÿWjxÿl{‡ÿYm|ÿOewÿQi{ÿJbsÿG^pÿF^oÿC[mÿ;Rdÿ9Oaÿ6M^ÿ4J\ÿ5L^ÿ/EVÿ(=Nÿ&:Kÿ%:Kÿ';Lÿ#7Hÿ 3Cÿ0@ÿ(6ÿ%4ÿ -ÿ -ÿ -ÿ,ÿ!/ÿ+ÿ!.9ÿ?N\ÿp‡–ÿr‰˜ÿp‡—ÿn…•ÿp‡—ÿp‡—ÿq‡—ÿo†–ÿj‘ÿg~Žÿ]sƒÿj|ˆÿo{†ÿ\o|ÿ`v†ÿ`wˆÿXp€ÿNfwÿLctÿE\mÿ>Ufÿ=Seÿ:Pbÿ4J\ÿ3J\ÿ/DVÿ*?Pÿ';Kÿ%9Iÿ(ÿ0@ÿ#4Cÿ4HWÿ`u…ÿv‹šÿvŒœÿt‹šÿr‰™ÿqˆ˜ÿqˆ—ÿo†–ÿm„”ÿm„”ÿk‚’ÿg~ÿ^t„ÿs‚ÿXgrÿCUdÿAUfÿ?Teÿ>Teÿ:O`ÿ>TdÿDYjÿLbsÿLbrÿQfwÿWm}ÿ^u…ÿ\r‚ÿWm~ÿXo~ÿWm}ÿZp€ÿUk|ÿNeuÿI`qÿ@Ugÿ?Ugÿ?Vgÿ6K]ÿ7K\ÿ4HWÿd{Šÿrˆ˜ÿwÿxŽÿt‹šÿsŠ™ÿt‹šÿuŒ›ÿrˆ˜ÿlƒ“ÿj‘ÿmƒ“ÿj‘ÿg~ÿ_u‚ÿguÿ†‘™ÿt„Žÿn~‡ÿiz‡ÿl}‹ÿqƒ‘ÿzŒ™ÿ’Ÿÿˆ™¦ÿŒž«ÿ¡­ÿ¡­ÿ¢®ÿ¡­ÿŽŸªÿ‹›§ÿˆ™¥ÿ‰š¥ÿ‰š¦ÿŠœ¨ÿ†™¥ÿ†™¦ÿ…˜¥ÿ€”¡ÿxŒšÿm‚’ÿUm}ÿe{‹ÿu‹šÿzŸÿyŸÿxŽÿxÿu‹šÿt‹šÿtŠšÿwÿt‹šÿlƒ“ÿj‘ÿl‚’ÿj‚‘ÿd|Œÿ\qÿdr{ÿ”¡ªÿ¢¯¶ÿ›ªµÿŠ— ÿyƒŠÿm{„ÿ]isÿY`fÿ^diÿ^dhÿ]dhÿV]bÿQY`ÿJSYÿDOVÿ=GNÿ7>Dÿ4:@ÿ29Cÿ4;Dÿ5Dÿ&,2ÿ!$ÿ"ÿ ÿ ÿÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ%+ÿ‡œªÿ†š©ÿ…š¨ÿ–¥ÿ~“¢ÿzŸÿxŽÿu‹›ÿtŠšÿsŠ™ÿuŒ›ÿu‹›ÿr‰˜ÿo†–ÿm„”ÿlƒ’ÿd|ÿ_t„ÿds}ÿ…–ÿ#&ÿÿÿ ÿ ÿ ÿ ÿÿ ÿ ÿ ÿ ÿ ÿ ÿÿ ÿ ÿ ÿÿ ÿ ÿ ÿÿÿ ÿ ÿ ÿÿÿŠœ©ÿ†›ªÿˆœªÿ‡›ªÿ…™¨ÿ~“¢ÿ•£ÿxÿxÿwÿwœÿuŒ›ÿsŠ™ÿo†•ÿo†–ÿn…”ÿi€ÿcxˆÿdrÿfnsÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿÿ ÿ ÿ (ÿ%ÿ ÿ‰š¥ÿ“§´ÿ‘¤²ÿ¡®ÿŠž¬ÿ„˜§ÿ~”£ÿzŸÿ{žÿxŽžÿu‹›ÿvŒœÿu‹›ÿn…•ÿm„”ÿo†–ÿk‚’ÿg|‹ÿct€ÿQ[bÿ ÿ ÿ ÿ ÿÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿÿ ÿ ÿ ÿÿ ÿÿÿ ÿ ÿ ÿ ÿ ÿÿ ÿ‡™¤ÿ™¬¹ÿ“¦³ÿŽ¢¯ÿŒŸ­ÿ…™¨ÿ€•¤ÿ}“¢ÿ|’ ÿyŽžÿvŒœÿvŒ›ÿu‹šÿp†–ÿk‚’ÿm„”ÿj‘ÿg}Œÿ`q~ÿ8@Gÿ ÿ ÿ ÿ ÿ ÿÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿÿ ÿÿÿ ÿÿÿÿ ÿ ÿ ÿ ÿ ÿ ÿˆ™¤ÿš¬¹ÿ•§µÿ”§´ÿ‘¤²ÿˆœªÿ–¥ÿ|’¡ÿ}“¢ÿ{ŸÿxŽžÿvœÿr‰˜ÿp‡—ÿm„”ÿlƒ“ÿlƒ“ÿk€ÿarÿJRXÿ037ÿ ÿ ÿ ÿ ÿ ÿm9ÿm9ÿm9ÿG,ÿ ÿG,ÿG,ÿG,ÿ ÿ ÿG,ÿÿÿÿ ÿÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ…—¢ÿš­ºÿ—©¶ÿ–©¶ÿ•©µÿ‹Ÿ­ÿ‚—¦ÿ}’¢ÿ”£ÿ}’¡ÿ{ ÿwÿr‰˜ÿp‡—ÿm„”ÿlƒ”ÿlƒ“ÿiŽÿ]p|ÿ_gmÿ%*.ÿ ÿ ÿÿ ÿ ÿm9ÿÿG,ÿ ÿm9ÿÿ ÿ ÿÿÿ ÿ ÿÿm;ÿÿ ÿ ÿÿ ÿ ÿÿ$ÿ ÿ ÿ“Ÿÿœ¯»ÿ›¬¹ÿ˜«·ÿ˜«·ÿ‹Ÿ­ÿ–¥ÿ|‘¡ÿ€•¤ÿ~“¢ÿzŸÿuŒ›ÿtŠšÿr‰˜ÿn…”ÿn…”ÿn…•ÿj€ÿ\o{ÿ_elÿ#ÿ ÿ ÿ ÿ ÿ ÿ ÿÿm9ÿm9ÿ ÿ ÿ ÿ ÿ ÿ ÿ w6ÿÿÿÿ ÿ ÿ ÿÿÿ ÿ ÿ ÿ ÿ ÿ‚”Ÿÿ¡²¾ÿž°¼ÿ›­¹ÿ›­¹ÿŽ¡¯ÿƒ˜§ÿ”£ÿƒ˜¦ÿ€•¤ÿ{‘ ÿyžÿzŸÿs‰™ÿp‡–ÿo†–ÿo†•ÿj€ÿ\o{ÿkqtÿ ÿ ÿ ÿ ÿÿ ÿ ÿ ÿÿÿ ÿ ÿÿÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿÿ ÿ ÿÿÿ ÿ ÿ ÿ ÿ‚“ ÿ ²¿ÿŸ±½ÿœ®ºÿ™«¸ÿ¢°ÿ…š©ÿƒ˜¦ÿ„˜§ÿ‚—¦ÿ{‘ ÿ{‘ ÿxŽžÿu‹›ÿtŠšÿq‡—ÿn…•ÿl‚’ÿ`r€ÿouxÿ ÿÿ ÿ ÿÿ ÿ ÿ ÿ ÿ ÿ ÿz1ÿ ÿ ÿ ÿz1ÿg8ÿ ÿ ÿÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿƒ”Ÿÿ¤µÁÿ¢³¿ÿž°¼ÿ™«·ÿ“¦³ÿŒŸ®ÿ‰«ÿ†š©ÿ‚˜§ÿ~“£ÿ}’¢ÿ{ ÿu‹›ÿvŒœÿs‰™ÿo†–ÿm„”ÿcw„ÿemtÿ ÿÿ ÿÿ ÿÿÿ ÿ ÿÿ ÿ ÿ ÿÿ ÿ ÿ ÿ ÿÿÿÿÿm;ÿ ÿ ÿ ÿ ÿ ÿ"+ÿ ÿ‡˜£ÿ¦·Ãÿ¢³¿ÿž¯»ÿ˜ª·ÿ”§´ÿ’¤²ÿ‹Ÿ­ÿˆœ«ÿ…š¨ÿ‚˜§ÿ–¦ÿ–¥ÿz ÿt‹šÿtŠšÿqˆ—ÿqˆ—ÿfz‰ÿJT`ÿ$«ÿJÿ ÿ ÿ ÿ ÿ ÿÿG,ÿ ÿÿj/ÿG,ÿ ÿÿj/ÿ[8ÿ ÿÿ ÿ ÿ ÿ ÿ ÿ ÿÿ ÿ ÿ+ÿ ÿŠš¥ÿ§¹Ãÿ£µÀÿ ±½ÿ›­¹ÿ–©µÿ”§´ÿŽ¡¯ÿ‹ ®ÿ‰«ÿ‡œªÿ…™¨ÿ„™§ÿ|‘¡ÿwœÿvŒœÿxÿr‰˜ÿeyˆÿOT[ÿ ¼ÿ Yÿ ÿ ÿ ÿ ÿÿÿ ÿ o,ÿv.ÿx4ÿ ÿ o,ÿv.ÿx4ÿ ÿ ÿÿÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ&ÿ ÿŸªÿªºÅÿ¦·Âÿ¡²¾ÿž°¼ÿ™¬¸ÿ–©¶ÿ‘¥²ÿ¡®ÿŠž¬ÿˆœªÿ†›©ÿ…™¨ÿ”¤ÿzŸÿwœÿvŒ›ÿq‡–ÿcw†ÿ\_bÿ¢ÿPÿÿ ÿÿG,ÿ ÿÿo:ÿm9ÿm0ÿ3ÿo:ÿm9ÿm0ÿ3ÿ ÿÿ ÿm;ÿÿ ÿÿ ÿ ÿ ÿ ÿÿ (1ÿ ÿ”¤­ÿ©»Åÿ§¸Ãÿ¤µÀÿŸ±¼ÿ™«¸ÿ•§´ÿ”§´ÿ£±ÿŒŸ­ÿ‰«ÿ†›©ÿ†š©ÿ”¢ÿ|‘ ÿ|‘ ÿxŽÿrˆ—ÿfzˆÿW[^ÿ Aÿ 9ÿ ÿÿÿ ÿ o,ÿÿr*ÿn:ÿm;ÿ ÿr*ÿn:ÿ ÿ ÿÿ ÿÿm;ÿm;ÿ ÿ ÿ !ÿ ÿ ÿ ÿ ÿ/=ÿ ÿ—§°ÿ«»Åÿ©¹Äÿ¦·Âÿ ²½ÿš­¹ÿ–¨µÿ’¥²ÿ£±ÿŽ¢¯ÿ‰ž¬ÿ…š¨ÿ†›¨ÿ€•¤ÿ€•¤ÿƒ˜¦ÿ}’¡ÿsˆ˜ÿgzˆÿRY^ÿ ÿ ÿ ÿ ÿÿo:ÿm9ÿ ÿ ÿ ÿ k;ÿ z!ÿ ÿ ÿ k;ÿ z!ÿ ÿ ÿ ÿÿ ÿÿÿÿÿ ÿÿÿ(2<ÿÿš©²ÿ©ºÅÿ¬¼Æÿ¦·Âÿ ±½ÿ˜«·ÿ–©µÿ’¥³ÿ‘¤±ÿ¡¯ÿˆœªÿ†š¨ÿˆœªÿ†›©ÿƒ˜¦ÿ–¥ÿ|‘¡ÿxŒšÿi|ŠÿKSZÿ ÿ ÿ ÿ ÿÿr*ÿn:ÿ ÿ$ÿ'ÿ q6ÿ ‹(ÿ$ÿ'ÿ ÿ ÿÿ ÿ ÿÿÿÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ™¨±ÿ©ºÄÿ¬¼Æÿ¥¶ÁÿŸ±½ÿ—ª·ÿ–¨µÿ’¥³ÿ’¥²ÿ¡¯ÿ‹ž¬ÿ‡›ªÿŒ ­ÿ‡œªÿ„™§ÿ–¥ÿ~“¢ÿy›ÿi}ŠÿAJQÿÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿÿ ÿ" ÿ ÿÿ ÿ ÿÿ ÿ ÿ ÿ ÿÿ ÿ ÿ ÿÿ ÿ ÿ ÿÿšªµÿ©¹Äÿ¬¼Æÿ¥¶Áÿ ±½ÿš­¹ÿ–©µÿ•¨´ÿ“¦³ÿ¤±ÿŒ ®ÿŠž¬ÿŠŸ­ÿˆœªÿ†š¨ÿ„˜§ÿ€•£ÿzŽœÿk}‹ÿ4Dÿª»ÇÿªºÅÿ¨¸Ãÿ¤µÀÿŸ²½ÿœ¯»ÿš¬¸ÿ˜«·ÿ•©µÿ—©¶ÿ’¥³ÿ¢°ÿŒ ®ÿŠž¬ÿˆœ«ÿ‡œªÿ†š©ÿ~‘Ÿÿm€ÿ).4ÿÿ ÿ ÿ ÿÿm8ÿ‚ ÿÿ ÿ t.ÿ ÿ†1ÿ ÿ t.ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿÿÿ ÿÿ ÿ ÿ ÿ ÿ?DIÿ§¸ÃÿªºÄÿ©¹Äÿ¦·Áÿ¡²¾ÿž°¼ÿ˜ª·ÿ˜«·ÿ–ª¶ÿ–¨µÿ’¥²ÿŽ¢¯ÿ‹Ÿ­ÿŠž¬ÿЬÿŠž«ÿ…™¨ÿ’ ÿoŽÿ).4ÿ ÿ ÿ ÿ ÿÿ !ÿÿÿ !ÿ !ÿˆ&ÿ 'ÿ !ÿ !ÿ ÿ ÿ ÿÿ ÿ ÿ ÿÿ ÿ ÿÿÿ ÿÿ ÿCILÿ¥·Âÿ«¼ÅÿªºÄÿ¦¶Áÿ¢³¾ÿŸ±¼ÿœ®ºÿ™«·ÿ”§´ÿ•§´ÿ‘¤±ÿ¢¯ÿŠŸ­ÿ‹ ­ÿŠž¬ÿˆœ«ÿ€•£ÿ}‘Ÿÿqƒÿ'+0ÿ ÿ ÿ ÿ ÿÿ ÿ t.ÿ ÿ†1ÿ ÿ t.ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿÿÿ ÿÿ ÿ ÿ ÿ ÿ ÿ ÿÿXciÿ¨ºÅÿ­½ÇÿªºÅÿ¨¹Ãÿ£´¿ÿž°»ÿŸ±½ÿ™«·ÿ’¥³ÿ”§´ÿ“¦³ÿ¢°ÿ ®ÿŒ ®ÿŠž¬ÿ…š©ÿ–¤ÿ{ŽžÿnŽÿ'+0ÿ ÿ ÿ ÿ ÿÿ !ÿ !ÿˆ&ÿ 'ÿ !ÿ !ÿ ÿ ÿ ÿÿ ÿ ÿ ÿÿ ÿ ÿÿÿ ÿÿ ÿ ÿ ÿ ÿju}ÿ¨¹Äÿ®¾ÈÿªºÄÿ¨¹Äÿ¤µÁÿŸ²½ÿž°¼ÿ™¬¸ÿ“¦³ÿ•§´ÿ“¦³ÿ‘¤²ÿ£°ÿŽ¢¯ÿŒŸ®ÿ‰¬ÿ†š¨ÿ|žÿkŒér‰˜)17ÿ ÿ ÿ ÿ ÿÿÿ ÿ ÿ ÿ  ÿ  ÿÿÿÿÿÿÿ ÿÿ ÿ ÿÿÿÿÿ ÿ ÿÿÿu†ÿ¤µÁÿ®¾ÈÿªºÄÿ¨¹Äÿ¤µÀÿ¡³¾ÿ®ºÿ™¬¸ÿ“¦³ÿ”¦³ÿ“¥²ÿ“¦³ÿ‘¤±ÿ ®ÿŠž­ÿˆœªÿ…™¨ÿ~‘¡ÿsˆ—çd|+4<ÿ ÿ ÿ ÿ ÿÿ !ÿ !ÿ !ÿ 'ÿ !ÿ !ÿ ÿ ÿ ÿÿ ÿ ÿ ÿÿ ÿ ÿÿÿ ÿÿ ÿ ÿÿ ÿx…Žÿ£µÀÿ­½ÇÿªºÄÿ¨¸Ãÿ£´Àÿ ±½ÿ¯»ÿš¬¸ÿ”§´ÿ“¦³ÿ”§´ÿ”§´ÿ‘¤²ÿ¢°ÿˆ«ÿ†›©ÿƒ˜¦ÿ~”£ÿs‰™æd|6@Gÿ ÿ ÿ ÿ ÿÿÿ ÿ ÿ ÿ  ÿ  ÿÿÿÿÿÿÿ ÿÿ ÿ ÿÿÿÿÿ ÿ ÿ ÿ&ÿ‰™£ÿ¥¶Áÿ­½ÈÿªºÅÿ§¸Ãÿ¤µÀÿ¡²¾ÿ¯»ÿ™«·ÿ”§´ÿ”§´ÿ“¦³ÿ•¨µÿ”§´ÿ’¥²ÿŒ ®ÿˆœªÿƒ—¦ÿ”£ÿvŠšçZm{FMÿ/6;ÿ/6;ÿ-4:ÿ'/7ÿ!)1ÿ#*ÿ )ÿ)ÿ 'ÿ$(ÿ$ÿ#ÿ (ÿ!*ÿ'ÿ )ÿ$,ÿ!)3ÿ$,4ÿ)07ÿ.6=ÿ;IUÿMXaÿXclÿˆ–¡ÿ­¹ÿ©¹Ãÿ§·Áÿ¦µÀÿ¥´¿ÿ£³¾ÿž¯»ÿ®¹ÿ™«¸ÿ™«·ÿ—ª¶ÿš¬·ÿ–§´ÿ¡­ÿƒ”¡ÿŸ¨ÿsƒŽÿ{ƒˆÓv€‡ÿdmsÿw€†ÿw€†ÿ~„ˆÿox~ÿkv~ÿ`mvÿR\eÿt}„ÿv}‚ÿtz~ÿsx|ÿvzÿt{€ÿx€…ÿu~„ÿryÿr{ÿz…ÿ…‘™ÿ‘œ£ÿš£ªÿŸ¨°ÿ¡¬´ÿ¦²ºÿ§´»ÿ¦³¼ÿ§³¼ÿ§´¼ÿ©µ¾ÿª¶¿ÿ§´¼ÿ«·¿ÿš¨³ÿ—¦±ÿ™©³ÿž­·ÿ¤±ºÿž©±Ç“¥Öÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿñÿÿÿÿÿÿàÿÿÿÿð?ÿÿàÿÿÀÿÿÀÿÿÀÿÿàÿðÿøÿü?ÿþÿÿÿÿ€ÿÿðÿøÿøÿüÿÿ€ÿÿ€ÿÿ€ÿÿ€ÿÿ€ÿÿ€ÿþÿøÿðÿàÿàÿàÿàÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿàÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿsuite3270-4.1/wc3270/wc3270.iss.tmpl000077500000000000000000000215701413735575200164140ustar00rootroot00000000000000; Script generated by the Inno Setup Script Wizard. ; SEE THE DOCUMENTATION FOR DETAILS ON CREATING INNO SETUP SCRIPT FILES! [Setup] AllowNoIcons=yes AppCopyright=Copyright (C) 1989-%CYEAR% by Paul Mattes, GTRC and others AppName=wc3270 AppPublisher=Paul Mattes AppPublisherURL=http://x3270.bgp.nu AppSupportURL=http://x3270.bgp.nu AppUpdatesURL=http://x3270.bgp.nu AppVerName=wc3270 %VERSION% ArchitecturesInstallIn64BitMode=x64 ChangesAssociations=yes Compression=lzma DefaultDirName={commonpf}\wc3270 DefaultGroupName=wc3270 DisableDirPage=no MinVersion=0,6.0 OutputBaseFilename=wc3270-%VERSION%-setup OutputDir=. SolidCompression=yes WizardSmallImageFile=wc3270\x3270-icon2.bmp SignTool=mystandard $f [Languages] Name: "english"; MessagesFile: "compiler:Default.isl" [Components] Name: "base"; Description: "Basic executables"; Types: full compact custom; Flags: fixed Name: "wizard"; Description: "Session Wizard"; Types: full compact custom Name: "s3270"; Description: "s3270 (scripting app)"; Types: full custom [InstallDelete] ; Get rid of the AppData CA root certs files. The new install puts it in {app}. ;; Skip the rule below because it interferes with installing as SYSTEM and is ;; likely unnecessary now. ;Type: files; Name: "{userappdata}\root_certs.txt" Type: files; Name: "{commonappdata}\root_certs.txt" Type: files; Name: "{app}\root_certs.txt" ; Get rid of the old New wc3270 Session desktop icon. ;; Skip the rule below because it interferes with installing as SYSTEM and is ;; likely unnecessary now. ;Type: files; Name: "{userdesktop}\New wc3270 Session.lnk" ; Get rid of the old 'New wc3270 Session' start menu item. It might be in ; the common programs group or the user programs group. Type: files; Name: "{commonprograms}\{groupname}\New wc3270 Session.lnk" ;; Skip the rule below because it interferes with installing as SYSTEM and is ;; likely unnecessary now. ;Type: files; Name: "{userprograms}\{groupname}\New wc3270 Session.lnk" ; Get rid of the old networking DLLs. Type: files; Name: "{app}\w3n4.dll" Type: files; Name: "{app}\w3n46.dll" Type: files; Name: "{app}\shf.dll" ; Get rid of ead3270. Type: files; Name: "{app}\ead3270.exe" ; Get rid of Explore AppData on the Start menu. Type: files; Name: "{group}\wc3270 Explore AppData" ; Get rid of the old pre-4.0 HTML directory. Type: filesandordirs; Name: {app}\html [Files] Source: "obj\win32\wc3270\wc3270.exe"; DestDir: "{app}"; Flags: ignoreversion; Check: not Is64BitInstallMode Source: "obj\win32\wc3270\c3270.exe"; DestDir: "{app}"; Flags: ignoreversion; Check: not Is64BitInstallMode Source: "obj\win64\wc3270\wc3270.exe"; DestDir: "{app}"; Flags: ignoreversion; Check: Is64BitInstallMode Source: "obj\win64\wc3270\c3270.exe"; DestDir: "{app}"; Flags: ignoreversion; Check: Is64BitInstallMode Source: "obj\win32\ws3270\ws3270.exe"; DestDir: "{app}"; Flags: ignoreversion; Check: not Is64BitInstallMode; Components: s3270 Source: "obj\win32\ws3270\s3270.exe"; DestDir: "{app}"; Flags: ignoreversion; Check: not Is64BitInstallMode; Components: s3270 Source: "obj\win64\ws3270\ws3270.exe"; DestDir: "{app}"; Flags: ignoreversion; Check: Is64BitInstallMode; Components: s3270 Source: "obj\win64\ws3270\s3270.exe"; DestDir: "{app}"; Flags: ignoreversion; Check: Is64BitInstallMode; Components: s3270 Source: "obj\win32\wpr3287\wpr3287.exe"; DestDir: "{app}"; Flags: ignoreversion; Check: not Is64BitInstallMode Source: "obj\win32\wpr3287\pr3287.exe"; DestDir: "{app}"; Flags: ignoreversion; Check: not Is64BitInstallMode Source: "obj\win64\wpr3287\wpr3287.exe"; DestDir: "{app}"; Flags: ignoreversion; Check: Is64BitInstallMode Source: "obj\win64\wpr3287\pr3287.exe"; DestDir: "{app}"; Flags: ignoreversion; Check: Is64BitInstallMode Source: "obj\win32\wc3270\catf.exe"; DestDir: "{app}"; Flags: ignoreversion; Check: not Is64BitInstallMode Source: "obj\win64\wc3270\catf.exe"; DestDir: "{app}"; Flags: ignoreversion; Check: Is64BitInstallMode Source: "obj\win32\wc3270\mkshort.exe"; DestDir: "{app}"; Flags: ignoreversion deleteafterinstall; Check: not Is64BitInstallMode Source: "obj\win64\wc3270\mkshort.exe"; DestDir: "{app}"; Flags: ignoreversion deleteafterinstall; Check: Is64BitInstallMode Source: "obj\win32\wc3270\wc3270wiz.exe"; DestDir: "{app}"; Flags: ignoreversion; Check: not Is64BitInstallMode; Components: wizard Source: "obj\win64\wc3270\wc3270wiz.exe"; DestDir: "{app}"; Flags: ignoreversion; Check: Is64BitInstallMode; Components: wizard Source: "obj\win32\x3270if\x3270if.exe"; DestDir: "{app}"; Flags: ignoreversion; Check: not Is64BitInstallMode Source: "obj\win64\x3270if\x3270if.exe"; DestDir: "{app}"; Flags: ignoreversion; Check: Is64BitInstallMode ; NOTE: Don't use "Flags: ignoreversion" on any shared system files [Tasks] Name: "desktopicons"; Description: "Create desktop icons"; GroupDescription: "{cm:AdditionalIcons}" Name: "migratefiles"; Description: "Migrate existing session files from AppData to Documents (can choose files)"; GroupDescription: "File Migration:" [Code] function myHelp(Param: String): String; begin ; result := '/c start /b http://x3270.bgp.nu/wc3270-help/%VERSION%/' result := '/c start http://x3270.bgp.nu/wc3270-help/%VERSION%/' end; function InitializeSetup(): Boolean; var uninstaller: String; ErrorCode: Integer; begin if (Is64BitInstallMode) and (RegKeyExists(HKEY_LOCAL_MACHINE_32, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\wc3270_is1')) then begin // We are in 64-bit mode and a 32-bit version is already installed. // Ask if they want to remove it. if (not WizardSilent) and (MsgBox('A 32-bit version of wc3270 is already installed and must be removed before a 64-bit version can be installed. Remove it now?', mbConfirmation, MB_YESNO) = IDNO) then begin // They don't want to remove the old version. Can't proceed. Result := False end // IDNO else begin // They do want to remove the old version. RegQueryStringValue(HKEY_LOCAL_MACHINE_32, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\wc3270_is1', 'UninstallString', uninstaller); ShellExec('runas', uninstaller, '/SILENT', '', SW_HIDE, ewWaitUntilTerminated, ErrorCode); // We can continue. Result := True end // IDYES end else // There is no old 32-bit version to remove. begin result := True end // no 32-bit to remove end; // InitializeSetup [Icons] Name: "{group}\Session Wizard"; Filename: "{app}\wc3270wiz.exe"; WorkingDir: "{app}"; Components: wizard Name: "{group}\Run wc3270"; Filename: "{app}\wc3270.exe"; WorkingDir: "{app}" [Registry] Root: HKCR; Subkey: ".wc3270"; ValueType: string; ValueName: ""; ValueData: "wc3270"; Flags: uninsdeletevalue Root: HKCR; Subkey: "wc3270"; ValueType: string; ValueName: ""; ValueData: "wc3270 Emulator Session"; Flags: uninsdeletekey Root: HKCR; Subkey: "wc3270\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\wc3270.exe,0" Root: HKCR; Subkey: "wc3270\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\wc3270.exe"" ""%1""" Root: HKCR; Subkey: "wc3270\shell\edit\command"; ValueType: string; ValueName: ""; ValueData: """{app}\wc3270wiz.exe"" -e ""%1"""; Components: wizard Root: HKCR; Subkey: ".wc3270km"; ValueType: string; ValueName: ""; ValueData: "wc3270 keymap"; Flags: uninsdeletevalue Root: HKCR; Subkey: "wc3270 keymap"; ValueType: string; ValueName: ""; ValueData: "wc3270 emulator keymap"; Flags: uninsdeletekey Root: HKCR; Subkey: "wc3270 keymap\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\wc3270.exe,1" Root: HKCR; Subkey: "wc3270 keymap\shell\open\command"; ValueType: string; ValueName: ""; ValueData: "notepad.exe ""%1""" Root: HKCR; Subkey: "wc3270 keymap\shell\edit\command"; ValueType: string; ValueName: ""; ValueData: "notepad.exe ""%1""" [Run] Filename: "{app}\wc3270wiz.exe"; Description: "{cm:LaunchProgram,Session Wizard}"; Components: wizard; Flags: nowait postinstall skipifsilent Filename: "{cmd}"; Parameters: {code:MyHelp}; Description: "{cm:LaunchProgram,Online Documentation}"; Flags: nowait postinstall skipifsilent Filename: "{app}\mkshort.exe"; Parameters: """{app}"" wc3270.exe ""{commondesktop}\wc3270.lnk"""; Flags: nowait runhidden; Tasks: desktopicons Filename: "{app}\mkshort.exe"; Parameters: """{app}"" wc3270wiz.exe ""{commondesktop}\Session Wizard.lnk"""; Flags: nowait runhidden; Tasks: desktopicons; Components: wizard ; Run the upgrade wizard. Filename: "{app}\wc3270wiz.exe"; Parameters: "-U"; Flags: nowait skipifsilent; Components: wizard; Tasks: migratefiles Filename: "{app}\wc3270wiz.exe"; Parameters: "-Ua"; Flags: nowait runhidden skipifnotsilent; Components: wizard; Tasks: migratefiles [UninstallDelete] Type: files; Name: "{commondesktop}\wc3270.lnk"; Tasks: desktopicons Type: files; Name: "{commondesktop}\Session Wizard.lnk"; Tasks: desktopicons Type: dirifempty; Name: "{app}" suite3270-4.1/wc3270/wc3270.rc000066400000000000000000000001611413735575200152350ustar00rootroot00000000000000#define RT_MANIFEST 24 LANGUAGE 0, 0 1 RT_MANIFEST wc3270.exe.manifest 100 ICON wc3270.ico 200 ICON wc3270km.ico suite3270-4.1/wc3270/wc3270_files.mk000066400000000000000000000003011413735575200164160ustar00rootroot00000000000000# wc3270-specific object files WC3270_OBJECTS = c3270.o ft_gui.o help.o icmd.o keymap.o keypad.o menubar.o \ nvt_gui.o relink.o screen.o select.o shortcut.o status_dump.o \ tls_passwd_gui.o suite3270-4.1/wc3270/wc3270km.ico000066400000000000000000000310761413735575200157440ustar00rootroot00000000000000@@(2(@€¸»»²µµ®°°ª««¨¨¨œœœžžžŸŸ›žž›Ÿžž¡¡šœœžž˜ššŸŸ˜››eooœª¨°»¹·ÁÀ·¿¾¶½»°¸·¬´´¤¬¬™ Ÿ˜  š¡ ¥£Ÿ§¥¡©¨ž§¦›¤¢›¢¡œ¢¡¬²±")(t}| ¬ª¯¸··½¼¶½º´»¹±¸¶¬±²¬¯¯™žœ¡ ¡¡Ÿ¢¢ž£¢œ¥¤¥¤¥¤š¡ œ£¢›¡  bhgœ¤£°¹¸·¾½½ÃÃÊËËÇÇÇÆÆÆÉÊÉÁÁÁ¼¼¼»»»½½½¿ÂÁÀÂÂÀÂÂÂÄÄÂÄÄÄÆÆÙÛÚ¢¥£cmm–¡¡ÀÇÇÊÐÏÇÎÍÉÌÌÆËÊÇÎÍÂÈǺ¿¾¹¾¿ÀÆÅÀÆÅÁÇÆÅËÊÁÇÅÄÊÉÅÊÉÎÔÓ½ÂÁ#)(x‚€¡¬ªÂÊÉÊÏÎÌÑÐÌÒÑËÐÏÉÎÎÅÈɾÀÀ¾ÀÀÀÃÃÁÃÃÄÅÅÂÇÆÅÊÉÆËÊÈÍÌÖÛÚª°¯ ]ed𢡽ÅÄÏÔÓÓ××ÈÈÈÊÊÊÎÎÎÍÎÌÇÈÆÄÄÄÆÅÅÉÊÊÊÊÊÎÎÎÐÐÐÒÒÒ×××êêéèéç žcmn–  ¨¯®ÃÈÈÉÌËÊÌÌÎÑÐÎÓÒÉÍÌÄÈÇÇÉÊÊÏÎÌÑÐÑÕÕÑÕÔÕÖÖÕÖÖàââéîí¶»º &%t}|œ§¥ª±°ÂÇÆËÎÍÎÏÐÑÓÒÒÖÕÎÒÑÊÊÊÉÉÉÍÎÎÏÐÐÑÐÐÔÓÓÕ××ÙÜÛåççòöõ¨¬« ^gf¡ª¨¤¬«ÂÆÅÒÓÓÅÅÅÊÉÉÍÍÍÌÌÌÈÇÇÇÅÅÊÈÈÊÊÊÍÍÍÎÎÎÑÑÑÔÔÔëëëúûùâãá‘ _jj§§•œ›¯´³ÂÆÆÆÌËÍÎÎÐÒÒÈËËÇÇÇÅÊÊÊÏÎÌÑÐÎÑÑÕÕÕ×××äääøøøíîª!"nvv£ª«—›œ§¬­ÁÆÅÉÊÊÏÏÏÓÓÓËËËÈÈÈÊÊÊÌÌÌÎÎÎÑÑÑÖÖÖØØØåååùùùùùù£¤¤ X_^Ÿª¨¤¬«Ÿ¤£ÂÃÃÀ¾¾ËÊÊÑÎËÐÌÌÎÉÊÎÉÊÍÊËÎÌÌÏÍÍÎÎÎ×××êêêþþþüýûÚÛÙ~ akk¨¨–“˜—²´´ÄÄÄÌÌÌÏÏÏËËËËËËÊÊÊÏÏÐÑÑÑÕÖÖ×××ãããùùùÿÿÿçè虜žhpp¦®® ¥¦–™šª°¯ÀÂÁÍÍÍÑÑÑÍÎÎÍÍÍÍÍÍÑÑÑÓÓÓÒÒÒ×××âââðððÿÿÿùùù•š™ U]\ž©§¬´³œ ¡¢£¤ÕÑÒÖÏÐÔÎÊÓÌÊÒÉÉÓÈÉÓÆÈÍÇÄÍÇÆÌÅÆÚØØúúúÿÿÿûüúÓÒÐnpo Zdd ©© ¨§ˆŒ»»¼ÓÍÍÔÏÎÑÎÎÏÎÎÎÍÍÐËÌÌÉÉËÉÉÎÌÌÓÒÒëëëÿÿÿÿÿÿßãâ„‹Žeoo¢««¨­®Ž’–¤¥¥ÑÎÏØÔÔÙÖÕÖÒÓÕÐÑÓÏÑÑÍÎÑÎÍÓÏÏÏÎÎ×××úúúÿÿÿøøø‹Ž PWV¦¥­µ´¥©©“”•ñêçßÙÓÖÍÊÒÊÇÔÉÆÐÄÂÎÂÀÊÄ¿À¹¶±ªª¢žÚÛÛÿÿÿüýüÄÅÄdhg Ydc¢ªªŸ¦¥¥«ªÜÚÙÞÙØ×ÒÑÔÐÐÒÍÎÍÈÉËÄÆÇÃÃÁÀÀÁ¿¿¾¼¼ÆÇÇýýýÿÿÿÚÞÝx€„[ee¡¬«¨¯¯”–šÛØÖèäáÞÙØÛÖÕ×ÒÑÒÍÌÒÍÍÑËËÍÈÇÌÇÆÃÀÁºººÔÔÔþþþ÷÷÷€‚ƒ KRR™¡ ¯¶µ­²±°±±ûøôíçáâÖÔÐÄÃÖÊÈÐÄÂÐÅÂȽ¼µ²¦Ÿž‰Š£¤¤ÿÿÿúûú·ººafe Zec¡ª¨Ÿ¤¤ÀÂÁçäáäßÞÞÙØÚÔÔÛÕÕÓÌÍÏÉËÄÁÁÁÀÀ¼ººµ´´´´´÷÷÷ÿþþÑÕÔnwx Yccœ¨§¦¯®«¬­øóòðëêåàßàÚØàÛØÔÎÌÑÌÊÓÍÍÐËÊÇÂÀ¾»»±°°½¼¼ýýýôôôprs HQP”œ¯´³«°¯ÑÒÒþþûøñìéàÝ&ÑÄÄÔÈÆÐÄÂû¸´­ªš““ƒƒƒ‹‹ÿÿÿúûù«¯®Z`_ Yccž©§™¡ŸÑÓÔéééèãââÝÜâÜÙwpn2--qmnhhh´´´®®®«««ïïïÿÿÿÌÎÍfpnR^^š¨¦§¯¯»¼ºü÷öôïîíçæãÝÙVONÝÕÓÖÏ̧¡Ÿ\VWÉÄ÷³´§§§³±±üüüðññorr GPOŽ˜–°µ´¬®®ÛÛÛýþþþúöóêç*ÕÈÉØÌÊÍÂÀº³°§ŸŸ”‘’~|}†…‡ÿÿÿøù÷¥©§W]\ Ycc «©›¤¢ÛÝÝîëììçåäßÞ|vtd]Zļº‘Šeee²²²ªªª¦¦¦èèèÿÿÿÄÆÆ]ihS__–£¢§¯¯ÆÈÅü÷ööñððééçàÞG?@âÛØÖÏË¡š˜MHGÆÀÁ·²³¨©¨«ªªüüüëëëgji EOM˜—°µ´¬®®áááÿÿþþùøöîê."!ÝÓÒ×ËÈÇ»º°©§¥žŽ‚‚ÿÿÿõöôŸ£¢V]\ Zdd›¦¤ž¦¥ãããñîîíèçèãâICAÞ×Ôž¼£žž.)*igh¯¯¯¨¨¨ŸŸŸãããÿÿÿ»¾¿]gj U`_—£¢¦¯­ÈÊÊýùøõðïñêéèáÞIBBãÝÜ×ÑТœœPIIÅ¿À²¯¯§¦§§¦§ûûûëêê]bb HPOŽ˜–°µ´«®®äääþþüýú÷òëç-! B69B68““²«¨¢š›‘Ž‚‚ƒ‚ÿÿÿõöôž£¢SZY [eež©§ž¦¥åååñííìçæëæåJCCäÜÛÀ¸¸gcb_Y[‘ް°°¦¦¦¡¡¡àààÿÿÿµ¸¹]fi T_]–¢Ÿ§­®ËÌÌþùøõðïðêèéáß801f]^d\]KCDPHIÆÀÁµ²²¥¤¦¥¥¦ûûûèèè]ab JRQ‹–”®µ´¬°¯æææþþûüøôðêæ*·«ª®¥£»´´³¬© ˜™Œ€€€€ÿÿÿôõóŸ¥£PXX^iiŸª¨Ÿ¦¥èææòììîéèçâáB<=Ý×ÙÔÏÏÐËÊËÅŽºº²²²§§§¡¡¢ãããþÿÿ²·¶]ee Wa_—¢Ÿ©¯²ÊÊËþø÷öñððêêêââA:;Š‹‰ƒ„c\]RJKľ¿µ²²¥¥¥¦¦¦üüüæææ]aa KSRŒ—•¬·µ¬±°äääÿÿûøôñîèã(ØÏÎÖÏÌÌÅÂÀ¹µ£žœŽŽ‚‚‚ŠŠŠÿÿÿöõ󥨥RZZ `kl¡«©ž¥¥ãááïêçëæåæááuoob]]ØÑÓü¾-''™––´´´ªªª¤£¥èèèþþþ´¸¸Xaa Xca–¡Ÿ¥®¯ÃÃÄþùø÷òñîéèæááG>BâÜÜØÓÒž˜˜QKLÉÃij±±¨¨¨©©©üüüççç[a` ISQš˜«³²¬´²áááþýùøóðëãáQHJLCGKAFF@?>DCDIHGJJGKJADD?DCEJIGIJ<@A'(*  #)(.435:99=<9<<677'** #%%'-,+--QVVKRRHMMDIHAGF@GF>ED@ED=CB7=< !"*./]ddbhhhnnipo^edX^]TZZOVURYXJPOION?FE;CBC™¡¢©±±˜žž–šš¼½½ËÉÉÑÎÎÔÑÒ×ÓÔØÔÔÐÉÊÏÆÇÌÆÇÉÂÃÀ½½ÍÌÍüüüÿÿÿïïï ¦¥.35’›Ÿ¤¤ÓÔÑóòíìêåäâãßÙÚÛÖÖ–Ž‚}~ËÉÉÁ¾¾µ´µ«««£££»¹¼þþþéë뉋yƒ‡¥¬°¡¨©àááùôóñìëçâàåÞÜæßÝjce–ÏÉÊÇÁ¿¹º²°°¥¥¥ÅÅÅÿÿþ¹»½6±ª­¹´´¯¬«¤££¼¼¼ÿÿÿÔÕÕx$-,0BŒ™šœ¥¥ÖÖ×ñððíèææâå×ÕÓÖÐχˆ’‹Å¿Â¿º¼º¹¹«««¢£¤ÁÃÅþÿþßàÞ|ƒ‚! x‚¢®¬¢¬ªäààùôóòíëíæäÕÍÍJBCÞÙØ¸³±:45ÈÁ¾·¹³°±¢¡¤ÌÊÍýýý§ª¬%)*289€‰Š¥°­¥¬«§«ªýúøóíëòêè°¨¨\VXàÜÙ[RW‹‚„ÆÁÁÁ»¼¶²²«©©×××ÿÿÿÙÚØ€ˆ‡$--3>AŽœž§§ÏÑÒîîíêæâåãá|SKTHAGA<=945}yzÀ¾À°±±¨ªªÉÊÌÿÿþÞàß|‚"!|‡…¡­«¡ª§áÞÝöñðòëèîæå¯§§¸°°ÛÖÕÙÔÓwqqÆ¿ÀÁ»¼¶²³¥¥¦×ÕÖüýû¥©ª!&&/77ŒŠ¨±°¥«ª£§§üõõóîìñêèÀ¹¹yrußÜÙÖÔÎÌÊÆËÄÅÆÀÁ¹··¬ªªçççÿÿÿÜÞÛ†Ž'009DGŒššŸ¨©ÂÆÆíëëååâàÝÜÜÝÜÞÞÙÙ×Ö×ÔÕ×ÔÓËÉʾ¾¾³µµ¯²±ÓÕÖÿÿþßâà‚‡†"!z…ƒ¡¬ª¢«©ÑÑÍ÷òñíæäçàÞåÝÜà××ÚÕÔÚÕÔÖÑÑÏÊËÇÁº¶·«««åääúûù¥¨©"!-86ŒŠ¥¯®§®­œ ŸöððñìëíèçéãäçàâÜרÑÍÉÑÌÉÎÉÊÈÄļºººººùùùÿÿûÜÝÙ’™–&,+5@?Œ•™§¨§®­ääãßÞÝÚÚÚÕÕÕÓÒÒÎÍÍÐÍÍÑÎÎËËËÂÃ÷ºº±¶µîîîþþýààÞ‰ŽŽ!!x…ƒŸ©§¨¦¹ººñëêêåäãÞÛàÛÚÜÕÖ×ÔÔØÓÔÔÏÐÐÎÎÊÇÇ¿¾¾²²²÷÷õö÷󧪩/64ˆ‡ž©§¦®­–™™æããîëëéâåäÝàߨÛÛØØÑÐÎÒÏÎÎËÌÏÊËÌËËÞÞÞùùùööôÒÕÓŸ¤¢-10$+*~‰ˆ——Ž——ºÂÁ×ÙØ×ÖÖÔÔÔÔÓÓÒÒÒÓÒÒÍÎÎÌÎÍÇÊÉÂÅÄÓÙ×ýýý÷øöÑÒÑŒ‘’oxxŽš™”Ÿ”š˜ÍÎÍàÞÝÞÛÚÛÚÙØÖÖÙ××ÕÓÓÕÒÓÑÑÑÍÌÌËÌËààßþþýèé碤¤#('z„‚›™š¢¡’™˜½¾¾âââçáâßÚÜßÙÜÝÙÙž ­¬°°°´±±µ¯¯²«ª­œŸŽŽŽhjj477 4<;]cdu|~‘“ ¤§¨­®¯µµ°³´¥¦§²¸¹¹¿¿¼ÁÁÂÅÆÅÊÊÀÄÆ±¶¸…ŠŠ499  6==Y`_x~}•”Ÿ¤£²¶¶º»»ÁÁÁ¼»ºÁ¿ÀÇÅÇÊËÌÊËÌËÎÍÇÊÉÆÈʨ«­UWY  -43jqqŒ’’ž¤£¦¨¨³µµÂÃÄÅÅÇÇÆÈÅÅÇ "!%"&)$',(,/&+,'-+-421667::698188.54-44.56-451590684>>+11 31:=/79+34*.0-02165*.-')*!#$"""('%*))-.*.3,15)/0!+53~‡…Ž––‘––šŸœ–œ›’š™’›š’™˜˜—ˆ‘އނ‹†‘…Ž‚ŽŒ…‘…ކ‹™—mut ]jm›š˜¥¢ ¬¨¥±¬¡­«¨¦˜¤¢”¡žŠ’…„Ž‚ŽŒ‹~‹‰{‡…y…ƒx„‚t€}{„‚ NVU‡‘œ˜—¤  «©¨¥›¦¥—¢¡—  ”“•”Š”’‰•’‡“‘ˆ’‘ƒ‚ŽŒ‹}ŠˆŠŠ%(-+53‘œšªµ³·¼»»À¿¹¾½¸½¼±¶µ­²±«°¯ ¥¤›¢¡ž§¦ ¨§ ©§Ÿ¨§¡«©¤®®¥¯¯¶ÁÀmtsktxŸ«­¸ÃÁ¾ÉÇÁÌʽÉǹIJ¾»ª¶´ž©§œ¨¦¡«©¦¥§¥ž§¦›¦¤œ§¥›§¥œ§¥˜¤£ MVV‘œ›°»¹ºÆÄ¾ÉÇÀËɸÃÁ¯»¸«¶´Ÿ©¨Ÿ©§ «©ž©§ «©£®¬ «©Ÿª¨ «©¢­«¨³±),1*11™™·À¿ÄÉÈÈËËÊÍÌÇÉÉÆÉÉÄÆÆÁʽ»¹»ºº¾½º¾½¼À¿¾ÀÀÂÅÄÄÉÉÌÓÒÍÔÔqutq{{©©ÁÊÈÌÔÓËÔÓÍÓÒÉÏÎÊÑÐÂÉȽùÁÀ¹À¿»¿¾¼¿¿½ÀÀ¸ÁÀºÄ¼ÅÃÇÏΠ¦¥ NWW‘œœµ¿¿ÄÎÎÌÔÓÊÒÑÉÐÏÇÎÍÁÉȺÁÀºÀ¿ºÁÀ¹À¿¹À¿¹ÃÁ¹ÂÁ½ÆÅ½ÆÅÄÍÌÆÑÏ+-2'--‘œœ©¯®¾ÂÂÇÉÉÉÊÊÉÊÊËÌÌÍÎÎÊÍÊÅÇÆÇÇÈÉÊÉÊÌËÍÎÎÐÐÐÒÓÓÙÛÛéêêÙÚÚjmm t~•  ¯··ÃÊÉÈÏÎÌÐÍÎÐÏÏÒÑÊÎÍÆÌËÉÏÎÌÑÐËÏÎÏÒÒÏÑÑÒÔÒÔ××ÛÝÝàââ¡¥¤ NVV’œŸ¨«ºÃÄÈÎÍËÐÏÍÓÐÑÕÕÍÑÑÉÎÍÊÏÎÊÏÎËÑÐÌÒÑÐÖÕÏÕÓÔØØÖÛÚâçæÓÛÙ,/2#))’œ™ž²·¶¾À¿ÃÃÃÅÅÅÀÀÀÏÏÏÅÅŸ¹¹ÆÇdz³³ºººÑÑÑÒÒÒÙÙÙæææñññØÚÙehg z…ƒ˜¢¢›¢¢·½¼ÀÆÅÆÊÈËÎÍ·»ºÎÓÒ©®­ÈÍÌÌÏϨ««ÆÊÉÐÒÒ×Ö×ÝÝÝêëëçéé—œœ IRR–Ÿ¡’›Ÿ¥¬¯¼ÁÂÃÈÇÉÍÌËÎÏÁÇÅÊÍ;ÁÁÍÑÐÌÑÐÈÍÌÏÔÓÓÖÖÙÚÚàââîððÖÛÚ*./#"‘š™’˜—£¨§¸¹¹ÁÀÀÅÅʼn‰‰–––²±±WVV¿¾½—–—yxy¼¼¼ÓÓÓÜÜÜóóóõõõÒÖÕ^cb u}¨¥—–¦¬«¹À¿ÄÆÆËÏΆ…x|{|~~ˆŒŒ‰ŠŠ„„„jjjÑÓÔÙÚØäåãôõóååæŽ’ DMM•Ÿ š£§–™­²´¾ÂÂÅÊÉËÏÎvrw‘‘‘———†‡‡ÆËÊ“˜—ÀÄÃÓÕÕÛÜÜèêêõööÑÖÕ(,-‹‘”›š’•–°°±¼¼¼ÃÄÄ¿½¼Á¿ÁÇÄÄ»¹¹ÅÄÄ»¼¼¾¾¾ÓÓÓÙÙÙêêêþþþôôôÉÍÌTZY w‚¨¦—–˜Ÿž·»º¾ÂÂÉËÊÅÅÅÃÄÄÇÇÇÅÆÆÍÍÍÈÈÈÌÌÌÚÚÚßßßðððûûûßàà€‚ƒ CKJ’žœ¥§“˜›ž¤¸º»ÃÆÆËÌÎþÁ¿¾¾ÉÉɾ¾¾ÍÍÍÅÅŲ²²×××àààõõõúúúÍÒÑ"('ˆŽ˜Ÿž‰Œªª«ÈÆÆÎÌÉÑÌÌØÔÒÍÉÉÊÆÅÔÓÑÎÌÌÍËËÐÏÏÝÝÝûûûÿÿÿóóó¾ÂÁRWW r}{¨¦”œ’––ÆÇÇÑÒÒÑÑÑÌÌÌÒÒÒÍÎÎÑÐÑÍÍÎÌÌÍÎÎÎÕÕÕèèèþþþüýýÚÜÜnrs >FEŒ™—ž¨¨”šžŽ’˜···ÑÑÑ×ÔÔÖÕÕÔÔÔÓÔÔÒÒÒÓÓÓÓÓÓÔÔÔÖÖÖæææüüüüýýÄÈÇ!'&…Œ‹˜žˆŒŒÖÓÓßÚÚÞÖÓÚÔÑd\^! #"LFHÇÃÄÄ¿¿¼¹¹¹¹¹óóóÿÿÿóôô´··KPP oyxœ¦¥“œ±²±ãããÛÙÙÔÓÓÔÓÒa``"%”’”ÄÃý½½¸¸¸ÈÈÈþþþüüüÖÚÙaff 8?>‹˜–š¥£˜¢¢Ž‘”ÞÜÝåãâÝÙØÛØ×ÖÓÓœ™™fdeÎÍÍÆÆÆÆÆÆ½½½ÅÅÅúúúþþþÂÇÆ!$%~ˆ†”𙡥¤ëççèâááÚ×ÜÔÕ¸±¯ÖÏÌÚÒÐ|tthacÁºº¸µµª©©ÉÉÉÿÿÿôöö©¬­ILN mww›¥¥™™ÜÛÛèççâààÝÙÚ{xyb]^ËÅŶ´³¨§¨¹¹¹¯¯¯¬¬¬òòòýýýÏÓÒW]\ 7>=…“‘›¨¦’œ­¯°ïííìéçåâÞàÝØÝÙØ«¦¥LGIÊÈÈÄÄĽ½½µµµ±±±ØØØÿÿÿº½¾!%y„‚’˜—­°¯ðìëíçæçàÝãÜÙ¸°±Æ½¾Æ¾¿mffmgiº´´²¯¯©¨¨¯¯¯ÿÿÿñóó¡¥¥FJK juuœ¦¦”ŸêêêëèèæääâÜÜUNPd^_ÉÁĽ»» ¤££´´´ªªª£££áááþÿÿÈÌËMSR 5<;Ž™§¥‘›ÁÄÄòððïíëêçãäáÝßÜØàÝÚ>;<ÂÁÁ¿¿¿···°°°¬¬¬ÀÀÀÿÿÿ³·¸ %t}|‘—–¸¼»óïíîéèåàßéäàE<=WLSE;?yrt½¶·µ²²®­­¤£¤¦¥§üüüòó󛟠DGN hrr𤤛¤£ñððîëìíèçæààWQQ‹……NHM@8=Їˆ»º¹°°°©©©¢¢¢ÔÔÔþþþÀÅÄFNM 077‹š¦¥Ž™™ÏÐÏõóñõñíïìèèæáãÝÛÝØÖ‘ŽŽUTVÀÀÀ³³³­¬­¥¤¦®­¯ÿÿÿ¬°±$ mvu””ÁÄÃóïîðëêêåäìæäE<<—“¡œœ‡…„¨¥¥µ³³«ªª¤£¤¡Ÿ¥÷÷÷óóó•››>EJ dqp™¥¥§¦ñððïìíëæåæáàœ——LEFº²°£ž›—•”¹¸¹°°°¥¥¥¢¢¢ÎÎÎþþþ¹¾½>FE /77|Љ›§¦——ÚÚÚùöõõòíñîêÞÛ×¢ ¡œ™›•“• ‡‡†°°°ª©ª¥¤¦¯®°üüû§««! lvuŒ’’ÉÍÌõñïðëêéäãèáÞ¬¤£Ž‡‡ˆ‡€{{¬©¨µ²³ª©©££¤ ž£ôôôñññ—–9DG eus•¡  §¦ðïïîìëíçæçâáâÝÛÀ¹ºf]brkn¯­®º¹¹­­­¥¥¥ŸŸŸÌÌÍýýý±µµ8?? .66}‹‰—¥£Ž——ÞßÞ÷õóöòïñîêäàÝ™““ž–”ˆ…ƒ}|{œœ±°±«ª¬¢¡£­¬®ûûû ¤¦ hqq‰‘ÅÈÇõñïîéèêåääÞÛâÜÙÈÂÁÏÊÉÊÅÃÆÀÁ·´´­¬­£¢¤¡ ¢ôôôðððŽ““8BC gtr–¢ ¦¬«óòñïíëëæäåáàÞÚÙ×ÔÓÒÔÑÎËÊÀÀÀ·¸¸¯¯¯¨¨¨¢¡£ÔÔÔûüü«­¬7<= .43|‰‡•£ Œ””ÛÝÜôõñõñïñîëëçåßÚÙƒ‡¥¢£ƒ„¢¡£°¯±ª©«¥¤¦®­¯üüü¡£ dnmŠ’¿ÂÀõñïïêéèãââÝÜÙÔÓgbaÐËÊnihA;<°­­°¯°¤£¥£¢¤ööõððð’“?FH kvt™¡¡£©¨ðïïêèèëèäâÝÝÛר×ÕÕÍÌÌÆÇŶ¶¶¼»»²²²©©¨¢¡¤ÛÚÛûûùª«©6:: 276}‡†—£ Œ’“ØÙÙóôðóïîíëëìêê}~ÐÈÊ[XYvvw¨¦¦¶µ·««¬¨§©±±³üüü™žždlkЏº·ôñììèææááÝרÝÙØ¸²²wrrLFG—‘’›•˜´±²¦¦¦§§§ùùùñðï———AHJovuš Ÿ¤¦¥ëëëêêëæääßÝÝÔÓÔÙÙÛÖÕØÕÒÒJGG¹·····«««¦¤§ãääúù÷ª¬¬799 698‰ˆ– žŽ•”ÒÓÓñòïðïêéçæèææ‚€º¶¶|xxOKLÄÁÁ¶··¯°±©««³¶¶ûýýž£¢hml”“­°®ñîêèäââÜÜÁ»»a[]š”•wqr«¥¦|wv¾¿¶µµªªª«««ûüû÷ôñ­¨¤PSRrxw¢¡¡ çééçççâááÙØØ{_V_[RZ\TXIFGÀÀÀ¹¹¹°°°¨§¨ïððúùõ¶¶±:=: ?AA…Љ£¢‘—–ÃÅÅòòðììæåäáÜÚÚÍÎÍ,')¶°°ÓÏÎÄÃü¿¿´··ª­¬¿ÁÁýýý¬ªª hii›Ÿž—œšíëêäáÞÝØØ›”–Æ¿Àsll¹²± ˜šÈÂÁÿ¾¼»»±±±ºº»ÿÿÿöñïÅÀ½upo„ƒ§ªª“––ÛÞÝâââÞÞÞÔÕÕÐÐÏÍÏÍÊËÉËÊÉÉÈÇÀÁ¿½¾½´´µ±±²ùúùõôïÄÁ»HHE =>>ŽŽª­¬˜œ¨­¬ëìëçæäßÝÝÖ××ÉÈɘ“–‰ƒ„ÉÈÇÈÇÈÀÆÄº¿¾¯³²ÔÔÔùøø±²² DDD}~~ottÝÛÜàÜÛÛÕ×ÏÌÎ…‚ƒµ±³ÇÃÂtqnËÉÇÇÄÃÀ¿¿··µÚÛÙÿÿüíèäÒËÉmji CEErtuorr´·¸ÜÞÞרØÐÐÑÎÎÎÍÍÍËËËÌÌÌÊÊÈÅÆÃÃÃÁ¹¹¹ÉÇÆþýùéåáÄ¿DDC noo€‚‚wz}~…„ãääßààÚÚÙØÕÕÑÏÏvqr|wwÉÉÇËÍËÆÉÉÀÃþÀ¿öõõèææ£££ *.-Y__’•ËÌËÓÒÔÑÐÐÐÐÐÎÌËÎËÌÐÍÌÉÊÉÉÊÊÄÅÅËËÊ×××¼¼¼|||"#" 167`ciŸ¢ÁÄÅÇÉÊÌËÌËËËÌÌÌËËËÊËËÊÊËÇÇÇÇÇÇÝÝÜÔÕÕ¶µ´XXW )+,WZ_hlkž¢¡ÒÒÒÏÐÑÐÔÓÐÒÒÒÓÓÑÓÓÏÏÏÎÎÎÌÌÌÈÈÈÕÕÖÎÎÐ…†‡ *+.:8>>?CGHLJKLKMPBFK??D89=/01'((    &()/12578:;<=788/43%(*  &**368?ADDHLKNRMOTKJSDCL<<@125&&) suite3270-4.1/wc3270/wizard.c000066400000000000000000004113051413735575200154340ustar00rootroot00000000000000/* * Copyright (c) 2006-2021 Paul Mattes. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of Paul Mattes nor his contributors may be used * to endorse or promote products derived from this software without * specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. */ /* * wizard.c * A Windows console-based 3270 Terminal Emulator * Session creation wizard */ #include "globals.h" #include #include "3270ds.h" #include "resources.h" #include "ctlr.h" #include "ctlrc.h" #include "host.h" #include "proxy_names.h" #include "resources.h" #include "screen.h" #include "trace.h" #include "utils.h" #include #include #include #include "winvers.h" #include "shortcutc.h" #include "windirs.h" #include "relinkc.h" #define LEGAL_CNAME "ABCDEFGHIJKLMNOPQRSTUVWXYZ" \ "abcedfghijklmnopqrstuvwxyz" \ "0123456789_- " #define KEYMAP_SUFFIX ".wc3270km" #define KS_LEN strlen(KEYMAP_SUFFIX) #define KM_3270 ".3270" #define LEN_3270 strlen(KM_3270) #define KM_NVT ".nvt" #define LEN_NVT strlen(KM_NVT) #define KM_DESC "!description: " #define LEN_DESC strlen(KM_DESC) #define SESS_SUFFIX ".wc3270" #define SESS_LEN strlen(SESS_SUFFIX) #define CHOICE_NONE "none" #define DISPLAY_NONE "(none)" #define DONE_FILE "migrated" enum { MN_NONE = 0, MN_HOST, /* host name */ MN_LU, /* logical unit */ MN_PORT, /* TCP port */ MN_MODEL, /* model number */ MN_OVERSIZE, /* oversize */ MN_CODEPAGE, /* code page */ MN_CROSSHAIR, /* crosshair cursor */ MN_CURSORTYPE, /* cursor type */ MN_CURSORBLINK, /* cursor blink */ MN_TLS, /* TLS tunnel */ MN_VERIFY, /* verify host certificate */ MN_ACCEPT, /* accept hostname */ MN_PROXY, /* use proxy host */ MN_PROXY_SERVER, /* proxy host name */ MN_PROXY_PORT, /* proxy port number */ MN_PROXY_USER, /* proxy user name */ MN_PROXY_PASSWORD, /* proxy password */ MN_3287, /* printer session */ MN_3287_MODE, /* printer mode */ MN_3287_LU, /* printer logical unit */ MN_3287_PRINTER, /* printer Windows printer */ MN_3287_CODEPAGE, /* printer code page */ MN_KEYMAPS, /* keymaps */ MN_EMBED_KEYMAPS, /* embed keymaps */ MN_FONT_SIZE, /* font size */ MN_BG, /* background color */ MN_MENUBAR, /* menu bar */ MN_TRACE, /* trace at start-up */ MN_ALWAYS_INSERT, /* always use insert mode */ MN_NOTEPAD, /* use Notepad to edit file (last option) */ MN_N_OPTS } menu_option_t; /* Return value from get_session(). */ typedef enum { GS_NEW, /* file does not exist */ GS_EDIT, /* file does exist and is editable, edit it */ GS_NOEDIT, /* file does exist and is editable, do not edit it */ GS_OVERWRITE, /* file exists but is uneditable, overwrite it */ GS_ERR = -1, /* error */ GS_NOEDIT_LEAVE = -2 /* uneditable and they don't want to overwrite it */ } gs_t; /* Return value from edit_menu(). */ typedef enum { SRC_PUBLIC_DOCUMENTS,/* success, in public Documents\wc3270 */ SRC_DOCUMENTS, /* success, in My Documents\wc3270 */ SRC_PUBLIC_DESKTOP, /* success, on public Desktop */ SRC_DESKTOP, /* success, on Desktop */ SRC_OTHER, /* not sure where the file is */ SRC_NONE, /* don't rewrite the file */ SRC_ERR = -1 /* error */ } src_t; /* Return value from main_menu(). */ typedef enum { MO_CREATE = 1, /* create new session */ MO_EDIT, /* edit existing session */ MO_DELETE, /* delete existing session */ MO_COPY, /* copy existing session */ MO_RENAME, /* rename existing session */ MO_SHORTCUT, /* create shortcut */ MO_MIGRATE, /* migrate AppData files */ MO_QUIT, /* quit wizard */ MO_ERR = -1 /* error */ } menu_op_t; #define MO_FIRST MO_CREATE #define MO_LAST MO_QUIT /* Return value from session_wizard(). */ typedef enum { SW_SUCCESS, /* successful operation */ SW_QUIT, /* quit */ SW_ERR = -1 /* error */ } sw_t; #define YN_ERR (-1) /* error return from getyn() */ #define YN_RETRY (-2) /* user input error from getyn() */ /* Return value from write_shorcut(). */ typedef enum { WS_NOP, /* did nothing */ WS_CREATED, /* new shortcut */ WS_REPLACED, /* replaced shortcut */ WS_FAILED, /* operation failed */ WS_ERR = -1 /* error */ } ws_t; extern char *wversion; #define CS_WIDTH 19 #define CP_WIDTH 8 #define WP_WIDTH 6 #define CS_COLS 2 #define MAX_PRINTERS 256 PRINTER_INFO_1 printer_info[MAX_PRINTERS]; unsigned num_printers = 0; char default_printer[1024]; static struct { char *name; char *description; } builtin_keymaps[] = { { "rctrl", "Map PC Right Ctrl key to 3270 'Enter' and PC Enter key to 3270 'Newline'" }, { "righttoleft", "Mappings for right-to-left language support" }, { NULL, NULL } }; static struct proxy_desc { char *name; char *protocol; char *port; bool user; } proxies[] = { { PROXY_HTTP, "HTTP tunnel (RFC 2817, e.g., squid)", PORT_HTTP, true }, { PROXY_PASSTHRU, "Sun telnet-passthru", NULL, false }, { PROXY_SOCKS4, "SOCKS version 4", PORT_SOCKS4, true }, { PROXY_SOCKS5, "SOCKS version 5 (RFC 1928)", PORT_SOCKS5, true }, { PROXY_TELNET, "None (just send 'connect host port')", NULL, false }, { NULL, NULL, NULL, false } }; static int write_session_file(const session_t *s, char *us, const char *path); static char *program; static char *appdata_wc3270 = NULL; /* user's wc3270 AppData directory */ static char *common_appdata_wc3270 = NULL;/* common wc327 AppData directory */ static char *installdir = NULL; /* installation directory */ static char *desktop = NULL; /* Desktop */ static char *public_desktop = NULL; /* Public Desktop */ static char *documents; /* My Documents directory */ static char *public_documents; /* public Documents directory */ static char *documents_wc3270; /* My Documents\wc3270 directory */ static char *public_documents_wc3270; /* public Documents\wc3270 directory */ static char *searchdir; /* where to look for current user's sessions */ static char *public_searchdir; /* where to look for shared sessions */ unsigned windirs_flags; static TCHAR username[UNLEN + 1]; static int get_printerlu(session_t *s, int explain); static int num_xs; static const char *xs_name(int n, src_t *lp); static void xs_init(bool include_public); typedef struct xs { /* Existing session: */ src_t location; /* location (current user or all users) */ char *name; /* session name */ struct xs *next; /* list linkage */ } xs_t; typedef struct { /* Set of existing sessions: */ int count; /* count */ xs_t *list; /* list of sessions */ } xsb_t; static xsb_t xs_my; /* current-user sessions */ static xsb_t xs_public; /* public sessions */ static session_t empty_session; static HANDLE conin_handle = INVALID_HANDLE_VALUE; static HANDLE stdout_handle = INVALID_HANDLE_VALUE; static void write_user_settings(char *us, FILE *f); static void display_sessions(bool with_numbers, bool include_public); static ws_t write_shortcut(const session_t *s, bool ask, src_t src, const char *path, bool change_shortcut); static void create_wc3270_folder(src_t src); static sw_t do_upgrade(bool); static BOOL admin(void); static bool ad_exist(void); /* Set up the stdout handle. */ static bool setup_stdout(void) { if (stdout_handle != INVALID_HANDLE_VALUE) { return true; } stdout_handle = GetStdHandle(STD_OUTPUT_HANDLE); return (stdout_handle != INVALID_HANDLE_VALUE); } /* Clear the screen. */ static void cls(void) { system("cls"); if (setup_stdout()) { SetConsoleTextAttribute(stdout_handle, FOREGROUND_BLUE | FOREGROUND_GREEN | FOREGROUND_RED | FOREGROUND_INTENSITY); } } /* Generate output in specific colors. */ static void color_out(char *fmt, int colors, va_list ap) { if (!setup_stdout()) { vprintf(fmt, ap); fflush(stdout); return; } fflush(stdout); SetConsoleTextAttribute(stdout_handle, colors); vprintf(fmt, ap); fflush(stdout); SetConsoleTextAttribute(stdout_handle, FOREGROUND_BLUE | FOREGROUND_GREEN | FOREGROUND_RED | FOREGROUND_INTENSITY); } /* Generate error (actually just red) output. */ static void errout(char *fmt, ...) { va_list ap; va_start(ap, fmt); color_out(fmt, FOREGROUND_RED | FOREGROUND_INTENSITY, ap); va_end(ap); } /* Generate green output. */ static void greenout(char *fmt, ...) { va_list ap; va_start(ap, fmt); color_out(fmt, FOREGROUND_GREEN | FOREGROUND_INTENSITY, ap); va_end(ap); } /* Generate yellow output. */ static void yellowout(char *fmt, ...) { va_list ap; va_start(ap, fmt); color_out(fmt, FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_INTENSITY, ap); va_end(ap); } /* Generate reverse output. */ static void reverseout(char *fmt, ...) { va_list ap; va_start(ap, fmt); color_out(fmt, BACKGROUND_RED | BACKGROUND_BLUE | BACKGROUND_GREEN, ap); va_end(ap); } /* Generate gray output. */ static void grayout(char *fmt, ...) { va_list ap; va_start(ap, fmt); color_out(fmt, FOREGROUND_INTENSITY, ap); va_end(ap); } /** * Fetch a line of input from the console. * * The input is stripped of any leading whitespace and trailing whitespace, * and is NULL-terminated. * * @param[out] buf Buffer to read input into * @param[in] bufsize Size of buffer * * @return buf, or NULL if an error such as EOF is encountered. */ static char * get_input(char *buf, int bufsize) { char *s; size_t sl; /* Make sure all of the output gets out. */ fflush(stdout); /* Get the raw input from stdin. */ if (fgets(buf, bufsize, stdin) == NULL) { return NULL; } /* Trim leading whitespace. */ s = buf; sl = strlen(buf); while (*s && isspace(*s)) { s++; sl--; } if (s != buf) { memmove(buf, s, sl + 1); } /* Trim trailing whitespace. */ while (sl && isspace(buf[--sl])) { buf[sl] = '\0'; } return buf; } /** * Ask a yes or no question. * * @param[in] defval Default response (TRUE or FALSE). * * @return TRUE or FALSE Proper respoonse * YN_ERR I/O error occurred (usually EOF) * YN_RETRY User entry error, error message already printed */ static int getyn(int defval) { char yn[STR_SIZE]; if (get_input(yn, STR_SIZE) == NULL) { return YN_ERR; } if (!yn[0]) { return defval; } if (!strncasecmp(yn, "quit", strlen(yn))) { return YN_ERR; } if (!strncasecmp(yn, "yes", strlen(yn))) { return TRUE; } if (!strncasecmp(yn, "no", strlen(yn))) { return FALSE; } errout("\nPlease answer (y)es or (n)o."); return YN_RETRY; } /** * Gather the list of system printers from Windows. */ static void enum_printers(void) { DWORD needed = 0; DWORD returned = 0; /* Get the default printer name. */ default_printer[0] = '\0'; if (GetProfileString("windows", "device", "", default_printer, sizeof(default_printer)) != 0) { char *comma; if ((comma = strchr(default_printer, ',')) != NULL) { *comma = '\0'; } } /* Get the list of printers. */ if (EnumPrinters( PRINTER_ENUM_LOCAL | PRINTER_ENUM_CONNECTIONS, NULL, 1, (LPBYTE)&printer_info, sizeof(printer_info), &needed, &returned) == 0) { return; } num_printers = returned; } /** * Get an 'other' printer name from the console. * * Accepts the name 'default' to mean the system default printer. * * @param[in] defname Default printer name to use for empty input, or * NULL * @param[out] printername Resulting printer name * @param[in] bufsize Size of printername buffer * * @return 0 for success, -1 for error such as EOF * Returns an empty string in 'printername' to indicate the default printer */ static int get_printer_name(const char *defname, char *printername, int bufsize) { for (;;) { printf("\nEnter Windows printer name: [%s] ", defname[0]? defname: "use system default"); fflush(stdout); if (get_input(printername, bufsize) == NULL) { return -1; } if (!printername[0]) { if (defname[0]) { snprintf(printername, bufsize, "%s", defname); } break; } if (!strcmp(printername, "default")) { printername[0] = '\0'; } if (strchr(printername, '!') || strchr(printername, ',')) { errout("\nInvalid printer name."); continue; } else { break; } } return 0; } typedef struct km { /* Keymap: */ struct km *next; /* List linkage */ char name[MAX_PATH]; /* Name */ char description[STR_SIZE]; /* Description */ char *def_both; /* Definition (common) */ char *def_3270; /* Definition (3270 mode) */ char *def_nvt; /* Definition (NVT mode) */ src_t src; /* Where it is: */ /* SRC_DOCUMENTS per-user */ /* SRC_PUBLIC_DOCUMENTS all-users */ /* SRC_NONE built-in */ /* SRC_OTHER install dir */ } km_t; km_t *km_first = NULL; km_t *km_last = NULL; /** * Save a keymap name. Return its node. * * @param[in] path Pathname of keymap file * @param[in] keymap_name Name of keymap * @param[in] description Keymap description, or NULL * @param[in] src Where it is * * @return Keymap node, possibly newly-allocated. */ static km_t * save_keymap_name(const char *path, char *keymap_name, const char *description, src_t src) { km_t *km; size_t sl; km_t *kms; FILE *f; enum { KMF_BOTH, KMF_3270, KMF_NVT } km_mode = KMF_BOTH; char **def = NULL; km = (km_t *)malloc(sizeof(km_t)); if (km == NULL) { errout("Out of memory\n"); return NULL; } memset(km, '\0', sizeof(km_t)); strcpy(km->name, keymap_name); km->description[0] = '\0'; sl = strlen(km->name); km->src = src; /* Slice off the '.wc3270km' suffix. */ if (sl > KS_LEN && !strcasecmp(km->name + sl - KS_LEN, KEYMAP_SUFFIX)) { km->name[sl - KS_LEN] = '\0'; sl -= KS_LEN; } /* Slice off any '.3270' or '.nvt' before that. */ if (sl > LEN_3270 && !strcasecmp(km->name + sl - LEN_3270, KM_3270)) { km->name[sl - LEN_3270] = '\0'; sl -= LEN_3270; km_mode = KMF_3270; } else if (sl > LEN_NVT && !strcasecmp(km->name + sl - LEN_NVT, KM_NVT)) { km->name[sl - LEN_NVT] = '\0'; sl -= LEN_NVT; km_mode = KMF_NVT; } for (kms = km_first; kms != NULL; kms = kms->next) { if (!strcasecmp(kms->name, km->name)) { break; } } if (kms != NULL) { free(km); km = kms; } else { km->next = NULL; if (km_last != NULL) { km_last->next = km; } else { km_first = km; } km_last = km; } /* Check if we've already seen this keymap. */ switch (km_mode) { case KMF_BOTH: def = &km->def_both; break; case KMF_3270: def = &km->def_3270; break; case KMF_NVT: def = &km->def_nvt; break; } if (*def != NULL) { return km; } if (description != NULL) { strcpy(km->description, description); return km; } /* Dig for a description and save the definition. */ if (path != NULL) { f = fopen(path, "r"); if (f != NULL) { char buf[STR_SIZE]; while (fgets(buf, STR_SIZE, f) != NULL) { int any = 0; sl = strlen(buf); if (sl > 0 && buf[sl - 1] == '\n') { buf[--sl] = '\0'; } if (!strncasecmp(buf, KM_DESC, LEN_DESC)) { strncpy(km->description, buf + LEN_DESC, sl - LEN_DESC + 1); continue; } if (buf[0] == '!' || !buf[0]) { continue; } if (*def == NULL) { *def = malloc(strlen(buf) + 2); } else { *def = realloc(*def, strlen(*def) + 5 + strlen(buf) + 1); any = 1; } if (*def == NULL) { errout("Out of memory\n"); exit(1); } if (!any) { strcat(strcpy(*def, " "), buf); } else { strcat(strcat(*def, "\\n\\\n "), buf); } } fclose(f); } } return km; } /** * Initialize keymaps from one directory. * * @param[in] src type of directory * @param[in] dirname name of directory */ static void save_keymaps_type(src_t src, const char *dirname) { char dpath[MAX_PATH]; char fpath[MAX_PATH]; HANDLE h; WIN32_FIND_DATA find_data; sprintf(dpath, "%s%s", dirname, DONE_FILE); if (access(dpath, R_OK) != 0) { sprintf(dpath, "%s*%s", searchdir, KEYMAP_SUFFIX); h = FindFirstFile(dpath, &find_data); if (h != INVALID_HANDLE_VALUE) { do { sprintf(fpath, "%s%s", dirname, find_data.cFileName); save_keymap_name(fpath, find_data.cFileName, NULL, src); } while (FindNextFile(h, &find_data) != 0); FindClose(h); } } } /** * Initialize the set of available keymaps. * * Adds the builtin keymaps to a database, then searches the two Docs * directories for user-defined keymaps and adds those. * * @param[in] include_public if true, include public folder */ static void save_keymaps(bool include_public) { int i; for (i = 0; builtin_keymaps[i].name != NULL; i++) { save_keymap_name(NULL, builtin_keymaps[i].name, builtin_keymaps[i].description, SRC_NONE); } save_keymaps_type(SRC_DOCUMENTS, searchdir); if (include_public) { save_keymaps_type(SRC_PUBLIC_DOCUMENTS, public_searchdir); } } /** * Fix up a UNC printer path in an old session file. * * The session wizard was originally written without understanding that * backslashes needed to be doubled. So it created session files with UNC * printer paths using incorrect syntax. This function patches that up. * * @param[in,out] s Session * * @return 1 if the name needed fixing, 0 otherwise. */ static int fixup_printer(session_t *s) { char buf[STR_SIZE]; int i, j; char c; if (s->printer[0] == '\\' && s->printer[1] == '\\' && s->printer[2] != '\\') { /* * The session file was created by an earlier version of the * session wizard, and contains a UNC printer path that has * not had its backslashes expanded. Expand them. */ j = 0; for (i = 0; i < (STR_SIZE - 1) && (c = s->printer[i]) != '\0'; i++) { if (c == '\\') { if (j < (STR_SIZE - 1)) { buf[j++] = '\\'; } if (j < (STR_SIZE - 1)) { buf[j++] = '\\'; } } else { if (j < (STR_SIZE - 1)) { buf[j++] = c; } } } buf[j] = '\0'; strncpy(s->printer, buf, STR_SIZE); return 1; } else { return 0; } } /** * Canonicalize a code page. * * @param[in,out] s Session * * @return 1 if the name needed fixing, 0 otherwise. */ static int fixup_codepage(session_t *s) { unsigned i; /* See if it's okay already. */ if (!strcmp(s->codepage, "bracket") || !strncmp(s->codepage, "cp", 2)) { return 0; } /* Search for a match. */ for (i = 0; i < num_codepages; i++) { if (!strcmp(codepages[i].name, "bracket")) { continue; } if (!strcmp(s->codepage, codepages[i].name)) { snprintf(s->codepage, STR_SIZE, "cp%s", codepages[i].hostcp); return 1; } } /* No match. This will not be pretty. */ return 0; } /** * Reformat a quoted UNC path for display. * * @param[in] expanded UNC path in session file (quoted) format * @param[out] condensed UNC path in display format * * @return 1 if it was reformatted, 0 otherwise. */ static int redisplay_printer(const char *expanded, char *condensed) { int i; int j; int bsl = 0; int reformatted = 0; j = 0; for (i = 0; i < STR_SIZE; i++) { char c = expanded[i]; if (c == '\0') { if (bsl) { goto abort; } condensed[j] = c; break; } if (bsl) { if (c == '\\') { reformatted = 1; bsl = 0; } else { goto abort; } } else { condensed[j++] = c; if (c == '\\') { bsl = 1; } } } return reformatted; abort: strcpy(condensed, expanded); return 0; } /** * Clear the screen, print a common banner and a title. * * @param[in] s Session (its name is displayed, if defined) * @param[in] path Pathname of session file, or NULL * @param[in] title Text to display after session and path */ static void new_screen(session_t *s, const char *path, const char *title) { static char wizard[] = "wc3270 Session Wizard"; cls(); reverseout("%s%*s%s\n", wizard, (int)(79 - strlen(wizard) - strlen(wversion)), " ", wversion); if (s->session[0]) { printf("\nSession: %s\n", s->session); } if (path != NULL) { printf("Path: %s\n", path); } printf("\n%s\n", title); } /* * List of main menu operations. * * N.B.: This list is sorted in menu_op_t (MO_XXX) order. If you re-order one, * you *must* re-order the other. */ struct { /* Menu options: */ const char *text; /* long name */ const char *name; /* short name */ const char *alias; /* short name alias */ bool requires_xs; /* if true, requires existing sessions */ bool requires_ad; /* if true, requires unmigrated files */ int num_params; /* number of command-line parameters to accept */ } main_option[] = { { NULL, NULL, FALSE, 0 }, /* intentional hole */ { "Create new session", "new", "create", false, false, 1 }, { "Edit session", "edit", NULL, true, false, 1 }, { "Delete session", "delete", "rm", true, false, 1 }, { "Copy session", "copy", "cp", true, false, 2 }, { "Rename session", "rename", "mv", true, false, 2 }, { "Create shortcut", "shortcut", NULL, true, false, 1 }, { "Migrate files from AppData", "migrate", NULL, false, true, 0 }, { "Quit", "quit", "exit", false, false, 0 }, { NULL, NULL, FALSE, 0 } /* end marker */ }; /** * Main screen. * * Displays a list of existing sessions (as a mnemonic) and a list of * available operations. Prompts for an operation. Returns the operation * selected. * * @param[out] argcp Returned number of parameters * @param[out] argvp Returned parameters * @param[in,out] result Result of previous operation * * @return menu_op_t describing selected operation */ #define MAX_TOKENS 3 static menu_op_t main_menu(int *argcp, char ***argvp, char *result) { static char enq[256]; static char *token[MAX_TOKENS + 1]; int num_tokens; int i; *argcp = 0; *argvp = NULL; new_screen(&empty_session, NULL, "\ Overview\n\ \n\ This wizard allows you to set up a new wc3270 session or modify an existing\n\ one. It also lets you create or replace a shortcut on the desktop.\n"); display_sessions(false, true); printf("\n"); for (i = MO_FIRST; main_option[i].text != NULL; i++) { if ((main_option[i].requires_xs && !num_xs) || (main_option[i].requires_ad && !ad_exist())) { #if 0 grayout(" %d. %s (%s)\n", i, main_option[i].text, main_option[i].name); #endif continue; } else { printf(" %d. %s (%s)\n", i, main_option[i].text, main_option[i].name); } } for (;;) { size_t sl; int mo; if (result && result[0]) { if (result[0] == 1) { greenout("\n%s", result + 1); } else { errout("\n%s", result + 1); } result[0] = '\0'; } printf("\nEnter command name or number (%d..%d) [%s] ", MO_FIRST, MO_LAST, main_option[MO_CREATE].name); fflush(stdout); if (get_input(enq, sizeof(enq)) == NULL) { return MO_ERR; } /* Check the default. */ sl = strlen(enq); if (!sl) { return MO_CREATE; } /* Split into tokens. */ num_tokens = 0; token[0] = strtok(enq, " \t"); if (token[0] == NULL) { errout("\nWow, am I confused.\n"); continue; } sl = strlen(token[0]); num_tokens++; while (num_tokens < MAX_TOKENS) { if ((token[num_tokens] = strtok(NULL, " \t")) != NULL) { num_tokens++; } else { break; } } if (strtok(NULL, " \t") != NULL) { goto extra; } token[num_tokens] = NULL; /* Check numbers. */ mo = atoi(token[0]); if (mo >= MO_FIRST && mo <= MO_LAST) { if (num_tokens > 1) { goto extra; } if (!num_xs && main_option[mo].requires_xs) { errout("\nUnknown command."); continue; } if (main_option[mo].requires_ad && !ad_exist()) { errout("\nUnknown command."); continue; } return (menu_op_t)mo; } /* Check keywords. */ for (i = MO_FIRST; main_option[i].text != NULL; i++) { if (!num_xs && main_option[i].requires_xs) { continue; } if (!strncasecmp(token[0], main_option[i].name, sl)) { if (num_tokens - 1 > main_option[i].num_params) { goto extra; } *argcp = num_tokens - 1; *argvp = token + 1; return (menu_op_t)i; } } /* Check again for aliases. */ for (i = MO_FIRST; main_option[i].text != NULL; i++) { if (!num_xs && main_option[i].requires_xs) { continue; } if (main_option[i].alias != NULL && !strncasecmp(token[0], main_option[i].alias, sl)) { if (num_tokens - 1 > main_option[i].num_params) { goto extra; } *argcp = num_tokens - 1; *argvp = token + 1; return (menu_op_t)i; } } errout("\nUnknown command."); continue; extra: errout("\nExtra parameter(s)."); continue; } } /** * Search a well-defined series of locations for a session file. * * @param[in] session_name Name of session * @param[out] path Returned pathname * * @return SRC_XXX enumeration */ static src_t find_session_file(const char *session_name, char *path) { /* Try the user's My Documents\wc3270. */ snprintf(path, MAX_PATH, "%s%s%s", documents_wc3270, session_name, SESS_SUFFIX); if (access(path, R_OK) == 0) { return SRC_DOCUMENTS; } /* Try the public Documents\wc3270. */ if (admin()) { snprintf(path, MAX_PATH, "%s%s%s", public_documents_wc3270, session_name, SESS_SUFFIX); if (access(path, R_OK) == 0) { return SRC_PUBLIC_DOCUMENTS; } } /* Try the user's Desktop. */ snprintf(path, MAX_PATH, "%s%s%s", desktop, session_name, SESS_SUFFIX); if (access(path, R_OK) == 0) { return SRC_DESKTOP; } /* Try the public Desktop. */ if (admin()) { snprintf(path, MAX_PATH, "%s%s%s", public_desktop, session_name, SESS_SUFFIX); if (access(path, R_OK) == 0) { return SRC_PUBLIC_DESKTOP; } } /* Try cwd. */ snprintf(path, MAX_PATH, "%s%s", session_name, SESS_SUFFIX); if (access(path, R_OK) == 0) { return SRC_OTHER; } /* * Put the new one in My Documents\wc3270. * XXX: I don't think this value is actually used. */ snprintf(path, MAX_PATH, "%s%s%s", documents_wc3270, session_name, SESS_SUFFIX); return SRC_OTHER; } /** * Check a session name for illegal characters. * * Displays an error message. * * @param[in] name Name to check * @param[in] result Result buffer for error message, or NULL * @param[in] result_size Size of result buffer * * @return true for success, false for error. */ #define SESSION_NAME_ERR \ "Illegal character(s).\n\ Session names can only have letters, numbers, spaces, underscores and dashes." static bool legal_session_name(const char *name, char *result, size_t result_size) { if (strspn(name, LEGAL_CNAME) != strlen(name)) { if (result != NULL) { snprintf(result, result_size, "%c%s", 2, SESSION_NAME_ERR); } else { errout("\n%s", SESSION_NAME_ERR); } return false; } else { return true; } } /** * Preliminary triage of session file. * * Prompts for a session name if one was not provided on the command line. * Figures out if the file is editable. Asks if an existing file should be * edited or (if not editable) replaced. * * @param[in] session_name Session name. If NULL, prompt for one * If non-NULL and does not end in .wc3270, take * this as the session name, and fail if it * contains invalid characters. * If non-NULL and ends in .wc3270, take this as * the path to the session file. * @param[out] s Session structure to fill in with name and (if * the file exists) current contents * @param[out] us User parameters * @param[out] path Pathname of session file * @param[in] explicit_edit If true, -e was passed on command line; skip * the 'exists. Edit?' dialog * @param[out] src Where the session file was found, if it exists * @param[out] modified Session was already modified when read in * * Returns: gs_t * GS_NEW file does not exist * GS_EDIT file does exist and is editable, edit it * GS_NOEDIT file does exist and is editable, do not edit it * GS_OVERWRITE file exists but is uneditable, overwrite it * GS_ERR fatal error * GS_NOEDIT_LEAVE uneditable and they don't want to overwrite it */ static gs_t get_session(const char *session_name, session_t *s, char **us, char *path, bool explicit_edit, src_t *src, bool *modified) { FILE *f; int rc; int editable; *src = SRC_OTHER; *modified = false; if (session_name != NULL) { size_t sl = strlen(session_name); size_t slen = sizeof(s->session); /* * Session file pathname or session name specified on the * command line. */ if (sl > SESS_LEN && !strcasecmp(session_name + sl - SESS_LEN, SESS_SUFFIX)) { char *bsl; char *colon; /* Ends in .wc3270km. Pathname. */ path[MAX_PATH - 1] = '\0'; bsl = strrchr(session_name, '\\'); colon = strrchr(session_name, ':'); if (bsl == NULL && colon == NULL) { /* * No directory or drive prefix -- just a file name. */ if (sl - SESS_LEN + 1 < slen) { slen = sl - SESS_LEN + 1; } strncpy(s->session, session_name, slen); s->session[slen - 1] = '\0'; *src = find_session_file(s->session, path); } else { /* * Full pathname. Copy what's between the last [:\] and * ".wc3270" as the session name. */ char *start; strncpy(path, session_name, MAX_PATH); if (bsl != NULL && colon == NULL) { start = bsl + 1; } else if (bsl == NULL && colon != NULL) { start = colon + 1; } else if (bsl > colon) { start = bsl + 1; } else { start = colon + 1; } if (strlen(start) - SESS_LEN + 1 < slen) { slen = strlen(start) - SESS_LEN + 1; } strncpy(s->session, start, slen); s->session[slen - 1] = '\0'; /* * Try to figure out where it is. This is inherently * imperfect. */ if (!strncmp(path, documents_wc3270, strlen(documents_wc3270))) { *src = SRC_DOCUMENTS; } else if (!strncmp(path, public_documents_wc3270, strlen(public_documents_wc3270))) { *src = SRC_PUBLIC_DOCUMENTS; } else if (!strncmp(path, desktop, strlen(desktop))) { *src = SRC_DESKTOP; } else if (!strncmp(path, public_desktop, strlen(public_desktop))) { *src = SRC_PUBLIC_DESKTOP; } else { *src = SRC_OTHER; } } } else { /* Session name, no suffix. */ strncpy(s->session, session_name, slen); s->session[slen - 1] = '\0'; *src = find_session_file(s->session, path); } /* Validate the session name. */ if (!legal_session_name(s->session, NULL, 0)) { return GS_ERR; } } else { /* Get the session name interactively. */ new_screen(s, NULL, "\ New Session Name\n\ \n\ This is a unique name for the wc3270 session. It is the name of the file\n\ containing the session configuration parameters and the name of the desktop\n\ shortcut."); for (;;) { printf("\nEnter session name: "); fflush(stdout); if (get_input(s->session, sizeof(s->session)) == NULL) { return GS_ERR; } if (!s->session[0]) { continue; } if (!legal_session_name(s->session, NULL, 0)) { continue; } break; } *src = find_session_file(s->session, path); } f = fopen(path, "r"); if (f != NULL) { editable = read_session(f, s, us); fclose(f); if (editable) { if (fixup_printer(s)) { printf("\n" "NOTE: This session file contains a UNC printer name that needs to be updated\n" " to be compatible with the current version of wc3270. Even if you do not\n" " need to make any other changes to the session, please update the session\n" " file to have this corrected.\n"); *modified = true; } if (fixup_codepage(s)) { printf("\n" "NOTE: This session file contains a code page alias. Even if you do not need\n" " to make any other changes to the session, please update the session file\n" " have this name changed to the canonical form.\n"); *modified = true; } } if (editable) { if (explicit_edit) { return GS_EDIT; /* edit it */ } for (;;) { printf("\nSession '%s' exists", s->session); switch (*src) { case SRC_PUBLIC_DOCUMENTS: printf(" (defined for all users)"); break; case SRC_DOCUMENTS: printf(" (defined for user '%s')", username); break; default: break; } printf(".\nEdit it? (y/n) [y] "); fflush(stdout); rc = getyn(TRUE); if (rc == YN_ERR) { return GS_ERR; } else if (rc == FALSE) { return GS_NOEDIT; /* do not edit */ } else if (rc == TRUE) { return GS_EDIT; /* edit it */ } } } else { for (;;) { printf("\nSession '%s' already exists but cannot be edited. " "Replace it? (y/n) [n] ", s->session); fflush(stdout); rc = getyn(FALSE); if (rc == YN_ERR) { return GS_ERR; } else if (rc == FALSE) { return GS_NOEDIT_LEAVE; /* don't overwrite */ } else if (rc == TRUE) { return GS_OVERWRITE; /* overwrite */ } } } } else { /* * Set the auto-shortcut flag in all new session files, * but not in old ones. This will prevent unintended * interactions with old shortcuts that don't specify +S, but * will allow new session files to be started with a * double-click. */ s->flags |= WF_AUTO_SHORTCUT; return GS_NEW; /* create it */ } } /** * Prompt for a hostname or address. * * Allows IPv6 addresses if the underlying OS supports them. * * @param[in,out] s Session * * @return 0 for success, -1 for failure. */ static int get_host(session_t *s) { char buf[STR_SIZE]; #define COMMON_HOST_TEXT1 "\ Host Name\n\ \n\ This specifies the IBM host to connect to. It can be a symbolic name like\n\ 'foo.company.com'" #define COMMON_HOST_TEXT2 "\ an IPv4 address in dotted-decimal notation such as\n\ '1.2.3.4'" #define IPV6_HOST_TEXT "\ an IPv6 address in colon notation, such as 'fec0:0:0:1::27'" #define COMMON_HOST_TEXT3 "\ \n\ \n\ To create a session file with no hostname (one that just specifies the model\n\ number, code page, etc.), enter '" CHOICE_NONE "'." new_screen(s, NULL, COMMON_HOST_TEXT1 ", " COMMON_HOST_TEXT2 " or " IPV6_HOST_TEXT "." COMMON_HOST_TEXT3); for (;;) { size_t n_good; if (s->host[0]) { printf("\nEnter host name or IP address: [%s] ", s->host); } else { printf("\nEnter host name or IP address: "); } fflush(stdout); if (get_input(buf, sizeof(s->host)) == NULL) { return -1; } else if (!strcmp(buf, CHOICE_NONE)) { strcpy(s->host, buf); break; } n_good = strcspn(buf, " @[]"); if (n_good != strlen(buf)) { errout("\nInvalid character '%c' in host name.", buf[n_good]); continue; } if (isalpha(buf[0]) && buf[1] == ':') { errout("\nDo not include prefixes in host names."); if (buf[0] == 'L' || buf[0] == 'l') { errout("\nTo set up a TLS tunnel, use the TLS tunnel option."); } continue; } if (!buf[0]) { if (!s->host[0]) { continue; } } else { strcpy(s->host, buf); } break; } return 0; } /** * Prompt for a port number. * * Allows an non-zero 16-bit number, or the name 'telnet' (23). * * @return 0 for success, -1 for error. */ static int get_port(session_t *s) { char inbuf[STR_SIZE]; char *ptr; unsigned long u; new_screen(s, NULL, "\ TCP Port\n\ \n\ This specifies the TCP Port to use to connect to the host. It is a number from\n\ 1 to 65535 or the name 'telnet'. The default is the 'telnet' port, port 23."); for (;;) { printf("\nTCP port: [%d] ", (int)s->port); if (get_input(inbuf, sizeof(inbuf)) == NULL) { return -1; } else if (!inbuf[0]) { break; } else if (!strcasecmp(inbuf, "telnet")) { s->port = 23; break; } u = strtoul(inbuf, &ptr, 10); if (u < 1 || u > 65535 || *ptr != '\0') { errout("\nInvalid port."); } else { s->port = (int)u; break; } } return 0; } static int get_lu(session_t *s) { char buf[STR_SIZE]; new_screen(s, NULL, "\ Logical Unit (LU) Name\n\ \n\ This specifies a particular Logical Unit or Logical Unit group to connect to\n\ on the host. The default is to allow the host to select the Logical Unit."); for (;;) { size_t n_good; printf("\nEnter Logical Unit (LU) name: [%s] ", s->luname[0]? s->luname: CHOICE_NONE); fflush(stdout); if (get_input(buf, sizeof(buf)) == NULL) { return -1; } else if (!buf[0]) { break; } else if (!strcmp(buf, CHOICE_NONE)) { s->luname[0] = '\0'; break; } n_good = strcspn(buf, ":@[]"); if (n_good != strlen(buf)) { errout("\nLU name contains invalid character '%c'", buf[n_good]); continue; } strcpy(s->luname, buf); break; } return 0; } /** * Prompt for a model number. * * @param[in,out] s Session * * @return 0 for success, -1 for error. */ static int get_model(session_t *s) { unsigned long i; char inbuf[STR_SIZE]; char *ptr; unsigned long u; unsigned long max_model = 5; new_screen(s, NULL, "\ Model Number\n\ \n\ This specifies the dimensions of the screen."); printf("\n"); for (i = 2; i <= max_model; i++) { if (wrows[i]) { printf(" Model %lu has %2d rows and %3d columns.\n", i, wrows[i], wcols[i]); } } for (;;) { printf("\nEnter model number: (2, 3, 4 or 5) [%d] ", (int)s->model); fflush(stdout); if (get_input(inbuf, sizeof(inbuf)) == NULL) { return -1; } else if (!inbuf[0]) { break; } u = strtoul(inbuf, &ptr, 10); if (u < 2 || u > max_model || *ptr != '\0') { errout("\nInvalid model number."); continue; } else if (s->model != (int)u) { s->model = (int)u; s->ov_rows = 0; s->ov_cols = 0; } break; } return 0; } /** * Prompt for an oversize option. * * @param[in,out] s Session * * @return 0 for success, -1 for error */ static int get_oversize(session_t *s) { char inbuf[STR_SIZE]; unsigned r, c; char xc; new_screen(s, NULL, "\ Oversize\n\ \n\ This specifies 'oversize' dimensions for the screen, beyond the number of\n\ rows and columns specified by the model number. Some hosts are able to use\n\ this additional screen area; some are not. Enter '"CHOICE_NONE"' to specify no\n\ oversize."); printf("\n\ The oversize must be larger than the default for a model %d (%u rows x %u\n\ columns).\n", (int)s->model, wrows[s->model], wcols[s->model]); for (;;) { printf("\nEnter oversize dimensions (rows x columns) "); if (s->ov_rows || s->ov_cols) { printf("[%ux%u]: ", s->ov_rows, s->ov_cols); } else { printf("["CHOICE_NONE"]: "); } fflush(stdout); if (get_input(inbuf, sizeof(inbuf)) == NULL) { return -1; } else if (!inbuf[0]) { break; } else if (!strcasecmp(inbuf, CHOICE_NONE)) { s->ov_rows = 0; s->ov_cols = 0; break; } else if (sscanf(inbuf, "%u x %u%c", &r, &c, &xc) != 2) { errout("\nPlease enter oversize in the form 'rows x cols'."); continue; } else if ((int)r < wrows[s->model] || (int)c < wcols[s->model]) { errout("\nOversize must be larger than the default for a model %d " "(%u x %u).", (int)s->model, wrows[s->model], wcols[s->model]); continue; } else if (r > 255 || c > 255) { errout("\nRows and columns must be 255 or less."); continue; } else if (r * c > 0x4000) { errout("\nThe total screen area (rows multiplied by columns) must " "be less than %d.", 0x4000); continue; } s->ov_rows = (unsigned char)r; s->ov_cols = (unsigned char)c; break; } return 0; } /** * Issue a warning for DBCS characters sets. */ static void dbcs_check(void) { if (IsWindowsVersionOrGreater(6, 0, 0)) { printf("\n\ Note: wc3270 DBCS support on Windows Vista and later requires setting the\n\ Windows System Locale to a matching language.\n"); } else { printf("\n\ Note: wc3270 DBCS support on Windows XP requires installation of Windows East\n\ Asian language support.\n"); } printf("[Press Enter to continue] "); fflush(stdout); getchar(); } /** * Prompt for a code page. * * @param[in,out] s Session * * @return 0 for success, -1 for error */ static int get_codepage(session_t *s) { char buf[STR_SIZE]; unsigned i, k; char *ptr; unsigned long u; int was_dbcs = s->is_dbcs; new_screen(s, NULL, "\ Code Page\n\ \n\ This specifies the EBCDIC code page used by the host."); printf("\ \nAvailable code pages:\n\n\ # Name Host CP # Name Host CP\n\ --- ------------------- -------- --- ------------------- --------\n"); k = 0; for (i = 0; codepages[i].name != NULL; i++) { size_t j; if (i) { if (!(i % CS_COLS)) { printf("\n"); } else { printf(" "); } } if (!(i % 2)) { j = k; } else { j += num_codepages / 2; k++; } printf(" %2d. %-*s %-*s", (int)(j + 1), CS_WIDTH, codepages[j].name, CP_WIDTH, codepages[j].hostcp); } printf("\n"); for (;;) { printf("\nCode page: [%s] ", s->codepage); if (get_input(buf, sizeof(buf)) == NULL) { return -1; } if (!buf[0]) { break; } /* Check for numeric index. */ u = strtoul(buf, &ptr, 10); if (u > 0 && u <= i && *ptr == '\0') { if (!strcmp(codepages[u - 1].name, "bracket")) { strcpy(s->codepage, "bracket"); } else { snprintf(s->codepage, STR_SIZE, "cp%s", codepages[u - 1].hostcp); } s->is_dbcs = codepages[u - 1].is_dbcs; break; } /* Check for numeric code page. */ if (u > 0 && *ptr == '\0') { unsigned k; bool matched = false; for (k = 0; k < num_codepages; k++) { if (strcmp(codepages[k].name, "bracket") && u == atoi(codepages[k].hostcp)) { snprintf(s->codepage, STR_SIZE, "cp%s", codepages[k].hostcp); s->is_dbcs = codepages[k].is_dbcs; matched = true; break; } } if (matched) { break; } } /* Check for name match. */ for (i = 0; codepages[i].name != NULL; i++) { if (!strcmp(buf, codepages[i].name)) { if (!strcmp(buf, "bracket")) { strcpy(s->codepage, buf); } else { snprintf(s->codepage, STR_SIZE, "cp%s", codepages[i].hostcp); } s->is_dbcs = codepages[i].is_dbcs; break; } } /* Check for a 'cpXXX' match. */ if (!strncmp(buf, "cp", 2) && strlen(buf) > 2) { u = strtoul(buf + 2, &ptr, 10); if (u > 0 && *ptr == '\0') { unsigned k; bool matched = false; for (k = 0; k < num_codepages; k++) { if (strcmp(codepages[k].name, "bracket") && u == atoi(codepages[k].hostcp)) { snprintf(s->codepage, STR_SIZE, "cp%s", codepages[k].hostcp); s->is_dbcs = codepages[k].is_dbcs; matched = true; break; } } if (matched) { break; } } } if (codepages[i].name != NULL) { break; } errout("\nInvalid code page name."); } if (!was_dbcs && s->is_dbcs) { dbcs_check(); } return 0; } /** * Prompt for crosshair cursor mode. * * @param[in,out] s Session * * @return 0 for success, -1 for failure */ static int get_crosshair(session_t *s) { int rc; new_screen(s, NULL, "\ Crosshair Cursor\n\ \n\ This option causes wc3270 to use a crosshair cursor."); do { printf("\nCrosshair cursor? [%s] ", (s->flags & WF_CROSSHAIR)? "y" : "n"); fflush(stdout); rc = getyn((s->flags & WF_CROSSHAIR) != 0); switch (rc) { case YN_ERR: return -1; case TRUE: s->flags |= WF_CROSSHAIR; break; case FALSE: s->flags &= ~WF_CROSSHAIR; break; } } while (rc < 0); return 0; } /** * Prompt for alternate cursor mode. * * @param[in,out] s Session * * @return 0 for success, -1 for failure */ static int get_cursor_type(session_t *s) { char inbuf[STR_SIZE]; new_screen(s, NULL, "\ Cursor Type\n\ \n\ This option controls whether the wc3270 cursor is a block or an underscore."); do { printf("\nCursor type? (block/underscore) [%s] ", (s->flags & WF_ALTCURSOR)? "underscore" : "block"); fflush(stdout); if (get_input(inbuf, sizeof(inbuf)) == NULL) { return -1; } if (!inbuf[0]) { break; } if (!strncasecmp(inbuf, "quit", strlen(inbuf))) { return -1; } if (!strncasecmp(inbuf, "underscore", strlen(inbuf))) { s->flags |= WF_ALTCURSOR; break; } if (!strncasecmp(inbuf, "block", strlen(inbuf))) { s->flags &= ~WF_ALTCURSOR; break; } errout("\nPlease answer 'underscore' or 'block'."); } while (true); return 0; } /** * Prompt for cursor blink. * * @param[in,out] s Session * * @return 0 for success, -1 for failure */ static int get_cursor_blink(session_t *s) { int rc; new_screen(s, NULL, "\ Cursor Blink\n\ \n\ This option controls whether the wc3270 cursor blinks."); do { printf("\nCursor blink? (y/n) [%s] ", (s->flags2 & WF2_CURSOR_BLINK)? "y": "n"); fflush(stdout); switch ((rc = getyn((s->flags2 & WF2_CURSOR_BLINK)? TRUE: FALSE))) { case YN_ERR: return -1; case TRUE: s->flags2 |= WF2_CURSOR_BLINK; return 0; case FALSE: s->flags2 &= ~WF2_CURSOR_BLINK; return 0; } } while (rc < 0); return 0; } /** * Prompt for TLS tunnel mode. * * @param[in,out] s Session * * @return 0 for success, -1 for failure */ static int get_tls(session_t *s) { new_screen(s, NULL, "\ TLS Tunnel\n\ \n\ This option causes wc3270 to first create a tunnel to the host using\n\ Transport Layer Security (TLS); then it runs the TN3270 session inside the\n\ tunnel.\n\ \n\ TLS is also known as the Secure Sockets Layer (SSL)."); do { printf("\nUse a TLS tunnel? (y/n) [%s] ", s->tls? "y" : "n"); fflush(stdout); s->tls = getyn(s->tls); if (s->tls == YN_ERR) { return -1; } } while (s->tls < 0); return 0; } /** * Prompt for verify-host-certificate mode * * @param[in,out] s Session * * @return 0 for success, -1 for error */ static int get_verify(session_t *s) { int rc; new_screen(s, NULL, "\ Verify Host Certificates\n\ \n\ This option causes wc3270 to verify the certificates presented by the host\n\ if a TLS tunnel is used, or if the TELNET TLS option is negotiated. If the\n\ certificates are not valid, the connection will be aborted."); if (!(s->flags2 & WF2_NEW_VHC_DEFAULT)) { yellowout("\n\ Note: The default for this option has changed from 'n' to 'y'.\n"); } do { printf("\nVerify host certificates? (y/n) [%s] ", (s->flags2 & WF2_NO_VERIFY_HOST_CERT)? "n" : "y"); fflush(stdout); rc = getyn((s->flags2 & WF2_NO_VERIFY_HOST_CERT) == 0); switch (rc) { case YN_ERR: return -1; case TRUE: s->flags2 &= ~WF2_NO_VERIFY_HOST_CERT; s->flags2 |= WF2_NEW_VHC_DEFAULT; break; case FALSE: s->flags2 |= WF2_NO_VERIFY_HOST_CERT; s->flags2 |= WF2_NEW_VHC_DEFAULT; break; } } while (rc < 0); return 0; } /** * Prompt for accept host name. * * @param[in,out] s Session * * @return 0 for success, -1 for error */ static int get_accept(session_t *s) { char inbuf[STR_SIZE]; new_screen(s, NULL, "\ Accept host name\n\ \n\ This option specifies the name to match against in the TLS certificate\n\ provided by the host. It is needed if the certificate contains a different\n\ name than the one used to connect to it.\n\ \n\ To remove an existing accept host name, enter '" CHOICE_NONE "'."); while (true) { if (s->accept_hostname[0]) { printf("\nAccept host name: [%s] ", s->accept_hostname); } else { printf("\nAccept host name: "); } fflush(stdout); if (get_input(inbuf, sizeof(inbuf)) == NULL) { return -1; } else if (!strcmp(inbuf, CHOICE_NONE)) { memset(s->accept_hostname, 0, STR_SIZE); break; } else if (!inbuf[0]) { break; } if (strchr(inbuf, ' ') != NULL) { errout("\nName cannot contain spaces."); continue; } strcpy(s->accept_hostname, inbuf); break; } return 0; } /** * Prompt for proxy server name * * @param[in,out] s Session * * @return 0 for success, -1 for failure */ static int get_proxy_server(session_t *s) { char hbuf[STR_SIZE]; /* Get the hostname. */ for (;;) { if (s->proxy_host[0]) { printf("\nProxy server name: [%s] ", s->proxy_host); } else { printf("\nProxy server name: "); } if (get_input(hbuf, STR_SIZE) == NULL) { return -1; } if (!hbuf[0]) { if (s->proxy_host[0]) { break; } else { continue; } } if (strchr(hbuf, '[') != NULL || strchr(hbuf, ']') != NULL) { errout("\nServer name cannot include '[' or ']'."); continue; } strcpy(s->proxy_host, hbuf); break; } return 0; } /** * Find a proxy descriptor. * * @param[in] name Proxy name * * @return proxy descriptor, or NULL */ static struct proxy_desc * find_proxy(char *name) { int i; for (i = 0; proxies[i].name != NULL; i++) { if (!strcmp(name, proxies[i].name)) { return &proxies[i]; } } return NULL; } /** * Prompt for proxy server port * * @param[in,out] s Session * * @return 0 for success, -1 for failure */ static int get_proxy_server_port(session_t *s) { struct proxy_desc *d; char pbuf[STR_SIZE]; if ((d = find_proxy(s->proxy_type)) == NULL) { errout("Internal error\n"); return -1; } for (;;) { unsigned long l; char *ptr; if (s->proxy_port[0]) { printf("\nProxy server TCP port: [%s] ", s->proxy_port); } else if (d->port != NULL) { printf("\nProxy server TCP port: [%s] ", d->port); } else { printf("\nProxy server TCP port: "); } if (get_input(pbuf, STR_SIZE) == NULL) { return -1; } else if (!strcmp(pbuf, "default") && d->port != NULL) { strcpy(s->proxy_port, d->port); break; } else if (!pbuf[0]) { if (s->proxy_port[0]) { break; } else if (d->port != NULL) { strcpy(s->proxy_port, d->port); break; } else { continue; } } l = strtoul(pbuf, &ptr, 10); if (l == 0 || *ptr != '\0' || (l & ~0xffffL)) { errout("\nInvalid port."); } else { strcpy(s->proxy_port, pbuf); break; } } return 0; } /** * Prompt for proxy type * * @param[in,out] s Session * * @return 0 for success, -1 for failure */ static int get_proxy(session_t *s) { int i; char tbuf[STR_SIZE]; char old_proxy[STR_SIZE]; struct proxy_desc *d; new_screen(s, NULL, "\ Proxy\n\ \n\ If you do not have a direct connection to your host, this option allows\n\ wc3270 to use a proxy server to make the connection."); printf("\nProxy types available:\n"); printf(" 1. none Direct connection to host\n"); for (i = 0; proxies[i].name != NULL; i++) { printf(" %d. %-8s %s\n", i + 2, proxies[i].name, proxies[i].protocol); } strcpy(old_proxy, s->proxy_type); /* Get the proxy type. */ for (;;) { int n; printf("\nProxy type: [%s] ", s->proxy_type[0]? s->proxy_type: CHOICE_NONE ); if (get_input(tbuf, STR_SIZE) == NULL) { return -1; } else if (!tbuf[0]) { return 0; } else if (!strcasecmp(tbuf, CHOICE_NONE)) { s->proxy_type[0] = '\0'; s->proxy_host[0] = '\0'; s->proxy_port[0] = '\0'; return 0; } d = find_proxy(tbuf); if (d != NULL) { strcpy(s->proxy_type, tbuf); break; } n = atoi(tbuf); if (n > 0 && n <= i+1) { if (n == 1) { s->proxy_type[0] = '\0'; s->proxy_host[0] = '\0'; s->proxy_port[0] = '\0'; s->proxy_user[0] = '\0'; s->proxy_password[0] = '\0'; return 0; } else { d = &proxies[n - 2]; strcpy(s->proxy_type, d->name); break; } } errout("\nInvalid proxy type."); } /* If the type changed, the rest of the information is invalid. */ if (strcmp(old_proxy, s->proxy_type)) { s->proxy_host[0] = '\0'; s->proxy_port[0] = '\0'; s->proxy_user[0] = '\0'; s->proxy_password[0] = '\0'; if (get_proxy_server(s) < 0) { return -1; } if (d->port != NULL) { strcpy(s->proxy_port, d->port); } else if (get_proxy_server_port(s) < 0) { return -1; } } return 0; } /** * Prompt for proxy user name. * * @param[in,out] s Session * * @return 0 for success, -1 for failure */ static int get_proxy_user(session_t *s) { struct proxy_desc *d; char pbuf[STR_SIZE]; if ((d = find_proxy(s->proxy_type)) == NULL) { errout("Internal error\n"); return -1; } new_screen(s, NULL, "\ Proxy User Name\n\ \n\ Enter the optional user name to use with the proxy. To specify no user name,\n\ enter 'none'."); for (;;) { if (s->proxy_user[0]) { printf("\nProxy user name: [%s] ", s->proxy_user); } else { printf("\nProxy user name: "); } if (get_input(pbuf, STR_SIZE) == NULL) { return -1; } else if (!pbuf[0]) { if (s->proxy_user[0]) { break; } continue; } if (!strcmp(pbuf, "none")) { s->proxy_user[0] = '\0'; break; } else if (strchr(pbuf, ':') || strchr(pbuf, '@')) { errout("\nInvalid user name."); } else { strcpy(s->proxy_user, pbuf); break; } } return 0; } /** * Prompt for proxy password. * * @param[in,out] s Session * * @return 0 for success, -1 for failure */ static int get_proxy_password(session_t *s) { struct proxy_desc *d; char pbuf[STR_SIZE]; if ((d = find_proxy(s->proxy_type)) == NULL) { errout("Internal error\n"); return -1; } new_screen(s, NULL, "\ Proxy Password\n\ \n\ Enter the optional password to use with the proxy. To specify no password,\n\ enter 'none'.\n\ \n\ The password will not be echoed."); for (;;) { char *input; if (s->proxy_password[0]) { printf("\nProxy password: [***] "); } else { printf("\nProxy password: "); } SetConsoleMode(conin_handle, ENABLE_LINE_INPUT | ENABLE_PROCESSED_INPUT); input = get_input(pbuf, STR_SIZE); SetConsoleMode(conin_handle, ENABLE_ECHO_INPUT | ENABLE_LINE_INPUT | ENABLE_PROCESSED_INPUT); if (input == NULL) { return -1; } else if (!pbuf[0]) { if (s->proxy_password[0]) { break; } continue; } if (!strcmp(pbuf, "none")) { s->proxy_password[0] = '\0'; break; } else if (strchr(pbuf, ':') || strchr(pbuf, '@')) { errout("\nInvalid password."); } else { strcpy(s->proxy_password, pbuf); break; } } return 0; } /** * Prompt for pr3287 session * * @param[in,out] s Session * * @return 0 for success, -1 for failure */ static int get_pr3287(session_t *s) { new_screen(s, NULL, "\ pr3287 Session\n\ \n\ This option allows wc3270 to automatically start a pr3287 printer session\n\ when it connects to the host, allowing the host to direct print jobs to a\n\ Windows printer."); do { printf("\nAutomatically start a pr3287 printer session? (y/n) [n] "); fflush(stdout); s->wpr3287 = getyn(s->wpr3287); if (s->wpr3287 == YN_ERR) { return -1; } } while (s->wpr3287 < 0); if (s->wpr3287 == 0) { strcpy(s->printerlu, "."); } return 0; } /** * Prompt for pr3287 session mode (associate/LU) * * @param[in,out] s Session * * @return 0 for success, -1 for failure */ static int get_printer_mode(session_t *s) { int rc; new_screen(s, NULL, "\ pr3287 Session -- Printer Mode\n\ \n\ The pr3287 printer session can be configured in one of two ways. The first\n\ method automatically associates the printer session with the current login\n\ session. The second method specifies a particular Logical Unit (LU) to use\n\ for the printer session."); do { printf("\nAssociate the printer session with the current login " "session (y/n) [%s]: ", strcmp(s->printerlu, ".")? "n": "y"); fflush(stdout); rc = getyn(!strcmp(s->printerlu, ".")); switch (rc) { case YN_ERR: return -1; case FALSE: if (!strcmp(s->printerlu, ".")) { s->printerlu[0] = '\0'; } break; case TRUE: strcpy(s->printerlu, "."); break; } } while (rc < 0); if (strcmp(s->printerlu, ".") && get_printerlu(s, 0) < 0) { return -1; } return 0; } /** * Prompt for pr3287 session LU name * * @param[in,out] s Session * * @return 0 for success, -1 for failure */ static int get_printerlu(session_t *s, int explain) { if (explain) { new_screen(s, NULL, "\ pr3287 Session -- Printer Logical Unit (LU) Name\n\ \n\ If the pr3287 printer session is associated with a particular Logical Unit,\n\ then that Logical Unit must be configured explicitly."); } for (;;) { char tbuf[STR_SIZE]; if (s->printerlu[0]) { printf("\nEnter printer Logical Unit (LU) name: [%s] ", s->printerlu); } else { printf("\nEnter printer Logical Unit (LU) name: "); } fflush(stdout); if (get_input(tbuf, STR_SIZE) == NULL) { return -1; } if (!tbuf[0]) { if (s->printerlu[0]) { break; } else { continue; } } else { strcpy(s->printerlu, tbuf); break; } } return 0; } /** * Prompt for pr3287 session printer name * * @param[in,out] s Session * * @return 0 for success, -1 for failure */ static int get_printer(session_t *s) { char tbuf[STR_SIZE]; unsigned i; char *ptr; unsigned long u; char cbuf[STR_SIZE]; int matching_printer = -1; new_screen(s, NULL, "\ pr3287 Session -- Windows Printer Name\n\ \n\ The pr3287 session can use the Windows default printer as its real printer,\n\ or you can specify a particular Windows printer. You can specify a local\n\ printer, or specify a remote printer with a UNC path, e.g.,\n\ '\\\\server\\printer22'. You can specify the Windows default printer with\n\ the name 'default'."); redisplay_printer(s->printer, cbuf); enum_printers(); if (num_printers) { printf("\nWindows printers (system default is '*'):\n"); for (i = 0; i < num_printers; i++) { printf(" %2d. %c %s\n", i + 1, strcasecmp(default_printer, printer_info[i].pName)? ' ': '*', printer_info[i].pName); if (!strcasecmp(cbuf, printer_info[i].pName)) { matching_printer = i; } } printf(" %2d. Other\n", num_printers + 1); if (cbuf[0] && matching_printer < 0) { matching_printer = num_printers; } for (;;) { if (s->printer[0]) { printf("\nEnter Windows printer (1-%d): [%d] ", num_printers + 1, matching_printer + 1); } else { printf("\nEnter Windows printer (1-%d): [use system " "default] ", num_printers + 1); } fflush(stdout); if (get_input(tbuf, STR_SIZE) == NULL) { return -1; } else if (!tbuf[0]) { if (!s->printer[0] || matching_printer < (int)num_printers) { break; } /* * An interesting hack. If they entered nothing, and the * default is 'other', pretend they typed in the number for * 'other'. */ snprintf(tbuf, sizeof(tbuf), "%d", matching_printer + 1); } else if (!strcmp(tbuf, "default")) { s->printer[0] = '\0'; break; } u = strtoul(tbuf, &ptr, 10); if (*ptr != '\0' || u == 0 || u > num_printers + 1) { continue; } else if (u == num_printers + 1) { if (get_printer_name(cbuf, tbuf, STR_SIZE) < 0) { return -1; } strcpy(s->printer, tbuf); break; } strcpy(s->printer, printer_info[u - 1].pName); break; } } else { if (get_printer_name(cbuf, tbuf, STR_SIZE) < 0) { return -1; } strcpy(s->printer, tbuf); } /* * If the resulting printer name is a UNC path, double the * backslashes. */ fixup_printer(s); return 0; } /** * Prompt for pr3287 session printer code page * * @param[in,out] s Session * * @return 0 for success, -1 for failure */ static int get_printercp(session_t *s) { char buf[STR_SIZE]; new_screen(s, NULL, "\ pr3287 Session -- Printer Code Page\n\ \n\ By default, pr3287 uses the system's default ANSI code page. You can\n\ override that code page here, or specify 'default' to use the system ANSI code\n\ page."); for (;;) { int cp; printf("\nPrinter code page [%s]: ", s->printercp[0]? s->printercp: "default"); fflush(stdout); if (get_input(buf, STR_SIZE) == NULL) { return -1; } else if (!buf[0]) { break; } else if (!strcmp(buf, "default")) { s->printercp[0] = '\0'; break; } cp = atoi(buf); if (cp <= 0) { errout("\nInvald code page."); } else { strcpy(s->printercp, buf); break; } } return 0; } /** * Prompt for keymap names * * @param[in,out] s Session * * @return 0 for success, -1 for failure */ static int get_keymaps(session_t *s) { km_t *km; new_screen(s, NULL, "\ Keymaps\n\ \n\ A keymap is a mapping from the PC keyboard to the virtual 3270 keyboard.\n\ You can override the default keymap and specify one or more built-in or \n\ user-defined keymaps, separated by commas."); printf("\n"); for (km = km_first; km != NULL; km = km->next) { printf(" %s\n", km->name); if (km->description[0]) { printf(" %s", km->description); } else { printf(" (no description)"); } printf("\n"); } for (;;) { char inbuf[STR_SIZE]; char tknbuf[STR_SIZE]; char *t; char *buf; bool wrong = false; printf("\nEnter keymap name(s) [%s]: ", s->keymaps[0]? s->keymaps: CHOICE_NONE); fflush(stdout); if (get_input(inbuf, sizeof(inbuf)) == NULL) { return -1; } else if (!inbuf[0]) { break; } else if (!strcmp(inbuf, CHOICE_NONE)) { s->keymaps[0] = '\0'; break; } strcpy(tknbuf, inbuf); wrong = false; buf = tknbuf; while (!wrong && (t = strtok(buf, ",")) != NULL) { buf = NULL; for (km = km_first; km != NULL; km = km->next) { if (!strcasecmp(t, km->name)) { break; } } if (km == NULL) { errout("Invalid keymap name '%s'.", t); wrong = true; break; } } if (!wrong) { strcpy(s->keymaps, inbuf); break; } } return 0; } /** * Prompt for keymap embedding (copying keymaps into session file) * * @param[in,out] s Session * * @return 0 for success, -1 for failure */ static int get_embed(session_t *s) { int rc; new_screen(s, NULL, "\ Embed Keymaps\n\ \n\ If selected, this option causes any selected keymaps to be copied into the\n\ session file, instead of being found at runtime."); do { printf("\nEmbed keymaps? (y/n) [%s] ", (s->flags & WF_EMBED_KEYMAPS)? "y": "n"); fflush(stdout); rc = getyn((s->flags & WF_EMBED_KEYMAPS) != 0); switch (rc) { case YN_ERR: return -1; case TRUE: s->flags |= WF_EMBED_KEYMAPS; break; case FALSE: s->flags &= ~WF_EMBED_KEYMAPS; break; } } while (rc < 0); return 0; } /** * Prompt for screen font size * * @param[in,out] s Session * * @return 0 for success, -1 for failure */ static int get_fontsize(session_t *s) { new_screen(s, NULL, "\ Font Size\n\ \n\ Allows the font size (character height in pixels) to be specified for the\n\ wc3270 window. The size must be between 5 and 72. The default is 12."); for (;;) { char inbuf[STR_SIZE]; unsigned long u; char *ptr; printf("\nFont size (5 to 72) [%u]: ", s->point_size? s->point_size: 12); fflush(stdout); if (get_input(inbuf, sizeof(inbuf)) == NULL) { return -1; } else if (!inbuf[0]) { break; } else if (!strcasecmp(inbuf, CHOICE_NONE)) { s->point_size = 0; break; } u = strtoul(inbuf, &ptr, 10); if (*ptr != '\0' || u == 0 || u < 5 || u > 72) { errout("\nInvalid font size."); continue; } s->point_size = (unsigned char)u; break; } return 0; } /** * Prompt for screen background color * * @param[in,out] s Session * * @return 0 for success, -1 for failure */ static int get_background(session_t *s) { new_screen(s, NULL, "\ Background Color\n\ \n\ This option selects whether the screen background is black (the default) or\n\ white."); for (;;) { char inbuf[STR_SIZE]; printf("\nBackground color? (black/white) [%s] ", (s->flags & WF_WHITE_BG)? "white": "black"); fflush(stdout); if (get_input(inbuf, sizeof(inbuf)) == NULL) { return -1; } else if (!inbuf[0]) { break; } else if (!strcasecmp(inbuf, "black")) { s->flags &= ~WF_WHITE_BG; break; } else if (!strcasecmp(inbuf, "white")) { s->flags |= WF_WHITE_BG; break; } errout("\nPlease answer 'black' or 'white'."); } return 0; } /** * Prompt for menubar mode * * @param[in,out] s Session * * @return 0 for success, -1 for failure */ static int get_menubar(session_t *s) { int rc; new_screen(s, NULL, "\ Menu Bar\n\ \n\ This option selects whether the menu bar is displayed on the screen."); do { printf("\nDisplay menu bar? (y/n) [%s] ", (s->flags & WF_NO_MENUBAR)? "n": "y"); fflush(stdout); rc = getyn(!(s->flags & WF_NO_MENUBAR)); switch (rc) { case YN_ERR: return -1; case FALSE: s->flags |= WF_NO_MENUBAR; break; case TRUE: s->flags &= ~WF_NO_MENUBAR; break; } } while (rc < 0); return 0; } /** * Prompt for trace-at-startup mode * * @param[in,out] s Session * * @return 0 for success, -1 for failure */ static int get_trace(session_t *s) { int rc; new_screen(s, NULL, "\ Tracing\n\ \n\ This option causes wc3270 to begin tracing at start-up. The trace file will\n\ be left on your desktop."); do { printf("\nTrace at start-up? (y/n) [%s] ", (s->flags & WF_TRACE)? "y" : "n"); fflush(stdout); rc = getyn((s->flags & WF_TRACE) != 0); switch (rc) { case YN_ERR: return -1; case TRUE: s->flags |= WF_TRACE; break; case FALSE: s->flags &= ~WF_TRACE; break; } } while (rc < 0); return 0; } /** * Prompt for always insert mode * * @param[in,out] s Session * * @return 0 for success, -1 for failure */ static int get_always_insert(session_t *s) { int rc; new_screen(s, NULL, "\ Default to Insert Mode\n\ \n\ This option causes wc3270 to use insert mode by default."); do { printf("\nDefault to insert mode? (y/n) [%s] ", (s->flags2 & WF2_ALWAYS_INSERT)? "y" : "n"); fflush(stdout); rc = getyn((s->flags2 & WF2_ALWAYS_INSERT) != 0); switch (rc) { case YN_ERR: return -1; case TRUE: s->flags2 |= WF2_ALWAYS_INSERT; break; case FALSE: s->flags2 &= ~WF2_ALWAYS_INSERT; break; } } while (rc < 0); return 0; } /** * Run Notepad on the session file, allowing arbitrary resources to be * edited. * * @param[in] s Session * @param[in,out] us User settings * * @return 0 for success, -1 for failure */ static int run_notepad(session_t *s, char **us) { int rc; char *t = NULL; char cmd[MAX_PATH + 64]; FILE *f; char *new_us; char buf[2]; new_screen(s, NULL, "\ Notepad\n\ \n\ This option will start up the Windows Notepad editor to allow you to edit\n\ miscellaneous resources in your session file."); do { printf("\nProceed? (y/n) [y] "); fflush(stdout); rc = getyn(TRUE); switch (rc) { case YN_ERR: return -1; case FALSE: return 0; case TRUE: break; } } while (rc < 0); t = _tempnam(NULL, "w3270wiz"); if (t == NULL) { errout("Error creating temporary session file name.\n"); goto failed; } f = fopen(t, "w"); if (f == NULL) { errout("Error creating temporary session file: %s\n", strerror(errno)); goto failed; } fprintf(f, "! Comment lines begin with '!', like this one.\n\ ! Resource values look like this (without the '!'):\n\ ! wc3270.printTestScreensPerPage: 3\n"); write_user_settings(*us, f); fclose(f); f = NULL; printf("Starting Notepad... "); fflush(stdout); snprintf(cmd, sizeof(cmd), "start/wait notepad.exe \"%s\"", t); system(cmd); printf("done\n"); f = fopen(t, "r"); if (f == NULL) { errout("Error reading back temporary session file: %s\n", strerror(errno)); goto failed; } new_us = NULL; if (read_user_settings(f, &new_us) == 0) { errout("Error reading back temporary session file.\n"); goto failed; } fclose(f); if (*us != NULL) { free(*us); } *us = new_us; unlink(t); free(t); return 0; failed: grayout("[Press ] "); fflush(stdout); fgets(buf, 2, stdin); if (t != NULL) { free(t); } return -1; } typedef enum { SP_REPLACE, /* replace uneditable file */ SP_CREATE, /* create new file */ SP_UPDATE, /* update editable file */ N_SP } sp_t; static char *how_name[N_SP] = { "Replace", "Create", "Update" }; /** * Prompt for where a session file should go (all-users or current user's * Docs). * * @param[in] s Session * * @return 0 for success, -1 for failure */ static src_t get_src(const char *name, src_t def) { char ac[STR_SIZE]; src_t src_out = def; /* Ask where they want the file. */ if (admin()) { for (;;) { printf("\nCreate '%s' in My Documents or Public Documents? " "(my/public) [%s] ", name, (def == SRC_PUBLIC_DOCUMENTS)? "public": "my"); fflush(stdout); if (get_input(ac, STR_SIZE) == NULL) { return SRC_ERR; } else if (!ac[0]) { break; } else if (!strncasecmp(ac, "public", strlen(ac))) { src_out = SRC_PUBLIC_DOCUMENTS; break; } else if (!strncasecmp(ac, "my", strlen(ac)) || !strcasecmp(ac, username)) { src_out = SRC_DOCUMENTS; break; } else if (!strncasecmp(ac, "quit", strlen(ac))) { return SRC_NONE; } else { errout("\nPlease answer 'my' or 'public'."); } } } else { return SRC_DOCUMENTS; } /* Make sure the subfolder exists. */ create_wc3270_folder(src_out); return src_out; } /** * Translate a wc3270 host code page name to a font for the console. * * @param[in] hcpname Code page name * @param[out] codepage Windows codepage * * @return Font name */ static wchar_t * reg_font_from_hcp(const char *hcpname, int *codepage) { unsigned i, j; wchar_t *cpname = NULL; wchar_t data[1024]; DWORD dlen; HKEY key; static wchar_t font[1024]; DWORD type; *codepage = 0; /* Search the table for a match. */ for (i = 0; codepages[i].name != NULL; i++) { if (!strcmp(hcpname, codepages[i].name)) { cpname = codepages[i].codepage; break; } } /* If no match, use Lucida Console. */ if (cpname == NULL) { return L"Lucida Console"; } /* * Look in the registry for the console font associated with the * Windows code page. */ if (RegOpenKeyEx(HKEY_LOCAL_MACHINE, "Software\\Microsoft\\Windows NT\\CurrentVersion\\" "Console\\TrueTypeFont", 0, KEY_READ, &key) != ERROR_SUCCESS) { errout("RegOpenKey failed -- cannot find font\n"); return L"Lucida Console"; } dlen = sizeof(data); if (RegQueryValueExW(key, cpname, NULL, &type, (LPVOID)data, &dlen) != ERROR_SUCCESS) { /* No codepage-specific match, try the default. */ dlen = sizeof(data); if (RegQueryValueExW(key, L"0", NULL, &type, (LPVOID)data, &dlen) != ERROR_SUCCESS) { RegCloseKey(key); errout("RegQueryValueEx failed -- cannot find font\n"); return L"Lucida Console"; } } RegCloseKey(key); if (type == REG_MULTI_SZ) { for (i = 0; i < dlen/sizeof(wchar_t); i++) { if (data[i] == 0x0000) { break; } } if (i+1 >= dlen/sizeof(wchar_t) || data[i+1] == 0x0000) { errout("Bad registry value -- cannot find font\n"); return L"Lucida Console"; } i++; } else { i = 0; } for (j = 0; i < dlen; i++, j++) { if (j == 0 && data[i] == L'*') { i++; } else if ((font[j] = data[i]) == 0x0000) { break; } } *codepage = _wtoi(cpname); return font; } /** * Display the current settings for a session and allow them to be edited. * * @param[in,out] s Session * @param[in,out] us User settings * @param[in] how How session is being edited (replace/create/update) * @param[in] path Session pathname * @param[in] session_name Name of session * @param[out] change_shortcut Returned as true if the shortcut should be * changed * @param[in] modified True if session is already modified * * @return 0 for success, -1 for failure */ static src_t edit_menu(session_t *s, char **us, sp_t how, const char *path, const char *session_name, bool *change_shortcut, bool modified) { int rc; char choicebuf[32]; session_t old_session; char *old_us = NULL; src_t ret = SRC_NONE; struct proxy_desc *d; *change_shortcut = false; switch (how) { case SP_REPLACE: case SP_CREATE: case N_SP: /* can't happen, but the compiler wants it */ memset(&old_session, '\0', sizeof(session_t)); break; case SP_UPDATE: memcpy(&old_session, s, sizeof(session_t)); break; } /* Save a copy of the original user settings. */ if (*us != NULL) { old_us = strdup(*us); if (old_us == NULL) { errout("Out of memory.\n"); exit(1); } } for (;;) { int done = 0; char *cp = "?"; int i; /* Look up the codepage. */ if (!strcmp(s->codepage, "bracket")) { cp = "CP 37+"; } else if (!strncmp(s->codepage, "cp", 2)) { for (i = 0; codepages[i].name != NULL; i++) { if (!strcmp(codepages[i].name, "bracket")) { continue; } if (!strcmp(codepages[i].hostcp, s->codepage + 2)) { cp = codepages[i].name; break; } } } new_screen(s, (how == SP_CREATE)? NULL: path, "Options"); printf("%3d. Host ................... : %s\n", MN_HOST, strcmp(s->host, CHOICE_NONE)? s->host: DISPLAY_NONE); printf("%3d. Logical Unit Name ...... : %s\n", MN_LU, s->luname[0]? s->luname: DISPLAY_NONE); printf("%3d. TCP Port ............... : %d\n", MN_PORT, (int)s->port); printf("%3d. Model Number ........... : %d " "(%d rows x %d columns)\n", MN_MODEL, (int)s->model, wrows[s->model], wcols[s->model]); printf("%3d. Oversize .............. : ", MN_OVERSIZE); if (s->ov_rows || s->ov_cols) { printf("%u rows x %u columns\n", s->ov_rows, s->ov_cols); } else { printf(DISPLAY_NONE"\n"); } printf("%3d. Code Page .............. : %s (%s)\n", MN_CODEPAGE, s->codepage, cp); printf("%3d. Crosshair Cursor ....... : %s\n", MN_CROSSHAIR, (s->flags & WF_CROSSHAIR)? "Yes": "No"); printf("%3d. Cursor Type ............ : %s\n", MN_CURSORTYPE, (s->flags & WF_ALTCURSOR)? "Underscore": "Block"); printf("%3d. Cursor Blink ........... : %s\n", MN_CURSORBLINK, (s->flags2 & WF2_CURSOR_BLINK)? "Yes": "No"); printf("%3d. TLS (SSL) Tunnel ....... : %s\n", MN_TLS, s->tls? "Yes": "No"); printf("%3d. Verify host certificates : %s", MN_VERIFY, (s->flags2 & WF2_NO_VERIFY_HOST_CERT)? "No": "Yes"); fflush(stdout); if (!(s->flags2 & WF2_NEW_VHC_DEFAULT)) { yellowout(" [default has changed]"); } printf("\n"); printf("%3d. Accept host name ....... : %s\n", MN_ACCEPT, s->accept_hostname[0]? s->accept_hostname: DISPLAY_NONE); printf("%3d. Proxy .................. : %s\n", MN_PROXY, s->proxy_type[0]? s->proxy_type: DISPLAY_NONE); if (s->proxy_type[0]) { d = find_proxy(s->proxy_type); printf("%3d. Proxy Server .......... : %s\n", MN_PROXY_SERVER, s->proxy_host); if (s->proxy_port[0]) { printf("%3d. Proxy Server TCP Port . : %s\n", MN_PROXY_PORT, s->proxy_port); } if (d != NULL && d->user) { printf("%3d. Proxy user name ....... : %s\n", MN_PROXY_USER, s->proxy_user[0]? s->proxy_user: "(none)"); if (s->proxy_user[0]) { printf("%3d. Proxy password ........ : %s\n", MN_PROXY_PASSWORD, s->proxy_password[0]? "***": "(none)"); } } } printf("%3d. pr3287 Printer Session . : %s\n", MN_3287, s->wpr3287? "Yes": "No"); if (s->wpr3287) { char pbuf[STR_SIZE]; printf("%3d. pr3287 Mode ........... : ", MN_3287_MODE); if (!strcmp(s->printerlu, ".")) { printf("Associate\n"); } else { printf("LU\n"); printf("%3d. pr3287 LU ............. : %s\n", MN_3287_LU, s->printerlu); } redisplay_printer(s->printer, pbuf); printf("%3d. pr3287 Windows printer : %s\n", MN_3287_PRINTER, s->printer[0]? pbuf: "(system default)"); printf("%3d. pr3287 Code Page ...... : ", MN_3287_CODEPAGE); if (s->printercp[0]) { printf("%s\n", s->printercp); } else { printf("(system ANSI default of %d)\n", GetACP()); } } printf("%3d. Keymaps ................ : %s\n", MN_KEYMAPS, s->keymaps[0]? s->keymaps: DISPLAY_NONE); if (s->keymaps[0]) { printf("%3d. Embed Keymaps ......... : %s\n", MN_EMBED_KEYMAPS, (s->flags & WF_EMBED_KEYMAPS)? "Yes": "No"); } printf("%3d. Font Size .............. : %u\n", MN_FONT_SIZE, s->point_size? s->point_size: 12); printf("%3d. Background Color ....... : %s\n", MN_BG, (s->flags & WF_WHITE_BG)? "white": "black"); printf("%3d. Menu Bar ............... : %s\n", MN_MENUBAR, (s->flags & WF_NO_MENUBAR)? "No": "Yes"); printf("%3d. Trace at start-up ...... : %s\n", MN_TRACE, (s->flags & WF_TRACE)? "Yes": "No"); printf("%3d. Always use insert mode . : %s\n", MN_ALWAYS_INSERT, (s->flags2 & WF2_ALWAYS_INSERT)? "Yes": "No"); printf("%3d. Edit miscellaneous resources with Notepad\n", MN_NOTEPAD); for (;;) { int invalid = 0; int was_pr3287 = 0; printf("\nEnter item number to change: [%s] ", CHOICE_NONE); fflush(stdout); if (get_input(choicebuf, sizeof(choicebuf)) == NULL) { ret = SRC_ERR; goto done; } else if (!choicebuf[0] || !strcasecmp(choicebuf, CHOICE_NONE)) { /* none */ done = 1; break; } if (!strncasecmp(choicebuf, "quit", strlen(choicebuf))) { ret = SRC_ERR; goto done; } switch (atoi(choicebuf)) { case MN_HOST: if (get_host(s) < 0) { ret = SRC_ERR; goto done; } break; case MN_LU: if (get_lu(s) < 0) { ret = SRC_ERR; goto done; } break; case MN_PORT: if (get_port(s) < 0) { ret = SRC_ERR; goto done; } break; case MN_MODEL: if (get_model(s) < 0) { ret = SRC_ERR; goto done; } break; case MN_OVERSIZE: if (get_oversize(s) < 0) { ret = SRC_ERR; goto done; } break; case MN_CODEPAGE: if (get_codepage(s) < 0) { ret = SRC_ERR; goto done; } break; case MN_CROSSHAIR: if (get_crosshair(s) < 0) { ret = SRC_ERR; goto done; } break; case MN_CURSORTYPE: if (get_cursor_type(s) < 0) { ret = SRC_ERR; goto done; } break; case MN_CURSORBLINK: if (get_cursor_blink(s) < 0) { ret = SRC_ERR; goto done; } break; case MN_TLS: if (get_tls(s) < 0) { ret = SRC_ERR; goto done; } break; case MN_VERIFY: if (get_verify(s) < 0) { ret = SRC_ERR; goto done; } break; case MN_ACCEPT: if (get_accept(s) < 0) { ret = SRC_ERR; goto done; } break; case MN_PROXY: if (get_proxy(s) < 0) { ret = SRC_ERR; goto done; } break; case MN_PROXY_SERVER: if (s->proxy_type[0]) { if (get_proxy_server(s) < 0) { ret = SRC_ERR; goto done; } } else { errout("Invalid entry.\n"); invalid = 1; } break; case MN_PROXY_PORT: if (s->proxy_type[0]) { if (get_proxy_server_port(s) < 0) { ret = SRC_ERR; goto done; } } else { errout("Invalid entry.\n"); invalid = 1; } break; case MN_PROXY_USER: if (s->proxy_type[0] && (d = find_proxy(s->proxy_type)) != NULL && d->user) { if (get_proxy_user(s) < 0) { ret = SRC_ERR; goto done; } } else { errout("Invalid entry.\n"); invalid = 1; } break; case MN_PROXY_PASSWORD: if (s->proxy_type[0] && s->proxy_user[0] && (d = find_proxy(s->proxy_type)) != NULL && d->user) { if (get_proxy_password(s) < 0) { ret = SRC_ERR; goto done; } } else { errout("Invalid entry.\n"); invalid = 1; } break; case MN_3287: was_pr3287 = s->wpr3287; if (get_pr3287(s) < 0) { ret = SRC_ERR; goto done; } if (s->wpr3287 && !was_pr3287) { if (get_printer_mode(s) < 0) { ret = SRC_ERR; goto done; } } break; case MN_3287_MODE: if (s->wpr3287) { if (get_printer_mode(s) < 0) { ret = SRC_ERR; goto done; } } else { errout("Invalid entry.\n"); invalid = 1; } break; case MN_3287_LU: if (s->wpr3287 && strcmp(s->printerlu, ".")) { if (get_printerlu(s, 1) < 0) { ret = SRC_ERR; goto done; } } else { errout("Invalid entry.\n"); invalid = 1; } break; case MN_3287_PRINTER: if (s->wpr3287) { if (get_printer(s) < 0) { ret = SRC_ERR; goto done; } } else { errout("Invalid entry.\n"); invalid = 1; } break; case MN_3287_CODEPAGE: if (s->wpr3287) { if (get_printercp(s) < 0) { ret = SRC_ERR; goto done; } } else { errout("Invalid entry.\n"); invalid = 1; } break; case MN_KEYMAPS: if (get_keymaps(s) < 0) { ret = SRC_ERR; goto done; } break; case MN_EMBED_KEYMAPS: if (get_embed(s) < 0) { ret = SRC_ERR; goto done; } break; case MN_FONT_SIZE: if (get_fontsize(s) < 0) { ret = SRC_ERR; goto done; } break; case MN_BG: if (get_background(s) < 0) { ret = SRC_ERR; goto done; } break; case MN_MENUBAR: if (get_menubar(s) < 0) { ret = SRC_ERR; goto done; } break; case MN_TRACE: if (get_trace(s) < 0) { ret = SRC_ERR; goto done; } break; case MN_ALWAYS_INSERT: if (get_always_insert(s) < 0) { ret = SRC_ERR; goto done; } break; case MN_NOTEPAD: if (run_notepad(s, us) < 0) { ret = SRC_ERR; goto done; } break; default: errout("\nInvalid entry."); invalid = 1; break; } if (!invalid) { break; } } if (done) { break; } } /* * Set the WF2_NEW_VHC_DEFAULT flag in the session, so even if they * don't change anything on an old session file, it will need to be * written back out. */ s->flags2 |= WF2_NEW_VHC_DEFAULT; /* Ask if they want to write the file. */ if (memcmp(s, &old_session, sizeof(session_t)) || ((old_us != NULL) ^ (*us != NULL)) || (old_us != NULL && strcmp(old_us, *us)) || modified) { for (;;) { printf("\n%s session file '%s'? (y/n) [y] ", how_name[how], session_name); fflush(stdout); rc = getyn(TRUE); if (rc == YN_ERR) { ret = SRC_ERR; goto done; } else if (rc == FALSE) { ret = SRC_NONE; goto done; } else if (rc == TRUE) { break; } } } else { ret = SRC_NONE; goto done; } /* If creating, ask where they want it written. */ if (how == SP_CREATE) { ret = get_src(session_name, SRC_DOCUMENTS); goto done; } /* Return where the file ended up. */ if (!strncasecmp(documents_wc3270, path, strlen(documents_wc3270))) { ret = SRC_DOCUMENTS; goto done; } else if (!strncasecmp(public_documents_wc3270, path, strlen(public_documents_wc3270))) { ret = SRC_PUBLIC_DOCUMENTS; goto done; } else if (!strncasecmp(desktop, path, strlen(desktop))) { ret = SRC_DESKTOP; goto done; } else if (!strncasecmp(public_desktop, path, strlen(public_desktop))) { ret = SRC_PUBLIC_DESKTOP; goto done; } else { ret = SRC_OTHER; goto done; } done: { int old_codepage; wchar_t *old_font = reg_font_from_hcp(old_session.codepage, &old_codepage); int codepage; wchar_t *font = reg_font_from_hcp(s->codepage, &codepage); if (old_session.model != s->model || old_session.ov_rows != s->ov_rows || old_session.ov_cols != s->ov_cols || wcscmp(old_font, font) || old_codepage != codepage) { *change_shortcut = true; } } if (old_us != NULL) { free(old_us); } return ret; } /** * Print the prefix for a session name (ordinal or blank) * * @param[in] n Ordinal to display * @param[in] with_numbers If true, display number, otherwise blanks */ static void print_n(int n, bool with_numbers) { if (with_numbers) { printf(" %2d.", n + 1); } else { printf(" "); } } /** * Display the current set of sessions. * * @param[in] with_numbers If true, display with ordinals * @param[in] include_public If true, include public sessions */ static void display_sessions(bool with_numbers, bool include_public) { int i; int col = 0; const char *n; /* * Display the session names in four colums. Each 20-character column * looks like: * <.> * So there is room for 15 characters of session name in the first * three columns, and 14 in the last column (since we avoid writing in * column 80 of the display). */ for (i = 0; (n = xs_name(i + 1, NULL)) != NULL; i++) { size_t slen; if (i == xs_my.count && !include_public) { break; } if (i == 0 && xs_my.count != 0) { printf("Sessions for user '%s'in %.*s:\n", username, (int)(strlen(documents_wc3270) - 1), documents_wc3270); } else if (i == xs_my.count) { if (col) { printf("\n"); col = 0; } printf("Sessions for all users in %.*s:\n", (int)(strlen(public_documents_wc3270) - 1), public_documents_wc3270); } slen = strlen(n); retry: switch (col) { default: case 0: print_n(i, with_numbers); printf(" %s", n); if (slen <= 15) { /* fits in column 0 */ printf("%*s", (int)(15 - slen), ""); col = 1; } else if (slen <= 15 + 20) { /* covers 0 and 1 */ printf("%*s", (int)(15 + 20 - slen), ""); col = 2; } else if (slen <= 15 + 20 + 20) { /* covers 0, 1, 2 */ printf("%*s", (int)(15 + 20 + 20 - slen), ""); col = 3; } else { /* whole line */ printf("\n"); } break; case 1: if (slen > 15 + 20 + 19) { /* overflows */ printf("\n"); col = 0; goto retry; } print_n(i, with_numbers); printf(" %s", n); if (slen <= 15) { /* fits in column 1 */ printf("%*s", (int)(15 - slen), ""); col = 2; } else if (slen <= 15 + 20) { /* covers 1 and 2 */ printf("%*s", (int)(15 + 20 - slen), ""); col = 3; } else { /* rest of the line */ printf("\n"); col = 0; } break; case 2: if (slen > 15 + 19) { /* overflows */ printf("\n"); col = 0; goto retry; } print_n(i, with_numbers); printf(" %s", n); if (slen <= 15) { /* fits in column 2 */ printf("%*s", (int)(15 - slen), ""); col = 3; } else { /* rest of the line */ printf("\n"); col = 0; } break; case 3: if (slen > 14) { /* overflows */ printf("\n"); col = 0; goto retry; } print_n(i, with_numbers); printf(" %s\n", n); col = 0; break; } } if (col) { printf("\n"); } } /** * Display the list of existing sessions, and return a selected session name. * * @param[in] why Name of operation in progress * @param[in] include_public true if public sessions should be included * @param[out] name Returned selected session name * @param[out] lp Returned selected session location * * @return -1 for error, 0 for success * If no name is chosen, returns 0, but also returns NULL in name. */ static int get_existing_session(const char *why, bool include_public, const char **name, src_t *lp) { char nbuf[64]; int max = include_public? num_xs: num_xs - xs_public.count; display_sessions(true, include_public); for (;;) { int n; printf("\nEnter session name or number"); if (max > 1) { printf(" (1..%d)", max); } printf(" to %s, or 'q' to quit: ", why); fflush(stdout); if (get_input(nbuf, sizeof(nbuf)) == NULL) { return -1; } else if (nbuf[0] == '\0') { continue; } else if (nbuf[0] == 'q' || nbuf[0] == 'Q') { *name = NULL; return 0; } n = atoi(nbuf); if (n == 0) { int i; for (i = 0; i < max; i++) { if (!strcasecmp(nbuf, xs_name(i + 1, NULL))) { *name = xs_name(i + 1, lp); return 0; } } errout("\nNo such session."); continue; } else if (n < 0 || n > max) { errout("\nNo such session."); continue; } *name = xs_name(n, lp); return 0; } } /** * Look up a session specified by the user on the main menu. * * @param[in] name Session name to look up * @param[in] include_public true to include public sessions * @param[out] lp Returned location of session * @param[out] result Buffer to put error message in * @param[in] result_size Size of 'result' buffer * * @return Session name, or NULL if not found */ static char * menu_existing_session(char *name, bool include_public, src_t *lp, char *result, size_t result_size) { int i; int max = include_public? num_xs: num_xs - xs_public.count; for (i = 0; i < max; i++) { if (!strcasecmp(name, xs_name(i + 1, lp))) { break; } } if (i >= max) { snprintf(result, result_size, "%cNo such session: '%s'", 2, name); return NULL; } else { return name; } } /** * Request that the user press the Enter key. * * This generally happens after displaying an error message. */ static void ask_enter(void) { char buf[2]; grayout("[Press ] "); fflush(stdout); fgets(buf, sizeof(buf), stdin); } /** * Delete a session. * * Prompts for a session name, if none is provided in argc/argv. * * @param[in] argc Command argument count (from main menu prompt) * @param[in] argv Command argumens (from main menu prompt) * @param[out] result Result returned here * @param[in] result_size Size of 'result' buffer * * @return 0 for success, -1 for failure */ static int delete_session(int argc, char **argv, char *result, size_t result_size) { const char *name = NULL; src_t l; char path[MAX_PATH]; if (argc > 0) { name = menu_existing_session(argv[0], admin(), &l, result, result_size); if (name == NULL) { return 0; } } if (argc == 0) { new_screen(&empty_session, NULL, "\ Delete Session\n"); if (get_existing_session("delete", admin(), &name, &l) < 0) { return -1; } else if (name == NULL) { return 0; } } for (;;) { gs_t rc; printf("\nAre you sure you want to delete session '%s'? (y/n) [n] ", name); fflush(stdout); rc = getyn(FALSE); if (rc == YN_ERR) { return -1; } else if (rc == FALSE) { return 0; } else if (rc == TRUE) { break; } } snprintf(path, MAX_PATH, "%s%s%s", (l == SRC_DOCUMENTS)? documents_wc3270: public_documents_wc3270, name, SESS_SUFFIX); if (unlink(path) < 0) { errout("\nDelete of '%s' failed: %s\n", path, strerror(errno)); goto failed; } snprintf(path, MAX_PATH, "%s%s.lnk", (l == SRC_DOCUMENTS)? desktop: public_desktop, name); if (access(path, R_OK) == 0 && unlink(path) < 0) { errout("\nDelete of '%s' failed: %s\n", path, strerror(errno)); goto failed; } snprintf(result, result_size, "%cSession '%s' deleted.", 1, name); return 0; failed: ask_enter(); return 0; } /** * Rename or copy a session. * * Prompts for from/to session names, if not provided in argc/argv. * * @param[in] argc Command argument count (from main menu prompt) * @param[in] argv Command argumens (from main menu prompt) * @param[in] is_rename true if rename, false if copy * @param[out] result Result returned here * @param[in] result_size Size of 'result' buffer * * @return 0 for success, -1 for failure */ static int rename_or_copy_session(int argc, char **argv, bool is_rename, char *result, size_t result_size) { char to_name[64]; const char *from_name = NULL; src_t from_l, to_l; char from_path[MAX_PATH]; char to_path[MAX_PATH]; char from_linkpath[MAX_PATH]; int i; FILE *f; session_t s; ws_t wsrc; char *us; if (argc > 0) { from_name = menu_existing_session(argv[0], !is_rename || admin(), &from_l, result, result_size); if (from_name == NULL) { return 0; } } if (argc == 0) { if (is_rename) { new_screen(&empty_session, NULL, "\ Rename Session\n"); } else { new_screen(&empty_session, NULL, "\ Copy Session\n"); } if (get_existing_session(is_rename? "rename": "copy", !is_rename || admin(), &from_name, &from_l) < 0) { return -1; } else if (from_name == NULL) { return 0; } } if (is_rename && !admin() && from_l == SRC_PUBLIC_DOCUMENTS) { errout("Cannot rename public session\n"); goto failed; } for (;;) { if (argc > 1) { strncpy(to_name, argv[1], sizeof(to_name)); to_name[sizeof(to_name) - 1] = '\0'; argc = 1; /* a bit of a hack */ } else { if (is_rename) { printf("\nEnter new session name for '%s', or 'q' to quit: ", from_name); } else { printf("\nEnter new session name to copy '%s' into, or 'q' to " "quit: ", from_name); } fflush(stdout); if (get_input(to_name, sizeof(to_name)) == NULL) { return -1; } else if (to_name[0] == '\0') { continue; } else if ((to_name[0] == 'q' || to_name[0] == 'Q') && to_name[1] == '\0') { return 0; } } for (i = 0; i < num_xs; i++) { if (!strcasecmp(to_name, xs_name(i + 1, NULL))) { break; } } if (i < num_xs) { errout("\nSession '%s' already exists. To replace it, you must " "delete it first.", to_name); continue; } if (!legal_session_name(to_name, NULL, 0)) { continue; } break; } switch (from_l) { case SRC_PUBLIC_DOCUMENTS: snprintf(from_path, MAX_PATH, "%s%s%s", public_documents_wc3270, from_name, SESS_SUFFIX); break; default: case SRC_DOCUMENTS: snprintf(from_path, MAX_PATH, "%s%s%s", documents_wc3270, from_name, SESS_SUFFIX); break; } switch ((to_l = get_src(to_name, from_l))) { case SRC_PUBLIC_DOCUMENTS: snprintf(to_path, MAX_PATH, "%s%s%s", public_documents_wc3270, to_name, SESS_SUFFIX); break; case SRC_DOCUMENTS: snprintf(to_path, MAX_PATH, "%s%s%s", documents_wc3270, to_name, SESS_SUFFIX); break; case SRC_NONE: return 0; default: return -1; } /* Read in the existing session. */ f = fopen(from_path, "r"); if (f == NULL) { errout("Cannot open %s for reading: %s\n", from_path, strerror(errno)); goto failed; } if (!read_session(f, &s, &us)) { fclose(f); errout("Cannot read '%s'.\n", from_path); goto failed; } fclose(f); /* Change its name and write it back out. */ strncpy(s.session, to_name, STR_SIZE); if (write_session_file(&s, us, to_path) < 0) { errout("Cannot write '%s'.\n", to_path); goto failed; } /* Remove the orginal. */ if (is_rename) { if (unlink(from_path) < 0) { errout("Cannot remove '%s'.\n", from_path); goto failed; } } /* See about the shortcut as well. */ snprintf(from_linkpath, sizeof(from_linkpath), "%s%s.lnk", (from_l == SRC_PUBLIC_DOCUMENTS)? public_desktop: desktop, from_name); if (access(from_linkpath, R_OK) == 0) { for (;;) { gs_t rc; printf("\n%s desktop shortcut as well? (y/n) [y] ", is_rename? "Rename": "Copy"); fflush(stdout); rc = getyn(TRUE); if (rc == YN_ERR) { return -1; } else if (rc == FALSE) { return 0; } else if (rc == TRUE) { break; } } /* Create the new shortcut. */ wsrc = write_shortcut(&s, false, to_l, to_path, false); switch (wsrc) { case WS_ERR: return -1; case WS_FAILED: goto failed; case WS_CREATED: case WS_REPLACED: case WS_NOP: break; } /* Remove the original. */ if (is_rename) { if (unlink(from_linkpath) < 0) { errout("Cannot remove '%s'.\n", from_linkpath); goto failed; } } } snprintf(result, result_size, "%cSession '%s' %s to '%s'.", 1, from_name, is_rename? "renamed": "copied", to_name); return 0; failed: ask_enter(); return 0; } /** * Create a shortcut for a session. * * Prompts for a session name, if none is provided in argc/argv. * * @param[in] argc Command argument count (from main menu prompt) * @param[in] argv Command argumens (from main menu prompt) * @param[out] result Result returned here * @param[in] result_size Size of 'result' buffer * * @return 0 for success, -1 for failure */ static int new_shortcut(int argc, char **argv, char *result, size_t result_size) { const char *name = NULL; src_t l; char from_path[MAX_PATH]; FILE *f; ws_t rc; session_t s; if (argc > 0) { name = menu_existing_session(argv[0], true, &l, result, result_size); if (name == NULL) { return 0; } } if (argc == 0) { new_screen(&empty_session, NULL, "\ Create Shortcut\n"); if (get_existing_session("create shortcut for", true, &name, &l) < 0) { return -1; } else if (name == NULL) { return 0; } } switch (l) { case SRC_PUBLIC_DOCUMENTS: snprintf(from_path, MAX_PATH, "%s%s%s", public_documents_wc3270, name, SESS_SUFFIX); break; default: case SRC_DOCUMENTS: snprintf(from_path, MAX_PATH, "%s%s%s", documents_wc3270, name, SESS_SUFFIX); break; } /* * If public document but not admin, create shortcut on per-user desktop. */ if (l == SRC_PUBLIC_DOCUMENTS && !admin()) { l = SRC_DOCUMENTS; } f = fopen(from_path, "r"); if (f == NULL) { errout("Cannot open %s for reading: %s\n", from_path, strerror(errno)); goto failed; } else if (!read_session(f, &s, NULL)) { fclose(f); printf("Cannot read '%s'.\n", from_path); goto failed; } fclose(f); rc = write_shortcut(&s, false, l, from_path, false); switch (rc) { case WS_NOP: break; case WS_ERR: return -1; case WS_FAILED: goto failed; case WS_CREATED: case WS_REPLACED: snprintf(result, result_size, "%cShortcut %s for '%s'.", 1, (rc == WS_CREATED)? "created": "replaced", name); break; } return 0; failed: ask_enter(); return 0; } /** * Initialize a set of session names from a directory. * * @param[in] dirname Directory to search * @param[out] xsb Returned list of entries * @param[in] location Which directory this is (current/all) */ static void xs_init_type(const char *dirname, xsb_t *xsb, src_t location) { char dpath[MAX_PATH]; HANDLE h; WIN32_FIND_DATA find_data; xs_t *xs; /* Check for migration complete. */ snprintf(dpath, MAX_PATH, "%s%s", dirname, DONE_FILE); if (access(dpath, R_OK) == 0) { return; } sprintf(dpath, "%s*%s", dirname, SESS_SUFFIX); h = FindFirstFile(dpath, &find_data); if (h != INVALID_HANDLE_VALUE) { do { char *sname; size_t nlen; xs_t *xss, *prev; sname = find_data.cFileName; nlen = strlen(sname) - strlen(SESS_SUFFIX); if (location == SRC_PUBLIC_DOCUMENTS) { int skip = 0; xs_t *xsc; /* * Skip public documents that are the same as private ones. * This will get us into trouble. */ for (xsc = xs_my.list; xsc != NULL; xsc = xsc->next) { char *n = xsc->name; if (strlen(n) == nlen && !strncasecmp(n, sname, nlen)) { skip = 1; break; } } if (skip) { continue; } } xs = (xs_t *)malloc(sizeof(xs_t) + nlen + 1); if (xs == NULL) { errout("Out of memory\n"); exit(1); } xs->location = location; xs->name = (char *)(xs + 1); strncpy(xs->name, sname, nlen); xs->name[nlen] = '\0'; for (xss = xsb->list, prev = NULL; xss != NULL; prev = xss, xss = xss->next) { if (strcasecmp(xs->name, xss->name) < 0) { break; } } /* xs goes before xss, which may be NULL. */ xs->next = xss; if (prev != NULL) { prev->next = xs; } else { xsb->list = xs; } xsb->count++; } while (FindNextFile(h, &find_data) != 0); FindClose(h); } } /** * Free a set of session names. * * @param[in,out] xsb Set of names to free */ static void free_xs(xsb_t *xsb) { xs_t *list; xs_t *next; list = xsb->list; while (list != NULL) { next = list->next; free(list); list = next; } xsb->count = 0; xsb->list = NULL; } /** * Initialize the session names. * * @param[in] include_public if true, include public sessions */ static void xs_init(bool include_public) { free_xs(&xs_my); free_xs(&xs_public); num_xs = 0; xs_init_type(searchdir, &xs_my, SRC_DOCUMENTS); if (include_public) { xs_init_type(public_searchdir, &xs_public, SRC_PUBLIC_DOCUMENTS); } num_xs = xs_my.count + xs_public.count; } /** * Look up a session name by index. * * @param[in] n Index (first session is 1) * @param[out] lp Location of entry (current/all) * * @return Session name */ static const char * xs_name(int n, src_t *lp) { xs_t *xs; for (xs = xs_my.list; xs != NULL; xs = xs->next) { if (!--n) { if (lp != NULL) { *lp = xs->location; } return xs->name; } } for (xs = xs_public.list; xs != NULL; xs = xs->next) { if (!--n) { if (lp != NULL) { *lp = xs->location; } return xs->name; } } return NULL; } /** * Create or re-create a shortcut. * * @param[in] s Session * @param[in] ask If true, ask first * @param[in] src Where the session file is (all or current user) * @param[in] sess_path Pathname of session file * @param[in] change_shortcut If true, the shortcut needs updating * * @return ws_t (no-op, create, replace, error) */ static ws_t write_shortcut(const session_t *s, bool ask, src_t src, const char *sess_path, bool change_shortcut) { char linkpath[MAX_PATH]; char exepath[MAX_PATH]; char args[MAX_PATH]; int shortcut_exists; int extra_height = 1; wchar_t *font; int codepage = 0; HRESULT hres; /* If writing to the desktop, don't ask about a shortcut. */ if (src == SRC_PUBLIC_DESKTOP || src == SRC_DESKTOP || !strncasecmp(sess_path, desktop, strlen(desktop)) || !strncasecmp(sess_path, public_desktop, strlen(public_desktop))) { return WS_NOP; } /* Ask about the shortcut. */ sprintf(linkpath, "%s%s.lnk", (src == SRC_PUBLIC_DOCUMENTS)? public_desktop: desktop, s->session); shortcut_exists = (access(linkpath, R_OK) == 0); if (ask) { if (shortcut_exists && change_shortcut) { printf("\nOne or more parameters changed that require replacing the desktop shortcut."); } for (;;) { int rc; printf("\n%s desktop shortcut (y/n) [y]: ", shortcut_exists? "Replace": "Create"); rc = getyn(TRUE); if (rc == YN_ERR) { return WS_ERR; } else if (rc == FALSE) { return WS_NOP; } else if (rc == TRUE) { break; } } } /* Create the desktop shorcut. */ sprintf(exepath, "%swc3270.exe", installdir); sprintf(args, "+S \"%s\"", sess_path); if (!(s->flags & WF_NO_MENUBAR)) { extra_height += 2; } font = reg_font_from_hcp(s->codepage, &codepage); hres = create_link( exepath, /* path to executable */ linkpath, /* where to put the link */ "wc3270 session", /* description */ args, /* arguments */ installdir, /* working directory */ (s->ov_rows? /* console rows */ s->ov_rows: wrows[s->model]) + extra_height, s->ov_cols? /* console cols */ s->ov_cols: wcols[s->model], font, /* font */ s->point_size, /* point size */ codepage); /* code page */ if (SUCCEEDED(hres)) { return shortcut_exists? WS_REPLACED: WS_CREATED; } else { printf("Writing shortcut '%s' failed\n", linkpath); return WS_FAILED; } } /** * One pass of the session wizard. * * @param[in] session_name Name of session to edit, or NULL * @param[in] explicit_edit If true, '-e' option was used (no need to * confirm they want to edit it) * @param[out] result Buffer containing previous operation's result, * and to write current operation's result into * @param[in] result_size Size of 'result' buffer * * @return Status of operation (success/error/user-quit) */ static sw_t session_wizard(const char *session_name, bool explicit_edit, char *result, size_t result_size) { session_t session; gs_t rc; src_t src; char save_session_name[STR_SIZE]; char path[MAX_PATH]; int argc; char **argv; ws_t wsrc; size_t sl; char *us = NULL; bool change_shortcut; bool modified = false; /* Start with nothing. */ memset(&session, '\0', sizeof(session)); /* Find the existing sessions. */ xs_init(true); /* Intro screen. */ if (session_name == NULL) { switch (main_menu(&argc, &argv, result)) { case MO_ERR: return SW_ERR; case MO_QUIT: return SW_QUIT; case MO_EDIT: if (argc > 0) { session_name = menu_existing_session(argv[0], admin(), NULL, result, result_size); if (session_name == NULL) { return SW_SUCCESS; } } else { new_screen(&session, NULL, "\ Edit Session\n"); if (get_existing_session("edit", admin(), &session_name, NULL) < 0) { return SW_ERR; } else if (session_name == NULL) { return SW_SUCCESS; } } explicit_edit = true; break; case MO_DELETE: if (delete_session(argc, argv, result, result_size) < 0) { return SW_ERR; } else { return SW_SUCCESS; } case MO_COPY: if (rename_or_copy_session(argc, argv, false, result, result_size) < 0) { return SW_ERR; } else { return SW_SUCCESS; } case MO_RENAME: if (rename_or_copy_session(argc, argv, true, result, result_size) < 0) { return SW_ERR; } else { return SW_SUCCESS; } case MO_SHORTCUT: if (new_shortcut(argc, argv, result, result_size) < 0) { return SW_ERR; } else { return SW_SUCCESS; } case MO_CREATE: if (argc > 0) { if (!legal_session_name(argv[0], result, result_size)) { return SW_SUCCESS; } session_name = argv[0]; } /* fall through below */ break; case MO_MIGRATE: { char *cmd = malloc(strlen(program) + strlen(" -U") + 1); if (cmd == NULL) { errout("Out of memory.\n"); return SW_ERR; } sprintf(cmd, "%s -U", program); system(cmd); free(cmd); return SW_SUCCESS; } } } else { new_screen(&session, NULL, ""); } /* Get the session name. */ rc = get_session(session_name, &session, &us, path, explicit_edit, &src, &modified); switch (rc) { case GS_NOEDIT_LEAVE: /* Uneditable, and they don't want to overwrite it. */ if (us != NULL) { free(us); } return SW_SUCCESS; default: case GS_ERR: /* EOF */ return SW_ERR; case GS_OVERWRITE: /* Overwrite old (uneditable). */ /* Clean out the session. */ strcpy(save_session_name, session.session); memset(&session, '\0', sizeof(session)); strcpy(session.session, save_session_name); if (us != NULL) { free(us); us = NULL; } /* fall through... */ case GS_NEW: /* New. */ /* Get the host name, which defaults to the session name. */ if (strchr(session.session, ' ') == NULL) { strcpy(session.host, session.session); } if (get_host(&session) < 0) { return SW_ERR; } /* Default eveything else. */ session.port = 23; session.model = 4; strcpy(session.codepage, "bracket"); strcpy(session.printerlu, "."); session.flags2 |= WF2_NEW_VHC_DEFAULT; /* fall through... */ case GS_EDIT: /* Edit existing file. */ /* See what they want to change. */ src = edit_menu(&session, &us, (rc == GS_OVERWRITE)? SP_REPLACE: ((rc == GS_NEW)? SP_CREATE: SP_UPDATE), path, session.session, &change_shortcut, modified); if (src == SRC_ERR) { return SW_ERR; } else if (src == SRC_NONE) { if (rc == GS_NEW) { return SW_SUCCESS; } else { break; } } else if (src == SRC_PUBLIC_DOCUMENTS) { /* All users. */ create_wc3270_folder(src); snprintf(path, MAX_PATH, "%s%s%s", public_documents_wc3270, session.session, SESS_SUFFIX); } else if (src == SRC_DOCUMENTS) { /* Current user. */ create_wc3270_folder(src); snprintf(path, MAX_PATH, "%s%s%s", documents_wc3270, session.session, SESS_SUFFIX); } else if (src == SRC_PUBLIC_DESKTOP) { snprintf(path, MAX_PATH, "%s%s%s", public_desktop, session.session, SESS_SUFFIX); } else if (src == SRC_DESKTOP) { snprintf(path, MAX_PATH, "%s%s%s", desktop, session.session, SESS_SUFFIX); } /* else keep path as-is */ /* Create the session file. */ if (write_session_file(&session, us, path) < 0) { if (us != NULL) { free(us); us = NULL; } goto failed; } snprintf(result, result_size, "%c%s session '%s'.", 1, (rc == GS_NEW)? "Created": "Updated", session.session); if (us != NULL) { free(us); us = NULL; } break; case GS_NOEDIT: /* Don't edit existing file, but we do have a copy of the session. */ break; } /* Ask about creating or updating the shortcut. */ wsrc = write_shortcut(&session, true, src, path, change_shortcut); switch (wsrc) { case WS_NOP: break; case WS_ERR: return SW_ERR; case WS_FAILED: goto failed; case WS_CREATED: case WS_REPLACED: sl = strlen(result); snprintf(result + sl, result_size - sl, "%c%s shortcut '%s'.", sl? '\n': 1, (wsrc == WS_CREATED)? "Created": "Replaced", session.session); break; } return SW_SUCCESS; failed: ask_enter(); return SW_SUCCESS; } /** * Embed the selected keymaps in the session file. * * @param[in] session Session * @param[in,out] f File to append them to */ static void embed_keymaps(const session_t *session, FILE *f) { char keymaps[STR_SIZE]; char *keymap; char *ptr = keymaps; km_t *km; char *pfx = "! Embedded user-defined keymaps\n"; strcpy(keymaps, session->keymaps); while ((keymap = strtok(ptr, ",")) != NULL) { ptr = NULL; for (km = km_first; km != NULL; km = km->next) { if (!strcasecmp(keymap, km->name)) { if (km->def_both) { fprintf(f, "%swc3270.%s.%s:\\n\\\n%s\n", pfx, ResKeymap, keymap, km->def_both); pfx = ""; } if (km->def_3270) { fprintf(f, "%swc3270.%s.%s.3270:\\n\\\n%s\n", pfx, ResKeymap, keymap, km->def_3270); pfx = ""; } if (km->def_nvt) { fprintf(f, "%swc3270.%s.%s.nvt:\\n\\\n%s\n", pfx, ResKeymap, keymap, km->def_nvt); pfx = ""; } break; } } } } /** * Write miscellaneous user settings into an open file. * * @param[in] us User settings, or NULL * @param[in] f File to write into */ static void write_user_settings(char *us, FILE *f) { fprintf(f, "!\n\ ! Note that in this file, backslash ('\\') characters are used to specify\n\ ! escape sequences, such as '\\r' for a Carriage Return character or '\\t'\n\ ! for a Tab character. To include literal backslashes in this file, such as\n\ ! in Windows pathnames or UNC paths, they must be doubled, for example:\n\ !\n\ ! Desired text Must be specified this way\n\ ! C:\\xdir\\file C:\\\\xdir\\\\file\n\ ! \\\\server\\printer \\\\\\\\server\\\\printer\n\ !\n\ !*Additional resource definitions can go after this line.\n"); /* Write out the user's previous extra settings. */ if (us != NULL) { fprintf(f, "%s", us); } } /** * Write a session file. * * @param[in] session Session to write * @param[in] us User settings * @param[in] path Pathname to write session into * * @return 0 for success, -1 for failure. */ static int write_session_file(const session_t *session, char *us, const char *path) { FILE *f; time_t t; int bracket; long eot; unsigned long csum; int i; char buf[1024]; /* Make sure the wc3270 subdirectory exists. */ if (!strncasecmp(path, documents_wc3270, strlen(documents_wc3270))) { create_wc3270_folder(SRC_DOCUMENTS); } else if (!strncasecmp(path, public_documents_wc3270, strlen(public_documents_wc3270))) { create_wc3270_folder(SRC_PUBLIC_DOCUMENTS); } f = fopen(path, "w+"); if (f == NULL) { errout("Cannot create session file %s: %s", path, strerror(errno)); return -1; } fprintf(f, "! wc3270 session '%s'\n", session->session); t = time(NULL); fprintf(f, "! Created or modified by the wc3270 %s Session Wizard %s", wversion, ctime(&t)); if (strcmp(session->host, CHOICE_NONE)) { bracket = (strchr(session->host, ':') != NULL); fprintf(f, "wc3270.%s: ", ResHostname); if (session->tls) { fprintf(f, "L:"); } if (session->luname[0]) { fprintf(f, "%s@", session->luname); } fprintf(f, "%s%s%s", bracket? "[": "", session->host, bracket? "]": ""); if (session->port != 23) { fprintf(f, ":%d", (int)session->port); } fprintf(f, "\n"); } else if (session->port != 23) { fprintf(f, "wc3270.%s: %d\n", ResPort, (int)session->port); } if (session->proxy_type[0]) { fprintf(f, "wc3270.%s: %s:%s%s%s%s%s%s%s%s%s\n", ResProxy, session->proxy_type, session->proxy_user[0]? session->proxy_user: "", session->proxy_password[0]? ":": "", session->proxy_password[0]? session->proxy_password: "", session->proxy_user[0]? "@": "", strchr(session->proxy_host, ':')? "[": "", session->proxy_host, strchr(session->proxy_host, ':')? "]": "", session->proxy_port[0]? ":": "", session->proxy_port); } fprintf(f, "wc3270.%s: %d\n", ResModel, (int)session->model); if (session->ov_rows || session->ov_cols) { fprintf(f, "wc3270.%s: %ux%u\n", ResOversize, session->ov_cols, session->ov_rows); } fprintf(f, "wc3270.%s: %s\n", ResCodePage, session->codepage); if (session->flags & WF_CROSSHAIR) { fprintf(f, "wc3270.%s: %s\n", ResCrosshair, ResTrue); } if (session->flags & WF_ALTCURSOR) { fprintf(f, "wc3270.%s: %s\n", ResAltCursor, ResTrue); } if (session->flags2 & WF2_CURSOR_BLINK) { fprintf(f, "wc3270.%s: %s\n", ResCursorBlink, ResTrue); } if (session->is_dbcs) { fprintf(f, "wc3270.%s: %s\n", ResAsciiBoxDraw, ResTrue); } if (session->wpr3287) { fprintf(f, "wc3270.%s: %s\n", ResPrinterLu, session->printerlu); if (session->printer[0]) { fprintf(f, "wc3270.%s: %s\n", ResPrinterName, session->printer); } if (session->printercp[0]) { fprintf(f, "wc3270.%s: %s\n", ResPrinterCodepage, session->printercp); } } if (session->keymaps[0]) { fprintf(f, "wc3270.%s: %s\n", ResKeymap, session->keymaps); if (session->flags & WF_EMBED_KEYMAPS) { embed_keymaps(session, f); } } if (session->flags & WF_AUTO_SHORTCUT) { fprintf(f, "wc3270.%s: %s\n", ResAutoShortcut, ResTrue); } if (session->flags & WF_WHITE_BG) { fprintf(f, "\ ! These resources set the background to white\n\ wc3270." ResConsoleColorForHostColor "NeutralBlack: 15\n\ wc3270." ResConsoleColorForHostColor "NeutralWhite: 0\n"); } fprintf(f, "wc3270.%s: %s\n", ResVerifyHostCert, (session->flags2 & WF2_NO_VERIFY_HOST_CERT)? ResFalse: ResTrue); if (session->accept_hostname[0]) { fprintf(f, "wc3270.%s: %s\n", ResAcceptHostname, session->accept_hostname); } if (session->flags & WF_NO_MENUBAR) { fprintf(f, "wc3270.%s: %s\n", ResMenuBar, ResFalse); } if (session->flags & WF_TRACE) { fprintf(f, "wc3270.%s: %s\n", ResTrace, ResTrue); } if (session->flags2 & WF2_ALWAYS_INSERT) { fprintf(f, "wc3270.%s: %s\n", ResAlwaysInsert, ResTrue); } /* Emit the warning. */ fprintf(f, "\ !\n\ ! The following block of text is used to read the contents of this file back\n\ ! into the Session Wizard. If any of the text from the top of the file\n\ ! through the line below reading \"Additional resource definitions...\" is\n\ ! modified, the Session Wizard will not be able to edit this file.\n\ !"); /* Write out the session structure in hex. */ for (i = 0; i < sizeof(*session); i++) { if (!(i % 32)) { fprintf(f, "\n!x"); } fprintf(f, "%02x", ((unsigned char *)session)[i]); } fprintf(f, "\n"); /* Save where we are in the file. */ fflush(f); eot = ftell(f); /* Go back and read what we wrote. */ rewind(f); csum = 0; while (fgets(buf, sizeof(buf), f) != NULL) { for (i = 0; buf[i]; i++) { csum += buf[i] & 0xff; } if (ftell(f) >= eot) { break; } } fflush(f); /* Write out the checksum and structure version. */ fseek(f, 0, SEEK_END); fprintf(f, "!c%08lx %d\n", csum, WIZARD_VER); write_user_settings(us, f); fclose(f); printf("Wrote session file %s.\n", path); return 0; } /** * Make sure the console window is long enough. * * @param[in] rows Number of rows desired * * @return 0 for success, -1 for failure */ static int resize_window(int rows) { int rv = 0; HANDLE h; CONSOLE_SCREEN_BUFFER_INFO info; do { /* Get a handle to the console. */ h = CreateFile("CONOUT$", GENERIC_READ | GENERIC_WRITE, FILE_SHARE_WRITE, NULL, OPEN_EXISTING, 0, NULL); if (h == NULL) { rv = -1; break; } /* Get its current geometry. */ if (GetConsoleScreenBufferInfo(h, &info) == 0) { rv = -1; break; } /* If the buffer isn't big enough, make it bigger. */ if (info.dwSize.Y < rows) { COORD new_size; new_size.X = info.dwSize.X; new_size.Y = rows; if (SetConsoleScreenBufferSize(h, new_size) == 0) { rv = -1; break; } } /* If the window isn't big enough, make it bigger. */ if (info.srWindow.Bottom - info.srWindow.Top < rows) { SMALL_RECT sr; sr.Top = 0; sr.Bottom = rows; sr.Left = 0; sr.Right = info.srWindow.Right - info.srWindow.Left; if (SetConsoleWindowInfo(h, TRUE, &sr) == 0) { rv = -1; break; } } } while(0); if (h != NULL) { CloseHandle(h); } return rv; } /* Compute the values of the directories where user files live. */ static void get_base_dirs(bool new_way) { if (!new_way) { /* Old way: Use AppData instead of the Documents diretories. */ searchdir = appdata_wc3270; public_searchdir = common_appdata_wc3270; return; } } /** * Usage message. Display syntax and exit. */ static void w_usage(void) { fprintf(stderr, "\ Usage: wc3270wiz [session-name]\n\ wc3270wiz [-e] [session-file]\n\ wc3270wiz -U[a]\n"); exit(1); } /** * Main procedure. * * @param[in] argc Command-line argument count * @param[in] argv Command-line arguments * * @return Exit status */ int main(int argc, char *argv[]) { sw_t rc; char *session_name = NULL; bool explicit_edit = false; bool upgrade = false; bool automatic_upgrade = false; DWORD name_size; char result[STR_SIZE]; /* * Parse command-line arguments. * For now, there is only one -- the optional name of the session. */ program = argv[0]; if (argc > 1 && !strcmp(argv[1], "-U")) { upgrade = true; argc--; argv--; } if (argc > 1 && !strcmp(argv[1], "-Ua")) { upgrade = true; automatic_upgrade = true; argc--; argv--; } if (argc > 1 && !strcmp(argv[1], "-e")) { explicit_edit = true; argc--; argv++; } switch (argc) { case 1: break; case 2: session_name = argv[1]; break; default: w_usage(); break; } if (upgrade && explicit_edit) { w_usage(); } /* Figure out the version. */ if (get_version_info() < 0) { return 1; } /* Get some paths from Windows. */ if (!get_dirs("wc3270", &installdir, &desktop, &appdata_wc3270, &public_desktop, &common_appdata_wc3270, &documents, &public_documents, &documents_wc3270, &public_documents_wc3270, &windirs_flags)) { return 1; } searchdir = documents_wc3270; public_searchdir = public_documents_wc3270; name_size = sizeof(username) / sizeof(TCHAR); if (GetUserName(username, &name_size) == 0) { errout("GetUserName failed, error %ld\n", (long)GetLastError()); return 1; } /* Get the console input handle. */ conin_handle = CreateFile("CONIN$", GENERIC_READ | GENERIC_WRITE, FILE_SHARE_READ, NULL, OPEN_EXISTING, 0, NULL); if (conin_handle == NULL) { errout("CreateFile(CONIN$) failed, error %ld\n", (long)GetLastError()); return 1; } /* Resize the console window. */ resize_window(44); signal(SIGINT, SIG_IGN); if (upgrade) { /* Do an upgrade. */ get_base_dirs(false); save_keymaps(admin()); xs_init(admin()); rc = do_upgrade(automatic_upgrade); } else { get_base_dirs(true); save_keymaps(true); /* Display the main menu until they quit or something goes wrong. */ result[0] = '\0'; do { rc = session_wizard(session_name, explicit_edit, result, sizeof(result)); if (session_name != NULL) { break; } } while (rc == SW_SUCCESS); } /* * Wait for Enter before exiting, so the console window does not * disappear without the user seeing what it did. */ if (rc != SW_QUIT) { printf("\n%sWizard %s. ", upgrade? "Migration ": "", (rc == SW_ERR)? "aborted": "complete"); if (!automatic_upgrade) { ask_enter(); } } return 0; } /** * Check whether the current user is currently elevated (Vista or newer) or * in the Administrators group (XP). * * @return TRUE if administrator */ static BOOL admin(void) { BOOL b; SID_IDENTIFIER_AUTHORITY nt_authority = { SECURITY_NT_AUTHORITY }; PSID administrators_group; if (getenv("NOTADMIN")) { return FALSE; } b = AllocateAndInitializeSid(&nt_authority, 2, SECURITY_BUILTIN_DOMAIN_RID, DOMAIN_ALIAS_RID_ADMINS, 0, 0, 0, 0, 0, 0, &administrators_group); if (b) { if (!CheckTokenMembership( NULL, administrators_group, &b)) { b = FALSE; } FreeSid(administrators_group); } return(b); } /** * Are there any wc3270 files in a directory? * * @param[in] dirname directory name * * @return true if there are any wc3270 files present */ static bool any_in(char *dirname) { char path[MAX_PATH]; HANDLE h; WIN32_FIND_DATA find_data; bool any = false; snprintf(path, sizeof(path), "%s%s", dirname, DONE_FILE); if (access(path, R_OK) == 0) { return false; } snprintf(path, sizeof(path), "%s*" SESS_SUFFIX, dirname); if ((h = FindFirstFile(path, &find_data)) != INVALID_HANDLE_VALUE) { any = true; FindClose(h); } if (any) { return true; } snprintf(path, sizeof(path), "%s*" KEYMAP_SUFFIX, dirname); if ((h = FindFirstFile(path, &find_data)) != INVALID_HANDLE_VALUE) { any = true; FindClose(h); } return any; } /** * Check whether there are files to be migrated. */ static bool ad_exist(void) { return (any_in(appdata_wc3270) || (admin() && any_in(common_appdata_wc3270))); } /*********** Migration Wizard. ***********/ /* Write a wchar_t string to a file. */ static void wwrite(FILE *f, wchar_t *s) { fwrite(s, sizeof(wchar_t), wcslen(s), f); } /* Create a wc3270 folder. */ static void create_wc3270_folder(src_t src) { char *parent = (src == SRC_DOCUMENTS)? documents: public_documents; char wc3270_dir[MAX_PATH]; char desktop_ini[MAX_PATH]; char wc3270_exe[MAX_PATH]; wchar_t lwc3270_exe[MAX_PATH]; /* Create My Documents\wc3270. */ snprintf(wc3270_dir, MAX_PATH, "%swc3270", parent); if (access(wc3270_dir, R_OK) != 0) { /* Create the folder. */ if (_mkdir(wc3270_dir) < 0) { errout("Cannot create %s: %s\n", wc3270_dir, strerror(errno)); exit(1); } printf("Created folder %s.\n", wc3270_dir); } /* * Mark it read-only, so file explorer looks for Desktop.ini. * Also clear the SYSTEM flag, in case it was set by an earlier version. */ SetFileAttributes(wc3270_dir, FILE_ATTRIBUTE_READONLY | (GetFileAttributes(wc3270_dir) & ~FILE_ATTRIBUTE_SYSTEM)); snprintf(desktop_ini, MAX_PATH, "%swc3270\\Desktop.ini", parent); if (access(desktop_ini, R_OK) != 0) { /* Create Desktop.ini. */ FILE *f = fopen(desktop_ini, "wb"); if (f == NULL) { errout("Cannot create %s: %s\n", desktop_ini, strerror(errno)); return; } fwrite("\xff\xfe", 1, 2, f); /* BOM */ wwrite(f, L"[.ShellClassInfo]\r\n"); wwrite(f, L"ConfirmFileOp=0\r\n"); wwrite(f, L"IconFile="); snprintf(wc3270_exe, MAX_PATH, "%swc3270.exe", installdir); mbstowcs(lwc3270_exe, wc3270_exe, strlen(wc3270_exe) + 1); wwrite(f, lwc3270_exe); wwrite(f, L"\r\n"); wwrite(f, L"IconIndex=0\r\n"); fclose(f); /* Make it a hidden system file. */ if (!SetFileAttributes(desktop_ini, FILE_ATTRIBUTE_SYSTEM|FILE_ATTRIBUTE_HIDDEN)) { errout("SetFileAttributes(%s) failed", desktop_ini); return; } } } /* Copy one session file (Migration Wizard). */ static sw_t migrate_session(xs_t *xs, int automatic, bool fully_automatic) { FILE *f, *g; int c; char link_path[MAX_PATH]; char from_path[MAX_PATH]; char to_path[MAX_PATH]; session_t s; char exepath[MAX_PATH]; char args[MAX_PATH]; HRESULT hres; int rc; src_t to_src = xs->location; bool shortcut_exists; if (!automatic) { printf("\nFound "); if (xs->location == SRC_DOCUMENTS) { printf("user '%s'", username); } else { printf("shared"); } printf(" session '%s'.", xs->name); if (admin()) { do { char answer[16]; size_t sl; printf("\n\ Copy session to My Documents, Public Documents or neither?\n\ (my/public/neither) [%s] ", xs->location == SRC_DOCUMENTS? "my": "public"); if (!get_input(answer, sizeof(answer))) { return SW_ERR; } sl = strlen(answer); if (!sl) { break; } if (!strncasecmp(answer, "quit", sl)) { return SW_QUIT; } if (!strncasecmp(answer, "neither", sl)) { return SW_SUCCESS; } if (!strncasecmp(answer, "my", sl)) { to_src = SRC_DOCUMENTS; break; } if (!strncasecmp(answer, "public", sl)) { to_src = SRC_PUBLIC_DOCUMENTS; break; } errout("Please answer 'my', 'public' or 'neither'.\n"); } while (true); } else { do { int rc; printf("\nCopy session to My Documents? (y/n) [y]: "); rc = getyn(true); if (rc == YN_ERR) { return SW_ERR; } if (rc == FALSE) { return SW_SUCCESS; } if (rc == TRUE) { to_src = SRC_DOCUMENTS; break; } } while (true); } } snprintf(from_path, MAX_PATH, "%s%s.wc3270", (xs->location == SRC_DOCUMENTS)? appdata_wc3270: common_appdata_wc3270, xs->name); snprintf(to_path, MAX_PATH, "%s%s.wc3270", (to_src == SRC_DOCUMENTS)? documents_wc3270: public_documents_wc3270, xs->name); /* Check for overwrite. */ if (!fully_automatic) { if (access(to_path, R_OK) == 0) { do { printf("\nReplace %s? (y/n) [y]: ", to_path); rc = getyn(TRUE); if (rc == YN_ERR) { return SW_ERR; } else if (rc == FALSE) { return SW_SUCCESS; } } while (rc == YN_RETRY); } } f = fopen(from_path, "r"); if (f == NULL) { errout("Cannot open %s for reading: %s\n", from_path, strerror(errno)); return SW_ERR; } create_wc3270_folder(to_src); g = fopen(to_path, "w"); if (g == NULL) { errout("Cannot open %s for writing: %s\n", to_path, strerror(errno)); fclose(f); return SW_ERR; } while ((c = fgetc(f)) != EOF) { fputc(c, g); } fclose(f); fclose(g); printf("Copied session '%s' to %s.\n", xs->name, to_path); snprintf(link_path, MAX_PATH, "%s%s.lnk", (xs->location == SRC_DOCUMENTS)? desktop: public_desktop, xs->name); shortcut_exists = (access(link_path, R_OK) == 0); if (automatic) { /* Automatic -- only replace the shortcut it if exists. */ if (!shortcut_exists) { return SW_SUCCESS; } } else { /* Manual -- ask. */ do { printf("\n%s desktop shortcut? (y/n) [y]: ", shortcut_exists? "Replace": "Create"); rc = getyn(TRUE); if (rc == YN_ERR) { return SW_ERR; } else if (rc == FALSE) { return SW_SUCCESS; } } while (rc == YN_RETRY); } /* Read in the session. */ f = fopen(to_path, "r"); if (!read_session(f, &s, NULL)) { errout("Invalid session file '%s'.\n", to_path); fclose(f); return SW_ERR; } fclose(f); /* Create the shortcut. */ snprintf(exepath, MAX_PATH, "%s%s", installdir, "wc3270.exe"); snprintf(args, MAX_PATH, "+S \"%s\"", to_path); hres = create_shortcut(&s, exepath, link_path, args, installdir); if (!SUCCEEDED(hres)) { errout("Cannot create shortcut '%s'.\n", link_path); return SW_ERR; } printf("%s shortcut %s\n", shortcut_exists? "Replaced": "Created", link_path); /* Done. */ return SW_SUCCESS; } /* Copy one keymap (Migration Wizard). */ static sw_t migrate_one_keymap(const char *from_dir, const char *to_dir, const char *name, const char *suffix, bool fully_automatic) { char from_path[MAX_PATH]; char to_path[MAX_PATH]; FILE *f, *g; int c; /* Construct the paths. */ snprintf(from_path, MAX_PATH, "%s%s%s%s", from_dir, name, KEYMAP_SUFFIX, suffix); snprintf(to_path, MAX_PATH, "%s%s%s%s", to_dir, name, KEYMAP_SUFFIX, suffix); if (!fully_automatic) { /* Check for overwrite. */ if (access(to_path, R_OK) == 0) { int rc; do { printf("\nReplace %s? (y/n) [y]: ", to_path); rc = getyn(TRUE); if (rc == TRUE) { break; } if (rc == FALSE) { return SW_SUCCESS; } if (rc == YN_ERR) { return SW_ERR; } } while (rc == YN_RETRY); } } /* Create the documents folder. */ if (!strcasecmp(to_dir, documents_wc3270)) { create_wc3270_folder(SRC_DOCUMENTS); } else { create_wc3270_folder(SRC_PUBLIC_DOCUMENTS); } /* Copy. */ f = fopen(from_path, "r"); if (f == NULL) { errout("Cannot open %s for reading: %s\n", from_path, strerror(errno)); return SW_ERR; } g = fopen(to_path, "w"); if (g == NULL) { errout("Cannot open %s for reading: %s\n", to_path, strerror(errno)); fclose(f); return SW_ERR; } while ((c = fgetc(f)) != EOF) { fputc(c, g); } /* Done. */ fclose(f); fclose(g); printf("Copied keymap '%s' to %s.\n", name, to_path); return SW_SUCCESS; } /* Copy the keymaps (Migration Wizard). */ static sw_t migrate_keymaps(bool fully_automatic) { km_t *km; sw_t sw; for (km = km_first; km != NULL; km = km->next) { char *from_dir; char to_dir[MAX_PATH]; switch (km->src) { case SRC_DOCUMENTS: from_dir = appdata_wc3270; snprintf(to_dir, MAX_PATH, "%swc3270\\", documents); break; case SRC_PUBLIC_DOCUMENTS: from_dir = common_appdata_wc3270; snprintf(to_dir, MAX_PATH, "%swc3270\\", public_documents); break; default: continue; } if (km->def_both != NULL) { sw = migrate_one_keymap(from_dir, to_dir, km->name, "", fully_automatic); if (sw != SW_SUCCESS) { return sw; } } if (km->def_3270 != NULL) { sw = migrate_one_keymap(from_dir, to_dir, km->name, KM_3270, fully_automatic); if (sw != SW_SUCCESS) { return sw; } } if (km->def_nvt != NULL) { sw = migrate_one_keymap(from_dir, to_dir, km->name, KM_NVT, fully_automatic); if (sw != SW_SUCCESS) { return sw; } } } return SW_SUCCESS; } /* Do an upgrade. */ static sw_t do_upgrade(bool automatic_from_cmdline) { char done_path[MAX_PATH]; static char wizard[] = "wc3270 Migration Wizard"; int nkm = 0; int nf = 0; int rc; int automatic; xs_t *xs; FILE *f; /* If there are no sessions and no keymaps, we're done. */ if (km_first) { km_t *km; for (km = km_first; km != NULL; km = km->next) { if (km->src != SRC_NONE) { nkm++; } } } if (!xs_my.count && !xs_public.count && !nkm) { printf("No session files or keymaps to migrate.\n"); return SW_QUIT; } if (!automatic_from_cmdline) { /* Say hello. */ cls(); reverseout("%s%*s%s\n", wizard, (int)(79 - strlen(wizard) - strlen(wversion)), " ", wversion); /* Ask if they want to upgrade. */ printf("\n\ wc3270 %s no longer keeps user-defined files in AppData. Session and\n\ keymap files are kept in Documents folders instead.\n\n\ The following files were found in %s:\n", wversion, admin()? "wc3270 AppData folders": "your wc3270 AppData folder"); if (xs_my.count || xs_public.count) { int nxs = xs_my.count + xs_public.count; printf(" %d session file%s\n", nxs, (nxs != 1)? "s": ""); nf = nxs; } if (nkm) { printf(" %d keymap file%s\n", nkm, (nkm != 1)? "s": ""); nf += nkm; } while (true) { printf("\nCopy %s to %s? (y/n) [y]: ", (nf == 1)? "this file": "these files", admin()? "Documents folders": "My Documents"); rc = getyn(TRUE); if (rc == YN_ERR) { return SW_ERR; } if (rc == FALSE) { return SW_SUCCESS; } if (rc == TRUE) { break; } } printf("\n\ The files can be copied automatically, which means that:\n\ - Session files and keymap files in your wc3270 AppDefaults folder will be\n\ copied to My Documents.\n"); if (admin()) { printf("\ - Session files and keymap files in the all-users wc3270 AppDefaults folder\n\ will be copied to Public Documents.\n"); } printf("\ - Existing desktop shortcuts will be re-written to point at the new sessions,\n\ which means that any customizations will be lost.\n"); while (true) { printf("\nCopy automatically? (y/n) [y]: "); automatic = getyn(TRUE); if (automatic == YN_ERR) { return SW_ERR; } if (automatic == TRUE || automatic ==FALSE) { break; } } printf("\n"); } else { /* Just do it all automatically. */ automatic = TRUE; } /* Copy each session file. */ for (xs = xs_my.list; xs != NULL; xs = xs->next) { rc = migrate_session(xs, automatic, automatic_from_cmdline); if (rc != SW_SUCCESS) { return rc; } } for (xs = xs_public.list; xs != NULL; xs = xs->next) { rc = migrate_session(xs, automatic, automatic_from_cmdline); if (rc != SW_SUCCESS) { return rc; } } /* Copy each keymap. */ rc = migrate_keymaps(automatic_from_cmdline); if (rc != SW_SUCCESS) { return rc; } /* Don't do this again. */ snprintf(done_path, sizeof(done_path), "%s%s", searchdir, DONE_FILE); if ((f = fopen(done_path, "w")) != NULL) { fclose(f); } if (admin()) { snprintf(done_path, sizeof(done_path), "%s%s", public_searchdir, DONE_FILE); if ((f = fopen(done_path, "w")) != NULL) { fclose(f); } } /* Done. */ return SW_SUCCESS; } suite3270-4.1/wc3270/wselectc.h000066400000000000000000000041041413735575200157450ustar00rootroot00000000000000/* * Copyright (c) 2013-2015 Paul Mattes. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of Paul Mattes nor his contributors may be used * to endorse or promote products derived from this software without * specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. */ /* * selectc.h * A Windows console-based 3270 Terminal Emulator * Screen selections */ /* Used by the screen logic. */ bool select_changed(unsigned row, unsigned col, unsigned rows, unsigned cols); typedef enum { SE_BUTTON_DOWN, SE_RIGHT_BUTTON_DOWN, SE_BUTTON_UP, SE_MOVE, SE_DOUBLE_CLICK } select_event_t; bool select_event(unsigned row, unsigned col, select_event_t event, bool shift); void select_init(unsigned max_rows, unsigned max_cols); void select_sync(unsigned row, unsigned col, unsigned rows, unsigned cols); bool select_return_key(void); suite3270-4.1/wc3270/wx3270-32.zipit000066400000000000000000000001611413735575200162370ustar00rootroot00000000000000obj/win32/wb3270/b3270.exe obj/win32/wpr3287/pr3287.exe obj/win32/ws3270/s3270.exe obj/win32/x3270if/x3270if.exe suite3270-4.1/wc3270/wx3270-64.zipit000066400000000000000000000001611413735575200162440ustar00rootroot00000000000000obj/win64/wb3270/b3270.exe obj/win64/wpr3287/pr3287.exe obj/win64/ws3270/s3270.exe obj/win64/x3270if/x3270if.exe suite3270-4.1/wc3270/x3270-icon2.bmp000066400000000000000000000400661413735575200162650ustar00rootroot00000000000000BM6@6(@@ @  •¦²­·”¥±aq|Rcs~›j{‰ÿfvƒÿRboÿXjxÿVhvÿUfsÿRbnÛR_i²WgrÛ]jvÌcnv´hwƒÂl~‰ÿl}‹ÿ\o|ÿ\p|ÿo€Žÿo‚Žÿh|‰ÿfw„ÿhz†ÿfy…ÿfy…ÿdv„ÿYmzÿThuøYkxöZn{ñ^q}ÿ^p|ÿXjxÿauÿdx„ÿh|‰ÿlŒÿm€Žÿn‚ÿn‚‘ÿh|‰Òl~‰õq€‹ÿlw°v‹ÿdr~ÿRcpÿFWcÿHZhÿThwÿYm|ÿWjzüYn}ìWm}ÿZpÿZpÿ]rÿ_u„ÿdz‰ÿdyŠÿcz‰ÿdyˆÿey‰ÿi~ÿh~Œÿl€ÿl‚ÿp…“ÿuˆ–ÿ}œÿ‚•¡ÿ}žÿ…˜¦ÿ‰œ¨ÿ‘£°ÿ’¤²ÿ£°ÿ“¦³ÿ”£ÿqˆ–ÿo…”ÿlÿfzˆÿu†‘ÿly‚ÿH[hÿG[jÿH\mÿI_nÿPgwÿQizÿax‰ÿd{Œÿd{‹ÿg~Žÿhÿo…”ÿsˆ–ÿw‹šÿyžÿ”¢ÿ€”£ÿ”¢ÿ|‘¡ÿ}’¡ÿ–¤ÿ–¤ÿ–¥ÿ…™¨ÿ‡œ©ÿŠ«ÿŠž«ÿ¡®ÿ‰«ÿƒ—¦ÿ¡®ÿ£±ÿ‘¤±ÿ¢°ÿ“¥³ÿ‘¤²ÿu‹›ÿqˆ˜ÿu‹›ÿt‰˜ÿs‡—ÿŠ™¥ÿ|Œ–ÿv„Œÿ_rÿe{‰ÿi€ÿl‚’ÿtŠ™ÿxŽœÿ„™§ÿ†›¨ÿ‡›©ÿ‡›©ÿˆœªÿ‹ž¬ÿ‹Ÿ¬ÿ‡›ªÿ„™§ÿ‚—¦ÿ„˜§ÿ€•¤ÿ€•¤ÿ~”£ÿ~”£ÿ{‘ ÿ|‘ ÿ|‘ ÿ–¥ÿ”£ÿ”£ÿ„™§ÿ†š©ÿ„˜§ÿ…™¨ÿŽ¡¯ÿ‹ž­ÿŠž­ÿŽ¡¯ÿ–¨µÿŠž«ÿuŠšÿ~“¢ÿ–¥ÿ€•¤ÿzŸÿzŒ˜ÿt‚Œÿ_iq´Œ•ÿ›ÿŸ­ÿŽ¢¯ÿ£±ÿ“¥³ÿ’¥²ÿ’¦²ÿ”§´ÿ’¥³ÿ¡¯ÿ‹ž­ÿ‡œªÿ€•¤ÿzŸÿvŒœÿxŽÿvŒœÿsŠ™ÿu‹šÿt‰˜ÿwÿtŠ™ÿs‡–ÿs…“ÿyŠ—ÿx‰–ÿ{Œ˜ÿy‹—ÿs…’ÿi|ŠÿWgtÿz‹—ÿŠž¬ÿ…˜¦ÿ†˜¤ÿ‹›¥ÿ’¥²ÿ…™§ÿ| ÿ†š©ÿ‡›©ÿ…™¨ÿ€”£ÿy‹—ÿnz„Ùš¢ÿ¢¯ÿ’¥²ÿ’¥²ÿ“¦³ÿ”§´ÿ’¥³ÿŽ¡¯ÿžªÿ…—£ÿ‚”¡ÿ}ÿs‡•ÿk€ÿeyˆÿ^p}ÿSeqÿJ[iÿQbnÿ7EPÿ1;Dÿ!-6ÿ*ÿ ÿÿ ÿ ÿÿ ÿ  ÿÿ!+4ÿ>MZÿ *4ÿ&ÿ ÿVeqÿŠ«ÿ{Ÿÿ€”£ÿŒ ­ÿ¡®ÿ‹Ÿ­ÿˆœ©ÿ{‹—ÿm{†ÿ©³ÿ‘£°ÿŽ¡¯ÿ’¦³ÿ˜ª·ÿ’¥³ÿ•§´ÿ]goÿ8@Iÿ8>Gÿ;CJÿ.8Aÿ%/8ÿ&0ÿ"ÿÿÿ#ÿ&ÿ&ÿ!*ÿ&0ÿ".9ÿ3@Jÿ;HQÿHVbÿTbmÿ$,4ÿ ÿ  ÿ'ÿ*3;ÿ ÿ "ÿ !ÿ!*ÿTbmÿ„™¨ÿ~“¢ÿˆœªÿŽ¡¯ÿ¡¯ÿ“¦³ÿ‹©ÿ|Œ–ÿ¢¯·ÿŒ ­ÿ•¨µÿ„• ÿZjuÿNZcÿ$.7ÿ ÿ ÿKZfÿ/9Cÿ&-ÿ!+5ÿ.;Gÿ8DNÿBOZÿK[hÿPcqÿ_rÿhz‡ÿkŒÿvŠ˜ÿ„—¤ÿŒŸ«ÿœ®¹ÿž°¼ÿ}Š“ÿP\fÿXclÿÿ+4=ÿ&/ÿ !ÿ%ÿ ÿ$ÿqƒ‘ÿ‰¬ÿ…™§ÿ¡¯ÿ£°ÿ˜«·ÿ“¤°ÿ}Š•ÿ ®·ÿ’¥²ÿfqzÿ ÿ ÿ",ÿ ÿ ÿfu€ÿ†–¡ÿ‚•¡ÿ”¢ÿ‡š¨ÿ…™¦ÿƒ—¦ÿ„˜¦ÿ‚—¥ÿ‰«ÿ¡¯ÿ“¦³ÿ—ª¶ÿ™«·ÿ ±¼ÿ£´Àÿ¦·Âÿ¬¼Æÿ­½Çÿ·ÅÌÿQW]ÿ#ÿ/;Eÿ&ÿ#ÿ ÿÿ9DLÿŠªÿŠž¬ÿ†›©ÿ¢°ÿ’¥³ÿ ­ÿK]kÿn~ˆÿ’£¬ë‚’œÿ!)2ÿ ÿ"-ÿ'2ÿÿ$+1ÿ;?BÿŠš¥ÿœ®»ÿ—ª¶ÿ“¦³ÿ¢°ÿ¢°ÿ£°ÿ£±ÿ•¨µÿ—ª·ÿ—ª·ÿ¯ºÿ ±½ÿŸ±½ÿ¢²¾ÿ¦·Áÿ®¿Èÿ±ÁÊÿ‚Ž–ÿ ÿ&ÿ+7Aÿ )ÿ ÿ*ÿ*4=ÿ}‘žÿ£°ÿ‡œ©ÿˆœªÿ¡¯ÿ‰›¨ÿATbÿcv…ÿiyƒÿn|†ÿ¤¯¶Ù™ÿ7?Hÿ ÿ%1ÿ*6ÿ"ÿ*18ÿu…ÿ¢´Àÿœ®ºÿ”§³ÿ“¥²ÿ¢¯ÿŒŸ­ÿŒŸ¬ÿŽ¡®ÿ¡®ÿ¢¯ÿ“¥±ÿ’¤±ÿ–§³ÿ¡­ÿ‘¡¬ÿ”¤¯ÿ’Ÿÿw…‘ÿ-9Cÿ#.7ÿ1>Hÿ*7Cÿ+ÿ)ÿ!)ÿ1?Iÿq…“ÿŽ¢°ÿ‰ªÿˆ«ÿ’ ÿ;P_ÿdzˆÿ]p~ÿ_o{ÿev€ÿu…’ÿ”£—o{†ÿ#)2ÿ(ÿ(6Aÿ7DNÿ{ˆ‘ÿˆ™¤ÿŽŸªÿ{šÿu…‘ÿo|…ÿlw€ÿly‚ÿlyÿnz‚ÿdq{ÿcpyÿXgrÿL[fÿCQ]ÿ4>Gÿ2;Cÿ-7?ÿ$.7ÿ*4ÿ%ÿ$ÿ ÿÿ ÿÿÿÿ3@Lÿ~’Ÿÿ‘¥²ÿ†›©ÿp‚ÿ6K\ÿd{Œÿ`xˆÿ_t‚ÿ[o|ÿ`p|ÿdv‚ÿKU]ÿ9BJÿ+6@ÿ%.ÿ")ÿ%ÿ ÿÿÿ ÿÿ ÿÿ ÿ ÿ ÿ ÿ ÿÿÿÿÿÿ ÿÿ ÿÿ ÿ ÿÿÿ ÿ8FQÿu…’ÿs„‘ÿGXfÿ;O_ÿe}ÿe|Œÿc{‹ÿbx‡ÿ_rÿ]p{ÿ`q}ÿdtÿ069ÿ ÿ*ÿ ÿÿÿÿÿÿ ÿÿÿ ÿÿ ÿ ÿ ÿ ÿ ÿÿÿ  ÿ ÿ  ÿ !ÿ $ÿ "ÿ ÿ ÿ ÿ ÿ*ÿ#1=ÿ"0<ÿ,;ÿAVfÿf~Žÿe|ÿhÿi€‘ÿf|Œÿbw…ÿ^o{ÿ[kxÿfw„ÿk{†ÿ…Šÿ=DJÿ'18ÿ*3;ÿ%.ÿ)ÿ$/ÿ*6ÿ .:ÿ)5ÿ*6ÿ.<ÿ"3Aÿ$5Cÿ$6Dÿ&8Eÿ&8Fÿ%7Fÿ':Iÿ"2Aÿ#4Cÿ 1Aÿ,;ÿ+:ÿ)9ÿ*9ÿ .ÿ,ÿ&ÿ&ÿ)ÿ)ÿ!0ÿ"0ÿ%4ÿMcsÿh€ÿi€‘ÿlƒ’ÿi€‘ÿj’ÿj‘ÿe{‰ÿbv…ÿ^t„ÿZmzÿals…box¿‹“ÿuƒÿXkyÿRfvÿRiyÿE\nÿ?Vhÿ9Pbÿ7N`ÿ6L^ÿ5K]ÿ.DUÿ,BSÿ-CTÿ.CUÿ/EVÿ*?Pÿ)=Oÿ$8Iÿ"5Eÿ.?ÿ*9ÿ'6ÿ-ÿ*ÿ&ÿ $ÿ "ÿ "ÿ'ÿ+ÿ!/ÿNdsÿlƒ“ÿk‚’ÿm„”ÿk‚’ÿm„”ÿn…”ÿk‚’ÿi€ÿf}ŒÿYn~ÿ^o|ÿu†“ÿbyŠÿ[s„ÿUm~ÿH`rÿE[mÿ>Ugÿ8N`ÿ4J\ÿ4J\ÿ0FWÿ+ARÿ.CTÿ/EVÿ-CTÿ)=Nÿ';Lÿ%8Iÿ"5Fÿ-=ÿ&4ÿ!/ÿ)ÿ 'ÿ ÿ !ÿ "ÿ ÿ "ÿ #ÿ $ÿMbrÿkƒ’ÿm„“ÿlƒ’ÿlƒ“ÿk‚’ÿn…•ÿm„”ÿj’ÿf~ŽÿZp€ÿ\n{ÿl|‡ÿ_v…ÿTl}ÿOgyÿF^pÿBYkÿ=Tfÿ8Oaÿ4K\ÿ3J[ÿ.CUÿ,ASÿ/DUÿ/EVÿ)=Nÿ%9Jÿ%8Iÿ%8Iÿ$7Hÿ1Bÿ&6ÿ -ÿ'ÿ !ÿ !ÿ ÿ ÿ ÿ  ÿ ÿ !ÿTjzÿkƒ’ÿlƒ“ÿn…•ÿo†•ÿlƒ“ÿn…•ÿlƒ“ÿhÿd{‹ÿ]r‚ÿYkyÿl{ˆÿ[s€ÿJbtÿKbtÿAXjÿÿ,<ÿ"/ÿ)ÿ $ÿ &ÿ ÿ  ÿ "ÿ  ÿ ÿ "ÿ^u„ÿn…•ÿm„”ÿo†–ÿp‡—ÿn…”ÿp‡—ÿm„”ÿhÿf}Žÿ^t„ÿWjxÿl{‡ÿYm|ÿOewÿQi{ÿJbsÿG^pÿF^oÿC[mÿ;Rdÿ9Oaÿ6M^ÿ4J\ÿ5L^ÿ/EVÿ(=Nÿ&:Kÿ%:Kÿ';Lÿ#7Hÿ 3Cÿ0@ÿ(6ÿ%4ÿ -ÿ -ÿ -ÿ,ÿ!/ÿ+ÿ!.9ÿ?N\ÿp‡–ÿr‰˜ÿp‡—ÿn…•ÿp‡—ÿp‡—ÿq‡—ÿo†–ÿj‘ÿg~Žÿ]sƒÿj|ˆÿo{†ÿ\o|ÿ`v†ÿ`wˆÿXp€ÿNfwÿLctÿE\mÿ>Ufÿ=Seÿ:Pbÿ4J\ÿ3J\ÿ/DVÿ*?Pÿ';Kÿ%9Iÿ(ÿ0@ÿ#4Cÿ4HWÿ`u…ÿv‹šÿvŒœÿt‹šÿr‰™ÿqˆ˜ÿqˆ—ÿo†–ÿm„”ÿm„”ÿk‚’ÿg~ÿ^t„ÿs‚ÿXgrÿCUdÿAUfÿ?Teÿ>Teÿ:O`ÿ>TdÿDYjÿLbsÿLbrÿQfwÿWm}ÿ^u…ÿ\r‚ÿWm~ÿXo~ÿWm}ÿZp€ÿUk|ÿNeuÿI`qÿ@Ugÿ?Ugÿ?Vgÿ6K]ÿ7K\ÿ4HWÿd{Šÿrˆ˜ÿwÿxŽÿt‹šÿsŠ™ÿt‹šÿuŒ›ÿrˆ˜ÿlƒ“ÿj‘ÿmƒ“ÿj‘ÿg~ÿ_u‚ÿguÿ†‘™ÿt„Žÿn~‡ÿiz‡ÿl}‹ÿqƒ‘ÿzŒ™ÿ’Ÿÿˆ™¦ÿŒž«ÿ¡­ÿ¡­ÿ¢®ÿ¡­ÿŽŸªÿ‹›§ÿˆ™¥ÿ‰š¥ÿ‰š¦ÿŠœ¨ÿ†™¥ÿ†™¦ÿ…˜¥ÿ€”¡ÿxŒšÿm‚’ÿUm}ÿe{‹ÿu‹šÿzŸÿyŸÿxŽÿxÿu‹šÿt‹šÿtŠšÿwÿt‹šÿlƒ“ÿj‘ÿl‚’ÿj‚‘ÿd|Œÿ\qÿdr{ÿ”¡ªÿ¢¯¶ÿ›ªµÿŠ— ÿyƒŠÿm{„ÿ]isÿY`fÿ^diÿ^dhÿ]dhÿV]bÿQY`ÿJSYÿDOVÿ=GNÿ7>Dÿ4:@ÿ29Cÿ4;Dÿ5Dÿ&,2ÿ!$ÿ"ÿ ÿ ÿÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ%+ÿ‡œªÿ†š©ÿ…š¨ÿ–¥ÿ~“¢ÿzŸÿxŽÿu‹›ÿtŠšÿsŠ™ÿuŒ›ÿu‹›ÿr‰˜ÿo†–ÿm„”ÿlƒ’ÿd|ÿ_t„ÿds}ÿ…–ÿ#&ÿÿÿ ÿ ÿ ÿ ÿÿ ÿ ÿ ÿ ÿ ÿ ÿÿ ÿ ÿ ÿÿ ÿ ÿ ÿÿÿ ÿ ÿ ÿÿÿŠœ©ÿ†›ªÿˆœªÿ‡›ªÿ…™¨ÿ~“¢ÿ•£ÿxÿxÿwÿwœÿuŒ›ÿsŠ™ÿo†•ÿo†–ÿn…”ÿi€ÿcxˆÿdrÿfnsÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿÿ ÿ ÿ (ÿ%ÿ ÿ‰š¥ÿ“§´ÿ‘¤²ÿ¡®ÿŠž¬ÿ„˜§ÿ~”£ÿzŸÿ{žÿxŽžÿu‹›ÿvŒœÿu‹›ÿn…•ÿm„”ÿo†–ÿk‚’ÿg|‹ÿct€ÿQ[bÿ ÿ ÿ ÿ ÿÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿÿ ÿ ÿ ÿÿ ÿÿÿ ÿ ÿ ÿ ÿ ÿÿ ÿ‡™¤ÿ™¬¹ÿ“¦³ÿŽ¢¯ÿŒŸ­ÿ…™¨ÿ€•¤ÿ}“¢ÿ|’ ÿyŽžÿvŒœÿvŒ›ÿu‹šÿp†–ÿk‚’ÿm„”ÿj‘ÿg}Œÿ`q~ÿ8@Gÿ ÿ ÿ ÿ ÿ ÿÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿÿ ÿÿÿ ÿÿÿÿ ÿ ÿ ÿ ÿ ÿ ÿˆ™¤ÿš¬¹ÿ•§µÿ”§´ÿ‘¤²ÿˆœªÿ–¥ÿ|’¡ÿ}“¢ÿ{ŸÿxŽžÿvœÿr‰˜ÿp‡—ÿm„”ÿlƒ“ÿlƒ“ÿk€ÿarÿJRXÿ037ÿ ÿ ÿ ÿ ÿ ÿm9ÿm9ÿm9ÿG,ÿ ÿG,ÿG,ÿG,ÿ ÿ ÿG,ÿÿÿÿ ÿÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ…—¢ÿš­ºÿ—©¶ÿ–©¶ÿ•©µÿ‹Ÿ­ÿ‚—¦ÿ}’¢ÿ”£ÿ}’¡ÿ{ ÿwÿr‰˜ÿp‡—ÿm„”ÿlƒ”ÿlƒ“ÿiŽÿ]p|ÿ_gmÿ%*.ÿ ÿ ÿÿ ÿ ÿm9ÿÿG,ÿ ÿm9ÿÿ ÿ ÿÿÿ ÿ ÿÿm;ÿÿ ÿ ÿÿ ÿ ÿÿ$ÿ ÿ ÿ“Ÿÿœ¯»ÿ›¬¹ÿ˜«·ÿ˜«·ÿ‹Ÿ­ÿ–¥ÿ|‘¡ÿ€•¤ÿ~“¢ÿzŸÿuŒ›ÿtŠšÿr‰˜ÿn…”ÿn…”ÿn…•ÿj€ÿ\o{ÿ_elÿ#ÿ ÿ ÿ ÿ ÿ ÿ ÿÿm9ÿm9ÿ ÿ ÿ ÿ ÿ ÿ ÿ w6ÿÿÿÿ ÿ ÿ ÿÿÿ ÿ ÿ ÿ ÿ ÿ‚”Ÿÿ¡²¾ÿž°¼ÿ›­¹ÿ›­¹ÿŽ¡¯ÿƒ˜§ÿ”£ÿƒ˜¦ÿ€•¤ÿ{‘ ÿyžÿzŸÿs‰™ÿp‡–ÿo†–ÿo†•ÿj€ÿ\o{ÿkqtÿ ÿ ÿ ÿ ÿÿ ÿ ÿ ÿÿÿ ÿ ÿÿÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿÿ ÿ ÿÿÿ ÿ ÿ ÿ ÿ‚“ ÿ ²¿ÿŸ±½ÿœ®ºÿ™«¸ÿ¢°ÿ…š©ÿƒ˜¦ÿ„˜§ÿ‚—¦ÿ{‘ ÿ{‘ ÿxŽžÿu‹›ÿtŠšÿq‡—ÿn…•ÿl‚’ÿ`r€ÿouxÿ ÿÿ ÿ ÿÿ ÿ ÿ ÿ ÿ ÿ ÿz1ÿ ÿ ÿ ÿz1ÿg8ÿ ÿ ÿÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿƒ”Ÿÿ¤µÁÿ¢³¿ÿž°¼ÿ™«·ÿ“¦³ÿŒŸ®ÿ‰«ÿ†š©ÿ‚˜§ÿ~“£ÿ}’¢ÿ{ ÿu‹›ÿvŒœÿs‰™ÿo†–ÿm„”ÿcw„ÿemtÿ ÿÿ ÿÿ ÿÿÿ ÿ ÿÿ ÿ ÿ ÿÿ ÿ ÿ ÿ ÿÿÿÿÿm;ÿ ÿ ÿ ÿ ÿ ÿ"+ÿ ÿ‡˜£ÿ¦·Ãÿ¢³¿ÿž¯»ÿ˜ª·ÿ”§´ÿ’¤²ÿ‹Ÿ­ÿˆœ«ÿ…š¨ÿ‚˜§ÿ–¦ÿ–¥ÿz ÿt‹šÿtŠšÿqˆ—ÿqˆ—ÿfz‰ÿJT`ÿ$«ÿJÿ ÿ ÿ ÿ ÿ ÿÿG,ÿ ÿÿj/ÿG,ÿ ÿÿj/ÿ[8ÿ ÿÿ ÿ ÿ ÿ ÿ ÿ ÿÿ ÿ ÿ+ÿ ÿŠš¥ÿ§¹Ãÿ£µÀÿ ±½ÿ›­¹ÿ–©µÿ”§´ÿŽ¡¯ÿ‹ ®ÿ‰«ÿ‡œªÿ…™¨ÿ„™§ÿ|‘¡ÿwœÿvŒœÿxÿr‰˜ÿeyˆÿOT[ÿ ¼ÿ Yÿ ÿ ÿ ÿ ÿÿÿ ÿ o,ÿv.ÿx4ÿ ÿ o,ÿv.ÿx4ÿ ÿ ÿÿÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ&ÿ ÿŸªÿªºÅÿ¦·Âÿ¡²¾ÿž°¼ÿ™¬¸ÿ–©¶ÿ‘¥²ÿ¡®ÿŠž¬ÿˆœªÿ†›©ÿ…™¨ÿ”¤ÿzŸÿwœÿvŒ›ÿq‡–ÿcw†ÿ\_bÿ¢ÿPÿÿ ÿÿG,ÿ ÿÿo:ÿm9ÿm0ÿ3ÿo:ÿm9ÿm0ÿ3ÿ ÿÿ ÿm;ÿÿ ÿÿ ÿ ÿ ÿ ÿÿ (1ÿ ÿ”¤­ÿ©»Åÿ§¸Ãÿ¤µÀÿŸ±¼ÿ™«¸ÿ•§´ÿ”§´ÿ£±ÿŒŸ­ÿ‰«ÿ†›©ÿ†š©ÿ”¢ÿ|‘ ÿ|‘ ÿxŽÿrˆ—ÿfzˆÿW[^ÿ Aÿ 9ÿ ÿÿÿ ÿ o,ÿÿr*ÿn:ÿm;ÿ ÿr*ÿn:ÿ ÿ ÿÿ ÿÿm;ÿm;ÿ ÿ ÿ !ÿ ÿ ÿ ÿ ÿ/=ÿ ÿ—§°ÿ«»Åÿ©¹Äÿ¦·Âÿ ²½ÿš­¹ÿ–¨µÿ’¥²ÿ£±ÿŽ¢¯ÿ‰ž¬ÿ…š¨ÿ†›¨ÿ€•¤ÿ€•¤ÿƒ˜¦ÿ}’¡ÿsˆ˜ÿgzˆÿRY^ÿ ÿ ÿ ÿ ÿÿo:ÿm9ÿ ÿ ÿ ÿ k;ÿ z!ÿ ÿ ÿ k;ÿ z!ÿ ÿ ÿ ÿÿ ÿÿÿÿÿ ÿÿÿ(2<ÿÿš©²ÿ©ºÅÿ¬¼Æÿ¦·Âÿ ±½ÿ˜«·ÿ–©µÿ’¥³ÿ‘¤±ÿ¡¯ÿˆœªÿ†š¨ÿˆœªÿ†›©ÿƒ˜¦ÿ–¥ÿ|‘¡ÿxŒšÿi|ŠÿKSZÿ ÿ ÿ ÿ ÿÿr*ÿn:ÿ ÿ$ÿ'ÿ q6ÿ ‹(ÿ$ÿ'ÿ ÿ ÿÿ ÿ ÿÿÿÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ™¨±ÿ©ºÄÿ¬¼Æÿ¥¶ÁÿŸ±½ÿ—ª·ÿ–¨µÿ’¥³ÿ’¥²ÿ¡¯ÿ‹ž¬ÿ‡›ªÿŒ ­ÿ‡œªÿ„™§ÿ–¥ÿ~“¢ÿy›ÿi}ŠÿAJQÿÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿÿ ÿ" ÿ ÿÿ ÿ ÿÿ ÿ ÿ ÿ ÿÿ ÿ ÿ ÿÿ ÿ ÿ ÿÿšªµÿ©¹Äÿ¬¼Æÿ¥¶Áÿ ±½ÿš­¹ÿ–©µÿ•¨´ÿ“¦³ÿ¤±ÿŒ ®ÿŠž¬ÿŠŸ­ÿˆœªÿ†š¨ÿ„˜§ÿ€•£ÿzŽœÿk}‹ÿ4Dÿª»ÇÿªºÅÿ¨¸Ãÿ¤µÀÿŸ²½ÿœ¯»ÿš¬¸ÿ˜«·ÿ•©µÿ—©¶ÿ’¥³ÿ¢°ÿŒ ®ÿŠž¬ÿˆœ«ÿ‡œªÿ†š©ÿ~‘Ÿÿm€ÿ).4ÿÿ ÿ ÿ ÿÿm8ÿ‚ ÿÿ ÿ t.ÿ ÿ†1ÿ ÿ t.ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿÿÿ ÿÿ ÿ ÿ ÿ ÿ?DIÿ§¸ÃÿªºÄÿ©¹Äÿ¦·Áÿ¡²¾ÿž°¼ÿ˜ª·ÿ˜«·ÿ–ª¶ÿ–¨µÿ’¥²ÿŽ¢¯ÿ‹Ÿ­ÿŠž¬ÿЬÿŠž«ÿ…™¨ÿ’ ÿoŽÿ).4ÿ ÿ ÿ ÿ ÿÿ !ÿÿÿ !ÿ !ÿˆ&ÿ 'ÿ !ÿ !ÿ ÿ ÿ ÿÿ ÿ ÿ ÿÿ ÿ ÿÿÿ ÿÿ ÿCILÿ¥·Âÿ«¼ÅÿªºÄÿ¦¶Áÿ¢³¾ÿŸ±¼ÿœ®ºÿ™«·ÿ”§´ÿ•§´ÿ‘¤±ÿ¢¯ÿŠŸ­ÿ‹ ­ÿŠž¬ÿˆœ«ÿ€•£ÿ}‘Ÿÿqƒÿ'+0ÿ ÿ ÿ ÿ ÿÿ ÿ t.ÿ ÿ†1ÿ ÿ t.ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿÿÿ ÿÿ ÿ ÿ ÿ ÿ ÿ ÿÿXciÿ¨ºÅÿ­½ÇÿªºÅÿ¨¹Ãÿ£´¿ÿž°»ÿŸ±½ÿ™«·ÿ’¥³ÿ”§´ÿ“¦³ÿ¢°ÿ ®ÿŒ ®ÿŠž¬ÿ…š©ÿ–¤ÿ{ŽžÿnŽÿ'+0ÿ ÿ ÿ ÿ ÿÿ !ÿ !ÿˆ&ÿ 'ÿ !ÿ !ÿ ÿ ÿ ÿÿ ÿ ÿ ÿÿ ÿ ÿÿÿ ÿÿ ÿ ÿ ÿ ÿju}ÿ¨¹Äÿ®¾ÈÿªºÄÿ¨¹Äÿ¤µÁÿŸ²½ÿž°¼ÿ™¬¸ÿ“¦³ÿ•§´ÿ“¦³ÿ‘¤²ÿ£°ÿŽ¢¯ÿŒŸ®ÿ‰¬ÿ†š¨ÿ|žÿkŒér‰˜)17ÿ ÿ ÿ ÿ ÿÿÿ ÿ ÿ ÿ  ÿ  ÿÿÿÿÿÿÿ ÿÿ ÿ ÿÿÿÿÿ ÿ ÿÿÿu†ÿ¤µÁÿ®¾ÈÿªºÄÿ¨¹Äÿ¤µÀÿ¡³¾ÿ®ºÿ™¬¸ÿ“¦³ÿ”¦³ÿ“¥²ÿ“¦³ÿ‘¤±ÿ ®ÿŠž­ÿˆœªÿ…™¨ÿ~‘¡ÿsˆ—çd|+4<ÿ ÿ ÿ ÿ ÿÿ !ÿ !ÿ !ÿ 'ÿ !ÿ !ÿ ÿ ÿ ÿÿ ÿ ÿ ÿÿ ÿ ÿÿÿ ÿÿ ÿ ÿÿ ÿx…Žÿ£µÀÿ­½ÇÿªºÄÿ¨¸Ãÿ£´Àÿ ±½ÿ¯»ÿš¬¸ÿ”§´ÿ“¦³ÿ”§´ÿ”§´ÿ‘¤²ÿ¢°ÿˆ«ÿ†›©ÿƒ˜¦ÿ~”£ÿs‰™æd|6@Gÿ ÿ ÿ ÿ ÿÿÿ ÿ ÿ ÿ  ÿ  ÿÿÿÿÿÿÿ ÿÿ ÿ ÿÿÿÿÿ ÿ ÿ ÿ&ÿ‰™£ÿ¥¶Áÿ­½ÈÿªºÅÿ§¸Ãÿ¤µÀÿ¡²¾ÿ¯»ÿ™«·ÿ”§´ÿ”§´ÿ“¦³ÿ•¨µÿ”§´ÿ’¥²ÿŒ ®ÿˆœªÿƒ—¦ÿ”£ÿvŠšçZm{FMÿ/6;ÿ/6;ÿ-4:ÿ'/7ÿ!)1ÿ#*ÿ )ÿ)ÿ 'ÿ$(ÿ$ÿ#ÿ (ÿ!*ÿ'ÿ )ÿ$,ÿ!)3ÿ$,4ÿ)07ÿ.6=ÿ;IUÿMXaÿXclÿˆ–¡ÿ­¹ÿ©¹Ãÿ§·Áÿ¦µÀÿ¥´¿ÿ£³¾ÿž¯»ÿ®¹ÿ™«¸ÿ™«·ÿ—ª¶ÿš¬·ÿ–§´ÿ¡­ÿƒ”¡ÿŸ¨ÿsƒŽÿ{ƒˆÓv€‡ÿdmsÿw€†ÿw€†ÿ~„ˆÿox~ÿkv~ÿ`mvÿR\eÿt}„ÿv}‚ÿtz~ÿsx|ÿvzÿt{€ÿx€…ÿu~„ÿryÿr{ÿz…ÿ…‘™ÿ‘œ£ÿš£ªÿŸ¨°ÿ¡¬´ÿ¦²ºÿ§´»ÿ¦³¼ÿ§³¼ÿ§´¼ÿ©µ¾ÿª¶¿ÿ§´¼ÿ«·¿ÿš¨³ÿ—¦±ÿ™©³ÿž­·ÿ¤±ºÿž©±Ç“¥Ösuite3270-4.1/wc3270/x3270-icon2.xpm000077700000000000000000000000001413735575200222642../Common/x3270-icon2.xpmustar00rootroot00000000000000suite3270-4.1/wc3270/x3270.man.m4000077700000000000000000000000001413735575200210202../Common/x3270.man.m4ustar00rootroot00000000000000suite3270-4.1/wmitm/000077500000000000000000000000001413735575200141745ustar00rootroot00000000000000suite3270-4.1/wmitm/Makefile000066400000000000000000000042341413735575200156370ustar00rootroot00000000000000# Copyright (c) 2016, 2018 Paul Mattes. # All rights reserved. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # * Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # * Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in the # documentation and/or other materials provided with the distribution. # * Neither the name of Paul Mattes nor his contributors may be used # to endorse or promote products derived from this software without # specific prior written permission. # # THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS OR # IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES # OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN # NO EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, # SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED # TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR # PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF # LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING # NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS # SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. # VPATH-based Makefile for mitm, can build either 32- or 64-bit ifdef WIN64 objdir = ../obj/win64/mitm else objdir = ../obj/win32/mitm endif top = ../../.. this = $(top)/wmitm export VPATH = $(this):$(top)/Common/Win32:$(top)/Common export TOP = $(top) export THIS = $(this) MAKEINC = -I$(this) -I$(top)/Common -I$(top)/mitm -I$(top)/Common/Win32 all: $(objdir) cd $(objdir) && $(MAKE) $(MAKEINC) -f $(this)/Makefile.obj $@ clean: $(objdir) cd $(objdir) && $(MAKE) $(MAKEINC) -f $(this)/Makefile.obj $@ clobber: $(objdir) cd $(objdir) && $(MAKE) $(MAKEINC) -f $(this)/Makefile.obj $@ depend: $(objdir) cd $(objdir) && $(MAKE) $(MAKEINC) -f $(this)/Makefile.obj $@ $(objdir): mkdir -p $(objdir) suite3270-4.1/wmitm/Makefile.aux000066400000000000000000000037351413735575200164400ustar00rootroot00000000000000# Copyright (c) 1995-2011, 2013-2018 Paul Mattes. # All rights reserved. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # * Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # * Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in the # documentation and/or other materials provided with the distribution. # * Neither the name of Paul Mattes nor his contributors may be used # to endorse or promote products derived from this software without # specific prior written permission. # # THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS OR # IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES # OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN # NO EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, # SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED # TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR # PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF # LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING # NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS # SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. # Auxiliary makefile for mitm PRODUCT=mitm all: @echo "Must pick a specific make target." # Development tools. include mitm_files.mk MISC = HTML = html/Windows-$(PRODUCT).html FILES = $(SOURCES) $(HEADERS) $(MISC) $(HTML) src.tgz: $(FILES) MANDEP = html.m4 m4man Makefile.aux version.txt MKMAN = ./m4man -t man -p $(PRODUCT) MKHTML = ./m4man -t html -p $(PRODUCT) man: html/Windows-$(PRODUCT).html html/Windows-$(PRODUCT).html: mitm.man.m4 $(MANDEP) $(MKHTML) -n mitm -o $@ -w mitm.man.m4 suite3270-4.1/wmitm/Makefile.obj000066400000000000000000000050271413735575200164110ustar00rootroot00000000000000# Copyright (c) 2007-2009, 2013-2018 Paul Mattes. # All rights reserved. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # * Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # * Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in the # documentation and/or other materials provided with the distribution. # * Neither the name of Paul Mattes nor his contributors may be used # to endorse or promote products derived from this software without # specific prior written permission. # # THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS OR # IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES # OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN # NO EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, # SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED # TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR # PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF # LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING # NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS # SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. # Windows Makefile for mitm # Set GT_PFX, NATIVE_SFX, NATIVECC, CC, WINDRES and WIN32_FLAGS. include winenv.mk MKFB = mkfb$(NATIVE_SFX) XCPPFLAGS = $(WIN32_FLAGS) -I$(THIS) -I$(TOP)/mitm -I$(TOP)/include CFLAGS = $(EXTRA_FLAGS) -g -Wall -Werror -MMD -MP $(XCPPFLAGS) ifdef WIN64 HOST = win64 else HOST = win32 endif W = w include mitm_files.mk libs.mk VOBJS = $(MITM_OBJECTS) OBJECTS = $(VOBJS) version.o LIBS = -lws2_32 LIBDEPS = $(DEP32XX) DLLFLAGS = $(EXTRA_FLAGS) -mno-cygwin -shared -Wl,--export-all-symbols -Wl,--enable-auto-import PROGS = mitm.exe all: $(PROGS) XVERSION = xversion.c version.o: mkversion.sh $(VOBJS) $(LIBDEPS) version.txt $(RM) $(XVERSION) sh $< mitm $(filter %.txt,$^) >$(XVERSION) $(CC) $(CFLAGS) -c -o $@ $(XVERSION) $(RM) $(XVERSION) mitm.exe: $(OBJECTS) mitm.o $(LIBDEPS) $(CC) -o $@ $(CFLAGS) $(OBJECTS) $(LD32XX) $(LIBS) wversion.o: mkwversion.sh version.txt sh $< mitm $(CC) $(filter %.txt,$^) clean: rm -f *.o fallbacks.c clobber: clean rm -f $(PROGS) *.d # Include auto-generated eependencies -include $(OBJS:.o=.d) suite3270-4.1/wmitm/html.m4000077700000000000000000000000001413735575200202462../Common/html.m4ustar00rootroot00000000000000suite3270-4.1/wmitm/html/000077500000000000000000000000001413735575200151405ustar00rootroot00000000000000suite3270-4.1/wmitm/html/.gitignore000066400000000000000000000000221413735575200171220ustar00rootroot00000000000000Windows-mitm.html suite3270-4.1/wmitm/m4man000077700000000000000000000000001413735575200175302../Common/m4manustar00rootroot00000000000000suite3270-4.1/wmitm/mitm.man.m4000077700000000000000000000000001413735575200215762../Common/mitm.man.m4ustar00rootroot00000000000000suite3270-4.1/wmitm/mitm_files.mk000077700000000000000000000000001413735575200225122../mitm/mitm_files.mkustar00rootroot00000000000000suite3270-4.1/wmitm/version.txt000077700000000000000000000000001413735575200223062../Common/version.txtustar00rootroot00000000000000suite3270-4.1/wpr3287/000077500000000000000000000000001413735575200141735ustar00rootroot00000000000000suite3270-4.1/wpr3287/Makefile000077500000000000000000000042761413735575200156470ustar00rootroot00000000000000# Copyright (c) 2016 Paul Mattes. # All rights reserved. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # * Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # * Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in the # documentation and/or other materials provided with the distribution. # * Neither the name of Paul Mattes nor his contributors may be used # to endorse or promote products derived from this software without # specific prior written permission. # # THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS OR # IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES # OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN # NO EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, # SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED # TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR # PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF # LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING # NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS # SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. # VPATH-based Makefile for wpr3287 can build either 32- or 64-bit ifdef WIN64 objdir = ../obj/win64/wpr3287 else objdir = ../obj/win32/wpr3287 endif top = ../../.. this = $(top)/wpr3287 export VPATH = $(this):$(top)/Common/pr3287:$(top)/Common:$(top)/Common/Win32 export TOP = $(top) export THIS = $(this) MAKEINC = -I$(this) -I$(top)/Common/pr3287 -I$(top)/Common -I$(top)/Common/Win32 all: $(objdir) cd $(objdir) && $(MAKE) $(MAKEINC) -f $(this)/Makefile.obj $@ clean: $(objdir) cd $(objdir) && $(MAKE) $(MAKEINC) -f $(this)/Makefile.obj $@ clobber: $(objdir) cd $(objdir) && $(MAKE) $(MAKEINC) -f $(this)/Makefile.obj $@ depend: $(objdir) cd $(objdir) && $(MAKE) $(MAKEINC) -f $(this)/Makefile.obj $@ $(objdir): mkdir -p $(objdir) suite3270-4.1/wpr3287/Makefile.aux000066400000000000000000000031041413735575200164250ustar00rootroot00000000000000# Copyright (c) 2000-2015, 2020 Paul Mattes. # All rights reserved. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # * Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # * Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in the # documentation and/or other materials provided with the distribution. # * Neither the name of Paul Mattes nor his contributors may be used # to endorse or promote products derived from this software without # specific prior written permission. # # THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS OR # IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES # OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN # NO EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, # SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED # TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR # PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF # LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING # NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS # SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. # Auxiliary makefile for wpr3287 all: @echo "Must pick a specific make target." src.tgz: man: suite3270-4.1/wpr3287/Makefile.obj000066400000000000000000000054551413735575200164150ustar00rootroot00000000000000# Copyright (c) 2007-2017, 2020 Paul Mattes. # All rights reserved. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # * Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # * Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in the # documentation and/or other materials provided with the distribution. # * Neither the name of Paul Mattes nor his contributors may be used # to endorse or promote products derived from this software without # specific prior written permission. # # THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS OR # IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES # OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN # NO EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, # SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED # TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR # PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF # LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING # NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS # SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. # Makefile for wpr3287 # Set GT_PFX, NATIVE_SFX, NATIVECC, CC, WINDRES and WIN32_FLAGS. include winenv.mk XCPPFLAGS = $(WIN32_FLAGS) -I$(THIS) -I$(TOP)/Common/pr3287 -I$(TOP)/include CFLAGS = -g -Wall -Werror -MMD -MP $(XCPPFLAGS) $(CDEBUGFLAGS) include pr3287_files.mk include wpr3287_files.mk VOBJS = $(PR3287_OBJECTS) $(WPR3287_OBJECTS) OBJECTS = $(VOBJS) version.o LIBS = -lws2_32 -lwinspool -lcrypt32 -lsecur32 LIBDEPS = $(DEP32XX) $(DEP3270STUBS) ifdef WIN64 HOST = win64 else HOST = win32 endif W = w include libs.mk all: wpr3287.exe pr3287.exe XVERSION = xversion.c version.o: mkversion.sh $(VOBJS) $(LIBDEPS) version.txt $(RM) $(XVERSION) sh $< pr3287 $(filter %.txt,$^) >$(XVERSION) $(CC) $(CFLAGS) -c -o $@ $(XVERSION) $(RM) $(XVERSION) wpr3287.exe.manifest: mkmanifest.sh version.txt manifest.tmpl sh $< $(filter %.txt,$^) $(filter %.tmpl,$^) wpr3287 "wpr3287 printer emulator" $(WIN64) >$@.tmp mv -f $@.tmp $@ wpr3287res.o: wpr3287.rc pr3287.ico wpr3287.exe.manifest $(WINDRES) -i $< -o $@ wpr3287.exe: $(OBJECTS) $(DEP32XX) $(DEP3270STUBS) $(CC) -o wpr3287.exe $(CFLAGS) $(OBJECTS) $(LD32XX) $(LD3270STUBS) $(LIBS) pr3287.exe: wpr3287.exe cp -p wpr3287.exe pr3287.exe clean: rm -f *.o wpr3287.exe.manifest clobber: clean rm -f wpr3287.exe pr3287.exe *.d # Include auto-generated dependencies. -include $(OBJS:.o=.d) suite3270-4.1/wpr3287/conf.h000066400000000000000000000034561413735575200153010ustar00rootroot00000000000000/* * Copyright (c) 2000-2009, 2014-2015, 2019 Paul Mattes. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of Paul Mattes nor his contributors may be used * to endorse or promote products derived from this software without * specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. */ /* * conf.h * System-specific #defines for libraries and library functions. */ /* Libraries. */ /* Header files. */ /* Uncommon functions. */ /* #undef HAVE_VASPRINTF */ /* Configuration options. */ /* #undef USE_ICONV */ /* Optional parts. */ #define X3270_IPV6 1 suite3270-4.1/wpr3287/html.m4000077700000000000000000000000001413735575200202452../Common/html.m4ustar00rootroot00000000000000suite3270-4.1/wpr3287/m4man000077700000000000000000000000001413735575200175272../Common/m4manustar00rootroot00000000000000suite3270-4.1/wpr3287/man.m4000077700000000000000000000000001413735575200176632../Common/man.m4ustar00rootroot00000000000000suite3270-4.1/wpr3287/mkversion.sh000077700000000000000000000000001413735575200225532../Common/mkversion.shustar00rootroot00000000000000suite3270-4.1/wpr3287/pr3287.ico000066400000000000000000000130761413735575200156430ustar00rootroot00000000000000@@((@€&.)&4,,8*05,1302I/8:39F43F8;A8=L99M9?M7CT;>K;DTAAPAD`C;P@ILCEZADn‡HAPSEGYFEYDK`FIaIESGSPIW`LL[LOeKNTNObLSPO][QVlTPbQZcSVhSV^R^_U[ZSb‚\B\V_XUge\[OSuk[^f\bc_cc\kn]f_]nfaidfehappeklfowifmikxhlhfxpjsqmoxmswkxypotl|{rqRh˜§uaƒsv}q~tzan›‰x|}x„{z€|~zz……{ŸxŠ…†€‰fx¨……¸†z„‚•Ÿ‹„—Œ†‰‰’”‰ŒŽŠ“q‚®š„·w²‚‹¢ív ´“Œ’˜Œ‰³™“œ –•~Œ¹iˆË³—”¢•¢Ÿ™¢¥š ßŸÉŽ›œ¡“¹Š”»È©Ÿ ¥¥¡£«Ÿ¦¦ ©³£Ÿ•›º¥•­¤£²Í¤£¯·¨¤‘žÏ¢¥»µ©°ª©¶°¬®°ª³ž¥Ä¤¥Â·­¬Ò®¤¯®½»°¶¶°¹È±±¸´¶º´¾Â¸·Ã·¾¾º¼¸¸Ä¿¹ÃªÀ¿ÄÀÃſɿ¾ÎÌÂÂÌÀÇÒÿÝżͽÓÃÆÇÉÅÇÊÃÍÆÅÒÛÍÁÎÊÌÛËÇÎÈÒÚÉÌÊËÐÕÉÐÑÑÄËÊ×ÒËÕÙÎÎÏÑÖÏÏÛ×ÒÕãÓÏÖÐÚÝÓÒãÑÔÝÑØÓÖÔÚØÒÚÖØáÙÐÚÔÞÕÖÜÔÔáèÔßÞÙÜØÚßÞØâåÛÚàÛÞìÜØÛÞÜæÚáâßÚáÝßÜÝââÛåÛÛèÝßääàâäÞèÞÞëàãáßáæìâáìàççâåáâèõçÚçáëêçâäçåêåèäåëðæåêãîåäòêàùçêèçæóíéëíçñèéïïìçõèïõëêëìòìïíòíðòëõïòðïðöõñóöôîýòòüð÷ññþùõ÷ùòýÿø÷ö÷ýùúÿÿúýÿýøôýþüÿýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿµÿÿpG?Gÿ9+ÿÿÿÿdÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿŠ_;A[™Ðò‰M1%=aÿšÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¢‰T9Dq˜´¼ÈÒÒÞçÛȬ˜zP9,ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿŸpWARŠÀÏÒÒ²ÆÏÏÒÐÒÒÞáÚÔË—W<40ÿTÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ®ÿA6^‰²ÝçÒÏÒ¬ÆÃÏÏËÎÏÏÑÖÑéåìÝȤ{i;:ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿPBgœÑáÞÒËÈÊÈðÏÜåØÒÏÒÑÏÏÏÏÏÒÒØçðÞÞ¬qD-,5Qk¤ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÕŸ”ØçÛÏÓÏÏÏÏÏÔ²϶ŸÏÍÏÒÏÏÎÒÏÎÒÏÔÐÃÊÓÝõëϨ™kG%/<ÿÿÿÿÿÿÿÿÿÿÿÿÿÿóéÀ²ÞØÓËÏÏÃÊÆÈËÂò´är =ÃÒÐÍÎÐÏØÔÐÔÃÃÏÃÏÏËÏØàîîÞ¶“lr}ÿÿÿÿÿÿÿÿÿÿÿÿô¶¶°¹ÊÈÃÏÏÊÈÏöª²¾ÃÝz&<ËÒÐÎÏÏÔÛÜåÚÞáÑÍÐËÏÏÐÃÏËÚÞåçÞѼ°ÿÿÿÿÿÿÿÿÿÿó¥—‰œÂ¾¹¶­¥¥°ÃÒÄ´ÃÒβÏËÎÏÒÒØãÞÝÕ¡©»ÅËÔÐÐÃÑÐÑËÎÒÒÑÑÖ×´£ÿÿÿÿÿÿÿ÷ꉃœ¾¾¶°ª¦¶¦¯¾ÆÎ¼ÃÆÏÞÝÑÒÒÏÒÏÛØÞí·Žÿ’’’±åÐËÝÝØÐÑÐÔÏÑÖÒ¾ÿÿÿÿÿÿÿÿÿß”ˆˆœ²¶¾À¦­¶³¶¾ÒÐÉÍÏרÏÏÏÏÒÏÔÞãØÚÝÉ·½©©ÿס֫½èÛÜåÝ×ÏØÛªÿÿÿÿÿÿÿÿÿ陑™ªÀÏϳ{k¥¶ÃÔϲϤ}˜´ÏÒÔÞÏ×ÞÓËÊÂÑÐÛÛêßÕÅß¡ÛøÊªáëÏÍÑ˺ÿÿÿÿÿÿÿÿÿàœ”¯ËÆÂ_4‰¥»ÄÂÏ´çŠ0=5Bu¼ÛäïëÞÔÓ¾ÄÃÃÚßÖ×îëêÂåÞ¼ÓÛÜÏÿÿÿÿÿÿÿÿôÚ“˜˜ªËË´r|&T´È³²Ã´Ør ÄT>a‰¤¶Îëö÷å×ÊËÏÐéßêÞìÃÃÜåÞØÿÿÿÿÿÿÿÿÿÚ‰œ´ÏϲaY^¾¾Ã¿×Þã¤`5# &Î)  (Da¨ÞððïðìãËËÚ¶ÃÞÓãÿÿÿÿÿÿÿÿÿÿ騢³ÃÎÄ”WkÃ×ÚåèææçççÛäYˆ¬  >TO|”ž»ìöùѨÃÑ×ÿÿÿÿÿÿÿÿÿÿÿêÂÏÏÏ¿²ÃÐÒùïçåÝÞèìèçÞÒèëå²¼k !\@ $7i‘”¶×ÛûcÿÿÿÿÿÿÿÿÿôÀÂÂØ×Ûëïñè×ÛÜØØÓÔÛÔþœˆ`{‡ŠV@33)! !¦ÞÜïÿÿÿÿÿÿÿÿÿÿÿÿÖçììëÞÝÝÞÝåÞåÝØÞæëãðØq¥¶¼­¶¶²°Ÿœ™‡_OD3""" ,ÀÜíÄÿÿÿÿÿÿÿÿÿÿÿÿÿÿïëç×éÖàéÄÄ´¤–Ôççç²—¬´»ÃÐÉÂÂÃÂÏϾ´°œ¨™|VF**$HáÛð»ÿÿÿÿÿÿÿÿÿÿÿÿÿâ÷ÿö÷ëððå­ª´Ç½ÞççÞ˜qí𘱶¾¾ÉÉÑÝÞåÖÅÄÀ¶¾ªk&*3Eižèë×~ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿôîôéÑÑôíëááäÃrŸúþíÝçßдª¶ÅÑ×ÐÏÑÑ´­P@_”‹Œ…ÿ.ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ÷ÿÄÉÉÕÞØãÞÞÞijþþþþþþþûöçØÓ˶ÆÔË·¥{YGÔwIbn2ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿæÉÖ«ßÞÞðëëç´¨üþþþþþþþþþþþûñòïòWD|œmXmxÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿËÕ¹¥ÒÛÛÅ·„ñüþþþþþþþþþþþþþþþþúò¸¥+-¬wÿjÿ]ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÉ–qyUJJŽþúþþþþþþþþþþþþþþþþþêå¤*P•åÿçÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ‡¢¤“yNeoZhÙûüþþþþþþþþþþþþþþþþþñ—O*Ððÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¹ª–wXbts«þûüþþþþþþþþþþþþþþþúþû_Fèÿ‚ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¸Ö¹«†ˆ¸ÿüþþþþþþþþþþþþþþþþþþþûå´íÿÿ§ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿàÚÅÕñóòüþþþþþþþþþþþþþþþþþþþþúö­»ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¬áùþúûþþúþþþþüþþþþþþþþþþþþþþüüêÉÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýÿûûýúÿþÿúûûþþþúþúüúþþûóôéÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿéÖÿùÿüôüþþûÿöÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿfÿÿÿÿÿÿÿÿsÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿÿÿÿÿÿì'¿ÿÿÿÿÿàÿÿÿÿþÿÿÿÿø_ÿÿÿÐÿÿ€ÿüÿøøøð€øøøðøø?øø?ü?ÿ?þ@?ÿðÿúßÿüÿÿüÿþÿÿü?ÿÿþ_ÿÿü¿ÿÿüÿÿÿøÿÿÿÿРÿÿÿÿÿü _ÿÿÿÿÿÿÿ¿ÿÿÿï÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿsuite3270-4.1/wpr3287/pr3287.man.m4000077700000000000000000000000001413735575200225402../Common/pr3287/pr3287.man.m4ustar00rootroot00000000000000suite3270-4.1/wpr3287/pr3287.png000077500000000000000000000166321413735575200156610ustar00rootroot00000000000000‰PNG  IHDR@@ªiqÞbKGDÿÿÿ ½§“ pHYs  šœtIMEØ Ôyš¨'IDATxÚí›i”\×Uïçœ;Õ\=ÏÝ’ZÝjµæÉ–mYÛ;‰ãcÈÉ ¬¼,øí»nÕ]w­Z«öïìûßCZk~œMòcn\pÀE\pÀEü¸šxp]xD ã‰8ÞW›áŽÕ[uÿæA8|ŽG}Žî¬D\~9{–ቬå6·¯_UÔ¡ˆž¨¹U¥uU§“½~ÅQÅuM)m#‘H âr!iK¨X¤ëêp¹j2plSïH& NGKLžvxow‘OܼéùEçË0±{FlØÙŒJzÿ‘<÷ÕIÞsûUüümwPOäøü U޽#øÝ¹± å&®jlãÀ™§H6lä–\NSÝã@r—š|ô[q¢éqK}¾§×îÆ.Õ©øùj/—7½Jûèëè§ó¹ô4þm?/ê+wÜ|vΟ¨%̓§B5r6”;·jÝÞŸ xÐ;¯ÈðÞ-Zš´Rbfà.Rq¿˜;n׺I…‘߉‹©AÚŸçgîzý]XûŽÔ8t¦Ü2Ø¡Eƒ4,ŽQŽUfmsÂJ¦èÆÒ aõŽ Œ‡ïªtâäl°ÔßœîèôÊñ%‰¬l D:Ò)„ïÅ¥º?ûúÜÈØ}™ÁKkíÉWPö~/n¼~;_úÊ}âÚ—Ø~0Í´¾“\î šå.r«RüÖïnàc¿ý]r˯à+÷½G»‰¤ó^îþÄç„xaý`>]ªg3ù»ü3üâ5›™Z×Ïußôîwè<ùqæ>ÿS¸>ÊÇjE[ïã²x¿¼û–]u#aÎxúr¿XH\µ%¡µ:‚feªÔZ‰U…DH¤GH3š-Â!€.ƒhÄ ýz-%uŸ keü1ó¯cƒ9ß ÄgïxÍùÙ/O¹¿õéGôÍ­IÜs[©Ø«ÙÍnnÚùA~nÅËè+>ÌñùIV7¯æÓÿëk5gšõÖË?H—ms*ÝO˜íäJ³ÀÉTÏyK—oâ’ëøê—¾ÌÔKŸ¤ë®iÔŸ¯½D[“³<{ê5>\®²irŠú²ÛðžüG:ëð[~‰!Ϥü›w‘ê+qç¶Mt¯è¤V•Ÿª×ãeSó.å%"ˆÀ÷}¤TH)œRâ‚£ßÿÏ©´¸p %™83cÔƒª¡½è_Ó²q>×¬Âø!çò÷ޤǾøæ!"¿…± lZ7ÏÚÅÎgÛièèa6ÝÀr-¸}Çᛌ=8‡ú™ ïçè)Iðs×ÑüMvßj‚â8«ö—ó=ë8vç¯rç@ ;¶]E6±’Áž?] Ú2Ö!ÂõëRZª3yäMFïeüÔ(.Ù`¾¬F²F³’â¿-e†B˜µr5ÑÒÞÔ'³vÐÒ_~¢fÎ|çkß©‡±a»|ð#WqÃ@†þæVŽ=ægæèìã¬á°LA¶9Ëãæk¼ú…—Qø¾-¬»â£¤~åÃL,œ¥xüf W¸dggìq®Ú1Œ3ð K§òüÃá˜_Žóæó2ÝÖyo[½JQ”–橦xbQµÀJwdBüQF”rù? Èÿ†ªÃ´$ý›êÛ}o¨R©¾¿£§kpYO{wúíIçšÍWw.ݹÇÞz‰ô‘Ñ‘óüß·ÿ•šâö¾+8[q9ñÒ^2Cƒ\ÝÚŒúð½á§aåÝË™Þý"ÿúôãÈÞÓ¬ýù&—³q;Oœ\‰—9I[2KÃFJ‰¼Sõ WJ¢ nXµj‰Š±45Šjl§näÍÅù…kfç2­=]ÉÆŒ‰”Bù¿jõª‡BŒŸ¯½ö¶ºvçÖŽ´m\ròüyIkâÙ¦¶´ªP/Ô[8þˆoïêKE7üêílï¼AÈ?|ö!Äè‰þ|õ¯¢6f-ŠOmçš÷O²zû•]ý<ùøF‚áñpâ6öŸ^äºd; Vü¥ò1YÃ:åM}W—ÊfÍ«“Éæ©'š‘©,§ÎÕ˜.a,”êÉ(2ؼ¦í¿Åy€¥R|c†®ÎN^}yç§Ï‰ VjË¥–; ë2Kùó“s²#Qš•‘n±h[t勉ºž>æòê›ÅóϽÀá‡+4­-IÆ{1_ØEÃ@’[¯oaûà4ïŒ/Òï>ÀÐúôænbz©“bÙâYm’™É…¶5JfWk ¶½½m¬ß¶0 ¸¬S©Õ˜§\Ÿdii‰„ƒe™ÿe™L’ÑET’5êÝÿ}ýýLOÍímõÊ5v(?¼_­'÷ž>«’G Kß»ç­7*ן› Z_a÷êNåÙܱ£qp;¹öd³-s†ª’|wšùÑ}lYv7vGÅPà[yìzd™jöÌ„®6$’Ý UÏH&Ó$ê!ÚIÅÊ0È7)›“ôu5Ä㣠MÖ­üOE‚5•z (© #ˆ¼ù¹ êåC›617;GB*ªKUª…p+†È5,k±õgÒåwžùÖƒŸû£ U¹µe›|bú=qTcè“$gÛyêéÓ§VÏ— ´‡ßžé"œiÍÕ¨%lî¼öZôb„[ ¸Èùê«—­Í­èOFºîn©ÔͦôDEd3)p5J… bÜP¡G€Ò³ ʵ*ZhÄH÷ÐZ‡Aà•KÔÃ0ŠÑ~Œëù¦À¶$Ä’rÉÇ”çJe„(b”mÑ·¢êÑ,gFÒD,OEǾòÖä¯M5Ý~¬{²`^:eÙo·ŽWâW8þ;Méϱ=Õ…qô•tnçšÑ…U]ËdÎ b;Œip›ð뮕š´‚PŠìÆá®XéÛü:·‡¡j·§9-4Kå IË$™ÍhIŒÄ¡RQ®ÕyåÍ,[Ö a †¢´¸D½î¢ IH¢Ð¥¶TÆ÷BLËÄN&±,…°B½›:´ ÚôH¥3X©nµ†)ÎŒ“qL¢®Õ¬jìBèáõU½×NN„Ã}+†â DϤ)MÞË&ç^^Uêêmw'×¶$ëMå’…éÇùür¼yˈ:Dì”mÙíº'wO¿@¿ÏÓõ-t:$ ™œ¢Z©R®VYr5åz€cƨwW×PnµÌÄè=+V ã˜ý{öz1:Ön8Œq’)lÇÂI8˜ eJ””ÄZÅ xø‡Ô DZqLÅâÒGâÜÔ<§GƘ=7MÝÊÒ9¼‘åÛw4ïºbËuï¿rÝ^ÖÙóoòœX1,~zE‘ã§¿C!Z¢¹Þ‰º!Õ@^ ™›[`÷«û¨¹‹\µ} A“ȦælR?ôÍg¾õöÛüÁƒ¯óìpUó=¬?ºcò„þôïåYþ“«bÝêðr«ÆçÎ-¬2RJ C …@…¯""š´ÆJYh"Y‡lC–(ŠJ‡Úè8¤·§›|c />õ ÉÆVz¢f2É ÚˆqëB CE>a¤)º!®[à }J‹%Μa±Xb©X`©Tea¾JDXމ®¡uŒN:ÉÔä4‹ R ~ˆ…º¤]¤psI9rÅÌúûõÆm—ÑñÉû06þÌeÜôó915ÉüIÍŠ•݇B͈ë—VÇ>h¡H8¡Ö˜–M*e¡•BF’šï†MLj8B¢‰ÃZTØ@>• "ôc–õ0?7Ë«/¿F¶¥™|*‚Hhªå2ã“ÓLLÎãÖëqHäz”ÝµŠ‡hL+F)Ûp0,IÄ€‹†„ÒÀ=DP«ºÔÊRÍMxGSOSê×?vùð]w?ùæŸ5õˆm>­åúË8¸FbÜxé°*Ù-0Ð~-ž­úÁ‘Hs«mJ´Ô„a@µê"¢A:P¦äZñ£Ðw‘Ä7"c™R@£¥ !±%Ú8Œ!×re S3SX^zù ¾ñÐã„õ„D‹iY¥QŒa L r¹Û®¼šé‰1öïÝ‹ãd0 ”¹´MSk–Á¡†V` ;% c¤8*ÍÈDû¥m«·ïÿå;òoÓ¼ðæËÏéßxà/‡î¿›µ¿ûxK1š!D~©^}p|ôôMF‘Lš$sy”?ˆ‰uÌ©§Ùw`­-\sÃuXV…ašhð5RJ4Rj"!q½·Zffn‘ó3 œaU/}½üæ§þ7q¬1MƒÐ 0¡ Ö@G1†exéI:6ËVôÒÖž'‘k¤!Ÿ¡£½™t:‡ÐšóSç),.Íå1•‰T ¡Ã£‰ÀøŒŒ³¯…Ë㥒œ ÅdŒ1›b1X§Âèú¸Zæ|µBÚMÒ¤Lòù4¦iP.—9yÓÎð/ÿG÷ÓÒÜÄá'I$R¤LCh”&c™tt·Ð××ÁàÊašÛó´uuO§0„$P’(މcMLOM#c…2 D#b‘4 âÛ4‡ÃV{c|ªþdôÅPs©@5¦1ÞycŒüMu6õ%ˆ\ã]ióEͰMZ‡1õ0FH Zbgrä2 ¤2– .õ0ÀIøå §L|¯NSCž3GOóÏ_ýéLšb¥„‚¨N&“¦X, µbíÚ!’ͬ\ÆŠå}´´¶ÒÍ‘É8$²)ìDj!®öpý¹B“K%P¦&vÒ!Ž«Ø¶E6ÌÆ1Jk e†QΗ·N/xv|]wÍ3BÖ˜Fÿ°É²fáÃkq‰­2aÈD"Eà)’†‚8!ÐZãØ™LŠ™ó34¤rlØ0LPõpÒIR™Bƒ0ž«1Lƒt>ƒ65¡[aËð¹ÖVÜj DZذu#„Þõ²¹49ÛÂSŠÈ÷‰]­5åºKa±Ž@"Dˆ`ZI e"cR`™ AÕ p—J8ù,IÛb¡âcƺP­µÔQ”˜:=c¨0¥ó‘ÅÑñ£?Ñ'0“’·C·‚"ítZh)ýÀ£î–Ñ$±µ&v}œ„‰²× ³gÏ[\~Ùf:[šÑQL\©#Ói ãBi+ ƒZ­NOOŸ¸÷Wiéj§¿§ò°J!•"¤e!¥`¾R%Œ"âH£#ašCbÚÛV‘Æ@†År•|&ËÁ3†û3¤9êÅiJ…*¹lËIá¸"ÄÄ,¹•ÎMìêËfÄÁ©ùÎÖêß}s’÷߃U›õVÒÁ¼iºžë9ç"☚“ ¶MÂ(Fc™‚M놈¥m[D qˆç¨ä…ŽÏ&:ŠinoâÆîkÑQDÇ|GR¬5Q\¸Ž"â(FŽ21#ƒPF„^@¹æF†ªÌÖ‰µ®Ø–üzW[ò—'çŠd‡œò ýßóI&³8= Ohâ Æ6MâØG›&‰œ [ž®ÔS]’†)M§êÄxóì³ô.`er#êÜ èÎkBa*Ö‚(Ò2"–ŠT"ýîÊž‡R& ”‚8‰éh‚ðBç&€8ÖÆ„±i9CxÞžýi)4* “.#ã¥rz“N¨O{n Ã0½Ý¹÷™B1ÔÛALÀ²¾‘Öxn"Š„1>e„Ö@)"Ìt6Q<|ÄÆ…Õ4& .B@È–îLsnU;©×ÓDsÆ‚ßOs=I£3O‚¼É›–íˤÒs¹Œjð[@„ aaZ ‰@ E¬%fÆBq! k> ÅŽía[–RHÇâÅ^â¡o|‹öe}|òÓ÷büˆá°Fà‹ }ƒ œ„É@_ÄÄú‚®øÄhâ|ÎÓÒ Ã2±Ì ˜ …~HùT<òRétaîü—|ÃŽëU#Ø Æ~q=k$³I¾f‚·ü„þíÆöö/çgzŽIº!ƒ‚ 4ÐQˆÔ”µÇ©°lEÒN„Zk¼jÓH2 Ê®dzѧ»WûØ þãþÄ8Fø>~äŽAøCsýî4áûý‰À2“¦…šº[azú<£SSLLLbK“„iÌ9 û;™~ •NWòq2ÿ&ѽ4ˆË>¾¿½3ÏÐæe<'%Þc[þ+vÝ3‹KŸšœX[.[óÛií_FÊNàE!ïÇR N!&àuÏ'éXxõ˜ÅB‘ŽÞV ‚ÿÏæÌïCù¡±‘ûC÷ Ó a™$”‰§5Õr‰Ù¹Eª¥:£'O0rü8g'G °hmëðV®^õjG¾ñãù\û¡æ\»ÁF]×p-Ä¥ã§ûFX»öz⚇uPâÌžG^sΗNîÙ¤!_È64]rvü쯽ñÆËïYxh©aÃÊ~·ncY_/ŽmAâFñœˆÞ­¤ça§’˜ -my?øòÿh%üÁË…D “Œa`Y&¾„096ɱÙôóçÆ‰P±LÙÕ®îåA_ÿŠêš­[÷®xP…ö¨•SG\_xÕJŒiè ézô£¦i0³jÙØ€»Pż@Æ˜ÄøðvŠ‘ƒQ+P]"©›.nçÿqä×o©VýæUC+X>¸š¾Á47ä°LÏ÷‰ÞKó dÚÚÐhìø'~hÁõ…ò[Ø(%J¡,…²õºG¹Tfîü"çÎãÜÔ4c‡szl [Iš–wê_õí•«6=‘Ëådz†I‹ X°Ä‚ªîÇ“;èIeQJuܤ…*)-•˜•UÄ©/.bŽ,аÚÁèj¦¾j’3»ŸàŒVÜðÞ«puѼ¤öBš†KSÉJ¶péÜäÄOœsµâ^Äk¥‡PFH“ÑKÓ¾µœŒ9>uˆ]v §©ÊD‚p&€LZº{°ûN#Çö yÙ­I;MÛäl}ãøÈ™ž9½fôÄñÓˆœ½Ý¬Ùv+W ÊeN<Ã}osfrš 8!ãBKg—ß¿bpª¥µiwûòÄ+äÌ;±¿r®î툴œÓ™a%¢˜°«ƒ0^¬ÖéN °<()]“ñÒA˜<ÆË3·²¹m wÿ3¬¿g;?µ¡Æ†[Nó™Ýìxð> ~ë+ë\÷lcWòÄUÊUí-ùŸ§Pö8ûX{ß{Q$©,.©i­èpAãÌ_Šl®ˆ¬®p!ê­f¦§OÜrjô¸.”‹cùdÞ% ӋŹ„«Àüñ¼åœË¬v;Jöh+ÝÉý‰³—TôùÕw×}Ý?‹;:Ex°]=ëÒÌŸ©3Ô×@à)\Wc™½“Å=U ²˜a¤ yßõUv^ÕÀž6»_eà—ú¸c©™·í3¿U£©¡¶ç>Áb»Ã Ã?‰±gæ8ϽÜÅ'îáÎ?áÙ:йj3Ùµoòø#²çoŸ`ãÜ)¾ð¡» z"TdãXà{%T²mÄè´âžjoª¶Bœ+æuKv=tõ¯]“˜›/Ÿæ<%#c")µØXQTKi•Ѷkk$÷D"Õ|>6»~55ïyjæa¶ ÜËÉCeNž<ƹҵ|ó_Fظ9Epx‘O>írÿŸvrkº“†‰€áþNû³üÎÁãÜ]qY,¤y*5ɪs5æ›zÈÑÅúá µâÜýë·ÿÔaÔ®{·!äç*;xåѯ³þÜ^^ê8öOZ¯Xµ$xûô,wÞ´£a%QÕ¥8»„Ó¦il>‹#Á0˜K &[Êt;M4¯mçla"Ì5æÜùÑ îž÷¸äô‹ZnÛ¦»FGâ5÷ÜFË•›É&UL‡ƒÙb »ÃÔϼô"3ß{™†Û¸…Dn&#ÃLµk‡–S_*‘íH3ÔaséŽ6útÿóCD#3œé<Í`¦‘K zS\ÞßKOK;ÏŸ¡1,Ἰȱ½Ÿc÷éV_ó~:w]‚p›úMúÄ^ÌS·Ò¸«…;ŽòçóIöÜ6ÌÿÒg1ƒ:-‘¦æùxç’<ó¿Gn×½v+W^6J¹j’YŠy!;G©0Moó]µvzå7øè-÷S,àkÍû¸óð!¢|Š8ׄr5—z¥B .äfß ɤ,šâHàû l/ˆÐÑ…R8Ö5ògÞ6ÉuÚÈLšÇ^:LÓ‰yÊMÚ7¶±ªy=¥©}øÊ_r×ãðÑþu¼|â÷ù…OÜÊšÉo³ý÷[˜]?·y }ókÉ^oSFƒÓFÃð§i=·‡‡Ÿü.fiŽ;W®ÀoyÑÆš:˺V”‡ºøÒ+ÏÚoá¦k.פè–XòÏ3¿¼£¤`…¢¥½›ÒÖ$ê>n¸A€Çèï×h4¦a€aàk(,úD‘ 5à^hfÞM¢†QeÿþGøÞ³m¤ƒ4kFÌ×FyþÉøB´—µíÍ|í¥× Þø öÏsüÁýŸåéû§VÎŽ=Eç@GžÜ+Vf…¸øŸ¡‹[e/¸à"€‹.¸à"€‹.ø±´ÿGoñBH“¹ÑIEND®B`‚suite3270-4.1/wpr3287/version.txt000077700000000000000000000000001413735575200223052../Common/version.txtustar00rootroot00000000000000suite3270-4.1/wpr3287/wpr3287.rc000066400000000000000000000001051413735575200156510ustar00rootroot00000000000000LANGUAGE 0, 0 1 RT_MANIFEST wpr3287.exe.manifest 100 ICON pr3287.ico suite3270-4.1/wpr3287/wpr3287_files.mk000066400000000000000000000000721413735575200170410ustar00rootroot00000000000000# Object files specific to wpr3287 WPR3287_OBJECTS = ws.o suite3270-4.1/wpr3287/ws.c000066400000000000000000000143121413735575200147710ustar00rootroot00000000000000/* * Copyright (c) 2007-2009, 2019-2020 Paul Mattes. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of Paul Mattes nor his contributors may be used * to endorse or promote products derived from this software without * specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. */ /* * ws.c * Interactions with the Win32 print spooler (winspool). */ #include #include #include "localdefs.h" #include "wsc.h" #define PRINTER_BUFSIZE 16384 static enum { PRINTER_IDLE, /* not doing anything */ PRINTER_OPEN, /* open, but no pending print job */ PRINTER_JOB /* print job pending */ } printer_state = PRINTER_IDLE; static HANDLE printer_handle; static char printer_buf[PRINTER_BUFSIZE]; static int pbcnt = 0; /* * This is not means a general-purpose interface to the Win32 Print Spooler, * but rather the minimum subset needed by wpr3287. * * The functions generally return 0 for success, and -1 for failure. * If a failure occurs, they issue an error message via the 'errmsg' call. */ /* * Start talking to the named printer. * If printer_name is NULL, uses the default printer. * This call should should only be made once. */ int ws_start(const char *printer_name) { PRINTER_DEFAULTS defaults; /* If they didn't specify a printer, grab the default. */ if (printer_name == NULL) { printer_name = ws_default_printer(); if (printer_name == NULL) { errmsg("ws_start: No default printer"); return -1; } } /* Talk to the printer. */ memset(&defaults, '\0', sizeof(defaults)); defaults.pDatatype = "RAW"; defaults.pDevMode = NULL; defaults.DesiredAccess = PRINTER_ACCESS_USE; if (OpenPrinter((char *)printer_name, &printer_handle, &defaults) == 0) { errmsg("ws_start: OpenPrinter failed, " "Win32 error %d", GetLastError()); return -1; } printer_state = PRINTER_OPEN; return 0; } /* * flush the print buffer. */ int ws_flush(void) { DWORD wrote; int rv = 0; switch (printer_state) { case PRINTER_IDLE: errmsg("ws_endjob: printer not open"); return -1; case PRINTER_OPEN: return 0; case PRINTER_JOB: break; } if (pbcnt != 0) { if (WritePrinter(printer_handle, printer_buf, pbcnt, &wrote) == 0) { errmsg("ws_flush: WritePrinter failed, " "Win32 error %d", GetLastError()); rv = -1; } pbcnt = 0; } return rv; } /* * Write a byte to the current print job. */ int ws_putc(char c) { DOC_INFO_1 doc_info; switch (printer_state) { case PRINTER_IDLE: errmsg("ws_putc: printer not open"); return -1; case PRINTER_OPEN: /* Start a new document. */ doc_info.pDocName = "pr3287 print job"; doc_info.pOutputFile = NULL; doc_info.pDatatype = "RAW"; if (StartDocPrinter(printer_handle, 1, (LPBYTE)&doc_info) == 0) { errmsg("ws_putc: StartDocPrinter failed, " "Win32 error %d", GetLastError()); return -1; } printer_state = PRINTER_JOB; pbcnt = 0; break; case PRINTER_JOB: break; } /* Flush if needed. */ if ((pbcnt >= PRINTER_BUFSIZE) && (ws_flush() < 0)) return -1; /* Buffer this character. */ printer_buf[pbcnt++] = c; return 0; } /* * Write multiple bytes to the current print job. */ int ws_write(char *s, int len) { while (len--) { if (ws_putc(*s++) < 0) return -1; } return 0; } /* * Complete the current print job. * Leaves the connection open for the next job, which is implicitly started * by the next call to ws_putc() or ws_write(). */ int ws_endjob(void) { int rv = 0; switch (printer_state) { case PRINTER_IDLE: errmsg("ws_endjob: printer not open"); return -1; case PRINTER_OPEN: return 0; case PRINTER_JOB: break; } /* Flush whatever's pending. */ if (ws_flush() < 0) rv = 1; /* Close out the job. */ if (EndDocPrinter(printer_handle) == 0) { errmsg("ws_endjob: EndDocPrinter failed, " "Win32 error %d", GetLastError()); rv = -1; } /* Done. */ printer_state = PRINTER_OPEN; return rv; } /* * Antique method for figuring out the default printer. * Needed for compatibility with pre-Win2K systems. * * For Win2K and later, we could just call GetDefaultPrinter(), but that would * require delay-loading winspool.dll, which appears to be beyond MinGW and * GNU ld's capabilities at the moment. */ char * ws_default_printer(void) { static char pstring[1024]; char *comma; /* Get the default printer, driver and port "from the .ini file". */ pstring[0] = '\0'; if (GetProfileString("windows", "device", "", pstring, sizeof(pstring)) == 0) { return NULL; } /* * Separate the printer name. Note that commas are illegal in printer * names, so this method is safe. */ comma = strchr(pstring, ','); if (comma != NULL) *comma = '\0'; /* * If there is no default printer, I don't know if GetProfileString() * will fail, or if it will return nothing. Perpare for the latter. */ if (!*pstring) return NULL; return pstring; } suite3270-4.1/wpr3287/wsc.h000066400000000000000000000033221413735575200151400ustar00rootroot00000000000000/* * Copyright (c) 2007-2009, Paul Mattes. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of Paul Mattes nor his contributors may be used * to endorse or promote products derived from this software without * specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. */ /* * wsc.h * Declarations for ws.c. */ char *ws_default_printer(void); int ws_endjob(void); int ws_flush(void); int ws_putc(char c); int ws_start(const char *printer_name); int ws_write(char *s, int len); suite3270-4.1/ws3270/000077500000000000000000000000001413735575200140045ustar00rootroot00000000000000suite3270-4.1/ws3270/.gitignore000066400000000000000000000000001413735575200157620ustar00rootroot00000000000000suite3270-4.1/ws3270/Examples/000077500000000000000000000000001413735575200155625ustar00rootroot00000000000000suite3270-4.1/ws3270/Examples/cms_cmd.expect000077500000000000000000000112161413735575200204050ustar00rootroot00000000000000#!/bin/sh # \ exec tclsh "$0" ${1+"$@"} # Copyright (c) 2000-2009, Paul Mattes. # All rights reserved. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # * Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # * Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in the # documentation and/or other materials provided with the distribution. # * Neither the name of Paul Mattes nor his contributors may be used # to endorse or promote products derived from this software without # specific prior written permission. # # THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS OR # IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES # OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN # NO EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, # SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED # TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR # PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF # LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING # NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS # SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. # Add the Expect module. package require Expect # Read in the glue functions. source x3270_glue.expect # Pluck the username, password and command from the command line. if {$argc != 4} { puts stderr "Usage: $argv0 hostname username password command" exit 1 } set hostname [lindex $argv 0] set username [lindex $argv 1] set password [lindex $argv 2] set command [lindex $argv 3] # Procedure to wait for a READ prompt from CMS or CP. proc waitread {} { Snap Save while {[Snap Ascii [expr [Snap Rows]-1] [expr [Snap Cols]-17] 4] != "READ"} { Snap Wait Output } } # Procedure to check for the CMS "Ready" prompt. # Returns its row number, or -1 for "MORE..." state, and leaves a screen with # data to read in the Snap buffer. proc cmd_done {} { global verbose Snap Save while {1} { if {[Snap Ascii [expr [Snap Rows]-1] [expr [Snap Cols]-20] 7] == "MORE..."} { if {$verbose} {puts "MORE..."} return -1 } set i [expr [Snap Rows]-2] while {$i >= 0} { set text [Snap Ascii $i 0 [Snap Cols]] switch -regexp $text { "Ready; T=.*" {return $i} "Ready\(.*\); T=.*" { error [Snap Ascii [expr $i-1] 0 \ [Snap Cols]] } "^ *\$" {} default { if {$verbose} {puts "Incomplete $i '[string trimright $text]'"} set i 0 } } incr i -1 } Snap Wait Output } } # Execute a command, return the output. proc cms_cmd {text} { global verbose # Clear the screen. Clear # Send the command. String "$text\n" # 'first' is the row where the first line of output will appear. For # the first screenful it's 1; after that it's 0. set first 1 # r is the result. set r {} while {1} { # Wait for a screenful. set d [cmd_done] # Dump out what's there. set i $first set first 0 if {$d < 0} {set last [expr [Snap Rows]-2]} {set last $d} while {$i < $last} { set r [linsert $r end [string trimright \ [Snap Ascii $i 0 [Snap Cols]]]] incr i } if {$d >= 0} {break} # Clear the screen and go around again. Clear } return $r } # Start of main procedure. # Set 'verbose' to 1 to get debug output from the glue functions. set verbose 0 # Start ws3270 Start # Setverbose 1 # Connect to the host and wait for an input field. Connect $hostname Wait InputField # Log in and wait for CP READ or VM READ mode. String "$username\t$password\n" waitread # If we can't log on, we're hosed. if {[Ascii 1 11 7] == "Already"} { puts stderr "Can't run -- already logged in." exit 1 } # If we're in CP mode, which means we disconnected last time, boot CMS. if {[Ascii [expr [Rows]-1] [expr [Cols]-20] 2] == "CP"} { Clear String "i cms\n" waitread } # Enter an empty command to get a CMS prompt. If we don't do this, there will # be a Ready prompt as the first line of output below. Clear Enter cmd_done # Get the output of the user's command and display it. if {[catch {cms_cmd $command} result]} { puts stderr $result set rc 1 } { for {set i 0} {$i < [llength $result]} {incr i} { puts [lindex $result $i] } set rc 0 } # Log off, and wait for the host to hang up on us, so we don't unintentionally # create a disconnected session. Clear if {! [catch {String "logoff\n"}]} {Wait Disconnect} exit $rc suite3270-4.1/ws3270/LICENSE.txt000066400000000000000000000034651413735575200156370ustar00rootroot00000000000000Copyright (c) 1993-2016, Paul Mattes. Copyright (c) 2004-2005, Don Russell. Copyright (c) 2004, Dick Altenbern. Copyright (c) 1990, Jeff Sparkes. Copyright (c) 1989, Georgia Tech Research Corporation (GTRC), Atlanta, GA 30332. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the names of Paul Mattes, Don Russell, Dick Altenbern, Jeff Sparkes, GTRC nor the names of their contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY PAUL MATTES, DON RUSSELL, JEFF SPARKES, DICK ALTENBERN AND GTRC "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL PAUL MATTES, DON RUSSELL, DICK ALTENBERN, JEFF SPARKES OR GTRC BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. suite3270-4.1/ws3270/Makefile000077500000000000000000000042431413735575200154520ustar00rootroot00000000000000# Copyright (c) 2016 Paul Mattes. # All rights reserved. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # * Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # * Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in the # documentation and/or other materials provided with the distribution. # * Neither the name of Paul Mattes nor his contributors may be used # to endorse or promote products derived from this software without # specific prior written permission. # # THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS OR # IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES # OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN # NO EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, # SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED # TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR # PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF # LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING # NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS # SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. # VPATH-based Makefile for ws3270, can build either 32- or 64-bit ifdef WIN64 objdir = ../obj/win64/ws3270 else objdir = ../obj/win32/ws3270 endif top = ../../.. this = $(top)/ws3270 export VPATH = $(this):$(top)/Common/Win32:$(top)/Common/s3270:$(top)/Common export TOP = $(top) export THIS = $(this) MAKEINC = -I$(this) -I$(top)/Common -I$(top)/Common/Win32 all: $(objdir) cd $(objdir) && $(MAKE) $(MAKEINC) -f $(this)/Makefile.obj $@ clean: $(objdir) cd $(objdir) && $(MAKE) $(MAKEINC) -f $(this)/Makefile.obj $@ clobber: $(objdir) cd $(objdir) && $(MAKE) $(MAKEINC) -f $(this)/Makefile.obj $@ depend: $(objdir) cd $(objdir) && $(MAKE) $(MAKEINC) -f $(this)/Makefile.obj $@ $(objdir): mkdir -p $(objdir) suite3270-4.1/ws3270/Makefile.aux000066400000000000000000000031251413735575200162410ustar00rootroot00000000000000# Copyright (c) 1995-2018, 2020 Paul Mattes. # All rights reserved. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # * Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # * Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in the # documentation and/or other materials provided with the distribution. # * Neither the name of Paul Mattes nor his contributors may be used # to endorse or promote products derived from this software without # specific prior written permission. # # THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS OR # IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES # OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN # NO EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, # SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED # TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR # PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF # LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING # NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS # SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. # Auxiliary makefile for ws3270 PRODUCT = ws3270 all: @echo "Must pick a specific make target." src.tgz: man: suite3270-4.1/ws3270/Makefile.obj000066400000000000000000000064771413735575200162330ustar00rootroot00000000000000# Copyright (c) 2007-2009, 2013-2020 Paul Mattes. # All rights reserved. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # * Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # * Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in the # documentation and/or other materials provided with the distribution. # * Neither the name of Paul Mattes nor his contributors may be used # to endorse or promote products derived from this software without # specific prior written permission. # # THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS OR # IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES # OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN # NO EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, # SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED # TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR # PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF # LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING # NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS # SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. # Makefile for ws3270 # Set GT_PFX, NATIVE_SFX, NATIVECC, CC, WINDRES and WIN32_FLAGS. include winenv.mk MKFB = mkfb$(NATIVE_SFX) XCPPFLAGS = $(WIN32_FLAGS) -I$(THIS) -I$(TOP)/Common/s3270 -I$(TOP)/include CFLAGS = $(EXTRA_FLAGS) -g -Wall -Werror -MMD -MP $(XCPPFLAGS) ifdef WIN64 HOST = win64 else HOST = win32 endif W = w include ws3270_files.mk libs.mk VOBJS = $(WS3270_OBJECTS) fallbacks.o ws3270res.o OBJECTS = $(VOBJS) version.o LIBS = -lws2_32 -lcomdlg32 -lgdi32 -lwinspool -lcrypt32 -lsecur32 LIBDEPS = $(DEP3270) $(DEP32XX) $(DEP3270STUBS) SHRTLIBS = -lole32 -luuid DLLFLAGS = $(EXTRA_FLAGS) -mno-cygwin -shared -Wl,--export-all-symbols -Wl,--enable-auto-import PROGS = ws3270.exe s3270.exe x3270if.exe all: $(PROGS) XVERSION = xversion.c version.o: mkversion.sh $(VOBJS) $(LIBDEPS) version.txt $(RM) $(XVERSION) sh $< s3270 $(filter %.txt,$^) >$(XVERSION) $(CC) $(CFLAGS) -c -o $@ $(XVERSION) $(RM) $(XVERSION) FALLBACKS = fb-common fallbacks.c: $(MKFB) $(FALLBACKS) $(RM) $@ ./$(MKFB) -c -o $@ $(filter-out $(MKFB),$^) $(MKFB): mkfb.c $(NATIVECC) -DFOR_WIN32 -I$(THIS) -MMD -MP -o $@ $^ ws3270.exe.manifest: mkmanifest.sh version.txt manifest.tmpl sh $< $(filter %.txt,$^) $(filter %.tmpl,$^) ws3270 "ws3270 scripting terminal emulator" $(WIN64) >$@.tmp mv -f $@.tmp $@ ws3270res.o: ws3270.rc ws3270.ico Makefile ws3270.exe.manifest $(WINDRES) -i $< -o $@ ws3270.exe: $(OBJECTS) $(LIBDEPS) Makefile $(CC) -o ws3270.exe $(CFLAGS) $(OBJECTS) $(LD3270) $(LD32XX) $(LD3270STUBS) $(LIBS) s3270.exe: ws3270.exe cp -p ws3270.exe $@ x3270if.exe: ../x3270if/x3270if.exe cp -p ../x3270if/x3270if.exe $@ wversion.o: mkwversion.sh version.txt sh $< ws3270 $(CC) $(filter %.txt,$^) clean: rm -f *.o mkfb mkfb.exe fallbacks.c ws3270.exe.manifest clobber: clean rm -f $(PROGS) *.d # Include auto-generated eependencies -include $(OBJS:.o=.d) mkfb.d suite3270-4.1/ws3270/conf.h000066400000000000000000000001221413735575200150750ustar00rootroot00000000000000/* Hard-coded conf.h for ws3270 */ #define LIBX3270DIR "." #define X3270_IPV6 1 suite3270-4.1/ws3270/ft.inc000077700000000000000000000000001413735575200176522../Common/ft.incustar00rootroot00000000000000suite3270-4.1/ws3270/html.m4000077700000000000000000000000001413735575200200562../Common/html.m4ustar00rootroot00000000000000suite3270-4.1/ws3270/ibm_hosts000077700000000000000000000000001413735575200212662../Common/ibm_hostsustar00rootroot00000000000000suite3270-4.1/ws3270/ibm_hosts.man.m4000077700000000000000000000000001413735575200234502../Common/ibm_hosts.man.m4ustar00rootroot00000000000000suite3270-4.1/ws3270/m4man000077700000000000000000000000001413735575200173402../Common/m4manustar00rootroot00000000000000suite3270-4.1/ws3270/mkversion.sh000077700000000000000000000000001413735575200223642../Common/mkversion.shustar00rootroot00000000000000suite3270-4.1/ws3270/newglue000066400000000000000000000210151413735575200153740ustar00rootroot00000000000000# Copyright (c) 2000-2009, Paul Mattes. # All rights reserved. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # * Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # * Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in the # documentation and/or other materials provided with the distribution. # * Neither the name of Paul Mattes nor his contributors may be used # to endorse or promote products derived from this software without # specific prior written permission. # # THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS OR # IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES # OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN # NO EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, # SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED # TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR # PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF # LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING # NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS # SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. # Glue functions between 'expect' and x3270 # Usage: source x3270_glue.expect namespace eval x3270 { variable verbose 0 variable pid 0 # Start function: Start ?-nohup? ?program? ?options? # # Sets up the 'expect' environment correctly and spawns a 3270 # interface process. # # The 'program' and 'options' can be: # "x3270 -script" to drive an x3270 session # "s3270" to drive a displayless 3270 session # "x3270if -i" to run as a child script of x3270 (via the Script() # action) # # If "args" is empty, or starts with an option besides '-nohup', # guesses which process to start. # It will only guess "x3270if -i" or "s3270"; if you want to start # x3270, you need to specify it explicitly. # # Returns the process ID of the spawned process. proc Start {args} { global stty_init timeout spawn_id env variable verbose variable pid if {$pid != 0} {return -code error "Already started."} # If the first argument is "-nohup", remember that as an # argument to 'spawn'. if {[lindex $args 0] == "-nohup"} { set nohup {-ignore HUP} set args [lrange $args 1 end] } { set nohup {} } # If there are no arguments, or the first argument is an # option, guess what to start. # If X3270INPUT is defined in the environment, this must be a # child script; start x3270if. Otherwise, this must be a peer # script; start s3270. if {$args == {} || [string index [lindex $args 0] 0] == "-"} { if {[info exists env(X3270INPUT)]} { set args [concat x3270if -i $args] } { if {$::tcl_platform(platform) == "windows"} { set args [concat ws3270 $args] } { set args [concat s3270 $args] } } } # Set up the pty initialization default. set stty_init -echo # Spawn the process. if {$verbose} { set pid [eval [concat spawn $nohup $args]] } { set pid [eval [concat spawn -noecho $nohup $args]] log_user 0 } # Set the 'expect' timeout. set timeout -1 return $pid } # Basic interface command. Used internally by the action functions # below. proc cmd {cmd} { variable verbose variable pid if {$pid==0} { return -code error "Not started yet." } if {$verbose} {puts "+$cmd"} send "$cmd\r" expect { -re "data: (.*)\r?\n.*\r?\nok\r?\n$" { set r $expect_out(buffer) } -re ".*ok\r?\n" { return {} } -re "(.*)\r?\n.*?\r?\nerror\r?\n" { return -code error "$expect_out(1,string)" } -re ".*error\r?\n" { return -code error \ "$cmd failed: $expect_out(buffer)" } eof { set pid 0; error "process died" } } # Convert result to a list. set ret {} set iter 0 while {1} { if {! [regexp "data: (.*?)\r?\n" $r dummy elt]} {break} if {$iter==1} {set ret [list $ret]} set r [string range $r [expr [string length $elt]+7] \ end] if {$iter > 0} { set ret [linsert $ret end $elt] } { set ret $elt } set iter [expr $iter + 1] } if {$verbose} {puts "ret $iter"} return $ret } # Convert an argument list to a comma-separated list that x3270 will # accept. proc commafy {alist} { set i 0 set a "" while {$i < [llength $alist]} { if {$i > 0} { set a "$a,[lindex $alist $i]" } { set a [lindex $alist $i] } incr i } return $a } # Quote a text string into x3270-acceptable format. proc stringify {text} { set a "\"" set i 0 while {$i < [string len $text]} { set c [string range $text $i $i] switch -- $c { "\n" { set a "$a\\n" } "\r" { set a "$a\\r" } " " { set a "$a\\ " } "\"" { set a "$a\\\"" } default { set a "$a$c" } } incr i } set a "$a\"" return $a } # User-accessible actions. # Some of these apply only to x3270 and x3270if, and not to s3270. proc AltCursor {} { return [cmd "AltCursor"] } proc Ascii {args} { return [cmd "Ascii([commafy $args])"] } proc AsciiField {} { return [cmd "AsciiField"] } proc Attn {} { return [cmd "Attn"] } proc BackSpace {} { return [cmd "BackSpace"] } proc BackTab {} { return [cmd "BackTab"] } proc CircumNot {} { return [cmd "CircumNot"] } proc Clear {} { return [cmd "Clear"] } proc CloseScript {} { return [cmd "CloseScript"] } proc Cols {} { return [lindex [Status] 7] } proc Compose {} { return [cmd "Compose"] } proc Connect {host} { return [cmd "Connect($host)"] } proc CursorSelect {} { return [cmd "CursorSelect"] } proc Delete {} { return [cmd "Delete"] } proc DeleteField {} { return [cmd "DeleteField"] } proc DeleteWord {} { return [cmd "DeleteWord"] } proc Disconnect {} { return [cmd "Disconnect"] } proc Down {} { return [cmd "Down"] } proc Dup {} { return [cmd "Dup"] } proc Ebcdic {args} { return [cmd "Ebcdic([commafy $args])"] } proc EbcdicField {} { return [cmd "EbcdicField"] } proc Enter {} { return [cmd "Enter"] } proc Erase {} { return [cmd "Erase"] } proc EraseEOF {} { return [cmd "EraseEOF"] } proc EraseInput {} { return [cmd "EraseInput"] } proc FieldEnd {} { return [cmd "FieldEnd"] } proc FieldMark {} { return [cmd "FieldMark"] } proc FieldExit {} { return [cmd "FieldExit"] } proc Flip {} { return [cmd "Flip"] } proc HexString {x} { return [cmd "HexString($x)"] } proc Home {} { return [cmd "Home"] } proc Info {text} { return [cmd "Info([stringify $text])"] } proc Insert {} { return [cmd "Insert"] } proc Interrupt {} { return [cmd "Interrupt"] } proc Key {k} { return [cmd "Key($k)"] } proc Keymap {k} { return [cmd "Keymap($k)"] } proc Left {} { return [cmd "Left"] } proc Left2 {} { return [cmd "Left2"] } proc MonoCase {} { return [cmd "MonoCase"] } proc MoveCursor {r c} { return [cmd "MoveCursor($r,$c)"] } proc Newline {} { return [cmd "Newline"] } proc NextWord {} { return [cmd "NextWord"] } proc PA {n} { return [cmd "PA($n)"] } proc PF {n} { return [cmd "PF($n)"] } proc PreviousWord {} { return [cmd "PreviousWord"] } proc Quit {} { exit } proc Reset {} { return [cmd "Reset"] } proc Right {} { return [cmd "Right"] } proc Right2 {} { return [cmd "Right2"] } proc Rows {} { return [lindex [Status] 6] } proc SetFont {font} { return [cmd "SetFont($font)"] } proc Snap {args} { return [cmd "Snap([commafy $args])"] } proc Status {} { variable verbose variable pid if {$pid==0} { return -code error "Not started yet." } if {$verbose} {puts "+(nothing)"} send "\r" expect { -re ".*ok\r?\n" { set r $expect_out(buffer) } eof { set pid 0; error "process died" } } return [string range $r 0 [expr [string length $r]-7]] } proc String {text} { return [cmd "String([stringify $text])"] } proc SysReq {} { return [cmd "SysReq"] } proc Tab {} { return [cmd "Tab"] } proc ToggleInsert {} { return [cmd "ToggleInsert"] } proc ToggleReverse {} { return [cmd "ToggleReverse"] } proc TemporaryKeymap {args} { return [cmd "TemporaryKeymap($args)"] } proc Transfer {args} { return [cmd "Transfer([commafy $args])"] } proc Up {} { return [cmd "Up"] } proc Wait {args} { return [cmd "Wait([commafy $args])"] } # Extra function to toggle verbosity on the fly. proc Setverbose {level} { variable verbose set verbose $level return } # Export all the user-visible functions. namespace export \[A-Z\]* } # Import all of the exported functions. namespace import x3270::* suite3270-4.1/ws3270/version.txt000077700000000000000000000000001413735575200221162../Common/version.txtustar00rootroot00000000000000suite3270-4.1/ws3270/ws3270.bmp000066400000000000000000003523661413735575200154700ustar00rootroot00000000000000BMöÔ6(ÈÈÀÔ  üÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþÿýÿüÿþüÿþüÿþÿýÿÿÿùüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþûüÿÿÿùüÿþüÿþüÿþûüÿÿýÿÿýÿüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþÿýÿÿÿùÿÿùüÿþÿÿùüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþûüÿüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþÿýÿúõøËËÎäæêÿýÿÿýÿÿýÿüÿþûüÿüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþÿÿùüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþäæêµµ¿­§¯ËËÎúõøÿýÿÿýÿÿýÿÿýÿüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþÿýÿÿÿùüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþûüÿÿýÿÿÿùúõøÃÂŧ ¨­§¯´®Á­§¯ËËÎÿýÿÿÿùÿÿùûüÿüÿþüÿþüÿþÿýÿüÿþÿÿùüÿþüÿþûüÿüÿþÿýÿüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþÿÿùÿÿùÿÿùÃÂÅ—“•ž™¢¨ ³££¯´®Á­­¸ºµ¼ÝÙäÿýÿÿÿùüÿþüÿþÿÿùÿÿùÿÿùÿýÿüÿþüÿþÿÿùüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþÿýÿüÿþüÿþîîò’˜™œ¦šž’˜££¯µµ¿´®·­§¯¨ ³ºµ¼ÝÙäÿýÿÿÿùüÿþÿýÿüÿþÿýÿüÿþûüÿüÿþÿýÿüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþÿýÿÿÿùÿÿùÿýÿºµ¼‘““’˜““—‹‘’˜™œ­§¯´®·½·Éµµ¿´®ÁÛÝáÿýÿüÿþÿýÿüÿþüÿþÿÿùüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþÿÿùüÿþüÿþüÿþÿÿùüÿþëçé—“•’˜’˜’˜—“•’˜—‹‘…Œ—‘›¨ ³µµ¿££¯—‘›§ ¨¿¾Ëó÷õÿýÿüÿþüÿþüÿþÿýÿüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþÿýÿüÿþüÿþÿýÿüÿþÿÿù­§¯—Œ™œ““““—Œ—‹‘…Œ’˜—‹‘…Œ““—‘›Ÿ—¨££¯´®·´®·ÃÂÅúõøüÿþÿýÿüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþÿÿùüÿþüÿþÿýÿÿýÿÿÿùëçé—‘›’˜—“•—‹‘—‹‘‘—‹‘’˜—Œ‘ІˆŠ…”†“¦šž£¥¨­§¯˜Ÿ¨ ³Â¼Æëçéûüÿÿÿùüÿþüÿþüÿþüÿþüÿþÿýÿÿýÿÿýÿüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþÿýÿüÿþüÿþûüÿÿÿùûüÿ£¥¨““’˜…Œ‡†•…ˆ‘‹”‡†•…ˆ’˜—Œ—‹‘—‹‘‡†…z…Œ“”Ÿ­§¯­­¸­­¸µµ¿ÃÂÅëçéÿÿùüÿþüÿþüÿþüÿþÿÿùüÿþüÿþüÿþÿýÿüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþÿÿùüÿþüÿþüÿþûüÿÿÿùÛÝá—“•™œ’˜—Œ—Œ—ŒŠ†ˆŠ…”†“—‹‘‰€—‹‘•…ˆ•…ˆ”†“‰€…ƒ—‹‘§ ¨§ ¨£¥¨´®·´®ÁÍÊÕóôúÿÿùüÿþüÿþÿýÿüÿþüÿþÿýÿüÿþÿÿùüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþÿýÿüÿþüÿþüÿþÿÿùÿÿù­§¯—“•’˜Š†ˆ…Œ‘‹”Іˆ…Œ•…ˆ‰€Š……Œ…Œ‹ƒ“‡y…•…ˆ…ŒŠ…Ž„~‡‡y…˜ŸŸ—¨µµ¿Â¼ÆÂ¼Æ´®·ÒÒÖúõøüÿþüÿþÿýÿüÿþûüÿüÿþÿýÿüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþÿýÿÛÝá—‘›““““‡†—‹‘™œŠ†ˆ•…ˆ…Œ…Œ”†“„~‡…ƒ„~‡Š…ŽŠ†ˆ…Œ”†“‡y…„~‡…ƒ„~‡ž™¢¿¾Ëµµ¿§ ¨­§¯ºµ¼äæêüÿþÿýÿüÿþûüÿÿÿùüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþÿýÿÿýÿÿÿùÿÿù­§¯““•…ˆŠ……Œ‘‹”—‹‘—‹‘Š…‰€…Œ‘Š……z…zŠ…„~‡…ƒ•…ˆ”†“Š……zˆx{w}„~‡™œ­§¯Â¼Æ¡ž³­§¯Â¼ÆäæêÿýÿÿýÿüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþÿÿùüÿþüÿþÿÿùüÿþüÿþüÿþüÿþÿýÿûüÿÿÿùÿÿùáÝß‘—‹‘‡†…z…Œ…ƒ‰€…ƒ‰€Š……Œ„~‡…z…ƒ…z…z‡y……z‡y……z…z~xw}w}…z|sr…ƒ­§¯´®·­§¯“”Ÿµµ¿ÍÊÕîîòÿÿùüÿþüÿþÿÿùÿÿùüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþûüÿÿýÿüÿþüÿþÿýÿüÿþüÿþüÿþüÿþûüÿüÿþüÿþùüú£¥¨…Œ‰€…Œ‡†‡†}y{…ƒ…ƒ…ƒ‰€‰€…ƒŠ†ˆ…z„~‡‡y…‡y…}p}~x…ƒwr{‚ru{jt}rx}y{wr{ujpqmo~xˆˆ’¡ž³½·É­§¯´®·ÛÝáúõøüÿþûüÿûüÿüÿþüÿþüÿþüÿþüÿþüÿþüÿþÿÿùüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþÿÿùüÿþÿÿùüÿþüÿþüÿþÿýÿûüÿûüÿÿÿùùüúËËÎ…Œ…Œƒzy…zw}Š…Ž…ƒŠ……z…z‹ƒ“…Œ…Œ‡y……z„~‡„~‡„~‡~x…zxmtwr{‚p{viv|srw}}rx‚ru}rxxmt|sr„~‡ž™¢££¯´®Áž™¢´®Áçåñÿÿùüÿþÿýÿÿýÿÿýÿÿýÿüÿþüÿþüÿþÿýÿûüÿüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþÿýÿüÿþÿýÿüÿþüÿþÿÿùûüÿÿÿùÿýÿÿýÿúõø““‚‰€Š…ƒzyˆx{ˆx{…z…z‡y…Ѕމ€…Œ…ƒ‡y…‡y…”†“…z}y{…ƒ}y{wr{xon}rxrgmujp|sr}rx|srxonwsu|srrgmxon‘‹”ž™¢“”Ÿ‘‹”ž™¢Â¼ÆúõøÿÿùüÿþüÿþÿÿùûüÿüÿþüÿþüÿþüÿþüÿþüÿþÿýÿüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþÿýÿÿÿùÿýÿÿÿùÃÂÅ}y{…zƒzy…z}y{‰€…z}y{ƒzy…z…ƒŠ…~x…z‡y…‰€~xwr{~x}p}…zxmtxmtww€fajujpulkxmtxon}y{|srxon|sr}rxwr{xmt‹ƒ“ž™¢ž™¢“”Ÿ££¯ÃÂÅùüúûüÿüÿþÿýÿÿýÿüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþûüÿüÿþüÿþüÿþüÿþÿÿùäæê‡†‰€„~‡…z~xw}~x…z~x…z}rx…zw}Š……zw}}p}…z~xw}}rxwr{wr{wsuxmtudn{jtocpvivujp{lo{lo}rxsmvulkxmt|sr‚ru~xˆˆ’“”ŸŸ—¨„z“´®ÁáÝßüÿþüÿþûüÿüÿþüÿþÿýÿüÿþÿýÿüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþÿýÿÿÿùüÿþÿÿùüÿþÿÿùüÿþÿÿùµµ¿‚w}~xƒzyw}}y{}y{wr{~x}p}wr{w}‚p{}y{„~‡…z}p}smvwp‡y…}p}vivulkojsujp}p}{jtujpjen‚ru{loqmowsuulkulkujpujpufiudnufiw}‘‹”££¯§ ¨‘‹”­­¸ëçéûüÿÿÿùüÿþüÿþûüÿûüÿÿÿùüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþûüÿÿýÿüÿþÿýÿüÿþûüÿÿÿùäæê—Œ‚ƒzyƒzy…zwr{w}wsuƒzy}y{ƒzy~xww€w}wr{|srwr{wr{}p}smvwr{ojsvivpiykgiujp‚ruudnudnujpulkodjodjxmt‚ru{loxmt{lo{jtrgmxonkagviv”†“Ÿ—¨™—«˜Ÿ“”ŸÒÒÖóôúûüÿÿÿùÿÿùÿÿùÿýÿüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþÿÿùüÿþüÿþüÿþÿýÿÿÿù™œ…z…zwr{wr{}y{}y{w}}rxw}~xw}wr{wsu}p}wr{}p}wpwp~x}y{|srulkrgmufirgmrgmocpodjufi{lo{loujpudndZ`pgfujpxmt{jtpbuocpujpujpvivpadsmvŠ…Ž‘‰™¨ ³´®·¨ ³Â¼ÆëçéùüúüÿþÿýÿüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþÿýÿüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþÿýÿüÿþÿÿùüÿþÿÿùÒÒÖ…Œ‰€}y{}rx}rx~x~x}y{}y{ƒzy}y{wsu}y{}y{ƒzy}p}qmoxmt}rxƒzysmvkctujprgmjenulkufi{lo}rxojsujp‚ru{loqmoqmok_lrgmpgfujp{jtujp{jtvivn`\ujppgfkbb}oƒž™¢´®Áž™¢Š…ŽŸ—¨ÝÙäúõøüÿþÿýÿüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþÿÿùüÿþÿÿùûüÿüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþûüÿúõø™œ…ƒ‰€…z~xw}~x~x}p}‚p{wr{wr{wsuww€w}}p}wpwr{smv|sr}rxocpvivujpo]go]gufiudn}rxqmoqmopgfodjkagocp{lokbbkagh]ch]codjkbbkbbfajrgmojsojso]go]go]g~xˆˆ’‹ƒ“—¤Ÿ—¨££¯äæêÿýÿÿÿùÿýÿüÿþüÿþûüÿüÿþüÿþüÿþüÿþÿýÿÿÿùüÿþÿýÿüÿþÿýÿüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþÿýÿÿÿùÿÿùËËÎ…ƒ‡†…zƒzy}y{}y{}rxwr{ƒzy|sr~x~xwr{wr{smv|srwr{wr{~xsmvxonqmod`budnufiufikctujppgfpgfpgfkbbulkodjpadk_locpufi{lokagm]`h[hudnkbbodjrgmujpufiudnufipado]g}p}”†“Ÿ—¨˜Ÿ­§¯´®·ëçéÿÿùûüÿûüÿÿÿùÿýÿÿýÿüÿþÿÿùÿÿùÿýÿüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþÿÿùüÿþÿÿùüÿþÿýÿÿÿùîîò™œ‰€…zwr{}rx}rx}rx{lo}rx}rx}p}xmtw}qmowr{ujpxmtpiyxmtojsojsxonjenb]fodjkgikagojsulkkbbd`bujpodjjenodjpadojskbbpgfujpd`bkagpado]gkagodjujppgfd`bjend`bodj_S_k_ld\kŠ££¯Ÿ—¨—¤”†“¼ÆëçéûüÿûüÿÿýÿüÿþüÿþüÿþÿýÿÿýÿüÿþÿýÿüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþÿýÿüÿþÿýÿüÿþûüÿÿÿùÃÂ҆‡†ƒzyw}w}‡y…ˆx{…z}rx}y{}rxwr{wr{~xwsu}y{wsuujpwsuxmtqmojenqmoodjjenjenkbbkgiodjulkkbbkagkago]gkagocpodj{lojenojsrgmkgiodjpadd`bh[hhY\kbbh]cd`bm]`ufio]ghW`kagb]fsmvŠ—‘›Ÿ—¨Ÿ—¨¨ ³áÝßÿÿùüÿþÿýÿüÿþüÿþüÿþüÿþüÿþüÿþüÿþÿýÿüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþÿÿùÃÂÅ}y{‰€…z}rx}y{‰€ˆx{}p}}p}~xwr{|sr}rx}rx}rx}rxsmvsmvxmtqmojenocpocpugzojsfajodjodjudnkagocpk_lpgfkagh]codjpgf{loufipgfufipadh]ckagh]cocpufi_S_o]ghW`o]gh[hcWchW`dZ`m]`m]`h]c„~‡Ÿ—¨—‘›Ÿ—¨Ÿ—¨´®·ÝÙäÿÿùüÿþÿýÿüÿþüÿþüÿþüÿþüÿþÿýÿüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþÿýÿäæê‰€w}ƒzy}y{w}~xxon|srwsu~x}y{smvwr{smvxmtujpxmtvivocpvivqmoodj{jtufiodjn`\rgmwr{rgmudnpadpadrgmpadufiocpodjkagh]crgmk_l]XacWco]gc[Zn`\odjhY\bX]hY\hW`hW`m]`kagpadkagkagrgmkagjen‹ƒ“Ÿ—¨­§¯’£ˆˆ’´®·ëçéûüÿüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþÿÿùüÿþüÿþüÿþüÿþüÿþüÿþ““}y{Іˆ…ƒ}y{}y{|sr~xsmvujpqmo}rx}p}ojsulksmvsmvujpulkojsjenujpufipadrgmodjh]codjkagh[hdZ`kagkagkbbufik_lpadkagkbbb]fcWcm]`padkagbX]m]`dZ`h]cb]f]Xa_U[bQZcWch[hpadodjkagocpufipadh[hwp—‘›—‘›Š…Žƒ›££¯ÍÊÕúõøÿýÿûüÿüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþÿÿùüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþÿýÿüÿþüÿþüÿþüÿþüÿþüÿþÃÂÅulkˆx{‚p{w}}y{smvwr{~xojs}rxvivqmoqmoqmoqmorgmvivrgmpgfulkkbbkgifajkgipgfkgid`brgmpgfkbbg_^g_^k_lh]cg_^k_lpadb]fhW`d`bdZ`kagpgfodjudno]g_S_m]`m]`h]cdZ`\P\\P\h[hudnpadg_^ocpd\kkagh]ck_l}oƒ‘‰™§ ¨Ÿ—¨Š…Ž“”ŸÒÒÖÿýÿÿýÿüÿþÿýÿüÿþüÿþüÿþüÿþÿýÿüÿþüÿþüÿþÿýÿüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþÿÿùëçé…ƒufiwr{|srxonqmowsu}rxujpxmtsmvxon}p}xmtojsqmoojsjenocpk_lkcth]cdZ`kbbodjjenkagkagg_^g_^h]codjk_ln`\m]`padkagh]chW`cWch[hkbb]Z\c[Zc[Z]TTcWcdZ`bX]c[ZhW`_S_bSUg_^b]fkagd\kodjkagpgfodjk_locpujpŠ…˜Ÿ‘‰™—¤­­¸Â¼ÆáÝßÿÿùÿýÿüÿþüÿþûüÿÿÿùûüÿÿÿùûüÿÿÿùüÿþüÿþÿýÿÿýÿüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþûüÿüÿþüÿþüÿþÿýÿüÿþëçé­§¯‚ru}rxxmt{lo‚p{}rxwr{ojsxmtvivojsojspgfkagd`bkgipgfkagkgiqmokbbpadd`bg_^kagjenojso]gm]`d`bd`bfajh[hk_lh]ckbbhY\hW`dZ`dZ`m]`dZ`dZ`ZT]dZ`dZ`hY\dZ`dZ`cWcb]fcWc_S_hW`dZ`]Xajenk_locpwpjend\kd\kojswr{“”Ÿ¡ž³˜Ÿ—¤´®Áëçéüÿþüÿþûüÿÿýÿÿÿùÿýÿÿÿùÿýÿüÿþüÿþüÿþüÿþüÿþüÿþüÿþÿýÿüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþÿÿùüÿþüÿþÿÿùüÿþüÿþüÿþüÿþüÿþÿýÿëç陜ujpxmt}rxwr{smvxmt|srulkqmoqmoulkufiujpodjodjk_lh]codjjenodjkbbd`bh]ckagpadh]crgmkagh]ck_lo]gpadhY\padhW`dZ`padm]`bX]dZ`hY\dZ`_S__U[_S_bX]dZ`hY\_U[hW`o]ghY\dZ`hW`h[hk_lk_lpbuo]gk_lpgfk_lcWcpiy‡y…˜Ÿ™—«Ÿ—¨½·É¿¾Ëó÷õÿýÿÿÿùüÿþÿýÿüÿþÿýÿüÿþüÿþüÿþüÿþüÿþüÿþüÿþÿýÿüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþÿýÿÿÿùüÿþÿýÿÿÿùüÿþüÿþüÿþüÿþÿÿùûüÿüÿþáÝ߇†qmoqmo|srxmtujpujpujpujpjenkago]gjenfajkbbh[hh]cn`\kbbrgmrgmpadg_^h]cudnojsjenh]cbX]]Z\]Z\]Xa^VehW`hY\XTW]Z\bX]c[ZdZ`m]`hY\_U[dZ`h[h_U[dZ`c[ZbX]bX]bX]^Ved\kdZ`cWccWco]go]gpadocpo]gcWccWck_lqmoˆˆ’£¥¨££¯”†“§ ¨áÝßÿýÿüÿþüÿþüÿþüÿþÿýÿÿýÿüÿþüÿþÿÿùüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþÿýÿüÿþüÿþÿýÿüÿþüÿþüÿþüÿþüÿþüÿþüÿþó÷õ™œujp}rxsmvrgmudnjenkbbodjo]gk_ld`bd`bodjo]gm]`odjfajujpujpodjkbbm]`fajfajh]cm]`h]chY\hY\hY\hW`o]gdZ`_S_]Xa\QWc[Z_U[XTWc[Z_U[bQZm]`hY\c[Zh]chW`bX]m]`b]fcWcdZ`cWcbX]kagkagb]fh[ho]gjenh[hk_lb]fkct~x—‘›˜Ÿ“”Ÿ™—«™—«ÝÙäûüÿûüÿÿýÿÿÿùüÿþüÿþüÿþÿýÿÿýÿüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþÿÿùüÿþüÿþüÿþüÿþüÿþÿýÿÿýÿüÿþüÿþûüÿëç銆ˆwsuqmoqmoojspgfodjpgfqmokgikagh]cbX]dZ`odjd`bg_^h]codjn`\kbbb]fg_^d`bh]ckbbm]`bX]h[hh[h_S__U[dZ`dZ`]TT]Z\]XabX]\QW]Xa_U[bX]_U[dZ`hW`h]cbQZcWccWccWchW`o]gdZ`bX]ZT]cWck_lk_lpadocpd\kh[hh[hk_l^Ved\k„~‡¨ ³Ÿ—¨†ƒ–“”ŸËËÎîîòüÿþûüÿÿýÿüÿþÿÿùüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþÿÿùüÿþüÿþüÿþüÿþÿýÿüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþÿýÿÿÿùÃÂÅqmoojsujpxmtrgmpadodjrgmpgfkgikbbkagkagudnkagh]cb]fdZ`hY\bX]kagkbbb]fh]cufih]ckbbpadh]cbX]_U[dZ`bSUhY\\QW_U[hW`\QWhY\]TT\QWbSUcWccWc_U[hW`cWch]c]Xa_U[_S_cWccUhcWccWc_S_dZ`h]ccUho]go]gb]fh[hkaghW`o]gocp~xˆˆ’££¯¡ž³Ÿ—¨ËËÎûüÿÿýÿûüÿüÿþÿýÿüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþÿýÿüÿþüÿþÿýÿüÿþüÿþüÿþüÿþüÿþüÿþüÿþÿÿùüÿþüÿþÿýÿÿÿùëçéwsuulkojsojsqmoodjpgfufid`bkbbkbbkagk_lc[Zg_^g_^h]cd`bkagg_^h]co]gn`\m]`hW`m]`n`\c[ZhW`hW`bX]h]c]Xa_U[_U[bX]bX]YMYPNQbSU_U[\KU\QWbSU\P\_U[_U[_U[]Z\]Xa]Z\h]cudnk_lcWccWc_S__S__S_hW`^Veh[hkagk_lkago]gh[hcUhi[n‹ƒ“££¯“”Ÿ™—«§ ¨áÝßûüÿüÿþüÿþûüÿüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþÿýÿüÿþüÿþÿýÿûüÿüÿþüÿþüÿþüÿþüÿþûüÿüÿþüÿþüÿþüÿþüÿþûüÿüÿþÿýÿüÿþüÿþÿÿùîîò…ƒkagjenulkkbbkgijenh[h]Z\o]gb]fb]fkbbn`\kbbkbbb]fkbbo]ghW`h]cc[Z]Z\dZ`o]gh]chY\]Xa]XacWc_U[c[Zd`b]TTc[ZbX]bQZ]TTbSUhW`odjcWc]Z\bSU_S_WQZZT]bX]hW`cWc_U[b]fd`bkagpadh[h^VecWcdQa_S_XQ`hW`cWcd\kk_ld\kb]fh]ccWccUhwp‹ƒ“‡‚Ÿ‹ƒ“˜Ÿ¨ ³ÝÙäÿÿùüÿþûüÿÿÿùüÿþÿÿùüÿþÿýÿÿýÿüÿþûüÿüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþÿÿùÿÿùûüÿüÿþüÿþüÿþüÿþÿÿùûüÿüÿþüÿþüÿþüÿþÿÿùûüÿüÿþüÿþüÿþüÿþúõøŠ†ˆkgiodjh]cd`bkbbg_^dZ`h]cc[Zm]`padkagm]`odjb]fdZ`_U[hW`bX]c[ZdZ`bSUh[hbX]hW`cWchW`hW`_U[hW`bX]c[ZhY\bSUbQZ\QW\QWPNQbQZh[hhW`\QWRLUhY\cWcbX]_U[XTW\P\_S_dQadQaXTW]Xakago]gh]c_S_ZT]dQadQahW`hW`o]go]gh]cb]fe\qcWccWcbX]smv“”Ÿ“”Ÿ“”Ÿ’˜¨ ³ÛÝáÿÿùûüÿüÿþÿýÿÿÿùüÿþüÿþüÿþÿÿùûüÿüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþûüÿüÿþûüÿüÿþùüúÿýÿüÿþüÿþüÿþüÿþÿÿùÿýÿüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþëçéojspadufihY\c[Zh]cb]fb]fdZ`hY\o]gh]ch]cd`bkbb]Z\d`bm]`cWcc[ZdZ`bX]bX]cWcbX]bX]dZ`c[ZkagZT]h[h_U[hY\_S_dZ`\QWWNN\QW\QW\QWXTWbQZ\NPbSUbSU\QW_S__S_]Xa]Xa_U[hW`bX]_U[]ObcWc]XaXQ`]ObcWch[h_S_cUhXQ`]Xa]Z\]XacWccWco]gk_l_U[]Xah]cwp’£Ÿ—¨t‹˜ŸÂ¼ÆîîòÿÿùüÿþüÿþÿýÿüÿþüÿþüÿþÿýÿüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþÿÿùûüÿÿÿùÿÿùùüúùüúëçéÃÂÅ­§¯§ ¨ÒÒÖÿÿùÿýÿüÿþüÿþüÿþüÿþüÿþüÿþüÿþÿÿùüÿþ­­¸kbbfajodjdZ`d`bc[Zg_^d`bg_^]Xa]Z\d`bkagb]fh]cm]`dZ`b]fm]`bX]c[ZdZ`bX]cWchY\]Z\bX]hY\_U[hY\]Z\ZT]RLU\P\\KUhY\\NPbSUhY\bX]bQZXTW\QW\P\RKZWQZ]TTcWc_U[bQZ\P\_U[bX]cWc_S__S__S_\P\WQZh[hcWcbQZbQZ\P\\P\dQa\P\cWccWccWch[hudno]gh[hhW`kag}p}ƒ›™—«{|——¤¿¾Ëúõøüÿþüÿþüÿþüÿþÿýÿüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþÿýÿÿÿùüÿþ™œ…Œƒzyqmoodjkgikgi™œÒÒÖó÷õÿÿùûüÿüÿþÿýÿÿýÿüÿþüÿþÛÝáwsukbbfajc[Z_U[dZ`]Xac[ZdZ`b]fd`bm]`kbbh]ckbbkagb]fcWcdZ`kagh]chY\h]cdZ`bQZc[ZdZ`bSU_U[WQZkgiojs\QW\QW]TTbQZhW`_U[_U[_S_\P\\KUWQZWQZ_S_\P\_S_dZ`]XabQZ\P\\JY\QWXTWWQZ_S__S__S_h]chW`dQaZT]\JYdQacWc_S_XQ`XQ`_S__S_hW`bX]kagk_lh]cudnk_l\P\d\kŠ…Ž‹‰œ‹‰œ„}´®ÁÛÝáûüÿÿÿùüÿþüÿþüÿþüÿþüÿþÿýÿüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþûüÿüÿþÿÿùËËÎwsuƒzy…z}rx|srxmtulkulkulk—‘›Â¼ÆëçéúõøüÿþûüÿüÿþÒÒÖ…ƒd`bkgig_^]Xac[Zc[Zg_^b]fdZ`kbbkagd`bb]fkbbfajc[Zm]`hW`hY\_U[g_^m]`hW`]XaXTWdZ`dZ`]Xac[Z\QWbQZhY\\QWPNQ\NPufibX]RLUbQZbSU_U[hY\\P\]XaYOTbSU_U[XQ`\QW\P\\KUXQ`RKZdQa_S_^Ve^Ve_U[k_li[n_U[\QWbQZ_U[]Xa_S_hY\bX]XQ`_U[bX]b]f]Z\ufikagkagkaghY\bQZcWcpiy‹ƒ“‘‰™¨ ³‘‰™­§¯ÛÝáüÿþÿýÿûüÿÿÿùûüÿÿÿùûüÿüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþûüÿÿÿùÿÿù“”Ÿ|sr}y{}y{wsuwsusmvulkujp{lok_l}rx‘‹”™œºµ¼ºµ¼—“•qmod`bkgikgifaj]Xab]f]XadZ`g_^bX]c[Z_U[bX]d`bpgfkagbX]bX]bX]d`bbX]]Z\bX]dZ`c[ZbSUo]gg_^]Z\XTWWQZ_U[bX]\QW]TTWNNbQZ\KUXGQhW`cWc\QWbQZ_U[_S_bQZ\QWWQZbQZbQZWQZ_S_XQ`YMY_S_YMYYMY\P\_U[bX]bQZ\P\_S_ZT]^Ve_S_XTWhW`XQ`RKZbQZdQacWch[hk_lhW`d\kb]fbX]cWc_S_YMYcUh„}££¯ž™¢~|†ƒ–ÍÊÕóôúûüÿÿÿùÿýÿÿÿùüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþûüÿÿÿùüÿþüÿþÿÿùüÿþüÿþüÿþÿýÿÿÿùÿÿùÃÂÅ|sr|srˆx{xonqmoxmt‚ruxmtulkjenulkpgfrgmrgmulkpadh]ckagkagd`bb]fdZ`h]ch]cg_^d`bfajd`b]Xa]Z\]Z\kagb]f]Xag_^c[Zc[Zc[ZbX]hW`hY\XTW]Z\dZ`bX]_U[g_^_U[_U[WNNWNNVLRSIN\QWVLRWNNXTWYMY\NPVLR\NPdQabSUcWcYMY\QWWQZYMY\QWb]f_S_YMY\JY\KU\QW\QWdQa\P\]TT_U[bQZbQZhW`dQa\P\XQ`VLR\P\XQ`XTW\NPdZ`bX]_S_cWcd\kh[hh]ch]cb]fbQZYOTvivЅކƒ–‡‚Ÿ‹‰œ˜ŸáÝßùüúüÿþÿýÿÿýÿüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþÿÿùüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþûüÿÿÿùÿýÿüÿþüÿþÿýÿüÿþüÿþûüÿÿÿùîîò…ƒujppgfulkpgfufiulkudnujpxonxmtkgid`bkagkgiojsujpkgipgfodjkagh]cg_^kbbd`bc[ZXTWdZ`h]cbX]d`bh]ch]c_U[hY\hY\d`b]XadZ`hW`_U[d`b]TTc[ZbX]bQZbSUhY\\NP\QW\P\_U[WNNWNN\QWWNNWNNXTWWNN_U[\QWYMYXTWPNQXQ`YMYhW`dZ`ZT]YMY]ObbQZ_S_YMYVJV\P\\JY]ObhW`_S_RKZYMY\QWVJVYMYRLUYMYYMYWJ\\KU\QW_U[_U[_U[_S_bX]d`bh]ccWch[hkagm]`_U[VLR\QWkct„}ˆˆ’†ƒ–Ÿ—¨¨ ³ÛÝáÿýÿüÿþüÿþüÿþüÿþÿÿùüÿþüÿþÿýÿüÿþûüÿÿÿùÿýÿÿýÿüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþÿÿùüÿþüÿþüÿþüÿþüÿþüÿþÿÿùÿÿùºµ¼wsu•…ˆ¦šž­§¯­§¯¦šžˆx{xonulkufiujpxmtufikgiojsrgmfajodjd\kodjpgfh]chY\]Z\c[Z_U[hW`hY\dZ`_U[]TTdZ`hY\c[ZhW`dZ`cWchW`]Z\d`bb]fZT]bX]dZ`bQZcWc_U[dZ`]Xa]TT_U[\KU\QW]Z\]TT\QWRLUVLRVLR\QWVLRbSUVLRWQZ_U[_U[_S_bX]bSU\QWbQZYMYbQZ_S_WQZVJVbQZ\QW\NPbQZ\KURLURKZYMYRLUXTWRLU\KU\P\XQ`_S__S_\NP\NP]TTbQZhW`hY\hW`i[ni[ncWcc[Z\QWVLRVLRWQZpiyž™¢™—«‹ƒ“‹ƒ“µµ¿îîòÿýÿûüÿÿýÿÿýÿüÿþüÿþüÿþÿýÿÿýÿÿýÿüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþÿýÿÿÿùüÿþüÿþüÿþüÿþÿÿùÿýÿÍÊÕáÝßùüúÿÿùëçéëçéËËμƭ§¯—Œujpodjkgikgijenojskgikgikgig_^h]ckbbbX]bSUc[Z_U[bX]hY\hY\bX]_U[_U[_U[c[Z]Z\m]`hY\_U[hY\]Z\bSUbX]bX]hY\WQZXTW]Z\]Z\]Z\XTW_U[\QW]TTPNQ]TTRLU\NPVLRXGQVLRWNNWNN_U[_U[XTW\QWbQZ\P\_U[YMY\QW\QWXTWRLUVLR_S_\QWZT]cWc_S_XQ`\QWPNQYOTVJVYMYbQZYMYhW`bQZbSUhW`bQZ\KUdQa\QWVLRVJVVLRWQZdZ`c[Z_S_hY\_S__U[\QWVLR\QWh[h„z“—¤’£’§“”ŸÂ¼Æÿÿùÿýÿüÿþüÿþüÿþüÿþüÿþÿýÿÿÿùüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþûüÿûüÿûüÿüÿþùüúüÿþÿÿùó÷õÛÝá­§¯ˆˆ’qmo_U[dZ`pgf¦šž““ulkodjpadodjufiujpodjkbbpgfd`bc[Zb]f]Z\dZ`bX]bX]ZT]]Xa]Z\g_^bX]_U[bX]]XaWQZ_U[]Z\\QWc[ZdZ`bSUbX]\NPh]cc[ZbSU\QWb]fc[ZWQZXTWVLRVLRVLRVLR\QW\QWWNNWNNWNNVLR\NP\QWRLUVLR\NP\NPVJVYMY_U[XGQVJV\KUWQZWQZbQZ\KUSGSRLURLU\QWXQ`WQZRLU\KU\KUWJ\VJV_S_XTWXTW]Z\VJVbQZYMY\P\VJVSGSVJV\NP_S_h[hkagcWcbX]_S_hW`dZ`WQZ\QW\QWwsu˜Ÿ’£’£„}™—«ÒÒÖÿýÿüÿþüÿþüÿþüÿþÿýÿÿýÿüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþÿÿùüÿþüÿþüÿþûüÿÿÿùüÿþÿÿùËËΊ†ˆkgi]TTkbbpgfodjulkujprgm…z˜Ÿ…zodjudnkagufikbbg_^fajd`b]Z\]Z\g_^kbbkbbdZ`hY\hY\kbbg_^WNNc[ZbX]_U[]TT_U[_U[_U[cWch[h_U[XTW]TTbX]]TT\QWXTW_U[WNNVLR\NPYMYSINVJVVLRVLR\QWVJV\QWXTWWQZ]TT_U[RLU\NPVLRWQZXTW]TTVHJXGQRLUbSUXTWPNQ\QWVLRRLU\NPTDMXGQ]Xa]TT\QWVJVVLRRLUVLRZT]ZT]\P\bX]VLRm]`k_lhY\VJVVLRRLUbQZ_S__U[]XabX]_U[hW`bQZ_U[]Z\hW`\QWRKZZT]wpŸ—¨Ÿ—¨’£‹‰œ¡ž³äæêûüÿÿÿùüÿþûüÿÿÿùüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþÿýÿüÿþüÿþüÿþÿÿùùüúëç陜ƒzyˆx{WNN]TTm]`ufipado]gulkkgi{lo}rxŠ…Ž‘‹”wr{smvjenodjkagm]`h]c]Z\d`bbX]g_^dZ`c[ZbX]kagc[ZXTWWQZc[ZbX]dZ`dZ`bSUWQZ_U[c[ZhY\hY\XTWXTW\QWWQZ_U[hY\bX]XTW_U[VLRWNNVLR_U[WQZSINVJVVJVSINVLR]TTWQZRLUYOTRLUVJVRLUWQZKDS\QW\P\XTWNIQWQZWQZ\QW\KUYMYVLRVHJVLRhW`^VeRLUKHJVLRVHJWNNbSUbQZcWc^Ve\QWVLRhW`\KUYOTXTWPNQXTW\NPWNN]TTdZ`_S__S_hY\ZT]\QWdZ`dQabQZ\KUVJVfajŠ’£’§ˆˆ’’£Â¼ÆäæêüÿþüÿþÿýÿüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþÿÿùüÿþüÿþüÿþüÿþÿÿùÛÝá}y{kbbxonxmtkbbc[ZWNNc[Zpadkagwr{vivˆx{}y{}rxxmt}p}…zujpd`bkagudnn`\]Z\bX]c[Z]TT_U[d`b]Z\g_^]TT_U[hW`_U[]Xac[Z]TTc[ZWQZ]TT]Z\_U[bX]ZT]_U[VLR\QW\NPdZ`XTWWQZ\QWVLRVHJWNN\NP\NPWNNVLR_S_\KU\JY\NPZT]WQZVJVYMYVJVNIQSINVJV_U[VLRRLUSGSVLRVLR\QW\P\VLR\NPNIQVLR\NP\NP\KUVLRWJ\VCRSINXTWfajbX]hW`\P\OCOOCOOEK_U[dZ`ZT]SGSbQZVJV\KU_S_bQZbSU\NPYMY_U[_S_dQa\QW\P\RKZ\JY\P\d\kŠ˜Ÿ™—«„}†ƒ–¼ÆúõøÿýÿüÿþÿýÿüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþÿýÿüÿþüÿþÿÿùÿÿùáÝß}y{kbbrgmm]`g_^ƒzykgi]TT]TTc[Zpgf•…ˆ|srwr{smvƒzy}rx}rxd`bojs‰€ujpm]`dZ`c[Z]Z\bX]]Z\hY\_U[dZ`dZ`_U[c[Zg_^h]c]TTVLR\QWbX]]Z\dZ`c[ZhY\bX]]TTWNN\QWXTW]Z\XTWRLU_U[dZ`VLR\NP\KUNIQRLU\KUSINRLUNIQNIQVHJVHJYMYYOT\KUYOTWNNYOTYMYVJVVLRSINSINZT]RLUOEKNIQRLUVJV\NPVLRKHJSGSSGS\QWhW`\P\VCRXGQVLRVJVcWchW`]XaSINbQZ\P\_U[\P\VLRVLRSINVJVbSUhY\\KUVJV\JYVLR_U[\NPbQZbX]\P\_S_bQZhW`YMY``h‹ƒ“~|™—«ƒ›™—«ËËÎüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþÿýÿüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþó÷õІˆc[Z{loxonn`\ulkn`\c[ZQHGE=<\NPg_^vivxmtujp{loujpxmtxmtodjh]cm]`ujp}y{jendZ`dZ`c[ZbSUbQZ_U[c[ZhW`bQZbX]bX]b]fdZ`\QW]TT]Z\\NPbQZ]TTbQZ_U[bSU\NPbX]c[Z\QWWNNOEKojsbX]VHJ\NPVLRPNQQHGVLRKHJRLUVLR\QW]TTRKZVLR]TT\QWYMYRLUNIQVJV\KU\KUXGQ\KU\QW\KU\JY\JYXGQWQZVJVVLRVHJVHJNIQOEKKHJPNQOEKRLUVLRXGQ\QW\P\_S_SINWQZ\QWWQZOEK\NP]TTVLRbQZbQZWJ\SGSWNN]TTNIQVJVVLRXTW\P\bQZ_U[_U[dQaWJ\SGSbX]e\q˜Ÿ‹ƒ“~|t‹­­¸äæêûüÿûüÿüÿþüÿþüÿþüÿþüÿþÿýÿÿýÿüÿþüÿþÿÿùüÿþÿýÿÿýÿüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþºµ¼pgfufikbbn`\bSUn`\n`\VHJE=MO?HJEMFBDLBHFAILBHOEK\QWVJVOEKVHJOEKQHG\NPQHGOEKVHJVLRVLRSINKDSVLRVJVRLUYMY\P\bSU\P\\QWYOTVLRRLUe\q~|“”Ÿ’£„z“’£ÍÊÕùüúûüÿÿýÿÿýÿüÿþÿýÿÿýÿüÿþüÿþüÿþûüÿüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþÿÿùáÝßn`\bSUulkn`\]TT]TT]Z\c[ZVHJE=IO?HTDMRKZFBDOCOVHJSINFBDI?EO?HKHJFBDLBHL@LO?HLBHFAIFBDQHGSINLBHOEKVLRTDMPCVSGSSGS\KUXGQOCOVLRRLUNIQYMY_U[_U[WQZ_U[VJVWQZ_U[\KUbQZwsu†ƒ–˜Ÿ™—«—¤§ ¨ÍÊÕüÿþÿÿùÿÿùÿýÿÿýÿÿÿùÿýÿüÿþÿýÿüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþºµ¼g_^PNQ\NPQHGWNNKHJQHG\NP\NPn`\g_^n`\ufic[ZbSUpadufixmtsmv|sr‚““…zƒzy…z|srulkulkd`bWQZXTWdZ`hY\udnrgmodjb]f\KUbSU_U[_U[bSUbSU]TTWQZhY\_U[\QWXTWRLUPNQWNNWNNbSURLUVLRVLRSGS\QWYMYVLRNIQVLR]TTZT]VJVOCOVJVSINSINNIQNIQVLROEKOEKVJVXGQOCOJEMNIQOEKQHGNIQSINSINPNQOEKOCOSGSSGS}rx’˜Ÿ—¨xmtXGQVHJTDMOCOPNQI?EO?HPADVHJOEKFAITDMTDMSINLBHJEMLBHLBHOEKSGSOEKSINOCOJEMVHJSGSOEKVLRSINVHJXGQRLUYOT]TTRLUbQZbQZbX]\QW]Z\d\k]TT``h˜ŸŸ—¨‡‚Ÿ†ƒ–­§¯ÛÝáüÿþÿÿùüÿþüÿþÿÿùÿýÿüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþáÝß‚ufi‚run`\\NPVHJVHJVHJQHGVLRpadˆx{‚ufiujpm]`g_^pgfujpxonƒzy‰€…zwsu|srxmtƒzyujpw}|srpgfh]ch]cc[ZbSUc[Zkgiocpo]gbX]bSUc[Z]XaVLRXTWXTW]TT\KUbSUbX]bSU\NPVLRVLRYMYVLR\NPVJV_U[XTWRLU\NPVHJVLRXTWVJVVLRbQZVLRVLRRKZSGSSGSSINKHJOEKVCROEKFBDVLRKHJSINL@LOCO\KUXGQSINQHGLBHpadÃÂÅÿýÿüÿþüÿþÿÿùÒÒÖw}TDMXGQOEKTDMO?HC>FL@LL@LLBHPADF;FLBHJ8GO?HL@LLBHTDMVCROEKOCOTDMOEKSINNIQOEKVLRVLROEKLBHSGS\QWVLRRLU\QWYOTVLRKDSWQZ]Xa_S_VJV\QWsmv‘‰™’£‹‰œ‹‰œÂ¼Æîîòûüÿüÿþÿýÿÿýÿûüÿüÿþüÿþüÿþÿÿùüÿþüÿþüÿþüÿþüÿþüÿþüÿþÿÿùüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþÿýÿüÿþÿÿùüÿþ™œkbbudn—‹‘—“•]TTQHGWNNc[Zc[Zpadufiw}w}}y{xmtkbbufikbbkbb|srƒzyxmtxon‚ru|srwsuujpw}{loˆx{|sr{loc[Zh]cbX]WNNWNNc[Zujp}p}cUhh[hbSUbSU\NP]TTXTW_U[bSU\QWVLRRLUVLRVLR\NPOEKVLR\QWPNQWNNXGQ\NPTDMXGQWQZPNQbQZbSUVLRSINVCR\KUVJVXGQOCOSGSTDMSGSSGSVHJ\KUVLRO?HTDMVHJOEKRLUOCOh[hÝÙäÿýÿüÿþüÿþüÿþüÿþûüÿó÷õІˆPCVVJVKHJJEMLBHJBAPADOEKOEKVHJKDSI>IFAILBHLBHJEMOEKOCOTDMPCVSGSXGQSINTDMVCR\KUXGQOEKVHJTDMSGSJEMNIQ\QWRKZSGSVJVVJV\KU\KUXGQVLR]Xaww€™—«’£}y“¡ž³ÍÊÕúõøûüÿüÿþÿÿùÿýÿÿýÿüÿþÿýÿüÿþÿýÿüÿþüÿþüÿþüÿþüÿþÿýÿüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþÿÿùüÿþüÿþüÿþÿýÿûüÿûüÿüÿþÛÝá~xpiyww€}y{}y{K=@JBAQHGVHJg_^padulkjenulkƒzy}rxƒzy}rxjenujp{lokbbpadulkufiqmo}y{ƒzy‰€‡†|srxmtƒzyufih]cujpkgiZT]dZ`d`b]Xakgid`b_S_bX]_U[WNN\P\]TT\QWVLRVLRXTW]TTYOTXGQPNQQHGhY\YOTSGSSGSVLRVJVWNNVLRXGQ\QW\P\VJVcWcVJVSINXGQXGQNIQSINYMY\NP\KUVLROEKTDMVJVYMYVJVVLROCOSGSÍÊÕûüÿüÿþüÿþüÿþüÿþüÿþüÿþÿÿùúõøkbbKHJSINLBHFBDPADOCOTDMI?E=?BFAIQ>MKHJFBDL@LFAILBHOCOOCOJEMVLR\NPKHJPADXGQTDMSGSPNQJEMOCOOEKOEKNIQVCRKDSNIQVLRPNQSINPNQVLRVLRVJVRKZsmvŠ‹‰œƒ›ƒ›§ ¨áÝßûüÿüÿþÿýÿûüÿüÿþüÿþüÿþüÿþûüÿüÿþÿýÿüÿþüÿþüÿþüÿþüÿþÿýÿüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþÿýÿÿÿùÿÿùÿýÿüÿþÿÿùüÿþÿÿùÃÂÅ}y{…ƒww€ww€ww€kagKHJPADg_^wsukago]gpgf{lo‚ru‡y…w}ufi{low}pgfkagg_^d`bwsuxmtujpwr{…ƒ‚ruˆx{wsuodjkagkbbg_^padkbbd`b]Z\WNNVLRrgm}rxocph]c\QWPNQVLR_U[\QWSINXGQVLRPNQKHJWNN\NPVLRVLRWNNWNN\NPSINSGSKHJVLRSINSINNIQfaj\P\OCOKDSRLUYOTNIQVLRKDSOEKSGSOCOKDSXGQOCOXGQVHJTDM™œÿýÿüÿþÿÿùüÿþüÿþüÿþüÿþÿýÿÿýÿÿÿù™œH8AOCOJEMOCONIQO?HLBHKHJFBDFILBHI?EI?EJBAJBAO?HQ>MF;FFIO?HLBHLBHQHGKHJOCOSINQHGLBHVHJJEMKHJJEMD=LKDSQHGTDMJ=NOEKKDSXGQOCOLBHKHJTDMO?HL@LOEKTDMKHJ\NPNIQVHJXGQ^Vet‹Ž¥Š‹‰œž™¢ÝÙäÿÿùüÿþüÿþÿÿùÿýÿÿýÿÿýÿÿýÿüÿþüÿþüÿþüÿþÿýÿüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþÿýÿÛÝá‘’˜ž™¢¦šž™œ‚ˆx{‡y…~xww€„~‡„}wp}y{|srpgfulkulkpgfm]`dZ`h]cxmt‡†|srulkpgfkgiulkulkxmt}rxufiufin`\padfajkagdZ`kbbujp|sr{lokbb_U[hY\m]`]XahY\pad}rxˆx{rgm\QWdZ`\NPWNNVLRVLR\NPQHGSINVLR\QWPNQKHJPNQNIQSINOEKJEMJEMNIQTDMXGQOEK]TTVJVSINKHJJEMKDSSGSOCORKZRLUXTWL@L—‹‘üÿþüÿþüÿþÿýÿüÿþÿýÿüÿþÿýÿüÿþüÿþüÿþÿýÿ—‹‘I?EJBAPADQ>MPADFAILBHC>FPADO?HO?HLBHQHGLBHVHJFAIOCOLBHVHJL@LJEMLBHJEMOEKOEKSINXGQQ>MOEKVHJQ>MVCRQHGKDSXGQLBHO?HOEKXGQOCOI>ITDMXGQSGS\JY\JYbQZWQZOEKVLRojs’£’£ˆˆ’~|££¯äæêüÿþÿýÿÿýÿüÿþÿýÿÿÿùüÿþûüÿüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþÿÿùûüÿІˆ}rx—‹‘‘‹”ž™¢§ ¨˜ŸŠ…Ž…ƒƒzyxmtwr{„~‡ˆˆ’Š‹ƒ“w}ufi{loxmtkbbn`\padh]ckag{lo‚ruufi‚ruxmt|srqmopadufiqmokgipadulkpgfd`b{lo‚ruwr{g_^ufig_^h[hufin`\b]fo]gbX]kag|sr~xojs]XaRLUbSU\NPOCOVLRQHGPNQOEKVLRWNNQHGSINXGQRLUOEKSINVCRKDSO?HOCOKHJQHGOCOKDSOEKPADTDMVHJXGQ\KUSIN_S_çåñüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþäæêh]cI?ELBHLBH\NPXGQI?EFAIB>@C>FLBHK=@I>IKDSLBHJEMOEKO?HO?HJEMJEML@LL@LOEKL@LO?HPADTDMPCVOEKTDMTDMI>IOEKLBHOCOI>IOEKTDMFAIOEKXGQVJVPCVVLR\KULBHNIQ\KUYMYPNQVHJh[h†ƒ–˜Ÿ‡‚Ÿ™—«„z“ºµ¼ó÷õÿÿùÿýÿÿÿùÿýÿüÿþÿÿùûüÿüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþûüÿÿÿùüÿþüÿþËË΄~‡}p}‰€—‹‘‡†‰€—‹‘¦šž’˜““‡†ulkulkww€Šˆˆ’„~‡~xƒzyƒzywsukbbpgfg_^n`\pgf}rx{lopgfulk‚rurgmpgfkbbd`bd`bkbbkgiw}qmo|sr}rxjenjenhY\]TTulkxonulkqmopgfpaddZ`jenwr{…zsmv^VehW`hW`XGQXGQSGSJEMJEMVLRSGSOCOSGSSINPNQSINKHJRLUNIQSGSL@LOEKOEKOEKJEMSINOEKOCOOCOL@LL@LF;F¨ ³ÿýÿÿÿùüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþÿÿù¦šžVHJSINVHJSGSVLRSINI?ESINLBHLBHI>II?E@;CLBHPADPADOEKI>ILBHOEKLBHSINTDMOEKOCOOCOLBHLBHKHJQHGQ>MOEKL@LVHJJBAVHJFBDKHJL@LI>IQHGJEML@LLBHJEMOCOXGQXGQVCR\JYXGQSINOEKYMYh[h}y“’£ƒ›‹‰œ¡ž³¿¾ËÿýÿÿýÿüÿþüÿþüÿþÿýÿüÿþüÿþüÿþüÿþüÿþÿýÿüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþÿÿùÿýÿüÿþüÿþóôúÒÒÖ££¯Š}y{Š…‡y……zІˆ‘ž™¢­§¯‘…zwsuƒzyww€Š~w†ˆˆ’…ƒojssmvsmvufic[Zg_^]Z\c[Zh]culkpgfm]`h]ckagh]cn`\{loodjkbbulkkgikagkbbqmoƒzyxmt{lo‚ruojs}y{wsuudn‚ru‚ru‚ruƒzyˆx{w}wp^Ve_S_bQZVLRKHJKHJNIQOEKVLRPNQKHJKHJNIQFAIKHJLBHJBAKHJL@LLBHKHJSINOEKPCVJEMJEMQHGI>Iojsó÷õüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþÿýÿÿÿùÛÝábQZbQZXGQVJVYOTFBDPADQHGL@LO?HL@LO?HFAIL@LD=LI>IJ=NI>IVHJTDMQ>MLBHL@LO?HTDML@LFAILBHPADO?HLBHOEKOCOOEKOEKKHJNIQTDMPADJBAO?HOCOJBALBHLBHOEKOEKTDMSINSINXGQXGQ\KUVJVSGSOCOYMYkct{|—¡ž³’£ƒ›™—«áÝßùüúüÿþüÿþüÿþüÿþüÿþüÿþüÿþÿÿùûüÿüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþÿÿùüÿþüÿþüÿþüÿþÿÿùîîòËËΓ”ŸŠ…Ž„~‡—‹‘—‹‘„~‡‡y…˜Ÿ—‘›”†“…Œ…z|srxmt~w†„}Š„}|sr}y{pgfc[Zpgfg_^XTW]TTpgfxonkbbufixonwsupgfrgmqmon`\kbbrgmudnufi‰€‰€…ƒwsu…z…zqmoqmoqmopgfrgm|sr}y{xmt{jt‚p{|srsmvdZ`WQZVHJOEKTDMOCOSGSKHJKHJOEKVLRSINVHJOCOVJVVLRPADLBHOEKLBHLBHO?HO?HVCRXGQOCOËËÎÿýÿüÿþüÿþüÿþÿýÿüÿþüÿþüÿþÿýÿÿýÿüÿþÿÿùŠ…VJVdZ`XGQ\KUYMYSGSL@LTDMLBHF@I>IO?HTDMLBHPADO?HLBHLBHLBHLBHVHJI?EC>FO?HLBHI>IOCOOCOOCOO?HOCOTDMOCOJ=NL@LOEKPADFAINIQOCOD=LLBHTDMVJVOCOSGSTDMXGQVLRRLU\KUVLR^Ve}p}™—«ƒ›‹‰œ†ƒ–­­¸óôúûüÿüÿþüÿþüÿþüÿþÿýÿüÿþÿýÿÿÿùüÿþüÿþÿÿùüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþÿýÿüÿþüÿþüÿþüÿþÿýÿÿýÿüÿþëç鿾˗“•Š…ŽŠ…Ž’˜¦šž‰€„}‘‹”„}¦šž¦šž‚}rx‹ƒ“}y“Š‹‰œ„~‡}rxkgikgikagodjkbb\NPodjxmtkagkgiujprgmkbbulkojspadpgfxon}rx‚w}Š…ˆx{‚ru…z}rxufipgf{lo|srƒzyufirgmh]cufih]cxmt}y{odjcWcbQZLBHVHJSGSFAIL@LJEMJEMJBAQHGL@LNIQKDSD=LSINVHJPADI?EFBDJEMJBAH8Aw}ûüÿÿÿùûüÿüÿþÿýÿüÿþÿýÿüÿþüÿþüÿþüÿþÿýÿºµ¼XGQVJVNIQVHJO?HPADO?HLBHFMOEKLBHI>II?EI>IO?HFAID=LD=LJEMLBHLBHVCRVHJJBAPADTDML@LOEKLBHOEKOCOO?HQ>MFAIFAIJEMFAIOCOXGQSINQHGNIQOCObQZWJ\d\k‹ƒ“’£„}}y“‹ƒ“ÒÒÖùüúûüÿûüÿÿýÿüÿþüÿþüÿþÿýÿüÿþüÿþûüÿüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþÿýÿüÿþüÿþäæê­­¸ˆˆ’Іˆ™œ¦šž‘—‹‘Š…ŽŠ…Ž˜Ÿ¦šž’˜‡†xmtwr{„}†ƒ–”†“~xpgfc[Zd`bulkpadbX]dZ`d`bqmopadn`\kbbxon}p}h]cg_^d`bufi‚ru}p}…zujp}rxƒzyxonxon{lo{jt{jt~xxmtufirgmodjpad‚ruulkrgmrgmd\kYMY\NPVHJLBHOEKKHJKHJFAID=LOCOLBHI?ELBHKHJOEKKDSJEMFAIOEKE=FB>@FAILBHLBHLBHFBDE=FLBHI?EC>FI?EC>FI?EC>FE=FI>IJBALBHL@LOCOI?EI?EPADL@LI>IF;FKHJL@LLBHLBHLBHO?HI?ELBHLBHTDMVHJI>IOCOLBHL@LOEKTDMTDMSINVLR\NP_U[VLROCOSGSpiyƒ›}y“ƒ›—¤¨ ³äæêùüúûüÿÿÿùÿÿùüÿþÿýÿüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþûüÿüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþûüÿûüÿÛÝá´®Á—‘›ž™¢¦šž““…Œ…Œ„~‡ƒ›ž™¢—“•wsupgfpgfw}~|ˆˆ’~|}p}ujpkbbkagkagodjˆx{ufibX]bX]hY\]Z\ulkxonxon‚ru}y{wsu‚ruufixmt}rx…ƒƒzy{loufikbbujpƒzyulkkagodjpgfkbbocprgmg_^dZ`ulkojsd\kodjXGQPADFAIOEKQHGQHGQHGVHJFFFBDD:?E=IFBDFAILBHLBHLBHC>FH8ALBHC>FI?ELBHI?EI?EI?EPADPADPADF@O?HOEKLBHF;FFIL@LO?HVHJXGQRLURKZKDSVLR\KU\KUOEKYMY}p}‡‚Ÿ™—«’£’£´®ÁÝÙäûüÿùüúüÿþÿÿùüÿþûüÿüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþÿÿùüÿþüÿþÿÿùüÿþüÿþÿÿùüÿþÿýÿÿýÿüÿþüÿþÛÝáµµ¿—‘›—‘›‘‡†Š…Žujp~x‘‹”‘‰™—‹‘}y{jenocpwp~|ŠŠviv}rx…ƒ‰€w}rgmd`b]XabSUkbbulkqmopgfxmt|srqmoulkkgiulkulkxonxmtxmt}rxxon‚rupgfpgfufiodjpgfxonujpkgikbbh]ckagxmtpgfrgm]XaSINI>II?EL@LOEKOEKOCOLBHLBHOEKOCOF;FLBHOEKC>FcWcëçéüÿþÿýÿüÿþüÿþÿýÿüÿþüÿþüÿþÿýÿÿýÿüÿþ¼ÆSGS\NPVJVFAIOEKFFB>@E=ILBHOEKLBHB>@C>FH8AI>IC>FI?EFFJEMLBHI>II>IFILBHO?HI>ILBHLBHLBHC>FD=LI?EOCOO?HQ>MO?HOCOI?ETDMTDMQHGOCOXGQQHGYMY\NPQHGSGSVJVXQ`wr{‡‚Ÿ™—«}y“„}ž™¢ÛÝáüÿþÿýÿûüÿûüÿÿÿùüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþÿýÿüÿþüÿþÿýÿüÿþüÿþûüÿÿýÿüÿþÿÿùüÿþüÿþÿÿùÿýÿçåñ´®Á˜Ÿ‘‰€…zŠ……z„~‡‘‹”’˜—‹‘…ƒulkujpww€Šˆˆ’’£Š…dZ`XTWbX]vivufikbbrgmb]frgm{jtufiwsuxonkbbufi‚p{ujpodjn`\pgfulkxonrgmpadrgm|srpgfufi{lovivkgiujpvivh]codjujpujp}rxpiybX]VLROEKOEKOEKRLUTDMPADLBH=?BQHGJEMFBD@;C£¥¨üÿþüÿþüÿþüÿþÿýÿûüÿüÿþÿÿùÿÿùûüÿüÿþúõøg_^VCRSGSVHJLBHFAILBHLBHLBHFID=LJEMOCOE=IO?HPADFIQ>MI>IOEKVHJXGQSINI>II?EO?HC>FJBAJBAC>FFAIFBDC>FJBALBHJEMTDMTDMTDMSINXGQVJVRLU\NP\NPXGQ_U[wp‹ƒ“’£†ƒ–†ƒ–´®ÁäæêÿÿùûüÿÿýÿüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþÿýÿüÿþûüÿáÝß­§¯‹ƒ“Š…Ž““““““—Œ‘‘‹”‘…ƒƒzyulkjenwr{}y“‹ƒ“wpkgibSU_S_kagrgmpadkagodjrgmpadulkulkufi{low}|srn`\pgf``hm]`ufipgfulkkagrgmrgmulkufiugz{loxmtojskgidZ`kag{lo‚p{…z}rxocp_S_RLUKHJWQZSINLBHJEMFAILBHOCOI?EKDSëçéüÿþÿýÿüÿþûüÿÿýÿüÿþÿÿùüÿþûüÿûüÿÿÿùž™¢OEKVLRJBAJBAI>IFFE=FO?HO?HO?HLBHLBH@;C@;CC>FF;FF@K=@H8AL@LL@LFMI?EO?HF;FL@LXGQTDMI?EFBDOEKLBHL@LOEKJ=NOCOXGQRKZVJVYOTVLRVCRVCRXGQcWc„}§ ¨‡‚Ÿ}y“ƒ›Â¼ÆóôúÿýÿüÿþüÿþüÿþüÿþÿÿùüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþÿýÿüÿþüÿþüÿþüÿþüÿþûüÿüÿþüÿþüÿþÛÝᣣ¯ˆˆ’ІˆŠ†ˆŠ†ˆ‚ru‚ruŠ……z…z…z|srxmtwr{ŠŠ…Ž~|~xqmoh]c{loodjkbb}y{kgih]cujprgmrgmxmtufi}rxufiodjulkviv}rx…zˆx{‚ruˆx{ujpkgiudnw}wsu|srˆx{ujpodjrgm]Z\m]`ufiqmowr{ocph[hhW`\NPSINLBHO?HO?HI?EFBDI?E}rxüÿþüÿþûüÿüÿþÿÿùûüÿüÿþÿýÿüÿþûüÿüÿþÝÙä\NPVLROEKFAIF;FK=@I?EC8DC>F@;CI?EF;FB>@B>@D:?C8DJ=NI?EJBA=?B=?BB>@C>FFBDF@<9;C>F@;CB>@D:?C8DJ8GFF@9GO?HF;FO?HF;FI?EI>IO?HO?HH8AI?EI?EI?EC>FI>IJEMI>II>IOEKTDMI?ESINOEKQ>MI>I@9GQ>MO?HOCOOEKSGSSGS\QWbSUYOTVLRXGQVLRe\q„z“‹ƒ“ƒ›}y“’£áÝßûüÿüÿþüÿþüÿþÿýÿüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþÿÿùüÿþüÿþüÿþó÷õËËΓ”ŸŠ…ŽŠ†ˆ„~‡‚‚p{Š……zw}Іˆ““‰€ulkujp~|‹ƒ“‘‰™~xrgmpadh]crgmkbbkbb}p}ulkujp{lo{jtkbbrgmw}ˆx{‚ruulkqmo‚p{{lo…z}rxƒzy…zƒzy}rx…z‚}rxxmtxmtkbbkgi}rxƒzyudnudnufiujpkctcUhKDSJBALBHKHJNIQC8Dwr{ùüúûüÿûüÿÿÿùÿýÿÿýÿÿÿùüÿþüÿþüÿþÿÿùw}I?EOEKB>@I>ILBHTDMOEKI?EJBAFFC>FC>FK=@H8AC>F@;CC8DI?EI?EC>FF@B>@I?EB>@C8DJ=NFFF@E=<<9;JBAI>IFIC>F<9;H8AF;FC>FFAII>IJ8GFFPADLBHOEKFAIO?HO?HOEKVHJPADOCOWJ\SGSOEKVJVXGQVJVVJVXGQVLROCOVJVviv†ƒ–~|‹‰œ’£¡ž³ÝÙäüÿþÿýÿÿýÿüÿþüÿþÿýÿüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþÿýÿüÿþüÿþüÿþÿýÿÿýÿóôúËËÎ’£„~‡…z‡†•…ˆƒzy}rx…z…Œ‚‡y…}y{ulksmvww€‡‚ŸŠ…Ž~xrgmpadulkxmtudnxmt{jt…z‚ru‚ru|srxmt|srulk‚ruxmt}rx{loulk…Œ…Œ‰€‰€Іˆ‰€‰€ƒzyw}…ƒ‡y…‚ruxmtw}pgfkagk_lodjo]gkagh]cRKZSGS\KUWNNWNNd`bÿýÿÿÿùûüÿÿÿùÿýÿüÿþüÿþÿÿùüÿþûüÿºµ¼E=FL@L@9GH8ALBHFAII?EO?HI?EF;FF;F@;CF;FD:?@;C<9;C8DK=@F;FH8ALBHC>FC8DLBHF;FK=@I?EO?HFBD=?BB>@C>FF;FJ8G@;CD:?K=@I?EC>FF@FFTDMJEMFBDC>FLBHOCOPADVJVTDMOCOVLR\NPbQZ\KUNIQ]XapiyŸ—¨¡ž³’£µµ¿ÿýÿÿÿùûüÿüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþäæêºµ¼”†“Š…ŽŠ…—Œˆx{ufixmtvivpiy…zxmtkbbpadpiyŠ…Ž‹‰œŠ…Ž}y{ojs}rxxonkgirgm}p}…zw}ujpufixonƒzyˆx{‚p{ƒzyƒzyІˆŠ…ƒzy‚•…ˆŠ†ˆƒzy~x…z…Œ…z‚ruufi{jt‰€|sr}p}rgmulkfajhY\_S_^Veh[hcWc\QWRLUFBD§ ¨ûüÿÿýÿüÿþûüÿÿÿùÿýÿüÿþûüÿëçéVLRFFFFFAIF;FI?EI?EQHGFAIC>F=?BFBDFBDI?E@;CJ8GB>@JBAB>@<9;O?HD:?C8DFFFAII?EJBAFBDI?EC8DI>IC>FI?ELBHF;FJ8GI?EB>@F@C8DF;FI?EC>FLBHO?HLBHOEKLBHOCOVLR_S_FAIF;FFMOCOSINL@LTDM\NPbQZWQZWQZbQZSGS\QWocp„z“´®Áîìøüÿþüÿþüÿþÿýÿüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþûüÿüÿþüÿþäæê­­¸ˆˆ’}y{‡y…‚xmtwr{}y{ojsviv}p}xmtpgfojs‡y…Š˜Ÿˆˆ’}y{ulkkgi{loƒzy‚ru{lopgfujpvivujp}rxƒzy…z‚…zƒzyˆx{Іˆ…z‚ru‰€•…ˆ…Œsmv{loxmtkagkgixmtw}‚ruxmt|srwr{vivhW`_U[RLUcWch[h_S_SGSSIN§ ¨ó÷õüÿþüÿþüÿþüÿþüÿþúõø~xF@C>FFFI?E@;CFF=?BE=II?EF;FE=FLBHFAIFAIJBAD:?E=@PADI?EE=IK=@O?HSINXGQO?HJ=NJ8GFBDB>@LBHLBHJEMOEKO?HPADL@LTDML@LOCOYOTSIN\NP\KUbQZ\QW\P\_S_ÃÂÅüÿþüÿþüÿþÿýÿÿýÿüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþÿÿùÿýÿüÿþüÿþÛÝá­§¯‹ƒ“„~‡…Œ‰€‰€ˆx{ujpŠ…‘‹”’˜Š…ujpwr{‹ƒ“ˆˆ’ˆˆ’†ƒ–…z‚p{…z‚rukbbrgmujp}rx|srƒzy‚ruƒzyƒzy|sr…ƒŠ…‰€‚ru‡†““•…ˆw}}rxˆx{w}ujpwr{xmtxmt}rx{loˆx{~x‚rum]`bX]bX]]TTbX]^Ve^Ve_U[VLRwsu´®·ÒÒÖëçéëçéÃÂÅsmvF;FFAIJEMLBHF;FC8DE=@E=F@;CC>FFAIC>FF@@;CC8DD:?FBDFBDLBHI?EC8DD=LI>II>II>IFFF;FF;FJBAPADLBHC>FFMO?HXGQVLRSINXGQ\KUhW`o]gd\k—ŒùüúÿýÿüÿþüÿþÿýÿûüÿÿÿùüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþÿÿùüÿþüÿþüÿþÿýÿüÿþüÿþüÿþüÿþüÿþÒÒÖ§ ¨—“•…Œ}rx}p}ujpwsu…z„~‡Š…Ž„~‡wr{rgmujp„~‡ˆˆ’ˆˆ’…Œ~x}y{kagulk‚ru|sr‚ruxmt‚ru~xƒzy•…ˆˆx{xon‚ru““““‚‚p{ˆx{}y{w}}rxw}xmtxonqmo|srw}}p}}rx}y{ojs_U[c[ZbX]WQZ\QWdZ`k_lk_lVJVFAIbX]]Z\]XaOEK@;CKHJLBHB>@FFF@FFE=I@;C@;CI>IC>F@;CFFB>@FFC>FLBHI?E@9G@;CC8DI?EFFO?HFF@;CC>FLBHPADB>@Q>MO?HJEMI?ELBHK=@LBHLBHOCOD=LLBHOEKOEKNIQNIQOEKNIQ_U[hW`ujpäæêÿýÿÿÿùûüÿüÿþÿÿùüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþÿýÿüÿþÿýÿüÿþüÿþüÿþüÿþÿýÿüÿþüÿþùüúÒÒÖŸ—¨~w†~xƒzyˆx{…z…zŠ…„~‡‡y……ƒ}y{{losmv„~‡ˆˆ’“”Ÿ”†“‡y…Š…ˆx{—‹‘‚wsuˆx{—‹‘‡†…Œ}rx|srŠ…Ž¦šž•…ˆˆx{ƒzy…z}y{‡y……zŠ…‚ruxonujpulk}rxujp{loujp}p}vivulkkbbVLRPNQXTWRLUb]focpcWc\NPVHJSINVHJLBHFBDI>ILBHF;F@;CI?EB>@F@C>FF;FF;FC>F@;CO?HVHJOEKC>FFFC>FF;FI?E@;C<9;C8DFFD:?E=<@;CC>FF;FC>F=?BJBAPADFFC>FC8DK=@F;FQ>MH8A@9GF;FC8DO?HFIL@L=?BFIFIO?HF;FI?EFFE=<@;C@;CC8D<9;<9;D=LFAIB>@C>FB>@C8D@;CF;FFFD=LFFB>@@;C@;C@;C<9;E=FE=FJBAOCOJ=NL@LPADPADI>IXGQSINNIQOCO\JYRLUˆˆ’úõøüÿþüÿþüÿþÿýÿüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþÿýÿÿÿùÿýÿîîòÍÊÕ­§¯wr{‚ru…Œ’˜¦šž—‹‘—‹‘Š…ŽŠ…Žwr{qmowsu~w†‹ƒ“˜Ÿž™¢—‹‘‚•…ˆ‰€ƒzy•…ˆ•…ˆ•…ˆ…z‡†‚‡†‰€‚ƒzy…ƒŠ…‚w}{loxmtwsuodjkgirgmpgfqmoqmosmvwsusmvulkh]c\P\bX]XTWXTWJEMD=LZT]WSjYMYVHJI?EFF@;C<9;@;CF@FFC8DF;FI?EB>@FIE=IF;FI?EC>FFFD=LOEKSGSVJVTDM\NPdZ`ÛÝáüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþÿÿùüÿþÿýÿÿÿùÿýÿüÿþîîò¿¾Ë—‘›…ƒ…Œ…Œ““™œ¦šž““Іˆ…z…zxmt}p}~x“”Ÿ™—«—‘›‘‡†‚…z‡†…ƒƒzy‚‡†…Œ…Œ•…ˆ…Œ…Œ‰€‚p{ˆx{{jtpadm]`pgfrgm{jtujppgfxmt|sr}rxujpudncWcojsvivbQZVHJVLRPNQ@;CSINcWccUhVJVC>FD:?J=ND:?@;CLBHKHJFBDD:?@9G@;CD:??6:C8DF@C>FFFF;FO?HC>FC8DH8AD:?H8AK=@FF@;C@;C?6:D:?C8DD=L@9GD:?F@FFI>ID=LI>IC>FL@LO?HD=LFAILBHLBHI?EFAID=LOEK\P\VJV­§¯ÿýÿüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþÿýÿüÿþüÿþÿýÿüÿþÿýÿÿýÿëç麵¼‘ƒzy‰€““¦šž—‹‘™œ¦šž¦šž““‰€wr{~x„}ˆˆ’‹‰œ‘‹”Іˆ‰€|srwsu}rxŠ…‚…Œwsuwsu…z‚ruˆx{‚wsurgmrgmkagufirgmkbbpgfufiufiwsuxon{lorgmd`bd`bh[hcWcufi]XaRLUVHJQHGOEK]Z\jen]XaYOTKDSE=FFAI=?B@;CFAII?EC>F@;C=?BB>@B>@E=FB>@I?EI?EC8DK=@B>@B>@I?EI?ED:?@;CC>FNIQC>FI?E@;C@;CD:?C8DK=@@9GC8DD:?D:?E=<<9;@;CC8D@;CD:?C>FF;FI?EC>FC>FC8DC8D<9;FF<9;C>F@;C<9;@;CC>FF;FO?HI>II?EJBATDMLBHD=LC>FJEMFAIOCOKDSNIQRLUXQ`~xùüúüÿþÿýÿüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþÿýÿÝÙä­­¸‘‘Š…¦šž¦šž™œ­§¯Ÿ—¨”†“Š…~x~xsmvŠ’§˜Ÿ…Œ•…ˆ‚ruƒzywsu‡y…ˆx{ˆx{ˆx{…zƒzy•…ˆŠ…ˆx{wsuulkpadpad{loujpujpufik_ludnocp‡y…rgmh[hdZ`]Z\ulkrgmh]cbSU\KUSINVLR]XaodjcWcugzhY\JEM@9GB>@C>FI?EC>FE=@@;C@;C@;CC8DC>F@;CFIO?H@;CB>@B>@@;C@;CO?HE=F@;CF;FFIL@LTDMI>IL@LOCOOCOXGQTDM\KUdZ`ÒÒÖÿýÿüÿþûüÿüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþûüÿÿýÿüÿþÿÿùÍÊÕŸ—¨Š…ŽŠ…Ž}y{¦šž¦šž¦šž¦šž¦šžž™¢…Œwr{qmoojsŠˆˆ’“”Ÿ‘‹”…Œ…ƒˆx{|srwsuw}…z‰€|sr|srƒzyƒzyxonulk{lorgmodj{loufiujpujpjenujpkbbkgivivkagpgfh[hk_lrgmh]cSINOEKVLRXQ`cWcbX]fajd\kRLUFAI<9;K=@<9;C>F@;CC>FI?EK=@E=@@;C?6:D:?@;CC>FE=<@;CI?EC8DC8DF;FF;F@;CD:?C8DD:?C8DC8DC8D@;CK=@H8A@;C@;CH8AH8AF;F=?BK=@C8D@;C@;C<9;B>@F@C8DL@LL@LI>ILBHOCOD=LI>ILBHPADSINVJVRKZ£¥¨ÿýÿÿýÿüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþÿÿùûüÿüÿþÿýÿüÿþó÷õÍÊÕ“”Ÿ…Œ‰€Š……Œ¦šž§ ¨’˜’˜—Œ~xwsuwsuww€ˆˆ’“”Ÿ‘‰™”†“„~‡|srqmoxmtƒzy|srxon}rx{loxmt‚p{vivodjufiufidZ`kbbrgmrgmg_^kagujprgmufiodjo]gpgfd`bd\kh[h]Z\WNNOCO\NP\QW\KUWNNWNN\P\dZ`RKZKDSF@F@E=<@;C@;C?6:B>@C8DE=<<9;D:?F;F@;C<9;=?BD=L@9G@9G@;CD:?@;CD:?H8A=?BD:?<9;@;CJ=NC8DD:?=?BF;FD:?FFD=LFFFF@9GI?EC8DI>ILBHLBHFAIFAII?EC>FC>FF;FI>IL@LL@LKDSKDSSGSwr{úõøüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþÿýÿüÿþüÿþüÿþüÿþüÿþîîòÒÒÖ£¥¨Š}rx‚’˜’˜““‘‹”Ÿ—¨‘‰™~xujprgmwr{„}’§ˆˆ’Іˆ}y{}rx|sr}rxw}w}‚ru}rxxmt|sr|srƒzyulkkbbkgijenm]`h]c}p}ufiufiufixmtufikagrgmujpudncWccWc]XabSUSGSPCVVLRXGQOCOOEKSGS_S__S_OEKD:?B>@C>FFIB>@F;FC8DC8DC8DI?E@9GI>IF;FC>FI?ELBHD=LC8DFFC>FF;FL@LF;FI?ELBHQ>MO?HJEMTDMXGQZT]ÒÒÖüÿþüÿþüÿþüÿþüÿþÿýÿüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþÿýÿó÷õËËΣ¥¨„~‡}rx‰€—Œ—Œž™¢ž™¢”†“…Œw}}p}ocpwp†ƒ–’£ˆˆ’‰€}y{‰€ˆx{ulk{loˆx{w}smvulk‚rujenodjxon{lokbbn`\kgijenk_lpadpado]gufiujpkbbd`bh[hbX]padcWcWQZ_U[OCOFAIVLRYOTJBAQHG_U[d\kVLRFBDE=<<9;D:?@;CC>FFF@9G@;C?6:D:?D:?@;CD:?O?HC8DD:?K=@E=<<9;FF=?BC8DD:?<9;<9;D=LI?E@;CK=@K=@@;C@;CC8D@9GC>FB>@FIL@LC8D@;CF;FI?EFMI>IL@LI>ILBHOEKKDSNIQ­§¯üÿþÿýÿüÿþÿýÿüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþûüÿüÿþüÿþúõø¿¾Ëž™¢‘ww€…z…Œ’˜¦šž’˜˜Ÿ”†“}rxojsojswr{ˆˆ’“”Ÿ’§—“•…zw}ˆx{w}wp~x|sr{lokbbkgixmtudnkagrgmkgixonqmoodjpgfvivrgmkagkgiudnk_lbX]\QW\P\\NPVLRVLRPNQSINPNQPNQKHJE=@FFB>@@;CC8DK=@I>IF@FFB>@I?EFFE=ID=LI>IL@LQ>MXGQTDMI>II?EI>ID=LF;FLBHTDMTDMKDSXGQËËÎüÿþÿýÿüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþÿýÿûüÿüÿþüÿþüÿþûüÿçåñµµ¿‘‹”…z‡y…‚…Œ—‹‘’˜”†“‡y…‡y…wpjen``hww€‹‰œ’§ˆˆ’Š…Ž…z|sr}rxsmvxmtw}ujpodjodjodjqmod`bpgfulkkagodjm]`udnrgmkgiqmofajc[ZXTWXTWRLU]TTSINYMY\P\\QWVLRSGSWQZSINL@LOCOocpvivkagKDSLBHSIND=LC>FC8D<9;F@@;CH8A<9;@9GF;FQ>MO?HC8DF;FD=L@;CFID=LL@LO?HL@LC>FFAII>IC>FJEMOCOOCOSGSOCOŠ…Žüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþÿÿùüÿþüÿþÿÿùÿýÿäæêµµ¿‘‹”…zw}~x”†“‹ƒ“”†“—‘›‘‹”‡y…{jto]gjen~|‹‰œ˜ŸŠ…މ€|sr|srƒzywsu}rxufipadhY\h]crgmd`bkagkbbpadk_ljen]Xakgijend`bb]f]Xa]XaXTWNIQSINVHJQHGZT]\QWbQZRKZKDSKDSXQ`C>FFAI^Vek_l^VeJEMFFC8DF;FJ8GC8DC8DF@E=FO?HC8DF;FC8DC>FLBHQ>MO?HFFWSjpiydZ`L@LK=@C8D@9GC8DC>F@9GD:?E=FFIH8A=?B@;C@9GH8AO?HD=LFAIC>FD=LL@LOCOTDMOCOFAIC>FSGSOCOVJVJEMPCVXGQSGSSGS´®·ÿýÿüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþûüÿüÿþüÿþüÿþÿýÿüÿþüÿþüÿþüÿþûüÿüÿþüÿþóôúÒÒÖ£¥¨„~‡…z{low}‡y…”†“‘‰™˜Ÿ„~‡~w†…zocppiy‹‰œ’§‹‰œŠ…Ž‚{lopgfodjk_locpodjd`bh]cbX]h]cb]fkagodjk_lh]cZT]WNN_S_^Ve_U[\QWYOTRKZRLUYOTNIQKHJPNQOCOLBHOEKWJ\RKZYMYVJV]Xa``hkctpbuVLRF;FD:?D:?D:?D:?C8DF;FC8DB>@@9GH8AC8DH8A?6:FFC>FK=@C>FH8AF;FF;FO?HC>FFAII>IO?HI>IKDSJ=NPCVTDMTDMLBHFAIJEMRLUSGSJEMKDSOCO~xúõøüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþÿýÿÿýÿüÿþüÿþüÿþüÿþüÿþûüÿÿÿùÿýÿüÿþüÿþîîòÍÊÕ£¥¨…ƒ…z{jt}p}~x‘‹”Š…Ž”†“…Œ”†“rgmk_l}p}‘‰™’§ž™¢‘wr{rgmufio]go]godjh[ho]gdZ`_U[m]`kagkagdZ`h[h_S_cWcbQZhW`cWcNIQWQZWQZ^VecWcSGSVLRVHJVHJRLUKHJSINJEMRLUSGS\QWKDSKDSh[hqh_S_FII?EF;FC8D@;C@9G@;CFFB>@@9GF;F@;CC8DD=LJ=NLBHD=LL@L@9GF;FD=LFAIFAIKDSL@LKDSJEMFAIF;FLBHL@LJEMVJV_S_ÒÒÖüÿþÿýÿüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþÿýÿüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþîîòÍÊÕ“”ŸŠ…Žqmowsuƒzy‡y……zŠ…Žˆˆ’‘‹”ƒzyh]cb]fww€†ƒ–“”Ÿ‘‰™…z{jt}rxodjd\kkagkagpgfhY\bX]kagk_lkct``h]Z\]Z\XTWZT]]Z\\QW\QW\QW\QW_S_NIQRLURKZ\JYVLRVLRZT]_U[SIN]XaOCOSINSGSKDS\P\ojskctRLUD:?@9GI>IF;FF;FD=LD=LD=LH8AH8AJ8GC8DC>F@;C@9GC8DF@@9GC>FF;FI>IF;FL@LOCOC>FF;FC>FD=LI>I@9GL@LKDSSGSD=LFIFAIL@LOCOPCVKDSKDSOEKSGSOCO£¥¨üÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþÿýÿäæê¼Ɠ”Ÿ~xojsxmt}p}…z„~‡Š…‘‹”~xjenkagkct~|‹‰œ™—«‹ƒ“wr{vivojsd`bhY\udnh]cdZ`dZ`k_lfajg_^h]cZT]k_lh[h]TT_S_ZT]VLRWNNOCOSGSWNN_S_\P\PNQ\QWXQ`ZT]\QWdQaVJVFAIKDSPNQ_S_RKZRLUkct^VeFBDD:?D=LFFFAII?EC>FD=LC8DO?HF;FH8AF;FD:?F;FD=L@9GI?EH8AI>IL@LOCOJEMD=LD=LKDS@9GWQZž™¢ÃÂÅÛÝáÒÒÖ£¥¨}rxPCVPCVPCVKDSL@LOCOWJ\PCVSGSwr{óôúÿýÿüÿþÿýÿüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþÿÿùüÿþüÿþäæêµµ¿—‹‘wp{loviv}rxw}}p}}p}xmtwpƒzyjenkctŠ’§“”Ÿˆˆ’wprgmh]ch]ch[ho]ghW`bX]c[Z]Xa_U[\QWXQ`_S__U[RLU_U[XQ`RKZWQZYMYNIQYMYYMYRKZRKZVLRbX]^VeYMY_S_KHJQHGOEKTDMKHJFBDJEMkagwr{]ObOCOB>@D:?C8DC>FO?H@;CFBD=?BI>IC>FC>FKDS@;CC>FC>FF;FJ=NC>FO?HJ=ND=LKDSPCVD=LwpëçéüÿþÿýÿüÿþüÿþÿýÿóôúÃÂÅojsF;FI?EJ=NL@LI>IPCVYPfËËÎÿÿùüÿþÿýÿüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþÿÿùüÿþÿýÿüÿþüÿþùüúëçé´®Á‘‹”}rx‚p{{jt}p}…z…z‡y…‘‹”~xxmtojspiy~|™—«’£Šsmvh]ccWcb]fh]ccWc]Xah]ch[hWQZXTWbX]c[ZWQZ_U[bX]h[h\P\YMYRKZVJVNIQSINZT]YMY^VeRKZVLRRLUNIQSGSKDSI?EKHJ_S_\KUVJVXQ`kctojsYMYI>I@;C<9;FFI?ELBHFAIRKZD=LFFQ>MI>II>IQ>MJ=N``häæêüÿþÿýÿüÿþüÿþüÿþüÿþÿýÿüÿþóôú­§¯YPfRI^WJ\~w†Ÿ—¨ÃÂÅüÿþüÿþûüÿÿýÿÿÿùüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþûüÿüÿþüÿþüÿþüÿþüÿþûüÿùüúÝÙä´®Á‘‹”~xxonxonxmt~xw}‡y……ƒ~xsmvh]cpiy‹ƒ“’§’§‡y…jend`bh]chW`h]cdZ`faj_U[ZT]bX]ZT]XTW]XaVLRhW`hY\_U[cWc\P\RLUWQZ_S__U[\P\bQZ_U[WQZWQZZT]YMYVJVOCOKDSKDSRI^KDSRLU]Xaocpjen]TTI>IC8DC>F@9G@;CF;FOEKC>F@9GD=LJEMI>IQ>ML@LL@LC>FRKZKDSJ=N@9Gµµ¿üÿþüÿþÿÿùûüÿÿýÿÿýÿÿýÿÿÿùüÿþÿÿùÿýÿáÝß¼ÆÛÝáüÿþüÿþÿÿùÿýÿüÿþÿýÿÿýÿüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþÿýÿÿýÿÿÿùÿýÿùüúÒÒÖ­§¯Š…Žƒzyw}„}‡y…„~‡…ƒ~x„~‡}rxkcto]g~w†ˆˆ’’§ˆˆ’~x``h]Z\d`bg_^]XaYMYZT]_S_WQZ_U[]XaXTWWQZPNQXTWZT]YMYXTWcWcZT]XTWRLUbSUbX]ZT]_S_\KUYMY\KUVJVWJ\YMYL@LI?ESGSNIQKDSXQ`vivpiyYMYI?E<9;@;CD=L@9G@9GOCOO?HO?HI>II>IPCVKDSD=LKDSL@LJ8G`]pó÷õÿýÿüÿþüÿþÿýÿüÿþüÿþüÿþüÿþÿýÿÿýÿÿýÿüÿþüÿþüÿþüÿþüÿþÿýÿÿýÿüÿþüÿþÿÿùüÿþÿýÿüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþÿýÿüÿþüÿþüÿþÿýÿüÿþüÿþÿýÿóôúËËΡž³Š…Ž„~‡‡y……z…z~x‡y…‡y…‡y…piykgikag„~‡’£¡ž³ƒ›ww€jenb]fkbbh]chY\_U[bX]XTWZT]]XaRLU^Ve^Ve\QW_U[]XaXTWhW`dZ`WQZRKZ]Xa]XadZ`YPfhW`_U[_S__S_`]pcUhPCVJEMVLR_U[VLRRLUkct}p}ocpRKZC>FFMI>IOCOVHJL@LOCOLBHOCOPCVJ8GŠ…ŽÿýÿüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþÿýÿüÿþÿýÿÿýÿÿÿùÿýÿÿÿùüÿþÿýÿüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþÿýÿüÿþüÿþîîòÃÂÅ™—«Š…ƒzy}rx…zŠ…Š…„~‡w}wsusmvqmojen~|™—«“”Ÿ‡‚Ÿpiyfaj^VedZ`]Xab]fZT]XQ`YMYWQZZT]_S__U[_U[_S_bSU]ObZT]]Xa^Ved\kXQ`cWcXQ`^Veb]fh]ch[h\P\bQZdQaYMYYMYKDSRKZ]XaYMY\QWwpŠ…Žk_lXGQI>IF;FD=LL@LD=LKDSNIQXQ`SGSSGSVLRPCVJ8G—“•ÿýÿüÿþÿÿùÿýÿüÿþüÿþÿýÿüÿþÿýÿÿýÿüÿþüÿþüÿþûüÿüÿþüÿþüÿþüÿþÿýÿüÿþÿýÿüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþÿýÿüÿþüÿþüÿþÿýÿüÿþüÿþüÿþüÿþÿýÿäæê¿¾Ë¨ ³—‹‘}rx}rx}y{}rxxmtwp}p}vivfajh]ch[h~|’§“”ŸŠjen^VebX]ZT]_S_kagc[Z]XaXTWYMYZT]d\kcWcd\k]TTZT]_S__S_XQ`]XabX]]ObdQa^Ve`]p]Xa^Ve_S_PNQPNQRKZWQZNIQOCOKDSRKZcWch[hojs~w†fajXTWI?EF;FL@LLBHRI^RKZRLUNIQKDSVLROEK…ƒüÿþÿÿùÿýÿÿÿùÿýÿüÿþüÿþÿýÿüÿþüÿþüÿþÿýÿüÿþÿÿùûüÿüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþÿýÿëçéÃÂÅ“”ŸŠ…Žwsu}rxƒzy‡y…}rx}rx~w†„~‡}p}]Xak_lŠ’§’§Šsmvb]fo]gcWcd\k]Xa]TTXQ`]XaZT]ZT]dZ`]Xa]XaVLRYMYhW`_U[XQ`XQ`cWcXQ`cWcYMYcWcbX]WQZ_U[VJVWQZ]XaXQ`RKZRKZVJVXQ`NIQYOTk_l”†“kctVCRO?HOCORI^JEMRLUXQ`VJVVLRRKZRI^¿¾Ëÿýÿÿýÿüÿþÿýÿüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþÿýÿëçéµµ¿Ÿ—¨Š…Ž~xqmo}rxw}w}}p}wr{viv``hh]cjenŠ™—«’§†ƒ–piyh[hocpfaj^VecWcb]fZT]\QWRKZ_S__S_^VeRKZXQ`^VebQZbX]cUh_S__S_WJ\YPfYPf_S_XQ`\QW]ObcWc]Xa]XacWcYMYSGSXQ`KDSOEKe\q}p}~|dZ`JEMSGSYMY\JYRI^XQ`]Ob]Ob\KUh]cËËÎÿÿùÿÿùüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþÿýÿüÿþüÿþüÿþüÿþëç麵¼“”Ÿ…ƒ|srsmvocpojswr{}p}xmtpgfkagd\kpiy‹‰œ££¯™—«Špiyd\kh[hZT]b]fkct_S_cWccWcXQ`NIQYMYcWcbX]_S_ZT]_S_WQZXQ`^VeXQ`d\kbQZ\QW_U[h]c_U[XQ`\P\WQZRLURKZYPfXQ`RKZYPf^Ved\k~xwr{_U[JEMOCORKZ\P\]Ob_S__S_WJ\RKZ§ ¨îîòüÿþüÿþÿÿùûüÿüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþÿýÿÿýÿüÿþüÿþûüÿáÝß´®Á†ƒ–rgmjenodjrgmw}piypiywpojsjencWcqh’£±«È™—«~w†jenh[hk_lujpb]fb]fb]f]XaSGS\P\\QWWSjZT]^VeXQ`\P\_S_cWc\P\_S_ZT]ZT]XQ`XQ`b]fcWcb]fh[he\qcWccWccWc\KUYPf``h`]p``h`]p‹ƒ“}p}_U[VLRRKZ\P\VJVYPfYPfRI^PCVd\k´®·úõøûüÿüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþÿÿùüÿþüÿþüÿþüÿþûüÿÿýÿüÿþûüÿÝÙä´®·‹ƒ“smvsmvxmtxmtwsuvivvivw}piy^VecWcwp’£¨ ³’£†ƒ–wp]Xa^Ve]Xa``h^VecWc]XaXQ`^VecWcXQ`WJ\VLRXTWbX]YPf\P\]XaXQ`_S_\QWbX]h[hb]f`]p^VehW`^Ve^Vee\qcUhSIN`]ppiyi[nfaj‹ƒ“„}wr{XTWXGQVJV]Ob\JYdQadQaYPfKDSsmvÛÝáÿÿùüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþûüÿÿÿùÿÿùüÿþüÿþÿÿùüÿþüÿþüÿþÿÿùûüÿÛÝᣣ¯ww€ojsujp}rxxmt‚p{ugzojsfajjenh[hk_lwn…™—«±«È™—«wpb]f\P\bQZdQa_S_cUhcWccWc_S_cWcYMYRLUWQZXQ`\P\RKZd\kd\kcWci[nYPfXQ`cWc]Z\b]f]Xa\QWi[nfaj^Vei[ncWcYMYe\qpbuZT]\QW‡y…”†“{lo\KUVLR]ObWJ\WJ\YMYRI^RI^~xüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþÿýÿûüÿÿýÿüÿþÿýÿüÿþüÿþüÿþüÿþüÿþóôúÍÊÕŸ—¨wpvivvivwpwpxmtxmtpiyk_lh]ch[hb]f„z“¡ž³¡¢¿{|—piycUhRI^WQZ^Vee\q^Ve^VeWQZJEMRKZ]Ob\JY\P\RKZ]Obh[hkct}p}d\k`]pcWc_S_cUh]ObcWcd\ke\qcUhh[hh[hXQ`RKZ\JY^Vei[ne\q~|¨ ³˜Ÿ~w†RKZWJ\WJ\RKZYPf]ObYPfçåñüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþÿýÿüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþîîòÍÊÕ££¯wr{odj}rxwpvivodjpbuqhfajkbbh[hocp‡‚Ÿ±ªÓ˜Œ¹{|—piy]XaWQZZT]^Ved\kd\k^VecWc\P\WQZhW`hW`ZT]e\qcWc]Xa^Ve]Xa^Veo]gh[hcWcb]f^Vekagocpocpe\qcWckag_U[^VecUhcUhd\kqhŽ¥½·Éºµ¼XQ`RKZ\P\]ObRI^RKZÃÂÅüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþîîò¿¾Ë’£~|piyojsjenkagh[hvivpbukctb]fWSjqh—²±ªÓ¢›Ã{|—qhcUhXQ```hpiy`]ppiyk_lcWci[nYPfZT]YPf_U[b]fk_lh[h]Xah[hcUhd\ke\qvivkcte\qkctk_lcWc^Ved\kWSj`]pXQ`WJ\RI^RKZoiеµ¿’˜\JYRKZYPfYPfJD`“”Ÿÿýÿüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþÿýÿçåñ¿¾Ë“”Ÿww€piyocpjenk_lfajfajqhh[hZT]b]fsg†˜Œ¹°¨Ü¢›Ã{|—d\k_S_fajocpkctqhqhh[hbQZ`]p``hi[n^Vee\qh[hd\kXQ`e\qocpfaje\qocpe\qpbupbu}oƒk_l^Ve]XaRKZ^VeYPfVJVZT]d\koiŠ¡ž³YPfYPfRKZ]Ob]Ob¿¾Ëüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþûüÿüÿþüÿþûüÿçåñ½·É‘‰™wpjenb]fjenh[hocph[hpiysmvi[ne\q}y“–‰À°¨Ü±ªÓ‡‚Ÿwn…d\k`]ppbuviv}oƒk_lk_lk_locppiypiyjenkcti[ni[nocppiyqhd\kd\kvivugzugzodj`]p^Ve^VeWQZ^Veocpi[nYPfWSjt‹~|XQ`WJ\RI^~|ùüúüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþÿÿùÿýÿüÿþüÿþüÿþûüÿçåñ´®Á‹‰œwpkctocpjenb]fd\kvivkgik_lh[h`]p}y“¢›Ãȼ¿ƒ›kcte\qpbuocppiywn…smvd\kd\kpbukctpiywpqhocpocpwpvivugzugzugzocpi[nxmtpbucUhYPfRLUkage\qk_ld\k^Ve£¥¨cUhWJ\]ObÒÒÖüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþÿýÿüÿþüÿþüÿþüÿþûüÿóôúÝÙ䱫ȋƒ“vivojsfajb]fhW`^VecUh]Xa``hfajqh‰}«½¶Ü×Îù±«È„z“}oƒugzpiyt‹}oƒwpwpwn…piy`]pwpwn…}oƒugzugzvivwn…ugzpbuugzpbupbut‹kctWJ\XQ`^VeYPfXQ`YPfPCV…ƒ‡y…PCV´®ÁüÿþÿýÿüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþÿÿùüÿþüÿþÿýÿÿýÿüÿþüÿþüÿþüÿþüÿþÿÿùÏÊ㢛Äz“piypbud\ko]gk_l_S_XQ`cUhh[hpbusg†—²×ÎùÝÖø½·ÉŽ¥~|pbuqh}oƒ‡y…‡y…qh`]ppiywpwpwn…ugzqh}oƒugzk_le\qwn…e\qi[nh[hKDSVJVRKZYPf]Ob]ObYPf`Y~q“ƒ›ÿÿùüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþûüÿüÿþüÿþüÿþÿÿùÿýÿÿýÿüÿþüÿþÿýÿÿýÿîìøÏÊã—²„z“smvrgm}p}}p}ojsbX]kctZT]^Vepbu}oƒ¢›ÃÚÖïìåþ½·Éƒ›wpwp}p}}oƒwn…}p}piywpqhugzkctwn…ugzvive\qkctpbub]f_S__S_SGSQ>MVCR]ObJD`YPfYPfYPf™—«îîòüÿþüÿþÿýÿüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþÿýÿüÿþüÿþûüÿüÿþüÿþÿýÿÿýÿüÿþûüÿüÿþûüÿçåñ±«È˜Œ¹{|—}oƒqhwppiy‡y…kct_U[h[hpiyugzŽ¥±«Èìåþìåþ±«È’£ƒ›wn…~w†wn…~w†„}‡y…wn…wn…}oƒpiyi[nvivi[n]ObVCRcUhYPfD=LKDSRKZPCV]Ob`Y~e\qRI^±«ÈüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþûüÿüÿþüÿþÿýÿüÿþÿÿùóôúÚÖﱪӗ²}y“wn…}p}‡y…vivo]gcWcdZ`hW`yh„}oƒ™—«ÏÊãìåþëçé´®Áƒ›‡y…„z“”†“q“q“sg†t‹„z“wn…`]ppiyi\yWSjYPfi\yWJ\J=NJ=NWJ\cUhe\q`Y~i\ykZƒ±«ÈüÿþûüÿÿýÿüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþÿÿùûüÿüÿþÿÿùûüÿüÿþûüÿÿýÿóôúÚÖﱪӢ›Ã}y“wr{wr{wpo]gbX]XTWZT]d\k}oƒ„z“¨ ³×ÎùìåþÝÙä´®ÁŽ¥‡y…t‹}oƒwn…wp~w†wn…yh„i\y]ObWJ\pbupbuXQ`D=LYPfi\y`Y~`Y~i\ysg†nd½·ÉûüÿÿÿùüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþÿýÿüÿþüÿþÿýÿüÿþüÿþÿÿùüÿþÿýÿúõøÚÖï½¶Ü¢›Ã‡‚Ÿt‹}p}kct]XabQZbQZ]Obpbut‹„z“™—«ÏÊãìåþÚÖﺵ¼Ž¥t‹}oƒugz„z“}y“sg†WSjD=LYPfqhsg†i\yYPfpiyi\yi\yyh„rb‹sg†oiŠÝÙäûüÿüÿþÿýÿüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþÿÿùûüÿüÿþüÿþÿýÿÿýÿüÿþÿÿùÿÿùÿýÿÿÿùúõøÚÖﰨܢ›Ã’£t‹vivvivkct_S_XQ`]Xafaj}p}‡‚Ÿ±«ÈÝÖøìåþÝÙ䨠³q“i\ysg†i\yRI^JD``]pq“wn…wn…i\y`]psg†sg†rb‹rb‹kZƒ`Y~‰}«óôúüÿþûüÿüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþÿýÿÿýÿüÿþüÿþüÿþüÿþûüÿüÿþûüÿÿýÿÿýÿüÿþûüÿüÿþöóþÚÖﻱ墛áž³q“ƒ›}p}qhcWch[hd\kwn…}oƒ„z“¨ ³ÚÖïìåþÚÖï—²`Y~JD`e\qoiŠ„z“„z“wn…t‹wn…i\ykZƒoiŠoiŠoiŠi\y`Y~±«ÈûüÿÿÿùûüÿÿÿùüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþûüÿÿýÿüÿþÿÿùüÿþüÿþüÿþÿÿùüÿþüÿþÿýÿüÿþÿÿùüÿþüÿþöóþÌÆê»±å±«È™—«ƒ›‡y…{jtk_lo]gocpqhvivwn…—¤½¶ÜÝÖøìåþÝÙä—¤ƒ›Ž¥Ž¥q“oiŠq“sg†oiŠq“kZƒndndnd}nœîîòÿÿùüÿþüÿþÿýÿüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþÿýÿüÿþüÿþüÿþüÿþÿýÿüÿþüÿþÿýÿûüÿüÿþüÿþüÿþîìøÌÆê±ªÓ±«ÈŸ—¨~w†wp‡y…yh„yh„rgme\qcUhq“Ž¥±ªÓÝÖøÝÖøÏÊ㘌¹q“q“„z“Ž¥sg†i\yyh„g[Œndg[Œmc—ÏÊãÿÿùüÿþÿýÿüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþÿýÿüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþÿýÿüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþûüÿüÿþìåþÌÆê½¶Ü±ªÓ’§}y“~w†vivviv\JY\JYYMYe\qƒ›˜Œ¹°¨Üȼïìåþ¨ ³Ž¥‰}«Ž¥‰}«}nœi\yrb‹ndmc——²üÿþüÿþüÿþÿýÿüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþûüÿÿÿùÿÿùüÿþÚÖïȼïÌÆê´®Á‹‰œwn…wn…ugzo]gXQ`XQ`ocpq“Ž¥˜Œ¹°¨ÜÝÖøÚÖï½¶Ü|¶‰}«‰}«sg†ndmc—‰}«ëçéÿÿùÿýÿÿÿùüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþûüÿüÿþüÿþÿýÿûüÿüÿþüÿþûüÿÚÖïȼカܱ«È—¤Ž¥wn…o]gdQapbui\ycUhugz„z“–‰À»±åÝÖøÚÖï ”Ò–‰Àuq¯ul·ul·ÚÖïÿýÿÿýÿüÿþÿýÿüÿþÿÿùüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþÿýÿÿÿùüÿþüÿþüÿþüÿþüÿþüÿþüÿþóôúÚÖïÌÆêÌÆê±«È—¤q“ugzi[ni[n]ObRKZe\qq“‰}«|¶½¶Ü×ÎùȼҌ}Ø»±åüÿþüÿþüÿþüÿþüÿþüÿþüÿþÿýÿüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþÿýÿÿýÿüÿþüÿþüÿþüÿþÿýÿüÿþÿýÿÿýÿöóþÌÆêȼカܡ¢¿‰}«t‹kctdQa]ObWJ\YPfyh„q“|¶–‰À»±åȼﰨÜùüúÿÿùüÿþûüÿüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþûüÿüÿþüÿþüÿþÿÿùüÿþûüÿüÿþüÿþûüÿÿÿùüÿþîìøÌÆêÊÁ꽶ܱªÓ‰}«}nœsg†cWcXQ`dQacUhq“‰}«|¶°¨ÜîìøüÿþÿýÿÿýÿüÿþÿÿùüÿþüÿþÿÿùüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþÿýÿÿÿùûüÿüÿþüÿþûüÿÿýÿÿÿùûüÿüÿþüÿþüÿþÿýÿÿÿùÿýÿîìøÏÊ㻱彶ܖ‰À‰}«}nœyh„i[nYPfd\kpbu‰}«ÏÊãûüÿüÿþûüÿüÿþüÿþÿýÿüÿþüÿþÿýÿüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþÿýÿüÿþüÿþüÿþüÿþüÿþÿýÿüÿþüÿþüÿþüÿþüÿþüÿþÿÿùüÿþìåþÌÆê»±å°¨Ü°¨Ü|¶}nœsg†qhYMY™—«üÿþÿýÿüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþÿýÿüÿþüÿþüÿþüÿþÿýÿÿýÿüÿþüÿþüÿþÿýÿüÿþüÿþÿÿùûüÿÚÖïÊÁ껱廱堔Ò|¶}nœoiŠîîòÿýÿÿÿùûüÿüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþÿýÿÿýÿüÿþüÿþÚÖﻱ廱åÊÁê–‰ÀÚÖïüÿþÿýÿüÿþÿýÿüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþÿÿùûüÿüÿþÿýÿûüÿóôúÌÆêȼïîìøüÿþüÿþÿýÿÿýÿüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþÿýÿÿÿùüÿþûüÿÿÿùûüÿûüÿÿÿùûüÿüÿþüÿþÿÿùüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþÿýÿüÿþüÿþüÿþÿýÿüÿþÿÿùÿýÿÿÿùüÿþüÿþÿÿùÿýÿÿýÿÿýÿüÿþÿýÿüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþÿÿùÿýÿÿýÿüÿþüÿþüÿþÿýÿüÿþÿýÿüÿþÿýÿÿýÿüÿþûüÿüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþÿýÿüÿþüÿþüÿþüÿþÿýÿüÿþüÿþÿýÿüÿþüÿþûüÿüÿþÿÿùûüÿüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþÿýÿüÿþüÿþüÿþÿÿùüÿþÿýÿüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþÿýÿüÿþüÿþüÿþüÿþüÿþüÿþÿýÿüÿþüÿþÿýÿüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþüÿþsuite3270-4.1/ws3270/ws3270.ico000077500000000000000000000410761413735575200154600ustar00rootroot00000000000000@@ (B(@€ cnvhwƒcs}1eu“j{ˆæTcpàWixàTfsâQamÅP]g›Xgr¼blu©pzyƒ\lxFWbIZhVjyLasfwƒäk}‰ÿ]p~ÿ^r~ÿoŽÿh|Šÿew„ÿgy†ÿfy†ÿcv„ÿXlyÿ[mzÿ]q~øbt€ÿ]o}ÿg{‡ÿl€Œÿq…’ÿr†”ÿs‡•ÿjÜmŠÿo‹—t…p|…:WfqÕ^myÿPbpÿI]jÿLapÿ[qÿ[p€ÿ]t„ø_u…ÿdz‰ÿi~ÿm„’ÿr†–ÿq‡•ÿp…”ÿuŠ™ÿu‹™ÿyŽÿ}’ ÿ‚•£ÿ‰œ©ÿ†š§ÿ‡›©ÿ‘¤±ÿ”§´ÿ’¥³ÿ‘¤²ÿu‹šÿp‡–ÿm‚’ÿr„’ÿ›¦y{‹•7_iqw„Œ]o|ÿ_v„ÿdz‹ÿmƒ“ÿtŠ˜ÿ–¤ÿ‚—¥ÿƒ—¦ÿ†š¨ÿ‰ªÿ†š©ÿƒ˜¦ÿ…™§ÿ–¥ÿ€•¤ÿ•¤ÿ|’¡ÿ}’¡ÿ‚—¦ÿ–¥ÿƒ˜§ÿˆœ«ÿ†š©ÿŒ ¯ÿŒŸ®ÿ‹Ÿ®ÿ”¦´ÿŠž«ÿt‰™ÿ”£ÿ~“£ÿ{žÿx‡’õakt­—žnƒ“ÿ£±ÿ‘¥²ÿ”§´ÿ”§³ÿ“§³ÿ“¦´ÿ¡®ÿ‰«ÿ€•¤ÿwŽÿuŠšÿrˆ˜ÿn…”ÿoƒ’ÿnƒ’ÿi~Œÿfx…ÿkz†ÿjz†ÿl|‡ÿgwƒÿYkxÿZiuÿ€“ ÿxŠ—ÿxˆ’ÿŠœ©ÿ…™¨ÿ€”£ÿˆœªÿ†š©ÿ’ ÿrŠïhv‚Žš¡f—¦²ÿ£±þ’¥²ÿ—ª·ÿ—«¹ÿ}‹•ÿ`lwÿ^jtÿQ`kÿFVbÿ:HSÿ.8Aÿ'2<ÿ$0;ÿ"+ÿ#ÿ ÿ#ÿ!(ÿ%/7ÿÿ ÿÿ.:Dÿ ÿ ÿ+6@ÿyŠ—ÿ•¤ÿ‰ªÿŽ¢¯ÿŽ¢°ÿ…—£ÿs‚Œï ¬µ>–§±ÿ”¨µÿƒ• ÿapzÿ3=Fÿÿ+6?ÿ.9Cÿ&ÿ*5ÿ,7@ÿ9EOÿBS`ÿQcoÿ]nzÿdw„ÿwŠ—ÿ„–¢ÿ—©µÿw„ÿALWÿ*2;ÿ)1:ÿ(ÿ "ÿ  ÿ'1:ÿ…™¨ÿ…™§ÿŽ¢°ÿ”§´ÿ”¦²ÿŒ–Þ¤±¹f–©µþYclÿ ÿ *ÿ ÿ0:Cÿ—ÿ‰ªÿŒŸ®ÿŒ ­ÿˆœ«ÿ‡œªÿ‹Ÿ­ÿ‘¥³ÿ˜«·ÿš¬¸ÿ¢³¾ÿ¤µÁÿ­½ÈÿµÆÏÿ‘›¡ÿ&ÿ,8Aÿ%ÿ ÿ ÿapzÿŒ ®ÿ†›©ÿ£²ÿ“¤±ÿHZhÿp€‹—o}†ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ×Ýàÿ›£ÿ5>Hÿ"ÿ'3ÿ"ÿ!%*ÿˆ™¤ÿ¢´Àÿ—ª·ÿ”¦´ÿ’¥²ÿ¤±ÿ”¨µÿ–©¶ÿ›­¹ÿž¯¼ÿŸ°¼ÿ ±¼ÿ§¸Âÿ˜§²ÿ+5>ÿ(1ÿ,9Dÿ&ÿ!,ÿ;HRÿ“¡ÿ‹ ­ÿ‰«ÿ‰œªÿ>Raÿex…ÿgu€ÿiyƒy}›7ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿøøøÿçççÿöööÿçççÿíííÿæææÿàààÿêêêÿÜÜÜÿÚÜÝÿ‹–žÿ*09ÿ(ÿ)7Bÿmz‚ÿ ¬ÿ¢®ÿ€‘žÿy‡ÿvƒÿv„ÿw„ÿn|‡ÿfu€ÿWgrÿHU`ÿ@JRÿ:EMÿ.:Dÿ"-ÿ&ÿ"ÿ ÿ ÿÿ3@LÿŠŸ¬ÿ£±ÿzŒšÿ8N_ÿd|Œÿ_sÿ]p|ÿduÿi}‰dtÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿñññÿÓÓÓÿäääÿÏÏÏÿàààÿÙÙÙÿÑÑÑÿØØØÿæææÿüüüÿÿÿÿÿÿÿÿÿU^eÿ/8@ÿ!*ÿÿ ÿ ÿ ÿÿ ÿÿÿÿ ÿÿ ÿ ÿ ÿÿÿÿÿ ÿÿ ÿ9GSÿoŒÿEUcÿAUeÿh€ÿd|Œÿcyˆÿ^q~þ_p|ÿcs~ñp€m}‡ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¿¿¿ÿ»»»ÿÿÿÿÿÕÕÕÿ···ÿÕÕÕÿÕÕÕÿÄÄÄÿAFJÿ%.ÿ%ÿ ÿ ÿ%ÿ$ÿ$ÿ*ÿ)ÿ#/ÿ$0ÿ$/ÿ&2ÿ*ÿ"/ÿ -ÿ!-ÿ!/ÿ*ÿ%ÿ "ÿ $ÿ)ÿ%2ÿ#1ÿNdtÿi€‘ÿjÿi€‘ÿg~Žÿbvƒÿ^p~ÿcu‚ÿhyƒ^o|ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþÿÿÿÿÿÃÃÃÿÔÔÔÿÆÆÆÿ¾¾¾ÿØØØÿÊÊÊÿ¼¼¼ÿ«««ÿ£¦©ÿisyÿx‚Šÿ]lxÿK^mÿJ`pÿ=Seÿ6L]ÿ4J\ÿ4J[ÿ.CTÿ,ARÿ-BSÿ/DUÿ)=Nÿ&:Lÿ"5Eÿ->ÿ)9ÿ /ÿ*ÿ %ÿ #ÿ $ÿ*ÿ,ÿUl{ÿm„”ÿm„”ÿk‚’ÿn…”ÿk‚‘ÿhŽÿ^t„ÿ]o|ñÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¼¼¼ÿÁÁÁÿÄÄÄÿÕÕÕÿÍÍÍÿ¼¼¼ÿÆÆÆÿÍÍÍÿÐÐÐÿ¸¸¸ÿרÙÿl€ÿ\t…ÿSk|ÿF]oÿ?Vhÿ7M_ÿ4J\ÿ1GXÿ+ARÿ/DUÿ-CTÿ(Ufÿ=Seÿ7N_ÿ6L^ÿ0EVÿ,@Pÿ,@Qÿ-@Qÿ';Lÿ#7Gÿ 2Bÿ1Aÿ!2Aÿ 2Bÿ.@OÿRgwÿxœÿvŒœÿsŠšÿr‰™ÿqˆ—ÿm„”ÿm„”ÿj’ÿax‰ÿp‹ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÅÅÅÿÎÎÎÿÇÇÇÿÛÛÛÿÑÑÑÿ¶¶¶ÿÌÌÌÿ¾¾¾ÿçççÿ£¨«ÿ’œ¡ÿZkwÿUhwÿXl|ÿ]qÿdx‡ÿmÿs‡–ÿvŠ™ÿ{žÿ}’ŸÿxŒ›ÿyŽ›ÿzŽœÿv‹šÿq†•ÿiÿawˆÿVm~ÿG^oÿRgwÿuŒ›ÿzŸÿyŽžÿt‹šÿtŠšÿvœÿrˆ˜ÿj‘ÿl‚’ÿi‘ÿax‡ÿds|ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÀÀÀÿ×××ÿºººÿäääÿÓÓÓÿÈÈÈÿÜÜÜÿ·¸¸ÿ¤°·ÿ ¯ºÿŠ— ÿw„ÿfs~ÿbjpÿhotÿhpuÿajpÿZdkÿR^fÿJU\ÿCKQÿ@HRÿBJSÿDMVÿEOWÿMX_ÿU`hÿWagÿiwÿ|“¢ÿƒ˜§ÿ}’¡ÿzŸÿwÿs‰˜ÿrˆ˜ÿuŒ›ÿt‹šÿo†–ÿk‘ÿi€ÿ_v†ÿbp{ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¾¾¾ÿ¾¾¾ÿ¸¸¸ÿ´´´ÿÆÆÆÿ½½½ÿ±²³ÿs|‚ÿMW^ÿ-4:ÿ %ÿÿ ÿÿ ÿÿÿ ÿÿ ÿ ÿ ÿÿ ÿÿÿÿÿ'07ÿŽ£²ÿ†š¨ÿ–¥ÿ}’¡ÿyžÿu‹›ÿtŠšÿuŒ›ÿu‹›ÿqˆ—ÿn…•ÿkƒ’ÿax‰ÿcs~ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¶¶¶ÿ¼¼¼ÿªªªÿ³³³ÿÃÃÃÿ©©©ÿŠÿ ÿ ÿ ÿÿ ÿÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿÿ ÿ ÿÿÿÿ ÿÿ"*ÿ“§´ÿ ®ÿŠž¬ÿ„™§ÿ•¤ÿyŽžÿyŽžÿvŒœÿuŒ›ÿqˆ—ÿn…•ÿn…•ÿh~Žÿdtÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿøøøÿöööÿûûûÿÿÿÿÿàààÿ¸¸¸ÿksyÿÿ ÿ ÿÿ ÿ ÿ ÿ ÿ ÿ ÿÿ ÿ ÿ ÿÿÿ ÿ ÿ ÿÿ ÿ$ÿ˜«¸ÿ”§´ÿ¡®ÿˆœªÿ€•¤ÿ|“¡ÿzŸÿvŒœÿvŒ›ÿs‰˜ÿk‚’ÿm„”ÿiÿas€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ÷÷÷ÿÀÀÀÿ®®®ÿGNTÿ ÿ ÿ ÿ ÿÿÿÿ ÿÿÿ ÿ ÿ ÿÿ ÿÿÿ ÿ ÿÿ ÿ&ÿ™«¸ÿ–¨¶ÿ”§´ÿ¡¯ÿ‚—¦ÿ|’¡ÿ}’¡ÿyŸÿvœÿqˆ—ÿm…•ÿlƒ“ÿl‚’ÿbsÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüüüÿóóóÿ¡¥ÿ37;ÿ ÿ ÿ ÿÿ a2ÿ]3ÿ %ÿ ;%ÿ *ÿ 'ÿ ÿ0"ÿ ÿ -$ÿÿÿ ÿ ÿ ÿ ÿ ÿ!ÿ—ª·ÿš«¸ÿ—ª·ÿ‘¥²ÿƒ˜¦ÿ|‘¡ÿ”£ÿ{‘ ÿuŒ›ÿr‰˜ÿn…”ÿm„”ÿlƒ’ÿ^q}ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþÿþþþÿÿÿÿÿþþþÿ²µ¹ÿ#*0ÿ ÿ ÿ ÿ ÿ ÿa3ÿ ]3ÿ ÿ ÿ ÿ ÿ m3ÿÿÿ ÿ ÿ ÿÿ ÿ ÿ ÿ$ÿ™«·ÿŸ°¼ÿ›­¹ÿ•§´ÿ„™¨ÿ”£ÿ‚—¥ÿ|‘ ÿxŽžÿvŒœÿp‡–ÿo†–ÿm„”ÿ]q}ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÀÀÀÿ´´´ÿ···ÿÕÕÕÿ«««ÿ©¬®ÿÿÿ ÿÿ ÿ ÿ ÿ ÿÿÿÿÿÿ ÿ ÿ ÿ ÿ ÿÿÿ ÿ ÿ"ÿ™«¹ÿ ²¾ÿœ®ºÿ•§´ÿ‡œ«ÿ„™§ÿ„˜§ÿ|’¡ÿ{‘ ÿvŒœÿu‹›ÿq‡—ÿn…•ÿbtƒÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÕÕÕÿ×××ÿÕÕÕÿîîîÿÎÎÎÿ§ª­ÿÿ ÿ ÿÿÿ ÿ ÿ ÿ ;!ÿÿ ÿ 8 ÿ @"ÿ ÿÿ ÿÿ*ÿ ÿ ÿ ÿ"ÿ!ÿ¯»ÿ£´Àÿ¯»ÿ–¨µÿ¢±ÿŠž¬ÿ…š©ÿ€–¥ÿ”¤ÿ{ ÿuŒ›ÿs‰™ÿp‡—ÿfzˆÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¨®­ÿ#)•ÿ 7ÿÿ ÿ ÿ ÿ='ÿ ÿ;%ÿI+ÿ ÿ:$ÿ[5ÿ ÿÿ ÿ ÿÿ ÿÿ ÿ)ÿ%ÿ ²½ÿ¤¶ÁÿŸ°¼ÿ˜ª¶ÿ”§´ÿ ®ÿ‰ž¬ÿ‡œªÿ„™¨ÿ€•¤ÿwœÿvŒœÿvŒ›ÿg{Šÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿëëëÿîîîÿàààÿìììÿêêêÿ¦¨¡ÿ´ÿ Jÿÿ ÿÿ ÿ ÿ y0ÿ€3ÿ *ÿ y0ÿ4ÿ (ÿ ÿÿ ÿ ÿ ÿ ÿ ÿÿ 'ÿ &ÿ¥¶Áÿ§¸Ãÿ¡²¾ÿœ®ºÿ—©¶ÿ‘¥²ÿŒ ­ÿ‰œªÿ†›©ÿ‚—¦ÿ{‘ ÿwœÿtŠ™ÿeyˆÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ´´´ÿ¸¸¸ÿ´´´ÿÐÐÐÿ¬¬¬ÿ›˜ÿsÿ=ÿÿÿ6"ÿ"ÿ n0ÿq<ÿw-ÿ }3ÿj9ÿ ^"ÿ 'ÿ ÿ F+ÿ O/ÿ ÿÿ ÿ ÿ ÿ+6ÿ &ÿ©ºÃÿ©¹Äÿ¤¶Àÿ¯»ÿ–¨µÿ“¦³ÿŽ¢°ÿŠž¬ÿ…š¨ÿƒ—¦ÿ~“¢ÿ€•£ÿwœÿh|ŠÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÐÐÐÿ­­­ÿÎÎÎÿÕÕÕÿÂÂÂÿ”˜šÿ ÿÿ ÿ ÿl9ÿ ;#ÿÿ *#ÿ }0ÿ#ÿ )"ÿ }/ÿ )ÿÿÿÿÿÿÿ ÿ ÿ&1;ÿ%,ÿª»Åÿ¬¼Æÿ¥¶Áÿœ®ºÿ–©µÿ’¥³ÿ£°ÿ‰«ÿ†š¨ÿ‡›©ÿƒ˜¦ÿ–¥ÿzžÿj}‹ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÃÃÃÿ½½½ÿ···ÿÕÕÕÿ¿¿¿ÿ„ˆÿ ÿ ÿ ÿ ÿl*ÿ 6#ÿ  ÿ.ÿ ~.ÿ %#ÿ #ÿÿÿ ÿ ÿÿÿ ÿ ÿ ÿ ÿÿ#(ÿªºÄÿ¬¼Æÿ¤µÀÿ›­ºÿ–¨µÿ’¥³ÿ£±ÿŒŸ­ÿˆœ«ÿŠŸ¬ÿ…š¨ÿ–¥ÿ}‘ ÿkŒÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿêêêÿçççÿîîîÿõõõÿçççÿ”™ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿÿÿ ÿ ÿÿ ÿÿÿ ÿ ÿ ÿÿ ÿÿ&/5ÿ¬¼Èÿ¬¼Æÿ¤µÀÿž°¼ÿ–ª¶ÿ•¨´ÿ“¦³ÿ£°ÿ¡¯ÿ‰¬ÿˆœªÿ…™¨ÿ€•¢ÿnŽÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿšž¢ÿ ÿ ÿ ÿ ÿÿÿ[2ÿiÿA!ÿh6ÿoÿ ?!ÿ$…Eÿÿ7ÿ ~ÿÿ ÿÿÿ ÿ ÿ8BHÿ±ÂÍÿ©¹Ãÿ£´¿ÿž¯»ÿ˜«·ÿ—ª·ÿ•¨µÿ’¥²ÿ’¤²ÿŒ ®ÿ‰¬ÿ‰«ÿ‚—¥ÿm€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÄÄÄÿÖÖÖÿÍÍÍÿ¸¸¸ÿãããÿruxÿ ÿ ÿÿ ÿÿÿ ÿ…ÿ…)ÿ)ÿÿ…'ÿÿÿFÿÿÿÿb7ÿÿÿÿJQXÿ±ÂÎÿ©¸Ãÿ£µÀÿž±¼ÿš¬¸ÿ˜«·ÿ–©¶ÿ“¦´ÿŽ¡¯ÿ‹Ÿ­ÿˆœ«ÿ‡œªÿƒ–¥ÿo‚ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿõõõÿùùùÿûûûÿôôôÿüüüÿ’•ÿÿ ÿÿÿY)ÿKÿ ÿ T)ÿ r#ÿ ÿ S(ÿÿ ÿÿ(ÿ Hÿ ÿ ÿ ÿ ÿ ÿ ÿPV[ÿ®ÀËÿªºÄÿ¥¶Àÿ ²½ÿš¬¹ÿ˜«·ÿ•¨µÿ’¥²ÿŽ¡®ÿŠŸ­ÿŠž¬ÿ‰«ÿ•£ÿr„‘ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ•—™ÿ ÿ ÿ ÿÿ *ÿ {"ÿ‚/ÿ #ÿ ‡&ÿÿ ÿGÿÿ qÿÿ ÿÿ ÿ ÿ ÿÿ ÿcntÿ°ÁÌÿ«ºÅÿ§¸Âÿ ²½ÿŸ±½ÿ˜ª¶ÿ“¦³ÿ“¦³ÿŽ¡¯ÿŒ ®ÿŠž¬ÿ„™¨ÿ~’¡ÿpƒÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿíííÿˆˆˆÿºººÿÀÀÀÿ†††ÿ¬¬¬ÿ¥¥¥ÿèèèÿÿÎÎÎÿ]_aÿ ÿ ÿ ÿ ÿ !ÿ P#ÿ ,ÿ "ÿ ÿ ÿ ÿ ÿ ÿÿÿ ÿÿ ÿÿ ÿ ÿÿy…ÿ¯ÀÊÿ«»Äÿ§¹Äÿ¢´¿ÿž°¼ÿ˜«·ÿ”¦³ÿ“¦³ÿ‘¤²ÿ£°ÿŒŸ®ÿ‰«ÿ‚•¤ÿn‚÷šÌíÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿñññÿØØØÿêêêÿöööÿ×××ÿÞÞÞÿØØØÿùùùÿÒÒÒÿóóóÿˆŒÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ !ÿÿ ÿÿÿÿÿÿ ÿÿ ÿÿ ÿ ÿ ÿ‚Ž–ÿ«½Èÿ«»Äÿ§¸Ãÿ¢³¿ÿž¯»ÿ™«·ÿ“¦³ÿ”¦³ÿ“¦³ÿ¢°ÿ‰ž¬ÿ†›©ÿ–¥ÿuŠšöÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿåååÿåååÿåååÿßßßÿêêêÿˆŽ‘ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ !ÿÿÿÿÿÿÿ ÿ ÿÿÿÿ ÿ ÿ ÿ‘¡«ÿ«¼Çÿ«»Åÿ§¸Ãÿ¢³¿ÿž°¼ÿ˜ª·ÿ”§´ÿ“¦³ÿ•¨µÿ“¦³ÿŒ ®ÿ‡›©ÿ–¥ÿw‹›ö&/ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÉÉÉÿÇÇÇÿÎÎÎÿ¼¼¼ÿÝÝÝÿ}…ÿ ÿ ÿ ÿ ÿÿÿÿ ÿÿ ÿ ÿÿ ÿ ÿ ÿÿÿÿÿ ÿ ÿÿ˜¨²ÿ«»Æÿ©¹Äÿ¥¶Áÿ¡²¾ÿ¯»ÿ–©µÿ•¨µÿ•¨´ÿ”§´ÿ’¦²ÿ¡¯ÿ‡›©ÿ”¤ÿsˆ—ûÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¯¯¯ÿ›››ÿÂÂÂÿ°°°ÿ±±±ÿˆŒÿ ÿ ÿÿ ÿ ÿÿÿÿÿ ÿ'4ÿ ÿ ÿÿÿ ÿÿ ÿ ÿ ÿÿ%+1ÿ®ºÿ¨¹Äÿ¤¶Áÿ¢³¿ÿŸ°¼ÿœ®ºÿ”¨µÿ’¤²ÿ‘¤²ÿ‘¥²ÿ£±ÿˆœ«ÿƒ—¥ÿw‹šÿhy…Ñÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüüüÿ÷÷÷ÿúúúÿýýýÿúúúÿ¸¾ÂÿenwÿQX\ÿ=DKÿ(.4ÿ&-2ÿ"*1ÿ#+ÿ$ÿ"ÿ"ÿ!'ÿÿ ÿ#ÿ!ÿ#ÿ *ÿ#+ÿ!)0ÿ1?KÿCMUÿvƒÿŸ°¼ÿ©¹Ãÿ¦µÀÿ¤´¿ÿ ±½ÿ¯ºÿ˜«¸ÿ–©¶ÿ˜«·ÿ•¦´ÿ‰š§ÿž©ÿsƒñl€’X^fÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿûûûÿúúúÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ®³¶ÿ„“ÿ~†‹ÿˆ‘–ÿ•˜ÿ‚‹‘ÿx„Œÿmu}ÿŒ”™ÿŠ’ÿ‰‘ÿ‹“ÿ”™ÿ‹’—ÿ‡Ž“ÿŽ—žÿ›¦­ÿ¨±·ÿ°¸¿ÿ¨³»à­¹Áà©¶¾à¨³¼à¨´½àª¶¿à¨´¼à£°¹à—¥°àšª³à¢°¹ä «³±’›££sƒŽÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÌÌÌÿåååÿÿÿÿÿÿÿÿÿÿÿÿÿþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ“¥ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿûûûÿþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¹¹¹ÿŸŸŸÿØØØÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿóóóÿïïïÿÿÿÿÿíííÿøøøÿñññÿúúúÿîîîÿöööÿûûûÿûûûÿòòòÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆÆÆÿÆÆÆÿ×××ÿ¹¹¹ÿ½½½ÿ®®®ÿÓÓÓÿ½½½ÿ¾¾¾ÿÇÇÇÿÓÓÓÿÊÊÊÿíííÿðððÿíííÿãããÿøøøÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÈÈÈÿÍÍÍÿ¶¶¶ÿÂÂÂÿ©©©ÿÃÃÃÿÚÚÚÿÉÉÉÿÏÏÏÿÁÁÁÿÅÅÅÿÍÍÍÿÆÆÆÿÝÝÝÿÆÆÆÿ···ÿéééÿúúúÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ···ÿÊÊÊÿÐÐÐÿ´´´ÿ¾¾¾ÿôôôÿâââÿÆÆÆÿÆÆÆÿÿÌÌÌÿ¯¯¯ÿ°°°ÿÏÏÏÿºººÿ¦¦¦ÿ¬¬¬ÿÍÍÍÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¶¶¶ÿŸŸŸÿÌÌÌÿšššÿ®®®ÿïïïÿ¡¡¡ÿ©©©ÿ©©©ÿÊÊÊÿÁÁÁÿ···ÿ®®®ÿÆÆÆÿ­­­ÿœœœÿÉÉÉÿÐÐÐÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÃÃÃÿ³³³ÿÁÁÁÿÉÉÉÿÀÀÀÿÛÛÛÿ°°°ÿÄÄÄÿíííÿÄÄÄÿ¸¸¸ÿÜÜÜÿ°°°ÿÚÚÚÿÍÍÍÿÅÅÅÿÔÔÔÿ¿¿¿ÿùùùÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÇÇÇÿÅÅÅÿÁÁÁÿ¾¾¾ÿ³³³ÿÆÆÆÿËËËÿÎÎÎÿØØØÿ¯¯¯ÿ³³³ÿÔÔÔÿ¾¾¾ÿÏÏÏÿãããÿ¸¸¸ÿ¼¼¼ÿÑÑÑÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿëëëÿìììÿíííÿäääÿæææÿðððÿìììÿïïïÿ···ÿªªªÿÊÊÊÿðððÿìììÿàààÿúúúÿÞÞÞÿæææÿýýýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿûûûÿøøøÿüüüÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÁÁÁÿÄÄÄÿïïïÿÀÀÀÿ¿¿¿ÿáááÿºººÿ´´´ÿÜÜÜÿöööÿºººÿ³³³ÿçççÿ´´´ÿÕÕÕÿÀÀÀÿÆÆÆÿøøøÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿôôôÿóóóÿþþþÿóóóÿ÷÷÷ÿøøøÿóóóÿóóóÿûûûÿÿÿÿÿóóóÿðððÿýýýÿóóóÿöööÿõõõÿ÷÷÷ÿþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýÿÿÿÿÿðÿÿÿÿÀÿÿÿ€ÿÿÿ€ÿÿÿ€ÿÿÿÀÿÿÿàÿÿÿðÿÿ€ÿ€/ÿ€ÿ€ÿ€ÿ€ÿ€ÿ€ÿ€ÿ€ÿ€ÿ€ÿ€ÿ€ÿ€ÿ€ÿ€ÿ€ÿ€ÿ€ÿ€ÿ€ÿ€ÿ€ÿ€ÿ€ÿ€ÿ€ÿ€ÿ€ÿ€ÿ€ÿ€ÿ€ÿ€ÿ€ïÿ€ÿÿ€ÿÿÿ€ÿÿÿ€ÿÿÿ€ÿÿÿ€ÿÿÿ€ÿÿÿ€ÿÿÿ€ÿÿÿ€ÿÿÿ€ÿÿÿ€ÿÿÿ€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿsuite3270-4.1/ws3270/ws3270.iss000077500000000000000000000054721413735575200155040ustar00rootroot00000000000000; Script generated by the Inno Setup Script Wizard. ; SEE THE DOCUMENTATION FOR DETAILS ON CREATING INNO SETUP SCRIPT FILES! [Setup] AppName=ws3270 AppVerName=ws3270 3.3.9a8 AppPublisher=Paul Mattes AppPublisherURL=http://x3270.bgp.nu AppSupportURL=http://x3270.bgp.nu AppUpdatesURL=http://x3270.bgp.nu AppCopyright=Copyright (C) 1989-2009, Paul Mattes, GTRC and others WizardSmallImageFile=ws3270.bmp DefaultDirName={pf}\ws3270 DisableDirPage=no DefaultGroupName=ws3270 AllowNoIcons=yes OutputBaseFilename=ws3270-3.3.9a8-setup OutputDir=\\Melville\pdm\psrc\x3270\Release\Inno\ws3270 Compression=lzma SolidCompression=yes ChangesAssociations=yes MinVersion=4.0,5.0 [Languages] Name: "english"; MessagesFile: "compiler:Default.isl" [Files] Source: "\\Melville\pdm\psrc\x3270\Release\Inno\ws3270\ws3270.exe"; DestDir: "{app}"; Flags: ignoreversion Source: "\\Melville\pdm\psrc\x3270\Source\3.3svn\ws3270\html\Bugs.html"; DestDir: "{app}\html"; Flags: ignoreversion Source: "\\Melville\pdm\psrc\x3270\Source\3.3svn\ws3270\html\Build.html"; DestDir: "{app}\html"; Flags: ignoreversion Source: "\\Melville\pdm\psrc\x3270\Source\3.3svn\ws3270\html\FAQ.html"; DestDir: "{app}\html"; Flags: ignoreversion Source: "\\Melville\pdm\psrc\x3270\Source\3.3svn\ws3270\html\Intro.html"; DestDir: "{app}\html"; Flags: ignoreversion Source: "\\Melville\pdm\psrc\x3270\Source\3.3svn\ws3270\html\Lineage.html"; DestDir: "{app}\html"; Flags: ignoreversion Source: "\\Melville\pdm\psrc\x3270\Source\3.3svn\ws3270\html\ReleaseNotes.html"; DestDir: "{app}\html"; Flags: ignoreversion Source: "\\Melville\pdm\psrc\x3270\Source\3.3svn\ws3270\html\README.html"; DestDir: "{app}\html"; Flags: ignoreversion Source: "\\Melville\pdm\psrc\x3270\Source\3.3svn\ws3270\html\ws3270-man.html"; DestDir: "{app}\html"; Flags: ignoreversion Source: "\\Melville\pdm\psrc\x3270\Source\3.3svn\ws3270\html\Wishlist.html"; DestDir: "{app}\html"; Flags: ignoreversion Source: "\\Melville\pdm\psrc\x3270\Source\3.3svn\ws3270\LICENSE.txt"; DestDir: "{app}"; Flags: ignoreversion Source: "\\Melville\pdm\psrc\x3270\Source\3.3svn\ws3270\README.txt"; DestDir: "{app}"; Flags: ignoreversion Source: "\\Melville\pdm\psrc\x3270\Source\3.3svn\ws3270\x3270_glue.expect"; DestDir: "{app}"; Flags: ignoreversion ; NOTE: Don't use "Flags: ignoreversion" on any shared system files [Dirs] Name: "{userappdata}\ws3270"; [Code] function myHelp(Param: String): String; begin result := '/c start ' + GetShortName(ExpandConstant('{app}') + '\html\README.html'); end; [Icons] Name: "{group}\Run ws3270"; Filename: "{app}\ws3270.exe"; WorkingDir: "{app}" Name: "{group}\ws3270 Documentation"; Filename: "{app}\html\README.html" [Run] Filename: "{cmd}"; Parameters: {code:MyHelp}; Description: "{cm:LaunchProgram,Online Documentation}"; Flags: nowait postinstall skipifsilent suite3270-4.1/ws3270/ws3270.rc000066400000000000000000000001041413735575200152720ustar00rootroot00000000000000LANGUAGE 0, 0 1 RT_MANIFEST ws3270.exe.manifest 100 ICON ws3270.ico suite3270-4.1/ws3270/ws3270_files.mk000066400000000000000000000000311413735575200164560ustar00rootroot00000000000000WS3270_OBJECTS = s3270.o suite3270-4.1/ws3270/x3270.man.m4000077700000000000000000000000001413735575200210402../Common/x3270.man.m4ustar00rootroot00000000000000suite3270-4.1/ws3270/x3270_glue.expect000077700000000000000000000000001413735575200234642../Common/x3270_glue.expectustar00rootroot00000000000000suite3270-4.1/wx3270if/000077500000000000000000000000001413735575200143305ustar00rootroot00000000000000suite3270-4.1/wx3270if/Makefile000066400000000000000000000042531413735575200157740ustar00rootroot00000000000000# Copyright (c) 2016, 2018 Paul Mattes. # All rights reserved. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # * Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # * Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in the # documentation and/or other materials provided with the distribution. # * Neither the name of Paul Mattes nor his contributors may be used # to endorse or promote products derived from this software without # specific prior written permission. # # THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS OR # IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES # OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN # NO EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, # SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED # TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR # PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF # LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING # NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS # SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. # VPATH-based Makefile for x3270if, can build either 32- or 64-bit ifdef WIN64 objdir = ../obj/win64/x3270if else objdir = ../obj/win32/x3270if endif top = ../../.. this = $(top)/wx3270if export VPATH = $(this):$(top)/Common/Win32:$(top)/Common export TOP = $(top) export THIS = $(this) MAKEINC = -I$(this) -I$(top)/Common -I$(top)/x3270if -I$(top)/Common/Win32 all: $(objdir) cd $(objdir) && $(MAKE) $(MAKEINC) -f $(this)/Makefile.obj $@ clean: $(objdir) cd $(objdir) && $(MAKE) $(MAKEINC) -f $(this)/Makefile.obj $@ clobber: $(objdir) cd $(objdir) && $(MAKE) $(MAKEINC) -f $(this)/Makefile.obj $@ depend: $(objdir) cd $(objdir) && $(MAKE) $(MAKEINC) -f $(this)/Makefile.obj $@ $(objdir): mkdir -p $(objdir) suite3270-4.1/wx3270if/Makefile.aux000066400000000000000000000031051413735575200165630ustar00rootroot00000000000000# Copyright (c) 1995-2018, 2020 Paul Mattes. # All rights reserved. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # * Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # * Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in the # documentation and/or other materials provided with the distribution. # * Neither the name of Paul Mattes nor his contributors may be used # to endorse or promote products derived from this software without # specific prior written permission. # # THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS OR # IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES # OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN # NO EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, # SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED # TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR # PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF # LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING # NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS # SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. # Auxiliary makefile for wx3270if all: @echo "Must pick a specific make target." src.tgz: man: suite3270-4.1/wx3270if/Makefile.obj000066400000000000000000000055541413735575200165520ustar00rootroot00000000000000# Copyright (c) 2007-2009, 2013-2018, 2020 Paul Mattes. # All rights reserved. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # * Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # * Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in the # documentation and/or other materials provided with the distribution. # * Neither the name of Paul Mattes nor his contributors may be used # to endorse or promote products derived from this software without # specific prior written permission. # # THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS OR # IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES # OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN # NO EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, # SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED # TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR # PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF # LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING # NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS # SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. # Windows Makefile for x3270if # Set GT_PFX, NATIVE_SFX, NATIVECC, CC, WINDRES and WIN32_FLAGS. include winenv.mk MKFB = mkfb$(NATIVE_SFX) XCPPFLAGS = $(WIN32_FLAGS) -I$(THIS) -I$(TOP)/x3270if -I$(TOP)/include CFLAGS = $(EXTRA_FLAGS) -g -Wall -Werror -MMD -MP $(XCPPFLAGS) ifdef WIN64 HOST = win64 else HOST = win32 endif W = w include x3270if_files.mk libs.mk VOBJS = $(X3270IF_OBJECTS) OBJECTS = $(VOBJS) version.o LIBS = -lws2_32 LIBDEPS = $(DEP32XX) DLLFLAGS = $(EXTRA_FLAGS) -mno-cygwin -shared -Wl,--export-all-symbols -Wl,--enable-auto-import PROGS = x3270if.exe all: $(PROGS) XVERSION = xversion.c version.o: mkversion.sh $(VOBJS) $(LIBDEPS) version.txt $(RM) $(XVERSION) sh $< x3270if $(filter %.txt,$^) >$(XVERSION) $(CC) $(CFLAGS) -c -o $@ $(XVERSION) $(RM) $(XVERSION) x3270if.exe.manifest: mkmanifest.sh version.txt manifest.tmpl sh $< $(filter %.txt,$^) $(filter %.tmpl,$^) x3270if "3270 terminal emulator interface" $(WIN64) >$@.tmp mv -f $@.tmp $@ x3270ifres.o: x3270if.rc x3270if.ico Makefile $(WINDRES) -i $< -o $@ x3270if.exe: $(OBJECTS) x3270ifres.o $(LIBDEPS) $(CC) -o $@ $(CFLAGS) $(OBJECTS) x3270ifres.o $(LD32XX) $(LIBS) wversion.o: mkwversion.sh version.txt sh $< x3270if $(CC) $(filter %.txt,$^) clean: rm -f *.o mkfb mkfb.exe fallbacks.c x3270if.exe.manifest clobber: clean rm -f $(PROGS) *.d # Include auto-generated eependencies -include $(OBJS:.o=.d) suite3270-4.1/wx3270if/conf.h000066400000000000000000000000001413735575200154140ustar00rootroot00000000000000suite3270-4.1/wx3270if/html.m4000077700000000000000000000000001413735575200204022../Common/html.m4ustar00rootroot00000000000000suite3270-4.1/wx3270if/m4man000077700000000000000000000000001413735575200176642../Common/m4manustar00rootroot00000000000000suite3270-4.1/wx3270if/version.txt000077700000000000000000000000001413735575200224422../Common/version.txtustar00rootroot00000000000000suite3270-4.1/wx3270if/x3270if.ico000066400000000000000000000410761413735575200161360ustar00rootroot00000000000000@@ (B(@€ •¦²­·”¥±aq|Rcs~›j{‰ÿfvƒÿRboÿXjxÿVhvÿUfsÿRbnÛR_i²WgrÛ]jvÌcnv´hwƒÂl~‰ÿl}‹ÿ\o|ÿ\p|ÿo€Žÿo‚Žÿh|‰ÿfw„ÿhz†ÿfy…ÿfy…ÿdv„ÿYmzÿThuøYkxöZn{ñ^q}ÿ^p|ÿXjxÿauÿdx„ÿh|‰ÿlŒÿm€Žÿn‚ÿn‚‘ÿh|‰Òl~‰õq€‹ÿlw°v‹ÿdr~ÿRcpÿFWcÿHZhÿThwÿYm|ÿWjzüYn}ìWm}ÿZpÿZpÿ]rÿ_u„ÿdz‰ÿdyŠÿcz‰ÿdyˆÿey‰ÿi~ÿh~Œÿl€ÿl‚ÿp…“ÿuˆ–ÿ}œÿ‚•¡ÿ}žÿ…˜¦ÿ‰œ¨ÿ‘£°ÿ’¤²ÿ£°ÿ“¦³ÿ”£ÿqˆ–ÿo…”ÿlÿfzˆÿu†‘ÿly‚ÿH[hÿG[jÿH\mÿI_nÿPgwÿQizÿax‰ÿd{Œÿd{‹ÿg~Žÿhÿo…”ÿsˆ–ÿw‹šÿyžÿ”¢ÿ€”£ÿ”¢ÿ|‘¡ÿ}’¡ÿ–¤ÿ–¤ÿ–¥ÿ…™¨ÿ‡œ©ÿŠ«ÿŠž«ÿ¡®ÿ‰«ÿƒ—¦ÿ¡®ÿ£±ÿ‘¤±ÿ¢°ÿ“¥³ÿ‘¤²ÿu‹›ÿqˆ˜ÿu‹›ÿt‰˜ÿs‡—ÿŠ™¥ÿ|Œ–ÿv„Œÿ_rÿe{‰ÿi€ÿl‚’ÿtŠ™ÿxŽœÿ„™§ÿ†›¨ÿ‡›©ÿ‡›©ÿˆœªÿ‹ž¬ÿ‹Ÿ¬ÿ‡›ªÿ„™§ÿ‚—¦ÿ„˜§ÿ€•¤ÿ€•¤ÿ~”£ÿ~”£ÿ{‘ ÿ|‘ ÿ|‘ ÿ–¥ÿ”£ÿ”£ÿ„™§ÿ†š©ÿ„˜§ÿ…™¨ÿŽ¡¯ÿ‹ž­ÿŠž­ÿŽ¡¯ÿ–¨µÿŠž«ÿuŠšÿ~“¢ÿ–¥ÿ€•¤ÿzŸÿzŒ˜ÿt‚Œÿ_iq´Œ•ÿ›ÿŸ­ÿŽ¢¯ÿ£±ÿ“¥³ÿ’¥²ÿ’¦²ÿ”§´ÿ’¥³ÿ¡¯ÿ‹ž­ÿ‡œªÿ€•¤ÿzŸÿvŒœÿxŽÿvŒœÿsŠ™ÿu‹šÿt‰˜ÿwÿtŠ™ÿs‡–ÿs…“ÿyŠ—ÿx‰–ÿ{Œ˜ÿy‹—ÿs…’ÿi|ŠÿWgtÿz‹—ÿŠž¬ÿ…˜¦ÿ†˜¤ÿ‹›¥ÿ’¥²ÿ…™§ÿ| ÿ†š©ÿ‡›©ÿ…™¨ÿ€”£ÿy‹—ÿnz„Ùš¢ÿ¢¯ÿ’¥²ÿ’¥²ÿ“¦³ÿ”§´ÿ’¥³ÿŽ¡¯ÿžªÿ…—£ÿ‚”¡ÿ}ÿs‡•ÿk€ÿeyˆÿ^p}ÿSeqÿJ[iÿQbnÿ7EPÿ1;Dÿ!-6ÿ*ÿ ÿÿ ÿ ÿÿ ÿ  ÿÿ!+4ÿ>MZÿ *4ÿ&ÿ ÿVeqÿŠ«ÿ{Ÿÿ€”£ÿŒ ­ÿ¡®ÿ‹Ÿ­ÿˆœ©ÿ{‹—ÿm{†ÿ©³ÿ‘£°ÿŽ¡¯ÿ’¦³ÿ˜ª·ÿ’¥³ÿ•§´ÿ]goÿ8@Iÿ8>Gÿ;CJÿ.8Aÿ%/8ÿ&0ÿ"ÿÿÿ#ÿ&ÿ&ÿ!*ÿ&0ÿ".9ÿ3@Jÿ;HQÿHVbÿTbmÿ$,4ÿ ÿ  ÿ'ÿ*3;ÿ ÿ "ÿ !ÿ!*ÿTbmÿ„™¨ÿ~“¢ÿˆœªÿŽ¡¯ÿ¡¯ÿ“¦³ÿ‹©ÿ|Œ–ÿ¢¯·ÿŒ ­ÿ•¨µÿ„• ÿZjuÿNZcÿ$.7ÿ ÿ ÿKZfÿ/9Cÿ&-ÿ!+5ÿ.;Gÿ8DNÿBOZÿK[hÿPcqÿ_rÿhz‡ÿkŒÿvŠ˜ÿ„—¤ÿŒŸ«ÿœ®¹ÿž°¼ÿ}Š“ÿP\fÿXclÿÿ+4=ÿ&/ÿ !ÿ%ÿ ÿ$ÿqƒ‘ÿ‰¬ÿ…™§ÿ¡¯ÿ£°ÿ˜«·ÿ“¤°ÿ}Š•ÿ ®·ÿ’¥²ÿfqzÿ ÿ ÿ",ÿ ÿ ÿfu€ÿ†–¡ÿ‚•¡ÿ”¢ÿ‡š¨ÿ…™¦ÿƒ—¦ÿ„˜¦ÿ‚—¥ÿ‰«ÿ¡¯ÿ“¦³ÿ—ª¶ÿ™«·ÿ ±¼ÿ£´Àÿ¦·Âÿ¬¼Æÿ­½Çÿ·ÅÌÿQW]ÿ#ÿ/;Eÿ&ÿ#ÿ ÿÿ9DLÿŠªÿŠž¬ÿ†›©ÿ¢°ÿ’¥³ÿ ­ÿK]kÿn~ˆÿ’£¬ë‚’œÿ!)2ÿ ÿ"-ÿ'2ÿÿ$+1ÿ;?BÿŠš¥ÿœ®»ÿ—ª¶ÿ“¦³ÿ¢°ÿ¢°ÿ£°ÿ£±ÿ•¨µÿ—ª·ÿ—ª·ÿ¯ºÿ ±½ÿŸ±½ÿ¢²¾ÿ¦·Áÿ®¿Èÿ±ÁÊÿ‚Ž–ÿ ÿ&ÿ+7Aÿ )ÿ ÿ*ÿ*4=ÿ}‘žÿ£°ÿ‡œ©ÿˆœªÿ¡¯ÿ‰›¨ÿATbÿcv…ÿiyƒÿn|†ÿ¤¯¶Ù™ÿ7?Hÿ ÿ%1ÿ*6ÿ"ÿ*18ÿu…ÿ¢´Àÿœ®ºÿ”§³ÿ“¥²ÿ¢¯ÿŒŸ­ÿŒŸ¬ÿŽ¡®ÿ¡®ÿ¢¯ÿ“¥±ÿ’¤±ÿ–§³ÿ¡­ÿ‘¡¬ÿ”¤¯ÿ’Ÿÿw…‘ÿ-9Cÿ#.7ÿ1>Hÿ*7Cÿ+ÿ)ÿ!)ÿ1?Iÿq…“ÿŽ¢°ÿ‰ªÿˆ«ÿ’ ÿ;P_ÿdzˆÿ]p~ÿ_o{ÿev€ÿu…’ÿ”£—o{†ÿ#)2ÿ(ÿ(6Aÿ7DNÿ{ˆ‘ÿˆ™¤ÿŽŸªÿ{šÿu…‘ÿo|…ÿlw€ÿly‚ÿlyÿnz‚ÿdq{ÿcpyÿXgrÿL[fÿCQ]ÿ4>Gÿ2;Cÿ-7?ÿ$.7ÿ*4ÿ%ÿ$ÿ ÿÿ ÿÿÿÿ3@Lÿ~’Ÿÿ‘¥²ÿ†›©ÿp‚ÿ6K\ÿd{Œÿ`xˆÿ_t‚ÿ[o|ÿ`p|ÿdv‚ÿKU]ÿ9BJÿ+6@ÿ%.ÿ")ÿ%ÿ ÿÿÿ ÿÿ ÿÿ ÿ ÿ ÿ ÿ ÿÿÿÿÿÿ ÿÿ ÿÿ ÿ ÿÿÿ ÿ8FQÿu…’ÿs„‘ÿGXfÿ;O_ÿe}ÿe|Œÿc{‹ÿbx‡ÿ_rÿ]p{ÿ`q}ÿdtÿ069ÿ ÿ*ÿ ÿÿÿÿÿÿ ÿÿÿ ÿÿ ÿ ÿ ÿ ÿ ÿÿÿ  ÿ ÿ  ÿ !ÿ $ÿ "ÿ ÿ ÿ ÿ ÿ*ÿ#1=ÿ"0<ÿ,;ÿAVfÿf~Žÿe|ÿhÿi€‘ÿf|Œÿbw…ÿ^o{ÿ[kxÿfw„ÿk{†ÿ…Šÿ=DJÿ'18ÿ*3;ÿ%.ÿ)ÿ$/ÿ*6ÿ .:ÿ)5ÿ*6ÿ.<ÿ"3Aÿ$5Cÿ$6Dÿ&8Eÿ&8Fÿ%7Fÿ':Iÿ"2Aÿ#4Cÿ 1Aÿ,;ÿ+:ÿ)9ÿ*9ÿ .ÿ,ÿ&ÿ&ÿ)ÿ)ÿ!0ÿ"0ÿ%4ÿMcsÿh€ÿi€‘ÿlƒ’ÿi€‘ÿj’ÿj‘ÿe{‰ÿbv…ÿ^t„ÿZmzÿals…box¿‹“ÿuƒÿXkyÿRfvÿRiyÿE\nÿ?Vhÿ9Pbÿ7N`ÿ6L^ÿ5K]ÿ.DUÿ,BSÿ-CTÿ.CUÿ/EVÿ*?Pÿ)=Oÿ$8Iÿ"5Eÿ.?ÿ*9ÿ'6ÿ-ÿ*ÿ&ÿ $ÿ "ÿ "ÿ'ÿ+ÿ!/ÿNdsÿlƒ“ÿk‚’ÿm„”ÿk‚’ÿm„”ÿn…”ÿk‚’ÿi€ÿf}ŒÿYn~ÿ^o|ÿu†“ÿbyŠÿ[s„ÿUm~ÿH`rÿE[mÿ>Ugÿ8N`ÿ4J\ÿ4J\ÿ0FWÿ+ARÿ.CTÿ/EVÿ-CTÿ)=Nÿ';Lÿ%8Iÿ"5Fÿ-=ÿ&4ÿ!/ÿ)ÿ 'ÿ ÿ !ÿ "ÿ ÿ "ÿ #ÿ $ÿMbrÿkƒ’ÿm„“ÿlƒ’ÿlƒ“ÿk‚’ÿn…•ÿm„”ÿj’ÿf~ŽÿZp€ÿ\n{ÿl|‡ÿ_v…ÿTl}ÿOgyÿF^pÿBYkÿ=Tfÿ8Oaÿ4K\ÿ3J[ÿ.CUÿ,ASÿ/DUÿ/EVÿ)=Nÿ%9Jÿ%8Iÿ%8Iÿ$7Hÿ1Bÿ&6ÿ -ÿ'ÿ !ÿ !ÿ ÿ ÿ ÿ  ÿ ÿ !ÿTjzÿkƒ’ÿlƒ“ÿn…•ÿo†•ÿlƒ“ÿn…•ÿlƒ“ÿhÿd{‹ÿ]r‚ÿYkyÿl{ˆÿ[s€ÿJbtÿKbtÿAXjÿÿ,<ÿ"/ÿ)ÿ $ÿ &ÿ ÿ  ÿ "ÿ  ÿ ÿ "ÿ^u„ÿn…•ÿm„”ÿo†–ÿp‡—ÿn…”ÿp‡—ÿm„”ÿhÿf}Žÿ^t„ÿWjxÿl{‡ÿYm|ÿOewÿQi{ÿJbsÿG^pÿF^oÿC[mÿ;Rdÿ9Oaÿ6M^ÿ4J\ÿ5L^ÿ/EVÿ(=Nÿ&:Kÿ%:Kÿ';Lÿ#7Hÿ 3Cÿ0@ÿ(6ÿ%4ÿ -ÿ -ÿ -ÿ,ÿ!/ÿ+ÿ!.9ÿ?N\ÿp‡–ÿr‰˜ÿp‡—ÿn…•ÿp‡—ÿp‡—ÿq‡—ÿo†–ÿj‘ÿg~Žÿ]sƒÿj|ˆÿo{†ÿ\o|ÿ`v†ÿ`wˆÿXp€ÿNfwÿLctÿE\mÿ>Ufÿ=Seÿ:Pbÿ4J\ÿ3J\ÿ/DVÿ*?Pÿ';Kÿ%9Iÿ(ÿ0@ÿ#4Cÿ4HWÿ`u…ÿv‹šÿvŒœÿt‹šÿr‰™ÿqˆ˜ÿqˆ—ÿo†–ÿm„”ÿm„”ÿk‚’ÿg~ÿ^t„ÿs‚ÿXgrÿCUdÿAUfÿ?Teÿ>Teÿ:O`ÿ>TdÿDYjÿLbsÿLbrÿQfwÿWm}ÿ^u…ÿ\r‚ÿWm~ÿXo~ÿWm}ÿZp€ÿUk|ÿNeuÿI`qÿ@Ugÿ?Ugÿ?Vgÿ6K]ÿ7K\ÿ4HWÿd{Šÿrˆ˜ÿwÿxŽÿt‹šÿsŠ™ÿt‹šÿuŒ›ÿrˆ˜ÿlƒ“ÿj‘ÿmƒ“ÿj‘ÿg~ÿ_u‚ÿguÿ†‘™ÿt„Žÿn~‡ÿiz‡ÿl}‹ÿqƒ‘ÿzŒ™ÿ’Ÿÿˆ™¦ÿŒž«ÿ¡­ÿ¡­ÿ¢®ÿ¡­ÿŽŸªÿ‹›§ÿˆ™¥ÿ‰š¥ÿ‰š¦ÿŠœ¨ÿ†™¥ÿ†™¦ÿ…˜¥ÿ€”¡ÿxŒšÿm‚’ÿUm}ÿe{‹ÿu‹šÿzŸÿyŸÿxŽÿxÿu‹šÿt‹šÿtŠšÿwÿt‹šÿlƒ“ÿj‘ÿl‚’ÿj‚‘ÿd|Œÿ\qÿdr{ÿ”¡ªÿ¢¯¶ÿ›ªµÿŠ— ÿyƒŠÿm{„ÿ]isÿY`fÿ^diÿ^dhÿ]dhÿV]bÿQY`ÿJSYÿDOVÿ=GNÿ7>Dÿ4:@ÿ29Cÿ4;Dÿ5Dÿ&,2ÿ!$ÿ"ÿ ÿ ÿÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ%+ÿ‡œªÿ†š©ÿ…š¨ÿ–¥ÿ~“¢ÿzŸÿxŽÿu‹›ÿtŠšÿsŠ™ÿuŒ›ÿu‹›ÿr‰˜ÿo†–ÿm„”ÿlƒ’ÿd|ÿ_t„ÿds}ÿ…–ÿ#&ÿÿÿ ÿ ÿ ÿ ÿÿ ÿ ÿ ÿ ÿ ÿ ÿÿ ÿ ÿ ÿÿ ÿ ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿo†–ÿn…”ÿi€ÿcxˆÿdrÿfnsÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿm„”ÿo†–ÿk‚’ÿg|‹ÿct€ÿQ[bÿ ÿ ÿ ÿ ÿÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿÿ ÿ ÿ ÿÿ ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿk‚’ÿm„”ÿj‘ÿg}Œÿ`q~ÿ8@Gÿ ÿþþþÿþþþÿ ÿ ÿÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿÿ ÿÿÿ ÿÿÿÿ ÿ ÿ ÿ ÿ ÿ ÿˆ™¤ÿš¬¹ÿ•§µÿ”§´ÿ‘¤²ÿˆœªÿ–¥ÿ|’¡ÿ}“¢ÿ{ŸÿxŽžÿvœÿr‰˜ÿp‡—ÿm„”ÿlƒ“ÿlƒ“ÿk€ÿarÿJRXÿ037ÿ ÿÿÿÿÿÿÿÿÿþþþÿþþþÿm9ÿm9ÿm9ÿG,ÿ ÿG,ÿG,ÿG,ÿ ÿ ÿG,ÿÿÿÿ ÿÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ…—¢ÿš­ºÿ—©¶ÿ–©¶ÿ•©µÿ‹Ÿ­ÿ‚—¦ÿ}’¢ÿ”£ÿ}’¡ÿ{ ÿwÿr‰˜ÿp‡—ÿm„”ÿlƒ”ÿlƒ“ÿiŽÿ]p|ÿ_gmÿ%*.ÿ ÿÿÿÿÿÿÿÿÿÿÿÿÿþþþÿþþþÿþþþÿG,ÿ ÿm9ÿÿ ÿ ÿÿÿ ÿ ÿÿm;ÿÿ ÿ ÿÿ ÿ ÿÿ$ÿ ÿ ÿ“Ÿÿœ¯»ÿ›¬¹ÿ˜«·ÿ˜«·ÿ‹Ÿ­ÿ–¥ÿ|‘¡ÿ€•¤ÿ~“¢ÿzŸÿuŒ›ÿtŠšÿr‰˜ÿn…”ÿn…”ÿn…•ÿj€ÿ\o{ÿ_elÿ#ÿ ÿþþþÿþþþÿÿÿÿÿÿÿÿÿÿÿÿÿþþþÿþþþÿþþþÿ ÿ ÿ ÿ ÿ ÿ ÿ w6ÿÿÿÿ ÿ ÿ ÿÿÿ ÿ ÿ ÿ ÿ ÿ‚”Ÿÿ¡²¾ÿž°¼ÿ›­¹ÿ›­¹ÿŽ¡¯ÿƒ˜§ÿ”£ÿƒ˜¦ÿ€•¤ÿ{‘ ÿyžÿzŸÿs‰™ÿp‡–ÿo†–ÿo†•ÿj€ÿ\o{ÿkqtÿ ÿ ÿ ÿ ÿþþþÿþþþÿÿÿÿÿÿÿÿÿÿÿÿÿþþþÿþþþÿþþþÿÿÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿÿ ÿ ÿÿÿ ÿ ÿ ÿ ÿ‚“ ÿ ²¿ÿŸ±½ÿœ®ºÿ™«¸ÿ¢°ÿ…š©ÿƒ˜¦ÿ„˜§ÿ‚—¦ÿ{‘ ÿ{‘ ÿxŽžÿu‹›ÿtŠšÿq‡—ÿn…•ÿl‚’ÿ`r€ÿouxÿ ÿÿ ÿ ÿÿþþþÿþþþÿþþþÿÿÿÿÿÿÿÿÿÿÿÿÿþþþÿþþþÿþþþÿ ÿz1ÿg8ÿ ÿ ÿÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿƒ”Ÿÿ¤µÁÿ¢³¿ÿž°¼ÿ™«·ÿ“¦³ÿŒŸ®ÿ‰«ÿ†š©ÿ‚˜§ÿ~“£ÿ}’¢ÿ{ ÿu‹›ÿvŒœÿs‰™ÿo†–ÿm„”ÿcw„ÿemtÿ ÿÿ ÿÿ ÿÿÿþþþÿþþþÿþþþÿÿÿÿÿÿÿÿÿÿÿÿÿþþþÿþþþÿþþþÿ ÿ ÿÿÿÿÿm;ÿ ÿ ÿ ÿ ÿ ÿ"+ÿ ÿ‡˜£ÿ¦·Ãÿ¢³¿ÿž¯»ÿ˜ª·ÿ”§´ÿ’¤²ÿ‹Ÿ­ÿˆœ«ÿ…š¨ÿ‚˜§ÿ–¦ÿ–¥ÿz ÿt‹šÿtŠšÿqˆ—ÿqˆ—ÿfz‰ÿJT`ÿ$«ÿJÿ ÿ ÿ ÿ ÿ ÿÿG,ÿþþþÿþþþÿþþþÿÿÿÿÿÿÿÿÿÿÿÿÿþþþÿþþþÿþþþÿÿ ÿ ÿ ÿ ÿ ÿ ÿÿ ÿ ÿ+ÿ ÿŠš¥ÿ§¹Ãÿ£µÀÿ ±½ÿ›­¹ÿ–©µÿ”§´ÿŽ¡¯ÿ‹ ®ÿ‰«ÿ‡œªÿ…™¨ÿ„™§ÿ|‘¡ÿwœÿvŒœÿxÿr‰˜ÿeyˆÿOT[ÿ ¼ÿ Yÿ ÿ ÿ ÿ ÿÿÿ ÿ o,ÿv.ÿþþþÿþþþÿþþþÿÿÿÿÿÿÿÿÿÿÿÿÿþþþÿþþþÿÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ&ÿ ÿŸªÿªºÅÿ¦·Âÿ¡²¾ÿž°¼ÿ™¬¸ÿ–©¶ÿ‘¥²ÿ¡®ÿŠž¬ÿˆœªÿ†›©ÿ…™¨ÿ”¤ÿzŸÿwœÿvŒ›ÿq‡–ÿcw†ÿ\_bÿ¢ÿPÿÿ ÿÿG,ÿ ÿÿo:ÿm9ÿm0ÿ3ÿo:ÿþþþÿþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþÿÿ ÿÿ ÿ ÿ ÿ ÿÿ (1ÿ ÿ”¤­ÿ©»Åÿ§¸Ãÿ¤µÀÿŸ±¼ÿ™«¸ÿ•§´ÿ”§´ÿ£±ÿŒŸ­ÿ‰«ÿ†›©ÿ†š©ÿ”¢ÿ|‘ ÿ|‘ ÿxŽÿrˆ—ÿfzˆÿW[^ÿ Aÿ 9ÿ ÿÿÿ ÿ o,ÿÿr*ÿn:ÿm;ÿþþþÿþþþÿþþþÿÿÿÿÿÿÿÿÿÿÿÿÿþþþÿþþþÿm;ÿm;ÿ ÿ ÿ !ÿ ÿ ÿ ÿ ÿ/=ÿ ÿ—§°ÿ«»Åÿ©¹Äÿ¦·Âÿ ²½ÿš­¹ÿ–¨µÿ’¥²ÿ£±ÿŽ¢¯ÿ‰ž¬ÿ…š¨ÿ†›¨ÿ€•¤ÿ€•¤ÿƒ˜¦ÿ}’¡ÿsˆ˜ÿgzˆÿRY^ÿ ÿ ÿ ÿ ÿÿo:ÿm9ÿ ÿ ÿþþþÿþþþÿþþþÿÿÿÿÿÿÿÿÿÿÿÿÿþþþÿþþþÿþþþÿ ÿÿ ÿÿÿÿÿ ÿÿÿ(2<ÿÿš©²ÿ©ºÅÿ¬¼Æÿ¦·Âÿ ±½ÿ˜«·ÿ–©µÿ’¥³ÿ‘¤±ÿ¡¯ÿˆœªÿ†š¨ÿˆœªÿ†›©ÿƒ˜¦ÿ–¥ÿ|‘¡ÿxŒšÿi|ŠÿKSZÿ ÿ ÿ ÿ ÿÿr*ÿn:ÿþþþÿþþþÿþþþÿÿÿÿÿÿÿÿÿÿÿÿÿþþþÿþþþÿþþþÿÿ ÿ ÿÿÿÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ™¨±ÿ©ºÄÿ¬¼Æÿ¥¶ÁÿŸ±½ÿ—ª·ÿ–¨µÿ’¥³ÿ’¥²ÿ¡¯ÿ‹ž¬ÿ‡›ªÿŒ ­ÿ‡œªÿ„™§ÿ–¥ÿ~“¢ÿy›ÿi}ŠÿAJQÿÿ ÿ ÿ ÿ ÿþþþÿþþþÿþþþÿÿÿÿÿÿÿÿÿÿÿÿÿþþþÿþþþÿþþþÿ ÿ ÿÿ ÿ ÿ ÿ ÿÿ ÿ ÿ ÿÿ ÿ ÿ ÿÿšªµÿ©¹Äÿ¬¼Æÿ¥¶Áÿ ±½ÿš­¹ÿ–©µÿ•¨´ÿ“¦³ÿ¤±ÿŒ ®ÿŠž¬ÿŠŸ­ÿˆœªÿ†š¨ÿ„˜§ÿ€•£ÿzŽœÿk}‹ÿ4Dÿª»ÇÿªºÅÿ¨¸Ãÿ¤µÀÿŸ²½ÿœ¯»ÿš¬¸ÿ˜«·ÿ•©µÿ—©¶ÿ’¥³ÿ¢°ÿŒ ®ÿŠž¬ÿˆœ«ÿ‡œªÿ†š©ÿ~‘Ÿÿm€ÿ).4ÿÿ ÿÿÿÿÿÿÿÿÿþþþÿþþþÿ‚ ÿÿ ÿ t.ÿ ÿ†1ÿ ÿ t.ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿÿÿ ÿÿ ÿ ÿ ÿ ÿ?DIÿ§¸ÃÿªºÄÿ©¹Äÿ¦·Áÿ¡²¾ÿž°¼ÿ˜ª·ÿ˜«·ÿ–ª¶ÿ–¨µÿ’¥²ÿŽ¢¯ÿ‹Ÿ­ÿŠž¬ÿЬÿŠž«ÿ…™¨ÿ’ ÿoŽÿ).4ÿ ÿ ÿþþþÿþþþÿÿ !ÿÿÿ !ÿ !ÿˆ&ÿ 'ÿ !ÿ !ÿ ÿ ÿ ÿÿ ÿ ÿ ÿÿ ÿ ÿÿÿ ÿÿ ÿCILÿ¥·Âÿ«¼ÅÿªºÄÿ¦¶Áÿ¢³¾ÿŸ±¼ÿœ®ºÿ™«·ÿ”§´ÿ•§´ÿ‘¤±ÿ¢¯ÿŠŸ­ÿ‹ ­ÿŠž¬ÿˆœ«ÿ€•£ÿ}‘Ÿÿqƒÿ'+0ÿ ÿ ÿ ÿ ÿÿ ÿ t.ÿ ÿ†1ÿ ÿ t.ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿÿÿ ÿÿ ÿ ÿ ÿ ÿ ÿ ÿÿXciÿ¨ºÅÿ­½ÇÿªºÅÿ¨¹Ãÿ£´¿ÿž°»ÿŸ±½ÿ™«·ÿ’¥³ÿ”§´ÿ“¦³ÿ¢°ÿ ®ÿŒ ®ÿŠž¬ÿ…š©ÿ–¤ÿ{ŽžÿnŽÿ'+0ÿ ÿ ÿ ÿ ÿÿ !ÿ !ÿˆ&ÿ 'ÿ !ÿ !ÿ ÿ ÿ ÿÿ ÿ ÿ ÿÿ ÿ ÿÿÿ ÿÿ ÿ ÿ ÿ ÿju}ÿ¨¹Äÿ®¾ÈÿªºÄÿ¨¹Äÿ¤µÁÿŸ²½ÿž°¼ÿ™¬¸ÿ“¦³ÿ•§´ÿ“¦³ÿ‘¤²ÿ£°ÿŽ¢¯ÿŒŸ®ÿ‰¬ÿ†š¨ÿ|žÿkŒér‰˜)17ÿ ÿ ÿ ÿ ÿÿÿ ÿ ÿ ÿ  ÿ  ÿÿÿÿÿÿÿ ÿÿ ÿ ÿÿÿÿÿ ÿ ÿÿÿu†ÿ¤µÁÿ®¾ÈÿªºÄÿ¨¹Äÿ¤µÀÿ¡³¾ÿ®ºÿ™¬¸ÿ“¦³ÿ”¦³ÿ“¥²ÿ“¦³ÿ‘¤±ÿ ®ÿŠž­ÿˆœªÿ…™¨ÿ~‘¡ÿsˆ—çd|+4<ÿ ÿ ÿ ÿ ÿÿ !ÿ !ÿ !ÿ 'ÿ !ÿ !ÿ ÿ ÿ ÿÿ ÿ ÿ ÿÿ ÿ ÿÿÿ ÿÿ ÿ ÿÿ ÿx…Žÿ£µÀÿ­½ÇÿªºÄÿ¨¸Ãÿ£´Àÿ ±½ÿ¯»ÿš¬¸ÿ”§´ÿ“¦³ÿ”§´ÿ”§´ÿ‘¤²ÿ¢°ÿˆ«ÿ†›©ÿƒ˜¦ÿ~”£ÿs‰™æd|6@Gÿ ÿ ÿ ÿ ÿÿÿ ÿ ÿ ÿ  ÿ  ÿÿÿÿÿÿÿ ÿÿ ÿ ÿÿÿÿÿ ÿ ÿ ÿ&ÿ‰™£ÿ¥¶Áÿ­½ÈÿªºÅÿ§¸Ãÿ¤µÀÿ¡²¾ÿ¯»ÿ™«·ÿ”§´ÿ”§´ÿ“¦³ÿ•¨µÿ”§´ÿ’¥²ÿŒ ®ÿˆœªÿƒ—¦ÿ”£ÿvŠšçZm{FMÿ/6;ÿ/6;ÿ-4:ÿ'/7ÿ!)1ÿ#*ÿ )ÿ)ÿ 'ÿ$(ÿ$ÿ#ÿ (ÿ!*ÿ'ÿ )ÿ$,ÿ!)3ÿ$,4ÿ)07ÿ.6=ÿ;IUÿMXaÿXclÿˆ–¡ÿ­¹ÿ©¹Ãÿ§·Áÿ¦µÀÿ¥´¿ÿ£³¾ÿž¯»ÿ®¹ÿ™«¸ÿ™«·ÿ—ª¶ÿš¬·ÿ–§´ÿ¡­ÿƒ”¡ÿŸ¨ÿsƒŽÿ{ƒˆÓv€‡ÿdmsÿw€†ÿw€†ÿ~„ˆÿox~ÿkv~ÿ`mvÿR\eÿt}„ÿv}‚ÿtz~ÿsx|ÿvzÿt{€ÿx€…ÿu~„ÿryÿr{ÿz…ÿ…‘™ÿ‘œ£ÿš£ªÿŸ¨°ÿ¡¬´ÿ¦²ºÿ§´»ÿ¦³¼ÿ§³¼ÿ§´¼ÿ©µ¾ÿª¶¿ÿ§´¼ÿ«·¿ÿš¨³ÿ—¦±ÿ™©³ÿž­·ÿ¤±ºÿž©±Ç“¥Öÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿñÿÿÿÿÿÿàÿÿÿÿð?ÿÿàÿÿÀÿÿÀÿÿÀÿÿàÿðÿøÿü?ÿþÿÿÿÿ€ÿÿðÿøÿøÿüÿÿ€ÿÿ€ÿÿ€ÿÿ€ÿÿ€ÿÿ€ÿþÿøÿðÿàÿàÿàÿàÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿàÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿsuite3270-4.1/wx3270if/x3270if.man.m4000077700000000000000000000000001413735575200222222../Common/x3270if.man.m4ustar00rootroot00000000000000suite3270-4.1/wx3270if/x3270if.rc000066400000000000000000000000431413735575200157550ustar00rootroot00000000000000LANGUAGE 0, 0 100 ICON x3270if.ico suite3270-4.1/x3270/000077500000000000000000000000001413735575200136225ustar00rootroot00000000000000suite3270-4.1/x3270/.gitignore000066400000000000000000000000361413735575200156110ustar00rootroot00000000000000conf.h Imakefile Makefile.obj suite3270-4.1/x3270/3270-12.bdf000066400000000000000000001124521413735575200151170ustar00rootroot00000000000000STARTFONT 2.1 COMMENT "12-point 3270 font" COMMENT "Uses nonstandard ordering:" COMMENT " Page 0: EBCDIC US-International set, CG order" COMMENT " Page 1: EBCDIC APL/APL2 set, CG order (incomplete)" COMMENT " Page 2: (first 16 characters only) DEC line-drawing characters from" COMMENT " fixed-width X fonts" COMMENT "" COMMENT "Copyright 1993-2008 by Paul Mattes." COMMENT " Permission to use, copy, modify, and distribute this software and" COMMENT " its documentation for any purpose and without fee is hereby" COMMENT " granted, provided that the above copyright notice appear in all" COMMENT " copies and that both that copyright notice and this permission" COMMENT " notice appear in supporting documentation." COMMENT "" COMMENT "x3270 is distributed in the hope that it will be useful, but WITHOUT" COMMENT "ANY WARRANTY; without even the implied warranty of MERCHANTABILITY" COMMENT "or FITNESS FOR A PARTICULAR PURPOSE. See the file LICENSE for more" COMMENT "details." FONT 3270-12 SIZE 12 72 72 FONTBOUNDINGBOX 7 12 0 -2 STARTPROPERTIES 17 FONTNAME_REGISTRY "" FOUNDRY "Misc" FAMILY_NAME "3270" WEIGHT_NAME "Medium" SLANT "R" SETWIDTH_NAME "Normal" PIXEL_SIZE 12 POINT_SIZE 120 RESOLUTION_X 72 RESOLUTION_Y 72 SPACING "C" AVERAGE_WIDTH 60 CHARSET_REGISTRY "3270cg" CHARSET_ENCODING "1" FONT_ASCENT 10 FONT_DESCENT 2 DEFAULT_CHAR 514 ENDPROPERTIES CHARS 314 STARTCHAR null ENCODING 0 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 00 00 00 00 00 00 00 00 00 00 00 ENDCHAR STARTCHAR nobreakspace ENCODING 1 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 00 00 00 00 00 00 00 00 00 00 00 ENDCHAR STARTCHAR euro ENCODING 2 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 38 44 40 f8 40 f8 40 44 38 00 00 ENDCHAR STARTCHAR cr ENCODING 3 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 00 00 00 00 00 00 00 00 00 00 00 ENDCHAR STARTCHAR nl ENCODING 4 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 00 00 00 00 00 00 00 00 00 00 00 ENDCHAR STARTCHAR em ENCODING 5 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 00 00 00 00 00 00 00 00 00 00 00 ENDCHAR STARTCHAR eightones ENCODING 6 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 00 00 3c 7e 7e 7e 7e 3c 00 00 00 ENDCHAR STARTCHAR hyphen ENCODING 7 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 00 00 00 00 7c 00 00 00 00 00 00 ENDCHAR STARTCHAR greater ENCODING 8 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 80 40 20 10 08 04 08 10 20 40 80 00 ENDCHAR STARTCHAR less ENCODING 9 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 04 08 10 20 40 80 40 20 10 08 04 00 ENDCHAR STARTCHAR bracketleft ENCODING 10 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 3c 20 20 20 20 20 20 20 20 20 3c 00 ENDCHAR STARTCHAR bracketright ENCODING 11 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 78 08 08 08 08 08 08 08 08 08 78 00 ENDCHAR STARTCHAR parenright ENCODING 12 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 20 10 10 08 08 08 08 08 10 10 20 00 ENDCHAR STARTCHAR parenleft ENCODING 13 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 08 10 10 20 20 20 20 20 10 10 08 00 ENDCHAR STARTCHAR braceright ENCODING 14 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 60 10 10 10 10 0c 10 10 10 10 60 00 ENDCHAR STARTCHAR braceleft ENCODING 15 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 0c 10 10 10 10 60 10 10 10 10 0c 00 ENDCHAR STARTCHAR space ENCODING 16 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 00 00 00 00 00 00 00 00 00 00 00 ENDCHAR STARTCHAR equal ENCODING 17 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 00 00 7c 00 00 00 7c 00 00 00 00 ENDCHAR STARTCHAR apostrophe ENCODING 18 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 08 08 10 20 00 00 00 00 00 00 00 00 ENDCHAR STARTCHAR quotedbl ENCODING 19 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 48 48 48 48 00 00 00 00 00 00 00 00 ENDCHAR STARTCHAR slash ENCODING 20 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 04 04 08 08 10 10 20 20 40 40 00 00 ENDCHAR STARTCHAR backslash ENCODING 21 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 40 40 20 20 10 10 08 08 04 04 00 00 ENDCHAR STARTCHAR bar ENCODING 22 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 10 10 10 10 10 10 10 10 10 10 10 10 ENDCHAR STARTCHAR brokenbar ENCODING 23 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 10 10 10 10 00 00 00 10 10 10 10 00 ENDCHAR STARTCHAR question ENCODING 24 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 38 44 44 04 08 10 10 00 00 10 00 00 ENDCHAR STARTCHAR exclam ENCODING 25 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 10 10 10 10 10 10 10 00 00 10 00 00 ENDCHAR STARTCHAR dollar ENCODING 26 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 10 38 54 50 50 38 14 14 54 38 10 00 ENDCHAR STARTCHAR cent ENCODING 27 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 10 10 38 54 50 50 50 54 38 10 10 00 ENDCHAR STARTCHAR sterling ENCODING 28 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 18 24 20 20 f8 20 20 20 e0 dc 00 00 ENDCHAR STARTCHAR yen ENCODING 29 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 44 44 28 38 10 7c 10 7c 10 10 00 00 ENDCHAR STARTCHAR paragraph ENCODING 30 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP f0 88 88 88 f0 80 88 9c 88 88 08 00 ENDCHAR STARTCHAR currency ENCODING 31 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 84 48 30 48 48 30 48 84 00 00 00 ENDCHAR STARTCHAR 0 ENCODING 32 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 38 44 44 44 54 44 44 44 38 00 00 ENDCHAR STARTCHAR 1 ENCODING 33 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 10 30 50 10 10 10 10 10 7c 00 00 ENDCHAR STARTCHAR 2 ENCODING 34 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 38 44 04 04 08 10 20 40 7c 00 00 ENDCHAR STARTCHAR 3 ENCODING 35 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 38 44 04 04 18 04 04 44 38 00 00 ENDCHAR STARTCHAR 4 ENCODING 36 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 08 48 48 48 48 7c 08 08 08 00 00 ENDCHAR STARTCHAR 5 ENCODING 37 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 7c 40 40 78 04 04 44 44 38 00 00 ENDCHAR STARTCHAR 6 ENCODING 38 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 38 44 40 40 78 44 44 44 38 00 00 ENDCHAR STARTCHAR 7 ENCODING 39 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 7c 44 04 08 08 08 10 10 10 00 00 ENDCHAR STARTCHAR 8 ENCODING 40 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 38 44 44 44 38 44 44 44 38 00 00 ENDCHAR STARTCHAR 9 ENCODING 41 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 38 44 44 44 3c 04 04 44 38 00 00 ENDCHAR STARTCHAR ssharp ENCODING 42 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 20 50 90 a0 90 88 84 84 c4 b8 00 00 ENDCHAR STARTCHAR section ENCODING 43 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 38 40 40 a0 90 88 44 24 14 08 08 70 ENDCHAR STARTCHAR numbersign ENCODING 44 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 24 24 24 7e 24 48 fc 48 48 48 00 00 ENDCHAR STARTCHAR at ENCODING 45 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 10 28 44 5c 54 54 5c 40 24 18 00 00 ENDCHAR STARTCHAR percent ENCODING 46 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 64 94 98 68 10 10 2c 32 52 4c 00 00 ENDCHAR STARTCHAR underscore ENCODING 47 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 00 00 00 00 00 00 00 00 00 fc 00 ENDCHAR STARTCHAR ampersand ENCODING 48 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 30 48 48 30 20 52 8c 88 88 76 00 00 ENDCHAR STARTCHAR minus ENCODING 49 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 00 00 00 00 7c 00 00 00 00 00 00 ENDCHAR STARTCHAR period ENCODING 50 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 00 00 00 00 00 00 00 18 18 00 00 ENDCHAR STARTCHAR comma ENCODING 51 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 00 00 00 00 00 00 00 18 18 08 30 ENDCHAR STARTCHAR colon ENCODING 52 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 00 00 18 18 00 00 00 18 18 00 00 ENDCHAR STARTCHAR plus ENCODING 53 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 00 00 10 10 7c 10 10 00 00 00 00 ENDCHAR STARTCHAR notsign ENCODING 54 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 00 fc 04 04 00 00 00 00 00 00 00 ENDCHAR STARTCHAR macron ENCODING 55 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 fc 00 00 00 00 00 00 00 00 00 00 ENDCHAR STARTCHAR degree ENCODING 56 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 30 48 48 30 00 00 00 00 00 00 00 00 ENDCHAR STARTCHAR periodcentered ENCODING 57 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 00 00 00 00 18 18 00 00 00 00 00 ENDCHAR STARTCHAR asciicircum ENCODING 58 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 10 28 44 00 00 00 00 00 00 00 00 ENDCHAR STARTCHAR asciitilde ENCODING 59 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 24 54 48 00 00 00 00 00 00 00 00 ENDCHAR STARTCHAR diaeresis ENCODING 60 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 cc cc 00 00 00 00 00 00 00 00 00 ENDCHAR STARTCHAR grave ENCODING 61 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 20 10 08 00 00 00 00 00 00 00 00 ENDCHAR STARTCHAR acute ENCODING 62 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 08 10 20 00 00 00 00 00 00 00 00 ENDCHAR STARTCHAR cedilla ENCODING 63 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 00 00 00 00 00 00 00 08 08 08 30 ENDCHAR STARTCHAR agrave ENCODING 64 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 20 10 00 00 38 04 3c 44 44 3c 00 00 ENDCHAR STARTCHAR egrave ENCODING 65 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 20 10 00 00 38 44 7c 40 44 38 00 00 ENDCHAR STARTCHAR igrave ENCODING 66 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 20 10 00 00 70 10 10 10 10 10 00 00 ENDCHAR STARTCHAR ograve ENCODING 67 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 20 10 00 00 38 44 44 44 44 38 00 00 ENDCHAR STARTCHAR ugrave ENCODING 68 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 20 10 00 00 44 44 44 44 4c 34 00 00 ENDCHAR STARTCHAR atilde ENCODING 69 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 14 28 00 00 38 04 3c 44 44 3c 00 00 ENDCHAR STARTCHAR otilde ENCODING 70 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 14 28 00 00 38 44 44 44 44 38 00 00 ENDCHAR STARTCHAR ydiaeresis ENCODING 71 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 24 00 00 44 24 24 14 18 08 08 70 ENDCHAR STARTCHAR Yacute ENCODING 72 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 04 08 10 44 44 44 28 10 10 10 00 00 ENDCHAR STARTCHAR yacute ENCODING 73 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 04 08 10 00 44 24 24 14 18 08 08 70 ENDCHAR STARTCHAR eacute ENCODING 74 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 08 10 00 00 38 44 7c 40 44 38 00 00 ENDCHAR STARTCHAR onequarter ENCODING 75 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 20 60 20 20 70 00 14 14 1c 04 04 00 ENDCHAR STARTCHAR onehalf ENCODING 76 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 20 60 20 20 70 00 18 04 08 10 1c 00 ENDCHAR STARTCHAR threequarters ENCODING 77 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 60 10 20 10 60 00 14 14 1c 04 04 00 ENDCHAR STARTCHAR udiaeresis ENCODING 78 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 44 00 00 44 44 44 44 4c 34 00 00 ENDCHAR STARTCHAR ccedilla ENCODING 79 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 00 00 38 44 40 40 40 44 38 10 70 ENDCHAR STARTCHAR adiaeresis ENCODING 80 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 44 00 00 38 04 3c 44 44 3c 00 00 ENDCHAR STARTCHAR ediaeresis ENCODING 81 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 44 00 00 38 44 7c 40 44 38 00 00 ENDCHAR STARTCHAR idiaeresis ENCODING 82 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 48 00 00 70 10 10 10 10 10 00 00 ENDCHAR STARTCHAR odiaeresis ENCODING 83 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 44 00 00 38 44 44 44 44 38 00 00 ENDCHAR STARTCHAR mu ENCODING 84 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 00 00 44 44 44 44 44 6c 54 40 40 ENDCHAR STARTCHAR acircumflex ENCODING 85 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 10 28 00 00 38 04 3c 44 44 3c 00 00 ENDCHAR STARTCHAR ecircumflex ENCODING 86 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 10 28 00 00 38 44 7c 40 44 38 00 00 ENDCHAR STARTCHAR icircumflex ENCODING 87 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 10 28 00 00 70 10 10 10 10 10 00 00 ENDCHAR STARTCHAR ocircumflex ENCODING 88 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 10 28 00 00 38 44 44 44 44 38 00 00 ENDCHAR STARTCHAR ucircumflex ENCODING 89 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 10 28 00 00 44 44 44 44 4c 34 00 00 ENDCHAR STARTCHAR aacute ENCODING 90 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 08 10 00 00 38 04 3c 44 44 3c 00 00 ENDCHAR STARTCHAR multiply ENCODING 91 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 00 00 44 28 10 28 44 00 00 00 00 ENDCHAR STARTCHAR iacute ENCODING 92 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 08 10 00 00 70 10 10 10 10 10 00 00 ENDCHAR STARTCHAR oacute ENCODING 93 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 08 10 00 00 38 44 44 44 44 38 00 00 ENDCHAR STARTCHAR uacute ENCODING 94 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 08 10 00 00 44 44 44 44 4c 34 00 00 ENDCHAR STARTCHAR ntilde ENCODING 95 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 14 28 00 00 58 64 44 44 44 44 00 00 ENDCHAR STARTCHAR Agrave ENCODING 96 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 10 08 00 10 28 28 44 7c 44 44 00 00 ENDCHAR STARTCHAR Egrave ENCODING 97 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 10 08 00 7c 40 40 7c 40 40 7c 00 00 ENDCHAR STARTCHAR Igrave ENCODING 98 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 20 10 00 7c 10 10 10 10 10 7c 00 00 ENDCHAR STARTCHAR Ograve ENCODING 99 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 20 10 00 38 44 44 44 44 44 38 00 00 ENDCHAR STARTCHAR Ugrave ENCODING 100 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 20 10 00 44 44 44 44 44 44 38 00 00 ENDCHAR STARTCHAR Atilde ENCODING 101 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 14 28 00 10 28 28 44 7c 44 44 00 00 ENDCHAR STARTCHAR Otilde ENCODING 102 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 14 28 00 38 44 44 44 44 44 38 00 00 ENDCHAR STARTCHAR onesuperior ENCODING 103 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 10 30 10 10 38 00 00 00 00 00 00 ENDCHAR STARTCHAR twosuperior ENCODING 104 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 30 08 10 20 38 00 00 00 00 00 00 ENDCHAR STARTCHAR threesuperior ENCODING 105 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 30 08 10 08 30 00 00 00 00 00 00 ENDCHAR STARTCHAR ordfeminine ENCODING 106 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 30 08 38 48 38 00 78 00 00 00 00 ENDCHAR STARTCHAR masculine ENCODING 107 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 30 48 48 48 30 00 78 00 00 00 00 ENDCHAR STARTCHAR guillemotleft ENCODING 108 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 00 00 00 24 48 24 00 00 00 00 00 ENDCHAR STARTCHAR guillemotright ENCODING 109 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 00 00 00 48 24 48 00 00 00 00 00 ENDCHAR STARTCHAR exclamdown ENCODING 110 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 10 00 00 10 10 10 10 10 10 10 00 00 ENDCHAR STARTCHAR questiondown ENCODING 111 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 10 00 00 10 10 20 40 44 44 38 00 00 ENDCHAR STARTCHAR Adiaeresis ENCODING 112 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 44 00 10 28 28 44 7c 44 44 00 00 ENDCHAR STARTCHAR Ediaeresis ENCODING 113 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 44 00 7c 40 40 7c 40 40 7c 00 00 ENDCHAR STARTCHAR Idiaeresis ENCODING 114 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 44 00 7c 10 10 10 10 10 7c 00 00 ENDCHAR STARTCHAR Odiaeresis ENCODING 115 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 44 00 38 44 44 44 44 44 38 00 00 ENDCHAR STARTCHAR Udiaeresis ENCODING 116 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 44 00 44 44 44 44 44 44 38 00 00 ENDCHAR STARTCHAR Acircumflex ENCODING 117 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 10 28 00 10 28 28 44 7c 44 44 00 00 ENDCHAR STARTCHAR Ecircumflex ENCODING 118 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 10 28 00 7c 40 40 7c 40 40 7c 00 00 ENDCHAR STARTCHAR Icircumflex ENCODING 119 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 10 28 00 7c 10 10 10 10 10 7c 00 00 ENDCHAR STARTCHAR Ocircumflex ENCODING 120 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 10 28 00 38 44 44 44 44 44 38 00 00 ENDCHAR STARTCHAR Ucircumflex ENCODING 121 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 10 28 00 44 44 44 44 44 44 38 00 00 ENDCHAR STARTCHAR Aacute ENCODING 122 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 08 10 00 10 28 28 44 7c 44 44 00 00 ENDCHAR STARTCHAR Eacute ENCODING 123 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 08 10 00 7c 40 40 7c 40 40 7c 00 00 ENDCHAR STARTCHAR Iacute ENCODING 124 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 08 10 00 7c 10 10 10 10 10 7c 00 00 ENDCHAR STARTCHAR Oacute ENCODING 125 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 08 10 00 38 44 44 44 44 44 38 00 00 ENDCHAR STARTCHAR Uacute ENCODING 126 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 08 10 00 44 44 44 44 44 44 38 00 00 ENDCHAR STARTCHAR Ntilde ENCODING 127 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 14 28 00 44 64 64 54 4c 4c 44 00 00 ENDCHAR STARTCHAR a ENCODING 128 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 00 00 38 44 04 3c 44 44 3c 00 00 ENDCHAR STARTCHAR b ENCODING 129 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 40 40 58 64 44 44 44 64 58 00 00 ENDCHAR STARTCHAR c ENCODING 130 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 00 00 38 44 40 40 40 44 38 00 00 ENDCHAR STARTCHAR d ENCODING 131 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 04 04 34 4c 44 44 44 4c 34 00 00 ENDCHAR STARTCHAR e ENCODING 132 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 00 00 38 44 44 7c 40 44 38 00 00 ENDCHAR STARTCHAR f ENCODING 133 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 0c 10 10 7c 10 10 10 10 10 00 00 ENDCHAR STARTCHAR g ENCODING 134 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 00 00 34 4c 44 44 4c 34 04 44 38 ENDCHAR STARTCHAR h ENCODING 135 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 40 40 58 64 44 44 44 44 44 00 00 ENDCHAR STARTCHAR i ENCODING 136 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 10 00 70 10 10 10 10 10 10 00 00 ENDCHAR STARTCHAR j ENCODING 137 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 08 00 38 08 08 08 08 08 08 48 30 ENDCHAR STARTCHAR k ENCODING 138 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 40 40 48 50 60 60 50 48 44 00 00 ENDCHAR STARTCHAR l ENCODING 139 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 38 08 08 08 08 08 08 08 08 00 00 ENDCHAR STARTCHAR m ENCODING 140 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 00 00 68 54 54 54 54 54 54 00 00 ENDCHAR STARTCHAR n ENCODING 141 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 00 00 58 64 44 44 44 44 44 00 00 ENDCHAR STARTCHAR o ENCODING 142 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 00 00 38 44 44 44 44 44 38 00 00 ENDCHAR STARTCHAR p ENCODING 143 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 00 00 58 64 44 44 44 64 58 40 40 ENDCHAR STARTCHAR q ENCODING 144 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 00 00 34 4c 44 44 44 4c 34 04 04 ENDCHAR STARTCHAR r ENCODING 145 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 00 00 58 64 40 40 40 40 40 00 00 ENDCHAR STARTCHAR s ENCODING 146 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 00 00 38 44 40 38 04 44 38 00 00 ENDCHAR STARTCHAR t ENCODING 147 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 10 10 7c 10 10 10 10 10 0c 00 00 ENDCHAR STARTCHAR u ENCODING 148 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 00 00 44 44 44 44 44 4c 34 00 00 ENDCHAR STARTCHAR v ENCODING 149 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 00 00 44 44 44 28 28 10 10 00 00 ENDCHAR STARTCHAR w ENCODING 150 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 00 00 44 44 54 54 54 54 28 00 00 ENDCHAR STARTCHAR x ENCODING 151 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 00 00 44 44 28 10 28 44 44 00 00 ENDCHAR STARTCHAR y ENCODING 152 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 00 00 44 44 24 24 14 18 08 08 70 ENDCHAR STARTCHAR z ENCODING 153 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 00 00 7c 04 08 10 20 40 7c 00 00 ENDCHAR STARTCHAR ae ENCODING 154 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 00 00 ee 10 30 5e 90 90 6e 00 00 ENDCHAR STARTCHAR oslash ENCODING 155 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 00 00 3a 44 4c 54 64 44 b8 00 00 ENDCHAR STARTCHAR aring ENCODING 156 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 38 38 00 38 44 04 3c 44 44 3c 00 00 ENDCHAR STARTCHAR division ENCODING 157 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 00 00 30 30 00 78 00 30 30 00 00 ENDCHAR STARTCHAR fm ENCODING 158 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 7c 7c 00 00 18 18 00 00 18 18 08 30 ENDCHAR STARTCHAR dup ENCODING 159 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 7c 7c 00 10 54 38 38 54 10 00 00 00 ENDCHAR STARTCHAR A ENCODING 160 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 10 10 28 28 28 44 7c 44 44 00 00 ENDCHAR STARTCHAR B ENCODING 161 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 70 48 48 48 78 44 44 44 78 00 00 ENDCHAR STARTCHAR C ENCODING 162 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 38 44 44 40 40 40 44 44 38 00 00 ENDCHAR STARTCHAR D ENCODING 163 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 70 48 44 44 44 44 44 48 70 00 00 ENDCHAR STARTCHAR E ENCODING 164 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 7c 40 40 40 78 40 40 40 7c 00 00 ENDCHAR STARTCHAR F ENCODING 165 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 7c 40 40 40 78 40 40 40 40 00 00 ENDCHAR STARTCHAR G ENCODING 166 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 38 44 40 40 4c 44 44 4c 34 00 00 ENDCHAR STARTCHAR H ENCODING 167 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 44 44 44 44 7c 44 44 44 44 00 00 ENDCHAR STARTCHAR I ENCODING 168 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 7c 10 10 10 10 10 10 10 7c 00 00 ENDCHAR STARTCHAR J ENCODING 169 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 3c 08 08 08 08 08 48 48 30 00 00 ENDCHAR STARTCHAR K ENCODING 170 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 44 48 50 60 50 48 48 44 44 00 00 ENDCHAR STARTCHAR L ENCODING 171 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 40 40 40 40 40 40 40 40 7c 00 00 ENDCHAR STARTCHAR M ENCODING 172 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 84 84 cc cc b4 b4 84 84 84 00 00 ENDCHAR STARTCHAR N ENCODING 173 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 44 64 64 54 54 4c 4c 44 44 00 00 ENDCHAR STARTCHAR O ENCODING 174 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 38 44 44 44 44 44 44 44 38 00 00 ENDCHAR STARTCHAR P ENCODING 175 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 78 44 44 44 78 40 40 40 40 00 00 ENDCHAR STARTCHAR Q ENCODING 176 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 38 44 44 44 44 44 44 44 38 10 0c ENDCHAR STARTCHAR R ENCODING 177 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 78 44 44 44 78 48 44 44 44 00 00 ENDCHAR STARTCHAR S ENCODING 178 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 38 44 40 20 18 04 04 44 38 00 00 ENDCHAR STARTCHAR T ENCODING 179 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 7c 10 10 10 10 10 10 10 10 00 00 ENDCHAR STARTCHAR U ENCODING 180 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 44 44 44 44 44 44 44 44 38 00 00 ENDCHAR STARTCHAR V ENCODING 181 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 44 44 44 28 28 28 10 10 10 00 00 ENDCHAR STARTCHAR W ENCODING 182 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 82 82 82 92 54 54 54 28 28 00 00 ENDCHAR STARTCHAR X ENCODING 183 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 44 44 28 28 10 28 28 44 44 00 00 ENDCHAR STARTCHAR Y ENCODING 184 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 44 44 44 28 10 10 10 10 10 00 00 ENDCHAR STARTCHAR Z ENCODING 185 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 7c 04 04 08 10 20 40 40 7c 00 00 ENDCHAR STARTCHAR AE ENCODING 186 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 1c 30 30 50 5c 70 90 90 9c 00 00 ENDCHAR STARTCHAR Ooblique ENCODING 187 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 38 44 44 4c 54 54 64 44 44 38 00 ENDCHAR STARTCHAR Aring ENCODING 188 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 38 38 00 10 28 28 44 7c 44 44 00 00 ENDCHAR STARTCHAR Ccedilla ENCODING 189 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 38 44 44 40 40 40 44 44 38 10 70 ENDCHAR STARTCHAR semicolon ENCODING 190 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 00 00 18 18 00 00 00 18 18 08 30 ENDCHAR STARTCHAR asterisk ENCODING 191 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 10 54 38 38 54 10 00 00 00 00 00 ENDCHAR STARTCHAR c0 ENCODING 192 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 00 00 00 00 00 00 00 00 00 00 00 ENDCHAR STARTCHAR c1 ENCODING 193 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 00 00 00 00 00 00 00 00 00 00 00 ENDCHAR STARTCHAR c2 ENCODING 194 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 00 00 00 00 00 00 00 00 00 00 00 ENDCHAR STARTCHAR c3 ENCODING 195 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 00 00 00 00 00 00 00 00 00 00 00 ENDCHAR STARTCHAR c4 ENCODING 196 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 00 00 00 00 00 00 00 00 00 00 00 ENDCHAR STARTCHAR c5 ENCODING 197 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 00 00 00 00 00 00 00 00 00 00 00 ENDCHAR STARTCHAR c6 ENCODING 198 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 00 00 00 00 00 00 00 00 00 00 00 ENDCHAR STARTCHAR c7 ENCODING 199 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 00 00 00 00 00 00 00 00 00 00 00 ENDCHAR STARTCHAR c8 ENCODING 200 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 00 00 00 00 00 00 00 00 00 00 00 ENDCHAR STARTCHAR c9 ENCODING 201 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 00 00 00 00 00 00 00 00 00 00 00 ENDCHAR STARTCHAR ca ENCODING 202 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 00 00 00 00 00 00 00 00 00 00 00 ENDCHAR STARTCHAR cb ENCODING 203 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 00 00 00 00 00 00 00 00 00 00 00 ENDCHAR STARTCHAR cc ENCODING 204 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 00 00 00 00 00 00 00 00 00 00 00 ENDCHAR STARTCHAR cd ENCODING 205 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 00 00 00 00 00 00 00 00 00 00 00 ENDCHAR STARTCHAR ce ENCODING 206 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 00 00 00 00 00 00 00 00 00 00 00 ENDCHAR STARTCHAR cf ENCODING 207 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 00 00 00 00 00 00 00 00 00 00 00 ENDCHAR STARTCHAR copyright ENCODING 208 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 38 44 54 64 54 44 38 00 00 00 00 ENDCHAR STARTCHAR registered ENCODING 209 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 38 44 74 74 6c 44 38 00 00 00 00 ENDCHAR STARTCHAR boxA ENCODING 210 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 20 50 88 88 f8 88 88 00 fe 82 82 fe ENDCHAR STARTCHAR insert ENCODING 211 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 00 00 10 38 7c ee c6 82 00 00 00 ENDCHAR STARTCHAR boxB ENCODING 212 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 1c 12 12 1c 12 12 1c 00 fe 82 82 fe ENDCHAR STARTCHAR box6 ENCODING 213 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP fe 82 82 92 a2 b2 aa 92 82 82 fe 00 ENDCHAR STARTCHAR plusminus ENCODING 214 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 00 00 10 10 7c 10 10 00 7c 00 00 ENDCHAR STARTCHAR ETH ENCODING 215 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 70 48 44 44 f4 44 44 48 70 00 00 ENDCHAR STARTCHAR rightarrow ENCODING 216 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 00 00 08 0c fe 0c 08 00 00 00 00 ENDCHAR STARTCHAR THORN ENCODING 217 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 40 40 78 44 44 44 78 40 40 00 00 ENDCHAR STARTCHAR upshift ENCODING 218 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 10 28 44 82 ee 28 28 28 28 28 38 00 ENDCHAR STARTCHAR human ENCODING 219 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 38 28 38 10 fe 10 10 28 44 82 00 ENDCHAR STARTCHAR underB ENCODING 220 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 78 24 24 38 24 24 78 00 fe 00 00 00 ENDCHAR STARTCHAR downshift ENCODING 221 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 38 28 28 28 28 28 ee 82 44 28 10 00 ENDCHAR STARTCHAR boxquestion ENCODING 222 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP fe 82 92 aa 8a 92 92 82 92 82 fe 00 ENDCHAR STARTCHAR boxsolid ENCODING 223 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP fe fe fe fe fe fe fe fe fe fe fe 00 ENDCHAR STARTCHAR e0 ENCODING 224 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 00 00 00 00 00 00 00 00 00 00 00 ENDCHAR STARTCHAR e1 ENCODING 225 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 00 00 00 00 00 00 00 00 00 00 00 ENDCHAR STARTCHAR e2 ENCODING 226 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 00 00 00 00 00 00 00 00 00 00 00 ENDCHAR STARTCHAR e3 ENCODING 227 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 00 00 00 00 00 00 00 00 00 00 00 ENDCHAR STARTCHAR e4 ENCODING 228 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 00 00 00 00 00 00 00 00 00 00 00 ENDCHAR STARTCHAR e5 ENCODING 229 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 00 00 00 00 00 00 00 00 00 00 00 ENDCHAR STARTCHAR e6 ENCODING 230 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 00 00 00 00 00 00 00 00 00 00 00 ENDCHAR STARTCHAR e7 ENCODING 231 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 00 00 00 00 00 00 00 00 00 00 00 ENDCHAR STARTCHAR e8 ENCODING 232 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 00 00 00 00 00 00 00 00 00 00 00 ENDCHAR STARTCHAR e9 ENCODING 233 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 00 00 00 00 00 00 00 00 00 00 00 ENDCHAR STARTCHAR ea ENCODING 234 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 00 00 00 00 00 00 00 00 00 00 00 ENDCHAR STARTCHAR eb ENCODING 235 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 00 00 00 00 00 00 00 00 00 00 00 ENDCHAR STARTCHAR ec ENCODING 236 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 00 00 00 00 00 00 00 00 00 00 00 ENDCHAR STARTCHAR ed ENCODING 237 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 00 00 00 00 00 00 00 00 00 00 00 ENDCHAR STARTCHAR ee ENCODING 238 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 00 00 00 00 00 00 00 00 00 00 00 ENDCHAR STARTCHAR ef ENCODING 239 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 00 00 00 00 00 00 00 00 00 00 00 ENDCHAR STARTCHAR badcommhi ENCODING 240 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 80 80 40 40 20 fe 10 10 08 08 04 04 ENDCHAR STARTCHAR commhi ENCODING 241 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 00 00 00 00 fe 00 00 00 00 00 00 ENDCHAR STARTCHAR commjag ENCODING 242 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 00 00 00 00 fc 08 10 20 7e 00 00 ENDCHAR STARTCHAR commlo ENCODING 243 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 00 00 00 00 00 00 00 00 fe 00 00 ENDCHAR STARTCHAR clockleft ENCODING 244 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 02 10 00 40 00 02 82 02 02 42 02 10 ENDCHAR STARTCHAR clockright ENCODING 245 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 20 00 28 40 80 04 00 00 08 00 20 00 ENDCHAR STARTCHAR lock ENCODING 246 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 82 c6 ee 7c 38 38 38 7c ee c6 82 00 ENDCHAR STARTCHAR eth ENCODING 247 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 28 10 28 04 34 4c 44 44 4c 34 00 00 ENDCHAR STARTCHAR leftarrow ENCODING 248 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 00 00 20 60 fe 60 20 00 00 00 00 ENDCHAR STARTCHAR thorn ENCODING 249 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 40 58 64 44 44 44 64 58 40 00 00 ENDCHAR STARTCHAR keyleft ENCODING 250 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 00 38 44 46 44 38 00 00 00 00 00 ENDCHAR STARTCHAR keyright ENCODING 251 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 00 00 00 fe 36 36 06 00 00 00 00 ENDCHAR STARTCHAR box4 ENCODING 252 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP fe 82 8a 9a aa ba 8a 8a 82 82 fe 00 ENDCHAR STARTCHAR underA ENCODING 253 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 10 28 44 44 7c 44 44 00 fe 00 00 00 ENDCHAR STARTCHAR magcard ENCODING 254 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 00 fe 82 82 82 fe 82 fe 00 00 00 ENDCHAR STARTCHAR boxhuman ENCODING 255 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP fe 82 ba aa ba 92 fe 92 92 aa c6 fe ENDCHAR STARTCHAR apl_space ENCODING 272 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 00 00 00 00 00 00 00 00 00 00 00 ENDCHAR STARTCHAR apl_bracketright ENCODING 316 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 78 08 08 08 08 08 08 08 08 08 78 00 ENDCHAR STARTCHAR apl_bracketleft ENCODING 328 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 3c 20 20 20 20 20 20 20 20 20 3c 00 ENDCHAR STARTCHAR apl_stile ENCODING 347 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 10 10 10 10 10 10 10 10 10 10 10 10 ENDCHAR STARTCHAR apl_uparrow ENCODING 364 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 00 08 1c 3e 08 08 08 08 08 00 00 ENDCHAR STARTCHAR apl_downarrow ENCODING 365 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 00 08 08 08 08 08 3e 1c 08 00 00 ENDCHAR STARTCHAR apl_2vertical ENCODING 384 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 44 44 44 44 44 44 44 44 44 44 44 44 ENDCHAR STARTCHAR apl_2horizontal ENCODING 385 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 fe 00 00 00 00 00 00 00 00 fe 00 ENDCHAR STARTCHAR apl_leftvbar ENCODING 386 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 40 40 40 40 40 40 40 40 40 40 40 40 ENDCHAR STARTCHAR apl_rightvbar ENCODING 387 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 04 04 04 04 04 04 04 04 04 04 04 04 ENDCHAR STARTCHAR apl_midvbar ENCODING 388 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 10 10 10 10 10 10 10 10 10 10 10 10 ENDCHAR STARTCHAR apl_leftsolid ENCODING 393 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP f0 f0 f0 f0 f0 f0 f0 f0 f0 f0 f0 f0 ENDCHAR STARTCHAR apl_rightsolid ENCODING 394 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 1e 1e 1e 1e 1e 1e 1e 1e 1e 1e 1e 1e ENDCHAR STARTCHAR apl_topsolid ENCODING 395 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP fe fe fe fe fe fe 00 00 00 00 00 00 ENDCHAR STARTCHAR apl_bottomsolid ENCODING 396 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 00 00 00 00 00 fe fe fe fe fe fe ENDCHAR STARTCHAR apl_solid ENCODING 397 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP fe fe fe fe fe fe fe fe fe fe fe fe ENDCHAR STARTCHAR apl_midhbar ENCODING 402 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 00 00 00 00 fe 00 00 00 00 00 00 ENDCHAR STARTCHAR apl_lowerleft ENCODING 419 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 10 10 10 10 10 1e 00 00 00 00 00 00 ENDCHAR STARTCHAR apl_upperleft ENCODING 420 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 00 00 00 00 1e 10 10 10 10 10 10 ENDCHAR STARTCHAR apl_leftjoin ENCODING 421 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 10 10 10 10 10 1e 10 10 10 10 10 10 ENDCHAR STARTCHAR apl_bottomjoin ENCODING 422 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 10 10 10 10 10 fe 00 00 00 00 00 00 ENDCHAR STARTCHAR apl_intersect ENCODING 427 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 10 10 10 10 10 fe 10 10 10 10 10 10 ENDCHAR STARTCHAR apl_lowerright ENCODING 428 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 10 10 10 10 10 f0 00 00 00 00 00 00 ENDCHAR STARTCHAR apl_upperright ENCODING 429 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 00 00 00 00 f0 10 10 10 10 10 10 ENDCHAR STARTCHAR apl_rightjoin ENCODING 430 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 10 10 10 10 10 f0 10 10 10 10 10 10 ENDCHAR STARTCHAR apl_topjoin ENCODING 431 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 00 00 00 00 fe 10 10 10 10 10 10 ENDCHAR STARTCHAR 200 ENCODING 512 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 38 38 38 38 38 38 38 38 38 38 38 38 ENDCHAR STARTCHAR 201 ENCODING 513 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 00 00 10 38 7c 38 10 00 00 00 00 ENDCHAR STARTCHAR 202 ENCODING 514 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP aa 54 aa 54 aa 54 aa 54 aa 54 aa 54 ENDCHAR STARTCHAR 203 ENCODING 515 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 50 50 70 50 50 00 1c 08 08 08 08 ENDCHAR STARTCHAR 204 ENCODING 516 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 70 40 60 40 40 00 1c 10 18 10 10 ENDCHAR STARTCHAR 205 ENCODING 517 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 30 40 40 40 30 00 18 14 18 14 14 ENDCHAR STARTCHAR 206 ENCODING 518 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 40 40 40 40 70 00 1c 10 18 10 10 ENDCHAR STARTCHAR 207 ENCODING 519 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 30 48 48 30 00 00 00 00 00 00 00 ENDCHAR STARTCHAR 208 ENCODING 520 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 00 00 10 10 7c 10 10 00 7c 00 00 ENDCHAR STARTCHAR 209 ENCODING 521 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 48 68 58 48 48 00 10 10 10 10 1c ENDCHAR STARTCHAR 20a ENCODING 522 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 50 50 50 20 20 00 1c 08 08 08 08 ENDCHAR STARTCHAR 20b ENCODING 523 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 10 10 10 10 10 f0 00 00 00 00 00 00 ENDCHAR STARTCHAR 20c ENCODING 524 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 00 00 00 00 f0 10 10 10 10 10 10 ENDCHAR STARTCHAR 20d ENCODING 525 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 00 00 00 00 1e 10 10 10 10 10 10 ENDCHAR STARTCHAR 20e ENCODING 526 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 10 10 10 10 10 1e 00 00 00 00 00 00 ENDCHAR STARTCHAR 20f ENCODING 527 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 10 10 10 10 10 fe 10 10 10 10 10 10 ENDCHAR STARTCHAR 210 ENCODING 528 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 fe 00 00 00 00 00 00 00 00 00 00 ENDCHAR STARTCHAR 211 ENCODING 529 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 00 00 fe 00 00 00 00 00 00 00 00 ENDCHAR STARTCHAR 212 ENCODING 530 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 00 00 00 00 fe 00 00 00 00 00 00 ENDCHAR STARTCHAR 213 ENCODING 531 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 00 00 00 00 00 00 fe 00 00 00 00 ENDCHAR STARTCHAR 214 ENCODING 532 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 00 00 00 00 00 00 00 00 fe 00 00 ENDCHAR STARTCHAR 215 ENCODING 533 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 10 10 10 10 10 1e 10 10 10 10 10 10 ENDCHAR STARTCHAR 216 ENCODING 534 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 10 10 10 10 10 f0 10 10 10 10 10 10 ENDCHAR STARTCHAR 217 ENCODING 535 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 10 10 10 10 10 fe 00 00 00 00 00 00 ENDCHAR STARTCHAR 218 ENCODING 536 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 00 00 00 00 fe 10 10 10 10 10 10 ENDCHAR STARTCHAR 219 ENCODING 537 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 10 10 10 10 10 10 10 10 10 10 10 10 ENDCHAR STARTCHAR 21a ENCODING 538 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 00 08 10 20 40 20 10 08 00 7c 00 ENDCHAR STARTCHAR 21b ENCODING 539 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 00 20 10 08 04 08 10 20 00 7c 00 ENDCHAR STARTCHAR 21c ENCODING 540 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 00 00 00 7c 28 28 28 28 48 00 00 ENDCHAR STARTCHAR 21d ENCODING 541 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 00 04 08 7c 10 7c 20 40 00 00 00 ENDCHAR STARTCHAR 21e ENCODING 542 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 18 24 20 20 70 20 20 24 58 00 00 ENDCHAR STARTCHAR 21f ENCODING 543 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 00 00 00 00 30 30 00 00 00 00 00 ENDCHAR ENDFONT suite3270-4.1/x3270/3270-12b.bdf000066400000000000000000001145641413735575200152670ustar00rootroot00000000000000STARTFONT 2.1 COMMENT "12-point bold 3270 font" COMMENT "Uses nonstandard ordering:" COMMENT " Page 0: EBCDIC US-International set, CG order" COMMENT " Page 1: EBCDIC APL/APL2 set, CG order (incomplete)" COMMENT " Page 2: (first 16 characters only) DEC line-drawing characters from" COMMENT " fixed-width X fonts" COMMENT "" COMMENT "Copyright (c) 1993-2009, Paul Mattes." COMMENT "All rights reserved." COMMENT "" COMMENT "Redistribution and use in source and binary forms, with or" COMMENT "without modification, are permitted provided that the following" COMMENT "conditions are met:" COMMENT " * Redistributions of source code must retain the above" COMMENT " copyright notice, this list of conditions and the following" COMMENT " disclaimer." COMMENT " * Redistributions in binary form must reproduce the above" COMMENT " copyright notice, this list of conditions and the following" COMMENT " disclaimer in the documentation and/or other materials" COMMENT " provided with the distribution." COMMENT " * Neither the name of Paul Mattes nor his contributors may" COMMENT " be used to endorse or promote products derived from this" COMMENT " software without specific prior written permission." COMMENT "" COMMENT "THIS SOFTWARE IS PROVIDED BY PAUL MATTES 'AS IS' AND ANY" COMMENT "EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO," COMMENT "THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR" COMMENT "A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL PAUL" COMMENT "MATTES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL," COMMENT "EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED" COMMENT "TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE," COMMENT "DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED" COMMENT "AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT" COMMENT "LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING" COMMENT "IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF" COMMENT "THE POSSIBILITY OF SUCH DAMAGE." FONT 3270-12bold SIZE 12 72 72 FONTBOUNDINGBOX 7 12 0 -2 STARTPROPERTIES 17 FONTNAME_REGISTRY "" FOUNDRY "Misc" FAMILY_NAME "3270" WEIGHT_NAME "Bold" SLANT "R" SETWIDTH_NAME "Normal" PIXEL_SIZE 12 POINT_SIZE 120 RESOLUTION_X 72 RESOLUTION_Y 72 SPACING "C" CHARSET_REGISTRY "3270cg" CHARSET_ENCODING "1" AVERAGE_WIDTH 60 FONT_ASCENT 10 FONT_DESCENT 2 DEFAULT_CHAR 514 ENDPROPERTIES CHARS 314 STARTCHAR null ENCODING 0 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 00 00 00 00 00 00 00 00 00 00 00 ENDCHAR STARTCHAR nobreakspace ENCODING 1 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 00 00 00 00 00 00 00 00 00 00 00 ENDCHAR STARTCHAR euro ENCODING 2 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 3C 66 60 FC 60 F8 60 66 3C 00 00 ENDCHAR STARTCHAR cr ENCODING 3 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 00 00 00 00 00 00 00 00 00 00 00 ENDCHAR STARTCHAR nl ENCODING 4 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 00 00 00 00 00 00 00 00 00 00 00 ENDCHAR STARTCHAR em ENCODING 5 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 00 00 00 00 00 00 00 00 00 00 00 ENDCHAR STARTCHAR eightones ENCODING 6 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 00 00 3c 7e 7e 7e 7e 3c 00 00 00 ENDCHAR STARTCHAR hyphen ENCODING 7 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 00 00 00 00 7e 00 00 00 00 00 00 ENDCHAR STARTCHAR greater ENCODING 8 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP c0 60 30 18 0c 06 0c 18 30 60 c0 00 ENDCHAR STARTCHAR less ENCODING 9 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 06 0c 18 30 60 c0 60 30 18 0c 06 00 ENDCHAR STARTCHAR bracketleft ENCODING 10 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 3e 30 30 30 30 30 30 30 30 30 3e 00 ENDCHAR STARTCHAR bracketright ENCODING 11 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 7c 0c 0c 0c 0c 0c 0c 0c 0c 0c 7c 00 ENDCHAR STARTCHAR parenright ENCODING 12 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 30 18 18 0c 0c 0c 0c 0c 18 18 30 00 ENDCHAR STARTCHAR parenleft ENCODING 13 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 0c 18 18 30 30 30 30 30 18 18 0c 00 ENDCHAR STARTCHAR braceright ENCODING 14 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 70 18 18 18 18 0e 18 18 18 18 70 00 ENDCHAR STARTCHAR braceleft ENCODING 15 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 0e 18 18 18 18 70 18 18 18 18 0e 00 ENDCHAR STARTCHAR space ENCODING 16 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 00 00 00 00 00 00 00 00 00 00 00 ENDCHAR STARTCHAR equal ENCODING 17 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 00 00 7e 00 00 00 7e 00 00 00 00 ENDCHAR STARTCHAR apostrophe ENCODING 18 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 0c 0c 18 30 00 00 00 00 00 00 00 00 ENDCHAR STARTCHAR quotedbl ENCODING 19 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 6c 6c 6c 6c 00 00 00 00 00 00 00 00 ENDCHAR STARTCHAR slash ENCODING 20 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 06 06 0c 0c 18 18 30 30 60 60 00 00 ENDCHAR STARTCHAR backslash ENCODING 21 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 60 60 30 30 18 18 0c 0c 06 06 00 00 ENDCHAR STARTCHAR bar ENCODING 22 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 18 18 18 18 18 18 18 18 18 18 18 18 ENDCHAR STARTCHAR brokenbar ENCODING 23 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 18 18 18 18 00 00 00 18 18 18 18 00 ENDCHAR STARTCHAR question ENCODING 24 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 3c 66 66 06 0c 18 18 00 00 18 00 00 ENDCHAR STARTCHAR exclam ENCODING 25 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 18 18 18 18 18 18 18 00 00 18 00 00 ENDCHAR STARTCHAR dollar ENCODING 26 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 18 3c 7e 78 78 3c 1e 1e 7e 3c 18 00 ENDCHAR STARTCHAR cent ENCODING 27 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 18 18 3c 7e 78 78 78 7e 3c 18 18 00 ENDCHAR STARTCHAR sterling ENCODING 28 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 1c 36 30 30 fc 30 30 30 f0 fe 00 00 ENDCHAR STARTCHAR yen ENCODING 29 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 66 66 3c 3c 18 7e 18 7e 18 18 00 00 ENDCHAR STARTCHAR paragraph ENCODING 30 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP f8 cc cc cc f8 c0 cc de cc cc 0c 00 ENDCHAR STARTCHAR currency ENCODING 31 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 c6 6c 38 6c 6c 38 6c c6 00 00 00 ENDCHAR STARTCHAR 0 ENCODING 32 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 3c 66 66 66 7e 66 66 66 3c 00 00 ENDCHAR STARTCHAR 1 ENCODING 33 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 18 38 78 18 18 18 18 18 7e 00 00 ENDCHAR STARTCHAR 2 ENCODING 34 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 3c 66 06 06 0c 18 30 60 7e 00 00 ENDCHAR STARTCHAR 3 ENCODING 35 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 3c 66 06 06 1c 06 06 66 3c 00 00 ENDCHAR STARTCHAR 4 ENCODING 36 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 0c 6c 6c 6c 6c 7e 0c 0c 0c 00 00 ENDCHAR STARTCHAR 5 ENCODING 37 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 7e 60 60 7c 06 06 66 66 3c 00 00 ENDCHAR STARTCHAR 6 ENCODING 38 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 3c 66 60 60 7c 66 66 66 3c 00 00 ENDCHAR STARTCHAR 7 ENCODING 39 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 7e 66 06 0c 0c 0c 18 18 18 00 00 ENDCHAR STARTCHAR 8 ENCODING 40 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 3c 66 66 66 3c 66 66 66 3c 00 00 ENDCHAR STARTCHAR 9 ENCODING 41 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 3c 66 66 66 3e 06 06 66 3c 00 00 ENDCHAR STARTCHAR ssharp ENCODING 42 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 30 78 d8 f0 d8 cc c6 c6 e6 fc 00 00 ENDCHAR STARTCHAR section ENCODING 43 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 3c 60 60 f0 d8 cc 66 36 1e 0c 0c 78 ENDCHAR STARTCHAR numbersign ENCODING 44 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 36 36 36 7e 36 6c fe 6c 6c 6c 00 00 ENDCHAR STARTCHAR at ENCODING 45 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 18 3c 66 7e 7e 7e 7e 60 36 1c 00 00 ENDCHAR STARTCHAR percent ENCODING 46 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 76 de dc 7c 18 18 3e 3a 7a 6e 00 00 ENDCHAR STARTCHAR underscore ENCODING 47 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 00 00 00 00 00 00 00 00 00 fe 00 ENDCHAR STARTCHAR ampersand ENCODING 48 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 38 6c 6c 38 30 7a ce cc cc 7e 00 00 ENDCHAR STARTCHAR minus ENCODING 49 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 00 00 00 00 7e 00 00 00 00 00 00 ENDCHAR STARTCHAR period ENCODING 50 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 00 00 00 00 00 00 00 1c 1c 00 00 ENDCHAR STARTCHAR comma ENCODING 51 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 00 00 00 00 00 00 00 1c 1c 0c 38 ENDCHAR STARTCHAR colon ENCODING 52 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 00 00 1c 1c 00 00 00 1c 1c 00 00 ENDCHAR STARTCHAR plus ENCODING 53 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 00 00 18 18 7e 18 18 00 00 00 00 ENDCHAR STARTCHAR notsign ENCODING 54 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 00 fe 06 06 00 00 00 00 00 00 00 ENDCHAR STARTCHAR macron ENCODING 55 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 fe 00 00 00 00 00 00 00 00 00 00 ENDCHAR STARTCHAR degree ENCODING 56 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 38 6c 6c 38 00 00 00 00 00 00 00 00 ENDCHAR STARTCHAR periodcentered ENCODING 57 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 00 00 00 00 1c 1c 00 00 00 00 00 ENDCHAR STARTCHAR asciicircum ENCODING 58 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 18 3c 66 00 00 00 00 00 00 00 00 ENDCHAR STARTCHAR asciitilde ENCODING 59 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 36 7e 6c 00 00 00 00 00 00 00 00 ENDCHAR STARTCHAR diaeresis ENCODING 60 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 ee ee 00 00 00 00 00 00 00 00 00 ENDCHAR STARTCHAR grave ENCODING 61 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 30 18 0c 00 00 00 00 00 00 00 00 ENDCHAR STARTCHAR acute ENCODING 62 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 0c 18 30 00 00 00 00 00 00 00 00 ENDCHAR STARTCHAR cedilla ENCODING 63 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 00 00 00 00 00 00 00 0c 0c 0c 38 ENDCHAR STARTCHAR agrave ENCODING 64 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 30 18 00 00 3c 06 3e 66 66 3e 00 00 ENDCHAR STARTCHAR egrave ENCODING 65 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 30 18 00 00 3c 66 7e 60 66 3c 00 00 ENDCHAR STARTCHAR igrave ENCODING 66 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 30 18 00 00 78 18 18 18 18 18 00 00 ENDCHAR STARTCHAR ograve ENCODING 67 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 30 18 00 00 3c 66 66 66 66 3c 00 00 ENDCHAR STARTCHAR ugrave ENCODING 68 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 30 18 00 00 66 66 66 66 6e 3e 00 00 ENDCHAR STARTCHAR atilde ENCODING 69 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 1e 3c 00 00 3c 06 3e 66 66 3e 00 00 ENDCHAR STARTCHAR otilde ENCODING 70 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 1e 3c 00 00 3c 66 66 66 66 3c 00 00 ENDCHAR STARTCHAR ydiaeresis ENCODING 71 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 36 00 00 66 36 36 1e 1c 0c 0c 78 ENDCHAR STARTCHAR Yacute ENCODING 72 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 06 0c 18 66 66 66 3c 18 18 18 00 00 ENDCHAR STARTCHAR yacute ENCODING 73 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 06 0c 18 00 66 36 36 1e 1c 0c 0c 78 ENDCHAR STARTCHAR eacute ENCODING 74 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 0c 18 00 00 3c 66 7e 60 66 3c 00 00 ENDCHAR STARTCHAR onequarter ENCODING 75 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 30 70 30 30 78 00 1e 1e 1e 06 06 00 ENDCHAR STARTCHAR onehalf ENCODING 76 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 30 70 30 30 78 00 1c 06 0c 18 1e 00 ENDCHAR STARTCHAR threequarters ENCODING 77 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 70 18 30 18 70 00 1e 1e 1e 06 06 00 ENDCHAR STARTCHAR udiaeresis ENCODING 78 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 66 00 00 66 66 66 66 6e 3e 00 00 ENDCHAR STARTCHAR ccedilla ENCODING 79 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 00 00 3c 66 60 60 60 66 3c 18 78 ENDCHAR STARTCHAR adiaeresis ENCODING 80 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 66 00 00 3c 06 3e 66 66 3e 00 00 ENDCHAR STARTCHAR ediaeresis ENCODING 81 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 66 00 00 3c 66 7e 60 66 3c 00 00 ENDCHAR STARTCHAR idiaeresis ENCODING 82 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 6c 00 00 78 18 18 18 18 18 00 00 ENDCHAR STARTCHAR odiaeresis ENCODING 83 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 66 00 00 3c 66 66 66 66 3c 00 00 ENDCHAR STARTCHAR mu ENCODING 84 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 00 00 66 66 66 66 66 7e 7e 60 60 ENDCHAR STARTCHAR acircumflex ENCODING 85 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 18 3c 00 00 3c 06 3e 66 66 3e 00 00 ENDCHAR STARTCHAR ecircumflex ENCODING 86 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 18 3c 00 00 3c 66 7e 60 66 3c 00 00 ENDCHAR STARTCHAR icircumflex ENCODING 87 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 18 3c 00 00 78 18 18 18 18 18 00 00 ENDCHAR STARTCHAR ocircumflex ENCODING 88 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 18 3c 00 00 3c 66 66 66 66 3c 00 00 ENDCHAR STARTCHAR ucircumflex ENCODING 89 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 18 3c 00 00 66 66 66 66 6e 3e 00 00 ENDCHAR STARTCHAR aacute ENCODING 90 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 0c 18 00 00 3c 06 3e 66 66 3e 00 00 ENDCHAR STARTCHAR multiply ENCODING 91 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 00 00 66 3c 18 3c 66 00 00 00 00 ENDCHAR STARTCHAR iacute ENCODING 92 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 0c 18 00 00 78 18 18 18 18 18 00 00 ENDCHAR STARTCHAR oacute ENCODING 93 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 0c 18 00 00 3c 66 66 66 66 3c 00 00 ENDCHAR STARTCHAR uacute ENCODING 94 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 0c 18 00 00 66 66 66 66 6e 3e 00 00 ENDCHAR STARTCHAR ntilde ENCODING 95 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 1e 3c 00 00 7c 76 66 66 66 66 00 00 ENDCHAR STARTCHAR Agrave ENCODING 96 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 18 0c 00 18 3c 3c 66 7e 66 66 00 00 ENDCHAR STARTCHAR Egrave ENCODING 97 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 18 0c 00 7e 60 60 7e 60 60 7e 00 00 ENDCHAR STARTCHAR Igrave ENCODING 98 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 30 18 00 7e 18 18 18 18 18 7e 00 00 ENDCHAR STARTCHAR Ograve ENCODING 99 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 30 18 00 3c 66 66 66 66 66 3c 00 00 ENDCHAR STARTCHAR Ugrave ENCODING 100 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 30 18 00 66 66 66 66 66 66 3c 00 00 ENDCHAR STARTCHAR Atilde ENCODING 101 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 1e 3c 00 18 3c 3c 66 7e 66 66 00 00 ENDCHAR STARTCHAR Otilde ENCODING 102 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 1e 3c 00 3c 66 66 66 66 66 3c 00 00 ENDCHAR STARTCHAR onesuperior ENCODING 103 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 18 38 18 18 3c 00 00 00 00 00 00 ENDCHAR STARTCHAR twosuperior ENCODING 104 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 38 0c 18 30 3c 00 00 00 00 00 00 ENDCHAR STARTCHAR threesuperior ENCODING 105 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 38 0c 18 0c 38 00 00 00 00 00 00 ENDCHAR STARTCHAR ordfeminine ENCODING 106 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 38 0c 3c 6c 3c 00 7c 00 00 00 00 ENDCHAR STARTCHAR masculine ENCODING 107 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 38 6c 6c 6c 38 00 7c 00 00 00 00 ENDCHAR STARTCHAR guillemotleft ENCODING 108 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 00 00 00 36 6c 36 00 00 00 00 00 ENDCHAR STARTCHAR guillemotright ENCODING 109 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 00 00 00 6c 36 6c 00 00 00 00 00 ENDCHAR STARTCHAR exclamdown ENCODING 110 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 18 00 00 18 18 18 18 18 18 18 00 00 ENDCHAR STARTCHAR questiondown ENCODING 111 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 18 00 00 18 18 30 60 66 66 3c 00 00 ENDCHAR STARTCHAR Adiaeresis ENCODING 112 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 66 00 18 3c 3c 66 7e 66 66 00 00 ENDCHAR STARTCHAR Ediaeresis ENCODING 113 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 66 00 7e 60 60 7e 60 60 7e 00 00 ENDCHAR STARTCHAR Idiaeresis ENCODING 114 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 66 00 7e 18 18 18 18 18 7e 00 00 ENDCHAR STARTCHAR Odiaeresis ENCODING 115 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 66 00 3c 66 66 66 66 66 3c 00 00 ENDCHAR STARTCHAR Udiaeresis ENCODING 116 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 66 00 66 66 66 66 66 66 3c 00 00 ENDCHAR STARTCHAR Acircumflex ENCODING 117 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 18 3c 00 18 3c 3c 66 7e 66 66 00 00 ENDCHAR STARTCHAR Ecircumflex ENCODING 118 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 18 3c 00 7e 60 60 7e 60 60 7e 00 00 ENDCHAR STARTCHAR Icircumflex ENCODING 119 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 18 3c 00 7e 18 18 18 18 18 7e 00 00 ENDCHAR STARTCHAR Ocircumflex ENCODING 120 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 18 3c 00 3c 66 66 66 66 66 3c 00 00 ENDCHAR STARTCHAR Ucircumflex ENCODING 121 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 18 3c 00 66 66 66 66 66 66 3c 00 00 ENDCHAR STARTCHAR Aacute ENCODING 122 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 0c 18 00 18 3c 3c 66 7e 66 66 00 00 ENDCHAR STARTCHAR Eacute ENCODING 123 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 0c 18 00 7e 60 60 7e 60 60 7e 00 00 ENDCHAR STARTCHAR Iacute ENCODING 124 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 0c 18 00 7e 18 18 18 18 18 7e 00 00 ENDCHAR STARTCHAR Oacute ENCODING 125 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 0c 18 00 3c 66 66 66 66 66 3c 00 00 ENDCHAR STARTCHAR Uacute ENCODING 126 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 0c 18 00 66 66 66 66 66 66 3c 00 00 ENDCHAR STARTCHAR Ntilde ENCODING 127 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 1e 3c 00 66 76 76 7e 6e 6e 66 00 00 ENDCHAR STARTCHAR a ENCODING 128 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 00 00 3c 66 06 3e 66 66 3e 00 00 ENDCHAR STARTCHAR b ENCODING 129 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 60 60 7c 76 66 66 66 76 7c 00 00 ENDCHAR STARTCHAR c ENCODING 130 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 00 00 3c 66 60 60 60 66 3c 00 00 ENDCHAR STARTCHAR d ENCODING 131 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 06 06 3e 6e 66 66 66 6e 3e 00 00 ENDCHAR STARTCHAR e ENCODING 132 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 00 00 3c 66 66 7e 60 66 3c 00 00 ENDCHAR STARTCHAR f ENCODING 133 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 0e 18 18 7e 18 18 18 18 18 00 00 ENDCHAR STARTCHAR g ENCODING 134 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 00 00 3e 6e 66 66 6e 3e 06 66 3c ENDCHAR STARTCHAR h ENCODING 135 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 60 60 7c 76 66 66 66 66 66 00 00 ENDCHAR STARTCHAR i ENCODING 136 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 18 00 78 18 18 18 18 18 18 00 00 ENDCHAR STARTCHAR j ENCODING 137 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 0c 00 3c 0c 0c 0c 0c 0c 0c 6c 38 ENDCHAR STARTCHAR k ENCODING 138 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 60 60 6c 78 70 70 78 6c 66 00 00 ENDCHAR STARTCHAR l ENCODING 139 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 3c 0c 0c 0c 0c 0c 0c 0c 0c 00 00 ENDCHAR STARTCHAR m ENCODING 140 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 00 00 7c 7e 7e 7e 7e 7e 7e 00 00 ENDCHAR STARTCHAR n ENCODING 141 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 00 00 7c 76 66 66 66 66 66 00 00 ENDCHAR STARTCHAR o ENCODING 142 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 00 00 3c 66 66 66 66 66 3c 00 00 ENDCHAR STARTCHAR p ENCODING 143 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 00 00 7c 76 66 66 66 76 7c 60 60 ENDCHAR STARTCHAR q ENCODING 144 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 00 00 3e 6e 66 66 66 6e 3e 06 06 ENDCHAR STARTCHAR r ENCODING 145 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 00 00 7c 76 60 60 60 60 60 00 00 ENDCHAR STARTCHAR s ENCODING 146 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 00 00 3c 66 60 3c 06 66 3c 00 00 ENDCHAR STARTCHAR t ENCODING 147 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 18 18 7e 18 18 18 18 18 0e 00 00 ENDCHAR STARTCHAR u ENCODING 148 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 00 00 66 66 66 66 66 6e 3e 00 00 ENDCHAR STARTCHAR v ENCODING 149 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 00 00 66 66 66 3c 3c 18 18 00 00 ENDCHAR STARTCHAR w ENCODING 150 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 00 00 66 66 7e 7e 7e 7e 3c 00 00 ENDCHAR STARTCHAR x ENCODING 151 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 00 00 66 66 3c 18 3c 66 66 00 00 ENDCHAR STARTCHAR y ENCODING 152 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 00 00 66 66 36 36 1e 1c 0c 0c 78 ENDCHAR STARTCHAR z ENCODING 153 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 00 00 7e 06 0c 18 30 60 7e 00 00 ENDCHAR STARTCHAR ae ENCODING 154 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 00 00 fe 18 38 7e d8 d8 7e 00 00 ENDCHAR STARTCHAR oslash ENCODING 155 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 00 00 3e 66 6e 7e 76 66 fc 00 00 ENDCHAR STARTCHAR aring ENCODING 156 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 3c 3c 00 3c 66 06 3e 66 66 3e 00 00 ENDCHAR STARTCHAR division ENCODING 157 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 00 00 38 38 00 7c 00 38 38 00 00 ENDCHAR STARTCHAR fm ENCODING 158 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 7e 7e 00 00 1c 1c 00 00 1c 1c 0c 38 ENDCHAR STARTCHAR dup ENCODING 159 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 7e 7e 00 18 7e 3c 3c 7e 18 00 00 00 ENDCHAR STARTCHAR A ENCODING 160 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 18 18 3c 3c 3c 66 7e 66 66 00 00 ENDCHAR STARTCHAR B ENCODING 161 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 78 6c 6c 6c 7c 66 66 66 7c 00 00 ENDCHAR STARTCHAR C ENCODING 162 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 3c 66 66 60 60 60 66 66 3c 00 00 ENDCHAR STARTCHAR D ENCODING 163 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 78 6c 66 66 66 66 66 6c 78 00 00 ENDCHAR STARTCHAR E ENCODING 164 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 7e 60 60 60 7c 60 60 60 7e 00 00 ENDCHAR STARTCHAR F ENCODING 165 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 7e 60 60 60 7c 60 60 60 60 00 00 ENDCHAR STARTCHAR G ENCODING 166 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 3c 66 60 60 6e 66 66 6e 3e 00 00 ENDCHAR STARTCHAR H ENCODING 167 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 66 66 66 66 7e 66 66 66 66 00 00 ENDCHAR STARTCHAR I ENCODING 168 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 7e 18 18 18 18 18 18 18 7e 00 00 ENDCHAR STARTCHAR J ENCODING 169 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 3e 0c 0c 0c 0c 0c 6c 6c 38 00 00 ENDCHAR STARTCHAR K ENCODING 170 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 66 6c 78 70 78 6c 6c 66 66 00 00 ENDCHAR STARTCHAR L ENCODING 171 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 60 60 60 60 60 60 60 60 7e 00 00 ENDCHAR STARTCHAR M ENCODING 172 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 c6 c6 ee ee fe fe c6 c6 c6 00 00 ENDCHAR STARTCHAR N ENCODING 173 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 66 76 76 7e 7e 6e 6e 66 66 00 00 ENDCHAR STARTCHAR O ENCODING 174 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 3c 66 66 66 66 66 66 66 3c 00 00 ENDCHAR STARTCHAR P ENCODING 175 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 7c 66 66 66 7c 60 60 60 60 00 00 ENDCHAR STARTCHAR Q ENCODING 176 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 3c 66 66 66 66 66 66 66 3c 18 0e ENDCHAR STARTCHAR R ENCODING 177 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 7c 66 66 66 7c 6c 66 66 66 00 00 ENDCHAR STARTCHAR S ENCODING 178 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 3c 66 60 30 1c 06 06 66 3c 00 00 ENDCHAR STARTCHAR T ENCODING 179 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 7e 18 18 18 18 18 18 18 18 00 00 ENDCHAR STARTCHAR U ENCODING 180 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 66 66 66 66 66 66 66 66 3c 00 00 ENDCHAR STARTCHAR V ENCODING 181 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 66 66 66 3c 3c 3c 18 18 18 00 00 ENDCHAR STARTCHAR W ENCODING 182 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 c2 c2 c2 da 7e 7e 7e 3c 3c 00 00 ENDCHAR STARTCHAR X ENCODING 183 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 66 66 3c 3c 18 3c 3c 66 66 00 00 ENDCHAR STARTCHAR Y ENCODING 184 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 66 66 66 3c 18 18 18 18 18 00 00 ENDCHAR STARTCHAR Z ENCODING 185 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 7e 06 06 0c 18 30 60 60 7e 00 00 ENDCHAR STARTCHAR AE ENCODING 186 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 1e 38 38 78 7e 78 d8 d8 de 00 00 ENDCHAR STARTCHAR Ooblique ENCODING 187 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 3c 66 66 6e 7e 7e 76 66 66 3c 00 ENDCHAR STARTCHAR Aring ENCODING 188 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 3c 3c 00 18 3c 3c 66 7e 66 66 00 00 ENDCHAR STARTCHAR Ccedilla ENCODING 189 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 3c 66 66 60 60 60 66 66 3c 18 78 ENDCHAR STARTCHAR semicolon ENCODING 190 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 00 00 1c 1c 00 00 00 1c 1c 0c 38 ENDCHAR STARTCHAR asterisk ENCODING 191 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 18 7e 3c 3c 7e 18 00 00 00 00 00 ENDCHAR STARTCHAR c0 ENCODING 192 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 00 00 00 00 00 00 00 00 00 00 00 ENDCHAR STARTCHAR c1 ENCODING 193 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 00 00 00 00 00 00 00 00 00 00 00 ENDCHAR STARTCHAR c2 ENCODING 194 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 00 00 00 00 00 00 00 00 00 00 00 ENDCHAR STARTCHAR c3 ENCODING 195 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 00 00 00 00 00 00 00 00 00 00 00 ENDCHAR STARTCHAR c4 ENCODING 196 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 00 00 00 00 00 00 00 00 00 00 00 ENDCHAR STARTCHAR c5 ENCODING 197 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 00 00 00 00 00 00 00 00 00 00 00 ENDCHAR STARTCHAR c6 ENCODING 198 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 00 00 00 00 00 00 00 00 00 00 00 ENDCHAR STARTCHAR c7 ENCODING 199 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 00 00 00 00 00 00 00 00 00 00 00 ENDCHAR STARTCHAR c8 ENCODING 200 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 00 00 00 00 00 00 00 00 00 00 00 ENDCHAR STARTCHAR c9 ENCODING 201 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 00 00 00 00 00 00 00 00 00 00 00 ENDCHAR STARTCHAR ca ENCODING 202 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 00 00 00 00 00 00 00 00 00 00 00 ENDCHAR STARTCHAR cb ENCODING 203 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 00 00 00 00 00 00 00 00 00 00 00 ENDCHAR STARTCHAR cc ENCODING 204 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 00 00 00 00 00 00 00 00 00 00 00 ENDCHAR STARTCHAR cd ENCODING 205 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 00 00 00 00 00 00 00 00 00 00 00 ENDCHAR STARTCHAR ce ENCODING 206 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 00 00 00 00 00 00 00 00 00 00 00 ENDCHAR STARTCHAR cf ENCODING 207 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 00 00 00 00 00 00 00 00 00 00 00 ENDCHAR STARTCHAR copyright ENCODING 208 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 38 44 54 64 54 44 38 00 00 00 00 ENDCHAR STARTCHAR registered ENCODING 209 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 38 44 74 74 6c 44 38 00 00 00 00 ENDCHAR STARTCHAR boxA ENCODING 210 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 20 50 88 88 f8 88 88 00 fe 82 82 fe ENDCHAR STARTCHAR insert ENCODING 211 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 00 00 10 38 7c ee c6 82 00 00 00 ENDCHAR STARTCHAR boxB ENCODING 212 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 1c 12 12 1c 12 12 1c 00 fe 82 82 fe ENDCHAR STARTCHAR box6 ENCODING 213 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP fe 82 82 92 a2 b2 aa 92 82 82 fe 00 ENDCHAR STARTCHAR plusminus ENCODING 214 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 00 00 18 18 7e 18 18 00 7e 00 00 ENDCHAR STARTCHAR ETH ENCODING 215 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 78 6c 66 66 fe 66 66 6c 78 00 00 ENDCHAR STARTCHAR rightarrow ENCODING 216 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 00 00 08 0c fe 0c 08 00 00 00 00 ENDCHAR STARTCHAR THORN ENCODING 217 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 60 60 7c 66 66 66 7c 60 60 00 00 ENDCHAR STARTCHAR upshift ENCODING 218 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 10 28 44 82 ee 28 28 28 28 28 38 00 ENDCHAR STARTCHAR human ENCODING 219 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 38 28 38 10 fe 10 10 28 44 82 00 ENDCHAR STARTCHAR underB ENCODING 220 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 78 24 24 38 24 24 78 00 fe 00 00 00 ENDCHAR STARTCHAR downshift ENCODING 221 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 38 28 28 28 28 28 ee 82 44 28 10 00 ENDCHAR STARTCHAR boxquestion ENCODING 222 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP fe 82 92 aa 8a 92 92 82 92 82 fe 00 ENDCHAR STARTCHAR boxsolid ENCODING 223 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP fe fe fe fe fe fe fe fe fe fe fe 00 ENDCHAR STARTCHAR e0 ENCODING 224 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 00 00 00 00 00 00 00 00 00 00 00 ENDCHAR STARTCHAR e1 ENCODING 225 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 00 00 00 00 00 00 00 00 00 00 00 ENDCHAR STARTCHAR e2 ENCODING 226 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 00 00 00 00 00 00 00 00 00 00 00 ENDCHAR STARTCHAR e3 ENCODING 227 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 00 00 00 00 00 00 00 00 00 00 00 ENDCHAR STARTCHAR e4 ENCODING 228 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 00 00 00 00 00 00 00 00 00 00 00 ENDCHAR STARTCHAR e5 ENCODING 229 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 00 00 00 00 00 00 00 00 00 00 00 ENDCHAR STARTCHAR e6 ENCODING 230 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 00 00 00 00 00 00 00 00 00 00 00 ENDCHAR STARTCHAR e7 ENCODING 231 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 00 00 00 00 00 00 00 00 00 00 00 ENDCHAR STARTCHAR e8 ENCODING 232 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 00 00 00 00 00 00 00 00 00 00 00 ENDCHAR STARTCHAR e9 ENCODING 233 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 00 00 00 00 00 00 00 00 00 00 00 ENDCHAR STARTCHAR ea ENCODING 234 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 00 00 00 00 00 00 00 00 00 00 00 ENDCHAR STARTCHAR eb ENCODING 235 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 00 00 00 00 00 00 00 00 00 00 00 ENDCHAR STARTCHAR ec ENCODING 236 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 00 00 00 00 00 00 00 00 00 00 00 ENDCHAR STARTCHAR ed ENCODING 237 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 00 00 00 00 00 00 00 00 00 00 00 ENDCHAR STARTCHAR ee ENCODING 238 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 00 00 00 00 00 00 00 00 00 00 00 ENDCHAR STARTCHAR ef ENCODING 239 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 00 00 00 00 00 00 00 00 00 00 00 ENDCHAR STARTCHAR badcommhi ENCODING 240 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 80 80 40 40 20 fe 10 10 08 08 04 04 ENDCHAR STARTCHAR commhi ENCODING 241 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 00 00 00 00 fe 00 00 00 00 00 00 ENDCHAR STARTCHAR commjag ENCODING 242 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 00 00 00 00 fc 08 10 20 7e 00 00 ENDCHAR STARTCHAR commlo ENCODING 243 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 00 00 00 00 00 00 00 00 fe 00 00 ENDCHAR STARTCHAR clockleft ENCODING 244 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 02 10 00 40 00 02 82 02 02 42 02 10 ENDCHAR STARTCHAR clockright ENCODING 245 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 20 00 28 40 80 04 00 00 08 00 20 00 ENDCHAR STARTCHAR lock ENCODING 246 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 82 c6 ee 7c 38 38 38 7c ee c6 82 00 ENDCHAR STARTCHAR eth ENCODING 247 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 3c 18 3c 06 3e 6e 66 66 6e 3e 00 00 ENDCHAR STARTCHAR leftarrow ENCODING 248 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 00 00 20 60 fe 60 20 00 00 00 00 ENDCHAR STARTCHAR thorn ENCODING 249 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 60 7c 76 66 66 66 76 7c 60 00 00 ENDCHAR STARTCHAR keyleft ENCODING 250 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 00 38 44 46 44 38 00 00 00 00 00 ENDCHAR STARTCHAR keyright ENCODING 251 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 00 00 00 fe 36 36 06 00 00 00 00 ENDCHAR STARTCHAR box4 ENCODING 252 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP fe 82 8a 9a aa ba 8a 8a 82 82 fe 00 ENDCHAR STARTCHAR underA ENCODING 253 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 10 28 44 44 7c 44 44 00 fe 00 00 00 ENDCHAR STARTCHAR magcard ENCODING 254 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 00 fe 82 82 82 fe 82 fe 00 00 00 ENDCHAR STARTCHAR boxhuman ENCODING 255 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP fe 82 ba aa ba 92 fe 92 92 aa c6 fe ENDCHAR STARTCHAR apl_space ENCODING 272 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 00 00 00 00 00 00 00 00 00 00 00 ENDCHAR STARTCHAR apl_bracketright ENCODING 316 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 7c 0c 0c 0c 0c 0c 0c 0c 0c 0c 7c 00 ENDCHAR STARTCHAR apl_bracketleft ENCODING 328 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 3e 30 30 30 30 30 30 30 30 30 3e 00 ENDCHAR STARTCHAR apl_stile ENCODING 347 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 18 18 18 18 18 18 18 18 18 18 18 18 ENDCHAR STARTCHAR apl_uparrow ENCODING 364 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 00 18 3c 7f 18 18 18 18 18 00 00 ENDCHAR STARTCHAR apl_downarrow ENCODING 365 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 00 18 18 18 18 18 7f 3c 18 00 00 ENDCHAR STARTCHAR apl_2vertical ENCODING 384 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 66 66 66 66 66 66 66 66 66 66 66 66 ENDCHAR STARTCHAR apl_2horizontal ENCODING 385 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 fe 00 00 00 00 00 00 00 00 fe 00 ENDCHAR STARTCHAR apl_leftvbar ENCODING 386 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 60 60 60 60 60 60 60 60 60 60 60 60 ENDCHAR STARTCHAR apl_rightvbar ENCODING 387 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 06 06 06 06 06 06 06 06 06 06 06 06 ENDCHAR STARTCHAR apl_midvbar ENCODING 388 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 18 18 18 18 18 18 18 18 18 18 18 18 ENDCHAR STARTCHAR apl_leftsolid ENCODING 393 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 ENDCHAR STARTCHAR apl_rightsolid ENCODING 394 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 1e 1e 1e 1e 1e 1e 1e 1e 1e 1e 1e 1e ENDCHAR STARTCHAR apl_topsolid ENCODING 395 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP fe fe fe fe fe fe 00 00 00 00 00 00 ENDCHAR STARTCHAR apl_bottomsolid ENCODING 396 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 00 00 00 00 00 fe fe fe fe fe fe ENDCHAR STARTCHAR apl_solid ENCODING 397 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP fe fe fe fe fe fe fe fe fe fe fe fe ENDCHAR STARTCHAR apl_midhbar ENCODING 402 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 00 00 00 00 fe 00 00 00 00 00 00 ENDCHAR STARTCHAR apl_lowerleft ENCODING 419 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 18 18 18 18 18 1e 00 00 00 00 00 00 ENDCHAR STARTCHAR apl_upperleft ENCODING 420 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 00 00 00 00 1e 18 18 18 18 18 18 ENDCHAR STARTCHAR apl_leftjoin ENCODING 421 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 18 18 18 18 18 1e 18 18 18 18 18 18 ENDCHAR STARTCHAR apl_bottomjoin ENCODING 422 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 18 18 18 18 18 fe 00 00 00 00 00 00 ENDCHAR STARTCHAR apl_intersect ENCODING 427 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 18 18 18 18 18 fe 18 18 18 18 18 18 ENDCHAR STARTCHAR apl_lowerright ENCODING 428 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 18 18 18 18 18 f8 00 00 00 00 00 00 ENDCHAR STARTCHAR apl_upperright ENCODING 429 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 00 00 00 00 f8 18 18 18 18 18 18 ENDCHAR STARTCHAR apl_rightjoin ENCODING 430 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 18 18 18 18 18 f8 18 18 18 18 18 18 ENDCHAR STARTCHAR apl_topjoin ENCODING 431 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 00 00 00 00 fe 18 18 18 18 18 18 ENDCHAR STARTCHAR 200 ENCODING 512 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 3c 3c 3c 3c 3c 3c 3c 3c 3c 3c 3c 3c ENDCHAR STARTCHAR 201 ENCODING 513 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 00 00 18 3c 7e 3c 18 00 00 00 00 ENDCHAR STARTCHAR 202 ENCODING 514 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP aa 54 aa 54 aa 54 aa 54 aa 54 aa 54 ENDCHAR STARTCHAR 203 ENCODING 515 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 78 78 78 78 78 00 1e 0c 0c 0c 0c ENDCHAR STARTCHAR 204 ENCODING 516 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 78 60 70 60 60 00 1e 18 1c 18 18 ENDCHAR STARTCHAR 205 ENCODING 517 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 38 60 60 60 38 00 1c 1e 1c 1e 1e ENDCHAR STARTCHAR 206 ENCODING 518 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 60 60 60 60 78 00 1e 18 1c 18 18 ENDCHAR STARTCHAR 207 ENCODING 519 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 38 6c 6c 38 00 00 00 00 00 00 00 ENDCHAR STARTCHAR 208 ENCODING 520 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 00 00 18 18 7e 18 18 00 7e 00 00 ENDCHAR STARTCHAR 209 ENCODING 521 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 6c 7c 7c 6c 6c 00 18 18 18 18 1e ENDCHAR STARTCHAR 20a ENCODING 522 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 78 78 78 30 30 00 1e 0c 0c 0c 0c ENDCHAR STARTCHAR 20b ENCODING 523 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 18 18 18 18 18 f8 00 00 00 00 00 00 ENDCHAR STARTCHAR 20c ENCODING 524 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 00 00 00 00 f8 18 18 18 18 18 18 ENDCHAR STARTCHAR 20d ENCODING 525 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 00 00 00 00 1e 18 18 18 18 18 18 ENDCHAR STARTCHAR 20e ENCODING 526 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 18 18 18 18 18 1e 00 00 00 00 00 00 ENDCHAR STARTCHAR 20f ENCODING 527 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 18 18 18 18 18 fe 18 18 18 18 18 18 ENDCHAR STARTCHAR 210 ENCODING 528 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 fe 00 00 00 00 00 00 00 00 00 00 ENDCHAR STARTCHAR 211 ENCODING 529 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 00 00 fe 00 00 00 00 00 00 00 00 ENDCHAR STARTCHAR 212 ENCODING 530 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 00 00 00 00 fe 00 00 00 00 00 00 ENDCHAR STARTCHAR 213 ENCODING 531 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 00 00 00 00 00 00 fe 00 00 00 00 ENDCHAR STARTCHAR 214 ENCODING 532 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 00 00 00 00 00 00 00 00 fe 00 00 ENDCHAR STARTCHAR 215 ENCODING 533 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 18 18 18 18 18 1e 18 18 18 18 18 18 ENDCHAR STARTCHAR 216 ENCODING 534 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 18 18 18 18 18 f8 18 18 18 18 18 18 ENDCHAR STARTCHAR 217 ENCODING 535 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 18 18 18 18 18 fe 00 00 00 00 00 00 ENDCHAR STARTCHAR 218 ENCODING 536 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 00 00 00 00 fe 18 18 18 18 18 18 ENDCHAR STARTCHAR 219 ENCODING 537 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 18 18 18 18 18 18 18 18 18 18 18 18 ENDCHAR STARTCHAR 21a ENCODING 538 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 00 0c 18 30 60 30 18 0c 00 7e 00 ENDCHAR STARTCHAR 21b ENCODING 539 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 00 30 18 0c 06 0c 18 30 00 7e 00 ENDCHAR STARTCHAR 21c ENCODING 540 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 00 00 00 7e 3c 3c 3c 3c 6c 00 00 ENDCHAR STARTCHAR 21d ENCODING 541 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 00 06 0c 7e 18 7e 30 60 00 00 00 ENDCHAR STARTCHAR 21e ENCODING 542 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 1c 36 30 30 78 30 30 36 7c 00 00 ENDCHAR STARTCHAR 21f ENCODING 543 SWIDTH 42 0 DWIDTH 7 0 BBX 7 12 0 -2 BITMAP 00 00 00 00 00 38 38 00 00 00 00 00 ENDCHAR ENDFONT suite3270-4.1/x3270/3270-20.bdf000066400000000000000000001700671413735575200151240ustar00rootroot00000000000000STARTFONT 2.1 COMMENT "20-point 3270 font" COMMENT "Uses nonstandard ordering:" COMMENT " Page 0: EBCDIC US-International set, CG order" COMMENT " Page 1: EBCDIC APL/APL2 set, CG order (incomplete)" COMMENT " Page 2: (first 16 characters only) DEC line-drawing characters from" COMMENT " fixed-width X fonts" COMMENT "" COMMENT "Copyright (c) 1995-2009, Paul Mattes." COMMENT "All rights reserved." COMMENT "" COMMENT "Redistribution and use in source and binary forms, with or" COMMENT "without modification, are permitted provided that the following" COMMENT "conditions are met:" COMMENT " * Redistributions of source code must retain the above" COMMENT " copyright notice, this list of conditions and the following" COMMENT " disclaimer." COMMENT " * Redistributions in binary form must reproduce the above" COMMENT " copyright notice, this list of conditions and the following" COMMENT " disclaimer in the documentation and/or other materials" COMMENT " provided with the distribution." COMMENT " * Neither the name of Paul Mattes nor his contributors may" COMMENT " be used to endorse or promote products derived from this" COMMENT " software without specific prior written permission." COMMENT "" COMMENT "THIS SOFTWARE IS PROVIDED BY PAUL MATTES 'AS IS' AND ANY" COMMENT "EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO," COMMENT "THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR" COMMENT "A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL PAUL" COMMENT "MATTES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL," COMMENT "EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED" COMMENT "TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE," COMMENT "DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED" COMMENT "AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT" COMMENT "LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING" COMMENT "IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF" COMMENT "THE POSSIBILITY OF SUCH DAMAGE." COMMENT "" COMMENT $XConsortium: 10x20.bdf,v 1.12 92/04/02 14:25:55 gildea Exp $ COMMENT "$NCDId: @(#)10x20.bdf,v 1.11 1991/07/02 14:50:48 jim Exp $" COMMENT "" COMMENT "Copyright 1989-1991 Network Computing Devices, Inc." COMMENT "NCD is a registered trademark of Network Computing Devices, Inc." COMMENT "" COMMENT "Permission to use, copy, modify, and distribute this software and" COMMENT "its documentation for any purpose and without fee is hereby" COMMENT "granted, provided that the above copyright notice appear in all" COMMENT "copies and that both that copyright notice and this permission" COMMENT "notice appear in supporting documentation, and that the name of" COMMENT "NCD may not be used in advertising or publicity pertaining to" COMMENT "distribution of the software without specific, written prior" COMMENT "permission. NCD makes no representations about the" COMMENT "suitability of this software for any purpose. It is provided ``as" COMMENT "is'' without express or implied warranty." COMMENT "" COMMENT "NCD DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE," COMMENT "INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN" COMMENT "NO EVENT SHALL NCD BE LIABLE FOR ANY SPECIAL, INDIRECT OR" COMMENT "CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS" COMMENT "OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT," COMMENT "NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN" COMMENT "CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE." FONT 3270-20 SIZE 20 75 75 FONTBOUNDINGBOX 10 20 0 -5 STARTPROPERTIES 17 FOUNDRY "NCD" FAMILY_NAME "3270" WEIGHT_NAME "Medium" SLANT "R" SETWIDTH_NAME "Normal" PIXEL_SIZE 20 POINT_SIZE 200 RESOLUTION_X 75 RESOLUTION_Y 75 AVERAGE_WIDTH 100 DEFAULT_CHAR 514 FONT_DESCENT 5 FONT_ASCENT 15 CHARSET_REGISTRY "3270cg" CHARSET_ENCODING "1" SPACING "C" COPYRIGHT "Copyright 1989-1991 Network Computing Devices, Inc." ENDPROPERTIES CHARS 312 STARTCHAR null ENCODING 0 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR nobreakspace ENCODING 1 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR euro ENCODING 2 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0f00 1980 3080 3000 3000 7f80 3000 7f00 3000 3000 3080 1980 0f00 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR cr ENCODING 3 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR nl ENCODING 4 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR em ENCODING 5 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR eightones ENCODING 6 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 0000 1e00 3f00 7f80 7f80 7f80 7f80 3f00 1e00 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR hyphen ENCODING 7 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 0000 0000 0000 3f00 3f00 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR greater ENCODING 8 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 2000 3000 1800 0c00 0600 0300 0180 0300 0600 0c00 1800 3000 2000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR less ENCODING 9 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0100 0300 0600 0c00 1800 3000 6000 3000 1800 0c00 0600 0300 0100 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR bracketleft ENCODING 10 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 3f00 3000 3000 3000 3000 3000 3000 3000 3000 3000 3000 3000 3f00 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR bracketright ENCODING 11 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 3f00 0300 0300 0300 0300 0300 0300 0300 0300 0300 0300 0300 3f00 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR parenright ENCODING 12 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 3000 1800 0c00 0c00 0600 0600 0600 0600 0600 0c00 0c00 1800 3000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR parenleft ENCODING 13 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0300 0600 0c00 0c00 1800 1800 1800 1800 1800 0c00 0c00 0600 0300 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR braceright ENCODING 14 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 7800 0c00 0c00 0c00 0c00 0c00 0780 0c00 0c00 0c00 0c00 0c00 7800 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR braceleft ENCODING 15 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0780 0c00 0c00 0c00 0c00 0c00 7800 0c00 0c00 0c00 0c00 0c00 0780 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR space ENCODING 16 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR equal ENCODING 17 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 0000 0000 7f80 0000 0000 0000 0000 7f80 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR apostrophe ENCODING 18 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0f00 0e00 1800 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR quotedbl ENCODING 19 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 3300 3300 3300 1200 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR slash ENCODING 20 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0180 0180 0300 0300 0600 0600 0c00 0c00 1800 1800 3000 3000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR backslash ENCODING 21 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 3000 3000 1800 1800 0c00 0c00 0600 0600 0300 0300 0180 0180 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR bar ENCODING 22 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR brokenbar ENCODING 23 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0c00 0c00 0c00 0c00 0c00 0000 0000 0000 0c00 0c00 0c00 0c00 0c00 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR question ENCODING 24 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 1e00 3300 6180 6180 6180 0300 0600 0c00 0c00 0c00 0000 0c00 0c00 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR exclam ENCODING 25 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0000 0c00 0c00 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR dollar ENCODING 26 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0c00 3f00 6d80 6c00 6c00 6c00 3f00 0d80 0d80 0d80 6d80 3f00 0c00 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR cent ENCODING 27 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0c00 0c00 1e00 3300 6100 6000 6000 6100 3300 1e00 0c00 0c00 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR sterling ENCODING 28 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0f00 1980 1980 1800 1800 7e00 1800 1800 1800 7c00 56c0 7380 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR yen ENCODING 29 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 4080 6180 3300 1e00 3f00 0c00 3f00 0c00 0c00 0c00 0c00 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR paragraph ENCODING 30 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 1f80 3f80 7d80 7d80 7d80 3d80 1d80 0580 0580 0580 0580 0580 0580 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR currency ENCODING 31 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 0000 4040 2e80 1f00 3180 3180 3180 1f00 2e80 4040 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR 0 ENCODING 32 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0c00 1e00 3300 3300 6180 6180 6180 6180 6180 3300 3300 1e00 0c00 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR 1 ENCODING 33 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0c00 1c00 3c00 6c00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 7f80 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR 2 ENCODING 34 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 1e00 3300 6180 6180 0180 0180 0300 0e00 1800 3000 6000 6000 7f80 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR 3 ENCODING 35 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 1e00 3300 6180 6180 0180 0300 0e00 0300 0180 6180 6180 3300 1e00 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR 4 ENCODING 36 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0100 0300 0700 0f00 1b00 3300 6300 6300 7f80 0300 0300 0300 0300 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR 5 ENCODING 37 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 7f80 6000 6000 6000 6000 6e00 7300 0180 0180 0180 6180 3300 1e00 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR 6 ENCODING 38 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 1e00 3300 6100 6000 6000 6e00 7300 6180 6180 6180 6180 3300 1e00 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR 7 ENCODING 39 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 7f80 0180 0180 0300 0300 0600 0600 0c00 0c00 1800 1800 3000 3000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR 8 ENCODING 40 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 1e00 3300 6180 6180 6180 3300 1e00 3300 6180 6180 6180 3300 1e00 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR 9 ENCODING 41 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 1e00 3300 6180 6180 6180 6180 3380 1d80 0180 0180 2180 3300 1e00 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR ssharp ENCODING 42 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 1c00 3e00 7300 6300 6300 6600 6c00 6600 6300 6100 6300 6e00 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR section ENCODING 43 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 3e00 6300 6000 7000 7800 4c00 6600 3300 1900 0f00 0300 6300 3e00 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR numbersign ENCODING 44 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0d80 0d80 0d80 3fc0 1b00 1b00 1b00 7f80 3600 3600 3600 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR at ENCODING 45 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 1e00 3300 6180 6780 6f80 6d80 6d80 6d80 6f00 6600 6000 3180 1f00 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR percent ENCODING 46 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 3980 6d80 6f00 3b00 0600 0600 0c00 0c00 1b80 1ec0 36c0 3380 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR underscore ENCODING 47 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 7fc0 0000 0000 0000 0000 ENDCHAR STARTCHAR ampersand ENCODING 48 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 1c00 3600 3600 3600 3c00 1800 3800 6c00 66c0 6380 6300 7780 3cc0 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR minus ENCODING 49 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 7f80 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR period ENCODING 50 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0e00 0e00 0e00 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR comma ENCODING 51 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0e00 0e00 1800 0000 0000 0000 0000 ENDCHAR STARTCHAR colon ENCODING 52 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 0000 0e00 0e00 0000 0000 0000 0000 0e00 0e00 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR plus ENCODING 53 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 0000 0c00 0c00 0c00 7f80 0c00 0c00 0c00 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR notsign ENCODING 54 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 0000 0000 0000 7f80 7f80 0180 0180 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR macron ENCODING 55 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 7f00 7f00 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR degree ENCODING 56 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0c00 1e00 3300 3300 1e00 0c00 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR periodcentered ENCODING 57 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 0000 0000 0000 0e00 0e00 0e00 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR asciicircum ENCODING 58 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0c00 1e00 3300 6180 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR asciitilde ENCODING 59 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 3980 6d80 6700 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR diaeresis ENCODING 60 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 3300 3300 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR grave ENCODING 61 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 3c00 1c00 0600 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR acute ENCODING 62 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0600 0c00 1800 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR cedilla ENCODING 63 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0c00 0400 1200 0c00 0000 ENDCHAR STARTCHAR agrave ENCODING 64 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 3000 1800 0c00 0000 0000 3f00 6180 0180 3f80 6180 6180 6180 3e80 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR egrave ENCODING 65 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 3000 1800 0c00 0000 0000 1e00 3300 6180 7f80 6000 6000 3180 1f00 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR igrave ENCODING 66 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 3000 1800 0c00 0000 0000 3c00 0c00 0c00 0c00 0c00 0c00 0c00 7f80 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR ograve ENCODING 67 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 3000 1800 0c00 0000 0000 1e00 3300 6180 6180 6180 6180 3300 1e00 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR ugrave ENCODING 68 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 3000 1800 0c00 0000 0000 6180 6180 6180 6180 6180 6180 3380 1d80 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR atilde ENCODING 69 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 1900 3f00 2600 0000 0000 3f00 6180 0180 3f80 6180 6180 6180 3e80 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR otilde ENCODING 70 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 1900 3f00 2600 0000 0000 1e00 3300 6180 6180 6180 6180 3300 1e00 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR ydiaeresis ENCODING 71 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 3300 3300 0000 0000 0000 0000 6180 6180 6180 6180 6180 3380 1d80 0180 6180 3300 1e00 0000 ENDCHAR STARTCHAR Yacute ENCODING 72 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0300 0600 0c00 0000 4080 6180 3300 1e00 0c00 0c00 0c00 0c00 0c00 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR yacute ENCODING 73 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0600 0c00 1800 0000 0000 0000 6180 6180 6180 6180 6180 3380 1d80 0180 6180 3300 1e00 0000 ENDCHAR STARTCHAR eacute ENCODING 74 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0600 0c00 1800 0000 0000 1e00 3300 6180 7f80 6000 6000 3180 1f00 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR onequarter ENCODING 75 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 2000 6000 2080 2100 7200 0400 0900 1300 2500 4f00 0100 0100 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR onehalf ENCODING 76 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 2000 6000 2080 2100 7200 0400 0b00 1480 2080 4100 0200 0780 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR threequarters ENCODING 77 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 7000 0800 3080 0900 7200 0400 0900 1300 2500 4f80 0100 0100 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR udiaeresis ENCODING 78 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 3300 3300 0000 0000 0000 6180 6180 6180 6180 6180 6180 3380 1d80 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR ccedilla ENCODING 79 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 0000 0000 0000 1f00 3180 6000 6000 6000 6000 3180 1f00 0c00 0400 1200 0c00 0000 ENDCHAR STARTCHAR adiaeresis ENCODING 80 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 3300 3300 0000 0000 0000 3f00 6180 0180 3f80 6180 6180 6180 3e80 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR ediaeresis ENCODING 81 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 3300 3300 0000 0000 0000 1e00 3300 6180 7f80 6000 6000 3180 1f00 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR idiaeresis ENCODING 82 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 3300 3300 0000 0000 0000 3c00 0c00 0c00 0c00 0c00 0c00 0c00 7f80 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR odiaeresis ENCODING 83 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 3300 3300 0000 0000 0000 1e00 3300 6180 6180 6180 6180 3300 1e00 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR mu ENCODING 84 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 6300 6300 6300 6300 6300 7700 7d00 6000 6000 6000 0000 0000 ENDCHAR STARTCHAR acircumflex ENCODING 85 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0c00 1e00 3300 0000 0000 3f00 6180 0180 3f80 6180 6180 6180 3e80 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR ecircumflex ENCODING 86 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0c00 1e00 3300 0000 0000 1e00 3300 6180 7f80 6000 6000 3180 1f00 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR icircumflex ENCODING 87 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0c00 1e00 3300 0000 0000 3c00 0c00 0c00 0c00 0c00 0c00 0c00 7f80 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR ocircumflex ENCODING 88 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0c00 1e00 3300 0000 0000 1e00 3300 6180 6180 6180 6180 3300 1e00 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR ucircumflex ENCODING 89 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0c00 1e00 3300 0000 0000 6180 6180 6180 6180 6180 6180 3380 1d80 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR aacute ENCODING 90 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0600 0c00 1800 0000 0000 3f00 6180 0180 3f80 6180 6180 6180 3e80 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR multiply ENCODING 91 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 0000 0000 0000 2080 3180 1b00 0e00 0e00 1b00 3180 2080 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR iacute ENCODING 92 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0600 0c00 1800 0000 0000 3c00 0c00 0c00 0c00 0c00 0c00 0c00 7f80 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR oacute ENCODING 93 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0600 0c00 1800 0000 0000 1e00 3300 6180 6180 6180 6180 3300 1e00 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR uacute ENCODING 94 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0600 0c00 1800 0000 0000 6180 6180 6180 6180 6180 6180 3380 1d80 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR ntilde ENCODING 95 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 1900 3f00 2600 0000 0000 6e00 7300 6180 6180 6180 6180 6180 6180 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR Agrave ENCODING 96 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 3000 1800 0c00 0000 0c00 1e00 3300 6180 6180 7f80 6180 6180 6180 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR Egrave ENCODING 97 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 3000 1800 0c00 0000 7f80 6000 6000 6000 7e00 6000 6000 6000 7f80 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR Igrave ENCODING 98 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 3000 1800 0c00 0000 3f00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 3f00 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR Ograve ENCODING 99 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 3000 1800 0c00 0000 1e00 3300 6180 6180 6180 6180 6180 3300 1e00 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR Ugrave ENCODING 100 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 3000 1800 0c00 0000 6180 6180 6180 6180 6180 6180 6180 3300 1e00 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR Atilde ENCODING 101 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 1900 3f00 2600 0000 0c00 1e00 3300 6180 6180 7f80 6180 6180 6180 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR Otilde ENCODING 102 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 1900 3f00 2600 0000 1e00 3300 6180 6180 6180 6180 6180 3300 1e00 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR onesuperior ENCODING 103 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 1800 3800 1800 1800 1800 3c00 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR twosuperior ENCODING 104 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 1c00 3600 0600 0c00 1800 3000 3e00 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR threesuperior ENCODING 105 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 1c00 3600 0200 0e00 0200 3600 1c00 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR ordfeminine ENCODING 106 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 1f00 2180 0180 3f80 6180 6180 3e80 0000 7f80 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR masculine ENCODING 107 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 1c00 3600 6300 6300 6300 3600 1c00 0000 7f00 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR guillemotleft ENCODING 108 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 0480 0d80 1b00 3600 6c00 d800 6c00 3600 1b00 0d80 0480 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR guillemotright ENCODING 109 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 4800 6c00 3600 1b00 0d80 06c0 0d80 1b00 3600 6c00 4800 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR exclamdown ENCODING 110 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0c00 0c00 0000 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR questiondown ENCODING 111 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0c00 0c00 0000 0c00 0c00 0c00 1800 3000 6180 6180 6180 3300 1e00 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR Adiaeresis ENCODING 112 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 3300 3300 0000 0000 0c00 1e00 3300 6180 6180 7f80 6180 6180 6180 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR Ediaeresis ENCODING 113 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 3300 3300 0000 0000 7f80 6000 6000 6000 7e00 6000 6000 6000 7f80 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR Idiaeresis ENCODING 114 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 3300 3300 0000 0000 3f00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 3f00 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR Odiaeresis ENCODING 115 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 3300 3300 0000 0000 1e00 3300 6180 6180 6180 6180 6180 3300 1e00 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR Udiaeresis ENCODING 116 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 3300 3300 0000 0000 6180 6180 6180 6180 6180 6180 6180 3300 1e00 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR Acircumflex ENCODING 117 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0c00 1e00 3300 0000 0c00 1e00 3300 6180 6180 7f80 6180 6180 6180 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR Ecircumflex ENCODING 118 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0c00 1e00 3300 0000 7f80 6000 6000 6000 7e00 6000 6000 6000 7f80 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR Icircumflex ENCODING 119 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0c00 1e00 3300 0000 3f00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 3f00 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR Ocircumflex ENCODING 120 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0c00 1e00 3300 0000 1e00 3300 6180 6180 6180 6180 6180 3300 1e00 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR Ucircumflex ENCODING 121 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0c00 1e00 3300 0000 6180 6180 6180 6180 6180 6180 6180 3380 1e00 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR Aacute ENCODING 122 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0300 0600 0c00 0000 0c00 1e00 3300 6180 6180 7f80 6180 6180 6180 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR Eacute ENCODING 123 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0600 0c00 1800 0000 7f80 6000 6000 6000 7e00 6000 6000 6000 7f80 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR Iacute ENCODING 124 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0600 0c00 1800 0000 3f00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 3f00 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR Oacute ENCODING 125 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0300 0600 0c00 0000 1e00 3300 6180 6180 6180 6180 6180 3300 1e00 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR Uacute ENCODING 126 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0300 0600 0c00 0000 6180 6180 6180 6180 6180 6180 6180 3300 1e00 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR Ntilde ENCODING 127 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 1900 3f00 2600 0000 4180 6180 7180 7980 7d80 6f80 6780 6380 6180 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR a ENCODING 128 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 0000 0000 0000 1f00 3180 0180 3f80 6180 6180 6180 3e80 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR b ENCODING 129 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 6000 6000 6000 6000 6000 6e00 7300 6180 6180 6180 6180 7300 6e00 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR c ENCODING 130 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 0000 0000 0000 1f00 3180 6000 6000 6000 6000 3180 1f00 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR d ENCODING 131 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0180 0180 0180 0180 0180 1d80 3380 6180 6180 6180 6180 3380 1d80 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR e ENCODING 132 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 0000 0000 0000 1e00 3300 6180 7f80 6000 6000 3180 1f00 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR f ENCODING 133 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0f00 1980 1980 1800 1800 1800 1800 7e00 1800 1800 1800 1800 1800 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR g ENCODING 134 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 0000 0000 0000 3e80 6380 6300 6300 6300 3e00 6000 3f00 6180 6180 6180 3f00 0000 ENDCHAR STARTCHAR h ENCODING 135 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 6000 6000 6000 6000 6000 6e00 7300 6180 6180 6180 6180 6180 6180 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR i ENCODING 136 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 0c00 0c00 0000 3c00 0c00 0c00 0c00 0c00 0c00 0c00 7f80 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR j ENCODING 137 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 0180 0180 0000 0780 0180 0180 0180 0180 0180 0180 0180 3180 3180 3180 1f00 0000 ENDCHAR STARTCHAR k ENCODING 138 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 6000 6000 6000 6000 6000 6300 6600 6c00 7800 7c00 6600 6300 6180 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR l ENCODING 139 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 3c00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 7f80 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR m ENCODING 140 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 0000 0000 0000 5b00 7f80 6d80 6d80 6d80 6d80 6d80 6d80 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR n ENCODING 141 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 0000 0000 0000 6e00 7300 6180 6180 6180 6180 6180 6180 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR o ENCODING 142 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 0000 0000 0000 1e00 3300 6180 6180 6180 6180 3300 1e00 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR p ENCODING 143 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 0000 0000 0000 6e00 7300 6180 6180 6180 6180 7300 6e00 6000 6000 6000 6000 0000 ENDCHAR STARTCHAR q ENCODING 144 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 0000 0000 0000 1d80 3380 6180 6180 6180 6180 3380 1d80 0180 0180 0180 0180 0000 ENDCHAR STARTCHAR r ENCODING 145 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 0000 0000 0000 6f00 3980 3000 3000 3000 3000 3000 3000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR s ENCODING 146 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 0000 0000 0000 3f00 6180 6000 3f00 0180 0180 6180 3f00 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR t ENCODING 147 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 1800 1800 1800 7e00 1800 1800 1800 1800 1800 1980 0f00 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR u ENCODING 148 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 0000 0000 0000 6180 6180 6180 6180 6180 6180 3380 1d80 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR v ENCODING 149 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 0000 0000 0000 6180 6180 3300 3300 1e00 1e00 0c00 0c00 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR w ENCODING 150 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 0000 0000 0000 6180 6180 6180 6d80 6d80 6d80 7f80 3300 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR x ENCODING 151 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 0000 0000 0000 6180 3300 1e00 0c00 0c00 1e00 3300 6180 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR y ENCODING 152 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 0000 0000 0000 6180 6180 6180 6180 6180 6180 3380 1d80 0180 6180 3300 1e00 0000 ENDCHAR STARTCHAR z ENCODING 153 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 0000 0000 0000 3f80 0180 0300 0600 0c00 1800 3000 3f80 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR ae ENCODING 154 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 0000 0000 0000 3b00 4d80 0d80 0f00 3c00 6c00 6c80 3700 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR oslash ENCODING 155 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 0000 0000 0080 1f00 3300 6580 6580 6980 6980 3300 3e00 4000 0000 0000 0000 0000 ENDCHAR STARTCHAR aring ENCODING 156 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0c00 1200 1200 0c00 3f00 6180 0180 3f80 6180 6180 6180 3e80 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR division ENCODING 157 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 0c00 0c00 0000 0000 7f80 7f80 0000 0000 0c00 0c00 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR fm ENCODING 158 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 0000 0e00 0e00 0000 0000 0000 0000 0e00 0e00 1c00 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR dup ENCODING 159 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 0000 3300 3300 1e00 7f80 1e00 3300 3300 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR A ENCODING 160 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0c00 1e00 3300 3300 6180 6180 6180 7f80 6180 6180 6180 6180 6180 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR B ENCODING 161 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 7c00 6600 6300 6300 6300 6600 7e00 6300 6180 6180 6180 6300 7e00 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR C ENCODING 162 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 1e00 3300 6180 6000 6000 6000 6000 6000 6000 6000 6180 3300 1e00 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR D ENCODING 163 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 7e00 6300 6180 6180 6180 6180 6180 6180 6180 6180 6180 6300 7e00 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR E ENCODING 164 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 7f80 6000 6000 6000 6000 6000 7e00 6000 6000 6000 6000 6000 7f80 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR F ENCODING 165 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 7f80 6000 6000 6000 6000 6000 7e00 6000 6000 6000 6000 6000 6000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR G ENCODING 166 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 1e00 3300 6180 6000 6000 6000 6780 6180 6180 6180 6180 3380 1e80 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR H ENCODING 167 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 6180 6180 6180 6180 6180 6180 7f80 6180 6180 6180 6180 6180 6180 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR I ENCODING 168 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 7f80 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 7f80 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR J ENCODING 169 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0f80 0180 0180 0180 0180 0180 0180 0180 0180 6180 6180 3300 1e00 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR K ENCODING 170 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 6180 6180 6300 6300 6600 6600 7c00 6600 6600 6300 6300 6180 6180 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR L ENCODING 171 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 6000 6000 6000 6000 6000 6000 6000 6000 6000 6000 6000 6000 7f80 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR M ENCODING 172 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 6180 6180 7380 7380 7f80 6d80 6d80 6d80 6d80 6180 6180 6180 6180 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR N ENCODING 173 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 6180 7180 7180 7980 7980 6d80 6d80 6780 6780 6380 6380 6180 6180 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR O ENCODING 174 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 1e00 3300 6180 6180 6180 6180 6180 6180 6180 6180 6180 3300 1e00 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR P ENCODING 175 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 7e00 6300 6180 6180 6180 6180 6300 7e00 6000 6000 6000 6000 6000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR Q ENCODING 176 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 1e00 3300 6180 6180 6180 6180 6180 6180 6180 6d80 6780 3300 1f00 0180 0000 0000 0000 0000 ENDCHAR STARTCHAR R ENCODING 177 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 7e00 6300 6180 6180 6180 6180 6300 7e00 6600 6300 6300 6180 6180 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR S ENCODING 178 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 1e00 3300 6180 6000 6000 3000 1e00 0300 0180 0180 6180 3300 1e00 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR T ENCODING 179 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 7f80 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR U ENCODING 180 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 6180 6180 6180 6180 6180 6180 6180 6180 6180 6180 6180 3300 1e00 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR V ENCODING 181 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 6180 6180 6180 6180 3300 3300 3300 1e00 1e00 1e00 0c00 0c00 0c00 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR W ENCODING 182 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 6180 6180 6180 6180 6180 6d80 6d80 6d80 6d80 7380 7380 6180 6180 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR X ENCODING 183 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 6180 6180 3300 3300 1e00 1e00 0c00 1e00 1e00 3300 3300 6180 6180 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR Y ENCODING 184 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 6180 6180 3300 3300 1e00 1e00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR Z ENCODING 185 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 7f80 0180 0180 0300 0600 0600 0c00 1800 1800 3000 6000 6000 7f80 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR AE ENCODING 186 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0f80 1e00 3600 3600 6600 6600 7f80 6600 6600 6600 6600 6600 6780 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR Ooblique ENCODING 187 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0080 1f00 3300 6380 6380 6580 6580 6580 6980 6980 6980 7180 3300 3e00 4000 0000 0000 0000 0000 ENDCHAR STARTCHAR Aring ENCODING 188 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0c00 1200 1200 0c00 0c00 1e00 3300 6180 6180 7f80 6180 6180 6180 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR Ccedilla ENCODING 189 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 1e00 3300 6180 6000 6000 6000 6000 6000 6000 6000 6180 3300 1e00 0c00 0400 1200 0c00 0000 ENDCHAR STARTCHAR semicolon ENCODING 190 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 0000 0e00 0e00 0000 0000 0000 0000 0e00 0e00 1c00 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR asterisk ENCODING 191 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 0000 3300 3300 1e00 7f80 1e00 3300 3300 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR c0 ENCODING 192 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR c1 ENCODING 193 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR c2 ENCODING 194 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR c3 ENCODING 195 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR c4 ENCODING 196 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR c5 ENCODING 197 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR c6 ENCODING 198 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR c7 ENCODING 199 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR c8 ENCODING 200 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR c9 ENCODING 201 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR ca ENCODING 202 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR cb ENCODING 203 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR cc ENCODING 204 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR cd ENCODING 205 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR ce ENCODING 206 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR cf ENCODING 207 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR copyright ENCODING 208 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 1e00 3300 6180 5e80 5280 5080 5280 5e80 6180 3300 1e00 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR registered ENCODING 209 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 1e00 3300 6180 5e80 5280 5e80 5480 5680 6180 3300 1e00 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR boxA ENCODING 210 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 1800 1800 2400 2400 4200 4200 7e00 4200 4200 4200 0000 ffc0 8040 8040 ffc0 0000 0000 0000 ENDCHAR STARTCHAR insert ENCODING 211 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 0000 0000 0c00 1e00 3f00 7f80 f3c0 e1c0 c0c0 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR boxB ENCODING 212 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 1e00 1100 1100 1100 1f00 1080 1080 1080 1080 1f00 0000 ffc0 8040 8040 ffc0 0000 0000 0000 ENDCHAR STARTCHAR box6 ENCODING 213 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 ffc0 8040 8040 8c40 9240 a040 a040 ac40 b240 a140 a140 a140 9240 8c40 8040 ffc0 0000 0000 0000 ENDCHAR STARTCHAR plusminus ENCODING 214 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 0c00 0c00 7f80 7f80 0c00 0c00 0000 7f80 7f80 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR ETH ENCODING 215 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 7e00 6300 6180 6180 6180 6180 f980 6180 6180 6180 6180 6300 7e00 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR rightarrow ENCODING 216 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 0000 0000 0400 0600 0700 ff80 ff80 0700 0600 0400 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR THORN ENCODING 217 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 3c00 1800 1f00 1980 1980 1980 1f00 1800 1800 1800 3c00 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR upshift ENCODING 218 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0c00 1200 1200 2100 2100 4080 7380 1200 1200 1200 1200 1200 1200 1200 1e00 0000 0000 0000 ENDCHAR STARTCHAR human ENCODING 219 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 1c00 2200 2200 2200 1c00 0800 7f00 0800 0800 1400 2200 4100 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR underB ENCODING 220 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 3c00 2200 2100 2200 3c00 2200 2100 2100 2200 3c00 0000 ffc0 ffc0 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR downshift ENCODING 221 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 1e00 1200 1200 1200 1200 1200 1200 1200 7380 4080 2100 2100 1200 1200 0c00 0000 0000 0000 ENDCHAR STARTCHAR boxquestion ENCODING 222 SWIDTH 878 0 DWIDTH 10 0 BBX 12 20 0 -5 BITMAP 0000 ffc0 8040 8040 9e40 a140 a140 8140 8240 8440 8840 8840 8040 8840 8840 8040 ffc0 0000 0000 0000 ENDCHAR STARTCHAR boxsolid ENCODING 223 SWIDTH 878 0 DWIDTH 10 0 BBX 12 20 0 -5 BITMAP 0000 ffc0 ffc0 ffc0 ffc0 ffc0 ffc0 ffc0 ffc0 ffc0 ffc0 ffc0 ffc0 ffc0 ffc0 ffc0 ffc0 0000 0000 0000 ENDCHAR STARTCHAR e0 ENCODING 224 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR e1 ENCODING 225 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR e2 ENCODING 226 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR e3 ENCODING 227 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR e4 ENCODING 228 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR e5 ENCODING 229 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR e6 ENCODING 230 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR e7 ENCODING 231 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR e8 ENCODING 232 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR e9 ENCODING 233 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR ea ENCODING 234 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR eb ENCODING 235 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR ec ENCODING 236 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR ed ENCODING 237 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR ee ENCODING 238 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR ef ENCODING 239 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR badcommhi ENCODING 240 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 8000 c000 e000 7000 ffc0 ffc0 0e00 0700 0380 01c0 00c0 0040 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR commhi ENCODING 241 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 0000 0000 0000 ffc0 ffc0 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR commjag ENCODING 242 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 0000 0000 0000 fe00 fe00 0c00 1800 3fc0 3fc0 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR commlo ENCODING 243 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ffc0 ffc0 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR clockleft ENCODING 244 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 0080 0400 0000 1000 0000 0040 2080 0080 0080 1080 0080 0400 0080 0000 0000 0000 ENDCHAR STARTCHAR clockright ENCODING 245 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 2000 0000 2800 4000 8000 0000 0400 0000 0000 0800 0000 2000 0000 0000 0000 0000 ENDCHAR STARTCHAR lock ENCODING 246 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 8040 c0c0 e1c0 f3c0 7f80 3f00 1e00 3f00 7f80 f3c0 e1c0 c0c0 8040 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR eth ENCODING 247 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 4400 6c00 3800 3800 6c00 4600 1f00 3380 6180 6180 6180 3300 1e00 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR leftarrow ENCODING 248 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 0000 0000 0800 1800 3800 7fc0 7fc0 3800 1800 0800 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR thorn ENCODING 249 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 0000 0000 0000 3800 1e00 1b00 1b00 1e00 1800 1800 3800 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR keyleft ENCODING 250 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 0000 0000 0e00 1f00 3180 31c0 3180 1f00 0e00 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR keyright ENCODING 251 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 ff80 1d80 1d80 0180 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR box4 ENCODING 252 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 ffc0 8040 8040 8240 8640 8a40 9240 a240 a240 bf40 8240 8240 8240 8240 8040 ffc0 0000 0000 0000 ENDCHAR STARTCHAR underA ENCODING 253 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0c00 0c00 1200 1200 2100 3f00 2100 2100 2100 0000 ffc0 ffc0 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR magcard ENCODING 254 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 0000 ffc0 8040 8040 8040 8040 ffc0 8040 8040 ffc0 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR boxhuman ENCODING 255 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 ffc0 8040 8e40 9140 9140 8e40 8440 bfc0 8440 8440 8440 8440 8a40 9140 a0c0 ffc0 0000 0000 0000 ENDCHAR STARTCHAR apl_space ENCODING 272 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR apl_bracketright ENCODING 316 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 3f00 0300 0300 0300 0300 0300 0300 0300 0300 0300 0300 0300 3f00 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR apl_bracketleft ENCODING 328 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 3f00 3000 3000 3000 3000 3000 3000 3000 3000 3000 3000 3000 3f00 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR apl_stile ENCODING 347 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 ENDCHAR STARTCHAR apl_2vertical ENCODING 384 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 6180 6180 6180 6180 6180 6180 6180 6180 6180 6180 6180 6180 6180 6180 6180 6180 6180 6180 6180 6180 ENDCHAR STARTCHAR apl_2horizontal ENCODING 385 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 ffc0 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ffc0 0000 0000 ENDCHAR STARTCHAR apl_leftvbar ENCODING 386 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 6000 6000 6000 6000 6000 6000 6000 6000 6000 6000 6000 6000 6000 6000 6000 6000 6000 6000 6000 6000 ENDCHAR STARTCHAR apl_rightvbar ENCODING 387 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0180 0180 0180 0180 0180 0180 0180 0180 0180 0180 0180 0180 0180 0180 0180 0180 0180 0180 0180 0180 ENDCHAR STARTCHAR apl_midvbar ENCODING 388 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 ENDCHAR STARTCHAR apl_leftsolid ENCODING 393 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP fc00 fc00 fc00 fc00 fc00 fc00 fc00 fc00 fc00 fc00 fc00 fc00 fc00 fc00 fc00 fc00 fc00 fc00 fc00 fc00 ENDCHAR STARTCHAR apl_rightsolid ENCODING 394 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 07c0 07c0 07c0 07c0 07c0 07c0 07c0 07c0 07c0 07c0 07c0 07c0 07c0 07c0 07c0 07c0 07c0 07c0 07c0 07c0 ENDCHAR STARTCHAR apl_topsolid ENCODING 395 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP ffc0 ffc0 ffc0 ffc0 ffc0 ffc0 ffc0 ffc0 ffc0 ffc0 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR apl_bottomsolid ENCODING 396 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ffc0 ffc0 ffc0 ffc0 ffc0 ffc0 ffc0 ffc0 ffc0 ffc0 ENDCHAR STARTCHAR apl_solid ENCODING 397 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP ffc0 ffc0 ffc0 ffc0 ffc0 ffc0 ffc0 ffc0 ffc0 ffc0 ffc0 ffc0 ffc0 ffc0 ffc0 ffc0 ffc0 ffc0 ffc0 ffc0 ENDCHAR STARTCHAR apl_midhbar ENCODING 402 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 ffc0 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR apl_lowerleft ENCODING 419 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0fc0 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR apl_upperleft ENCODING 420 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0fc0 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 ENDCHAR STARTCHAR apl_leftjoin ENCODING 421 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0fc0 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 ENDCHAR STARTCHAR apl_bottomjoin ENCODING 422 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 ffc0 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR apl_intersect ENCODING 427 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 ffc0 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 ENDCHAR STARTCHAR apl_lowerright ENCODING 428 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 fc00 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR apl_upperright ENCODING 429 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 fc00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 ENDCHAR STARTCHAR apl_rightjoin ENCODING 430 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 fc00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 ENDCHAR STARTCHAR apl_topjoin ENCODING 431 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 ffc0 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 ENDCHAR STARTCHAR 200 ENCODING 512 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR 201 ENCODING 513 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 0000 0c00 1e00 3f00 7f80 7f80 3f00 1e00 0c00 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR 202 ENCODING 514 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 5540 aa80 5540 aa80 5540 aa80 5540 aa80 5540 aa80 5540 aa80 5540 aa80 5540 aa80 5540 aa80 5540 aa80 ENDCHAR STARTCHAR 203 ENCODING 515 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 6600 6600 6600 7e00 6600 6600 6600 0000 1f80 0600 0600 0600 0600 0600 0000 0000 ENDCHAR STARTCHAR 204 ENCODING 516 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 7c00 6000 6000 7800 6000 6000 6000 0f80 0c00 0c00 0f00 0c00 0c00 0c00 0000 0000 ENDCHAR STARTCHAR 205 ENCODING 517 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 3c00 6600 6000 6000 6600 3c00 0000 1f00 1980 1980 1f00 1e00 1b00 1980 0000 0000 ENDCHAR STARTCHAR 206 ENCODING 518 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 3000 3000 3000 3000 3000 3e00 0000 0f80 0c00 0c00 0f00 0c00 0c00 0c00 0000 0000 ENDCHAR STARTCHAR 207 ENCODING 519 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 1e00 3300 3300 3300 1e00 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR 208 ENCODING 520 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0c00 0c00 7f80 0c00 0c00 0000 7f80 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR 209 ENCODING 521 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 6600 7600 7e00 7e00 6e00 6600 0000 0c00 0c00 0c00 0c00 0c00 0c00 0f80 0000 0000 ENDCHAR STARTCHAR 20a ENCODING 522 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 6600 6600 6600 3c00 3c00 1800 1800 0000 1f80 0600 0600 0600 0600 0600 0000 0000 ENDCHAR STARTCHAR 20b ENCODING 523 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 fc00 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR 20c ENCODING 524 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 fc00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 ENDCHAR STARTCHAR 20d ENCODING 525 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0fc0 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 ENDCHAR STARTCHAR 20e ENCODING 526 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0fc0 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR 20f ENCODING 527 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 ffc0 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 ENDCHAR STARTCHAR 210 ENCODING 528 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 ffc0 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR 211 ENCODING 529 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 0000 0000 ffc0 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR 212 ENCODING 530 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 ffc0 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR 213 ENCODING 531 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ffc0 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR 214 ENCODING 532 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ffc0 0000 0000 0000 0000 ENDCHAR STARTCHAR 215 ENCODING 533 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0fc0 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 ENDCHAR STARTCHAR 216 ENCODING 534 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 fc00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 ENDCHAR STARTCHAR 217 ENCODING 535 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 ffc0 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR 218 ENCODING 536 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 ffc0 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 ENDCHAR STARTCHAR 219 ENCODING 537 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 ENDCHAR STARTCHAR 21a ENCODING 538 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 0000 01c0 0700 1c00 7000 1c00 0700 01c0 0000 0000 7fc0 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR 21b ENCODING 539 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 0000 7000 1c00 0700 01c0 0700 1c00 7000 0000 0000 7fc0 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR 21c ENCODING 540 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 0000 0000 0000 0080 3f80 5b00 1b00 1b00 1b00 1b00 3300 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR 21d ENCODING 541 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 0000 0000 0180 0300 7fc0 0600 0c00 7fc0 1800 3000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR 21e ENCODING 542 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0f00 1980 1980 1800 1800 1800 7e00 1800 1800 1800 7c00 56c0 7380 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR 21f ENCODING 543 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0c00 0c00 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR ENDFONT suite3270-4.1/x3270/3270-20b.bdf000066400000000000000000001700771413735575200152670ustar00rootroot00000000000000STARTFONT 2.1 COMMENT "20-point bold 3270 font" COMMENT "Uses nonstandard ordering:" COMMENT " Page 0: EBCDIC US-International set, CG order" COMMENT " Page 1: EBCDIC APL/APL2 set, CG order (incomplete)" COMMENT " Page 2: (first 16 characters only) DEC line-drawing characters from" COMMENT " fixed-width X fonts" COMMENT "" COMMENT "Copyright (c) 1995-2009, Paul Mattes." COMMENT "All rights reserved." COMMENT "" COMMENT "Redistribution and use in source and binary forms, with or" COMMENT "without modification, are permitted provided that the following" COMMENT "conditions are met:" COMMENT " * Redistributions of source code must retain the above" COMMENT " copyright notice, this list of conditions and the following" COMMENT " disclaimer." COMMENT " * Redistributions in binary form must reproduce the above" COMMENT " copyright notice, this list of conditions and the following" COMMENT " disclaimer in the documentation and/or other materials" COMMENT " provided with the distribution." COMMENT " * Neither the name of Paul Mattes nor his contributors may" COMMENT " be used to endorse or promote products derived from this" COMMENT " software without specific prior written permission." COMMENT "" COMMENT "THIS SOFTWARE IS PROVIDED BY PAUL MATTES 'AS IS' AND ANY" COMMENT "EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO," COMMENT "THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR" COMMENT "A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL PAUL" COMMENT "MATTES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL," COMMENT "EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED" COMMENT "TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE," COMMENT "DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED" COMMENT "AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT" COMMENT "LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING" COMMENT "IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF" COMMENT "THE POSSIBILITY OF SUCH DAMAGE." COMMENT "" COMMENT $XConsortium: 10x20.bdf,v 1.12 92/04/02 14:25:55 gildea Exp $ COMMENT "$NCDId: @(#)10x20.bdf,v 1.11 1991/07/02 14:50:48 jim Exp $" COMMENT "" COMMENT "Copyright 1989-1991 Network Computing Devices, Inc." COMMENT "NCD is a registered trademark of Network Computing Devices, Inc." COMMENT "" COMMENT "Permission to use, copy, modify, and distribute this software and" COMMENT "its documentation for any purpose and without fee is hereby" COMMENT "granted, provided that the above copyright notice appear in all" COMMENT "copies and that both that copyright notice and this permission" COMMENT "notice appear in supporting documentation, and that the name of" COMMENT "NCD may not be used in advertising or publicity pertaining to" COMMENT "distribution of the software without specific, written prior" COMMENT "permission. NCD makes no representations about the" COMMENT "suitability of this software for any purpose. It is provided ``as" COMMENT "is'' without express or implied warranty." COMMENT "" COMMENT "NCD DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE," COMMENT "INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN" COMMENT "NO EVENT SHALL NCD BE LIABLE FOR ANY SPECIAL, INDIRECT OR" COMMENT "CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS" COMMENT "OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT," COMMENT "NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN" COMMENT "CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE." FONT 3270-20bold SIZE 20 75 75 FONTBOUNDINGBOX 10 20 0 -5 STARTPROPERTIES 17 FOUNDRY "NCD" FAMILY_NAME "3270" WEIGHT_NAME "Bold" SLANT "R" SETWIDTH_NAME "Normal" PIXEL_SIZE 20 POINT_SIZE 200 RESOLUTION_X 75 RESOLUTION_Y 75 AVERAGE_WIDTH 100 DEFAULT_CHAR 514 FONT_DESCENT 5 FONT_ASCENT 15 CHARSET_REGISTRY "3270cg" CHARSET_ENCODING "1" SPACING "C" COPYRIGHT "Copyright 1989-1991 Network Computing Devices, Inc." ENDPROPERTIES CHARS 312 STARTCHAR null ENCODING 0 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR nobreakspace ENCODING 1 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR euro ENCODING 2 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 1E00 3F00 6180 6000 FF00 FF00 6000 FE00 FE00 6000 6180 3F00 1E00 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR cr ENCODING 3 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR nl ENCODING 4 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR em ENCODING 5 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR eightones ENCODING 6 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 0000 1e00 3f00 7f80 7f80 7f80 7f80 3f00 1e00 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR hyphen ENCODING 7 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 0000 0000 0000 3f80 3f80 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR greater ENCODING 8 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 3000 3800 1c00 0e00 0700 0380 01c0 0380 0700 0e00 1c00 3800 3000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR less ENCODING 9 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0180 0380 0700 0e00 1c00 3800 7000 3800 1c00 0e00 0700 0380 0180 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR bracketleft ENCODING 10 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 3f80 3800 3800 3800 3800 3800 3800 3800 3800 3800 3800 3800 3f80 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR bracketright ENCODING 11 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 3f80 0380 0380 0380 0380 0380 0380 0380 0380 0380 0380 0380 3f80 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR parenright ENCODING 12 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 3800 1c00 0e00 0e00 0700 0700 0700 0700 0700 0e00 0e00 1c00 3800 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR parenleft ENCODING 13 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0380 0700 0e00 0e00 1c00 1c00 1c00 1c00 1c00 0e00 0e00 0700 0380 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR braceright ENCODING 14 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 7c00 0e00 0e00 0e00 0e00 0e00 07c0 0e00 0e00 0e00 0e00 0e00 7c00 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR braceleft ENCODING 15 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 07c0 0e00 0e00 0e00 0e00 0e00 7c00 0e00 0e00 0e00 0e00 0e00 07c0 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR space ENCODING 16 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR equal ENCODING 17 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 0000 0000 7fc0 0000 0000 0000 0000 7fc0 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR apostrophe ENCODING 18 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0f80 0f00 1c00 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR quotedbl ENCODING 19 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 3b80 3b80 3b80 1b00 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR slash ENCODING 20 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 01c0 01c0 0380 0380 0700 0700 0e00 0e00 1c00 1c00 3800 3800 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR backslash ENCODING 21 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 3800 3800 1c00 1c00 0e00 0e00 0700 0700 0380 0380 01c0 01c0 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR bar ENCODING 22 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0e00 0e00 0e00 0e00 0e00 0e00 0e00 0e00 0e00 0e00 0e00 0e00 0e00 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR brokenbar ENCODING 23 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0e00 0e00 0e00 0e00 0e00 0000 0000 0000 0e00 0e00 0e00 0e00 0e00 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR question ENCODING 24 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 1f00 3b80 71c0 71c0 71c0 0380 0700 0e00 0e00 0e00 0000 0e00 0e00 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR exclam ENCODING 25 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0e00 0e00 0e00 0e00 0e00 0e00 0e00 0e00 0e00 0e00 0000 0e00 0e00 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR dollar ENCODING 26 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0e00 3f80 7fc0 7e00 7e00 7e00 3f80 0fc0 0fc0 0fc0 7fc0 3f80 0e00 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR cent ENCODING 27 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0e00 0e00 1f00 3b80 7180 7000 7000 7180 3b80 1f00 0e00 0e00 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR sterling ENCODING 28 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0f80 1dc0 1dc0 1c00 1c00 7f00 1c00 1c00 1c00 7e00 7fc0 7bc0 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR yen ENCODING 29 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 60c0 71c0 3b80 1f00 3f80 0e00 3f80 0e00 0e00 0e00 0e00 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR paragraph ENCODING 30 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 1fc0 3fc0 7fc0 7fc0 7fc0 3fc0 1fc0 07c0 07c0 07c0 07c0 07c0 07c0 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR currency ENCODING 31 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 0000 6040 3fc0 1f80 39c0 39c0 39c0 1f80 3fc0 6040 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR 0 ENCODING 32 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0e00 1f00 3b80 3b80 71c0 71c0 71c0 71c0 71c0 3b80 3b80 1f00 0e00 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR 1 ENCODING 33 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0e00 1e00 3e00 7e00 0e00 0e00 0e00 0e00 0e00 0e00 0e00 0e00 7fc0 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR 2 ENCODING 34 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 1f00 3b80 71c0 71c0 01c0 01c0 0380 0f00 1c00 3800 7000 7000 7fc0 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR 3 ENCODING 35 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 1f00 3b80 71c0 71c0 01c0 0380 0f00 0380 01c0 71c0 71c0 3b80 1f00 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR 4 ENCODING 36 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0180 0380 0780 0f80 1f80 3b80 7380 7380 7fc0 0380 0380 0380 0380 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR 5 ENCODING 37 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 7fc0 7000 7000 7000 7000 7f00 7b80 01c0 01c0 01c0 71c0 3b80 1f00 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR 6 ENCODING 38 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 1f00 3b80 7180 7000 7000 7f00 7b80 71c0 71c0 71c0 71c0 3b80 1f00 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR 7 ENCODING 39 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 7fc0 01c0 01c0 0380 0380 0700 0700 0e00 0e00 1c00 1c00 3800 3800 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR 8 ENCODING 40 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 1f00 3b80 71c0 71c0 71c0 3b80 1f00 3b80 71c0 71c0 71c0 3b80 1f00 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR 9 ENCODING 41 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 1f00 3b80 71c0 71c0 71c0 71c0 3bc0 1fc0 01c0 01c0 31c0 3b80 1f00 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR ssharp ENCODING 42 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 1e00 3f00 7b80 7380 7380 7700 7e00 7700 7380 7180 7380 7f00 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR section ENCODING 43 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 3f00 7380 7000 7800 7c00 6e00 7700 3b80 1d80 0f80 0380 7380 3f00 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR numbersign ENCODING 44 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0fc0 0fc0 0fc0 3fc0 1f80 1f80 1f80 7fc0 3f00 3f00 3f00 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR at ENCODING 45 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 1f00 3b80 71c0 77c0 7fc0 7fc0 7fc0 7fc0 7f80 7700 7000 39c0 1f80 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR percent ENCODING 46 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 3dc0 7fc0 7f80 3f80 0700 0700 0e00 0e00 1fc0 1fc0 3fc0 3bc0 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR underscore ENCODING 47 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 7fc0 0000 0000 0000 0000 ENDCHAR STARTCHAR ampersand ENCODING 48 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 1e00 3f00 3f00 3f00 3e00 1c00 3c00 7e00 77c0 73c0 7380 7fc0 3ec0 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR minus ENCODING 49 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 7fc0 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR period ENCODING 50 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0f00 0f00 0f00 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR comma ENCODING 51 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0f00 0f00 1c00 0000 0000 0000 0000 ENDCHAR STARTCHAR colon ENCODING 52 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 0000 0f00 0f00 0000 0000 0000 0000 0f00 0f00 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR plus ENCODING 53 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 0000 0e00 0e00 0e00 7fc0 0e00 0e00 0e00 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR notsign ENCODING 54 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 0000 0000 0000 7fc0 7fc0 01c0 01c0 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR macron ENCODING 55 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 7f80 7f80 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR degree ENCODING 56 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0e00 1f00 3b80 3b80 1f00 0e00 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR periodcentered ENCODING 57 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 0000 0000 0000 0f00 0f00 0f00 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR asciicircum ENCODING 58 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0e00 1f00 3b80 71c0 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR asciitilde ENCODING 59 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 3dc0 7fc0 7780 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR diaeresis ENCODING 60 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 3b80 3b80 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR grave ENCODING 61 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 3e00 1e00 0700 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR acute ENCODING 62 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0700 0e00 1c00 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR cedilla ENCODING 63 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0e00 0600 1b00 0e00 0000 ENDCHAR STARTCHAR agrave ENCODING 64 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 3800 1c00 0e00 0000 0000 3f80 71c0 01c0 3fc0 71c0 71c0 71c0 3fc0 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR egrave ENCODING 65 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 3800 1c00 0e00 0000 0000 1f00 3b80 71c0 7fc0 7000 7000 39c0 1f80 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR igrave ENCODING 66 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 3800 1c00 0e00 0000 0000 3e00 0e00 0e00 0e00 0e00 0e00 0e00 7fc0 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR ograve ENCODING 67 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 3800 1c00 0e00 0000 0000 1f00 3b80 71c0 71c0 71c0 71c0 3b80 1f00 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR ugrave ENCODING 68 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 3800 1c00 0e00 0000 0000 71c0 71c0 71c0 71c0 71c0 71c0 3bc0 1fc0 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR atilde ENCODING 69 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 1d80 3f80 3700 0000 0000 3f80 71c0 01c0 3fc0 71c0 71c0 71c0 3fc0 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR otilde ENCODING 70 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 1d80 3f80 3700 0000 0000 1f00 3b80 71c0 71c0 71c0 71c0 3b80 1f00 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR ydiaeresis ENCODING 71 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 3b80 3b80 0000 0000 0000 0000 71c0 71c0 71c0 71c0 71c0 3bc0 1fc0 01c0 71c0 3b80 1f00 0000 ENDCHAR STARTCHAR Yacute ENCODING 72 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0380 0700 0e00 0000 60c0 71c0 3b80 1f00 0e00 0e00 0e00 0e00 0e00 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR yacute ENCODING 73 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0700 0e00 1c00 0000 0000 0000 71c0 71c0 71c0 71c0 71c0 3bc0 1fc0 01c0 71c0 3b80 1f00 0000 ENDCHAR STARTCHAR eacute ENCODING 74 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0700 0e00 1c00 0000 0000 1f00 3b80 71c0 7fc0 7000 7000 39c0 1f80 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR onequarter ENCODING 75 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 3000 7000 30c0 3180 7b00 0600 0d80 1b80 3780 6f80 0180 0180 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR onehalf ENCODING 76 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 3000 7000 30c0 3180 7b00 0600 0f80 1ec0 30c0 6180 0300 07c0 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR threequarters ENCODING 77 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 7800 0c00 38c0 0d80 7b00 0600 0d80 1b80 3780 6fc0 0180 0180 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR udiaeresis ENCODING 78 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 3b80 3b80 0000 0000 0000 71c0 71c0 71c0 71c0 71c0 71c0 3bc0 1fc0 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR ccedilla ENCODING 79 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 0000 0000 0000 1f80 39c0 7000 7000 7000 7000 39c0 1f80 0e00 0600 1b00 0e00 0000 ENDCHAR STARTCHAR adiaeresis ENCODING 80 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 3b80 3b80 0000 0000 0000 3f80 71c0 01c0 3fc0 71c0 71c0 71c0 3fc0 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR ediaeresis ENCODING 81 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 3b80 3b80 0000 0000 0000 1f00 3b80 71c0 7fc0 7000 7000 39c0 1f80 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR idiaeresis ENCODING 82 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 3b80 3b80 0000 0000 0000 3e00 0e00 0e00 0e00 0e00 0e00 0e00 7fc0 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR odiaeresis ENCODING 83 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 3b80 3b80 0000 0000 0000 1f00 3b80 71c0 71c0 71c0 71c0 3b80 1f00 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR mu ENCODING 84 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 7380 7380 7380 7380 7380 7f80 7f80 7000 7000 7000 0000 0000 ENDCHAR STARTCHAR acircumflex ENCODING 85 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0e00 1f00 3b80 0000 0000 3f80 71c0 01c0 3fc0 71c0 71c0 71c0 3fc0 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR ecircumflex ENCODING 86 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0e00 1f00 3b80 0000 0000 1f00 3b80 71c0 7fc0 7000 7000 39c0 1f80 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR icircumflex ENCODING 87 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0e00 1f00 3b80 0000 0000 3e00 0e00 0e00 0e00 0e00 0e00 0e00 7fc0 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR ocircumflex ENCODING 88 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0e00 1f00 3b80 0000 0000 1f00 3b80 71c0 71c0 71c0 71c0 3b80 1f00 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR ucircumflex ENCODING 89 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0e00 1f00 3b80 0000 0000 71c0 71c0 71c0 71c0 71c0 71c0 3bc0 1fc0 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR aacute ENCODING 90 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0700 0e00 1c00 0000 0000 3f80 71c0 01c0 3fc0 71c0 71c0 71c0 3fc0 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR multiply ENCODING 91 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 0000 0000 0000 30c0 39c0 1f80 0f00 0f00 1f80 39c0 30c0 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR iacute ENCODING 92 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0700 0e00 1c00 0000 0000 3e00 0e00 0e00 0e00 0e00 0e00 0e00 7fc0 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR oacute ENCODING 93 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0700 0e00 1c00 0000 0000 1f00 3b80 71c0 71c0 71c0 71c0 3b80 1f00 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR uacute ENCODING 94 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0700 0e00 1c00 0000 0000 71c0 71c0 71c0 71c0 71c0 71c0 3bc0 1fc0 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR ntilde ENCODING 95 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 1d80 3f80 3700 0000 0000 7f00 7b80 71c0 71c0 71c0 71c0 71c0 71c0 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR Agrave ENCODING 96 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 3800 1c00 0e00 0000 0e00 1f00 3b80 71c0 71c0 7fc0 71c0 71c0 71c0 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR Egrave ENCODING 97 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 3800 1c00 0e00 0000 7fc0 7000 7000 7000 7f00 7000 7000 7000 7fc0 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR Igrave ENCODING 98 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 3800 1c00 0e00 0000 3f80 0e00 0e00 0e00 0e00 0e00 0e00 0e00 3f80 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR Ograve ENCODING 99 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 3800 1c00 0e00 0000 1f00 3b80 71c0 71c0 71c0 71c0 71c0 3b80 1f00 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR Ugrave ENCODING 100 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 3800 1c00 0e00 0000 71c0 71c0 71c0 71c0 71c0 71c0 71c0 3b80 1f00 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR Atilde ENCODING 101 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 1d80 3f80 3700 0000 0e00 1f00 3b80 71c0 71c0 7fc0 71c0 71c0 71c0 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR Otilde ENCODING 102 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 1d80 3f80 3700 0000 1f00 3b80 71c0 71c0 71c0 71c0 71c0 3b80 1f00 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR onesuperior ENCODING 103 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 1c00 3c00 1c00 1c00 1c00 3e00 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR twosuperior ENCODING 104 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 1e00 3f00 0700 0e00 1c00 3800 3f00 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR threesuperior ENCODING 105 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 1e00 3f00 0300 0f00 0300 3f00 1e00 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR ordfeminine ENCODING 106 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 1f80 31c0 01c0 3fc0 71c0 71c0 3fc0 0000 7fc0 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR masculine ENCODING 107 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 1e00 3f00 7380 7380 7380 3f00 1e00 0000 7f80 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR guillemotleft ENCODING 108 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 06c0 0fc0 1f80 3f00 7e00 fc00 7e00 3f00 1f80 0fc0 06c0 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR guillemotright ENCODING 109 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 6c00 7e00 3f00 1f80 0fc0 07c0 0fc0 1f80 3f00 7e00 6c00 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR exclamdown ENCODING 110 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0e00 0e00 0000 0e00 0e00 0e00 0e00 0e00 0e00 0e00 0e00 0e00 0e00 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR questiondown ENCODING 111 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0e00 0e00 0000 0e00 0e00 0e00 1c00 3800 71c0 71c0 71c0 3b80 1f00 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR Adiaeresis ENCODING 112 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 3b80 3b80 0000 0000 0e00 1f00 3b80 71c0 71c0 7fc0 71c0 71c0 71c0 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR Ediaeresis ENCODING 113 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 3b80 3b80 0000 0000 7fc0 7000 7000 7000 7f00 7000 7000 7000 7fc0 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR Idiaeresis ENCODING 114 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 3b80 3b80 0000 0000 3f80 0e00 0e00 0e00 0e00 0e00 0e00 0e00 3f80 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR Odiaeresis ENCODING 115 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 3b80 3b80 0000 0000 1f00 3b80 71c0 71c0 71c0 71c0 71c0 3b80 1f00 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR Udiaeresis ENCODING 116 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 3b80 3b80 0000 0000 71c0 71c0 71c0 71c0 71c0 71c0 71c0 3b80 1f00 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR Acircumflex ENCODING 117 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0e00 1f00 3b80 0000 0e00 1f00 3b80 71c0 71c0 7fc0 71c0 71c0 71c0 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR Ecircumflex ENCODING 118 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0e00 1f00 3b80 0000 7fc0 7000 7000 7000 7f00 7000 7000 7000 7fc0 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR Icircumflex ENCODING 119 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0e00 1f00 3b80 0000 3f80 0e00 0e00 0e00 0e00 0e00 0e00 0e00 3f80 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR Ocircumflex ENCODING 120 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0e00 1f00 3b80 0000 1f00 3b80 71c0 71c0 71c0 71c0 71c0 3b80 1f00 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR Ucircumflex ENCODING 121 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0e00 1f00 3b80 0000 71c0 71c0 71c0 71c0 71c0 71c0 71c0 3bc0 1f00 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR Aacute ENCODING 122 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0380 0700 0e00 0000 0e00 1f00 3b80 71c0 71c0 7fc0 71c0 71c0 71c0 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR Eacute ENCODING 123 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0700 0e00 1c00 0000 7fc0 7000 7000 7000 7f00 7000 7000 7000 7fc0 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR Iacute ENCODING 124 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0700 0e00 1c00 0000 3f80 0e00 0e00 0e00 0e00 0e00 0e00 0e00 3f80 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR Oacute ENCODING 125 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0380 0700 0e00 0000 1f00 3b80 71c0 71c0 71c0 71c0 71c0 3b80 1f00 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR Uacute ENCODING 126 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0380 0700 0e00 0000 71c0 71c0 71c0 71c0 71c0 71c0 71c0 3b80 1f00 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR Ntilde ENCODING 127 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 1d80 3f80 3700 0000 61c0 71c0 79c0 7dc0 7fc0 7fc0 77c0 73c0 71c0 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR a ENCODING 128 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 0000 0000 0000 1f80 39c0 01c0 3fc0 71c0 71c0 71c0 3fc0 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR b ENCODING 129 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 7000 7000 7000 7000 7000 7f00 7b80 71c0 71c0 71c0 71c0 7b80 7f00 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR c ENCODING 130 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 0000 0000 0000 1f80 39c0 7000 7000 7000 7000 39c0 1f80 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR d ENCODING 131 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 01c0 01c0 01c0 01c0 01c0 1fc0 3bc0 71c0 71c0 71c0 71c0 3bc0 1fc0 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR e ENCODING 132 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 0000 0000 0000 1f00 3b80 71c0 7fc0 7000 7000 39c0 1f80 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR f ENCODING 133 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0f80 1dc0 1dc0 1c00 1c00 1c00 1c00 7f00 1c00 1c00 1c00 1c00 1c00 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR g ENCODING 134 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 0000 0000 0000 3fc0 73c0 7380 7380 7380 3f00 7000 3f80 71c0 71c0 71c0 3f80 0000 ENDCHAR STARTCHAR h ENCODING 135 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 7000 7000 7000 7000 7000 7f00 7b80 71c0 71c0 71c0 71c0 71c0 71c0 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR i ENCODING 136 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 0e00 0e00 0000 3e00 0e00 0e00 0e00 0e00 0e00 0e00 7fc0 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR j ENCODING 137 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 01c0 01c0 0000 07c0 01c0 01c0 01c0 01c0 01c0 01c0 01c0 39c0 39c0 39c0 1f80 0000 ENDCHAR STARTCHAR k ENCODING 138 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 7000 7000 7000 7000 7000 7380 7700 7e00 7c00 7e00 7700 7380 71c0 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR l ENCODING 139 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 3e00 0e00 0e00 0e00 0e00 0e00 0e00 0e00 0e00 0e00 0e00 0e00 7fc0 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR m ENCODING 140 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 0000 0000 0000 7f80 7fc0 7fc0 7fc0 7fc0 7fc0 7fc0 7fc0 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR n ENCODING 141 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 0000 0000 0000 7f00 7b80 71c0 71c0 71c0 71c0 71c0 71c0 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR o ENCODING 142 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 0000 0000 0000 1f00 3b80 71c0 71c0 71c0 71c0 3b80 1f00 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR p ENCODING 143 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 0000 0000 0000 7f00 7b80 71c0 71c0 71c0 71c0 7b80 7f00 7000 7000 7000 7000 0000 ENDCHAR STARTCHAR q ENCODING 144 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 0000 0000 0000 1fc0 3bc0 71c0 71c0 71c0 71c0 3bc0 1fc0 01c0 01c0 01c0 01c0 0000 ENDCHAR STARTCHAR r ENCODING 145 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 0000 0000 0000 7f80 3dc0 3800 3800 3800 3800 3800 3800 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR s ENCODING 146 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 0000 0000 0000 3f80 71c0 7000 3f80 01c0 01c0 71c0 3f80 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR t ENCODING 147 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 1c00 1c00 1c00 7f00 1c00 1c00 1c00 1c00 1c00 1dc0 0f80 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR u ENCODING 148 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 0000 0000 0000 71c0 71c0 71c0 71c0 71c0 71c0 3bc0 1fc0 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR v ENCODING 149 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 0000 0000 0000 71c0 71c0 3b80 3b80 1f00 1f00 0e00 0e00 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR w ENCODING 150 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 0000 0000 0000 71c0 71c0 71c0 7fc0 7fc0 7fc0 7fc0 3b80 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR x ENCODING 151 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 0000 0000 0000 71c0 3b80 1f00 0e00 0e00 1f00 3b80 71c0 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR y ENCODING 152 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 0000 0000 0000 71c0 71c0 71c0 71c0 71c0 71c0 3bc0 1fc0 01c0 71c0 3b80 1f00 0000 ENDCHAR STARTCHAR z ENCODING 153 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 0000 0000 0000 3fc0 01c0 0380 0700 0e00 1c00 3800 3fc0 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR ae ENCODING 154 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 0000 0000 0000 3f80 6fc0 0fc0 0f80 3e00 7e00 7ec0 3f80 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR oslash ENCODING 155 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 0000 0000 00c0 1f80 3b80 77c0 77c0 7dc0 7dc0 3b80 3f00 6000 0000 0000 0000 0000 ENDCHAR STARTCHAR aring ENCODING 156 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0e00 1b00 1b00 0e00 3f80 71c0 01c0 3fc0 71c0 71c0 71c0 3fc0 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR division ENCODING 157 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 0e00 0e00 0000 0000 7fc0 7fc0 0000 0000 0e00 0e00 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR fm ENCODING 158 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 0000 0f00 0f00 0000 0000 0000 0000 0f00 0f00 1e00 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR dup ENCODING 159 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 0000 3b80 3b80 1f00 7fc0 1f00 3b80 3b80 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR A ENCODING 160 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0e00 1f00 3b80 3b80 71c0 71c0 71c0 7fc0 71c0 71c0 71c0 71c0 71c0 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR B ENCODING 161 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 7e00 7700 7380 7380 7380 7700 7f00 7380 71c0 71c0 71c0 7380 7f00 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR C ENCODING 162 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 1f00 3b80 71c0 7000 7000 7000 7000 7000 7000 7000 71c0 3b80 1f00 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR D ENCODING 163 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 7f00 7380 71c0 71c0 71c0 71c0 71c0 71c0 71c0 71c0 71c0 7380 7f00 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR E ENCODING 164 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 7fc0 7000 7000 7000 7000 7000 7f00 7000 7000 7000 7000 7000 7fc0 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR F ENCODING 165 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 7fc0 7000 7000 7000 7000 7000 7f00 7000 7000 7000 7000 7000 7000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR G ENCODING 166 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 1f00 3b80 71c0 7000 7000 7000 77c0 71c0 71c0 71c0 71c0 3bc0 1fc0 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR H ENCODING 167 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 71c0 71c0 71c0 71c0 71c0 71c0 7fc0 71c0 71c0 71c0 71c0 71c0 71c0 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR I ENCODING 168 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 7fc0 0e00 0e00 0e00 0e00 0e00 0e00 0e00 0e00 0e00 0e00 0e00 7fc0 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR J ENCODING 169 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0fc0 01c0 01c0 01c0 01c0 01c0 01c0 01c0 01c0 71c0 71c0 3b80 1f00 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR K ENCODING 170 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 71c0 71c0 7380 7380 7700 7700 7e00 7700 7700 7380 7380 71c0 71c0 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR L ENCODING 171 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 7000 7000 7000 7000 7000 7000 7000 7000 7000 7000 7000 7000 7fc0 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR M ENCODING 172 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 71c0 71c0 7bc0 7bc0 7fc0 7fc0 7fc0 7fc0 7fc0 71c0 71c0 71c0 71c0 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR N ENCODING 173 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 71c0 79c0 79c0 7dc0 7dc0 7fc0 7fc0 77c0 77c0 73c0 73c0 71c0 71c0 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR O ENCODING 174 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 1f00 3b80 71c0 71c0 71c0 71c0 71c0 71c0 71c0 71c0 71c0 3b80 1f00 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR P ENCODING 175 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 7f00 7380 71c0 71c0 71c0 71c0 7380 7f00 7000 7000 7000 7000 7000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR Q ENCODING 176 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 1f00 3b80 71c0 71c0 71c0 71c0 71c0 71c0 71c0 7fc0 77c0 3b80 1f80 01c0 0000 0000 0000 0000 ENDCHAR STARTCHAR R ENCODING 177 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 7f00 7380 71c0 71c0 71c0 71c0 7380 7f00 7700 7380 7380 71c0 71c0 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR S ENCODING 178 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 1f00 3b80 71c0 7000 7000 3800 1f00 0380 01c0 01c0 71c0 3b80 1f00 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR T ENCODING 179 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 7fc0 0e00 0e00 0e00 0e00 0e00 0e00 0e00 0e00 0e00 0e00 0e00 0e00 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR U ENCODING 180 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 71c0 71c0 71c0 71c0 71c0 71c0 71c0 71c0 71c0 71c0 71c0 3b80 1f00 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR V ENCODING 181 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 71c0 71c0 71c0 71c0 3b80 3b80 3b80 1f00 1f00 1f00 0e00 0e00 0e00 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR W ENCODING 182 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 71c0 71c0 71c0 71c0 71c0 7fc0 7fc0 7fc0 7fc0 7bc0 7bc0 71c0 71c0 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR X ENCODING 183 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 71c0 71c0 3b80 3b80 1f00 1f00 0e00 1f00 1f00 3b80 3b80 71c0 71c0 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR Y ENCODING 184 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 71c0 71c0 3b80 3b80 1f00 1f00 0e00 0e00 0e00 0e00 0e00 0e00 0e00 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR Z ENCODING 185 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 7fc0 01c0 01c0 0380 0700 0700 0e00 1c00 1c00 3800 7000 7000 7fc0 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR AE ENCODING 186 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0fc0 1f00 3f00 3f00 7700 7700 7fc0 7700 7700 7700 7700 7700 77c0 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR Ooblique ENCODING 187 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 00c0 1f80 3b80 73c0 73c0 77c0 77c0 77c0 7dc0 7dc0 7dc0 79c0 3b80 3f00 6000 0000 0000 0000 0000 ENDCHAR STARTCHAR Aring ENCODING 188 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0e00 1b00 1b00 0e00 0e00 1f00 3b80 71c0 71c0 7fc0 71c0 71c0 71c0 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR Ccedilla ENCODING 189 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 1f00 3b80 71c0 7000 7000 7000 7000 7000 7000 7000 71c0 3b80 1f00 0e00 0600 1b00 0e00 0000 ENDCHAR STARTCHAR semicolon ENCODING 190 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 0000 0f00 0f00 0000 0000 0000 0000 0f00 0f00 1e00 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR asterisk ENCODING 191 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 0000 3b80 3b80 1f00 7fc0 1f00 3b80 3b80 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR c0 ENCODING 192 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR c1 ENCODING 193 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR c2 ENCODING 194 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR c3 ENCODING 195 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR c4 ENCODING 196 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR c5 ENCODING 197 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR c6 ENCODING 198 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR c7 ENCODING 199 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR c8 ENCODING 200 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR c9 ENCODING 201 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR ca ENCODING 202 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR cb ENCODING 203 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR cc ENCODING 204 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR cd ENCODING 205 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR ce ENCODING 206 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR cf ENCODING 207 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR copyright ENCODING 208 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 1e00 3300 6180 5e80 5280 5080 5280 5e80 6180 3300 1e00 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR registered ENCODING 209 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 1e00 3300 6180 5e80 5280 5e80 5480 5680 6180 3300 1e00 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR boxA ENCODING 210 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 1800 1800 2400 2400 4200 4200 7e00 4200 4200 4200 0000 ffc0 8040 8040 ffc0 0000 0000 0000 ENDCHAR STARTCHAR insert ENCODING 211 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 0000 0000 0c00 1e00 3f00 7f80 f3c0 e1c0 c0c0 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR boxB ENCODING 212 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 1e00 1100 1100 1100 1f00 1080 1080 1080 1080 1f00 0000 ffc0 8040 8040 ffc0 0000 0000 0000 ENDCHAR STARTCHAR box6 ENCODING 213 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 ffc0 8040 8040 8c40 9240 a040 a040 ac40 b240 a140 a140 a140 9240 8c40 8040 ffc0 0000 0000 0000 ENDCHAR STARTCHAR plusminus ENCODING 214 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 0e00 0e00 7fc0 7fc0 0e00 0e00 0000 7fc0 7fc0 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR ETH ENCODING 215 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 7f00 7380 71c0 71c0 71c0 71c0 fdc0 71c0 71c0 71c0 71c0 7380 7f00 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR rightarrow ENCODING 216 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 0000 0000 0400 0600 0700 ff80 ff80 0700 0600 0400 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR THORN ENCODING 217 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 3e00 1c00 1f80 1dc0 1dc0 1dc0 1f80 1c00 1c00 1c00 3e00 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR upshift ENCODING 218 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0c00 1200 1200 2100 2100 4080 7380 1200 1200 1200 1200 1200 1200 1200 1e00 0000 0000 0000 ENDCHAR STARTCHAR human ENCODING 219 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 1c00 2200 2200 2200 1c00 0800 7f00 0800 0800 1400 2200 4100 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR underB ENCODING 220 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 3c00 2200 2100 2200 3c00 2200 2100 2100 2200 3c00 0000 ffc0 ffc0 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR downshift ENCODING 221 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 1e00 1200 1200 1200 1200 1200 1200 1200 7380 4080 2100 2100 1200 1200 0c00 0000 0000 0000 ENDCHAR STARTCHAR boxquestion ENCODING 222 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 ffc0 8040 8040 9e40 a140 a140 8140 8240 8440 8840 8840 8040 8840 8840 8040 ffc0 0000 0000 0000 ENDCHAR STARTCHAR boxsolid ENCODING 223 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 ffc0 ffc0 ffc0 ffc0 ffc0 ffc0 ffc0 ffc0 ffc0 ffc0 ffc0 ffc0 ffc0 ffc0 ffc0 ffc0 0000 0000 0000 ENDCHAR STARTCHAR e0 ENCODING 224 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR e1 ENCODING 225 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR e2 ENCODING 226 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR e3 ENCODING 227 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR e4 ENCODING 228 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR e5 ENCODING 229 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR e6 ENCODING 230 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR e7 ENCODING 231 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR e8 ENCODING 232 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR e9 ENCODING 233 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR ea ENCODING 234 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR eb ENCODING 235 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR ec ENCODING 236 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR ed ENCODING 237 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR ee ENCODING 238 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR ef ENCODING 239 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR badcommhi ENCODING 240 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 8000 c000 e000 7000 ffc0 ffc0 0e00 0700 0380 01c0 00c0 0040 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR commhi ENCODING 241 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 0000 0000 0000 ffc0 ffc0 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR commjag ENCODING 242 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 0000 0000 0000 fe00 fe00 0c00 1800 3fc0 3fc0 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR commlo ENCODING 243 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ffc0 ffc0 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR clockleft ENCODING 244 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 0080 0400 0000 1000 0000 0040 2080 0080 0080 1080 0080 0400 0080 0000 0000 0000 ENDCHAR STARTCHAR clockright ENCODING 245 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 2000 0000 2800 4000 8000 0000 0400 0000 0000 0800 0000 2000 0000 0000 0000 0000 ENDCHAR STARTCHAR lock ENCODING 246 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 8040 c0c0 e1c0 f3c0 7f80 3f00 1e00 3f00 7f80 f3c0 e1c0 c0c0 8040 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR eth ENCODING 247 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 6600 7e00 3c00 3c00 7e00 6700 1f80 3bc0 71c0 71c0 71c0 3b80 1f00 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR leftarrow ENCODING 248 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 0000 0000 0800 1800 3800 7fc0 7fc0 3800 1800 0800 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR thorn ENCODING 249 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 0000 0000 0000 3c00 1f00 1f80 1f80 1f00 1c00 1c00 3c00 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR keyleft ENCODING 250 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 0000 0000 0e00 1f00 3180 31c0 3180 1f00 0e00 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR keyright ENCODING 251 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 ff80 1d80 1d80 0180 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR box4 ENCODING 252 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 ffc0 8040 8040 8240 8640 8a40 9240 a240 a240 bf40 8240 8240 8240 8240 8040 ffc0 0000 0000 0000 ENDCHAR STARTCHAR underA ENCODING 253 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0c00 0c00 1200 1200 2100 3f00 2100 2100 2100 0000 ffc0 ffc0 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR magcard ENCODING 254 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 0000 ffc0 8040 8040 8040 8040 ffc0 8040 8040 ffc0 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR boxhuman ENCODING 255 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 ffc0 8040 8e40 9140 9140 8e40 8440 bfc0 8440 8440 8440 8440 8a40 9140 a0c0 ffc0 0000 0000 0000 ENDCHAR STARTCHAR apl_space ENCODING 272 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR apl_bracketright ENCODING 316 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 3f80 0380 0380 0380 0380 0380 0380 0380 0380 0380 0380 0380 3f80 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR apl_bracketleft ENCODING 328 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 3f80 3800 3800 3800 3800 3800 3800 3800 3800 3800 3800 3800 3f80 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR apl_stile ENCODING 347 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0e00 0e00 0e00 0e00 0e00 0e00 0e00 0e00 0e00 0e00 0e00 0e00 0e00 0e00 0e00 0e00 0e00 0e00 0e00 0e00 ENDCHAR STARTCHAR apl_2vertical ENCODING 384 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 71c0 71c0 71c0 71c0 71c0 71c0 71c0 71c0 71c0 71c0 71c0 71c0 71c0 71c0 71c0 71c0 71c0 71c0 71c0 71c0 ENDCHAR STARTCHAR apl_2horizontal ENCODING 385 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 ffc0 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ffc0 0000 0000 ENDCHAR STARTCHAR apl_leftvbar ENCODING 386 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 7000 7000 7000 7000 7000 7000 7000 7000 7000 7000 7000 7000 7000 7000 7000 7000 7000 7000 7000 7000 ENDCHAR STARTCHAR apl_rightvbar ENCODING 387 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 01c0 01c0 01c0 01c0 01c0 01c0 01c0 01c0 01c0 01c0 01c0 01c0 01c0 01c0 01c0 01c0 01c0 01c0 01c0 01c0 ENDCHAR STARTCHAR apl_midvbar ENCODING 388 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0e00 0e00 0e00 0e00 0e00 0e00 0e00 0e00 0e00 0e00 0e00 0e00 0e00 0e00 0e00 0e00 0e00 0e00 0e00 0e00 ENDCHAR STARTCHAR apl_leftsolid ENCODING 393 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP fe00 fe00 fe00 fe00 fe00 fe00 fe00 fe00 fe00 fe00 fe00 fe00 fe00 fe00 fe00 fe00 fe00 fe00 fe00 fe00 ENDCHAR STARTCHAR apl_rightsolid ENCODING 394 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 07c0 07c0 07c0 07c0 07c0 07c0 07c0 07c0 07c0 07c0 07c0 07c0 07c0 07c0 07c0 07c0 07c0 07c0 07c0 07c0 ENDCHAR STARTCHAR apl_topsolid ENCODING 395 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP ffc0 ffc0 ffc0 ffc0 ffc0 ffc0 ffc0 ffc0 ffc0 ffc0 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR apl_bottomsolid ENCODING 396 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ffc0 ffc0 ffc0 ffc0 ffc0 ffc0 ffc0 ffc0 ffc0 ffc0 ENDCHAR STARTCHAR apl_solid ENCODING 397 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP ffc0 ffc0 ffc0 ffc0 ffc0 ffc0 ffc0 ffc0 ffc0 ffc0 ffc0 ffc0 ffc0 ffc0 ffc0 ffc0 ffc0 ffc0 ffc0 ffc0 ENDCHAR STARTCHAR apl_midhbar ENCODING 402 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 ffc0 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR apl_lowerleft ENCODING 419 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0e00 0e00 0e00 0e00 0e00 0e00 0e00 0e00 0e00 0fc0 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR apl_upperleft ENCODING 420 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0fc0 0e00 0e00 0e00 0e00 0e00 0e00 0e00 0e00 0e00 0e00 ENDCHAR STARTCHAR apl_leftjoin ENCODING 421 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0e00 0e00 0e00 0e00 0e00 0e00 0e00 0e00 0e00 0fc0 0e00 0e00 0e00 0e00 0e00 0e00 0e00 0e00 0e00 0e00 ENDCHAR STARTCHAR apl_bottomjoin ENCODING 422 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0e00 0e00 0e00 0e00 0e00 0e00 0e00 0e00 0e00 ffc0 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR apl_intersect ENCODING 427 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0e00 0e00 0e00 0e00 0e00 0e00 0e00 0e00 0e00 ffc0 0e00 0e00 0e00 0e00 0e00 0e00 0e00 0e00 0e00 0e00 ENDCHAR STARTCHAR apl_lowerright ENCODING 428 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0e00 0e00 0e00 0e00 0e00 0e00 0e00 0e00 0e00 fe00 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR apl_upperright ENCODING 429 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 fe00 0e00 0e00 0e00 0e00 0e00 0e00 0e00 0e00 0e00 0e00 ENDCHAR STARTCHAR apl_rightjoin ENCODING 430 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0e00 0e00 0e00 0e00 0e00 0e00 0e00 0e00 0e00 fe00 0e00 0e00 0e00 0e00 0e00 0e00 0e00 0e00 0e00 0e00 ENDCHAR STARTCHAR apl_topjoin ENCODING 431 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 ffc0 0e00 0e00 0e00 0e00 0e00 0e00 0e00 0e00 0e00 0e00 ENDCHAR STARTCHAR 200 ENCODING 512 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR 201 ENCODING 513 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 0000 0e00 1f00 3f80 7fc0 7fc0 3f80 1f00 0e00 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR 202 ENCODING 514 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 5540 aa80 5540 aa80 5540 aa80 5540 aa80 5540 aa80 5540 aa80 5540 aa80 5540 aa80 5540 aa80 5540 aa80 ENDCHAR STARTCHAR 203 ENCODING 515 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 7700 7700 7700 7f00 7700 7700 7700 0000 1fc0 0700 0700 0700 0700 0700 0000 0000 ENDCHAR STARTCHAR 204 ENCODING 516 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 7e00 7000 7000 7c00 7000 7000 7000 0fc0 0e00 0e00 0f80 0e00 0e00 0e00 0000 0000 ENDCHAR STARTCHAR 205 ENCODING 517 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 3e00 7700 7000 7000 7700 3e00 0000 1f80 1dc0 1dc0 1f80 1f00 1f80 1dc0 0000 0000 ENDCHAR STARTCHAR 206 ENCODING 518 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 3800 3800 3800 3800 3800 3f00 0000 0fc0 0e00 0e00 0f80 0e00 0e00 0e00 0000 0000 ENDCHAR STARTCHAR 207 ENCODING 519 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 1f00 3b80 3b80 3b80 1f00 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR 208 ENCODING 520 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0e00 0e00 7fc0 0e00 0e00 0000 7fc0 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR 209 ENCODING 521 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 7700 7f00 7f00 7f00 7f00 7700 0000 0e00 0e00 0e00 0e00 0e00 0e00 0fc0 0000 0000 ENDCHAR STARTCHAR 20a ENCODING 522 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 7700 7700 7700 3e00 3e00 1c00 1c00 0000 1fc0 0700 0700 0700 0700 0700 0000 0000 ENDCHAR STARTCHAR 20b ENCODING 523 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0e00 0e00 0e00 0e00 0e00 0e00 0e00 0e00 0e00 fe00 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR 20c ENCODING 524 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 fe00 0e00 0e00 0e00 0e00 0e00 0e00 0e00 0e00 0e00 0e00 ENDCHAR STARTCHAR 20d ENCODING 525 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0fc0 0e00 0e00 0e00 0e00 0e00 0e00 0e00 0e00 0e00 0e00 ENDCHAR STARTCHAR 20e ENCODING 526 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0e00 0e00 0e00 0e00 0e00 0e00 0e00 0e00 0e00 0fc0 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR 20f ENCODING 527 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0e00 0e00 0e00 0e00 0e00 0e00 0e00 0e00 0e00 ffc0 0e00 0e00 0e00 0e00 0e00 0e00 0e00 0e00 0e00 0e00 ENDCHAR STARTCHAR 210 ENCODING 528 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 ffc0 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR 211 ENCODING 529 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 0000 0000 ffc0 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR 212 ENCODING 530 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 ffc0 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR 213 ENCODING 531 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ffc0 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR 214 ENCODING 532 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ffc0 0000 0000 0000 0000 ENDCHAR STARTCHAR 215 ENCODING 533 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0e00 0e00 0e00 0e00 0e00 0e00 0e00 0e00 0e00 0fc0 0e00 0e00 0e00 0e00 0e00 0e00 0e00 0e00 0e00 0e00 ENDCHAR STARTCHAR 216 ENCODING 534 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0e00 0e00 0e00 0e00 0e00 0e00 0e00 0e00 0e00 fe00 0e00 0e00 0e00 0e00 0e00 0e00 0e00 0e00 0e00 0e00 ENDCHAR STARTCHAR 217 ENCODING 535 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0e00 0e00 0e00 0e00 0e00 0e00 0e00 0e00 0e00 ffc0 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR 218 ENCODING 536 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 ffc0 0e00 0e00 0e00 0e00 0e00 0e00 0e00 0e00 0e00 0e00 ENDCHAR STARTCHAR 219 ENCODING 537 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0e00 0e00 0e00 0e00 0e00 0e00 0e00 0e00 0e00 0e00 0e00 0e00 0e00 0e00 0e00 0e00 0e00 0e00 0e00 0e00 ENDCHAR STARTCHAR 21a ENCODING 538 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 0000 01c0 0780 1e00 7800 1e00 0780 01c0 0000 0000 7fc0 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR 21b ENCODING 539 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 0000 7800 1e00 0780 01c0 0780 1e00 7800 0000 0000 7fc0 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR 21c ENCODING 540 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 0000 0000 0000 00c0 3fc0 7f80 1f80 1f80 1f80 1f80 3b80 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR 21d ENCODING 541 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 0000 0000 01c0 0380 7fc0 0700 0e00 7fc0 1c00 3800 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR 21e ENCODING 542 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0f80 1dc0 1dc0 1c00 1c00 1c00 7f00 1c00 1c00 1c00 7e00 7fc0 7bc0 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR 21f ENCODING 543 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0e00 0e00 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR ENDFONT suite3270-4.1/x3270/3270.bdf000066400000000000000000002067461413735575200147110ustar00rootroot00000000000000STARTFONT 2.1 COMMENT "14-point 3270 font" COMMENT "Uses nonstandard ordering:" COMMENT " Page 0: EBCDIC US-International set, CG order" COMMENT " Page 1: EBCDIC APL/APL2 set, CG order" COMMENT " Page 2: (first 16 characters only) DEC line-drawing characters from" COMMENT " fixed-width X fonts" COMMENT "" COMMENT "Copyright (c) 1993-2009, Paul Mattes." COMMENT "Copyright (c) 1990, Jeff Sparkes." COMMENT "Copyright (c) 1989, Georgia Tech Research Corporation (GTRC)," COMMENT " Atlanta, GA 30332." COMMENT "All rights reserved." COMMENT "" COMMENT "Redistribution and use in source and binary forms, with or" COMMENT "without modification, are permitted provided that the following" COMMENT "conditions are met:" COMMENT " * Redistributions of source code must retain the above" COMMENT " copyright notice, this list of conditions and the following" COMMENT " disclaimer." COMMENT " * Redistributions in binary form must reproduce the above" COMMENT " copyright notice, this list of conditions and the following" COMMENT " disclaimer in the documentation and/or other materials" COMMENT " provided with the distribution." COMMENT " * Neither the names of Paul Mattes, Jeff Sparkes, GTRC" COMMENT " nor their contributors may be used to endorse or promote" COMMENT " products derived from this software without specific prior" COMMENT " written permission." COMMENT "" COMMENT "THIS SOFTWARE IS PROVIDED BY PAUL MATTES, JEFF SPARKES AND GTRC" COMMENT "'AS IS' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT" COMMENT "NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND" COMMENT "FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT" COMMENT "SHALL PAUL MATTES, JEFF SPARKES OR GTRC BE LIABLE FOR ANY DIRECT," COMMENT "INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL" COMMENT "DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE" COMMENT "GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS" COMMENT "INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY," COMMENT "WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING" COMMENT "NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF" COMMENT "THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." FONT 3270 SIZE 14 72 72 FONTBOUNDINGBOX 9 14 0 -3 STARTPROPERTIES 17 FONTNAME_REGISTRY "" FOUNDRY "Misc" FAMILY_NAME "3270" WEIGHT_NAME "Medium" SLANT "R" SETWIDTH_NAME "Normal" PIXEL_SIZE 14 POINT_SIZE 140 RESOLUTION_X 72 RESOLUTION_Y 72 SPACING "C" CHARSET_REGISTRY "3270cg" CHARSET_ENCODING "1a" AVERAGE_WIDTH 90 DEFAULT_CHAR 514 FONT_ASCENT 11 FONT_DESCENT 3 ENDPROPERTIES CHARS 431 STARTCHAR null ENCODING 0 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR nobreakspace ENCODING 1 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR euro ENCODING 2 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 1e00 2100 2000 de00 2000 dc00 2000 2100 1e00 0000 0000 0000 ENDCHAR STARTCHAR cr ENCODING 3 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR nl ENCODING 4 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR em ENCODING 5 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR eightones ENCODING 6 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0000 1c00 3e00 7f00 7f00 7f00 3e00 1c00 0000 0000 0000 0000 ENDCHAR STARTCHAR hyphen ENCODING 7 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0000 0000 0000 0000 3e00 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR greater ENCODING 8 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 2000 1000 0800 0400 0200 0400 0800 1000 2000 0000 0000 0000 ENDCHAR STARTCHAR less ENCODING 9 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0200 0400 0800 1000 2000 1000 0800 0400 0200 0000 0000 0000 ENDCHAR STARTCHAR bracketleft ENCODING 10 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 1c00 1000 1000 1000 1000 1000 1000 1000 1000 1000 1c00 0000 0000 ENDCHAR STARTCHAR bracketright ENCODING 11 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 1c00 0400 0400 0400 0400 0400 0400 0400 0400 0400 1c00 0000 0000 ENDCHAR STARTCHAR parenright ENCODING 12 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 1000 0800 0400 0400 0400 0400 0400 0800 1000 0000 0000 0000 ENDCHAR STARTCHAR parenleft ENCODING 13 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0400 0800 1000 1000 1000 1000 1000 0800 0400 0000 0000 0000 ENDCHAR STARTCHAR braceright ENCODING 14 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 3000 0800 0800 0800 0800 0400 0800 0800 0800 0800 3000 0000 0000 ENDCHAR STARTCHAR braceleft ENCODING 15 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0c00 1000 1000 1000 1000 2000 1000 1000 1000 1000 0c00 0000 0000 ENDCHAR STARTCHAR space ENCODING 16 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR equal ENCODING 17 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0000 0000 7f00 0000 0000 7f00 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR apostrophe ENCODING 18 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0800 0800 0800 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR quotedbl ENCODING 19 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 2400 2400 2400 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR slash ENCODING 20 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0000 0100 0200 0400 0800 1000 2000 4000 0000 0000 0000 0000 ENDCHAR STARTCHAR backslash ENCODING 21 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0000 4000 2000 1000 0800 0400 0200 0100 0000 0000 0000 0000 ENDCHAR STARTCHAR bar ENCODING 22 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0800 0800 0800 0800 0800 0800 0800 0800 0800 0800 0800 0800 0800 0000 ENDCHAR STARTCHAR brokenbar ENCODING 23 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0800 0800 0800 0800 0800 0000 0000 0800 0800 0800 0800 0800 0000 ENDCHAR STARTCHAR question ENCODING 24 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 1e00 2100 2100 0200 0400 0800 0800 0000 0000 0800 0000 0000 0000 ENDCHAR STARTCHAR exclam ENCODING 25 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0800 0800 0800 0800 0800 0800 0800 0000 0000 0800 0000 0000 0000 ENDCHAR STARTCHAR dollar ENCODING 26 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0800 0800 3f00 4800 4800 3e00 0900 0900 7e00 0800 0800 0000 0000 ENDCHAR STARTCHAR cent ENCODING 27 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0800 0800 3e00 4800 4800 4800 3e00 0800 0800 0000 0000 0000 0000 ENDCHAR STARTCHAR sterling ENCODING 28 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0c00 1200 1000 1000 7c00 1000 1000 1000 7100 6e00 0000 0000 0000 ENDCHAR STARTCHAR yen ENCODING 29 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 4100 2200 1400 0800 7f00 0800 0800 7f00 0800 0800 0000 0000 0000 ENDCHAR STARTCHAR paragraph ENCODING 30 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 7800 4400 4400 4400 7800 4000 4400 4e00 4400 4400 0400 0000 0000 ENDCHAR STARTCHAR currency ENCODING 31 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 4100 2200 1c00 2200 2200 2200 1c00 2200 4100 0000 0000 0000 ENDCHAR STARTCHAR 0 ENCODING 32 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 1c00 2200 4100 4100 4900 4900 4100 4100 2200 1c00 0000 0000 0000 ENDCHAR STARTCHAR 1 ENCODING 33 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0800 1800 2800 0800 0800 0800 0800 0800 0800 0800 0000 0000 0000 ENDCHAR STARTCHAR 2 ENCODING 34 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 1e00 2100 4100 0100 0200 0400 0800 1000 2000 7f00 0000 0000 0000 ENDCHAR STARTCHAR 3 ENCODING 35 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 3f00 0100 0200 0400 0c00 0200 0100 0100 4200 3c00 0000 0000 0000 ENDCHAR STARTCHAR 4 ENCODING 36 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0600 0a00 1200 2200 4200 4200 7f00 0200 0200 0200 0000 0000 0000 ENDCHAR STARTCHAR 5 ENCODING 37 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 7f00 4000 4000 7c00 0200 0100 0100 0100 0200 7c00 0000 0000 0000 ENDCHAR STARTCHAR 6 ENCODING 38 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 1000 2000 4000 4000 5c00 6200 4100 4100 2200 1c00 0000 0000 0000 ENDCHAR STARTCHAR 7 ENCODING 39 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 7f00 0100 0200 0400 0800 1000 1000 1000 1000 1000 0000 0000 0000 ENDCHAR STARTCHAR 8 ENCODING 40 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 1c00 2200 2200 2200 1c00 2200 4100 4100 2200 1c00 0000 0000 0000 ENDCHAR STARTCHAR 9 ENCODING 41 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 1e00 2100 4100 4300 4500 3900 0100 0100 0100 0200 0000 0000 0000 ENDCHAR STARTCHAR ssharp ENCODING 42 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 1800 2400 4400 4800 4400 4200 4100 4100 5100 4e00 0000 0000 0000 ENDCHAR STARTCHAR section ENCODING 43 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 1c00 2000 2000 5000 4800 4400 2200 1200 0a00 0400 0400 3800 0000 ENDCHAR STARTCHAR numbersign ENCODING 44 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 2400 7e00 2400 2400 7e00 2400 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR at ENCODING 45 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 3e00 4100 4100 4d00 5500 5e00 4000 4000 4000 3f00 0000 0000 0000 ENDCHAR STARTCHAR percent ENCODING 46 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 2000 5000 2100 0200 0400 0800 1000 2000 4200 0500 0200 0000 0000 ENDCHAR STARTCHAR underscore ENCODING 47 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 7f00 0000 0000 ENDCHAR STARTCHAR ampersand ENCODING 48 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 3000 4800 4800 4800 3000 5100 4a00 4400 3a00 0100 0000 0000 ENDCHAR STARTCHAR minus ENCODING 49 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0000 0000 0000 0000 3e00 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR period ENCODING 50 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 1800 1800 0000 0000 0000 ENDCHAR STARTCHAR comma ENCODING 51 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0c00 0c00 1800 3000 0000 ENDCHAR STARTCHAR colon ENCODING 52 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0000 0000 0000 1800 1800 0000 0000 1800 1800 0000 0000 0000 ENDCHAR STARTCHAR plus ENCODING 53 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0000 0800 0800 0800 7f00 0800 0800 0800 0000 0000 0000 0000 ENDCHAR STARTCHAR notsign ENCODING 54 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 7f00 0100 0100 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR macron ENCODING 55 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 7f00 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR degree ENCODING 56 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 1800 2400 2400 1800 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR periodcentered ENCODING 57 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0000 0000 0000 0000 0c00 0c00 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR asciicircum ENCODING 58 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0800 1400 2200 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR asciitilde ENCODING 59 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 3000 4900 0600 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR diaeresis ENCODING 60 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 6300 6300 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR grave ENCODING 61 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 1000 0800 0400 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR acute ENCODING 62 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0400 0800 1000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR cedilla ENCODING 63 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0800 0800 0800 3000 0000 ENDCHAR STARTCHAR agrave ENCODING 64 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 2000 1000 0800 0000 3c00 0200 0200 3e00 4200 4200 3f00 0000 0000 0000 ENDCHAR STARTCHAR egrave ENCODING 65 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 2000 1000 0800 0000 3c00 4200 4200 7e00 4000 4000 3e00 0000 0000 0000 ENDCHAR STARTCHAR igrave ENCODING 66 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 1000 0800 0400 0000 0000 0800 0800 0800 0800 0800 0800 0000 0000 0000 ENDCHAR STARTCHAR ograve ENCODING 67 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 2000 1000 0800 0000 3c00 4200 4200 4200 4200 4200 3c00 0000 0000 0000 ENDCHAR STARTCHAR ugrave ENCODING 68 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 2000 1000 0800 0000 4200 4200 4200 4200 4200 4200 3d00 0000 0000 0000 ENDCHAR STARTCHAR atilde ENCODING 69 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 1900 2600 0000 3c00 0200 0200 3e00 4200 4200 3f00 0000 0000 0000 ENDCHAR STARTCHAR otilde ENCODING 70 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 3200 4c00 0000 3c00 4200 4200 4200 4200 4200 3c00 0000 0000 0000 ENDCHAR STARTCHAR ydiaeresis ENCODING 71 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 2400 0000 0000 4200 4200 4200 4200 2200 1400 0800 1000 2000 4000 ENDCHAR STARTCHAR Yacute ENCODING 72 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0200 0400 4900 2200 1400 0800 0800 0800 0800 0800 0800 0000 0000 0000 ENDCHAR STARTCHAR yacute ENCODING 73 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0400 0800 1000 0000 4200 4200 4200 4200 2200 1400 0800 1000 2000 4000 ENDCHAR STARTCHAR eacute ENCODING 74 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0200 0400 0800 0000 3c00 4200 4200 7e00 4000 4000 3e00 0000 0000 0000 ENDCHAR STARTCHAR onequarter ENCODING 75 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 2000 6000 2000 2000 7200 0600 0a00 0f00 0200 0000 0000 0000 ENDCHAR STARTCHAR onehalf ENCODING 76 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 2000 6000 2000 2000 7600 0100 0200 0400 0700 0000 0000 0000 ENDCHAR STARTCHAR threequarters ENCODING 77 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 3000 4800 1000 4800 3200 0600 0a00 0f00 0200 0000 0000 0000 ENDCHAR STARTCHAR udiaeresis ENCODING 78 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 2400 0000 0000 4200 4200 4200 4200 4200 4200 3d00 0000 0000 0000 ENDCHAR STARTCHAR ccedilla ENCODING 79 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0000 0000 1e00 2000 4000 4000 4000 2000 1e00 0800 3800 0000 ENDCHAR STARTCHAR adiaeresis ENCODING 80 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 2400 0000 0000 3c00 0200 0200 3e00 4200 4200 3f00 0000 0000 0000 ENDCHAR STARTCHAR ediaeresis ENCODING 81 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 2400 0000 0000 3c00 4200 4200 7e00 4000 4000 3e00 0000 0000 0000 ENDCHAR STARTCHAR idiaeresis ENCODING 82 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 2200 0000 0000 0800 0800 0800 0800 0800 0800 0800 0000 0000 0000 ENDCHAR STARTCHAR odiaeresis ENCODING 83 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 2400 0000 0000 3c00 4200 4200 4200 4200 4200 3c00 0000 0000 0000 ENDCHAR STARTCHAR mu ENCODING 84 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0000 0000 0000 4200 4200 4200 4200 4200 4200 7d00 4000 4000 ENDCHAR STARTCHAR acircumflex ENCODING 85 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0800 1400 0000 3c00 0200 0200 3e00 4200 4200 3f00 0000 0000 0000 ENDCHAR STARTCHAR ecircumflex ENCODING 86 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0800 1400 0000 3c00 4200 4200 7e00 4000 4000 3e00 0000 0000 0000 ENDCHAR STARTCHAR icircumflex ENCODING 87 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0800 1400 0000 0000 0800 0800 0800 0800 0800 0800 0000 0000 0000 ENDCHAR STARTCHAR ocircumflex ENCODING 88 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0800 1400 0000 1c00 2200 2200 2200 2200 2200 1c00 0000 0000 0000 ENDCHAR STARTCHAR ucircumflex ENCODING 89 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 1000 2800 0000 4400 4400 4400 4400 4400 4400 3a00 0000 0000 0000 ENDCHAR STARTCHAR aacute ENCODING 90 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0200 0400 0800 0000 3c00 0200 0200 3e00 4200 4200 3f00 0000 0000 0000 ENDCHAR STARTCHAR multiply ENCODING 91 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0000 0000 2200 1400 0800 1400 2200 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR iacute ENCODING 92 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0400 0800 1000 0000 0000 0800 0800 0800 0800 0800 0800 0000 0000 0000 ENDCHAR STARTCHAR oacute ENCODING 93 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0400 0800 1000 0000 3c00 4200 4200 4200 4200 4200 3c00 0000 0000 0000 ENDCHAR STARTCHAR uacute ENCODING 94 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0400 0800 1000 0000 4200 4200 4200 4200 4200 4200 3d00 0000 0000 0000 ENDCHAR STARTCHAR ntilde ENCODING 95 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 1900 2600 0000 5e00 2100 2100 2100 2100 2100 2100 0000 0000 0000 ENDCHAR STARTCHAR Agrave ENCODING 96 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0800 0400 0200 0800 1400 2200 4100 7f00 4100 4100 4100 0000 0000 0000 ENDCHAR STARTCHAR Egrave ENCODING 97 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 2000 1000 0800 7f00 4000 4000 7c00 4000 4000 4000 7f00 0000 0000 0000 ENDCHAR STARTCHAR Igrave ENCODING 98 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 1000 0800 0400 0000 1c00 0800 0800 0800 0800 0800 1c00 0000 0000 0000 ENDCHAR STARTCHAR Ograve ENCODING 99 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 2000 1000 0800 3e00 4100 4100 4100 4100 4100 4100 3e00 0000 0000 0000 ENDCHAR STARTCHAR Ugrave ENCODING 100 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 2000 1000 0800 4100 4100 4100 4100 4100 4100 4100 3e00 0000 0000 0000 ENDCHAR STARTCHAR Atilde ENCODING 101 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 1900 2600 0000 0800 1400 2200 4100 7f00 4100 4100 0000 0000 0000 ENDCHAR STARTCHAR Otilde ENCODING 102 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 1900 2600 3e00 4100 4100 4100 4100 4100 4100 4100 3e00 0000 0000 0000 ENDCHAR STARTCHAR onesuperior ENCODING 103 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0800 1800 0800 0800 1c00 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR twosuperior ENCODING 104 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 1800 2400 0800 1000 3c00 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR threesuperior ENCODING 105 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 1800 2400 0800 2400 1800 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR ordfeminine ENCODING 106 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 1c00 0200 1e00 2200 1e00 0000 3e00 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR masculine ENCODING 107 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 1c00 2200 2200 2200 1c00 0000 3e00 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR guillemotleft ENCODING 108 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0000 1100 2200 4400 2200 1100 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR guillemotright ENCODING 109 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0000 4400 2200 1100 2200 4400 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR exclamdown ENCODING 110 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0800 0000 0000 0800 0800 0800 0800 0800 0800 0800 0000 0000 0000 ENDCHAR STARTCHAR questiondown ENCODING 111 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0400 0000 0000 0400 0400 0800 1000 2100 2100 1e00 0000 0000 0000 ENDCHAR STARTCHAR Adiaeresis ENCODING 112 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 2200 0000 0800 1400 2200 4100 4100 7f00 4100 4100 4100 0000 0000 0000 ENDCHAR STARTCHAR Ediaeresis ENCODING 113 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 2200 0000 7f00 4000 4000 4000 7c00 4000 4000 4000 7f00 0000 0000 0000 ENDCHAR STARTCHAR Idiaeresis ENCODING 114 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 2200 0000 1c00 0800 0800 0800 0800 0800 0800 0800 1c00 0000 0000 0000 ENDCHAR STARTCHAR Odiaeresis ENCODING 115 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 2200 0000 3e00 4100 4100 4100 4100 4100 4100 4100 3e00 0000 0000 0000 ENDCHAR STARTCHAR Udiaeresis ENCODING 116 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 2200 0000 4100 4100 4100 4100 4100 4100 4100 4100 3e00 0000 0000 0000 ENDCHAR STARTCHAR Acircumflex ENCODING 117 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0800 1400 0000 0800 1400 2200 4100 7f00 4100 4100 4100 0000 0000 0000 ENDCHAR STARTCHAR Ecircumflex ENCODING 118 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0800 1400 0000 7f00 4000 4000 4000 7c00 4000 4000 7f00 0000 0000 0000 ENDCHAR STARTCHAR Icircumflex ENCODING 119 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0800 1400 0000 1c00 0800 0800 0800 0800 0800 0800 1c00 0000 0000 0000 ENDCHAR STARTCHAR Ocircumflex ENCODING 120 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0800 1400 0000 3e00 4100 4100 4100 4100 4100 4100 3e00 0000 0000 0000 ENDCHAR STARTCHAR Ucircumflex ENCODING 121 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0800 1400 0000 4100 4100 4100 4100 4100 4100 4100 3e00 0000 0000 0000 ENDCHAR STARTCHAR Aacute ENCODING 122 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0800 1000 2000 0800 1400 2200 4100 7f00 4100 4100 4100 0000 0000 0000 ENDCHAR STARTCHAR Eacute ENCODING 123 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0200 0400 0800 7f00 4000 4000 4000 7c00 4000 4000 7f00 0000 0000 0000 ENDCHAR STARTCHAR Iacute ENCODING 124 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0400 0800 1000 0000 1c00 0800 0800 0800 0800 0800 1c00 0000 0000 0000 ENDCHAR STARTCHAR Oacute ENCODING 125 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0200 0400 0800 3e00 4100 4100 4100 4100 4100 4100 3e00 0000 0000 0000 ENDCHAR STARTCHAR Uacute ENCODING 126 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0200 0400 0800 4100 4100 4100 4100 4100 4100 4100 3e00 0000 0000 0000 ENDCHAR STARTCHAR Ntilde ENCODING 127 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 1900 2600 0000 4100 6100 5100 4900 4500 4300 4100 0000 0000 0000 ENDCHAR STARTCHAR a ENCODING 128 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0000 0000 3c00 0200 0200 3e00 4200 4200 3f00 0000 0000 0000 ENDCHAR STARTCHAR b ENCODING 129 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 4000 4000 4000 7800 4400 4200 4200 4200 4400 7800 0000 0000 0000 ENDCHAR STARTCHAR c ENCODING 130 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0000 0000 1e00 2000 4000 4000 4000 2000 1e00 0000 0000 0000 ENDCHAR STARTCHAR d ENCODING 131 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0200 0200 0200 1e00 2200 4200 4200 4200 2200 1e00 0000 0000 0000 ENDCHAR STARTCHAR e ENCODING 132 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0000 0000 3c00 4200 4200 7e00 4000 4000 3e00 0000 0000 0000 ENDCHAR STARTCHAR f ENCODING 133 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0e00 1000 1000 7c00 1000 1000 1000 1000 1000 1000 0000 0000 0000 ENDCHAR STARTCHAR g ENCODING 134 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0000 0000 1e00 2100 4100 4100 2300 1d00 0100 2100 1e00 0000 ENDCHAR STARTCHAR h ENCODING 135 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 4000 4000 4000 5c00 6200 4200 4200 4200 4200 4200 0000 0000 0000 ENDCHAR STARTCHAR i ENCODING 136 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0800 0000 0000 0800 0800 0800 0800 0800 0800 0800 0000 0000 0000 ENDCHAR STARTCHAR j ENCODING 137 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0200 0000 0000 0200 0200 0200 0200 0200 0200 0200 2200 1c00 0000 ENDCHAR STARTCHAR k ENCODING 138 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 2000 2000 2000 2200 2400 2800 3000 2800 2400 2200 0000 0000 0000 ENDCHAR STARTCHAR l ENCODING 139 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0800 0800 0800 0800 0800 0800 0800 0800 0800 0c00 0000 0000 0000 ENDCHAR STARTCHAR m ENCODING 140 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0000 0000 3600 4900 4900 4900 4900 4900 4900 0000 0000 0000 ENDCHAR STARTCHAR n ENCODING 141 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0000 0000 5e00 2100 2100 2100 2100 2100 2100 0000 0000 0000 ENDCHAR STARTCHAR o ENCODING 142 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0000 0000 3c00 4200 4200 4200 4200 4200 3c00 0000 0000 0000 ENDCHAR STARTCHAR p ENCODING 143 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0000 0000 7800 4400 4200 4200 4200 4400 7800 4000 4000 4000 ENDCHAR STARTCHAR q ENCODING 144 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0000 0000 1e00 2200 4200 4200 2200 1e00 0200 0200 0300 0000 ENDCHAR STARTCHAR r ENCODING 145 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0000 0000 4e00 3100 2000 2000 2000 2000 2000 0000 0000 0000 ENDCHAR STARTCHAR s ENCODING 146 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0000 0000 3c00 4200 2000 1800 0400 4200 3c00 0000 0000 0000 ENDCHAR STARTCHAR t ENCODING 147 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0800 0800 0800 3e00 0800 0800 0800 0800 0800 0800 0000 0000 0000 ENDCHAR STARTCHAR u ENCODING 148 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0000 0000 4200 4200 4200 4200 4200 4200 3d00 0000 0000 0000 ENDCHAR STARTCHAR v ENCODING 149 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0000 0000 4100 4100 2200 2200 1400 1400 0800 0000 0000 0000 ENDCHAR STARTCHAR w ENCODING 150 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0000 0000 4100 4100 4100 4900 4900 5500 2200 0000 0000 0000 ENDCHAR STARTCHAR x ENCODING 151 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0000 0000 4100 2200 1400 0800 1400 2200 4100 0000 0000 0000 ENDCHAR STARTCHAR y ENCODING 152 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0000 0000 4200 4200 4200 4200 2200 1400 0800 1000 2000 4000 ENDCHAR STARTCHAR z ENCODING 153 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0000 0000 7f00 0200 0400 0800 1000 2000 7f00 0000 0000 0000 ENDCHAR STARTCHAR ae ENCODING 154 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0000 0000 7600 0900 1900 2f00 4800 4800 3700 0000 0000 0000 ENDCHAR STARTCHAR oslash ENCODING 155 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0000 0000 1d00 2200 2600 2a00 3200 2200 5c00 0000 0000 0000 ENDCHAR STARTCHAR aring ENCODING 156 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 1c00 1c00 0000 3c00 0200 0200 3e00 4200 4200 3f00 0000 0000 0000 ENDCHAR STARTCHAR division ENCODING 157 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0000 1800 1800 0000 7e00 0000 1800 1800 0000 0000 0000 0000 ENDCHAR STARTCHAR fm ENCODING 158 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 7f00 7f00 0000 0c00 0c00 0000 0000 0c00 0c00 1800 3000 0000 0000 ENDCHAR STARTCHAR dup ENCODING 159 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 7f00 7f00 0000 0800 4900 2a00 1400 2a00 4900 0800 0000 0000 0000 ENDCHAR STARTCHAR A ENCODING 160 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0800 1400 2200 4100 4100 7f00 4100 4100 4100 0000 0000 0000 ENDCHAR STARTCHAR B ENCODING 161 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 7c00 2200 2100 2200 3c00 2200 2100 2200 7c00 0000 0000 0000 ENDCHAR STARTCHAR C ENCODING 162 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0e00 1100 2000 4000 4000 4000 2000 1100 0e00 0000 0000 0000 ENDCHAR STARTCHAR D ENCODING 163 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 7c00 2200 2100 2100 2100 2100 2100 2200 7c00 0000 0000 0000 ENDCHAR STARTCHAR E ENCODING 164 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 7f00 4000 4000 4000 7c00 4000 4000 4000 7f00 0000 0000 0000 ENDCHAR STARTCHAR F ENCODING 165 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 7f00 4000 4000 4000 7e00 4000 4000 4000 4000 0000 0000 0000 ENDCHAR STARTCHAR G ENCODING 166 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 1c00 2200 4000 4000 4000 4f00 4200 2200 1e00 0000 0000 0000 ENDCHAR STARTCHAR H ENCODING 167 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 4100 4100 4100 4100 7f00 4100 4100 4100 4100 0000 0000 0000 ENDCHAR STARTCHAR I ENCODING 168 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 1c00 0800 0800 0800 0800 0800 0800 0800 1c00 0000 0000 0000 ENDCHAR STARTCHAR J ENCODING 169 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0e00 0400 0400 0400 0400 0400 4400 4400 3800 0000 0000 0000 ENDCHAR STARTCHAR K ENCODING 170 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 4100 4200 4400 4800 5000 6800 4400 4200 4100 0000 0000 0000 ENDCHAR STARTCHAR L ENCODING 171 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 4000 4000 4000 4000 4000 4000 4000 4000 7f00 0000 0000 0000 ENDCHAR STARTCHAR M ENCODING 172 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 4100 6300 5500 4900 4900 4100 4100 4100 4100 0000 0000 0000 ENDCHAR STARTCHAR N ENCODING 173 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 4100 6100 5100 4900 4500 4300 4100 4100 4100 0000 0000 0000 ENDCHAR STARTCHAR O ENCODING 174 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 3e00 4100 4100 4100 4100 4100 4100 4100 3e00 0000 0000 0000 ENDCHAR STARTCHAR P ENCODING 175 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 7c00 4200 4100 4100 4200 7c00 4000 4000 4000 0000 0000 0000 ENDCHAR STARTCHAR Q ENCODING 176 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 1c00 2200 4100 4100 4100 4100 4900 2a00 1c00 0200 0100 0000 ENDCHAR STARTCHAR R ENCODING 177 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 7e00 4100 4100 4100 7e00 4800 4400 4200 4100 0000 0000 0000 ENDCHAR STARTCHAR S ENCODING 178 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 3e00 4100 4000 3000 0800 0600 0100 4100 3e00 0000 0000 0000 ENDCHAR STARTCHAR T ENCODING 179 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 7f00 0800 0800 0800 0800 0800 0800 0800 0800 0000 0000 0000 ENDCHAR STARTCHAR U ENCODING 180 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 4100 4100 4100 4100 4100 4100 4100 4100 3e00 0000 0000 0000 ENDCHAR STARTCHAR V ENCODING 181 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 4100 4100 2200 2200 2200 1400 1400 0800 0800 0000 0000 0000 ENDCHAR STARTCHAR W ENCODING 182 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 4100 4100 4100 4100 4900 4900 4900 5500 2200 0000 0000 0000 ENDCHAR STARTCHAR X ENCODING 183 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 4100 4100 2200 1400 0800 1400 2200 4100 4100 0000 0000 0000 ENDCHAR STARTCHAR Y ENCODING 184 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 4100 2200 1400 0800 0800 0800 0800 0800 0800 0000 0000 0000 ENDCHAR STARTCHAR Z ENCODING 185 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 7f00 0100 0200 0400 0800 1000 2000 4000 7f00 0000 0000 0000 ENDCHAR STARTCHAR AE ENCODING 186 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0f00 1400 2400 4400 4700 7c00 4400 4400 4700 0000 0000 0000 ENDCHAR STARTCHAR Ooblique ENCODING 187 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 3e00 4100 4300 4500 4900 5100 6100 4100 3e00 0000 0000 0000 ENDCHAR STARTCHAR Aring ENCODING 188 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 1c00 1c00 0800 1400 2200 4100 4100 7f00 4100 4100 4100 0000 0000 0000 ENDCHAR STARTCHAR Ccedilla ENCODING 189 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0e00 1100 2000 4000 4000 4000 2000 1100 0e00 0400 3c00 0000 ENDCHAR STARTCHAR semicolon ENCODING 190 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0000 0000 0000 0c00 0c00 0000 0000 0c00 0c00 1800 3000 0000 ENDCHAR STARTCHAR asterisk ENCODING 191 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0800 4900 2a00 1400 2a00 4900 0800 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR c0 ENCODING 192 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR c1 ENCODING 193 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR c2 ENCODING 194 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR c3 ENCODING 195 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR c4 ENCODING 196 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR c5 ENCODING 197 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR c6 ENCODING 198 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR c7 ENCODING 199 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR c8 ENCODING 200 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR c9 ENCODING 201 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR ca ENCODING 202 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR cb ENCODING 203 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR cc ENCODING 204 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR cd ENCODING 205 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR ce ENCODING 206 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR cf ENCODING 207 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR copyright ENCODING 208 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 1c00 2200 4d00 5100 5100 4d00 2200 1c00 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR registered ENCODING 209 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 1c00 2200 5900 5500 5900 5500 2200 1c00 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR boxA ENCODING 210 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 2000 5000 8800 8800 f800 8800 8800 0000 ff80 8080 8080 ff80 0000 0000 ENDCHAR STARTCHAR insert ENCODING 211 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0000 0000 0800 1c00 3e00 7700 e380 c180 8080 0000 0000 0000 ENDCHAR STARTCHAR boxB ENCODING 212 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0f00 0480 0480 0700 0480 0480 0f00 0000 ff80 8080 8080 ff80 0000 0000 ENDCHAR STARTCHAR box6 ENCODING 213 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 ff80 8080 9080 a080 a080 ac80 b280 a280 9c80 8080 ff80 0000 ENDCHAR STARTCHAR plusminus ENCODING 214 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0800 0800 0800 7f00 0800 0800 0800 0000 7f00 0000 0000 0000 ENDCHAR STARTCHAR ETH ENCODING 215 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 7c00 2200 2100 2100 7900 2100 2100 2200 7c00 0000 0000 0000 ENDCHAR STARTCHAR rightarrow ENCODING 216 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0000 0000 0400 0600 ff00 0600 0400 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR THORN ENCODING 217 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 4000 4000 7c00 4200 4200 4200 7c00 4000 4000 0000 0000 0000 ENDCHAR STARTCHAR upshift ENCODING 218 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0800 1400 2200 4100 7700 1400 1400 1400 1400 1400 1c00 0000 0000 ENDCHAR STARTCHAR human ENCODING 219 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 1c00 1400 1c00 0800 7f00 0800 0800 1400 2200 4100 0000 0000 0000 ENDCHAR STARTCHAR underB ENCODING 220 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 3c00 1200 1200 1c00 1200 1200 3c00 0000 ff80 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR downshift ENCODING 221 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 1c00 1400 1400 1400 1400 1400 7700 4100 2200 1400 0800 0000 0000 ENDCHAR STARTCHAR boxquestion ENCODING 222 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP ff80 8080 9c80 a280 a280 8280 8480 8880 8880 8080 8880 8080 ff80 0000 ENDCHAR STARTCHAR boxsolid ENCODING 223 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP ff80 ff80 ff80 ff80 ff80 ff80 ff80 ff80 ff80 ff80 ff80 ff80 ff80 0000 ENDCHAR STARTCHAR e0 ENCODING 224 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR e1 ENCODING 225 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR e2 ENCODING 226 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR e3 ENCODING 227 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR e4 ENCODING 228 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR e5 ENCODING 229 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR e6 ENCODING 230 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR e7 ENCODING 231 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR e8 ENCODING 232 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR e9 ENCODING 233 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR ea ENCODING 234 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR eb ENCODING 235 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR ec ENCODING 236 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR ed ENCODING 237 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR ee ENCODING 238 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR ef ENCODING 239 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR badcommhi ENCODING 240 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 8000 c000 e000 7000 3800 ff80 0e00 0700 0380 0180 0080 0000 0000 ENDCHAR STARTCHAR commhi ENCODING 241 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0000 0000 0000 0000 ff80 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR commjag ENCODING 242 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0000 0000 0000 0000 fc00 0800 1000 2000 7f80 0000 0000 0000 ENDCHAR STARTCHAR commlo ENCODING 243 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ff80 0000 0000 0000 ENDCHAR STARTCHAR clockleft ENCODING 244 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0100 0800 0000 2000 0000 0080 4100 0100 0100 2100 0100 0800 0100 ENDCHAR STARTCHAR clockright ENCODING 245 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 2000 0000 2800 4000 8000 0400 0000 0000 0800 0000 2000 0000 0000 ENDCHAR STARTCHAR lock ENCODING 246 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 8080 c180 e380 f780 7f00 3e00 3e00 7f00 f780 e380 c180 8080 0000 0000 ENDCHAR STARTCHAR eth ENCODING 247 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 2800 1000 2800 0400 3e00 4200 4200 4200 4200 4200 3c00 0000 0000 0000 ENDCHAR STARTCHAR leftarrow ENCODING 248 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0000 0000 1000 3000 7f80 3000 1000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR thorn ENCODING 249 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 4000 4000 5c00 6200 4200 4200 4200 6200 5c00 4000 4000 0000 ENDCHAR STARTCHAR keyleft ENCODING 250 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0000 0e00 1100 1180 1100 0e00 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR keyright ENCODING 251 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0000 0000 0000 ff80 1d80 1d80 0180 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR box4 ENCODING 252 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 ff80 8080 8480 8c80 9480 a480 be80 8480 8480 8080 ff80 0000 ENDCHAR STARTCHAR underA ENCODING 253 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0800 1400 2200 2200 3e00 2200 2200 0000 ff80 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR magcard ENCODING 254 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0000 ff80 8080 8080 8080 ff80 8080 ff80 0000 0000 0000 0000 ENDCHAR STARTCHAR boxhuman ENCODING 255 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP ff80 8080 9c80 9480 9c80 8880 ff80 8880 8880 9480 a280 c180 ff80 0000 ENDCHAR STARTCHAR apl_Aunderbar ENCODING 257 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0800 1400 2200 4100 4100 7f00 4100 4100 4100 0000 7f00 0000 ENDCHAR STARTCHAR apl_upcarettilde ENCODING 263 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 3000 4900 0600 0000 0800 1400 2200 4100 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR apl_del ENCODING 266 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0000 7f00 4100 2200 2200 1400 1400 0800 0800 0000 0000 0000 ENDCHAR STARTCHAR apl_delta ENCODING 267 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0000 0800 0800 1400 1400 2200 2200 4100 7f00 0000 0000 0000 ENDCHAR STARTCHAR apl_braceright ENCODING 270 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 3000 0800 0800 0800 0800 0400 0800 0800 0800 0800 3000 0000 0000 ENDCHAR STARTCHAR apl_braceleft ENCODING 271 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0c00 1000 1000 1000 1000 2000 1000 1000 1000 1000 0c00 0000 0000 ENDCHAR STARTCHAR apl_space ENCODING 272 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR apl_equalunderbar ENCODING 277 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0000 0000 7f00 0000 7f00 0000 7f00 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR apl_epsilon ENCODING 284 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0000 0000 1e00 2000 4000 7c00 4000 2000 1e00 0000 0000 0000 ENDCHAR STARTCHAR apl_iota ENCODING 285 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0000 0000 2000 2000 2000 2000 2000 2400 1800 0000 0000 0000 ENDCHAR STARTCHAR apl_multiply ENCODING 286 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0000 0000 2200 1400 0800 1400 2200 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR apl_leftarrow ENCODING 287 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0000 0000 1000 3000 7f80 3000 1000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR apl_super0 ENCODING 288 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 1800 2400 2400 2400 1800 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR apl_super1 ENCODING 289 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0800 1800 0800 0800 1c00 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR apl_super2 ENCODING 290 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 3800 0400 1800 2000 3c00 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR apl_super3 ENCODING 291 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 3800 0400 1800 0400 3800 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR apl_super4 ENCODING 292 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0800 1800 2800 3c00 0800 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR apl_super5 ENCODING 293 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 3c00 2000 3800 0400 3800 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR apl_super6 ENCODING 294 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 1800 2000 3800 2400 1800 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR apl_super7 ENCODING 295 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 3c00 0400 0800 1000 1000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR apl_super8 ENCODING 296 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 1800 2400 1800 2400 1800 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR apl_super9 ENCODING 297 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 1800 2400 1c00 0400 1800 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR apl_Runderbar ENCODING 298 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 7e00 4100 4100 4100 7e00 4800 4400 4200 4100 0000 7f00 0000 ENDCHAR STARTCHAR apl_uptack ENCODING 311 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0000 0000 3e00 0800 0800 0800 0800 0800 0800 0000 0000 0000 ENDCHAR STARTCHAR apl_quad ENCODING 312 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 7f00 4100 4100 4100 4100 4100 4100 4100 4100 4100 7f00 0000 0000 0000 ENDCHAR STARTCHAR apl_rho ENCODING 313 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0000 0000 1c00 2200 4100 4100 4100 6200 5c00 4000 4000 4000 ENDCHAR STARTCHAR apl_alpha ENCODING 314 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0000 0000 1900 2500 4200 4200 4200 2500 1900 0000 0000 0000 ENDCHAR STARTCHAR apl_degree ENCODING 315 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0c00 1200 1200 0c00 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR apl_bracketright ENCODING 316 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 1c00 0400 0400 0400 0400 0400 0400 0400 0400 0400 1c00 0000 0000 ENDCHAR STARTCHAR apl_notequal ENCODING 318 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0000 0200 0400 7e00 0800 1000 7e00 2000 4000 0000 0000 0000 ENDCHAR STARTCHAR apl_circle ENCODING 319 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0000 1c00 2200 4100 4100 4100 2200 1c00 0000 0000 0000 0000 ENDCHAR STARTCHAR apl_Dunderbar ENCODING 320 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 7c00 2200 2100 2100 2100 2100 2100 2200 7c00 0000 7f00 0000 ENDCHAR STARTCHAR apl_Munderbar ENCODING 321 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 4100 6300 5500 4900 4900 4100 4100 4100 4100 0000 7f00 0000 ENDCHAR STARTCHAR apl_Qunderbar ENCODING 322 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 1c00 2200 4100 4100 4100 4100 4900 2a00 1c00 0200 7f00 0000 ENDCHAR STARTCHAR apl_circlestile ENCODING 323 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0800 0800 1c00 2a00 4900 4900 4900 2a00 1c00 0800 0800 0000 0000 ENDCHAR STARTCHAR apl_deltastile ENCODING 324 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0800 0800 0800 1c00 1c00 2a00 2a00 4900 7f00 0800 0800 0000 0000 0000 ENDCHAR STARTCHAR apl_Funderbar ENCODING 325 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 7f00 4000 4000 4000 7e00 4000 4000 4000 4000 0000 7f00 0000 ENDCHAR STARTCHAR apl_circleslope ENCODING 326 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0000 5c00 2200 5100 4900 4500 2200 1d00 0000 0000 0000 0000 ENDCHAR STARTCHAR apl_upshoejot ENCODING 327 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0000 0000 1c00 2200 3600 2a00 2200 2200 0000 0000 0000 0000 ENDCHAR STARTCHAR apl_bracketleft ENCODING 328 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 1c00 1000 1000 1000 1000 1000 1000 1000 1000 1000 1c00 0000 0000 ENDCHAR STARTCHAR apl_upstile ENCODING 329 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 1c00 1000 1000 1000 1000 1000 1000 1000 1000 0000 0000 0000 ENDCHAR STARTCHAR apl_Junderbar ENCODING 330 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0e00 0400 0400 0400 0400 0400 4400 4400 3800 0000 7e00 0000 ENDCHAR STARTCHAR apl_slope ENCODING 331 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0000 0000 2000 1000 0800 0400 0200 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR apl_divide ENCODING 332 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0000 1800 1800 0000 7e00 0000 1800 1800 0000 0000 0000 0000 ENDCHAR STARTCHAR apl_delstile ENCODING 334 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0800 0800 7f00 4900 2a00 2a00 1c00 1c00 0800 0800 0800 0000 0000 0000 ENDCHAR STARTCHAR apl_Hunderbar ENCODING 335 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 4100 4100 4100 4100 7f00 4100 4100 4100 4100 0000 7f00 0000 ENDCHAR STARTCHAR apl_Cunderbar ENCODING 336 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0e00 1100 2000 4000 4000 4000 2000 1100 0e00 0000 7f00 0000 ENDCHAR STARTCHAR apl_Lunderbar ENCODING 337 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 4000 4000 4000 4000 4000 4000 4000 4000 7f00 0000 7f00 0000 ENDCHAR STARTCHAR apl_Punderbar ENCODING 338 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 7c00 4200 4100 4100 4200 7c00 4000 4000 4000 0000 7f00 0000 ENDCHAR STARTCHAR apl_squad ENCODING 339 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 3c00 2400 2400 2400 2400 2400 2400 2400 2400 2400 3c00 0000 0000 0000 ENDCHAR STARTCHAR apl_overbar ENCODING 340 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 7f00 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR apl_Bunderbar ENCODING 341 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 7c00 2200 2100 2200 3c00 2200 2100 2200 7c00 0000 7f00 0000 ENDCHAR STARTCHAR apl_Kunderbar ENCODING 342 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 4100 4200 4400 4800 5000 6800 4400 4200 4100 0000 7f00 0000 ENDCHAR STARTCHAR apl_Ounderbar ENCODING 343 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 3e00 4100 4100 4100 4100 4100 4100 4100 3e00 0000 7f00 0000 ENDCHAR STARTCHAR apl_downcarettilde ENCODING 344 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 3000 4900 0600 0000 4100 2200 1400 0800 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR apl_quotedot ENCODING 345 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 1800 1800 0800 0800 0800 0000 0000 0000 1800 1800 0000 0000 0000 ENDCHAR STARTCHAR apl_Eunderbar ENCODING 346 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 7f00 4000 4000 4000 7c00 4000 4000 4000 7f00 0000 7f00 0000 ENDCHAR STARTCHAR apl_stile ENCODING 347 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0800 0800 0800 0800 0800 0800 0800 0800 0800 0800 0800 0800 0800 0800 ENDCHAR STARTCHAR apl_Nunderbar ENCODING 348 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 4100 6100 5100 4900 4500 4300 4100 4100 4100 0000 7f00 0000 ENDCHAR STARTCHAR apl_quadslope ENCODING 349 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 7f00 4100 4100 6100 5100 4900 4500 4300 4100 4100 7f00 0000 0000 0000 ENDCHAR STARTCHAR apl_quadquote ENCODING 350 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 7f00 5900 4900 4900 4900 4100 4100 4100 4100 4100 7f00 0000 0000 0000 ENDCHAR STARTCHAR apl_Iunderbar ENCODING 351 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 1c00 0800 0800 0800 0800 0800 0800 0800 1c00 0000 1c00 0000 ENDCHAR STARTCHAR apl_Uunderbar ENCODING 352 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 4100 4100 4100 4100 4100 4100 4100 4100 3e00 0000 7f00 0000 ENDCHAR STARTCHAR apl_iotaunderbar ENCODING 353 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0000 0000 2000 2000 2000 2000 2000 2400 1800 0000 3c00 0000 ENDCHAR STARTCHAR apl_downcaret ENCODING 354 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 2200 1400 0800 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR apl_circlebar ENCODING 355 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0000 1c00 2200 4100 7f00 4100 2200 1c00 0000 0000 0000 0000 ENDCHAR STARTCHAR apl_circlestar ENCODING 356 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0000 1c00 2a00 5d00 4900 5500 2200 1c00 0000 0000 0000 0000 ENDCHAR STARTCHAR apl_Wunderbar ENCODING 357 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 4100 4100 4100 4100 4900 4900 4900 5500 2200 0000 7f00 0000 ENDCHAR STARTCHAR apl_uptackjot ENCODING 358 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0000 3e00 0800 1c00 2a00 2a00 1c00 0800 0800 0000 0000 0000 ENDCHAR STARTCHAR apl_downtackup ENCODING 359 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0000 0000 3e00 0800 0800 0800 0800 0800 3e00 0000 0000 0000 ENDCHAR STARTCHAR apl_slashbar ENCODING 360 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0000 0000 0200 0400 7f00 1000 2000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR apl_rightshoe ENCODING 362 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0000 0000 3c00 0200 0200 0200 3c00 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR apl_leftshoe ENCODING 363 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0000 0000 1e00 2000 2000 2000 1e00 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR apl_uparrow ENCODING 364 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0000 0800 1c00 3e00 0800 0800 0800 0800 0800 0000 0000 0000 ENDCHAR STARTCHAR apl_downarrow ENCODING 365 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0000 0800 0800 0800 0800 0800 3e00 1c00 0800 0000 0000 0000 ENDCHAR STARTCHAR apl_upshoe ENCODING 366 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0000 0000 1c00 2200 2200 2200 2200 2200 0000 0000 0000 0000 ENDCHAR STARTCHAR apl_downshoe ENCODING 367 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0000 0000 0000 2200 2200 2200 2200 2200 1c00 0000 0000 0000 ENDCHAR STARTCHAR apl_Tunderbar ENCODING 368 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 7f00 0800 0800 0800 0800 0800 0800 0800 0800 0000 7f00 0000 ENDCHAR STARTCHAR apl_quadjot ENCODING 369 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 7f00 4100 4100 5d00 6300 6300 6300 5d00 4100 4100 7f00 0000 0000 0000 ENDCHAR STARTCHAR apl_righttack ENCODING 370 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0000 0200 0200 0200 3e00 0200 0200 0200 0000 0000 0000 0000 ENDCHAR STARTCHAR apl_diaeresisdot ENCODING 371 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 6300 6300 0000 0000 0000 0000 0000 1800 1800 0000 0000 0000 0000 ENDCHAR STARTCHAR apl_deltaunderbar ENCODING 372 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0800 0800 1400 1400 2200 2200 4100 7f00 0000 7f00 0000 0000 0000 ENDCHAR STARTCHAR apl_Sunderbar ENCODING 373 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 3e00 4100 4000 3000 0800 0600 0100 4100 3e00 0000 7f00 0000 ENDCHAR STARTCHAR apl_diaeresis ENCODING 374 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 6300 6300 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR apl_lefttack ENCODING 375 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0000 2000 2000 2000 3e00 2000 2000 2000 0000 0000 0000 0000 ENDCHAR STARTCHAR apl_slopebar ENCODING 376 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0000 0000 2000 1000 7f00 0400 0200 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR apl_deltilde ENCODING 377 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 7f00 4100 2200 3200 5d00 1600 0800 0800 0000 0000 0000 0000 ENDCHAR STARTCHAR apl_Vunderbar ENCODING 378 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 4100 4100 2200 2200 2200 1400 1400 0800 0800 0000 7f00 0000 ENDCHAR STARTCHAR apl_upcaret ENCODING 379 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0800 1400 2200 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR apl_epsilonunderbar ENCODING 380 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0000 0000 1e00 2000 4000 7c00 4000 2000 1e00 0000 7e00 0000 ENDCHAR STARTCHAR apl_quaddivide ENCODING 381 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 7f00 4100 4900 4900 4100 7f00 4100 4900 4900 4100 7f00 0000 0000 0000 ENDCHAR STARTCHAR apl_downtackjot ENCODING 382 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0000 0800 0800 1c00 2a00 2a00 1c00 0800 3e00 0000 0000 0000 ENDCHAR STARTCHAR apl_Zunderbar ENCODING 383 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 7f00 0100 0200 0400 0800 1000 2000 4000 7f00 0000 7f00 0000 ENDCHAR STARTCHAR apl_2vertical ENCODING 384 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 4100 4100 4100 4100 4100 4100 4100 4100 4100 4100 4100 4100 4100 4100 ENDCHAR STARTCHAR apl_2horizontal ENCODING 385 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 ff80 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ff80 0000 ENDCHAR STARTCHAR apl_leftvbar ENCODING 386 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 4000 4000 4000 4000 4000 4000 4000 4000 4000 4000 4000 4000 4000 4000 ENDCHAR STARTCHAR apl_rightvbar ENCODING 387 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0100 0100 0100 0100 0100 0100 0100 0100 0100 0100 0100 0100 0100 0100 ENDCHAR STARTCHAR apl_midvbar ENCODING 388 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0800 0800 0800 0800 0800 0800 0800 0800 0800 0800 0800 0800 0800 0800 ENDCHAR STARTCHAR apl_leftsolid ENCODING 393 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP f800 f800 f800 f800 f800 f800 f800 f800 f800 f800 f800 f800 f800 f800 ENDCHAR STARTCHAR apl_rightsolid ENCODING 394 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0f80 0f80 0f80 0f80 0f80 0f80 0f80 0f80 0f80 0f80 0f80 0f80 0f80 0f80 ENDCHAR STARTCHAR apl_topsolid ENCODING 395 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP ff80 ff80 ff80 ff80 ff80 ff80 ff80 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR apl_bottomsolid ENCODING 396 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0000 0000 0000 0000 ff80 ff80 ff80 ff80 ff80 ff80 ff80 ff80 ENDCHAR STARTCHAR apl_solid ENCODING 397 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP ff80 ff80 ff80 ff80 ff80 ff80 ff80 ff80 ff80 ff80 ff80 ff80 ff80 ff80 ENDCHAR STARTCHAR apl_midhbar ENCODING 402 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0000 0000 0000 0000 ff80 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR apl_solidcircle ENCODING 403 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0000 0000 0000 1c00 1c00 1c00 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR apl_subn ENCODING 404 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0000 0000 0000 0000 0000 3800 2400 2400 2400 0000 0000 0000 ENDCHAR STARTCHAR apl_splat ENCODING 410 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 4100 3e00 2200 2200 2200 2200 2200 2200 3e00 4100 0000 0000 0000 ENDCHAR STARTCHAR apl_diamond ENCODING 411 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0800 1400 2200 4100 2200 1400 0800 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR apl_Gunderbar ENCODING 412 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 1c00 2200 4000 4000 4000 4f00 4200 2200 1e00 0000 7f00 0000 ENDCHAR STARTCHAR apl_sub1 ENCODING 413 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0000 0000 0000 0000 0000 0800 1800 0800 0800 1c00 0000 0000 ENDCHAR STARTCHAR apl_superlparen ENCODING 416 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0800 1000 1000 1000 1000 0800 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR apl_plus2 ENCODING 417 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0000 0000 0800 0800 3e00 0800 0800 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR apl_solidbox ENCODING 418 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0000 0000 3e00 3e00 3e00 3e00 3e00 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR apl_lowerleft ENCODING 419 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0800 0800 0800 0800 0800 0800 0f80 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR apl_upperleft ENCODING 420 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0000 0000 0000 0000 0f80 0800 0800 0800 0800 0800 0800 0800 ENDCHAR STARTCHAR apl_leftjoin ENCODING 421 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0800 0800 0800 0800 0800 0800 0f80 0800 0800 0800 0800 0800 0800 0800 ENDCHAR STARTCHAR apl_bottomjoin ENCODING 422 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0800 0800 0800 0800 0800 0800 ff80 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR apl_section ENCODING 423 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 1c00 2000 2000 5000 4800 4400 2200 1200 0a00 0400 0400 3800 0000 ENDCHAR STARTCHAR apl_superrparen ENCODING 425 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0800 0400 0400 0400 0400 0800 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR apl_minus2 ENCODING 426 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0000 0000 0000 0000 3e00 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR apl_intersect ENCODING 427 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0800 0800 0800 0800 0800 0800 ff80 0800 0800 0800 0800 0800 0800 0800 ENDCHAR STARTCHAR apl_lowerright ENCODING 428 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0800 0800 0800 0800 0800 0800 f800 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR apl_upperright ENCODING 429 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0000 0000 0000 0000 f800 0800 0800 0800 0800 0800 0800 0800 ENDCHAR STARTCHAR apl_rightjoin ENCODING 430 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0800 0800 0800 0800 0800 0800 f800 0800 0800 0800 0800 0800 0800 0800 ENDCHAR STARTCHAR apl_topjoin ENCODING 431 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0000 0000 0000 0000 ff80 0800 0800 0800 0800 0800 0800 0800 ENDCHAR STARTCHAR apl_paragraph ENCODING 432 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0000 3f00 7a00 7a00 3a00 0a00 0a00 0a00 0a00 0000 0000 0000 ENDCHAR STARTCHAR apl_sub2 ENCODING 434 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0000 0000 0000 0000 0000 3800 0400 1800 2000 3c00 0000 0000 ENDCHAR STARTCHAR apl_sub3 ENCODING 435 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0000 0000 0000 0000 0000 3800 0400 1800 0400 3800 0000 0000 ENDCHAR STARTCHAR apl_dieresisjot ENCODING 436 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 6300 6300 0000 1800 2400 2400 1800 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR apl_dieresiscircle ENCODING 437 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 6300 6300 0000 1c00 2200 4100 4100 4100 2200 1c00 0000 0000 0000 ENDCHAR STARTCHAR apl_commabar ENCODING 438 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0000 0000 0000 0000 3e00 0000 0000 0c00 0c00 1800 3000 0000 ENDCHAR STARTCHAR apl_euro ENCODING 439 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 1e00 2100 2000 de00 2000 dc00 2000 2100 1e00 0000 0000 0000 ENDCHAR STARTCHAR apl_plusminus ENCODING 442 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0800 0800 0800 7f00 0800 0800 0800 0000 7f00 0000 0000 0000 ENDCHAR STARTCHAR apl_tilde ENCODING 443 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 3000 4900 0600 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR apl_Xunderbar ENCODING 444 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 4100 4100 2200 1400 0800 1400 2200 4100 4100 0000 7f00 0000 ENDCHAR STARTCHAR apl_Yunderbar ENCODING 445 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 4100 2200 1400 0800 0800 0800 0800 0800 0800 0000 7f00 0000 ENDCHAR STARTCHAR apl_omega ENCODING 464 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0000 0000 0000 0000 2200 4100 4900 4900 3600 0000 0000 0000 ENDCHAR STARTCHAR apl_jot ENCODING 465 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0000 0000 0000 1800 2400 2400 1800 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR apl_rightarrow ENCODING 470 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0000 0000 0400 0600 ff00 0600 0400 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR apl_downtack ENCODING 471 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0000 0000 0800 0800 0800 0800 0800 0800 3e00 0000 0000 0000 ENDCHAR STARTCHAR apl_notless ENCODING 473 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0000 6000 1800 0600 1800 6000 0000 7e00 0000 0000 0000 0000 ENDCHAR STARTCHAR apl_notgreater ENCODING 503 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0000 0600 1800 6000 1800 0600 0000 7e00 0000 0000 0000 0000 ENDCHAR STARTCHAR apl_downstile ENCODING 505 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 1000 1000 1000 1000 1000 1000 1000 1000 1c00 0000 0000 0000 ENDCHAR STARTCHAR 200 ENCODING 512 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 3e00 3e00 3e00 3e00 3e00 3e00 3e00 3e00 3e00 3e00 3e00 3e00 3e00 3e00 ENDCHAR STARTCHAR 201 ENCODING 513 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0000 0000 0800 1c00 3e00 1c00 0800 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR 202 ENCODING 514 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP aa80 5500 aa80 5500 aa80 5500 aa80 5500 aa80 5500 aa80 5500 aa80 5500 ENDCHAR STARTCHAR 203 ENCODING 515 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 5000 5000 7000 5000 5000 0000 0700 0200 0200 0200 0200 0000 0000 ENDCHAR STARTCHAR 204 ENCODING 516 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 7000 4000 6000 4000 4000 0000 0700 0400 0600 0400 0400 0000 0000 ENDCHAR STARTCHAR 205 ENCODING 517 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 3000 4000 4000 4000 3000 0000 0600 0500 0600 0500 0500 0000 0000 ENDCHAR STARTCHAR 206 ENCODING 518 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 4000 4000 4000 4000 7000 0000 0700 0400 0600 0400 0400 0000 0000 ENDCHAR STARTCHAR 207 ENCODING 519 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 1800 2400 2400 1800 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR 208 ENCODING 520 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0000 0800 0800 3e00 0800 0800 0000 3e00 0000 0000 0000 0000 ENDCHAR STARTCHAR 209 ENCODING 521 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 4800 6800 5800 4800 4800 0000 0400 0400 0400 0400 0700 0000 0000 ENDCHAR STARTCHAR 20a ENCODING 522 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 5000 5000 5000 2000 2000 0000 0700 0200 0200 0200 0200 0000 0000 ENDCHAR STARTCHAR 20b ENCODING 523 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0800 0800 0800 0800 0800 f800 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR 20c ENCODING 524 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0000 0000 0000 f800 0800 0800 0800 0800 0800 0800 0800 0800 ENDCHAR STARTCHAR 20d ENCODING 525 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0000 0000 0000 0f80 0800 0800 0800 0800 0800 0800 0800 0800 ENDCHAR STARTCHAR 20e ENCODING 526 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0800 0800 0800 0800 0800 0f80 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR 20f ENCODING 527 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0800 0800 0800 0800 0800 ff80 0800 0800 0800 0800 0800 0800 0800 0800 ENDCHAR STARTCHAR 210 ENCODING 528 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 ff80 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR 211 ENCODING 529 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0000 ff80 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR 212 ENCODING 530 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0000 0000 0000 ff80 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR 213 ENCODING 531 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0000 0000 0000 0000 0000 ff80 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR 214 ENCODING 532 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 ff80 0000 0000 0000 0000 ENDCHAR STARTCHAR 215 ENCODING 533 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0800 0800 0800 0800 0800 0f80 0800 0800 0800 0800 0800 0800 0800 0800 ENDCHAR STARTCHAR 216 ENCODING 534 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0800 0800 0800 0800 0800 f800 0800 0800 0800 0800 0800 0800 0800 0800 ENDCHAR STARTCHAR 217 ENCODING 535 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0800 0800 0800 0800 0800 ff80 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR 218 ENCODING 536 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0000 0000 0000 ff80 0800 0800 0800 0800 0800 0800 0800 0800 ENDCHAR STARTCHAR 219 ENCODING 537 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0800 0800 0800 0800 0800 0800 0800 0800 0800 0800 0800 0800 0800 0800 ENDCHAR STARTCHAR 21a ENCODING 538 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0000 0600 1800 6000 1800 0600 0000 7e00 0000 0000 0000 0000 ENDCHAR STARTCHAR 21b ENCODING 539 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0000 6000 1800 0600 1800 6000 0000 7e00 0000 0000 0000 0000 ENDCHAR STARTCHAR 21c ENCODING 540 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0000 0000 3f00 1200 1200 1200 1200 1200 2200 0000 0000 0000 ENDCHAR STARTCHAR 21d ENCODING 541 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0000 0200 0400 7e00 0800 1000 7e00 2000 4000 0000 0000 0000 ENDCHAR STARTCHAR 21e ENCODING 542 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 1800 2400 2000 2000 7800 2000 2000 7100 6e00 0000 0000 0000 ENDCHAR STARTCHAR 21f ENCODING 543 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0000 0000 0000 0000 1800 1800 0000 0000 0000 0000 0000 0000 ENDCHAR ENDFONT suite3270-4.1/x3270/3270b.bdf000066400000000000000000002055541413735575200150470ustar00rootroot00000000000000STARTFONT 2.1 COMMENT "14-point bold 3270 font" COMMENT "Uses nonstandard ordering:" COMMENT " Page 0: EBCDIC US-International set, CG order" COMMENT " Page 1: EBCDIC APL/APL2 set, CG order" COMMENT " Page 2: (first 16 characters only) DEC line-drawing characters from" COMMENT " fixed-width X fonts" COMMENT "" COMMENT "Copyright (c) 1993-2009, Paul Mattes." COMMENT "Copyright (c) 1990, Jeff Sparkes." COMMENT "Copyright (c) 1989, Georgia Tech Research Corporation (GTRC)," COMMENT " Atlanta, GA 30332." COMMENT "All rights reserved." COMMENT "" COMMENT "Redistribution and use in source and binary forms, with or" COMMENT "without modification, are permitted provided that the following" COMMENT "conditions are met:" COMMENT " * Redistributions of source code must retain the above" COMMENT " copyright notice, this list of conditions and the following" COMMENT " disclaimer." COMMENT " * Redistributions in binary form must reproduce the above" COMMENT " copyright notice, this list of conditions and the following" COMMENT " disclaimer in the documentation and/or other materials" COMMENT " provided with the distribution." COMMENT " * Neither the names of Paul Mattes, Jeff Sparkes, GTRC" COMMENT " nor their contributors may be used to endorse or promote" COMMENT " products derived from this software without specific prior" COMMENT " written permission." COMMENT "" COMMENT "THIS SOFTWARE IS PROVIDED BY PAUL MATTES, JEFF SPARKES AND GTRC" COMMENT "'AS IS' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT" COMMENT "NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND" COMMENT "FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT" COMMENT "SHALL PAUL MATTES, JEFF SPARKES OR GTRC BE LIABLE FOR ANY DIRECT," COMMENT "INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL" COMMENT "DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE" COMMENT "GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS" COMMENT "INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY," COMMENT "WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING" COMMENT "NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF" COMMENT "THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." FONT 3270bold SIZE 14 72 72 FONTBOUNDINGBOX 9 14 0 -3 STARTPROPERTIES 17 FONTNAME_REGISTRY "" FOUNDRY "Misc" FAMILY_NAME "3270" WEIGHT_NAME "Bold" SLANT "R" SETWIDTH_NAME "Normal" PIXEL_SIZE 14 POINT_SIZE 140 RESOLUTION_X 72 RESOLUTION_Y 72 SPACING "C" CHARSET_REGISTRY "3270cg" CHARSET_ENCODING "1a" AVERAGE_WIDTH 90 DEFAULT_CHAR 514 FONT_ASCENT 11 FONT_DESCENT 3 ENDPROPERTIES CHARS 427 STARTCHAR null ENCODING 0 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR nobreakspace ENCODING 1 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR euro ENCODING 2 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 1F00 3980 3000 7E00 3000 7C00 3000 3980 1F00 0000 0000 0000 ENDCHAR STARTCHAR cr ENCODING 3 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR nl ENCODING 4 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR em ENCODING 5 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR eightones ENCODING 6 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0000 1c00 3e00 7f00 7f00 7f00 3e00 1c00 0000 0000 0000 0000 ENDCHAR STARTCHAR hyphen ENCODING 7 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0000 0000 0000 0000 3f00 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR greater ENCODING 8 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 3000 1800 0c00 0600 0300 0600 0c00 1800 3000 0000 0000 0000 ENDCHAR STARTCHAR less ENCODING 9 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0300 0600 0c00 1800 3000 1800 0c00 0600 0300 0000 0000 0000 ENDCHAR STARTCHAR bracketleft ENCODING 10 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 1e00 1800 1800 1800 1800 1800 1800 1800 1800 1800 1e00 0000 0000 ENDCHAR STARTCHAR bracketright ENCODING 11 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 1e00 0600 0600 0600 0600 0600 0600 0600 0600 0600 1e00 0000 0000 ENDCHAR STARTCHAR parenright ENCODING 12 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 1800 0c00 0600 0600 0600 0600 0600 0c00 1800 0000 0000 0000 ENDCHAR STARTCHAR parenleft ENCODING 13 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0600 0c00 1800 1800 1800 1800 1800 0c00 0600 0000 0000 0000 ENDCHAR STARTCHAR braceright ENCODING 14 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 3800 0c00 0c00 0c00 0c00 0600 0c00 0c00 0c00 0c00 3800 0000 0000 ENDCHAR STARTCHAR braceleft ENCODING 15 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0e00 1800 1800 1800 1800 3000 1800 1800 1800 1800 0e00 0000 0000 ENDCHAR STARTCHAR space ENCODING 16 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR equal ENCODING 17 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0000 0000 7f80 0000 0000 7f80 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR apostrophe ENCODING 18 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0c00 0c00 0c00 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR quotedbl ENCODING 19 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 3600 3600 3600 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR slash ENCODING 20 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0000 0180 0300 0600 0c00 1800 3000 6000 0000 0000 0000 0000 ENDCHAR STARTCHAR backslash ENCODING 21 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0000 6000 3000 1800 0c00 0600 0300 0180 0000 0000 0000 0000 ENDCHAR STARTCHAR bar ENCODING 22 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0000 ENDCHAR STARTCHAR brokenbar ENCODING 23 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0c00 0c00 0c00 0c00 0c00 0000 0000 0c00 0c00 0c00 0c00 0c00 0000 ENDCHAR STARTCHAR question ENCODING 24 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 1f00 3180 3180 0300 0600 0c00 0c00 0000 0000 0c00 0000 0000 0000 ENDCHAR STARTCHAR exclam ENCODING 25 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0000 0000 0c00 0000 0000 0000 ENDCHAR STARTCHAR dollar ENCODING 26 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0c00 0c00 3f80 6c00 6c00 3f00 0d80 0d80 7f00 0c00 0c00 0000 0000 ENDCHAR STARTCHAR cent ENCODING 27 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0c00 0c00 3f00 6c00 6c00 6c00 3f00 0c00 0c00 0000 0000 0000 0000 ENDCHAR STARTCHAR sterling ENCODING 28 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0e00 1b00 1800 1800 7e00 1800 1800 1800 7980 7f00 0000 0000 0000 ENDCHAR STARTCHAR yen ENCODING 29 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 6180 3300 1e00 0c00 7f80 0c00 0c00 7f80 0c00 0c00 0000 0000 0000 ENDCHAR STARTCHAR paragraph ENCODING 30 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 7c00 6600 6600 6600 7c00 6000 6600 6f00 6600 6600 0600 0000 0000 ENDCHAR STARTCHAR currency ENCODING 31 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 6180 3300 1e00 3300 3300 3300 1e00 3300 6180 0000 0000 0000 ENDCHAR STARTCHAR 0 ENCODING 32 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 1e00 3300 6180 6180 6d80 6d80 6180 6180 3300 1e00 0000 0000 0000 ENDCHAR STARTCHAR 1 ENCODING 33 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0c00 1c00 3c00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0000 0000 0000 ENDCHAR STARTCHAR 2 ENCODING 34 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 1f00 3180 6180 0180 0300 0600 0c00 1800 3000 7f80 0000 0000 0000 ENDCHAR STARTCHAR 3 ENCODING 35 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 3f80 0180 0300 0600 0e00 0300 0180 0180 6300 3e00 0000 0000 0000 ENDCHAR STARTCHAR 4 ENCODING 36 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0700 0f00 1b00 3300 6300 6300 7f80 0300 0300 0300 0000 0000 0000 ENDCHAR STARTCHAR 5 ENCODING 37 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 7f80 6000 6000 7e00 0300 0180 0180 0180 0300 7e00 0000 0000 0000 ENDCHAR STARTCHAR 6 ENCODING 38 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 1800 3000 6000 6000 7e00 7300 6180 6180 3300 1e00 0000 0000 0000 ENDCHAR STARTCHAR 7 ENCODING 39 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 7f80 0180 0300 0600 0c00 1800 1800 1800 1800 1800 0000 0000 0000 ENDCHAR STARTCHAR 8 ENCODING 40 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 1e00 3300 3300 3300 1e00 3300 6180 6180 3300 1e00 0000 0000 0000 ENDCHAR STARTCHAR 9 ENCODING 41 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 1f00 3180 6180 6380 6780 3d80 0180 0180 0180 0300 0000 0000 0000 ENDCHAR STARTCHAR ssharp ENCODING 42 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 1c00 3600 6600 6c00 6600 6300 6180 6180 7980 6f00 0000 0000 0000 ENDCHAR STARTCHAR section ENCODING 43 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 1e00 3000 3000 7800 6c00 6600 3300 1b00 0f00 0600 0600 3c00 0000 ENDCHAR STARTCHAR numbersign ENCODING 44 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 3600 7f00 3600 3600 7f00 3600 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR at ENCODING 45 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 3f00 6180 6180 6f80 7f80 7f00 6000 6000 6000 3f80 0000 0000 0000 ENDCHAR STARTCHAR percent ENCODING 46 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 3000 7800 3180 0300 0600 0c00 1800 3000 6300 0780 0300 0000 0000 ENDCHAR STARTCHAR underscore ENCODING 47 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 7f80 0000 0000 ENDCHAR STARTCHAR ampersand ENCODING 48 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 3800 6c00 6c00 6c00 3800 7980 6f00 6600 3f00 0180 0000 0000 ENDCHAR STARTCHAR minus ENCODING 49 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0000 0000 0000 0000 3f00 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR period ENCODING 50 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 1c00 1c00 0000 0000 0000 ENDCHAR STARTCHAR comma ENCODING 51 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0e00 0e00 1c00 3800 0000 ENDCHAR STARTCHAR colon ENCODING 52 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0000 0000 0000 1c00 1c00 0000 0000 1c00 1c00 0000 0000 0000 ENDCHAR STARTCHAR plus ENCODING 53 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0000 0c00 0c00 0c00 7f80 0c00 0c00 0c00 0000 0000 0000 0000 ENDCHAR STARTCHAR notsign ENCODING 54 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 7f80 0180 0180 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR macron ENCODING 55 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 7f80 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR degree ENCODING 56 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 1c00 3600 3600 1c00 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR periodcentered ENCODING 57 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0000 0000 0000 0000 0e00 0e00 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR asciicircum ENCODING 58 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0c00 1e00 3300 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR asciitilde ENCODING 59 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 3800 6d80 0700 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR diaeresis ENCODING 60 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 7380 7380 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR grave ENCODING 61 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 1800 0c00 0600 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR acute ENCODING 62 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0600 0c00 1800 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR cedilla ENCODING 63 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0c00 0c00 0c00 3800 0000 ENDCHAR STARTCHAR agrave ENCODING 64 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 3000 1800 0c00 0000 3e00 0300 0300 3f00 6300 6300 3f80 0000 0000 0000 ENDCHAR STARTCHAR egrave ENCODING 65 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 3000 1800 0c00 0000 3e00 6300 6300 7f00 6000 6000 3f00 0000 0000 0000 ENDCHAR STARTCHAR igrave ENCODING 66 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 1800 0c00 0600 0000 0000 0c00 0c00 0c00 0c00 0c00 0c00 0000 0000 0000 ENDCHAR STARTCHAR ograve ENCODING 67 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 3000 1800 0c00 0000 3e00 6300 6300 6300 6300 6300 3e00 0000 0000 0000 ENDCHAR STARTCHAR ugrave ENCODING 68 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 3000 1800 0c00 0000 6300 6300 6300 6300 6300 6300 3f80 0000 0000 0000 ENDCHAR STARTCHAR atilde ENCODING 69 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 1d80 3700 0000 3e00 0300 0300 3f00 6300 6300 3f80 0000 0000 0000 ENDCHAR STARTCHAR otilde ENCODING 70 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 3b00 6e00 0000 3e00 6300 6300 6300 6300 6300 3e00 0000 0000 0000 ENDCHAR STARTCHAR ydiaeresis ENCODING 71 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 3600 0000 0000 6300 6300 6300 6300 3300 1e00 0c00 1800 3000 6000 ENDCHAR STARTCHAR Yacute ENCODING 72 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0300 0600 6d80 3300 1e00 0c00 0c00 0c00 0c00 0c00 0c00 0000 0000 0000 ENDCHAR STARTCHAR yacute ENCODING 73 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0600 0c00 1800 0000 6300 6300 6300 6300 3300 1e00 0c00 1800 3000 6000 ENDCHAR STARTCHAR eacute ENCODING 74 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0300 0600 0c00 0000 3e00 6300 6300 7f00 6000 6000 3f00 0000 0000 0000 ENDCHAR STARTCHAR onequarter ENCODING 75 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 3000 7000 3000 3000 7b00 0700 0f00 0f80 0300 0000 0000 0000 ENDCHAR STARTCHAR onehalf ENCODING 76 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 3000 7000 3000 3000 7f00 0180 0300 0600 0780 0000 0000 0000 ENDCHAR STARTCHAR threequarters ENCODING 77 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 3800 6c00 1800 6c00 3b00 0700 0f00 0f80 0300 0000 0000 0000 ENDCHAR STARTCHAR udiaeresis ENCODING 78 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 3600 0000 0000 6300 6300 6300 6300 6300 6300 3f80 0000 0000 0000 ENDCHAR STARTCHAR ccedilla ENCODING 79 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0000 0000 1f00 3000 6000 6000 6000 3000 1f00 0c00 3c00 0000 ENDCHAR STARTCHAR adiaeresis ENCODING 80 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 3600 0000 0000 3e00 0300 0300 3f00 6300 6300 3f80 0000 0000 0000 ENDCHAR STARTCHAR ediaeresis ENCODING 81 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 3600 0000 0000 3e00 6300 6300 7f00 6000 6000 3f00 0000 0000 0000 ENDCHAR STARTCHAR idiaeresis ENCODING 82 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 3300 0000 0000 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0000 0000 0000 ENDCHAR STARTCHAR odiaeresis ENCODING 83 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 3600 0000 0000 3e00 6300 6300 6300 6300 6300 3e00 0000 0000 0000 ENDCHAR STARTCHAR mu ENCODING 84 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0000 0000 0000 6300 6300 6300 6300 6300 6300 7f80 6000 6000 ENDCHAR STARTCHAR acircumflex ENCODING 85 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0c00 1e00 0000 3e00 0300 0300 3f00 6300 6300 3f80 0000 0000 0000 ENDCHAR STARTCHAR ecircumflex ENCODING 86 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0c00 1e00 0000 3e00 6300 6300 7f00 6000 6000 3f00 0000 0000 0000 ENDCHAR STARTCHAR icircumflex ENCODING 87 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0c00 1e00 0000 0000 0c00 0c00 0c00 0c00 0c00 0c00 0000 0000 0000 ENDCHAR STARTCHAR ocircumflex ENCODING 88 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0c00 1e00 0000 1e00 3300 3300 3300 3300 3300 1e00 0000 0000 0000 ENDCHAR STARTCHAR ucircumflex ENCODING 89 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 1800 3c00 0000 6600 6600 6600 6600 6600 6600 3f00 0000 0000 0000 ENDCHAR STARTCHAR aacute ENCODING 90 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0300 0600 0c00 0000 3e00 0300 0300 3f00 6300 6300 3f80 0000 0000 0000 ENDCHAR STARTCHAR multiply ENCODING 91 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0000 0000 3300 1e00 0c00 1e00 3300 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR iacute ENCODING 92 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0600 0c00 1800 0000 0000 0c00 0c00 0c00 0c00 0c00 0c00 0000 0000 0000 ENDCHAR STARTCHAR oacute ENCODING 93 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0600 0c00 1800 0000 3e00 6300 6300 6300 6300 6300 3e00 0000 0000 0000 ENDCHAR STARTCHAR uacute ENCODING 94 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0600 0c00 1800 0000 6300 6300 6300 6300 6300 6300 3f80 0000 0000 0000 ENDCHAR STARTCHAR ntilde ENCODING 95 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 1d80 3700 0000 7f00 3180 3180 3180 3180 3180 3180 0000 0000 0000 ENDCHAR STARTCHAR Agrave ENCODING 96 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0c00 0600 0300 0c00 1e00 3300 6180 7f80 6180 6180 6180 0000 0000 0000 ENDCHAR STARTCHAR Egrave ENCODING 97 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 3000 1800 0c00 7f80 6000 6000 7e00 6000 6000 6000 7f80 0000 0000 0000 ENDCHAR STARTCHAR Igrave ENCODING 98 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 1800 0c00 0600 0000 1e00 0c00 0c00 0c00 0c00 0c00 1e00 0000 0000 0000 ENDCHAR STARTCHAR Ograve ENCODING 99 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 3000 1800 0c00 3f00 6180 6180 6180 6180 6180 6180 3f00 0000 0000 0000 ENDCHAR STARTCHAR Ugrave ENCODING 100 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 3000 1800 0c00 6180 6180 6180 6180 6180 6180 6180 3f00 0000 0000 0000 ENDCHAR STARTCHAR Atilde ENCODING 101 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 1d80 3700 0000 0c00 1e00 3300 6180 7f80 6180 6180 0000 0000 0000 ENDCHAR STARTCHAR Otilde ENCODING 102 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 1d80 3700 3f00 6180 6180 6180 6180 6180 6180 6180 3f00 0000 0000 0000 ENDCHAR STARTCHAR onesuperior ENCODING 103 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0c00 1c00 0c00 0c00 1e00 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR twosuperior ENCODING 104 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 1c00 3600 0c00 1800 3e00 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR threesuperior ENCODING 105 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 1c00 3600 0c00 3600 1c00 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR ordfeminine ENCODING 106 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 1e00 0300 1f00 3300 1f00 0000 3f00 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR masculine ENCODING 107 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 1e00 3300 3300 3300 1e00 0000 3f00 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR guillemotleft ENCODING 108 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0000 1980 3300 6600 3300 1980 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR guillemotright ENCODING 109 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0000 6600 3300 1980 3300 6600 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR exclamdown ENCODING 110 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0c00 0000 0000 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0000 0000 0000 ENDCHAR STARTCHAR questiondown ENCODING 111 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0600 0000 0000 0600 0600 0c00 1800 3180 3180 1f00 0000 0000 0000 ENDCHAR STARTCHAR Adiaeresis ENCODING 112 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 3300 0000 0c00 1e00 3300 6180 6180 7f80 6180 6180 6180 0000 0000 0000 ENDCHAR STARTCHAR Ediaeresis ENCODING 113 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 3300 0000 7f80 6000 6000 6000 7e00 6000 6000 6000 7f80 0000 0000 0000 ENDCHAR STARTCHAR Idiaeresis ENCODING 114 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 3300 0000 1e00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 1e00 0000 0000 0000 ENDCHAR STARTCHAR Odiaeresis ENCODING 115 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 3300 0000 3f00 6180 6180 6180 6180 6180 6180 6180 3f00 0000 0000 0000 ENDCHAR STARTCHAR Udiaeresis ENCODING 116 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 3300 0000 6180 6180 6180 6180 6180 6180 6180 6180 3f00 0000 0000 0000 ENDCHAR STARTCHAR Acircumflex ENCODING 117 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0c00 1e00 0000 0c00 1e00 3300 6180 7f80 6180 6180 6180 0000 0000 0000 ENDCHAR STARTCHAR Ecircumflex ENCODING 118 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0c00 1e00 0000 7f80 6000 6000 6000 7e00 6000 6000 7f80 0000 0000 0000 ENDCHAR STARTCHAR Icircumflex ENCODING 119 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0c00 1e00 0000 1e00 0c00 0c00 0c00 0c00 0c00 0c00 1e00 0000 0000 0000 ENDCHAR STARTCHAR Ocircumflex ENCODING 120 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0c00 1e00 0000 3f00 6180 6180 6180 6180 6180 6180 3f00 0000 0000 0000 ENDCHAR STARTCHAR Ucircumflex ENCODING 121 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0c00 1e00 0000 6180 6180 6180 6180 6180 6180 6180 3f00 0000 0000 0000 ENDCHAR STARTCHAR Aacute ENCODING 122 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0c00 1800 3000 0c00 1e00 3300 6180 7f80 6180 6180 6180 0000 0000 0000 ENDCHAR STARTCHAR Eacute ENCODING 123 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0300 0600 0c00 7f80 6000 6000 6000 7e00 6000 6000 7f80 0000 0000 0000 ENDCHAR STARTCHAR Iacute ENCODING 124 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0600 0c00 1800 0000 1e00 0c00 0c00 0c00 0c00 0c00 1e00 0000 0000 0000 ENDCHAR STARTCHAR Oacute ENCODING 125 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0300 0600 0c00 3f00 6180 6180 6180 6180 6180 6180 3f00 0000 0000 0000 ENDCHAR STARTCHAR Uacute ENCODING 126 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0300 0600 0c00 6180 6180 6180 6180 6180 6180 6180 3f00 0000 0000 0000 ENDCHAR STARTCHAR Ntilde ENCODING 127 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 1d80 3700 0000 6180 7180 7980 6d80 6780 6380 6180 0000 0000 0000 ENDCHAR STARTCHAR a ENCODING 128 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0000 0000 3e00 0300 0300 3f00 6300 6300 3f80 0000 0000 0000 ENDCHAR STARTCHAR b ENCODING 129 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 6000 6000 6000 7c00 6600 6300 6300 6300 6600 7c00 0000 0000 0000 ENDCHAR STARTCHAR c ENCODING 130 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0000 0000 1f00 3000 6000 6000 6000 3000 1f00 0000 0000 0000 ENDCHAR STARTCHAR d ENCODING 131 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0300 0300 0300 1f00 3300 6300 6300 6300 3300 1f00 0000 0000 0000 ENDCHAR STARTCHAR e ENCODING 132 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0000 0000 3e00 6300 6300 7f00 6000 6000 3f00 0000 0000 0000 ENDCHAR STARTCHAR f ENCODING 133 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0f00 1800 1800 7e00 1800 1800 1800 1800 1800 1800 0000 0000 0000 ENDCHAR STARTCHAR g ENCODING 134 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0000 0000 1f00 3180 6180 6180 3380 1f80 0180 3180 1f00 0000 ENDCHAR STARTCHAR h ENCODING 135 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 6000 6000 6000 7e00 7300 6300 6300 6300 6300 6300 0000 0000 0000 ENDCHAR STARTCHAR i ENCODING 136 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0c00 0000 0000 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0000 0000 0000 ENDCHAR STARTCHAR j ENCODING 137 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0300 0000 0000 0300 0300 0300 0300 0300 0300 0300 3300 1e00 0000 ENDCHAR STARTCHAR k ENCODING 138 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 3000 3000 3000 3300 3600 3c00 3800 3c00 3600 3300 0000 0000 0000 ENDCHAR STARTCHAR l ENCODING 139 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0e00 0000 0000 0000 ENDCHAR STARTCHAR m ENCODING 140 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0000 0000 3f00 6d80 6d80 6d80 6d80 6d80 6d80 0000 0000 0000 ENDCHAR STARTCHAR n ENCODING 141 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0000 0000 7f00 3180 3180 3180 3180 3180 3180 0000 0000 0000 ENDCHAR STARTCHAR o ENCODING 142 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0000 0000 3e00 6300 6300 6300 6300 6300 3e00 0000 0000 0000 ENDCHAR STARTCHAR p ENCODING 143 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0000 0000 7c00 6600 6300 6300 6300 6600 7c00 6000 6000 6000 ENDCHAR STARTCHAR q ENCODING 144 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0000 0000 1f00 3300 6300 6300 3300 1f00 0300 0300 0380 0000 ENDCHAR STARTCHAR r ENCODING 145 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0000 0000 6f00 3980 3000 3000 3000 3000 3000 0000 0000 0000 ENDCHAR STARTCHAR s ENCODING 146 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0000 0000 3e00 6300 3000 1c00 0600 6300 3e00 0000 0000 0000 ENDCHAR STARTCHAR t ENCODING 147 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0c00 0c00 0c00 3f00 0c00 0c00 0c00 0c00 0c00 0c00 0000 0000 0000 ENDCHAR STARTCHAR u ENCODING 148 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0000 0000 6300 6300 6300 6300 6300 6300 3f80 0000 0000 0000 ENDCHAR STARTCHAR v ENCODING 149 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0000 0000 6180 6180 3300 3300 1e00 1e00 0c00 0000 0000 0000 ENDCHAR STARTCHAR w ENCODING 150 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0000 0000 6180 6180 6180 6d80 6d80 7f80 3300 0000 0000 0000 ENDCHAR STARTCHAR x ENCODING 151 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0000 0000 6180 3300 1e00 0c00 1e00 3300 6180 0000 0000 0000 ENDCHAR STARTCHAR y ENCODING 152 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0000 0000 6300 6300 6300 6300 3300 1e00 0c00 1800 3000 6000 ENDCHAR STARTCHAR z ENCODING 153 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0000 0000 7f80 0300 0600 0c00 1800 3000 7f80 0000 0000 0000 ENDCHAR STARTCHAR ae ENCODING 154 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0000 0000 7f00 0d80 1d80 3f80 6c00 6c00 3f80 0000 0000 0000 ENDCHAR STARTCHAR oslash ENCODING 155 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0000 0000 1f80 3300 3700 3f00 3b00 3300 7e00 0000 0000 0000 ENDCHAR STARTCHAR aring ENCODING 156 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 1e00 1e00 0000 3e00 0300 0300 3f00 6300 6300 3f80 0000 0000 0000 ENDCHAR STARTCHAR division ENCODING 157 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0000 1c00 1c00 0000 7f00 0000 1c00 1c00 0000 0000 0000 0000 ENDCHAR STARTCHAR fm ENCODING 158 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 7f80 7f80 0000 0e00 0e00 0000 0000 0e00 0e00 1c00 3800 0000 0000 ENDCHAR STARTCHAR dup ENCODING 159 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 7f80 7f80 0000 0c00 6d80 3f00 1e00 3f00 6d80 0c00 0000 0000 0000 ENDCHAR STARTCHAR A ENCODING 160 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0c00 1e00 3300 6180 6180 7f80 6180 6180 6180 0000 0000 0000 ENDCHAR STARTCHAR B ENCODING 161 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 7e00 3300 3180 3300 3e00 3300 3180 3300 7e00 0000 0000 0000 ENDCHAR STARTCHAR C ENCODING 162 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0f00 1980 3000 6000 6000 6000 3000 1980 0f00 0000 0000 0000 ENDCHAR STARTCHAR D ENCODING 163 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 7e00 3300 3180 3180 3180 3180 3180 3300 7e00 0000 0000 0000 ENDCHAR STARTCHAR E ENCODING 164 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 7f80 6000 6000 6000 7e00 6000 6000 6000 7f80 0000 0000 0000 ENDCHAR STARTCHAR F ENCODING 165 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 7f80 6000 6000 6000 7f00 6000 6000 6000 6000 0000 0000 0000 ENDCHAR STARTCHAR G ENCODING 166 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 1e00 3300 6000 6000 6000 6f80 6300 3300 1f00 0000 0000 0000 ENDCHAR STARTCHAR H ENCODING 167 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 6180 6180 6180 6180 7f80 6180 6180 6180 6180 0000 0000 0000 ENDCHAR STARTCHAR I ENCODING 168 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 1e00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 1e00 0000 0000 0000 ENDCHAR STARTCHAR J ENCODING 169 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0f00 0600 0600 0600 0600 0600 6600 6600 3c00 0000 0000 0000 ENDCHAR STARTCHAR K ENCODING 170 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 6180 6300 6600 6c00 7800 7c00 6600 6300 6180 0000 0000 0000 ENDCHAR STARTCHAR L ENCODING 171 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 6000 6000 6000 6000 6000 6000 6000 6000 7f80 0000 0000 0000 ENDCHAR STARTCHAR M ENCODING 172 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 6180 7380 7f80 6d80 6d80 6180 6180 6180 6180 0000 0000 0000 ENDCHAR STARTCHAR N ENCODING 173 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 6180 7180 7980 6d80 6780 6380 6180 6180 6180 0000 0000 0000 ENDCHAR STARTCHAR O ENCODING 174 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 3f00 6180 6180 6180 6180 6180 6180 6180 3f00 0000 0000 0000 ENDCHAR STARTCHAR P ENCODING 175 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 7e00 6300 6180 6180 6300 7e00 6000 6000 6000 0000 0000 0000 ENDCHAR STARTCHAR Q ENCODING 176 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 1e00 3300 6180 6180 6180 6180 6d80 3f00 1e00 0300 0180 0000 ENDCHAR STARTCHAR R ENCODING 177 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 7f00 6180 6180 6180 7f00 6c00 6600 6300 6180 0000 0000 0000 ENDCHAR STARTCHAR S ENCODING 178 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 3f00 6180 6000 3800 0c00 0700 0180 6180 3f00 0000 0000 0000 ENDCHAR STARTCHAR T ENCODING 179 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 7f80 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0000 0000 0000 ENDCHAR STARTCHAR U ENCODING 180 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 6180 6180 6180 6180 6180 6180 6180 6180 3f00 0000 0000 0000 ENDCHAR STARTCHAR V ENCODING 181 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 6180 6180 3300 3300 3300 1e00 1e00 0c00 0c00 0000 0000 0000 ENDCHAR STARTCHAR W ENCODING 182 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 6180 6180 6180 6180 6d80 6d80 6d80 7f80 3300 0000 0000 0000 ENDCHAR STARTCHAR X ENCODING 183 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 6180 6180 3300 1e00 0c00 1e00 3300 6180 6180 0000 0000 0000 ENDCHAR STARTCHAR Y ENCODING 184 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 6180 3300 1e00 0c00 0c00 0c00 0c00 0c00 0c00 0000 0000 0000 ENDCHAR STARTCHAR Z ENCODING 185 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 7f80 0180 0300 0600 0c00 1800 3000 6000 7f80 0000 0000 0000 ENDCHAR STARTCHAR AE ENCODING 186 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0f80 1e00 3600 6600 6780 7e00 6600 6600 6780 0000 0000 0000 ENDCHAR STARTCHAR Ooblique ENCODING 187 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 3f00 6180 6380 6780 6d80 7980 7180 6180 3f00 0000 0000 0000 ENDCHAR STARTCHAR Aring ENCODING 188 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 1e00 1e00 0c00 1e00 3300 6180 6180 7f80 6180 6180 6180 0000 0000 0000 ENDCHAR STARTCHAR Ccedilla ENCODING 189 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0f00 1980 3000 6000 6000 6000 3000 1980 0f00 0600 3e00 0000 ENDCHAR STARTCHAR semicolon ENCODING 190 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0000 0000 0000 0e00 0e00 0000 0000 0e00 0e00 1c00 3800 0000 ENDCHAR STARTCHAR asterisk ENCODING 191 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0c00 6d80 3f00 1e00 3f00 6d80 0c00 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR c0 ENCODING 192 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR c1 ENCODING 193 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR c2 ENCODING 194 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR c3 ENCODING 195 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR c4 ENCODING 196 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR c5 ENCODING 197 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR c6 ENCODING 198 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR c7 ENCODING 199 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR c8 ENCODING 200 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR c9 ENCODING 201 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR ca ENCODING 202 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR cb ENCODING 203 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR cc ENCODING 204 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR cd ENCODING 205 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR ce ENCODING 206 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR cf ENCODING 207 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR copyright ENCODING 208 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 1c00 2200 4d00 5100 5100 4d00 2200 1c00 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR registered ENCODING 209 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 1c00 2200 5900 5500 5900 5500 2200 1c00 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR boxA ENCODING 210 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 2000 5000 8800 8800 f800 8800 8800 0000 ff80 8080 8080 ff80 0000 0000 ENDCHAR STARTCHAR insert ENCODING 211 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0000 0000 0800 1c00 3e00 7700 e380 c180 8080 0000 0000 0000 ENDCHAR STARTCHAR boxB ENCODING 212 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0f00 0480 0480 0700 0480 0480 0f00 0000 ff80 8080 8080 ff80 0000 0000 ENDCHAR STARTCHAR box6 ENCODING 213 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 ff80 8080 9080 a080 a080 ac80 b280 a280 9c80 8080 ff80 0000 ENDCHAR STARTCHAR plusminus ENCODING 214 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0c00 0c00 0c00 7f80 0c00 0c00 0c00 0000 7f80 0000 0000 0000 ENDCHAR STARTCHAR ETH ENCODING 215 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 7e00 3300 3180 3180 7d80 3180 3180 3300 7e00 0000 0000 0000 ENDCHAR STARTCHAR rightarrow ENCODING 216 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0000 0000 0400 0600 ff00 0600 0400 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR THORN ENCODING 217 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 6000 6000 7e00 6300 6300 6300 7e00 6000 6000 0000 0000 0000 ENDCHAR STARTCHAR upshift ENCODING 218 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0800 1400 2200 4100 7700 1400 1400 1400 1400 1400 1c00 0000 0000 ENDCHAR STARTCHAR human ENCODING 219 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 1c00 1400 1c00 0800 7f00 0800 0800 1400 2200 4100 0000 0000 0000 ENDCHAR STARTCHAR underB ENCODING 220 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 3c00 1200 1200 1c00 1200 1200 3c00 0000 ff80 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR downshift ENCODING 221 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 1c00 1400 1400 1400 1400 1400 7700 4100 2200 1400 0800 0000 0000 ENDCHAR STARTCHAR boxquestion ENCODING 222 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP ff80 8080 9c80 a280 a280 8280 8480 8880 8880 8080 8880 8080 ff80 0000 ENDCHAR STARTCHAR boxsolid ENCODING 223 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP ff80 ff80 ff80 ff80 ff80 ff80 ff80 ff80 ff80 ff80 ff80 ff80 ff80 0000 ENDCHAR STARTCHAR e0 ENCODING 224 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR e1 ENCODING 225 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR e2 ENCODING 226 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR e3 ENCODING 227 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR e4 ENCODING 228 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR e5 ENCODING 229 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR e6 ENCODING 230 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR e7 ENCODING 231 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR e8 ENCODING 232 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR e9 ENCODING 233 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR ea ENCODING 234 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR eb ENCODING 235 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR ec ENCODING 236 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR ed ENCODING 237 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR ee ENCODING 238 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR ef ENCODING 239 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR badcommhi ENCODING 240 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 8000 c000 e000 7000 3800 ff80 0e00 0700 0380 0180 0080 0000 0000 ENDCHAR STARTCHAR commhi ENCODING 241 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0000 0000 0000 0000 ff80 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR commjag ENCODING 242 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0000 0000 0000 0000 fc00 0800 1000 2000 7f80 0000 0000 0000 ENDCHAR STARTCHAR commlo ENCODING 243 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ff80 0000 0000 0000 ENDCHAR STARTCHAR clockleft ENCODING 244 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0100 0800 0000 2000 0000 0080 4100 0100 0100 2100 0100 0800 0100 ENDCHAR STARTCHAR clockright ENCODING 245 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 2000 0000 2800 4000 8000 0400 0000 0000 0800 0000 2000 0000 0000 ENDCHAR STARTCHAR lock ENCODING 246 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 8080 c180 e380 f780 7f00 3e00 3e00 7f00 f780 e380 c180 8080 0000 0000 ENDCHAR STARTCHAR eth ENCODING 247 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 3c00 1800 3c00 0600 3f00 6300 6300 6300 6300 6300 3e00 0000 0000 0000 ENDCHAR STARTCHAR leftarrow ENCODING 248 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0000 0000 1000 3000 7f80 3000 1000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR thorn ENCODING 249 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 6000 6000 7e00 7300 6300 6300 6300 7300 7e00 6000 6000 0000 ENDCHAR STARTCHAR keyleft ENCODING 250 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0000 0e00 1100 1180 1100 0e00 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR keyright ENCODING 251 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0000 0000 0000 ff80 1d80 1d80 0180 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR box4 ENCODING 252 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 ff80 8080 8480 8c80 9480 a480 be80 8480 8480 8080 ff80 0000 ENDCHAR STARTCHAR underA ENCODING 253 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0800 1400 2200 2200 3e00 2200 2200 0000 ff80 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR magcard ENCODING 254 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0000 ff80 8080 8080 8080 ff80 8080 ff80 0000 0000 0000 0000 ENDCHAR STARTCHAR boxhuman ENCODING 255 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP ff80 8080 9c80 9480 9c80 8880 ff80 8880 8880 9480 a280 c180 ff80 0000 ENDCHAR STARTCHAR apl_Aunderbar ENCODING 257 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0c00 1e00 3300 6180 6180 7f80 6180 6180 6180 0000 7f80 0000 ENDCHAR STARTCHAR apl_upcarettilde ENCODING 263 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 3800 6d80 0700 0000 0c00 1e00 3300 6180 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR apl_del ENCODING 266 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0000 7f80 6180 3300 3300 1e00 1e00 0c00 0c00 0000 0000 0000 ENDCHAR STARTCHAR apl_delta ENCODING 267 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0000 0c00 0c00 1e00 1e00 3300 3300 6180 7f80 0000 0000 0000 ENDCHAR STARTCHAR apl_braceright ENCODING 270 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 3800 0c00 0c00 0c00 0c00 0600 0c00 0c00 0c00 0c00 3800 0000 0000 ENDCHAR STARTCHAR apl_braceleft ENCODING 271 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0e00 1800 1800 1800 1800 3000 1800 1800 1800 1800 0e00 0000 0000 ENDCHAR STARTCHAR apl_space ENCODING 272 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR apl_equalunderbar ENCODING 277 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0000 0000 7f80 0000 7f80 0000 7f80 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR apl_epsilon ENCODING 284 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0000 0000 1f00 3000 6000 7e00 6000 3000 1f00 0000 0000 0000 ENDCHAR STARTCHAR apl_iota ENCODING 285 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0000 0000 3000 3000 3000 3000 3000 3600 1c00 0000 0000 0000 ENDCHAR STARTCHAR apl_multiply ENCODING 286 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0000 0000 3300 1e00 0c00 1e00 3300 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR apl_leftarrow ENCODING 287 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0000 0000 1800 3800 7f80 3800 1800 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR apl_super0 ENCODING 288 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 1c00 3600 3600 3600 1c00 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR apl_super1 ENCODING 289 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0c00 1c00 0c00 0c00 1e00 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR apl_super2 ENCODING 290 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 3c00 0600 1c00 3000 3e00 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR apl_super3 ENCODING 291 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 3c00 0600 1c00 0600 3c00 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR apl_super4 ENCODING 292 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0c00 1c00 3c00 3e00 0c00 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR apl_super5 ENCODING 293 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 3e00 3000 3c00 0600 3c00 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR apl_super6 ENCODING 294 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 1c00 3000 3c00 3600 1c00 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR apl_super7 ENCODING 295 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 3e00 0600 0c00 1800 1800 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR apl_super8 ENCODING 296 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 1c00 3600 1c00 3600 1c00 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR apl_super9 ENCODING 297 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 1c00 3600 1e00 0600 1c00 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR apl_Runderbar ENCODING 298 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 7f00 6180 6180 6180 7f00 6c00 6600 6300 6180 0000 7f80 0000 ENDCHAR STARTCHAR apl_uptack ENCODING 311 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0000 0000 3f00 0c00 0c00 0c00 0c00 0c00 0c00 0000 0000 0000 ENDCHAR STARTCHAR apl_quad ENCODING 312 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 7f80 6180 6180 6180 6180 6180 6180 6180 6180 6180 7f80 0000 0000 0000 ENDCHAR STARTCHAR apl_rho ENCODING 313 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0000 0000 1e00 3300 6180 6180 6180 7300 7e00 6000 6000 6000 ENDCHAR STARTCHAR apl_alpha ENCODING 314 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0000 0000 1d80 3780 6300 6300 6300 3780 1d80 0000 0000 0000 ENDCHAR STARTCHAR apl_degree ENCODING 315 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0e00 1b00 1b00 0e00 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR apl_bracketright ENCODING 316 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 1e00 0600 0600 0600 0600 0600 0600 0600 0600 0600 1e00 0000 0000 ENDCHAR STARTCHAR apl_notequal ENCODING 318 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0000 0300 0600 7f00 0c00 1800 7f00 3000 6000 0000 0000 0000 ENDCHAR STARTCHAR apl_circle ENCODING 319 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0000 1e00 3300 6180 6180 6180 3300 1e00 0000 0000 0000 0000 ENDCHAR STARTCHAR apl_Dunderbar ENCODING 320 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 7e00 3300 3180 3180 3180 3180 3180 3300 7e00 0000 7f80 0000 ENDCHAR STARTCHAR apl_Munderbar ENCODING 321 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 6180 7380 7f80 6d80 6d80 6180 6180 6180 6180 0000 7f80 0000 ENDCHAR STARTCHAR apl_Qunderbar ENCODING 322 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 1e00 3300 6180 6180 6180 6180 6d80 3f00 1e00 0300 7f80 0000 ENDCHAR STARTCHAR apl_circlestile ENCODING 323 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0c00 0c00 1e00 3f00 6d80 6d80 6d80 3f00 1e00 0c00 0c00 0000 0000 ENDCHAR STARTCHAR apl_deltastile ENCODING 324 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0c00 0c00 0c00 1e00 1e00 3f00 3f00 6d80 7f80 0c00 0c00 0000 0000 0000 ENDCHAR STARTCHAR apl_Funderbar ENCODING 325 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 7f80 6000 6000 6000 7f00 6000 6000 6000 6000 0000 7f80 0000 ENDCHAR STARTCHAR apl_circleslope ENCODING 326 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0000 7e00 3300 7980 6d80 6780 3300 1f80 0000 0000 0000 0000 ENDCHAR STARTCHAR apl_upshoejot ENCODING 327 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0000 0000 1e00 3300 3f00 3f00 3300 3300 0000 0000 0000 0000 ENDCHAR STARTCHAR apl_bracketleft ENCODING 328 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 1e00 1800 1800 1800 1800 1800 1800 1800 1800 1800 1e00 0000 0000 ENDCHAR STARTCHAR apl_upstile ENCODING 329 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 1e00 1800 1800 1800 1800 1800 1800 1800 1800 0000 0000 0000 ENDCHAR STARTCHAR apl_Junderbar ENCODING 330 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0f00 0600 0600 0600 0600 0600 6600 6600 3c00 0000 7f00 0000 ENDCHAR STARTCHAR apl_slope ENCODING 331 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0000 0000 3000 1800 0c00 0600 0300 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR apl_divide ENCODING 332 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0000 1c00 1c00 0000 7f00 0000 1c00 1c00 0000 0000 0000 0000 ENDCHAR STARTCHAR apl_delstile ENCODING 334 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0c00 0c00 7f80 6d80 3f00 3f00 1e00 1e00 0c00 0c00 0c00 0000 0000 0000 ENDCHAR STARTCHAR apl_Hunderbar ENCODING 335 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 6180 6180 6180 6180 7f80 6180 6180 6180 6180 0000 7f80 0000 ENDCHAR STARTCHAR apl_Cunderbar ENCODING 336 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0f00 1980 3000 6000 6000 6000 3000 1980 0f00 0000 7f80 0000 ENDCHAR STARTCHAR apl_Lunderbar ENCODING 337 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 6000 6000 6000 6000 6000 6000 6000 6000 7f80 0000 7f80 0000 ENDCHAR STARTCHAR apl_Punderbar ENCODING 338 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 7e00 6300 6180 6180 6300 7e00 6000 6000 6000 0000 7f80 0000 ENDCHAR STARTCHAR apl_squad ENCODING 339 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 3e00 3600 3600 3600 3600 3600 3600 3600 3600 3600 3e00 0000 0000 0000 ENDCHAR STARTCHAR apl_overbar ENCODING 340 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 7f80 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR apl_Bunderbar ENCODING 341 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 7e00 3300 3180 3300 3e00 3300 3180 3300 7e00 0000 7f80 0000 ENDCHAR STARTCHAR apl_Kunderbar ENCODING 342 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 6180 6300 6600 6c00 7800 7c00 6600 6300 6180 0000 7f80 0000 ENDCHAR STARTCHAR apl_Ounderbar ENCODING 343 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 3f00 6180 6180 6180 6180 6180 6180 6180 3f00 0000 7f80 0000 ENDCHAR STARTCHAR apl_downcarettilde ENCODING 344 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 3800 6d80 0700 0000 6180 3300 1e00 0c00 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR apl_quotedot ENCODING 345 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 1c00 1c00 0c00 0c00 0c00 0000 0000 0000 1c00 1c00 0000 0000 0000 ENDCHAR STARTCHAR apl_Eunderbar ENCODING 346 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 7f80 6000 6000 6000 7e00 6000 6000 6000 7f80 0000 7f80 0000 ENDCHAR STARTCHAR apl_stile ENCODING 347 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 ENDCHAR STARTCHAR apl_Nunderbar ENCODING 348 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 6180 7180 7980 6d80 6780 6380 6180 6180 6180 0000 7f80 0000 ENDCHAR STARTCHAR apl_quadslope ENCODING 349 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 7f80 6180 6180 7180 7980 6d80 6780 6380 6180 6180 7f80 0000 0000 0000 ENDCHAR STARTCHAR apl_quadquote ENCODING 350 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 7f80 7d80 6d80 6d80 6d80 6180 6180 6180 6180 6180 7f80 0000 0000 0000 ENDCHAR STARTCHAR apl_Iunderbar ENCODING 351 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 1e00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 1e00 0000 1e00 0000 ENDCHAR STARTCHAR apl_Uunderbar ENCODING 352 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 6180 6180 6180 6180 6180 6180 6180 6180 3f00 0000 7f80 0000 ENDCHAR STARTCHAR apl_iotaunderbar ENCODING 353 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0000 0000 3000 3000 3000 3000 3000 3600 1c00 0000 3e00 0000 ENDCHAR STARTCHAR apl_downcaret ENCODING 354 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 3300 1e00 0c00 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR apl_circlebar ENCODING 355 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0000 1e00 3300 6180 7f80 6180 3300 1e00 0000 0000 0000 0000 ENDCHAR STARTCHAR apl_circlestar ENCODING 356 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0000 1e00 3f00 7f80 6d80 7f80 3300 1e00 0000 0000 0000 0000 ENDCHAR STARTCHAR apl_Wunderbar ENCODING 357 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 6180 6180 6180 6180 6d80 6d80 6d80 7f80 3300 0000 7f80 0000 ENDCHAR STARTCHAR apl_uptackjot ENCODING 358 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0000 3f00 0c00 1e00 3f00 3f00 1e00 0c00 0c00 0000 0000 0000 ENDCHAR STARTCHAR apl_downtackup ENCODING 359 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0000 0000 3f00 0c00 0c00 0c00 0c00 0c00 3f00 0000 0000 0000 ENDCHAR STARTCHAR apl_slashbar ENCODING 360 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0000 0000 0300 0600 7f80 1800 3000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR apl_rightshoe ENCODING 362 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0000 0000 3e00 0300 0300 0300 3e00 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR apl_leftshoe ENCODING 363 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0000 0000 1f00 3000 3000 3000 1f00 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR apl_uparrow ENCODING 364 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0000 0c00 1e00 3f00 0c00 0c00 0c00 0c00 0c00 0000 0000 0000 ENDCHAR STARTCHAR apl_downarrow ENCODING 365 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0000 0c00 0c00 0c00 0c00 0c00 3f00 1e00 0c00 0000 0000 0000 ENDCHAR STARTCHAR apl_upshoe ENCODING 366 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0000 0000 1e00 3300 3300 3300 3300 3300 0000 0000 0000 0000 ENDCHAR STARTCHAR apl_downshoe ENCODING 367 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0000 0000 0000 3300 3300 3300 3300 3300 1e00 0000 0000 0000 ENDCHAR STARTCHAR apl_Tunderbar ENCODING 368 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 7f80 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0000 7f80 0000 ENDCHAR STARTCHAR apl_quadjot ENCODING 369 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 7f80 6180 6180 7f80 7380 7380 7380 7f80 6180 6180 7f80 0000 0000 0000 ENDCHAR STARTCHAR apl_righttack ENCODING 370 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0000 0300 0300 0300 3f00 0300 0300 0300 0000 0000 0000 0000 ENDCHAR STARTCHAR apl_diaeresisdot ENCODING 371 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 7380 7380 0000 0000 0000 0000 0000 1c00 1c00 0000 0000 0000 0000 ENDCHAR STARTCHAR apl_deltaunderbar ENCODING 372 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0c00 0c00 1e00 1e00 3300 3300 6180 7f80 0000 7f80 0000 0000 0000 ENDCHAR STARTCHAR apl_Sunderbar ENCODING 373 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 3f00 6180 6000 3800 0c00 0700 0180 6180 3f00 0000 7f80 0000 ENDCHAR STARTCHAR apl_diaeresis ENCODING 374 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 7380 7380 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR apl_lefttack ENCODING 375 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0000 3000 3000 3000 3f00 3000 3000 3000 0000 0000 0000 0000 ENDCHAR STARTCHAR apl_slopebar ENCODING 376 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0000 0000 3000 1800 7f80 0600 0300 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR apl_deltilde ENCODING 377 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 7f80 6180 3300 3b00 7f80 1f00 0c00 0c00 0000 0000 0000 0000 ENDCHAR STARTCHAR apl_Vunderbar ENCODING 378 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 6180 6180 3300 3300 3300 1e00 1e00 0c00 0c00 0000 7f80 0000 ENDCHAR STARTCHAR apl_upcaret ENCODING 379 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0c00 1e00 3300 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR apl_epsilonunderbar ENCODING 380 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0000 0000 1f00 3000 6000 7e00 6000 3000 1f00 0000 7f00 0000 ENDCHAR STARTCHAR apl_quaddivide ENCODING 381 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 7f80 6180 6d80 6d80 6180 7f80 6180 6d80 6d80 6180 7f80 0000 0000 0000 ENDCHAR STARTCHAR apl_downtackjot ENCODING 382 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0000 0c00 0c00 1e00 3f00 3f00 1e00 0c00 3f00 0000 0000 0000 ENDCHAR STARTCHAR apl_Zunderbar ENCODING 383 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 7f80 0180 0300 0600 0c00 1800 3000 6000 7f80 0000 7f80 0000 ENDCHAR STARTCHAR apl_2vertical ENCODING 384 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 6180 6180 6180 6180 6180 6180 6180 6180 6180 6180 6180 6180 6180 6180 ENDCHAR STARTCHAR apl_2horizontal ENCODING 385 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 ff80 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ff80 0000 ENDCHAR STARTCHAR apl_leftvbar ENCODING 386 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 6000 6000 6000 6000 6000 6000 6000 6000 6000 6000 6000 6000 6000 6000 ENDCHAR STARTCHAR apl_rightvbar ENCODING 387 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0180 0180 0180 0180 0180 0180 0180 0180 0180 0180 0180 0180 0180 0180 ENDCHAR STARTCHAR apl_midvbar ENCODING 388 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 ENDCHAR STARTCHAR apl_leftsolid ENCODING 393 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP fc00 fc00 fc00 fc00 fc00 fc00 fc00 fc00 fc00 fc00 fc00 fc00 fc00 fc00 ENDCHAR STARTCHAR apl_rightsolid ENCODING 394 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0f80 0f80 0f80 0f80 0f80 0f80 0f80 0f80 0f80 0f80 0f80 0f80 0f80 0f80 ENDCHAR STARTCHAR apl_topsolid ENCODING 395 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP ff80 ff80 ff80 ff80 ff80 ff80 ff80 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR apl_bottomsolid ENCODING 396 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0000 0000 0000 0000 ff80 ff80 ff80 ff80 ff80 ff80 ff80 ff80 ENDCHAR STARTCHAR apl_solid ENCODING 397 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP ff80 ff80 ff80 ff80 ff80 ff80 ff80 ff80 ff80 ff80 ff80 ff80 ff80 ff80 ENDCHAR STARTCHAR apl_midhbar ENCODING 402 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0000 0000 0000 0000 ff80 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR apl_solidcircle ENCODING 403 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0000 0000 0000 1e00 1e00 1e00 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR apl_subn ENCODING 404 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0000 0000 0000 0000 0000 3c00 3600 3600 3600 0000 0000 0000 ENDCHAR STARTCHAR apl_splat ENCODING 410 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 6180 3f00 3300 3300 3300 3300 3300 3300 3f00 6180 0000 0000 0000 ENDCHAR STARTCHAR apl_diamond ENCODING 411 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0c00 1e00 3300 6180 3300 1e00 0c00 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR apl_Gunderbar ENCODING 412 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 1e00 3300 6000 6000 6000 6f80 6300 3300 1f00 0000 7f80 0000 ENDCHAR STARTCHAR apl_sub1 ENCODING 413 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0000 0000 0000 0000 0000 0c00 1c00 0c00 0c00 1e00 0000 0000 ENDCHAR STARTCHAR apl_superlparen ENCODING 416 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0c00 1800 1800 1800 1800 0c00 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR apl_plus2 ENCODING 417 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0000 0000 0c00 0c00 3f00 0c00 0c00 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR apl_solidbox ENCODING 418 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0000 0000 3f00 3f00 3f00 3f00 3f00 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR apl_lowerleft ENCODING 419 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0c00 0c00 0c00 0c00 0c00 0c00 0f80 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR apl_upperleft ENCODING 420 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0000 0000 0000 0000 0f80 0c00 0c00 0c00 0c00 0c00 0c00 0c00 ENDCHAR STARTCHAR apl_leftjoin ENCODING 421 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0c00 0c00 0c00 0c00 0c00 0c00 0f80 0c00 0c00 0c00 0c00 0c00 0c00 0c00 ENDCHAR STARTCHAR apl_bottomjoin ENCODING 422 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0c00 0c00 0c00 0c00 0c00 0c00 ff80 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR apl_section ENCODING 423 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 1e00 3000 3000 7800 6c00 6600 3300 1b00 0f00 0600 0600 3c00 0000 ENDCHAR STARTCHAR apl_superrparen ENCODING 425 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0c00 0600 0600 0600 0600 0c00 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR apl_minus2 ENCODING 426 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0000 0000 0000 0000 3f00 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR apl_intersect ENCODING 427 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0c00 0c00 0c00 0c00 0c00 0c00 ff80 0c00 0c00 0c00 0c00 0c00 0c00 0c00 ENDCHAR STARTCHAR apl_lowerright ENCODING 428 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0c00 0c00 0c00 0c00 0c00 0c00 fc00 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR apl_upperright ENCODING 429 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0000 0000 0000 0000 fc00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 ENDCHAR STARTCHAR apl_rightjoin ENCODING 430 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0c00 0c00 0c00 0c00 0c00 0c00 fc00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 ENDCHAR STARTCHAR apl_topjoin ENCODING 431 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0000 0000 0000 0000 ff80 0c00 0c00 0c00 0c00 0c00 0c00 0c00 ENDCHAR STARTCHAR apl_paragraph ENCODING 432 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0000 3f80 7f00 7f00 3f00 0f00 0f00 0f00 0f00 0000 0000 0000 ENDCHAR STARTCHAR apl_sub2 ENCODING 434 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0000 0000 0000 0000 0000 3c00 0600 1c00 3000 3e00 0000 0000 ENDCHAR STARTCHAR apl_sub3 ENCODING 435 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0000 0000 0000 0000 0000 3c00 0600 1c00 0600 3c00 0000 0000 ENDCHAR STARTCHAR apl_plusminus ENCODING 442 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0c00 0c00 0c00 7f80 0c00 0c00 0c00 0000 7f80 0000 0000 0000 ENDCHAR STARTCHAR apl_tilde ENCODING 443 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 3800 6d80 0700 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR apl_Xunderbar ENCODING 444 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 6180 6180 3300 1e00 0c00 1e00 3300 6180 6180 0000 7f80 0000 ENDCHAR STARTCHAR apl_Yunderbar ENCODING 445 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 6180 3300 1e00 0c00 0c00 0c00 0c00 0c00 0c00 0000 7f80 0000 ENDCHAR STARTCHAR apl_omega ENCODING 464 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0000 0000 0000 0000 3300 6180 6d80 6d80 3f00 0000 0000 0000 ENDCHAR STARTCHAR apl_jot ENCODING 465 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0000 0000 0000 1c00 3600 3600 1c00 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR apl_rightarrow ENCODING 470 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0000 0000 0600 0700 ff80 0700 0600 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR apl_downtack ENCODING 471 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0000 0000 0c00 0c00 0c00 0c00 0c00 0c00 3f00 0000 0000 0000 ENDCHAR STARTCHAR apl_notless ENCODING 473 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0000 7000 1c00 0700 1c00 7000 0000 7f00 0000 0000 0000 0000 ENDCHAR STARTCHAR apl_notgreater ENCODING 503 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0000 0700 1c00 7000 1c00 0700 0000 7f00 0000 0000 0000 0000 ENDCHAR STARTCHAR apl_downstile ENCODING 505 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 1800 1800 1800 1800 1800 1800 1800 1800 1e00 0000 0000 0000 ENDCHAR STARTCHAR 200 ENCODING 512 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 3f00 3f00 3f00 3f00 3f00 3f00 3f00 3f00 3f00 3f00 3f00 3f00 3f00 3f00 ENDCHAR STARTCHAR 201 ENCODING 513 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0000 0000 0c00 1e00 3f00 1e00 0c00 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR 202 ENCODING 514 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP aa80 5500 aa80 5500 aa80 5500 aa80 5500 aa80 5500 aa80 5500 aa80 5500 ENDCHAR STARTCHAR 203 ENCODING 515 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 7800 7800 7800 7800 7800 0000 0780 0300 0300 0300 0300 0000 0000 ENDCHAR STARTCHAR 204 ENCODING 516 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 7800 6000 7000 6000 6000 0000 0780 0600 0700 0600 0600 0000 0000 ENDCHAR STARTCHAR 205 ENCODING 517 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 3800 6000 6000 6000 3800 0000 0700 0780 0700 0780 0780 0000 0000 ENDCHAR STARTCHAR 206 ENCODING 518 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 6000 6000 6000 6000 7800 0000 0780 0600 0700 0600 0600 0000 0000 ENDCHAR STARTCHAR 207 ENCODING 519 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 1c00 3600 3600 1c00 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR 208 ENCODING 520 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0000 0c00 0c00 3f00 0c00 0c00 0000 3f00 0000 0000 0000 0000 ENDCHAR STARTCHAR 209 ENCODING 521 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 6c00 7c00 7c00 6c00 6c00 0000 0600 0600 0600 0600 0780 0000 0000 ENDCHAR STARTCHAR 20a ENCODING 522 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 7800 7800 7800 3000 3000 0000 0780 0300 0300 0300 0300 0000 0000 ENDCHAR STARTCHAR 20b ENCODING 523 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0c00 0c00 0c00 0c00 0c00 fc00 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR 20c ENCODING 524 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0000 0000 0000 fc00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 ENDCHAR STARTCHAR 20d ENCODING 525 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0000 0000 0000 0f80 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 ENDCHAR STARTCHAR 20e ENCODING 526 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0c00 0c00 0c00 0c00 0c00 0f80 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR 20f ENCODING 527 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0c00 0c00 0c00 0c00 0c00 ff80 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 ENDCHAR STARTCHAR 210 ENCODING 528 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 ff80 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR 211 ENCODING 529 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0000 ff80 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR 212 ENCODING 530 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0000 0000 0000 ff80 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR 213 ENCODING 531 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0000 0000 0000 0000 0000 ff80 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR 214 ENCODING 532 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 ff80 0000 0000 0000 0000 ENDCHAR STARTCHAR 215 ENCODING 533 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0c00 0c00 0c00 0c00 0c00 0f80 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 ENDCHAR STARTCHAR 216 ENCODING 534 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0c00 0c00 0c00 0c00 0c00 fc00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 ENDCHAR STARTCHAR 217 ENCODING 535 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0c00 0c00 0c00 0c00 0c00 ff80 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR 218 ENCODING 536 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0000 0000 0000 ff80 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 ENDCHAR STARTCHAR 219 ENCODING 537 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 ENDCHAR STARTCHAR 21a ENCODING 538 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0000 0700 1c00 7000 1c00 0700 0000 7f00 0000 0000 0000 0000 ENDCHAR STARTCHAR 21b ENCODING 539 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0000 7000 1c00 0700 1c00 7000 0000 7f00 0000 0000 0000 0000 ENDCHAR STARTCHAR 21c ENCODING 540 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0000 0000 3f80 1b00 1b00 1b00 1b00 1b00 3300 0000 0000 0000 ENDCHAR STARTCHAR 21d ENCODING 541 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0000 0300 0600 7f00 0c00 1800 7f00 3000 6000 0000 0000 0000 ENDCHAR STARTCHAR 21e ENCODING 542 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 1c00 3600 3000 3000 7c00 3000 3000 7980 7f00 0000 0000 0000 ENDCHAR STARTCHAR 21f ENCODING 543 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0000 0000 0000 0000 1c00 1c00 0000 0000 0000 0000 0000 0000 ENDCHAR ENDFONT suite3270-4.1/x3270/3270gr.bdf000066400000000000000000001644761413735575200152450ustar00rootroot00000000000000STARTFONT 2.1 COMMENT "20-point 3270 font, Greek character set" COMMENT "Uses nonstandard ordering:" COMMENT " Page 0: EBCDIC Greek set (CP 875), CG order" COMMENT " Page 1: EBCDIC APL/APL2 set, CG order (incomplete)" COMMENT " Page 2: (first 16 characters only) DEC line-drawing characters from" COMMENT " fixed-width X fonts" COMMENT "" COMMENT "Copyright (c) 1995-2009, Paul Mattes." COMMENT "Copyright (c) 2000, Mantzios Achilleus" COMMENT "All rights reserved." COMMENT "" COMMENT "Redistribution and use in source and binary forms, with or" COMMENT "without modification, are permitted provided that the following" COMMENT "conditions are met:" COMMENT " * Redistributions of source code must retain the above" COMMENT " copyright notice, this list of conditions and the following" COMMENT " disclaimer." COMMENT " * Redistributions in binary form must reproduce the above" COMMENT " copyright notice, this list of conditions and the following" COMMENT " disclaimer in the documentation and/or other materials" COMMENT " provided with the distribution." COMMENT " * Neither the name of Paul Mattes, Mantzios Achilleus nor their" COMMENT " contributors may be used to endorse or promote products " COMMENT " derived from this software without specific prior written " COMMENT " permission." COMMENT "" COMMENT "THIS SOFTWARE IS PROVIDED BY PAUL MATTES AND MANTZIOR ACHILLEUS" COMMENT "'AS IS' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT " COMMENT "LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR" COMMENT "A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL PAUL" COMMENT "MATTES OR MANTZIOS ACHILLEUS BE LIABLE FOR ANY DIRECT, INDIRECT, " COMMENT "INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING," COMMENT "BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; " COMMENT "LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER" COMMENT "CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT" COMMENT "LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING" COMMENT "IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF" COMMENT "THE POSSIBILITY OF SUCH DAMAGE." COMMENT "" COMMENT $XConsortium: 10x20.bdf,v 1.12 92/04/02 14:25:55 gildea Exp $ COMMENT "$NCDId: @(#)10x20.bdf,v 1.11 1991/07/02 14:50:48 jim Exp $" COMMENT "" COMMENT "Copyright 1989-1991 Network Computing Devices, Inc." COMMENT "NCD is a registered trademark of Network Computing Devices, Inc." COMMENT "" COMMENT "Permission to use, copy, modify, and distribute this software and" COMMENT "its documentation for any purpose and without fee is hereby" COMMENT "granted, provided that the above copyright notice appear in all" COMMENT "copies and that both that copyright notice and this permission" COMMENT "notice appear in supporting documentation, and that the name of" COMMENT "NCD may not be used in advertising or publicity pertaining to" COMMENT "distribution of the software without specific, written prior" COMMENT "permission. NCD makes no representations about the" COMMENT "suitability of this software for any purpose. It is provided ``as" COMMENT "is'' without express or implied warranty." COMMENT "" COMMENT "NCD DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE," COMMENT "INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN" COMMENT "NO EVENT SHALL NCD BE LIABLE FOR ANY SPECIAL, INDIRECT OR" COMMENT "CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS" COMMENT "OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT," COMMENT "NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN" COMMENT "CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE." FONT 3270gr SIZE 20 75 75 FONTBOUNDINGBOX 10 20 0 -5 STARTPROPERTIES 17 FOUNDRY "NCD" FAMILY_NAME "3270" WEIGHT_NAME "Medium" SLANT "R" SETWIDTH_NAME "Normal" SPACING "C" PIXEL_SIZE 20 POINT_SIZE 200 RESOLUTION_X 75 RESOLUTION_Y 75 AVERAGE_WIDTH 100 DEFAULT_CHAR 514 FONT_DESCENT 5 FONT_ASCENT 15 CHARSET_REGISTRY "3270cg" CHARSET_ENCODING "7" COPYRIGHT "Copyright 1989-1991 Network Computing Devices, Inc." ENDPROPERTIES CHARS 312 STARTCHAR null ENCODING 0 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR nobreakspace ENCODING 1 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR ff ENCODING 2 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR cr ENCODING 3 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR nl ENCODING 4 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR em ENCODING 5 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR eightones ENCODING 6 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 0000 1e00 3f00 7f80 7f80 7f80 7f80 3f00 1e00 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR hyphen ENCODING 7 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 0000 0000 0000 3f00 3f00 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR greater ENCODING 8 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 2000 3000 1800 0c00 0600 0300 0180 0300 0600 0c00 1800 3000 2000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR less ENCODING 9 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0100 0300 0600 0c00 1800 3000 6000 3000 1800 0c00 0600 0300 0100 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR bracketleft ENCODING 10 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 3f00 3000 3000 3000 3000 3000 3000 3000 3000 3000 3000 3000 3f00 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR bracketright ENCODING 11 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 3f00 0300 0300 0300 0300 0300 0300 0300 0300 0300 0300 0300 3f00 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR parenright ENCODING 12 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 3000 1800 0c00 0c00 0600 0600 0600 0600 0600 0c00 0c00 1800 3000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR parenleft ENCODING 13 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0300 0600 0c00 0c00 1800 1800 1800 1800 1800 0c00 0c00 0600 0300 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR braceright ENCODING 14 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 7800 0c00 0c00 0c00 0c00 0c00 0780 0c00 0c00 0c00 0c00 0c00 7800 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR braceleft ENCODING 15 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0780 0c00 0c00 0c00 0c00 0c00 7800 0c00 0c00 0c00 0c00 0c00 0780 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR space ENCODING 16 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR equal ENCODING 17 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 0000 0000 7f80 0000 0000 0000 0000 7f80 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR apostrophe ENCODING 18 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0f00 0e00 1800 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR quotedbl ENCODING 19 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 3300 3300 3300 1200 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR slash ENCODING 20 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0180 0180 0300 0300 0600 0600 0c00 0c00 1800 1800 3000 3000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR backslash ENCODING 21 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 3000 3000 1800 1800 0c00 0c00 0600 0600 0300 0300 0180 0180 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR bar ENCODING 22 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR brokenbar ENCODING 23 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0c00 0c00 0c00 0c00 0c00 0000 0000 0000 0c00 0c00 0c00 0c00 0c00 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR question ENCODING 24 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 1e00 3300 6180 6180 6180 0300 0600 0c00 0c00 0c00 0000 0c00 0c00 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR exclam ENCODING 25 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0000 0c00 0c00 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR dollar ENCODING 26 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0c00 3f00 6d80 6c00 6c00 6c00 3f00 0d80 0d80 0d80 6d80 3f00 0c00 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR modifier_letter_apostrophe ENCODING 27 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0e00 0e00 1800 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR sterling ENCODING 28 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0f00 1980 1980 1800 1800 7e00 1800 1800 1800 7c00 56c0 7380 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR undefined_a5 ENCODING 29 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR greek_capital_letter_alpha_with_tonos ENCODING 30 SWIDTH 878 0 DWIDTH 10 0 BBX 10 15 0 0 BITMAP 6000 6000 4000 4c00 0c00 0e00 1e00 1300 3300 3180 3f80 6180 60c0 40c0 f1c0 ENDCHAR STARTCHAR undefined_a4 ENCODING 31 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR 0 ENCODING 32 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0c00 1e00 3300 3300 6180 6180 6180 6180 6180 3300 3300 1e00 0c00 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR 1 ENCODING 33 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0c00 1c00 3c00 6c00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 7f80 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR 2 ENCODING 34 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 1e00 3300 6180 6180 0180 0180 0300 0e00 1800 3000 6000 6000 7f80 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR 3 ENCODING 35 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 1e00 3300 6180 6180 0180 0300 0e00 0300 0180 6180 6180 3300 1e00 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR 4 ENCODING 36 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0100 0300 0700 0f00 1b00 3300 6300 6300 7f80 0300 0300 0300 0300 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR 5 ENCODING 37 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 7f80 6000 6000 6000 6000 6e00 7300 0180 0180 0180 6180 3300 1e00 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR 6 ENCODING 38 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 1e00 3300 6100 6000 6000 6e00 7300 6180 6180 6180 6180 3300 1e00 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR 7 ENCODING 39 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 7f80 0180 0180 0300 0300 0600 0600 0c00 0c00 1800 1800 3000 3000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR 8 ENCODING 40 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 1e00 3300 6180 6180 6180 3300 1e00 3300 6180 6180 6180 3300 1e00 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR 9 ENCODING 41 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 1e00 3300 6180 6180 6180 6180 3380 1d80 0180 0180 2180 3300 1e00 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR greek_small_letter_iota_with_tonos ENCODING 42 SWIDTH 878 0 DWIDTH 10 0 BBX 8 14 2 0 BITMAP 18 18 10 10 00 00 70 98 18 18 18 18 19 0e ENDCHAR STARTCHAR section ENCODING 43 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 3e00 6300 6000 7000 7800 4c00 6600 3300 1900 0f00 0300 6300 3e00 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR numbersign ENCODING 44 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0d80 0d80 0d80 3fc0 1b00 1b00 1b00 7f80 3600 3600 3600 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR at ENCODING 45 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 1e00 3300 6180 6780 6f80 6d80 6d80 6d80 6f00 6600 6000 3180 1f00 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR percent ENCODING 46 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 3980 6d80 6f00 3b00 0600 0600 0c00 0c00 1b80 1ec0 36c0 3380 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR underscore ENCODING 47 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 7fc0 0000 0000 0000 0000 ENDCHAR STARTCHAR ampersand ENCODING 48 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 1c00 3600 3600 3600 3c00 1800 3800 6c00 66c0 6380 6300 7780 3cc0 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR minus ENCODING 49 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 7f80 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR period ENCODING 50 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0e00 0e00 0e00 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR comma ENCODING 51 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0e00 0e00 1800 0000 0000 0000 0000 ENDCHAR STARTCHAR colon ENCODING 52 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 0000 0e00 0e00 0000 0000 0000 0000 0e00 0e00 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR plus ENCODING 53 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 0000 0c00 0c00 0c00 7f80 0c00 0c00 0c00 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR notsign ENCODING 54 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 0000 0000 0000 7f80 7f80 0180 0180 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR macron ENCODING 55 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 7f00 7f00 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR degree ENCODING 56 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0c00 1e00 3300 3300 1e00 0c00 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR periodcentered ENCODING 57 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 0000 0000 0000 0e00 0e00 0e00 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR asciicircum ENCODING 58 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0c00 1e00 3300 6180 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR asciitilde ENCODING 59 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 3980 6d80 6700 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR diaeresis ENCODING 60 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 3300 3300 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR grave ENCODING 61 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 3c00 1c00 0600 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR acute ENCODING 62 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0600 0c00 1800 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR greek_capital_letter_epsilon_with_tonos ENCODING 63 SWIDTH 878 0 DWIDTH 10 0 BBX 10 15 1 0 BITMAP c000 c000 8000 bfc0 1840 1840 1800 1880 1f80 1880 1800 1800 1840 1840 3fc0 ENDCHAR STARTCHAR greek_small_letter_upsilon_with_dialytika_and_tonos ENCODING 64 SWIDTH 878 0 DWIDTH 10 0 BBX 9 15 1 0 BITMAP 0c00 0c00 0800 6b00 6300 0000 0000 6300 b180 3180 3180 3180 3180 3300 1e00 ENDCHAR STARTCHAR greek_small_letter_theta ENCODING 65 SWIDTH 878 0 DWIDTH 10 0 BBX 8 12 2 0 BITMAP 3c 66 66 c3 c3 ff c3 c3 c3 66 66 3c ENDCHAR STARTCHAR greek_small_letter_mu ENCODING 66 SWIDTH 878 0 DWIDTH 10 0 BBX 9 11 1 -3 BITMAP 4200 c600 c600 c600 c600 c600 ee80 bb00 8000 8000 8000 ENDCHAR STARTCHAR greek_small_letter_final_sigma ENCODING 67 SWIDTH 878 0 DWIDTH 10 0 BBX 7 11 2 -3 BITMAP 3c 7e c2 80 80 80 fc 7e 02 02 1c ENDCHAR STARTCHAR greek_small_letter_omega ENCODING 68 SWIDTH 878 0 DWIDTH 10 0 BBX 10 8 1 0 BITMAP 6100 c080 80c0 8cc0 8cc0 ccc0 ffc0 7380 ENDCHAR STARTCHAR greek_small_letter_gamma ENCODING 69 SWIDTH 878 0 DWIDTH 10 0 BBX 10 11 1 -3 BITMAP 3040 7880 4d80 8500 8700 0600 0600 0c00 1c00 1c00 0800 ENDCHAR STARTCHAR greek_small_letter_upsilon ENCODING 70 SWIDTH 878 0 DWIDTH 10 0 BBX 9 8 1 0 BITMAP 6300 b180 3180 3180 3180 3180 3300 1e00 ENDCHAR STARTCHAR undefined_ff ENCODING 71 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR greek_small_letter_epsilon_with_tonos ENCODING 72 SWIDTH 878 0 DWIDTH 10 0 BBX 7 14 2 0 BITMAP 18 18 10 10 00 00 7c c6 c0 78 c0 c0 e2 3c ENDCHAR STARTCHAR greek_small_letter_upsilon_with_tonos ENCODING 73 SWIDTH 878 0 DWIDTH 10 0 BBX 9 13 1 0 BITMAP 0c00 0c00 0800 0800 0000 6300 b180 3180 3180 3180 3180 3300 1e00 ENDCHAR STARTCHAR greek_small_letter_iota ENCODING 74 SWIDTH 878 0 DWIDTH 10 0 BBX 8 8 2 0 BITMAP 70 98 18 18 18 18 19 0e ENDCHAR STARTCHAR greek_capital_letter_omicron_with_tonos ENCODING 75 SWIDTH 878 0 DWIDTH 10 0 BBX 10 15 1 0 BITMAP c000 c000 8000 9e00 7380 6180 c0c0 c0c0 c0c0 c0c0 c0c0 c0c0 6180 7380 1e00 ENDCHAR STARTCHAR onehalf ENCODING 76 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 2000 6000 2080 2100 7200 0400 0b00 1480 2080 4100 0200 0780 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR greek_capital_letter_upsilon_with_tonos ENCODING 77 SWIDTH 878 0 DWIDTH 10 0 BBX 10 15 1 0 BITMAP 6000 c000 8000 6180 f3c0 9240 1e00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 3f00 ENDCHAR STARTCHAR greek_small_letter_omicron_with_tonos ENCODING 78 SWIDTH 878 0 DWIDTH 10 0 BBX 8 13 2 0 BITMAP 0c 0c 08 08 00 3c 66 c3 c3 c3 c3 66 3c ENDCHAR STARTCHAR greek_small_letter_eta ENCODING 79 SWIDTH 878 0 DWIDTH 10 0 BBX 9 11 1 -3 BITMAP 6e00 bb00 b180 3180 3180 3180 3180 3180 1180 0180 0080 ENDCHAR STARTCHAR greek_small_letter_delta ENCODING 80 SWIDTH 878 0 DWIDTH 10 0 BBX 8 12 2 0 BITMAP 1c 36 32 18 3c 66 c3 c3 c3 c3 66 3c ENDCHAR STARTCHAR greek_small_letter_lamda ENCODING 81 SWIDTH 878 0 DWIDTH 10 0 BBX 10 12 1 0 BITMAP 6000 b000 3000 1800 1800 1c00 3c00 2600 6600 4300 c340 8180 ENDCHAR STARTCHAR greek_small_letter_xi ENCODING 82 SWIDTH 878 0 DWIDTH 10 0 BBX 8 8 2 0 BITMAP 3c 66 c3 c3 c3 c3 66 3c ENDCHAR STARTCHAR greek_small_letter_phi ENCODING 83 SWIDTH 878 0 DWIDTH 10 0 BBX 9 15 1 -3 BITMAP 0800 0800 0800 0800 3e00 6b00 c980 c980 c980 c980 6b00 3e00 0800 0800 0800 ENDCHAR STARTCHAR greek_dialytika_tonos ENCODING 84 SWIDTH 878 0 DWIDTH 10 0 BBX 8 15 2 0 BITMAP 0c 0c 08 6b 63 00 00 00 00 00 00 00 00 00 00 ENDCHAR STARTCHAR greek_small_letter_alpha ENCODING 85 SWIDTH 878 0 DWIDTH 10 0 BBX 8 15 2 -3 BITMAP 3c 6e c6 c6 cc dc c6 c3 c3 c3 e6 dc c0 c0 80 ENDCHAR STARTCHAR greek_small_letter_kappa ENCODING 86 SWIDTH 878 0 DWIDTH 10 0 BBX 9 8 1 0 BITMAP 6300 e700 6c00 7800 6c00 6600 6300 f180 ENDCHAR STARTCHAR greek_small_letter_xi ENCODING 87 SWIDTH 878 0 DWIDTH 10 0 BBX 7 16 2 -3 BITMAP 30 20 1e 30 30 1e 30 60 c0 c0 c0 70 1c 02 12 1c ENDCHAR STARTCHAR greek_small_letter_tau ENCODING 88 SWIDTH 878 0 DWIDTH 10 0 BBX 9 8 1 0 BITMAP 3f80 7f00 8800 0800 0800 0880 0f00 0600 ENDCHAR STARTCHAR greek_small_letter_upsilon_with_dialytika ENCODING 89 SWIDTH 878 0 DWIDTH 10 0 BBX 9 12 1 0 BITMAP 3300 3300 0000 0000 6300 b180 3180 3180 3180 3180 3300 1e00 ENDCHAR STARTCHAR greek_small_letter_alpha ENCODING 90 SWIDTH 878 0 DWIDTH 10 0 BBX 10 8 1 0 BITMAP 3880 6d80 c500 c700 c600 c600 6f40 3980 ENDCHAR STARTCHAR greek_capital_letter_chi ENCODING 91 SWIDTH 878 0 DWIDTH 10 0 BBX 10 12 1 0 BITMAP f3c0 6180 3300 1200 1e00 0c00 1e00 1600 3300 2300 6180 f3c0 ENDCHAR STARTCHAR greek_small_letter_nu ENCODING 92 SWIDTH 878 0 DWIDTH 10 0 BBX 9 8 1 0 BITMAP e180 6180 3100 3100 1a00 1a00 0c00 0c00 ENDCHAR STARTCHAR greek_small_letter_sigma ENCODING 93 SWIDTH 878 0 DWIDTH 10 0 BBX 9 8 2 0 BITMAP 3f80 6600 c300 c300 c300 c300 6600 3c00 ENDCHAR STARTCHAR greek_small_letter_iota_with_dialytika ENCODING 94 SWIDTH 878 0 DWIDTH 10 0 BBX 8 12 1 0 BITMAP 66 66 00 00 70 98 18 18 18 18 19 0e ENDCHAR STARTCHAR greek_small_letter_rho ENCODING 95 SWIDTH 878 0 DWIDTH 10 0 BBX 8 11 2 -3 BITMAP 3c 66 c3 c3 c3 c3 e6 dc c0 c0 c0 ENDCHAR STARTCHAR greek_small_letter_iota_with_dialytika_and_tonos ENCODING 96 SWIDTH 878 0 DWIDTH 10 0 BBX 8 15 2 0 BITMAP 0c 0c 08 6b 63 00 00 70 98 18 18 18 18 19 0e ENDCHAR STARTCHAR greek_capital_letter_theta ENCODING 97 SWIDTH 878 0 DWIDTH 10 0 BBX 10 12 1 0 BITMAP 1e00 7380 6180 c0c0 d2c0 dec0 dec0 d2c0 c0c0 6180 7380 1e00 ENDCHAR STARTCHAR greek_capital_letter_mu ENCODING 98 SWIDTH 878 0 DWIDTH 10 0 BBX 11 12 0 0 BITMAP e0e0 60c0 71c0 71c0 71c0 5bc0 5ac0 5ec0 4cc0 4cc0 4cc0 e1e0 ENDCHAR STARTCHAR undefined_d2 ENCODING 99 SWIDTH 878 0 DWIDTH 10 0 BBX 8 12 2 0 BITMAP 00 00 00 00 00 00 00 00 00 00 00 00 ENDCHAR STARTCHAR greek_capital_letter_omega ENCODING 100 SWIDTH 878 0 DWIDTH 10 0 BBX 10 12 1 0 BITMAP 1e00 7380 6180 c0c0 c0c0 c0c0 c0c0 6180 3300 9240 f3c0 7380 ENDCHAR STARTCHAR greek_capital_letter_gamma ENCODING 101 SWIDTH 878 0 DWIDTH 10 0 BBX 8 12 2 0 BITMAP ff 61 61 60 60 60 60 60 60 60 60 f8 ENDCHAR STARTCHAR greek_capital_letter_upsilon ENCODING 102 SWIDTH 878 0 DWIDTH 10 0 BBX 10 12 1 0 BITMAP 6180 f3c0 9240 1e00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 3f00 ENDCHAR STARTCHAR greek_capital_letter_eta_with_tonos ENCODING 103 SWIDTH 878 0 DWIDTH 10 0 BBX 10 15 1 0 BITMAP c000 c000 8000 f3c0 6180 6180 6180 6180 7f80 6180 6180 6180 6180 6180 f3c0 ENDCHAR STARTCHAR twosuperior ENCODING 104 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 1c00 3600 0600 0c00 1800 3000 3e00 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR threesuperior ENCODING 105 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 1c00 3600 0200 0e00 0200 3600 1c00 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR undefined_aa ENCODING 106 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR greek_capital_letter_iota_with_tonos ENCODING 107 SWIDTH 878 0 DWIDTH 10 0 BBX 8 15 1 0 BITMAP c0 c0 80 bf 0c 0c 0c 0c 0c 0c 0c 0c 0c 0c 3f ENDCHAR STARTCHAR guillemotleft ENCODING 108 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 0480 0d80 1b00 3600 6c00 d800 6c00 3600 1b00 0d80 0480 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR guillemotright ENCODING 109 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 4800 6c00 3600 1b00 0d80 06c0 0d80 1b00 3600 6c00 4800 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR modifier_letter_reversed_comma ENCODING 110 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 1c00 1c00 0600 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR greek_capital_letter_omega_with_tonos ENCODING 111 SWIDTH 878 0 DWIDTH 10 0 BBX 10 15 1 0 BITMAP c000 c000 8000 9e00 7380 6180 c0c0 c0c0 c0c0 c0c0 6180 3300 9240 f3c0 7380 ENDCHAR STARTCHAR greek_capital_letter_delta ENCODING 112 SWIDTH 878 0 DWIDTH 10 0 BBX 9 12 1 0 BITMAP 1800 1800 1c00 3c00 2c00 2600 6600 4600 4300 c300 ff80 ff80 ENDCHAR STARTCHAR greek_capital_letter_lamda ENCODING 113 SWIDTH 878 0 DWIDTH 10 0 BBX 11 12 0 0 BITMAP 0c00 0c00 0e00 1e00 1300 3300 2180 2180 6180 40c0 40c0 f1e0 ENDCHAR STARTCHAR greek_capital_letter_omicron ENCODING 114 SWIDTH 878 0 DWIDTH 10 0 BBX 10 12 1 0 BITMAP 1e00 7380 6180 c0c0 c0c0 c0c0 c0c0 c0c0 c0c0 6180 7380 1e00 ENDCHAR STARTCHAR greek_capital_letter_upsilon ENCODING 115 SWIDTH 878 0 DWIDTH 10 0 BBX 10 12 1 0 BITMAP 1e00 0c00 3f00 6d80 ccc0 ccc0 ccc0 ccc0 6d80 3f00 0c00 1e00 ENDCHAR STARTCHAR greek_small_letter_alpha_with_tonos ENCODING 116 SWIDTH 878 0 DWIDTH 10 0 BBX 10 14 1 0 BITMAP 0c00 0c00 0800 0800 0000 0000 3880 6d80 c500 c700 c600 c600 6f40 3980 ENDCHAR STARTCHAR greek_capital_letter_beta ENCODING 117 SWIDTH 878 0 DWIDTH 10 0 BBX 9 12 1 0 BITMAP fe00 6700 6300 6300 6600 7e00 6300 6180 6180 6180 6300 fe00 ENDCHAR STARTCHAR greek_capital_letter_kappa ENCODING 118 SWIDTH 878 0 DWIDTH 10 0 BBX 10 12 1 0 BITMAP f3c0 6180 6300 6600 6c00 7c00 7600 6600 6300 6300 6180 f3c0 ENDCHAR STARTCHAR greek_capital_letter_xi ENCODING 119 SWIDTH 878 0 DWIDTH 10 0 BBX 10 14 1 -1 BITMAP 4080 7f80 7f80 4080 0000 1100 1f00 1f00 1100 0000 8040 ffc0 ffc0 8040 ENDCHAR STARTCHAR greek_capital_letter_tau ENCODING 120 SWIDTH 878 0 DWIDTH 10 0 BBX 10 12 1 0 BITMAP ffc0 8c40 8c40 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 3f00 ENDCHAR STARTCHAR greek_capital_letter_upsilon_with_dialytika ENCODING 121 SWIDTH 878 0 DWIDTH 10 0 BBX 10 15 1 0 BITMAP 3300 3300 0000 6180 f3c0 9240 1e00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 3f00 ENDCHAR STARTCHAR greek_capital_letter_alpha ENCODING 122 SWIDTH 878 0 DWIDTH 10 0 BBX 11 12 0 0 BITMAP 0c00 0c00 0e00 1e00 1300 3300 3180 3f80 6180 60c0 40c0 f1e0 ENDCHAR STARTCHAR greek_capital_letter_iota ENCODING 123 SWIDTH 878 0 DWIDTH 10 0 BBX 6 12 3 0 BITMAP fc 30 30 30 30 30 30 30 30 30 30 fc ENDCHAR STARTCHAR greek_capital_letter_nu ENCODING 124 SWIDTH 878 0 DWIDTH 10 0 BBX 10 12 1 0 BITMAP e3c0 6180 7180 7180 6980 6980 6580 6580 6380 6380 6180 f180 ENDCHAR STARTCHAR greek_capital_letter_sigma ENCODING 125 SWIDTH 878 0 DWIDTH 10 0 BBX 8 12 2 0 BITMAP ff c1 e1 60 70 38 30 60 40 c1 81 ff ENDCHAR STARTCHAR greek_capital_letter_iota_with_dialytika ENCODING 126 SWIDTH 878 0 DWIDTH 10 0 BBX 8 15 1 0 BITMAP 33 33 00 3f 0c 0c 0c 0c 0c 0c 0c 0c 0c 0c 3f ENDCHAR STARTCHAR greek_capital_letter_rho ENCODING 127 SWIDTH 878 0 DWIDTH 10 0 BBX 9 12 1 0 BITMAP fe00 6300 6180 6180 6180 6300 7e00 6000 6000 6000 6000 f800 ENDCHAR STARTCHAR a ENCODING 128 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 0000 0000 0000 1f00 3180 0180 3f80 6180 6180 6180 3e80 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR b ENCODING 129 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 6000 6000 6000 6000 6000 6e00 7300 6180 6180 6180 6180 7300 6e00 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR c ENCODING 130 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 0000 0000 0000 1f00 3180 6000 6000 6000 6000 3180 1f00 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR d ENCODING 131 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0180 0180 0180 0180 0180 1d80 3380 6180 6180 6180 6180 3380 1d80 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR e ENCODING 132 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 0000 0000 0000 1e00 3300 6180 7f80 6000 6000 3180 1f00 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR f ENCODING 133 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0f00 1980 1980 1800 1800 1800 1800 7e00 1800 1800 1800 1800 1800 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR g ENCODING 134 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 0000 0000 0000 3e80 6380 6300 6300 6300 3e00 6000 3f00 6180 6180 6180 3f00 0000 ENDCHAR STARTCHAR h ENCODING 135 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 6000 6000 6000 6000 6000 6e00 7300 6180 6180 6180 6180 6180 6180 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR i ENCODING 136 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 0c00 0c00 0000 3c00 0c00 0c00 0c00 0c00 0c00 0c00 7f80 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR j ENCODING 137 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 0180 0180 0000 0780 0180 0180 0180 0180 0180 0180 0180 3180 3180 3180 1f00 0000 ENDCHAR STARTCHAR k ENCODING 138 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 6000 6000 6000 6000 6000 6300 6600 6c00 7800 7c00 6600 6300 6180 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR l ENCODING 139 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 3c00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 7f80 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR m ENCODING 140 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 0000 0000 0000 5b00 7f80 6d80 6d80 6d80 6d80 6d80 6d80 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR n ENCODING 141 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 0000 0000 0000 6e00 7300 6180 6180 6180 6180 6180 6180 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR o ENCODING 142 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 0000 0000 0000 1e00 3300 6180 6180 6180 6180 3300 1e00 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR p ENCODING 143 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 0000 0000 0000 6e00 7300 6180 6180 6180 6180 7300 6e00 6000 6000 6000 6000 0000 ENDCHAR STARTCHAR q ENCODING 144 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 0000 0000 0000 1d80 3380 6180 6180 6180 6180 3380 1d80 0180 0180 0180 0180 0000 ENDCHAR STARTCHAR r ENCODING 145 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 0000 0000 0000 6f00 3980 3000 3000 3000 3000 3000 3000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR s ENCODING 146 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 0000 0000 0000 3f00 6180 6000 3f00 0180 0180 6180 3f00 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR t ENCODING 147 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 1800 1800 1800 7e00 1800 1800 1800 1800 1800 1980 0f00 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR u ENCODING 148 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 0000 0000 0000 6180 6180 6180 6180 6180 6180 3380 1d80 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR v ENCODING 149 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 0000 0000 0000 6180 6180 3300 3300 1e00 1e00 0c00 0c00 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR w ENCODING 150 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 0000 0000 0000 6180 6180 6180 6d80 6d80 6d80 7f80 3300 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR x ENCODING 151 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 0000 0000 0000 6180 3300 1e00 0c00 0c00 1e00 3300 6180 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR y ENCODING 152 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 0000 0000 0000 6180 6180 6180 6180 6180 6180 3380 1d80 0180 6180 3300 1e00 0000 ENDCHAR STARTCHAR z ENCODING 153 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 0000 0000 0000 3f80 0180 0300 0600 0c00 1800 3000 3f80 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR greek_small_letter_zeta ENCODING 154 SWIDTH 878 0 DWIDTH 10 0 BBX 8 16 0 -3 BITMAP 60 33 1f 3e 70 e0 c0 c0 c0 e0 70 38 0c 06 32 3c ENDCHAR STARTCHAR greek_small_letter_psi ENCODING 155 SWIDTH 878 0 DWIDTH 10 0 BBX 11 15 0 -3 BITMAP 0400 0400 0400 0400 c460 64c0 64c0 64c0 64c0 3580 3580 1f00 0400 0400 0400 ENDCHAR STARTCHAR greek_small_letter_epsilon ENCODING 156 SWIDTH 878 0 DWIDTH 10 0 BBX 7 8 2 0 BITMAP 7c c6 c0 78 c0 c0 e2 3c ENDCHAR STARTCHAR greek_small_letter_chi ENCODING 157 SWIDTH 878 0 DWIDTH 10 0 BBX 10 11 1 -3 BITMAP c040 a0c0 3180 1300 1e00 0c00 1e00 3200 6300 c140 80c0 ENDCHAR STARTCHAR fm ENCODING 158 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 0000 0e00 0e00 0000 0000 0000 0000 0e00 0e00 1c00 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR dup ENCODING 159 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 0000 3300 3300 1e00 7f80 1e00 3300 3300 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR A ENCODING 160 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0c00 1e00 3300 3300 6180 6180 6180 7f80 6180 6180 6180 6180 6180 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR B ENCODING 161 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 7c00 6600 6300 6300 6300 6600 7e00 6300 6180 6180 6180 6300 7e00 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR C ENCODING 162 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 1e00 3300 6180 6000 6000 6000 6000 6000 6000 6000 6180 3300 1e00 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR D ENCODING 163 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 7e00 6300 6180 6180 6180 6180 6180 6180 6180 6180 6180 6300 7e00 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR E ENCODING 164 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 7f80 6000 6000 6000 6000 6000 7e00 6000 6000 6000 6000 6000 7f80 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR F ENCODING 165 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 7f80 6000 6000 6000 6000 6000 7e00 6000 6000 6000 6000 6000 6000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR G ENCODING 166 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 1e00 3300 6180 6000 6000 6000 6780 6180 6180 6180 6180 3380 1e80 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR H ENCODING 167 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 6180 6180 6180 6180 6180 6180 7f80 6180 6180 6180 6180 6180 6180 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR I ENCODING 168 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 7f80 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 7f80 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR J ENCODING 169 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0f80 0180 0180 0180 0180 0180 0180 0180 0180 6180 6180 3300 1e00 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR K ENCODING 170 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 6180 6180 6300 6300 6600 6600 7c00 6600 6600 6300 6300 6180 6180 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR L ENCODING 171 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 6000 6000 6000 6000 6000 6000 6000 6000 6000 6000 6000 6000 7f80 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR M ENCODING 172 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 6180 6180 7380 7380 7f80 6d80 6d80 6d80 6d80 6180 6180 6180 6180 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR N ENCODING 173 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 6180 7180 7180 7980 7980 6d80 6d80 6780 6780 6380 6380 6180 6180 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR O ENCODING 174 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 1e00 3300 6180 6180 6180 6180 6180 6180 6180 6180 6180 3300 1e00 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR P ENCODING 175 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 7e00 6300 6180 6180 6180 6180 6300 7e00 6000 6000 6000 6000 6000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR Q ENCODING 176 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 1e00 3300 6180 6180 6180 6180 6180 6180 6180 6d80 6780 3300 1f00 0180 0000 0000 0000 0000 ENDCHAR STARTCHAR R ENCODING 177 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 7e00 6300 6180 6180 6180 6180 6300 7e00 6600 6300 6300 6180 6180 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR S ENCODING 178 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 1e00 3300 6180 6000 6000 3000 1e00 0300 0180 0180 6180 3300 1e00 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR T ENCODING 179 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 7f80 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR U ENCODING 180 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 6180 6180 6180 6180 6180 6180 6180 6180 6180 6180 6180 3300 1e00 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR V ENCODING 181 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 6180 6180 6180 6180 3300 3300 3300 1e00 1e00 1e00 0c00 0c00 0c00 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR W ENCODING 182 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 6180 6180 6180 6180 6180 6d80 6d80 6d80 6d80 7380 7380 6180 6180 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR X ENCODING 183 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 6180 6180 3300 3300 1e00 1e00 0c00 1e00 1e00 3300 3300 6180 6180 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR Y ENCODING 184 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 6180 6180 3300 3300 1e00 1e00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR Z ENCODING 185 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 7f80 0180 0180 0300 0600 0600 0c00 1800 1800 3000 6000 6000 7f80 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR greek_capital_letter_zeta ENCODING 186 SWIDTH 878 0 DWIDTH 10 0 BBX 8 12 2 0 BITMAP ff 83 86 0c 0c 18 30 30 60 c1 c1 ff ENDCHAR STARTCHAR greek_capital_letter_psi ENCODING 187 SWIDTH 878 0 DWIDTH 10 0 BBX 10 12 1 0 BITMAP 1e00 0c00 0c00 0c00 ccc0 6d80 6d80 6d80 3f00 0c00 0c00 3f00 ENDCHAR STARTCHAR greek_capital_letter_epsilon ENCODING 188 SWIDTH 878 0 DWIDTH 10 0 BBX 8 12 2 0 BITMAP ff 61 61 60 62 7e 62 60 60 61 61 ff ENDCHAR STARTCHAR greek_capital_letter_eta ENCODING 189 SWIDTH 878 0 DWIDTH 10 0 BBX 10 12 1 0 BITMAP f3c0 6180 6180 6180 6180 7f80 6180 6180 6180 6180 6180 f3c0 ENDCHAR STARTCHAR semicolon ENCODING 190 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 0000 0e00 0e00 0000 0000 0000 0000 0e00 0e00 1c00 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR asterisk ENCODING 191 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 0000 3300 3300 1e00 7f80 1e00 3300 3300 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR c0 ENCODING 192 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR c1 ENCODING 193 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR c2 ENCODING 194 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR c3 ENCODING 195 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR c4 ENCODING 196 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR c5 ENCODING 197 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR c6 ENCODING 198 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR c7 ENCODING 199 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR c8 ENCODING 200 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR c9 ENCODING 201 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR ca ENCODING 202 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR cb ENCODING 203 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR cc ENCODING 204 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR cd ENCODING 205 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR ce ENCODING 206 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR cf ENCODING 207 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR copyright ENCODING 208 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 1e00 3300 6180 5e80 5280 5080 5280 5e80 6180 3300 1e00 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR undefined_ae ENCODING 209 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR boxA ENCODING 210 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 1800 1800 2400 2400 4200 4200 7e00 4200 4200 4200 0000 ffc0 8040 8040 ffc0 0000 0000 0000 ENDCHAR STARTCHAR insert ENCODING 211 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 0000 0000 0c00 1e00 3f00 7f80 f3c0 e1c0 c0c0 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR boxB ENCODING 212 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 1e00 1100 1100 1100 1f00 1080 1080 1080 1080 1f00 0000 ffc0 8040 8040 ffc0 0000 0000 0000 ENDCHAR STARTCHAR box6 ENCODING 213 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 ffc0 8040 8040 8c40 9240 a040 a040 ac40 b240 a140 a140 a140 9240 8c40 8040 ffc0 0000 0000 0000 ENDCHAR STARTCHAR plusminus ENCODING 214 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 0c00 0c00 7f80 7f80 0c00 0c00 0000 7f80 7f80 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR greek_capital_letter_pi ENCODING 215 SWIDTH 878 0 DWIDTH 10 0 BBX 10 12 1 0 BITMAP ffc0 6180 6180 6180 6180 6180 6180 6180 6180 6180 6180 f3c0 ENDCHAR STARTCHAR rightarrow ENCODING 216 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 0000 0000 0400 0600 0700 ff80 ff80 0700 0600 0400 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR greek_small_letter_eta_with_tonos ENCODING 217 SWIDTH 878 0 DWIDTH 10 0 BBX 9 17 1 -3 BITMAP 0600 0600 0400 0400 0000 0000 6e00 bb00 3180 3180 3180 3180 3180 3180 1180 0180 0080 ENDCHAR STARTCHAR upshift ENCODING 218 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0c00 1200 1200 2100 2100 4080 7380 1200 1200 1200 1200 1200 1200 1200 1e00 0000 0000 0000 ENDCHAR STARTCHAR human ENCODING 219 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 1c00 2200 2200 2200 1c00 0800 7f00 0800 0800 1400 2200 4100 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR underB ENCODING 220 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 3c00 2200 2100 2200 3c00 2200 2100 2100 2200 3c00 0000 ffc0 ffc0 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR downshift ENCODING 221 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 1e00 1200 1200 1200 1200 1200 1200 1200 7380 4080 2100 2100 1200 1200 0c00 0000 0000 0000 ENDCHAR STARTCHAR boxquestion ENCODING 222 SWIDTH 878 0 DWIDTH 10 0 BBX 12 20 0 -5 BITMAP 0000 ffc0 8040 8040 9e40 a140 a140 8140 8240 8440 8840 8840 8040 8840 8840 8040 ffc0 0000 0000 0000 ENDCHAR STARTCHAR boxsolid ENCODING 223 SWIDTH 878 0 DWIDTH 10 0 BBX 12 20 0 -5 BITMAP 0000 ffc0 ffc0 ffc0 ffc0 ffc0 ffc0 ffc0 ffc0 ffc0 ffc0 ffc0 ffc0 ffc0 ffc0 ffc0 ffc0 0000 0000 0000 ENDCHAR STARTCHAR e0 ENCODING 224 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR e1 ENCODING 225 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR e2 ENCODING 226 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR e3 ENCODING 227 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR e4 ENCODING 228 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR e5 ENCODING 229 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR e6 ENCODING 230 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR e7 ENCODING 231 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR e8 ENCODING 232 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR e9 ENCODING 233 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR ea ENCODING 234 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR eb ENCODING 235 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR ec ENCODING 236 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR ed ENCODING 237 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR ee ENCODING 238 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR ef ENCODING 239 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR badcommhi ENCODING 240 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 8000 c000 e000 7000 ffc0 ffc0 0e00 0700 0380 01c0 00c0 0040 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR commhi ENCODING 241 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 0000 0000 0000 ffc0 ffc0 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR commjag ENCODING 242 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 0000 0000 0000 fe00 fe00 0c00 1800 3fc0 3fc0 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR commlo ENCODING 243 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ffc0 ffc0 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR clockleft ENCODING 244 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 0080 0400 0000 1000 0000 0040 2080 0080 0080 1080 0080 0400 0080 0000 0000 0000 ENDCHAR STARTCHAR clockright ENCODING 245 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 2000 0000 2800 4000 8000 0000 0400 0000 0000 0800 0000 2000 0000 0000 0000 0000 ENDCHAR STARTCHAR lock ENCODING 246 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 8040 c0c0 e1c0 f3c0 7f80 3f00 1e00 3f00 7f80 f3c0 e1c0 c0c0 8040 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR greek_small_letter_pi ENCODING 247 SWIDTH 878 0 DWIDTH 10 0 BBX 10 8 1 0 BITMAP 3fc0 7f80 9200 1200 1200 3240 33c0 6180 ENDCHAR STARTCHAR leftarrow ENCODING 248 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 0000 0000 0800 1800 3800 7fc0 7fc0 3800 1800 0800 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR greek_small_letter_omega_with_tonos ENCODING 249 SWIDTH 878 0 DWIDTH 10 0 BBX 10 13 1 0 BITMAP 0c00 0c00 0800 0800 0000 6100 c080 80c0 8cc0 8cc0 ccc0 ffc0 7380 ENDCHAR STARTCHAR keyleft ENCODING 250 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 0000 0000 0e00 1f00 3180 31c0 3180 1f00 0e00 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR keyright ENCODING 251 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 ff80 1d80 1d80 0180 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR box4 ENCODING 252 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 ffc0 8040 8040 8240 8640 8a40 9240 a240 a240 bf40 8240 8240 8240 8240 8040 ffc0 0000 0000 0000 ENDCHAR STARTCHAR underA ENCODING 253 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0c00 0c00 1200 1200 2100 3f00 2100 2100 2100 0000 ffc0 ffc0 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR magcard ENCODING 254 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 0000 ffc0 8040 8040 8040 8040 ffc0 8040 8040 ffc0 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR boxhuman ENCODING 255 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 ffc0 8040 8e40 9140 9140 8e40 8440 bfc0 8440 8440 8440 8440 8a40 9140 a0c0 ffc0 0000 0000 0000 ENDCHAR STARTCHAR apl_space ENCODING 272 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR apl_bracketright ENCODING 316 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 3f00 0300 0300 0300 0300 0300 0300 0300 0300 0300 0300 0300 3f00 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR apl_bracketleft ENCODING 328 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 3f00 3000 3000 3000 3000 3000 3000 3000 3000 3000 3000 3000 3f00 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR apl_stile ENCODING 347 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 ENDCHAR STARTCHAR apl_2vertical ENCODING 384 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 6180 6180 6180 6180 6180 6180 6180 6180 6180 6180 6180 6180 6180 6180 6180 6180 6180 6180 6180 6180 ENDCHAR STARTCHAR apl_2horizontal ENCODING 385 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 ffc0 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ffc0 0000 0000 ENDCHAR STARTCHAR apl_leftvbar ENCODING 386 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 6000 6000 6000 6000 6000 6000 6000 6000 6000 6000 6000 6000 6000 6000 6000 6000 6000 6000 6000 6000 ENDCHAR STARTCHAR apl_rightvbar ENCODING 387 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0180 0180 0180 0180 0180 0180 0180 0180 0180 0180 0180 0180 0180 0180 0180 0180 0180 0180 0180 0180 ENDCHAR STARTCHAR apl_midvbar ENCODING 388 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 ENDCHAR STARTCHAR apl_leftsolid ENCODING 393 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP fc00 fc00 fc00 fc00 fc00 fc00 fc00 fc00 fc00 fc00 fc00 fc00 fc00 fc00 fc00 fc00 fc00 fc00 fc00 fc00 ENDCHAR STARTCHAR apl_rightsolid ENCODING 394 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 07c0 07c0 07c0 07c0 07c0 07c0 07c0 07c0 07c0 07c0 07c0 07c0 07c0 07c0 07c0 07c0 07c0 07c0 07c0 07c0 ENDCHAR STARTCHAR apl_topsolid ENCODING 395 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP ffc0 ffc0 ffc0 ffc0 ffc0 ffc0 ffc0 ffc0 ffc0 ffc0 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR apl_bottomsolid ENCODING 396 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ffc0 ffc0 ffc0 ffc0 ffc0 ffc0 ffc0 ffc0 ffc0 ffc0 ENDCHAR STARTCHAR apl_solid ENCODING 397 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP ffc0 ffc0 ffc0 ffc0 ffc0 ffc0 ffc0 ffc0 ffc0 ffc0 ffc0 ffc0 ffc0 ffc0 ffc0 ffc0 ffc0 ffc0 ffc0 ffc0 ENDCHAR STARTCHAR apl_midhbar ENCODING 402 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 ffc0 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR apl_lowerleft ENCODING 419 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0fc0 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR apl_upperleft ENCODING 420 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0fc0 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 ENDCHAR STARTCHAR apl_leftjoin ENCODING 421 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0fc0 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 ENDCHAR STARTCHAR apl_bottomjoin ENCODING 422 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 ffc0 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR apl_intersect ENCODING 427 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 ffc0 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 ENDCHAR STARTCHAR apl_lowerright ENCODING 428 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 fc00 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR apl_upperright ENCODING 429 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 fc00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 ENDCHAR STARTCHAR apl_rightjoin ENCODING 430 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 fc00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 ENDCHAR STARTCHAR apl_topjoin ENCODING 431 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 ffc0 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 ENDCHAR STARTCHAR 200 ENCODING 512 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR 201 ENCODING 513 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 0000 0c00 1e00 3f00 7f80 7f80 3f00 1e00 0c00 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR 202 ENCODING 514 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 5540 aa80 5540 aa80 5540 aa80 5540 aa80 5540 aa80 5540 aa80 5540 aa80 5540 aa80 5540 aa80 5540 aa80 ENDCHAR STARTCHAR 203 ENCODING 515 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 6600 6600 6600 7e00 6600 6600 6600 0000 1f80 0600 0600 0600 0600 0600 0000 0000 ENDCHAR STARTCHAR 204 ENCODING 516 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 7c00 6000 6000 7800 6000 6000 6000 0f80 0c00 0c00 0f00 0c00 0c00 0c00 0000 0000 ENDCHAR STARTCHAR 205 ENCODING 517 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 3c00 6600 6000 6000 6600 3c00 0000 1f00 1980 1980 1f00 1e00 1b00 1980 0000 0000 ENDCHAR STARTCHAR 206 ENCODING 518 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 3000 3000 3000 3000 3000 3e00 0000 0f80 0c00 0c00 0f00 0c00 0c00 0c00 0000 0000 ENDCHAR STARTCHAR 207 ENCODING 519 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 1e00 3300 3300 3300 1e00 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR 208 ENCODING 520 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0c00 0c00 7f80 0c00 0c00 0000 7f80 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR 209 ENCODING 521 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 6600 7600 7e00 7e00 6e00 6600 0000 0c00 0c00 0c00 0c00 0c00 0c00 0f80 0000 0000 ENDCHAR STARTCHAR 20a ENCODING 522 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 6600 6600 6600 3c00 3c00 1800 1800 0000 1f80 0600 0600 0600 0600 0600 0000 0000 ENDCHAR STARTCHAR 20b ENCODING 523 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 fc00 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR 20c ENCODING 524 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 fc00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 ENDCHAR STARTCHAR 20d ENCODING 525 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0fc0 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 ENDCHAR STARTCHAR 20e ENCODING 526 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0fc0 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR 20f ENCODING 527 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 ffc0 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 ENDCHAR STARTCHAR 210 ENCODING 528 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 ffc0 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR 211 ENCODING 529 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 0000 0000 ffc0 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR 212 ENCODING 530 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 ffc0 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR 213 ENCODING 531 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ffc0 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR 214 ENCODING 532 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ffc0 0000 0000 0000 0000 ENDCHAR STARTCHAR 215 ENCODING 533 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0fc0 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 ENDCHAR STARTCHAR 216 ENCODING 534 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 fc00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 ENDCHAR STARTCHAR 217 ENCODING 535 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 ffc0 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR 218 ENCODING 536 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 ffc0 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 ENDCHAR STARTCHAR 219 ENCODING 537 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 ENDCHAR STARTCHAR 21a ENCODING 538 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 0000 01c0 0700 1c00 7000 1c00 0700 01c0 0000 0000 7fc0 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR 21b ENCODING 539 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 0000 7000 1c00 0700 01c0 0700 1c00 7000 0000 0000 7fc0 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR 21c ENCODING 540 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 0000 0000 0000 0080 3f80 5b00 1b00 1b00 1b00 1b00 3300 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR 21d ENCODING 541 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 0000 0000 0180 0300 7fc0 0600 0c00 7fc0 1800 3000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR 21e ENCODING 542 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0f00 1980 1980 1800 1800 1800 7e00 1800 1800 1800 7c00 56c0 7380 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR 21f ENCODING 543 SWIDTH 878 0 DWIDTH 10 0 BBX 10 20 0 -5 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0c00 0c00 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR ENDFONT suite3270-4.1/x3270/3270gt12.bdf000066400000000000000000001157271413735575200154050ustar00rootroot00000000000000STARTFONT 2.1 COMMENT "20-point 3270 font" COMMENT "Uses nonstandard ordering:" COMMENT " Page 0: EBCDIC US-International set, CG order" COMMENT " Page 1: EBCDIC APL/APL2 set, CG order (incomplete)" COMMENT " Page 2: (first 16 characters only) DEC line-drawing characters from" COMMENT " fixed-width X fonts" COMMENT "" COMMENT "Copyright (c) 1993-2009, Paul Mattes." COMMENT "Copyright (c) 1989, Georgia Tech Research Corporation (GTRC)," COMMENT " Atlanta, GA 30332." COMMENT "All rights reserved." COMMENT "" COMMENT "Redistribution and use in source and binary forms, with or" COMMENT "without modification, are permitted provided that the following" COMMENT "conditions are met:" COMMENT " * Redistributions of source code must retain the above" COMMENT " copyright notice, this list of conditions and the following" COMMENT " disclaimer." COMMENT " * Redistributions in binary form must reproduce the above" COMMENT " copyright notice, this list of conditions and the following" COMMENT " disclaimer in the documentation and/or other materials" COMMENT " provided with the distribution." COMMENT " * Neither the names of Paul Mattes, GTRC nor their" COMMENT " contributors may be used to endorse or promote products" COMMENT " derived from this software without specific prior written" COMMENT " permission." COMMENT "" COMMENT "THIS SOFTWARE IS PROVIDED BY PAUL MATTES AND GTRC 'AS IS' AND" COMMENT "ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED" COMMENT "TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR" COMMENT "A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL PAUL" COMMENT "MATTES OR GTRC BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL," COMMENT "SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT" COMMENT "NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;" COMMENT "LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER" COMMENT "CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT," COMMENT "STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)" COMMENT "ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF" COMMENT "ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." FONT 3270gt12 SIZE 12 72 72 FONTBOUNDINGBOX 7 12 0 -3 STARTPROPERTIES 27 FOUNDRY "GaTech" FAMILY_NAME "3270" WEIGHT_NAME "Medium" SLANT "R" SETWIDTH_NAME "Normal" ADD_STYLE_NAME "" PIXEL_SIZE 12 POINT_SIZE 120 RESOLUTION_X 72 RESOLUTION_Y 72 SPACING "C" AVERAGE_WIDTH 70 CHARSET_REGISTRY "3270cg" CHARSET_ENCODING "1" MIN_SPACE 7 NORM_SPACE 7 MAX_SPACE 7 END_SPACE 7 AVG_CAPITAL_WIDTH 70 AVG_LOWERCASE_WIDTH 70 CAP_HEIGHT 7 X_HEIGHT 5 RELATIVE_WEIGHT 50 DESTINATION "Video Text" FONT_ASCENT 9 FONT_DESCENT 3 DEFAULT_CHAR 514 ENDPROPERTIES CHARS 312 STARTCHAR null ENCODING 0 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 00 00 00 00 00 00 00 00 00 00 00 ENDCHAR STARTCHAR nobreakspace ENCODING 1 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 00 00 00 00 00 00 00 00 00 00 00 ENDCHAR STARTCHAR euro ENCODING 2 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 18 24 20 78 20 78 20 24 18 00 00 ENDCHAR STARTCHAR cr ENCODING 3 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 00 00 00 00 00 00 00 00 00 00 00 ENDCHAR STARTCHAR nl ENCODING 4 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 00 00 00 00 00 00 00 00 00 00 00 ENDCHAR STARTCHAR em ENCODING 5 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 00 00 00 00 00 00 00 00 00 00 00 ENDCHAR STARTCHAR eightones ENCODING 6 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 00 00 38 7c 7c 7c 38 00 00 00 00 ENDCHAR STARTCHAR hyphen ENCODING 7 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 00 00 00 00 7c 00 00 00 00 00 00 ENDCHAR STARTCHAR greater ENCODING 8 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 00 20 10 08 04 08 10 20 00 00 00 ENDCHAR STARTCHAR less ENCODING 9 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 00 08 10 20 40 20 10 08 00 00 00 ENDCHAR STARTCHAR bracketleft ENCODING 10 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 38 20 20 20 20 20 20 20 38 00 00 ENDCHAR STARTCHAR bracketright ENCODING 11 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 38 08 08 08 08 08 08 08 38 00 00 ENDCHAR STARTCHAR parenright ENCODING 12 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 20 10 08 08 08 08 08 10 20 00 00 ENDCHAR STARTCHAR parenleft ENCODING 13 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 08 10 20 20 20 20 20 10 08 00 00 ENDCHAR STARTCHAR braceright ENCODING 14 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 20 10 10 10 08 10 10 10 20 00 00 ENDCHAR STARTCHAR braceleft ENCODING 15 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 08 10 10 10 20 10 10 10 08 00 00 ENDCHAR STARTCHAR space ENCODING 16 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 00 00 00 00 00 00 00 00 00 00 00 ENDCHAR STARTCHAR equal ENCODING 17 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 00 00 00 7c 00 7c 00 00 00 00 00 ENDCHAR STARTCHAR apostrophe ENCODING 18 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 10 10 00 00 00 00 00 00 00 00 00 ENDCHAR STARTCHAR quotedbl ENCODING 19 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 28 28 00 00 00 00 00 00 00 00 00 ENDCHAR STARTCHAR slash ENCODING 20 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 04 04 08 08 10 10 20 20 40 00 00 ENDCHAR STARTCHAR backslash ENCODING 21 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 40 40 20 20 10 10 08 08 04 00 00 ENDCHAR STARTCHAR bar ENCODING 22 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 10 10 10 10 10 10 10 10 10 10 00 ENDCHAR STARTCHAR brokenbar ENCODING 23 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 10 10 10 10 00 00 10 10 10 10 00 ENDCHAR STARTCHAR question ENCODING 24 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 38 44 04 08 10 10 00 10 10 00 00 ENDCHAR STARTCHAR exclam ENCODING 25 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 10 10 10 10 10 10 00 10 10 00 00 ENDCHAR STARTCHAR dollar ENCODING 26 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 10 3c 50 50 38 14 14 78 10 00 00 ENDCHAR STARTCHAR cent ENCODING 27 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 00 10 3c 50 50 3c 10 00 00 00 00 ENDCHAR STARTCHAR sterling ENCODING 28 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 10 28 20 78 20 20 24 58 00 00 00 ENDCHAR STARTCHAR yen ENCODING 29 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 44 28 10 7c 10 7c 10 10 00 00 00 ENDCHAR STARTCHAR paragraph ENCODING 30 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 70 48 48 70 40 48 5c 48 08 00 00 ENDCHAR STARTCHAR currency ENCODING 31 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 00 44 28 38 28 38 28 44 00 00 00 ENDCHAR STARTCHAR 0 ENCODING 32 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 38 44 44 54 54 44 44 38 00 00 00 ENDCHAR STARTCHAR 1 ENCODING 33 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 08 18 28 08 08 08 08 08 00 00 00 ENDCHAR STARTCHAR 2 ENCODING 34 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 38 44 04 04 08 10 20 7c 00 00 00 ENDCHAR STARTCHAR 3 ENCODING 35 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 7c 04 08 18 04 04 04 78 00 00 00 ENDCHAR STARTCHAR 4 ENCODING 36 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 18 18 28 28 48 7c 08 08 00 00 00 ENDCHAR STARTCHAR 5 ENCODING 37 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 7c 40 40 78 04 04 04 78 00 00 00 ENDCHAR STARTCHAR 6 ENCODING 38 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 10 20 40 78 44 44 44 38 00 00 00 ENDCHAR STARTCHAR 7 ENCODING 39 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 7c 04 08 10 20 20 20 20 00 00 00 ENDCHAR STARTCHAR 8 ENCODING 40 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 38 44 44 38 44 44 44 38 00 00 00 ENDCHAR STARTCHAR 9 ENCODING 41 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 38 44 44 4c 34 04 04 08 00 00 00 ENDCHAR STARTCHAR ssharp ENCODING 42 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 30 48 48 50 48 44 64 58 00 00 00 ENDCHAR STARTCHAR section ENCODING 43 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 18 20 20 50 48 24 14 08 08 30 00 ENDCHAR STARTCHAR numbersign ENCODING 44 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 00 28 7c 28 7c 28 00 00 00 00 00 ENDCHAR STARTCHAR at ENCODING 45 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 38 44 54 6c 78 40 40 3c 00 00 00 ENDCHAR STARTCHAR percent ENCODING 46 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 20 50 24 08 10 20 48 14 08 00 00 ENDCHAR STARTCHAR underscore ENCODING 47 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 00 00 00 00 00 00 00 00 7c 00 00 ENDCHAR STARTCHAR ampersand ENCODING 48 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 20 50 50 20 60 54 48 38 04 00 00 ENDCHAR STARTCHAR minus ENCODING 49 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 00 00 00 00 7c 00 00 00 00 00 00 ENDCHAR STARTCHAR period ENCODING 50 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 00 00 00 00 00 00 00 10 10 00 00 ENDCHAR STARTCHAR comma ENCODING 51 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 00 00 00 00 00 00 00 10 10 20 00 ENDCHAR STARTCHAR colon ENCODING 52 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 00 00 00 10 10 00 00 10 10 00 00 ENDCHAR STARTCHAR plus ENCODING 53 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 00 00 10 10 7c 10 10 00 00 00 00 ENDCHAR STARTCHAR notsign ENCODING 54 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 7c 04 04 00 00 00 00 00 00 00 00 ENDCHAR STARTCHAR macron ENCODING 55 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 00 7c 00 00 00 00 00 00 00 00 00 ENDCHAR STARTCHAR degree ENCODING 56 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 10 28 10 00 00 00 00 00 00 00 00 ENDCHAR STARTCHAR periodcentered ENCODING 57 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 00 00 00 10 10 00 00 00 00 00 00 ENDCHAR STARTCHAR asciicircum ENCODING 58 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 10 28 00 00 00 00 00 00 00 00 00 00 ENDCHAR STARTCHAR asciitilde ENCODING 59 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 34 58 00 00 00 00 00 00 00 00 00 00 ENDCHAR STARTCHAR diaeresis ENCODING 60 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 28 00 00 00 00 00 00 00 00 00 00 ENDCHAR STARTCHAR grave ENCODING 61 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 20 10 00 00 00 00 00 00 00 00 00 00 ENDCHAR STARTCHAR acute ENCODING 62 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 08 10 00 00 00 00 00 00 00 00 00 00 ENDCHAR STARTCHAR cedilla ENCODING 63 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 00 00 00 00 00 00 00 00 10 30 00 ENDCHAR STARTCHAR agrave ENCODING 64 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 20 10 00 38 04 3c 44 3c 00 00 00 ENDCHAR STARTCHAR egrave ENCODING 65 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 20 10 00 38 44 7c 40 38 00 00 00 ENDCHAR STARTCHAR igrave ENCODING 66 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 20 10 00 10 10 10 10 10 00 00 00 ENDCHAR STARTCHAR ograve ENCODING 67 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 20 10 00 38 44 44 44 38 00 00 00 ENDCHAR STARTCHAR ugrave ENCODING 68 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 20 10 00 44 44 44 44 3c 00 00 00 ENDCHAR STARTCHAR atilde ENCODING 69 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 34 58 00 38 04 3c 44 3c 00 00 00 ENDCHAR STARTCHAR otilde ENCODING 70 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 34 58 00 38 44 44 44 38 00 00 00 ENDCHAR STARTCHAR ydiaeresis ENCODING 71 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 00 28 00 44 44 44 44 3c 04 38 00 ENDCHAR STARTCHAR Yacute ENCODING 72 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 08 10 44 44 28 10 10 10 10 00 00 00 ENDCHAR STARTCHAR yacute ENCODING 73 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 08 10 00 44 44 44 44 3c 04 38 00 ENDCHAR STARTCHAR eacute ENCODING 74 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 08 10 00 38 44 7c 40 38 00 00 00 ENDCHAR STARTCHAR onequarter ENCODING 75 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 20 60 20 20 20 14 14 1c 04 04 00 ENDCHAR STARTCHAR onehalf ENCODING 76 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 20 60 20 20 20 18 04 08 10 1c 00 ENDCHAR STARTCHAR threequarters ENCODING 77 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 60 10 20 10 60 14 14 1c 04 04 00 ENDCHAR STARTCHAR udiaeresis ENCODING 78 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 00 28 00 44 44 44 44 3c 00 00 00 ENDCHAR STARTCHAR ccedilla ENCODING 79 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 00 00 00 3c 40 40 40 3c 10 30 00 ENDCHAR STARTCHAR adiaeresis ENCODING 80 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 00 28 00 38 04 3c 44 3c 00 00 00 ENDCHAR STARTCHAR ediaeresis ENCODING 81 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 00 28 00 38 44 7c 40 38 00 00 00 ENDCHAR STARTCHAR idiaeresis ENCODING 82 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 00 28 00 10 10 10 10 10 00 00 00 ENDCHAR STARTCHAR odiaeresis ENCODING 83 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 00 28 00 38 44 44 44 38 00 00 00 ENDCHAR STARTCHAR mu ENCODING 84 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 00 00 00 44 44 44 44 78 40 40 40 ENDCHAR STARTCHAR acircumflex ENCODING 85 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 10 28 00 38 04 3c 44 3c 00 00 00 ENDCHAR STARTCHAR ecircumflex ENCODING 86 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 10 28 00 38 44 7c 40 38 00 00 00 ENDCHAR STARTCHAR icircumflex ENCODING 87 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 10 28 00 10 10 10 10 10 00 00 00 ENDCHAR STARTCHAR ocircumflex ENCODING 88 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 10 28 00 38 44 44 44 38 00 00 00 ENDCHAR STARTCHAR ucircumflex ENCODING 89 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 10 28 00 44 44 44 44 3c 00 00 00 ENDCHAR STARTCHAR aacute ENCODING 90 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 08 10 00 38 04 3c 44 3c 00 00 00 ENDCHAR STARTCHAR multiply ENCODING 91 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 00 00 44 28 10 28 44 00 00 00 00 ENDCHAR STARTCHAR iacute ENCODING 92 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 08 10 00 10 10 10 10 10 00 00 00 ENDCHAR STARTCHAR oacute ENCODING 93 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 08 10 00 38 44 44 44 38 00 00 00 ENDCHAR STARTCHAR uacute ENCODING 94 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 08 10 00 44 44 44 44 3c 00 00 00 ENDCHAR STARTCHAR ntilde ENCODING 95 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 34 58 00 78 44 44 44 44 00 00 00 ENDCHAR STARTCHAR Agrave ENCODING 96 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 20 10 10 28 44 44 7c 44 44 00 00 00 ENDCHAR STARTCHAR Egrave ENCODING 97 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 20 10 7c 40 40 78 40 40 7c 00 00 00 ENDCHAR STARTCHAR Igrave ENCODING 98 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 20 10 38 10 10 10 10 10 38 00 00 00 ENDCHAR STARTCHAR Ograve ENCODING 99 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 20 10 38 44 44 44 44 44 38 00 00 00 ENDCHAR STARTCHAR Ugrave ENCODING 100 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 20 10 44 44 44 44 44 44 38 00 00 00 ENDCHAR STARTCHAR Atilde ENCODING 101 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 34 58 10 28 44 44 7c 44 44 00 00 00 ENDCHAR STARTCHAR Otilde ENCODING 102 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 34 58 38 44 44 44 44 44 38 00 00 00 ENDCHAR STARTCHAR onesuperior ENCODING 103 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 10 30 10 10 10 00 00 00 00 00 00 ENDCHAR STARTCHAR twosuperior ENCODING 104 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 30 08 10 20 38 00 00 00 00 00 00 ENDCHAR STARTCHAR threesuperior ENCODING 105 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 30 08 10 08 30 00 00 00 00 00 00 ENDCHAR STARTCHAR ordfeminine ENCODING 106 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 38 04 3c 44 3c 00 7c 00 00 00 00 ENDCHAR STARTCHAR masculine ENCODING 107 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 38 44 44 44 38 00 7c 00 00 00 00 ENDCHAR STARTCHAR guillemotleft ENCODING 108 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 00 00 12 24 48 24 12 00 00 00 00 ENDCHAR STARTCHAR guillemotright ENCODING 109 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 00 00 90 48 24 48 90 00 00 00 00 ENDCHAR STARTCHAR exclamdown ENCODING 110 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 10 10 00 10 10 10 10 10 10 00 00 ENDCHAR STARTCHAR questiondown ENCODING 111 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 10 10 00 10 10 20 40 44 38 00 00 ENDCHAR STARTCHAR Adiaeresis ENCODING 112 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 28 00 10 28 44 44 7c 44 44 00 00 00 ENDCHAR STARTCHAR Ediaeresis ENCODING 113 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 28 00 7c 40 40 78 40 40 7c 00 00 00 ENDCHAR STARTCHAR Idiaeresis ENCODING 114 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 28 00 38 10 10 10 10 10 38 00 00 00 ENDCHAR STARTCHAR Odiaeresis ENCODING 115 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 28 00 38 44 44 44 44 44 38 00 00 00 ENDCHAR STARTCHAR Udiaeresis ENCODING 116 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 28 00 44 44 44 44 44 44 38 00 00 00 ENDCHAR STARTCHAR Acircumflex ENCODING 117 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 10 28 10 28 44 44 7c 44 44 00 00 00 ENDCHAR STARTCHAR Ecircumflex ENCODING 118 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 10 28 7c 40 40 78 40 40 7c 00 00 00 ENDCHAR STARTCHAR Icircumflex ENCODING 119 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 10 28 38 10 10 10 10 10 38 00 00 00 ENDCHAR STARTCHAR Ocircumflex ENCODING 120 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 10 28 38 44 44 44 44 44 38 00 00 00 ENDCHAR STARTCHAR Ucircumflex ENCODING 121 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 10 28 44 44 44 44 44 44 38 00 00 00 ENDCHAR STARTCHAR Aacute ENCODING 122 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 08 10 10 28 44 44 7c 44 44 00 00 00 ENDCHAR STARTCHAR Eacute ENCODING 123 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 08 10 7c 40 40 78 40 40 7c 00 00 00 ENDCHAR STARTCHAR Iacute ENCODING 124 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 08 10 38 10 10 10 10 10 38 00 00 00 ENDCHAR STARTCHAR Oacute ENCODING 125 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 08 10 38 44 44 44 44 44 38 00 00 00 ENDCHAR STARTCHAR Uacute ENCODING 126 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 08 10 44 44 44 44 44 44 38 00 00 00 ENDCHAR STARTCHAR Ntilde ENCODING 127 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 34 58 44 64 54 4c 44 44 44 00 00 00 ENDCHAR STARTCHAR a ENCODING 128 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 00 00 00 38 04 3c 44 3c 00 00 00 ENDCHAR STARTCHAR b ENCODING 129 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 40 40 40 78 44 44 44 78 00 00 00 ENDCHAR STARTCHAR c ENCODING 130 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 00 00 00 3c 40 40 40 3c 00 00 00 ENDCHAR STARTCHAR d ENCODING 131 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 04 04 04 3c 44 44 44 3c 00 00 00 ENDCHAR STARTCHAR e ENCODING 132 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 00 00 00 38 44 7c 40 38 00 00 00 ENDCHAR STARTCHAR f ENCODING 133 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 0c 10 10 7c 10 10 10 10 00 00 00 ENDCHAR STARTCHAR g ENCODING 134 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 00 00 00 3c 44 44 44 3c 04 38 00 ENDCHAR STARTCHAR h ENCODING 135 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 40 40 40 58 64 44 44 44 00 00 00 ENDCHAR STARTCHAR i ENCODING 136 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 00 10 00 10 10 10 10 10 00 00 00 ENDCHAR STARTCHAR j ENCODING 137 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 00 04 00 04 04 04 04 04 44 38 00 ENDCHAR STARTCHAR k ENCODING 138 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 40 40 40 44 48 50 68 44 00 00 00 ENDCHAR STARTCHAR l ENCODING 139 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 10 10 10 10 10 10 10 08 00 00 00 ENDCHAR STARTCHAR m ENCODING 140 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 00 00 00 78 54 54 54 54 00 00 00 ENDCHAR STARTCHAR n ENCODING 141 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 00 00 00 78 44 44 44 44 00 00 00 ENDCHAR STARTCHAR o ENCODING 142 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 00 00 00 38 44 44 44 38 00 00 00 ENDCHAR STARTCHAR p ENCODING 143 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 00 00 00 78 44 44 44 78 40 40 00 ENDCHAR STARTCHAR q ENCODING 144 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 00 00 00 3c 44 44 44 3c 04 04 00 ENDCHAR STARTCHAR r ENCODING 145 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 00 00 00 58 64 40 40 40 00 00 00 ENDCHAR STARTCHAR s ENCODING 146 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 00 00 00 3c 40 38 04 78 00 00 00 ENDCHAR STARTCHAR t ENCODING 147 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 10 10 10 7c 10 10 10 18 00 00 00 ENDCHAR STARTCHAR u ENCODING 148 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 00 00 00 44 44 44 44 3c 00 00 00 ENDCHAR STARTCHAR v ENCODING 149 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 00 00 00 44 44 28 28 10 00 00 00 ENDCHAR STARTCHAR w ENCODING 150 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 00 00 00 44 44 54 54 28 00 00 00 ENDCHAR STARTCHAR x ENCODING 151 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 00 00 00 44 28 10 28 44 00 00 00 ENDCHAR STARTCHAR y ENCODING 152 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 00 00 00 44 44 44 44 3c 04 38 00 ENDCHAR STARTCHAR z ENCODING 153 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 00 00 00 7c 08 10 20 7c 00 00 00 ENDCHAR STARTCHAR ae ENCODING 154 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 00 00 00 78 14 3c 50 7c 00 00 00 ENDCHAR STARTCHAR oslash ENCODING 155 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 00 00 00 3c 4c 54 64 78 00 00 00 ENDCHAR STARTCHAR aring ENCODING 156 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 38 38 00 38 04 3c 44 3c 00 00 00 ENDCHAR STARTCHAR division ENCODING 157 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 00 10 10 00 7c 00 10 10 00 00 00 ENDCHAR STARTCHAR fm ENCODING 158 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 7c 00 00 10 10 00 00 10 10 20 00 ENDCHAR STARTCHAR dup ENCODING 159 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 7c 00 10 54 38 38 54 10 00 00 00 ENDCHAR STARTCHAR A ENCODING 160 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 10 28 44 44 7c 44 44 44 00 00 00 ENDCHAR STARTCHAR B ENCODING 161 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 78 44 44 78 44 44 44 78 00 00 00 ENDCHAR STARTCHAR C ENCODING 162 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 18 24 40 40 40 40 24 18 00 00 00 ENDCHAR STARTCHAR D ENCODING 163 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 78 44 44 44 44 44 44 78 00 00 00 ENDCHAR STARTCHAR E ENCODING 164 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 7c 40 40 78 40 40 40 7c 00 00 00 ENDCHAR STARTCHAR F ENCODING 165 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 7c 40 40 78 40 40 40 40 00 00 00 ENDCHAR STARTCHAR G ENCODING 166 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 38 44 40 4c 44 44 44 38 00 00 00 ENDCHAR STARTCHAR H ENCODING 167 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 44 44 44 7c 44 44 44 44 00 00 00 ENDCHAR STARTCHAR I ENCODING 168 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 38 10 10 10 10 10 10 38 00 00 00 ENDCHAR STARTCHAR J ENCODING 169 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 1c 08 08 08 08 48 48 30 00 00 00 ENDCHAR STARTCHAR K ENCODING 170 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 44 48 50 60 60 50 48 44 00 00 00 ENDCHAR STARTCHAR L ENCODING 171 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 40 40 40 40 40 40 40 7c 00 00 00 ENDCHAR STARTCHAR M ENCODING 172 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 44 6c 54 54 44 44 44 44 00 00 00 ENDCHAR STARTCHAR N ENCODING 173 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 44 64 54 54 4c 44 44 44 00 00 00 ENDCHAR STARTCHAR O ENCODING 174 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 38 44 44 44 44 44 44 38 00 00 00 ENDCHAR STARTCHAR P ENCODING 175 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 78 44 44 78 40 40 40 40 00 00 00 ENDCHAR STARTCHAR Q ENCODING 176 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 38 44 44 44 44 44 54 38 08 04 00 ENDCHAR STARTCHAR R ENCODING 177 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 78 44 44 78 50 48 48 44 00 00 00 ENDCHAR STARTCHAR S ENCODING 178 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 38 44 40 38 04 04 44 38 00 00 00 ENDCHAR STARTCHAR T ENCODING 179 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 7c 10 10 10 10 10 10 10 00 00 00 ENDCHAR STARTCHAR U ENCODING 180 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 44 44 44 44 44 44 44 38 00 00 00 ENDCHAR STARTCHAR V ENCODING 181 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 44 44 44 28 28 28 10 10 00 00 00 ENDCHAR STARTCHAR W ENCODING 182 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 44 44 44 44 54 54 54 28 00 00 00 ENDCHAR STARTCHAR X ENCODING 183 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 44 44 28 10 10 28 44 44 00 00 00 ENDCHAR STARTCHAR Y ENCODING 184 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 44 44 28 10 10 10 10 10 00 00 00 ENDCHAR STARTCHAR Z ENCODING 185 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 7c 04 08 10 10 20 40 7c 00 00 00 ENDCHAR STARTCHAR AE ENCODING 186 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 3c 50 50 7c 50 50 50 5c 00 00 00 ENDCHAR STARTCHAR Ooblique ENCODING 187 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 38 4c 4c 54 54 64 64 38 00 00 00 ENDCHAR STARTCHAR Aring ENCODING 188 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 38 38 10 28 44 44 7c 44 44 00 00 00 ENDCHAR STARTCHAR Ccedilla ENCODING 189 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 18 24 40 40 40 40 24 18 08 38 00 ENDCHAR STARTCHAR semicolon ENCODING 190 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 00 00 00 10 10 00 00 10 10 20 00 ENDCHAR STARTCHAR asterisk ENCODING 191 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 00 10 54 38 38 54 10 00 00 00 00 ENDCHAR STARTCHAR c0 ENCODING 192 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 00 00 00 00 00 00 00 00 00 00 00 ENDCHAR STARTCHAR c1 ENCODING 193 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 00 00 00 00 00 00 00 00 00 00 00 ENDCHAR STARTCHAR c2 ENCODING 194 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 00 00 00 00 00 00 00 00 00 00 00 ENDCHAR STARTCHAR c3 ENCODING 195 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 00 00 00 00 00 00 00 00 00 00 00 ENDCHAR STARTCHAR c4 ENCODING 196 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 00 00 00 00 00 00 00 00 00 00 00 ENDCHAR STARTCHAR c5 ENCODING 197 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 00 00 00 00 00 00 00 00 00 00 00 ENDCHAR STARTCHAR c6 ENCODING 198 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 00 00 00 00 00 00 00 00 00 00 00 ENDCHAR STARTCHAR c7 ENCODING 199 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 00 00 00 00 00 00 00 00 00 00 00 ENDCHAR STARTCHAR c8 ENCODING 200 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 00 00 00 00 00 00 00 00 00 00 00 ENDCHAR STARTCHAR c9 ENCODING 201 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 00 00 00 00 00 00 00 00 00 00 00 ENDCHAR STARTCHAR ca ENCODING 202 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 00 00 00 00 00 00 00 00 00 00 00 ENDCHAR STARTCHAR cb ENCODING 203 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 00 00 00 00 00 00 00 00 00 00 00 ENDCHAR STARTCHAR cc ENCODING 204 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 00 00 00 00 00 00 00 00 00 00 00 ENDCHAR STARTCHAR cd ENCODING 205 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 00 00 00 00 00 00 00 00 00 00 00 ENDCHAR STARTCHAR ce ENCODING 206 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 00 00 00 00 00 00 00 00 00 00 00 ENDCHAR STARTCHAR cf ENCODING 207 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 00 00 00 00 00 00 00 00 00 00 00 ENDCHAR STARTCHAR copyright ENCODING 208 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 38 44 54 64 64 54 44 38 00 00 00 ENDCHAR STARTCHAR registered ENCODING 209 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 38 44 74 6c 74 6c 44 38 00 00 00 ENDCHAR STARTCHAR boxA ENCODING 210 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 60 90 90 f0 90 00 fe 82 fe 00 00 ENDCHAR STARTCHAR insert ENCODING 211 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 00 00 10 38 7c ee c6 82 00 00 00 ENDCHAR STARTCHAR boxB ENCODING 212 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 1c 12 1c 12 1c 00 fe 82 fe 00 00 ENDCHAR STARTCHAR box6 ENCODING 213 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 00 fe 82 a2 a2 ba aa ba 82 fe 00 ENDCHAR STARTCHAR plusminus ENCODING 214 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 00 10 10 7c 10 10 00 7c 00 00 00 ENDCHAR STARTCHAR ETH ENCODING 215 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 78 24 24 74 24 24 24 78 00 00 00 ENDCHAR STARTCHAR rightarrow ENCODING 216 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 00 00 10 18 fc 18 10 00 00 00 00 ENDCHAR STARTCHAR THORN ENCODING 217 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 40 78 44 44 78 40 40 40 00 00 00 ENDCHAR STARTCHAR upshift ENCODING 218 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 10 28 44 6c 28 28 28 28 38 00 00 ENDCHAR STARTCHAR human ENCODING 219 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 38 28 38 10 7c 10 10 28 44 00 00 00 ENDCHAR STARTCHAR underB ENCODING 220 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 30 28 30 28 30 00 fe 00 00 00 00 ENDCHAR STARTCHAR downshift ENCODING 221 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 38 28 28 28 28 6c 44 28 10 00 00 ENDCHAR STARTCHAR boxquestion ENCODING 222 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 fe 82 92 aa 8a 92 82 92 82 fe 00 ENDCHAR STARTCHAR boxsolid ENCODING 223 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 fe fe fe fe fe fe fe fe fe fe 00 ENDCHAR STARTCHAR e0 ENCODING 224 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 00 00 00 00 00 00 00 00 00 00 00 ENDCHAR STARTCHAR e1 ENCODING 225 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 00 00 00 00 00 00 00 00 00 00 00 ENDCHAR STARTCHAR e2 ENCODING 226 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 00 00 00 00 00 00 00 00 00 00 00 ENDCHAR STARTCHAR e3 ENCODING 227 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 00 00 00 00 00 00 00 00 00 00 00 ENDCHAR STARTCHAR e4 ENCODING 228 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 00 00 00 00 00 00 00 00 00 00 00 ENDCHAR STARTCHAR e5 ENCODING 229 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 00 00 00 00 00 00 00 00 00 00 00 ENDCHAR STARTCHAR e6 ENCODING 230 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 00 00 00 00 00 00 00 00 00 00 00 ENDCHAR STARTCHAR e7 ENCODING 231 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 00 00 00 00 00 00 00 00 00 00 00 ENDCHAR STARTCHAR e8 ENCODING 232 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 00 00 00 00 00 00 00 00 00 00 00 ENDCHAR STARTCHAR e9 ENCODING 233 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 00 00 00 00 00 00 00 00 00 00 00 ENDCHAR STARTCHAR ea ENCODING 234 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 00 00 00 00 00 00 00 00 00 00 00 ENDCHAR STARTCHAR eb ENCODING 235 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 00 00 00 00 00 00 00 00 00 00 00 ENDCHAR STARTCHAR ec ENCODING 236 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 00 00 00 00 00 00 00 00 00 00 00 ENDCHAR STARTCHAR ed ENCODING 237 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 00 00 00 00 00 00 00 00 00 00 00 ENDCHAR STARTCHAR ee ENCODING 238 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 00 00 00 00 00 00 00 00 00 00 00 ENDCHAR STARTCHAR ef ENCODING 239 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 00 00 00 00 00 00 00 00 00 00 00 ENDCHAR STARTCHAR badcommhi ENCODING 240 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 00 80 c0 60 fe 18 0c 06 02 00 00 ENDCHAR STARTCHAR commhi ENCODING 241 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 00 00 00 00 fe 00 00 00 00 00 00 ENDCHAR STARTCHAR commjag ENCODING 242 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 00 00 00 00 f8 10 20 7e 00 00 00 ENDCHAR STARTCHAR commlo ENCODING 243 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 00 00 00 00 00 00 00 fe 00 00 00 ENDCHAR STARTCHAR clockleft ENCODING 244 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 02 10 00 00 22 22 02 02 10 02 00 ENDCHAR STARTCHAR clockright ENCODING 245 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 00 20 40 80 08 08 00 00 20 00 00 ENDCHAR STARTCHAR lock ENCODING 246 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 82 c6 ee 7c 38 7c ee c6 82 00 00 ENDCHAR STARTCHAR eth ENCODING 247 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 14 08 04 3c 44 44 44 38 00 00 00 ENDCHAR STARTCHAR leftarrow ENCODING 248 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 00 00 10 30 7e 30 10 00 00 00 00 ENDCHAR STARTCHAR thorn ENCODING 249 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 00 40 40 78 44 44 44 78 40 40 00 ENDCHAR STARTCHAR keyleft ENCODING 250 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 00 00 18 26 24 18 00 00 00 00 00 ENDCHAR STARTCHAR keyright ENCODING 251 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 00 00 00 fe 36 36 06 00 00 00 00 ENDCHAR STARTCHAR box4 ENCODING 252 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 00 fe 82 8a 9a aa ba 8a 82 fe 00 ENDCHAR STARTCHAR underA ENCODING 253 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 10 28 28 38 28 00 fe 00 00 00 00 ENDCHAR STARTCHAR magcard ENCODING 254 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 00 00 fe 82 82 fe 82 fe 00 00 00 ENDCHAR STARTCHAR boxhuman ENCODING 255 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 fe ba aa ba fe 92 92 aa c6 fe 00 ENDCHAR STARTCHAR apl_space ENCODING 272 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 00 00 00 00 00 00 00 00 00 00 00 ENDCHAR STARTCHAR apl_bracketright ENCODING 316 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 38 08 08 08 08 08 08 08 38 00 00 ENDCHAR STARTCHAR apl_bracketleft ENCODING 328 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 38 20 20 20 20 20 20 20 38 00 00 ENDCHAR STARTCHAR apl_stile ENCODING 347 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 10 10 10 10 10 10 10 10 10 10 10 10 ENDCHAR STARTCHAR apl_2vertical ENCODING 384 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 44 44 44 44 44 44 44 44 44 44 44 44 ENDCHAR STARTCHAR apl_2horizontal ENCODING 385 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 fe 00 00 00 00 00 00 00 00 fe 00 ENDCHAR STARTCHAR apl_leftvbar ENCODING 386 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 40 40 40 40 40 40 40 40 40 40 40 40 ENDCHAR STARTCHAR apl_rightvbar ENCODING 387 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 04 04 04 04 04 04 04 04 04 04 04 04 ENDCHAR STARTCHAR apl_midvbar ENCODING 388 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 10 10 10 10 10 10 10 10 10 10 10 10 ENDCHAR STARTCHAR apl_leftsolid ENCODING 393 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP f0 f0 f0 f0 f0 f0 f0 f0 f0 f0 f0 f0 ENDCHAR STARTCHAR apl_rightsolid ENCODING 394 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 1e 1e 1e 1e 1e 1e 1e 1e 1e 1e 1e 1e ENDCHAR STARTCHAR apl_topsolid ENCODING 395 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP fe fe fe fe fe fe 00 00 00 00 00 00 ENDCHAR STARTCHAR apl_bottomsolid ENCODING 396 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 00 00 00 00 00 fe fe fe fe fe fe ENDCHAR STARTCHAR apl_solid ENCODING 397 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP fe fe fe fe fe fe fe fe fe fe fe fe ENDCHAR STARTCHAR apl_midhbar ENCODING 402 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 00 00 00 00 fe 00 00 00 00 00 00 ENDCHAR STARTCHAR apl_lowerleft ENCODING 419 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 10 10 10 10 10 1e 00 00 00 00 00 00 ENDCHAR STARTCHAR apl_upperleft ENCODING 420 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 00 00 00 00 1e 10 10 10 10 10 10 ENDCHAR STARTCHAR apl_leftjoin ENCODING 421 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 10 10 10 10 10 1e 10 10 10 10 10 10 ENDCHAR STARTCHAR apl_bottomjoin ENCODING 422 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 10 10 10 10 10 fe 00 00 00 00 00 00 ENDCHAR STARTCHAR apl_intersect ENCODING 427 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 10 10 10 10 10 fe 10 10 10 10 10 10 ENDCHAR STARTCHAR apl_lowerright ENCODING 428 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 10 10 10 10 10 f0 00 00 00 00 00 00 ENDCHAR STARTCHAR apl_upperright ENCODING 429 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 00 00 00 00 f0 10 10 10 10 10 10 ENDCHAR STARTCHAR apl_rightjoin ENCODING 430 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 10 10 10 10 10 f0 10 10 10 10 10 10 ENDCHAR STARTCHAR apl_topjoin ENCODING 431 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 00 00 00 00 fe 10 10 10 10 10 10 ENDCHAR STARTCHAR dec_solid ENCODING 512 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 38 38 38 38 38 38 38 38 38 38 38 38 ENDCHAR STARTCHAR dec_filled_circle ENCODING 513 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 00 00 10 38 7c 38 10 00 00 00 00 ENDCHAR STARTCHAR dec_halftone_block ENCODING 514 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP aa 54 aa 54 aa 54 aa 54 aa 54 aa 54 ENDCHAR STARTCHAR dec_ht ENCODING 515 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 50 50 70 50 50 1c 08 08 08 08 00 ENDCHAR STARTCHAR dec_ff ENCODING 516 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 70 40 60 40 40 1c 10 18 10 10 00 ENDCHAR STARTCHAR dec_cr ENCODING 517 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 30 40 40 40 30 18 14 18 14 14 00 ENDCHAR STARTCHAR dec_lf ENCODING 518 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 40 40 40 40 70 1c 10 18 10 10 00 ENDCHAR STARTCHAR dec_degree ENCODING 519 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 10 28 10 00 00 00 00 00 00 00 00 ENDCHAR STARTCHAR dec_plusminus ENCODING 520 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 00 10 10 7c 10 10 00 7c 00 00 00 ENDCHAR STARTCHAR dec_nl ENCODING 521 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 48 68 58 48 48 10 10 10 10 1c 00 ENDCHAR STARTCHAR dec_vt ENCODING 522 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 50 50 50 20 20 1c 08 08 08 08 00 ENDCHAR STARTCHAR dec_lowerright ENCODING 523 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 10 10 10 10 10 f0 00 00 00 00 00 00 ENDCHAR STARTCHAR dec_upperright ENCODING 524 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 00 00 00 00 f0 10 10 10 10 10 10 ENDCHAR STARTCHAR dec_upperleft ENCODING 525 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 00 00 00 00 1e 10 10 10 10 10 10 ENDCHAR STARTCHAR dec_lowerleft ENCODING 526 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 10 10 10 10 10 1e 00 00 00 00 00 00 ENDCHAR STARTCHAR dec_intersect ENCODING 527 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 10 10 10 10 10 fe 10 10 10 10 10 10 ENDCHAR STARTCHAR dec_hbar1 ENCODING 528 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 fe 00 00 00 00 00 00 00 00 00 00 ENDCHAR STARTCHAR dec_hbar2 ENCODING 529 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 00 00 fe 00 00 00 00 00 00 00 00 ENDCHAR STARTCHAR dec_hbar3 ENCODING 530 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 00 00 00 00 fe 00 00 00 00 00 00 ENDCHAR STARTCHAR dec_hbar4 ENCODING 531 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 00 00 00 00 00 00 fe 00 00 00 00 ENDCHAR STARTCHAR dec_hbar5 ENCODING 532 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 00 00 00 00 00 00 00 00 fe 00 00 ENDCHAR STARTCHAR dec_leftjoin ENCODING 533 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 10 10 10 10 10 1e 10 10 10 10 10 10 ENDCHAR STARTCHAR dec_rightjoin ENCODING 534 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 10 10 10 10 10 f0 10 10 10 10 10 10 ENDCHAR STARTCHAR dec_bottomjoin ENCODING 535 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 10 10 10 10 10 fe 00 00 00 00 00 00 ENDCHAR STARTCHAR dec_topjoin ENCODING 536 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 00 00 00 00 fe 10 10 10 10 10 10 ENDCHAR STARTCHAR dec_vbar ENCODING 537 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 10 10 10 10 10 10 10 10 10 10 10 10 ENDCHAR STARTCHAR dec_notgreater ENCODING 538 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 00 08 10 20 40 20 10 08 00 78 00 ENDCHAR STARTCHAR dec_notless ENCODING 539 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 00 20 10 08 04 08 10 20 00 3c 00 ENDCHAR STARTCHAR dec_pi ENCODING 540 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 00 00 7c 28 28 28 28 48 00 00 00 ENDCHAR STARTCHAR dec_notequal ENCODING 541 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 00 04 08 7c 10 7c 20 40 00 00 00 ENDCHAR STARTCHAR dec_sterling ENCODING 542 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 10 28 20 78 20 20 24 58 00 00 00 ENDCHAR STARTCHAR dec_periodcentered ENCODING 543 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 00 00 00 10 10 00 00 00 00 00 00 ENDCHAR ENDFONT suite3270-4.1/x3270/3270gt12b.bdf000066400000000000000000001157361413735575200155470ustar00rootroot00000000000000STARTFONT 2.1 COMMENT "12-point bold 3270 font" COMMENT "Uses nonstandard ordering:" COMMENT " Page 0: EBCDIC US-International set, CG order" COMMENT " Page 1: EBCDIC APL/APL2 set, CG order (incomplete)" COMMENT " Page 2: (first 16 characters only) DEC line-drawing characters from" COMMENT " fixed-width X fonts" COMMENT "" COMMENT "Copyright (c) 1994-2009, Paul Mattes." COMMENT "Copyright (c) 1989, Georgia Tech Research Corporation (GTRC)," COMMENT " Atlanta, GA 30332." COMMENT "All rights reserved." COMMENT "" COMMENT "Redistribution and use in source and binary forms, with or" COMMENT "without modification, are permitted provided that the following" COMMENT "conditions are met:" COMMENT " * Redistributions of source code must retain the above" COMMENT " copyright notice, this list of conditions and the following" COMMENT " disclaimer." COMMENT " * Redistributions in binary form must reproduce the above" COMMENT " copyright notice, this list of conditions and the following" COMMENT " disclaimer in the documentation and/or other materials" COMMENT " provided with the distribution." COMMENT " * Neither the names of Paul Mattes, GTRC nor their" COMMENT " contributors may be used to endorse or promote products" COMMENT " derived from this software without specific prior written" COMMENT " permission." COMMENT "" COMMENT "THIS SOFTWARE IS PROVIDED BY PAUL MATTES AND GTRC 'AS IS' AND" COMMENT "ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED" COMMENT "TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR" COMMENT "A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL PAUL" COMMENT "MATTES OR GTRC BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL," COMMENT "SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT" COMMENT "NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;" COMMENT "LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER" COMMENT "CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT," COMMENT "STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)" COMMENT "ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF" COMMENT "ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." FONT 3270gt12bold SIZE 12 72 72 FONTBOUNDINGBOX 7 12 0 -3 STARTPROPERTIES 27 FOUNDRY "GaTech" FAMILY_NAME "3270" WEIGHT_NAME "Bold" SLANT "R" SETWIDTH_NAME "Normal" ADD_STYLE_NAME "" PIXEL_SIZE 12 POINT_SIZE 120 RESOLUTION_X 72 RESOLUTION_Y 72 SPACING "C" AVERAGE_WIDTH 70 CHARSET_REGISTRY "3270cg" CHARSET_ENCODING "1" MIN_SPACE 7 NORM_SPACE 7 MAX_SPACE 7 END_SPACE 7 AVG_CAPITAL_WIDTH 70 AVG_LOWERCASE_WIDTH 70 CAP_HEIGHT 7 X_HEIGHT 5 RELATIVE_WEIGHT 50 DESTINATION "Video Text" FONT_ASCENT 9 FONT_DESCENT 3 DEFAULT_CHAR 514 ENDPROPERTIES CHARS 312 STARTCHAR null ENCODING 0 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 00 00 00 00 00 00 00 00 00 00 00 ENDCHAR STARTCHAR nobreakspace ENCODING 1 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 00 00 00 00 00 00 00 00 00 00 00 ENDCHAR STARTCHAR euro ENCODING 2 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 38 6C 60 F8 60 F0 6C 38 00 00 00 ENDCHAR STARTCHAR cr ENCODING 3 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 00 00 00 00 00 00 00 00 00 00 00 ENDCHAR STARTCHAR nl ENCODING 4 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 00 00 00 00 00 00 00 00 00 00 00 ENDCHAR STARTCHAR em ENCODING 5 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 00 00 00 00 00 00 00 00 00 00 00 ENDCHAR STARTCHAR eightones ENCODING 6 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 00 00 38 7c 7c 7c 38 00 00 00 00 ENDCHAR STARTCHAR hyphen ENCODING 7 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 00 00 00 00 7e 00 00 00 00 00 00 ENDCHAR STARTCHAR greater ENCODING 8 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 00 30 18 0c 06 0c 18 30 00 00 00 ENDCHAR STARTCHAR less ENCODING 9 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 00 0c 18 30 60 30 18 0c 00 00 00 ENDCHAR STARTCHAR bracketleft ENCODING 10 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 3c 30 30 30 30 30 30 30 3c 00 00 ENDCHAR STARTCHAR bracketright ENCODING 11 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 3c 0c 0c 0c 0c 0c 0c 0c 3c 00 00 ENDCHAR STARTCHAR parenright ENCODING 12 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 30 18 0c 0c 0c 0c 0c 18 30 00 00 ENDCHAR STARTCHAR parenleft ENCODING 13 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 0c 18 30 30 30 30 30 18 0c 00 00 ENDCHAR STARTCHAR braceright ENCODING 14 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 30 18 18 18 0c 18 18 18 30 00 00 ENDCHAR STARTCHAR braceleft ENCODING 15 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 0c 18 18 18 30 18 18 18 0c 00 00 ENDCHAR STARTCHAR space ENCODING 16 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 00 00 00 00 00 00 00 00 00 00 00 ENDCHAR STARTCHAR equal ENCODING 17 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 00 00 00 7e 00 7e 00 00 00 00 00 ENDCHAR STARTCHAR apostrophe ENCODING 18 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 18 18 00 00 00 00 00 00 00 00 00 ENDCHAR STARTCHAR quotedbl ENCODING 19 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 3c 3c 00 00 00 00 00 00 00 00 00 ENDCHAR STARTCHAR slash ENCODING 20 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 06 06 0c 0c 18 18 30 30 60 00 00 ENDCHAR STARTCHAR backslash ENCODING 21 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 60 60 30 30 18 18 0c 0c 06 00 00 ENDCHAR STARTCHAR bar ENCODING 22 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 18 18 18 18 18 18 18 18 18 18 00 ENDCHAR STARTCHAR brokenbar ENCODING 23 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 18 18 18 18 00 00 18 18 18 18 00 ENDCHAR STARTCHAR question ENCODING 24 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 3c 66 06 0c 18 18 00 18 18 00 00 ENDCHAR STARTCHAR exclam ENCODING 25 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 18 18 18 18 18 18 00 18 18 00 00 ENDCHAR STARTCHAR dollar ENCODING 26 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 18 3e 78 78 3c 1e 1e 7c 18 00 00 ENDCHAR STARTCHAR cent ENCODING 27 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 00 18 3e 78 78 3e 18 00 00 00 00 ENDCHAR STARTCHAR sterling ENCODING 28 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 18 3c 30 7c 30 30 36 7c 00 00 00 ENDCHAR STARTCHAR yen ENCODING 29 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 66 3c 18 7e 18 7e 18 18 00 00 00 ENDCHAR STARTCHAR paragraph ENCODING 30 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 78 6c 6c 78 60 6c 7e 6c 0c 00 00 ENDCHAR STARTCHAR currency ENCODING 31 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 00 66 3c 3c 3c 3c 3c 66 00 00 00 ENDCHAR STARTCHAR 0 ENCODING 32 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 3c 66 66 7e 7e 66 66 3c 00 00 00 ENDCHAR STARTCHAR 1 ENCODING 33 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 0c 1c 3c 0c 0c 0c 0c 0c 00 00 00 ENDCHAR STARTCHAR 2 ENCODING 34 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 3c 66 06 06 0c 18 30 7e 00 00 00 ENDCHAR STARTCHAR 3 ENCODING 35 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 7e 06 0c 1c 06 06 06 7c 00 00 00 ENDCHAR STARTCHAR 4 ENCODING 36 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 1c 1c 3c 3c 6c 7e 0c 0c 00 00 00 ENDCHAR STARTCHAR 5 ENCODING 37 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 7e 60 60 7c 06 06 06 7c 00 00 00 ENDCHAR STARTCHAR 6 ENCODING 38 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 18 30 60 7c 66 66 66 3c 00 00 00 ENDCHAR STARTCHAR 7 ENCODING 39 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 7e 06 0c 18 30 30 30 30 00 00 00 ENDCHAR STARTCHAR 8 ENCODING 40 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 3c 66 66 3c 66 66 66 3c 00 00 00 ENDCHAR STARTCHAR 9 ENCODING 41 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 3c 66 66 6e 3e 06 06 0c 00 00 00 ENDCHAR STARTCHAR ssharp ENCODING 42 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 38 6c 6c 78 6c 66 76 7c 00 00 00 ENDCHAR STARTCHAR section ENCODING 43 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 1c 30 30 78 6c 36 1e 0c 0c 38 00 ENDCHAR STARTCHAR numbersign ENCODING 44 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 00 3c 7e 3c 7e 3c 00 00 00 00 00 ENDCHAR STARTCHAR at ENCODING 45 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 3c 66 7e 7e 7c 60 60 3e 00 00 00 ENDCHAR STARTCHAR percent ENCODING 46 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 30 78 36 0c 18 30 6c 1e 0c 00 00 ENDCHAR STARTCHAR underscore ENCODING 47 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 00 00 00 00 00 00 00 00 7e 00 00 ENDCHAR STARTCHAR ampersand ENCODING 48 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 30 78 78 30 70 7e 6c 3c 06 00 00 ENDCHAR STARTCHAR minus ENCODING 49 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 00 00 00 00 7e 00 00 00 00 00 00 ENDCHAR STARTCHAR period ENCODING 50 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 00 00 00 00 00 00 00 18 18 00 00 ENDCHAR STARTCHAR comma ENCODING 51 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 00 00 00 00 00 00 00 18 18 30 00 ENDCHAR STARTCHAR colon ENCODING 52 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 00 00 00 18 18 00 00 18 18 00 00 ENDCHAR STARTCHAR plus ENCODING 53 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 00 00 18 18 7e 18 18 00 00 00 00 ENDCHAR STARTCHAR notsign ENCODING 54 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 7e 06 06 00 00 00 00 00 00 00 00 ENDCHAR STARTCHAR macron ENCODING 55 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 00 7e 00 00 00 00 00 00 00 00 00 ENDCHAR STARTCHAR degree ENCODING 56 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 18 3c 18 00 00 00 00 00 00 00 00 ENDCHAR STARTCHAR periodcentered ENCODING 57 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 00 00 00 18 18 00 00 00 00 00 00 ENDCHAR STARTCHAR asciicircum ENCODING 58 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 18 3c 00 00 00 00 00 00 00 00 00 00 ENDCHAR STARTCHAR asciitilde ENCODING 59 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 3e 7c 00 00 00 00 00 00 00 00 00 00 ENDCHAR STARTCHAR diaeresis ENCODING 60 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 3c 00 00 00 00 00 00 00 00 00 00 ENDCHAR STARTCHAR grave ENCODING 61 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 30 18 00 00 00 00 00 00 00 00 00 00 ENDCHAR STARTCHAR acute ENCODING 62 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 0c 18 00 00 00 00 00 00 00 00 00 00 ENDCHAR STARTCHAR cedilla ENCODING 63 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 00 00 00 00 00 00 00 00 18 38 00 ENDCHAR STARTCHAR agrave ENCODING 64 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 30 18 00 3c 06 3e 66 3e 00 00 00 ENDCHAR STARTCHAR egrave ENCODING 65 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 30 18 00 3c 66 7e 60 3c 00 00 00 ENDCHAR STARTCHAR igrave ENCODING 66 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 30 18 00 18 18 18 18 18 00 00 00 ENDCHAR STARTCHAR ograve ENCODING 67 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 30 18 00 3c 66 66 66 3c 00 00 00 ENDCHAR STARTCHAR ugrave ENCODING 68 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 30 18 00 66 66 66 66 3e 00 00 00 ENDCHAR STARTCHAR atilde ENCODING 69 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 3e 7c 00 3c 06 3e 66 3e 00 00 00 ENDCHAR STARTCHAR otilde ENCODING 70 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 3e 7c 00 3c 66 66 66 3c 00 00 00 ENDCHAR STARTCHAR ydiaeresis ENCODING 71 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 00 3c 00 66 66 66 66 3e 06 3c 00 ENDCHAR STARTCHAR Yacute ENCODING 72 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 0c 18 66 66 3c 18 18 18 18 00 00 00 ENDCHAR STARTCHAR yacute ENCODING 73 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 0c 18 00 66 66 66 66 3e 06 3c 00 ENDCHAR STARTCHAR eacute ENCODING 74 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 0c 18 00 3c 66 7e 60 3c 00 00 00 ENDCHAR STARTCHAR onequarter ENCODING 75 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 30 70 30 30 30 1e 1e 1e 06 06 00 ENDCHAR STARTCHAR onehalf ENCODING 76 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 30 70 30 30 30 1c 06 0c 18 1e 00 ENDCHAR STARTCHAR threequarters ENCODING 77 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 70 18 30 18 70 1e 1e 1e 06 06 00 ENDCHAR STARTCHAR udiaeresis ENCODING 78 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 00 3c 00 66 66 66 66 3e 00 00 00 ENDCHAR STARTCHAR ccedilla ENCODING 79 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 00 00 00 3e 60 60 60 3e 18 38 00 ENDCHAR STARTCHAR adiaeresis ENCODING 80 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 00 3c 00 3c 06 3e 66 3e 00 00 00 ENDCHAR STARTCHAR ediaeresis ENCODING 81 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 00 3c 00 3c 66 7e 60 3c 00 00 00 ENDCHAR STARTCHAR idiaeresis ENCODING 82 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 00 3c 00 18 18 18 18 18 00 00 00 ENDCHAR STARTCHAR odiaeresis ENCODING 83 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 00 3c 00 3c 66 66 66 3c 00 00 00 ENDCHAR STARTCHAR mu ENCODING 84 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 00 00 00 66 66 66 66 7c 60 60 60 ENDCHAR STARTCHAR acircumflex ENCODING 85 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 18 3c 00 3c 06 3e 66 3e 00 00 00 ENDCHAR STARTCHAR ecircumflex ENCODING 86 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 18 3c 00 3c 66 7e 60 3c 00 00 00 ENDCHAR STARTCHAR icircumflex ENCODING 87 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 18 3c 00 18 18 18 18 18 00 00 00 ENDCHAR STARTCHAR ocircumflex ENCODING 88 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 18 3c 00 3c 66 66 66 3c 00 00 00 ENDCHAR STARTCHAR ucircumflex ENCODING 89 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 18 3c 00 66 66 66 66 3e 00 00 00 ENDCHAR STARTCHAR aacute ENCODING 90 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 0c 18 00 3c 06 3e 66 3e 00 00 00 ENDCHAR STARTCHAR multiply ENCODING 91 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 00 00 66 3c 18 3c 66 00 00 00 00 ENDCHAR STARTCHAR iacute ENCODING 92 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 0c 18 00 18 18 18 18 18 00 00 00 ENDCHAR STARTCHAR oacute ENCODING 93 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 0c 18 00 3c 66 66 66 3c 00 00 00 ENDCHAR STARTCHAR uacute ENCODING 94 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 0c 18 00 66 66 66 66 3e 00 00 00 ENDCHAR STARTCHAR ntilde ENCODING 95 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 3e 7c 00 7c 66 66 66 66 00 00 00 ENDCHAR STARTCHAR Agrave ENCODING 96 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 30 18 18 3c 66 66 7e 66 66 00 00 00 ENDCHAR STARTCHAR Egrave ENCODING 97 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 30 18 7e 60 60 7c 60 60 7e 00 00 00 ENDCHAR STARTCHAR Igrave ENCODING 98 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 30 18 3c 18 18 18 18 18 3c 00 00 00 ENDCHAR STARTCHAR Ograve ENCODING 99 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 30 18 3c 66 66 66 66 66 3c 00 00 00 ENDCHAR STARTCHAR Ugrave ENCODING 100 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 30 18 66 66 66 66 66 66 3c 00 00 00 ENDCHAR STARTCHAR Atilde ENCODING 101 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 3e 7c 18 3c 66 66 7e 66 66 00 00 00 ENDCHAR STARTCHAR Otilde ENCODING 102 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 3e 7c 3c 66 66 66 66 66 3c 00 00 00 ENDCHAR STARTCHAR onesuperior ENCODING 103 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 18 38 18 18 18 00 00 00 00 00 00 ENDCHAR STARTCHAR twosuperior ENCODING 104 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 38 0c 18 30 3c 00 00 00 00 00 00 ENDCHAR STARTCHAR threesuperior ENCODING 105 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 38 0c 18 0c 38 00 00 00 00 00 00 ENDCHAR STARTCHAR ordfeminine ENCODING 106 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 3c 06 3e 66 3e 00 7e 00 00 00 00 ENDCHAR STARTCHAR masculine ENCODING 107 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 3c 66 66 66 3c 00 7e 00 00 00 00 ENDCHAR STARTCHAR guillemotleft ENCODING 108 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 00 00 1a 36 6c 36 1a 00 00 00 00 ENDCHAR STARTCHAR guillemotright ENCODING 109 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 00 00 d8 6c 36 6c d8 00 00 00 00 ENDCHAR STARTCHAR exclamdown ENCODING 110 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 18 18 00 18 18 18 18 18 18 00 00 ENDCHAR STARTCHAR questiondown ENCODING 111 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 18 18 00 18 18 30 60 66 3c 00 00 ENDCHAR STARTCHAR Adiaeresis ENCODING 112 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 3c 00 18 3c 66 66 7e 66 66 00 00 00 ENDCHAR STARTCHAR Ediaeresis ENCODING 113 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 3c 00 7e 60 60 7c 60 60 7e 00 00 00 ENDCHAR STARTCHAR Idiaeresis ENCODING 114 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 3c 00 3c 18 18 18 18 18 3c 00 00 00 ENDCHAR STARTCHAR Odiaeresis ENCODING 115 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 3c 00 3c 66 66 66 66 66 3c 00 00 00 ENDCHAR STARTCHAR Udiaeresis ENCODING 116 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 3c 00 66 66 66 66 66 66 3c 00 00 00 ENDCHAR STARTCHAR Acircumflex ENCODING 117 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 18 3c 18 3c 66 66 7e 66 66 00 00 00 ENDCHAR STARTCHAR Ecircumflex ENCODING 118 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 18 3c 7e 60 60 7c 60 60 7e 00 00 00 ENDCHAR STARTCHAR Icircumflex ENCODING 119 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 18 3c 3c 18 18 18 18 18 3c 00 00 00 ENDCHAR STARTCHAR Ocircumflex ENCODING 120 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 18 3c 3c 66 66 66 66 66 3c 00 00 00 ENDCHAR STARTCHAR Ucircumflex ENCODING 121 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 18 3c 66 66 66 66 66 66 3c 00 00 00 ENDCHAR STARTCHAR Aacute ENCODING 122 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 0c 18 18 3c 66 66 7e 66 66 00 00 00 ENDCHAR STARTCHAR Eacute ENCODING 123 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 0c 18 7e 60 60 7c 60 60 7e 00 00 00 ENDCHAR STARTCHAR Iacute ENCODING 124 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 0c 18 3c 18 18 18 18 18 3c 00 00 00 ENDCHAR STARTCHAR Oacute ENCODING 125 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 0c 18 3c 66 66 66 66 66 3c 00 00 00 ENDCHAR STARTCHAR Uacute ENCODING 126 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 0c 18 66 66 66 66 66 66 3c 00 00 00 ENDCHAR STARTCHAR Ntilde ENCODING 127 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 3e 7c 66 76 7e 6e 66 66 66 00 00 00 ENDCHAR STARTCHAR a ENCODING 128 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 00 00 00 3c 06 3e 66 3e 00 00 00 ENDCHAR STARTCHAR b ENCODING 129 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 60 60 60 7c 66 66 66 7c 00 00 00 ENDCHAR STARTCHAR c ENCODING 130 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 00 00 00 3e 60 60 60 3e 00 00 00 ENDCHAR STARTCHAR d ENCODING 131 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 06 06 06 3e 66 66 66 3e 00 00 00 ENDCHAR STARTCHAR e ENCODING 132 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 00 00 00 3c 66 7e 60 3c 00 00 00 ENDCHAR STARTCHAR f ENCODING 133 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 0e 18 18 7e 18 18 18 18 00 00 00 ENDCHAR STARTCHAR g ENCODING 134 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 00 00 00 3e 66 66 66 3e 06 3c 00 ENDCHAR STARTCHAR h ENCODING 135 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 60 60 60 7c 76 66 66 66 00 00 00 ENDCHAR STARTCHAR i ENCODING 136 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 00 18 00 18 18 18 18 18 00 00 00 ENDCHAR STARTCHAR j ENCODING 137 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 00 06 00 06 06 06 06 06 66 3c 00 ENDCHAR STARTCHAR k ENCODING 138 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 60 60 60 66 6c 78 7c 66 00 00 00 ENDCHAR STARTCHAR l ENCODING 139 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 18 18 18 18 18 18 18 0c 00 00 00 ENDCHAR STARTCHAR m ENCODING 140 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 00 00 00 7c 7e 7e 7e 7e 00 00 00 ENDCHAR STARTCHAR n ENCODING 141 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 00 00 00 7c 66 66 66 66 00 00 00 ENDCHAR STARTCHAR o ENCODING 142 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 00 00 00 3c 66 66 66 3c 00 00 00 ENDCHAR STARTCHAR p ENCODING 143 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 00 00 00 7c 66 66 66 7c 60 60 00 ENDCHAR STARTCHAR q ENCODING 144 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 00 00 00 3e 66 66 66 3e 06 06 00 ENDCHAR STARTCHAR r ENCODING 145 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 00 00 00 7c 76 60 60 60 00 00 00 ENDCHAR STARTCHAR s ENCODING 146 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 00 00 00 3e 60 3c 06 7c 00 00 00 ENDCHAR STARTCHAR t ENCODING 147 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 18 18 18 7e 18 18 18 1c 00 00 00 ENDCHAR STARTCHAR u ENCODING 148 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 00 00 00 66 66 66 66 3e 00 00 00 ENDCHAR STARTCHAR v ENCODING 149 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 00 00 00 66 66 3c 3c 18 00 00 00 ENDCHAR STARTCHAR w ENCODING 150 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 00 00 00 66 66 7e 7e 3c 00 00 00 ENDCHAR STARTCHAR x ENCODING 151 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 00 00 00 66 3c 18 3c 66 00 00 00 ENDCHAR STARTCHAR y ENCODING 152 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 00 00 00 66 66 66 66 3e 06 3c 00 ENDCHAR STARTCHAR z ENCODING 153 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 00 00 00 7e 0c 18 30 7e 00 00 00 ENDCHAR STARTCHAR ae ENCODING 154 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 00 00 00 7c 1e 3e 78 7e 00 00 00 ENDCHAR STARTCHAR oslash ENCODING 155 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 00 00 00 3e 6e 7e 76 7c 00 00 00 ENDCHAR STARTCHAR aring ENCODING 156 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 3c 3c 00 3c 06 3e 66 3e 00 00 00 ENDCHAR STARTCHAR division ENCODING 157 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 00 18 18 00 7e 00 18 18 00 00 00 ENDCHAR STARTCHAR fm ENCODING 158 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 7e 00 00 18 18 00 00 18 18 30 00 ENDCHAR STARTCHAR dup ENCODING 159 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 7e 00 18 7e 3c 3c 7e 18 00 00 00 ENDCHAR STARTCHAR A ENCODING 160 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 18 3c 66 66 7e 66 66 66 00 00 00 ENDCHAR STARTCHAR B ENCODING 161 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 7c 66 66 7c 66 66 66 7c 00 00 00 ENDCHAR STARTCHAR C ENCODING 162 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 1c 36 60 60 60 60 36 1c 00 00 00 ENDCHAR STARTCHAR D ENCODING 163 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 7c 66 66 66 66 66 66 7c 00 00 00 ENDCHAR STARTCHAR E ENCODING 164 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 7e 60 60 7c 60 60 60 7e 00 00 00 ENDCHAR STARTCHAR F ENCODING 165 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 7e 60 60 7c 60 60 60 60 00 00 00 ENDCHAR STARTCHAR G ENCODING 166 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 3c 66 60 6e 66 66 66 3c 00 00 00 ENDCHAR STARTCHAR H ENCODING 167 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 66 66 66 7e 66 66 66 66 00 00 00 ENDCHAR STARTCHAR I ENCODING 168 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 3c 18 18 18 18 18 18 3c 00 00 00 ENDCHAR STARTCHAR J ENCODING 169 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 1e 0c 0c 0c 0c 6c 6c 38 00 00 00 ENDCHAR STARTCHAR K ENCODING 170 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 66 6c 78 70 70 78 6c 66 00 00 00 ENDCHAR STARTCHAR L ENCODING 171 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 60 60 60 60 60 60 60 7e 00 00 00 ENDCHAR STARTCHAR M ENCODING 172 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 66 7e 7e 7e 66 66 66 66 00 00 00 ENDCHAR STARTCHAR N ENCODING 173 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 66 76 7e 7e 6e 66 66 66 00 00 00 ENDCHAR STARTCHAR O ENCODING 174 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 3c 66 66 66 66 66 66 3c 00 00 00 ENDCHAR STARTCHAR P ENCODING 175 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 7c 66 66 7c 60 60 60 60 00 00 00 ENDCHAR STARTCHAR Q ENCODING 176 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 3c 66 66 66 66 66 7e 3c 0c 06 00 ENDCHAR STARTCHAR R ENCODING 177 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 7c 66 66 7c 78 6c 6c 66 00 00 00 ENDCHAR STARTCHAR S ENCODING 178 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 3c 66 60 3c 06 06 66 3c 00 00 00 ENDCHAR STARTCHAR T ENCODING 179 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 7e 18 18 18 18 18 18 18 00 00 00 ENDCHAR STARTCHAR U ENCODING 180 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 66 66 66 66 66 66 66 3c 00 00 00 ENDCHAR STARTCHAR V ENCODING 181 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 66 66 66 3c 3c 3c 18 18 00 00 00 ENDCHAR STARTCHAR W ENCODING 182 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 66 66 66 66 7e 7e 7e 3c 00 00 00 ENDCHAR STARTCHAR X ENCODING 183 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 66 66 3c 18 18 3c 66 66 00 00 00 ENDCHAR STARTCHAR Y ENCODING 184 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 66 66 3c 18 18 18 18 18 00 00 00 ENDCHAR STARTCHAR Z ENCODING 185 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 7e 06 0c 18 18 30 60 7e 00 00 00 ENDCHAR STARTCHAR AE ENCODING 186 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 3e 78 78 7e 78 78 78 7e 00 00 00 ENDCHAR STARTCHAR Ooblique ENCODING 187 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 3c 6e 6e 7e 7e 76 76 3c 00 00 00 ENDCHAR STARTCHAR Aring ENCODING 188 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 3c 3c 18 3c 66 66 7e 66 66 00 00 00 ENDCHAR STARTCHAR Ccedilla ENCODING 189 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 1c 36 60 60 60 60 36 1c 0c 3c 00 ENDCHAR STARTCHAR semicolon ENCODING 190 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 00 00 00 18 18 00 00 18 18 30 00 ENDCHAR STARTCHAR asterisk ENCODING 191 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 00 18 7e 3c 3c 7e 18 00 00 00 00 ENDCHAR STARTCHAR c0 ENCODING 192 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 00 00 00 00 00 00 00 00 00 00 00 ENDCHAR STARTCHAR c1 ENCODING 193 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 00 00 00 00 00 00 00 00 00 00 00 ENDCHAR STARTCHAR c2 ENCODING 194 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 00 00 00 00 00 00 00 00 00 00 00 ENDCHAR STARTCHAR c3 ENCODING 195 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 00 00 00 00 00 00 00 00 00 00 00 ENDCHAR STARTCHAR c4 ENCODING 196 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 00 00 00 00 00 00 00 00 00 00 00 ENDCHAR STARTCHAR c5 ENCODING 197 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 00 00 00 00 00 00 00 00 00 00 00 ENDCHAR STARTCHAR c6 ENCODING 198 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 00 00 00 00 00 00 00 00 00 00 00 ENDCHAR STARTCHAR c7 ENCODING 199 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 00 00 00 00 00 00 00 00 00 00 00 ENDCHAR STARTCHAR c8 ENCODING 200 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 00 00 00 00 00 00 00 00 00 00 00 ENDCHAR STARTCHAR c9 ENCODING 201 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 00 00 00 00 00 00 00 00 00 00 00 ENDCHAR STARTCHAR ca ENCODING 202 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 00 00 00 00 00 00 00 00 00 00 00 ENDCHAR STARTCHAR cb ENCODING 203 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 00 00 00 00 00 00 00 00 00 00 00 ENDCHAR STARTCHAR cc ENCODING 204 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 00 00 00 00 00 00 00 00 00 00 00 ENDCHAR STARTCHAR cd ENCODING 205 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 00 00 00 00 00 00 00 00 00 00 00 ENDCHAR STARTCHAR ce ENCODING 206 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 00 00 00 00 00 00 00 00 00 00 00 ENDCHAR STARTCHAR cf ENCODING 207 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 00 00 00 00 00 00 00 00 00 00 00 ENDCHAR STARTCHAR copyright ENCODING 208 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 38 44 54 64 64 54 44 38 00 00 00 ENDCHAR STARTCHAR registered ENCODING 209 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 38 44 74 6c 74 6c 44 38 00 00 00 ENDCHAR STARTCHAR boxA ENCODING 210 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 60 90 90 f0 90 00 fe 82 fe 00 00 ENDCHAR STARTCHAR insert ENCODING 211 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 00 00 10 38 7c ee c6 82 00 00 00 ENDCHAR STARTCHAR boxB ENCODING 212 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 1c 12 1c 12 1c 00 fe 82 fe 00 00 ENDCHAR STARTCHAR box6 ENCODING 213 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 00 fe 82 a2 a2 ba aa ba 82 fe 00 ENDCHAR STARTCHAR plusminus ENCODING 214 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 00 18 18 7e 18 18 00 7e 00 00 00 ENDCHAR STARTCHAR ETH ENCODING 215 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 7c 36 36 7e 36 36 36 7c 00 00 00 ENDCHAR STARTCHAR rightarrow ENCODING 216 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 00 00 10 18 fc 18 10 00 00 00 00 ENDCHAR STARTCHAR THORN ENCODING 217 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 60 7c 66 66 7c 60 60 60 00 00 00 ENDCHAR STARTCHAR upshift ENCODING 218 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 10 28 44 6c 28 28 28 28 38 00 00 ENDCHAR STARTCHAR human ENCODING 219 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 38 28 38 10 7c 10 10 28 44 00 00 00 ENDCHAR STARTCHAR underB ENCODING 220 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 30 28 30 28 30 00 fe 00 00 00 00 ENDCHAR STARTCHAR downshift ENCODING 221 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 38 28 28 28 28 6c 44 28 10 00 00 ENDCHAR STARTCHAR boxquestion ENCODING 222 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 fe 82 92 aa 8a 92 82 92 82 fe 00 ENDCHAR STARTCHAR boxsolid ENCODING 223 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 fe fe fe fe fe fe fe fe fe fe 00 ENDCHAR STARTCHAR e0 ENCODING 224 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 00 00 00 00 00 00 00 00 00 00 00 ENDCHAR STARTCHAR e1 ENCODING 225 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 00 00 00 00 00 00 00 00 00 00 00 ENDCHAR STARTCHAR e2 ENCODING 226 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 00 00 00 00 00 00 00 00 00 00 00 ENDCHAR STARTCHAR e3 ENCODING 227 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 00 00 00 00 00 00 00 00 00 00 00 ENDCHAR STARTCHAR e4 ENCODING 228 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 00 00 00 00 00 00 00 00 00 00 00 ENDCHAR STARTCHAR e5 ENCODING 229 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 00 00 00 00 00 00 00 00 00 00 00 ENDCHAR STARTCHAR e6 ENCODING 230 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 00 00 00 00 00 00 00 00 00 00 00 ENDCHAR STARTCHAR e7 ENCODING 231 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 00 00 00 00 00 00 00 00 00 00 00 ENDCHAR STARTCHAR e8 ENCODING 232 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 00 00 00 00 00 00 00 00 00 00 00 ENDCHAR STARTCHAR e9 ENCODING 233 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 00 00 00 00 00 00 00 00 00 00 00 ENDCHAR STARTCHAR ea ENCODING 234 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 00 00 00 00 00 00 00 00 00 00 00 ENDCHAR STARTCHAR eb ENCODING 235 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 00 00 00 00 00 00 00 00 00 00 00 ENDCHAR STARTCHAR ec ENCODING 236 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 00 00 00 00 00 00 00 00 00 00 00 ENDCHAR STARTCHAR ed ENCODING 237 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 00 00 00 00 00 00 00 00 00 00 00 ENDCHAR STARTCHAR ee ENCODING 238 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 00 00 00 00 00 00 00 00 00 00 00 ENDCHAR STARTCHAR ef ENCODING 239 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 00 00 00 00 00 00 00 00 00 00 00 ENDCHAR STARTCHAR badcommhi ENCODING 240 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 00 80 c0 60 fe 18 0c 06 02 00 00 ENDCHAR STARTCHAR commhi ENCODING 241 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 00 00 00 00 fe 00 00 00 00 00 00 ENDCHAR STARTCHAR commjag ENCODING 242 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 00 00 00 00 f8 10 20 7e 00 00 00 ENDCHAR STARTCHAR commlo ENCODING 243 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 00 00 00 00 00 00 00 fe 00 00 00 ENDCHAR STARTCHAR clockleft ENCODING 244 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 02 10 00 00 22 22 02 02 10 02 00 ENDCHAR STARTCHAR clockright ENCODING 245 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 00 20 40 80 08 08 00 00 20 00 00 ENDCHAR STARTCHAR lock ENCODING 246 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 82 c6 ee 7c 38 7c ee c6 82 00 00 ENDCHAR STARTCHAR eth ENCODING 247 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 1e 0c 06 3e 66 66 66 3c 00 00 00 ENDCHAR STARTCHAR leftarrow ENCODING 248 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 00 00 10 30 7e 30 10 00 00 00 00 ENDCHAR STARTCHAR thorn ENCODING 249 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 00 60 60 7c 66 66 66 7c 60 60 00 ENDCHAR STARTCHAR keyleft ENCODING 250 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 00 00 18 26 24 18 00 00 00 00 00 ENDCHAR STARTCHAR keyright ENCODING 251 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 00 00 00 fe 36 36 06 00 00 00 00 ENDCHAR STARTCHAR box4 ENCODING 252 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 00 fe 82 8a 9a aa ba 8a 82 fe 00 ENDCHAR STARTCHAR underA ENCODING 253 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 10 28 28 38 28 00 fe 00 00 00 00 ENDCHAR STARTCHAR magcard ENCODING 254 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 00 00 fe 82 82 fe 82 fe 00 00 00 ENDCHAR STARTCHAR boxhuman ENCODING 255 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 fe ba aa ba fe 92 92 aa c6 fe 00 ENDCHAR STARTCHAR apl_space ENCODING 272 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 00 00 00 00 00 00 00 00 00 00 00 ENDCHAR STARTCHAR apl_bracketright ENCODING 316 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 3c 0c 0c 0c 0c 0c 0c 0c 3c 00 00 ENDCHAR STARTCHAR apl_bracketleft ENCODING 328 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 3c 30 30 30 30 30 30 30 3c 00 00 ENDCHAR STARTCHAR apl_stile ENCODING 347 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 18 18 18 18 18 18 18 18 18 18 18 18 ENDCHAR STARTCHAR apl_2vertical ENCODING 384 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 66 66 66 66 66 66 66 66 66 66 66 66 ENDCHAR STARTCHAR apl_2horizontal ENCODING 385 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 fe 00 00 00 00 00 00 00 00 fe 00 ENDCHAR STARTCHAR apl_leftvbar ENCODING 386 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 60 60 60 60 60 60 60 60 60 60 60 60 ENDCHAR STARTCHAR apl_rightvbar ENCODING 387 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 06 06 06 06 06 06 06 06 06 06 06 06 ENDCHAR STARTCHAR apl_midvbar ENCODING 388 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 18 18 18 18 18 18 18 18 18 18 18 18 ENDCHAR STARTCHAR apl_leftsolid ENCODING 393 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 ENDCHAR STARTCHAR apl_rightsolid ENCODING 394 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 1e 1e 1e 1e 1e 1e 1e 1e 1e 1e 1e 1e ENDCHAR STARTCHAR apl_topsolid ENCODING 395 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP fe fe fe fe fe fe 00 00 00 00 00 00 ENDCHAR STARTCHAR apl_bottomsolid ENCODING 396 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 00 00 00 00 00 fe fe fe fe fe fe ENDCHAR STARTCHAR apl_solid ENCODING 397 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP fe fe fe fe fe fe fe fe fe fe fe fe ENDCHAR STARTCHAR apl_midhbar ENCODING 402 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 00 00 00 00 fe 00 00 00 00 00 00 ENDCHAR STARTCHAR apl_lowerleft ENCODING 419 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 18 18 18 18 18 1e 00 00 00 00 00 00 ENDCHAR STARTCHAR apl_upperleft ENCODING 420 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 00 00 00 00 1e 18 18 18 18 18 18 ENDCHAR STARTCHAR apl_leftjoin ENCODING 421 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 18 18 18 18 18 1e 18 18 18 18 18 18 ENDCHAR STARTCHAR apl_bottomjoin ENCODING 422 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 18 18 18 18 18 fe 00 00 00 00 00 00 ENDCHAR STARTCHAR apl_intersect ENCODING 427 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 18 18 18 18 18 fe 18 18 18 18 18 18 ENDCHAR STARTCHAR apl_lowerright ENCODING 428 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 18 18 18 18 18 f8 00 00 00 00 00 00 ENDCHAR STARTCHAR apl_upperright ENCODING 429 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 00 00 00 00 f8 18 18 18 18 18 18 ENDCHAR STARTCHAR apl_rightjoin ENCODING 430 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 18 18 18 18 18 f8 18 18 18 18 18 18 ENDCHAR STARTCHAR apl_topjoin ENCODING 431 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 00 00 00 00 fe 18 18 18 18 18 18 ENDCHAR STARTCHAR dec_solid ENCODING 512 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 3c 3c 3c 3c 3c 3c 3c 3c 3c 3c 3c 3c ENDCHAR STARTCHAR dec_filled_circle ENCODING 513 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 00 00 18 3c 7e 3c 18 00 00 00 00 ENDCHAR STARTCHAR dec_halftone_block ENCODING 514 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP aa 54 aa 54 aa 54 aa 54 aa 54 aa 54 ENDCHAR STARTCHAR dec_ht ENCODING 515 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 78 78 78 78 78 1e 0c 0c 0c 0c 00 ENDCHAR STARTCHAR dec_ff ENCODING 516 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 78 60 70 60 60 1e 18 1c 18 18 00 ENDCHAR STARTCHAR dec_cr ENCODING 517 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 38 60 60 60 38 1c 1e 1c 1e 1e 00 ENDCHAR STARTCHAR dec_lf ENCODING 518 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 60 60 60 60 78 1e 18 1c 18 18 00 ENDCHAR STARTCHAR dec_degree ENCODING 519 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 18 3c 18 00 00 00 00 00 00 00 00 ENDCHAR STARTCHAR dec_plusminus ENCODING 520 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 00 18 18 7e 18 18 00 7e 00 00 00 ENDCHAR STARTCHAR dec_nl ENCODING 521 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 6c 7c 7c 6c 6c 18 18 18 18 1e 00 ENDCHAR STARTCHAR dec_vt ENCODING 522 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 78 78 78 30 30 1e 0c 0c 0c 0c 00 ENDCHAR STARTCHAR dec_lowerright ENCODING 523 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 18 18 18 18 18 f8 00 00 00 00 00 00 ENDCHAR STARTCHAR dec_upperright ENCODING 524 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 00 00 00 00 f8 18 18 18 18 18 18 ENDCHAR STARTCHAR dec_upperleft ENCODING 525 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 00 00 00 00 1e 18 18 18 18 18 18 ENDCHAR STARTCHAR dec_lowerleft ENCODING 526 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 18 18 18 18 18 1e 00 00 00 00 00 00 ENDCHAR STARTCHAR dec_intersect ENCODING 527 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 18 18 18 18 18 fe 18 18 18 18 18 18 ENDCHAR STARTCHAR dec_hbar1 ENCODING 528 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 fe 00 00 00 00 00 00 00 00 00 00 ENDCHAR STARTCHAR dec_hbar2 ENCODING 529 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 00 00 fe 00 00 00 00 00 00 00 00 ENDCHAR STARTCHAR dec_hbar3 ENCODING 530 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 00 00 00 00 fe 00 00 00 00 00 00 ENDCHAR STARTCHAR dec_hbar4 ENCODING 531 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 00 00 00 00 00 00 fe 00 00 00 00 ENDCHAR STARTCHAR dec_hbar5 ENCODING 532 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 00 00 00 00 00 00 00 00 fe 00 00 ENDCHAR STARTCHAR dec_leftjoin ENCODING 533 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 18 18 18 18 18 1e 18 18 18 18 18 18 ENDCHAR STARTCHAR dec_rightjoin ENCODING 534 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 18 18 18 18 18 f8 18 18 18 18 18 18 ENDCHAR STARTCHAR dec_bottomjoin ENCODING 535 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 18 18 18 18 18 fe 00 00 00 00 00 00 ENDCHAR STARTCHAR dec_topjoin ENCODING 536 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 00 00 00 00 fe 18 18 18 18 18 18 ENDCHAR STARTCHAR dec_vbar ENCODING 537 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 18 18 18 18 18 18 18 18 18 18 18 18 ENDCHAR STARTCHAR dec_notgreater ENCODING 538 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 00 0c 18 30 60 30 18 0c 00 7c 00 ENDCHAR STARTCHAR dec_notless ENCODING 539 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 00 30 18 0c 06 0c 18 30 00 3e 00 ENDCHAR STARTCHAR dec_pi ENCODING 540 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 00 00 7e 3c 3c 3c 3c 6c 00 00 00 ENDCHAR STARTCHAR dec_notequal ENCODING 541 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 00 06 0c 7e 18 7e 30 60 00 00 00 ENDCHAR STARTCHAR dec_sterling ENCODING 542 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 18 3c 30 7c 30 30 36 7c 00 00 00 ENDCHAR STARTCHAR dec_periodcentered ENCODING 543 SWIDTH 563 0 DWIDTH 7 0 BBX 7 12 0 -3 BITMAP 00 00 00 00 18 18 00 00 00 00 00 00 ENDCHAR ENDFONT suite3270-4.1/x3270/3270gt16.bdf000066400000000000000000001505701413735575200154040ustar00rootroot00000000000000STARTFONT 2.1 COMMENT "16-point 3270 font" COMMENT "Uses nonstandard ordering:" COMMENT " Page 0: EBCDIC US-International set, CG order" COMMENT " Page 1: EBCDIC APL/APL2 set, CG order (incomplete)" COMMENT " Page 2: (first 16 characters only) DEC line-drawing characters from" COMMENT " fixed-width X fonts" COMMENT "" COMMENT "Copyright (c) 1993-2009, Paul Mattes." COMMENT "Copyright (c) 1990, Georgia Tech Research Corporation (GTRC)," COMMENT " Atlanta, GA 30332." COMMENT "All rights reserved." COMMENT "" COMMENT "Redistribution and use in source and binary forms, with or" COMMENT "without modification, are permitted provided that the following" COMMENT "conditions are met:" COMMENT " * Redistributions of source code must retain the above" COMMENT " copyright notice, this list of conditions and the following" COMMENT " disclaimer." COMMENT " * Redistributions in binary form must reproduce the above" COMMENT " copyright notice, this list of conditions and the following" COMMENT " disclaimer in the documentation and/or other materials" COMMENT " provided with the distribution." COMMENT " * Neither the names of Paul Mattes, GTRC nor their" COMMENT " contributors may be used to endorse or promote products" COMMENT " derived from this software without specific prior written" COMMENT " permission." COMMENT "" COMMENT "THIS SOFTWARE IS PROVIDED BY PAUL MATTES AND GTRC 'AS IS' AND" COMMENT "ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED" COMMENT "TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR" COMMENT "A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL PAUL" COMMENT "MATTES OR GTRC BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL," COMMENT "SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT" COMMENT "NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;" COMMENT "LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER" COMMENT "CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT," COMMENT "STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)" COMMENT "ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF" COMMENT "ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." FONT 3270gt16 SIZE 16 72 72 FONTBOUNDINGBOX 9 16 0 -4 STARTPROPERTIES 27 FOUNDRY "GaTech" FAMILY_NAME "3270" WEIGHT_NAME "Medium" SLANT "R" SETWIDTH_NAME "Normal" ADD_STYLE_NAME "" PIXEL_SIZE 16 POINT_SIZE 160 RESOLUTION_X 72 RESOLUTION_Y 72 SPACING "C" AVERAGE_WIDTH 90 CHARSET_REGISTRY "3270cg" CHARSET_ENCODING "1" MIN_SPACE 9 NORM_SPACE 9 MAX_SPACE 9 END_SPACE 9 AVG_CAPITAL_WIDTH 90 AVG_LOWERCASE_WIDTH 90 CAP_HEIGHT 9 X_HEIGHT 7 RELATIVE_WEIGHT 50 DESTINATION "Video Text" FONT_ASCENT 12 FONT_DESCENT 4 DEFAULT_CHAR 514 ENDPROPERTIES CHARS 312 STARTCHAR null ENCODING 0 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR nobreakspace ENCODING 1 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR euro ENCODING 2 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0e00 1100 2000 7f00 2000 7e00 2000 1100 0e00 0000 0000 0000 0000 ENDCHAR STARTCHAR cr ENCODING 3 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR nl ENCODING 4 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR em ENCODING 5 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR eightones ENCODING 6 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 1c00 3e00 7f00 7f00 7f00 3e00 1c00 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR hyphen ENCODING 7 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 0000 0000 3e00 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR greater ENCODING 8 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 2000 1000 0800 0400 0200 0400 0800 1000 2000 0000 0000 0000 0000 ENDCHAR STARTCHAR less ENCODING 9 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0200 0400 0800 1000 2000 1000 0800 0400 0200 0000 0000 0000 0000 ENDCHAR STARTCHAR bracketleft ENCODING 10 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 1c00 1000 1000 1000 1000 1000 1000 1000 1000 1000 1c00 0000 0000 0000 ENDCHAR STARTCHAR bracketright ENCODING 11 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 1c00 0400 0400 0400 0400 0400 0400 0400 0400 0400 1c00 0000 0000 0000 ENDCHAR STARTCHAR parenright ENCODING 12 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 1000 0800 0400 0400 0400 0400 0400 0800 1000 0000 0000 0000 0000 ENDCHAR STARTCHAR parenleft ENCODING 13 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0400 0800 1000 1000 1000 1000 1000 0800 0400 0000 0000 0000 0000 ENDCHAR STARTCHAR braceright ENCODING 14 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 3000 0800 0800 0800 0800 0400 0800 0800 0800 0800 3000 0000 0000 0000 ENDCHAR STARTCHAR braceleft ENCODING 15 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0c00 1000 1000 1000 1000 2000 1000 1000 1000 1000 0c00 0000 0000 0000 ENDCHAR STARTCHAR space ENCODING 16 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR equal ENCODING 17 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 7f00 0000 0000 7f00 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR apostrophe ENCODING 18 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0800 0800 0800 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR quotedbl ENCODING 19 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 2400 2400 2400 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR slash ENCODING 20 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0100 0200 0400 0800 1000 2000 4000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR backslash ENCODING 21 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 4000 2000 1000 0800 0400 0200 0100 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR bar ENCODING 22 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0800 0800 0800 0800 0800 0800 0800 0800 0800 0800 0800 0800 0800 0000 0000 ENDCHAR STARTCHAR brokenbar ENCODING 23 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0800 0800 0800 0800 0800 0000 0000 0800 0800 0800 0800 0800 0000 0000 ENDCHAR STARTCHAR question ENCODING 24 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 1e00 2100 2100 0200 0400 0800 0800 0000 0000 0800 0000 0000 0000 0000 ENDCHAR STARTCHAR exclam ENCODING 25 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0800 0800 0800 0800 0800 0800 0800 0000 0000 0800 0000 0000 0000 0000 ENDCHAR STARTCHAR dollar ENCODING 26 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0800 0800 3f00 4800 4800 3e00 0900 0900 7e00 0800 0800 0000 0000 0000 ENDCHAR STARTCHAR cent ENCODING 27 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0800 0800 3e00 4800 4800 4800 3e00 0800 0800 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR sterling ENCODING 28 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0c00 1200 1000 1000 7c00 1000 1000 1000 7100 6e00 0000 0000 0000 0000 ENDCHAR STARTCHAR yen ENCODING 29 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 4100 2200 1400 0800 7f00 0800 0800 7f00 0800 0800 0000 0000 0000 0000 ENDCHAR STARTCHAR paragraph ENCODING 30 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 7800 4400 4400 4400 7800 4000 4400 4e00 4400 4400 0400 0000 0000 0000 ENDCHAR STARTCHAR currency ENCODING 31 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 4100 2200 1c00 2200 2200 2200 1c00 2200 4100 0000 0000 0000 0000 ENDCHAR STARTCHAR 0 ENCODING 32 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 1c00 2200 4100 4100 4900 4900 4100 4100 2200 1c00 0000 0000 0000 0000 ENDCHAR STARTCHAR 1 ENCODING 33 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0800 1800 2800 0800 0800 0800 0800 0800 0800 0800 0000 0000 0000 0000 ENDCHAR STARTCHAR 2 ENCODING 34 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 1e00 2100 4100 0100 0200 0400 0800 1000 2000 7f00 0000 0000 0000 0000 ENDCHAR STARTCHAR 3 ENCODING 35 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 3f00 0100 0200 0400 0c00 0200 0100 0100 4200 3c00 0000 0000 0000 0000 ENDCHAR STARTCHAR 4 ENCODING 36 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0600 0a00 1200 2200 4200 4200 7f00 0200 0200 0200 0000 0000 0000 0000 ENDCHAR STARTCHAR 5 ENCODING 37 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 7f00 4000 4000 7c00 0200 0100 0100 0100 0200 7c00 0000 0000 0000 0000 ENDCHAR STARTCHAR 6 ENCODING 38 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 1000 2000 4000 4000 5c00 6200 4100 4100 2200 1c00 0000 0000 0000 0000 ENDCHAR STARTCHAR 7 ENCODING 39 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 7f00 0100 0200 0400 0800 1000 1000 1000 1000 1000 0000 0000 0000 0000 ENDCHAR STARTCHAR 8 ENCODING 40 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 1c00 2200 2200 2200 1c00 2200 4100 4100 2200 1c00 0000 0000 0000 0000 ENDCHAR STARTCHAR 9 ENCODING 41 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 1e00 2100 4100 4300 4500 3900 0100 0100 0100 0200 0000 0000 0000 0000 ENDCHAR STARTCHAR ssharp ENCODING 42 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 1800 2400 4400 4800 4400 4200 4100 4100 5100 4e00 0000 0000 0000 0000 ENDCHAR STARTCHAR section ENCODING 43 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 1c00 2000 2000 5000 4800 4400 2200 1200 0a00 0400 0400 3800 0000 0000 ENDCHAR STARTCHAR numbersign ENCODING 44 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 2400 7e00 2400 2400 7e00 2400 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR at ENCODING 45 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 3e00 4100 4100 4d00 5500 5e00 4000 4000 4000 3f00 0000 0000 0000 0000 ENDCHAR STARTCHAR percent ENCODING 46 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 2000 5000 2100 0200 0400 0800 1000 2000 4200 0500 0200 0000 0000 0000 ENDCHAR STARTCHAR underscore ENCODING 47 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 7f00 0000 0000 0000 ENDCHAR STARTCHAR ampersand ENCODING 48 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 3000 4800 4800 4800 3000 5100 4a00 4400 3a00 0100 0000 0000 0000 ENDCHAR STARTCHAR minus ENCODING 49 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 0000 0000 3e00 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR period ENCODING 50 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 1800 1800 0000 0000 0000 0000 ENDCHAR STARTCHAR comma ENCODING 51 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0c00 0c00 1800 3000 0000 0000 ENDCHAR STARTCHAR colon ENCODING 52 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 0000 1800 1800 0000 0000 1800 1800 0000 0000 0000 0000 ENDCHAR STARTCHAR plus ENCODING 53 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0800 0800 0800 7f00 0800 0800 0800 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR notsign ENCODING 54 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 7f00 0100 0100 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR macron ENCODING 55 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 7f00 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR degree ENCODING 56 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 1800 2400 2400 1800 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR periodcentered ENCODING 57 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 0000 1800 1800 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR asciicircum ENCODING 58 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0800 1400 2200 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR asciitilde ENCODING 59 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 3000 4900 0600 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR diaeresis ENCODING 60 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 6300 6300 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR grave ENCODING 61 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 1000 0800 0400 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR acute ENCODING 62 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0400 0800 1000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR cedilla ENCODING 63 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0800 0800 0800 3000 0000 0000 ENDCHAR STARTCHAR agrave ENCODING 64 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 2000 1000 0800 0000 3c00 0200 0200 3e00 4200 4200 3f00 0000 0000 0000 0000 ENDCHAR STARTCHAR egrave ENCODING 65 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 2000 1000 0800 0000 3c00 4200 4200 7e00 4000 4000 3e00 0000 0000 0000 0000 ENDCHAR STARTCHAR igrave ENCODING 66 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 1000 0800 0400 0000 0000 0800 0800 0800 0800 0800 0800 0000 0000 0000 0000 ENDCHAR STARTCHAR ograve ENCODING 67 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 2000 1000 0800 0000 3c00 4200 4200 4200 4200 4200 3c00 0000 0000 0000 0000 ENDCHAR STARTCHAR ugrave ENCODING 68 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 2000 1000 0800 0000 4200 4200 4200 4200 4200 4200 3d00 0000 0000 0000 0000 ENDCHAR STARTCHAR atilde ENCODING 69 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 1900 2600 0000 3c00 0200 0200 3e00 4200 4200 3f00 0000 0000 0000 0000 ENDCHAR STARTCHAR otilde ENCODING 70 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 3200 4c00 0000 3c00 4200 4200 4200 4200 4200 3c00 0000 0000 0000 0000 ENDCHAR STARTCHAR ydiaeresis ENCODING 71 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 2400 0000 0000 4200 4200 4200 4200 2200 1400 0800 1000 2000 4000 0000 ENDCHAR STARTCHAR Yacute ENCODING 72 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0200 0400 0800 4100 2200 1400 0800 0800 0800 0800 0800 0000 0000 0000 0000 ENDCHAR STARTCHAR yacute ENCODING 73 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0200 0400 0800 0000 4200 4200 4200 4200 2200 1400 0800 1000 2000 4000 0000 ENDCHAR STARTCHAR eacute ENCODING 74 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0200 0400 0800 0000 3c00 4200 4200 7e00 4000 4000 3e00 0000 0000 0000 0000 ENDCHAR STARTCHAR onequarter ENCODING 75 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 2000 6000 2000 2000 2000 2000 0200 0600 0a00 0f00 0200 0200 0000 0000 0000 ENDCHAR STARTCHAR onehalf ENCODING 76 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 2000 6000 2000 2000 2000 2000 0600 0900 0100 0600 0800 0f00 0000 0000 0000 ENDCHAR STARTCHAR threequarters ENCODING 77 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 7000 1000 2000 1000 5000 2000 0200 0600 0a00 0f00 0200 0200 0000 0000 0000 ENDCHAR STARTCHAR udiaeresis ENCODING 78 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 2400 0000 0000 4200 4200 4200 4200 4200 4200 3d00 0000 0000 0000 0000 ENDCHAR STARTCHAR ccedilla ENCODING 79 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 1e00 2000 4000 4000 4000 2000 1e00 0800 3800 0000 0000 ENDCHAR STARTCHAR adiaeresis ENCODING 80 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 2400 0000 0000 3c00 0200 0200 3e00 4200 4200 3f00 0000 0000 0000 0000 ENDCHAR STARTCHAR ediaeresis ENCODING 81 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 2400 0000 0000 3c00 4200 4200 7e00 4000 4000 3e00 0000 0000 0000 0000 ENDCHAR STARTCHAR idiaeresis ENCODING 82 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 2200 0000 0000 0800 0800 0800 0800 0800 0800 0800 0000 0000 0000 0000 ENDCHAR STARTCHAR odiaeresis ENCODING 83 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 2400 0000 0000 3c00 4200 4200 4200 4200 4200 3c00 0000 0000 0000 0000 ENDCHAR STARTCHAR mu ENCODING 84 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 4200 4200 4200 4200 4200 6200 5d00 4000 4000 4000 0000 ENDCHAR STARTCHAR acircumflex ENCODING 85 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0800 1400 0000 3c00 0200 0200 3e00 4200 4200 3f00 0000 0000 0000 0000 ENDCHAR STARTCHAR ecircumflex ENCODING 86 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0800 1400 0000 3c00 4200 4200 7e00 4000 4000 3e00 0000 0000 0000 0000 ENDCHAR STARTCHAR icircumflex ENCODING 87 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0800 1400 0000 0000 0800 0800 0800 0800 0800 0800 0000 0000 0000 0000 ENDCHAR STARTCHAR ocircumflex ENCODING 88 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0800 1400 0000 1c00 2200 2200 2200 2200 2200 1c00 0000 0000 0000 0000 ENDCHAR STARTCHAR ucircumflex ENCODING 89 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 1000 2800 0000 4400 4400 4400 4400 4400 4400 3a00 0000 0000 0000 0000 ENDCHAR STARTCHAR aacute ENCODING 90 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0200 0400 0800 0000 3c00 0200 0200 3e00 4200 4200 3f00 0000 0000 0000 0000 ENDCHAR STARTCHAR multiply ENCODING 91 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 4100 2200 1400 0800 1400 2200 4100 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR iacute ENCODING 92 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0400 0800 1000 0000 0000 0800 0800 0800 0800 0800 0800 0000 0000 0000 0000 ENDCHAR STARTCHAR oacute ENCODING 93 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0400 0800 1000 0000 3c00 4200 4200 4200 4200 4200 3c00 0000 0000 0000 0000 ENDCHAR STARTCHAR uacute ENCODING 94 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0400 0800 1000 0000 4200 4200 4200 4200 4200 4200 3d00 0000 0000 0000 0000 ENDCHAR STARTCHAR ntilde ENCODING 95 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 1900 2600 0000 5e00 2100 2100 2100 2100 2100 2100 0000 0000 0000 0000 ENDCHAR STARTCHAR Agrave ENCODING 96 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0800 0400 0200 0800 1400 2200 4100 7f00 4100 4100 4100 0000 0000 0000 0000 ENDCHAR STARTCHAR Egrave ENCODING 97 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 2000 1000 0800 7f00 4000 4000 7c00 4000 4000 4000 7f00 0000 0000 0000 0000 ENDCHAR STARTCHAR Igrave ENCODING 98 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 1000 0800 0400 0000 1c00 0800 0800 0800 0800 0800 1c00 0000 0000 0000 0000 ENDCHAR STARTCHAR Ograve ENCODING 99 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 2000 1000 0800 3e00 4100 4100 4100 4100 4100 4100 3e00 0000 0000 0000 0000 ENDCHAR STARTCHAR Ugrave ENCODING 100 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 2000 1000 0800 4100 4100 4100 4100 4100 4100 4100 3e00 0000 0000 0000 0000 ENDCHAR STARTCHAR Atilde ENCODING 101 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 1900 2600 0000 0800 1400 2200 4100 7f00 4100 4100 0000 0000 0000 0000 ENDCHAR STARTCHAR Otilde ENCODING 102 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 1900 2600 3e00 4100 4100 4100 4100 4100 4100 4100 3e00 0000 0000 0000 0000 ENDCHAR STARTCHAR onesuperior ENCODING 103 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0800 1800 0800 0800 0800 0800 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR twosuperior ENCODING 104 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 1800 2400 0400 0800 1000 3c00 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR threesuperior ENCODING 105 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 3c00 0400 0800 0400 2400 1800 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR ordfeminine ENCODING 106 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 3c00 0200 0200 3e00 4200 4200 3f00 0000 7f00 0000 0000 0000 0000 ENDCHAR STARTCHAR masculine ENCODING 107 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 3e00 4100 4100 4100 4100 4100 3e00 0000 7f00 0000 0000 0000 0000 ENDCHAR STARTCHAR guillemotleft ENCODING 108 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0900 1200 2400 4800 2400 1200 0900 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR guillemotright ENCODING 109 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 4800 2400 1200 0900 1200 2400 4800 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR exclamdown ENCODING 110 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0800 0000 0000 0800 0800 0800 0800 0800 0800 0800 0000 0000 0000 0000 ENDCHAR STARTCHAR questiondown ENCODING 111 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0800 0000 0000 0800 0800 0400 0200 2100 2100 1e00 0000 0000 0000 0000 ENDCHAR STARTCHAR Adiaeresis ENCODING 112 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 2200 0000 0800 1400 2200 4100 4100 7f00 4100 4100 4100 0000 0000 0000 0000 ENDCHAR STARTCHAR Ediaeresis ENCODING 113 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 2200 0000 7f00 4000 4000 4000 7c00 4000 4000 4000 7f00 0000 0000 0000 0000 ENDCHAR STARTCHAR Idiaeresis ENCODING 114 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 2200 0000 1c00 0800 0800 0800 0800 0800 0800 0800 1c00 0000 0000 0000 0000 ENDCHAR STARTCHAR Odiaeresis ENCODING 115 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 2200 0000 3e00 4100 4100 4100 4100 4100 4100 4100 3e00 0000 0000 0000 0000 ENDCHAR STARTCHAR Udiaeresis ENCODING 116 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 2200 0000 4100 4100 4100 4100 4100 4100 4100 4100 3e00 0000 0000 0000 0000 ENDCHAR STARTCHAR Acircumflex ENCODING 117 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0800 1400 0000 0800 1400 2200 4100 7f00 4100 4100 4100 0000 0000 0000 0000 ENDCHAR STARTCHAR Ecircumflex ENCODING 118 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0800 1400 0000 7f00 4000 4000 4000 7c00 4000 4000 7f00 0000 0000 0000 0000 ENDCHAR STARTCHAR Icircumflex ENCODING 119 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0800 1400 0000 1c00 0800 0800 0800 0800 0800 0800 1c00 0000 0000 0000 0000 ENDCHAR STARTCHAR Ocircumflex ENCODING 120 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0800 1400 0000 3e00 4100 4100 4100 4100 4100 4100 3e00 0000 0000 0000 0000 ENDCHAR STARTCHAR Ucircumflex ENCODING 121 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0800 1400 0000 4100 4100 4100 4100 4100 4100 4100 3e00 0000 0000 0000 0000 ENDCHAR STARTCHAR Aacute ENCODING 122 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0800 1000 2000 0800 1400 2200 4100 7f00 4100 4100 4100 0000 0000 0000 0000 ENDCHAR STARTCHAR Eacute ENCODING 123 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0200 0400 0800 7f00 4000 4000 4000 7c00 4000 4000 7f00 0000 0000 0000 0000 ENDCHAR STARTCHAR Iacute ENCODING 124 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0400 0800 1000 0000 1c00 0800 0800 0800 0800 0800 1c00 0000 0000 0000 0000 ENDCHAR STARTCHAR Oacute ENCODING 125 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0200 0400 0800 3e00 4100 4100 4100 4100 4100 4100 3e00 0000 0000 0000 0000 ENDCHAR STARTCHAR Uacute ENCODING 126 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0200 0400 0800 4100 4100 4100 4100 4100 4100 4100 3e00 0000 0000 0000 0000 ENDCHAR STARTCHAR Ntilde ENCODING 127 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 1900 2600 0000 4100 6100 5100 4900 4500 4300 4100 0000 0000 0000 0000 ENDCHAR STARTCHAR a ENCODING 128 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 3c00 0200 0200 3e00 4200 4200 3f00 0000 0000 0000 0000 ENDCHAR STARTCHAR b ENCODING 129 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 4000 4000 4000 7800 4400 4200 4200 4200 4400 7800 0000 0000 0000 0000 ENDCHAR STARTCHAR c ENCODING 130 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 1e00 2000 4000 4000 4000 2000 1e00 0000 0000 0000 0000 ENDCHAR STARTCHAR d ENCODING 131 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0200 0200 0200 1e00 2200 4200 4200 4200 2200 1e00 0000 0000 0000 0000 ENDCHAR STARTCHAR e ENCODING 132 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 3c00 4200 4200 7e00 4000 4000 3e00 0000 0000 0000 0000 ENDCHAR STARTCHAR f ENCODING 133 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0e00 1000 1000 7c00 1000 1000 1000 1000 1000 1000 0000 0000 0000 0000 ENDCHAR STARTCHAR g ENCODING 134 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 1e00 2100 4100 4100 2300 1d00 0100 2100 1e00 0000 0000 ENDCHAR STARTCHAR h ENCODING 135 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 4000 4000 4000 5c00 6200 4200 4200 4200 4200 4200 0000 0000 0000 0000 ENDCHAR STARTCHAR i ENCODING 136 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0800 0000 0000 0800 0800 0800 0800 0800 0800 0800 0000 0000 0000 0000 ENDCHAR STARTCHAR j ENCODING 137 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0200 0000 0000 0200 0200 0200 0200 0200 0200 0200 2200 1c00 0000 0000 ENDCHAR STARTCHAR k ENCODING 138 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 2000 2000 2000 2200 2400 2800 3000 2800 2400 2200 0000 0000 0000 0000 ENDCHAR STARTCHAR l ENCODING 139 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0800 0800 0800 0800 0800 0800 0800 0800 0800 0c00 0000 0000 0000 0000 ENDCHAR STARTCHAR m ENCODING 140 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 3600 4900 4900 4900 4900 4900 4900 0000 0000 0000 0000 ENDCHAR STARTCHAR n ENCODING 141 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 5e00 2100 2100 2100 2100 2100 2100 0000 0000 0000 0000 ENDCHAR STARTCHAR o ENCODING 142 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 3c00 4200 4200 4200 4200 4200 3c00 0000 0000 0000 0000 ENDCHAR STARTCHAR p ENCODING 143 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 7800 4400 4200 4200 4200 4400 7800 4000 4000 4000 0000 ENDCHAR STARTCHAR q ENCODING 144 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 1e00 2200 4200 4200 2200 1e00 0200 0200 0300 0000 0000 ENDCHAR STARTCHAR r ENCODING 145 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 4e00 3100 2000 2000 2000 2000 2000 0000 0000 0000 0000 ENDCHAR STARTCHAR s ENCODING 146 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 3c00 4200 2000 1800 0400 4200 3c00 0000 0000 0000 0000 ENDCHAR STARTCHAR t ENCODING 147 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0800 0800 0800 3e00 0800 0800 0800 0800 0800 0800 0000 0000 0000 0000 ENDCHAR STARTCHAR u ENCODING 148 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 4200 4200 4200 4200 4200 4200 3d00 0000 0000 0000 0000 ENDCHAR STARTCHAR v ENCODING 149 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 4100 4100 2200 2200 1400 1400 0800 0000 0000 0000 0000 ENDCHAR STARTCHAR w ENCODING 150 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 4100 4100 4100 4900 4900 5500 2200 0000 0000 0000 0000 ENDCHAR STARTCHAR x ENCODING 151 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 4100 2200 1400 0800 1400 2200 4100 0000 0000 0000 0000 ENDCHAR STARTCHAR y ENCODING 152 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 4200 4200 4200 4200 2200 1400 0800 1000 2000 4000 0000 ENDCHAR STARTCHAR z ENCODING 153 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 7f00 0200 0400 0800 1000 2000 7f00 0000 0000 0000 0000 ENDCHAR STARTCHAR ae ENCODING 154 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 7600 0900 1900 2f00 4800 4800 3700 0000 0000 0000 0000 ENDCHAR STARTCHAR oslash ENCODING 155 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 1d00 2200 2600 2a00 3200 2200 5c00 0000 0000 0000 0000 ENDCHAR STARTCHAR aring ENCODING 156 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 1c00 1c00 0000 3c00 0200 0200 3e00 4200 4200 3f00 0000 0000 0000 0000 ENDCHAR STARTCHAR division ENCODING 157 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 1800 1800 0000 7e00 0000 1800 1800 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR fm ENCODING 158 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 7f00 7f00 0000 0c00 0c00 0000 0000 0c00 0c00 1800 3000 0000 0000 0000 ENDCHAR STARTCHAR dup ENCODING 159 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 7f00 7f00 0000 0800 4900 2a00 1400 2a00 4900 0800 0000 0000 0000 0000 ENDCHAR STARTCHAR A ENCODING 160 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0800 1400 2200 4100 4100 7f00 4100 4100 4100 0000 0000 0000 0000 ENDCHAR STARTCHAR B ENCODING 161 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 7c00 2200 2100 2200 3c00 2200 2100 2200 7c00 0000 0000 0000 0000 ENDCHAR STARTCHAR C ENCODING 162 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0e00 1100 2000 4000 4000 4000 2000 1100 0e00 0000 0000 0000 0000 ENDCHAR STARTCHAR D ENCODING 163 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 7c00 2200 2100 2100 2100 2100 2100 2200 7c00 0000 0000 0000 0000 ENDCHAR STARTCHAR E ENCODING 164 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 7f00 4000 4000 4000 7c00 4000 4000 4000 7f00 0000 0000 0000 0000 ENDCHAR STARTCHAR F ENCODING 165 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 7f00 4000 4000 4000 7e00 4000 4000 4000 4000 0000 0000 0000 0000 ENDCHAR STARTCHAR G ENCODING 166 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 1c00 2200 4000 4000 4000 4f00 4200 2200 1e00 0000 0000 0000 0000 ENDCHAR STARTCHAR H ENCODING 167 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 4100 4100 4100 4100 7f00 4100 4100 4100 4100 0000 0000 0000 0000 ENDCHAR STARTCHAR I ENCODING 168 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 1c00 0800 0800 0800 0800 0800 0800 0800 1c00 0000 0000 0000 0000 ENDCHAR STARTCHAR J ENCODING 169 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0e00 0400 0400 0400 0400 0400 4400 4400 3800 0000 0000 0000 0000 ENDCHAR STARTCHAR K ENCODING 170 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 4100 4200 4400 4800 5000 6800 4400 4200 4100 0000 0000 0000 0000 ENDCHAR STARTCHAR L ENCODING 171 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 4000 4000 4000 4000 4000 4000 4000 4000 7f00 0000 0000 0000 0000 ENDCHAR STARTCHAR M ENCODING 172 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 4100 6300 5500 4900 4900 4100 4100 4100 4100 0000 0000 0000 0000 ENDCHAR STARTCHAR N ENCODING 173 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 4100 6100 5100 4900 4500 4300 4100 4100 4100 0000 0000 0000 0000 ENDCHAR STARTCHAR O ENCODING 174 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 3e00 4100 4100 4100 4100 4100 4100 4100 3e00 0000 0000 0000 0000 ENDCHAR STARTCHAR P ENCODING 175 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 7c00 4200 4100 4100 4200 7c00 4000 4000 4000 0000 0000 0000 0000 ENDCHAR STARTCHAR Q ENCODING 176 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 1c00 2200 4100 4100 4100 4100 4900 2a00 1c00 0200 0100 0000 0000 ENDCHAR STARTCHAR R ENCODING 177 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 7e00 4100 4100 4100 7e00 4800 4400 4200 4100 0000 0000 0000 0000 ENDCHAR STARTCHAR S ENCODING 178 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 3e00 4100 4000 3000 0800 0600 0100 4100 3e00 0000 0000 0000 0000 ENDCHAR STARTCHAR T ENCODING 179 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 7f00 0800 0800 0800 0800 0800 0800 0800 0800 0000 0000 0000 0000 ENDCHAR STARTCHAR U ENCODING 180 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 4100 4100 4100 4100 4100 4100 4100 4100 3e00 0000 0000 0000 0000 ENDCHAR STARTCHAR V ENCODING 181 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 4100 4100 2200 2200 2200 1400 1400 0800 0800 0000 0000 0000 0000 ENDCHAR STARTCHAR W ENCODING 182 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 4100 4100 4100 4100 4900 4900 4900 5500 2200 0000 0000 0000 0000 ENDCHAR STARTCHAR X ENCODING 183 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 4100 4100 2200 1400 0800 1400 2200 4100 4100 0000 0000 0000 0000 ENDCHAR STARTCHAR Y ENCODING 184 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 4100 2200 1400 0800 0800 0800 0800 0800 0800 0000 0000 0000 0000 ENDCHAR STARTCHAR Z ENCODING 185 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 7f00 0100 0200 0400 0800 1000 2000 4000 7f00 0000 0000 0000 0000 ENDCHAR STARTCHAR AE ENCODING 186 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0f00 1400 2400 4400 4700 7c00 4400 4400 4700 0000 0000 0000 0000 ENDCHAR STARTCHAR Ooblique ENCODING 187 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 3e00 4100 4300 4500 4900 5100 6100 4100 3e00 0000 0000 0000 0000 ENDCHAR STARTCHAR Aring ENCODING 188 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 1c00 1c00 0800 1400 2200 4100 4100 7f00 4100 4100 4100 0000 0000 0000 0000 ENDCHAR STARTCHAR Ccedilla ENCODING 189 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0e00 1100 2000 4000 4000 4000 2000 1100 0e00 0400 3c00 0000 0000 ENDCHAR STARTCHAR semicolon ENCODING 190 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 0000 0c00 0c00 0000 0000 0c00 0c00 1800 3000 0000 0000 ENDCHAR STARTCHAR asterisk ENCODING 191 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0800 4900 2a00 1400 2a00 4900 0800 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR c0 ENCODING 192 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR c1 ENCODING 193 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR c2 ENCODING 194 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR c3 ENCODING 195 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR c4 ENCODING 196 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR c5 ENCODING 197 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR c6 ENCODING 198 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR c7 ENCODING 199 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR c8 ENCODING 200 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR c9 ENCODING 201 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR ca ENCODING 202 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR cb ENCODING 203 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR cc ENCODING 204 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR cd ENCODING 205 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR ce ENCODING 206 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR cf ENCODING 207 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR copyright ENCODING 208 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 3e00 4100 4900 5500 5100 5500 4900 4100 3e00 0000 0000 0000 0000 ENDCHAR STARTCHAR registered ENCODING 209 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 3e00 4100 5900 5500 5900 5500 5500 4100 3e00 0000 0000 0000 0000 ENDCHAR STARTCHAR boxA ENCODING 210 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 2000 5000 8800 8800 f800 8800 8800 0000 ff80 8080 8080 ff80 0000 0000 0000 ENDCHAR STARTCHAR insert ENCODING 211 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 0800 1c00 3e00 7700 e380 c180 8080 0000 0000 0000 0000 ENDCHAR STARTCHAR boxB ENCODING 212 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0f00 0480 0480 0700 0480 0480 0f00 0000 ff80 8080 8080 ff80 0000 0000 0000 ENDCHAR STARTCHAR box6 ENCODING 213 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 ff80 8080 9080 a080 a080 ac80 b280 a280 9c80 8080 ff80 0000 0000 ENDCHAR STARTCHAR plusminus ENCODING 214 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0800 0800 0800 7f00 0800 0800 0800 0000 7f00 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR ETH ENCODING 215 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 7c00 2200 2100 2100 7900 2100 2100 2200 7c00 0000 0000 0000 0000 ENDCHAR STARTCHAR rightarrow ENCODING 216 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 0400 0600 ff00 0600 0400 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR THORN ENCODING 217 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 4000 4000 7c00 4200 4100 4200 7c00 4000 4000 0000 0000 0000 0000 ENDCHAR STARTCHAR upshift ENCODING 218 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0800 1400 2200 4100 7700 1400 1400 1400 1400 1400 1c00 0000 0000 0000 ENDCHAR STARTCHAR human ENCODING 219 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 1c00 1400 1c00 0800 7f00 0800 0800 1400 2200 4100 0000 0000 0000 0000 ENDCHAR STARTCHAR underB ENCODING 220 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 3c00 1200 1200 1c00 1200 1200 3c00 0000 ff80 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR downshift ENCODING 221 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 1c00 1400 1400 1400 1400 1400 7700 4100 2200 1400 0800 0000 0000 0000 ENDCHAR STARTCHAR boxquestion ENCODING 222 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 ff80 8080 9c80 a280 a280 8280 8480 8880 8880 8080 8880 8080 ff80 0000 0000 ENDCHAR STARTCHAR boxsolid ENCODING 223 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 ff80 ff80 ff80 ff80 ff80 ff80 ff80 ff80 ff80 ff80 ff80 ff80 ff80 0000 0000 ENDCHAR STARTCHAR e0 ENCODING 224 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR e1 ENCODING 225 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR e2 ENCODING 226 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR e3 ENCODING 227 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR e4 ENCODING 228 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR e5 ENCODING 229 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR e6 ENCODING 230 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR e7 ENCODING 231 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR e8 ENCODING 232 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR e9 ENCODING 233 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR ea ENCODING 234 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR eb ENCODING 235 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR ec ENCODING 236 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR ed ENCODING 237 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR ee ENCODING 238 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR ef ENCODING 239 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR badcommhi ENCODING 240 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 8000 c000 e000 7000 3800 ff80 0e00 0700 0380 0180 0080 0000 0000 0000 ENDCHAR STARTCHAR commhi ENCODING 241 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 0000 0000 ff80 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR commjag ENCODING 242 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 0000 0000 fc00 0800 1000 2000 7f80 0000 0000 0000 0000 ENDCHAR STARTCHAR commlo ENCODING 243 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ff80 0000 0000 0000 0000 ENDCHAR STARTCHAR clockleft ENCODING 244 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0100 0800 0000 2000 0000 0080 4100 0100 0100 2100 0100 0800 0100 0000 ENDCHAR STARTCHAR clockright ENCODING 245 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 2000 0000 2800 4000 8000 0400 0000 0000 0800 0000 2000 0000 0000 0000 ENDCHAR STARTCHAR lock ENCODING 246 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 8080 c180 e380 f780 7f00 3e00 3e00 7f00 f780 e380 c180 8080 0000 0000 0000 ENDCHAR STARTCHAR eth ENCODING 247 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0a00 0400 0a00 0200 1e00 2200 4200 4200 4200 2200 1c00 0000 0000 0000 0000 ENDCHAR STARTCHAR leftarrow ENCODING 248 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 1000 3000 7f80 3000 1000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR thorn ENCODING 249 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 4000 4000 4000 7800 4400 4200 4200 4200 4400 7800 4000 4000 4000 0000 ENDCHAR STARTCHAR keyleft ENCODING 250 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0e00 1100 1180 1100 0e00 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR keyright ENCODING 251 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 0000 ff80 1d80 1d80 0180 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR box4 ENCODING 252 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 ff80 8080 8480 8c80 9480 a480 be80 8480 8480 8080 ff80 0000 0000 ENDCHAR STARTCHAR underA ENCODING 253 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0800 1400 2200 2200 3e00 2200 2200 0000 ff80 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR magcard ENCODING 254 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 ff80 8080 8080 8080 ff80 8080 ff80 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR boxhuman ENCODING 255 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 ff80 8080 9c80 9480 9c80 8880 ff80 8880 8880 9480 a280 c180 ff80 0000 0000 ENDCHAR STARTCHAR apl_space ENCODING 272 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR apl_bracketright ENCODING 316 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 1c00 0400 0400 0400 0400 0400 0400 0400 0400 0400 1c00 0000 0000 0000 ENDCHAR STARTCHAR apl_bracketleft ENCODING 328 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 1c00 1000 1000 1000 1000 1000 1000 1000 1000 1000 1c00 0000 0000 0000 ENDCHAR STARTCHAR apl_stile ENCODING 347 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0800 0800 0800 0800 0800 0800 0800 0800 0800 0800 0800 0800 0800 0800 0800 0800 ENDCHAR STARTCHAR apl_2vertical ENCODING 384 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 4100 4100 4100 4100 4100 4100 4100 4100 4100 4100 4100 4100 4100 4100 4100 4100 ENDCHAR STARTCHAR apl_2horizontal ENCODING 385 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 ff80 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ff80 0000 ENDCHAR STARTCHAR apl_leftvbar ENCODING 386 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 4000 4000 4000 4000 4000 4000 4000 4000 4000 4000 4000 4000 4000 4000 4000 4000 ENDCHAR STARTCHAR apl_rightvbar ENCODING 387 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0100 0100 0100 0100 0100 0100 0100 0100 0100 0100 0100 0100 0100 0100 0100 0100 ENDCHAR STARTCHAR apl_midvbar ENCODING 388 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0800 0800 0800 0800 0800 0800 0800 0800 0800 0800 0800 0800 0800 0800 0800 0800 ENDCHAR STARTCHAR apl_leftsolid ENCODING 393 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP f800 f800 f800 f800 f800 f800 f800 f800 f800 f800 f800 f800 f800 f800 f800 f800 ENDCHAR STARTCHAR apl_rightsolid ENCODING 394 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0f80 0f80 0f80 0f80 0f80 0f80 0f80 0f80 0f80 0f80 0f80 0f80 0f80 0f80 0f80 0f80 ENDCHAR STARTCHAR apl_topsolid ENCODING 395 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP ff80 ff80 ff80 ff80 ff80 ff80 ff80 ff80 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR apl_bottomsolid ENCODING 396 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 ff80 ff80 ff80 ff80 ff80 ff80 ff80 ff80 ENDCHAR STARTCHAR apl_solid ENCODING 397 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP ff80 ff80 ff80 ff80 ff80 ff80 ff80 ff80 ff80 ff80 ff80 ff80 ff80 ff80 ff80 ff80 ENDCHAR STARTCHAR apl_midhbar ENCODING 402 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 0000 0000 ff80 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR apl_lowerleft ENCODING 419 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0800 0800 0800 0800 0800 0800 0800 0f80 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR apl_upperleft ENCODING 420 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 0000 0000 0f80 0800 0800 0800 0800 0800 0800 0800 0800 ENDCHAR STARTCHAR apl_leftjoin ENCODING 421 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0800 0800 0800 0800 0800 0800 0800 0f80 0800 0800 0800 0800 0800 0800 0800 0800 ENDCHAR STARTCHAR apl_bottomjoin ENCODING 422 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0800 0800 0800 0800 0800 0800 0800 ff80 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR apl_intersect ENCODING 427 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0800 0800 0800 0800 0800 0800 0800 ff80 0800 0800 0800 0800 0800 0800 0800 0800 ENDCHAR STARTCHAR apl_lowerright ENCODING 428 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0800 0800 0800 0800 0800 0800 0800 f800 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR apl_upperright ENCODING 429 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 0000 0000 f800 0800 0800 0800 0800 0800 0800 0800 0800 ENDCHAR STARTCHAR apl_rightjoin ENCODING 430 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0800 0800 0800 0800 0800 0800 0800 f800 0800 0800 0800 0800 0800 0800 0800 0800 ENDCHAR STARTCHAR apl_topjoin ENCODING 431 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 0000 0000 ff80 0800 0800 0800 0800 0800 0800 0800 0800 ENDCHAR STARTCHAR dec_solid ENCODING 512 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 3e00 3e00 3e00 3e00 3e00 3e00 3e00 3e00 3e00 3e00 3e00 3e00 3e00 3e00 3e00 3e00 ENDCHAR STARTCHAR dec_filled_circle ENCODING 513 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 1c00 3e00 3e00 3e00 1c00 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR dec_halftone_block ENCODING 514 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP aa80 5500 aa80 5500 aa80 5500 aa80 5500 aa80 5500 aa80 5500 aa80 5500 aa80 5500 ENDCHAR STARTCHAR dec_ht ENCODING 515 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 4800 4800 7800 4800 4800 4800 0000 1f00 0400 0400 0400 0400 0400 0000 0000 ENDCHAR STARTCHAR dec_ff ENCODING 516 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 7800 4000 7000 4000 4000 4000 0000 0f00 0800 0e00 0800 0800 0800 0000 0000 ENDCHAR STARTCHAR dec_cr ENCODING 517 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 3000 4800 4000 4000 4800 3000 0000 0e00 0900 0e00 0900 0900 0900 0000 0000 ENDCHAR STARTCHAR dec_lf ENCODING 518 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 4000 4000 4000 4000 4000 7800 0000 0f00 0800 0e00 0800 0800 0800 0000 0000 ENDCHAR STARTCHAR dec_degree ENCODING 519 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 1800 2400 2400 1800 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR dec_plusminus ENCODING 520 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0800 0800 0800 7f00 0800 0800 0800 0000 7f00 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR dec_nl ENCODING 521 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 4800 6800 5800 4800 4800 4800 0000 0800 0800 0800 0800 0800 0f00 0000 0000 ENDCHAR STARTCHAR dec_vt ENCODING 522 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 4400 4400 4400 2800 2800 1000 0000 1f00 0400 0400 0400 0400 0400 0000 0000 ENDCHAR STARTCHAR dec_lowerright ENCODING 523 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0800 0800 0800 0800 0800 0800 0800 f800 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR dec_upperright ENCODING 524 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 0000 0000 f800 0800 0800 0800 0800 0800 0800 0800 0800 ENDCHAR STARTCHAR dec_upperleft ENCODING 525 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 0000 0000 0f80 0800 0800 0800 0800 0800 0800 0800 0800 ENDCHAR STARTCHAR dec_lowerleft ENCODING 526 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0800 0800 0800 0800 0800 0800 0800 0f80 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR dec_intersect ENCODING 527 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0800 0800 0800 0800 0800 0800 0800 ff80 0800 0800 0800 0800 0800 0800 0800 0800 ENDCHAR STARTCHAR dec_hbar1 ENCODING 528 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 ff80 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR dec_hbar2 ENCODING 529 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 ff80 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR dec_hbar3 ENCODING 530 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 0000 0000 ff80 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR dec_hbar4 ENCODING 531 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ff80 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR dec_hbar5 ENCODING 532 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ff80 0000 0000 ENDCHAR STARTCHAR dec_leftjoin ENCODING 533 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0800 0800 0800 0800 0800 0800 0800 0f80 0800 0800 0800 0800 0800 0800 0800 0800 ENDCHAR STARTCHAR dec_rightjoin ENCODING 534 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0800 0800 0800 0800 0800 0800 0800 f800 0800 0800 0800 0800 0800 0800 0800 0800 ENDCHAR STARTCHAR dec_bottomjoin ENCODING 535 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0800 0800 0800 0800 0800 0800 0800 ff80 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR dec_topjoin ENCODING 536 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 0000 0000 ff80 0800 0800 0800 0800 0800 0800 0800 0800 ENDCHAR STARTCHAR dec_vbar ENCODING 537 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0800 0800 0800 0800 0800 0800 0800 0800 0800 0800 0800 0800 0800 0800 0800 0800 ENDCHAR STARTCHAR dec_notgreater ENCODING 538 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0200 0400 0800 1000 2000 1000 0800 0400 0200 0000 3e00 0000 0000 ENDCHAR STARTCHAR dec_notless ENCODING 539 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 2000 1000 0800 0400 0200 0400 0800 1000 2000 0000 3e00 0000 0000 ENDCHAR STARTCHAR dec_pi ENCODING 540 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 7f00 2200 2200 2200 2200 2200 2200 2200 4200 0000 0000 0000 0000 ENDCHAR STARTCHAR dec_notequal ENCODING 541 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0100 0200 7f00 0800 7f00 1000 2000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR dec_sterling ENCODING 542 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0c00 1200 1000 1000 7c00 1000 1000 1000 7100 6e00 0000 0000 0000 0000 ENDCHAR STARTCHAR dec_periodcentered ENCODING 543 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 0000 1800 1800 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR ENDFONT suite3270-4.1/x3270/3270gt16b.bdf000066400000000000000000001505771413735575200155550ustar00rootroot00000000000000STARTFONT 2.1 COMMENT "16-point bold 3270 font" COMMENT "Uses nonstandard ordering:" COMMENT " Page 0: EBCDIC US-International set, CG order" COMMENT " Page 1: EBCDIC APL/APL2 set, CG order (incomplete)" COMMENT " Page 2: (first 16 characters only) DEC line-drawing characters from" COMMENT " fixed-width X fonts" COMMENT "" COMMENT "Copyright (c) 1994-2009, Paul Mattes." COMMENT "Copyright (c) 1989, Georgia Tech Research Corporation (GTRC)," COMMENT " Atlanta, GA 30332." COMMENT "All rights reserved." COMMENT "" COMMENT "Redistribution and use in source and binary forms, with or" COMMENT "without modification, are permitted provided that the following" COMMENT "conditions are met:" COMMENT " * Redistributions of source code must retain the above" COMMENT " copyright notice, this list of conditions and the following" COMMENT " disclaimer." COMMENT " * Redistributions in binary form must reproduce the above" COMMENT " copyright notice, this list of conditions and the following" COMMENT " disclaimer in the documentation and/or other materials" COMMENT " provided with the distribution." COMMENT " * Neither the names of Paul Mattes, GTRC nor their" COMMENT " contributors may be used to endorse or promote products" COMMENT " derived from this software without specific prior written" COMMENT " permission." COMMENT "" COMMENT "THIS SOFTWARE IS PROVIDED BY PAUL MATTES AND GTRC 'AS IS' AND" COMMENT "ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED" COMMENT "TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR" COMMENT "A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL PAUL" COMMENT "MATTES OR GTRC BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL," COMMENT "SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT" COMMENT "NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;" COMMENT "LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER" COMMENT "CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT," COMMENT "STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)" COMMENT "ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF" COMMENT "ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." FONT 3270gt16bold SIZE 16 72 72 FONTBOUNDINGBOX 9 16 0 -4 STARTPROPERTIES 27 FOUNDRY "GaTech" FAMILY_NAME "3270" WEIGHT_NAME "Bold" SLANT "R" SETWIDTH_NAME "Normal" ADD_STYLE_NAME "" PIXEL_SIZE 16 POINT_SIZE 160 RESOLUTION_X 72 RESOLUTION_Y 72 SPACING "C" AVERAGE_WIDTH 90 CHARSET_REGISTRY "3270cg" CHARSET_ENCODING "1" MIN_SPACE 9 NORM_SPACE 9 MAX_SPACE 9 END_SPACE 9 AVG_CAPITAL_WIDTH 90 AVG_LOWERCASE_WIDTH 90 CAP_HEIGHT 9 X_HEIGHT 7 RELATIVE_WEIGHT 50 DESTINATION "Video Text" FONT_ASCENT 12 FONT_DESCENT 4 DEFAULT_CHAR 514 ENDPROPERTIES CHARS 312 STARTCHAR null ENCODING 0 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR nobreakspace ENCODING 1 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR euro ENCODING 2 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 1E00 3300 6000 FF00 6000 FE00 6000 3300 1E00 0000 0000 0000 0000 ENDCHAR STARTCHAR cr ENCODING 3 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR nl ENCODING 4 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR em ENCODING 5 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR eightones ENCODING 6 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 1c00 3e00 7f00 7f00 7f00 3e00 1c00 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR hyphen ENCODING 7 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 0000 0000 3f00 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR greater ENCODING 8 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 3000 1800 0c00 0600 0300 0600 0c00 1800 3000 0000 0000 0000 0000 ENDCHAR STARTCHAR less ENCODING 9 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0300 0600 0c00 1800 3000 1800 0c00 0600 0300 0000 0000 0000 0000 ENDCHAR STARTCHAR bracketleft ENCODING 10 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 1e00 1800 1800 1800 1800 1800 1800 1800 1800 1800 1e00 0000 0000 0000 ENDCHAR STARTCHAR bracketright ENCODING 11 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 1e00 0600 0600 0600 0600 0600 0600 0600 0600 0600 1e00 0000 0000 0000 ENDCHAR STARTCHAR parenright ENCODING 12 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 1800 0c00 0600 0600 0600 0600 0600 0c00 1800 0000 0000 0000 0000 ENDCHAR STARTCHAR parenleft ENCODING 13 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0600 0c00 1800 1800 1800 1800 1800 0c00 0600 0000 0000 0000 0000 ENDCHAR STARTCHAR braceright ENCODING 14 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 3800 0c00 0c00 0c00 0c00 0600 0c00 0c00 0c00 0c00 3800 0000 0000 0000 ENDCHAR STARTCHAR braceleft ENCODING 15 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0e00 1800 1800 1800 1800 3000 1800 1800 1800 1800 0e00 0000 0000 0000 ENDCHAR STARTCHAR space ENCODING 16 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR equal ENCODING 17 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 7f80 0000 0000 7f80 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR apostrophe ENCODING 18 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0c00 0c00 0c00 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR quotedbl ENCODING 19 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 3600 3600 3600 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR slash ENCODING 20 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0180 0300 0600 0c00 1800 3000 6000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR backslash ENCODING 21 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 6000 3000 1800 0c00 0600 0300 0180 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR bar ENCODING 22 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0000 0000 ENDCHAR STARTCHAR brokenbar ENCODING 23 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0c00 0c00 0c00 0c00 0c00 0000 0000 0c00 0c00 0c00 0c00 0c00 0000 0000 ENDCHAR STARTCHAR question ENCODING 24 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 1f00 3180 3180 0300 0600 0c00 0c00 0000 0000 0c00 0000 0000 0000 0000 ENDCHAR STARTCHAR exclam ENCODING 25 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0000 0000 0c00 0000 0000 0000 0000 ENDCHAR STARTCHAR dollar ENCODING 26 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0c00 0c00 3f80 6c00 6c00 3f00 0d80 0d80 7f00 0c00 0c00 0000 0000 0000 ENDCHAR STARTCHAR cent ENCODING 27 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0c00 0c00 3f00 6c00 6c00 6c00 3f00 0c00 0c00 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR sterling ENCODING 28 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0e00 1b00 1800 1800 7e00 1800 1800 1800 7980 7f00 0000 0000 0000 0000 ENDCHAR STARTCHAR yen ENCODING 29 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 6180 3300 1e00 0c00 7f80 0c00 0c00 7f80 0c00 0c00 0000 0000 0000 0000 ENDCHAR STARTCHAR paragraph ENCODING 30 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 7c00 6600 6600 6600 7c00 6000 6600 6f00 6600 6600 0600 0000 0000 0000 ENDCHAR STARTCHAR currency ENCODING 31 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 6180 3300 1e00 3300 3300 3300 1e00 3300 6180 0000 0000 0000 0000 ENDCHAR STARTCHAR 0 ENCODING 32 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 1e00 3300 6180 6180 6d80 6d80 6180 6180 3300 1e00 0000 0000 0000 0000 ENDCHAR STARTCHAR 1 ENCODING 33 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0c00 1c00 3c00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0000 0000 0000 0000 ENDCHAR STARTCHAR 2 ENCODING 34 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 1f00 3180 6180 0180 0300 0600 0c00 1800 3000 7f80 0000 0000 0000 0000 ENDCHAR STARTCHAR 3 ENCODING 35 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 3f80 0180 0300 0600 0e00 0300 0180 0180 6300 3e00 0000 0000 0000 0000 ENDCHAR STARTCHAR 4 ENCODING 36 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0700 0f00 1b00 3300 6300 6300 7f80 0300 0300 0300 0000 0000 0000 0000 ENDCHAR STARTCHAR 5 ENCODING 37 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 7f80 6000 6000 7e00 0300 0180 0180 0180 0300 7e00 0000 0000 0000 0000 ENDCHAR STARTCHAR 6 ENCODING 38 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 1800 3000 6000 6000 7e00 7300 6180 6180 3300 1e00 0000 0000 0000 0000 ENDCHAR STARTCHAR 7 ENCODING 39 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 7f80 0180 0300 0600 0c00 1800 1800 1800 1800 1800 0000 0000 0000 0000 ENDCHAR STARTCHAR 8 ENCODING 40 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 1e00 3300 3300 3300 1e00 3300 6180 6180 3300 1e00 0000 0000 0000 0000 ENDCHAR STARTCHAR 9 ENCODING 41 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 1f00 3180 6180 6380 6780 3d80 0180 0180 0180 0300 0000 0000 0000 0000 ENDCHAR STARTCHAR ssharp ENCODING 42 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 1c00 3600 6600 6c00 6600 6300 6180 6180 7980 6f00 0000 0000 0000 0000 ENDCHAR STARTCHAR section ENCODING 43 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 1e00 3000 3000 7800 6c00 6600 3300 1b00 0f00 0600 0600 3c00 0000 0000 ENDCHAR STARTCHAR numbersign ENCODING 44 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 3600 7f00 3600 3600 7f00 3600 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR at ENCODING 45 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 3f00 6180 6180 6f80 7f80 7f00 6000 6000 6000 3f80 0000 0000 0000 0000 ENDCHAR STARTCHAR percent ENCODING 46 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 3000 7800 3180 0300 0600 0c00 1800 3000 6300 0780 0300 0000 0000 0000 ENDCHAR STARTCHAR underscore ENCODING 47 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 7f80 0000 0000 0000 ENDCHAR STARTCHAR ampersand ENCODING 48 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 3800 6c00 6c00 6c00 3800 7980 6f00 6600 3f00 0180 0000 0000 0000 ENDCHAR STARTCHAR minus ENCODING 49 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 0000 0000 3f00 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR period ENCODING 50 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 1c00 1c00 0000 0000 0000 0000 ENDCHAR STARTCHAR comma ENCODING 51 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0e00 0e00 1c00 3800 0000 0000 ENDCHAR STARTCHAR colon ENCODING 52 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 0000 1c00 1c00 0000 0000 1c00 1c00 0000 0000 0000 0000 ENDCHAR STARTCHAR plus ENCODING 53 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0c00 0c00 0c00 7f80 0c00 0c00 0c00 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR notsign ENCODING 54 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 7f80 0180 0180 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR macron ENCODING 55 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 7f80 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR degree ENCODING 56 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 1c00 3600 3600 1c00 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR periodcentered ENCODING 57 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 0000 1c00 1c00 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR asciicircum ENCODING 58 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0c00 1e00 3300 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR asciitilde ENCODING 59 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 3800 6d80 0700 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR diaeresis ENCODING 60 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 7380 7380 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR grave ENCODING 61 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 1800 0c00 0600 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR acute ENCODING 62 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0600 0c00 1800 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR cedilla ENCODING 63 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0c00 0c00 0c00 3800 0000 0000 ENDCHAR STARTCHAR agrave ENCODING 64 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 3000 1800 0c00 0000 3e00 0300 0300 3f00 6300 6300 3f80 0000 0000 0000 0000 ENDCHAR STARTCHAR egrave ENCODING 65 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 3000 1800 0c00 0000 3e00 6300 6300 7f00 6000 6000 3f00 0000 0000 0000 0000 ENDCHAR STARTCHAR igrave ENCODING 66 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 1800 0c00 0600 0000 0000 0c00 0c00 0c00 0c00 0c00 0c00 0000 0000 0000 0000 ENDCHAR STARTCHAR ograve ENCODING 67 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 3000 1800 0c00 0000 3e00 6300 6300 6300 6300 6300 3e00 0000 0000 0000 0000 ENDCHAR STARTCHAR ugrave ENCODING 68 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 3000 1800 0c00 0000 6300 6300 6300 6300 6300 6300 3f80 0000 0000 0000 0000 ENDCHAR STARTCHAR atilde ENCODING 69 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 1d80 3700 0000 3e00 0300 0300 3f00 6300 6300 3f80 0000 0000 0000 0000 ENDCHAR STARTCHAR otilde ENCODING 70 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 3b00 6e00 0000 3e00 6300 6300 6300 6300 6300 3e00 0000 0000 0000 0000 ENDCHAR STARTCHAR ydiaeresis ENCODING 71 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 3600 0000 0000 6300 6300 6300 6300 3300 1e00 0c00 1800 3000 6000 0000 ENDCHAR STARTCHAR Yacute ENCODING 72 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0300 0600 0c00 6180 3300 1e00 0c00 0c00 0c00 0c00 0c00 0000 0000 0000 0000 ENDCHAR STARTCHAR yacute ENCODING 73 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0300 0600 0c00 0000 6300 6300 6300 6300 3300 1e00 0c00 1800 3000 6000 0000 ENDCHAR STARTCHAR eacute ENCODING 74 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0300 0600 0c00 0000 3e00 6300 6300 7f00 6000 6000 3f00 0000 0000 0000 0000 ENDCHAR STARTCHAR onequarter ENCODING 75 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 3000 7000 3000 3000 3000 3000 0300 0700 0f00 0f80 0300 0300 0000 0000 0000 ENDCHAR STARTCHAR onehalf ENCODING 76 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 3000 7000 3000 3000 3000 3000 0700 0d80 0180 0700 0c00 0f80 0000 0000 0000 ENDCHAR STARTCHAR threequarters ENCODING 77 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 7800 1800 3000 1800 7800 3000 0300 0700 0f00 0f80 0300 0300 0000 0000 0000 ENDCHAR STARTCHAR udiaeresis ENCODING 78 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 3600 0000 0000 6300 6300 6300 6300 6300 6300 3f80 0000 0000 0000 0000 ENDCHAR STARTCHAR ccedilla ENCODING 79 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 1f00 3000 6000 6000 6000 3000 1f00 0c00 3c00 0000 0000 ENDCHAR STARTCHAR adiaeresis ENCODING 80 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 3600 0000 0000 3e00 0300 0300 3f00 6300 6300 3f80 0000 0000 0000 0000 ENDCHAR STARTCHAR ediaeresis ENCODING 81 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 3600 0000 0000 3e00 6300 6300 7f00 6000 6000 3f00 0000 0000 0000 0000 ENDCHAR STARTCHAR idiaeresis ENCODING 82 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 3300 0000 0000 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0000 0000 0000 0000 ENDCHAR STARTCHAR odiaeresis ENCODING 83 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 3600 0000 0000 3e00 6300 6300 6300 6300 6300 3e00 0000 0000 0000 0000 ENDCHAR STARTCHAR mu ENCODING 84 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 6300 6300 6300 6300 6300 7300 7f80 6000 6000 6000 0000 ENDCHAR STARTCHAR acircumflex ENCODING 85 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0c00 1e00 0000 3e00 0300 0300 3f00 6300 6300 3f80 0000 0000 0000 0000 ENDCHAR STARTCHAR ecircumflex ENCODING 86 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0c00 1e00 0000 3e00 6300 6300 7f00 6000 6000 3f00 0000 0000 0000 0000 ENDCHAR STARTCHAR icircumflex ENCODING 87 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0c00 1e00 0000 0000 0c00 0c00 0c00 0c00 0c00 0c00 0000 0000 0000 0000 ENDCHAR STARTCHAR ocircumflex ENCODING 88 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0c00 1e00 0000 1e00 3300 3300 3300 3300 3300 1e00 0000 0000 0000 0000 ENDCHAR STARTCHAR ucircumflex ENCODING 89 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 1800 3c00 0000 6600 6600 6600 6600 6600 6600 3f00 0000 0000 0000 0000 ENDCHAR STARTCHAR aacute ENCODING 90 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0300 0600 0c00 0000 3e00 0300 0300 3f00 6300 6300 3f80 0000 0000 0000 0000 ENDCHAR STARTCHAR multiply ENCODING 91 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 6180 3300 1e00 0c00 1e00 3300 6180 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR iacute ENCODING 92 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0600 0c00 1800 0000 0000 0c00 0c00 0c00 0c00 0c00 0c00 0000 0000 0000 0000 ENDCHAR STARTCHAR oacute ENCODING 93 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0600 0c00 1800 0000 3e00 6300 6300 6300 6300 6300 3e00 0000 0000 0000 0000 ENDCHAR STARTCHAR uacute ENCODING 94 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0600 0c00 1800 0000 6300 6300 6300 6300 6300 6300 3f80 0000 0000 0000 0000 ENDCHAR STARTCHAR ntilde ENCODING 95 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 1d80 3700 0000 7f00 3180 3180 3180 3180 3180 3180 0000 0000 0000 0000 ENDCHAR STARTCHAR Agrave ENCODING 96 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0c00 0600 0300 0c00 1e00 3300 6180 7f80 6180 6180 6180 0000 0000 0000 0000 ENDCHAR STARTCHAR Egrave ENCODING 97 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 3000 1800 0c00 7f80 6000 6000 7e00 6000 6000 6000 7f80 0000 0000 0000 0000 ENDCHAR STARTCHAR Igrave ENCODING 98 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 1800 0c00 0600 0000 1e00 0c00 0c00 0c00 0c00 0c00 1e00 0000 0000 0000 0000 ENDCHAR STARTCHAR Ograve ENCODING 99 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 3000 1800 0c00 3f00 6180 6180 6180 6180 6180 6180 3f00 0000 0000 0000 0000 ENDCHAR STARTCHAR Ugrave ENCODING 100 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 3000 1800 0c00 6180 6180 6180 6180 6180 6180 6180 3f00 0000 0000 0000 0000 ENDCHAR STARTCHAR Atilde ENCODING 101 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 1d80 3700 0000 0c00 1e00 3300 6180 7f80 6180 6180 0000 0000 0000 0000 ENDCHAR STARTCHAR Otilde ENCODING 102 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 1d80 3700 3f00 6180 6180 6180 6180 6180 6180 6180 3f00 0000 0000 0000 0000 ENDCHAR STARTCHAR onesuperior ENCODING 103 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0c00 1c00 0c00 0c00 0c00 0c00 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR twosuperior ENCODING 104 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 1c00 3600 0600 0c00 1800 3e00 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR threesuperior ENCODING 105 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 3e00 0600 0c00 0600 3600 1c00 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR ordfeminine ENCODING 106 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 3e00 0300 0300 3f00 6300 6300 3f80 0000 7f80 0000 0000 0000 0000 ENDCHAR STARTCHAR masculine ENCODING 107 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 3f00 6180 6180 6180 6180 6180 3f00 0000 7f80 0000 0000 0000 0000 ENDCHAR STARTCHAR guillemotleft ENCODING 108 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0d80 1b00 3600 6c00 3600 1b00 0d80 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR guillemotright ENCODING 109 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 6c00 3600 1b00 0d80 1b00 3600 6c00 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR exclamdown ENCODING 110 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0c00 0000 0000 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0000 0000 0000 0000 ENDCHAR STARTCHAR questiondown ENCODING 111 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0c00 0000 0000 0c00 0c00 0600 0300 3180 3180 1f00 0000 0000 0000 0000 ENDCHAR STARTCHAR Adiaeresis ENCODING 112 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 3300 0000 0c00 1e00 3300 6180 6180 7f80 6180 6180 6180 0000 0000 0000 0000 ENDCHAR STARTCHAR Ediaeresis ENCODING 113 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 3300 0000 7f80 6000 6000 6000 7e00 6000 6000 6000 7f80 0000 0000 0000 0000 ENDCHAR STARTCHAR Idiaeresis ENCODING 114 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 3300 0000 1e00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 1e00 0000 0000 0000 0000 ENDCHAR STARTCHAR Odiaeresis ENCODING 115 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 3300 0000 3f00 6180 6180 6180 6180 6180 6180 6180 3f00 0000 0000 0000 0000 ENDCHAR STARTCHAR Udiaeresis ENCODING 116 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 3300 0000 6180 6180 6180 6180 6180 6180 6180 6180 3f00 0000 0000 0000 0000 ENDCHAR STARTCHAR Acircumflex ENCODING 117 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0c00 1e00 0000 0c00 1e00 3300 6180 7f80 6180 6180 6180 0000 0000 0000 0000 ENDCHAR STARTCHAR Ecircumflex ENCODING 118 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0c00 1e00 0000 7f80 6000 6000 6000 7e00 6000 6000 7f80 0000 0000 0000 0000 ENDCHAR STARTCHAR Icircumflex ENCODING 119 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0c00 1e00 0000 1e00 0c00 0c00 0c00 0c00 0c00 0c00 1e00 0000 0000 0000 0000 ENDCHAR STARTCHAR Ocircumflex ENCODING 120 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0c00 1e00 0000 3f00 6180 6180 6180 6180 6180 6180 3f00 0000 0000 0000 0000 ENDCHAR STARTCHAR Ucircumflex ENCODING 121 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0c00 1e00 0000 6180 6180 6180 6180 6180 6180 6180 3f00 0000 0000 0000 0000 ENDCHAR STARTCHAR Aacute ENCODING 122 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0c00 1800 3000 0c00 1e00 3300 6180 7f80 6180 6180 6180 0000 0000 0000 0000 ENDCHAR STARTCHAR Eacute ENCODING 123 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0300 0600 0c00 7f80 6000 6000 6000 7e00 6000 6000 7f80 0000 0000 0000 0000 ENDCHAR STARTCHAR Iacute ENCODING 124 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0600 0c00 1800 0000 1e00 0c00 0c00 0c00 0c00 0c00 1e00 0000 0000 0000 0000 ENDCHAR STARTCHAR Oacute ENCODING 125 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0300 0600 0c00 3f00 6180 6180 6180 6180 6180 6180 3f00 0000 0000 0000 0000 ENDCHAR STARTCHAR Uacute ENCODING 126 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0300 0600 0c00 6180 6180 6180 6180 6180 6180 6180 3f00 0000 0000 0000 0000 ENDCHAR STARTCHAR Ntilde ENCODING 127 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 1d80 3700 0000 6180 7180 7980 6d80 6780 6380 6180 0000 0000 0000 0000 ENDCHAR STARTCHAR a ENCODING 128 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 3e00 0300 0300 3f00 6300 6300 3f80 0000 0000 0000 0000 ENDCHAR STARTCHAR b ENCODING 129 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 6000 6000 6000 7c00 6600 6300 6300 6300 6600 7c00 0000 0000 0000 0000 ENDCHAR STARTCHAR c ENCODING 130 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 1f00 3000 6000 6000 6000 3000 1f00 0000 0000 0000 0000 ENDCHAR STARTCHAR d ENCODING 131 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0300 0300 0300 1f00 3300 6300 6300 6300 3300 1f00 0000 0000 0000 0000 ENDCHAR STARTCHAR e ENCODING 132 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 3e00 6300 6300 7f00 6000 6000 3f00 0000 0000 0000 0000 ENDCHAR STARTCHAR f ENCODING 133 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0f00 1800 1800 7e00 1800 1800 1800 1800 1800 1800 0000 0000 0000 0000 ENDCHAR STARTCHAR g ENCODING 134 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 1f00 3180 6180 6180 3380 1f80 0180 3180 1f00 0000 0000 ENDCHAR STARTCHAR h ENCODING 135 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 6000 6000 6000 7e00 7300 6300 6300 6300 6300 6300 0000 0000 0000 0000 ENDCHAR STARTCHAR i ENCODING 136 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0c00 0000 0000 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0000 0000 0000 0000 ENDCHAR STARTCHAR j ENCODING 137 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0300 0000 0000 0300 0300 0300 0300 0300 0300 0300 3300 1e00 0000 0000 ENDCHAR STARTCHAR k ENCODING 138 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 3000 3000 3000 3300 3600 3c00 3800 3c00 3600 3300 0000 0000 0000 0000 ENDCHAR STARTCHAR l ENCODING 139 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0e00 0000 0000 0000 0000 ENDCHAR STARTCHAR m ENCODING 140 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 3f00 6d80 6d80 6d80 6d80 6d80 6d80 0000 0000 0000 0000 ENDCHAR STARTCHAR n ENCODING 141 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 7f00 3180 3180 3180 3180 3180 3180 0000 0000 0000 0000 ENDCHAR STARTCHAR o ENCODING 142 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 3e00 6300 6300 6300 6300 6300 3e00 0000 0000 0000 0000 ENDCHAR STARTCHAR p ENCODING 143 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 7c00 6600 6300 6300 6300 6600 7c00 6000 6000 6000 0000 ENDCHAR STARTCHAR q ENCODING 144 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 1f00 3300 6300 6300 3300 1f00 0300 0300 0380 0000 0000 ENDCHAR STARTCHAR r ENCODING 145 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 6f00 3980 3000 3000 3000 3000 3000 0000 0000 0000 0000 ENDCHAR STARTCHAR s ENCODING 146 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 3e00 6300 3000 1c00 0600 6300 3e00 0000 0000 0000 0000 ENDCHAR STARTCHAR t ENCODING 147 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0c00 0c00 0c00 3f00 0c00 0c00 0c00 0c00 0c00 0c00 0000 0000 0000 0000 ENDCHAR STARTCHAR u ENCODING 148 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 6300 6300 6300 6300 6300 6300 3f80 0000 0000 0000 0000 ENDCHAR STARTCHAR v ENCODING 149 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 6180 6180 3300 3300 1e00 1e00 0c00 0000 0000 0000 0000 ENDCHAR STARTCHAR w ENCODING 150 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 6180 6180 6180 6d80 6d80 7f80 3300 0000 0000 0000 0000 ENDCHAR STARTCHAR x ENCODING 151 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 6180 3300 1e00 0c00 1e00 3300 6180 0000 0000 0000 0000 ENDCHAR STARTCHAR y ENCODING 152 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 6300 6300 6300 6300 3300 1e00 0c00 1800 3000 6000 0000 ENDCHAR STARTCHAR z ENCODING 153 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 7f80 0300 0600 0c00 1800 3000 7f80 0000 0000 0000 0000 ENDCHAR STARTCHAR ae ENCODING 154 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 7f00 0d80 1d80 3f80 6c00 6c00 3f80 0000 0000 0000 0000 ENDCHAR STARTCHAR oslash ENCODING 155 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 1f80 3300 3700 3f00 3b00 3300 7e00 0000 0000 0000 0000 ENDCHAR STARTCHAR aring ENCODING 156 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 1e00 1e00 0000 3e00 0300 0300 3f00 6300 6300 3f80 0000 0000 0000 0000 ENDCHAR STARTCHAR division ENCODING 157 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 1c00 1c00 0000 7f00 0000 1c00 1c00 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR fm ENCODING 158 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 7f80 7f80 0000 0e00 0e00 0000 0000 0e00 0e00 1c00 3800 0000 0000 0000 ENDCHAR STARTCHAR dup ENCODING 159 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 7f80 7f80 0000 0c00 6d80 3f00 1e00 3f00 6d80 0c00 0000 0000 0000 0000 ENDCHAR STARTCHAR A ENCODING 160 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0c00 1e00 3300 6180 6180 7f80 6180 6180 6180 0000 0000 0000 0000 ENDCHAR STARTCHAR B ENCODING 161 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 7e00 3300 3180 3300 3e00 3300 3180 3300 7e00 0000 0000 0000 0000 ENDCHAR STARTCHAR C ENCODING 162 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0f00 1980 3000 6000 6000 6000 3000 1980 0f00 0000 0000 0000 0000 ENDCHAR STARTCHAR D ENCODING 163 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 7e00 3300 3180 3180 3180 3180 3180 3300 7e00 0000 0000 0000 0000 ENDCHAR STARTCHAR E ENCODING 164 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 7f80 6000 6000 6000 7e00 6000 6000 6000 7f80 0000 0000 0000 0000 ENDCHAR STARTCHAR F ENCODING 165 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 7f80 6000 6000 6000 7f00 6000 6000 6000 6000 0000 0000 0000 0000 ENDCHAR STARTCHAR G ENCODING 166 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 1e00 3300 6000 6000 6000 6f80 6300 3300 1f00 0000 0000 0000 0000 ENDCHAR STARTCHAR H ENCODING 167 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 6180 6180 6180 6180 7f80 6180 6180 6180 6180 0000 0000 0000 0000 ENDCHAR STARTCHAR I ENCODING 168 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 1e00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 1e00 0000 0000 0000 0000 ENDCHAR STARTCHAR J ENCODING 169 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0f00 0600 0600 0600 0600 0600 6600 6600 3c00 0000 0000 0000 0000 ENDCHAR STARTCHAR K ENCODING 170 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 6180 6300 6600 6c00 7800 7c00 6600 6300 6180 0000 0000 0000 0000 ENDCHAR STARTCHAR L ENCODING 171 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 6000 6000 6000 6000 6000 6000 6000 6000 7f80 0000 0000 0000 0000 ENDCHAR STARTCHAR M ENCODING 172 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 6180 7380 7f80 6d80 6d80 6180 6180 6180 6180 0000 0000 0000 0000 ENDCHAR STARTCHAR N ENCODING 173 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 6180 7180 7980 6d80 6780 6380 6180 6180 6180 0000 0000 0000 0000 ENDCHAR STARTCHAR O ENCODING 174 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 3f00 6180 6180 6180 6180 6180 6180 6180 3f00 0000 0000 0000 0000 ENDCHAR STARTCHAR P ENCODING 175 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 7e00 6300 6180 6180 6300 7e00 6000 6000 6000 0000 0000 0000 0000 ENDCHAR STARTCHAR Q ENCODING 176 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 1e00 3300 6180 6180 6180 6180 6d80 3f00 1e00 0300 0180 0000 0000 ENDCHAR STARTCHAR R ENCODING 177 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 7f00 6180 6180 6180 7f00 6c00 6600 6300 6180 0000 0000 0000 0000 ENDCHAR STARTCHAR S ENCODING 178 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 3f00 6180 6000 3800 0c00 0700 0180 6180 3f00 0000 0000 0000 0000 ENDCHAR STARTCHAR T ENCODING 179 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 7f80 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0000 0000 0000 0000 ENDCHAR STARTCHAR U ENCODING 180 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 6180 6180 6180 6180 6180 6180 6180 6180 3f00 0000 0000 0000 0000 ENDCHAR STARTCHAR V ENCODING 181 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 6180 6180 3300 3300 3300 1e00 1e00 0c00 0c00 0000 0000 0000 0000 ENDCHAR STARTCHAR W ENCODING 182 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 6180 6180 6180 6180 6d80 6d80 6d80 7f80 3300 0000 0000 0000 0000 ENDCHAR STARTCHAR X ENCODING 183 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 6180 6180 3300 1e00 0c00 1e00 3300 6180 6180 0000 0000 0000 0000 ENDCHAR STARTCHAR Y ENCODING 184 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 6180 3300 1e00 0c00 0c00 0c00 0c00 0c00 0c00 0000 0000 0000 0000 ENDCHAR STARTCHAR Z ENCODING 185 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 7f80 0180 0300 0600 0c00 1800 3000 6000 7f80 0000 0000 0000 0000 ENDCHAR STARTCHAR AE ENCODING 186 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0f80 1e00 3600 6600 6780 7e00 6600 6600 6780 0000 0000 0000 0000 ENDCHAR STARTCHAR Ooblique ENCODING 187 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 3f00 6180 6380 6780 6d80 7980 7180 6180 3f00 0000 0000 0000 0000 ENDCHAR STARTCHAR Aring ENCODING 188 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 1e00 1e00 0c00 1e00 3300 6180 6180 7f80 6180 6180 6180 0000 0000 0000 0000 ENDCHAR STARTCHAR Ccedilla ENCODING 189 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0f00 1980 3000 6000 6000 6000 3000 1980 0f00 0600 3e00 0000 0000 ENDCHAR STARTCHAR semicolon ENCODING 190 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 0000 0e00 0e00 0000 0000 0e00 0e00 1c00 3800 0000 0000 ENDCHAR STARTCHAR asterisk ENCODING 191 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0c00 6d80 3f00 1e00 3f00 6d80 0c00 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR c0 ENCODING 192 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR c1 ENCODING 193 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR c2 ENCODING 194 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR c3 ENCODING 195 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR c4 ENCODING 196 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR c5 ENCODING 197 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR c6 ENCODING 198 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR c7 ENCODING 199 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR c8 ENCODING 200 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR c9 ENCODING 201 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR ca ENCODING 202 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR cb ENCODING 203 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR cc ENCODING 204 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR cd ENCODING 205 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR ce ENCODING 206 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR cf ENCODING 207 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR copyright ENCODING 208 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 3e00 4100 4900 5500 5100 5500 4900 4100 3e00 0000 0000 0000 0000 ENDCHAR STARTCHAR registered ENCODING 209 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 3e00 4100 5900 5500 5900 5500 5500 4100 3e00 0000 0000 0000 0000 ENDCHAR STARTCHAR boxA ENCODING 210 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 2000 5000 8800 8800 f800 8800 8800 0000 ff80 8080 8080 ff80 0000 0000 0000 ENDCHAR STARTCHAR insert ENCODING 211 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 0800 1c00 3e00 7700 e380 c180 8080 0000 0000 0000 0000 ENDCHAR STARTCHAR boxB ENCODING 212 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0f00 0480 0480 0700 0480 0480 0f00 0000 ff80 8080 8080 ff80 0000 0000 0000 ENDCHAR STARTCHAR box6 ENCODING 213 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 ff80 8080 9080 a080 a080 ac80 b280 a280 9c80 8080 ff80 0000 0000 ENDCHAR STARTCHAR plusminus ENCODING 214 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0c00 0c00 0c00 7f80 0c00 0c00 0c00 0000 7f80 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR ETH ENCODING 215 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 7e00 3300 3180 3180 7d80 3180 3180 3300 7e00 0000 0000 0000 0000 ENDCHAR STARTCHAR rightarrow ENCODING 216 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 0400 0600 ff00 0600 0400 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR THORN ENCODING 217 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 6000 6000 7e00 6300 6180 6300 7e00 6000 6000 0000 0000 0000 0000 ENDCHAR STARTCHAR upshift ENCODING 218 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0800 1400 2200 4100 7700 1400 1400 1400 1400 1400 1c00 0000 0000 0000 ENDCHAR STARTCHAR human ENCODING 219 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 1c00 1400 1c00 0800 7f00 0800 0800 1400 2200 4100 0000 0000 0000 0000 ENDCHAR STARTCHAR underB ENCODING 220 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 3c00 1200 1200 1c00 1200 1200 3c00 0000 ff80 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR downshift ENCODING 221 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 1c00 1400 1400 1400 1400 1400 7700 4100 2200 1400 0800 0000 0000 0000 ENDCHAR STARTCHAR boxquestion ENCODING 222 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 ff80 8080 9c80 a280 a280 8280 8480 8880 8880 8080 8880 8080 ff80 0000 0000 ENDCHAR STARTCHAR boxsolid ENCODING 223 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 ff80 ff80 ff80 ff80 ff80 ff80 ff80 ff80 ff80 ff80 ff80 ff80 ff80 0000 0000 ENDCHAR STARTCHAR e0 ENCODING 224 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR e1 ENCODING 225 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR e2 ENCODING 226 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR e3 ENCODING 227 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR e4 ENCODING 228 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR e5 ENCODING 229 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR e6 ENCODING 230 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR e7 ENCODING 231 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR e8 ENCODING 232 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR e9 ENCODING 233 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR ea ENCODING 234 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR eb ENCODING 235 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR ec ENCODING 236 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR ed ENCODING 237 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR ee ENCODING 238 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR ef ENCODING 239 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR badcommhi ENCODING 240 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 8000 c000 e000 7000 3800 ff80 0e00 0700 0380 0180 0080 0000 0000 0000 ENDCHAR STARTCHAR commhi ENCODING 241 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 0000 0000 ff80 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR commjag ENCODING 242 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 0000 0000 fc00 0800 1000 2000 7f80 0000 0000 0000 0000 ENDCHAR STARTCHAR commlo ENCODING 243 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ff80 0000 0000 0000 0000 ENDCHAR STARTCHAR clockleft ENCODING 244 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0100 0800 0000 2000 0000 0080 4100 0100 0100 2100 0100 0800 0100 0000 ENDCHAR STARTCHAR clockright ENCODING 245 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 2000 0000 2800 4000 8000 0400 0000 0000 0800 0000 2000 0000 0000 0000 ENDCHAR STARTCHAR lock ENCODING 246 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 8080 c180 e380 f780 7f00 3e00 3e00 7f00 f780 e380 c180 8080 0000 0000 0000 ENDCHAR STARTCHAR eth ENCODING 247 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0f00 0600 0f00 0300 1f00 3300 6300 6300 6300 3300 1e00 0000 0000 0000 0000 ENDCHAR STARTCHAR leftarrow ENCODING 248 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 1000 3000 7f80 3000 1000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR thorn ENCODING 249 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 6000 6000 6000 7c00 6600 6300 6300 6300 6600 7c00 6000 6000 6000 0000 ENDCHAR STARTCHAR keyleft ENCODING 250 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0e00 1100 1180 1100 0e00 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR keyright ENCODING 251 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 0000 ff80 1d80 1d80 0180 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR box4 ENCODING 252 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 ff80 8080 8480 8c80 9480 a480 be80 8480 8480 8080 ff80 0000 0000 ENDCHAR STARTCHAR underA ENCODING 253 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0800 1400 2200 2200 3e00 2200 2200 0000 ff80 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR magcard ENCODING 254 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 ff80 8080 8080 8080 ff80 8080 ff80 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR boxhuman ENCODING 255 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 ff80 8080 9c80 9480 9c80 8880 ff80 8880 8880 9480 a280 c180 ff80 0000 0000 ENDCHAR STARTCHAR apl_space ENCODING 272 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR apl_bracketright ENCODING 316 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 1e00 0600 0600 0600 0600 0600 0600 0600 0600 0600 1e00 0000 0000 0000 ENDCHAR STARTCHAR apl_bracketleft ENCODING 328 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 1e00 1800 1800 1800 1800 1800 1800 1800 1800 1800 1e00 0000 0000 0000 ENDCHAR STARTCHAR apl_stile ENCODING 347 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 ENDCHAR STARTCHAR apl_2vertical ENCODING 384 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 6180 6180 6180 6180 6180 6180 6180 6180 6180 6180 6180 6180 6180 6180 6180 6180 ENDCHAR STARTCHAR apl_2horizontal ENCODING 385 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 ff80 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ff80 0000 ENDCHAR STARTCHAR apl_leftvbar ENCODING 386 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 6000 6000 6000 6000 6000 6000 6000 6000 6000 6000 6000 6000 6000 6000 6000 6000 ENDCHAR STARTCHAR apl_rightvbar ENCODING 387 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0180 0180 0180 0180 0180 0180 0180 0180 0180 0180 0180 0180 0180 0180 0180 0180 ENDCHAR STARTCHAR apl_midvbar ENCODING 388 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 ENDCHAR STARTCHAR apl_leftsolid ENCODING 393 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP fc00 fc00 fc00 fc00 fc00 fc00 fc00 fc00 fc00 fc00 fc00 fc00 fc00 fc00 fc00 fc00 ENDCHAR STARTCHAR apl_rightsolid ENCODING 394 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0f80 0f80 0f80 0f80 0f80 0f80 0f80 0f80 0f80 0f80 0f80 0f80 0f80 0f80 0f80 0f80 ENDCHAR STARTCHAR apl_topsolid ENCODING 395 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP ff80 ff80 ff80 ff80 ff80 ff80 ff80 ff80 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR apl_bottomsolid ENCODING 396 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 ff80 ff80 ff80 ff80 ff80 ff80 ff80 ff80 ENDCHAR STARTCHAR apl_solid ENCODING 397 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP ff80 ff80 ff80 ff80 ff80 ff80 ff80 ff80 ff80 ff80 ff80 ff80 ff80 ff80 ff80 ff80 ENDCHAR STARTCHAR apl_midhbar ENCODING 402 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 0000 0000 ff80 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR apl_lowerleft ENCODING 419 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0f80 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR apl_upperleft ENCODING 420 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 0000 0000 0f80 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 ENDCHAR STARTCHAR apl_leftjoin ENCODING 421 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0f80 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 ENDCHAR STARTCHAR apl_bottomjoin ENCODING 422 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0c00 0c00 0c00 0c00 0c00 0c00 0c00 ff80 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR apl_intersect ENCODING 427 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0c00 0c00 0c00 0c00 0c00 0c00 0c00 ff80 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 ENDCHAR STARTCHAR apl_lowerright ENCODING 428 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0c00 0c00 0c00 0c00 0c00 0c00 0c00 fc00 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR apl_upperright ENCODING 429 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 0000 0000 fc00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 ENDCHAR STARTCHAR apl_rightjoin ENCODING 430 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0c00 0c00 0c00 0c00 0c00 0c00 0c00 fc00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 ENDCHAR STARTCHAR apl_topjoin ENCODING 431 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 0000 0000 ff80 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 ENDCHAR STARTCHAR dec_solid ENCODING 512 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 3f00 3f00 3f00 3f00 3f00 3f00 3f00 3f00 3f00 3f00 3f00 3f00 3f00 3f00 3f00 3f00 ENDCHAR STARTCHAR dec_filled_circle ENCODING 513 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 1e00 3f00 3f00 3f00 1e00 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR dec_halftone_block ENCODING 514 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP aa80 5500 aa80 5500 aa80 5500 aa80 5500 aa80 5500 aa80 5500 aa80 5500 aa80 5500 ENDCHAR STARTCHAR dec_ht ENCODING 515 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 6c00 6c00 7c00 6c00 6c00 6c00 0000 1f80 0600 0600 0600 0600 0600 0000 0000 ENDCHAR STARTCHAR dec_ff ENCODING 516 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 7c00 6000 7800 6000 6000 6000 0000 0f80 0c00 0f00 0c00 0c00 0c00 0000 0000 ENDCHAR STARTCHAR dec_cr ENCODING 517 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 3800 6c00 6000 6000 6c00 3800 0000 0f00 0d80 0f00 0d80 0d80 0d80 0000 0000 ENDCHAR STARTCHAR dec_lf ENCODING 518 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 6000 6000 6000 6000 6000 7c00 0000 0f80 0c00 0f00 0c00 0c00 0c00 0000 0000 ENDCHAR STARTCHAR dec_degree ENCODING 519 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 1c00 3600 3600 1c00 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR dec_plusminus ENCODING 520 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0c00 0c00 0c00 7f80 0c00 0c00 0c00 0000 7f80 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR dec_nl ENCODING 521 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 6c00 7c00 7c00 6c00 6c00 6c00 0000 0c00 0c00 0c00 0c00 0c00 0f80 0000 0000 ENDCHAR STARTCHAR dec_vt ENCODING 522 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 6600 6600 6600 3c00 3c00 1800 0000 1f80 0600 0600 0600 0600 0600 0000 0000 ENDCHAR STARTCHAR dec_lowerright ENCODING 523 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0c00 0c00 0c00 0c00 0c00 0c00 0c00 fc00 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR dec_upperright ENCODING 524 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 0000 0000 fc00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 ENDCHAR STARTCHAR dec_upperleft ENCODING 525 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 0000 0000 0f80 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 ENDCHAR STARTCHAR dec_lowerleft ENCODING 526 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0f80 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR dec_intersect ENCODING 527 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0c00 0c00 0c00 0c00 0c00 0c00 0c00 ff80 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 ENDCHAR STARTCHAR dec_hbar1 ENCODING 528 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 ff80 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR dec_hbar2 ENCODING 529 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 ff80 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR dec_hbar3 ENCODING 530 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 0000 0000 ff80 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR dec_hbar4 ENCODING 531 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ff80 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR dec_hbar5 ENCODING 532 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ff80 0000 0000 ENDCHAR STARTCHAR dec_leftjoin ENCODING 533 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0f80 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 ENDCHAR STARTCHAR dec_rightjoin ENCODING 534 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0c00 0c00 0c00 0c00 0c00 0c00 0c00 fc00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 ENDCHAR STARTCHAR dec_bottomjoin ENCODING 535 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0c00 0c00 0c00 0c00 0c00 0c00 0c00 ff80 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR dec_topjoin ENCODING 536 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 0000 0000 ff80 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 ENDCHAR STARTCHAR dec_vbar ENCODING 537 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 ENDCHAR STARTCHAR dec_notgreater ENCODING 538 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0300 0600 0c00 1800 3000 1800 0c00 0600 0300 0000 3f00 0000 0000 ENDCHAR STARTCHAR dec_notless ENCODING 539 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 3000 1800 0c00 0600 0300 0600 0c00 1800 3000 0000 3f00 0000 0000 ENDCHAR STARTCHAR dec_pi ENCODING 540 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 7f80 3300 3300 3300 3300 3300 3300 3300 6300 0000 0000 0000 0000 ENDCHAR STARTCHAR dec_notequal ENCODING 541 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0180 0300 7f80 0c00 7f80 1800 3000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR dec_sterling ENCODING 542 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0e00 1b00 1800 1800 7e00 1800 1800 1800 7980 7f00 0000 0000 0000 0000 ENDCHAR STARTCHAR dec_periodcentered ENCODING 543 SWIDTH 563 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 0000 1c00 1c00 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR ENDFONT suite3270-4.1/x3270/3270gt24.bdf000066400000000000000000002022621413735575200153770ustar00rootroot00000000000000STARTFONT 2.1 COMMENT "24-point 3270 font" COMMENT "Uses nonstandard ordering:" COMMENT " Page 0: EBCDIC US-International set, CG order" COMMENT " Page 1: EBCDIC APL/APL2 set, CG order (incomplete)" COMMENT " Page 2: (first 16 characters only) DEC line-drawing characters from" COMMENT " fixed-width X fonts" COMMENT "" COMMENT "Copyright (c) 1994-2009, Paul Mattes." COMMENT "Copyright (c) 1989, Georgia Tech Research Corporation (GTRC)," COMMENT " Atlanta, GA 30332." COMMENT "All rights reserved." COMMENT "" COMMENT "Redistribution and use in source and binary forms, with or" COMMENT "without modification, are permitted provided that the following" COMMENT "conditions are met:" COMMENT " * Redistributions of source code must retain the above" COMMENT " copyright notice, this list of conditions and the following" COMMENT " disclaimer." COMMENT " * Redistributions in binary form must reproduce the above" COMMENT " copyright notice, this list of conditions and the following" COMMENT " disclaimer in the documentation and/or other materials" COMMENT " provided with the distribution." COMMENT " * Neither the names of Paul Mattes, GTRC nor their" COMMENT " contributors may be used to endorse or promote products" COMMENT " derived from this software without specific prior written" COMMENT " permission." COMMENT "" COMMENT "THIS SOFTWARE IS PROVIDED BY PAUL MATTES AND GTRC 'AS IS' AND" COMMENT "ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED" COMMENT "TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR" COMMENT "A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL PAUL" COMMENT "MATTES OR GTRC BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL," COMMENT "SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT" COMMENT "NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;" COMMENT "LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER" COMMENT "CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT," COMMENT "STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)" COMMENT "ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF" COMMENT "ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." FONT 3270gt24 SIZE 24 72 72 FONTBOUNDINGBOX 14 24 0 -6 STARTPROPERTIES 27 FOUNDRY "GaTech" FAMILY_NAME "3270" WEIGHT_NAME "Medium" SLANT "R" SETWIDTH_NAME "Normal" ADD_STYLE_NAME "" PIXEL_SIZE 24 POINT_SIZE 240 RESOLUTION_X 72 RESOLUTION_Y 72 SPACING "C" AVERAGE_WIDTH 140 CHARSET_REGISTRY "3270cg" CHARSET_ENCODING "1" MIN_SPACE 14 NORM_SPACE 14 MAX_SPACE 14 END_SPACE 14 AVG_CAPITAL_WIDTH 140 AVG_LOWERCASE_WIDTH 140 CAP_HEIGHT 14 X_HEIGHT 10 RELATIVE_WEIGHT 50 DESTINATION "Video Text" FONT_ASCENT 18 FONT_DESCENT 6 DEFAULT_CHAR 514 ENDPROPERTIES CHARS 312 STARTCHAR null ENCODING 0 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR nobreakspace ENCODING 1 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR euro ENCODING 2 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 03e0 07f0 0e30 0c00 1800 7ff0 7fe0 1800 1800 7fe0 7fc0 1800 0c00 0e30 07f0 03e0 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR cr ENCODING 3 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR nl ENCODING 4 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR em ENCODING 5 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR eightones ENCODING 6 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0000 0000 0000 0000 0380 0fe0 0fe0 1ff0 1ff0 1ff0 0fe0 0fe0 0380 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR hyphen ENCODING 7 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 3ff0 3ff0 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR greater ENCODING 8 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0000 0000 0c00 0e00 0700 0380 01c0 00e0 0070 0070 00e0 01c0 0380 0700 0e00 0c00 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR less ENCODING 9 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0000 0000 00c0 01c0 0380 0700 0e00 1c00 3800 3800 1c00 0e00 0700 0380 01c0 00c0 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR bracketleft ENCODING 10 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0fc0 0fc0 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0fc0 0fc0 0000 0000 0000 0000 ENDCHAR STARTCHAR bracketright ENCODING 11 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0fc0 0fc0 00c0 00c0 00c0 00c0 00c0 00c0 00c0 00c0 00c0 00c0 00c0 00c0 00c0 00c0 0fc0 0fc0 0000 0000 0000 0000 ENDCHAR STARTCHAR parenright ENCODING 12 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0c00 0e00 0700 0380 01c0 00c0 00c0 00c0 00c0 00c0 00c0 00c0 00c0 01c0 0380 0700 0e00 0c00 0000 0000 0000 0000 ENDCHAR STARTCHAR parenleft ENCODING 13 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 00c0 01c0 0380 0700 0e00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0e00 0700 0380 01c0 00c0 0000 0000 0000 0000 ENDCHAR STARTCHAR braceright ENCODING 14 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0c00 0e00 0700 0300 0300 0300 0300 0380 01c0 01c0 0380 0300 0300 0300 0300 0700 0e00 0c00 0000 0000 0000 0000 ENDCHAR STARTCHAR braceleft ENCODING 15 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 00c0 01c0 0380 0300 0300 0300 0300 0700 0e00 0e00 0700 0300 0300 0300 0300 0380 01c0 00c0 0000 0000 0000 0000 ENDCHAR STARTCHAR space ENCODING 16 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR equal ENCODING 17 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 3ff0 3ff0 0000 0000 3ff0 3ff0 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR apostrophe ENCODING 18 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0300 0300 0300 0300 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR quotedbl ENCODING 19 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0cc0 0cc0 0cc0 0cc0 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR slash ENCODING 20 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0030 0030 0030 0070 00e0 00c0 00c0 01c0 0380 0300 0300 0700 0e00 0c00 0c00 1c00 3800 3000 0000 0000 0000 0000 ENDCHAR STARTCHAR backslash ENCODING 21 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 3000 3000 3000 3800 1c00 0c00 0c00 0e00 0700 0300 0300 0380 01c0 00c0 00c0 00e0 0070 0030 0000 0000 0000 0000 ENDCHAR STARTCHAR bar ENCODING 22 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0300 0300 0300 0300 0300 0300 0300 0300 0300 0300 0300 0300 0300 0300 0300 0300 0300 0300 0300 0300 0000 0000 ENDCHAR STARTCHAR brokenbar ENCODING 23 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0300 0300 0300 0300 0300 0300 0300 0300 0000 0000 0000 0000 0300 0300 0300 0300 0300 0300 0300 0300 0000 0000 ENDCHAR STARTCHAR question ENCODING 24 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0fc0 1fe0 3870 3030 0030 0070 00e0 01c0 0380 0300 0300 0300 0000 0000 0300 0300 0300 0300 0000 0000 0000 0000 ENDCHAR STARTCHAR exclam ENCODING 25 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0300 0300 0300 0300 0300 0300 0300 0300 0300 0300 0300 0300 0000 0000 0300 0300 0300 0300 0000 0000 0000 0000 ENDCHAR STARTCHAR dollar ENCODING 26 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0300 0300 0ff0 1ff0 3b00 3300 3300 3b00 1fc0 0fe0 0370 0330 0330 0370 3fe0 3fc0 0300 0300 0000 0000 0000 0000 ENDCHAR STARTCHAR cent ENCODING 27 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0000 0000 0300 0300 0ff0 1ff0 3b00 3300 3300 3b00 1ff0 0ff0 0300 0300 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR sterling ENCODING 28 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0300 0780 0fc0 0cc0 0c00 0c00 3fc0 3fc0 0c00 0c00 0c00 0c00 0c30 1e70 3fe0 33c0 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR yen ENCODING 29 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 3030 3870 1ce0 0fc0 0780 0300 3ff0 3ff0 0300 0300 3ff0 3ff0 0300 0300 0300 0300 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR paragraph ENCODING 30 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 3f00 3f80 31c0 30c0 30c0 31c0 3f80 3f00 3000 3000 30c0 30c0 33f0 33f0 30c0 30c0 00c0 00c0 0000 0000 0000 0000 ENDCHAR STARTCHAR currency ENCODING 31 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0000 0000 3030 3870 1ce0 0fc0 0fc0 1fe0 1860 1860 1fe0 0fc0 0fc0 1ce0 3870 3030 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR 0 ENCODING 32 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0fc0 1fe0 3870 3030 3030 3030 3330 3330 3330 3330 3030 3030 3030 3870 1fe0 0fc0 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR 1 ENCODING 33 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 00c0 01c0 03c0 07c0 0ec0 0cc0 00c0 00c0 00c0 00c0 00c0 00c0 00c0 00c0 00c0 00c0 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR 2 ENCODING 34 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0fc0 1fe0 3870 3030 0030 0030 0030 0070 00e0 01c0 0380 0700 0e00 1c00 3ff0 3ff0 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR 3 ENCODING 35 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 3ff0 3ff0 0030 0070 00e0 01c0 03c0 07e0 0070 0030 0030 0030 0030 0070 3fe0 3fc0 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR 4 ENCODING 36 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 03c0 03c0 03c0 07c0 0ec0 0cc0 0cc0 1cc0 38c0 30c0 3ff0 3ff0 00c0 00c0 00c0 00c0 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR 5 ENCODING 37 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 3ff0 3ff0 3000 3000 3000 3000 3fc0 3fe0 0070 0030 0030 0030 0030 0070 3fe0 3fc0 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR 6 ENCODING 38 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0300 0700 0e00 1c00 3800 3000 3fc0 3fe0 3870 3030 3030 3030 3030 3870 1fe0 0fc0 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR 7 ENCODING 39 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 3ff0 3ff0 0030 0070 00e0 01c0 0380 0700 0e00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR 8 ENCODING 40 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0fc0 1fe0 3870 3030 3030 3870 1fe0 1fe0 3870 3030 3030 3030 3030 3870 1fe0 0fc0 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR 9 ENCODING 41 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0fc0 1fe0 3870 3030 3030 3070 30f0 39f0 1fb0 0f30 0030 0030 0030 0070 00e0 00c0 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR ssharp ENCODING 42 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0f00 1f80 39c0 30c0 30c0 31c0 3300 3780 31c0 30e0 3070 3830 3c30 3670 37e0 33c0 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR section ENCODING 43 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 03c0 07c0 0e00 0c00 0c00 1e00 3f00 3380 31c0 38e0 1c70 0e30 0730 03f0 01e0 00c0 00c0 01c0 0f80 0f00 0000 0000 ENDCHAR STARTCHAR numbersign ENCODING 44 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0000 0000 0cc0 0cc0 3ff0 3ff0 0cc0 0cc0 3ff0 3ff0 0cc0 0cc0 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR at ENCODING 45 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0fc0 1fe0 3870 3030 3330 37b0 37f0 36f0 37e0 33c0 3000 3000 3000 3800 1ff0 0ff0 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR percent ENCODING 46 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0c00 1e00 3300 3300 1e30 0c70 00e0 01c0 0380 0700 0e00 1c00 38c0 31e0 0330 0330 01e0 00c0 0000 0000 0000 0000 ENDCHAR STARTCHAR underscore ENCODING 47 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 3ff0 3ff0 0000 0000 0000 0000 ENDCHAR STARTCHAR ampersand ENCODING 48 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0c00 1e00 3f00 3300 3300 3700 1e00 1c00 3c00 3e00 3730 3bf0 31e0 38c0 1fe0 0ff0 0038 0018 0000 0000 0000 0000 ENDCHAR STARTCHAR minus ENCODING 49 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 3ff0 3ff0 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR period ENCODING 50 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0300 0300 0300 0300 0000 0000 0000 0000 ENDCHAR STARTCHAR comma ENCODING 51 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0300 0300 0300 0700 0e00 0c00 0000 0000 ENDCHAR STARTCHAR colon ENCODING 52 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0300 0300 0300 0300 0000 0000 0000 0000 0300 0300 0300 0300 0000 0000 0000 0000 ENDCHAR STARTCHAR plus ENCODING 53 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0000 0000 0000 0000 0300 0300 0300 0300 3ff0 3ff0 0300 0300 0300 0300 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR notsign ENCODING 54 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 3ff0 3ff0 0030 0030 0030 0030 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR macron ENCODING 55 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0000 0000 3ff0 3ff0 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR degree ENCODING 56 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0780 0fc0 0cc0 0cc0 0fc0 0780 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR periodcentered ENCODING 57 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0300 0300 0300 0300 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR asciicircum ENCODING 58 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0300 0780 0fc0 0cc0 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR asciitilde ENCODING 59 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0e30 1f70 3be0 31c0 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR diaeresis ENCODING 60 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0cc0 0cc0 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR grave ENCODING 61 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0c00 0e00 0700 0300 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR acute ENCODING 62 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 00c0 01c0 0380 0300 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR cedilla ENCODING 63 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0300 0300 0f00 0e00 0000 0000 ENDCHAR STARTCHAR agrave ENCODING 64 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0c00 0e00 0700 0300 0000 0000 0fc0 0fe0 0070 0030 0ff0 1ff0 3830 3830 1ff0 0ff0 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR egrave ENCODING 65 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0c00 0e00 0700 0300 0000 0000 0fc0 1fe0 3870 3030 3ff0 3ff0 3000 3800 1fc0 0fc0 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR igrave ENCODING 66 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0c00 0e00 0700 0300 0000 0000 0300 0300 0300 0300 0300 0300 0300 0300 0300 0300 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR ograve ENCODING 67 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0c00 0e00 0700 0300 0000 0000 0fc0 1fe0 3870 3030 3030 3030 3030 3870 1fe0 0fc0 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR ugrave ENCODING 68 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0c00 0e00 0700 0300 0000 0000 3030 3030 3030 3030 3030 3030 3030 3870 1ff0 0ff0 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR atilde ENCODING 69 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0e30 1f70 3be0 31c0 0000 0000 0fc0 0fe0 0070 0030 0ff0 1ff0 3830 3830 1ff0 0ff0 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR otilde ENCODING 70 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0e30 1f70 3be0 31c0 0000 0000 0fc0 1fe0 3870 3030 3030 3030 3030 3870 1fe0 0fc0 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR ydiaeresis ENCODING 71 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0000 0000 0cc0 0cc0 0000 0000 3030 3030 3030 3030 3030 3030 3030 3870 1ff0 0ff0 0030 0070 0fe0 0fc0 0000 0000 ENDCHAR STARTCHAR Yacute ENCODING 72 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 00c0 01c0 0380 0300 3030 3030 3030 3870 1ce0 0fc0 0780 0300 0300 0300 0300 0300 0300 0300 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR yacute ENCODING 73 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 00c0 01c0 0380 0300 0000 0000 3030 3030 3030 3030 3030 3030 3030 3870 1ff0 0ff0 0030 0070 0fe0 0fc0 0000 0000 ENDCHAR STARTCHAR eacute ENCODING 74 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 00c0 01c0 0380 0300 0000 0000 0fc0 1fe0 3870 3030 3ff0 3ff0 3000 3800 1fc0 0fc0 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR onequarter ENCODING 75 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 1800 3800 7800 7800 1800 1800 1800 1800 1800 18e0 01e0 03e0 0760 0660 07f8 07f8 0060 0060 0060 0000 0000 0000 0000 ENDCHAR STARTCHAR onehalf ENCODING 76 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 1800 3800 7800 7800 1800 1800 1800 1800 1800 19e0 03f0 0338 0038 0070 00e0 01c0 0380 03f8 03f8 0000 0000 0000 0000 ENDCHAR STARTCHAR threequarters ENCODING 77 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 7e00 7e00 0c00 1800 3c00 0e00 0600 0600 7e00 7ce0 01e0 03e0 0760 0660 07f8 07f8 0060 0060 0060 0000 0000 0000 0000 ENDCHAR STARTCHAR udiaeresis ENCODING 78 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0000 0000 0cc0 0cc0 0000 0000 3030 3030 3030 3030 3030 3030 3030 3870 1ff0 0ff0 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR ccedilla ENCODING 79 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0ff0 1ff0 3800 3000 3000 3000 3000 3800 1ff0 0ff0 0300 0300 0f00 0e00 0000 0000 ENDCHAR STARTCHAR adiaeresis ENCODING 80 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0000 0000 0cc0 0cc0 0000 0000 0fc0 0fe0 0070 0030 0ff0 1ff0 3830 3830 1ff0 0ff0 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR ediaeresis ENCODING 81 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0000 0000 0cc0 0cc0 0000 0000 0fc0 1fe0 3870 3030 3ff0 3ff0 3000 3800 1fc0 0fc0 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR idiaeresis ENCODING 82 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0000 0000 0cc0 0cc0 0000 0000 0300 0300 0300 0300 0300 0300 0300 0300 0300 0300 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR odiaeresis ENCODING 83 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0000 0000 0cc0 0cc0 0000 0000 0fc0 1fe0 3870 3030 3030 3030 3030 3870 1fe0 0fc0 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR mu ENCODING 84 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 3030 3030 3030 3030 3030 3030 3030 3870 3ff0 3ff0 3000 3000 3000 3000 0000 0000 ENDCHAR STARTCHAR acircumflex ENCODING 85 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0300 0780 0fc0 0cc0 0000 0000 0fc0 0fe0 0070 0030 0ff0 1ff0 3830 3830 1ff0 0ff0 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR ecircumflex ENCODING 86 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0300 0780 0fc0 0cc0 0000 0000 0fc0 1fe0 3870 3030 3ff0 3ff0 3000 3800 1fc0 0fc0 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR icircumflex ENCODING 87 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0300 0780 0fc0 0cc0 0000 0000 0300 0300 0300 0300 0300 0300 0300 0300 0300 0300 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR ocircumflex ENCODING 88 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0300 0780 0fc0 0cc0 0000 0000 0fc0 1fe0 3870 3030 3030 3030 3030 3870 1fe0 0fc0 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR ucircumflex ENCODING 89 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0300 0780 0fc0 0cc0 0000 0000 3030 3030 3030 3030 3030 3030 3030 3870 1ff0 0ff0 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR aacute ENCODING 90 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 00c0 01c0 0380 0300 0000 0000 0fc0 0fe0 0070 0030 0ff0 1ff0 3830 3830 1ff0 0ff0 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR multiply ENCODING 91 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0000 0000 0000 3030 3870 1ce0 0fc0 0780 0780 0fc0 1ce0 3870 3030 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR iacute ENCODING 92 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 00c0 01c0 0380 0300 0000 0000 0300 0300 0300 0300 0300 0300 0300 0300 0300 0300 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR oacute ENCODING 93 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 00c0 01c0 0380 0300 0000 0000 0fc0 1fe0 3870 3030 3030 3030 3030 3870 1fe0 0fc0 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR uacute ENCODING 94 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 00c0 01c0 0380 0300 0000 0000 3030 3030 3030 3030 3030 3030 3030 3870 1ff0 0ff0 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR ntilde ENCODING 95 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0e30 1f70 3be0 31c0 0000 0000 3fc0 3fe0 3870 3030 3030 3030 3030 3030 3030 3030 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR Agrave ENCODING 96 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0c00 0e00 0700 0300 0300 0780 0fc0 1ce0 3870 3030 3030 3030 3ff0 3ff0 3030 3030 3030 3030 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR Egrave ENCODING 97 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0c00 0e00 0700 0300 3ff0 3ff0 3000 3000 3000 3000 3fc0 3fc0 3000 3000 3000 3000 3ff0 3ff0 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR Igrave ENCODING 98 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0c00 0e00 0700 0300 0fc0 0fc0 0300 0300 0300 0300 0300 0300 0300 0300 0300 0300 0fc0 0fc0 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR Ograve ENCODING 99 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0c00 0e00 0700 0300 0fc0 1fe0 3870 3030 3030 3030 3030 3030 3030 3030 3030 3870 1fe0 0fc0 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR Ugrave ENCODING 100 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0c00 0e00 0700 0300 3030 3030 3030 3030 3030 3030 3030 3030 3030 3030 3030 3870 1fe0 0fc0 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR Atilde ENCODING 101 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0e30 1f70 3be0 31c0 0300 0780 0fc0 1ce0 3870 3030 3030 3030 3ff0 3ff0 3030 3030 3030 3030 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR Otilde ENCODING 102 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0e30 1f70 3be0 31c0 0fc0 1fe0 3870 3030 3030 3030 3030 3030 3030 3030 3030 3870 1fe0 0fc0 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR onesuperior ENCODING 103 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0180 0380 0780 0780 0180 0180 0180 0180 0180 0180 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR twosuperior ENCODING 104 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0780 0fc0 0ce0 00e0 01c0 0380 0700 0e00 0fe0 0fe0 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR threesuperior ENCODING 105 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0fe0 0fe0 00c0 0180 03c0 00e0 0060 0060 0fe0 0fc0 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR ordfeminine ENCODING 106 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0000 0000 0fc0 0fe0 0060 0030 0ff0 1ff0 3830 3830 1ff0 0ff0 0000 0000 3ff0 3ff0 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR masculine ENCODING 107 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0000 0000 0fc0 1fe0 3870 3030 3030 3030 3030 3870 1fe0 0fc0 0000 0000 3ff0 3ff0 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR guillemotleft ENCODING 108 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0000 0000 0000 0000 0318 0738 0e70 1ce0 39c0 39c0 1ce0 0e70 0738 0318 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR guillemotright ENCODING 109 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0000 0000 0000 0000 3180 39c0 1ce0 0e70 0738 0738 0e70 1ce0 39c0 3180 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR exclamdown ENCODING 110 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0300 0300 0300 0300 0000 0000 0300 0300 0300 0300 0300 0300 0300 0300 0300 0300 0300 0300 0000 0000 0000 0000 ENDCHAR STARTCHAR questiondown ENCODING 111 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0300 0300 0300 0300 0000 0000 0300 0300 0300 0700 0e00 1c00 3800 3000 3030 3870 1fe0 0fc0 0000 0000 0000 0000 ENDCHAR STARTCHAR Adiaeresis ENCODING 112 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0cc0 0cc0 0000 0000 0300 0780 0fc0 1ce0 3870 3030 3030 3030 3ff0 3ff0 3030 3030 3030 3030 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR Ediaeresis ENCODING 113 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0cc0 0cc0 0000 0000 3ff0 3ff0 3000 3000 3000 3000 3fc0 3fc0 3000 3000 3000 3000 3ff0 3ff0 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR Idiaeresis ENCODING 114 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0cc0 0cc0 0000 0000 0fc0 0fc0 0300 0300 0300 0300 0300 0300 0300 0300 0300 0300 0fc0 0fc0 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR Odiaeresis ENCODING 115 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0cc0 0cc0 0000 0000 0fc0 1fe0 3870 3030 3030 3030 3030 3030 3030 3030 3030 3870 1fe0 0fc0 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR Udiaeresis ENCODING 116 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0cc0 0cc0 0000 0000 3030 3030 3030 3030 3030 3030 3030 3030 3030 3030 3030 3870 1fe0 0fc0 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR Acircumflex ENCODING 117 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0300 0780 0fc0 0cc0 0300 0780 0fc0 1ce0 3870 3030 3030 3030 3ff0 3ff0 3030 3030 3030 3030 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR Ecircumflex ENCODING 118 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0300 0780 0fc0 0cc0 3ff0 3ff0 3000 3000 3000 3000 3fc0 3fc0 3000 3000 3000 3000 3ff0 3ff0 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR Icircumflex ENCODING 119 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0300 0780 0fc0 0cc0 0fc0 0fc0 0300 0300 0300 0300 0300 0300 0300 0300 0300 0300 0fc0 0fc0 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR Ocircumflex ENCODING 120 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0300 0780 0fc0 0cc0 0fc0 1fe0 3870 3030 3030 3030 3030 3030 3030 3030 3030 3870 1fe0 0fc0 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR Ucircumflex ENCODING 121 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0300 0780 0fc0 0cc0 3030 3030 3030 3030 3030 3030 3030 3030 3030 3030 3030 3870 1fe0 0fc0 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR Aacute ENCODING 122 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 00c0 01c0 0380 0300 0300 0780 0fc0 1ce0 3870 3030 3030 3030 3ff0 3ff0 3030 3030 3030 3030 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR Eacute ENCODING 123 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 00c0 01c0 0380 0300 3ff0 3ff0 3000 3000 3000 3000 3fc0 3fc0 3000 3000 3000 3000 3ff0 3ff0 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR Iacute ENCODING 124 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 00c0 01c0 0380 0300 0fc0 0fc0 0300 0300 0300 0300 0300 0300 0300 0300 0300 0300 0fc0 0fc0 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR Oacute ENCODING 125 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 00c0 01c0 0380 0300 0fc0 1fe0 3870 3030 3030 3030 3030 3030 3030 3030 3030 3870 1fe0 0fc0 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR Uacute ENCODING 126 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 00c0 01c0 0380 0300 3030 3030 3030 3030 3030 3030 3030 3030 3030 3030 3030 3870 1fe0 0fc0 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR Ntilde ENCODING 127 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0e30 1f70 3be0 31c0 3030 3830 3c30 3e30 3730 33b0 31f0 30f0 3070 3030 3030 3030 3030 3030 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR a ENCODING 128 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0fc0 0fe0 0070 0030 0ff0 1ff0 3830 3830 1ff0 0ff0 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR b ENCODING 129 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 3000 3000 3000 3000 3000 3000 3fc0 3fe0 3070 3030 3030 3030 3030 3070 3fe0 3fc0 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR c ENCODING 130 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0ff0 1ff0 3800 3000 3000 3000 3000 3800 1ff0 0ff0 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR d ENCODING 131 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0030 0030 0030 0030 0030 0030 0ff0 1ff0 3830 3030 3030 3030 3030 3830 1ff0 0ff0 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR e ENCODING 132 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0fc0 1fe0 3870 3030 3ff0 3ff0 3000 3800 1fc0 0fc0 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR f ENCODING 133 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 00f0 01f0 0380 0300 0300 0300 3ff0 3ff0 0300 0300 0300 0300 0300 0300 0300 0300 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR g ENCODING 134 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0ff0 1ff0 3830 3030 3030 3030 3030 3870 1ff0 0ff0 0030 0070 0fe0 0fc0 0000 0000 ENDCHAR STARTCHAR h ENCODING 135 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 3000 3000 3000 3000 3000 3000 33c0 37e0 3e70 3c30 3830 3030 3030 3030 3030 3030 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR i ENCODING 136 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0000 0000 0300 0300 0000 0000 0300 0300 0300 0300 0300 0300 0300 0300 0300 0300 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR j ENCODING 137 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0000 0000 0030 0030 0000 0000 0030 0030 0030 0030 0030 0030 0030 0030 0030 0030 3030 3870 1fe0 0fc0 0000 0000 ENDCHAR STARTCHAR k ENCODING 138 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 3000 3000 3000 3000 3000 3000 3030 3070 30e0 31c0 3380 3780 3fc0 3ce0 3870 3030 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR l ENCODING 139 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0300 0300 0300 0300 0300 0300 0300 0300 0300 0300 0300 0300 0300 0380 01c0 00c0 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR m ENCODING 140 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 3fc0 3fe0 3b70 3330 3330 3330 3330 3330 3330 3330 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR n ENCODING 141 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 3fc0 3fe0 3870 3030 3030 3030 3030 3030 3030 3030 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR o ENCODING 142 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0fc0 1fe0 3870 3030 3030 3030 3030 3870 1fe0 0fc0 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR p ENCODING 143 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 3fc0 3fe0 3070 3030 3030 3030 3030 3070 3fe0 3fc0 3000 3000 3000 3000 0000 0000 ENDCHAR STARTCHAR q ENCODING 144 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0ff0 1ff0 3830 3030 3030 3030 3030 3870 1ff0 0fb0 0030 0030 0030 0030 0000 0000 ENDCHAR STARTCHAR r ENCODING 145 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 33c0 37e0 3e70 3c30 3800 3000 3000 3000 3000 3000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR s ENCODING 146 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0ff0 1ff0 3800 3800 1fc0 0fe0 0070 0070 3fe0 3fc0 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR t ENCODING 147 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0300 0300 0300 0300 0300 0300 3ff0 3ff0 0300 0300 0300 0300 0300 0300 03c0 01c0 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR u ENCODING 148 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 3030 3030 3030 3030 3030 3030 3030 3870 1ff0 0ff0 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR v ENCODING 149 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 3030 3030 3030 3870 1ce0 0cc0 0cc0 0fc0 0780 0300 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR w ENCODING 150 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 3030 3030 3030 3030 3330 3330 3330 3ff0 1fe0 0cc0 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR x ENCODING 151 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 3030 3870 1ce0 0fc0 0780 0780 0fc0 1ce0 3870 3030 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR y ENCODING 152 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 3030 3030 3030 3030 3030 3030 3030 3870 1ff0 0ff0 0030 0070 0fe0 0fc0 0000 0000 ENDCHAR STARTCHAR z ENCODING 153 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 3ff0 3ff0 00e0 01c0 0380 0700 0e00 1c00 3ff0 3ff0 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR ae ENCODING 154 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 3de0 3ff0 0330 0330 1ff0 3ff0 3300 3300 3ff0 1ee0 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR oslash ENCODING 155 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0ff0 1ff0 38f0 31f0 33b0 3730 3e30 3c70 3fe0 3fc0 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR aring ENCODING 156 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0fc0 0fc0 0fc0 0fc0 0000 0000 0fc0 0fe0 0070 0030 0ff0 1ff0 3830 3830 1ff0 0ff0 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR division ENCODING 157 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0000 0000 0000 0300 0300 0300 0000 0000 3ff0 3ff0 0000 0000 0300 0300 0300 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR fm ENCODING 158 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 3ff0 3ff0 0000 0000 0000 0000 0300 0300 0300 0300 0000 0000 0000 0000 0300 0300 0300 0700 0e00 0c00 0000 0000 ENDCHAR STARTCHAR dup ENCODING 159 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 3ff0 3ff0 0000 0000 0300 0300 3330 3b70 1fe0 0cc0 0cc0 1fe0 3b70 3330 0300 0300 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR A ENCODING 160 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0300 0780 0fc0 1ce0 3870 3030 3030 3030 3ff0 3ff0 3030 3030 3030 3030 3030 3030 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR B ENCODING 161 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 3fc0 3fe0 3070 3030 3030 3070 3fe0 3fe0 3070 3030 3030 3030 3030 3070 3fe0 3fc0 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR C ENCODING 162 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 03c0 07e0 0e70 1c30 3800 3000 3000 3000 3000 3000 3000 3800 1c30 0e70 07e0 03c0 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR D ENCODING 163 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 3fc0 3fe0 3070 3030 3030 3030 3030 3030 3030 3030 3030 3030 3030 3070 3fe0 3fc0 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR E ENCODING 164 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 3ff0 3ff0 3000 3000 3000 3000 3fc0 3fc0 3000 3000 3000 3000 3000 3000 3ff0 3ff0 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR F ENCODING 165 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 3ff0 3ff0 3000 3000 3000 3000 3fc0 3fc0 3000 3000 3000 3000 3000 3000 3000 3000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR G ENCODING 166 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0fc0 1fe0 3870 3030 3000 3000 30f0 30f0 3030 3030 3030 3030 3030 3870 1ff0 0fe0 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR H ENCODING 167 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 3030 3030 3030 3030 3030 3030 3ff0 3ff0 3030 3030 3030 3030 3030 3030 3030 3030 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR I ENCODING 168 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0fc0 0fc0 0300 0300 0300 0300 0300 0300 0300 0300 0300 0300 0300 0300 0fc0 0fc0 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR J ENCODING 169 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 03f0 03f0 00c0 00c0 00c0 00c0 00c0 00c0 00c0 00c0 30c0 30c0 30c0 39c0 1f80 0f00 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR K ENCODING 170 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 3030 3070 30e0 31c0 3380 3700 3e00 3c00 3c00 3e00 3700 3380 31c0 30e0 3070 3030 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR L ENCODING 171 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 3000 3000 3000 3000 3000 3000 3000 3000 3000 3000 3000 3000 3000 3000 3ff0 3ff0 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR M ENCODING 172 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 3030 3870 3cf0 3ff0 37b0 3330 3330 3330 3030 3030 3030 3030 3030 3030 3030 3030 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR N ENCODING 173 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 3030 3830 3c30 3e30 3730 3330 3330 33b0 31f0 30f0 3070 3030 3030 3030 3030 3030 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR O ENCODING 174 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0fc0 1fe0 3870 3030 3030 3030 3030 3030 3030 3030 3030 3030 3030 3870 1fe0 0fc0 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR P ENCODING 175 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 3fc0 3fe0 3070 3030 3030 3070 3fe0 3fc0 3000 3000 3000 3000 3000 3000 3000 3000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR Q ENCODING 176 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0fc0 1fe0 3870 3030 3030 3030 3030 3030 3030 3030 3030 3030 3330 3b70 1fe0 0fc0 01c0 00e0 0070 0030 0000 0000 ENDCHAR STARTCHAR R ENCODING 177 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 3fc0 3fe0 3070 3030 3030 3070 3fe0 3fc0 3300 3380 3180 30c0 30c0 3060 3070 3030 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR S ENCODING 178 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0fc0 1fe0 3870 3030 3000 3800 1fc0 0fe0 0070 0030 0030 0030 3030 3870 1fe0 0fc0 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR T ENCODING 179 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 3ff0 3ff0 0300 0300 0300 0300 0300 0300 0300 0300 0300 0300 0300 0300 0300 0300 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR U ENCODING 180 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 3030 3030 3030 3030 3030 3030 3030 3030 3030 3030 3030 3030 3030 3870 1fe0 0fc0 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR V ENCODING 181 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 3030 3030 3030 1860 1860 1860 0cc0 0cc0 0cc0 0780 0780 0780 0300 0300 0300 0300 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR W ENCODING 182 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 3030 3030 3030 3030 3030 3030 3030 3030 3330 3330 3330 3330 3330 3ff0 1fe0 0cc0 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR X ENCODING 183 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 3030 3030 3030 3870 1ce0 0fc0 0780 0300 0300 0780 0fc0 1ce0 3870 3030 3030 3030 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR Y ENCODING 184 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 3030 3030 3030 3870 1ce0 0fc0 0780 0300 0300 0300 0300 0300 0300 0300 0300 0300 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR Z ENCODING 185 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 3ff0 3ff0 0030 0070 00e0 01c0 0380 0300 0300 0700 0e00 1c00 3800 3000 3ff0 3ff0 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR AE ENCODING 186 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0ff0 1ff0 3980 3180 3180 3180 3ff0 3ff0 3180 3180 3180 3180 3180 3180 31f0 31f0 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR Ooblique ENCODING 187 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0fc0 1fe0 38f0 30f0 30f0 31f0 33b0 3330 3330 3730 3e30 3c30 3c30 3c70 1fe0 0fc0 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR Aring ENCODING 188 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0fc0 0fc0 0fc0 0fc0 0300 0780 0fc0 1ce0 3870 3030 3030 3030 3ff0 3ff0 3030 3030 3030 3030 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR Ccedilla ENCODING 189 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 03c0 07e0 0e70 1c30 3800 3000 3000 3000 3000 3000 3000 3800 1c30 0e70 07e0 03c0 00c0 00c0 0fc0 0f80 0000 0000 ENDCHAR STARTCHAR semicolon ENCODING 190 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0300 0300 0300 0300 0000 0000 0000 0000 0300 0300 0300 0700 0e00 0c00 0000 0000 ENDCHAR STARTCHAR asterisk ENCODING 191 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0000 0000 0300 0300 3330 3b70 1fe0 0cc0 0cc0 1fe0 3b70 3330 0300 0300 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR c0 ENCODING 192 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR c1 ENCODING 193 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR c2 ENCODING 194 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR c3 ENCODING 195 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR c4 ENCODING 196 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR c5 ENCODING 197 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR c6 ENCODING 198 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR c7 ENCODING 199 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR c8 ENCODING 200 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR c9 ENCODING 201 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR ca ENCODING 202 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR cb ENCODING 203 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR cc ENCODING 204 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR cd ENCODING 205 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR ce ENCODING 206 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR cf ENCODING 207 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR copyright ENCODING 208 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0fc0 1fe0 3870 7038 6018 6318 6498 6418 6418 6498 6318 6018 7038 3870 1fe0 0fc0 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR registered ENCODING 209 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0fc0 1fe0 3870 7038 6018 6718 6498 6498 6718 6498 6498 6018 7038 3870 1fe0 0fc0 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR boxA ENCODING 210 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 3c00 7e00 e700 c300 c300 c300 ff00 ff00 c300 c300 0000 0000 fffc fffc c00c c00c fffc fffc 0000 0000 0000 0000 ENDCHAR STARTCHAR insert ENCODING 211 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0000 0000 0000 0000 0300 0780 0fc0 1fe0 3ff0 7ff8 fffc fcfc f87c f03c e01c c00c 8004 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR boxB ENCODING 212 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 03f0 03f8 031c 031c 03f8 03f8 031c 031c 03f8 03f0 0000 0000 fffc fffc c00c c00c fffc fffc 0000 0000 0000 0000 ENDCHAR STARTCHAR box6 ENCODING 213 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0000 0000 fffc fffc c00c c30c c70c ce0c cc0c cc0c cf8c cfcc cccc cccc cfcc c78c c00c c00c fffc fffc 0000 0000 ENDCHAR STARTCHAR plusminus ENCODING 214 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0300 0300 0300 0300 3ff0 3ff0 0300 0300 0300 0300 0000 0000 3ff0 3ff0 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR ETH ENCODING 215 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 3fc0 3fe0 0c70 0c30 0c30 0c30 0c30 3f30 3f30 0c30 0c30 0c30 0c30 0c70 3fe0 3fc0 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR rightarrow ENCODING 216 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0000 0000 0000 0000 0000 0180 01c0 01e0 fff0 fff0 01e0 01c0 0180 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR THORN ENCODING 217 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 3000 3000 3000 3fc0 3fe0 3070 3030 3030 3070 3fe0 3fc0 3000 3000 3000 3000 3000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR upshift ENCODING 218 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0300 0780 0fc0 1ce0 3870 3030 3cf0 3cf0 0cc0 0cc0 0cc0 0cc0 0cc0 0cc0 0cc0 0cc0 0fc0 0fc0 0000 0000 0000 0000 ENDCHAR STARTCHAR human ENCODING 219 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0780 0fc0 0cc0 0cc0 0fc0 0780 0300 0300 3ff0 3ff0 0300 0300 0300 0780 0fc0 1ce0 3870 3030 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR underB ENCODING 220 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0f00 0f80 0cc0 0cc0 0f80 0f80 0cc0 0cc0 0f80 0f00 0000 0000 fffc fffc 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR downshift ENCODING 221 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0fc0 0fc0 0cc0 0cc0 0cc0 0cc0 0cc0 0cc0 0cc0 0cc0 3cf0 3cf0 3030 3870 1ce0 0fc0 0780 0300 0000 0000 0000 0000 ENDCHAR STARTCHAR boxquestion ENCODING 222 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 fffc fffc c00c c00c c30c c78c cfcc cccc c0cc c1cc c38c c30c c30c c00c c30c c30c c00c c00c fffc fffc 0000 0000 ENDCHAR STARTCHAR boxsolid ENCODING 223 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 fffc fffc fffc fffc fffc fffc fffc fffc fffc fffc fffc fffc fffc fffc fffc fffc fffc fffc fffc fffc 0000 0000 ENDCHAR STARTCHAR e0 ENCODING 224 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR e1 ENCODING 225 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR e2 ENCODING 226 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR e3 ENCODING 227 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR e4 ENCODING 228 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR e5 ENCODING 229 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR e6 ENCODING 230 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR e7 ENCODING 231 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR e8 ENCODING 232 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR e9 ENCODING 233 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR ea ENCODING 234 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR eb ENCODING 235 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR ec ENCODING 236 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR ed ENCODING 237 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR ee ENCODING 238 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR ef ENCODING 239 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR badcommhi ENCODING 240 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0000 8000 c000 e000 f000 f800 7c00 3e00 fffc fffc 07c0 03e0 01f0 00f8 007c 003c 001c 000c 0004 0000 0000 0000 ENDCHAR STARTCHAR commhi ENCODING 241 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 fffc fffc 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR commjag ENCODING 242 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ffc0 ffc0 0380 0700 0e00 1c00 3ffc 3ffc 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR commlo ENCODING 243 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 fffc fffc 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR clockleft ENCODING 244 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 000c 000c 0300 0300 0000 0000 0000 0004 000c 0c0c 0c0c 000c 000c 000c 000c 000c 0300 0300 000c 000c 0000 0000 ENDCHAR STARTCHAR clockright ENCODING 245 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0000 0000 0c00 0c00 3000 7000 e000 c000 8000 00c0 00c0 0000 0000 0000 0000 0000 0c00 0c00 0000 0000 0000 0000 ENDCHAR STARTCHAR lock ENCODING 246 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 8004 c00c e01c f03c f87c fcfc fffc 7ff8 3ff0 1fe0 1fe0 3ff0 7ff8 fffc fcfc f87c f03c e01c c00c 8004 0000 0000 0000 ENDCHAR STARTCHAR eth ENCODING 247 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0cc0 0fc0 0780 0fc0 0ce0 0070 0ff0 1ff0 3830 3030 3030 3030 3030 3870 1fe0 0fc0 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR leftarrow ENCODING 248 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0000 0000 0000 0000 0000 0600 0e00 1e00 3ffc 3ffc 1e00 0e00 0600 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR thorn ENCODING 249 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0000 0000 3000 3000 3000 3000 3fc0 3fe0 3070 3030 3030 3030 3030 3070 3fe0 3fc0 3000 3000 3000 3000 0000 0000 ENDCHAR STARTCHAR keyleft ENCODING 250 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0000 0000 0000 0000 03c0 07e0 0e70 0c3c 0c3c 0e70 07e0 03c0 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR keyright ENCODING 251 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 fffc fffc 0f3c 0f3c 0f3c 003c 003c 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR box4 ENCODING 252 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0000 0000 fffc fffc c00c c00c c0cc c1cc c3cc c7cc cecc cccc cfcc cfcc c0cc c0cc c00c c00c fffc fffc 0000 0000 ENDCHAR STARTCHAR underA ENCODING 253 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0300 0780 0fc0 0cc0 0cc0 0cc0 0fc0 0fc0 0cc0 0cc0 0000 0000 fffc fffc 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR magcard ENCODING 254 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0000 0000 0000 0000 fffc fffc c00c c00c c00c c00c fffc fffc c00c c00c fffc fffc 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR boxhuman ENCODING 255 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 fffc fffc c78c cfcc cccc cccc cfcc c78c fffc fffc c30c c30c c30c c78c cfcc dcec f87c f03c fffc fffc 0000 0000 ENDCHAR STARTCHAR apl_space ENCODING 272 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR apl_bracketright ENCODING 316 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0fc0 0fc0 00c0 00c0 00c0 00c0 00c0 00c0 00c0 00c0 00c0 00c0 00c0 00c0 00c0 00c0 0fc0 0fc0 0000 0000 0000 0000 ENDCHAR STARTCHAR apl_bracketleft ENCODING 328 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0fc0 0fc0 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0c00 0fc0 0fc0 0000 0000 0000 0000 ENDCHAR STARTCHAR apl_stile ENCODING 347 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0300 0300 0300 0300 0300 0300 0300 0300 0300 0300 0300 0300 0300 0300 0300 0300 0300 0300 0300 0300 0300 0300 0300 0300 ENDCHAR STARTCHAR apl_2vertical ENCODING 384 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 3030 3030 3030 3030 3030 3030 3030 3030 3030 3030 3030 3030 3030 3030 3030 3030 3030 3030 3030 3030 3030 3030 3030 3030 ENDCHAR STARTCHAR apl_2horizontal ENCODING 385 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 fffc fffc 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 fffc fffc 0000 0000 ENDCHAR STARTCHAR apl_leftvbar ENCODING 386 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 3000 3000 3000 3000 3000 3000 3000 3000 3000 3000 3000 3000 3000 3000 3000 3000 3000 3000 3000 3000 3000 3000 3000 3000 ENDCHAR STARTCHAR apl_rightvbar ENCODING 387 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0030 0030 0030 0030 0030 0030 0030 0030 0030 0030 0030 0030 0030 0030 0030 0030 0030 0030 0030 0030 0030 0030 0030 0030 ENDCHAR STARTCHAR apl_midvbar ENCODING 388 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0300 0300 0300 0300 0300 0300 0300 0300 0300 0300 0300 0300 0300 0300 0300 0300 0300 0300 0300 0300 0300 0300 0300 0300 ENDCHAR STARTCHAR apl_leftsolid ENCODING 393 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP fe00 fe00 fe00 fe00 fe00 fe00 fe00 fe00 fe00 fe00 fe00 fe00 fe00 fe00 fe00 fe00 fe00 fe00 fe00 fe00 fe00 fe00 fe00 fe00 ENDCHAR STARTCHAR apl_rightsolid ENCODING 394 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 01fc 01fc 01fc 01fc 01fc 01fc 01fc 01fc 01fc 01fc 01fc 01fc 01fc 01fc 01fc 01fc 01fc 01fc 01fc 01fc 01fc 01fc 01fc 01fc ENDCHAR STARTCHAR apl_topsolid ENCODING 395 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP fffc fffc fffc fffc fffc fffc fffc fffc fffc fffc fffc fffc 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR apl_bottomsolid ENCODING 396 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 fffc fffc fffc fffc fffc fffc fffc fffc fffc fffc fffc fffc ENDCHAR STARTCHAR apl_solid ENCODING 397 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP fffc fffc fffc fffc fffc fffc fffc fffc fffc fffc fffc fffc fffc fffc fffc fffc fffc fffc fffc fffc fffc fffc fffc fffc ENDCHAR STARTCHAR apl_midhbar ENCODING 402 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 fffc fffc 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR apl_lowerleft ENCODING 419 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0300 0300 0300 0300 0300 0300 0300 0300 0300 0380 03fc 01fc 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR apl_upperleft ENCODING 420 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 01fc 03fc 0380 0300 0300 0300 0300 0300 0300 0300 0300 0300 0300 0300 ENDCHAR STARTCHAR apl_leftjoin ENCODING 421 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0300 0300 0300 0300 0300 0300 0300 0300 0300 0300 03fc 03fc 0300 0300 0300 0300 0300 0300 0300 0300 0300 0300 0300 0300 ENDCHAR STARTCHAR apl_bottomjoin ENCODING 422 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0300 0300 0300 0300 0300 0300 0300 0300 0300 0300 fffc fffc 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR apl_intersect ENCODING 427 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0300 0300 0300 0300 0300 0300 0300 0300 0300 0300 fffc fffc 0300 0300 0300 0300 0300 0300 0300 0300 0300 0300 0300 0300 ENDCHAR STARTCHAR apl_lowerright ENCODING 428 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0300 0300 0300 0300 0300 0300 0300 0300 0300 0700 ff00 fe00 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR apl_upperright ENCODING 429 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 fe00 ff00 0700 0300 0300 0300 0300 0300 0300 0300 0300 0300 0300 0300 ENDCHAR STARTCHAR apl_rightjoin ENCODING 430 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0300 0300 0300 0300 0300 0300 0300 0300 0300 0300 ff00 ff00 0300 0300 0300 0300 0300 0300 0300 0300 0300 0300 0300 0300 ENDCHAR STARTCHAR apl_topjoin ENCODING 431 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 fffc fffc 0300 0300 0300 0300 0300 0300 0300 0300 0300 0300 0300 0300 ENDCHAR STARTCHAR dec_solid ENCODING 512 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0fc0 0fc0 0fc0 0fc0 0fc0 0fc0 0fc0 0fc0 0fc0 0fc0 0fc0 0fc0 0fc0 0fc0 0fc0 0fc0 0fc0 0fc0 0fc0 0fc0 0fc0 0fc0 0fc0 0fc0 ENDCHAR STARTCHAR dec_filled_circle ENCODING 513 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0000 0000 0000 0000 0000 0380 07c0 0fe0 0fe0 0fe0 07c0 0380 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR dec_halftone_block ENCODING 514 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP aaa8 5554 aaa8 5554 aaa8 5554 aaa8 5554 aaa8 5554 aaa8 5554 aaa8 5554 aaa8 5554 aaa8 5554 aaa8 5554 aaa8 5554 aaa8 5554 ENDCHAR STARTCHAR dec_ht ENCODING 515 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 6600 6600 6600 6600 7e00 7e00 6600 6600 6600 6600 0000 0000 03f0 03f0 00c0 00c0 00c0 00c0 00c0 00c0 00c0 00c0 0000 ENDCHAR STARTCHAR dec_ff ENCODING 516 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 7e00 7e00 6000 6000 7c00 7c00 6000 6000 6000 6000 0000 0000 03f0 03f0 0300 0300 03e0 03e0 0300 0300 0300 0300 0000 ENDCHAR STARTCHAR dec_cr ENCODING 517 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 3c00 7e00 7600 6000 6000 6000 6000 7600 7e00 3c00 0000 0000 03e0 03f0 0330 0330 03e0 03c0 0360 0370 0330 0330 0000 ENDCHAR STARTCHAR dec_lf ENCODING 518 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 6000 6000 6000 6000 6000 6000 6000 6000 7e00 7e00 0000 0000 03f0 03f0 0300 0300 03e0 03e0 0300 0300 0300 0300 0000 ENDCHAR STARTCHAR dec_degree ENCODING 519 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0780 0fc0 0cc0 0cc0 0fc0 0780 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR dec_plusminus ENCODING 520 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0300 0300 0300 0300 3ff0 3ff0 0300 0300 0300 0300 0000 0000 3ff0 3ff0 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR dec_nl ENCODING 521 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 6300 7300 7300 7b00 6b00 6f00 6700 6700 6300 6300 0000 0000 0300 0300 0300 0300 0300 0300 0300 0300 03f0 03f0 0000 ENDCHAR STARTCHAR dec_vt ENCODING 522 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 6300 6300 6300 6300 6300 6300 7700 3e00 1c00 0800 0000 0000 03f0 03f0 00c0 00c0 00c0 00c0 00c0 00c0 00c0 00c0 0000 ENDCHAR STARTCHAR dec_lowerright ENCODING 523 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0300 0300 0300 0300 0300 0300 0300 0300 0300 0700 ff00 fe00 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR dec_upperright ENCODING 524 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 fe00 ff00 0700 0300 0300 0300 0300 0300 0300 0300 0300 0300 0300 0300 ENDCHAR STARTCHAR dec_upperleft ENCODING 525 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 01fc 03fc 0380 0300 0300 0300 0300 0300 0300 0300 0300 0300 0300 0300 ENDCHAR STARTCHAR dec_lowerleft ENCODING 526 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0300 0300 0300 0300 0300 0300 0300 0300 0300 0380 03fc 01fc 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR dec_intersect ENCODING 527 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0300 0300 0300 0300 0300 0300 0300 0300 0300 0300 fffc fffc 0300 0300 0300 0300 0300 0300 0300 0300 0300 0300 0300 0300 ENDCHAR STARTCHAR dec_hbar1 ENCODING 528 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 fffc fffc 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR dec_hbar2 ENCODING 529 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0000 0000 0000 0000 fffc fffc 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR dec_hbar3 ENCODING 530 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 fffc fffc 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR dec_hbar4 ENCODING 531 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 fffc fffc 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR dec_hbar5 ENCODING 532 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 fffc fffc 0000 0000 0000 0000 ENDCHAR STARTCHAR dec_leftjoin ENCODING 533 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0300 0300 0300 0300 0300 0300 0300 0300 0300 0300 03fc 03fc 0300 0300 0300 0300 0300 0300 0300 0300 0300 0300 0300 0300 ENDCHAR STARTCHAR dec_rightjoin ENCODING 534 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0300 0300 0300 0300 0300 0300 0300 0300 0300 0300 ff00 ff00 0300 0300 0300 0300 0300 0300 0300 0300 0300 0300 0300 0300 ENDCHAR STARTCHAR dec_bottomjoin ENCODING 535 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0300 0300 0300 0300 0300 0300 0300 0300 0300 0300 fffc fffc 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR dec_topjoin ENCODING 536 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 fffc fffc 0300 0300 0300 0300 0300 0300 0300 0300 0300 0300 0300 0300 ENDCHAR STARTCHAR dec_vbar ENCODING 537 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0300 0300 0300 0300 0300 0300 0300 0300 0300 0300 0300 0300 0300 0300 0300 0300 0300 0300 0300 0300 0300 0300 0300 0300 ENDCHAR STARTCHAR dec_notgreater ENCODING 538 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0000 0000 00c0 01c0 0380 0700 0e00 1c00 3800 3800 1c00 0e00 0700 0380 01c0 00c0 0000 0000 7fe0 7fe0 0000 0000 ENDCHAR STARTCHAR dec_notless ENCODING 539 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0000 0000 0c00 0e00 0700 0380 01c0 00e0 0070 0070 00e0 01c0 0380 0700 0e00 0c00 0000 0000 1ff8 1ff8 0000 0000 ENDCHAR STARTCHAR dec_pi ENCODING 540 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0000 0000 0000 0000 7ff8 7ff8 1860 1860 1860 1860 1860 1860 1860 3860 3860 3060 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR dec_notequal ENCODING 541 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0000 0030 0030 0070 00e0 00c0 3ff0 3ff0 0380 0300 3ff0 3ff0 0e00 0c00 0c00 1c00 1800 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR dec_sterling ENCODING 542 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0300 0780 0fc0 0cc0 0c00 0c00 3fc0 3fc0 0c00 0c00 0c00 0c00 0c30 1e70 3fe0 33c0 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR dec_periodcentered ENCODING 543 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0300 0300 0300 0300 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR ENDFONT suite3270-4.1/x3270/3270gt24b.bdf000066400000000000000000002022711413735575200155410ustar00rootroot00000000000000STARTFONT 2.1 COMMENT "24-point bold 3270 font" COMMENT "Uses nonstandard ordering:" COMMENT " Page 0: EBCDIC US-International set, CG order" COMMENT " Page 1: EBCDIC APL/APL2 set, CG order (incomplete)" COMMENT " Page 2: (first 16 characters only) DEC line-drawing characters from" COMMENT " fixed-width X fonts" COMMENT "" COMMENT "Copyright (c) 1994-2009, Paul Mattes." COMMENT "Copyright (c) 1989, Georgia Tech Research Corporation (GTRC)," COMMENT " Atlanta, GA 30332." COMMENT "All rights reserved." COMMENT "" COMMENT "Redistribution and use in source and binary forms, with or" COMMENT "without modification, are permitted provided that the following" COMMENT "conditions are met:" COMMENT " * Redistributions of source code must retain the above" COMMENT " copyright notice, this list of conditions and the following" COMMENT " disclaimer." COMMENT " * Redistributions in binary form must reproduce the above" COMMENT " copyright notice, this list of conditions and the following" COMMENT " disclaimer in the documentation and/or other materials" COMMENT " provided with the distribution." COMMENT " * Neither the names of Paul Mattes, GTRC nor their" COMMENT " contributors may be used to endorse or promote products" COMMENT " derived from this software without specific prior written" COMMENT " permission." COMMENT "" COMMENT "THIS SOFTWARE IS PROVIDED BY PAUL MATTES AND GTRC 'AS IS' AND" COMMENT "ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED" COMMENT "TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR" COMMENT "A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL PAUL" COMMENT "MATTES OR GTRC BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL," COMMENT "SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT" COMMENT "NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;" COMMENT "LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER" COMMENT "CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT," COMMENT "STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)" COMMENT "ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF" COMMENT "ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." FONT 3270gt24bold SIZE 24 72 72 FONTBOUNDINGBOX 14 24 0 -6 STARTPROPERTIES 27 FOUNDRY "GaTech" FAMILY_NAME "3270" WEIGHT_NAME "Bold" SLANT "R" SETWIDTH_NAME "Normal" ADD_STYLE_NAME "" PIXEL_SIZE 24 POINT_SIZE 240 RESOLUTION_X 72 RESOLUTION_Y 72 SPACING "C" AVERAGE_WIDTH 140 CHARSET_REGISTRY "3270cg" CHARSET_ENCODING "1" MIN_SPACE 14 NORM_SPACE 14 MAX_SPACE 14 END_SPACE 14 AVG_CAPITAL_WIDTH 140 AVG_LOWERCASE_WIDTH 140 CAP_HEIGHT 14 X_HEIGHT 10 RELATIVE_WEIGHT 50 DESTINATION "Video Text" FONT_ASCENT 18 FONT_DESCENT 6 DEFAULT_CHAR 514 ENDPROPERTIES CHARS 312 STARTCHAR null ENCODING 0 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR nobreakspace ENCODING 1 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR euro ENCODING 2 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 03F0 07FC 0FFC 1E04 1C00 7FF0 FFF0 1C00 1C00 7FE0 FFC0 1C00 1E00 0FFC 07F8 03F0 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR cr ENCODING 3 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR nl ENCODING 4 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR em ENCODING 5 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR eightones ENCODING 6 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0000 0000 0000 0000 0380 0fe0 0fe0 1ff0 1ff0 1ff0 0fe0 0fe0 0380 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR hyphen ENCODING 7 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 3ff8 3ff8 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR greater ENCODING 8 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0000 0000 0e00 0f00 0780 03c0 01e0 00f0 0078 0078 00f0 01e0 03c0 0780 0f00 0e00 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR less ENCODING 9 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0000 0000 00e0 01e0 03c0 0780 0f00 1e00 3c00 3c00 1e00 0f00 0780 03c0 01e0 00e0 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR bracketleft ENCODING 10 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0fe0 0fe0 0e00 0e00 0e00 0e00 0e00 0e00 0e00 0e00 0e00 0e00 0e00 0e00 0e00 0e00 0fe0 0fe0 0000 0000 0000 0000 ENDCHAR STARTCHAR bracketright ENCODING 11 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0fe0 0fe0 00e0 00e0 00e0 00e0 00e0 00e0 00e0 00e0 00e0 00e0 00e0 00e0 00e0 00e0 0fe0 0fe0 0000 0000 0000 0000 ENDCHAR STARTCHAR parenright ENCODING 12 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0e00 0f00 0780 03c0 01e0 00e0 00e0 00e0 00e0 00e0 00e0 00e0 00e0 01e0 03c0 0780 0f00 0e00 0000 0000 0000 0000 ENDCHAR STARTCHAR parenleft ENCODING 13 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 00e0 01e0 03c0 0780 0f00 0e00 0e00 0e00 0e00 0e00 0e00 0e00 0e00 0f00 0780 03c0 01e0 00e0 0000 0000 0000 0000 ENDCHAR STARTCHAR braceright ENCODING 14 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0e00 0f00 0780 0380 0380 0380 0380 03c0 01e0 01e0 03c0 0380 0380 0380 0380 0780 0f00 0e00 0000 0000 0000 0000 ENDCHAR STARTCHAR braceleft ENCODING 15 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 00e0 01e0 03c0 0380 0380 0380 0380 0780 0f00 0f00 0780 0380 0380 0380 0380 03c0 01e0 00e0 0000 0000 0000 0000 ENDCHAR STARTCHAR space ENCODING 16 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR equal ENCODING 17 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 3ff8 3ff8 0000 0000 3ff8 3ff8 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR apostrophe ENCODING 18 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0380 0380 0380 0380 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR quotedbl ENCODING 19 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0ee0 0ee0 0ee0 0ee0 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR slash ENCODING 20 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0038 0038 0038 0078 00f0 00e0 00e0 01e0 03c0 0380 0380 0780 0f00 0e00 0e00 1e00 3c00 3800 0000 0000 0000 0000 ENDCHAR STARTCHAR backslash ENCODING 21 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 3800 3800 3800 3c00 1e00 0e00 0e00 0f00 0780 0380 0380 03c0 01e0 00e0 00e0 00f0 0078 0038 0000 0000 0000 0000 ENDCHAR STARTCHAR bar ENCODING 22 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0380 0380 0380 0380 0380 0380 0380 0380 0380 0380 0380 0380 0380 0380 0380 0380 0380 0380 0380 0380 0000 0000 ENDCHAR STARTCHAR brokenbar ENCODING 23 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0380 0380 0380 0380 0380 0380 0380 0380 0000 0000 0000 0000 0380 0380 0380 0380 0380 0380 0380 0380 0000 0000 ENDCHAR STARTCHAR question ENCODING 24 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0fe0 1ff0 3c78 3838 0038 0078 00f0 01e0 03c0 0380 0380 0380 0000 0000 0380 0380 0380 0380 0000 0000 0000 0000 ENDCHAR STARTCHAR exclam ENCODING 25 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0380 0380 0380 0380 0380 0380 0380 0380 0380 0380 0380 0380 0000 0000 0380 0380 0380 0380 0000 0000 0000 0000 ENDCHAR STARTCHAR dollar ENCODING 26 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0380 0380 0ff8 1ff8 3f80 3b80 3b80 3f80 1fe0 0ff0 03f8 03b8 03b8 03f8 3ff0 3fe0 0380 0380 0000 0000 0000 0000 ENDCHAR STARTCHAR cent ENCODING 27 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0000 0000 0380 0380 0ff8 1ff8 3f80 3b80 3b80 3f80 1ff8 0ff8 0380 0380 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR sterling ENCODING 28 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0380 07c0 0fe0 0ee0 0e00 0e00 3fe0 3fe0 0e00 0e00 0e00 0e00 0e38 1f78 3ff0 3be0 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR yen ENCODING 29 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 3838 3c78 1ef0 0fe0 07c0 0380 3ff8 3ff8 0380 0380 3ff8 3ff8 0380 0380 0380 0380 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR paragraph ENCODING 30 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 3f80 3fc0 39e0 38e0 38e0 39e0 3fc0 3f80 3800 3800 38e0 38e0 3bf8 3bf8 38e0 38e0 00e0 00e0 0000 0000 0000 0000 ENDCHAR STARTCHAR currency ENCODING 31 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0000 0000 3838 3c78 1ef0 0fe0 0fe0 1ff0 1c70 1c70 1ff0 0fe0 0fe0 1ef0 3c78 3838 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR 0 ENCODING 32 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0fe0 1ff0 3c78 3838 3838 3838 3bb8 3bb8 3bb8 3bb8 3838 3838 3838 3c78 1ff0 0fe0 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR 1 ENCODING 33 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 00e0 01e0 03e0 07e0 0fe0 0ee0 00e0 00e0 00e0 00e0 00e0 00e0 00e0 00e0 00e0 00e0 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR 2 ENCODING 34 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0fe0 1ff0 3c78 3838 0038 0038 0038 0078 00f0 01e0 03c0 0780 0f00 1e00 3ff8 3ff8 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR 3 ENCODING 35 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 3ff8 3ff8 0038 0078 00f0 01e0 03e0 07f0 0078 0038 0038 0038 0038 0078 3ff0 3fe0 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR 4 ENCODING 36 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 03e0 03e0 03e0 07e0 0fe0 0ee0 0ee0 1ee0 3ce0 38e0 3ff8 3ff8 00e0 00e0 00e0 00e0 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR 5 ENCODING 37 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 3ff8 3ff8 3800 3800 3800 3800 3fe0 3ff0 0078 0038 0038 0038 0038 0078 3ff0 3fe0 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR 6 ENCODING 38 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0380 0780 0f00 1e00 3c00 3800 3fe0 3ff0 3c78 3838 3838 3838 3838 3c78 1ff0 0fe0 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR 7 ENCODING 39 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 3ff8 3ff8 0038 0078 00f0 01e0 03c0 0780 0f00 0e00 0e00 0e00 0e00 0e00 0e00 0e00 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR 8 ENCODING 40 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0fe0 1ff0 3c78 3838 3838 3c78 1ff0 1ff0 3c78 3838 3838 3838 3838 3c78 1ff0 0fe0 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR 9 ENCODING 41 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0fe0 1ff0 3c78 3838 3838 3878 38f8 3df8 1ff8 0fb8 0038 0038 0038 0078 00f0 00e0 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR ssharp ENCODING 42 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0f80 1fc0 3de0 38e0 38e0 39e0 3b80 3fc0 39e0 38f0 3878 3c38 3e38 3f78 3ff0 3be0 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR section ENCODING 43 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 03e0 07e0 0f00 0e00 0e00 1f00 3f80 3bc0 39e0 3cf0 1e78 0f38 07b8 03f8 01f0 00e0 00e0 01e0 0fc0 0f80 0000 0000 ENDCHAR STARTCHAR numbersign ENCODING 44 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0000 0000 0ee0 0ee0 3ff8 3ff8 0ee0 0ee0 3ff8 3ff8 0ee0 0ee0 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR at ENCODING 45 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0fe0 1ff0 3c78 3838 3bb8 3ff8 3ff8 3ff8 3ff0 3be0 3800 3800 3800 3c00 1ff8 0ff8 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR percent ENCODING 46 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0e00 1f00 3b80 3b80 1f38 0e78 00f0 01e0 03c0 0780 0f00 1e00 3ce0 39f0 03b8 03b8 01f0 00e0 0000 0000 0000 0000 ENDCHAR STARTCHAR underscore ENCODING 47 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 3ff8 3ff8 0000 0000 0000 0000 ENDCHAR STARTCHAR ampersand ENCODING 48 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0e00 1f00 3f80 3b80 3b80 3f80 1f00 1e00 3e00 3f00 3fb8 3ff8 39f0 3ce0 1ff0 0ff8 003c 001c 0000 0000 0000 0000 ENDCHAR STARTCHAR minus ENCODING 49 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 3ff8 3ff8 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR period ENCODING 50 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0380 0380 0380 0380 0000 0000 0000 0000 ENDCHAR STARTCHAR comma ENCODING 51 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0380 0380 0380 0780 0f00 0e00 0000 0000 ENDCHAR STARTCHAR colon ENCODING 52 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0380 0380 0380 0380 0000 0000 0000 0000 0380 0380 0380 0380 0000 0000 0000 0000 ENDCHAR STARTCHAR plus ENCODING 53 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0000 0000 0000 0000 0380 0380 0380 0380 3ff8 3ff8 0380 0380 0380 0380 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR notsign ENCODING 54 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 3ff8 3ff8 0038 0038 0038 0038 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR macron ENCODING 55 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0000 0000 3ff8 3ff8 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR degree ENCODING 56 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 07c0 0fe0 0ee0 0ee0 0fe0 07c0 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR periodcentered ENCODING 57 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0380 0380 0380 0380 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR asciicircum ENCODING 58 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0380 07c0 0fe0 0ee0 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR asciitilde ENCODING 59 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0f38 1ff8 3ff0 39e0 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR diaeresis ENCODING 60 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0ee0 0ee0 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR grave ENCODING 61 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0e00 0f00 0780 0380 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR acute ENCODING 62 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 00e0 01e0 03c0 0380 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR cedilla ENCODING 63 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0380 0380 0f80 0f00 0000 0000 ENDCHAR STARTCHAR agrave ENCODING 64 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0e00 0f00 0780 0380 0000 0000 0fe0 0ff0 0078 0038 0ff8 1ff8 3c38 3c38 1ff8 0ff8 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR egrave ENCODING 65 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0e00 0f00 0780 0380 0000 0000 0fe0 1ff0 3c78 3838 3ff8 3ff8 3800 3c00 1fe0 0fe0 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR igrave ENCODING 66 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0e00 0f00 0780 0380 0000 0000 0380 0380 0380 0380 0380 0380 0380 0380 0380 0380 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR ograve ENCODING 67 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0e00 0f00 0780 0380 0000 0000 0fe0 1ff0 3c78 3838 3838 3838 3838 3c78 1ff0 0fe0 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR ugrave ENCODING 68 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0e00 0f00 0780 0380 0000 0000 3838 3838 3838 3838 3838 3838 3838 3c78 1ff8 0ff8 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR atilde ENCODING 69 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0f38 1ff8 3ff0 39e0 0000 0000 0fe0 0ff0 0078 0038 0ff8 1ff8 3c38 3c38 1ff8 0ff8 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR otilde ENCODING 70 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0f38 1ff8 3ff0 39e0 0000 0000 0fe0 1ff0 3c78 3838 3838 3838 3838 3c78 1ff0 0fe0 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR ydiaeresis ENCODING 71 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0000 0000 0ee0 0ee0 0000 0000 3838 3838 3838 3838 3838 3838 3838 3c78 1ff8 0ff8 0038 0078 0ff0 0fe0 0000 0000 ENDCHAR STARTCHAR Yacute ENCODING 72 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 00e0 01e0 03c0 0380 3838 3838 3838 3c78 1ef0 0fe0 07c0 0380 0380 0380 0380 0380 0380 0380 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR yacute ENCODING 73 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 00e0 01e0 03c0 0380 0000 0000 3838 3838 3838 3838 3838 3838 3838 3c78 1ff8 0ff8 0038 0078 0ff0 0fe0 0000 0000 ENDCHAR STARTCHAR eacute ENCODING 74 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 00e0 01e0 03c0 0380 0000 0000 0fe0 1ff0 3c78 3838 3ff8 3ff8 3800 3c00 1fe0 0fe0 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR onequarter ENCODING 75 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 1c00 3c00 7c00 7c00 1c00 1c00 1c00 1c00 1c00 1cf0 01f0 03f0 07f0 0770 07fc 07fc 0070 0070 0070 0000 0000 0000 0000 ENDCHAR STARTCHAR onehalf ENCODING 76 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 1c00 3c00 7c00 7c00 1c00 1c00 1c00 1c00 1c00 1df0 03f8 03bc 003c 0078 00f0 01e0 03c0 03fc 03fc 0000 0000 0000 0000 ENDCHAR STARTCHAR threequarters ENCODING 77 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 7f00 7f00 0e00 1c00 3e00 0f00 0700 0700 7f00 7ef0 01f0 03f0 07f0 0770 07fc 07fc 0070 0070 0070 0000 0000 0000 0000 ENDCHAR STARTCHAR udiaeresis ENCODING 78 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0000 0000 0ee0 0ee0 0000 0000 3838 3838 3838 3838 3838 3838 3838 3c78 1ff8 0ff8 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR ccedilla ENCODING 79 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0ff8 1ff8 3c00 3800 3800 3800 3800 3c00 1ff8 0ff8 0380 0380 0f80 0f00 0000 0000 ENDCHAR STARTCHAR adiaeresis ENCODING 80 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0000 0000 0ee0 0ee0 0000 0000 0fe0 0ff0 0078 0038 0ff8 1ff8 3c38 3c38 1ff8 0ff8 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR ediaeresis ENCODING 81 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0000 0000 0ee0 0ee0 0000 0000 0fe0 1ff0 3c78 3838 3ff8 3ff8 3800 3c00 1fe0 0fe0 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR idiaeresis ENCODING 82 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0000 0000 0ee0 0ee0 0000 0000 0380 0380 0380 0380 0380 0380 0380 0380 0380 0380 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR odiaeresis ENCODING 83 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0000 0000 0ee0 0ee0 0000 0000 0fe0 1ff0 3c78 3838 3838 3838 3838 3c78 1ff0 0fe0 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR mu ENCODING 84 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 3838 3838 3838 3838 3838 3838 3838 3c78 3ff8 3ff8 3800 3800 3800 3800 0000 0000 ENDCHAR STARTCHAR acircumflex ENCODING 85 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0380 07c0 0fe0 0ee0 0000 0000 0fe0 0ff0 0078 0038 0ff8 1ff8 3c38 3c38 1ff8 0ff8 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR ecircumflex ENCODING 86 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0380 07c0 0fe0 0ee0 0000 0000 0fe0 1ff0 3c78 3838 3ff8 3ff8 3800 3c00 1fe0 0fe0 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR icircumflex ENCODING 87 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0380 07c0 0fe0 0ee0 0000 0000 0380 0380 0380 0380 0380 0380 0380 0380 0380 0380 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR ocircumflex ENCODING 88 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0380 07c0 0fe0 0ee0 0000 0000 0fe0 1ff0 3c78 3838 3838 3838 3838 3c78 1ff0 0fe0 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR ucircumflex ENCODING 89 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0380 07c0 0fe0 0ee0 0000 0000 3838 3838 3838 3838 3838 3838 3838 3c78 1ff8 0ff8 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR aacute ENCODING 90 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 00e0 01e0 03c0 0380 0000 0000 0fe0 0ff0 0078 0038 0ff8 1ff8 3c38 3c38 1ff8 0ff8 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR multiply ENCODING 91 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0000 0000 0000 3838 3c78 1ef0 0fe0 07c0 07c0 0fe0 1ef0 3c78 3838 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR iacute ENCODING 92 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 00e0 01e0 03c0 0380 0000 0000 0380 0380 0380 0380 0380 0380 0380 0380 0380 0380 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR oacute ENCODING 93 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 00e0 01e0 03c0 0380 0000 0000 0fe0 1ff0 3c78 3838 3838 3838 3838 3c78 1ff0 0fe0 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR uacute ENCODING 94 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 00e0 01e0 03c0 0380 0000 0000 3838 3838 3838 3838 3838 3838 3838 3c78 1ff8 0ff8 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR ntilde ENCODING 95 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0f38 1ff8 3ff0 39e0 0000 0000 3fe0 3ff0 3c78 3838 3838 3838 3838 3838 3838 3838 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR Agrave ENCODING 96 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0e00 0f00 0780 0380 0380 07c0 0fe0 1ef0 3c78 3838 3838 3838 3ff8 3ff8 3838 3838 3838 3838 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR Egrave ENCODING 97 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0e00 0f00 0780 0380 3ff8 3ff8 3800 3800 3800 3800 3fe0 3fe0 3800 3800 3800 3800 3ff8 3ff8 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR Igrave ENCODING 98 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0e00 0f00 0780 0380 0fe0 0fe0 0380 0380 0380 0380 0380 0380 0380 0380 0380 0380 0fe0 0fe0 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR Ograve ENCODING 99 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0e00 0f00 0780 0380 0fe0 1ff0 3c78 3838 3838 3838 3838 3838 3838 3838 3838 3c78 1ff0 0fe0 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR Ugrave ENCODING 100 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0e00 0f00 0780 0380 3838 3838 3838 3838 3838 3838 3838 3838 3838 3838 3838 3c78 1ff0 0fe0 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR Atilde ENCODING 101 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0f38 1ff8 3ff0 39e0 0380 07c0 0fe0 1ef0 3c78 3838 3838 3838 3ff8 3ff8 3838 3838 3838 3838 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR Otilde ENCODING 102 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0f38 1ff8 3ff0 39e0 0fe0 1ff0 3c78 3838 3838 3838 3838 3838 3838 3838 3838 3c78 1ff0 0fe0 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR onesuperior ENCODING 103 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 01c0 03c0 07c0 07c0 01c0 01c0 01c0 01c0 01c0 01c0 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR twosuperior ENCODING 104 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 07c0 0fe0 0ef0 00f0 01e0 03c0 0780 0f00 0ff0 0ff0 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR threesuperior ENCODING 105 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0ff0 0ff0 00e0 01c0 03e0 00f0 0070 0070 0ff0 0fe0 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR ordfeminine ENCODING 106 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0000 0000 0fe0 0ff0 0070 0038 0ff8 1ff8 3c38 3c38 1ff8 0ff8 0000 0000 3ff8 3ff8 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR masculine ENCODING 107 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0000 0000 0fe0 1ff0 3c78 3838 3838 3838 3838 3c78 1ff0 0fe0 0000 0000 3ff8 3ff8 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR guillemotleft ENCODING 108 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0000 0000 0000 0000 039c 07bc 0f78 1ef0 3de0 3de0 1ef0 0f78 07bc 039c 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR guillemotright ENCODING 109 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0000 0000 0000 0000 39c0 3de0 1ef0 0f78 07bc 07bc 0f78 1ef0 3de0 39c0 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR exclamdown ENCODING 110 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0380 0380 0380 0380 0000 0000 0380 0380 0380 0380 0380 0380 0380 0380 0380 0380 0380 0380 0000 0000 0000 0000 ENDCHAR STARTCHAR questiondown ENCODING 111 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0380 0380 0380 0380 0000 0000 0380 0380 0380 0780 0f00 1e00 3c00 3800 3838 3c78 1ff0 0fe0 0000 0000 0000 0000 ENDCHAR STARTCHAR Adiaeresis ENCODING 112 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0ee0 0ee0 0000 0000 0380 07c0 0fe0 1ef0 3c78 3838 3838 3838 3ff8 3ff8 3838 3838 3838 3838 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR Ediaeresis ENCODING 113 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0ee0 0ee0 0000 0000 3ff8 3ff8 3800 3800 3800 3800 3fe0 3fe0 3800 3800 3800 3800 3ff8 3ff8 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR Idiaeresis ENCODING 114 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0ee0 0ee0 0000 0000 0fe0 0fe0 0380 0380 0380 0380 0380 0380 0380 0380 0380 0380 0fe0 0fe0 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR Odiaeresis ENCODING 115 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0ee0 0ee0 0000 0000 0fe0 1ff0 3c78 3838 3838 3838 3838 3838 3838 3838 3838 3c78 1ff0 0fe0 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR Udiaeresis ENCODING 116 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0ee0 0ee0 0000 0000 3838 3838 3838 3838 3838 3838 3838 3838 3838 3838 3838 3c78 1ff0 0fe0 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR Acircumflex ENCODING 117 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0380 07c0 0fe0 0ee0 0380 07c0 0fe0 1ef0 3c78 3838 3838 3838 3ff8 3ff8 3838 3838 3838 3838 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR Ecircumflex ENCODING 118 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0380 07c0 0fe0 0ee0 3ff8 3ff8 3800 3800 3800 3800 3fe0 3fe0 3800 3800 3800 3800 3ff8 3ff8 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR Icircumflex ENCODING 119 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0380 07c0 0fe0 0ee0 0fe0 0fe0 0380 0380 0380 0380 0380 0380 0380 0380 0380 0380 0fe0 0fe0 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR Ocircumflex ENCODING 120 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0380 07c0 0fe0 0ee0 0fe0 1ff0 3c78 3838 3838 3838 3838 3838 3838 3838 3838 3c78 1ff0 0fe0 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR Ucircumflex ENCODING 121 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0380 07c0 0fe0 0ee0 3838 3838 3838 3838 3838 3838 3838 3838 3838 3838 3838 3c78 1ff0 0fe0 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR Aacute ENCODING 122 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 00e0 01e0 03c0 0380 0380 07c0 0fe0 1ef0 3c78 3838 3838 3838 3ff8 3ff8 3838 3838 3838 3838 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR Eacute ENCODING 123 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 00e0 01e0 03c0 0380 3ff8 3ff8 3800 3800 3800 3800 3fe0 3fe0 3800 3800 3800 3800 3ff8 3ff8 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR Iacute ENCODING 124 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 00e0 01e0 03c0 0380 0fe0 0fe0 0380 0380 0380 0380 0380 0380 0380 0380 0380 0380 0fe0 0fe0 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR Oacute ENCODING 125 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 00e0 01e0 03c0 0380 0fe0 1ff0 3c78 3838 3838 3838 3838 3838 3838 3838 3838 3c78 1ff0 0fe0 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR Uacute ENCODING 126 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 00e0 01e0 03c0 0380 3838 3838 3838 3838 3838 3838 3838 3838 3838 3838 3838 3c78 1ff0 0fe0 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR Ntilde ENCODING 127 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0f38 1ff8 3ff0 39e0 3838 3c38 3e38 3f38 3fb8 3bf8 39f8 38f8 3878 3838 3838 3838 3838 3838 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR a ENCODING 128 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0fe0 0ff0 0078 0038 0ff8 1ff8 3c38 3c38 1ff8 0ff8 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR b ENCODING 129 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 3800 3800 3800 3800 3800 3800 3fe0 3ff0 3878 3838 3838 3838 3838 3878 3ff0 3fe0 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR c ENCODING 130 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0ff8 1ff8 3c00 3800 3800 3800 3800 3c00 1ff8 0ff8 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR d ENCODING 131 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0038 0038 0038 0038 0038 0038 0ff8 1ff8 3c38 3838 3838 3838 3838 3c38 1ff8 0ff8 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR e ENCODING 132 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0fe0 1ff0 3c78 3838 3ff8 3ff8 3800 3c00 1fe0 0fe0 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR f ENCODING 133 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 00f8 01f8 03c0 0380 0380 0380 3ff8 3ff8 0380 0380 0380 0380 0380 0380 0380 0380 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR g ENCODING 134 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0ff8 1ff8 3c38 3838 3838 3838 3838 3c78 1ff8 0ff8 0038 0078 0ff0 0fe0 0000 0000 ENDCHAR STARTCHAR h ENCODING 135 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 3800 3800 3800 3800 3800 3800 3be0 3ff0 3f78 3e38 3c38 3838 3838 3838 3838 3838 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR i ENCODING 136 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0000 0000 0380 0380 0000 0000 0380 0380 0380 0380 0380 0380 0380 0380 0380 0380 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR j ENCODING 137 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0000 0000 0038 0038 0000 0000 0038 0038 0038 0038 0038 0038 0038 0038 0038 0038 3838 3c78 1ff0 0fe0 0000 0000 ENDCHAR STARTCHAR k ENCODING 138 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 3800 3800 3800 3800 3800 3800 3838 3878 38f0 39e0 3bc0 3fc0 3fe0 3ef0 3c78 3838 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR l ENCODING 139 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0380 0380 0380 0380 0380 0380 0380 0380 0380 0380 0380 0380 0380 03c0 01e0 00e0 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR m ENCODING 140 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 3fe0 3ff0 3ff8 3bb8 3bb8 3bb8 3bb8 3bb8 3bb8 3bb8 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR n ENCODING 141 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 3fe0 3ff0 3c78 3838 3838 3838 3838 3838 3838 3838 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR o ENCODING 142 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0fe0 1ff0 3c78 3838 3838 3838 3838 3c78 1ff0 0fe0 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR p ENCODING 143 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 3fe0 3ff0 3878 3838 3838 3838 3838 3878 3ff0 3fe0 3800 3800 3800 3800 0000 0000 ENDCHAR STARTCHAR q ENCODING 144 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0ff8 1ff8 3c38 3838 3838 3838 3838 3c78 1ff8 0ff8 0038 0038 0038 0038 0000 0000 ENDCHAR STARTCHAR r ENCODING 145 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 3be0 3ff0 3f78 3e38 3c00 3800 3800 3800 3800 3800 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR s ENCODING 146 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0ff8 1ff8 3c00 3c00 1fe0 0ff0 0078 0078 3ff0 3fe0 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR t ENCODING 147 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0380 0380 0380 0380 0380 0380 3ff8 3ff8 0380 0380 0380 0380 0380 0380 03e0 01e0 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR u ENCODING 148 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 3838 3838 3838 3838 3838 3838 3838 3c78 1ff8 0ff8 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR v ENCODING 149 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 3838 3838 3838 3c78 1ef0 0ee0 0ee0 0fe0 07c0 0380 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR w ENCODING 150 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 3838 3838 3838 3838 3bb8 3bb8 3bb8 3ff8 1ff0 0ee0 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR x ENCODING 151 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 3838 3c78 1ef0 0fe0 07c0 07c0 0fe0 1ef0 3c78 3838 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR y ENCODING 152 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 3838 3838 3838 3838 3838 3838 3838 3c78 1ff8 0ff8 0038 0078 0ff0 0fe0 0000 0000 ENDCHAR STARTCHAR z ENCODING 153 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 3ff8 3ff8 00f0 01e0 03c0 0780 0f00 1e00 3ff8 3ff8 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR ae ENCODING 154 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 3ff0 3ff8 03b8 03b8 1ff8 3ff8 3b80 3b80 3ff8 1ff0 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR oslash ENCODING 155 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0ff8 1ff8 3cf8 39f8 3bf8 3fb8 3f38 3e78 3ff0 3fe0 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR aring ENCODING 156 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0fe0 0fe0 0fe0 0fe0 0000 0000 0fe0 0ff0 0078 0038 0ff8 1ff8 3c38 3c38 1ff8 0ff8 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR division ENCODING 157 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0000 0000 0000 0380 0380 0380 0000 0000 3ff8 3ff8 0000 0000 0380 0380 0380 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR fm ENCODING 158 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 3ff8 3ff8 0000 0000 0000 0000 0380 0380 0380 0380 0000 0000 0000 0000 0380 0380 0380 0780 0f00 0e00 0000 0000 ENDCHAR STARTCHAR dup ENCODING 159 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 3ff8 3ff8 0000 0000 0380 0380 3bb8 3ff8 1ff0 0ee0 0ee0 1ff0 3ff8 3bb8 0380 0380 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR A ENCODING 160 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0380 07c0 0fe0 1ef0 3c78 3838 3838 3838 3ff8 3ff8 3838 3838 3838 3838 3838 3838 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR B ENCODING 161 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 3fe0 3ff0 3878 3838 3838 3878 3ff0 3ff0 3878 3838 3838 3838 3838 3878 3ff0 3fe0 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR C ENCODING 162 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 03e0 07f0 0f78 1e38 3c00 3800 3800 3800 3800 3800 3800 3c00 1e38 0f78 07f0 03e0 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR D ENCODING 163 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 3fe0 3ff0 3878 3838 3838 3838 3838 3838 3838 3838 3838 3838 3838 3878 3ff0 3fe0 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR E ENCODING 164 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 3ff8 3ff8 3800 3800 3800 3800 3fe0 3fe0 3800 3800 3800 3800 3800 3800 3ff8 3ff8 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR F ENCODING 165 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 3ff8 3ff8 3800 3800 3800 3800 3fe0 3fe0 3800 3800 3800 3800 3800 3800 3800 3800 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR G ENCODING 166 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0fe0 1ff0 3c78 3838 3800 3800 38f8 38f8 3838 3838 3838 3838 3838 3c78 1ff8 0ff0 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR H ENCODING 167 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 3838 3838 3838 3838 3838 3838 3ff8 3ff8 3838 3838 3838 3838 3838 3838 3838 3838 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR I ENCODING 168 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0fe0 0fe0 0380 0380 0380 0380 0380 0380 0380 0380 0380 0380 0380 0380 0fe0 0fe0 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR J ENCODING 169 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 03f8 03f8 00e0 00e0 00e0 00e0 00e0 00e0 00e0 00e0 38e0 38e0 38e0 3de0 1fc0 0f80 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR K ENCODING 170 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 3838 3878 38f0 39e0 3bc0 3f80 3f00 3e00 3e00 3f00 3f80 3bc0 39e0 38f0 3878 3838 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR L ENCODING 171 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 3800 3800 3800 3800 3800 3800 3800 3800 3800 3800 3800 3800 3800 3800 3ff8 3ff8 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR M ENCODING 172 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 3838 3c78 3ef8 3ff8 3ff8 3bb8 3bb8 3bb8 3838 3838 3838 3838 3838 3838 3838 3838 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR N ENCODING 173 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 3838 3c38 3e38 3f38 3fb8 3bb8 3bb8 3bf8 39f8 38f8 3878 3838 3838 3838 3838 3838 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR O ENCODING 174 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0fe0 1ff0 3c78 3838 3838 3838 3838 3838 3838 3838 3838 3838 3838 3c78 1ff0 0fe0 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR P ENCODING 175 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 3fe0 3ff0 3878 3838 3838 3878 3ff0 3fe0 3800 3800 3800 3800 3800 3800 3800 3800 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR Q ENCODING 176 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0fe0 1ff0 3c78 3838 3838 3838 3838 3838 3838 3838 3838 3838 3bb8 3ff8 1ff0 0fe0 01e0 00f0 0078 0038 0000 0000 ENDCHAR STARTCHAR R ENCODING 177 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 3fe0 3ff0 3878 3838 3838 3878 3ff0 3fe0 3b80 3bc0 39c0 38e0 38e0 3870 3878 3838 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR S ENCODING 178 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0fe0 1ff0 3c78 3838 3800 3c00 1fe0 0ff0 0078 0038 0038 0038 3838 3c78 1ff0 0fe0 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR T ENCODING 179 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 3ff8 3ff8 0380 0380 0380 0380 0380 0380 0380 0380 0380 0380 0380 0380 0380 0380 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR U ENCODING 180 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 3838 3838 3838 3838 3838 3838 3838 3838 3838 3838 3838 3838 3838 3c78 1ff0 0fe0 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR V ENCODING 181 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 3838 3838 3838 1c70 1c70 1c70 0ee0 0ee0 0ee0 07c0 07c0 07c0 0380 0380 0380 0380 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR W ENCODING 182 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 3838 3838 3838 3838 3838 3838 3838 3838 3bb8 3bb8 3bb8 3bb8 3bb8 3ff8 1ff0 0ee0 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR X ENCODING 183 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 3838 3838 3838 3c78 1ef0 0fe0 07c0 0380 0380 07c0 0fe0 1ef0 3c78 3838 3838 3838 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR Y ENCODING 184 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 3838 3838 3838 3c78 1ef0 0fe0 07c0 0380 0380 0380 0380 0380 0380 0380 0380 0380 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR Z ENCODING 185 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 3ff8 3ff8 0038 0078 00f0 01e0 03c0 0380 0380 0780 0f00 1e00 3c00 3800 3ff8 3ff8 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR AE ENCODING 186 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0ff8 1ff8 3dc0 39c0 39c0 39c0 3ff8 3ff8 39c0 39c0 39c0 39c0 39c0 39c0 39f8 39f8 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR Ooblique ENCODING 187 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0fe0 1ff0 3cf8 38f8 38f8 39f8 3bf8 3bb8 3bb8 3fb8 3f38 3e38 3e38 3e78 1ff0 0fe0 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR Aring ENCODING 188 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0fe0 0fe0 0fe0 0fe0 0380 07c0 0fe0 1ef0 3c78 3838 3838 3838 3ff8 3ff8 3838 3838 3838 3838 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR Ccedilla ENCODING 189 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 03e0 07f0 0f78 1e38 3c00 3800 3800 3800 3800 3800 3800 3c00 1e38 0f78 07f0 03e0 00e0 00e0 0fe0 0fc0 0000 0000 ENDCHAR STARTCHAR semicolon ENCODING 190 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0380 0380 0380 0380 0000 0000 0000 0000 0380 0380 0380 0780 0f00 0e00 0000 0000 ENDCHAR STARTCHAR asterisk ENCODING 191 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0000 0000 0380 0380 3bb8 3ff8 1ff0 0ee0 0ee0 1ff0 3ff8 3bb8 0380 0380 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR c0 ENCODING 192 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR c1 ENCODING 193 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR c2 ENCODING 194 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR c3 ENCODING 195 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR c4 ENCODING 196 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR c5 ENCODING 197 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR c6 ENCODING 198 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR c7 ENCODING 199 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR c8 ENCODING 200 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR c9 ENCODING 201 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR ca ENCODING 202 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR cb ENCODING 203 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR cc ENCODING 204 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR cd ENCODING 205 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR ce ENCODING 206 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR cf ENCODING 207 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR copyright ENCODING 208 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0fc0 1fe0 3870 7038 6018 6318 6498 6418 6418 6498 6318 6018 7038 3870 1fe0 0fc0 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR registered ENCODING 209 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0fc0 1fe0 3870 7038 6018 6718 6498 6498 6718 6498 6498 6018 7038 3870 1fe0 0fc0 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR boxA ENCODING 210 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 3c00 7e00 e700 c300 c300 c300 ff00 ff00 c300 c300 0000 0000 fffc fffc c00c c00c fffc fffc 0000 0000 0000 0000 ENDCHAR STARTCHAR insert ENCODING 211 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0000 0000 0000 0000 0300 0780 0fc0 1fe0 3ff0 7ff8 fffc fcfc f87c f03c e01c c00c 8004 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR boxB ENCODING 212 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 03f0 03f8 031c 031c 03f8 03f8 031c 031c 03f8 03f0 0000 0000 fffc fffc c00c c00c fffc fffc 0000 0000 0000 0000 ENDCHAR STARTCHAR box6 ENCODING 213 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0000 0000 fffc fffc c00c c30c c70c ce0c cc0c cc0c cf8c cfcc cccc cccc cfcc c78c c00c c00c fffc fffc 0000 0000 ENDCHAR STARTCHAR plusminus ENCODING 214 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0380 0380 0380 0380 3ff8 3ff8 0380 0380 0380 0380 0000 0000 3ff8 3ff8 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR ETH ENCODING 215 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 3fe0 3ff0 0e78 0e38 0e38 0e38 0e38 3fb8 3fb8 0e38 0e38 0e38 0e38 0e78 3ff0 3fe0 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR rightarrow ENCODING 216 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0000 0000 0000 0000 0000 0180 01c0 01e0 fff0 fff0 01e0 01c0 0180 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR THORN ENCODING 217 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 3800 3800 3800 3fe0 3ff0 3878 3838 3838 3878 3ff0 3fe0 3800 3800 3800 3800 3800 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR upshift ENCODING 218 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0300 0780 0fc0 1ce0 3870 3030 3cf0 3cf0 0cc0 0cc0 0cc0 0cc0 0cc0 0cc0 0cc0 0cc0 0fc0 0fc0 0000 0000 0000 0000 ENDCHAR STARTCHAR human ENCODING 219 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0780 0fc0 0cc0 0cc0 0fc0 0780 0300 0300 3ff0 3ff0 0300 0300 0300 0780 0fc0 1ce0 3870 3030 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR underB ENCODING 220 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0f00 0f80 0cc0 0cc0 0f80 0f80 0cc0 0cc0 0f80 0f00 0000 0000 fffc fffc 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR downshift ENCODING 221 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0fc0 0fc0 0cc0 0cc0 0cc0 0cc0 0cc0 0cc0 0cc0 0cc0 3cf0 3cf0 3030 3870 1ce0 0fc0 0780 0300 0000 0000 0000 0000 ENDCHAR STARTCHAR boxquestion ENCODING 222 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 fffc fffc c00c c00c c30c c78c cfcc cccc c0cc c1cc c38c c30c c30c c00c c30c c30c c00c c00c fffc fffc 0000 0000 ENDCHAR STARTCHAR boxsolid ENCODING 223 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 fffc fffc fffc fffc fffc fffc fffc fffc fffc fffc fffc fffc fffc fffc fffc fffc fffc fffc fffc fffc 0000 0000 ENDCHAR STARTCHAR e0 ENCODING 224 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR e1 ENCODING 225 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR e2 ENCODING 226 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR e3 ENCODING 227 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR e4 ENCODING 228 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR e5 ENCODING 229 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR e6 ENCODING 230 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR e7 ENCODING 231 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR e8 ENCODING 232 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR e9 ENCODING 233 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR ea ENCODING 234 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR eb ENCODING 235 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR ec ENCODING 236 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR ed ENCODING 237 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR ee ENCODING 238 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR ef ENCODING 239 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR badcommhi ENCODING 240 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0000 8000 c000 e000 f000 f800 7c00 3e00 fffc fffc 07c0 03e0 01f0 00f8 007c 003c 001c 000c 0004 0000 0000 0000 ENDCHAR STARTCHAR commhi ENCODING 241 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 fffc fffc 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR commjag ENCODING 242 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ffc0 ffc0 0380 0700 0e00 1c00 3ffc 3ffc 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR commlo ENCODING 243 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 fffc fffc 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR clockleft ENCODING 244 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 000c 000c 0300 0300 0000 0000 0000 0004 000c 0c0c 0c0c 000c 000c 000c 000c 000c 0300 0300 000c 000c 0000 0000 ENDCHAR STARTCHAR clockright ENCODING 245 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0000 0000 0c00 0c00 3000 7000 e000 c000 8000 00c0 00c0 0000 0000 0000 0000 0000 0c00 0c00 0000 0000 0000 0000 ENDCHAR STARTCHAR lock ENCODING 246 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 8004 c00c e01c f03c f87c fcfc fffc 7ff8 3ff0 1fe0 1fe0 3ff0 7ff8 fffc fcfc f87c f03c e01c c00c 8004 0000 0000 0000 ENDCHAR STARTCHAR eth ENCODING 247 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0ee0 0fe0 07c0 0fe0 0ef0 0078 0ff8 1ff8 3c38 3838 3838 3838 3838 3c78 1ff0 0fe0 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR leftarrow ENCODING 248 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0000 0000 0000 0000 0000 0600 0e00 1e00 3ffc 3ffc 1e00 0e00 0600 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR thorn ENCODING 249 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0000 0000 3800 3800 3800 3800 3fe0 3ff0 3878 3838 3838 3838 3838 3878 3ff0 3fe0 3800 3800 3800 3800 0000 0000 ENDCHAR STARTCHAR keyleft ENCODING 250 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0000 0000 0000 0000 03c0 07e0 0e70 0c3c 0c3c 0e70 07e0 03c0 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR keyright ENCODING 251 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 fffc fffc 0f3c 0f3c 0f3c 003c 003c 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR box4 ENCODING 252 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0000 0000 fffc fffc c00c c00c c0cc c1cc c3cc c7cc cecc cccc cfcc cfcc c0cc c0cc c00c c00c fffc fffc 0000 0000 ENDCHAR STARTCHAR underA ENCODING 253 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0300 0780 0fc0 0cc0 0cc0 0cc0 0fc0 0fc0 0cc0 0cc0 0000 0000 fffc fffc 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR magcard ENCODING 254 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0000 0000 0000 0000 fffc fffc c00c c00c c00c c00c fffc fffc c00c c00c fffc fffc 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR boxhuman ENCODING 255 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 fffc fffc c78c cfcc cccc cccc cfcc c78c fffc fffc c30c c30c c30c c78c cfcc dcec f87c f03c fffc fffc 0000 0000 ENDCHAR STARTCHAR apl_space ENCODING 272 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR apl_bracketright ENCODING 316 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0fe0 0fe0 00e0 00e0 00e0 00e0 00e0 00e0 00e0 00e0 00e0 00e0 00e0 00e0 00e0 00e0 0fe0 0fe0 0000 0000 0000 0000 ENDCHAR STARTCHAR apl_bracketleft ENCODING 328 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0fe0 0fe0 0e00 0e00 0e00 0e00 0e00 0e00 0e00 0e00 0e00 0e00 0e00 0e00 0e00 0e00 0fe0 0fe0 0000 0000 0000 0000 ENDCHAR STARTCHAR apl_stile ENCODING 347 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0380 0380 0380 0380 0380 0380 0380 0380 0380 0380 0380 0380 0380 0380 0380 0380 0380 0380 0380 0380 0380 0380 0380 0380 ENDCHAR STARTCHAR apl_2vertical ENCODING 384 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 3838 3838 3838 3838 3838 3838 3838 3838 3838 3838 3838 3838 3838 3838 3838 3838 3838 3838 3838 3838 3838 3838 3838 3838 ENDCHAR STARTCHAR apl_2horizontal ENCODING 385 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 fffc fffc 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 fffc fffc 0000 0000 ENDCHAR STARTCHAR apl_leftvbar ENCODING 386 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 3800 3800 3800 3800 3800 3800 3800 3800 3800 3800 3800 3800 3800 3800 3800 3800 3800 3800 3800 3800 3800 3800 3800 3800 ENDCHAR STARTCHAR apl_rightvbar ENCODING 387 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0038 0038 0038 0038 0038 0038 0038 0038 0038 0038 0038 0038 0038 0038 0038 0038 0038 0038 0038 0038 0038 0038 0038 0038 ENDCHAR STARTCHAR apl_midvbar ENCODING 388 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0380 0380 0380 0380 0380 0380 0380 0380 0380 0380 0380 0380 0380 0380 0380 0380 0380 0380 0380 0380 0380 0380 0380 0380 ENDCHAR STARTCHAR apl_leftsolid ENCODING 393 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP ff00 ff00 ff00 ff00 ff00 ff00 ff00 ff00 ff00 ff00 ff00 ff00 ff00 ff00 ff00 ff00 ff00 ff00 ff00 ff00 ff00 ff00 ff00 ff00 ENDCHAR STARTCHAR apl_rightsolid ENCODING 394 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 01fc 01fc 01fc 01fc 01fc 01fc 01fc 01fc 01fc 01fc 01fc 01fc 01fc 01fc 01fc 01fc 01fc 01fc 01fc 01fc 01fc 01fc 01fc 01fc ENDCHAR STARTCHAR apl_topsolid ENCODING 395 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP fffc fffc fffc fffc fffc fffc fffc fffc fffc fffc fffc fffc 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR apl_bottomsolid ENCODING 396 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 fffc fffc fffc fffc fffc fffc fffc fffc fffc fffc fffc fffc ENDCHAR STARTCHAR apl_solid ENCODING 397 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP fffc fffc fffc fffc fffc fffc fffc fffc fffc fffc fffc fffc fffc fffc fffc fffc fffc fffc fffc fffc fffc fffc fffc fffc ENDCHAR STARTCHAR apl_midhbar ENCODING 402 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 fffc fffc 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR apl_lowerleft ENCODING 419 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0380 0380 0380 0380 0380 0380 0380 0380 0380 03c0 03fc 01fc 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR apl_upperleft ENCODING 420 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 01fc 03fc 03c0 0380 0380 0380 0380 0380 0380 0380 0380 0380 0380 0380 ENDCHAR STARTCHAR apl_leftjoin ENCODING 421 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0380 0380 0380 0380 0380 0380 0380 0380 0380 0380 03fc 03fc 0380 0380 0380 0380 0380 0380 0380 0380 0380 0380 0380 0380 ENDCHAR STARTCHAR apl_bottomjoin ENCODING 422 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0380 0380 0380 0380 0380 0380 0380 0380 0380 0380 fffc fffc 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR apl_intersect ENCODING 427 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0380 0380 0380 0380 0380 0380 0380 0380 0380 0380 fffc fffc 0380 0380 0380 0380 0380 0380 0380 0380 0380 0380 0380 0380 ENDCHAR STARTCHAR apl_lowerright ENCODING 428 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0380 0380 0380 0380 0380 0380 0380 0380 0380 0780 ff80 ff00 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR apl_upperright ENCODING 429 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ff00 ff80 0780 0380 0380 0380 0380 0380 0380 0380 0380 0380 0380 0380 ENDCHAR STARTCHAR apl_rightjoin ENCODING 430 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0380 0380 0380 0380 0380 0380 0380 0380 0380 0380 ff80 ff80 0380 0380 0380 0380 0380 0380 0380 0380 0380 0380 0380 0380 ENDCHAR STARTCHAR apl_topjoin ENCODING 431 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 fffc fffc 0380 0380 0380 0380 0380 0380 0380 0380 0380 0380 0380 0380 ENDCHAR STARTCHAR dec_solid ENCODING 512 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0fe0 0fe0 0fe0 0fe0 0fe0 0fe0 0fe0 0fe0 0fe0 0fe0 0fe0 0fe0 0fe0 0fe0 0fe0 0fe0 0fe0 0fe0 0fe0 0fe0 0fe0 0fe0 0fe0 0fe0 ENDCHAR STARTCHAR dec_filled_circle ENCODING 513 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0000 0000 0000 0000 0000 03c0 07e0 0ff0 0ff0 0ff0 07e0 03c0 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR dec_halftone_block ENCODING 514 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP aaa8 5554 aaa8 5554 aaa8 5554 aaa8 5554 aaa8 5554 aaa8 5554 aaa8 5554 aaa8 5554 aaa8 5554 aaa8 5554 aaa8 5554 aaa8 5554 ENDCHAR STARTCHAR dec_ht ENCODING 515 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 7700 7700 7700 7700 7f00 7f00 7700 7700 7700 7700 0000 0000 03f8 03f8 00e0 00e0 00e0 00e0 00e0 00e0 00e0 00e0 0000 ENDCHAR STARTCHAR dec_ff ENCODING 516 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 7f00 7f00 7000 7000 7e00 7e00 7000 7000 7000 7000 0000 0000 03f8 03f8 0380 0380 03f0 03f0 0380 0380 0380 0380 0000 ENDCHAR STARTCHAR dec_cr ENCODING 517 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 3e00 7f00 7f00 7000 7000 7000 7000 7f00 7f00 3e00 0000 0000 03f0 03f8 03b8 03b8 03f0 03e0 03f0 03f8 03b8 03b8 0000 ENDCHAR STARTCHAR dec_lf ENCODING 518 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 7000 7000 7000 7000 7000 7000 7000 7000 7f00 7f00 0000 0000 03f8 03f8 0380 0380 03f0 03f0 0380 0380 0380 0380 0000 ENDCHAR STARTCHAR dec_degree ENCODING 519 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 07c0 0fe0 0ee0 0ee0 0fe0 07c0 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR dec_plusminus ENCODING 520 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0380 0380 0380 0380 3ff8 3ff8 0380 0380 0380 0380 0000 0000 3ff8 3ff8 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR dec_nl ENCODING 521 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 7380 7b80 7b80 7f80 7f80 7f80 7780 7780 7380 7380 0000 0000 0380 0380 0380 0380 0380 0380 0380 0380 03f8 03f8 0000 ENDCHAR STARTCHAR dec_vt ENCODING 522 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 7380 7380 7380 7380 7380 7380 7f80 3f00 1e00 0c00 0000 0000 03f8 03f8 00e0 00e0 00e0 00e0 00e0 00e0 00e0 00e0 0000 ENDCHAR STARTCHAR dec_lowerright ENCODING 523 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0380 0380 0380 0380 0380 0380 0380 0380 0380 0780 ff80 ff00 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR dec_upperright ENCODING 524 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ff00 ff80 0780 0380 0380 0380 0380 0380 0380 0380 0380 0380 0380 0380 ENDCHAR STARTCHAR dec_upperleft ENCODING 525 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 01fc 03fc 03c0 0380 0380 0380 0380 0380 0380 0380 0380 0380 0380 0380 ENDCHAR STARTCHAR dec_lowerleft ENCODING 526 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0380 0380 0380 0380 0380 0380 0380 0380 0380 03c0 03fc 01fc 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR dec_intersect ENCODING 527 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0380 0380 0380 0380 0380 0380 0380 0380 0380 0380 fffc fffc 0380 0380 0380 0380 0380 0380 0380 0380 0380 0380 0380 0380 ENDCHAR STARTCHAR dec_hbar1 ENCODING 528 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 fffc fffc 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR dec_hbar2 ENCODING 529 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0000 0000 0000 0000 fffc fffc 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR dec_hbar3 ENCODING 530 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 fffc fffc 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR dec_hbar4 ENCODING 531 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 fffc fffc 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR dec_hbar5 ENCODING 532 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 fffc fffc 0000 0000 0000 0000 ENDCHAR STARTCHAR dec_leftjoin ENCODING 533 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0380 0380 0380 0380 0380 0380 0380 0380 0380 0380 03fc 03fc 0380 0380 0380 0380 0380 0380 0380 0380 0380 0380 0380 0380 ENDCHAR STARTCHAR dec_rightjoin ENCODING 534 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0380 0380 0380 0380 0380 0380 0380 0380 0380 0380 ff80 ff80 0380 0380 0380 0380 0380 0380 0380 0380 0380 0380 0380 0380 ENDCHAR STARTCHAR dec_bottomjoin ENCODING 535 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0380 0380 0380 0380 0380 0380 0380 0380 0380 0380 fffc fffc 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR dec_topjoin ENCODING 536 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 fffc fffc 0380 0380 0380 0380 0380 0380 0380 0380 0380 0380 0380 0380 ENDCHAR STARTCHAR dec_vbar ENCODING 537 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0380 0380 0380 0380 0380 0380 0380 0380 0380 0380 0380 0380 0380 0380 0380 0380 0380 0380 0380 0380 0380 0380 0380 0380 ENDCHAR STARTCHAR dec_notgreater ENCODING 538 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0000 0000 00e0 01e0 03c0 0780 0f00 1e00 3c00 3c00 1e00 0f00 0780 03c0 01e0 00e0 0000 0000 7ff0 7ff0 0000 0000 ENDCHAR STARTCHAR dec_notless ENCODING 539 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0000 0000 0e00 0f00 0780 03c0 01e0 00f0 0078 0078 00f0 01e0 03c0 0780 0f00 0e00 0000 0000 1ffc 1ffc 0000 0000 ENDCHAR STARTCHAR dec_pi ENCODING 540 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0000 0000 0000 0000 7ffc 7ffc 1c70 1c70 1c70 1c70 1c70 1c70 1c70 3c70 3c70 3870 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR dec_notequal ENCODING 541 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0000 0038 0038 0078 00f0 00e0 3ff8 3ff8 03c0 0380 3ff8 3ff8 0f00 0e00 0e00 1e00 1c00 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR dec_sterling ENCODING 542 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0380 07c0 0fe0 0ee0 0e00 0e00 3fe0 3fe0 0e00 0e00 0e00 0e00 0e38 1f78 3ff0 3be0 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR dec_periodcentered ENCODING 543 SWIDTH 563 0 DWIDTH 14 0 BBX 14 24 0 -6 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0380 0380 0380 0380 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR ENDFONT suite3270-4.1/x3270/3270gt32.bdf000066400000000000000000003015621413735575200154010ustar00rootroot00000000000000STARTFONT 2.1 COMMENT "32-point 3270 font" COMMENT "Uses nonstandard ordering:" COMMENT " Page 0: EBCDIC US-International set, CG order" COMMENT " Page 1: EBCDIC APL/APL2 set, CG order (incomplete)" COMMENT " Page 2: (first 16 characters only) DEC line-drawing characters from" COMMENT " fixed-width X fonts" COMMENT "" COMMENT "Copyright (c) 1993-2009, Paul Mattes." COMMENT "Copyright (c) 1990, Georgia Tech Research Corporation (GTRC)," COMMENT " Atlanta, GA 30332." COMMENT "All rights reserved." COMMENT "" COMMENT "Redistribution and use in source and binary forms, with or" COMMENT "without modification, are permitted provided that the following" COMMENT "conditions are met:" COMMENT " * Redistributions of source code must retain the above" COMMENT " copyright notice, this list of conditions and the following" COMMENT " disclaimer." COMMENT " * Redistributions in binary form must reproduce the above" COMMENT " copyright notice, this list of conditions and the following" COMMENT " disclaimer in the documentation and/or other materials" COMMENT " provided with the distribution." COMMENT " * Neither the names of Paul Mattes, GTRC nor their" COMMENT " contributors may be used to endorse or promote products" COMMENT " derived from this software without specific prior written" COMMENT " permission." COMMENT "" COMMENT "THIS SOFTWARE IS PROVIDED BY PAUL MATTES AND GTRC 'AS IS' AND" COMMENT "ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED" COMMENT "TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR" COMMENT "A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL PAUL" COMMENT "MATTES OR GTRC BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL," COMMENT "SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT" COMMENT "NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;" COMMENT "LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER" COMMENT "CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT," COMMENT "STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)" COMMENT "ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF" COMMENT "ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." FONT 3270gt32 SIZE 32 72 72 FONTBOUNDINGBOX 18 32 0 -8 STARTPROPERTIES 27 FOUNDRY "GaTech" FAMILY_NAME "3270" WEIGHT_NAME "Medium" SLANT "R" SETWIDTH_NAME "Normal" ADD_STYLE_NAME "" PIXEL_SIZE 32 POINT_SIZE 320 RESOLUTION_X 72 RESOLUTION_Y 72 SPACING "C" AVERAGE_WIDTH 180 CHARSET_REGISTRY "3270cg" CHARSET_ENCODING "1" MIN_SPACE 18 NORM_SPACE 18 MAX_SPACE 18 END_SPACE 18 AVG_CAPITAL_WIDTH 180 AVG_LOWERCASE_WIDTH 180 CAP_HEIGHT 18 X_HEIGHT 14 RELATIVE_WEIGHT 50 DESTINATION "Video Text" FONT_ASCENT 24 FONT_DESCENT 8 DEFAULT_CHAR 514 ENDPROPERTIES CHARS 312 STARTCHAR null ENCODING 0 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR nobreakspace ENCODING 1 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR euro ENCODING 2 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 00fc00 01fe00 038700 070300 0e0000 0c0000 0c0000 3fff00 3ffe00 0c0000 0c0000 3ffe00 3ffc00 0c0000 0c0000 0e0000 070300 038700 01fe00 00fc00 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR cr ENCODING 3 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR nl ENCODING 4 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR em ENCODING 5 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR eightones ENCODING 6 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 01e000 03f000 07f800 0ffc00 0ffc00 0ffc00 0ffc00 07f800 03f000 01e000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR hyphen ENCODING 7 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 0ffc00 0ffc00 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR greater ENCODING 8 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 000000 000000 0c0000 0e0000 070000 038000 01c000 00e000 007000 003800 001c00 001c00 003800 007000 00e000 01c000 038000 070000 0e0000 0c0000 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR less ENCODING 9 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 000000 000000 000c00 001c00 003800 007000 00e000 01c000 038000 070000 0e0000 0e0000 070000 038000 01c000 00e000 007000 003800 001c00 000c00 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR bracketleft ENCODING 10 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 03f000 03f000 030000 030000 030000 030000 030000 030000 030000 030000 030000 030000 030000 030000 030000 030000 030000 030000 030000 030000 03f000 03f000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR bracketright ENCODING 11 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 03f000 03f000 003000 003000 003000 003000 003000 003000 003000 003000 003000 003000 003000 003000 003000 003000 003000 003000 003000 003000 03f000 03f000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR parenright ENCODING 12 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 000000 000000 030000 038000 01c000 00e000 007000 003000 003000 003000 003000 003000 003000 003000 003000 007000 00e000 01c000 038000 030000 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR parenleft ENCODING 13 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 000000 000000 003000 007000 00e000 01c000 038000 030000 030000 030000 030000 030000 030000 030000 030000 038000 01c000 00e000 007000 003000 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR braceright ENCODING 14 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 0f0000 0f8000 01c000 00c000 00c000 00c000 00c000 00c000 00c000 00e000 007000 007000 00e000 00c000 00c000 00c000 00c000 00c000 00c000 01c000 0f8000 0f0000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR braceleft ENCODING 15 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 00f000 01f000 038000 030000 030000 030000 030000 030000 030000 070000 0e0000 0e0000 070000 030000 030000 030000 030000 030000 030000 038000 01f000 00f000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR space ENCODING 16 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR equal ENCODING 17 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 3fff00 3fff00 000000 000000 000000 000000 3fff00 3fff00 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR apostrophe ENCODING 18 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 00c000 00c000 00c000 00c000 00c000 00c000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR quotedbl ENCODING 19 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 0c3000 0c3000 0c3000 0c3000 0c3000 0c3000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR slash ENCODING 20 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 000000 000000 000000 000000 000300 000700 000e00 001c00 003800 007000 00e000 01c000 038000 070000 0e0000 1c0000 380000 300000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR backslash ENCODING 21 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 000000 000000 000000 000000 300000 380000 1c0000 0e0000 070000 038000 01c000 00e000 007000 003800 001c00 000e00 000700 000300 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR bar ENCODING 22 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 000000 000000 000000 000000 ENDCHAR STARTCHAR brokenbar ENCODING 23 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 000000 000000 000000 000000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 000000 000000 000000 000000 ENDCHAR STARTCHAR question ENCODING 24 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 03fc00 07fe00 0e0700 0c0300 0c0300 0c0700 000e00 001c00 003800 007000 00e000 00c000 00c000 00c000 000000 000000 000000 000000 00c000 00c000 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR exclam ENCODING 25 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 000000 000000 000000 000000 00c000 00c000 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR dollar ENCODING 26 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 00c000 00c000 00c000 00c000 0fff00 1fff00 38c000 30c000 30c000 38c000 1ffc00 0ffe00 00c700 00c300 00c300 00c700 3ffe00 3ffc00 00c000 00c000 00c000 00c000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR cent ENCODING 27 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 00c000 00c000 00c000 00c000 0ffc00 1ffc00 38c000 30c000 30c000 30c000 30c000 38c000 1ffc00 0ffc00 00c000 00c000 00c000 00c000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR sterling ENCODING 28 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 00f000 01f800 039c00 030c00 030000 030000 030000 030000 3ff000 3ff000 030000 030000 030000 030000 030000 030000 3f0300 3f8700 3ffe00 3cfc00 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR yen ENCODING 29 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 300300 380700 1c0e00 0e1c00 073800 03f000 01e000 00c000 3fff00 3fff00 00c000 00c000 00c000 00c000 3fff00 3fff00 00c000 00c000 00c000 00c000 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR paragraph ENCODING 30 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 3fc000 3fe000 307000 303000 303000 303000 303000 307000 3fe000 3fc000 300000 300000 303000 303000 30fc00 30fc00 303000 303000 303000 303000 003000 003000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR currency ENCODING 31 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 000000 000000 300300 380700 1c0e00 0e1c00 07f800 03f000 061800 0c0c00 0c0c00 0c0c00 0c0c00 061800 03f000 07f800 0e1c00 1c0e00 380700 300300 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR 0 ENCODING 32 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 03f000 07f800 0e1c00 1c0e00 380700 300300 300300 300300 30c300 30c300 30c300 30c300 300300 300300 300300 380700 1c0e00 0e1c00 07f800 03f000 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR 1 ENCODING 33 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 00c000 01c000 03c000 07c000 0ec000 0cc000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR 2 ENCODING 34 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 03fc00 07fe00 0e0700 1c0300 380300 300300 000300 000700 000e00 001c00 003800 007000 00e000 01c000 038000 070000 0e0000 1c0000 3fff00 3fff00 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR 3 ENCODING 35 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 0fff00 0fff00 000300 000700 000e00 001c00 003800 007000 00f000 01f800 001c00 000e00 000700 000300 000300 000700 300e00 381c00 1ff800 0ff000 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR 4 ENCODING 36 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 003c00 007c00 00ec00 01cc00 038c00 070c00 0e0c00 1c0c00 380c00 300c00 300c00 300c00 3fff00 3fff00 000c00 000c00 000c00 000c00 000c00 000c00 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR 5 ENCODING 37 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 3fff00 3fff00 300000 300000 300000 300000 3ff000 3ff800 001c00 000e00 000700 000300 000300 000300 000300 000700 000e00 001c00 3ff800 3ff000 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR 6 ENCODING 38 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 030000 070000 0e0000 1c0000 380000 300000 300000 300000 33f000 37f800 3e1c00 3c0e00 380700 300300 300300 380700 1c0e00 0e1c00 07f800 03f000 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR 7 ENCODING 39 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 3fff00 3fff00 000300 000700 000e00 001c00 003800 007000 00e000 01c000 038000 030000 030000 030000 030000 030000 030000 030000 030000 030000 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR 8 ENCODING 40 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 03f000 07f800 0e1c00 0c0c00 0c0c00 0c0c00 0c0c00 0e1c00 07f800 07f800 0e1c00 1c0e00 380700 300300 300300 380700 1c0e00 0e1c00 07f800 03f000 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR 9 ENCODING 41 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 03fc00 07fe00 0e0700 1c0300 380300 300700 300f00 301f00 303b00 387300 1fe300 0fc300 000300 000300 000300 000300 000300 000700 000e00 000c00 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR ssharp ENCODING 42 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 03c000 07e000 0e7000 1c3000 383000 307000 30e000 31e000 307000 303800 301c00 300e00 300700 300300 300300 300300 330300 338700 31fe00 30fc00 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR section ENCODING 43 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 03f000 07f000 0e0000 0c0000 0c0000 1e0000 3f0000 338000 31c000 30e000 307000 383800 1c1c00 0e0c00 070c00 038c00 01cc00 00fc00 007800 003000 003000 007000 0fe000 0fc000 000000 000000 000000 000000 ENDCHAR STARTCHAR numbersign ENCODING 44 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 000000 000000 0c3000 0c3000 3ffc00 3ffc00 0c3000 0c3000 0c3000 0c3000 3ffc00 3ffc00 0c3000 0c3000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR at ENCODING 45 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 0ffc00 1ffe00 380700 300300 300300 300300 30f300 31f300 333300 333700 33fe00 33fc00 300000 300000 300000 300000 300000 380000 1fff00 0fff00 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR percent ENCODING 46 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 0c0000 1e0000 330000 330000 1e0300 0c0700 000e00 001c00 003800 007000 00e000 01c000 038000 070000 0e0000 1c0000 380c00 301e00 003300 003300 001e00 000c00 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR underscore ENCODING 47 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 3fff00 3fff00 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR ampersand ENCODING 48 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 000000 000000 0f0000 1f8000 39c000 30c000 30c000 30c000 30c000 39c000 1f8000 1f0000 330300 338700 31ce00 30fc00 307800 387800 1ffc00 0fce00 000700 000300 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR minus ENCODING 49 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 0ffc00 0ffc00 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR period ENCODING 50 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 03c000 03c000 03c000 03c000 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR comma ENCODING 51 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 00f000 00f000 00f000 01f000 03e000 07c000 0f8000 0f0000 000000 000000 000000 000000 ENDCHAR STARTCHAR colon ENCODING 52 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 03c000 03c000 03c000 03c000 000000 000000 000000 000000 03c000 03c000 03c000 03c000 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR plus ENCODING 53 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 000000 000000 000000 000000 00c000 00c000 00c000 00c000 00c000 00c000 3fff00 3fff00 00c000 00c000 00c000 00c000 00c000 00c000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR notsign ENCODING 54 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 000000 000000 3fff00 3fff00 000300 000300 000300 000300 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR macron ENCODING 55 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 3fff00 3fff00 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR degree ENCODING 56 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 03c000 07e000 0e7000 0c3000 0c3000 0e7000 07e000 03c000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR periodcentered ENCODING 57 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 03c000 03c000 03c000 03c000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR asciicircum ENCODING 58 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 00c000 01e000 03f000 073800 0e1c00 0c0c00 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR asciitilde ENCODING 59 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 0f0000 1f8000 39c300 30e700 007e00 003c00 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR diaeresis ENCODING 60 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 3c0f00 3c0f00 3c0f00 3c0f00 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR grave ENCODING 61 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 030000 038000 01c000 00e000 007000 003000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR acute ENCODING 62 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 003000 007000 00e000 01c000 038000 030000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR cedilla ENCODING 63 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 00c000 00c000 00c000 00c000 00c000 01c000 0f8000 0f0000 000000 000000 000000 000000 ENDCHAR STARTCHAR agrave ENCODING 64 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 0c0000 0e0000 070000 038000 01c000 00c000 000000 000000 0ff000 0ff800 001c00 000c00 000c00 000c00 0ffc00 1ffc00 380c00 300c00 300c00 380c00 1fff00 0fff00 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR egrave ENCODING 65 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 0c0000 0e0000 070000 038000 01c000 00c000 000000 000000 0ff000 1ff800 381c00 300c00 300c00 300c00 3ffc00 3ffc00 300000 300000 300000 380000 1ffc00 0ffc00 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR igrave ENCODING 66 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 030000 038000 01c000 00e000 007000 003000 000000 000000 000000 000000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR ograve ENCODING 67 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 0c0000 0e0000 070000 038000 01c000 00c000 000000 000000 0ff000 1ff800 381c00 300c00 300c00 300c00 300c00 300c00 300c00 300c00 300c00 381c00 1ff800 0ff000 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR ugrave ENCODING 68 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 0c0000 0e0000 070000 038000 01c000 00c000 000000 000000 300c00 300c00 300c00 300c00 300c00 300c00 300c00 300c00 300c00 300c00 300c00 381c00 1fff00 0ff300 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR atilde ENCODING 69 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 03c300 07e700 0e7e00 0c3c00 000000 000000 0ff000 0ff800 001c00 000c00 000c00 000c00 0ffc00 1ffc00 380c00 300c00 300c00 380c00 1fff00 0fff00 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR otilde ENCODING 70 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 0f0c00 1f9c00 39f800 30f000 000000 000000 0ff000 1ff800 381c00 300c00 300c00 300c00 300c00 300c00 300c00 300c00 300c00 381c00 1ff800 0ff000 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR ydiaeresis ENCODING 71 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 0c3000 0c3000 000000 000000 000000 000000 300c00 300c00 300c00 300c00 300c00 300c00 300c00 380c00 1c0c00 0e1c00 073800 03f000 01e000 01c000 038000 070000 0e0000 1c0000 380000 300000 000000 000000 ENDCHAR STARTCHAR Yacute ENCODING 72 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000c00 001c00 003800 007000 00e000 00c000 300300 380700 1c0e00 0e1c00 073800 03f000 01e000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR yacute ENCODING 73 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000c00 001c00 003800 007000 00e000 00c000 000000 000000 300c00 300c00 300c00 300c00 300c00 300c00 300c00 380c00 1c0c00 0e1c00 073800 03f000 01e000 01c000 038000 070000 0e0000 1c0000 380000 300000 000000 000000 ENDCHAR STARTCHAR eacute ENCODING 74 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000c00 001c00 003800 007000 00e000 00c000 000000 000000 0ff000 1ff800 381c00 300c00 300c00 300c00 3ffc00 3ffc00 300000 300000 300000 380000 1ffc00 0ffc00 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR onequarter ENCODING 75 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 060000 0e0000 1e0000 060000 060300 060700 060e00 061c00 063800 007000 00e000 01c000 038700 070f00 0e1f00 1c3b00 383300 303f80 003f80 000300 000300 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR onehalf ENCODING 76 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 060000 0e0000 1e0000 060000 060300 060700 060e00 061c00 063800 007000 00e000 01c000 038f00 071f80 0e1980 1c0380 380700 300e00 001c00 001f80 001f80 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR threequarters ENCODING 77 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 3f0000 3f0000 070000 0e0000 1e0300 070700 030e00 331c00 3f3800 1e7000 00e000 01c000 038700 070f00 0e1f00 1c3b00 383300 303f80 003f80 000300 000300 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR udiaeresis ENCODING 78 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 0c3000 0c3000 000000 000000 000000 000000 300c00 300c00 300c00 300c00 300c00 300c00 300c00 300c00 300c00 300c00 300c00 381e00 1fff00 0ff300 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR ccedilla ENCODING 79 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 03fc00 07fc00 0e0000 1c0000 380000 300000 300000 300000 300000 380000 1c0000 0e0000 07fc00 03fc00 00e000 00c000 0fc000 0f8000 000000 000000 000000 000000 ENDCHAR STARTCHAR adiaeresis ENCODING 80 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 0c3000 0c3000 000000 000000 000000 000000 0ff000 0ff800 001c00 000c00 000c00 000c00 0ffc00 1ffc00 380c00 300c00 300c00 380c00 1fff00 0fff00 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR ediaeresis ENCODING 81 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 0c3000 0c3000 000000 000000 000000 000000 0ff000 1ff800 381c00 300c00 300c00 300c00 3ffc00 3ffc00 300000 300000 300000 380000 1ffc00 0ffc00 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR idiaeresis ENCODING 82 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 0c0c00 0c0c00 000000 000000 000000 000000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR odiaeresis ENCODING 83 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 0c3000 0c3000 000000 000000 000000 000000 0ff000 1ff800 381c00 300c00 300c00 300c00 300c00 300c00 300c00 300c00 300c00 381c00 1ff800 0ff000 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR mu ENCODING 84 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 300c00 300c00 300c00 300c00 300c00 300c00 300c00 300c00 300c00 300c00 300c00 3c1e00 3fff00 37f300 300000 300000 300000 300000 300000 300000 000000 000000 ENDCHAR STARTCHAR acircumflex ENCODING 85 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 00c000 01e000 03f000 033000 000000 000000 0ff000 0ff800 001c00 000c00 000c00 000c00 0ffc00 1ffc00 380c00 300c00 300c00 380c00 1fff00 0fff00 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR ecircumflex ENCODING 86 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 00c000 01e000 03f000 033000 000000 000000 0ff000 1ff800 381c00 300c00 300c00 300c00 3ffc00 3ffc00 300000 300000 300000 380000 1ffc00 0ffc00 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR icircumflex ENCODING 87 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 00c000 01e000 03f000 033000 000000 000000 000000 000000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR ocircumflex ENCODING 88 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 00c000 01e000 03f000 033000 000000 000000 03f000 07f800 0e1c00 0c0c00 0c0c00 0c0c00 0c0c00 0c0c00 0c0c00 0c0c00 0c0c00 0e1c00 07f800 03f000 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR ucircumflex ENCODING 89 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 030000 078000 0fc000 0cc000 000000 000000 303000 303000 303000 303000 303000 303000 303000 303000 303000 303000 303000 387800 1ffc00 0fcc00 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR aacute ENCODING 90 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000c00 001c00 003800 007000 00e000 00c000 000000 000000 0ff000 0ff800 001c00 000c00 000c00 000c00 0ffc00 1ffc00 380c00 300c00 300c00 380c00 1fff00 0fff00 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR multiply ENCODING 91 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 0c0c00 0e1c00 073800 03f000 01e000 01e000 03f000 073800 0e1c00 0c0c00 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR iacute ENCODING 92 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 003000 007000 00e000 01c000 038000 030000 000000 000000 000000 000000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR oacute ENCODING 93 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 003000 007000 00e000 01c000 038000 030000 000000 000000 0ff000 1ff800 381c00 300c00 300c00 300c00 300c00 300c00 300c00 300c00 300c00 381c00 1ff800 0ff000 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR uacute ENCODING 94 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 003000 007000 00e000 01c000 038000 030000 000000 000000 300c00 300c00 300c00 300c00 300c00 300c00 300c00 300c00 300c00 300c00 300c00 381e00 1fff00 0ff300 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR ntilde ENCODING 95 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 03c300 07e700 0e7e00 0c3c00 000000 000000 33fc00 3ffe00 1e0700 0c0300 0c0300 0c0300 0c0300 0c0300 0c0300 0c0300 0c0300 0c0300 0c0300 0c0300 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR Agrave ENCODING 96 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 00c000 00e000 007000 003800 001c00 000c00 00c000 01e000 03f000 073800 0e1c00 1c0e00 380700 300300 3fff00 3fff00 300300 300300 300300 300300 300300 300300 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR Egrave ENCODING 97 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 0c0000 0e0000 070000 038000 01c000 00c000 3fff00 3fff00 300000 300000 300000 300000 3ff000 3ff000 300000 300000 300000 300000 300000 300000 3fff00 3fff00 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR Igrave ENCODING 98 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 030000 038000 01c000 00e000 007000 003000 000000 000000 03f000 03f000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 03f000 03f000 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR Ograve ENCODING 99 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 0c0000 0e0000 070000 038000 01c000 00c000 0ffc00 1ffe00 380700 300300 300300 300300 300300 300300 300300 300300 300300 300300 300300 380700 1ffe00 0ffc00 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR Ugrave ENCODING 100 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 0c0000 0e0000 070000 038000 01c000 00c000 300300 300300 300300 300300 300300 300300 300300 300300 300300 300300 300300 300300 300300 380700 1ffe00 0ffc00 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR Atilde ENCODING 101 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 03c300 07e700 0e7e00 0c3c00 000000 000000 00c000 01e000 03f000 073800 0e1c00 1c0e00 380700 300300 3fff00 3fff00 300300 300300 300300 300300 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR Otilde ENCODING 102 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 03c300 07e700 0e7e00 0c3c00 0ffc00 1ffe00 380700 300300 300300 300300 300300 300300 300300 300300 300300 300300 300300 300300 300300 380700 1ffe00 0ffc00 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR onesuperior ENCODING 103 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 00c000 01c000 03c000 07c000 06c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR twosuperior ENCODING 104 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 01e000 03f000 073800 061800 001800 003800 007000 00e000 01c000 038000 070000 07f800 07f800 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR threesuperior ENCODING 105 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 07f800 07f800 003800 007000 00e000 01e000 03f000 003800 001800 001800 063800 07f000 03e000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR ordfeminine ENCODING 106 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 000000 000000 0ff000 0ff800 001c00 000c00 000c00 000c00 0ffc00 1ffc00 380c00 300c00 300c00 380c00 1fff00 1fff00 000000 000000 3fff00 3fff00 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR masculine ENCODING 107 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 000000 000000 0ff000 1ff800 381c00 300c00 300c00 300c00 300c00 300c00 300c00 300c00 300c00 381c00 1ff800 0ff000 000000 000000 3ffc00 3ffc00 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR guillemotleft ENCODING 108 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 000000 000000 000000 00c300 01c700 038e00 071c00 0e3800 1c7000 38e000 71c000 71c000 38e000 1c7000 0e3800 071c00 038e00 01c700 00c300 000000 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR guillemotright ENCODING 109 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 000000 000000 000000 30c000 38e000 1c7000 0e3800 071c00 038e00 01c700 00e380 00e380 01c700 038e00 071c00 0e3800 1c7000 38e000 30c000 000000 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR exclamdown ENCODING 110 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 00c000 00c000 000000 000000 000000 000000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR questiondown ENCODING 111 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 003000 003000 000000 000000 000000 000000 003000 003000 003000 007000 00e000 01c000 038000 070000 0e0300 0c0300 0c0300 0e0700 07fe00 03fc00 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR Adiaeresis ENCODING 112 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 0c0c00 0c0c00 000000 000000 00c000 01e000 03f000 073800 0e1c00 1c0e00 380700 300300 300300 300300 3fff00 3fff00 300300 300300 300300 300300 300300 300300 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR Ediaeresis ENCODING 113 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 0c0c00 0c0c00 000000 000000 3fff00 3fff00 300000 300000 300000 300000 300000 300000 3ff000 3ff000 300000 300000 300000 300000 300000 300000 3fff00 3fff00 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR Idiaeresis ENCODING 114 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 0c0c00 0c0c00 000000 000000 03f000 03f000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 03f000 03f000 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR Odiaeresis ENCODING 115 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 0c0c00 0c0c00 000000 000000 0ffc00 1ffe00 380700 300300 300300 300300 300300 300300 300300 300300 300300 300300 300300 300300 300300 380700 1ffe00 0ffc00 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR Udiaeresis ENCODING 116 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 0c0c00 0c0c00 000000 000000 300300 300300 300300 300300 300300 300300 300300 300300 300300 300300 300300 300300 300300 300300 300300 380700 1ffe00 0ffc00 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR Acircumflex ENCODING 117 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 00c000 01e000 03f000 033000 000000 000000 00c000 01e000 03f000 073800 0e1c00 1c0e00 380700 300300 3fff00 3fff00 300300 300300 300300 300300 300300 300300 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR Ecircumflex ENCODING 118 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 00c000 01e000 03f000 033000 000000 000000 3fff00 3fff00 300000 300000 300000 300000 300000 300000 3ff000 3ff000 300000 300000 300000 300000 3fff00 3fff00 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR Icircumflex ENCODING 119 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 00c000 01e000 03f000 033000 000000 000000 03f000 03f000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 03f000 03f000 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR Ocircumflex ENCODING 120 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 00c000 01e000 03f000 033000 000000 000000 0ffc00 1ffe00 380700 300300 300300 300300 300300 300300 300300 300300 300300 300300 300300 380700 1ffe00 0ffc00 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR Ucircumflex ENCODING 121 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 00c000 01e000 03f000 033000 000000 000000 300300 300300 300300 300300 300300 300300 300300 300300 300300 300300 300300 300300 300300 380700 1ffe00 0ffc00 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR Aacute ENCODING 122 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 00c000 01c000 038000 070000 0e0000 0c0000 00c000 01e000 03f000 073800 0e1c00 1c0e00 380700 300300 3fff00 3fff00 300300 300300 300300 300300 300300 300300 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR Eacute ENCODING 123 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000c00 001c00 003800 007000 00e000 00c000 3fff00 3fff00 300000 300000 300000 300000 300000 300000 3ff000 3ff000 300000 300000 300000 300000 3fff00 3fff00 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR Iacute ENCODING 124 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 003000 007000 00e000 01c000 038000 030000 000000 000000 03f000 03f000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 03f000 03f000 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR Oacute ENCODING 125 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000c00 001c00 003800 007000 00e000 00c000 0ffc00 1ffe00 380700 300300 300300 300300 300300 300300 300300 300300 300300 300300 300300 380700 1ffe00 0ffc00 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR Uacute ENCODING 126 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000c00 001c00 003800 007000 00e000 00c000 300300 300300 300300 300300 300300 300300 300300 300300 300300 300300 300300 300300 300300 380700 1ffe00 0ffc00 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR Ntilde ENCODING 127 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 03c300 07e700 0e7e00 0c3c00 000000 000000 300300 380300 3c0300 3e0300 370300 338300 31c300 30e300 307300 303b00 301f00 300f00 300700 300300 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR a ENCODING 128 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 0ff000 0ff800 001c00 000c00 000c00 000c00 0ffc00 1ffc00 380c00 300c00 300c00 380c00 1fff00 0fff00 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR b ENCODING 129 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 300000 300000 300000 300000 300000 300000 3fc000 3fe000 307000 303800 301c00 300c00 300c00 300c00 300c00 301c00 303800 307000 3fe000 3fc000 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR c ENCODING 130 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 03fc00 07fc00 0e0000 1c0000 380000 300000 300000 300000 300000 380000 1c0000 0e0000 07fc00 03fc00 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR d ENCODING 131 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 000c00 000c00 000c00 000c00 000c00 000c00 03fc00 07fc00 0e0c00 1c0c00 380c00 300c00 300c00 300c00 300c00 380c00 1c0c00 0e0c00 07fc00 03fc00 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR e ENCODING 132 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 0ff000 1ff800 381c00 300c00 300c00 300c00 3ffc00 3ffc00 300000 300000 300000 380000 1ffc00 0ffc00 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR f ENCODING 133 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 00fc00 01fc00 038000 030000 030000 030000 3ff000 3ff000 030000 030000 030000 030000 030000 030000 030000 030000 030000 030000 030000 030000 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR g ENCODING 134 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 03fc00 07fe00 0e0700 1c0300 380300 300300 300300 380300 1c0f00 0e1f00 07fb00 03f300 000300 000300 0c0300 0e0700 07fe00 03fc00 000000 000000 000000 000000 ENDCHAR STARTCHAR h ENCODING 135 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 300000 300000 300000 300000 300000 300000 33f000 37f800 3e1c00 3c0c00 380c00 300c00 300c00 300c00 300c00 300c00 300c00 300c00 300c00 300c00 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR i ENCODING 136 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 00c000 00c000 000000 000000 000000 000000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR j ENCODING 137 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 000c00 000c00 000000 000000 000000 000000 000c00 000c00 000c00 000c00 000c00 000c00 000c00 000c00 000c00 000c00 000c00 000c00 000c00 000c00 0c0c00 0e1c00 07f800 03f000 000000 000000 000000 000000 ENDCHAR STARTCHAR k ENCODING 138 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 0c0000 0c0000 0c0000 0c0000 0c0000 0c0000 0c0c00 0c1c00 0c3800 0c7000 0ce000 0dc000 0f8000 0f8000 0dc000 0ce000 0c7000 0c3800 0c1c00 0c0c00 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR l ENCODING 139 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00f000 00f000 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR m ENCODING 140 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 0f3c00 1ffe00 39e700 30c300 30c300 30c300 30c300 30c300 30c300 30c300 30c300 30c300 30c300 30c300 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR n ENCODING 141 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 33fc00 3ffe00 0c0700 0c0300 0c0300 0c0300 0c0300 0c0300 0c0300 0c0300 0c0300 0c0300 0c0300 0c0300 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR o ENCODING 142 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 0ff000 1ff800 381c00 300c00 300c00 300c00 300c00 300c00 300c00 300c00 300c00 381c00 1ff800 0ff000 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR p ENCODING 143 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 3fc000 3fe000 307000 303800 301c00 300c00 300c00 300c00 300c00 301c00 303800 307000 3fe000 3fc000 300000 300000 300000 300000 300000 300000 000000 000000 ENDCHAR STARTCHAR q ENCODING 144 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 03fc00 07fc00 0e0c00 1c0c00 380c00 300c00 300c00 380c00 1c0c00 0e0c00 07fc00 03fc00 000c00 000c00 000c00 000c00 000f00 000f00 000000 000000 000000 000000 ENDCHAR STARTCHAR r ENCODING 145 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 38fc00 39fe00 1f8700 0f0300 0e0000 0c0000 0c0000 0c0000 0c0000 0c0000 0c0000 0c0000 0c0000 0c0000 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR s ENCODING 146 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 0ff000 1ff800 381c00 380c00 1c0000 0e0000 07c000 03e000 007000 003800 301c00 381c00 1ff800 0ff000 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR t ENCODING 147 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 00c000 00c000 00c000 00c000 00c000 00c000 0ffc00 0ffc00 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR u ENCODING 148 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 300c00 300c00 300c00 300c00 300c00 300c00 300c00 300c00 300c00 300c00 300c00 381e00 1fff00 0ff300 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR v ENCODING 149 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 300300 300300 300300 380700 1c0e00 0c0c00 0c0c00 0e1c00 073800 033000 033000 03f000 01e000 00c000 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR w ENCODING 150 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 300300 300300 300300 300300 300300 300300 30c300 30c300 30c300 31e300 33f300 3f3f00 1e1e00 0c0c00 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR x ENCODING 151 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 300300 380700 1c0e00 0e1c00 073800 03f000 01e000 01e000 03f000 073800 0e1c00 1c0e00 380700 300300 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR y ENCODING 152 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 300c00 300c00 300c00 300c00 300c00 300c00 300c00 380c00 1c0c00 0e1c00 073800 03f000 01e000 01c000 038000 070000 0e0000 1c0000 380000 300000 000000 000000 ENDCHAR STARTCHAR z ENCODING 153 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 3fff00 3fff00 000e00 001c00 003800 007000 00e000 01c000 038000 070000 0e0000 1c0000 3fff00 3fff00 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR ae ENCODING 154 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 3f3c00 3ffe00 01e700 00c300 03c300 07c300 0eff00 1cff00 38c000 30c000 30c000 39e000 1fff00 0f3f00 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR oslash ENCODING 155 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 03f300 07ff00 0e1e00 0c1c00 0c3c00 0c7c00 0cec00 0dcc00 0f8c00 0f0c00 0e0c00 1e1c00 3ff800 33f000 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR aring ENCODING 156 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 03f000 03f000 03f000 03f000 000000 000000 0ff000 0ff800 001c00 000c00 000c00 000c00 0ffc00 1ffc00 380c00 300c00 300c00 380c00 1fff00 0fff00 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR division ENCODING 157 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 000000 000000 000000 01e000 01e000 01e000 01e000 000000 000000 000000 3fff00 3fff00 000000 000000 000000 01e000 01e000 01e000 01e000 000000 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR fm ENCODING 158 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 3fff00 3fff00 3fff00 3fff00 000000 000000 00f000 00f000 00f000 00f000 000000 000000 000000 000000 00f000 00f000 00f000 01f000 03e000 07c000 0f8000 0f0000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR dup ENCODING 159 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 3fff00 3fff00 3fff00 3fff00 000000 000000 00c000 00c000 30c300 38c700 1cce00 0edc00 073800 073800 0edc00 1cce00 38c700 30c300 00c000 00c000 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR A ENCODING 160 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 000000 000000 00c000 01e000 03f000 073800 0e1c00 1c0e00 380700 300300 300300 300300 3fff00 3fff00 300300 300300 300300 300300 300300 300300 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR B ENCODING 161 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 000000 000000 3ff000 3ff800 0c1c00 0c0e00 0c0700 0c0700 0c0e00 0c1c00 0ff800 0ff800 0c1c00 0c0e00 0c0700 0c0700 0c0e00 0c1c00 3ff800 3ff000 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR C ENCODING 162 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 000000 000000 00fc00 01fe00 038700 070300 0e0000 1c0000 380000 300000 300000 300000 300000 380000 1c0000 0e0000 070300 038700 01fe00 00fc00 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR D ENCODING 163 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 000000 000000 3ff000 3ff800 0c1c00 0c0e00 0c0700 0c0300 0c0300 0c0300 0c0300 0c0300 0c0300 0c0300 0c0300 0c0700 0c0e00 0c1c00 3ff800 3ff000 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR E ENCODING 164 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 000000 000000 3fff00 3fff00 300000 300000 300000 300000 300000 300000 3ff000 3ff000 300000 300000 300000 300000 300000 300000 3fff00 3fff00 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR F ENCODING 165 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 000000 000000 3fff00 3fff00 300000 300000 300000 300000 300000 300000 3ffc00 3ffc00 300000 300000 300000 300000 300000 300000 300000 300000 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR G ENCODING 166 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 000000 000000 03f000 07f800 0e1c00 1c0c00 380000 300000 300000 300000 300000 300000 30ff00 30ff00 300c00 380c00 1c0c00 0e0c00 07fc00 03fc00 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR H ENCODING 167 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 000000 000000 300300 300300 300300 300300 300300 300300 300300 300300 3fff00 3fff00 300300 300300 300300 300300 300300 300300 300300 300300 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR I ENCODING 168 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 000000 000000 03f000 03f000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 03f000 03f000 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR J ENCODING 169 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 000000 000000 00fc00 00fc00 003000 003000 003000 003000 003000 003000 003000 003000 003000 003000 303000 303000 303000 387000 1fe000 0fc000 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR K ENCODING 170 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 000000 000000 300300 300700 300e00 301c00 303800 307000 30e000 31c000 338000 378000 3fc000 3ce000 387000 303800 301c00 300e00 300700 300300 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR L ENCODING 171 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 000000 000000 300000 300000 300000 300000 300000 300000 300000 300000 300000 300000 300000 300000 300000 300000 300000 300000 3fff00 3fff00 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR M ENCODING 172 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 000000 000000 300300 380700 3c0f00 3e1f00 373b00 33f300 31e300 30c300 30c300 30c300 300300 300300 300300 300300 300300 300300 300300 300300 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR N ENCODING 173 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 000000 000000 300300 380300 3c0300 3e0300 370300 338300 31c300 30e300 307300 303b00 301f00 300f00 300700 300300 300300 300300 300300 300300 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR O ENCODING 174 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 000000 000000 0ffc00 1ffe00 380700 300300 300300 300300 300300 300300 300300 300300 300300 300300 300300 300300 300300 380700 1ffe00 0ffc00 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR P ENCODING 175 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 000000 000000 3ff000 3ff800 301c00 300e00 300700 300300 300300 300700 300e00 301c00 3ff800 3ff000 300000 300000 300000 300000 300000 300000 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR Q ENCODING 176 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 000000 000000 03f000 07f800 0e1c00 1c0e00 380700 300300 300300 300300 300300 300300 300300 300300 30c300 38c700 1cce00 0e7c00 07f800 03f800 001c00 000e00 000700 000300 000000 000000 000000 000000 ENDCHAR STARTCHAR R ENCODING 177 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 000000 000000 3ffc00 3ffe00 300700 300300 300300 300300 300300 300700 3ffe00 3ffc00 31c000 30e000 307000 303800 301c00 300e00 300700 300300 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR S ENCODING 178 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 000000 000000 0ffc00 1ffe00 380700 300300 300000 380000 1f0000 0f8000 01c000 00e000 007c00 003e00 000700 000300 300300 380700 1ffe00 0ffc00 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR T ENCODING 179 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 000000 000000 3fff00 3fff00 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR U ENCODING 180 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 000000 000000 300300 300300 300300 300300 300300 300300 300300 300300 300300 300300 300300 300300 300300 300300 300300 380700 1ffe00 0ffc00 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR V ENCODING 181 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 000000 000000 300300 300300 300300 380700 1c0e00 0c0c00 0c0c00 0c0c00 0c0c00 0e1c00 073800 033000 033000 03f000 01e000 00c000 00c000 00c000 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR W ENCODING 182 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 000000 000000 300300 300300 300300 300300 300300 300300 300300 300300 30c300 30c300 30c300 30c300 30c300 31e300 33f300 3f3f00 1e1e00 0c0c00 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR X ENCODING 183 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 000000 000000 300300 300300 300300 380700 1c0e00 0e1c00 073800 03f000 01e000 01e000 03f000 073800 0e1c00 1c0e00 380700 300300 300300 300300 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR Y ENCODING 184 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 000000 000000 300300 380700 1c0e00 0e1c00 073800 03f000 01e000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR Z ENCODING 185 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 000000 000000 3fff00 3fff00 000300 000700 000e00 001c00 003800 007000 00e000 01c000 038000 070000 0e0000 1c0000 380000 300000 3fff00 3fff00 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR AE ENCODING 186 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 000000 000000 00ff00 01ff00 03b000 073000 0e3000 1c3000 383000 303000 303f00 303f00 3ff000 3ff000 303000 303000 303000 303000 303f00 303f00 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR Ooblique ENCODING 187 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 000000 000000 0ffc00 1ffe00 380700 300700 300f00 301f00 303b00 307300 30e300 31c300 338300 370300 3e0300 3c0300 380300 380700 1ffe00 0ffc00 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR Aring ENCODING 188 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 03f000 03f000 03f000 03f000 00c000 01e000 03f000 073800 0e1c00 1c0e00 380700 300300 300300 300300 3fff00 3fff00 300300 300300 300300 300300 300300 300300 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR Ccedilla ENCODING 189 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 000000 000000 00fc00 01fe00 038700 070300 0e0000 1c0000 380000 300000 300000 300000 300000 380000 1c0000 0e0000 070300 038700 01fe00 00fc00 003800 003000 0ff000 0fe000 000000 000000 000000 000000 ENDCHAR STARTCHAR semicolon ENCODING 190 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 00f000 00f000 00f000 00f000 000000 000000 000000 000000 00f000 00f000 00f000 01f000 03e000 07c000 0f8000 0f0000 000000 000000 000000 000000 ENDCHAR STARTCHAR asterisk ENCODING 191 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 000000 000000 00c000 00c000 30c300 38c700 1cce00 0edc00 073800 073800 0edc00 1cce00 38c700 30c300 00c000 00c000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR c0 ENCODING 192 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR c1 ENCODING 193 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR c2 ENCODING 194 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR c3 ENCODING 195 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR c4 ENCODING 196 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR c5 ENCODING 197 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR c6 ENCODING 198 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR c7 ENCODING 199 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR c8 ENCODING 200 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR c9 ENCODING 201 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR ca ENCODING 202 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR cb ENCODING 203 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR cc ENCODING 204 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR cd ENCODING 205 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR ce ENCODING 206 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR cf ENCODING 207 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR copyright ENCODING 208 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 000000 000000 07f800 0ffc00 1c0e00 380700 30f300 31f300 338300 330300 330300 330300 330300 338300 31f300 30f300 380700 1c0e00 0ffc00 07f800 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR registered ENCODING 209 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 000000 000000 07f800 0ffc00 1c0e00 380700 33e300 33f300 333300 333300 33f300 33e300 336300 337300 333300 333300 380700 1c0e00 0ffc00 07f800 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR boxA ENCODING 210 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 0c0000 1e0000 3f0000 738000 e1c000 c0c000 c0c000 c0c000 ffc000 ffc000 c0c000 c0c000 c0c000 c0c000 000000 000000 ffffc0 ffffc0 c000c0 c000c0 c000c0 c000c0 ffffc0 ffffc0 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR insert ENCODING 211 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 00c000 01e000 03f000 07f800 0ffc00 1ffe00 3fff00 7f3f80 fe1fc0 fc0fc0 f807c0 f003c0 e001c0 c000c0 800040 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR boxB ENCODING 212 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 00ff00 00ff80 0031c0 0030c0 0030c0 0031c0 003f80 003f80 0031c0 0030c0 0030c0 0031c0 00ff80 00ff00 000000 000000 ffffc0 ffffc0 c000c0 c000c0 c000c0 c000c0 ffffc0 ffffc0 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR box6 ENCODING 213 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 000000 000000 ffffc0 ffffc0 c000c0 c000c0 c300c0 c700c0 ce00c0 cc00c0 cc00c0 cc00c0 ccf0c0 cdf8c0 cf9cc0 cf0cc0 cc0cc0 ce1cc0 c7f8c0 c3f0c0 c000c0 c000c0 ffffc0 ffffc0 000000 000000 000000 000000 ENDCHAR STARTCHAR plusminus ENCODING 214 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 00c000 00c000 00c000 00c000 00c000 00c000 3fff00 3fff00 00c000 00c000 00c000 00c000 00c000 00c000 000000 000000 3fff00 3fff00 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR ETH ENCODING 215 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 000000 000000 3ff000 3ff800 0c1c00 0c0e00 0c0700 0c0300 0c0300 0c0300 3fc300 3fc300 0c0300 0c0300 0c0300 0c0700 0c0e00 0c1c00 3ff800 3ff000 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR rightarrow ENCODING 216 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 003000 003800 003c00 003e00 ffff00 ffff00 003e00 003c00 003800 003000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR THORN ENCODING 217 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 000000 000000 300000 300000 300000 3ff000 3ff800 301c00 300e00 300700 300300 300300 300700 300e00 301c00 3ff800 3ff000 300000 300000 300000 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR upshift ENCODING 218 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 00c000 01e000 03f000 073800 0e1c00 1c0e00 380700 300300 3f3f00 3f3f00 033000 033000 033000 033000 033000 033000 033000 033000 033000 033000 03f000 03f000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR human ENCODING 219 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 03f000 03f000 033000 033000 03f000 03f000 00c000 00c000 3fff00 3fff00 00c000 00c000 00c000 01e000 03f000 073800 0e1c00 1c0e00 380700 300300 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR underB ENCODING 220 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 0ff000 0ff800 031c00 030c00 030c00 031c00 03f800 03f800 031c00 030c00 030c00 031c00 0ff800 0ff000 000000 000000 ffffc0 ffffc0 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR downshift ENCODING 221 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 03f000 03f000 033000 033000 033000 033000 033000 033000 033000 033000 033000 033000 3f3f00 3f3f00 300300 380700 1c0e00 0e1c00 073800 03f000 01e000 00c000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR boxquestion ENCODING 222 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 ffffc0 ffffc0 c000c0 c000c0 c3f0c0 c7f8c0 ce1cc0 cc0cc0 cc0cc0 cc0cc0 c00cc0 c01cc0 c038c0 c070c0 c0e0c0 c0c0c0 c0c0c0 c0c0c0 c000c0 c000c0 c0c0c0 c0c0c0 c000c0 c000c0 ffffc0 ffffc0 000000 000000 000000 000000 ENDCHAR STARTCHAR boxsolid ENCODING 223 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 ffffc0 ffffc0 ffffc0 ffffc0 ffffc0 ffffc0 ffffc0 ffffc0 ffffc0 ffffc0 ffffc0 ffffc0 ffffc0 ffffc0 ffffc0 ffffc0 ffffc0 ffffc0 ffffc0 ffffc0 ffffc0 ffffc0 ffffc0 ffffc0 ffffc0 ffffc0 000000 000000 000000 000000 ENDCHAR STARTCHAR e0 ENCODING 224 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR e1 ENCODING 225 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR e2 ENCODING 226 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR e3 ENCODING 227 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR e4 ENCODING 228 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR e5 ENCODING 229 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR e6 ENCODING 230 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR e7 ENCODING 231 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR e8 ENCODING 232 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR e9 ENCODING 233 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR ea ENCODING 234 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR eb ENCODING 235 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR ec ENCODING 236 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR ed ENCODING 237 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR ee ENCODING 238 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR ef ENCODING 239 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR badcommhi ENCODING 240 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 800000 c00000 e00000 f00000 f80000 fc0000 fe0000 7f0000 3f8000 1fc000 0fe000 ffffc0 ffffc0 01fc00 00fe00 007f00 003f80 001fc0 000fc0 0007c0 0003c0 0001c0 0000c0 000040 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR commhi ENCODING 241 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 ffffc0 ffffc0 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR commjag ENCODING 242 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 fff000 fff000 00e000 01c000 038000 070000 0e0000 1c0000 3fffc0 3fffc0 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR commlo ENCODING 243 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 ffffc0 ffffc0 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR clockleft ENCODING 244 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 000300 000300 00c000 00c000 000000 000000 0c0000 0c0000 000000 000040 0000c0 0001c0 300380 300300 000300 000300 000300 000300 0c0300 0c0300 000300 000300 00c000 00c000 000300 000300 000000 000000 ENDCHAR STARTCHAR clockright ENCODING 245 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 0c0000 0c0000 000000 000000 0cc000 1cc000 380000 700000 e00000 c00000 803000 003000 000000 000000 000000 000000 00c000 00c000 000000 000000 0c0000 0c0000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR lock ENCODING 246 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 800040 c000c0 e001c0 f003c0 f807c0 fc0fc0 fe1fc0 ff3fc0 ffffc0 7fff80 3fff00 1ffe00 0ffc00 0ffc00 1ffe00 3fff00 7fff80 ffffc0 ff3fc0 fe1fc0 fc0fc0 f807c0 f003c0 e001c0 c000c0 800040 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR eth ENCODING 247 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 031800 03b800 01f000 00e000 01f000 03b800 031c00 000c00 03fc00 07fc00 0e0c00 1c0c00 380c00 300c00 300c00 300c00 300c00 380c00 1c1c00 0e3800 07f000 03e000 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR leftarrow ENCODING 248 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 030000 070000 0f0000 1f0000 3fffc0 3fffc0 1f0000 0f0000 070000 030000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR thorn ENCODING 249 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 300000 300000 300000 300000 300000 300000 3fc000 3fe000 307000 303800 301c00 300c00 300c00 300c00 300c00 301c00 303800 307000 3fe000 3fc000 300000 300000 300000 300000 300000 300000 000000 000000 ENDCHAR STARTCHAR keyleft ENCODING 250 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 000000 000000 000000 000000 00fc00 01fe00 038700 030300 0303c0 0303c0 030300 038700 01fe00 00fc00 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR keyright ENCODING 251 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 ffffc0 ffffc0 03f3c0 03f3c0 03f3c0 03f3c0 0003c0 0003c0 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR box4 ENCODING 252 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 000000 000000 ffffc0 ffffc0 c000c0 c000c0 c030c0 c070c0 c0f0c0 c1f0c0 c3b0c0 c730c0 ce30c0 cc30c0 cffcc0 cffcc0 c030c0 c030c0 c030c0 c030c0 c000c0 c000c0 ffffc0 ffffc0 000000 000000 000000 000000 ENDCHAR STARTCHAR underA ENCODING 253 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 00c000 01e000 03f000 073800 0e1c00 0c0c00 0c0c00 0c0c00 0ffc00 0ffc00 0c0c00 0c0c00 0c0c00 0c0c00 000000 000000 ffffc0 ffffc0 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR magcard ENCODING 254 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 000000 000000 000000 000000 ffffc0 ffffc0 c000c0 c000c0 c000c0 c000c0 c000c0 c000c0 ffffc0 ffffc0 c000c0 c000c0 ffffc0 ffffc0 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR boxhuman ENCODING 255 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 ffffc0 ffffc0 c000c0 c000c0 c3f0c0 c3f0c0 c330c0 c330c0 c3f0c0 c3f0c0 c0c0c0 c0c0c0 ffffc0 ffffc0 c0c0c0 c0c0c0 c0c0c0 c1e0c0 c3f0c0 c738c0 ce1cc0 dc0ec0 f807c0 f003c0 ffffc0 ffffc0 000000 000000 000000 000000 ENDCHAR STARTCHAR apl_space ENCODING 272 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR apl_bracketright ENCODING 316 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 03f000 03f000 003000 003000 003000 003000 003000 003000 003000 003000 003000 003000 003000 003000 003000 003000 003000 003000 003000 003000 03f000 03f000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR apl_bracketleft ENCODING 328 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 03f000 03f000 030000 030000 030000 030000 030000 030000 030000 030000 030000 030000 030000 030000 030000 030000 030000 030000 030000 030000 03f000 03f000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR apl_stile ENCODING 347 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 ENDCHAR STARTCHAR apl_2vertical ENCODING 384 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 180600 180600 180600 180600 180600 180600 180600 180600 180600 180600 180600 180600 180600 180600 180600 180600 180600 180600 180600 180600 180600 180600 180600 180600 180600 180600 180600 180600 180600 180600 180600 180600 ENDCHAR STARTCHAR apl_2horizontal ENCODING 385 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 ffffc0 ffffc0 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 ffffc0 ffffc0 000000 000000 000000 ENDCHAR STARTCHAR apl_leftvbar ENCODING 386 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 180000 180000 180000 180000 180000 180000 180000 180000 180000 180000 180000 180000 180000 180000 180000 180000 180000 180000 180000 180000 180000 180000 180000 180000 180000 180000 180000 180000 180000 180000 180000 180000 ENDCHAR STARTCHAR apl_rightvbar ENCODING 387 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000600 000600 000600 000600 000600 000600 000600 000600 000600 000600 000600 000600 000600 000600 000600 000600 000600 000600 000600 000600 000600 000600 000600 000600 000600 000600 000600 000600 000600 000600 000600 000600 ENDCHAR STARTCHAR apl_midvbar ENCODING 388 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 ENDCHAR STARTCHAR apl_leftsolid ENCODING 393 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP ff8000 ff8000 ff8000 ff8000 ff8000 ff8000 ff8000 ff8000 ff8000 ff8000 ff8000 ff8000 ff8000 ff8000 ff8000 ff8000 ff8000 ff8000 ff8000 ff8000 ff8000 ff8000 ff8000 ff8000 ff8000 ff8000 ff8000 ff8000 ff8000 ff8000 ff8000 ff8000 ENDCHAR STARTCHAR apl_rightsolid ENCODING 394 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 007fc0 007fc0 007fc0 007fc0 007fc0 007fc0 007fc0 007fc0 007fc0 007fc0 007fc0 007fc0 007fc0 007fc0 007fc0 007fc0 007fc0 007fc0 007fc0 007fc0 007fc0 007fc0 007fc0 007fc0 007fc0 007fc0 007fc0 007fc0 007fc0 007fc0 007fc0 007fc0 ENDCHAR STARTCHAR apl_topsolid ENCODING 395 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP ffffc0 ffffc0 ffffc0 ffffc0 ffffc0 ffffc0 ffffc0 ffffc0 ffffc0 ffffc0 ffffc0 ffffc0 ffffc0 ffffc0 ffffc0 ffffc0 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR apl_bottomsolid ENCODING 396 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 ffffc0 ffffc0 ffffc0 ffffc0 ffffc0 ffffc0 ffffc0 ffffc0 ffffc0 ffffc0 ffffc0 ffffc0 ffffc0 ffffc0 ffffc0 ffffc0 ENDCHAR STARTCHAR apl_solid ENCODING 397 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP ffffc0 ffffc0 ffffc0 ffffc0 ffffc0 ffffc0 ffffc0 ffffc0 ffffc0 ffffc0 ffffc0 ffffc0 ffffc0 ffffc0 ffffc0 ffffc0 ffffc0 ffffc0 ffffc0 ffffc0 ffffc0 ffffc0 ffffc0 ffffc0 ffffc0 ffffc0 ffffc0 ffffc0 ffffc0 ffffc0 ffffc0 ffffc0 ENDCHAR STARTCHAR apl_midhbar ENCODING 402 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 ffffc0 ffffc0 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR apl_lowerleft ENCODING 419 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00e000 00ffc0 007fc0 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR apl_upperleft ENCODING 420 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 007fc0 00ffc0 00e000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 ENDCHAR STARTCHAR apl_leftjoin ENCODING 421 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00ffc0 00ffc0 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 ENDCHAR STARTCHAR apl_bottomjoin ENCODING 422 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 ffffc0 ffffc0 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR apl_intersect ENCODING 427 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 ffffc0 ffffc0 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 ENDCHAR STARTCHAR apl_lowerright ENCODING 428 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 01c000 ffc000 ff8000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR apl_upperright ENCODING 429 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 ff8000 ffc000 01c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 ENDCHAR STARTCHAR apl_rightjoin ENCODING 430 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 ffc000 ffc000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 ENDCHAR STARTCHAR apl_topjoin ENCODING 431 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 ffffc0 ffffc0 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 ENDCHAR STARTCHAR dec_solid ENCODING 512 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 07f800 07f800 07f800 07f800 07f800 07f800 07f800 07f800 07f800 07f800 07f800 07f800 07f800 07f800 07f800 07f800 07f800 07f800 07f800 07f800 07f800 07f800 07f800 07f800 07f800 07f800 07f800 07f800 07f800 07f800 07f800 07f800 ENDCHAR STARTCHAR dec_filled_circle ENCODING 513 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 01e000 03f000 07f800 07f800 07f800 07f800 03f000 01e000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR dec_halftone_block ENCODING 514 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP aaaa80 555540 aaaa80 555540 aaaa80 555540 aaaa80 555540 aaaa80 555540 aaaa80 555540 aaaa80 555540 aaaa80 555540 aaaa80 555540 aaaa80 555540 aaaa80 555540 aaaa80 555540 aaaa80 555540 aaaa80 555540 aaaa80 555540 aaaa80 555540 ENDCHAR STARTCHAR dec_ht ENCODING 515 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 198000 198000 198000 198000 1f8000 1f8000 198000 198000 198000 198000 000000 000000 00fc00 00fc00 003000 003000 003000 003000 003000 003000 003000 003000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR dec_ff ENCODING 516 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 1f8000 1f8000 180000 180000 1f0000 1f0000 180000 180000 180000 180000 000000 000000 00fc00 00fc00 00c000 00c000 00f800 00f800 00c000 00c000 00c000 00c000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR dec_cr ENCODING 517 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 0f0000 1f8000 1d8000 180000 180000 180000 180000 1d8000 1f8000 0f0000 000000 000000 00f800 00fc00 00cc00 00cc00 00f800 00f000 00d800 00d800 00cc00 00cc00 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR dec_lf ENCODING 518 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 180000 180000 180000 180000 180000 180000 180000 180000 1f8000 1f8000 000000 000000 00fc00 00fc00 00c000 00c000 00f800 00f800 00c000 00c000 00c000 00c000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR dec_degree ENCODING 519 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 03c000 07e000 0e7000 0c3000 0c3000 0e7000 07e000 03c000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR dec_plusminus ENCODING 520 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 00c000 00c000 00c000 00c000 00c000 00c000 3fff00 3fff00 00c000 00c000 00c000 00c000 00c000 00c000 000000 000000 3fff00 3fff00 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR dec_nl ENCODING 521 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 18c000 1cc000 1cc000 1ec000 1ec000 1bc000 19c000 19c000 18c000 18c000 000000 000000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00fc00 00fc00 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR dec_vt ENCODING 522 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 18c000 18c000 18c000 18c000 18c000 18c000 1dc000 0f8000 070000 020000 000000 000000 00fc00 00fc00 003000 003000 003000 003000 003000 003000 003000 003000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR dec_lowerright ENCODING 523 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 01c000 ffc000 ff8000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR dec_upperright ENCODING 524 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 ff8000 ffc000 01c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 ENDCHAR STARTCHAR dec_upperleft ENCODING 525 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 007fc0 00ffc0 00e000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 ENDCHAR STARTCHAR dec_lowerleft ENCODING 526 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00e000 00ffc0 007fc0 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR dec_intersect ENCODING 527 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 ffffc0 ffffc0 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 ENDCHAR STARTCHAR dec_hbar1 ENCODING 528 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 ffffc0 ffffc0 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR dec_hbar2 ENCODING 529 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 000000 000000 000000 000000 ffffc0 ffffc0 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR dec_hbar3 ENCODING 530 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 ffffc0 ffffc0 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR dec_hbar4 ENCODING 531 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 ffffc0 ffffc0 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR dec_hbar5 ENCODING 532 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 ffffc0 ffffc0 000000 000000 000000 000000 ENDCHAR STARTCHAR dec_leftjoin ENCODING 533 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00ffc0 00ffc0 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 ENDCHAR STARTCHAR dec_rightjoin ENCODING 534 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 ffc000 ffc000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 ENDCHAR STARTCHAR dec_bottomjoin ENCODING 535 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 ffffc0 ffffc0 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR dec_topjoin ENCODING 536 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 ffffc0 ffffc0 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 ENDCHAR STARTCHAR dec_vbar ENCODING 537 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 00c000 ENDCHAR STARTCHAR dec_notgreater ENCODING 538 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 000000 000000 000c00 001c00 003800 007000 00e000 01c000 038000 070000 0e0000 0e0000 070000 038000 01c000 00e000 007000 003800 001c00 000c00 000000 000000 1ffe00 1ffe00 000000 000000 000000 000000 ENDCHAR STARTCHAR dec_notless ENCODING 539 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 000000 000000 0c0000 0e0000 070000 038000 01c000 00e000 007000 003800 001c00 001c00 003800 007000 00e000 01c000 038000 070000 0e0000 0c0000 000000 000000 1ffe00 1ffe00 000000 000000 000000 000000 ENDCHAR STARTCHAR dec_pi ENCODING 540 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 000000 000000 000000 000000 3fff00 3fff00 0c0c00 0c0c00 0c0c00 0c0c00 0c0c00 0c0c00 0c0c00 0c0c00 0c0c00 0c0c00 0c0c00 1c0c00 180c00 180c00 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR dec_notequal ENCODING 541 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 000000 000000 000000 000000 000300 000700 000e00 001c00 3fff00 3fff00 00e000 01c000 3fff00 3fff00 0e0000 1c0000 380000 300000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR dec_sterling ENCODING 542 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 00f000 01f800 039c00 030c00 030000 030000 030000 030000 3ff000 3ff000 030000 030000 030000 030000 030000 030000 3f0300 3f8700 3ffe00 3cfc00 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR dec_periodcentered ENCODING 543 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 03c000 03c000 03c000 03c000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR ENDFONT suite3270-4.1/x3270/3270gt32b.bdf000066400000000000000000003013511413735575200155370ustar00rootroot00000000000000STARTFONT 2.1 COMMENT "32-point bold 3270 font" COMMENT "Uses nonstandard ordering:" COMMENT " Page 0: EBCDIC US-International set, CG order" COMMENT " Page 1: EBCDIC APL/APL2 set, CG order (incomplete)" COMMENT " Page 2: (first 16 characters only) DEC line-drawing characters from" COMMENT " fixed-width X fonts" COMMENT "" COMMENT "Copyright (c) 1994-2009, Paul Mattes." COMMENT "All rights reserved." COMMENT "" COMMENT "Redistribution and use in source and binary forms, with or" COMMENT "without modification, are permitted provided that the following" COMMENT "conditions are met:" COMMENT " * Redistributions of source code must retain the above" COMMENT " copyright notice, this list of conditions and the following" COMMENT " disclaimer." COMMENT " * Redistributions in binary form must reproduce the above" COMMENT " copyright notice, this list of conditions and the following" COMMENT " disclaimer in the documentation and/or other materials" COMMENT " provided with the distribution." COMMENT " * Neither the name of Paul Mattes nor his contributors may" COMMENT " be used to endorse or promote products derived from this" COMMENT " software without specific prior written permission." COMMENT "" COMMENT "THIS SOFTWARE IS PROVIDED BY PAUL MATTES 'AS IS' AND ANY" COMMENT "EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO," COMMENT "THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR" COMMENT "A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL PAUL" COMMENT "MATTES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL," COMMENT "EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED" COMMENT "TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE," COMMENT "DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED" COMMENT "AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT" COMMENT "LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING" COMMENT "IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF" COMMENT "THE POSSIBILITY OF SUCH DAMAGE." FONT 3270gt32bold SIZE 32 72 72 FONTBOUNDINGBOX 18 32 0 -8 STARTPROPERTIES 27 FOUNDRY "GaTech" FAMILY_NAME "3270" WEIGHT_NAME "Bold" SLANT "R" SETWIDTH_NAME "Normal" ADD_STYLE_NAME "" PIXEL_SIZE 32 POINT_SIZE 320 RESOLUTION_X 72 RESOLUTION_Y 72 SPACING "C" AVERAGE_WIDTH 180 CHARSET_REGISTRY "3270cg" CHARSET_ENCODING "1" MIN_SPACE 18 NORM_SPACE 18 MAX_SPACE 18 END_SPACE 18 AVG_CAPITAL_WIDTH 180 AVG_LOWERCASE_WIDTH 180 CAP_HEIGHT 18 X_HEIGHT 14 RELATIVE_WEIGHT 50 DESTINATION "Video Text" FONT_ASCENT 24 FONT_DESCENT 8 DEFAULT_CHAR 514 ENDPROPERTIES CHARS 312 STARTCHAR null ENCODING 0 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR nobreakspace ENCODING 1 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR euro ENCODING 2 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 01FC00 03FE00 078F00 0F0700 1E0000 1C0000 1C0000 7FFF00 7FFE00 1C0000 1C0000 7FFE00 7FFC00 1C0000 1C0000 1E0000 0F0700 078F00 03FE00 01FC00 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR cr ENCODING 3 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR nl ENCODING 4 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR em ENCODING 5 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR eightones ENCODING 6 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 01e000 03f000 07f800 0ffc00 0ffc00 0ffc00 0ffc00 07f800 03f000 01e000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR hyphen ENCODING 7 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 0ffe00 0ffe00 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR greater ENCODING 8 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 000000 000000 0e0000 0f0000 078000 03c000 01e000 00f000 007800 003c00 001e00 001e00 003c00 007800 00f000 01e000 03c000 078000 0f0000 0e0000 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR less ENCODING 9 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 000000 000000 000e00 001e00 003c00 007800 00f000 01e000 03c000 078000 0f0000 0f0000 078000 03c000 01e000 00f000 007800 003c00 001e00 000e00 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR bracketleft ENCODING 10 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 03f800 03f800 038000 038000 038000 038000 038000 038000 038000 038000 038000 038000 038000 038000 038000 038000 038000 038000 038000 038000 03f800 03f800 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR bracketright ENCODING 11 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 03f800 03f800 003800 003800 003800 003800 003800 003800 003800 003800 003800 003800 003800 003800 003800 003800 003800 003800 003800 003800 03f800 03f800 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR parenright ENCODING 12 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 000000 000000 038000 03c000 01e000 00f000 007800 003800 003800 003800 003800 003800 003800 003800 003800 007800 00f000 01e000 03c000 038000 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR parenleft ENCODING 13 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 000000 000000 003800 007800 00f000 01e000 03c000 038000 038000 038000 038000 038000 038000 038000 038000 03c000 01e000 00f000 007800 003800 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR braceright ENCODING 14 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 0f8000 0fc000 01e000 00e000 00e000 00e000 00e000 00e000 00e000 00f000 007800 007800 00f000 00e000 00e000 00e000 00e000 00e000 00e000 01e000 0fc000 0f8000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR braceleft ENCODING 15 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 00f800 01f800 03c000 038000 038000 038000 038000 038000 038000 078000 0f0000 0f0000 078000 038000 038000 038000 038000 038000 038000 03c000 01f800 00f800 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR space ENCODING 16 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR equal ENCODING 17 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 3fff80 3fff80 000000 000000 000000 000000 3fff80 3fff80 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR apostrophe ENCODING 18 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 00e000 00e000 00e000 00e000 00e000 00e000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR quotedbl ENCODING 19 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 0e3800 0e3800 0e3800 0e3800 0e3800 0e3800 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR slash ENCODING 20 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 000000 000000 000000 000000 000380 000780 000f00 001e00 003c00 007800 00f000 01e000 03c000 078000 0f0000 1e0000 3c0000 380000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR backslash ENCODING 21 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 000000 000000 000000 000000 380000 3c0000 1e0000 0f0000 078000 03c000 01e000 00f000 007800 003c00 001e00 000f00 000780 000380 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR bar ENCODING 22 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 000000 000000 000000 000000 ENDCHAR STARTCHAR brokenbar ENCODING 23 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 000000 000000 000000 000000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 000000 000000 000000 000000 ENDCHAR STARTCHAR question ENCODING 24 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 03fe00 07ff00 0f0780 0e0380 0e0380 0e0780 000f00 001e00 003c00 007800 00f000 00e000 00e000 00e000 000000 000000 000000 000000 00e000 00e000 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR exclam ENCODING 25 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 000000 000000 000000 000000 00e000 00e000 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR dollar ENCODING 26 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 00e000 00e000 00e000 00e000 0fff80 1fff80 3ce000 38e000 38e000 3ce000 1ffe00 0fff00 00e780 00e380 00e380 00e780 3fff00 3ffe00 00e000 00e000 00e000 00e000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR cent ENCODING 27 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 00e000 00e000 00e000 00e000 0ffe00 1ffe00 3ce000 38e000 38e000 38e000 38e000 3ce000 1ffe00 0ffe00 00e000 00e000 00e000 00e000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR sterling ENCODING 28 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 00f800 01fc00 03de00 038e00 038000 038000 038000 038000 3ff800 3ff800 038000 038000 038000 038000 038000 038000 3f8380 3fc780 3fff00 3efe00 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR yen ENCODING 29 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 380380 3c0780 1e0f00 0f1e00 07bc00 03f800 01f000 00e000 3fff80 3fff80 00e000 00e000 00e000 00e000 3fff80 3fff80 00e000 00e000 00e000 00e000 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR paragraph ENCODING 30 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 3fe000 3ff000 387800 383800 383800 383800 383800 387800 3ff000 3fe000 380000 380000 383800 383800 38fe00 38fe00 383800 383800 383800 383800 003800 003800 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR currency ENCODING 31 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 000000 000000 380380 3c0780 1e0f00 0f1e00 07fc00 03f800 071c00 0e0e00 0e0e00 0e0e00 0e0e00 071c00 03f800 07fc00 0f1e00 1e0f00 3c0780 380380 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR 0 ENCODING 32 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 03f800 07fc00 0f1e00 1e0f00 3c0780 380380 380380 380380 38e380 38e380 38e380 38e380 380380 380380 380380 3c0780 1e0f00 0f1e00 07fc00 03f800 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR 1 ENCODING 33 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 00e000 01e000 03e000 07e000 0fe000 0ee000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR 2 ENCODING 34 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 03fe00 07ff00 0f0780 1e0380 3c0380 380380 000380 000780 000f00 001e00 003c00 007800 00f000 01e000 03c000 078000 0f0000 1e0000 3fff80 3fff80 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR 3 ENCODING 35 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 0fff80 0fff80 000380 000780 000f00 001e00 003c00 007800 00f800 01fc00 001e00 000f00 000780 000380 000380 000780 380f00 3c1e00 1ffc00 0ff800 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR 4 ENCODING 36 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 003e00 007e00 00fe00 01ee00 03ce00 078e00 0f0e00 1e0e00 3c0e00 380e00 380e00 380e00 3fff80 3fff80 000e00 000e00 000e00 000e00 000e00 000e00 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR 5 ENCODING 37 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 3fff80 3fff80 380000 380000 380000 380000 3ff800 3ffc00 001e00 000f00 000780 000380 000380 000380 000380 000780 000f00 001e00 3ffc00 3ff800 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR 6 ENCODING 38 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 038000 078000 0f0000 1e0000 3c0000 380000 380000 380000 3bf800 3ffc00 3f1e00 3e0f00 3c0780 380380 380380 3c0780 1e0f00 0f1e00 07fc00 03f800 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR 7 ENCODING 39 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 3fff80 3fff80 000380 000780 000f00 001e00 003c00 007800 00f000 01e000 03c000 038000 038000 038000 038000 038000 038000 038000 038000 038000 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR 8 ENCODING 40 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 03f800 07fc00 0f1e00 0e0e00 0e0e00 0e0e00 0e0e00 0f1e00 07fc00 07fc00 0f1e00 1e0f00 3c0780 380380 380380 3c0780 1e0f00 0f1e00 07fc00 03f800 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR 9 ENCODING 41 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 03fe00 07ff00 0f0780 1e0380 3c0380 380780 380f80 381f80 383f80 3c7b80 1ff380 0fe380 000380 000380 000380 000380 000380 000780 000f00 000e00 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR ssharp ENCODING 42 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 03e000 07f000 0f7800 1e3800 3c3800 387800 38f000 39f000 387800 383c00 381e00 380f00 380780 380380 380380 380380 3b8380 3bc780 39ff00 38fe00 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR section ENCODING 43 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 03f800 07f800 0f0000 0e0000 0e0000 1f0000 3f8000 3bc000 39e000 38f000 387800 3c3c00 1e1e00 0f0e00 078e00 03ce00 01ee00 00fe00 007c00 003800 003800 007800 0ff000 0fe000 000000 000000 000000 000000 ENDCHAR STARTCHAR numbersign ENCODING 44 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 000000 000000 0e3800 0e3800 3ffe00 3ffe00 0e3800 0e3800 0e3800 0e3800 3ffe00 3ffe00 0e3800 0e3800 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR at ENCODING 45 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 0ffe00 1fff00 3c0780 380380 380380 380380 38fb80 39fb80 3bbb80 3bbf80 3bff00 3bfe00 380000 380000 380000 380000 380000 3c0000 1fff80 0fff80 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR percent ENCODING 46 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 0e0000 1f0000 3b8000 3b8000 1f0380 0e0780 000f00 001e00 003c00 007800 00f000 01e000 03c000 078000 0f0000 1e0000 3c0e00 381f00 003b80 003b80 001f00 000e00 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR underscore ENCODING 47 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 3fff80 3fff80 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR ampersand ENCODING 48 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 000000 000000 0f8000 1fc000 3de000 38e000 38e000 38e000 38e000 3de000 1fc000 1f8000 3b8380 3bc780 39ef00 38fe00 387c00 3c7c00 1ffe00 0fef00 000780 000380 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR minus ENCODING 49 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 0ffe00 0ffe00 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR period ENCODING 50 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 03e000 03e000 03e000 03e000 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR comma ENCODING 51 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 00f800 00f800 00f800 01f800 03f000 07e000 0fc000 0f8000 000000 000000 000000 000000 ENDCHAR STARTCHAR colon ENCODING 52 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 03e000 03e000 03e000 03e000 000000 000000 000000 000000 03e000 03e000 03e000 03e000 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR plus ENCODING 53 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 000000 000000 000000 000000 00e000 00e000 00e000 00e000 00e000 00e000 3fff80 3fff80 00e000 00e000 00e000 00e000 00e000 00e000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR notsign ENCODING 54 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 000000 000000 3fff80 3fff80 000380 000380 000380 000380 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR macron ENCODING 55 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 3fff80 3fff80 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR degree ENCODING 56 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 03e000 07f000 0f7800 0e3800 0e3800 0f7800 07f000 03e000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR periodcentered ENCODING 57 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 03e000 03e000 03e000 03e000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR asciicircum ENCODING 58 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 00e000 01f000 03f800 07bc00 0f1e00 0e0e00 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR asciitilde ENCODING 59 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 0f8000 1fc000 3de380 38f780 007f00 003e00 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR diaeresis ENCODING 60 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 3e0f80 3e0f80 3e0f80 3e0f80 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR grave ENCODING 61 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 038000 03c000 01e000 00f000 007800 003800 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR acute ENCODING 62 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 003800 007800 00f000 01e000 03c000 038000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR cedilla ENCODING 63 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 00e000 00e000 00e000 00e000 00e000 01e000 0fc000 0f8000 000000 000000 000000 000000 ENDCHAR STARTCHAR agrave ENCODING 64 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 0e0000 0f0000 078000 03c000 01e000 00e000 000000 000000 0ff800 0ffc00 001e00 000e00 000e00 000e00 0ffe00 1ffe00 3c0e00 380e00 380e00 3c0e00 1fff80 0fff80 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR egrave ENCODING 65 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 0e0000 0f0000 078000 03c000 01e000 00e000 000000 000000 0ff800 1ffc00 3c1e00 380e00 380e00 380e00 3ffe00 3ffe00 380000 380000 380000 3c0000 1ffe00 0ffe00 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR igrave ENCODING 66 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 038000 03c000 01e000 00f000 007800 003800 000000 000000 000000 000000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR ograve ENCODING 67 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 0e0000 0f0000 078000 03c000 01e000 00e000 000000 000000 0ff800 1ffc00 3c1e00 380e00 380e00 380e00 380e00 380e00 380e00 380e00 380e00 3c1e00 1ffc00 0ff800 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR ugrave ENCODING 68 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 0e0000 0f0000 078000 03c000 01e000 00e000 000000 000000 380e00 380e00 380e00 380e00 380e00 380e00 380e00 380e00 380e00 380e00 380e00 3c1e00 1fff80 0ffb80 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR atilde ENCODING 69 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 03e380 07f780 0f7f00 0e3e00 000000 000000 0ff800 0ffc00 001e00 000e00 000e00 000e00 0ffe00 1ffe00 3c0e00 380e00 380e00 3c0e00 1fff80 0fff80 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR otilde ENCODING 70 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 0f8e00 1fde00 3dfc00 38f800 000000 000000 0ff800 1ffc00 3c1e00 380e00 380e00 380e00 380e00 380e00 380e00 380e00 380e00 3c1e00 1ffc00 0ff800 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR ydiaeresis ENCODING 71 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 0e3800 0e3800 000000 000000 000000 000000 380e00 380e00 380e00 380e00 380e00 380e00 380e00 3c0e00 1e0e00 0f1e00 07bc00 03f800 01f000 01e000 03c000 078000 0f0000 1e0000 3c0000 380000 000000 000000 ENDCHAR STARTCHAR Yacute ENCODING 72 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000e00 001e00 003c00 007800 00f000 00e000 380380 3c0780 1e0f00 0f1e00 07bc00 03f800 01f000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR yacute ENCODING 73 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000e00 001e00 003c00 007800 00f000 00e000 000000 000000 380e00 380e00 380e00 380e00 380e00 380e00 380e00 3c0e00 1e0e00 0f1e00 07bc00 03f800 01f000 01e000 03c000 078000 0f0000 1e0000 3c0000 380000 000000 000000 ENDCHAR STARTCHAR eacute ENCODING 74 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000e00 001e00 003c00 007800 00f000 00e000 000000 000000 0ff800 1ffc00 3c1e00 380e00 380e00 380e00 3ffe00 3ffe00 380000 380000 380000 3c0000 1ffe00 0ffe00 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR onequarter ENCODING 75 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 070000 0f0000 1f0000 070000 070380 070780 070f00 071e00 073c00 007800 00f000 01e000 03c780 078f80 0f1f80 1e3f80 3c3b80 383fc0 003fc0 000380 000380 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR onehalf ENCODING 76 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 070000 0f0000 1f0000 070000 070380 070780 070f00 071e00 073c00 007800 00f000 01e000 03cf80 079fc0 0f1dc0 1e03c0 3c0780 380f00 001e00 001fc0 001fc0 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR threequarters ENCODING 77 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 3f8000 3f8000 078000 0f0000 1f0380 078780 038f00 3b9e00 3fbc00 1f7800 00f000 01e000 03c780 078f80 0f1f80 1e3f80 3c3b80 383fc0 003fc0 000380 000380 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR udiaeresis ENCODING 78 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 0e3800 0e3800 000000 000000 000000 000000 380e00 380e00 380e00 380e00 380e00 380e00 380e00 380e00 380e00 380e00 380e00 3c1f00 1fff80 0ffb80 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR ccedilla ENCODING 79 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 03fe00 07fe00 0f0000 1e0000 3c0000 380000 380000 380000 380000 3c0000 1e0000 0f0000 07fe00 03fe00 00f000 00e000 0fe000 0fc000 000000 000000 000000 000000 ENDCHAR STARTCHAR adiaeresis ENCODING 80 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 0e3800 0e3800 000000 000000 000000 000000 0ff800 0ffc00 001e00 000e00 000e00 000e00 0ffe00 1ffe00 3c0e00 380e00 380e00 3c0e00 1fff80 0fff80 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR ediaeresis ENCODING 81 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 0e3800 0e3800 000000 000000 000000 000000 0ff800 1ffc00 3c1e00 380e00 380e00 380e00 3ffe00 3ffe00 380000 380000 380000 3c0000 1ffe00 0ffe00 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR idiaeresis ENCODING 82 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 0e0e00 0e0e00 000000 000000 000000 000000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR odiaeresis ENCODING 83 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 0e3800 0e3800 000000 000000 000000 000000 0ff800 1ffc00 3c1e00 380e00 380e00 380e00 380e00 380e00 380e00 380e00 380e00 3c1e00 1ffc00 0ff800 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR mu ENCODING 84 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 380e00 380e00 380e00 380e00 380e00 380e00 380e00 380e00 380e00 380e00 380e00 3e1f00 3fff80 3ffb80 380000 380000 380000 380000 380000 380000 000000 000000 ENDCHAR STARTCHAR acircumflex ENCODING 85 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 00e000 01f000 03f800 03b800 000000 000000 0ff800 0ffc00 001e00 000e00 000e00 000e00 0ffe00 1ffe00 3c0e00 380e00 380e00 3c0e00 1fff80 0fff80 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR ecircumflex ENCODING 86 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 00e000 01f000 03f800 03b800 000000 000000 0ff800 1ffc00 3c1e00 380e00 380e00 380e00 3ffe00 3ffe00 380000 380000 380000 3c0000 1ffe00 0ffe00 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR icircumflex ENCODING 87 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 00e000 01f000 03f800 03b800 000000 000000 000000 000000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR ocircumflex ENCODING 88 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 00e000 01f000 03f800 03b800 000000 000000 03f800 07fc00 0f1e00 0e0e00 0e0e00 0e0e00 0e0e00 0e0e00 0e0e00 0e0e00 0e0e00 0f1e00 07fc00 03f800 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR ucircumflex ENCODING 89 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 038000 07c000 0fe000 0ee000 000000 000000 383800 383800 383800 383800 383800 383800 383800 383800 383800 383800 383800 3c7c00 1ffe00 0fee00 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR aacute ENCODING 90 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000e00 001e00 003c00 007800 00f000 00e000 000000 000000 0ff800 0ffc00 001e00 000e00 000e00 000e00 0ffe00 1ffe00 3c0e00 380e00 380e00 3c0e00 1fff80 0fff80 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR multiply ENCODING 91 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 0e0e00 0f1e00 07bc00 03f800 01f000 01f000 03f800 07bc00 0f1e00 0e0e00 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR iacute ENCODING 92 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 003800 007800 00f000 01e000 03c000 038000 000000 000000 000000 000000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR oacute ENCODING 93 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 003800 007800 00f000 01e000 03c000 038000 000000 000000 0ff800 1ffc00 3c1e00 380e00 380e00 380e00 380e00 380e00 380e00 380e00 380e00 3c1e00 1ffc00 0ff800 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR uacute ENCODING 94 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 003800 007800 00f000 01e000 03c000 038000 000000 000000 380e00 380e00 380e00 380e00 380e00 380e00 380e00 380e00 380e00 380e00 380e00 3c1f00 1fff80 0ffb80 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR ntilde ENCODING 95 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 03e380 07f780 0f7f00 0e3e00 000000 000000 3bfe00 3fff00 1f0780 0e0380 0e0380 0e0380 0e0380 0e0380 0e0380 0e0380 0e0380 0e0380 0e0380 0e0380 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR Agrave ENCODING 96 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 00e000 00f000 007800 003c00 001e00 000e00 00e000 01f000 03f800 07bc00 0f1e00 1e0f00 3c0780 380380 3fff80 3fff80 380380 380380 380380 380380 380380 380380 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR Egrave ENCODING 97 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 0e0000 0f0000 078000 03c000 01e000 00e000 3fff80 3fff80 380000 380000 380000 380000 3ff800 3ff800 380000 380000 380000 380000 380000 380000 3fff80 3fff80 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR Igrave ENCODING 98 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 038000 03c000 01e000 00f000 007800 003800 000000 000000 03f800 03f800 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 03f800 03f800 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR Ograve ENCODING 99 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 0e0000 0f0000 078000 03c000 01e000 00e000 0ffe00 1fff00 3c0780 380380 380380 380380 380380 380380 380380 380380 380380 380380 380380 3c0780 1fff00 0ffe00 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR Ugrave ENCODING 100 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 0e0000 0f0000 078000 03c000 01e000 00e000 380380 380380 380380 380380 380380 380380 380380 380380 380380 380380 380380 380380 380380 3c0780 1fff00 0ffe00 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR Atilde ENCODING 101 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 03e380 07f780 0f7f00 0e3e00 000000 000000 00e000 01f000 03f800 07bc00 0f1e00 1e0f00 3c0780 380380 3fff80 3fff80 380380 380380 380380 380380 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR Otilde ENCODING 102 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 03e380 07f780 0f7f00 0e3e00 0ffe00 1fff00 3c0780 380380 380380 380380 380380 380380 380380 380380 380380 380380 380380 380380 380380 3c0780 1fff00 0ffe00 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR onesuperior ENCODING 103 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 00e000 01e000 03e000 07e000 07e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR twosuperior ENCODING 104 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 01f000 03f800 07bc00 071c00 001c00 003c00 007800 00f000 01e000 03c000 078000 07fc00 07fc00 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR threesuperior ENCODING 105 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 07fc00 07fc00 003c00 007800 00f000 01f000 03f800 003c00 001c00 001c00 073c00 07f800 03f000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR ordfeminine ENCODING 106 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 000000 000000 0ff800 0ffc00 001e00 000e00 000e00 000e00 0ffe00 1ffe00 3c0e00 380e00 380e00 3c0e00 1fff80 1fff80 000000 000000 3fff80 3fff80 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR masculine ENCODING 107 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 000000 000000 0ff800 1ffc00 3c1e00 380e00 380e00 380e00 380e00 380e00 380e00 380e00 380e00 3c1e00 1ffc00 0ff800 000000 000000 3ffe00 3ffe00 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR guillemotleft ENCODING 108 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 000000 000000 000000 00e380 01e780 03cf00 079e00 0f3c00 1e7800 3cf000 79e000 79e000 3cf000 1e7800 0f3c00 079e00 03cf00 01e780 00e380 000000 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR guillemotright ENCODING 109 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 000000 000000 000000 38e000 3cf000 1e7800 0f3c00 079e00 03cf00 01e780 00f3c0 00f3c0 01e780 03cf00 079e00 0f3c00 1e7800 3cf000 38e000 000000 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR exclamdown ENCODING 110 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 00e000 00e000 000000 000000 000000 000000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR questiondown ENCODING 111 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 003800 003800 000000 000000 000000 000000 003800 003800 003800 007800 00f000 01e000 03c000 078000 0f0380 0e0380 0e0380 0f0780 07ff00 03fe00 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR Adiaeresis ENCODING 112 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 0e0e00 0e0e00 000000 000000 00e000 01f000 03f800 07bc00 0f1e00 1e0f00 3c0780 380380 380380 380380 3fff80 3fff80 380380 380380 380380 380380 380380 380380 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR Ediaeresis ENCODING 113 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 0e0e00 0e0e00 000000 000000 3fff80 3fff80 380000 380000 380000 380000 380000 380000 3ff800 3ff800 380000 380000 380000 380000 380000 380000 3fff80 3fff80 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR Idiaeresis ENCODING 114 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 0e0e00 0e0e00 000000 000000 03f800 03f800 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 03f800 03f800 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR Odiaeresis ENCODING 115 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 0e0e00 0e0e00 000000 000000 0ffe00 1fff00 3c0780 380380 380380 380380 380380 380380 380380 380380 380380 380380 380380 380380 380380 3c0780 1fff00 0ffe00 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR Udiaeresis ENCODING 116 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 0e0e00 0e0e00 000000 000000 380380 380380 380380 380380 380380 380380 380380 380380 380380 380380 380380 380380 380380 380380 380380 3c0780 1fff00 0ffe00 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR Acircumflex ENCODING 117 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 00e000 01f000 03f800 03b800 000000 000000 00e000 01f000 03f800 07bc00 0f1e00 1e0f00 3c0780 380380 3fff80 3fff80 380380 380380 380380 380380 380380 380380 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR Ecircumflex ENCODING 118 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 00e000 01f000 03f800 03b800 000000 000000 3fff80 3fff80 380000 380000 380000 380000 380000 380000 3ff800 3ff800 380000 380000 380000 380000 3fff80 3fff80 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR Icircumflex ENCODING 119 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 00e000 01f000 03f800 03b800 000000 000000 03f800 03f800 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 03f800 03f800 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR Ocircumflex ENCODING 120 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 00e000 01f000 03f800 03b800 000000 000000 0ffe00 1fff00 3c0780 380380 380380 380380 380380 380380 380380 380380 380380 380380 380380 3c0780 1fff00 0ffe00 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR Ucircumflex ENCODING 121 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 00e000 01f000 03f800 03b800 000000 000000 380380 380380 380380 380380 380380 380380 380380 380380 380380 380380 380380 380380 380380 3c0780 1fff00 0ffe00 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR Aacute ENCODING 122 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 00e000 01e000 03c000 078000 0f0000 0e0000 00e000 01f000 03f800 07bc00 0f1e00 1e0f00 3c0780 380380 3fff80 3fff80 380380 380380 380380 380380 380380 380380 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR Eacute ENCODING 123 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000e00 001e00 003c00 007800 00f000 00e000 3fff80 3fff80 380000 380000 380000 380000 380000 380000 3ff800 3ff800 380000 380000 380000 380000 3fff80 3fff80 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR Iacute ENCODING 124 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 003800 007800 00f000 01e000 03c000 038000 000000 000000 03f800 03f800 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 03f800 03f800 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR Oacute ENCODING 125 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000e00 001e00 003c00 007800 00f000 00e000 0ffe00 1fff00 3c0780 380380 380380 380380 380380 380380 380380 380380 380380 380380 380380 3c0780 1fff00 0ffe00 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR Uacute ENCODING 126 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000e00 001e00 003c00 007800 00f000 00e000 380380 380380 380380 380380 380380 380380 380380 380380 380380 380380 380380 380380 380380 3c0780 1fff00 0ffe00 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR Ntilde ENCODING 127 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 03e380 07f780 0f7f00 0e3e00 000000 000000 380380 3c0380 3e0380 3f0380 3f8380 3bc380 39e380 38f380 387b80 383f80 381f80 380f80 380780 380380 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR a ENCODING 128 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 0ff800 0ffc00 001e00 000e00 000e00 000e00 0ffe00 1ffe00 3c0e00 380e00 380e00 3c0e00 1fff80 0fff80 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR b ENCODING 129 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 380000 380000 380000 380000 380000 380000 3fe000 3ff000 387800 383c00 381e00 380e00 380e00 380e00 380e00 381e00 383c00 387800 3ff000 3fe000 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR c ENCODING 130 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 03fe00 07fe00 0f0000 1e0000 3c0000 380000 380000 380000 380000 3c0000 1e0000 0f0000 07fe00 03fe00 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR d ENCODING 131 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 000e00 000e00 000e00 000e00 000e00 000e00 03fe00 07fe00 0f0e00 1e0e00 3c0e00 380e00 380e00 380e00 380e00 3c0e00 1e0e00 0f0e00 07fe00 03fe00 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR e ENCODING 132 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 0ff800 1ffc00 3c1e00 380e00 380e00 380e00 3ffe00 3ffe00 380000 380000 380000 3c0000 1ffe00 0ffe00 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR f ENCODING 133 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 00fe00 01fe00 03c000 038000 038000 038000 3ff800 3ff800 038000 038000 038000 038000 038000 038000 038000 038000 038000 038000 038000 038000 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR g ENCODING 134 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 03fe00 07ff00 0f0780 1e0380 3c0380 380380 380380 3c0380 1e0f80 0f1f80 07ff80 03fb80 000380 000380 0e0380 0f0780 07ff00 03fe00 000000 000000 000000 000000 ENDCHAR STARTCHAR h ENCODING 135 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 380000 380000 380000 380000 380000 380000 3bf800 3ffc00 3f1e00 3e0e00 3c0e00 380e00 380e00 380e00 380e00 380e00 380e00 380e00 380e00 380e00 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR i ENCODING 136 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 00e000 00e000 000000 000000 000000 000000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR j ENCODING 137 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 000e00 000e00 000000 000000 000000 000000 000e00 000e00 000e00 000e00 000e00 000e00 000e00 000e00 000e00 000e00 000e00 000e00 000e00 000e00 0e0e00 0f1e00 07fc00 03f800 000000 000000 000000 000000 ENDCHAR STARTCHAR k ENCODING 138 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 0e0000 0e0000 0e0000 0e0000 0e0000 0e0000 0e0e00 0e1e00 0e3c00 0e7800 0ef000 0fe000 0fc000 0fc000 0fe000 0ef000 0e7800 0e3c00 0e1e00 0e0e00 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR l ENCODING 139 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00f800 00f800 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR m ENCODING 140 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 0fbe00 1fff00 3df780 38e380 38e380 38e380 38e380 38e380 38e380 38e380 38e380 38e380 38e380 38e380 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR n ENCODING 141 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 3bfe00 3fff00 0e0780 0e0380 0e0380 0e0380 0e0380 0e0380 0e0380 0e0380 0e0380 0e0380 0e0380 0e0380 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR o ENCODING 142 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 0ff800 1ffc00 3c1e00 380e00 380e00 380e00 380e00 380e00 380e00 380e00 380e00 3c1e00 1ffc00 0ff800 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR p ENCODING 143 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 3fe000 3ff000 387800 383c00 381e00 380e00 380e00 380e00 380e00 381e00 383c00 387800 3ff000 3fe000 380000 380000 380000 380000 380000 380000 000000 000000 ENDCHAR STARTCHAR q ENCODING 144 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 03fe00 07fe00 0f0e00 1e0e00 3c0e00 380e00 380e00 3c0e00 1e0e00 0f0e00 07fe00 03fe00 000e00 000e00 000e00 000e00 000f80 000f80 000000 000000 000000 000000 ENDCHAR STARTCHAR r ENCODING 145 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 3cfe00 3dff00 1fc780 0f8380 0f0000 0e0000 0e0000 0e0000 0e0000 0e0000 0e0000 0e0000 0e0000 0e0000 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR s ENCODING 146 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 0ff800 1ffc00 3c1e00 3c0e00 1e0000 0f0000 07e000 03f000 007800 003c00 381e00 3c1e00 1ffc00 0ff800 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR t ENCODING 147 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 00e000 00e000 00e000 00e000 00e000 00e000 0ffe00 0ffe00 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR u ENCODING 148 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 380e00 380e00 380e00 380e00 380e00 380e00 380e00 380e00 380e00 380e00 380e00 3c1f00 1fff80 0ffb80 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR v ENCODING 149 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 380380 380380 380380 3c0780 1e0f00 0e0e00 0e0e00 0f1e00 07bc00 03b800 03b800 03f800 01f000 00e000 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR w ENCODING 150 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 380380 380380 380380 380380 380380 380380 38e380 38e380 38e380 39f380 3bfb80 3fbf80 1f1f00 0e0e00 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR x ENCODING 151 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 380380 3c0780 1e0f00 0f1e00 07bc00 03f800 01f000 01f000 03f800 07bc00 0f1e00 1e0f00 3c0780 380380 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR y ENCODING 152 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 380e00 380e00 380e00 380e00 380e00 380e00 380e00 3c0e00 1e0e00 0f1e00 07bc00 03f800 01f000 01e000 03c000 078000 0f0000 1e0000 3c0000 380000 000000 000000 ENDCHAR STARTCHAR z ENCODING 153 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 3fff80 3fff80 000f00 001e00 003c00 007800 00f000 01e000 03c000 078000 0f0000 1e0000 3fff80 3fff80 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR ae ENCODING 154 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 3fbe00 3fff00 01f780 00e380 03e380 07e380 0fff80 1eff80 3ce000 38e000 38e000 3df000 1fff80 0fbf80 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR oslash ENCODING 155 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 03fb80 07ff80 0f1f00 0e1e00 0e3e00 0e7e00 0efe00 0fee00 0fce00 0f8e00 0f0e00 1f1e00 3ffc00 3bf800 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR aring ENCODING 156 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 03f800 03f800 03f800 03f800 000000 000000 0ff800 0ffc00 001e00 000e00 000e00 000e00 0ffe00 1ffe00 3c0e00 380e00 380e00 3c0e00 1fff80 0fff80 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR division ENCODING 157 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 000000 000000 000000 01f000 01f000 01f000 01f000 000000 000000 000000 3fff80 3fff80 000000 000000 000000 01f000 01f000 01f000 01f000 000000 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR fm ENCODING 158 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 3fff80 3fff80 3fff80 3fff80 000000 000000 00f800 00f800 00f800 00f800 000000 000000 000000 000000 00f800 00f800 00f800 01f800 03f000 07e000 0fc000 0f8000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR dup ENCODING 159 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 3fff80 3fff80 3fff80 3fff80 000000 000000 00e000 00e000 38e380 3ce780 1eef00 0ffe00 07bc00 07bc00 0ffe00 1eef00 3ce780 38e380 00e000 00e000 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR A ENCODING 160 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 000000 000000 00e000 01f000 03f800 07bc00 0f1e00 1e0f00 3c0780 380380 380380 380380 3fff80 3fff80 380380 380380 380380 380380 380380 380380 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR B ENCODING 161 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 000000 000000 3ff800 3ffc00 0e1e00 0e0f00 0e0780 0e0780 0e0f00 0e1e00 0ffc00 0ffc00 0e1e00 0e0f00 0e0780 0e0780 0e0f00 0e1e00 3ffc00 3ff800 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR C ENCODING 162 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 000000 000000 00fe00 01ff00 03c780 078380 0f0000 1e0000 3c0000 380000 380000 380000 380000 3c0000 1e0000 0f0000 078380 03c780 01ff00 00fe00 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR D ENCODING 163 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 000000 000000 3ff800 3ffc00 0e1e00 0e0f00 0e0780 0e0380 0e0380 0e0380 0e0380 0e0380 0e0380 0e0380 0e0380 0e0780 0e0f00 0e1e00 3ffc00 3ff800 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR E ENCODING 164 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 000000 000000 3fff80 3fff80 380000 380000 380000 380000 380000 380000 3ff800 3ff800 380000 380000 380000 380000 380000 380000 3fff80 3fff80 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR F ENCODING 165 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 000000 000000 3fff80 3fff80 380000 380000 380000 380000 380000 380000 3ffe00 3ffe00 380000 380000 380000 380000 380000 380000 380000 380000 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR G ENCODING 166 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 000000 000000 03f800 07fc00 0f1e00 1e0e00 3c0000 380000 380000 380000 380000 380000 38ff80 38ff80 380e00 3c0e00 1e0e00 0f0e00 07fe00 03fe00 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR H ENCODING 167 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 000000 000000 380380 380380 380380 380380 380380 380380 380380 380380 3fff80 3fff80 380380 380380 380380 380380 380380 380380 380380 380380 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR I ENCODING 168 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 000000 000000 03f800 03f800 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 03f800 03f800 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR J ENCODING 169 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 000000 000000 00fe00 00fe00 003800 003800 003800 003800 003800 003800 003800 003800 003800 003800 383800 383800 383800 3c7800 1ff000 0fe000 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR K ENCODING 170 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 000000 000000 380380 380780 380f00 381e00 383c00 387800 38f000 39e000 3bc000 3fc000 3fe000 3ef000 3c7800 383c00 381e00 380f00 380780 380380 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR L ENCODING 171 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 000000 000000 380000 380000 380000 380000 380000 380000 380000 380000 380000 380000 380000 380000 380000 380000 380000 380000 3fff80 3fff80 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR M ENCODING 172 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 000000 000000 380380 3c0780 3e0f80 3f1f80 3fbf80 3bfb80 39f380 38e380 38e380 38e380 380380 380380 380380 380380 380380 380380 380380 380380 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR N ENCODING 173 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 000000 000000 380380 3c0380 3e0380 3f0380 3f8380 3bc380 39e380 38f380 387b80 383f80 381f80 380f80 380780 380380 380380 380380 380380 380380 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR O ENCODING 174 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 000000 000000 0ffe00 1fff00 3c0780 380380 380380 380380 380380 380380 380380 380380 380380 380380 380380 380380 380380 3c0780 1fff00 0ffe00 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR P ENCODING 175 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 000000 000000 3ff800 3ffc00 381e00 380f00 380780 380380 380380 380780 380f00 381e00 3ffc00 3ff800 380000 380000 380000 380000 380000 380000 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR Q ENCODING 176 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 000000 000000 03f800 07fc00 0f1e00 1e0f00 3c0780 380380 380380 380380 380380 380380 380380 380380 38e380 3ce780 1eef00 0f7e00 07fc00 03fc00 001e00 000f00 000780 000380 000000 000000 000000 000000 ENDCHAR STARTCHAR R ENCODING 177 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 000000 000000 3ffe00 3fff00 380780 380380 380380 380380 380380 380780 3fff00 3ffe00 39e000 38f000 387800 383c00 381e00 380f00 380780 380380 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR S ENCODING 178 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 000000 000000 0ffe00 1fff00 3c0780 380380 380000 3c0000 1f8000 0fc000 01e000 00f000 007e00 003f00 000780 000380 380380 3c0780 1fff00 0ffe00 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR T ENCODING 179 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 000000 000000 3fff80 3fff80 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR U ENCODING 180 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 000000 000000 380380 380380 380380 380380 380380 380380 380380 380380 380380 380380 380380 380380 380380 380380 380380 3c0780 1fff00 0ffe00 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR V ENCODING 181 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 000000 000000 380380 380380 380380 3c0780 1e0f00 0e0e00 0e0e00 0e0e00 0e0e00 0f1e00 07bc00 03b800 03b800 03f800 01f000 00e000 00e000 00e000 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR W ENCODING 182 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 000000 000000 380380 380380 380380 380380 380380 380380 380380 380380 38e380 38e380 38e380 38e380 38e380 39f380 3bfb80 3fbf80 1f1f00 0e0e00 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR X ENCODING 183 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 000000 000000 380380 380380 380380 3c0780 1e0f00 0f1e00 07bc00 03f800 01f000 01f000 03f800 07bc00 0f1e00 1e0f00 3c0780 380380 380380 380380 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR Y ENCODING 184 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 000000 000000 380380 3c0780 1e0f00 0f1e00 07bc00 03f800 01f000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR Z ENCODING 185 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 000000 000000 3fff80 3fff80 000380 000780 000f00 001e00 003c00 007800 00f000 01e000 03c000 078000 0f0000 1e0000 3c0000 380000 3fff80 3fff80 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR AE ENCODING 186 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 000000 000000 00ff80 01ff80 03f800 07b800 0f3800 1e3800 3c3800 383800 383f80 383f80 3ff800 3ff800 383800 383800 383800 383800 383f80 383f80 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR Ooblique ENCODING 187 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 000000 000000 0ffe00 1fff00 3c0780 380780 380f80 381f80 383f80 387b80 38f380 39e380 3bc380 3f8380 3f0380 3e0380 3c0380 3c0780 1fff00 0ffe00 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR Aring ENCODING 188 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 03f800 03f800 03f800 03f800 00e000 01f000 03f800 07bc00 0f1e00 1e0f00 3c0780 380380 380380 380380 3fff80 3fff80 380380 380380 380380 380380 380380 380380 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR Ccedilla ENCODING 189 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 000000 000000 00fe00 01ff00 03c780 078380 0f0000 1e0000 3c0000 380000 380000 380000 380000 3c0000 1e0000 0f0000 078380 03c780 01ff00 00fe00 003c00 003800 0ff800 0ff000 000000 000000 000000 000000 ENDCHAR STARTCHAR semicolon ENCODING 190 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 00f800 00f800 00f800 00f800 000000 000000 000000 000000 00f800 00f800 00f800 01f800 03f000 07e000 0fc000 0f8000 000000 000000 000000 000000 ENDCHAR STARTCHAR asterisk ENCODING 191 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 000000 000000 00e000 00e000 38e380 3ce780 1eef00 0ffe00 07bc00 07bc00 0ffe00 1eef00 3ce780 38e380 00e000 00e000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR c0 ENCODING 192 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR c1 ENCODING 193 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR c2 ENCODING 194 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR c3 ENCODING 195 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR c4 ENCODING 196 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR c5 ENCODING 197 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR c6 ENCODING 198 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR c7 ENCODING 199 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR c8 ENCODING 200 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR c9 ENCODING 201 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR ca ENCODING 202 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR cb ENCODING 203 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR cc ENCODING 204 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR cd ENCODING 205 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR ce ENCODING 206 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR cf ENCODING 207 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR copyright ENCODING 208 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 000000 000000 07f800 0ffc00 1c0e00 380700 30f300 31f300 338300 330300 330300 330300 330300 338300 31f300 30f300 380700 1c0e00 0ffc00 07f800 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR registered ENCODING 209 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 000000 000000 07f800 0ffc00 1c0e00 380700 33e300 33f300 333300 333300 33f300 33e300 336300 337300 333300 333300 380700 1c0e00 0ffc00 07f800 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR boxA ENCODING 210 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 0c0000 1e0000 3f0000 738000 e1c000 c0c000 c0c000 c0c000 ffc000 ffc000 c0c000 c0c000 c0c000 c0c000 000000 000000 ffffc0 ffffc0 c000c0 c000c0 c000c0 c000c0 ffffc0 ffffc0 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR insert ENCODING 211 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 00c000 01e000 03f000 07f800 0ffc00 1ffe00 3fff00 7f3f80 fe1fc0 fc0fc0 f807c0 f003c0 e001c0 c000c0 800040 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR boxB ENCODING 212 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 00ff00 00ff80 0031c0 0030c0 0030c0 0031c0 003f80 003f80 0031c0 0030c0 0030c0 0031c0 00ff80 00ff00 000000 000000 ffffc0 ffffc0 c000c0 c000c0 c000c0 c000c0 ffffc0 ffffc0 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR box6 ENCODING 213 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 000000 000000 ffffc0 ffffc0 c000c0 c000c0 c300c0 c700c0 ce00c0 cc00c0 cc00c0 cc00c0 ccf0c0 cdf8c0 cf9cc0 cf0cc0 cc0cc0 ce1cc0 c7f8c0 c3f0c0 c000c0 c000c0 ffffc0 ffffc0 000000 000000 000000 000000 ENDCHAR STARTCHAR plusminus ENCODING 214 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 00e000 00e000 00e000 00e000 00e000 00e000 3fff80 3fff80 00e000 00e000 00e000 00e000 00e000 00e000 000000 000000 3fff80 3fff80 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR ETH ENCODING 215 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 000000 000000 3ff800 3ffc00 0e1e00 0e0f00 0e0780 0e0380 0e0380 0e0380 3fe380 3fe380 0e0380 0e0380 0e0380 0e0780 0e0f00 0e1e00 3ffc00 3ff800 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR rightarrow ENCODING 216 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 003000 003800 003c00 003e00 ffff00 ffff00 003e00 003c00 003800 003000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR THORN ENCODING 217 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 000000 000000 380000 380000 380000 3ff800 3ffc00 381e00 380f00 380780 380380 380380 380780 380f00 381e00 3ffc00 3ff800 380000 380000 380000 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR upshift ENCODING 218 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 00c000 01e000 03f000 073800 0e1c00 1c0e00 380700 300300 3f3f00 3f3f00 033000 033000 033000 033000 033000 033000 033000 033000 033000 033000 03f000 03f000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR human ENCODING 219 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 03f000 03f000 033000 033000 03f000 03f000 00c000 00c000 3fff00 3fff00 00c000 00c000 00c000 01e000 03f000 073800 0e1c00 1c0e00 380700 300300 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR underB ENCODING 220 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 0ff000 0ff800 031c00 030c00 030c00 031c00 03f800 03f800 031c00 030c00 030c00 031c00 0ff800 0ff000 000000 000000 ffffc0 ffffc0 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR downshift ENCODING 221 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 03f000 03f000 033000 033000 033000 033000 033000 033000 033000 033000 033000 033000 3f3f00 3f3f00 300300 380700 1c0e00 0e1c00 073800 03f000 01e000 00c000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR boxquestion ENCODING 222 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 ffffc0 ffffc0 c000c0 c000c0 c3f0c0 c7f8c0 ce1cc0 cc0cc0 cc0cc0 cc0cc0 c00cc0 c01cc0 c038c0 c070c0 c0e0c0 c0c0c0 c0c0c0 c0c0c0 c000c0 c000c0 c0c0c0 c0c0c0 c000c0 c000c0 ffffc0 ffffc0 000000 000000 000000 000000 ENDCHAR STARTCHAR boxsolid ENCODING 223 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 ffffc0 ffffc0 ffffc0 ffffc0 ffffc0 ffffc0 ffffc0 ffffc0 ffffc0 ffffc0 ffffc0 ffffc0 ffffc0 ffffc0 ffffc0 ffffc0 ffffc0 ffffc0 ffffc0 ffffc0 ffffc0 ffffc0 ffffc0 ffffc0 ffffc0 ffffc0 000000 000000 000000 000000 ENDCHAR STARTCHAR e0 ENCODING 224 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR e1 ENCODING 225 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR e2 ENCODING 226 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR e3 ENCODING 227 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR e4 ENCODING 228 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR e5 ENCODING 229 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR e6 ENCODING 230 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR e7 ENCODING 231 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR e8 ENCODING 232 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR e9 ENCODING 233 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR ea ENCODING 234 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR eb ENCODING 235 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR ec ENCODING 236 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR ed ENCODING 237 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR ee ENCODING 238 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR ef ENCODING 239 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR badcommhi ENCODING 240 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 800000 c00000 e00000 f00000 f80000 fc0000 fe0000 7f0000 3f8000 1fc000 0fe000 ffffc0 ffffc0 01fc00 00fe00 007f00 003f80 001fc0 000fc0 0007c0 0003c0 0001c0 0000c0 000040 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR commhi ENCODING 241 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 ffffc0 ffffc0 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR commjag ENCODING 242 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 fff000 fff000 00e000 01c000 038000 070000 0e0000 1c0000 3fffc0 3fffc0 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR commlo ENCODING 243 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 ffffc0 ffffc0 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR clockleft ENCODING 244 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 000300 000300 00c000 00c000 000000 000000 0c0000 0c0000 000000 000040 0000c0 0001c0 300380 300300 000300 000300 000300 000300 0c0300 0c0300 000300 000300 00c000 00c000 000300 000300 000000 000000 ENDCHAR STARTCHAR clockright ENCODING 245 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 0c0000 0c0000 000000 000000 0cc000 1cc000 380000 700000 e00000 c00000 803000 003000 000000 000000 000000 000000 00c000 00c000 000000 000000 0c0000 0c0000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR lock ENCODING 246 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 800040 c000c0 e001c0 f003c0 f807c0 fc0fc0 fe1fc0 ff3fc0 ffffc0 7fff80 3fff00 1ffe00 0ffc00 0ffc00 1ffe00 3fff00 7fff80 ffffc0 ff3fc0 fe1fc0 fc0fc0 f807c0 f003c0 e001c0 c000c0 800040 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR eth ENCODING 247 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 039c00 03fc00 01f800 00f000 01f800 03fc00 039e00 000e00 03fe00 07fe00 0f0e00 1e0e00 3c0e00 380e00 380e00 380e00 380e00 3c0e00 1e1e00 0f3c00 07f800 03f000 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR leftarrow ENCODING 248 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 030000 070000 0f0000 1f0000 3fffc0 3fffc0 1f0000 0f0000 070000 030000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR thorn ENCODING 249 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 380000 380000 380000 380000 380000 380000 3fe000 3ff000 387800 383c00 381e00 380e00 380e00 380e00 380e00 381e00 383c00 387800 3ff000 3fe000 380000 380000 380000 380000 380000 380000 000000 000000 ENDCHAR STARTCHAR keyleft ENCODING 250 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 000000 000000 000000 000000 00fc00 01fe00 038700 030300 0303c0 0303c0 030300 038700 01fe00 00fc00 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR keyright ENCODING 251 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 ffffc0 ffffc0 03f3c0 03f3c0 03f3c0 03f3c0 0003c0 0003c0 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR box4 ENCODING 252 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 000000 000000 ffffc0 ffffc0 c000c0 c000c0 c030c0 c070c0 c0f0c0 c1f0c0 c3b0c0 c730c0 ce30c0 cc30c0 cffcc0 cffcc0 c030c0 c030c0 c030c0 c030c0 c000c0 c000c0 ffffc0 ffffc0 000000 000000 000000 000000 ENDCHAR STARTCHAR underA ENCODING 253 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 00c000 01e000 03f000 073800 0e1c00 0c0c00 0c0c00 0c0c00 0ffc00 0ffc00 0c0c00 0c0c00 0c0c00 0c0c00 000000 000000 ffffc0 ffffc0 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR magcard ENCODING 254 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 000000 000000 000000 000000 ffffc0 ffffc0 c000c0 c000c0 c000c0 c000c0 c000c0 c000c0 ffffc0 ffffc0 c000c0 c000c0 ffffc0 ffffc0 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR boxhuman ENCODING 255 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 ffffc0 ffffc0 c000c0 c000c0 c3f0c0 c3f0c0 c330c0 c330c0 c3f0c0 c3f0c0 c0c0c0 c0c0c0 ffffc0 ffffc0 c0c0c0 c0c0c0 c0c0c0 c1e0c0 c3f0c0 c738c0 ce1cc0 dc0ec0 f807c0 f003c0 ffffc0 ffffc0 000000 000000 000000 000000 ENDCHAR STARTCHAR apl_space ENCODING 272 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR apl_bracketright ENCODING 316 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 03f800 03f800 003800 003800 003800 003800 003800 003800 003800 003800 003800 003800 003800 003800 003800 003800 003800 003800 003800 003800 03f800 03f800 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR apl_bracketleft ENCODING 328 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 03f800 03f800 038000 038000 038000 038000 038000 038000 038000 038000 038000 038000 038000 038000 038000 038000 038000 038000 038000 038000 03f800 03f800 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR apl_stile ENCODING 347 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 ENDCHAR STARTCHAR apl_2vertical ENCODING 384 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 1c0700 1c0700 1c0700 1c0700 1c0700 1c0700 1c0700 1c0700 1c0700 1c0700 1c0700 1c0700 1c0700 1c0700 1c0700 1c0700 1c0700 1c0700 1c0700 1c0700 1c0700 1c0700 1c0700 1c0700 1c0700 1c0700 1c0700 1c0700 1c0700 1c0700 1c0700 1c0700 ENDCHAR STARTCHAR apl_2horizontal ENCODING 385 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 ffffc0 ffffc0 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 ffffc0 ffffc0 000000 000000 000000 ENDCHAR STARTCHAR apl_leftvbar ENCODING 386 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 1c0000 1c0000 1c0000 1c0000 1c0000 1c0000 1c0000 1c0000 1c0000 1c0000 1c0000 1c0000 1c0000 1c0000 1c0000 1c0000 1c0000 1c0000 1c0000 1c0000 1c0000 1c0000 1c0000 1c0000 1c0000 1c0000 1c0000 1c0000 1c0000 1c0000 1c0000 1c0000 ENDCHAR STARTCHAR apl_rightvbar ENCODING 387 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000700 000700 000700 000700 000700 000700 000700 000700 000700 000700 000700 000700 000700 000700 000700 000700 000700 000700 000700 000700 000700 000700 000700 000700 000700 000700 000700 000700 000700 000700 000700 000700 ENDCHAR STARTCHAR apl_midvbar ENCODING 388 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 ENDCHAR STARTCHAR apl_leftsolid ENCODING 393 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP ffc000 ffc000 ffc000 ffc000 ffc000 ffc000 ffc000 ffc000 ffc000 ffc000 ffc000 ffc000 ffc000 ffc000 ffc000 ffc000 ffc000 ffc000 ffc000 ffc000 ffc000 ffc000 ffc000 ffc000 ffc000 ffc000 ffc000 ffc000 ffc000 ffc000 ffc000 ffc000 ENDCHAR STARTCHAR apl_rightsolid ENCODING 394 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 007fc0 007fc0 007fc0 007fc0 007fc0 007fc0 007fc0 007fc0 007fc0 007fc0 007fc0 007fc0 007fc0 007fc0 007fc0 007fc0 007fc0 007fc0 007fc0 007fc0 007fc0 007fc0 007fc0 007fc0 007fc0 007fc0 007fc0 007fc0 007fc0 007fc0 007fc0 007fc0 ENDCHAR STARTCHAR apl_topsolid ENCODING 395 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP ffffc0 ffffc0 ffffc0 ffffc0 ffffc0 ffffc0 ffffc0 ffffc0 ffffc0 ffffc0 ffffc0 ffffc0 ffffc0 ffffc0 ffffc0 ffffc0 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR apl_bottomsolid ENCODING 396 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 ffffc0 ffffc0 ffffc0 ffffc0 ffffc0 ffffc0 ffffc0 ffffc0 ffffc0 ffffc0 ffffc0 ffffc0 ffffc0 ffffc0 ffffc0 ffffc0 ENDCHAR STARTCHAR apl_solid ENCODING 397 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP ffffc0 ffffc0 ffffc0 ffffc0 ffffc0 ffffc0 ffffc0 ffffc0 ffffc0 ffffc0 ffffc0 ffffc0 ffffc0 ffffc0 ffffc0 ffffc0 ffffc0 ffffc0 ffffc0 ffffc0 ffffc0 ffffc0 ffffc0 ffffc0 ffffc0 ffffc0 ffffc0 ffffc0 ffffc0 ffffc0 ffffc0 ffffc0 ENDCHAR STARTCHAR apl_midhbar ENCODING 402 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 ffffc0 ffffc0 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR apl_lowerleft ENCODING 419 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00f000 00ffc0 007fc0 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR apl_upperleft ENCODING 420 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 007fc0 00ffc0 00f000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 ENDCHAR STARTCHAR apl_leftjoin ENCODING 421 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00ffc0 00ffc0 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 ENDCHAR STARTCHAR apl_bottomjoin ENCODING 422 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 ffffc0 ffffc0 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR apl_intersect ENCODING 427 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 ffffc0 ffffc0 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 ENDCHAR STARTCHAR apl_lowerright ENCODING 428 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 01e000 ffe000 ffc000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR apl_upperright ENCODING 429 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 ffc000 ffe000 01e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 ENDCHAR STARTCHAR apl_rightjoin ENCODING 430 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 ffe000 ffe000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 ENDCHAR STARTCHAR apl_topjoin ENCODING 431 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 ffffc0 ffffc0 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 ENDCHAR STARTCHAR dec_solid ENCODING 512 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 07fc00 07fc00 07fc00 07fc00 07fc00 07fc00 07fc00 07fc00 07fc00 07fc00 07fc00 07fc00 07fc00 07fc00 07fc00 07fc00 07fc00 07fc00 07fc00 07fc00 07fc00 07fc00 07fc00 07fc00 07fc00 07fc00 07fc00 07fc00 07fc00 07fc00 07fc00 07fc00 ENDCHAR STARTCHAR dec_filled_circle ENCODING 513 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 01f000 03f800 07fc00 07fc00 07fc00 07fc00 03f800 01f000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR dec_halftone_block ENCODING 514 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP aaaa80 555540 aaaa80 555540 aaaa80 555540 aaaa80 555540 aaaa80 555540 aaaa80 555540 aaaa80 555540 aaaa80 555540 aaaa80 555540 aaaa80 555540 aaaa80 555540 aaaa80 555540 aaaa80 555540 aaaa80 555540 aaaa80 555540 aaaa80 555540 ENDCHAR STARTCHAR dec_ht ENCODING 515 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 1dc000 1dc000 1dc000 1dc000 1fc000 1fc000 1dc000 1dc000 1dc000 1dc000 000000 000000 00fe00 00fe00 003800 003800 003800 003800 003800 003800 003800 003800 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR dec_ff ENCODING 516 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 1fc000 1fc000 1c0000 1c0000 1f8000 1f8000 1c0000 1c0000 1c0000 1c0000 000000 000000 00fe00 00fe00 00e000 00e000 00fc00 00fc00 00e000 00e000 00e000 00e000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR dec_cr ENCODING 517 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 0f8000 1fc000 1fc000 1c0000 1c0000 1c0000 1c0000 1fc000 1fc000 0f8000 000000 000000 00fc00 00fe00 00ee00 00ee00 00fc00 00f800 00fc00 00fc00 00ee00 00ee00 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR dec_lf ENCODING 518 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 1c0000 1c0000 1c0000 1c0000 1c0000 1c0000 1c0000 1c0000 1fc000 1fc000 000000 000000 00fe00 00fe00 00e000 00e000 00fc00 00fc00 00e000 00e000 00e000 00e000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR dec_degree ENCODING 519 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 03e000 07f000 0f7800 0e3800 0e3800 0f7800 07f000 03e000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR dec_plusminus ENCODING 520 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 00e000 00e000 00e000 00e000 00e000 00e000 3fff80 3fff80 00e000 00e000 00e000 00e000 00e000 00e000 000000 000000 3fff80 3fff80 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR dec_nl ENCODING 521 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 1ce000 1ee000 1ee000 1fe000 1fe000 1fe000 1de000 1de000 1ce000 1ce000 000000 000000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00fe00 00fe00 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR dec_vt ENCODING 522 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 1ce000 1ce000 1ce000 1ce000 1ce000 1ce000 1fe000 0fc000 078000 030000 000000 000000 00fe00 00fe00 003800 003800 003800 003800 003800 003800 003800 003800 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR dec_lowerright ENCODING 523 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 01e000 ffe000 ffc000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR dec_upperright ENCODING 524 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 ffc000 ffe000 01e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 ENDCHAR STARTCHAR dec_upperleft ENCODING 525 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 007fc0 00ffc0 00f000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 ENDCHAR STARTCHAR dec_lowerleft ENCODING 526 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00f000 00ffc0 007fc0 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR dec_intersect ENCODING 527 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 ffffc0 ffffc0 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 ENDCHAR STARTCHAR dec_hbar1 ENCODING 528 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 ffffc0 ffffc0 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR dec_hbar2 ENCODING 529 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 000000 000000 000000 000000 ffffc0 ffffc0 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR dec_hbar3 ENCODING 530 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 ffffc0 ffffc0 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR dec_hbar4 ENCODING 531 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 ffffc0 ffffc0 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR dec_hbar5 ENCODING 532 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 ffffc0 ffffc0 000000 000000 000000 000000 ENDCHAR STARTCHAR dec_leftjoin ENCODING 533 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00ffc0 00ffc0 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 ENDCHAR STARTCHAR dec_rightjoin ENCODING 534 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 ffe000 ffe000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 ENDCHAR STARTCHAR dec_bottomjoin ENCODING 535 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 ffffc0 ffffc0 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR dec_topjoin ENCODING 536 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 ffffc0 ffffc0 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 ENDCHAR STARTCHAR dec_vbar ENCODING 537 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 00e000 ENDCHAR STARTCHAR dec_notgreater ENCODING 538 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 000000 000000 000e00 001e00 003c00 007800 00f000 01e000 03c000 078000 0f0000 0f0000 078000 03c000 01e000 00f000 007800 003c00 001e00 000e00 000000 000000 1fff00 1fff00 000000 000000 000000 000000 ENDCHAR STARTCHAR dec_notless ENCODING 539 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 000000 000000 0e0000 0f0000 078000 03c000 01e000 00f000 007800 003c00 001e00 001e00 003c00 007800 00f000 01e000 03c000 078000 0f0000 0e0000 000000 000000 1fff00 1fff00 000000 000000 000000 000000 ENDCHAR STARTCHAR dec_pi ENCODING 540 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 000000 000000 000000 000000 3fff80 3fff80 0e0e00 0e0e00 0e0e00 0e0e00 0e0e00 0e0e00 0e0e00 0e0e00 0e0e00 0e0e00 0e0e00 1e0e00 1c0e00 1c0e00 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR dec_notequal ENCODING 541 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 000000 000000 000000 000000 000380 000780 000f00 001e00 3fff80 3fff80 00f000 01e000 3fff80 3fff80 0f0000 1e0000 3c0000 380000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR dec_sterling ENCODING 542 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 00f800 01fc00 03de00 038e00 038000 038000 038000 038000 3ff800 3ff800 038000 038000 038000 038000 038000 038000 3f8380 3fc780 3fff00 3efe00 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR STARTCHAR dec_periodcentered ENCODING 543 SWIDTH 563 0 DWIDTH 18 0 BBX 18 32 0 -8 BITMAP 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 03e000 03e000 03e000 03e000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 ENDCHAR ENDFONT suite3270-4.1/x3270/3270gt8.bdf000066400000000000000000001057711413735575200153300ustar00rootroot00000000000000STARTFONT 2.1 COMMENT "8-point 3270 font" COMMENT "Uses nonstandard ordering:" COMMENT " Page 0: EBCDIC US-International set, CG order" COMMENT " Page 1: EBCDIC APL/APL2 set, CG order (incomplete)" COMMENT " Page 2: (first 16 characters only) DEC line-drawing characters from" COMMENT " fixed-width X fonts" COMMENT "" COMMENT "Copyright (c) 1994-2009, Paul Mattes." COMMENT "Copyright (c) 1989, Georgia Tech Research Corporation (GTRC)," COMMENT " Atlanta, GA 30332." COMMENT "All rights reserved." COMMENT "" COMMENT "Redistribution and use in source and binary forms, with or" COMMENT "without modification, are permitted provided that the following" COMMENT "conditions are met:" COMMENT " * Redistributions of source code must retain the above" COMMENT " copyright notice, this list of conditions and the following" COMMENT " disclaimer." COMMENT " * Redistributions in binary form must reproduce the above" COMMENT " copyright notice, this list of conditions and the following" COMMENT " disclaimer in the documentation and/or other materials" COMMENT " provided with the distribution." COMMENT " * Neither the names of Paul Mattes, GTRC nor their" COMMENT " contributors may be used to endorse or promote products" COMMENT " derived from this software without specific prior written" COMMENT " permission." COMMENT "" COMMENT "THIS SOFTWARE IS PROVIDED BY PAUL MATTES AND GTRC 'AS IS' AND" COMMENT "ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED" COMMENT "TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR" COMMENT "A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL PAUL" COMMENT "MATTES OR GTRC BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL," COMMENT "SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT" COMMENT "NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;" COMMENT "LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER" COMMENT "CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT," COMMENT "STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)" COMMENT "ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF" COMMENT "ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." FONT 3270gt8 SIZE 8 72 72 FONTBOUNDINGBOX 5 8 0 -2 STARTPROPERTIES 27 FOUNDRY "GaTech" FAMILY_NAME "3270" WEIGHT_NAME "Medium" SLANT "R" SETWIDTH_NAME "Normal" ADD_STYLE_NAME "" PIXEL_SIZE 8 POINT_SIZE 80 RESOLUTION_X 72 RESOLUTION_Y 72 SPACING "C" AVERAGE_WIDTH 50 CHARSET_REGISTRY "3270cg" CHARSET_ENCODING "1" MIN_SPACE 5 NORM_SPACE 5 MAX_SPACE 5 END_SPACE 5 AVG_CAPITAL_WIDTH 50 AVG_LOWERCASE_WIDTH 50 CAP_HEIGHT 6 X_HEIGHT 4 RELATIVE_WEIGHT 50 DESTINATION "Video Text" FONT_ASCENT 6 FONT_DESCENT 2 DEFAULT_CHAR 514 ENDPROPERTIES CHARS 312 STARTCHAR null ENCODING 0 SWIDTH 563 0 DWIDTH 5 0 BBX 5 8 0 -2 BITMAP 00 00 00 00 00 00 00 00 ENDCHAR STARTCHAR nobreakspace ENCODING 1 SWIDTH 563 0 DWIDTH 5 0 BBX 5 8 0 -2 BITMAP 00 00 00 00 00 00 00 00 ENDCHAR STARTCHAR euro ENCODING 2 SWIDTH 563 0 DWIDTH 5 0 BBX 5 8 0 -2 BITMAP 30 48 e0 40 e0 48 30 00 ENDCHAR STARTCHAR cr ENCODING 3 SWIDTH 563 0 DWIDTH 5 0 BBX 5 8 0 -2 BITMAP 00 00 00 00 00 00 00 00 ENDCHAR STARTCHAR nl ENCODING 4 SWIDTH 563 0 DWIDTH 5 0 BBX 5 8 0 -2 BITMAP 00 00 00 00 00 00 00 00 ENDCHAR STARTCHAR em ENCODING 5 SWIDTH 563 0 DWIDTH 5 0 BBX 5 8 0 -2 BITMAP 00 00 00 00 00 00 00 00 ENDCHAR STARTCHAR eightones ENCODING 6 SWIDTH 563 0 DWIDTH 5 0 BBX 5 8 0 -2 BITMAP 00 20 70 f8 70 20 00 00 ENDCHAR STARTCHAR hyphen ENCODING 7 SWIDTH 563 0 DWIDTH 5 0 BBX 5 8 0 -2 BITMAP 00 00 00 70 00 00 00 00 ENDCHAR STARTCHAR greater ENCODING 8 SWIDTH 563 0 DWIDTH 5 0 BBX 5 8 0 -2 BITMAP 00 40 20 10 20 40 00 00 ENDCHAR STARTCHAR less ENCODING 9 SWIDTH 563 0 DWIDTH 5 0 BBX 5 8 0 -2 BITMAP 00 10 20 40 20 10 00 00 ENDCHAR STARTCHAR bracketleft ENCODING 10 SWIDTH 563 0 DWIDTH 5 0 BBX 5 8 0 -2 BITMAP 30 20 20 20 20 20 30 00 ENDCHAR STARTCHAR bracketright ENCODING 11 SWIDTH 563 0 DWIDTH 5 0 BBX 5 8 0 -2 BITMAP 60 20 20 20 20 20 60 00 ENDCHAR STARTCHAR parenright ENCODING 12 SWIDTH 563 0 DWIDTH 5 0 BBX 5 8 0 -2 BITMAP 40 20 20 20 20 20 40 00 ENDCHAR STARTCHAR parenleft ENCODING 13 SWIDTH 563 0 DWIDTH 5 0 BBX 5 8 0 -2 BITMAP 10 20 20 20 20 20 10 00 ENDCHAR STARTCHAR braceright ENCODING 14 SWIDTH 563 0 DWIDTH 5 0 BBX 5 8 0 -2 BITMAP 40 20 20 10 20 20 40 00 ENDCHAR STARTCHAR braceleft ENCODING 15 SWIDTH 563 0 DWIDTH 5 0 BBX 5 8 0 -2 BITMAP 10 20 20 40 20 20 10 00 ENDCHAR STARTCHAR space ENCODING 16 SWIDTH 563 0 DWIDTH 5 0 BBX 5 8 0 -2 BITMAP 00 00 00 00 00 00 00 00 ENDCHAR STARTCHAR equal ENCODING 17 SWIDTH 563 0 DWIDTH 5 0 BBX 5 8 0 -2 BITMAP 00 00 70 00 70 00 00 00 ENDCHAR STARTCHAR apostrophe ENCODING 18 SWIDTH 563 0 DWIDTH 5 0 BBX 5 8 0 -2 BITMAP 20 20 00 00 00 00 00 00 ENDCHAR STARTCHAR quotedbl ENCODING 19 SWIDTH 563 0 DWIDTH 5 0 BBX 5 8 0 -2 BITMAP 50 50 00 00 00 00 00 00 ENDCHAR STARTCHAR slash ENCODING 20 SWIDTH 563 0 DWIDTH 5 0 BBX 5 8 0 -2 BITMAP 00 08 10 20 40 80 00 00 ENDCHAR STARTCHAR backslash ENCODING 21 SWIDTH 563 0 DWIDTH 5 0 BBX 5 8 0 -2 BITMAP 00 80 40 20 10 08 00 00 ENDCHAR STARTCHAR bar ENCODING 22 SWIDTH 563 0 DWIDTH 5 0 BBX 5 8 0 -2 BITMAP 20 20 20 20 20 20 20 00 ENDCHAR STARTCHAR brokenbar ENCODING 23 SWIDTH 563 0 DWIDTH 5 0 BBX 5 8 0 -2 BITMAP 20 20 20 00 20 20 20 00 ENDCHAR STARTCHAR question ENCODING 24 SWIDTH 563 0 DWIDTH 5 0 BBX 5 8 0 -2 BITMAP 30 48 08 10 20 00 20 00 ENDCHAR STARTCHAR exclam ENCODING 25 SWIDTH 563 0 DWIDTH 5 0 BBX 5 8 0 -2 BITMAP 20 20 20 20 20 00 20 00 ENDCHAR STARTCHAR dollar ENCODING 26 SWIDTH 563 0 DWIDTH 5 0 BBX 5 8 0 -2 BITMAP 20 78 a0 70 28 f0 20 00 ENDCHAR STARTCHAR cent ENCODING 27 SWIDTH 563 0 DWIDTH 5 0 BBX 5 8 0 -2 BITMAP 00 20 70 60 70 20 00 00 ENDCHAR STARTCHAR sterling ENCODING 28 SWIDTH 563 0 DWIDTH 5 0 BBX 5 8 0 -2 BITMAP 30 20 20 70 20 68 70 00 ENDCHAR STARTCHAR yen ENCODING 29 SWIDTH 563 0 DWIDTH 5 0 BBX 5 8 0 -2 BITMAP 88 50 20 70 20 20 20 00 ENDCHAR STARTCHAR paragraph ENCODING 30 SWIDTH 563 0 DWIDTH 5 0 BBX 5 8 0 -2 BITMAP 00 60 50 60 58 48 48 00 ENDCHAR STARTCHAR currency ENCODING 31 SWIDTH 563 0 DWIDTH 5 0 BBX 5 8 0 -2 BITMAP 00 d8 70 50 70 d8 00 00 ENDCHAR STARTCHAR 0 ENCODING 32 SWIDTH 563 0 DWIDTH 5 0 BBX 5 8 0 -2 BITMAP 30 48 48 48 48 48 30 00 ENDCHAR STARTCHAR 1 ENCODING 33 SWIDTH 563 0 DWIDTH 5 0 BBX 5 8 0 -2 BITMAP 10 30 10 10 10 10 10 00 ENDCHAR STARTCHAR 2 ENCODING 34 SWIDTH 563 0 DWIDTH 5 0 BBX 5 8 0 -2 BITMAP 30 48 08 10 20 40 78 00 ENDCHAR STARTCHAR 3 ENCODING 35 SWIDTH 563 0 DWIDTH 5 0 BBX 5 8 0 -2 BITMAP 30 48 08 30 08 48 30 00 ENDCHAR STARTCHAR 4 ENCODING 36 SWIDTH 563 0 DWIDTH 5 0 BBX 5 8 0 -2 BITMAP 08 28 28 48 78 08 08 00 ENDCHAR STARTCHAR 5 ENCODING 37 SWIDTH 563 0 DWIDTH 5 0 BBX 5 8 0 -2 BITMAP 78 40 40 70 08 08 70 00 ENDCHAR STARTCHAR 6 ENCODING 38 SWIDTH 563 0 DWIDTH 5 0 BBX 5 8 0 -2 BITMAP 10 20 40 70 48 48 30 00 ENDCHAR STARTCHAR 7 ENCODING 39 SWIDTH 563 0 DWIDTH 5 0 BBX 5 8 0 -2 BITMAP 78 08 10 20 20 20 20 00 ENDCHAR STARTCHAR 8 ENCODING 40 SWIDTH 563 0 DWIDTH 5 0 BBX 5 8 0 -2 BITMAP 30 48 48 30 48 48 30 00 ENDCHAR STARTCHAR 9 ENCODING 41 SWIDTH 563 0 DWIDTH 5 0 BBX 5 8 0 -2 BITMAP 30 48 48 38 08 10 20 00 ENDCHAR STARTCHAR ssharp ENCODING 42 SWIDTH 563 0 DWIDTH 5 0 BBX 5 8 0 -2 BITMAP 30 48 48 50 48 48 50 00 ENDCHAR STARTCHAR section ENCODING 43 SWIDTH 563 0 DWIDTH 5 0 BBX 5 8 0 -2 BITMAP 18 20 50 48 28 10 60 00 ENDCHAR STARTCHAR numbersign ENCODING 44 SWIDTH 563 0 DWIDTH 5 0 BBX 5 8 0 -2 BITMAP 00 30 78 30 78 30 00 00 ENDCHAR STARTCHAR at ENCODING 45 SWIDTH 563 0 DWIDTH 5 0 BBX 5 8 0 -2 BITMAP 30 48 48 58 58 40 38 00 ENDCHAR STARTCHAR percent ENCODING 46 SWIDTH 563 0 DWIDTH 5 0 BBX 5 8 0 -2 BITMAP 48 48 10 10 20 28 48 00 ENDCHAR STARTCHAR underscore ENCODING 47 SWIDTH 563 0 DWIDTH 5 0 BBX 5 8 0 -2 BITMAP 00 00 00 00 00 00 78 00 ENDCHAR STARTCHAR ampersand ENCODING 48 SWIDTH 563 0 DWIDTH 5 0 BBX 5 8 0 -2 BITMAP 30 48 30 60 50 48 38 00 ENDCHAR STARTCHAR minus ENCODING 49 SWIDTH 563 0 DWIDTH 5 0 BBX 5 8 0 -2 BITMAP 00 00 00 70 00 00 00 00 ENDCHAR STARTCHAR period ENCODING 50 SWIDTH 563 0 DWIDTH 5 0 BBX 5 8 0 -2 BITMAP 00 00 00 00 00 20 20 00 ENDCHAR STARTCHAR comma ENCODING 51 SWIDTH 563 0 DWIDTH 5 0 BBX 5 8 0 -2 BITMAP 00 00 00 00 00 20 20 40 ENDCHAR STARTCHAR colon ENCODING 52 SWIDTH 563 0 DWIDTH 5 0 BBX 5 8 0 -2 BITMAP 00 00 20 20 00 20 20 00 ENDCHAR STARTCHAR plus ENCODING 53 SWIDTH 563 0 DWIDTH 5 0 BBX 5 8 0 -2 BITMAP 00 00 20 70 20 00 00 00 ENDCHAR STARTCHAR notsign ENCODING 54 SWIDTH 563 0 DWIDTH 5 0 BBX 5 8 0 -2 BITMAP 78 08 00 00 00 00 00 00 ENDCHAR STARTCHAR macron ENCODING 55 SWIDTH 563 0 DWIDTH 5 0 BBX 5 8 0 -2 BITMAP 78 00 00 00 00 00 00 00 ENDCHAR STARTCHAR degree ENCODING 56 SWIDTH 563 0 DWIDTH 5 0 BBX 5 8 0 -2 BITMAP 20 50 20 00 00 00 00 00 ENDCHAR STARTCHAR periodcentered ENCODING 57 SWIDTH 563 0 DWIDTH 5 0 BBX 5 8 0 -2 BITMAP 00 00 20 20 00 00 00 00 ENDCHAR STARTCHAR asciicircum ENCODING 58 SWIDTH 563 0 DWIDTH 5 0 BBX 5 8 0 -2 BITMAP 20 50 00 00 00 00 00 00 ENDCHAR STARTCHAR asciitilde ENCODING 59 SWIDTH 563 0 DWIDTH 5 0 BBX 5 8 0 -2 BITMAP 28 50 00 00 00 00 00 00 ENDCHAR STARTCHAR diaeresis ENCODING 60 SWIDTH 563 0 DWIDTH 5 0 BBX 5 8 0 -2 BITMAP 50 00 00 00 00 00 00 00 ENDCHAR STARTCHAR grave ENCODING 61 SWIDTH 563 0 DWIDTH 5 0 BBX 5 8 0 -2 BITMAP 20 10 00 00 00 00 00 00 ENDCHAR STARTCHAR acute ENCODING 62 SWIDTH 563 0 DWIDTH 5 0 BBX 5 8 0 -2 BITMAP 10 20 00 00 00 00 00 00 ENDCHAR STARTCHAR cedilla ENCODING 63 SWIDTH 563 0 DWIDTH 5 0 BBX 5 8 0 -2 BITMAP 00 00 00 00 00 00 20 60 ENDCHAR STARTCHAR agrave ENCODING 64 SWIDTH 563 0 DWIDTH 5 0 BBX 5 8 0 -2 BITMAP 20 10 70 08 78 48 38 00 ENDCHAR STARTCHAR egrave ENCODING 65 SWIDTH 563 0 DWIDTH 5 0 BBX 5 8 0 -2 BITMAP 20 10 30 48 78 40 38 00 ENDCHAR STARTCHAR igrave ENCODING 66 SWIDTH 563 0 DWIDTH 5 0 BBX 5 8 0 -2 BITMAP 20 10 20 20 20 20 20 00 ENDCHAR STARTCHAR ograve ENCODING 67 SWIDTH 563 0 DWIDTH 5 0 BBX 5 8 0 -2 BITMAP 20 10 30 48 48 48 30 00 ENDCHAR STARTCHAR ugrave ENCODING 68 SWIDTH 563 0 DWIDTH 5 0 BBX 5 8 0 -2 BITMAP 20 10 48 48 48 48 30 00 ENDCHAR STARTCHAR atilde ENCODING 69 SWIDTH 563 0 DWIDTH 5 0 BBX 5 8 0 -2 BITMAP 28 50 78 08 78 48 38 00 ENDCHAR STARTCHAR otilde ENCODING 70 SWIDTH 563 0 DWIDTH 5 0 BBX 5 8 0 -2 BITMAP 28 50 30 48 48 48 30 00 ENDCHAR STARTCHAR ydiaeresis ENCODING 71 SWIDTH 563 0 DWIDTH 5 0 BBX 5 8 0 -2 BITMAP 50 00 48 48 48 28 10 60 ENDCHAR STARTCHAR Yacute ENCODING 72 SWIDTH 563 0 DWIDTH 5 0 BBX 5 8 0 -2 BITMAP 10 68 48 48 38 08 70 00 ENDCHAR STARTCHAR yacute ENCODING 73 SWIDTH 563 0 DWIDTH 5 0 BBX 5 8 0 -2 BITMAP 10 20 48 48 48 28 10 60 ENDCHAR STARTCHAR eacute ENCODING 74 SWIDTH 563 0 DWIDTH 5 0 BBX 5 8 0 -2 BITMAP 10 20 30 48 78 40 38 00 ENDCHAR STARTCHAR onequarter ENCODING 75 SWIDTH 563 0 DWIDTH 5 0 BBX 5 8 0 -2 BITMAP 40 40 40 10 30 78 10 00 ENDCHAR STARTCHAR onehalf ENCODING 76 SWIDTH 563 0 DWIDTH 5 0 BBX 5 8 0 -2 BITMAP 40 40 40 30 08 10 38 00 ENDCHAR STARTCHAR threequarters ENCODING 77 SWIDTH 563 0 DWIDTH 5 0 BBX 5 8 0 -2 BITMAP 40 60 20 50 30 78 10 00 ENDCHAR STARTCHAR udiaeresis ENCODING 78 SWIDTH 563 0 DWIDTH 5 0 BBX 5 8 0 -2 BITMAP 50 00 48 48 48 48 30 00 ENDCHAR STARTCHAR ccedilla ENCODING 79 SWIDTH 563 0 DWIDTH 5 0 BBX 5 8 0 -2 BITMAP 00 00 38 40 40 40 38 10 ENDCHAR STARTCHAR adiaeresis ENCODING 80 SWIDTH 563 0 DWIDTH 5 0 BBX 5 8 0 -2 BITMAP 50 00 70 08 78 48 38 00 ENDCHAR STARTCHAR ediaeresis ENCODING 81 SWIDTH 563 0 DWIDTH 5 0 BBX 5 8 0 -2 BITMAP 50 00 30 48 78 40 38 00 ENDCHAR STARTCHAR idiaeresis ENCODING 82 SWIDTH 563 0 DWIDTH 5 0 BBX 5 8 0 -2 BITMAP 50 00 20 20 20 20 20 00 ENDCHAR STARTCHAR odiaeresis ENCODING 83 SWIDTH 563 0 DWIDTH 5 0 BBX 5 8 0 -2 BITMAP 50 00 30 48 48 48 30 00 ENDCHAR STARTCHAR mu ENCODING 84 SWIDTH 563 0 DWIDTH 5 0 BBX 5 8 0 -2 BITMAP 50 00 48 48 48 48 30 00 ENDCHAR STARTCHAR acircumflex ENCODING 85 SWIDTH 563 0 DWIDTH 5 0 BBX 5 8 0 -2 BITMAP 20 50 70 08 78 48 38 00 ENDCHAR STARTCHAR ecircumflex ENCODING 86 SWIDTH 563 0 DWIDTH 5 0 BBX 5 8 0 -2 BITMAP 20 50 30 48 78 40 38 00 ENDCHAR STARTCHAR icircumflex ENCODING 87 SWIDTH 563 0 DWIDTH 5 0 BBX 5 8 0 -2 BITMAP 20 50 20 20 20 20 20 00 ENDCHAR STARTCHAR ocircumflex ENCODING 88 SWIDTH 563 0 DWIDTH 5 0 BBX 5 8 0 -2 BITMAP 20 50 30 48 48 48 30 00 ENDCHAR STARTCHAR ucircumflex ENCODING 89 SWIDTH 563 0 DWIDTH 5 0 BBX 5 8 0 -2 BITMAP 20 50 48 48 48 48 30 00 ENDCHAR STARTCHAR aacute ENCODING 90 SWIDTH 563 0 DWIDTH 5 0 BBX 5 8 0 -2 BITMAP 10 20 70 08 78 48 38 00 ENDCHAR STARTCHAR multiply ENCODING 91 SWIDTH 563 0 DWIDTH 5 0 BBX 5 8 0 -2 BITMAP 00 00 50 20 50 00 00 00 ENDCHAR STARTCHAR iacute ENCODING 92 SWIDTH 563 0 DWIDTH 5 0 BBX 5 8 0 -2 BITMAP 20 40 20 20 20 20 20 00 ENDCHAR STARTCHAR oacute ENCODING 93 SWIDTH 563 0 DWIDTH 5 0 BBX 5 8 0 -2 BITMAP 10 20 30 48 48 48 30 00 ENDCHAR STARTCHAR uacute ENCODING 94 SWIDTH 563 0 DWIDTH 5 0 BBX 5 8 0 -2 BITMAP 10 20 48 48 48 48 30 00 ENDCHAR STARTCHAR ntilde ENCODING 95 SWIDTH 563 0 DWIDTH 5 0 BBX 5 8 0 -2 BITMAP 28 50 70 48 48 48 48 00 ENDCHAR STARTCHAR Agrave ENCODING 96 SWIDTH 563 0 DWIDTH 5 0 BBX 5 8 0 -2 BITMAP 20 30 48 48 78 48 48 00 ENDCHAR STARTCHAR Egrave ENCODING 97 SWIDTH 563 0 DWIDTH 5 0 BBX 5 8 0 -2 BITMAP 20 78 40 78 40 40 78 00 ENDCHAR STARTCHAR Igrave ENCODING 98 SWIDTH 563 0 DWIDTH 5 0 BBX 5 8 0 -2 BITMAP 20 30 20 20 20 20 20 00 ENDCHAR STARTCHAR Ograve ENCODING 99 SWIDTH 563 0 DWIDTH 5 0 BBX 5 8 0 -2 BITMAP 20 30 48 48 48 48 30 00 ENDCHAR STARTCHAR Ugrave ENCODING 100 SWIDTH 563 0 DWIDTH 5 0 BBX 5 8 0 -2 BITMAP 20 58 48 48 48 48 30 00 ENDCHAR STARTCHAR Atilde ENCODING 101 SWIDTH 563 0 DWIDTH 5 0 BBX 5 8 0 -2 BITMAP 78 30 48 48 78 48 48 00 ENDCHAR STARTCHAR Otilde ENCODING 102 SWIDTH 563 0 DWIDTH 5 0 BBX 5 8 0 -2 BITMAP 78 30 48 48 48 48 30 00 ENDCHAR STARTCHAR onesuperior ENCODING 103 SWIDTH 563 0 DWIDTH 5 0 BBX 5 8 0 -2 BITMAP 20 60 20 20 20 00 00 00 ENDCHAR STARTCHAR twosuperior ENCODING 104 SWIDTH 563 0 DWIDTH 5 0 BBX 6 8 0 -2 BITMAP 60 10 20 40 70 00 00 00 ENDCHAR STARTCHAR threesuperior ENCODING 105 SWIDTH 563 0 DWIDTH 5 0 BBX 5 8 0 -2 BITMAP 60 10 20 10 60 00 00 00 ENDCHAR STARTCHAR ordfeminine ENCODING 106 SWIDTH 563 0 DWIDTH 5 0 BBX 5 8 0 -2 BITMAP 30 08 78 48 38 00 78 00 ENDCHAR STARTCHAR masculine ENCODING 107 SWIDTH 563 0 DWIDTH 5 0 BBX 5 8 0 -2 BITMAP 30 48 48 48 30 00 78 00 ENDCHAR STARTCHAR guillemotleft ENCODING 108 SWIDTH 563 0 DWIDTH 5 0 BBX 5 8 0 -2 BITMAP 00 28 50 a0 50 28 00 00 ENDCHAR STARTCHAR guillemotright ENCODING 109 SWIDTH 563 0 DWIDTH 5 0 BBX 5 8 0 -2 BITMAP 00 a0 50 28 50 a0 00 00 ENDCHAR STARTCHAR exclamdown ENCODING 110 SWIDTH 563 0 DWIDTH 5 0 BBX 5 8 0 -2 BITMAP 20 00 20 20 20 20 20 00 ENDCHAR STARTCHAR questiondown ENCODING 111 SWIDTH 563 0 DWIDTH 5 0 BBX 5 8 0 -2 BITMAP 20 00 20 40 80 90 60 00 ENDCHAR STARTCHAR Adiaeresis ENCODING 112 SWIDTH 563 0 DWIDTH 5 0 BBX 5 8 0 -2 BITMAP 50 30 48 48 78 48 48 00 ENDCHAR STARTCHAR Ediaeresis ENCODING 113 SWIDTH 563 0 DWIDTH 5 0 BBX 5 8 0 -2 BITMAP 50 78 40 78 40 40 78 00 ENDCHAR STARTCHAR Idiaeresis ENCODING 114 SWIDTH 563 0 DWIDTH 5 0 BBX 5 8 0 -2 BITMAP 50 20 20 20 20 20 20 00 ENDCHAR STARTCHAR Odiaeresis ENCODING 115 SWIDTH 563 0 DWIDTH 5 0 BBX 5 8 0 -2 BITMAP 50 30 48 48 48 48 30 00 ENDCHAR STARTCHAR Udiaeresis ENCODING 116 SWIDTH 563 0 DWIDTH 5 0 BBX 5 8 0 -2 BITMAP 50 48 48 48 48 48 30 00 ENDCHAR STARTCHAR Acircumflex ENCODING 117 SWIDTH 563 0 DWIDTH 5 0 BBX 5 8 0 -2 BITMAP 30 30 48 48 78 48 48 00 ENDCHAR STARTCHAR Ecircumflex ENCODING 118 SWIDTH 563 0 DWIDTH 5 0 BBX 5 8 0 -2 BITMAP 30 78 40 78 40 40 78 00 ENDCHAR STARTCHAR Icircumflex ENCODING 119 SWIDTH 563 0 DWIDTH 5 0 BBX 5 8 0 -2 BITMAP 70 20 20 20 20 20 20 00 ENDCHAR STARTCHAR Ocircumflex ENCODING 120 SWIDTH 563 0 DWIDTH 5 0 BBX 5 8 0 -2 BITMAP 30 30 48 48 48 48 30 00 ENDCHAR STARTCHAR Ucircumflex ENCODING 121 SWIDTH 563 0 DWIDTH 5 0 BBX 5 8 0 -2 BITMAP 30 48 48 48 48 48 30 00 ENDCHAR STARTCHAR Aacute ENCODING 122 SWIDTH 563 0 DWIDTH 5 0 BBX 5 8 0 -2 BITMAP 10 30 48 48 78 48 48 00 ENDCHAR STARTCHAR Eacute ENCODING 123 SWIDTH 563 0 DWIDTH 5 0 BBX 5 8 0 -2 BITMAP 10 78 40 78 40 40 78 00 ENDCHAR STARTCHAR Iacute ENCODING 124 SWIDTH 563 0 DWIDTH 5 0 BBX 5 8 0 -2 BITMAP 10 20 20 20 20 20 20 00 ENDCHAR STARTCHAR Oacute ENCODING 125 SWIDTH 563 0 DWIDTH 5 0 BBX 5 8 0 -2 BITMAP 10 30 48 48 48 48 30 00 ENDCHAR STARTCHAR Uacute ENCODING 126 SWIDTH 563 0 DWIDTH 5 0 BBX 5 8 0 -2 BITMAP 10 68 48 48 48 48 30 00 ENDCHAR STARTCHAR Ntilde ENCODING 127 SWIDTH 563 0 DWIDTH 5 0 BBX 5 8 0 -2 BITMAP 38 48 68 58 48 48 48 00 ENDCHAR STARTCHAR a ENCODING 128 SWIDTH 563 0 DWIDTH 5 0 BBX 5 8 0 -2 BITMAP 00 00 30 08 78 48 38 00 ENDCHAR STARTCHAR b ENCODING 129 SWIDTH 563 0 DWIDTH 5 0 BBX 5 8 0 -2 BITMAP 40 40 70 48 48 48 70 00 ENDCHAR STARTCHAR c ENCODING 130 SWIDTH 563 0 DWIDTH 5 0 BBX 5 8 0 -2 BITMAP 00 00 38 40 40 40 38 00 ENDCHAR STARTCHAR d ENCODING 131 SWIDTH 563 0 DWIDTH 5 0 BBX 5 8 0 -2 BITMAP 08 08 38 48 48 48 38 00 ENDCHAR STARTCHAR e ENCODING 132 SWIDTH 563 0 DWIDTH 5 0 BBX 5 8 0 -2 BITMAP 00 00 30 48 78 40 38 00 ENDCHAR STARTCHAR f ENCODING 133 SWIDTH 563 0 DWIDTH 5 0 BBX 5 8 0 -2 BITMAP 18 20 20 78 20 20 20 00 ENDCHAR STARTCHAR g ENCODING 134 SWIDTH 563 0 DWIDTH 5 0 BBX 5 8 0 -2 BITMAP 00 00 30 48 48 38 08 70 ENDCHAR STARTCHAR h ENCODING 135 SWIDTH 563 0 DWIDTH 5 0 BBX 5 8 0 -2 BITMAP 40 40 70 48 48 48 48 00 ENDCHAR STARTCHAR i ENCODING 136 SWIDTH 563 0 DWIDTH 5 0 BBX 5 8 0 -2 BITMAP 20 00 20 20 20 20 20 00 ENDCHAR STARTCHAR j ENCODING 137 SWIDTH 563 0 DWIDTH 5 0 BBX 5 8 0 -2 BITMAP 10 00 10 10 10 10 50 20 ENDCHAR STARTCHAR k ENCODING 138 SWIDTH 563 0 DWIDTH 5 0 BBX 5 8 0 -2 BITMAP 40 40 48 50 60 50 48 00 ENDCHAR STARTCHAR l ENCODING 139 SWIDTH 563 0 DWIDTH 5 0 BBX 5 8 0 -2 BITMAP 20 20 20 20 20 20 10 00 ENDCHAR STARTCHAR m ENCODING 140 SWIDTH 563 0 DWIDTH 5 0 BBX 5 8 0 -2 BITMAP 00 00 50 78 78 78 78 00 ENDCHAR STARTCHAR n ENCODING 141 SWIDTH 563 0 DWIDTH 5 0 BBX 5 8 0 -2 BITMAP 00 00 70 48 48 48 48 00 ENDCHAR STARTCHAR o ENCODING 142 SWIDTH 563 0 DWIDTH 5 0 BBX 5 8 0 -2 BITMAP 00 00 30 48 48 48 30 00 ENDCHAR STARTCHAR p ENCODING 143 SWIDTH 563 0 DWIDTH 5 0 BBX 5 8 0 -2 BITMAP 00 00 70 48 48 48 70 40 ENDCHAR STARTCHAR q ENCODING 144 SWIDTH 563 0 DWIDTH 5 0 BBX 5 8 0 -2 BITMAP 00 00 38 48 48 48 38 08 ENDCHAR STARTCHAR r ENCODING 145 SWIDTH 563 0 DWIDTH 5 0 BBX 5 8 0 -2 BITMAP 00 00 70 48 40 40 40 00 ENDCHAR STARTCHAR s ENCODING 146 SWIDTH 563 0 DWIDTH 5 0 BBX 5 8 0 -2 BITMAP 00 00 38 40 30 08 70 00 ENDCHAR STARTCHAR t ENCODING 147 SWIDTH 563 0 DWIDTH 5 0 BBX 5 8 0 -2 BITMAP 20 20 78 20 20 20 10 00 ENDCHAR STARTCHAR u ENCODING 148 SWIDTH 563 0 DWIDTH 5 0 BBX 5 8 0 -2 BITMAP 00 00 48 48 48 48 30 00 ENDCHAR STARTCHAR v ENCODING 149 SWIDTH 563 0 DWIDTH 5 0 BBX 5 8 0 -2 BITMAP 00 00 48 48 48 30 30 00 ENDCHAR STARTCHAR w ENCODING 150 SWIDTH 563 0 DWIDTH 5 0 BBX 5 8 0 -2 BITMAP 00 00 78 78 78 78 50 00 ENDCHAR STARTCHAR x ENCODING 151 SWIDTH 563 0 DWIDTH 5 0 BBX 5 8 0 -2 BITMAP 00 00 48 48 30 48 48 00 ENDCHAR STARTCHAR y ENCODING 152 SWIDTH 563 0 DWIDTH 5 0 BBX 5 8 0 -2 BITMAP 00 00 48 48 48 38 08 70 ENDCHAR STARTCHAR z ENCODING 153 SWIDTH 563 0 DWIDTH 5 0 BBX 5 8 0 -2 BITMAP 00 00 78 08 30 40 78 00 ENDCHAR STARTCHAR ae ENCODING 154 SWIDTH 563 0 DWIDTH 5 0 BBX 5 8 0 -2 BITMAP 00 00 78 10 78 50 38 00 ENDCHAR STARTCHAR oslash ENCODING 155 SWIDTH 563 0 DWIDTH 5 0 BBX 5 8 0 -2 BITMAP 00 00 30 58 78 68 30 00 ENDCHAR STARTCHAR aring ENCODING 156 SWIDTH 563 0 DWIDTH 5 0 BBX 5 8 0 -2 BITMAP 30 30 70 08 78 48 38 00 ENDCHAR STARTCHAR division ENCODING 157 SWIDTH 563 0 DWIDTH 5 0 BBX 5 8 0 -2 BITMAP 00 20 00 70 00 20 00 00 ENDCHAR STARTCHAR fm ENCODING 158 SWIDTH 563 0 DWIDTH 5 0 BBX 5 8 0 -2 BITMAP 70 00 20 20 00 20 20 40 ENDCHAR STARTCHAR dup ENCODING 159 SWIDTH 563 0 DWIDTH 5 0 BBX 5 8 0 -2 BITMAP f8 00 20 a8 70 a8 20 00 ENDCHAR STARTCHAR A ENCODING 160 SWIDTH 563 0 DWIDTH 5 0 BBX 5 8 0 -2 BITMAP 30 48 48 78 48 48 48 00 ENDCHAR STARTCHAR B ENCODING 161 SWIDTH 563 0 DWIDTH 5 0 BBX 5 8 0 -2 BITMAP 70 48 48 70 48 48 70 00 ENDCHAR STARTCHAR C ENCODING 162 SWIDTH 563 0 DWIDTH 5 0 BBX 5 8 0 -2 BITMAP 30 48 40 40 40 48 30 00 ENDCHAR STARTCHAR D ENCODING 163 SWIDTH 563 0 DWIDTH 5 0 BBX 5 8 0 -2 BITMAP 70 48 48 48 48 48 70 00 ENDCHAR STARTCHAR E ENCODING 164 SWIDTH 563 0 DWIDTH 5 0 BBX 5 8 0 -2 BITMAP 78 40 40 78 40 40 78 00 ENDCHAR STARTCHAR F ENCODING 165 SWIDTH 563 0 DWIDTH 5 0 BBX 5 8 0 -2 BITMAP 78 40 40 78 40 40 40 00 ENDCHAR STARTCHAR G ENCODING 166 SWIDTH 563 0 DWIDTH 5 0 BBX 5 8 0 -2 BITMAP 30 48 40 58 48 48 30 00 ENDCHAR STARTCHAR H ENCODING 167 SWIDTH 563 0 DWIDTH 5 0 BBX 5 8 0 -2 BITMAP 48 48 48 78 48 48 48 00 ENDCHAR STARTCHAR I ENCODING 168 SWIDTH 563 0 DWIDTH 5 0 BBX 5 8 0 -2 BITMAP 20 20 20 20 20 20 20 00 ENDCHAR STARTCHAR J ENCODING 169 SWIDTH 563 0 DWIDTH 5 0 BBX 5 8 0 -2 BITMAP 08 08 08 08 08 48 30 00 ENDCHAR STARTCHAR K ENCODING 170 SWIDTH 563 0 DWIDTH 5 0 BBX 5 8 0 -2 BITMAP 48 50 60 50 50 48 48 00 ENDCHAR STARTCHAR L ENCODING 171 SWIDTH 563 0 DWIDTH 5 0 BBX 5 8 0 -2 BITMAP 40 40 40 40 40 40 78 00 ENDCHAR STARTCHAR M ENCODING 172 SWIDTH 563 0 DWIDTH 5 0 BBX 5 8 0 -2 BITMAP 48 78 78 48 48 48 48 00 ENDCHAR STARTCHAR N ENCODING 173 SWIDTH 563 0 DWIDTH 5 0 BBX 5 8 0 -2 BITMAP 48 48 68 58 48 48 48 00 ENDCHAR STARTCHAR O ENCODING 174 SWIDTH 563 0 DWIDTH 5 0 BBX 5 8 0 -2 BITMAP 30 48 48 48 48 48 30 00 ENDCHAR STARTCHAR P ENCODING 175 SWIDTH 563 0 DWIDTH 5 0 BBX 5 8 0 -2 BITMAP 70 48 48 70 40 40 40 00 ENDCHAR STARTCHAR Q ENCODING 176 SWIDTH 563 0 DWIDTH 5 0 BBX 5 8 0 -2 BITMAP 30 48 48 48 48 58 38 00 ENDCHAR STARTCHAR R ENCODING 177 SWIDTH 563 0 DWIDTH 5 0 BBX 5 8 0 -2 BITMAP 70 48 48 70 60 50 48 00 ENDCHAR STARTCHAR S ENCODING 178 SWIDTH 563 0 DWIDTH 5 0 BBX 5 8 0 -2 BITMAP 30 48 40 30 08 48 30 00 ENDCHAR STARTCHAR T ENCODING 179 SWIDTH 563 0 DWIDTH 5 0 BBX 5 8 0 -2 BITMAP 78 20 20 20 20 20 20 00 ENDCHAR STARTCHAR U ENCODING 180 SWIDTH 563 0 DWIDTH 5 0 BBX 5 8 0 -2 BITMAP 48 48 48 48 48 48 30 00 ENDCHAR STARTCHAR V ENCODING 181 SWIDTH 563 0 DWIDTH 5 0 BBX 5 8 0 -2 BITMAP 48 48 48 48 48 30 30 00 ENDCHAR STARTCHAR W ENCODING 182 SWIDTH 563 0 DWIDTH 5 0 BBX 5 8 0 -2 BITMAP 48 48 48 48 78 78 48 00 ENDCHAR STARTCHAR X ENCODING 183 SWIDTH 563 0 DWIDTH 5 0 BBX 5 8 0 -2 BITMAP 48 48 48 30 48 48 48 00 ENDCHAR STARTCHAR Y ENCODING 184 SWIDTH 563 0 DWIDTH 5 0 BBX 5 8 0 -2 BITMAP 48 48 48 38 08 08 70 00 ENDCHAR STARTCHAR Z ENCODING 185 SWIDTH 563 0 DWIDTH 5 0 BBX 5 8 0 -2 BITMAP 78 08 10 20 20 40 78 00 ENDCHAR STARTCHAR AE ENCODING 186 SWIDTH 563 0 DWIDTH 5 0 BBX 5 8 0 -2 BITMAP 38 50 50 78 50 50 58 00 ENDCHAR STARTCHAR Ooblique ENCODING 187 SWIDTH 563 0 DWIDTH 5 0 BBX 5 8 0 -2 BITMAP 30 48 58 78 68 48 30 00 ENDCHAR STARTCHAR Aring ENCODING 188 SWIDTH 563 0 DWIDTH 5 0 BBX 5 8 0 -2 BITMAP 30 30 48 48 78 48 48 00 ENDCHAR STARTCHAR Ccedilla ENCODING 189 SWIDTH 563 0 DWIDTH 5 0 BBX 5 8 0 -2 BITMAP 30 48 40 40 40 48 30 10 ENDCHAR STARTCHAR semicolon ENCODING 190 SWIDTH 563 0 DWIDTH 5 0 BBX 5 8 0 -2 BITMAP 00 00 20 20 00 20 20 40 ENDCHAR STARTCHAR asterisk ENCODING 191 SWIDTH 563 0 DWIDTH 5 0 BBX 5 8 0 -2 BITMAP 00 20 a8 70 a8 20 00 00 ENDCHAR STARTCHAR c0 ENCODING 192 SWIDTH 563 0 DWIDTH 5 0 BBX 5 8 0 -2 BITMAP 00 00 00 00 00 00 00 00 ENDCHAR STARTCHAR c1 ENCODING 193 SWIDTH 563 0 DWIDTH 5 0 BBX 5 8 0 -2 BITMAP 00 00 00 00 00 00 00 00 ENDCHAR STARTCHAR c2 ENCODING 194 SWIDTH 563 0 DWIDTH 5 0 BBX 5 8 0 -2 BITMAP 00 00 00 00 00 00 00 00 ENDCHAR STARTCHAR c3 ENCODING 195 SWIDTH 563 0 DWIDTH 5 0 BBX 5 8 0 -2 BITMAP 00 00 00 00 00 00 00 00 ENDCHAR STARTCHAR c4 ENCODING 196 SWIDTH 563 0 DWIDTH 5 0 BBX 5 8 0 -2 BITMAP 00 00 00 00 00 00 00 00 ENDCHAR STARTCHAR c5 ENCODING 197 SWIDTH 563 0 DWIDTH 5 0 BBX 5 8 0 -2 BITMAP 00 00 00 00 00 00 00 00 ENDCHAR STARTCHAR c6 ENCODING 198 SWIDTH 563 0 DWIDTH 5 0 BBX 5 8 0 -2 BITMAP 00 00 00 00 00 00 00 00 ENDCHAR STARTCHAR c7 ENCODING 199 SWIDTH 563 0 DWIDTH 5 0 BBX 5 8 0 -2 BITMAP 00 00 00 00 00 00 00 00 ENDCHAR STARTCHAR c8 ENCODING 200 SWIDTH 563 0 DWIDTH 5 0 BBX 5 8 0 -2 BITMAP 00 00 00 00 00 00 00 00 ENDCHAR STARTCHAR c9 ENCODING 201 SWIDTH 563 0 DWIDTH 5 0 BBX 5 8 0 -2 BITMAP 00 00 00 00 00 00 00 00 ENDCHAR STARTCHAR ca ENCODING 202 SWIDTH 563 0 DWIDTH 5 0 BBX 5 8 0 -2 BITMAP 00 00 00 00 00 00 00 00 ENDCHAR STARTCHAR cb ENCODING 203 SWIDTH 563 0 DWIDTH 5 0 BBX 5 8 0 -2 BITMAP 00 00 00 00 00 00 00 00 ENDCHAR STARTCHAR cc ENCODING 204 SWIDTH 563 0 DWIDTH 5 0 BBX 5 8 0 -2 BITMAP 00 00 00 00 00 00 00 00 ENDCHAR STARTCHAR cd ENCODING 205 SWIDTH 563 0 DWIDTH 5 0 BBX 5 8 0 -2 BITMAP 00 00 00 00 00 00 00 00 ENDCHAR STARTCHAR ce ENCODING 206 SWIDTH 563 0 DWIDTH 5 0 BBX 5 8 0 -2 BITMAP 00 00 00 00 00 00 00 00 ENDCHAR STARTCHAR cf ENCODING 207 SWIDTH 563 0 DWIDTH 5 0 BBX 5 8 0 -2 BITMAP 00 00 00 00 00 00 00 00 ENDCHAR STARTCHAR copyright ENCODING 208 SWIDTH 563 0 DWIDTH 5 0 BBX 5 8 0 -2 BITMAP 70 88 a8 c8 a8 88 70 00 ENDCHAR STARTCHAR registered ENCODING 209 SWIDTH 563 0 DWIDTH 5 0 BBX 5 8 0 -2 BITMAP 70 88 e8 e8 d8 88 70 00 ENDCHAR STARTCHAR boxA ENCODING 210 SWIDTH 563 0 DWIDTH 5 0 BBX 5 8 0 -2 BITMAP 40 a0 e0 a0 f8 88 f8 00 ENDCHAR STARTCHAR insert ENCODING 211 SWIDTH 563 0 DWIDTH 5 0 BBX 5 8 0 -2 BITMAP 00 20 70 d8 88 00 00 00 ENDCHAR STARTCHAR boxB ENCODING 212 SWIDTH 563 0 DWIDTH 5 0 BBX 5 8 0 -2 BITMAP 30 28 30 28 f8 88 f8 00 ENDCHAR STARTCHAR box6 ENCODING 213 SWIDTH 563 0 DWIDTH 5 0 BBX 5 8 0 -2 BITMAP f8 a8 c8 c8 f8 d8 f8 f8 ENDCHAR STARTCHAR plusminus ENCODING 214 SWIDTH 563 0 DWIDTH 5 0 BBX 5 8 0 -2 BITMAP 00 20 70 20 00 70 00 00 ENDCHAR STARTCHAR ETH ENCODING 215 SWIDTH 563 0 DWIDTH 5 0 BBX 5 8 0 -2 BITMAP 70 28 28 78 28 28 70 00 ENDCHAR STARTCHAR rightarrow ENCODING 216 SWIDTH 563 0 DWIDTH 5 0 BBX 5 8 0 -2 BITMAP 00 00 10 f8 10 00 00 00 ENDCHAR STARTCHAR THORN ENCODING 217 SWIDTH 563 0 DWIDTH 5 0 BBX 5 8 0 -2 BITMAP 40 70 48 48 70 40 40 00 ENDCHAR STARTCHAR upshift ENCODING 218 SWIDTH 563 0 DWIDTH 5 0 BBX 5 8 0 -2 BITMAP 20 50 88 d8 50 50 70 00 ENDCHAR STARTCHAR human ENCODING 219 SWIDTH 563 0 DWIDTH 5 0 BBX 5 8 0 -2 BITMAP 70 20 f8 20 20 50 88 00 ENDCHAR STARTCHAR underB ENCODING 220 SWIDTH 563 0 DWIDTH 5 0 BBX 5 8 0 -2 BITMAP 60 50 60 50 f8 00 00 00 ENDCHAR STARTCHAR downshift ENCODING 221 SWIDTH 563 0 DWIDTH 5 0 BBX 5 8 0 -2 BITMAP 70 50 50 d8 88 50 20 00 ENDCHAR STARTCHAR boxquestion ENCODING 222 SWIDTH 563 0 DWIDTH 5 0 BBX 5 8 0 -2 BITMAP f8 a8 d8 98 a8 88 a8 f8 ENDCHAR STARTCHAR boxsolid ENCODING 223 SWIDTH 563 0 DWIDTH 5 0 BBX 5 8 0 -2 BITMAP f8 f8 f8 f8 f8 f8 f8 f8 ENDCHAR STARTCHAR e0 ENCODING 224 SWIDTH 563 0 DWIDTH 5 0 BBX 5 8 0 -2 BITMAP 00 00 00 00 00 00 00 00 ENDCHAR STARTCHAR e1 ENCODING 225 SWIDTH 563 0 DWIDTH 5 0 BBX 5 8 0 -2 BITMAP 00 00 00 00 00 00 00 00 ENDCHAR STARTCHAR e2 ENCODING 226 SWIDTH 563 0 DWIDTH 5 0 BBX 5 8 0 -2 BITMAP 00 00 00 00 00 00 00 00 ENDCHAR STARTCHAR e3 ENCODING 227 SWIDTH 563 0 DWIDTH 5 0 BBX 5 8 0 -2 BITMAP 00 00 00 00 00 00 00 00 ENDCHAR STARTCHAR e4 ENCODING 228 SWIDTH 563 0 DWIDTH 5 0 BBX 5 8 0 -2 BITMAP 00 00 00 00 00 00 00 00 ENDCHAR STARTCHAR e5 ENCODING 229 SWIDTH 563 0 DWIDTH 5 0 BBX 5 8 0 -2 BITMAP 00 00 00 00 00 00 00 00 ENDCHAR STARTCHAR e6 ENCODING 230 SWIDTH 563 0 DWIDTH 5 0 BBX 5 8 0 -2 BITMAP 00 00 00 00 00 00 00 00 ENDCHAR STARTCHAR e7 ENCODING 231 SWIDTH 563 0 DWIDTH 5 0 BBX 5 8 0 -2 BITMAP 00 00 00 00 00 00 00 00 ENDCHAR STARTCHAR e8 ENCODING 232 SWIDTH 563 0 DWIDTH 5 0 BBX 5 8 0 -2 BITMAP 00 00 00 00 00 00 00 00 ENDCHAR STARTCHAR e9 ENCODING 233 SWIDTH 563 0 DWIDTH 5 0 BBX 5 8 0 -2 BITMAP 00 00 00 00 00 00 00 00 ENDCHAR STARTCHAR ea ENCODING 234 SWIDTH 563 0 DWIDTH 5 0 BBX 5 8 0 -2 BITMAP 00 00 00 00 00 00 00 00 ENDCHAR STARTCHAR eb ENCODING 235 SWIDTH 563 0 DWIDTH 5 0 BBX 5 8 0 -2 BITMAP 00 00 00 00 00 00 00 00 ENDCHAR STARTCHAR ec ENCODING 236 SWIDTH 563 0 DWIDTH 5 0 BBX 5 8 0 -2 BITMAP 00 00 00 00 00 00 00 00 ENDCHAR STARTCHAR ed ENCODING 237 SWIDTH 563 0 DWIDTH 5 0 BBX 5 8 0 -2 BITMAP 00 00 00 00 00 00 00 00 ENDCHAR STARTCHAR ee ENCODING 238 SWIDTH 563 0 DWIDTH 5 0 BBX 5 8 0 -2 BITMAP 00 00 00 00 00 00 00 00 ENDCHAR STARTCHAR ef ENCODING 239 SWIDTH 563 0 DWIDTH 5 0 BBX 5 8 0 -2 BITMAP 00 00 00 00 00 00 00 00 ENDCHAR STARTCHAR badcommhi ENCODING 240 SWIDTH 563 0 DWIDTH 5 0 BBX 5 8 0 -2 BITMAP 40 40 20 f8 10 10 08 00 ENDCHAR STARTCHAR commhi ENCODING 241 SWIDTH 563 0 DWIDTH 5 0 BBX 5 8 0 -2 BITMAP 00 00 00 f8 00 00 00 00 ENDCHAR STARTCHAR commjag ENCODING 242 SWIDTH 563 0 DWIDTH 5 0 BBX 5 8 0 -2 BITMAP 00 00 00 f0 20 40 f8 00 ENDCHAR STARTCHAR commlo ENCODING 243 SWIDTH 563 0 DWIDTH 5 0 BBX 5 8 0 -2 BITMAP 00 00 00 00 00 00 f8 00 ENDCHAR STARTCHAR clockleft ENCODING 244 SWIDTH 563 0 DWIDTH 5 0 BBX 5 8 0 -2 BITMAP 08 20 00 40 48 08 28 08 ENDCHAR STARTCHAR clockright ENCODING 245 SWIDTH 563 0 DWIDTH 5 0 BBX 5 8 0 -2 BITMAP 00 40 40 a0 20 00 40 00 ENDCHAR STARTCHAR lock ENCODING 246 SWIDTH 563 0 DWIDTH 5 0 BBX 5 8 0 -2 BITMAP 88 88 50 20 20 50 88 88 ENDCHAR STARTCHAR eth ENCODING 247 SWIDTH 563 0 DWIDTH 5 0 BBX 5 8 0 -2 BITMAP 10 18 38 48 48 48 30 00 ENDCHAR STARTCHAR leftarrow ENCODING 248 SWIDTH 563 0 DWIDTH 5 0 BBX 5 8 0 -2 BITMAP 00 00 40 f8 40 00 00 00 ENDCHAR STARTCHAR thorn ENCODING 249 SWIDTH 563 0 DWIDTH 5 0 BBX 5 8 0 -2 BITMAP 00 40 70 48 48 48 70 40 ENDCHAR STARTCHAR keyleft ENCODING 250 SWIDTH 563 0 DWIDTH 5 0 BBX 5 8 0 -2 BITMAP 00 00 70 58 70 00 00 00 ENDCHAR STARTCHAR keyright ENCODING 251 SWIDTH 563 0 DWIDTH 5 0 BBX 5 8 0 -2 BITMAP 00 00 00 f0 30 10 00 00 ENDCHAR STARTCHAR box4 ENCODING 252 SWIDTH 563 0 DWIDTH 5 0 BBX 5 8 0 -2 BITMAP f8 d8 d8 f8 98 98 98 f8 ENDCHAR STARTCHAR underA ENCODING 253 SWIDTH 563 0 DWIDTH 5 0 BBX 5 8 0 -2 BITMAP 20 20 70 50 f8 00 00 00 ENDCHAR STARTCHAR magcard ENCODING 254 SWIDTH 563 0 DWIDTH 5 0 BBX 5 8 0 -2 BITMAP 00 00 f8 88 f8 f8 00 00 ENDCHAR STARTCHAR boxhuman ENCODING 255 SWIDTH 563 0 DWIDTH 5 0 BBX 5 8 0 -2 BITMAP f8 a8 a8 f8 a8 a8 d8 f8 ENDCHAR STARTCHAR apl_space ENCODING 272 SWIDTH 563 0 DWIDTH 5 0 BBX 5 8 0 -2 BITMAP 00 00 00 00 00 00 00 00 ENDCHAR STARTCHAR apl_bracketright ENCODING 316 SWIDTH 563 0 DWIDTH 5 0 BBX 5 8 0 -2 BITMAP 60 20 20 20 20 20 60 00 ENDCHAR STARTCHAR apl_bracketleft ENCODING 328 SWIDTH 563 0 DWIDTH 5 0 BBX 5 8 0 -2 BITMAP 30 20 20 20 20 20 30 00 ENDCHAR STARTCHAR apl_stile ENCODING 347 SWIDTH 563 0 DWIDTH 5 0 BBX 5 8 0 -2 BITMAP 20 20 20 20 20 20 20 20 ENDCHAR STARTCHAR apl_2vertical ENCODING 384 SWIDTH 563 0 DWIDTH 5 0 BBX 5 8 0 -2 BITMAP 50 50 50 50 50 50 50 50 ENDCHAR STARTCHAR apl_2horizontal ENCODING 385 SWIDTH 563 0 DWIDTH 5 0 BBX 5 8 0 -2 BITMAP 00 f8 00 00 00 00 f8 00 ENDCHAR STARTCHAR apl_leftvbar ENCODING 386 SWIDTH 563 0 DWIDTH 5 0 BBX 5 8 0 -2 BITMAP 40 40 40 40 40 40 40 40 ENDCHAR STARTCHAR apl_rightvbar ENCODING 387 SWIDTH 563 0 DWIDTH 5 0 BBX 5 8 0 -2 BITMAP 10 10 10 10 10 10 10 10 ENDCHAR STARTCHAR apl_midvbar ENCODING 388 SWIDTH 563 0 DWIDTH 5 0 BBX 5 8 0 -2 BITMAP 20 20 20 20 20 20 20 20 ENDCHAR STARTCHAR apl_leftsolid ENCODING 393 SWIDTH 563 0 DWIDTH 5 0 BBX 5 8 0 -2 BITMAP e0 e0 e0 e0 e0 e0 e0 e0 ENDCHAR STARTCHAR apl_rightsolid ENCODING 394 SWIDTH 563 0 DWIDTH 5 0 BBX 5 8 0 -2 BITMAP 38 38 38 38 38 38 38 38 ENDCHAR STARTCHAR apl_topsolid ENCODING 395 SWIDTH 563 0 DWIDTH 5 0 BBX 5 8 0 -2 BITMAP f8 f8 f8 f8 00 00 00 00 ENDCHAR STARTCHAR apl_bottomsolid ENCODING 396 SWIDTH 563 0 DWIDTH 5 0 BBX 5 8 0 -2 BITMAP 00 00 00 00 f8 f8 f8 f8 ENDCHAR STARTCHAR apl_solid ENCODING 397 SWIDTH 563 0 DWIDTH 5 0 BBX 5 8 0 -2 BITMAP f8 f8 f8 f8 f8 f8 f8 f8 ENDCHAR STARTCHAR apl_midhbar ENCODING 402 SWIDTH 563 0 DWIDTH 5 0 BBX 5 8 0 -2 BITMAP 00 00 00 f8 00 00 00 00 ENDCHAR STARTCHAR apl_lowerleft ENCODING 419 SWIDTH 563 0 DWIDTH 5 0 BBX 5 8 0 -2 BITMAP 20 20 20 38 00 00 00 00 ENDCHAR STARTCHAR apl_upperleft ENCODING 420 SWIDTH 563 0 DWIDTH 5 0 BBX 5 8 0 -2 BITMAP 00 00 00 38 20 20 20 20 ENDCHAR STARTCHAR apl_leftjoin ENCODING 421 SWIDTH 563 0 DWIDTH 5 0 BBX 5 8 0 -2 BITMAP 20 20 20 38 20 20 20 20 ENDCHAR STARTCHAR apl_bottomjoin ENCODING 422 SWIDTH 563 0 DWIDTH 5 0 BBX 5 8 0 -2 BITMAP 20 20 20 f8 00 00 00 00 ENDCHAR STARTCHAR apl_intersect ENCODING 427 SWIDTH 563 0 DWIDTH 5 0 BBX 5 8 0 -2 BITMAP 20 20 20 f8 20 20 20 20 ENDCHAR STARTCHAR apl_lowerright ENCODING 428 SWIDTH 563 0 DWIDTH 5 0 BBX 5 8 0 -2 BITMAP 20 20 20 e0 00 00 00 00 ENDCHAR STARTCHAR apl_upperright ENCODING 429 SWIDTH 563 0 DWIDTH 5 0 BBX 5 8 0 -2 BITMAP 00 00 00 e0 20 20 20 20 ENDCHAR STARTCHAR apl_rightjoin ENCODING 430 SWIDTH 563 0 DWIDTH 5 0 BBX 5 8 0 -2 BITMAP 20 20 20 e0 20 20 20 20 ENDCHAR STARTCHAR apl_topjoin ENCODING 431 SWIDTH 563 0 DWIDTH 5 0 BBX 5 8 0 -2 BITMAP 00 00 00 f8 20 20 20 20 ENDCHAR STARTCHAR dec_solid ENCODING 512 SWIDTH 563 0 DWIDTH 5 0 BBX 5 8 0 -2 BITMAP 70 70 70 70 70 70 70 70 ENDCHAR STARTCHAR dec_filled_circle ENCODING 513 SWIDTH 563 0 DWIDTH 5 0 BBX 5 8 0 -2 BITMAP 00 00 20 70 20 00 00 00 ENDCHAR STARTCHAR dec_halftone_block ENCODING 514 SWIDTH 563 0 DWIDTH 5 0 BBX 5 8 0 -2 BITMAP a8 50 a8 50 a8 50 a8 50 ENDCHAR STARTCHAR dec_ht ENCODING 515 SWIDTH 563 0 DWIDTH 5 0 BBX 5 8 0 -2 BITMAP 00 60 60 60 30 30 30 00 ENDCHAR STARTCHAR dec_ff ENCODING 516 SWIDTH 563 0 DWIDTH 5 0 BBX 5 8 0 -2 BITMAP 00 60 60 40 30 30 20 00 ENDCHAR STARTCHAR dec_cr ENCODING 517 SWIDTH 563 0 DWIDTH 5 0 BBX 5 8 0 -2 BITMAP 00 60 40 60 30 30 30 00 ENDCHAR STARTCHAR dec_lf ENCODING 518 SWIDTH 563 0 DWIDTH 5 0 BBX 5 8 0 -2 BITMAP 00 40 40 60 30 30 20 00 ENDCHAR STARTCHAR dec_degree ENCODING 519 SWIDTH 563 0 DWIDTH 5 0 BBX 5 8 0 -2 BITMAP 20 50 20 00 00 00 00 00 ENDCHAR STARTCHAR dec_plusminus ENCODING 520 SWIDTH 563 0 DWIDTH 5 0 BBX 5 8 0 -2 BITMAP 00 20 70 20 00 70 00 00 ENDCHAR STARTCHAR dec_nl ENCODING 521 SWIDTH 563 0 DWIDTH 5 0 BBX 5 8 0 -2 BITMAP 00 60 60 60 20 20 30 00 ENDCHAR STARTCHAR dec_vt ENCODING 522 SWIDTH 563 0 DWIDTH 5 0 BBX 5 8 0 -2 BITMAP 00 60 60 60 30 30 30 00 ENDCHAR STARTCHAR dec_lowerright ENCODING 523 SWIDTH 563 0 DWIDTH 5 0 BBX 5 8 0 -2 BITMAP 20 20 20 e0 00 00 00 00 ENDCHAR STARTCHAR dec_upperright ENCODING 524 SWIDTH 563 0 DWIDTH 5 0 BBX 5 8 0 -2 BITMAP 00 00 00 e0 20 20 20 20 ENDCHAR STARTCHAR dec_upperleft ENCODING 525 SWIDTH 563 0 DWIDTH 5 0 BBX 5 8 0 -2 BITMAP 00 00 00 38 20 20 20 20 ENDCHAR STARTCHAR dec_lowerleft ENCODING 526 SWIDTH 563 0 DWIDTH 5 0 BBX 5 8 0 -2 BITMAP 20 20 20 38 00 00 00 00 ENDCHAR STARTCHAR dec_intersect ENCODING 527 SWIDTH 563 0 DWIDTH 5 0 BBX 5 8 0 -2 BITMAP 20 20 20 f8 20 20 20 20 ENDCHAR STARTCHAR dec_hbar1 ENCODING 528 SWIDTH 563 0 DWIDTH 5 0 BBX 5 8 0 -2 BITMAP 00 f8 00 00 00 00 00 00 ENDCHAR STARTCHAR dec_hbar2 ENCODING 529 SWIDTH 563 0 DWIDTH 5 0 BBX 5 8 0 -2 BITMAP 00 00 f8 00 00 00 00 00 ENDCHAR STARTCHAR dec_hbar3 ENCODING 530 SWIDTH 563 0 DWIDTH 5 0 BBX 5 8 0 -2 BITMAP 00 00 00 f8 00 00 00 00 ENDCHAR STARTCHAR dec_hbar4 ENCODING 531 SWIDTH 563 0 DWIDTH 5 0 BBX 5 8 0 -2 BITMAP 00 00 00 00 f8 00 00 00 ENDCHAR STARTCHAR dec_hbar5 ENCODING 532 SWIDTH 563 0 DWIDTH 5 0 BBX 5 8 0 -2 BITMAP 00 00 00 00 00 f8 00 00 ENDCHAR STARTCHAR dec_leftjoin ENCODING 533 SWIDTH 563 0 DWIDTH 5 0 BBX 5 8 0 -2 BITMAP 20 20 20 38 20 20 20 20 ENDCHAR STARTCHAR dec_rightjoin ENCODING 534 SWIDTH 563 0 DWIDTH 5 0 BBX 5 8 0 -2 BITMAP 20 20 20 e0 20 20 20 20 ENDCHAR STARTCHAR dec_bottomjoin ENCODING 535 SWIDTH 563 0 DWIDTH 5 0 BBX 5 8 0 -2 BITMAP 20 20 20 f8 00 00 00 00 ENDCHAR STARTCHAR dec_topjoin ENCODING 536 SWIDTH 563 0 DWIDTH 5 0 BBX 5 8 0 -2 BITMAP 00 00 00 f8 20 20 20 20 ENDCHAR STARTCHAR dec_vbar ENCODING 537 SWIDTH 563 0 DWIDTH 5 0 BBX 5 8 0 -2 BITMAP 20 20 20 20 20 20 20 20 ENDCHAR STARTCHAR dec_notgreater ENCODING 538 SWIDTH 563 0 DWIDTH 5 0 BBX 5 8 0 -2 BITMAP 00 10 20 40 20 10 70 00 ENDCHAR STARTCHAR dec_notless ENCODING 539 SWIDTH 563 0 DWIDTH 5 0 BBX 5 8 0 -2 BITMAP 00 40 20 10 20 40 70 00 ENDCHAR STARTCHAR dec_pi ENCODING 540 SWIDTH 563 0 DWIDTH 5 0 BBX 5 8 0 -2 BITMAP 00 00 f8 50 50 50 50 00 ENDCHAR STARTCHAR dec_notequal ENCODING 541 SWIDTH 563 0 DWIDTH 5 0 BBX 5 8 0 -2 BITMAP 00 10 70 20 70 40 00 00 ENDCHAR STARTCHAR dec_sterling ENCODING 542 SWIDTH 563 0 DWIDTH 5 0 BBX 5 8 0 -2 BITMAP 30 20 20 70 20 68 70 00 ENDCHAR STARTCHAR dec_periodcentered ENCODING 543 SWIDTH 563 0 DWIDTH 5 0 BBX 5 8 0 -2 BITMAP 00 00 20 20 00 00 00 00 ENDCHAR ENDFONT suite3270-4.1/x3270/3270h.bdf000066400000000000000000001017611413735575200150500ustar00rootroot00000000000000STARTFONT 2.1 COMMENT "14-point 3270 font with Hebrew characters" COMMENT "Uses nonstandard ordering:" COMMENT " Page 0: EBCDIC US-International set, CG order" COMMENT " Page 1: EBCDIC APL/APL2 set, CG order (incomplete)" COMMENT " Page 2: (first 16 characters only) DEC line-drawing characters from" COMMENT " fixed-width X fonts" COMMENT "" COMMENT "Copyright (c) 1993-2009, Paul Mattes." COMMENT "Copyright (c) 1995, Roman Mitnitski" COMMENT "Copyright (c) 1990, Jeff Sparkes." COMMENT "Copyright (c) 1989, Georgia Tech Research Corporation (GTRC)," COMMENT " Atlanta, GA 30332." COMMENT "All rights reserved." COMMENT "" COMMENT "Redistribution and use in source and binary forms, with or" COMMENT "without modification, are permitted provided that the following" COMMENT "conditions are met:" COMMENT " * Redistributions of source code must retain the above" COMMENT " copyright notice, this list of conditions and the following" COMMENT " disclaimer." COMMENT " * Redistributions in binary form must reproduce the above" COMMENT " copyright notice, this list of conditions and the following" COMMENT " disclaimer in the documentation and/or other materials" COMMENT " provided with the distribution." COMMENT " * Neither the names of Paul Mattes, Roman Mitnitski, Jeff " COMMENT " Sparkes, GTRC nor their contributors may be used to endorse" COMMENT " or promote products derived from this software without" COMMENT " specific prior written permission." COMMENT "" COMMENT "THIS SOFTWARE IS PROVIDED BY PAUL MATTES, ROMAN MITNITSKI, JEFF " COMMENT "SPARKES AND GTRC 'AS IS' AND ANY EXPRESS OR IMPLIED WARRANTIES," COMMENT "INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF " COMMENT "MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED." COMMENT "IN NO EVENT SHALL PAUL MATTES, ROMAN MITNITSKI, JEFF SPARKES OR GTRC" COMMENT "BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY," COMMENT "OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO," COMMENT "PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR " COMMENT "PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY" COMMENT "OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT" COMMENT "(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE" COMMENT "USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH" COMMENT "DAMAGE." FONT 3270h SIZE 14 72 72 FONTBOUNDINGBOX 9 14 0 -3 STARTPROPERTIES 19 FONTNAME_REGISTRY "" FOUNDRY "Misc" FAMILY_NAME "3270" WEIGHT_NAME "Medium" SLANT "R" SETWIDTH_NAME "Normal" PIXEL_SIZE 14 POINT_SIZE 140 RESOLUTION_X 72 RESOLUTION_Y 72 SPACING "C" CHARSET_REGISTRY "3270cg" CHARSET_ENCODING "8" AVERAGE_WIDTH 90 DEFAULT_CHAR 0 FONT_ASCENT 11 FONT_DESCENT 3 CAP_HEIGHT 9 X_HEIGHT 7 ENDPROPERTIES CHARS 256 STARTCHAR null ENCODING 0 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR nobreakspace ENCODING 1 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR ff ENCODING 2 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR cr ENCODING 3 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR nl ENCODING 4 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR em ENCODING 5 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR eightones ENCODING 6 SWIDTH 562 0 DWIDTH 9 0 BBX 7 7 1 1 BITMAP 38 7c fe fe fe 7c 38 ENDCHAR STARTCHAR hyphen ENCODING 7 SWIDTH 562 0 DWIDTH 9 0 BBX 5 1 2 4 BITMAP f8 ENDCHAR STARTCHAR greater ENCODING 8 SWIDTH 562 0 DWIDTH 9 0 BBX 5 9 2 0 BITMAP 80 40 20 10 08 10 20 40 80 ENDCHAR STARTCHAR less ENCODING 9 SWIDTH 562 0 DWIDTH 9 0 BBX 5 9 2 0 BITMAP 08 10 20 40 80 40 20 10 08 ENDCHAR STARTCHAR bracketleft ENCODING 10 SWIDTH 562 0 DWIDTH 9 0 BBX 3 11 3 -1 BITMAP e0 80 80 80 80 80 80 80 80 80 e0 ENDCHAR STARTCHAR bracketright ENCODING 11 SWIDTH 562 0 DWIDTH 9 0 BBX 3 11 3 -1 BITMAP e0 20 20 20 20 20 20 20 20 20 e0 ENDCHAR STARTCHAR parenright ENCODING 12 SWIDTH 562 0 DWIDTH 9 0 BBX 3 9 3 0 BITMAP 80 40 20 20 20 20 20 40 80 ENDCHAR STARTCHAR parenleft ENCODING 13 SWIDTH 562 0 DWIDTH 9 0 BBX 3 9 3 0 BITMAP 20 40 80 80 80 80 80 40 20 ENDCHAR STARTCHAR braceright ENCODING 14 SWIDTH 562 0 DWIDTH 9 0 BBX 4 11 2 -1 BITMAP c0 20 20 20 20 10 20 20 20 20 c0 ENDCHAR STARTCHAR braceleft ENCODING 15 SWIDTH 562 0 DWIDTH 9 0 BBX 4 11 2 -1 BITMAP 30 40 40 40 40 80 40 40 40 40 30 ENDCHAR STARTCHAR space ENCODING 16 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR equal ENCODING 17 SWIDTH 562 0 DWIDTH 9 0 BBX 7 4 1 3 BITMAP fe 00 00 fe ENDCHAR STARTCHAR apostrophe ENCODING 18 SWIDTH 562 0 DWIDTH 9 0 BBX 1 3 4 7 BITMAP 80 80 80 ENDCHAR STARTCHAR quotedbl ENCODING 19 SWIDTH 562 0 DWIDTH 9 0 BBX 4 3 2 7 BITMAP 90 90 90 ENDCHAR STARTCHAR slash ENCODING 20 SWIDTH 562 0 DWIDTH 9 0 BBX 7 7 1 1 BITMAP 02 04 08 10 20 40 80 ENDCHAR STARTCHAR backslash ENCODING 21 SWIDTH 562 0 DWIDTH 9 0 BBX 7 7 1 1 BITMAP 80 40 20 10 08 04 02 ENDCHAR STARTCHAR bar ENCODING 22 SWIDTH 562 0 DWIDTH 9 0 BBX 1 13 4 -2 BITMAP 80 80 80 80 80 80 80 80 80 80 80 80 80 ENDCHAR STARTCHAR brokenbar ENCODING 23 SWIDTH 562 0 DWIDTH 9 0 BBX 1 12 4 -2 BITMAP 80 80 80 80 80 00 00 80 80 80 80 80 ENDCHAR STARTCHAR question ENCODING 24 SWIDTH 562 0 DWIDTH 9 0 BBX 6 10 2 0 BITMAP 78 84 84 08 10 20 20 00 00 20 ENDCHAR STARTCHAR exclam ENCODING 25 SWIDTH 562 0 DWIDTH 9 0 BBX 1 10 4 0 BITMAP 80 80 80 80 80 80 80 00 00 80 ENDCHAR STARTCHAR dollar ENCODING 26 SWIDTH 562 0 DWIDTH 9 0 BBX 7 11 1 -1 BITMAP 10 10 7e 90 90 7c 12 12 fc 10 10 ENDCHAR STARTCHAR cent ENCODING 27 SWIDTH 562 0 DWIDTH 9 0 BBX 6 9 1 1 BITMAP 10 10 7c 90 90 90 7c 10 10 ENDCHAR STARTCHAR sterling ENCODING 28 SWIDTH 562 0 DWIDTH 9 0 BBX 7 10 1 0 BITMAP 18 24 20 20 f8 20 20 20 e2 dc ENDCHAR STARTCHAR yen ENCODING 29 SWIDTH 562 0 DWIDTH 9 0 BBX 7 10 1 0 BITMAP 82 44 28 10 fe 10 10 fe 10 10 ENDCHAR STARTCHAR paragraph ENCODING 30 SWIDTH 562 0 DWIDTH 9 0 BBX 6 11 1 -1 BITMAP f0 88 88 88 f0 80 88 9c 88 88 08 ENDCHAR STARTCHAR currency ENCODING 31 SWIDTH 562 0 DWIDTH 9 0 BBX 7 9 1 0 BITMAP 82 44 38 44 44 44 38 44 82 ENDCHAR STARTCHAR 0 ENCODING 32 SWIDTH 562 0 DWIDTH 9 0 BBX 7 10 1 0 BITMAP 38 44 82 82 92 92 82 82 44 38 ENDCHAR STARTCHAR 1 ENCODING 33 SWIDTH 562 0 DWIDTH 9 0 BBX 3 10 2 0 BITMAP 20 60 a0 20 20 20 20 20 20 20 ENDCHAR STARTCHAR 2 ENCODING 34 SWIDTH 562 0 DWIDTH 9 0 BBX 7 10 1 0 BITMAP 3c 42 82 02 04 08 10 20 40 fe ENDCHAR STARTCHAR 3 ENCODING 35 SWIDTH 562 0 DWIDTH 9 0 BBX 7 10 1 0 BITMAP 7e 02 04 08 18 04 02 02 84 78 ENDCHAR STARTCHAR 4 ENCODING 36 SWIDTH 562 0 DWIDTH 9 0 BBX 7 10 1 0 BITMAP 0c 14 24 44 84 84 fe 04 04 04 ENDCHAR STARTCHAR 5 ENCODING 37 SWIDTH 562 0 DWIDTH 9 0 BBX 7 10 1 0 BITMAP fe 80 80 f8 04 02 02 02 04 f8 ENDCHAR STARTCHAR 6 ENCODING 38 SWIDTH 562 0 DWIDTH 9 0 BBX 7 10 1 0 BITMAP 20 40 80 80 b8 c4 82 82 44 38 ENDCHAR STARTCHAR 7 ENCODING 39 SWIDTH 562 0 DWIDTH 9 0 BBX 7 10 1 0 BITMAP fe 02 04 08 10 20 20 20 20 20 ENDCHAR STARTCHAR 8 ENCODING 40 SWIDTH 562 0 DWIDTH 9 0 BBX 7 10 1 0 BITMAP 38 44 44 44 38 44 82 82 44 38 ENDCHAR STARTCHAR 9 ENCODING 41 SWIDTH 562 0 DWIDTH 9 0 BBX 7 10 1 0 BITMAP 3c 42 82 86 8a 72 02 02 02 04 ENDCHAR STARTCHAR ssharp ENCODING 42 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 1800 2400 4400 4800 4400 4200 4100 4100 5100 4e00 0000 0000 0000 ENDCHAR STARTCHAR section ENCODING 43 SWIDTH 562 0 DWIDTH 9 0 BBX 6 12 1 -2 BITMAP 38 40 40 a0 90 88 44 24 14 08 08 70 ENDCHAR STARTCHAR numbersign ENCODING 44 SWIDTH 562 0 DWIDTH 9 0 BBX 6 6 1 3 BITMAP 48 fc 48 48 fc 48 ENDCHAR STARTCHAR at ENCODING 45 SWIDTH 562 0 DWIDTH 9 0 BBX 7 10 1 0 BITMAP 7c 82 82 9a aa bc 80 80 80 7e ENDCHAR STARTCHAR percent ENCODING 46 SWIDTH 562 0 DWIDTH 9 0 BBX 7 11 1 -1 BITMAP 40 a0 42 04 08 10 20 40 84 0a 04 ENDCHAR STARTCHAR underscore ENCODING 47 SWIDTH 562 0 DWIDTH 9 0 BBX 7 1 1 -1 BITMAP fe ENDCHAR STARTCHAR ampersand ENCODING 48 SWIDTH 562 0 DWIDTH 9 0 BBX 7 10 1 -1 BITMAP 60 90 90 90 60 a2 94 88 74 02 ENDCHAR STARTCHAR minus ENCODING 49 SWIDTH 562 0 DWIDTH 9 0 BBX 5 1 2 4 BITMAP f8 ENDCHAR STARTCHAR period ENCODING 50 SWIDTH 562 0 DWIDTH 9 0 BBX 2 2 3 0 BITMAP c0 c0 ENDCHAR STARTCHAR comma ENCODING 51 SWIDTH 562 0 DWIDTH 9 0 BBX 4 4 2 -2 BITMAP 30 30 60 c0 ENDCHAR STARTCHAR colon ENCODING 52 SWIDTH 562 0 DWIDTH 9 0 BBX 2 6 3 0 BITMAP c0 c0 00 00 c0 c0 ENDCHAR STARTCHAR plus ENCODING 53 SWIDTH 562 0 DWIDTH 9 0 BBX 7 7 1 1 BITMAP 10 10 10 fe 10 10 10 ENDCHAR STARTCHAR notsign ENCODING 54 SWIDTH 562 0 DWIDTH 9 0 BBX 7 3 1 6 BITMAP fe 02 02 ENDCHAR STARTCHAR macron ENCODING 55 SWIDTH 562 0 DWIDTH 9 0 BBX 7 1 1 9 BITMAP fe ENDCHAR STARTCHAR degree ENCODING 56 SWIDTH 562 0 DWIDTH 9 0 BBX 4 4 2 6 BITMAP 60 90 90 60 ENDCHAR STARTCHAR periodcentered ENCODING 57 SWIDTH 562 0 DWIDTH 9 0 BBX 2 2 4 3 BITMAP c0 c0 ENDCHAR STARTCHAR asciicircum ENCODING 58 SWIDTH 562 0 DWIDTH 9 0 BBX 5 3 2 7 BITMAP 20 50 88 ENDCHAR STARTCHAR asciitilde ENCODING 59 SWIDTH 562 0 DWIDTH 9 0 BBX 7 3 1 7 BITMAP 60 92 0c ENDCHAR STARTCHAR diaeresis ENCODING 60 SWIDTH 562 0 DWIDTH 9 0 BBX 7 2 1 8 BITMAP c6 c6 ENDCHAR STARTCHAR grave ENCODING 61 SWIDTH 562 0 DWIDTH 9 0 BBX 3 3 3 7 BITMAP 80 40 20 ENDCHAR STARTCHAR acute ENCODING 62 SWIDTH 562 0 DWIDTH 9 0 BBX 3 3 3 7 BITMAP 20 40 80 ENDCHAR STARTCHAR cedilla ENCODING 63 SWIDTH 562 0 DWIDTH 9 0 BBX 3 4 2 -2 BITMAP 20 20 20 c0 ENDCHAR STARTCHAR hebrew_aleph ENCODING 64 SWIDTH 562 0 DWIDTH 9 0 BBX 9 13 0 -2 BITMAP 0000 2600 3200 3200 2a00 2a00 2400 2400 2200 3200 0000 0000 0000 ENDCHAR STARTCHAR hebrew_tet ENCODING 65 SWIDTH 562 0 DWIDTH 9 0 BBX 9 13 0 -2 BITMAP 0000 2c00 2a00 2a00 2a00 2200 2200 2200 2200 1c00 0000 0000 0000 ENDCHAR STARTCHAR hebrew_lamed ENCODING 66 SWIDTH 562 0 DWIDTH 9 0 BBX 9 13 0 -2 BITMAP 4000 4000 7e00 0200 0200 0200 0400 1800 1000 1800 0000 0000 0000 ENDCHAR STARTCHAR hebrew_ayin ENCODING 67 SWIDTH 562 0 DWIDTH 9 0 BBX 9 13 0 -2 BITMAP 0000 3600 1200 1200 1200 1200 1200 1200 1600 3c00 0000 0000 0000 ENDCHAR STARTCHAR hebrew_shin ENCODING 68 SWIDTH 562 0 DWIDTH 9 0 BBX 9 13 0 -2 BITMAP 0000 2a00 2a00 2a00 2a00 2a00 3200 2200 3600 1c00 0000 0000 0000 ENDCHAR STARTCHAR hebrew_dalet ENCODING 69 SWIDTH 562 0 DWIDTH 9 0 BBX 9 13 0 -2 BITMAP 0000 3e00 0400 0400 0400 0400 0400 0400 0400 0400 0000 0000 0000 ENDCHAR STARTCHAR hebrew_finalzade ENCODING 70 SWIDTH 562 0 DWIDTH 9 0 BBX 9 13 0 -2 BITMAP 0000 2200 2200 2200 2200 2400 3800 2000 2000 2000 2000 3000 0000 ENDCHAR STARTCHAR ydiaeresis ENCODING 71 SWIDTH 562 0 DWIDTH 9 0 BBX 6 13 1 -3 BITMAP 48 00 00 84 84 84 84 44 28 10 20 40 80 ENDCHAR STARTCHAR Yacute ENCODING 72 SWIDTH 562 0 DWIDTH 9 0 BBX 7 12 1 0 BITMAP 04 08 10 82 44 28 10 10 10 10 10 10 ENDCHAR STARTCHAR yacute ENCODING 73 SWIDTH 562 0 DWIDTH 9 0 BBX 6 14 1 -3 BITMAP 08 10 20 00 84 84 84 84 44 28 10 20 40 80 ENDCHAR STARTCHAR hebrew_yod ENCODING 74 SWIDTH 562 0 DWIDTH 9 0 BBX 9 13 0 -2 BITMAP 0000 1c00 0400 0400 0400 0400 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR onequarter ENCODING 75 SWIDTH 562 0 DWIDTH 9 0 BBX 7 9 1 0 BITMAP 40 c0 40 40 e4 0c 14 1e 04 ENDCHAR STARTCHAR onehalf ENCODING 76 SWIDTH 562 0 DWIDTH 9 0 BBX 7 9 1 0 BITMAP 40 c0 40 40 ec 02 04 08 0e ENDCHAR STARTCHAR threequarters ENCODING 77 SWIDTH 562 0 DWIDTH 9 0 BBX 7 9 1 0 BITMAP 60 90 20 90 64 0c 14 1e 04 ENDCHAR STARTCHAR udiaeresis ENCODING 78 SWIDTH 562 0 DWIDTH 9 0 BBX 7 10 1 0 BITMAP 48 00 00 84 84 84 84 84 84 7a ENDCHAR STARTCHAR hebrew_chet ENCODING 79 SWIDTH 562 0 DWIDTH 9 0 BBX 9 13 0 -2 BITMAP 0000 3c00 2200 2200 2200 2200 2200 2200 2200 2200 0000 0000 0000 ENDCHAR STARTCHAR hebrew_he ENCODING 80 SWIDTH 562 0 DWIDTH 9 0 BBX 9 13 0 -2 BITMAP 0000 3e00 0200 0200 2200 2200 2200 2200 2200 2200 0000 0000 0000 ENDCHAR STARTCHAR hebrew_kaph ENCODING 81 SWIDTH 562 0 DWIDTH 9 0 BBX 9 13 0 -2 BITMAP 0000 3c00 0200 0200 0200 0200 0200 0200 0200 3c00 0000 0000 0000 ENDCHAR STARTCHAR hebrew_finalnun ENCODING 82 SWIDTH 562 0 DWIDTH 9 0 BBX 9 13 0 -2 BITMAP 0000 1800 0400 0400 0400 0400 0400 0400 0400 0400 0400 0600 0000 ENDCHAR STARTCHAR hebrew_zade ENCODING 83 SWIDTH 562 0 DWIDTH 9 0 BBX 9 13 0 -2 BITMAP 0000 3600 1200 1200 0a00 0c00 0400 0200 0200 3e00 0000 0000 0000 ENDCHAR STARTCHAR mu ENCODING 84 SWIDTH 562 0 DWIDTH 9 0 BBX 7 9 1 -3 BITMAP 84 84 84 84 84 84 fa 80 80 ENDCHAR STARTCHAR hebrew_gimel ENCODING 85 SWIDTH 562 0 DWIDTH 9 0 BBX 9 13 0 -2 BITMAP 0000 1c00 0400 0400 0400 0400 0c00 1400 2200 2200 0000 0000 0000 ENDCHAR STARTCHAR hebrew_finalkaph ENCODING 86 SWIDTH 562 0 DWIDTH 9 0 BBX 9 13 0 -2 BITMAP 0000 3e00 0200 0200 0200 0200 0200 0200 0200 0200 0200 0300 0000 ENDCHAR STARTCHAR hebrew_mem ENCODING 87 SWIDTH 562 0 DWIDTH 9 0 BBX 9 13 0 -2 BITMAP 0000 6c00 3200 3200 2200 2200 2200 2200 2200 2e00 0000 0000 0000 ENDCHAR STARTCHAR hebrew_pe ENCODING 88 SWIDTH 562 0 DWIDTH 9 0 BBX 9 13 0 -2 BITMAP 0000 1c00 2200 2200 1200 3a00 0200 0200 0200 3c00 0000 0000 0000 ENDCHAR STARTCHAR ucircumflex ENCODING 89 SWIDTH 562 0 DWIDTH 9 0 BBX 6 10 1 0 BITMAP 20 50 00 88 88 88 88 88 88 74 ENDCHAR STARTCHAR hebrew_bet ENCODING 90 SWIDTH 562 0 DWIDTH 9 0 BBX 9 13 0 -2 BITMAP 0000 7c00 0200 0200 0200 0200 0200 0200 0200 7f00 0000 0000 0000 ENDCHAR STARTCHAR multiply ENCODING 91 SWIDTH 562 0 DWIDTH 9 0 BBX 5 5 2 2 BITMAP 88 50 20 50 88 ENDCHAR STARTCHAR hebrew_finalmem ENCODING 92 SWIDTH 562 0 DWIDTH 9 0 BBX 9 13 0 -2 BITMAP 0000 3c00 2200 2200 2200 2200 2200 2200 2200 3e00 0000 0000 0000 ENDCHAR STARTCHAR hebrew_finalpe ENCODING 93 SWIDTH 562 0 DWIDTH 9 0 BBX 9 13 0 -2 BITMAP 0000 1c00 2200 2200 1200 3a00 0200 0200 0200 0200 0200 0300 0000 ENDCHAR STARTCHAR hebrew_taw ENCODING 94 SWIDTH 562 0 DWIDTH 9 0 BBX 9 13 0 -2 BITMAP 0000 3c00 2200 2200 2200 2200 2200 2200 2200 6200 0000 0000 0000 ENDCHAR STARTCHAR hebrew_samech ENCODING 95 SWIDTH 562 0 DWIDTH 9 0 BBX 9 13 0 -2 BITMAP 0000 3e00 2200 2200 2200 2200 2200 2200 1400 1c00 0000 0000 0000 ENDCHAR STARTCHAR Agrave ENCODING 96 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0800 0400 0200 0800 1400 2200 4100 7f00 4100 4100 4100 0000 0000 0000 ENDCHAR STARTCHAR Egrave ENCODING 97 SWIDTH 562 0 DWIDTH 9 0 BBX 7 11 1 0 BITMAP 40 20 10 fe 80 80 f8 80 80 80 fe ENDCHAR STARTCHAR Igrave ENCODING 98 SWIDTH 562 0 DWIDTH 9 0 BBX 3 11 3 0 BITMAP 80 40 20 00 e0 40 40 40 40 40 e0 ENDCHAR STARTCHAR Ograve ENCODING 99 SWIDTH 562 0 DWIDTH 9 0 BBX 7 11 1 0 BITMAP 40 20 10 7c 82 82 82 82 82 82 7c ENDCHAR STARTCHAR Ugrave ENCODING 100 SWIDTH 562 0 DWIDTH 9 0 BBX 7 11 1 0 BITMAP 40 20 10 82 82 82 82 82 82 82 7c ENDCHAR STARTCHAR Atilde ENCODING 101 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 1900 2600 0000 0800 1400 2200 4100 7f00 4100 4100 0000 0000 0000 ENDCHAR STARTCHAR Otilde ENCODING 102 SWIDTH 562 0 DWIDTH 9 0 BBX 7 11 1 0 BITMAP 32 4c 7c 82 82 82 82 82 82 82 7c ENDCHAR STARTCHAR onesuperior ENCODING 103 SWIDTH 562 0 DWIDTH 9 0 BBX 3 5 3 4 BITMAP 40 c0 40 40 e0 ENDCHAR STARTCHAR twosuperior ENCODING 104 SWIDTH 562 0 DWIDTH 9 0 BBX 4 5 2 4 BITMAP 60 90 20 40 f0 ENDCHAR STARTCHAR threesuperior ENCODING 105 SWIDTH 562 0 DWIDTH 9 0 BBX 4 5 2 4 BITMAP 60 90 20 90 60 ENDCHAR STARTCHAR ordfeminine ENCODING 106 SWIDTH 562 0 DWIDTH 9 0 BBX 5 7 2 4 BITMAP 70 08 78 88 78 00 f8 ENDCHAR STARTCHAR masculine ENCODING 107 SWIDTH 562 0 DWIDTH 9 0 BBX 5 7 2 4 BITMAP 70 88 88 88 70 00 f8 ENDCHAR STARTCHAR guillemotleft ENCODING 108 SWIDTH 562 0 DWIDTH 9 0 BBX 7 5 1 3 BITMAP 22 44 88 44 22 ENDCHAR STARTCHAR guillemotright ENCODING 109 SWIDTH 562 0 DWIDTH 9 0 BBX 7 5 1 3 BITMAP 88 44 22 44 88 ENDCHAR STARTCHAR exclamdown ENCODING 110 SWIDTH 562 0 DWIDTH 9 0 BBX 1 10 4 0 BITMAP 80 00 00 80 80 80 80 80 80 80 ENDCHAR STARTCHAR questiondown ENCODING 111 SWIDTH 562 0 DWIDTH 9 0 BBX 6 10 2 0 BITMAP 10 00 00 10 10 20 40 84 84 78 ENDCHAR STARTCHAR Adiaeresis ENCODING 112 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 2200 0000 0800 1400 2200 4100 4100 7f00 4100 4100 4100 0000 0000 0000 ENDCHAR STARTCHAR Ediaeresis ENCODING 113 SWIDTH 562 0 DWIDTH 9 0 BBX 7 11 1 0 BITMAP 44 00 fe 80 80 80 f8 80 80 80 fe ENDCHAR STARTCHAR Idiaeresis ENCODING 114 SWIDTH 562 0 DWIDTH 9 0 BBX 5 11 2 0 BITMAP 88 00 70 20 20 20 20 20 20 20 70 ENDCHAR STARTCHAR Odiaeresis ENCODING 115 SWIDTH 562 0 DWIDTH 9 0 BBX 7 11 1 0 BITMAP 44 00 7c 82 82 82 82 82 82 82 7c ENDCHAR STARTCHAR Udiaeresis ENCODING 116 SWIDTH 562 0 DWIDTH 9 0 BBX 7 11 1 0 BITMAP 44 00 82 82 82 82 82 82 82 82 7c ENDCHAR STARTCHAR Acircumflex ENCODING 117 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0800 1400 0000 0800 1400 2200 4100 7f00 4100 4100 4100 0000 0000 0000 ENDCHAR STARTCHAR Ecircumflex ENCODING 118 SWIDTH 562 0 DWIDTH 9 0 BBX 7 11 1 0 BITMAP 10 28 00 fe 80 80 80 f8 80 80 fe ENDCHAR STARTCHAR Icircumflex ENCODING 119 SWIDTH 562 0 DWIDTH 9 0 BBX 3 11 3 0 BITMAP 40 a0 00 e0 40 40 40 40 40 40 e0 ENDCHAR STARTCHAR Ocircumflex ENCODING 120 SWIDTH 562 0 DWIDTH 9 0 BBX 7 11 1 0 BITMAP 10 28 00 7c 82 82 82 82 82 82 7c ENDCHAR STARTCHAR Ucircumflex ENCODING 121 SWIDTH 562 0 DWIDTH 9 0 BBX 7 11 1 0 BITMAP 10 28 00 82 82 82 82 82 82 82 7c ENDCHAR STARTCHAR Aacute ENCODING 122 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0800 1000 2000 0800 1400 2200 4100 7f00 4100 4100 4100 0000 0000 0000 ENDCHAR STARTCHAR Eacute ENCODING 123 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0200 0400 0800 7f00 4000 4000 4000 7c00 4000 4000 7f00 0000 0000 0000 ENDCHAR STARTCHAR Iacute ENCODING 124 SWIDTH 562 0 DWIDTH 9 0 BBX 3 11 3 0 BITMAP 20 40 80 00 e0 40 40 40 40 40 e0 ENDCHAR STARTCHAR Oacute ENCODING 125 SWIDTH 562 0 DWIDTH 9 0 BBX 7 11 1 0 BITMAP 04 08 10 7c 82 82 82 82 82 82 7c ENDCHAR STARTCHAR Uacute ENCODING 126 SWIDTH 562 0 DWIDTH 9 0 BBX 7 11 1 0 BITMAP 04 08 10 82 82 82 82 82 82 82 7c ENDCHAR STARTCHAR Ntilde ENCODING 127 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 1900 2600 0000 4100 6100 5100 4900 4500 4300 4100 0000 0000 0000 ENDCHAR STARTCHAR a ENCODING 128 SWIDTH 562 0 DWIDTH 9 0 BBX 7 7 1 0 BITMAP 78 04 04 7c 84 84 7e ENDCHAR STARTCHAR b ENCODING 129 SWIDTH 562 0 DWIDTH 9 0 BBX 6 10 1 0 BITMAP 80 80 80 f0 88 84 84 84 88 f0 ENDCHAR STARTCHAR c ENCODING 130 SWIDTH 562 0 DWIDTH 9 0 BBX 6 7 1 0 BITMAP 3c 40 80 80 80 40 3c ENDCHAR STARTCHAR d ENCODING 131 SWIDTH 562 0 DWIDTH 9 0 BBX 6 10 1 0 BITMAP 04 04 04 3c 44 84 84 84 44 3c ENDCHAR STARTCHAR e ENCODING 132 SWIDTH 562 0 DWIDTH 9 0 BBX 6 7 1 0 BITMAP 78 84 84 fc 80 80 7c ENDCHAR STARTCHAR f ENCODING 133 SWIDTH 562 0 DWIDTH 9 0 BBX 6 10 1 0 BITMAP 1c 20 20 f8 20 20 20 20 20 20 ENDCHAR STARTCHAR g ENCODING 134 SWIDTH 562 0 DWIDTH 9 0 BBX 7 9 1 -2 BITMAP 3c 42 82 82 46 3a 02 42 3c ENDCHAR STARTCHAR h ENCODING 135 SWIDTH 562 0 DWIDTH 9 0 BBX 6 10 1 0 BITMAP 80 80 80 b8 c4 84 84 84 84 84 ENDCHAR STARTCHAR i ENCODING 136 SWIDTH 562 0 DWIDTH 9 0 BBX 1 10 4 0 BITMAP 80 00 00 80 80 80 80 80 80 80 ENDCHAR STARTCHAR j ENCODING 137 SWIDTH 562 0 DWIDTH 9 0 BBX 5 12 2 -2 BITMAP 08 00 00 08 08 08 08 08 08 08 88 70 ENDCHAR STARTCHAR k ENCODING 138 SWIDTH 562 0 DWIDTH 9 0 BBX 5 10 2 0 BITMAP 80 80 80 88 90 a0 c0 a0 90 88 ENDCHAR STARTCHAR l ENCODING 139 SWIDTH 562 0 DWIDTH 9 0 BBX 2 10 4 0 BITMAP 80 80 80 80 80 80 80 80 80 c0 ENDCHAR STARTCHAR m ENCODING 140 SWIDTH 562 0 DWIDTH 9 0 BBX 7 7 1 0 BITMAP 6c 92 92 92 92 92 92 ENDCHAR STARTCHAR n ENCODING 141 SWIDTH 562 0 DWIDTH 9 0 BBX 7 7 1 0 BITMAP bc 42 42 42 42 42 42 ENDCHAR STARTCHAR o ENCODING 142 SWIDTH 562 0 DWIDTH 9 0 BBX 6 7 1 0 BITMAP 78 84 84 84 84 84 78 ENDCHAR STARTCHAR p ENCODING 143 SWIDTH 562 0 DWIDTH 9 0 BBX 6 10 1 -3 BITMAP f0 88 84 84 84 88 f0 80 80 80 ENDCHAR STARTCHAR q ENCODING 144 SWIDTH 562 0 DWIDTH 9 0 BBX 7 9 1 -2 BITMAP 3c 44 84 84 44 3c 04 04 06 ENDCHAR STARTCHAR r ENCODING 145 SWIDTH 562 0 DWIDTH 9 0 BBX 7 7 1 0 BITMAP 9c 62 40 40 40 40 40 ENDCHAR STARTCHAR s ENCODING 146 SWIDTH 562 0 DWIDTH 9 0 BBX 6 7 1 0 BITMAP 78 84 40 30 08 84 78 ENDCHAR STARTCHAR t ENCODING 147 SWIDTH 562 0 DWIDTH 9 0 BBX 5 10 2 0 BITMAP 20 20 20 f8 20 20 20 20 20 20 ENDCHAR STARTCHAR u ENCODING 148 SWIDTH 562 0 DWIDTH 9 0 BBX 7 7 1 0 BITMAP 84 84 84 84 84 84 7a ENDCHAR STARTCHAR v ENCODING 149 SWIDTH 562 0 DWIDTH 9 0 BBX 7 7 1 0 BITMAP 82 82 44 44 28 28 10 ENDCHAR STARTCHAR w ENCODING 150 SWIDTH 562 0 DWIDTH 9 0 BBX 7 7 1 0 BITMAP 82 82 82 92 92 aa 44 ENDCHAR STARTCHAR x ENCODING 151 SWIDTH 562 0 DWIDTH 9 0 BBX 7 7 1 0 BITMAP 82 44 28 10 28 44 82 ENDCHAR STARTCHAR y ENCODING 152 SWIDTH 562 0 DWIDTH 9 0 BBX 6 10 1 -3 BITMAP 84 84 84 84 44 28 10 20 40 80 ENDCHAR STARTCHAR z ENCODING 153 SWIDTH 562 0 DWIDTH 9 0 BBX 7 7 1 0 BITMAP fe 04 08 10 20 40 fe ENDCHAR STARTCHAR hebrew_zain ENCODING 154 SWIDTH 562 0 DWIDTH 9 0 BBX 9 13 0 -2 BITMAP 0000 3c00 1000 1000 1000 1000 0800 0800 0800 0800 0000 0000 0000 ENDCHAR STARTCHAR hebrew_resh ENCODING 155 SWIDTH 562 0 DWIDTH 9 0 BBX 9 13 0 -2 BITMAP 0000 3c00 0200 0200 0200 0200 0200 0200 0200 0200 0000 0000 0000 ENDCHAR STARTCHAR hebrew_waw ENCODING 156 SWIDTH 562 0 DWIDTH 9 0 BBX 9 13 0 -2 BITMAP 0000 1c00 0400 0400 0400 0400 0400 0400 0400 0400 0000 0000 0000 ENDCHAR STARTCHAR hebrew_qoph ENCODING 157 SWIDTH 562 0 DWIDTH 9 0 BBX 9 13 0 -2 BITMAP 0000 3e00 0200 0200 2200 2400 2800 2800 2c00 2000 2000 3000 0000 ENDCHAR STARTCHAR fm ENCODING 158 SWIDTH 562 0 DWIDTH 9 0 BBX 7 11 1 -1 BITMAP fe fe 00 18 18 00 00 18 18 30 60 ENDCHAR STARTCHAR dup ENCODING 159 SWIDTH 562 0 DWIDTH 9 0 BBX 7 10 1 0 BITMAP fe fe 00 10 92 54 28 54 92 10 ENDCHAR STARTCHAR A ENCODING 160 SWIDTH 562 0 DWIDTH 9 0 BBX 7 9 1 0 BITMAP 10 28 44 82 82 fe 82 82 82 ENDCHAR STARTCHAR B ENCODING 161 SWIDTH 562 0 DWIDTH 9 0 BBX 7 9 1 0 BITMAP f8 44 42 44 78 44 42 44 f8 ENDCHAR STARTCHAR C ENCODING 162 SWIDTH 562 0 DWIDTH 9 0 BBX 7 9 1 0 BITMAP 1c 22 40 80 80 80 40 22 1c ENDCHAR STARTCHAR D ENCODING 163 SWIDTH 562 0 DWIDTH 9 0 BBX 7 9 1 0 BITMAP f8 44 42 42 42 42 42 44 f8 ENDCHAR STARTCHAR E ENCODING 164 SWIDTH 562 0 DWIDTH 9 0 BBX 7 9 1 0 BITMAP fe 80 80 80 f8 80 80 80 fe ENDCHAR STARTCHAR F ENCODING 165 SWIDTH 562 0 DWIDTH 9 0 BBX 7 9 1 0 BITMAP fe 80 80 80 fc 80 80 80 80 ENDCHAR STARTCHAR G ENCODING 166 SWIDTH 562 0 DWIDTH 9 0 BBX 7 9 1 0 BITMAP 38 44 80 80 80 9e 84 44 3c ENDCHAR STARTCHAR H ENCODING 167 SWIDTH 562 0 DWIDTH 9 0 BBX 7 9 1 0 BITMAP 82 82 82 82 fe 82 82 82 82 ENDCHAR STARTCHAR I ENCODING 168 SWIDTH 562 0 DWIDTH 9 0 BBX 3 9 3 0 BITMAP e0 40 40 40 40 40 40 40 e0 ENDCHAR STARTCHAR J ENCODING 169 SWIDTH 562 0 DWIDTH 9 0 BBX 6 9 1 0 BITMAP 1c 08 08 08 08 08 88 88 70 ENDCHAR STARTCHAR K ENCODING 170 SWIDTH 562 0 DWIDTH 9 0 BBX 7 9 1 0 BITMAP 82 84 88 90 a0 d0 88 84 82 ENDCHAR STARTCHAR L ENCODING 171 SWIDTH 562 0 DWIDTH 9 0 BBX 7 9 1 0 BITMAP 80 80 80 80 80 80 80 80 fe ENDCHAR STARTCHAR M ENCODING 172 SWIDTH 562 0 DWIDTH 9 0 BBX 7 9 1 0 BITMAP 82 c6 aa 92 92 82 82 82 82 ENDCHAR STARTCHAR N ENCODING 173 SWIDTH 562 0 DWIDTH 9 0 BBX 7 9 1 0 BITMAP 82 c2 a2 92 8a 86 82 82 82 ENDCHAR STARTCHAR O ENCODING 174 SWIDTH 562 0 DWIDTH 9 0 BBX 7 9 1 0 BITMAP 7c 82 82 82 82 82 82 82 7c ENDCHAR STARTCHAR P ENCODING 175 SWIDTH 562 0 DWIDTH 9 0 BBX 7 9 1 0 BITMAP f8 84 82 82 84 f8 80 80 80 ENDCHAR STARTCHAR Q ENCODING 176 SWIDTH 562 0 DWIDTH 9 0 BBX 7 11 1 -2 BITMAP 38 44 82 82 82 82 92 54 38 04 02 ENDCHAR STARTCHAR R ENCODING 177 SWIDTH 562 0 DWIDTH 9 0 BBX 7 9 1 0 BITMAP fc 82 82 82 fc 90 88 84 82 ENDCHAR STARTCHAR S ENCODING 178 SWIDTH 562 0 DWIDTH 9 0 BBX 7 9 1 0 BITMAP 7c 82 80 60 10 0c 02 82 7c ENDCHAR STARTCHAR T ENCODING 179 SWIDTH 562 0 DWIDTH 9 0 BBX 7 9 1 0 BITMAP fe 10 10 10 10 10 10 10 10 ENDCHAR STARTCHAR U ENCODING 180 SWIDTH 562 0 DWIDTH 9 0 BBX 7 9 1 0 BITMAP 82 82 82 82 82 82 82 82 7c ENDCHAR STARTCHAR V ENCODING 181 SWIDTH 562 0 DWIDTH 9 0 BBX 7 9 1 0 BITMAP 82 82 44 44 44 28 28 10 10 ENDCHAR STARTCHAR W ENCODING 182 SWIDTH 562 0 DWIDTH 9 0 BBX 7 9 1 0 BITMAP 82 82 82 82 92 92 92 aa 44 ENDCHAR STARTCHAR X ENCODING 183 SWIDTH 562 0 DWIDTH 9 0 BBX 7 9 1 0 BITMAP 82 82 44 28 10 28 44 82 82 ENDCHAR STARTCHAR Y ENCODING 184 SWIDTH 562 0 DWIDTH 9 0 BBX 7 9 1 0 BITMAP 82 44 28 10 10 10 10 10 10 ENDCHAR STARTCHAR Z ENCODING 185 SWIDTH 562 0 DWIDTH 9 0 BBX 7 9 1 0 BITMAP fe 02 04 08 10 20 40 80 fe ENDCHAR STARTCHAR AE ENCODING 186 SWIDTH 562 0 DWIDTH 9 0 BBX 7 9 1 0 BITMAP 1e 28 48 88 8e f8 88 88 8e ENDCHAR STARTCHAR Ooblique ENCODING 187 SWIDTH 562 0 DWIDTH 9 0 BBX 7 9 1 0 BITMAP 7c 82 86 8a 92 a2 c2 82 7c ENDCHAR STARTCHAR Aring ENCODING 188 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 1c00 1c00 0800 1400 2200 4100 4100 7f00 4100 4100 4100 0000 0000 0000 ENDCHAR STARTCHAR Ccedilla ENCODING 189 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0e00 1100 2000 4000 4000 4000 2000 1100 0e00 0400 3c00 0000 ENDCHAR STARTCHAR semicolon ENCODING 190 SWIDTH 562 0 DWIDTH 9 0 BBX 4 8 2 -2 BITMAP 30 30 00 00 30 30 60 c0 ENDCHAR STARTCHAR asterisk ENCODING 191 SWIDTH 562 0 DWIDTH 9 0 BBX 7 7 1 2 BITMAP 10 92 54 28 54 92 10 ENDCHAR STARTCHAR c0 ENCODING 192 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR c1 ENCODING 193 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR c2 ENCODING 194 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR c3 ENCODING 195 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR c4 ENCODING 196 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR c5 ENCODING 197 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR c6 ENCODING 198 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR c7 ENCODING 199 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR c8 ENCODING 200 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR c9 ENCODING 201 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR ca ENCODING 202 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR cb ENCODING 203 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR cc ENCODING 204 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR cd ENCODING 205 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR ce ENCODING 206 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR cf ENCODING 207 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR copyright ENCODING 208 SWIDTH 562 0 DWIDTH 9 0 BBX 7 8 1 2 BITMAP 38 44 9a a2 a2 9a 44 38 ENDCHAR STARTCHAR registered ENCODING 209 SWIDTH 562 0 DWIDTH 9 0 BBX 7 8 1 2 BITMAP 38 44 b2 aa b2 aa 44 38 ENDCHAR STARTCHAR boxA ENCODING 210 SWIDTH 562 0 DWIDTH 9 0 BBX 9 12 0 -1 BITMAP 2000 5000 8800 8800 f800 8800 8800 0000 ff80 8080 8080 ff80 ENDCHAR STARTCHAR insert ENCODING 211 SWIDTH 562 0 DWIDTH 9 0 BBX 9 7 0 0 BITMAP 0800 1c00 3e00 7700 e380 c180 8080 ENDCHAR STARTCHAR boxB ENCODING 212 SWIDTH 562 0 DWIDTH 9 0 BBX 9 12 0 -1 BITMAP 0f00 0480 0480 0700 0480 0480 0f00 0000 ff80 8080 8080 ff80 ENDCHAR STARTCHAR box6 ENCODING 213 SWIDTH 562 0 DWIDTH 9 0 BBX 9 11 0 -2 BITMAP ff80 8080 9080 a080 a080 ac80 b280 a280 9c80 8080 ff80 ENDCHAR STARTCHAR plusminus ENCODING 214 SWIDTH 562 0 DWIDTH 9 0 BBX 7 9 1 0 BITMAP 10 10 10 fe 10 10 10 00 fe ENDCHAR STARTCHAR ETH ENCODING 215 SWIDTH 562 0 DWIDTH 9 0 BBX 7 9 1 0 BITMAP f8 44 42 42 f2 42 42 44 f8 ENDCHAR STARTCHAR rightarrow ENCODING 216 SWIDTH 562 0 DWIDTH 9 0 BBX 8 5 0 2 BITMAP 04 06 ff 06 04 ENDCHAR STARTCHAR THORN ENCODING 217 SWIDTH 562 0 DWIDTH 9 0 BBX 7 9 1 0 BITMAP 80 80 f8 84 84 84 f8 80 80 ENDCHAR STARTCHAR upshift ENCODING 218 SWIDTH 562 0 DWIDTH 9 0 BBX 7 11 1 -1 BITMAP 10 28 44 82 ee 28 28 28 28 28 38 ENDCHAR STARTCHAR human ENCODING 219 SWIDTH 562 0 DWIDTH 9 0 BBX 7 10 1 0 BITMAP 38 28 38 10 fe 10 10 28 44 82 ENDCHAR STARTCHAR underB ENCODING 220 SWIDTH 562 0 DWIDTH 9 0 BBX 9 9 0 2 BITMAP 3c00 1200 1200 1c00 1200 1200 3c00 0000 ff80 ENDCHAR STARTCHAR downshift ENCODING 221 SWIDTH 562 0 DWIDTH 9 0 BBX 7 11 1 -1 BITMAP 38 28 28 28 28 28 ee 82 44 28 10 ENDCHAR STARTCHAR boxquestion ENCODING 222 SWIDTH 562 0 DWIDTH 9 0 BBX 9 13 0 -2 BITMAP ff80 8080 9c80 a280 a280 8280 8480 8880 8880 8080 8880 8080 ff80 ENDCHAR STARTCHAR boxsolid ENCODING 223 SWIDTH 562 0 DWIDTH 9 0 BBX 9 13 0 -2 BITMAP ff80 ff80 ff80 ff80 ff80 ff80 ff80 ff80 ff80 ff80 ff80 ff80 ff80 ENDCHAR STARTCHAR e0 ENCODING 224 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR e1 ENCODING 225 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR e2 ENCODING 226 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR e3 ENCODING 227 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR e4 ENCODING 228 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR e5 ENCODING 229 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR e6 ENCODING 230 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR e7 ENCODING 231 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR e8 ENCODING 232 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR e9 ENCODING 233 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR ea ENCODING 234 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR eb ENCODING 235 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR ec ENCODING 236 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR ed ENCODING 237 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR ee ENCODING 238 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR ef ENCODING 239 SWIDTH 562 0 DWIDTH 9 0 BBX 9 14 0 -3 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR badcommhi ENCODING 240 SWIDTH 562 0 DWIDTH 9 0 BBX 9 11 0 -1 BITMAP 8000 c000 e000 7000 3800 ff80 0e00 0700 0380 0180 0080 ENDCHAR STARTCHAR commhi ENCODING 241 SWIDTH 562 0 DWIDTH 9 0 BBX 9 1 0 4 BITMAP ff80 ENDCHAR STARTCHAR commjag ENCODING 242 SWIDTH 562 0 DWIDTH 9 0 BBX 9 5 0 0 BITMAP fc00 0800 1000 2000 7f80 ENDCHAR STARTCHAR commlo ENCODING 243 SWIDTH 562 0 DWIDTH 9 0 BBX 9 1 0 0 BITMAP ff80 ENDCHAR STARTCHAR clockleft ENCODING 244 SWIDTH 562 0 DWIDTH 9 0 BBX 8 13 1 -3 BITMAP 02 10 00 40 00 01 82 02 02 42 02 10 02 ENDCHAR STARTCHAR clockright ENCODING 245 SWIDTH 562 0 DWIDTH 9 0 BBX 6 11 0 -1 BITMAP 20 00 28 40 80 04 00 00 08 00 20 ENDCHAR STARTCHAR lock ENCODING 246 SWIDTH 562 0 DWIDTH 9 0 BBX 9 12 0 -1 BITMAP 8080 c180 e380 f780 7f00 3e00 3e00 7f00 f780 e380 c180 8080 ENDCHAR STARTCHAR hebrew_nun ENCODING 247 SWIDTH 562 0 DWIDTH 9 0 BBX 9 13 0 -2 BITMAP 0000 1800 0400 0400 0400 0400 0400 0400 0400 1c00 0000 0000 0000 ENDCHAR STARTCHAR leftarrow ENCODING 248 SWIDTH 562 0 DWIDTH 9 0 BBX 8 5 1 2 BITMAP 20 60 ff 60 20 ENDCHAR STARTCHAR thorn ENCODING 249 SWIDTH 562 0 DWIDTH 9 0 BBX 7 11 1 -2 BITMAP 80 80 b8 c4 84 84 84 c4 b8 80 80 ENDCHAR STARTCHAR keyleft ENCODING 250 SWIDTH 562 0 DWIDTH 9 0 BBX 6 5 3 3 BITMAP 70 88 8c 88 70 ENDCHAR STARTCHAR keyright ENCODING 251 SWIDTH 562 0 DWIDTH 9 0 BBX 9 4 0 2 BITMAP ff80 1d80 1d80 0180 ENDCHAR STARTCHAR box4 ENCODING 252 SWIDTH 562 0 DWIDTH 9 0 BBX 9 11 0 -2 BITMAP ff80 8080 8480 8c80 9480 a480 be80 8480 8480 8080 ff80 ENDCHAR STARTCHAR underA ENCODING 253 SWIDTH 562 0 DWIDTH 9 0 BBX 9 9 0 2 BITMAP 0800 1400 2200 2200 3e00 2200 2200 0000 ff80 ENDCHAR STARTCHAR magcard ENCODING 254 SWIDTH 562 0 DWIDTH 9 0 BBX 9 7 0 1 BITMAP ff80 8080 8080 8080 ff80 8080 ff80 ENDCHAR STARTCHAR boxhuman ENCODING 255 SWIDTH 562 0 DWIDTH 9 0 BBX 9 13 0 -2 BITMAP ff80 8080 9c80 9480 9c80 8880 ff80 8880 8880 9480 a280 c180 ff80 ENDCHAR ENDFONT suite3270-4.1/x3270/Cme.c000066400000000000000000000206621413735575200145000ustar00rootroot00000000000000/* (from) $XConsortium: Sme.c,v 1.9 91/02/17 16:44:14 rws Exp $ */ /* * Copyright (c) 1995-2009, 2014 Paul Mattes. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of Paul Mattes nor his contributors may be used * to endorse or promote products derived from this software without * specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. * * Copyright 1989 Massachusetts Institute of Technology * * Permission to use, copy, modify, distribute, and sell this software and its * documentation for any purpose is hereby granted without fee, provided that * the above copyright notice appear in all copies and that both that * copyright notice and this permission notice appear in supporting * documentation, and that the name of M.I.T. not be used in advertising or * publicity pertaining to distribution of the software without specific, * written prior permission. M.I.T. makes no representations about the * suitability of this software for any purpose. It is provided "as is" * without express or implied warranty. * * M.I.T. DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL M.I.T. * BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ /* * Cme.c - Source code for the generic menu entry * (from) Sme.c - Source code for the generic menu entry * * Date: September 26, 1989 * * By: Chris D. Peterson * MIT X Consortium * kit@expo.lcs.mit.edu */ #include "globals.h" #include #include #include #include #include "CmeP.h" #include #define offset(field) XtOffsetOf(CmeRec, cme.field) static XtResource resources[] = { {XtNcallback, XtCCallback, XtRCallback, sizeof(XtPointer), offset(callbacks), XtRCallback, NULL}, }; #undef offset /* * Semi Public function definitions. */ static void Highlight(Widget); static void Unhighlight(Widget); static void Notify(Widget); static void ClassPartInitialize(WidgetClass); static void Initialize(Widget, Widget, ArgList, Cardinal *); static XtGeometryResult QueryGeometry(Widget, XtWidgetGeometry *, XtWidgetGeometry *); #define SUPERCLASS (&rectObjClassRec) CmeClassRec cmeClassRec = { { /* superclass */ (WidgetClass) SUPERCLASS, /* class_name */ "Cme", /* size */ sizeof(CmeRec), /* class_initialize */ XawInitializeWidgetSet, /* class_part_initialize*/ ClassPartInitialize, /* Class init'ed */ FALSE, /* initialize */ Initialize, /* initialize_hook */ NULL, /* realize */ NULL, /* actions */ NULL, /* num_actions */ ZERO, /* resources */ resources, /* resource_count */ XtNumber(resources), /* xrm_class */ NULLQUARK, /* compress_motion */ FALSE, /* compress_exposure */ FALSE, /* compress_enterleave*/ FALSE, /* visible_interest */ FALSE, /* destroy */ NULL, /* resize */ NULL, /* expose */ NULL, /* set_values */ NULL, /* set_values_hook */ NULL, /* set_values_almost */ XtInheritSetValuesAlmost, /* get_values_hook */ NULL, /* accept_focus */ NULL, /* intrinsics version */ XtVersion, /* callback offsets */ NULL, /* tm_table */ NULL, /* query_geometry */ QueryGeometry, /* display_accelerator*/ NULL, /* extension */ NULL },{ /* Complex Menu Entry Fields */ /* highlight */ Highlight, /* unhighlight */ Unhighlight, /* notify */ Notify, /* extension */ NULL } }; WidgetClass cmeObjectClass = (WidgetClass) &cmeClassRec; /************************************************************ * * Semi-Public Functions. * ************************************************************/ /* Function Name: ClassPartInitialize * Description: handles inheritance of class functions. * Arguments: class - the widget classs of this widget. * Returns: none. */ static void ClassPartInitialize(WidgetClass class) { CmeObjectClass m_ent, superC; m_ent = (CmeObjectClass) class; superC = (CmeObjectClass) m_ent->rect_class.superclass; /* * We don't need to check for null super since we'll get to TextSink * eventually. */ if (m_ent->cme_class.highlight == XtInheritHighlight) m_ent->cme_class.highlight = superC->cme_class.highlight; if (m_ent->cme_class.unhighlight == XtInheritUnhighlight) m_ent->cme_class.unhighlight = superC->cme_class.unhighlight; if (m_ent->cme_class.notify == XtInheritNotify) m_ent->cme_class.notify = superC->cme_class.notify; } /* Function Name: Initialize * Description: Initializes the complex menu widget * Arguments: request - the widget requested by the argument list. * new - the new widget with both resource and non * resource values. * Returns: none. * * MENU ENTRIES CANNOT HAVE BORDERS. */ static void Initialize(Widget request _is_unused, Widget new, ArgList args _is_unused, Cardinal *num_args _is_unused) { CmeObject entry = (CmeObject) new; entry->rectangle.border_width = 0; } /* Function Name: Highlight * Description: The default highlight proceedure for menu entries. * Arguments: w - the menu entry. * Returns: none. */ static void Highlight(Widget w _is_unused) { /* This space intentionally left blank. */ } /* Function Name: Unhighlight * Description: The default unhighlight proceedure for menu entries. * Arguments: w - the menu entry. * Returns: none. */ static void Unhighlight(Widget w _is_unused) { /* This space intentionally left blank. */ } /* Function Name: Notify * Description: calls the callback proceedures for this entry. * Arguments: w - the menu entry. * Returns: none. */ static void Notify(Widget w) { XtCallCallbacks(w, XtNcallback, NULL); } /* Function Name: QueryGeometry. * Description: Returns the preferred geometry for this widget. * Arguments: w - the menu entry object. * itended, return - the intended and return geometry info. * Returns: A Geometry Result. * * See the Intrinsics manual for details on what this function is for. * * I just return the height and a width of 1. */ static XtGeometryResult QueryGeometry(Widget w, XtWidgetGeometry *intended, XtWidgetGeometry *return_val) { CmeObject entry = (CmeObject) w; Dimension width; XtGeometryResult ret_val = XtGeometryYes; XtGeometryMask mode = intended->request_mode; width = 1; /* we can be really small. */ if ( ((mode & CWWidth) && (intended->width != width)) || !(mode & CWWidth) ) { return_val->request_mode |= CWWidth; return_val->width = width; mode = return_val->request_mode; if ( (mode & CWWidth) && (width == entry->rectangle.width) ) return(XtGeometryNo); return(XtGeometryAlmost); } return(ret_val); } suite3270-4.1/x3270/Cme.h000066400000000000000000000074041413735575200145040ustar00rootroot00000000000000/* * (from) $XConsortium: Sme.h,v 1.4 89/12/11 15:20:09 kit Exp $ * * Copyright (c) 1995-2009, Paul Mattes. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of Paul Mattes nor his contributors may be used * to endorse or promote products derived from this software without * specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. * * Copyright 1989 Massachusetts Institute of Technology * * Permission to use, copy, modify, distribute, and sell this software and its * documentation for any purpose is hereby granted without fee, provided that * the above copyright notice appear in all copies and that both that * copyright notice and this permission notice appear in supporting * documentation, and that the name of M.I.T. not be used in advertising or * publicity pertaining to distribution of the software without specific, * written prior permission. M.I.T. makes no representations about the * suitability of this software for any purpose. It is provided "as is" * without express or implied warranty. * * M.I.T. DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL M.I.T. * BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ /* * Cme.h - Public Header file for Cme object. * (from) Sme.h - Public Header file for Sme object. * * This is the public header file for the Athena Cme object. * It is intended to be used with the complex menu widget. * * Date: April 3, 1989 * * By: Chris D. Peterson * MIT X Consortium * kit@expo.lcs.mit.edu */ #ifndef _Cme_h #define _Cme_h #include /**************************************************************** * * Cme Object * ****************************************************************/ /* Complex Menu Entry Resources: Name Class RepType Default Value ---- ----- ------- ------------- callback Callback Pointer NULL destroyCallback Callback Pointer NULL height Height Dimension 0 sensitive Sensitive Boolean True width Width Dimension 0 x Position Position 0n y Position Position 0 */ typedef struct _CmeClassRec* CmeObjectClass; typedef struct _CmeRec* CmeObject; extern WidgetClass cmeObjectClass; #endif /* _Cme_h */ suite3270-4.1/x3270/CmeBSB.c000066400000000000000000000624151413735575200150310ustar00rootroot00000000000000/* (from) $XConsortium: SmeBSB.c,v 1.16 91/03/15 15:59:41 gildea Exp $ */ /* * Copyright (c) 1995-2009, 2013-2014, 2019 Paul Mattes. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of Paul Mattes nor his contributors may be used * to endorse or promote products derived from this software without * specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. * * Copyright 1989 Massachusetts Institute of Technology * * Permission to use, copy, modify, distribute, and sell this software and its * documentation for any purpose is hereby granted without fee, provided that * the above copyright notice appear in all copies and that both that * copyright notice and this permission notice appear in supporting * documentation, and that the name of M.I.T. not be used in advertising or * publicity pertaining to distribution of the software without specific, * written prior permission. M.I.T. makes no representations about the * suitability of this software for any purpose. It is provided "as is" * without express or implied warranty. * * M.I.T. DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL M.I.T. * BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ /* * CmeBSB.c - Source code file for BSB Menu Entry object. * (from) SmeBSB.c - Source code file for BSB Menu Entry object. * * Date: September 26, 1989 * * By: Chris D. Peterson * MIT X Consortium * kit@expo.lcs.mit.edu */ #include "globals.h" #include #include #include #include #include #include "CmplxMenu.h" #include "CmeBSBP.h" #include #include #include #define ONE_HUNDRED 100 #define offset(field) XtOffsetOf(CmeBSBRec, cme_bsb.field) static XtResource resources[] = { {XtNlabel, XtCLabel, XtRString, sizeof(String), offset(label), XtRString, NULL}, {XtNvertSpace, XtCVertSpace, XtRInt, sizeof(int), offset(vert_space), XtRImmediate, (XtPointer) 25}, {XtNleftBitmap, XtCLeftBitmap, XtRBitmap, sizeof(Pixmap), offset(left_bitmap), XtRImmediate, (XtPointer)None}, {XtNjustify, XtCJustify, XtRJustify, sizeof(XtJustify), offset(justify), XtRImmediate, (XtPointer) XtJustifyLeft}, {XtNmenuName, XtCMenuName, XtRString, sizeof(String), offset(menu_name), XtRString, NULL}, {XtNrightBitmap, XtCRightBitmap, XtRBitmap, sizeof(Pixmap), offset(right_bitmap), XtRImmediate, (XtPointer)None}, {XtNleftMargin, XtCHorizontalMargins, XtRDimension, sizeof(Dimension), offset(left_margin), XtRImmediate, (XtPointer) 4}, {XtNrightMargin, XtCHorizontalMargins, XtRDimension, sizeof(Dimension), offset(right_margin), XtRImmediate, (XtPointer) 4}, {XtNforeground, XtCForeground, XtRPixel, sizeof(Pixel), offset(foreground), XtRString, XtDefaultForeground}, {XtNfont, XtCFont, XtRFontStruct, sizeof(XFontStruct *), offset(font), XtRString, XtDefaultFont}, }; #undef offset /* * Semi Public function definitions. */ static void FlipColors(Widget); static void Initialize(Widget, Widget); static void Destroy(Widget); static void Redisplay(Widget, XEvent *, Region); static void FlipOn(Widget); static void FlipOff(Widget); static void PopupMenu(Widget); static void ClassInitialize(void); static Boolean SetValues(Widget, Widget, Widget); static XtGeometryResult QueryGeometry(Widget, XtWidgetGeometry *, XtWidgetGeometry *); /* * Private Function Definitions. */ static void GetDefaultSize(Widget, Dimension *, Dimension *); static void DrawBitmaps(Widget, GC); static void GetBitmapInfo(Widget, Boolean); static void CreateGCs(Widget); static void DestroyGCs(Widget); #define superclass (&cmeClassRec) CmeBSBClassRec cmeBSBClassRec = { { /* superclass */ (WidgetClass) superclass, /* class_name */ "CmeBSB", /* size */ sizeof(CmeBSBRec), /* class_initializer */ ClassInitialize, /* class_part_initialize*/ NULL, /* Class init'ed */ FALSE, /* initialize */ (XtInitProc)Initialize, /* initialize_hook */ NULL, /* realize */ NULL, /* actions */ NULL, /* num_actions */ ZERO, /* resources */ resources, /* resource_count */ XtNumber(resources), /* xrm_class */ NULLQUARK, /* compress_motion */ FALSE, /* compress_exposure */ FALSE, /* compress_enterleave*/ FALSE, /* visible_interest */ FALSE, /* destroy */ Destroy, /* resize */ NULL, /* expose */ Redisplay, /* set_values */ (XtSetValuesFunc)SetValues, /* set_values_hook */ NULL, /* set_values_almost */ XtInheritSetValuesAlmost, /* get_values_hook */ NULL, /* accept_focus */ NULL, /* intrinsics version */ XtVersion, /* callback offsets */ NULL, /* tm_table */ NULL, /* query_geometry */ QueryGeometry, /* display_accelerator*/ NULL, /* extension */ NULL },{ /* Menu Entry Fields */ /* highlight */ FlipOn, /* unhighlight */ FlipOff, /* notify */ XtInheritNotify, /* extension */ NULL }, { /* BSB Menu entry Fields */ /* extension */ NULL } }; WidgetClass cmeBSBObjectClass = (WidgetClass) &cmeBSBClassRec; /************************************************************ * * Semi-Public Functions. * ************************************************************/ /* Function Name: ClassInitialize * Description: Initializes the CmeBSBObject. * Arguments: none. * Returns: none. */ static void ClassInitialize(void) { XawInitializeWidgetSet(); XtAddConverter( XtRString, XtRJustify, XmuCvtStringToJustify, NULL, 0 ); } /* Function Name: Initialize * Description: Initializes the complex menu widget * Arguments: request - the widget requested by the argument list. * new - the new widget with both resource and non * resource values. * Returns: none. */ static void Initialize(Widget request _is_unused, Widget new) { CmeBSBObject entry = (CmeBSBObject) new; if (entry->cme_bsb.label == NULL) entry->cme_bsb.label = XtName(new); else entry->cme_bsb.label = XtNewString( entry->cme_bsb.label ); GetDefaultSize(new, &(entry->rectangle.width), &(entry->rectangle.height)); CreateGCs(new); entry->cme_bsb.left_bitmap_width = entry->cme_bsb.left_bitmap_height = 0; entry->cme_bsb.right_bitmap_width = entry->cme_bsb.right_bitmap_height = 0; GetBitmapInfo(new, TRUE); /* Left Bitmap Info */ GetBitmapInfo(new, FALSE); /* Right Bitmap Info */ entry->cme_bsb.ticking = False; } /* Function Name: Destroy * Description: Called at destroy time, cleans up. * Arguments: w - the complex menu widget. * Returns: none. */ static void Destroy(Widget w) { CmeBSBObject entry = (CmeBSBObject) w; DestroyGCs(w); if (entry->cme_bsb.label != XtName(w)) XtFree(entry->cme_bsb.label); if (entry->cme_bsb.ticking) XtRemoveTimeOut(entry->cme_bsb.id); } /* Function Name: Redisplay * Description: Redisplays the contents of the widget. * Arguments: w - the complex menu widget. * event - the X event that caused this redisplay. * region - the region the needs to be repainted. * Returns: none. */ static void Redisplay(Widget w, XEvent *event _is_unused, Region region _is_unused) { GC gc; CmeBSBObject entry = (CmeBSBObject) w; int font_ascent, font_descent, y_loc; entry->cme_bsb.set_values_area_cleared = FALSE; font_ascent = entry->cme_bsb.font->max_bounds.ascent; font_descent = entry->cme_bsb.font->max_bounds.descent; y_loc = entry->rectangle.y; if (XtIsSensitive(w) && XtIsSensitive( XtParent(w) ) ) { if ( w == XawComplexMenuGetActiveEntry(XtParent(w)) ) { XFillRectangle(XtDisplayOfObject(w), XtWindowOfObject(w), entry->cme_bsb.norm_gc, 0, y_loc, (unsigned int) entry->rectangle.width, (unsigned int) entry->rectangle.height); gc = entry->cme_bsb.rev_gc; } else gc = entry->cme_bsb.norm_gc; } else gc = entry->cme_bsb.norm_gray_gc; if (entry->cme_bsb.label != NULL) { int x_loc = entry->cme_bsb.left_margin; int len = strlen(entry->cme_bsb.label); char * label = entry->cme_bsb.label; switch(entry->cme_bsb.justify) { int width, t_width; case XtJustifyCenter: t_width = XTextWidth(entry->cme_bsb.font, label, len); width = entry->rectangle.width - (entry->cme_bsb.left_margin + entry->cme_bsb.right_margin); x_loc += (width - t_width)/2; break; case XtJustifyRight: t_width = XTextWidth(entry->cme_bsb.font, label, len); x_loc = entry->rectangle.width - (entry->cme_bsb.right_margin + t_width); break; case XtJustifyLeft: default: break; } y_loc += ((int)entry->rectangle.height - (font_ascent + font_descent)) / 2 + font_ascent; XDrawString(XtDisplayOfObject(w), XtWindowOfObject(w), gc, x_loc, y_loc, label, len); } DrawBitmaps(w, gc); } /* Function Name: SetValues * Description: Relayout the menu when one of the resources is changed. * Arguments: current - current state of the widget. * request - what was requested. * new - what the widget will become. * Returns: none */ static Boolean SetValues(Widget current, Widget request _is_unused, Widget new) { CmeBSBObject entry = (CmeBSBObject) new; CmeBSBObject old_entry = (CmeBSBObject) current; Boolean ret_val = FALSE; if (old_entry->cme_bsb.label != entry->cme_bsb.label) { if (old_entry->cme_bsb.label != XtName( new ) ) XtFree( (char *) old_entry->cme_bsb.label ); if (entry->cme_bsb.label != XtName(new) ) entry->cme_bsb.label = XtNewString( entry->cme_bsb.label ); ret_val = True; } if (entry->rectangle.sensitive != old_entry->rectangle.sensitive ) ret_val = TRUE; if (entry->cme_bsb.left_bitmap != old_entry->cme_bsb.left_bitmap) { GetBitmapInfo(new, TRUE); ret_val = TRUE; } if (entry->cme_bsb.right_bitmap != old_entry->cme_bsb.right_bitmap) { GetBitmapInfo(new, FALSE); ret_val = TRUE; } if ( (old_entry->cme_bsb.font != entry->cme_bsb.font) || (old_entry->cme_bsb.foreground != entry->cme_bsb.foreground) ) { DestroyGCs(current); CreateGCs(new); ret_val = TRUE; } if (ret_val) { GetDefaultSize(new, &(entry->rectangle.width), &(entry->rectangle.height)); entry->cme_bsb.set_values_area_cleared = TRUE; } return(ret_val); } /* Function Name: QueryGeometry. * Description: Returns the preferred geometry for this widget. * Arguments: w - the menu entry object. * itended, return_val - the intended and return geometry info. * Returns: A Geometry Result. * * See the Intrinsics manual for details on what this function is for. * * I just return the height and width of the label plus the margins. */ static XtGeometryResult QueryGeometry(Widget w, XtWidgetGeometry *intended, XtWidgetGeometry *return_val) { CmeBSBObject entry = (CmeBSBObject) w; Dimension width, height; XtGeometryResult ret_val = XtGeometryYes; XtGeometryMask mode = intended->request_mode; GetDefaultSize(w, &width, &height ); if ( ((mode & CWWidth) && (intended->width != width)) || !(mode & CWWidth) ) { return_val->request_mode |= CWWidth; return_val->width = width; ret_val = XtGeometryAlmost; } if ( ((mode & CWHeight) && (intended->height != height)) || !(mode & CWHeight) ) { return_val->request_mode |= CWHeight; return_val->height = height; ret_val = XtGeometryAlmost; } if (ret_val == XtGeometryAlmost) { mode = return_val->request_mode; if ( ((mode & CWWidth) && (width == entry->rectangle.width)) && ((mode & CWHeight) && (height == entry->rectangle.height)) ) return(XtGeometryNo); } return(ret_val); } /* Function Name: OnCallback * Description: Timeout callback for submenu pop-up. * Arguments: closure - the bsb menu entry widget. * Returns: none. */ static void OnCallback(XtPointer closure, XtIntervalId *id _is_unused) { Widget w = (Widget) closure; CmeBSBObject entry = (CmeBSBObject) w; if (entry->cme_bsb.ticking && XawComplexMenuGetActiveEntry(XtParent(w)) == w) PopupMenu(w); entry->cme_bsb.ticking = False; } /* Function Name: FlipOn * Description: Invert the colors of the current entry. * Arguments: w - the bsb menu entry widget. * Returns: none. */ static void FlipOn(Widget w) { CmeBSBObject entry = (CmeBSBObject) w; FlipColors(w); if (entry->cme_bsb.menu_name == NULL) return; if (entry->cme_bsb.ticking) XtRemoveTimeOut(entry->cme_bsb.id); entry->cme_bsb.ticking = True; entry->cme_bsb.id = XtAppAddTimeOut(XtWidgetToApplicationContext(w), 200L, OnCallback, (XtPointer)w); } /* Function Name: FlipOff * Description: Invert the colors of the current entry. * Arguments: w - the bsb menu entry widget. * Returns: none. */ static void FlipOff(Widget w) { CmeBSBObject entry = (CmeBSBObject) w; Widget menu = NULL, temp; #define NUM_MENUS 16 Widget menus[NUM_MENUS]; int num_menus = 0; FlipColors(w); if (entry->cme_bsb.menu_name == NULL) return; if (entry->cme_bsb.ticking) { XtRemoveTimeOut(entry->cme_bsb.id); entry->cme_bsb.ticking = False; return; } temp = w; while(temp != NULL) { menu = XtNameToWidget(temp, entry->cme_bsb.menu_name); if (menu == NULL) temp = XtParent(temp); else { #if defined(CmeDebug) printf("FlipOff(BSB %lx) parent '%s': menu is %lx '%s'\n", (unsigned long)w, XtParent(w)->core.name, (unsigned long)menu, entry->cme_bsb.menu_name); #endif break; } } if (menu == NULL) { char error_buf[BUFSIZ]; snprintf(error_buf, sizeof(error_buf), "CmeBSB: %s %s.", "Could not find menu widget named", entry->cme_bsb.menu_name); XtAppWarning(XtWidgetToApplicationContext(w), error_buf); return; } /* Pop down the last menu in the chain, not the first. */ menus[num_menus++] = menu; while ((w = XawComplexMenuGetActiveEntry(menu)) != NULL) { #if defined(CmeDebug) printf("FlipOff: menu has an active entry\n"); #endif entry = (CmeBSBObject) w; temp = w; while (temp != NULL) { menu = XtNameToWidget(temp, entry->cme_bsb.menu_name); if (menu == NULL) temp = XtParent(temp); else break; } if (menu == NULL) break; menus[num_menus++] = menu; } while (num_menus) XtPopdown(menus[--num_menus]); } /* Function Name: FlipColors * Description: Invert the colors of the current entry. * Arguments: w - the bsb menu entry widget. * Returns: none. */ static void FlipColors(Widget w) { CmeBSBObject entry = (CmeBSBObject) w; if (entry->cme_bsb.set_values_area_cleared) return; XFillRectangle(XtDisplayOfObject(w), XtWindowOfObject(w), entry->cme_bsb.invert_gc, 0, (int) entry->rectangle.y, (unsigned int) entry->rectangle.width, (unsigned int) entry->rectangle.height); } /************************************************************ * * Private Functions. * ************************************************************/ /* Function Name: GetDefaultSize * Description: Calculates the Default (preferred) size of * this menu entry. * Arguments: w - the menu entry widget. * width, height - default sizes (RETURNED). * Returns: none. */ static void GetDefaultSize(Widget w, Dimension *width, Dimension *height) { CmeBSBObject entry = (CmeBSBObject) w; if (entry->cme_bsb.label == NULL) *width = 0; else *width = XTextWidth(entry->cme_bsb.font, entry->cme_bsb.label, strlen(entry->cme_bsb.label)); *width += entry->cme_bsb.left_margin + entry->cme_bsb.right_margin; *height = (entry->cme_bsb.font->max_bounds.ascent + entry->cme_bsb.font->max_bounds.descent); *height = ((int)*height * ( ONE_HUNDRED + entry->cme_bsb.vert_space )) / ONE_HUNDRED; } /* Function Name: DrawBitmaps * Description: Draws left and right bitmaps. * Arguments: w - the complex menu widget. * gc - graphics context to use for drawing. * Returns: none */ static void DrawBitmaps(Widget w, GC gc) { int x_loc, y_loc; CmeBSBObject entry = (CmeBSBObject) w; if ( (entry->cme_bsb.left_bitmap == None) && (entry->cme_bsb.right_bitmap == None) ) return; /* * Draw Left Bitmap. */ if (entry->cme_bsb.left_bitmap != None) { x_loc = (int)(entry->cme_bsb.left_margin - entry->cme_bsb.left_bitmap_width) / 2; y_loc = entry->rectangle.y + (int)(entry->rectangle.height - entry->cme_bsb.left_bitmap_height) / 2; XCopyPlane(XtDisplayOfObject(w), entry->cme_bsb.left_bitmap, XtWindowOfObject(w), gc, 0, 0, entry->cme_bsb.left_bitmap_width, entry->cme_bsb.left_bitmap_height, x_loc, y_loc, 1); } /* * Draw Right Bitmap. */ if (entry->cme_bsb.right_bitmap != None) { x_loc = entry->rectangle.width - (int)(entry->cme_bsb.right_margin + entry->cme_bsb.right_bitmap_width) / 2; y_loc = entry->rectangle.y + (int)(entry->rectangle.height - entry->cme_bsb.right_bitmap_height) / 2; XCopyPlane(XtDisplayOfObject(w), entry->cme_bsb.right_bitmap, XtWindowOfObject(w), gc, 0, 0, entry->cme_bsb.right_bitmap_width, entry->cme_bsb.right_bitmap_height, x_loc, y_loc, 1); } } /* Function Name: GetBitmapInfo * Description: Gets the bitmap information from either of the bitmaps. * Arguments: w - the bsb menu entry widget. * is_left - TRUE if we are testing left bitmap, * FALSE if we are testing the right bitmap. * Returns: none */ static void GetBitmapInfo(Widget w, Boolean is_left) { CmeBSBObject entry = (CmeBSBObject) w; unsigned int depth, bw; Window root; int x, y; unsigned int width, height; char buf[BUFSIZ]; if (is_left) { if (entry->cme_bsb.left_bitmap != None) { if (!XGetGeometry(XtDisplayOfObject(w), entry->cme_bsb.left_bitmap, &root, &x, &y, &width, &height, &bw, &depth)) { snprintf(buf, sizeof(buf), "CmeBSB Object: %s %s \"%s\".", "Could not", "get Left Bitmap geometry information for menu entry ", XtName(w)); XtAppError(XtWidgetToApplicationContext(w), buf); } if (depth != 1) { snprintf(buf, sizeof(buf), "CmeBSB Object: %s \"%s\"%s.", "Left Bitmap of entry ", XtName(w), " is not one bit deep."); XtAppError(XtWidgetToApplicationContext(w), buf); } entry->cme_bsb.left_bitmap_width = (Dimension) width; entry->cme_bsb.left_bitmap_height = (Dimension) height; } } else if (entry->cme_bsb.right_bitmap != None) { if (!XGetGeometry(XtDisplayOfObject(w), entry->cme_bsb.right_bitmap, &root, &x, &y, &width, &height, &bw, &depth)) { snprintf(buf, sizeof(buf), "CmeBSB Object: %s %s \"%s\".", "Could not", "get Right Bitmap geometry information for menu entry ", XtName(w)); XtAppError(XtWidgetToApplicationContext(w), buf); } if (depth != 1) { snprintf(buf, sizeof(buf), "CmeBSB Object: %s \"%s\"%s.", "Right Bitmap of entry ", XtName(w), " is not one bit deep."); XtAppError(XtWidgetToApplicationContext(w), buf); } entry->cme_bsb.right_bitmap_width = (Dimension) width; entry->cme_bsb.right_bitmap_height = (Dimension) height; } } /* Function Name: CreateGCs * Description: Creates all gc's for the complex menu widget. * Arguments: w - the complex menu widget. * Returns: none. */ static void CreateGCs(Widget w) { CmeBSBObject entry = (CmeBSBObject) w; XGCValues values; XtGCMask mask; values.foreground = XtParent(w)->core.background_pixel; values.background = entry->cme_bsb.foreground; values.font = entry->cme_bsb.font->fid; values.graphics_exposures = FALSE; mask = GCForeground | GCBackground | GCFont | GCGraphicsExposures; entry->cme_bsb.rev_gc = XtGetGC(w, mask, &values); values.foreground = entry->cme_bsb.foreground; values.background = XtParent(w)->core.background_pixel; entry->cme_bsb.norm_gc = XtGetGC(w, mask, &values); values.fill_style = FillTiled; values.tile = XmuCreateStippledPixmap(XtScreenOfObject(w), entry->cme_bsb.foreground, XtParent(w)->core.background_pixel, XtParent(w)->core.depth); values.graphics_exposures = FALSE; mask |= GCTile | GCFillStyle; entry->cme_bsb.norm_gray_gc = XtGetGC(w, mask, &values); values.foreground ^= values.background; values.background = 0; values.function = GXxor; mask = GCForeground | GCBackground | GCGraphicsExposures | GCFunction; entry->cme_bsb.invert_gc = XtGetGC(w, mask, &values); } /* Function Name: DestroyGCs * Description: Removes all gc's for the complex menu widget. * Arguments: w - the complex menu widget. * Returns: none. */ static void DestroyGCs(Widget w) { CmeBSBObject entry = (CmeBSBObject) w; XtReleaseGC(w, entry->cme_bsb.norm_gc); XtReleaseGC(w, entry->cme_bsb.norm_gray_gc); XtReleaseGC(w, entry->cme_bsb.rev_gc); XtReleaseGC(w, entry->cme_bsb.invert_gc); } /* Function Name: PopupMenu * Description: Pops up the pullright menu associated with this widget. * Arguments: w - the complex menu widget. * Returns: none. */ static void PopupMenu(Widget w) { CmeBSBObject entry = (CmeBSBObject) w; Widget menu = NULL, temp; Arg arglist[3]; Cardinal num_args; int menu_x, menu_y, menu_width, menu_height, button_width; Position button_x, button_y; temp = w; while(temp != NULL) { menu = XtNameToWidget(temp, entry->cme_bsb.menu_name); if (menu == NULL) temp = XtParent(temp); else break; } if (menu == NULL) { char error_buf[BUFSIZ]; snprintf(error_buf, sizeof(error_buf), "CmeBSB: %s %s.", "Could not find menu widget named", entry->cme_bsb.menu_name); XtAppWarning(XtWidgetToApplicationContext(w), error_buf); return; } #ifdef CmeDebug printf("PopupMenu(%lx) '%s'\n", (unsigned long)menu, entry->cme_bsb.menu_name); #endif if (!XtIsRealized(menu)) XtRealizeWidget(menu); menu_width = menu->core.width + 2 * menu->core.border_width; button_width = w->core.width + 2 * w->core.border_width; menu_height = menu->core.height + 2 * menu->core.border_width; XtTranslateCoords(w, 0, 0, &button_x, &button_y); menu_x = button_x + button_width + menu->core.border_width - 10; /* XXX */ menu_y = button_y + 1; if (menu_x >= 0) { int scr_width = WidthOfScreen(XtScreen(menu)); if (menu_x + menu_width > scr_width) menu_x = scr_width - menu_width; } if (menu_x < 0) menu_x = 0; if (menu_y >= 0) { int scr_height = HeightOfScreen(XtScreen(menu)); if (menu_y + menu_height > scr_height) menu_y = scr_height - menu_height; } if (menu_y < 0) menu_y = 0; num_args = 0; XtSetArg(arglist[num_args], XtNx, menu_x); num_args++; XtSetArg(arglist[num_args], XtNy, menu_y); num_args++; XtSetArg(arglist[num_args], XtNcMparent, XtParent(w)); num_args++; XtSetValues(menu, arglist, num_args); XtPopup(menu, XtGrabNonexclusive); } #ifdef apollo /* * The apollo compiler that we have optimizes out my code for * FlipColors() since it is static. and no one executes it in this * file. I am setting the function pointer into the class structure so * that it can be called by my parent who will tell me to when to * highlight and unhighlight. */ void _XawCmeBSBApolloHack(void) { FlipColors(); } #endif /* apollo */ suite3270-4.1/x3270/CmeBSB.h000066400000000000000000000113531413735575200150310ustar00rootroot00000000000000/* * (from) $XConsortium: SmeBSB.h,v 1.5 89/12/11 15:20:14 kit Exp $ * * Copyright (c) 1995-2009, Paul Mattes. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of Paul Mattes nor his contributors may be used * to endorse or promote products derived from this software without * specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. * * Copyright 1989 Massachusetts Institute of Technology * * Permission to use, copy, modify, distribute, and sell this software and its * documentation for any purpose is hereby granted without fee, provided that * the above copyright notice appear in all copies and that both that * copyright notice and this permission notice appear in supporting * documentation, and that the name of M.I.T. not be used in advertising or * publicity pertaining to distribution of the software without specific, * written prior permission. M.I.T. makes no representations about the * suitability of this software for any purpose. It is provided "as is" * without express or implied warranty. * * M.I.T. DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL M.I.T. * BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ /* * CmeBSB.h - Public Header file for CmeBSB object. * (from) SmeBSB.h - Public Header file for SmeBSB object. * * This is the public header file for the Athena BSB Cme object. * It is intended to be used with the complex menu widget. This object * provides bitmap - string - bitmap style entries. * * Date: April 3, 1989 * * By: Chris D. Peterson * MIT X Consortium * kit@expo.lcs.mit.edu */ #ifndef _CmeBSB_h #define _CmeBSB_h #include #include "Cme.h" /**************************************************************** * * CmeBSB object * ****************************************************************/ /* BSB Menu Entry Resources: Name Class RepType Default Value ---- ----- ------- ------------- callback Callback Callback NULL destroyCallback Callback Pointer NULL font Font XFontStruct * XtDefaultFont foreground Foreground Pixel XtDefaultForeground height Height Dimension 0 label Label String Name of entry leftBitmap LeftBitmap Pixmap None leftMargin HorizontalMargins Dimension 4 rightBitmap RightBitmap Pixmap None rightMargin HorizontalMargins Dimension 4 sensitive Sensitive Boolean True vertSpace VertSpace int 25 width Width Dimension 0 x Position Position 0n y Position Position 0 */ typedef struct _CmeBSBClassRec *CmeBSBObjectClass; typedef struct _CmeBSBRec *CmeBSBObject; extern WidgetClass cmeBSBObjectClass; #define XtNleftBitmap "leftBitmap" #define XtNleftMargin "leftMargin" #define XtNrightBitmap "rightBitmap" #define XtNrightMargin "rightMargin" #define XtNvertSpace "vertSpace" #define XtCLeftBitmap "LeftBitmap" #define XtCHorizontalMargins "HorizontalMargins" #define XtCRightBitmap "RightBitmap" #define XtCVertSpace "VertSpace" #endif /* _CmeBSB_h */ suite3270-4.1/x3270/CmeBSBP.h000066400000000000000000000123301413735575200151450ustar00rootroot00000000000000/* * (from) $XConsortium: SmeBSBP.h,v 1.6 89/12/11 15:20:15 kit Exp $ * * Copyright (c) 1995-2009, Paul Mattes. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of Paul Mattes nor his contributors may be used * to endorse or promote products derived from this software without * specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. * * Copyright 1989 Massachusetts Institute of Technology * * Permission to use, copy, modify, distribute, and sell this software and its * documentation for any purpose is hereby granted without fee, provided that * the above copyright notice appear in all copies and that both that * copyright notice and this permission notice appear in supporting * documentation, and that the name of M.I.T. not be used in advertising or * publicity pertaining to distribution of the software without specific, * written prior permission. M.I.T. makes no representations about the * suitability of this software for any purpose. It is provided "as is" * without express or implied warranty. * * M.I.T. DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL M.I.T. * BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. * * Author: Chris D. Peterson, MIT X Consortium */ /* * CmeP.h - Private definitions for Cme object * (from) SmeP.h - Private definitions for Sme object * */ #ifndef _XawCmeBSBP_h #define _XawCmeBSBP_h /*********************************************************************** * * Cme Object Private Data * ***********************************************************************/ #include "CmeP.h" #include "CmeBSB.h" /************************************************************ * * New fields for the Cme Object class record. * ************************************************************/ typedef struct _CmeBSBClassPart { XtPointer extension; } CmeBSBClassPart; /* Full class record declaration */ typedef struct _CmeBSBClassRec { RectObjClassPart rect_class; CmeClassPart cme_class; CmeBSBClassPart cme_bsb_class; } CmeBSBClassRec; extern CmeBSBClassRec cmeBSBClassRec; /* New fields for the Cme Object record */ typedef struct { /* resources */ String label; /* The entry label. */ int vert_space; /* extra vert space to leave, as a percentage of the font height of the label. */ Pixmap left_bitmap, right_bitmap; /* bitmaps to show. */ Dimension left_margin, right_margin; /* left and right margins. */ Pixel foreground; /* foreground color. */ XFontStruct * font; /* The font to show label in. */ XtJustify justify; /* Justification for the label. */ String menu_name; /* The submenu to pop up. */ /* private resources. */ Boolean set_values_area_cleared; /* Remember if we need to unhighlight. */ GC norm_gc; /* noral color gc. */ GC rev_gc; /* reverse color gc. */ GC norm_gray_gc; /* Normal color (grayed out) gc. */ GC invert_gc; /* gc for flipping colors. */ Boolean ticking; /* is the pop-up timer ticking? */ XtIntervalId id; /* pop-up timer id */ Dimension left_bitmap_width; /* size of each bitmap. */ Dimension left_bitmap_height; Dimension right_bitmap_width; Dimension right_bitmap_height; } CmeBSBPart; /**************************************************************** * * Full instance record declaration * ****************************************************************/ typedef struct _CmeBSBRec { ObjectPart object; RectObjPart rectangle; CmePart cme; CmeBSBPart cme_bsb; } CmeBSBRec; /************************************************************ * * Private declarations. * ************************************************************/ #endif /* _XawCmeBSBP_h */ suite3270-4.1/x3270/CmeLine.c000066400000000000000000000243221413735575200153050ustar00rootroot00000000000000/* (from) $XConsortium: SmeLine.c,v 1.13 91/07/23 12:23:21 rws Exp $ */ /* * Copyright (c) 1995-2009, 2014 Paul Mattes. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of Paul Mattes nor his contributors may be used * to endorse or promote products derived from this software without * specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. * * Copyright 1989 Massachusetts Institute of Technology * * Permission to use, copy, modify, distribute, and sell this software and its * documentation for any purpose is hereby granted without fee, provided that * the above copyright notice appear in all copies and that both that * copyright notice and this permission notice appear in supporting * documentation, and that the name of M.I.T. not be used in advertising or * publicity pertaining to distribution of the software without specific, * written prior permission. M.I.T. makes no representations about the * suitability of this software for any purpose. It is provided "as is" * without express or implied warranty. * * M.I.T. DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL M.I.T. * BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. * * Author: Chris D. Peterson, MIT X Consortium */ /* * Cme.c - Source code for the generic menu entry * (from) Sme.c - Source code for the generic menu entry * * Date: September 26, 1989 * * By: Chris D. Peterson * MIT X Consortium * kit@expo.lcs.mit.edu */ #include "globals.h" #include #include #include #include #include "CmeLineP.h" #include #define offset(field) XtOffsetOf(CmeLineRec, cme_line.field) static XtResource resources[] = { {XtNlineWidth, XtCLineWidth, XtRDimension, sizeof(Dimension), offset(line_width), XtRImmediate, (XtPointer) 1}, {XtNstipple, XtCStipple, XtRBitmap, sizeof(Pixmap), offset(stipple), XtRImmediate, (XtPointer) XtUnspecifiedPixmap}, {XtNforeground, XtCForeground, XtRPixel, sizeof(Pixel), offset(foreground), XtRString, XtDefaultForeground}, }; #undef offset /* * Function definitions. */ static void Redisplay(Widget, XEvent *, Region); static void Initialize(Widget, Widget, ArgList, Cardinal *); static void DestroyGC(Widget); static void CreateGC(Widget); static Boolean SetValues(Widget, Widget, Widget, ArgList, Cardinal *); static XtGeometryResult QueryGeometry(Widget, XtWidgetGeometry *, XtWidgetGeometry *); #define SUPERCLASS (&cmeClassRec) CmeLineClassRec cmeLineClassRec = { { /* superclass */ (WidgetClass) SUPERCLASS, /* class_name */ "CmeLine", /* size */ sizeof(CmeLineRec), /* class_initialize */ XawInitializeWidgetSet, /* class_part_initialize*/ NULL, /* Class init'ed */ FALSE, /* initialize */ Initialize, /* initialize_hook */ NULL, /* realize */ NULL, /* actions */ NULL, /* num_actions */ ZERO, /* resources */ resources, /* resource_count */ XtNumber(resources), /* xrm_class */ NULLQUARK, /* compress_motion */ FALSE, /* compress_exposure */ FALSE, /* compress_enterleave*/ FALSE, /* visible_interest */ FALSE, /* destroy */ DestroyGC, /* resize */ NULL, /* expose */ Redisplay, /* set_values */ SetValues, /* set_values_hook */ NULL, /* set_values_almost */ XtInheritSetValuesAlmost, /* get_values_hook */ NULL, /* accept_focus */ NULL, /* intrinsics version */ XtVersion, /* callback offsets */ NULL, /* tm_table */ NULL, /* query_geometry */ QueryGeometry, /* display_accelerator*/ NULL, /* extension */ NULL },{ /* Menu Entry Fields */ /* highlight */ XtInheritHighlight, /* unhighlight */ XtInheritUnhighlight, /* notify */ XtInheritNotify, /* extension */ NULL },{ /* Line Menu Entry Fields */ /* extension */ NULL } }; WidgetClass cmeLineObjectClass = (WidgetClass) &cmeLineClassRec; /************************************************************ * * Semi-Public Functions. * ************************************************************/ /* Function Name: Initialize * Description: Initializes the complex menu widget * Arguments: request - the widget requested by the argument list. * new - the new widget with both resource and non * resource values. * Returns: none. */ static void Initialize(Widget request _is_unused, Widget new, ArgList args _is_unused, Cardinal *num_args _is_unused) { CmeLineObject entry = (CmeLineObject) new; if (entry->rectangle.height == 0) entry->rectangle.height = entry->cme_line.line_width; CreateGC(new); } /* Function Name: CreateGC * Description: Creates the GC for the line entry widget. * Arguments: w - the Line entry widget. * Returns: none * * We can only share the GC if there is no stipple, because * we need to change the stipple origin when drawing. */ static void CreateGC(Widget w) { CmeLineObject entry = (CmeLineObject) w; XGCValues values; XtGCMask mask = GCForeground | GCGraphicsExposures | GCLineWidth ; values.foreground = entry->cme_line.foreground; values.graphics_exposures = FALSE; values.line_width = entry->cme_line.line_width; if (entry->cme_line.stipple != XtUnspecifiedPixmap) { values.stipple = entry->cme_line.stipple; values.fill_style = FillStippled; mask |= GCStipple | GCFillStyle; entry->cme_line.gc = XCreateGC(XtDisplayOfObject(w), RootWindowOfScreen(XtScreenOfObject(w)), mask, &values); } else entry->cme_line.gc = XtGetGC(w, mask, &values); } /* Function Name: DestroyGC * Description: Destroys the GC when we are done with it. * Arguments: w - the Line entry widget. * Returns: none */ static void DestroyGC(Widget w) { CmeLineObject entry = (CmeLineObject) w; if (entry->cme_line.stipple != XtUnspecifiedPixmap) XFreeGC(XtDisplayOfObject(w), entry->cme_line.gc); else XtReleaseGC(w, entry->cme_line.gc); } /* Function Name: Redisplay * Description: Paints the Line * Arguments: w - the menu entry. * event, region - NOT USED. * Returns: none */ static void Redisplay(Widget w, XEvent *event _is_unused, Region region _is_unused) { CmeLineObject entry = (CmeLineObject) w; int y = entry->rectangle.y + (int)(entry->rectangle.height - entry->cme_line.line_width) / 2; if (entry->cme_line.stipple != XtUnspecifiedPixmap) XSetTSOrigin(XtDisplayOfObject(w), entry->cme_line.gc, 0, y); XFillRectangle(XtDisplayOfObject(w), XtWindowOfObject(w), entry->cme_line.gc, 0, y, (unsigned int) entry->rectangle.width, (unsigned int) entry->cme_line.line_width ); } /* Function Name: SetValues * Description: Relayout the menu when one of the resources is changed. * Arguments: current - current state of the widget. * request - what was requested. * new - what the widget will become. * Returns: none */ static Boolean SetValues(Widget current, Widget request _is_unused, Widget new, ArgList args _is_unused, Cardinal *num_args _is_unused) { CmeLineObject entry = (CmeLineObject) new; CmeLineObject old_entry = (CmeLineObject) current; if ( (entry->cme_line.line_width != old_entry->cme_line.line_width) && (entry->cme_line.stipple != old_entry->cme_line.stipple) ) { DestroyGC(current); CreateGC(new); return(TRUE); } return(FALSE); } /* Function Name: QueryGeometry. * Description: Returns the preferred geometry for this widget. * Arguments: w - the menu entry object. * itended, return - the intended and return geometry info. * Returns: A Geometry Result. * * See the Intrinsics manual for details on what this function is for. * * I just return the height and a width of 1. */ static XtGeometryResult QueryGeometry(Widget w, XtWidgetGeometry *intended, XtWidgetGeometry *return_val) { CmeObject entry = (CmeObject) w; Dimension width; XtGeometryResult ret_val = XtGeometryYes; XtGeometryMask mode = intended->request_mode; width = 1; /* we can be really small. */ if ( ((mode & CWWidth) && (intended->width != width)) || !(mode & CWWidth) ) { return_val->request_mode |= CWWidth; return_val->width = width; mode = return_val->request_mode; if ( (mode & CWWidth) && (width == entry->rectangle.width) ) return(XtGeometryNo); return(XtGeometryAlmost); } return(ret_val); } suite3270-4.1/x3270/CmeLine.h000066400000000000000000000077161413735575200153220ustar00rootroot00000000000000/* * (from) $XConsortium: SmeLine.h,v 1.3 89/12/11 15:20:19 kit Exp $ * * Copyright (c) 1995-2009, Paul Mattes. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of Paul Mattes nor his contributors may be used * to endorse or promote products derived from this software without * specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. * * Copyright 1989 Massachusetts Institute of Technology * * Permission to use, copy, modify, distribute, and sell this software and its * documentation for any purpose is hereby granted without fee, provided that * the above copyright notice appear in all copies and that both that * copyright notice and this permission notice appear in supporting * documentation, and that the name of M.I.T. not be used in advertising or * publicity pertaining to distribution of the software without specific, * written prior permission. M.I.T. makes no representations about the * suitability of this software for any purpose. It is provided "as is" * without express or implied warranty. * * M.I.T. DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL M.I.T. * BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ /* * CmeLine.h - Public Header file for CmeLine object. * (from) SmeLine.h - Public Header file for SmeLine object. * * This is the public header file for the Athena CmeLine object. * It is intended to be used with the complex menu widget. * * Date: April 3, 1989 * * By: Chris D. Peterson * MIT X Consortium * kit@expo.lcs.mit.edu */ #ifndef _CmeLine_h #define _CmeLine_h #include "Cme.h" #include /**************************************************************** * * CmeLine Object * ****************************************************************/ /* Menu Entry Resources: Name Class RepType Default Value ---- ----- ------- ------------- callback Callback Pointer NULL destroyCallback Callback Pointer NULL height Height Dimension 0 sensitive Sensitive Boolean True width Width Dimension 0 x Position Position 0n y Position Position 0 */ #define XtCLineWidth "LineWidth" #define XtCStipple "Stipple" #define XtNlineWidth "lineWidth" #define XtNstipple "stipple" typedef struct _CmeLineClassRec* CmeLineObjectClass; typedef struct _CmeLineRec* CmeLineObject; extern WidgetClass cmeLineObjectClass; #endif /* _CmeLine_h */ suite3270-4.1/x3270/CmeLineP.h000066400000000000000000000106511413735575200154320ustar00rootroot00000000000000/* * (from) $XConsortium: SmeLineP.h,v 1.3 89/12/11 15:20:20 kit Exp $ * * Copyright (c) 1995-2009, Paul Mattes. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of Paul Mattes nor his contributors may be used * to endorse or promote products derived from this software without * specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. * * Copyright 1989 Massachusetts Institute of Technology * * Permission to use, copy, modify, distribute, and sell this software and its * documentation for any purpose is hereby granted without fee, provided that * the above copyright notice appear in all copies and that both that * copyright notice and this permission notice appear in supporting * documentation, and that the name of M.I.T. not be used in advertising or * publicity pertaining to distribution of the software without specific, * written prior permission. M.I.T. makes no representations about the * suitability of this software for any purpose. It is provided "as is" * without express or implied warranty. * * M.I.T. DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL M.I.T. * BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. * * Author: Chris D. Peterson, MIT X Consortium */ /* * CmeLineP.h - Private definitions for CmeLine widget * (from) SmeLineP.h - Private definitions for SmeLine widget * */ #ifndef _XawCmeLineP_h #define _XawCmeLineP_h /*********************************************************************** * * CmeLine Widget Private Data * ***********************************************************************/ #include "CmeP.h" #include "CmeLine.h" /************************************************************ * * New fields for the CmeLine widget class record. * ************************************************************/ typedef struct _CmeLineClassPart { XtPointer extension; } CmeLineClassPart; /* Full class record declaration */ typedef struct _CmeLineClassRec { RectObjClassPart rect_class; CmeClassPart cme_class; CmeLineClassPart cme_line_class; } CmeLineClassRec; extern CmeLineClassRec cmeLineClassRec; /* New fields for the CmeLine widget record */ typedef struct { /* resources */ Pixel foreground; /* Foreground color. */ Pixmap stipple; /* Line Stipple. */ Dimension line_width; /* Width of the line. */ /* private data. */ GC gc; /* Graphics context for drawing line. */ } CmeLinePart; /**************************************************************** * * Full instance record declaration * ****************************************************************/ typedef struct _CmeLineRec { ObjectPart object; RectObjPart rectangle; CmePart cme; CmeLinePart cme_line; } CmeLineRec; /************************************************************ * * Private declarations. * ************************************************************/ #endif /* _XawCmeLineP_h */ suite3270-4.1/x3270/CmeP.h000066400000000000000000000111221413735575200146140ustar00rootroot00000000000000/* * (from) $XConsortium: SmeP.h,v 1.4 89/12/11 15:20:22 kit Exp $ * * Copyright (c) 1995-2009, Paul Mattes. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of Paul Mattes nor his contributors may be used * to endorse or promote products derived from this software without * specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. * * Copyright 1989 Massachusetts Institute of Technology * * Permission to use, copy, modify, distribute, and sell this software and its * documentation for any purpose is hereby granted without fee, provided that * the above copyright notice appear in all copies and that both that * copyright notice and this permission notice appear in supporting * documentation, and that the name of M.I.T. not be used in advertising or * publicity pertaining to distribution of the software without specific, * written prior permission. M.I.T. makes no representations about the * suitability of this software for any purpose. It is provided "as is" * without express or implied warranty. * * M.I.T. DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL M.I.T. * BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ /* * CmeP.h - Private Header file for Cme object. * (from) SmeP.h - Private Header file for Sme object. * * This is the private header file for the Athena Cme object. * This object is intended to be used with the complex menu widget. * * Date: April 3, 1989 * * By: Chris D. Peterson * MIT X Consortium * kit@expo.lcs.mit.edu */ #ifndef _XawCmeP_h #define _XawCmeP_h /*********************************************************************** * * Cme Widget Private Data * ***********************************************************************/ #include #include "Cme.h" /************************************************************ * * New fields for the Cme widget class record. * ************************************************************/ typedef struct _CmeClassPart { void (*highlight)(); void (*unhighlight)(); void (*notify)(); XtPointer extension; } CmeClassPart; /* Full class record declaration */ typedef struct _CmeClassRec { RectObjClassPart rect_class; CmeClassPart cme_class; } CmeClassRec; extern CmeClassRec cmeClassRec; /* New fields for the Cme widget record */ typedef struct { /* resources */ XtCallbackList callbacks; /* The callback list */ } CmePart; /**************************************************************** * * Full instance record declaration * ****************************************************************/ typedef struct _CmeRec { ObjectPart object; RectObjPart rectangle; CmePart cme; } CmeRec; /************************************************************ * * Private declarations. * ************************************************************/ typedef void (*_XawEntryVoidFunc)(); #define XtInheritHighlight ((_XawEntryVoidFunc) _XtInherit) #define XtInheritUnhighlight XtInheritHighlight #define XtInheritNotify XtInheritHighlight #endif /* _XawCmeP_h */ suite3270-4.1/x3270/CmplxMenu.c000066400000000000000000001257341413735575200157120ustar00rootroot00000000000000/* (from) $XConsortium: SimpleMenu.c,v 1.41 92/09/10 16:25:07 converse Exp $ */ /* * Copyright (c) 1995-2009, 2013-2014, 2019 Paul Mattes. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of Paul Mattes nor his contributors may be used * to endorse or promote products derived from this software without * specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. * * Copyright 1989 Massachusetts Institute of Technology * * Permission to use, copy, modify, distribute, and sell this software and its * documentation for any purpose is hereby granted without fee, provided that * the above copyright notice appear in all copies and that both that * copyright notice and this permission notice appear in supporting * documentation, and that the name of M.I.T. not be used in advertising or * publicity pertaining to distribution of the software without specific, * written prior permission. M.I.T. makes no representations about the * suitability of this software for any purpose. It is provided "as is" * without express or implied warranty. * * M.I.T. DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL M.I.T. * BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ /* * ComplexMenu.c - Source code file for ComplexMenu widget. * (from) SimpleMenu.c - Source code file for SimpleMenu widget. * * Date: April 3, 1989 * * By: Chris D. Peterson * MIT X Consortium * kit@expo.lcs.mit.edu */ #include "globals.h" #include #include #include #include #include "CmplxMenuP.h" #include "CmeBSB.h" #include #include #include #include #define streq(a, b) ( strcmp((a), (b)) == 0 ) #define offset(field) XtOffsetOf(ComplexMenuRec, complex_menu.field) static XtResource resources[] = { /* * Label Resources. */ {XtNlabel, XtCLabel, XtRString, sizeof(String), offset(label_string), XtRString, NULL}, {XtNlabelClass, XtCLabelClass, XtRPointer, sizeof(WidgetClass), offset(label_class), XtRImmediate, (XtPointer) NULL}, /* * Layout Resources. */ {XtNrowHeight, XtCRowHeight, XtRDimension, sizeof(Dimension), offset(row_height), XtRImmediate, (XtPointer) 0}, {XtNtopMargin, XtCVerticalMargins, XtRDimension, sizeof(Dimension), offset(top_margin), XtRImmediate, (XtPointer) 0}, {XtNbottomMargin, XtCVerticalMargins, XtRDimension, sizeof(Dimension), offset(bottom_margin), XtRImmediate, (XtPointer) 0}, /* * Misc. Resources */ { XtNallowShellResize, XtCAllowShellResize, XtRBoolean, sizeof(Boolean), XtOffsetOf(ComplexMenuRec, shell.allow_shell_resize), XtRImmediate, (XtPointer) TRUE }, {XtNcursor, XtCCursor, XtRCursor, sizeof(Cursor), offset(cursor), XtRImmediate, (XtPointer) None}, {XtNmenuOnScreen, XtCMenuOnScreen, XtRBoolean, sizeof(Boolean), offset(menu_on_screen), XtRImmediate, (XtPointer) TRUE}, {XtNpopupOnEntry, XtCPopupOnEntry, XtRWidget, sizeof(Widget), offset(popup_entry), XtRWidget, NULL}, {XtNbackingStore, XtCBackingStore, XtRBackingStore, sizeof (int), offset(backing_store), XtRImmediate, (XtPointer) (Always + WhenMapped + NotUseful)}, {XtNcMparent, XtCCMparent, XtRWidget, sizeof(Widget), offset(parent), XtRWidget, NULL}, {XtNcMdefer, XtCCMdefer, XtRWidget, sizeof(Widget), offset(deferred_notify), XtRWidget, NULL}, }; #undef offset static char defaultTranslations[] = ": highlight() \n\ : leftWindow() \n\ : highlight() \n\ : saveUnhighlight() myMenuPopdown()"; /* * Semi Public function definitions. */ static void Redisplay(Widget, XEvent *, Region); static void Realize(Widget, XtValueMask *, XSetWindowAttributes *); static void ChangeManaged(Widget); static void Resize(Widget); static void Initialize(Widget, Widget, ArgList, Cardinal *); static void ClassInitialize(void); static void ClassPartInitialize(WidgetClass); static Boolean SetValues(Widget, Widget, Widget, ArgList, Cardinal *); static Boolean SetValuesHook(Widget, ArgList, Cardinal *); static XtGeometryResult GeometryManager(Widget, XtWidgetGeometry *, XtWidgetGeometry *); /* * Action Routine Definitions */ static void PositionMenuAction(Widget, XEvent *, String *, Cardinal *); static void SaveUnhighlight(Widget, XEvent *, String *, Cardinal *); static void LeftWindow(Widget, XEvent *, String *, Cardinal *); static void MyMenuPopdown(Widget, XEvent *, String *, Cardinal *); static void Highlight(Widget, XEvent *, String *, Cardinal *); /* * Private Function Definitions. */ static void Unhighlight(), Notify(); static void MakeSetValuesRequest(Widget, Dimension, Dimension); static void Layout(Widget, Dimension *, Dimension *); static void CreateLabel(Widget); static void AddPositionAction(XtAppContext, caddr_t); static void ChangeCursorOnGrab(Widget, XtPointer junk, XtPointer); static void PositionMenu(Widget, XPoint *); static void ClearParent(Widget, XtPointer, XtPointer); static Dimension GetMenuWidth(Widget, Widget); static Dimension GetMenuHeight(Widget); static Widget FindMenu(Widget, String); static CmeObject GetEventEntry(Widget, XEvent *); static CmeObject GetRightEntry(Widget, XEvent *); static void MoveMenu(Widget, Position, Position); static XtActionsRec actionsList[] = { {"highlight", Highlight}, {"saveUnhighlight", SaveUnhighlight}, {"leftWindow", LeftWindow}, {"myMenuPopdown", MyMenuPopdown}, }; static CompositeClassExtensionRec extension_rec = { /* next_extension */ NULL, /* record_type */ NULLQUARK, /* version */ XtCompositeExtensionVersion, /* record_size */ sizeof(CompositeClassExtensionRec), /* accepts_objects */ TRUE, }; #define superclass (&overrideShellClassRec) ComplexMenuClassRec complexMenuClassRec = { { /* superclass */ (WidgetClass) superclass, /* class_name */ "ComplexMenu", /* size */ sizeof(ComplexMenuRec), /* class_initialize */ ClassInitialize, /* class_part_initialize*/ ClassPartInitialize, /* Class init'ed */ FALSE, /* initialize */ Initialize, /* initialize_hook */ NULL, /* realize */ Realize, /* actions */ actionsList, /* num_actions */ XtNumber(actionsList), /* resources */ resources, /* resource_count */ XtNumber(resources), /* xrm_class */ NULLQUARK, /* compress_motion */ TRUE, /* compress_exposure */ TRUE, /* compress_enterleave*/ TRUE, /* visible_interest */ FALSE, /* destroy */ NULL, /* resize */ Resize, /* expose */ Redisplay, /* set_values */ SetValues, /* set_values_hook */ SetValuesHook, /* set_values_almost */ XtInheritSetValuesAlmost, /* get_values_hook */ NULL, /* accept_focus */ NULL, /* intrinsics version */ XtVersion, /* callback offsets */ NULL, /* tm_table */ defaultTranslations, /* query_geometry */ NULL, /* display_accelerator*/ NULL, /* extension */ NULL },{ /* geometry_manager */ GeometryManager, /* change_managed */ ChangeManaged, /* insert_child */ XtInheritInsertChild, /* delete_child */ XtInheritDeleteChild, /* extension */ NULL },{ /* Shell extension */ NULL },{ /* Override extension */ NULL },{ /* Complex Menu extension*/ NULL } }; WidgetClass complexMenuWidgetClass = (WidgetClass)&complexMenuClassRec; /************************************************************ * * Semi-Public Functions. * ************************************************************/ /* Function Name: ClassInitialize * Description: Class Initialize routine, called only once. * Arguments: none. * Returns: none. */ static void ClassInitialize(void) { XawInitializeWidgetSet(); XtAddConverter( XtRString, XtRBackingStore, XmuCvtStringToBackingStore, NULL, 0 ); XmuAddInitializer( AddPositionAction, NULL); } /* Function Name: ClassInitialize * Description: Class Part Initialize routine, called for every * subclass. Makes sure that the subclasses pick up * the extension record. * Arguments: wc - the widget class of the subclass. * Returns: none. */ static void ClassPartInitialize(WidgetClass wc) { ComplexMenuWidgetClass cmwc = (ComplexMenuWidgetClass) wc; /* * Make sure that our subclass gets the extension rec too. */ extension_rec.next_extension = cmwc->composite_class.extension; cmwc->composite_class.extension = (XtPointer) &extension_rec; } /* Function Name: Initialize * Description: Initializes the complex menu widget * Arguments: request - the widget requested by the argument list. * new - the new widget with both resource and non * resource values. * Returns: none. */ static void Initialize(Widget request _is_unused, Widget new, ArgList args _is_unused, Cardinal *num_args _is_unused) { ComplexMenuWidget cmw = (ComplexMenuWidget) new; XmuCallInitializers(XtWidgetToApplicationContext(new)); if (cmw->complex_menu.label_class == NULL) cmw->complex_menu.label_class = cmeBSBObjectClass; cmw->complex_menu.label = NULL; cmw->complex_menu.entry_set = NULL; cmw->complex_menu.prev_entry = NULL; cmw->complex_menu.recursive_set_values = FALSE; if (cmw->complex_menu.label_string != NULL) CreateLabel(new); cmw->complex_menu.menu_width = TRUE; if (cmw->core.width == 0) { cmw->complex_menu.menu_width = FALSE; cmw->core.width = GetMenuWidth(new, NULL); } cmw->complex_menu.menu_height = TRUE; if (cmw->core.height == 0) { cmw->complex_menu.menu_height = FALSE; cmw->core.height = GetMenuHeight(new); } /* * Add a popup_callback routine for changing the cursor. */ XtAddCallback(new, XtNpopupCallback, ChangeCursorOnGrab, NULL); /* * Add a popdown_callback routine for clearing the parent field. */ XtAddCallback(new, XtNpopdownCallback, ClearParent, NULL); } /* Function Name: Redisplay * Description: Redisplays the contents of the widget. * Arguments: w - the complex menu widget. * event - the X event that caused this redisplay. * region - the region the needs to be repainted. * Returns: none. */ static void Redisplay(Widget w, XEvent *event _is_unused, Region region) { ComplexMenuWidget cmw = (ComplexMenuWidget) w; CmeObject * entry; CmeObjectClass class; if (region == NULL) XClearWindow(XtDisplay(w), XtWindow(w)); /* * Check and Paint each of the entries - including the label. */ ForAllChildren(cmw, entry) { if (!XtIsManaged ( (Widget) *entry)) continue; if (region != NULL) switch(XRectInRegion(region, (int) (*entry)->rectangle.x, (int) (*entry)->rectangle.y, (unsigned int) (*entry)->rectangle.width, (unsigned int) (*entry)->rectangle.height)) { case RectangleIn: case RectanglePart: break; default: continue; } class = (CmeObjectClass) (*entry)->object.widget_class; if (class->rect_class.expose != NULL) (class->rect_class.expose)( (Widget) *entry, NULL, NULL); } } /* Function Name: Realize * Description: Realizes the widget. * Arguments: w - the complex menu widget. * mask - value mask for the window to create. * attrs - attributes for the window to create. * Returns: none */ static void Realize(Widget w, XtValueMask *mask, XSetWindowAttributes *attrs) { ComplexMenuWidget cmw = (ComplexMenuWidget) w; attrs->cursor = cmw->complex_menu.cursor; *mask |= CWCursor; if ((cmw->complex_menu.backing_store == Always) || (cmw->complex_menu.backing_store == NotUseful) || (cmw->complex_menu.backing_store == WhenMapped) ) { *mask |= CWBackingStore; attrs->backing_store = cmw->complex_menu.backing_store; } else *mask &= ~CWBackingStore; (*superclass->core_class.realize) (w, mask, attrs); } /* Function Name: Resize * Description: Handle the menu being resized bigger. * Arguments: w - the complex menu widget. * Returns: none. */ static void Resize(Widget w) { ComplexMenuWidget cmw = (ComplexMenuWidget) w; CmeObject * entry; if ( !XtIsRealized(w) ) return; ForAllChildren(cmw, entry) /* reset width of all entries. */ if (XtIsManaged( (Widget) *entry)) (*entry)->rectangle.width = cmw->core.width; Redisplay(w, (XEvent *) NULL, (Region) NULL); } /* Function Name: SetValues * Description: Relayout the menu when one of the resources is changed. * Arguments: current - current state of the widget. * request - what was requested. * new - what the widget will become. * Returns: none */ static Boolean SetValues(Widget current, Widget request _is_unused, Widget new, ArgList args _is_unused, Cardinal *num_args _is_unused) { ComplexMenuWidget cmw_old = (ComplexMenuWidget) current; ComplexMenuWidget cmw_new = (ComplexMenuWidget) new; Boolean ret_val = FALSE, layout = FALSE; if (!XtIsRealized(current)) return(FALSE); if (!cmw_new->complex_menu.recursive_set_values) { if (cmw_new->core.width != cmw_old->core.width) { cmw_new->complex_menu.menu_width = (cmw_new->core.width != 0); layout = TRUE; } if (cmw_new->core.height != cmw_old->core.height) { cmw_new->complex_menu.menu_height = (cmw_new->core.height != 0); layout = TRUE; } } if (cmw_old->complex_menu.cursor != cmw_new->complex_menu.cursor) XDefineCursor(XtDisplay(new), XtWindow(new), cmw_new->complex_menu.cursor); if (cmw_old->complex_menu.label_string !=cmw_new->complex_menu.label_string) { if (cmw_new->complex_menu.label_string == NULL) /* Destroy. */ XtDestroyWidget((Widget) cmw_old->complex_menu.label); else if (cmw_old->complex_menu.label_string == NULL) /* Create. */ CreateLabel(new); else { /* Change. */ Arg arglist[1]; XtSetArg(arglist[0], XtNlabel, cmw_new->complex_menu.label_string); XtSetValues((Widget) cmw_new->complex_menu.label, arglist, ONE); } } if (cmw_old->complex_menu.label_class != cmw_new->complex_menu.label_class) XtAppWarning(XtWidgetToApplicationContext(new), "No Dynamic class change of the ComplexMenu Label."); if ((cmw_old->complex_menu.top_margin != cmw_new->complex_menu.top_margin) || (cmw_old->complex_menu.bottom_margin != cmw_new->complex_menu.bottom_margin) /* filler................. */ ) { layout = TRUE; ret_val = TRUE; } if (layout) Layout(new, NULL, NULL); return(ret_val); } /* Function Name: SetValuesHook * Description: To handle a special case, this is passed the * actual arguments. * Arguments: w - the menu widget. * arglist - the argument list passed to XtSetValues. * num_args - the number of args. * Returns: none */ /* * If the user actually passed a width and height to the widget * then this MUST be used, rather than our newly calculated width and * height. */ static Boolean SetValuesHook(Widget w, ArgList arglist, Cardinal *num_args) { register Cardinal i; Dimension width, height; width = w->core.width; height = w->core.height; for ( i = 0 ; i < *num_args ; i++) { if ( streq(arglist[i].name, XtNwidth) ) width = (Dimension) arglist[i].value; if ( streq(arglist[i].name, XtNheight) ) height = (Dimension) arglist[i].value; } if ((width != w->core.width) || (height != w->core.height)) MakeSetValuesRequest(w, width, height); return(FALSE); } /************************************************************ * * Geometry Management routines. * ************************************************************/ /* Function Name: GeometryManager * Description: This is the ComplexMenu Widget's Geometry Manager. * Arguments: w - the Menu Entry making the request. * request - requested new geometry. * reply - the allowed geometry. * Returns: XtGeometry{Yes, No, Almost}. */ static XtGeometryResult GeometryManager(Widget w, XtWidgetGeometry *request, XtWidgetGeometry *reply) { ComplexMenuWidget cmw = (ComplexMenuWidget) XtParent(w); CmeObject entry = (CmeObject) w; XtGeometryMask mode = request->request_mode; XtGeometryResult answer; Dimension old_height, old_width; if ( !(mode & CWWidth) && !(mode & CWHeight) ) return(XtGeometryNo); reply->width = request->width; reply->height = request->height; old_width = entry->rectangle.width; old_height = entry->rectangle.height; Layout(w, &(reply->width), &(reply->height) ); /* * Since we are an override shell and have no parent there is no one to * ask to see if this geom change is okay, so I am just going to assume * we can do whatever we want. If you subclass be very careful with this * assumption, it could bite you. * * Chris D. Peterson - Sept. 1989. */ if ( (reply->width == request->width) && (reply->height == request->height) ) { if ( mode & XtCWQueryOnly ) { /* Actually perform the layout. */ entry->rectangle.width = old_width; entry->rectangle.height = old_height; } else { Layout(( Widget) cmw, NULL, NULL); } answer = XtGeometryDone; } else { entry->rectangle.width = old_width; entry->rectangle.height = old_height; if ( ((reply->width == request->width) && !(mode & CWHeight)) || ((reply->height == request->height) && !(mode & CWWidth)) || ((reply->width == request->width) && (reply->height == request->height)) ) answer = XtGeometryNo; else { answer = XtGeometryAlmost; reply->request_mode = 0; if (reply->width != request->width) reply->request_mode |= CWWidth; if (reply->height != request->height) reply->request_mode |= CWHeight; } } return(answer); } /* Function Name: ChangeManaged * Description: called whenever a new child is managed. * Arguments: w - the complex menu widget. * Returns: none. */ static void ChangeManaged(Widget w) { Layout(w, NULL, NULL); } /************************************************************ * * Global Action Routines. * * These actions routines will be added to the application's * global action list. * ************************************************************/ /* Function Name: PositionMenuAction * Description: Positions the complex menu widget. * Arguments: w - a widget (no the complex menu widget.) * event - the event that caused this action. * params, num_params - parameters passed to the routine. * we expect the name of the menu here. * Returns: none */ static void PositionMenuAction(Widget w, XEvent *event, String *params, Cardinal *num_params) { Widget menu; XPoint loc; if (*num_params != 1) { char error_buf[BUFSIZ]; snprintf(error_buf, sizeof(error_buf), "%s %s", "Xaw - ComplexMenuWidget: position menu action expects only one", "parameter which is the name of the menu."); XtAppWarning(XtWidgetToApplicationContext(w), error_buf); return; } if ( (menu = FindMenu(w, params[0])) == NULL) { char error_buf[BUFSIZ]; snprintf(error_buf, sizeof(error_buf), "%s '%s'", "Xaw - ComplexMenuWidget: could not find menu named: ", params[0]); XtAppWarning(XtWidgetToApplicationContext(w), error_buf); return; } switch (event->type) { case ButtonPress: case ButtonRelease: loc.x = event->xbutton.x_root; loc.y = event->xbutton.y_root; PositionMenu(menu, &loc); break; case EnterNotify: case LeaveNotify: loc.x = event->xcrossing.x_root; loc.y = event->xcrossing.y_root; PositionMenu(menu, &loc); break; case MotionNotify: loc.x = event->xmotion.x_root; loc.y = event->xmotion.y_root; PositionMenu(menu, &loc); break; default: PositionMenu(menu, NULL); break; } } /************************************************************ * * Widget Action Routines. * ************************************************************/ /* Function Name: Unhighlight * Description: Unhighlights current entry. * Arguments: w - the complex menu widget. * event - the event that caused this action. * params, num_params - ** NOT USED ** * Returns: none */ static void Unhighlight(Widget w, XEvent *event _is_unused, String *params _is_unused, Cardinal *num_params _is_unused) { ComplexMenuWidget cmw = (ComplexMenuWidget) w; CmeObject entry = cmw->complex_menu.entry_set; CmeObjectClass class; if ( entry == NULL) return; #if defined(CmeDebug) printf("Unhighlight(%lx) '%s': zapping %lx\n", (unsigned long)w, w->core.name, (unsigned long)entry); #endif cmw->complex_menu.entry_set = NULL; class = (CmeObjectClass) entry->object.widget_class; (class->cme_class.unhighlight) ( (Widget) entry); } static void SaveUnhighlight(Widget w, XEvent *event _is_unused, String *params _is_unused, Cardinal *num_params _is_unused) { ComplexMenuWidget cmw = (ComplexMenuWidget) w; CmeObject entry = cmw->complex_menu.entry_set; CmeObjectClass class; #if defined(CmeDebug) printf("SaveUnhighlight(%lx) '%s', BtnUp\n", (unsigned long)w, cmw->core.name); #endif if ( entry == NULL) return; class = (CmeObjectClass) entry->object.widget_class; (class->cme_class.unhighlight) ( (Widget) entry); } /* Function Name: LeftWindow * Description: Mouse has left window, usually this means unhighlight * Arguments: w - the complex menu widget. * event - the event that caused this action. * params, num_params - ** NOT USED ** * Returns: none */ static void LeftWindow(Widget w, XEvent *event, String *params _is_unused, Cardinal *num_params _is_unused) { ComplexMenuWidget cmw = (ComplexMenuWidget) w; CmeObject entry = cmw->complex_menu.entry_set; CmeObjectClass class; String mn; if ( entry == NULL) return; mn = NULL; XtVaGetValues((Widget) entry, XtNmenuName, &mn, NULL); if (mn != NULL && GetRightEntry(w, event) == entry) return; cmw->complex_menu.prev_entry = NULL; cmw->complex_menu.entry_set = NULL; class = (CmeObjectClass) entry->object.widget_class; (class->cme_class.unhighlight) ( (Widget) entry); } /* Function Name: MyMenuPopdown * Description: BtnUp, time to pop this menu down (is that all?) * Arguments: w - the complex menu widget. * event - the event that caused this action. * params, num_params - ** NOT USED ** * Returns: none */ static void MyMenuPopdown(Widget w, XEvent *event, String *params _is_unused, Cardinal *num_params _is_unused) { ComplexMenuWidget cmw = (ComplexMenuWidget) w; #if defined(CmeDebug1) printf("MyMenuPopdown(%lx) '%s'\n", (unsigned long)w, w->core.name); #endif if (((ShellWidget)w)->shell.popped_up) { #if defined(CmeDebug1) printf("MyMenuPopdown: popping down myself\n"); #endif XtPopdown(w); } /* Cascade up. */ while (cmw->complex_menu.parent != NULL) { #if defined(CmeDebug1) printf("MyMenuPopdown [cascade up]: parent %lx '%s'\n", (unsigned long)cmw->complex_menu.parent, cmw->complex_menu.parent->core.name); #endif XtPopdown(cmw->complex_menu.parent); cmw = (ComplexMenuWidget) cmw->complex_menu.parent; } } /* Function Name: Highlight * Description: Highlights current entry. * Arguments: w - the complex menu widget. * event - the event that caused this action. * params, num_params - ** NOT USED ** * Returns: none */ static void Highlight(Widget w, XEvent *event, String *params, Cardinal *num_params) { ComplexMenuWidget cmw = (ComplexMenuWidget) w; CmeObject entry; CmeObjectClass class; ShellWidget shell_widget = (ShellWidget)w; #if defined(CmeDebug) printf("Highlight(%lx) '%s' ", (unsigned long)w, cmw->core.name); #endif if (shell_widget->shell.popped_up != TRUE) { #if defined(CmeDebug) printf("not popped up -- bogus\n"); #endif return; } if ( !XtIsSensitive(w) ) { #if defined(CmeDebug) printf("not sensitive, nop\n"); #endif return; } entry = GetEventEntry(w, event); if (entry == cmw->complex_menu.entry_set) { #if defined(CmeDebug) printf("already set, nop\n"); #endif return; } #if defined(CmeDebug) printf("unhighlighting, "); #endif Unhighlight(w, event, params, num_params); if (entry == NULL) { #if defined(CmeDebug) printf("no new entry, done\n"); #endif return; } if ( !XtIsSensitive( (Widget) entry)) { #if defined(CmeDebug) printf("new entry isn't sensitive, done\n"); #endif cmw->complex_menu.entry_set = NULL; return; } cmw->complex_menu.entry_set = entry; class = (CmeObjectClass) entry->object.widget_class; #if defined(CmeDebug) printf("highlighting %lx '%s'\n", (unsigned long)entry, XtParent(((Widget)entry))->core.name); #endif (class->cme_class.highlight) ( (Widget) entry); } static void NotifyCallback(XtPointer closure, XtIntervalId *id _is_unused) { CmeObject entry = closure; CmeObjectClass class; #if defined(CmeDebug) printf("NotifyCallback %lx\n", (unsigned long)entry); #endif class = (CmeObjectClass) entry->object.widget_class; (class->cme_class.notify)( (Widget) entry ); } /* Function Name: Notify * Description: Notify user of current entry. * Arguments: w - the complex menu widget. * event - the event that caused this action. * params, num_params - ** NOT USED ** * Returns: none */ static void Notify(Widget w, XEvent *event _is_unused, String *params _is_unused, Cardinal *num_params _is_unused) { ComplexMenuWidget cmw = (ComplexMenuWidget) w; CmeObject entry = cmw->complex_menu.entry_set; #if defined(CmeDebug) printf("Notify(%lx) '%s': ", (unsigned long)w, cmw->core.name); #endif if (entry != NULL && XtIsSensitive((Widget) entry)) { #if defined(CmeDebug) /*[*/ printf("just notifying 0x%lx\n", (unsigned long)entry); #endif /*]*/ XtAppAddTimeOut(XtWidgetToApplicationContext(w), 1L, NotifyCallback, (XtPointer)entry); } #if defined(CmeDebug) /*[*/ else printf("no entry\n"); #endif /*]*/ cmw->complex_menu.entry_set = NULL; return; } /************************************************************ * * Public Functions. * ************************************************************/ /* Function Name: XawComplexMenuAddGlobalActions * Description: adds the global actions to the complex menu widget. * Arguments: app_con - the appcontext. * Returns: none. */ void XawComplexMenuAddGlobalActions(XtAppContext app_con) { XtInitializeWidgetClass(complexMenuWidgetClass); XmuCallInitializers( app_con ); } /* Function Name: XawComplexMenuGetActiveEntry * Description: Gets the currently active (set) entry. * Arguments: w - the cmw widget. * Returns: the currently set entry or NULL if none is set. */ Widget XawComplexMenuGetActiveEntry(Widget w) { ComplexMenuWidget cmw = (ComplexMenuWidget) w; return( (Widget) cmw->complex_menu.entry_set); } /* Function Name: XawComplexMenuClearActiveEntry * Description: Unsets the currently active (set) entry. * Arguments: w - the cmw widget. * Returns: none. */ void XawComplexMenuClearActiveEntry(Widget w) { ComplexMenuWidget cmw = (ComplexMenuWidget) w; cmw->complex_menu.entry_set = NULL; cmw->complex_menu.prev_entry = NULL; } /************************************************************ * * Private Functions. * ************************************************************/ /* Function Name: CreateLabel * Description: Creates a the menu label. * Arguments: w - the cmw widget. * Returns: none. * * Creates the label object and makes sure it is the first child in * in the list. */ static void CreateLabel(Widget w) { ComplexMenuWidget cmw = (ComplexMenuWidget) w; register Widget * child, * next_child; register int i; Arg args[2]; if ( (cmw->complex_menu.label_string == NULL) || (cmw->complex_menu.label != NULL) ) { char error_buf[BUFSIZ]; snprintf(error_buf, sizeof(error_buf), "Xaw Complex Menu Widget: %s or %s, %s", "label string is NULL", "label already exists", "no label is being created."); XtAppWarning(XtWidgetToApplicationContext(w), error_buf); return; } XtSetArg(args[0], XtNlabel, cmw->complex_menu.label_string); XtSetArg(args[1], XtNjustify, XtJustifyCenter); cmw->complex_menu.label = (CmeObject) XtCreateManagedWidget("menuLabel", cmw->complex_menu.label_class, w, args, TWO); next_child = NULL; for (child = cmw->composite.children + cmw->composite.num_children, i = cmw->composite.num_children ; i > 0 ; i--, child--) { if (next_child != NULL) *next_child = *child; next_child = child; } *child = (Widget) cmw->complex_menu.label; } /* Function Name: Layout * Description: lays the menu entries out all nice and neat. * Arguments: w - See below (+++) * width_ret, height_ret - The returned width and * height values. * Returns: none. * * if width == NULL || height == NULL then it assumes the you do not care * about the return values, and just want a relayout. * * if this is not the case then it will set width_ret and height_ret * to be width and height that the child would get if it were layed out * at this time. * * +++ "w" can be the complex menu widget or any of its object children. */ static void Layout(Widget w, Dimension *width_ret, Dimension *height_ret) { CmeObject current_entry, *entry; ComplexMenuWidget cmw; Dimension width, height; Boolean do_layout = ((height_ret == NULL) || (width_ret == NULL)); Boolean allow_change_size; height = 0; if ( XtIsSubclass(w, complexMenuWidgetClass) ) { cmw = (ComplexMenuWidget) w; current_entry = NULL; } else { cmw = (ComplexMenuWidget) XtParent(w); current_entry = (CmeObject) w; } allow_change_size = (!XtIsRealized((Widget)cmw) || (cmw->shell.allow_shell_resize)); if ( cmw->complex_menu.menu_height ) height = cmw->core.height; else if (do_layout) { height = cmw->complex_menu.top_margin; ForAllChildren(cmw, entry) { if (!XtIsManaged( (Widget) *entry)) continue; if ( (cmw->complex_menu.row_height != 0) && (*entry != cmw->complex_menu.label) ) (*entry)->rectangle.height = cmw->complex_menu.row_height; (*entry)->rectangle.y = height; (*entry)->rectangle.x = 0; height += (*entry)->rectangle.height; } height += cmw->complex_menu.bottom_margin; } else { if ((cmw->complex_menu.row_height != 0) && (current_entry != cmw->complex_menu.label) ) height = cmw->complex_menu.row_height; } if (cmw->complex_menu.menu_width) width = cmw->core.width; else if ( allow_change_size ) width = GetMenuWidth((Widget) cmw, (Widget) current_entry); else width = cmw->core.width; if (do_layout) { ForAllChildren(cmw, entry) if (XtIsManaged( (Widget) *entry)) (*entry)->rectangle.width = width; if (allow_change_size) MakeSetValuesRequest((Widget) cmw, width, height); } else { *width_ret = width; if (height != 0) *height_ret = height; } } /* Function Name: AddPositionAction * Description: Adds the XawPositionComplexMenu action to the global * action list for this appcon. * Arguments: app_con - the application context for this app. * data - NOT USED. * Returns: none. */ static void AddPositionAction(XtAppContext app_con, caddr_t data _is_unused) { static XtActionsRec pos_action[] = { { "XawPositionComplexMenu", PositionMenuAction }, }; XtAppAddActions(app_con, pos_action, XtNumber(pos_action)); } /* Function Name: FindMenu * Description: Find the menu give a name and reference widget. * Arguments: widget - reference widget. * name - the menu widget's name. * Returns: the menu widget or NULL. */ static Widget FindMenu(Widget widget, String name) { register Widget w, menu; for ( w = widget ; w != NULL ; w = XtParent(w) ) if ( (menu = XtNameToWidget(w, name)) != NULL ) return(menu); return(NULL); } /* Function Name: PositionMenu * Description: Places the menu * Arguments: w - the complex menu widget. * location - a pointer the the position or NULL. * Returns: none. */ static void PositionMenu(Widget w, XPoint *location) { ComplexMenuWidget cmw = (ComplexMenuWidget) w; CmeObject entry; XPoint t_point; if (location == NULL) { Window junk1, junk2; int root_x, root_y, junkX, junkY; unsigned int junkM; location = &t_point; if (XQueryPointer(XtDisplay(w), XtWindow(w), &junk1, &junk2, &root_x, &root_y, &junkX, &junkY, &junkM) == FALSE) { char error_buf[BUFSIZ]; snprintf(error_buf, sizeof(error_buf), "%s %s", "Xaw - ComplexMenuWidget:", "Could not find location of mouse pointer"); XtAppWarning(XtWidgetToApplicationContext(w), error_buf); return; } location->x = (short) root_x; location->y = (short) root_y; } /* * The width will not be correct unless it is realized. */ XtRealizeWidget(w); location->x -= (Position) w->core.width/2; if (cmw->complex_menu.popup_entry == NULL) entry = cmw->complex_menu.label; else entry = cmw->complex_menu.popup_entry; if (entry != NULL) location->y -= entry->rectangle.y + entry->rectangle.height/2; MoveMenu(w, (Position) location->x, (Position) location->y); } /* Function Name: MoveMenu * Description: Actually moves the menu, may force it to * to be fully visable if menu_on_screen is TRUE. * Arguments: w - the complex menu widget. * x, y - the current location of the widget. * Returns: none */ static void MoveMenu(Widget w, Position x, Position y) { Arg arglist[2]; Cardinal num_args = 0; ComplexMenuWidget cmw = (ComplexMenuWidget) w; if (cmw->complex_menu.menu_on_screen) { int width = w->core.width + 2 * w->core.border_width; int height = w->core.height + 2 * w->core.border_width; if (x >= 0) { int scr_width = WidthOfScreen(XtScreen(w)); if (x + width > scr_width) x = scr_width - width; } if (x < 0) x = 0; if (y >= 0) { int scr_height = HeightOfScreen(XtScreen(w)); if (y + height > scr_height) y = scr_height - height; } if (y < 0) y = 0; } XtSetArg(arglist[num_args], XtNx, x); num_args++; XtSetArg(arglist[num_args], XtNy, y); num_args++; XtSetValues(w, arglist, num_args); } /* Function Name: ChangeCursorOnGrab * Description: Changes the cursor on the active grab to the one * specified in out resource list. * Arguments: w - the widget. * junk, garbage - ** NOT USED **. * Returns: None. */ static void ChangeCursorOnGrab(Widget w, XtPointer junk _is_unused, XtPointer garbage _is_unused) { ComplexMenuWidget cmw = (ComplexMenuWidget) w; #if defined(CmeDebug) printf("ChangeCursorOnGrab(%lx) '%s': parent=%lx '%s'\n", (unsigned long)w, cmw->core.name, (unsigned long)cmw->complex_menu.parent, cmw->complex_menu.parent? cmw->complex_menu.parent->core.name: "(null)"); #endif cmw->complex_menu.deferred_notify = NULL; cmw->complex_menu.prev_entry = NULL; /* * The event mask here is what is currently in the MIT implementation. * There really needs to be a way to get the value of the mask out * of the toolkit (CDP 5/26/89). */ XChangeActivePointerGrab(XtDisplay(w), ButtonPressMask|ButtonReleaseMask, cmw->complex_menu.cursor, XtLastTimestampProcessed(XtDisplay(w))); } static void ClearParent(Widget w, XtPointer junk _is_unused, XtPointer garbage _is_unused) { #if defined(CmeDebug) ComplexMenuWidget cmw = (ComplexMenuWidget) w; #endif #if defined(CmeDebug) printf("ClearParent(%lx) '%s': parent=%lx '%s', popped down, notifying\n", (unsigned long)w, cmw->core.name, (unsigned long)cmw->complex_menu.parent, cmw->complex_menu.parent? cmw->complex_menu.parent->core.name: "(null)"); #endif Notify(w, NULL, NULL, NULL); } /* Function Name: MakeSetValuesRequest * Description: Makes a (possibly recursive) call to SetValues, * I take great pains to not go into an infinite loop. * Arguments: w - the complex menu widget. * width, height - the size of the ask for. * Returns: none */ static void MakeSetValuesRequest(Widget w, Dimension width, Dimension height) { ComplexMenuWidget cmw = (ComplexMenuWidget) w; Arg arglist[2]; Cardinal num_args = (Cardinal) 0; if ( !cmw->complex_menu.recursive_set_values ) { if ( (cmw->core.width != width) || (cmw->core.height != height) ) { cmw->complex_menu.recursive_set_values = TRUE; XtSetArg(arglist[num_args], XtNwidth, width); num_args++; XtSetArg(arglist[num_args], XtNheight, height); num_args++; XtSetValues(w, arglist, num_args); } else if (XtIsRealized( (Widget) cmw)) Redisplay((Widget) cmw, (XEvent *) NULL, (Region) NULL); } cmw->complex_menu.recursive_set_values = FALSE; } /* Function Name: GetMenuWidth * Description: Sets the length of the widest entry in pixels. * Arguments: w - the complex menu widget. * Returns: width of menu. */ static Dimension GetMenuWidth(Widget w, Widget w_ent) { CmeObject cur_entry = (CmeObject) w_ent; ComplexMenuWidget cmw = (ComplexMenuWidget) w; Dimension width, widest = (Dimension) 0; CmeObject * entry; if ( cmw->complex_menu.menu_width ) return(cmw->core.width); ForAllChildren(cmw, entry) { XtWidgetGeometry preferred; if (!XtIsManaged( (Widget) *entry)) continue; if (*entry != cur_entry) { XtQueryGeometry((Widget) *entry, NULL, &preferred); if (preferred.request_mode & CWWidth) width = preferred.width; else width = (*entry)->rectangle.width; } else width = (*entry)->rectangle.width; if ( width > widest ) widest = width; } return(widest); } /* Function Name: GetMenuHeight * Description: Sets the length of the widest entry in pixels. * Arguments: w - the complex menu widget. * Returns: width of menu. */ static Dimension GetMenuHeight(Widget w) { ComplexMenuWidget cmw = (ComplexMenuWidget) w; CmeObject * entry; Dimension height; if (cmw->complex_menu.menu_height) return(cmw->core.height); height = cmw->complex_menu.top_margin + cmw->complex_menu.bottom_margin; if (cmw->complex_menu.row_height == 0) { ForAllChildren(cmw, entry) if (XtIsManaged ((Widget) *entry)) height += (*entry)->rectangle.height; } else height += cmw->complex_menu.row_height * cmw->composite.num_children; return(height); } /* Function Name: GetEventEntry * Description: Gets an entry given an event that has X and Y coords. * Arguments: w - the complex menu widget. * event - the event. * Returns: the entry that this point is in. */ static CmeObject GetEventEntry(Widget w, XEvent *event) { Position x_loc = 0, y_loc = 0; ComplexMenuWidget cmw = (ComplexMenuWidget) w; CmeObject * entry; switch (event->type) { case MotionNotify: x_loc = event->xmotion.x; y_loc = event->xmotion.y; break; case EnterNotify: case LeaveNotify: x_loc = event->xcrossing.x; y_loc = event->xcrossing.y; break; case ButtonPress: case ButtonRelease: x_loc = event->xbutton.x; y_loc = event->xbutton.y; break; default: XtAppError(XtWidgetToApplicationContext(w), "Unknown event type in GetEventEntry()."); break; } if ( (x_loc < 0) || (x_loc >= (int)cmw->core.width) || (y_loc < 0) || (y_loc >= (int)cmw->core.height) ) return(NULL); ForAllChildren(cmw, entry) { if (!XtIsManaged ((Widget) *entry)) continue; if ( ((*entry)->rectangle.y < y_loc) && ((*entry)->rectangle.y + (int) (*entry)->rectangle.height > y_loc) ) { if ( *entry == cmw->complex_menu.label ) return(NULL); /* cannot select the label. */ else return(*entry); } } return(NULL); } /* Function Name: GetRightEntry * Description: Gets an entry given a crossing event that has X and Y * coords, unless it exited to the right. * Arguments: w - the complex menu widget. * event - the event. * Returns: the entry that this point is in. */ static CmeObject GetRightEntry(Widget w, XEvent *event) { Position x_loc, y_loc; ComplexMenuWidget cmw = (ComplexMenuWidget) w; CmeObject * entry; x_loc = event->xcrossing.x; y_loc = event->xcrossing.y; if ( (x_loc < 0) || /*(x_loc < (int)cmw->core.width) ||*/ (y_loc < 0) || (y_loc >= (int)cmw->core.height) ) return(NULL); ForAllChildren(cmw, entry) { if (!XtIsManaged ((Widget) *entry)) continue; if ( ((*entry)->rectangle.y < y_loc) && ((*entry)->rectangle.y + (int) (*entry)->rectangle.height > y_loc) ) { if ( *entry == cmw->complex_menu.label ) return(NULL); /* cannot select the label. */ else return(*entry); } } return(NULL); } suite3270-4.1/x3270/CmplxMenu.h000066400000000000000000000151441413735575200157100ustar00rootroot00000000000000/* * (from) $XConsortium: SimpleMenu.h,v 1.20 91/02/17 13:18:55 rws Exp $ * * Copyright (c) 1995-2009, Paul Mattes. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of Paul Mattes nor his contributors may be used * to endorse or promote products derived from this software without * specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. * * Copyright 1989 Massachusetts Institute of Technology * * Permission to use, copy, modify, distribute, and sell this software and its * documentation for any purpose is hereby granted without fee, provided that * the above copyright notice appear in all copies and that both that * copyright notice and this permission notice appear in supporting * documentation, and that the name of M.I.T. not be used in advertising or * publicity pertaining to distribution of the software without specific, * written prior permission. M.I.T. makes no representations about the * suitability of this software for any purpose. It is provided "as is" * without express or implied warranty. * * M.I.T. DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL M.I.T. * BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. * * Author: Chris D. Peterson, MIT X Consortium */ /* * ComplexMenu.h - Public Header file for ComplexMenu widget. * (from) SimpleMenu.h - Public Header file for SimpleMenu widget. * * This is the public header file for the Athena ComplexMenu widget. * It is intended to provide one pane pulldown and popup menus within * the framework of the X Toolkit. As the name implies it is a first and * by no means complete implementation of menu code. It does not attempt to * fill the needs of all applications, but does allow a resource oriented * interface to menus. * * Date: April 3, 1989 * * By: Chris D. Peterson * MIT X Consortium * kit@expo.lcs.mit.edu */ #ifndef _ComplexMenu_h #define _ComplexMenu_h #include #include #include /**************************************************************** * * ComplexMenu widget * ****************************************************************/ /* ComplexMenu Resources: Name Class RepType Default Value ---- ----- ------- ------------- background Background Pixel XtDefaultBackground backgroundPixmap BackgroundPixmap Pixmap None borderColor BorderColor Pixel XtDefaultForeground borderPixmap BorderPixmap Pixmap None borderWidth BorderWidth Dimension 1 bottomMargin VerticalMargins Dimension VerticalSpace columnWidth ColumnWidth Dimension Width of widest text cursor Cursor Cursor None destroyCallback Callback Pointer NULL height Height Dimension 0 label Label String NULL (No label) labelClass LabelClass Pointer cmeBSBObjectClass mappedWhenManaged MappedWhenManaged Boolean True rowHeight RowHeight Dimension Height of Font sensitive Sensitive Boolean True topMargin VerticalMargins Dimension VerticalSpace width Width Dimension 0 x Position Position 0n y Position Position 0 */ typedef struct _ComplexMenuClassRec* ComplexMenuWidgetClass; typedef struct _ComplexMenuRec* ComplexMenuWidget; extern WidgetClass complexMenuWidgetClass; #define XtNcursor "cursor" #define XtNbottomMargin "bottomMargin" #define XtNcolumnWidth "columnWidth" #define XtNlabelClass "labelClass" #define XtNmenuOnScreen "menuOnScreen" #define XtNpopupOnEntry "popupOnEntry" #define XtNrowHeight "rowHeight" #define XtNtopMargin "topMargin" #define XtNcMparent "cMparent" #define XtNcMdefer "cMdefer" #define XtCColumnWidth "ColumnWidth" #define XtCLabelClass "LabelClass" #define XtCMenuOnScreen "MenuOnScreen" #define XtCPopupOnEntry "PopupOnEntry" #define XtCRowHeight "RowHeight" #define XtCVerticalMargins "VerticalMargins" #define XtCCMparent "CMparent" #define XtCCMdefer "CMdefer" /************************************************************ * * Public Functions. * ************************************************************/ _XFUNCPROTOBEGIN /* Function Name: XawComplexMenuAddGlobalActions * Description: adds the global actions to the complex menu widget. * Arguments: app_con - the appcontext. * Returns: none. */ extern void XawComplexMenuAddGlobalActions( #if NeedFunctionPrototypes XtAppContext /* app_con */ #endif ); /* Function Name: XawComplexMenuGetActiveEntry * Description: Gets the currently active (set) entry. * Arguments: w - the smw widget. * Returns: the currently set entry or NULL if none is set. */ extern Widget XawComplexMenuGetActiveEntry( #if NeedFunctionPrototypes Widget /* w */ #endif ); /* Function Name: XawComplexMenuClearActiveEntry * Description: Unsets the currently active (set) entry. * Arguments: w - the smw widget. * Returns: none. */ extern void XawComplexMenuClearActiveEntry( #if NeedFunctionPrototypes Widget /* w */ #endif ); _XFUNCPROTOEND #endif /* _ComplexMenu_h */ suite3270-4.1/x3270/CmplxMenuP.h000066400000000000000000000124471413735575200160330ustar00rootroot00000000000000/* * (from) $XConsortium: SimpleMenP.h,v 1.12 89/12/11 15:01:39 kit Exp $ * * Copyright (c) 1995-2009, Paul Mattes. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of Paul Mattes nor his contributors may be used * to endorse or promote products derived from this software without * specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. * * Copyright 1989 Massachusetts Institute of Technology * * Permission to use, copy, modify, distribute, and sell this software and its * documentation for any purpose is hereby granted without fee, provided that * the above copyright notice appear in all copies and that both that * copyright notice and this permission notice appear in supporting * documentation, and that the name of M.I.T. not be used in advertising or * publicity pertaining to distribution of the software without specific, * written prior permission. M.I.T. makes no representations about the * suitability of this software for any purpose. It is provided "as is" * without express or implied warranty. * * M.I.T. DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL M.I.T. * BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ /* * ComplexMenuP.h - Private Header file for ComplexMenu widget. * (from) SimpleMenuP.h - Private Header file for SimpleMenu widget. * * Date: April 3, 1989 * * By: Chris D. Peterson * MIT X Consortium * kit@expo.lcs.mit.edu */ #ifndef _ComplexMenuP_h #define _ComplexMenuP_h #include "CmplxMenu.h" #include "CmeP.h" #include #define ForAllChildren(smw, childP) \ for ( (childP) = (CmeObject *) (smw)->composite.children ; \ (childP) < (CmeObject *) ( (smw)->composite.children + \ (smw)->composite.num_children ) ; \ (childP)++ ) typedef struct { XtPointer extension; /* For future needs. */ } ComplexMenuClassPart; typedef struct _ComplexMenuClassRec { CoreClassPart core_class; CompositeClassPart composite_class; ShellClassPart shell_class; OverrideShellClassPart override_shell_class; ComplexMenuClassPart complexMenu_class; } ComplexMenuClassRec; extern ComplexMenuClassRec complexMenuClassRec; typedef struct _ComplexMenuPart { /* resources */ String label_string; /* The string for the label or NULL. */ CmeObject label; /* If label_string is non-NULL then this is the label widget. */ WidgetClass label_class; /* Widget Class of the menu label object. */ Dimension top_margin; /* Top and bottom margins. */ Dimension bottom_margin; Dimension row_height; /* height of each row (menu entry) */ Cursor cursor; /* The menu's cursor. */ CmeObject popup_entry; /* The entry to position the cursor on for when using XawPositionComplexMenu. */ Boolean menu_on_screen; /* Force the menus to be fully on the screen.*/ int backing_store; /* What type of backing store to use. */ /* private state */ Boolean recursive_set_values; /* contain a possible infinite loop. */ Boolean menu_width; /* If true then force width to remain core.width */ Boolean menu_height; /* Just like menu_width, but for height. */ CmeObject entry_set; /* The entry that is currently set or highlighted. */ CmeObject prev_entry; /* The entry that was previously set or highlighted. */ Widget parent; /* If non-NULL, the widget that popped this menu up as a pullright. */ Widget deferred_notify; /* If non-NULL, the widget (from a subordinate pullright menu) to notify on exit. */ } ComplexMenuPart; typedef struct _ComplexMenuRec { CorePart core; CompositePart composite; ShellPart shell; OverrideShellPart override; ComplexMenuPart complex_menu; } ComplexMenuRec; #endif /* _ComplexMenuP_h */ suite3270-4.1/x3270/Examples/000077500000000000000000000000001413735575200154005ustar00rootroot00000000000000suite3270-4.1/x3270/Examples/child_script.bash000066400000000000000000000043301413735575200207060ustar00rootroot00000000000000#! /bin/bash # TSO login script, to be run via the x3270 Script() action. # bash version set -x me=${0##*/} # Make sure we're in the right environment. if [ -z "$X3270INPUT" -o -z "$X3270OUTPUT" ] then echo >&2 "$me: must be run via the x3270 Script() action." exit 1 fi # Set up login parameters tcp_host=${1-ibmsys} dial_user=${2-VTAM} sna_host=${3-TSO} userid=${4-USERID} password=${5-PASSWORD} # Verbose flag for x3270if v="-v" # Define some handly local functions. # Common x3270 Ascii function function ascii { x3270if $v 'Ascii('$1')' } # Common x3270 String function function string { x3270if $v 'String("'"$@"'")' } # x3270 cursor column function cursor_col { x3270if $v -s 10 } # x3270 connection status function cstatus { x3270if $v -s 4 } # Failure. function die { x3270if $v "Info(\"$me error: $@\")" x3270if $v "CloseScript(1)" exit 1 } # Make sure we're connected. x3270if $v Wait [ "$(cstatus)" = N ] && die "Not connected." # Get to a VM command screen x3270if $v Enter # Wait for VM's prompt while [ "$(ascii 1,0,5)" != "Enter" ] do sleep 2 done # Dial out to VTAM string "DIAL $dial_user" x3270if $v Enter typeset -i sl=10+${#dial_user} typeset -i dl=5+${#dial_user} while [ "$(ascii 0,64,4)" != VTAM ] do s="$(ascii 8,0,$sl | sed 's/^ *//')" if [ "$s" != "DIALED TO $dial_user" -a "$s" != "" ] then if [ "$(ascii 7,0,$dl)" = "DIAL $dial_user" ] then die "Couldn't get to VTAM" fi fi sleep 2 done # Get to the SNA host string "$sna_host $userid" x3270if $v Enter # Pass VTAM digestion message and initial blank TSO screen while [ "$(ascii 0,21,20)" = "USS COMMAND HAS BEEN" ] do sleep 2 done while : do s="$(ascii 0,33,11 | sed 's/^ *//')" [ "$s" != "" ] && break sleep 2 done # Now verify the "TSO/E LOGON" screen [ "$s" = "TSO/E LOGON" ] || die "Couldn't get to TSO logon screen" # Pump in the password string "$password" x3270if $v Enter # Now look for "LOGON IN PROGRESS" typeset -i nl=18+${#userid} [ "$(ascii 0,11,$nl)" = "$userid LOGON IN PROGRESS" ] || die "Couldn't log on" # Make sure TSO is waiting for a '***' enter [ "$(cursor_col)" -eq 5 ] || die "Don't understand logon screen" # Off to ISPF x3270if $v Enter # No need to explicitly call CloseScript -- x3270 will interpret EOF as success. suite3270-4.1/x3270/Examples/child_script.ksh000066400000000000000000000043271413735575200205640ustar00rootroot00000000000000#! /bin/ksh # TSO login script, to be run via the x3270 Script() action. # ksh version set -x me=${0##*/} # Make sure we're in the right environment. if [ -z "$X3270INPUT" -o -z "$X3270OUTPUT" ] then print -u2 "$me: must be run via the x3270 Script() action." exit 1 fi # Set up login parameters tcp_host=${1-ibmsys} dial_user=${2-VTAM} sna_host=${3-TSO} userid=${4-USERID} password=${5-PASSWORD} # Verbose flag for x3270if v="-v" # Define some handly local functions. # Common x3270 Ascii function function ascii { x3270if $v 'Ascii('$1')' } # Common x3270 String function function string { x3270if $v 'String("'"$@"'")' } # x3270 cursor column function cursor_col { x3270if $v -s 10 } # x3270 connection status function cstatus { x3270if $v -s 4 } # Failure. function die { x3270if $v "Info(\"$me error: $@\")" x3270if $v "CloseScript(1)" exit 1 } # Make sure we're connected. x3270if $v Wait [ "$(cstatus)" = N ] && die "Not connected." # Get to a VM command screen x3270if $v Enter # Wait for VM's prompt while [ "$(ascii 1,0,5)" != "Enter" ] do sleep 2 done # Dial out to VTAM string "DIAL $dial_user" x3270if $v Enter typeset -i sl=10+${#dial_user} typeset -i dl=5+${#dial_user} while [ "$(ascii 0,64,4)" != VTAM ] do s="$(ascii 8,0,$sl | sed 's/^ *//')" if [ "$s" != "DIALED TO $dial_user" -a "$s" != "" ] then if [ "$(ascii 7,0,$dl)" = "DIAL $dial_user" ] then die "Couldn't get to VTAM" fi fi sleep 2 done # Get to the SNA host string "$sna_host $userid" x3270if $v Enter # Pass VTAM digestion message and initial blank TSO screen while [ "$(ascii 0,21,20)" = "USS COMMAND HAS BEEN" ] do sleep 2 done while : do s="$(ascii 0,33,11 | sed 's/^ *//')" [ "$s" != "" ] && break sleep 2 done # Now verify the "TSO/E LOGON" screen [ "$s" = "TSO/E LOGON" ] || die "Couldn't get to TSO logon screen" # Pump in the password string "$password" x3270if $v Enter # Now look for "LOGON IN PROGRESS" typeset -i nl=18+${#userid} [ "$(ascii 0,11,$nl)" = "$userid LOGON IN PROGRESS" ] || die "Couldn't log on" # Make sure TSO is waiting for a '***' enter [ "$(cursor_col)" -eq 5 ] || die "Don't understand logon screen" # Off to ISPF x3270if $v Enter # No need to explicitly call CloseScript -- x3270 will interpret EOF as success. suite3270-4.1/x3270/Examples/child_script.sh000066400000000000000000000043301413735575200204030ustar00rootroot00000000000000#! /bin/sh # TSO login script, to be run via the x3270 Script() action. # sh version set -x me=`echo $0 | sed 's/.*\///'` # Make sure we're in the right environment. if [ -z "$X3270INPUT" -o -z "$X3270OUTPUT" ] then echo >&2 "$me: must be run via the x3270 Script() action." exit 1 fi # Set up login parameters tcp_host=${1-ibmsys} dial_user=${2-VTAM} sna_host=${3-TSO} userid=${4-USERID} password=${5-PASSWORD} # Verbose flag for x3270if v="-v" # Define some handly local functions. # Common x3270 Ascii function ascii() { x3270if $v 'Ascii('$1')' } # Common x3270 String function string() { x3270if $v 'String("'"$@"'")' } # x3270 cursor column cursor_col() { x3270if $v -s 10 } # x3270 connection status cstatus() { x3270if $v -s 4 } # Failure. die() { x3270if $v "Info(\"$me error: $@\")" x3270if $v "CloseScript(1)" exit 1 } # Make sure we're connected. x3270if $v Wait [ "`cstatus`" = N ] && die "Not connected." # Get to a VM command screen x3270if $v Enter # Wait for VM's prompt while [ "`ascii 1,0,5`" != "Enter" ] do sleep 2 done # Dial out to VTAM string "DIAL $dial_user" x3270if $v Enter len0=`expr length $dial_user` sl=`expr 10 + $len0` dl=`expr 5 + $len0` while [ "`ascii 0,64,4`" != VTAM ] do s="`ascii 8,0,$sl | sed 's/^ *//'`" if [ "$s" != "DIALED TO $dial_user" -a "$s" != "" ] then if [ "`ascii 7,0,$dl`" = "DIAL $dial_user" ] then die "Couldn't get to VTAM" fi fi sleep 2 done # Get to the SNA host string "$sna_host $userid" x3270if $v Enter # Pass VTAM digestion message and initial blank TSO screen while [ "`ascii 0,21,20`" = "USS COMMAND HAS BEEN" ] do sleep 2 done while : do s="`ascii 0,33,11 | sed 's/^ *//'`" [ "$s" != "" ] && break sleep 2 done # Now verify the "TSO/E LOGON" screen [ "$s" = "TSO/E LOGON" ] || die "Couldn't get to TSO logon screen" # Pump in the password string "$password" x3270if $v Enter # Now look for "LOGON IN PROGRESS" len0=`expr length $userid` nl=`expr 18 + $len0` [ "`ascii 0,11,$nl`" = "$userid LOGON IN PROGRESS" ] || die "Couldn't log on" # Make sure TSO is waiting for a '***' enter [ "`cursor_col`" -eq 5 ] || die "Don't understand logon screen" # Off to ISPF x3270if $v Enter # No need to explicitly call CloseScript -- x3270 will interpret EOF as success. suite3270-4.1/x3270/Examples/cms_cmd.expect000077500000000000000000000110621413735575200202220ustar00rootroot00000000000000#!/usr/bin/expect # Copyright (c) 2000-2009, Paul Mattes. # All rights reserved. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # * Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # * Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in the # documentation and/or other materials provided with the distribution. # * Neither the name of Paul Mattes nor his contributors may be used # to endorse or promote products derived from this software without # specific prior written permission. # # THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS OR # IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES # OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN # NO EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, # SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED # TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR # PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF # LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING # NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS # SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. # Read in the glue functions. source x3270_glue.expect # Pluck the username, password and command from the command line. if {$argc != 4} { puts stderr "Usage: $argv0 hostname username password command" exit 1 } set hostname [lindex $argv 0] set username [lindex $argv 1] set password [lindex $argv 2] set command [lindex $argv 3] # Procedure to wait for a READ prompt from CMS or CP. proc waitread {} { Snap Save while {[Snap Ascii [expr [Snap Rows]-1] [expr [Snap Cols]-17] 4] != "READ"} { Snap Wait Output } } # Procedure to check for the CMS "Ready" prompt. # Returns its row number, or -1 for "MORE..." state, and leaves a screen with # data to read in the Snap buffer. proc cmd_done {} { global verbose Snap Save while {1} { if {[Snap Ascii [expr [Snap Rows]-1] [expr [Snap Cols]-20] 7] == "MORE..."} { if {$verbose} {puts "MORE..."} return -1 } set i [expr [Snap Rows]-2] while {$i >= 0} { set text [Snap Ascii $i 0 [Snap Cols]] switch -regexp $text { "Ready; T=.*" {return $i} "Ready\(.*\); T=.*" { error [Snap Ascii [expr $i-1] 0 \ [Snap Cols]] } "^ *\$" {} default { if {$verbose} {puts "Incomplete $i '[string trimright $text]'"} set i 0 } } incr i -1 } Snap Wait Output } } # Execute a command, return the output. proc cms_cmd {text} { global verbose # Clear the screen. Clear # Send the command. String "$text\n" # 'first' is the row where the first line of output will appear. For # the first screenful it's 1; after that it's 0. set first 1 # r is the result. set r {} while {1} { # Wait for a screenful. set d [cmd_done] # Dump out what's there. set i $first set first 0 if {$d < 0} {set last [expr [Snap Rows]-2]} {set last $d} while {$i < $last} { set r [linsert $r end [string trimright \ [Snap Ascii $i 0 [Snap Cols]]]] incr i } if {$d >= 0} {break} # Clear the screen and go around again. Clear } return $r } # Start of main procedure. # Set 'verbose' to 1 to get debug output from the glue functions. set verbose 0 # Start x3270 Start x3270 -script # Connect to the host and wait for an input field. Connect $hostname Wait InputField # Log in and wait for CP READ or VM READ mode. String "$username\t$password\n" waitread # If we can't log on, we're hosed. if {[Ascii 1 11 7] == "Already"} { puts stderr "Can't run -- already logged in." exit 1 } # If we're in CP mode, which means we disconnected last time, boot CMS. if {[Ascii [expr [Rows]-1] [expr [Cols]-20] 2] == "CP"} { Clear String "i cms\n" waitread } # Enter an empty command to get a CMS prompt. If we don't do this, there will # be a Ready prompt as the first line of output below. Clear Enter cmd_done # Get the output of the user's command and display it. if {[catch {cms_cmd $command} result]} { puts stderr $result set rc 1 } { for {set i 0} {$i < [llength $result]} {incr i} { puts [lindex $result $i] } set rc 0 } # Log off, and wait for the host to hang up on us, so we don't unintentionally # create a disconnected session. Clear String "logoff\n" Wait Disconnect exit $rc suite3270-4.1/x3270/Examples/cms_logon.bash000066400000000000000000000067441413735575200202320ustar00rootroot00000000000000#! /usr/local/bin/bash # Copyright (c) 1995-2009, Paul Mattes. # All rights reserved. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # * Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # * Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in the # documentation and/or other materials provided with the distribution. # * Neither the name of Paul Mattes nor his contributors may be used # to endorse or promote products derived from this software without # specific prior written permission. # # THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS OR # IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES # OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN # NO EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, # SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED # TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR # PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF # LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING # NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS # SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. # VM login script, which runs as a peer of x3270. # bash version #set -x me=${0##*/} # Set up login parameters tcp_host=${1-ibmsys} userid=${2-USERID} password=${3-PASSWORD} # Verbose flag for x3270if #v="-v" # Define some handly local functions. # x3270 interface function function xi { x3270if $v "$@" } # 'xi' function, with space-to-comma translation function xic { typeset sep cmd="$1(" shift while [ $# -gt 0 ] do cmd="$cmd$sep\"$1\"" sep="," shift done cmd="$cmd)" xi "$cmd" } # Common x3270 Ascii function function ascii { xic Ascii $@ } # Common x3270 String function function string { xic String "$@" } # x3270 connection status function cstatus { xi -s 4 } # x3270 rows function rows { xi -s 7 } # x3270 columns function cols { xi -s 8 } # x3270 Snap function function snap { xic Snap $@ } # Failure. function die { xic Info "$me error: $@" xic CloseScript 1 exit 1 } # Wait for a READ prompt. function waitread { snap while [ "$(snap Ascii $(expr $(snap Rows) - 1) $(expr $(snap Cols) - 17) 4)" != "READ" ] do xic Wait Output snap done } # Set up pipes for x3270 I/O ip=/tmp/ip.$$ op=/tmp/op.$$ rm -f $ip $op mkfifo $ip $op # Start x3270 x3270 -script -model 2 <$ip >$op & # Set up file descriptors for pipe I/O. exec 5>$ip 6<$op # Unlink the pipes (they'll stay around until this script and x3270 exit). rm -f $ip $op # Tell x3270if where to find the pipes. export X3270INPUT=5 X3270OUTPUT=6 # Make sure x3270 is still running. xi -s 0 >/dev/null || exit 1 # Connect to host xic Connect $tcp_host || die "Connection failed." # Make sure we're connected. xic Wait InputField [ "$(cstatus)" = N ] && die "Not connected." # Log in. string "$userid" xic Tab string "$password" xic Enter waitread if [ "$(ascii 1 11 7)" = "Already" ] then die "Can't run -- already logged in." exit 1 fi # Boot CMS, if we have to. if [ "$(ascii $(expr $(rows) - 1) $(expr $(cols) - 20) 2)" = "CP" ] then xic Clear string "i cms" xic Enter waitread fi # Done. xic CloseScript exit 0 suite3270-4.1/x3270/Examples/cms_logon.sh000066400000000000000000000065051413735575200177220ustar00rootroot00000000000000#! /bin/sh # Copyright (c) 1995-2009, Paul Mattes. # All rights reserved. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # * Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # * Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in the # documentation and/or other materials provided with the distribution. # * Neither the name of Paul Mattes nor his contributors may be used # to endorse or promote products derived from this software without # specific prior written permission. # # THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS OR # IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES # OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN # NO EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, # SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED # TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR # PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF # LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING # NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS # SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. # VM login script, which runs as a peer of x3270. # sh version #set -x me=`echo $0 | sed 's/.*\///'` # Set up login parameters tcp_host=${1-ibmsys} userid=${2-USERID} password=${3-PASSWORD} # Verbose flag for x3270if #v="-v" # Define some handly local functions. # x3270 interface function xi() { x3270if $v "$@" } # 'xi' function, with space-to-comma translation xic() { _sep="" _cmd="$1(" shift while [ $# -gt 0 ] do _cmd="$_cmd$_sep\"$1\"" _sep="," shift done _cmd="$_cmd)" xi "$_cmd" } # Common x3270 Ascii function ascii() { xic Ascii $@ } # Common x3270 String function string() { xic String "$@" } # x3270 connection status cstatus() { xi -s 4 } # x3270 rows rows() { xi -s 7 } # x3270 columns cols() { xi -s 8 } # Failure. die() { xic Info "$me error: $@" xic CloseScript 1 exit 1 } # x3270 Snap function snap() { xic Snap $@ } # Wait for a READ prompt. waitread() { snap while : do r=`snap Rows` r=`expr $r - 1` c=`snap Cols` c=`expr $c - 17` s=`snap Ascii $r $c 4` [ "$s" = "READ" ] && break xic Wait Output snap done } # Set up pipes for x3270 I/O ip=/tmp/ip.$$ op=/tmp/op.$$ rm -f $ip $op mkfifo $ip $op # Start x3270 x3270 -script -model 2 <$ip >$op & exec 5>$ip 6<$op rm -f $ip $op X3270INPUT=5 X3270OUTPUT=6 export X3270INPUT X3270OUTPUT xi -s 0 >/dev/null || exit 1 # Connect to host xic Connect $tcp_host || die "Connection failed." # Make sure we're connected. xic Wait InputField [ "`cstatus`" = N ] && die "Not connected." # Log in. string "$userid" xic Tab string "$password" xic Enter waitread if [ "`ascii 1 11 7`" = "Already" ] then die "Can't run -- already logged in." exit 1 fi # Boot CMS, if we have to. r=`rows` r=`expr $r - 1` c=`cols` c=`expr $c - 20` s=`ascii $r $c 2` if [ "$s" = "CP" ] then xic Clear string "i cms" xic Enter waitread fi # Done. xic CloseScript exit 0 suite3270-4.1/x3270/Examples/ibm_hosts000066400000000000000000000023101413735575200173060ustar00rootroot00000000000000# Sample x3270 hosts file # name type hostname login macro or string # Simple entry, no name translation. This is usually done just so that the # name appears on the "Connect" menu. vmsys primary vmsys # A simple entry that creates a shorthand name for a complex hostname. vm primary ibm_server.bigbucks.com # An entry that enters a username and password into a VM login screen. vm-macro primary vmsys String(myuser) Tab() String(mypasswd) Enter() # An old-style entry for the above, using backslash sequences embedded in a # string. Note that since the "login macro or string" doesn't look like an # x3270 action, x3270 takes it as a parameter to the String() action. vm-old primary vmsys myuser\tmypasswd\n # An entry that calls a script. tso-ksh primary vtamsys Script(child_script.ksh) # An entry that calls the same script with different parameters tso-ksh primary vtamsys Script(child_script.ksh,ibm-host2,VTAM,TSO,USER2,OTHERPASS) # An example of specifying an alternate port. playback primary localhost/4001 # An example of using the Expect() action to interact with an ASCII host. unixbox primary unixbox Expect(ogin:) String(myuser) Enter() Expect(ssword:) String(mypasswd) Enter() suite3270-4.1/x3270/Examples/peer_script.bash000066400000000000000000000045041413735575200205610ustar00rootroot00000000000000#! /bin/bash # TSO login script, which runs as a peer of x3270. # bash version set -x me=${0##*/} # Set up login parameters tcp_host=${1-ibmsys} dial_user=${2-VTAM} sna_host=${3-TSO} userid=${4-USERID} password=${5-PASSWORD} # Verbose flag for x3270if #v="-v" # Define some handly local functions. # x3270 interface function function xi { X3270OUTPUT=6 X3270INPUT=5 x3270if 5>$ip 6<$op $v "$@" } # Common x3270 Ascii function function ascii { xi 'Ascii('$1')' } # Common x3270 String function function string { xi 'String("'"$@"'")' } # x3270 cursor column function cursor_col { xi -s 10 } # x3270 connection status function cstatus { xi -s 4 } # Failure. function die { xi "Info(\"$me error: $@\")" xi "CloseScript(1)" exit 1 } # Set up pipes for x3270 I/O ip=/tmp/ip.$$ op=/tmp/op.$$ rm -f $ip $op trap "rm -f $ip $op" EXIT trap "exit" INT QUIT HUP TERM mknod $ip p mknod $op p # Start x3270 x3270 -script -model 2 <$ip >$op & xp=$! exec 5>$ip # hold the pipe open xi -s 0 >/dev/null || exit 1 # Connect to host xi "Connect($tcp_host)" || die "Connection failed." # Make sure we're connected. xi Wait [ "$(cstatus)" = N ] && die "Not connected." # Get to a VM command screen xi Enter # Wait for VM's prompt while [ "$(ascii 1,0,5)" != "Enter" ] do sleep 2 done # Dial out to VTAM string "DIAL $dial_user" xi Enter typeset -i sl=10+${#dial_user} typeset -i dl=5+${#dial_user} while [ "$(ascii 0,64,4)" != VTAM ] do s="$(ascii 8,0,$sl | sed 's/^ *//')" if [ "$s" != "DIALED TO $dial_user" -a "$s" != "" ] then if [ "$(ascii 7,0,$dl)" = "DIAL $dial_user" ] then die "Couldn't get to VTAM" fi fi sleep 2 done # Get to the SNA host string "$sna_host $userid" xi Enter # Pass VTAM digestion message and initial blank TSO screen while [ "$(ascii 0,21,20)" = "USS COMMAND HAS BEEN" ] do sleep 2 done while : do s="$(ascii 0,33,11 | sed 's/^ *//')" [ "$s" != "" ] && break sleep 2 done # Now verify the "TSO/E LOGON" screen [ "$s" = "TSO/E LOGON" ] || die "Couldn't get to TSO logon screen" # Pump in the password string "$password" xi Enter # Now look for "LOGON IN PROGRESS" typeset -i nl=18+${#userid} [ "$(ascii 0,11,$nl)" = "$userid LOGON IN PROGRESS" ] || die "Couldn't log on" # Make sure TSO is waiting for a '***' enter [ "$(cursor_col)" -eq 5 ] || die "Don't understand logon screen" # Off to ISPF xi Enter xi 'CloseScript(0)' suite3270-4.1/x3270/Examples/peer_script.expect000066400000000000000000000054101413735575200211310ustar00rootroot00000000000000#! /usr/local/bin/expect # TSO login script, which runs as a peer of x3270. # expect version # Set up login parameters set tcp_host ibmhost set dial_user VTAM set sna_host TSO set userid USERID set password PASSWORD # Send x3270 Enter. proc x3270_enter {} { send "Enter()\r" expect "*ok\r\n" } # Fetch text from the screen. proc x3270_ascii {coords} { send "Ascii($coords)\r" expect { -re "data: (.*)\r\n.*\r\nok\r\n$" { return $expect_out(1,string) } } send_user "Ascii failed.\n" } # Display an error message and exit. proc x3270_error {text} { global spid send "Info(\042$text\042)\r" expect "*ok\r\n" send "CloseScript\r" expect "*ok\r\n" close -i $spid exit } ############################################################################# # Start of main procedure. # Start x3270 set stty_init -echo spawn -noecho -ignore SIGHUP x3270 -script -model 2 -color set spid $spawn_id # Connect to host set connected 0 while {$connected == 0} { send "Connect($tcp_host)\r" ; send "Wait()\r" expect { "U F U C($tcp_host)*" { set connected 1 } default { send "Disconnect()\r" expect "*ok\r\n" exec sleep 3 } } } # Get to a VM command screen x3270_enter # Wait for VM's prompt set enter 0 while {$enter==0} { if {"[x3270_ascii 1,0,5]" == "Enter"} {set enter 1} {sleep 2} } # Dial out to VTAM send "String(\042DIAL $dial_user\042)\r" expect "*ok\r\n" x3270_enter # No proper way I can think of to do this: let the DIAL command digest exec sleep 2 # "DIALED TO xxx" may momentarily flash set dialed 0 while {$dialed==0} { if {"[x3270_ascii 8,0,80]" == "DIALED TO $dial_user"} {exec sleep 2} {set dialed 1} } # Make sure we are dialed to VTAM if {"[x3270_ascii 0,64,4]" != "VTAM"} { x3270_error "Couldn't get to VTAM" } # Get to the SNA host send "String(\042$sna_host $userid\042)\r" x3270_enter # Pass VTAM digestion message set digested 0 while {$digested==0} { if {"[x3270_ascii 0,21,20]" == "USS COMMAND HAS BEEN"} {exec sleep 2} {set digested 1} } # Now verify the "TSO/E LOGON" screen if {"[x3270_ascii 0,33,11]" != "TSO/E LOGON"} { x3270_error "Couldn't get to TSO logon screen" } # Pump in the password send "String($password)\r" x3270_enter # Now look for "LOGON IN PROGRESS" set timeout 600 set sl [expr "18 + [string length $userid]"] if {"[x3270_ascii 0,11,$sl]" != "$userid LOGON IN PROGRESS"} { x3270_error "Couldn't log on" } # Make sure TSO is waiting for a '***' enter set timeout 10 send "\r" expect { -re ".* (.*) 0x.*\r\nok\r\n" { if {$expect_out(1,string) != "5" } { x3270_error "Don't understand logon screen" } } } # Off to ISPF x3270_enter # We're in; exit the script and let the user interact. send "CloseScript\r" expect "*ok\r\n" close -i $spid exit suite3270-4.1/x3270/Examples/peer_script.ksh000066400000000000000000000042251413735575200204310ustar00rootroot00000000000000#! /bin/ksh # TSO login script, which runs as a peer of x3270. # ksh version #set -x me=${0##*/} # Set up login parameters tcp_host=${1-ibmsys} dial_user=${2-VTAM} sna_host=${3-TSO} userid=${4-USERID} password=${5-PASSWORD} # Verbose flag for x3270if #v="-v" # Define some handly local functions. # x3270 interface function function xi { X3270OUTPUT=6 X3270INPUT=5 x3270if 5>&p 6<&p $v "$@" } # Common x3270 Ascii function function ascii { xi 'Ascii('$1')' } # Common x3270 String function function string { xi 'String("'"$@"'")' } # x3270 cursor column function cursor_col { xi -s 10 } # x3270 connection status function cstatus { xi -s 4 } # Failure. function die { xi "Info(\"$me error: $@\")" xi "CloseScript(1)" exit 1 } # Start x3270 as a co-process x3270 -script -model 2 2>&1 |& xp=$! xi -s 0 >/dev/null || exit 1 # Connect to host xi "Connect($tcp_host)" || die "Connection failed." # Make sure we're connected. xi Wait [ "$(cstatus)" = N ] && die "Not connected." # Get to a VM command screen xi Enter # Wait for VM's prompt while [ "$(ascii 1,0,5)" != "Enter" ] do sleep 2 done # Dial out to VTAM string "DIAL $dial_user" xi Enter typeset -i sl=10+${#dial_user} typeset -i dl=5+${#dial_user} while [ "$(ascii 0,64,4)" != VTAM ] do s="$(ascii 8,0,$sl | sed 's/^ *//')" if [ "$s" != "DIALED TO $dial_user" -a "$s" != "" ] then if [ "$(ascii 7,0,$dl)" = "DIAL $dial_user" ] then die "Couldn't get to VTAM" fi fi sleep 2 done # Get to the SNA host string "$sna_host $userid" xi Enter # Pass VTAM digestion message and initial blank TSO screen while [ "$(ascii 0,21,20)" = "USS COMMAND HAS BEEN" ] do sleep 2 done while : do s="$(ascii 0,33,11 | sed 's/^ *//')" [ "$s" != "" ] && break sleep 2 done # Now verify the "TSO/E LOGON" screen [ "$s" = "TSO/E LOGON" ] || die "Couldn't get to TSO logon screen" # Pump in the password string "$password" xi Enter # Now look for "LOGON IN PROGRESS" typeset -i nl=18+${#userid} [ "$(ascii 0,11,$nl)" = "$userid LOGON IN PROGRESS" ] || die "Couldn't log on" # Make sure TSO is waiting for a '***' enter [ "$(cursor_col)" -eq 5 ] || die "Don't understand logon screen" # Off to ISPF xi Enter xi 'CloseScript(0)' suite3270-4.1/x3270/Examples/peer_script.sh000066400000000000000000000044601413735575200202570ustar00rootroot00000000000000#! /bin/sh # TSO login script, which runs as a peer of x3270. # sh version set -x me=`echo $0 | sed 's/.*\///'` # Set up login parameters tcp_host=${1-ibmsys} dial_user=${2-VTAM} sna_host=${3-TSO} userid=${4-USERID} password=${5-PASSWORD} # Verbose flag for x3270if #v="-v" # Define some handly local functions. # x3270 interface function xi() { X3270OUTPUT=6 X3270INPUT=5 x3270if 5>$ip 6<$op $v "$@" } # Common x3270 Ascii function ascii() { xi 'Ascii('$1')' } # Common x3270 String function string() { xi 'String("'"$@"'")' } # x3270 cursor column cursor_col() { xi -s 10 } # x3270 connection status cstatus() { xi -s 4 } # Failure. die() { xi "Info(\"$me error: $@\")" xi "CloseScript(1)" exit 1 } # Set up pipes for x3270 I/O ip=/tmp/ip.$$ op=/tmp/op.$$ rm -f $ip $op trap "rm -f $ip $op" 0 trap "exit" 2 3 1 15 mknod $ip p mknod $op p # Start x3270 x3270 -script -model 2 <$ip >$op & xp=$! exec 5>$ip # hold the pipe open xi -s 0 >/dev/null || exit 1 # Connect to host xi "Connect($tcp_host)" || die "Connection failed." # Make sure we're connected. xi Wait [ "`cstatus`" = N ] && die "Not connected." # Get to a VM command screen xi Enter # Wait for VM's prompt while [ "`ascii 1,0,5`" != "Enter" ] do sleep 2 done # Dial out to VTAM string "DIAL $dial_user" xi Enter len0=`expr length $dial_user` sl=`expr 10 + $len0` dl=`expr 5 + $len0` while [ "`ascii 0,64,4`" != VTAM ] do s="`ascii 8,0,$sl | sed 's/^ *//'`" if [ "$s" != "DIALED TO $dial_user" -a "$s" != "" ] then if [ "`ascii 7,0,$dl`" = "DIAL $dial_user" ] then die "Couldn't get to VTAM" fi fi sleep 2 done # Get to the SNA host string "$sna_host $userid" xi Enter # Pass VTAM digestion message and initial blank TSO screen while [ "`ascii 0,21,20`" = "USS COMMAND HAS BEEN" ] do sleep 2 done while : do s="`ascii 0,33,11 | sed 's/^ *//'`" [ "$s" != "" ] && break sleep 2 done # Now verify the "TSO/E LOGON" screen [ "$s" = "TSO/E LOGON" ] || die "Couldn't get to TSO logon screen" # Pump in the password string "$password" xi Enter # Now look for "LOGON IN PROGRESS" len0=`expr length $userid` nl=`expr 18 + $len0` [ "`ascii 0,11,$nl`" = "$userid LOGON IN PROGRESS" ] || die "Couldn't log on" # Make sure TSO is waiting for a '***' enter [ "`cursor_col`" -eq 5 ] || die "Don't understand logon screen" # Off to ISPF xi Enter xi 'CloseScript(0)' suite3270-4.1/x3270/Husk.c000066400000000000000000000126061413735575200147050ustar00rootroot00000000000000/* * Copyright (c) 1996-2009, 2019 Paul Mattes. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of Paul Mattes nor his contributors may be used * to endorse or promote products derived from this software without * specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. */ /* * Husk.c - Husk composite widget * A "Husk" (a nearly useless shell) is a trivial container widget, a * subclass of the Athena Composite widget with a no-op geometry manager * that allows children to move and resize themselves at will. */ #include "globals.h" #include #include #include #include #include "HuskP.h" static void ClassInitialize(void); static void Initialize(Widget, Widget, ArgList, Cardinal *); static void Realize(register Widget, Mask *, XSetWindowAttributes *); static Boolean SetValues(Widget, Widget, Widget, ArgList, Cardinal *); static XtGeometryResult GeometryManager(Widget, XtWidgetGeometry *, XtWidgetGeometry *); static void ChangeManaged(Widget); static XtGeometryResult QueryGeometry(Widget, XtWidgetGeometry *, XtWidgetGeometry *); HuskClassRec huskClassRec = { { /* core_class fields */ /* superclass */ (WidgetClass) & compositeClassRec, /* class_name */ "Husk", /* widget_size */ sizeof(HuskRec), /* class_initialize */ ClassInitialize, /* class_part_init */ NULL, /* class_inited */ FALSE, /* initialize */ Initialize, /* initialize_hook */ NULL, /* realize */ Realize, /* actions */ NULL, /* num_actions */ 0, /* resources */ NULL, /* num_resources */ 0, /* xrm_class */ NULLQUARK, /* compress_motion */ TRUE, /* compress_exposure */ TRUE, /* compress_enterleave */ TRUE, /* visible_interest */ FALSE, /* destroy */ NULL, /* resize */ NULL, /* expose */ NULL, /* set_values */ SetValues, /* set_values_hook */ NULL, /* set_values_almost */ XtInheritSetValuesAlmost, /* get_values_hook */ NULL, /* accept_focus */ NULL, /* version */ XtVersion, /* callback_private */ NULL, /* tm_table */ NULL, /* query_geometry */ QueryGeometry, /* display_accelerator */ XtInheritDisplayAccelerator, /* extension */ NULL }, { /* composite_class fields */ /* geometry_manager */ GeometryManager, /* change_managed */ ChangeManaged, /* insert_child */ XtInheritInsertChild, /* delete_child */ XtInheritDeleteChild, /* extension */ NULL }, { /* Husk class fields */ /* empty */ 0, } }; WidgetClass huskWidgetClass = (WidgetClass)&huskClassRec; static XtGeometryResult QueryGeometry(Widget widget _is_unused, XtWidgetGeometry *constraint _is_unused, XtWidgetGeometry *preferred _is_unused) { return XtGeometryYes; } static XtGeometryResult GeometryManager(Widget w, XtWidgetGeometry *request, XtWidgetGeometry *reply _is_unused) { /* Always succeed. */ if (!(request->request_mode & XtCWQueryOnly)) { if (request->request_mode & CWX) { w->core.x = request->x; } if (request->request_mode & CWY) { w->core.y = request->y; } if (request->request_mode & CWWidth) { w->core.width = request->width; } if (request->request_mode & CWHeight) { w->core.height = request->height; } if (request->request_mode & CWBorderWidth) { w->core.border_width = request->border_width; } } return XtGeometryYes; } static void ChangeManaged(Widget w _is_unused) { } static void ClassInitialize(void) { XawInitializeWidgetSet(); } static void Initialize(Widget request _is_unused, Widget new _is_unused, ArgList args _is_unused, Cardinal *num_args _is_unused) { } static void Realize(register Widget w, Mask *valueMask, XSetWindowAttributes *attributes) { attributes->bit_gravity = NorthWestGravity; *valueMask |= CWBitGravity; XtCreateWindow(w, (unsigned)InputOutput, (Visual *)CopyFromParent, *valueMask, attributes); } static Boolean SetValues(Widget current _is_unused, Widget request _is_unused, Widget new _is_unused, ArgList args _is_unused, Cardinal *num_args _is_unused) { return False; } suite3270-4.1/x3270/Husk.h000066400000000000000000000042721413735575200147120ustar00rootroot00000000000000/* * Copyright (c) 1996-2009, Paul Mattes. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of Paul Mattes nor his contributors may be used * to endorse or promote products derived from this software without * specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. */ /* * Husk.h * Husk Widget (subclass of CompositeClass) */ /* Parameters: Name Class RepType Default Value ---- ----- ------- ------------- background Background Pixel XtDefaultBackground border BorderColor Pixel XtDefaultForeground borderWidth BorderWidth Dimension 1 destroyCallback Callback Pointer NULL height Height Dimension 0 mappedWhenManaged MappedWhenManaged Boolean True width Width Dimension 0 x Position Position 0 y Position Position 0 */ /* Class record constants */ extern WidgetClass huskWidgetClass; typedef struct _HuskClassRec *HuskWidgetClass; typedef struct _HuskRec *HuskWidget; suite3270-4.1/x3270/HuskP.h000066400000000000000000000042331413735575200150270ustar00rootroot00000000000000/* * Copyright (c) 1996-2009, Paul Mattes. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of Paul Mattes nor his contributors may be used * to endorse or promote products derived from this software without * specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. */ /* * HuskP.h * Private definitions for Husk widget */ /* Husk Widget Private Data */ #include "Husk.h" #include /* New fields for the Husk widget class record */ typedef struct {int empty;} HuskClassPart; /* Full class record declaration */ typedef struct _HuskClassRec { CoreClassPart core_class; CompositeClassPart composite_class; HuskClassPart husk_class; } HuskClassRec; extern HuskClassRec huskClassRec; /* New fields for the Husk widget record */ typedef struct {int empty;} HuskPart; /* Full instance record declaration */ typedef struct _HuskRec { CorePart core; CompositePart composite; HuskPart husk; } HuskRec; suite3270-4.1/x3270/Makefile.aux000066400000000000000000000050151413735575200160570ustar00rootroot00000000000000# Copyright (c) 1995-2015, 2017, 2020 Paul Mattes. # All rights reserved. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # * Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # * Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in the # documentation and/or other materials provided with the distribution. # * Neither the name of Paul Mattes nor his contributors may be used # to endorse or promote products derived from this software without # specific prior written permission. # # THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS OR # IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES # OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN # NO EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, # SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED # TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR # PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF # LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING # NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS # SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. # Auxiliary makefile for x3270 PRODUCT = x3270 all: @echo "Must pick a specific make target." DOCS = $(PRODUCT).man html/$(PRODUCT)-man.html \ html/ibm_hosts.html ibm_hosts.man # Rule for building the source tarball: run autoconf and build the # documentation. src.tgz: prepare $(DOCS) Makefile.aux # Rule for preparing a freshly-pulled working copy: run autoconf. prepare: configure $(PRODUCT).man configure: configure.in autoconf MANDEP = man.m4 html.m4 m4man Makefile.aux version.txt MKMAN = ./m4man -t man -p $(PRODUCT) MKHTML = ./m4man -t html -p $(PRODUCT) MANSRC = x3270.man.m4 # Rule for building the documentation. man: $(DOCS) # Rules for building man pages and derived HTML documentation. $(PRODUCT).man: $(MANSRC) $(MANDEP) $(MKMAN) -n x3270 -o $@ x3270.man.m4 html/$(PRODUCT)-man.html: $(MANSRC) $(MANDEP) $(MKHTML) -n x3270 -o $@ x3270.man.m4 ibm_hosts.man: ibm_hosts.man.m4 man.m4 $(MANDEP) $(MKMAN) -n ibm_hosts -o $@ ibm_hosts.man.m4 html/ibm_hosts.html: ibm_hosts.man.m4 $(MANDEP) $(MKHTML) -n ibm_hosts -o $@ ibm_hosts.man.m4 suite3270-4.1/x3270/Makefile.in000066400000000000000000000042671413735575200157000ustar00rootroot00000000000000# Copyright (c) 2016 Paul Mattes. # All rights reserved. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # * Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # * Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in the # documentation and/or other materials provided with the distribution. # * Neither the name of Paul Mattes nor his contributors may be used # to endorse or promote products derived from this software without # specific prior written permission. # # THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS OR # IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES # OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN # NO EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, # SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED # TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR # PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF # LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING # NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS # SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. # VPATH-based Makefile for x3270 top = ../../.. objdir = ../obj/@host@/x3270 this = $(top)/x3270 export VPATH = $(this):$(top)/Common export TOP = $(top) export THIS = $(this) MAKEINC = -I$(this) -I$(top)/Common all: $(objdir) cd $(objdir) && $(MAKE) $(MAKEINC) -f $(this)/Makefile.obj $@ install: $(objdir) cd $(objdir) && $(MAKE) $(MAKEINC) -f $(this)/Makefile.obj $@ install.man: $(objdir) cd $(objdir) && $(MAKE) $(MAKEINC) -f $(this)/Makefile.obj $@ clean: $(objdir) cd $(objdir) && $(MAKE) $(MAKEINC) -f $(this)/Makefile.obj $@ clobber: $(objdir) cd $(objdir) && $(MAKE) $(MAKEINC) -f $(this)/Makefile.obj $@ depend: $(objdir) cd $(objdir) && $(MAKE) $(MAKEINC) -f $(this)/Makefile.obj $@ $(objdir): mkdir -p $(objdir) suite3270-4.1/x3270/Makefile.obj.in000066400000000000000000000122411413735575200164400ustar00rootroot00000000000000# Copyright (c) 1999-2018, 2020 Paul Mattes. # All rights reserved. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions are met: # * Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # * Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in the # documentation and/or other materials provided with the distribution. # * Neither the names of Paul Mattes nor the names of his contributors # may be used to endorse or promote products derived from this software # without specific prior written permission. # # THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS OR IMPLIED # WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF # MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO # EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, # SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, # PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; # OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, # WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR # OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF # ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. # # Makefile for x3270 RM = rm -f CC = @CC@ HOST = @host@ include x3270_files.mk libs.mk VOBJS = $(X3270_OBJECTS) fallbacks.o OBJS1 = $(VOBJS) version.o FONTS = 3270-12.pcf.gz 3270-12b.pcf.gz 3270-20.pcf.gz 3270-20b.pcf.gz \ 3270.pcf.gz 3270b.pcf.gz 3270gr.pcf.gz 3270gt12.pcf.gz \ 3270gt12b.pcf.gz 3270gt16.pcf.gz 3270gt16b.pcf.gz 3270gt24.pcf.gz \ 3270gt24b.pcf.gz 3270gt32.pcf.gz 3270gt32b.pcf.gz 3270gt8.pcf.gz \ 3270h.pcf.gz ICONS = x3270-192x192.png x3270-256x256.png x3270-48x48.png \ x3270-512x512.png x3270-96x96.png all: x3270 x3270a x3270.desktop x3270if $(FONTS) $(ICONS) dryrun LIBDIR = @libdir@ prefix = @prefix@ exec_prefix = @exec_prefix@ sysconfdir = @sysconfdir@ datarootdir = @datarootdir@ LIBX3270DIR = @LIBX3270DIR@ MANDIR = @mandir@ BINDIR = @bindir@ INSTALL = @INSTALL@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_DATA = @INSTALL_DATA@ CIFONTDIR = @CIFONTDIR@ ICONDIR = /usr/share/icons/hicolor APPDIR = /usr/share/applications CCOPTIONS = @CCOPTIONS@ XCPPFLAGS = -I$(THIS) -I$(TOP)/include @XINC@ -DLIBX3270DIR=\"$(LIBX3270DIR)\" @CPPFLAGS@ CFLAGS = $(CCOPTIONS) $(CDEBUGFLAGS) $(XCPPFLAGS) @CFLAGS@ LDFLAGS = @XLIB@ @LDFLAGS@ LIBS = @LIBS@ XVERSION = xversion.c version.o: mkversion.sh $(VOBJS) version.txt $(RM) $(XVERSION) sh $< x3270 $(filter %.txt,$^) >$(XVERSION) $(CC) $(CFLAGS) -c -o $@ $(XVERSION) $(RM) $(XVERSION) FALLBACKS = fb-x3270 fb-printSession fb-common fb-composeMap fb-messages fallbacks.c: mkfb $(FALLBACKS) $(RM) $@ ./mkfb -o $@ $(filter-out mkfb,$^) mkfb: mkfb.c $(CC) $(CFLAGS) $(LDFLAGS) -o $@ $(filter %.c,$^) x3270: $(OBJS1) $(DEP3270) $(DEP3270I) $(DEP32XX) $(DEP3270STUBS) $(CC) -o $@ $(OBJS1) $(LDFLAGS) $(LD3270) $(LD3270I) $(LD32XX) $(LD3270STUBS) $(LIBS) %.pcf.gz: %.bdf bdftopcf $< | gzip -n9 >$@ %.png: %.png.in cp $< $@ dryrun: dryrun.in cp $< $@ x3270a: x3270a.in cp $< $@ x3270.desktop: x3270.desktop.in cp $< $@ x3270if: ../x3270if/x3270if cp -p ../x3270if/x3270if $@ man:: x3270.man if [ ! -f $(notdir $^) ]; then cp $< $(notdir $^); fi man:: ibm_hosts.man if [ ! -f $(notdir $^) ]; then cp $< $(notdir $^); fi install:: x3270 [ -d $(DESTDIR)$(BINDIR) ] || \ mkdir -p $(DESTDIR)$(BINDIR) $(INSTALL_PROGRAM) x3270 $(DESTDIR)$(BINDIR)/x3270 install:: x3270a [ -d $(DESTDIR)$(BINDIR) ] || \ mkdir -p $(DESTDIR)$(BINDIR) $(INSTALL_SCRIPT) x3270a $(DESTDIR)$(BINDIR)/x3270a install:: ibm_hosts [ -d $(DESTDIR)$(LIBX3270DIR) ] || \ mkdir -p $(DESTDIR)$(LIBX3270DIR) [ -r $(DESTDIR)$(LIBX3270DIR)/ibm_hosts ] || \ $(INSTALL_DATA) $< $(DESTDIR)$(LIBX3270DIR)/ibm_hosts install:: [ -d $(DESTDIR)$(CIFONTDIR) ] || \ mkdir -p $(DESTDIR)$(CIFONTDIR) @for i in $(FONTS); \ do (set -x; $(INSTALL_DATA) $$i $(DESTDIR)$(CIFONTDIR)/$$i); \ done -chmod u+w $(DESTDIR)$(CIFONTDIR) $(DESTDIR)$(CIFONTDIR)/fonts.dir mkfontdir $(DESTDIR)$(CIFONTDIR) chmod u=rwx,go=rx $(DESTDIR)$(CIFONTDIR) chmod a=r $(DESTDIR)$(CIFONTDIR)/fonts.dir install:: if [ -d $(DESTDIR)$(ICONDIR) ]; \ then for icon in $(ICONS); \ do res=`echo $$icon | sed -e s/x3270-// -e s/.png//`; \ $(INSTALL_DATA) $$icon $(DESTDIR)$(ICONDIR)/$$res/apps/x3270.png; \ done; \ fi if [ -d $(DESTDIR)$(APPDIR) ]; \ then $(INSTALL_DATA) x3270.desktop $(DESTDIR)$(APPDIR)/x3270.desktop; \ fi install.man: man [ -d $(DESTDIR)$(MANDIR)/man1 ] || \ mkdir -p $(DESTDIR)$(MANDIR)/man1 [ -d $(DESTDIR)$(MANDIR)/man5 ] || \ mkdir -p $(DESTDIR)$(MANDIR)/man5 $(INSTALL_DATA) x3270.man $(DESTDIR)$(MANDIR)/man1/x3270.1 $(INSTALL_DATA) ibm_hosts.man $(DESTDIR)$(MANDIR)/man5/ibm_hosts.5 clean: $(RM) *.o *pcf.gz mkfb fallbacks.c clobber: clean $(RM) x3270 x3270a *.d *.man dryrun # Include auto-generated dependencies. -include $(OBJS:.o=.d) mkfb.d suite3270-4.1/x3270/about.c000066400000000000000000000474021413735575200151070ustar00rootroot00000000000000/* * Copyright (c) 1993-2019 Paul Mattes. * Copyright (c) 2004, Don Russell. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the names of Paul Mattes, Don Russell nor their * contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES AND DON RUSSELL "AS IS" * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL PAUL MATTES OR DON RUSSELL * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, * OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * about.c * Pop-up window with the current state of x3270. */ #include "globals.h" #include "xglobals.h" #include #include #include #include #include #include "appres.h" #include "objects.h" #include "resources.h" #include "about.h" #include "codepage.h" #include "host.h" #include "keymap.h" #include "lazya.h" #include "linemode.h" #include "popups.h" #include "split_host.h" #include "telnet.h" #include "utf8.h" #include "utils.h" #include "varbuf.h" #include "xappres.h" #include "xscreen.h" #include "xpopups.h" static Widget about_shell = NULL; static Widget about_form; /* Called when OK is pressed on the about popup */ static void saw_about(Widget w _is_unused, XtPointer client_data _is_unused, XtPointer call_data _is_unused) { XtPopdown(about_shell); } /* Called when the about popup is popped down */ static void destroy_about(Widget w _is_unused, XtPointer client_data _is_unused, XtPointer call_data _is_unused) { XtDestroyWidget(about_shell); about_shell = NULL; } /* Return a time difference in English */ static char * hms(time_t ts) { time_t t, td; long hr, mn, sc; time(&t); td = t - ts; hr = td / 3600; mn = (td % 3600) / 60; sc = td % 60; if (hr > 0) { return lazyaf("%ld %s %ld %s %ld %s", hr, (hr == 1)? get_message("hour"): get_message("hours"), mn, (mn == 1)? get_message("minute"): get_message("minutes"), sc, (sc == 1)? get_message("second"): get_message("seconds")); } else if (mn > 0) { return lazyaf("%ld %s %ld %s", mn, (mn == 1)? get_message("minute"): get_message("minutes"), sc, (sc == 1)? get_message("second"): get_message("seconds")); } else { return lazyaf("%ld %s", sc, (sc == 1)? get_message("second"): get_message("seconds")); } } #define MAKE_SMALL(label, n) { \ w_prev = w; \ w = XtVaCreateManagedWidget( \ ObjSmallLabel, labelWidgetClass, about_form, \ XtNborderWidth, 0, \ XtNlabel, label, \ XtNfromVert, w, \ XtNleft, XtChainLeft, \ XtNvertDistance, rescale(n), \ NULL); \ vd = n; \ } #define MAKE_LABEL(label, n) { \ w_prev = w; \ w = XtVaCreateManagedWidget( \ ObjNameLabel, labelWidgetClass, about_form, \ XtNborderWidth, 0, \ XtNlabel, label, \ XtNfromVert, w, \ XtNfromHoriz, left_anchor, \ XtNleft, XtChainLeft, \ XtNvertDistance, rescale(n), \ NULL); \ vd = n; \ } #define MAKE_VALUE(label) { \ v = XtVaCreateManagedWidget( \ ObjDataLabel, labelWidgetClass, about_form, \ XtNborderWidth, 0, \ XtNlabel, label, \ XtNfromVert, w_prev, \ XtNfromHoriz, w, \ XtNhorizDistance, 0, \ XtNvertDistance, rescale(vd), \ XtNleft, XtChainLeft, \ NULL); \ } #define MAKE_LABEL2(label) { \ w = XtVaCreateManagedWidget( \ ObjNameLabel, labelWidgetClass, about_form, \ XtNborderWidth, 0, \ XtNlabel, label, \ XtNfromVert, w_prev, \ XtNfromHoriz, v, \ XtNhorizDistance, 0, \ XtNvertDistance, rescale(vd), \ XtNleft, XtChainLeft, \ NULL); \ } static void ignore_vd(int vd _is_unused) { } static void ignore_w_prev(Widget w_prev _is_unused) { } /* Called when the "About x3270->Copyright" button is pressed */ void popup_about_copyright(void) { Widget w = NULL, w_prev = NULL; Widget left_anchor = NULL; int vd = 4; static bool catted = false; static char *s1 = NULL; static char *s2 = NULL; static char *s1a = "* Redistributions of source code must retain the above copyright\n\ notice, this list of conditions and the following disclaimer.\n\ * Redistributions in binary form must reproduce the above copyright\n\ notice, this list of conditions and the following disclaimer in the\n"; static char *s1b = "documentation and/or other materials provided with the distribution.\n\ * Neither the names of Paul Mattes, Don Russell, Dick Altenbern,\n\ Jeff Sparkes, GTRC nor their contributors may be used to endorse or\n\ promote products derived from this software without specific prior\n\ written permission."; static char *s2a = "THIS SOFTWARE IS PROVIDED BY PAUL MATTES, DON RUSSELL, DICK ALTENBERN,\n\ JEFF SPARKES AND GTRC \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES,\n\ INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY\n\ AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL PAUL\n\ MATTES, DON RUSSELL, DICK ALTENBERN, JEFF SPARKES OR GTRC BE LIABLE FOR ANY\n\ DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\n"; static char *s2b = "(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\n\ SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n\ CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT\n\ LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY\n\ OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH\n\ DAMAGE."; static char *line1 = NULL; if (!catted) { /* Make up for the ANSI C listerl string length limit. */ s1 = Malloc(strlen(s1a) + strlen(s1b) + 1); strcpy(s1, s1a); strcat(s1, s1b); s2 = Malloc(strlen(s2a) + strlen(s2b) + 1); strcpy(s2, s2a); strcat(s2, s2b); catted = true; } /* Create the popup */ about_shell = XtVaCreatePopupShell( "aboutCopyrightPopup", transientShellWidgetClass, toplevel, NULL); XtAddCallback(about_shell, XtNpopupCallback, place_popup, (XtPointer) CenterP); XtAddCallback(about_shell, XtNpopdownCallback, destroy_about, NULL); /* Create a form in the popup */ about_form = XtVaCreateManagedWidget( ObjDialog, formWidgetClass, about_shell, NULL); /* Pretty picture */ left_anchor = XtVaCreateManagedWidget( "icon", labelWidgetClass, about_form, XtNborderWidth, 0, XtNbitmap, x3270_icon, XtNfromVert, w, XtNleft, XtChainLeft, NULL); /* Miscellany */ MAKE_LABEL(build, 4); /* Everything else at the left margin under the bitmap */ w = left_anchor; left_anchor = NULL; if (line1 == NULL) { line1 = xs_buffer( "Copyright \251 1993-%s, Paul Mattes.\n\ Copyright \251 2004-2005, Don Russell.\n\ Copyright \251 1995, Dick Altenbern.\n\ Copyright \251 1990, Jeff Sparkes.\n\ Copyright \251 1989, Georgia Tech Research Corporation (GTRC), Atlanta, GA 30332.\n\ All rights reserved.", cyear); } MAKE_SMALL(line1, 4); MAKE_SMALL( "Redistribution and use in source and binary forms, with or without\n\ modification, are permitted provided that the following conditions\n\ are met:", 4); MAKE_SMALL(s1, 4); MAKE_SMALL(s2, 4); /* Add "OK" button at the lower left */ w = XtVaCreateManagedWidget( ObjConfirmButton, commandWidgetClass, about_form, XtNfromVert, w, XtNleft, XtChainLeft, XtNbottom, XtChainBottom, NULL); XtAddCallback(w, XtNcallback, saw_about, 0); /* Pop it up */ popup_popup(about_shell, XtGrabExclusive); /* Make gcc happy. */ ignore_vd(vd); ignore_w_prev(w_prev); } /* Called when the "About x3270->Configuration" button is pressed */ void popup_about_config(void) { Widget w = NULL, w_prev = NULL; Widget v = NULL; Widget left_anchor = NULL; int vd = 4; const char *ftype; char *xbuf; /* Create the popup */ about_shell = XtVaCreatePopupShell( "aboutConfigPopup", transientShellWidgetClass, toplevel, NULL); XtAddCallback(about_shell, XtNpopupCallback, place_popup, (XtPointer) CenterP); XtAddCallback(about_shell, XtNpopdownCallback, destroy_about, NULL); /* Create a form in the popup */ about_form = XtVaCreateManagedWidget( ObjDialog, formWidgetClass, about_shell, NULL); /* Pretty picture */ left_anchor = XtVaCreateManagedWidget( "icon", labelWidgetClass, about_form, XtNborderWidth, 0, XtNbitmap, x3270_icon, XtNfromVert, w, XtNleft, XtChainLeft, NULL); /* Miscellany */ MAKE_LABEL(build, 4); /* Everything else at the left margin under the bitmap */ w = left_anchor; left_anchor = NULL; MAKE_LABEL(get_message("processId"), 4); MAKE_VALUE(lazyaf("%d", getpid())); MAKE_LABEL2(get_message("windowId")); MAKE_VALUE(lazyaf("0x%lx", XtWindow(toplevel))); MAKE_LABEL(lazyaf("%s %s: %d %s x %d %s, %s, %s", get_message("model"), model_name, maxCOLS, get_message("columns"), maxROWS, get_message("rows"), appres.interactive.mono? get_message("mono"): (mode.m3279? get_message("fullColor"): get_message("pseudoColor")), (mode.extended && !HOST_FLAG(STD_DS_HOST))? get_message("extendedDs"): get_message("standardDs")), 4); MAKE_LABEL(get_message("terminalName"), 4); MAKE_VALUE(termtype); MAKE_LABEL(get_message("emulatorFont"), 4); MAKE_VALUE(full_efontname); if (*standard_font) { ftype = get_message("xFont"); } else { ftype = get_message("cgFont"); } xbuf = xs_buffer(" %s", ftype); MAKE_LABEL(xbuf, 0); XtFree(xbuf); if (dbcs) { MAKE_LABEL(get_message("emulatorFontDbcs"), 4); MAKE_VALUE(full_efontname_dbcs); } MAKE_LABEL(get_message("displayCharacterSet"), 4); if (!efont_matches) { xbuf = xs_buffer("ascii-7 (%s %s, %s %s)", get_message("require"), display_charset(), get_message("have"), efont_charset); MAKE_VALUE(xbuf); XtFree(xbuf); } else { MAKE_VALUE(efont_charset); } if (dbcs) { MAKE_LABEL(get_message("displayCharacterSetDbcs"), 4); MAKE_VALUE(efont_charset_dbcs); } MAKE_LABEL(get_message("codepage"), 4); xbuf = xs_buffer("%s (%s)", get_codepage_name(), get_codepage_number()); MAKE_VALUE(xbuf); XtFree(xbuf); MAKE_LABEL(get_message("sbcsCgcsgid"), 4); xbuf = xs_buffer("GCSGID %u, CPGID %u", (unsigned short)((cgcsgid >> 16) & 0xffff), (unsigned short)(cgcsgid & 0xffff)); MAKE_VALUE(xbuf); XtFree(xbuf); if (dbcs) { MAKE_LABEL(get_message("dbcsCgcsgid"), 4); xbuf = xs_buffer("GCSGID %u, CPGID %u", (unsigned short)((cgcsgid_dbcs >> 16) & 0xffff), (unsigned short)(cgcsgid_dbcs & 0xffff)); MAKE_VALUE(xbuf); XtFree(xbuf); MAKE_LABEL(get_message("inputMethod"), 4); if (xappres.input_method) { MAKE_VALUE(xappres.input_method); } else if (getenv("XMODIFIERS") != NULL) { MAKE_VALUE("(via environment)"); } else { MAKE_VALUE("(unspecified)"); } MAKE_LABEL2(get_message("ximState")); if (xim_error) { ftype = get_message("ximDisabled"); } else if (im == NULL) { ftype = get_message("ximNotFound"); } else { ftype = get_message("ximActive"); } MAKE_VALUE(ftype); MAKE_LABEL2(get_message("ximLocale")); if (locale_name != NULL) { MAKE_VALUE(locale_name); } else { MAKE_VALUE("(error)"); } } MAKE_LABEL(get_message("localeCodeset"), 4); MAKE_VALUE(locale_codeset); if (trans_list != NULL || temp_keymaps != NULL) { struct trans_list *t; varbuf_t r; vb_init(&r); for (t = trans_list; t; t = t->next) { if (vb_len(&r)) { vb_appends(&r, ","); } vb_appends(&r, t->name); } for (t = temp_keymaps; t; t = t->next) { if (vb_len(&r)) { vb_appends(&r, " "); } vb_appends(&r, "+"); vb_appends(&r, t->name); } MAKE_LABEL(get_message("keyboardMap"), 4) MAKE_VALUE(vb_buf(&r)); vb_free(&r); } else { MAKE_LABEL(get_message("defaultKeyboardMap"), 4); } if (appres.interactive.compose_map) { MAKE_LABEL(get_message("composeMap"), 4); MAKE_VALUE(appres.interactive.compose_map); } else { MAKE_LABEL(get_message("noComposeMap"), 4); } if (xappres.active_icon) { MAKE_LABEL(get_message("activeIcon"), 4); xbuf = xs_buffer(" %s", get_message("iconFont")); MAKE_LABEL(xbuf, 0); XtFree(xbuf); MAKE_VALUE(xappres.icon_font); if (xappres.label_icon) { xbuf = xs_buffer(" %s", get_message("iconLabelFont")); MAKE_LABEL(xbuf, 0); XtFree(xbuf); MAKE_VALUE(xappres.icon_label_font); } } else { MAKE_LABEL(get_message("staticIcon"), 4); } /* Add "OK" button at the lower left */ w = XtVaCreateManagedWidget( ObjConfirmButton, commandWidgetClass, about_form, XtNfromVert, w, XtNleft, XtChainLeft, XtNbottom, XtChainBottom, NULL); XtAddCallback(w, XtNcallback, saw_about, 0); /* Pop it up */ popup_popup(about_shell, XtGrabExclusive); } /* Called when the "About x3270->Connection Status" button is pressed */ void popup_about_status(void) { Widget w = NULL, w_prev = NULL; Widget v = NULL; Widget left_anchor = NULL; int vd = 4; const char *fbuf; const char *ftype; const char *emode; const char *eopts; const char *ptype; const char *bplu; /* Create the popup */ about_shell = XtVaCreatePopupShell( "aboutStatusPopup", transientShellWidgetClass, toplevel, NULL); XtAddCallback(about_shell, XtNpopupCallback, place_popup, (XtPointer) CenterP); XtAddCallback(about_shell, XtNpopdownCallback, destroy_about, NULL); /* Create a form in the popup */ about_form = XtVaCreateManagedWidget( ObjDialog, formWidgetClass, about_shell, NULL); /* Pretty picture */ left_anchor = XtVaCreateManagedWidget( "icon", labelWidgetClass, about_form, XtNborderWidth, 0, XtNbitmap, x3270_icon, XtNfromVert, w, XtNleft, XtChainLeft, NULL); /* Miscellany */ MAKE_LABEL(build, 4); /* Everything else at the left margin under the bitmap */ w = left_anchor; left_anchor = NULL; if (CONNECTED) { MAKE_LABEL(get_message("connectedTo"), 4); #if defined(LOCAL_PROCESS) /*[*/ if (local_process && !strlen(current_host)) { MAKE_VALUE("(shell)"); } else #endif /*]*/ { if (!xappres.suppress_host) { MAKE_VALUE(current_host); } } #if defined(LOCAL_PROCESS) /*[*/ if (!local_process) { #endif /*]*/ MAKE_LABEL2(lazyaf(" %s", get_message("port"))); MAKE_VALUE(lazyaf("%d", current_port)); #if defined(LOCAL_PROCESS) /*[*/ } #endif /*]*/ if (net_secure_connection()) { const char *session, *cert; const char *newline; MAKE_LABEL2(lazyaf("%s%s%s", get_message("secure"), net_secure_unverified()? ", ": "", net_secure_unverified()? get_message("unverified"): "")); MAKE_LABEL(lazyaf("%s %s", get_message("provider"), net_sio_provider()), 2); if ((session = net_session_info()) != NULL) { MAKE_LABEL(get_message("sessionInfo"), 2); while ((newline = strchr(session, '\n')) != NULL) { MAKE_LABEL(lazyaf(" %.*s", (int)(newline - session), session), 0); session = newline + 1; } MAKE_LABEL(lazyaf(" %s", session), 0); } if ((cert = net_server_cert_info()) != NULL) { int line_len; # define CERT_WRAP 80 char *break_indent = ""; MAKE_LABEL(get_message("serverCert"), 2); while ((newline = strchr(cert, '\n')) != NULL) { line_len = (int)(newline - cert); while (line_len > CERT_WRAP) { MAKE_LABEL(lazyaf(" %s%.*s", break_indent, CERT_WRAP, cert), 0); cert += CERT_WRAP; line_len -= CERT_WRAP; break_indent = " "; } MAKE_LABEL(lazyaf(" %s%.*s", break_indent, line_len, cert), 0); cert = newline + 1; break_indent = ""; } line_len = (int)strlen(cert); while (line_len > CERT_WRAP) { MAKE_LABEL(lazyaf(" %s%.*s", break_indent, CERT_WRAP, cert), 0); cert += CERT_WRAP; line_len -= CERT_WRAP; break_indent = " "; } MAKE_LABEL(lazyaf(" %s%s", break_indent, cert), 0); } } ptype = net_proxy_type(); if (ptype) { MAKE_LABEL(get_message("proxyType"), 4); MAKE_VALUE(ptype); MAKE_LABEL2(lazyaf(" %s", get_message("server"))); MAKE_VALUE(net_proxy_host()); MAKE_LABEL2(lazyaf(" %s", get_message("port"))); MAKE_VALUE(net_proxy_port()); } if (IN_E) { emode = "TN3270E "; } else { emode = ""; } if (IN_NVT) { if (linemode) { ftype = get_message("lineMode"); } else { ftype = get_message("charMode"); } fbuf = lazyaf("%s%s, ", emode, ftype); } else if (IN_SSCP) { fbuf = lazyaf("%s%s, ", emode, get_message("sscpMode")); } else if (IN_3270) { fbuf = lazyaf("%s%s, ", emode, get_message("dsMode")); } else if (cstate == CONNECTED_UNBOUND) { fbuf = lazyaf("%s%s, ", emode, get_message("unboundMode")); } else { fbuf = ""; } fbuf = lazyaf("%s%s", fbuf, hms(ns_time)); MAKE_LABEL(fbuf, 0); if (connected_lu != NULL && connected_lu[0]) { MAKE_LABEL(lazyaf(" %s", get_message("luName")), 0); MAKE_VALUE(connected_lu); } bplu = net_query_bind_plu_name(); if (bplu != NULL && bplu[0]) { MAKE_LABEL(lazyaf(" %s", get_message("bindPluName")), 0); MAKE_VALUE(bplu); } eopts = tn3270e_current_opts(); if (eopts != NULL) { MAKE_LABEL(lazyaf(" %s", get_message("tn3270eOpts")), 0); MAKE_VALUE(eopts); } else if (IN_E) { MAKE_LABEL(lazyaf(" %s", get_message("tn3270eNoOpts")), 0); } if (IN_3270) { fbuf = lazyaf("%s %d %s, %d %s\n%s %d %s, %d %s", get_message("sent"), ns_bsent, (ns_bsent == 1)? get_message("byte"): get_message("bytes"), ns_rsent, (ns_rsent == 1)? get_message("record"): get_message("records"), get_message("Received"), ns_brcvd, (ns_brcvd == 1)? get_message("byte"): get_message("bytes"), ns_rrcvd, (ns_rrcvd == 1)? get_message("record"): get_message("records")); } else { fbuf = lazyaf("%s %d %s, %s %d %s", get_message("sent"), ns_bsent, (ns_bsent == 1)? get_message("byte"): get_message("bytes"), get_message("received"), ns_brcvd, (ns_brcvd == 1)? get_message("byte"): get_message("bytes")); } MAKE_LABEL(fbuf, 4); if (IN_NVT) { struct ctl_char *c = linemode_chars(); int i; MAKE_LABEL(get_message("specialCharacters"), 4); for (i = 0; c[i].name; i++) { if (!i || !(i % 4)) { MAKE_LABEL(lazyaf(" %s", c[i].name), 0); } else { MAKE_LABEL2(c[i].name); } MAKE_VALUE(c[i].value); } } } else if (HALF_CONNECTED) { MAKE_LABEL(get_message("connectionPending"), 4); MAKE_VALUE(current_host); } else if (host_reconnecting()) { MAKE_LABEL(get_message("reconnecting"), 4); } else { MAKE_LABEL(get_message("notConnected"), 4); } /* Add "OK" button at the lower left */ w = XtVaCreateManagedWidget( ObjConfirmButton, commandWidgetClass, about_form, XtNfromVert, w, XtNleft, XtChainLeft, XtNbottom, XtChainBottom, NULL); XtAddCallback(w, XtNcallback, saw_about, 0); /* Pop it up */ popup_popup(about_shell, XtGrabExclusive); } #undef MAKE_LABEL #undef MAKE_VALUE suite3270-4.1/x3270/about.h000066400000000000000000000032351413735575200151100ustar00rootroot00000000000000/* * Copyright (c) 1995-2009, 2015 Paul Mattes. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of Paul Mattes nor his contributors may be used * to endorse or promote products derived from this software without * specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. */ /* * about.h * Global declarations for about.c. */ void popup_about_copyright(void); void popup_about_config(void); void popup_about_status(void); suite3270-4.1/x3270/arrow.bm000066400000000000000000000003241413735575200152730ustar00rootroot00000000000000#define arrow_width 10 #define arrow_height 10 static unsigned char arrow_bits[] = { 0x00, 0x00, 0x02, 0x00, 0x0d, 0x00, 0x3e, 0x00, 0xfd, 0x00, 0xfe, 0x01, 0xfd, 0x00, 0x3e, 0x00, 0x0d, 0x00, 0x02, 0x00}; suite3270-4.1/x3270/arrow15.bm000066400000000000000000000004311413735575200154400ustar00rootroot00000000000000#define arrow15_width 15 #define arrow15_height 15 static unsigned char arrow15_bits[] = { 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x0a, 0x00, 0x3d, 0x00, 0xfa, 0x00, 0xfd, 0x03, 0xfa, 0x0f, 0xfd, 0x1f, 0xfa, 0x0f, 0xfd, 0x03, 0xfa, 0x00, 0x3d, 0x00, 0x0a, 0x00, 0x01, 0x00}; suite3270-4.1/x3270/arrow20.bm000066400000000000000000000007231413735575200154400ustar00rootroot00000000000000#define arrow20_width 20 #define arrow20_height 20 static unsigned char arrow20_bits[] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x35, 0x00, 0x00, 0xfa, 0x00, 0x00, 0xf5, 0x03, 0x00, 0xfa, 0x0f, 0x00, 0xf5, 0x3f, 0x00, 0xfa, 0xff, 0x00, 0xf5, 0xff, 0x03, 0xfa, 0xff, 0x03, 0xf5, 0xff, 0x00, 0xfa, 0x3f, 0x00, 0xf5, 0x0f, 0x00, 0xfa, 0x03, 0x00, 0xf5, 0x00, 0x00, 0x3a, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00}; suite3270-4.1/x3270/cg.h000066400000000000000000000174331413735575200143740ustar00rootroot00000000000000/* * Copyright (c) 1993-2009, Paul Mattes. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the names of Paul Mattes nor the names of his contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO * EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * cg.h * * Character encoding for the 3270 character generator font, * using the same suffixes as Latin-1 XK_xxx keysyms. * * Charaters that represent unique EBCDIC or status line codes * are noted with comments. */ #define CG_null 0x00 /* EBCDIC 00 */ #define CG_nobreakspace 0x01 #define CG_ff 0x02 /* EBCDIC 0C */ #define CG_cr 0x03 /* EBCDIC 0D */ #define CG_nl 0x04 /* EBCDIC 15 */ #define CG_em 0x05 /* EBCDIC 19 */ #define CG_eightones 0x06 /* EBCDIC FF */ #define CG_hyphen 0x07 #define CG_greater 0x08 #define CG_less 0x09 #define CG_bracketleft 0x0a #define CG_bracketright 0x0b #define CG_parenleft 0x0c #define CG_parenright 0x0d #define CG_braceleft 0x0e #define CG_braceright 0x0f #define CG_space 0x10 #define CG_equal 0x11 #define CG_apostrophe 0x12 #define CG_quotedbl 0x13 #define CG_slash 0x14 #define CG_backslash 0x15 #define CG_bar 0x16 #define CG_brokenbar 0x17 #define CG_question 0x18 #define CG_exclam 0x19 #define CG_dollar 0x1a #define CG_cent 0x1b #define CG_sterling 0x1c #define CG_yen 0x1d #define CG_paragraph 0x1e #define CG_currency 0x1f #define CG_0 0x20 #define CG_1 0x21 #define CG_2 0x22 #define CG_3 0x23 #define CG_4 0x24 #define CG_5 0x25 #define CG_6 0x26 #define CG_7 0x27 #define CG_8 0x28 #define CG_9 0x29 #define CG_ssharp 0x2a #define CG_section 0x2b #define CG_numbersign 0x2c #define CG_at 0x2d #define CG_percent 0x2e #define CG_underscore 0x2f #define CG_ampersand 0x30 #define CG_minus 0x31 #define CG_period 0x32 #define CG_comma 0x33 #define CG_colon 0x34 #define CG_plus 0x35 #define CG_notsign 0x36 #define CG_macron 0x37 #define CG_degree 0x38 #define CG_periodcentered 0x39 #define CG_asciicircum 0x3a #define CG_asciitilde 0x3b #define CG_diaeresis 0x3c #define CG_grave 0x3d #define CG_acute 0x3e #define CG_cedilla 0x3f #define CG_agrave 0x40 #define CG_egrave 0x41 #define CG_igrave 0x42 #define CG_ograve 0x43 #define CG_ugrave 0x44 #define CG_atilde 0x45 #define CG_otilde 0x46 #define CG_ydiaeresis 0x47 #define CG_Yacute 0x48 #define CG_yacute 0x49 #define CG_eacute 0x4a #define CG_onequarter 0x4b #define CG_onehalf 0x4c #define CG_threequarters 0x4d #define CG_udiaeresis 0x4e #define CG_udiaeresis 0x4e #define CG_ccedilla 0x4f #define CG_adiaeresis 0x50 #define CG_ediaeresis 0x51 #define CG_idiaeresis 0x52 #define CG_odiaeresis 0x53 #define CG_mu 0x54 #define CG_acircumflex 0x55 #define CG_ecircumflex 0x56 #define CG_icircumflex 0x57 #define CG_ocircumflex 0x58 #define CG_ucircumflex 0x59 #define CG_aacute 0x5a #define CG_multiply 0x5b #define CG_iacute 0x5c #define CG_oacute 0x5d #define CG_uacute 0x5e #define CG_ntilde 0x5f #define CG_Agrave 0x60 #define CG_Egrave 0x61 #define CG_Igrave 0x62 #define CG_Ograve 0x63 #define CG_Ugrave 0x64 #define CG_Atilde 0x65 #define CG_Otilde 0x66 #define CG_onesuperior 0x67 #define CG_twosuperior 0x68 #define CG_threesuperior 0x69 #define CG_ordfeminine 0x6a #define CG_masculine 0x6b #define CG_guillemotleft 0x6c #define CG_guillemotright 0x6d #define CG_exclamdown 0x6e #define CG_questiondown 0x6f #define CG_Adiaeresis 0x70 #define CG_Ediaeresis 0x71 #define CG_Idiaeresis 0x72 #define CG_Odiaeresis 0x73 #define CG_Udiaeresis 0x74 #define CG_Acircumflex 0x75 #define CG_Ecircumflex 0x76 #define CG_Icircumflex 0x77 #define CG_Ocircumflex 0x78 #define CG_Ucircumflex 0x79 #define CG_Aacute 0x7a #define CG_Eacute 0x7b #define CG_Iacute 0x7c #define CG_Oacute 0x7d #define CG_Uacute 0x7e #define CG_Ntilde 0x7f #define CG_a 0x80 #define CG_b 0x81 #define CG_c 0x82 #define CG_d 0x83 #define CG_e 0x84 #define CG_f 0x85 #define CG_g 0x86 #define CG_h 0x87 #define CG_i 0x88 #define CG_j 0x89 #define CG_k 0x8a #define CG_l 0x8b #define CG_m 0x8c #define CG_n 0x8d #define CG_o 0x8e #define CG_p 0x8f #define CG_q 0x90 #define CG_r 0x91 #define CG_s 0x92 #define CG_t 0x93 #define CG_u 0x94 #define CG_v 0x95 #define CG_w 0x96 #define CG_x 0x97 #define CG_y 0x98 #define CG_z 0x99 #define CG_ae 0x9a #define CG_oslash 0x9b #define CG_aring 0x9c #define CG_division 0x9d #define CG_fm 0x9e /* EBCDIC 1E */ #define CG_dup 0x9f /* EBCDIC 1C */ #define CG_A 0xa0 #define CG_B 0xa1 #define CG_C 0xa2 #define CG_D 0xa3 #define CG_E 0xa4 #define CG_F 0xa5 #define CG_G 0xa6 #define CG_H 0xa7 #define CG_I 0xa8 #define CG_J 0xa9 #define CG_K 0xaa #define CG_L 0xab #define CG_M 0xac #define CG_N 0xad #define CG_O 0xae #define CG_P 0xaf #define CG_Q 0xb0 #define CG_R 0xb1 #define CG_S 0xb2 #define CG_T 0xb3 #define CG_U 0xb4 #define CG_V 0xb5 #define CG_W 0xb6 #define CG_X 0xb7 #define CG_Y 0xb8 #define CG_Z 0xb9 #define CG_AE 0xba #define CG_Ooblique 0xbb #define CG_Aring 0xbc #define CG_Ccedilla 0xbd #define CG_semicolon 0xbe #define CG_asterisk 0xbf /* codes 0xc0 through 0xcf are for field attributes */ #define CG_copyright 0xd0 #define CG_registered 0xd1 #define CG_boxA 0xd2 /* status boxed A */ #define CG_insert 0xd3 /* status insert mode indicator */ #define CG_boxB 0xd4 /* status boxed B */ #define CG_box6 0xd5 /* status boxed 6 */ #define CG_plusminus 0xd6 #define CG_ETH 0xd7 #define CG_rightarrow 0xd8 #define CG_THORN 0xd9 #define CG_upshift 0xda /* status upshift indicator */ #define CG_human 0xdb /* status illegal position indicator */ #define CG_underB 0xdc /* status underlined B */ #define CG_downshift 0xdd /* status downshift indicator */ #define CG_boxquestion 0xde /* status boxed question mark */ #define CG_boxsolid 0xdf /* status solid block */ /* codes 0xe0 through 0xef are for field attributes */ #define CG_badcommhi 0xf0 /* status bad communication indicator */ #define CG_commhi 0xf1 /* status communication indicator */ #define CG_commjag 0xf2 /* status communication indicator */ #define CG_commlo 0xf3 /* status communication indicator */ #define CG_clockleft 0xf4 /* status wait symbol */ #define CG_clockright 0xf5 /* status wait symbol */ #define CG_lock 0xf6 /* status keyboard lock X symbol */ #define CG_eth 0xf7 #define CG_leftarrow 0xf8 #define CG_thorn 0xf9 #define CG_keyleft 0xfa /* status key lock indicator */ #define CG_keyright 0xfb /* status key lock indicator */ #define CG_box4 0xfc /* status boxed 4 */ #define CG_underA 0xfd /* status underlined A */ #define CG_magcard 0xfe /* status magnetic card indicator */ #define CG_boxhuman 0xff /* status boxed position indicator */ #define CG_alpha 0x13a /* APL alpha character */ suite3270-4.1/x3270/common_files.mk000077700000000000000000000000001413735575200232662../Common/common_files.mkustar00rootroot00000000000000suite3270-4.1/x3270/conf.h.in000066400000000000000000000041411413735575200153250ustar00rootroot00000000000000/* * Copyright (c) 2000-2009, 2014-2015, 2017, 2019 Paul Mattes. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of Paul Mattes nor his contributors may be used * to endorse or promote products derived from this software without * specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. */ /* * conf.h * System-specific #defines for libraries and library functions. */ /* Libraries. */ /* Header files. */ #undef HAVE_SYS_SELECT_H #undef HAVE_READLINE_HISTORY_H #undef HAVE_PTY_H #undef HAVE_LIBUTIL_H #undef HAVE_UTIL_H #undef HAVE_GETOPT_H /* Uncommon functions. */ #undef HAVE_VASPRINTF #undef HAVE_FSEEKO #undef HAVE_FORKPTY /* Configuration options. */ /* Standard types. */ #undef HAVE_DECL___UINT32_T #undef HAVE_DECL_UINT32_T #undef HAVE_DECL___UINT16T #undef HAVE_DECL_UINT16_T /* Optional parts. */ #undef X3270_LOCAL_PROCESS #undef X3270_IPV6 suite3270-4.1/x3270/configure000077500000000000000000005061231413735575200155400ustar00rootroot00000000000000#! /bin/sh # Guess values for system-dependent variables and create Makefiles. # Generated by GNU Autoconf 2.69 for x3270 4.0. # # # Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc. # # # This configure script is free software; the Free Software Foundation # gives unlimited permission to copy, distribute and modify it. ## -------------------- ## ## M4sh Initialization. ## ## -------------------- ## # Be more Bourne compatible DUALCASE=1; export DUALCASE # for MKS sh if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST else case `(set -o) 2>/dev/null` in #( *posix*) : set -o posix ;; #( *) : ;; esac fi as_nl=' ' export as_nl # Printing a long string crashes Solaris 7 /usr/bin/printf. as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo # Prefer a ksh shell builtin over an external printf program on Solaris, # but without wasting forks for bash or zsh. if test -z "$BASH_VERSION$ZSH_VERSION" \ && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then as_echo='print -r --' as_echo_n='print -rn --' elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then as_echo='printf %s\n' as_echo_n='printf %s' else if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' as_echo_n='/usr/ucb/echo -n' else as_echo_body='eval expr "X$1" : "X\\(.*\\)"' as_echo_n_body='eval arg=$1; case $arg in #( *"$as_nl"*) expr "X$arg" : "X\\(.*\\)$as_nl"; arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; esac; expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" ' export as_echo_n_body as_echo_n='sh -c $as_echo_n_body as_echo' fi export as_echo_body as_echo='sh -c $as_echo_body as_echo' fi # The user is always right. if test "${PATH_SEPARATOR+set}" != set; then PATH_SEPARATOR=: (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || PATH_SEPARATOR=';' } fi # IFS # We need space, tab and new line, in precisely that order. Quoting is # there to prevent editors from complaining about space-tab. # (If _AS_PATH_WALK were called with IFS unset, it would disable word # splitting by setting IFS to empty value.) IFS=" "" $as_nl" # Find who we are. Look in the path if we contain no directory separator. as_myself= case $0 in #(( *[\\/]* ) as_myself=$0 ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break done IFS=$as_save_IFS ;; esac # We did not find ourselves, most probably we were run as `sh COMMAND' # in which case we are not to be found in the path. if test "x$as_myself" = x; then as_myself=$0 fi if test ! -f "$as_myself"; then $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 exit 1 fi # Unset variables that we do not need and which cause bugs (e.g. in # pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" # suppresses any "Segmentation fault" message there. '((' could # trigger a bug in pdksh 5.2.14. for as_var in BASH_ENV ENV MAIL MAILPATH do eval test x\${$as_var+set} = xset \ && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : done PS1='$ ' PS2='> ' PS4='+ ' # NLS nuisances. LC_ALL=C export LC_ALL LANGUAGE=C export LANGUAGE # CDPATH. (unset CDPATH) >/dev/null 2>&1 && unset CDPATH # Use a proper internal environment variable to ensure we don't fall # into an infinite loop, continuously re-executing ourselves. if test x"${_as_can_reexec}" != xno && test "x$CONFIG_SHELL" != x; then _as_can_reexec=no; export _as_can_reexec; # We cannot yet assume a decent shell, so we have to provide a # neutralization value for shells without unset; and this also # works around shells that cannot unset nonexistent variables. # Preserve -v and -x to the replacement shell. BASH_ENV=/dev/null ENV=/dev/null (unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV case $- in # (((( *v*x* | *x*v* ) as_opts=-vx ;; *v* ) as_opts=-v ;; *x* ) as_opts=-x ;; * ) as_opts= ;; esac exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} # Admittedly, this is quite paranoid, since all the known shells bail # out after a failed `exec'. $as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2 as_fn_exit 255 fi # We don't want this to propagate to other subprocesses. { _as_can_reexec=; unset _as_can_reexec;} if test "x$CONFIG_SHELL" = x; then as_bourne_compatible="if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on \${1+\"\$@\"}, which # is contrary to our usage. Disable this feature. alias -g '\${1+\"\$@\"}'='\"\$@\"' setopt NO_GLOB_SUBST else case \`(set -o) 2>/dev/null\` in #( *posix*) : set -o posix ;; #( *) : ;; esac fi " as_required="as_fn_return () { (exit \$1); } as_fn_success () { as_fn_return 0; } as_fn_failure () { as_fn_return 1; } as_fn_ret_success () { return 0; } as_fn_ret_failure () { return 1; } exitcode=0 as_fn_success || { exitcode=1; echo as_fn_success failed.; } as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; } as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; } as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; } if ( set x; as_fn_ret_success y && test x = \"\$1\" ); then : else exitcode=1; echo positional parameters were not saved. fi test x\$exitcode = x0 || exit 1 test -x / || exit 1" as_suggested=" as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" && test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1 test \$(( 1 + 1 )) = 2 || exit 1" if (eval "$as_required") 2>/dev/null; then : as_have_required=yes else as_have_required=no fi if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null; then : else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR as_found=false for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. as_found=: case $as_dir in #( /*) for as_base in sh bash ksh sh5; do # Try only shells that exist, to save several forks. as_shell=$as_dir/$as_base if { test -f "$as_shell" || test -f "$as_shell.exe"; } && { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$as_shell"; } 2>/dev/null; then : CONFIG_SHELL=$as_shell as_have_required=yes if { $as_echo "$as_bourne_compatible""$as_suggested" | as_run=a "$as_shell"; } 2>/dev/null; then : break 2 fi fi done;; esac as_found=false done $as_found || { if { test -f "$SHELL" || test -f "$SHELL.exe"; } && { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$SHELL"; } 2>/dev/null; then : CONFIG_SHELL=$SHELL as_have_required=yes fi; } IFS=$as_save_IFS if test "x$CONFIG_SHELL" != x; then : export CONFIG_SHELL # We cannot yet assume a decent shell, so we have to provide a # neutralization value for shells without unset; and this also # works around shells that cannot unset nonexistent variables. # Preserve -v and -x to the replacement shell. BASH_ENV=/dev/null ENV=/dev/null (unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV case $- in # (((( *v*x* | *x*v* ) as_opts=-vx ;; *v* ) as_opts=-v ;; *x* ) as_opts=-x ;; * ) as_opts= ;; esac exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} # Admittedly, this is quite paranoid, since all the known shells bail # out after a failed `exec'. $as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2 exit 255 fi if test x$as_have_required = xno; then : $as_echo "$0: This script requires a shell more modern than all" $as_echo "$0: the shells that I found on your system." if test x${ZSH_VERSION+set} = xset ; then $as_echo "$0: In particular, zsh $ZSH_VERSION has bugs and should" $as_echo "$0: be upgraded to zsh 4.3.4 or later." else $as_echo "$0: Please tell bug-autoconf@gnu.org about your system, $0: including any error possibly output before this $0: message. Then install a modern shell, or manually run $0: the script under such a shell if you do have one." fi exit 1 fi fi fi SHELL=${CONFIG_SHELL-/bin/sh} export SHELL # Unset more variables known to interfere with behavior of common tools. CLICOLOR_FORCE= GREP_OPTIONS= unset CLICOLOR_FORCE GREP_OPTIONS ## --------------------- ## ## M4sh Shell Functions. ## ## --------------------- ## # as_fn_unset VAR # --------------- # Portably unset VAR. as_fn_unset () { { eval $1=; unset $1;} } as_unset=as_fn_unset # as_fn_set_status STATUS # ----------------------- # Set $? to STATUS, without forking. as_fn_set_status () { return $1 } # as_fn_set_status # as_fn_exit STATUS # ----------------- # Exit the shell with STATUS, even in a "trap 0" or "set -e" context. as_fn_exit () { set +e as_fn_set_status $1 exit $1 } # as_fn_exit # as_fn_mkdir_p # ------------- # Create "$as_dir" as a directory, including parents if necessary. as_fn_mkdir_p () { case $as_dir in #( -*) as_dir=./$as_dir;; esac test -d "$as_dir" || eval $as_mkdir_p || { as_dirs= while :; do case $as_dir in #( *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( *) as_qdir=$as_dir;; esac as_dirs="'$as_qdir' $as_dirs" as_dir=`$as_dirname -- "$as_dir" || $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_dir" : 'X\(//\)[^/]' \| \ X"$as_dir" : 'X\(//\)$' \| \ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$as_dir" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` test -d "$as_dir" && break done test -z "$as_dirs" || eval "mkdir $as_dirs" } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" } # as_fn_mkdir_p # as_fn_executable_p FILE # ----------------------- # Test if FILE is an executable regular file. as_fn_executable_p () { test -f "$1" && test -x "$1" } # as_fn_executable_p # as_fn_append VAR VALUE # ---------------------- # Append the text in VALUE to the end of the definition contained in VAR. Take # advantage of any shell optimizations that allow amortized linear growth over # repeated appends, instead of the typical quadratic growth present in naive # implementations. if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : eval 'as_fn_append () { eval $1+=\$2 }' else as_fn_append () { eval $1=\$$1\$2 } fi # as_fn_append # as_fn_arith ARG... # ------------------ # Perform arithmetic evaluation on the ARGs, and store the result in the # global $as_val. Take advantage of shells that can avoid forks. The arguments # must be portable across $(()) and expr. if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : eval 'as_fn_arith () { as_val=$(( $* )) }' else as_fn_arith () { as_val=`expr "$@" || test $? -eq 1` } fi # as_fn_arith # as_fn_error STATUS ERROR [LINENO LOG_FD] # ---------------------------------------- # Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are # provided, also output the error to LOG_FD, referencing LINENO. Then exit the # script with STATUS, using 1 if that was 0. as_fn_error () { as_status=$1; test $as_status -eq 0 && as_status=1 if test "$4"; then as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 fi $as_echo "$as_me: error: $2" >&2 as_fn_exit $as_status } # as_fn_error if expr a : '\(a\)' >/dev/null 2>&1 && test "X`expr 00001 : '.*\(...\)'`" = X001; then as_expr=expr else as_expr=false fi if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then as_basename=basename else as_basename=false fi if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then as_dirname=dirname else as_dirname=false fi as_me=`$as_basename -- "$0" || $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ X"$0" : 'X\(//\)$' \| \ X"$0" : 'X\(/\)' \| . 2>/dev/null || $as_echo X/"$0" | sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/ q } /^X\/\(\/\/\)$/{ s//\1/ q } /^X\/\(\/\).*/{ s//\1/ q } s/.*/./; q'` # Avoid depending upon Character Ranges. as_cr_letters='abcdefghijklmnopqrstuvwxyz' as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' as_cr_Letters=$as_cr_letters$as_cr_LETTERS as_cr_digits='0123456789' as_cr_alnum=$as_cr_Letters$as_cr_digits as_lineno_1=$LINENO as_lineno_1a=$LINENO as_lineno_2=$LINENO as_lineno_2a=$LINENO eval 'test "x$as_lineno_1'$as_run'" != "x$as_lineno_2'$as_run'" && test "x`expr $as_lineno_1'$as_run' + 1`" = "x$as_lineno_2'$as_run'"' || { # Blame Lee E. McMahon (1931-1989) for sed's syntax. :-) sed -n ' p /[$]LINENO/= ' <$as_myself | sed ' s/[$]LINENO.*/&-/ t lineno b :lineno N :loop s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ t loop s/-\n.*// ' >$as_me.lineno && chmod +x "$as_me.lineno" || { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; } # If we had to re-execute with $CONFIG_SHELL, we're ensured to have # already done that, so ensure we don't try to do so again and fall # in an infinite loop. This has already happened in practice. _as_can_reexec=no; export _as_can_reexec # Don't try to exec as it changes $[0], causing all sort of problems # (the dirname of $[0] is not the place where we might find the # original and so on. Autoconf is especially sensitive to this). . "./$as_me.lineno" # Exit status is that of the last command. exit } ECHO_C= ECHO_N= ECHO_T= case `echo -n x` in #((((( -n*) case `echo 'xy\c'` in *c*) ECHO_T=' ';; # ECHO_T is single tab character. xy) ECHO_C='\c';; *) echo `echo ksh88 bug on AIX 6.1` > /dev/null ECHO_T=' ';; esac;; *) ECHO_N='-n';; esac rm -f conf$$ conf$$.exe conf$$.file if test -d conf$$.dir; then rm -f conf$$.dir/conf$$.file else rm -f conf$$.dir mkdir conf$$.dir 2>/dev/null fi if (echo >conf$$.file) 2>/dev/null; then if ln -s conf$$.file conf$$ 2>/dev/null; then as_ln_s='ln -s' # ... but there are two gotchas: # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. # In both cases, we have to default to `cp -pR'. ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || as_ln_s='cp -pR' elif ln conf$$.file conf$$ 2>/dev/null; then as_ln_s=ln else as_ln_s='cp -pR' fi else as_ln_s='cp -pR' fi rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file rmdir conf$$.dir 2>/dev/null if mkdir -p . 2>/dev/null; then as_mkdir_p='mkdir -p "$as_dir"' else test -d ./-p && rmdir ./-p as_mkdir_p=false fi as_test_x='test -x' as_executable_p=as_fn_executable_p # Sed expression to map a string onto a valid CPP name. as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" # Sed expression to map a string onto a valid variable name. as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" test -n "$DJDIR" || exec 7<&0 &1 # Name of the host. # hostname on some systems (SVR3.2, old GNU/Linux) returns a bogus exit status, # so uname gets run too. ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q` # # Initializations. # ac_default_prefix=/usr/local ac_clean_files= ac_config_libobj_dir=. LIBOBJS= cross_compiling=no subdirs= MFLAGS= MAKEFLAGS= # Identity of this package. PACKAGE_NAME='x3270' PACKAGE_TARNAME='x3270' PACKAGE_VERSION='4.0' PACKAGE_STRING='x3270 4.0' PACKAGE_BUGREPORT='' PACKAGE_URL='' # Factoring default headers for most tests. ac_includes_default="\ #include #ifdef HAVE_SYS_TYPES_H # include #endif #ifdef HAVE_SYS_STAT_H # include #endif #ifdef STDC_HEADERS # include # include #else # ifdef HAVE_STDLIB_H # include # endif #endif #ifdef HAVE_STRING_H # if !defined STDC_HEADERS && defined HAVE_MEMORY_H # include # endif # include #endif #ifdef HAVE_STRINGS_H # include #endif #ifdef HAVE_INTTYPES_H # include #endif #ifdef HAVE_STDINT_H # include #endif #ifdef HAVE_UNISTD_H # include #endif" ac_subst_vars='LTLIBOBJS LIBOBJS XLIB XINC mkfontdir_found bdftopcf_found LIBX3270DIR CIFONTDIR FALLBACKS_O DEFINE_UAD UAD_FLAGS XMKMF EGREP GREP CPP CCOPTIONS host_os host_vendor host_cpu host build_os build_vendor build_cpu build OBJEXT EXEEXT ac_ct_CC CPPFLAGS LDFLAGS CFLAGS CC INSTALL_DATA INSTALL_SCRIPT INSTALL_PROGRAM target_alias host_alias build_alias LIBS ECHO_T ECHO_N ECHO_C DEFS mandir localedir libdir psdir pdfdir dvidir htmldir infodir docdir oldincludedir includedir runstatedir localstatedir sharedstatedir sysconfdir datadir datarootdir libexecdir sbindir bindir program_transform_name prefix exec_prefix PACKAGE_URL PACKAGE_BUGREPORT PACKAGE_STRING PACKAGE_VERSION PACKAGE_TARNAME PACKAGE_NAME PATH_SEPARATOR SHELL' ac_subst_files='' ac_user_opts=' enable_option_checking with_x enable_app_defaults with_fontdir enable_dbcs enable_local_process enable_ipv6 ' ac_precious_vars='build_alias host_alias target_alias CC CFLAGS LDFLAGS LIBS CPPFLAGS CPP XMKMF' # Initialize some variables set by options. ac_init_help= ac_init_version=false ac_unrecognized_opts= ac_unrecognized_sep= # The variables have the same names as the options, with # dashes changed to underlines. cache_file=/dev/null exec_prefix=NONE no_create= no_recursion= prefix=NONE program_prefix=NONE program_suffix=NONE program_transform_name=s,x,x, silent= site= srcdir= verbose= x_includes=NONE x_libraries=NONE # Installation directory options. # These are left unexpanded so users can "make install exec_prefix=/foo" # and all the variables that are supposed to be based on exec_prefix # by default will actually change. # Use braces instead of parens because sh, perl, etc. also accept them. # (The list follows the same order as the GNU Coding Standards.) bindir='${exec_prefix}/bin' sbindir='${exec_prefix}/sbin' libexecdir='${exec_prefix}/libexec' datarootdir='${prefix}/share' datadir='${datarootdir}' sysconfdir='${prefix}/etc' sharedstatedir='${prefix}/com' localstatedir='${prefix}/var' runstatedir='${localstatedir}/run' includedir='${prefix}/include' oldincludedir='/usr/include' docdir='${datarootdir}/doc/${PACKAGE_TARNAME}' infodir='${datarootdir}/info' htmldir='${docdir}' dvidir='${docdir}' pdfdir='${docdir}' psdir='${docdir}' libdir='${exec_prefix}/lib' localedir='${datarootdir}/locale' mandir='${datarootdir}/man' ac_prev= ac_dashdash= for ac_option do # If the previous option needs an argument, assign it. if test -n "$ac_prev"; then eval $ac_prev=\$ac_option ac_prev= continue fi case $ac_option in *=?*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;; *=) ac_optarg= ;; *) ac_optarg=yes ;; esac # Accept the important Cygnus configure options, so we can diagnose typos. case $ac_dashdash$ac_option in --) ac_dashdash=yes ;; -bindir | --bindir | --bindi | --bind | --bin | --bi) ac_prev=bindir ;; -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*) bindir=$ac_optarg ;; -build | --build | --buil | --bui | --bu) ac_prev=build_alias ;; -build=* | --build=* | --buil=* | --bui=* | --bu=*) build_alias=$ac_optarg ;; -cache-file | --cache-file | --cache-fil | --cache-fi \ | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) ac_prev=cache_file ;; -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) cache_file=$ac_optarg ;; --config-cache | -C) cache_file=config.cache ;; -datadir | --datadir | --datadi | --datad) ac_prev=datadir ;; -datadir=* | --datadir=* | --datadi=* | --datad=*) datadir=$ac_optarg ;; -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \ | --dataroo | --dataro | --datar) ac_prev=datarootdir ;; -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \ | --dataroot=* | --dataroo=* | --dataro=* | --datar=*) datarootdir=$ac_optarg ;; -disable-* | --disable-*) ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid feature name: $ac_useropt" ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "enable_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--disable-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval enable_$ac_useropt=no ;; -docdir | --docdir | --docdi | --doc | --do) ac_prev=docdir ;; -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*) docdir=$ac_optarg ;; -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv) ac_prev=dvidir ;; -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*) dvidir=$ac_optarg ;; -enable-* | --enable-*) ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid feature name: $ac_useropt" ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "enable_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--enable-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval enable_$ac_useropt=\$ac_optarg ;; -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ | --exec | --exe | --ex) ac_prev=exec_prefix ;; -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \ | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \ | --exec=* | --exe=* | --ex=*) exec_prefix=$ac_optarg ;; -gas | --gas | --ga | --g) # Obsolete; use --with-gas. with_gas=yes ;; -help | --help | --hel | --he | -h) ac_init_help=long ;; -help=r* | --help=r* | --hel=r* | --he=r* | -hr*) ac_init_help=recursive ;; -help=s* | --help=s* | --hel=s* | --he=s* | -hs*) ac_init_help=short ;; -host | --host | --hos | --ho) ac_prev=host_alias ;; -host=* | --host=* | --hos=* | --ho=*) host_alias=$ac_optarg ;; -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht) ac_prev=htmldir ;; -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \ | --ht=*) htmldir=$ac_optarg ;; -includedir | --includedir | --includedi | --included | --include \ | --includ | --inclu | --incl | --inc) ac_prev=includedir ;; -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \ | --includ=* | --inclu=* | --incl=* | --inc=*) includedir=$ac_optarg ;; -infodir | --infodir | --infodi | --infod | --info | --inf) ac_prev=infodir ;; -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*) infodir=$ac_optarg ;; -libdir | --libdir | --libdi | --libd) ac_prev=libdir ;; -libdir=* | --libdir=* | --libdi=* | --libd=*) libdir=$ac_optarg ;; -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \ | --libexe | --libex | --libe) ac_prev=libexecdir ;; -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \ | --libexe=* | --libex=* | --libe=*) libexecdir=$ac_optarg ;; -localedir | --localedir | --localedi | --localed | --locale) ac_prev=localedir ;; -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*) localedir=$ac_optarg ;; -localstatedir | --localstatedir | --localstatedi | --localstated \ | --localstate | --localstat | --localsta | --localst | --locals) ac_prev=localstatedir ;; -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*) localstatedir=$ac_optarg ;; -mandir | --mandir | --mandi | --mand | --man | --ma | --m) ac_prev=mandir ;; -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*) mandir=$ac_optarg ;; -nfp | --nfp | --nf) # Obsolete; use --without-fp. with_fp=no ;; -no-create | --no-create | --no-creat | --no-crea | --no-cre \ | --no-cr | --no-c | -n) no_create=yes ;; -no-recursion | --no-recursion | --no-recursio | --no-recursi \ | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) no_recursion=yes ;; -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \ | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \ | --oldin | --oldi | --old | --ol | --o) ac_prev=oldincludedir ;; -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \ | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \ | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*) oldincludedir=$ac_optarg ;; -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) ac_prev=prefix ;; -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) prefix=$ac_optarg ;; -program-prefix | --program-prefix | --program-prefi | --program-pref \ | --program-pre | --program-pr | --program-p) ac_prev=program_prefix ;; -program-prefix=* | --program-prefix=* | --program-prefi=* \ | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*) program_prefix=$ac_optarg ;; -program-suffix | --program-suffix | --program-suffi | --program-suff \ | --program-suf | --program-su | --program-s) ac_prev=program_suffix ;; -program-suffix=* | --program-suffix=* | --program-suffi=* \ | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*) program_suffix=$ac_optarg ;; -program-transform-name | --program-transform-name \ | --program-transform-nam | --program-transform-na \ | --program-transform-n | --program-transform- \ | --program-transform | --program-transfor \ | --program-transfo | --program-transf \ | --program-trans | --program-tran \ | --progr-tra | --program-tr | --program-t) ac_prev=program_transform_name ;; -program-transform-name=* | --program-transform-name=* \ | --program-transform-nam=* | --program-transform-na=* \ | --program-transform-n=* | --program-transform-=* \ | --program-transform=* | --program-transfor=* \ | --program-transfo=* | --program-transf=* \ | --program-trans=* | --program-tran=* \ | --progr-tra=* | --program-tr=* | --program-t=*) program_transform_name=$ac_optarg ;; -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd) ac_prev=pdfdir ;; -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*) pdfdir=$ac_optarg ;; -psdir | --psdir | --psdi | --psd | --ps) ac_prev=psdir ;; -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*) psdir=$ac_optarg ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil) silent=yes ;; -runstatedir | --runstatedir | --runstatedi | --runstated \ | --runstate | --runstat | --runsta | --runst | --runs \ | --run | --ru | --r) ac_prev=runstatedir ;; -runstatedir=* | --runstatedir=* | --runstatedi=* | --runstated=* \ | --runstate=* | --runstat=* | --runsta=* | --runst=* | --runs=* \ | --run=* | --ru=* | --r=*) runstatedir=$ac_optarg ;; -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) ac_prev=sbindir ;; -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ | --sbi=* | --sb=*) sbindir=$ac_optarg ;; -sharedstatedir | --sharedstatedir | --sharedstatedi \ | --sharedstated | --sharedstate | --sharedstat | --sharedsta \ | --sharedst | --shareds | --shared | --share | --shar \ | --sha | --sh) ac_prev=sharedstatedir ;; -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \ | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \ | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \ | --sha=* | --sh=*) sharedstatedir=$ac_optarg ;; -site | --site | --sit) ac_prev=site ;; -site=* | --site=* | --sit=*) site=$ac_optarg ;; -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) ac_prev=srcdir ;; -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) srcdir=$ac_optarg ;; -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \ | --syscon | --sysco | --sysc | --sys | --sy) ac_prev=sysconfdir ;; -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \ | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*) sysconfdir=$ac_optarg ;; -target | --target | --targe | --targ | --tar | --ta | --t) ac_prev=target_alias ;; -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) target_alias=$ac_optarg ;; -v | -verbose | --verbose | --verbos | --verbo | --verb) verbose=yes ;; -version | --version | --versio | --versi | --vers | -V) ac_init_version=: ;; -with-* | --with-*) ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid package name: $ac_useropt" ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "with_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--with-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval with_$ac_useropt=\$ac_optarg ;; -without-* | --without-*) ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid package name: $ac_useropt" ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "with_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--without-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval with_$ac_useropt=no ;; --x) # Obsolete; use --with-x. with_x=yes ;; -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \ | --x-incl | --x-inc | --x-in | --x-i) ac_prev=x_includes ;; -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \ | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*) x_includes=$ac_optarg ;; -x-libraries | --x-libraries | --x-librarie | --x-librari \ | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l) ac_prev=x_libraries ;; -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \ | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) x_libraries=$ac_optarg ;; -*) as_fn_error $? "unrecognized option: \`$ac_option' Try \`$0 --help' for more information" ;; *=*) ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='` # Reject names that are not valid shell variable names. case $ac_envvar in #( '' | [0-9]* | *[!_$as_cr_alnum]* ) as_fn_error $? "invalid variable name: \`$ac_envvar'" ;; esac eval $ac_envvar=\$ac_optarg export $ac_envvar ;; *) # FIXME: should be removed in autoconf 3.0. $as_echo "$as_me: WARNING: you should use --build, --host, --target" >&2 expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && $as_echo "$as_me: WARNING: invalid host type: $ac_option" >&2 : "${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}" ;; esac done if test -n "$ac_prev"; then ac_option=--`echo $ac_prev | sed 's/_/-/g'` as_fn_error $? "missing argument to $ac_option" fi if test -n "$ac_unrecognized_opts"; then case $enable_option_checking in no) ;; fatal) as_fn_error $? "unrecognized options: $ac_unrecognized_opts" ;; *) $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;; esac fi # Check all directory arguments for consistency. for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \ datadir sysconfdir sharedstatedir localstatedir includedir \ oldincludedir docdir infodir htmldir dvidir pdfdir psdir \ libdir localedir mandir runstatedir do eval ac_val=\$$ac_var # Remove trailing slashes. case $ac_val in */ ) ac_val=`expr "X$ac_val" : 'X\(.*[^/]\)' \| "X$ac_val" : 'X\(.*\)'` eval $ac_var=\$ac_val;; esac # Be sure to have absolute directory names. case $ac_val in [\\/$]* | ?:[\\/]* ) continue;; NONE | '' ) case $ac_var in *prefix ) continue;; esac;; esac as_fn_error $? "expected an absolute directory name for --$ac_var: $ac_val" done # There might be people who depend on the old broken behavior: `$host' # used to hold the argument of --host etc. # FIXME: To remove some day. build=$build_alias host=$host_alias target=$target_alias # FIXME: To remove some day. if test "x$host_alias" != x; then if test "x$build_alias" = x; then cross_compiling=maybe elif test "x$build_alias" != "x$host_alias"; then cross_compiling=yes fi fi ac_tool_prefix= test -n "$host_alias" && ac_tool_prefix=$host_alias- test "$silent" = yes && exec 6>/dev/null ac_pwd=`pwd` && test -n "$ac_pwd" && ac_ls_di=`ls -di .` && ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` || as_fn_error $? "working directory cannot be determined" test "X$ac_ls_di" = "X$ac_pwd_ls_di" || as_fn_error $? "pwd does not report name of working directory" # Find the source files, if location was not specified. if test -z "$srcdir"; then ac_srcdir_defaulted=yes # Try the directory containing this script, then the parent directory. ac_confdir=`$as_dirname -- "$as_myself" || $as_expr X"$as_myself" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_myself" : 'X\(//\)[^/]' \| \ X"$as_myself" : 'X\(//\)$' \| \ X"$as_myself" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$as_myself" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` srcdir=$ac_confdir if test ! -r "$srcdir/$ac_unique_file"; then srcdir=.. fi else ac_srcdir_defaulted=no fi if test ! -r "$srcdir/$ac_unique_file"; then test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .." as_fn_error $? "cannot find sources ($ac_unique_file) in $srcdir" fi ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work" ac_abs_confdir=`( cd "$srcdir" && test -r "./$ac_unique_file" || as_fn_error $? "$ac_msg" pwd)` # When building in place, set srcdir=. if test "$ac_abs_confdir" = "$ac_pwd"; then srcdir=. fi # Remove unnecessary trailing slashes from srcdir. # Double slashes in file names in object file debugging info # mess up M-x gdb in Emacs. case $srcdir in */) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;; esac for ac_var in $ac_precious_vars; do eval ac_env_${ac_var}_set=\${${ac_var}+set} eval ac_env_${ac_var}_value=\$${ac_var} eval ac_cv_env_${ac_var}_set=\${${ac_var}+set} eval ac_cv_env_${ac_var}_value=\$${ac_var} done # # Report the --help message. # if test "$ac_init_help" = "long"; then # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF \`configure' configures x3270 4.0 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... To assign environment variables (e.g., CC, CFLAGS...), specify them as VAR=VALUE. See below for descriptions of some of the useful variables. Defaults for the options are specified in brackets. Configuration: -h, --help display this help and exit --help=short display options specific to this package --help=recursive display the short help of all the included packages -V, --version display version information and exit -q, --quiet, --silent do not print \`checking ...' messages --cache-file=FILE cache test results in FILE [disabled] -C, --config-cache alias for \`--cache-file=config.cache' -n, --no-create do not create output files --srcdir=DIR find the sources in DIR [configure dir or \`..'] Installation directories: --prefix=PREFIX install architecture-independent files in PREFIX [$ac_default_prefix] --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX [PREFIX] By default, \`make install' will install all the files in \`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify an installation prefix other than \`$ac_default_prefix' using \`--prefix', for instance \`--prefix=\$HOME'. For better control, use the options below. Fine tuning of the installation directories: --bindir=DIR user executables [EPREFIX/bin] --sbindir=DIR system admin executables [EPREFIX/sbin] --libexecdir=DIR program executables [EPREFIX/libexec] --sysconfdir=DIR read-only single-machine data [PREFIX/etc] --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] --localstatedir=DIR modifiable single-machine data [PREFIX/var] --runstatedir=DIR modifiable per-process data [LOCALSTATEDIR/run] --libdir=DIR object code libraries [EPREFIX/lib] --includedir=DIR C header files [PREFIX/include] --oldincludedir=DIR C header files for non-gcc [/usr/include] --datarootdir=DIR read-only arch.-independent data root [PREFIX/share] --datadir=DIR read-only architecture-independent data [DATAROOTDIR] --infodir=DIR info documentation [DATAROOTDIR/info] --localedir=DIR locale-dependent data [DATAROOTDIR/locale] --mandir=DIR man documentation [DATAROOTDIR/man] --docdir=DIR documentation root [DATAROOTDIR/doc/x3270] --htmldir=DIR html documentation [DOCDIR] --dvidir=DIR dvi documentation [DOCDIR] --pdfdir=DIR pdf documentation [DOCDIR] --psdir=DIR ps documentation [DOCDIR] _ACEOF cat <<\_ACEOF X features: --x-includes=DIR X include files are in DIR --x-libraries=DIR X library files are in DIR System types: --build=BUILD configure for building on BUILD [guessed] --host=HOST cross-compile to build programs to run on HOST [BUILD] _ACEOF fi if test -n "$ac_init_help"; then case $ac_init_help in short | recursive ) echo "Configuration of x3270 4.0:";; esac cat <<\_ACEOF Optional Features: --disable-option-checking ignore unrecognized --enable/--with options --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) --enable-FEATURE[=ARG] include FEATURE [ARG=yes] --enable-app-defaults use a separate app-defaults file --disable-dbcs leave out DBCS support --disable-local-process leave out local process support --disable-ipv6 leave out IPv6 support Optional Packages: --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) --with-x use the X Window System --with-fontdir=DIR install fonts in directory DIR DIR=PREFIX/share/fonts/X11/misc Some influential environment variables: CC C compiler command CFLAGS C compiler flags LDFLAGS linker flags, e.g. -L if you have libraries in a nonstandard directory LIBS libraries to pass to the linker, e.g. -l CPPFLAGS (Objective) C/C++ preprocessor flags, e.g. -I if you have headers in a nonstandard directory CPP C preprocessor XMKMF Path to xmkmf, Makefile generator for X Window System Use these variables to override the choices made by `configure' or to help it to find libraries and programs with nonstandard names/locations. Report bugs to the package provider. _ACEOF ac_status=$? fi if test "$ac_init_help" = "recursive"; then # If there are subdirs, report their specific --help. for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue test -d "$ac_dir" || { cd "$srcdir" && ac_pwd=`pwd` && srcdir=. && test -d "$ac_dir"; } || continue ac_builddir=. case "$ac_dir" in .) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` # A ".." for each directory in $ac_dir_suffix. ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` case $ac_top_builddir_sub in "") ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; esac ;; esac ac_abs_top_builddir=$ac_pwd ac_abs_builddir=$ac_pwd$ac_dir_suffix # for backward compatibility: ac_top_builddir=$ac_top_build_prefix case $srcdir in .) # We are building in place. ac_srcdir=. ac_top_srcdir=$ac_top_builddir_sub ac_abs_top_srcdir=$ac_pwd ;; [\\/]* | ?:[\\/]* ) # Absolute name. ac_srcdir=$srcdir$ac_dir_suffix; ac_top_srcdir=$srcdir ac_abs_top_srcdir=$srcdir ;; *) # Relative name. ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix ac_top_srcdir=$ac_top_build_prefix$srcdir ac_abs_top_srcdir=$ac_pwd/$srcdir ;; esac ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix cd "$ac_dir" || { ac_status=$?; continue; } # Check for guested configure. if test -f "$ac_srcdir/configure.gnu"; then echo && $SHELL "$ac_srcdir/configure.gnu" --help=recursive elif test -f "$ac_srcdir/configure"; then echo && $SHELL "$ac_srcdir/configure" --help=recursive else $as_echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2 fi || ac_status=$? cd "$ac_pwd" || { ac_status=$?; break; } done fi test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF x3270 configure 4.0 generated by GNU Autoconf 2.69 Copyright (C) 2012 Free Software Foundation, Inc. This configure script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it. _ACEOF exit fi ## ------------------------ ## ## Autoconf initialization. ## ## ------------------------ ## # ac_fn_c_try_compile LINENO # -------------------------- # Try to compile conftest.$ac_ext, and return whether this succeeded. ac_fn_c_try_compile () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack rm -f conftest.$ac_objext if { { ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_compile") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then : ac_retval=0 else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_c_try_compile # ac_fn_c_try_cpp LINENO # ---------------------- # Try to preprocess conftest.$ac_ext, and return whether this succeeded. ac_fn_c_try_cpp () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack if { { ac_try="$ac_cpp conftest.$ac_ext" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } > conftest.i && { test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || test ! -s conftest.err }; then : ac_retval=0 else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_c_try_cpp # ac_fn_c_check_header_mongrel LINENO HEADER VAR INCLUDES # ------------------------------------------------------- # Tests whether HEADER exists, giving a warning if it cannot be compiled using # the include files in INCLUDES and setting the cache variable VAR # accordingly. ac_fn_c_check_header_mongrel () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack if eval \${$3+:} false; then : { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 $as_echo_n "checking for $2... " >&6; } if eval \${$3+:} false; then : $as_echo_n "(cached) " >&6 fi eval ac_res=\$$3 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } else # Is the header compilable? { $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 usability" >&5 $as_echo_n "checking $2 usability... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 #include <$2> _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_header_compiler=yes else ac_header_compiler=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_compiler" >&5 $as_echo "$ac_header_compiler" >&6; } # Is the header present? { $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 presence" >&5 $as_echo_n "checking $2 presence... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include <$2> _ACEOF if ac_fn_c_try_cpp "$LINENO"; then : ac_header_preproc=yes else ac_header_preproc=no fi rm -f conftest.err conftest.i conftest.$ac_ext { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_preproc" >&5 $as_echo "$ac_header_preproc" >&6; } # So? What about this header? case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in #(( yes:no: ) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&5 $as_echo "$as_me: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5 $as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;} ;; no:yes:* ) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: present but cannot be compiled" >&5 $as_echo "$as_me: WARNING: $2: present but cannot be compiled" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: check for missing prerequisite headers?" >&5 $as_echo "$as_me: WARNING: $2: check for missing prerequisite headers?" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: see the Autoconf documentation" >&5 $as_echo "$as_me: WARNING: $2: see the Autoconf documentation" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&5 $as_echo "$as_me: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5 $as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;} ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 $as_echo_n "checking for $2... " >&6; } if eval \${$3+:} false; then : $as_echo_n "(cached) " >&6 else eval "$3=\$ac_header_compiler" fi eval ac_res=\$$3 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } fi eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } # ac_fn_c_check_header_mongrel # ac_fn_c_try_run LINENO # ---------------------- # Try to link conftest.$ac_ext, and return whether this succeeded. Assumes # that executables *can* be run. ac_fn_c_try_run () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack if { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { ac_try='./conftest$ac_exeext' { { case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_try") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; }; then : ac_retval=0 else $as_echo "$as_me: program exited with status $ac_status" >&5 $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=$ac_status fi rm -rf conftest.dSYM conftest_ipa8_conftest.oo eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_c_try_run # ac_fn_c_check_header_compile LINENO HEADER VAR INCLUDES # ------------------------------------------------------- # Tests whether HEADER exists and can be compiled using the include files in # INCLUDES, setting the cache variable VAR accordingly. ac_fn_c_check_header_compile () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 $as_echo_n "checking for $2... " >&6; } if eval \${$3+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 #include <$2> _ACEOF if ac_fn_c_try_compile "$LINENO"; then : eval "$3=yes" else eval "$3=no" fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi eval ac_res=\$$3 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } # ac_fn_c_check_header_compile # ac_fn_c_try_link LINENO # ----------------------- # Try to link conftest.$ac_ext, and return whether this succeeded. ac_fn_c_try_link () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack rm -f conftest.$ac_objext conftest$ac_exeext if { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || test -x conftest$ac_exeext }; then : ac_retval=0 else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would # interfere with the next link command; also delete a directory that is # left behind by Apple's compiler. We do this before executing the actions. rm -rf conftest.dSYM conftest_ipa8_conftest.oo eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_c_try_link # ac_fn_c_check_func LINENO FUNC VAR # ---------------------------------- # Tests whether FUNC exists, setting the cache variable VAR accordingly ac_fn_c_check_func () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 $as_echo_n "checking for $2... " >&6; } if eval \${$3+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Define $2 to an innocuous variant, in case declares $2. For example, HP-UX 11i declares gettimeofday. */ #define $2 innocuous_$2 /* System header to define __stub macros and hopefully few prototypes, which can conflict with char $2 (); below. Prefer to if __STDC__ is defined, since exists even on freestanding compilers. */ #ifdef __STDC__ # include #else # include #endif #undef $2 /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char $2 (); /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined __stub_$2 || defined __stub___$2 choke me #endif int main () { return $2 (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : eval "$3=yes" else eval "$3=no" fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi eval ac_res=\$$3 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } # ac_fn_c_check_func cat >config.log <<_ACEOF This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. It was created by x3270 $as_me 4.0, which was generated by GNU Autoconf 2.69. Invocation command line was $ $0 $@ _ACEOF exec 5>>config.log { cat <<_ASUNAME ## --------- ## ## Platform. ## ## --------- ## hostname = `(hostname || uname -n) 2>/dev/null | sed 1q` uname -m = `(uname -m) 2>/dev/null || echo unknown` uname -r = `(uname -r) 2>/dev/null || echo unknown` uname -s = `(uname -s) 2>/dev/null || echo unknown` uname -v = `(uname -v) 2>/dev/null || echo unknown` /usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown` /bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown` /bin/arch = `(/bin/arch) 2>/dev/null || echo unknown` /usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown` /usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown` /usr/bin/hostinfo = `(/usr/bin/hostinfo) 2>/dev/null || echo unknown` /bin/machine = `(/bin/machine) 2>/dev/null || echo unknown` /usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown` /bin/universe = `(/bin/universe) 2>/dev/null || echo unknown` _ASUNAME as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. $as_echo "PATH: $as_dir" done IFS=$as_save_IFS } >&5 cat >&5 <<_ACEOF ## ----------- ## ## Core tests. ## ## ----------- ## _ACEOF # Keep a trace of the command line. # Strip out --no-create and --no-recursion so they do not pile up. # Strip out --silent because we don't want to record it for future runs. # Also quote any args containing shell meta-characters. # Make two passes to allow for proper duplicate-argument suppression. ac_configure_args= ac_configure_args0= ac_configure_args1= ac_must_keep_next=false for ac_pass in 1 2 do for ac_arg do case $ac_arg in -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil) continue ;; *\'*) ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; esac case $ac_pass in 1) as_fn_append ac_configure_args0 " '$ac_arg'" ;; 2) as_fn_append ac_configure_args1 " '$ac_arg'" if test $ac_must_keep_next = true; then ac_must_keep_next=false # Got value, back to normal. else case $ac_arg in *=* | --config-cache | -C | -disable-* | --disable-* \ | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \ | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \ | -with-* | --with-* | -without-* | --without-* | --x) case "$ac_configure_args0 " in "$ac_configure_args1"*" '$ac_arg' "* ) continue ;; esac ;; -* ) ac_must_keep_next=true ;; esac fi as_fn_append ac_configure_args " '$ac_arg'" ;; esac done done { ac_configure_args0=; unset ac_configure_args0;} { ac_configure_args1=; unset ac_configure_args1;} # When interrupted or exit'd, cleanup temporary files, and complete # config.log. We remove comments because anyway the quotes in there # would cause problems or look ugly. # WARNING: Use '\'' to represent an apostrophe within the trap. # WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug. trap 'exit_status=$? # Save into config.log some information that might help in debugging. { echo $as_echo "## ---------------- ## ## Cache variables. ## ## ---------------- ##" echo # The following way of writing the cache mishandles newlines in values, ( for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do eval ac_val=\$$ac_var case $ac_val in #( *${as_nl}*) case $ac_var in #( *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 $as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; esac case $ac_var in #( _ | IFS | as_nl) ;; #( BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( *) { eval $ac_var=; unset $ac_var;} ;; esac ;; esac done (set) 2>&1 | case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #( *${as_nl}ac_space=\ *) sed -n \ "s/'\''/'\''\\\\'\'''\''/g; s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p" ;; #( *) sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" ;; esac | sort ) echo $as_echo "## ----------------- ## ## Output variables. ## ## ----------------- ##" echo for ac_var in $ac_subst_vars do eval ac_val=\$$ac_var case $ac_val in *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; esac $as_echo "$ac_var='\''$ac_val'\''" done | sort echo if test -n "$ac_subst_files"; then $as_echo "## ------------------- ## ## File substitutions. ## ## ------------------- ##" echo for ac_var in $ac_subst_files do eval ac_val=\$$ac_var case $ac_val in *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; esac $as_echo "$ac_var='\''$ac_val'\''" done | sort echo fi if test -s confdefs.h; then $as_echo "## ----------- ## ## confdefs.h. ## ## ----------- ##" echo cat confdefs.h echo fi test "$ac_signal" != 0 && $as_echo "$as_me: caught signal $ac_signal" $as_echo "$as_me: exit $exit_status" } >&5 rm -f core *.core core.conftest.* && rm -f -r conftest* confdefs* conf$$* $ac_clean_files && exit $exit_status ' 0 for ac_signal in 1 2 13 15; do trap 'ac_signal='$ac_signal'; as_fn_exit 1' $ac_signal done ac_signal=0 # confdefs.h avoids OS command line length limits that DEFS can exceed. rm -f -r conftest* confdefs.h $as_echo "/* confdefs.h */" > confdefs.h # Predefined preprocessor variables. cat >>confdefs.h <<_ACEOF #define PACKAGE_NAME "$PACKAGE_NAME" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_TARNAME "$PACKAGE_TARNAME" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_VERSION "$PACKAGE_VERSION" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_STRING "$PACKAGE_STRING" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_URL "$PACKAGE_URL" _ACEOF # Let the site file select an alternate cache file if it wants to. # Prefer an explicitly selected file to automatically selected ones. ac_site_file1=NONE ac_site_file2=NONE if test -n "$CONFIG_SITE"; then # We do not want a PATH search for config.site. case $CONFIG_SITE in #(( -*) ac_site_file1=./$CONFIG_SITE;; */*) ac_site_file1=$CONFIG_SITE;; *) ac_site_file1=./$CONFIG_SITE;; esac elif test "x$prefix" != xNONE; then ac_site_file1=$prefix/share/config.site ac_site_file2=$prefix/etc/config.site else ac_site_file1=$ac_default_prefix/share/config.site ac_site_file2=$ac_default_prefix/etc/config.site fi for ac_site_file in "$ac_site_file1" "$ac_site_file2" do test "x$ac_site_file" = xNONE && continue if test /dev/null != "$ac_site_file" && test -r "$ac_site_file"; then { $as_echo "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5 $as_echo "$as_me: loading site script $ac_site_file" >&6;} sed 's/^/| /' "$ac_site_file" >&5 . "$ac_site_file" \ || { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "failed to load site script $ac_site_file See \`config.log' for more details" "$LINENO" 5; } fi done if test -r "$cache_file"; then # Some versions of bash will fail to source /dev/null (special files # actually), so we avoid doing that. DJGPP emulates it as a regular file. if test /dev/null != "$cache_file" && test -f "$cache_file"; then { $as_echo "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5 $as_echo "$as_me: loading cache $cache_file" >&6;} case $cache_file in [\\/]* | ?:[\\/]* ) . "$cache_file";; *) . "./$cache_file";; esac fi else { $as_echo "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5 $as_echo "$as_me: creating cache $cache_file" >&6;} >$cache_file fi # Check that the precious variables saved in the cache have kept the same # value. ac_cache_corrupted=false for ac_var in $ac_precious_vars; do eval ac_old_set=\$ac_cv_env_${ac_var}_set eval ac_new_set=\$ac_env_${ac_var}_set eval ac_old_val=\$ac_cv_env_${ac_var}_value eval ac_new_val=\$ac_env_${ac_var}_value case $ac_old_set,$ac_new_set in set,) { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 $as_echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} ac_cache_corrupted=: ;; ,set) { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was not set in the previous run" >&5 $as_echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} ac_cache_corrupted=: ;; ,);; *) if test "x$ac_old_val" != "x$ac_new_val"; then # differences in whitespace do not lead to failure. ac_old_val_w=`echo x $ac_old_val` ac_new_val_w=`echo x $ac_new_val` if test "$ac_old_val_w" != "$ac_new_val_w"; then { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' has changed since the previous run:" >&5 $as_echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} ac_cache_corrupted=: else { $as_echo "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5 $as_echo "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;} eval $ac_var=\$ac_old_val fi { $as_echo "$as_me:${as_lineno-$LINENO}: former value: \`$ac_old_val'" >&5 $as_echo "$as_me: former value: \`$ac_old_val'" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: current value: \`$ac_new_val'" >&5 $as_echo "$as_me: current value: \`$ac_new_val'" >&2;} fi;; esac # Pass precious variables to config.status. if test "$ac_new_set" = set; then case $ac_new_val in *\'*) ac_arg=$ac_var=`$as_echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; *) ac_arg=$ac_var=$ac_new_val ;; esac case " $ac_configure_args " in *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy. *) as_fn_append ac_configure_args " '$ac_arg'" ;; esac fi done if $ac_cache_corrupted; then { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5 $as_echo "$as_me: error: changes in the environment can compromise the build" >&2;} as_fn_error $? "run \`make distclean' and/or \`rm $cache_file' and start over" "$LINENO" 5 fi ## -------------------- ## ## Main body of script. ## ## -------------------- ## ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu ac_config_headers="$ac_config_headers conf.h" ac_aux_dir= for ac_dir in "$srcdir" "$srcdir/.." "$srcdir/../.."; do if test -f "$ac_dir/install-sh"; then ac_aux_dir=$ac_dir ac_install_sh="$ac_aux_dir/install-sh -c" break elif test -f "$ac_dir/install.sh"; then ac_aux_dir=$ac_dir ac_install_sh="$ac_aux_dir/install.sh -c" break elif test -f "$ac_dir/shtool"; then ac_aux_dir=$ac_dir ac_install_sh="$ac_aux_dir/shtool install -c" break fi done if test -z "$ac_aux_dir"; then as_fn_error $? "cannot find install-sh, install.sh, or shtool in \"$srcdir\" \"$srcdir/..\" \"$srcdir/../..\"" "$LINENO" 5 fi # These three variables are undocumented and unsupported, # and are intended to be withdrawn in a future Autoconf release. # They can cause serious problems if a builder's source tree is in a directory # whose full name contains unusual characters. ac_config_guess="$SHELL $ac_aux_dir/config.guess" # Please don't use this var. ac_config_sub="$SHELL $ac_aux_dir/config.sub" # Please don't use this var. ac_configure="$SHELL $ac_aux_dir/configure" # Please don't use this var. # Find a good install program. We prefer a C program (faster), # so one script is as good as another. But avoid the broken or # incompatible versions: # SysV /etc/install, /usr/sbin/install # SunOS /usr/etc/install # IRIX /sbin/install # AIX /bin/install # AmigaOS /C/install, which installs bootblocks on floppy discs # AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag # AFS /usr/afsws/bin/install, which mishandles nonexistent args # SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" # OS/2's system install, which has a completely different semantic # ./install, which can be erroneously created by make from ./install.sh. # Reject install programs that cannot install multiple files. { $as_echo "$as_me:${as_lineno-$LINENO}: checking for a BSD-compatible install" >&5 $as_echo_n "checking for a BSD-compatible install... " >&6; } if test -z "$INSTALL"; then if ${ac_cv_path_install+:} false; then : $as_echo_n "(cached) " >&6 else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. # Account for people who put trailing slashes in PATH elements. case $as_dir/ in #(( ./ | .// | /[cC]/* | \ /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \ ?:[\\/]os2[\\/]install[\\/]* | ?:[\\/]OS2[\\/]INSTALL[\\/]* | \ /usr/ucb/* ) ;; *) # OSF1 and SCO ODT 3.0 have their own names for install. # Don't use installbsd from OSF since it installs stuff as root # by default. for ac_prog in ginstall scoinst install; do for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then if test $ac_prog = install && grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then # AIX install. It has an incompatible calling convention. : elif test $ac_prog = install && grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then # program-specific install script used by HP pwplus--don't use. : else rm -rf conftest.one conftest.two conftest.dir echo one > conftest.one echo two > conftest.two mkdir conftest.dir if "$as_dir/$ac_prog$ac_exec_ext" -c conftest.one conftest.two "`pwd`/conftest.dir" && test -s conftest.one && test -s conftest.two && test -s conftest.dir/conftest.one && test -s conftest.dir/conftest.two then ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c" break 3 fi fi fi done done ;; esac done IFS=$as_save_IFS rm -rf conftest.one conftest.two conftest.dir fi if test "${ac_cv_path_install+set}" = set; then INSTALL=$ac_cv_path_install else # As a last resort, use the slow shell script. Don't cache a # value for INSTALL within a source directory, because that will # break other packages using the cache if that directory is # removed, or if the value is a relative name. INSTALL=$ac_install_sh fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $INSTALL" >&5 $as_echo "$INSTALL" >&6; } # Use test -z because SunOS4 sh mishandles braces in ${var-val}. # It thinks the first close brace ends the variable substitution. test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}' test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}' test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. set dummy ${ac_tool_prefix}gcc; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CC="${ac_tool_prefix}gcc" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_CC"; then ac_ct_CC=$CC # Extract the first word of "gcc", so it can be a program name with args. set dummy gcc; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CC="gcc" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 $as_echo "$ac_ct_CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_CC" = x; then CC="" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CC=$ac_ct_CC fi else CC="$ac_cv_prog_CC" fi if test -z "$CC"; then if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. set dummy ${ac_tool_prefix}cc; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CC="${ac_tool_prefix}cc" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi fi if test -z "$CC"; then # Extract the first word of "cc", so it can be a program name with args. set dummy cc; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else ac_prog_rejected=no as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then ac_prog_rejected=yes continue fi ac_cv_prog_CC="cc" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS if test $ac_prog_rejected = yes; then # We found a bogon in the path, so make sure we never use it. set dummy $ac_cv_prog_CC shift if test $# != 0; then # We chose a different compiler from the bogus one. # However, it has the same basename, so the bogon will be chosen # first if we set CC to just the basename; use the full file name. shift ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@" fi fi fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$CC"; then if test -n "$ac_tool_prefix"; then for ac_prog in cl.exe do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CC="$ac_tool_prefix$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$CC" && break done fi if test -z "$CC"; then ac_ct_CC=$CC for ac_prog in cl.exe do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CC="$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 $as_echo "$ac_ct_CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$ac_ct_CC" && break done if test "x$ac_ct_CC" = x; then CC="" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CC=$ac_ct_CC fi fi fi test -z "$CC" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "no acceptable C compiler found in \$PATH See \`config.log' for more details" "$LINENO" 5; } # Provide some information about the compiler. $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5 set X $ac_compile ac_compiler=$2 for ac_option in --version -v -V -qversion; do { { ac_try="$ac_compiler $ac_option >&5" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_compiler $ac_option >&5") 2>conftest.err ac_status=$? if test -s conftest.err; then sed '10a\ ... rest of stderr output deleted ... 10q' conftest.err >conftest.er1 cat conftest.er1 >&5 fi rm -f conftest.er1 conftest.err $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } done cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF ac_clean_files_save=$ac_clean_files ac_clean_files="$ac_clean_files a.out a.out.dSYM a.exe b.out" # Try to create an executable without -o first, disregard a.out. # It will help us diagnose broken compilers, and finding out an intuition # of exeext. { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler works" >&5 $as_echo_n "checking whether the C compiler works... " >&6; } ac_link_default=`$as_echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'` # The possible output files: ac_files="a.out conftest.exe conftest a.exe a_out.exe b.out conftest.*" ac_rmfiles= for ac_file in $ac_files do case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; * ) ac_rmfiles="$ac_rmfiles $ac_file";; esac done rm -f $ac_rmfiles if { { ac_try="$ac_link_default" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link_default") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then : # Autoconf-2.13 could set the ac_cv_exeext variable to `no'. # So ignore a value of `no', otherwise this would lead to `EXEEXT = no' # in a Makefile. We should not override ac_cv_exeext if it was cached, # so that the user can short-circuit this test for compilers unknown to # Autoconf. for ac_file in $ac_files '' do test -f "$ac_file" || continue case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; [ab].out ) # We found the default executable, but exeext='' is most # certainly right. break;; *.* ) if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no; then :; else ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` fi # We set ac_cv_exeext here because the later test for it is not # safe: cross compilers may not add the suffix if given an `-o' # argument, so we may need to know it at that point already. # Even if this section looks crufty: it has the advantage of # actually working. break;; * ) break;; esac done test "$ac_cv_exeext" = no && ac_cv_exeext= else ac_file='' fi if test -z "$ac_file"; then : { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error 77 "C compiler cannot create executables See \`config.log' for more details" "$LINENO" 5; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler default output file name" >&5 $as_echo_n "checking for C compiler default output file name... " >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5 $as_echo "$ac_file" >&6; } ac_exeext=$ac_cv_exeext rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out ac_clean_files=$ac_clean_files_save { $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5 $as_echo_n "checking for suffix of executables... " >&6; } if { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then : # If both `conftest.exe' and `conftest' are `present' (well, observable) # catch `conftest.exe'. For instance with Cygwin, `ls conftest' will # work properly (i.e., refer to `conftest.exe'), while it won't with # `rm'. for ac_file in conftest.exe conftest conftest.*; do test -f "$ac_file" || continue case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` break;; * ) break;; esac done else { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "cannot compute suffix of executables: cannot compile and link See \`config.log' for more details" "$LINENO" 5; } fi rm -f conftest conftest$ac_cv_exeext { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5 $as_echo "$ac_cv_exeext" >&6; } rm -f conftest.$ac_ext EXEEXT=$ac_cv_exeext ac_exeext=$EXEEXT cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main () { FILE *f = fopen ("conftest.out", "w"); return ferror (f) || fclose (f) != 0; ; return 0; } _ACEOF ac_clean_files="$ac_clean_files conftest.out" # Check that the compiler produces executables we can run. If not, either # the compiler is broken, or we cross compile. { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5 $as_echo_n "checking whether we are cross compiling... " >&6; } if test "$cross_compiling" != yes; then { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } if { ac_try='./conftest$ac_cv_exeext' { { case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_try") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; }; then cross_compiling=no else if test "$cross_compiling" = maybe; then cross_compiling=yes else { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "cannot run C compiled programs. If you meant to cross compile, use \`--host'. See \`config.log' for more details" "$LINENO" 5; } fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5 $as_echo "$cross_compiling" >&6; } rm -f conftest.$ac_ext conftest$ac_cv_exeext conftest.out ac_clean_files=$ac_clean_files_save { $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5 $as_echo_n "checking for suffix of object files... " >&6; } if ${ac_cv_objext+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF rm -f conftest.o conftest.obj if { { ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_compile") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then : for ac_file in conftest.o conftest.obj conftest.*; do test -f "$ac_file" || continue; case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM ) ;; *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'` break;; esac done else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "cannot compute suffix of object files: cannot compile See \`config.log' for more details" "$LINENO" 5; } fi rm -f conftest.$ac_cv_objext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5 $as_echo "$ac_cv_objext" >&6; } OBJEXT=$ac_cv_objext ac_objext=$OBJEXT { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C compiler" >&5 $as_echo_n "checking whether we are using the GNU C compiler... " >&6; } if ${ac_cv_c_compiler_gnu+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { #ifndef __GNUC__ choke me #endif ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_compiler_gnu=yes else ac_compiler_gnu=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_cv_c_compiler_gnu=$ac_compiler_gnu fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5 $as_echo "$ac_cv_c_compiler_gnu" >&6; } if test $ac_compiler_gnu = yes; then GCC=yes else GCC= fi ac_test_CFLAGS=${CFLAGS+set} ac_save_CFLAGS=$CFLAGS { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5 $as_echo_n "checking whether $CC accepts -g... " >&6; } if ${ac_cv_prog_cc_g+:} false; then : $as_echo_n "(cached) " >&6 else ac_save_c_werror_flag=$ac_c_werror_flag ac_c_werror_flag=yes ac_cv_prog_cc_g=no CFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_prog_cc_g=yes else CFLAGS="" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : else ac_c_werror_flag=$ac_save_c_werror_flag CFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_prog_cc_g=yes fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_c_werror_flag=$ac_save_c_werror_flag fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5 $as_echo "$ac_cv_prog_cc_g" >&6; } if test "$ac_test_CFLAGS" = set; then CFLAGS=$ac_save_CFLAGS elif test $ac_cv_prog_cc_g = yes; then if test "$GCC" = yes; then CFLAGS="-g -O2" else CFLAGS="-g" fi else if test "$GCC" = yes; then CFLAGS="-O2" else CFLAGS= fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5 $as_echo_n "checking for $CC option to accept ISO C89... " >&6; } if ${ac_cv_prog_cc_c89+:} false; then : $as_echo_n "(cached) " >&6 else ac_cv_prog_cc_c89=no ac_save_CC=$CC cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include struct stat; /* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */ struct buf { int x; }; FILE * (*rcsopen) (struct buf *, struct stat *, int); static char *e (p, i) char **p; int i; { return p[i]; } static char *f (char * (*g) (char **, int), char **p, ...) { char *s; va_list v; va_start (v,p); s = g (p, va_arg (v,int)); va_end (v); return s; } /* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has function prototypes and stuff, but not '\xHH' hex character constants. These don't provoke an error unfortunately, instead are silently treated as 'x'. The following induces an error, until -std is added to get proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an array size at least. It's necessary to write '\x00'==0 to get something that's true only with -std. */ int osf4_cc_array ['\x00' == 0 ? 1 : -1]; /* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters inside strings and character constants. */ #define FOO(x) 'x' int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1]; int test (int i, double x); struct s1 {int (*f) (int a);}; struct s2 {int (*f) (double a);}; int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int); int argc; char **argv; int main () { return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]; ; return 0; } _ACEOF for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \ -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" do CC="$ac_save_CC $ac_arg" if ac_fn_c_try_compile "$LINENO"; then : ac_cv_prog_cc_c89=$ac_arg fi rm -f core conftest.err conftest.$ac_objext test "x$ac_cv_prog_cc_c89" != "xno" && break done rm -f conftest.$ac_ext CC=$ac_save_CC fi # AC_CACHE_VAL case "x$ac_cv_prog_cc_c89" in x) { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 $as_echo "none needed" >&6; } ;; xno) { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 $as_echo "unsupported" >&6; } ;; *) CC="$CC $ac_cv_prog_cc_c89" { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5 $as_echo "$ac_cv_prog_cc_c89" >&6; } ;; esac if test "x$ac_cv_prog_cc_c89" != xno; then : fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu # Make sure we can run config.sub. $SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 || as_fn_error $? "cannot run $SHELL $ac_aux_dir/config.sub" "$LINENO" 5 { $as_echo "$as_me:${as_lineno-$LINENO}: checking build system type" >&5 $as_echo_n "checking build system type... " >&6; } if ${ac_cv_build+:} false; then : $as_echo_n "(cached) " >&6 else ac_build_alias=$build_alias test "x$ac_build_alias" = x && ac_build_alias=`$SHELL "$ac_aux_dir/config.guess"` test "x$ac_build_alias" = x && as_fn_error $? "cannot guess build type; you must specify one" "$LINENO" 5 ac_cv_build=`$SHELL "$ac_aux_dir/config.sub" $ac_build_alias` || as_fn_error $? "$SHELL $ac_aux_dir/config.sub $ac_build_alias failed" "$LINENO" 5 fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build" >&5 $as_echo "$ac_cv_build" >&6; } case $ac_cv_build in *-*-*) ;; *) as_fn_error $? "invalid value of canonical build" "$LINENO" 5;; esac build=$ac_cv_build ac_save_IFS=$IFS; IFS='-' set x $ac_cv_build shift build_cpu=$1 build_vendor=$2 shift; shift # Remember, the first character of IFS is used to create $*, # except with old shells: build_os=$* IFS=$ac_save_IFS case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking host system type" >&5 $as_echo_n "checking host system type... " >&6; } if ${ac_cv_host+:} false; then : $as_echo_n "(cached) " >&6 else if test "x$host_alias" = x; then ac_cv_host=$ac_cv_build else ac_cv_host=`$SHELL "$ac_aux_dir/config.sub" $host_alias` || as_fn_error $? "$SHELL $ac_aux_dir/config.sub $host_alias failed" "$LINENO" 5 fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_host" >&5 $as_echo "$ac_cv_host" >&6; } case $ac_cv_host in *-*-*) ;; *) as_fn_error $? "invalid value of canonical host" "$LINENO" 5;; esac host=$ac_cv_host ac_save_IFS=$IFS; IFS='-' set x $ac_cv_host shift host_cpu=$1 host_vendor=$2 shift; shift # Remember, the first character of IFS is used to create $*, # except with old shells: host_os=$* IFS=$ac_save_IFS case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac case "$host_os" in solaris2*) CPPFLAGS="$CPPFLAGS -D__EXTENSIONS__" ;; darwin*) CCOPTIONS="$CCOPTIONS -no-cpp-precomp -Wno-deprecated-declarations -Wno-extended-offsetof" ;; linux*) CPPFLAGS="$CPPFLAGS -D_POSIX_SOURCE -D_BSD_SOURCE -D_DEFAULT_SOURCE -D_XOPEN_SOURCE" ;; esac if test "$GCC" = yes then # Add common gcc options, plus flags for dependency generation. CCOPTIONS="$CCOPTIONS -Wall -Wsign-compare -std=c99 -pedantic -Wno-variadic-macros -MMD -MP" fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C preprocessor" >&5 $as_echo_n "checking how to run the C preprocessor... " >&6; } # On Suns, sometimes $CPP names a directory. if test -n "$CPP" && test -d "$CPP"; then CPP= fi if test -z "$CPP"; then if ${ac_cv_prog_CPP+:} false; then : $as_echo_n "(cached) " >&6 else # Double quotes because CPP needs to be expanded for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp" do ac_preproc_ok=false for ac_c_preproc_warn_flag in '' yes do # Use a header file that comes with gcc, so configuring glibc # with a fresh cross-compiler works. # Prefer to if __STDC__ is defined, since # exists even on freestanding compilers. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifdef __STDC__ # include #else # include #endif Syntax error _ACEOF if ac_fn_c_try_cpp "$LINENO"; then : else # Broken: fails on valid input. continue fi rm -f conftest.err conftest.i conftest.$ac_ext # OK, works on sane cases. Now check whether nonexistent headers # can be detected and how. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if ac_fn_c_try_cpp "$LINENO"; then : # Broken: success on invalid input. continue else # Passes both tests. ac_preproc_ok=: break fi rm -f conftest.err conftest.i conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f conftest.i conftest.err conftest.$ac_ext if $ac_preproc_ok; then : break fi done ac_cv_prog_CPP=$CPP fi CPP=$ac_cv_prog_CPP else ac_cv_prog_CPP=$CPP fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CPP" >&5 $as_echo "$CPP" >&6; } ac_preproc_ok=false for ac_c_preproc_warn_flag in '' yes do # Use a header file that comes with gcc, so configuring glibc # with a fresh cross-compiler works. # Prefer to if __STDC__ is defined, since # exists even on freestanding compilers. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifdef __STDC__ # include #else # include #endif Syntax error _ACEOF if ac_fn_c_try_cpp "$LINENO"; then : else # Broken: fails on valid input. continue fi rm -f conftest.err conftest.i conftest.$ac_ext # OK, works on sane cases. Now check whether nonexistent headers # can be detected and how. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if ac_fn_c_try_cpp "$LINENO"; then : # Broken: success on invalid input. continue else # Passes both tests. ac_preproc_ok=: break fi rm -f conftest.err conftest.i conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f conftest.i conftest.err conftest.$ac_ext if $ac_preproc_ok; then : else { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "C preprocessor \"$CPP\" fails sanity check See \`config.log' for more details" "$LINENO" 5; } fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu { $as_echo "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5 $as_echo_n "checking for grep that handles long lines and -e... " >&6; } if ${ac_cv_path_GREP+:} false; then : $as_echo_n "(cached) " >&6 else if test -z "$GREP"; then ac_path_GREP_found=false # Loop through the user's path and test for each of PROGNAME-LIST as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_prog in grep ggrep; do for ac_exec_ext in '' $ac_executable_extensions; do ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext" as_fn_executable_p "$ac_path_GREP" || continue # Check for GNU ac_path_GREP and select it if it is found. # Check for GNU $ac_path_GREP case `"$ac_path_GREP" --version 2>&1` in *GNU*) ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;; *) ac_count=0 $as_echo_n 0123456789 >"conftest.in" while : do cat "conftest.in" "conftest.in" >"conftest.tmp" mv "conftest.tmp" "conftest.in" cp "conftest.in" "conftest.nl" $as_echo 'GREP' >> "conftest.nl" "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break as_fn_arith $ac_count + 1 && ac_count=$as_val if test $ac_count -gt ${ac_path_GREP_max-0}; then # Best one so far, save it but keep looking for a better one ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_max=$ac_count fi # 10*(2^10) chars as input seems more than enough test $ac_count -gt 10 && break done rm -f conftest.in conftest.tmp conftest.nl conftest.out;; esac $ac_path_GREP_found && break 3 done done done IFS=$as_save_IFS if test -z "$ac_cv_path_GREP"; then as_fn_error $? "no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 fi else ac_cv_path_GREP=$GREP fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP" >&5 $as_echo "$ac_cv_path_GREP" >&6; } GREP="$ac_cv_path_GREP" { $as_echo "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5 $as_echo_n "checking for egrep... " >&6; } if ${ac_cv_path_EGREP+:} false; then : $as_echo_n "(cached) " >&6 else if echo a | $GREP -E '(a|b)' >/dev/null 2>&1 then ac_cv_path_EGREP="$GREP -E" else if test -z "$EGREP"; then ac_path_EGREP_found=false # Loop through the user's path and test for each of PROGNAME-LIST as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_prog in egrep; do for ac_exec_ext in '' $ac_executable_extensions; do ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext" as_fn_executable_p "$ac_path_EGREP" || continue # Check for GNU ac_path_EGREP and select it if it is found. # Check for GNU $ac_path_EGREP case `"$ac_path_EGREP" --version 2>&1` in *GNU*) ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;; *) ac_count=0 $as_echo_n 0123456789 >"conftest.in" while : do cat "conftest.in" "conftest.in" >"conftest.tmp" mv "conftest.tmp" "conftest.in" cp "conftest.in" "conftest.nl" $as_echo 'EGREP' >> "conftest.nl" "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break as_fn_arith $ac_count + 1 && ac_count=$as_val if test $ac_count -gt ${ac_path_EGREP_max-0}; then # Best one so far, save it but keep looking for a better one ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_max=$ac_count fi # 10*(2^10) chars as input seems more than enough test $ac_count -gt 10 && break done rm -f conftest.in conftest.tmp conftest.nl conftest.out;; esac $ac_path_EGREP_found && break 3 done done done IFS=$as_save_IFS if test -z "$ac_cv_path_EGREP"; then as_fn_error $? "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 fi else ac_cv_path_EGREP=$EGREP fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5 $as_echo "$ac_cv_path_EGREP" >&6; } EGREP="$ac_cv_path_EGREP" { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5 $as_echo_n "checking for ANSI C header files... " >&6; } if ${ac_cv_header_stdc+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include #include #include int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_header_stdc=yes else ac_cv_header_stdc=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext if test $ac_cv_header_stdc = yes; then # SunOS 4.x string.h does not declare mem*, contrary to ANSI. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "memchr" >/dev/null 2>&1; then : else ac_cv_header_stdc=no fi rm -f conftest* fi if test $ac_cv_header_stdc = yes; then # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "free" >/dev/null 2>&1; then : else ac_cv_header_stdc=no fi rm -f conftest* fi if test $ac_cv_header_stdc = yes; then # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. if test "$cross_compiling" = yes; then : : else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include #if ((' ' & 0x0FF) == 0x020) # define ISLOWER(c) ('a' <= (c) && (c) <= 'z') # define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) #else # define ISLOWER(c) \ (('a' <= (c) && (c) <= 'i') \ || ('j' <= (c) && (c) <= 'r') \ || ('s' <= (c) && (c) <= 'z')) # define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) #endif #define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) int main () { int i; for (i = 0; i < 256; i++) if (XOR (islower (i), ISLOWER (i)) || toupper (i) != TOUPPER (i)) return 2; return 0; } _ACEOF if ac_fn_c_try_run "$LINENO"; then : else ac_cv_header_stdc=no fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdc" >&5 $as_echo "$ac_cv_header_stdc" >&6; } if test $ac_cv_header_stdc = yes; then $as_echo "#define STDC_HEADERS 1" >>confdefs.h fi # On IRIX 5.3, sys/types and inttypes.h are conflicting. for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \ inttypes.h stdint.h unistd.h do : as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default " if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : cat >>confdefs.h <<_ACEOF #define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF fi done for ac_header in sys/select.h do : ac_fn_c_check_header_mongrel "$LINENO" "sys/select.h" "ac_cv_header_sys_select_h" "$ac_includes_default" if test "x$ac_cv_header_sys_select_h" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_SYS_SELECT_H 1 _ACEOF fi done for ac_header in pty.h do : ac_fn_c_check_header_mongrel "$LINENO" "pty.h" "ac_cv_header_pty_h" "$ac_includes_default" if test "x$ac_cv_header_pty_h" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_PTY_H 1 _ACEOF fi done for ac_header in libutil.h do : ac_fn_c_check_header_mongrel "$LINENO" "libutil.h" "ac_cv_header_libutil_h" "$ac_includes_default" if test "x$ac_cv_header_libutil_h" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_LIBUTIL_H 1 _ACEOF fi done for ac_header in util.h do : ac_fn_c_check_header_mongrel "$LINENO" "util.h" "ac_cv_header_util_h" "$ac_includes_default" if test "x$ac_cv_header_util_h" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_UTIL_H 1 _ACEOF fi done for ac_header in getopt.h do : ac_fn_c_check_header_mongrel "$LINENO" "getopt.h" "ac_cv_header_getopt_h" "$ac_includes_default" if test "x$ac_cv_header_getopt_h" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_GETOPT_H 1 _ACEOF fi done { $as_echo "$as_me:${as_lineno-$LINENO}: checking for X" >&5 $as_echo_n "checking for X... " >&6; } # Check whether --with-x was given. if test "${with_x+set}" = set; then : withval=$with_x; fi # $have_x is `yes', `no', `disabled', or empty when we do not yet know. if test "x$with_x" = xno; then # The user explicitly disabled X. have_x=disabled else case $x_includes,$x_libraries in #( *\'*) as_fn_error $? "cannot use X directory names containing '" "$LINENO" 5;; #( *,NONE | NONE,*) if ${ac_cv_have_x+:} false; then : $as_echo_n "(cached) " >&6 else # One or both of the vars are not set, and there is no cached value. ac_x_includes=no ac_x_libraries=no rm -f -r conftest.dir if mkdir conftest.dir; then cd conftest.dir cat >Imakefile <<'_ACEOF' incroot: @echo incroot='${INCROOT}' usrlibdir: @echo usrlibdir='${USRLIBDIR}' libdir: @echo libdir='${LIBDIR}' _ACEOF if (export CC; ${XMKMF-xmkmf}) >/dev/null 2>/dev/null && test -f Makefile; then # GNU make sometimes prints "make[1]: Entering ...", which would confuse us. for ac_var in incroot usrlibdir libdir; do eval "ac_im_$ac_var=\`\${MAKE-make} $ac_var 2>/dev/null | sed -n 's/^$ac_var=//p'\`" done # Open Windows xmkmf reportedly sets LIBDIR instead of USRLIBDIR. for ac_extension in a so sl dylib la dll; do if test ! -f "$ac_im_usrlibdir/libX11.$ac_extension" && test -f "$ac_im_libdir/libX11.$ac_extension"; then ac_im_usrlibdir=$ac_im_libdir; break fi done # Screen out bogus values from the imake configuration. They are # bogus both because they are the default anyway, and because # using them would break gcc on systems where it needs fixed includes. case $ac_im_incroot in /usr/include) ac_x_includes= ;; *) test -f "$ac_im_incroot/X11/Xos.h" && ac_x_includes=$ac_im_incroot;; esac case $ac_im_usrlibdir in /usr/lib | /usr/lib64 | /lib | /lib64) ;; *) test -d "$ac_im_usrlibdir" && ac_x_libraries=$ac_im_usrlibdir ;; esac fi cd .. rm -f -r conftest.dir fi # Standard set of common directories for X headers. # Check X11 before X11Rn because it is often a symlink to the current release. ac_x_header_dirs=' /usr/X11/include /usr/X11R7/include /usr/X11R6/include /usr/X11R5/include /usr/X11R4/include /usr/include/X11 /usr/include/X11R7 /usr/include/X11R6 /usr/include/X11R5 /usr/include/X11R4 /usr/local/X11/include /usr/local/X11R7/include /usr/local/X11R6/include /usr/local/X11R5/include /usr/local/X11R4/include /usr/local/include/X11 /usr/local/include/X11R7 /usr/local/include/X11R6 /usr/local/include/X11R5 /usr/local/include/X11R4 /usr/X386/include /usr/x386/include /usr/XFree86/include/X11 /usr/include /usr/local/include /usr/unsupported/include /usr/athena/include /usr/local/x11r5/include /usr/lpp/Xamples/include /usr/openwin/include /usr/openwin/share/include' if test "$ac_x_includes" = no; then # Guess where to find include files, by looking for Xlib.h. # First, try using that file with no special directory specified. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if ac_fn_c_try_cpp "$LINENO"; then : # We can compile using X headers with no special include directory. ac_x_includes= else for ac_dir in $ac_x_header_dirs; do if test -r "$ac_dir/X11/Xlib.h"; then ac_x_includes=$ac_dir break fi done fi rm -f conftest.err conftest.i conftest.$ac_ext fi # $ac_x_includes = no if test "$ac_x_libraries" = no; then # Check for the libraries. # See if we find them without any special options. # Don't add to $LIBS permanently. ac_save_LIBS=$LIBS LIBS="-lX11 $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main () { XrmInitialize () ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : LIBS=$ac_save_LIBS # We can link X programs with no special library path. ac_x_libraries= else LIBS=$ac_save_LIBS for ac_dir in `$as_echo "$ac_x_includes $ac_x_header_dirs" | sed s/include/lib/g` do # Don't even attempt the hair of trying to link an X program! for ac_extension in a so sl dylib la dll; do if test -r "$ac_dir/libX11.$ac_extension"; then ac_x_libraries=$ac_dir break 2 fi done done fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi # $ac_x_libraries = no case $ac_x_includes,$ac_x_libraries in #( no,* | *,no | *\'*) # Didn't find X, or a directory has "'" in its name. ac_cv_have_x="have_x=no";; #( *) # Record where we found X for the cache. ac_cv_have_x="have_x=yes\ ac_x_includes='$ac_x_includes'\ ac_x_libraries='$ac_x_libraries'" esac fi ;; #( *) have_x=yes;; esac eval "$ac_cv_have_x" fi # $with_x != no if test "$have_x" != yes; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $have_x" >&5 $as_echo "$have_x" >&6; } no_x=yes else # If each of the values was on the command line, it overrides each guess. test "x$x_includes" = xNONE && x_includes=$ac_x_includes test "x$x_libraries" = xNONE && x_libraries=$ac_x_libraries # Update the cache value to reflect the command line values. ac_cv_have_x="have_x=yes\ ac_x_includes='$x_includes'\ ac_x_libraries='$x_libraries'" { $as_echo "$as_me:${as_lineno-$LINENO}: result: libraries $x_libraries, headers $x_includes" >&5 $as_echo "libraries $x_libraries, headers $x_includes" >&6; } fi if test "$no_x" = "yes"; then as_fn_error $? "'Cannot find X utilities or libraries'" "$LINENO" 5; fi if test -n "$x_includes" then CPPFLAGS="$CPPFLAGS -I$x_includes" fi if test -n "$x_libraries" then LDFLAGS="$LDFLAGS -L$x_libraries" fi # Check whether --enable-app-defaults was given. if test "${enable_app_defaults+set}" = set; then : enableval=$enable_app_defaults; DEFINE_UAD="#define USE_APP_DEFAULTS 1"; if test "$enable_app_defaults" = "yes"; then UAD_FLAGS="-DCOLOR"; else UAD_FLAGS="$enable_app_defaults"; fi else DEFINE_UAD=""; UAD_FLAGS="-DCOLOR"; FALLBACKS_O=fallbacks.o fi # Check whether --with-fontdir was given. if test "${with_fontdir+set}" = set; then : withval=$with_fontdir; fi case "$with_fontdir" in ""|yes|no) CIFONTDIR='$'"(prefix)/share/fonts/X11/misc" ;; /*) CIFONTDIR="$with_fontdir" ;; *) CIFONTDIR='$'"(exec_prefix)/fonts/$with_fontdir" ;; esac # Set up the configuration directory. LIBX3270DIR='${sysconfdir}/x3270' { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing forkpty" >&5 $as_echo_n "checking for library containing forkpty... " >&6; } if ${ac_cv_search_forkpty+:} false; then : $as_echo_n "(cached) " >&6 else ac_func_search_save_LIBS=$LIBS cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char forkpty (); int main () { return forkpty (); ; return 0; } _ACEOF for ac_lib in '' util; do if test -z "$ac_lib"; then ac_res="none required" else ac_res=-l$ac_lib LIBS="-l$ac_lib $ac_func_search_save_LIBS" fi if ac_fn_c_try_link "$LINENO"; then : ac_cv_search_forkpty=$ac_res fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext if ${ac_cv_search_forkpty+:} false; then : break fi done if ${ac_cv_search_forkpty+:} false; then : else ac_cv_search_forkpty=no fi rm conftest.$ac_ext LIBS=$ac_func_search_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_forkpty" >&5 $as_echo "$ac_cv_search_forkpty" >&6; } ac_res=$ac_cv_search_forkpty if test "$ac_res" != no; then : test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" fi for ac_func in forkpty do : ac_fn_c_check_func "$LINENO" "forkpty" "ac_cv_func_forkpty" if test "x$ac_cv_func_forkpty" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_FORKPTY 1 _ACEOF fi done { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing gethostbyname" >&5 $as_echo_n "checking for library containing gethostbyname... " >&6; } if ${ac_cv_search_gethostbyname+:} false; then : $as_echo_n "(cached) " >&6 else ac_func_search_save_LIBS=$LIBS cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char gethostbyname (); int main () { return gethostbyname (); ; return 0; } _ACEOF for ac_lib in '' nsl_s nsl; do if test -z "$ac_lib"; then ac_res="none required" else ac_res=-l$ac_lib LIBS="-l$ac_lib $ac_func_search_save_LIBS" fi if ac_fn_c_try_link "$LINENO"; then : ac_cv_search_gethostbyname=$ac_res fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext if ${ac_cv_search_gethostbyname+:} false; then : break fi done if ${ac_cv_search_gethostbyname+:} false; then : else ac_cv_search_gethostbyname=no fi rm conftest.$ac_ext LIBS=$ac_func_search_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_gethostbyname" >&5 $as_echo "$ac_cv_search_gethostbyname" >&6; } ac_res=$ac_cv_search_gethostbyname if test "$ac_res" != no; then : test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing socket" >&5 $as_echo_n "checking for library containing socket... " >&6; } if ${ac_cv_search_socket+:} false; then : $as_echo_n "(cached) " >&6 else ac_func_search_save_LIBS=$LIBS cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char socket (); int main () { return socket (); ; return 0; } _ACEOF for ac_lib in '' socket; do if test -z "$ac_lib"; then ac_res="none required" else ac_res=-l$ac_lib LIBS="-l$ac_lib $ac_func_search_save_LIBS" fi if ac_fn_c_try_link "$LINENO"; then : ac_cv_search_socket=$ac_res fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext if ${ac_cv_search_socket+:} false; then : break fi done if ${ac_cv_search_socket+:} false; then : else ac_cv_search_socket=no fi rm conftest.$ac_ext LIBS=$ac_func_search_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_socket" >&5 $as_echo "$ac_cv_search_socket" >&6; } ac_res=$ac_cv_search_socket if test "$ac_res" != no; then : test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" fi for ac_header in X11/Shell.h do : ac_fn_c_check_header_mongrel "$LINENO" "X11/Shell.h" "ac_cv_header_X11_Shell_h" "$ac_includes_default" if test "x$ac_cv_header_X11_Shell_h" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_X11_SHELL_H 1 _ACEOF else as_fn_error $? "\"Cannot find X11 header files\"" "$LINENO" 5 fi done for ac_header in X11/Xmu/Atoms.h do : ac_fn_c_check_header_mongrel "$LINENO" "X11/Xmu/Atoms.h" "ac_cv_header_X11_Xmu_Atoms_h" "$ac_includes_default" if test "x$ac_cv_header_X11_Xmu_Atoms_h" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_X11_XMU_ATOMS_H 1 _ACEOF else as_fn_error $? "\"Cannot find Xmu header files\"" "$LINENO" 5 fi done for ac_header in X11/Xaw/Form.h do : ac_fn_c_check_header_mongrel "$LINENO" "X11/Xaw/Form.h" "ac_cv_header_X11_Xaw_Form_h" "$ac_includes_default" if test "x$ac_cv_header_X11_Xaw_Form_h" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_X11_XAW_FORM_H 1 _ACEOF else as_fn_error $? "\"Cannot find Xaw header files\"" "$LINENO" 5 fi done { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing XFillRectangle" >&5 $as_echo_n "checking for library containing XFillRectangle... " >&6; } if ${ac_cv_search_XFillRectangle+:} false; then : $as_echo_n "(cached) " >&6 else ac_func_search_save_LIBS=$LIBS cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char XFillRectangle (); int main () { return XFillRectangle (); ; return 0; } _ACEOF for ac_lib in '' X11; do if test -z "$ac_lib"; then ac_res="none required" else ac_res=-l$ac_lib LIBS="-l$ac_lib $ac_func_search_save_LIBS" fi if ac_fn_c_try_link "$LINENO"; then : ac_cv_search_XFillRectangle=$ac_res fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext if ${ac_cv_search_XFillRectangle+:} false; then : break fi done if ${ac_cv_search_XFillRectangle+:} false; then : else ac_cv_search_XFillRectangle=no fi rm conftest.$ac_ext LIBS=$ac_func_search_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_XFillRectangle" >&5 $as_echo "$ac_cv_search_XFillRectangle" >&6; } ac_res=$ac_cv_search_XFillRectangle if test "$ac_res" != no; then : test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" else as_fn_error $? "\"Cannot find libX11\"" "$LINENO" 5 fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing XtVaSetValues" >&5 $as_echo_n "checking for library containing XtVaSetValues... " >&6; } if ${ac_cv_search_XtVaSetValues+:} false; then : $as_echo_n "(cached) " >&6 else ac_func_search_save_LIBS=$LIBS cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char XtVaSetValues (); int main () { return XtVaSetValues (); ; return 0; } _ACEOF for ac_lib in '' Xt; do if test -z "$ac_lib"; then ac_res="none required" else ac_res=-l$ac_lib LIBS="-l$ac_lib $ac_func_search_save_LIBS" fi if ac_fn_c_try_link "$LINENO"; then : ac_cv_search_XtVaSetValues=$ac_res fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext if ${ac_cv_search_XtVaSetValues+:} false; then : break fi done if ${ac_cv_search_XtVaSetValues+:} false; then : else ac_cv_search_XtVaSetValues=no fi rm conftest.$ac_ext LIBS=$ac_func_search_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_XtVaSetValues" >&5 $as_echo "$ac_cv_search_XtVaSetValues" >&6; } ac_res=$ac_cv_search_XtVaSetValues if test "$ac_res" != no; then : test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" else as_fn_error $? "\"Cannot find libXt\"" "$LINENO" 5 fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing XmuAddInitializer" >&5 $as_echo_n "checking for library containing XmuAddInitializer... " >&6; } if ${ac_cv_search_XmuAddInitializer+:} false; then : $as_echo_n "(cached) " >&6 else ac_func_search_save_LIBS=$LIBS cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char XmuAddInitializer (); int main () { return XmuAddInitializer (); ; return 0; } _ACEOF for ac_lib in '' Xmu; do if test -z "$ac_lib"; then ac_res="none required" else ac_res=-l$ac_lib LIBS="-l$ac_lib $ac_func_search_save_LIBS" fi if ac_fn_c_try_link "$LINENO"; then : ac_cv_search_XmuAddInitializer=$ac_res fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext if ${ac_cv_search_XmuAddInitializer+:} false; then : break fi done if ${ac_cv_search_XmuAddInitializer+:} false; then : else ac_cv_search_XmuAddInitializer=no fi rm conftest.$ac_ext LIBS=$ac_func_search_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_XmuAddInitializer" >&5 $as_echo "$ac_cv_search_XmuAddInitializer" >&6; } ac_res=$ac_cv_search_XmuAddInitializer if test "$ac_res" != no; then : test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" else as_fn_error $? "\"Cannot find libXmu\"" "$LINENO" 5 fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing XawInitializeWidgetSet" >&5 $as_echo_n "checking for library containing XawInitializeWidgetSet... " >&6; } if ${ac_cv_search_XawInitializeWidgetSet+:} false; then : $as_echo_n "(cached) " >&6 else ac_func_search_save_LIBS=$LIBS cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char XawInitializeWidgetSet (); int main () { return XawInitializeWidgetSet (); ; return 0; } _ACEOF for ac_lib in '' Xaw; do if test -z "$ac_lib"; then ac_res="none required" else ac_res=-l$ac_lib LIBS="-l$ac_lib $ac_func_search_save_LIBS" fi if ac_fn_c_try_link "$LINENO"; then : ac_cv_search_XawInitializeWidgetSet=$ac_res fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext if ${ac_cv_search_XawInitializeWidgetSet+:} false; then : break fi done if ${ac_cv_search_XawInitializeWidgetSet+:} false; then : else ac_cv_search_XawInitializeWidgetSet=no fi rm conftest.$ac_ext LIBS=$ac_func_search_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_XawInitializeWidgetSet" >&5 $as_echo "$ac_cv_search_XawInitializeWidgetSet" >&6; } ac_res=$ac_cv_search_XawInitializeWidgetSet if test "$ac_res" != no; then : test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" else as_fn_error $? "\"Cannot find libXaw\"" "$LINENO" 5 fi for ac_func in vasprintf do : ac_fn_c_check_func "$LINENO" "vasprintf" "ac_cv_func_vasprintf" if test "x$ac_cv_func_vasprintf" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_VASPRINTF 1 _ACEOF fi done { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _LARGEFILE_SOURCE value needed for large files" >&5 $as_echo_n "checking for _LARGEFILE_SOURCE value needed for large files... " >&6; } if ${ac_cv_sys_largefile_source+:} false; then : $as_echo_n "(cached) " >&6 else while :; do cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include /* for off_t */ #include int main () { int (*fp) (FILE *, off_t, int) = fseeko; return fseeko (stdin, 0, 0) && fp (stdin, 0, 0); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_sys_largefile_source=no; break fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #define _LARGEFILE_SOURCE 1 #include /* for off_t */ #include int main () { int (*fp) (FILE *, off_t, int) = fseeko; return fseeko (stdin, 0, 0) && fp (stdin, 0, 0); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_sys_largefile_source=1; break fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext ac_cv_sys_largefile_source=unknown break done fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_largefile_source" >&5 $as_echo "$ac_cv_sys_largefile_source" >&6; } case $ac_cv_sys_largefile_source in #( no | unknown) ;; *) cat >>confdefs.h <<_ACEOF #define _LARGEFILE_SOURCE $ac_cv_sys_largefile_source _ACEOF ;; esac rm -rf conftest* # We used to try defining _XOPEN_SOURCE=500 too, to work around a bug # in glibc 2.1.3, but that breaks too many other things. # If you want fseeko and ftello with glibc, upgrade to a fixed glibc. if test $ac_cv_sys_largefile_source != unknown; then $as_echo "#define HAVE_FSEEKO 1" >>confdefs.h fi # Extract the first word of "bdftopcf", so it can be a program name with args. set dummy bdftopcf; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_bdftopcf_found+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$bdftopcf_found"; then ac_cv_prog_bdftopcf_found="$bdftopcf_found" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_bdftopcf_found="found" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS test -z "$ac_cv_prog_bdftopcf_found" && ac_cv_prog_bdftopcf_found="notfound" fi fi bdftopcf_found=$ac_cv_prog_bdftopcf_found if test -n "$bdftopcf_found"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $bdftopcf_found" >&5 $as_echo "$bdftopcf_found" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "$bdftopcf_found" = "notfound" then as_fn_error $? "'Cannot find bdftopcf'" "$LINENO" 5 fi # Extract the first word of "mkfontdir", so it can be a program name with args. set dummy mkfontdir; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_mkfontdir_found+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$mkfontdir_found"; then ac_cv_prog_mkfontdir_found="$mkfontdir_found" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_mkfontdir_found="found" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS test -z "$ac_cv_prog_mkfontdir_found" && ac_cv_prog_mkfontdir_found="notfound" fi fi mkfontdir_found=$ac_cv_prog_mkfontdir_found if test -n "$mkfontdir_found"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $mkfontdir_found" >&5 $as_echo "$mkfontdir_found" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "$mkfontdir_found" = "notfound" then as_fn_error $? "'Cannot find mkfontdir'" "$LINENO" 5 fi # Check whether --enable-dbcs was given. if test "${enable_dbcs+set}" = set; then : enableval=$enable_dbcs; fi case "$enable_dbcs" in no) ;; *) $as_echo "#define X3270_DBCS 1" >>confdefs.h ;; esac # Check whether --enable-local_process was given. if test "${enable_local_process+set}" = set; then : enableval=$enable_local_process; fi case "$enable_local_process" in ""|yes) $as_echo "#define X3270_LOCAL_PROCESS 1" >>confdefs.h ;; esac # Check whether --enable-ipv6 was given. if test "${enable_ipv6+set}" = set; then : enableval=$enable_ipv6; fi case "$enable_ipv6" in ""|yes) $as_echo "#define X3270_IPV6 1" >>confdefs.h ;; esac if test "$x_includes" then XINC=-I$x_includes fi if test "$x_libraries" then XLIB=-L$x_libraries fi ac_config_files="$ac_config_files Makefile Makefile.obj" cat >confcache <<\_ACEOF # This file is a shell script that caches the results of configure # tests run on this system so they can be shared between configure # scripts and configure runs, see configure's option --config-cache. # It is not useful on other systems. If it contains results you don't # want to keep, you may remove or edit it. # # config.status only pays attention to the cache file if you give it # the --recheck option to rerun configure. # # `ac_cv_env_foo' variables (set or unset) will be overridden when # loading this file, other *unset* `ac_cv_foo' will be assigned the # following values. _ACEOF # The following way of writing the cache mishandles newlines in values, # but we know of no workaround that is simple, portable, and efficient. # So, we kill variables containing newlines. # Ultrix sh set writes to stderr and can't be redirected directly, # and sets the high bit in the cache file unless we assign to the vars. ( for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do eval ac_val=\$$ac_var case $ac_val in #( *${as_nl}*) case $ac_var in #( *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 $as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; esac case $ac_var in #( _ | IFS | as_nl) ;; #( BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( *) { eval $ac_var=; unset $ac_var;} ;; esac ;; esac done (set) 2>&1 | case $as_nl`(ac_space=' '; set) 2>&1` in #( *${as_nl}ac_space=\ *) # `set' does not quote correctly, so add quotes: double-quote # substitution turns \\\\ into \\, and sed turns \\ into \. sed -n \ "s/'/'\\\\''/g; s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" ;; #( *) # `set' quotes correctly as required by POSIX, so do not add quotes. sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" ;; esac | sort ) | sed ' /^ac_cv_env_/b end t clear :clear s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/ t end s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ :end' >>confcache if diff "$cache_file" confcache >/dev/null 2>&1; then :; else if test -w "$cache_file"; then if test "x$cache_file" != "x/dev/null"; then { $as_echo "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5 $as_echo "$as_me: updating cache $cache_file" >&6;} if test ! -f "$cache_file" || test -h "$cache_file"; then cat confcache >"$cache_file" else case $cache_file in #( */* | ?:*) mv -f confcache "$cache_file"$$ && mv -f "$cache_file"$$ "$cache_file" ;; #( *) mv -f confcache "$cache_file" ;; esac fi fi else { $as_echo "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5 $as_echo "$as_me: not updating unwritable cache $cache_file" >&6;} fi fi rm -f confcache test "x$prefix" = xNONE && prefix=$ac_default_prefix # Let make expand exec_prefix. test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' DEFS=-DHAVE_CONFIG_H ac_libobjs= ac_ltlibobjs= U= for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue # 1. Remove the extension, and $U if already installed. ac_script='s/\$U\././;s/\.o$//;s/\.obj$//' ac_i=`$as_echo "$ac_i" | sed "$ac_script"` # 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR # will be set to the directory where LIBOBJS objects are built. as_fn_append ac_libobjs " \${LIBOBJDIR}$ac_i\$U.$ac_objext" as_fn_append ac_ltlibobjs " \${LIBOBJDIR}$ac_i"'$U.lo' done LIBOBJS=$ac_libobjs LTLIBOBJS=$ac_ltlibobjs : "${CONFIG_STATUS=./config.status}" ac_write_fail=0 ac_clean_files_save=$ac_clean_files ac_clean_files="$ac_clean_files $CONFIG_STATUS" { $as_echo "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5 $as_echo "$as_me: creating $CONFIG_STATUS" >&6;} as_write_fail=0 cat >$CONFIG_STATUS <<_ASEOF || as_write_fail=1 #! $SHELL # Generated by $as_me. # Run this file to recreate the current configuration. # Compiler output produced by configure, useful for debugging # configure, is in config.log if it exists. debug=false ac_cs_recheck=false ac_cs_silent=false SHELL=\${CONFIG_SHELL-$SHELL} export SHELL _ASEOF cat >>$CONFIG_STATUS <<\_ASEOF || as_write_fail=1 ## -------------------- ## ## M4sh Initialization. ## ## -------------------- ## # Be more Bourne compatible DUALCASE=1; export DUALCASE # for MKS sh if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST else case `(set -o) 2>/dev/null` in #( *posix*) : set -o posix ;; #( *) : ;; esac fi as_nl=' ' export as_nl # Printing a long string crashes Solaris 7 /usr/bin/printf. as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo # Prefer a ksh shell builtin over an external printf program on Solaris, # but without wasting forks for bash or zsh. if test -z "$BASH_VERSION$ZSH_VERSION" \ && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then as_echo='print -r --' as_echo_n='print -rn --' elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then as_echo='printf %s\n' as_echo_n='printf %s' else if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' as_echo_n='/usr/ucb/echo -n' else as_echo_body='eval expr "X$1" : "X\\(.*\\)"' as_echo_n_body='eval arg=$1; case $arg in #( *"$as_nl"*) expr "X$arg" : "X\\(.*\\)$as_nl"; arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; esac; expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" ' export as_echo_n_body as_echo_n='sh -c $as_echo_n_body as_echo' fi export as_echo_body as_echo='sh -c $as_echo_body as_echo' fi # The user is always right. if test "${PATH_SEPARATOR+set}" != set; then PATH_SEPARATOR=: (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || PATH_SEPARATOR=';' } fi # IFS # We need space, tab and new line, in precisely that order. Quoting is # there to prevent editors from complaining about space-tab. # (If _AS_PATH_WALK were called with IFS unset, it would disable word # splitting by setting IFS to empty value.) IFS=" "" $as_nl" # Find who we are. Look in the path if we contain no directory separator. as_myself= case $0 in #(( *[\\/]* ) as_myself=$0 ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break done IFS=$as_save_IFS ;; esac # We did not find ourselves, most probably we were run as `sh COMMAND' # in which case we are not to be found in the path. if test "x$as_myself" = x; then as_myself=$0 fi if test ! -f "$as_myself"; then $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 exit 1 fi # Unset variables that we do not need and which cause bugs (e.g. in # pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" # suppresses any "Segmentation fault" message there. '((' could # trigger a bug in pdksh 5.2.14. for as_var in BASH_ENV ENV MAIL MAILPATH do eval test x\${$as_var+set} = xset \ && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : done PS1='$ ' PS2='> ' PS4='+ ' # NLS nuisances. LC_ALL=C export LC_ALL LANGUAGE=C export LANGUAGE # CDPATH. (unset CDPATH) >/dev/null 2>&1 && unset CDPATH # as_fn_error STATUS ERROR [LINENO LOG_FD] # ---------------------------------------- # Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are # provided, also output the error to LOG_FD, referencing LINENO. Then exit the # script with STATUS, using 1 if that was 0. as_fn_error () { as_status=$1; test $as_status -eq 0 && as_status=1 if test "$4"; then as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 fi $as_echo "$as_me: error: $2" >&2 as_fn_exit $as_status } # as_fn_error # as_fn_set_status STATUS # ----------------------- # Set $? to STATUS, without forking. as_fn_set_status () { return $1 } # as_fn_set_status # as_fn_exit STATUS # ----------------- # Exit the shell with STATUS, even in a "trap 0" or "set -e" context. as_fn_exit () { set +e as_fn_set_status $1 exit $1 } # as_fn_exit # as_fn_unset VAR # --------------- # Portably unset VAR. as_fn_unset () { { eval $1=; unset $1;} } as_unset=as_fn_unset # as_fn_append VAR VALUE # ---------------------- # Append the text in VALUE to the end of the definition contained in VAR. Take # advantage of any shell optimizations that allow amortized linear growth over # repeated appends, instead of the typical quadratic growth present in naive # implementations. if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : eval 'as_fn_append () { eval $1+=\$2 }' else as_fn_append () { eval $1=\$$1\$2 } fi # as_fn_append # as_fn_arith ARG... # ------------------ # Perform arithmetic evaluation on the ARGs, and store the result in the # global $as_val. Take advantage of shells that can avoid forks. The arguments # must be portable across $(()) and expr. if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : eval 'as_fn_arith () { as_val=$(( $* )) }' else as_fn_arith () { as_val=`expr "$@" || test $? -eq 1` } fi # as_fn_arith if expr a : '\(a\)' >/dev/null 2>&1 && test "X`expr 00001 : '.*\(...\)'`" = X001; then as_expr=expr else as_expr=false fi if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then as_basename=basename else as_basename=false fi if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then as_dirname=dirname else as_dirname=false fi as_me=`$as_basename -- "$0" || $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ X"$0" : 'X\(//\)$' \| \ X"$0" : 'X\(/\)' \| . 2>/dev/null || $as_echo X/"$0" | sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/ q } /^X\/\(\/\/\)$/{ s//\1/ q } /^X\/\(\/\).*/{ s//\1/ q } s/.*/./; q'` # Avoid depending upon Character Ranges. as_cr_letters='abcdefghijklmnopqrstuvwxyz' as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' as_cr_Letters=$as_cr_letters$as_cr_LETTERS as_cr_digits='0123456789' as_cr_alnum=$as_cr_Letters$as_cr_digits ECHO_C= ECHO_N= ECHO_T= case `echo -n x` in #((((( -n*) case `echo 'xy\c'` in *c*) ECHO_T=' ';; # ECHO_T is single tab character. xy) ECHO_C='\c';; *) echo `echo ksh88 bug on AIX 6.1` > /dev/null ECHO_T=' ';; esac;; *) ECHO_N='-n';; esac rm -f conf$$ conf$$.exe conf$$.file if test -d conf$$.dir; then rm -f conf$$.dir/conf$$.file else rm -f conf$$.dir mkdir conf$$.dir 2>/dev/null fi if (echo >conf$$.file) 2>/dev/null; then if ln -s conf$$.file conf$$ 2>/dev/null; then as_ln_s='ln -s' # ... but there are two gotchas: # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. # In both cases, we have to default to `cp -pR'. ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || as_ln_s='cp -pR' elif ln conf$$.file conf$$ 2>/dev/null; then as_ln_s=ln else as_ln_s='cp -pR' fi else as_ln_s='cp -pR' fi rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file rmdir conf$$.dir 2>/dev/null # as_fn_mkdir_p # ------------- # Create "$as_dir" as a directory, including parents if necessary. as_fn_mkdir_p () { case $as_dir in #( -*) as_dir=./$as_dir;; esac test -d "$as_dir" || eval $as_mkdir_p || { as_dirs= while :; do case $as_dir in #( *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( *) as_qdir=$as_dir;; esac as_dirs="'$as_qdir' $as_dirs" as_dir=`$as_dirname -- "$as_dir" || $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_dir" : 'X\(//\)[^/]' \| \ X"$as_dir" : 'X\(//\)$' \| \ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$as_dir" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` test -d "$as_dir" && break done test -z "$as_dirs" || eval "mkdir $as_dirs" } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" } # as_fn_mkdir_p if mkdir -p . 2>/dev/null; then as_mkdir_p='mkdir -p "$as_dir"' else test -d ./-p && rmdir ./-p as_mkdir_p=false fi # as_fn_executable_p FILE # ----------------------- # Test if FILE is an executable regular file. as_fn_executable_p () { test -f "$1" && test -x "$1" } # as_fn_executable_p as_test_x='test -x' as_executable_p=as_fn_executable_p # Sed expression to map a string onto a valid CPP name. as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" # Sed expression to map a string onto a valid variable name. as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" exec 6>&1 ## ----------------------------------- ## ## Main body of $CONFIG_STATUS script. ## ## ----------------------------------- ## _ASEOF test $as_write_fail = 0 && chmod +x $CONFIG_STATUS || ac_write_fail=1 cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # Save the log message, to keep $0 and so on meaningful, and to # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" This file was extended by x3270 $as_me 4.0, which was generated by GNU Autoconf 2.69. Invocation command line was CONFIG_FILES = $CONFIG_FILES CONFIG_HEADERS = $CONFIG_HEADERS CONFIG_LINKS = $CONFIG_LINKS CONFIG_COMMANDS = $CONFIG_COMMANDS $ $0 $@ on `(hostname || uname -n) 2>/dev/null | sed 1q` " _ACEOF case $ac_config_files in *" "*) set x $ac_config_files; shift; ac_config_files=$*;; esac case $ac_config_headers in *" "*) set x $ac_config_headers; shift; ac_config_headers=$*;; esac cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 # Files that config.status was made for. config_files="$ac_config_files" config_headers="$ac_config_headers" _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 ac_cs_usage="\ \`$as_me' instantiates files and other configuration actions from templates according to the current configuration. Unless the files and actions are specified as TAGs, all are instantiated by default. Usage: $0 [OPTION]... [TAG]... -h, --help print this help, then exit -V, --version print version number and configuration settings, then exit --config print configuration, then exit -q, --quiet, --silent do not print progress messages -d, --debug don't remove temporary files --recheck update $as_me by reconfiguring in the same conditions --file=FILE[:TEMPLATE] instantiate the configuration file FILE --header=FILE[:TEMPLATE] instantiate the configuration header FILE Configuration files: $config_files Configuration headers: $config_headers Report bugs to the package provider." _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" ac_cs_version="\\ x3270 config.status 4.0 configured by $0, generated by GNU Autoconf 2.69, with options \\"\$ac_cs_config\\" Copyright (C) 2012 Free Software Foundation, Inc. This config.status script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it." ac_pwd='$ac_pwd' srcdir='$srcdir' INSTALL='$INSTALL' test -n "\$AWK" || AWK=awk _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # The default lists apply if the user does not specify any file. ac_need_defaults=: while test $# != 0 do case $1 in --*=?*) ac_option=`expr "X$1" : 'X\([^=]*\)='` ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'` ac_shift=: ;; --*=) ac_option=`expr "X$1" : 'X\([^=]*\)='` ac_optarg= ac_shift=: ;; *) ac_option=$1 ac_optarg=$2 ac_shift=shift ;; esac case $ac_option in # Handling of the options. -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) ac_cs_recheck=: ;; --version | --versio | --versi | --vers | --ver | --ve | --v | -V ) $as_echo "$ac_cs_version"; exit ;; --config | --confi | --conf | --con | --co | --c ) $as_echo "$ac_cs_config"; exit ;; --debug | --debu | --deb | --de | --d | -d ) debug=: ;; --file | --fil | --fi | --f ) $ac_shift case $ac_optarg in *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; '') as_fn_error $? "missing file argument" ;; esac as_fn_append CONFIG_FILES " '$ac_optarg'" ac_need_defaults=false;; --header | --heade | --head | --hea ) $ac_shift case $ac_optarg in *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; esac as_fn_append CONFIG_HEADERS " '$ac_optarg'" ac_need_defaults=false;; --he | --h) # Conflict between --help and --header as_fn_error $? "ambiguous option: \`$1' Try \`$0 --help' for more information.";; --help | --hel | -h ) $as_echo "$ac_cs_usage"; exit ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil | --si | --s) ac_cs_silent=: ;; # This is an error. -*) as_fn_error $? "unrecognized option: \`$1' Try \`$0 --help' for more information." ;; *) as_fn_append ac_config_targets " $1" ac_need_defaults=false ;; esac shift done ac_configure_extra_args= if $ac_cs_silent; then exec 6>/dev/null ac_configure_extra_args="$ac_configure_extra_args --silent" fi _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 if \$ac_cs_recheck; then set X $SHELL '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion shift \$as_echo "running CONFIG_SHELL=$SHELL \$*" >&6 CONFIG_SHELL='$SHELL' export CONFIG_SHELL exec "\$@" fi _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 exec 5>>config.log { echo sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX ## Running $as_me. ## _ASBOX $as_echo "$ac_log" } >&5 _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # Handling of arguments. for ac_config_target in $ac_config_targets do case $ac_config_target in "conf.h") CONFIG_HEADERS="$CONFIG_HEADERS conf.h" ;; "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;; "Makefile.obj") CONFIG_FILES="$CONFIG_FILES Makefile.obj" ;; *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;; esac done # If the user did not use the arguments to specify the items to instantiate, # then the envvar interface is used. Set only those that are not. # We use the long form for the default assignment because of an extremely # bizarre bug on SunOS 4.1.3. if $ac_need_defaults; then test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers fi # Have a temporary directory for convenience. Make it in the build tree # simply because there is no reason against having it here, and in addition, # creating and moving files from /tmp can sometimes cause problems. # Hook for its removal unless debugging. # Note that there is a small window in which the directory will not be cleaned: # after its creation but before its name has been assigned to `$tmp'. $debug || { tmp= ac_tmp= trap 'exit_status=$? : "${ac_tmp:=$tmp}" { test ! -d "$ac_tmp" || rm -fr "$ac_tmp"; } && exit $exit_status ' 0 trap 'as_fn_exit 1' 1 2 13 15 } # Create a (secure) tmp directory for tmp files. { tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` && test -d "$tmp" } || { tmp=./conf$$-$RANDOM (umask 077 && mkdir "$tmp") } || as_fn_error $? "cannot create a temporary directory in ." "$LINENO" 5 ac_tmp=$tmp # Set up the scripts for CONFIG_FILES section. # No need to generate them if there are no CONFIG_FILES. # This happens for instance with `./config.status config.h'. if test -n "$CONFIG_FILES"; then ac_cr=`echo X | tr X '\015'` # On cygwin, bash can eat \r inside `` if the user requested igncr. # But we know of no other shell where ac_cr would be empty at this # point, so we can use a bashism as a fallback. if test "x$ac_cr" = x; then eval ac_cr=\$\'\\r\' fi ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' /dev/null` if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then ac_cs_awk_cr='\\r' else ac_cs_awk_cr=$ac_cr fi echo 'BEGIN {' >"$ac_tmp/subs1.awk" && _ACEOF { echo "cat >conf$$subs.awk <<_ACEOF" && echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' && echo "_ACEOF" } >conf$$subs.sh || as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 ac_delim_num=`echo "$ac_subst_vars" | grep -c '^'` ac_delim='%!_!# ' for ac_last_try in false false false false false :; do . ./conf$$subs.sh || as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 ac_delim_n=`sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | grep -c X` if test $ac_delim_n = $ac_delim_num; then break elif $ac_last_try; then as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 else ac_delim="$ac_delim!$ac_delim _$ac_delim!! " fi done rm -f conf$$subs.sh cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 cat >>"\$ac_tmp/subs1.awk" <<\\_ACAWK && _ACEOF sed -n ' h s/^/S["/; s/!.*/"]=/ p g s/^[^!]*!// :repl t repl s/'"$ac_delim"'$// t delim :nl h s/\(.\{148\}\)..*/\1/ t more1 s/["\\]/\\&/g; s/^/"/; s/$/\\n"\\/ p n b repl :more1 s/["\\]/\\&/g; s/^/"/; s/$/"\\/ p g s/.\{148\}// t nl :delim h s/\(.\{148\}\)..*/\1/ t more2 s/["\\]/\\&/g; s/^/"/; s/$/"/ p b :more2 s/["\\]/\\&/g; s/^/"/; s/$/"\\/ p g s/.\{148\}// t delim ' >$CONFIG_STATUS || ac_write_fail=1 rm -f conf$$subs.awk cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 _ACAWK cat >>"\$ac_tmp/subs1.awk" <<_ACAWK && for (key in S) S_is_set[key] = 1 FS = "" } { line = $ 0 nfields = split(line, field, "@") substed = 0 len = length(field[1]) for (i = 2; i < nfields; i++) { key = field[i] keylen = length(key) if (S_is_set[key]) { value = S[key] line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3) len += length(value) + length(field[++i]) substed = 1 } else len += 1 + keylen } print line } _ACAWK _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g" else cat fi < "$ac_tmp/subs1.awk" > "$ac_tmp/subs.awk" \ || as_fn_error $? "could not setup config files machinery" "$LINENO" 5 _ACEOF # VPATH may cause trouble with some makes, so we remove sole $(srcdir), # ${srcdir} and @srcdir@ entries from VPATH if srcdir is ".", strip leading and # trailing colons and then remove the whole line if VPATH becomes empty # (actually we leave an empty line to preserve line numbers). if test "x$srcdir" = x.; then ac_vpsub='/^[ ]*VPATH[ ]*=[ ]*/{ h s/// s/^/:/ s/[ ]*$/:/ s/:\$(srcdir):/:/g s/:\${srcdir}:/:/g s/:@srcdir@:/:/g s/^:*// s/:*$// x s/\(=[ ]*\).*/\1/ G s/\n// s/^[^=]*=[ ]*$// }' fi cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 fi # test -n "$CONFIG_FILES" # Set up the scripts for CONFIG_HEADERS section. # No need to generate them if there are no CONFIG_HEADERS. # This happens for instance with `./config.status Makefile'. if test -n "$CONFIG_HEADERS"; then cat >"$ac_tmp/defines.awk" <<\_ACAWK || BEGIN { _ACEOF # Transform confdefs.h into an awk script `defines.awk', embedded as # here-document in config.status, that substitutes the proper values into # config.h.in to produce config.h. # Create a delimiter string that does not exist in confdefs.h, to ease # handling of long lines. ac_delim='%!_!# ' for ac_last_try in false false :; do ac_tt=`sed -n "/$ac_delim/p" confdefs.h` if test -z "$ac_tt"; then break elif $ac_last_try; then as_fn_error $? "could not make $CONFIG_HEADERS" "$LINENO" 5 else ac_delim="$ac_delim!$ac_delim _$ac_delim!! " fi done # For the awk script, D is an array of macro values keyed by name, # likewise P contains macro parameters if any. Preserve backslash # newline sequences. ac_word_re=[_$as_cr_Letters][_$as_cr_alnum]* sed -n ' s/.\{148\}/&'"$ac_delim"'/g t rset :rset s/^[ ]*#[ ]*define[ ][ ]*/ / t def d :def s/\\$// t bsnl s/["\\]/\\&/g s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ D["\1"]=" \3"/p s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2"/p d :bsnl s/["\\]/\\&/g s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ D["\1"]=" \3\\\\\\n"\\/p t cont s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2\\\\\\n"\\/p t cont d :cont n s/.\{148\}/&'"$ac_delim"'/g t clear :clear s/\\$// t bsnlc s/["\\]/\\&/g; s/^/"/; s/$/"/p d :bsnlc s/["\\]/\\&/g; s/^/"/; s/$/\\\\\\n"\\/p b cont ' >$CONFIG_STATUS || ac_write_fail=1 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 for (key in D) D_is_set[key] = 1 FS = "" } /^[\t ]*#[\t ]*(define|undef)[\t ]+$ac_word_re([\t (]|\$)/ { line = \$ 0 split(line, arg, " ") if (arg[1] == "#") { defundef = arg[2] mac1 = arg[3] } else { defundef = substr(arg[1], 2) mac1 = arg[2] } split(mac1, mac2, "(") #) macro = mac2[1] prefix = substr(line, 1, index(line, defundef) - 1) if (D_is_set[macro]) { # Preserve the white space surrounding the "#". print prefix "define", macro P[macro] D[macro] next } else { # Replace #undef with comments. This is necessary, for example, # in the case of _POSIX_SOURCE, which is predefined and required # on some systems where configure will not decide to define it. if (defundef == "undef") { print "/*", prefix defundef, macro, "*/" next } } } { print } _ACAWK _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 as_fn_error $? "could not setup config headers machinery" "$LINENO" 5 fi # test -n "$CONFIG_HEADERS" eval set X " :F $CONFIG_FILES :H $CONFIG_HEADERS " shift for ac_tag do case $ac_tag in :[FHLC]) ac_mode=$ac_tag; continue;; esac case $ac_mode$ac_tag in :[FHL]*:*);; :L* | :C*:*) as_fn_error $? "invalid tag \`$ac_tag'" "$LINENO" 5;; :[FH]-) ac_tag=-:-;; :[FH]*) ac_tag=$ac_tag:$ac_tag.in;; esac ac_save_IFS=$IFS IFS=: set x $ac_tag IFS=$ac_save_IFS shift ac_file=$1 shift case $ac_mode in :L) ac_source=$1;; :[FH]) ac_file_inputs= for ac_f do case $ac_f in -) ac_f="$ac_tmp/stdin";; *) # Look for the file first in the build tree, then in the source tree # (if the path is not absolute). The absolute path cannot be DOS-style, # because $ac_f cannot contain `:'. test -f "$ac_f" || case $ac_f in [\\/$]*) false;; *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";; esac || as_fn_error 1 "cannot find input file: \`$ac_f'" "$LINENO" 5;; esac case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac as_fn_append ac_file_inputs " '$ac_f'" done # Let's still pretend it is `configure' which instantiates (i.e., don't # use $as_me), people would be surprised to read: # /* config.h. Generated by config.status. */ configure_input='Generated from '` $as_echo "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g' `' by configure.' if test x"$ac_file" != x-; then configure_input="$ac_file. $configure_input" { $as_echo "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5 $as_echo "$as_me: creating $ac_file" >&6;} fi # Neutralize special characters interpreted by sed in replacement strings. case $configure_input in #( *\&* | *\|* | *\\* ) ac_sed_conf_input=`$as_echo "$configure_input" | sed 's/[\\\\&|]/\\\\&/g'`;; #( *) ac_sed_conf_input=$configure_input;; esac case $ac_tag in *:-:* | *:-) cat >"$ac_tmp/stdin" \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;; esac ;; esac ac_dir=`$as_dirname -- "$ac_file" || $as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$ac_file" : 'X\(//\)[^/]' \| \ X"$ac_file" : 'X\(//\)$' \| \ X"$ac_file" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$ac_file" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` as_dir="$ac_dir"; as_fn_mkdir_p ac_builddir=. case "$ac_dir" in .) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` # A ".." for each directory in $ac_dir_suffix. ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` case $ac_top_builddir_sub in "") ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; esac ;; esac ac_abs_top_builddir=$ac_pwd ac_abs_builddir=$ac_pwd$ac_dir_suffix # for backward compatibility: ac_top_builddir=$ac_top_build_prefix case $srcdir in .) # We are building in place. ac_srcdir=. ac_top_srcdir=$ac_top_builddir_sub ac_abs_top_srcdir=$ac_pwd ;; [\\/]* | ?:[\\/]* ) # Absolute name. ac_srcdir=$srcdir$ac_dir_suffix; ac_top_srcdir=$srcdir ac_abs_top_srcdir=$srcdir ;; *) # Relative name. ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix ac_top_srcdir=$ac_top_build_prefix$srcdir ac_abs_top_srcdir=$ac_pwd/$srcdir ;; esac ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix case $ac_mode in :F) # # CONFIG_FILE # case $INSTALL in [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;; *) ac_INSTALL=$ac_top_build_prefix$INSTALL ;; esac _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # If the template does not know about datarootdir, expand it. # FIXME: This hack should be removed a few years after 2.60. ac_datarootdir_hack=; ac_datarootdir_seen= ac_sed_dataroot=' /datarootdir/ { p q } /@datadir@/p /@docdir@/p /@infodir@/p /@localedir@/p /@mandir@/p' case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in *datarootdir*) ac_datarootdir_seen=yes;; *@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 $as_echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;} _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_datarootdir_hack=' s&@datadir@&$datadir&g s&@docdir@&$docdir&g s&@infodir@&$infodir&g s&@localedir@&$localedir&g s&@mandir@&$mandir&g s&\\\${datarootdir}&$datarootdir&g' ;; esac _ACEOF # Neutralize VPATH when `$srcdir' = `.'. # Shell code in configure.ac might set extrasub. # FIXME: do we really want to maintain this feature? cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_sed_extra="$ac_vpsub $extrasub _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 :t /@[a-zA-Z_][a-zA-Z_0-9]*@/!b s|@configure_input@|$ac_sed_conf_input|;t t s&@top_builddir@&$ac_top_builddir_sub&;t t s&@top_build_prefix@&$ac_top_build_prefix&;t t s&@srcdir@&$ac_srcdir&;t t s&@abs_srcdir@&$ac_abs_srcdir&;t t s&@top_srcdir@&$ac_top_srcdir&;t t s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t s&@builddir@&$ac_builddir&;t t s&@abs_builddir@&$ac_abs_builddir&;t t s&@abs_top_builddir@&$ac_abs_top_builddir&;t t s&@INSTALL@&$ac_INSTALL&;t t $ac_datarootdir_hack " eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$ac_tmp/subs.awk" \ >$ac_tmp/out || as_fn_error $? "could not create $ac_file" "$LINENO" 5 test -z "$ac_datarootdir_hack$ac_datarootdir_seen" && { ac_out=`sed -n '/\${datarootdir}/p' "$ac_tmp/out"`; test -n "$ac_out"; } && { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' \ "$ac_tmp/out"`; test -z "$ac_out"; } && { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir' which seems to be undefined. Please make sure it is defined" >&5 $as_echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir' which seems to be undefined. Please make sure it is defined" >&2;} rm -f "$ac_tmp/stdin" case $ac_file in -) cat "$ac_tmp/out" && rm -f "$ac_tmp/out";; *) rm -f "$ac_file" && mv "$ac_tmp/out" "$ac_file";; esac \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;; :H) # # CONFIG_HEADER # if test x"$ac_file" != x-; then { $as_echo "/* $configure_input */" \ && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" } >"$ac_tmp/config.h" \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 if diff "$ac_file" "$ac_tmp/config.h" >/dev/null 2>&1; then { $as_echo "$as_me:${as_lineno-$LINENO}: $ac_file is unchanged" >&5 $as_echo "$as_me: $ac_file is unchanged" >&6;} else rm -f "$ac_file" mv "$ac_tmp/config.h" "$ac_file" \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 fi else $as_echo "/* $configure_input */" \ && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" \ || as_fn_error $? "could not create -" "$LINENO" 5 fi ;; esac done # for ac_tag as_fn_exit 0 _ACEOF ac_clean_files=$ac_clean_files_save test $ac_write_fail = 0 || as_fn_error $? "write failure creating $CONFIG_STATUS" "$LINENO" 5 # configure is writing to config.log, and then calls config.status. # config.status does its own redirection, appending to config.log. # Unfortunately, on DOS this fails, as config.log is still kept open # by configure, so config.status won't be able to write to it; its # output is simply discarded. So we exec the FD to /dev/null, # effectively closing config.log, so it can be properly (re)opened and # appended to by config.status. When coming back to configure, we # need to make the FD available again. if test "$no_create" != yes; then ac_cs_success=: ac_config_status_args= test "$silent" = yes && ac_config_status_args="$ac_config_status_args --quiet" exec 5>/dev/null $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false exec 5>>config.log # Use ||, not &&, to avoid exiting from the if with $? = 1, which # would make configure fail if this is the last instruction. $ac_cs_success || as_fn_exit 1 fi if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5 $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;} fi suite3270-4.1/x3270/configure.in000066400000000000000000000126731413735575200161440ustar00rootroot00000000000000dnl Copyright (c) 2000-2009, 2016-2017, 2020 Paul Mattes. dnl All rights reserved. dnl dnl Redistribution and use in source and binary forms, with or without dnl modification, are permitted provided that the following conditions dnl are met: dnl * Redistributions of source code must retain the above copyright dnl notice, this list of conditions and the following disclaimer. dnl * Redistributions in binary form must reproduce the above copyright dnl notice, this list of conditions and the following disclaimer in the dnl documentation and/or other materials provided with the distribution. dnl * Neither the name of Paul Mattes nor his contributors may be used dnl to endorse or promote products derived from this software without dnl specific prior written permission. dnl dnl THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS dnl OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED dnl WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE dnl DISCLAIMED. IN NO EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, dnl INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES dnl (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR dnl SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) dnl HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, dnl STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING dnl IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE dnl POSSIBILITY OF SUCH DAMAGE. dnl Process this file with autoconf to produce a configure script. AC_INIT(x3270,4.0) AC_PREREQ(2.50) AC_CONFIG_HEADER(conf.h) dnl Checks for programs. AC_PROG_INSTALL AC_PROG_CC dnl Compute host-specific flags. AC_CANONICAL_HOST case "$host_os" in solaris2*) CPPFLAGS="$CPPFLAGS -D__EXTENSIONS__" ;; darwin*) CCOPTIONS="$CCOPTIONS -no-cpp-precomp -Wno-deprecated-declarations -Wno-extended-offsetof" ;; linux*) CPPFLAGS="$CPPFLAGS -D_POSIX_SOURCE -D_BSD_SOURCE -D_DEFAULT_SOURCE -D_XOPEN_SOURCE" ;; esac if test "$GCC" = yes then # Add common gcc options, plus flags for dependency generation. CCOPTIONS="$CCOPTIONS -Wall -Wsign-compare -std=c99 -pedantic -Wno-variadic-macros -MMD -MP" fi AC_SUBST(host) AC_SUBST(CCOPTIONS) dnl Checks for header files. AC_CHECK_HEADERS(sys/select.h) AC_CHECK_HEADERS(pty.h) AC_CHECK_HEADERS(libutil.h) AC_CHECK_HEADERS(util.h) AC_CHECK_HEADERS(getopt.h) dnl Check for X AC_PATH_X if test "$no_x" = "yes"; then AC_MSG_ERROR('Cannot find X utilities or libraries'); fi if test -n "$x_includes" then CPPFLAGS="$CPPFLAGS -I$x_includes" fi if test -n "$x_libraries" then LDFLAGS="$LDFLAGS -L$x_libraries" fi dnl Check for --enable-app-defaults AC_ARG_ENABLE(app-defaults, [ --enable-app-defaults use a separate app-defaults file], [DEFINE_UAD="#define USE_APP_DEFAULTS 1"; if test "$enable_app_defaults" = "yes"; then UAD_FLAGS="-DCOLOR"; else UAD_FLAGS="$enable_app_defaults"; fi], [DEFINE_UAD=""; UAD_FLAGS="-DCOLOR"; FALLBACKS_O=fallbacks.o]) AC_SUBST(UAD_FLAGS) AC_SUBST(DEFINE_UAD) AC_SUBST(FALLBACKS_O) dnl Check for --with-fontdir=DIR AC_ARG_WITH(fontdir,[ --with-fontdir=DIR install fonts in directory DIR [DIR=PREFIX/share/fonts/X11/misc]]) case "$with_fontdir" in ""|yes|no) CIFONTDIR='$'"(prefix)/share/fonts/X11/misc" ;; /*) CIFONTDIR="$with_fontdir" ;; *) CIFONTDIR='$'"(exec_prefix)/fonts/$with_fontdir" ;; esac AC_SUBST(CIFONTDIR) # Set up the configuration directory. LIBX3270DIR='${sysconfdir}/x3270' AC_SUBST(LIBX3270DIR) dnl Check for other libraries. dnl Note that the order here is important. The last libraries should appear dnl first, so that objects in them can be used by subsequent libraries. AC_SEARCH_LIBS(forkpty, util) AC_CHECK_FUNCS(forkpty) AC_SEARCH_LIBS(gethostbyname, nsl_s nsl) AC_SEARCH_LIBS(socket, socket) AC_CHECK_HEADERS(X11/Shell.h, , AC_MSG_ERROR("Cannot find X11 header files")) AC_CHECK_HEADERS(X11/Xmu/Atoms.h, , AC_MSG_ERROR("Cannot find Xmu header files")) AC_CHECK_HEADERS(X11/Xaw/Form.h, , AC_MSG_ERROR("Cannot find Xaw header files")) AC_SEARCH_LIBS(XFillRectangle, X11, , AC_MSG_ERROR("Cannot find libX11")) AC_SEARCH_LIBS(XtVaSetValues, Xt, , AC_MSG_ERROR("Cannot find libXt")) AC_SEARCH_LIBS(XmuAddInitializer, Xmu, , AC_MSG_ERROR("Cannot find libXmu")) AC_SEARCH_LIBS(XawInitializeWidgetSet, Xaw, , AC_MSG_ERROR("Cannot find libXaw")) dnl Checks for library functions. AC_CHECK_FUNCS(vasprintf) AC_FUNC_FSEEKO dnl Check for xmkmkf or bdftopcf and mkfontdir AC_CHECK_PROG(bdftopcf_found,bdftopcf,found,notfound) if test "$bdftopcf_found" = "notfound" then AC_MSG_ERROR('Cannot find bdftopcf') fi AC_CHECK_PROG(mkfontdir_found,mkfontdir,found,notfound) if test "$mkfontdir_found" = "notfound" then AC_MSG_ERROR('Cannot find mkfontdir') fi dnl Check for unwanted parts. AC_ARG_ENABLE(dbcs,[ --disable-dbcs leave out DBCS support]) case "$enable_dbcs" in no) ;; *) AC_DEFINE(X3270_DBCS,1) ;; esac AC_ARG_ENABLE(local_process,[ --disable-local-process leave out local process support]) case "$enable_local_process" in ""|yes) AC_DEFINE(X3270_LOCAL_PROCESS,1) ;; esac AC_ARG_ENABLE(ipv6,[ --disable-ipv6 leave out IPv6 support]) case "$enable_ipv6" in ""|yes) AC_DEFINE(X3270_IPV6,1) ;; esac if test "$x_includes" then XINC=-I$x_includes fi if test "$x_libraries" then XLIB=-L$x_libraries fi AC_SUBST(XINC) AC_SUBST(XLIB) AC_CONFIG_FILES(Makefile Makefile.obj) AC_OUTPUT suite3270-4.1/x3270/dialog.c000066400000000000000000000216041413735575200152300ustar00rootroot00000000000000/* * Copyright (c) 1996-2012, 2014-2016, 2019 Paul Mattes. * Copyright (c) 1995, Dick Altenbern. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the names of Paul Mattes, Dick Altenbern nor their * contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES AND DICK ALTENBERN "AS IS" * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL PAUL MATTES OR DICK ALTENBERN * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, * OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * dialog.c * Common code for nontrival dialog boxes. */ #include "globals.h" #include #include #include #include #include #include #include #include #include #include #include #include "appres.h" #include "dialog.h" #include "ft_cut.h" #include "ft_dft.h" #include "ft.h" #include "host.h" #include "kybd.h" #include "objects.h" #include "popups.h" #include "telnet.h" #include "task.h" #include "utils.h" #include "xmenubar.h" /* Globals. */ text_t t_numeric = T_NUMERIC; text_t t_hostfile = T_HOSTFILE; text_t t_unixfile = T_UNIXFILE; text_t t_command = T_COMMAND; bool s_true = true; bool s_false = false; /* Statics. */ static sr_t **srp = NULL; static sr_t *sr_last = NULL; static Widget focus_widget = NULL; static void focus_next(sr_t *s); /* Support functions for dialogs. */ /* Set one dialog (hack). */ void dialog_set(sr_t **srs, Widget f) { sr_t *s; srp = srs; for (s = *srp; s != NULL; s = s->next) { sr_last = s; } focus_widget = f; } /* Match one dimension of two widgets. */ void dialog_match_dimension(Widget w1, Widget w2, const char *n) { Dimension h1, h2; Dimension b1, b2; XtVaGetValues(w1, n, &h1, XtNborderWidth, &b1, NULL); XtVaGetValues(w2, n, &h2, XtNborderWidth, &b2, NULL); h1 += 2 * b1; h2 += 2 * b2; if (h1 > h2) { XtVaSetValues(w2, n, h1 - (2 * b2), NULL); } else if (h2 > h1) { XtVaSetValues(w1, n, h2 - (2 * b1), NULL); } } /* Apply a bitmap to a widget. */ void dialog_apply_bitmap(Widget w, Pixmap p) { Dimension d1; XtVaGetValues(w, XtNheight, &d1, NULL); if (d1 < 10) { XtVaSetValues(w, XtNheight, 10, NULL); } XtVaSetValues(w, XtNleftBitmap, p, NULL); } /* Flip a multi-valued toggle. */ void dialog_flip_toggles(struct toggle_list *toggle_list, Widget w) { int i; /* Flip the widget w to on, and the rest to off. */ for (i = 0; toggle_list->widgets[i] != NULL; i++) { /* Process each widget in the list */ dialog_mark_toggle(*(toggle_list->widgets+i), (*(toggle_list->widgets+i) == w) ? diamond : no_diamond); } } /* * Callback for text source changes. Edits the text to ensure it meets the * specified criteria. */ void dialog_text_callback(Widget w, XtPointer client_data, XtPointer call_data _is_unused) { XawTextBlock b; /* firstPos, length, ptr, format */ static XawTextBlock nullb = { 0, 0, NULL }; XawTextPosition pos = 0; int i; text_t t = *(text_t *)client_data; static bool called_back = false; if (called_back) { return; } called_back = true; while (1) { bool replaced = false; XawTextSourceRead(w, pos, &b, 1024); if (b.length <= 0) { break; } nullb.format = b.format; for (i = 0; i < b.length; i++) { bool bad = false; char c = *(b.ptr + i); switch (t) { case T_NUMERIC: /* Only numbers. */ bad = !isdigit((unsigned char)c); break; case T_HOSTFILE: /* * Only printing characters and spaces; no * leading or trailing blanks. */ bad = !isprint((unsigned char)c) || (!pos && !i && c == ' '); break; case T_UNIXFILE: /* Only printing characters. */ bad = !isprint((unsigned char)c); break; case T_COMMAND: /* Only printing characters. */ bad = !isprint((unsigned char)c); break; default: /* Only printing characters, no spaces. */ bad = !isgraph((unsigned char)c); break; } if (bad) { XawTextSourceReplace(w, pos + i, pos + i + 1, &nullb); pos = 0; replaced = true; break; } } if (replaced) { continue; /* rescan the same block */ } pos += b.length; if (b.length < 1024) { break; } } called_back = false; } /* Register widget sensitivity, based on zero to three bools. */ void dialog_register_sensitivity(Widget w, bool *bvar1, bool bval1, bool *bvar2, bool bval2, bool *bvar3, bool bval3) { sr_t *s; bool f; /* Allocate a structure. */ s = (sr_t *)XtMalloc(sizeof(sr_t)); s->w = w; s->bvar1 = bvar1; s->bval1 = bval1; s->bvar2 = bvar2; s->bval2 = bval2; s->bvar3 = bvar3; s->bval3 = bval3; s->is_value = !strcmp(XtName(w), "value"); s->has_focus = false; /* Link it onto the chain. */ s->next = NULL; if (sr_last != NULL) { sr_last->next = s; } else { *srp = s; } sr_last = s; /* Set up the initial widget sensitivity. */ if (bvar1 == NULL) { f = true; } else { f = (*bvar1 == bval1); if (bvar2 != NULL) { f &= (*bvar2 == bval2); } if (bvar3 != NULL) { f &= (*bvar3 == bval3); } } XtVaSetValues(w, XtNsensitive, f, NULL); } /* Scan the list of registered widgets for a sensitivity change. */ void dialog_check_sensitivity(bool *bvar) { sr_t *s; for (s = *srp; s != NULL; s = s->next) { if (s->bvar1 == bvar || s->bvar2 == bvar || s->bvar3 == bvar) { bool f; f = (s->bvar1 != NULL && (*s->bvar1 == s->bval1)); if (s->bvar2 != NULL) { f &= (*s->bvar2 == s->bval2); } if (s->bvar3 != NULL) { f &= (*s->bvar3 == s->bval3); } XtVaSetValues(s->w, XtNsensitive, f, NULL); /* If it is now insensitive, move the focus. */ if (!f && s->is_value && s->has_focus) { focus_next(s); } } } } /* Move the input focus to the next sensitive value field. */ static void focus_next(sr_t *s) { sr_t *t; bool sen; /* Defocus this widget. */ s->has_focus = false; XawTextDisplayCaret(s->w, False); /* Search after. */ for (t = s->next; t != NULL; t = t->next) { if (t->is_value) { XtVaGetValues(t->w, XtNsensitive, &sen, NULL); if (sen) { break; } } } /* Wrap and search before. */ if (t == NULL) { for (t = *srp; t != s && t != NULL; t = t->next) { if (t->is_value) { XtVaGetValues(t->w, XtNsensitive, &sen, NULL); if (sen) { break; } } } } /* Move the focus. */ if (t != NULL && t != s) { t->has_focus = true; XawTextDisplayCaret(t->w, true); if (focus_widget) { XtSetKeyboardFocus(focus_widget, t->w); } } } /* Mark a toggle. */ void dialog_mark_toggle(Widget w, Pixmap p) { XtVaSetValues(w, XtNleftBitmap, p, NULL); } /* Dialog action procedures. */ /* Proceed to the next input field. */ void PA_dialog_next_xaction(Widget w, XEvent *event _is_unused, String *parms _is_unused, Cardinal *num_parms _is_unused) { sr_t *s; for (s = *srp; s != NULL; s = s->next) { if (s->w == w) { focus_next(s); return; } } } /* Set keyboard focus to an input field. */ void PA_dialog_focus_xaction(Widget w, XEvent *event _is_unused, String *parms _is_unused, Cardinal *num_parms _is_unused) { sr_t *s; /* Remove the focus from the widget that has it now. */ for (s = *srp; s != NULL; s = s->next) { if (s->has_focus) { if (s->w == w) { return; } s->has_focus = false; XawTextDisplayCaret(s->w, False); break; } } /* Find this object. */ for (s = *srp; s != NULL; s = s->next) { if (s->w == w) { break; } } if (s == NULL) { return; } /* Give it the focus. */ s->has_focus = true; XawTextDisplayCaret(w, True); if (focus_widget) { XtSetKeyboardFocus(focus_widget, w); } } suite3270-4.1/x3270/dialog.h000066400000000000000000000055241413735575200152400ustar00rootroot00000000000000/* * Copyright (c) 1996-2009, 2014-2015 Paul Mattes. * Copyright (c) 1995, Dick Altenbern. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the names of Paul Mattes, Dick Altenbern nor their * contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES AND DICK ALTENBERN "AS IS" * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL PAUL MATTES OR DICK ALTENBERN * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, * OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * dialogc.h * Global declarations for dialog.c. */ typedef struct sr { struct sr *next; Widget w; bool *bvar1; bool bval1; bool *bvar2; bool bval2; bool *bvar3; bool bval3; bool is_value; bool has_focus; } sr_t; struct toggle_list { /* List of toggle widgets */ Widget *widgets; }; typedef enum { T_NUMERIC, T_HOSTFILE, T_UNIXFILE, T_COMMAND } text_t; extern text_t t_numeric; extern text_t t_hostfile; extern text_t t_unixfile; extern text_t t_command; extern bool s_true, s_false; void dialog_set(sr_t **, Widget); void dialog_apply_bitmap(Widget w, Pixmap p); void dialog_check_sensitivity(bool *bvar); void dialog_register_sensitivity(Widget w, bool *bvar1, bool bval1, bool *bvar2, bool bval2, bool *bvar3, bool bval3); void dialog_flip_toggles(struct toggle_list *toggle_list, Widget w); void dialog_text_callback(Widget w, XtPointer client_data, XtPointer call_data _is_unused); void dialog_match_dimension(Widget w1, Widget w2, const char *n); void dialog_mark_toggle(Widget w, Pixmap p); void PA_dialog_focus_xaction(Widget w, XEvent *event, String *parms, Cardinal *num_parms); void PA_dialog_next_xaction(Widget w, XEvent *event, String *parms, Cardinal *num_parms); suite3270-4.1/x3270/diamond.bm000066400000000000000000000003321413735575200155530ustar00rootroot00000000000000#define diamond_width 10 #define diamond_height 10 static unsigned char diamond_bits[] = { 0x00, 0x00, 0x10, 0x00, 0x68, 0x00, 0xf4, 0x00, 0xfa, 0x01, 0xfd, 0x03, 0xfa, 0x01, 0xf4, 0x00, 0x68, 0x00, 0x10, 0x00}; suite3270-4.1/x3270/diamond15.bm000066400000000000000000000004371413735575200157270ustar00rootroot00000000000000#define diamond15_width 15 #define diamond15_height 15 static unsigned char diamond15_bits[] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0x03, 0xa8, 0x07, 0xd4, 0x0f, 0xea, 0x1f, 0xf5, 0x3f, 0xfa, 0x7f, 0xf5, 0x3f, 0xea, 0x1f, 0xd4, 0x0f, 0xa8, 0x07, 0x50, 0x03, 0x00, 0x00}; suite3270-4.1/x3270/diamond20.bm000066400000000000000000000007311413735575200157200ustar00rootroot00000000000000#define diamond20_width 20 #define diamond20_height 20 static unsigned char diamond20_bits[] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x80, 0x1a, 0x00, 0x40, 0x3d, 0x00, 0xa0, 0x7e, 0x00, 0x50, 0xff, 0x00, 0xa8, 0xff, 0x01, 0xd4, 0xff, 0x03, 0xea, 0xff, 0x07, 0xf5, 0xff, 0x07, 0xea, 0xff, 0x03, 0xd4, 0xff, 0x01, 0xa8, 0xff, 0x00, 0x50, 0x7f, 0x00, 0xa0, 0x3e, 0x00, 0x40, 0x1d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; suite3270-4.1/x3270/display8.c000066400000000000000000033344621413735575200155420ustar00rootroot00000000000000/* * Copyright (c) 2008-2009, 2014-2015, 2019-2020 Paul Mattes. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of Paul Mattes nor his contributors may be used * to endorse or promote products derived from this software without * specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. */ /* * display8.c * Tables and lookup functions to map Unicode characters to * common X11 and x3270-specific 8-bit display character sets. */ #include "globals.h" #include "3270ds.h" #include "display8.h" #define ISO10646_IX 100 typedef struct { char *cset; /* Character set name */ ucs4_t u[256]; /* UCS-4 values for each display position */ } d8_t; static d8_t d8[] = { { "3270cg-1a", { /* CG 000 */ 0x00000000, 0x000000a0, 0x000020ac, 0x00000000, /* CG 004 */ 0x00000000, 0x00000000, 0x0000f8fd, 0x000000ad, /* CG 008 */ 0x0000003e, 0x0000003c, 0x0000005b, 0x0000005d, /* CG 00c */ 0x00000029, 0x00000028, 0x0000007d, 0x0000007b, /* CG 010 */ 0x00000020, 0x0000003d, 0x00000027, 0x00000022, /* CG 014 */ 0x0000002f, 0x0000005c, 0x0000007c, 0x000000a6, /* CG 018 */ 0x0000003f, 0x00000021, 0x00000024, 0x000000a2, /* CG 01c */ 0x000000a3, 0x000000a5, 0x000000b6, 0x000000a4, /* CG 020 */ 0x00000030, 0x00000031, 0x00000032, 0x00000033, /* CG 024 */ 0x00000034, 0x00000035, 0x00000036, 0x00000037, /* CG 028 */ 0x00000038, 0x00000039, 0x000000df, 0x000000a7, /* CG 02c */ 0x00000023, 0x00000040, 0x00000025, 0x0000005f, /* CG 030 */ 0x00000026, 0x0000002d, 0x0000002e, 0x0000002c, /* CG 034 */ 0x0000003a, 0x0000002b, 0x000000ac, 0x000000af, /* CG 038 */ 0x000000b0, 0x000000b7, 0x0000005e, 0x0000007e, /* CG 03c */ 0x000000a8, 0x00000060, 0x000000b4, 0x000000b8, /* CG 040 */ 0x000000e0, 0x000000e8, 0x000000ec, 0x000000f2, /* CG 044 */ 0x000000f9, 0x000000e3, 0x000000f5, 0x000000ff, /* CG 048 */ 0x000000dd, 0x000000fd, 0x000000e9, 0x000000bc, /* CG 04c */ 0x000000bd, 0x000000be, 0x000000fc, 0x000000e7, /* CG 050 */ 0x000000e4, 0x000000eb, 0x000000ef, 0x000000f6, /* CG 054 */ 0x000000b5, 0x000000e2, 0x000000ea, 0x000000ee, /* CG 058 */ 0x000000f4, 0x000000fb, 0x000000e1, 0x000000d7, /* CG 05c */ 0x000000ed, 0x000000f3, 0x000000fa, 0x000000f1, /* CG 060 */ 0x000000c0, 0x000000c8, 0x000000cc, 0x000000d2, /* CG 064 */ 0x000000d9, 0x000000c3, 0x000000d5, 0x000000b9, /* CG 068 */ 0x000000b2, 0x000000b3, 0x000000aa, 0x000000ba, /* CG 06c */ 0x000000ab, 0x000000bb, 0x000000a1, 0x000000bf, /* CG 070 */ 0x000000c4, 0x000000cb, 0x000000cf, 0x000000d6, /* CG 074 */ 0x000000dc, 0x000000c2, 0x000000ca, 0x000000ce, /* CG 078 */ 0x000000d4, 0x000000db, 0x000000c1, 0x000000c9, /* CG 07c */ 0x000000cd, 0x000000d3, 0x000000da, 0x000000d1, /* CG 080 */ 0x00000061, 0x00000062, 0x00000063, 0x00000064, /* CG 084 */ 0x00000065, 0x00000066, 0x00000067, 0x00000068, /* CG 088 */ 0x00000069, 0x0000006a, 0x0000006b, 0x0000006c, /* CG 08c */ 0x0000006d, 0x0000006e, 0x0000006f, 0x00000070, /* CG 090 */ 0x00000071, 0x00000072, 0x00000073, 0x00000074, /* CG 094 */ 0x00000075, 0x00000076, 0x00000077, 0x00000078, /* CG 098 */ 0x00000079, 0x0000007a, 0x000000e6, 0x000000f8, /* CG 09c */ 0x000000e5, 0x000000f7, 0x0000f8fe, 0x0000f8ff, /* CG 0a0 */ 0x00000041, 0x00000042, 0x00000043, 0x00000044, /* CG 0a4 */ 0x00000045, 0x00000046, 0x00000047, 0x00000048, /* CG 0a8 */ 0x00000049, 0x0000004a, 0x0000004b, 0x0000004c, /* CG 0ac */ 0x0000004d, 0x0000004e, 0x0000004f, 0x00000050, /* CG 0b0 */ 0x00000051, 0x00000052, 0x00000053, 0x00000054, /* CG 0b4 */ 0x00000055, 0x00000056, 0x00000057, 0x00000058, /* CG 0b8 */ 0x00000059, 0x0000005a, 0x000000c6, 0x000000d8, /* CG 0bc */ 0x000000c5, 0x000000c7, 0x0000003b, 0x0000002a, /* CG 0c0 */ 0x00000000, 0x00000000, 0x00000000, 0x00000000, /* CG 0c4 */ 0x00000000, 0x00000000, 0x00000000, 0x00000000, /* CG 0c8 */ 0x00000000, 0x00000000, 0x00000000, 0x00000000, /* CG 0cc */ 0x00000000, 0x00000000, 0x00000000, 0x00000000, /* CG 0d0 */ 0x000000a9, 0x000000ae, 0x00000000, 0x00000000, /* CG 0d4 */ 0x00000000, 0x00000000, 0x000000b1, 0x000000d0, /* CG 0d8 */ 0x00000000, 0x000000de, 0x00000000, 0x00000000, /* CG 0dc */ 0x00000000, 0x00000000, 0x00000000, 0x0000f8fc, /* CG 0e0 */ 0x00000000, 0x00000000, 0x00000000, 0x00000000, /* CG 0e4 */ 0x00000000, 0x00000000, 0x00000000, 0x00000000, /* CG 0e8 */ 0x00000000, 0x00000000, 0x00000000, 0x00000000, /* CG 0ec */ 0x00000000, 0x00000000, 0x00000000, 0x00000000, /* CG 0f0 */ 0x00000000, 0x00000000, 0x00000000, 0x00000000, /* CG 0f4 */ 0x00000000, 0x00000000, 0x00000000, 0x000000f0, /* CG 0f8 */ 0x00000000, 0x000000fe, 0x00000000, 0x00000000, /* CG 0fc */ 0x00000000, 0x00000000, 0x00000000, 0x00000000 } }, { "3270cg-1", { /* CG 000 */ 0x00000000, 0x000000a0, 0x000020ac, 0x00000000, /* CG 004 */ 0x00000000, 0x00000000, 0x0000f8fd, 0x000000ad, /* CG 008 */ 0x0000003e, 0x0000003c, 0x0000005b, 0x0000005d, /* CG 00c */ 0x00000029, 0x00000028, 0x0000007d, 0x0000007b, /* CG 010 */ 0x00000020, 0x0000003d, 0x00000027, 0x00000022, /* CG 014 */ 0x0000002f, 0x0000005c, 0x0000007c, 0x000000a6, /* CG 018 */ 0x0000003f, 0x00000021, 0x00000024, 0x000000a2, /* CG 01c */ 0x000000a3, 0x000000a5, 0x000000b6, 0x000000a4, /* CG 020 */ 0x00000030, 0x00000031, 0x00000032, 0x00000033, /* CG 024 */ 0x00000034, 0x00000035, 0x00000036, 0x00000037, /* CG 028 */ 0x00000038, 0x00000039, 0x000000df, 0x000000a7, /* CG 02c */ 0x00000023, 0x00000040, 0x00000025, 0x0000005f, /* CG 030 */ 0x00000026, 0x0000002d, 0x0000002e, 0x0000002c, /* CG 034 */ 0x0000003a, 0x0000002b, 0x000000ac, 0x000000af, /* CG 038 */ 0x000000b0, 0x000000b7, 0x0000005e, 0x0000007e, /* CG 03c */ 0x000000a8, 0x00000060, 0x000000b4, 0x000000b8, /* CG 040 */ 0x000000e0, 0x000000e8, 0x000000ec, 0x000000f2, /* CG 044 */ 0x000000f9, 0x000000e3, 0x000000f5, 0x000000ff, /* CG 048 */ 0x000000dd, 0x000000fd, 0x000000e9, 0x000000bc, /* CG 04c */ 0x000000bd, 0x000000be, 0x000000fc, 0x000000e7, /* CG 050 */ 0x000000e4, 0x000000eb, 0x000000ef, 0x000000f6, /* CG 054 */ 0x000000b5, 0x000000e2, 0x000000ea, 0x000000ee, /* CG 058 */ 0x000000f4, 0x000000fb, 0x000000e1, 0x000000d7, /* CG 05c */ 0x000000ed, 0x000000f3, 0x000000fa, 0x000000f1, /* CG 060 */ 0x000000c0, 0x000000c8, 0x000000cc, 0x000000d2, /* CG 064 */ 0x000000d9, 0x000000c3, 0x000000d5, 0x000000b9, /* CG 068 */ 0x000000b2, 0x000000b3, 0x000000aa, 0x000000ba, /* CG 06c */ 0x000000ab, 0x000000bb, 0x000000a1, 0x000000bf, /* CG 070 */ 0x000000c4, 0x000000cb, 0x000000cf, 0x000000d6, /* CG 074 */ 0x000000dc, 0x000000c2, 0x000000ca, 0x000000ce, /* CG 078 */ 0x000000d4, 0x000000db, 0x000000c1, 0x000000c9, /* CG 07c */ 0x000000cd, 0x000000d3, 0x000000da, 0x000000d1, /* CG 080 */ 0x00000061, 0x00000062, 0x00000063, 0x00000064, /* CG 084 */ 0x00000065, 0x00000066, 0x00000067, 0x00000068, /* CG 088 */ 0x00000069, 0x0000006a, 0x0000006b, 0x0000006c, /* CG 08c */ 0x0000006d, 0x0000006e, 0x0000006f, 0x00000070, /* CG 090 */ 0x00000071, 0x00000072, 0x00000073, 0x00000074, /* CG 094 */ 0x00000075, 0x00000076, 0x00000077, 0x00000078, /* CG 098 */ 0x00000079, 0x0000007a, 0x000000e6, 0x000000f8, /* CG 09c */ 0x000000e5, 0x000000f7, 0x0000f8fe, 0x0000f8ff, /* CG 0a0 */ 0x00000041, 0x00000042, 0x00000043, 0x00000044, /* CG 0a4 */ 0x00000045, 0x00000046, 0x00000047, 0x00000048, /* CG 0a8 */ 0x00000049, 0x0000004a, 0x0000004b, 0x0000004c, /* CG 0ac */ 0x0000004d, 0x0000004e, 0x0000004f, 0x00000050, /* CG 0b0 */ 0x00000051, 0x00000052, 0x00000053, 0x00000054, /* CG 0b4 */ 0x00000055, 0x00000056, 0x00000057, 0x00000058, /* CG 0b8 */ 0x00000059, 0x0000005a, 0x000000c6, 0x000000d8, /* CG 0bc */ 0x000000c5, 0x000000c7, 0x0000003b, 0x0000002a, /* CG 0c0 */ 0x00000000, 0x00000000, 0x00000000, 0x00000000, /* CG 0c4 */ 0x00000000, 0x00000000, 0x00000000, 0x00000000, /* CG 0c8 */ 0x00000000, 0x00000000, 0x00000000, 0x00000000, /* CG 0cc */ 0x00000000, 0x00000000, 0x00000000, 0x00000000, /* CG 0d0 */ 0x000000a9, 0x000000ae, 0x00000000, 0x00000000, /* CG 0d4 */ 0x00000000, 0x00000000, 0x000000b1, 0x000000d0, /* CG 0d8 */ 0x00000000, 0x000000de, 0x00000000, 0x00000000, /* CG 0dc */ 0x00000000, 0x00000000, 0x00000000, 0x0000f8fc, /* CG 0e0 */ 0x00000000, 0x00000000, 0x00000000, 0x00000000, /* CG 0e4 */ 0x00000000, 0x00000000, 0x00000000, 0x00000000, /* CG 0e8 */ 0x00000000, 0x00000000, 0x00000000, 0x00000000, /* CG 0ec */ 0x00000000, 0x00000000, 0x00000000, 0x00000000, /* CG 0f0 */ 0x00000000, 0x00000000, 0x00000000, 0x00000000, /* CG 0f4 */ 0x00000000, 0x00000000, 0x00000000, 0x000000f0, /* CG 0f8 */ 0x00000000, 0x000000fe, 0x00000000, 0x00000000, /* CG 0fc */ 0x00000000, 0x00000000, 0x00000000, 0x00000000 } }, { "3270cg-7", { /* CG 000 */ 0x00000000, 0x000000a0, 0x00000000, 0x00000000, /* CG 004 */ 0x00000000, 0x00000000, 0x0000f8fd, 0x000000ad, /* CG 008 */ 0x0000003e, 0x0000003c, 0x0000005b, 0x0000005d, /* CG 00c */ 0x00000029, 0x00000028, 0x0000007d, 0x0000007b, /* CG 010 */ 0x00000020, 0x0000003d, 0x00000027, 0x00000022, /* CG 014 */ 0x0000002f, 0x0000005c, 0x0000007c, 0x000000a6, /* CG 018 */ 0x0000003f, 0x00000021, 0x00000024, 0x000000a2, /* CG 01c */ 0x000000a3, 0x000000a5, 0x00000386, 0x000000a4, /* CG 020 */ 0x00000030, 0x00000031, 0x00000032, 0x00000033, /* CG 024 */ 0x00000034, 0x00000035, 0x00000036, 0x00000037, /* CG 028 */ 0x00000038, 0x00000039, 0x000003af, 0x000000a7, /* CG 02c */ 0x00000023, 0x00000040, 0x00000025, 0x0000005f, /* CG 030 */ 0x00000026, 0x0000002d, 0x0000002e, 0x0000002c, /* CG 034 */ 0x0000003a, 0x0000002b, 0x000000ac, 0x000000af, /* CG 038 */ 0x000000b0, 0x000000b7, 0x0000005e, 0x0000007e, /* CG 03c */ 0x000000a8, 0x00000060, 0x000000b4, 0x00000388, /* CG 040 */ 0x000003cb, 0x000003b8, 0x000003bc, 0x000003c2, /* CG 044 */ 0x000003c9, 0x000003b3, 0x000003c5, 0x000000ff, /* CG 048 */ 0x000003ad, 0x000003cd, 0x000003b9, 0x0000038c, /* CG 04c */ 0x000000bd, 0x0000038e, 0x000003cc, 0x000003b7, /* CG 050 */ 0x000003b4, 0x000003bb, 0x000003bf, 0x000003c6, /* CG 054 */ 0x00000385, 0x000003b2, 0x000003ba, 0x000003be, /* CG 058 */ 0x000003c4, 0x000003b0, 0x000003b1, 0x000003a7, /* CG 05c */ 0x000003bd, 0x000003c3, 0x00000390, 0x000003c1, /* CG 060 */ 0x000003ca, 0x00000398, 0x0000039c, 0x000000d2, /* CG 064 */ 0x000003a9, 0x00000393, 0x000003a5, 0x00000389, /* CG 068 */ 0x000000b2, 0x000000b3, 0x000000aa, 0x0000038a, /* CG 06c */ 0x000000ab, 0x000000bb, 0x000000a1, 0x0000038f, /* CG 070 */ 0x00000394, 0x0000039b, 0x0000039f, 0x000003a6, /* CG 074 */ 0x000003ac, 0x00000392, 0x0000039a, 0x0000039e, /* CG 078 */ 0x000003a4, 0x000003ab, 0x00000391, 0x00000399, /* CG 07c */ 0x0000039d, 0x000003a3, 0x000003aa, 0x000003a1, /* CG 080 */ 0x00000061, 0x00000062, 0x00000063, 0x00000064, /* CG 084 */ 0x00000065, 0x00000066, 0x00000067, 0x00000068, /* CG 088 */ 0x00000069, 0x0000006a, 0x0000006b, 0x0000006c, /* CG 08c */ 0x0000006d, 0x0000006e, 0x0000006f, 0x00000070, /* CG 090 */ 0x00000071, 0x00000072, 0x00000073, 0x00000074, /* CG 094 */ 0x00000075, 0x00000076, 0x00000077, 0x00000078, /* CG 098 */ 0x00000079, 0x0000007a, 0x000003b6, 0x000003c8, /* CG 09c */ 0x000003b5, 0x000003c7, 0x0000f8fe, 0x0000f8ff, /* CG 0a0 */ 0x00000041, 0x00000042, 0x00000043, 0x00000044, /* CG 0a4 */ 0x00000045, 0x00000046, 0x00000047, 0x00000048, /* CG 0a8 */ 0x00000049, 0x0000004a, 0x0000004b, 0x0000004c, /* CG 0ac */ 0x0000004d, 0x0000004e, 0x0000004f, 0x00000050, /* CG 0b0 */ 0x00000051, 0x00000052, 0x00000053, 0x00000054, /* CG 0b4 */ 0x00000055, 0x00000056, 0x00000057, 0x00000058, /* CG 0b8 */ 0x00000059, 0x0000005a, 0x00000396, 0x000003a8, /* CG 0bc */ 0x00000395, 0x00000397, 0x0000003b, 0x0000002a, /* CG 0c0 */ 0x00000000, 0x00000000, 0x00000000, 0x00000000, /* CG 0c4 */ 0x00000000, 0x00000000, 0x00000000, 0x00000000, /* CG 0c8 */ 0x00000000, 0x00000000, 0x00000000, 0x00000000, /* CG 0cc */ 0x00000000, 0x00000000, 0x00000000, 0x00000000, /* CG 0d0 */ 0x000000a9, 0x000000ae, 0x00000000, 0x00000000, /* CG 0d4 */ 0x00000000, 0x00000000, 0x000000b1, 0x000003a0, /* CG 0d8 */ 0x00000000, 0x000003ae, 0x00000000, 0x00000000, /* CG 0dc */ 0x00000000, 0x00000000, 0x00000000, 0x0000f8fc, /* CG 0e0 */ 0x00000000, 0x00000000, 0x00000000, 0x00000000, /* CG 0e4 */ 0x00000000, 0x00000000, 0x00000000, 0x00000000, /* CG 0e8 */ 0x00000000, 0x00000000, 0x00000000, 0x00000000, /* CG 0ec */ 0x00000000, 0x00000000, 0x00000000, 0x00000000, /* CG 0f0 */ 0x00000000, 0x00000000, 0x00000000, 0x00000000, /* CG 0f4 */ 0x00000000, 0x00000000, 0x00000000, 0x000000f0, /* CG 0f8 */ 0x00000000, 0x000003ce, 0x00000000, 0x00000000, /* CG 0fc */ 0x00000000, 0x00000000, 0x00000000, 0x00000000 } }, { "3270cg-8", { /* CG 000 */ 0x00000000, 0x000000a0, 0x00000000, 0x00000000, /* CG 004 */ 0x00000000, 0x00000000, 0x0000f8fd, 0x000000ad, /* CG 008 */ 0x0000003e, 0x0000003c, 0x0000005b, 0x0000005d, /* CG 00c */ 0x00000029, 0x00000028, 0x0000007d, 0x0000007b, /* CG 010 */ 0x00000020, 0x0000003d, 0x00000027, 0x00000022, /* CG 014 */ 0x0000002f, 0x0000005c, 0x0000007c, 0x000000a6, /* CG 018 */ 0x0000003f, 0x00000021, 0x00000024, 0x000000a2, /* CG 01c */ 0x000000a3, 0x000000a5, 0x000000b6, 0x000000a4, /* CG 020 */ 0x00000030, 0x00000031, 0x00000032, 0x00000033, /* CG 024 */ 0x00000034, 0x00000035, 0x00000036, 0x00000037, /* CG 028 */ 0x00000038, 0x00000039, 0x000000df, 0x000000a7, /* CG 02c */ 0x00000023, 0x00000040, 0x00000025, 0x0000005f, /* CG 030 */ 0x00000026, 0x0000002d, 0x0000002e, 0x0000002c, /* CG 034 */ 0x0000003a, 0x0000002b, 0x000000ac, 0x000000af, /* CG 038 */ 0x000000b0, 0x000000b7, 0x0000005e, 0x0000007e, /* CG 03c */ 0x000000a8, 0x00000060, 0x000000b4, 0x000000b8, /* CG 040 */ 0x000005d0, 0x000005d8, 0x000005dc, 0x000005e2, /* CG 044 */ 0x000005e9, 0x000005d3, 0x000005e5, 0x000000ff, /* CG 048 */ 0x000000dd, 0x000000fd, 0x000005d9, 0x000000bc, /* CG 04c */ 0x000000bd, 0x000000be, 0x000000fc, 0x000005d7, /* CG 050 */ 0x000005d4, 0x000005db, 0x000005df, 0x000005e6, /* CG 054 */ 0x000000b5, 0x000005d2, 0x000005da, 0x000005de, /* CG 058 */ 0x000005e4, 0x000000fb, 0x000005d1, 0x000000d7, /* CG 05c */ 0x000005dd, 0x000005e3, 0x000005ea, 0x000005e1, /* CG 060 */ 0x000000c0, 0x000000c8, 0x000000cc, 0x000000d2, /* CG 064 */ 0x000000d9, 0x000000c3, 0x000000d5, 0x000000b9, /* CG 068 */ 0x000000b2, 0x000000b3, 0x000000aa, 0x000000ba, /* CG 06c */ 0x000000ab, 0x000000bb, 0x000000a1, 0x000000bf, /* CG 070 */ 0x000000c4, 0x000000cb, 0x000000cf, 0x000000d6, /* CG 074 */ 0x000000dc, 0x000000c2, 0x000000ca, 0x000000ce, /* CG 078 */ 0x000000d4, 0x000000db, 0x000000c1, 0x000000c9, /* CG 07c */ 0x000000cd, 0x000000d3, 0x000000da, 0x000000d1, /* CG 080 */ 0x00000061, 0x00000062, 0x00000063, 0x00000064, /* CG 084 */ 0x00000065, 0x00000066, 0x00000067, 0x00000068, /* CG 088 */ 0x00000069, 0x0000006a, 0x0000006b, 0x0000006c, /* CG 08c */ 0x0000006d, 0x0000006e, 0x0000006f, 0x00000070, /* CG 090 */ 0x00000071, 0x00000072, 0x00000073, 0x00000074, /* CG 094 */ 0x00000075, 0x00000076, 0x00000077, 0x00000078, /* CG 098 */ 0x00000079, 0x0000007a, 0x000005d6, 0x000005e8, /* CG 09c */ 0x000005d5, 0x000005e7, 0x0000f8fe, 0x0000f8ff, /* CG 0a0 */ 0x00000041, 0x00000042, 0x00000043, 0x00000044, /* CG 0a4 */ 0x00000045, 0x00000046, 0x00000047, 0x00000048, /* CG 0a8 */ 0x00000049, 0x0000004a, 0x0000004b, 0x0000004c, /* CG 0ac */ 0x0000004d, 0x0000004e, 0x0000004f, 0x00000050, /* CG 0b0 */ 0x00000051, 0x00000052, 0x00000053, 0x00000054, /* CG 0b4 */ 0x00000055, 0x00000056, 0x00000057, 0x00000058, /* CG 0b8 */ 0x00000059, 0x0000005a, 0x000000c6, 0x000000d8, /* CG 0bc */ 0x000000c5, 0x000000c7, 0x0000003b, 0x0000002a, /* CG 0c0 */ 0x00000000, 0x00000000, 0x00000000, 0x00000000, /* CG 0c4 */ 0x00000000, 0x00000000, 0x00000000, 0x00000000, /* CG 0c8 */ 0x00000000, 0x00000000, 0x00000000, 0x00000000, /* CG 0cc */ 0x00000000, 0x00000000, 0x00000000, 0x00000000, /* CG 0d0 */ 0x000000a9, 0x000000ae, 0x00000000, 0x00000000, /* CG 0d4 */ 0x00000000, 0x00000000, 0x000000b1, 0x000000d0, /* CG 0d8 */ 0x00000000, 0x000000de, 0x00000000, 0x00000000, /* CG 0dc */ 0x00000000, 0x00000000, 0x00000000, 0x0000f8fc, /* CG 0e0 */ 0x00000000, 0x00000000, 0x00000000, 0x00000000, /* CG 0e4 */ 0x00000000, 0x00000000, 0x00000000, 0x00000000, /* CG 0e8 */ 0x00000000, 0x00000000, 0x00000000, 0x00000000, /* CG 0ec */ 0x00000000, 0x00000000, 0x00000000, 0x00000000, /* CG 0f0 */ 0x00000000, 0x00000000, 0x00000000, 0x00000000, /* CG 0f4 */ 0x00000000, 0x00000000, 0x00000000, 0x000005e0, /* CG 0f8 */ 0x00000000, 0x000000fe, 0x00000000, 0x00000000, /* CG 0fc */ 0x00000000, 0x00000000, 0x00000000, 0x00000000 } }, { "iso8859-1", { 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000020, 0x00000021, 0x00000022, 0x00000023, 0x00000024, 0x00000025, 0x00000026, 0x00000027, 0x00000028, 0x00000029, 0x0000002a, 0x0000002b, 0x0000002c, 0x0000002d, 0x0000002e, 0x0000002f, 0x00000030, 0x00000031, 0x00000032, 0x00000033, 0x00000034, 0x00000035, 0x00000036, 0x00000037, 0x00000038, 0x00000039, 0x0000003a, 0x0000003b, 0x0000003c, 0x0000003d, 0x0000003e, 0x0000003f, 0x00000040, 0x00000041, 0x00000042, 0x00000043, 0x00000044, 0x00000045, 0x00000046, 0x00000047, 0x00000048, 0x00000049, 0x0000004a, 0x0000004b, 0x0000004c, 0x0000004d, 0x0000004e, 0x0000004f, 0x00000050, 0x00000051, 0x00000052, 0x00000053, 0x00000054, 0x00000055, 0x00000056, 0x00000057, 0x00000058, 0x00000059, 0x0000005a, 0x0000005b, 0x0000005c, 0x0000005d, 0x0000005e, 0x0000005f, 0x00000060, 0x00000061, 0x00000062, 0x00000063, 0x00000064, 0x00000065, 0x00000066, 0x00000067, 0x00000068, 0x00000069, 0x0000006a, 0x0000006b, 0x0000006c, 0x0000006d, 0x0000006e, 0x0000006f, 0x00000070, 0x00000071, 0x00000072, 0x00000073, 0x00000074, 0x00000075, 0x00000076, 0x00000077, 0x00000078, 0x00000079, 0x0000007a, 0x0000007b, 0x0000007c, 0x0000007d, 0x0000007e, 0x0000007f, 0x00000080, 0x00000081, 0x00000082, 0x00000083, 0x00000084, 0x00000085, 0x00000086, 0x00000087, 0x00000088, 0x00000089, 0x0000008a, 0x0000008b, 0x0000008c, 0x0000008d, 0x0000008e, 0x0000008f, 0x00000090, 0x00000091, 0x00000092, 0x00000093, 0x00000094, 0x00000095, 0x00000096, 0x00000097, 0x00000098, 0x00000099, 0x0000009a, 0x0000009b, 0x0000009c, 0x0000009d, 0x0000009e, 0x0000009f, 0x000000a0, 0x000000a1, 0x000000a2, 0x000000a3, 0x000000a4, 0x000000a5, 0x000000a6, 0x000000a7, 0x000000a8, 0x000000a9, 0x000000aa, 0x000000ab, 0x000000ac, 0x000000ad, 0x000000ae, 0x000000af, 0x000000b0, 0x000000b1, 0x000000b2, 0x000000b3, 0x000000b4, 0x000000b5, 0x000000b6, 0x000000b7, 0x000000b8, 0x000000b9, 0x000000ba, 0x000000bb, 0x000000bc, 0x000000bd, 0x000000be, 0x000000bf, 0x000000c0, 0x000000c1, 0x000000c2, 0x000000c3, 0x000000c4, 0x000000c5, 0x000000c6, 0x000000c7, 0x000000c8, 0x000000c9, 0x000000ca, 0x000000cb, 0x000000cc, 0x000000cd, 0x000000ce, 0x000000cf, 0x000000d0, 0x000000d1, 0x000000d2, 0x000000d3, 0x000000d4, 0x000000d5, 0x000000d6, 0x000000d7, 0x000000d8, 0x000000d9, 0x000000da, 0x000000db, 0x000000dc, 0x000000dd, 0x000000de, 0x000000df, 0x000000e0, 0x000000e1, 0x000000e2, 0x000000e3, 0x000000e4, 0x000000e5, 0x000000e6, 0x000000e7, 0x000000e8, 0x000000e9, 0x000000ea, 0x000000eb, 0x000000ec, 0x000000ed, 0x000000ee, 0x000000ef, 0x000000f0, 0x000000f1, 0x000000f2, 0x000000f3, 0x000000f4, 0x000000f5, 0x000000f6, 0x000000f7, 0x000000f8, 0x000000f9, 0x000000fa, 0x000000fb, 0x000000fc, 0x000000fd, 0x000000fe, 0x000000ff } }, { "iso8859-2", { 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000020, 0x00000021, 0x00000022, 0x00000023, 0x00000024, 0x00000025, 0x00000026, 0x00000027, 0x00000028, 0x00000029, 0x0000002a, 0x0000002b, 0x0000002c, 0x0000002d, 0x0000002e, 0x0000002f, 0x00000030, 0x00000031, 0x00000032, 0x00000033, 0x00000034, 0x00000035, 0x00000036, 0x00000037, 0x00000038, 0x00000039, 0x0000003a, 0x0000003b, 0x0000003c, 0x0000003d, 0x0000003e, 0x0000003f, 0x00000040, 0x00000041, 0x00000042, 0x00000043, 0x00000044, 0x00000045, 0x00000046, 0x00000047, 0x00000048, 0x00000049, 0x0000004a, 0x0000004b, 0x0000004c, 0x0000004d, 0x0000004e, 0x0000004f, 0x00000050, 0x00000051, 0x00000052, 0x00000053, 0x00000054, 0x00000055, 0x00000056, 0x00000057, 0x00000058, 0x00000059, 0x0000005a, 0x0000005b, 0x0000005c, 0x0000005d, 0x0000005e, 0x0000005f, 0x00000060, 0x00000061, 0x00000062, 0x00000063, 0x00000064, 0x00000065, 0x00000066, 0x00000067, 0x00000068, 0x00000069, 0x0000006a, 0x0000006b, 0x0000006c, 0x0000006d, 0x0000006e, 0x0000006f, 0x00000070, 0x00000071, 0x00000072, 0x00000073, 0x00000074, 0x00000075, 0x00000076, 0x00000077, 0x00000078, 0x00000079, 0x0000007a, 0x0000007b, 0x0000007c, 0x0000007d, 0x0000007e, 0x0000007f, 0x00000080, 0x00000081, 0x00000082, 0x00000083, 0x00000084, 0x00000085, 0x00000086, 0x00000087, 0x00000088, 0x00000089, 0x0000008a, 0x0000008b, 0x0000008c, 0x0000008d, 0x0000008e, 0x0000008f, 0x00000090, 0x00000091, 0x00000092, 0x00000093, 0x00000094, 0x00000095, 0x00000096, 0x00000097, 0x00000098, 0x00000099, 0x0000009a, 0x0000009b, 0x0000009c, 0x0000009d, 0x0000009e, 0x0000009f, 0x000000a0, 0x00000104, 0x000002d8, 0x00000141, 0x000000a4, 0x0000013d, 0x0000015a, 0x000000a7, 0x000000a8, 0x00000160, 0x0000015e, 0x00000164, 0x00000179, 0x000000ad, 0x0000017d, 0x0000017b, 0x000000b0, 0x00000105, 0x000002db, 0x00000142, 0x000000b4, 0x0000013e, 0x0000015b, 0x000002c7, 0x000000b8, 0x00000161, 0x0000015f, 0x00000165, 0x0000017a, 0x000002dd, 0x0000017e, 0x0000017c, 0x00000154, 0x000000c1, 0x000000c2, 0x00000102, 0x000000c4, 0x00000139, 0x00000106, 0x000000c7, 0x0000010c, 0x000000c9, 0x00000118, 0x000000cb, 0x0000011a, 0x000000cd, 0x000000ce, 0x0000010e, 0x00000110, 0x00000143, 0x00000147, 0x000000d3, 0x000000d4, 0x00000150, 0x000000d6, 0x000000d7, 0x00000158, 0x0000016e, 0x000000da, 0x00000170, 0x000000dc, 0x000000dd, 0x00000162, 0x000000df, 0x00000155, 0x000000e1, 0x000000e2, 0x00000103, 0x000000e4, 0x0000013a, 0x00000107, 0x000000e7, 0x0000010d, 0x000000e9, 0x00000119, 0x000000eb, 0x0000011b, 0x000000ed, 0x000000ee, 0x0000010f, 0x00000111, 0x00000144, 0x00000148, 0x000000f3, 0x000000f4, 0x00000151, 0x000000f6, 0x000000f7, 0x00000159, 0x0000016f, 0x000000fa, 0x00000171, 0x000000fc, 0x000000fd, 0x00000163, 0x000002d9 } }, { "iso8859-7", { 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000020, 0x00000021, 0x00000022, 0x00000023, 0x00000024, 0x00000025, 0x00000026, 0x00000027, 0x00000028, 0x00000029, 0x0000002a, 0x0000002b, 0x0000002c, 0x0000002d, 0x0000002e, 0x0000002f, 0x00000030, 0x00000031, 0x00000032, 0x00000033, 0x00000034, 0x00000035, 0x00000036, 0x00000037, 0x00000038, 0x00000039, 0x0000003a, 0x0000003b, 0x0000003c, 0x0000003d, 0x0000003e, 0x0000003f, 0x00000040, 0x00000041, 0x00000042, 0x00000043, 0x00000044, 0x00000045, 0x00000046, 0x00000047, 0x00000048, 0x00000049, 0x0000004a, 0x0000004b, 0x0000004c, 0x0000004d, 0x0000004e, 0x0000004f, 0x00000050, 0x00000051, 0x00000052, 0x00000053, 0x00000054, 0x00000055, 0x00000056, 0x00000057, 0x00000058, 0x00000059, 0x0000005a, 0x0000005b, 0x0000005c, 0x0000005d, 0x0000005e, 0x0000005f, 0x00000060, 0x00000061, 0x00000062, 0x00000063, 0x00000064, 0x00000065, 0x00000066, 0x00000067, 0x00000068, 0x00000069, 0x0000006a, 0x0000006b, 0x0000006c, 0x0000006d, 0x0000006e, 0x0000006f, 0x00000070, 0x00000071, 0x00000072, 0x00000073, 0x00000074, 0x00000075, 0x00000076, 0x00000077, 0x00000078, 0x00000079, 0x0000007a, 0x0000007b, 0x0000007c, 0x0000007d, 0x0000007e, 0x0000007f, 0x00000080, 0x00000081, 0x00000082, 0x00000083, 0x00000084, 0x00000085, 0x00000086, 0x00000087, 0x00000088, 0x00000089, 0x0000008a, 0x0000008b, 0x0000008c, 0x0000008d, 0x0000008e, 0x0000008f, 0x00000090, 0x00000091, 0x00000092, 0x00000093, 0x00000094, 0x00000095, 0x00000096, 0x00000097, 0x00000098, 0x00000099, 0x0000009a, 0x0000009b, 0x0000009c, 0x0000009d, 0x0000009e, 0x0000009f, 0x000000a0, 0x00002018, 0x00002019, 0x000000a3, 0x000020ac, 0x000020af, 0x000000a6, 0x000000a7, 0x000000a8, 0x000000a9, 0x0000037a, 0x000000ab, 0x000000ac, 0x000000ad, 0x000000ad, 0x00002015, 0x000000b0, 0x000000b1, 0x000000b2, 0x000000b3, 0x00000384, 0x00000385, 0x00000386, 0x000000b7, 0x00000388, 0x00000389, 0x0000038a, 0x000000bb, 0x0000038c, 0x000000bd, 0x0000038e, 0x0000038f, 0x00000390, 0x00000391, 0x00000392, 0x00000393, 0x00000394, 0x00000395, 0x00000396, 0x00000397, 0x00000398, 0x00000399, 0x0000039a, 0x0000039b, 0x0000039c, 0x0000039d, 0x0000039e, 0x0000039f, 0x000003a0, 0x000003a1, 0x000003a1, 0x000003a3, 0x000003a4, 0x000003a5, 0x000003a6, 0x000003a7, 0x000003a8, 0x000003a9, 0x000003aa, 0x000003ab, 0x000003ac, 0x000003ad, 0x000003ae, 0x000003af, 0x000003b0, 0x000003b1, 0x000003b2, 0x000003b3, 0x000003b4, 0x000003b5, 0x000003b6, 0x000003b7, 0x000003b8, 0x000003b9, 0x000003ba, 0x000003bb, 0x000003bc, 0x000003bd, 0x000003be, 0x000003bf, 0x000003c0, 0x000003c1, 0x000003c2, 0x000003c3, 0x000003c4, 0x000003c5, 0x000003c6, 0x000003c7, 0x000003c8, 0x000003c9, 0x000003ca, 0x000003cb, 0x000003cc, 0x000003cd, 0x000003ce, 0x000003ce } }, { "iso8859-8", { 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000020, 0x00000021, 0x00000022, 0x00000023, 0x00000024, 0x00000025, 0x00000026, 0x00000027, 0x00000028, 0x00000029, 0x0000002a, 0x0000002b, 0x0000002c, 0x0000002d, 0x0000002e, 0x0000002f, 0x00000030, 0x00000031, 0x00000032, 0x00000033, 0x00000034, 0x00000035, 0x00000036, 0x00000037, 0x00000038, 0x00000039, 0x0000003a, 0x0000003b, 0x0000003c, 0x0000003d, 0x0000003e, 0x0000003f, 0x00000040, 0x00000041, 0x00000042, 0x00000043, 0x00000044, 0x00000045, 0x00000046, 0x00000047, 0x00000048, 0x00000049, 0x0000004a, 0x0000004b, 0x0000004c, 0x0000004d, 0x0000004e, 0x0000004f, 0x00000050, 0x00000051, 0x00000052, 0x00000053, 0x00000054, 0x00000055, 0x00000056, 0x00000057, 0x00000058, 0x00000059, 0x0000005a, 0x0000005b, 0x0000005c, 0x0000005d, 0x0000005e, 0x0000005f, 0x00000060, 0x00000061, 0x00000062, 0x00000063, 0x00000064, 0x00000065, 0x00000066, 0x00000067, 0x00000068, 0x00000069, 0x0000006a, 0x0000006b, 0x0000006c, 0x0000006d, 0x0000006e, 0x0000006f, 0x00000070, 0x00000071, 0x00000072, 0x00000073, 0x00000074, 0x00000075, 0x00000076, 0x00000077, 0x00000078, 0x00000079, 0x0000007a, 0x0000007b, 0x0000007c, 0x0000007d, 0x0000007e, 0x0000007f, 0x00000080, 0x00000081, 0x00000082, 0x00000083, 0x00000084, 0x00000085, 0x00000086, 0x00000087, 0x00000088, 0x00000089, 0x0000008a, 0x0000008b, 0x0000008c, 0x0000008d, 0x0000008e, 0x0000008f, 0x00000090, 0x00000091, 0x00000092, 0x00000093, 0x00000094, 0x00000095, 0x00000096, 0x00000097, 0x00000098, 0x00000099, 0x0000009a, 0x0000009b, 0x0000009c, 0x0000009d, 0x0000009e, 0x0000009f, 0x000000a0, 0x000000a0, 0x000000a2, 0x000000a3, 0x000000a4, 0x000000a5, 0x000000a6, 0x000000a7, 0x000000a8, 0x000000a9, 0x000000d7, 0x000000ab, 0x000000ac, 0x000000ad, 0x000000ae, 0x000000af, 0x000000b0, 0x000000b1, 0x000000b2, 0x000000b3, 0x000000b4, 0x000000b5, 0x000000b6, 0x000000b7, 0x000000b8, 0x000000b9, 0x000000f7, 0x000000bb, 0x000000bc, 0x000000bd, 0x000000be, 0x000000be, 0x000000be, 0x000000be, 0x000000be, 0x000000be, 0x000000be, 0x000000be, 0x000000be, 0x000000be, 0x000000be, 0x000000be, 0x000000be, 0x000000be, 0x000000be, 0x000000be, 0x000000be, 0x000000be, 0x000000be, 0x000000be, 0x000000be, 0x000000be, 0x000000be, 0x000000be, 0x000000be, 0x000000be, 0x000000be, 0x000000be, 0x000000be, 0x000000be, 0x000000be, 0x000000be, 0x000000be, 0x00002017, 0x000005d0, 0x000005d1, 0x000005d2, 0x000005d3, 0x000005d4, 0x000005d5, 0x000005d6, 0x000005d7, 0x000005d8, 0x000005d9, 0x000005da, 0x000005db, 0x000005dc, 0x000005dd, 0x000005de, 0x000005df, 0x000005e0, 0x000005e1, 0x000005e2, 0x000005e3, 0x000005e4, 0x000005e5, 0x000005e6, 0x000005e7, 0x000005e8, 0x000005e9, 0x000005ea, 0x000005ea, 0x000005ea, 0x0000200e, 0x0000200f, 0x0000200f } }, { "iso8859-9", { 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000020, 0x00000021, 0x00000022, 0x00000023, 0x00000024, 0x00000025, 0x00000026, 0x00000027, 0x00000028, 0x00000029, 0x0000002a, 0x0000002b, 0x0000002c, 0x0000002d, 0x0000002e, 0x0000002f, 0x00000030, 0x00000031, 0x00000032, 0x00000033, 0x00000034, 0x00000035, 0x00000036, 0x00000037, 0x00000038, 0x00000039, 0x0000003a, 0x0000003b, 0x0000003c, 0x0000003d, 0x0000003e, 0x0000003f, 0x00000040, 0x00000041, 0x00000042, 0x00000043, 0x00000044, 0x00000045, 0x00000046, 0x00000047, 0x00000048, 0x00000049, 0x0000004a, 0x0000004b, 0x0000004c, 0x0000004d, 0x0000004e, 0x0000004f, 0x00000050, 0x00000051, 0x00000052, 0x00000053, 0x00000054, 0x00000055, 0x00000056, 0x00000057, 0x00000058, 0x00000059, 0x0000005a, 0x0000005b, 0x0000005c, 0x0000005d, 0x0000005e, 0x0000005f, 0x00000060, 0x00000061, 0x00000062, 0x00000063, 0x00000064, 0x00000065, 0x00000066, 0x00000067, 0x00000068, 0x00000069, 0x0000006a, 0x0000006b, 0x0000006c, 0x0000006d, 0x0000006e, 0x0000006f, 0x00000070, 0x00000071, 0x00000072, 0x00000073, 0x00000074, 0x00000075, 0x00000076, 0x00000077, 0x00000078, 0x00000079, 0x0000007a, 0x0000007b, 0x0000007c, 0x0000007d, 0x0000007e, 0x0000007f, 0x00000080, 0x00000081, 0x00000082, 0x00000083, 0x00000084, 0x00000085, 0x00000086, 0x00000087, 0x00000088, 0x00000089, 0x0000008a, 0x0000008b, 0x0000008c, 0x0000008d, 0x0000008e, 0x0000008f, 0x00000090, 0x00000091, 0x00000092, 0x00000093, 0x00000094, 0x00000095, 0x00000096, 0x00000097, 0x00000098, 0x00000099, 0x0000009a, 0x0000009b, 0x0000009c, 0x0000009d, 0x0000009e, 0x0000009f, 0x000000a0, 0x000000a1, 0x000000a2, 0x000000a3, 0x000000a4, 0x000000a5, 0x000000a6, 0x000000a7, 0x000000a8, 0x000000a9, 0x000000aa, 0x000000ab, 0x000000ac, 0x000000ad, 0x000000ae, 0x000000af, 0x000000b0, 0x000000b1, 0x000000b2, 0x000000b3, 0x000000b4, 0x000000b5, 0x000000b6, 0x000000b7, 0x000000b8, 0x000000b9, 0x000000ba, 0x000000bb, 0x000000bc, 0x000000bd, 0x000000be, 0x000000bf, 0x000000c0, 0x000000c1, 0x000000c2, 0x000000c3, 0x000000c4, 0x000000c5, 0x000000c6, 0x000000c7, 0x000000c8, 0x000000c9, 0x000000ca, 0x000000cb, 0x000000cc, 0x000000cd, 0x000000ce, 0x000000cf, 0x0000011e, 0x000000d1, 0x000000d2, 0x000000d3, 0x000000d4, 0x000000d5, 0x000000d6, 0x000000d7, 0x000000d8, 0x000000d9, 0x000000da, 0x000000db, 0x000000dc, 0x00000130, 0x0000015e, 0x000000df, 0x000000e0, 0x000000e1, 0x000000e2, 0x000000e3, 0x000000e4, 0x000000e5, 0x000000e6, 0x000000e7, 0x000000e8, 0x000000e9, 0x000000ea, 0x000000eb, 0x000000ec, 0x000000ed, 0x000000ee, 0x000000ef, 0x0000011f, 0x000000f1, 0x000000f2, 0x000000f3, 0x000000f4, 0x000000f5, 0x000000f6, 0x000000f7, 0x000000f8, 0x000000f9, 0x000000fa, 0x000000fb, 0x000000fc, 0x00000131, 0x0000015f, 0x000000ff } }, { "iso8859-11", { 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000020, 0x00000021, 0x00000022, 0x00000023, 0x00000024, 0x00000025, 0x00000026, 0x00000027, 0x00000028, 0x00000029, 0x0000002a, 0x0000002b, 0x0000002c, 0x0000002d, 0x0000002e, 0x0000002f, 0x00000030, 0x00000031, 0x00000032, 0x00000033, 0x00000034, 0x00000035, 0x00000036, 0x00000037, 0x00000038, 0x00000039, 0x0000003a, 0x0000003b, 0x0000003c, 0x0000003d, 0x0000003e, 0x0000003f, 0x00000040, 0x00000041, 0x00000042, 0x00000043, 0x00000044, 0x00000045, 0x00000046, 0x00000047, 0x00000048, 0x00000049, 0x0000004a, 0x0000004b, 0x0000004c, 0x0000004d, 0x0000004e, 0x0000004f, 0x00000050, 0x00000051, 0x00000052, 0x00000053, 0x00000054, 0x00000055, 0x00000056, 0x00000057, 0x00000058, 0x00000059, 0x0000005a, 0x0000005b, 0x0000005c, 0x0000005d, 0x0000005e, 0x0000005f, 0x00000060, 0x00000061, 0x00000062, 0x00000063, 0x00000064, 0x00000065, 0x00000066, 0x00000067, 0x00000068, 0x00000069, 0x0000006a, 0x0000006b, 0x0000006c, 0x0000006d, 0x0000006e, 0x0000006f, 0x00000070, 0x00000071, 0x00000072, 0x00000073, 0x00000074, 0x00000075, 0x00000076, 0x00000077, 0x00000078, 0x00000079, 0x0000007a, 0x0000007b, 0x0000007c, 0x0000007d, 0x0000007e, 0x0000007f, 0x00000080, 0x00000081, 0x00000082, 0x00000083, 0x00000084, 0x00000085, 0x00000086, 0x00000087, 0x00000088, 0x00000089, 0x0000008a, 0x0000008b, 0x0000008c, 0x0000008d, 0x0000008e, 0x0000008f, 0x00000090, 0x00000091, 0x00000092, 0x00000093, 0x00000094, 0x00000095, 0x00000096, 0x00000097, 0x00000098, 0x00000099, 0x0000009a, 0x0000009b, 0x0000009c, 0x0000009d, 0x0000009e, 0x0000009f, 0x000000a0, 0x00000e01, 0x00000e02, 0x00000e03, 0x00000e04, 0x00000e05, 0x00000e06, 0x00000e07, 0x00000e08, 0x00000e09, 0x00000e0a, 0x00000e0b, 0x00000e0c, 0x00000e0d, 0x00000e0e, 0x00000e0f, 0x00000e10, 0x00000e11, 0x00000e12, 0x00000e13, 0x00000e14, 0x00000e15, 0x00000e16, 0x00000e17, 0x00000e18, 0x00000e19, 0x00000e1a, 0x00000e1b, 0x00000e1c, 0x00000e1d, 0x00000e1e, 0x00000e1f, 0x00000e20, 0x00000e21, 0x00000e22, 0x00000e23, 0x00000e24, 0x00000e25, 0x00000e26, 0x00000e27, 0x00000e28, 0x00000e29, 0x00000e2a, 0x00000e2b, 0x00000e2c, 0x00000e2d, 0x00000e2e, 0x00000e2f, 0x00000e30, 0x00000e31, 0x00000e32, 0x00000e33, 0x00000e34, 0x00000e35, 0x00000e36, 0x00000e37, 0x00000e38, 0x00000e39, 0x00000e3a, 0x00000e3a, 0x00000e3a, 0x00000e3a, 0x00000e3a, 0x00000e3f, 0x00000e40, 0x00000e41, 0x00000e42, 0x00000e43, 0x00000e44, 0x00000e45, 0x00000e46, 0x00000e47, 0x00000e48, 0x00000e49, 0x00000e4a, 0x00000e4b, 0x00000e4c, 0x00000e4d, 0x00000e4e, 0x00000e4f, 0x00000e50, 0x00000e51, 0x00000e52, 0x00000e53, 0x00000e54, 0x00000e55, 0x00000e56, 0x00000e57, 0x00000e58, 0x00000e59, 0x00000e5a, 0x00000e5b, 0x00000e5b, 0x00000e5b, 0x00000e5b, 0x00000e5b } }, { "iso8859-15", { 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000020, 0x00000021, 0x00000022, 0x00000023, 0x00000024, 0x00000025, 0x00000026, 0x00000027, 0x00000028, 0x00000029, 0x0000002a, 0x0000002b, 0x0000002c, 0x0000002d, 0x0000002e, 0x0000002f, 0x00000030, 0x00000031, 0x00000032, 0x00000033, 0x00000034, 0x00000035, 0x00000036, 0x00000037, 0x00000038, 0x00000039, 0x0000003a, 0x0000003b, 0x0000003c, 0x0000003d, 0x0000003e, 0x0000003f, 0x00000040, 0x00000041, 0x00000042, 0x00000043, 0x00000044, 0x00000045, 0x00000046, 0x00000047, 0x00000048, 0x00000049, 0x0000004a, 0x0000004b, 0x0000004c, 0x0000004d, 0x0000004e, 0x0000004f, 0x00000050, 0x00000051, 0x00000052, 0x00000053, 0x00000054, 0x00000055, 0x00000056, 0x00000057, 0x00000058, 0x00000059, 0x0000005a, 0x0000005b, 0x0000005c, 0x0000005d, 0x0000005e, 0x0000005f, 0x00000060, 0x00000061, 0x00000062, 0x00000063, 0x00000064, 0x00000065, 0x00000066, 0x00000067, 0x00000068, 0x00000069, 0x0000006a, 0x0000006b, 0x0000006c, 0x0000006d, 0x0000006e, 0x0000006f, 0x00000070, 0x00000071, 0x00000072, 0x00000073, 0x00000074, 0x00000075, 0x00000076, 0x00000077, 0x00000078, 0x00000079, 0x0000007a, 0x0000007b, 0x0000007c, 0x0000007d, 0x0000007e, 0x0000007f, 0x00000080, 0x00000081, 0x00000082, 0x00000083, 0x00000084, 0x00000085, 0x00000086, 0x00000087, 0x00000088, 0x00000089, 0x0000008a, 0x0000008b, 0x0000008c, 0x0000008d, 0x0000008e, 0x0000008f, 0x00000090, 0x00000091, 0x00000092, 0x00000093, 0x00000094, 0x00000095, 0x00000096, 0x00000097, 0x00000098, 0x00000099, 0x0000009a, 0x0000009b, 0x0000009c, 0x0000009d, 0x0000009e, 0x0000009f, 0x000000a0, 0x000000a1, 0x000000a2, 0x000000a3, 0x000020ac, 0x000000a5, 0x00000160, 0x000000a7, 0x00000161, 0x000000a9, 0x000000aa, 0x000000ab, 0x000000ac, 0x000000ad, 0x000000ae, 0x000000af, 0x000000b0, 0x000000b1, 0x000000b2, 0x000000b3, 0x0000017d, 0x000000b5, 0x000000b6, 0x000000b7, 0x0000017e, 0x000000b9, 0x000000ba, 0x000000bb, 0x00000152, 0x00000153, 0x00000178, 0x000000bf, 0x000000c0, 0x000000c1, 0x000000c2, 0x000000c3, 0x000000c4, 0x000000c5, 0x000000c6, 0x000000c7, 0x000000c8, 0x000000c9, 0x000000ca, 0x000000cb, 0x000000cc, 0x000000cd, 0x000000ce, 0x000000cf, 0x000000d0, 0x000000d1, 0x000000d2, 0x000000d3, 0x000000d4, 0x000000d5, 0x000000d6, 0x000000d7, 0x000000d8, 0x000000d9, 0x000000da, 0x000000db, 0x000000dc, 0x000000dd, 0x000000de, 0x000000df, 0x000000e0, 0x000000e1, 0x000000e2, 0x000000e3, 0x000000e4, 0x000000e5, 0x000000e6, 0x000000e7, 0x000000e8, 0x000000e9, 0x000000ea, 0x000000eb, 0x000000ec, 0x000000ed, 0x000000ee, 0x000000ef, 0x000000f0, 0x000000f1, 0x000000f2, 0x000000f3, 0x000000f4, 0x000000f5, 0x000000f6, 0x000000f7, 0x000000f8, 0x000000f9, 0x000000fa, 0x000000fb, 0x000000fc, 0x000000fd, 0x000000fe, 0x000000ff } }, { "koi8-r", { 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000020, 0x00000021, 0x00000022, 0x00000023, 0x00000024, 0x00000025, 0x00000026, 0x00000027, 0x00000028, 0x00000029, 0x0000002a, 0x0000002b, 0x0000002c, 0x0000002d, 0x0000002e, 0x0000002f, 0x00000030, 0x00000031, 0x00000032, 0x00000033, 0x00000034, 0x00000035, 0x00000036, 0x00000037, 0x00000038, 0x00000039, 0x0000003a, 0x0000003b, 0x0000003c, 0x0000003d, 0x0000003e, 0x0000003f, 0x00000040, 0x00000041, 0x00000042, 0x00000043, 0x00000044, 0x00000045, 0x00000046, 0x00000047, 0x00000048, 0x00000049, 0x0000004a, 0x0000004b, 0x0000004c, 0x0000004d, 0x0000004e, 0x0000004f, 0x00000050, 0x00000051, 0x00000052, 0x00000053, 0x00000054, 0x00000055, 0x00000056, 0x00000057, 0x00000058, 0x00000059, 0x0000005a, 0x0000005b, 0x0000005c, 0x0000005d, 0x0000005e, 0x0000005f, 0x00000060, 0x00000061, 0x00000062, 0x00000063, 0x00000064, 0x00000065, 0x00000066, 0x00000067, 0x00000068, 0x00000069, 0x0000006a, 0x0000006b, 0x0000006c, 0x0000006d, 0x0000006e, 0x0000006f, 0x00000070, 0x00000071, 0x00000072, 0x00000073, 0x00000074, 0x00000075, 0x00000076, 0x00000077, 0x00000078, 0x00000079, 0x0000007a, 0x0000007b, 0x0000007c, 0x0000007d, 0x0000007e, 0x0000007f, 0x00002500, 0x00002502, 0x0000250c, 0x00002510, 0x00002514, 0x00002518, 0x0000251c, 0x00002524, 0x0000252c, 0x00002534, 0x0000253c, 0x00002580, 0x00002584, 0x00002588, 0x0000258c, 0x00002590, 0x00002591, 0x00002592, 0x00002593, 0x00002320, 0x000025a0, 0x00002219, 0x0000221a, 0x00002248, 0x00002264, 0x00002265, 0x000000a0, 0x00002321, 0x000000b0, 0x000000b2, 0x000000b7, 0x000000f7, 0x00002550, 0x00002551, 0x00002552, 0x00000451, 0x00002553, 0x00002554, 0x00002555, 0x00002556, 0x00002557, 0x00002558, 0x00002559, 0x0000255a, 0x0000255b, 0x0000255c, 0x0000255d, 0x0000255e, 0x0000255f, 0x00002560, 0x00002561, 0x00000401, 0x00002562, 0x00002563, 0x00002564, 0x00002565, 0x00002566, 0x00002567, 0x00002568, 0x00002569, 0x0000256a, 0x0000256b, 0x0000256c, 0x000000a9, 0x0000044e, 0x00000430, 0x00000431, 0x00000446, 0x00000434, 0x00000435, 0x00000444, 0x00000433, 0x00000445, 0x00000438, 0x00000439, 0x0000043a, 0x0000043b, 0x0000043c, 0x0000043d, 0x0000043e, 0x0000043f, 0x0000044f, 0x00000440, 0x00000441, 0x00000442, 0x00000443, 0x00000436, 0x00000432, 0x0000044c, 0x0000044b, 0x00000437, 0x00000448, 0x0000044d, 0x00000449, 0x00000447, 0x0000044a, 0x0000042e, 0x00000410, 0x00000411, 0x00000426, 0x00000414, 0x00000415, 0x00000424, 0x00000413, 0x00000425, 0x00000418, 0x00000419, 0x0000041a, 0x0000041b, 0x0000041c, 0x0000041d, 0x0000041e, 0x0000041f, 0x0000042f, 0x00000420, 0x00000421, 0x00000422, 0x00000423, 0x00000416, 0x00000412, 0x0000042c, 0x0000042b, 0x00000417, 0x00000428, 0x0000042d, 0x00000429, 0x00000427, 0x0000042a } }, { "jisx0201.1976-0", { 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000020, 0x00000021, 0x00000022, 0x00000023, 0x00000024, 0x00000025, 0x00000026, 0x00000027, 0x00000028, 0x00000029, 0x0000002a, 0x0000002b, 0x0000002c, 0x0000002d, 0x0000002e, 0x0000002f, 0x00000030, 0x00000031, 0x00000032, 0x00000033, 0x00000034, 0x00000035, 0x00000036, 0x00000037, 0x00000038, 0x00000039, 0x0000003a, 0x0000003b, 0x0000003c, 0x0000003d, 0x0000003e, 0x0000003f, 0x00000040, 0x00000041, 0x00000042, 0x00000043, 0x00000044, 0x00000045, 0x00000046, 0x00000047, 0x00000048, 0x00000049, 0x0000004a, 0x0000004b, 0x0000004c, 0x0000004d, 0x0000004e, 0x0000004f, 0x00000050, 0x00000051, 0x00000052, 0x00000053, 0x00000054, 0x00000055, 0x00000056, 0x00000057, 0x00000058, 0x00000059, 0x0000005a, 0x0000005b, 0x000000a5, 0x0000005d, 0x0000005e, 0x0000005f, 0x00000060, 0x00000061, 0x00000062, 0x00000063, 0x00000064, 0x00000065, 0x00000066, 0x00000067, 0x00000068, 0x00000069, 0x0000006a, 0x0000006b, 0x0000006c, 0x0000006d, 0x0000006e, 0x0000006f, 0x00000070, 0x00000071, 0x00000072, 0x00000073, 0x00000074, 0x00000075, 0x00000076, 0x00000077, 0x00000078, 0x00000079, 0x0000007a, 0x0000007b, 0x0000007c, 0x0000007d, 0x0000203e, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0000ff61, 0x0000ff62, 0x0000ff63, 0x0000ff64, 0x0000ff65, 0x0000ff66, 0x0000ff67, 0x0000ff68, 0x0000ff69, 0x0000ff6a, 0x0000ff6b, 0x0000ff6c, 0x0000ff6d, 0x0000ff6e, 0x0000ff6f, 0x0000ff70, 0x0000ff71, 0x0000ff72, 0x0000ff73, 0x0000ff74, 0x0000ff75, 0x0000ff76, 0x0000ff77, 0x0000ff78, 0x0000ff79, 0x0000ff7a, 0x0000ff7b, 0x0000ff7c, 0x0000ff7d, 0x0000ff7e, 0x0000ff7f, 0x0000ff80, 0x0000ff81, 0x0000ff82, 0x0000ff83, 0x0000ff84, 0x0000ff85, 0x0000ff86, 0x0000ff87, 0x0000ff88, 0x0000ff89, 0x0000ff8a, 0x0000ff8b, 0x0000ff8c, 0x0000ff8d, 0x0000ff8e, 0x0000ff8f, 0x0000ff90, 0x0000ff91, 0x0000ff92, 0x0000ff93, 0x0000ff94, 0x0000ff95, 0x0000ff96, 0x0000ff97, 0x0000ff98, 0x0000ff99, 0x0000ff9a, 0x0000ff9b, 0x0000ff9c, 0x0000ff9d, 0x0000ff9e, 0x0000ff9f, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000 } }, { "tis620.2529-0", { 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000020, 0x00000021, 0x00000022, 0x00000023, 0x00000024, 0x00000025, 0x00000026, 0x00000027, 0x00000028, 0x00000029, 0x0000002a, 0x0000002b, 0x0000002c, 0x0000002d, 0x0000002e, 0x0000002f, 0x00000030, 0x00000031, 0x00000032, 0x00000033, 0x00000034, 0x00000035, 0x00000036, 0x00000037, 0x00000038, 0x00000039, 0x0000003a, 0x0000003b, 0x0000003c, 0x0000003d, 0x0000003e, 0x0000003f, 0x00000040, 0x00000041, 0x00000042, 0x00000043, 0x00000044, 0x00000045, 0x00000046, 0x00000047, 0x00000048, 0x00000049, 0x0000004a, 0x0000004b, 0x0000004c, 0x0000004d, 0x0000004e, 0x0000004f, 0x00000050, 0x00000051, 0x00000052, 0x00000053, 0x00000054, 0x00000055, 0x00000056, 0x00000057, 0x00000058, 0x00000059, 0x0000005a, 0x0000005b, 0x0000005c, 0x0000005d, 0x0000005e, 0x0000005f, 0x00000060, 0x00000061, 0x00000062, 0x00000063, 0x00000064, 0x00000065, 0x00000066, 0x00000067, 0x00000068, 0x00000069, 0x0000006a, 0x0000006b, 0x0000006c, 0x0000006d, 0x0000006e, 0x0000006f, 0x00000070, 0x00000071, 0x00000072, 0x00000073, 0x00000074, 0x00000075, 0x00000076, 0x00000077, 0x00000078, 0x00000079, 0x0000007a, 0x0000007b, 0x0000007c, 0x0000007d, 0x0000007e, 0x0000007f, 0x0000007f, 0x0000007f, 0x0000007f, 0x0000007f, 0x0000007f, 0x0000007f, 0x0000007f, 0x0000007f, 0x0000007f, 0x0000007f, 0x0000007f, 0x0000007f, 0x0000007f, 0x0000007f, 0x0000007f, 0x0000007f, 0x0000007f, 0x0000007f, 0x0000007f, 0x0000007f, 0x0000007f, 0x0000007f, 0x0000007f, 0x0000007f, 0x0000007f, 0x0000007f, 0x0000007f, 0x0000007f, 0x0000007f, 0x0000007f, 0x0000007f, 0x0000007f, 0x0000007f, 0x00000e01, 0x00000e02, 0x00000e03, 0x00000e04, 0x00000e05, 0x00000e06, 0x00000e07, 0x00000e08, 0x00000e09, 0x00000e0a, 0x00000e0b, 0x00000e0c, 0x00000e0d, 0x00000e0e, 0x00000e0f, 0x00000e10, 0x00000e11, 0x00000e12, 0x00000e13, 0x00000e14, 0x00000e15, 0x00000e16, 0x00000e17, 0x00000e18, 0x00000e19, 0x00000e1a, 0x00000e1b, 0x00000e1c, 0x00000e1d, 0x00000e1e, 0x00000e1f, 0x00000e20, 0x00000e21, 0x00000e22, 0x00000e23, 0x00000e24, 0x00000e25, 0x00000e26, 0x00000e27, 0x00000e28, 0x00000e29, 0x00000e2a, 0x00000e2b, 0x00000e2c, 0x00000e2d, 0x00000e2e, 0x00000e2f, 0x00000e30, 0x00000e31, 0x00000e32, 0x00000e33, 0x00000e34, 0x00000e35, 0x00000e36, 0x00000e37, 0x00000e38, 0x00000e39, 0x00000e3a, 0x00000e3a, 0x00000e3a, 0x00000e3a, 0x00000e3a, 0x00000e3f, 0x00000e40, 0x00000e41, 0x00000e42, 0x00000e43, 0x00000e44, 0x00000e45, 0x00000e46, 0x00000e47, 0x00000e48, 0x00000e49, 0x00000e4a, 0x00000e4b, 0x00000e4c, 0x00000e4d, 0x00000e4e, 0x00000e4f, 0x00000e50, 0x00000e51, 0x00000e52, 0x00000e53, 0x00000e54, 0x00000e55, 0x00000e56, 0x00000e57, 0x00000e58, 0x00000e59, 0x00000e5a, 0x00000e5b, 0x00000e5b, 0x00000e5b, 0x00000e5b, 0x00000e5b } }, { "ascii-7", { 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000020, 0x00000021, 0x00000022, 0x00000023, 0x00000024, 0x00000025, 0x00000026, 0x00000027, 0x00000028, 0x00000029, 0x0000002a, 0x0000002b, 0x0000002c, 0x0000002d, 0x0000002e, 0x0000002f, 0x00000030, 0x00000031, 0x00000032, 0x00000033, 0x00000034, 0x00000035, 0x00000036, 0x00000037, 0x00000038, 0x00000039, 0x0000003a, 0x0000003b, 0x0000003c, 0x0000003d, 0x0000003e, 0x0000003f, 0x00000040, 0x00000041, 0x00000042, 0x00000043, 0x00000044, 0x00000045, 0x00000046, 0x00000047, 0x00000048, 0x00000049, 0x0000004a, 0x0000004b, 0x0000004c, 0x0000004d, 0x0000004e, 0x0000004f, 0x00000050, 0x00000051, 0x00000052, 0x00000053, 0x00000054, 0x00000055, 0x00000056, 0x00000057, 0x00000058, 0x00000059, 0x0000005a, 0x0000005b, 0x0000005c, 0x0000005d, 0x0000005e, 0x0000005f, 0x00000060, 0x00000061, 0x00000062, 0x00000063, 0x00000064, 0x00000065, 0x00000066, 0x00000067, 0x00000068, 0x00000069, 0x0000006a, 0x0000006b, 0x0000006c, 0x0000006d, 0x0000006e, 0x0000006f, 0x00000070, 0x00000071, 0x00000072, 0x00000073, 0x00000074, 0x00000075, 0x00000076, 0x00000077, 0x00000078, 0x00000079, 0x0000007a, 0x0000007b, 0x0000007c, 0x0000007d, 0x0000007e, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000 } }, { NULL } }; #define ND8 (sizeof(d8)/sizeof(d8_t)) /* * Initialize or re-initialize the 8-bit display character set. * Returns an index into the d8 table, or -1 for failure. */ int display8_init(char *cset) { int i; for (i = 0; d8[i].cset; i++) { if (!strcasecmp(cset, d8[i].cset)) { return i; } } if (!strcasecmp(cset, "iso10646-1")) { return ISO10646_IX; } return -1; } /* * Map a Unicode character onto the 8-bit display character set. * Returns -1 if there is no mapping. */ int display8_lookup(int d8_ix, ucs4_t ucs4) { int i; /* Handle errors. */ if (d8_ix < 0) { return -1; } /* Handle ISO 10646-1 (almost-direct mapping). */ if (d8_ix == ISO10646_IX) { if (ucs4 == UPRIV_fm) { return ';'; } else if (ucs4 == UPRIV_dup) { return '*'; } else if (ucs4 == UPRIV_eo) { return 0x25cf; } else if (ucs4 == UPRIV_sub) { return 0x25a0; } else { return (int)ucs4; } } /* Handle more errors. */ if ((unsigned)d8_ix >= (ND8 - 1)) { return -1; } /* Check for a match in the proper table. */ for (i = 0; i < 256; i++) { if (d8[d8_ix].u[i] == ucs4) { return i; } } /* Handle the private-use values for FM and DUP. */ if (ucs4 == UPRIV_fm) { return ';'; } if (ucs4 == UPRIV_dup) { return '*'; } /* Give up. */ return -1; } /* * DBCS display character set support. */ typedef struct { char *cset; /* Character set name */ char *u[512]; /* Vectors, 128 Unicode positions -> BE display code */ /* * N.B.: 128 positions is the maximum size for each * vector, because 256 positions results in C literal * strings that exceed the C89 requirements. */ } d16_t; d16_t d16[] = { /* * GB2312 X11 font, uses code points rather than the usual EUC-CN encoding. */ { "gb2312.1980-0", { /* 0000 */ NULL, /* 0080 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x21\x68\x00\x00\x00\x00\x21\x6c\x21\x27\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x21\x63\x21\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x21\x41\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x28\x24\x28\x22\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x28\x28\x28\x26\x28\x3a\x00\x00\x28\x2c\x28\x2a\x00\x00\x00\x00\x00\x00\x00\x00\x28\x30\x28\x2e\x00\x00\x00\x00\x00\x00\x21\x42\x00\x00\x28\x34\x28\x32\x00\x00\x28\x39\x00\x00\x00\x00\x00\x00", /* 0100 */ "\x00\x00\x28\x21\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x28\x25\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x28\x27\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x28\x29\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x28\x2d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x28\x31\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 0180 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x28\x23\x00\x00\x28\x2b\x00\x00\x28\x2f\x00\x00\x28\x33\x00\x00\x28\x35\x00\x00\x28\x36\x00\x00\x28\x37\x00\x00\x28\x38\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 0200 */ NULL, /* 0280 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x21\x26\x00\x00\x21\x25\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 0300 */ NULL, /* 0380 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x26\x21\x26\x22\x26\x23\x26\x24\x26\x25\x26\x26\x26\x27\x26\x28\x26\x29\x26\x2a\x26\x2b\x26\x2c\x26\x2d\x26\x2e\x26\x2f\x26\x30\x26\x31\x00\x00\x26\x32\x26\x33\x26\x34\x26\x35\x26\x36\x26\x37\x26\x38\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x26\x41\x26\x42\x26\x43\x26\x44\x26\x45\x26\x46\x26\x47\x26\x48\x26\x49\x26\x4a\x26\x4b\x26\x4c\x26\x4d\x26\x4e\x26\x4f\x26\x50\x26\x51\x00\x00\x26\x52\x26\x53\x26\x54\x26\x55\x26\x56\x26\x57\x26\x58\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 0400 */ "\x00\x00\x27\x27\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x27\x21\x27\x22\x27\x23\x27\x24\x27\x25\x27\x26\x27\x28\x27\x29\x27\x2a\x27\x2b\x27\x2c\x27\x2d\x27\x2e\x27\x2f\x27\x30\x27\x31\x27\x32\x27\x33\x27\x34\x27\x35\x27\x36\x27\x37\x27\x38\x27\x39\x27\x3a\x27\x3b\x27\x3c\x27\x3d\x27\x3e\x27\x3f\x27\x40\x27\x41\x27\x51\x27\x52\x27\x53\x27\x54\x27\x55\x27\x56\x27\x58\x27\x59\x27\x5a\x27\x5b\x27\x5c\x27\x5d\x27\x5e\x27\x5f\x27\x60\x27\x61\x27\x62\x27\x63\x27\x64\x27\x65\x27\x66\x27\x67\x27\x68\x27\x69\x27\x6a\x27\x6b\x27\x6c\x27\x6d\x27\x6e\x27\x6f\x27\x70\x27\x71\x00\x00\x27\x57\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 0480 */ NULL, /* 0500 */ NULL, /* 0580 */ NULL, /* 0600 */ NULL, /* 0680 */ NULL, /* 0700 */ NULL, /* 0780 */ NULL, /* 0800 */ NULL, /* 0880 */ NULL, /* 0900 */ NULL, /* 0980 */ NULL, /* 0a00 */ NULL, /* 0a80 */ NULL, /* 0b00 */ NULL, /* 0b80 */ NULL, /* 0c00 */ NULL, /* 0c80 */ NULL, /* 0d00 */ NULL, /* 0d80 */ NULL, /* 0e00 */ NULL, /* 0e80 */ NULL, /* 0f00 */ NULL, /* 0f80 */ NULL, /* 1000 */ NULL, /* 1080 */ NULL, /* 1100 */ NULL, /* 1180 */ NULL, /* 1200 */ NULL, /* 1280 */ NULL, /* 1300 */ NULL, /* 1380 */ NULL, /* 1400 */ NULL, /* 1480 */ NULL, /* 1500 */ NULL, /* 1580 */ NULL, /* 1600 */ NULL, /* 1680 */ NULL, /* 1700 */ NULL, /* 1780 */ NULL, /* 1800 */ NULL, /* 1880 */ NULL, /* 1900 */ NULL, /* 1980 */ NULL, /* 1a00 */ NULL, /* 1a80 */ NULL, /* 1b00 */ NULL, /* 1b80 */ NULL, /* 1c00 */ NULL, /* 1c80 */ NULL, /* 1d00 */ NULL, /* 1d80 */ NULL, /* 1e00 */ NULL, /* 1e80 */ NULL, /* 1f00 */ NULL, /* 1f80 */ NULL, /* 2000 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x21\x2a\x21\x2c\x00\x00\x21\x2e\x21\x2f\x00\x00\x00\x00\x21\x30\x21\x31\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x21\x2d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x21\x6b\x00\x00\x21\x64\x21\x65\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x21\x79\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 2080 */ NULL, /* 2100 */ "\x00\x00\x00\x00\x00\x00\x21\x66\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x21\x6d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x22\x71\x22\x72\x22\x73\x22\x74\x22\x75\x22\x76\x22\x77\x22\x78\x22\x79\x22\x7a\x22\x7b\x22\x7c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 2180 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x21\x7b\x21\x7c\x21\x7a\x21\x7d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 2200 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x21\x4a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x21\x47\x00\x00\x21\x46\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x21\x4c\x00\x00\x00\x00\x21\x58\x21\x5e\x00\x00\x21\x4f\x00\x00\x00\x00\x00\x00\x00\x00\x21\x4e\x00\x00\x21\x44\x21\x45\x21\x49\x21\x48\x21\x52\x00\x00\x00\x00\x21\x53\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x21\x60\x21\x5f\x21\x43\x21\x4b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x21\x57\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x21\x56\x00\x00\x00\x00\x00\x00\x21\x55\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x21\x59\x21\x54\x00\x00\x00\x00\x21\x5c\x21\x5d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x21\x5a\x21\x5b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 2280 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x21\x51\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x21\x4d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 2300 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x21\x50\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 2380 */ NULL, /* 2400 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x22\x59\x22\x5a\x22\x5b\x22\x5c\x22\x5d\x22\x5e\x22\x5f\x22\x60\x22\x61\x22\x62\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x22\x45\x22\x46\x22\x47\x22\x48\x22\x49\x22\x4a\x22\x4b\x22\x4c\x22\x4d\x22\x4e\x22\x4f\x22\x50", /* 2480 */ "\x22\x51\x22\x52\x22\x53\x22\x54\x22\x55\x22\x56\x22\x57\x22\x58\x22\x31\x22\x32\x22\x33\x22\x34\x22\x35\x22\x36\x22\x37\x22\x38\x22\x39\x22\x3a\x22\x3b\x22\x3c\x22\x3d\x22\x3e\x22\x3f\x22\x40\x22\x41\x22\x42\x22\x43\x22\x44\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 2500 */ "\x29\x24\x29\x25\x29\x26\x29\x27\x29\x28\x29\x29\x29\x2a\x29\x2b\x29\x2c\x29\x2d\x29\x2e\x29\x2f\x29\x30\x29\x31\x29\x32\x29\x33\x29\x34\x29\x35\x29\x36\x29\x37\x29\x38\x29\x39\x29\x3a\x29\x3b\x29\x3c\x29\x3d\x29\x3e\x29\x3f\x29\x40\x29\x41\x29\x42\x29\x43\x29\x44\x29\x45\x29\x46\x29\x47\x29\x48\x29\x49\x29\x4a\x29\x4b\x29\x4c\x29\x4d\x29\x4e\x29\x4f\x29\x50\x29\x51\x29\x52\x29\x53\x29\x54\x29\x55\x29\x56\x29\x57\x29\x58\x29\x59\x29\x5a\x29\x5b\x29\x5c\x29\x5d\x29\x5e\x29\x5f\x29\x60\x29\x61\x29\x62\x29\x63\x29\x64\x29\x65\x29\x66\x29\x67\x29\x68\x29\x69\x29\x6a\x29\x6b\x29\x6c\x29\x6d\x29\x6e\x29\x6f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 2580 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x21\x76\x21\x75\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x21\x78\x21\x77\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x21\x74\x21\x73\x00\x00\x00\x00\x00\x00\x21\x70\x00\x00\x00\x00\x21\x72\x21\x71\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 2600 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x21\x6f\x21\x6e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x21\x62\x00\x00\x21\x61\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 2680 */ NULL, /* 2700 */ NULL, /* 2780 */ NULL, /* 2800 */ NULL, /* 2880 */ NULL, /* 2900 */ NULL, /* 2980 */ NULL, /* 2a00 */ NULL, /* 2a80 */ NULL, /* 2b00 */ NULL, /* 2b80 */ NULL, /* 2c00 */ NULL, /* 2c80 */ NULL, /* 2d00 */ NULL, /* 2d80 */ NULL, /* 2e00 */ NULL, /* 2e80 */ NULL, /* 2f00 */ NULL, /* 2f80 */ NULL, /* 3000 */ "\x21\x21\x21\x22\x21\x23\x21\x28\x00\x00\x21\x29\x00\x00\x00\x00\x21\x34\x21\x35\x21\x36\x21\x37\x21\x38\x21\x39\x21\x3a\x21\x3b\x21\x3e\x21\x3f\x00\x00\x21\x7e\x21\x32\x21\x33\x21\x3c\x21\x3d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x24\x21\x24\x22\x24\x23\x24\x24\x24\x25\x24\x26\x24\x27\x24\x28\x24\x29\x24\x2a\x24\x2b\x24\x2c\x24\x2d\x24\x2e\x24\x2f\x24\x30\x24\x31\x24\x32\x24\x33\x24\x34\x24\x35\x24\x36\x24\x37\x24\x38\x24\x39\x24\x3a\x24\x3b\x24\x3c\x24\x3d\x24\x3e\x24\x3f\x24\x40\x24\x41\x24\x42\x24\x43\x24\x44\x24\x45\x24\x46\x24\x47\x24\x48\x24\x49\x24\x4a\x24\x4b\x24\x4c\x24\x4d\x24\x4e\x24\x4f\x24\x50\x24\x51\x24\x52\x24\x53\x24\x54\x24\x55\x24\x56\x24\x57\x24\x58\x24\x59\x24\x5a\x24\x5b\x24\x5c\x24\x5d\x24\x5e\x24\x5f", /* 3080 */ "\x24\x60\x24\x61\x24\x62\x24\x63\x24\x64\x24\x65\x24\x66\x24\x67\x24\x68\x24\x69\x24\x6a\x24\x6b\x24\x6c\x24\x6d\x24\x6e\x24\x6f\x24\x70\x24\x71\x24\x72\x24\x73\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x25\x21\x25\x22\x25\x23\x25\x24\x25\x25\x25\x26\x25\x27\x25\x28\x25\x29\x25\x2a\x25\x2b\x25\x2c\x25\x2d\x25\x2e\x25\x2f\x25\x30\x25\x31\x25\x32\x25\x33\x25\x34\x25\x35\x25\x36\x25\x37\x25\x38\x25\x39\x25\x3a\x25\x3b\x25\x3c\x25\x3d\x25\x3e\x25\x3f\x25\x40\x25\x41\x25\x42\x25\x43\x25\x44\x25\x45\x25\x46\x25\x47\x25\x48\x25\x49\x25\x4a\x25\x4b\x25\x4c\x25\x4d\x25\x4e\x25\x4f\x25\x50\x25\x51\x25\x52\x25\x53\x25\x54\x25\x55\x25\x56\x25\x57\x25\x58\x25\x59\x25\x5a\x25\x5b\x25\x5c\x25\x5d\x25\x5e\x25\x5f\x25\x60\x25\x61\x25\x62\x25\x63\x25\x64\x25\x65\x25\x66\x25\x67\x25\x68\x25\x69\x25\x6a\x25\x6b\x25\x6c\x25\x6d\x25\x6e\x25\x6f\x25\x70\x25\x71\x25\x72\x25\x73\x25\x74\x25\x75\x25\x76\x00\x00\x00\x00\x00\x00\x00\x00\x21\x24\x00\x00\x00\x00\x00\x00\x00\x00", /* 3100 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x28\x45\x28\x46\x28\x47\x28\x48\x28\x49\x28\x4a\x28\x4b\x28\x4c\x28\x4d\x28\x4e\x28\x4f\x28\x50\x28\x51\x28\x52\x28\x53\x28\x54\x28\x55\x28\x56\x28\x57\x28\x58\x28\x59\x28\x5a\x28\x5b\x28\x5c\x28\x5d\x28\x5e\x28\x5f\x28\x60\x28\x61\x28\x62\x28\x63\x28\x64\x28\x65\x28\x66\x28\x67\x28\x68\x28\x69\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 3180 */ NULL, /* 3200 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x22\x65\x22\x66\x22\x67\x22\x68\x22\x69\x22\x6a\x22\x6b\x22\x6c\x22\x6d\x22\x6e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 3280 */ NULL, /* 3300 */ NULL, /* 3380 */ NULL, /* 3400 */ NULL, /* 3480 */ NULL, /* 3500 */ NULL, /* 3580 */ NULL, /* 3600 */ NULL, /* 3680 */ NULL, /* 3700 */ NULL, /* 3780 */ NULL, /* 3800 */ NULL, /* 3880 */ NULL, /* 3900 */ NULL, /* 3980 */ NULL, /* 3a00 */ NULL, /* 3a80 */ NULL, /* 3b00 */ NULL, /* 3b80 */ NULL, /* 3c00 */ NULL, /* 3c80 */ NULL, /* 3d00 */ NULL, /* 3d80 */ NULL, /* 3e00 */ NULL, /* 3e80 */ NULL, /* 3f00 */ NULL, /* 3f80 */ NULL, /* 4000 */ NULL, /* 4080 */ NULL, /* 4100 */ NULL, /* 4180 */ NULL, /* 4200 */ NULL, /* 4280 */ NULL, /* 4300 */ NULL, /* 4380 */ NULL, /* 4400 */ NULL, /* 4480 */ NULL, /* 4500 */ NULL, /* 4580 */ NULL, /* 4600 */ NULL, /* 4680 */ NULL, /* 4700 */ NULL, /* 4780 */ NULL, /* 4800 */ NULL, /* 4880 */ NULL, /* 4900 */ NULL, /* 4980 */ NULL, /* 4a00 */ NULL, /* 4a80 */ NULL, /* 4b00 */ NULL, /* 4b80 */ NULL, /* 4c00 */ NULL, /* 4c80 */ NULL, /* 4d00 */ NULL, /* 4d80 */ NULL, /* 4e00 */ "\x52\x3b\x36\x21\x00\x00\x46\x5f\x00\x00\x00\x00\x00\x00\x4d\x72\x55\x49\x48\x7d\x49\x4f\x4f\x42\x58\x22\x32\x3b\x53\x6b\x00\x00\x58\x24\x33\x73\x00\x00\x57\x28\x47\x52\x58\x27\x4a\x40\x00\x00\x47\x70\x31\x7b\x52\x35\x34\x54\x36\x2b\x4b\x3f\x58\x29\x00\x00\x00\x00\x00\x00\x36\x2a\x00\x00\x41\x3d\x51\x4f\x00\x00\x49\x25\x58\x2d\x00\x00\x38\x76\x51\x3e\x63\x5c\x56\x50\x00\x00\x00\x00\x37\x61\x00\x00\x34\x2e\x00\x00\x41\x59\x00\x00\x58\x3c\x00\x00\x4d\x68\x35\x24\x4e\x2a\x56\x77\x00\x00\x40\x76\x3e\x59\x58\x2f\x00\x00\x00\x00\x00\x00\x44\x4b\x00\x00\x3e\x43\x00\x00\x58\x31\x43\x34\x52\x65\x00\x00\x56\x2e\x4e\x5a\x55\x27\x3a\x75\x37\x26\x40\x56\x00\x00\x46\x39\x45\x52\x47\x47\x00\x00\x39\x54\x00\x00\x33\x4b\x52\x52\x00\x00\x00\x00\x58\x3f\x3e\x45\x46\x72\x52\x32\x4f\x30\x4f\x67\x00\x00\x00\x00\x00\x00\x00\x00\x4a\x69\x00\x00\x00\x00\x58\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x42\x72\x42\x52\x00\x00\x48\x69\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x47\x2c\x00\x00", /* 4e80 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x41\x4b\x00\x00\x53\x68\x55\x79\x00\x00\x4a\x42\x36\x7e\x58\x21\x53\x5a\x3f\x77\x00\x00\x54\x46\x3b\x25\x58\x41\x4e\x65\x3e\x2e\x00\x00\x00\x00\x58\x28\x00\x00\x51\x47\x50\x29\x00\x00\x00\x00\x00\x00\x58\x3d\x59\x6f\x4d\x76\x3f\x3a\x00\x00\x3d\x3b\x3a\x25\x52\x60\x32\x7a\x3a\x60\x44\x36\x00\x00\x4f\x6d\x3e\x29\x4d\x24\x41\x41\x00\x00\x00\x00\x00\x00\x47\x57\x59\x71\x00\x00\x59\x74\x00\x00\x00\x00\x00\x00\x00\x00\x48\x4b\x58\x69\x00\x00\x00\x00\x00\x00\x52\x5a\x4a\x32\x48\x4a\x58\x6c\x58\x6a\x58\x46\x3d\x76\x46\x4d\x33\x70\x00\x00\x58\x6b\x3d\x71\x3d\x69\x00\x00\x48\x54\x34\x53\x00\x00\x00\x00\x42\x58\x00\x00\x32\x56\x57\x50\x4a\x4b\x4b\x7b\x55\x4c\x38\x36\x4f\x49\x00\x00\x00\x00\x00\x00\x59\x5a\x58\x70\x47\x2a\x00\x00\x58\x6e\x00\x00\x34\x7a\x41\x6e\x52\x54\x00\x00\x00\x00\x58\x6d\x00\x00\x52\x47\x58\x6f\x43\x47\x00\x00\x00\x00\x00\x00\x51\x76\x00\x00\x56\x59\x58\x72\x00\x00\x58\x75\x3c\x7e\x3c\x5b\x00\x00\x00\x00\x00\x00\x48\x4e\x00\x00\x37\x5d\x00\x00\x37\x42", /* 4f00 */ "\x00\x00\x46\x73\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x58\x78\x52\x41\x00\x00\x00\x00\x4e\x69\x3c\x3f\x37\x7c\x37\x25\x50\x5d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x56\x5a\x53\x45\x3b\x6f\x3b\x61\x58\x71\x00\x00\x00\x00\x49\x21\x4e\x30\x34\x2b\x00\x00\x58\x73\x00\x00\x49\x4b\x58\x76\x42\x57\x58\x77\x00\x00\x00\x00\x4e\x31\x58\x79\x00\x00\x00\x00\x00\x00\x32\x2e\x39\x40\x00\x00\x59\x23\x00\x00\x30\x69\x00\x00\x41\x66\x00\x00\x49\x6c\x00\x00\x4b\x45\x00\x00\x4b\x46\x59\x24\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x35\x68\x00\x00\x00\x00\x35\x2b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4e\x3b\x35\x4d\x57\x21\x57\x74\x53\x53\x00\x00\x4c\x65\x00\x00\x3a\x4e\x00\x00\x59\x22\x59\x5c\x53\x60\x58\x7d\x37\x70\x57\x77\x58\x7e\x58\x7a\x59\x21\x44\x63\x00\x00\x00\x00\x53\x36\x58\x74\x59\x5d\x00\x00\x58\x7b\x00\x00\x45\x65\x00\x00\x00\x00\x40\x50\x00\x00\x00\x00\x51\x70\x30\x5b\x00\x00\x00\x00\x3c\x51\x59\x26\x00\x00\x59\x25\x00\x00\x00\x00\x00\x00\x00\x00\x59\x2c\x59\x2e\x00\x00\x59\x2b\x4a\x39", /* 4f80 */ "\x00\x00\x00\x00\x00\x00\x59\x29\x56\x36\x00\x00\x00\x00\x00\x00\x33\x5e\x59\x28\x00\x00\x40\x7d\x00\x00\x4a\x4c\x00\x00\x59\x2a\x00\x00\x59\x27\x00\x00\x00\x00\x59\x30\x00\x00\x00\x00\x36\x31\x00\x00\x00\x00\x00\x00\x39\x29\x00\x00\x52\x40\x00\x00\x00\x00\x4f\x40\x00\x00\x00\x00\x42\x42\x00\x00\x3d\x44\x55\x6c\x32\x60\x47\x48\x3f\x6b\x59\x2d\x00\x00\x59\x2f\x00\x00\x4e\x6a\x3a\x6e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x47\x56\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x31\x63\x00\x00\x00\x00\x00\x00\x34\x59\x36\x6d\x59\x34\x00\x00\x00\x00\x00\x00\x00\x00\x3f\x21\x00\x00\x00\x00\x00\x00\x59\x5e\x47\x4e\x40\x7e\x59\x38\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4b\x57\x37\x7d\x00\x00\x59\x35\x00\x00\x59\x37\x31\x23\x53\x61\x59\x39\x00\x00\x50\x45\x00\x00\x59\x36\x00\x00\x00\x00\x59\x31\x00\x00\x59\x32\x41\x29\x59\x33\x00\x00\x00\x00\x3c\x73\x50\x5e\x38\x29\x00\x00\x3e\x63\x00\x00\x59\x3d\x00\x00\x00\x00\x00\x00\x00\x00\x59\x3a\x00\x00\x30\x33\x00\x00\x00\x00\x00\x00\x59\x42\x00\x00", /* 5000 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x59\x44\x31\x36\x00\x00\x59\x3f\x00\x00\x00\x00\x35\x39\x00\x00\x3e\x73\x00\x00\x00\x00\x00\x00\x4c\x48\x3a\x72\x52\x50\x00\x00\x59\x43\x00\x00\x00\x00\x3d\x68\x00\x00\x33\x2b\x00\x00\x00\x00\x00\x00\x59\x45\x3e\x6b\x00\x00\x59\x46\x59\x3b\x44\x5f\x00\x00\x59\x3e\x59\x41\x59\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x55\x2e\x00\x00\x56\x35\x00\x00\x47\x63\x00\x00\x00\x00\x00\x00\x00\x00\x59\x48\x00\x00\x00\x00\x00\x00\x3c\x59\x59\x4a\x00\x00\x00\x00\x00\x00\x59\x3c\x00\x00\x59\x4b\x46\x2b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x59\x49\x00\x00\x00\x00\x00\x00\x00\x00\x57\x76\x00\x00\x4d\x23\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3d\x21\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x59\x4c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x45\x3c\x4d\x35\x00\x00\x00\x00\x00\x00\x59\x4d\x00\x00\x00\x00\x59\x47\x33\x25", /* 5080 */ "\x3f\x7e\x00\x00\x00\x00\x00\x00\x00\x00\x38\x35\x00\x00\x00\x00\x40\x7c\x00\x00\x00\x00\x00\x00\x00\x00\x30\x78\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x34\x76\x00\x00\x59\x4e\x00\x00\x59\x4f\x34\x22\x59\x50\x00\x00\x00\x00\x34\x5f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x30\x41\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x59\x51\x49\x35\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4f\x71\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x59\x52\x00\x00\x00\x00\x00\x00\x41\x45\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x59\x56\x49\x2e\x00\x00\x00\x00\x00\x00\x00\x00\x59\x55\x59\x54\x59\x57\x00\x00\x00\x00\x00\x00\x00\x00\x4b\x5b\x00\x00\x3d\x29\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x46\x27\x00\x00\x00\x00\x00\x00\x00\x00", /* 5100 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x59\x53\x59\x58\x00\x00\x00\x00\x00\x00\x59\x59\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x48\x65\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x5c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x36\x79\x58\x23\x54\x4a\x00\x00\x54\x2a\x50\x56\x33\x64\x55\x57\x00\x00\x4f\x48\x39\x62\x00\x00\x3f\x4b\x00\x00\x43\x62\x00\x00\x00\x00\x00\x00\x36\x52\x00\x00\x00\x00\x4d\x43\x59\x6e\x59\x70\x00\x00\x00\x00\x00\x00\x35\x33\x00\x00\x36\x35\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3e\x24\x00\x00\x00\x00\x48\x6b\x00\x00\x00\x00\x48\x2b\x00\x00\x00\x00\x30\x4b\x39\x2b\x41\x79\x59\x62\x00\x00\x40\x3c\x39\x32\x00\x00\x39\x58\x50\x4b\x31\x78\x46\x64\x3e\x5f\x35\x64\x57\x48\x00\x00\x51\x78\x3c\x66\x4a\x5e\x00\x00\x00\x00", /* 5180 */ "\x3c\x3d\x59\x66\x58\x67\x00\x00\x00\x00\x44\x5a\x00\x00\x00\x00\x38\x54\x48\x3d\x00\x00\x00\x00\x32\x61\x54\x59\x00\x00\x00\x00\x00\x00\x00\x00\x43\x30\x00\x00\x00\x00\x43\x61\x5a\x22\x48\x5f\x00\x00\x50\x34\x00\x00\x3e\x7c\x45\x29\x00\x00\x00\x00\x00\x00\x39\x5a\x00\x00\x5a\x23\x00\x00\x54\x29\x5a\x24\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x59\x7b\x36\x2c\x00\x00\x00\x00\x37\x6b\x31\x79\x59\x7c\x33\x65\x3e\x76\x00\x00\x3f\x76\x52\x31\x40\x64\x00\x00\x00\x00\x00\x00\x36\x33\x59\x7e\x59\x7d\x00\x00\x00\x00\x3e\x3b\x00\x00\x00\x00\x00\x00\x46\x60\x00\x00\x57\x3c\x5a\x21\x00\x00\x41\x39\x00\x00\x35\x72\x41\x68\x00\x00\x00\x00\x3c\x75\x00\x00\x34\x55\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x41\x5d\x00\x00\x44\x7d\x00\x00\x00\x00\x3c\x38\x37\x32\x00\x00\x00\x00\x37\x6f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x59\x6c\x00\x00\x46\x3e\x00\x00\x3f\x2d\x3b\x4b\x00\x00\x00\x00\x35\x4a\x00\x00\x5b\x49\x50\x57\x00\x00\x4d\x39\x30\x3c\x33\x76\x3b\x77\x5b\x4a\x3a\x2f\x00\x00\x54\x64", /* 5200 */ "\x35\x36\x35\x73\x58\x56\x48\x50\x00\x00\x00\x00\x37\x56\x47\x50\x58\x57\x00\x00\x3f\x2f\x00\x00\x00\x00\x5b\x3b\x58\x58\x00\x00\x00\x00\x50\x4c\x3b\x2e\x00\x00\x00\x00\x00\x00\x6b\x3e\x41\x50\x41\x75\x54\x72\x38\x55\x34\x34\x00\x00\x33\x75\x00\x00\x00\x00\x49\x3e\x00\x00\x00\x00\x00\x00\x45\x50\x00\x00\x00\x00\x00\x00\x45\x59\x40\x7b\x00\x00\x31\x70\x00\x00\x58\x59\x39\x4e\x00\x00\x35\x3d\x00\x00\x00\x00\x58\x5a\x00\x00\x00\x00\x56\x46\x4b\x22\x48\x2f\x49\x32\x34\x4c\x3f\x4c\x00\x00\x39\x74\x00\x00\x58\x5b\x58\x5c\x36\x67\x3c\x41\x4c\x6a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4f\x77\x00\x00\x58\x5d\x47\x30\x00\x00\x00\x00\x39\x50\x3d\x23\x00\x00\x00\x00\x4c\x5e\x00\x00\x46\x4a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x58\x60\x00\x00\x58\x5e\x00\x00\x00\x00\x58\x5f\x00\x00\x00\x00\x00\x00\x30\x7e\x00\x00\x3e\x67\x00\x00\x4a\x23\x3c\x74\x00\x00\x00\x00\x00\x00\x00\x00\x38\x31\x00\x00\x00\x00\x38\x6e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x58\x62\x00\x00\x3d\x4b", /* 5280 */ "\x00\x00\x58\x64\x58\x63\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x45\x7c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x58\x65\x00\x00\x00\x00\x58\x66\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x41\x26\x00\x00\x48\x30\x30\x6c\x39\x26\x3c\x53\x4e\x71\x5b\x3d\x41\x53\x00\x00\x00\x00\x00\x00\x00\x00\x36\x2f\x56\x7a\x45\x2c\x3d\x59\x5b\x3e\x5b\x3f\x00\x00\x00\x00\x00\x00\x40\x78\x3e\x22\x40\x4d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5b\x40\x4a\x46\x00\x00\x00\x00\x00\x00\x32\x2a\x00\x00\x00\x00\x00\x00\x53\x42\x00\x00\x43\x63\x00\x00\x51\x2b\x00\x00\x00\x00\x00\x00\x00\x00\x5b\x42\x00\x00\x40\x55\x00\x00\x00\x00\x00\x00\x5b\x43\x00\x00\x3f\x31\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x44\x3c\x00\x00\x00\x00\x00\x00\x00\x00\x47\x5a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5b\x44\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x59\x68\x49\x57\x00\x00\x00\x00\x00\x00\x39\x34\x4e\x70", /* 5300 */ "\x54\x48\x00\x00\x00\x00\x00\x00\x00\x00\x30\x7c\x34\x52\x00\x00\x50\x59\x00\x00\x00\x00\x00\x00\x00\x00\x59\x69\x00\x00\x5e\x4b\x59\x6b\x00\x00\x00\x00\x00\x00\x00\x00\x58\x30\x3b\x2f\x31\x31\x00\x00\x33\x57\x58\x4e\x00\x00\x00\x00\x54\x51\x00\x00\x00\x00\x3d\x33\x3f\x6f\x00\x00\x4f\x3b\x00\x00\x00\x00\x58\x50\x00\x00\x00\x00\x00\x00\x37\x4b\x00\x00\x00\x00\x00\x00\x58\x51\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x46\x25\x47\x78\x52\x3d\x00\x00\x00\x00\x58\x52\x44\x64\x00\x00\x4a\x2e\x00\x00\x47\x27\x00\x00\x58\x26\x00\x00\x49\x7d\x4e\x67\x3b\x5c\x30\x6b\x00\x00\x00\x00\x00\x00\x3b\x2a\x50\x2d\x00\x00\x31\x30\x57\x64\x57\x3f\x00\x00\x35\x25\x42\x74\x44\x4f\x00\x00\x00\x00\x32\x29\x00\x00\x32\x37\x00\x00\x31\x65\x5f\x32\x55\x3c\x3f\x28\x42\x2c\x58\x55\x42\x31\x00\x00\x58\x54\x4e\x54\x00\x00\x5a\x60\x00\x00\x4e\x40\x00\x00\x00\x00\x58\x34\x43\x2e\x53\x21\x4e\x23\x00\x00\x3c\x34\x48\x34\x42\x51\x00\x00\x3e\x6d\x50\x36\x00\x00\x5a\x61\x00\x00\x00\x00\x00\x00\x00\x00\x47\x64", /* 5380 */ "\x00\x00\x00\x00\x33\x27\x00\x00\x36\x72\x4c\x7c\x40\x7a\x00\x00\x00\x00\x40\x77\x00\x00\x51\x39\x51\x61\x58\x47\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x32\x5e\x00\x00\x00\x00\x40\x65\x00\x00\x3a\x71\x00\x00\x00\x00\x58\x48\x00\x00\x54\x2d\x00\x00\x00\x00\x4f\x61\x58\x49\x00\x00\x58\x4a\x4f\x43\x00\x00\x33\x78\x3e\x47\x00\x00\x00\x00\x00\x00\x00\x00\x58\x4b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5b\x4c\x00\x00\x00\x00\x00\x00\x00\x00\x48\x25\x00\x00\x00\x00\x00\x00\x4f\x58\x00\x00\x48\x7e\x32\x4e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x53\x56\x32\x66\x3c\x30\x53\x51\x4b\x2b\x37\x34\x00\x00\x00\x00\x00\x00\x37\x22\x00\x00\x00\x00\x4a\x65\x00\x00\x48\x21\x4a\x5c\x31\x64\x50\x70\x00\x00\x45\x51\x00\x00\x00\x00\x00\x00\x5b\x45\x35\x7e\x00\x00\x00\x00\x3f\x5a\x39\x45\x3e\x64\x41\x6d\x00\x00\x5f\x36\x5f\x35\x56\x3b\x3d\x50\x55\x59\x30\x48\x36\x23\x3f\x49\x4c\x28\x5f\x33\x4a\x37\x53\x52\x00\x00\x58\x4f\x52\x36\x3a\x45\x4b\x3e\x4c\x3e\x00\x00\x5f\x37\x35\x70\x5f\x34\x00\x00\x00\x00", /* 5400 */ "\x00\x00\x53\x75\x00\x00\x33\x54\x38\x77\x00\x00\x5f\x3a\x00\x00\x3a\x4f\x3c\x2a\x35\x75\x00\x00\x4d\x2c\x43\x7b\x3a\x73\x40\x74\x4d\x42\x4f\x72\x5f\x38\x4f\x45\x00\x00\x42\x40\x5f\x39\x42\x70\x00\x00\x00\x00\x00\x00\x3e\x7d\x00\x00\x41\x5f\x4d\x4c\x52\x77\x37\x4d\x5f\x41\x00\x00\x5f\x44\x00\x00\x00\x00\x37\x71\x30\x49\x36\x56\x37\x54\x00\x00\x3a\x2c\x4c\x7d\x3f\x54\x4b\x31\x46\x74\x00\x00\x56\x28\x5f\x45\x00\x00\x4e\x62\x33\x33\x00\x00\x00\x00\x4e\x7c\x34\x35\x00\x00\x4e\x47\x3a\x70\x00\x00\x4e\x61\x00\x00\x51\x3d\x00\x00\x00\x00\x5f\x40\x00\x00\x00\x00\x34\x74\x00\x00\x33\x4a\x00\x00\x38\x66\x5f\x3b\x00\x00\x00\x00\x00\x00\x00\x00\x44\x45\x00\x00\x5f\x3c\x5f\x3d\x5f\x3e\x45\x3b\x5f\x3f\x5f\x42\x54\x31\x5f\x43\x00\x00\x47\x3a\x4e\x58\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x44\x58\x00\x00\x5f\x4a\x00\x00\x5f\x4f\x00\x00\x56\x5c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5f\x49\x5f\x5a\x4e\x36\x00\x00\x3a\x47\x5f\x4e\x5f\x48\x45\x5e\x00\x00\x00\x00\x49\x6b\x3a\x74\x43\x7c\x00\x00\x00\x00", /* 5480 */ "\x3e\x57\x00\x00\x5f\x46\x00\x00\x5f\x4d\x00\x00\x45\x58\x00\x00\x00\x00\x00\x00\x00\x00\x55\x26\x3a\x4d\x00\x00\x3e\x4c\x53\x3d\x38\x40\x00\x00\x56\x64\x00\x00\x5f\x47\x39\x3e\x3f\x27\x00\x00\x00\x00\x41\x7c\x5f\x4b\x5f\x4c\x00\x00\x5f\x50\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5f\x5b\x5f\x65\x00\x00\x5f\x57\x5f\x56\x57\x49\x5f\x63\x5f\x64\x65\x6b\x52\x27\x5f\x52\x00\x00\x3f\x29\x00\x00\x54\x5b\x00\x00\x3f\x48\x5f\x54\x00\x00\x00\x00\x00\x00\x4f\x4c\x00\x00\x00\x00\x5f\x5d\x00\x00\x51\x4a\x00\x00\x5f\x5e\x30\x27\x46\x37\x5f\x53\x00\x00\x3a\x65\x00\x00\x36\x5f\x4d\x5b\x39\x7e\x54\x55\x00\x00\x00\x00\x5f\x5f\x4f\x6c\x30\x25\x5f\x67\x5f\x51\x51\x46\x5f\x55\x5f\x58\x5f\x59\x5f\x5c\x00\x00\x3b\x29\x00\x00\x5f\x60\x5f\x61\x00\x00\x5f\x62\x5f\x66\x5f\x68\x53\x34\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x38\x67\x45\x36\x5f\x6a\x49\x5a\x41\x28\x44\x44\x00\x00\x00\x00\x3f\x5e\x4f\x78\x00\x00\x00\x00\x00\x00\x55\x5c\x5f\x6e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x32\x38\x00\x00\x3a\x5f\x5f\x6c\x00\x00\x5b\x41", /* 5500 */ "\x00\x00\x51\x64\x00\x00\x00\x00\x00\x00\x00\x00\x4b\x74\x34\x3d\x00\x00\x30\x26\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5f\x71\x4c\x46\x5f\x72\x00\x00\x00\x00\x5f\x6d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5f\x69\x00\x00\x00\x00\x00\x00\x00\x00\x5f\x6b\x00\x00\x5f\x6f\x5f\x70\x3b\x3d\x00\x00\x00\x00\x5f\x73\x00\x00\x00\x00\x5f\x74\x00\x00\x3b\x23\x00\x00\x4a\x5b\x4e\x28\x60\x27\x33\x2a\x00\x00\x60\x26\x00\x00\x00\x00\x00\x00\x60\x21\x00\x00\x00\x00\x00\x00\x00\x00\x5f\x7e\x00\x00\x4d\x59\x5f\x7c\x00\x00\x5f\x7a\x00\x00\x3f\x50\x57\x44\x00\x00\x49\x4c\x00\x00\x00\x00\x5f\x78\x30\x21\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5f\x7d\x00\x00\x00\x00\x00\x00\x00\x00\x5f\x7b\x60\x22\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x60\x28\x00\x00\x00\x00\x00\x00\x00\x00\x37\x48\x00\x00\x00\x00\x46\x21\x49\x36\x40\x32\x5f\x75\x00\x00\x00\x00\x45\x3e\x00\x00\x58\x44\x5f\x79\x44\x76\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x60\x23\x60\x24\x60\x25\x50\x25\x00\x00\x00\x00\x60\x34\x4c\x64\x00\x00\x60\x31\x00\x00", /* 5580 */ "\x3f\x26\x60\x2f\x4e\x39\x60\x2b\x49\x46\x00\x00\x00\x00\x40\x2e\x60\x2e\x3a\x6d\x3a\x30\x60\x29\x00\x00\x00\x00\x00\x00\x5f\x76\x00\x00\x60\x33\x00\x00\x00\x00\x60\x38\x00\x00\x00\x00\x00\x00\x34\x2d\x60\x39\x00\x00\x00\x00\x4f\x32\x3a\x48\x00\x00\x60\x30\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x50\x7a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x60\x2c\x00\x00\x54\x7b\x00\x00\x5f\x77\x00\x00\x45\x67\x00\x00\x60\x2d\x00\x00\x53\x77\x00\x00\x60\x36\x60\x37\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x60\x44\x50\x61\x00\x00\x00\x00\x00\x00\x60\x3c\x00\x00\x00\x00\x60\x49\x60\x4a\x00\x00\x00\x00\x00\x00\x60\x3e\x60\x2a\x49\x24\x60\x41\x00\x00\x60\x32\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4a\x48\x60\x43\x00\x00\x60\x35\x00\x00\x4e\x4b\x00\x00\x4b\x43\x60\x4d\x60\x46\x60\x42\x00\x00\x60\x4b\x00\x00\x60\x3a\x60\x3f\x60\x40\x00\x00\x00\x00\x60\x45\x00\x00\x00\x00\x60\x47\x60\x48\x00\x00\x60\x4c\x00\x00\x60\x3b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4b\x54\x60\x55\x00\x00", /* 5600 */ "\x60\x56\x60\x52\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x60\x50\x3c\x4e\x00\x00\x00\x00\x60\x51\x00\x00\x38\x42\x58\x45\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x50\x6a\x00\x00\x00\x00\x42\x6f\x00\x00\x00\x00\x60\x4f\x60\x3d\x00\x00\x00\x00\x00\x00\x60\x54\x60\x53\x00\x00\x00\x00\x60\x57\x00\x00\x00\x00\x00\x00\x00\x00\x60\x5c\x60\x58\x00\x00\x00\x00\x00\x00\x56\x76\x33\x30\x00\x00\x57\x6c\x00\x00\x4b\x3b\x00\x00\x00\x00\x60\x5a\x00\x00\x4e\x7b\x00\x00\x00\x00\x00\x00\x3a\x59\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x60\x61\x60\x5d\x52\x2d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x60\x62\x00\x00\x00\x00\x60\x5b\x60\x59\x60\x5f\x00\x00\x00\x00\x60\x60\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x60\x5e\x00\x00\x60\x64\x00\x00\x00\x00\x00\x00\x46\x77\x58\x2c\x54\x6b\x60\x66\x4a\x49\x00\x00\x00\x00\x00\x00\x00\x00\x60\x65\x00\x00\x00\x00\x00\x00\x00\x00\x38\x41\x00\x00\x00\x00\x00\x00\x00\x00\x60\x67\x60\x68\x00\x00\x00\x00\x00\x00", /* 5680 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x60\x69\x60\x63\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3a\x3f\x4c\x67\x00\x00\x00\x00\x00\x00\x60\x6a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4f\x79\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x60\x6b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x48\x42\x00\x00\x00\x00\x00\x00\x00\x00\x3d\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x44\x52\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x60\x6c\x00\x00\x00\x00\x60\x6d\x00\x00\x00\x00\x47\x74\x4b\x44\x00\x00\x60\x6e\x3b\x58\x58\x36\x52\x72\x60\x6f\x4d\x45\x00\x00\x36\x5a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x60\x71\x00\x00\x54\x30\x00\x00\x00\x00\x40\x27\x34\x51\x00\x00\x00\x00\x4e\x27\x60\x70\x00\x00\x00\x00\x00\x00\x60\x72\x39\x4c\x00\x00\x00\x00\x39\x7a\x4d\x3c\x60\x73", /* 5700 */ "\x00\x00\x00\x00\x00\x00\x46\x54\x60\x74\x00\x00\x54\x32\x00\x00\x48\x26\x60\x76\x60\x75\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x60\x77\x00\x00\x00\x00\x4d\x41\x00\x00\x00\x00\x00\x00\x4a\x25\x00\x00\x00\x00\x00\x00\x00\x00\x54\x5a\x5b\x57\x5b\x59\x00\x00\x5b\x58\x39\x67\x5b\x5c\x5b\x5d\x35\x58\x00\x00\x00\x00\x5b\x5a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5b\x5b\x33\x21\x5b\x5f\x00\x00\x00\x00\x3b\x78\x00\x00\x56\x37\x00\x00\x5b\x60\x00\x00\x00\x00\x00\x00\x00\x00\x3e\x79\x00\x00\x00\x00\x37\x3b\x00\x00\x5b\x50\x4c\x2e\x3f\x32\x3b\x35\x57\x78\x3f\x53\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3f\x69\x00\x00\x00\x00\x3c\x61\x4c\x33\x5b\x5e\x30\x53\x4e\x6b\x37\x58\x57\x39\x46\x42\x00\x00\x00\x00\x40\x24\x00\x00\x4c\x39\x00\x00\x5b\x67\x5b\x61\x46\x3a\x5b\x63\x00\x00\x5b\x68\x00\x00\x45\x77\x00\x00\x00\x00\x00\x00\x5b\x6a\x00\x00\x00\x00\x5b\x69\x3f\x40\x00\x00\x00\x00\x00\x00\x5b\x66\x5b\x65\x00\x00\x00\x00\x00\x00", /* 5780 */ "\x00\x00\x00\x00\x34\x39\x40\x2c\x42\x22\x5b\x62\x5b\x64\x00\x00\x00\x00\x00\x00\x00\x00\x50\x4d\x5b\x6d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x5d\x5b\x72\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x36\x62\x00\x00\x00\x00\x00\x00\x00\x00\x5b\x73\x5b\x52\x39\x38\x54\x2b\x5b\x6c\x00\x00\x3f\x51\x5b\x70\x00\x00\x5b\x51\x00\x00\x35\x66\x00\x00\x5b\x6b\x3f\x65\x00\x00\x00\x00\x00\x00\x5b\x6e\x00\x00\x5b\x71\x00\x00\x00\x00\x00\x00\x5b\x79\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x39\x21\x30\x23\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x42\x71\x00\x00\x00\x00\x33\x47\x5b\x6f\x00\x00\x00\x00\x5b\x78\x00\x00\x46\x52\x5b\x74\x00\x00\x00\x00\x5b\x75\x5b\x77\x5b\x76\x00\x00\x00\x00\x5b\x7e\x00\x00\x53\x72\x32\x3a\x00\x00\x00\x00\x00\x00\x5b\x7d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5c\x24\x00\x00\x5b\x7b\x00\x00\x00\x00\x00\x00\x00\x00\x5b\x7a\x00\x00\x00\x00\x00\x00\x5b\x7c\x45\x60\x3b\x79\x00\x00\x00\x00\x5c\x23\x00\x00\x00\x00", /* 5800 */ "\x5c\x25\x00\x00\x4c\x43\x00\x00\x00\x00\x00\x00\x36\x51\x5d\x40\x00\x00\x00\x00\x00\x00\x5c\x21\x00\x00\x5c\x22\x00\x00\x00\x00\x00\x00\x47\x35\x00\x00\x00\x00\x00\x00\x36\x69\x00\x00\x00\x00\x00\x00\x5c\x27\x00\x00\x00\x00\x00\x00\x00\x00\x5c\x26\x00\x00\x5c\x29\x31\x24\x00\x00\x00\x00\x35\x4c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3f\x30\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x51\x5f\x00\x00\x00\x00\x00\x00\x00\x00\x36\x42\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5c\x28\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4b\x7a\x6b\x73\x00\x00\x00\x00\x00\x00\x4b\x5c\x00\x00\x00\x00\x4b\x7e\x00\x00\x00\x00\x00\x00\x4c\x41\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x48\x7b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5c\x2a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4c\x6e\x5c\x2b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5b\x53\x00\x00", /* 5880 */ "\x5c\x2f\x5c\x2c\x00\x00\x3e\x33\x00\x00\x4a\x7b\x00\x00\x00\x00\x00\x00\x5c\x2d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x49\x4a\x44\x39\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x47\x3d\x5c\x2e\x00\x00\x00\x00\x00\x00\x54\x76\x50\x66\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x44\x2b\x36\x55\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5b\x54\x00\x00\x00\x00\x00\x00\x00\x00\x31\x5a\x00\x00\x00\x00\x00\x00\x5b\x55\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5b\x56\x00\x00\x00\x00\x00\x00\x3a\x3e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x48\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4a\x3f\x48\x49\x00\x00\x57\x33\x00\x00\x49\x79\x00\x00\x00\x00\x3f\x47\x00\x00\x00\x00\x3a\x78\x00\x00\x00\x00\x52\x3c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 5900 */ "\x00\x00\x00\x00\x62\x3a\x00\x00\x34\x26\x00\x00\x00\x00\x31\x38\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x38\x34\x00\x00\x4f\x44\x00\x00\x00\x00\x00\x00\x00\x00\x59\x67\x4f\x26\x4d\x62\x00\x00\x00\x00\x59\x6d\x36\x60\x00\x00\x52\x39\x00\x00\x00\x00\x39\x3b\x00\x00\x00\x00\x00\x00\x00\x00\x62\x39\x62\x37\x00\x00\x34\x73\x00\x00\x4c\x6c\x4c\x2b\x37\x72\x00\x00\x58\x32\x51\x6b\x3a\x3b\x00\x00\x4a\x27\x00\x00\x00\x00\x4d\x37\x00\x00\x00\x00\x52\x44\x3f\x64\x3c\x50\x36\x61\x00\x00\x5e\x45\x00\x00\x00\x00\x00\x00\x00\x00\x5e\x46\x5b\x3c\x00\x00\x51\x59\x00\x00\x00\x00\x46\x66\x44\x4e\x37\x6e\x00\x00\x37\x5c\x00\x00\x00\x00\x3f\x7c\x57\x60\x00\x00\x46\x75\x00\x00\x00\x00\x31\x3c\x5e\x48\x3d\x31\x4c\x57\x5e\x4a\x00\x00\x5e\x49\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x35\x6c\x00\x00\x49\x5d\x00\x00\x00\x00\x30\x42\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x45\x2e\x45\x2b\x00\x00\x44\x4c\x00\x00\x3c\x69\x4b\x7d\x00\x00\x00\x00\x00\x00\x3a\x43\x00\x00\x00\x00", /* 5980 */ "\x00\x00\x65\x79\x48\x67\x65\x7a\x4d\x7d\x00\x00\x57\x31\x38\x3e\x42\x68\x00\x00\x48\x51\x00\x00\x00\x00\x65\x7b\x00\x00\x00\x00\x00\x00\x00\x00\x36\x4a\x3c\x4b\x00\x00\x00\x00\x51\x7d\x66\x21\x00\x00\x43\x6e\x00\x00\x00\x00\x00\x00\x00\x00\x66\x24\x00\x00\x00\x00\x00\x00\x00\x00\x65\x7e\x66\x25\x4d\x57\x00\x00\x00\x00\x37\x41\x65\x7c\x65\x7d\x66\x23\x00\x00\x00\x00\x44\x5d\x66\x28\x00\x00\x00\x00\x66\x27\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x43\x43\x00\x00\x46\x5e\x00\x00\x00\x00\x66\x2a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x44\x37\x00\x00\x00\x00\x00\x00\x66\x22\x4a\x3c\x00\x00\x00\x00\x00\x00\x00\x00\x3d\x63\x39\x43\x66\x26\x50\x55\x4e\x2f\x00\x00\x00\x00\x66\x29\x66\x30\x00\x00\x52\x26\x00\x00\x3d\x2a\x66\x2d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x66\x2f\x00\x00\x40\x51\x00\x00\x00\x00\x52\x4c\x00\x00\x00\x00\x00\x00\x3c\x27\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x66\x31\x00\x00\x52\x76\x00\x00\x00\x00\x00\x00\x57\x4b", /* 5a00 */ "\x00\x00\x4d\x7e\x00\x00\x4d\x5e\x42\x26\x66\x2b\x66\x2c\x3d\x3f\x66\x2e\x66\x33\x00\x00\x00\x00\x66\x32\x00\x00\x00\x00\x00\x00\x00\x00\x66\x36\x00\x00\x66\x38\x00\x00\x00\x00\x00\x00\x00\x00\x44\x6f\x00\x00\x00\x00\x00\x00\x44\x48\x00\x00\x00\x00\x3e\x6a\x49\x6f\x00\x00\x00\x00\x66\x37\x00\x00\x36\x70\x00\x00\x00\x00\x00\x00\x43\x64\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x53\x69\x66\x34\x00\x00\x66\x35\x00\x00\x48\x22\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x66\x3d\x00\x00\x00\x00\x00\x00\x66\x39\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x46\x45\x00\x00\x00\x00\x4d\x71\x66\x3b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x66\x3c\x00\x00\x00\x00\x00\x00\x00\x00\x3b\x69\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x66\x3e\x00\x00\x00\x00\x00\x00\x00\x00\x66\x3a\x00\x00\x00\x00\x40\x37\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x53\x24\x66\x3f\x49\x74\x66\x43\x00\x00\x00\x00\x66\x44\x00\x00\x00\x00\x00\x00\x00\x00\x50\x76", /* 5a80 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x43\x3d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x43\x44\x66\x42\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x66\x41\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x66\x47\x4f\x31\x00\x00\x6b\x74\x00\x00\x00\x00\x66\x4a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x66\x45\x00\x00\x00\x00\x3c\x5e\x49\x29\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3c\x35\x00\x00\x00\x00\x4f\x53\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x66\x48\x00\x00\x66\x49\x00\x00\x66\x4e\x00\x00\x66\x50\x00\x00\x00\x00\x00\x00\x66\x51\x00\x00\x00\x00\x00\x00\x66\x4b\x35\x55\x00\x00\x66\x4c\x00\x00\x00\x00\x66\x4f\x00\x00\x00\x00\x44\x5b\x00\x00\x66\x46\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x66\x4d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 5b00 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x66\x52\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x66\x54\x66\x53\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x66\x55\x00\x00\x59\x78\x00\x00\x00\x00\x66\x56\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x66\x57\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x57\x53\x66\x5d\x00\x00\x66\x5e\x3f\x57\x54\x50\x00\x00\x57\x56\x34\x66\x4b\x6f\x66\x5a\x58\x43\x57\x4e\x50\x22\x00\x00\x43\x4f\x00\x00\x00\x00\x66\x5f\x3c\x3e\x39\x42\x66\x5b\x51\x27\x00\x00\x00\x00\x3a\x22\x42\x4f\x00\x00\x58\x2b\x00\x00\x00\x00\x00\x00\x4a\x6b\x65\x6e\x00\x00\x66\x5c\x00\x00\x37\x75\x00\x00\x00\x00\x00\x00\x00\x00\x48\x66\x00\x00\x00\x00\x44\x75\x00\x00\x00\x00", /* 5b80 */ "\x65\x32\x44\x7e\x00\x00\x4b\x7c\x65\x33\x55\x2c\x00\x00\x53\x6e\x4a\x58\x30\x32\x00\x00\x4b\x4e\x4d\x6a\x00\x00\x00\x00\x3a\x6a\x00\x00\x00\x00\x00\x00\x65\x35\x00\x00\x65\x34\x00\x00\x57\x5a\x39\x59\x56\x66\x36\x28\x4d\x70\x52\x4b\x31\x26\x4a\x35\x00\x00\x33\x68\x49\x73\x3f\x4d\x50\x7b\x4a\x52\x65\x36\x3b\x42\x00\x00\x00\x00\x00\x00\x4f\x5c\x39\x2c\x00\x00\x00\x00\x00\x00\x00\x00\x54\x57\x00\x00\x00\x00\x3a\x26\x51\x67\x4f\x7c\x3c\x52\x00\x00\x65\x37\x48\x5d\x00\x00\x00\x00\x00\x00\x3f\x6d\x31\x76\x4b\x5e\x00\x00\x00\x00\x3c\x45\x00\x00\x3c\x44\x52\x7a\x43\x5c\x3f\x5c\x00\x00\x00\x00\x00\x00\x00\x00\x38\x3b\x00\x00\x00\x00\x00\x00\x43\x42\x00\x00\x3a\x2e\x54\x22\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x47\x5e\x44\x2f\x32\x6c\x00\x00\x39\x51\x00\x00\x00\x00\x65\x3b\x41\x48\x00\x00\x00\x00\x55\x2f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x65\x3c\x00\x00\x65\x3e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x34\x67\x36\x54\x4b\x42\x51\x30\x35\x3c\x00\x00\x00\x00\x4a\x59", /* 5c00 */ "\x00\x00\x37\x62\x00\x00\x00\x00\x49\x64\x00\x00\x3d\x2b\x00\x00\x00\x00\x4e\x3e\x57\x70\x00\x00\x00\x00\x00\x00\x00\x00\x50\x21\x00\x00\x49\x59\x00\x00\x00\x00\x36\x7b\x66\x58\x3c\x62\x00\x00\x33\x3e\x00\x00\x49\x50\x00\x00\x66\x59\x33\x22\x00\x00\x00\x00\x00\x00\x00\x00\x5e\x4c\x00\x00\x53\x48\x5e\x4d\x00\x00\x52\x22\x00\x00\x00\x00\x00\x00\x00\x00\x5e\x4e\x00\x00\x00\x00\x00\x00\x00\x00\x3e\x4d\x00\x00\x00\x00\x5e\x4f\x00\x00\x00\x00\x00\x00\x4a\x2c\x52\x7c\x33\x5f\x65\x6a\x44\x61\x3e\x21\x4e\x32\x44\x72\x3e\x56\x46\x28\x32\x63\x00\x00\x00\x00\x3e\x53\x00\x00\x00\x00\x47\x7c\x4c\x6b\x3d\x6c\x4e\x5d\x00\x00\x00\x00\x4a\x3a\x46\x41\x65\x6c\x50\x3c\x00\x00\x00\x00\x00\x00\x55\x39\x00\x00\x00\x00\x00\x00\x65\x6d\x00\x00\x00\x00\x00\x00\x00\x00\x4a\x74\x00\x00\x4d\x40\x42\x45\x00\x00\x65\x6f\x00\x00\x42\x44\x65\x70\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x65\x78\x4d\x4d\x00\x00\x49\x3d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x52\x59\x61\x28\x00\x00\x00\x00\x00\x00\x00\x00\x53\x6c", /* 5c80 */ "\x00\x00\x4b\x6a\x46\x71\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x61\x2c\x00\x00\x00\x00\x00\x00\x61\x27\x61\x29\x00\x00\x00\x00\x61\x2a\x61\x2f\x00\x00\x00\x00\x32\x6d\x00\x00\x61\x2b\x38\x5a\x61\x2d\x61\x2e\x61\x30\x35\x3a\x61\x31\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x61\x33\x61\x38\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x51\x52\x00\x00\x61\x36\x61\x35\x41\x6b\x00\x00\x00\x00\x00\x00\x61\x37\x00\x00\x54\x40\x00\x00\x61\x32\x00\x00\x61\x3a\x30\x36\x00\x00\x00\x00\x00\x00\x00\x00\x61\x34\x00\x00\x3f\x79\x00\x00\x61\x39\x00\x00\x00\x00\x61\x3b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x61\x3e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x61\x3c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x56\x45\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4f\x3f\x00\x00\x00\x00\x61\x3d\x61\x3f\x42\x4d\x00\x00\x36\x6b\x00\x00\x53\x78\x00\x00\x00\x00\x47\x4d\x00\x00\x00\x00\x37\x65\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3e\x7e\x00\x00\x00\x00\x00\x00\x00\x00", /* 5d00 */ "\x00\x00\x00\x00\x61\x40\x61\x41\x00\x00\x00\x00\x61\x47\x33\x67\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x46\x69\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x34\x5e\x00\x00\x51\x42\x00\x00\x00\x00\x00\x00\x00\x00\x61\x48\x00\x00\x00\x00\x61\x46\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x61\x45\x00\x00\x61\x43\x61\x42\x00\x00\x31\x40\x00\x00\x00\x00\x00\x00\x55\x38\x61\x44\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x61\x4b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x61\x4c\x61\x4a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6f\x7a\x00\x00\x00\x00\x61\x53\x61\x52\x47\x36\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x61\x49\x00\x00\x00\x00\x61\x4e\x00\x00\x61\x50\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x61\x54\x00\x00\x61\x51\x61\x4d\x00\x00\x00\x00\x61\x4f\x00\x00\x00\x00\x00\x00\x00\x00\x61\x55\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 5d80 */ "\x00\x00\x00\x00\x61\x56\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x61\x57\x00\x00\x00\x00\x00\x00\x61\x58\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x61\x5a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x61\x5b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4e\x21\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x67\x5d\x00\x00\x34\x28\x56\x5d\x00\x00\x00\x00\x51\x32\x33\x32\x00\x00\x00\x00\x39\x24\x57\x73\x47\x49\x3e\x5e\x39\x2e\x00\x00\x4e\x57\x00\x00\x00\x00\x32\x6e\x5b\x4f\x00\x00\x3c\x3a\x52\x51\x4b\x48\x30\x4d\x00\x00\x00\x00\x4f\x6f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x59\x63\x3d\x6d\x00\x00", /* 5e00 */ "\x00\x00\x31\x52\x4a\x50\x32\x3c\x00\x00\x4b\x27\x37\x2b\x00\x00\x4a\x26\x00\x00\x00\x00\x00\x00\x4f\x23\x00\x00\x00\x00\x60\x78\x55\x4a\x60\x7b\x00\x00\x00\x00\x60\x7a\x45\x41\x4c\x7b\x00\x00\x41\x31\x60\x79\x56\x63\x32\x2f\x56\x44\x35\x5b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x34\x78\x56\x21\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4f\x2f\x30\x6f\x00\x00\x00\x00\x60\x7c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x61\x21\x33\x23\x00\x00\x00\x00\x60\x7d\x60\x7e\x43\x31\x00\x00\x00\x00\x00\x00\x00\x00\x43\x5d\x00\x00\x61\x22\x37\x79\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3b\x4f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x61\x23\x44\x3b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x61\x24\x00\x00\x00\x00\x61\x25\x00\x00\x00\x00\x61\x26\x34\x31\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x38\x49\x46\x3d\x44\x6a\x00\x00\x32\x22\x00\x00\x50\x52\x00\x00\x67\x5b\x3b\x43\x53\x57\x53\x44\x00\x00\x39\x63", /* 5e80 */ "\x62\x4f\x00\x00\x00\x00\x00\x00\x57\x2f\x00\x00\x47\x6c\x31\x53\x00\x00\x00\x00\x34\x32\x62\x51\x00\x00\x00\x00\x00\x00\x50\x72\x42\x2e\x62\x50\x00\x00\x3f\x62\x53\x26\x35\x57\x62\x52\x35\x6a\x00\x00\x43\x6d\x38\x7d\x00\x00\x38\x2e\x00\x00\x45\x53\x37\x4f\x62\x54\x00\x00\x00\x00\x00\x00\x00\x00\x62\x53\x36\x48\x57\x79\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4d\x25\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x62\x58\x00\x00\x62\x56\x4a\x7c\x3f\x35\x53\x39\x62\x55\x00\x00\x00\x00\x00\x00\x00\x00\x62\x57\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x41\x2e\x40\x48\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x62\x5b\x62\x5a\x40\x2a\x00\x00\x00\x00\x41\x4e\x00\x00\x00\x00\x00\x00\x00\x00\x62\x5c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x62\x5d\x00\x00\x62\x5e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5b\x48\x00\x00\x51\x53\x4d\x22\x00\x00\x00\x00\x3d\x28\x00\x00\x00\x00\x00\x00\x5e\x43\x58\x25", /* 5f00 */ "\x3f\x2a\x5b\x4d\x52\x6c\x46\x7a\x45\x2a\x00\x00\x00\x00\x00\x00\x5e\x44\x00\x00\x31\x57\x5f\x2e\x00\x00\x00\x00\x00\x00\x4a\x3d\x00\x00\x5f\x31\x00\x00\x39\x2d\x00\x00\x52\x7d\x00\x00\x38\x25\x3a\x6b\x00\x00\x00\x00\x33\x5a\x00\x00\x00\x00\x00\x00\x35\x5c\x55\x45\x00\x00\x00\x00\x00\x00\x00\x00\x43\x56\x4f\x52\x3b\x21\x00\x00\x65\x73\x65\x72\x00\x00\x00\x00\x65\x74\x00\x00\x4d\x64\x00\x00\x48\x75\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x35\x2f\x47\x3f\x00\x00\x65\x76\x00\x00\x00\x00\x00\x00\x6c\x30\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x65\x66\x00\x00\x39\x69\x35\x31\x00\x00\x42\x3c\x65\x68\x65\x67\x65\x69\x00\x00\x00\x00\x00\x00\x00\x00\x52\x4d\x00\x00\x00\x00\x00\x00\x61\x6a\x50\x4e\x00\x00\x4d\x2e\x00\x00\x51\x65\x00\x00\x00\x00\x32\x4a\x31\x6b\x00\x00\x31\x72\x45\x6d\x00\x00\x00\x00\x55\x43\x53\x30\x00\x00\x61\x5c\x00\x00\x00\x00\x00\x00\x61\x5d\x00\x00\x52\x5b\x00\x00\x33\x39\x31\x4b\x00\x00\x00\x00\x00\x00", /* 5f80 */ "\x4d\x79\x55\x77\x61\x5e\x00\x00\x3e\x36\x34\x7d\x00\x00\x61\x5f\x3a\x5c\x61\x60\x3b\x32\x42\x49\x61\x61\x00\x00\x00\x00\x00\x00\x50\x6c\x00\x00\x4d\x3d\x00\x00\x00\x00\x61\x62\x00\x00\x35\x43\x45\x47\x61\x63\x00\x00\x00\x00\x61\x64\x00\x00\x00\x00\x00\x00\x00\x00\x53\x79\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x61\x65\x00\x00\x51\x2d\x00\x00\x00\x00\x61\x66\x4e\x22\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x61\x67\x00\x00\x35\x42\x00\x00\x00\x00\x00\x00\x00\x00\x61\x68\x3b\x55\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x50\x44\x62\x60\x31\x58\x52\x64\x00\x00\x00\x00\x62\x61\x00\x00\x00\x00\x3c\x49\x48\x4c\x00\x00\x62\x63\x6c\x7e\x6c\x7d\x5f\x2f\x00\x00\x00\x00\x00\x00\x62\x62\x56\x3e\x4d\x7c\x43\x26\x00\x00\x00\x00\x00\x00\x63\x43\x00\x00\x00\x00\x56\x52\x62\x67\x00\x00\x00\x00\x62\x68\x00\x00\x00\x00\x53\x47\x00\x00\x00\x00\x62\x6c\x3f\x6c\x00\x00\x62\x6d\x62\x65\x00\x00\x00\x00\x33\x40\x00\x00\x00\x00\x00\x00\x44\x6e\x00\x00\x00\x00\x62\x6e\x00\x00\x00\x00\x50\x43\x00\x00\x3a\x76\x62\x69\x37\x5e", /* 6000 */ "\x3b\x33\x4c\x2c\x4b\x4b\x62\x64\x62\x66\x62\x6a\x62\x6b\x00\x00\x00\x00\x00\x00\x62\x77\x00\x00\x00\x00\x62\x74\x54\x75\x62\x73\x00\x00\x00\x00\x45\x2d\x00\x00\x55\x7a\x45\x42\x32\x40\x00\x00\x00\x00\x62\x6f\x00\x00\x62\x72\x41\x2f\x4b\x3c\x00\x00\x00\x00\x35\x21\x62\x79\x00\x00\x00\x00\x00\x00\x3c\x31\x62\x71\x50\x54\x54\x39\x62\x75\x39\x56\x62\x76\x00\x00\x00\x00\x00\x00\x47\x53\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x62\x70\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x57\x5c\x6d\x21\x00\x00\x00\x00\x62\x78\x00\x00\x6d\x25\x62\x7e\x4a\x51\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x41\x35\x00\x00\x3b\x50\x00\x00\x00\x00\x3f\x56\x00\x00\x3a\x63\x00\x00\x00\x00\x4b\x21\x00\x00\x00\x00\x00\x00\x6d\x26\x6d\x23\x00\x00\x00\x00\x6d\x22\x00\x00\x00\x00\x00\x00\x00\x00\x3b\x56\x6d\x27\x50\x74\x00\x00\x00\x00\x6d\x24\x3a\x5e\x36\x77\x63\x21\x36\x32\x4c\x71\x39\x27\x00\x00\x4f\x22\x47\x21\x00\x00\x00\x00\x3f\x52\x00\x00\x00\x00\x36\x71\x00\x00\x62\x7a\x62\x7b\x62\x7d\x62\x7c\x44\x55\x63\x22\x00\x00\x53\x41", /* 6080 */ "\x00\x00\x00\x00\x00\x00\x63\x27\x47\x44\x00\x00\x00\x00\x00\x00\x00\x00\x4f\x24\x00\x00\x00\x00\x63\x29\x3a\x37\x00\x00\x00\x00\x00\x00\x00\x00\x63\x28\x00\x00\x3b\x5a\x00\x00\x63\x23\x00\x00\x00\x00\x00\x00\x63\x24\x63\x2a\x00\x00\x63\x26\x00\x00\x4e\x72\x53\x46\x00\x00\x00\x00\x3b\x3c\x00\x00\x00\x00\x54\x43\x00\x00\x44\x7a\x00\x00\x00\x00\x6d\x28\x50\x7c\x63\x25\x00\x00\x43\x75\x00\x00\x63\x2d\x31\x2f\x00\x00\x63\x32\x00\x00\x00\x00\x00\x00\x3c\x42\x00\x00\x00\x00\x63\x2c\x35\x3f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x47\x69\x63\x30\x00\x00\x00\x00\x00\x00\x3e\x2a\x4d\x6f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3b\x73\x00\x00\x00\x00\x00\x00\x4c\x68\x00\x00\x00\x00\x63\x2f\x00\x00\x63\x31\x00\x00\x4f\x27\x63\x2e\x00\x00\x4e\x29\x3b\x5d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x35\x6b\x3e\x65\x32\x52\x33\x4d\x00\x00\x31\x39\x63\x2b\x32\x51\x35\x2c\x39\x5f\x36\x68\x00\x00\x00\x00\x4f\x6b\x63\x37\x00\x00\x3b\x4c\x00\x00\x00\x00\x48\x47\x50\x4a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 6100 */ "\x63\x38\x33\x6e\x00\x00\x00\x00\x00\x00\x00\x00\x6d\x29\x00\x00\x53\x7a\x53\x64\x00\x00\x00\x00\x00\x00\x6d\x2a\x63\x39\x52\x62\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x63\x35\x00\x00\x00\x00\x00\x00\x00\x00\x53\x5e\x00\x00\x00\x00\x00\x00\x00\x00\x38\x50\x63\x33\x00\x00\x00\x00\x63\x36\x37\x5f\x00\x00\x63\x34\x40\x22\x00\x00\x00\x00\x00\x00\x63\x3a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x54\x38\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x34\x48\x00\x00\x63\x3b\x00\x00\x3b\x45\x00\x00\x49\x77\x00\x00\x00\x00\x49\x65\x00\x00\x00\x00\x00\x00\x44\x3d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6d\x2b\x00\x00\x00\x00\x00\x00\x00\x00\x42\x7d\x00\x00\x00\x00\x00\x00\x00\x00\x3b\x5b\x3f\x2e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4e\x3f\x00\x00\x00\x00\x00\x00\x00\x00\x63\x3c\x00\x00\x3f\x36\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 6180 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x31\x6f\x00\x00\x00\x00\x54\x77\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x63\x3e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6d\x2d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x63\x3f\x3a\x29\x6d\x2c\x00\x00\x00\x00\x63\x3d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x63\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3a\x36\x00\x00\x00\x00\x00\x00\x36\x2e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x50\x38\x00\x00\x30\x43\x6d\x2e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6d\x2f\x40\x41\x00\x00\x63\x41\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x45\x33\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x63\x42\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5c\x32", /* 6200 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6d\x30\x00\x00\x38\x6a\x00\x00\x4e\x6c\x6a\x27\x50\x67\x4a\x79\x48\x56\x4f\x37\x33\x49\x4e\x52\x3d\x64\x00\x00\x00\x00\x63\x5e\x3b\x72\x6a\x28\x55\x3d\x00\x00\x46\x5d\x6a\x29\x00\x00\x00\x00\x00\x00\x6a\x2a\x00\x00\x6a\x2c\x6a\x2b\x00\x00\x6a\x2e\x6a\x2d\x00\x00\x00\x00\x00\x00\x00\x00\x3d\x58\x00\x00\x6a\x2f\x00\x00\x42\x3e\x00\x00\x00\x00\x00\x00\x00\x00\x34\x41\x34\x77\x00\x00\x00\x00\x3b\x27\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6c\x66\x6c\x65\x37\x3f\x4b\x79\x31\x62\x00\x00\x6c\x67\x00\x00\x00\x00\x00\x00\x49\x48\x6c\x68\x6c\x69\x00\x00\x4a\x56\x5e\x50\x32\x45\x54\x7a\x00\x00\x00\x00\x46\x4b\x30\x47\x34\x72\x48\x53\x00\x00\x00\x00\x00\x00\x4d\x50\x00\x00\x00\x00\x3f\x38\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3f\x5b\x00\x00\x00\x00\x47\x24\x56\x34\x00\x00\x40\x29\x5e\x51\x49\x28\x51\x6f\x45\x24\x30\x67\x33\x36\x48\x45\x00\x00\x00\x00\x30\x62\x00\x00\x00\x00\x37\x76\x00\x00\x00\x00\x45\x7a\x00\x00\x00\x00\x36\x73\x00\x00\x55\x52\x33\x50", /* 6280 */ "\x3c\x3c\x00\x00\x00\x00\x00\x00\x33\x2d\x00\x00\x00\x00\x00\x00\x00\x00\x3e\x71\x30\x51\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x52\x56\x4a\x63\x57\x25\x00\x00\x4d\x36\x36\x36\x3f\x39\x55\x5b\x00\x00\x38\x27\x45\x57\x00\x00\x00\x00\x00\x00\x5e\x52\x3f\x59\x42\x55\x47\x40\x00\x00\x3b\x24\x31\x28\x00\x00\x00\x00\x45\x6a\x00\x00\x00\x00\x45\x7b\x4c\x27\x00\x00\x00\x00\x00\x00\x00\x00\x31\x27\x00\x00\x00\x00\x00\x00\x35\x56\x00\x00\x00\x00\x00\x00\x44\x28\x00\x00\x5e\x53\x51\x3a\x33\x69\x00\x00\x43\x72\x00\x00\x00\x00\x37\x77\x00\x00\x56\x74\x35\x23\x32\x70\x44\x34\x44\x69\x40\x2d\x5e\x54\x00\x00\x30\x68\x45\x44\x41\x60\x00\x00\x39\x55\x00\x00\x3e\x5c\x4d\x58\x30\x4e\x00\x00\x4d\x4f\x5e\x56\x3e\x50\x57\x3e\x5e\x55\x55\x50\x30\x5d\x00\x00\x00\x00\x44\x62\x00\x00\x00\x00\x42\x23\x3c\x70\x00\x00\x53\x35\x40\x39\x45\x21\x32\x26\x54\x71\x00\x00\x00\x00\x40\x28\x4a\x43\x5e\x57\x55\x7c\x00\x00\x39\x30\x00\x00\x48\x2d\x4b\x29\x00\x00\x5e\x59\x3f\x3d\x00\x00\x00\x00\x00\x00\x00\x00\x46\x34\x57\x27\x4a\x30\x44\x43", /* 6300 */ "\x00\x00\x33\x56\x39\x52\x00\x00\x00\x00\x00\x00\x00\x00\x56\x38\x6a\x7c\x30\x34\x00\x00\x00\x00\x00\x00\x00\x00\x3f\x66\x00\x00\x00\x00\x4c\x74\x00\x00\x00\x00\x00\x00\x00\x00\x4d\x5a\x00\x00\x00\x00\x00\x00\x56\x3f\x42\x4e\x00\x00\x4e\x4e\x4c\x22\x50\x2e\x44\x53\x35\x32\x5e\x58\x55\x75\x3c\x37\x3b\x53\x00\x00\x00\x00\x30\x24\x00\x00\x45\x32\x34\x6c\x00\x00\x00\x00\x00\x00\x55\x71\x00\x00\x00\x00\x6a\x7d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5e\x5a\x4d\x26\x00\x00\x00\x00\x4d\x6c\x00\x00\x00\x00\x00\x00\x00\x00\x4e\x66\x5e\x5c\x00\x00\x4d\x31\x40\x26\x00\x00\x00\x00\x57\x3d\x00\x00\x5e\x5b\x30\x46\x3a\x34\x49\x53\x44\x73\x3e\x68\x00\x00\x00\x00\x00\x00\x00\x00\x32\x36\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x4c\x4b\x70\x00\x00\x3c\x71\x3b\x3b\x35\x37\x00\x00\x00\x00\x00\x00\x45\x75\x00\x00\x5e\x66\x00\x00\x00\x00\x00\x00\x5e\x63\x3e\x5d\x00\x00\x00\x00\x5e\x5f\x00\x00\x00\x00\x00\x00\x00\x00\x34\x37\x3d\x5d\x00\x00\x00\x00\x5e\x60\x44\x6d\x00\x00\x00\x00\x00\x00\x00\x00", /* 6380 */ "\x4f\x46\x00\x00\x35\x60\x00\x00\x00\x00\x00\x00\x00\x00\x36\x5e\x4a\x5a\x35\x74\x5e\x65\x00\x00\x55\x46\x00\x00\x5e\x61\x4c\x4d\x46\x7e\x00\x00\x45\x45\x00\x00\x00\x00\x00\x00\x52\x34\x00\x00\x3e\x72\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x42\x53\x00\x00\x4c\x3d\x33\x38\x00\x00\x3d\x53\x00\x00\x3f\x58\x4d\x46\x51\x5a\x34\x6b\x00\x00\x5e\x64\x5e\x5d\x5e\x67\x00\x00\x6a\x7e\x00\x00\x00\x00\x42\x30\x5e\x62\x00\x00\x00\x00\x56\x40\x35\x27\x00\x00\x32\x74\x00\x00\x5e\x68\x00\x00\x5e\x72\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5e\x6d\x00\x00\x5e\x71\x00\x00\x00\x00\x48\x60\x00\x00\x00\x00\x00\x00\x57\x61\x5e\x6f\x43\x68\x4c\x61\x00\x00\x32\x65\x00\x00\x00\x00\x00\x00\x52\x3e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5e\x6e\x00\x00\x5e\x6b\x4e\x55\x00\x00\x34\x27\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3f\x2b\x3e\x3e\x00\x00\x00\x00\x3d\x52\x00\x00\x00\x00\x00\x00\x00\x00\x5e\x69\x00\x00\x54\x2e\x00\x00\x5e\x5e\x00\x00\x5e\x6a\x00\x00\x00\x00\x00\x00\x00\x00\x40\x3f\x00\x00\x5e\x6c", /* 6400 */ "\x32\x73\x38\x69\x42\x27\x00\x00\x00\x00\x3d\x41\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5e\x75\x5e\x78\x00\x00\x00\x00\x32\x2b\x34\x24\x00\x00\x00\x00\x34\x6a\x49\x26\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5e\x76\x4b\x51\x00\x00\x38\x63\x00\x00\x5e\x77\x5e\x7a\x00\x00\x00\x00\x00\x00\x00\x00\x5e\x79\x00\x00\x00\x00\x00\x00\x4c\x42\x00\x00\x30\x61\x34\x6e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x65\x3a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x50\x2f\x00\x00\x00\x00\x32\x6b\x00\x00\x6b\x21\x00\x00\x5e\x74\x00\x00\x00\x00\x49\x63\x5e\x73\x30\x5a\x52\x21\x31\x77\x00\x00\x4c\x2f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5e\x70\x00\x00\x4b\x24\x00\x00\x00\x00\x00\x00\x55\x2a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5e\x7b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x34\x5d\x00\x00\x44\x26\x00\x00\x00\x00\x00\x00\x5e\x7d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x43\x7e\x44\x21\x5f\x21\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 6480 */ "\x00\x00\x00\x00\x41\x4c\x00\x00\x5e\x7c\x3e\x6f\x00\x00\x46\x32\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x33\x45\x48\x76\x00\x00\x00\x00\x4b\x3a\x5e\x7e\x00\x00\x00\x00\x5f\x24\x00\x00\x00\x00\x00\x00\x00\x00\x57\x32\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x33\x37\x00\x00\x00\x00\x00\x00\x00\x00\x41\x43\x00\x00\x00\x00\x47\x4b\x32\x25\x34\x69\x00\x00\x57\x2b\x00\x00\x00\x00\x00\x00\x00\x00\x44\x6c\x00\x00\x5f\x22\x5f\x23\x00\x00\x5f\x25\x00\x00\x3a\x33\x00\x00\x00\x00\x00\x00\x5f\x26\x00\x00\x40\x5e\x00\x00\x00\x00\x49\x43\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x32\x59\x47\x66\x00\x00\x5f\x27\x00\x00\x47\x5c\x00\x00\x00\x00\x00\x00\x00\x00\x5f\x28\x6b\x22\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4b\x53\x00\x00\x00\x00\x00\x00\x5f\x2a\x00\x00\x5f\x29\x00\x00\x32\x41\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 6500 */ "\x45\x4a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5f\x2b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x54\x5c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x48\x41\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5f\x2c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3e\x70\x00\x00\x00\x00\x5f\x2d\x56\x27\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x37\x6b\x36\x4a\x55\x00\x00\x58\x7c\x38\x44\x00\x00\x39\x25\x00\x00\x00\x00\x37\x45\x55\x7e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x39\x4a\x00\x00\x00\x00\x50\x27\x74\x4d\x00\x00\x00\x00\x35\x50\x00\x00\x00\x00\x43\x74\x00\x00\x3e\x48\x00\x00\x00\x00\x00\x00\x6b\x37\x30\x3d\x00\x00\x00\x00\x3d\x4c\x00\x00\x41\x32\x00\x00\x31\x56\x33\x28\x00\x00\x00\x00\x00\x00\x38\x52\x49\x22\x00\x00\x00\x00\x36\x58\x00\x00\x00\x00\x00\x00\x00\x00\x6b\x38\x3e\x34\x00\x00\x00\x00\x00\x00\x4a\x7d\x00\x00\x47\x43\x00\x00\x55\x7b\x00\x00\x00\x00\x37\x73\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 6580 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4e\x44\x00\x00\x00\x00\x00\x00\x55\x2b\x31\x73\x00\x00\x00\x00\x00\x00\x6c\x33\x30\x5f\x00\x00\x6c\x35\x00\x00\x00\x00\x00\x00\x36\x37\x00\x00\x41\x4f\x00\x00\x75\x7a\x50\x31\x00\x00\x00\x00\x55\x65\x00\x00\x4e\x53\x00\x00\x00\x00\x3d\x6f\x33\x62\x00\x00\x38\x2b\x00\x00\x55\x36\x00\x00\x6d\x3d\x00\x00\x36\x4f\x00\x00\x4b\x39\x50\x42\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x37\x3d\x00\x00\x00\x00\x6c\x36\x4a\x29\x00\x00\x00\x00\x00\x00\x45\x54\x00\x00\x6c\x39\x6c\x38\x42\x43\x6c\x37\x00\x00\x00\x00\x00\x00\x00\x00\x50\x7d\x6c\x3a\x00\x00\x6c\x3b\x57\x65\x00\x00\x00\x00\x6c\x3c\x00\x00\x00\x00\x00\x00\x6c\x3d\x46\x6c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4e\x5e\x00\x00\x3c\x48\x00\x00\x00\x00\x48\x55\x35\x29\x3e\x49\x56\x3c\x54\x67\x00\x00\x00\x00\x51\x2e\x50\x71\x6a\x38\x6a\x39\x6a\x3a\x3a\x35\x00\x00\x00\x00\x00\x00\x00\x00\x4a\x31\x3f\x75\x00\x00\x00\x00\x4d\x7a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 6600 */ "\x6a\x40\x00\x00\x30\x3a\x6a\x3e\x00\x00\x00\x00\x40\x25\x00\x00\x00\x00\x00\x00\x6a\x3b\x00\x00\x32\x7d\x00\x00\x43\x77\x3b\x68\x00\x00\x00\x00\x00\x00\x52\x57\x4e\x74\x6a\x3f\x00\x00\x00\x00\x00\x00\x6a\x3c\x00\x00\x00\x00\x00\x00\x6a\x43\x00\x00\x50\x47\x53\x33\x00\x00\x00\x00\x00\x00\x00\x00\x34\x3a\x00\x00\x43\x41\x57\x72\x00\x00\x00\x00\x00\x00\x00\x00\x55\x51\x00\x00\x4a\x47\x00\x00\x6a\x45\x00\x00\x00\x00\x6a\x44\x6a\x47\x6a\x46\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x56\x67\x00\x00\x4f\x54\x00\x00\x00\x00\x6a\x4b\x00\x00\x3b\x4e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3d\x7a\x49\x4e\x00\x00\x00\x00\x6a\x4c\x00\x00\x00\x00\x49\x39\x4f\x7e\x6a\x4a\x54\x4e\x6a\x4d\x6a\x4f\x00\x00\x00\x00\x4d\x6d\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x49\x00\x00\x6a\x4e\x00\x00\x00\x00\x4e\x6e\x00\x00\x3b\x5e\x00\x00\x33\x3f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x46\x55\x3e\x30\x4e\x7a\x00\x00\x00\x00\x00\x00\x47\x67\x00\x00\x3e\x27\x6a\x50\x00\x00\x00\x00\x56\x47\x00\x00\x00\x00\x00\x00\x41\x40\x00\x00", /* 6680 */ "\x00\x00\x00\x00\x54\x5d\x00\x00\x6a\x51\x00\x00\x00\x00\x4f\x3e\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x52\x00\x00\x00\x00\x00\x00\x00\x00\x4a\x6e\x00\x00\x00\x00\x00\x00\x00\x00\x45\x2f\x30\x35\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x54\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x53\x74\x5f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x44\x3a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x31\x29\x00\x00\x00\x00\x00\x00\x00\x00\x65\x5f\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x55\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4a\x6f\x00\x00\x6a\x56\x6a\x57\x46\x58\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x58\x00\x00\x00\x00\x6a\x59\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x54\x3b\x00\x00\x47\x7a\x52\x37\x38\x7c\x00\x00\x00\x00\x6a\x42\x00\x00\x32\x5c\x00\x00\x00\x00\x42\x7c\x00\x00\x54\x78\x4c\x66", /* 6700 */ "\x57\x6e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x54\x42\x53\x50\x6b\x43\x45\x73\x00\x00\x37\x7e\x00\x00\x00\x00\x6b\x54\x00\x00\x00\x00\x00\x00\x4b\x37\x6b\x5e\x00\x00\x40\x4a\x00\x00\x00\x00\x00\x00\x4d\x7b\x00\x00\x33\x2f\x00\x00\x46\x5a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6b\x7c\x00\x00\x44\x3e\x00\x00\x4e\x34\x44\x29\x31\x3e\x54\x7d\x00\x00\x4a\x75\x00\x00\x56\x6c\x00\x00\x00\x00\x46\x53\x36\x64\x00\x00\x00\x00\x00\x00\x00\x00\x3b\x7a\x00\x00\x00\x00\x50\x60\x00\x00\x00\x00\x49\x31\x00\x00\x54\x53\x48\x28\x00\x00\x00\x00\x38\x4b\x00\x00\x68\x3e\x49\x3c\x00\x00\x00\x00\x68\x3b\x00\x00\x40\x6e\x50\x53\x32\x44\x34\x65\x00\x00\x68\x3c\x00\x00\x00\x00\x55\x48\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x36\x45\x00\x00\x68\x3d\x4a\x78\x38\x5c\x4c\x75\x00\x00\x00\x00\x00\x00\x40\x34\x00\x00\x00\x00\x51\x6e\x68\x3f\x68\x42\x00\x00\x00\x00\x3a\x3c\x00\x00\x31\x2d\x3d\x5c\x00\x00\x6a\x3d\x68\x43\x00\x00\x68\x46\x00\x00\x68\x4b\x00\x00\x00\x00\x00\x00\x00\x00\x68\x4c\x00\x00\x4b\x49\x30\x65", /* 6780 */ "\x00\x00\x3c\x2b\x00\x00\x00\x00\x39\x39\x00\x00\x00\x00\x68\x41\x00\x00\x4d\x77\x00\x00\x68\x4a\x00\x00\x00\x00\x00\x00\x00\x00\x4e\x76\x00\x00\x00\x00\x00\x00\x00\x00\x55\x6d\x00\x00\x41\x56\x68\x44\x00\x00\x43\x36\x00\x00\x39\x7b\x56\x26\x68\x48\x00\x00\x00\x00\x00\x00\x4a\x60\x54\x66\x00\x00\x68\x40\x00\x00\x68\x45\x68\x47\x00\x00\x47\x39\x37\x63\x00\x00\x68\x49\x00\x00\x3f\x5d\x68\x52\x00\x00\x00\x00\x68\x57\x00\x00\x68\x55\x3c\x5c\x3c\x4f\x68\x5b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x68\x5e\x00\x00\x68\x5a\x31\x7a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x30\x58\x44\x33\x38\x4c\x46\x62\x48\x3e\x48\x61\x00\x00\x00\x00\x00\x00\x68\x4f\x68\x54\x68\x56\x00\x00\x39\x71\x68\x58\x57\x75\x00\x00\x44\x7b\x00\x00\x68\x5c\x00\x00\x00\x00\x32\x69\x00\x00\x00\x00\x00\x00\x68\x51\x00\x00\x00\x00\x3c\x6d\x00\x00\x00\x00\x3f\x42\x68\x4d\x56\x79\x00\x00\x41\x78\x32\x71\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x68\x5f\x00\x00\x4a\x41", /* 6800 */ "\x68\x59\x00\x00\x00\x00\x00\x00\x00\x00\x55\x24\x00\x00\x31\x6a\x55\x3b\x68\x4e\x68\x50\x36\x30\x68\x53\x00\x00\x68\x5d\x40\x38\x00\x00\x4a\x77\x00\x00\x4b\x28\x00\x00\x00\x00\x46\x5c\x40\x75\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x68\x69\x00\x00\x00\x00\x00\x00\x50\x23\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x68\x72\x56\x6a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x68\x60\x68\x61\x00\x00\x00\x00\x00\x00\x51\x79\x3a\x4b\x38\x79\x00\x00\x00\x00\x38\x71\x54\x54\x68\x6f\x00\x00\x68\x6e\x68\x6c\x39\x70\x4c\x52\x68\x66\x4e\x26\x3f\x72\x00\x00\x30\x38\x68\x71\x68\x70\x00\x00\x57\x40\x00\x00\x68\x64\x00\x00\x4d\x29\x49\x23\x00\x00\x3b\x38\x3d\x5b\x68\x6a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x68\x62\x68\x63\x68\x65\x35\x35\x68\x67\x47\x45\x68\x6b\x68\x6d\x3d\x30\x57\x2e\x00\x00\x68\x78\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x68\x75\x00\x00\x4d\x30\x68\x76\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 6880 */ "\x00\x00\x41\x3a\x00\x00\x68\x68\x00\x00\x43\x37\x30\x70\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x68\x74\x00\x00\x00\x00\x00\x00\x68\x77\x00\x00\x00\x00\x00\x00\x39\x23\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x49\x52\x00\x00\x00\x00\x00\x00\x43\x4e\x4e\x60\x40\x66\x00\x00\x00\x00\x00\x00\x00\x00\x4b\x73\x00\x00\x4c\x5d\x50\x35\x00\x00\x00\x00\x4a\x61\x00\x00\x68\x73\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3c\x6c\x00\x00\x68\x79\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x43\x5e\x00\x00\x46\x65\x00\x00\x39\x77\x00\x00\x00\x00\x00\x00\x00\x00\x30\x74\x00\x00\x00\x00\x57\x58\x00\x00\x00\x00\x3c\x2c\x00\x00\x45\x6f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4c\x44\x00\x00\x00\x00\x69\x26\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x49\x2d\x00\x00\x69\x22\x40\x62\x00\x00\x00\x00\x00\x00\x3f\x43\x00\x00\x00\x00\x00\x00\x68\x7e\x39\x57\x00\x00\x68\x7b\x00\x00\x00\x00\x00\x00", /* 6900 */ "\x00\x00\x69\x24\x00\x00\x00\x00\x00\x00\x52\x4e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x69\x23\x00\x00\x56\x32\x57\x35\x00\x00\x69\x27\x00\x00\x3d\x37\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x68\x7c\x68\x7d\x00\x00\x00\x00\x00\x00\x69\x21\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4d\x56\x00\x00\x00\x00\x52\x2c\x00\x00\x00\x00\x00\x00\x69\x32\x00\x00\x00\x00\x00\x00\x00\x00\x69\x29\x00\x00\x00\x00\x00\x00\x34\x2a\x00\x00\x34\x3b\x00\x00\x00\x00\x69\x2b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x50\x28\x00\x00\x00\x00\x69\x25\x00\x00\x00\x00\x33\x7e\x00\x00\x00\x00\x69\x2c\x40\x63\x00\x00\x69\x2a\x00\x00\x00\x00\x69\x39\x00\x00\x00\x00\x69\x38\x00\x00\x00\x00\x00\x00\x00\x00\x69\x2e\x00\x00\x00\x00\x68\x7a\x00\x00\x00\x00\x69\x28\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3f\x2c\x69\x31\x69\x3a\x00\x00\x00\x00\x42\x25\x00\x00\x00\x00\x00\x00", /* 6980 */ "\x69\x2f\x00\x00\x38\x45\x00\x00\x69\x2d\x00\x00\x53\x5c\x69\x34\x69\x35\x69\x37\x00\x00\x00\x00\x00\x00\x69\x47\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x46\x69\x45\x00\x00\x00\x00\x69\x30\x00\x00\x00\x00\x69\x3b\x30\x71\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x69\x3c\x55\x25\x00\x00\x00\x00\x69\x3e\x00\x00\x69\x3f\x00\x00\x00\x00\x00\x00\x69\x41\x00\x00\x00\x00\x41\x71\x00\x00\x00\x00\x48\x36\x00\x00\x00\x00\x00\x00\x69\x3d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x69\x42\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x69\x43\x00\x00\x69\x33\x00\x00\x69\x36\x00\x00\x3b\x31\x00\x00\x00\x00\x00\x00\x69\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3c\x77\x00\x00\x00\x00\x00\x00\x69\x44\x69\x46\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x69\x4a\x00\x00\x00\x00\x00\x00\x00\x00\x69\x4e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x32\x5b\x00\x00\x69\x48", /* 6a00 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x37\x2e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x69\x4b\x69\x4c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x55\x41\x00\x00\x44\x23\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x69\x58\x00\x00\x3a\x61\x00\x00\x00\x00\x00\x00\x00\x00\x69\x49\x00\x00\x53\x23\x00\x00\x00\x00\x00\x00\x69\x54\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x69\x57\x69\x50\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x69\x4f\x00\x00\x00\x00\x47\x41\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x69\x52\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x69\x59\x33\x48\x00\x00\x69\x53\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4f\x70\x00\x00\x00\x00\x00\x00\x69\x4d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x33\x77\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x69\x56\x00\x00\x00\x00\x69\x5a\x00\x00\x00\x00\x00\x00", /* 6a80 */ "\x4c\x34\x00\x00\x00\x00\x00\x00\x4f\x2d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x69\x55\x00\x00\x69\x5c\x69\x5b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x69\x5e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x69\x51\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x69\x5d\x00\x00\x69\x5f\x43\x4a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 6b00 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x47\x37\x34\x4e\x3b\x36\x50\x40\x6c\x23\x00\x00\x00\x00\x45\x37\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x53\x7b\x00\x00\x00\x00\x00\x00\x00\x00\x6c\x24\x00\x00\x6c\x25\x46\x5b\x00\x00\x00\x00\x00\x00\x3f\x6e\x00\x00\x00\x00\x00\x00\x00\x00\x6c\x26\x00\x00\x00\x00\x6c\x27\x50\x2a\x00\x00\x47\x38\x00\x00\x00\x00\x38\x68\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6c\x28\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x56\x39\x55\x7d\x34\x4b\x32\x3d\x4e\x64\x46\x67\x00\x00\x00\x00\x4d\x61\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x34\x75\x00\x00\x4b\x40\x3c\x5f\x00\x00\x00\x00\x00\x00", /* 6b80 */ "\x00\x00\x69\x62\x69\x63\x51\x6a\x69\x65\x00\x00\x34\x79\x69\x64\x00\x00\x51\x33\x4a\x62\x32\x50\x00\x00\x69\x68\x00\x00\x00\x00\x00\x00\x00\x00\x69\x66\x69\x67\x00\x00\x00\x00\x56\x33\x00\x00\x00\x00\x00\x00\x69\x69\x69\x6a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x69\x6b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x69\x6c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6c\x2f\x45\x39\x36\x4e\x00\x00\x52\x73\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x35\x6e\x00\x00\x3b\x59\x6c\x31\x00\x00\x00\x00\x52\x63\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4e\x63\x00\x00\x44\x38\x00\x00\x43\x3f\x00\x00\x00\x00\x36\x3e\x58\x39\x31\x48\x31\x4f\x31\x51\x45\x7e\x00\x00\x31\x50\x00\x00\x43\x2b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x55\x31\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6b\x24\x3a\x41\x00\x00\x00\x00\x00\x00\x4c\x3a\x00\x00\x00\x00\x00\x00\x6b\x25\x00\x00\x6b\x27\x00\x00\x00\x00\x00\x00\x6b\x28\x00\x00\x00\x00\x00\x00\x6b\x26\x00\x00\x00\x00", /* 6c00 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6b\x29\x6b\x2b\x6b\x2a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6b\x2c\x00\x00\x4a\x4f\x58\x35\x43\x71\x00\x00\x43\x25\x46\x78\x6b\x2d\x44\x4a\x00\x00\x6b\x2e\x6b\x2f\x6b\x30\x37\x55\x00\x00\x00\x00\x00\x00\x37\x7a\x00\x00\x6b\x31\x47\x62\x00\x00\x6b\x33\x00\x00\x3a\x24\x51\x75\x30\x31\x6b\x32\x6b\x34\x00\x00\x00\x00\x00\x00\x35\x2a\x42\x48\x47\x68\x00\x00\x6b\x35\x00\x00\x4b\x2e\x63\x5f\x00\x00\x00\x00\x53\x40\x00\x00\x00\x00\x00\x00\x00\x00\x59\x5b\x00\x00\x00\x00\x4d\x21\x56\x2d\x47\x73\x00\x00\x00\x00\x00\x00\x59\x60\x3b\x63\x00\x00\x3a\x3a\x63\x62\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4f\x2b\x00\x00\x00\x00\x00\x00\x63\x60\x49\x47\x00\x00\x3a\x39\x00\x00\x00\x00\x00\x00\x51\x34\x63\x61\x48\x6a\x39\x2f\x3d\x2d\x33\x58\x4e\x5b\x00\x00\x00\x00\x4c\x40\x00\x00\x00\x00\x00\x00\x63\x68\x63\x69\x4d\x74\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4c\x2d\x00\x00\x3c\x33\x00\x00\x63\x6a\x00\x00\x63\x6b\x00\x00\x00\x00\x50\x5a\x00\x00\x00\x00\x00\x00\x46\x7b\x37\x5a\x00\x00", /* 6c80 */ "\x00\x00\x47\x5f\x52\x4a\x4e\x56\x00\x00\x63\x64\x63\x6c\x00\x00\x49\x72\x33\x41\x00\x00\x00\x00\x63\x67\x00\x00\x00\x00\x46\x63\x63\x65\x00\x00\x00\x00\x6d\x33\x63\x66\x00\x00\x00\x00\x00\x00\x00\x00\x49\x33\x00\x00\x45\x66\x00\x00\x00\x00\x00\x00\x39\x35\x00\x00\x43\x3b\x00\x00\x63\x63\x45\x3d\x41\x24\x42\x59\x32\x57\x00\x00\x63\x6d\x3b\x26\x44\x2d\x00\x00\x63\x70\x3e\x5a\x00\x00\x00\x00\x63\x7b\x63\x75\x3a\x53\x00\x00\x00\x00\x00\x00\x00\x00\x37\x50\x53\x4d\x00\x00\x56\x4e\x55\x53\x39\x41\x55\x34\x51\x58\x00\x00\x00\x00\x00\x00\x00\x00\x50\x39\x47\x76\x00\x00\x00\x00\x00\x00\x48\x2a\x32\x34\x00\x00\x43\x5a\x00\x00\x00\x00\x00\x00\x63\x6e\x00\x00\x00\x00\x63\x7c\x63\x6f\x37\x28\x63\x77\x63\x74\x00\x00\x00\x00\x00\x00\x37\x3a\x00\x00\x00\x00\x45\x22\x00\x00\x63\x76\x45\x5d\x32\x28\x46\x7c\x00\x00\x44\x60\x00\x00\x00\x00\x57\x22\x00\x00\x40\x61\x63\x79\x00\x00\x00\x00\x63\x7a\x63\x7d\x4c\x29\x63\x73\x00\x00\x53\x3e\x00\x00\x31\x43\x6d\x34\x63\x71\x63\x72\x00\x00\x63\x78\x50\x3a\x46\x43\x54\x73\x63\x7e\x00\x00", /* 6d00 */ "\x00\x00\x3d\x60\x00\x00\x00\x00\x64\x27\x00\x00\x00\x00\x64\x26\x00\x00\x00\x00\x00\x00\x51\x73\x64\x23\x00\x00\x64\x29\x00\x00\x00\x00\x00\x00\x48\x77\x00\x00\x00\x00\x00\x00\x00\x00\x4f\x34\x00\x00\x64\x28\x64\x2e\x42\x65\x00\x00\x00\x00\x36\x34\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3d\x72\x00\x00\x64\x22\x00\x00\x00\x00\x3a\x69\x64\x2a\x00\x00\x00\x00\x64\x2c\x00\x00\x00\x00\x36\x7d\x56\x5e\x64\x32\x00\x00\x64\x2d\x00\x00\x00\x00\x00\x00\x64\x21\x00\x00\x3b\x6e\x4d\x5d\x47\x22\x45\x49\x00\x00\x00\x00\x41\x77\x00\x00\x64\x24\x00\x00\x47\x33\x3d\x2c\x3d\x3d\x64\x25\x00\x00\x57\x47\x32\x62\x00\x00\x64\x2b\x3c\x43\x64\x2f\x00\x00\x3b\x6b\x64\x30\x45\x28\x64\x31\x00\x00\x00\x00\x00\x00\x00\x00\x55\x63\x3f\x23\x00\x00\x64\x3a\x00\x00\x64\x37\x00\x00\x64\x3b\x00\x00\x00\x00\x64\x3d\x00\x00\x00\x00\x46\x56\x00\x00\x00\x00\x3a\x46\x40\x4b\x00\x00\x00\x00\x00\x00\x38\x21\x64\x34\x00\x00\x00\x00\x00\x00\x00\x00\x54\x21\x00\x00\x00\x00\x3a\x23\x3d\x7e\x00\x00\x00\x00\x00\x00\x64\x3c\x00\x00\x00\x00\x00\x00", /* 6d80 */ "\x00\x00\x00\x00\x4d\x3f\x00\x00\x00\x00\x44\x79\x00\x00\x00\x00\x4f\x7b\x49\x66\x00\x00\x00\x00\x53\x3f\x00\x00\x4f\x51\x00\x00\x00\x00\x64\x33\x00\x00\x64\x38\x64\x39\x4c\x69\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4c\x4e\x00\x00\x40\x54\x64\x35\x41\x30\x64\x36\x4e\x50\x00\x00\x3b\x41\x35\x53\x00\x00\x48\x73\x3d\x27\x55\x47\x49\x2c\x38\x22\x64\x4a\x00\x00\x00\x00\x64\x4c\x51\x44\x00\x00\x00\x00\x52\x3a\x00\x00\x00\x00\x3a\x2d\x00\x00\x00\x00\x3a\x54\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x64\x43\x35\x6d\x00\x00\x00\x00\x00\x00\x57\x4d\x64\x40\x4f\x7d\x64\x3f\x00\x00\x00\x00\x00\x00\x41\x5c\x4c\x4a\x00\x00\x00\x00\x00\x00\x00\x00\x4a\x67\x00\x00\x00\x00\x00\x00\x00\x00\x44\x57\x00\x00\x4c\x54\x64\x48\x00\x00\x00\x00\x00\x00\x64\x47\x64\x41\x00\x00\x64\x44\x35\x2d\x00\x00\x00\x00\x53\x59\x00\x00\x64\x46\x00\x00\x00\x00\x00\x00\x00\x00\x52\x79\x34\x63\x00\x00\x3b\x34\x00\x00\x00\x00\x49\x6e\x00\x00\x34\x3e\x00\x00\x00\x00\x00\x00\x3b\x6c\x00\x00\x51\x4d\x00\x00\x4c\x6d\x6d\x35\x00\x00\x00\x00\x00\x00", /* 6e00 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x47\x65\x00\x00\x00\x00\x00\x00\x00\x00\x54\x28\x00\x00\x64\x4b\x57\x55\x64\x42\x00\x00\x3d\x25\x64\x45\x00\x00\x00\x00\x53\x66\x00\x00\x64\x49\x49\x78\x00\x00\x00\x00\x64\x3e\x00\x00\x00\x00\x53\x65\x00\x00\x00\x00\x47\x7e\x36\x49\x00\x00\x54\x7c\x32\x33\x64\x57\x00\x00\x00\x00\x00\x00\x4e\x42\x00\x00\x64\x4d\x00\x00\x4e\x3c\x00\x00\x38\x5b\x00\x00\x00\x00\x64\x56\x00\x00\x3f\x4a\x00\x00\x00\x00\x00\x00\x53\x4e\x00\x00\x43\x6c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x45\x48\x64\x58\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4d\x44\x64\x4f\x00\x00\x00\x00\x00\x00\x00\x00\x64\x54\x64\x55\x00\x00\x3a\x7e\x00\x00\x4f\x66\x00\x00\x00\x00\x55\x3f\x00\x00\x00\x00\x00\x00\x64\x52\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x64\x50\x00\x00\x00\x00\x64\x4e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4d\x65\x4a\x2a", /* 6e80 */ "\x00\x00\x00\x00\x00\x00\x40\x23\x00\x00\x3d\x26\x64\x53\x00\x00\x00\x00\x38\x48\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x64\x67\x54\x34\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x64\x5b\x00\x00\x00\x00\x00\x00\x41\x6f\x00\x00\x00\x00\x64\x69\x00\x00\x00\x00\x52\x67\x00\x00\x00\x00\x64\x5f\x00\x00\x64\x60\x00\x00\x00\x00\x4f\x2a\x00\x00\x00\x00\x00\x00\x00\x00\x4b\x5d\x00\x00\x64\x5a\x64\x51\x00\x00\x64\x65\x00\x00\x48\x5c\x64\x63\x00\x00\x00\x00\x44\x67\x64\x62\x00\x00\x64\x61\x00\x00\x00\x00\x00\x00\x33\x7c\x64\x68\x00\x00\x00\x00\x00\x00\x00\x00\x35\x61\x00\x00\x00\x00\x00\x00\x57\x4c\x00\x00\x00\x00\x00\x00\x64\x66\x00\x00\x3b\x2c\x00\x00\x57\x52\x4c\x4f\x6b\x78\x00\x00\x64\x64\x00\x00\x00\x00\x39\x76\x00\x00\x00\x00\x00\x00\x56\x4d\x64\x59\x64\x5c\x42\x7a\x64\x5e\x00\x00\x42\x4b\x40\x44\x42\x50\x00\x00\x31\x75\x4c\x32\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x35\x4e\x00\x00\x00\x00\x00\x00\x00\x00\x64\x6f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 6f00 */ "\x00\x00\x00\x00\x46\x2f\x00\x00\x00\x00\x00\x00\x46\x61\x00\x00\x00\x00\x64\x75\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x42\x29\x00\x00\x00\x00\x00\x00\x40\x6c\x51\x5d\x64\x6e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x44\x2e\x00\x00\x00\x00\x00\x00\x64\x6d\x00\x00\x00\x00\x00\x00\x00\x00\x64\x76\x64\x74\x42\x7e\x00\x00\x64\x5d\x00\x00\x64\x70\x00\x00\x4a\x7e\x00\x00\x55\x44\x00\x00\x00\x00\x64\x71\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x51\x7a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x64\x6b\x64\x6c\x00\x00\x00\x00\x00\x00\x64\x72\x00\x00\x4e\x2b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x45\x4b\x00\x00\x00\x00\x00\x00\x47\x31\x00\x00\x42\x3a\x00\x00\x00\x00\x00\x00\x64\x6a\x00\x00\x00\x00\x00\x00\x41\x4a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4c\x36\x33\x31\x00\x00\x00\x00\x00\x00\x64\x7b\x00\x00\x64\x73\x00\x00\x00\x00\x00\x00\x64\x7a\x00\x00\x64\x7d\x00\x00\x64\x7c\x00\x00\x00\x00\x00\x00", /* 6f80 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x33\x4e\x00\x00\x00\x00\x00\x00\x33\x3a\x64\x77\x00\x00\x00\x00\x64\x79\x64\x78\x45\x6c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x3d\x00\x00\x00\x00\x00\x00\x00\x00\x54\x68\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x65\x22\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x30\x44\x00\x00\x00\x00\x65\x24\x00\x00\x00\x00\x65\x23\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3c\x24\x00\x00\x65\x25\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x65\x21\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x64\x7e\x31\x74\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x65\x28\x00\x00\x65\x29\x65\x26\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x65\x27\x65\x2a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 7000 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x46\x59\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x65\x2b\x65\x2d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x65\x2c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x65\x2f\x00\x00\x00\x00\x00\x00\x65\x2e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x39\x60\x00\x00\x00\x00\x65\x30\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x65\x31\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3b\x70\x6c\x61\x43\x70\x00\x00\x35\x46\x3b\x52\x00\x00\x00\x00\x00\x00\x00\x00\x41\x69\x54\x6e\x00\x00\x3e\x44\x00\x00\x00\x00\x00\x00\x57\x46\x00\x00\x54\x56\x32\x53", /* 7080 */ "\x6c\x3e\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x41\x00\x00\x00\x00\x00\x00\x42\x2f\x34\x36\x00\x00\x00\x00\x00\x00\x51\x57\x00\x00\x00\x00\x00\x00\x33\x34\x00\x00\x48\x32\x3f\x3b\x6c\x40\x00\x00\x00\x00\x56\x4b\x00\x00\x00\x00\x6c\x3f\x6c\x41\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6c\x45\x3e\x66\x4c\x3f\x45\x5a\x3e\x3c\x00\x00\x6c\x46\x00\x00\x31\x7e\x00\x00\x00\x00\x00\x00\x6c\x44\x55\x28\x35\x63\x00\x00\x6c\x42\x41\x36\x33\x63\x00\x00\x00\x00\x6c\x43\x4b\x38\x40\x43\x4c\x7e\x00\x00\x00\x00\x00\x00\x00\x00\x41\x52\x00\x00\x6c\x48\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3a\x66\x40\x53\x00\x00\x56\x72\x00\x00\x00\x00\x00\x00\x51\x4c\x00\x00\x00\x00\x00\x00\x00\x00\x3f\x3e\x00\x00\x37\x33\x49\x55\x6c\x47\x3b\x62\x00\x00\x4c\x4c\x3d\x7d\x48\x48\x00\x00\x4f\x29\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4d\x69\x00\x00\x45\x6b\x00\x00\x00\x00\x00\x00\x37\x69\x00\x00\x00\x00", /* 7100 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x51\x49\x3a\x38\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6c\x49\x00\x00\x00\x00\x6c\x4a\x00\x00\x3b\x40\x6c\x4b\x00\x00\x6c\x62\x31\x3a\x37\x59\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3d\x39\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6c\x4c\x51\x66\x6c\x4d\x00\x00\x00\x00\x00\x00\x00\x00\x48\x3b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6c\x51\x00\x00\x00\x00\x00\x00\x00\x00\x6c\x53\x00\x00\x3b\x4d\x00\x00\x3c\x65\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6c\x4f\x00\x00\x49\x37\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x43\x3a\x00\x00\x6c\x63\x55\x55\x6c\x50\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x56\x73\x00\x00\x00\x00\x00\x00\x6c\x52\x6c\x4e\x00\x00\x00\x00\x00\x00\x00\x00\x6c\x54\x00\x00\x6c\x55\x00\x00\x00\x00\x49\x3f\x00\x00\x00\x00", /* 7180 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x4f\x28\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x50\x5c\x00\x00\x00\x00\x00\x00\x00\x00\x51\x2c\x00\x00\x00\x00\x00\x00\x00\x00\x48\x5b\x00\x00\x00\x00\x00\x00\x6c\x56\x4e\x75\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4a\x6c\x6c\x5a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6c\x59\x00\x00\x00\x00\x00\x00\x30\x3e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6c\x57\x00\x00\x6c\x58\x00\x00\x00\x00\x00\x00\x6c\x64\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x48\x3c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x41\x47\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6c\x5c\x51\x60\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6c\x5b\x00\x00\x00\x00\x00\x00\x00\x00\x54\x6f\x00\x00\x6c\x5d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5b\x46\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6c\x5e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 7200 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x31\x2c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6c\x5f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6c\x60\x00\x00\x57\x26\x00\x00\x45\x40\x00\x00\x00\x00\x00\x00\x6b\x3c\x30\x2e\x00\x00\x00\x00\x00\x00\x3e\x74\x38\x38\x52\x2f\x30\x56\x35\x79\x00\x00\x58\x33\x00\x00\x4b\x2c\x00\x00\x63\x5d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x46\x2c\x30\x66\x00\x00\x00\x00\x00\x00\x45\x46\x6b\x39\x00\x00\x00\x00\x00\x00\x00\x00\x6b\x3a\x00\x00\x00\x00\x00\x00\x6b\x3b\x00\x00\x00\x00\x51\x40\x00\x00\x45\x23\x00\x00\x6a\x72\x00\x00\x44\x32\x00\x00\x44\x35\x40\x4e\x00\x00\x00\x00\x00\x00\x6a\x73\x44\x41\x00\x00\x4e\x6f\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x70\x6a\x74\x00\x00\x00\x00\x49\x7c\x00\x00\x00\x00\x47\x23\x00\x00\x00\x00\x00\x00\x4c\x58\x4e\x7e\x00\x00\x00\x00\x00\x00\x6a\x75\x6a\x76", /* 7280 */ "\x4f\x2c\x40\x67\x00\x00\x00\x00\x6a\x77\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x36\x3f\x6a\x78\x00\x00\x6a\x79\x00\x00\x6a\x7a\x00\x00\x00\x00\x6a\x7b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x71\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x48\x2e\x61\x6b\x00\x00\x37\x38\x61\x6c\x00\x00\x00\x00\x00\x00\x61\x6d\x00\x00\x57\x34\x61\x6e\x61\x6f\x53\x4c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x61\x71\x3f\x71\x61\x70\x35\x52\x00\x00\x00\x00\x00\x00\x31\x37\x00\x00\x00\x00\x00\x00\x00\x00\x61\x73\x61\x72\x00\x00\x3a\x7c\x00\x00\x61\x74\x00\x00\x00\x00\x00\x00\x00\x00\x39\x37\x00\x00\x3e\x51\x00\x00\x00\x00\x00\x00\x00\x00\x44\x7c\x00\x00\x3a\x5d\x3d\x46\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x61\x75\x61\x77\x00\x00\x00\x00\x36\x40\x4f\x41\x4a\x28\x61\x76\x55\x78\x53\x7c\x61\x78\x61\x7c\x61\x79\x00\x00\x00\x00\x61\x7a\x40\x6a\x00\x00\x61\x7e\x62\x21\x40\x47\x00\x00\x00\x00\x00\x00", /* 7300 */ "\x00\x00\x61\x7b\x00\x00\x61\x7d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x62\x25\x00\x00\x00\x00\x00\x00\x41\x54\x00\x00\x00\x00\x00\x00\x00\x00\x62\x23\x00\x00\x62\x28\x32\x7e\x62\x22\x00\x00\x00\x00\x00\x00\x43\x4d\x32\x42\x62\x27\x62\x26\x00\x00\x00\x00\x62\x24\x62\x29\x00\x00\x00\x00\x62\x2b\x00\x00\x00\x00\x00\x00\x50\x49\x56\x6d\x43\x28\x62\x2c\x00\x00\x4f\x57\x00\x00\x00\x00\x62\x2e\x00\x00\x00\x00\x3a\x6f\x00\x00\x00\x00\x69\x60\x62\x2d\x62\x2a\x00\x00\x00\x00\x00\x00\x00\x00\x3b\x2b\x54\x33\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x62\x30\x00\x00\x00\x00\x62\x2f\x00\x00\x69\x61\x00\x00\x00\x00\x00\x00\x00\x00\x62\x31\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x62\x32\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x62\x33\x4c\x21\x00\x00\x62\x34\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x62\x35\x00\x00", /* 7380 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x50\x7e\x00\x00\x00\x00\x42\x4a\x00\x00\x53\x71\x00\x00\x4d\x75\x00\x00\x00\x00\x67\x60\x00\x00\x00\x00\x67\x61\x00\x00\x00\x00\x00\x00\x00\x00\x3e\x41\x00\x00\x00\x00\x00\x00\x00\x00\x42\x6a\x00\x00\x00\x00\x00\x00\x67\x64\x00\x00\x00\x00\x67\x63\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4d\x66\x00\x00\x43\x35\x00\x00\x00\x00\x67\x62\x3b\x37\x4f\x56\x00\x00\x41\x61\x67\x69\x00\x00\x00\x00\x00\x00\x67\x68\x00\x00\x00\x00\x67\x74\x32\x23\x00\x00\x00\x00\x00\x00\x00\x00\x67\x6a\x00\x00\x67\x66\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x67\x6c\x67\x6b\x49\x3a\x00\x00\x00\x00\x55\x64\x00\x00\x67\x65\x37\x29\x67\x67\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x67\x6e\x00\x00\x00\x00\x00\x00\x00\x00\x67\x73\x00\x00\x56\x69\x00\x00\x00\x00\x00\x00\x00\x00\x67\x6d\x00\x00\x67\x72\x00\x00\x67\x71\x00\x00\x00\x00\x00\x00\x30\x60\x00\x00\x00\x00\x00\x00\x00\x00\x67\x75\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 7400 */ "\x00\x00\x00\x00\x00\x00\x47\x72\x00\x00\x40\x45\x40\x6d\x00\x00\x00\x00\x41\x70\x67\x70\x00\x00\x00\x00\x00\x00\x00\x00\x67\x76\x4b\x76\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x68\x22\x68\x21\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x57\x41\x00\x00\x00\x00\x67\x7a\x67\x79\x00\x00\x67\x7b\x00\x00\x67\x77\x00\x00\x67\x7e\x00\x00\x67\x7d\x00\x00\x67\x7c\x00\x00\x00\x00\x41\x55\x47\x59\x45\x7d\x45\x43\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x47\x6d\x00\x00\x00\x00\x00\x00\x00\x00\x68\x23\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x68\x26\x00\x00\x68\x25\x00\x00\x68\x27\x3a\x77\x67\x78\x68\x24\x00\x00\x48\x70\x49\x2a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x68\x29\x00\x00\x00\x00\x39\x65\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x51\x7e\x68\x28\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x68\x2a\x00\x00", /* 7480 */ "\x68\x2d\x68\x2e\x00\x00\x41\x27\x00\x00\x00\x00\x00\x00\x68\x2f\x00\x00\x00\x00\x00\x00\x68\x30\x00\x00\x00\x00\x68\x2c\x00\x00\x68\x34\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x68\x2b\x00\x00\x68\x31\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x68\x35\x68\x32\x68\x33\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x68\x37\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x68\x36\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x39\x4f\x00\x00\x70\x2c\x00\x00\x70\x2d\x00\x00\x46\x30\x30\x6a\x48\x3f\x00\x00\x4d\x5f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4e\x4d\x6a\x31\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x32\x00\x00\x46\x3f\x34\x49\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x33", /* 7500 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x55\x67\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5d\x79\x00\x00\x6a\x34\x00\x00\x6a\x35\x00\x00\x6a\x36\x00\x00\x00\x00\x00\x00\x00\x00\x38\x4a\x5f\x30\x49\x75\x00\x00\x4c\x70\x00\x00\x00\x00\x49\x7a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x49\x7b\x00\x00\x00\x00\x53\x43\x4b\x26\x00\x00\x38\x26\x70\x2e\x31\x42\x00\x00\x65\x38\x4c\x6f\x53\x49\x3c\x57\x49\x6a\x00\x00\x35\x67\x00\x00\x44\x50\x35\x69\x00\x00\x6e\x2e\x3b\x2d\x00\x00\x00\x00\x67\x5e\x00\x00\x6e\x2f\x00\x00\x00\x00\x00\x00\x00\x00\x33\x29\x00\x00\x00\x00\x6e\x32\x00\x00\x00\x00\x6e\x31\x3d\x67\x00\x00\x6e\x30\x4e\x37\x00\x00\x00\x00\x00\x00\x00\x00\x45\x4f\x00\x00\x00\x00\x00\x00\x00\x00\x41\x74\x5b\x4e\x6e\x33\x50\x73\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x42\x54\x46\x68\x00\x00\x00\x00\x00\x00\x37\x2c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6e\x34\x00\x00\x33\x6b\x00\x00\x00\x00\x00\x00\x3b\x7b\x6e\x35\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x67\x5c", /* 7580 */ "\x00\x00\x00\x00\x00\x00\x6e\x36\x00\x00\x00\x00\x3d\x2e\x00\x00\x00\x00\x00\x00\x00\x00\x71\x62\x00\x00\x00\x00\x00\x00\x4a\x68\x00\x00\x52\x49\x70\x5a\x00\x00\x70\x5b\x00\x00\x70\x5c\x41\x46\x00\x00\x38\x6d\x3e\x4e\x00\x00\x00\x00\x70\x5e\x00\x00\x45\x31\x70\x5d\x51\x71\x00\x00\x70\x60\x30\x4c\x3d\x6a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x52\x5f\x70\x5f\x00\x00\x34\x2f\x37\x68\x70\x66\x70\x65\x46\x23\x70\x61\x70\x62\x34\x43\x00\x00\x00\x00\x70\x63\x55\x6e\x00\x00\x00\x00\x4c\x5b\x3e\x52\x3c\x32\x00\x00\x00\x00\x00\x00\x70\x68\x70\x67\x70\x64\x32\x21\x00\x00\x56\x22\x53\x38\x3e\x37\x48\x2c\x00\x00\x00\x00\x70\x6a\x00\x00\x00\x00\x00\x00\x00\x00\x51\x77\x00\x00\x56\x4c\x3a\x5b\x70\x69\x00\x00\x36\x3b\x00\x00\x00\x00\x4d\x34\x00\x00\x00\x00\x46\x26\x00\x00\x00\x00\x00\x00\x41\x21\x70\x6b\x70\x6e\x00\x00\x70\x6d\x70\x70\x70\x6c\x00\x00\x3b\x3e\x70\x6f\x00\x00\x00\x00\x00\x00\x00\x00\x4c\x35\x70\x72\x00\x00\x00\x00\x33\x55\x00\x00\x00\x00\x00\x00\x00\x00\x31\x54\x00\x00\x00\x00\x70\x73\x00\x00\x00\x00\x70\x74", /* 7600 */ "\x70\x76\x34\x61\x00\x00\x70\x71\x00\x00\x70\x77\x00\x00\x00\x00\x00\x00\x00\x00\x70\x7a\x00\x00\x70\x78\x00\x00\x00\x00\x00\x00\x70\x75\x00\x00\x00\x00\x00\x00\x00\x00\x70\x7d\x00\x00\x70\x79\x70\x7c\x70\x7e\x00\x00\x71\x21\x00\x00\x00\x00\x00\x00\x4e\x41\x71\x24\x00\x00\x71\x23\x00\x00\x41\x76\x70\x7b\x4a\x5d\x00\x00\x00\x00\x34\x71\x31\x71\x4c\x31\x00\x00\x71\x26\x00\x00\x00\x00\x71\x27\x00\x00\x00\x00\x71\x2c\x55\x4e\x71\x29\x00\x00\x00\x00\x48\x33\x00\x00\x00\x00\x00\x00\x71\x22\x00\x00\x71\x2b\x71\x28\x71\x25\x00\x00\x00\x00\x71\x2a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x30\x29\x71\x2d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x71\x2f\x00\x00\x71\x31\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x71\x30\x00\x00\x71\x2e\x00\x00\x00\x00\x00\x00\x00\x00\x51\x22\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x71\x32\x00\x00\x00\x00\x00\x00\x71\x33\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x39\x6f\x00\x00\x00\x00\x35\x47\x00\x00\x30\x57\x30\x59\x00\x00", /* 7680 */ "\x00\x00\x00\x00\x54\x6d\x00\x00\x35\x44\x00\x00\x3d\x54\x3b\x4a\x70\x27\x00\x00\x00\x00\x38\x5e\x00\x00\x00\x00\x70\x28\x00\x00\x00\x00\x30\x28\x00\x00\x70\x29\x00\x00\x00\x00\x4d\x6e\x00\x00\x00\x00\x70\x2a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x70\x2b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x46\x24\x00\x00\x00\x00\x56\x65\x71\x64\x00\x00\x71\x65\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x43\x73\x00\x00\x00\x00\x53\x5b\x00\x00\x00\x00\x56\x51\x45\x68\x00\x00\x53\x2f\x00\x00\x52\x66\x00\x00\x00\x00\x6e\x41\x30\x3b\x55\x35\x51\x4e\x3c\x60\x3a\x50\x00\x00\x3f\x78\x00\x00\x38\x47\x35\x41\x45\x4c\x00\x00\x00\x00\x4a\x22\x00\x00\x00\x00\x00\x00\x43\x4b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6e\x42\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x44\x3f\x36\x22\x00\x00\x6d\x6c\x43\x24\x00\x00\x56\x31\x00\x00\x00\x00\x00\x00\x4f\x60\x6d\x6f\x00\x00\x00\x00\x45\x4e\x00\x00\x36\x5c\x00\x00", /* 7700 */ "\x00\x00\x4a\x21\x00\x00\x00\x00\x6d\x6d\x00\x00\x00\x00\x6d\x70\x6d\x71\x43\x3c\x00\x00\x3f\x34\x00\x00\x6d\x6e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6d\x74\x6d\x72\x00\x00\x00\x00\x00\x00\x00\x00\x55\x66\x43\x5f\x00\x00\x6d\x73\x00\x00\x00\x00\x00\x00\x6d\x76\x00\x00\x55\x23\x51\x23\x00\x00\x00\x00\x00\x00\x6d\x75\x00\x00\x43\x50\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6d\x77\x3f\x74\x3e\x6c\x6d\x78\x00\x00\x4c\x77\x00\x00\x51\x5b\x00\x00\x00\x00\x00\x00\x57\x45\x55\x76\x00\x00\x6d\x7c\x00\x00\x00\x00\x00\x00\x6d\x7b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6d\x79\x6d\x7a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6d\x7d\x3e\x26\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4b\x2f\x6e\x21\x36\x3d\x00\x00\x6e\x22\x44\x40\x00\x00\x6d\x7e\x00\x00\x00\x00\x3d\x5e\x32\x47\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x36\x43\x00\x00\x00\x00\x00\x00\x6e\x25\x58\x3a\x6e\x23", /* 7780 */ "\x6e\x26\x00\x00\x00\x00\x00\x00\x43\x69\x33\x72\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6e\x27\x6e\x24\x4f\x39\x00\x00\x00\x00\x6e\x28\x42\x77\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6e\x29\x6e\x2a\x00\x00\x5e\x2b\x00\x00\x00\x00\x46\x33\x00\x00\x47\x46\x00\x00\x56\x75\x35\x49\x00\x00\x4b\x32\x00\x00\x00\x00\x00\x00\x6e\x2b\x00\x00\x00\x00\x4d\x2b\x00\x00\x6e\x2c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x55\x30\x00\x00\x6e\x2d\x00\x00\x76\x44\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5b\x47\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x34\x23\x00\x00\x00\x00\x00\x00\x43\x2c\x71\x66\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4a\x38\x52\x53\x00\x00\x56\x2a\x00\x00\x6f\x72\x00\x00\x3e\x58\x00\x00\x3d\x43\x6f\x73\x36\x4c\x30\x2b\x00\x00\x00\x00\x00\x00\x00\x00\x4a\x2f\x00\x00\x00\x00\x6d\x36\x00\x00\x6d\x37\x00\x00\x00\x00\x00\x00\x00\x00\x4e\x79\x37\x2f\x3f\x73", /* 7800 */ "\x6d\x38\x42\x6b\x49\x30\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6d\x39\x00\x00\x00\x00\x46\x76\x3f\x33\x00\x00\x00\x00\x00\x00\x6d\x3c\x45\x78\x00\x00\x51\x50\x00\x00\x57\x29\x6d\x3a\x6d\x3b\x00\x00\x51\x62\x00\x00\x6d\x3f\x6d\x40\x00\x00\x6d\x44\x00\x00\x00\x00\x00\x00\x6d\x48\x00\x00\x6d\x46\x6d\x4e\x55\x68\x00\x00\x6d\x49\x00\x00\x00\x00\x6d\x47\x6d\x3e\x00\x00\x00\x00\x45\x69\x00\x00\x00\x00\x00\x00\x46\x46\x00\x00\x00\x00\x49\x69\x54\x52\x6d\x41\x6d\x42\x6d\x43\x6d\x45\x00\x00\x40\x79\x00\x00\x34\x21\x00\x00\x00\x00\x00\x00\x00\x00\x39\x68\x00\x00\x6d\x50\x00\x00\x00\x00\x00\x00\x00\x00\x6d\x51\x00\x00\x6d\x4a\x00\x00\x6d\x4f\x00\x00\x4e\x78\x00\x00\x00\x00\x4b\x36\x6d\x4c\x6d\x4d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4f\x75\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6d\x52\x41\x72\x53\x32\x6d\x4b\x48\x37\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3c\x6f\x00\x00\x00\x00\x00\x00\x00\x00\x45\x70\x00\x00\x00\x00\x00\x00", /* 7880 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6d\x56\x00\x00\x35\x6f\x00\x00\x00\x00\x42\x35\x30\x2d\x4b\x69\x00\x00\x00\x00\x31\x2e\x00\x00\x6d\x54\x00\x00\x00\x00\x00\x00\x4d\x6b\x35\x62\x00\x00\x6d\x55\x6d\x53\x6d\x57\x00\x00\x00\x00\x35\x7a\x00\x00\x6d\x58\x00\x00\x6d\x59\x00\x00\x6d\x5c\x00\x00\x31\x4c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x45\x76\x3c\x6e\x6d\x5a\x4c\x3c\x32\x6a\x00\x00\x00\x00\x00\x00\x00\x00\x6d\x5b\x00\x00\x00\x00\x00\x00\x00\x00\x44\x6b\x00\x00\x00\x00\x34\x45\x00\x00\x00\x00\x00\x00\x30\x75\x00\x00\x00\x00\x00\x00\x6d\x5f\x40\x5a\x34\x68\x00\x00\x00\x00\x00\x00\x00\x00\x45\x4d\x00\x00\x00\x00\x00\x00\x6d\x5d\x3f\x44\x00\x00\x00\x00\x00\x00\x6d\x5e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x44\x25\x00\x00\x00\x00\x00\x00\x6d\x60\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6d\x61\x00\x00\x6d\x63\x00\x00\x00\x00\x41\x57\x00\x00\x00\x00\x3b\x47\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 7900 */ "\x00\x00\x3d\x38\x00\x00\x00\x00\x00\x00\x6d\x62\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6d\x64\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6d\x66\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6d\x65\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6d\x67\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4a\x3e\x6c\x6a\x40\x71\x00\x00\x49\x67\x00\x00\x6c\x6b\x46\x6e\x00\x00\x00\x00\x00\x00\x00\x00\x6c\x6c\x00\x00\x46\x6d\x6c\x6d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6c\x70\x00\x00\x00\x00\x57\x66\x6c\x73\x00\x00\x00\x00\x6c\x71\x6c\x6e\x6c\x6f\x57\x23\x49\x71\x4b\x6e\x6c\x74\x00\x00\x6c\x72\x00\x00\x00\x00\x4f\x69\x00\x00\x6c\x76\x46\x31\x00\x00\x00\x00\x00\x00\x00\x00\x3c\x40\x00\x00\x6c\x75\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x35\x3b\x3b\x76\x00\x00\x6c\x77\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 7980 */ "\x59\x77\x3d\x7b\x00\x00\x00\x00\x42\x3b\x6c\x78\x00\x00\x00\x00\x00\x00\x00\x00\x6c\x79\x00\x00\x00\x00\x00\x00\x00\x00\x38\x23\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6c\x7a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6c\x7b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6c\x7c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x53\x6d\x58\x2e\x40\x6b\x00\x00\x47\x5d\x3a\x4c\x00\x00\x50\x63\x4b\x3d\x00\x00\x4d\x3a\x00\x00\x00\x00\x38\x51\x00\x00\x00\x00\x31\x7c\x00\x00\x47\x6f\x00\x00\x56\x56\x00\x00\x00\x00\x00\x00\x3f\x46\x43\x6b\x00\x00\x00\x00\x6f\x75\x00\x00\x00\x00\x43\x58\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x57\x62\x00\x00\x00\x00\x00\x00\x6f\x77\x33\x53\x00\x00\x47\x58\x51\x6d\x00\x00\x56\x48\x00\x00\x6f\x78\x00\x00\x6f\x76\x00\x00\x3b\x7d\x33\x46\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3d\x55\x00\x00\x00\x00\x52\x46\x00\x00\x3b\x60\x00\x00\x00\x00", /* 7a00 */ "\x4f\x21\x00\x00\x6f\x7c\x6f\x7b\x00\x00\x00\x00\x6f\x79\x00\x00\x00\x00\x00\x00\x00\x00\x33\x4c\x00\x00\x49\x54\x4b\x30\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6f\x7e\x00\x00\x00\x00\x30\x5e\x00\x00\x00\x00\x56\x49\x00\x00\x00\x00\x00\x00\x6f\x7d\x00\x00\x33\x6d\x00\x00\x00\x00\x76\x55\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4e\x48\x00\x00\x00\x00\x00\x00\x70\x22\x00\x00\x70\x21\x00\x00\x35\x3e\x3c\x5a\x3b\x7c\x00\x00\x38\x65\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x44\x42\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x70\x23\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4b\x6b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x70\x26\x00\x00\x00\x00\x00\x00\x51\x28\x00\x00\x3e\x3f\x47\x6e\x71\x36\x71\x37\x3f\x55\x00\x00\x00\x00\x00\x00\x00\x00\x34\x29", /* 7a80 */ "\x71\x38\x4d\x3b\x00\x00\x47\x54\x55\x2d\x00\x00\x71\x39\x00\x00\x71\x3a\x00\x00\x00\x00\x00\x00\x00\x00\x47\x4f\x00\x00\x00\x00\x00\x00\x52\x24\x56\x4f\x00\x00\x00\x00\x71\x3b\x3d\x51\x34\x30\x3e\x3d\x00\x00\x00\x00\x00\x00\x34\x5c\x4e\x51\x00\x00\x3f\x5f\x71\x3d\x00\x00\x00\x00\x00\x00\x00\x00\x3f\x7a\x71\x3c\x00\x00\x71\x3f\x00\x00\x00\x00\x00\x00\x71\x3e\x71\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x71\x41\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x41\x7e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x41\x22\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4a\x7a\x00\x00\x00\x00\x55\x3e\x00\x00\x00\x00\x00\x00\x00\x00\x3e\x3a\x3e\x39\x55\x42\x00\x00\x00\x00\x3f\x22\x00\x00\x4d\x2f\x71\x35\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3d\x5f\x00\x00\x36\x4b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x56\x71\x73\x43\x00\x00\x00\x00\x73\x44\x00\x00\x38\x4d", /* 7b00 */ "\x00\x00\x00\x00\x00\x00\x73\x46\x73\x47\x00\x00\x30\x4a\x00\x00\x73\x45\x00\x00\x73\x49\x4b\x71\x00\x00\x00\x00\x00\x00\x73\x4b\x00\x00\x50\x26\x00\x00\x00\x00\x31\x4a\x73\x48\x00\x00\x00\x00\x00\x00\x73\x4f\x00\x00\x35\x51\x00\x00\x00\x00\x73\x57\x00\x00\x73\x52\x00\x00\x00\x00\x00\x00\x73\x54\x73\x53\x37\x7b\x00\x00\x31\x3f\x00\x00\x73\x4e\x73\x4a\x35\x5a\x00\x00\x73\x50\x00\x00\x00\x00\x73\x51\x00\x00\x73\x55\x00\x00\x00\x00\x00\x00\x00\x00\x73\x4d\x00\x00\x3c\x63\x00\x00\x41\x7d\x00\x00\x73\x56\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x73\x5a\x00\x00\x73\x4c\x00\x00\x35\x48\x00\x00\x3d\x6e\x73\x5c\x00\x00\x00\x00\x37\x24\x3f\x70\x56\x7e\x4d\x32\x00\x00\x34\x70\x00\x00\x32\x5f\x00\x00\x73\x58\x00\x00\x73\x59\x49\x38\x00\x00\x73\x5d\x00\x00\x00\x00\x73\x5e\x00\x00\x73\x61\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x73\x5f\x00\x00\x00\x00\x73\x63\x73\x62\x00\x00\x00\x00\x73\x5b\x00\x00\x3f\x6a\x00\x00\x33\x6f\x00\x00\x73\x60\x00\x00\x00\x00\x47\x29\x00\x00", /* 7b80 */ "\x3c\x72\x00\x00\x00\x00\x00\x00\x00\x00\x73\x6b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x39\x3f\x00\x00\x00\x00\x73\x64\x00\x00\x00\x00\x00\x00\x32\x2d\x3b\x7e\x00\x00\x4b\x63\x00\x00\x00\x00\x00\x00\x00\x00\x73\x6d\x73\x69\x00\x00\x00\x00\x00\x00\x39\x5c\x73\x6e\x00\x00\x00\x00\x00\x00\x73\x65\x73\x66\x73\x6a\x42\x61\x73\x6c\x73\x6f\x73\x68\x3c\x7d\x00\x00\x00\x00\x00\x00\x4f\x64\x00\x00\x00\x00\x73\x70\x00\x00\x00\x00\x00\x00\x73\x67\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x73\x72\x00\x00\x00\x00\x00\x00\x00\x00\x57\x2d\x46\x2a\x00\x00\x00\x00\x00\x00\x00\x00\x73\x73\x00\x00\x00\x00\x00\x00\x00\x00\x73\x71\x00\x00\x42\x28\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x38\x5d\x73\x75\x00\x00\x00\x00\x73\x74\x00\x00\x00\x00\x00\x00\x34\x5b\x00\x00\x00\x00\x00\x00\x73\x76\x73\x77\x00\x00\x00\x00\x00\x00\x73\x78\x00\x00\x00\x00\x00\x00\x40\x3a\x00\x00\x00\x00\x40\x69\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x45\x71\x00\x00\x00\x00\x00\x00\x00\x00\x73\x7b\x00\x00\x73\x7a\x00\x00", /* 7c00 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x34\x58\x00\x00\x00\x00\x00\x00\x73\x7e\x73\x79\x00\x00\x00\x00\x73\x7c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x73\x7d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x74\x21\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x74\x23\x3b\x49\x00\x00\x00\x00\x74\x22\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x74\x24\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x32\x3e\x74\x26\x74\x25\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3c\x2e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x43\x57\x59\x61\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x60\x74\x4c\x57\x51\x00\x00\x00\x00", /* 7c80 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x37\x5b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x74\x4e\x41\x23\x00\x00\x00\x00\x46\x49\x00\x00\x34\x56\x55\x33\x00\x00\x00\x00\x00\x00\x74\x50\x74\x4f\x74\x51\x4b\x5a\x00\x00\x00\x00\x74\x52\x00\x00\x54\x41\x56\x60\x00\x00\x00\x00\x00\x00\x00\x00\x37\x60\x00\x00\x00\x00\x00\x00\x41\x38\x00\x00\x00\x00\x41\x3b\x74\x53\x3e\x2c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x34\x62\x00\x00\x00\x00\x74\x54\x74\x55\x3e\x2b\x00\x00\x00\x00\x74\x56\x00\x00\x00\x00\x00\x00\x74\x5b\x00\x00\x74\x57\x74\x5a\x00\x00\x3a\x7d\x00\x00\x74\x58\x74\x59\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x38\x62\x4c\x47\x74\x5c\x00\x00\x32\x5a\x00\x00\x00\x00\x43\x53\x00\x00\x00\x00\x54\x63\x3f\x37\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x74\x5d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x45\x34\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x74\x69\x00\x00\x00\x00\x4f\x35\x00\x00\x00\x00\x00\x00\x00\x00", /* 7d00 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4e\x49\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4b\x58\x00\x00\x4b\x77\x00\x00\x00\x00\x00\x00\x00\x00\x3d\x74\x00\x00\x00\x00\x00\x00\x57\x4f\x00\x00\x00\x00\x00\x00\x40\x5b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x50\x75\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x74\x6a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 7d80 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x74\x6b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x74\x6c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 7e00 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x77\x63\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x37\x31\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x74\x6d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 7e80 */ "\x00\x00\x00\x00\x57\x6b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x74\x6e\x00\x00\x00\x00\x00\x00\x66\x79\x3e\x40\x66\x7a\x3a\x6c\x66\x7b\x4f\x4b\x66\x7c\x54\x3c\x3c\x36\x66\x7d\x66\x7e\x3c\x4d\x48\x52\x4e\x33\x67\x21\x00\x00\x34\x3f\x67\x22\x49\x34\x38\x59\x44\x49\x00\x00\x57\x5d\x42\x5a\x37\x57\x56\x3d\x4e\x46\x37\x44\x00\x00\x00\x00\x45\x26\x67\x23\x4f\x5f\x67\x24\x67\x25\x67\x26\x41\x37\x57\x69\x49\x70\x4f\x38\x56\x2f\x56\x55\x67\x27\x30\x6d\x67\x28\x67\x29\x49\x5c\x52\x6f\x3e\x2d\x67\x2a\x30\x73\x48\x5e\x3d\x61\x67\x2b\x48\x46\x00\x00\x67\x2c\x3b\x66\x38\x78\x51\x24\x67\x2d\x42\x67\x3e\x78\x3d\x4a\x4d\x33\x67\x2e\x67\x2f\x3e\x6e\x50\x65\x00\x00\x4b\x67\x4c\x50\x3c\x4c\x67\x30\x3c\x28\x50\x77\x67\x31\x00\x00\x50\x78\x67\x32\x67\x33\x34\x42\x67\x34\x67\x35\x49\x7e\x4e\x2c\x43\x60\x67\x37\x31\x41\x33\x71\x00\x00\x67\x38\x67\x39\x57\x5b\x55\x40\x67\x3a\x42\x4c", /* 7f00 */ "\x57\x3a\x67\x3b\x67\x3c\x67\x3d\x3c\x6a\x43\x65\x40\x42\x67\x3e\x67\x3f\x3c\x29\x00\x00\x67\x40\x67\x41\x67\x36\x36\x50\x67\x42\x00\x00\x67\x43\x67\x44\x3b\x3a\x35\x5e\x42\x46\x31\x60\x67\x45\x54\x35\x67\x46\x38\x3f\x67\x48\x67\x47\x37\x6c\x00\x00\x67\x49\x32\x78\x67\x4a\x67\x4b\x67\x4c\x67\x4d\x67\x4e\x67\x4f\x67\x50\x53\x27\x4b\x75\x67\x51\x67\x52\x67\x53\x67\x54\x49\x49\x67\x55\x67\x56\x67\x57\x67\x58\x67\x59\x3d\x49\x67\x5a\x73\x3e\x00\x00\x38\x57\x00\x00\x48\x31\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x73\x3f\x00\x00\x73\x40\x73\x41\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x39\x5e\x4d\x78\x00\x00\x00\x00\x58\x68\x3a\x31\x00\x00\x42\x5e\x6e\x37\x00\x00\x37\x23\x00\x00\x00\x00\x00\x00\x00\x00\x6e\x39\x00\x00\x6e\x38\x30\x55\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6e\x3b\x55\x56\x57\x6f\x00\x00\x00\x00\x00\x00\x56\x43\x00\x00\x00\x00\x6e\x3d\x4a\x70\x00\x00\x6e\x3c\x00\x00\x00\x00\x00\x00\x00\x00\x6e\x3e\x00\x00\x00\x00\x00\x00\x00\x00\x6e\x40\x00\x00", /* 7f80 */ "\x00\x00\x6e\x3f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x51\x72\x00\x00\x47\x3c\x00\x00\x43\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x38\x61\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x41\x67\x00\x00\x00\x00\x74\x46\x50\x5f\x74\x47\x00\x00\x4f\x5b\x00\x00\x00\x00\x48\x3a\x00\x00\x00\x00\x74\x48\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x74\x49\x74\x4a\x00\x00\x74\x4b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x59\x7a\x38\x7e\x00\x00\x00\x00\x65\x71\x53\x70\x00\x00\x74\x60\x00\x00\x4e\x4c\x00\x00\x00\x00\x00\x00\x33\x61\x00\x00\x00\x00\x00\x00\x00\x00\x71\x34\x00\x00\x52\x6e\x00\x00\x74\x61\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4f\x68\x74\x62\x00\x00\x00\x00\x47\x4c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x35\x54\x34\x64\x74\x64\x00\x00\x00\x00\x00\x00\x74\x63\x74\x65\x00\x00\x00\x00\x74\x66\x00\x00\x00\x00\x00\x00\x00\x00\x74\x67\x00\x00\x3a\x32\x30\x3f\x00\x00\x74\x68\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x37\x2d\x52\x6d\x00\x00\x00\x00\x00\x00", /* 8000 */ "\x52\x2b\x40\x4f\x00\x00\x3f\x3c\x6b\x23\x55\x5f\x6a\x48\x00\x00\x00\x00\x00\x00\x00\x00\x71\x73\x36\x78\x4b\x23\x00\x00\x00\x00\x44\x4d\x00\x00\x71\x67\x00\x00\x71\x68\x38\x7b\x71\x69\x3a\x44\x54\x45\x30\x52\x00\x00\x00\x00\x71\x6a\x00\x00\x00\x00\x00\x00\x71\x6b\x00\x00\x71\x6c\x00\x00\x00\x00\x71\x6d\x71\x6e\x71\x6f\x71\x71\x71\x70\x45\x55\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x71\x72\x00\x00\x36\x7a\x00\x00\x71\x74\x52\x2e\x5e\x47\x4b\x4a\x00\x00\x00\x00\x33\x5c\x00\x00\x35\x22\x00\x00\x39\x22\x00\x00\x00\x00\x44\x74\x71\x75\x00\x00\x00\x00\x71\x76\x00\x00\x00\x00\x00\x00\x41\x44\x41\x7b\x56\x30\x71\x77\x00\x00\x00\x00\x00\x00\x00\x00\x71\x78\x00\x00\x41\x2a\x00\x00\x00\x00\x00\x00\x46\x38\x00\x00\x3e\x5b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x71\x79\x34\x4f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x71\x7a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6d\x32", /* 8080 */ "\x6d\x31\x00\x00\x00\x00\x4b\x60\x52\x5e\x00\x00\x4b\x41\x55\x58\x00\x00\x48\x62\x00\x00\x40\x5f\x3c\x21\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6b\x41\x00\x00\x00\x00\x50\x24\x00\x00\x56\x62\x00\x00\x36\x47\x38\x58\x6b\x40\x38\x4e\x00\x00\x6b\x3f\x33\x26\x39\x49\x56\x2b\x00\x00\x37\x74\x37\x4a\x00\x00\x00\x00\x00\x00\x3c\x67\x37\x3e\x6b\x46\x00\x00\x6b\x47\x30\x39\x3f\x4f\x00\x00\x6b\x45\x53\x7d\x00\x00\x6b\x48\x00\x00\x00\x00\x6b\x49\x00\x00\x00\x00\x37\x4e\x00\x00\x6b\x42\x6b\x44\x49\x76\x56\x57\x55\x4d\x50\x32\x6b\x4f\x4e\x38\x6b\x50\x00\x00\x35\x28\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x31\x33\x6b\x52\x4c\x25\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x45\x56\x6b\x53\x00\x00\x6b\x51\x45\x5f\x6b\x4e\x4a\x24\x6b\x55\x30\x7b\x00\x00\x00\x00\x3a\x7a\x00\x00\x00\x00\x58\x37\x71\x63\x00\x00\x6b\x4a\x6b\x4b\x6b\x4c\x6b\x4d\x6b\x56\x66\x40\x6b\x59\x00\x00\x3f\x68\x52\x48\x6b\x57\x6b\x5c\x38\x6c\x6b\x58\x00\x00\x3d\x3a\x00\x00\x50\x58\x00\x00\x30\x37\x00\x00\x6b\x5d\x44\x5c\x00\x00\x00\x00", /* 8100 */ "\x00\x00\x00\x00\x56\x2c\x00\x00\x00\x00\x00\x00\x34\x60\x00\x00\x00\x00\x42\x76\x3c\x39\x00\x00\x00\x00\x6b\x5a\x6b\x5b\x54\x60\x46\x6a\x44\x54\x6b\x5f\x45\x27\x59\x75\x00\x00\x32\x31\x00\x00\x6b\x64\x00\x00\x3d\x45\x00\x00\x00\x00\x00\x00\x6b\x62\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6b\x63\x00\x00\x00\x00\x38\x2c\x00\x00\x4d\x51\x6b\x65\x00\x00\x00\x00\x00\x00\x6b\x61\x00\x00\x41\x33\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x46\x22\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4c\x73\x00\x00\x6b\x66\x00\x00\x40\x30\x52\x38\x6b\x67\x00\x00\x00\x00\x00\x00\x38\x2f\x38\x2d\x00\x00\x6b\x68\x47\x3b\x4d\x73\x00\x00\x00\x00\x00\x00\x6b\x6a\x6b\x6b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6b\x6d\x00\x00\x00\x00\x00\x00\x00\x00\x50\x48\x00\x00\x6b\x72\x00\x00\x6b\x6e\x00\x00\x00\x00\x00\x00\x6b\x71\x48\x79\x00\x00\x51\x7c\x6b\x6c\x00\x00\x00\x00\x6b\x69\x00\x00\x00\x00\x00\x00\x00\x00\x38\x39\x4f\x59\x44\x65\x6b\x6f\x6b\x70\x4c\x5a\x4d\x48", /* 8180 */ "\x30\x72\x00\x00\x6b\x76\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6b\x75\x00\x00\x32\x32\x00\x00\x00\x00\x00\x00\x00\x00\x38\x60\x00\x00\x6b\x77\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x31\x6c\x00\x00\x00\x00\x4c\x45\x44\x24\x4f\x25\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6b\x79\x00\x00\x00\x00\x6c\x22\x00\x00\x45\x72\x00\x00\x6b\x7a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x49\x45\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x62\x5f\x6b\x7e\x00\x00\x00\x00\x00\x00\x00\x00\x4d\x4e\x6c\x21\x31\x5b\x53\x37\x00\x00\x00\x00\x52\x5c\x00\x00\x00\x00\x00\x00\x6b\x7d\x00\x00\x6b\x7b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x33\x3c\x00\x00\x00\x00\x00\x00\x6a\x30\x00\x00\x00\x00\x57\x54\x00\x00\x74\x2b\x33\x74\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x56\x41\x56\x42\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x55\x69\x3e\x4a\x00\x00\x74\x27\x00\x00", /* 8200 */ "\x52\x28\x74\x28\x74\x29\x00\x00\x74\x2a\x3e\x4b\x53\x5f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x49\x60\x49\x61\x00\x00\x00\x00\x73\x42\x00\x00\x4a\x66\x00\x00\x4c\x72\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x62\x36\x4b\x34\x00\x00\x4e\x68\x56\x5b\x00\x00\x74\x2d\x74\x2e\x74\x2f\x00\x00\x00\x00\x00\x00\x00\x00\x74\x32\x00\x00\x3a\x3d\x74\x33\x30\x63\x74\x30\x00\x00\x74\x31\x3d\x22\x32\x55\x00\x00\x74\x36\x74\x37\x36\x66\x32\x30\x4f\x4f\x74\x34\x34\x2c\x00\x00\x74\x35\x00\x00\x00\x00\x74\x38\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x74\x39\x00\x00\x00\x00\x4d\x27\x00\x00\x74\x3a\x00\x00\x74\x3b\x00\x00\x00\x00\x00\x00\x74\x3c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4b\x52\x00\x00\x74\x3d\x00\x00\x00\x00\x00\x00\x00\x00\x74\x3e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x74\x3f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x74\x5e\x41\x3c\x3c\x68\x00\x00\x49\x2b\x51\x5e\x65\x75\x00\x00\x00\x00\x00\x00\x00\x00\x5c\x33\x52\x55\x00\x00\x00\x00\x5c\x34\x30\x2c\x5c\x35", /* 8280 */ "\x00\x00\x00\x00\x3d\x5a\x00\x00\x5c\x39\x00\x00\x00\x00\x00\x00\x58\x42\x00\x00\x5c\x37\x53\x73\x00\x00\x49\x56\x5c\x3a\x5c\x36\x00\x00\x5c\x3b\x43\x22\x00\x00\x00\x00\x00\x00\x00\x00\x5c\x3c\x5c\x45\x5c\x3d\x00\x00\x00\x00\x4e\x5f\x56\x25\x00\x00\x5c\x4f\x00\x00\x5c\x4d\x00\x00\x00\x00\x5c\x52\x3d\x66\x42\x2b\x00\x00\x5c\x38\x5c\x4b\x5c\x4e\x5c\x3e\x37\x52\x30\x45\x5c\x47\x50\x3e\x5c\x41\x3b\x28\x00\x00\x37\x3c\x5c\x4c\x00\x00\x00\x00\x5c\x46\x5c\x3f\x47\x5b\x00\x00\x00\x00\x00\x00\x51\x3f\x5c\x40\x00\x00\x00\x00\x5c\x4a\x00\x00\x00\x00\x5c\x50\x00\x00\x00\x00\x4e\x2d\x5c\x42\x00\x00\x5c\x43\x5c\x48\x5c\x49\x32\x54\x5c\x51\x4b\x55\x00\x00\x54\x37\x5c\x5b\x5c\x5f\x4c\x26\x5c\x66\x00\x00\x43\x67\x5c\x5c\x00\x00\x00\x00\x3f\x41\x5c\x59\x00\x00\x30\x7a\x39\x36\x5c\x65\x5c\x53\x00\x00\x5c\x44\x5c\x56\x48\x74\x3f\x60\x00\x00\x00\x00\x00\x00\x00\x00\x49\x3b\x00\x00\x00\x00\x00\x00\x31\x3d\x00\x00\x53\x22\x00\x00\x00\x00\x5c\x5a\x00\x00\x00\x00\x5c\x55\x00\x00\x46\x3b\x00\x00\x5c\x5e\x00\x00\x00\x00\x00\x00\x00\x00", /* 8300 */ "\x00\x00\x57\x42\x43\x2f\x37\x36\x47\x51\x43\x29\x5c\x62\x5c\x58\x5c\x6b\x5c\x54\x00\x00\x00\x00\x5c\x5d\x00\x00\x3e\x25\x5c\x57\x00\x00\x5c\x60\x00\x00\x00\x00\x5c\x63\x5c\x64\x00\x00\x5c\x78\x00\x00\x00\x00\x5c\x61\x5d\x22\x5c\x67\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3c\x6b\x34\x44\x00\x00\x00\x00\x43\x23\x32\x67\x5c\x7a\x00\x00\x5c\x72\x00\x00\x5c\x6f\x00\x00\x5c\x7c\x5c\x6e\x52\x70\x32\x68\x00\x00\x48\x57\x48\x63\x5c\x7b\x00\x00\x5c\x6d\x00\x00\x00\x00\x00\x00\x5c\x77\x00\x00\x00\x00\x5c\x75\x00\x00\x00\x00\x3e\x23\x5c\x74\x00\x00\x32\x5d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5c\x73\x3c\x76\x5c\x68\x3b\x44\x00\x00\x40\x73\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3c\x54\x5c\x69\x5c\x6a\x00\x00\x5c\x71\x5c\x76\x5c\x79\x35\x34\x00\x00\x48\x59\x3b\x67\x5c\x7e\x5c\x7d\x53\x2b\x5d\x21\x5d\x23\x5d\x25\x52\x71\x5d\x24\x5d\x26\x5d\x27\x52\x29\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3a\x49\x5d\x29\x00\x00\x00\x00\x5d\x36\x5d\x31\x5d\x34\x00\x00\x00\x00", /* 8380 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5d\x30\x46\x4e\x00\x00\x00\x00\x40\x72\x00\x00\x00\x00\x00\x00\x00\x00\x49\x2f\x00\x00\x00\x00\x00\x00\x5c\x6c\x5d\x2e\x00\x00\x00\x00\x00\x00\x00\x00\x5d\x37\x00\x00\x00\x00\x5c\x70\x5d\x2f\x00\x00\x5d\x38\x00\x00\x5d\x2c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5d\x39\x5d\x33\x5d\x2d\x44\x2a\x00\x00\x00\x00\x00\x00\x00\x00\x5d\x28\x40\x33\x41\x2b\x5d\x2a\x5d\x2b\x00\x00\x5d\x32\x3b\x71\x5d\x35\x53\x28\x5d\x3a\x00\x00\x5d\x3b\x43\x27\x00\x00\x00\x00\x5d\x52\x5d\x3c\x00\x00\x00\x00\x00\x00\x5d\x51\x00\x00\x39\x3d\x00\x00\x00\x00\x3e\x55\x00\x00\x3e\x7a\x00\x00\x00\x00\x3a\x4a\x00\x00\x00\x00\x00\x00\x00\x00\x5d\x4a\x00\x00\x5d\x45\x00\x00\x5d\x3f\x00\x00\x00\x00\x00\x00\x32\x4b\x5d\x43\x00\x00\x5d\x4b\x32\x24\x5d\x55\x00\x00\x00\x00\x00\x00\x5d\x3e\x00\x00\x00\x00\x00\x00\x46\x50\x5d\x50\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5d\x54\x41\x62\x37\x46\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5d\x4e\x5d\x4f\x00\x00\x00\x00\x00\x00\x5d\x44\x00\x00\x00\x00", /* 8400 */ "\x00\x00\x5d\x3d\x00\x00\x5d\x4d\x4c\x51\x00\x00\x5d\x49\x00\x00\x00\x00\x00\x00\x00\x00\x5d\x42\x43\x48\x46\x3c\x4e\x2e\x5d\x4c\x00\x00\x5d\x48\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5d\x41\x00\x00\x00\x00\x00\x00\x5d\x46\x42\x5c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x53\x29\x53\x2a\x5d\x53\x4f\x74\x48\x78\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5d\x66\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5d\x47\x00\x00\x00\x00\x00\x00\x5d\x60\x42\x64\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5d\x61\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5d\x57\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x56\x78\x00\x00\x5d\x59\x5d\x58\x38\x70\x5d\x56\x00\x00\x00\x00\x00\x00\x00\x00\x46\x4f\x00\x00\x36\x2d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5d\x62\x00\x00\x3a\x79\x54\x61\x5d\x67\x00\x00\x00\x00\x00\x00\x34\x50\x00\x00\x5d\x5a\x00\x00\x3f\x7b\x5d\x63\x00\x00\x5d\x5f\x00\x00\x5d\x5d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 8480 */ "\x00\x00\x00\x00\x35\x59\x00\x00\x00\x00\x00\x00\x00\x00\x5d\x5b\x5d\x5c\x5d\x5e\x00\x00\x3d\x2f\x5d\x64\x00\x00\x5d\x65\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5d\x75\x00\x00\x43\x49\x00\x00\x00\x00\x4b\x62\x00\x00\x00\x00\x00\x00\x00\x00\x5d\x72\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x58\x61\x00\x00\x00\x00\x46\x51\x00\x00\x5d\x74\x00\x00\x00\x00\x00\x00\x55\x74\x5d\x73\x5d\x70\x00\x00\x00\x00\x5d\x6c\x00\x00\x5d\x6f\x00\x00\x5d\x68\x00\x00\x00\x00\x50\x6e\x00\x00\x00\x00\x00\x00\x00\x00\x48\x58\x5d\x6e\x00\x00\x00\x00\x5d\x69\x00\x00\x00\x00\x5d\x6a\x4b\x72\x00\x00\x5d\x6d\x00\x00\x00\x00\x31\x4d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x36\x00\x00\x3c\x3b\x5d\x71\x00\x00\x00\x00\x5d\x77\x00\x00\x5d\x76\x5d\x6b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x45\x6e\x00\x00\x00\x00\x00\x00\x5d\x7b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5e\x24\x00\x00\x00\x00\x5e\x23", /* 8500 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5d\x78\x00\x00\x00\x00\x00\x00\x00\x00\x43\x6f\x00\x00\x42\x7b\x00\x00\x00\x00\x00\x00\x55\x61\x00\x00\x00\x00\x4e\x35\x00\x00\x00\x00\x00\x00\x00\x00\x5d\x7d\x00\x00\x32\x4c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x44\x68\x4a\x5f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x47\x3e\x5d\x7a\x5d\x7c\x5d\x7e\x5e\x22\x30\x2a\x31\x4e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5e\x2c\x00\x00\x00\x00\x00\x00\x00\x00\x5e\x26\x3d\x36\x48\x6f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5e\x21\x00\x00\x00\x00\x5e\x25\x00\x00\x00\x00\x00\x00\x00\x00\x5e\x29\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5e\x28\x00\x00\x00\x00\x00\x00\x5e\x27\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5e\x2d\x00\x00\x54\x4c\x00\x00\x00\x00\x00\x00\x00\x00\x5e\x33\x5e\x2a\x5e\x2e\x00\x00\x00\x00\x40\x59\x00\x00", /* 8580 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x31\x21\x5e\x36\x00\x00\x5e\x31\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5e\x32\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x51\x26\x5e\x35\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5e\x2f\x00\x00\x00\x00\x00\x00\x5e\x30\x00\x00\x50\x3d\x00\x00\x00\x00\x00\x00\x5e\x34\x4a\x6d\x5e\x39\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5e\x38\x00\x00\x5e\x37\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5e\x3b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3d\x65\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x32\x58\x43\x6a\x00\x00\x00\x00\x5e\x3a\x00\x00\x45\x3a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5e\x3c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4c\x59\x00\x00\x00\x00\x00\x00\x00\x00\x37\x2a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x54\x65\x00\x00\x00\x00\x00\x00\x5e\x3d", /* 8600 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5e\x3f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x44\x22\x00\x00\x00\x00\x00\x00\x00\x00\x5e\x41\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5e\x3e\x00\x00\x5e\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x55\x3a\x00\x00\x00\x00\x00\x00\x5e\x42\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x72\x2e\x3b\x22\x42\x32\x45\x30\x42\x47\x00\x00\x00\x00\x72\x2f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x50\x69\x00\x00\x00\x00\x00\x00\x53\x5d\x00\x00\x00\x00\x00\x00\x6b\x3d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x33\x66\x72\x30\x00\x00\x72\x31\x00\x00\x00\x00\x4a\x2d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3a\x67\x72\x33\x72\x35\x72\x34\x4b\x64\x4f\x3a\x72\x32", /* 8680 */ "\x4a\x34\x52\x4f\x42\x6c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4e\x43\x72\x38\x30\x76\x72\x37\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x72\x3e\x00\x00\x32\x4f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x51\x41\x72\x3a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x72\x3c\x54\x69\x00\x00\x00\x00\x72\x3b\x72\x36\x72\x3f\x72\x3d\x00\x00\x72\x39\x00\x00\x00\x00\x72\x47\x72\x44\x72\x46\x00\x00\x00\x00\x72\x4a\x72\x42\x72\x40\x00\x00\x00\x00\x00\x00\x72\x45\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x56\x7b\x00\x00\x00\x00\x00\x00\x72\x41\x00\x00\x47\x79\x49\x5f\x00\x00\x72\x48\x39\x46\x35\x30\x00\x00\x00\x00\x72\x43\x72\x49\x72\x50\x72\x56\x00\x00\x00\x00\x3b\x57\x00\x00\x00\x00\x00\x00\x72\x55\x4d\x5c\x00\x00\x56\x6b\x00\x00\x00\x00\x72\x52\x72\x54\x00\x00\x00\x00\x00\x00\x00\x00\x38\x72\x00\x00\x00\x00\x00\x00\x00\x00\x72\x4b\x00\x00\x00\x00\x00\x00\x72\x4e\x42\x79\x00\x00\x55\x5d\x72\x4c\x72\x4d\x72\x4f\x72\x53\x00\x00\x00\x00\x00\x00\x72\x59\x53\x3c\x00\x00\x00\x00\x00\x00\x00\x00\x36\x6a\x00\x00", /* 8700 */ "\x4a\x71\x00\x00\x37\x64\x72\x57\x00\x00\x00\x00\x00\x00\x72\x58\x72\x5a\x72\x5d\x72\x5b\x00\x00\x00\x00\x72\x5c\x00\x00\x00\x00\x00\x00\x00\x00\x51\x51\x72\x51\x00\x00\x4d\x49\x00\x00\x4e\x4f\x56\x29\x00\x00\x72\x63\x00\x00\x43\x5b\x00\x00\x72\x60\x00\x00\x00\x00\x40\x2f\x72\x6c\x72\x5e\x00\x00\x72\x61\x00\x00\x00\x00\x00\x00\x72\x68\x00\x00\x00\x00\x00\x00\x00\x00\x72\x62\x00\x00\x00\x00\x72\x67\x00\x00\x00\x00\x72\x66\x00\x00\x00\x00\x72\x69\x00\x00\x00\x00\x00\x00\x72\x5f\x00\x00\x00\x00\x72\x64\x72\x6a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x53\x2c\x72\x65\x32\x75\x00\x00\x00\x00\x72\x72\x00\x00\x50\x2b\x00\x00\x00\x00\x00\x00\x00\x00\x72\x75\x00\x00\x00\x00\x00\x00\x3b\x48\x00\x00\x72\x79\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x72\x70\x00\x00\x00\x00\x72\x76\x72\x78\x72\x7a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x72\x73\x00\x00\x72\x71\x00\x00\x00\x00\x00\x00\x3a\x7b\x00\x00\x35\x7b\x00\x00\x00\x00\x00\x00\x00\x00\x72\x6f\x72\x77\x72\x6d\x72\x6e\x00\x00", /* 8780 */ "\x00\x00\x00\x00\x72\x6b\x73\x26\x00\x00\x73\x23\x00\x00\x00\x00\x73\x22\x00\x00\x00\x00\x72\x74\x00\x00\x48\x5a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x72\x7b\x00\x00\x00\x00\x00\x00\x73\x25\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x43\x78\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x72\x7d\x00\x00\x00\x00\x73\x27\x73\x29\x73\x24\x00\x00\x72\x7c\x00\x00\x00\x00\x00\x00\x73\x2b\x00\x00\x73\x2a\x00\x00\x00\x00\x00\x00\x00\x00\x42\x5d\x00\x00\x00\x00\x73\x2e\x00\x00\x00\x00\x73\x30\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x73\x21\x00\x00\x00\x00\x00\x00\x73\x31\x73\x2c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x73\x2f\x72\x7e\x73\x2d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x73\x32\x00\x00\x00\x00\x00\x00\x00\x00\x73\x34\x00\x00\x00\x00\x00\x00\x00\x00\x73\x28\x00\x00\x00\x00\x00\x00\x00\x00\x73\x33\x00\x00\x00\x00\x00\x00\x73\x35\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x50\x37\x00\x00\x00\x00\x00\x00\x00\x00\x73\x38\x00\x00", /* 8800 */ "\x00\x00\x00\x00\x00\x00\x59\x79\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x73\x39\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x73\x37\x00\x00\x48\x64\x73\x36\x00\x00\x00\x00\x00\x00\x00\x00\x73\x3a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x73\x3b\x34\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6e\x43\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x73\x3c\x00\x00\x00\x00\x73\x3d\x00\x00\x00\x00\x00\x00\x51\x2a\x00\x00\x00\x00\x00\x00\x74\x2c\x50\x46\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x50\x50\x51\x5c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4f\x4e\x00\x00\x00\x00\x3d\x56\x00\x00\x51\x43\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3a\x62\x61\x69\x52\x42\x71\x42\x32\x39\x00\x00\x00\x00\x31\x6d\x71\x43\x00\x00\x49\x40\x33\x44\x00\x00\x59\x72\x00\x00\x4b\x25\x00\x00\x71\x44\x00\x00\x00\x00\x00\x00\x00\x00\x56\x54\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x71\x45\x74\x40\x71\x46", /* 8880 */ "\x00\x00\x54\x2c\x71\x47\x00\x00\x30\x40\x74\x41\x00\x00\x00\x00\x74\x42\x00\x00\x00\x00\x34\x7c\x00\x00\x45\x5b\x00\x00\x00\x00\x00\x00\x00\x00\x4c\x3b\x00\x00\x00\x00\x00\x00\x50\x64\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4d\x60\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x71\x48\x00\x00\x59\x73\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x31\x3b\x00\x00\x4f\x2e\x00\x00\x00\x00\x00\x00\x38\x24\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x71\x4a\x00\x00\x00\x00\x00\x00\x00\x00\x71\x4b\x00\x00\x00\x00\x00\x00\x00\x00\x32\x43\x41\x51\x00\x00\x00\x00\x57\x30\x71\x49\x00\x00\x00\x00\x71\x4c\x00\x00\x00\x00\x00\x00\x00\x00\x71\x4e\x00\x00\x00\x00\x00\x00\x59\x76\x00\x00\x52\x61\x54\x23\x00\x00\x00\x00\x74\x43\x48\x39\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x74\x44\x00\x00\x00\x00\x71\x4d\x71\x4f\x3f\x63\x71\x50\x00\x00\x00\x00\x71\x54\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x71\x56\x71\x51\x00\x00\x49\x51\x45\x61\x00\x00\x00\x00\x00\x00\x42\x63\x39\x7c\x00\x00\x00\x00\x71\x53\x00\x00\x71\x55\x00\x00", /* 8900 */ "\x00\x00\x00\x00\x39\x53\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x71\x5b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3a\x56\x00\x00\x30\x7d\x71\x59\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x71\x58\x71\x52\x71\x5a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x71\x57\x00\x00\x00\x00\x00\x00\x48\x6c\x00\x00\x00\x00\x00\x00\x00\x00\x4d\x4a\x71\x5d\x00\x00\x00\x00\x00\x00\x00\x00\x65\x3d\x00\x00\x00\x00\x00\x00\x71\x5c\x00\x00\x71\x5e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x71\x5f\x00\x00\x00\x00\x4f\x65\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x74\x45\x3d\x73\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x71\x60\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x71\x61\x00\x00\x00\x00\x00\x00\x4e\x77", /* 8980 */ "\x00\x00\x52\x2a\x00\x00\x71\x7b\x00\x00\x00\x00\x38\x32\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3c\x7b\x39\x5b\x00\x00\x39\x66\x43\x59\x4a\x53\x6a\x68\x40\x40\x3e\x75\x6a\x69\x6a\x6a\x6a\x6b\x00\x00\x6a\x6c\x6a\x6d\x6a\x6e\x6a\x6f\x3d\x47\x00\x00\x00\x00\x00\x00\x75\x7b\x00\x00\x00\x00\x00\x00\x75\x7d\x00\x00\x75\x7e\x00\x00\x75\x7c\x00\x00\x00\x00\x00\x00\x00\x00\x3d\x62\x00\x00\x76\x21\x34\x25\x00\x00\x00\x00\x00\x00\x00\x00\x76\x22\x00\x00\x00\x00\x00\x00\x76\x23\x00\x00\x00\x00\x00\x00\x6c\x32\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 8a00 */ "\x51\x54\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x59\x6a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x76\x24\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6e\x3a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x55\x32\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 8a80 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x53\x7e\x4c\x5c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4a\x44\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 8b00 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x65\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x76\x25\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3e\x2f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x46\x29\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 8b80 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5a\x25\x3c\x46\x36\x29\x38\x3c\x48\x4f\x3c\x25\x5a\x26\x5a\x27\x4c\x56\x48\x43\x5a\x28\x46\x7d\x00\x00\x51\x35\x52\x69\x51\x36\x3c\x47\x00\x00\x3d\x32\x3b\x64\x5a\x29\x5a\x2a\x51\x48\x5a\x2b\x50\x6d\x36\x6f\x42\x5b\x00\x00\x4b\x4f\x37\x6d\x49\x68\x37\x43\x3e\x77\x56\x24\x5a\x2c\x5a\x2d\x46\x40\x57\x67\x4a\x36\x00\x00\x55\x29\x4b\x5f\x55\x6f\x5a\x2e\x56\x5f\x34\x4a\x5a\x30\x5a\x2f\x00\x00\x52\x6b\x5a\x31\x5a\x32\x5a\x33\x4a\x54\x5a\x34\x4a\x2b\x5a\x35\x5a\x36\x33\x4f\x56\x6f\x5a\x37\x3b\x30\x35\x2e\x5a\x38\x5a\x39\x39\x6e\x51\x2f\x52\x68\x5a\x3a\x38\x43\x4f\x6a\x32\x6f\x5a\x3b\x5a\x3c\x00\x00\x3d\x6b\x4e\x5c\x53\x6f\x5a\x3d\x4e\x73\x5a\x3e\x53\x55\x3b\x65\x5a\x3f\x4b\x35\x4b\x50\x5a\x40\x47\x6b\x56\x6e\x5a\x41\x45\x35\x36\x41\x5a\x42\x37\x4c\x3f\x4e\x5a\x43", /* 8c00 */ "\x5a\x44\x4b\x2d\x5a\x45\x35\x77\x5a\x46\x41\x42\x57\x3b\x5a\x47\x4c\x38\x00\x00\x52\x6a\x44\x31\x5a\x48\x35\x7d\x3b\x51\x5a\x49\x50\x33\x5a\x4a\x5a\x4b\x4e\x3d\x5a\x4c\x5a\x4d\x5a\x4e\x32\x77\x5a\x51\x5a\x4f\x51\x68\x5a\x50\x43\x55\x5a\x52\x00\x00\x5a\x53\x5a\x54\x5a\x55\x50\x3b\x52\x25\x30\x79\x5a\x56\x47\x2b\x5a\x57\x3d\x77\x43\x21\x5a\x58\x5a\x59\x43\x7d\x4c\x37\x5a\x5a\x5a\x5b\x40\x3e\x46\x57\x5a\x5c\x5a\x5d\x47\x34\x5a\x5e\x5a\x5f\x39\x48\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3b\x6d\x00\x00\x00\x00\x00\x00\x00\x00\x36\x39\x74\x78\x00\x00\x74\x79\x00\x00\x00\x00\x4d\x63\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x75\x39\x00\x00\x00\x00\x00\x00\x00\x00\x6b\x60\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4f\x73\x3b\x3f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3a\x40\x54\x25\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x61\x59\x00\x00\x00\x00\x00\x00\x00\x00\x75\x74\x31\x2a\x32\x72\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 8c80 */ "\x00\x00\x00\x00\x75\x75\x00\x00\x00\x00\x75\x77\x00\x00\x00\x00\x00\x00\x3a\x51\x75\x76\x00\x00\x43\x32\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x75\x79\x00\x00\x00\x00\x00\x00\x75\x78\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 8d00 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x31\x34\x55\x6a\x38\x3a\x00\x00\x39\x31\x32\x46\x54\x70\x4f\x4d\x30\x5c\x55\x4b\x3b\x75\x56\x4a\x37\x37\x4c\x30\x46\x36\x31\x61\x39\x3a\x56\x7c\x39\x61\x37\x21\x3c\x7a\x6a\x5a\x6a\x5b\x4c\x79\x39\x73\x6a\x5c\x34\x7b\x43\x33\x37\x51\x3a\x58\x6a\x5d\x54\x74\x6a\x5e\x3c\x56\x3b\x5f\x6a\x5f\x41\x5e\x42\x38\x54\x5f\x57\x4a\x6a\x60\x6a\x61\x6a\x64\x6a\x62\x6a\x63\x49\x5e\x38\x33\x36\x44\x6a\x65\x4a\x6a\x49\x4d\x34\x4d\x00\x00\x00\x00\x62\x59\x45\x62\x6a\x66\x40\x35\x00\x00\x57\x38\x6a\x67\x57\x2c\x48\x7c\x58\x53\x58\x4d\x54\x5e\x00\x00\x54\x79\x49\x44\x53\x2e\x38\x53\x33\x60\x00\x00\x49\x62\x74\x76\x00\x00\x00\x00\x00\x00\x3a\x55\x00\x00\x74\x77\x00\x00\x00\x00\x57\x5f\x00\x00\x00\x00\x74\x71\x38\x30\x55\x54\x38\x4f\x46\x70\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 8d80 */ "\x00\x00\x33\x43\x00\x00\x00\x00\x74\x72\x33\x2c\x00\x00\x00\x00\x00\x00\x00\x00\x54\x3d\x47\x77\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x74\x74\x00\x00\x00\x00\x74\x73\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4c\x4b\x00\x00\x00\x00\x00\x00\x48\x24\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x74\x75\x00\x00\x57\x63\x45\x3f\x75\x40\x00\x00\x00\x00\x75\x3b\x00\x00\x75\x43\x00\x00\x75\x42\x00\x00\x56\x3a\x75\x41\x00\x00\x00\x00\x00\x00\x54\x3e\x75\x44\x00\x00\x75\x4c\x00\x00\x00\x00\x00\x00\x00\x00\x30\x4f\x35\x78\x00\x00\x75\x49\x75\x4a\x00\x00\x45\x5c\x00\x00\x00\x00\x00\x00\x00\x00\x75\x45\x75\x46\x00\x00\x00\x00\x75\x47\x75\x4b\x00\x00\x3e\x60\x75\x48\x38\x7a\x00\x00\x00\x00\x00\x00\x75\x50\x75\x53\x00\x00\x00\x00\x00\x00\x3f\x67\x00\x00\x39\x72\x75\x3c\x75\x4d\x00\x00\x00\x00\x42\x37\x00\x00\x00\x00\x00\x00\x4c\x78\x00\x00\x3c\x79\x00\x00\x75\x4e\x75\x4f\x75\x51\x36\x65\x75\x52\x00\x00\x75\x55\x00\x00\x00\x00", /* 8e00 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x75\x3d\x00\x00\x00\x00\x00\x00\x75\x54\x53\x3b\x00\x00\x33\x6c\x00\x00\x00\x00\x4c\x24\x00\x00\x00\x00\x00\x00\x00\x00\x75\x56\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x75\x57\x3e\x61\x75\x58\x00\x00\x00\x00\x4c\x5f\x75\x5b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x32\x48\x57\x59\x00\x00\x75\x59\x00\x00\x75\x5a\x75\x5c\x00\x00\x75\x62\x00\x00\x00\x00\x00\x00\x75\x60\x00\x00\x00\x00\x00\x00\x75\x5f\x75\x5d\x00\x00\x00\x00\x75\x61\x00\x00\x00\x00\x75\x5e\x75\x64\x75\x65\x00\x00\x4c\x63\x00\x00\x00\x00\x65\x3f\x35\x38\x75\x63\x75\x68\x4c\x23\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x75\x66\x75\x67\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x75\x3e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x31\x44\x00\x00\x00\x00\x75\x3f\x00\x00\x00\x00\x35\x45\x32\x64\x00\x00\x75\x6c\x75\x69\x00\x00\x36\x57\x00\x00\x75\x6d\x00\x00\x75\x6a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x75\x6b\x00\x00\x00\x00\x34\x5a", /* 8e80 */ "\x00\x00\x54\x6a\x00\x00\x00\x00\x00\x00\x75\x6e\x00\x00\x33\x79\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x75\x6f\x75\x71\x00\x00\x00\x00\x00\x00\x75\x70\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x75\x72\x00\x00\x75\x73\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x49\x6d\x39\x2a\x00\x00\x00\x00\x47\x7b\x00\x00\x00\x00\x36\x63\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4c\x49\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x26\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 8f00 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x33\x35\x54\x7e\x39\x6c\x50\x79\x00\x00\x69\x6d\x57\x2a\x69\x6e\x42\x56\x48\x6d\x3a\x64\x69\x6f\x69\x70\x69\x71\x56\x61\x69\x72\x69\x73\x69\x75\x69\x74\x69\x76\x69\x77\x47\x61\x69\x78\x54\x58\x69\x79\x3d\x4e", /* 8f80 */ "\x00\x00\x69\x7a\x69\x7b\x3d\x4f\x69\x7c\x38\x28\x41\x3e\x69\x7d\x31\x32\x3b\x54\x39\x75\x69\x7e\x00\x00\x6a\x21\x6a\x22\x6a\x23\x37\x78\x3c\x2d\x00\x00\x4a\x64\x60\x4e\x54\x2f\x4f\x3d\x55\x37\x6a\x24\x55\x5e\x6a\x25\x50\x41\x39\x3c\x00\x00\x34\x47\x31\x59\x00\x00\x00\x00\x00\x00\x40\x31\x00\x00\x00\x00\x00\x00\x00\x00\x31\x66\x31\x67\x00\x00\x31\x68\x00\x00\x00\x00\x00\x00\x00\x00\x33\x3d\x48\x68\x00\x00\x00\x00\x00\x00\x00\x00\x65\x41\x00\x00\x00\x00\x31\x5f\x00\x00\x00\x00\x00\x00\x41\x49\x34\x6f\x00\x00\x00\x00\x47\x28\x53\x58\x00\x00\x46\x79\x51\x38\x00\x00\x39\x7d\x42\x75\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x53\x2d\x00\x00\x54\x4b\x3d\x7c\x00\x00\x65\x42\x37\x35\x65\x43\x00\x00\x00\x00\x3b\x39\x55\x62\x00\x00\x3d\x78\x54\x36\x4e\x25\x41\x2c\x33\x59\x00\x00\x00\x00\x4c\x76\x00\x00\x65\x46\x65\x44\x65\x48\x00\x00\x65\x4a\x65\x47\x35\x4f\x46\x48\x00\x00\x35\x7c\x65\x45\x00\x00\x4a\x76\x00\x00\x00\x00\x65\x49\x00\x00\x00\x00\x00\x00\x43\x54\x31\x45\x3c\x23\x00\x00\x00\x00\x00\x00\x57\x37\x00\x00\x00\x00", /* 9000 */ "\x4d\x4b\x4b\x4d\x4a\x4a\x4c\x53\x65\x4c\x65\x4b\x44\x66\x00\x00\x00\x00\x51\x21\x51\x37\x65\x4d\x00\x00\x65\x50\x00\x00\x4d\x38\x56\x70\x65\x4f\x35\x5d\x00\x00\x4d\x3e\x00\x00\x65\x51\x36\x3a\x00\x00\x00\x00\x4d\x28\x39\x64\x00\x00\x4a\x45\x33\x51\x4b\x59\x54\x6c\x65\x52\x37\x6a\x00\x00\x00\x00\x00\x00\x65\x4e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x65\x55\x34\x7e\x65\x56\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x65\x53\x65\x54\x00\x00\x52\x5d\x00\x00\x00\x00\x42\x5f\x31\x46\x00\x00\x53\x62\x00\x00\x00\x00\x36\x5d\x4b\x6c\x00\x00\x65\x57\x00\x00\x00\x00\x53\x76\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x31\x69\x00\x00\x36\x74\x65\x5a\x65\x58\x65\x59\x35\x40\x00\x00\x00\x00\x00\x00\x52\x45\x65\x5c\x00\x00\x00\x00\x65\x5e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x65\x5d\x47\x32\x00\x00\x52\x23\x00\x00\x00\x00\x65\x5b\x00\x00\x00\x00\x00\x00\x00\x00\x54\x62\x55\x5a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x65\x60\x57\x71\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x65\x61\x00\x00\x31\x5c", /* 9080 */ "\x51\x7b\x00\x00\x65\x62\x65\x64\x00\x00\x00\x00\x00\x00\x00\x00\x65\x63\x00\x00\x00\x00\x65\x65\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x52\x58\x00\x00\x35\x4b\x00\x00\x67\x5f\x00\x00\x5a\x75\x00\x00\x5a\x78\x00\x00\x5a\x76\x00\x00\x5a\x77\x00\x00\x00\x00\x00\x00\x5a\x7a\x50\x4f\x44\x47\x00\x00\x00\x00\x30\x6e\x00\x00\x00\x00\x00\x00\x50\x30\x00\x00\x5a\x79\x00\x00\x53\x4a\x3a\x2a\x5b\x22\x47\x71\x00\x00\x5a\x7c\x5a\x7b\x49\x5b\x5a\x7d\x00\x00\x5b\x21\x57\x5e\x5a\x7e\x41\x5a\x00\x00\x00\x00\x5b\x25\x00\x00\x00\x00\x53\x74\x00\x00\x00\x00\x5b\x27\x5b\x24\x00\x00\x5b\x28\x00\x00\x00\x00\x3d\x3c\x00\x00\x00\x00\x00\x00\x40\x49\x5b\x23\x5b\x26\x56\x23\x00\x00\x5b\x29\x00\x00\x00\x00\x00\x00\x5b\x2d\x00\x00\x00\x00\x00\x00\x5b\x2e\x5b\x2c\x3a\x42\x00\x00\x00\x00\x00\x00\x3f\x24\x5b\x2b\x00\x00\x00\x00\x00\x00\x5b\x2a\x54\x47\x32\x3f\x00\x00\x00\x00\x5b\x2f\x00\x00\x39\x79\x00\x00\x5b\x30\x00\x00\x00\x00\x00\x00\x00\x00\x33\x3b\x00\x00\x00\x00\x00\x00\x35\x26\x00\x00\x00\x00\x00\x00\x00\x00\x36\x3c\x5b\x31\x00\x00", /* 9100 */ "\x00\x00\x00\x00\x36\x75\x00\x00\x5b\x32\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x31\x49\x00\x00\x00\x00\x00\x00\x00\x00\x5b\x34\x00\x00\x00\x00\x00\x00\x5b\x33\x5b\x35\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5b\x37\x00\x00\x5b\x36\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5b\x38\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5b\x39\x00\x00\x00\x00\x5b\x3a\x00\x00\x00\x00\x53\x4f\x74\x7a\x47\x75\x57\x43\x45\x64\x74\x7c\x74\x7d\x74\x7b\x00\x00\x3e\x46\x00\x00\x00\x00\x00\x00\x00\x00\x50\x6f\x00\x00\x00\x00\x37\x53\x00\x00\x00\x00\x54\x4d\x4c\x2a\x00\x00\x00\x00\x75\x22\x75\x21\x3a\x28\x74\x7e\x4b\x56\x00\x00\x00\x00\x00\x00\x75\x24\x40\x52\x00\x00\x33\x6a\x00\x00\x4d\x2a\x75\x25\x75\x23\x3d\x34\x75\x28\x00\x00\x75\x29\x3d\x4d\x43\x38\x3f\x61\x4b\x61\x75\x2a\x00\x00\x00\x00\x00\x00\x75\x26\x75\x27\x44\x70", /* 9180 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x75\x2c\x00\x00\x34\x3c\x00\x00\x57\x6d\x00\x00\x34\x57\x75\x2b\x75\x2e\x00\x00\x00\x00\x75\x2d\x75\x2f\x50\x51\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x43\x51\x48\x29\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x75\x30\x75\x31\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x75\x32\x00\x00\x00\x00\x75\x33\x75\x34\x75\x35\x00\x00\x00\x00\x00\x00\x00\x00\x75\x37\x75\x36\x00\x00\x00\x00\x00\x00\x00\x00\x75\x38\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x32\x49\x00\x00\x53\x54\x4a\x4d\x00\x00\x40\x6f\x56\x58\x52\x30\x41\x3f\x00\x00\x3d\x70\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x38\x2a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 9200 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3c\x78\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 9280 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x76\x46\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x76\x47\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x76\x48\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 9300 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x76\x49\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x76\x4a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 9380 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x76\x4c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x76\x4b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x77\x69\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 9400 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x76\x4d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x76\x4e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 9480 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6e\x44\x6e\x45\x6e\x46\x55\x6b\x36\x24\x6e\x48\x6e\x47\x6e\x49\x6e\x4a\x47\x25\x6e\x4b\x6e\x4c\x00\x00\x37\x30\x35\x76\x6e\x4d\x6e\x4f\x00\x00\x6e\x4e\x00\x00\x38\x46\x6e\x50\x6e\x51\x6e\x52\x36\x5b\x33\x2e\x56\x53\x44\x46\x31\x35\x38\x56\x6e\x53\x6e\x54\x54\x3f\x47\x55\x3e\x7b\x4e\x59\x39\x33\x6e\x56\x6e\x55\x6e\x58\x6e\x57\x45\x25\x6e\x59\x6e\x5a\x47\x2e\x6e\x5b\x47\x2f\x6e\x5c\x32\x27\x6e\x5d\x6e\x5e\x6e\x5f\x6e\x60\x6e\x61\x57\x6a\x6e\x62\x6e\x63\x3c\x58\x6e\x64\x53\x4b\x4c\x7a\x32\x2c\x41\x65\x6e\x65\x47\x26\x43\x2d\x00\x00\x6e\x66\x6e\x67\x6e\x68\x6e\x69\x6e\x6a\x6e\x6b\x6e\x6c\x00\x00\x6e\x6d\x6e\x6e\x6e\x6f\x00\x00\x00\x00\x6e\x70\x6e\x71\x6e\x72\x6e\x74\x6e\x73\x00\x00\x6e\x75\x4d\x2d\x42\x41\x6e\x76\x6e\x77\x6e\x78\x55\x21\x6e\x79\x4f\x33\x6e\x7a\x6e\x7b\x00\x00\x6e\x7c\x6e\x7d\x6f\x21\x6e\x7e\x6f\x22\x38\x75\x43\x7a\x6f\x23\x6f\x24\x3d\x42\x52\x3f\x32\x79\x6f\x25\x6f\x26\x6f\x27\x52\x78\x6f\x28\x56\x7d\x6f\x29\x46\x4c\x00\x00\x6f\x2a\x6f\x2b\x41\x34\x6f\x2c", /* 9500 */ "\x4f\x7a\x4b\x78\x6f\x2e\x6f\x2d\x33\x7a\x39\x78\x6f\x2f\x6f\x30\x50\x62\x6f\x31\x6f\x32\x37\x66\x50\x3f\x6f\x33\x6f\x34\x6f\x35\x48\x71\x4c\x60\x6f\x36\x6f\x37\x6f\x38\x6f\x39\x6f\x3a\x55\x60\x6f\x3b\x34\x6d\x43\x2a\x6f\x3c\x00\x00\x6f\x3d\x6f\x3e\x6f\x3f\x00\x00\x4e\x7d\x6f\x40\x42\x60\x34\x38\x57\x36\x3d\x75\x00\x00\x4f\x47\x6f\x43\x6f\x41\x6f\x42\x6f\x44\x36\x27\x3c\x7c\x3e\x62\x43\x4c\x6f\x45\x6f\x46\x00\x00\x6f\x47\x6f\x4f\x6f\x48\x6f\x49\x6f\x4a\x47\x42\x6f\x71\x36\x4d\x6f\x4b\x00\x00\x6f\x4c\x6f\x4d\x36\x46\x43\x3e\x6f\x4e\x00\x00\x6f\x50\x6f\x51\x6f\x52\x55\x72\x00\x00\x6f\x53\x44\x77\x00\x00\x6f\x54\x44\x78\x6f\x55\x6f\x56\x38\x64\x30\x77\x6f\x57\x6f\x58\x6f\x59\x00\x00\x6f\x5a\x6f\x5b\x6f\x5c\x6f\x5d\x00\x00\x6f\x5e\x3e\x35\x6f\x61\x6f\x5f\x6f\x60\x00\x00\x6f\x62\x6f\x63\x41\x4d\x6f\x64\x6f\x65\x6f\x66\x6f\x67\x6f\x68\x6f\x69\x6f\x6a\x6f\x6b\x6f\x6c\x40\x58\x00\x00\x6f\x6d\x41\x2d\x6f\x6e\x6f\x6f\x6f\x70\x00\x00\x00\x00\x4f\x62\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x33\x24", /* 9580 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x43\x45\x63\x45\x49\x41\x63\x46\x00\x00\x31\x55\x4e\x4a\x34\x33\x48\x72\x63\x47\x4f\x50\x63\x48\x3c\x64\x63\x49\x63\x4a\x43\x46\x55\x22\x44\x56\x39\x6b\x4e\x45\x63\x4b\x43\x76\x63\x4c\x00\x00", /* 9600 */ "\x37\x27\x38\x73\x3a\x52\x63\x4d\x63\x4e\x54\x44\x63\x4f\x00\x00\x63\x50\x51\x4b\x63\x51\x63\x52\x63\x53\x63\x54\x51\x56\x63\x55\x32\x7b\x40\x3b\x63\x56\x00\x00\x40\x2b\x63\x57\x63\x58\x63\x59\x00\x00\x63\x5a\x63\x5b\x00\x00\x38\x37\x5a\x62\x00\x00\x36\x53\x00\x00\x5a\x64\x5a\x63\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5a\x66\x00\x00\x00\x00\x00\x00\x48\x6e\x00\x00\x00\x00\x5a\x65\x37\x40\x51\x74\x52\x75\x55\x73\x3d\x57\x00\x00\x00\x00\x00\x00\x00\x00\x57\x68\x5a\x68\x5a\x67\x00\x00\x30\x22\x4d\x53\x00\x00\x5a\x69\x00\x00\x38\x3d\x3c\x4a\x42\x3d\x42\x24\x33\x42\x5a\x6a\x00\x00\x42\x2a\x44\x30\x3d\x35\x00\x00\x00\x00\x4f\x5e\x00\x00\x00\x00\x00\x00\x5a\x6b\x49\x42\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x31\x5d\x00\x00\x00\x00\x00\x00\x5a\x6c\x00\x00\x36\x38\x54\x3a\x00\x00\x33\x7d\x00\x00\x00\x00\x5a\x6d\x54\x49\x4f\x55\x45\x63\x00\x00\x5a\x6e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5a\x6f\x00\x00\x5a\x70\x41\x6a\x4c\x55\x4f\x5d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 9680 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x53\x67\x42\x21\x00\x00\x5a\x71\x00\x00\x00\x00\x4b\x65\x00\x00\x5a\x72\x00\x00\x4b\x66\x52\x7e\x00\x00\x00\x00\x00\x00\x38\x74\x00\x00\x00\x00\x5a\x73\x30\x2f\x4f\x36\x00\x00\x00\x00\x55\x4f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4b\x6d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5a\x74\x00\x00\x00\x00\x63\x44\x00\x00\x00\x00\x41\x25\x00\x00\x00\x00\x76\x3f\x00\x00\x00\x00\x76\x40\x76\x41\x44\x51\x00\x00\x48\x38\x51\x63\x00\x00\x00\x00\x50\x5b\x51\x45\x3c\x2f\x39\x4d\x00\x00\x6f\x74\x00\x00\x00\x00\x34\x46\x53\x3a\x76\x42\x33\x7b\x00\x00\x00\x00\x76\x43\x00\x00\x00\x00\x35\x71\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x76\x45\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x53\x6a\x76\x27\x51\x29\x00\x00\x00\x00\x00\x00\x00\x00\x76\x29\x00\x00\x00\x00\x00\x00\x76\x28\x00\x00\x00\x00\x41\x63\x40\x57\x00\x00\x31\x22\x00\x00\x00\x00\x00\x00\x00\x00\x4e\x6d\x00\x00", /* 9700 */ "\x50\x68\x76\x2b\x00\x00\x00\x00\x4f\x76\x00\x00\x76\x2a\x55\x70\x76\x2c\x43\x39\x00\x00\x00\x00\x00\x00\x3b\x74\x76\x2e\x76\x2d\x00\x00\x00\x00\x00\x00\x44\x5e\x00\x00\x00\x00\x41\x58\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4b\x2a\x00\x00\x4f\x3c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x76\x2f\x00\x00\x00\x00\x76\x30\x00\x00\x00\x00\x76\x31\x00\x00\x42\x36\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x30\x54\x45\x79\x00\x00\x00\x00\x00\x00\x00\x00\x76\x32\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x47\x60\x76\x26\x00\x00\x00\x00\x3e\x38\x00\x00\x00\x00\x3e\x32\x00\x00\x35\x65\x00\x00\x00\x00\x37\x47\x00\x00\x3f\x3f\x43\x52\x43\x66\x00\x00\x00\x00\x58\x4c\x00\x00\x00\x00\x00\x00\x38\x6f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3d\x79\x51\x25\x00\x00\x30\x50\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x77\x30\x00\x00\x00\x00\x00\x00", /* 9780 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x77\x31\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x50\x2c\x00\x00\x30\x30\x00\x00\x00\x00\x00\x00\x77\x32\x77\x33\x00\x00\x77\x34\x00\x00\x00\x00\x00\x00\x47\x4a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3e\x4f\x00\x00\x00\x00\x77\x37\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x77\x36\x00\x00\x31\x5e\x00\x00\x77\x35\x00\x00\x00\x00\x77\x38\x00\x00\x77\x39\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4e\x24\x48\x4d\x00\x00\x3a\x2b\x68\x38\x68\x39\x68\x3a\x3e\x42\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x52\x74\x00\x00\x54\x4f\x49\x58\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 9800 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x52\x33\x36\x25\x47\x6a\x71\x7c\x4f\x6e\x4b\x33\x50\x6b\x67\x6f\x4d\x67\x39\x4b\x36\x59", /* 9880 */ "\x71\x7d\x30\x64\x4b\x4c\x71\x7e\x54\x24\x42\x2d\x41\x6c\x46\x44\x3e\x31\x72\x21\x3c\x55\x00\x00\x72\x22\x72\x23\x00\x00\x72\x24\x52\x43\x46\x35\x00\x00\x4d\x47\x72\x25\x00\x00\x53\x31\x3f\x45\x4c\x62\x00\x00\x72\x26\x72\x27\x51\x55\x36\x6e\x72\x28\x72\x29\x35\x5f\x72\x2a\x72\x2b\x00\x00\x32\x7c\x72\x2c\x72\x2d\x48\x27\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x37\x67\x00\x00\x00\x00\x6c\x29\x6c\x2a\x6c\x2b\x00\x00\x6c\x2c\x00\x00\x00\x00\x46\x2e\x6c\x2d\x6c\x2e\x00\x00\x00\x00\x00\x00\x37\x49\x4a\x33\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x62\x38\x77\x4f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 9900 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x77\x50\x00\x00\x00\x00\x32\x4d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x77\x51\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x77\x53\x77\x52\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x62\x3b\x00\x00\x3c\x22\x00\x00\x62\x3c\x62\x3d\x62\x3e\x62\x3f\x62\x40\x62\x41\x37\x39\x52\x7b\x3d\x24\x4a\x4e\x31\x25\x4b\x47\x00\x00\x62\x42\x36\x7c\x48\x44\x62\x43\x00\x00\x00\x00\x3d\x48\x00\x00\x31\x7d\x62\x44\x00\x00\x36\x76", /* 9980 */ "\x62\x45\x44\x59\x00\x00\x00\x00\x62\x46\x4f\x5a\x39\x5d\x62\x47\x40\x21\x00\x00\x62\x48\x32\x76\x00\x00\x62\x49\x00\x00\x41\x73\x62\x4a\x62\x4b\x42\x78\x62\x4c\x62\x4d\x62\x4e\x4a\x57\x58\x38\x59\x65\x4f\x63\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x70\x25\x00\x00\x00\x00\x5c\x30\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 9a00 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x42\x6d\x54\x26\x4d\x54\x51\x31\x33\x5b\x47\x7d\x00\x00\x32\x35\x42\x3f\x66\x60\x4a\x3b\x66\x61\x66\x62\x3e\x54\x66\x63\x57\x24\x4d\x55\x66\x65\x3c\x5d\x66\x64", /* 9a80 */ "\x66\x66\x66\x67\x42\x6e\x00\x00\x3d\x3e\x66\x68\x42\x66\x3a\x27\x66\x69\x00\x00\x66\x6a\x33\x52\x51\x69\x00\x00\x00\x00\x3f\x25\x66\x6b\x46\x6f\x66\x6c\x66\x6d\x00\x00\x00\x00\x66\x6e\x46\x2d\x66\x6f\x00\x00\x49\x27\x66\x70\x66\x71\x66\x72\x65\x39\x66\x73\x66\x74\x42\x62\x66\x75\x66\x76\x56\x68\x66\x77\x00\x00\x66\x78\x39\x47\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x77\x3b\x77\x3a\x00\x00\x00\x00\x00\x00\x00\x00\x77\x3e\x77\x3c\x3a\x21\x00\x00\x77\x3f\x00\x00\x77\x40\x00\x00\x00\x00\x00\x00\x77\x42\x77\x41\x77\x44\x00\x00\x00\x00\x77\x43\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x77\x45\x77\x46\x00\x00\x00\x00\x00\x00\x00\x00\x77\x47\x00\x00\x4b\x68\x00\x00\x00\x00\x00\x00\x00\x00\x38\x5f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x77\x54\x00\x00\x77\x55\x00\x00\x00\x00\x00\x00\x00\x00\x77\x56\x00\x00\x00\x00\x00\x00\x00\x00\x77\x58\x00\x00\x77\x5a\x00\x00\x77\x57\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x77\x5b\x00\x00\x77\x59\x00\x00\x00\x00\x00\x00\x00\x00", /* 9b00 */ "\x00\x00\x00\x00\x00\x00\x57\x57\x00\x00\x00\x00\x00\x00\x00\x00\x77\x5c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x77\x5d\x00\x00\x00\x00\x00\x00\x77\x5e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x77\x5f\x00\x00\x00\x00\x00\x00\x77\x60\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5b\x4b\x00\x00\x00\x00\x58\x2a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x65\x77\x39\x6d\x00\x00\x00\x00\x00\x00\x00\x00\x3f\x7d\x3b\x6a\x77\x49\x46\x47\x77\x48\x00\x00\x77\x4a\x77\x4c\x77\x4b\x00\x00\x00\x00\x00\x00\x77\x4d\x00\x00\x4e\x3a\x00\x00\x77\x4e\x00\x00\x00\x00\x44\x27\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 9b80 */ NULL, /* 9c00 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x53\x63\x00\x00\x00\x00\x76\x4f", /* 9c80 */ "\x00\x00\x42\x33\x76\x50\x00\x00\x00\x00\x76\x51\x76\x52\x76\x53\x76\x54\x00\x00\x00\x00\x76\x56\x00\x00\x31\x2b\x76\x57\x00\x00\x76\x58\x76\x59\x76\x5a\x00\x00\x76\x5b\x76\x5c\x00\x00\x00\x00\x00\x00\x00\x00\x76\x5d\x76\x5e\x4f\x4a\x00\x00\x76\x5f\x76\x60\x76\x61\x76\x62\x76\x63\x76\x64\x40\x70\x76\x65\x76\x66\x76\x67\x76\x68\x76\x69\x00\x00\x76\x6a\x00\x00\x76\x6b\x76\x6c\x00\x00\x76\x6d\x76\x6e\x76\x6f\x76\x70\x76\x71\x76\x72\x76\x73\x76\x74\x3e\x28\x00\x00\x76\x75\x76\x76\x76\x77\x76\x78\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x48\x7a\x76\x79\x76\x7a\x76\x7b\x76\x7c\x00\x00\x00\x00\x76\x7d\x76\x7e\x77\x21\x77\x22\x77\x23\x77\x24\x77\x25\x00\x00\x00\x00\x77\x26\x77\x27\x77\x28\x31\x6e\x77\x29\x77\x2a\x77\x2b\x00\x00\x00\x00\x77\x2c\x77\x2d\x41\x5b\x77\x2e\x00\x00\x00\x00\x77\x2f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 9d00 */ NULL, /* 9d80 */ NULL, /* 9e00 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x44\x71\x70\x2f\x3c\x26\x70\x30\x43\x79\x00\x00\x45\x38\x51\x3b\x00\x00\x70\x31\x70\x32\x70\x33\x70\x34\x70\x35\x51\x3c\x00\x00\x51\x6c\x00\x00\x70\x37\x70\x36\x54\x27\x00\x00\x4d\x52\x70\x38\x70\x3a\x70\x39\x70\x3b\x70\x3c\x00\x00\x00\x00\x38\x6b\x70\x3d\x3a\x68\x00\x00\x70\x3e\x70\x3f\x3e\x69\x70\x40\x36\x6c\x70\x41\x70\x42\x70\x43\x70\x44\x48\x35\x70\x45\x70\x46\x00\x00\x70\x47\x45\x74\x00\x00\x70\x48\x00\x00\x00\x00\x00\x00\x70\x49\x00\x00\x70\x4a\x77\x3d\x00\x00\x70\x4b\x70\x4c\x70\x4d\x00\x00\x70\x4e\x00\x00\x00\x00\x00\x00\x00\x00\x70\x4f\x3a\x57\x00\x00\x70\x50\x70\x51\x70\x52\x70\x53\x70\x54\x70\x55\x70\x56\x70\x58\x00\x00\x00\x00\x53\x25\x70\x57\x00\x00\x70\x59\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x75\x3a\x42\x39", /* 9e80 */ "\x00\x00\x00\x00\x77\x64\x00\x00\x00\x00\x00\x00\x00\x00\x77\x65\x77\x66\x00\x00\x00\x00\x77\x67\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x77\x68\x42\x34\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x77\x6a\x00\x00\x77\x6b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x42\x73\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x74\x70\x00\x00\x00\x00\x00\x00\x74\x6f\x00\x00\x00\x00\x42\x69\x00\x00\x77\x61\x77\x62\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3b\x46\x00\x00\x00\x00\x00\x00\x00\x00\x59\x64\x00\x00\x00\x00\x00\x00\x4a\x72\x40\x68\x70\x24\x00\x00\x3a\x5a\x00\x00\x00\x00\x47\x2d\x00\x00\x00\x00\x00\x00\x44\x2c\x00\x00\x00\x00\x77\x6c\x77\x6d\x77\x6e\x00\x00\x77\x70\x77\x6f\x00\x00\x77\x71\x00\x00\x00\x00\x77\x74\x00\x00\x77\x73\x00\x00\x77\x72\x77\x75\x00\x00\x00\x00\x00\x00\x00\x00\x77\x76\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6d\x69\x00\x00\x6d\x6a\x6d\x6b\x00\x00\x76\x3c\x00\x00", /* 9f00 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x76\x3d\x00\x00\x76\x3e\x36\x26\x00\x00\x58\x3e\x00\x00\x00\x00\x39\x44\x00\x00\x00\x00\x00\x00\x58\x3b\x00\x00\x5c\x31\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4a\x73\x00\x00\x77\x77\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x77\x78\x00\x00\x00\x00\x77\x79\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x77\x7b\x00\x00\x77\x7a\x00\x00\x31\x47\x00\x00\x77\x7c\x77\x7d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x77\x7e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x46\x6b\x6c\x34\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x33\x5d", /* 9f80 */ "\x76\x33\x00\x00\x00\x00\x76\x34\x41\x64\x76\x35\x76\x36\x76\x37\x76\x38\x76\x39\x76\x3a\x48\x23\x76\x3b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x41\x7a\x39\x28\x6d\x68\x00\x00\x00\x00\x00\x00\x39\x6a\x59\x5f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* a000 */ NULL, /* a080 */ NULL, /* a100 */ NULL, /* a180 */ NULL, /* a200 */ NULL, /* a280 */ NULL, /* a300 */ NULL, /* a380 */ NULL, /* a400 */ NULL, /* a480 */ NULL, /* a500 */ NULL, /* a580 */ NULL, /* a600 */ NULL, /* a680 */ NULL, /* a700 */ NULL, /* a780 */ NULL, /* a800 */ NULL, /* a880 */ NULL, /* a900 */ NULL, /* a980 */ NULL, /* aa00 */ NULL, /* aa80 */ NULL, /* ab00 */ NULL, /* ab80 */ NULL, /* ac00 */ NULL, /* ac80 */ NULL, /* ad00 */ NULL, /* ad80 */ NULL, /* ae00 */ NULL, /* ae80 */ NULL, /* af00 */ NULL, /* af80 */ NULL, /* b000 */ NULL, /* b080 */ NULL, /* b100 */ NULL, /* b180 */ NULL, /* b200 */ NULL, /* b280 */ NULL, /* b300 */ NULL, /* b380 */ NULL, /* b400 */ NULL, /* b480 */ NULL, /* b500 */ NULL, /* b580 */ NULL, /* b600 */ NULL, /* b680 */ NULL, /* b700 */ NULL, /* b780 */ NULL, /* b800 */ NULL, /* b880 */ NULL, /* b900 */ NULL, /* b980 */ NULL, /* ba00 */ NULL, /* ba80 */ NULL, /* bb00 */ NULL, /* bb80 */ NULL, /* bc00 */ NULL, /* bc80 */ NULL, /* bd00 */ NULL, /* bd80 */ NULL, /* be00 */ NULL, /* be80 */ NULL, /* bf00 */ NULL, /* bf80 */ NULL, /* c000 */ NULL, /* c080 */ NULL, /* c100 */ NULL, /* c180 */ NULL, /* c200 */ NULL, /* c280 */ NULL, /* c300 */ NULL, /* c380 */ NULL, /* c400 */ NULL, /* c480 */ NULL, /* c500 */ NULL, /* c580 */ NULL, /* c600 */ NULL, /* c680 */ NULL, /* c700 */ NULL, /* c780 */ NULL, /* c800 */ NULL, /* c880 */ NULL, /* c900 */ NULL, /* c980 */ NULL, /* ca00 */ NULL, /* ca80 */ NULL, /* cb00 */ NULL, /* cb80 */ NULL, /* cc00 */ NULL, /* cc80 */ NULL, /* cd00 */ NULL, /* cd80 */ NULL, /* ce00 */ NULL, /* ce80 */ NULL, /* cf00 */ NULL, /* cf80 */ NULL, /* d000 */ NULL, /* d080 */ NULL, /* d100 */ NULL, /* d180 */ NULL, /* d200 */ NULL, /* d280 */ NULL, /* d300 */ NULL, /* d380 */ NULL, /* d400 */ NULL, /* d480 */ NULL, /* d500 */ NULL, /* d580 */ NULL, /* d600 */ NULL, /* d680 */ NULL, /* d700 */ NULL, /* d780 */ NULL, /* d800 */ NULL, /* d880 */ NULL, /* d900 */ NULL, /* d980 */ NULL, /* da00 */ NULL, /* da80 */ NULL, /* db00 */ NULL, /* db80 */ NULL, /* dc00 */ NULL, /* dc80 */ NULL, /* dd00 */ NULL, /* dd80 */ NULL, /* de00 */ NULL, /* de80 */ NULL, /* df00 */ NULL, /* df80 */ NULL, /* e000 */ NULL, /* e080 */ NULL, /* e100 */ NULL, /* e180 */ NULL, /* e200 */ NULL, /* e280 */ NULL, /* e300 */ NULL, /* e380 */ NULL, /* e400 */ NULL, /* e480 */ NULL, /* e500 */ NULL, /* e580 */ NULL, /* e600 */ NULL, /* e680 */ NULL, /* e700 */ NULL, /* e780 */ NULL, /* e800 */ NULL, /* e880 */ NULL, /* e900 */ NULL, /* e980 */ NULL, /* ea00 */ NULL, /* ea80 */ NULL, /* eb00 */ NULL, /* eb80 */ NULL, /* ec00 */ NULL, /* ec80 */ NULL, /* ed00 */ NULL, /* ed80 */ NULL, /* ee00 */ NULL, /* ee80 */ NULL, /* ef00 */ NULL, /* ef80 */ NULL, /* f000 */ NULL, /* f080 */ NULL, /* f100 */ NULL, /* f180 */ NULL, /* f200 */ NULL, /* f280 */ NULL, /* f300 */ NULL, /* f380 */ NULL, /* f400 */ NULL, /* f480 */ NULL, /* f500 */ NULL, /* f580 */ NULL, /* f600 */ NULL, /* f680 */ NULL, /* f700 */ NULL, /* f780 */ NULL, /* f800 */ NULL, /* f880 */ NULL, /* f900 */ NULL, /* f980 */ NULL, /* fa00 */ NULL, /* fa80 */ NULL, /* fb00 */ NULL, /* fb80 */ NULL, /* fc00 */ NULL, /* fc80 */ NULL, /* fd00 */ NULL, /* fd80 */ NULL, /* fe00 */ NULL, /* fe80 */ NULL, /* ff00 */ "\x00\x00\x23\x21\x23\x22\x23\x23\x21\x67\x23\x25\x23\x26\x23\x27\x23\x28\x23\x29\x23\x2a\x23\x2b\x23\x2c\x23\x2d\x23\x2e\x23\x2f\x23\x30\x23\x31\x23\x32\x23\x33\x23\x34\x23\x35\x23\x36\x23\x37\x23\x38\x23\x39\x23\x3a\x23\x3b\x23\x3c\x23\x3d\x23\x3e\x23\x3f\x23\x40\x23\x41\x23\x42\x23\x43\x23\x44\x23\x45\x23\x46\x23\x47\x23\x48\x23\x49\x23\x4a\x23\x4b\x23\x4c\x23\x4d\x23\x4e\x23\x4f\x23\x50\x23\x51\x23\x52\x23\x53\x23\x54\x23\x55\x23\x56\x23\x57\x23\x58\x23\x59\x23\x5a\x23\x5b\x23\x5c\x23\x5d\x23\x5e\x23\x5f\x23\x60\x23\x61\x23\x62\x23\x63\x23\x64\x23\x65\x23\x66\x23\x67\x23\x68\x23\x69\x23\x6a\x23\x6b\x23\x6c\x23\x6d\x23\x6e\x23\x6f\x23\x70\x23\x71\x23\x72\x23\x73\x23\x74\x23\x75\x23\x76\x23\x77\x23\x78\x23\x79\x23\x7a\x23\x7b\x23\x7c\x23\x7d\x21\x2b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* ff00 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x21\x69\x21\x6a\x00\x00\x23\x7e\x00\x00\x23\x24\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" } }, /* * GB18030 X11 font, uses GB18030 encoding, but only represents 2-byte * sequences 81 40 through fe fe (no ASCII). */ { "gb18030.2000-0", { /* 0000 */ NULL, /* 0080 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa1\xe8\x00\x00\x00\x00\xa1\xec\xa1\xa7\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa1\xe3\xa1\xc0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa1\xa4\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa1\xc1\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa8\xa4\xa8\xa2\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa8\xa8\xa8\xa6\xa8\xba\x00\x00\xa8\xac\xa8\xaa\x00\x00\x00\x00\x00\x00\x00\x00\xa8\xb0\xa8\xae\x00\x00\x00\x00\x00\x00\xa1\xc2\x00\x00\xa8\xb4\xa8\xb2\x00\x00\xa8\xb9\x00\x00\x00\x00\x00\x00", /* 0100 */ "\x00\x00\xa8\xa1\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa8\xa5\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa8\xa7\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa8\xa9\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa8\xbd\x00\x00\x00\x00\x00\x00\xa8\xbe\x00\x00\x00\x00\x00\x00\x00\x00\xa8\xad\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa8\xb1\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 0180 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa8\xa3\x00\x00\xa8\xab\x00\x00\xa8\xaf\x00\x00\xa8\xb3\x00\x00\xa8\xb5\x00\x00\xa8\xb6\x00\x00\xa8\xb7\x00\x00\xa8\xb8\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa8\xbf\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 0200 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa8\xbb\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa8\xc0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 0280 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa1\xa6\x00\x00\xa1\xa5\xa8\x40\xa8\x41\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa8\x42\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 0300 */ NULL, /* 0380 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa6\xa1\xa6\xa2\xa6\xa3\xa6\xa4\xa6\xa5\xa6\xa6\xa6\xa7\xa6\xa8\xa6\xa9\xa6\xaa\xa6\xab\xa6\xac\xa6\xad\xa6\xae\xa6\xaf\xa6\xb0\xa6\xb1\x00\x00\xa6\xb2\xa6\xb3\xa6\xb4\xa6\xb5\xa6\xb6\xa6\xb7\xa6\xb8\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa6\xc1\xa6\xc2\xa6\xc3\xa6\xc4\xa6\xc5\xa6\xc6\xa6\xc7\xa6\xc8\xa6\xc9\xa6\xca\xa6\xcb\xa6\xcc\xa6\xcd\xa6\xce\xa6\xcf\xa6\xd0\xa6\xd1\x00\x00\xa6\xd2\xa6\xd3\xa6\xd4\xa6\xd5\xa6\xd6\xa6\xd7\xa6\xd8\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 0400 */ "\x00\x00\xa7\xa7\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa7\xa1\xa7\xa2\xa7\xa3\xa7\xa4\xa7\xa5\xa7\xa6\xa7\xa8\xa7\xa9\xa7\xaa\xa7\xab\xa7\xac\xa7\xad\xa7\xae\xa7\xaf\xa7\xb0\xa7\xb1\xa7\xb2\xa7\xb3\xa7\xb4\xa7\xb5\xa7\xb6\xa7\xb7\xa7\xb8\xa7\xb9\xa7\xba\xa7\xbb\xa7\xbc\xa7\xbd\xa7\xbe\xa7\xbf\xa7\xc0\xa7\xc1\xa7\xd1\xa7\xd2\xa7\xd3\xa7\xd4\xa7\xd5\xa7\xd6\xa7\xd8\xa7\xd9\xa7\xda\xa7\xdb\xa7\xdc\xa7\xdd\xa7\xde\xa7\xdf\xa7\xe0\xa7\xe1\xa7\xe2\xa7\xe3\xa7\xe4\xa7\xe5\xa7\xe6\xa7\xe7\xa7\xe8\xa7\xe9\xa7\xea\xa7\xeb\xa7\xec\xa7\xed\xa7\xee\xa7\xef\xa7\xf0\xa7\xf1\x00\x00\xa7\xd7\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 0480 */ NULL, /* 0500 */ NULL, /* 0580 */ NULL, /* 0600 */ NULL, /* 0680 */ NULL, /* 0700 */ NULL, /* 0780 */ NULL, /* 0800 */ NULL, /* 0880 */ NULL, /* 0900 */ NULL, /* 0980 */ NULL, /* 0a00 */ NULL, /* 0a80 */ NULL, /* 0b00 */ NULL, /* 0b80 */ NULL, /* 0c00 */ NULL, /* 0c80 */ NULL, /* 0d00 */ NULL, /* 0d80 */ NULL, /* 0e00 */ NULL, /* 0e80 */ NULL, /* 0f00 */ NULL, /* 0f80 */ NULL, /* 1000 */ NULL, /* 1080 */ NULL, /* 1100 */ NULL, /* 1180 */ NULL, /* 1200 */ NULL, /* 1280 */ NULL, /* 1300 */ NULL, /* 1380 */ NULL, /* 1400 */ NULL, /* 1480 */ NULL, /* 1500 */ NULL, /* 1580 */ NULL, /* 1600 */ NULL, /* 1680 */ NULL, /* 1700 */ NULL, /* 1780 */ NULL, /* 1800 */ NULL, /* 1880 */ NULL, /* 1900 */ NULL, /* 1980 */ NULL, /* 1a00 */ NULL, /* 1a80 */ NULL, /* 1b00 */ NULL, /* 1b80 */ NULL, /* 1c00 */ NULL, /* 1c80 */ NULL, /* 1d00 */ NULL, /* 1d80 */ NULL, /* 1e00 */ NULL, /* 1e80 */ NULL, /* 1f00 */ NULL, /* 1f80 */ NULL, /* 2000 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa9\x5c\x00\x00\x00\x00\xa8\x43\xa1\xaa\xa8\x44\xa1\xac\x00\x00\xa1\xae\xa1\xaf\x00\x00\x00\x00\xa1\xb0\xa1\xb1\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa8\x45\xa1\xad\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa1\xeb\x00\x00\xa1\xe4\xa1\xe5\x00\x00\xa8\x46\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa1\xf9\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 2080 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa2\xe3\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 2100 */ "\x00\x00\x00\x00\x00\x00\xa1\xe6\x00\x00\xa8\x47\x00\x00\x00\x00\x00\x00\xa8\x48\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa1\xed\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa9\x59\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa2\xf1\xa2\xf2\xa2\xf3\xa2\xf4\xa2\xf5\xa2\xf6\xa2\xf7\xa2\xf8\xa2\xf9\xa2\xfa\xa2\xfb\xa2\xfc\x00\x00\x00\x00\x00\x00\x00\x00\xa2\xa1\xa2\xa2\xa2\xa3\xa2\xa4\xa2\xa5\xa2\xa6\xa2\xa7\xa2\xa8\xa2\xa9\xa2\xaa\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 2180 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa1\xfb\xa1\xfc\xa1\xfa\xa1\xfd\x00\x00\x00\x00\xa8\x49\xa8\x4a\xa8\x4b\xa8\x4c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 2200 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa1\xca\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa1\xc7\x00\x00\xa1\xc6\x00\x00\x00\x00\x00\x00\xa8\x4d\x00\x00\x00\x00\x00\x00\x00\x00\xa1\xcc\x00\x00\x00\x00\xa1\xd8\xa1\xde\xa8\x4e\xa1\xcf\x00\x00\x00\x00\xa8\x4f\x00\x00\xa1\xce\x00\x00\xa1\xc4\xa1\xc5\xa1\xc9\xa1\xc8\xa1\xd2\x00\x00\x00\x00\xa1\xd3\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa1\xe0\xa1\xdf\xa1\xc3\xa1\xcb\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa1\xd7\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa1\xd6\x00\x00\x00\x00\x00\x00\xa1\xd5\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa8\x50\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa1\xd9\xa1\xd4\x00\x00\x00\x00\xa1\xdc\xa1\xdd\xa8\x51\xa8\x52\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa1\xda\xa1\xdb\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 2280 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa8\x92\x00\x00\x00\x00\x00\x00\xa1\xd1\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa1\xcd\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa8\x53\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 2300 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa1\xd0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 2380 */ NULL, /* 2400 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa2\xd9\xa2\xda\xa2\xdb\xa2\xdc\xa2\xdd\xa2\xde\xa2\xdf\xa2\xe0\xa2\xe1\xa2\xe2\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa2\xc5\xa2\xc6\xa2\xc7\xa2\xc8\xa2\xc9\xa2\xca\xa2\xcb\xa2\xcc\xa2\xcd\xa2\xce\xa2\xcf\xa2\xd0", /* 2480 */ "\xa2\xd1\xa2\xd2\xa2\xd3\xa2\xd4\xa2\xd5\xa2\xd6\xa2\xd7\xa2\xd8\xa2\xb1\xa2\xb2\xa2\xb3\xa2\xb4\xa2\xb5\xa2\xb6\xa2\xb7\xa2\xb8\xa2\xb9\xa2\xba\xa2\xbb\xa2\xbc\xa2\xbd\xa2\xbe\xa2\xbf\xa2\xc0\xa2\xc1\xa2\xc2\xa2\xc3\xa2\xc4\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 2500 */ "\xa9\xa4\xa9\xa5\xa9\xa6\xa9\xa7\xa9\xa8\xa9\xa9\xa9\xaa\xa9\xab\xa9\xac\xa9\xad\xa9\xae\xa9\xaf\xa9\xb0\xa9\xb1\xa9\xb2\xa9\xb3\xa9\xb4\xa9\xb5\xa9\xb6\xa9\xb7\xa9\xb8\xa9\xb9\xa9\xba\xa9\xbb\xa9\xbc\xa9\xbd\xa9\xbe\xa9\xbf\xa9\xc0\xa9\xc1\xa9\xc2\xa9\xc3\xa9\xc4\xa9\xc5\xa9\xc6\xa9\xc7\xa9\xc8\xa9\xc9\xa9\xca\xa9\xcb\xa9\xcc\xa9\xcd\xa9\xce\xa9\xcf\xa9\xd0\xa9\xd1\xa9\xd2\xa9\xd3\xa9\xd4\xa9\xd5\xa9\xd6\xa9\xd7\xa9\xd8\xa9\xd9\xa9\xda\xa9\xdb\xa9\xdc\xa9\xdd\xa9\xde\xa9\xdf\xa9\xe0\xa9\xe1\xa9\xe2\xa9\xe3\xa9\xe4\xa9\xe5\xa9\xe6\xa9\xe7\xa9\xe8\xa9\xe9\xa9\xea\xa9\xeb\xa9\xec\xa9\xed\xa9\xee\xa9\xef\x00\x00\x00\x00\x00\x00\x00\x00\xa8\x54\xa8\x55\xa8\x56\xa8\x57\xa8\x58\xa8\x59\xa8\x5a\xa8\x5b\xa8\x5c\xa8\x5d\xa8\x5e\xa8\x5f\xa8\x60\xa8\x61\xa8\x62\xa8\x63\xa8\x64\xa8\x65\xa8\x66\xa8\x67\xa8\x68\xa8\x69\xa8\x6a\xa8\x6b\xa8\x6c\xa8\x6d\xa8\x6e\xa8\x6f\xa8\x70\xa8\x71\xa8\x72\xa8\x73\xa8\x74\xa8\x75\xa8\x76\xa8\x77\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 2580 */ "\x00\x00\xa8\x78\xa8\x79\xa8\x7a\xa8\x7b\xa8\x7c\xa8\x7d\xa8\x7e\xa8\x80\xa8\x81\xa8\x82\xa8\x83\xa8\x84\xa8\x85\xa8\x86\xa8\x87\x00\x00\x00\x00\x00\x00\xa8\x88\xa8\x89\xa8\x8a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa1\xf6\xa1\xf5\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa1\xf8\xa1\xf7\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa8\x8b\xa8\x8c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa1\xf4\xa1\xf3\x00\x00\x00\x00\x00\x00\xa1\xf0\x00\x00\x00\x00\xa1\xf2\xa1\xf1\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa8\x8d\xa8\x8e\xa8\x8f\xa8\x90\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 2600 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa1\xef\xa1\xee\x00\x00\x00\x00\xa8\x91\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa1\xe2\x00\x00\xa1\xe1\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 2680 */ NULL, /* 2700 */ NULL, /* 2780 */ NULL, /* 2800 */ NULL, /* 2880 */ NULL, /* 2900 */ NULL, /* 2980 */ NULL, /* 2a00 */ NULL, /* 2a80 */ NULL, /* 2b00 */ NULL, /* 2b80 */ NULL, /* 2c00 */ NULL, /* 2c80 */ NULL, /* 2d00 */ NULL, /* 2d80 */ NULL, /* 2e00 */ NULL, /* 2e80 */ "\x00\x00\xfe\x50\x00\x00\x00\x00\xfe\x54\x00\x00\x00\x00\x00\x00\xfe\x57\x00\x00\x00\x00\xfe\x58\xfe\x5d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xfe\x5e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xfe\x6b\x00\x00\x00\x00\xfe\x6e\x00\x00\x00\x00\x00\x00\xfe\x71\x00\x00\x00\x00\x00\x00\x00\x00\xfe\x73\x00\x00\x00\x00\xfe\x74\xfe\x75\x00\x00\x00\x00\x00\x00\xfe\x79\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xfe\x84\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 2f00 */ NULL, /* 2f80 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa9\x8a\xa9\x8b\xa9\x8c\xa9\x8d\xa9\x8e\xa9\x8f\xa9\x90\xa9\x91\xa9\x92\xa9\x93\xa9\x94\xa9\x95\x00\x00\x00\x00\x00\x00\x00\x00", /* 3000 */ "\xa1\xa1\xa1\xa2\xa1\xa3\xa1\xa8\x00\x00\xa1\xa9\xa9\x65\xa9\x96\xa1\xb4\xa1\xb5\xa1\xb6\xa1\xb7\xa1\xb8\xa1\xb9\xa1\xba\xa1\xbb\xa1\xbe\xa1\xbf\xa8\x93\xa1\xfe\xa1\xb2\xa1\xb3\xa1\xbc\xa1\xbd\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa8\x94\xa8\x95\x00\x00\x00\x00\xa9\x40\xa9\x41\xa9\x42\xa9\x43\xa9\x44\xa9\x45\xa9\x46\xa9\x47\xa9\x48\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa9\x89\x00\x00\x00\x00\xa4\xa1\xa4\xa2\xa4\xa3\xa4\xa4\xa4\xa5\xa4\xa6\xa4\xa7\xa4\xa8\xa4\xa9\xa4\xaa\xa4\xab\xa4\xac\xa4\xad\xa4\xae\xa4\xaf\xa4\xb0\xa4\xb1\xa4\xb2\xa4\xb3\xa4\xb4\xa4\xb5\xa4\xb6\xa4\xb7\xa4\xb8\xa4\xb9\xa4\xba\xa4\xbb\xa4\xbc\xa4\xbd\xa4\xbe\xa4\xbf\xa4\xc0\xa4\xc1\xa4\xc2\xa4\xc3\xa4\xc4\xa4\xc5\xa4\xc6\xa4\xc7\xa4\xc8\xa4\xc9\xa4\xca\xa4\xcb\xa4\xcc\xa4\xcd\xa4\xce\xa4\xcf\xa4\xd0\xa4\xd1\xa4\xd2\xa4\xd3\xa4\xd4\xa4\xd5\xa4\xd6\xa4\xd7\xa4\xd8\xa4\xd9\xa4\xda\xa4\xdb\xa4\xdc\xa4\xdd\xa4\xde\xa4\xdf", /* 3080 */ "\xa4\xe0\xa4\xe1\xa4\xe2\xa4\xe3\xa4\xe4\xa4\xe5\xa4\xe6\xa4\xe7\xa4\xe8\xa4\xe9\xa4\xea\xa4\xeb\xa4\xec\xa4\xed\xa4\xee\xa4\xef\xa4\xf0\xa4\xf1\xa4\xf2\xa4\xf3\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa9\x61\xa9\x62\xa9\x66\xa9\x67\x00\x00\x00\x00\xa5\xa1\xa5\xa2\xa5\xa3\xa5\xa4\xa5\xa5\xa5\xa6\xa5\xa7\xa5\xa8\xa5\xa9\xa5\xaa\xa5\xab\xa5\xac\xa5\xad\xa5\xae\xa5\xaf\xa5\xb0\xa5\xb1\xa5\xb2\xa5\xb3\xa5\xb4\xa5\xb5\xa5\xb6\xa5\xb7\xa5\xb8\xa5\xb9\xa5\xba\xa5\xbb\xa5\xbc\xa5\xbd\xa5\xbe\xa5\xbf\xa5\xc0\xa5\xc1\xa5\xc2\xa5\xc3\xa5\xc4\xa5\xc5\xa5\xc6\xa5\xc7\xa5\xc8\xa5\xc9\xa5\xca\xa5\xcb\xa5\xcc\xa5\xcd\xa5\xce\xa5\xcf\xa5\xd0\xa5\xd1\xa5\xd2\xa5\xd3\xa5\xd4\xa5\xd5\xa5\xd6\xa5\xd7\xa5\xd8\xa5\xd9\xa5\xda\xa5\xdb\xa5\xdc\xa5\xdd\xa5\xde\xa5\xdf\xa5\xe0\xa5\xe1\xa5\xe2\xa5\xe3\xa5\xe4\xa5\xe5\xa5\xe6\xa5\xe7\xa5\xe8\xa5\xe9\xa5\xea\xa5\xeb\xa5\xec\xa5\xed\xa5\xee\xa5\xef\xa5\xf0\xa5\xf1\xa5\xf2\xa5\xf3\xa5\xf4\xa5\xf5\xa5\xf6\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa9\x60\xa9\x63\xa9\x64\x00\x00", /* 3100 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa8\xc5\xa8\xc6\xa8\xc7\xa8\xc8\xa8\xc9\xa8\xca\xa8\xcb\xa8\xcc\xa8\xcd\xa8\xce\xa8\xcf\xa8\xd0\xa8\xd1\xa8\xd2\xa8\xd3\xa8\xd4\xa8\xd5\xa8\xd6\xa8\xd7\xa8\xd8\xa8\xd9\xa8\xda\xa8\xdb\xa8\xdc\xa8\xdd\xa8\xde\xa8\xdf\xa8\xe0\xa8\xe1\xa8\xe2\xa8\xe3\xa8\xe4\xa8\xe5\xa8\xe6\xa8\xe7\xa8\xe8\xa8\xe9\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 3180 */ NULL, /* 3200 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa2\xe5\xa2\xe6\xa2\xe7\xa2\xe8\xa2\xe9\xa2\xea\xa2\xeb\xa2\xec\xa2\xed\xa2\xee\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa9\x5a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 3280 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa9\x49\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 3300 */ NULL, /* 3380 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa9\x4a\xa9\x4b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa9\x4c\xa9\x4d\xa9\x4e\x00\x00\x00\x00\xa9\x4f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa9\x50\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa9\x51\x00\x00\x00\x00\xa9\x52\xa9\x53\x00\x00\x00\x00\xa9\x54\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 3400 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xfe\x56\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xfe\x55\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 3480 */ NULL, /* 3500 */ NULL, /* 3580 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xfe\x5a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 3600 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xfe\x5c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xfe\x5b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 3680 */ NULL, /* 3700 */ NULL, /* 3780 */ NULL, /* 3800 */ NULL, /* 3880 */ NULL, /* 3900 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xfe\x60\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xfe\x5f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 3980 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xfe\x62\xfe\x65\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xfe\x63\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 3a00 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xfe\x64\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 3a80 */ NULL, /* 3b00 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xfe\x68\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 3b80 */ NULL, /* 3c00 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xfe\x69\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 3c80 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xfe\x6a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 3d00 */ NULL, /* 3d80 */ NULL, /* 3e00 */ NULL, /* 3e80 */ NULL, /* 3f00 */ NULL, /* 3f80 */ NULL, /* 4000 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xfe\x6f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 4080 */ NULL, /* 4100 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xfe\x70\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 4180 */ NULL, /* 4200 */ NULL, /* 4280 */ NULL, /* 4300 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xfe\x72\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 4380 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xfe\x78\x00\x00\x00\x00\x00\x00\x00\x00\xfe\x77\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xfe\x7a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 4400 */ NULL, /* 4480 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xfe\x7b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 4500 */ NULL, /* 4580 */ NULL, /* 4600 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xfe\x7d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xfe\x7c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 4680 */ NULL, /* 4700 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xfe\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xfe\x81\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xfe\x82\x00\x00\x00\x00\x00\x00", /* 4780 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xfe\x83\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 4800 */ NULL, /* 4880 */ NULL, /* 4900 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xfe\x85\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xfe\x86\x00\x00\x00\x00\xfe\x87\x00\x00\x00\x00", /* 4980 */ "\x00\x00\x00\x00\xfe\x88\xfe\x89\x00\x00\xfe\x8a\xfe\x8b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xfe\x8d\x00\x00\x00\x00\x00\x00\xfe\x8c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xfe\x8f\xfe\x8e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 4a00 */ NULL, /* 4a80 */ NULL, /* 4b00 */ NULL, /* 4b80 */ NULL, /* 4c00 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xfe\x96\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 4c80 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xfe\x93\xfe\x94\xfe\x95\xfe\x97\xfe\x92\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 4d00 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xfe\x98\xfe\x99\xfe\x9a\xfe\x9b\xfe\x9c\xfe\x9d\xfe\x9e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 4d80 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xfe\x9f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 4e00 */ "\xd2\xbb\xb6\xa1\x81\x40\xc6\xdf\x81\x41\x81\x42\x81\x43\xcd\xf2\xd5\xc9\xc8\xfd\xc9\xcf\xcf\xc2\xd8\xa2\xb2\xbb\xd3\xeb\x81\x44\xd8\xa4\xb3\xf3\x81\x45\xd7\xa8\xc7\xd2\xd8\xa7\xca\xc0\x81\x46\xc7\xf0\xb1\xfb\xd2\xb5\xb4\xd4\xb6\xab\xcb\xbf\xd8\xa9\x81\x47\x81\x48\x81\x49\xb6\xaa\x81\x4a\xc1\xbd\xd1\xcf\x81\x4b\xc9\xa5\xd8\xad\x81\x4c\xb8\xf6\xd1\xbe\xe3\xdc\xd6\xd0\x81\x4d\x81\x4e\xb7\xe1\x81\x4f\xb4\xae\x81\x50\xc1\xd9\x81\x51\xd8\xbc\x81\x52\xcd\xe8\xb5\xa4\xce\xaa\xd6\xf7\x81\x53\xc0\xf6\xbe\xd9\xd8\xaf\x81\x54\x81\x55\x81\x56\xc4\xcb\x81\x57\xbe\xc3\x81\x58\xd8\xb1\xc3\xb4\xd2\xe5\x81\x59\xd6\xae\xce\xda\xd5\xa7\xba\xf5\xb7\xa6\xc0\xd6\x81\x5a\xc6\xb9\xc5\xd2\xc7\xc7\x81\x5b\xb9\xd4\x81\x5c\xb3\xcb\xd2\xd2\x81\x5d\x81\x5e\xd8\xbf\xbe\xc5\xc6\xf2\xd2\xb2\xcf\xb0\xcf\xe7\x81\x5f\x81\x60\x81\x61\x81\x62\xca\xe9\x81\x63\x81\x64\xd8\xc0\x81\x65\x81\x66\x81\x67\x81\x68\x81\x69\x81\x6a\xc2\xf2\xc2\xd2\x81\x6b\xc8\xe9\x81\x6c\x81\x6d\x81\x6e\x81\x6f\x81\x70\x81\x71\x81\x72\x81\x73\x81\x74\x81\x75\xc7\xac\x81\x76", /* 4e80 */ "\x81\x77\x81\x78\x81\x79\x81\x7a\x81\x7b\x81\x7c\xc1\xcb\x81\x7d\xd3\xe8\xd5\xf9\x81\x7e\xca\xc2\xb6\xfe\xd8\xa1\xd3\xda\xbf\xf7\x81\x80\xd4\xc6\xbb\xa5\xd8\xc1\xce\xe5\xbe\xae\x81\x81\x81\x82\xd8\xa8\x81\x83\xd1\xc7\xd0\xa9\x81\x84\x81\x85\x81\x86\xd8\xbd\xd9\xef\xcd\xf6\xbf\xba\x81\x87\xbd\xbb\xba\xa5\xd2\xe0\xb2\xfa\xba\xe0\xc4\xb6\x81\x88\xcf\xed\xbe\xa9\xcd\xa4\xc1\xc1\x81\x89\x81\x8a\x81\x8b\xc7\xd7\xd9\xf1\x81\x8c\xd9\xf4\x81\x8d\x81\x8e\x81\x8f\x81\x90\xc8\xcb\xd8\xe9\x81\x91\x81\x92\x81\x93\xd2\xda\xca\xb2\xc8\xca\xd8\xec\xd8\xea\xd8\xc6\xbd\xf6\xc6\xcd\xb3\xf0\x81\x94\xd8\xeb\xbd\xf1\xbd\xe9\x81\x95\xc8\xd4\xb4\xd3\x81\x96\x81\x97\xc2\xd8\x81\x98\xb2\xd6\xd7\xd0\xca\xcb\xcb\xfb\xd5\xcc\xb8\xb6\xcf\xc9\x81\x99\x81\x9a\x81\x9b\xd9\xda\xd8\xf0\xc7\xaa\x81\x9c\xd8\xee\x81\x9d\xb4\xfa\xc1\xee\xd2\xd4\x81\x9e\x81\x9f\xd8\xed\x81\xa0\xd2\xc7\xd8\xef\xc3\xc7\x81\xa1\x81\xa2\x81\xa3\xd1\xf6\x81\xa4\xd6\xd9\xd8\xf2\x81\xa5\xd8\xf5\xbc\xfe\xbc\xdb\x81\xa6\x81\xa7\x81\xa8\xc8\xce\x81\xa9\xb7\xdd\x81\xaa\xb7\xc2", /* 4f00 */ "\x81\xab\xc6\xf3\x81\xac\x81\xad\x81\xae\x81\xaf\x81\xb0\x81\xb1\x81\xb2\xd8\xf8\xd2\xc1\x81\xb3\x81\xb4\xce\xe9\xbc\xbf\xb7\xfc\xb7\xa5\xd0\xdd\x81\xb5\x81\xb6\x81\xb7\x81\xb8\x81\xb9\xd6\xda\xd3\xc5\xbb\xef\xbb\xe1\xd8\xf1\x81\xba\x81\xbb\xc9\xa1\xce\xb0\xb4\xab\x81\xbc\xd8\xf3\x81\xbd\xc9\xcb\xd8\xf6\xc2\xd7\xd8\xf7\x81\xbe\x81\xbf\xce\xb1\xd8\xf9\x81\xc0\x81\xc1\x81\xc2\xb2\xae\xb9\xc0\x81\xc3\xd9\xa3\x81\xc4\xb0\xe9\x81\xc5\xc1\xe6\x81\xc6\xc9\xec\x81\xc7\xcb\xc5\x81\xc8\xcb\xc6\xd9\xa4\x81\xc9\x81\xca\x81\xcb\x81\xcc\x81\xcd\xb5\xe8\x81\xce\x81\xcf\xb5\xab\x81\xd0\x81\xd1\x81\xd2\x81\xd3\x81\xd4\x81\xd5\xce\xbb\xb5\xcd\xd7\xa1\xd7\xf4\xd3\xd3\x81\xd6\xcc\xe5\x81\xd7\xba\xce\x81\xd8\xd9\xa2\xd9\xdc\xd3\xe0\xd8\xfd\xb7\xf0\xd7\xf7\xd8\xfe\xd8\xfa\xd9\xa1\xc4\xe3\x81\xd9\x81\xda\xd3\xb6\xd8\xf4\xd9\xdd\x81\xdb\xd8\xfb\x81\xdc\xc5\xe5\x81\xdd\x81\xde\xc0\xd0\x81\xdf\x81\xe0\xd1\xf0\xb0\xdb\x81\xe1\x81\xe2\xbc\xd1\xd9\xa6\x81\xe3\xd9\xa5\x81\xe4\x81\xe5\x81\xe6\x81\xe7\xd9\xac\xd9\xae\x81\xe8\xd9\xab\xca\xb9", /* 4f80 */ "\x81\xe9\x81\xea\x81\xeb\xd9\xa9\xd6\xb6\x81\xec\x81\xed\x81\xee\xb3\xde\xd9\xa8\x81\xef\xc0\xfd\x81\xf0\xca\xcc\x81\xf1\xd9\xaa\x81\xf2\xd9\xa7\x81\xf3\x81\xf4\xd9\xb0\x81\xf5\x81\xf6\xb6\xb1\x81\xf7\x81\xf8\x81\xf9\xb9\xa9\x81\xfa\xd2\xc0\x81\xfb\x81\xfc\xcf\xc0\x81\xfd\x81\xfe\xc2\xc2\x82\x40\xbd\xc4\xd5\xec\xb2\xe0\xc7\xc8\xbf\xeb\xd9\xad\x82\x41\xd9\xaf\x82\x42\xce\xea\xba\xee\x82\x43\x82\x44\x82\x45\x82\x46\x82\x47\xc7\xd6\x82\x48\x82\x49\x82\x4a\x82\x4b\x82\x4c\x82\x4d\x82\x4e\x82\x4f\x82\x50\xb1\xe3\x82\x51\x82\x52\x82\x53\xb4\xd9\xb6\xed\xd9\xb4\x82\x54\x82\x55\x82\x56\x82\x57\xbf\xa1\x82\x58\x82\x59\x82\x5a\xd9\xde\xc7\xce\xc0\xfe\xd9\xb8\x82\x5b\x82\x5c\x82\x5d\x82\x5e\x82\x5f\xcb\xd7\xb7\xfd\x82\x60\xd9\xb5\x82\x61\xd9\xb7\xb1\xa3\xd3\xe1\xd9\xb9\x82\x62\xd0\xc5\x82\x63\xd9\xb6\x82\x64\x82\x65\xd9\xb1\x82\x66\xd9\xb2\xc1\xa9\xd9\xb3\x82\x67\x82\x68\xbc\xf3\xd0\xde\xb8\xa9\x82\x69\xbe\xe3\x82\x6a\xd9\xbd\x82\x6b\x82\x6c\x82\x6d\x82\x6e\xd9\xba\x82\x6f\xb0\xb3\x82\x70\x82\x71\x82\x72\xd9\xc2\x82\x73", /* 5000 */ "\x82\x74\x82\x75\x82\x76\x82\x77\x82\x78\x82\x79\x82\x7a\x82\x7b\x82\x7c\x82\x7d\x82\x7e\x82\x80\xd9\xc4\xb1\xb6\x82\x81\xd9\xbf\x82\x82\x82\x83\xb5\xb9\x82\x84\xbe\xf3\x82\x85\x82\x86\x82\x87\xcc\xc8\xba\xf2\xd2\xd0\x82\x88\xd9\xc3\x82\x89\x82\x8a\xbd\xe8\x82\x8b\xb3\xab\x82\x8c\x82\x8d\x82\x8e\xd9\xc5\xbe\xeb\x82\x8f\xd9\xc6\xd9\xbb\xc4\xdf\x82\x90\xd9\xbe\xd9\xc1\xd9\xc0\x82\x91\x82\x92\x82\x93\x82\x94\x82\x95\x82\x96\x82\x97\x82\x98\x82\x99\x82\x9a\x82\x9b\xd5\xae\x82\x9c\xd6\xb5\x82\x9d\xc7\xe3\x82\x9e\x82\x9f\x82\xa0\x82\xa1\xd9\xc8\x82\xa2\x82\xa3\x82\xa4\xbc\xd9\xd9\xca\x82\xa5\x82\xa6\x82\xa7\xd9\xbc\x82\xa8\xd9\xcb\xc6\xab\x82\xa9\x82\xaa\x82\xab\x82\xac\x82\xad\xd9\xc9\x82\xae\x82\xaf\x82\xb0\x82\xb1\xd7\xf6\x82\xb2\xcd\xa3\x82\xb3\x82\xb4\x82\xb5\x82\xb6\x82\xb7\x82\xb8\x82\xb9\x82\xba\xbd\xa1\x82\xbb\x82\xbc\x82\xbd\x82\xbe\x82\xbf\x82\xc0\xd9\xcc\x82\xc1\x82\xc2\x82\xc3\x82\xc4\x82\xc5\x82\xc6\x82\xc7\x82\xc8\x82\xc9\xc5\xbc\xcd\xb5\x82\xca\x82\xcb\x82\xcc\xd9\xcd\x82\xcd\x82\xce\xd9\xc7\xb3\xa5", /* 5080 */ "\xbf\xfe\x82\xcf\x82\xd0\x82\xd1\x82\xd2\xb8\xb5\x82\xd3\x82\xd4\xc0\xfc\x82\xd5\x82\xd6\x82\xd7\x82\xd8\xb0\xf8\x82\xd9\x82\xda\x82\xdb\x82\xdc\x82\xdd\x82\xde\x82\xdf\x82\xe0\x82\xe1\x82\xe2\x82\xe3\x82\xe4\x82\xe5\x82\xe6\x82\xe7\x82\xe8\x82\xe9\x82\xea\x82\xeb\x82\xec\x82\xed\xb4\xf6\x82\xee\xd9\xce\x82\xef\xd9\xcf\xb4\xa2\xd9\xd0\x82\xf0\x82\xf1\xb4\xdf\x82\xf2\x82\xf3\x82\xf4\x82\xf5\x82\xf6\xb0\xc1\x82\xf7\x82\xf8\x82\xf9\x82\xfa\x82\xfb\x82\xfc\x82\xfd\xd9\xd1\xc9\xb5\x82\xfe\x83\x40\x83\x41\x83\x42\x83\x43\x83\x44\x83\x45\x83\x46\x83\x47\x83\x48\x83\x49\x83\x4a\x83\x4b\x83\x4c\x83\x4d\x83\x4e\x83\x4f\x83\x50\x83\x51\xcf\xf1\x83\x52\x83\x53\x83\x54\x83\x55\x83\x56\x83\x57\xd9\xd2\x83\x58\x83\x59\x83\x5a\xc1\xc5\x83\x5b\x83\x5c\x83\x5d\x83\x5e\x83\x5f\x83\x60\x83\x61\x83\x62\x83\x63\x83\x64\x83\x65\xd9\xd6\xc9\xae\x83\x66\x83\x67\x83\x68\x83\x69\xd9\xd5\xd9\xd4\xd9\xd7\x83\x6a\x83\x6b\x83\x6c\x83\x6d\xcb\xdb\x83\x6e\xbd\xa9\x83\x6f\x83\x70\x83\x71\x83\x72\x83\x73\xc6\xa7\x83\x74\x83\x75\x83\x76\x83\x77", /* 5100 */ "\x83\x78\x83\x79\x83\x7a\x83\x7b\x83\x7c\x83\x7d\xd9\xd3\xd9\xd8\x83\x7e\x83\x80\x83\x81\xd9\xd9\x83\x82\x83\x83\x83\x84\x83\x85\x83\x86\x83\x87\xc8\xe5\x83\x88\x83\x89\x83\x8a\x83\x8b\x83\x8c\x83\x8d\x83\x8e\x83\x8f\x83\x90\x83\x91\x83\x92\x83\x93\x83\x94\x83\x95\xc0\xdc\x83\x96\x83\x97\x83\x98\x83\x99\x83\x9a\x83\x9b\x83\x9c\x83\x9d\x83\x9e\x83\x9f\x83\xa0\x83\xa1\x83\xa2\x83\xa3\x83\xa4\x83\xa5\x83\xa6\x83\xa7\x83\xa8\x83\xa9\x83\xaa\x83\xab\x83\xac\x83\xad\x83\xae\x83\xaf\x83\xb0\x83\xb1\x83\xb2\xb6\xf9\xd8\xa3\xd4\xca\x83\xb3\xd4\xaa\xd0\xd6\xb3\xe4\xd5\xd7\x83\xb4\xcf\xc8\xb9\xe2\x83\xb5\xbf\xcb\x83\xb6\xc3\xe2\x83\xb7\x83\xb8\x83\xb9\xb6\xd2\x83\xba\x83\xbb\xcd\xc3\xd9\xee\xd9\xf0\x83\xbc\x83\xbd\x83\xbe\xb5\xb3\x83\xbf\xb6\xb5\x83\xc0\x83\xc1\x83\xc2\x83\xc3\x83\xc4\xbe\xa4\x83\xc5\x83\xc6\xc8\xeb\x83\xc7\x83\xc8\xc8\xab\x83\xc9\x83\xca\xb0\xcb\xb9\xab\xc1\xf9\xd9\xe2\x83\xcb\xc0\xbc\xb9\xb2\x83\xcc\xb9\xd8\xd0\xcb\xb1\xf8\xc6\xe4\xbe\xdf\xb5\xe4\xd7\xc8\x83\xcd\xd1\xf8\xbc\xe6\xca\xde\x83\xce\x83\xcf", /* 5180 */ "\xbc\xbd\xd9\xe6\xd8\xe7\x83\xd0\x83\xd1\xc4\xda\x83\xd2\x83\xd3\xb8\xd4\xc8\xbd\x83\xd4\x83\xd5\xb2\xe1\xd4\xd9\x83\xd6\x83\xd7\x83\xd8\x83\xd9\xc3\xb0\x83\xda\x83\xdb\xc3\xe1\xda\xa2\xc8\xdf\x83\xdc\xd0\xb4\x83\xdd\xbe\xfc\xc5\xa9\x83\xde\x83\xdf\x83\xe0\xb9\xda\x83\xe1\xda\xa3\x83\xe2\xd4\xa9\xda\xa4\x83\xe3\x83\xe4\x83\xe5\x83\xe6\x83\xe7\xd9\xfb\xb6\xac\x83\xe8\x83\xe9\xb7\xeb\xb1\xf9\xd9\xfc\xb3\xe5\xbe\xf6\x83\xea\xbf\xf6\xd2\xb1\xc0\xe4\x83\xeb\x83\xec\x83\xed\xb6\xb3\xd9\xfe\xd9\xfd\x83\xee\x83\xef\xbe\xbb\x83\xf0\x83\xf1\x83\xf2\xc6\xe0\x83\xf3\xd7\xbc\xda\xa1\x83\xf4\xc1\xb9\x83\xf5\xb5\xf2\xc1\xe8\x83\xf6\x83\xf7\xbc\xf5\x83\xf8\xb4\xd5\x83\xf9\x83\xfa\x83\xfb\x83\xfc\x83\xfd\x83\xfe\x84\x40\x84\x41\x84\x42\xc1\xdd\x84\x43\xc4\xfd\x84\x44\x84\x45\xbc\xb8\xb7\xb2\x84\x46\x84\x47\xb7\xef\x84\x48\x84\x49\x84\x4a\x84\x4b\x84\x4c\x84\x4d\xd9\xec\x84\x4e\xc6\xbe\x84\x4f\xbf\xad\xbb\xcb\x84\x50\x84\x51\xb5\xca\x84\x52\xdb\xc9\xd0\xd7\x84\x53\xcd\xb9\xb0\xbc\xb3\xf6\xbb\xf7\xdb\xca\xba\xaf\x84\x54\xd4\xe4", /* 5200 */ "\xb5\xb6\xb5\xf3\xd8\xd6\xc8\xd0\x84\x55\x84\x56\xb7\xd6\xc7\xd0\xd8\xd7\x84\x57\xbf\xaf\x84\x58\x84\x59\xdb\xbb\xd8\xd8\x84\x5a\x84\x5b\xd0\xcc\xbb\xae\x84\x5c\x84\x5d\x84\x5e\xeb\xbe\xc1\xd0\xc1\xf5\xd4\xf2\xb8\xd5\xb4\xb4\x84\x5f\xb3\xf5\x84\x60\x84\x61\xc9\xbe\x84\x62\x84\x63\x84\x64\xc5\xd0\x84\x65\x84\x66\x84\x67\xc5\xd9\xc0\xfb\x84\x68\xb1\xf0\x84\x69\xd8\xd9\xb9\xce\x84\x6a\xb5\xbd\x84\x6b\x84\x6c\xd8\xda\x84\x6d\x84\x6e\xd6\xc6\xcb\xa2\xc8\xaf\xc9\xb2\xb4\xcc\xbf\xcc\x84\x6f\xb9\xf4\x84\x70\xd8\xdb\xd8\xdc\xb6\xe7\xbc\xc1\xcc\xea\x84\x71\x84\x72\x84\x73\x84\x74\x84\x75\x84\x76\xcf\xf7\x84\x77\xd8\xdd\xc7\xb0\x84\x78\x84\x79\xb9\xd0\xbd\xa3\x84\x7a\x84\x7b\xcc\xde\x84\x7c\xc6\xca\x84\x7d\x84\x7e\x84\x80\x84\x81\x84\x82\xd8\xe0\x84\x83\xd8\xde\x84\x84\x84\x85\xd8\xdf\x84\x86\x84\x87\x84\x88\xb0\xfe\x84\x89\xbe\xe7\x84\x8a\xca\xa3\xbc\xf4\x84\x8b\x84\x8c\x84\x8d\x84\x8e\xb8\xb1\x84\x8f\x84\x90\xb8\xee\x84\x91\x84\x92\x84\x93\x84\x94\x84\x95\x84\x96\x84\x97\x84\x98\x84\x99\x84\x9a\xd8\xe2\x84\x9b\xbd\xcb", /* 5280 */ "\x84\x9c\xd8\xe4\xd8\xe3\x84\x9d\x84\x9e\x84\x9f\x84\xa0\x84\xa1\xc5\xfc\x84\xa2\x84\xa3\x84\xa4\x84\xa5\x84\xa6\x84\xa7\x84\xa8\xd8\xe5\x84\xa9\x84\xaa\xd8\xe6\x84\xab\x84\xac\x84\xad\x84\xae\x84\xaf\x84\xb0\x84\xb1\xc1\xa6\x84\xb2\xc8\xb0\xb0\xec\xb9\xa6\xbc\xd3\xce\xf1\xdb\xbd\xc1\xd3\x84\xb3\x84\xb4\x84\xb5\x84\xb6\xb6\xaf\xd6\xfa\xc5\xac\xbd\xd9\xdb\xbe\xdb\xbf\x84\xb7\x84\xb8\x84\xb9\xc0\xf8\xbe\xa2\xc0\xcd\x84\xba\x84\xbb\x84\xbc\x84\xbd\x84\xbe\x84\xbf\x84\xc0\x84\xc1\x84\xc2\x84\xc3\xdb\xc0\xca\xc6\x84\xc4\x84\xc5\x84\xc6\xb2\xaa\x84\xc7\x84\xc8\x84\xc9\xd3\xc2\x84\xca\xc3\xe3\x84\xcb\xd1\xab\x84\xcc\x84\xcd\x84\xce\x84\xcf\xdb\xc2\x84\xd0\xc0\xd5\x84\xd1\x84\xd2\x84\xd3\xdb\xc3\x84\xd4\xbf\xb1\x84\xd5\x84\xd6\x84\xd7\x84\xd8\x84\xd9\x84\xda\xc4\xbc\x84\xdb\x84\xdc\x84\xdd\x84\xde\xc7\xda\x84\xdf\x84\xe0\x84\xe1\x84\xe2\x84\xe3\x84\xe4\x84\xe5\x84\xe6\x84\xe7\x84\xe8\x84\xe9\xdb\xc4\x84\xea\x84\xeb\x84\xec\x84\xed\x84\xee\x84\xef\x84\xf0\x84\xf1\xd9\xe8\xc9\xd7\x84\xf2\x84\xf3\x84\xf4\xb9\xb4\xce\xf0", /* 5300 */ "\xd4\xc8\x84\xf5\x84\xf6\x84\xf7\x84\xf8\xb0\xfc\xb4\xd2\x84\xf9\xd0\xd9\x84\xfa\x84\xfb\x84\xfc\x84\xfd\xd9\xe9\x84\xfe\xde\xcb\xd9\xeb\x85\x40\x85\x41\x85\x42\x85\x43\xd8\xb0\xbb\xaf\xb1\xb1\x85\x44\xb3\xd7\xd8\xce\x85\x45\x85\x46\xd4\xd1\x85\x47\x85\x48\xbd\xb3\xbf\xef\x85\x49\xcf\xbb\x85\x4a\x85\x4b\xd8\xd0\x85\x4c\x85\x4d\x85\x4e\xb7\xcb\x85\x4f\x85\x50\x85\x51\xd8\xd1\x85\x52\x85\x53\x85\x54\x85\x55\x85\x56\x85\x57\x85\x58\x85\x59\x85\x5a\x85\x5b\xc6\xa5\xc7\xf8\xd2\xbd\x85\x5c\x85\x5d\xd8\xd2\xc4\xe4\x85\x5e\xca\xae\x85\x5f\xc7\xa7\x85\x60\xd8\xa6\x85\x61\xc9\xfd\xce\xe7\xbb\xdc\xb0\xeb\x85\x62\x85\x63\x85\x64\xbb\xaa\xd0\xad\x85\x65\xb1\xb0\xd7\xe4\xd7\xbf\x85\x66\xb5\xa5\xc2\xf4\xc4\xcf\x85\x67\x85\x68\xb2\xa9\x85\x69\xb2\xb7\x85\x6a\xb1\xe5\xdf\xb2\xd5\xbc\xbf\xa8\xc2\xac\xd8\xd5\xc2\xb1\x85\x6b\xd8\xd4\xce\xd4\x85\x6c\xda\xe0\x85\x6d\xce\xc0\x85\x6e\x85\x6f\xd8\xb4\xc3\xae\xd3\xa1\xce\xa3\x85\x70\xbc\xb4\xc8\xb4\xc2\xd1\x85\x71\xbe\xed\xd0\xb6\x85\x72\xda\xe1\x85\x73\x85\x74\x85\x75\x85\x76\xc7\xe4", /* 5380 */ "\x85\x77\x85\x78\xb3\xa7\x85\x79\xb6\xf2\xcc\xfc\xc0\xfa\x85\x7a\x85\x7b\xc0\xf7\x85\x7c\xd1\xb9\xd1\xe1\xd8\xc7\x85\x7d\x85\x7e\x85\x80\x85\x81\x85\x82\x85\x83\x85\x84\xb2\xde\x85\x85\x85\x86\xc0\xe5\x85\x87\xba\xf1\x85\x88\x85\x89\xd8\xc8\x85\x8a\xd4\xad\x85\x8b\x85\x8c\xcf\xe1\xd8\xc9\x85\x8d\xd8\xca\xcf\xc3\x85\x8e\xb3\xf8\xbe\xc7\x85\x8f\x85\x90\x85\x91\x85\x92\xd8\xcb\x85\x93\x85\x94\x85\x95\x85\x96\x85\x97\x85\x98\x85\x99\xdb\xcc\x85\x9a\x85\x9b\x85\x9c\x85\x9d\xc8\xa5\x85\x9e\x85\x9f\x85\xa0\xcf\xd8\x85\xa1\xc8\xfe\xb2\xce\x85\xa2\x85\xa3\x85\xa4\x85\xa5\x85\xa6\xd3\xd6\xb2\xe6\xbc\xb0\xd3\xd1\xcb\xab\xb7\xb4\x85\xa7\x85\xa8\x85\xa9\xb7\xa2\x85\xaa\x85\xab\xca\xe5\x85\xac\xc8\xa1\xca\xdc\xb1\xe4\xd0\xf0\x85\xad\xc5\xd1\x85\xae\x85\xaf\x85\xb0\xdb\xc5\xb5\xfe\x85\xb1\x85\xb2\xbf\xda\xb9\xc5\xbe\xe4\xc1\xed\x85\xb3\xdf\xb6\xdf\xb5\xd6\xbb\xbd\xd0\xd5\xd9\xb0\xc8\xb6\xa3\xbf\xc9\xcc\xa8\xdf\xb3\xca\xb7\xd3\xd2\x85\xb4\xd8\xcf\xd2\xb6\xba\xc5\xcb\xbe\xcc\xbe\x85\xb5\xdf\xb7\xb5\xf0\xdf\xb4\x85\xb6\x85\xb7", /* 5400 */ "\x85\xb8\xd3\xf5\x85\xb9\xb3\xd4\xb8\xf7\x85\xba\xdf\xba\x85\xbb\xba\xcf\xbc\xaa\xb5\xf5\x85\xbc\xcd\xac\xc3\xfb\xba\xf3\xc0\xf4\xcd\xc2\xcf\xf2\xdf\xb8\xcf\xc5\x85\xbd\xc2\xc0\xdf\xb9\xc2\xf0\x85\xbe\x85\xbf\x85\xc0\xbe\xfd\x85\xc1\xc1\xdf\xcd\xcc\xd2\xf7\xb7\xcd\xdf\xc1\x85\xc2\xdf\xc4\x85\xc3\x85\xc4\xb7\xf1\xb0\xc9\xb6\xd6\xb7\xd4\x85\xc5\xba\xac\xcc\xfd\xbf\xd4\xcb\xb1\xc6\xf4\x85\xc6\xd6\xa8\xdf\xc5\x85\xc7\xce\xe2\xb3\xb3\x85\xc8\x85\xc9\xce\xfc\xb4\xb5\x85\xca\xce\xc7\xba\xf0\x85\xcb\xce\xe1\x85\xcc\xd1\xbd\x85\xcd\x85\xce\xdf\xc0\x85\xcf\x85\xd0\xb4\xf4\x85\xd1\xb3\xca\x85\xd2\xb8\xe6\xdf\xbb\x85\xd3\x85\xd4\x85\xd5\x85\xd6\xc4\xc5\x85\xd7\xdf\xbc\xdf\xbd\xdf\xbe\xc5\xbb\xdf\xbf\xdf\xc2\xd4\xb1\xdf\xc3\x85\xd8\xc7\xba\xce\xd8\x85\xd9\x85\xda\x85\xdb\x85\xdc\x85\xdd\xc4\xd8\x85\xde\xdf\xca\x85\xdf\xdf\xcf\x85\xe0\xd6\xdc\x85\xe1\x85\xe2\x85\xe3\x85\xe4\x85\xe5\x85\xe6\x85\xe7\x85\xe8\xdf\xc9\xdf\xda\xce\xb6\x85\xe9\xba\xc7\xdf\xce\xdf\xc8\xc5\xde\x85\xea\x85\xeb\xc9\xeb\xba\xf4\xc3\xfc\x85\xec\x85\xed", /* 5480 */ "\xbe\xd7\x85\xee\xdf\xc6\x85\xef\xdf\xcd\x85\xf0\xc5\xd8\x85\xf1\x85\xf2\x85\xf3\x85\xf4\xd5\xa6\xba\xcd\x85\xf5\xbe\xcc\xd3\xbd\xb8\xc0\x85\xf6\xd6\xe4\x85\xf7\xdf\xc7\xb9\xbe\xbf\xa7\x85\xf8\x85\xf9\xc1\xfc\xdf\xcb\xdf\xcc\x85\xfa\xdf\xd0\x85\xfb\x85\xfc\x85\xfd\x85\xfe\x86\x40\xdf\xdb\xdf\xe5\x86\x41\xdf\xd7\xdf\xd6\xd7\xc9\xdf\xe3\xdf\xe4\xe5\xeb\xd2\xa7\xdf\xd2\x86\x42\xbf\xa9\x86\x43\xd4\xdb\x86\x44\xbf\xc8\xdf\xd4\x86\x45\x86\x46\x86\x47\xcf\xcc\x86\x48\x86\x49\xdf\xdd\x86\x4a\xd1\xca\x86\x4b\xdf\xde\xb0\xa7\xc6\xb7\xdf\xd3\x86\x4c\xba\xe5\x86\x4d\xb6\xdf\xcd\xdb\xb9\xfe\xd4\xd5\x86\x4e\x86\x4f\xdf\xdf\xcf\xec\xb0\xa5\xdf\xe7\xdf\xd1\xd1\xc6\xdf\xd5\xdf\xd8\xdf\xd9\xdf\xdc\x86\x50\xbb\xa9\x86\x51\xdf\xe0\xdf\xe1\x86\x52\xdf\xe2\xdf\xe6\xdf\xe8\xd3\xb4\x86\x53\x86\x54\x86\x55\x86\x56\x86\x57\xb8\xe7\xc5\xb6\xdf\xea\xc9\xda\xc1\xa8\xc4\xc4\x86\x58\x86\x59\xbf\xde\xcf\xf8\x86\x5a\x86\x5b\x86\x5c\xd5\xdc\xdf\xee\x86\x5d\x86\x5e\x86\x5f\x86\x60\x86\x61\x86\x62\xb2\xb8\x86\x63\xba\xdf\xdf\xec\x86\x64\xdb\xc1", /* 5500 */ "\x86\x65\xd1\xe4\x86\x66\x86\x67\x86\x68\x86\x69\xcb\xf4\xb4\xbd\x86\x6a\xb0\xa6\x86\x6b\x86\x6c\x86\x6d\x86\x6e\x86\x6f\xdf\xf1\xcc\xc6\xdf\xf2\x86\x70\x86\x71\xdf\xed\x86\x72\x86\x73\x86\x74\x86\x75\x86\x76\x86\x77\xdf\xe9\x86\x78\x86\x79\x86\x7a\x86\x7b\xdf\xeb\x86\x7c\xdf\xef\xdf\xf0\xbb\xbd\x86\x7d\x86\x7e\xdf\xf3\x86\x80\x86\x81\xdf\xf4\x86\x82\xbb\xa3\x86\x83\xca\xdb\xce\xa8\xe0\xa7\xb3\xaa\x86\x84\xe0\xa6\x86\x85\x86\x86\x86\x87\xe0\xa1\x86\x88\x86\x89\x86\x8a\x86\x8b\xdf\xfe\x86\x8c\xcd\xd9\xdf\xfc\x86\x8d\xdf\xfa\x86\x8e\xbf\xd0\xd7\xc4\x86\x8f\xc9\xcc\x86\x90\x86\x91\xdf\xf8\xb0\xa1\x86\x92\x86\x93\x86\x94\x86\x95\x86\x96\xdf\xfd\x86\x97\x86\x98\x86\x99\x86\x9a\xdf\xfb\xe0\xa2\x86\x9b\x86\x9c\x86\x9d\x86\x9e\x86\x9f\xe0\xa8\x86\xa0\x86\xa1\x86\xa2\x86\xa3\xb7\xc8\x86\xa4\x86\xa5\xc6\xa1\xc9\xb6\xc0\xb2\xdf\xf5\x86\xa6\x86\xa7\xc5\xbe\x86\xa8\xd8\xc4\xdf\xf9\xc4\xf6\x86\xa9\x86\xaa\x86\xab\x86\xac\x86\xad\x86\xae\xe0\xa3\xe0\xa4\xe0\xa5\xd0\xa5\x86\xaf\x86\xb0\xe0\xb4\xcc\xe4\x86\xb1\xe0\xb1\x86\xb2", /* 5580 */ "\xbf\xa6\xe0\xaf\xce\xb9\xe0\xab\xc9\xc6\x86\xb3\x86\xb4\xc0\xae\xe0\xae\xba\xed\xba\xb0\xe0\xa9\x86\xb5\x86\xb6\x86\xb7\xdf\xf6\x86\xb8\xe0\xb3\x86\xb9\x86\xba\xe0\xb8\x86\xbb\x86\xbc\x86\xbd\xb4\xad\xe0\xb9\x86\xbe\x86\xbf\xcf\xb2\xba\xc8\x86\xc0\xe0\xb0\x86\xc1\x86\xc2\x86\xc3\x86\xc4\x86\xc5\x86\xc6\x86\xc7\xd0\xfa\x86\xc8\x86\xc9\x86\xca\x86\xcb\x86\xcc\x86\xcd\x86\xce\x86\xcf\x86\xd0\xe0\xac\x86\xd1\xd4\xfb\x86\xd2\xdf\xf7\x86\xd3\xc5\xe7\x86\xd4\xe0\xad\x86\xd5\xd3\xf7\x86\xd6\xe0\xb6\xe0\xb7\x86\xd7\x86\xd8\x86\xd9\x86\xda\x86\xdb\xe0\xc4\xd0\xe1\x86\xdc\x86\xdd\x86\xde\xe0\xbc\x86\xdf\x86\xe0\xe0\xc9\xe0\xca\x86\xe1\x86\xe2\x86\xe3\xe0\xbe\xe0\xaa\xc9\xa4\xe0\xc1\x86\xe4\xe0\xb2\x86\xe5\x86\xe6\x86\xe7\x86\xe8\x86\xe9\xca\xc8\xe0\xc3\x86\xea\xe0\xb5\x86\xeb\xce\xcb\x86\xec\xcb\xc3\xe0\xcd\xe0\xc6\xe0\xc2\x86\xed\xe0\xcb\x86\xee\xe0\xba\xe0\xbf\xe0\xc0\x86\xef\x86\xf0\xe0\xc5\x86\xf1\x86\xf2\xe0\xc7\xe0\xc8\x86\xf3\xe0\xcc\x86\xf4\xe0\xbb\x86\xf5\x86\xf6\x86\xf7\x86\xf8\x86\xf9\xcb\xd4\xe0\xd5\x86\xfa", /* 5600 */ "\xe0\xd6\xe0\xd2\x86\xfb\x86\xfc\x86\xfd\x86\xfe\x87\x40\x87\x41\xe0\xd0\xbc\xce\x87\x42\x87\x43\xe0\xd1\x87\x44\xb8\xc2\xd8\xc5\x87\x45\x87\x46\x87\x47\x87\x48\x87\x49\x87\x4a\x87\x4b\x87\x4c\xd0\xea\x87\x4d\x87\x4e\xc2\xef\x87\x4f\x87\x50\xe0\xcf\xe0\xbd\x87\x51\x87\x52\x87\x53\xe0\xd4\xe0\xd3\x87\x54\x87\x55\xe0\xd7\x87\x56\x87\x57\x87\x58\x87\x59\xe0\xdc\xe0\xd8\x87\x5a\x87\x5b\x87\x5c\xd6\xf6\xb3\xb0\x87\x5d\xd7\xec\x87\x5e\xcb\xbb\x87\x5f\x87\x60\xe0\xda\x87\x61\xce\xfb\x87\x62\x87\x63\x87\x64\xba\xd9\x87\x65\x87\x66\x87\x67\x87\x68\x87\x69\x87\x6a\x87\x6b\x87\x6c\x87\x6d\x87\x6e\x87\x6f\x87\x70\xe0\xe1\xe0\xdd\xd2\xad\x87\x71\x87\x72\x87\x73\x87\x74\x87\x75\xe0\xe2\x87\x76\x87\x77\xe0\xdb\xe0\xd9\xe0\xdf\x87\x78\x87\x79\xe0\xe0\x87\x7a\x87\x7b\x87\x7c\x87\x7d\x87\x7e\xe0\xde\x87\x80\xe0\xe4\x87\x81\x87\x82\x87\x83\xc6\xf7\xd8\xac\xd4\xeb\xe0\xe6\xca\xc9\x87\x84\x87\x85\x87\x86\x87\x87\xe0\xe5\x87\x88\x87\x89\x87\x8a\x87\x8b\xb8\xc1\x87\x8c\x87\x8d\x87\x8e\x87\x8f\xe0\xe7\xe0\xe8\x87\x90\x87\x91\x87\x92", /* 5680 */ "\x87\x93\x87\x94\x87\x95\x87\x96\x87\x97\xe0\xe9\xe0\xe3\x87\x98\x87\x99\x87\x9a\x87\x9b\x87\x9c\x87\x9d\x87\x9e\xba\xbf\xcc\xe7\x87\x9f\x87\xa0\x87\xa1\xe0\xea\x87\xa2\x87\xa3\x87\xa4\x87\xa5\x87\xa6\x87\xa7\x87\xa8\x87\xa9\x87\xaa\x87\xab\x87\xac\x87\xad\x87\xae\x87\xaf\x87\xb0\xcf\xf9\x87\xb1\x87\xb2\x87\xb3\x87\xb4\x87\xb5\x87\xb6\x87\xb7\x87\xb8\x87\xb9\x87\xba\x87\xbb\xe0\xeb\x87\xbc\x87\xbd\x87\xbe\x87\xbf\x87\xc0\x87\xc1\x87\xc2\xc8\xc2\x87\xc3\x87\xc4\x87\xc5\x87\xc6\xbd\xc0\x87\xc7\x87\xc8\x87\xc9\x87\xca\x87\xcb\x87\xcc\x87\xcd\x87\xce\x87\xcf\x87\xd0\x87\xd1\x87\xd2\x87\xd3\xc4\xd2\x87\xd4\x87\xd5\x87\xd6\x87\xd7\x87\xd8\x87\xd9\x87\xda\x87\xdb\x87\xdc\xe0\xec\x87\xdd\x87\xde\xe0\xed\x87\xdf\x87\xe0\xc7\xf4\xcb\xc4\x87\xe1\xe0\xee\xbb\xd8\xd8\xb6\xd2\xf2\xe0\xef\xcd\xc5\x87\xe2\xb6\xda\x87\xe3\x87\xe4\x87\xe5\x87\xe6\x87\xe7\x87\xe8\xe0\xf1\x87\xe9\xd4\xb0\x87\xea\x87\xeb\xc0\xa7\xb4\xd1\x87\xec\x87\xed\xce\xa7\xe0\xf0\x87\xee\x87\xef\x87\xf0\xe0\xf2\xb9\xcc\x87\xf1\x87\xf2\xb9\xfa\xcd\xbc\xe0\xf3", /* 5700 */ "\x87\xf3\x87\xf4\x87\xf5\xc6\xd4\xe0\xf4\x87\xf6\xd4\xb2\x87\xf7\xc8\xa6\xe0\xf6\xe0\xf5\x87\xf8\x87\xf9\x87\xfa\x87\xfb\x87\xfc\x87\xfd\x87\xfe\x88\x40\x88\x41\x88\x42\x88\x43\x88\x44\x88\x45\x88\x46\x88\x47\x88\x48\x88\x49\xe0\xf7\x88\x4a\x88\x4b\xcd\xc1\x88\x4c\x88\x4d\x88\x4e\xca\xa5\x88\x4f\x88\x50\x88\x51\x88\x52\xd4\xda\xdb\xd7\xdb\xd9\x88\x53\xdb\xd8\xb9\xe7\xdb\xdc\xdb\xdd\xb5\xd8\x88\x54\x88\x55\xdb\xda\x88\x56\x88\x57\x88\x58\x88\x59\x88\x5a\xdb\xdb\xb3\xa1\xdb\xdf\x88\x5b\x88\x5c\xbb\xf8\x88\x5d\xd6\xb7\x88\x5e\xdb\xe0\x88\x5f\x88\x60\x88\x61\x88\x62\xbe\xf9\x88\x63\x88\x64\xb7\xbb\x88\x65\xdb\xd0\xcc\xae\xbf\xb2\xbb\xb5\xd7\xf8\xbf\xd3\x88\x66\x88\x67\x88\x68\x88\x69\x88\x6a\xbf\xe9\x88\x6b\x88\x6c\xbc\xe1\xcc\xb3\xdb\xde\xb0\xd3\xce\xeb\xb7\xd8\xd7\xb9\xc6\xc2\x88\x6d\x88\x6e\xc0\xa4\x88\x6f\xcc\xb9\x88\x70\xdb\xe7\xdb\xe1\xc6\xba\xdb\xe3\x88\x71\xdb\xe8\x88\x72\xc5\xf7\x88\x73\x88\x74\x88\x75\xdb\xea\x88\x76\x88\x77\xdb\xe9\xbf\xc0\x88\x78\x88\x79\x88\x7a\xdb\xe6\xdb\xe5\x88\x7b\x88\x7c\x88\x7d", /* 5780 */ "\x88\x7e\x88\x80\xb4\xb9\xc0\xac\xc2\xa2\xdb\xe2\xdb\xe4\x88\x81\x88\x82\x88\x83\x88\x84\xd0\xcd\xdb\xed\x88\x85\x88\x86\x88\x87\x88\x88\x88\x89\xc0\xdd\xdb\xf2\x88\x8a\x88\x8b\x88\x8c\x88\x8d\x88\x8e\x88\x8f\x88\x90\xb6\xe2\x88\x91\x88\x92\x88\x93\x88\x94\xdb\xf3\xdb\xd2\xb9\xb8\xd4\xab\xdb\xec\x88\x95\xbf\xd1\xdb\xf0\x88\x96\xdb\xd1\x88\x97\xb5\xe6\x88\x98\xdb\xeb\xbf\xe5\x88\x99\x88\x9a\x88\x9b\xdb\xee\x88\x9c\xdb\xf1\x88\x9d\x88\x9e\x88\x9f\xdb\xf9\x88\xa0\x88\xa1\x88\xa2\x88\xa3\x88\xa4\x88\xa5\x88\xa6\x88\xa7\x88\xa8\xb9\xa1\xb0\xa3\x88\xa9\x88\xaa\x88\xab\x88\xac\x88\xad\x88\xae\x88\xaf\xc2\xf1\x88\xb0\x88\xb1\xb3\xc7\xdb\xef\x88\xb2\x88\xb3\xdb\xf8\x88\xb4\xc6\xd2\xdb\xf4\x88\xb5\x88\xb6\xdb\xf5\xdb\xf7\xdb\xf6\x88\xb7\x88\xb8\xdb\xfe\x88\xb9\xd3\xf2\xb2\xba\x88\xba\x88\xbb\x88\xbc\xdb\xfd\x88\xbd\x88\xbe\x88\xbf\x88\xc0\x88\xc1\x88\xc2\x88\xc3\x88\xc4\xdc\xa4\x88\xc5\xdb\xfb\x88\xc6\x88\xc7\x88\xc8\x88\xc9\xdb\xfa\x88\xca\x88\xcb\x88\xcc\xdb\xfc\xc5\xe0\xbb\xf9\x88\xcd\x88\xce\xdc\xa3\x88\xcf\x88\xd0", /* 5800 */ "\xdc\xa5\x88\xd1\xcc\xc3\x88\xd2\x88\xd3\x88\xd4\xb6\xd1\xdd\xc0\x88\xd5\x88\xd6\x88\xd7\xdc\xa1\x88\xd8\xdc\xa2\x88\xd9\x88\xda\x88\xdb\xc7\xb5\x88\xdc\x88\xdd\x88\xde\xb6\xe9\x88\xdf\x88\xe0\x88\xe1\xdc\xa7\x88\xe2\x88\xe3\x88\xe4\x88\xe5\xdc\xa6\x88\xe6\xdc\xa9\xb1\xa4\x88\xe7\x88\xe8\xb5\xcc\x88\xe9\x88\xea\x88\xeb\x88\xec\x88\xed\xbf\xb0\x88\xee\x88\xef\x88\xf0\x88\xf1\x88\xf2\xd1\xdf\x88\xf3\x88\xf4\x88\xf5\x88\xf6\xb6\xc2\x88\xf7\x88\xf8\x88\xf9\x88\xfa\x88\xfb\x88\xfc\x88\xfd\x88\xfe\x89\x40\x89\x41\x89\x42\x89\x43\x89\x44\x89\x45\xdc\xa8\x89\x46\x89\x47\x89\x48\x89\x49\x89\x4a\x89\x4b\x89\x4c\xcb\xfa\xeb\xf3\x89\x4d\x89\x4e\x89\x4f\xcb\xdc\x89\x50\x89\x51\xcb\xfe\x89\x52\x89\x53\x89\x54\xcc\xc1\x89\x55\x89\x56\x89\x57\x89\x58\x89\x59\xc8\xfb\x89\x5a\x89\x5b\x89\x5c\x89\x5d\x89\x5e\x89\x5f\xdc\xaa\x89\x60\x89\x61\x89\x62\x89\x63\x89\x64\xcc\xee\xdc\xab\x89\x65\x89\x66\x89\x67\x89\x68\x89\x69\x89\x6a\x89\x6b\x89\x6c\x89\x6d\x89\x6e\x89\x6f\x89\x70\x89\x71\x89\x72\x89\x73\x89\x74\x89\x75\xdb\xd3\x89\x76", /* 5880 */ "\xdc\xaf\xdc\xac\x89\x77\xbe\xb3\x89\x78\xca\xfb\x89\x79\x89\x7a\x89\x7b\xdc\xad\x89\x7c\x89\x7d\x89\x7e\x89\x80\x89\x81\x89\x82\x89\x83\x89\x84\xc9\xca\xc4\xb9\x89\x85\x89\x86\x89\x87\x89\x88\x89\x89\xc7\xbd\xdc\xae\x89\x8a\x89\x8b\x89\x8c\xd4\xf6\xd0\xe6\x89\x8d\x89\x8e\x89\x8f\x89\x90\x89\x91\x89\x92\x89\x93\x89\x94\xc4\xab\xb6\xd5\x89\x95\x89\x96\x89\x97\x89\x98\x89\x99\x89\x9a\x89\x9b\x89\x9c\x89\x9d\x89\x9e\x89\x9f\x89\xa0\x89\xa1\x89\xa2\x89\xa3\x89\xa4\x89\xa5\x89\xa6\xdb\xd4\x89\xa7\x89\xa8\x89\xa9\x89\xaa\xb1\xda\x89\xab\x89\xac\x89\xad\xdb\xd5\x89\xae\x89\xaf\x89\xb0\x89\xb1\x89\xb2\x89\xb3\x89\xb4\x89\xb5\x89\xb6\x89\xb7\x89\xb8\xdb\xd6\x89\xb9\x89\xba\x89\xbb\xba\xbe\x89\xbc\x89\xbd\x89\xbe\x89\xbf\x89\xc0\x89\xc1\x89\xc2\x89\xc3\x89\xc4\x89\xc5\x89\xc6\x89\xc7\x89\xc8\x89\xc9\xc8\xc0\x89\xca\x89\xcb\x89\xcc\x89\xcd\x89\xce\x89\xcf\xca\xbf\xc8\xc9\x89\xd0\xd7\xb3\x89\xd1\xc9\xf9\x89\xd2\x89\xd3\xbf\xc7\x89\xd4\x89\xd5\xba\xf8\x89\xd6\x89\xd7\xd2\xbc\x89\xd8\x89\xd9\x89\xda\x89\xdb\x89\xdc\x89\xdd", /* 5900 */ "\x89\xde\x89\xdf\xe2\xba\x89\xe0\xb4\xa6\x89\xe1\x89\xe2\xb1\xb8\x89\xe3\x89\xe4\x89\xe5\x89\xe6\x89\xe7\xb8\xb4\x89\xe8\xcf\xc4\x89\xe9\x89\xea\x89\xeb\x89\xec\xd9\xe7\xcf\xa6\xcd\xe2\x89\xed\x89\xee\xd9\xed\xb6\xe0\x89\xef\xd2\xb9\x89\xf0\x89\xf1\xb9\xbb\x89\xf2\x89\xf3\x89\xf4\x89\xf5\xe2\xb9\xe2\xb7\x89\xf6\xb4\xf3\x89\xf7\xcc\xec\xcc\xab\xb7\xf2\x89\xf8\xd8\xb2\xd1\xeb\xba\xbb\x89\xf9\xca\xa7\x89\xfa\x89\xfb\xcd\xb7\x89\xfc\x89\xfd\xd2\xc4\xbf\xe4\xbc\xd0\xb6\xe1\x89\xfe\xde\xc5\x8a\x40\x8a\x41\x8a\x42\x8a\x43\xde\xc6\xdb\xbc\x8a\x44\xd1\xd9\x8a\x45\x8a\x46\xc6\xe6\xc4\xce\xb7\xee\x8a\x47\xb7\xdc\x8a\x48\x8a\x49\xbf\xfc\xd7\xe0\x8a\x4a\xc6\xf5\x8a\x4b\x8a\x4c\xb1\xbc\xde\xc8\xbd\xb1\xcc\xd7\xde\xca\x8a\x4d\xde\xc9\x8a\x4e\x8a\x4f\x8a\x50\x8a\x51\x8a\x52\xb5\xec\x8a\x53\xc9\xdd\x8a\x54\x8a\x55\xb0\xc2\x8a\x56\x8a\x57\x8a\x58\x8a\x59\x8a\x5a\x8a\x5b\x8a\x5c\x8a\x5d\x8a\x5e\x8a\x5f\x8a\x60\x8a\x61\x8a\x62\xc5\xae\xc5\xab\x8a\x63\xc4\xcc\x8a\x64\xbc\xe9\xcb\xfd\x8a\x65\x8a\x66\x8a\x67\xba\xc3\x8a\x68\x8a\x69", /* 5980 */ "\x8a\x6a\xe5\xf9\xc8\xe7\xe5\xfa\xcd\xfd\x8a\x6b\xd7\xb1\xb8\xbe\xc2\xe8\x8a\x6c\xc8\xd1\x8a\x6d\x8a\x6e\xe5\xfb\x8a\x6f\x8a\x70\x8a\x71\x8a\x72\xb6\xca\xbc\xcb\x8a\x73\x8a\x74\xd1\xfd\xe6\xa1\x8a\x75\xc3\xee\x8a\x76\x8a\x77\x8a\x78\x8a\x79\xe6\xa4\x8a\x7a\x8a\x7b\x8a\x7c\x8a\x7d\xe5\xfe\xe6\xa5\xcd\xd7\x8a\x7e\x8a\x80\xb7\xc1\xe5\xfc\xe5\xfd\xe6\xa3\x8a\x81\x8a\x82\xc4\xdd\xe6\xa8\x8a\x83\x8a\x84\xe6\xa7\x8a\x85\x8a\x86\x8a\x87\x8a\x88\x8a\x89\x8a\x8a\xc3\xc3\x8a\x8b\xc6\xde\x8a\x8c\x8a\x8d\xe6\xaa\x8a\x8e\x8a\x8f\x8a\x90\x8a\x91\x8a\x92\x8a\x93\x8a\x94\xc4\xb7\x8a\x95\x8a\x96\x8a\x97\xe6\xa2\xca\xbc\x8a\x98\x8a\x99\x8a\x9a\x8a\x9b\xbd\xe3\xb9\xc3\xe6\xa6\xd0\xd5\xce\xaf\x8a\x9c\x8a\x9d\xe6\xa9\xe6\xb0\x8a\x9e\xd2\xa6\x8a\x9f\xbd\xaa\xe6\xad\x8a\xa0\x8a\xa1\x8a\xa2\x8a\xa3\x8a\xa4\xe6\xaf\x8a\xa5\xc0\xd1\x8a\xa6\x8a\xa7\xd2\xcc\x8a\xa8\x8a\xa9\x8a\xaa\xbc\xa7\x8a\xab\x8a\xac\x8a\xad\x8a\xae\x8a\xaf\x8a\xb0\x8a\xb1\x8a\xb2\x8a\xb3\x8a\xb4\x8a\xb5\x8a\xb6\xe6\xb1\x8a\xb7\xd2\xf6\x8a\xb8\x8a\xb9\x8a\xba\xd7\xcb", /* 5a00 */ "\x8a\xbb\xcd\xfe\x8a\xbc\xcd\xde\xc2\xa6\xe6\xab\xe6\xac\xbd\xbf\xe6\xae\xe6\xb3\x8a\xbd\x8a\xbe\xe6\xb2\x8a\xbf\x8a\xc0\x8a\xc1\x8a\xc2\xe6\xb6\x8a\xc3\xe6\xb8\x8a\xc4\x8a\xc5\x8a\xc6\x8a\xc7\xc4\xef\x8a\xc8\x8a\xc9\x8a\xca\xc4\xc8\x8a\xcb\x8a\xcc\xbe\xea\xc9\xef\x8a\xcd\x8a\xce\xe6\xb7\x8a\xcf\xb6\xf0\x8a\xd0\x8a\xd1\x8a\xd2\xc3\xe4\x8a\xd3\x8a\xd4\x8a\xd5\x8a\xd6\x8a\xd7\x8a\xd8\x8a\xd9\xd3\xe9\xe6\xb4\x8a\xda\xe6\xb5\x8a\xdb\xc8\xa2\x8a\xdc\x8a\xdd\x8a\xde\x8a\xdf\x8a\xe0\xe6\xbd\x8a\xe1\x8a\xe2\x8a\xe3\xe6\xb9\x8a\xe4\x8a\xe5\x8a\xe6\x8a\xe7\x8a\xe8\xc6\xc5\x8a\xe9\x8a\xea\xcd\xf1\xe6\xbb\x8a\xeb\x8a\xec\x8a\xed\x8a\xee\x8a\xef\x8a\xf0\x8a\xf1\x8a\xf2\x8a\xf3\x8a\xf4\xe6\xbc\x8a\xf5\x8a\xf6\x8a\xf7\x8a\xf8\xbb\xe9\x8a\xf9\x8a\xfa\x8a\xfb\x8a\xfc\x8a\xfd\x8a\xfe\x8b\x40\xe6\xbe\x8b\x41\x8b\x42\x8b\x43\x8b\x44\xe6\xba\x8b\x45\x8b\x46\xc0\xb7\x8b\x47\x8b\x48\x8b\x49\x8b\x4a\x8b\x4b\x8b\x4c\x8b\x4d\x8b\x4e\x8b\x4f\xd3\xa4\xe6\xbf\xc9\xf4\xe6\xc3\x8b\x50\x8b\x51\xe6\xc4\x8b\x52\x8b\x53\x8b\x54\x8b\x55\xd0\xf6", /* 5a80 */ "\x8b\x56\x8b\x57\x8b\x58\x8b\x59\x8b\x5a\x8b\x5b\x8b\x5c\x8b\x5d\x8b\x5e\x8b\x5f\x8b\x60\x8b\x61\x8b\x62\x8b\x63\x8b\x64\x8b\x65\x8b\x66\x8b\x67\xc3\xbd\x8b\x68\x8b\x69\x8b\x6a\x8b\x6b\x8b\x6c\x8b\x6d\x8b\x6e\xc3\xc4\xe6\xc2\x8b\x6f\x8b\x70\x8b\x71\x8b\x72\x8b\x73\x8b\x74\x8b\x75\x8b\x76\x8b\x77\x8b\x78\x8b\x79\x8b\x7a\x8b\x7b\x8b\x7c\xe6\xc1\x8b\x7d\x8b\x7e\x8b\x80\x8b\x81\x8b\x82\x8b\x83\x8b\x84\xe6\xc7\xcf\xb1\x8b\x85\xeb\xf4\x8b\x86\x8b\x87\xe6\xca\x8b\x88\x8b\x89\x8b\x8a\x8b\x8b\x8b\x8c\xe6\xc5\x8b\x8d\x8b\x8e\xbc\xde\xc9\xa9\x8b\x8f\x8b\x90\x8b\x91\x8b\x92\x8b\x93\x8b\x94\xbc\xb5\x8b\x95\x8b\x96\xcf\xd3\x8b\x97\x8b\x98\x8b\x99\x8b\x9a\x8b\x9b\xe6\xc8\x8b\x9c\xe6\xc9\x8b\x9d\xe6\xce\x8b\x9e\xe6\xd0\x8b\x9f\x8b\xa0\x8b\xa1\xe6\xd1\x8b\xa2\x8b\xa3\x8b\xa4\xe6\xcb\xb5\xd5\x8b\xa5\xe6\xcc\x8b\xa6\x8b\xa7\xe6\xcf\x8b\xa8\x8b\xa9\xc4\xdb\x8b\xaa\xe6\xc6\x8b\xab\x8b\xac\x8b\xad\x8b\xae\x8b\xaf\xe6\xcd\x8b\xb0\x8b\xb1\x8b\xb2\x8b\xb3\x8b\xb4\x8b\xb5\x8b\xb6\x8b\xb7\x8b\xb8\x8b\xb9\x8b\xba\x8b\xbb\x8b\xbc\x8b\xbd", /* 5b00 */ "\x8b\xbe\x8b\xbf\x8b\xc0\x8b\xc1\x8b\xc2\x8b\xc3\x8b\xc4\x8b\xc5\x8b\xc6\xe6\xd2\x8b\xc7\x8b\xc8\x8b\xc9\x8b\xca\x8b\xcb\x8b\xcc\x8b\xcd\x8b\xce\x8b\xcf\x8b\xd0\x8b\xd1\x8b\xd2\xe6\xd4\xe6\xd3\x8b\xd3\x8b\xd4\x8b\xd5\x8b\xd6\x8b\xd7\x8b\xd8\x8b\xd9\x8b\xda\x8b\xdb\x8b\xdc\x8b\xdd\x8b\xde\x8b\xdf\x8b\xe0\x8b\xe1\x8b\xe2\x8b\xe3\x8b\xe4\x8b\xe5\x8b\xe6\x8b\xe7\x8b\xe8\x8b\xe9\x8b\xea\x8b\xeb\x8b\xec\xe6\xd5\x8b\xed\xd9\xf8\x8b\xee\x8b\xef\xe6\xd6\x8b\xf0\x8b\xf1\x8b\xf2\x8b\xf3\x8b\xf4\x8b\xf5\x8b\xf6\x8b\xf7\xe6\xd7\x8b\xf8\x8b\xf9\x8b\xfa\x8b\xfb\x8b\xfc\x8b\xfd\x8b\xfe\x8c\x40\x8c\x41\x8c\x42\x8c\x43\x8c\x44\x8c\x45\x8c\x46\x8c\x47\xd7\xd3\xe6\xdd\x8c\x48\xe6\xde\xbf\xd7\xd4\xd0\x8c\x49\xd7\xd6\xb4\xe6\xcb\xef\xe6\xda\xd8\xc3\xd7\xce\xd0\xa2\x8c\x4a\xc3\xcf\x8c\x4b\x8c\x4c\xe6\xdf\xbc\xbe\xb9\xc2\xe6\xdb\xd1\xa7\x8c\x4d\x8c\x4e\xba\xa2\xc2\xcf\x8c\x4f\xd8\xab\x8c\x50\x8c\x51\x8c\x52\xca\xeb\xe5\xee\x8c\x53\xe6\xdc\x8c\x54\xb7\xf5\x8c\x55\x8c\x56\x8c\x57\x8c\x58\xc8\xe6\x8c\x59\x8c\x5a\xc4\xf5\x8c\x5b\x8c\x5c", /* 5b80 */ "\xe5\xb2\xc4\xfe\x8c\x5d\xcb\xfc\xe5\xb3\xd5\xac\x8c\x5e\xd3\xee\xca\xd8\xb0\xb2\x8c\x5f\xcb\xce\xcd\xea\x8c\x60\x8c\x61\xba\xea\x8c\x62\x8c\x63\x8c\x64\xe5\xb5\x8c\x65\xe5\xb4\x8c\x66\xd7\xda\xb9\xd9\xd6\xe6\xb6\xa8\xcd\xf0\xd2\xcb\xb1\xa6\xca\xb5\x8c\x67\xb3\xe8\xc9\xf3\xbf\xcd\xd0\xfb\xca\xd2\xe5\xb6\xbb\xc2\x8c\x68\x8c\x69\x8c\x6a\xcf\xdc\xb9\xac\x8c\x6b\x8c\x6c\x8c\x6d\x8c\x6e\xd4\xd7\x8c\x6f\x8c\x70\xba\xa6\xd1\xe7\xcf\xfc\xbc\xd2\x8c\x71\xe5\xb7\xc8\xdd\x8c\x72\x8c\x73\x8c\x74\xbf\xed\xb1\xf6\xcb\xde\x8c\x75\x8c\x76\xbc\xc5\x8c\x77\xbc\xc4\xd2\xfa\xc3\xdc\xbf\xdc\x8c\x78\x8c\x79\x8c\x7a\x8c\x7b\xb8\xbb\x8c\x7c\x8c\x7d\x8c\x7e\xc3\xc2\x8c\x80\xba\xae\xd4\xa2\x8c\x81\x8c\x82\x8c\x83\x8c\x84\x8c\x85\x8c\x86\x8c\x87\x8c\x88\x8c\x89\xc7\xde\xc4\xaf\xb2\xec\x8c\x8a\xb9\xd1\x8c\x8b\x8c\x8c\xe5\xbb\xc1\xc8\x8c\x8d\x8c\x8e\xd5\xaf\x8c\x8f\x8c\x90\x8c\x91\x8c\x92\x8c\x93\xe5\xbc\x8c\x94\xe5\xbe\x8c\x95\x8c\x96\x8c\x97\x8c\x98\x8c\x99\x8c\x9a\x8c\x9b\xb4\xe7\xb6\xd4\xcb\xc2\xd1\xb0\xb5\xbc\x8c\x9c\x8c\x9d\xca\xd9", /* 5c00 */ "\x8c\x9e\xb7\xe2\x8c\x9f\x8c\xa0\xc9\xe4\x8c\xa1\xbd\xab\x8c\xa2\x8c\xa3\xce\xbe\xd7\xf0\x8c\xa4\x8c\xa5\x8c\xa6\x8c\xa7\xd0\xa1\x8c\xa8\xc9\xd9\x8c\xa9\x8c\xaa\xb6\xfb\xe6\xd8\xbc\xe2\x8c\xab\xb3\xbe\x8c\xac\xc9\xd0\x8c\xad\xe6\xd9\xb3\xa2\x8c\xae\x8c\xaf\x8c\xb0\x8c\xb1\xde\xcc\x8c\xb2\xd3\xc8\xde\xcd\x8c\xb3\xd2\xa2\x8c\xb4\x8c\xb5\x8c\xb6\x8c\xb7\xde\xce\x8c\xb8\x8c\xb9\x8c\xba\x8c\xbb\xbe\xcd\x8c\xbc\x8c\xbd\xde\xcf\x8c\xbe\x8c\xbf\x8c\xc0\xca\xac\xd2\xfc\xb3\xdf\xe5\xea\xc4\xe1\xbe\xa1\xce\xb2\xc4\xf2\xbe\xd6\xc6\xa8\xb2\xe3\x8c\xc1\x8c\xc2\xbe\xd3\x8c\xc3\x8c\xc4\xc7\xfc\xcc\xeb\xbd\xec\xce\xdd\x8c\xc5\x8c\xc6\xca\xba\xc6\xc1\xe5\xec\xd0\xbc\x8c\xc7\x8c\xc8\x8c\xc9\xd5\xb9\x8c\xca\x8c\xcb\x8c\xcc\xe5\xed\x8c\xcd\x8c\xce\x8c\xcf\x8c\xd0\xca\xf4\x8c\xd1\xcd\xc0\xc2\xc5\x8c\xd2\xe5\xef\x8c\xd3\xc2\xc4\xe5\xf0\x8c\xd4\x8c\xd5\x8c\xd6\x8c\xd7\x8c\xd8\x8c\xd9\x8c\xda\xe5\xf8\xcd\xcd\x8c\xdb\xc9\xbd\x8c\xdc\x8c\xdd\x8c\xde\x8c\xdf\x8c\xe0\x8c\xe1\x8c\xe2\xd2\xd9\xe1\xa8\x8c\xe3\x8c\xe4\x8c\xe5\x8c\xe6\xd3\xec", /* 5c80 */ "\x8c\xe7\xcb\xea\xc6\xf1\x8c\xe8\x8c\xe9\x8c\xea\x8c\xeb\x8c\xec\xe1\xac\x8c\xed\x8c\xee\x8c\xef\xe1\xa7\xe1\xa9\x8c\xf0\x8c\xf1\xe1\xaa\xe1\xaf\x8c\xf2\x8c\xf3\xb2\xed\x8c\xf4\xe1\xab\xb8\xda\xe1\xad\xe1\xae\xe1\xb0\xb5\xba\xe1\xb1\x8c\xf5\x8c\xf6\x8c\xf7\x8c\xf8\x8c\xf9\xe1\xb3\xe1\xb8\x8c\xfa\x8c\xfb\x8c\xfc\x8c\xfd\x8c\xfe\xd1\xd2\x8d\x40\xe1\xb6\xe1\xb5\xc1\xeb\x8d\x41\x8d\x42\x8d\x43\xe1\xb7\x8d\x44\xd4\xc0\x8d\x45\xe1\xb2\x8d\x46\xe1\xba\xb0\xb6\x8d\x47\x8d\x48\x8d\x49\x8d\x4a\xe1\xb4\x8d\x4b\xbf\xf9\x8d\x4c\xe1\xb9\x8d\x4d\x8d\x4e\xe1\xbb\x8d\x4f\x8d\x50\x8d\x51\x8d\x52\x8d\x53\x8d\x54\xe1\xbe\x8d\x55\x8d\x56\x8d\x57\x8d\x58\x8d\x59\x8d\x5a\xe1\xbc\x8d\x5b\x8d\x5c\x8d\x5d\x8d\x5e\x8d\x5f\x8d\x60\xd6\xc5\x8d\x61\x8d\x62\x8d\x63\x8d\x64\x8d\x65\x8d\x66\x8d\x67\xcf\xbf\x8d\x68\x8d\x69\xe1\xbd\xe1\xbf\xc2\xcd\x8d\x6a\xb6\xeb\x8d\x6b\xd3\xf8\x8d\x6c\x8d\x6d\xc7\xcd\x8d\x6e\x8d\x6f\xb7\xe5\x8d\x70\x8d\x71\x8d\x72\x8d\x73\x8d\x74\x8d\x75\x8d\x76\x8d\x77\x8d\x78\x8d\x79\xbe\xfe\x8d\x7a\x8d\x7b\x8d\x7c\x8d\x7d", /* 5d00 */ "\x8d\x7e\x8d\x80\xe1\xc0\xe1\xc1\x8d\x81\x8d\x82\xe1\xc7\xb3\xe7\x8d\x83\x8d\x84\x8d\x85\x8d\x86\x8d\x87\x8d\x88\xc6\xe9\x8d\x89\x8d\x8a\x8d\x8b\x8d\x8c\x8d\x8d\xb4\xde\x8d\x8e\xd1\xc2\x8d\x8f\x8d\x90\x8d\x91\x8d\x92\xe1\xc8\x8d\x93\x8d\x94\xe1\xc6\x8d\x95\x8d\x96\x8d\x97\x8d\x98\x8d\x99\xe1\xc5\x8d\x9a\xe1\xc3\xe1\xc2\x8d\x9b\xb1\xc0\x8d\x9c\x8d\x9d\x8d\x9e\xd5\xb8\xe1\xc4\x8d\x9f\x8d\xa0\x8d\xa1\x8d\xa2\x8d\xa3\xe1\xcb\x8d\xa4\x8d\xa5\x8d\xa6\x8d\xa7\x8d\xa8\x8d\xa9\x8d\xaa\x8d\xab\xe1\xcc\xe1\xca\x8d\xac\x8d\xad\x8d\xae\x8d\xaf\x8d\xb0\x8d\xb1\x8d\xb2\x8d\xb3\xef\xfa\x8d\xb4\x8d\xb5\xe1\xd3\xe1\xd2\xc7\xb6\x8d\xb6\x8d\xb7\x8d\xb8\x8d\xb9\x8d\xba\x8d\xbb\x8d\xbc\x8d\xbd\x8d\xbe\x8d\xbf\x8d\xc0\xe1\xc9\x8d\xc1\x8d\xc2\xe1\xce\x8d\xc3\xe1\xd0\x8d\xc4\x8d\xc5\x8d\xc6\x8d\xc7\x8d\xc8\x8d\xc9\x8d\xca\x8d\xcb\x8d\xcc\x8d\xcd\x8d\xce\xe1\xd4\x8d\xcf\xe1\xd1\xe1\xcd\x8d\xd0\x8d\xd1\xe1\xcf\x8d\xd2\x8d\xd3\x8d\xd4\x8d\xd5\xe1\xd5\x8d\xd6\x8d\xd7\x8d\xd8\x8d\xd9\x8d\xda\x8d\xdb\x8d\xdc\x8d\xdd\x8d\xde\x8d\xdf\x8d\xe0", /* 5d80 */ "\x8d\xe1\x8d\xe2\xe1\xd6\x8d\xe3\x8d\xe4\x8d\xe5\x8d\xe6\x8d\xe7\x8d\xe8\x8d\xe9\x8d\xea\x8d\xeb\x8d\xec\x8d\xed\x8d\xee\x8d\xef\x8d\xf0\x8d\xf1\x8d\xf2\x8d\xf3\x8d\xf4\x8d\xf5\x8d\xf6\x8d\xf7\x8d\xf8\xe1\xd7\x8d\xf9\x8d\xfa\x8d\xfb\xe1\xd8\x8d\xfc\x8d\xfd\x8d\xfe\x8e\x40\x8e\x41\x8e\x42\x8e\x43\x8e\x44\x8e\x45\x8e\x46\x8e\x47\x8e\x48\x8e\x49\x8e\x4a\x8e\x4b\x8e\x4c\x8e\x4d\x8e\x4e\x8e\x4f\x8e\x50\x8e\x51\x8e\x52\x8e\x53\x8e\x54\x8e\x55\xe1\xda\x8e\x56\x8e\x57\x8e\x58\x8e\x59\x8e\x5a\x8e\x5b\x8e\x5c\x8e\x5d\x8e\x5e\x8e\x5f\x8e\x60\x8e\x61\x8e\x62\xe1\xdb\x8e\x63\x8e\x64\x8e\x65\x8e\x66\x8e\x67\x8e\x68\x8e\x69\xce\xa1\x8e\x6a\x8e\x6b\x8e\x6c\x8e\x6d\x8e\x6e\x8e\x6f\x8e\x70\x8e\x71\x8e\x72\x8e\x73\x8e\x74\x8e\x75\x8e\x76\xe7\xdd\x8e\x77\xb4\xa8\xd6\xdd\x8e\x78\x8e\x79\xd1\xb2\xb3\xb2\x8e\x7a\x8e\x7b\xb9\xa4\xd7\xf3\xc7\xc9\xbe\xde\xb9\xae\x8e\x7c\xce\xd7\x8e\x7d\x8e\x7e\xb2\xee\xdb\xcf\x8e\x80\xbc\xba\xd2\xd1\xcb\xc8\xb0\xcd\x8e\x81\x8e\x82\xcf\xef\x8e\x83\x8e\x84\x8e\x85\x8e\x86\x8e\x87\xd9\xe3\xbd\xed\x8e\x88", /* 5e00 */ "\x8e\x89\xb1\xd2\xca\xd0\xb2\xbc\x8e\x8a\xcb\xa7\xb7\xab\x8e\x8b\xca\xa6\x8e\x8c\x8e\x8d\x8e\x8e\xcf\xa3\x8e\x8f\x8e\x90\xe0\xf8\xd5\xca\xe0\xfb\x8e\x91\x8e\x92\xe0\xfa\xc5\xc1\xcc\xfb\x8e\x93\xc1\xb1\xe0\xf9\xd6\xe3\xb2\xaf\xd6\xc4\xb5\xdb\x8e\x94\x8e\x95\x8e\x96\x8e\x97\x8e\x98\x8e\x99\x8e\x9a\x8e\x9b\xb4\xf8\xd6\xa1\x8e\x9c\x8e\x9d\x8e\x9e\x8e\x9f\x8e\xa0\xcf\xaf\xb0\xef\x8e\xa1\x8e\xa2\xe0\xfc\x8e\xa3\x8e\xa4\x8e\xa5\x8e\xa6\x8e\xa7\xe1\xa1\xb3\xa3\x8e\xa8\x8e\xa9\xe0\xfd\xe0\xfe\xc3\xb1\x8e\xaa\x8e\xab\x8e\xac\x8e\xad\xc3\xdd\x8e\xae\xe1\xa2\xb7\xf9\x8e\xaf\x8e\xb0\x8e\xb1\x8e\xb2\x8e\xb3\x8e\xb4\xbb\xcf\x8e\xb5\x8e\xb6\x8e\xb7\x8e\xb8\x8e\xb9\x8e\xba\x8e\xbb\xe1\xa3\xc4\xbb\x8e\xbc\x8e\xbd\x8e\xbe\x8e\xbf\x8e\xc0\xe1\xa4\x8e\xc1\x8e\xc2\xe1\xa5\x8e\xc3\x8e\xc4\xe1\xa6\xb4\xb1\x8e\xc5\x8e\xc6\x8e\xc7\x8e\xc8\x8e\xc9\x8e\xca\x8e\xcb\x8e\xcc\x8e\xcd\x8e\xce\x8e\xcf\x8e\xd0\x8e\xd1\x8e\xd2\x8e\xd3\xb8\xc9\xc6\xbd\xc4\xea\x8e\xd4\xb2\xa2\x8e\xd5\xd0\xd2\x8e\xd6\xe7\xdb\xbb\xc3\xd3\xd7\xd3\xc4\x8e\xd7\xb9\xe3", /* 5e80 */ "\xe2\xcf\x8e\xd8\x8e\xd9\x8e\xda\xd7\xaf\x8e\xdb\xc7\xec\xb1\xd3\x8e\xdc\x8e\xdd\xb4\xb2\xe2\xd1\x8e\xde\x8e\xdf\x8e\xe0\xd0\xf2\xc2\xae\xe2\xd0\x8e\xe1\xbf\xe2\xd3\xa6\xb5\xd7\xe2\xd2\xb5\xea\x8e\xe2\xc3\xed\xb8\xfd\x8e\xe3\xb8\xae\x8e\xe4\xc5\xd3\xb7\xcf\xe2\xd4\x8e\xe5\x8e\xe6\x8e\xe7\x8e\xe8\xe2\xd3\xb6\xc8\xd7\xf9\x8e\xe9\x8e\xea\x8e\xeb\x8e\xec\x8e\xed\xcd\xa5\x8e\xee\x8e\xef\x8e\xf0\x8e\xf1\x8e\xf2\xe2\xd8\x8e\xf3\xe2\xd6\xca\xfc\xbf\xb5\xd3\xb9\xe2\xd5\x8e\xf4\x8e\xf5\x8e\xf6\x8e\xf7\xe2\xd7\x8e\xf8\x8e\xf9\x8e\xfa\x8e\xfb\x8e\xfc\x8e\xfd\x8e\xfe\x8f\x40\x8f\x41\x8f\x42\xc1\xae\xc0\xc8\x8f\x43\x8f\x44\x8f\x45\x8f\x46\x8f\x47\x8f\x48\xe2\xdb\xe2\xda\xc0\xaa\x8f\x49\x8f\x4a\xc1\xce\x8f\x4b\x8f\x4c\x8f\x4d\x8f\x4e\xe2\xdc\x8f\x4f\x8f\x50\x8f\x51\x8f\x52\x8f\x53\x8f\x54\x8f\x55\x8f\x56\x8f\x57\x8f\x58\x8f\x59\x8f\x5a\xe2\xdd\x8f\x5b\xe2\xde\x8f\x5c\x8f\x5d\x8f\x5e\x8f\x5f\x8f\x60\x8f\x61\x8f\x62\x8f\x63\x8f\x64\xdb\xc8\x8f\x65\xd1\xd3\xcd\xa2\x8f\x66\x8f\x67\xbd\xa8\x8f\x68\x8f\x69\x8f\x6a\xde\xc3\xd8\xa5", /* 5f00 */ "\xbf\xaa\xdb\xcd\xd2\xec\xc6\xfa\xc5\xaa\x8f\x6b\x8f\x6c\x8f\x6d\xde\xc4\x8f\x6e\xb1\xd7\xdf\xae\x8f\x6f\x8f\x70\x8f\x71\xca\xbd\x8f\x72\xdf\xb1\x8f\x73\xb9\xad\x8f\x74\xd2\xfd\x8f\x75\xb8\xa5\xba\xeb\x8f\x76\x8f\x77\xb3\xda\x8f\x78\x8f\x79\x8f\x7a\xb5\xdc\xd5\xc5\x8f\x7b\x8f\x7c\x8f\x7d\x8f\x7e\xc3\xd6\xcf\xd2\xbb\xa1\x8f\x80\xe5\xf3\xe5\xf2\x8f\x81\x8f\x82\xe5\xf4\x8f\x83\xcd\xe4\x8f\x84\xc8\xf5\x8f\x85\x8f\x86\x8f\x87\x8f\x88\x8f\x89\x8f\x8a\x8f\x8b\xb5\xaf\xc7\xbf\x8f\x8c\xe5\xf6\x8f\x8d\x8f\x8e\x8f\x8f\xec\xb0\x8f\x90\x8f\x91\x8f\x92\x8f\x93\x8f\x94\x8f\x95\x8f\x96\x8f\x97\x8f\x98\x8f\x99\x8f\x9a\x8f\x9b\x8f\x9c\x8f\x9d\x8f\x9e\xe5\xe6\x8f\x9f\xb9\xe9\xb5\xb1\x8f\xa0\xc2\xbc\xe5\xe8\xe5\xe7\xe5\xe9\x8f\xa1\x8f\xa2\x8f\xa3\x8f\xa4\xd2\xcd\x8f\xa5\x8f\xa6\x8f\xa7\xe1\xea\xd0\xce\x8f\xa8\xcd\xae\x8f\xa9\xd1\xe5\x8f\xaa\x8f\xab\xb2\xca\xb1\xeb\x8f\xac\xb1\xf2\xc5\xed\x8f\xad\x8f\xae\xd5\xc3\xd3\xb0\x8f\xaf\xe1\xdc\x8f\xb0\x8f\xb1\x8f\xb2\xe1\xdd\x8f\xb3\xd2\xdb\x8f\xb4\xb3\xb9\xb1\xcb\x8f\xb5\x8f\xb6\x8f\xb7", /* 5f80 */ "\xcd\xf9\xd5\xf7\xe1\xde\x8f\xb8\xbe\xb6\xb4\xfd\x8f\xb9\xe1\xdf\xba\xdc\xe1\xe0\xbb\xb2\xc2\xc9\xe1\xe1\x8f\xba\x8f\xbb\x8f\xbc\xd0\xec\x8f\xbd\xcd\xbd\x8f\xbe\x8f\xbf\xe1\xe2\x8f\xc0\xb5\xc3\xc5\xc7\xe1\xe3\x8f\xc1\x8f\xc2\xe1\xe4\x8f\xc3\x8f\xc4\x8f\xc5\x8f\xc6\xd3\xf9\x8f\xc7\x8f\xc8\x8f\xc9\x8f\xca\x8f\xcb\x8f\xcc\xe1\xe5\x8f\xcd\xd1\xad\x8f\xce\x8f\xcf\xe1\xe6\xce\xa2\x8f\xd0\x8f\xd1\x8f\xd2\x8f\xd3\x8f\xd4\x8f\xd5\xe1\xe7\x8f\xd6\xb5\xc2\x8f\xd7\x8f\xd8\x8f\xd9\x8f\xda\xe1\xe8\xbb\xd5\x8f\xdb\x8f\xdc\x8f\xdd\x8f\xde\x8f\xdf\xd0\xc4\xe2\xe0\xb1\xd8\xd2\xe4\x8f\xe0\x8f\xe1\xe2\xe1\x8f\xe2\x8f\xe3\xbc\xc9\xc8\xcc\x8f\xe4\xe2\xe3\xec\xfe\xec\xfd\xdf\xaf\x8f\xe5\x8f\xe6\x8f\xe7\xe2\xe2\xd6\xbe\xcd\xfc\xc3\xa6\x8f\xe8\x8f\xe9\x8f\xea\xe3\xc3\x8f\xeb\x8f\xec\xd6\xd2\xe2\xe7\x8f\xed\x8f\xee\xe2\xe8\x8f\xef\x8f\xf0\xd3\xc7\x8f\xf1\x8f\xf2\xe2\xec\xbf\xec\x8f\xf3\xe2\xed\xe2\xe5\x8f\xf4\x8f\xf5\xb3\xc0\x8f\xf6\x8f\xf7\x8f\xf8\xc4\xee\x8f\xf9\x8f\xfa\xe2\xee\x8f\xfb\x8f\xfc\xd0\xc3\x8f\xfd\xba\xf6\xe2\xe9\xb7\xde", /* 6000 */ "\xbb\xb3\xcc\xac\xcb\xcb\xe2\xe4\xe2\xe6\xe2\xea\xe2\xeb\x8f\xfe\x90\x40\x90\x41\xe2\xf7\x90\x42\x90\x43\xe2\xf4\xd4\xf5\xe2\xf3\x90\x44\x90\x45\xc5\xad\x90\x46\xd5\xfa\xc5\xc2\xb2\xc0\x90\x47\x90\x48\xe2\xef\x90\x49\xe2\xf2\xc1\xaf\xcb\xbc\x90\x4a\x90\x4b\xb5\xa1\xe2\xf9\x90\x4c\x90\x4d\x90\x4e\xbc\xb1\xe2\xf1\xd0\xd4\xd4\xb9\xe2\xf5\xb9\xd6\xe2\xf6\x90\x4f\x90\x50\x90\x51\xc7\xd3\x90\x52\x90\x53\x90\x54\x90\x55\x90\x56\xe2\xf0\x90\x57\x90\x58\x90\x59\x90\x5a\x90\x5b\xd7\xdc\xed\xa1\x90\x5c\x90\x5d\xe2\xf8\x90\x5e\xed\xa5\xe2\xfe\xca\xd1\x90\x5f\x90\x60\x90\x61\x90\x62\x90\x63\x90\x64\x90\x65\xc1\xb5\x90\x66\xbb\xd0\x90\x67\x90\x68\xbf\xd6\x90\x69\xba\xe3\x90\x6a\x90\x6b\xcb\xa1\x90\x6c\x90\x6d\x90\x6e\xed\xa6\xed\xa3\x90\x6f\x90\x70\xed\xa2\x90\x71\x90\x72\x90\x73\x90\x74\xbb\xd6\xed\xa7\xd0\xf4\x90\x75\x90\x76\xed\xa4\xba\xde\xb6\xf7\xe3\xa1\xb6\xb2\xcc\xf1\xb9\xa7\x90\x77\xcf\xa2\xc7\xa1\x90\x78\x90\x79\xbf\xd2\x90\x7a\x90\x7b\xb6\xf1\x90\x7c\xe2\xfa\xe2\xfb\xe2\xfd\xe2\xfc\xc4\xd5\xe3\xa2\x90\x7d\xd3\xc1", /* 6080 */ "\x90\x7e\x90\x80\x90\x81\xe3\xa7\xc7\xc4\x90\x82\x90\x83\x90\x84\x90\x85\xcf\xa4\x90\x86\x90\x87\xe3\xa9\xba\xb7\x90\x88\x90\x89\x90\x8a\x90\x8b\xe3\xa8\x90\x8c\xbb\xda\x90\x8d\xe3\xa3\x90\x8e\x90\x8f\x90\x90\xe3\xa4\xe3\xaa\x90\x91\xe3\xa6\x90\x92\xce\xf2\xd3\xc6\x90\x93\x90\x94\xbb\xbc\x90\x95\x90\x96\xd4\xc3\x90\x97\xc4\xfa\x90\x98\x90\x99\xed\xa8\xd0\xfc\xe3\xa5\x90\x9a\xc3\xf5\x90\x9b\xe3\xad\xb1\xaf\x90\x9c\xe3\xb2\x90\x9d\x90\x9e\x90\x9f\xbc\xc2\x90\xa0\x90\xa1\xe3\xac\xb5\xbf\x90\xa2\x90\xa3\x90\xa4\x90\xa5\x90\xa6\x90\xa7\x90\xa8\x90\xa9\xc7\xe9\xe3\xb0\x90\xaa\x90\xab\x90\xac\xbe\xaa\xcd\xef\x90\xad\x90\xae\x90\xaf\x90\xb0\x90\xb1\xbb\xf3\x90\xb2\x90\xb3\x90\xb4\xcc\xe8\x90\xb5\x90\xb6\xe3\xaf\x90\xb7\xe3\xb1\x90\xb8\xcf\xa7\xe3\xae\x90\xb9\xce\xa9\xbb\xdd\x90\xba\x90\xbb\x90\xbc\x90\xbd\x90\xbe\xb5\xeb\xbe\xe5\xb2\xd2\xb3\xcd\x90\xbf\xb1\xb9\xe3\xab\xb2\xd1\xb5\xac\xb9\xdf\xb6\xe8\x90\xc0\x90\xc1\xcf\xeb\xe3\xb7\x90\xc2\xbb\xcc\x90\xc3\x90\xc4\xc8\xc7\xd0\xca\x90\xc5\x90\xc6\x90\xc7\x90\xc8\x90\xc9", /* 6100 */ "\xe3\xb8\xb3\xee\x90\xca\x90\xcb\x90\xcc\x90\xcd\xed\xa9\x90\xce\xd3\xfa\xd3\xe4\x90\xcf\x90\xd0\x90\xd1\xed\xaa\xe3\xb9\xd2\xe2\x90\xd2\x90\xd3\x90\xd4\x90\xd5\x90\xd6\xe3\xb5\x90\xd7\x90\xd8\x90\xd9\x90\xda\xd3\xde\x90\xdb\x90\xdc\x90\xdd\x90\xde\xb8\xd0\xe3\xb3\x90\xdf\x90\xe0\xe3\xb6\xb7\xdf\x90\xe1\xe3\xb4\xc0\xa2\x90\xe2\x90\xe3\x90\xe4\xe3\xba\x90\xe5\x90\xe6\x90\xe7\x90\xe8\x90\xe9\x90\xea\x90\xeb\x90\xec\x90\xed\x90\xee\x90\xef\x90\xf0\x90\xf1\x90\xf2\x90\xf3\x90\xf4\x90\xf5\x90\xf6\x90\xf7\xd4\xb8\x90\xf8\x90\xf9\x90\xfa\x90\xfb\x90\xfc\x90\xfd\x90\xfe\x91\x40\xb4\xc8\x91\x41\xe3\xbb\x91\x42\xbb\xc5\x91\x43\xc9\xf7\x91\x44\x91\x45\xc9\xe5\x91\x46\x91\x47\x91\x48\xc4\xbd\x91\x49\x91\x4a\x91\x4b\x91\x4c\x91\x4d\x91\x4e\x91\x4f\xed\xab\x91\x50\x91\x51\x91\x52\x91\x53\xc2\xfd\x91\x54\x91\x55\x91\x56\x91\x57\xbb\xdb\xbf\xae\x91\x58\x91\x59\x91\x5a\x91\x5b\x91\x5c\x91\x5d\x91\x5e\xce\xbf\x91\x5f\x91\x60\x91\x61\x91\x62\xe3\xbc\x91\x63\xbf\xb6\x91\x64\x91\x65\x91\x66\x91\x67\x91\x68\x91\x69\x91\x6a\x91\x6b", /* 6180 */ "\x91\x6c\x91\x6d\x91\x6e\x91\x6f\x91\x70\x91\x71\x91\x72\x91\x73\x91\x74\x91\x75\x91\x76\xb1\xef\x91\x77\x91\x78\xd4\xf7\x91\x79\x91\x7a\x91\x7b\x91\x7c\x91\x7d\xe3\xbe\x91\x7e\x91\x80\x91\x81\x91\x82\x91\x83\x91\x84\x91\x85\x91\x86\xed\xad\x91\x87\x91\x88\x91\x89\x91\x8a\x91\x8b\x91\x8c\x91\x8d\x91\x8e\x91\x8f\xe3\xbf\xba\xa9\xed\xac\x91\x90\x91\x91\xe3\xbd\x91\x92\x91\x93\x91\x94\x91\x95\x91\x96\x91\x97\x91\x98\x91\x99\x91\x9a\x91\x9b\xe3\xc0\x91\x9c\x91\x9d\x91\x9e\x91\x9f\x91\xa0\x91\xa1\xba\xb6\x91\xa2\x91\xa3\x91\xa4\xb6\xae\x91\xa5\x91\xa6\x91\xa7\x91\xa8\x91\xa9\xd0\xb8\x91\xaa\xb0\xc3\xed\xae\x91\xab\x91\xac\x91\xad\x91\xae\x91\xaf\xed\xaf\xc0\xc1\x91\xb0\xe3\xc1\x91\xb1\x91\xb2\x91\xb3\x91\xb4\x91\xb5\x91\xb6\x91\xb7\x91\xb8\x91\xb9\x91\xba\x91\xbb\x91\xbc\x91\xbd\x91\xbe\x91\xbf\x91\xc0\x91\xc1\xc5\xb3\x91\xc2\x91\xc3\x91\xc4\x91\xc5\x91\xc6\x91\xc7\x91\xc8\x91\xc9\x91\xca\x91\xcb\x91\xcc\x91\xcd\x91\xce\x91\xcf\xe3\xc2\x91\xd0\x91\xd1\x91\xd2\x91\xd3\x91\xd4\x91\xd5\x91\xd6\x91\xd7\x91\xd8\xdc\xb2", /* 6200 */ "\x91\xd9\x91\xda\x91\xdb\x91\xdc\x91\xdd\x91\xde\xed\xb0\x91\xdf\xb8\xea\x91\xe0\xce\xec\xea\xa7\xd0\xe7\xca\xf9\xc8\xd6\xcf\xb7\xb3\xc9\xce\xd2\xbd\xe4\x91\xe1\x91\xe2\xe3\xde\xbb\xf2\xea\xa8\xd5\xbd\x91\xe3\xc6\xdd\xea\xa9\x91\xe4\x91\xe5\x91\xe6\xea\xaa\x91\xe7\xea\xac\xea\xab\x91\xe8\xea\xae\xea\xad\x91\xe9\x91\xea\x91\xeb\x91\xec\xbd\xd8\x91\xed\xea\xaf\x91\xee\xc2\xbe\x91\xef\x91\xf0\x91\xf1\x91\xf2\xb4\xc1\xb4\xf7\x91\xf3\x91\xf4\xbb\xa7\x91\xf5\x91\xf6\x91\xf7\x91\xf8\x91\xf9\xec\xe6\xec\xe5\xb7\xbf\xcb\xf9\xb1\xe2\x91\xfa\xec\xe7\x91\xfb\x91\xfc\x91\xfd\xc9\xc8\xec\xe8\xec\xe9\x91\xfe\xca\xd6\xde\xd0\xb2\xc5\xd4\xfa\x92\x40\x92\x41\xc6\xcb\xb0\xc7\xb4\xf2\xc8\xd3\x92\x42\x92\x43\x92\x44\xcd\xd0\x92\x45\x92\x46\xbf\xb8\x92\x47\x92\x48\x92\x49\x92\x4a\x92\x4b\x92\x4c\x92\x4d\xbf\xdb\x92\x4e\x92\x4f\xc7\xa4\xd6\xb4\x92\x50\xc0\xa9\xde\xd1\xc9\xa8\xd1\xef\xc5\xa4\xb0\xe7\xb3\xb6\xc8\xc5\x92\x51\x92\x52\xb0\xe2\x92\x53\x92\x54\xb7\xf6\x92\x55\x92\x56\xc5\xfa\x92\x57\x92\x58\xb6\xf3\x92\x59\xd5\xd2\xb3\xd0", /* 6280 */ "\xbc\xbc\x92\x5a\x92\x5b\x92\x5c\xb3\xad\x92\x5d\x92\x5e\x92\x5f\x92\x60\xbe\xf1\xb0\xd1\x92\x61\x92\x62\x92\x63\x92\x64\x92\x65\x92\x66\xd2\xd6\xca\xe3\xd7\xa5\x92\x67\xcd\xb6\xb6\xb6\xbf\xb9\xd5\xdb\x92\x68\xb8\xa7\xc5\xd7\x92\x69\x92\x6a\x92\x6b\xde\xd2\xbf\xd9\xc2\xd5\xc7\xc0\x92\x6c\xbb\xa4\xb1\xa8\x92\x6d\x92\x6e\xc5\xea\x92\x6f\x92\x70\xc5\xfb\xcc\xa7\x92\x71\x92\x72\x92\x73\x92\x74\xb1\xa7\x92\x75\x92\x76\x92\x77\xb5\xd6\x92\x78\x92\x79\x92\x7a\xc4\xa8\x92\x7b\xde\xd3\xd1\xba\xb3\xe9\x92\x7c\xc3\xf2\x92\x7d\x92\x7e\xb7\xf7\x92\x80\xd6\xf4\xb5\xa3\xb2\xf0\xc4\xb4\xc4\xe9\xc0\xad\xde\xd4\x92\x81\xb0\xe8\xc5\xc4\xc1\xe0\x92\x82\xb9\xd5\x92\x83\xbe\xdc\xcd\xd8\xb0\xce\x92\x84\xcd\xcf\xde\xd6\xbe\xd0\xd7\xbe\xde\xd5\xd5\xd0\xb0\xdd\x92\x85\x92\x86\xc4\xe2\x92\x87\x92\x88\xc2\xa3\xbc\xf0\x92\x89\xd3\xb5\xc0\xb9\xc5\xa1\xb2\xa6\xd4\xf1\x92\x8a\x92\x8b\xc0\xa8\xca\xc3\xde\xd7\xd5\xfc\x92\x8c\xb9\xb0\x92\x8d\xc8\xad\xcb\xa9\x92\x8e\xde\xd9\xbf\xbd\x92\x8f\x92\x90\x92\x91\x92\x92\xc6\xb4\xd7\xa7\xca\xb0\xc4\xc3", /* 6300 */ "\x92\x93\xb3\xd6\xb9\xd2\x92\x94\x92\x95\x92\x96\x92\x97\xd6\xb8\xea\xfc\xb0\xb4\x92\x98\x92\x99\x92\x9a\x92\x9b\xbf\xe6\x92\x9c\x92\x9d\xcc\xf4\x92\x9e\x92\x9f\x92\xa0\x92\xa1\xcd\xda\x92\xa2\x92\xa3\x92\xa4\xd6\xbf\xc2\xce\x92\xa5\xce\xce\xcc\xa2\xd0\xae\xc4\xd3\xb5\xb2\xde\xd8\xd5\xf5\xbc\xb7\xbb\xd3\x92\xa6\x92\xa7\xb0\xa4\x92\xa8\xc5\xb2\xb4\xec\x92\xa9\x92\xaa\x92\xab\xd5\xf1\x92\xac\x92\xad\xea\xfd\x92\xae\x92\xaf\x92\xb0\x92\xb1\x92\xb2\x92\xb3\xde\xda\xcd\xa6\x92\xb4\x92\xb5\xcd\xec\x92\xb6\x92\xb7\x92\xb8\x92\xb9\xce\xe6\xde\xdc\x92\xba\xcd\xb1\xc0\xa6\x92\xbb\x92\xbc\xd7\xbd\x92\xbd\xde\xdb\xb0\xc6\xba\xb4\xc9\xd3\xc4\xf3\xbe\xe8\x92\xbe\x92\xbf\x92\xc0\x92\xc1\xb2\xb6\x92\xc2\x92\xc3\x92\xc4\x92\xc5\x92\xc6\x92\xc7\x92\xc8\x92\xc9\xc0\xcc\xcb\xf0\x92\xca\xbc\xf1\xbb\xbb\xb5\xb7\x92\xcb\x92\xcc\x92\xcd\xc5\xf5\x92\xce\xde\xe6\x92\xcf\x92\xd0\x92\xd1\xde\xe3\xbe\xdd\x92\xd2\x92\xd3\xde\xdf\x92\xd4\x92\xd5\x92\xd6\x92\xd7\xb4\xb7\xbd\xdd\x92\xd8\x92\xd9\xde\xe0\xc4\xed\x92\xda\x92\xdb\x92\xdc\x92\xdd", /* 6380 */ "\xcf\xc6\x92\xde\xb5\xe0\x92\xdf\x92\xe0\x92\xe1\x92\xe2\xb6\xde\xca\xda\xb5\xf4\xde\xe5\x92\xe3\xd5\xc6\x92\xe4\xde\xe1\xcc\xcd\xc6\xfe\x92\xe5\xc5\xc5\x92\xe6\x92\xe7\x92\xe8\xd2\xb4\x92\xe9\xbe\xf2\x92\xea\x92\xeb\x92\xec\x92\xed\x92\xee\x92\xef\x92\xf0\xc2\xd3\x92\xf1\xcc\xbd\xb3\xb8\x92\xf2\xbd\xd3\x92\xf3\xbf\xd8\xcd\xc6\xd1\xda\xb4\xeb\x92\xf4\xde\xe4\xde\xdd\xde\xe7\x92\xf5\xea\xfe\x92\xf6\x92\xf7\xc2\xb0\xde\xe2\x92\xf8\x92\xf9\xd6\xc0\xb5\xa7\x92\xfa\xb2\xf4\x92\xfb\xde\xe8\x92\xfc\xde\xf2\x92\xfd\x92\xfe\x93\x40\x93\x41\x93\x42\xde\xed\x93\x43\xde\xf1\x93\x44\x93\x45\xc8\xe0\x93\x46\x93\x47\x93\x48\xd7\xe1\xde\xef\xc3\xe8\xcc\xe1\x93\x49\xb2\xe5\x93\x4a\x93\x4b\x93\x4c\xd2\xbe\x93\x4d\x93\x4e\x93\x4f\x93\x50\x93\x51\x93\x52\x93\x53\xde\xee\x93\x54\xde\xeb\xce\xd5\x93\x55\xb4\xa7\x93\x56\x93\x57\x93\x58\x93\x59\x93\x5a\xbf\xab\xbe\xbe\x93\x5b\x93\x5c\xbd\xd2\x93\x5d\x93\x5e\x93\x5f\x93\x60\xde\xe9\x93\x61\xd4\xae\x93\x62\xde\xde\x93\x63\xde\xea\x93\x64\x93\x65\x93\x66\x93\x67\xc0\xbf\x93\x68\xde\xec", /* 6400 */ "\xb2\xf3\xb8\xe9\xc2\xa7\x93\x69\x93\x6a\xbd\xc1\x93\x6b\x93\x6c\x93\x6d\x93\x6e\x93\x6f\xde\xf5\xde\xf8\x93\x70\x93\x71\xb2\xab\xb4\xa4\x93\x72\x93\x73\xb4\xea\xc9\xa6\x93\x74\x93\x75\x93\x76\x93\x77\x93\x78\x93\x79\xde\xf6\xcb\xd1\x93\x7a\xb8\xe3\x93\x7b\xde\xf7\xde\xfa\x93\x7c\x93\x7d\x93\x7e\x93\x80\xde\xf9\x93\x81\x93\x82\x93\x83\xcc\xc2\x93\x84\xb0\xe1\xb4\xee\x93\x85\x93\x86\x93\x87\x93\x88\x93\x89\x93\x8a\xe5\xba\x93\x8b\x93\x8c\x93\x8d\x93\x8e\x93\x8f\xd0\xaf\x93\x90\x93\x91\xb2\xeb\x93\x92\xeb\xa1\x93\x93\xde\xf4\x93\x94\x93\x95\xc9\xe3\xde\xf3\xb0\xda\xd2\xa1\xb1\xf7\x93\x96\xcc\xaf\x93\x97\x93\x98\x93\x99\x93\x9a\x93\x9b\x93\x9c\x93\x9d\xde\xf0\x93\x9e\xcb\xa4\x93\x9f\x93\xa0\x93\xa1\xd5\xaa\x93\xa2\x93\xa3\x93\xa4\x93\xa5\x93\xa6\xde\xfb\x93\xa7\x93\xa8\x93\xa9\x93\xaa\x93\xab\x93\xac\x93\xad\x93\xae\xb4\xdd\x93\xaf\xc4\xa6\x93\xb0\x93\xb1\x93\xb2\xde\xfd\x93\xb3\x93\xb4\x93\xb5\x93\xb6\x93\xb7\x93\xb8\x93\xb9\x93\xba\x93\xbb\x93\xbc\xc3\xfe\xc4\xa1\xdf\xa1\x93\xbd\x93\xbe\x93\xbf\x93\xc0\x93\xc1", /* 6480 */ "\x93\xc2\x93\xc3\xc1\xcc\x93\xc4\xde\xfc\xbe\xef\x93\xc5\xc6\xb2\x93\xc6\x93\xc7\x93\xc8\x93\xc9\x93\xca\x93\xcb\x93\xcc\x93\xcd\x93\xce\xb3\xc5\xc8\xf6\x93\xcf\x93\xd0\xcb\xba\xde\xfe\x93\xd1\x93\xd2\xdf\xa4\x93\xd3\x93\xd4\x93\xd5\x93\xd6\xd7\xb2\x93\xd7\x93\xd8\x93\xd9\x93\xda\x93\xdb\xb3\xb7\x93\xdc\x93\xdd\x93\xde\x93\xdf\xc1\xc3\x93\xe0\x93\xe1\xc7\xcb\xb2\xa5\xb4\xe9\x93\xe2\xd7\xab\x93\xe3\x93\xe4\x93\xe5\x93\xe6\xc4\xec\x93\xe7\xdf\xa2\xdf\xa3\x93\xe8\xdf\xa5\x93\xe9\xba\xb3\x93\xea\x93\xeb\x93\xec\xdf\xa6\x93\xed\xc0\xde\x93\xee\x93\xef\xc9\xc3\x93\xf0\x93\xf1\x93\xf2\x93\xf3\x93\xf4\x93\xf5\x93\xf6\xb2\xd9\xc7\xe6\x93\xf7\xdf\xa7\x93\xf8\xc7\xdc\x93\xf9\x93\xfa\x93\xfb\x93\xfc\xdf\xa8\xeb\xa2\x93\xfd\x93\xfe\x94\x40\x94\x41\x94\x42\xcb\xd3\x94\x43\x94\x44\x94\x45\xdf\xaa\x94\x46\xdf\xa9\x94\x47\xb2\xc1\x94\x48\x94\x49\x94\x4a\x94\x4b\x94\x4c\x94\x4d\x94\x4e\x94\x4f\x94\x50\x94\x51\x94\x52\x94\x53\x94\x54\x94\x55\x94\x56\x94\x57\x94\x58\x94\x59\x94\x5a\x94\x5b\x94\x5c\x94\x5d\x94\x5e\x94\x5f\x94\x60", /* 6500 */ "\xc5\xca\x94\x61\x94\x62\x94\x63\x94\x64\x94\x65\x94\x66\x94\x67\x94\x68\xdf\xab\x94\x69\x94\x6a\x94\x6b\x94\x6c\x94\x6d\x94\x6e\x94\x6f\x94\x70\xd4\xdc\x94\x71\x94\x72\x94\x73\x94\x74\x94\x75\xc8\xc1\x94\x76\x94\x77\x94\x78\x94\x79\x94\x7a\x94\x7b\x94\x7c\x94\x7d\x94\x7e\x94\x80\x94\x81\x94\x82\xdf\xac\x94\x83\x94\x84\x94\x85\x94\x86\x94\x87\xbe\xf0\x94\x88\x94\x89\xdf\xad\xd6\xa7\x94\x8a\x94\x8b\x94\x8c\x94\x8d\xea\xb7\xeb\xb6\xca\xd5\x94\x8e\xd8\xfc\xb8\xc4\x94\x8f\xb9\xa5\x94\x90\x94\x91\xb7\xc5\xd5\xfe\x94\x92\x94\x93\x94\x94\x94\x95\x94\x96\xb9\xca\x94\x97\x94\x98\xd0\xa7\xf4\xcd\x94\x99\x94\x9a\xb5\xd0\x94\x9b\x94\x9c\xc3\xf4\x94\x9d\xbe\xc8\x94\x9e\x94\x9f\x94\xa0\xeb\xb7\xb0\xbd\x94\xa1\x94\xa2\xbd\xcc\x94\xa3\xc1\xb2\x94\xa4\xb1\xd6\xb3\xa8\x94\xa5\x94\xa6\x94\xa7\xb8\xd2\xc9\xa2\x94\xa8\x94\xa9\xb6\xd8\x94\xaa\x94\xab\x94\xac\x94\xad\xeb\xb8\xbe\xb4\x94\xae\x94\xaf\x94\xb0\xca\xfd\x94\xb1\xc7\xc3\x94\xb2\xd5\xfb\x94\xb3\x94\xb4\xb7\xf3\x94\xb5\x94\xb6\x94\xb7\x94\xb8\x94\xb9\x94\xba\x94\xbb\x94\xbc", /* 6580 */ "\x94\xbd\x94\xbe\x94\xbf\x94\xc0\x94\xc1\x94\xc2\x94\xc3\xce\xc4\x94\xc4\x94\xc5\x94\xc6\xd5\xab\xb1\xf3\x94\xc7\x94\xc8\x94\xc9\xec\xb3\xb0\xdf\x94\xca\xec\xb5\x94\xcb\x94\xcc\x94\xcd\xb6\xb7\x94\xce\xc1\xcf\x94\xcf\xf5\xfa\xd0\xb1\x94\xd0\x94\xd1\xd5\xe5\x94\xd2\xce\xd3\x94\xd3\x94\xd4\xbd\xef\xb3\xe2\x94\xd5\xb8\xab\x94\xd6\xd5\xb6\x94\xd7\xed\xbd\x94\xd8\xb6\xcf\x94\xd9\xcb\xb9\xd0\xc2\x94\xda\x94\xdb\x94\xdc\x94\xdd\x94\xde\x94\xdf\x94\xe0\x94\xe1\xb7\xbd\x94\xe2\x94\xe3\xec\xb6\xca\xa9\x94\xe4\x94\xe5\x94\xe6\xc5\xd4\x94\xe7\xec\xb9\xec\xb8\xc2\xc3\xec\xb7\x94\xe8\x94\xe9\x94\xea\x94\xeb\xd0\xfd\xec\xba\x94\xec\xec\xbb\xd7\xe5\x94\xed\x94\xee\xec\xbc\x94\xef\x94\xf0\x94\xf1\xec\xbd\xc6\xec\x94\xf2\x94\xf3\x94\xf4\x94\xf5\x94\xf6\x94\xf7\x94\xf8\x94\xf9\xce\xde\x94\xfa\xbc\xc8\x94\xfb\x94\xfc\xc8\xd5\xb5\xa9\xbe\xc9\xd6\xbc\xd4\xe7\x94\xfd\x94\xfe\xd1\xae\xd0\xf1\xea\xb8\xea\xb9\xea\xba\xba\xb5\x95\x40\x95\x41\x95\x42\x95\x43\xca\xb1\xbf\xf5\x95\x44\x95\x45\xcd\xfa\x95\x46\x95\x47\x95\x48\x95\x49\x95\x4a", /* 6600 */ "\xea\xc0\x95\x4b\xb0\xba\xea\xbe\x95\x4c\x95\x4d\xc0\xa5\x95\x4e\x95\x4f\x95\x50\xea\xbb\x95\x51\xb2\xfd\x95\x52\xc3\xf7\xbb\xe8\x95\x53\x95\x54\x95\x55\xd2\xd7\xce\xf4\xea\xbf\x95\x56\x95\x57\x95\x58\xea\xbc\x95\x59\x95\x5a\x95\x5b\xea\xc3\x95\x5c\xd0\xc7\xd3\xb3\x95\x5d\x95\x5e\x95\x5f\x95\x60\xb4\xba\x95\x61\xc3\xc1\xd7\xf2\x95\x62\x95\x63\x95\x64\x95\x65\xd5\xd1\x95\x66\xca\xc7\x95\x67\xea\xc5\x95\x68\x95\x69\xea\xc4\xea\xc7\xea\xc6\x95\x6a\x95\x6b\x95\x6c\x95\x6d\x95\x6e\xd6\xe7\x95\x6f\xcf\xd4\x95\x70\x95\x71\xea\xcb\x95\x72\xbb\xce\x95\x73\x95\x74\x95\x75\x95\x76\x95\x77\x95\x78\x95\x79\xbd\xfa\xc9\xce\x95\x7a\x95\x7b\xea\xcc\x95\x7c\x95\x7d\xc9\xb9\xcf\xfe\xea\xca\xd4\xce\xea\xcd\xea\xcf\x95\x7e\x95\x80\xcd\xed\x95\x81\x95\x82\x95\x83\x95\x84\xea\xc9\x95\x85\xea\xce\x95\x86\x95\x87\xce\xee\x95\x88\xbb\xde\x95\x89\xb3\xbf\x95\x8a\x95\x8b\x95\x8c\x95\x8d\x95\x8e\xc6\xd5\xbe\xb0\xce\xfa\x95\x8f\x95\x90\x95\x91\xc7\xe7\x95\x92\xbe\xa7\xea\xd0\x95\x93\x95\x94\xd6\xc7\x95\x95\x95\x96\x95\x97\xc1\xc0\x95\x98", /* 6680 */ "\x95\x99\x95\x9a\xd4\xdd\x95\x9b\xea\xd1\x95\x9c\x95\x9d\xcf\xbe\x95\x9e\x95\x9f\x95\xa0\x95\xa1\xea\xd2\x95\xa2\x95\xa3\x95\xa4\x95\xa5\xca\xee\x95\xa6\x95\xa7\x95\xa8\x95\xa9\xc5\xaf\xb0\xb5\x95\xaa\x95\xab\x95\xac\x95\xad\x95\xae\xea\xd4\x95\xaf\x95\xb0\x95\xb1\x95\xb2\x95\xb3\x95\xb4\x95\xb5\x95\xb6\x95\xb7\xea\xd3\xf4\xdf\x95\xb8\x95\xb9\x95\xba\x95\xbb\x95\xbc\xc4\xba\x95\xbd\x95\xbe\x95\xbf\x95\xc0\x95\xc1\xb1\xa9\x95\xc2\x95\xc3\x95\xc4\x95\xc5\xe5\xdf\x95\xc6\x95\xc7\x95\xc8\x95\xc9\xea\xd5\x95\xca\x95\xcb\x95\xcc\x95\xcd\x95\xce\x95\xcf\x95\xd0\x95\xd1\x95\xd2\x95\xd3\x95\xd4\x95\xd5\x95\xd6\x95\xd7\x95\xd8\x95\xd9\x95\xda\x95\xdb\x95\xdc\x95\xdd\x95\xde\x95\xdf\x95\xe0\x95\xe1\x95\xe2\x95\xe3\xca\xef\x95\xe4\xea\xd6\xea\xd7\xc6\xd8\x95\xe5\x95\xe6\x95\xe7\x95\xe8\x95\xe9\x95\xea\x95\xeb\x95\xec\xea\xd8\x95\xed\x95\xee\xea\xd9\x95\xef\x95\xf0\x95\xf1\x95\xf2\x95\xf3\x95\xf4\xd4\xbb\x95\xf5\xc7\xfa\xd2\xb7\xb8\xfc\x95\xf6\x95\xf7\xea\xc2\x95\xf8\xb2\xdc\x95\xf9\x95\xfa\xc2\xfc\x95\xfb\xd4\xf8\xcc\xe6", /* 6700 */ "\xd7\xee\x95\xfc\x95\xfd\x95\xfe\x96\x40\x96\x41\x96\x42\x96\x43\xd4\xc2\xd3\xd0\xeb\xc3\xc5\xf3\x96\x44\xb7\xfe\x96\x45\x96\x46\xeb\xd4\x96\x47\x96\x48\x96\x49\xcb\xb7\xeb\xde\x96\x4a\xc0\xca\x96\x4b\x96\x4c\x96\x4d\xcd\xfb\x96\x4e\xb3\xaf\x96\x4f\xc6\xda\x96\x50\x96\x51\x96\x52\x96\x53\x96\x54\x96\x55\xeb\xfc\x96\x56\xc4\xbe\x96\x57\xce\xb4\xc4\xa9\xb1\xbe\xd4\xfd\x96\x58\xca\xf5\x96\x59\xd6\xec\x96\x5a\x96\x5b\xc6\xd3\xb6\xe4\x96\x5c\x96\x5d\x96\x5e\x96\x5f\xbb\xfa\x96\x60\x96\x61\xd0\xe0\x96\x62\x96\x63\xc9\xb1\x96\x64\xd4\xd3\xc8\xa8\x96\x65\x96\x66\xb8\xcb\x96\x67\xe8\xbe\xc9\xbc\x96\x68\x96\x69\xe8\xbb\x96\x6a\xc0\xee\xd0\xd3\xb2\xc4\xb4\xe5\x96\x6b\xe8\xbc\x96\x6c\x96\x6d\xd5\xc8\x96\x6e\x96\x6f\x96\x70\x96\x71\x96\x72\xb6\xc5\x96\x73\xe8\xbd\xca\xf8\xb8\xdc\xcc\xf5\x96\x74\x96\x75\x96\x76\xc0\xb4\x96\x77\x96\x78\xd1\xee\xe8\xbf\xe8\xc2\x96\x79\x96\x7a\xba\xbc\x96\x7b\xb1\xad\xbd\xdc\x96\x7c\xea\xbd\xe8\xc3\x96\x7d\xe8\xc6\x96\x7e\xe8\xcb\x96\x80\x96\x81\x96\x82\x96\x83\xe8\xcc\x96\x84\xcb\xc9\xb0\xe5", /* 6780 */ "\x96\x85\xbc\xab\x96\x86\x96\x87\xb9\xb9\x96\x88\x96\x89\xe8\xc1\x96\x8a\xcd\xf7\x96\x8b\xe8\xca\x96\x8c\x96\x8d\x96\x8e\x96\x8f\xce\xf6\x96\x90\x96\x91\x96\x92\x96\x93\xd5\xed\x96\x94\xc1\xd6\xe8\xc4\x96\x95\xc3\xb6\x96\x96\xb9\xfb\xd6\xa6\xe8\xc8\x96\x97\x96\x98\x96\x99\xca\xe0\xd4\xe6\x96\x9a\xe8\xc0\x96\x9b\xe8\xc5\xe8\xc7\x96\x9c\xc7\xb9\xb7\xe3\x96\x9d\xe8\xc9\x96\x9e\xbf\xdd\xe8\xd2\x96\x9f\x96\xa0\xe8\xd7\x96\xa1\xe8\xd5\xbc\xdc\xbc\xcf\xe8\xdb\x96\xa2\x96\xa3\x96\xa4\x96\xa5\x96\xa6\x96\xa7\x96\xa8\x96\xa9\xe8\xde\x96\xaa\xe8\xda\xb1\xfa\x96\xab\x96\xac\x96\xad\x96\xae\x96\xaf\x96\xb0\x96\xb1\x96\xb2\x96\xb3\x96\xb4\xb0\xd8\xc4\xb3\xb8\xcc\xc6\xe2\xc8\xbe\xc8\xe1\x96\xb5\x96\xb6\x96\xb7\xe8\xcf\xe8\xd4\xe8\xd6\x96\xb8\xb9\xf1\xe8\xd8\xd7\xf5\x96\xb9\xc4\xfb\x96\xba\xe8\xdc\x96\xbb\x96\xbc\xb2\xe9\x96\xbd\x96\xbe\x96\xbf\xe8\xd1\x96\xc0\x96\xc1\xbc\xed\x96\xc2\x96\xc3\xbf\xc2\xe8\xcd\xd6\xf9\x96\xc4\xc1\xf8\xb2\xf1\x96\xc5\x96\xc6\x96\xc7\x96\xc8\x96\xc9\x96\xca\x96\xcb\x96\xcc\xe8\xdf\x96\xcd\xca\xc1", /* 6800 */ "\xe8\xd9\x96\xce\x96\xcf\x96\xd0\x96\xd1\xd5\xa4\x96\xd2\xb1\xea\xd5\xbb\xe8\xce\xe8\xd0\xb6\xb0\xe8\xd3\x96\xd3\xe8\xdd\xc0\xb8\x96\xd4\xca\xf7\x96\xd5\xcb\xa8\x96\xd6\x96\xd7\xc6\xdc\xc0\xf5\x96\xd8\x96\xd9\x96\xda\x96\xdb\x96\xdc\xe8\xe9\x96\xdd\x96\xde\x96\xdf\xd0\xa3\x96\xe0\x96\xe1\x96\xe2\x96\xe3\x96\xe4\x96\xe5\x96\xe6\xe8\xf2\xd6\xea\x96\xe7\x96\xe8\x96\xe9\x96\xea\x96\xeb\x96\xec\x96\xed\xe8\xe0\xe8\xe1\x96\xee\x96\xef\x96\xf0\xd1\xf9\xba\xcb\xb8\xf9\x96\xf1\x96\xf2\xb8\xf1\xd4\xd4\xe8\xef\x96\xf3\xe8\xee\xe8\xec\xb9\xf0\xcc\xd2\xe8\xe6\xce\xa6\xbf\xf2\x96\xf4\xb0\xb8\xe8\xf1\xe8\xf0\x96\xf5\xd7\xc0\x96\xf6\xe8\xe4\x96\xf7\xcd\xa9\xc9\xa3\x96\xf8\xbb\xb8\xbd\xdb\xe8\xea\x96\xf9\x96\xfa\x96\xfb\x96\xfc\x96\xfd\x96\xfe\x97\x40\x97\x41\x97\x42\x97\x43\xe8\xe2\xe8\xe3\xe8\xe5\xb5\xb5\xe8\xe7\xc7\xc5\xe8\xeb\xe8\xed\xbd\xb0\xd7\xae\x97\x44\xe8\xf8\x97\x45\x97\x46\x97\x47\x97\x48\x97\x49\x97\x4a\x97\x4b\x97\x4c\xe8\xf5\x97\x4d\xcd\xb0\xe8\xf6\x97\x4e\x97\x4f\x97\x50\x97\x51\x97\x52\x97\x53\x97\x54\x97\x55", /* 6880 */ "\x97\x56\xc1\xba\x97\x57\xe8\xe8\x97\x58\xc3\xb7\xb0\xf0\x97\x59\x97\x5a\x97\x5b\x97\x5c\x97\x5d\x97\x5e\x97\x5f\x97\x60\xe8\xf4\x97\x61\x97\x62\x97\x63\xe8\xf7\x97\x64\x97\x65\x97\x66\xb9\xa3\x97\x67\x97\x68\x97\x69\x97\x6a\x97\x6b\x97\x6c\x97\x6d\x97\x6e\x97\x6f\x97\x70\xc9\xd2\x97\x71\x97\x72\x97\x73\xc3\xce\xce\xe0\xc0\xe6\x97\x74\x97\x75\x97\x76\x97\x77\xcb\xf3\x97\x78\xcc\xdd\xd0\xb5\x97\x79\x97\x7a\xca\xe1\x97\x7b\xe8\xf3\x97\x7c\x97\x7d\x97\x7e\x97\x80\x97\x81\x97\x82\x97\x83\x97\x84\x97\x85\x97\x86\xbc\xec\x97\x87\xe8\xf9\x97\x88\x97\x89\x97\x8a\x97\x8b\x97\x8c\x97\x8d\xc3\xde\x97\x8e\xc6\xe5\x97\x8f\xb9\xf7\x97\x90\x97\x91\x97\x92\x97\x93\xb0\xf4\x97\x94\x97\x95\xd7\xd8\x97\x96\x97\x97\xbc\xac\x97\x98\xc5\xef\x97\x99\x97\x9a\x97\x9b\x97\x9c\x97\x9d\xcc\xc4\x97\x9e\x97\x9f\xe9\xa6\x97\xa0\x97\xa1\x97\xa2\x97\xa3\x97\xa4\x97\xa5\x97\xa6\x97\xa7\x97\xa8\x97\xa9\xc9\xad\x97\xaa\xe9\xa2\xc0\xe2\x97\xab\x97\xac\x97\xad\xbf\xc3\x97\xae\x97\xaf\x97\xb0\xe8\xfe\xb9\xd7\x97\xb1\xe8\xfb\x97\xb2\x97\xb3\x97\xb4", /* 6900 */ "\x97\xb5\xe9\xa4\x97\xb6\x97\xb7\x97\xb8\xd2\xce\x97\xb9\x97\xba\x97\xbb\x97\xbc\x97\xbd\xe9\xa3\x97\xbe\xd6\xb2\xd7\xb5\x97\xbf\xe9\xa7\x97\xc0\xbd\xb7\x97\xc1\x97\xc2\x97\xc3\x97\xc4\x97\xc5\x97\xc6\x97\xc7\x97\xc8\x97\xc9\x97\xca\x97\xcb\x97\xcc\xe8\xfc\xe8\xfd\x97\xcd\x97\xce\x97\xcf\xe9\xa1\x97\xd0\x97\xd1\x97\xd2\x97\xd3\x97\xd4\x97\xd5\x97\xd6\x97\xd7\xcd\xd6\x97\xd8\x97\xd9\xd2\xac\x97\xda\x97\xdb\x97\xdc\xe9\xb2\x97\xdd\x97\xde\x97\xdf\x97\xe0\xe9\xa9\x97\xe1\x97\xe2\x97\xe3\xb4\xaa\x97\xe4\xb4\xbb\x97\xe5\x97\xe6\xe9\xab\x97\xe7\x97\xe8\x97\xe9\x97\xea\x97\xeb\x97\xec\x97\xed\x97\xee\x97\xef\x97\xf0\x97\xf1\x97\xf2\x97\xf3\x97\xf4\x97\xf5\x97\xf6\x97\xf7\xd0\xa8\x97\xf8\x97\xf9\xe9\xa5\x97\xfa\x97\xfb\xb3\xfe\x97\xfc\x97\xfd\xe9\xac\xc0\xe3\x97\xfe\xe9\xaa\x98\x40\x98\x41\xe9\xb9\x98\x42\x98\x43\xe9\xb8\x98\x44\x98\x45\x98\x46\x98\x47\xe9\xae\x98\x48\x98\x49\xe8\xfa\x98\x4a\x98\x4b\xe9\xa8\x98\x4c\x98\x4d\x98\x4e\x98\x4f\x98\x50\xbf\xac\xe9\xb1\xe9\xba\x98\x51\x98\x52\xc2\xa5\x98\x53\x98\x54\x98\x55", /* 6980 */ "\xe9\xaf\x98\x56\xb8\xc5\x98\x57\xe9\xad\x98\x58\xd3\xdc\xe9\xb4\xe9\xb5\xe9\xb7\x98\x59\x98\x5a\x98\x5b\xe9\xc7\x98\x5c\x98\x5d\x98\x5e\x98\x5f\x98\x60\x98\x61\xc0\xc6\xe9\xc5\x98\x62\x98\x63\xe9\xb0\x98\x64\x98\x65\xe9\xbb\xb0\xf1\x98\x66\x98\x67\x98\x68\x98\x69\x98\x6a\x98\x6b\x98\x6c\x98\x6d\x98\x6e\x98\x6f\xe9\xbc\xd5\xa5\x98\x70\x98\x71\xe9\xbe\x98\x72\xe9\xbf\x98\x73\x98\x74\x98\x75\xe9\xc1\x98\x76\x98\x77\xc1\xf1\x98\x78\x98\x79\xc8\xb6\x98\x7a\x98\x7b\x98\x7c\xe9\xbd\x98\x7d\x98\x7e\x98\x80\x98\x81\x98\x82\xe9\xc2\x98\x83\x98\x84\x98\x85\x98\x86\x98\x87\x98\x88\x98\x89\x98\x8a\xe9\xc3\x98\x8b\xe9\xb3\x98\x8c\xe9\xb6\x98\x8d\xbb\xb1\x98\x8e\x98\x8f\x98\x90\xe9\xc0\x98\x91\x98\x92\x98\x93\x98\x94\x98\x95\x98\x96\xbc\xf7\x98\x97\x98\x98\x98\x99\xe9\xc4\xe9\xc6\x98\x9a\x98\x9b\x98\x9c\x98\x9d\x98\x9e\x98\x9f\x98\xa0\x98\xa1\x98\xa2\x98\xa3\x98\xa4\x98\xa5\xe9\xca\x98\xa6\x98\xa7\x98\xa8\x98\xa9\xe9\xce\x98\xaa\x98\xab\x98\xac\x98\xad\x98\xae\x98\xaf\x98\xb0\x98\xb1\x98\xb2\x98\xb3\xb2\xdb\x98\xb4\xe9\xc8", /* 6a00 */ "\x98\xb5\x98\xb6\x98\xb7\x98\xb8\x98\xb9\x98\xba\x98\xbb\x98\xbc\x98\xbd\x98\xbe\xb7\xae\x98\xbf\x98\xc0\x98\xc1\x98\xc2\x98\xc3\x98\xc4\x98\xc5\x98\xc6\x98\xc7\x98\xc8\x98\xc9\x98\xca\xe9\xcb\xe9\xcc\x98\xcb\x98\xcc\x98\xcd\x98\xce\x98\xcf\x98\xd0\xd5\xc1\x98\xd1\xc4\xa3\x98\xd2\x98\xd3\x98\xd4\x98\xd5\x98\xd6\x98\xd7\xe9\xd8\x98\xd8\xba\xe1\x98\xd9\x98\xda\x98\xdb\x98\xdc\xe9\xc9\x98\xdd\xd3\xa3\x98\xde\x98\xdf\x98\xe0\xe9\xd4\x98\xe1\x98\xe2\x98\xe3\x98\xe4\x98\xe5\x98\xe6\x98\xe7\xe9\xd7\xe9\xd0\x98\xe8\x98\xe9\x98\xea\x98\xeb\x98\xec\xe9\xcf\x98\xed\x98\xee\xc7\xc1\x98\xef\x98\xf0\x98\xf1\x98\xf2\x98\xf3\x98\xf4\x98\xf5\x98\xf6\xe9\xd2\x98\xf7\x98\xf8\x98\xf9\x98\xfa\x98\xfb\x98\xfc\x98\xfd\xe9\xd9\xb3\xc8\x98\xfe\xe9\xd3\x99\x40\x99\x41\x99\x42\x99\x43\x99\x44\xcf\xf0\x99\x45\x99\x46\x99\x47\xe9\xcd\x99\x48\x99\x49\x99\x4a\x99\x4b\x99\x4c\x99\x4d\x99\x4e\x99\x4f\x99\x50\x99\x51\x99\x52\xb3\xf7\x99\x53\x99\x54\x99\x55\x99\x56\x99\x57\x99\x58\x99\x59\xe9\xd6\x99\x5a\x99\x5b\xe9\xda\x99\x5c\x99\x5d\x99\x5e", /* 6a80 */ "\xcc\xb4\x99\x5f\x99\x60\x99\x61\xcf\xad\x99\x62\x99\x63\x99\x64\x99\x65\x99\x66\x99\x67\x99\x68\x99\x69\x99\x6a\xe9\xd5\x99\x6b\xe9\xdc\xe9\xdb\x99\x6c\x99\x6d\x99\x6e\x99\x6f\x99\x70\xe9\xde\x99\x71\x99\x72\x99\x73\x99\x74\x99\x75\x99\x76\x99\x77\x99\x78\xe9\xd1\x99\x79\x99\x7a\x99\x7b\x99\x7c\x99\x7d\x99\x7e\x99\x80\x99\x81\xe9\xdd\x99\x82\xe9\xdf\xc3\xca\x99\x83\x99\x84\x99\x85\x99\x86\x99\x87\x99\x88\x99\x89\x99\x8a\x99\x8b\x99\x8c\x99\x8d\x99\x8e\x99\x8f\x99\x90\x99\x91\x99\x92\x99\x93\x99\x94\x99\x95\x99\x96\x99\x97\x99\x98\x99\x99\x99\x9a\x99\x9b\x99\x9c\x99\x9d\x99\x9e\x99\x9f\x99\xa0\x99\xa1\x99\xa2\x99\xa3\x99\xa4\x99\xa5\x99\xa6\x99\xa7\x99\xa8\x99\xa9\x99\xaa\x99\xab\x99\xac\x99\xad\x99\xae\x99\xaf\x99\xb0\x99\xb1\x99\xb2\x99\xb3\x99\xb4\x99\xb5\x99\xb6\x99\xb7\x99\xb8\x99\xb9\x99\xba\x99\xbb\x99\xbc\x99\xbd\x99\xbe\x99\xbf\x99\xc0\x99\xc1\x99\xc2\x99\xc3\x99\xc4\x99\xc5\x99\xc6\x99\xc7\x99\xc8\x99\xc9\x99\xca\x99\xcb\x99\xcc\x99\xcd\x99\xce\x99\xcf\x99\xd0\x99\xd1\x99\xd2\x99\xd3\x99\xd4\x99\xd5", /* 6b00 */ "\x99\xd6\x99\xd7\x99\xd8\x99\xd9\x99\xda\x99\xdb\x99\xdc\x99\xdd\x99\xde\x99\xdf\x99\xe0\x99\xe1\x99\xe2\x99\xe3\x99\xe4\x99\xe5\x99\xe6\x99\xe7\x99\xe8\x99\xe9\x99\xea\x99\xeb\x99\xec\x99\xed\x99\xee\x99\xef\x99\xf0\x99\xf1\x99\xf2\x99\xf3\x99\xf4\x99\xf5\xc7\xb7\xb4\xce\xbb\xb6\xd0\xc0\xec\xa3\x99\xf6\x99\xf7\xc5\xb7\x99\xf8\x99\xf9\x99\xfa\x99\xfb\x99\xfc\x99\xfd\x99\xfe\x9a\x40\x9a\x41\x9a\x42\xd3\xfb\x9a\x43\x9a\x44\x9a\x45\x9a\x46\xec\xa4\x9a\x47\xec\xa5\xc6\xdb\x9a\x48\x9a\x49\x9a\x4a\xbf\xee\x9a\x4b\x9a\x4c\x9a\x4d\x9a\x4e\xec\xa6\x9a\x4f\x9a\x50\xec\xa7\xd0\xaa\x9a\x51\xc7\xb8\x9a\x52\x9a\x53\xb8\xe8\x9a\x54\x9a\x55\x9a\x56\x9a\x57\x9a\x58\x9a\x59\x9a\x5a\x9a\x5b\x9a\x5c\x9a\x5d\x9a\x5e\x9a\x5f\xec\xa8\x9a\x60\x9a\x61\x9a\x62\x9a\x63\x9a\x64\x9a\x65\x9a\x66\x9a\x67\xd6\xb9\xd5\xfd\xb4\xcb\xb2\xbd\xce\xe4\xc6\xe7\x9a\x68\x9a\x69\xcd\xe1\x9a\x6a\x9a\x6b\x9a\x6c\x9a\x6d\x9a\x6e\x9a\x6f\x9a\x70\x9a\x71\x9a\x72\x9a\x73\x9a\x74\x9a\x75\x9a\x76\x9a\x77\xb4\xf5\x9a\x78\xcb\xc0\xbc\xdf\x9a\x79\x9a\x7a\x9a\x7b", /* 6b80 */ "\x9a\x7c\xe9\xe2\xe9\xe3\xd1\xea\xe9\xe5\x9a\x7d\xb4\xf9\xe9\xe4\x9a\x7e\xd1\xb3\xca\xe2\xb2\xd0\x9a\x80\xe9\xe8\x9a\x81\x9a\x82\x9a\x83\x9a\x84\xe9\xe6\xe9\xe7\x9a\x85\x9a\x86\xd6\xb3\x9a\x87\x9a\x88\x9a\x89\xe9\xe9\xe9\xea\x9a\x8a\x9a\x8b\x9a\x8c\x9a\x8d\x9a\x8e\xe9\xeb\x9a\x8f\x9a\x90\x9a\x91\x9a\x92\x9a\x93\x9a\x94\x9a\x95\x9a\x96\xe9\xec\x9a\x97\x9a\x98\x9a\x99\x9a\x9a\x9a\x9b\x9a\x9c\x9a\x9d\x9a\x9e\xec\xaf\xc5\xb9\xb6\xce\x9a\x9f\xd2\xf3\x9a\xa0\x9a\xa1\x9a\xa2\x9a\xa3\x9a\xa4\x9a\xa5\x9a\xa6\xb5\xee\x9a\xa7\xbb\xd9\xec\xb1\x9a\xa8\x9a\xa9\xd2\xe3\x9a\xaa\x9a\xab\x9a\xac\x9a\xad\x9a\xae\xce\xe3\x9a\xaf\xc4\xb8\x9a\xb0\xc3\xbf\x9a\xb1\x9a\xb2\xb6\xbe\xd8\xb9\xb1\xc8\xb1\xcf\xb1\xd1\xc5\xfe\x9a\xb3\xb1\xd0\x9a\xb4\xc3\xab\x9a\xb5\x9a\xb6\x9a\xb7\x9a\xb8\x9a\xb9\xd5\xb1\x9a\xba\x9a\xbb\x9a\xbc\x9a\xbd\x9a\xbe\x9a\xbf\x9a\xc0\x9a\xc1\xeb\xa4\xba\xc1\x9a\xc2\x9a\xc3\x9a\xc4\xcc\xba\x9a\xc5\x9a\xc6\x9a\xc7\xeb\xa5\x9a\xc8\xeb\xa7\x9a\xc9\x9a\xca\x9a\xcb\xeb\xa8\x9a\xcc\x9a\xcd\x9a\xce\xeb\xa6\x9a\xcf\x9a\xd0", /* 6c00 */ "\x9a\xd1\x9a\xd2\x9a\xd3\x9a\xd4\x9a\xd5\xeb\xa9\xeb\xab\xeb\xaa\x9a\xd6\x9a\xd7\x9a\xd8\x9a\xd9\x9a\xda\xeb\xac\x9a\xdb\xca\xcf\xd8\xb5\xc3\xf1\x9a\xdc\xc3\xa5\xc6\xf8\xeb\xad\xc4\xca\x9a\xdd\xeb\xae\xeb\xaf\xeb\xb0\xb7\xd5\x9a\xde\x9a\xdf\x9a\xe0\xb7\xfa\x9a\xe1\xeb\xb1\xc7\xe2\x9a\xe2\xeb\xb3\x9a\xe3\xba\xa4\xd1\xf5\xb0\xb1\xeb\xb2\xeb\xb4\x9a\xe4\x9a\xe5\x9a\xe6\xb5\xaa\xc2\xc8\xc7\xe8\x9a\xe7\xeb\xb5\x9a\xe8\xcb\xae\xe3\xdf\x9a\xe9\x9a\xea\xd3\xc0\x9a\xeb\x9a\xec\x9a\xed\x9a\xee\xd9\xdb\x9a\xef\x9a\xf0\xcd\xa1\xd6\xad\xc7\xf3\x9a\xf1\x9a\xf2\x9a\xf3\xd9\xe0\xbb\xe3\x9a\xf4\xba\xba\xe3\xe2\x9a\xf5\x9a\xf6\x9a\xf7\x9a\xf8\x9a\xf9\xcf\xab\x9a\xfa\x9a\xfb\x9a\xfc\xe3\xe0\xc9\xc7\x9a\xfd\xba\xb9\x9a\xfe\x9b\x40\x9b\x41\xd1\xb4\xe3\xe1\xc8\xea\xb9\xaf\xbd\xad\xb3\xd8\xce\xdb\x9b\x42\x9b\x43\xcc\xc0\x9b\x44\x9b\x45\x9b\x46\xe3\xe8\xe3\xe9\xcd\xf4\x9b\x47\x9b\x48\x9b\x49\x9b\x4a\x9b\x4b\xcc\xad\x9b\x4c\xbc\xb3\x9b\x4d\xe3\xea\x9b\x4e\xe3\xeb\x9b\x4f\x9b\x50\xd0\xda\x9b\x51\x9b\x52\x9b\x53\xc6\xfb\xb7\xda\x9b\x54", /* 6c80 */ "\x9b\x55\xc7\xdf\xd2\xca\xce\xd6\x9b\x56\xe3\xe4\xe3\xec\x9b\x57\xc9\xf2\xb3\xc1\x9b\x58\x9b\x59\xe3\xe7\x9b\x5a\x9b\x5b\xc6\xe3\xe3\xe5\x9b\x5c\x9b\x5d\xed\xb3\xe3\xe6\x9b\x5e\x9b\x5f\x9b\x60\x9b\x61\xc9\xb3\x9b\x62\xc5\xe6\x9b\x63\x9b\x64\x9b\x65\xb9\xb5\x9b\x66\xc3\xbb\x9b\x67\xe3\xe3\xc5\xbd\xc1\xa4\xc2\xd9\xb2\xd7\x9b\x68\xe3\xed\xbb\xa6\xc4\xad\x9b\x69\xe3\xf0\xbe\xda\x9b\x6a\x9b\x6b\xe3\xfb\xe3\xf5\xba\xd3\x9b\x6c\x9b\x6d\x9b\x6e\x9b\x6f\xb7\xd0\xd3\xcd\x9b\x70\xd6\xce\xd5\xd3\xb9\xc1\xd5\xb4\xd1\xd8\x9b\x71\x9b\x72\x9b\x73\x9b\x74\xd0\xb9\xc7\xf6\x9b\x75\x9b\x76\x9b\x77\xc8\xaa\xb2\xb4\x9b\x78\xc3\xda\x9b\x79\x9b\x7a\x9b\x7b\xe3\xee\x9b\x7c\x9b\x7d\xe3\xfc\xe3\xef\xb7\xa8\xe3\xf7\xe3\xf4\x9b\x7e\x9b\x80\x9b\x81\xb7\xba\x9b\x82\x9b\x83\xc5\xa2\x9b\x84\xe3\xf6\xc5\xdd\xb2\xa8\xc6\xfc\x9b\x85\xc4\xe0\x9b\x86\x9b\x87\xd7\xa2\x9b\x88\xc0\xe1\xe3\xf9\x9b\x89\x9b\x8a\xe3\xfa\xe3\xfd\xcc\xa9\xe3\xf3\x9b\x8b\xd3\xbe\x9b\x8c\xb1\xc3\xed\xb4\xe3\xf1\xe3\xf2\x9b\x8d\xe3\xf8\xd0\xba\xc6\xc3\xd4\xf3\xe3\xfe\x9b\x8e", /* 6d00 */ "\x9b\x8f\xbd\xe0\x9b\x90\x9b\x91\xe4\xa7\x9b\x92\x9b\x93\xe4\xa6\x9b\x94\x9b\x95\x9b\x96\xd1\xf3\xe4\xa3\x9b\x97\xe4\xa9\x9b\x98\x9b\x99\x9b\x9a\xc8\xf7\x9b\x9b\x9b\x9c\x9b\x9d\x9b\x9e\xcf\xb4\x9b\x9f\xe4\xa8\xe4\xae\xc2\xe5\x9b\xa0\x9b\xa1\xb6\xb4\x9b\xa2\x9b\xa3\x9b\xa4\x9b\xa5\x9b\xa6\x9b\xa7\xbd\xf2\x9b\xa8\xe4\xa2\x9b\xa9\x9b\xaa\xba\xe9\xe4\xaa\x9b\xab\x9b\xac\xe4\xac\x9b\xad\x9b\xae\xb6\xfd\xd6\xde\xe4\xb2\x9b\xaf\xe4\xad\x9b\xb0\x9b\xb1\x9b\xb2\xe4\xa1\x9b\xb3\xbb\xee\xcd\xdd\xc7\xa2\xc5\xc9\x9b\xb4\x9b\xb5\xc1\xf7\x9b\xb6\xe4\xa4\x9b\xb7\xc7\xb3\xbd\xac\xbd\xbd\xe4\xa5\x9b\xb8\xd7\xc7\xb2\xe2\x9b\xb9\xe4\xab\xbc\xc3\xe4\xaf\x9b\xba\xbb\xeb\xe4\xb0\xc5\xa8\xe4\xb1\x9b\xbb\x9b\xbc\x9b\xbd\x9b\xbe\xd5\xe3\xbf\xa3\x9b\xbf\xe4\xba\x9b\xc0\xe4\xb7\x9b\xc1\xe4\xbb\x9b\xc2\x9b\xc3\xe4\xbd\x9b\xc4\x9b\xc5\xc6\xd6\x9b\xc6\x9b\xc7\xba\xc6\xc0\xcb\x9b\xc8\x9b\xc9\x9b\xca\xb8\xa1\xe4\xb4\x9b\xcb\x9b\xcc\x9b\xcd\x9b\xce\xd4\xa1\x9b\xcf\x9b\xd0\xba\xa3\xbd\xfe\x9b\xd1\x9b\xd2\x9b\xd3\xe4\xbc\x9b\xd4\x9b\xd5\x9b\xd6", /* 6d80 */ "\x9b\xd7\x9b\xd8\xcd\xbf\x9b\xd9\x9b\xda\xc4\xf9\x9b\xdb\x9b\xdc\xcf\xfb\xc9\xe6\x9b\xdd\x9b\xde\xd3\xbf\x9b\xdf\xcf\xd1\x9b\xe0\x9b\xe1\xe4\xb3\x9b\xe2\xe4\xb8\xe4\xb9\xcc\xe9\x9b\xe3\x9b\xe4\x9b\xe5\x9b\xe6\x9b\xe7\xcc\xce\x9b\xe8\xc0\xd4\xe4\xb5\xc1\xb0\xe4\xb6\xce\xd0\x9b\xe9\xbb\xc1\xb5\xd3\x9b\xea\xc8\xf3\xbd\xa7\xd5\xc7\xc9\xac\xb8\xa2\xe4\xca\x9b\xeb\x9b\xec\xe4\xcc\xd1\xc4\x9b\xed\x9b\xee\xd2\xba\x9b\xef\x9b\xf0\xba\xad\x9b\xf1\x9b\xf2\xba\xd4\x9b\xf3\x9b\xf4\x9b\xf5\x9b\xf6\x9b\xf7\x9b\xf8\xe4\xc3\xb5\xed\x9b\xf9\x9b\xfa\x9b\xfb\xd7\xcd\xe4\xc0\xcf\xfd\xe4\xbf\x9b\xfc\x9b\xfd\x9b\xfe\xc1\xdc\xcc\xca\x9c\x40\x9c\x41\x9c\x42\x9c\x43\xca\xe7\x9c\x44\x9c\x45\x9c\x46\x9c\x47\xc4\xd7\x9c\x48\xcc\xd4\xe4\xc8\x9c\x49\x9c\x4a\x9c\x4b\xe4\xc7\xe4\xc1\x9c\x4c\xe4\xc4\xb5\xad\x9c\x4d\x9c\x4e\xd3\xd9\x9c\x4f\xe4\xc6\x9c\x50\x9c\x51\x9c\x52\x9c\x53\xd2\xf9\xb4\xe3\x9c\x54\xbb\xb4\x9c\x55\x9c\x56\xc9\xee\x9c\x57\xb4\xbe\x9c\x58\x9c\x59\x9c\x5a\xbb\xec\x9c\x5b\xd1\xcd\x9c\x5c\xcc\xed\xed\xb5\x9c\x5d\x9c\x5e\x9c\x5f", /* 6e00 */ "\x9c\x60\x9c\x61\x9c\x62\x9c\x63\x9c\x64\xc7\xe5\x9c\x65\x9c\x66\x9c\x67\x9c\x68\xd4\xa8\x9c\x69\xe4\xcb\xd7\xd5\xe4\xc2\x9c\x6a\xbd\xa5\xe4\xc5\x9c\x6b\x9c\x6c\xd3\xe6\x9c\x6d\xe4\xc9\xc9\xf8\x9c\x6e\x9c\x6f\xe4\xbe\x9c\x70\x9c\x71\xd3\xe5\x9c\x72\x9c\x73\xc7\xfe\xb6\xc9\x9c\x74\xd4\xfc\xb2\xb3\xe4\xd7\x9c\x75\x9c\x76\x9c\x77\xce\xc2\x9c\x78\xe4\xcd\x9c\x79\xce\xbc\x9c\x7a\xb8\xdb\x9c\x7b\x9c\x7c\xe4\xd6\x9c\x7d\xbf\xca\x9c\x7e\x9c\x80\x9c\x81\xd3\xce\x9c\x82\xc3\xec\x9c\x83\x9c\x84\x9c\x85\x9c\x86\x9c\x87\x9c\x88\x9c\x89\x9c\x8a\xc5\xc8\xe4\xd8\x9c\x8b\x9c\x8c\x9c\x8d\x9c\x8e\x9c\x8f\x9c\x90\x9c\x91\x9c\x92\xcd\xc4\xe4\xcf\x9c\x93\x9c\x94\x9c\x95\x9c\x96\xe4\xd4\xe4\xd5\x9c\x97\xba\xfe\x9c\x98\xcf\xe6\x9c\x99\x9c\x9a\xd5\xbf\x9c\x9b\x9c\x9c\x9c\x9d\xe4\xd2\x9c\x9e\x9c\x9f\x9c\xa0\x9c\xa1\x9c\xa2\x9c\xa3\x9c\xa4\x9c\xa5\x9c\xa6\x9c\xa7\x9c\xa8\xe4\xd0\x9c\xa9\x9c\xaa\xe4\xce\x9c\xab\x9c\xac\x9c\xad\x9c\xae\x9c\xaf\x9c\xb0\x9c\xb1\x9c\xb2\x9c\xb3\x9c\xb4\x9c\xb5\x9c\xb6\x9c\xb7\x9c\xb8\x9c\xb9\xcd\xe5\xca\xaa", /* 6e80 */ "\x9c\xba\x9c\xbb\x9c\xbc\xc0\xa3\x9c\xbd\xbd\xa6\xe4\xd3\x9c\xbe\x9c\xbf\xb8\xc8\x9c\xc0\x9c\xc1\x9c\xc2\x9c\xc3\x9c\xc4\xe4\xe7\xd4\xb4\x9c\xc5\x9c\xc6\x9c\xc7\x9c\xc8\x9c\xc9\x9c\xca\x9c\xcb\xe4\xdb\x9c\xcc\x9c\xcd\x9c\xce\xc1\xef\x9c\xcf\x9c\xd0\xe4\xe9\x9c\xd1\x9c\xd2\xd2\xe7\x9c\xd3\x9c\xd4\xe4\xdf\x9c\xd5\xe4\xe0\x9c\xd6\x9c\xd7\xcf\xaa\x9c\xd8\x9c\xd9\x9c\xda\x9c\xdb\xcb\xdd\x9c\xdc\xe4\xda\xe4\xd1\x9c\xdd\xe4\xe5\x9c\xde\xc8\xdc\xe4\xe3\x9c\xdf\x9c\xe0\xc4\xe7\xe4\xe2\x9c\xe1\xe4\xe1\x9c\xe2\x9c\xe3\x9c\xe4\xb3\xfc\xe4\xe8\x9c\xe5\x9c\xe6\x9c\xe7\x9c\xe8\xb5\xe1\x9c\xe9\x9c\xea\x9c\xeb\xd7\xcc\x9c\xec\x9c\xed\x9c\xee\xe4\xe6\x9c\xef\xbb\xac\x9c\xf0\xd7\xd2\xcc\xcf\xeb\xf8\x9c\xf1\xe4\xe4\x9c\xf2\x9c\xf3\xb9\xf6\x9c\xf4\x9c\xf5\x9c\xf6\xd6\xcd\xe4\xd9\xe4\xdc\xc2\xfa\xe4\xde\x9c\xf7\xc2\xcb\xc0\xc4\xc2\xd0\x9c\xf8\xb1\xf5\xcc\xb2\x9c\xf9\x9c\xfa\x9c\xfb\x9c\xfc\x9c\xfd\x9c\xfe\x9d\x40\x9d\x41\x9d\x42\x9d\x43\xb5\xce\x9d\x44\x9d\x45\x9d\x46\x9d\x47\xe4\xef\x9d\x48\x9d\x49\x9d\x4a\x9d\x4b\x9d\x4c\x9d\x4d", /* 6f00 */ "\x9d\x4e\x9d\x4f\xc6\xaf\x9d\x50\x9d\x51\x9d\x52\xc6\xe1\x9d\x53\x9d\x54\xe4\xf5\x9d\x55\x9d\x56\x9d\x57\x9d\x58\x9d\x59\xc2\xa9\x9d\x5a\x9d\x5b\x9d\x5c\xc0\xec\xd1\xdd\xe4\xee\x9d\x5d\x9d\x5e\x9d\x5f\x9d\x60\x9d\x61\x9d\x62\x9d\x63\x9d\x64\x9d\x65\x9d\x66\xc4\xae\x9d\x67\x9d\x68\x9d\x69\xe4\xed\x9d\x6a\x9d\x6b\x9d\x6c\x9d\x6d\xe4\xf6\xe4\xf4\xc2\xfe\x9d\x6e\xe4\xdd\x9d\x6f\xe4\xf0\x9d\x70\xca\xfe\x9d\x71\xd5\xc4\x9d\x72\x9d\x73\xe4\xf1\x9d\x74\x9d\x75\x9d\x76\x9d\x77\x9d\x78\x9d\x79\x9d\x7a\xd1\xfa\x9d\x7b\x9d\x7c\x9d\x7d\x9d\x7e\x9d\x80\x9d\x81\x9d\x82\xe4\xeb\xe4\xec\x9d\x83\x9d\x84\x9d\x85\xe4\xf2\x9d\x86\xce\xab\x9d\x87\x9d\x88\x9d\x89\x9d\x8a\x9d\x8b\x9d\x8c\x9d\x8d\x9d\x8e\x9d\x8f\x9d\x90\xc5\xcb\x9d\x91\x9d\x92\x9d\x93\xc7\xb1\x9d\x94\xc2\xba\x9d\x95\x9d\x96\x9d\x97\xe4\xea\x9d\x98\x9d\x99\x9d\x9a\xc1\xca\x9d\x9b\x9d\x9c\x9d\x9d\x9d\x9e\x9d\x9f\x9d\xa0\xcc\xb6\xb3\xb1\x9d\xa1\x9d\xa2\x9d\xa3\xe4\xfb\x9d\xa4\xe4\xf3\x9d\xa5\x9d\xa6\x9d\xa7\xe4\xfa\x9d\xa8\xe4\xfd\x9d\xa9\xe4\xfc\x9d\xaa\x9d\xab\x9d\xac", /* 6f80 */ "\x9d\xad\x9d\xae\x9d\xaf\x9d\xb0\xb3\xce\x9d\xb1\x9d\xb2\x9d\xb3\xb3\xba\xe4\xf7\x9d\xb4\x9d\xb5\xe4\xf9\xe4\xf8\xc5\xec\x9d\xb6\x9d\xb7\x9d\xb8\x9d\xb9\x9d\xba\x9d\xbb\x9d\xbc\x9d\xbd\x9d\xbe\x9d\xbf\x9d\xc0\x9d\xc1\x9d\xc2\xc0\xbd\x9d\xc3\x9d\xc4\x9d\xc5\x9d\xc6\xd4\xe8\x9d\xc7\x9d\xc8\x9d\xc9\x9d\xca\x9d\xcb\xe5\xa2\x9d\xcc\x9d\xcd\x9d\xce\x9d\xcf\x9d\xd0\x9d\xd1\x9d\xd2\x9d\xd3\x9d\xd4\x9d\xd5\x9d\xd6\xb0\xc4\x9d\xd7\x9d\xd8\xe5\xa4\x9d\xd9\x9d\xda\xe5\xa3\x9d\xdb\x9d\xdc\x9d\xdd\x9d\xde\x9d\xdf\x9d\xe0\xbc\xa4\x9d\xe1\xe5\xa5\x9d\xe2\x9d\xe3\x9d\xe4\x9d\xe5\x9d\xe6\x9d\xe7\xe5\xa1\x9d\xe8\x9d\xe9\x9d\xea\x9d\xeb\x9d\xec\x9d\xed\x9d\xee\xe4\xfe\xb1\xf4\x9d\xef\x9d\xf0\x9d\xf1\x9d\xf2\x9d\xf3\x9d\xf4\x9d\xf5\x9d\xf6\x9d\xf7\x9d\xf8\x9d\xf9\xe5\xa8\x9d\xfa\xe5\xa9\xe5\xa6\x9d\xfb\x9d\xfc\x9d\xfd\x9d\xfe\x9e\x40\x9e\x41\x9e\x42\x9e\x43\x9e\x44\x9e\x45\x9e\x46\x9e\x47\xe5\xa7\xe5\xaa\x9e\x48\x9e\x49\x9e\x4a\x9e\x4b\x9e\x4c\x9e\x4d\x9e\x4e\x9e\x4f\x9e\x50\x9e\x51\x9e\x52\x9e\x53\x9e\x54\x9e\x55\x9e\x56\x9e\x57", /* 7000 */ "\x9e\x58\x9e\x59\x9e\x5a\x9e\x5b\x9e\x5c\x9e\x5d\x9e\x5e\x9e\x5f\x9e\x60\x9e\x61\x9e\x62\x9e\x63\x9e\x64\x9e\x65\x9e\x66\x9e\x67\x9e\x68\xc6\xd9\x9e\x69\x9e\x6a\x9e\x6b\x9e\x6c\x9e\x6d\x9e\x6e\x9e\x6f\x9e\x70\xe5\xab\xe5\xad\x9e\x71\x9e\x72\x9e\x73\x9e\x74\x9e\x75\x9e\x76\x9e\x77\xe5\xac\x9e\x78\x9e\x79\x9e\x7a\x9e\x7b\x9e\x7c\x9e\x7d\x9e\x7e\x9e\x80\x9e\x81\x9e\x82\x9e\x83\x9e\x84\x9e\x85\x9e\x86\x9e\x87\x9e\x88\x9e\x89\xe5\xaf\x9e\x8a\x9e\x8b\x9e\x8c\xe5\xae\x9e\x8d\x9e\x8e\x9e\x8f\x9e\x90\x9e\x91\x9e\x92\x9e\x93\x9e\x94\x9e\x95\x9e\x96\x9e\x97\x9e\x98\x9e\x99\x9e\x9a\x9e\x9b\x9e\x9c\x9e\x9d\x9e\x9e\xb9\xe0\x9e\x9f\x9e\xa0\xe5\xb0\x9e\xa1\x9e\xa2\x9e\xa3\x9e\xa4\x9e\xa5\x9e\xa6\x9e\xa7\x9e\xa8\x9e\xa9\x9e\xaa\x9e\xab\x9e\xac\x9e\xad\x9e\xae\xe5\xb1\x9e\xaf\x9e\xb0\x9e\xb1\x9e\xb2\x9e\xb3\x9e\xb4\x9e\xb5\x9e\xb6\x9e\xb7\x9e\xb8\x9e\xb9\x9e\xba\xbb\xf0\xec\xe1\xc3\xf0\x9e\xbb\xb5\xc6\xbb\xd2\x9e\xbc\x9e\xbd\x9e\xbe\x9e\xbf\xc1\xe9\xd4\xee\x9e\xc0\xbe\xc4\x9e\xc1\x9e\xc2\x9e\xc3\xd7\xc6\x9e\xc4\xd4\xd6\xb2\xd3", /* 7080 */ "\xec\xbe\x9e\xc5\x9e\xc6\x9e\xc7\x9e\xc8\xea\xc1\x9e\xc9\x9e\xca\x9e\xcb\xc2\xaf\xb4\xb6\x9e\xcc\x9e\xcd\x9e\xce\xd1\xd7\x9e\xcf\x9e\xd0\x9e\xd1\xb3\xb4\x9e\xd2\xc8\xb2\xbf\xbb\xec\xc0\x9e\xd3\x9e\xd4\xd6\xcb\x9e\xd5\x9e\xd6\xec\xbf\xec\xc1\x9e\xd7\x9e\xd8\x9e\xd9\x9e\xda\x9e\xdb\x9e\xdc\x9e\xdd\x9e\xde\x9e\xdf\x9e\xe0\x9e\xe1\x9e\xe2\x9e\xe3\xec\xc5\xbe\xe6\xcc\xbf\xc5\xda\xbe\xbc\x9e\xe4\xec\xc6\x9e\xe5\xb1\xfe\x9e\xe6\x9e\xe7\x9e\xe8\xec\xc4\xd5\xa8\xb5\xe3\x9e\xe9\xec\xc2\xc1\xb6\xb3\xe3\x9e\xea\x9e\xeb\xec\xc3\xcb\xb8\xc0\xc3\xcc\xfe\x9e\xec\x9e\xed\x9e\xee\x9e\xef\xc1\xd2\x9e\xf0\xec\xc8\x9e\xf1\x9e\xf2\x9e\xf3\x9e\xf4\x9e\xf5\x9e\xf6\x9e\xf7\x9e\xf8\x9e\xf9\x9e\xfa\x9e\xfb\x9e\xfc\x9e\xfd\xba\xe6\xc0\xd3\x9e\xfe\xd6\xf2\x9f\x40\x9f\x41\x9f\x42\xd1\xcc\x9f\x43\x9f\x44\x9f\x45\x9f\x46\xbf\xbe\x9f\x47\xb7\xb3\xc9\xd5\xec\xc7\xbb\xe2\x9f\x48\xcc\xcc\xbd\xfd\xc8\xc8\x9f\x49\xcf\xa9\x9f\x4a\x9f\x4b\x9f\x4c\x9f\x4d\x9f\x4e\x9f\x4f\x9f\x50\xcd\xe9\x9f\x51\xc5\xeb\x9f\x52\x9f\x53\x9f\x54\xb7\xe9\x9f\x55\x9f\x56", /* 7100 */ "\x9f\x57\x9f\x58\x9f\x59\x9f\x5a\x9f\x5b\x9f\x5c\x9f\x5d\x9f\x5e\x9f\x5f\xd1\xc9\xba\xb8\x9f\x60\x9f\x61\x9f\x62\x9f\x63\x9f\x64\xec\xc9\x9f\x65\x9f\x66\xec\xca\x9f\x67\xbb\xc0\xec\xcb\x9f\x68\xec\xe2\xb1\xba\xb7\xd9\x9f\x69\x9f\x6a\x9f\x6b\x9f\x6c\x9f\x6d\x9f\x6e\x9f\x6f\x9f\x70\x9f\x71\x9f\x72\x9f\x73\xbd\xb9\x9f\x74\x9f\x75\x9f\x76\x9f\x77\x9f\x78\x9f\x79\x9f\x7a\x9f\x7b\xec\xcc\xd1\xe6\xec\xcd\x9f\x7c\x9f\x7d\x9f\x7e\x9f\x80\xc8\xbb\x9f\x81\x9f\x82\x9f\x83\x9f\x84\x9f\x85\x9f\x86\x9f\x87\x9f\x88\x9f\x89\x9f\x8a\x9f\x8b\x9f\x8c\x9f\x8d\x9f\x8e\xec\xd1\x9f\x8f\x9f\x90\x9f\x91\x9f\x92\xec\xd3\x9f\x93\xbb\xcd\x9f\x94\xbc\xe5\x9f\x95\x9f\x96\x9f\x97\x9f\x98\x9f\x99\x9f\x9a\x9f\x9b\x9f\x9c\x9f\x9d\x9f\x9e\x9f\x9f\x9f\xa0\x9f\xa1\xec\xcf\x9f\xa2\xc9\xb7\x9f\xa3\x9f\xa4\x9f\xa5\x9f\xa6\x9f\xa7\xc3\xba\x9f\xa8\xec\xe3\xd5\xd5\xec\xd0\x9f\xa9\x9f\xaa\x9f\xab\x9f\xac\x9f\xad\xd6\xf3\x9f\xae\x9f\xaf\x9f\xb0\xec\xd2\xec\xce\x9f\xb1\x9f\xb2\x9f\xb3\x9f\xb4\xec\xd4\x9f\xb5\xec\xd5\x9f\xb6\x9f\xb7\xc9\xbf\x9f\xb8\x9f\xb9", /* 7180 */ "\x9f\xba\x9f\xbb\x9f\xbc\x9f\xbd\xcf\xa8\x9f\xbe\x9f\xbf\x9f\xc0\x9f\xc1\x9f\xc2\xd0\xdc\x9f\xc3\x9f\xc4\x9f\xc5\x9f\xc6\xd1\xac\x9f\xc7\x9f\xc8\x9f\xc9\x9f\xca\xc8\xdb\x9f\xcb\x9f\xcc\x9f\xcd\xec\xd6\xce\xf5\x9f\xce\x9f\xcf\x9f\xd0\x9f\xd1\x9f\xd2\xca\xec\xec\xda\x9f\xd3\x9f\xd4\x9f\xd5\x9f\xd6\x9f\xd7\x9f\xd8\x9f\xd9\xec\xd9\x9f\xda\x9f\xdb\x9f\xdc\xb0\xbe\x9f\xdd\x9f\xde\x9f\xdf\x9f\xe0\x9f\xe1\x9f\xe2\xec\xd7\x9f\xe3\xec\xd8\x9f\xe4\x9f\xe5\x9f\xe6\xec\xe4\x9f\xe7\x9f\xe8\x9f\xe9\x9f\xea\x9f\xeb\x9f\xec\x9f\xed\x9f\xee\x9f\xef\xc8\xbc\x9f\xf0\x9f\xf1\x9f\xf2\x9f\xf3\x9f\xf4\x9f\xf5\x9f\xf6\x9f\xf7\x9f\xf8\x9f\xf9\xc1\xc7\x9f\xfa\x9f\xfb\x9f\xfc\x9f\xfd\x9f\xfe\xec\xdc\xd1\xe0\xa0\x40\xa0\x41\xa0\x42\xa0\x43\xa0\x44\xa0\x45\xa0\x46\xa0\x47\xa0\x48\xa0\x49\xec\xdb\xa0\x4a\xa0\x4b\xa0\x4c\xa0\x4d\xd4\xef\xa0\x4e\xec\xdd\xa0\x4f\xa0\x50\xa0\x51\xa0\x52\xa0\x53\xa0\x54\xdb\xc6\xa0\x55\xa0\x56\xa0\x57\xa0\x58\xa0\x59\xa0\x5a\xa0\x5b\xa0\x5c\xa0\x5d\xa0\x5e\xec\xde\xa0\x5f\xa0\x60\xa0\x61\xa0\x62\xa0\x63\xa0\x64", /* 7200 */ "\xa0\x65\xa0\x66\xa0\x67\xa0\x68\xa0\x69\xa0\x6a\xb1\xac\xa0\x6b\xa0\x6c\xa0\x6d\xa0\x6e\xa0\x6f\xa0\x70\xa0\x71\xa0\x72\xa0\x73\xa0\x74\xa0\x75\xa0\x76\xa0\x77\xa0\x78\xa0\x79\xa0\x7a\xa0\x7b\xa0\x7c\xa0\x7d\xa0\x7e\xa0\x80\xa0\x81\xec\xdf\xa0\x82\xa0\x83\xa0\x84\xa0\x85\xa0\x86\xa0\x87\xa0\x88\xa0\x89\xa0\x8a\xa0\x8b\xec\xe0\xa0\x8c\xd7\xa6\xa0\x8d\xc5\xc0\xa0\x8e\xa0\x8f\xa0\x90\xeb\xbc\xb0\xae\xa0\x91\xa0\x92\xa0\x93\xbe\xf4\xb8\xb8\xd2\xaf\xb0\xd6\xb5\xf9\xa0\x94\xd8\xb3\xa0\x95\xcb\xac\xa0\x96\xe3\xdd\xa0\x97\xa0\x98\xa0\x99\xa0\x9a\xa0\x9b\xa0\x9c\xa0\x9d\xc6\xac\xb0\xe6\xa0\x9e\xa0\x9f\xa0\xa0\xc5\xc6\xeb\xb9\xa0\xa1\xa0\xa2\xa0\xa3\xa0\xa4\xeb\xba\xa0\xa5\xa0\xa6\xa0\xa7\xeb\xbb\xa0\xa8\xa0\xa9\xd1\xc0\xa0\xaa\xc5\xa3\xa0\xab\xea\xf2\xa0\xac\xc4\xb2\xa0\xad\xc4\xb5\xc0\xce\xa0\xae\xa0\xaf\xa0\xb0\xea\xf3\xc4\xc1\xa0\xb1\xce\xef\xa0\xb2\xa0\xb3\xa0\xb4\xa0\xb5\xea\xf0\xea\xf4\xa0\xb6\xa0\xb7\xc9\xfc\xa0\xb8\xa0\xb9\xc7\xa3\xa0\xba\xa0\xbb\xa0\xbc\xcc\xd8\xce\xfe\xa0\xbd\xa0\xbe\xa0\xbf\xea\xf5\xea\xf6", /* 7280 */ "\xcf\xac\xc0\xe7\xa0\xc0\xa0\xc1\xea\xf7\xa0\xc2\xa0\xc3\xa0\xc4\xa0\xc5\xa0\xc6\xb6\xbf\xea\xf8\xa0\xc7\xea\xf9\xa0\xc8\xea\xfa\xa0\xc9\xa0\xca\xea\xfb\xa0\xcb\xa0\xcc\xa0\xcd\xa0\xce\xa0\xcf\xa0\xd0\xa0\xd1\xa0\xd2\xa0\xd3\xa0\xd4\xa0\xd5\xa0\xd6\xea\xf1\xa0\xd7\xa0\xd8\xa0\xd9\xa0\xda\xa0\xdb\xa0\xdc\xa0\xdd\xa0\xde\xa0\xdf\xa0\xe0\xa0\xe1\xa0\xe2\xc8\xae\xe1\xeb\xa0\xe3\xb7\xb8\xe1\xec\xa0\xe4\xa0\xe5\xa0\xe6\xe1\xed\xa0\xe7\xd7\xb4\xe1\xee\xe1\xef\xd3\xcc\xa0\xe8\xa0\xe9\xa0\xea\xa0\xeb\xa0\xec\xa0\xed\xa0\xee\xe1\xf1\xbf\xf1\xe1\xf0\xb5\xd2\xa0\xef\xa0\xf0\xa0\xf1\xb1\xb7\xa0\xf2\xa0\xf3\xa0\xf4\xa0\xf5\xe1\xf3\xe1\xf2\xa0\xf6\xba\xfc\xa0\xf7\xe1\xf4\xa0\xf8\xa0\xf9\xa0\xfa\xa0\xfb\xb9\xb7\xa0\xfc\xbe\xd1\xa0\xfd\xa0\xfe\xaa\x40\xaa\x41\xc4\xfc\xaa\x42\xba\xdd\xbd\xc6\xaa\x43\xaa\x44\xaa\x45\xaa\x46\xaa\x47\xaa\x48\xe1\xf5\xe1\xf7\xaa\x49\xaa\x4a\xb6\xc0\xcf\xc1\xca\xa8\xe1\xf6\xd5\xf8\xd3\xfc\xe1\xf8\xe1\xfc\xe1\xf9\xaa\x4b\xaa\x4c\xe1\xfa\xc0\xea\xaa\x4d\xe1\xfe\xe2\xa1\xc0\xc7\xaa\x4e\xaa\x4f\xaa\x50", /* 7300 */ "\xaa\x51\xe1\xfb\xaa\x52\xe1\xfd\xaa\x53\xaa\x54\xaa\x55\xaa\x56\xaa\x57\xaa\x58\xe2\xa5\xaa\x59\xaa\x5a\xaa\x5b\xc1\xd4\xaa\x5c\xaa\x5d\xaa\x5e\xaa\x5f\xe2\xa3\xaa\x60\xe2\xa8\xb2\xfe\xe2\xa2\xaa\x61\xaa\x62\xaa\x63\xc3\xcd\xb2\xc2\xe2\xa7\xe2\xa6\xaa\x64\xaa\x65\xe2\xa4\xe2\xa9\xaa\x66\xaa\x67\xe2\xab\xaa\x68\xaa\x69\xaa\x6a\xd0\xc9\xd6\xed\xc3\xa8\xe2\xac\xaa\x6b\xcf\xd7\xaa\x6c\xaa\x6d\xe2\xae\xaa\x6e\xaa\x6f\xba\xef\xaa\x70\xaa\x71\xe9\xe0\xe2\xad\xe2\xaa\xaa\x72\xaa\x73\xaa\x74\xaa\x75\xbb\xab\xd4\xb3\xaa\x76\xaa\x77\xaa\x78\xaa\x79\xaa\x7a\xaa\x7b\xaa\x7c\xaa\x7d\xaa\x7e\xaa\x80\xaa\x81\xaa\x82\xaa\x83\xe2\xb0\xaa\x84\xaa\x85\xe2\xaf\xaa\x86\xe9\xe1\xaa\x87\xaa\x88\xaa\x89\xaa\x8a\xe2\xb1\xaa\x8b\xaa\x8c\xaa\x8d\xaa\x8e\xaa\x8f\xaa\x90\xaa\x91\xaa\x92\xe2\xb2\xaa\x93\xaa\x94\xaa\x95\xaa\x96\xaa\x97\xaa\x98\xaa\x99\xaa\x9a\xaa\x9b\xaa\x9c\xaa\x9d\xe2\xb3\xcc\xa1\xaa\x9e\xe2\xb4\xaa\x9f\xaa\xa0\xab\x40\xab\x41\xab\x42\xab\x43\xab\x44\xab\x45\xab\x46\xab\x47\xab\x48\xab\x49\xab\x4a\xab\x4b\xe2\xb5\xab\x4c", /* 7380 */ "\xab\x4d\xab\x4e\xab\x4f\xab\x50\xd0\xfe\xab\x51\xab\x52\xc2\xca\xab\x53\xd3\xf1\xab\x54\xcd\xf5\xab\x55\xab\x56\xe7\xe0\xab\x57\xab\x58\xe7\xe1\xab\x59\xab\x5a\xab\x5b\xab\x5c\xbe\xc1\xab\x5d\xab\x5e\xab\x5f\xab\x60\xc2\xea\xab\x61\xab\x62\xab\x63\xe7\xe4\xab\x64\xab\x65\xe7\xe3\xab\x66\xab\x67\xab\x68\xab\x69\xab\x6a\xab\x6b\xcd\xe6\xab\x6c\xc3\xb5\xab\x6d\xab\x6e\xe7\xe2\xbb\xb7\xcf\xd6\xab\x6f\xc1\xe1\xe7\xe9\xab\x70\xab\x71\xab\x72\xe7\xe8\xab\x73\xab\x74\xe7\xf4\xb2\xa3\xab\x75\xab\x76\xab\x77\xab\x78\xe7\xea\xab\x79\xe7\xe6\xab\x7a\xab\x7b\xab\x7c\xab\x7d\xab\x7e\xe7\xec\xe7\xeb\xc9\xba\xab\x80\xab\x81\xd5\xe4\xab\x82\xe7\xe5\xb7\xa9\xe7\xe7\xab\x83\xab\x84\xab\x85\xab\x86\xab\x87\xab\x88\xab\x89\xe7\xee\xab\x8a\xab\x8b\xab\x8c\xab\x8d\xe7\xf3\xab\x8e\xd6\xe9\xab\x8f\xab\x90\xab\x91\xab\x92\xe7\xed\xab\x93\xe7\xf2\xab\x94\xe7\xf1\xab\x95\xab\x96\xab\x97\xb0\xe0\xab\x98\xab\x99\xab\x9a\xab\x9b\xe7\xf5\xab\x9c\xab\x9d\xab\x9e\xab\x9f\xab\xa0\xac\x40\xac\x41\xac\x42\xac\x43\xac\x44\xac\x45\xac\x46\xac\x47", /* 7400 */ "\xac\x48\xac\x49\xac\x4a\xc7\xf2\xac\x4b\xc0\xc5\xc0\xed\xac\x4c\xac\x4d\xc1\xf0\xe7\xf0\xac\x4e\xac\x4f\xac\x50\xac\x51\xe7\xf6\xcb\xf6\xac\x52\xac\x53\xac\x54\xac\x55\xac\x56\xac\x57\xac\x58\xac\x59\xac\x5a\xe8\xa2\xe8\xa1\xac\x5b\xac\x5c\xac\x5d\xac\x5e\xac\x5f\xac\x60\xd7\xc1\xac\x61\xac\x62\xe7\xfa\xe7\xf9\xac\x63\xe7\xfb\xac\x64\xe7\xf7\xac\x65\xe7\xfe\xac\x66\xe7\xfd\xac\x67\xe7\xfc\xac\x68\xac\x69\xc1\xd5\xc7\xd9\xc5\xfd\xc5\xc3\xac\x6a\xac\x6b\xac\x6c\xac\x6d\xac\x6e\xc7\xed\xac\x6f\xac\x70\xac\x71\xac\x72\xe8\xa3\xac\x73\xac\x74\xac\x75\xac\x76\xac\x77\xac\x78\xac\x79\xac\x7a\xac\x7b\xac\x7c\xac\x7d\xac\x7e\xac\x80\xac\x81\xac\x82\xac\x83\xac\x84\xac\x85\xac\x86\xe8\xa6\xac\x87\xe8\xa5\xac\x88\xe8\xa7\xba\xf7\xe7\xf8\xe8\xa4\xac\x89\xc8\xf0\xc9\xaa\xac\x8a\xac\x8b\xac\x8c\xac\x8d\xac\x8e\xac\x8f\xac\x90\xac\x91\xac\x92\xac\x93\xac\x94\xac\x95\xac\x96\xe8\xa9\xac\x97\xac\x98\xb9\xe5\xac\x99\xac\x9a\xac\x9b\xac\x9c\xac\x9d\xd1\xfe\xe8\xa8\xac\x9e\xac\x9f\xac\xa0\xad\x40\xad\x41\xad\x42\xe8\xaa\xad\x43", /* 7480 */ "\xe8\xad\xe8\xae\xad\x44\xc1\xa7\xad\x45\xad\x46\xad\x47\xe8\xaf\xad\x48\xad\x49\xad\x4a\xe8\xb0\xad\x4b\xad\x4c\xe8\xac\xad\x4d\xe8\xb4\xad\x4e\xad\x4f\xad\x50\xad\x51\xad\x52\xad\x53\xad\x54\xad\x55\xad\x56\xad\x57\xad\x58\xe8\xab\xad\x59\xe8\xb1\xad\x5a\xad\x5b\xad\x5c\xad\x5d\xad\x5e\xad\x5f\xad\x60\xad\x61\xe8\xb5\xe8\xb2\xe8\xb3\xad\x62\xad\x63\xad\x64\xad\x65\xad\x66\xad\x67\xad\x68\xad\x69\xad\x6a\xad\x6b\xad\x6c\xad\x6d\xad\x6e\xad\x6f\xad\x70\xad\x71\xe8\xb7\xad\x72\xad\x73\xad\x74\xad\x75\xad\x76\xad\x77\xad\x78\xad\x79\xad\x7a\xad\x7b\xad\x7c\xad\x7d\xad\x7e\xad\x80\xad\x81\xad\x82\xad\x83\xad\x84\xad\x85\xad\x86\xad\x87\xad\x88\xad\x89\xe8\xb6\xad\x8a\xad\x8b\xad\x8c\xad\x8d\xad\x8e\xad\x8f\xad\x90\xad\x91\xad\x92\xb9\xcf\xad\x93\xf0\xac\xad\x94\xf0\xad\xad\x95\xc6\xb0\xb0\xea\xc8\xbf\xad\x96\xcd\xdf\xad\x97\xad\x98\xad\x99\xad\x9a\xad\x9b\xad\x9c\xad\x9d\xce\xcd\xea\xb1\xad\x9e\xad\x9f\xad\xa0\xae\x40\xea\xb2\xae\x41\xc6\xbf\xb4\xc9\xae\x42\xae\x43\xae\x44\xae\x45\xae\x46\xae\x47\xae\x48\xea\xb3", /* 7500 */ "\xae\x49\xae\x4a\xae\x4b\xae\x4c\xd5\xe7\xae\x4d\xae\x4e\xae\x4f\xae\x50\xae\x51\xae\x52\xae\x53\xae\x54\xdd\xf9\xae\x55\xea\xb4\xae\x56\xea\xb5\xae\x57\xea\xb6\xae\x58\xae\x59\xae\x5a\xae\x5b\xb8\xca\xdf\xb0\xc9\xf5\xae\x5c\xcc\xf0\xae\x5d\xae\x5e\xc9\xfa\xae\x5f\xae\x60\xae\x61\xae\x62\xae\x63\xc9\xfb\xae\x64\xae\x65\xd3\xc3\xcb\xa6\xae\x66\xb8\xa6\xf0\xae\xb1\xc2\xae\x67\xe5\xb8\xcc\xef\xd3\xc9\xbc\xd7\xc9\xea\xae\x68\xb5\xe7\xae\x69\xc4\xd0\xb5\xe9\xae\x6a\xee\xae\xbb\xad\xae\x6b\xae\x6c\xe7\xde\xae\x6d\xee\xaf\xae\x6e\xae\x6f\xae\x70\xae\x71\xb3\xa9\xae\x72\xae\x73\xee\xb2\xae\x74\xae\x75\xee\xb1\xbd\xe7\xae\x76\xee\xb0\xce\xb7\xae\x77\xae\x78\xae\x79\xae\x7a\xc5\xcf\xae\x7b\xae\x7c\xae\x7d\xae\x7e\xc1\xf4\xdb\xce\xee\xb3\xd0\xf3\xae\x80\xae\x81\xae\x82\xae\x83\xae\x84\xae\x85\xae\x86\xae\x87\xc2\xd4\xc6\xe8\xae\x88\xae\x89\xae\x8a\xb7\xac\xae\x8b\xae\x8c\xae\x8d\xae\x8e\xae\x8f\xae\x90\xae\x91\xee\xb4\xae\x92\xb3\xeb\xae\x93\xae\x94\xae\x95\xbb\xfb\xee\xb5\xae\x96\xae\x97\xae\x98\xae\x99\xae\x9a\xe7\xdc", /* 7580 */ "\xae\x9b\xae\x9c\xae\x9d\xee\xb6\xae\x9e\xae\x9f\xbd\xae\xae\xa0\xaf\x40\xaf\x41\xaf\x42\xf1\xe2\xaf\x43\xaf\x44\xaf\x45\xca\xe8\xaf\x46\xd2\xc9\xf0\xda\xaf\x47\xf0\xdb\xaf\x48\xf0\xdc\xc1\xc6\xaf\x49\xb8\xed\xbe\xce\xaf\x4a\xaf\x4b\xf0\xde\xaf\x4c\xc5\xb1\xf0\xdd\xd1\xf1\xaf\x4d\xf0\xe0\xb0\xcc\xbd\xea\xaf\x4e\xaf\x4f\xaf\x50\xaf\x51\xaf\x52\xd2\xdf\xf0\xdf\xaf\x53\xb4\xaf\xb7\xe8\xf0\xe6\xf0\xe5\xc6\xa3\xf0\xe1\xf0\xe2\xb4\xc3\xaf\x54\xaf\x55\xf0\xe3\xd5\xee\xaf\x56\xaf\x57\xcc\xdb\xbe\xd2\xbc\xb2\xaf\x58\xaf\x59\xaf\x5a\xf0\xe8\xf0\xe7\xf0\xe4\xb2\xa1\xaf\x5b\xd6\xa2\xd3\xb8\xbe\xb7\xc8\xac\xaf\x5c\xaf\x5d\xf0\xea\xaf\x5e\xaf\x5f\xaf\x60\xaf\x61\xd1\xf7\xaf\x62\xd6\xcc\xba\xdb\xf0\xe9\xaf\x63\xb6\xbb\xaf\x64\xaf\x65\xcd\xb4\xaf\x66\xaf\x67\xc6\xa6\xaf\x68\xaf\x69\xaf\x6a\xc1\xa1\xf0\xeb\xf0\xee\xaf\x6b\xf0\xed\xf0\xf0\xf0\xec\xaf\x6c\xbb\xbe\xf0\xef\xaf\x6d\xaf\x6e\xaf\x6f\xaf\x70\xcc\xb5\xf0\xf2\xaf\x71\xaf\x72\xb3\xd5\xaf\x73\xaf\x74\xaf\x75\xaf\x76\xb1\xd4\xaf\x77\xaf\x78\xf0\xf3\xaf\x79\xaf\x7a\xf0\xf4", /* 7600 */ "\xf0\xf6\xb4\xe1\xaf\x7b\xf0\xf1\xaf\x7c\xf0\xf7\xaf\x7d\xaf\x7e\xaf\x80\xaf\x81\xf0\xfa\xaf\x82\xf0\xf8\xaf\x83\xaf\x84\xaf\x85\xf0\xf5\xaf\x86\xaf\x87\xaf\x88\xaf\x89\xf0\xfd\xaf\x8a\xf0\xf9\xf0\xfc\xf0\xfe\xaf\x8b\xf1\xa1\xaf\x8c\xaf\x8d\xaf\x8e\xce\xc1\xf1\xa4\xaf\x8f\xf1\xa3\xaf\x90\xc1\xf6\xf0\xfb\xca\xdd\xaf\x91\xaf\x92\xb4\xf1\xb1\xf1\xcc\xb1\xaf\x93\xf1\xa6\xaf\x94\xaf\x95\xf1\xa7\xaf\x96\xaf\x97\xf1\xac\xd5\xce\xf1\xa9\xaf\x98\xaf\x99\xc8\xb3\xaf\x9a\xaf\x9b\xaf\x9c\xf1\xa2\xaf\x9d\xf1\xab\xf1\xa8\xf1\xa5\xaf\x9e\xaf\x9f\xf1\xaa\xaf\xa0\xb0\x40\xb0\x41\xb0\x42\xb0\x43\xb0\x44\xb0\x45\xb0\x46\xb0\xa9\xf1\xad\xb0\x47\xb0\x48\xb0\x49\xb0\x4a\xb0\x4b\xb0\x4c\xf1\xaf\xb0\x4d\xf1\xb1\xb0\x4e\xb0\x4f\xb0\x50\xb0\x51\xb0\x52\xf1\xb0\xb0\x53\xf1\xae\xb0\x54\xb0\x55\xb0\x56\xb0\x57\xd1\xa2\xb0\x58\xb0\x59\xb0\x5a\xb0\x5b\xb0\x5c\xb0\x5d\xb0\x5e\xf1\xb2\xb0\x5f\xb0\x60\xb0\x61\xf1\xb3\xb0\x62\xb0\x63\xb0\x64\xb0\x65\xb0\x66\xb0\x67\xb0\x68\xb0\x69\xb9\xef\xb0\x6a\xb0\x6b\xb5\xc7\xb0\x6c\xb0\xd7\xb0\xd9\xb0\x6d", /* 7680 */ "\xb0\x6e\xb0\x6f\xd4\xed\xb0\x70\xb5\xc4\xb0\x71\xbd\xd4\xbb\xca\xf0\xa7\xb0\x72\xb0\x73\xb8\xde\xb0\x74\xb0\x75\xf0\xa8\xb0\x76\xb0\x77\xb0\xa8\xb0\x78\xf0\xa9\xb0\x79\xb0\x7a\xcd\xee\xb0\x7b\xb0\x7c\xf0\xaa\xb0\x7d\xb0\x7e\xb0\x80\xb0\x81\xb0\x82\xb0\x83\xb0\x84\xb0\x85\xb0\x86\xb0\x87\xf0\xab\xb0\x88\xb0\x89\xb0\x8a\xb0\x8b\xb0\x8c\xb0\x8d\xb0\x8e\xb0\x8f\xb0\x90\xc6\xa4\xb0\x91\xb0\x92\xd6\xe5\xf1\xe4\xb0\x93\xf1\xe5\xb0\x94\xb0\x95\xb0\x96\xb0\x97\xb0\x98\xb0\x99\xb0\x9a\xb0\x9b\xb0\x9c\xb0\x9d\xc3\xf3\xb0\x9e\xb0\x9f\xd3\xdb\xb0\xa0\xb1\x40\xd6\xd1\xc5\xe8\xb1\x41\xd3\xaf\xb1\x42\xd2\xe6\xb1\x43\xb1\x44\xee\xc1\xb0\xbb\xd5\xb5\xd1\xce\xbc\xe0\xba\xd0\xb1\x45\xbf\xf8\xb1\x46\xb8\xc7\xb5\xc1\xc5\xcc\xb1\x47\xb1\x48\xca\xa2\xb1\x49\xb1\x4a\xb1\x4b\xc3\xcb\xb1\x4c\xb1\x4d\xb1\x4e\xb1\x4f\xb1\x50\xee\xc2\xb1\x51\xb1\x52\xb1\x53\xb1\x54\xb1\x55\xb1\x56\xb1\x57\xb1\x58\xc4\xbf\xb6\xa2\xb1\x59\xed\xec\xc3\xa4\xb1\x5a\xd6\xb1\xb1\x5b\xb1\x5c\xb1\x5d\xcf\xe0\xed\xef\xb1\x5e\xb1\x5f\xc5\xce\xb1\x60\xb6\xdc\xb1\x61", /* 7700 */ "\xb1\x62\xca\xa1\xb1\x63\xb1\x64\xed\xed\xb1\x65\xb1\x66\xed\xf0\xed\xf1\xc3\xbc\xb1\x67\xbf\xb4\xb1\x68\xed\xee\xb1\x69\xb1\x6a\xb1\x6b\xb1\x6c\xb1\x6d\xb1\x6e\xb1\x6f\xb1\x70\xb1\x71\xb1\x72\xb1\x73\xed\xf4\xed\xf2\xb1\x74\xb1\x75\xb1\x76\xb1\x77\xd5\xe6\xc3\xdf\xb1\x78\xed\xf3\xb1\x79\xb1\x7a\xb1\x7b\xed\xf6\xb1\x7c\xd5\xa3\xd1\xa3\xb1\x7d\xb1\x7e\xb1\x80\xed\xf5\xb1\x81\xc3\xd0\xb1\x82\xb1\x83\xb1\x84\xb1\x85\xb1\x86\xed\xf7\xbf\xf4\xbe\xec\xed\xf8\xb1\x87\xcc\xf7\xb1\x88\xd1\xdb\xb1\x89\xb1\x8a\xb1\x8b\xd7\xc5\xd5\xf6\xb1\x8c\xed\xfc\xb1\x8d\xb1\x8e\xb1\x8f\xed\xfb\xb1\x90\xb1\x91\xb1\x92\xb1\x93\xb1\x94\xb1\x95\xb1\x96\xb1\x97\xed\xf9\xed\xfa\xb1\x98\xb1\x99\xb1\x9a\xb1\x9b\xb1\x9c\xb1\x9d\xb1\x9e\xb1\x9f\xed\xfd\xbe\xa6\xb1\xa0\xb2\x40\xb2\x41\xb2\x42\xb2\x43\xcb\xaf\xee\xa1\xb6\xbd\xb2\x44\xee\xa2\xc4\xc0\xb2\x45\xed\xfe\xb2\x46\xb2\x47\xbd\xde\xb2\xc7\xb2\x48\xb2\x49\xb2\x4a\xb2\x4b\xb2\x4c\xb2\x4d\xb2\x4e\xb2\x4f\xb2\x50\xb2\x51\xb2\x52\xb2\x53\xb6\xc3\xb2\x54\xb2\x55\xb2\x56\xee\xa5\xd8\xba\xee\xa3", /* 7780 */ "\xee\xa6\xb2\x57\xb2\x58\xb2\x59\xc3\xe9\xb3\xf2\xb2\x5a\xb2\x5b\xb2\x5c\xb2\x5d\xb2\x5e\xb2\x5f\xee\xa7\xee\xa4\xcf\xb9\xb2\x60\xb2\x61\xee\xa8\xc2\xf7\xb2\x62\xb2\x63\xb2\x64\xb2\x65\xb2\x66\xb2\x67\xb2\x68\xb2\x69\xb2\x6a\xb2\x6b\xb2\x6c\xb2\x6d\xee\xa9\xee\xaa\xb2\x6e\xde\xab\xb2\x6f\xb2\x70\xc6\xb3\xb2\x71\xc7\xc6\xb2\x72\xd6\xf5\xb5\xc9\xb2\x73\xcb\xb2\xb2\x74\xb2\x75\xb2\x76\xee\xab\xb2\x77\xb2\x78\xcd\xab\xb2\x79\xee\xac\xb2\x7a\xb2\x7b\xb2\x7c\xb2\x7d\xb2\x7e\xd5\xb0\xb2\x80\xee\xad\xb2\x81\xf6\xc4\xb2\x82\xb2\x83\xb2\x84\xb2\x85\xb2\x86\xb2\x87\xb2\x88\xb2\x89\xb2\x8a\xb2\x8b\xb2\x8c\xb2\x8d\xb2\x8e\xdb\xc7\xb2\x8f\xb2\x90\xb2\x91\xb2\x92\xb2\x93\xb2\x94\xb2\x95\xb2\x96\xb2\x97\xb4\xa3\xb2\x98\xb2\x99\xb2\x9a\xc3\xac\xf1\xe6\xb2\x9b\xb2\x9c\xb2\x9d\xb2\x9e\xb2\x9f\xca\xb8\xd2\xd3\xb2\xa0\xd6\xaa\xb3\x40\xef\xf2\xb3\x41\xbe\xd8\xb3\x42\xbd\xc3\xef\xf3\xb6\xcc\xb0\xab\xb3\x43\xb3\x44\xb3\x45\xb3\x46\xca\xaf\xb3\x47\xb3\x48\xed\xb6\xb3\x49\xed\xb7\xb3\x4a\xb3\x4b\xb3\x4c\xb3\x4d\xce\xf9\xb7\xaf\xbf\xf3", /* 7800 */ "\xed\xb8\xc2\xeb\xc9\xb0\xb3\x4e\xb3\x4f\xb3\x50\xb3\x51\xb3\x52\xb3\x53\xed\xb9\xb3\x54\xb3\x55\xc6\xf6\xbf\xb3\xb3\x56\xb3\x57\xb3\x58\xed\xbc\xc5\xf8\xb3\x59\xd1\xd0\xb3\x5a\xd7\xa9\xed\xba\xed\xbb\xb3\x5b\xd1\xe2\xb3\x5c\xed\xbf\xed\xc0\xb3\x5d\xed\xc4\xb3\x5e\xb3\x5f\xb3\x60\xed\xc8\xb3\x61\xed\xc6\xed\xce\xd5\xe8\xb3\x62\xed\xc9\xb3\x63\xb3\x64\xed\xc7\xed\xbe\xb3\x65\xb3\x66\xc5\xe9\xb3\x67\xb3\x68\xb3\x69\xc6\xc6\xb3\x6a\xb3\x6b\xc9\xe9\xd4\xd2\xed\xc1\xed\xc2\xed\xc3\xed\xc5\xb3\x6c\xc0\xf9\xb3\x6d\xb4\xa1\xb3\x6e\xb3\x6f\xb3\x70\xb3\x71\xb9\xe8\xb3\x72\xed\xd0\xb3\x73\xb3\x74\xb3\x75\xb3\x76\xed\xd1\xb3\x77\xed\xca\xb3\x78\xed\xcf\xb3\x79\xce\xf8\xb3\x7a\xb3\x7b\xcb\xb6\xed\xcc\xed\xcd\xb3\x7c\xb3\x7d\xb3\x7e\xb3\x80\xb3\x81\xcf\xf5\xb3\x82\xb3\x83\xb3\x84\xb3\x85\xb3\x86\xb3\x87\xb3\x88\xb3\x89\xb3\x8a\xb3\x8b\xb3\x8c\xb3\x8d\xed\xd2\xc1\xf2\xd3\xb2\xed\xcb\xc8\xb7\xb3\x8e\xb3\x8f\xb3\x90\xb3\x91\xb3\x92\xb3\x93\xb3\x94\xb3\x95\xbc\xef\xb3\x96\xb3\x97\xb3\x98\xb3\x99\xc5\xf0\xb3\x9a\xb3\x9b\xb3\x9c", /* 7880 */ "\xb3\x9d\xb3\x9e\xb3\x9f\xb3\xa0\xb4\x40\xb4\x41\xb4\x42\xed\xd6\xb4\x43\xb5\xef\xb4\x44\xb4\x45\xc2\xb5\xb0\xad\xcb\xe9\xb4\x46\xb4\x47\xb1\xae\xb4\x48\xed\xd4\xb4\x49\xb4\x4a\xb4\x4b\xcd\xeb\xb5\xe2\xb4\x4c\xed\xd5\xed\xd3\xed\xd7\xb4\x4d\xb4\x4e\xb5\xfa\xb4\x4f\xed\xd8\xb4\x50\xed\xd9\xb4\x51\xed\xdc\xb4\x52\xb1\xcc\xb4\x53\xb4\x54\xb4\x55\xb4\x56\xb4\x57\xb4\x58\xb4\x59\xb4\x5a\xc5\xf6\xbc\xee\xed\xda\xcc\xbc\xb2\xea\xb4\x5b\xb4\x5c\xb4\x5d\xb4\x5e\xed\xdb\xb4\x5f\xb4\x60\xb4\x61\xb4\x62\xc4\xeb\xb4\x63\xb4\x64\xb4\xc5\xb4\x65\xb4\x66\xb4\x67\xb0\xf5\xb4\x68\xb4\x69\xb4\x6a\xed\xdf\xc0\xda\xb4\xe8\xb4\x6b\xb4\x6c\xb4\x6d\xb4\x6e\xc5\xcd\xb4\x6f\xb4\x70\xb4\x71\xed\xdd\xbf\xc4\xb4\x72\xb4\x73\xb4\x74\xed\xde\xb4\x75\xb4\x76\xb4\x77\xb4\x78\xb4\x79\xb4\x7a\xb4\x7b\xb4\x7c\xb4\x7d\xb4\x7e\xb4\x80\xb4\x81\xb4\x82\xb4\x83\xc4\xa5\xb4\x84\xb4\x85\xb4\x86\xed\xe0\xb4\x87\xb4\x88\xb4\x89\xb4\x8a\xb4\x8b\xed\xe1\xb4\x8c\xed\xe3\xb4\x8d\xb4\x8e\xc1\xd7\xb4\x8f\xb4\x90\xbb\xc7\xb4\x91\xb4\x92\xb4\x93\xb4\x94\xb4\x95", /* 7900 */ "\xb4\x96\xbd\xb8\xb4\x97\xb4\x98\xb4\x99\xed\xe2\xb4\x9a\xb4\x9b\xb4\x9c\xb4\x9d\xb4\x9e\xb4\x9f\xb4\xa0\xb5\x40\xb5\x41\xb5\x42\xb5\x43\xb5\x44\xb5\x45\xed\xe4\xb5\x46\xb5\x47\xb5\x48\xb5\x49\xb5\x4a\xb5\x4b\xb5\x4c\xb5\x4d\xb5\x4e\xb5\x4f\xed\xe6\xb5\x50\xb5\x51\xb5\x52\xb5\x53\xb5\x54\xed\xe5\xb5\x55\xb5\x56\xb5\x57\xb5\x58\xb5\x59\xb5\x5a\xb5\x5b\xb5\x5c\xb5\x5d\xb5\x5e\xb5\x5f\xb5\x60\xb5\x61\xb5\x62\xb5\x63\xed\xe7\xb5\x64\xb5\x65\xb5\x66\xb5\x67\xb5\x68\xca\xbe\xec\xea\xc0\xf1\xb5\x69\xc9\xe7\xb5\x6a\xec\xeb\xc6\xee\xb5\x6b\xb5\x6c\xb5\x6d\xb5\x6e\xec\xec\xb5\x6f\xc6\xed\xec\xed\xb5\x70\xb5\x71\xb5\x72\xb5\x73\xb5\x74\xb5\x75\xb5\x76\xb5\x77\xb5\x78\xec\xf0\xb5\x79\xb5\x7a\xd7\xe6\xec\xf3\xb5\x7b\xb5\x7c\xec\xf1\xec\xee\xec\xef\xd7\xa3\xc9\xf1\xcb\xee\xec\xf4\xb5\x7d\xec\xf2\xb5\x7e\xb5\x80\xcf\xe9\xb5\x81\xec\xf6\xc6\xb1\xb5\x82\xb5\x83\xb5\x84\xb5\x85\xbc\xc0\xb5\x86\xec\xf5\xb5\x87\xb5\x88\xb5\x89\xb5\x8a\xb5\x8b\xb5\x8c\xb5\x8d\xb5\xbb\xbb\xf6\xb5\x8e\xec\xf7\xb5\x8f\xb5\x90\xb5\x91\xb5\x92\xb5\x93", /* 7980 */ "\xd9\xf7\xbd\xfb\xb5\x94\xb5\x95\xc2\xbb\xec\xf8\xb5\x96\xb5\x97\xb5\x98\xb5\x99\xec\xf9\xb5\x9a\xb5\x9b\xb5\x9c\xb5\x9d\xb8\xa3\xb5\x9e\xb5\x9f\xb5\xa0\xb6\x40\xb6\x41\xb6\x42\xb6\x43\xb6\x44\xb6\x45\xb6\x46\xec\xfa\xb6\x47\xb6\x48\xb6\x49\xb6\x4a\xb6\x4b\xb6\x4c\xb6\x4d\xb6\x4e\xb6\x4f\xb6\x50\xb6\x51\xb6\x52\xec\xfb\xb6\x53\xb6\x54\xb6\x55\xb6\x56\xb6\x57\xb6\x58\xb6\x59\xb6\x5a\xb6\x5b\xb6\x5c\xb6\x5d\xec\xfc\xb6\x5e\xb6\x5f\xb6\x60\xb6\x61\xb6\x62\xd3\xed\xd8\xae\xc0\xeb\xb6\x63\xc7\xdd\xba\xcc\xb6\x64\xd0\xe3\xcb\xbd\xb6\x65\xcd\xba\xb6\x66\xb6\x67\xb8\xd1\xb6\x68\xb6\x69\xb1\xfc\xb6\x6a\xc7\xef\xb6\x6b\xd6\xd6\xb6\x6c\xb6\x6d\xb6\x6e\xbf\xc6\xc3\xeb\xb6\x6f\xb6\x70\xef\xf5\xb6\x71\xb6\x72\xc3\xd8\xb6\x73\xb6\x74\xb6\x75\xb6\x76\xb6\x77\xb6\x78\xd7\xe2\xb6\x79\xb6\x7a\xb6\x7b\xef\xf7\xb3\xd3\xb6\x7c\xc7\xd8\xd1\xed\xb6\x7d\xd6\xc8\xb6\x7e\xef\xf8\xb6\x80\xef\xf6\xb6\x81\xbb\xfd\xb3\xc6\xb6\x82\xb6\x83\xb6\x84\xb6\x85\xb6\x86\xb6\x87\xb6\x88\xbd\xd5\xb6\x89\xb6\x8a\xd2\xc6\xb6\x8b\xbb\xe0\xb6\x8c\xb6\x8d", /* 7a00 */ "\xcf\xa1\xb6\x8e\xef\xfc\xef\xfb\xb6\x8f\xb6\x90\xef\xf9\xb6\x91\xb6\x92\xb6\x93\xb6\x94\xb3\xcc\xb6\x95\xc9\xd4\xcb\xb0\xb6\x96\xb6\x97\xb6\x98\xb6\x99\xb6\x9a\xef\xfe\xb6\x9b\xb6\x9c\xb0\xde\xb6\x9d\xb6\x9e\xd6\xc9\xb6\x9f\xb6\xa0\xb7\x40\xef\xfd\xb7\x41\xb3\xed\xb7\x42\xb7\x43\xf6\xd5\xb7\x44\xb7\x45\xb7\x46\xb7\x47\xb7\x48\xb7\x49\xb7\x4a\xb7\x4b\xb7\x4c\xb7\x4d\xb7\x4e\xb7\x4f\xb7\x50\xb7\x51\xb7\x52\xce\xc8\xb7\x53\xb7\x54\xb7\x55\xf0\xa2\xb7\x56\xf0\xa1\xb7\x57\xb5\xbe\xbc\xda\xbb\xfc\xb7\x58\xb8\xe5\xb7\x59\xb7\x5a\xb7\x5b\xb7\x5c\xb7\x5d\xb7\x5e\xc4\xc2\xb7\x5f\xb7\x60\xb7\x61\xb7\x62\xb7\x63\xb7\x64\xb7\x65\xb7\x66\xb7\x67\xb7\x68\xf0\xa3\xb7\x69\xb7\x6a\xb7\x6b\xb7\x6c\xb7\x6d\xcb\xeb\xb7\x6e\xb7\x6f\xb7\x70\xb7\x71\xb7\x72\xb7\x73\xb7\x74\xb7\x75\xb7\x76\xb7\x77\xb7\x78\xb7\x79\xb7\x7a\xb7\x7b\xb7\x7c\xb7\x7d\xb7\x7e\xb7\x80\xb7\x81\xb7\x82\xb7\x83\xb7\x84\xb7\x85\xb7\x86\xf0\xa6\xb7\x87\xb7\x88\xb7\x89\xd1\xa8\xb7\x8a\xbe\xbf\xc7\xee\xf1\xb6\xf1\xb7\xbf\xd5\xb7\x8b\xb7\x8c\xb7\x8d\xb7\x8e\xb4\xa9", /* 7a80 */ "\xf1\xb8\xcd\xbb\xb7\x8f\xc7\xd4\xd5\xad\xb7\x90\xf1\xb9\xb7\x91\xf1\xba\xb7\x92\xb7\x93\xb7\x94\xb7\x95\xc7\xcf\xb7\x96\xb7\x97\xb7\x98\xd2\xa4\xd6\xcf\xb7\x99\xb7\x9a\xf1\xbb\xbd\xd1\xb4\xb0\xbe\xbd\xb7\x9b\xb7\x9c\xb7\x9d\xb4\xdc\xce\xd1\xb7\x9e\xbf\xdf\xf1\xbd\xb7\x9f\xb7\xa0\xb8\x40\xb8\x41\xbf\xfa\xf1\xbc\xb8\x42\xf1\xbf\xb8\x43\xb8\x44\xb8\x45\xf1\xbe\xf1\xc0\xb8\x46\xb8\x47\xb8\x48\xb8\x49\xb8\x4a\xf1\xc1\xb8\x4b\xb8\x4c\xb8\x4d\xb8\x4e\xb8\x4f\xb8\x50\xb8\x51\xb8\x52\xb8\x53\xb8\x54\xb8\x55\xc1\xfe\xb8\x56\xb8\x57\xb8\x58\xb8\x59\xb8\x5a\xb8\x5b\xb8\x5c\xb8\x5d\xb8\x5e\xb8\x5f\xb8\x60\xc1\xa2\xb8\x61\xb8\x62\xb8\x63\xb8\x64\xb8\x65\xb8\x66\xb8\x67\xb8\x68\xb8\x69\xb8\x6a\xca\xfa\xb8\x6b\xb8\x6c\xd5\xbe\xb8\x6d\xb8\x6e\xb8\x6f\xb8\x70\xbe\xba\xbe\xb9\xd5\xc2\xb8\x71\xb8\x72\xbf\xa2\xb8\x73\xcd\xaf\xf1\xb5\xb8\x74\xb8\x75\xb8\x76\xb8\x77\xb8\x78\xb8\x79\xbd\xdf\xb8\x7a\xb6\xcb\xb8\x7b\xb8\x7c\xb8\x7d\xb8\x7e\xb8\x80\xb8\x81\xb8\x82\xb8\x83\xb8\x84\xd6\xf1\xf3\xc3\xb8\x85\xb8\x86\xf3\xc4\xb8\x87\xb8\xcd", /* 7b00 */ "\xb8\x88\xb8\x89\xb8\x8a\xf3\xc6\xf3\xc7\xb8\x8b\xb0\xca\xb8\x8c\xf3\xc5\xb8\x8d\xf3\xc9\xcb\xf1\xb8\x8e\xb8\x8f\xb8\x90\xf3\xcb\xb8\x91\xd0\xa6\xb8\x92\xb8\x93\xb1\xca\xf3\xc8\xb8\x94\xb8\x95\xb8\x96\xf3\xcf\xb8\x97\xb5\xd1\xb8\x98\xb8\x99\xf3\xd7\xb8\x9a\xf3\xd2\xb8\x9b\xb8\x9c\xb8\x9d\xf3\xd4\xf3\xd3\xb7\xfb\xb8\x9e\xb1\xbf\xb8\x9f\xf3\xce\xf3\xca\xb5\xda\xb8\xa0\xf3\xd0\xb9\x40\xb9\x41\xf3\xd1\xb9\x42\xf3\xd5\xb9\x43\xb9\x44\xb9\x45\xb9\x46\xf3\xcd\xb9\x47\xbc\xe3\xb9\x48\xc1\xfd\xb9\x49\xf3\xd6\xb9\x4a\xb9\x4b\xb9\x4c\xb9\x4d\xb9\x4e\xb9\x4f\xf3\xda\xb9\x50\xf3\xcc\xb9\x51\xb5\xc8\xb9\x52\xbd\xee\xf3\xdc\xb9\x53\xb9\x54\xb7\xa4\xbf\xf0\xd6\xfe\xcd\xb2\xb9\x55\xb4\xf0\xb9\x56\xb2\xdf\xb9\x57\xf3\xd8\xb9\x58\xf3\xd9\xc9\xb8\xb9\x59\xf3\xdd\xb9\x5a\xb9\x5b\xf3\xde\xb9\x5c\xf3\xe1\xb9\x5d\xb9\x5e\xb9\x5f\xb9\x60\xb9\x61\xb9\x62\xb9\x63\xb9\x64\xb9\x65\xb9\x66\xb9\x67\xf3\xdf\xb9\x68\xb9\x69\xf3\xe3\xf3\xe2\xb9\x6a\xb9\x6b\xf3\xdb\xb9\x6c\xbf\xea\xb9\x6d\xb3\xef\xb9\x6e\xf3\xe0\xb9\x6f\xb9\x70\xc7\xa9\xb9\x71", /* 7b80 */ "\xbc\xf2\xb9\x72\xb9\x73\xb9\x74\xb9\x75\xf3\xeb\xb9\x76\xb9\x77\xb9\x78\xb9\x79\xb9\x7a\xb9\x7b\xb9\x7c\xb9\xbf\xb9\x7d\xb9\x7e\xf3\xe4\xb9\x80\xb9\x81\xb9\x82\xb2\xad\xbb\xfe\xb9\x83\xcb\xe3\xb9\x84\xb9\x85\xb9\x86\xb9\x87\xf3\xed\xf3\xe9\xb9\x88\xb9\x89\xb9\x8a\xb9\xdc\xf3\xee\xb9\x8b\xb9\x8c\xb9\x8d\xf3\xe5\xf3\xe6\xf3\xea\xc2\xe1\xf3\xec\xf3\xef\xf3\xe8\xbc\xfd\xb9\x8e\xb9\x8f\xb9\x90\xcf\xe4\xb9\x91\xb9\x92\xf3\xf0\xb9\x93\xb9\x94\xb9\x95\xf3\xe7\xb9\x96\xb9\x97\xb9\x98\xb9\x99\xb9\x9a\xb9\x9b\xb9\x9c\xb9\x9d\xf3\xf2\xb9\x9e\xb9\x9f\xb9\xa0\xba\x40\xd7\xad\xc6\xaa\xba\x41\xba\x42\xba\x43\xba\x44\xf3\xf3\xba\x45\xba\x46\xba\x47\xba\x48\xf3\xf1\xba\x49\xc2\xa8\xba\x4a\xba\x4b\xba\x4c\xba\x4d\xba\x4e\xb8\xdd\xf3\xf5\xba\x4f\xba\x50\xf3\xf4\xba\x51\xba\x52\xba\x53\xb4\xdb\xba\x54\xba\x55\xba\x56\xf3\xf6\xf3\xf7\xba\x57\xba\x58\xba\x59\xf3\xf8\xba\x5a\xba\x5b\xba\x5c\xc0\xba\xba\x5d\xba\x5e\xc0\xe9\xba\x5f\xba\x60\xba\x61\xba\x62\xba\x63\xc5\xf1\xba\x64\xba\x65\xba\x66\xba\x67\xf3\xfb\xba\x68\xf3\xfa\xba\x69", /* 7c00 */ "\xba\x6a\xba\x6b\xba\x6c\xba\x6d\xba\x6e\xba\x6f\xba\x70\xb4\xd8\xba\x71\xba\x72\xba\x73\xf3\xfe\xf3\xf9\xba\x74\xba\x75\xf3\xfc\xba\x76\xba\x77\xba\x78\xba\x79\xba\x7a\xba\x7b\xf3\xfd\xba\x7c\xba\x7d\xba\x7e\xba\x80\xba\x81\xba\x82\xba\x83\xba\x84\xf4\xa1\xba\x85\xba\x86\xba\x87\xba\x88\xba\x89\xba\x8a\xf4\xa3\xbb\xc9\xba\x8b\xba\x8c\xf4\xa2\xba\x8d\xba\x8e\xba\x8f\xba\x90\xba\x91\xba\x92\xba\x93\xba\x94\xba\x95\xba\x96\xba\x97\xba\x98\xba\x99\xf4\xa4\xba\x9a\xba\x9b\xba\x9c\xba\x9d\xba\x9e\xba\x9f\xb2\xbe\xf4\xa6\xf4\xa5\xba\xa0\xbb\x40\xbb\x41\xbb\x42\xbb\x43\xbb\x44\xbb\x45\xbb\x46\xbb\x47\xbb\x48\xbb\x49\xbc\xae\xbb\x4a\xbb\x4b\xbb\x4c\xbb\x4d\xbb\x4e\xbb\x4f\xbb\x50\xbb\x51\xbb\x52\xbb\x53\xbb\x54\xbb\x55\xbb\x56\xbb\x57\xbb\x58\xbb\x59\xbb\x5a\xbb\x5b\xbb\x5c\xbb\x5d\xbb\x5e\xbb\x5f\xbb\x60\xbb\x61\xbb\x62\xbb\x63\xbb\x64\xbb\x65\xbb\x66\xbb\x67\xbb\x68\xbb\x69\xbb\x6a\xbb\x6b\xbb\x6c\xbb\x6d\xbb\x6e\xc3\xd7\xd9\xe1\xbb\x6f\xbb\x70\xbb\x71\xbb\x72\xbb\x73\xbb\x74\xc0\xe0\xf4\xcc\xd7\xd1\xbb\x75\xbb\x76", /* 7c80 */ "\xbb\x77\xbb\x78\xbb\x79\xbb\x7a\xbb\x7b\xbb\x7c\xbb\x7d\xbb\x7e\xbb\x80\xb7\xdb\xbb\x81\xbb\x82\xbb\x83\xbb\x84\xbb\x85\xbb\x86\xbb\x87\xf4\xce\xc1\xa3\xbb\x88\xbb\x89\xc6\xc9\xbb\x8a\xb4\xd6\xd5\xb3\xbb\x8b\xbb\x8c\xbb\x8d\xf4\xd0\xf4\xcf\xf4\xd1\xcb\xda\xbb\x8e\xbb\x8f\xf4\xd2\xbb\x90\xd4\xc1\xd6\xe0\xbb\x91\xbb\x92\xbb\x93\xbb\x94\xb7\xe0\xbb\x95\xbb\x96\xbb\x97\xc1\xb8\xbb\x98\xbb\x99\xc1\xbb\xf4\xd3\xbe\xac\xbb\x9a\xbb\x9b\xbb\x9c\xbb\x9d\xbb\x9e\xb4\xe2\xbb\x9f\xbb\xa0\xf4\xd4\xf4\xd5\xbe\xab\xbc\x40\xbc\x41\xf4\xd6\xbc\x42\xbc\x43\xbc\x44\xf4\xdb\xbc\x45\xf4\xd7\xf4\xda\xbc\x46\xba\xfd\xbc\x47\xf4\xd8\xf4\xd9\xbc\x48\xbc\x49\xbc\x4a\xbc\x4b\xbc\x4c\xbc\x4d\xbc\x4e\xb8\xe2\xcc\xc7\xf4\xdc\xbc\x4f\xb2\xda\xbc\x50\xbc\x51\xc3\xd3\xbc\x52\xbc\x53\xd4\xe3\xbf\xb7\xbc\x54\xbc\x55\xbc\x56\xbc\x57\xbc\x58\xbc\x59\xbc\x5a\xf4\xdd\xbc\x5b\xbc\x5c\xbc\x5d\xbc\x5e\xbc\x5f\xbc\x60\xc5\xb4\xbc\x61\xbc\x62\xbc\x63\xbc\x64\xbc\x65\xbc\x66\xbc\x67\xbc\x68\xf4\xe9\xbc\x69\xbc\x6a\xcf\xb5\xbc\x6b\xbc\x6c\xbc\x6d\xbc\x6e", /* 7d00 */ "\xbc\x6f\xbc\x70\xbc\x71\xbc\x72\xbc\x73\xbc\x74\xbc\x75\xbc\x76\xbc\x77\xbc\x78\xce\xc9\xbc\x79\xbc\x7a\xbc\x7b\xbc\x7c\xbc\x7d\xbc\x7e\xbc\x80\xbc\x81\xbc\x82\xbc\x83\xbc\x84\xbc\x85\xbc\x86\xbc\x87\xbc\x88\xbc\x89\xbc\x8a\xbc\x8b\xbc\x8c\xbc\x8d\xbc\x8e\xcb\xd8\xbc\x8f\xcb\xf7\xbc\x90\xbc\x91\xbc\x92\xbc\x93\xbd\xf4\xbc\x94\xbc\x95\xbc\x96\xd7\xcf\xbc\x97\xbc\x98\xbc\x99\xc0\xdb\xbc\x9a\xbc\x9b\xbc\x9c\xbc\x9d\xbc\x9e\xbc\x9f\xbc\xa0\xbd\x40\xbd\x41\xbd\x42\xbd\x43\xbd\x44\xbd\x45\xbd\x46\xbd\x47\xbd\x48\xbd\x49\xbd\x4a\xbd\x4b\xbd\x4c\xbd\x4d\xbd\x4e\xbd\x4f\xbd\x50\xbd\x51\xbd\x52\xbd\x53\xbd\x54\xbd\x55\xbd\x56\xbd\x57\xbd\x58\xbd\x59\xbd\x5a\xbd\x5b\xbd\x5c\xbd\x5d\xbd\x5e\xbd\x5f\xbd\x60\xbd\x61\xbd\x62\xbd\x63\xbd\x64\xbd\x65\xbd\x66\xbd\x67\xbd\x68\xbd\x69\xbd\x6a\xbd\x6b\xbd\x6c\xbd\x6d\xbd\x6e\xbd\x6f\xbd\x70\xbd\x71\xbd\x72\xbd\x73\xbd\x74\xbd\x75\xbd\x76\xd0\xf5\xbd\x77\xbd\x78\xbd\x79\xbd\x7a\xbd\x7b\xbd\x7c\xbd\x7d\xbd\x7e\xf4\xea\xbd\x80\xbd\x81\xbd\x82\xbd\x83\xbd\x84\xbd\x85\xbd\x86\xbd\x87", /* 7d80 */ "\xbd\x88\xbd\x89\xbd\x8a\xbd\x8b\xbd\x8c\xbd\x8d\xbd\x8e\xbd\x8f\xbd\x90\xbd\x91\xbd\x92\xbd\x93\xbd\x94\xbd\x95\xbd\x96\xbd\x97\xbd\x98\xbd\x99\xbd\x9a\xbd\x9b\xbd\x9c\xbd\x9d\xbd\x9e\xbd\x9f\xbd\xa0\xbe\x40\xbe\x41\xbe\x42\xbe\x43\xbe\x44\xbe\x45\xbe\x46\xbe\x47\xbe\x48\xbe\x49\xbe\x4a\xbe\x4b\xbe\x4c\xf4\xeb\xbe\x4d\xbe\x4e\xbe\x4f\xbe\x50\xbe\x51\xbe\x52\xbe\x53\xf4\xec\xbe\x54\xbe\x55\xbe\x56\xbe\x57\xbe\x58\xbe\x59\xbe\x5a\xbe\x5b\xbe\x5c\xbe\x5d\xbe\x5e\xbe\x5f\xbe\x60\xbe\x61\xbe\x62\xbe\x63\xbe\x64\xbe\x65\xbe\x66\xbe\x67\xbe\x68\xbe\x69\xbe\x6a\xbe\x6b\xbe\x6c\xbe\x6d\xbe\x6e\xbe\x6f\xbe\x70\xbe\x71\xbe\x72\xbe\x73\xbe\x74\xbe\x75\xbe\x76\xbe\x77\xbe\x78\xbe\x79\xbe\x7a\xbe\x7b\xbe\x7c\xbe\x7d\xbe\x7e\xbe\x80\xbe\x81\xbe\x82\xbe\x83\xbe\x84\xbe\x85\xbe\x86\xbe\x87\xbe\x88\xbe\x89\xbe\x8a\xbe\x8b\xbe\x8c\xbe\x8d\xbe\x8e\xbe\x8f\xbe\x90\xbe\x91\xbe\x92\xbe\x93\xbe\x94\xbe\x95\xbe\x96\xbe\x97\xbe\x98\xbe\x99\xbe\x9a\xbe\x9b\xbe\x9c\xbe\x9d\xbe\x9e\xbe\x9f\xbe\xa0\xbf\x40\xbf\x41\xbf\x42\xbf\x43\xbf\x44", /* 7e00 */ "\xbf\x45\xbf\x46\xbf\x47\xbf\x48\xbf\x49\xbf\x4a\xbf\x4b\xbf\x4c\xbf\x4d\xbf\x4e\xbf\x4f\xbf\x50\xbf\x51\xbf\x52\xbf\x53\xbf\x54\xbf\x55\xbf\x56\xbf\x57\xbf\x58\xbf\x59\xbf\x5a\xbf\x5b\xbf\x5c\xbf\x5d\xbf\x5e\xbf\x5f\xbf\x60\xbf\x61\xbf\x62\xbf\x63\xbf\x64\xbf\x65\xbf\x66\xbf\x67\xbf\x68\xbf\x69\xbf\x6a\xbf\x6b\xbf\x6c\xbf\x6d\xbf\x6e\xbf\x6f\xbf\x70\xbf\x71\xbf\x72\xbf\x73\xbf\x74\xbf\x75\xbf\x76\xbf\x77\xbf\x78\xbf\x79\xbf\x7a\xbf\x7b\xbf\x7c\xbf\x7d\xbf\x7e\xbf\x80\xf7\xe3\xbf\x81\xbf\x82\xbf\x83\xbf\x84\xbf\x85\xb7\xb1\xbf\x86\xbf\x87\xbf\x88\xbf\x89\xbf\x8a\xf4\xed\xbf\x8b\xbf\x8c\xbf\x8d\xbf\x8e\xbf\x8f\xbf\x90\xbf\x91\xbf\x92\xbf\x93\xbf\x94\xbf\x95\xbf\x96\xbf\x97\xbf\x98\xbf\x99\xbf\x9a\xbf\x9b\xbf\x9c\xbf\x9d\xbf\x9e\xbf\x9f\xbf\xa0\xc0\x40\xc0\x41\xc0\x42\xc0\x43\xc0\x44\xc0\x45\xc0\x46\xc0\x47\xc0\x48\xc0\x49\xc0\x4a\xc0\x4b\xc0\x4c\xc0\x4d\xc0\x4e\xc0\x4f\xc0\x50\xc0\x51\xc0\x52\xc0\x53\xc0\x54\xc0\x55\xc0\x56\xc0\x57\xc0\x58\xc0\x59\xc0\x5a\xc0\x5b\xc0\x5c\xc0\x5d\xc0\x5e\xc0\x5f\xc0\x60\xc0\x61", /* 7e80 */ "\xc0\x62\xc0\x63\xd7\xeb\xc0\x64\xc0\x65\xc0\x66\xc0\x67\xc0\x68\xc0\x69\xc0\x6a\xc0\x6b\xc0\x6c\xc0\x6d\xc0\x6e\xc0\x6f\xc0\x70\xc0\x71\xc0\x72\xc0\x73\xc0\x74\xc0\x75\xc0\x76\xc0\x77\xc0\x78\xc0\x79\xc0\x7a\xc0\x7b\xf4\xee\xc0\x7c\xc0\x7d\xc0\x7e\xe6\xf9\xbe\xc0\xe6\xfa\xba\xec\xe6\xfb\xcf\xcb\xe6\xfc\xd4\xbc\xbc\xb6\xe6\xfd\xe6\xfe\xbc\xcd\xc8\xd2\xce\xb3\xe7\xa1\xc0\x80\xb4\xbf\xe7\xa2\xc9\xb4\xb8\xd9\xc4\xc9\xc0\x81\xd7\xdd\xc2\xda\xb7\xd7\xd6\xbd\xce\xc6\xb7\xc4\xc0\x82\xc0\x83\xc5\xa6\xe7\xa3\xcf\xdf\xe7\xa4\xe7\xa5\xe7\xa6\xc1\xb7\xd7\xe9\xc9\xf0\xcf\xb8\xd6\xaf\xd6\xd5\xe7\xa7\xb0\xed\xe7\xa8\xe7\xa9\xc9\xdc\xd2\xef\xbe\xad\xe7\xaa\xb0\xf3\xc8\xde\xbd\xe1\xe7\xab\xc8\xc6\xc0\x84\xe7\xac\xbb\xe6\xb8\xf8\xd1\xa4\xe7\xad\xc2\xe7\xbe\xf8\xbd\xca\xcd\xb3\xe7\xae\xe7\xaf\xbe\xee\xd0\xe5\xc0\x85\xcb\xe7\xcc\xd0\xbc\xcc\xe7\xb0\xbc\xa8\xd0\xf7\xe7\xb1\xc0\x86\xd0\xf8\xe7\xb2\xe7\xb3\xb4\xc2\xe7\xb4\xe7\xb5\xc9\xfe\xce\xac\xc3\xe0\xe7\xb7\xb1\xc1\xb3\xf1\xc0\x87\xe7\xb8\xe7\xb9\xd7\xdb\xd5\xc0\xe7\xba\xc2\xcc", /* 7f00 */ "\xd7\xba\xe7\xbb\xe7\xbc\xe7\xbd\xbc\xea\xc3\xe5\xc0\xc2\xe7\xbe\xe7\xbf\xbc\xa9\xc0\x88\xe7\xc0\xe7\xc1\xe7\xb6\xb6\xd0\xe7\xc2\xc0\x89\xe7\xc3\xe7\xc4\xbb\xba\xb5\xde\xc2\xc6\xb1\xe0\xe7\xc5\xd4\xb5\xe7\xc6\xb8\xbf\xe7\xc8\xe7\xc7\xb7\xec\xc0\x8a\xe7\xc9\xb2\xf8\xe7\xca\xe7\xcb\xe7\xcc\xe7\xcd\xe7\xce\xe7\xcf\xe7\xd0\xd3\xa7\xcb\xf5\xe7\xd1\xe7\xd2\xe7\xd3\xe7\xd4\xc9\xc9\xe7\xd5\xe7\xd6\xe7\xd7\xe7\xd8\xe7\xd9\xbd\xc9\xe7\xda\xf3\xbe\xc0\x8b\xb8\xd7\xc0\x8c\xc8\xb1\xc0\x8d\xc0\x8e\xc0\x8f\xc0\x90\xc0\x91\xc0\x92\xc0\x93\xf3\xbf\xc0\x94\xf3\xc0\xf3\xc1\xc0\x95\xc0\x96\xc0\x97\xc0\x98\xc0\x99\xc0\x9a\xc0\x9b\xc0\x9c\xc0\x9d\xc0\x9e\xb9\xde\xcd\xf8\xc0\x9f\xc0\xa0\xd8\xe8\xba\xb1\xc1\x40\xc2\xde\xee\xb7\xc1\x41\xb7\xa3\xc1\x42\xc1\x43\xc1\x44\xc1\x45\xee\xb9\xc1\x46\xee\xb8\xb0\xd5\xc1\x47\xc1\x48\xc1\x49\xc1\x4a\xc1\x4b\xee\xbb\xd5\xd6\xd7\xef\xc1\x4c\xc1\x4d\xc1\x4e\xd6\xc3\xc1\x4f\xc1\x50\xee\xbd\xca\xf0\xc1\x51\xee\xbc\xc1\x52\xc1\x53\xc1\x54\xc1\x55\xee\xbe\xc1\x56\xc1\x57\xc1\x58\xc1\x59\xee\xc0\xc1\x5a", /* 7f80 */ "\xc1\x5b\xee\xbf\xc1\x5c\xc1\x5d\xc1\x5e\xc1\x5f\xc1\x60\xc1\x61\xc1\x62\xc1\x63\xd1\xf2\xc1\x64\xc7\xbc\xc1\x65\xc3\xc0\xc1\x66\xc1\x67\xc1\x68\xc1\x69\xc1\x6a\xb8\xe1\xc1\x6b\xc1\x6c\xc1\x6d\xc1\x6e\xc1\x6f\xc1\xe7\xc1\x70\xc1\x71\xf4\xc6\xd0\xdf\xf4\xc7\xc1\x72\xcf\xdb\xc1\x73\xc1\x74\xc8\xba\xc1\x75\xc1\x76\xf4\xc8\xc1\x77\xc1\x78\xc1\x79\xc1\x7a\xc1\x7b\xc1\x7c\xc1\x7d\xf4\xc9\xf4\xca\xc1\x7e\xf4\xcb\xc1\x80\xc1\x81\xc1\x82\xc1\x83\xc1\x84\xd9\xfa\xb8\xfe\xc1\x85\xc1\x86\xe5\xf1\xd3\xf0\xc1\x87\xf4\xe0\xc1\x88\xce\xcc\xc1\x89\xc1\x8a\xc1\x8b\xb3\xe1\xc1\x8c\xc1\x8d\xc1\x8e\xc1\x8f\xf1\xb4\xc1\x90\xd2\xee\xc1\x91\xf4\xe1\xc1\x92\xc1\x93\xc1\x94\xc1\x95\xc1\x96\xcf\xe8\xf4\xe2\xc1\x97\xc1\x98\xc7\xcc\xc1\x99\xc1\x9a\xc1\x9b\xc1\x9c\xc1\x9d\xc1\x9e\xb5\xd4\xb4\xe4\xf4\xe4\xc1\x9f\xc1\xa0\xc2\x40\xf4\xe3\xf4\xe5\xc2\x41\xc2\x42\xf4\xe6\xc2\x43\xc2\x44\xc2\x45\xc2\x46\xf4\xe7\xc2\x47\xba\xb2\xb0\xbf\xc2\x48\xf4\xe8\xc2\x49\xc2\x4a\xc2\x4b\xc2\x4c\xc2\x4d\xc2\x4e\xc2\x4f\xb7\xad\xd2\xed\xc2\x50\xc2\x51\xc2\x52", /* 8000 */ "\xd2\xab\xc0\xcf\xc2\x53\xbf\xbc\xeb\xa3\xd5\xdf\xea\xc8\xc2\x54\xc2\x55\xc2\x56\xc2\x57\xf1\xf3\xb6\xf8\xcb\xa3\xc2\x58\xc2\x59\xc4\xcd\xc2\x5a\xf1\xe7\xc2\x5b\xf1\xe8\xb8\xfb\xf1\xe9\xba\xc4\xd4\xc5\xb0\xd2\xc2\x5c\xc2\x5d\xf1\xea\xc2\x5e\xc2\x5f\xc2\x60\xf1\xeb\xc2\x61\xf1\xec\xc2\x62\xc2\x63\xf1\xed\xf1\xee\xf1\xef\xf1\xf1\xf1\xf0\xc5\xd5\xc2\x64\xc2\x65\xc2\x66\xc2\x67\xc2\x68\xc2\x69\xf1\xf2\xc2\x6a\xb6\xfa\xc2\x6b\xf1\xf4\xd2\xae\xde\xc7\xcb\xca\xc2\x6c\xc2\x6d\xb3\xdc\xc2\x6e\xb5\xa2\xc2\x6f\xb9\xa2\xc2\x70\xc2\x71\xc4\xf4\xf1\xf5\xc2\x72\xc2\x73\xf1\xf6\xc2\x74\xc2\x75\xc2\x76\xc1\xc4\xc1\xfb\xd6\xb0\xf1\xf7\xc2\x77\xc2\x78\xc2\x79\xc2\x7a\xf1\xf8\xc2\x7b\xc1\xaa\xc2\x7c\xc2\x7d\xc2\x7e\xc6\xb8\xc2\x80\xbe\xdb\xc2\x81\xc2\x82\xc2\x83\xc2\x84\xc2\x85\xc2\x86\xc2\x87\xc2\x88\xc2\x89\xc2\x8a\xc2\x8b\xc2\x8c\xc2\x8d\xc2\x8e\xf1\xf9\xb4\xcf\xc2\x8f\xc2\x90\xc2\x91\xc2\x92\xc2\x93\xc2\x94\xf1\xfa\xc2\x95\xc2\x96\xc2\x97\xc2\x98\xc2\x99\xc2\x9a\xc2\x9b\xc2\x9c\xc2\x9d\xc2\x9e\xc2\x9f\xc2\xa0\xc3\x40\xed\xb2", /* 8080 */ "\xed\xb1\xc3\x41\xc3\x42\xcb\xe0\xd2\xde\xc3\x43\xcb\xc1\xd5\xd8\xc3\x44\xc8\xe2\xc3\x45\xc0\xdf\xbc\xa1\xc3\x46\xc3\x47\xc3\x48\xc3\x49\xc3\x4a\xc3\x4b\xeb\xc1\xc3\x4c\xc3\x4d\xd0\xa4\xc3\x4e\xd6\xe2\xc3\x4f\xb6\xc7\xb8\xd8\xeb\xc0\xb8\xce\xc3\x50\xeb\xbf\xb3\xa6\xb9\xc9\xd6\xab\xc3\x51\xb7\xf4\xb7\xca\xc3\x52\xc3\x53\xc3\x54\xbc\xe7\xb7\xbe\xeb\xc6\xc3\x55\xeb\xc7\xb0\xb9\xbf\xcf\xc3\x56\xeb\xc5\xd3\xfd\xc3\x57\xeb\xc8\xc3\x58\xc3\x59\xeb\xc9\xc3\x5a\xc3\x5b\xb7\xce\xc3\x5c\xeb\xc2\xeb\xc4\xc9\xf6\xd6\xd7\xd5\xcd\xd0\xb2\xeb\xcf\xce\xb8\xeb\xd0\xc3\x5d\xb5\xa8\xc3\x5e\xc3\x5f\xc3\x60\xc3\x61\xc3\x62\xb1\xb3\xeb\xd2\xcc\xa5\xc3\x63\xc3\x64\xc3\x65\xc3\x66\xc3\x67\xc3\x68\xc3\x69\xc5\xd6\xeb\xd3\xc3\x6a\xeb\xd1\xc5\xdf\xeb\xce\xca\xa4\xeb\xd5\xb0\xfb\xc3\x6b\xc3\x6c\xba\xfa\xc3\x6d\xc3\x6e\xd8\xb7\xf1\xe3\xc3\x6f\xeb\xca\xeb\xcb\xeb\xcc\xeb\xcd\xeb\xd6\xe6\xc0\xeb\xd9\xc3\x70\xbf\xe8\xd2\xc8\xeb\xd7\xeb\xdc\xb8\xec\xeb\xd8\xc3\x71\xbd\xba\xc3\x72\xd0\xd8\xc3\x73\xb0\xb7\xc3\x74\xeb\xdd\xc4\xdc\xc3\x75\xc3\x76", /* 8100 */ "\xc3\x77\xc3\x78\xd6\xac\xc3\x79\xc3\x7a\xc3\x7b\xb4\xe0\xc3\x7c\xc3\x7d\xc2\xf6\xbc\xb9\xc3\x7e\xc3\x80\xeb\xda\xeb\xdb\xd4\xe0\xc6\xea\xc4\xd4\xeb\xdf\xc5\xa7\xd9\xf5\xc3\x81\xb2\xb1\xc3\x82\xeb\xe4\xc3\x83\xbd\xc5\xc3\x84\xc3\x85\xc3\x86\xeb\xe2\xc3\x87\xc3\x88\xc3\x89\xc3\x8a\xc3\x8b\xc3\x8c\xc3\x8d\xc3\x8e\xc3\x8f\xc3\x90\xc3\x91\xc3\x92\xc3\x93\xeb\xe3\xc3\x94\xc3\x95\xb8\xac\xc3\x96\xcd\xd1\xeb\xe5\xc3\x97\xc3\x98\xc3\x99\xeb\xe1\xc3\x9a\xc1\xb3\xc3\x9b\xc3\x9c\xc3\x9d\xc3\x9e\xc3\x9f\xc6\xa2\xc3\xa0\xc4\x40\xc4\x41\xc4\x42\xc4\x43\xc4\x44\xc4\x45\xcc\xf3\xc4\x46\xeb\xe6\xc4\x47\xc0\xb0\xd2\xb8\xeb\xe7\xc4\x48\xc4\x49\xc4\x4a\xb8\xaf\xb8\xad\xc4\x4b\xeb\xe8\xc7\xbb\xcd\xf3\xc4\x4c\xc4\x4d\xc4\x4e\xeb\xea\xeb\xeb\xc4\x4f\xc4\x50\xc4\x51\xc4\x52\xc4\x53\xeb\xed\xc4\x54\xc4\x55\xc4\x56\xc4\x57\xd0\xc8\xc4\x58\xeb\xf2\xc4\x59\xeb\xee\xc4\x5a\xc4\x5b\xc4\x5c\xeb\xf1\xc8\xf9\xc4\x5d\xd1\xfc\xeb\xec\xc4\x5e\xc4\x5f\xeb\xe9\xc4\x60\xc4\x61\xc4\x62\xc4\x63\xb8\xb9\xcf\xd9\xc4\xe5\xeb\xef\xeb\xf0\xcc\xda\xcd\xc8", /* 8180 */ "\xb0\xf2\xc4\x64\xeb\xf6\xc4\x65\xc4\x66\xc4\x67\xc4\x68\xc4\x69\xeb\xf5\xc4\x6a\xb2\xb2\xc4\x6b\xc4\x6c\xc4\x6d\xc4\x6e\xb8\xe0\xc4\x6f\xeb\xf7\xc4\x70\xc4\x71\xc4\x72\xc4\x73\xc4\x74\xc4\x75\xb1\xec\xc4\x76\xc4\x77\xcc\xc5\xc4\xa4\xcf\xa5\xc4\x78\xc4\x79\xc4\x7a\xc4\x7b\xc4\x7c\xeb\xf9\xc4\x7d\xc4\x7e\xec\xa2\xc4\x80\xc5\xf2\xc4\x81\xeb\xfa\xc4\x82\xc4\x83\xc4\x84\xc4\x85\xc4\x86\xc4\x87\xc4\x88\xc4\x89\xc9\xc5\xc4\x8a\xc4\x8b\xc4\x8c\xc4\x8d\xc4\x8e\xc4\x8f\xe2\xdf\xeb\xfe\xc4\x90\xc4\x91\xc4\x92\xc4\x93\xcd\xce\xec\xa1\xb1\xdb\xd3\xb7\xc4\x94\xc4\x95\xd2\xdc\xc4\x96\xc4\x97\xc4\x98\xeb\xfd\xc4\x99\xeb\xfb\xc4\x9a\xc4\x9b\xc4\x9c\xc4\x9d\xc4\x9e\xc4\x9f\xc4\xa0\xc5\x40\xc5\x41\xc5\x42\xc5\x43\xc5\x44\xc5\x45\xc5\x46\xc5\x47\xc5\x48\xc5\x49\xc5\x4a\xc5\x4b\xc5\x4c\xc5\x4d\xc5\x4e\xb3\xbc\xc5\x4f\xc5\x50\xc5\x51\xea\xb0\xc5\x52\xc5\x53\xd7\xd4\xc5\x54\xf4\xab\xb3\xf4\xc5\x55\xc5\x56\xc5\x57\xc5\x58\xc5\x59\xd6\xc1\xd6\xc2\xc5\x5a\xc5\x5b\xc5\x5c\xc5\x5d\xc5\x5e\xc5\x5f\xd5\xe9\xbe\xca\xc5\x60\xf4\xa7\xc5\x61", /* 8200 */ "\xd2\xa8\xf4\xa8\xf4\xa9\xc5\x62\xf4\xaa\xbe\xcb\xd3\xdf\xc5\x63\xc5\x64\xc5\x65\xc5\x66\xc5\x67\xc9\xe0\xc9\xe1\xc5\x68\xc5\x69\xf3\xc2\xc5\x6a\xca\xe6\xc5\x6b\xcc\xf2\xc5\x6c\xc5\x6d\xc5\x6e\xc5\x6f\xc5\x70\xc5\x71\xe2\xb6\xcb\xb4\xc5\x72\xce\xe8\xd6\xdb\xc5\x73\xf4\xad\xf4\xae\xf4\xaf\xc5\x74\xc5\x75\xc5\x76\xc5\x77\xf4\xb2\xc5\x78\xba\xbd\xf4\xb3\xb0\xe3\xf4\xb0\xc5\x79\xf4\xb1\xbd\xa2\xb2\xd5\xc5\x7a\xf4\xb6\xf4\xb7\xb6\xe6\xb2\xb0\xcf\xcf\xf4\xb4\xb4\xac\xc5\x7b\xf4\xb5\xc5\x7c\xc5\x7d\xf4\xb8\xc5\x7e\xc5\x80\xc5\x81\xc5\x82\xc5\x83\xf4\xb9\xc5\x84\xc5\x85\xcd\xa7\xc5\x86\xf4\xba\xc5\x87\xf4\xbb\xc5\x88\xc5\x89\xc5\x8a\xf4\xbc\xc5\x8b\xc5\x8c\xc5\x8d\xc5\x8e\xc5\x8f\xc5\x90\xc5\x91\xc5\x92\xcb\xd2\xc5\x93\xf4\xbd\xc5\x94\xc5\x95\xc5\x96\xc5\x97\xf4\xbe\xc5\x98\xc5\x99\xc5\x9a\xc5\x9b\xc5\x9c\xc5\x9d\xc5\x9e\xc5\x9f\xf4\xbf\xc5\xa0\xc6\x40\xc6\x41\xc6\x42\xc6\x43\xf4\xde\xc1\xbc\xbc\xe8\xc6\x44\xc9\xab\xd1\xde\xe5\xf5\xc6\x45\xc6\x46\xc6\x47\xc6\x48\xdc\xb3\xd2\xd5\xc6\x49\xc6\x4a\xdc\xb4\xb0\xac\xdc\xb5", /* 8280 */ "\xc6\x4b\xc6\x4c\xbd\xda\xc6\x4d\xdc\xb9\xc6\x4e\xc6\x4f\xc6\x50\xd8\xc2\xc6\x51\xdc\xb7\xd3\xf3\xc6\x52\xc9\xd6\xdc\xba\xdc\xb6\xc6\x53\xdc\xbb\xc3\xa2\xc6\x54\xc6\x55\xc6\x56\xc6\x57\xdc\xbc\xdc\xc5\xdc\xbd\xc6\x58\xc6\x59\xce\xdf\xd6\xa5\xc6\x5a\xdc\xcf\xc6\x5b\xdc\xcd\xc6\x5c\xc6\x5d\xdc\xd2\xbd\xe6\xc2\xab\xc6\x5e\xdc\xb8\xdc\xcb\xdc\xce\xdc\xbe\xb7\xd2\xb0\xc5\xdc\xc7\xd0\xbe\xdc\xc1\xbb\xa8\xc6\x5f\xb7\xbc\xdc\xcc\xc6\x60\xc6\x61\xdc\xc6\xdc\xbf\xc7\xdb\xc6\x62\xc6\x63\xc6\x64\xd1\xbf\xdc\xc0\xc6\x65\xc6\x66\xdc\xca\xc6\x67\xc6\x68\xdc\xd0\xc6\x69\xc6\x6a\xce\xad\xdc\xc2\xc6\x6b\xdc\xc3\xdc\xc8\xdc\xc9\xb2\xd4\xdc\xd1\xcb\xd5\xc6\x6c\xd4\xb7\xdc\xdb\xdc\xdf\xcc\xa6\xdc\xe6\xc6\x6d\xc3\xe7\xdc\xdc\xc6\x6e\xc6\x6f\xbf\xc1\xdc\xd9\xc6\x70\xb0\xfa\xb9\xb6\xdc\xe5\xdc\xd3\xc6\x71\xdc\xc4\xdc\xd6\xc8\xf4\xbf\xe0\xc6\x72\xc6\x73\xc6\x74\xc6\x75\xc9\xbb\xc6\x76\xc6\x77\xc6\x78\xb1\xbd\xc6\x79\xd3\xa2\xc6\x7a\xc6\x7b\xdc\xda\xc6\x7c\xc6\x7d\xdc\xd5\xc6\x7e\xc6\xbb\xc6\x80\xdc\xde\xc6\x81\xc6\x82\xc6\x83\xc6\x84", /* 8300 */ "\xc6\x85\xd7\xc2\xc3\xaf\xb7\xb6\xc7\xd1\xc3\xa9\xdc\xe2\xdc\xd8\xdc\xeb\xdc\xd4\xc6\x86\xc6\x87\xdc\xdd\xc6\x88\xbe\xa5\xdc\xd7\xc6\x89\xdc\xe0\xc6\x8a\xc6\x8b\xdc\xe3\xdc\xe4\xc6\x8c\xdc\xf8\xc6\x8d\xc6\x8e\xdc\xe1\xdd\xa2\xdc\xe7\xc6\x8f\xc6\x90\xc6\x91\xc6\x92\xc6\x93\xc6\x94\xc6\x95\xc6\x96\xc6\x97\xc6\x98\xbc\xeb\xb4\xc4\xc6\x99\xc6\x9a\xc3\xa3\xb2\xe7\xdc\xfa\xc6\x9b\xdc\xf2\xc6\x9c\xdc\xef\xc6\x9d\xdc\xfc\xdc\xee\xd2\xf0\xb2\xe8\xc6\x9e\xc8\xd7\xc8\xe3\xdc\xfb\xc6\x9f\xdc\xed\xc6\xa0\xc7\x40\xc7\x41\xdc\xf7\xc7\x42\xc7\x43\xdc\xf5\xc7\x44\xc7\x45\xbe\xa3\xdc\xf4\xc7\x46\xb2\xdd\xc7\x47\xc7\x48\xc7\x49\xc7\x4a\xc7\x4b\xdc\xf3\xbc\xf6\xdc\xe8\xbb\xc4\xc7\x4c\xc0\xf3\xc7\x4d\xc7\x4e\xc7\x4f\xc7\x50\xc7\x51\xbc\xd4\xdc\xe9\xdc\xea\xc7\x52\xdc\xf1\xdc\xf6\xdc\xf9\xb5\xb4\xc7\x53\xc8\xd9\xbb\xe7\xdc\xfe\xdc\xfd\xd3\xab\xdd\xa1\xdd\xa3\xdd\xa5\xd2\xf1\xdd\xa4\xdd\xa6\xdd\xa7\xd2\xa9\xc7\x54\xc7\x55\xc7\x56\xc7\x57\xc7\x58\xc7\x59\xc7\x5a\xba\xc9\xdd\xa9\xc7\x5b\xc7\x5c\xdd\xb6\xdd\xb1\xdd\xb4\xc7\x5d\xc7\x5e", /* 8380 */ "\xc7\x5f\xc7\x60\xc7\x61\xc7\x62\xc7\x63\xdd\xb0\xc6\xce\xc7\x64\xc7\x65\xc0\xf2\xc7\x66\xc7\x67\xc7\x68\xc7\x69\xc9\xaf\xc7\x6a\xc7\x6b\xc7\x6c\xdc\xec\xdd\xae\xc7\x6d\xc7\x6e\xc7\x6f\xc7\x70\xdd\xb7\xc7\x71\xc7\x72\xdc\xf0\xdd\xaf\xc7\x73\xdd\xb8\xc7\x74\xdd\xac\xc7\x75\xc7\x76\xc7\x77\xc7\x78\xc7\x79\xc7\x7a\xc7\x7b\xdd\xb9\xdd\xb3\xdd\xad\xc4\xaa\xc7\x7c\xc7\x7d\xc7\x7e\xc7\x80\xdd\xa8\xc0\xb3\xc1\xab\xdd\xaa\xdd\xab\xc7\x81\xdd\xb2\xbb\xf1\xdd\xb5\xd3\xa8\xdd\xba\xc7\x82\xdd\xbb\xc3\xa7\xc7\x83\xc7\x84\xdd\xd2\xdd\xbc\xc7\x85\xc7\x86\xc7\x87\xdd\xd1\xc7\x88\xb9\xbd\xc7\x89\xc7\x8a\xbe\xd5\xc7\x8b\xbe\xfa\xc7\x8c\xc7\x8d\xba\xca\xc7\x8e\xc7\x8f\xc7\x90\xc7\x91\xdd\xca\xc7\x92\xdd\xc5\xc7\x93\xdd\xbf\xc7\x94\xc7\x95\xc7\x96\xb2\xcb\xdd\xc3\xc7\x97\xdd\xcb\xb2\xa4\xdd\xd5\xc7\x98\xc7\x99\xc7\x9a\xdd\xbe\xc7\x9b\xc7\x9c\xc7\x9d\xc6\xd0\xdd\xd0\xc7\x9e\xc7\x9f\xc7\xa0\xc8\x40\xc8\x41\xdd\xd4\xc1\xe2\xb7\xc6\xc8\x42\xc8\x43\xc8\x44\xc8\x45\xc8\x46\xdd\xce\xdd\xcf\xc8\x47\xc8\x48\xc8\x49\xdd\xc4\xc8\x4a\xc8\x4b", /* 8400 */ "\xc8\x4c\xdd\xbd\xc8\x4d\xdd\xcd\xcc\xd1\xc8\x4e\xdd\xc9\xc8\x4f\xc8\x50\xc8\x51\xc8\x52\xdd\xc2\xc3\xc8\xc6\xbc\xce\xae\xdd\xcc\xc8\x53\xdd\xc8\xc8\x54\xc8\x55\xc8\x56\xc8\x57\xc8\x58\xc8\x59\xdd\xc1\xc8\x5a\xc8\x5b\xc8\x5c\xdd\xc6\xc2\xdc\xc8\x5d\xc8\x5e\xc8\x5f\xc8\x60\xc8\x61\xc8\x62\xd3\xa9\xd3\xaa\xdd\xd3\xcf\xf4\xc8\xf8\xc8\x63\xc8\x64\xc8\x65\xc8\x66\xc8\x67\xc8\x68\xc8\x69\xc8\x6a\xdd\xe6\xc8\x6b\xc8\x6c\xc8\x6d\xc8\x6e\xc8\x6f\xc8\x70\xdd\xc7\xc8\x71\xc8\x72\xc8\x73\xdd\xe0\xc2\xe4\xc8\x74\xc8\x75\xc8\x76\xc8\x77\xc8\x78\xc8\x79\xc8\x7a\xc8\x7b\xdd\xe1\xc8\x7c\xc8\x7d\xc8\x7e\xc8\x80\xc8\x81\xc8\x82\xc8\x83\xc8\x84\xc8\x85\xc8\x86\xdd\xd7\xc8\x87\xc8\x88\xc8\x89\xc8\x8a\xc8\x8b\xd6\xf8\xc8\x8c\xdd\xd9\xdd\xd8\xb8\xf0\xdd\xd6\xc8\x8d\xc8\x8e\xc8\x8f\xc8\x90\xc6\xcf\xc8\x91\xb6\xad\xc8\x92\xc8\x93\xc8\x94\xc8\x95\xc8\x96\xdd\xe2\xc8\x97\xba\xf9\xd4\xe1\xdd\xe7\xc8\x98\xc8\x99\xc8\x9a\xb4\xd0\xc8\x9b\xdd\xda\xc8\x9c\xbf\xfb\xdd\xe3\xc8\x9d\xdd\xdf\xc8\x9e\xdd\xdd\xc8\x9f\xc8\xa0\xc9\x40\xc9\x41\xc9\x42", /* 8480 */ "\xc9\x43\xc9\x44\xb5\xd9\xc9\x45\xc9\x46\xc9\x47\xc9\x48\xdd\xdb\xdd\xdc\xdd\xde\xc9\x49\xbd\xaf\xdd\xe4\xc9\x4a\xdd\xe5\xc9\x4b\xc9\x4c\xc9\x4d\xc9\x4e\xc9\x4f\xc9\x50\xc9\x51\xc9\x52\xdd\xf5\xc9\x53\xc3\xc9\xc9\x54\xc9\x55\xcb\xe2\xc9\x56\xc9\x57\xc9\x58\xc9\x59\xdd\xf2\xc9\x5a\xc9\x5b\xc9\x5c\xc9\x5d\xc9\x5e\xc9\x5f\xc9\x60\xc9\x61\xc9\x62\xc9\x63\xc9\x64\xc9\x65\xc9\x66\xd8\xe1\xc9\x67\xc9\x68\xc6\xd1\xc9\x69\xdd\xf4\xc9\x6a\xc9\x6b\xc9\x6c\xd5\xf4\xdd\xf3\xdd\xf0\xc9\x6d\xc9\x6e\xdd\xec\xc9\x6f\xdd\xef\xc9\x70\xdd\xe8\xc9\x71\xc9\x72\xd0\xee\xc9\x73\xc9\x74\xc9\x75\xc9\x76\xc8\xd8\xdd\xee\xc9\x77\xc9\x78\xdd\xe9\xc9\x79\xc9\x7a\xdd\xea\xcb\xf2\xc9\x7b\xdd\xed\xc9\x7c\xc9\x7d\xb1\xcd\xc9\x7e\xc9\x80\xc9\x81\xc9\x82\xc9\x83\xc9\x84\xc0\xb6\xc9\x85\xbc\xbb\xdd\xf1\xc9\x86\xc9\x87\xdd\xf7\xc9\x88\xdd\xf6\xdd\xeb\xc9\x89\xc9\x8a\xc9\x8b\xc9\x8c\xc9\x8d\xc5\xee\xc9\x8e\xc9\x8f\xc9\x90\xdd\xfb\xc9\x91\xc9\x92\xc9\x93\xc9\x94\xc9\x95\xc9\x96\xc9\x97\xc9\x98\xc9\x99\xc9\x9a\xc9\x9b\xde\xa4\xc9\x9c\xc9\x9d\xde\xa3", /* 8500 */ "\xc9\x9e\xc9\x9f\xc9\xa0\xca\x40\xca\x41\xca\x42\xca\x43\xca\x44\xca\x45\xca\x46\xca\x47\xca\x48\xdd\xf8\xca\x49\xca\x4a\xca\x4b\xca\x4c\xc3\xef\xca\x4d\xc2\xfb\xca\x4e\xca\x4f\xca\x50\xd5\xe1\xca\x51\xca\x52\xce\xb5\xca\x53\xca\x54\xca\x55\xca\x56\xdd\xfd\xca\x57\xb2\xcc\xca\x58\xca\x59\xca\x5a\xca\x5b\xca\x5c\xca\x5d\xca\x5e\xca\x5f\xca\x60\xc4\xe8\xca\xdf\xca\x61\xca\x62\xca\x63\xca\x64\xca\x65\xca\x66\xca\x67\xca\x68\xca\x69\xca\x6a\xc7\xbe\xdd\xfa\xdd\xfc\xdd\xfe\xde\xa2\xb0\xaa\xb1\xce\xca\x6b\xca\x6c\xca\x6d\xca\x6e\xca\x6f\xde\xac\xca\x70\xca\x71\xca\x72\xca\x73\xde\xa6\xbd\xb6\xc8\xef\xca\x74\xca\x75\xca\x76\xca\x77\xca\x78\xca\x79\xca\x7a\xca\x7b\xca\x7c\xca\x7d\xca\x7e\xde\xa1\xca\x80\xca\x81\xde\xa5\xca\x82\xca\x83\xca\x84\xca\x85\xde\xa9\xca\x86\xca\x87\xca\x88\xca\x89\xca\x8a\xde\xa8\xca\x8b\xca\x8c\xca\x8d\xde\xa7\xca\x8e\xca\x8f\xca\x90\xca\x91\xca\x92\xca\x93\xca\x94\xca\x95\xca\x96\xde\xad\xca\x97\xd4\xcc\xca\x98\xca\x99\xca\x9a\xca\x9b\xde\xb3\xde\xaa\xde\xae\xca\x9c\xca\x9d\xc0\xd9\xca\x9e", /* 8580 */ "\xca\x9f\xca\xa0\xcb\x40\xcb\x41\xb1\xa1\xde\xb6\xcb\x42\xde\xb1\xcb\x43\xcb\x44\xcb\x45\xcb\x46\xcb\x47\xcb\x48\xcb\x49\xde\xb2\xcb\x4a\xcb\x4b\xcb\x4c\xcb\x4d\xcb\x4e\xcb\x4f\xcb\x50\xcb\x51\xcb\x52\xcb\x53\xcb\x54\xd1\xa6\xde\xb5\xcb\x55\xcb\x56\xcb\x57\xcb\x58\xcb\x59\xcb\x5a\xcb\x5b\xde\xaf\xcb\x5c\xcb\x5d\xcb\x5e\xde\xb0\xcb\x5f\xd0\xbd\xcb\x60\xcb\x61\xcb\x62\xde\xb4\xca\xed\xde\xb9\xcb\x63\xcb\x64\xcb\x65\xcb\x66\xcb\x67\xcb\x68\xde\xb8\xcb\x69\xde\xb7\xcb\x6a\xcb\x6b\xcb\x6c\xcb\x6d\xcb\x6e\xcb\x6f\xcb\x70\xde\xbb\xcb\x71\xcb\x72\xcb\x73\xcb\x74\xcb\x75\xcb\x76\xcb\x77\xbd\xe5\xcb\x78\xcb\x79\xcb\x7a\xcb\x7b\xcb\x7c\xb2\xd8\xc3\xea\xcb\x7d\xcb\x7e\xde\xba\xcb\x80\xc5\xba\xcb\x81\xcb\x82\xcb\x83\xcb\x84\xcb\x85\xcb\x86\xde\xbc\xcb\x87\xcb\x88\xcb\x89\xcb\x8a\xcb\x8b\xcb\x8c\xcb\x8d\xcc\xd9\xcb\x8e\xcb\x8f\xcb\x90\xcb\x91\xb7\xaa\xcb\x92\xcb\x93\xcb\x94\xcb\x95\xcb\x96\xcb\x97\xcb\x98\xcb\x99\xcb\x9a\xcb\x9b\xcb\x9c\xcb\x9d\xcb\x9e\xcb\x9f\xcb\xa0\xcc\x40\xcc\x41\xd4\xe5\xcc\x42\xcc\x43\xcc\x44\xde\xbd", /* 8600 */ "\xcc\x45\xcc\x46\xcc\x47\xcc\x48\xcc\x49\xde\xbf\xcc\x4a\xcc\x4b\xcc\x4c\xcc\x4d\xcc\x4e\xcc\x4f\xcc\x50\xcc\x51\xcc\x52\xcc\x53\xcc\x54\xc4\xa2\xcc\x55\xcc\x56\xcc\x57\xcc\x58\xde\xc1\xcc\x59\xcc\x5a\xcc\x5b\xcc\x5c\xcc\x5d\xcc\x5e\xcc\x5f\xcc\x60\xcc\x61\xcc\x62\xcc\x63\xcc\x64\xcc\x65\xcc\x66\xcc\x67\xcc\x68\xde\xbe\xcc\x69\xde\xc0\xcc\x6a\xcc\x6b\xcc\x6c\xcc\x6d\xcc\x6e\xcc\x6f\xcc\x70\xcc\x71\xcc\x72\xcc\x73\xcc\x74\xcc\x75\xcc\x76\xcc\x77\xd5\xba\xcc\x78\xcc\x79\xcc\x7a\xde\xc2\xcc\x7b\xcc\x7c\xcc\x7d\xcc\x7e\xcc\x80\xcc\x81\xcc\x82\xcc\x83\xcc\x84\xcc\x85\xcc\x86\xcc\x87\xcc\x88\xcc\x89\xcc\x8a\xcc\x8b\xf2\xae\xbb\xa2\xc2\xb2\xc5\xb0\xc2\xc7\xcc\x8c\xcc\x8d\xf2\xaf\xcc\x8e\xcc\x8f\xcc\x90\xcc\x91\xcc\x92\xd0\xe9\xcc\x93\xcc\x94\xcc\x95\xd3\xdd\xcc\x96\xcc\x97\xcc\x98\xeb\xbd\xcc\x99\xcc\x9a\xcc\x9b\xcc\x9c\xcc\x9d\xcc\x9e\xcc\x9f\xcc\xa0\xb3\xe6\xf2\xb0\xcd\x40\xf2\xb1\xcd\x41\xcd\x42\xca\xad\xcd\x43\xcd\x44\xcd\x45\xcd\x46\xcd\x47\xcd\x48\xcd\x49\xba\xe7\xf2\xb3\xf2\xb5\xf2\xb4\xcb\xe4\xcf\xba\xf2\xb2", /* 8680 */ "\xca\xb4\xd2\xcf\xc2\xec\xcd\x4a\xcd\x4b\xcd\x4c\xcd\x4d\xcd\x4e\xcd\x4f\xcd\x50\xce\xc3\xf2\xb8\xb0\xf6\xf2\xb7\xcd\x51\xcd\x52\xcd\x53\xcd\x54\xcd\x55\xf2\xbe\xcd\x56\xb2\xcf\xcd\x57\xcd\x58\xcd\x59\xcd\x5a\xcd\x5b\xcd\x5c\xd1\xc1\xf2\xba\xcd\x5d\xcd\x5e\xcd\x5f\xcd\x60\xcd\x61\xf2\xbc\xd4\xe9\xcd\x62\xcd\x63\xf2\xbb\xf2\xb6\xf2\xbf\xf2\xbd\xcd\x64\xf2\xb9\xcd\x65\xcd\x66\xf2\xc7\xf2\xc4\xf2\xc6\xcd\x67\xcd\x68\xf2\xca\xf2\xc2\xf2\xc0\xcd\x69\xcd\x6a\xcd\x6b\xf2\xc5\xcd\x6c\xcd\x6d\xcd\x6e\xcd\x6f\xcd\x70\xd6\xfb\xcd\x71\xcd\x72\xcd\x73\xf2\xc1\xcd\x74\xc7\xf9\xc9\xdf\xcd\x75\xf2\xc8\xb9\xc6\xb5\xb0\xcd\x76\xcd\x77\xf2\xc3\xf2\xc9\xf2\xd0\xf2\xd6\xcd\x78\xcd\x79\xbb\xd7\xcd\x7a\xcd\x7b\xcd\x7c\xf2\xd5\xcd\xdc\xcd\x7d\xd6\xeb\xcd\x7e\xcd\x80\xf2\xd2\xf2\xd4\xcd\x81\xcd\x82\xcd\x83\xcd\x84\xb8\xf2\xcd\x85\xcd\x86\xcd\x87\xcd\x88\xf2\xcb\xcd\x89\xcd\x8a\xcd\x8b\xf2\xce\xc2\xf9\xcd\x8c\xd5\xdd\xf2\xcc\xf2\xcd\xf2\xcf\xf2\xd3\xcd\x8d\xcd\x8e\xcd\x8f\xf2\xd9\xd3\xbc\xcd\x90\xcd\x91\xcd\x92\xcd\x93\xb6\xea\xcd\x94", /* 8700 */ "\xca\xf1\xcd\x95\xb7\xe4\xf2\xd7\xcd\x96\xcd\x97\xcd\x98\xf2\xd8\xf2\xda\xf2\xdd\xf2\xdb\xcd\x99\xcd\x9a\xf2\xdc\xcd\x9b\xcd\x9c\xcd\x9d\xcd\x9e\xd1\xd1\xf2\xd1\xcd\x9f\xcd\xc9\xcd\xa0\xce\xcf\xd6\xa9\xce\x40\xf2\xe3\xce\x41\xc3\xdb\xce\x42\xf2\xe0\xce\x43\xce\x44\xc0\xaf\xf2\xec\xf2\xde\xce\x45\xf2\xe1\xce\x46\xce\x47\xce\x48\xf2\xe8\xce\x49\xce\x4a\xce\x4b\xce\x4c\xf2\xe2\xce\x4d\xce\x4e\xf2\xe7\xce\x4f\xce\x50\xf2\xe6\xce\x51\xce\x52\xf2\xe9\xce\x53\xce\x54\xce\x55\xf2\xdf\xce\x56\xce\x57\xf2\xe4\xf2\xea\xce\x58\xce\x59\xce\x5a\xce\x5b\xce\x5c\xce\x5d\xce\x5e\xd3\xac\xf2\xe5\xb2\xf5\xce\x5f\xce\x60\xf2\xf2\xce\x61\xd0\xab\xce\x62\xce\x63\xce\x64\xce\x65\xf2\xf5\xce\x66\xce\x67\xce\x68\xbb\xc8\xce\x69\xf2\xf9\xce\x6a\xce\x6b\xce\x6c\xce\x6d\xce\x6e\xce\x6f\xf2\xf0\xce\x70\xce\x71\xf2\xf6\xf2\xf8\xf2\xfa\xce\x72\xce\x73\xce\x74\xce\x75\xce\x76\xce\x77\xce\x78\xce\x79\xf2\xf3\xce\x7a\xf2\xf1\xce\x7b\xce\x7c\xce\x7d\xba\xfb\xce\x7e\xb5\xfb\xce\x80\xce\x81\xce\x82\xce\x83\xf2\xef\xf2\xf7\xf2\xed\xf2\xee\xce\x84", /* 8780 */ "\xce\x85\xce\x86\xf2\xeb\xf3\xa6\xce\x87\xf3\xa3\xce\x88\xce\x89\xf3\xa2\xce\x8a\xce\x8b\xf2\xf4\xce\x8c\xc8\xda\xce\x8d\xce\x8e\xce\x8f\xce\x90\xce\x91\xf2\xfb\xce\x92\xce\x93\xce\x94\xf3\xa5\xce\x95\xce\x96\xce\x97\xce\x98\xce\x99\xce\x9a\xce\x9b\xc3\xf8\xce\x9c\xce\x9d\xce\x9e\xce\x9f\xce\xa0\xcf\x40\xcf\x41\xcf\x42\xf2\xfd\xcf\x43\xcf\x44\xf3\xa7\xf3\xa9\xf3\xa4\xcf\x45\xf2\xfc\xcf\x46\xcf\x47\xcf\x48\xf3\xab\xcf\x49\xf3\xaa\xcf\x4a\xcf\x4b\xcf\x4c\xcf\x4d\xc2\xdd\xcf\x4e\xcf\x4f\xf3\xae\xcf\x50\xcf\x51\xf3\xb0\xcf\x52\xcf\x53\xcf\x54\xcf\x55\xcf\x56\xf3\xa1\xcf\x57\xcf\x58\xcf\x59\xf3\xb1\xf3\xac\xcf\x5a\xcf\x5b\xcf\x5c\xcf\x5d\xcf\x5e\xf3\xaf\xf2\xfe\xf3\xad\xcf\x5f\xcf\x60\xcf\x61\xcf\x62\xcf\x63\xcf\x64\xcf\x65\xf3\xb2\xcf\x66\xcf\x67\xcf\x68\xcf\x69\xf3\xb4\xcf\x6a\xcf\x6b\xcf\x6c\xcf\x6d\xf3\xa8\xcf\x6e\xcf\x6f\xcf\x70\xcf\x71\xf3\xb3\xcf\x72\xcf\x73\xcf\x74\xf3\xb5\xcf\x75\xcf\x76\xcf\x77\xcf\x78\xcf\x79\xcf\x7a\xcf\x7b\xcf\x7c\xcf\x7d\xcf\x7e\xd0\xb7\xcf\x80\xcf\x81\xcf\x82\xcf\x83\xf3\xb8\xcf\x84", /* 8800 */ "\xcf\x85\xcf\x86\xcf\x87\xd9\xf9\xcf\x88\xcf\x89\xcf\x8a\xcf\x8b\xcf\x8c\xcf\x8d\xf3\xb9\xcf\x8e\xcf\x8f\xcf\x90\xcf\x91\xcf\x92\xcf\x93\xcf\x94\xcf\x95\xf3\xb7\xcf\x96\xc8\xe4\xf3\xb6\xcf\x97\xcf\x98\xcf\x99\xcf\x9a\xf3\xba\xcf\x9b\xcf\x9c\xcf\x9d\xcf\x9e\xcf\x9f\xf3\xbb\xb4\xc0\xcf\xa0\xd0\x40\xd0\x41\xd0\x42\xd0\x43\xd0\x44\xd0\x45\xd0\x46\xd0\x47\xd0\x48\xd0\x49\xd0\x4a\xd0\x4b\xd0\x4c\xd0\x4d\xee\xc3\xd0\x4e\xd0\x4f\xd0\x50\xd0\x51\xd0\x52\xd0\x53\xf3\xbc\xd0\x54\xd0\x55\xf3\xbd\xd0\x56\xd0\x57\xd0\x58\xd1\xaa\xd0\x59\xd0\x5a\xd0\x5b\xf4\xac\xd0\xc6\xd0\x5c\xd0\x5d\xd0\x5e\xd0\x5f\xd0\x60\xd0\x61\xd0\xd0\xd1\xdc\xd0\x62\xd0\x63\xd0\x64\xd0\x65\xd0\x66\xd0\x67\xcf\xce\xd0\x68\xd0\x69\xbd\xd6\xd0\x6a\xd1\xc3\xd0\x6b\xd0\x6c\xd0\x6d\xd0\x6e\xd0\x6f\xd0\x70\xd0\x71\xba\xe2\xe1\xe9\xd2\xc2\xf1\xc2\xb2\xb9\xd0\x72\xd0\x73\xb1\xed\xf1\xc3\xd0\x74\xc9\xc0\xb3\xc4\xd0\x75\xd9\xf2\xd0\x76\xcb\xa5\xd0\x77\xf1\xc4\xd0\x78\xd0\x79\xd0\x7a\xd0\x7b\xd6\xd4\xd0\x7c\xd0\x7d\xd0\x7e\xd0\x80\xd0\x81\xf1\xc5\xf4\xc0\xf1\xc6", /* 8880 */ "\xd0\x82\xd4\xac\xf1\xc7\xd0\x83\xb0\xc0\xf4\xc1\xd0\x84\xd0\x85\xf4\xc2\xd0\x86\xd0\x87\xb4\xfc\xd0\x88\xc5\xdb\xd0\x89\xd0\x8a\xd0\x8b\xd0\x8c\xcc\xbb\xd0\x8d\xd0\x8e\xd0\x8f\xd0\xe4\xd0\x90\xd0\x91\xd0\x92\xd0\x93\xd0\x94\xcd\xe0\xd0\x95\xd0\x96\xd0\x97\xd0\x98\xd0\x99\xf1\xc8\xd0\x9a\xd9\xf3\xd0\x9b\xd0\x9c\xd0\x9d\xd0\x9e\xd0\x9f\xd0\xa0\xb1\xbb\xd1\x40\xcf\xae\xd1\x41\xd1\x42\xd1\x43\xb8\xa4\xd1\x44\xd1\x45\xd1\x46\xd1\x47\xd1\x48\xf1\xca\xd1\x49\xd1\x4a\xd1\x4b\xd1\x4c\xf1\xcb\xd1\x4d\xd1\x4e\xd1\x4f\xd1\x50\xb2\xc3\xc1\xd1\xd1\x51\xd1\x52\xd7\xb0\xf1\xc9\xd1\x53\xd1\x54\xf1\xcc\xd1\x55\xd1\x56\xd1\x57\xd1\x58\xf1\xce\xd1\x59\xd1\x5a\xd1\x5b\xd9\xf6\xd1\x5c\xd2\xe1\xd4\xa3\xd1\x5d\xd1\x5e\xf4\xc3\xc8\xb9\xd1\x5f\xd1\x60\xd1\x61\xd1\x62\xd1\x63\xf4\xc4\xd1\x64\xd1\x65\xf1\xcd\xf1\xcf\xbf\xe3\xf1\xd0\xd1\x66\xd1\x67\xf1\xd4\xd1\x68\xd1\x69\xd1\x6a\xd1\x6b\xd1\x6c\xd1\x6d\xd1\x6e\xf1\xd6\xf1\xd1\xd1\x6f\xc9\xd1\xc5\xe1\xd1\x70\xd1\x71\xd1\x72\xc2\xe3\xb9\xfc\xd1\x73\xd1\x74\xf1\xd3\xd1\x75\xf1\xd5\xd1\x76", /* 8900 */ "\xd1\x77\xd1\x78\xb9\xd3\xd1\x79\xd1\x7a\xd1\x7b\xd1\x7c\xd1\x7d\xd1\x7e\xd1\x80\xf1\xdb\xd1\x81\xd1\x82\xd1\x83\xd1\x84\xd1\x85\xba\xd6\xd1\x86\xb0\xfd\xf1\xd9\xd1\x87\xd1\x88\xd1\x89\xd1\x8a\xd1\x8b\xf1\xd8\xf1\xd2\xf1\xda\xd1\x8c\xd1\x8d\xd1\x8e\xd1\x8f\xd1\x90\xf1\xd7\xd1\x91\xd1\x92\xd1\x93\xc8\xec\xd1\x94\xd1\x95\xd1\x96\xd1\x97\xcd\xca\xf1\xdd\xd1\x98\xd1\x99\xd1\x9a\xd1\x9b\xe5\xbd\xd1\x9c\xd1\x9d\xd1\x9e\xf1\xdc\xd1\x9f\xf1\xde\xd1\xa0\xd2\x40\xd2\x41\xd2\x42\xd2\x43\xd2\x44\xd2\x45\xd2\x46\xd2\x47\xd2\x48\xf1\xdf\xd2\x49\xd2\x4a\xcf\xe5\xd2\x4b\xd2\x4c\xd2\x4d\xd2\x4e\xd2\x4f\xd2\x50\xd2\x51\xd2\x52\xd2\x53\xd2\x54\xd2\x55\xd2\x56\xd2\x57\xd2\x58\xd2\x59\xd2\x5a\xd2\x5b\xd2\x5c\xd2\x5d\xd2\x5e\xd2\x5f\xd2\x60\xd2\x61\xd2\x62\xd2\x63\xf4\xc5\xbd\xf3\xd2\x64\xd2\x65\xd2\x66\xd2\x67\xd2\x68\xd2\x69\xf1\xe0\xd2\x6a\xd2\x6b\xd2\x6c\xd2\x6d\xd2\x6e\xd2\x6f\xd2\x70\xd2\x71\xd2\x72\xd2\x73\xd2\x74\xd2\x75\xd2\x76\xd2\x77\xd2\x78\xd2\x79\xd2\x7a\xd2\x7b\xd2\x7c\xd2\x7d\xf1\xe1\xd2\x7e\xd2\x80\xd2\x81\xce\xf7", /* 8980 */ "\xd2\x82\xd2\xaa\xd2\x83\xf1\xfb\xd2\x84\xd2\x85\xb8\xb2\xd2\x86\xd2\x87\xd2\x88\xd2\x89\xd2\x8a\xd2\x8b\xd2\x8c\xd2\x8d\xd2\x8e\xd2\x8f\xd2\x90\xd2\x91\xd2\x92\xd2\x93\xd2\x94\xd2\x95\xd2\x96\xd2\x97\xd2\x98\xd2\x99\xd2\x9a\xd2\x9b\xd2\x9c\xd2\x9d\xd2\x9e\xd2\x9f\xd2\xa0\xd3\x40\xd3\x41\xd3\x42\xd3\x43\xd3\x44\xd3\x45\xd3\x46\xd3\x47\xd3\x48\xd3\x49\xd3\x4a\xd3\x4b\xd3\x4c\xd3\x4d\xd3\x4e\xd3\x4f\xd3\x50\xd3\x51\xd3\x52\xd3\x53\xd3\x54\xd3\x55\xd3\x56\xd3\x57\xd3\x58\xd3\x59\xd3\x5a\xd3\x5b\xd3\x5c\xd3\x5d\xd3\x5e\xbc\xfb\xb9\xdb\xd3\x5f\xb9\xe6\xc3\xd9\xca\xd3\xea\xe8\xc0\xc0\xbe\xf5\xea\xe9\xea\xea\xea\xeb\xd3\x60\xea\xec\xea\xed\xea\xee\xea\xef\xbd\xc7\xd3\x61\xd3\x62\xd3\x63\xf5\xfb\xd3\x64\xd3\x65\xd3\x66\xf5\xfd\xd3\x67\xf5\xfe\xd3\x68\xf5\xfc\xd3\x69\xd3\x6a\xd3\x6b\xd3\x6c\xbd\xe2\xd3\x6d\xf6\xa1\xb4\xa5\xd3\x6e\xd3\x6f\xd3\x70\xd3\x71\xf6\xa2\xd3\x72\xd3\x73\xd3\x74\xf6\xa3\xd3\x75\xd3\x76\xd3\x77\xec\xb2\xd3\x78\xd3\x79\xd3\x7a\xd3\x7b\xd3\x7c\xd3\x7d\xd3\x7e\xd3\x80\xd3\x81\xd3\x82\xd3\x83\xd3\x84", /* 8a00 */ "\xd1\xd4\xd3\x85\xd3\x86\xd3\x87\xd3\x88\xd3\x89\xd3\x8a\xd9\xea\xd3\x8b\xd3\x8c\xd3\x8d\xd3\x8e\xd3\x8f\xd3\x90\xd3\x91\xd3\x92\xd3\x93\xd3\x94\xd3\x95\xd3\x96\xd3\x97\xd3\x98\xd3\x99\xd3\x9a\xd3\x9b\xd3\x9c\xd3\x9d\xd3\x9e\xd3\x9f\xd3\xa0\xd4\x40\xd4\x41\xd4\x42\xd4\x43\xd4\x44\xd4\x45\xd4\x46\xd4\x47\xd4\x48\xd4\x49\xd4\x4a\xd4\x4b\xd4\x4c\xd4\x4d\xd4\x4e\xd4\x4f\xd4\x50\xd4\x51\xd4\x52\xd4\x53\xd4\x54\xd4\x55\xd4\x56\xd4\x57\xd4\x58\xd4\x59\xd4\x5a\xd4\x5b\xd4\x5c\xd4\x5d\xd4\x5e\xd4\x5f\xf6\xa4\xd4\x60\xd4\x61\xd4\x62\xd4\x63\xd4\x64\xd4\x65\xd4\x66\xd4\x67\xd4\x68\xee\xba\xd4\x69\xd4\x6a\xd4\x6b\xd4\x6c\xd4\x6d\xd4\x6e\xd4\x6f\xd4\x70\xd4\x71\xd4\x72\xd4\x73\xd4\x74\xd4\x75\xd4\x76\xd4\x77\xd4\x78\xd4\x79\xd4\x7a\xd4\x7b\xd4\x7c\xd4\x7d\xd4\x7e\xd4\x80\xd4\x81\xd4\x82\xd4\x83\xd4\x84\xd4\x85\xd4\x86\xd4\x87\xd4\x88\xd4\x89\xd4\x8a\xd4\x8b\xd4\x8c\xd4\x8d\xd4\x8e\xd4\x8f\xd4\x90\xd4\x91\xd4\x92\xd4\x93\xd4\x94\xd4\x95\xd4\x96\xd4\x97\xd4\x98\xd4\x99\xd5\xb2\xd4\x9a\xd4\x9b\xd4\x9c\xd4\x9d\xd4\x9e\xd4\x9f", /* 8a80 */ "\xd4\xa0\xd5\x40\xd5\x41\xd5\x42\xd5\x43\xd5\x44\xd5\x45\xd5\x46\xd5\x47\xd3\xfe\xcc\xdc\xd5\x48\xd5\x49\xd5\x4a\xd5\x4b\xd5\x4c\xd5\x4d\xd5\x4e\xd5\x4f\xca\xc4\xd5\x50\xd5\x51\xd5\x52\xd5\x53\xd5\x54\xd5\x55\xd5\x56\xd5\x57\xd5\x58\xd5\x59\xd5\x5a\xd5\x5b\xd5\x5c\xd5\x5d\xd5\x5e\xd5\x5f\xd5\x60\xd5\x61\xd5\x62\xd5\x63\xd5\x64\xd5\x65\xd5\x66\xd5\x67\xd5\x68\xd5\x69\xd5\x6a\xd5\x6b\xd5\x6c\xd5\x6d\xd5\x6e\xd5\x6f\xd5\x70\xd5\x71\xd5\x72\xd5\x73\xd5\x74\xd5\x75\xd5\x76\xd5\x77\xd5\x78\xd5\x79\xd5\x7a\xd5\x7b\xd5\x7c\xd5\x7d\xd5\x7e\xd5\x80\xd5\x81\xd5\x82\xd5\x83\xd5\x84\xd5\x85\xd5\x86\xd5\x87\xd5\x88\xd5\x89\xd5\x8a\xd5\x8b\xd5\x8c\xd5\x8d\xd5\x8e\xd5\x8f\xd5\x90\xd5\x91\xd5\x92\xd5\x93\xd5\x94\xd5\x95\xd5\x96\xd5\x97\xd5\x98\xd5\x99\xd5\x9a\xd5\x9b\xd5\x9c\xd5\x9d\xd5\x9e\xd5\x9f\xd5\xa0\xd6\x40\xd6\x41\xd6\x42\xd6\x43\xd6\x44\xd6\x45\xd6\x46\xd6\x47\xd6\x48\xd6\x49\xd6\x4a\xd6\x4b\xd6\x4c\xd6\x4d\xd6\x4e\xd6\x4f\xd6\x50\xd6\x51\xd6\x52\xd6\x53\xd6\x54\xd6\x55\xd6\x56\xd6\x57\xd6\x58\xd6\x59\xd6\x5a\xd6\x5b", /* 8b00 */ "\xd6\x5c\xd6\x5d\xd6\x5e\xd6\x5f\xd6\x60\xd6\x61\xd6\x62\xe5\xc0\xd6\x63\xd6\x64\xd6\x65\xd6\x66\xd6\x67\xd6\x68\xd6\x69\xd6\x6a\xd6\x6b\xd6\x6c\xd6\x6d\xd6\x6e\xd6\x6f\xd6\x70\xd6\x71\xd6\x72\xd6\x73\xd6\x74\xd6\x75\xd6\x76\xd6\x77\xd6\x78\xd6\x79\xd6\x7a\xd6\x7b\xd6\x7c\xd6\x7d\xd6\x7e\xd6\x80\xd6\x81\xf6\xa5\xd6\x82\xd6\x83\xd6\x84\xd6\x85\xd6\x86\xd6\x87\xd6\x88\xd6\x89\xd6\x8a\xd6\x8b\xd6\x8c\xd6\x8d\xd6\x8e\xd6\x8f\xd6\x90\xd6\x91\xd6\x92\xd6\x93\xd6\x94\xd6\x95\xd6\x96\xd6\x97\xd6\x98\xd6\x99\xd6\x9a\xd6\x9b\xd6\x9c\xd6\x9d\xd6\x9e\xd6\x9f\xd6\xa0\xd7\x40\xd7\x41\xd7\x42\xd7\x43\xd7\x44\xd7\x45\xd7\x46\xd7\x47\xd7\x48\xd7\x49\xd7\x4a\xd7\x4b\xd7\x4c\xd7\x4d\xd7\x4e\xd7\x4f\xd7\x50\xd7\x51\xd7\x52\xd7\x53\xd7\x54\xd7\x55\xd7\x56\xd7\x57\xd7\x58\xd7\x59\xd7\x5a\xd7\x5b\xd7\x5c\xd7\x5d\xd7\x5e\xd7\x5f\xbe\xaf\xd7\x60\xd7\x61\xd7\x62\xd7\x63\xd7\x64\xc6\xa9\xd7\x65\xd7\x66\xd7\x67\xd7\x68\xd7\x69\xd7\x6a\xd7\x6b\xd7\x6c\xd7\x6d\xd7\x6e\xd7\x6f\xd7\x70\xd7\x71\xd7\x72\xd7\x73\xd7\x74\xd7\x75\xd7\x76\xd7\x77", /* 8b80 */ "\xd7\x78\xd7\x79\xd7\x7a\xd7\x7b\xd7\x7c\xd7\x7d\xd7\x7e\xd7\x80\xd7\x81\xd7\x82\xd7\x83\xd7\x84\xd7\x85\xd7\x86\xd7\x87\xd7\x88\xd7\x89\xd7\x8a\xd7\x8b\xd7\x8c\xd7\x8d\xd7\x8e\xd7\x8f\xd7\x90\xd7\x91\xd7\x92\xd7\x93\xd7\x94\xd7\x95\xd7\x96\xd7\x97\xd7\x98\xda\xa5\xbc\xc6\xb6\xa9\xb8\xbc\xc8\xcf\xbc\xa5\xda\xa6\xda\xa7\xcc\xd6\xc8\xc3\xda\xa8\xc6\xfd\xd7\x99\xd1\xb5\xd2\xe9\xd1\xb6\xbc\xc7\xd7\x9a\xbd\xb2\xbb\xe4\xda\xa9\xda\xaa\xd1\xc8\xda\xab\xd0\xed\xb6\xef\xc2\xdb\xd7\x9b\xcb\xcf\xb7\xed\xc9\xe8\xb7\xc3\xbe\xf7\xd6\xa4\xda\xac\xda\xad\xc6\xc0\xd7\xe7\xca\xb6\xd7\x9c\xd5\xa9\xcb\xdf\xd5\xef\xda\xae\xd6\xdf\xb4\xca\xda\xb0\xda\xaf\xd7\x9d\xd2\xeb\xda\xb1\xda\xb2\xda\xb3\xca\xd4\xda\xb4\xca\xab\xda\xb5\xda\xb6\xb3\xcf\xd6\xef\xda\xb7\xbb\xb0\xb5\xae\xda\xb8\xda\xb9\xb9\xee\xd1\xaf\xd2\xe8\xda\xba\xb8\xc3\xcf\xea\xb2\xef\xda\xbb\xda\xbc\xd7\x9e\xbd\xeb\xce\xdc\xd3\xef\xda\xbd\xce\xf3\xda\xbe\xd3\xd5\xbb\xe5\xda\xbf\xcb\xb5\xcb\xd0\xda\xc0\xc7\xeb\xd6\xee\xda\xc1\xc5\xb5\xb6\xc1\xda\xc2\xb7\xcc\xbf\xce\xda\xc3", /* 8c00 */ "\xda\xc4\xcb\xad\xda\xc5\xb5\xf7\xda\xc6\xc1\xc2\xd7\xbb\xda\xc7\xcc\xb8\xd7\x9f\xd2\xea\xc4\xb1\xda\xc8\xb5\xfd\xbb\xd1\xda\xc9\xd0\xb3\xda\xca\xda\xcb\xce\xbd\xda\xcc\xda\xcd\xda\xce\xb2\xf7\xda\xd1\xda\xcf\xd1\xe8\xda\xd0\xc3\xd5\xda\xd2\xd7\xa0\xda\xd3\xda\xd4\xda\xd5\xd0\xbb\xd2\xa5\xb0\xf9\xda\xd6\xc7\xab\xda\xd7\xbd\xf7\xc3\xa1\xda\xd8\xda\xd9\xc3\xfd\xcc\xb7\xda\xda\xda\xdb\xc0\xbe\xc6\xd7\xda\xdc\xda\xdd\xc7\xb4\xda\xde\xda\xdf\xb9\xc8\xd8\x40\xd8\x41\xd8\x42\xd8\x43\xd8\x44\xd8\x45\xd8\x46\xd8\x47\xd8\x48\xbb\xed\xd8\x49\xd8\x4a\xd8\x4b\xd8\x4c\xb6\xb9\xf4\xf8\xd8\x4d\xf4\xf9\xd8\x4e\xd8\x4f\xcd\xe3\xd8\x50\xd8\x51\xd8\x52\xd8\x53\xd8\x54\xd8\x55\xd8\x56\xd8\x57\xf5\xb9\xd8\x58\xd8\x59\xd8\x5a\xd8\x5b\xeb\xe0\xd8\x5c\xd8\x5d\xd8\x5e\xd8\x5f\xd8\x60\xd8\x61\xcf\xf3\xbb\xbf\xd8\x62\xd8\x63\xd8\x64\xd8\x65\xd8\x66\xd8\x67\xd8\x68\xba\xc0\xd4\xa5\xd8\x69\xd8\x6a\xd8\x6b\xd8\x6c\xd8\x6d\xd8\x6e\xd8\x6f\xe1\xd9\xd8\x70\xd8\x71\xd8\x72\xd8\x73\xf5\xf4\xb1\xaa\xb2\xf2\xd8\x74\xd8\x75\xd8\x76\xd8\x77\xd8\x78", /* 8c80 */ "\xd8\x79\xd8\x7a\xf5\xf5\xd8\x7b\xd8\x7c\xf5\xf7\xd8\x7d\xd8\x7e\xd8\x80\xba\xd1\xf5\xf6\xd8\x81\xc3\xb2\xd8\x82\xd8\x83\xd8\x84\xd8\x85\xd8\x86\xd8\x87\xd8\x88\xf5\xf9\xd8\x89\xd8\x8a\xd8\x8b\xf5\xf8\xd8\x8c\xd8\x8d\xd8\x8e\xd8\x8f\xd8\x90\xd8\x91\xd8\x92\xd8\x93\xd8\x94\xd8\x95\xd8\x96\xd8\x97\xd8\x98\xd8\x99\xd8\x9a\xd8\x9b\xd8\x9c\xd8\x9d\xd8\x9e\xd8\x9f\xd8\xa0\xd9\x40\xd9\x41\xd9\x42\xd9\x43\xd9\x44\xd9\x45\xd9\x46\xd9\x47\xd9\x48\xd9\x49\xd9\x4a\xd9\x4b\xd9\x4c\xd9\x4d\xd9\x4e\xd9\x4f\xd9\x50\xd9\x51\xd9\x52\xd9\x53\xd9\x54\xd9\x55\xd9\x56\xd9\x57\xd9\x58\xd9\x59\xd9\x5a\xd9\x5b\xd9\x5c\xd9\x5d\xd9\x5e\xd9\x5f\xd9\x60\xd9\x61\xd9\x62\xd9\x63\xd9\x64\xd9\x65\xd9\x66\xd9\x67\xd9\x68\xd9\x69\xd9\x6a\xd9\x6b\xd9\x6c\xd9\x6d\xd9\x6e\xd9\x6f\xd9\x70\xd9\x71\xd9\x72\xd9\x73\xd9\x74\xd9\x75\xd9\x76\xd9\x77\xd9\x78\xd9\x79\xd9\x7a\xd9\x7b\xd9\x7c\xd9\x7d\xd9\x7e\xd9\x80\xd9\x81\xd9\x82\xd9\x83\xd9\x84\xd9\x85\xd9\x86\xd9\x87\xd9\x88\xd9\x89\xd9\x8a\xd9\x8b\xd9\x8c\xd9\x8d\xd9\x8e\xd9\x8f\xd9\x90\xd9\x91\xd9\x92", /* 8d00 */ "\xd9\x93\xd9\x94\xd9\x95\xd9\x96\xd9\x97\xd9\x98\xd9\x99\xd9\x9a\xd9\x9b\xd9\x9c\xd9\x9d\xd9\x9e\xd9\x9f\xd9\xa0\xda\x40\xda\x41\xda\x42\xda\x43\xda\x44\xda\x45\xda\x46\xda\x47\xda\x48\xda\x49\xda\x4a\xda\x4b\xda\x4c\xda\x4d\xda\x4e\xb1\xb4\xd5\xea\xb8\xba\xda\x4f\xb9\xb1\xb2\xc6\xd4\xf0\xcf\xcd\xb0\xdc\xd5\xcb\xbb\xf5\xd6\xca\xb7\xb7\xcc\xb0\xc6\xb6\xb1\xe1\xb9\xba\xd6\xfc\xb9\xe1\xb7\xa1\xbc\xfa\xea\xda\xea\xdb\xcc\xf9\xb9\xf3\xea\xdc\xb4\xfb\xc3\xb3\xb7\xd1\xba\xd8\xea\xdd\xd4\xf4\xea\xde\xbc\xd6\xbb\xdf\xea\xdf\xc1\xde\xc2\xb8\xd4\xdf\xd7\xca\xea\xe0\xea\xe1\xea\xe4\xea\xe2\xea\xe3\xc9\xde\xb8\xb3\xb6\xc4\xea\xe5\xca\xea\xc9\xcd\xb4\xcd\xda\x50\xda\x51\xe2\xd9\xc5\xe2\xea\xe6\xc0\xb5\xda\x52\xd7\xb8\xea\xe7\xd7\xac\xc8\xfc\xd8\xd3\xd8\xcd\xd4\xde\xda\x53\xd4\xf9\xc9\xc4\xd3\xae\xb8\xd3\xb3\xe0\xda\x54\xc9\xe2\xf4\xf6\xda\x55\xda\x56\xda\x57\xba\xd5\xda\x58\xf4\xf7\xda\x59\xda\x5a\xd7\xdf\xda\x5b\xda\x5c\xf4\xf1\xb8\xb0\xd5\xd4\xb8\xcf\xc6\xf0\xda\x5d\xda\x5e\xda\x5f\xda\x60\xda\x61\xda\x62\xda\x63\xda\x64", /* 8d80 */ "\xda\x65\xb3\xc3\xda\x66\xda\x67\xf4\xf2\xb3\xac\xda\x68\xda\x69\xda\x6a\xda\x6b\xd4\xbd\xc7\xf7\xda\x6c\xda\x6d\xda\x6e\xda\x6f\xda\x70\xf4\xf4\xda\x71\xda\x72\xf4\xf3\xda\x73\xda\x74\xda\x75\xda\x76\xda\x77\xda\x78\xda\x79\xda\x7a\xda\x7b\xda\x7c\xcc\xcb\xda\x7d\xda\x7e\xda\x80\xc8\xa4\xda\x81\xda\x82\xda\x83\xda\x84\xda\x85\xda\x86\xda\x87\xda\x88\xda\x89\xda\x8a\xda\x8b\xda\x8c\xda\x8d\xf4\xf5\xda\x8e\xd7\xe3\xc5\xbf\xf5\xc0\xda\x8f\xda\x90\xf5\xbb\xda\x91\xf5\xc3\xda\x92\xf5\xc2\xda\x93\xd6\xba\xf5\xc1\xda\x94\xda\x95\xda\x96\xd4\xbe\xf5\xc4\xda\x97\xf5\xcc\xda\x98\xda\x99\xda\x9a\xda\x9b\xb0\xcf\xb5\xf8\xda\x9c\xf5\xc9\xf5\xca\xda\x9d\xc5\xdc\xda\x9e\xda\x9f\xda\xa0\xdb\x40\xf5\xc5\xf5\xc6\xdb\x41\xdb\x42\xf5\xc7\xf5\xcb\xdb\x43\xbe\xe0\xf5\xc8\xb8\xfa\xdb\x44\xdb\x45\xdb\x46\xf5\xd0\xf5\xd3\xdb\x47\xdb\x48\xdb\x49\xbf\xe7\xdb\x4a\xb9\xf2\xf5\xbc\xf5\xcd\xdb\x4b\xdb\x4c\xc2\xb7\xdb\x4d\xdb\x4e\xdb\x4f\xcc\xf8\xdb\x50\xbc\xf9\xdb\x51\xf5\xce\xf5\xcf\xf5\xd1\xb6\xe5\xf5\xd2\xdb\x52\xf5\xd5\xdb\x53\xdb\x54", /* 8e00 */ "\xdb\x55\xdb\x56\xdb\x57\xdb\x58\xdb\x59\xf5\xbd\xdb\x5a\xdb\x5b\xdb\x5c\xf5\xd4\xd3\xbb\xdb\x5d\xb3\xec\xdb\x5e\xdb\x5f\xcc\xa4\xdb\x60\xdb\x61\xdb\x62\xdb\x63\xf5\xd6\xdb\x64\xdb\x65\xdb\x66\xdb\x67\xdb\x68\xdb\x69\xdb\x6a\xdb\x6b\xf5\xd7\xbe\xe1\xf5\xd8\xdb\x6c\xdb\x6d\xcc\xdf\xf5\xdb\xdb\x6e\xdb\x6f\xdb\x70\xdb\x71\xdb\x72\xb2\xc8\xd7\xd9\xdb\x73\xf5\xd9\xdb\x74\xf5\xda\xf5\xdc\xdb\x75\xf5\xe2\xdb\x76\xdb\x77\xdb\x78\xf5\xe0\xdb\x79\xdb\x7a\xdb\x7b\xf5\xdf\xf5\xdd\xdb\x7c\xdb\x7d\xf5\xe1\xdb\x7e\xdb\x80\xf5\xde\xf5\xe4\xf5\xe5\xdb\x81\xcc\xe3\xdb\x82\xdb\x83\xe5\xbf\xb5\xb8\xf5\xe3\xf5\xe8\xcc\xa3\xdb\x84\xdb\x85\xdb\x86\xdb\x87\xdb\x88\xf5\xe6\xf5\xe7\xdb\x89\xdb\x8a\xdb\x8b\xdb\x8c\xdb\x8d\xdb\x8e\xf5\xbe\xdb\x8f\xdb\x90\xdb\x91\xdb\x92\xdb\x93\xdb\x94\xdb\x95\xdb\x96\xdb\x97\xdb\x98\xdb\x99\xdb\x9a\xb1\xc4\xdb\x9b\xdb\x9c\xf5\xbf\xdb\x9d\xdb\x9e\xb5\xc5\xb2\xe4\xdb\x9f\xf5\xec\xf5\xe9\xdb\xa0\xb6\xd7\xdc\x40\xf5\xed\xdc\x41\xf5\xea\xdc\x42\xdc\x43\xdc\x44\xdc\x45\xdc\x46\xf5\xeb\xdc\x47\xdc\x48\xb4\xda", /* 8e80 */ "\xdc\x49\xd4\xea\xdc\x4a\xdc\x4b\xdc\x4c\xf5\xee\xdc\x4d\xb3\xf9\xdc\x4e\xdc\x4f\xdc\x50\xdc\x51\xdc\x52\xdc\x53\xdc\x54\xf5\xef\xf5\xf1\xdc\x55\xdc\x56\xdc\x57\xf5\xf0\xdc\x58\xdc\x59\xdc\x5a\xdc\x5b\xdc\x5c\xdc\x5d\xdc\x5e\xf5\xf2\xdc\x5f\xf5\xf3\xdc\x60\xdc\x61\xdc\x62\xdc\x63\xdc\x64\xdc\x65\xdc\x66\xdc\x67\xdc\x68\xdc\x69\xdc\x6a\xdc\x6b\xc9\xed\xb9\xaa\xdc\x6c\xdc\x6d\xc7\xfb\xdc\x6e\xdc\x6f\xb6\xe3\xdc\x70\xdc\x71\xdc\x72\xdc\x73\xdc\x74\xdc\x75\xdc\x76\xcc\xc9\xdc\x77\xdc\x78\xdc\x79\xdc\x7a\xdc\x7b\xdc\x7c\xdc\x7d\xdc\x7e\xdc\x80\xdc\x81\xdc\x82\xdc\x83\xdc\x84\xdc\x85\xdc\x86\xdc\x87\xdc\x88\xdc\x89\xdc\x8a\xea\xa6\xdc\x8b\xdc\x8c\xdc\x8d\xdc\x8e\xdc\x8f\xdc\x90\xdc\x91\xdc\x92\xdc\x93\xdc\x94\xdc\x95\xdc\x96\xdc\x97\xdc\x98\xdc\x99\xdc\x9a\xdc\x9b\xdc\x9c\xdc\x9d\xdc\x9e\xdc\x9f\xdc\xa0\xdd\x40\xdd\x41\xdd\x42\xdd\x43\xdd\x44\xdd\x45\xdd\x46\xdd\x47\xdd\x48\xdd\x49\xdd\x4a\xdd\x4b\xdd\x4c\xdd\x4d\xdd\x4e\xdd\x4f\xdd\x50\xdd\x51\xdd\x52\xdd\x53\xdd\x54\xdd\x55\xdd\x56\xdd\x57\xdd\x58\xdd\x59\xdd\x5a", /* 8f00 */ "\xdd\x5b\xdd\x5c\xdd\x5d\xdd\x5e\xdd\x5f\xdd\x60\xdd\x61\xdd\x62\xdd\x63\xdd\x64\xdd\x65\xdd\x66\xdd\x67\xdd\x68\xdd\x69\xdd\x6a\xdd\x6b\xdd\x6c\xdd\x6d\xdd\x6e\xdd\x6f\xdd\x70\xdd\x71\xdd\x72\xdd\x73\xdd\x74\xdd\x75\xdd\x76\xdd\x77\xdd\x78\xdd\x79\xdd\x7a\xdd\x7b\xdd\x7c\xdd\x7d\xdd\x7e\xdd\x80\xdd\x81\xdd\x82\xdd\x83\xdd\x84\xdd\x85\xdd\x86\xdd\x87\xdd\x88\xdd\x89\xdd\x8a\xdd\x8b\xdd\x8c\xdd\x8d\xdd\x8e\xdd\x8f\xdd\x90\xdd\x91\xdd\x92\xdd\x93\xdd\x94\xdd\x95\xdd\x96\xdd\x97\xdd\x98\xdd\x99\xdd\x9a\xdd\x9b\xdd\x9c\xdd\x9d\xdd\x9e\xdd\x9f\xdd\xa0\xde\x40\xde\x41\xde\x42\xde\x43\xde\x44\xde\x45\xde\x46\xde\x47\xde\x48\xde\x49\xde\x4a\xde\x4b\xde\x4c\xde\x4d\xde\x4e\xde\x4f\xde\x50\xde\x51\xde\x52\xde\x53\xde\x54\xde\x55\xde\x56\xde\x57\xde\x58\xde\x59\xde\x5a\xde\x5b\xde\x5c\xde\x5d\xde\x5e\xde\x5f\xde\x60\xb3\xb5\xd4\xfe\xb9\xec\xd0\xf9\xde\x61\xe9\xed\xd7\xaa\xe9\xee\xc2\xd6\xc8\xed\xba\xe4\xe9\xef\xe9\xf0\xe9\xf1\xd6\xe1\xe9\xf2\xe9\xf3\xe9\xf5\xe9\xf4\xe9\xf6\xe9\xf7\xc7\xe1\xe9\xf8\xd4\xd8\xe9\xf9\xbd\xce", /* 8f80 */ "\xde\x62\xe9\xfa\xe9\xfb\xbd\xcf\xe9\xfc\xb8\xa8\xc1\xbe\xe9\xfd\xb1\xb2\xbb\xd4\xb9\xf5\xe9\xfe\xde\x63\xea\xa1\xea\xa2\xea\xa3\xb7\xf8\xbc\xad\xde\x64\xca\xe4\xe0\xce\xd4\xaf\xcf\xbd\xd5\xb7\xea\xa4\xd5\xde\xea\xa5\xd0\xc1\xb9\xbc\xde\x65\xb4\xc7\xb1\xd9\xde\x66\xde\x67\xde\x68\xc0\xb1\xde\x69\xde\x6a\xde\x6b\xde\x6c\xb1\xe6\xb1\xe7\xde\x6d\xb1\xe8\xde\x6e\xde\x6f\xde\x70\xde\x71\xb3\xbd\xc8\xe8\xde\x72\xde\x73\xde\x74\xde\x75\xe5\xc1\xde\x76\xde\x77\xb1\xdf\xde\x78\xde\x79\xde\x7a\xc1\xc9\xb4\xef\xde\x7b\xde\x7c\xc7\xa8\xd3\xd8\xde\x7d\xc6\xf9\xd1\xb8\xde\x7e\xb9\xfd\xc2\xf5\xde\x80\xde\x81\xde\x82\xde\x83\xde\x84\xd3\xad\xde\x85\xd4\xcb\xbd\xfc\xde\x86\xe5\xc2\xb7\xb5\xe5\xc3\xde\x87\xde\x88\xbb\xb9\xd5\xe2\xde\x89\xbd\xf8\xd4\xb6\xce\xa5\xc1\xac\xb3\xd9\xde\x8a\xde\x8b\xcc\xf6\xde\x8c\xe5\xc6\xe5\xc4\xe5\xc8\xde\x8d\xe5\xca\xe5\xc7\xb5\xcf\xc6\xc8\xde\x8e\xb5\xfc\xe5\xc5\xde\x8f\xca\xf6\xde\x90\xde\x91\xe5\xc9\xde\x92\xde\x93\xde\x94\xc3\xd4\xb1\xc5\xbc\xa3\xde\x95\xde\x96\xde\x97\xd7\xb7\xde\x98\xde\x99", /* 9000 */ "\xcd\xcb\xcb\xcd\xca\xca\xcc\xd3\xe5\xcc\xe5\xcb\xc4\xe6\xde\x9a\xde\x9b\xd1\xa1\xd1\xb7\xe5\xcd\xde\x9c\xe5\xd0\xde\x9d\xcd\xb8\xd6\xf0\xe5\xcf\xb5\xdd\xde\x9e\xcd\xbe\xde\x9f\xe5\xd1\xb6\xba\xde\xa0\xdf\x40\xcd\xa8\xb9\xe4\xdf\x41\xca\xc5\xb3\xd1\xcb\xd9\xd4\xec\xe5\xd2\xb7\xea\xdf\x42\xdf\x43\xdf\x44\xe5\xce\xdf\x45\xdf\x46\xdf\x47\xdf\x48\xdf\x49\xdf\x4a\xe5\xd5\xb4\xfe\xe5\xd6\xdf\x4b\xdf\x4c\xdf\x4d\xdf\x4e\xdf\x4f\xe5\xd3\xe5\xd4\xdf\x50\xd2\xdd\xdf\x51\xdf\x52\xc2\xdf\xb1\xc6\xdf\x53\xd3\xe2\xdf\x54\xdf\x55\xb6\xdd\xcb\xec\xdf\x56\xe5\xd7\xdf\x57\xdf\x58\xd3\xf6\xdf\x59\xdf\x5a\xdf\x5b\xdf\x5c\xdf\x5d\xb1\xe9\xdf\x5e\xb6\xf4\xe5\xda\xe5\xd8\xe5\xd9\xb5\xc0\xdf\x5f\xdf\x60\xdf\x61\xd2\xc5\xe5\xdc\xdf\x62\xdf\x63\xe5\xde\xdf\x64\xdf\x65\xdf\x66\xdf\x67\xdf\x68\xdf\x69\xe5\xdd\xc7\xb2\xdf\x6a\xd2\xa3\xdf\x6b\xdf\x6c\xe5\xdb\xdf\x6d\xdf\x6e\xdf\x6f\xdf\x70\xd4\xe2\xd5\xda\xdf\x71\xdf\x72\xdf\x73\xdf\x74\xdf\x75\xe5\xe0\xd7\xf1\xdf\x76\xdf\x77\xdf\x78\xdf\x79\xdf\x7a\xdf\x7b\xdf\x7c\xe5\xe1\xdf\x7d\xb1\xdc", /* 9080 */ "\xd1\xfb\xdf\x7e\xe5\xe2\xe5\xe4\xdf\x80\xdf\x81\xdf\x82\xdf\x83\xe5\xe3\xdf\x84\xdf\x85\xe5\xe5\xdf\x86\xdf\x87\xdf\x88\xdf\x89\xdf\x8a\xd2\xd8\xdf\x8b\xb5\xcb\xdf\x8c\xe7\xdf\xdf\x8d\xda\xf5\xdf\x8e\xda\xf8\xdf\x8f\xda\xf6\xdf\x90\xda\xf7\xdf\x91\xdf\x92\xdf\x93\xda\xfa\xd0\xcf\xc4\xc7\xdf\x94\xdf\x95\xb0\xee\xdf\x96\xdf\x97\xdf\x98\xd0\xb0\xdf\x99\xda\xf9\xdf\x9a\xd3\xca\xba\xaa\xdb\xa2\xc7\xf1\xdf\x9b\xda\xfc\xda\xfb\xc9\xdb\xda\xfd\xdf\x9c\xdb\xa1\xd7\xde\xda\xfe\xc1\xda\xdf\x9d\xdf\x9e\xdb\xa5\xdf\x9f\xdf\xa0\xd3\xf4\xe0\x40\xe0\x41\xdb\xa7\xdb\xa4\xe0\x42\xdb\xa8\xe0\x43\xe0\x44\xbd\xbc\xe0\x45\xe0\x46\xe0\x47\xc0\xc9\xdb\xa3\xdb\xa6\xd6\xa3\xe0\x48\xdb\xa9\xe0\x49\xe0\x4a\xe0\x4b\xdb\xad\xe0\x4c\xe0\x4d\xe0\x4e\xdb\xae\xdb\xac\xba\xc2\xe0\x4f\xe0\x50\xe0\x51\xbf\xa4\xdb\xab\xe0\x52\xe0\x53\xe0\x54\xdb\xaa\xd4\xc7\xb2\xbf\xe0\x55\xe0\x56\xdb\xaf\xe0\x57\xb9\xf9\xe0\x58\xdb\xb0\xe0\x59\xe0\x5a\xe0\x5b\xe0\x5c\xb3\xbb\xe0\x5d\xe0\x5e\xe0\x5f\xb5\xa6\xe0\x60\xe0\x61\xe0\x62\xe0\x63\xb6\xbc\xdb\xb1\xe0\x64", /* 9100 */ "\xe0\x65\xe0\x66\xb6\xf5\xe0\x67\xdb\xb2\xe0\x68\xe0\x69\xe0\x6a\xe0\x6b\xe0\x6c\xe0\x6d\xe0\x6e\xe0\x6f\xe0\x70\xe0\x71\xe0\x72\xe0\x73\xe0\x74\xe0\x75\xe0\x76\xe0\x77\xe0\x78\xe0\x79\xe0\x7a\xe0\x7b\xb1\xc9\xe0\x7c\xe0\x7d\xe0\x7e\xe0\x80\xdb\xb4\xe0\x81\xe0\x82\xe0\x83\xdb\xb3\xdb\xb5\xe0\x84\xe0\x85\xe0\x86\xe0\x87\xe0\x88\xe0\x89\xe0\x8a\xe0\x8b\xe0\x8c\xe0\x8d\xe0\x8e\xdb\xb7\xe0\x8f\xdb\xb6\xe0\x90\xe0\x91\xe0\x92\xe0\x93\xe0\x94\xe0\x95\xe0\x96\xdb\xb8\xe0\x97\xe0\x98\xe0\x99\xe0\x9a\xe0\x9b\xe0\x9c\xe0\x9d\xe0\x9e\xe0\x9f\xdb\xb9\xe0\xa0\xe1\x40\xdb\xba\xe1\x41\xe1\x42\xd3\xcf\xf4\xfa\xc7\xf5\xd7\xc3\xc5\xe4\xf4\xfc\xf4\xfd\xf4\xfb\xe1\x43\xbe\xc6\xe1\x44\xe1\x45\xe1\x46\xe1\x47\xd0\xef\xe1\x48\xe1\x49\xb7\xd3\xe1\x4a\xe1\x4b\xd4\xcd\xcc\xaa\xe1\x4c\xe1\x4d\xf5\xa2\xf5\xa1\xba\xa8\xf4\xfe\xcb\xd6\xe1\x4e\xe1\x4f\xe1\x50\xf5\xa4\xc0\xd2\xe1\x51\xb3\xea\xe1\x52\xcd\xaa\xf5\xa5\xf5\xa3\xbd\xb4\xf5\xa8\xe1\x53\xf5\xa9\xbd\xcd\xc3\xb8\xbf\xe1\xcb\xe1\xf5\xaa\xe1\x54\xe1\x55\xe1\x56\xf5\xa6\xf5\xa7\xc4\xf0", /* 9180 */ "\xe1\x57\xe1\x58\xe1\x59\xe1\x5a\xe1\x5b\xf5\xac\xe1\x5c\xb4\xbc\xe1\x5d\xd7\xed\xe1\x5e\xb4\xd7\xf5\xab\xf5\xae\xe1\x5f\xe1\x60\xf5\xad\xf5\xaf\xd0\xd1\xe1\x61\xe1\x62\xe1\x63\xe1\x64\xe1\x65\xe1\x66\xe1\x67\xc3\xd1\xc8\xa9\xe1\x68\xe1\x69\xe1\x6a\xe1\x6b\xe1\x6c\xe1\x6d\xf5\xb0\xf5\xb1\xe1\x6e\xe1\x6f\xe1\x70\xe1\x71\xe1\x72\xe1\x73\xf5\xb2\xe1\x74\xe1\x75\xf5\xb3\xf5\xb4\xf5\xb5\xe1\x76\xe1\x77\xe1\x78\xe1\x79\xf5\xb7\xf5\xb6\xe1\x7a\xe1\x7b\xe1\x7c\xe1\x7d\xf5\xb8\xe1\x7e\xe1\x80\xe1\x81\xe1\x82\xe1\x83\xe1\x84\xe1\x85\xe1\x86\xe1\x87\xe1\x88\xe1\x89\xe1\x8a\xb2\xc9\xe1\x8b\xd3\xd4\xca\xcd\xe1\x8c\xc0\xef\xd6\xd8\xd2\xb0\xc1\xbf\xe1\x8d\xbd\xf0\xe1\x8e\xe1\x8f\xe1\x90\xe1\x91\xe1\x92\xe1\x93\xe1\x94\xe1\x95\xe1\x96\xe1\x97\xb8\xaa\xe1\x98\xe1\x99\xe1\x9a\xe1\x9b\xe1\x9c\xe1\x9d\xe1\x9e\xe1\x9f\xe1\xa0\xe2\x40\xe2\x41\xe2\x42\xe2\x43\xe2\x44\xe2\x45\xe2\x46\xe2\x47\xe2\x48\xe2\x49\xe2\x4a\xe2\x4b\xe2\x4c\xe2\x4d\xe2\x4e\xe2\x4f\xe2\x50\xe2\x51\xe2\x52\xe2\x53\xe2\x54\xe2\x55\xe2\x56\xe2\x57\xe2\x58\xe2\x59", /* 9200 */ "\xe2\x5a\xe2\x5b\xe2\x5c\xe2\x5d\xe2\x5e\xe2\x5f\xe2\x60\xe2\x61\xe2\x62\xe2\x63\xe2\x64\xe2\x65\xe2\x66\xe2\x67\xe2\x68\xe2\x69\xe2\x6a\xe2\x6b\xe2\x6c\xe2\x6d\xe2\x6e\xe2\x6f\xe2\x70\xe2\x71\xe2\x72\xe2\x73\xe2\x74\xe2\x75\xe2\x76\xe2\x77\xe2\x78\xe2\x79\xe2\x7a\xe2\x7b\xe2\x7c\xe2\x7d\xe2\x7e\xe2\x80\xe2\x81\xe2\x82\xe2\x83\xe2\x84\xe2\x85\xe2\x86\xe2\x87\xe2\x88\xe2\x89\xe2\x8a\xe2\x8b\xe2\x8c\xe2\x8d\xe2\x8e\xe2\x8f\xe2\x90\xe2\x91\xe2\x92\xe2\x93\xe2\x94\xe2\x95\xe2\x96\xe2\x97\xe2\x98\xe2\x99\xe2\x9a\xe2\x9b\xe2\x9c\xe2\x9d\xe2\x9e\xe2\x9f\xe2\xa0\xe3\x40\xe3\x41\xe3\x42\xe3\x43\xe3\x44\xe3\x45\xe3\x46\xe3\x47\xe3\x48\xe3\x49\xe3\x4a\xe3\x4b\xe3\x4c\xe3\x4d\xe3\x4e\xe3\x4f\xe3\x50\xe3\x51\xe3\x52\xe3\x53\xe3\x54\xe3\x55\xe3\x56\xe3\x57\xe3\x58\xe3\x59\xe3\x5a\xe3\x5b\xe3\x5c\xe3\x5d\xe3\x5e\xe3\x5f\xe3\x60\xe3\x61\xe3\x62\xe3\x63\xe3\x64\xe3\x65\xe3\x66\xe3\x67\xe3\x68\xe3\x69\xe3\x6a\xe3\x6b\xe3\x6c\xe3\x6d\xbc\xf8\xe3\x6e\xe3\x6f\xe3\x70\xe3\x71\xe3\x72\xe3\x73\xe3\x74\xe3\x75\xe3\x76\xe3\x77\xe3\x78", /* 9280 */ "\xe3\x79\xe3\x7a\xe3\x7b\xe3\x7c\xe3\x7d\xe3\x7e\xe3\x80\xe3\x81\xe3\x82\xe3\x83\xe3\x84\xe3\x85\xe3\x86\xe3\x87\xf6\xc6\xe3\x88\xe3\x89\xe3\x8a\xe3\x8b\xe3\x8c\xe3\x8d\xe3\x8e\xe3\x8f\xe3\x90\xe3\x91\xe3\x92\xe3\x93\xe3\x94\xe3\x95\xe3\x96\xe3\x97\xe3\x98\xe3\x99\xe3\x9a\xe3\x9b\xe3\x9c\xe3\x9d\xe3\x9e\xe3\x9f\xe3\xa0\xe4\x40\xe4\x41\xe4\x42\xe4\x43\xe4\x44\xe4\x45\xf6\xc7\xe4\x46\xe4\x47\xe4\x48\xe4\x49\xe4\x4a\xe4\x4b\xe4\x4c\xe4\x4d\xe4\x4e\xe4\x4f\xe4\x50\xe4\x51\xe4\x52\xe4\x53\xe4\x54\xe4\x55\xe4\x56\xe4\x57\xe4\x58\xe4\x59\xe4\x5a\xe4\x5b\xe4\x5c\xe4\x5d\xe4\x5e\xf6\xc8\xe4\x5f\xe4\x60\xe4\x61\xe4\x62\xe4\x63\xe4\x64\xe4\x65\xe4\x66\xe4\x67\xe4\x68\xe4\x69\xe4\x6a\xe4\x6b\xe4\x6c\xe4\x6d\xe4\x6e\xe4\x6f\xe4\x70\xe4\x71\xe4\x72\xe4\x73\xe4\x74\xe4\x75\xe4\x76\xe4\x77\xe4\x78\xe4\x79\xe4\x7a\xe4\x7b\xe4\x7c\xe4\x7d\xe4\x7e\xe4\x80\xe4\x81\xe4\x82\xe4\x83\xe4\x84\xe4\x85\xe4\x86\xe4\x87\xe4\x88\xe4\x89\xe4\x8a\xe4\x8b\xe4\x8c\xe4\x8d\xe4\x8e\xe4\x8f\xe4\x90\xe4\x91\xe4\x92\xe4\x93\xe4\x94\xe4\x95\xe4\x96", /* 9300 */ "\xe4\x97\xe4\x98\xe4\x99\xe4\x9a\xe4\x9b\xe4\x9c\xe4\x9d\xe4\x9e\xe4\x9f\xe4\xa0\xe5\x40\xe5\x41\xe5\x42\xe5\x43\xe5\x44\xe5\x45\xe5\x46\xe5\x47\xe5\x48\xe5\x49\xe5\x4a\xe5\x4b\xe5\x4c\xe5\x4d\xe5\x4e\xe5\x4f\xe5\x50\xe5\x51\xe5\x52\xe5\x53\xe5\x54\xe5\x55\xe5\x56\xe5\x57\xe5\x58\xe5\x59\xe5\x5a\xe5\x5b\xe5\x5c\xe5\x5d\xe5\x5e\xe5\x5f\xe5\x60\xe5\x61\xe5\x62\xe5\x63\xe5\x64\xe5\x65\xe5\x66\xe5\x67\xe5\x68\xe5\x69\xe5\x6a\xe5\x6b\xe5\x6c\xe5\x6d\xe5\x6e\xe5\x6f\xe5\x70\xe5\x71\xe5\x72\xe5\x73\xf6\xc9\xe5\x74\xe5\x75\xe5\x76\xe5\x77\xe5\x78\xe5\x79\xe5\x7a\xe5\x7b\xe5\x7c\xe5\x7d\xe5\x7e\xe5\x80\xe5\x81\xe5\x82\xe5\x83\xe5\x84\xe5\x85\xe5\x86\xe5\x87\xe5\x88\xe5\x89\xe5\x8a\xe5\x8b\xe5\x8c\xe5\x8d\xe5\x8e\xe5\x8f\xe5\x90\xe5\x91\xe5\x92\xe5\x93\xe5\x94\xe5\x95\xe5\x96\xe5\x97\xe5\x98\xe5\x99\xe5\x9a\xe5\x9b\xe5\x9c\xe5\x9d\xe5\x9e\xe5\x9f\xf6\xca\xe5\xa0\xe6\x40\xe6\x41\xe6\x42\xe6\x43\xe6\x44\xe6\x45\xe6\x46\xe6\x47\xe6\x48\xe6\x49\xe6\x4a\xe6\x4b\xe6\x4c\xe6\x4d\xe6\x4e\xe6\x4f\xe6\x50\xe6\x51\xe6\x52\xe6\x53", /* 9380 */ "\xe6\x54\xe6\x55\xe6\x56\xe6\x57\xe6\x58\xe6\x59\xe6\x5a\xe6\x5b\xe6\x5c\xe6\x5d\xe6\x5e\xe6\x5f\xe6\x60\xe6\x61\xe6\x62\xf6\xcc\xe6\x63\xe6\x64\xe6\x65\xe6\x66\xe6\x67\xe6\x68\xe6\x69\xe6\x6a\xe6\x6b\xe6\x6c\xe6\x6d\xe6\x6e\xe6\x6f\xe6\x70\xe6\x71\xe6\x72\xe6\x73\xe6\x74\xe6\x75\xe6\x76\xe6\x77\xe6\x78\xe6\x79\xe6\x7a\xe6\x7b\xe6\x7c\xe6\x7d\xe6\x7e\xe6\x80\xe6\x81\xe6\x82\xe6\x83\xe6\x84\xe6\x85\xe6\x86\xe6\x87\xe6\x88\xe6\x89\xe6\x8a\xe6\x8b\xe6\x8c\xe6\x8d\xe6\x8e\xe6\x8f\xe6\x90\xe6\x91\xe6\x92\xe6\x93\xe6\x94\xe6\x95\xe6\x96\xe6\x97\xe6\x98\xe6\x99\xe6\x9a\xe6\x9b\xe6\x9c\xe6\x9d\xf6\xcb\xe6\x9e\xe6\x9f\xe6\xa0\xe7\x40\xe7\x41\xe7\x42\xe7\x43\xe7\x44\xe7\x45\xe7\x46\xe7\x47\xf7\xe9\xe7\x48\xe7\x49\xe7\x4a\xe7\x4b\xe7\x4c\xe7\x4d\xe7\x4e\xe7\x4f\xe7\x50\xe7\x51\xe7\x52\xe7\x53\xe7\x54\xe7\x55\xe7\x56\xe7\x57\xe7\x58\xe7\x59\xe7\x5a\xe7\x5b\xe7\x5c\xe7\x5d\xe7\x5e\xe7\x5f\xe7\x60\xe7\x61\xe7\x62\xe7\x63\xe7\x64\xe7\x65\xe7\x66\xe7\x67\xe7\x68\xe7\x69\xe7\x6a\xe7\x6b\xe7\x6c\xe7\x6d\xe7\x6e\xe7\x6f\xe7\x70", /* 9400 */ "\xe7\x71\xe7\x72\xe7\x73\xe7\x74\xe7\x75\xe7\x76\xe7\x77\xe7\x78\xe7\x79\xe7\x7a\xe7\x7b\xe7\x7c\xe7\x7d\xe7\x7e\xe7\x80\xe7\x81\xe7\x82\xe7\x83\xe7\x84\xe7\x85\xe7\x86\xe7\x87\xe7\x88\xe7\x89\xe7\x8a\xe7\x8b\xe7\x8c\xe7\x8d\xe7\x8e\xe7\x8f\xe7\x90\xe7\x91\xe7\x92\xe7\x93\xe7\x94\xe7\x95\xe7\x96\xe7\x97\xe7\x98\xe7\x99\xe7\x9a\xe7\x9b\xe7\x9c\xe7\x9d\xe7\x9e\xe7\x9f\xe7\xa0\xe8\x40\xe8\x41\xe8\x42\xe8\x43\xe8\x44\xe8\x45\xe8\x46\xe8\x47\xe8\x48\xe8\x49\xe8\x4a\xe8\x4b\xe8\x4c\xe8\x4d\xe8\x4e\xf6\xcd\xe8\x4f\xe8\x50\xe8\x51\xe8\x52\xe8\x53\xe8\x54\xe8\x55\xe8\x56\xe8\x57\xe8\x58\xe8\x59\xe8\x5a\xe8\x5b\xe8\x5c\xe8\x5d\xe8\x5e\xe8\x5f\xe8\x60\xe8\x61\xe8\x62\xe8\x63\xe8\x64\xe8\x65\xe8\x66\xe8\x67\xe8\x68\xe8\x69\xe8\x6a\xe8\x6b\xe8\x6c\xe8\x6d\xe8\x6e\xe8\x6f\xe8\x70\xe8\x71\xe8\x72\xe8\x73\xe8\x74\xe8\x75\xe8\x76\xe8\x77\xe8\x78\xe8\x79\xe8\x7a\xf6\xce\xe8\x7b\xe8\x7c\xe8\x7d\xe8\x7e\xe8\x80\xe8\x81\xe8\x82\xe8\x83\xe8\x84\xe8\x85\xe8\x86\xe8\x87\xe8\x88\xe8\x89\xe8\x8a\xe8\x8b\xe8\x8c\xe8\x8d\xe8\x8e\xe8\x8f", /* 9480 */ "\xe8\x90\xe8\x91\xe8\x92\xe8\x93\xe8\x94\xee\xc4\xee\xc5\xee\xc6\xd5\xeb\xb6\xa4\xee\xc8\xee\xc7\xee\xc9\xee\xca\xc7\xa5\xee\xcb\xee\xcc\xe8\x95\xb7\xb0\xb5\xf6\xee\xcd\xee\xcf\xe8\x96\xee\xce\xe8\x97\xb8\xc6\xee\xd0\xee\xd1\xee\xd2\xb6\xdb\xb3\xae\xd6\xd3\xc4\xc6\xb1\xb5\xb8\xd6\xee\xd3\xee\xd4\xd4\xbf\xc7\xd5\xbe\xfb\xce\xd9\xb9\xb3\xee\xd6\xee\xd5\xee\xd8\xee\xd7\xc5\xa5\xee\xd9\xee\xda\xc7\xae\xee\xdb\xc7\xaf\xee\xdc\xb2\xa7\xee\xdd\xee\xde\xee\xdf\xee\xe0\xee\xe1\xd7\xea\xee\xe2\xee\xe3\xbc\xd8\xee\xe4\xd3\xcb\xcc\xfa\xb2\xac\xc1\xe5\xee\xe5\xc7\xa6\xc3\xad\xe8\x98\xee\xe6\xee\xe7\xee\xe8\xee\xe9\xee\xea\xee\xeb\xee\xec\xe8\x99\xee\xed\xee\xee\xee\xef\xe8\x9a\xe8\x9b\xee\xf0\xee\xf1\xee\xf2\xee\xf4\xee\xf3\xe8\x9c\xee\xf5\xcd\xad\xc2\xc1\xee\xf6\xee\xf7\xee\xf8\xd5\xa1\xee\xf9\xcf\xb3\xee\xfa\xee\xfb\xe8\x9d\xee\xfc\xee\xfd\xef\xa1\xee\xfe\xef\xa2\xb8\xf5\xc3\xfa\xef\xa3\xef\xa4\xbd\xc2\xd2\xbf\xb2\xf9\xef\xa5\xef\xa6\xef\xa7\xd2\xf8\xef\xa8\xd6\xfd\xef\xa9\xc6\xcc\xe8\x9e\xef\xaa\xef\xab\xc1\xb4\xef\xac", /* 9500 */ "\xcf\xfa\xcb\xf8\xef\xae\xef\xad\xb3\xfa\xb9\xf8\xef\xaf\xef\xb0\xd0\xe2\xef\xb1\xef\xb2\xb7\xe6\xd0\xbf\xef\xb3\xef\xb4\xef\xb5\xc8\xf1\xcc\xe0\xef\xb6\xef\xb7\xef\xb8\xef\xb9\xef\xba\xd5\xe0\xef\xbb\xb4\xed\xc3\xaa\xef\xbc\xe8\x9f\xef\xbd\xef\xbe\xef\xbf\xe8\xa0\xce\xfd\xef\xc0\xc2\xe0\xb4\xb8\xd7\xb6\xbd\xf5\xe9\x40\xcf\xc7\xef\xc3\xef\xc1\xef\xc2\xef\xc4\xb6\xa7\xbc\xfc\xbe\xe2\xc3\xcc\xef\xc5\xef\xc6\xe9\x41\xef\xc7\xef\xcf\xef\xc8\xef\xc9\xef\xca\xc7\xc2\xef\xf1\xb6\xcd\xef\xcb\xe9\x42\xef\xcc\xef\xcd\xb6\xc6\xc3\xbe\xef\xce\xe9\x43\xef\xd0\xef\xd1\xef\xd2\xd5\xf2\xe9\x44\xef\xd3\xc4\xf7\xe9\x45\xef\xd4\xc4\xf8\xef\xd5\xef\xd6\xb8\xe4\xb0\xf7\xef\xd7\xef\xd8\xef\xd9\xe9\x46\xef\xda\xef\xdb\xef\xdc\xef\xdd\xe9\x47\xef\xde\xbe\xb5\xef\xe1\xef\xdf\xef\xe0\xe9\x48\xef\xe2\xef\xe3\xc1\xcd\xef\xe4\xef\xe5\xef\xe6\xef\xe7\xef\xe8\xef\xe9\xef\xea\xef\xeb\xef\xec\xc0\xd8\xe9\x49\xef\xed\xc1\xad\xef\xee\xef\xef\xef\xf0\xe9\x4a\xe9\x4b\xcf\xe2\xe9\x4c\xe9\x4d\xe9\x4e\xe9\x4f\xe9\x50\xe9\x51\xe9\x52\xe9\x53\xb3\xa4", /* 9580 */ "\xe9\x54\xe9\x55\xe9\x56\xe9\x57\xe9\x58\xe9\x59\xe9\x5a\xe9\x5b\xe9\x5c\xe9\x5d\xe9\x5e\xe9\x5f\xe9\x60\xe9\x61\xe9\x62\xe9\x63\xe9\x64\xe9\x65\xe9\x66\xe9\x67\xe9\x68\xe9\x69\xe9\x6a\xe9\x6b\xe9\x6c\xe9\x6d\xe9\x6e\xe9\x6f\xe9\x70\xe9\x71\xe9\x72\xe9\x73\xe9\x74\xe9\x75\xe9\x76\xe9\x77\xe9\x78\xe9\x79\xe9\x7a\xe9\x7b\xe9\x7c\xe9\x7d\xe9\x7e\xe9\x80\xe9\x81\xe9\x82\xe9\x83\xe9\x84\xe9\x85\xe9\x86\xe9\x87\xe9\x88\xe9\x89\xe9\x8a\xe9\x8b\xe9\x8c\xe9\x8d\xe9\x8e\xe9\x8f\xe9\x90\xe9\x91\xe9\x92\xe9\x93\xe9\x94\xe9\x95\xe9\x96\xe9\x97\xe9\x98\xe9\x99\xe9\x9a\xe9\x9b\xe9\x9c\xe9\x9d\xe9\x9e\xe9\x9f\xe9\xa0\xea\x40\xea\x41\xea\x42\xea\x43\xea\x44\xea\x45\xea\x46\xea\x47\xea\x48\xea\x49\xea\x4a\xea\x4b\xea\x4c\xea\x4d\xea\x4e\xea\x4f\xea\x50\xea\x51\xea\x52\xea\x53\xea\x54\xea\x55\xea\x56\xea\x57\xea\x58\xea\x59\xea\x5a\xea\x5b\xc3\xc5\xe3\xc5\xc9\xc1\xe3\xc6\xea\x5c\xb1\xd5\xce\xca\xb4\xb3\xc8\xf2\xe3\xc7\xcf\xd0\xe3\xc8\xbc\xe4\xe3\xc9\xe3\xca\xc3\xc6\xd5\xa2\xc4\xd6\xb9\xeb\xce\xc5\xe3\xcb\xc3\xf6\xe3\xcc\xea\x5d", /* 9600 */ "\xb7\xa7\xb8\xf3\xba\xd2\xe3\xcd\xe3\xce\xd4\xc4\xe3\xcf\xea\x5e\xe3\xd0\xd1\xcb\xe3\xd1\xe3\xd2\xe3\xd3\xe3\xd4\xd1\xd6\xe3\xd5\xb2\xfb\xc0\xbb\xe3\xd6\xea\x5f\xc0\xab\xe3\xd7\xe3\xd8\xe3\xd9\xea\x60\xe3\xda\xe3\xdb\xea\x61\xb8\xb7\xda\xe2\xea\x62\xb6\xd3\xea\x63\xda\xe4\xda\xe3\xea\x64\xea\x65\xea\x66\xea\x67\xea\x68\xea\x69\xea\x6a\xda\xe6\xea\x6b\xea\x6c\xea\x6d\xc8\xee\xea\x6e\xea\x6f\xda\xe5\xb7\xc0\xd1\xf4\xd2\xf5\xd5\xf3\xbd\xd7\xea\x70\xea\x71\xea\x72\xea\x73\xd7\xe8\xda\xe8\xda\xe7\xea\x74\xb0\xa2\xcd\xd3\xea\x75\xda\xe9\xea\x76\xb8\xbd\xbc\xca\xc2\xbd\xc2\xa4\xb3\xc2\xda\xea\xea\x77\xc2\xaa\xc4\xb0\xbd\xb5\xea\x78\xea\x79\xcf\xde\xea\x7a\xea\x7b\xea\x7c\xda\xeb\xc9\xc2\xea\x7d\xea\x7e\xea\x80\xea\x81\xea\x82\xb1\xdd\xea\x83\xea\x84\xea\x85\xda\xec\xea\x86\xb6\xb8\xd4\xba\xea\x87\xb3\xfd\xea\x88\xea\x89\xda\xed\xd4\xc9\xcf\xd5\xc5\xe3\xea\x8a\xda\xee\xea\x8b\xea\x8c\xea\x8d\xea\x8e\xea\x8f\xda\xef\xea\x90\xda\xf0\xc1\xea\xcc\xd5\xcf\xdd\xea\x91\xea\x92\xea\x93\xea\x94\xea\x95\xea\x96\xea\x97\xea\x98", /* 9680 */ "\xea\x99\xea\x9a\xea\x9b\xea\x9c\xea\x9d\xd3\xe7\xc2\xa1\xea\x9e\xda\xf1\xea\x9f\xea\xa0\xcb\xe5\xeb\x40\xda\xf2\xeb\x41\xcb\xe6\xd2\xfe\xeb\x42\xeb\x43\xeb\x44\xb8\xf4\xeb\x45\xeb\x46\xda\xf3\xb0\xaf\xcf\xb6\xeb\x47\xeb\x48\xd5\xcf\xeb\x49\xeb\x4a\xeb\x4b\xeb\x4c\xeb\x4d\xeb\x4e\xeb\x4f\xeb\x50\xeb\x51\xeb\x52\xcb\xed\xeb\x53\xeb\x54\xeb\x55\xeb\x56\xeb\x57\xeb\x58\xeb\x59\xeb\x5a\xda\xf4\xeb\x5b\xeb\x5c\xe3\xc4\xeb\x5d\xeb\x5e\xc1\xa5\xeb\x5f\xeb\x60\xf6\xbf\xeb\x61\xeb\x62\xf6\xc0\xf6\xc1\xc4\xd1\xeb\x63\xc8\xb8\xd1\xe3\xeb\x64\xeb\x65\xd0\xdb\xd1\xc5\xbc\xaf\xb9\xcd\xeb\x66\xef\xf4\xeb\x67\xeb\x68\xb4\xc6\xd3\xba\xf6\xc2\xb3\xfb\xeb\x69\xeb\x6a\xf6\xc3\xeb\x6b\xeb\x6c\xb5\xf1\xeb\x6d\xeb\x6e\xeb\x6f\xeb\x70\xeb\x71\xeb\x72\xeb\x73\xeb\x74\xeb\x75\xeb\x76\xf6\xc5\xeb\x77\xeb\x78\xeb\x79\xeb\x7a\xeb\x7b\xeb\x7c\xeb\x7d\xd3\xea\xf6\xa7\xd1\xa9\xeb\x7e\xeb\x80\xeb\x81\xeb\x82\xf6\xa9\xeb\x83\xeb\x84\xeb\x85\xf6\xa8\xeb\x86\xeb\x87\xc1\xe3\xc0\xd7\xeb\x88\xb1\xa2\xeb\x89\xeb\x8a\xeb\x8b\xeb\x8c\xce\xed\xeb\x8d", /* 9700 */ "\xd0\xe8\xf6\xab\xeb\x8e\xeb\x8f\xcf\xf6\xeb\x90\xf6\xaa\xd5\xf0\xf6\xac\xc3\xb9\xeb\x91\xeb\x92\xeb\x93\xbb\xf4\xf6\xae\xf6\xad\xeb\x94\xeb\x95\xeb\x96\xc4\xde\xeb\x97\xeb\x98\xc1\xd8\xeb\x99\xeb\x9a\xeb\x9b\xeb\x9c\xeb\x9d\xcb\xaa\xeb\x9e\xcf\xbc\xeb\x9f\xeb\xa0\xec\x40\xec\x41\xec\x42\xec\x43\xec\x44\xec\x45\xec\x46\xec\x47\xec\x48\xf6\xaf\xec\x49\xec\x4a\xf6\xb0\xec\x4b\xec\x4c\xf6\xb1\xec\x4d\xc2\xb6\xec\x4e\xec\x4f\xec\x50\xec\x51\xec\x52\xb0\xd4\xc5\xf9\xec\x53\xec\x54\xec\x55\xec\x56\xf6\xb2\xec\x57\xec\x58\xec\x59\xec\x5a\xec\x5b\xec\x5c\xec\x5d\xec\x5e\xec\x5f\xec\x60\xec\x61\xec\x62\xec\x63\xec\x64\xec\x65\xec\x66\xec\x67\xec\x68\xec\x69\xc7\xe0\xf6\xa6\xec\x6a\xec\x6b\xbe\xb8\xec\x6c\xec\x6d\xbe\xb2\xec\x6e\xb5\xe5\xec\x6f\xec\x70\xb7\xc7\xec\x71\xbf\xbf\xc3\xd2\xc3\xe6\xec\x72\xec\x73\xd8\xcc\xec\x74\xec\x75\xec\x76\xb8\xef\xec\x77\xec\x78\xec\x79\xec\x7a\xec\x7b\xec\x7c\xec\x7d\xec\x7e\xec\x80\xbd\xf9\xd1\xa5\xec\x81\xb0\xd0\xec\x82\xec\x83\xec\x84\xec\x85\xec\x86\xf7\xb0\xec\x87\xec\x88\xec\x89", /* 9780 */ "\xec\x8a\xec\x8b\xec\x8c\xec\x8d\xec\x8e\xf7\xb1\xec\x8f\xec\x90\xec\x91\xec\x92\xec\x93\xd0\xac\xec\x94\xb0\xb0\xec\x95\xec\x96\xec\x97\xf7\xb2\xf7\xb3\xec\x98\xf7\xb4\xec\x99\xec\x9a\xec\x9b\xc7\xca\xec\x9c\xec\x9d\xec\x9e\xec\x9f\xec\xa0\xed\x40\xed\x41\xbe\xcf\xed\x42\xed\x43\xf7\xb7\xed\x44\xed\x45\xed\x46\xed\x47\xed\x48\xed\x49\xed\x4a\xf7\xb6\xed\x4b\xb1\xde\xed\x4c\xf7\xb5\xed\x4d\xed\x4e\xf7\xb8\xed\x4f\xf7\xb9\xed\x50\xed\x51\xed\x52\xed\x53\xed\x54\xed\x55\xed\x56\xed\x57\xed\x58\xed\x59\xed\x5a\xed\x5b\xed\x5c\xed\x5d\xed\x5e\xed\x5f\xed\x60\xed\x61\xed\x62\xed\x63\xed\x64\xed\x65\xed\x66\xed\x67\xed\x68\xed\x69\xed\x6a\xed\x6b\xed\x6c\xed\x6d\xed\x6e\xed\x6f\xed\x70\xed\x71\xed\x72\xed\x73\xed\x74\xed\x75\xed\x76\xed\x77\xed\x78\xed\x79\xed\x7a\xed\x7b\xed\x7c\xed\x7d\xed\x7e\xed\x80\xed\x81\xce\xa4\xc8\xcd\xed\x82\xba\xab\xe8\xb8\xe8\xb9\xe8\xba\xbe\xc2\xed\x83\xed\x84\xed\x85\xed\x86\xed\x87\xd2\xf4\xed\x88\xd4\xcf\xc9\xd8\xed\x89\xed\x8a\xed\x8b\xed\x8c\xed\x8d\xed\x8e\xed\x8f\xed\x90\xed\x91", /* 9800 */ "\xed\x92\xed\x93\xed\x94\xed\x95\xed\x96\xed\x97\xed\x98\xed\x99\xed\x9a\xed\x9b\xed\x9c\xed\x9d\xed\x9e\xed\x9f\xed\xa0\xee\x40\xee\x41\xee\x42\xee\x43\xee\x44\xee\x45\xee\x46\xee\x47\xee\x48\xee\x49\xee\x4a\xee\x4b\xee\x4c\xee\x4d\xee\x4e\xee\x4f\xee\x50\xee\x51\xee\x52\xee\x53\xee\x54\xee\x55\xee\x56\xee\x57\xee\x58\xee\x59\xee\x5a\xee\x5b\xee\x5c\xee\x5d\xee\x5e\xee\x5f\xee\x60\xee\x61\xee\x62\xee\x63\xee\x64\xee\x65\xee\x66\xee\x67\xee\x68\xee\x69\xee\x6a\xee\x6b\xee\x6c\xee\x6d\xee\x6e\xee\x6f\xee\x70\xee\x71\xee\x72\xee\x73\xee\x74\xee\x75\xee\x76\xee\x77\xee\x78\xee\x79\xee\x7a\xee\x7b\xee\x7c\xee\x7d\xee\x7e\xee\x80\xee\x81\xee\x82\xee\x83\xee\x84\xee\x85\xee\x86\xee\x87\xee\x88\xee\x89\xee\x8a\xee\x8b\xee\x8c\xee\x8d\xee\x8e\xee\x8f\xee\x90\xee\x91\xee\x92\xee\x93\xee\x94\xee\x95\xee\x96\xee\x97\xee\x98\xee\x99\xee\x9a\xee\x9b\xee\x9c\xee\x9d\xee\x9e\xee\x9f\xee\xa0\xef\x40\xef\x41\xef\x42\xef\x43\xef\x44\xef\x45\xd2\xb3\xb6\xa5\xc7\xea\xf1\xfc\xcf\xee\xcb\xb3\xd0\xeb\xe7\xef\xcd\xe7\xb9\xcb\xb6\xd9", /* 9880 */ "\xf1\xfd\xb0\xe4\xcb\xcc\xf1\xfe\xd4\xa4\xc2\xad\xc1\xec\xc6\xc4\xbe\xb1\xf2\xa1\xbc\xd5\xef\x46\xf2\xa2\xf2\xa3\xef\x47\xf2\xa4\xd2\xc3\xc6\xb5\xef\x48\xcd\xc7\xf2\xa5\xef\x49\xd3\xb1\xbf\xc5\xcc\xe2\xef\x4a\xf2\xa6\xf2\xa7\xd1\xd5\xb6\xee\xf2\xa8\xf2\xa9\xb5\xdf\xf2\xaa\xf2\xab\xef\x4b\xb2\xfc\xf2\xac\xf2\xad\xc8\xa7\xef\x4c\xef\x4d\xef\x4e\xef\x4f\xef\x50\xef\x51\xef\x52\xef\x53\xef\x54\xef\x55\xef\x56\xef\x57\xef\x58\xef\x59\xef\x5a\xef\x5b\xef\x5c\xef\x5d\xef\x5e\xef\x5f\xef\x60\xef\x61\xef\x62\xef\x63\xef\x64\xef\x65\xef\x66\xef\x67\xef\x68\xef\x69\xef\x6a\xef\x6b\xef\x6c\xef\x6d\xef\x6e\xef\x6f\xef\x70\xef\x71\xb7\xe7\xef\x72\xef\x73\xec\xa9\xec\xaa\xec\xab\xef\x74\xec\xac\xef\x75\xef\x76\xc6\xae\xec\xad\xec\xae\xef\x77\xef\x78\xef\x79\xb7\xc9\xca\xb3\xef\x7a\xef\x7b\xef\x7c\xef\x7d\xef\x7e\xef\x80\xef\x81\xe2\xb8\xf7\xcf\xef\x82\xef\x83\xef\x84\xef\x85\xef\x86\xef\x87\xef\x88\xef\x89\xef\x8a\xef\x8b\xef\x8c\xef\x8d\xef\x8e\xef\x8f\xef\x90\xef\x91\xef\x92\xef\x93\xef\x94\xef\x95\xef\x96\xef\x97\xef\x98", /* 9900 */ "\xef\x99\xef\x9a\xef\x9b\xef\x9c\xef\x9d\xef\x9e\xef\x9f\xef\xa0\xf0\x40\xf0\x41\xf0\x42\xf0\x43\xf0\x44\xf7\xd0\xf0\x45\xf0\x46\xb2\xcd\xf0\x47\xf0\x48\xf0\x49\xf0\x4a\xf0\x4b\xf0\x4c\xf0\x4d\xf0\x4e\xf0\x4f\xf0\x50\xf0\x51\xf0\x52\xf0\x53\xf0\x54\xf0\x55\xf0\x56\xf0\x57\xf0\x58\xf0\x59\xf0\x5a\xf0\x5b\xf0\x5c\xf0\x5d\xf0\x5e\xf0\x5f\xf0\x60\xf0\x61\xf0\x62\xf0\x63\xf7\xd1\xf0\x64\xf0\x65\xf0\x66\xf0\x67\xf0\x68\xf0\x69\xf0\x6a\xf0\x6b\xf0\x6c\xf0\x6d\xf0\x6e\xf0\x6f\xf0\x70\xf0\x71\xf0\x72\xf0\x73\xf0\x74\xf0\x75\xf0\x76\xf0\x77\xf0\x78\xf0\x79\xf0\x7a\xf0\x7b\xf0\x7c\xf0\x7d\xf0\x7e\xf0\x80\xf0\x81\xf0\x82\xf0\x83\xf0\x84\xf0\x85\xf0\x86\xf0\x87\xf0\x88\xf0\x89\xf7\xd3\xf7\xd2\xf0\x8a\xf0\x8b\xf0\x8c\xf0\x8d\xf0\x8e\xf0\x8f\xf0\x90\xf0\x91\xf0\x92\xf0\x93\xf0\x94\xf0\x95\xf0\x96\xe2\xbb\xf0\x97\xbc\xa2\xf0\x98\xe2\xbc\xe2\xbd\xe2\xbe\xe2\xbf\xe2\xc0\xe2\xc1\xb7\xb9\xd2\xfb\xbd\xa4\xca\xce\xb1\xa5\xcb\xc7\xf0\x99\xe2\xc2\xb6\xfc\xc8\xc4\xe2\xc3\xf0\x9a\xf0\x9b\xbd\xc8\xf0\x9c\xb1\xfd\xe2\xc4\xf0\x9d\xb6\xf6", /* 9980 */ "\xe2\xc5\xc4\xd9\xf0\x9e\xf0\x9f\xe2\xc6\xcf\xda\xb9\xdd\xe2\xc7\xc0\xa1\xf0\xa0\xe2\xc8\xb2\xf6\xf1\x40\xe2\xc9\xf1\x41\xc1\xf3\xe2\xca\xe2\xcb\xc2\xf8\xe2\xcc\xe2\xcd\xe2\xce\xca\xd7\xd8\xb8\xd9\xe5\xcf\xe3\xf1\x42\xf1\x43\xf1\x44\xf1\x45\xf1\x46\xf1\x47\xf1\x48\xf1\x49\xf1\x4a\xf1\x4b\xf1\x4c\xf0\xa5\xf1\x4d\xf1\x4e\xdc\xb0\xf1\x4f\xf1\x50\xf1\x51\xf1\x52\xf1\x53\xf1\x54\xf1\x55\xf1\x56\xf1\x57\xf1\x58\xf1\x59\xf1\x5a\xf1\x5b\xf1\x5c\xf1\x5d\xf1\x5e\xf1\x5f\xf1\x60\xf1\x61\xf1\x62\xf1\x63\xf1\x64\xf1\x65\xf1\x66\xf1\x67\xf1\x68\xf1\x69\xf1\x6a\xf1\x6b\xf1\x6c\xf1\x6d\xf1\x6e\xf1\x6f\xf1\x70\xf1\x71\xf1\x72\xf1\x73\xf1\x74\xf1\x75\xf1\x76\xf1\x77\xf1\x78\xf1\x79\xf1\x7a\xf1\x7b\xf1\x7c\xf1\x7d\xf1\x7e\xf1\x80\xf1\x81\xf1\x82\xf1\x83\xf1\x84\xf1\x85\xf1\x86\xf1\x87\xf1\x88\xf1\x89\xf1\x8a\xf1\x8b\xf1\x8c\xf1\x8d\xf1\x8e\xf1\x8f\xf1\x90\xf1\x91\xf1\x92\xf1\x93\xf1\x94\xf1\x95\xf1\x96\xf1\x97\xf1\x98\xf1\x99\xf1\x9a\xf1\x9b\xf1\x9c\xf1\x9d\xf1\x9e\xf1\x9f\xf1\xa0\xf2\x40\xf2\x41\xf2\x42\xf2\x43\xf2\x44\xf2\x45", /* 9a00 */ "\xf2\x46\xf2\x47\xf2\x48\xf2\x49\xf2\x4a\xf2\x4b\xf2\x4c\xf2\x4d\xf2\x4e\xf2\x4f\xf2\x50\xf2\x51\xf2\x52\xf2\x53\xf2\x54\xf2\x55\xf2\x56\xf2\x57\xf2\x58\xf2\x59\xf2\x5a\xf2\x5b\xf2\x5c\xf2\x5d\xf2\x5e\xf2\x5f\xf2\x60\xf2\x61\xf2\x62\xf2\x63\xf2\x64\xf2\x65\xf2\x66\xf2\x67\xf2\x68\xf2\x69\xf2\x6a\xf2\x6b\xf2\x6c\xf2\x6d\xf2\x6e\xf2\x6f\xf2\x70\xf2\x71\xf2\x72\xf2\x73\xf2\x74\xf2\x75\xf2\x76\xf2\x77\xf2\x78\xf2\x79\xf2\x7a\xf2\x7b\xf2\x7c\xf2\x7d\xf2\x7e\xf2\x80\xf2\x81\xf2\x82\xf2\x83\xf2\x84\xf2\x85\xf2\x86\xf2\x87\xf2\x88\xf2\x89\xf2\x8a\xf2\x8b\xf2\x8c\xf2\x8d\xf2\x8e\xf2\x8f\xf2\x90\xf2\x91\xf2\x92\xf2\x93\xf2\x94\xf2\x95\xf2\x96\xf2\x97\xf2\x98\xf2\x99\xf2\x9a\xf2\x9b\xf2\x9c\xf2\x9d\xf2\x9e\xf2\x9f\xf2\xa0\xf3\x40\xf3\x41\xf3\x42\xf3\x43\xf3\x44\xf3\x45\xf3\x46\xf3\x47\xf3\x48\xf3\x49\xf3\x4a\xf3\x4b\xf3\x4c\xf3\x4d\xf3\x4e\xf3\x4f\xf3\x50\xf3\x51\xc2\xed\xd4\xa6\xcd\xd4\xd1\xb1\xb3\xdb\xc7\xfd\xf3\x52\xb2\xb5\xc2\xbf\xe6\xe0\xca\xbb\xe6\xe1\xe6\xe2\xbe\xd4\xe6\xe3\xd7\xa4\xcd\xd5\xe6\xe5\xbc\xdd\xe6\xe4", /* 9a80 */ "\xe6\xe6\xe6\xe7\xc2\xee\xf3\x53\xbd\xbe\xe6\xe8\xc2\xe6\xba\xa7\xe6\xe9\xf3\x54\xe6\xea\xb3\xd2\xd1\xe9\xf3\x55\xf3\x56\xbf\xa5\xe6\xeb\xc6\xef\xe6\xec\xe6\xed\xf3\x57\xf3\x58\xe6\xee\xc6\xad\xe6\xef\xf3\x59\xc9\xa7\xe6\xf0\xe6\xf1\xe6\xf2\xe5\xb9\xe6\xf3\xe6\xf4\xc2\xe2\xe6\xf5\xe6\xf6\xd6\xe8\xe6\xf7\xf3\x5a\xe6\xf8\xb9\xc7\xf3\x5b\xf3\x5c\xf3\x5d\xf3\x5e\xf3\x5f\xf3\x60\xf3\x61\xf7\xbb\xf7\xba\xf3\x62\xf3\x63\xf3\x64\xf3\x65\xf7\xbe\xf7\xbc\xba\xa1\xf3\x66\xf7\xbf\xf3\x67\xf7\xc0\xf3\x68\xf3\x69\xf3\x6a\xf7\xc2\xf7\xc1\xf7\xc4\xf3\x6b\xf3\x6c\xf7\xc3\xf3\x6d\xf3\x6e\xf3\x6f\xf3\x70\xf3\x71\xf7\xc5\xf7\xc6\xf3\x72\xf3\x73\xf3\x74\xf3\x75\xf7\xc7\xf3\x76\xcb\xe8\xf3\x77\xf3\x78\xf3\x79\xf3\x7a\xb8\xdf\xf3\x7b\xf3\x7c\xf3\x7d\xf3\x7e\xf3\x80\xf3\x81\xf7\xd4\xf3\x82\xf7\xd5\xf3\x83\xf3\x84\xf3\x85\xf3\x86\xf7\xd6\xf3\x87\xf3\x88\xf3\x89\xf3\x8a\xf7\xd8\xf3\x8b\xf7\xda\xf3\x8c\xf7\xd7\xf3\x8d\xf3\x8e\xf3\x8f\xf3\x90\xf3\x91\xf3\x92\xf3\x93\xf3\x94\xf3\x95\xf7\xdb\xf3\x96\xf7\xd9\xf3\x97\xf3\x98\xf3\x99\xf3\x9a", /* 9b00 */ "\xf3\x9b\xf3\x9c\xf3\x9d\xd7\xd7\xf3\x9e\xf3\x9f\xf3\xa0\xf4\x40\xf7\xdc\xf4\x41\xf4\x42\xf4\x43\xf4\x44\xf4\x45\xf4\x46\xf7\xdd\xf4\x47\xf4\x48\xf4\x49\xf7\xde\xf4\x4a\xf4\x4b\xf4\x4c\xf4\x4d\xf4\x4e\xf4\x4f\xf4\x50\xf4\x51\xf4\x52\xf4\x53\xf4\x54\xf7\xdf\xf4\x55\xf4\x56\xf4\x57\xf7\xe0\xf4\x58\xf4\x59\xf4\x5a\xf4\x5b\xf4\x5c\xf4\x5d\xf4\x5e\xf4\x5f\xf4\x60\xf4\x61\xf4\x62\xdb\xcb\xf4\x63\xf4\x64\xd8\xaa\xf4\x65\xf4\x66\xf4\x67\xf4\x68\xf4\x69\xf4\x6a\xf4\x6b\xf4\x6c\xe5\xf7\xb9\xed\xf4\x6d\xf4\x6e\xf4\x6f\xf4\x70\xbf\xfd\xbb\xea\xf7\xc9\xc6\xc7\xf7\xc8\xf4\x71\xf7\xca\xf7\xcc\xf7\xcb\xf4\x72\xf4\x73\xf4\x74\xf7\xcd\xf4\x75\xce\xba\xf4\x76\xf7\xce\xf4\x77\xf4\x78\xc4\xa7\xf4\x79\xf4\x7a\xf4\x7b\xf4\x7c\xf4\x7d\xf4\x7e\xf4\x80\xf4\x81\xf4\x82\xf4\x83\xf4\x84\xf4\x85\xf4\x86\xf4\x87\xf4\x88\xf4\x89\xf4\x8a\xf4\x8b\xf4\x8c\xf4\x8d\xf4\x8e\xf4\x8f\xf4\x90\xf4\x91\xf4\x92\xf4\x93\xf4\x94\xf4\x95\xf4\x96\xf4\x97\xf4\x98\xf4\x99\xf4\x9a\xf4\x9b\xf4\x9c\xf4\x9d\xf4\x9e\xf4\x9f\xf4\xa0\xf5\x40\xf5\x41\xf5\x42\xf5\x43", /* 9b80 */ "\xf5\x44\xf5\x45\xf5\x46\xf5\x47\xf5\x48\xf5\x49\xf5\x4a\xf5\x4b\xf5\x4c\xf5\x4d\xf5\x4e\xf5\x4f\xf5\x50\xf5\x51\xf5\x52\xf5\x53\xf5\x54\xf5\x55\xf5\x56\xf5\x57\xf5\x58\xf5\x59\xf5\x5a\xf5\x5b\xf5\x5c\xf5\x5d\xf5\x5e\xf5\x5f\xf5\x60\xf5\x61\xf5\x62\xf5\x63\xf5\x64\xf5\x65\xf5\x66\xf5\x67\xf5\x68\xf5\x69\xf5\x6a\xf5\x6b\xf5\x6c\xf5\x6d\xf5\x6e\xf5\x6f\xf5\x70\xf5\x71\xf5\x72\xf5\x73\xf5\x74\xf5\x75\xf5\x76\xf5\x77\xf5\x78\xf5\x79\xf5\x7a\xf5\x7b\xf5\x7c\xf5\x7d\xf5\x7e\xf5\x80\xf5\x81\xf5\x82\xf5\x83\xf5\x84\xf5\x85\xf5\x86\xf5\x87\xf5\x88\xf5\x89\xf5\x8a\xf5\x8b\xf5\x8c\xf5\x8d\xf5\x8e\xf5\x8f\xf5\x90\xf5\x91\xf5\x92\xf5\x93\xf5\x94\xf5\x95\xf5\x96\xf5\x97\xf5\x98\xf5\x99\xf5\x9a\xf5\x9b\xf5\x9c\xf5\x9d\xf5\x9e\xf5\x9f\xf5\xa0\xf6\x40\xf6\x41\xf6\x42\xf6\x43\xf6\x44\xf6\x45\xf6\x46\xf6\x47\xf6\x48\xf6\x49\xf6\x4a\xf6\x4b\xf6\x4c\xf6\x4d\xf6\x4e\xf6\x4f\xf6\x50\xf6\x51\xf6\x52\xf6\x53\xf6\x54\xf6\x55\xf6\x56\xf6\x57\xf6\x58\xf6\x59\xf6\x5a\xf6\x5b\xf6\x5c\xf6\x5d\xf6\x5e\xf6\x5f\xf6\x60\xf6\x61\xf6\x62\xf6\x63", /* 9c00 */ "\xf6\x64\xf6\x65\xf6\x66\xf6\x67\xf6\x68\xf6\x69\xf6\x6a\xf6\x6b\xf6\x6c\xf6\x6d\xf6\x6e\xf6\x6f\xf6\x70\xf6\x71\xf6\x72\xf6\x73\xf6\x74\xf6\x75\xf6\x76\xf6\x77\xf6\x78\xf6\x79\xf6\x7a\xf6\x7b\xf6\x7c\xf6\x7d\xf6\x7e\xf6\x80\xf6\x81\xf6\x82\xf6\x83\xf6\x84\xf6\x85\xf6\x86\xf6\x87\xf6\x88\xf6\x89\xf6\x8a\xf6\x8b\xf6\x8c\xf6\x8d\xf6\x8e\xf6\x8f\xf6\x90\xf6\x91\xf6\x92\xf6\x93\xf6\x94\xf6\x95\xf6\x96\xf6\x97\xf6\x98\xf6\x99\xf6\x9a\xf6\x9b\xf6\x9c\xf6\x9d\xf6\x9e\xf6\x9f\xf6\xa0\xf7\x40\xf7\x41\xf7\x42\xf7\x43\xf7\x44\xf7\x45\xf7\x46\xf7\x47\xf7\x48\xf7\x49\xf7\x4a\xf7\x4b\xf7\x4c\xf7\x4d\xf7\x4e\xf7\x4f\xf7\x50\xf7\x51\xf7\x52\xf7\x53\xf7\x54\xf7\x55\xf7\x56\xf7\x57\xf7\x58\xf7\x59\xf7\x5a\xf7\x5b\xf7\x5c\xf7\x5d\xf7\x5e\xf7\x5f\xf7\x60\xf7\x61\xf7\x62\xf7\x63\xf7\x64\xf7\x65\xf7\x66\xf7\x67\xf7\x68\xf7\x69\xf7\x6a\xf7\x6b\xf7\x6c\xf7\x6d\xf7\x6e\xf7\x6f\xf7\x70\xf7\x71\xf7\x72\xf7\x73\xf7\x74\xf7\x75\xf7\x76\xf7\x77\xf7\x78\xf7\x79\xf7\x7a\xf7\x7b\xf7\x7c\xf7\x7d\xf7\x7e\xf7\x80\xd3\xe3\xf7\x81\xf7\x82\xf6\xcf", /* 9c80 */ "\xf7\x83\xc2\xb3\xf6\xd0\xf7\x84\xf7\x85\xf6\xd1\xf6\xd2\xf6\xd3\xf6\xd4\xf7\x86\xf7\x87\xf6\xd6\xf7\x88\xb1\xab\xf6\xd7\xf7\x89\xf6\xd8\xf6\xd9\xf6\xda\xf7\x8a\xf6\xdb\xf6\xdc\xf7\x8b\xf7\x8c\xf7\x8d\xf7\x8e\xf6\xdd\xf6\xde\xcf\xca\xf7\x8f\xf6\xdf\xf6\xe0\xf6\xe1\xf6\xe2\xf6\xe3\xf6\xe4\xc0\xf0\xf6\xe5\xf6\xe6\xf6\xe7\xf6\xe8\xf6\xe9\xf7\x90\xf6\xea\xf7\x91\xf6\xeb\xf6\xec\xf7\x92\xf6\xed\xf6\xee\xf6\xef\xf6\xf0\xf6\xf1\xf6\xf2\xf6\xf3\xf6\xf4\xbe\xa8\xf7\x93\xf6\xf5\xf6\xf6\xf6\xf7\xf6\xf8\xf7\x94\xf7\x95\xf7\x96\xf7\x97\xf7\x98\xc8\xfa\xf6\xf9\xf6\xfa\xf6\xfb\xf6\xfc\xf7\x99\xf7\x9a\xf6\xfd\xf6\xfe\xf7\xa1\xf7\xa2\xf7\xa3\xf7\xa4\xf7\xa5\xf7\x9b\xf7\x9c\xf7\xa6\xf7\xa7\xf7\xa8\xb1\xee\xf7\xa9\xf7\xaa\xf7\xab\xf7\x9d\xf7\x9e\xf7\xac\xf7\xad\xc1\xdb\xf7\xae\xf7\x9f\xf7\xa0\xf7\xaf\xf8\x40\xf8\x41\xf8\x42\xf8\x43\xf8\x44\xf8\x45\xf8\x46\xf8\x47\xf8\x48\xf8\x49\xf8\x4a\xf8\x4b\xf8\x4c\xf8\x4d\xf8\x4e\xf8\x4f\xf8\x50\xf8\x51\xf8\x52\xf8\x53\xf8\x54\xf8\x55\xf8\x56\xf8\x57\xf8\x58\xf8\x59\xf8\x5a\xf8\x5b\xf8\x5c", /* 9d00 */ "\xf8\x5d\xf8\x5e\xf8\x5f\xf8\x60\xf8\x61\xf8\x62\xf8\x63\xf8\x64\xf8\x65\xf8\x66\xf8\x67\xf8\x68\xf8\x69\xf8\x6a\xf8\x6b\xf8\x6c\xf8\x6d\xf8\x6e\xf8\x6f\xf8\x70\xf8\x71\xf8\x72\xf8\x73\xf8\x74\xf8\x75\xf8\x76\xf8\x77\xf8\x78\xf8\x79\xf8\x7a\xf8\x7b\xf8\x7c\xf8\x7d\xf8\x7e\xf8\x80\xf8\x81\xf8\x82\xf8\x83\xf8\x84\xf8\x85\xf8\x86\xf8\x87\xf8\x88\xf8\x89\xf8\x8a\xf8\x8b\xf8\x8c\xf8\x8d\xf8\x8e\xf8\x8f\xf8\x90\xf8\x91\xf8\x92\xf8\x93\xf8\x94\xf8\x95\xf8\x96\xf8\x97\xf8\x98\xf8\x99\xf8\x9a\xf8\x9b\xf8\x9c\xf8\x9d\xf8\x9e\xf8\x9f\xf8\xa0\xf9\x40\xf9\x41\xf9\x42\xf9\x43\xf9\x44\xf9\x45\xf9\x46\xf9\x47\xf9\x48\xf9\x49\xf9\x4a\xf9\x4b\xf9\x4c\xf9\x4d\xf9\x4e\xf9\x4f\xf9\x50\xf9\x51\xf9\x52\xf9\x53\xf9\x54\xf9\x55\xf9\x56\xf9\x57\xf9\x58\xf9\x59\xf9\x5a\xf9\x5b\xf9\x5c\xf9\x5d\xf9\x5e\xf9\x5f\xf9\x60\xf9\x61\xf9\x62\xf9\x63\xf9\x64\xf9\x65\xf9\x66\xf9\x67\xf9\x68\xf9\x69\xf9\x6a\xf9\x6b\xf9\x6c\xf9\x6d\xf9\x6e\xf9\x6f\xf9\x70\xf9\x71\xf9\x72\xf9\x73\xf9\x74\xf9\x75\xf9\x76\xf9\x77\xf9\x78\xf9\x79\xf9\x7a\xf9\x7b\xf9\x7c", /* 9d80 */ "\xf9\x7d\xf9\x7e\xf9\x80\xf9\x81\xf9\x82\xf9\x83\xf9\x84\xf9\x85\xf9\x86\xf9\x87\xf9\x88\xf9\x89\xf9\x8a\xf9\x8b\xf9\x8c\xf9\x8d\xf9\x8e\xf9\x8f\xf9\x90\xf9\x91\xf9\x92\xf9\x93\xf9\x94\xf9\x95\xf9\x96\xf9\x97\xf9\x98\xf9\x99\xf9\x9a\xf9\x9b\xf9\x9c\xf9\x9d\xf9\x9e\xf9\x9f\xf9\xa0\xfa\x40\xfa\x41\xfa\x42\xfa\x43\xfa\x44\xfa\x45\xfa\x46\xfa\x47\xfa\x48\xfa\x49\xfa\x4a\xfa\x4b\xfa\x4c\xfa\x4d\xfa\x4e\xfa\x4f\xfa\x50\xfa\x51\xfa\x52\xfa\x53\xfa\x54\xfa\x55\xfa\x56\xfa\x57\xfa\x58\xfa\x59\xfa\x5a\xfa\x5b\xfa\x5c\xfa\x5d\xfa\x5e\xfa\x5f\xfa\x60\xfa\x61\xfa\x62\xfa\x63\xfa\x64\xfa\x65\xfa\x66\xfa\x67\xfa\x68\xfa\x69\xfa\x6a\xfa\x6b\xfa\x6c\xfa\x6d\xfa\x6e\xfa\x6f\xfa\x70\xfa\x71\xfa\x72\xfa\x73\xfa\x74\xfa\x75\xfa\x76\xfa\x77\xfa\x78\xfa\x79\xfa\x7a\xfa\x7b\xfa\x7c\xfa\x7d\xfa\x7e\xfa\x80\xfa\x81\xfa\x82\xfa\x83\xfa\x84\xfa\x85\xfa\x86\xfa\x87\xfa\x88\xfa\x89\xfa\x8a\xfa\x8b\xfa\x8c\xfa\x8d\xfa\x8e\xfa\x8f\xfa\x90\xfa\x91\xfa\x92\xfa\x93\xfa\x94\xfa\x95\xfa\x96\xfa\x97\xfa\x98\xfa\x99\xfa\x9a\xfa\x9b\xfa\x9c\xfa\x9d", /* 9e00 */ "\xfa\x9e\xfa\x9f\xfa\xa0\xfb\x40\xfb\x41\xfb\x42\xfb\x43\xfb\x44\xfb\x45\xfb\x46\xfb\x47\xfb\x48\xfb\x49\xfb\x4a\xfb\x4b\xfb\x4c\xfb\x4d\xfb\x4e\xfb\x4f\xfb\x50\xfb\x51\xfb\x52\xfb\x53\xfb\x54\xfb\x55\xfb\x56\xfb\x57\xfb\x58\xfb\x59\xfb\x5a\xfb\x5b\xc4\xf1\xf0\xaf\xbc\xa6\xf0\xb0\xc3\xf9\xfb\x5c\xc5\xb8\xd1\xbb\xfb\x5d\xf0\xb1\xf0\xb2\xf0\xb3\xf0\xb4\xf0\xb5\xd1\xbc\xfb\x5e\xd1\xec\xfb\x5f\xf0\xb7\xf0\xb6\xd4\xa7\xfb\x60\xcd\xd2\xf0\xb8\xf0\xba\xf0\xb9\xf0\xbb\xf0\xbc\xfb\x61\xfb\x62\xb8\xeb\xf0\xbd\xba\xe8\xfb\x63\xf0\xbe\xf0\xbf\xbe\xe9\xf0\xc0\xb6\xec\xf0\xc1\xf0\xc2\xf0\xc3\xf0\xc4\xc8\xb5\xf0\xc5\xf0\xc6\xfb\x64\xf0\xc7\xc5\xf4\xfb\x65\xf0\xc8\xfb\x66\xfb\x67\xfb\x68\xf0\xc9\xfb\x69\xf0\xca\xf7\xbd\xfb\x6a\xf0\xcb\xf0\xcc\xf0\xcd\xfb\x6b\xf0\xce\xfb\x6c\xfb\x6d\xfb\x6e\xfb\x6f\xf0\xcf\xba\xd7\xfb\x70\xf0\xd0\xf0\xd1\xf0\xd2\xf0\xd3\xf0\xd4\xf0\xd5\xf0\xd6\xf0\xd8\xfb\x71\xfb\x72\xd3\xa5\xf0\xd7\xfb\x73\xf0\xd9\xfb\x74\xfb\x75\xfb\x76\xfb\x77\xfb\x78\xfb\x79\xfb\x7a\xfb\x7b\xfb\x7c\xfb\x7d\xf5\xba\xc2\xb9", /* 9e80 */ "\xfb\x7e\xfb\x80\xf7\xe4\xfb\x81\xfb\x82\xfb\x83\xfb\x84\xf7\xe5\xf7\xe6\xfb\x85\xfb\x86\xf7\xe7\xfb\x87\xfb\x88\xfb\x89\xfb\x8a\xfb\x8b\xfb\x8c\xf7\xe8\xc2\xb4\xfb\x8d\xfb\x8e\xfb\x8f\xfb\x90\xfb\x91\xfb\x92\xfb\x93\xfb\x94\xfb\x95\xf7\xea\xfb\x96\xf7\xeb\xfb\x97\xfb\x98\xfb\x99\xfb\x9a\xfb\x9b\xfb\x9c\xc2\xf3\xfb\x9d\xfb\x9e\xfb\x9f\xfb\xa0\xfc\x40\xfc\x41\xfc\x42\xfc\x43\xfc\x44\xfc\x45\xfc\x46\xfc\x47\xfc\x48\xf4\xf0\xfc\x49\xfc\x4a\xfc\x4b\xf4\xef\xfc\x4c\xfc\x4d\xc2\xe9\xfc\x4e\xf7\xe1\xf7\xe2\xfc\x4f\xfc\x50\xfc\x51\xfc\x52\xfc\x53\xbb\xc6\xfc\x54\xfc\x55\xfc\x56\xfc\x57\xd9\xe4\xfc\x58\xfc\x59\xfc\x5a\xca\xf2\xc0\xe8\xf0\xa4\xfc\x5b\xba\xda\xfc\x5c\xfc\x5d\xc7\xad\xfc\x5e\xfc\x5f\xfc\x60\xc4\xac\xfc\x61\xfc\x62\xf7\xec\xf7\xed\xf7\xee\xfc\x63\xf7\xf0\xf7\xef\xfc\x64\xf7\xf1\xfc\x65\xfc\x66\xf7\xf4\xfc\x67\xf7\xf3\xfc\x68\xf7\xf2\xf7\xf5\xfc\x69\xfc\x6a\xfc\x6b\xfc\x6c\xf7\xf6\xfc\x6d\xfc\x6e\xfc\x6f\xfc\x70\xfc\x71\xfc\x72\xfc\x73\xfc\x74\xfc\x75\xed\xe9\xfc\x76\xed\xea\xed\xeb\xfc\x77\xf6\xbc\xfc\x78", /* 9f00 */ "\xfc\x79\xfc\x7a\xfc\x7b\xfc\x7c\xfc\x7d\xfc\x7e\xfc\x80\xfc\x81\xfc\x82\xfc\x83\xfc\x84\xf6\xbd\xfc\x85\xf6\xbe\xb6\xa6\xfc\x86\xd8\xbe\xfc\x87\xfc\x88\xb9\xc4\xfc\x89\xfc\x8a\xfc\x8b\xd8\xbb\xfc\x8c\xdc\xb1\xfc\x8d\xfc\x8e\xfc\x8f\xfc\x90\xfc\x91\xfc\x92\xca\xf3\xfc\x93\xf7\xf7\xfc\x94\xfc\x95\xfc\x96\xfc\x97\xfc\x98\xfc\x99\xfc\x9a\xfc\x9b\xfc\x9c\xf7\xf8\xfc\x9d\xfc\x9e\xf7\xf9\xfc\x9f\xfc\xa0\xfd\x40\xfd\x41\xfd\x42\xfd\x43\xfd\x44\xf7\xfb\xfd\x45\xf7\xfa\xfd\x46\xb1\xc7\xfd\x47\xf7\xfc\xf7\xfd\xfd\x48\xfd\x49\xfd\x4a\xfd\x4b\xfd\x4c\xf7\xfe\xfd\x4d\xfd\x4e\xfd\x4f\xfd\x50\xfd\x51\xfd\x52\xfd\x53\xfd\x54\xfd\x55\xfd\x56\xfd\x57\xc6\xeb\xec\xb4\xfd\x58\xfd\x59\xfd\x5a\xfd\x5b\xfd\x5c\xfd\x5d\xfd\x5e\xfd\x5f\xfd\x60\xfd\x61\xfd\x62\xfd\x63\xfd\x64\xfd\x65\xfd\x66\xfd\x67\xfd\x68\xfd\x69\xfd\x6a\xfd\x6b\xfd\x6c\xfd\x6d\xfd\x6e\xfd\x6f\xfd\x70\xfd\x71\xfd\x72\xfd\x73\xfd\x74\xfd\x75\xfd\x76\xfd\x77\xfd\x78\xfd\x79\xfd\x7a\xfd\x7b\xfd\x7c\xfd\x7d\xfd\x7e\xfd\x80\xfd\x81\xfd\x82\xfd\x83\xfd\x84\xfd\x85\xb3\xdd", /* 9f80 */ "\xf6\xb3\xfd\x86\xfd\x87\xf6\xb4\xc1\xe4\xf6\xb5\xf6\xb6\xf6\xb7\xf6\xb8\xf6\xb9\xf6\xba\xc8\xa3\xf6\xbb\xfd\x88\xfd\x89\xfd\x8a\xfd\x8b\xfd\x8c\xfd\x8d\xfd\x8e\xfd\x8f\xfd\x90\xfd\x91\xfd\x92\xfd\x93\xc1\xfa\xb9\xa8\xed\xe8\xfd\x94\xfd\x95\xfd\x96\xb9\xea\xd9\xdf\xfd\x97\xfd\x98\xfd\x99\xfd\x9a\xfd\x9b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* a000 */ NULL, /* a080 */ NULL, /* a100 */ NULL, /* a180 */ NULL, /* a200 */ NULL, /* a280 */ NULL, /* a300 */ NULL, /* a380 */ NULL, /* a400 */ NULL, /* a480 */ NULL, /* a500 */ NULL, /* a580 */ NULL, /* a600 */ NULL, /* a680 */ NULL, /* a700 */ NULL, /* a780 */ NULL, /* a800 */ NULL, /* a880 */ NULL, /* a900 */ NULL, /* a980 */ NULL, /* aa00 */ NULL, /* aa80 */ NULL, /* ab00 */ NULL, /* ab80 */ NULL, /* ac00 */ NULL, /* ac80 */ NULL, /* ad00 */ NULL, /* ad80 */ NULL, /* ae00 */ NULL, /* ae80 */ NULL, /* af00 */ NULL, /* af80 */ NULL, /* b000 */ NULL, /* b080 */ NULL, /* b100 */ NULL, /* b180 */ NULL, /* b200 */ NULL, /* b280 */ NULL, /* b300 */ NULL, /* b380 */ NULL, /* b400 */ NULL, /* b480 */ NULL, /* b500 */ NULL, /* b580 */ NULL, /* b600 */ NULL, /* b680 */ NULL, /* b700 */ NULL, /* b780 */ NULL, /* b800 */ NULL, /* b880 */ NULL, /* b900 */ NULL, /* b980 */ NULL, /* ba00 */ NULL, /* ba80 */ NULL, /* bb00 */ NULL, /* bb80 */ NULL, /* bc00 */ NULL, /* bc80 */ NULL, /* bd00 */ NULL, /* bd80 */ NULL, /* be00 */ NULL, /* be80 */ NULL, /* bf00 */ NULL, /* bf80 */ NULL, /* c000 */ NULL, /* c080 */ NULL, /* c100 */ NULL, /* c180 */ NULL, /* c200 */ NULL, /* c280 */ NULL, /* c300 */ NULL, /* c380 */ NULL, /* c400 */ NULL, /* c480 */ NULL, /* c500 */ NULL, /* c580 */ NULL, /* c600 */ NULL, /* c680 */ NULL, /* c700 */ NULL, /* c780 */ NULL, /* c800 */ NULL, /* c880 */ NULL, /* c900 */ NULL, /* c980 */ NULL, /* ca00 */ NULL, /* ca80 */ NULL, /* cb00 */ NULL, /* cb80 */ NULL, /* cc00 */ NULL, /* cc80 */ NULL, /* cd00 */ NULL, /* cd80 */ NULL, /* ce00 */ NULL, /* ce80 */ NULL, /* cf00 */ NULL, /* cf80 */ NULL, /* d000 */ NULL, /* d080 */ NULL, /* d100 */ NULL, /* d180 */ NULL, /* d200 */ NULL, /* d280 */ NULL, /* d300 */ NULL, /* d380 */ NULL, /* d400 */ NULL, /* d480 */ NULL, /* d500 */ NULL, /* d580 */ NULL, /* d600 */ NULL, /* d680 */ NULL, /* d700 */ NULL, /* d780 */ NULL, /* d800 */ NULL, /* d880 */ NULL, /* d900 */ NULL, /* d980 */ NULL, /* da00 */ NULL, /* da80 */ NULL, /* db00 */ NULL, /* db80 */ NULL, /* dc00 */ NULL, /* dc80 */ NULL, /* dd00 */ NULL, /* dd80 */ NULL, /* de00 */ NULL, /* de80 */ NULL, /* df00 */ NULL, /* df80 */ NULL, /* e000 */ "\xaa\xa1\xaa\xa2\xaa\xa3\xaa\xa4\xaa\xa5\xaa\xa6\xaa\xa7\xaa\xa8\xaa\xa9\xaa\xaa\xaa\xab\xaa\xac\xaa\xad\xaa\xae\xaa\xaf\xaa\xb0\xaa\xb1\xaa\xb2\xaa\xb3\xaa\xb4\xaa\xb5\xaa\xb6\xaa\xb7\xaa\xb8\xaa\xb9\xaa\xba\xaa\xbb\xaa\xbc\xaa\xbd\xaa\xbe\xaa\xbf\xaa\xc0\xaa\xc1\xaa\xc2\xaa\xc3\xaa\xc4\xaa\xc5\xaa\xc6\xaa\xc7\xaa\xc8\xaa\xc9\xaa\xca\xaa\xcb\xaa\xcc\xaa\xcd\xaa\xce\xaa\xcf\xaa\xd0\xaa\xd1\xaa\xd2\xaa\xd3\xaa\xd4\xaa\xd5\xaa\xd6\xaa\xd7\xaa\xd8\xaa\xd9\xaa\xda\xaa\xdb\xaa\xdc\xaa\xdd\xaa\xde\xaa\xdf\xaa\xe0\xaa\xe1\xaa\xe2\xaa\xe3\xaa\xe4\xaa\xe5\xaa\xe6\xaa\xe7\xaa\xe8\xaa\xe9\xaa\xea\xaa\xeb\xaa\xec\xaa\xed\xaa\xee\xaa\xef\xaa\xf0\xaa\xf1\xaa\xf2\xaa\xf3\xaa\xf4\xaa\xf5\xaa\xf6\xaa\xf7\xaa\xf8\xaa\xf9\xaa\xfa\xaa\xfb\xaa\xfc\xaa\xfd\xaa\xfe\xab\xa1\xab\xa2\xab\xa3\xab\xa4\xab\xa5\xab\xa6\xab\xa7\xab\xa8\xab\xa9\xab\xaa\xab\xab\xab\xac\xab\xad\xab\xae\xab\xaf\xab\xb0\xab\xb1\xab\xb2\xab\xb3\xab\xb4\xab\xb5\xab\xb6\xab\xb7\xab\xb8\xab\xb9\xab\xba\xab\xbb\xab\xbc\xab\xbd\xab\xbe\xab\xbf\xab\xc0\xab\xc1\xab\xc2", /* e080 */ "\xab\xc3\xab\xc4\xab\xc5\xab\xc6\xab\xc7\xab\xc8\xab\xc9\xab\xca\xab\xcb\xab\xcc\xab\xcd\xab\xce\xab\xcf\xab\xd0\xab\xd1\xab\xd2\xab\xd3\xab\xd4\xab\xd5\xab\xd6\xab\xd7\xab\xd8\xab\xd9\xab\xda\xab\xdb\xab\xdc\xab\xdd\xab\xde\xab\xdf\xab\xe0\xab\xe1\xab\xe2\xab\xe3\xab\xe4\xab\xe5\xab\xe6\xab\xe7\xab\xe8\xab\xe9\xab\xea\xab\xeb\xab\xec\xab\xed\xab\xee\xab\xef\xab\xf0\xab\xf1\xab\xf2\xab\xf3\xab\xf4\xab\xf5\xab\xf6\xab\xf7\xab\xf8\xab\xf9\xab\xfa\xab\xfb\xab\xfc\xab\xfd\xab\xfe\xac\xa1\xac\xa2\xac\xa3\xac\xa4\xac\xa5\xac\xa6\xac\xa7\xac\xa8\xac\xa9\xac\xaa\xac\xab\xac\xac\xac\xad\xac\xae\xac\xaf\xac\xb0\xac\xb1\xac\xb2\xac\xb3\xac\xb4\xac\xb5\xac\xb6\xac\xb7\xac\xb8\xac\xb9\xac\xba\xac\xbb\xac\xbc\xac\xbd\xac\xbe\xac\xbf\xac\xc0\xac\xc1\xac\xc2\xac\xc3\xac\xc4\xac\xc5\xac\xc6\xac\xc7\xac\xc8\xac\xc9\xac\xca\xac\xcb\xac\xcc\xac\xcd\xac\xce\xac\xcf\xac\xd0\xac\xd1\xac\xd2\xac\xd3\xac\xd4\xac\xd5\xac\xd6\xac\xd7\xac\xd8\xac\xd9\xac\xda\xac\xdb\xac\xdc\xac\xdd\xac\xde\xac\xdf\xac\xe0\xac\xe1\xac\xe2\xac\xe3\xac\xe4", /* e100 */ "\xac\xe5\xac\xe6\xac\xe7\xac\xe8\xac\xe9\xac\xea\xac\xeb\xac\xec\xac\xed\xac\xee\xac\xef\xac\xf0\xac\xf1\xac\xf2\xac\xf3\xac\xf4\xac\xf5\xac\xf6\xac\xf7\xac\xf8\xac\xf9\xac\xfa\xac\xfb\xac\xfc\xac\xfd\xac\xfe\xad\xa1\xad\xa2\xad\xa3\xad\xa4\xad\xa5\xad\xa6\xad\xa7\xad\xa8\xad\xa9\xad\xaa\xad\xab\xad\xac\xad\xad\xad\xae\xad\xaf\xad\xb0\xad\xb1\xad\xb2\xad\xb3\xad\xb4\xad\xb5\xad\xb6\xad\xb7\xad\xb8\xad\xb9\xad\xba\xad\xbb\xad\xbc\xad\xbd\xad\xbe\xad\xbf\xad\xc0\xad\xc1\xad\xc2\xad\xc3\xad\xc4\xad\xc5\xad\xc6\xad\xc7\xad\xc8\xad\xc9\xad\xca\xad\xcb\xad\xcc\xad\xcd\xad\xce\xad\xcf\xad\xd0\xad\xd1\xad\xd2\xad\xd3\xad\xd4\xad\xd5\xad\xd6\xad\xd7\xad\xd8\xad\xd9\xad\xda\xad\xdb\xad\xdc\xad\xdd\xad\xde\xad\xdf\xad\xe0\xad\xe1\xad\xe2\xad\xe3\xad\xe4\xad\xe5\xad\xe6\xad\xe7\xad\xe8\xad\xe9\xad\xea\xad\xeb\xad\xec\xad\xed\xad\xee\xad\xef\xad\xf0\xad\xf1\xad\xf2\xad\xf3\xad\xf4\xad\xf5\xad\xf6\xad\xf7\xad\xf8\xad\xf9\xad\xfa\xad\xfb\xad\xfc\xad\xfd\xad\xfe\xae\xa1\xae\xa2\xae\xa3\xae\xa4\xae\xa5\xae\xa6\xae\xa7\xae\xa8", /* e180 */ "\xae\xa9\xae\xaa\xae\xab\xae\xac\xae\xad\xae\xae\xae\xaf\xae\xb0\xae\xb1\xae\xb2\xae\xb3\xae\xb4\xae\xb5\xae\xb6\xae\xb7\xae\xb8\xae\xb9\xae\xba\xae\xbb\xae\xbc\xae\xbd\xae\xbe\xae\xbf\xae\xc0\xae\xc1\xae\xc2\xae\xc3\xae\xc4\xae\xc5\xae\xc6\xae\xc7\xae\xc8\xae\xc9\xae\xca\xae\xcb\xae\xcc\xae\xcd\xae\xce\xae\xcf\xae\xd0\xae\xd1\xae\xd2\xae\xd3\xae\xd4\xae\xd5\xae\xd6\xae\xd7\xae\xd8\xae\xd9\xae\xda\xae\xdb\xae\xdc\xae\xdd\xae\xde\xae\xdf\xae\xe0\xae\xe1\xae\xe2\xae\xe3\xae\xe4\xae\xe5\xae\xe6\xae\xe7\xae\xe8\xae\xe9\xae\xea\xae\xeb\xae\xec\xae\xed\xae\xee\xae\xef\xae\xf0\xae\xf1\xae\xf2\xae\xf3\xae\xf4\xae\xf5\xae\xf6\xae\xf7\xae\xf8\xae\xf9\xae\xfa\xae\xfb\xae\xfc\xae\xfd\xae\xfe\xaf\xa1\xaf\xa2\xaf\xa3\xaf\xa4\xaf\xa5\xaf\xa6\xaf\xa7\xaf\xa8\xaf\xa9\xaf\xaa\xaf\xab\xaf\xac\xaf\xad\xaf\xae\xaf\xaf\xaf\xb0\xaf\xb1\xaf\xb2\xaf\xb3\xaf\xb4\xaf\xb5\xaf\xb6\xaf\xb7\xaf\xb8\xaf\xb9\xaf\xba\xaf\xbb\xaf\xbc\xaf\xbd\xaf\xbe\xaf\xbf\xaf\xc0\xaf\xc1\xaf\xc2\xaf\xc3\xaf\xc4\xaf\xc5\xaf\xc6\xaf\xc7\xaf\xc8\xaf\xc9\xaf\xca", /* e200 */ "\xaf\xcb\xaf\xcc\xaf\xcd\xaf\xce\xaf\xcf\xaf\xd0\xaf\xd1\xaf\xd2\xaf\xd3\xaf\xd4\xaf\xd5\xaf\xd6\xaf\xd7\xaf\xd8\xaf\xd9\xaf\xda\xaf\xdb\xaf\xdc\xaf\xdd\xaf\xde\xaf\xdf\xaf\xe0\xaf\xe1\xaf\xe2\xaf\xe3\xaf\xe4\xaf\xe5\xaf\xe6\xaf\xe7\xaf\xe8\xaf\xe9\xaf\xea\xaf\xeb\xaf\xec\xaf\xed\xaf\xee\xaf\xef\xaf\xf0\xaf\xf1\xaf\xf2\xaf\xf3\xaf\xf4\xaf\xf5\xaf\xf6\xaf\xf7\xaf\xf8\xaf\xf9\xaf\xfa\xaf\xfb\xaf\xfc\xaf\xfd\xaf\xfe\xf8\xa1\xf8\xa2\xf8\xa3\xf8\xa4\xf8\xa5\xf8\xa6\xf8\xa7\xf8\xa8\xf8\xa9\xf8\xaa\xf8\xab\xf8\xac\xf8\xad\xf8\xae\xf8\xaf\xf8\xb0\xf8\xb1\xf8\xb2\xf8\xb3\xf8\xb4\xf8\xb5\xf8\xb6\xf8\xb7\xf8\xb8\xf8\xb9\xf8\xba\xf8\xbb\xf8\xbc\xf8\xbd\xf8\xbe\xf8\xbf\xf8\xc0\xf8\xc1\xf8\xc2\xf8\xc3\xf8\xc4\xf8\xc5\xf8\xc6\xf8\xc7\xf8\xc8\xf8\xc9\xf8\xca\xf8\xcb\xf8\xcc\xf8\xcd\xf8\xce\xf8\xcf\xf8\xd0\xf8\xd1\xf8\xd2\xf8\xd3\xf8\xd4\xf8\xd5\xf8\xd6\xf8\xd7\xf8\xd8\xf8\xd9\xf8\xda\xf8\xdb\xf8\xdc\xf8\xdd\xf8\xde\xf8\xdf\xf8\xe0\xf8\xe1\xf8\xe2\xf8\xe3\xf8\xe4\xf8\xe5\xf8\xe6\xf8\xe7\xf8\xe8\xf8\xe9\xf8\xea\xf8\xeb\xf8\xec", /* e280 */ "\xf8\xed\xf8\xee\xf8\xef\xf8\xf0\xf8\xf1\xf8\xf2\xf8\xf3\xf8\xf4\xf8\xf5\xf8\xf6\xf8\xf7\xf8\xf8\xf8\xf9\xf8\xfa\xf8\xfb\xf8\xfc\xf8\xfd\xf8\xfe\xf9\xa1\xf9\xa2\xf9\xa3\xf9\xa4\xf9\xa5\xf9\xa6\xf9\xa7\xf9\xa8\xf9\xa9\xf9\xaa\xf9\xab\xf9\xac\xf9\xad\xf9\xae\xf9\xaf\xf9\xb0\xf9\xb1\xf9\xb2\xf9\xb3\xf9\xb4\xf9\xb5\xf9\xb6\xf9\xb7\xf9\xb8\xf9\xb9\xf9\xba\xf9\xbb\xf9\xbc\xf9\xbd\xf9\xbe\xf9\xbf\xf9\xc0\xf9\xc1\xf9\xc2\xf9\xc3\xf9\xc4\xf9\xc5\xf9\xc6\xf9\xc7\xf9\xc8\xf9\xc9\xf9\xca\xf9\xcb\xf9\xcc\xf9\xcd\xf9\xce\xf9\xcf\xf9\xd0\xf9\xd1\xf9\xd2\xf9\xd3\xf9\xd4\xf9\xd5\xf9\xd6\xf9\xd7\xf9\xd8\xf9\xd9\xf9\xda\xf9\xdb\xf9\xdc\xf9\xdd\xf9\xde\xf9\xdf\xf9\xe0\xf9\xe1\xf9\xe2\xf9\xe3\xf9\xe4\xf9\xe5\xf9\xe6\xf9\xe7\xf9\xe8\xf9\xe9\xf9\xea\xf9\xeb\xf9\xec\xf9\xed\xf9\xee\xf9\xef\xf9\xf0\xf9\xf1\xf9\xf2\xf9\xf3\xf9\xf4\xf9\xf5\xf9\xf6\xf9\xf7\xf9\xf8\xf9\xf9\xf9\xfa\xf9\xfb\xf9\xfc\xf9\xfd\xf9\xfe\xfa\xa1\xfa\xa2\xfa\xa3\xfa\xa4\xfa\xa5\xfa\xa6\xfa\xa7\xfa\xa8\xfa\xa9\xfa\xaa\xfa\xab\xfa\xac\xfa\xad\xfa\xae\xfa\xaf\xfa\xb0", /* e300 */ "\xfa\xb1\xfa\xb2\xfa\xb3\xfa\xb4\xfa\xb5\xfa\xb6\xfa\xb7\xfa\xb8\xfa\xb9\xfa\xba\xfa\xbb\xfa\xbc\xfa\xbd\xfa\xbe\xfa\xbf\xfa\xc0\xfa\xc1\xfa\xc2\xfa\xc3\xfa\xc4\xfa\xc5\xfa\xc6\xfa\xc7\xfa\xc8\xfa\xc9\xfa\xca\xfa\xcb\xfa\xcc\xfa\xcd\xfa\xce\xfa\xcf\xfa\xd0\xfa\xd1\xfa\xd2\xfa\xd3\xfa\xd4\xfa\xd5\xfa\xd6\xfa\xd7\xfa\xd8\xfa\xd9\xfa\xda\xfa\xdb\xfa\xdc\xfa\xdd\xfa\xde\xfa\xdf\xfa\xe0\xfa\xe1\xfa\xe2\xfa\xe3\xfa\xe4\xfa\xe5\xfa\xe6\xfa\xe7\xfa\xe8\xfa\xe9\xfa\xea\xfa\xeb\xfa\xec\xfa\xed\xfa\xee\xfa\xef\xfa\xf0\xfa\xf1\xfa\xf2\xfa\xf3\xfa\xf4\xfa\xf5\xfa\xf6\xfa\xf7\xfa\xf8\xfa\xf9\xfa\xfa\xfa\xfb\xfa\xfc\xfa\xfd\xfa\xfe\xfb\xa1\xfb\xa2\xfb\xa3\xfb\xa4\xfb\xa5\xfb\xa6\xfb\xa7\xfb\xa8\xfb\xa9\xfb\xaa\xfb\xab\xfb\xac\xfb\xad\xfb\xae\xfb\xaf\xfb\xb0\xfb\xb1\xfb\xb2\xfb\xb3\xfb\xb4\xfb\xb5\xfb\xb6\xfb\xb7\xfb\xb8\xfb\xb9\xfb\xba\xfb\xbb\xfb\xbc\xfb\xbd\xfb\xbe\xfb\xbf\xfb\xc0\xfb\xc1\xfb\xc2\xfb\xc3\xfb\xc4\xfb\xc5\xfb\xc6\xfb\xc7\xfb\xc8\xfb\xc9\xfb\xca\xfb\xcb\xfb\xcc\xfb\xcd\xfb\xce\xfb\xcf\xfb\xd0\xfb\xd1\xfb\xd2", /* e380 */ "\xfb\xd3\xfb\xd4\xfb\xd5\xfb\xd6\xfb\xd7\xfb\xd8\xfb\xd9\xfb\xda\xfb\xdb\xfb\xdc\xfb\xdd\xfb\xde\xfb\xdf\xfb\xe0\xfb\xe1\xfb\xe2\xfb\xe3\xfb\xe4\xfb\xe5\xfb\xe6\xfb\xe7\xfb\xe8\xfb\xe9\xfb\xea\xfb\xeb\xfb\xec\xfb\xed\xfb\xee\xfb\xef\xfb\xf0\xfb\xf1\xfb\xf2\xfb\xf3\xfb\xf4\xfb\xf5\xfb\xf6\xfb\xf7\xfb\xf8\xfb\xf9\xfb\xfa\xfb\xfb\xfb\xfc\xfb\xfd\xfb\xfe\xfc\xa1\xfc\xa2\xfc\xa3\xfc\xa4\xfc\xa5\xfc\xa6\xfc\xa7\xfc\xa8\xfc\xa9\xfc\xaa\xfc\xab\xfc\xac\xfc\xad\xfc\xae\xfc\xaf\xfc\xb0\xfc\xb1\xfc\xb2\xfc\xb3\xfc\xb4\xfc\xb5\xfc\xb6\xfc\xb7\xfc\xb8\xfc\xb9\xfc\xba\xfc\xbb\xfc\xbc\xfc\xbd\xfc\xbe\xfc\xbf\xfc\xc0\xfc\xc1\xfc\xc2\xfc\xc3\xfc\xc4\xfc\xc5\xfc\xc6\xfc\xc7\xfc\xc8\xfc\xc9\xfc\xca\xfc\xcb\xfc\xcc\xfc\xcd\xfc\xce\xfc\xcf\xfc\xd0\xfc\xd1\xfc\xd2\xfc\xd3\xfc\xd4\xfc\xd5\xfc\xd6\xfc\xd7\xfc\xd8\xfc\xd9\xfc\xda\xfc\xdb\xfc\xdc\xfc\xdd\xfc\xde\xfc\xdf\xfc\xe0\xfc\xe1\xfc\xe2\xfc\xe3\xfc\xe4\xfc\xe5\xfc\xe6\xfc\xe7\xfc\xe8\xfc\xe9\xfc\xea\xfc\xeb\xfc\xec\xfc\xed\xfc\xee\xfc\xef\xfc\xf0\xfc\xf1\xfc\xf2\xfc\xf3\xfc\xf4", /* e400 */ "\xfc\xf5\xfc\xf6\xfc\xf7\xfc\xf8\xfc\xf9\xfc\xfa\xfc\xfb\xfc\xfc\xfc\xfd\xfc\xfe\xfd\xa1\xfd\xa2\xfd\xa3\xfd\xa4\xfd\xa5\xfd\xa6\xfd\xa7\xfd\xa8\xfd\xa9\xfd\xaa\xfd\xab\xfd\xac\xfd\xad\xfd\xae\xfd\xaf\xfd\xb0\xfd\xb1\xfd\xb2\xfd\xb3\xfd\xb4\xfd\xb5\xfd\xb6\xfd\xb7\xfd\xb8\xfd\xb9\xfd\xba\xfd\xbb\xfd\xbc\xfd\xbd\xfd\xbe\xfd\xbf\xfd\xc0\xfd\xc1\xfd\xc2\xfd\xc3\xfd\xc4\xfd\xc5\xfd\xc6\xfd\xc7\xfd\xc8\xfd\xc9\xfd\xca\xfd\xcb\xfd\xcc\xfd\xcd\xfd\xce\xfd\xcf\xfd\xd0\xfd\xd1\xfd\xd2\xfd\xd3\xfd\xd4\xfd\xd5\xfd\xd6\xfd\xd7\xfd\xd8\xfd\xd9\xfd\xda\xfd\xdb\xfd\xdc\xfd\xdd\xfd\xde\xfd\xdf\xfd\xe0\xfd\xe1\xfd\xe2\xfd\xe3\xfd\xe4\xfd\xe5\xfd\xe6\xfd\xe7\xfd\xe8\xfd\xe9\xfd\xea\xfd\xeb\xfd\xec\xfd\xed\xfd\xee\xfd\xef\xfd\xf0\xfd\xf1\xfd\xf2\xfd\xf3\xfd\xf4\xfd\xf5\xfd\xf6\xfd\xf7\xfd\xf8\xfd\xf9\xfd\xfa\xfd\xfb\xfd\xfc\xfd\xfd\xfd\xfe\xfe\xa1\xfe\xa2\xfe\xa3\xfe\xa4\xfe\xa5\xfe\xa6\xfe\xa7\xfe\xa8\xfe\xa9\xfe\xaa\xfe\xab\xfe\xac\xfe\xad\xfe\xae\xfe\xaf\xfe\xb0\xfe\xb1\xfe\xb2\xfe\xb3\xfe\xb4\xfe\xb5\xfe\xb6\xfe\xb7\xfe\xb8", /* e480 */ "\xfe\xb9\xfe\xba\xfe\xbb\xfe\xbc\xfe\xbd\xfe\xbe\xfe\xbf\xfe\xc0\xfe\xc1\xfe\xc2\xfe\xc3\xfe\xc4\xfe\xc5\xfe\xc6\xfe\xc7\xfe\xc8\xfe\xc9\xfe\xca\xfe\xcb\xfe\xcc\xfe\xcd\xfe\xce\xfe\xcf\xfe\xd0\xfe\xd1\xfe\xd2\xfe\xd3\xfe\xd4\xfe\xd5\xfe\xd6\xfe\xd7\xfe\xd8\xfe\xd9\xfe\xda\xfe\xdb\xfe\xdc\xfe\xdd\xfe\xde\xfe\xdf\xfe\xe0\xfe\xe1\xfe\xe2\xfe\xe3\xfe\xe4\xfe\xe5\xfe\xe6\xfe\xe7\xfe\xe8\xfe\xe9\xfe\xea\xfe\xeb\xfe\xec\xfe\xed\xfe\xee\xfe\xef\xfe\xf0\xfe\xf1\xfe\xf2\xfe\xf3\xfe\xf4\xfe\xf5\xfe\xf6\xfe\xf7\xfe\xf8\xfe\xf9\xfe\xfa\xfe\xfb\xfe\xfc\xfe\xfd\xfe\xfe\xa1\x40\xa1\x41\xa1\x42\xa1\x43\xa1\x44\xa1\x45\xa1\x46\xa1\x47\xa1\x48\xa1\x49\xa1\x4a\xa1\x4b\xa1\x4c\xa1\x4d\xa1\x4e\xa1\x4f\xa1\x50\xa1\x51\xa1\x52\xa1\x53\xa1\x54\xa1\x55\xa1\x56\xa1\x57\xa1\x58\xa1\x59\xa1\x5a\xa1\x5b\xa1\x5c\xa1\x5d\xa1\x5e\xa1\x5f\xa1\x60\xa1\x61\xa1\x62\xa1\x63\xa1\x64\xa1\x65\xa1\x66\xa1\x67\xa1\x68\xa1\x69\xa1\x6a\xa1\x6b\xa1\x6c\xa1\x6d\xa1\x6e\xa1\x6f\xa1\x70\xa1\x71\xa1\x72\xa1\x73\xa1\x74\xa1\x75\xa1\x76\xa1\x77\xa1\x78\xa1\x79", /* e500 */ "\xa1\x7a\xa1\x7b\xa1\x7c\xa1\x7d\xa1\x7e\xa1\x80\xa1\x81\xa1\x82\xa1\x83\xa1\x84\xa1\x85\xa1\x86\xa1\x87\xa1\x88\xa1\x89\xa1\x8a\xa1\x8b\xa1\x8c\xa1\x8d\xa1\x8e\xa1\x8f\xa1\x90\xa1\x91\xa1\x92\xa1\x93\xa1\x94\xa1\x95\xa1\x96\xa1\x97\xa1\x98\xa1\x99\xa1\x9a\xa1\x9b\xa1\x9c\xa1\x9d\xa1\x9e\xa1\x9f\xa1\xa0\xa2\x40\xa2\x41\xa2\x42\xa2\x43\xa2\x44\xa2\x45\xa2\x46\xa2\x47\xa2\x48\xa2\x49\xa2\x4a\xa2\x4b\xa2\x4c\xa2\x4d\xa2\x4e\xa2\x4f\xa2\x50\xa2\x51\xa2\x52\xa2\x53\xa2\x54\xa2\x55\xa2\x56\xa2\x57\xa2\x58\xa2\x59\xa2\x5a\xa2\x5b\xa2\x5c\xa2\x5d\xa2\x5e\xa2\x5f\xa2\x60\xa2\x61\xa2\x62\xa2\x63\xa2\x64\xa2\x65\xa2\x66\xa2\x67\xa2\x68\xa2\x69\xa2\x6a\xa2\x6b\xa2\x6c\xa2\x6d\xa2\x6e\xa2\x6f\xa2\x70\xa2\x71\xa2\x72\xa2\x73\xa2\x74\xa2\x75\xa2\x76\xa2\x77\xa2\x78\xa2\x79\xa2\x7a\xa2\x7b\xa2\x7c\xa2\x7d\xa2\x7e\xa2\x80\xa2\x81\xa2\x82\xa2\x83\xa2\x84\xa2\x85\xa2\x86\xa2\x87\xa2\x88\xa2\x89\xa2\x8a\xa2\x8b\xa2\x8c\xa2\x8d\xa2\x8e\xa2\x8f\xa2\x90\xa2\x91\xa2\x92\xa2\x93\xa2\x94\xa2\x95\xa2\x96\xa2\x97\xa2\x98\xa2\x99\xa2\x9a", /* e580 */ "\xa2\x9b\xa2\x9c\xa2\x9d\xa2\x9e\xa2\x9f\xa2\xa0\xa3\x40\xa3\x41\xa3\x42\xa3\x43\xa3\x44\xa3\x45\xa3\x46\xa3\x47\xa3\x48\xa3\x49\xa3\x4a\xa3\x4b\xa3\x4c\xa3\x4d\xa3\x4e\xa3\x4f\xa3\x50\xa3\x51\xa3\x52\xa3\x53\xa3\x54\xa3\x55\xa3\x56\xa3\x57\xa3\x58\xa3\x59\xa3\x5a\xa3\x5b\xa3\x5c\xa3\x5d\xa3\x5e\xa3\x5f\xa3\x60\xa3\x61\xa3\x62\xa3\x63\xa3\x64\xa3\x65\xa3\x66\xa3\x67\xa3\x68\xa3\x69\xa3\x6a\xa3\x6b\xa3\x6c\xa3\x6d\xa3\x6e\xa3\x6f\xa3\x70\xa3\x71\xa3\x72\xa3\x73\xa3\x74\xa3\x75\xa3\x76\xa3\x77\xa3\x78\xa3\x79\xa3\x7a\xa3\x7b\xa3\x7c\xa3\x7d\xa3\x7e\xa3\x80\xa3\x81\xa3\x82\xa3\x83\xa3\x84\xa3\x85\xa3\x86\xa3\x87\xa3\x88\xa3\x89\xa3\x8a\xa3\x8b\xa3\x8c\xa3\x8d\xa3\x8e\xa3\x8f\xa3\x90\xa3\x91\xa3\x92\xa3\x93\xa3\x94\xa3\x95\xa3\x96\xa3\x97\xa3\x98\xa3\x99\xa3\x9a\xa3\x9b\xa3\x9c\xa3\x9d\xa3\x9e\xa3\x9f\xa3\xa0\xa4\x40\xa4\x41\xa4\x42\xa4\x43\xa4\x44\xa4\x45\xa4\x46\xa4\x47\xa4\x48\xa4\x49\xa4\x4a\xa4\x4b\xa4\x4c\xa4\x4d\xa4\x4e\xa4\x4f\xa4\x50\xa4\x51\xa4\x52\xa4\x53\xa4\x54\xa4\x55\xa4\x56\xa4\x57\xa4\x58\xa4\x59", /* e600 */ "\xa4\x5a\xa4\x5b\xa4\x5c\xa4\x5d\xa4\x5e\xa4\x5f\xa4\x60\xa4\x61\xa4\x62\xa4\x63\xa4\x64\xa4\x65\xa4\x66\xa4\x67\xa4\x68\xa4\x69\xa4\x6a\xa4\x6b\xa4\x6c\xa4\x6d\xa4\x6e\xa4\x6f\xa4\x70\xa4\x71\xa4\x72\xa4\x73\xa4\x74\xa4\x75\xa4\x76\xa4\x77\xa4\x78\xa4\x79\xa4\x7a\xa4\x7b\xa4\x7c\xa4\x7d\xa4\x7e\xa4\x80\xa4\x81\xa4\x82\xa4\x83\xa4\x84\xa4\x85\xa4\x86\xa4\x87\xa4\x88\xa4\x89\xa4\x8a\xa4\x8b\xa4\x8c\xa4\x8d\xa4\x8e\xa4\x8f\xa4\x90\xa4\x91\xa4\x92\xa4\x93\xa4\x94\xa4\x95\xa4\x96\xa4\x97\xa4\x98\xa4\x99\xa4\x9a\xa4\x9b\xa4\x9c\xa4\x9d\xa4\x9e\xa4\x9f\xa4\xa0\xa5\x40\xa5\x41\xa5\x42\xa5\x43\xa5\x44\xa5\x45\xa5\x46\xa5\x47\xa5\x48\xa5\x49\xa5\x4a\xa5\x4b\xa5\x4c\xa5\x4d\xa5\x4e\xa5\x4f\xa5\x50\xa5\x51\xa5\x52\xa5\x53\xa5\x54\xa5\x55\xa5\x56\xa5\x57\xa5\x58\xa5\x59\xa5\x5a\xa5\x5b\xa5\x5c\xa5\x5d\xa5\x5e\xa5\x5f\xa5\x60\xa5\x61\xa5\x62\xa5\x63\xa5\x64\xa5\x65\xa5\x66\xa5\x67\xa5\x68\xa5\x69\xa5\x6a\xa5\x6b\xa5\x6c\xa5\x6d\xa5\x6e\xa5\x6f\xa5\x70\xa5\x71\xa5\x72\xa5\x73\xa5\x74\xa5\x75\xa5\x76\xa5\x77\xa5\x78\xa5\x79", /* e680 */ "\xa5\x7a\xa5\x7b\xa5\x7c\xa5\x7d\xa5\x7e\xa5\x80\xa5\x81\xa5\x82\xa5\x83\xa5\x84\xa5\x85\xa5\x86\xa5\x87\xa5\x88\xa5\x89\xa5\x8a\xa5\x8b\xa5\x8c\xa5\x8d\xa5\x8e\xa5\x8f\xa5\x90\xa5\x91\xa5\x92\xa5\x93\xa5\x94\xa5\x95\xa5\x96\xa5\x97\xa5\x98\xa5\x99\xa5\x9a\xa5\x9b\xa5\x9c\xa5\x9d\xa5\x9e\xa5\x9f\xa5\xa0\xa6\x40\xa6\x41\xa6\x42\xa6\x43\xa6\x44\xa6\x45\xa6\x46\xa6\x47\xa6\x48\xa6\x49\xa6\x4a\xa6\x4b\xa6\x4c\xa6\x4d\xa6\x4e\xa6\x4f\xa6\x50\xa6\x51\xa6\x52\xa6\x53\xa6\x54\xa6\x55\xa6\x56\xa6\x57\xa6\x58\xa6\x59\xa6\x5a\xa6\x5b\xa6\x5c\xa6\x5d\xa6\x5e\xa6\x5f\xa6\x60\xa6\x61\xa6\x62\xa6\x63\xa6\x64\xa6\x65\xa6\x66\xa6\x67\xa6\x68\xa6\x69\xa6\x6a\xa6\x6b\xa6\x6c\xa6\x6d\xa6\x6e\xa6\x6f\xa6\x70\xa6\x71\xa6\x72\xa6\x73\xa6\x74\xa6\x75\xa6\x76\xa6\x77\xa6\x78\xa6\x79\xa6\x7a\xa6\x7b\xa6\x7c\xa6\x7d\xa6\x7e\xa6\x80\xa6\x81\xa6\x82\xa6\x83\xa6\x84\xa6\x85\xa6\x86\xa6\x87\xa6\x88\xa6\x89\xa6\x8a\xa6\x8b\xa6\x8c\xa6\x8d\xa6\x8e\xa6\x8f\xa6\x90\xa6\x91\xa6\x92\xa6\x93\xa6\x94\xa6\x95\xa6\x96\xa6\x97\xa6\x98\xa6\x99\xa6\x9a", /* e700 */ "\xa6\x9b\xa6\x9c\xa6\x9d\xa6\x9e\xa6\x9f\xa6\xa0\xa7\x40\xa7\x41\xa7\x42\xa7\x43\xa7\x44\xa7\x45\xa7\x46\xa7\x47\xa7\x48\xa7\x49\xa7\x4a\xa7\x4b\xa7\x4c\xa7\x4d\xa7\x4e\xa7\x4f\xa7\x50\xa7\x51\xa7\x52\xa7\x53\xa7\x54\xa7\x55\xa7\x56\xa7\x57\xa7\x58\xa7\x59\xa7\x5a\xa7\x5b\xa7\x5c\xa7\x5d\xa7\x5e\xa7\x5f\xa7\x60\xa7\x61\xa7\x62\xa7\x63\xa7\x64\xa7\x65\xa7\x66\xa7\x67\xa7\x68\xa7\x69\xa7\x6a\xa7\x6b\xa7\x6c\xa7\x6d\xa7\x6e\xa7\x6f\xa7\x70\xa7\x71\xa7\x72\xa7\x73\xa7\x74\xa7\x75\xa7\x76\xa7\x77\xa7\x78\xa7\x79\xa7\x7a\xa7\x7b\xa7\x7c\xa7\x7d\xa7\x7e\xa7\x80\xa7\x81\xa7\x82\xa7\x83\xa7\x84\xa7\x85\xa7\x86\xa7\x87\xa7\x88\xa7\x89\xa7\x8a\xa7\x8b\xa7\x8c\xa7\x8d\xa7\x8e\xa7\x8f\xa7\x90\xa7\x91\xa7\x92\xa7\x93\xa7\x94\xa7\x95\xa7\x96\xa7\x97\xa7\x98\xa7\x99\xa7\x9a\xa7\x9b\xa7\x9c\xa7\x9d\xa7\x9e\xa7\x9f\xa7\xa0\xa2\xab\xa2\xac\xa2\xad\xa2\xae\xa2\xaf\xa2\xb0\x00\x00\xa2\xe4\xa2\xef\xa2\xf0\xa2\xfd\xa2\xfe\xa4\xf4\xa4\xf5\xa4\xf6\xa4\xf7\xa4\xf8\xa4\xf9\xa4\xfa\xa4\xfb\xa4\xfc\xa4\xfd\xa4\xfe\xa5\xf7\xa5\xf8\xa5\xf9", /* e780 */ "\xa5\xfa\xa5\xfb\xa5\xfc\xa5\xfd\xa5\xfe\xa6\xb9\xa6\xba\xa6\xbb\xa6\xbc\xa6\xbd\xa6\xbe\xa6\xbf\xa6\xc0\xa6\xd9\xa6\xda\xa6\xdb\xa6\xdc\xa6\xdd\xa6\xde\xa6\xdf\xa6\xec\xa6\xed\xa6\xf3\xa6\xf6\xa6\xf7\xa6\xf8\xa6\xf9\xa6\xfa\xa6\xfb\xa6\xfc\xa6\xfd\xa6\xfe\xa7\xc2\xa7\xc3\xa7\xc4\xa7\xc5\xa7\xc6\xa7\xc7\xa7\xc8\xa7\xc9\xa7\xca\xa7\xcb\xa7\xcc\xa7\xcd\xa7\xce\xa7\xcf\xa7\xd0\xa7\xf2\xa7\xf3\xa7\xf4\xa7\xf5\xa7\xf6\xa7\xf7\xa7\xf8\xa7\xf9\xa7\xfa\xa7\xfb\xa7\xfc\xa7\xfd\xa7\xfe\xa8\x96\xa8\x97\xa8\x98\xa8\x99\xa8\x9a\xa8\x9b\xa8\x9c\xa8\x9d\xa8\x9e\xa8\x9f\xa8\xa0\xa8\xbc\x00\x00\xa8\xc1\xa8\xc2\xa8\xc3\xa8\xc4\xa8\xea\xa8\xeb\xa8\xec\xa8\xed\xa8\xee\xa8\xef\xa8\xf0\xa8\xf1\xa8\xf2\xa8\xf3\xa8\xf4\xa8\xf5\xa8\xf6\xa8\xf7\xa8\xf8\xa8\xf9\xa8\xfa\xa8\xfb\xa8\xfc\xa8\xfd\xa8\xfe\xa9\x58\xa9\x5b\xa9\x5d\xa9\x5e\xa9\x5f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa9\x97\xa9\x98\xa9\x99\xa9\x9a\xa9\x9b\xa9\x9c\xa9\x9d\xa9\x9e\xa9\x9f\xa9\xa0\xa9\xa1\xa9\xa2", /* e800 */ "\xa9\xa3\xa9\xf0\xa9\xf1\xa9\xf2\xa9\xf3\xa9\xf4\xa9\xf5\xa9\xf6\xa9\xf7\xa9\xf8\xa9\xf9\xa9\xfa\xa9\xfb\xa9\xfc\xa9\xfd\xa9\xfe\xd7\xfa\xd7\xfb\xd7\xfc\xd7\xfd\xd7\xfe\x00\x00\xfe\x51\xfe\x52\xfe\x53\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xfe\x59\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xfe\x61\x00\x00\x00\x00\x00\x00\x00\x00\xfe\x66\xfe\x67\x00\x00\x00\x00\x00\x00\x00\x00\xfe\x6c\xfe\x6d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xfe\x76\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xfe\x7e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xfe\x90\xfe\x91\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xfe\xa0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* e880 */ NULL, /* e900 */ NULL, /* e980 */ NULL, /* ea00 */ NULL, /* ea80 */ NULL, /* eb00 */ NULL, /* eb80 */ NULL, /* ec00 */ NULL, /* ec80 */ NULL, /* ed00 */ NULL, /* ed80 */ NULL, /* ee00 */ NULL, /* ee80 */ NULL, /* ef00 */ NULL, /* ef80 */ NULL, /* f000 */ NULL, /* f080 */ NULL, /* f100 */ NULL, /* f180 */ NULL, /* f200 */ NULL, /* f280 */ NULL, /* f300 */ NULL, /* f380 */ NULL, /* f400 */ NULL, /* f480 */ NULL, /* f500 */ NULL, /* f580 */ NULL, /* f600 */ NULL, /* f680 */ NULL, /* f700 */ NULL, /* f780 */ NULL, /* f800 */ NULL, /* f880 */ NULL, /* f900 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xfd\x9c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xfd\x9d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* f980 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xfd\x9e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xfd\x9f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xfd\xa0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* fa00 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xfe\x40\xfe\x41\xfe\x42\xfe\x43\x00\x00\xfe\x44\x00\x00\xfe\x45\xfe\x46\x00\x00\x00\x00\x00\x00\xfe\x47\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xfe\x48\xfe\x49\xfe\x4a\x00\x00\xfe\x4b\xfe\x4c\x00\x00\x00\x00\xfe\x4d\xfe\x4e\xfe\x4f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* fa80 */ NULL, /* fb00 */ NULL, /* fb80 */ NULL, /* fc00 */ NULL, /* fc80 */ NULL, /* fd00 */ NULL, /* fd80 */ NULL, /* fe00 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa9\x55\xa6\xf2\x00\x00\xa6\xf4\xa6\xf5\xa6\xe0\xa6\xe1\xa6\xf0\xa6\xf1\xa6\xe2\xa6\xe3\xa6\xee\xa6\xef\xa6\xe6\xa6\xe7\xa6\xe4\xa6\xe5\xa6\xe8\xa6\xe9\xa6\xea\xa6\xeb\x00\x00\x00\x00\x00\x00\x00\x00\xa9\x68\xa9\x69\xa9\x6a\xa9\x6b\xa9\x6c\xa9\x6d\xa9\x6e\xa9\x6f\xa9\x70\xa9\x71\x00\x00\xa9\x72\xa9\x73\xa9\x74\xa9\x75\x00\x00\xa9\x76\xa9\x77\xa9\x78\xa9\x79\xa9\x7a\xa9\x7b\xa9\x7c\xa9\x7d\xa9\x7e\xa9\x80\xa9\x81\xa9\x82\xa9\x83\xa9\x84\x00\x00\xa9\x85\xa9\x86\xa9\x87\xa9\x88\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* fe80 */ NULL, /* ff00 */ "\x00\x00\xa3\xa1\xa3\xa2\xa3\xa3\xa1\xe7\xa3\xa5\xa3\xa6\xa3\xa7\xa3\xa8\xa3\xa9\xa3\xaa\xa3\xab\xa3\xac\xa3\xad\xa3\xae\xa3\xaf\xa3\xb0\xa3\xb1\xa3\xb2\xa3\xb3\xa3\xb4\xa3\xb5\xa3\xb6\xa3\xb7\xa3\xb8\xa3\xb9\xa3\xba\xa3\xbb\xa3\xbc\xa3\xbd\xa3\xbe\xa3\xbf\xa3\xc0\xa3\xc1\xa3\xc2\xa3\xc3\xa3\xc4\xa3\xc5\xa3\xc6\xa3\xc7\xa3\xc8\xa3\xc9\xa3\xca\xa3\xcb\xa3\xcc\xa3\xcd\xa3\xce\xa3\xcf\xa3\xd0\xa3\xd1\xa3\xd2\xa3\xd3\xa3\xd4\xa3\xd5\xa3\xd6\xa3\xd7\xa3\xd8\xa3\xd9\xa3\xda\xa3\xdb\xa3\xdc\xa3\xdd\xa3\xde\xa3\xdf\xa3\xe0\xa3\xe1\xa3\xe2\xa3\xe3\xa3\xe4\xa3\xe5\xa3\xe6\xa3\xe7\xa3\xe8\xa3\xe9\xa3\xea\xa3\xeb\xa3\xec\xa3\xed\xa3\xee\xa3\xef\xa3\xf0\xa3\xf1\xa3\xf2\xa3\xf3\xa3\xf4\xa3\xf5\xa3\xf6\xa3\xf7\xa3\xf8\xa3\xf9\xa3\xfa\xa3\xfb\xa3\xfc\xa3\xfd\xa1\xab\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* ff80 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa1\xe9\xa1\xea\xa9\x56\xa3\xfe\xa9\x57\xa3\xa4\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" } }, { "big5-0", { /* 0000 */ NULL, /* 0080 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa1\xb1\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa1\xc2\xa2\x58\xa1\xd3\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa1\x50\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa1\xd1\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa1\xd2\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 0100 */ NULL, /* 0180 */ NULL, /* 0200 */ NULL, /* 0280 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa3\xbe\x00\x00\xa3\xbc\xa3\xbd\xa3\xbf\x00\x00\xa1\xc5\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa3\xbb\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 0300 */ NULL, /* 0380 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa3\x44\xa3\x45\xa3\x46\xa3\x47\xa3\x48\xa3\x49\xa3\x4a\xa3\x4b\xa3\x4c\xa3\x4d\xa3\x4e\xa3\x4f\xa3\x50\xa3\x51\xa3\x52\xa3\x53\xa3\x54\x00\x00\xa3\x55\xa3\x56\xa3\x57\xa3\x58\xa3\x59\xa3\x5a\xa3\x5b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa3\x5c\xa3\x5d\xa3\x5e\xa3\x5f\xa3\x60\xa3\x61\xa3\x62\xa3\x63\xa3\x64\xa3\x65\xa3\x66\xa3\x67\xa3\x68\xa3\x69\xa3\x6a\xa3\x6b\xa3\x6c\x00\x00\xa3\x6d\xa3\x6e\xa3\x6f\xa3\x70\xa3\x71\xa3\x72\xa3\x73\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 0400 */ NULL, /* 0480 */ NULL, /* 0500 */ NULL, /* 0580 */ NULL, /* 0600 */ NULL, /* 0680 */ NULL, /* 0700 */ NULL, /* 0780 */ NULL, /* 0800 */ NULL, /* 0880 */ NULL, /* 0900 */ NULL, /* 0980 */ NULL, /* 0a00 */ NULL, /* 0a80 */ NULL, /* 0b00 */ NULL, /* 0b80 */ NULL, /* 0c00 */ NULL, /* 0c80 */ NULL, /* 0d00 */ NULL, /* 0d80 */ NULL, /* 0e00 */ NULL, /* 0e80 */ NULL, /* 0f00 */ NULL, /* 0f80 */ NULL, /* 1000 */ NULL, /* 1080 */ NULL, /* 1100 */ NULL, /* 1180 */ NULL, /* 1200 */ NULL, /* 1280 */ NULL, /* 1300 */ NULL, /* 1380 */ NULL, /* 1400 */ NULL, /* 1480 */ NULL, /* 1500 */ NULL, /* 1580 */ NULL, /* 1600 */ NULL, /* 1680 */ NULL, /* 1700 */ NULL, /* 1780 */ NULL, /* 1800 */ NULL, /* 1880 */ NULL, /* 1900 */ NULL, /* 1980 */ NULL, /* 1a00 */ NULL, /* 1a80 */ NULL, /* 1b00 */ NULL, /* 1b80 */ NULL, /* 1c00 */ NULL, /* 1c80 */ NULL, /* 1d00 */ NULL, /* 1d80 */ NULL, /* 1e00 */ NULL, /* 1e80 */ NULL, /* 1f00 */ NULL, /* 1f80 */ NULL, /* 2000 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa1\x56\xa1\x58\x00\x00\x00\x00\x00\x00\xa1\xa5\xa1\xa6\x00\x00\x00\x00\xa1\xa7\xa1\xa8\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa1\x4c\xa1\x4b\xa1\x45\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa1\xac\x00\x00\x00\x00\xa1\xab\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa1\xb0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 2080 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa3\xe1\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 2100 */ "\x00\x00\x00\x00\x00\x00\xa2\x4a\x00\x00\xa1\xc1\x00\x00\x00\x00\x00\x00\xa2\x4b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa2\xb9\xa2\xba\xa2\xbb\xa2\xbc\xa2\xbd\xa2\xbe\xa2\xbf\xa2\xc0\xa2\xc1\xa2\xc2\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 2180 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa1\xf6\xa1\xf4\xa1\xf7\xa1\xf5\x00\x00\x00\x00\xa1\xf8\xa1\xf9\xa1\xfb\xa1\xfa\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 2200 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa2\x41\x00\x00\x00\x00\x00\x00\x00\x00\xa1\xd4\x00\x00\x00\x00\x00\x00\xa1\xdb\xa1\xe8\xa1\xe7\x00\x00\x00\x00\xa1\xfd\x00\x00\xa1\xfc\x00\x00\x00\x00\x00\x00\xa1\xe4\xa1\xe5\xa1\xec\x00\x00\x00\x00\xa1\xed\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa1\xef\xa1\xee\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa1\xdc\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa1\xda\xa1\xdd\x00\x00\x00\x00\x00\x00\x00\x00\xa1\xd8\xa1\xd9\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 2280 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa1\xf2\x00\x00\x00\x00\x00\x00\xa1\xf3\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa1\xe6\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa1\xe9\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 2300 */ NULL, /* 2380 */ NULL, /* 2400 */ NULL, /* 2480 */ NULL, /* 2500 */ "\xa2\x77\x00\x00\xa2\x78\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa2\x7a\x00\x00\x00\x00\x00\x00\xa2\x7b\x00\x00\x00\x00\x00\x00\xa2\x7c\x00\x00\x00\x00\x00\x00\xa2\x7d\x00\x00\x00\x00\x00\x00\xa2\x75\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa2\x74\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa2\x73\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa2\x72\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa2\x71\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa2\xa4\xf9\xf8\xf9\xe6\xf9\xef\xf9\xdd\xf9\xe8\xf9\xf1\xf9\xdf\xf9\xec\xf9\xf5\xf9\xe3\xf9\xee\xf9\xf7\xf9\xe5\xa2\xa5\xf9\xf2\xf9\xe0\xa2\xa7\xf9\xf4\xf9\xe2\xf9\xe7\xf9\xf0\xf9\xde\xf9\xed\xf9\xf6\xf9\xe4\xa2\xa6\xf9\xf3\xf9\xe1\xa2\x7e\xa2\xa1\xa2\xa3\xa2\xa2\xa2\xac\xa2\xad\xa2\xae\xa1\x5a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 2580 */ "\x00\x00\xa2\x62\xa2\x63\xa2\x64\xa2\x65\xa2\x66\xa2\x67\xa2\x68\xa2\x69\xa2\x70\xa2\x6f\xa2\x6e\xa2\x6d\xa2\x6c\xa2\x6b\xa2\x6a\x00\x00\x00\x00\x00\x00\xf9\xfe\xa2\x76\xa2\x79\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa1\xbd\xa1\xbc\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa1\xb6\xa1\xb5\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa1\xbf\xa1\xbe\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa1\xbb\xa1\xba\x00\x00\x00\x00\x00\x00\xa1\xb3\x00\x00\x00\x00\xa1\xb7\xa1\xb4\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa2\xa8\xa2\xa9\xa2\xab\xa2\xaa\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 2600 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa1\xb9\xa1\xb8\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa1\xf0\x00\x00\xa1\xf1\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 2680 */ NULL, /* 2700 */ NULL, /* 2780 */ NULL, /* 2800 */ NULL, /* 2880 */ NULL, /* 2900 */ NULL, /* 2980 */ NULL, /* 2a00 */ NULL, /* 2a80 */ NULL, /* 2b00 */ NULL, /* 2b80 */ NULL, /* 2c00 */ NULL, /* 2c80 */ NULL, /* 2d00 */ NULL, /* 2d80 */ NULL, /* 2e00 */ NULL, /* 2e80 */ NULL, /* 2f00 */ NULL, /* 2f80 */ NULL, /* 3000 */ "\xa1\x40\xa1\x42\xa1\x43\xa1\xb2\x00\x00\x00\x00\x00\x00\x00\x00\xa1\x71\xa1\x72\xa1\x6d\xa1\x6e\xa1\x75\xa1\x76\xa1\x79\xa1\x7a\xa1\x69\xa1\x6a\xa2\x45\x00\x00\xa1\x65\xa1\x66\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa1\xa9\xa1\xaa\x00\x00\x00\x00\xa2\xc3\xa2\xc4\xa2\xc5\xa2\xc6\xa2\xc7\xa2\xc8\xa2\xc9\xa2\xca\xa2\xcb\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 3080 */ NULL, /* 3100 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa3\x74\xa3\x75\xa3\x76\xa3\x77\xa3\x78\xa3\x79\xa3\x7a\xa3\x7b\xa3\x7c\xa3\x7d\xa3\x7e\xa3\xa1\xa3\xa2\xa3\xa3\xa3\xa4\xa3\xa5\xa3\xa6\xa3\xa7\xa3\xa8\xa3\xa9\xa3\xaa\xa3\xab\xa3\xac\xa3\xad\xa3\xae\xa3\xaf\xa3\xb0\xa3\xb1\xa3\xb2\xa3\xb3\xa3\xb4\xa3\xb5\xa3\xb6\xa3\xb7\xa3\xb8\xa3\xb9\xa3\xba\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 3180 */ NULL, /* 3200 */ NULL, /* 3280 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa1\xc0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 3300 */ NULL, /* 3380 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa2\x55\xa2\x56\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa2\x50\xa2\x51\xa2\x52\x00\x00\x00\x00\xa2\x54\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa2\x57\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa2\x53\x00\x00\x00\x00\xa1\xeb\xa1\xea\x00\x00\x00\x00\xa2\x4f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 3400 */ NULL, /* 3480 */ NULL, /* 3500 */ NULL, /* 3580 */ NULL, /* 3600 */ NULL, /* 3680 */ NULL, /* 3700 */ NULL, /* 3780 */ NULL, /* 3800 */ NULL, /* 3880 */ NULL, /* 3900 */ NULL, /* 3980 */ NULL, /* 3a00 */ NULL, /* 3a80 */ NULL, /* 3b00 */ NULL, /* 3b80 */ NULL, /* 3c00 */ NULL, /* 3c80 */ NULL, /* 3d00 */ NULL, /* 3d80 */ NULL, /* 3e00 */ NULL, /* 3e80 */ NULL, /* 3f00 */ NULL, /* 3f80 */ NULL, /* 4000 */ NULL, /* 4080 */ NULL, /* 4100 */ NULL, /* 4180 */ NULL, /* 4200 */ NULL, /* 4280 */ NULL, /* 4300 */ NULL, /* 4380 */ NULL, /* 4400 */ NULL, /* 4480 */ NULL, /* 4500 */ NULL, /* 4580 */ NULL, /* 4600 */ NULL, /* 4680 */ NULL, /* 4700 */ NULL, /* 4780 */ NULL, /* 4800 */ NULL, /* 4880 */ NULL, /* 4900 */ NULL, /* 4980 */ NULL, /* 4a00 */ NULL, /* 4a80 */ NULL, /* 4b00 */ NULL, /* 4b80 */ NULL, /* 4c00 */ NULL, /* 4c80 */ NULL, /* 4d00 */ NULL, /* 4d80 */ NULL, /* 4e00 */ "\xa4\x40\xa4\x42\x00\x00\xa4\x43\x00\x00\x00\x00\x00\x00\xc9\x45\xa4\x56\xa4\x54\xa4\x57\xa4\x55\xc9\x46\xa4\xa3\xc9\x4f\xc9\x4d\xa4\xa2\xa4\xa1\x00\x00\x00\x00\xa5\x42\xa5\x41\xa5\x40\x00\x00\xa5\x43\xa4\xfe\x00\x00\x00\x00\x00\x00\x00\x00\xa5\xe0\xa5\xe1\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa8\xc3\x00\x00\x00\x00\x00\x00\x00\x00\xa4\x58\x00\x00\xa4\xa4\xc9\x50\x00\x00\xa4\xa5\xc9\x63\xa6\xea\xcb\xb1\x00\x00\x00\x00\x00\x00\x00\x00\xa4\x59\xa4\xa6\x00\x00\xa5\x44\xc9\x64\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc9\x40\xa4\x44\x00\x00\xa4\x5b\x00\x00\xc9\x47\xa4\x5c\x00\x00\x00\x00\xa4\xa7\x00\x00\xa5\x45\xa5\x47\xa5\x46\x00\x00\x00\x00\xa5\xe2\xa5\xe3\x00\x00\x00\x00\xa8\xc4\x00\x00\xad\xbc\xa4\x41\x00\x00\x00\x00\xc9\x41\xa4\x45\xa4\x5e\xa4\x5d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa5\xe4\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa8\xc5\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xb0\xae\xd4\x4b", /* 4e80 */ "\x00\x00\x00\x00\xb6\xc3\xdc\xb1\xdc\xb2\x00\x00\xa4\x46\x00\x00\xa4\xa9\x00\x00\x00\x00\xa8\xc6\xa4\x47\xc9\x48\xa4\x5f\x00\x00\x00\x00\xa4\xaa\xa4\xac\xc9\x51\xa4\xad\xa4\xab\x00\x00\x00\x00\x00\x00\xa5\xe5\x00\x00\xa8\xc7\x00\x00\x00\x00\xa8\xc8\xab\x45\x00\x00\xa4\x60\xa4\xae\x00\x00\xa5\xe6\xa5\xe8\xa5\xe7\x00\x00\xa6\xeb\x00\x00\x00\x00\xa8\xc9\xa8\xca\xab\x46\xab\x47\x00\x00\x00\x00\x00\x00\x00\x00\xad\xbd\x00\x00\x00\x00\xdc\xb3\x00\x00\x00\x00\xf6\xd6\xa4\x48\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa4\xb0\xa4\xaf\xc9\x52\xa4\xb1\xa4\xb7\x00\x00\xa4\xb2\xa4\xb3\xc9\x54\xc9\x53\xa4\xb5\xa4\xb6\x00\x00\xa4\xb4\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa5\x4a\xa5\x4b\xa5\x4c\xa5\x4d\xa5\x49\xa5\x50\xc9\x6a\x00\x00\xc9\x66\xc9\x69\xa5\x51\xa5\x61\x00\x00\xc9\x68\x00\x00\xa5\x4e\xa5\x4f\xa5\x48\x00\x00\x00\x00\xc9\x65\xc9\x67\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa5\xf5\xc9\xb0\xa5\xf2\xa5\xf6\xc9\xba\xc9\xae\xa5\xf3\xc9\xb2\x00\x00\x00\x00\x00\x00\xa5\xf4\x00\x00\xa5\xf7\x00\x00\xa5\xe9", /* 4f00 */ "\xc9\xb1\xa5\xf8\xc9\xb5\x00\x00\xc9\xb9\xc9\xb6\x00\x00\x00\x00\xc9\xb3\xa5\xea\xa5\xec\xa5\xf9\x00\x00\xa5\xee\xc9\xab\xa5\xf1\xa5\xef\xa5\xf0\xc9\xbb\xc9\xb8\xc9\xaf\xa5\xed\x00\x00\x00\x00\xc9\xac\xa5\xeb\x00\x00\x00\x00\x00\x00\xc9\xb4\x00\x00\x00\x00\x00\x00\x00\x00\xc9\xb7\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc9\xad\xca\x66\x00\x00\xa7\x42\xa6\xf4\x00\x00\x00\x00\xca\x67\xa6\xf1\x00\x00\xa7\x44\x00\x00\xa6\xf9\x00\x00\xa6\xf8\xca\x5b\xa6\xfc\xa6\xf7\xca\x60\xca\x68\x00\x00\xca\x64\x00\x00\xa6\xfa\x00\x00\x00\x00\xa6\xfd\xa6\xee\xa7\x47\xca\x5d\x00\x00\x00\x00\xcb\xbd\xa6\xec\xa7\x43\xa6\xed\xa6\xf5\xa6\xf6\xca\x62\xca\x5e\xa6\xfb\xa6\xf3\xca\x5a\xa6\xef\xca\x65\xa7\x45\xa7\x48\xa6\xf2\xa7\x40\xa7\x46\xa6\xf0\xca\x63\xa7\x41\xca\x69\xca\x5c\xa6\xfe\xca\x5f\x00\x00\x00\x00\xca\x61\x00\x00\xa8\xd8\xcb\xbf\xcb\xcb\xa8\xd0\x00\x00\xcb\xcc\xa8\xcb\xa8\xd5\x00\x00\x00\x00\xa8\xce\xcb\xb9\xa8\xd6\xcb\xb8\xcb\xbc\xcb\xc3\xcb\xc1\xa8\xde\xa8\xd9\xcb\xb3\xcb\xb5\xa8\xdb\xa8\xcf", /* 4f80 */ "\xcb\xb6\xcb\xc2\xcb\xc9\xa8\xd4\xcb\xbb\xcb\xb4\xa8\xd3\xcb\xb7\xa8\xd7\xcb\xba\x00\x00\xa8\xd2\x00\x00\xa8\xcd\x00\x00\xa8\xdc\xcb\xc4\xa8\xdd\xcb\xc8\x00\x00\xcb\xc6\xcb\xca\xa8\xda\xcb\xbe\xcb\xb2\x00\x00\xcb\xc0\xa8\xd1\xcb\xc5\xa8\xcc\xcb\xc7\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xab\x56\xab\x4a\x00\x00\x00\x00\xcd\xe0\xcd\xe8\x00\x00\xab\x49\xab\x51\xab\x5d\x00\x00\xcd\xee\xcd\xec\xcd\xe7\x00\x00\x00\x00\x00\x00\xab\x4b\xcd\xed\xcd\xe3\xab\x59\xab\x50\xab\x58\xcd\xde\x00\x00\xcd\xea\x00\x00\xcd\xe1\xab\x54\xcd\xe2\x00\x00\xcd\xdd\xab\x5b\xab\x4e\xab\x57\xab\x4d\x00\x00\xcd\xdf\xcd\xe4\x00\x00\xcd\xeb\xab\x55\xab\x52\xcd\xe6\xab\x5a\xcd\xe9\xcd\xe5\xab\x4f\xab\x5c\xab\x53\xab\x4c\xab\x48\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xcd\xef\x00\x00\xad\xd7\xad\xc1\x00\x00\xad\xd1\x00\x00\xad\xd6\xd0\xd0\xd0\xcf\xd0\xd4\xd0\xd5\xad\xc4\x00\x00\xad\xcd\x00\x00\x00\x00\x00\x00\xad\xda\x00\x00", /* 5000 */ "\xad\xce\x00\x00\x00\x00\x00\x00\x00\x00\xd0\xc9\xad\xc7\xd0\xca\x00\x00\xad\xdc\x00\x00\xad\xd3\xad\xbe\xad\xbf\xd0\xdd\xb0\xbf\x00\x00\xad\xcc\xad\xcb\xd0\xcb\xad\xcf\xd4\x5b\xad\xc6\xd0\xd6\xad\xd5\xad\xd4\xad\xca\xd0\xce\xd0\xd7\x00\x00\xd0\xc8\xad\xc9\xd0\xd8\xad\xd2\xd0\xcc\xad\xc0\x00\x00\xad\xc3\xad\xc2\xd0\xd9\xad\xd0\xad\xc5\xad\xd9\xad\xdb\xd0\xd3\xad\xd8\x00\x00\xd0\xdb\xd0\xcd\xd0\xdc\x00\x00\xd0\xd1\x00\x00\xd0\xda\x00\x00\xd0\xd2\x00\x00\x00\x00\x00\x00\x00\x00\xad\xc8\x00\x00\x00\x00\x00\x00\xd4\x63\xd4\x57\x00\x00\xb0\xb3\x00\x00\xd4\x5c\xd4\x62\xb0\xb2\xd4\x55\xb0\xb6\xd4\x59\xd4\x52\xb0\xb4\xd4\x56\xb0\xb9\xb0\xbe\x00\x00\xd4\x67\x00\x00\xd4\x51\x00\x00\xb0\xba\x00\x00\xd4\x66\x00\x00\x00\x00\xb0\xb5\xd4\x58\xb0\xb1\xd4\x53\xd4\x4f\xd4\x5d\xd4\x50\xd4\x4e\xd4\x5a\xd4\x60\xd4\x61\xb0\xb7\x00\x00\x00\x00\xd8\x5b\xd4\x5e\xd4\x4d\xd4\x5f\x00\x00\xb0\xc1\xd4\x64\xb0\xc0\xd4\x4c\x00\x00\xd4\x54\xd4\x65\xb0\xbc\xb0\xbb\xb0\xb8\xb0\xbd\x00\x00\x00\x00\xb0\xaf\x00\x00\x00\x00\xb0\xb0\x00\x00\x00\x00", /* 5080 */ "\xb3\xc8\x00\x00\xd8\x5e\xd8\x57\x00\x00\xb3\xc5\x00\x00\xd8\x5f\x00\x00\x00\x00\x00\x00\xd8\x55\xd8\x58\xb3\xc4\xd8\x59\x00\x00\x00\x00\xb3\xc7\xd8\x5d\x00\x00\xd8\x53\xd8\x52\xb3\xc9\x00\x00\xb3\xca\xb3\xc6\xb3\xcb\xd8\x51\xd8\x5c\xd8\x5a\xd8\x54\x00\x00\x00\x00\x00\x00\xb3\xc3\xd8\x56\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xb6\xca\xb6\xc4\xdc\xb7\xb6\xcd\xdc\xbd\xdc\xc0\xb6\xc6\xb6\xc7\xdc\xba\xb6\xc5\xdc\xc3\xb6\xcb\xdc\xc4\x00\x00\xdc\xbf\xb6\xcc\x00\x00\xdc\xb4\xb6\xc9\xdc\xb5\x00\x00\xdc\xbe\xdc\xbc\x00\x00\xdc\xb8\xb6\xc8\xdc\xb6\xb6\xce\xdc\xbb\xdc\xc2\xdc\xb9\xdc\xc1\x00\x00\x00\x00\xb9\xb6\xb9\xb3\x00\x00\xb9\xb4\x00\x00\xe0\xf9\xe0\xf1\xb9\xb2\xb9\xaf\xe0\xf2\x00\x00\x00\x00\xb9\xb1\xe0\xf5\x00\x00\xe0\xf7\x00\x00\x00\x00\xe0\xfe\x00\x00\x00\x00\xe0\xfd\xe0\xf8\xb9\xae\xe0\xf0\xb9\xac\xe0\xf3\xb9\xb7\xe0\xf6\x00\x00\xe0\xfa\xb9\xb0\xb9\xad\xe0\xfc\xe0\xfb\xb9\xb5\x00\x00\xe0\xf4\x00\x00\xbb\xf8\xe4\xec\x00\x00\xe4\xe9\xbb\xf9\x00\x00\xbb\xf7\x00\x00\xe4\xf0\xe4\xed\xe4\xe6", /* 5100 */ "\xbb\xf6\x00\x00\xbb\xfa\xe4\xe7\xbb\xf5\xbb\xfd\xe4\xea\xe4\xeb\xbb\xfb\xbb\xfc\xe4\xf1\xe4\xee\xe4\xef\x00\x00\x00\x00\x00\x00\xbe\xaa\xe8\xf8\xbe\xa7\xe8\xf5\xbe\xa9\xbe\xab\x00\x00\xe8\xf6\xbe\xa8\x00\x00\xe8\xf7\x00\x00\xe8\xf4\x00\x00\x00\x00\xc0\x76\xec\xbd\xc0\x77\xec\xbb\x00\x00\xec\xbc\xec\xba\xec\xb9\x00\x00\x00\x00\xec\xbe\xc0\x75\x00\x00\x00\x00\xef\xb8\xef\xb9\x00\x00\xe4\xe8\xef\xb7\xc0\x78\xc3\x5f\xf1\xeb\xf1\xec\x00\x00\xc4\xd7\xc4\xd8\xf5\xc1\xf5\xc0\xc5\x6c\xc5\x6b\xf7\xd0\x00\x00\xa4\x49\xa4\x61\xa4\xb9\x00\x00\xa4\xb8\xa5\x53\xa5\x52\xa5\xfc\xa5\xfb\xa5\xfd\xa5\xfa\x00\x00\xa7\x4a\xa7\x49\xa7\x4b\x00\x00\x00\x00\x00\x00\x00\x00\xa8\xe0\x00\x00\xa8\xdf\xa8\xe1\x00\x00\xab\x5e\x00\x00\xa2\x59\xd0\xde\xa2\x5a\xb0\xc2\xa2\x5c\xa2\x5b\xd8\x60\x00\x00\xa2\x5d\xb9\xb8\xa2\x5e\x00\x00\xa4\x4a\x00\x00\xa4\xba\xa5\xfe\xa8\xe2\x00\x00\xa4\x4b\xa4\xbd\xa4\xbb\xa4\xbc\x00\x00\x00\x00\xa6\x40\x00\x00\x00\x00\x00\x00\xa7\x4c\xa8\xe4\xa8\xe3\xa8\xe5\x00\x00\x00\x00\x00\x00\xad\xdd\x00\x00\x00\x00\x00\x00", /* 5180 */ "\xbe\xac\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc9\x4e\x00\x00\xa5\x54\xa5\x55\x00\x00\x00\x00\xa6\x41\x00\x00\xca\x6a\x00\x00\xab\x60\xab\x5f\xd0\xe0\xd0\xdf\xb0\xc3\x00\x00\xa4\xbe\xc9\x55\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xcb\xcd\x00\x00\xab\x61\x00\x00\xad\xe0\x00\x00\xad\xde\xad\xdf\x00\x00\x00\x00\x00\x00\x00\x00\xbe\xad\x00\x00\xa5\x56\x00\x00\x00\x00\x00\x00\xa6\x42\xc9\xbc\x00\x00\x00\x00\x00\x00\x00\x00\xa7\x4d\xa7\x4e\x00\x00\xca\x6b\x00\x00\x00\x00\xcb\xce\xa8\xe6\xcb\xcf\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd0\xe2\xd0\xe3\xad\xe3\x00\x00\xd0\xe4\x00\x00\xd0\xe1\xad\xe4\xad\xe2\xad\xe1\xd0\xe5\x00\x00\xd4\x68\x00\x00\x00\x00\x00\x00\xd8\x61\x00\x00\x00\x00\xdc\xc5\xe1\x40\x00\x00\x00\x00\x00\x00\xbb\xfe\xbe\xae\xe8\xf9\x00\x00\xa4\x4c\xa4\x5a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xb0\xc4\xb3\xcd\x00\x00\xb9\xb9\x00\x00\xc9\x42\xa4\xbf\x00\x00\xa5\x59\xa5\x57\xa5\x58\x00\x00\x00\x00\xa8\xe7\x00\x00\x00\x00", /* 5200 */ "\xa4\x4d\xa4\x4e\x00\x00\xa4\x62\x00\x00\x00\x00\xa4\xc0\xa4\xc1\xa4\xc2\xc9\xbe\xa5\x5a\x00\x00\xc9\x6b\x00\x00\xa6\x46\x00\x00\xc9\xbf\xa6\x44\xa6\x45\xc9\xbd\x00\x00\x00\x00\xa6\x47\xa6\x43\x00\x00\x00\x00\x00\x00\x00\x00\xca\x6c\xaa\xec\xca\x6d\x00\x00\x00\x00\xca\x6e\x00\x00\x00\x00\xa7\x50\xa7\x4f\x00\x00\x00\x00\xa7\x53\xa7\x51\xa7\x52\x00\x00\x00\x00\x00\x00\xa8\xed\x00\x00\xa8\xec\xcb\xd4\xcb\xd1\xcb\xd2\x00\x00\xcb\xd0\xa8\xee\xa8\xea\xa8\xe9\x00\x00\xa8\xeb\xa8\xe8\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa8\xef\x00\x00\xab\x63\xcd\xf0\x00\x00\xcb\xd3\xab\x68\x00\x00\xcd\xf1\xab\x64\xab\x67\xab\x66\xab\x65\xab\x62\x00\x00\x00\x00\x00\x00\xd0\xe8\x00\x00\xad\xe7\xd0\xeb\xad\xe5\x00\x00\x00\x00\x00\x00\xd0\xe7\xad\xe8\xad\xe6\xad\xe9\xd0\xe9\xd0\xea\x00\x00\xd0\xe6\xd0\xec\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xb3\xd1\xb0\xc5\xd4\x69\xd4\x6b\xd4\x6a\xd4\x6c\xb0\xc6\x00\x00\x00\x00\xb3\xce\x00\x00\xb3\xcf\xb3\xd0\x00\x00\xb6\xd0\xdc\xc7\x00\x00\xdc\xc6\xdc\xc8\xdc\xc9\xb6\xd1\x00\x00\xb6\xcf", /* 5280 */ "\xe1\x41\xe1\x42\xb9\xbb\xb9\xba\xe3\x5a\x00\x00\x00\x00\xbc\x40\xbc\x41\xbc\x42\xbc\x44\xe4\xf2\xe4\xf3\xbc\x43\x00\x00\x00\x00\x00\x00\xbe\xaf\x00\x00\xbe\xb0\x00\x00\x00\x00\xf1\xed\xf5\xc3\xf5\xc2\xf7\xd1\x00\x00\xa4\x4f\x00\x00\x00\x00\x00\x00\xa5\x5c\xa5\x5b\x00\x00\x00\x00\xa6\x48\x00\x00\x00\x00\xc9\xc0\x00\x00\x00\x00\xa7\x55\xa7\x56\xa7\x54\xa7\x57\xca\x6f\xca\x70\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa8\xf1\xcb\xd5\x00\x00\xa8\xf0\x00\x00\xcd\xf2\xab\x6c\xcd\xf3\xab\x6b\x00\x00\x00\x00\x00\x00\xab\x69\x00\x00\xab\x6a\x00\x00\x00\x00\x00\x00\xd0\xed\x00\x00\x00\x00\x00\x00\x00\x00\xb0\xc7\xd4\x6e\x00\x00\xb0\xca\xd4\x6d\xb1\xe5\xb0\xc9\xb0\xc8\x00\x00\xb3\xd4\x00\x00\xb3\xd3\xb3\xd2\xb6\xd2\x00\x00\x00\x00\xb6\xd5\xb6\xd6\xb6\xd4\x00\x00\xb6\xd3\x00\x00\x00\x00\xe1\x43\x00\x00\xe1\x44\x00\x00\x00\x00\x00\x00\xe4\xf5\xbc\x45\xe4\xf4\x00\x00\xbe\xb1\xec\xbf\xc0\x79\x00\x00\xf1\xee\xc4\x55\x00\x00\xa4\x63\xa4\xc3\xc9\x56\x00\x00\xa4\xc4\xa4\xc5", /* 5300 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa5\x5d\xa5\x5e\x00\x00\xa6\x49\xca\x71\xcb\xd6\xcb\xd7\x00\x00\xab\x6d\xd0\xee\xb0\xcc\xb0\xcb\xd8\x63\xd8\x62\x00\x00\x00\x00\xa4\x50\xa4\xc6\xa5\x5f\x00\x00\xb0\xcd\xc9\x43\x00\x00\xc9\x6c\xa5\x60\x00\x00\xc9\xc2\xa6\x4b\xa6\x4a\xc9\xc1\xa7\x58\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xad\xea\x00\x00\x00\x00\xd4\x6f\x00\x00\xb6\xd7\xe1\x45\xb9\xbc\x00\x00\x00\x00\xe8\xfa\x00\x00\x00\x00\xf3\xfd\x00\x00\xa4\xc7\x00\x00\x00\x00\xcb\xd8\xcd\xf4\xb0\xd0\xb0\xce\xb0\xcf\xa4\x51\x00\x00\xa4\x64\xa2\xcd\xa4\xca\x00\x00\xa4\xc9\xa4\xc8\xa5\x63\xa5\x62\x00\x00\xc9\x6d\xc9\xc3\x00\x00\x00\x00\x00\x00\xa8\xf5\xa8\xf2\xa8\xf4\xa8\xf3\x00\x00\x00\x00\xab\x6e\x00\x00\x00\x00\xb3\xd5\x00\x00\xa4\x52\x00\x00\xa4\xcb\x00\x00\xa5\x65\xa5\x64\x00\x00\xca\x72\x00\x00\x00\x00\xa8\xf6\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc9\x57\x00\x00\xa5\x67\xa5\x66\xa6\x4c\xa6\x4d\xca\x73\xa7\x59\x00\x00\xa7\x5a\x00\x00\xa8\xf7\xa8\xf8\xa8\xf9\x00\x00\xab\x6f\xcd\xf5\x00\x00\x00\x00\xad\xeb", /* 5380 */ "\x00\x00\x00\x00\xc9\x44\x00\x00\xa4\xcc\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc9\xc4\x00\x00\x00\x00\x00\x00\xca\x74\xca\x75\x00\x00\x00\x00\xcb\xd9\x00\x00\xcb\xda\x00\x00\xcd\xf7\xcd\xf6\xcd\xf9\xcd\xf8\xab\x70\x00\x00\xd4\x70\xad\xed\xd0\xef\xad\xec\x00\x00\x00\x00\x00\x00\x00\x00\xd8\x64\xb3\xd6\x00\x00\xd8\x65\x00\x00\x00\x00\x00\x00\x00\x00\xe1\x46\xb9\xbd\x00\x00\x00\x00\x00\x00\x00\x00\xbc\x46\x00\x00\xf1\xef\x00\x00\x00\x00\x00\x00\x00\x00\xc9\x58\x00\x00\xa5\x68\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xb0\xd1\x00\x00\x00\x00\x00\x00\x00\x00\xa4\x53\xa4\x65\xa4\xce\xa4\xcd\x00\x00\xa4\xcf\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa8\xfb\x00\x00\xa8\xfa\xa8\xfc\x00\x00\x00\x00\x00\x00\xab\x71\x00\x00\x00\x00\x00\x00\xad\xee\x00\x00\xe8\xfb\xc2\x4f\xa4\x66\xa5\x6a\xa5\x79\xa5\x74\x00\x00\xa5\x6f\xa5\x6e\xa5\x75\xa5\x73\xa5\x6c\xa5\x7a\xa5\x6d\xa5\x69\xa5\x78\xa5\x77\xa5\x76\xa5\x6b\x00\x00\xa5\x72\x00\x00\x00\x00\xa5\x71\x00\x00\x00\x00\xa5\x7b\xa5\x70\x00\x00\x00\x00\x00\x00", /* 5400 */ "\x00\x00\xa6\x53\x00\x00\xa6\x59\xa6\x55\x00\x00\xa6\x5b\xc9\xc5\xa6\x58\xa6\x4e\xa6\x51\xa6\x54\xa6\x50\xa6\x57\xa6\x5a\xa6\x4f\xa6\x52\xa6\x56\xa6\x5c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xca\x7e\xca\x7b\x00\x00\xa7\x67\xca\x7c\xa7\x5b\xa7\x5d\xa7\x75\xa7\x70\x00\x00\x00\x00\x00\x00\xca\xa5\xca\x7d\xa7\x5f\xa7\x61\xca\xa4\xa7\x68\xca\x78\xa7\x74\xa7\x76\xa7\x5c\xa7\x6d\x00\x00\xca\x76\xa7\x73\x00\x00\xa7\x64\x00\x00\xa7\x6e\xa7\x6f\xca\x77\xa7\x6c\xa7\x6a\x00\x00\xa7\x6b\xa7\x71\xca\xa1\xa7\x5e\x00\x00\xa7\x72\xca\xa3\xa7\x66\xa7\x63\x00\x00\xca\x7a\xa7\x62\xca\xa6\xa7\x65\x00\x00\xa7\x69\x00\x00\x00\x00\x00\x00\xa7\x60\xca\xa2\x00\x00\x00\x00\x00\x00\x00\x00\xca\x79\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xcb\xeb\xcb\xea\xa9\x4f\xcb\xed\xcb\xef\xcb\xe4\xcb\xe7\xcb\xee\xa9\x50\x00\x00\x00\x00\xcb\xe1\xcb\xe5\x00\x00\x00\x00\xcb\xe9\xce\x49\xa9\x4b\xce\x4d\xa8\xfd\xcb\xe6\xa8\xfe\xa9\x4c\xa9\x45\xa9\x41\x00\x00\xcb\xe2\xa9\x44\xa9\x49\xa9\x52\xcb\xe3\xcb\xdc", /* 5480 */ "\xa9\x43\xcb\xdd\xcb\xdf\x00\x00\xa9\x46\x00\x00\xa9\x48\xcb\xdb\xcb\xe0\x00\x00\x00\x00\xa9\x51\xa9\x4d\xcb\xe8\xa9\x53\x00\x00\xa9\x4a\xcb\xde\xa9\x47\x00\x00\x00\x00\xa9\x42\xa9\x40\x00\x00\xcb\xec\x00\x00\xa9\x4e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xce\x48\xcd\xfb\xce\x4b\x00\x00\x00\x00\xcd\xfd\xab\x78\xab\xa8\xab\x74\xab\xa7\xab\x7d\xab\xa4\xab\x72\xcd\xfc\xce\x43\xab\xa3\xce\x4f\xab\xa5\x00\x00\xab\x79\x00\x00\x00\x00\xce\x45\xce\x42\xab\x77\x00\x00\xcd\xfa\xab\xa6\xce\x4a\xab\x7c\xce\x4c\xab\xa9\xab\x73\xab\x7e\xab\x7b\xce\x40\xab\xa1\xce\x46\xce\x47\xab\x7a\xab\xa2\xab\x76\x00\x00\x00\x00\x00\x00\x00\x00\xab\x75\xcd\xfe\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xce\x44\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xce\x4e\x00\x00\xd1\x44\xad\xfb\xd0\xf1\x00\x00\xd0\xf6\xad\xf4\xae\x40\xd0\xf4\xad\xef\xad\xf9\xad\xfe\xd0\xfb\x00\x00\xad\xfa\xad\xfd\x00\x00\x00\x00\xd0\xfe\xad\xf5\xd0\xf5\x00\x00\x00\x00\x00\x00\xd1\x42\xd1\x43\x00\x00\xad\xf7\xd1\x41\xad\xf3\xae\x43\x00\x00\xd0\xf8", /* 5500 */ "\x00\x00\xad\xf1\x00\x00\xd1\x46\xd0\xf9\xd0\xfd\xad\xf6\xae\x42\xd0\xfa\xad\xfc\xd1\x40\xd1\x47\xd4\xa1\x00\x00\xd1\x45\xae\x44\xad\xf0\xd0\xfc\xd0\xf3\x00\x00\xad\xf8\x00\x00\x00\x00\xd0\xf2\x00\x00\x00\x00\xd0\xf7\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd0\xf0\xae\x41\x00\x00\x00\x00\xd4\x77\x00\x00\xb0\xe4\xd4\xa7\xb0\xe2\xb0\xdf\xd4\x7c\xb0\xdb\xd4\xa2\xb0\xe6\xd4\x76\xd4\x7b\xd4\x7a\xad\xf2\xb0\xe1\xd4\xa5\x00\x00\xd4\xa8\xd4\x73\x00\x00\xb3\xe8\x00\x00\xd4\xa9\xb0\xe7\x00\x00\xb0\xd9\xb0\xd6\xd4\x7e\xb0\xd3\x00\x00\xd4\xa6\x00\x00\xb0\xda\xd4\xaa\x00\x00\xd4\x74\xd4\xa4\xb0\xdd\xd4\x75\xd4\x78\xd4\x7d\x00\x00\x00\x00\xb0\xde\xb0\xdc\xb0\xe8\x00\x00\x00\x00\x00\x00\x00\x00\xb0\xe3\x00\x00\xb0\xd7\xb1\xd2\x00\x00\xb0\xd8\xd4\x79\xb0\xe5\xb0\xe0\xd4\xa3\xb0\xd5\x00\x00\x00\x00\x00\x00\xb0\xd4\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd4\x71\xd4\x72\xd8\x6a\x00\x00\x00\x00\x00\x00\xb3\xd7\xb3\xda\xd8\x75\xb3\xee\xd8\x78", /* 5580 */ "\xb3\xd8\xd8\x71\xb3\xde\xb3\xe4\xb5\xbd\x00\x00\x00\x00\xb3\xe2\xd8\x6e\xb3\xef\xb3\xdb\xb3\xe3\xd8\x76\xdc\xd7\xd8\x7b\xd8\x6f\x00\x00\xd8\x66\xd8\x73\xd8\x6d\xb3\xe1\xd8\x79\x00\x00\x00\x00\xb3\xdd\xb3\xf1\xb3\xea\x00\x00\xb3\xdf\xb3\xdc\x00\x00\xb3\xe7\x00\x00\xd8\x7a\xd8\x6c\xd8\x72\xd8\x74\xd8\x68\xd8\x77\xb3\xd9\xd8\x67\x00\x00\xb3\xe0\xb3\xf0\xb3\xec\xd8\x69\xb3\xe6\x00\x00\x00\x00\xb3\xed\xb3\xe9\xb3\xe5\x00\x00\xd8\x70\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xb3\xeb\x00\x00\x00\x00\x00\x00\xdc\xd5\xdc\xd1\x00\x00\xdc\xe0\xdc\xca\xdc\xd3\xb6\xe5\xb6\xe6\xb6\xde\xdc\xdc\xb6\xe8\xdc\xcf\xdc\xce\xdc\xcc\xdc\xde\xb6\xdc\xdc\xd8\xdc\xcd\xb6\xdf\xdc\xd6\xb6\xda\xdc\xd2\xdc\xd9\xdc\xdb\x00\x00\x00\x00\xdc\xdf\xb6\xe3\xdc\xcb\xb6\xdd\xdc\xd0\x00\x00\xb6\xd8\x00\x00\xb6\xe4\xdc\xda\xb6\xe0\xb6\xe1\xb6\xe7\xb6\xdb\xa2\x5f\xb6\xd9\xdc\xd4\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xb6\xe2\x00\x00\x00\x00\xdc\xdd\x00\x00\x00\x00\x00\x00\xb9\xcd\xb9\xc8\x00\x00\xe1\x55\xe1\x51\x00\x00\xe1\x4b\xb9\xc2\xb9\xbe\xe1\x54", /* 5600 */ "\xb9\xbf\xe1\x4e\xe1\x50\x00\x00\xe1\x53\x00\x00\xb9\xc4\x00\x00\xb9\xcb\xb9\xc5\x00\x00\x00\x00\xe1\x49\xb9\xc6\xb9\xc7\xe1\x4c\xb9\xcc\x00\x00\xe1\x4a\xe1\x4f\xb9\xc3\xe1\x48\xb9\xc9\xb9\xc1\x00\x00\x00\x00\x00\x00\xb9\xc0\xe1\x4d\xe1\x52\x00\x00\xb9\xca\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe1\x47\x00\x00\xbc\x4d\xe5\x47\x00\x00\xe5\x44\x00\x00\xbc\x47\xbc\x53\xbc\x54\x00\x00\xbc\x4a\xe5\x42\xbc\x4c\xe4\xf9\xbc\x52\x00\x00\xe5\x46\xbc\x49\xe5\x48\xbc\x48\x00\x00\xe5\x43\xe5\x45\xbc\x4b\xe5\x41\xe4\xfa\xe4\xf7\x00\x00\x00\x00\xd8\x6b\xe4\xfd\x00\x00\xe4\xf6\xe4\xfc\xe4\xfb\x00\x00\xe4\xf8\x00\x00\xbc\x4f\x00\x00\x00\x00\x00\x00\x00\x00\xbc\x4e\x00\x00\x00\x00\x00\x00\xbc\x50\xe4\xfe\xbe\xb2\xe5\x40\x00\x00\x00\x00\x00\x00\xe9\x45\x00\x00\xe8\xfd\x00\x00\xbe\xbe\xe9\x42\xbe\xb6\xbe\xba\xe9\x41\x00\x00\xbe\xb9\xbe\xb5\xbe\xb8\xbe\xb3\xbe\xbd\xe9\x43\xe8\xfe\xbe\xbc\xe8\xfc\xbe\xbb\xe9\x44\xe9\x40\xbc\x51\x00\x00\xbe\xbf\xe9\x46\xbe\xb7\xbe\xb4\x00\x00\x00\x00\x00\x00\x00\x00\xec\xc6\xec\xc8", /* 5680 */ "\xc0\x7b\xec\xc9\xec\xc7\xec\xc5\xec\xc4\xc0\x7d\xec\xc3\xc0\x7e\x00\x00\x00\x00\x00\x00\x00\x00\xec\xc1\xec\xc2\xc0\x7a\xc0\xa1\xc0\x7c\x00\x00\x00\x00\xec\xc0\x00\x00\xc2\x50\x00\x00\xef\xbc\xef\xba\xef\xbf\xef\xbd\x00\x00\xef\xbb\xef\xbe\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc3\x60\xf1\xf2\xf1\xf3\xc4\x56\x00\x00\xf1\xf4\xf1\xf0\xf1\xf5\xf1\xf1\xc2\x51\x00\x00\x00\x00\x00\x00\xf3\xfe\xf4\x41\xc4\x59\xf4\x40\xc4\x58\xc4\x57\x00\x00\x00\x00\x00\x00\x00\x00\xc4\x5a\xf5\xc5\xf5\xc6\x00\x00\xc4\xda\xc4\xd9\xc4\xdb\xf5\xc4\x00\x00\xf6\xd8\xf6\xd7\x00\x00\xc5\x6d\xc5\x6f\xc5\x6e\xf6\xd9\xc5\xc8\xf8\xa6\x00\x00\x00\x00\x00\x00\xc5\xf1\x00\x00\xf8\xa5\xf8\xee\x00\x00\x00\x00\xc9\x49\x00\x00\x00\x00\xa5\x7d\xa5\x7c\x00\x00\xa6\x5f\xa6\x5e\xc9\xc7\xa6\x5d\xc9\xc6\x00\x00\x00\x00\xa7\x79\xca\xa9\x00\x00\xca\xa8\x00\x00\x00\x00\xa7\x77\xa7\x7a\x00\x00\x00\x00\xca\xa7\x00\x00\xa7\x78\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xcb\xf0\x00\x00\xcb\xf1\xa9\x54\x00\x00\x00\x00\x00\x00\x00\x00\xab\xaa", /* 5700 */ "\x00\x00\xd1\x48\xd1\x49\xae\x45\xae\x46\x00\x00\x00\x00\xd4\xac\xb0\xe9\xb0\xeb\xd4\xab\xb0\xea\xd8\x7c\xb3\xf2\x00\x00\x00\x00\x00\x00\x00\x00\xb6\xe9\xb6\xea\xdc\xe1\x00\x00\xb9\xcf\x00\x00\xb9\xce\x00\x00\xe5\x49\xe9\x48\xe9\x47\x00\x00\xf9\x6b\xa4\x67\xc9\x59\x00\x00\xc9\x6e\xc9\x6f\x00\x00\x00\x00\x00\x00\x00\x00\xa6\x62\xa6\x66\xc9\xc9\x00\x00\xa6\x64\xa6\x63\xc9\xc8\xa6\x65\xa6\x61\x00\x00\x00\x00\xa6\x60\xc9\xca\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa7\xa6\x00\x00\x00\x00\xa7\xa3\x00\x00\xa7\x7d\xca\xaa\x00\x00\x00\x00\x00\x00\xca\xab\x00\x00\xa7\xa1\x00\x00\xca\xad\xa7\x7b\xca\xae\xca\xac\xa7\x7e\xa7\xa2\xa7\xa5\xa7\xa4\xa7\x7c\xca\xaf\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa9\x59\xcb\xfe\x00\x00\xa9\x5b\x00\x00\xa9\x5a\x00\x00\xcc\x40\xa9\x58\xa9\x57\xcb\xf5\x00\x00\xcb\xf4\x00\x00\xcb\xf2\xcb\xf7\xcb\xf6\xcb\xf3\xcb\xfc\xcb\xfd\xcb\xfa\xcb\xf8\xa9\x56\x00\x00\x00\x00\x00\x00\xcb\xfb\xa9\x5c\xcc\x41\x00\x00\x00\x00", /* 5780 */ "\xcb\xf9\x00\x00\xab\xab\xa9\x55\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xab\xac\xce\x54\x00\x00\x00\x00\xce\x5a\x00\x00\x00\x00\x00\x00\xab\xb2\xce\x58\xce\x5e\x00\x00\xce\x55\xce\x59\xce\x5b\xce\x5d\xce\x57\x00\x00\xce\x56\xce\x51\xce\x52\xab\xad\x00\x00\xab\xaf\xab\xae\xce\x53\xce\x5c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xab\xb1\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xce\x50\xd1\x53\x00\x00\xd1\x52\xd1\x57\xd1\x4e\x00\x00\xd1\x51\xd1\x50\x00\x00\xd1\x54\x00\x00\xd1\x58\xae\x47\xae\x4a\x00\x00\x00\x00\xd1\x4f\xd1\x55\x00\x00\x00\x00\x00\x00\xae\x49\xd1\x4a\x00\x00\xab\xb0\xd4\xba\xd1\x56\x00\x00\xd1\x4d\x00\x00\xae\x48\xd1\x4c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd4\xb1\x00\x00\x00\x00\xb0\xec\xb0\xf0\xd4\xc1\xd4\xaf\xd4\xbd\xb0\xf1\xd4\xbf\x00\x00\xd4\xc5\x00\x00\xd4\xc9\x00\x00\x00\x00\xd4\xc0\xd4\xb4\xd4\xbc\x00\x00\xd4\xca\xd4\xc8\xd4\xbe\xd4\xb9\xd4\xb2\xd8\xa6\xd4\xb0\xb0\xf5\xd4\xb7\xb0\xf6\xb0\xf2\xd4\xad\xd4\xc3\xd4\xb5\x00\x00\x00\x00", /* 5800 */ "\xd4\xb3\xd4\xc6\xb0\xf3\x00\x00\xd4\xcc\xb0\xed\xb0\xef\xd4\xbb\xd4\xb6\xae\x4b\xb0\xee\xd4\xb8\xd4\xc7\xd4\xcb\xd4\xc2\x00\x00\xd4\xc4\x00\x00\x00\x00\x00\x00\xd4\xae\x00\x00\x00\x00\x00\x00\x00\x00\xd8\xa1\x00\x00\xd8\xaa\xd8\xa9\xb3\xfa\xd8\xa2\x00\x00\xb3\xfb\xb3\xf9\x00\x00\xd8\xa4\xb3\xf6\xd8\xa8\x00\x00\xd8\xa3\xd8\xa5\xd8\x7d\xb3\xf4\x00\x00\xd8\xb2\xd8\xb1\xd8\xae\xb3\xf3\xb3\xf7\xb3\xf8\xd1\x4b\xd8\xab\xb3\xf5\xb0\xf4\xd8\xad\xd8\x7e\xd8\xb0\xd8\xaf\x00\x00\xd8\xb3\x00\x00\xdc\xef\x00\x00\xd8\xac\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd8\xa7\xdc\xe7\xb6\xf4\xb6\xf7\xb6\xf2\xdc\xe6\xdc\xea\xdc\xe5\x00\x00\xb6\xec\xb6\xf6\xdc\xe2\xb6\xf0\xdc\xe9\x00\x00\xb6\xee\xb6\xed\xdc\xec\xb6\xef\xdc\xee\x00\x00\xdc\xeb\xb6\xeb\x00\x00\x00\x00\x00\x00\xb6\xf5\xdc\xf0\xdc\xe4\xdc\xed\x00\x00\x00\x00\xdc\xe3\x00\x00\x00\x00\xb6\xf1\x00\x00\xb6\xf3\x00\x00\xdc\xe8\x00\x00\xdc\xf1\x00\x00\x00\x00\xe1\x5d\xb9\xd0\xe1\x63\x00\x00\x00\x00\xb9\xd5\xe1\x5f\xe1\x66\xe1\x57\xb9\xd7\xb9\xd1\xe1\x5c", /* 5880 */ "\xbc\x55\xe1\x5b\xe1\x64\xb9\xd2\x00\x00\xb9\xd6\xe1\x5a\xe1\x60\xe1\x65\xe1\x56\xb9\xd4\xe1\x5e\x00\x00\x00\x00\xe1\x62\xe1\x68\xe1\x58\xe1\x61\x00\x00\xb9\xd3\xe1\x67\x00\x00\x00\x00\x00\x00\xe1\x59\x00\x00\x00\x00\x00\x00\xbc\x59\xe5\x4b\xbc\x57\xbc\x56\xe5\x4d\xe5\x52\x00\x00\xe5\x4e\x00\x00\xe5\x51\xbc\x5c\x00\x00\xbe\xa5\xbc\x5b\x00\x00\xe5\x4a\xe5\x50\x00\x00\xbc\x5a\xe5\x4f\x00\x00\xe5\x4c\x00\x00\xbc\x58\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe9\x4d\xf9\xd9\xe9\x4f\xe9\x4a\xbe\xc1\xe9\x4c\x00\x00\xbe\xc0\xe9\x4e\x00\x00\x00\x00\xbe\xc3\xe9\x50\xbe\xc2\xe9\x49\xe9\x4b\x00\x00\x00\x00\x00\x00\x00\x00\xc0\xa5\xec\xcc\x00\x00\xc0\xa4\xec\xcd\xc0\xa3\xec\xcb\xc0\xa2\xec\xca\x00\x00\xc2\x53\xc2\x52\xf1\xf6\xf1\xf8\x00\x00\xf1\xf7\xc3\x61\xc3\x62\x00\x00\x00\x00\xc3\x63\xf4\x42\xc4\x5b\x00\x00\x00\x00\xf7\xd3\xf7\xd2\xc5\xf2\x00\x00\xa4\x68\xa4\xd0\x00\x00\x00\x00\xa7\xa7\x00\x00\x00\x00\x00\x00\x00\x00\xce\x5f\x00\x00\x00\x00\x00\x00\x00\x00\xb3\xfc\xb3\xfd\x00\x00\xdc\xf2\xb9\xd8\xe1\x69\xe5\x53", /* 5900 */ "\x00\x00\x00\x00\x00\x00\xc9\x5a\x00\x00\x00\x00\xca\xb0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xcc\x42\xce\x60\xd1\x59\xae\x4c\x00\x00\x00\x00\xf1\xf9\x00\x00\xc4\xdc\xa4\x69\xa5\x7e\xc9\x70\x00\x00\xa6\x67\xa6\x68\x00\x00\xa9\x5d\x00\x00\x00\x00\x00\x00\xb0\xf7\x00\x00\xb9\xda\x00\x00\xb9\xdb\xb9\xd9\x00\x00\xa4\x6a\x00\x00\xa4\xd1\xa4\xd3\xa4\xd2\xc9\x5b\xa4\xd4\xa5\xa1\xc9\x71\x00\x00\xa5\xa2\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa6\x69\xa6\x6a\x00\x00\x00\x00\x00\x00\xc9\xcb\x00\x00\xa7\xa8\x00\x00\xca\xb1\x00\x00\x00\x00\x00\x00\xa9\x61\xcc\x43\x00\x00\xa9\x5f\xa9\x60\xa9\x5e\xd1\x5a\x00\x00\x00\x00\x00\x00\xab\xb6\xab\xb5\xab\xb7\xab\xb4\x00\x00\xce\x61\xa9\x62\xab\xb3\x00\x00\xae\x4d\xae\x4e\x00\x00\xae\x4f\x00\x00\xd4\xcd\x00\x00\x00\x00\x00\x00\xb3\xfe\xd8\xb4\xb0\xf8\x00\x00\x00\x00\x00\x00\x00\x00\xb6\xf8\x00\x00\xb9\xdd\xb9\xdc\xe1\x6a\x00\x00\xbc\x5d\xbe\xc4\x00\x00\xef\xc0\xf6\xda\xf7\xd4\xa4\x6b\xa5\xa3\x00\x00\xa5\xa4\xc9\xd1\xa6\x6c\xa6\x6f\x00\x00\xc9\xcf\xc9\xcd\xa6\x6e\xc9\xd0\xc9\xd2", /* 5980 */ "\xc9\xcc\xa6\x71\xa6\x70\xa6\x6d\xa6\x6b\xc9\xce\x00\x00\x00\x00\x00\x00\x00\x00\xa7\xb3\x00\x00\x00\x00\xa7\xb0\xca\xb6\xca\xb9\xca\xb8\x00\x00\xa7\xaa\xa7\xb2\x00\x00\x00\x00\xa7\xaf\xca\xb5\xca\xb3\xa7\xae\x00\x00\x00\x00\x00\x00\xa7\xa9\xa7\xac\x00\x00\xca\xb4\xca\xbb\xca\xb7\xa7\xad\xa7\xb1\xa7\xb4\xca\xb2\xca\xba\xa7\xab\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa9\x67\xa9\x6f\x00\x00\xcc\x4f\xcc\x48\xa9\x70\xcc\x53\xcc\x44\xcc\x4b\x00\x00\x00\x00\xa9\x66\xcc\x45\xa9\x64\xcc\x4c\xcc\x50\xa9\x63\x00\x00\xcc\x51\xcc\x4a\x00\x00\xcc\x4d\x00\x00\xa9\x72\xa9\x69\xcc\x54\xcc\x52\x00\x00\xa9\x6e\xa9\x6c\xcc\x49\xa9\x6b\xcc\x47\xcc\x46\xa9\x6a\xa9\x68\xa9\x71\xa9\x6d\xa9\x65\x00\x00\xcc\x4e\x00\x00\xab\xb9\x00\x00\xab\xc0\xce\x6f\xab\xb8\xce\x67\xce\x63\x00\x00\xce\x73\xce\x62\x00\x00\xab\xbb\xce\x6c\xab\xbe\xab\xc1\x00\x00\xab\xbc\xce\x70\xab\xbf\x00\x00\xae\x56\xce\x76\xce\x64\x00\x00\x00\x00\xce\x66\xce\x6d\xce\x71\xce\x75\xce\x72\xce\x6b\xce\x6e\x00\x00\x00\x00\xce\x68\xab\xc3\xce\x6a\xce\x69\xce\x74\xab\xba", /* 5a00 */ "\xce\x65\xab\xc2\x00\x00\xab\xbd\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xae\x5c\xd1\x62\x00\x00\xae\x5b\x00\x00\x00\x00\xd1\x60\x00\x00\xae\x50\x00\x00\xae\x55\x00\x00\xd1\x5f\xd1\x5c\xd1\x61\xae\x51\xd1\x5b\x00\x00\xae\x54\xae\x52\x00\x00\xd1\x63\xae\x53\xae\x57\x00\x00\x00\x00\xae\x58\x00\x00\xae\x5a\x00\x00\x00\x00\x00\x00\xae\x59\x00\x00\x00\x00\x00\x00\xd1\x5d\xd1\x5e\x00\x00\x00\x00\x00\x00\x00\x00\xd1\x64\x00\x00\xd4\xd4\xb0\xf9\xd8\xc2\xd4\xd3\xd4\xe6\x00\x00\x00\x00\xb1\x40\x00\x00\xd4\xe4\x00\x00\xb0\xfe\xb0\xfa\xd4\xed\xd4\xdd\xd4\xe0\x00\x00\xb1\x43\xd4\xea\xd4\xe2\xb0\xfb\xb1\x44\x00\x00\xd4\xe7\xd4\xe5\x00\x00\x00\x00\xd4\xd6\xd4\xeb\xd4\xdf\xd4\xda\x00\x00\xd4\xd0\xd4\xec\xd4\xdc\xd4\xcf\x00\x00\xb1\x42\xd4\xe1\xd4\xee\xd4\xde\xd4\xd2\xd4\xd7\xd4\xce\x00\x00\xb1\x41\x00\x00\xd4\xdb\xd4\xd8\xb0\xfc\xd4\xd1\x00\x00\xd4\xe9\xb0\xfd\x00\x00\xd4\xd9\xd4\xd5\x00\x00\x00\x00\xd4\xe8\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xb4\x40\xd8\xbb\x00\x00\xd8\xb8\xd8\xc9\xd8\xbd\xd8\xca\x00\x00\xb4\x42", /* 5a80 */ "\x00\x00\x00\x00\x00\x00\xd8\xc6\xd8\xc3\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd8\xc4\xd8\xc7\xd8\xcb\x00\x00\xd4\xe3\xd8\xcd\xdd\x47\x00\x00\xb4\x43\xd8\xce\xd8\xb6\xd8\xc0\x00\x00\xd8\xc5\x00\x00\x00\x00\xb4\x41\xb4\x44\xd8\xcc\xd8\xcf\xd8\xba\xd8\xb7\x00\x00\x00\x00\xd8\xb9\x00\x00\x00\x00\xd8\xbe\xd8\xbc\xb4\x45\x00\x00\xd8\xc8\x00\x00\x00\x00\xd8\xbf\x00\x00\xd8\xc1\xd8\xb5\xdc\xfa\xdc\xf8\xb7\x42\xb7\x40\xdd\x43\xdc\xf9\xdd\x44\xdd\x40\xdc\xf7\xdd\x46\xdc\xf6\xdc\xfd\xb6\xfe\xb6\xfd\xb6\xfc\xdc\xfb\xdd\x41\xb6\xf9\xb7\x41\x00\x00\xdc\xf4\x00\x00\xdc\xfe\xdc\xf3\xdc\xfc\xb6\xfa\xdd\x42\xdc\xf5\xb6\xfb\xdd\x45\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe1\x6e\xb9\xe2\xb9\xe1\xb9\xe3\xe1\x7a\xe1\x70\xe1\x76\xe1\x6b\xe1\x79\xe1\x78\xe1\x7c\xe1\x75\xb9\xde\xe1\x74\xb9\xe4\x00\x00\xe1\x6d\xb9\xdf\x00\x00\xe1\x7b\xb9\xe0\xe1\x6f\xe1\x72\xe1\x77\xe1\x71\xe1\x6c\x00\x00\x00\x00\x00\x00\x00\x00\xe1\x73\xe5\x55\xbc\x61\xe5\x58\xe5\x57\xe5\x5a\xe5\x5c\xf9\xdc\xbc\x5f\x00\x00\xe5\x56\x00\x00\xe5\x54", /* 5b00 */ "\x00\x00\xe5\x5d\xe5\x5b\xe5\x59\x00\x00\xe5\x5f\x00\x00\xe5\x5e\xbc\x63\xbc\x5e\x00\x00\xbc\x60\xbc\x62\x00\x00\x00\x00\xe5\x60\xe9\x57\x00\x00\x00\x00\xe9\x56\xe9\x55\x00\x00\xe9\x58\xe9\x51\x00\x00\xe9\x52\xe9\x5a\xe9\x53\x00\x00\xbe\xc5\xe9\x5c\x00\x00\xe9\x5b\xe9\x54\x00\x00\xec\xd1\xc0\xa8\xec\xcf\xec\xd4\xec\xd3\xe9\x59\x00\x00\xc0\xa7\x00\x00\xec\xd2\xec\xce\xec\xd6\xec\xd5\xc0\xa6\x00\x00\xec\xd0\x00\x00\xbe\xc6\x00\x00\x00\x00\x00\x00\xc2\x54\x00\x00\x00\x00\x00\x00\xef\xc1\xf1\xfa\xf1\xfb\xf1\xfc\xc4\x5c\x00\x00\x00\x00\xc4\x5d\x00\x00\xf4\x43\x00\x00\xf5\xc8\xf5\xc7\x00\x00\x00\x00\xf6\xdb\xf6\xdc\xf7\xd5\xf8\xa7\x00\x00\xa4\x6c\xa4\x6d\x00\x00\xa4\x6e\xa4\xd5\xa5\xa5\xc9\xd3\xa6\x72\xa6\x73\x00\x00\xa7\xb7\xa7\xb8\xa7\xb6\xa7\xb5\x00\x00\xa9\x73\x00\x00\x00\x00\xcc\x55\xa9\x75\xa9\x74\xcc\x56\x00\x00\x00\x00\x00\x00\xab\xc4\x00\x00\xae\x5d\xd1\x65\x00\x00\xd4\xf0\x00\x00\xb1\x45\xb4\x47\xd4\xef\xb4\x46\x00\x00\xb9\xe5\x00\x00\xe1\x7d\xbe\xc7\x00\x00\xc0\xa9\xec\xd7\x00\x00\xc4\x5e\x00\x00\xc5\x70", /* 5b80 */ "\x00\x00\xc9\x72\x00\x00\xa5\xa6\xc9\x73\xa6\x76\x00\x00\xa6\x74\xa6\x75\xa6\x77\x00\x00\xa7\xba\xa7\xb9\x00\x00\xca\xbc\xa7\xbb\x00\x00\x00\x00\xca\xbd\xcc\x57\x00\x00\xcc\x58\x00\x00\xa9\x76\xa9\x78\xa9\x7a\xa9\x77\xa9\x7b\xa9\x79\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xab\xc8\xab\xc5\xab\xc7\xab\xc9\xab\xc6\xd1\x66\xce\x77\x00\x00\x00\x00\x00\x00\xd1\x68\xd1\x67\xae\x63\x00\x00\xae\x5f\x00\x00\x00\x00\xae\x60\xae\x62\xae\x64\xae\x61\x00\x00\xae\x66\xae\x65\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xb1\x4a\xd4\xf2\xd4\xf1\xb1\x49\x00\x00\xb1\x48\xb1\x47\xb1\x4b\xb1\x46\x00\x00\x00\x00\xd8\xd5\xd8\xd2\xb4\x49\xd8\xd1\xd8\xd6\x00\x00\xb4\x4b\xd8\xd4\xb4\x48\xb4\x4a\xd8\xd3\x00\x00\xdd\x48\x00\x00\xdd\x49\xdd\x4a\x00\x00\x00\x00\x00\x00\x00\x00\xb9\xe6\xb9\xee\xe1\x7e\xb9\xe8\xb9\xec\xe1\xa1\xb9\xed\xb9\xe9\xb9\xea\xb9\xe7\xb9\xeb\xbc\x66\xd8\xd0\xbc\x67\xbc\x65\x00\x00\xbc\x64\xe9\x5d\xbe\xc8\xec\xd8\xec\xd9\x00\x00\x00\x00\xc3\x64\xc4\x5f\x00\x00\xa4\x6f\x00\x00\xa6\x78\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 5c00 */ "\x00\x00\xab\xca\x00\x00\xd1\x69\xae\x67\x00\x00\x00\x00\xb1\x4e\xb1\x4d\xb1\x4c\xb4\x4c\xb4\x4d\xd8\xd7\xb9\xef\xbe\xc9\xa4\x70\xc9\x5c\xa4\xd6\xc9\x74\x00\x00\x00\x00\xc9\xd4\xa6\x79\x00\x00\x00\x00\x00\x00\xa9\x7c\x00\x00\x00\x00\x00\x00\x00\x00\xdd\x4b\x00\x00\x00\x00\xa4\x71\x00\x00\xa4\xd7\xc9\xd5\x00\x00\x00\x00\xca\xbe\x00\x00\xca\xbf\x00\x00\xa7\xbc\x00\x00\x00\x00\x00\x00\xd8\xd8\xb4\x4e\x00\x00\xdd\x4c\x00\x00\x00\x00\x00\x00\xc0\xaa\xa4\x72\xa4\xa8\xa4\xd8\xc9\x75\xa5\xa7\x00\x00\xa7\xc0\xa7\xbf\xa7\xbd\xa7\xbe\x00\x00\x00\x00\xcc\x59\xa9\x7e\xa9\xa1\xcc\x5a\xa9\x7d\x00\x00\x00\x00\xab\xce\xce\x78\xab\xcd\xab\xcb\xab\xcc\xae\x6a\xae\x68\x00\x00\x00\x00\xd1\x6b\xae\x69\xd1\x6a\x00\x00\xae\x5e\xd4\xf3\x00\x00\x00\x00\xb1\x50\xb1\x51\x00\x00\x00\x00\xb1\x4f\x00\x00\xb9\xf0\xe1\xa2\xbc\x68\xbc\x69\x00\x00\xe5\x61\xc0\xab\xef\xc2\xef\xc3\x00\x00\xc4\xdd\xf8\xa8\xc9\x4b\xa4\xd9\x00\x00\xa4\x73\x00\x00\xc9\x77\xc9\x76\x00\x00\x00\x00\x00\x00\x00\x00\xa6\x7a\xc9\xd7\xc9\xd8\xc9\xd6\x00\x00\xc9\xd9\x00\x00", /* 5c80 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xca\xc7\x00\x00\xca\xc2\xca\xc4\xca\xc6\xca\xc3\xa7\xc4\xca\xc0\x00\x00\xca\xc1\xa7\xc1\xa7\xc2\xca\xc5\xca\xc8\xa7\xc3\xca\xc9\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xcc\x68\x00\x00\xcc\x62\xcc\x5d\xa9\xa3\xcc\x65\xcc\x63\xcc\x5c\xcc\x69\xcc\x6c\xcc\x67\xcc\x60\xa9\xa5\xcc\x66\xa9\xa6\xcc\x61\xcc\x64\xcc\x5b\xcc\x5f\xcc\x6b\xa9\xa7\x00\x00\xa9\xa8\x00\x00\xcc\x5e\xcc\x6a\xa9\xa2\xa9\xa4\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xce\xab\xce\xa4\xce\xaa\xce\xa3\xce\xa5\xce\x7d\xce\x7b\x00\x00\xce\xac\xce\xa9\xce\x79\x00\x00\xab\xd0\xce\xa7\xce\xa8\x00\x00\xce\xa6\xce\x7c\xce\x7a\xab\xcf\xce\xa2\xce\x7e\x00\x00\x00\x00\xce\xa1\xce\xad\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xae\x6f\x00\x00\xae\x6e\x00\x00\xd1\x6c\xae\x6b\xd1\x6e\x00\x00\xae\x70\xd1\x6f\x00\x00\x00\x00\xae\x73\x00\x00\xae\x71\xd1\x70\xce\xae\xd1\x72\x00\x00\xae\x6d\x00\x00\xae\x6c\x00\x00\xd1\x6d", /* 5d00 */ "\xd1\x71\xae\x72\x00\x00\x00\x00\x00\x00\x00\x00\xb1\x53\xb1\x52\x00\x00\x00\x00\x00\x00\xd4\xf5\xd4\xf9\xd4\xfb\xb1\x54\xd4\xfe\x00\x00\xb1\x58\xd5\x41\x00\x00\xb1\x5a\x00\x00\xb1\x56\xb1\x5e\x00\x00\xb1\x5b\xd4\xf7\xb1\x55\x00\x00\xd4\xf6\xd4\xf4\xd5\x43\xd4\xf8\x00\x00\xb1\x57\xd5\x42\xb1\x5c\xd4\xfd\xd4\xfc\xb1\x5d\xd4\xfa\xb1\x59\x00\x00\x00\x00\x00\x00\x00\x00\xd5\x44\x00\x00\xd5\x40\xd8\xe7\xd8\xee\xd8\xe3\xb4\x51\xd8\xdf\xd8\xef\xd8\xd9\xd8\xec\xd8\xea\xd8\xe4\x00\x00\xd8\xed\xd8\xe6\x00\x00\xd8\xde\xd8\xf0\xd8\xdc\xd8\xe9\xd8\xda\x00\x00\xd8\xf1\x00\x00\xb4\x52\x00\x00\xd8\xeb\xdd\x4f\xd8\xdd\xb4\x4f\x00\x00\xd8\xe1\x00\x00\xb4\x50\xd8\xe0\xd8\xe5\x00\x00\x00\x00\xd8\xe2\x00\x00\x00\x00\x00\x00\xd8\xe8\x00\x00\x00\x00\x00\x00\x00\x00\xdd\x53\x00\x00\x00\x00\x00\x00\xdd\x56\xdd\x4e\x00\x00\xdd\x50\x00\x00\xdd\x55\xdd\x54\xb7\x43\x00\x00\xd8\xdb\xdd\x52\x00\x00\x00\x00\xb7\x44\x00\x00\xdd\x4d\xdd\x51\x00\x00\x00\x00\x00\x00\x00\x00\xe1\xa9\x00\x00\xe1\xb0\xe1\xa7\x00\x00\xe1\xae\xe1\xa5\xe1\xad\xe1\xb1", /* 5d80 */ "\xe1\xa4\xe1\xa8\xe1\xa3\x00\x00\xb9\xf1\x00\x00\xe1\xa6\xb9\xf2\xe1\xac\xe1\xab\xe1\xaa\x00\x00\x00\x00\xe1\xaf\x00\x00\x00\x00\x00\x00\x00\x00\xe5\x65\xe5\x67\xbc\x6b\xe5\x68\x00\x00\xe5\x63\x00\x00\xe5\x62\xe5\x6c\x00\x00\xe5\x6a\xbc\x6a\xe5\x6d\xe5\x64\xe5\x69\xe5\x6b\xe5\x66\x00\x00\x00\x00\x00\x00\x00\x00\xe9\x61\xe9\x66\xe9\x60\xe9\x65\x00\x00\xe9\x5e\xe9\x68\xe9\x64\xe9\x69\xe9\x63\xe9\x5f\xe9\x67\x00\x00\xe9\x6a\xe9\x62\x00\x00\xec\xda\xc0\xaf\x00\x00\xc0\xad\x00\x00\xc0\xac\xc0\xae\x00\x00\x00\x00\xef\xc4\x00\x00\xf1\x72\xf1\xfd\x00\x00\x00\x00\xf4\x44\xf4\x45\x00\x00\xc4\x60\x00\x00\xf5\xc9\x00\x00\xc4\xde\x00\x00\xf5\xca\x00\x00\xf6\xde\xc5\x72\x00\x00\xc5\x71\xf6\xdd\xc5\xc9\x00\x00\xf7\xd6\x00\x00\x00\x00\x00\x00\x00\x00\xa4\x74\xa6\x7b\xc9\xda\xca\xca\xa8\xb5\xb1\x5f\x00\x00\x00\x00\xa4\x75\xa5\xaa\xa5\xa9\xa5\xa8\x00\x00\x00\x00\xa7\xc5\x00\x00\x00\x00\xae\x74\x00\x00\xdd\x57\xa4\x76\xa4\x77\xa4\x78\xa4\xda\x00\x00\x00\x00\xab\xd1\x00\x00\xce\xaf\x00\x00\x00\x00\x00\x00\xb4\x53\xa4\x79\xc9\x5d", /* 5e00 */ "\x00\x00\x00\x00\xa5\xab\xa5\xac\xc9\x78\x00\x00\xa6\x7c\x00\x00\x00\x00\x00\x00\xca\xcb\x00\x00\xa7\xc6\x00\x00\xca\xcc\x00\x00\x00\x00\xa9\xae\x00\x00\x00\x00\xcc\x6e\xa9\xac\xa9\xab\xcc\x6d\xa9\xa9\xcc\x6f\xa9\xaa\xa9\xad\x00\x00\xab\xd2\x00\x00\xab\xd4\xce\xb3\xce\xb0\xce\xb1\xce\xb2\xce\xb4\xab\xd3\x00\x00\x00\x00\xd1\x74\xd1\x73\x00\x00\xae\x76\x00\x00\xae\x75\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xb1\x62\xd5\x46\x00\x00\xb1\x61\xb1\x63\xb1\x60\x00\x00\x00\x00\x00\x00\x00\x00\xb4\x55\xd5\x45\x00\x00\xb4\x56\xd8\xf3\x00\x00\xb4\x57\xd8\xf2\xb4\x54\x00\x00\x00\x00\x00\x00\x00\x00\xdd\x5a\xdd\x5c\xb7\x45\xdd\x5b\xdd\x59\xdd\x58\x00\x00\x00\x00\x00\x00\xe1\xb4\xb9\xf7\xb9\xf5\x00\x00\xb9\xf6\xe1\xb2\xe1\xb3\x00\x00\xb9\xf3\xe5\x71\xe5\x6f\x00\x00\xbc\x6d\xe5\x70\xbc\x6e\xbc\x6c\xb9\xf4\x00\x00\x00\x00\xe9\x6d\xe9\x6b\xe9\x6c\xe5\x6e\xec\xdc\xc0\xb0\xec\xdb\xef\xc5\xef\xc6\xe9\x6e\xf1\xfe\x00\x00\xa4\x7a\xa5\xad\xa6\x7e\xc9\xdb\xa6\x7d\x00\x00\xa9\xaf\xb7\x46\x00\x00\xa4\xdb\xa5\xae\xab\xd5\xb4\x58\x00\x00", /* 5e80 */ "\xc9\x79\x00\x00\xc9\x7a\x00\x00\xc9\xdc\x00\x00\x00\x00\xa7\xc8\xca\xd0\xca\xce\xa7\xc9\xca\xcd\xca\xcf\xca\xd1\x00\x00\xa7\xc7\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa9\xb3\xa9\xb4\xa9\xb1\x00\x00\x00\x00\xa9\xb0\xce\xb8\xa9\xb2\x00\x00\x00\x00\x00\x00\xab\xd6\x00\x00\xce\xb7\xce\xb9\xce\xb6\xce\xba\xab\xd7\xae\x79\xd1\x75\x00\x00\xd1\x77\xae\x77\xd1\x78\xae\x78\xd1\x76\x00\x00\xce\xb5\xd5\x47\xd5\x4a\xd5\x4b\xd5\x48\xb1\x67\xb1\x66\xb1\x64\xb1\x65\xd5\x49\x00\x00\x00\x00\x00\x00\x00\x00\xb1\x68\x00\x00\x00\x00\xb4\x5a\xb4\x5b\x00\x00\xb4\x5c\xdd\x5d\xdd\x5f\xdd\x61\xb7\x48\xb7\x47\xb4\x59\xdd\x60\xdd\x5e\x00\x00\xe1\xb8\x00\x00\x00\x00\xe1\xb6\xe1\xbc\xb9\xf8\xe1\xbd\xe1\xba\xb9\xf9\xe1\xb7\xe1\xb5\xe1\xbb\xbc\x70\xe5\x73\xe1\xb9\xbc\x72\xe5\x74\xbc\x71\xbc\x74\xe5\x75\xbc\x6f\xbc\x73\x00\x00\xe9\x73\xe9\x71\xe9\x70\xe9\x72\xe9\x6f\x00\x00\x00\x00\xc3\x66\x00\x00\xf4\x46\xf4\x47\x00\x00\xf5\xcb\xf6\xdf\xc6\x55\x00\x00\x00\x00\xa9\xb5\xa7\xca\x00\x00\x00\x00\xab\xd8\x00\x00\x00\x00\x00\x00\xa4\x7b\xa4\xdc", /* 5f00 */ "\x00\x00\xa5\xaf\xc9\xdd\x00\x00\xa7\xcb\xca\xd2\x00\x00\xce\xbb\xab\xd9\x00\x00\xb9\xfa\xa4\x7c\x00\x00\x00\x00\x00\x00\xa6\xa1\x00\x00\x00\x00\xb7\x49\xa4\x7d\xa4\xdd\xa4\xde\x00\x00\xa5\xb1\xa5\xb0\x00\x00\xc9\xde\xa6\xa2\x00\x00\xca\xd3\x00\x00\xa7\xcc\x00\x00\x00\x00\xcc\x71\xcc\x72\xcc\x73\x00\x00\xa9\xb6\xa9\xb7\xcc\x70\xa9\xb8\x00\x00\x00\x00\x00\x00\xab\xda\xce\xbc\x00\x00\xd1\x7a\xae\x7a\x00\x00\xd1\x79\x00\x00\xb1\x69\xd5\x4c\xb1\x6a\xd5\x4d\x00\x00\x00\x00\x00\x00\xb4\x5d\x00\x00\x00\x00\x00\x00\xdd\x62\x00\x00\x00\x00\xe1\xbf\xe1\xbe\x00\x00\xb9\xfb\x00\x00\xbc\x75\xe5\x76\xbe\xca\xe9\x74\xc0\xb1\x00\x00\xc5\x73\xf7\xd8\x00\x00\x00\x00\x00\x00\x00\x00\xcc\x74\x00\x00\xce\xbd\xb1\x6b\xd8\xf4\xb7\x4a\x00\x00\x00\x00\x00\x00\xc2\x55\x00\x00\x00\x00\x00\x00\x00\x00\xa7\xce\x00\x00\xa7\xcd\xab\xdb\x00\x00\xd1\x7b\x00\x00\xb1\x6d\xb3\x43\xb1\x6e\xb1\x6c\xb4\x5e\x00\x00\xe1\xc0\xb9\xfc\xbc\x76\x00\x00\xc9\x4c\xc9\xdf\x00\x00\xca\xd5\xa7\xcf\xca\xd4\xa7\xd0\x00\x00\x00\x00\xa9\xbc\xcc\x77\xcc\x76\xa9\xbb", /* 5f80 */ "\xa9\xb9\xa9\xba\xcc\x75\x00\x00\x00\x00\xab\xdd\xce\xbe\xab\xe0\xab\xdc\xab\xe2\xab\xde\xab\xdf\xab\xe1\x00\x00\x00\x00\x00\x00\xae\x7d\xae\x7c\xae\x7b\x00\x00\x00\x00\x00\x00\xd5\x4f\xb1\x6f\xb1\x72\xb1\x70\x00\x00\xd5\x4e\xb1\x75\x00\x00\xb1\x71\xd5\x50\xb1\x74\xb1\x73\x00\x00\x00\x00\x00\x00\xd8\xf6\xd8\xf5\x00\x00\xb4\x61\xb4\x5f\xb4\x60\xd8\xf7\xb7\x4b\xdd\x64\xb7\x4c\xdd\x63\x00\x00\x00\x00\xe5\x77\x00\x00\x00\x00\xbc\x78\xe1\xc1\xbc\x77\x00\x00\xb9\xfd\x00\x00\xec\xde\xe9\x75\xc0\xb2\xec\xdd\xf2\x40\xf4\x48\xf4\x49\x00\x00\xa4\xdf\x00\x00\xa5\xb2\x00\x00\x00\x00\x00\x00\xc9\x7b\x00\x00\x00\x00\xa7\xd2\xa7\xd4\x00\x00\xc9\xe2\xca\xd8\xca\xd7\xca\xd6\x00\x00\xc9\xe1\xc9\xe0\xa6\xa4\xa7\xd3\xa7\xd1\xa6\xa3\x00\x00\x00\x00\x00\x00\xa9\xbd\xcc\x78\x00\x00\xa9\xbe\xca\xdd\x00\x00\xca\xdf\xca\xde\xcc\x79\x00\x00\x00\x00\xca\xda\x00\x00\xa7\xd8\xa7\xd6\x00\x00\xca\xd9\xca\xdb\xca\xe1\x00\x00\xa7\xd5\x00\x00\xca\xdc\xca\xe5\xa9\xc0\x00\x00\xca\xe2\xa7\xd7\x00\x00\xca\xe0\xca\xe3\x00\x00\xa9\xbf\x00\x00\xa9\xc1", /* 6000 */ "\xca\xe4\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xcc\xaf\xcc\xa2\xcc\x7e\xcc\xae\xcc\xa9\xab\xe7\xa9\xc2\xcc\xaa\xcc\xad\xab\xe3\xcc\xac\xa9\xc3\xa9\xc8\xa9\xc6\xcc\xa3\x00\x00\xcc\x7c\xcc\xa5\xa9\xcd\xcc\xb0\xab\xe4\xcc\xa6\x00\x00\xab\xe5\xa9\xc9\xcc\xa8\x00\x00\xce\xcd\xab\xe6\xcc\x7b\xa9\xca\xab\xe8\xa9\xcb\xa9\xc7\xa9\xcc\xcc\xa7\xcc\x7a\xcc\xab\xa9\xc4\x00\x00\x00\x00\xcc\x7d\xcc\xa4\xcc\xa1\xa9\xc5\x00\x00\xce\xbf\x00\x00\xce\xc0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xce\xca\xd1\xa1\xce\xcb\xab\xee\xce\xce\xce\xc4\xab\xed\xce\xc6\x00\x00\xce\xc7\x00\x00\x00\x00\xce\xc9\xab\xe9\x00\x00\x00\x00\xae\xa3\x00\x00\xf9\xda\xce\xc5\xce\xc1\xae\xa4\x00\x00\x00\x00\xce\xcf\xae\x7e\xd1\x7d\xce\xc8\x00\x00\xd1\x7c\xce\xc3\xce\xcc\x00\x00\x00\x00\xab\xec\xae\xa1\xab\xf2\xae\xa2\xce\xd0\xd1\x7e\xab\xeb\xae\xa6\xab\xf1\xab\xf0\xab\xef\xae\xa5\xce\xd1\xae\xa7\xab\xea\x00\x00\xce\xc2\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xb1\x76", /* 6080 */ "\xd1\xa4\xd1\xa6\x00\x00\xd1\xa8\xae\xa8\xae\xae\xd5\x53\xd1\xac\xd1\xa3\xb1\x78\xd5\x51\x00\x00\xae\xad\xae\xab\xd1\xae\x00\x00\xd5\x52\x00\x00\xd1\xa5\x00\x00\xae\xac\xd1\xa9\xae\xaf\xd1\xab\x00\x00\x00\x00\xae\xaa\xd1\xaa\xd1\xad\xd1\xa7\x00\x00\xae\xa9\xb1\x79\x00\x00\xd1\xa2\xb1\x77\x00\x00\x00\x00\x00\x00\x00\x00\xb1\x7a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd5\x55\xd5\x5e\xb4\x64\x00\x00\xb1\x7c\xb1\xa3\xb4\x65\xd5\x60\xb1\xaa\xd8\xf9\xd5\x56\xb1\xa2\xb1\xa5\xb1\x7e\xd5\x54\xd5\x62\xd5\x65\xd9\x49\x00\x00\xd5\x63\xd8\xfd\xb1\xa1\xb1\xa8\xb1\xac\xd5\x5d\xd8\xf8\xd5\x61\xb1\x7b\xd8\xfa\xd5\x64\xd8\xfc\xd5\x59\x00\x00\xb4\x62\x00\x00\xd5\x57\xd5\x58\xb1\xa7\x00\x00\x00\x00\xb1\xa6\xd5\x5b\xb1\xab\xd5\x5f\xb1\xa4\xd5\x5c\x00\x00\xb1\xa9\xb4\x66\xb4\x63\xd8\xfb\x00\x00\xd5\x5a\x00\x00\xb1\x7d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xb4\x6b\xb4\x6f\xd9\x40\xb7\x51\xb4\x6d\xd9\x44\xb4\x71\xdd\x65\xd9\x46\xb7\x53\xb4\x69\xb4\x6c\xd9\x47\x00\x00\xd9\x48\xd9\x4e", /* 6100 */ "\xb4\x73\xb7\x54\x00\x00\xd9\x4a\xd9\x4f\xd9\x43\xb7\x5e\x00\x00\xb7\x55\xb4\x72\xd9\x41\xd9\x50\x00\x00\xb7\x5d\xb4\x70\xb7\x4e\xd9\x4d\x00\x00\xb4\x74\xd9\x45\xd8\xfe\xb4\x6a\xd9\x42\x00\x00\xd9\x4b\x00\x00\xb7\x4d\xb7\x52\xb4\x67\xd9\x4c\x00\x00\xb7\x50\x00\x00\x00\x00\x00\x00\xb4\x68\x00\x00\x00\x00\x00\x00\xb7\x5c\xe1\xc3\xdd\x70\x00\x00\xdd\x68\xe1\xc2\x00\x00\xdd\x6c\xdd\x6e\x00\x00\x00\x00\xdd\x6b\x00\x00\xb7\x5b\x00\x00\xdd\x6a\xb7\x5f\x00\x00\x00\x00\x00\x00\xe1\xd2\x00\x00\x00\x00\xb7\x5a\xba\x40\xdd\x71\xe1\xc4\x00\x00\x00\x00\xb7\x58\xdd\x69\xdd\x6d\xb9\xfe\xb7\x4f\xdd\x66\xdd\x67\xba\x41\xb7\x57\xb7\x59\xb7\x56\xdd\x6f\x00\x00\x00\x00\xe1\xc8\xe1\xc9\xe1\xce\xbc\x7d\xe1\xd5\x00\x00\xba\x47\x00\x00\xba\x46\xe1\xd0\x00\x00\xbc\x7c\xe1\xc5\xba\x45\x00\x00\xe1\xd4\xba\x43\xba\x44\x00\x00\xe1\xd1\xe5\xaa\xbc\x7a\xb4\x6e\x00\x00\xe1\xd3\xbc\xa3\xe1\xcb\x00\x00\xbc\x7b\x00\x00\xbc\xa2\xe1\xc6\xe1\xca\xe1\xc7\xe1\xcd\xba\x48\xbc\x79\xba\x42\x00\x00\xe5\x7a\xe1\xcf\x00\x00\xbc\xa1\x00\x00\xbc\xa4\x00\x00", /* 6180 */ "\xe1\xcc\x00\x00\xbc\x7e\xe5\x79\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe5\x7e\xbe\xce\xe5\x78\xe9\xa3\xe5\xa9\xbc\xa8\x00\x00\xbc\xa6\xbe\xcc\xe5\xa6\xe5\xa2\xbc\xac\x00\x00\xe9\x78\x00\x00\x00\x00\x00\x00\xbc\xaa\xe5\xa1\x00\x00\xe9\x76\x00\x00\xe5\xa5\x00\x00\xe5\xa8\xe5\x7d\x00\x00\xbc\xab\x00\x00\x00\x00\xbc\xa5\xe9\x77\xbe\xcd\xe5\xa7\xbc\xa7\xbc\xa9\xe5\xa4\xbc\xad\xe5\xa3\xe5\x7c\xe5\x7b\xbe\xcb\xe5\xab\xe9\x7a\xec\xe0\xbe\xd0\x00\x00\xe9\xa2\x00\x00\xe9\x7e\x00\x00\xec\xe1\x00\x00\xbe\xd1\xe9\xa1\x00\x00\xe9\x7c\xc0\xb4\xec\xdf\x00\x00\xe9\x79\xe9\x7b\xc0\xb5\xbe\xd3\xc0\xb3\xbe\xd2\xc0\xb7\xe9\x7d\xbe\xcf\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xef\xcf\x00\x00\xef\xc7\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xec\xe7\xef\xc8\xec\xe3\x00\x00\x00\x00\xc2\x56\xec\xe5\xec\xe4\xc0\xb6\xec\xe2\xec\xe6\xef\xd0\xef\xcc\xef\xce\x00\x00\xef\xc9\xef\xca\x00\x00\xef\xcd\xef\xcb\xc3\x67\x00\x00\x00\x00\xc3\x6a\xc3\x69\xc3\x68\xc4\x61\xf4\x4a\xc4\x62\xf2\x41\xc4\xdf\xf5\xcc\xc4\xe0\xc5\x74", /* 6200 */ "\xc5\xca\xf7\xd9\x00\x00\xf7\xda\xf7\xdb\x00\x00\x00\x00\xf9\xba\xa4\xe0\xc9\x7c\xa5\xb3\x00\x00\xa6\xa6\xa6\xa7\xa6\xa5\x00\x00\xa6\xa8\xa7\xda\xa7\xd9\x00\x00\xcc\xb1\xa9\xcf\xa9\xce\x00\x00\x00\x00\xd1\xaf\xb1\xad\xb1\xae\x00\x00\x00\x00\x00\x00\xb4\x75\xdd\x72\xb7\x60\xb7\x61\xdd\x74\xdd\x76\xdd\x75\x00\x00\xe1\xd7\x00\x00\xe1\xd6\xba\x49\xe1\xd8\x00\x00\xe5\xac\xbc\xae\x00\x00\xbe\xd4\x00\x00\xc0\xb8\xc2\x57\xc0\xb9\x00\x00\xa4\xe1\x00\x00\x00\x00\x00\x00\xca\xe6\x00\x00\x00\x00\xcc\xb2\xa9\xd1\xa9\xd0\xa9\xd2\xab\xf3\xce\xd2\xce\xd3\x00\x00\x00\x00\xd1\xb0\xae\xb0\xb1\xaf\xb4\x76\xd9\x51\xa4\xe2\x00\x00\xa4\x7e\xa4\xe3\x00\x00\xc9\x7d\xa5\xb7\xa5\xb6\xa5\xb4\xa5\xb5\x00\x00\x00\x00\x00\x00\xa6\xab\xc9\xe9\xc9\xeb\xa6\xaa\xc9\xe3\x00\x00\xc9\xe4\x00\x00\xc9\xea\xc9\xe6\xc9\xe8\xa6\xa9\xc9\xe5\xc9\xec\xc9\xe7\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa7\xe1\xa7\xea\xa7\xe8\xca\xf0\xca\xed\xca\xf5\xa7\xe6\xca\xf6\x00\x00\xa7\xdf\xca\xf3\x00\x00\xa7\xe5\xca\xef\xca\xee\xa7\xe3\xca\xf4\xa7\xe4\xa9\xd3", /* 6280 */ "\xa7\xde\xca\xf1\x00\x00\xca\xe7\xa7\xdb\x00\x00\xa7\xee\xca\xec\xca\xf2\xa7\xe0\xa7\xe2\x00\x00\xca\xe8\x00\x00\xca\xe9\xca\xea\x00\x00\xa7\xed\xa7\xe7\xa7\xec\xca\xeb\xa7\xeb\xa7\xdd\xa7\xdc\xa7\xe9\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa9\xe1\xcc\xbe\xcc\xb7\xa9\xdc\xa9\xef\xcc\xb3\xcc\xba\xcc\xbc\xcc\xbf\xa9\xea\x00\x00\xcc\xbb\xcc\xb4\xa9\xe8\xcc\xb8\x00\x00\xcc\xc0\xa9\xd9\x00\x00\xcc\xbd\xa9\xe3\xa9\xe2\xcc\xb6\xa9\xd7\x00\x00\x00\x00\xa9\xd8\x00\x00\xa9\xd6\x00\x00\xa9\xee\xa9\xe6\xa9\xe0\xa9\xd4\xcc\xb9\xa9\xdf\xa9\xd5\xa9\xe7\xa9\xf0\xce\xd4\xa9\xe4\xcc\xb5\xa9\xda\xa9\xdd\xa9\xde\x00\x00\xa9\xec\xa9\xed\xa9\xeb\xa9\xe5\xa9\xe9\xa9\xdb\xab\xf4\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xce\xda\xac\x41\xab\xf8\xab\xfa\xac\x40\xce\xe6\xab\xfd\xd1\xb1\xae\xb1\xac\x43\xce\xd7\xce\xdf\xab\xfe\xce\xde\xce\xdb\xce\xe3\xce\xe5\xab\xf7\xab\xfb\xac\x42\xae\xb3", /* 6300 */ "\xce\xe0\xab\xf9\xac\x45\xce\xd9\x00\x00\x00\x00\x00\x00\xab\xfc\xae\xb2\xab\xf6\x00\x00\xce\xd6\xce\xdd\xce\xd5\xce\xd8\xce\xdc\xd1\xb2\xac\x44\x00\x00\xce\xe1\xce\xe2\xce\xe4\xab\xf5\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xae\xc1\xd1\xbe\xae\xbf\xae\xc0\xd1\xb4\xd1\xc4\x00\x00\xae\xb6\x00\x00\x00\x00\xd5\x66\xd1\xc6\xd1\xc0\x00\x00\xd1\xb7\x00\x00\xd1\xc9\xd1\xba\xae\xbc\xd5\x7d\xd1\xbd\xae\xbe\xae\xb5\x00\x00\xd1\xcb\xd1\xbf\xae\xb8\xd1\xb8\xd1\xb5\xd1\xb6\xae\xb9\xd1\xc5\xd1\xcc\xae\xbb\xd1\xbc\xd1\xbb\xae\xc3\xae\xc2\xae\xb4\xae\xba\xae\xbd\xd1\xc8\x00\x00\x00\x00\xd1\xc2\xae\xb7\xd1\xb3\xd1\xca\xd1\xc1\xd1\xc3\xd1\xc7\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd5\x67\x00\x00\xb1\xb7\xb1\xcb\xb1\xca\x00\x00\xb1\xbf\x00\x00\xd5\x79\xd5\x75\xd5\x72\xd5\xa6\xb1\xba\xb1\xb2\x00\x00\x00\x00\xd5\x77\xb4\xa8\xb1\xb6\xd5\xa1\x00\x00\xb1\xcc\xb1\xc9\xd5\x7b\xd5\x6a\x00\x00\x00\x00", /* 6380 */ "\xb1\xc8\xd5\xa3\xd5\x69\xb1\xbd\xb1\xc1\xd5\xa2\x00\x00\xd5\x73\xb1\xc2\xb1\xbc\xd5\x68\x00\x00\xb4\x78\xd5\xa5\xd5\x71\xb1\xc7\xd5\x74\xd5\xa4\xb1\xc6\x00\x00\xd9\x52\x00\x00\xb1\xb3\xd5\x6f\xb1\xb8\xb1\xc3\x00\x00\xb1\xbe\xd5\x78\xd5\x6e\xd5\x6c\xd5\x7e\xb1\xb0\xb1\xc4\xb1\xb4\xb4\x77\xd5\x7c\xb1\xb5\x00\x00\xb1\xb1\xb1\xc0\xb1\xbb\xb1\xb9\xd5\x70\xb1\xc5\xd5\x6d\xd5\x7a\xd5\x76\xd9\x54\xd9\x53\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd5\x6b\xd9\x64\x00\x00\xb4\x7a\x00\x00\xd9\x6a\xd9\x59\xd9\x67\xdd\x77\xb4\x7d\xd9\x6b\xd9\x6e\xb4\x7c\xd9\x5c\xd9\x6d\xd9\x6c\xb4\x7e\xd9\x55\xb4\x79\xb4\xa3\x00\x00\xb4\xa1\xd9\x69\x00\x00\xd9\x5f\xb4\xa5\xd9\x70\xd9\x68\xd9\x71\xb4\xad\xb4\xab\xd9\x66\xd9\x65\x00\x00\xd9\x63\xd9\x5d\xb4\xa4\x00\x00\xb4\xa2\xd1\xb9\xd9\x56\x00\x00\xdd\xb7\xd9\x57\xb4\x7b\xb4\xaa\xdd\x79\x00\x00\xb4\xa6\xb4\xa7\xd9\x58\xd9\x6f\xdd\x78\xd9\x60\xd9\x5b\xb4\xa9\xd9\x61\xd9\x5e\x00\x00\x00\x00\xb4\xae\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 6400 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xb7\x70\x00\x00\x00\x00\xdd\x7c\xdd\xb1\xdd\xb6\xdd\xaa\xb7\x6c\xdd\xbb\xb7\x69\xdd\x7a\x00\x00\xdd\x7b\xb7\x62\xb7\x6b\xdd\xa4\xb7\x6e\xb7\x6f\xdd\xa5\x00\x00\xdd\xb2\xdd\xb8\xb7\x6a\x00\x00\xb7\x64\xdd\xa3\xdd\x7d\xdd\xba\xdd\xa8\xdd\xa9\xdd\x7e\xdd\xb4\xdd\xab\xdd\xb5\xdd\xad\x00\x00\xb7\x65\xe1\xd9\xb7\x68\xb7\x66\xdd\xb9\xdd\xb0\xdd\xac\x00\x00\x00\x00\xdd\xa1\xba\x53\xdd\xaf\xb7\x6d\xdd\xa7\x00\x00\xdd\xa6\x00\x00\x00\x00\x00\x00\xb7\x67\xb7\x63\xe1\xee\xdd\xb3\xdd\xae\x00\x00\xdd\xa2\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe1\xe9\x00\x00\xe1\xda\xe1\xe5\x00\x00\xe1\xec\xba\x51\xb4\xac\xe1\xea\xba\x4c\x00\x00\x00\x00\x00\x00\xba\x4b\xe1\xf1\x00\x00\xe1\xdb\xe1\xe8\xe1\xdc\xe1\xe7\xba\x4f\xe1\xeb\xd9\x62\x00\x00\x00\x00\x00\x00\xe1\xf2\xe1\xe3\xba\x52\xe5\xba\xbc\xaf\x00\x00\xe1\xf0\xe1\xef\xba\x54\xe5\xad\xbc\xb0\xe5\xae\x00\x00\xe1\xdf\xe1\xe0\xe1\xdd\xe1\xe2\xe1\xde\xe1\xf3\xba\x4e\xbc\xb1\xba\x50\xba\x55\x00\x00\xe1\xe1\x00\x00\xe1\xed", /* 6480 */ "\x00\x00\x00\x00\xe1\xe6\x00\x00\x00\x00\xe5\xb1\x00\x00\xba\x4a\xbc\xb4\xe9\xaa\xe5\xb6\xe5\xb5\xe5\xb7\x00\x00\x00\x00\xe5\xb4\xbc\xb5\x00\x00\xbc\xbb\xbc\xb8\x00\x00\xbc\xb9\xe5\xaf\xe5\xb2\xe5\xbc\xbc\xc1\xbc\xbf\x00\x00\xe5\xb3\xd9\x5a\xbc\xb2\xe5\xb9\xe5\xb0\x00\x00\xbc\xc2\xe5\xb8\xba\x4d\xbc\xb7\xe1\xe4\x00\x00\x00\x00\xbc\xba\x00\x00\xbc\xbe\xbc\xc0\xbc\xbd\xbc\xbc\x00\x00\xbc\xb6\xe5\xbb\xbc\xb3\xbc\xc3\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xbe\xd8\xbe\xd9\xe9\xa9\xbe\xe2\xbe\xdf\x00\x00\xbe\xd6\xbe\xdd\xe9\xab\xbe\xdb\xbe\xd5\x00\x00\xbe\xdc\x00\x00\xe9\xa8\xc0\xbb\xbe\xd7\x00\x00\xbe\xde\xc0\xba\xe9\xa7\xe9\xa6\x00\x00\xbe\xe0\x00\x00\xbe\xe1\x00\x00\xe9\xa5\xe9\xa4\xc0\xbc\xe9\xae\xbe\xda\xe9\xac\x00\x00\x00\x00\x00\x00\x00\x00\xc0\xbd\x00\x00\xc0\xc2\xec\xea\xec\xec\x00\x00\xc0\xbf\x00\x00\xec\xed\xec\xe9\x00\x00\xec\xeb\xc0\xc0\xc0\xc3\x00\x00\xec\xe8\xc0\xbe\xc0\xc1\xc2\x59\xe9\xad\xc2\x58\x00\x00\x00\x00\xc2\x5e\xef\xd4\x00\x00\xc2\x5c\xc2\x5d\xef\xd7\xef\xd3\xc2\x5a\xef\xd1", /* 6500 */ "\xc3\x6b\xef\xd5\x00\x00\xef\xd6\xef\xd2\x00\x00\xc2\x5b\xf2\x42\x00\x00\xf2\x45\x00\x00\x00\x00\xf2\x46\xf2\x44\xf2\x47\xc3\x6c\xf2\x43\x00\x00\x00\x00\xf4\x4e\xc4\x64\xf4\x4d\xf4\x4c\xf4\x4b\xc4\x63\xc4\x65\x00\x00\xf5\xcd\xc4\xe2\xc4\xe1\x00\x00\x00\x00\xf6\xe1\xf6\xe0\xf6\xe3\xc5\xcb\xc5\x75\xf7\xdd\xf6\xe2\x00\x00\x00\x00\xf7\xdc\xc5\xcd\xc5\xcc\xc5\xf3\xf8\xa9\xf8\xef\xa4\xe4\x00\x00\x00\x00\xd9\x72\xe9\xaf\x00\x00\x00\x00\xa6\xac\xca\xf7\xa7\xf1\xa7\xef\x00\x00\xa7\xf0\x00\x00\xcc\xc1\xa9\xf1\xac\x46\x00\x00\xce\xe7\x00\x00\xce\xe8\x00\x00\xac\x47\xd1\xce\x00\x00\xae\xc4\xae\xc5\xd1\xcd\x00\x00\x00\x00\x00\x00\x00\x00\xb1\xd3\x00\x00\xb1\xcf\x00\x00\xd5\xa7\xb1\xd6\xb1\xd5\xb1\xce\xb1\xd1\xb1\xd4\xb1\xd0\x00\x00\x00\x00\xd9\x76\xb1\xcd\xb4\xaf\x00\x00\x00\x00\x00\x00\xb4\xb1\xb4\xb2\xd9\x75\xd9\x78\xb4\xb0\xd9\x73\xd9\x77\x00\x00\xd9\x74\x00\x00\xb7\x71\x00\x00\x00\x00\xdd\xbc\x00\x00\x00\x00\xba\x56\xe1\xf4\xbe\xe3\xbc\xc4\xe5\xbd\xbc\xc5\xbc\xc6\xe5\xbf\xe5\xbe\xe5\xc0\xe9\xb1\x00\x00\x00\x00\xe9\xb0", /* 6580 */ "\xec\xef\xec\xee\xc0\xc4\xc0\xc5\xf2\x48\x00\x00\x00\x00\xa4\xe5\x00\x00\x00\x00\x00\x00\x00\x00\xd9\x79\x00\x00\x00\x00\x00\x00\xb4\xb4\xb4\xb3\xdd\xbd\x00\x00\xef\xd8\xc4\xe3\xf7\xde\xa4\xe6\x00\x00\xae\xc6\x00\x00\xb1\xd8\xb1\xd7\xd9\x7a\xd9\x7b\xb7\x72\xe1\xf5\xba\x57\xe9\xb2\x00\x00\xa4\xe7\xa5\xb8\x00\x00\xa9\xf2\xcc\xc2\x00\x00\xce\xe9\xac\x48\xb1\xd9\x00\x00\xd9\x7c\xb4\xb5\xb7\x73\x00\x00\xe5\xc1\xe5\xc2\x00\x00\x00\x00\xec\xf0\xc2\x5f\xf8\xf0\xa4\xe8\x00\x00\xcc\xc3\xa9\xf3\xac\x49\x00\x00\xce\xea\x00\x00\xae\xc7\xd1\xd2\xd1\xd0\xd1\xd1\xae\xc8\xd1\xcf\x00\x00\x00\x00\x00\x00\x00\x00\xb1\xdb\xb1\xdc\xd5\xa8\xb1\xdd\xb1\xda\xd9\x7d\x00\x00\xd9\x7e\xdd\xbe\x00\x00\x00\x00\xba\x59\xba\x58\x00\x00\x00\x00\xec\xf1\xef\xd9\x00\x00\xf2\x4a\xf2\x49\xf4\x4f\x00\x00\xc9\x5e\xac\x4a\x00\x00\x00\x00\xa4\xe9\xa5\xb9\x00\x00\xa6\xae\xa6\xad\x00\x00\x00\x00\xa6\xaf\xa6\xb0\xc9\xee\xc9\xed\xca\xf8\xa7\xf2\xca\xfb\xca\xfa\xca\xf9\xca\xfc\x00\x00\x00\x00\x00\x00\x00\x00\xa9\xf4\xcc\xc9\xcc\xc5\xcc\xce\x00\x00\x00\x00", /* 6600 */ "\xa9\xfb\x00\x00\xa9\xf9\xcc\xca\xcc\xc6\xcc\xcd\xa9\xf8\xaa\x40\xcc\xc8\xcc\xc4\xa9\xfe\xcc\xcb\xa9\xf7\xcc\xcc\xa9\xfa\xa9\xfc\xcc\xd0\xcc\xcf\xcc\xc7\xa9\xf6\xa9\xf5\xa9\xfd\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xce\xef\xce\xf5\x00\x00\xac\x50\xac\x4d\xce\xec\xce\xf1\x00\x00\xac\x53\xac\x4b\xce\xf0\xac\x4e\xac\x51\x00\x00\x00\x00\xce\xf3\x00\x00\xac\x4c\xce\xf8\xac\x4f\x00\x00\xac\x52\xce\xed\xce\xf2\xce\xf6\xce\xee\xce\xeb\x00\x00\x00\x00\xce\xf7\xce\xf4\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xae\xd0\xae\xc9\xae\xcc\x00\x00\xae\xcf\x00\x00\xd1\xd5\x00\x00\xae\xca\xd1\xd3\x00\x00\xae\xce\x00\x00\x00\x00\xae\xcb\x00\x00\xd1\xd6\xae\xcd\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd5\xac\xb1\xdf\xd5\xab\xd5\xad\xb1\xde\xb1\xe3\xd1\xd4\x00\x00\xd5\xaa\xd5\xae\x00\x00\xb1\xe0\xd5\xa9\xb1\xe2\x00\x00\xb1\xe1\x00\x00\xd9\xa7\x00\x00\xd9\xa2\x00\x00\xb4\xb6\xb4\xba\xb4\xb7\xd9\xa5\xd9\xa8\x00\x00\xb4\xb8\x00\x00\xb4\xb9\xb4\xbe\xdd\xc7\xd9\xa6\xb4\xbc\xd9\xa3\xd9\xa1\x00\x00\xb4\xbd\x00\x00", /* 6680 */ "\xd9\xa4\x00\x00\x00\x00\x00\x00\xb7\x79\x00\x00\xdd\xbf\xb7\x76\xb7\x77\xb7\x75\xdd\xc4\xdd\xc3\xdd\xc0\xb7\x7b\x00\x00\x00\x00\xdd\xc2\xb4\xbb\x00\x00\x00\x00\xdd\xc6\xdd\xc1\xb7\x78\xb7\x74\xb7\x7a\xdd\xc5\x00\x00\x00\x00\x00\x00\xba\x5c\x00\x00\xe1\xf8\xe1\xf7\xe1\xf6\xba\x5a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xba\x5b\xe5\xc5\xe5\xc8\xbc\xc8\x00\x00\x00\x00\xbc\xc7\xe5\xc9\xe5\xc4\xbc\xca\xe5\xc6\x00\x00\xbc\xc9\xe5\xc3\x00\x00\xe5\xc7\xbe\xe9\xbe\xe6\xe9\xbb\xe9\xba\x00\x00\xe9\xb9\xe9\xb4\x00\x00\xe9\xb5\x00\x00\x00\x00\x00\x00\xbe\xe7\x00\x00\xbe\xe4\xbe\xe8\xe9\xb3\xbe\xe5\xe9\xb6\xe9\xb7\xe9\xbc\x00\x00\x00\x00\xe9\xb8\x00\x00\x00\x00\xec\xf2\x00\x00\x00\x00\x00\x00\xc0\xc7\x00\x00\xef\xdc\xc0\xc6\xef\xda\xef\xdb\xc2\x60\xc3\x6e\xf2\x4b\x00\x00\xc3\x6d\x00\x00\x00\x00\xf4\x51\xf4\x52\x00\x00\xc4\x66\x00\x00\xf4\x50\xc4\xe4\x00\x00\xf7\xdf\xc5\xce\xf8\xaa\xf8\xab\x00\x00\xa4\xea\x00\x00\xa6\xb1\xa6\xb2\xa7\xf3\x00\x00\xcc\xd1\xac\x54\xae\xd1\xb1\xe4\x00\x00\x00\x00\xb0\xd2\x00\x00\xb4\xbf\xb4\xc0", /* 6700 */ "\xb3\xcc\xd9\xa9\x00\x00\xb7\x7c\xe1\xfa\xe1\xf9\x00\x00\x00\x00\xa4\xeb\xa6\xb3\xcc\xd2\xaa\x42\x00\x00\xaa\x41\x00\x00\xce\xf9\xce\xfa\x00\x00\xd1\xd7\xd1\xd8\xae\xd2\xae\xd3\x00\x00\xae\xd4\xd5\xaf\x00\x00\x00\x00\xb1\xe6\x00\x00\xb4\xc2\x00\x00\xb4\xc1\xdd\xc8\xdf\x7a\xe1\xfb\xe9\xbd\x00\x00\x00\x00\xc2\x61\xc4\x67\xa4\xec\x00\x00\xa5\xbc\xa5\xbd\xa5\xbb\xa5\xbe\xa5\xba\x00\x00\x00\x00\xa6\xb6\x00\x00\xc9\xf6\xa6\xb5\xa6\xb7\x00\x00\x00\x00\xc9\xf1\xc9\xf0\xc9\xf3\xc9\xf2\xc9\xf5\xa6\xb4\xc9\xef\xc9\xf4\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xca\xfd\xa7\xfd\xca\xfe\xcb\x43\xa7\xfc\x00\x00\xcb\x47\xcb\x42\xcb\x45\xa7\xf5\xa7\xf6\xa7\xf7\xa7\xf8\x00\x00\xa8\x40\x00\x00\xcb\x41\xa7\xfa\xa8\x41\x00\x00\xcb\x40\xcb\x46\x00\x00\xa7\xf9\xcb\x44\xa7\xfb\xa7\xf4\xa7\xfe\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xaa\x57\x00\x00\xcc\xd4\xaa\x43\x00\x00\xaa\x4d\xaa\x4e\xaa\x46\xaa\x58\xaa\x48\xcc\xdc\xaa\x53\xcc\xd7\xaa\x49\xcc\xe6\xcc\xe7\xcc\xdf\xcc\xd8\xaa\x56\xcc\xe4\xaa\x51\xaa\x4f", /* 6780 */ "\x00\x00\xcc\xe5\x00\x00\xcc\xe3\xcc\xdb\xcc\xd3\xcc\xda\xaa\x4a\x00\x00\xaa\x50\x00\x00\xaa\x44\xcc\xde\xcc\xdd\xcc\xd5\x00\x00\xaa\x52\xcc\xe1\xcc\xd6\xaa\x55\xcc\xe8\xaa\x45\x00\x00\xaa\x4c\xcc\xd9\xcc\xe2\xaa\x54\x00\x00\xaa\x47\xaa\x4b\x00\x00\xcc\xe0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xcf\x5b\xac\x5c\xac\x69\x00\x00\xcf\x56\xcf\x4c\xac\x62\xcf\x4a\xac\x5b\xcf\x45\xac\x65\xcf\x52\xce\xfe\xcf\x41\x00\x00\x00\x00\x00\x00\x00\x00\xcf\x44\xce\xfb\xcf\x51\xcf\x61\xac\x60\xcf\x46\xcf\x58\x00\x00\xce\xfd\xcf\x5f\xcf\x60\xcf\x63\xcf\x5a\xcf\x4b\xcf\x53\xac\x66\xac\x59\xac\x61\xac\x6d\xac\x56\xac\x58\x00\x00\x00\x00\x00\x00\xcf\x43\xac\x6a\xac\x63\xcf\x5d\xcf\x40\xac\x6c\xac\x67\xcf\x49\x00\x00\x00\x00\xac\x6b\xcf\x50\xcf\x48\xac\x64\xcf\x5c\xcf\x54\x00\x00\xac\x5e\xcf\x62\xcf\x47\xac\x5a\xcf\x59\xcf\x4f\xac\x5f\xcf\x55\xac\x57\xce\xfc\xac\x68\xae\xe3\xac\x5d\xcf\x4e\xcf\x4d\xcf\x42\x00\x00\xcf\x5e\x00\x00\xcf\x57\x00\x00\x00\x00\xac\x55", /* 6800 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd1\xec\xae\xea\xd1\xed\x00\x00\xd1\xe1\xae\xdf\xae\xeb\x00\x00\xd1\xda\x00\x00\xd1\xe3\xd1\xeb\x00\x00\xd1\xd9\xd1\xf4\xae\xd5\x00\x00\x00\x00\x00\x00\xd1\xf3\xd1\xee\x00\x00\xd1\xef\xae\xdd\xae\xe8\xd1\xe5\x00\x00\xd1\xe6\xd1\xf0\xd1\xe7\x00\x00\xd1\xe2\xd1\xdc\xd1\xdd\xd1\xea\xd1\xe4\x00\x00\x00\x00\xae\xd6\xae\xda\xd1\xf2\xd1\xde\xae\xe6\xae\xe2\x00\x00\x00\x00\xae\xe5\xae\xec\xae\xdb\xae\xe7\xd1\xe9\xae\xe9\xae\xd8\x00\x00\xae\xd7\xd1\xdb\x00\x00\xd1\xdf\xae\xe0\xd1\xf1\xd1\xe8\xd1\xe0\xae\xe4\xae\xe1\x00\x00\xae\xd9\xae\xdc\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd5\xc4\x00\x00\xd5\xb4\xd5\xb5\xd5\xb9\x00\x00\xd5\xc8\xd5\xc5\x00\x00\xd5\xbe\xd5\xbd\xb1\xed\xd5\xc1\xd5\xd0\xd5\xb0\x00\x00\xd5\xd1\xd5\xc3\xd5\xd5\xd5\xc9\xb1\xec", /* 6880 */ "\xd5\xc7\xb1\xe7\xb1\xfc\xb1\xf2\x00\x00\xb1\xf6\xb1\xf5\xd5\xb1\x00\x00\xd5\xce\xd5\xd4\xd5\xcc\xd5\xd3\x00\x00\x00\x00\xd5\xc0\xd5\xb2\xd5\xd2\xd5\xc2\xb1\xea\xb1\xf7\x00\x00\xd5\xcb\xb1\xf0\x00\x00\x00\x00\x00\x00\xd5\xca\xd5\xb3\xb1\xf8\x00\x00\xb1\xfa\xd5\xcd\xb1\xfb\xb1\xe9\xd5\xba\xd5\xcf\x00\x00\x00\x00\xb1\xef\xb1\xf9\xd5\xbc\xd5\xc6\xd5\xb7\xd5\xbb\xb1\xf4\xd5\xb6\xb1\xe8\xb1\xf1\xb1\xee\xd5\xbf\xae\xde\xd9\xc0\xb1\xeb\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xb1\xf3\x00\x00\xd9\xc3\xd9\xd9\xd9\xce\xb4\xd6\x00\x00\xb4\xd1\xd9\xbd\xb4\xd2\xd9\xcd\x00\x00\xd9\xc6\xd9\xd3\xb4\xce\xd9\xab\xd9\xd5\xb4\xc4\xd9\xb3\xb4\xc7\xb4\xc6\x00\x00\xb4\xd7\x00\x00\xd9\xad\xd9\xcf\xd9\xd0\xb4\xc9\xb4\xc5\xd9\xbb\x00\x00\xb4\xd0\xd9\xb6\x00\x00\xd9\xd1\xb4\xcc\xd9\xc9\xd9\xd6\xd9\xb0\xd9\xb5\xd9\xaf\x00\x00\xb4\xcb\xd9\xc2\xdd\xde\xd9\xb1\xb4\xcf\xd9\xba\xd9\xd2\xb4\xca\xd9\xb7\xd9\xb4\xd9\xc5\xb4\xcd\xb4\xc3\xb4\xd9\xd9\xc8\xd9\xc7\x00\x00\x00\x00", /* 6900 */ "\x00\x00\x00\x00\x00\x00\x00\x00\xd9\xac\xb4\xc8\xd9\xd4\xd9\xbc\xd9\xbe\x00\x00\xd9\xcb\xd9\xca\xd9\xaa\xb4\xd3\xb4\xd5\xd9\xb2\xd9\xb9\xd9\xc1\xb4\xd4\xd9\xb8\xd9\xc4\xd9\xd7\x00\x00\xd9\xcc\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd9\xd8\x00\x00\x00\x00\x00\x00\x00\x00\xd9\xae\x00\x00\x00\x00\x00\x00\x00\x00\xdd\xf2\xb7\xa6\x00\x00\xdd\xf0\xdd\xdb\xdd\xe0\xdd\xd9\x00\x00\xdd\xec\xdd\xcb\xdd\xd2\x00\x00\xdd\xea\xdd\xf4\xdd\xdc\x00\x00\xdd\xcf\xdd\xe2\xdd\xe7\xdd\xd3\x00\x00\xdd\xe4\xdd\xd0\x00\x00\x00\x00\xdd\xd7\xdd\xd8\xb7\xa8\xdd\xeb\xdd\xe9\x00\x00\xdd\xcc\xdd\xee\x00\x00\xdd\xef\xdd\xf1\xb7\xac\xb7\xa4\x00\x00\xd5\xb8\xdd\xd4\xdd\xe6\xdd\xd5\xb7\xa1\xb7\xb1\xdd\xed\xb7\xaf\xb7\xab\xdd\xca\xb7\xa3\x00\x00\xdd\xcd\xb7\xb0\x00\x00\xdd\xdd\xdd\xc9\x00\x00\xb7\xa9\xdd\xe1\xdd\xd1\xb7\xaa\xdd\xda\xb7\x7e\xb4\xd8\xdd\xe3\xd9\xbf\xdd\xce\x00\x00\x00\x00\xdd\xe8\xb7\xa5\xdd\xe5\xb7\xa2\xdd\xdf\xb7\xad\xdd\xd6\xdd\xf3\x00\x00\x00\x00\x00\x00\x00\x00", /* 6980 */ "\x00\x00\x00\x00\xb7\xa7\xde\xc6\x00\x00\x00\x00\xb7\xae\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe2\x4a\xe2\x48\x00\x00\xe2\x5e\xe2\x46\x00\x00\xe2\x58\xb7\x7d\xba\x5f\xe2\x42\xe2\x5d\x00\x00\xe2\x47\xe2\x55\xba\x64\xba\x5d\x00\x00\xe2\x5b\x00\x00\xe2\x40\xe2\x5a\x00\x00\xba\x6f\xe2\x51\xe2\x61\xba\x6d\xe2\x49\xba\x5e\xe2\x4b\xe2\x59\xba\x67\xe2\x44\xba\x6b\xba\x61\xe2\x4d\xe2\x43\xe1\xfc\x00\x00\xe2\x57\xba\x68\xe2\x60\xe1\xfd\xba\x65\x00\x00\xe2\x53\x00\x00\xba\x66\xe2\x45\xe2\x50\xe2\x4c\xe2\x4e\x00\x00\xba\x60\xe2\x5f\xba\x6e\xe2\x4f\x00\x00\xe2\x62\x00\x00\x00\x00\xe1\xfe\xe2\x54\xba\x63\xba\x6c\xba\x6a\xe2\x41\xe2\x56\xba\x69\x00\x00\x00\x00\xba\x62\xe2\x52\x00\x00\x00\x00\x00\x00\x00\x00\xe2\x5c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe5\xd5\x00\x00\xe5\xd1\xe5\xcd\xe5\xe1\xe5\xde\xbc\xcd\x00\x00\x00\x00\xe5\xe5\xe5\xd4\xbc\xd8\xe5\xdb\x00\x00\x00\x00\xe5\xd0\xe5\xda\xbc\xd5\xe5\xee\x00\x00\xe5\xeb\xe5\xdd\xe5\xce\x00\x00\x00\x00\xe5\xe2\xe5\xe4\xbc\xd1\xe5\xd8\xe5\xd3", /* 6a00 */ "\xe5\xca\xbc\xce\xbc\xd6\x00\x00\xe5\xe7\xbc\xd7\xe5\xcb\xe5\xed\xe5\xe0\xe5\xe6\xbc\xd4\x00\x00\x00\x00\xe5\xe3\x00\x00\xe5\xea\x00\x00\xbc\xd9\x00\x00\xbc\xd3\xe5\xdc\xe5\xcf\xe5\xef\xe5\xcc\xe5\xe8\xbc\xd0\x00\x00\xe5\xd6\x00\x00\xe5\xd7\xbc\xcf\xbc\xcc\xe5\xd2\xbc\xd2\x00\x00\xbc\xcb\x00\x00\xe5\xe9\xe5\xec\xe5\xd9\xe9\xca\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe9\xc2\x00\x00\xe9\xbe\xbe\xf6\x00\x00\x00\x00\xbe\xeb\xbe\xf0\xbe\xec\xe9\xcc\xe9\xd7\xbe\xea\xe9\xc4\xe9\xcd\xe5\xdf\xe9\xce\x00\x00\x00\x00\xbe\xf1\x00\x00\xe9\xdd\xbe\xf5\xbe\xf8\xe9\xc0\x00\x00\xbe\xf4\x00\x00\xe9\xdb\xe9\xdc\xe9\xd2\xe9\xd1\xe9\xc9\x00\x00\x00\x00\xe9\xd3\xe9\xda\xe9\xd9\x00\x00\xbe\xef\xbe\xed\xe9\xcb\xe9\xc8\x00\x00\xe9\xc5\xe9\xd8\xbe\xf7\xe9\xd6\xbe\xf3\xbe\xf2\x00\x00\xe9\xd0\x00\x00\xe9\xbf\xe9\xc1\xe9\xc3\xe9\xd5\xe9\xcf\xbe\xee\x00\x00\xe9\xc6\x00\x00\xe9\xd4\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe9\xc7\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc0\xcf\xed\x45", /* 6a80 */ "\xc0\xc8\xec\xf5\x00\x00\xed\x41\xc0\xca\xed\x48\x00\x00\xec\xfc\x00\x00\xec\xf7\x00\x00\x00\x00\xed\x49\xec\xf3\xec\xfe\x00\x00\xc0\xd1\xed\x44\xed\x4a\xec\xfd\xc0\xc9\xed\x40\xec\xf4\xc0\xd0\x00\x00\x00\x00\xed\x47\xec\xf9\xc0\xcc\x00\x00\xec\xfb\xec\xf8\xc0\xd2\xec\xfa\xc0\xcb\xc0\xce\xed\x43\xec\xf6\xed\x46\x00\x00\xed\x42\x00\x00\x00\x00\x00\x00\xc2\x63\xef\xe7\xc2\x68\xc2\x69\x00\x00\x00\x00\x00\x00\xc2\x62\xef\xe6\x00\x00\xef\xe3\xef\xe4\xc2\x66\xef\xde\xef\xe2\xc2\x65\x00\x00\xef\xdf\x00\x00\x00\x00\x00\x00\x00\x00\xc2\x67\xc2\x64\x00\x00\xef\xdd\xef\xe1\xef\xe5\x00\x00\x00\x00\x00\x00\xf2\x51\xf2\x4e\xf2\x57\x00\x00\xf2\x56\xf2\x54\xf2\x4f\x00\x00\xc3\x72\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf2\x50\xc3\x71\xc0\xcd\xf2\x53\xc3\x70\xf2\x58\xf2\x52\xf2\x4d\xef\xe0\x00\x00\x00\x00\x00\x00\xc3\x6f\x00\x00\xf2\x4c\xf4\x56\x00\x00\xf4\x55\xf2\x55\xc4\x68\x00\x00\xf4\x59\xf4\x5a\xf4\x54\xf4\x58\x00\x00\xf4\x53\x00\x00\x00\x00\x00\x00\x00\x00\xf5\xd1\xf4\x57\xc4\xe7\xc4\xe5\xf5\xcf\x00\x00\x00\x00\x00\x00", /* 6b00 */ "\xf5\xd2\x00\x00\xf5\xce\xf5\xd0\xc4\xe6\x00\x00\x00\x00\x00\x00\xf6\xe5\xf6\xe6\xc5\x76\xf6\xe4\x00\x00\x00\x00\x00\x00\xf7\xe2\xc5\xcf\xf7\xe0\xf7\xe1\xf8\xac\x00\x00\x00\x00\xc6\x56\xf8\xf3\xf8\xf1\xf8\xf2\xf8\xf4\x00\x00\x00\x00\x00\x00\xf9\xbb\x00\x00\xa4\xed\xa6\xb8\x00\x00\xaa\x59\x00\x00\xcc\xe9\x00\x00\x00\x00\xcf\x64\x00\x00\x00\x00\x00\x00\xd1\xf5\xd1\xf7\x00\x00\xd1\xf6\x00\x00\xd1\xf8\xb1\xfd\xd5\xd7\xd1\xf9\x00\x00\xd5\xd6\xd5\xd8\xd5\xd9\xd9\xda\xb4\xdb\xd9\xdb\xd9\xdd\xb4\xdc\xb4\xda\xd9\xdc\x00\x00\xdd\xfa\xdd\xf8\xdd\xf7\x00\x00\xdd\xf6\xdd\xf5\xb7\xb2\xdd\xf9\xba\x70\xe2\x63\xe2\x65\xba\x71\xe2\x64\xbc\xdb\x00\x00\xbc\xda\xe5\xf0\x00\x00\x00\x00\xe9\xdf\xe9\xde\xe9\xe0\x00\x00\x00\x00\xbe\xf9\x00\x00\xed\x4b\xc0\xd3\x00\x00\xef\xe8\xc2\x6a\xf2\x59\xc5\x77\xa4\xee\xa5\xbf\xa6\xb9\xa8\x42\xaa\x5a\xaa\x5b\x00\x00\x00\x00\xac\x6e\x00\x00\x00\x00\xd1\xfa\x00\x00\x00\x00\x00\x00\x00\x00\xb7\xb3\x00\x00\x00\x00\x00\x00\xe6\xd1\xbe\xfa\xc2\x6b\xa4\xef\x00\x00\xa6\xba\x00\x00\x00\x00\xcc\xeb\xaa\x5c", /* 6b80 */ "\xcc\xea\x00\x00\xcf\x65\xac\x6f\xcf\x66\x00\x00\xac\x70\x00\x00\xd1\xfc\xae\xee\xae\xed\x00\x00\xd5\xde\xd5\xdc\xd5\xdd\xd5\xdb\x00\x00\xd5\xda\x00\x00\x00\x00\xd9\xde\xd9\xe1\xb4\xde\xd9\xdf\xb4\xdd\xd9\xe0\x00\x00\xdd\xfb\x00\x00\x00\x00\xe2\x66\xe2\x67\xe2\x68\x00\x00\xe5\xf3\xe5\xf2\xbc\xdc\xe5\xf1\xe5\xf4\xe9\xe1\x00\x00\x00\x00\xe9\xe2\xe9\xe3\x00\x00\xed\x4c\xc0\xd4\xc2\x6c\xf2\x5a\x00\x00\xc4\xe8\xc9\x5f\x00\x00\xac\x71\xcf\x67\xae\xef\x00\x00\x00\x00\xb1\xfe\x00\x00\xb4\xdf\xd9\xe2\x00\x00\xb7\xb5\xb7\xb4\x00\x00\x00\x00\xe2\x69\xe2\x6a\xbc\xdd\xbc\xde\xe9\xe5\xe9\xe4\xef\xe9\xf7\xe3\xa4\xf0\xc9\x60\xa5\xc0\x00\x00\xa8\x43\xcb\x48\x00\x00\xac\x72\xb7\xb6\xa4\xf1\x00\x00\xcf\x68\xac\x73\xcf\x69\x00\x00\xc0\xd5\xa4\xf2\x00\x00\x00\x00\xcc\xec\x00\x00\xcf\x6a\x00\x00\xd2\x42\xd2\x41\xd1\xfe\x00\x00\xd1\xfd\xd2\x43\xd2\x40\x00\x00\x00\x00\xb2\x40\xb2\x41\x00\x00\x00\x00\xb4\xe0\xd9\xe3\x00\x00\xd9\xe4\xd9\xe5\x00\x00\x00\x00\x00\x00\xde\x41\xde\x42\xde\x40\x00\x00\xdd\xfd\xdd\xfe\xb7\xb7\xe2\x6b\xe5\xf7", /* 6c00 */ "\xe5\xf6\xe5\xf5\xe5\xf8\xe9\xe7\xe9\xe6\xbe\xfb\xe9\xe8\x00\x00\xc0\xd6\xed\x4d\x00\x00\xef\xea\xf2\x5b\xf6\xe7\x00\x00\xa4\xf3\xa5\xc2\xa5\xc1\x00\x00\xaa\x5d\xc9\x61\xc9\x7e\xa6\xbb\x00\x00\xc9\xf7\xcb\x49\xcb\x4a\xaa\x5e\x00\x00\xcc\xed\x00\x00\xac\x74\xcf\x6b\xcf\x6c\x00\x00\xae\xf0\xae\xf4\xd2\x44\xae\xf3\xae\xf1\xae\xf2\x00\x00\xd5\xdf\xb2\x42\xb4\xe3\x00\x00\xb4\xe1\xb4\xe2\xd9\xe6\x00\x00\x00\x00\xba\x72\xa4\xf4\x00\x00\xc9\xa1\x00\x00\xa5\xc3\x00\x00\x00\x00\xc9\xa4\x00\x00\x00\x00\xa5\xc6\xc9\xa3\xa5\xc5\xa5\xc4\xa8\x44\xc9\xa2\x00\x00\x00\x00\xc9\xf8\x00\x00\x00\x00\x00\x00\xc9\xfc\xc9\xfe\xca\x40\xa6\xc5\xa6\xc6\xc9\xfb\xa6\xc1\x00\x00\xc9\xf9\x00\x00\xc9\xfd\xa6\xc2\x00\x00\xa6\xbd\x00\x00\xa6\xbe\x00\x00\xa6\xc4\xc9\xfa\xa6\xbc\xa8\x45\xa6\xbf\xa6\xc0\xa6\xc3\x00\x00\x00\x00\x00\x00\xcb\x5b\xcb\x59\xcb\x4c\xa8\x51\xcb\x53\xa8\x4c\xcb\x4d\x00\x00\xcb\x55\x00\x00\xcb\x52\xa8\x4f\xcb\x51\xa8\x56\xcb\x5a\xa8\x58\x00\x00\xa8\x5a\x00\x00\xcb\x4b\x00\x00\xa8\x4d\xcb\x5c\x00\x00\xa8\x54\xa8\x57\x00\x00", /* 6c80 */ "\xcd\x45\xa8\x47\xa8\x5e\xa8\x55\xcb\x4e\xa8\x4a\xa8\x59\xcb\x56\xa8\x48\xa8\x49\xcd\x43\xcb\x4f\xa8\x50\xa8\x5b\xcb\x5d\xcb\x50\xa8\x4e\x00\x00\xa8\x53\xcc\xee\xa8\x5c\xcb\x57\xa8\x52\x00\x00\xa8\x5d\xa8\x46\xcb\x54\xa8\x4b\xcb\x58\xcd\x44\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xaa\x6a\xaa\x7a\xcc\xf5\xaa\x71\x00\x00\xcd\x4b\xaa\x62\x00\x00\xaa\x65\xcd\x42\x00\x00\xcc\xf3\xcc\xf7\xaa\x6d\xaa\x6f\xcc\xfa\xaa\x76\xaa\x68\xaa\x66\xaa\x67\xaa\x75\xcd\x47\xaa\x70\xcc\xf9\xcc\xfb\xaa\x6e\xaa\x73\xcc\xfc\xcd\x4a\x00\x00\xac\x75\xaa\x79\x00\x00\xaa\x63\xcd\x49\x00\x00\xcd\x4d\xcc\xf8\xcd\x4f\xcd\x40\xaa\x6c\xcc\xf4\xaa\x6b\xaa\x7d\xaa\x72\x00\x00\xcc\xf2\xcf\x75\xaa\x78\xaa\x7c\xcd\x41\xcd\x46\x00\x00\xaa\x7e\xaa\x77\xaa\x69\xaa\x5f\x00\x00\xaa\x64\x00\x00\xcc\xf6\xaa\x60\xcd\x4e\x00\x00\xcc\xf0\xcc\xef\xcc\xfd\xcc\xf1\xaa\x7b\xae\xf5\xaa\x74\xcc\xfe\xaa\x61\x00\x00\xac\xa6\x00\x00\x00\x00\x00\x00\xcd\x4c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 6d00 */ "\xcf\x7c\xcf\xa1\x00\x00\xcf\xa4\xcf\x77\x00\x00\x00\x00\xcf\xa7\xcf\xaa\xcf\xac\xcf\x74\xac\x76\xac\x7b\xd2\x49\xac\xad\xcf\xa5\xcf\xad\xcf\x7b\xcf\x73\x00\x00\x00\x00\x00\x00\xd2\x64\xac\x7e\xcf\xa2\xcf\x78\xcf\x7a\xac\xa5\x00\x00\xcf\x7d\xac\x7d\xcf\x70\xcf\xa8\x00\x00\xcf\xab\x00\x00\x00\x00\xac\x7a\x00\x00\xac\xa8\xcf\x6d\xac\xaa\xac\x78\xac\xae\xcf\xa9\xcf\x6f\xac\xab\xd2\x5e\xcd\x48\xac\x7c\xac\x77\xcf\x76\xcf\x6e\xac\xac\xac\xa4\xcf\xa3\xac\xa9\xac\xa7\xcf\x79\xac\xa1\xcf\x71\xac\xa2\xac\xa3\xcf\x72\xcf\xa6\xac\x79\xcf\x7e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd2\x4c\xae\xfd\xaf\x43\x00\x00\x00\x00\x00\x00\xd2\x55\xd2\x5b\xd2\x57\xd2\x4a\xd2\x4d\xd2\x46\xd2\x47\xaf\x4a\xae\xfa\xd2\x56\xd2\x5f\xaf\x45\xae\xf6\x00\x00\xaf\x40\xd2\x4e\xaf\x42\xd2\x4f\xd2\x59\x00\x00\x00\x00\x00\x00\xaf\x44\xd2\x68\xd2\x48\xae\xfc\xae\xfb\xaf\x48\xd2\x45\xd2\x66\xd2\x5a\xd2\x67\xd2\x61\xd2\x53", /* 6d80 */ "\xd2\x62\x00\x00\xd2\x5c\xd2\x65\xd2\x63\xaf\x49\xd2\x54\xae\xf9\xae\xf8\xaf\x41\xaf\x47\xd2\x60\xaf\x46\xd2\x51\xb2\x43\x00\x00\xd2\x69\xd2\x50\xd2\x4b\xae\xfe\xaf\x4b\xae\xf7\x00\x00\xd2\x58\xd2\x5d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xb2\x65\xd5\xe1\xd5\xe5\x00\x00\xb2\x52\xb2\x50\x00\x00\x00\x00\xb2\x47\xd5\xe3\xd5\xe2\xb2\x5b\x00\x00\xd5\xe8\xb2\x55\x00\x00\xd5\xfa\xd6\x47\xb2\x44\xd5\xf7\xd5\xf0\xb2\x67\xd5\xe0\x00\x00\xd5\xfc\x00\x00\xb2\x64\xb2\x58\xb2\x63\xb2\x4e\xd5\xec\xd5\xfe\xd5\xf6\xb2\x4f\xb2\x49\xd6\x45\x00\x00\xd5\xfd\xd6\x40\xb2\x51\xb2\x59\xd6\x42\xd5\xea\xd5\xfb\xd5\xef\xd6\x44\xb2\x5e\xb2\x46\xb2\x5c\xd5\xf4\xd5\xf2\xd5\xf3\xb2\x53\xd5\xee\xd5\xed\xb2\x48\xd5\xe7\xd6\x46\xb2\x4a\xd5\xf1\xb2\x68\x00\x00\xb2\x62\xd5\xe6\xb2\x5f\xb2\x5d\xb2\x66\xd5\xf8\xb2\x61\xd2\x52\xd5\xf9\xb2\x60\xd6\x41\xb2\x45\xd5\xf5\xb2\x57\xd5\xe9\xb2\x56\x00\x00\xb2\x54\xb2\x4c\xb2\x4b\xd9\xe7\xd6\x43\x00\x00\x00\x00", /* 6e00 */ "\xd5\xeb\x00\x00\x00\x00\xd9\xfc\x00\x00\xb2\x4d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xb5\x41\xb2\x5a\xb4\xee\xd9\xf6\xb4\xfc\x00\x00\xd9\xea\xb4\xeb\xb4\xe7\xda\x49\xb4\xed\xb4\xf1\xb4\xec\xb4\xf5\xda\x4d\xda\x44\x00\x00\x00\x00\xd9\xf1\xb4\xfa\xb4\xf4\xd9\xfd\xb4\xe4\xda\x4a\xda\x43\xb4\xe8\xd9\xf7\xb4\xf7\xda\x55\xda\x56\x00\x00\xb4\xe5\xda\x48\xb4\xf9\xd9\xfb\xd9\xed\xd9\xee\xb4\xfd\xd9\xf2\xd9\xf9\xd9\xf3\x00\x00\xb4\xfb\xb5\x44\xd9\xef\xd9\xe8\xd9\xe9\x00\x00\xd9\xeb\xb4\xea\xd9\xf8\x00\x00\xb4\xf8\xb5\x42\x00\x00\x00\x00\xd9\xfa\xda\x53\xda\x4b\xb4\xe6\xda\x51\xb4\xf2\x00\x00\xb4\xf0\x00\x00\xda\x57\xb4\xef\xda\x41\xd9\xf4\xd9\xfe\xb5\x47\xda\x45\xda\x42\xd9\xf0\xb5\x43\xda\x4f\xda\x4c\xda\x54\xb4\xe9\xda\x40\xb5\x46\x00\x00\xda\x47\x00\x00\x00\x00\xb4\xf3\xb4\xf6\x00\x00\xda\x46\xb5\x45\xd9\xf5\xd5\xe4\x00\x00\x00\x00\xda\x50\xda\x4e\xda\x52\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 6e80 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd9\xec\xb5\x40\x00\x00\x00\x00\x00\x00\xde\x61\xde\x60\xde\x46\xb7\xbd\x00\x00\xde\x5f\xde\x49\xde\x4a\x00\x00\xb7\xc7\xde\x68\xb7\xc2\xde\x5e\x00\x00\xde\x43\xb7\xc8\xb7\xbe\xde\x52\xde\x48\xde\x4b\xde\x63\xb7\xb8\xde\x6a\xde\x62\xb7\xc1\xde\x57\xb7\xcc\x00\x00\x00\x00\xb7\xcb\xb7\xc5\x00\x00\x00\x00\xde\x69\xb7\xb9\xde\x55\xde\x4c\xde\x59\xde\x65\xb7\xcd\x00\x00\xb7\xbb\xde\x54\x00\x00\xde\x4d\xb7\xc4\x00\x00\xb7\xc3\xde\x50\xde\x5a\xde\x64\xde\x47\xde\x51\xb7\xbc\xde\x5b\xb7\xc9\xb7\xc0\xde\x4e\xb7\xbf\xde\x45\xde\x53\xde\x67\xb4\xfe\xba\xb0\xde\x56\xe2\x6c\xde\x58\xde\x66\xb7\xc6\xde\x4f\xb7\xba\xb7\xca\xbc\xf0\xde\x44\x00\x00\xde\x5d\x00\x00\x00\x00\x00\x00\xde\x5c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe2\xaa\xba\xad\xe2\x7d\xe2\xa4\xba\xa2\x00\x00\xe2\x6e\xba\xaf\x00\x00\xba\x77\xe2\x6d\xe2\xb0\xba\xb1\xe2\x71\xe2\xa3\x00\x00\xe2\x73\xe2\xb3\xe2\xaf\xba\x75\xba\xa1", /* 6f00 */ "\xe6\x53\xba\xae\xba\x7d\xe2\x6f\x00\x00\xe2\xae\xba\xa3\xe2\xab\xe2\xb8\xe2\x75\xe2\x7e\x00\x00\x00\x00\xe2\xb6\xe2\xac\xba\x7c\x00\x00\x00\x00\xe2\x7c\xba\x76\xba\x74\xba\xa8\x00\x00\x00\x00\xe2\x7a\xe2\x77\xe2\x78\x00\x00\xe2\xb2\x00\x00\xe2\xb7\xe2\xb5\xba\x7a\xe2\xb9\xba\x7e\xba\xa7\x00\x00\xe2\x70\xe5\xfa\xe2\x79\x00\x00\xba\x78\xba\xac\xba\xa9\xba\x7b\xe2\xa5\xe2\x74\xba\xaa\xe2\xa7\xba\xa4\xba\xa6\xba\x73\x00\x00\xe2\xa9\xe2\xa1\xe2\x72\xba\xa5\xe2\xb1\xe2\xb4\xe2\x7b\xe2\xa8\x00\x00\xba\x79\xbc\xdf\xe2\xa6\xe5\xf9\x00\x00\xe2\xad\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe2\x76\xe6\x44\xe6\x4e\xbc\xe2\xe6\x4d\xe6\x59\xbc\xe4\xe6\x4b\x00\x00\xe6\x4f\xbc\xef\x00\x00\xe6\x46\xbc\xe7\x00\x00\xe6\x52\xe9\xf0\xbc\xf3\xbc\xf2\xe6\x54\xe6\x43\xe6\x5e\xbc\xed\x00\x00\xbc\xe3\xe6\x57\x00\x00\xe6\x5b\xe6\x60\xe6\x55\xe6\x49\xbc\xe6\xbc\xe9\xbc\xf1\xbc\xec\x00\x00\xe6\x4c\xe2\xa2\x00\x00\x00\x00\xe6\x48\xe6\x5f\xbc\xe8\x00\x00\xbc\xeb\xe6\x61\xbc\xe0\xe6\x56\xe5\xfb\xe6\x5c", /* 6f80 */ "\xc0\xdf\x00\x00\xe6\x4a\x00\x00\xbc\xe1\xe6\x45\xbc\xe5\xe5\xfc\xba\xab\xe6\x41\x00\x00\xe6\x5a\xe6\x42\xe6\x40\xbc\xea\x00\x00\xe6\x58\x00\x00\xe5\xfe\xe6\x51\xe6\x50\xe6\x5d\xe6\x47\xbc\xee\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe9\xf3\x00\x00\xbf\x49\xbe\xfe\xea\x40\xe9\xeb\xbf\x41\xe9\xf7\xbf\x48\xbf\x43\xe9\xf5\xed\x4f\xe9\xfb\xea\x42\xe9\xfa\xe9\xe9\xe9\xf8\xea\x44\xea\x46\xbe\xfd\xea\x45\xbf\x44\xbf\x4a\x00\x00\xbf\x47\x00\x00\xe9\xfe\xbf\x46\xe9\xf9\x00\x00\xe9\xed\xe9\xf2\x00\x00\xe9\xfd\xbf\x45\xbf\x42\xbe\xfc\xbf\x40\xe9\xf1\x00\x00\xe5\xfd\xe9\xec\xe9\xef\xea\x41\xe9\xf4\xe9\xea\xed\x4e\xea\x43\xe9\xee\xe9\xfc\x00\x00\x00\x00\x00\x00\x00\x00\xed\x51\xc0\xe3\x00\x00\x00\x00\xc0\xd7\x00\x00\x00\x00\xc0\xdb\xed\x53\xed\x59\xed\x57\xc0\xd9\xc0\xda\xc0\xe1\xed\x5a\xed\x52\xc0\xdc\x00\x00\xed\x56\xed\x55\xed\x5b\xc0\xe2\x00\x00\xc0\xdd\xc0\xe0\xed\x54\xc0\xe4\xc0\xde\xc0\xe5\xc0\xd8\xed\x58\x00\x00\xed\x50\x00\x00\x00\x00\xef\xf7\x00\x00\x00\x00\xc2\x71\xef\xf4\xef\xf6\x00\x00\xc2\x6f\xef\xf2", /* 7000 */ "\xef\xf3\xef\xee\x00\x00\x00\x00\xe9\xf6\xef\xef\xc2\x70\xef\xeb\x00\x00\xc2\x6d\xef\xf8\xc2\x6e\xef\xec\xef\xed\xef\xf1\xc2\x73\x00\x00\xc2\x72\x00\x00\x00\x00\xef\xf0\xc3\x78\xf2\x5f\xf2\x65\xc3\x79\xf2\x5c\xc3\x76\xc3\x73\xf2\x67\xc3\x77\x00\x00\xc3\x74\xf2\x5e\xf2\x61\xf2\x62\xf2\x63\xf2\x66\x00\x00\xef\xf5\xf2\x5d\xc3\x75\xf2\x64\xf2\x68\xf2\x60\x00\x00\x00\x00\x00\x00\xf4\x5d\xc4\x6a\xf4\x60\xc4\x6b\xf4\x68\xf4\x5f\xf4\x5c\x00\x00\xf4\x5e\xf4\x62\xf4\x65\xf4\x64\xf4\x67\xf4\x5b\x00\x00\xc4\x69\xf4\x63\xf4\x66\xf4\x69\xf4\x61\xf5\xd3\xf5\xd4\xf5\xd8\xf5\xd9\x00\x00\xf5\xd6\xf5\xd7\xf5\xd5\x00\x00\xc4\xe9\x00\x00\x00\x00\x00\x00\x00\x00\xc5\x78\xf6\xeb\x00\x00\x00\x00\xf6\xe8\xf6\xe9\xf6\xea\xc5\x79\x00\x00\xf7\xe5\xf7\xe4\x00\x00\xf8\xaf\xc5\xf4\xf8\xad\xf8\xb0\xf8\xae\xf8\xf5\xc6\x57\xc6\x65\xf9\xa3\xf9\x6c\x00\x00\xf9\xa2\xf9\xd0\xf9\xd1\xa4\xf5\x00\x00\x00\x00\x00\x00\x00\x00\xa6\xc7\xca\x41\x00\x00\x00\x00\xcb\x5e\x00\x00\xa8\x5f\x00\x00\xa8\x62\x00\x00\xcb\x5f\x00\x00\xa8\x60\xa8\x61\x00\x00\x00\x00", /* 7080 */ "\x00\x00\x00\x00\xcd\x58\xcd\x5a\xcd\x55\xcd\x52\xcd\x54\x00\x00\x00\x00\x00\x00\xaa\xa4\x00\x00\x00\x00\x00\x00\xaa\xa2\x00\x00\x00\x00\xcd\x56\xaa\xa3\xcd\x53\xcd\x50\xaa\xa1\xcd\x57\x00\x00\xcd\x51\xaa\xa5\xcd\x59\x00\x00\x00\x00\x00\x00\x00\x00\xcf\xaf\x00\x00\xcf\xb3\x00\x00\x00\x00\xac\xb7\x00\x00\x00\x00\x00\x00\x00\x00\xcf\xb6\x00\x00\xac\xaf\xac\xb2\xac\xb4\xac\xb6\xac\xb3\xcf\xb2\xcf\xb1\x00\x00\xac\xb1\xcf\xb4\xcf\xb5\x00\x00\xcf\xae\xac\xb5\x00\x00\xac\xb0\x00\x00\x00\x00\x00\x00\xcf\xb0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd2\x77\xd2\x78\xd2\x79\xaf\x50\x00\x00\xaf\x4c\xd2\x6e\x00\x00\xd2\x76\xd2\x7b\xaf\x51\x00\x00\xd2\x6c\xd2\x72\xd2\x6b\xd2\x75\x00\x00\x00\x00\xd2\x71\xaf\x4d\xaf\x4f\xd2\x7a\x00\x00\xd2\x6a\xd2\x6d\xd2\x73\x00\x00\xd2\x74\xd2\x7c\xd2\x70\x00\x00\xaf\x4e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xb2\x6d\xd6\x4e\x00\x00\x00\x00\xd6\x50\xd6\x4c\x00\x00\xd6\x58\xd6\x4a\xd6\x57\xb2\x69\xd6\x48\xda\x5b\xd6\x52\xb2\x6c\x00\x00\xd6\x53", /* 7100 */ "\xd6\x56\x00\x00\xd6\x5a\x00\x00\xd6\x4f\x00\x00\xd6\x54\x00\x00\x00\x00\xb2\x6a\xb2\x6b\xd6\x59\xd6\x4d\xd6\x49\xd6\x5b\x00\x00\xd6\x51\x00\x00\x00\x00\xd6\x55\x00\x00\x00\x00\x00\x00\xd6\x4b\x00\x00\xb5\x48\xb5\x49\xda\x65\xb5\x4f\x00\x00\xda\x59\xda\x62\xda\x58\xb5\x4c\xda\x60\xda\x5e\x00\x00\xda\x5f\xb5\x4a\x00\x00\xda\x63\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xda\x5c\xda\x5a\xb5\x4b\xda\x5d\xda\x61\x00\x00\x00\x00\x00\x00\xb5\x4d\x00\x00\x00\x00\x00\x00\xda\x64\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xde\x70\xde\x77\xde\x79\xde\xa1\x00\x00\xb7\xda\xde\x6b\x00\x00\xb7\xd2\x00\x00\xde\x7a\xb7\xd7\xde\xa2\xb7\xce\x00\x00\xde\x7d\x00\x00\xde\x6d\xde\x7e\xde\x6c\x00\x00\xb7\xdc\x00\x00\xde\x78\xb7\xcf\xde\xa3\x00\x00\xb7\xd4\xde\x71\xb7\xd9\xde\x7c\xde\x6f\xde\x76\xde\x72\xde\x6e\xb7\xd1\xb7\xd8\xb7\xd6\xb7\xd3\xb7\xdb\xb7\xd0\xde\x75\x00\x00\xb7\xd5\x00\x00\xb5\x4e\x00\x00\xde\x7b\x00\x00\xde\x73\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xde\x74\x00\x00\x00\x00\xe2\xc1\x00\x00\xba\xb4\x00\x00\x00\x00", /* 7180 */ "\xe2\xbd\xe2\xc3\xe2\xbf\x00\x00\xba\xb6\xe2\xbe\xe2\xc2\xe2\xba\x00\x00\xe2\xbc\xba\xb5\x00\x00\x00\x00\x00\x00\x00\x00\xe2\xc0\xe2\xbb\x00\x00\xba\xb7\x00\x00\xba\xb2\x00\x00\x00\x00\xe2\xc4\x00\x00\xba\xb3\xe6\x67\xe6\x64\xe6\x70\xe6\x6a\xe6\x6c\xbc\xf4\xe6\x66\xe6\x6e\x00\x00\x00\x00\xe6\x6d\xe6\x6b\x00\x00\xe6\x71\xbc\xf7\xe6\x68\xe6\x6f\x00\x00\xbc\xf5\x00\x00\x00\x00\xe6\x63\xe6\x65\xbc\xf6\xe6\x62\xe6\x72\x00\x00\xe6\x69\x00\x00\x00\x00\xea\x4a\xbf\x51\x00\x00\x00\x00\xea\x55\xea\x53\xbf\x4b\xea\x49\xea\x4c\xea\x4d\xea\x48\xbf\x55\xbf\x56\xea\x47\xea\x56\xea\x51\xbf\x4f\xbf\x4c\xea\x50\xea\x4e\x00\x00\x00\x00\xbf\x52\xea\x52\xbf\x4d\x00\x00\xbf\x4e\x00\x00\xea\x4f\xbf\x50\xea\x4b\x00\x00\xea\x54\xbf\x53\xea\x57\xea\x58\xbf\x54\x00\x00\x00\x00\xc0\xe7\xc0\xee\xed\x5c\xed\x62\x00\x00\xed\x60\xc0\xea\xc0\xe9\xc0\xe6\xed\x5e\x00\x00\x00\x00\x00\x00\xc0\xec\xc0\xeb\xc0\xe8\x00\x00\xed\x61\xed\x5d\xed\x5f\x00\x00\xc0\xed\x00\x00\x00\x00\x00\x00\xc2\x77\xef\xfb\x00\x00\xc2\x74\xc2\x75\xef\xfd\xc2\x76\xef\xfa", /* 7200 */ "\x00\x00\xef\xf9\xf2\x6c\xef\xfc\x00\x00\xf2\x6d\xc3\x7a\xf2\x6b\x00\x00\x00\x00\xf2\x6a\x00\x00\xf2\x69\xc3\x7b\x00\x00\x00\x00\xc4\x6c\x00\x00\x00\x00\xf4\x6a\xf4\x6b\x00\x00\x00\x00\x00\x00\x00\x00\xf5\xdc\xf5\xdb\xc4\xea\x00\x00\xf5\xda\xf6\xec\xf6\xed\x00\x00\x00\x00\xf7\xe6\xf8\xb1\x00\x00\x00\x00\xf8\xf6\xf9\xbc\xc6\x79\xf9\xc6\xa4\xf6\x00\x00\xaa\xa6\xaa\xa7\x00\x00\x00\x00\xac\xb8\x00\x00\x00\x00\x00\x00\x00\x00\xc0\xef\xa4\xf7\x00\x00\xaa\xa8\xaf\x52\xb7\xdd\xa4\xf8\x00\x00\xb2\x6e\xba\xb8\xc9\x62\x00\x00\xcf\xb7\xd2\x7d\x00\x00\xe2\xc5\x00\x00\xc0\xf0\xa4\xf9\xaa\xa9\xcf\xb8\xcf\xb9\xda\x66\xb5\x50\x00\x00\x00\x00\xde\xa4\x00\x00\x00\x00\xb7\xde\xe2\xc6\x00\x00\x00\x00\xbc\xf8\x00\x00\xc3\x7c\xa4\xfa\xda\x67\xa4\xfb\x00\x00\xa6\xc9\xca\x42\xa6\xc8\xa8\x65\xa8\x64\xa8\x63\xcb\x60\x00\x00\x00\x00\x00\x00\xaa\xaa\x00\x00\xaa\xab\xcd\x5b\x00\x00\xcf\xba\x00\x00\xcf\xbd\xac\xba\xcf\xbb\x00\x00\xac\xb9\xcf\xbc\xac\xbb\x00\x00\xd2\xa2\xd2\xa1\xd2\x7e\xaf\x53\x00\x00\xd6\x5d\xd6\x5e\xb2\x6f\xd6\x5c\xd6\x5f", /* 7280 */ "\xb5\x52\xb2\x70\x00\x00\x00\x00\xb5\x51\xda\x6b\xda\x6a\x00\x00\xda\x68\xda\x69\x00\x00\xda\x6c\xde\xa6\xde\xa5\xde\xa9\x00\x00\xde\xa8\xde\xa7\xba\xb9\xe2\xc9\x00\x00\xe2\xc8\xba\xba\xe2\xc7\xe6\x73\x00\x00\xe6\x74\xbc\xf9\x00\x00\xea\x59\xea\x5a\x00\x00\x00\x00\xf2\x72\xc3\x7d\xf2\x71\xf2\x70\xf2\x6e\xf2\x6f\xc4\xeb\xf4\x6c\xf6\xee\xf8\xf7\x00\x00\xa4\xfc\x00\x00\xc9\xa5\xa5\xc7\xc9\xa6\x00\x00\x00\x00\x00\x00\xca\x43\xca\x44\x00\x00\x00\x00\x00\x00\x00\x00\xcb\x66\x00\x00\x00\x00\xcb\x62\x00\x00\xcb\x61\xaa\xac\xcb\x65\xa8\x67\xcb\x63\xa8\x66\xcb\x67\xcb\x64\x00\x00\x00\x00\xcd\x5f\xcf\xbe\xcd\x5d\xcd\x64\x00\x00\xaa\xad\x00\x00\xaa\xb0\xcd\x65\xcd\x61\x00\x00\xcd\x62\x00\x00\xcd\x5c\xaa\xaf\xcd\x5e\xaa\xae\xcd\x63\x00\x00\xcd\x60\x00\x00\x00\x00\xcf\xc2\xac\xbd\xac\xbe\x00\x00\xcf\xc5\xcf\xbf\x00\x00\xcf\xc4\x00\x00\xcf\xc0\xac\xbc\xcf\xc3\xcf\xc1\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd2\xa8\xd2\xa5\x00\x00\xd2\xa7\xaf\x58\xaf\x57\xaf\x55\xd2\xa4\xd2\xa9\xaf\x54\xaf\x56\xd2\xa6\xd6\x67", /* 7300 */ "\xd2\xa3\xd2\xaa\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd6\x62\xd6\x66\x00\x00\xd6\x65\xda\x6e\xda\x79\x00\x00\x00\x00\xd6\x68\x00\x00\xd6\x63\xda\x6d\xb2\x74\x00\x00\x00\x00\xb2\x73\xd6\x61\xd6\x64\xb2\x75\x00\x00\xb2\x72\xb2\x71\xd6\x60\xd6\x69\x00\x00\x00\x00\x00\x00\xda\x70\xda\x77\x00\x00\xb5\x54\xda\x76\xda\x73\x00\x00\xb5\x56\x00\x00\x00\x00\x00\x00\xda\x75\x00\x00\x00\x00\xda\x6f\xda\x71\xda\x74\xda\x72\xb5\x55\xda\x78\xb5\x53\xb7\xdf\x00\x00\x00\x00\xde\xad\xde\xac\xde\xaa\x00\x00\xb7\xe2\xb7\xe1\xde\xae\x00\x00\xde\xab\xe2\xca\xba\xbb\xb7\xe0\x00\x00\x00\x00\x00\x00\xde\xb0\xde\xaf\x00\x00\xe2\xcd\xe2\xcb\xbc\xfa\x00\x00\xba\xbc\xe2\xcc\xe6\x76\x00\x00\x00\x00\x00\x00\x00\x00\xbc\xfb\xe6\x75\xe6\x7e\xe6\x7d\xe6\x7b\x00\x00\xe6\x7a\xe6\x77\xe6\x78\xe6\x79\xe6\x7c\xe6\xa1\x00\x00\x00\x00\xea\x5f\xea\x5c\xea\x5d\xbf\x57\xea\x5b\xea\x61\xea\x60\xea\x5e\x00\x00\xed\x64\xed\x65\xc0\xf1\x00\x00\xc0\xf2\xed\x63\x00\x00\xc2\x79\xef\xfe\xc2\x78\xc3\x7e\x00\x00\xc3\xa1\xc4\x6d\xf4\x6e\xf4\x6d\xf5\xdd\xf6\xef", /* 7380 */ "\xc5\x7a\xf7\xe8\xf7\xe7\xf7\xe9\xa5\xc8\xcf\xc6\xaf\x59\xb2\x76\xd6\x6a\xa5\xc9\xc9\xa7\xa4\xfd\x00\x00\x00\x00\xca\x45\x00\x00\x00\x00\x00\x00\xcb\x6c\xcb\x6a\xcb\x6b\xcb\x68\xa8\x68\xcb\x69\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xcd\x6d\x00\x00\xaa\xb3\xcd\x6b\xcd\x67\xcd\x6a\x00\x00\xcd\x66\xaa\xb5\xcd\x69\x00\x00\xaa\xb2\xaa\xb1\x00\x00\xaa\xb4\xcd\x6c\xcd\x68\x00\x00\x00\x00\x00\x00\x00\x00\xac\xc2\xac\xc5\xcf\xce\xcf\xcd\xcf\xcc\xac\xbf\xcf\xd5\xcf\xcb\x00\x00\xac\xc1\xd2\xaf\x00\x00\xcf\xd2\xcf\xd0\xac\xc4\x00\x00\xcf\xc8\xcf\xd3\x00\x00\xcf\xca\xcf\xd4\xcf\xd1\xcf\xc9\x00\x00\xac\xc0\xcf\xd6\xcf\xc7\xac\xc3\x00\x00\x00\x00\x00\x00\x00\x00\xd2\xb4\xd2\xab\xd2\xb6\x00\x00\xd2\xae\xd2\xb9\xd2\xba\xd2\xac\xd2\xb8\xd2\xb5\xd2\xb3\xd2\xb7\xaf\x5f\x00\x00\xaf\x5d\x00\x00\x00\x00\xd2\xb1\x00\x00\xd2\xad\x00\x00\xd2\xb0\xd2\xbb\xd2\xb2\xaf\x5e\xcf\xcf\x00\x00\xaf\x5a\xaf\x5c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd6\x78\xd6\x6d\xd6\x6b\x00\x00\xd6\x6c\x00\x00\xd6\x73\x00\x00\xd6\x74\xd6\x70\xb2\x7b\xd6\x75", /* 7400 */ "\xd6\x72\xd6\x6f\x00\x00\xb2\x79\xd6\x6e\xb2\x77\xb2\x7a\xd6\x71\xd6\x79\xaf\x5b\xb2\x78\xd6\x77\xd6\x76\xb2\x7c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xda\x7e\x00\x00\x00\x00\x00\x00\xda\xa1\xb5\x60\x00\x00\xda\xa7\x00\x00\x00\x00\xda\xa9\xda\xa2\xb5\x5a\xda\xa6\xda\xa5\xb5\x5b\xb5\x61\x00\x00\xb5\x62\xda\xa8\xb5\x58\xda\x7d\xda\x7b\xda\xa3\xda\x7a\xb5\x5f\xda\x7c\xda\xa4\xda\xaa\xb5\x59\xb5\x5e\xb5\x5c\xb5\x5d\x00\x00\x00\x00\x00\x00\xb5\x57\x00\x00\x00\x00\x00\x00\x00\x00\xb7\xe9\xde\xb7\xb7\xe8\xde\xbb\x00\x00\xde\xb1\x00\x00\xde\xbc\x00\x00\x00\x00\x00\x00\xde\xb2\xde\xb3\x00\x00\xde\xbd\xde\xba\xde\xb8\xde\xb9\xde\xb5\xde\xb4\x00\x00\xde\xbe\xb7\xe5\x00\x00\xde\xb6\x00\x00\xb7\xea\xb7\xe4\xb7\xeb\xb7\xec\x00\x00\xb7\xe7\xb7\xe6\x00\x00\x00\x00\xe2\xce\xba\xbe\xba\xbd\x00\x00\x00\x00\xe2\xd3\x00\x00\xbc\xfc\xba\xbf\x00\x00\x00\x00\xba\xc1\xe2\xd4\xb7\xe3\xba\xc0\xe2\xd0\xe2\xd2\xe2\xcf\x00\x00\xe2\xd1\x00\x00\x00\x00\x00\x00\xe6\xab\x00\x00\x00\x00\xe6\xaa\xe6\xa7\xbd\x40\xea\x62", /* 7480 */ "\xbd\x41\xe6\xa6\x00\x00\xbc\xfe\x00\x00\xe6\xa8\xe6\xa5\xe6\xa2\xe6\xa9\xe6\xa3\xe6\xa4\xbc\xfd\x00\x00\x00\x00\x00\x00\x00\x00\xed\x69\x00\x00\xea\x66\x00\x00\xea\x65\xea\x67\x00\x00\xed\x66\xbf\x5a\x00\x00\xea\x63\x00\x00\xbf\x58\x00\x00\xbf\x5c\xbf\x5b\xea\x64\xea\x68\x00\x00\xbf\x59\x00\x00\xed\x6d\xc0\xf5\xc2\x7a\xc0\xf6\xc0\xf3\xed\x6a\xed\x68\x00\x00\xed\x6b\x00\x00\xed\x6e\xc0\xf4\xed\x6c\xed\x67\x00\x00\x00\x00\xf0\x42\xf0\x45\xf2\x75\xf0\x40\x00\x00\xf4\x6f\xf0\x46\x00\x00\xc3\xa2\xf0\x44\xc2\x7b\xf0\x41\xf0\x43\xf0\x47\xf2\x76\x00\x00\xf2\x74\x00\x00\x00\x00\x00\x00\x00\x00\xc3\xa3\xf2\x73\x00\x00\x00\x00\x00\x00\xc4\x6e\x00\x00\x00\x00\x00\x00\x00\x00\xc4\xed\xf6\xf1\xc4\xec\xf6\xf3\xf6\xf0\xf6\xf2\xc5\xd0\xf8\xb2\xa5\xca\xcd\x6e\xd2\xbc\xd2\xbd\xb2\x7d\xde\xbf\xbf\x5d\xc3\xa4\xc5\x7b\xf8\xb3\xa5\xcb\x00\x00\xcd\x6f\xa2\x60\x00\x00\x00\x00\xcf\xd7\x00\x00\xcf\xd8\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd2\xbe\xd2\xbf\xb2\x7e\xb2\xa1\x00\x00\x00\x00\x00\x00\xda\xab\x00\x00\xde\xc2\xde\xc1\xde\xc0", /* 7500 */ "\xe2\xd5\x00\x00\xe2\xd6\xe2\xd7\xba\xc2\x00\x00\x00\x00\xe6\xad\xe6\xac\x00\x00\x00\x00\xea\x69\xbf\x5e\xbf\x5f\x00\x00\xed\x72\xed\x6f\xed\x70\xed\x71\xf0\x49\xf0\x48\xc2\x7c\xf2\x77\xf5\xde\xa5\xcc\x00\x00\xac\xc6\x00\x00\xb2\xa2\xde\xc3\x00\x00\xa5\xcd\x00\x00\xd2\xc0\xb2\xa3\x00\x00\x00\x00\xb5\x63\xb5\x64\x00\x00\xa5\xce\xa5\xcf\xca\x46\xa8\x6a\xa8\x69\xac\xc7\xcf\xd9\xda\xac\xa5\xd0\xa5\xd1\xa5\xd2\xa5\xd3\x00\x00\x00\x00\x00\x00\xa8\x6b\xa8\x6c\xcb\x6e\xcb\x6d\x00\x00\x00\x00\xaa\xb6\xcd\x72\xcd\x70\xcd\x71\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xcf\xda\xcf\xdb\x00\x00\x00\x00\xac\xcb\xac\xc9\x00\x00\xac\xca\xac\xc8\x00\x00\x00\x00\x00\x00\x00\x00\xaf\x60\x00\x00\x00\x00\x00\x00\x00\x00\xaf\x64\xaf\x63\xd2\xc1\xaf\x62\xaf\x61\x00\x00\xd2\xc2\x00\x00\x00\x00\xb2\xa6\xd6\x7b\xd6\x7a\xb2\xa4\xb2\xa5\x00\x00\x00\x00\x00\x00\xb5\x66\xb5\x65\xda\xae\x00\x00\x00\x00\xda\xad\xb2\xa7\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xb7\xed\xde\xc5\xb7\xee\xde\xc4\x00\x00\x00\x00\x00\x00\xe2\xd8\xe6\xae\xbd\x42", /* 7580 */ "\xea\x6a\x00\x00\x00\x00\x00\x00\xed\x73\x00\x00\xc3\xa6\xc3\xa5\x00\x00\x00\x00\xc5\x7c\xa5\xd4\xcd\x73\x00\x00\x00\x00\xb2\xa8\xe2\xd9\xba\xc3\x00\x00\x00\x00\xcb\x6f\xcb\x70\x00\x00\x00\x00\xcd\x74\xaa\xb8\xaa\xb9\x00\x00\x00\x00\xaa\xb7\x00\x00\x00\x00\x00\x00\x00\x00\xac\xcf\xac\xd0\xac\xcd\xac\xce\x00\x00\xcf\xdc\x00\x00\x00\x00\xcf\xdd\xac\xcc\x00\x00\x00\x00\x00\x00\x00\x00\xd2\xc3\x00\x00\xaf\x68\xaf\x69\x00\x00\xb2\xab\xd2\xc9\x00\x00\xaf\x6e\xaf\x6c\xd2\xca\xd2\xc5\xaf\x6b\xaf\x6a\xaf\x65\xd2\xc8\xd2\xc7\xd2\xc4\xaf\x6d\x00\x00\xd2\xc6\xaf\x66\x00\x00\xaf\x67\x00\x00\x00\x00\xb2\xac\xd6\xa1\xd6\xa2\xb2\xad\xd6\x7c\xd6\x7e\xd6\xa4\xd6\xa3\xd6\x7d\x00\x00\xb2\xa9\xb2\xaa\x00\x00\xda\xb6\xb5\x6b\xb5\x6a\xda\xb0\xb5\x68\x00\x00\xda\xb3\xb5\x6c\xda\xb4\xb5\x6d\xda\xb1\xb5\x67\xb5\x69\xda\xb5\x00\x00\xda\xb2\xda\xaf\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xde\xd2\x00\x00\xde\xc7\xb7\xf0\xb7\xf3\xb7\xf2\xb7\xf7\xb7\xf6\xde\xd3\xde\xd1\xde\xca\xde\xce\xde\xcd\xb7\xf4\xde\xd0\xde\xcc\xde\xd4\xde\xcb\xb7\xf5", /* 7600 */ "\xb7\xef\xb7\xf1\x00\x00\xde\xc9\x00\x00\x00\x00\x00\x00\x00\x00\xe2\xdb\xba\xc7\xe2\xdf\xba\xc6\xe2\xdc\xba\xc5\x00\x00\xde\xc8\xde\xcf\xe2\xde\x00\x00\xba\xc8\xe2\xe0\xe2\xdd\xe2\xda\x00\x00\x00\x00\xe6\xb1\xe6\xb5\xe6\xb7\xe6\xb3\xe6\xb2\xe6\xb0\xbd\x45\xbd\x43\xbd\x48\xbd\x49\xe6\xb4\xbd\x46\xe6\xaf\xbd\x47\xba\xc4\xe6\xb6\xbd\x44\x00\x00\x00\x00\x00\x00\xea\x6c\x00\x00\xea\x6b\xea\x73\xea\x6d\xea\x72\xea\x6f\xbf\x60\xea\x71\x00\x00\x00\x00\xbf\x61\x00\x00\xbf\x62\x00\x00\xea\x70\xea\x6e\x00\x00\x00\x00\x00\x00\x00\x00\xc0\xf8\xed\x74\x00\x00\x00\x00\xc0\xf7\xed\x77\xed\x75\xed\x76\x00\x00\x00\x00\xc0\xf9\x00\x00\x00\x00\x00\x00\xf0\x4d\x00\x00\xc2\xa1\xf0\x4e\x00\x00\x00\x00\xc2\x7d\xf0\x4f\xc2\x7e\xf0\x4c\xf0\x50\x00\x00\xf0\x4a\x00\x00\x00\x00\xc3\xa7\xf2\x78\xc3\xa8\xc4\x6f\x00\x00\xf0\x4b\xc4\x70\x00\x00\x00\x00\x00\x00\xc4\xee\xf5\xdf\x00\x00\xc5\x7e\xf6\xf4\xc5\x7d\x00\x00\xf7\xea\xc5\xf5\xc5\xf6\x00\x00\x00\x00\xf9\xcc\x00\x00\x00\x00\xac\xd1\xcf\xde\x00\x00\xb5\x6e\xb5\x6f\xa5\xd5\xa6\xca\xca\x47", /* 7680 */ "\x00\x00\xcb\x71\xa8\x6d\x00\x00\xaa\xba\x00\x00\xac\xd2\xac\xd3\xac\xd4\xd6\xa6\xd2\xcb\xaf\x6f\x00\x00\x00\x00\xb2\xae\xd6\xa5\x00\x00\x00\x00\xda\xb8\xb5\x71\x00\x00\xda\xb7\xb5\x70\x00\x00\x00\x00\xde\xd5\xbd\x4a\xe6\xbb\xe6\xb8\xe6\xb9\xe6\xba\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xed\x78\x00\x00\xf0\x51\x00\x00\x00\x00\x00\x00\xf4\x71\xf4\x70\x00\x00\xf6\xf5\xa5\xd6\xcd\x75\xaf\x70\x00\x00\x00\x00\x00\x00\xb5\x72\xde\xd6\x00\x00\x00\x00\xe2\xe1\x00\x00\xbd\x4b\xea\x74\x00\x00\xf0\x52\xf4\x72\xa5\xd7\x00\x00\x00\x00\xaa\xbb\xac\xd7\xcf\xdf\xac\xd8\xac\xd6\x00\x00\xac\xd5\xd2\xcc\xaf\x71\x00\x00\x00\x00\xaf\x72\xaf\x73\x00\x00\x00\x00\x00\x00\xb2\xb0\xd6\xa7\xb2\xaf\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xda\xb9\xb2\xb1\xb5\x73\xde\xd7\xb7\xf8\xb7\xf9\x00\x00\xba\xc9\x00\x00\xba\xca\xbd\x4c\xbf\x64\xea\x75\xbf\x63\x00\x00\xed\x79\xc0\xfa\x00\x00\xf0\x53\xf4\x73\xa5\xd8\xa8\x6e\xcd\x78\xcd\x77\xaa\xbc\xcd\x76\xaa\xbd\xcd\x79\x00\x00\xcf\xe5\xac\xdb\xac\xda\xcf\xe7\xcf\xe6\xac\xdf\x00\x00\xac\xde\x00\x00", /* 7700 */ "\x00\x00\xac\xd9\x00\x00\xcf\xe1\xcf\xe2\xcf\xe3\x00\x00\xac\xe0\xcf\xe0\xac\xdc\xcf\xe4\xac\xdd\x00\x00\x00\x00\x00\x00\x00\x00\xd2\xcf\xd2\xd3\xd2\xd1\xd2\xd0\x00\x00\xd2\xd4\x00\x00\x00\x00\x00\x00\xd2\xd5\xd2\xd6\xd2\xce\x00\x00\xd2\xcd\x00\x00\xaf\x75\xaf\x76\x00\x00\xd2\xd7\xd2\xd2\x00\x00\xd6\xb0\x00\x00\xd2\xd8\xaf\x77\xaf\x74\x00\x00\x00\x00\x00\x00\xd6\xaa\x00\x00\xd6\xa9\x00\x00\xd6\xab\xd6\xac\xd6\xae\xd6\xad\xd6\xb2\xb2\xb5\xb2\xb2\xb2\xb6\xd6\xa8\xb2\xb7\xd6\xb1\xb2\xb4\xd6\xaf\xb2\xb3\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xda\xbc\xda\xbe\xda\xba\xda\xbb\x00\x00\x00\x00\xda\xbf\xda\xc1\xda\xc2\xda\xbd\xda\xc0\xb5\x74\x00\x00\x00\x00\xde\xdb\x00\x00\xde\xe0\xde\xd8\xde\xdc\x00\x00\x00\x00\xde\xe1\xde\xdd\xb7\xfa\xb8\x43\x00\x00\xb7\xfd\xde\xd9\xde\xda\xba\xce\xb8\x46\xb7\xfe\x00\x00\xb8\x44\xb7\xfc\xde\xdf\xb8\x45\xde\xde\xb8\x41\xb7\xfb\xb8\x42\xde\xe2\xe2\xe6\xe2\xe8\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xb8\x40\x00\x00\x00\x00\xe2\xe3\xba\xcc\xe2\xe9\xba\xcd", /* 7780 */ "\xe2\xe7\xe2\xe2\xe2\xe5\xe2\xea\xba\xcb\xe2\xe4\x00\x00\xbd\x4e\xe6\xbf\xe6\xbe\x00\x00\xbd\x51\xbd\x4f\xe6\xbc\xbd\x4d\xe6\xbd\x00\x00\xbd\x50\x00\x00\x00\x00\x00\x00\xea\x7d\x00\x00\xea\xa1\x00\x00\xea\x7e\xea\x76\xea\x7a\xea\x79\xea\x77\xbf\x66\xbf\x67\xbf\x65\xea\x78\xea\x7b\xea\x7c\x00\x00\xbf\x68\x00\x00\xc1\x40\xed\xa3\x00\x00\xc0\xfc\xed\x7b\xc0\xfe\xc1\x41\x00\x00\x00\x00\xc0\xfd\xed\xa2\xed\x7c\xc0\xfb\xed\xa1\xed\x7a\xed\x7e\xed\x7d\x00\x00\x00\x00\xf0\x55\xc2\xa4\xc2\xa5\xc2\xa2\x00\x00\xc2\xa3\x00\x00\x00\x00\xf0\x54\x00\x00\xf2\x7b\x00\x00\x00\x00\xc3\xa9\x00\x00\xf2\x79\xf2\x7a\x00\x00\xf4\x74\xf4\x77\xf4\x75\xf4\x76\xf5\xe0\x00\x00\x00\x00\xc4\xef\xf7\xeb\xf8\xb4\x00\x00\xc5\xf7\xf8\xf8\xf8\xf9\xc6\x66\xa5\xd9\xac\xe1\x00\x00\xda\xc3\x00\x00\xde\xe3\x00\x00\xa5\xda\xa8\x6f\x00\x00\xaa\xbe\x00\x00\xcf\xe8\xcf\xe9\xaf\x78\x00\x00\x00\x00\xda\xc4\xb5\x75\xb8\x47\xc1\x42\xed\xa4\xf2\x7c\xf4\x78\xa5\xdb\x00\x00\x00\x00\x00\x00\xcd\xa1\xcd\x7a\xcd\x7c\xcd\x7e\xcd\x7d\xcd\x7b\xaa\xbf\x00\x00\x00\x00", /* 7800 */ "\x00\x00\x00\x00\xac\xe2\xcf\xf2\x00\x00\xcf\xed\xcf\xea\x00\x00\x00\x00\xcf\xf1\x00\x00\x00\x00\xac\xe4\xac\xe5\xcf\xf0\xcf\xef\xcf\xee\xcf\xeb\xcf\xec\xcf\xf3\xac\xe3\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xaf\x7c\x00\x00\xaf\xa4\xaf\xa3\xd2\xe1\xd2\xdb\xd2\xd9\x00\x00\xaf\xa1\xd6\xb9\xaf\x7a\xd2\xde\xd2\xe2\xd2\xe4\xd2\xe0\xd2\xda\xaf\xa2\xd2\xdf\xd2\xdd\xaf\x79\xd2\xe5\xaf\xa5\xd2\xe3\xaf\x7d\xd2\xdc\x00\x00\xaf\x7e\xaf\x7b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xb2\xb9\x00\x00\xd6\xba\x00\x00\x00\x00\xd6\xb3\xd6\xb5\xd6\xb7\x00\x00\xd6\xb8\xd6\xb6\xb2\xba\x00\x00\xd6\xbb\x00\x00\xd6\xb4\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xda\xc8\xb5\x76\xda\xd0\x00\x00\xda\xc5\x00\x00\xda\xd1\x00\x00\xda\xc6\xda\xc7\x00\x00\x00\x00\xda\xcf\xda\xce\xda\xcb\xb2\xb8\xb5\x77\xda\xc9\xda\xcc\xb5\x78\xda\xcd\xda\xca\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xde\xee\x00\x00\xde\xf2\xb8\x4e\x00\x00\xe2\xf0\xb8\x51", /* 7880 */ "\xde\xf0\xf9\xd6\x00\x00\xde\xed\xde\xe8\xde\xea\xde\xeb\xde\xe4\x00\x00\xb8\x4d\x00\x00\x00\x00\xb8\x4c\x00\x00\xb8\x48\xde\xe7\x00\x00\xb8\x4f\x00\x00\xb8\x50\xde\xe6\xde\xe9\xde\xf1\xb8\x4a\xb8\x4b\xde\xef\xde\xe5\x00\x00\x00\x00\x00\x00\xe2\xf2\xba\xd0\xe2\xf4\xde\xec\xe2\xf6\xba\xd4\xe2\xf7\xe2\xf3\x00\x00\xba\xd1\xe2\xef\xba\xd3\xe2\xec\xe2\xf1\xe2\xf5\xe2\xee\x00\x00\x00\x00\xb8\x49\x00\x00\xe2\xeb\xba\xd2\xe2\xed\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xbd\x54\xe6\xc1\xbd\x58\x00\x00\xbd\x56\x00\x00\x00\x00\xba\xcf\x00\x00\xe6\xc8\xe6\xc9\xbd\x53\x00\x00\x00\x00\xe6\xc7\xe6\xca\xbd\x55\xbd\x52\xe6\xc3\xe6\xc0\xe6\xc5\xe6\xc2\xbd\x59\xe6\xc4\x00\x00\x00\x00\xe6\xc6\xbd\x57\x00\x00\x00\x00\x00\x00\x00\x00\xbf\x6a\xea\xa8\x00\x00\xea\xa2\xea\xa6\xea\xac\xea\xad\xea\xa9\xea\xaa\xea\xa7\x00\x00\xea\xa4\x00\x00\xbf\x6c\xbf\x69\xea\xa3\xea\xa5\x00\x00\xbf\x6b\xea\xab\x00\x00\xc1\x46\x00\x00\x00\x00\xed\xaa\xed\xa5\xc1\x45\x00\x00\x00\x00\xc1\x43\x00\x00\xed\xac\xc1\x44\xed\xa8\xed\xa9\xed\xa6\xed\xad\xf0\x56", /* 7900 */ "\x00\x00\xc1\x47\xed\xa7\x00\x00\xed\xae\xed\xab\x00\x00\x00\x00\x00\x00\xf0\x5a\x00\x00\x00\x00\xf0\x57\x00\x00\xc2\xa6\x00\x00\xf0\x5b\xf0\x5d\xf0\x5c\xf0\x58\xf0\x59\x00\x00\x00\x00\xf2\xa3\x00\x00\xc3\xaa\x00\x00\xf2\x7e\xf2\xa2\xf2\x7d\xf2\xa4\x00\x00\x00\x00\xf2\xa1\x00\x00\xf4\x7a\xf4\x7d\xf4\x79\xc4\x71\xf4\x7b\xf4\x7c\xf4\x7e\xc4\x72\xc4\x74\xc4\x73\xf5\xe1\x00\x00\xf5\xe3\x00\x00\xf5\xe2\x00\x00\x00\x00\x00\x00\xf6\xf6\x00\x00\x00\x00\xf8\xb5\xf8\xfa\xa5\xdc\x00\x00\x00\x00\xcb\x72\xaa\xc0\xcd\xa3\xaa\xc1\xaa\xc2\xcd\xa2\x00\x00\xcf\xf8\xcf\xf7\xac\xe6\xac\xe9\xac\xe8\xac\xe7\xcf\xf4\xcf\xf6\xcf\xf5\x00\x00\x00\x00\xd2\xe8\xaf\xa7\xd2\xec\xd2\xeb\xd2\xea\xd2\xe6\xaf\xa6\xaf\xaa\xaf\xad\x00\x00\x00\x00\xaf\xae\xd2\xe7\xd2\xe9\xaf\xac\xaf\xab\xaf\xa9\xaf\xa8\xd6\xc2\x00\x00\xd6\xc0\xd6\xbc\xb2\xbb\x00\x00\xd6\xbd\xb2\xbc\xd6\xbe\xd6\xbf\xd6\xc1\x00\x00\xb2\xbd\x00\x00\x00\x00\xda\xd5\x00\x00\xda\xd4\xda\xd3\xda\xd2\x00\x00\x00\x00\x00\x00\x00\x00\xde\xf6\xb8\x52\x00\x00\xde\xf3\xde\xf5\x00\x00\xb8\x53", /* 7980 */ "\x00\x00\xb8\x54\xde\xf4\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe3\x41\x00\x00\xe2\xf9\xe2\xfa\x00\x00\xba\xd7\xba\xd5\xba\xd6\xe3\x43\x00\x00\xe3\x42\xe2\xfe\xe2\xfd\xe2\xfc\xe2\xfb\xe3\x40\xe2\xf8\x00\x00\xe6\xcb\xe6\xd0\xe6\xce\x00\x00\x00\x00\x00\x00\xe6\xcd\xe6\xcc\xe6\xcf\x00\x00\xea\xae\x00\x00\xbf\x6d\xc1\x48\xed\xb0\x00\x00\xc1\x49\xed\xaf\xf0\x5f\xf0\x5e\xc2\xa7\x00\x00\xf2\xa5\xc3\xab\xf4\xa1\xc5\xa1\xf6\xf7\x00\x00\xf8\xb7\xf8\xb6\xc9\xa8\xac\xea\xac\xeb\xd6\xc3\x00\x00\xb8\x56\xa5\xdd\xa8\x72\xa8\x71\xa8\x70\x00\x00\x00\x00\x00\x00\xcd\xa4\x00\x00\x00\x00\xaa\xc4\xaa\xc3\x00\x00\xac\xee\x00\x00\xcf\xfa\xcf\xfd\xcf\xfb\x00\x00\xac\xec\xac\xed\x00\x00\x00\x00\xcf\xf9\xcf\xfc\x00\x00\xaf\xb5\x00\x00\x00\x00\x00\x00\xd2\xf3\xd2\xf5\xd2\xf4\xaf\xb2\xd2\xef\x00\x00\x00\x00\xaf\xb0\xaf\xaf\x00\x00\xaf\xb3\xaf\xb1\x00\x00\xaf\xb4\xd2\xf2\xd2\xed\xd2\xee\xd2\xf1\xd2\xf0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd6\xc6\xd6\xc7\xd6\xc5\x00\x00\xd6\xc4\xb2\xbe\x00\x00\x00\x00\x00\x00\x00\x00", /* 7a00 */ "\xb5\x7d\x00\x00\xda\xd6\xda\xd8\xda\xda\xb5\x7c\x00\x00\x00\x00\xb5\x7a\x00\x00\xda\xd7\xb5\x7b\xda\xd9\xb5\x79\x00\x00\x00\x00\xdf\x41\xde\xf7\xde\xfa\xde\xfe\xb8\x5a\xde\xfc\x00\x00\xde\xfb\xde\xf8\xde\xf9\xb8\x58\xdf\x40\xb8\x57\x00\x00\xb8\x5c\xb8\x5b\xb8\x59\x00\x00\xde\xfd\x00\x00\x00\x00\x00\x00\xe3\x49\x00\x00\xe3\x48\x00\x00\x00\x00\xe3\x44\x00\x00\x00\x00\xba\xd8\xe3\x47\xe3\x46\xba\xd9\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xbd\x5e\x00\x00\xe6\xd2\x00\x00\xbd\x5f\xbd\x5b\xbd\x5d\x00\x00\xbd\x5a\xbd\x5c\x00\x00\x00\x00\x00\x00\xea\xaf\x00\x00\xbf\x70\xea\xb1\xea\xb0\x00\x00\xe3\x45\xbf\x72\xbf\x71\xbf\x6e\xbf\x6f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xed\xb5\x00\x00\xed\xb3\xc1\x4a\xed\xb4\x00\x00\xed\xb6\xed\xb2\xed\xb1\x00\x00\x00\x00\xf0\x60\xc2\xaa\xc2\xa8\xc2\xa9\x00\x00\x00\x00\x00\x00\x00\x00\xf2\xa6\xf2\xa7\xc3\xad\x00\x00\xc3\xac\xf4\xa3\xf4\xa4\xf4\xa2\x00\x00\xf6\xf8\xf6\xf9\x00\x00\x00\x00\xa5\xde\xca\x48\xa8\x73\x00\x00\xcd\xa5\xaa\xc6\xaa\xc5\xcd\xa6\x00\x00\x00\x00\xd0\x40\xac\xef", /* 7a80 */ "\xcf\xfe\xac\xf0\x00\x00\x00\x00\xaf\xb6\xd2\xf8\xd2\xf6\xd2\xfc\xaf\xb7\xd2\xf7\xd2\xfb\xd2\xf9\xd2\xfa\x00\x00\x00\x00\xd6\xc8\xd6\xca\x00\x00\xb2\xbf\x00\x00\xd6\xc9\xb2\xc0\xb5\xa2\xb5\xa1\xb5\x7e\xda\xdb\x00\x00\x00\x00\x00\x00\x00\x00\xdf\x44\xb8\x5d\xb8\x5e\x00\x00\xdf\x43\xdf\x42\x00\x00\x00\x00\x00\x00\x00\x00\xe3\x4a\xba\xdb\xba\xda\xe3\x4b\xe3\x4c\x00\x00\xbd\x61\xbd\x60\x00\x00\xea\xb5\xe6\xd3\xe6\xd5\xe6\xd4\xea\xb4\xea\xb2\xea\xb6\xea\xb3\x00\x00\xbf\x73\x00\x00\x00\x00\x00\x00\xed\xb7\xc1\x4b\xed\xb8\xed\xb9\x00\x00\x00\x00\xc2\xab\xc2\xac\x00\x00\xc4\x75\x00\x00\x00\x00\xc5\xd1\xa5\xdf\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd0\x41\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd2\xfd\xaf\xb8\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xb3\xba\xb3\xb9\x00\x00\x00\x00\xb5\xa4\xda\xdd\xb5\xa3\xda\xdc\x00\x00\x00\x00\x00\x00\x00\x00\xdf\x45\x00\x00\xba\xdc\xe3\x4d\xba\xdd\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc4\x76\xf4\xa5\x00\x00\xa6\xcb\xaa\xc7\xcd\xa7\x00\x00\xac\xf2\x00\x00\xac\xf1", /* 7b00 */ "\xd0\x42\xd0\x43\x00\x00\x00\x00\xd3\x40\xd3\x42\xaf\xb9\x00\x00\xd3\x44\xd3\x47\xd3\x45\x00\x00\x00\x00\x00\x00\xd3\x46\xd3\x43\xd2\xfe\xaf\xba\xd3\x48\xd3\x41\x00\x00\x00\x00\x00\x00\x00\x00\xd6\xd3\xb2\xc6\xd6\xdc\xb2\xc3\x00\x00\xd6\xd5\xb2\xc7\x00\x00\xb2\xc1\x00\x00\xd6\xd0\xd6\xdd\xd6\xd1\xd6\xce\xb2\xc5\x00\x00\xb2\xc2\x00\x00\xd6\xd4\xd6\xd7\xb2\xc4\xd6\xd8\xb2\xc8\xd6\xd9\xd6\xcf\xd6\xd6\xd6\xda\xd6\xd2\xd6\xcd\xd6\xcb\x00\x00\x00\x00\xd6\xdb\x00\x00\x00\x00\xda\xdf\x00\x00\x00\x00\x00\x00\x00\x00\xda\xe4\x00\x00\x00\x00\x00\x00\xda\xe0\xda\xe6\xb5\xa7\xd6\xcc\xda\xe1\xb5\xa5\xda\xde\xb5\xac\xda\xe2\xb5\xab\xda\xe3\xb5\xad\xb5\xa8\xb5\xae\xb5\xa9\x00\x00\xb5\xaa\x00\x00\xb5\xa6\x00\x00\xda\xe5\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xb8\x61\xdf\x50\x00\x00\xdf\x53\xdf\x47\xdf\x4c\xdf\x46\xb8\x63\x00\x00\xdf\x4a\x00\x00\x00\x00\x00\x00\xdf\x48\xb8\x62\x00\x00\xdf\x4f\xdf\x4e\xdf\x4b\xdf\x4d\xdf\x49\xba\xe1\xdf\x52\xb8\x5f\xdf\x51\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 7b80 */ "\x00\x00\x00\x00\xe3\x5d\x00\x00\xba\xe8\xe3\x58\x00\x00\xba\xe7\xe3\x4e\x00\x00\xe3\x50\xba\xe0\xe3\x55\xe3\x54\xe3\x57\xba\xe5\xe3\x52\xe3\x51\x00\x00\x00\x00\xba\xe4\xba\xdf\xe3\x53\xba\xe2\xe3\x59\xe3\x5b\x00\x00\xe3\x56\xe3\x4f\xba\xe3\x00\x00\x00\x00\xbd\x69\xba\xde\x00\x00\x00\x00\xe3\x5c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe6\xd9\xbd\x62\x00\x00\xe6\xdb\x00\x00\xbd\x63\x00\x00\x00\x00\xbd\x65\xe6\xde\x00\x00\xe6\xd6\xba\xe6\xe6\xdc\x00\x00\x00\x00\x00\x00\x00\x00\xe6\xd8\x00\x00\xb8\x60\xbd\x68\x00\x00\x00\x00\xbd\x64\x00\x00\xbd\x66\xbd\x67\x00\x00\xbf\x76\xe6\xdd\xe6\xd7\xbd\x6a\x00\x00\xe6\xda\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xea\xc0\xea\xbb\x00\x00\x00\x00\xea\xc5\xbf\x74\xea\xbd\xbf\x78\xea\xc3\xea\xba\xea\xb7\xea\xc6\xc1\x51\xbf\x79\xea\xc2\xea\xb8\xbf\x77\xea\xbc\xbf\x7b\xea\xb9\xea\xbe\xbf\x7a\xea\xc1\xea\xc4\x00\x00\x00\x00\x00\x00\x00\x00\xed\xcb\xed\xcc\xed\xbc\xed\xc3\xed\xc1\x00\x00\x00\x00\xc1\x4f\xed\xc8\xea\xbf\x00\x00\xed\xbf\x00\x00\xed\xc9\xc1\x4e\xed\xbe", /* 7c00 */ "\xed\xbd\xed\xc7\xed\xc4\xed\xc6\x00\x00\xed\xba\xed\xca\xc1\x4c\x00\x00\xed\xc5\xed\xce\xed\xc2\xc1\x50\xc1\x4d\xed\xc0\xed\xbb\xed\xcd\xbf\x75\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf0\x63\x00\x00\x00\x00\xf0\x61\xf0\x67\xc2\xb0\xf0\x65\xf0\x64\xc2\xb2\xf0\x6a\xc2\xb1\x00\x00\xf0\x6b\xf0\x68\xc2\xae\xf0\x69\xf0\x62\xc2\xaf\xc2\xad\xf2\xab\xf0\x66\x00\x00\x00\x00\xf0\x6c\x00\x00\x00\x00\xf2\xa8\x00\x00\x00\x00\x00\x00\xc3\xb2\xc3\xb0\xf2\xaa\x00\x00\xf2\xac\xf2\xa9\xc3\xb1\xc3\xae\xc3\xaf\xc3\xb3\x00\x00\x00\x00\xc4\x78\x00\x00\xf4\xaa\x00\x00\xf4\xa9\xf4\xa7\xf4\xa6\xf4\xa8\x00\x00\xc4\x77\xc4\x79\x00\x00\x00\x00\xc4\xf0\x00\x00\x00\x00\xf5\xe5\xf5\xe4\x00\x00\x00\x00\xf6\xfa\x00\x00\xf6\xfc\xf6\xfe\xf6\xfd\xf6\xfb\x00\x00\x00\x00\xc5\xa3\xc5\xa2\x00\x00\x00\x00\xc5\xd3\xc5\xd2\xc5\xd4\xf7\xed\xf7\xec\x00\x00\xf8\xfb\xf8\xb8\xf8\xfc\xc6\x58\x00\x00\xc6\x59\xf9\x6d\x00\x00\x00\x00\xc6\x7e\xa6\xcc\x00\x00\xcd\xa8\x00\x00\x00\x00\xd0\x45\xd0\x46\xd0\x44\x00\x00\x00\x00\xac\xf3\x00\x00\xd0\x47", /* 7c80 */ "\xd0\x48\xd0\x49\x00\x00\x00\x00\xd3\x49\xd3\x4f\x00\x00\x00\x00\xd3\x4d\xaf\xbb\xd3\x4b\x00\x00\xd3\x4c\xd3\x4e\x00\x00\x00\x00\x00\x00\xd3\x4a\xb2\xc9\x00\x00\xd6\xde\xb2\xcb\xd6\xe0\xb2\xca\xd6\xdf\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xda\xe8\xb5\xaf\x00\x00\xda\xea\xda\xe7\xd6\xe1\x00\x00\xb5\xb0\x00\x00\xf9\xdb\xda\xe9\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xdf\x56\x00\x00\xb8\x64\xdf\x54\xb8\x65\xdf\x55\xb8\x66\x00\x00\x00\x00\x00\x00\xba\xe9\xe3\x61\xe3\x5e\xe3\x60\xba\xea\xba\xeb\xe3\x5f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe6\xdf\x00\x00\x00\x00\xe6\xe0\x00\x00\xbd\x6b\xe6\xe2\xe6\xe1\x00\x00\xa2\x61\x00\x00\xea\xca\xea\xcb\xea\xc7\x00\x00\xea\xc8\xbf\x7c\xbf\x7d\xea\xc9\x00\x00\xc1\x57\x00\x00\x00\x00\xc1\x53\xc1\x58\xc1\x54\xc1\x56\xc1\x52\x00\x00\xc1\x55\x00\x00\x00\x00\x00\x00\x00\x00\xc2\xb3\xed\xcf\x00\x00\xf2\xae\x00\x00\xf2\xad\x00\x00\xf4\xab\xc4\x7a\xc4\x7b\xf7\x41\xf5\xe6\x00\x00\xf7\x40\x00\x00\xf8\xfd\xf9\xa4\xa6\xcd\x00\x00\x00\x00\xa8\x74\x00\x00\xcd\xa9\xaa\xc8\x00\x00", /* 7d00 */ "\xac\xf6\xd0\x4c\xac\xf4\xd0\x4a\xac\xf9\xac\xf5\xac\xfa\xac\xf8\xd0\x4b\xac\xf7\xaf\xbf\xaf\xbe\xd3\x5a\xaf\xc7\xd3\x53\xd3\x59\xaf\xc3\xd3\x52\xd3\x58\xd3\x56\xaf\xc2\xaf\xc4\xd3\x55\xaf\xbd\xd3\x54\xaf\xc8\xaf\xc5\xaf\xc9\xaf\xc6\xd3\x51\xd3\x50\xd3\x57\xaf\xc0\xaf\xbc\xaf\xc1\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd6\xf0\xd6\xe9\x00\x00\xb5\xb5\xd6\xe8\x00\x00\xb2\xcf\xb2\xd6\xb2\xd3\xb2\xd9\xb2\xd8\xb2\xd4\x00\x00\xd6\xe2\xd6\xe5\x00\x00\xd6\xe4\xb2\xd0\xd6\xe6\xd6\xef\xb2\xd1\xd6\xe3\xd6\xec\xd6\xed\xb2\xd2\xd6\xea\xb2\xd7\xb2\xcd\xb2\xd5\xd6\xe7\xb2\xcc\xd6\xeb\x00\x00\x00\x00\xd6\xee\x00\x00\x00\x00\x00\x00\xda\xfb\xda\xf2\xb5\xb2\xda\xf9\xda\xf6\xda\xee\xda\xf7\xb5\xb4\xda\xef\x00\x00\xda\xeb\x00\x00\x00\x00\xb8\x6c\xda\xf4\x00\x00\xb5\xb1\xda\xfa\x00\x00\xb5\xb8\xb5\xba\xda\xed\x00\x00\x00\x00\xb5\xb9\xda\xf0\xb5\xb3\xda\xf8\xda\xf1\xda\xf5\x00\x00\xda\xf3\xb5\xb6\xda\xec\xb5\xbb\xb2\xce\xb5\xb7\xb5\xbc\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xb8\x68\xdf\x5d\xdf\x5f\xdf\x61\xdf\x65\x00\x00\xdf\x5b", /* 7d80 */ "\xdf\x59\xb8\x6a\x00\x00\xdf\x60\xdf\x64\xdf\x5c\xdf\x58\x00\x00\xdf\x57\x00\x00\x00\x00\x00\x00\xdf\x62\xdf\x5a\xdf\x5e\xb8\x6b\x00\x00\xb8\x69\xdf\x66\xb8\x67\xdf\x63\x00\x00\xe3\x72\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xba\xee\xe3\x6a\xbd\x78\xe3\x74\xba\xf1\xe3\x78\xba\xf7\xe3\x65\x00\x00\x00\x00\xe3\x75\xe3\x62\x00\x00\xe3\x77\xe3\x66\x00\x00\xba\xfe\xba\xfb\xe3\x76\xe3\x70\xba\xed\xba\xf5\xba\xf4\x00\x00\xba\xf3\xba\xf9\x00\x00\xe3\x63\xba\xfa\xe3\x71\xba\xf6\xba\xec\xe3\x73\xba\xef\xba\xf0\xba\xf8\xe3\x68\xe3\x67\xe3\x64\x00\x00\xe3\x6c\xe3\x69\xe3\x6d\xba\xfd\x00\x00\xe3\x79\xba\xf2\xe3\x6e\xe3\x6f\x00\x00\xe3\x6b\x00\x00\x00\x00\x00\x00\xba\xfc\x00\x00\x00\x00\x00\x00\x00\x00\xe6\xe7\xbd\x70\xbd\x79\xbd\x75\xe6\xe4\x00\x00\xbd\x72\xbd\x76\xe6\xf0\xbd\x6c\xe6\xe8\x00\x00\xbd\x74\x00\x00\x00\x00\xe6\xeb\xe6\xe6\xbd\x73\xbd\x77\xe6\xe5\x00\x00\xbd\x71\x00\x00\xe6\xef\xbd\x6e\xe6\xee\xe6\xed\xbd\x7a\xe5\x72\xbd\x6d\x00\x00\xe6\xec\xe6\xe3\x00\x00\xbd\x7b\xe6\xea\xbd\x6f\x00\x00\x00\x00\x00\x00\x00\x00", /* 7e00 */ "\x00\x00\x00\x00\x00\x00\xe6\xe9\x00\x00\x00\x00\x00\x00\x00\x00\xbf\xa2\xbf\xa7\xbf\x7e\xea\xd8\xea\xcf\xea\xdb\xea\xd3\xea\xd9\xbf\xa8\xbf\xa1\xea\xcc\xea\xd2\xea\xdc\xea\xd5\xea\xda\xea\xce\x00\x00\x00\x00\xea\xd6\xbf\xa3\xea\xd4\xbf\xa6\xbf\xa5\xea\xd0\xea\xd1\xea\xcd\xea\xd7\xbf\xa4\xea\xde\xea\xdd\x00\x00\x00\x00\x00\x00\xed\xda\xed\xd6\xc1\x5f\x00\x00\xed\xd0\xc1\x59\xc1\x69\xed\xdc\xc1\x61\xc1\x5d\xed\xd3\xc1\x64\xc1\x67\xed\xde\xc1\x5c\xed\xd5\xc1\x65\xed\xe0\xed\xdd\xed\xd1\xc1\x60\xc1\x5a\xc1\x68\xed\xd8\xc1\x63\xed\xd2\xc1\x5e\xed\xdf\xc1\x62\xc1\x5b\xed\xd9\xc1\x66\xed\xd7\x00\x00\x00\x00\xed\xdb\x00\x00\x00\x00\x00\x00\xf0\x6e\xf0\x74\xc2\xb9\xf0\x77\xc2\xb4\xc2\xb5\xf0\x6f\xf0\x76\xf0\x71\xc2\xba\xc2\xb7\x00\x00\xf0\x6d\x00\x00\xc2\xb6\xf0\x73\xf0\x75\xc2\xb8\xf0\x72\xf0\x70\x00\x00\x00\x00\x00\x00\x00\x00\xf2\xb8\xc3\xb7\xc3\xb8\xc3\xb4\x00\x00\xc3\xb5\x00\x00\xf2\xb4\xf2\xb2\x00\x00\xf2\xb6\xc3\xba\xf2\xb7\xf2\xb0\xf2\xaf\xf2\xb3\xf2\xb1\xc3\xb6\xf2\xb5\xf4\xac\xc4\x7e\xc4\x7d\xf4\xad\x00\x00", /* 7e80 */ "\xf4\xaf\xf4\xae\xc4\xa1\x00\x00\x00\x00\x00\x00\xf5\xeb\xf5\xe8\xf5\xe9\x00\x00\xf5\xe7\xf5\xea\xc4\xf2\xf5\xec\x00\x00\xc4\xf1\x00\x00\xf7\x42\x00\x00\xc5\xd5\xc5\xd7\xf7\xee\xc5\xd6\xf8\xb9\xf9\x40\xf9\x42\xf8\xfe\xf9\x41\xc6\x6c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 7f00 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa6\xce\x00\x00\xac\xfb\xd2\x6f\xaf\xca\x00\x00\x00\x00\xb2\xda\xda\xfc\xda\xfd\x00\x00\x00\x00\x00\x00\xea\xdf\xc1\x6a\xed\xe1\x00\x00\x00\x00\xc2\xbb\x00\x00\xf2\xba\xf2\xb9\xc4\xa2\xf5\xed\x00\x00\xf7\x43\xc5\xf8\xca\x49\x00\x00\x00\x00\xaa\xc9\xa8\x75\x00\x00\x00\x00\xd0\x4d\x00\x00\x00\x00\xd3\x60\xd3\x5b\xd3\x5f\xd3\x5d\xaf\xcb\xd3\x5e\xd3\x5c\x00\x00\xd6\xf1\x00\x00\xda\xfe\xdb\x40\xdf\x69\xdf\x6a\xb8\x6e\xb8\x6f\xdf\x68\xdf\x6b\xdf\x67\xb8\x6d\x00\x00\xbb\x40\x00\x00\xb8\x70\xe3\x7a\x00\x00\xbd\x7c\xe6\xf1\xbd\x7d\x00\x00\xbf\xa9\xea\xe2\xea\xe0\xea\xe1\xed\xe4\xed\xe3\xed\xe2", /* 7f80 */ "\x00\x00\x00\x00\x00\x00\xf2\xbb\x00\x00\xc3\xb9\xf2\xbc\xf7\x44\xc5\xf9\xf8\xba\xa6\xcf\xaa\xcb\xaa\xca\xd0\x4f\xac\xfc\x00\x00\x00\x00\xd0\x4e\xd3\x62\x00\x00\xaf\xcc\xd6\xf2\xd3\x61\x00\x00\x00\x00\x00\x00\xb2\xdc\xd6\xf5\xd6\xf3\xd6\xf4\xb2\xdb\x00\x00\xdb\x42\xdb\x43\xdb\x41\x00\x00\xb8\x73\xdf\x6d\xdf\x6c\xdf\x6e\xb8\x72\xb8\x71\x00\x00\x00\x00\xe6\xf2\xe6\xf4\x00\x00\xbd\x7e\xe6\xf3\xea\xe3\xbf\xaa\xf0\x79\x00\x00\xf0\x78\xc3\xbb\xf2\xbd\xc3\xbd\xc3\xbc\xf4\xb0\xf5\xee\xc4\xf3\xa6\xd0\xd0\x50\xac\xfd\xd3\x65\xaf\xce\xd3\x64\xd3\x63\x00\x00\xaf\xcd\x00\x00\xd6\xfb\x00\x00\xd6\xfd\xd6\xf6\xd6\xf7\xb2\xdd\xd6\xf8\xb2\xde\xd6\xfc\xd6\xf9\xd6\xfa\xb2\xdf\x00\x00\xb5\xbe\xb5\xbf\x00\x00\xdb\x44\x00\x00\x00\x00\x00\x00\xdf\x6f\xdf\x70\x00\x00\xe3\x7e\xbb\x43\xbb\x41\xbb\x42\xe3\x7b\xe3\x7c\x00\x00\xe3\x7d\xe6\xf9\x00\x00\xe6\xfa\xbd\xa1\xe6\xf7\xe6\xf6\xe6\xf8\xe6\xf5\xbf\xad\xea\xe4\xbf\xab\xbf\xac\xed\xe6\xc1\x6b\xed\xe5\xef\xa8\x00\x00\xf0\x7a\xf0\x7b\xc2\xbc\x00\x00\xc2\xbd\xc1\x6c\xf2\xbe\xf2\xbf\xf4\xb1", /* 8000 */ "\xc4\xa3\xa6\xd1\x00\x00\xa6\xd2\xac\xfe\xaa\xcc\xaf\xcf\xd0\x51\x00\x00\x00\x00\x00\x00\xb5\xc0\xa6\xd3\xad\x41\xd0\x52\xd0\x53\xad\x40\xad\x42\xa6\xd4\x00\x00\xd0\x54\xaf\xd1\xd3\x66\xaf\xd3\xaf\xd0\xaf\xd2\x00\x00\xd7\x41\xb2\xe0\x00\x00\xd7\x40\xd6\xfe\x00\x00\xdf\x71\x00\x00\x00\x00\xe3\xa1\x00\x00\xbd\xa2\x00\x00\xbf\xae\xea\xe6\xea\xe5\x00\x00\xed\xe7\x00\x00\x00\x00\x00\x00\xf5\xef\x00\x00\x00\x00\xa6\xd5\xcb\x73\xcd\xaa\xad\x43\xd0\x55\x00\x00\xd3\x68\x00\x00\x00\x00\x00\x00\xaf\xd4\xd3\x67\xaf\xd5\x00\x00\x00\x00\x00\x00\xd7\x43\x00\x00\x00\x00\xb2\xe2\xd7\x42\xd7\x44\x00\x00\xb2\xe1\x00\x00\x00\x00\x00\x00\x00\x00\xdb\x46\xdb\x47\xdb\x45\xb5\xc1\x00\x00\x00\x00\x00\x00\xb8\x74\x00\x00\xb8\x75\x00\x00\xbb\x45\x00\x00\xe3\xa3\xe3\xa2\xbb\x44\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe6\xfb\x00\x00\x00\x00\xe6\xfc\x00\x00\x00\x00\x00\x00\x00\x00\xea\xe7\x00\x00\x00\x00\xc1\x70\xc1\x6f\xc1\x6d\xc1\x6e\xc1\x71\x00\x00\xf0\x7c\xc2\xbf\xc2\xbe\xf2\xc0\xf4\xb2\x00\x00\x00\x00\x00\x00\xc5\xa5\xc5\xa4\xa6\xd6", /* 8080 */ "\x00\x00\x00\x00\xd1\xfb\x00\x00\xb8\x77\xb5\xc2\xb8\x76\xbb\x46\x00\x00\xa6\xd7\xc9\xa9\xa6\xd8\xa6\xd9\x00\x00\x00\x00\xcd\xab\xcb\x76\x00\x00\xcb\x77\xa8\x77\x00\x00\xcb\x74\xa8\x76\x00\x00\xa8\x79\xcb\x75\xa8\x7b\xa8\x7a\xcb\x78\xa8\x78\x00\x00\x00\x00\x00\x00\xaa\xd1\xaa\xcf\xcd\xad\x00\x00\xaa\xce\x00\x00\x00\x00\x00\x00\xaa\xd3\xaa\xd5\xaa\xd2\x00\x00\xcd\xb0\xcd\xac\xaa\xd6\x00\x00\xaa\xd0\xa8\x7c\x00\x00\xaa\xd4\xcd\xaf\x00\x00\x00\x00\xcd\xae\x00\x00\xaa\xcd\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd0\x5b\xad\x47\xad\x48\xd0\x5d\x00\x00\xd0\x57\xd0\x5a\xd0\x63\xd0\x61\x00\x00\xad\x49\xd0\x67\xad\x4c\xd0\x64\xd0\x5c\xd0\x59\x00\x00\x00\x00\xdb\x49\xd0\x62\xad\x44\xd0\x65\xd0\x56\xd0\x5f\xad\x46\xad\x4b\xd0\x60\xad\x4f\xad\x4d\x00\x00\xd0\x58\xad\x4a\x00\x00\xd0\x5e\xad\x4e\xad\x45\xd0\x66\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xaf\xda\x00\x00\xaf\xe3\xaf\xd8\xaf\xd6\xd3\x6a\xaf\xde\xaf\xdb\xd3\x6c\x00\x00\x00\x00\xaf\xdd\xd3\x6b\xd3\x69\xd3\x6e\xaf\xe2\xaf\xe0\xdb\x48\x00\x00", /* 8100 */ "\xd3\x6f\xd3\x6d\xaf\xd7\x00\x00\x00\x00\xaf\xd9\xaf\xdc\x00\x00\xaf\xdf\x00\x00\xaf\xe1\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd7\x4e\xb2\xe4\x00\x00\xd7\x45\xd7\x47\x00\x00\xd7\x48\x00\x00\xd7\x50\xd7\x4c\xd7\x4a\x00\x00\xd7\x4d\xd7\x51\xb2\xe5\xb2\xe9\xd7\x46\x00\x00\xd7\x4f\x00\x00\xb2\xe7\x00\x00\xb2\xe6\xd7\x4b\xd7\x49\x00\x00\xb2\xe3\xb2\xe8\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xb5\xc8\xdb\x51\x00\x00\x00\x00\xdb\x4f\xb5\xca\x00\x00\x00\x00\x00\x00\x00\x00\xdb\x4a\xdf\xa1\x00\x00\xb5\xc9\xdb\x4e\x00\x00\x00\x00\xdb\x4b\xb5\xc5\xb5\xcb\xdb\x50\xb5\xc7\xdb\x4d\xbb\x47\xb5\xc6\xdb\x4c\xb5\xcc\xb5\xc4\xb5\xc3\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xdf\x77\xdf\x75\x00\x00\xdf\x7b\x00\x00\xdf\x73\xdf\xa2\xdf\x78\x00\x00\xdf\x72\xb8\x7b\xb8\xa3\xdf\x7d\x00\x00\xdf\x76\x00\x00\xb8\x7e\x00\x00\x00\x00\xb8\x7c\xdf\x7e\xb8\x79\xb8\x78\xdf\x79\xb8\x7d\xb5\xcd\x00\x00\xdf\x7c\xdf\x74\xb8\x7a\xb8\xa1\xb8\xa2\x00\x00\x00\x00\x00\x00\x00\x00\xbb\x4c", /* 8180 */ "\xbb\x48\x00\x00\xbb\x4d\xe3\xa6\x00\x00\x00\x00\xe3\xa5\xe3\xa7\xbb\x4a\xe3\xa4\xbb\x4b\xe3\xaa\xe3\xa9\xe3\xa8\x00\x00\xbb\x49\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe7\x41\x00\x00\xe7\x44\xbd\xa8\xe7\x43\xbd\xa7\xbd\xa3\xbd\xa4\xbd\xa5\xe7\x40\xe6\xfe\xbd\xa6\x00\x00\xe7\x42\xe6\xfd\x00\x00\x00\x00\xea\xe9\xea\xf3\xbf\xb1\xbf\xb0\x00\x00\xea\xed\xea\xef\x00\x00\xea\xea\x00\x00\xea\xee\xea\xe8\xea\xf1\xbf\xaf\xea\xf0\xea\xec\x00\x00\xea\xf2\x00\x00\xea\xeb\xc1\x74\xed\xe8\xed\xee\xc1\x78\xc1\x7a\xc1\x77\xc1\x76\x00\x00\xc1\x75\xc1\x73\xed\xe9\xed\xec\xc1\x72\xed\xed\x00\x00\xc1\x79\xed\xeb\x00\x00\xed\xea\xc2\xc0\x00\x00\xc2\xc1\xf0\xa1\xf0\x7d\xf0\x7e\x00\x00\x00\x00\xf2\xc2\x00\x00\xf2\xc1\xc3\xbe\xf4\xb4\xc4\xa4\xf4\xb3\x00\x00\xf5\xf0\xf7\x45\xc5\xa6\xf9\x43\xf9\x44\xc5\xd8\xa6\xda\x00\x00\xaa\xd7\xdb\x52\xbb\x4e\xc1\x7b\xed\xef\xa6\xdb\x00\x00\xaf\xe5\xaf\xe4\xdb\x53\x00\x00\x00\x00\x00\x00\xea\xf4\xa6\xdc\xad\x50\x00\x00\x00\x00\xdb\x54\xdb\x55\xdb\x56\xbb\x4f\xbf\xb2\xa6\xdd\x00\x00\xaa\xd8\xd0\x68", /* 8200 */ "\xaf\xe6\xd3\x70\xb2\xea\x00\x00\xdb\x57\xb8\xa4\x00\x00\xbb\x50\xbf\xb3\xc1\x7c\xc2\xc2\xf4\xb5\xa6\xde\xaa\xd9\x00\x00\x00\x00\xaf\xe7\xd7\x52\xb5\xce\x00\x00\xbb\x51\xe3\xab\xe7\x45\x00\x00\x00\x00\x00\x00\x00\x00\xa6\xdf\xb5\xcf\xdf\xa3\xbb\x52\xa6\xe0\xcd\xb1\xd0\x69\xad\x51\x00\x00\x00\x00\xd3\x72\x00\x00\x00\x00\xaf\xea\x00\x00\xaf\xe8\xaf\xe9\xaf\xeb\x00\x00\x00\x00\xd3\x71\x00\x00\x00\x00\xd7\x57\xd7\x54\xd7\x56\xb2\xeb\xb2\xed\xb2\xec\xd7\x53\xb2\xee\xd7\x55\x00\x00\xdb\x58\xdb\x59\x00\x00\xdb\x5a\xdf\xa6\x00\x00\xdf\xa7\x00\x00\xdf\xa5\xdf\xa8\x00\x00\xb8\xa5\x00\x00\xdf\xa4\x00\x00\xbb\x53\x00\x00\x00\x00\xe7\x4a\xe7\x46\xe7\x49\xe7\x4b\xe7\x48\xe7\x47\x00\x00\xea\xf5\xea\xf6\xea\xf7\xbf\xb4\xbf\xb5\xed\xf1\xed\xf0\xed\xf2\x00\x00\xf0\xa3\xf0\xa2\x00\x00\xf2\xc4\x00\x00\xf2\xc5\xf2\xc3\x00\x00\xc4\xa5\x00\x00\xf4\xb6\xf4\xb7\x00\x00\xf7\x46\xf7\xef\xf8\xbb\xa6\xe1\xa8\x7d\x00\x00\xc1\x7d\xa6\xe2\x00\x00\xd7\x58\xdb\x5b\x00\x00\xc6\x41\xca\x4a\x00\x00\x00\x00\x00\x00\xca\x4b\xca\x4d\xa6\xe3\xca\x4e", /* 8280 */ "\xca\x4c\x00\x00\x00\x00\xcb\xa2\xcb\xa3\xcb\x7b\x00\x00\x00\x00\x00\x00\x00\x00\xcb\xa1\xa8\xa1\x00\x00\xa8\xa2\xcb\x7c\xcb\x7a\xcb\x79\xcb\x7d\xa8\x7e\xcb\x7e\xd0\x6a\x00\x00\x00\x00\x00\x00\xcd\xb6\xaa\xdc\xcd\xb5\xcd\xb7\x00\x00\xaa\xdb\xcd\xbc\xaa\xdf\xcd\xb2\xcd\xc0\xcd\xc6\xaa\xe6\xcd\xc3\xaa\xe3\x00\x00\xcd\xb9\xcd\xbf\xcd\xc1\x00\x00\xcd\xb4\xaa\xe2\xaa\xdd\xcd\xba\xaa\xe4\xaa\xe7\xaa\xe1\x00\x00\xaa\xda\xcd\xbe\xcd\xb8\xcd\xc5\xaa\xe9\xaa\xe5\xaa\xe0\xcd\xbd\xaf\xec\xcd\xbb\xaa\xde\xaa\xe8\x00\x00\xcd\xb3\x00\x00\xcd\xc2\xcd\xc4\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xad\x62\xad\x5c\xad\x64\xad\x61\xd0\x71\xd0\x74\xad\x5d\x00\x00\xd0\x6b\x00\x00\xad\x56\xad\x60\x00\x00\xad\x63\xad\x65\xd0\xa2\xd0\x77\x00\x00\xad\x55\xd0\xa1\xad\x59\xad\x57\xad\x52\xd0\x6f\x00\x00\xd0\x7e\xd0\x73\xd0\x76\xd0\xa5\x00\x00\xad\x66\xd0\x7d\xad\x5e\xd0\x78\xd0\xa4\xd0\x75\xd0\x79\xd0\x7c\x00\x00\x00\x00\xd0\x6d\xd0\xa3\xd0\x7b\x00\x00\x00\x00\xd0\x6c\x00\x00", /* 8300 */ "\xd0\x70\xad\x5f\xad\x5a\xad\x53\xad\x58\xad\x54\xad\x67\xd0\x6e\xd3\xa5\xad\x5b\x00\x00\x00\x00\xd0\x7a\xce\x41\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd3\xa8\xaf\xfa\x00\x00\xd3\x76\x00\x00\xd3\xa3\xd3\x7d\x00\x00\xd3\xb2\x00\x00\xd3\xaa\x00\x00\xd3\x7e\x00\x00\xd3\xa9\xd3\x78\xd3\x7c\xd3\xb5\xaf\xfd\xd3\xad\xd3\xa4\xaf\xed\xd3\xb3\xd3\x74\x00\x00\xd3\xac\x00\x00\xaf\xfc\xaf\xf7\xd3\x73\xaf\xf5\xaf\xf4\xaf\xf9\xd3\xab\xaf\xf1\xaf\xf8\xd0\x72\xdb\x5c\xd3\xa6\x00\x00\x00\x00\xd3\x7a\xaf\xfb\xd3\x7b\xd3\xa1\xaf\xfe\xd3\x75\xd3\xaf\x00\x00\xd3\xae\xd3\xb6\xaf\xf3\xaf\xf0\xd3\xb4\xd3\xb0\xd3\xa7\xd3\xa2\xaf\xf6\xaf\xf2\xd3\x77\xaf\xee\xd3\xb1\xaf\xef\x00\x00\xd3\x79\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd7\x5e\xd7\x60\xd7\x65\xd7\x79\xb2\xfc\xb2\xf2\x00\x00\xd7\x5d\xb2\xfd\xb2\xfe\xd7\x68\xd7\x6f\xd7\x75", /* 8380 */ "\x00\x00\xd7\x62\x00\x00\xd7\x69\x00\x00\x00\x00\xb3\x40\xd7\x77\xd7\x72\xb2\xfa\xb2\xf8\xd7\x6e\xd7\x6a\xd7\x5c\xb2\xef\xd7\x61\xd7\x59\x00\x00\xb2\xf7\xb2\xf9\xd7\x66\xd7\x63\xb2\xf4\xd7\x73\xb2\xf1\xd7\x64\xd7\x7a\xd7\x6c\x00\x00\xd7\x6b\xb2\xf0\x00\x00\xb2\xfb\x00\x00\xb2\xf3\xd7\x5a\xd7\x5f\xd7\x70\xd7\x76\xb3\x41\xd7\x5b\xd7\x67\xd7\x6d\xb2\xf6\x00\x00\x00\x00\xd7\x78\xd7\x71\xd7\x74\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xb2\xf5\x00\x00\xdb\x6c\xdb\x60\xb5\xd7\xdb\x7d\xdb\xa7\xdb\xaa\xb5\xd5\xdb\x68\xdb\xa3\xdb\x69\xdb\x77\xb5\xe2\xdb\x73\xb5\xdf\x00\x00\xdb\x74\xdb\x5d\x00\x00\xdb\xa4\x00\x00\x00\x00\xb5\xe8\xdb\xa1\xdb\x75\xdb\xac\xdb\x70\xdf\xc8\x00\x00\xdb\xaf\xb5\xe6\xdb\x6e\xdb\x7a\xb5\xe9\xb5\xd4\xdb\x72\xdb\xad\xdb\x6b\xdb\x64\xdb\x6f\x00\x00\xdb\x63\xdb\x61\xb5\xd0\xdb\xa5\xdb\x6a\xdb\xa8\x00\x00\xdb\xa9\xb5\xd8\xb5\xdd\xb5\xd9\xb5\xe1\xdb\x7e\xb5\xda\xdb\x76\xdb\x66\x00\x00\xb5\xd2\xdb\x5e\xdb\xa2\xdb\xab\xdb\x65\xb5\xe0\xdb\xb0\xdb\x71", /* 8400 */ "\x00\x00\xdb\x6d\x00\x00\xb5\xd1\xb5\xe5\x00\x00\xdb\x7c\xb5\xe7\x00\x00\xdb\x78\xb5\xdc\xb5\xd6\xb5\xde\xb5\xd3\xb5\xe4\xdb\x79\xdb\x67\xdb\x7b\xdb\x62\xdb\xa6\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xdb\xae\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xdb\x5f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xdf\xc7\x00\x00\xdf\xdd\xb8\x55\xdf\xcc\x00\x00\xdf\xca\xdf\xb5\xb8\xa9\xdf\xc5\xdf\xd9\xdf\xc1\xb8\xb1\xdf\xd8\xdf\xbf\xb5\xe3\xdf\xcf\xdf\xc0\xdf\xd6\xb8\xb0\xb8\xa8\x00\x00\xdf\xaa\xdf\xb2\x00\x00\xdf\xcb\xdf\xc3\xdf\xdc\xdf\xc6\xb8\xb6\xdf\xd7\x00\x00\xb8\xad\x00\x00\xdf\xc9\xdf\xd1\xdf\xb6\xdf\xd0\x00\x00\xdf\xe1\xdf\xb1\xdf\xd2\x00\x00\xdf\xdf\x00\x00\xdf\xab\xb5\xdb\x00\x00\xdf\xb9\xdf\xb8\xb8\xaf\x00\x00\xdf\xbc\xdf\xbe\xdf\xcd\xdf\xde\xb8\xb2\x00\x00\xb8\xb3\x00\x00\xdf\xb0\xb8\xab\xdf\xb4\xdf\xda\xb8\xb4\x00\x00\xb8\xac\xb8\xae\xb8\xb5\xdf\xe0\xdf\xd3\xdf\xce\x00\x00\x00\x00\xdf\xbb\xdf\xba\xb8\xaa\xdf\xac\xb8\xa7\xdf\xc4\xdf\xad\xdf\xc2\x00\x00\x00\x00\xdf\xb7\xdf\xdb\x00\x00", /* 8480 */ "\x00\x00\x00\x00\xb8\xa6\x00\x00\x00\x00\x00\x00\xdf\xb3\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xdf\xaf\xdf\xd5\xdf\xae\xbb\x60\xe3\xd3\x00\x00\x00\x00\xe3\xc2\x00\x00\x00\x00\xe3\xac\xe3\xca\xbb\x58\xe3\xbb\xe3\xc5\xbb\x5b\xe3\xbe\xbb\x59\xe3\xaf\xe3\xcd\xe3\xae\xe3\xc1\x00\x00\xe3\xad\x00\x00\x00\x00\xe3\xbf\xe3\xc8\xe3\xc6\xe3\xba\xe3\xb5\xe3\xb3\x00\x00\xe3\xb4\xe3\xc7\xe3\xd2\xe3\xbc\xbb\x5a\x00\x00\xe3\xb7\x00\x00\xe3\xcb\x00\x00\xbb\x5d\xe3\xb6\xe3\xb0\xe3\xc0\xbb\x61\x00\x00\x00\x00\xbb\x55\xbb\x5e\xe3\xb8\xe3\xb2\x00\x00\xbb\x57\xdf\xd4\xbb\x56\xe3\xc3\x00\x00\xbb\x54\xbb\x63\xbb\x5c\xe3\xc4\xe3\xb9\xe3\xb1\xe3\xcc\xe3\xbd\xbb\x62\xe3\xd0\xbb\x5f\xe3\xcf\x00\x00\xe3\xc9\xe3\xce\x00\x00\x00\x00\x00\x00\xe3\xd1\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe7\x73\xe7\x74\xe7\x67\xe7\x66\xe7\x62\xbd\xb4\x00\x00\xbd\xac\xe7\x76\xe7\x75\xdf\xa9\xe7\x5f\xe7\x63\xe7\x5d\x00\x00\xe7\x70\xe7\x61\x00\x00\xe7\x77\xe7\x5a\xe7\x58\xe7\x64\xe7\x6e\xe7\x69\xbd\xb6", /* 8500 */ "\xe7\x4f\x00\x00\xe7\x6d\x00\x00\x00\x00\x00\x00\xbd\xb7\xdf\xbd\xe7\x5b\xe7\x52\xe7\x55\xe7\x7b\xe7\x5c\xe7\x53\xe7\x51\xe7\x4e\x00\x00\xbd\xb0\xe7\x65\xbd\xaf\xbd\xb3\xe7\x60\xe7\x68\xbd\xa9\xe7\x78\xe7\x7c\xbd\xab\x00\x00\xe7\x57\xe7\x6b\xe7\x6f\xe7\x54\xe7\x79\xbd\xb2\x00\x00\xbd\xb1\xe7\x4c\xbd\xb5\xe7\x72\xe7\x56\xe7\x6a\xe7\x50\xe7\x5e\xe7\x59\xbd\xad\xbd\xae\xe7\x6c\xe7\x7d\xe7\x7a\xe7\x71\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe7\x4d\x00\x00\xbd\xaa\xeb\x49\x00\x00\xeb\x40\xeb\x43\x00\x00\xbf\xbb\xeb\x45\xea\xf9\xeb\x41\xeb\x47\xbf\xb8\xbf\xbc\xbf\xb6\x00\x00\x00\x00\xea\xfb\xeb\x4c\x00\x00\x00\x00\xeb\x46\x00\x00\xea\xfc\xeb\x55\xeb\x4f\xea\xf8\xee\x46\xea\xfe\xbf\xb7\x00\x00\xeb\x4a\x00\x00\xeb\x54\xbf\xbf\x00\x00\xeb\x51\xea\xfd\xeb\x44\xeb\x48\xeb\x42\xeb\x56\xeb\x53\xeb\x50\xbf\xb9\xbf\xba\xbf\xbe\xea\xfa\xeb\x57\xbf\xbd\xeb\x4d\x00\x00\x00\x00\xeb\x4b\x00\x00\x00\x00\x00\x00\xeb\x4e\xee\x53\xee\x40\xee\x45\xee\x52\xee\x44\xed\xfb\xee\x41\x00\x00\xc1\xa2\x00\x00", /* 8580 */ "\xed\xf4\xee\x4d\xee\x4f\xed\xf3\xc1\xa1\xee\x51\xee\x49\xc1\xa8\xee\x50\xee\x42\xc1\xaa\xed\xf9\xeb\x52\xee\x4a\xee\x47\xed\xf5\xee\x55\xc1\xa4\x00\x00\x00\x00\xc1\xa5\xed\xf7\xee\x48\x00\x00\xee\x54\xee\x4b\xed\xfd\xc1\xa7\xc1\xa3\xee\x4c\xed\xfe\xee\x56\xed\xf8\xee\x43\xee\x4e\xed\xfa\xed\xfc\x00\x00\xc2\xcb\xed\xf6\xc1\xa9\xc2\xc4\xc1\x7e\x00\x00\x00\x00\x00\x00\x00\x00\xc1\xa6\xc2\xc8\xf0\xb3\x00\x00\xf0\xa9\xf0\xa4\xf0\xaa\xf0\xb4\xf0\xb8\xf0\xb7\xc2\xca\xc2\xc9\x00\x00\x00\x00\xf0\xab\xf0\xb9\xf0\xae\xf0\xa6\x00\x00\xf0\xa8\xf0\xa7\xf0\xad\xf0\xb2\xf0\xa5\xf0\xac\xf0\xb1\xc2\xc7\x00\x00\xf0\xaf\x00\x00\xc2\xc5\xf0\xb0\xc2\xc3\xc2\xc6\xf2\xd5\xf0\xb5\x00\x00\x00\x00\xc3\xc2\x00\x00\xf2\xcd\xf2\xd1\xf2\xc9\xf2\xcc\x00\x00\xf2\xd4\xc3\xc0\xf2\xd9\xf2\xd2\x00\x00\xf2\xca\xf2\xda\xf2\xd3\xc3\xc3\xc3\xc4\xf2\xd7\x00\x00\xf2\xcb\xc3\xbf\xc3\xc1\xf2\xc6\xf2\xce\xf2\xc8\x00\x00\xf2\xd8\xf2\xd6\xf2\xc7\xf2\xcf\x00\x00\x00\x00\x00\x00\xf4\xbe\xc3\xc5\xf2\xd0\xc4\xa7\xc4\xa9\xc4\xa6\x00\x00\xf4\xc3\xf4\xbb\xf4\xb9", /* 8600 */ "\xf4\xbd\xf4\xba\x00\x00\x00\x00\xf4\xbf\xf4\xc1\xc4\xaa\xc4\xac\x00\x00\xf4\xc0\xc4\xad\xc4\xab\xf4\xc2\x00\x00\x00\x00\x00\x00\x00\x00\xc4\xa8\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc4\xf4\xf5\xf1\xf5\xf7\xc4\xf6\xf4\xbc\xf5\xf6\x00\x00\xf5\xfd\xf5\xf4\xf5\xfb\xf5\xfa\xf4\xb8\xf5\xf5\xf0\xb6\xf5\xfe\xf5\xf3\xf5\xf8\x00\x00\xf5\xfc\xf5\xf2\x00\x00\xf7\x4a\xc4\xf5\xf5\xf9\x00\x00\x00\x00\xf7\xf4\xf7\x4b\xf7\x49\xf7\x47\xf7\x48\xf7\x4c\x00\x00\xc5\xd9\xf7\xf2\xf7\xf0\xf7\xf5\xf7\xf3\x00\x00\xf7\xf6\xc5\xda\xf7\xf1\x00\x00\x00\x00\xf8\xbc\x00\x00\x00\x00\xf9\x45\xf9\x46\xf9\x47\x00\x00\x00\x00\xf9\xc7\xf9\xbd\xca\x4f\xaa\xea\x00\x00\xad\x68\x00\x00\xd3\xb8\xd3\xb7\xb0\x40\xb3\x42\xd7\x7c\x00\x00\x00\x00\xd7\x7b\x00\x00\xb5\xea\xb8\xb8\x00\x00\xb8\xb7\xb8\xb9\x00\x00\xe3\xd4\xe7\x7e\xeb\x58\xeb\x5a\xeb\x59\x00\x00\xc1\xab\xee\x57\xf0\xba\xf9\xa5\xa6\xe4\x00\x00\xcd\xc9\xcd\xca\xcd\xc8\xcd\xc7\xaa\xeb\x00\x00\xd0\xa9\xd0\xa7\x00\x00\x00\x00\xd0\xa6\x00\x00\xad\x69\xad\x6b\xad\x6a\xd0\xa8\x00\x00\x00\x00\x00\x00", /* 8680 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd3\xc4\xd3\xc1\xd3\xbf\x00\x00\x00\x00\xb0\x41\xd3\xc2\xb0\x46\xd3\xbc\xd3\xcb\x00\x00\xd3\xcd\xd3\xbd\x00\x00\xb0\x43\xd3\xce\xd3\xc9\xd3\xbb\xd3\xc0\xd3\xca\xd3\xc6\xd3\xc3\x00\x00\xb0\x48\xd3\xcc\xd3\xbe\x00\x00\x00\x00\xd3\xc7\xd3\xb9\xb0\x47\xb0\x44\xd3\xc5\x00\x00\xd3\xc8\xd3\xba\xb0\x45\xb0\x42\x00\x00\x00\x00\x00\x00\x00\x00\xb3\x4c\xd7\xa5\xb3\x4b\x00\x00\xd7\xa8\xd7\xab\xb3\x48\xb3\x46\xd7\x7e\xd7\xa9\xd7\xa7\xd7\xa4\xd7\xac\xd7\xad\xd7\xaf\xd7\xb0\xd7\x7d\xb3\x45\xd7\xa2\xd7\xa1\xd7\xae\xb3\x47\xd7\xa3\xb3\x49\xb3\x44\xd7\xa6\xb3\x4d\x00\x00\xb3\x4a\xd7\xaa\x00\x00\x00\x00\x00\x00\xb5\xf1\xdb\xbf\x00\x00\xdb\xb4\xb5\xee\x00\x00\xdf\xe7\xdb\xbd\xdb\xb1\xb5\xec\xdb\xb6\xb5\xef\xdb\xba\xdb\xb8\xb5\xf2\xb5\xeb\x00\x00\x00\x00\xdb\xb2\xdb\xb5\xb5\xf0\x00\x00\xdb\xb3\x00\x00\xdb\xbe\xdb\xbc\xdb\xb7\xdb\xb9\xdb\xbb\xb5\xed\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xdf\xe8\xdf\xee\xdf\xe4\xdf\xea\xb8\xba\xdf\xe6\xb8\xc0\x00\x00\x00\x00\xb8\xbf\x00\x00", /* 8700 */ "\xb8\xbe\xdf\xed\xb8\xc1\xb8\xc2\xdf\xe3\xdf\xf0\xb8\xc3\xb8\xbd\xb8\xbc\xdf\xec\xb8\xc4\xdf\xe2\xdf\xe5\xdf\xef\xdf\xeb\x00\x00\x00\x00\xe3\xf4\xe3\xe9\xb8\xbb\x00\x00\x00\x00\x00\x00\x00\x00\xbb\x6a\xe3\xdd\xe3\xf2\xe3\xde\xbb\x65\x00\x00\xe3\xdb\x00\x00\xe3\xe4\xe3\xdc\xbb\x67\xe3\xd6\xe3\xf1\xbb\x68\xe3\xee\xe3\xef\xe3\xd7\xbb\x6d\xe3\xe6\x00\x00\xe3\xe0\xe3\xe7\xe3\xda\x00\x00\xe3\xf3\xe3\xeb\xe3\xe5\xe3\xd5\xbb\x69\xe3\xec\x00\x00\xbb\x6c\xe3\xf0\x00\x00\xe3\xea\xbb\x66\xe3\xe8\x00\x00\xe3\xe2\xbb\x64\xe3\xd9\xe3\xe1\xe3\xed\xe3\xdf\x00\x00\x00\x00\xe3\xe3\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xbd\xc1\xdf\xe9\xe7\xb2\xe7\xbb\xe7\xb1\xe7\xad\xe7\xaa\xbd\xc2\xe7\xa8\xbb\x6b\xe7\xa1\xbd\xc0\xe7\xa7\xbd\xbf\xe7\xac\xe7\xa9\xe7\xb9\xe7\xb4\xe7\xae\xe7\xb3\xbd\xbb\xe7\xab\xe7\xbe\xe7\xa2\xe7\xa3\xe7\xba\xbd\xbc\xe7\xbf\xbd\xbe\xe7\xc0\xe7\xb0\xe3\xd8\xe7\xb6\xe7\xaf\xe7\xb8\xe7\xb5\x00\x00\x00\x00\x00\x00\xe7\xa6\xbd\xb9\xe7\xbd\xbd\xba\xe7\xa4\xbd\xbd\xeb\x64\xe7\xb7\xe7\xbc\x00\x00\x00\x00\x00\x00\x00\x00", /* 8780 */ "\x00\x00\xeb\x61\xbd\xb8\xbf\xc0\xeb\x6b\xeb\x67\x00\x00\xeb\x65\xeb\x60\xeb\x6f\x00\x00\x00\x00\x00\x00\xbf\xc4\x00\x00\xeb\x5c\xeb\x68\xeb\x69\xeb\x5f\xeb\x5e\xeb\x6c\x00\x00\xeb\x62\xeb\x5d\xeb\x63\x00\x00\xeb\x6e\xeb\x5b\xeb\x6d\xeb\x6a\xbf\xc2\xbf\xc1\x00\x00\x00\x00\xbf\xc3\xeb\x66\xf0\xcb\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xee\x59\xc1\xb1\xee\x5d\xee\x5a\xee\x61\xee\x67\xee\x5c\x00\x00\xee\x70\xc1\xae\xee\x6a\xee\x5f\xee\x6b\xee\x66\xee\x6d\xee\x5e\xc1\xb3\xc1\xb2\xee\x60\xee\x6e\xee\x58\xee\x6c\xc1\xac\x00\x00\xee\x64\xee\x63\xee\x68\xee\x5b\xc1\xb0\x00\x00\xc1\xb4\xee\x62\xee\x69\xc1\xb5\xee\x65\x00\x00\x00\x00\x00\x00\x00\x00\xc1\xad\xc1\xaf\xf0\xc7\xf0\xc5\x00\x00\x00\x00\xf0\xcc\xf0\xc9\xf0\xcd\x00\x00\xf0\xbe\xf0\xc6\xf0\xd1\xee\x6f\xf0\xc2\xc2\xcf\xe7\xa5\xf0\xbd\xf0\xca\xf0\xc4\xf0\xc1\xf0\xbc\xf0\xbb\xf0\xd0\x00\x00\xf0\xc0\xf0\xbf\xc2\xcd\xf0\xc8\x00\x00\xc2\xcc\x00\x00\x00\x00\xc2\xce\xf0\xc3\xf0\xcf\x00\x00\xf2\xde\xf2\xdf\x00\x00\xc3\xc9\xf2\xdc\xc3\xc6\xf2\xe4\x00\x00\xc3\xca\xf2\xe6", /* 8800 */ "\xf2\xdb\xf0\xce\xf2\xe8\xf2\xdd\x00\x00\xc3\xc7\xf2\xe3\x00\x00\xf2\xe5\xf2\xe0\xf2\xe7\xf2\xe2\xf2\xe1\xc3\xc8\x00\x00\x00\x00\xf4\xc5\xf4\xc6\x00\x00\xf4\xc8\xc4\xae\xc4\xaf\xf4\xc9\xf4\xc7\x00\x00\xf4\xc4\x00\x00\xf6\x42\xf6\x45\xf6\x41\x00\x00\xc4\xfa\xf6\x43\xc4\xf9\xc4\xf8\xc4\xf7\xf6\x44\xf7\x51\xf7\x4f\x00\x00\xf7\x4e\xf6\x40\xf7\x50\xf6\x46\xf7\x4d\x00\x00\xf7\xf9\xf7\xd7\xf7\xf7\xc5\xdb\xf7\xf8\xf7\xfa\x00\x00\xf8\xbf\xc5\xfa\xf8\xbe\xf8\xbd\xc5\xfb\x00\x00\xc6\x5a\xf9\x6e\xf9\xa7\xf9\xa6\xf9\xa8\xa6\xe5\xd0\xaa\x00\x00\xd3\xcf\xd3\xd0\x00\x00\x00\x00\x00\x00\xdb\xc0\x00\x00\xf6\x47\xf8\xc0\xa6\xe6\xad\x6c\xd0\xab\x00\x00\x00\x00\x00\x00\xd7\xb1\xb3\x4e\x00\x00\xdb\xc2\xdb\xc1\xb5\xf3\x00\x00\xb8\xc5\xe7\xc1\xbd\xc3\x00\x00\xbd\xc4\x00\x00\x00\x00\x00\x00\xbf\xc5\xc5\xfc\xa6\xe7\x00\x00\x00\x00\x00\x00\xd0\xac\xaa\xed\xd0\xae\xd0\xad\xad\x6d\x00\x00\xd3\xd1\x00\x00\xd3\xd8\xb0\x49\xd3\xd6\xd3\xd4\x00\x00\xd3\xdb\xd3\xd2\xd3\xd3\xb0\x4a\x00\x00\xb0\x4e\x00\x00\x00\x00\xd3\xdc\xb0\x4d\xd3\xda\xd3\xd7", /* 8880 */ "\xd3\xd5\xb0\x4b\xb0\x4c\xd3\xd9\x00\x00\x00\x00\x00\x00\x00\x00\xb3\x50\xd7\xb2\x00\x00\xb3\x55\xd7\xc2\xb3\x54\xd7\xc4\x00\x00\x00\x00\xd7\xb8\xb3\x52\xd7\xc3\x00\x00\xd7\xb3\xb3\x53\xd7\xbf\xd7\xbb\xd7\xbd\xd7\xb7\xd7\xbe\x00\x00\x00\x00\xb3\x4f\xd7\xba\x00\x00\xd7\xb9\xd7\xb5\x00\x00\xd7\xc0\x00\x00\x00\x00\xd7\xbc\xd7\xb4\x00\x00\xd7\xb6\xb3\x51\xd7\xc1\x00\x00\x00\x00\x00\x00\x00\x00\xb5\xf6\xdb\xcd\x00\x00\x00\x00\x00\x00\xdb\xc9\xdb\xcb\xdb\xc6\xdb\xc5\xdb\xc3\x00\x00\xdb\xca\xdb\xcc\xdb\xc8\x00\x00\xdb\xc7\xb5\xf4\xb5\xf5\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xdb\xcf\xb8\xcd\xdf\xf2\xdf\xf8\xdf\xf3\xdf\xf4\xf9\xd8\xdf\xf9\x00\x00\xb8\xcf\x00\x00\xb8\xc7\xb8\xce\xdf\xf1\xdb\xc4\xb8\xca\xb8\xc8\xdf\xf7\xdf\xf6\xb8\xc9\xb8\xcb\xdf\xf5\xb8\xc6\x00\x00\xb8\xcc\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe3\xf6\xbb\x74\x00\x00\x00\x00\xe4\x42\xe4\x41\x00\x00\xe3\xfb\xbb\x76\xe4\x40\xe3\xf7\xe3\xf8\xbb\x6e\xbb\x70\x00\x00\xe3\xfd\xe3\xf5\xbb\x72\xbb\x71\xe3\xf9\xe3\xfe\xe3\xfc\xbb\x73\xe3\xfa\x00\x00", /* 8900 */ "\x00\x00\xdb\xce\xbb\x6f\x00\x00\x00\x00\xe7\xc2\xe7\xc9\xbd\xc6\x00\x00\xe7\xcd\xbd\xca\xe7\xc5\xe7\xc3\x00\x00\xe7\xcc\x00\x00\xbd\xc5\xe7\xcb\xbd\xc7\xbd\xc8\xe7\xc4\xbd\xc9\xe7\xca\xe7\xc6\xe7\xc7\xe7\xc8\xbb\x75\x00\x00\x00\x00\x00\x00\xeb\x70\xeb\x7c\x00\x00\xbf\xca\xeb\x77\xeb\x79\x00\x00\xbf\xc8\xeb\x71\xeb\x75\x00\x00\xeb\x78\xbf\xc6\xbf\xc9\xeb\x7b\xeb\x73\xeb\x74\xeb\x7a\xeb\x72\xeb\x76\xbf\xc7\xee\x72\x00\x00\xee\x71\xc1\xb7\xee\x77\xc1\xb9\x00\x00\x00\x00\xc1\xb6\xee\x73\xc1\xba\xee\x74\x00\x00\x00\x00\xee\x75\xee\x78\x00\x00\xc1\xb8\x00\x00\xf0\xd6\x00\x00\x00\x00\xf0\xd9\x00\x00\xf0\xd3\xf0\xd5\x00\x00\x00\x00\xf0\xd4\xf0\xd7\xf0\xd8\xee\x76\xf0\xd2\x00\x00\x00\x00\xc3\xcd\xf2\xec\xf2\xef\xf2\xf1\xf2\xea\xf2\xeb\xf2\xee\xf2\xf0\xc3\xce\xc3\xcc\xc3\xcb\xf2\xed\xf2\xe9\xf4\xca\xc4\xb0\x00\x00\xf4\xcb\x00\x00\x00\x00\xf6\x49\xc4\xfb\xf6\x4b\xc4\xfc\xf6\x48\xf6\x4a\xc5\xa8\x00\x00\xf7\x52\xc5\xa7\xf7\xfd\xf7\xfc\x00\x00\xf7\xfb\x00\x00\x00\x00\xf9\x48\xf9\x49\xf9\x4b\xf9\x4a\x00\x00\xca\x50\xa6\xe8", /* 8980 */ "\x00\x00\xad\x6e\xd7\xc5\xb5\xf7\x00\x00\xdf\xfa\xc2\xd0\x00\x00\xf2\xf2\x00\x00\x00\x00\xa8\xa3\x00\x00\x00\x00\x00\x00\xb3\x57\x00\x00\x00\x00\x00\x00\xb3\x56\x00\x00\xdb\xd0\xb5\xf8\xdb\xd2\xdb\xd1\x00\x00\x00\x00\xdf\xfb\xb8\xd0\xe4\x43\xe4\x46\xe4\x45\x00\x00\xe4\x44\xe7\xce\xe7\xd0\xe7\xcf\x00\x00\xbf\xcc\x00\x00\x00\x00\x00\x00\xbf\xcb\x00\x00\xc1\xbb\xee\x79\xee\x7b\xee\x7a\x00\x00\x00\x00\xc2\xd1\x00\x00\x00\x00\x00\x00\xf2\xf4\xf2\xf3\x00\x00\xf4\xcc\xc4\xb1\x00\x00\x00\x00\xc4\xfd\xf7\x54\xf7\x53\xc6\x5b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa8\xa4\xd0\xaf\xad\x6f\xd7\xc8\xd7\xc6\x00\x00\x00\x00\xd7\xc7\xdb\xd4\xdb\xd5\xe0\x43\xdb\xd3\x00\x00\xdf\xfc\xe0\x41\xe0\x40\xe0\x42\xb8\xd1\xdf\xfe\xdf\xfd\xe0\x44\x00\x00\xe4\x49\xe4\x47\x00\x00\xe4\x48\xe7\xd3\xe7\xd1\x00\x00\x00\x00\xe7\xd2\xeb\x7d\xee\x7c\xee\x7d\xc2\xd2\x00\x00\xf2\xf5\xf4\xcd\xc4\xb2\x00\x00\xf6\x4c\xf7\x55\xc5\xa9\x00\x00\xf7\xfe\xf9\x4c", /* 8a00 */ "\xa8\xa5\x00\x00\xad\x71\xad\x72\xd0\xb0\x00\x00\x00\x00\xd0\xb1\xad\x70\x00\x00\xb0\x54\x00\x00\xb0\x52\x00\x00\xb0\x51\xb0\x58\xb0\x50\xb0\x59\xd3\xdd\xb0\x56\x00\x00\xb0\x53\xb0\x57\xb0\x55\xb0\x4f\x00\x00\x00\x00\xb3\x5f\x00\x00\xb3\x59\xd7\xcc\xb3\x5e\x00\x00\x00\x00\xb3\x60\xb3\x5a\x00\x00\xb3\x5b\x00\x00\xd7\xca\x00\x00\x00\x00\xb3\x58\x00\x00\xd7\xcb\xb3\x5d\x00\x00\x00\x00\xd7\xc9\xb3\x5c\x00\x00\x00\x00\xb6\x44\x00\x00\xb6\x46\x00\x00\x00\x00\xdb\xd8\xb6\x45\xb5\xf9\xb5\xfd\x00\x00\xb8\xe4\xe0\x49\xdb\xda\xb5\xfe\x00\x00\x00\x00\xdb\xdd\xdb\xde\xb6\x43\x00\x00\xdb\xe0\x00\x00\xdb\xe2\x00\x00\xdb\xe3\xdb\xd7\xdb\xd6\xdb\xe4\xb6\x42\xdb\xe1\xdb\xdf\x00\x00\xb6\x40\xb5\xfb\xb6\x47\xdb\xdb\xdb\xdc\xdb\xd9\x00\x00\xb6\x41\x00\x00\x00\x00\xb5\xfc\x00\x00\xb5\xfa\xe0\x48\xb8\xdf\xb8\xda\x00\x00\x00\x00\xb8\xd5\x00\x00\xb8\xe5\xb8\xd6\x00\x00\xb8\xd2\xb8\xe1\xb8\xde\xb8\xe0\x00\x00\xb8\xd7\xb8\xdc\xb8\xd3\xb8\xd4\xe0\x50\xe0\x4d\xe0\x45\xe0\x4a\x00\x00\xb8\xe2\xe0\x51\xb8\xe3\xb8\xd9\x00\x00\x00\x00\xe0\x47", /* 8a80 */ "\x00\x00\xe0\x4f\xe0\x4b\xe0\x4e\xe0\x4c\xb8\xdd\xe0\x46\xb8\xd8\x00\x00\x00\x00\x00\x00\xe4\x4c\xbb\x78\xbb\x7b\x00\x00\xe4\x4e\x00\x00\xbb\xa5\xe4\x4d\xbb\x7d\x00\x00\xbd\xcf\xe4\x4f\x00\x00\xbb\xa4\xe4\x4b\xbb\xa6\x00\x00\x00\x00\x00\x00\xbb\x79\x00\x00\xb8\xdb\xbb\x7c\x00\x00\xbb\x7a\xbb\x7e\xbb\xa2\xbb\x77\xbb\xa7\xbb\xa3\x00\x00\xbb\xa1\xe4\x4a\x00\x00\x00\x00\x00\x00\x00\x00\xbd\xd6\x00\x00\xbd\xd2\x00\x00\x00\x00\x00\x00\xbd\xd9\x00\x00\xe7\xd6\xbd\xda\xe7\xe2\xe7\xdb\xbd\xcb\xe7\xe3\xe7\xdd\xbd\xd5\xe7\xde\x00\x00\xbd\xd4\xe7\xe1\xbd\xce\xe7\xdf\xe7\xd5\xbd\xcd\xeb\xaa\xbd\xd3\x00\x00\xbd\xd0\x00\x00\xbd\xd8\x00\x00\xe7\xd4\x00\x00\xe7\xd8\xbd\xcc\xe7\xd7\xe7\xd9\xe7\xda\xbd\xd7\xe7\xdc\xe7\xe0\xe7\xe4\x00\x00\xbd\xdb\xbf\xd2\xeb\xa5\xeb\xab\xeb\xa8\xeb\x7e\xeb\xac\xeb\xa1\x00\x00\xeb\xa7\x00\x00\xbf\xcd\xbf\xd3\xeb\xad\x00\x00\x00\x00\xbf\xcf\x00\x00\xbf\xd9\xbf\xd4\xeb\xaf\xeb\xa9\xbf\xd0\xeb\xa2\xbf\xda\xeb\xa3\xeb\xa4\xbf\xdb\xbf\xd8\xbd\xd1\x00\x00\xbf\xce\xeb\xb0\xbf\xdc\x00\x00\xbf\xd5\xeb\xae", /* 8b00 */ "\xbf\xd1\xbf\xd6\xbf\xd7\x00\x00\xc1\xc3\xee\xa4\xee\xad\xee\xaa\xee\xac\x00\x00\xc1\xc0\xee\xa5\x00\x00\xee\xab\xc1\xbc\xee\xa7\xc1\xc4\xee\xa3\xee\xa8\xee\xaf\xeb\xa6\xee\xa9\xee\xa2\xc1\xbd\xee\xa1\xc1\xbe\xee\xb0\xc1\xbf\xee\xae\xc1\xc2\xee\x7e\x00\x00\xc1\xc1\x00\x00\xee\xa6\xf0\xdc\xf0\xea\xf0\xe5\xf0\xe7\xf0\xdb\xc2\xd3\x00\x00\xf0\xda\xc2\xd6\xc2\xd5\x00\x00\xf0\xe9\xf0\xe1\xf0\xde\xf0\xe4\x00\x00\xf0\xdd\x00\x00\xf0\xdf\xf0\xe8\xf0\xe6\x00\x00\xc2\xd4\xf0\xed\xf0\xeb\xf0\xe2\xf0\xec\xf0\xe3\x00\x00\xf2\xf9\xc3\xcf\xf3\x41\x00\x00\x00\x00\xf6\x4f\xc3\xd6\xf0\xe0\xf2\xf7\xc3\xd2\xf2\xf8\xf2\xfd\x00\x00\x00\x00\xc3\xd4\xc3\xd5\xf2\xf6\xf3\x40\xf3\x42\xf2\xfa\xf2\xfc\xf2\xfe\xf2\xfb\xf3\x43\xc3\xd1\xc3\xd7\xc3\xd3\x00\x00\xc3\xd0\xf4\xd0\x00\x00\xc4\xb7\xf4\xce\x00\x00\x00\x00\xf4\xd2\x00\x00\xf4\xd3\xc4\xb5\xf4\xd4\xf4\xd1\x00\x00\xf4\xcf\xc4\xb8\xc4\xb4\xf4\xd5\x00\x00\xc4\xb6\xc4\xb3\x00\x00\x00\x00\x00\x00\xc4\xfe\x00\x00\x00\x00\xc5\x40\xf6\x4e\xf6\x4d\xf6\x50\xf6\x51\x00\x00\xc5\x41\xf7\x56\xf7\x5b", /* 8b80 */ "\xc5\xaa\x00\x00\xf7\x58\x00\x00\xf7\x57\xf7\x5a\xf7\x59\x00\x00\xf8\x43\x00\x00\xc5\xdc\xf8\x42\xf8\x40\x00\x00\xf8\x41\x00\x00\x00\x00\x00\x00\xc5\xfe\xc5\xfd\xf8\xc1\xf8\xc2\xc6\x40\x00\x00\xf9\x4d\xf9\x4e\xc6\x67\x00\x00\xc6\x6d\x00\x00\xf9\xa9\xf9\xc8\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 8c00 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa8\xa6\x00\x00\xd7\xcd\x00\x00\xd7\xce\xe0\x52\xe4\x50\xe7\xe5\xc1\xc6\x00\x00\xc1\xc5\xf0\xee\xf3\x44\x00\x00\xf8\x44\xa8\xa7\xd3\xde\xb0\x5a\xb3\x61\xe0\x54\xe0\x53\xbd\xdc\xe7\xe6\xbd\xdd\xee\xb1\xc2\xd7\x00\x00\x00\x00\x00\x00\xc6\x76\xa8\xa8\xcd\xcb\xd3\xdf\x00\x00\x00\x00\xb3\x62\x00\x00\xd7\xcf\xd7\xd0\x00\x00\xdb\xe5\x00\x00\xb6\x48\xb8\xe6\x00\x00\xe0\x56\xe0\x55\xe0\x57\x00\x00\xe4\x51\xe4\x52\xbb\xa8\xbf\xdd\xbd\xde\xbf\xde\x00\x00\xee\xb5\xee\xb2\xee\xb4\xee\xb3\xc1\xc7\x00\x00\xf0\xef\xf3\x46\xf3\x45\xcb\xa4\xb0\x5c\xb0\x5b\xd3\xe0\x00\x00\xd7\xd1\x00\x00\x00\x00", /* 8c80 */ "\xdb\xe7\xdb\xe6\xb6\x49\x00\x00\xe0\x59\xe0\x5a\xe0\x58\x00\x00\x00\x00\xb8\xe8\xb8\xe7\x00\x00\xbb\xaa\xbb\xa9\x00\x00\xe7\xe7\xeb\xb3\xeb\xb1\xeb\xb2\xbf\xdf\xee\xb7\xee\xb6\x00\x00\xf0\xf2\xf0\xf1\xf0\xf0\xf3\x47\x00\x00\xf9\xaa\xa8\xa9\xad\x73\x00\x00\xad\x74\xb0\x5d\xb0\x5e\xd3\xe2\xd3\xe1\xd7\xd2\x00\x00\xb3\x68\xb3\x66\xb3\x63\xb3\x67\xb3\x65\xb3\x64\x00\x00\x00\x00\xb6\x4a\xdb\xea\x00\x00\xb8\xed\xb6\x4c\xb6\x51\xdb\xec\xb6\x53\xb6\x52\xb6\x55\xdb\xeb\xdb\xe8\xb6\x4f\xb6\x4b\xb6\x4d\xdb\xe9\xb6\x54\xb6\x50\xb6\x4e\xb8\xef\xb8\xee\xb8\xec\xb8\xf0\x00\x00\xb8\xea\xb8\xeb\x00\x00\xb8\xe9\x00\x00\xe0\x5b\x00\x00\x00\x00\xe4\x54\x00\x00\xbb\xac\xbb\xad\xbb\xab\x00\x00\xe4\x53\x00\x00\xe4\x55\x00\x00\xe7\xea\xe7\xec\x00\x00\xbd\xe7\xe7\xed\xbd\xe0\xe7\xe9\xbd\xdf\xbd\xe9\xbd\xe5\xbd\xe6\xbd\xe2\xe7\xe8\xbd\xe1\xe7\xee\xe7\xeb\x00\x00\xbd\xe8\x00\x00\xbd\xe3\xbd\xe4\xeb\xb5\x00\x00\xeb\xb7\xeb\xb6\x00\x00\xeb\xb8\xbf\xe0\xeb\xb4\x00\x00\x00\x00\xc1\xcb\xee\xb8\xc1\xc8\xc1\xcc\xc1\xca\xc1\xc9\xf0\xf3\x00\x00", /* 8d00 */ "\xf0\xf6\x00\x00\xf0\xf5\x00\x00\xf0\xf4\xc2\xd8\xf3\x48\xf3\x49\xc3\xd8\xf3\x4a\xc3\xd9\x00\x00\x00\x00\xc4\xba\x00\x00\xc4\xb9\xf6\x52\x00\x00\x00\x00\xc5\x42\xf6\x53\xf7\x5c\xc5\xab\xc5\xac\x00\x00\xf8\x45\x00\x00\xc6\x42\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa8\xaa\x00\x00\xb3\x6a\xb3\x69\xe0\x5c\xe0\x5d\x00\x00\xbb\xae\xeb\xb9\xbd\xea\xeb\xba\xee\xb9\xa8\xab\x00\x00\xd0\xb2\xad\x76\xad\x75\x00\x00\xd3\xe3\xb0\x5f\xd3\xe4\xd7\xd5\x00\x00\xd7\xd4\x00\x00\xd7\xd3\x00\x00\x00\x00", /* 8d80 */ "\xdb\xee\xb6\x58\x00\x00\x00\x00\xdb\xed\xb6\x57\x00\x00\x00\x00\x00\x00\xdb\xef\xb6\x56\x00\x00\xe0\x5f\xe0\x62\xe0\x60\xe0\x61\xe0\x65\xe0\x5e\xe0\x66\xe0\x63\xe0\x64\xbb\xb0\xe4\x56\x00\x00\x00\x00\xbb\xaf\x00\x00\xe7\xf2\xe7\xf0\x00\x00\x00\x00\xbd\xeb\xe7\xef\xe7\xf1\x00\x00\xbd\xec\x00\x00\xeb\xbb\x00\x00\xeb\xbc\xc1\xcd\x00\x00\xf3\x4c\xf3\x4e\xf3\x4b\xf3\x4d\xf4\xd6\xf6\x54\x00\x00\x00\x00\xf9\x6f\xa8\xac\xad\x77\xd3\xe5\xd3\xe7\xd3\xe6\x00\x00\xd7\xd8\xb3\x6c\x00\x00\xd7\xd6\x00\x00\xb3\x6b\xd7\xd9\x00\x00\xd7\xda\xd7\xd7\x00\x00\x00\x00\xdb\xfb\xb6\x60\xdb\xf3\xdb\xf9\x00\x00\x00\x00\xb6\x5b\xb6\x5e\xdb\xf2\xb6\x59\xdb\xf6\xe0\x6c\xb6\x5d\x00\x00\xdb\xf1\x00\x00\xdb\xf7\xdb\xf4\xdb\xfa\xdb\xf0\xdb\xf8\xb6\x5c\xb6\x5f\xdb\xf5\xb6\x5a\x00\x00\xb8\xf2\xe0\x68\xb8\xf1\xe0\x6f\xe0\x6e\xb8\xf8\x00\x00\xb8\xf9\xe0\x70\xb8\xf3\xe0\x6d\xb8\xf7\xe0\x72\xe0\x69\x00\x00\xe0\x6b\xb8\xf4\xe0\x67\xe0\x6a\xe0\x71\xb8\xf5\xe0\x73\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xb8\xf6\x00\x00\xbb\xb1\xe4\x5b\xe4\x61\xe4\x59", /* 8e00 */ "\xe4\x62\x00\x00\xe4\x58\xe4\x5d\xe4\x63\xe4\x60\xe4\x5f\xe4\x5e\x00\x00\xe4\x57\xe4\x5c\x00\x00\x00\x00\xe4\x5a\x00\x00\xbd\xf1\xbd\xee\xe7\xfb\xe8\x41\xe8\x43\xe8\x40\xe7\xf8\xe7\xfa\xe8\x45\xe8\x42\xe7\xfc\xe8\x46\xe7\xf9\xe8\x44\xbd\xef\xbd\xf5\xbd\xf3\xe7\xf3\xbd\xf4\xbd\xf0\xe7\xf4\xe7\xf6\xe7\xf5\xe7\xfd\xe7\xfe\x00\x00\xbd\xf2\x00\x00\xbd\xed\x00\x00\x00\x00\xe7\xf7\x00\x00\xeb\xc6\xbf\xe2\x00\x00\xeb\xbd\xbf\xe3\xbf\xe6\xeb\xc2\x00\x00\xeb\xbf\xbf\xe5\x00\x00\x00\x00\xeb\xc3\xeb\xc4\xeb\xbe\xeb\xc7\xeb\xc0\xeb\xc5\xbf\xe4\x00\x00\xbf\xe1\xeb\xc1\x00\x00\xee\xbf\xc1\xd0\xc1\xce\xc1\xd1\xc1\xcf\xee\xbe\xee\xbb\xee\xba\x00\x00\xee\xbd\x00\x00\x00\x00\xee\xbc\xf1\x45\xc2\xde\xf0\xfb\xf0\xfa\x00\x00\xc2\xd9\xf1\x41\xf1\x40\xf0\xf7\xf1\x43\xf0\xfc\xc2\xdd\xf0\xf9\xf1\x42\xf0\xf8\xc2\xda\xc2\xdc\xf0\xfd\xc2\xdb\xf0\xfe\x00\x00\xf1\x44\xf3\x52\x00\x00\xc3\xde\xf3\x4f\x00\x00\xf3\x53\x00\x00\x00\x00\xc3\xdb\xf3\x51\xc3\xe0\x00\x00\xc3\xdd\x00\x00\xf3\x50\x00\x00\xc3\xdf\xf3\x54\xc3\xda\x00\x00\x00\x00\x00\x00", /* 8e80 */ "\x00\x00\xc4\xbc\xc4\xbe\x00\x00\xf4\xd9\xc4\xbd\xf4\xd7\xc3\xdc\xf4\xd8\xc4\xbb\xc5\x43\xc5\x45\xf6\x56\xc5\x44\xf6\x55\x00\x00\xf7\x61\xc5\xad\xf7\x60\xc5\xae\xf7\x5e\xf7\x5d\xf7\x62\xf7\x63\xf8\x46\x00\x00\xf7\x5f\x00\x00\x00\x00\xf8\xc6\xf8\xc3\xf8\xc4\xf8\xc5\xc6\x5c\x00\x00\xf9\x51\xf9\x50\xf9\x4f\xf9\x70\x00\x00\xf9\xbe\xf9\xab\xc6\x6e\xa8\xad\xb0\x60\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xb8\xfa\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xbd\xf6\x00\x00\x00\x00\xeb\xc8\x00\x00\x00\x00\xc2\xdf\x00\x00\xf3\x55\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf9\xac\xa8\xae\xaa\xee\xad\x79\xad\x78\x00\x00\xb0\x63\x00\x00\xd3\xe8\xb0\x61\xd3\xe9\xb0\x62\x00\x00\x00\x00\xd7\xdf\xd7\xdb\x00\x00\x00\x00\xb3\x6d\xd7\xde\xd7\xdd\xd7\xdc\xb3\x6e\xd7\xe0\xd7\xe1\x00\x00\x00\x00\x00\x00\xdc\x43\xdc\x41\xdc\x45\xdc\x46\xdc\x4c\x00\x00\xdc\x48\xdc\x4a\x00\x00\xdc\x42\xdb\xfc\x00\x00\xdc\x49\x00\x00\x00\x00\xdc\x4b\xdc\x44\xdc\x47\xdb\xfd\xb6\x62\xdc\x40\xdb\xfe\xb6\x61\xb6\x63\x00\x00\xb8\xfd\xe0\x75", /* 8f00 */ "\xe0\x77\xe0\x76\xe0\x7b\xb8\xfb\x00\x00\xe0\x78\xe0\x74\xe0\x79\xe0\x7a\xb8\xfc\xb8\xfe\xe0\x7c\x00\x00\xe4\x67\xe4\x66\x00\x00\xe4\x64\xe4\x65\xbb\xb3\xbb\xb5\xbb\xb2\xbb\xb4\xe8\x4d\xe8\x4e\xe8\x49\x00\x00\xe8\x4a\xbd\xf8\xbd\xfd\xbd\xf7\xbd\xfe\xbd\xf9\xe8\x4b\x00\x00\x00\x00\xe8\x4c\xe8\x48\xbe\x40\xbd\xfb\x00\x00\x00\x00\xbd\xfa\xbd\xfc\x00\x00\xe8\x47\x00\x00\xeb\xca\xbf\xe8\x00\x00\x00\x00\xeb\xcc\xbf\xea\xeb\xcf\xeb\xcb\xeb\xc9\xeb\xce\xbf\xe9\xeb\xcd\x00\x00\xbf\xe7\x00\x00\x00\x00\xc1\xd3\xc1\xd6\xee\xc1\x00\x00\xc1\xd4\xee\xc0\xc1\xd2\xc1\xd5\xf1\x46\xf1\x47\xf1\x48\xc2\xe0\x00\x00\xf1\x49\x00\x00\xc2\xe1\xc3\xe2\xf3\x58\xf3\x59\xf3\x57\xf3\x56\xf3\x5a\xc3\xe1\xf4\xdd\xf4\xdb\xf4\xdc\xf4\xde\xf4\xda\xf4\xdf\xf6\x58\x00\x00\xf6\x59\xf6\x57\xc5\x46\xf7\x64\xc5\xaf\xf7\x65\xf8\x48\xf8\x47\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 8f80 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa8\xaf\xb6\x64\x00\x00\x00\x00\xb9\x40\x00\x00\x00\x00\x00\x00\xbb\xb6\x00\x00\x00\x00\xbf\xec\x00\x00\xbf\xeb\x00\x00\x00\x00\x00\x00\x00\x00\xc3\xe3\xc4\x7c\xc5\x47\xa8\xb0\xb0\x64\xb9\x41\x00\x00\xf3\x5b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xcb\xa6\x00\x00\x00\x00\xa8\xb1\x00\x00\xa8\xb4\xa8\xb3\xa8\xb2\x00\x00\x00\x00\xcb\xa5\x00\x00\xcd\xcd\x00\x00\xcd\xcf\xaa\xef\x00\x00\x00\x00\xaa\xf1\xcd\xcc\xcd\xce\xaa\xf0\xcd\xd1\xcd\xd0\xcd\xd2\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd0\xb6\xd0\xb4\xad\x7c\xd0\xb3\xad\xa3\xad\x7e\xad\x7b\x00\x00\xad\xa4\x00\x00\xad\x7d\xad\xa2\x00\x00\xad\xa1\xd0\xb5\x00\x00\xad\x7a\x00\x00\x00\x00\x00\x00\xb0\x6a\xd3\xeb\xd3\xf1\xb0\x67\xb0\x6e\x00\x00\xb0\x69\xd3\xee\xd3\xf0\xb0\x6c\xd3\xea\xd3\xed", /* 9000 */ "\xb0\x68\xb0\x65\xd3\xec\xb0\x6b\xd3\xef\xb0\x6d\xb0\x66\x00\x00\x00\x00\x00\x00\x00\x00\xd7\xe3\xd7\xe6\xb3\x70\x00\x00\xb3\x7a\xb3\x76\xd7\xe4\x00\x00\x00\x00\xb3\x7e\xb3\x77\xb3\x7c\xb3\x72\x00\x00\xb3\x6f\xb3\x71\xb3\x7d\xd7\xe5\xb3\x75\xb3\x78\xb3\x74\xb3\x79\xd7\xe7\xb3\x7b\xb3\x73\xd7\xe2\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xdc\x4d\xb6\x65\xdc\x4f\x00\x00\xb6\x67\xb6\x69\x00\x00\xdc\x4e\xb6\x66\xb6\x6a\x00\x00\xb6\x68\x00\x00\x00\x00\x00\x00\xb9\x47\xe0\xa3\xb9\x4f\xe0\x7e\x00\x00\xb9\x50\xb9\x45\x00\x00\xe0\xa1\x00\x00\x00\x00\xb9\x4a\x00\x00\xe0\xa2\xb9\x43\xb9\x42\x00\x00\xb9\x4d\xb9\x4c\xb9\x4b\xb9\x49\xb9\x4e\xe0\x7d\xb9\x44\xb9\x46\xb9\x48\x00\x00\x00\x00\xbb\xb8\xbb\xbb\x00\x00\xbb\xbf\xbb\xb9\xbb\xbe\xbb\xbc\x00\x00\xbb\xb7\x00\x00\xbb\xbd\xbb\xba\x00\x00\x00\x00\x00\x00\xe8\x52\xbe\x43\xbe\x41\x00\x00\xe8\x53\x00\x00\xbe\x44\xbe\x42\xe8\x51\xe8\x50\x00\x00\xbf\xf0\xe8\x4f\xbf\xee\xbf\xed\xeb\xd0\xbe\x45\xbf\xef\xeb\xd1\xbf\xf2\xeb\xd2\xbf\xf1\xc1\xd8\xee\xc3\xc1\xd7", /* 9080 */ "\xc1\xdc\xc1\xda\xc1\xdb\xc2\xe3\xc1\xd9\xee\xc2\xeb\xd3\xc2\xe2\xc2\xe4\x00\x00\xc3\xe4\xc3\xe5\x00\x00\xf4\xe0\x00\x00\xc5\xde\xc5\xdd\xa8\xb6\x00\x00\x00\x00\xca\x55\xb0\x6f\x00\x00\xca\x52\xca\x53\xca\x51\x00\x00\xca\x54\x00\x00\x00\x00\xcb\xaa\xcb\xa7\xcb\xac\xcb\xa8\xa8\xb7\xa8\xba\x00\x00\xcb\xa9\xa8\xb9\xcb\xab\x00\x00\x00\x00\xa8\xb8\x00\x00\x00\x00\x00\x00\x00\x00\xcd\xd5\xcd\xd7\xaa\xf4\xcd\xd3\xcd\xd6\xcd\xd4\xaa\xf2\xaa\xf5\x00\x00\xaa\xf3\x00\x00\x00\x00\x00\x00\x00\x00\xd0\xb8\xd0\xbc\xd0\xb9\x00\x00\xad\xa7\x00\x00\xad\xa8\x00\x00\xd0\xbb\x00\x00\xd0\xbd\xd0\xbf\x00\x00\xad\xa5\xd0\xbe\x00\x00\x00\x00\xad\xa6\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd7\xee\xd0\xba\xd3\xf2\xd3\xfb\xd3\xf9\xd3\xf4\xd3\xf5\xd3\xfa\xd3\xfc\xb0\x71\x00\x00\xd3\xf7\xd3\xf3\xb0\x70\xb0\x72\xd3\xf6\xd3\xfd\xd3\xf8\x00\x00\x00\x00\xb3\xa1\xd7\xf1\xd7\xe9\xd7\xef\xd7\xf0\xb3\xa2\x00\x00\xd7\xe8\xd7\xea\xd0\xb7\xd7\xec\xd7\xed\xd7\xeb\xb6\x6c\x00\x00\x00\x00\x00\x00\xdc\x56\xeb\xd4\xdc\x57\xdc\x54\xb3\xa3\xb6\x6e\xdc\x53", /* 9100 */ "\xdc\x59\xdc\x58\xb6\x6b\xdc\x5c\xdc\x52\xdc\x5b\xdc\x50\xdc\x5a\xdc\x55\xb6\x6d\x00\x00\xe0\xaa\x00\x00\xe0\xa5\xe0\xab\xe0\xa6\xe0\xa4\xe0\xa7\xb9\x51\x00\x00\xe0\xa9\x00\x00\xe0\xa8\xb9\x52\xbb\xc1\xbb\xc0\xe4\x6e\xe4\x71\xe4\x69\xe4\x6d\xbb\xc2\xe4\x6c\xe4\x6a\xe4\x70\xe4\x6b\xe4\x68\xe4\x6f\x00\x00\xe8\x59\xbe\x48\xf1\x4a\xe8\x56\xe8\x57\xe8\x55\xdc\x51\xbe\x47\xe8\x5a\xe8\x54\xbe\x46\xbe\x49\xe8\x58\xeb\xd5\xbf\xf3\xeb\xd6\xeb\xd7\x00\x00\xee\xc4\xc1\xdd\xf1\x4b\xf1\x4c\x00\x00\x00\x00\xf1\x4d\xf3\x5d\xf3\x5c\xf4\xe2\x00\x00\xf4\xe1\xf6\x5b\xf6\x5c\xf6\x5a\xf7\x66\xc5\xb0\xa8\xbb\xad\xaa\xad\xa9\xb0\x75\xb0\x74\xd4\x40\xd4\x41\xd3\xfe\x00\x00\xb0\x73\xd7\xf5\x00\x00\xd7\xf6\xd7\xf2\xb3\xa4\xd7\xf3\x00\x00\xd7\xf4\x00\x00\x00\x00\x00\x00\x00\x00\xdc\x5f\xdc\x61\xdc\x5d\xdc\x60\xb6\x6f\xdc\x5e\xb6\x70\x00\x00\x00\x00\xdd\x73\xb9\x55\xb9\x54\x00\x00\xb9\x53\x00\x00\xe0\xac\xe0\xad\x00\x00\x00\x00\xe4\x73\xe4\x75\xbb\xc6\xbb\xc3\x00\x00\xbb\xc5\xbb\xc4\xe4\x74\xe4\x72\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 9180 */ "\xe8\x61\xe8\x5e\xe8\x5f\xbe\x4d\xe8\x60\xe8\x5b\xe8\x5c\xbe\x4a\x00\x00\xbe\x4b\xe8\x5d\xbe\x4c\x00\x00\xeb\xdb\x00\x00\xeb\xdc\xeb\xd9\xeb\xda\xbf\xf4\xeb\xd8\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xee\xc8\xee\xc5\xee\xc7\xc1\xe0\xee\xcb\xc1\xdf\xee\xc9\xee\xcc\xee\xca\xee\xc6\xc1\xde\x00\x00\xf1\x4f\x00\x00\xf1\x50\xf1\x4e\x00\x00\xf1\x52\xc2\xe5\xc2\xe6\xf3\x5f\xc3\xe7\xf1\x51\xf3\x5e\xc3\xe6\xf4\xe5\xf4\xe6\xc4\xbf\xf4\xe4\x00\x00\xf4\xe3\x00\x00\xf6\x5d\xc5\x48\x00\x00\xf8\x49\xf8\xc8\xf8\xc7\x00\x00\xc6\x43\xc6\x5d\xf8\xc9\xf9\x71\x00\x00\xc6\x6f\xa8\xbc\xaa\xf6\x00\x00\xb9\x56\x00\x00\xc4\xc0\xa8\xbd\xad\xab\xb3\xa5\xb6\x71\xc2\xe7\xaa\xf7\x00\x00\xd0\xc1\xd0\xc0\xd4\x42\x00\x00\xb0\x78\xb0\x76\xb0\x7a\xd4\x44\x00\x00\xb0\x79\xb0\x77\x00\x00\x00\x00\x00\x00\x00\x00\xd4\x43\xb3\xa8\xd7\xfc\x00\x00\xb3\xa7\xb3\xa9\xd8\x42\xb3\xab\xd7\xfe\xd8\x40\xd7\xf7\xb3\xaa\xd8\x43\x00\x00\x00\x00\xd7\xf9\x00\x00\xd7\xfa\xd7\xf8\xb3\xa6\x00\x00\xd8\x41\xd7\xfb\xd7\xfd\x00\x00\x00\x00\x00\x00\xdc\x6d\x00\x00\xdc\x6c", /* 9200 */ "\xdc\x6a\xdc\x62\xdc\x71\xdc\x65\xdc\x6f\xdc\x76\xdc\x6e\xb6\x79\x00\x00\xb6\x75\xdc\x63\x00\x00\xdc\x69\xb6\x77\x00\x00\xdc\x68\xb6\x78\xb6\x7a\xdc\x6b\x00\x00\xb6\x72\xb6\x73\xdc\x77\xdc\x75\x00\x00\xdc\x74\xdc\x66\x00\x00\xdc\x72\x00\x00\xb6\x76\x00\x00\x00\x00\x00\x00\x00\x00\xb6\x74\xdc\x73\xdc\x64\xdc\x67\xdc\x70\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe4\xba\xe0\xb7\x00\x00\xe0\xb0\xe0\xc3\xe0\xcc\xe0\xb3\xb9\x61\x00\x00\xe0\xc0\xb9\x57\xb9\x59\xb9\x65\xe0\xb1\x00\x00\x00\x00\xb9\x5a\xb9\x5c\xb9\x66\xb9\x5b\x00\x00\x00\x00\x00\x00\x00\x00\xb9\x64\xe0\xb9\x00\x00\xe0\xae\xb9\x62\xe0\xb8\xb9\x5e\xe0\xca\xb9\x63\xe0\xc8\xe0\xbc\xe0\xc6\xb9\x60\xe0\xaf\xe0\xc9\xe0\xc4\x00\x00\xe0\xcb\xb9\x58\x00\x00\x00\x00\xb9\x67\xb9\x5d\x00\x00\x00\x00\xe0\xb5\x00\x00\xe0\xbd\xe0\xc1\x00\x00\xe0\xc5\xb9\x5f\xe0\xb4\xe0\xb2\xe0\xbe\x00\x00\x00\x00\x00\x00\x00\x00\xe0\xbb\xe0\xba\x00\x00\xe0\xbf\xe0\xc2\x00\x00\xe0\xc7\x00\x00\x00\x00\x00\x00\xe4\x78\x00\x00\xbb\xc7\xe4\xa4\xe4\x7a\xbb\xcc\xbb\xd0\xe4\xad\xe4\xb5\xe4\xa6", /* 9280 */ "\xbb\xc8\x00\x00\xe4\xaa\xe0\xb6\x00\x00\xbb\xc9\xe4\xb1\xe4\xb6\xe4\xae\x00\x00\xe4\xb0\xe4\xb9\xe4\xb2\xe4\x7e\xe4\xa9\x00\x00\x00\x00\xbb\xd1\x00\x00\xbb\xcd\xe4\x7c\xe4\xab\xbb\xcb\xe4\xa5\xbb\xca\xe4\xb3\xe4\xa2\xe4\x79\xbb\xce\xe4\xb8\x00\x00\x00\x00\xe4\x7b\xe4\xaf\xe4\xac\xe4\xa7\xe4\x77\xe4\x76\xe4\xa1\xe4\xb4\xbb\xcf\xe4\xb7\xe4\x7d\xe4\xa3\xbe\x52\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xbe\x5a\xbe\x55\xe8\xa4\xe8\xa1\xe8\x67\xbe\x50\x00\x00\xf9\xd7\x00\x00\xbe\x4f\xbe\x56\x00\x00\x00\x00\x00\x00\xe8\x65\xbe\x54\xe8\x71\xe8\x63\xe8\x64\xbe\x4e\xe8\xa3\xbe\x58\xe8\x74\xe8\x79\xe8\x73\xeb\xee\xe8\x6f\xe8\x77\xe8\x75\xe8\x68\xe8\x62\xe8\x7d\xbe\x57\xe8\x7e\x00\x00\xe8\x78\x00\x00\xe8\x6d\xe8\x6b\xe8\x66\x00\x00\x00\x00\x00\x00\xe8\x6e\xe8\x7b\xe8\x6a\xe8\x7a\xe8\xa2\x00\x00\x00\x00\xbe\x53\x00\x00\xe8\x76\xe8\x7c\xe8\x72\xe8\x6c\xbe\x51\x00\x00\x00\x00\x00\x00\xe4\xa8\xe8\x70\xbe\x59\xe8\x69\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xeb\xf4\xbf\xf7\xeb\xf3\xeb\xf0\xec\x44\xbf\xfb\x00\x00\xec\x41\xeb\xf8", /* 9300 */ "\xec\x43\xeb\xe9\xeb\xf6\x00\x00\xbf\xfd\x00\x00\xeb\xe1\x00\x00\xeb\xdf\xec\x42\x00\x00\xec\x40\xeb\xfe\xeb\xed\xeb\xec\xeb\xe2\xc0\x40\x00\x00\xeb\xe8\xeb\xf2\xeb\xfd\xc0\x43\xec\x45\x00\x00\xc1\xe8\xc0\x45\xbf\xfe\xeb\xe6\x00\x00\xeb\xef\xeb\xde\xeb\xe0\xbf\xf5\xc0\x42\xbf\xfa\xeb\xe7\xeb\xf7\xeb\xf1\xc0\x41\xeb\xdd\xc1\xe3\xeb\xf9\xeb\xfc\xbf\xfc\x00\x00\xeb\xeb\xc0\x44\xbf\xf9\x00\x00\x00\x00\x00\x00\xbf\xf8\xeb\xf5\xeb\xfb\xbf\xf6\x00\x00\xeb\xe4\xeb\xfa\x00\x00\x00\x00\xeb\xe5\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xeb\xea\xee\xd2\x00\x00\xee\xd7\xc1\xe5\xc1\xe7\xee\xdd\xc1\xe1\xee\xec\xee\xe3\xee\xd8\xee\xd9\xee\xe2\x00\x00\xc1\xee\xee\xe1\xee\xd1\xee\xe0\xee\xd4\xee\xed\xc1\xed\xc1\xeb\xee\xd5\x00\x00\xee\xe8\x00\x00\xee\xda\xee\xe7\x00\x00\xee\xe9\xee\xd0\xc1\xe6\x00\x00\xee\xea\x00\x00\x00\x00\xee\xde\x00\x00\xc1\xea\xee\xdb\x00\x00\x00\x00\xc1\xec\xee\xe4\x00\x00\x00\x00\x00\x00\xc1\xe4\xee\xd6\xee\xe5\x00\x00\xee\xdf\xeb\xe3\xee\xe6\xee\xd3\x00\x00\xc1\xe9\x00\x00", /* 9380 */ "\xee\xeb\x00\x00\xc1\xe2\xee\xce\x00\x00\x00\x00\x00\x00\x00\x00\xf1\x60\xf1\x59\xc2\xe9\x00\x00\xf1\x54\xf1\x63\xf1\x5b\xee\xdc\x00\x00\xf1\x65\xf1\x55\x00\x00\xc2\xe8\xf1\x5f\xc2\xea\xc2\xf2\xc2\xf0\xf1\x61\xc2\xf1\xf1\x57\x00\x00\xf1\x58\xf1\x5d\xf1\x62\x00\x00\xee\xcd\xc2\xeb\xf1\x6a\xf1\x67\xf1\x6b\xf1\x5e\xf1\x5a\xf1\x68\xf3\x6a\xf1\x5c\x00\x00\xc2\xee\x00\x00\xc2\xed\xee\xcf\xc2\xef\xf1\x64\xf1\x66\xc2\xec\xf1\x69\xf1\x53\x00\x00\xf1\x56\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf3\x73\x00\x00\xf3\x63\xc3\xeb\xf3\x71\x00\x00\x00\x00\xf3\x61\xc3\xec\x00\x00\xf3\x6c\x00\x00\xf3\x68\xc3\xf1\xf3\x72\xf3\x62\xf3\x65\xc3\xe9\xf3\x74\x00\x00\xf3\x6d\xf3\x70\xc3\xef\xc3\xf4\xc3\xf2\xf3\x69\xf3\x64\x00\x00\xc3\xed\xc3\xee\xf3\x60\xc3\xea\x00\x00\xc3\xe8\xc3\xf0\xf3\x6f\xc3\xf3\x00\x00\xf3\x6b\xf3\x75\xc3\xf5\x00\x00\x00\x00\x00\x00\xf3\x67\x00\x00\xf3\x6e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf4\xf3\xf5\x42\xf4\xf5\xf4\xfc\xf3\x66\xf4\xfa\xf4\xe9\xf5\x40\xc4\xc3\xf4\xed\xf4\xfe", /* 9400 */ "\xf4\xf4\x00\x00\x00\x00\xc4\xc2\x00\x00\x00\x00\xf5\x44\xf4\xf6\x00\x00\xf4\xfb\xf4\xfd\xf4\xe7\xf5\x41\xf4\xf2\xf4\xf7\xf4\xeb\xf4\xef\xf5\x43\xf4\xf9\xf4\xe8\xf4\xec\xf4\xee\xf4\xf8\x00\x00\xc4\xc1\xf4\xf1\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf4\xea\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf4\xf0\xf6\x61\xf6\x66\xc5\x4f\xf6\x68\x00\x00\xc5\x49\x00\x00\xf6\x64\xf6\x6a\xc5\x4e\xc5\x4a\x00\x00\xc5\x4b\xf6\x60\xf6\x67\xc5\x4d\xf6\x65\xc5\x4c\xf6\x5f\xf6\x63\xf6\x62\x00\x00\xf6\x5e\xf6\x69\x00\x00\x00\x00\x00\x00\xc5\xb1\xf7\x6d\xf7\x70\xf7\x6c\xf7\x6e\xf7\x6f\xf7\x69\xf7\x6a\xf7\x67\x00\x00\x00\x00\xf7\x6b\xf7\x68\xc5\xb2\xc5\xb3\x00\x00\x00\x00\xf8\x4b\x00\x00\xf8\x4d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf8\x4c\xf8\x4e\x00\x00\xc5\xe0\x00\x00\xf8\x4a\xc5\xdf\xc5\xe1\x00\x00\x00\x00\x00\x00\xf8\xcb\xf8\xcc\xc6\x44\xf8\xca\x00\x00\xf9\x53\xf9\x52\xf9\x54\xc6\x5f\xf9\x55\xc6\x5e\xf9\x56\xf9\x72\xf9\x75\xf9\x74\xc6\x68\xf9\x73\x00\x00\x00\x00\x00\x00\xc6\x72\xc6\x70\xc6\x71\xc6\x77", /* 9480 */ "\xf9\xc0\xf9\xc1\xf9\xbf\xf9\xc9\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 9500 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xaa\xf8\x00\x00\x00\x00\xd8\x44\xdc\x78\xe8\xa5\xf3\x76\x00\x00\x00\x00", /* 9580 */ "\xaa\xf9\x00\x00\xad\xac\xb0\x7b\x00\x00\x00\x00\xd8\x45\x00\x00\xd8\x46\xb3\xac\x00\x00\xb6\x7d\xdc\x7a\xdc\x79\xb6\xa3\xb6\x7c\xdc\x7b\xb6\x7e\xb6\xa2\xb6\xa1\xb6\x7b\x00\x00\x00\x00\x00\x00\xb9\x68\x00\x00\x00\x00\xe0\xd0\xe0\xce\x00\x00\xe0\xcf\xe0\xcd\x00\x00\xbb\xd2\x00\x00\xbb\xd5\xbb\xd7\xbb\xd6\x00\x00\x00\x00\xbb\xd3\xbb\xd4\x00\x00\xe8\xa7\xe8\xa6\xbe\x5b\xe8\xa8\x00\x00\xe8\xa9\xbe\x5c\x00\x00\x00\x00\x00\x00\xec\x4d\xec\x4b\xee\xf3\x00\x00\xec\x49\xec\x4a\xc0\x46\xec\x46\xec\x4e\xec\x48\xec\x4c\xee\xef\x00\x00\x00\x00\xee\xf1\x00\x00\xee\xf2\xc1\xf3\xee\xee\xc1\xf2\xee\xf0\xc1\xef\xc1\xf0\xc1\xf1\xec\x47\x00\x00\x00\x00\xc2\xf5\xf1\x6e\xf1\x6c\xf1\x6d\xc2\xf3\xc2\xf6\xc2\xf4\x00\x00\x00\x00\x00\x00\xf3\x77\xf3\x78\xc3\xf6\x00\x00\xf5\x45\xf5\x47\xf5\x46\xc4\xc4\xc5\x50\xf6\x6d\xf6\x6c\xf6\x6b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 9600 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xaa\xfa\x00\x00\xc9\xaa\x00\x00\xca\x58\xa6\xe9\xca\x56\xca\x59\xca\x57\x00\x00\x00\x00\x00\x00\xcb\xae\x00\x00\xa8\xc1\x00\x00\xa8\xc2\xcb\xb0\xa8\xbf\xcb\xaf\xcb\xad\xa8\xc0\xa8\xbe\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xcd\xd8\xcd\xdb\xaa\xfd\xcd\xda\xcd\xd9\x00\x00\xaa\xfc\xaa\xfb\x00\x00\xab\x40\xcd\xdc\xaa\xfe\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd0\xc6\xad\xae\xad\xaf\xad\xb0\xd0\xc7\xd0\xc3\xad\xad\xd0\xc4\x00\x00\xd0\xc5\xd0\xc2\x00\x00\x00\x00\x00\x00\xb0\xa4\x00\x00\x00\x00\xb0\xa1\xd4\x45\xb0\xa2\xb0\xa5\xd4\x46\x00\x00\xb0\x7e\xb0\x7c\xb0\x7d\xb0\xa3\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xb3\xad\xd8\x49\xb3\xb5\xd8\x48\x00\x00\xd8\x4b\xb3\xb1\xd8\x4a\xb6\xab\xb3\xaf\xb3\xb2\xb3\xae\xb3\xb3\xb3\xb4\xb3\xb0\x00\x00\x00\x00\x00\x00\xd8\x47\xb6\xa7\xdc\x7d\x00\x00", /* 9680 */ "\xdc\xa3\x00\x00\x00\x00\xdc\xa2\xb6\xac\xb6\xa8\xb6\xa9\xdc\x7c\xdc\x7e\xdc\xa1\xb6\xa4\xb6\xa6\x00\x00\xb6\xaa\xb6\xa5\x00\x00\x00\x00\xe0\xd3\xe0\xd1\xe0\xd2\xb9\x6a\xb9\x6b\x00\x00\xe0\xd4\xb9\x69\xbb\xd8\x00\x00\xbb\xda\xbb\xd9\x00\x00\xe4\xbb\x00\x00\x00\x00\xe4\xbc\xe8\xab\x00\x00\xe8\xaa\x00\x00\x00\x00\xc0\x47\xc0\x48\xec\x4f\xc0\x49\x00\x00\xee\xf6\x00\x00\xee\xf4\x00\x00\xee\xf5\xc1\xf4\x00\x00\xf1\x6f\xc3\xf7\x00\x00\x00\x00\x00\x00\xc1\xf5\xab\x41\x00\x00\xb0\xa6\xd4\x47\x00\x00\x00\x00\xd8\x4c\xb3\xb6\xb6\xad\xdc\xa4\xdc\xa6\xb6\xaf\xb6\xae\xb6\xb0\xb6\xb1\xdc\xa5\xb9\x6e\xb9\x6f\xb9\x6d\xbb\xdb\xb9\x6c\xe0\xd5\x00\x00\x00\x00\x00\x00\xbb\xdc\xe8\xac\xec\x50\xc0\x4a\xc1\xf6\xf1\x70\xf1\x74\xc2\xf9\xf1\x71\xc2\xfa\xc2\xf8\xf1\x75\xc2\xfb\xf1\x73\x00\x00\xf3\x79\xc2\xf7\xc3\xf8\x00\x00\xf8\xcd\x00\x00\x00\x00\xab\x42\xb3\xb8\xb3\xb7\x00\x00\x00\x00\x00\x00\x00\x00\xb6\xb2\xdc\xa8\xdc\xa7\xb6\xb3\x00\x00\x00\x00\xe0\xd9\xb9\x73\xb9\x70\xe0\xd8\xb9\x72\xe0\xd6\xb9\x71\x00\x00\xe0\xd7\x00\x00\xe4\xbd", /* 9700 */ "\xbb\xdd\x00\x00\xe8\xaf\x00\x00\xbe\x5d\xe8\xad\xbe\x5e\xbe\x5f\xe8\xae\xbe\x60\x00\x00\xec\x51\x00\x00\xc0\x4e\xc0\x4b\xc0\x50\xec\x53\xc0\x4c\xec\x52\xc0\x4f\x00\x00\x00\x00\xc0\x4d\x00\x00\xee\xf9\xee\xfb\x00\x00\x00\x00\xc1\xf7\xee\xfa\xc1\xf8\xee\xf8\xee\xf7\x00\x00\xf1\x77\xf1\x76\xc2\xfc\xf1\x78\xf3\x7e\xc3\xfa\xf3\x7d\xf3\x7a\xc3\xf9\xf3\x7b\xf3\x7c\x00\x00\xf5\x48\xf5\x49\xc4\xc5\x00\x00\xc5\x53\x00\x00\x00\x00\xf6\x6e\x00\x00\x00\x00\xc5\x51\xc5\x52\xf6\x6f\x00\x00\x00\x00\xc5\xb4\xc5\xb5\xf7\x71\x00\x00\x00\x00\xc6\x45\xf8\xcf\xc6\x47\x00\x00\xf8\xce\xf8\xd0\xc6\x46\xf9\x57\x00\x00\xf9\xad\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xab\x43\x00\x00\x00\x00\x00\x00\xb9\x74\x00\x00\xe4\xbe\x00\x00\xe8\xb0\xc0\x51\xc0\x52\x00\x00\xab\x44\x00\x00\xbe\x61\xc3\xfb\xad\xb1\x00\x00\x00\x00\x00\x00\xc0\x53\x00\x00\xc5\xe2\xad\xb2\xd8\x4d\x00\x00\xdc\xa9\x00\x00\xdc\xab\x00\x00\xdc\xaa\x00\x00\xe0\xdd\xe0\xda\xb9\x75\x00\x00\xb9\x76\xe0\xdb\xe0\xdc\x00\x00\xe4\xc0\xe4\xc5\xbb\xde\xe4\xbf\xe4\xc1\xe4\xc8", /* 9780 */ "\xe4\xc3\xe4\xc7\xe4\xc4\xe4\xc2\xe4\xc6\xbb\xdf\x00\x00\x00\x00\xe8\xb3\x00\x00\xe8\xb1\xbe\x63\x00\x00\xbe\x62\xe8\xb2\xbe\x64\x00\x00\x00\x00\x00\x00\x00\x00\xec\x56\x00\x00\x00\x00\xec\x55\xc0\x54\xec\x54\xee\xfc\x00\x00\xee\xfe\xef\x41\xef\x40\x00\x00\xc1\xf9\xee\xfd\xf1\xa1\xc2\xfd\xf1\x7d\xf1\xa2\xc2\xfe\x00\x00\xf1\x7b\x00\x00\xf1\x7e\xf1\x7c\xf1\x79\xc3\x40\xf1\x7a\x00\x00\x00\x00\x00\x00\x00\x00\xf3\xa1\x00\x00\x00\x00\xf3\xa3\xf3\xa2\x00\x00\xf5\x4a\x00\x00\xf5\x4b\x00\x00\x00\x00\x00\x00\xf6\x70\x00\x00\xc5\xb7\x00\x00\xc5\xb6\xf8\x4f\xf8\x50\xc6\x48\xf8\xd1\x00\x00\xc6\x69\x00\x00\xad\xb3\xb6\xb4\xe4\xca\xe4\xc9\xe8\xb5\xe8\xb4\x00\x00\x00\x00\xc1\xfa\xef\x43\xef\x42\xf1\xa5\xf1\xa3\xf1\xa6\xf1\xa4\x00\x00\x00\x00\xc3\xfc\xf3\xa4\xf3\xa5\xf3\xa6\x00\x00\xf6\x71\x00\x00\xf7\x72\x00\x00\xf8\xd2\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xad\xb4\x00\x00\x00\x00\xec\x57\xef\x44\x00\x00\xad\xb5\x00\x00\x00\x00\xbb\xe0\x00\x00\xec\x58\xc3\x41\xf1\xa7\xc3\xfd\x00\x00\xf5\x4c\xf5\x4d\xc5\x54", /* 9800 */ "\xf8\x51\xad\xb6\xb3\xbb\xb3\xbc\xd8\x4e\xb6\xb5\xb6\xb6\xdc\xac\xb6\xb7\x00\x00\xb9\x7a\x00\x00\xb9\x7c\xe0\xdf\xe0\xe0\xe0\xde\xb9\x77\xb9\x78\xb9\x7b\xb9\x79\x00\x00\x00\x00\xe4\xcb\xbb\xe1\xbb\xe2\x00\x00\x00\x00\xe8\xbc\xbe\x67\xe8\xb7\xe8\xb6\x00\x00\xe8\xbb\xbe\x65\x00\x00\x00\x00\xc0\x5b\x00\x00\xe8\xb8\xe8\xbd\xe8\xba\xe8\xb9\x00\x00\xbe\x66\x00\x00\xc0\x59\x00\x00\xec\x5a\xc0\x55\x00\x00\xec\x5b\x00\x00\x00\x00\xec\x59\x00\x00\xc0\x58\xc0\x56\xc0\x5a\x00\x00\xc0\x57\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xef\x45\x00\x00\xef\x4a\xef\x46\xef\x49\xc1\xfb\x00\x00\xed\xd4\xef\x48\xef\x47\x00\x00\xc3\x44\xc3\x42\xc3\x45\xc3\x43\xf1\xa8\xf1\xa9\xf1\xaa\xc3\x46\x00\x00\x00\x00\x00\x00\xf3\xaa\xc4\x40\xf3\xa8\x00\x00\xc4\x41\xf3\xa7\xf3\xa9\xc3\xfe\xf5\x51\xf5\x4e\x00\x00\xf5\x4f\xf5\x50\xf6\x72\xc5\x56\x00\x00\xc5\x55\x00\x00\xf7\x74\xf7\x73\xc5\xb8\x00\x00\x00\x00\x00\x00\xc5\xe3\xc6\x49\xc6\x60\xf9\x58\xf9\xae\xf9\xaf\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 9880 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xad\xb7\xdc\xad\x00\x00\x00\x00\xe0\xe1\xe4\xcc\xe4\xcd\xbb\xe3\x00\x00\xbb\xe4\xe8\xbe\xbe\x68\x00\x00\x00\x00\xc1\xfc\x00\x00\xf1\xab\x00\x00\xc3\x47\xf3\xad\xc4\x42\xf3\xac\xf3\xae\xf3\xab\xf6\x75\xf5\x52\xf5\x53\x00\x00\xc4\xc6\x00\x00\xf6\x74\x00\x00\x00\x00\xf6\x73\x00\x00\xf7\x75\xf9\xb0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xad\xb8\x00\x00\x00\x00\x00\x00\xad\xb9\x00\x00\x00\x00\xb0\xa7\xd4\x48\x00\x00\xd8\x4f\x00\x00\xb6\xb8\x00\x00\xb6\xbb\xb6\xb9\xdc\xae\x00\x00\xb6\xbd\x00\x00\xb6\xba\x00\x00\x00\x00\xb6\xbc\x00\x00\xb9\x7e\x00\x00\xe0\xe2\x00\x00\x00\x00\xe0\xe3\xe8\xc0\x00\x00\xb9\x7d\xb9\xa1\xb9\xa2\x00\x00", /* 9900 */ "\xe4\xcf\x00\x00\xe4\xce\xbb\xe5\x00\x00\xbb\xe6\x00\x00\xe4\xd0\xe8\xbf\xbb\xe8\xbe\x69\x00\x00\xbb\xe7\x00\x00\x00\x00\x00\x00\xc0\x5c\xe8\xc1\xbe\x6b\xbe\x6a\xe8\xc2\xe8\xc5\xe8\xc3\xe8\xc4\xbe\x6c\x00\x00\xc0\x61\xc0\x5f\x00\x00\x00\x00\xc0\x5e\xec\x5d\x00\x00\xc0\x60\x00\x00\x00\x00\xec\x5c\xef\x4b\x00\x00\xec\x5e\xc0\x5d\xec\x5f\xef\x4e\xef\x4c\xef\x4d\xef\x52\xc3\x4b\xef\x51\xef\x54\xef\x53\xef\x50\xef\x4f\x00\x00\xc1\xfd\x00\x00\x00\x00\x00\x00\x00\x00\xf1\xae\x00\x00\xf1\xad\xc3\x4a\xc3\x48\xc3\x49\x00\x00\xf1\xac\x00\x00\xf3\xb1\x00\x00\xc4\x43\x00\x00\xf3\xb0\xf3\xaf\xc4\x44\x00\x00\xf5\x58\xf5\x57\x00\x00\xf5\x55\x00\x00\xf5\x54\xc4\xc8\xc4\xc7\xf5\x59\xf7\x76\xc5\xb9\xf6\x77\xc5\x57\xf6\x76\xf5\x56\x00\x00\xf7\x77\xc5\xe4\x00\x00\xc6\x61\xf9\x59\x00\x00\xf9\xb1\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 9980 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xad\xba\xd8\x50\xef\x55\xad\xbb\x00\x00\x00\x00\xe4\xd2\xe4\xd1\xec\x60\x00\x00\x00\x00\xef\x57\x00\x00\xef\x56\x00\x00\xc3\x4c\xf3\xb2\xf3\xb3\xc4\xc9\x00\x00\x00\x00\xf9\xb2\xb0\xa8\xb6\xbf\xb6\xbe\xe0\xe4\xe0\xe6\xb9\xa4\xe0\xe5\xb9\xa3\xb9\xa5\xe0\xe7\x00\x00\x00\x00\x00\x00\xe4\xd4\xe4\xd6\xe4\xd5\x00\x00\xe4\xd8\x00\x00\x00\x00\x00\x00\xbb\xe9\xe4\xd7\xe4\xd3\x00\x00\x00\x00\x00\x00\xe4\xd9\x00\x00\xe8\xcc\x00\x00\xe8\xcf\xe8\xd1\xe8\xc7\xe8\xcb\xe8\xc8\xbe\x6e\xbe\x71\xbe\x73\xe8\xc9\xe8\xca\xbe\x72\xe8\xcd\xe8\xd0\xe8\xce\xbe\x74\x00\x00\xbe\x70\xe8\xc6\xbe\x6d\x00\x00\xbe\x6f\x00\x00\x00\x00\xc0\x63\xec\x66\xec\x64\xec\x63\x00\x00\xec\x69\x00\x00\xec\x68\xec\x67\x00\x00\xec\x62\xc0\x62\xec\x61\x00\x00\xec\x65\xc0\x64\x00\x00\x00\x00\xef\x5a\x00\x00\xef\x5e\xef\x5b\xef\x5d\xef\x5c\xef\x59\xef\x5f\xef\x62\xef\x60\xef\x61\xc2\x40", /* 9a00 */ "\x00\x00\xc1\xfe\xef\x58\xef\x63\xf1\xb3\xf1\xb6\xf1\xb8\xf1\xb7\x00\x00\xf1\xb1\xf1\xb5\xf1\xb0\x00\x00\xf1\xb2\xc3\x4d\xf1\xaf\x00\x00\xf1\xb4\x00\x00\x00\x00\xf3\xc0\xf3\xb5\xc4\x45\x00\x00\x00\x00\xc4\x46\xf3\xb4\xf3\xb9\xf3\xbf\xf3\xb7\xf3\xbe\x00\x00\xf3\xbb\x00\x00\xf3\xba\xf3\xbd\xf3\xb8\xf3\xb6\x00\x00\xf3\xbc\x00\x00\xf5\x60\xf5\x5e\xc4\xca\xf5\x5d\xf5\x63\xf5\x61\x00\x00\xc4\xcb\xf5\x5c\xf5\x5a\x00\x00\xf5\x5b\xc4\xcd\xf5\x5f\xc4\xcc\xf5\x62\xf6\x78\xf6\x7e\x00\x00\x00\x00\xf6\x79\xc5\x5b\xf6\xa1\xc5\x5a\xf6\x7d\xf6\x7c\xc5\x59\xf6\x7b\xc5\x58\xf6\x7a\x00\x00\xf7\x7d\xf7\xa1\xf7\x7e\x00\x00\xf7\x7b\xc5\xbb\xf7\x78\xf7\x7c\xf7\xa3\x00\x00\xf7\xa2\xf7\x79\xf7\x7a\xc5\xba\xf8\x52\xc5\xe7\x00\x00\xf8\x53\xc5\xe5\xc5\xe6\x00\x00\x00\x00\xf8\xd3\xc6\x4a\xf9\x76\x00\x00\xc6\x6a\x00\x00\xf9\xb3\xc6\x6b\xf9\xb4\xf9\xb5\xf9\xc3\xf9\xc2\xc6\x7a\xf9\xcd\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 9a80 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xb0\xa9\x00\x00\x00\x00\xe0\xe9\x00\x00\xe0\xe8\x00\x00\xbb\xea\xbb\xeb\xe4\xda\x00\x00\xe8\xd2\xec\x6c\x00\x00\x00\x00\xbe\x75\xc0\x65\xec\x6a\x00\x00\xec\x6d\xc0\x66\x00\x00\xef\x64\xec\x6b\xf1\xb9\xc3\x4e\xf3\xc1\x00\x00\x00\x00\x00\x00\xf5\x66\xf5\x64\x00\x00\x00\x00\xf5\x65\x00\x00\x00\x00\xf6\xa2\x00\x00\xc5\x5c\xf7\xa4\xc5\xea\xc5\xbc\xc5\xe8\xc5\xe9\xf8\xd4\xc6\x62\x00\x00\xb0\xaa\x00\x00\x00\x00\x00\x00\xf1\xba\x00\x00\x00\x00\xd4\x49\x00\x00\xb9\xa6\x00\x00\xe4\xdb\x00\x00\x00\x00\xbb\xec\xe4\xdc\x00\x00\x00\x00\x00\x00\xe8\xd4\xe8\xd3\xc0\x68\xbe\x76\xbe\x77\x00\x00\xe8\xd7\xe8\xd6\xe8\xd5\x00\x00\x00\x00\xec\x6e\xec\x71\x00\x00\xec\x70\xec\x6f\xc0\x67\xef\x68\xef\x66\xef\x65\x00\x00", /* 9b00 */ "\x00\x00\xef\x67\x00\x00\xc3\x4f\xf1\xbc\xf1\xbd\xc3\x50\x00\x00\xf1\xbb\x00\x00\xf3\xc3\xf3\xc2\xf3\xc5\xc4\x47\xf3\xc4\x00\x00\xf5\x67\xf5\x69\xf5\x68\x00\x00\x00\x00\xf6\xa3\xf6\xa6\xf6\xa4\xf6\xa5\xf7\xa5\xc5\xbd\x00\x00\x00\x00\x00\x00\xf8\x54\xf8\x55\xf8\x56\x00\x00\xc6\x4b\xc6\x63\xf9\xb6\xb0\xab\x00\x00\xbe\x78\xc0\x69\xf1\xbe\x00\x00\xf7\xa6\x00\x00\x00\x00\xf9\xc4\xd4\x4a\x00\x00\xc6\x7b\xb0\xac\xec\x72\x00\x00\xf1\xbf\x00\x00\xf3\xc6\x00\x00\x00\x00\xf6\xa7\xf7\xa7\xb0\xad\x00\x00\xe4\xdd\xe4\xde\x00\x00\xbb\xed\xbb\xee\xe8\xd9\xbe\x7a\xbe\x79\xe8\xd8\x00\x00\xef\x69\x00\x00\xf1\xc0\xf1\xc2\xf1\xc1\xc3\x53\xc3\x52\xc3\x51\x00\x00\xc5\x5e\xf6\xa8\x00\x00\xc5\x5d\xf7\xa9\xf7\xa8\x00\x00\xc6\x4c\xf8\xd5\xb3\xbd\xe0\xea\x00\x00\x00\x00\x00\x00\xe4\xe1\xe4\xdf\xe4\xe0\x00\x00\x00\x00\xe8\xe2\x00\x00\xe8\xdd\xe8\xda\xe8\xe1\x00\x00\x00\x00\x00\x00\xe8\xe3\x00\x00\x00\x00\xbe\x7c\xe8\xe0\xe8\xdc\x00\x00\x00\x00\xe8\xdb\xe8\xdf\xe8\xde\xbe\x7b\x00\x00\x00\x00\xec\x7d\xec\x78\xec\x76\xec\xa1\xec\x77\x00\x00", /* 9b80 */ "\xec\x73\x00\x00\xec\x79\x00\x00\x00\x00\xec\x74\xef\x72\xec\x75\xec\xa2\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xec\x7c\xc0\x6a\xec\x7b\xec\x7a\x00\x00\xec\x7e\x00\x00\x00\x00\x00\x00\x00\x00\xef\x6a\xef\x6d\x00\x00\x00\x00\xef\x6c\x00\x00\xef\x74\xef\x6f\xef\x73\x00\x00\xef\x71\xef\x70\xef\x6e\x00\x00\xef\x6b\x00\x00\xc2\x43\xc2\x42\x00\x00\xc2\x44\xc2\x41\xef\x75\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf1\xc8\xf1\xcb\x00\x00\xf1\xc9\xf1\xcd\x00\x00\x00\x00\x00\x00\xf1\xce\x00\x00\xf1\xc6\xc3\x58\xf1\xc7\x00\x00\xf1\xc5\xf1\xcc\x00\x00\xf1\xc4\xf1\xc3\xc3\x57\xc3\x55\xc3\x54\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf1\xca\xf3\xcf\xf3\xd5\xc4\x4a\xf3\xd0\x00\x00\xf3\xd3\xf3\xd7\xc4\x4b\xf3\xd2\x00\x00\xf3\xca\x00\x00\xf3\xc9\xf3\xd6\xf3\xcd\x00\x00\xf3\xcb\xf3\xd4\xf3\xcc\xc4\x49\xc4\x48\x00\x00\xf3\xc7\xf3\xc8\xf3\xd1\x00\x00\x00\x00\x00\x00\xf3\xce\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf5\x6c\xf5\x6f\x00\x00\x00\x00\x00\x00\x00\x00\xc3\x56\x00\x00\x00\x00", /* 9c00 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf5\x6d\xf5\x73\xf5\x71\xf5\x6b\xf5\x76\x00\x00\xf5\x6a\x00\x00\xc4\xcf\xf5\x72\x00\x00\x00\x00\x00\x00\xf5\x6e\xc4\xce\xf5\x75\x00\x00\x00\x00\xf5\x74\x00\x00\x00\x00\x00\x00\x00\x00\xf6\xab\xf6\xaa\x00\x00\x00\x00\x00\x00\xf6\xb1\x00\x00\xf6\xad\xf6\xb0\xc5\x60\x00\x00\x00\x00\xf6\xae\xf6\xaf\x00\x00\xf6\xa9\xf6\xac\xc5\x5f\x00\x00\x00\x00\x00\x00\xc5\xbf\xf7\xb4\xf7\xaf\xf7\xb3\x00\x00\xf7\xb6\xf7\xb2\x00\x00\xf7\xae\x00\x00\xc5\xc1\xf7\xb1\xf7\xb5\xc5\xc0\xf7\xac\xf5\x70\xf7\xb0\x00\x00\x00\x00\xf7\xad\x00\x00\xf7\xaa\x00\x00\xf7\xab\xc5\xbe\xf8\x5a\xf8\x5c\xf8\x5f\xf8\x5b\xf8\x60\x00\x00\xf8\x59\x00\x00\xf8\x57\x00\x00\xc5\xeb\xf8\x5d\xc5\xed\xc5\xec\xf8\x58\xf8\x5e\x00\x00\x00\x00\x00\x00\x00\x00\xf8\xda\xc6\x4d\xf8\xdb\x00\x00\xf8\xd9\xf8\xd6\x00\x00\x00\x00\xf8\xd8\xf8\xd7\xf9\x5a\x00\x00\x00\x00\x00\x00\x00\x00\xf9\x5c\xf9\x5b\x00\x00\x00\x00\xf9\x79\x00\x00\xf9\x78\xf9\x77\xf9\x7a\x00\x00\xc6\x73\xc6\x74\xf9\xca\xf9\xce\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 9c80 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xb3\xbe\xdc\xaf\xe0\xed\x00\x00\xb9\xa7\xe0\xeb\x00\x00\x00\x00\xe0\xec\x00\x00\x00\x00\x00\x00\xe4\xe2\xe4\xe3\xbb\xf1\xbb\xef\xe4\xe4\xbb\xf0\xe8\xe8\x00\x00\xe8\xeb\xe8\xe5\xe8\xec\xe8\xe4\xe8\xe6\x00\x00\xe8\xe7", /* 9d00 */ "\xe8\xea\x00\x00\x00\x00\xbe\xa1\xe8\xef\xe8\xee\xbe\x7d\xe8\xe9\xe8\xed\xbe\x7e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xec\xac\x00\x00\xc0\x6f\x00\x00\xec\xa7\xc0\x6b\x00\x00\xec\xa4\xec\xaa\xec\xad\x00\x00\xc0\x70\x00\x00\xec\xa9\xec\xa6\xec\xae\xec\xa5\x00\x00\xec\xab\xc0\x6c\x00\x00\xec\xa3\xc0\x6d\x00\x00\xc0\x6e\xec\xa8\x00\x00\x00\x00\x00\x00\xef\xa9\xef\x7a\xef\x7b\xef\x7e\xef\x7c\x00\x00\xef\x76\x00\x00\x00\x00\xef\x79\xef\xa5\xef\x7d\x00\x00\x00\x00\xc2\x45\x00\x00\xef\xa7\xef\xa4\xc2\x46\xef\xa6\xef\x77\xef\xa2\xef\xa3\x00\x00\xef\xa1\x00\x00\x00\x00\x00\x00\x00\x00\xf1\xd2\xf1\xd4\xf1\xd7\x00\x00\x00\x00\xf1\xd1\x00\x00\xc3\x59\xf1\xd9\xf1\xd0\xf1\xda\x00\x00\xf1\xd6\xf1\xd8\xf1\xdc\xf1\xd5\xf1\xdd\xf1\xd3\xf1\xcf\xc3\x5a\x00\x00\xf1\xdb\xc3\x5b\xc4\x4d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xef\x78\xf3\xf1\xf3\xe8\xc4\x4f\xf3\xe4\xc4\x50\x00\x00\x00\x00\xf3\xed\xf3\xe7\xf3\xdd\xc4\x4e\xf3\xea\xf3\xe5\xf3\xe6\x00\x00\xf3\xd8\xf3\xdf\xf3\xee\x00\x00\xf3\xeb\x00\x00\xf3\xe3\x00\x00\xf3\xef", /* 9d80 */ "\xf3\xde\xf3\xd9\xf3\xec\x00\x00\xf3\xdb\xf3\xe9\xf3\xe0\xf3\xf0\xf3\xdc\xc4\x4c\xf3\xda\xf3\xe1\xf3\xe2\x00\x00\x00\x00\x00\x00\xf5\x7d\x00\x00\xf5\x7b\x00\x00\xf5\xa2\x00\x00\xf5\xae\xf5\xa5\xf5\x7c\xf5\x78\xf5\xa7\xf5\x7e\xf5\xa3\xf5\x7a\xf5\xaa\xf5\x77\xf5\xa1\xf5\xa6\xf5\xa8\xf5\xab\xf5\x79\x00\x00\xf5\xaf\xf5\xb0\xf5\xa9\xf5\xad\xf5\xa4\x00\x00\xf6\xc1\xf6\xc4\x00\x00\xc5\x61\x00\x00\xf6\xc3\xf6\xc8\xf6\xc6\xc5\x62\xf6\xbd\xf6\xb3\xf6\xb2\xc5\x64\xf6\xbf\xf6\xc0\xf6\xbc\xf6\xb4\x00\x00\xf6\xb9\xf5\xac\x00\x00\xf6\xb5\xc5\x63\xf6\xbb\x00\x00\xf6\xba\x00\x00\xf6\xb6\xf6\xc2\x00\x00\xf6\xb7\xf7\xbb\xf6\xc5\xf6\xc7\xf6\xbe\xf6\xb8\xf7\xbc\xf7\xbe\xf7\xb8\xc5\xc2\x00\x00\xf7\xc5\xf7\xc3\xc5\xc3\xf7\xc2\xf7\xc1\xf7\xba\xf7\xb7\xf7\xbd\xf7\xc6\xf7\xb9\xf7\xbf\x00\x00\xf8\x69\xf8\x6e\xf8\x64\xf8\x67\xc5\xee\xf8\x6b\x00\x00\xf8\x72\xf7\xc0\x00\x00\xf8\x65\xf8\x6f\xf8\x73\xf8\x6a\xf8\x63\xf8\x6d\x00\x00\xf8\x6c\xf8\x71\xf8\x70\xf7\xc4\xf8\x68\xf8\x62\xf8\x66\xc6\x4e\xc6\x4f\xf8\x61\x00\x00\xf8\xe6\xf8\xdd\xf8\xe5", /* 9e00 */ "\xf8\xe2\xf8\xe3\xf8\xdc\xf8\xdf\xf8\xe7\xf8\xe1\xf8\xe0\xf8\xde\x00\x00\xf8\xe4\x00\x00\xf9\x5d\x00\x00\xf9\x5e\x00\x00\xf9\x60\xf9\x5f\xf9\x62\xf9\x61\xf9\x7c\xf9\x7b\xf9\xb7\x00\x00\xf9\xb8\x00\x00\xf9\xc5\xc6\x78\xc6\x7c\x00\x00\xf9\xcf\xc6\x7d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xb3\xbf\x00\x00\x00\x00\x00\x00\xc4\xd0\xf6\xc9\x00\x00\xc6\x50\xc6\x51\x00\x00\xb3\xc0", /* 9e80 */ "\xe0\xee\x00\x00\xb9\xa8\xe8\xf0\x00\x00\x00\x00\xec\xb0\xec\xb1\xec\xaf\xef\xab\xef\xaa\xc2\x47\xf1\xdf\xef\xac\xf1\xde\x00\x00\x00\x00\xf3\xf3\xc4\x51\xc4\x53\xf3\xf2\x00\x00\x00\x00\xc4\x52\x00\x00\xf5\xb1\xf5\xb3\xf5\xb2\xf6\xca\xc5\x65\x00\x00\xc5\xef\xf8\xe8\xf9\x63\x00\x00\x00\x00\xf9\xd2\xb3\xc1\x00\x00\xe4\xe5\x00\x00\xbe\xa2\x00\x00\x00\x00\x00\x00\xec\xb3\xec\xb2\x00\x00\xef\xad\x00\x00\x00\x00\x00\x00\xc4\x54\xc4\xd1\xf7\xc7\xf9\xcb\x00\x00\x00\x00\x00\x00\xb3\xc2\xbb\xf2\x00\x00\xbe\xa3\x00\x00\xf3\xf4\x00\x00\xf8\x74\xb6\xc0\x00\x00\x00\x00\x00\x00\x00\x00\xef\xae\x00\x00\x00\x00\x00\x00\xc6\x64\xb6\xc1\xbe\xa4\xc2\x48\xf8\x75\xb6\xc2\x00\x00\xe8\xf1\xc0\x72\xec\xb4\xec\xb5\x00\x00\xc0\x71\x00\x00\xef\xaf\xc2\x4c\xc2\x4a\xc2\x4b\xc2\x49\xf1\xe0\xc3\x5c\x00\x00\x00\x00\x00\x00\xf5\xb5\xf5\xb4\xf5\xb7\xf5\xb6\xc4\xd2\x00\x00\x00\x00\xf6\xcb\x00\x00\xf6\xcd\xf6\xcc\xc5\x66\xf7\xc8\x00\x00\xf8\x76\xf8\x77\xc5\xf0\xf9\x64\xf9\x7d\xc6\x75\x00\x00\xdc\xb0\xec\xb6\xef\xb0\xf3\xf5\xe0\xef\x00\x00\xef\xb1", /* 9f00 */ "\xf1\xe2\xf1\xe1\x00\x00\x00\x00\x00\x00\x00\x00\xf8\x78\xc6\x52\x00\x00\xf9\x65\xf9\x7e\x00\x00\x00\x00\x00\x00\xb9\xa9\xe8\xf2\xe8\xf3\x00\x00\xec\xb7\xb9\xaa\x00\x00\xc3\x5d\xf1\xe3\x00\x00\xf6\xcf\xc5\x67\xf6\xd0\xf6\xce\xf8\x79\x00\x00\xf8\xe9\x00\x00\xb9\xab\x00\x00\xef\xb4\xef\xb3\xef\xb2\xf1\xe4\x00\x00\x00\x00\xf1\xe8\xf1\xe7\xf1\xe6\xf1\xe5\xc3\x5e\xf3\xf6\xf5\xb9\xc4\xd3\xf5\xb8\xf6\xd1\xf7\xcb\xf7\xca\xc5\xc4\xf7\xc9\xf8\x7c\xf8\x7b\xf8\x7a\x00\x00\x00\x00\xbb\xf3\x00\x00\xec\xb8\xc2\x4d\x00\x00\xf3\xf7\xf3\xf8\xf7\xcc\xf8\x7d\x00\x00\x00\x00\xf8\xea\xf9\x66\xf9\xb9\xf9\xd4\xbb\xf4\xc2\x4e\xf1\xe9\xf3\xf9\xf6\xd2\xf8\x7e\x00\x00\x00\x00\xbe\xa6\x00\x00\xef\xb5\xf1\xea\xf3\xfa\xf3\xfb\xf3\xfc\xf5\xbe\x00\x00\xf5\xba\xc5\x68\xf5\xbd\xf5\xbc\xc4\xd4\xf5\xbb\xc4\xd6\x00\x00\xc4\xd5\xf6\xd4\xf6\xd3\xc5\x69\xc5\x6a\x00\x00\x00\x00\xc5\xc6\xf7\xcd\xc5\xc5\x00\x00\xf8\xa3\xf8\xa4\xf8\xa2\xf8\xa1\xc6\x54\x00\x00\xf8\xeb\xf8\xec\xf8\xed\xc6\x53\xf9\x67\xf9\x6a\xf9\x69\xf9\x68\x00\x00\x00\x00\xf9\xd3\x00\x00", /* 9f80 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc0\x73\x00\x00\x00\x00\xc3\x65\xf5\xbf\xf6\xd5\x00\x00\xc5\xc7\xf7\xce\x00\x00\x00\x00\xf9\xd5\x00\x00\x00\x00\x00\x00\xc0\x74\x00\x00\x00\x00\x00\x00\xef\xb6\x00\x00\xf7\xcf\x00\x00\xf9\xa1\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* a000 */ NULL, /* a080 */ NULL, /* a100 */ NULL, /* a180 */ NULL, /* a200 */ NULL, /* a280 */ NULL, /* a300 */ NULL, /* a380 */ NULL, /* a400 */ NULL, /* a480 */ NULL, /* a500 */ NULL, /* a580 */ NULL, /* a600 */ NULL, /* a680 */ NULL, /* a700 */ NULL, /* a780 */ NULL, /* a800 */ NULL, /* a880 */ NULL, /* a900 */ NULL, /* a980 */ NULL, /* aa00 */ NULL, /* aa80 */ NULL, /* ab00 */ NULL, /* ab80 */ NULL, /* ac00 */ NULL, /* ac80 */ NULL, /* ad00 */ NULL, /* ad80 */ NULL, /* ae00 */ NULL, /* ae80 */ NULL, /* af00 */ NULL, /* af80 */ NULL, /* b000 */ NULL, /* b080 */ NULL, /* b100 */ NULL, /* b180 */ NULL, /* b200 */ NULL, /* b280 */ NULL, /* b300 */ NULL, /* b380 */ NULL, /* b400 */ NULL, /* b480 */ NULL, /* b500 */ NULL, /* b580 */ NULL, /* b600 */ NULL, /* b680 */ NULL, /* b700 */ NULL, /* b780 */ NULL, /* b800 */ NULL, /* b880 */ NULL, /* b900 */ NULL, /* b980 */ NULL, /* ba00 */ NULL, /* ba80 */ NULL, /* bb00 */ NULL, /* bb80 */ NULL, /* bc00 */ NULL, /* bc80 */ NULL, /* bd00 */ NULL, /* bd80 */ NULL, /* be00 */ NULL, /* be80 */ NULL, /* bf00 */ NULL, /* bf80 */ NULL, /* c000 */ NULL, /* c080 */ NULL, /* c100 */ NULL, /* c180 */ NULL, /* c200 */ NULL, /* c280 */ NULL, /* c300 */ NULL, /* c380 */ NULL, /* c400 */ NULL, /* c480 */ NULL, /* c500 */ NULL, /* c580 */ NULL, /* c600 */ NULL, /* c680 */ NULL, /* c700 */ NULL, /* c780 */ NULL, /* c800 */ NULL, /* c880 */ NULL, /* c900 */ NULL, /* c980 */ NULL, /* ca00 */ NULL, /* ca80 */ NULL, /* cb00 */ NULL, /* cb80 */ NULL, /* cc00 */ NULL, /* cc80 */ NULL, /* cd00 */ NULL, /* cd80 */ NULL, /* ce00 */ NULL, /* ce80 */ NULL, /* cf00 */ NULL, /* cf80 */ NULL, /* d000 */ NULL, /* d080 */ NULL, /* d100 */ NULL, /* d180 */ NULL, /* d200 */ NULL, /* d280 */ NULL, /* d300 */ NULL, /* d380 */ NULL, /* d400 */ NULL, /* d480 */ NULL, /* d500 */ NULL, /* d580 */ NULL, /* d600 */ NULL, /* d680 */ NULL, /* d700 */ NULL, /* d780 */ NULL, /* d800 */ NULL, /* d880 */ NULL, /* d900 */ NULL, /* d980 */ NULL, /* da00 */ NULL, /* da80 */ NULL, /* db00 */ NULL, /* db80 */ NULL, /* dc00 */ NULL, /* dc80 */ NULL, /* dd00 */ NULL, /* dd80 */ NULL, /* de00 */ NULL, /* de80 */ NULL, /* df00 */ NULL, /* df80 */ NULL, /* e000 */ NULL, /* e080 */ NULL, /* e100 */ NULL, /* e180 */ NULL, /* e200 */ NULL, /* e280 */ NULL, /* e300 */ NULL, /* e380 */ NULL, /* e400 */ NULL, /* e480 */ NULL, /* e500 */ NULL, /* e580 */ NULL, /* e600 */ NULL, /* e680 */ NULL, /* e700 */ NULL, /* e780 */ NULL, /* e800 */ NULL, /* e880 */ NULL, /* e900 */ NULL, /* e980 */ NULL, /* ea00 */ NULL, /* ea80 */ NULL, /* eb00 */ NULL, /* eb80 */ NULL, /* ec00 */ NULL, /* ec80 */ NULL, /* ed00 */ NULL, /* ed80 */ NULL, /* ee00 */ NULL, /* ee80 */ NULL, /* ef00 */ NULL, /* ef80 */ NULL, /* f000 */ NULL, /* f080 */ NULL, /* f100 */ NULL, /* f180 */ NULL, /* f200 */ NULL, /* f280 */ NULL, /* f300 */ NULL, /* f380 */ NULL, /* f400 */ NULL, /* f480 */ NULL, /* f500 */ NULL, /* f580 */ NULL, /* f600 */ NULL, /* f680 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc6\xa1\xc6\xa2\xc6\xa3\xc6\xa4\xc6\xa5\xc6\xa6\xc6\xa7\xc6\xa8\xc6\xa9\xc6\xaa\xc6\xab\xc6\xac\xc6\xad\xc6\xae\xc6\xaf\xc6\xb0\xc6\xb1\xc6\xb2\xc6\xb3\xc6\xb4\xc6\xb5\xc6\xb6\xc6\xb7\xc6\xb8\xc6\xb9\xc6\xba\xc6\xbb\xc6\xbc\xc6\xbd\xc6\xbe\xc6\xbf\xc6\xc0\xc6\xc1\xc6\xc2\xc6\xc3\xc6\xc4\xc6\xc5\xc6\xc6\xc6\xc7\xc6\xc8\xc6\xc9\xc6\xca\xc6\xcb\xc6\xcc\xc6\xcd\xc6\xce\xc6\xcf\xc6\xd0\xc6\xd1\xc6\xd2\xc6\xd3\xc6\xd4\xc6\xd5\xc6\xd6\xc6\xd7\xc6\xd8\xc6\xd9\xc6\xda\xc6\xdb\xc6\xdc\xc6\xdd\xc6\xde\xc6\xdf\xc6\xe0\xc6\xe1\xc6\xe2\xc6\xe3\xc6\xe4\xc6\xe5\xc6\xe6\xc6\xe7\xc6\xe8\xc6\xe9\xc6\xea\xc6\xeb\xc6\xec\xc6\xed\xc6\xee\xc6\xef", /* f700 */ "\xc6\xf0\xc6\xf1\xc6\xf2\xc6\xf3\xc6\xf4\xc6\xf5\xc6\xf6\xc6\xf7\xc6\xf8\xc6\xf9\xc6\xfa\xc6\xfb\xc6\xfc\xc6\xfd\xc6\xfe\xc7\x40\xc7\x41\xc7\x42\xc7\x43\xc7\x44\xc7\x45\xc7\x46\xc7\x47\xc7\x48\xc7\x49\xc7\x4a\xc7\x4b\xc7\x4c\xc7\x4d\xc7\x4e\xc7\x4f\xc7\x50\xc7\x51\xc7\x52\xc7\x53\xc7\x54\xc7\x55\xc7\x56\xc7\x57\xc7\x58\xc7\x59\xc7\x5a\xc7\x5b\xc7\x5c\xc7\x5d\xc7\x5e\xc7\x5f\xc7\x60\xc7\x61\xc7\x62\xc7\x63\xc7\x64\xc7\x65\xc7\x66\xc7\x67\xc7\x68\xc7\x69\xc7\x6a\xc7\x6b\xc7\x6c\xc7\x6d\xc7\x6e\xc7\x6f\xc7\x70\xc7\x71\xc7\x72\xc7\x73\xc7\x74\xc7\x75\xc7\x76\xc7\x77\xc7\x78\xc7\x79\xc7\x7a\xc7\x7b\xc7\x7c\xc7\x7d\xc7\x7e\xc7\xa1\xc7\xa2\xc7\xa3\xc7\xa4\xc7\xa5\xc7\xa6\xc7\xa7\xc7\xa8\xc7\xa9\xc7\xaa\xc7\xab\xc7\xac\xc7\xad\xc7\xae\xc7\xaf\xc7\xb0\xc7\xb1\xc7\xb2\xc7\xb3\xc7\xb4\xc7\xb5\xc7\xb6\xc7\xb7\xc7\xb8\xc7\xb9\xc7\xba\xc7\xbb\xc7\xbc\xc7\xbd\xc7\xbe\xc7\xbf\xc7\xc0\xc7\xc1\xc7\xc2\xc7\xc3\xc7\xc4\xc7\xc5\xc7\xc6\xc7\xc7\xc7\xc8\xc7\xc9\xc7\xca\xc7\xcb\xc7\xcc\xc7\xcd\xc7\xce\xc7\xcf\xc7\xd0\xc7\xd1\xc7\xd2", /* f780 */ "\xc7\xd3\xc7\xd4\xc7\xd5\xc7\xd6\xc7\xd7\xc7\xd8\xc7\xd9\xc7\xda\xc7\xdb\xc7\xdc\xc7\xdd\xc7\xde\xc7\xdf\xc7\xe0\xc7\xe1\xc7\xe2\xc7\xe3\xc7\xe4\xc7\xe5\xc7\xe6\xc7\xe7\xc7\xe8\xc7\xe9\xc7\xea\xc7\xeb\xc7\xec\xc7\xed\xc7\xee\xc7\xef\xc7\xf0\xc7\xf1\xc7\xf2\xc7\xf3\xc7\xf4\xc7\xf5\xc7\xf6\xc7\xf7\xc7\xf8\xc7\xf9\xc7\xfa\xc7\xfb\xc7\xfc\xc7\xfd\xc7\xfe\xc8\x40\xc8\x41\xc8\x42\xc8\x43\xc8\x44\xc8\x45\xc8\x46\xc8\x47\xc8\x48\xc8\x49\xc8\x4a\xc8\x4b\xc8\x4c\xc8\x4d\xc8\x4e\xc8\x4f\xc8\x50\xc8\x51\xc8\x52\xc8\x53\xc8\x54\xc8\x55\xc8\x56\xc8\x57\xc8\x58\xc8\x59\xc8\x5a\xc8\x5b\xc8\x5c\xc8\x5d\xc8\x5e\xc8\x5f\xc8\x60\xc8\x61\xc8\x62\xc8\x63\xc8\x64\xc8\x65\xc8\x66\xc8\x67\xc8\x68\xc8\x69\xc8\x6a\xc8\x6b\xc8\x6c\xc8\x6d\xc8\x6e\xc8\x6f\xc8\x70\xc8\x71\xc8\x72\xc8\x73\xc8\x74\xc8\x75\xc8\x76\xc8\x77\xc8\x78\xc8\x79\xc8\x7a\xc8\x7b\xc8\x7c\xc8\x7d\xc8\x7e\xc8\xa1\xc8\xa2\xc8\xa3\xc8\xa4\xc8\xa5\xc8\xa6\xc8\xa7\xc8\xa8\xc8\xa9\xc8\xaa\xc8\xab\xc8\xac\xc8\xad\xc8\xae\xc8\xaf\xc8\xb0\xc8\xb1\xc8\xb2\xc8\xb3\xc8\xb4\xc8\xb5", /* f800 */ "\xc8\xb6\xc8\xb7\xc8\xb8\xc8\xb9\xc8\xba\xc8\xbb\xc8\xbc\xc8\xbd\xc8\xbe\xc8\xbf\xc8\xc0\xc8\xc1\xc8\xc2\xc8\xc3\xc8\xc4\xc8\xc5\xc8\xc6\xc8\xc7\xc8\xc8\xc8\xc9\xc8\xca\xc8\xcb\xc8\xcc\xc8\xcd\xc8\xce\xc8\xcf\xc8\xd0\xc8\xd1\xc8\xd2\xc8\xd3\xc8\xd4\xc8\xd5\xc8\xd6\xc8\xd7\xc8\xd8\xc8\xd9\xc8\xda\xc8\xdb\xc8\xdc\xc8\xdd\xc8\xde\xc8\xdf\xc8\xe0\xc8\xe1\xc8\xe2\xc8\xe3\xc8\xe4\xc8\xe5\xc8\xe6\xc8\xe7\xc8\xe8\xc8\xe9\xc8\xea\xc8\xeb\xc8\xec\xc8\xed\xc8\xee\xc8\xef\xc8\xf0\xc8\xf1\xc8\xf2\xc8\xf3\xc8\xf4\xc8\xf5\xc8\xf6\xc8\xf7\xc8\xf8\xc8\xf9\xc8\xfa\xc8\xfb\xc8\xfc\xc8\xfd\xc8\xfe\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* f880 */ NULL, /* f900 */ NULL, /* f980 */ NULL, /* fa00 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc9\x4a\xdd\xfc\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* fa80 */ NULL, /* fb00 */ NULL, /* fb80 */ NULL, /* fc00 */ NULL, /* fc80 */ NULL, /* fd00 */ NULL, /* fd80 */ NULL, /* fe00 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa1\x4a\xa1\x57\x00\x00\xa1\x59\xa1\x5b\xa1\x5f\xa1\x60\xa1\x63\xa1\x64\xa1\x67\xa1\x68\xa1\x6b\xa1\x6c\xa1\x6f\xa1\x70\xa1\x73\xa1\x74\xa1\x77\xa1\x78\xa1\x7b\xa1\x7c\x00\x00\x00\x00\x00\x00\x00\x00\xa1\xc6\xa1\xc7\xa1\xca\xa1\xcb\xa1\xc8\xa1\xc9\xa1\x5c\xa1\x4d\xa1\x4e\xa1\x4f\x00\x00\xa1\x51\xa1\x52\xa1\x53\xa1\x54\x00\x00\xa1\x7d\xa1\x7e\xa1\xa1\xa1\xa2\xa1\xa3\xa1\xa4\xa1\xcc\xa1\xcd\xa1\xce\xa1\xde\xa1\xdf\xa1\xe0\xa1\xe1\xa1\xe2\x00\x00\xa2\x42\xa2\x4c\xa2\x4d\xa2\x4e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* fe80 */ NULL, /* ff00 */ "\x00\x00\xa1\x49\x00\x00\xa1\xad\xa2\x43\xa2\x48\xa1\xae\x00\x00\xa1\x5d\xa1\x5e\xa1\xaf\xa1\xcf\xa1\x41\xa1\xd0\xa1\x44\xa1\xfe\xa2\xaf\xa2\xb0\xa2\xb1\xa2\xb2\xa2\xb3\xa2\xb4\xa2\xb5\xa2\xb6\xa2\xb7\xa2\xb8\xa1\x47\xa1\x46\xa1\xd5\xa1\xd7\xa1\xd6\xa1\x48\xa2\x49\xa2\xcf\xa2\xd0\xa2\xd1\xa2\xd2\xa2\xd3\xa2\xd4\xa2\xd5\xa2\xd6\xa2\xd7\xa2\xd8\xa2\xd9\xa2\xda\xa2\xdb\xa2\xdc\xa2\xdd\xa2\xde\xa2\xdf\xa2\xe0\xa2\xe1\xa2\xe2\xa2\xe3\xa2\xe4\xa2\xe5\xa2\xe6\xa2\xe7\xa2\xe8\x00\x00\xa2\x40\x00\x00\x00\x00\xa1\xc4\x00\x00\xa2\xe9\xa2\xea\xa2\xeb\xa2\xec\xa2\xed\xa2\xee\xa2\xef\xa2\xf0\xa2\xf1\xa2\xf2\xa2\xf3\xa2\xf4\xa2\xf5\xa2\xf6\xa2\xf7\xa2\xf8\xa2\xf9\xa2\xfa\xa2\xfb\xa2\xfc\xa2\xfd\xa2\xfe\xa3\x40\xa3\x41\xa3\x42\xa3\x43\xa1\x61\xa1\x55\xa1\x62\xa1\xe3\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* ff80 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa2\x46\xa2\x47\x00\x00\xa1\xc3\x00\x00\xa2\x44\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" } }, { "jisx0208.1983-0", { /* 0000 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x21\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 0080 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x21\x71\x21\x72\x00\x00\x00\x00\x00\x00\x21\x78\x21\x2f\x00\x00\x00\x00\x00\x00\x22\x4c\x00\x00\x00\x00\x00\x00\x21\x6b\x21\x5e\x00\x00\x00\x00\x21\x2d\x00\x00\x22\x79\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x21\x5f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x21\x60\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 0100 */ NULL, /* 0180 */ NULL, /* 0200 */ NULL, /* 0280 */ NULL, /* 0300 */ NULL, /* 0380 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x26\x21\x26\x22\x26\x23\x26\x24\x26\x25\x26\x26\x26\x27\x26\x28\x26\x29\x26\x2a\x26\x2b\x26\x2c\x26\x2d\x26\x2e\x26\x2f\x26\x30\x26\x31\x00\x00\x26\x32\x26\x33\x26\x34\x26\x35\x26\x36\x26\x37\x26\x38\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x26\x41\x26\x42\x26\x43\x26\x44\x26\x45\x26\x46\x26\x47\x26\x48\x26\x49\x26\x4a\x26\x4b\x26\x4c\x26\x4d\x26\x4e\x26\x4f\x26\x50\x26\x51\x00\x00\x26\x52\x26\x53\x26\x54\x26\x55\x26\x56\x26\x57\x26\x58\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 0400 */ "\x00\x00\x27\x27\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x27\x21\x27\x22\x27\x23\x27\x24\x27\x25\x27\x26\x27\x28\x27\x29\x27\x2a\x27\x2b\x27\x2c\x27\x2d\x27\x2e\x27\x2f\x27\x30\x27\x31\x27\x32\x27\x33\x27\x34\x27\x35\x27\x36\x27\x37\x27\x38\x27\x39\x27\x3a\x27\x3b\x27\x3c\x27\x3d\x27\x3e\x27\x3f\x27\x40\x27\x41\x27\x51\x27\x52\x27\x53\x27\x54\x27\x55\x27\x56\x27\x58\x27\x59\x27\x5a\x27\x5b\x27\x5c\x27\x5d\x27\x5e\x27\x5f\x27\x60\x27\x61\x27\x62\x27\x63\x27\x64\x27\x65\x27\x66\x27\x67\x27\x68\x27\x69\x27\x6a\x27\x6b\x27\x6c\x27\x6d\x27\x6e\x27\x6f\x27\x70\x27\x71\x00\x00\x27\x57\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 0480 */ NULL, /* 0500 */ NULL, /* 0580 */ NULL, /* 0600 */ NULL, /* 0680 */ NULL, /* 0700 */ NULL, /* 0780 */ NULL, /* 0800 */ NULL, /* 0880 */ NULL, /* 0900 */ NULL, /* 0980 */ NULL, /* 0a00 */ NULL, /* 0a80 */ NULL, /* 0b00 */ NULL, /* 0b80 */ NULL, /* 0c00 */ NULL, /* 0c80 */ NULL, /* 0d00 */ NULL, /* 0d80 */ NULL, /* 0e00 */ NULL, /* 0e80 */ NULL, /* 0f00 */ NULL, /* 0f80 */ NULL, /* 1000 */ NULL, /* 1080 */ NULL, /* 1100 */ NULL, /* 1180 */ NULL, /* 1200 */ NULL, /* 1280 */ NULL, /* 1300 */ NULL, /* 1380 */ NULL, /* 1400 */ NULL, /* 1480 */ NULL, /* 1500 */ NULL, /* 1580 */ NULL, /* 1600 */ NULL, /* 1680 */ NULL, /* 1700 */ NULL, /* 1780 */ NULL, /* 1800 */ NULL, /* 1880 */ NULL, /* 1900 */ NULL, /* 1980 */ NULL, /* 1a00 */ NULL, /* 1a80 */ NULL, /* 1b00 */ NULL, /* 1b80 */ NULL, /* 1c00 */ NULL, /* 1c80 */ NULL, /* 1d00 */ NULL, /* 1d80 */ NULL, /* 1e00 */ NULL, /* 1e80 */ NULL, /* 1f00 */ NULL, /* 1f80 */ NULL, /* 2000 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x21\x3e\x00\x00\x00\x00\x00\x00\x00\x00\x21\x3d\x21\x42\x00\x00\x21\x46\x21\x47\x00\x00\x00\x00\x21\x48\x21\x49\x00\x00\x00\x00\x22\x77\x22\x78\x00\x00\x00\x00\x00\x00\x21\x45\x21\x44\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x22\x73\x00\x00\x21\x6c\x21\x6d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x22\x28\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 2080 */ NULL, /* 2100 */ "\x00\x00\x00\x00\x00\x00\x21\x6e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x22\x72\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 2180 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x22\x2b\x22\x2c\x22\x2a\x22\x2d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x22\x4d\x00\x00\x22\x4e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 2200 */ "\x22\x4f\x00\x00\x22\x5f\x22\x50\x00\x00\x00\x00\x00\x00\x22\x60\x22\x3a\x00\x00\x00\x00\x22\x3b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x21\x5d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x22\x65\x00\x00\x00\x00\x22\x67\x21\x67\x00\x00\x22\x5c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x22\x4a\x22\x4b\x22\x41\x22\x40\x22\x69\x22\x6a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x21\x68\x22\x68\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x22\x66\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x22\x62\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x21\x62\x22\x61\x00\x00\x00\x00\x00\x00\x00\x00\x21\x65\x21\x66\x00\x00\x00\x00\x22\x63\x22\x64\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 2280 */ "\x00\x00\x00\x00\x22\x3e\x22\x3f\x00\x00\x00\x00\x22\x3c\x22\x3d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x22\x5d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 2300 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x22\x5e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 2380 */ NULL, /* 2400 */ NULL, /* 2480 */ NULL, /* 2500 */ "\x28\x21\x28\x2c\x28\x22\x28\x2d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x28\x23\x00\x00\x00\x00\x28\x2e\x28\x24\x00\x00\x00\x00\x28\x2f\x28\x26\x00\x00\x00\x00\x28\x31\x28\x25\x00\x00\x00\x00\x28\x30\x28\x27\x28\x3c\x00\x00\x00\x00\x28\x37\x00\x00\x00\x00\x28\x32\x28\x29\x28\x3e\x00\x00\x00\x00\x28\x39\x00\x00\x00\x00\x28\x34\x28\x28\x00\x00\x00\x00\x28\x38\x28\x3d\x00\x00\x00\x00\x28\x33\x28\x2a\x00\x00\x00\x00\x28\x3a\x28\x3f\x00\x00\x00\x00\x28\x35\x28\x2b\x00\x00\x00\x00\x28\x3b\x00\x00\x00\x00\x28\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x28\x36\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 2580 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x22\x23\x22\x22\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x22\x25\x22\x24\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x22\x27\x22\x26\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x22\x21\x21\x7e\x00\x00\x00\x00\x00\x00\x21\x7b\x00\x00\x00\x00\x21\x7d\x21\x7c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x22\x7e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 2600 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x21\x7a\x21\x79\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x21\x6a\x00\x00\x21\x69\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x22\x76\x00\x00\x00\x00\x22\x75\x00\x00\x22\x74\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 2680 */ NULL, /* 2700 */ NULL, /* 2780 */ NULL, /* 2800 */ NULL, /* 2880 */ NULL, /* 2900 */ NULL, /* 2980 */ NULL, /* 2a00 */ NULL, /* 2a80 */ NULL, /* 2b00 */ NULL, /* 2b80 */ NULL, /* 2c00 */ NULL, /* 2c80 */ NULL, /* 2d00 */ NULL, /* 2d80 */ NULL, /* 2e00 */ NULL, /* 2e80 */ NULL, /* 2f00 */ NULL, /* 2f80 */ NULL, /* 3000 */ "\x21\x21\x21\x22\x21\x23\x21\x37\x00\x00\x21\x39\x21\x3a\x21\x3b\x21\x52\x21\x53\x21\x54\x21\x55\x21\x56\x21\x57\x21\x58\x21\x59\x21\x5a\x21\x5b\x22\x29\x22\x2e\x21\x4c\x21\x4d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x21\x41\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x24\x21\x24\x22\x24\x23\x24\x24\x24\x25\x24\x26\x24\x27\x24\x28\x24\x29\x24\x2a\x24\x2b\x24\x2c\x24\x2d\x24\x2e\x24\x2f\x24\x30\x24\x31\x24\x32\x24\x33\x24\x34\x24\x35\x24\x36\x24\x37\x24\x38\x24\x39\x24\x3a\x24\x3b\x24\x3c\x24\x3d\x24\x3e\x24\x3f\x24\x40\x24\x41\x24\x42\x24\x43\x24\x44\x24\x45\x24\x46\x24\x47\x24\x48\x24\x49\x24\x4a\x24\x4b\x24\x4c\x24\x4d\x24\x4e\x24\x4f\x24\x50\x24\x51\x24\x52\x24\x53\x24\x54\x24\x55\x24\x56\x24\x57\x24\x58\x24\x59\x24\x5a\x24\x5b\x24\x5c\x24\x5d\x24\x5e\x24\x5f", /* 3080 */ "\x24\x60\x24\x61\x24\x62\x24\x63\x24\x64\x24\x65\x24\x66\x24\x67\x24\x68\x24\x69\x24\x6a\x24\x6b\x24\x6c\x24\x6d\x24\x6e\x24\x6f\x24\x70\x24\x71\x24\x72\x24\x73\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x21\x2b\x21\x2c\x21\x35\x21\x36\x00\x00\x00\x00\x25\x21\x25\x22\x25\x23\x25\x24\x25\x25\x25\x26\x25\x27\x25\x28\x25\x29\x25\x2a\x25\x2b\x25\x2c\x25\x2d\x25\x2e\x25\x2f\x25\x30\x25\x31\x25\x32\x25\x33\x25\x34\x25\x35\x25\x36\x25\x37\x25\x38\x25\x39\x25\x3a\x25\x3b\x25\x3c\x25\x3d\x25\x3e\x25\x3f\x25\x40\x25\x41\x25\x42\x25\x43\x25\x44\x25\x45\x25\x46\x25\x47\x25\x48\x25\x49\x25\x4a\x25\x4b\x25\x4c\x25\x4d\x25\x4e\x25\x4f\x25\x50\x25\x51\x25\x52\x25\x53\x25\x54\x25\x55\x25\x56\x25\x57\x25\x58\x25\x59\x25\x5a\x25\x5b\x25\x5c\x25\x5d\x25\x5e\x25\x5f\x25\x60\x25\x61\x25\x62\x25\x63\x25\x64\x25\x65\x25\x66\x25\x67\x25\x68\x25\x69\x25\x6a\x25\x6b\x25\x6c\x25\x6d\x25\x6e\x25\x6f\x25\x70\x25\x71\x25\x72\x25\x73\x25\x74\x25\x75\x25\x76\x00\x00\x00\x00\x00\x00\x00\x00\x21\x26\x21\x3c\x21\x33\x21\x34\x00\x00", /* 3100 */ NULL, /* 3180 */ NULL, /* 3200 */ NULL, /* 3280 */ NULL, /* 3300 */ NULL, /* 3380 */ NULL, /* 3400 */ NULL, /* 3480 */ NULL, /* 3500 */ NULL, /* 3580 */ NULL, /* 3600 */ NULL, /* 3680 */ NULL, /* 3700 */ NULL, /* 3780 */ NULL, /* 3800 */ NULL, /* 3880 */ NULL, /* 3900 */ NULL, /* 3980 */ NULL, /* 3a00 */ NULL, /* 3a80 */ NULL, /* 3b00 */ NULL, /* 3b80 */ NULL, /* 3c00 */ NULL, /* 3c80 */ NULL, /* 3d00 */ NULL, /* 3d80 */ NULL, /* 3e00 */ NULL, /* 3e80 */ NULL, /* 3f00 */ NULL, /* 3f80 */ NULL, /* 4000 */ NULL, /* 4080 */ NULL, /* 4100 */ NULL, /* 4180 */ NULL, /* 4200 */ NULL, /* 4280 */ NULL, /* 4300 */ NULL, /* 4380 */ NULL, /* 4400 */ NULL, /* 4480 */ NULL, /* 4500 */ NULL, /* 4580 */ NULL, /* 4600 */ NULL, /* 4680 */ NULL, /* 4700 */ NULL, /* 4780 */ NULL, /* 4800 */ NULL, /* 4880 */ NULL, /* 4900 */ NULL, /* 4980 */ NULL, /* 4a00 */ NULL, /* 4a80 */ NULL, /* 4b00 */ NULL, /* 4b80 */ NULL, /* 4c00 */ NULL, /* 4c80 */ NULL, /* 4d00 */ NULL, /* 4d80 */ NULL, /* 4e00 */ "\x30\x6c\x43\x7a\x00\x00\x3c\x37\x00\x00\x00\x00\x00\x00\x4b\x7c\x3e\x66\x3b\x30\x3e\x65\x32\x3c\x00\x00\x49\x54\x4d\x3f\x00\x00\x50\x22\x31\x2f\x00\x00\x00\x00\x33\x6e\x50\x23\x40\x24\x52\x42\x35\x56\x4a\x3a\x00\x00\x00\x00\x00\x00\x00\x00\x3e\x67\x00\x00\x00\x00\x4e\x3e\x00\x00\x00\x00\x00\x00\x00\x00\x4a\x42\x00\x00\x00\x00\x00\x00\x50\x24\x00\x00\x00\x00\x43\x66\x00\x00\x00\x00\x00\x00\x50\x25\x36\x7a\x00\x00\x00\x00\x00\x00\x50\x26\x00\x00\x34\x5d\x43\x30\x00\x00\x3c\x67\x50\x27\x00\x00\x00\x00\x50\x28\x00\x00\x00\x00\x50\x29\x47\x35\x00\x00\x35\x57\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x47\x37\x00\x00\x46\x63\x38\x43\x4b\x33\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x69\x49\x50\x2a\x3e\x68\x50\x2b\x32\x35\x00\x00\x00\x00\x00\x00\x36\x65\x38\x70\x4c\x69\x00\x00\x00\x00\x56\x26\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4d\x70\x00\x00\x46\x7d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x34\x25\x00\x00", /* 4e80 */ "\x35\x35\x00\x00\x50\x2c\x00\x00\x00\x00\x50\x2d\x4e\x3b\x00\x00\x4d\x3d\x41\x68\x50\x2f\x3b\x76\x46\x73\x00\x00\x50\x32\x00\x00\x00\x00\x31\x3e\x38\x5f\x00\x00\x38\x5e\x30\x66\x00\x00\x00\x00\x4f\x4b\x4f\x4a\x00\x00\x3a\x33\x30\x21\x00\x00\x50\x33\x50\x34\x50\x35\x4b\x34\x50\x36\x00\x00\x38\x72\x30\x67\x4b\x72\x00\x00\x35\x7c\x00\x00\x00\x00\x35\x7d\x35\x7e\x44\x62\x4e\x3c\x00\x00\x50\x37\x00\x00\x00\x00\x50\x38\x00\x00\x00\x00\x50\x39\x00\x00\x00\x00\x00\x00\x3f\x4d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3d\x3a\x3f\x4e\x50\x3e\x00\x00\x50\x3c\x00\x00\x50\x3d\x35\x58\x00\x00\x00\x00\x3a\x23\x32\x70\x00\x00\x50\x3b\x50\x3a\x4a\x29\x00\x00\x00\x00\x00\x00\x00\x00\x3b\x46\x3b\x45\x42\x3e\x50\x3f\x49\x55\x40\x67\x00\x00\x00\x00\x00\x00\x21\x38\x50\x40\x50\x42\x00\x00\x00\x00\x00\x00\x42\x65\x4e\x61\x30\x4a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x50\x41\x32\x3e\x00\x00\x36\x44\x00\x00\x43\x67\x00\x00\x00\x00\x00\x00\x37\x6f\x50\x43\x00\x00\x00\x00\x00\x00\x47\x24\x00\x00\x00\x00\x00\x00\x00\x00", /* 4f00 */ "\x00\x00\x34\x6b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x50\x44\x30\x4b\x00\x00\x00\x00\x38\x60\x34\x6c\x49\x7a\x48\x32\x35\x59\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x32\x71\x00\x00\x50\x67\x45\x41\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x47\x6c\x50\x46\x00\x00\x00\x00\x00\x00\x48\x3c\x00\x00\x4e\x62\x00\x00\x3f\x2d\x00\x00\x3b\x47\x00\x00\x3b\x77\x32\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x44\x51\x00\x00\x00\x00\x43\x22\x50\x4a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x30\x4c\x44\x63\x3d\x3b\x3a\x34\x4d\x24\x00\x00\x42\x4e\x00\x00\x32\x3f\x00\x00\x50\x49\x00\x00\x4d\x3e\x50\x45\x50\x47\x3a\x6e\x50\x48\x55\x24\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x50\x50\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x50\x53\x50\x51\x00\x00\x00\x00\x32\x42\x00\x00\x4a\x3b\x50\x4b\x00\x00\x00\x00\x00\x00\x00\x00\x50\x4f\x38\x73\x00\x00\x00\x00\x3b\x48", /* 4f80 */ "\x00\x00\x00\x00\x00\x00\x34\x26\x00\x00\x00\x00\x50\x54\x00\x00\x50\x4c\x00\x00\x00\x00\x4e\x63\x00\x00\x3b\x78\x00\x00\x50\x4d\x00\x00\x50\x52\x00\x00\x00\x00\x00\x00\x00\x00\x50\x55\x00\x00\x50\x4e\x00\x00\x00\x00\x36\x21\x00\x00\x30\x4d\x00\x00\x00\x00\x36\x22\x32\x41\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x55\x25\x00\x00\x4b\x79\x49\x6e\x38\x74\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3f\x2f\x4e\x37\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4a\x58\x00\x00\x00\x00\x37\x38\x42\x25\x32\x64\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3d\x53\x00\x00\x00\x00\x00\x00\x50\x59\x00\x00\x50\x5e\x50\x5c\x00\x00\x00\x00\x50\x57\x00\x00\x00\x00\x42\x2f\x50\x5a\x00\x00\x50\x5d\x50\x5b\x00\x00\x4a\x5d\x00\x00\x50\x58\x00\x00\x3f\x2e\x00\x00\x4b\x73\x50\x5f\x50\x60\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3d\x24\x50\x6d\x00\x00\x00\x00\x00\x00\x47\x50\x00\x00\x49\x36\x50\x68\x00\x00\x4a\x70\x00\x00\x32\x36\x00\x00\x00\x00\x00\x00\x50\x6c\x00\x00", /* 5000 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x50\x66\x50\x6f\x00\x00\x00\x00\x41\x52\x00\x00\x38\x44\x00\x00\x47\x5c\x00\x00\x60\x47\x00\x00\x50\x6e\x45\x5d\x00\x00\x50\x63\x00\x00\x38\x76\x00\x00\x00\x00\x38\x75\x50\x61\x00\x00\x00\x00\x00\x00\x00\x00\x3c\x5a\x00\x00\x50\x69\x00\x00\x4a\x6f\x43\x4d\x50\x65\x37\x71\x00\x00\x50\x62\x50\x6a\x50\x64\x4e\x51\x50\x6b\x4f\x41\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x36\x66\x00\x00\x00\x00\x37\x70\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x50\x70\x00\x00\x00\x00\x00\x00\x50\x71\x50\x75\x30\x4e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4a\x50\x50\x74\x00\x00\x00\x00\x00\x00\x00\x00\x50\x73\x50\x77\x00\x00\x00\x00\x00\x00\x50\x76\x00\x00\x44\x64\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x37\x72\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x50\x78\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3c\x45\x00\x00\x42\x26\x44\x65\x36\x76\x00\x00\x50\x79\x00\x00\x00\x00\x00\x00\x00\x00\x35\x36\x00\x00\x00\x00", /* 5080 */ "\x50\x7a\x00\x00\x00\x00\x00\x00\x00\x00\x50\x7c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4b\x35\x00\x00\x00\x00\x00\x00\x37\x66\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3b\x31\x48\x77\x50\x7b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3a\x45\x4d\x43\x00\x00\x00\x00\x00\x00\x00\x00\x50\x7e\x51\x23\x50\x7d\x3a\x44\x00\x00\x3d\x7d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x37\x39\x00\x00\x00\x00\x00\x00\x51\x24\x00\x00\x00\x00\x36\x4f\x00\x00\x00\x00\x00\x00\x51\x21\x51\x22\x00\x00\x00\x00\x46\x2f\x00\x00\x41\x7c\x00\x00\x36\x23\x00\x00\x00\x00\x00\x00\x4b\x4d\x51\x25\x00\x00\x00\x00\x00\x00\x4e\x3d\x00\x00\x00\x00\x00\x00\x51\x26\x00\x00\x00\x00\x00\x00\x00\x00\x51\x29\x00\x00\x51\x27\x00\x00\x41\x4e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x51\x28\x51\x2a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x51\x2c\x00\x00\x00\x00\x00\x00\x51\x2b\x00\x00\x4a\x48\x00\x00\x00\x00\x00\x00\x00\x00", /* 5100 */ "\x35\x37\x51\x2e\x51\x2f\x00\x00\x32\x2f\x00\x00\x00\x00\x00\x00\x00\x00\x51\x2d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3c\x74\x00\x00\x51\x32\x51\x31\x51\x30\x00\x00\x50\x56\x00\x00\x51\x33\x00\x00\x00\x00\x00\x00\x00\x00\x3d\x7e\x00\x00\x51\x34\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4d\x25\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4c\x59\x00\x00\x00\x00\x00\x00\x00\x00\x51\x36\x00\x00\x00\x00\x51\x35\x51\x38\x51\x37\x00\x00\x00\x00\x51\x39\x51\x3a\x30\x74\x00\x00\x38\x35\x37\x3b\x3d\x3c\x43\x7b\x36\x24\x40\x68\x38\x77\x00\x00\x39\x6e\x51\x3c\x4c\x48\x45\x46\x00\x00\x3b\x79\x00\x00\x51\x3b\x00\x00\x51\x3d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x45\x5e\x00\x00\x33\x75\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x51\x3e\x00\x00\x00\x00\x46\x7e\x00\x00\x00\x00\x41\x34\x51\x40\x51\x41\x48\x2c\x38\x78\x4f\x3b\x51\x42\x00\x00\x00\x00\x36\x26\x00\x00\x00\x00\x00\x00\x4a\x3c\x42\x36\x36\x71\x45\x35\x00\x00\x00\x00\x00\x00\x37\x73\x00\x00\x00\x00\x00\x00", /* 5180 */ "\x51\x43\x00\x00\x51\x44\x00\x00\x00\x00\x46\x62\x31\x5f\x00\x00\x00\x00\x51\x47\x3a\x7d\x00\x00\x51\x46\x3a\x46\x00\x00\x51\x48\x66\x6e\x51\x49\x4b\x41\x51\x4a\x00\x00\x51\x4b\x51\x4c\x3e\x69\x00\x00\x3c\x4c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x34\x27\x00\x00\x51\x4f\x00\x00\x51\x4d\x4c\x3d\x51\x4e\x00\x00\x49\x5a\x51\x50\x51\x51\x51\x52\x45\x5f\x00\x00\x00\x00\x00\x00\x51\x56\x51\x54\x51\x55\x51\x53\x3a\x63\x51\x57\x4c\x6a\x4e\x64\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x51\x58\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x28\x51\x59\x3d\x5a\x00\x00\x00\x00\x51\x5a\x00\x00\x43\x7c\x4e\x3f\x45\x60\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x52\x45\x00\x00\x00\x00\x00\x00\x00\x00\x51\x5b\x74\x25\x36\x45\x00\x00\x00\x00\x51\x5c\x4b\x5e\x00\x00\x00\x00\x00\x00\x00\x00\x3d\x68\x42\x7c\x00\x00\x51\x5e\x46\x64\x00\x00\x00\x00\x51\x5f\x00\x00\x00\x00\x51\x60\x33\x2e\x00\x00\x00\x00\x00\x00\x51\x61\x36\x27\x00\x00\x46\x4c\x31\x7a\x3d\x50\x00\x00\x00\x00\x48\x21\x51\x62\x00\x00", /* 5200 */ "\x45\x61\x00\x00\x00\x00\x3f\x4f\x51\x63\x00\x00\x4a\x2c\x40\x5a\x34\x22\x00\x00\x34\x29\x51\x64\x00\x00\x00\x00\x51\x66\x00\x00\x00\x00\x37\x3a\x00\x00\x00\x00\x51\x65\x00\x00\x00\x00\x4e\x73\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3d\x69\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x48\x3d\x4a\x4c\x00\x00\x51\x67\x00\x00\x4d\x78\x51\x68\x00\x00\x00\x00\x00\x00\x51\x69\x00\x00\x45\x7e\x00\x00\x00\x00\x51\x6a\x00\x00\x00\x00\x40\x29\x3a\x7e\x37\x74\x51\x6b\x3b\x49\x39\x6f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x44\x66\x51\x6d\x00\x00\x00\x00\x42\x27\x00\x00\x00\x00\x3a\x6f\x51\x6e\x51\x6f\x41\x30\x00\x00\x51\x6c\x00\x00\x00\x00\x00\x00\x00\x00\x51\x71\x00\x00\x4b\x36\x00\x00\x00\x00\x00\x00\x00\x00\x39\x64\x00\x00\x00\x00\x51\x70\x00\x00\x00\x00\x00\x00\x00\x00\x37\x75\x3a\x5e\x47\x6d\x00\x00\x00\x00\x00\x00\x51\x74\x51\x72\x00\x00\x00\x00\x00\x00\x00\x00\x49\x7b\x3e\x6a\x51\x7b\x33\x64\x51\x75\x51\x73\x41\x4f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x51\x77\x00\x00\x51\x76", /* 5280 */ "\x00\x00\x00\x00\x00\x00\x33\x44\x00\x00\x00\x00\x00\x00\x37\x60\x51\x7c\x4e\x2d\x00\x00\x00\x00\x00\x00\x51\x78\x00\x00\x00\x00\x00\x00\x51\x7d\x51\x7a\x00\x00\x51\x79\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4e\x4f\x00\x00\x00\x00\x00\x00\x38\x79\x32\x43\x00\x00\x00\x00\x4e\x74\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3d\x75\x45\x58\x39\x65\x52\x22\x52\x23\x00\x00\x00\x00\x00\x00\x4e\x65\x00\x00\x00\x00\x4f\x2b\x52\x25\x00\x00\x00\x00\x00\x00\x38\x7a\x00\x00\x00\x00\x52\x24\x00\x00\x33\x2f\x00\x00\x00\x00\x52\x26\x00\x00\x4b\x56\x00\x00\x44\x3c\x00\x00\x4d\x26\x00\x00\x4a\x59\x00\x00\x00\x00\x00\x00\x52\x27\x00\x00\x00\x00\x00\x00\x00\x00\x70\x55\x00\x00\x00\x00\x46\x30\x00\x00\x52\x28\x34\x2a\x4c\x33\x00\x00\x00\x00\x00\x00\x3e\x21\x52\x29\x4a\x67\x52\x2d\x00\x00\x40\x2a\x52\x2a\x36\x50\x00\x00\x52\x2b\x34\x2b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x37\x2e\x52\x2e\x00\x00\x52\x2f\x00\x00\x00\x00\x52\x30\x52\x31\x3c\x5b\x00\x00\x00\x00\x00\x00\x38\x7b\x4c\x5e", /* 5300 */ "\x00\x00\x4c\x68\x46\x77\x00\x00\x00\x00\x4a\x71\x52\x32\x00\x00\x52\x33\x00\x00\x00\x00\x00\x00\x00\x00\x52\x35\x00\x00\x52\x37\x52\x36\x00\x00\x00\x00\x00\x00\x00\x00\x52\x38\x32\x3d\x4b\x4c\x00\x00\x3a\x7c\x52\x39\x00\x00\x00\x00\x41\x59\x00\x00\x00\x00\x3e\x22\x36\x29\x00\x00\x52\x3a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x48\x5b\x00\x00\x00\x00\x00\x00\x00\x00\x52\x3b\x00\x00\x52\x3c\x00\x00\x52\x3d\x00\x00\x00\x00\x00\x00\x00\x00\x52\x3e\x49\x24\x36\x68\x30\x65\x00\x00\x00\x00\x00\x00\x46\x3f\x52\x3f\x3d\x3d\x00\x00\x40\x69\x00\x00\x52\x41\x52\x40\x3e\x23\x38\x61\x52\x43\x48\x3e\x00\x00\x00\x00\x52\x44\x00\x00\x00\x00\x00\x00\x48\x5c\x42\x34\x42\x6e\x36\x28\x00\x00\x00\x00\x46\x6e\x43\x31\x00\x00\x47\x6e\x00\x00\x4b\x4e\x00\x00\x52\x46\x00\x00\x40\x6a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x37\x35\x00\x00\x00\x00\x52\x47\x00\x00\x00\x00\x00\x00\x00\x00\x52\x48\x31\x2c\x30\x75\x34\x6d\x00\x00\x42\x28\x35\x51\x4d\x71\x00\x00\x52\x4b\x32\x37\x00\x00\x00\x00\x52\x4a\x00\x00\x00\x00\x00\x00\x36\x2a", /* 5380 */ "\x00\x00\x00\x00\x52\x4c\x00\x00\x4c\x71\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x52\x4d\x00\x00\x4e\x52\x00\x00\x38\x7c\x00\x00\x00\x00\x00\x00\x00\x00\x38\x36\x52\x4e\x00\x00\x00\x00\x00\x00\x00\x00\x52\x50\x52\x4f\x00\x00\x3f\x5f\x31\x39\x00\x00\x00\x00\x00\x00\x31\x5e\x52\x51\x00\x00\x52\x52\x00\x00\x00\x00\x38\x37\x00\x00\x00\x00\x52\x53\x00\x00\x00\x00\x00\x00\x00\x00\x35\x6e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3b\x32\x52\x54\x00\x00\x00\x00\x00\x00\x00\x00\x4b\x74\x3a\x35\x35\x5a\x4d\x27\x41\x50\x48\x3f\x3c\x7d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3d\x47\x00\x00\x3c\x68\x3c\x75\x00\x00\x3d\x76\x00\x00\x48\x40\x00\x00\x00\x00\x00\x00\x52\x57\x00\x00\x31\x43\x41\x51\x38\x7d\x38\x45\x36\x67\x00\x00\x00\x00\x52\x5b\x43\x21\x42\x7e\x36\x2b\x3e\x24\x52\x5c\x52\x5a\x32\x44\x42\x66\x3c\x38\x3b\x4b\x31\x26\x00\x00\x00\x00\x33\x70\x39\x66\x3b\x4a\x00\x00\x52\x5d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 5400 */ "\x00\x00\x52\x5e\x00\x00\x35\x49\x33\x46\x00\x00\x00\x00\x00\x00\x39\x67\x35\x48\x44\x5f\x31\x25\x46\x31\x4c\x3e\x39\x21\x4d\x79\x45\x47\x38\x7e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x37\x2f\x00\x00\x52\x67\x00\x00\x36\x63\x4b\x4a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x48\x5d\x00\x00\x00\x00\x52\x66\x00\x00\x34\x5e\x52\x61\x52\x62\x52\x64\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x52\x65\x00\x00\x35\x5b\x3f\x61\x00\x00\x4a\x2d\x52\x63\x52\x5f\x38\x63\x00\x00\x52\x60\x00\x00\x4f\x24\x00\x00\x00\x00\x00\x00\x4a\x72\x00\x00\x44\x68\x38\x62\x39\x70\x00\x00\x00\x00\x00\x00\x52\x68\x00\x00\x00\x00\x46\x5d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x52\x6c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3c\x7e\x00\x00\x3c\x76\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x52\x6f\x52\x6d\x00\x00\x4c\x23\x00\x00\x52\x6a\x52\x73\x52\x6e\x00\x00\x00\x00\x00\x00\x52\x71\x38\x46\x4c\x3f\x00\x00\x00\x00", /* 5480 */ "\x52\x72\x00\x00\x00\x00\x00\x00\x52\x74\x00\x00\x52\x76\x00\x00\x00\x00\x00\x00\x00\x00\x3a\x70\x4f\x42\x00\x00\x52\x6b\x52\x69\x52\x75\x00\x00\x52\x70\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x52\x78\x00\x00\x53\x23\x52\x7a\x00\x00\x00\x00\x52\x7e\x00\x00\x00\x00\x53\x21\x52\x7b\x00\x00\x00\x00\x53\x3e\x00\x00\x00\x00\x3a\x69\x33\x31\x00\x00\x00\x00\x00\x00\x00\x00\x52\x79\x00\x00\x00\x00\x00\x00\x53\x25\x30\x76\x53\x24\x00\x00\x30\x25\x49\x4a\x53\x22\x00\x00\x52\x7c\x00\x00\x00\x00\x52\x77\x52\x7d\x3a\x48\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x53\x26\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x30\x77\x53\x2f\x00\x00\x00\x00\x53\x27\x53\x28\x00\x00\x3e\x25\x4b\x69\x00\x00\x00\x00\x00\x00\x53\x2d\x53\x2c\x00\x00\x00\x00\x00\x00\x45\x2f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x53\x2e\x00\x00\x00\x00\x53\x2b\x00\x00\x00\x00", /* 5500 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x31\x34\x00\x00\x3a\x36\x3f\x30\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x53\x29\x45\x62\x00\x00\x00\x00\x00\x00\x53\x2a\x00\x00\x30\x22\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x53\x34\x4d\x23\x00\x00\x3e\x27\x00\x00\x53\x3a\x00\x00\x00\x00\x00\x00\x00\x00\x53\x39\x53\x30\x00\x00\x00\x00\x00\x00\x00\x00\x42\x43\x00\x00\x53\x31\x00\x00\x00\x00\x00\x00\x42\x6f\x53\x36\x3e\x26\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x53\x33\x00\x00\x00\x00\x4c\x64\x00\x00\x00\x00\x00\x00\x37\x3c\x00\x00\x00\x00\x53\x37\x53\x38\x00\x00\x00\x00\x00\x00\x00\x00\x53\x35\x53\x3b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x53\x32\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x53\x41\x53\x46\x00\x00\x53\x42\x00\x00", /* 5580 */ "\x53\x3d\x00\x00\x00\x00\x53\x47\x41\x31\x00\x00\x00\x00\x53\x49\x00\x00\x39\x22\x53\x3f\x43\x7d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x53\x43\x53\x3c\x34\x2d\x00\x00\x34\x6e\x33\x65\x53\x44\x53\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x37\x76\x53\x4a\x53\x48\x41\x53\x35\x4a\x36\x2c\x00\x00\x53\x45\x00\x00\x36\x74\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x31\x44\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x53\x4e\x53\x4c\x00\x00\x54\x27\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x53\x51\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x53\x4b\x00\x00\x53\x4f\x00\x00\x00\x00\x53\x4d\x00\x00\x00\x00\x00\x00\x3b\x4c\x53\x50\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x53\x53\x00\x00\x53\x58\x00\x00\x00\x00\x00\x00\x53\x56\x53\x55\x00\x00", /* 5600 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x43\x32\x00\x00\x00\x00\x32\x45\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x53\x52\x00\x00\x53\x54\x3e\x28\x31\x33\x00\x00\x00\x00\x53\x57\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x32\x5e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x53\x62\x00\x00\x3e\x7c\x53\x5e\x00\x00\x53\x5c\x00\x00\x53\x5d\x00\x00\x53\x5f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x31\x3d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x41\x39\x00\x00\x53\x59\x00\x00\x53\x5a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x33\x7a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x53\x61\x00\x00\x00\x00\x00\x00\x34\x6f\x00\x00\x53\x64\x53\x60\x53\x63\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4a\x2e\x00\x00\x00\x00\x00\x00\x46\x55\x00\x00\x48\x38\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 5680 */ "\x53\x66\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x53\x65\x33\x45\x00\x00\x00\x00\x53\x67\x00\x00\x00\x00\x00\x00\x00\x00\x53\x6a\x00\x00\x00\x00\x00\x00\x00\x00\x53\x69\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x53\x68\x00\x00\x47\x39\x00\x00\x00\x00\x53\x6b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x53\x6c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x53\x6e\x00\x00\x53\x6d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x53\x70\x00\x00\x00\x00\x00\x00\x53\x73\x53\x71\x53\x6f\x53\x72\x00\x00\x00\x00\x00\x00\x00\x00\x53\x74\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x53\x75\x00\x00\x00\x00\x53\x76\x00\x00\x53\x77\x00\x00\x00\x00\x00\x00\x53\x78\x51\x45\x00\x00\x3c\x7c\x3b\x4d\x00\x00\x00\x00\x32\x73\x00\x00\x30\x78\x00\x00\x00\x00\x43\x44\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x53\x79\x00\x00\x3a\x24\x00\x00\x30\x4f\x3f\x5e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x53\x7a\x38\x47\x00\x00\x00\x00\x39\x71\x00\x00\x53\x7c", /* 5700 */ "\x53\x7b\x00\x00\x00\x00\x4a\x60\x53\x7d\x00\x00\x00\x00\x00\x00\x54\x21\x53\x7e\x00\x00\x54\x22\x00\x00\x54\x23\x00\x00\x37\x77\x00\x00\x00\x00\x31\x60\x54\x24\x00\x00\x00\x00\x54\x26\x00\x00\x54\x25\x00\x00\x00\x00\x00\x00\x54\x28\x00\x00\x00\x00\x45\x5a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x54\x29\x30\x35\x3a\x5f\x00\x00\x00\x00\x00\x00\x00\x00\x37\x3d\x00\x00\x00\x00\x43\x4f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x54\x2a\x54\x2b\x00\x00\x00\x00\x54\x2d\x00\x00\x00\x00\x00\x00\x00\x00\x54\x2e\x00\x00\x3a\x64\x00\x00\x00\x00\x00\x00\x00\x00\x36\x51\x00\x00\x00\x00\x4b\x37\x00\x00\x00\x00\x00\x00\x54\x2c\x54\x2f\x3a\x41\x39\x23\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x54\x33\x00\x00\x00\x00\x3a\x25\x00\x00\x43\x33\x00\x00\x00\x00\x54\x30\x44\x5a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x54\x34", /* 5780 */ "\x00\x00\x00\x00\x3f\x62\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x54\x32\x54\x35\x00\x00\x37\x3f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x54\x36\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x54\x37\x00\x00\x39\x24\x33\x40\x54\x39\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x54\x3a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x54\x3b\x00\x00\x00\x00\x54\x38\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x54\x31\x00\x00\x00\x00\x54\x3c\x00\x00\x00\x00\x54\x3d\x00\x00\x00\x00\x00\x00\x00\x00\x4b\x64\x00\x00\x00\x00\x3e\x6b\x00\x00\x00\x00\x00\x00\x54\x3f\x54\x40\x54\x3e\x00\x00\x54\x42\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x47\x38\x00\x00\x00\x00\x30\x68\x49\x56\x00\x00\x00\x00\x54\x43\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3e\x7d\x00\x00\x00\x00\x3c\x39\x00\x00\x47\x5d\x34\x70\x00\x00\x3a\x6b\x00\x00\x00\x00\x00\x00", /* 5800 */ "\x4b\x59\x00\x00\x46\x32\x00\x00\x00\x00\x37\x78\x42\x4f\x00\x00\x00\x00\x00\x00\x54\x41\x54\x44\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x42\x44\x00\x00\x00\x00\x00\x00\x54\x45\x00\x00\x00\x00\x00\x00\x54\x46\x00\x00\x00\x00\x00\x00\x54\x48\x00\x00\x00\x00\x44\x69\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x34\x2e\x00\x00\x00\x00\x00\x00\x00\x00\x74\x21\x31\x61\x4a\x73\x00\x00\x00\x00\x3e\x6c\x45\x48\x00\x00\x00\x00\x00\x00\x00\x00\x3a\x66\x00\x00\x00\x00\x54\x4e\x00\x00\x00\x00\x4a\x3d\x4e\x5d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x32\x74\x54\x4a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x41\x3a\x54\x4d\x00\x00\x45\x63\x00\x00\x00\x00\x45\x49\x45\x64\x48\x39\x44\x4d\x00\x00\x00\x00\x00\x00\x3a\x49\x00\x00\x00\x00\x00\x00\x54\x49\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x31\x76\x00\x00\x45\x36\x00\x00\x00\x00\x00\x00\x00\x00\x54\x4b\x00\x00\x54\x47\x00\x00\x00\x00\x3f\x50\x00\x00\x00\x00\x00\x00\x54\x4f\x00\x00\x00\x00\x00\x00\x00\x00\x3d\x4e\x00\x00", /* 5880 */ "\x00\x00\x00\x00\x00\x00\x36\x2d\x00\x00\x54\x50\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4a\x68\x00\x00\x00\x00\x00\x00\x41\x7d\x00\x00\x00\x00\x00\x00\x00\x00\x44\x46\x00\x00\x00\x00\x54\x52\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4b\x4f\x00\x00\x00\x00\x54\x53\x00\x00\x00\x00\x54\x58\x00\x00\x00\x00\x00\x00\x00\x00\x4a\x2f\x00\x00\x00\x00\x00\x00\x00\x00\x54\x57\x54\x51\x54\x54\x54\x56\x00\x00\x00\x00\x3a\x26\x00\x00\x00\x00\x4a\x49\x00\x00\x00\x00\x00\x00\x54\x59\x00\x00\x43\x45\x00\x00\x00\x00\x32\x75\x00\x00\x3e\x6d\x00\x00\x00\x00\x00\x00\x00\x00\x54\x5b\x00\x00\x54\x5a\x00\x00\x39\x68\x00\x00\x54\x5c\x54\x5e\x54\x5d\x00\x00\x00\x00\x54\x60\x00\x00\x54\x55\x54\x62\x00\x00\x00\x00\x00\x00\x00\x00\x54\x61\x54\x5f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3b\x4e\x3f\x51\x00\x00\x41\x54\x54\x63\x40\x3c\x30\x6d\x47\x64\x00\x00\x00\x00\x00\x00\x00\x00\x44\x5b\x00\x00\x54\x65\x54\x64\x54\x66\x54\x67\x54\x68\x00\x00\x00\x00", /* 5900 */ "\x00\x00\x00\x00\x54\x69\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4a\x51\x54\x6a\x00\x00\x00\x00\x00\x00\x00\x00\x32\x46\x54\x6b\x00\x00\x00\x00\x00\x00\x00\x00\x4d\x3c\x33\x30\x00\x00\x52\x49\x3d\x48\x42\x3f\x54\x6c\x4c\x6b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4c\x34\x00\x00\x00\x00\x54\x6e\x00\x00\x42\x67\x00\x00\x45\x37\x42\x40\x49\x57\x54\x6f\x54\x70\x31\x7b\x00\x00\x00\x00\x3c\x3a\x54\x71\x00\x00\x00\x00\x00\x00\x00\x00\x30\x50\x54\x72\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x54\x73\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x31\x62\x00\x00\x00\x00\x34\x71\x46\x60\x4a\x74\x00\x00\x00\x00\x00\x00\x00\x00\x54\x77\x41\x55\x54\x76\x37\x40\x00\x00\x00\x00\x4b\x5b\x54\x75\x00\x00\x45\x65\x54\x79\x00\x00\x54\x78\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x54\x7b\x00\x00\x54\x7a\x00\x00\x00\x00\x31\x7c\x00\x00\x54\x7c\x3e\x29\x54\x7e\x43\x25\x00\x00\x54\x7d\x00\x00\x4a\x33\x00\x00\x00\x00\x00\x00\x00\x00\x3d\x77\x45\x5b\x00\x00\x00\x00\x00\x00\x55\x21\x00\x00\x00\x00\x00\x00\x00\x00\x39\x25\x00\x00\x00\x00", /* 5980 */ "\x00\x00\x55\x22\x47\x21\x48\x5e\x4c\x51\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x47\x25\x00\x00\x00\x00\x55\x2b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x35\x38\x00\x00\x00\x00\x4d\x45\x00\x00\x00\x00\x4c\x2f\x00\x00\x56\x2c\x00\x00\x55\x23\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x55\x26\x00\x00\x42\x45\x00\x00\x00\x00\x4b\x38\x00\x00\x00\x00\x00\x00\x45\x4a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x55\x27\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4b\x65\x00\x00\x3a\x4a\x00\x00\x00\x00\x3e\x2a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x55\x28\x00\x00\x00\x00\x3b\x50\x00\x00\x3b\x4f\x00\x00\x00\x00\x00\x00\x00\x00\x30\x39\x38\x48\x00\x00\x40\x2b\x30\x51\x00\x00\x00\x00\x00\x00\x00\x00\x55\x2c\x55\x2d\x00\x00\x55\x2a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x31\x38\x34\x2f\x00\x00\x55\x29\x00\x00\x4c\x45\x49\x31\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x30\x28\x00\x00\x00\x00\x00\x00\x00\x00\x30\x79\x00\x00\x00\x00\x00\x00\x3b\x51", /* 5a00 */ "\x00\x00\x30\x52\x00\x00\x30\x23\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x55\x32\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x55\x30\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4c\x3c\x00\x00\x55\x33\x00\x00\x55\x31\x00\x00\x00\x00\x55\x2f\x3f\x31\x00\x00\x00\x00\x00\x00\x00\x00\x55\x2e\x00\x00\x00\x00\x00\x00\x4a\x5a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x38\x64\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x55\x37\x55\x38\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3e\x2b\x00\x00\x00\x00\x00\x00\x55\x34\x4f\x2c\x00\x00\x00\x00\x00\x00\x00\x00\x47\x4c\x00\x00\x00\x00\x55\x36\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3a\x27\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x55\x39\x00\x00\x00\x00\x00\x00\x49\x58\x00\x00\x00\x00\x00\x00\x55\x3a\x00\x00\x55\x35\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4c\x3b", /* 5a80 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x47\x5e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x55\x3b\x49\x32\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x55\x3c\x55\x40\x55\x3d\x00\x00\x00\x00\x32\x47\x55\x3f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3c\x3b\x00\x00\x55\x3e\x37\x79\x00\x00\x00\x00\x00\x00\x55\x4c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x55\x45\x55\x42\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x43\x64\x00\x00\x55\x41\x00\x00\x00\x00\x55\x43\x00\x00\x00\x00\x55\x44\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x55\x46\x55\x47\x00\x00\x00\x00\x00\x00\x00\x00", /* 5b00 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x34\x72\x00\x00\x55\x49\x55\x48\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x55\x4a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3e\x6e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x55\x4d\x00\x00\x44\x5c\x00\x00\x00\x00\x00\x00\x31\x45\x00\x00\x55\x4b\x00\x00\x00\x00\x00\x00\x55\x4e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x55\x4f\x00\x00\x55\x52\x00\x00\x00\x00\x55\x50\x00\x00\x55\x51\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3b\x52\x55\x53\x00\x00\x00\x00\x39\x26\x55\x54\x00\x00\x3b\x7a\x42\x38\x00\x00\x55\x55\x55\x56\x3b\x5a\x39\x27\x00\x00\x4c\x52\x00\x00\x00\x00\x00\x00\x35\x28\x38\x49\x55\x57\x33\x58\x00\x00\x00\x00\x55\x58\x00\x00\x42\x39\x00\x00\x00\x00\x00\x00\x00\x00\x55\x59\x56\x23\x00\x00\x55\x5a\x00\x00\x55\x5b\x00\x00\x00\x00\x55\x5c\x00\x00\x55\x5e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 5b80 */ "\x55\x5f\x00\x00\x00\x00\x55\x60\x00\x00\x42\x70\x00\x00\x31\x27\x3c\x69\x30\x42\x00\x00\x41\x57\x34\x30\x3c\x35\x00\x00\x39\x28\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x45\x66\x00\x00\x3d\x21\x34\x31\x43\x68\x44\x6a\x30\x38\x35\x39\x4a\x75\x00\x00\x3c\x42\x00\x00\x00\x00\x35\x52\x40\x6b\x3c\x3c\x4d\x28\x55\x61\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x35\x5c\x00\x00\x3a\x4b\x00\x00\x00\x00\x33\x32\x31\x63\x3e\x2c\x32\x48\x00\x00\x55\x62\x4d\x46\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3d\x49\x00\x00\x00\x00\x3c\x64\x55\x63\x34\x73\x46\x52\x4c\x29\x55\x64\x00\x00\x55\x65\x00\x00\x00\x00\x49\x59\x00\x00\x00\x00\x00\x00\x55\x67\x00\x00\x34\x28\x36\x77\x55\x66\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x34\x32\x00\x00\x3f\x32\x55\x6b\x3b\x21\x00\x00\x32\x49\x55\x6a\x00\x00\x55\x68\x55\x6c\x55\x69\x47\x2b\x5c\x4d\x3f\x33\x00\x00\x55\x6d\x00\x00\x00\x00\x4e\x40\x00\x00\x55\x6e\x00\x00\x00\x00\x55\x70\x00\x00\x43\x7e\x55\x6f\x00\x00\x40\x23\x00\x00\x3b\x7b\x00\x00\x00\x00\x00\x00\x42\x50\x3c\x77", /* 5c00 */ "\x00\x00\x49\x75\x40\x6c\x00\x00\x3c\x4d\x55\x71\x3e\x2d\x55\x72\x55\x73\x30\x53\x42\x3a\x3f\x52\x00\x00\x55\x74\x46\x33\x3e\x2e\x00\x00\x3e\x2f\x00\x00\x55\x75\x00\x00\x00\x00\x40\x6d\x00\x00\x00\x00\x00\x00\x3e\x30\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x55\x76\x00\x00\x55\x77\x00\x00\x4c\x60\x00\x00\x00\x00\x00\x00\x55\x78\x00\x00\x00\x00\x00\x00\x00\x00\x36\x46\x00\x00\x00\x00\x00\x00\x3d\x22\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x55\x79\x55\x7a\x3c\x5c\x3f\x2c\x46\x74\x3f\x54\x48\x78\x47\x22\x36\x49\x55\x7b\x00\x00\x00\x00\x00\x00\x35\x6f\x55\x7c\x00\x00\x36\x7e\x00\x00\x46\x4f\x32\x30\x00\x00\x3b\x53\x55\x7d\x56\x22\x56\x21\x36\x7d\x00\x00\x55\x7e\x00\x00\x45\x38\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x42\x30\x00\x00\x45\x4b\x3c\x48\x00\x00\x00\x00\x41\x58\x4d\x7a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x56\x24\x00\x00\x56\x25\x46\x56\x00\x00\x3b\x33\x00\x00\x00\x00\x00\x00\x00\x00\x56\x27\x00\x00\x00\x00\x56\x28\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 5c80 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x56\x29\x00\x00\x00\x00\x00\x00\x34\x74\x56\x2a\x00\x00\x00\x00\x56\x2b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x32\x2c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x41\x3b\x34\x64\x00\x00\x56\x2d\x4c\x28\x00\x00\x00\x00\x00\x00\x00\x00\x42\x52\x00\x00\x33\x59\x00\x00\x00\x00\x56\x2f\x56\x31\x34\x5f\x00\x00\x00\x00\x56\x2e\x56\x30\x00\x00\x56\x33\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x56\x32\x00\x00\x56\x34\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x56\x35\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x46\x3d\x36\x2e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x32\x65\x56\x36\x56\x3b\x00\x00\x00\x00\x56\x39\x00\x00\x4a\x77\x4a\x76\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x45\x67\x00\x00\x00\x00\x00\x00\x56\x38\x3d\x54\x00\x00\x56\x37\x00\x00\x00\x00", /* 5d00 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3f\x72\x00\x00\x00\x00\x00\x00\x56\x3c\x00\x00\x00\x00\x3a\x6a\x00\x00\x00\x00\x56\x42\x00\x00\x00\x00\x56\x43\x56\x3d\x33\x33\x56\x3e\x56\x47\x56\x46\x56\x45\x56\x41\x00\x00\x00\x00\x00\x00\x56\x40\x00\x00\x00\x00\x56\x44\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4a\x78\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x56\x4b\x56\x48\x00\x00\x56\x4a\x00\x00\x4d\x72\x00\x00\x56\x49\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x56\x3f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3f\x73\x00\x00\x00\x00\x56\x4c\x00\x00\x00\x00\x3a\x37\x00\x00\x00\x00\x00\x00\x56\x4d\x00\x00\x00\x00\x56\x4e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 5d80 */ "\x00\x00\x00\x00\x56\x51\x00\x00\x56\x50\x00\x00\x00\x00\x56\x4f\x00\x00\x00\x00\x00\x00\x45\x68\x56\x3a\x00\x00\x00\x00\x00\x00\x56\x57\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x56\x53\x00\x00\x00\x00\x00\x00\x00\x00\x56\x52\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x56\x54\x00\x00\x56\x55\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x56\x58\x00\x00\x00\x00\x4e\x66\x00\x00\x56\x59\x56\x56\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x56\x5a\x00\x00\x00\x00\x34\x60\x56\x5b\x00\x00\x00\x00\x00\x00\x00\x00\x56\x5d\x56\x5c\x00\x00\x00\x00\x56\x5e\x00\x00\x00\x00\x00\x00\x00\x00\x56\x5f\x00\x00\x40\x6e\x3d\x23\x00\x00\x00\x00\x3d\x64\x00\x00\x41\x63\x00\x00\x39\x29\x3a\x38\x39\x2a\x35\x70\x00\x00\x00\x00\x56\x60\x00\x00\x00\x00\x3a\x39\x00\x00\x00\x00\x38\x4a\x56\x61\x4c\x26\x47\x43\x56\x62\x00\x00\x39\x2b\x00\x00\x00\x00\x00\x00\x34\x2c\x00\x00\x43\x27\x36\x52\x00\x00", /* 5e00 */ "\x00\x00\x00\x00\x3b\x54\x49\x5b\x00\x00\x00\x00\x48\x41\x00\x00\x00\x00\x00\x00\x00\x00\x56\x63\x34\x75\x00\x00\x00\x00\x00\x00\x00\x00\x56\x66\x00\x00\x00\x00\x00\x00\x00\x00\x44\x21\x00\x00\x00\x00\x56\x65\x56\x64\x56\x67\x00\x00\x44\x6b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3f\x63\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3b\x55\x00\x00\x40\x4a\x00\x00\x42\x53\x35\x22\x00\x00\x00\x00\x44\x22\x00\x00\x00\x00\x56\x68\x56\x69\x3e\x6f\x00\x00\x00\x00\x00\x00\x00\x00\x4b\x39\x00\x00\x00\x00\x56\x6c\x00\x00\x00\x00\x56\x6b\x56\x6a\x49\x7d\x00\x00\x56\x73\x00\x00\x00\x00\x00\x00\x00\x00\x4b\x5a\x00\x00\x56\x6d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x56\x6f\x4b\x6b\x00\x00\x56\x6e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x56\x70\x00\x00\x48\x28\x56\x71\x4a\x3e\x56\x72\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x34\x33\x4a\x3f\x47\x2f\x56\x74\x56\x75\x00\x00\x39\x2c\x34\x34\x56\x76\x38\x38\x4d\x44\x4d\x29\x34\x76\x56\x78", /* 5e80 */ "\x00\x00\x44\x23\x00\x00\x39\x2d\x3e\x31\x00\x00\x00\x00\x48\x5f\x00\x00\x00\x00\x3e\x32\x00\x00\x00\x00\x00\x00\x00\x00\x3d\x78\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x44\x6c\x4a\x79\x45\x39\x00\x00\x00\x00\x39\x2e\x00\x00\x49\x5c\x00\x00\x00\x00\x00\x00\x56\x79\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x45\x59\x3a\x42\x00\x00\x00\x00\x00\x00\x38\x4b\x00\x00\x44\x6d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x30\x43\x3d\x6e\x39\x2f\x4d\x47\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x56\x7a\x56\x7b\x47\x51\x00\x00\x00\x00\x00\x00\x00\x00\x56\x7c\x4e\x77\x4f\x2d\x00\x00\x00\x00\x00\x00\x00\x00\x56\x7e\x56\x7d\x00\x00\x00\x00\x33\x47\x00\x00\x00\x00\x57\x21\x00\x00\x00\x00\x00\x00\x57\x24\x57\x25\x00\x00\x57\x23\x00\x00\x49\x40\x3e\x33\x57\x27\x57\x26\x57\x22\x00\x00\x00\x00\x00\x00\x00\x00\x57\x28\x57\x29\x00\x00\x00\x00\x57\x2a\x00\x00\x00\x00\x00\x00\x57\x2d\x57\x2b\x00\x00\x57\x2c\x57\x2e\x00\x00\x31\x64\x44\x6e\x57\x2f\x00\x00\x37\x7a\x32\x76\x47\x36\x00\x00\x57\x30\x46\x7b", /* 5f00 */ "\x00\x00\x4a\x5b\x00\x00\x57\x31\x4f\x2e\x00\x00\x00\x00\x00\x00\x00\x00\x57\x32\x4a\x40\x57\x35\x50\x21\x50\x31\x00\x00\x3c\x30\x46\x75\x57\x36\x00\x00\x35\x5d\x44\x24\x30\x7a\x57\x37\x4a\x26\x39\x30\x00\x00\x00\x00\x43\x50\x00\x00\x00\x00\x00\x00\x44\x6f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4c\x6f\x38\x39\x38\x4c\x00\x00\x57\x38\x00\x00\x00\x00\x00\x00\x57\x39\x00\x00\x57\x3f\x00\x00\x3c\x65\x00\x00\x00\x00\x00\x00\x44\x25\x00\x00\x36\x2f\x57\x3a\x00\x00\x00\x00\x00\x00\x49\x2b\x00\x00\x43\x46\x00\x00\x00\x00\x57\x3b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x57\x3c\x00\x00\x36\x30\x00\x00\x57\x3d\x00\x00\x57\x3e\x00\x00\x00\x00\x57\x40\x00\x00\x45\x76\x00\x00\x00\x00\x57\x41\x57\x42\x00\x00\x57\x43\x00\x00\x00\x00\x57\x34\x57\x33\x00\x00\x00\x00\x00\x00\x57\x44\x37\x41\x00\x00\x00\x00\x00\x00\x49\x27\x00\x00\x00\x00\x3a\x4c\x49\x37\x44\x26\x49\x4b\x57\x45\x00\x00\x00\x00\x3e\x34\x31\x46\x00\x00\x57\x46\x00\x00\x00\x00\x00\x00\x57\x47\x00\x00\x4c\x72\x00\x00\x00\x00\x48\x60\x00\x00\x00\x00\x57\x4a", /* 5f80 */ "\x31\x7d\x40\x2c\x57\x49\x57\x48\x37\x42\x42\x54\x00\x00\x57\x4e\x57\x4c\x00\x00\x57\x4b\x4e\x27\x38\x65\x00\x00\x00\x00\x00\x00\x3d\x79\x57\x4d\x45\x4c\x3d\x3e\x00\x00\x00\x00\x00\x00\x46\x40\x57\x51\x57\x50\x00\x00\x00\x00\x00\x00\x00\x00\x57\x4f\x00\x00\x57\x52\x38\x66\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x57\x53\x49\x7c\x3d\x5b\x00\x00\x00\x00\x57\x54\x48\x79\x00\x00\x00\x00\x00\x00\x00\x00\x46\x41\x44\x27\x00\x00\x00\x00\x00\x00\x00\x00\x45\x30\x00\x00\x00\x00\x57\x55\x35\x2b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3f\x34\x00\x00\x49\x2c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x34\x77\x47\x26\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x57\x56\x3b\x56\x4b\x3a\x4b\x3b\x00\x00\x00\x00\x31\x7e\x57\x5b\x00\x00\x00\x00\x43\x69\x00\x00\x00\x00\x00\x00\x57\x58\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x32\x77\x00\x00\x00\x00\x00\x00\x00\x00\x58\x2d\x57\x5a\x00\x00\x00\x00\x00\x00\x47\x30\x00\x00\x00\x00\x57\x59\x00\x00\x00\x00\x57\x57\x00\x00\x39\x7a\x00\x00\x57\x5d", /* 6000 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x57\x63\x57\x69\x57\x61\x00\x00\x45\x5c\x00\x00\x00\x00\x57\x66\x49\x5d\x00\x00\x00\x00\x57\x60\x00\x00\x57\x65\x4e\x67\x3b\x57\x00\x00\x00\x00\x42\x55\x57\x5e\x00\x00\x00\x00\x00\x00\x35\x5e\x57\x68\x40\x2d\x31\x65\x57\x62\x32\x78\x57\x67\x00\x00\x00\x00\x00\x00\x36\x31\x00\x00\x57\x64\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x57\x6a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x57\x6c\x57\x76\x57\x74\x00\x00\x00\x00\x57\x71\x00\x00\x00\x00\x00\x00\x57\x70\x4e\x78\x00\x00\x57\x72\x00\x00\x00\x00\x36\x32\x00\x00\x39\x31\x00\x00\x00\x00\x3d\x7a\x00\x00\x00\x00\x00\x00\x57\x79\x57\x6b\x00\x00\x00\x00\x00\x00\x00\x00\x57\x6f\x57\x5f\x00\x00\x32\x7a\x57\x73\x57\x75\x43\x51\x00\x00\x00\x00\x3a\x28\x32\x38\x57\x6d\x57\x78\x57\x77\x36\x33\x00\x00\x42\x29\x33\x66\x00\x00\x00\x00\x00\x00\x00\x00\x37\x43\x00\x00\x57\x6e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 6080 */ "\x00\x00\x57\x7a\x00\x00\x57\x7d\x58\x21\x00\x00\x00\x00\x00\x00\x00\x00\x3c\x3d\x00\x00\x58\x27\x44\x70\x57\x7b\x00\x00\x00\x00\x00\x00\x00\x00\x58\x25\x00\x00\x32\x79\x00\x00\x58\x23\x58\x24\x00\x00\x00\x00\x57\x7e\x58\x22\x00\x00\x00\x00\x00\x00\x38\x67\x4d\x2a\x00\x00\x00\x00\x34\x35\x00\x00\x00\x00\x31\x59\x58\x26\x00\x00\x47\x3a\x30\x2d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x48\x61\x57\x5c\x58\x2c\x58\x30\x4c\x65\x00\x00\x58\x29\x00\x00\x00\x00\x00\x00\x45\x69\x58\x2e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3e\x70\x58\x2f\x46\x57\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4f\x47\x00\x00\x58\x2b\x00\x00\x00\x00\x00\x00\x00\x00\x58\x31\x00\x00\x39\x7b\x00\x00\x40\x4b\x00\x00\x00\x00\x30\x54\x58\x2a\x58\x28\x00\x00\x41\x5a\x00\x00\x00\x00\x00\x00\x57\x7c\x3b\x34\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x42\x46\x58\x3d\x00\x00\x41\x5b\x58\x38\x00\x00\x58\x35\x58\x36\x00\x00\x3c\x66\x58\x39\x58\x3c\x00\x00\x00\x00\x00\x00\x00\x00", /* 6100 */ "\x58\x37\x3d\x25\x00\x00\x58\x3a\x00\x00\x00\x00\x58\x34\x00\x00\x4c\x7c\x4c\x7b\x00\x00\x00\x00\x00\x00\x58\x3e\x58\x3f\x30\x55\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x58\x33\x00\x00\x00\x00\x00\x00\x00\x00\x36\x72\x30\x26\x00\x00\x00\x00\x00\x00\x34\x36\x00\x00\x58\x3b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x58\x43\x58\x42\x00\x00\x00\x00\x00\x00\x58\x47\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x58\x48\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x58\x46\x58\x49\x58\x41\x58\x45\x00\x00\x00\x00\x58\x4a\x00\x00\x58\x4b\x00\x00\x00\x00\x58\x40\x3b\x7c\x00\x00\x58\x44\x42\x56\x39\x32\x58\x32\x3f\x35\x00\x00\x00\x00\x00\x00\x00\x00\x58\x58\x00\x00\x4a\x69\x00\x00\x00\x00\x58\x4e\x58\x4f\x58\x50\x00\x00\x00\x00\x58\x57\x00\x00\x58\x56\x00\x00\x00\x00\x4b\x7d\x34\x37\x00\x00\x58\x54\x00\x00\x37\x45\x33\x34\x00\x00\x00\x00\x58\x51\x00\x00\x00\x00\x4e\x38\x58\x53\x30\x56\x58\x55\x00\x00\x58\x4c\x58\x52\x58\x59\x37\x44\x58\x4d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4d\x5d\x00\x00", /* 6180 */ "\x00\x00\x00\x00\x4d\x2b\x00\x00\x00\x00\x00\x00\x00\x00\x58\x5c\x00\x00\x00\x00\x58\x60\x00\x00\x00\x00\x00\x00\x41\x7e\x00\x00\x4e\x79\x58\x61\x00\x00\x00\x00\x58\x5e\x00\x00\x58\x5b\x00\x00\x00\x00\x58\x5a\x58\x5f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4a\x30\x00\x00\x00\x00\x46\x34\x00\x00\x37\x46\x00\x00\x58\x62\x58\x5d\x00\x00\x58\x63\x00\x00\x00\x00\x00\x00\x37\x7b\x00\x00\x00\x00\x00\x00\x32\x31\x00\x00\x00\x00\x00\x00\x58\x6b\x00\x00\x00\x00\x00\x00\x34\x38\x00\x00\x00\x00\x00\x00\x00\x00\x58\x69\x00\x00\x00\x00\x58\x6a\x3a\x29\x58\x68\x58\x66\x58\x65\x58\x6c\x58\x64\x58\x6e\x00\x00\x00\x00\x32\x7b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x58\x70\x00\x00\x00\x00\x58\x6f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x44\x28\x00\x00\x58\x73\x00\x00\x58\x71\x58\x67\x37\x7c\x00\x00\x58\x72\x00\x00\x58\x76\x58\x75\x58\x77\x58\x74", /* 6200 */ "\x58\x78\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x58\x79\x58\x7a\x4a\x6a\x00\x00\x58\x7c\x58\x7b\x3d\x3f\x00\x00\x40\x2e\x32\x66\x32\x7c\x00\x00\x58\x7d\x00\x00\x30\x3f\x00\x00\x00\x00\x00\x00\x40\x4c\x58\x7e\x00\x00\x6c\x43\x59\x21\x37\x61\x00\x00\x59\x22\x00\x00\x00\x00\x00\x00\x00\x00\x40\x6f\x00\x00\x00\x00\x00\x00\x59\x23\x00\x00\x00\x00\x00\x00\x59\x24\x35\x3a\x59\x25\x00\x00\x59\x26\x59\x27\x42\x57\x00\x00\x00\x00\x00\x00\x38\x4d\x00\x00\x00\x00\x4c\x61\x00\x00\x00\x00\x00\x00\x4b\x3c\x3d\x6a\x59\x28\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x70\x6e\x3d\x48\x62\x00\x00\x3c\x6a\x00\x00\x3a\x4d\x59\x29\x00\x00\x00\x00\x00\x00\x00\x00\x42\x47\x00\x00\x4a\x27\x00\x00\x00\x00\x42\x71\x00\x00\x00\x00\x59\x2c\x00\x00\x00\x00\x59\x2a\x00\x00\x59\x2d\x00\x00\x00\x00\x59\x2b\x00\x00\x00\x00\x00\x00\x00\x00\x59\x2e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4a\x31\x00\x00\x00\x00\x30\x37\x00\x00\x00\x00\x00\x00\x00\x00\x49\x5e\x00\x00\x00\x00\x48\x63\x00\x00\x00\x00\x59\x2f\x00\x00\x59\x32\x3e\x35", /* 6280 */ "\x35\x3b\x00\x00\x59\x30\x59\x37\x3e\x36\x00\x00\x00\x00\x00\x00\x00\x00\x59\x31\x47\x44\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4d\x5e\x59\x33\x59\x34\x59\x38\x45\x6a\x59\x35\x39\x33\x40\x5e\x00\x00\x00\x00\x59\x46\x48\x34\x00\x00\x42\x72\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x48\x64\x5a\x2d\x00\x00\x00\x00\x00\x00\x00\x00\x4a\x7a\x00\x00\x00\x00\x00\x00\x44\x71\x00\x00\x00\x00\x00\x00\x4b\x75\x00\x00\x59\x3b\x32\x21\x43\x6a\x00\x00\x00\x00\x00\x00\x00\x00\x59\x44\x00\x00\x00\x00\x43\x34\x59\x3e\x59\x45\x59\x40\x59\x47\x59\x43\x00\x00\x59\x42\x47\x6f\x00\x00\x59\x3c\x32\x7d\x59\x3a\x35\x71\x42\x73\x59\x36\x00\x00\x00\x00\x59\x39\x39\x34\x40\x5b\x00\x00\x3e\x37\x59\x41\x47\x52\x00\x00\x00\x00\x35\x72\x33\x48\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x33\x67\x3f\x21\x59\x49\x59\x4e\x00\x00\x59\x4a\x00\x00\x37\x7d\x00\x00\x59\x4f\x3b\x22\x39\x69\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3d\x26\x59\x3d", /* 6300 */ "\x00\x00\x3b\x7d\x59\x4c\x00\x00\x00\x00\x00\x00\x00\x00\x3b\x58\x59\x4d\x30\x44\x00\x00\x00\x00\x59\x48\x00\x00\x00\x00\x00\x00\x00\x00\x44\x29\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x35\x73\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x36\x34\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x59\x4b\x30\x27\x00\x00\x00\x00\x3a\x43\x00\x00\x00\x00\x00\x00\x3f\x36\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x44\x72\x00\x00\x00\x00\x48\x54\x59\x51\x41\x5e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x42\x2a\x00\x00\x00\x00\x3b\x2b\x59\x52\x00\x00\x59\x54\x59\x50\x00\x00\x00\x00\x00\x00\x00\x00\x4a\x61\x00\x00\x44\x3d\x00\x00\x00\x00\x00\x00\x00\x00\x41\x5c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4a\x7b\x3c\x4e\x59\x60\x00\x00\x59\x5f\x00\x00\x00\x00\x3f\x78\x00\x00\x00\x00\x00\x00\x37\x7e\x00\x00\x00\x00\x00\x00\x59\x59\x3e\x39\x00\x00\x00\x00\x46\x68\x47\x31\x00\x00\x00\x00\x00\x00\x00\x00", /* 6380 */ "\x59\x57\x00\x00\x00\x00\x41\x5d\x00\x00\x00\x00\x00\x00\x00\x00\x3c\x78\x59\x5c\x00\x00\x00\x00\x3e\x38\x00\x00\x59\x56\x59\x5b\x00\x00\x00\x00\x47\x53\x00\x00\x00\x00\x00\x00\x59\x55\x00\x00\x37\x21\x00\x00\x00\x00\x33\x5d\x00\x00\x00\x00\x00\x00\x59\x5d\x4e\x2b\x3a\x4e\x43\x35\x59\x5a\x00\x00\x40\x5c\x00\x00\x39\x35\x3f\x64\x31\x66\x41\x3c\x59\x58\x35\x45\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x37\x47\x00\x00\x44\x4f\x59\x5e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x41\x5f\x00\x00\x00\x00\x59\x61\x00\x00\x59\x63\x00\x00\x00\x00\x42\x37\x59\x69\x00\x00\x59\x64\x00\x00\x00\x00\x59\x66\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x49\x41\x44\x73\x00\x00\x59\x67\x00\x00\x00\x00\x00\x00\x4d\x2c\x00\x00\x00\x00\x00\x00\x4d\x48\x34\x39\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x30\x2e\x00\x00\x59\x65\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x59\x62\x00\x00\x00\x00\x00\x00\x00\x00\x34\x78\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x31\x67\x00\x00\x59\x68\x00\x00\x00\x00\x00\x00\x4d\x49\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 6400 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x59\x6c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x42\x3b\x00\x00\x59\x73\x00\x00\x00\x00\x00\x00\x59\x6d\x00\x00\x00\x00\x59\x6a\x59\x71\x00\x00\x00\x00\x00\x00\x00\x00\x59\x53\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x59\x6e\x00\x00\x59\x72\x00\x00\x00\x00\x00\x00\x48\x42\x45\x6b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x59\x6b\x00\x00\x59\x6f\x00\x00\x00\x00\x00\x00\x37\x48\x00\x00\x00\x00\x00\x00\x3a\x71\x00\x00\x00\x00\x00\x00\x40\x5d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x59\x77\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x45\x26\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x59\x74\x00\x00\x4b\x60\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x59\x75\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x59\x76\x00\x00\x4c\x4e\x00\x00\x40\x22\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 6480 */ "\x00\x00\x00\x00\x00\x00\x37\x62\x00\x00\x00\x00\x00\x00\x00\x00\x59\x7d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3b\x35\x59\x7a\x00\x00\x59\x79\x00\x00\x00\x00\x00\x00\x00\x00\x47\x32\x00\x00\x00\x00\x00\x00\x46\x35\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x45\x31\x59\x7b\x00\x00\x00\x00\x00\x00\x59\x7c\x00\x00\x49\x6f\x00\x00\x47\x45\x3b\x23\x00\x00\x40\x71\x00\x00\x4b\x50\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x33\x49\x00\x00\x5a\x25\x59\x7e\x00\x00\x00\x00\x00\x00\x00\x00\x4d\x4a\x5a\x27\x00\x00\x00\x00\x5a\x23\x00\x00\x5a\x24\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x41\x60\x00\x00\x00\x00\x00\x00\x00\x00\x5a\x22\x00\x00\x59\x3f\x00\x00\x00\x00\x00\x00\x5a\x26\x00\x00\x5a\x21\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5a\x2b\x5a\x2c\x45\x27\x5a\x2e\x00\x00\x00\x00\x3b\x24\x5a\x29\x00\x00\x00\x00\x00\x00\x00\x00\x35\x3c\x00\x00\x00\x00\x5a\x2f\x00\x00\x5a\x28\x5a\x33\x00\x00\x5a\x32\x00\x00\x5a\x31\x00\x00\x00\x00\x00\x00\x5a\x34\x00\x00\x00\x00\x5a\x36\x3e\x71\x00\x00", /* 6500 */ "\x5a\x35\x00\x00\x00\x00\x00\x00\x00\x00\x5a\x39\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5a\x37\x00\x00\x00\x00\x00\x00\x5a\x38\x59\x70\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5a\x3b\x5a\x3a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x59\x78\x5a\x3c\x5a\x30\x00\x00\x00\x00\x3b\x59\x00\x00\x00\x00\x00\x00\x00\x00\x5a\x3d\x5a\x3e\x5a\x40\x5a\x3f\x5a\x41\x32\x7e\x00\x00\x39\x36\x00\x00\x00\x00\x4a\x7c\x40\x2f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x38\x4e\x00\x00\x00\x00\x5a\x43\x00\x00\x00\x00\x00\x00\x00\x00\x5a\x46\x00\x00\x49\x52\x00\x00\x35\x5f\x00\x00\x00\x00\x00\x00\x5a\x45\x5a\x44\x47\x54\x5a\x47\x36\x35\x00\x00\x00\x00\x00\x00\x5a\x49\x5a\x48\x00\x00\x00\x00\x00\x00\x34\x3a\x3b\x36\x00\x00\x00\x00\x46\x58\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x37\x49\x00\x00\x00\x00\x00\x00\x3f\x74\x00\x00\x5a\x4a\x00\x00\x40\x30\x45\x28\x00\x00\x49\x5f\x5a\x4b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 6580 */ "\x00\x00\x00\x00\x5a\x4c\x5a\x4d\x00\x00\x00\x00\x00\x00\x4a\x38\x55\x5d\x40\x46\x00\x00\x00\x00\x49\x4c\x00\x00\x3a\x58\x00\x00\x48\x65\x48\x43\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x45\x4d\x00\x00\x4e\x41\x00\x00\x5a\x4f\x3c\x50\x00\x00\x00\x00\x5a\x50\x00\x00\x30\x36\x00\x00\x00\x00\x36\x54\x40\x4d\x00\x00\x49\x60\x00\x00\x00\x00\x00\x00\x5a\x51\x3b\x42\x43\x47\x00\x00\x3b\x5b\x3f\x37\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5a\x52\x00\x00\x4a\x7d\x00\x00\x00\x00\x31\x77\x3b\x5c\x00\x00\x00\x00\x00\x00\x5a\x55\x00\x00\x5a\x53\x5a\x56\x4e\x39\x5a\x54\x00\x00\x00\x00\x00\x00\x00\x00\x40\x7b\x5a\x57\x00\x00\x00\x00\x42\x32\x00\x00\x00\x00\x5a\x58\x00\x00\x00\x00\x00\x00\x00\x00\x34\x7a\x00\x00\x5a\x5a\x00\x00\x5a\x59\x00\x00\x00\x00\x00\x00\x00\x00\x5a\x5b\x5a\x5c\x34\x7b\x00\x00\x00\x00\x46\x7c\x43\x36\x35\x6c\x3b\x5d\x41\x61\x00\x00\x00\x00\x3d\x5c\x30\x30\x00\x00\x00\x00\x00\x00\x5a\x5d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x32\x22\x5a\x61\x00\x00\x00\x00\x00\x00\x00\x00", /* 6600 */ "\x00\x00\x00\x00\x39\x37\x5a\x60\x00\x00\x00\x00\x3a\x2b\x3e\x3a\x00\x00\x00\x00\x5a\x5f\x00\x00\x3e\x3b\x00\x00\x4c\x40\x3a\x2a\x00\x00\x00\x00\x00\x00\x30\x57\x40\x4e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5a\x66\x00\x00\x00\x00\x40\x31\x31\x47\x00\x00\x00\x00\x00\x00\x00\x00\x3d\x55\x00\x00\x4b\x66\x3a\x72\x00\x00\x00\x00\x00\x00\x00\x00\x3e\x3c\x00\x00\x40\x27\x00\x00\x00\x00\x00\x00\x00\x00\x5a\x65\x5a\x63\x5a\x64\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x43\x6b\x00\x00\x00\x00\x5b\x26\x00\x00\x5a\x6a\x3b\x7e\x39\x38\x5a\x68\x00\x00\x00\x00\x00\x00\x00\x00\x5a\x69\x00\x00\x3f\x38\x00\x00\x00\x00\x00\x00\x5a\x67\x00\x00\x00\x00\x3b\x2f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5a\x6c\x5a\x6b\x5a\x70\x00\x00\x00\x00\x5a\x71\x00\x00\x5a\x6d\x00\x00\x33\x22\x5a\x6e\x5a\x6f\x48\x55\x00\x00\x00\x00\x00\x00\x00\x00\x49\x61\x37\x4a\x5a\x72\x00\x00\x00\x00\x00\x00\x40\x32\x00\x00\x3e\x3d\x00\x00\x00\x00\x00\x00\x43\x52\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 6680 */ "\x00\x00\x36\x47\x00\x00\x5a\x73\x5a\x77\x00\x00\x00\x00\x32\x4b\x5a\x74\x5a\x76\x00\x00\x00\x00\x00\x00\x00\x00\x5a\x75\x00\x00\x00\x00\x3d\x6b\x00\x00\x00\x00\x00\x00\x00\x00\x43\x48\x30\x45\x5a\x78\x00\x00\x00\x00\x00\x00\x00\x00\x5a\x79\x00\x00\x00\x00\x00\x00\x00\x00\x44\x2a\x00\x00\x00\x00\x00\x00\x4e\x71\x00\x00\x00\x00\x00\x00\x00\x00\x3b\x43\x00\x00\x00\x00\x4a\x6b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4b\x3d\x00\x00\x00\x00\x00\x00\x5b\x22\x5a\x7b\x00\x00\x00\x00\x5a\x7e\x00\x00\x5a\x7d\x00\x00\x00\x00\x5a\x7a\x00\x00\x00\x00\x5b\x21\x00\x00\x00\x00\x46\x5e\x00\x00\x5a\x7c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5b\x23\x00\x00\x00\x00\x3d\x6c\x5b\x24\x00\x00\x4d\x4b\x47\x78\x00\x00\x00\x00\x5b\x25\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5b\x27\x00\x00\x00\x00\x5b\x28\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5b\x29\x00\x00\x36\x4a\x31\x48\x39\x39\x5b\x2a\x00\x00\x5b\x2b\x3d\x71\x41\x62\x00\x00\x00\x00\x52\x58\x41\x3e\x41\x3d\x42\x58", /* 6700 */ "\x3a\x47\x00\x00\x00\x00\x50\x72\x00\x00\x00\x00\x00\x00\x00\x00\x37\x6e\x4d\x2d\x00\x00\x4a\x7e\x00\x00\x49\x7e\x00\x00\x5b\x2c\x00\x00\x00\x00\x00\x00\x00\x00\x3a\x73\x44\x3f\x5b\x2d\x4f\x2f\x00\x00\x00\x00\x00\x00\x4b\x3e\x00\x00\x44\x2b\x5b\x2e\x34\x7c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5b\x2f\x5b\x30\x4c\x5a\x00\x00\x4c\x24\x4b\x76\x4b\x5c\x3b\x25\x5b\x32\x00\x00\x00\x00\x3c\x6b\x00\x00\x00\x00\x4b\x51\x00\x00\x5b\x34\x5b\x37\x5b\x36\x00\x00\x34\x79\x00\x00\x00\x00\x35\x60\x00\x00\x5b\x33\x00\x00\x5b\x35\x00\x00\x00\x00\x00\x00\x00\x00\x5b\x38\x00\x00\x00\x00\x3f\x79\x00\x00\x00\x00\x00\x00\x00\x00\x4d\x7b\x30\x49\x3a\x60\x42\x3c\x00\x00\x3c\x5d\x00\x00\x00\x00\x3e\x73\x00\x00\x00\x00\x5b\x3b\x00\x00\x00\x00\x45\x4e\x00\x00\x5b\x39\x42\x2b\x5b\x3a\x3e\x72\x4c\x5d\x5b\x3c\x5b\x3d\x4d\x68\x00\x00\x00\x00\x00\x00\x00\x00\x5b\x42\x00\x00\x00\x00\x39\x3a\x00\x00\x47\x55\x5b\x3f\x45\x6c\x5a\x5e\x5a\x62\x00\x00\x35\x4f\x00\x00\x47\x47\x00\x00\x00\x00\x00\x00\x00\x00\x5b\x41\x00\x00\x3e\x3e\x48\x44", /* 6780 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5b\x47\x00\x00\x48\x7a\x00\x00\x5b\x3e\x00\x00\x5b\x44\x5b\x43\x00\x00\x00\x00\x00\x00\x40\x4f\x00\x00\x00\x00\x00\x00\x00\x00\x4b\x6d\x00\x00\x4e\x53\x00\x00\x00\x00\x4b\x67\x00\x00\x32\x4c\x3b\x5e\x00\x00\x00\x00\x4f\x48\x5b\x46\x3f\x75\x00\x00\x00\x00\x00\x00\x5b\x45\x00\x00\x00\x00\x5b\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x38\x4f\x00\x00\x00\x00\x00\x00\x5b\x4c\x5b\x4a\x00\x00\x32\x4d\x5b\x48\x5b\x4e\x5b\x54\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x42\x48\x00\x00\x00\x00\x4a\x41\x00\x00\x5b\x56\x00\x00\x00\x00\x00\x00\x49\x22\x00\x00\x00\x00\x00\x00\x5b\x55\x47\x70\x4b\x3f\x34\x3b\x00\x00\x40\x77\x3d\x40\x00\x00\x00\x00\x00\x00\x44\x53\x00\x00\x4d\x2e\x00\x00\x00\x00\x5b\x51\x5b\x50\x00\x00\x00\x00\x00\x00\x5b\x52\x00\x00\x5b\x4f\x00\x00\x00\x00\x5b\x57\x00\x00\x5b\x4d\x00\x00\x00\x00\x5b\x4b\x00\x00\x5b\x53\x5b\x49\x00\x00\x43\x6c\x00\x00\x4c\x78\x3c\x46\x3a\x74\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3a\x3a\x00\x00\x00\x00\x4b\x6f\x33\x41", /* 6800 */ "\x00\x00\x00\x00\x44\x4e\x46\x4a\x31\x49\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x72\x00\x00\x00\x00\x40\x34\x37\x2a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5b\x59\x00\x00\x00\x00\x39\x3b\x33\x7c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5b\x5b\x33\x74\x5b\x61\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5b\x5e\x00\x00\x40\x73\x00\x00\x00\x00\x00\x00\x33\x4b\x3a\x2c\x00\x00\x00\x00\x33\x4a\x3a\x4f\x00\x00\x00\x00\x5b\x5c\x37\x65\x37\x4b\x45\x6d\x00\x00\x00\x00\x5b\x5a\x00\x00\x30\x46\x00\x00\x00\x00\x00\x00\x00\x00\x5b\x5d\x5b\x5f\x00\x00\x36\x4d\x37\x2c\x00\x00\x34\x3c\x35\x4b\x00\x00\x00\x00\x00\x00\x00\x00\x5b\x62\x00\x00\x00\x00\x3a\x79\x4b\x71\x00\x00\x3b\x37\x00\x00\x00\x00\x00\x00\x5b\x63\x00\x00\x00\x00\x00\x00\x49\x30\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5b\x6f\x00\x00\x32\x33\x5b\x64\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5b\x75\x5b\x65", /* 6880 */ "\x00\x00\x4e\x42\x00\x00\x5b\x6c\x00\x00\x47\x5f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5b\x74\x00\x00\x5b\x67\x00\x00\x00\x00\x00\x00\x30\x34\x5b\x69\x00\x00\x00\x00\x39\x3c\x00\x00\x00\x00\x00\x00\x5b\x6b\x00\x00\x5b\x6a\x00\x00\x5b\x66\x5b\x71\x00\x00\x3e\x3f\x00\x00\x00\x00\x00\x00\x54\x6d\x38\x68\x4d\x7c\x00\x00\x00\x00\x00\x00\x00\x00\x5b\x68\x00\x00\x44\x74\x33\x23\x3a\x2d\x00\x00\x5b\x60\x00\x00\x5b\x70\x33\x61\x00\x00\x00\x00\x5b\x6e\x5b\x72\x00\x00\x45\x6e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x34\x7e\x00\x00\x5c\x32\x00\x00\x00\x00\x4c\x49\x5b\x77\x34\x7d\x00\x00\x5b\x7e\x00\x00\x00\x00\x00\x00\x00\x00\x4b\x40\x00\x00\x5c\x21\x5c\x23\x00\x00\x5c\x27\x5b\x79\x00\x00\x43\x2a\x00\x00\x00\x00\x00\x00\x00\x00\x45\x6f\x5c\x2b\x5b\x7c\x00\x00\x5c\x28\x00\x00\x00\x00\x00\x00\x5c\x22\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3f\x39\x5c\x2c\x00\x00\x00\x00\x40\x33\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5c\x2a\x34\x3d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 6900 */ "\x4f\x50\x5b\x76\x00\x00\x00\x00\x5c\x26\x30\x58\x00\x00\x00\x00\x5b\x78\x00\x00\x00\x00\x4c\x3a\x5b\x7d\x3f\x22\x44\x47\x5b\x73\x00\x00\x00\x00\x5c\x25\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3f\x7a\x5c\x2f\x33\x71\x38\x21\x00\x00\x00\x00\x00\x00\x00\x00\x5c\x31\x5b\x7a\x5c\x30\x00\x00\x5c\x29\x5b\x7b\x00\x00\x5c\x2d\x00\x00\x5c\x2e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5c\x3f\x00\x00\x00\x00\x00\x00\x46\x4e\x00\x00\x5c\x24\x00\x00\x00\x00\x5c\x3b\x00\x00\x00\x00\x00\x00\x5c\x3d\x00\x00\x44\x58\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4d\x4c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x49\x76\x5c\x38\x42\x4a\x00\x00\x00\x00\x00\x00\x5c\x3e\x41\x3f\x00\x00\x5c\x35\x5c\x42\x5c\x41\x00\x00\x46\x6f\x5c\x40\x46\x6a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5c\x44\x5c\x37\x00\x00\x36\x48\x5c\x3a\x3d\x5d\x00\x00\x00\x00\x00\x00\x47\x60\x5c\x3c\x36\x4b\x00\x00\x5c\x34\x5c\x36\x5c\x33\x00\x00\x00\x00\x4f\x30\x33\x5a\x5c\x39\x00\x00", /* 6980 */ "\x00\x00\x5c\x43\x33\x35\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3a\x67\x00\x00\x00\x00\x00\x00\x31\x5d\x00\x00\x00\x00\x5c\x54\x00\x00\x00\x00\x4f\x31\x5c\x57\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3f\x3a\x5c\x56\x00\x00\x00\x00\x00\x00\x5c\x55\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5c\x52\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5c\x46\x00\x00\x00\x00\x5c\x63\x5c\x45\x00\x00\x5c\x58\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5c\x50\x00\x00\x00\x00\x5c\x4b\x5c\x48\x00\x00\x5c\x49\x00\x00\x5c\x51\x00\x00\x00\x00\x00\x00\x74\x22\x00\x00\x00\x00\x5c\x4e\x39\x3d\x44\x48\x41\x64\x5c\x4c\x00\x00\x5c\x47\x00\x00\x00\x00\x5c\x4a\x00\x00\x00\x00\x00\x00\x00\x00\x4d\x4d\x4b\x6a\x00\x00\x00\x00\x00\x00\x5c\x4f\x5c\x59\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5c\x61\x5c\x5a\x00\x00\x00\x00\x5c\x67\x00\x00\x5c\x65\x00\x00\x00\x00\x00\x00\x00\x00\x5c\x60\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5c\x5f\x00\x00\x44\x50\x00\x00\x41\x65\x00\x00\x5c\x5d", /* 6a00 */ "\x00\x00\x00\x00\x5c\x5b\x00\x00\x00\x00\x5c\x62\x00\x00\x00\x00\x00\x00\x00\x00\x5c\x68\x48\x75\x5c\x6e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5c\x69\x5c\x6c\x5c\x66\x00\x00\x00\x00\x43\x74\x00\x00\x49\x38\x00\x00\x5c\x5c\x00\x00\x00\x00\x5c\x64\x3e\x40\x00\x00\x4c\x4f\x5c\x78\x5c\x6b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x38\x22\x32\x23\x33\x5f\x00\x00\x00\x00\x5c\x53\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3e\x41\x5c\x70\x00\x00\x5c\x77\x3c\x79\x33\x72\x00\x00\x00\x00\x43\x2e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5c\x6d\x00\x00\x00\x00\x5c\x72\x5c\x76\x00\x00\x00\x00\x36\x36\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x35\x4c\x5c\x74\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x35\x21\x00\x00\x46\x4b\x5c\x73\x00\x00\x00\x00\x00\x00\x5c\x75\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5c\x6f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5c\x71\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x33\x60", /* 6a80 */ "\x43\x49\x00\x00\x00\x00\x00\x00\x5c\x7c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5c\x7a\x38\x69\x00\x00\x5c\x79\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5d\x21\x00\x00\x00\x00\x00\x00\x00\x00\x5b\x58\x00\x00\x00\x00\x00\x00\x5c\x7b\x00\x00\x5c\x7d\x5c\x7e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5d\x2c\x00\x00\x5d\x28\x00\x00\x5b\x6d\x00\x00\x00\x00\x00\x00\x00\x00\x5d\x27\x00\x00\x00\x00\x00\x00\x00\x00\x5d\x26\x00\x00\x00\x00\x5d\x23\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5c\x6a\x5d\x25\x5d\x24\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5d\x2a\x00\x00\x4f\x26\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5d\x2d\x36\x7b\x00\x00\x00\x00\x5d\x29\x5d\x2b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x48\x27\x00\x00\x5d\x2e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5d\x32\x5d\x2f\x00\x00\x00\x00\x00\x00\x00\x00", /* 6b00 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x4d\x73\x5d\x30\x00\x00\x00\x00\x00\x00\x00\x00\x5c\x5e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5d\x33\x00\x00\x00\x00\x00\x00\x5d\x34\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x31\x35\x00\x00\x5d\x36\x37\x67\x3c\x21\x00\x00\x36\x55\x00\x00\x00\x00\x00\x00\x32\x24\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4d\x5f\x00\x00\x00\x00\x00\x00\x00\x00\x5d\x38\x5d\x37\x5d\x3a\x35\x3d\x00\x00\x00\x00\x36\x56\x34\x3e\x00\x00\x00\x00\x00\x00\x00\x00\x5d\x3d\x00\x00\x00\x00\x00\x00\x5d\x3c\x00\x00\x5d\x3e\x00\x00\x00\x00\x32\x4e\x00\x00\x43\x37\x00\x00\x5d\x3f\x00\x00\x00\x00\x34\x3f\x5d\x41\x00\x00\x00\x00\x00\x00\x00\x00\x5d\x40\x00\x00\x5d\x42\x00\x00\x00\x00\x00\x00\x5d\x43\x00\x00\x5d\x44\x3b\x5f\x40\x35\x3a\x21\x00\x00\x49\x70\x00\x00\x00\x00\x4a\x62\x4f\x44\x00\x00\x00\x00\x00\x00\x00\x00\x3b\x75\x00\x00\x00\x00\x00\x00\x3a\x50\x4e\x72\x00\x00\x00\x00\x00\x00\x5d\x45\x5d\x46\x00\x00\x3b\x60\x00\x00\x00\x00\x00\x00\x5d\x47", /* 6b80 */ "\x5d\x48\x00\x00\x00\x00\x5d\x4a\x5d\x49\x00\x00\x4b\x58\x00\x00\x00\x00\x3d\x5e\x3c\x6c\x3b\x44\x00\x00\x5d\x4b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5d\x4d\x3f\x23\x00\x00\x5d\x4c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5d\x4e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5d\x4f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5d\x50\x5d\x51\x00\x00\x00\x00\x00\x00\x5d\x52\x00\x00\x5d\x54\x5d\x53\x5d\x55\x32\x25\x43\x4a\x00\x00\x5d\x56\x00\x00\x00\x00\x3b\x26\x33\x4c\x5d\x57\x00\x00\x00\x00\x45\x42\x54\x4c\x00\x00\x00\x00\x00\x00\x00\x00\x35\x23\x5d\x58\x00\x00\x00\x00\x00\x00\x00\x00\x5d\x59\x00\x00\x4a\x6c\x4b\x68\x00\x00\x00\x00\x00\x00\x46\x47\x5d\x5a\x48\x66\x00\x00\x00\x00\x00\x00\x48\x7b\x00\x00\x00\x00\x4c\x53\x00\x00\x00\x00\x00\x00\x5d\x5b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5d\x5d\x5d\x5c\x00\x00\x00\x00\x5d\x5f\x00\x00\x00\x00\x00\x00\x5d\x5e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 6c00 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5d\x61\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3b\x61\x00\x00\x4c\x31\x00\x00\x5d\x62\x5d\x63\x00\x00\x00\x00\x35\x24\x00\x00\x00\x00\x00\x00\x5d\x64\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5d\x66\x5d\x65\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3f\x65\x00\x00\x00\x00\x49\x39\x31\x4a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x48\x45\x00\x00\x44\x75\x3d\x41\x35\x61\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x48\x46\x00\x00\x3c\x2e\x00\x00\x00\x00\x00\x00\x00\x00\x5d\x68\x00\x00\x34\x40\x00\x00\x00\x00\x31\x78\x00\x00\x00\x00\x46\x72\x5d\x67\x39\x3e\x43\x53\x00\x00\x5d\x69\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5d\x71\x00\x00\x5d\x6a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x42\x41\x00\x00\x35\x62\x5d\x72\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x37\x68\x00\x00\x00\x00\x35\x25\x5d\x70\x00\x00", /* 6c80 */ "\x00\x00\x5d\x6e\x5d\x6b\x4d\x60\x00\x00\x00\x00\x00\x00\x00\x00\x44\x40\x00\x00\x00\x00\x00\x00\x46\x59\x5d\x6c\x00\x00\x00\x00\x5d\x74\x00\x00\x5d\x73\x37\x23\x00\x00\x00\x00\x32\x2d\x00\x00\x00\x00\x3a\x3b\x5d\x6d\x5d\x6f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4b\x57\x42\x74\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4b\x77\x00\x00\x00\x00\x5d\x7c\x00\x00\x00\x00\x5d\x7d\x00\x00\x32\x4f\x00\x00\x00\x00\x00\x00\x00\x00\x4a\x28\x4c\x7d\x5e\x21\x3c\x23\x3e\x42\x5d\x78\x5d\x7e\x31\x68\x00\x00\x36\x37\x00\x00\x00\x00\x5d\x75\x5d\x7a\x00\x00\x00\x00\x00\x00\x40\x74\x47\x71\x00\x00\x48\x67\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5d\x77\x00\x00\x4b\x21\x00\x00\x5d\x79\x00\x00\x5e\x24\x00\x00\x5e\x22\x00\x00\x5d\x7b\x00\x00\x00\x00\x00\x00\x4b\x22\x47\x48\x35\x63\x00\x00\x45\x25\x00\x00\x00\x00\x43\x6d\x00\x00\x5e\x25\x00\x00\x00\x00\x00\x00\x00\x00\x5e\x23\x42\x59\x5d\x76\x00\x00\x31\x4b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 6d00 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4d\x4e\x5e\x30\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5e\x2f\x00\x00\x00\x00\x00\x00\x00\x00\x40\x76\x00\x00\x5e\x2c\x00\x00\x4d\x6c\x00\x00\x00\x00\x46\x36\x5e\x26\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x44\x45\x00\x00\x00\x00\x00\x00\x31\x4c\x39\x3f\x5e\x29\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3d\x27\x5e\x2e\x00\x00\x5e\x2d\x5e\x28\x00\x00\x5e\x2b\x00\x00\x00\x00\x33\x68\x00\x00\x5e\x2a\x47\x49\x00\x00\x00\x00\x4e\x2e\x00\x00\x00\x00\x3e\x74\x40\x75\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5e\x36\x5e\x34\x00\x00\x49\x4d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5e\x31\x5e\x33\x00\x00\x31\x3a\x00\x00\x00\x00\x39\x40\x4f\x32\x00\x00\x33\x3d\x00\x00\x49\x62\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4d\x61\x00\x00\x00\x00\x33\x24\x3f\x3b\x5e\x35\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 6d80 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5e\x3a\x00\x00\x00\x00\x3e\x43\x00\x00\x00\x00\x00\x00\x4d\x30\x00\x00\x5e\x37\x00\x00\x00\x00\x00\x00\x00\x00\x5e\x32\x00\x00\x5e\x38\x00\x00\x00\x00\x00\x00\x4e\x5e\x00\x00\x45\x73\x46\x42\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x33\x36\x00\x00\x00\x00\x31\x55\x00\x00\x00\x00\x5e\x3e\x00\x00\x00\x00\x5e\x41\x00\x00\x00\x00\x00\x00\x4e\x43\x00\x00\x00\x00\x00\x00\x4d\x64\x00\x00\x00\x00\x00\x00\x00\x00\x5e\x48\x5e\x42\x5e\x3f\x00\x00\x00\x00\x00\x00\x4e\x54\x5e\x45\x00\x00\x00\x00\x00\x00\x00\x00\x3d\x4a\x5e\x47\x00\x00\x00\x00\x5e\x4c\x00\x00\x00\x00\x45\x71\x5e\x4a\x00\x00\x00\x00\x00\x00\x00\x00\x5e\x44\x00\x00\x00\x00\x43\x38\x00\x00\x00\x00\x5e\x4b\x00\x00\x5e\x40\x00\x00\x5e\x46\x00\x00\x5e\x4d\x30\x7c\x5e\x43\x00\x00\x5e\x4e\x00\x00\x00\x00\x3f\x3c\x00\x00\x3d\x5f\x00\x00\x4a\x25\x00\x00\x3a\x2e\x00\x00\x5e\x3b\x5e\x49\x45\x3a\x00\x00\x00\x00\x00\x00\x00\x00", /* 6e00 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x36\x00\x00\x33\x69\x3a\x51\x3e\x44\x5e\x3d\x3d\x42\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x37\x4c\x00\x00\x5e\x3c\x00\x00\x00\x00\x00\x00\x5e\x52\x3d\x6d\x38\x3a\x00\x00\x5e\x61\x00\x00\x5e\x5b\x35\x74\x45\x4f\x00\x00\x5e\x56\x5e\x5f\x30\x2f\x31\x32\x00\x00\x00\x00\x32\x39\x00\x00\x5e\x58\x42\x2c\x5e\x4f\x5e\x51\x39\x41\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5e\x62\x00\x00\x5e\x5d\x00\x00\x00\x00\x00\x00\x5e\x55\x00\x00\x00\x00\x00\x00\x00\x00\x5e\x5c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4c\x2b\x00\x00\x00\x00\x5e\x5a\x5e\x5e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x38\x50\x00\x00\x3e\x45\x00\x00\x00\x00\x43\x39\x00\x00\x00\x00\x00\x00\x5e\x54\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4d\x2f\x00\x00\x00\x00\x00\x00\x5e\x57\x00\x00\x00\x00\x5e\x50\x45\x72\x00\x00\x00\x00\x5e\x53\x00\x00\x00\x00\x00\x00\x5e\x59\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4f\x51\x3c\x3e", /* 6e80 */ "\x4b\x7e\x00\x00\x5e\x63\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x48\x2e\x00\x00\x00\x00\x5e\x6f\x38\x3b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3d\x60\x00\x00\x5e\x65\x00\x00\x00\x00\x00\x00\x4e\x2f\x39\x42\x00\x00\x5e\x72\x00\x00\x00\x00\x30\x6e\x00\x00\x00\x00\x5e\x70\x00\x00\x00\x00\x00\x00\x00\x00\x5e\x64\x00\x00\x00\x00\x00\x00\x00\x00\x5e\x6a\x00\x00\x00\x00\x5e\x6c\x00\x00\x00\x00\x00\x00\x4d\x4f\x5e\x67\x00\x00\x00\x00\x45\x2e\x00\x00\x00\x00\x5e\x69\x00\x00\x00\x00\x00\x00\x00\x00\x5e\x71\x00\x00\x5e\x6b\x4c\x47\x00\x00\x00\x00\x00\x00\x5e\x66\x00\x00\x3c\x22\x5e\x7e\x00\x00\x00\x00\x00\x00\x00\x00\x33\x6a\x00\x00\x5e\x68\x5e\x6d\x5e\x6e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x42\x6c\x42\x5a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5e\x76\x00\x00\x00\x00\x5e\x7c\x00\x00\x00\x00\x5e\x7a\x00\x00\x45\x29\x00\x00\x00\x00\x5f\x23\x5e\x77\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5e\x78\x5e\x60", /* 6f00 */ "\x00\x00\x35\x79\x49\x3a\x00\x00\x00\x00\x00\x00\x3c\x3f\x00\x00\x00\x00\x39\x77\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4f\x33\x00\x00\x5e\x74\x00\x00\x5f\x22\x31\x69\x41\x66\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x47\x79\x00\x00\x34\x41\x4e\x7a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4c\x21\x44\x52\x00\x00\x00\x00\x00\x00\x00\x00\x5e\x7b\x5e\x7d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x41\x32\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5f\x21\x5e\x79\x00\x00\x5e\x73\x00\x00\x00\x00\x00\x00\x34\x43\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x37\x69\x00\x00\x00\x00\x00\x00\x5f\x2f\x00\x00\x00\x00\x5f\x2a\x40\x78\x00\x00\x00\x00\x33\x63\x00\x00\x00\x00\x00\x00\x00\x00\x3d\x61\x00\x00\x5f\x33\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5f\x2c\x44\x2c\x5f\x29\x44\x59\x00\x00\x00\x00\x00\x00\x5f\x4c\x00\x00\x00\x00\x00\x00\x5f\x26\x00\x00\x5f\x25\x00\x00\x5f\x2e\x00\x00\x00\x00\x00\x00", /* 6f80 */ "\x5f\x28\x5f\x27\x5f\x2d\x00\x00\x40\x21\x00\x00\x5f\x24\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5f\x30\x00\x00\x00\x00\x5f\x31\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x34\x42\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5f\x36\x00\x00\x5f\x35\x5f\x37\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5f\x3a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x45\x43\x00\x00\x5f\x34\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5f\x38\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x37\x63\x42\x79\x5f\x32\x47\x3b\x00\x00\x00\x00\x5f\x39\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5f\x3e\x5f\x3c\x00\x00\x00\x00\x5f\x3f\x00\x00\x00\x00\x5f\x42\x00\x00\x00\x00\x00\x00\x5f\x3b\x39\x6a\x47\x28\x00\x00\x00\x00\x5e\x39\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4d\x74\x5f\x3d\x00\x00\x5f\x41\x42\x75\x00\x00\x5f\x40\x00\x00\x5f\x2b\x00\x00\x00\x00\x6f\x69\x00\x00\x00\x00\x00\x00\x5f\x45\x00\x00\x00\x00\x00\x00\x5f\x49\x00\x00", /* 7000 */ "\x00\x00\x5f\x47\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5f\x43\x00\x00\x5f\x44\x00\x00\x00\x00\x00\x00\x5f\x48\x00\x00\x5f\x46\x00\x00\x00\x00\x00\x00\x49\x4e\x00\x00\x00\x00\x5f\x4e\x00\x00\x5f\x4b\x5f\x4a\x00\x00\x5f\x4d\x46\x54\x5f\x4f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x43\x75\x42\x6d\x00\x00\x00\x00\x00\x00\x00\x00\x40\x25\x00\x00\x00\x00\x00\x00\x5f\x50\x00\x00\x5f\x52\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5f\x51\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5e\x75\x00\x00\x00\x00\x00\x00\x00\x00\x5f\x53\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x46\x67\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5f\x54\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x32\x50\x00\x00\x00\x00\x00\x00\x45\x74\x33\x25\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x35\x64\x00\x00\x00\x00\x00\x00\x3c\x5e\x3a\x52\x00\x00\x00\x00", /* 7080 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4f\x27\x3f\x66\x00\x00\x00\x00\x00\x00\x31\x6a\x00\x00\x00\x00\x00\x00\x5f\x56\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5f\x55\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5f\x59\x43\x3a\x5f\x5c\x5f\x57\x00\x00\x00\x00\x00\x00\x5f\x5b\x00\x00\x00\x00\x00\x00\x00\x00\x5f\x5a\x45\x40\x30\x59\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4e\x75\x00\x00\x00\x00\x5f\x5e\x00\x00\x00\x00\x00\x00\x31\x28\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5f\x60\x00\x00\x00\x00\x00\x00\x5f\x5f\x00\x00\x5f\x5d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5f\x58\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4b\x23\x00\x00\x00\x00\x00\x00\x5f\x62\x00\x00\x00\x00", /* 7100 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5f\x61\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x31\x6b\x00\x00\x00\x00\x00\x00\x00\x00\x5f\x64\x4a\x32\x00\x00\x5f\x63\x00\x00\x00\x00\x00\x00\x00\x00\x4c\x35\x00\x00\x00\x00\x00\x00\x00\x00\x3e\x47\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x41\x33\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3e\x46\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4e\x7b\x00\x00\x00\x00\x5f\x6a\x00\x00\x40\x79\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5f\x66\x5f\x6b\x00\x00\x00\x00\x31\x6c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5f\x69\x00\x00\x47\x61\x5f\x65\x5f\x68\x3e\x48\x00\x00\x48\x51\x00\x00\x00\x00\x5f\x6c\x00\x00\x3c\x51\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x7a\x00\x00\x00\x00", /* 7180 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x5f\x6f\x00\x00\x00\x00\x00\x00\x5f\x67\x00\x00\x37\x27\x00\x00\x00\x00\x00\x00\x00\x00\x5f\x6d\x00\x00\x00\x00\x00\x00\x00\x00\x4d\x50\x5f\x70\x00\x00\x00\x00\x00\x00\x74\x26\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3d\x4f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5f\x71\x00\x00\x00\x00\x00\x00\x5f\x72\x00\x00\x00\x00\x00\x00\x00\x00\x47\x2e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5f\x74\x00\x00\x00\x00\x00\x00\x00\x00\x5f\x75\x00\x00\x00\x00\x00\x00\x00\x00\x47\x33\x00\x00\x00\x00\x00\x00\x00\x00\x45\x75\x5f\x77\x00\x00\x00\x00\x00\x00\x00\x00\x5f\x79\x00\x00\x4e\x55\x00\x00\x5f\x76\x00\x00\x5f\x78\x31\x6d\x00\x00\x5f\x73\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x53\x5b\x5f\x7a\x00\x00\x00\x00\x00\x00\x00\x00\x41\x67\x3b\x38\x5f\x7c\x00\x00\x00\x00\x00\x00\x00\x00\x5f\x7b\x3f\x24\x52\x59\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5f\x7d\x00\x00\x00\x00\x00\x00\x60\x21\x00\x00\x5f\x6e\x5f\x7e\x00\x00\x00\x00\x60\x22", /* 7200 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x47\x7a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x60\x23\x00\x00\x00\x00\x60\x24\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x60\x25\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x60\x26\x00\x00\x44\x5e\x00\x00\x60\x28\x60\x27\x00\x00\x00\x00\x60\x29\x00\x00\x60\x2a\x00\x00\x00\x00\x3c\x5f\x49\x63\x00\x00\x00\x00\x00\x00\x4c\x6c\x60\x2b\x60\x2c\x41\x56\x3c\x24\x60\x2d\x60\x2e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x60\x2f\x4a\x52\x48\x47\x00\x00\x00\x00\x60\x30\x47\x57\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x44\x2d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x60\x31\x32\x67\x00\x00\x35\x6d\x00\x00\x4c\x46\x00\x00\x4c\x36\x00\x00\x32\x34\x4f\x34\x00\x00\x00\x00\x00\x00\x00\x00\x4b\x52\x00\x00\x4a\x2a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x37\x00\x00\x60\x32\x00\x00\x00\x00\x00\x00\x00\x00\x46\x43\x00\x00\x00\x00\x00\x00\x38\x23\x60\x33\x00\x00", /* 7280 */ "\x3a\x54\x60\x35\x60\x34\x00\x00\x00\x00\x00\x00\x00\x00\x60\x36\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x60\x37\x00\x00\x00\x00\x00\x00\x60\x38\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x35\x3e\x00\x00\x60\x39\x00\x00\x00\x00\x00\x00\x00\x00\x60\x3a\x00\x00\x00\x00\x00\x00\x00\x00\x38\x24\x00\x00\x00\x00\x48\x48\x00\x00\x00\x00\x60\x3c\x00\x00\x00\x00\x00\x00\x3e\x75\x00\x00\x00\x00\x60\x3b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x36\x38\x60\x3d\x60\x3f\x00\x00\x60\x3e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x60\x40\x00\x00\x38\x51\x00\x00\x60\x41\x00\x00\x00\x00\x00\x00\x00\x00\x36\x69\x00\x00\x41\x40\x00\x00\x39\x7d\x00\x00\x00\x00\x00\x00\x00\x00\x60\x43\x60\x44\x60\x42\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3c\x6d\x00\x00\x00\x00\x46\x48\x36\x39\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x60\x46\x43\x2c\x60\x45\x00\x00\x00\x00\x4f\x35\x47\x62\x00\x00\x00\x00", /* 7300 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x60\x49\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x60\x4b\x60\x48\x00\x00\x00\x00\x00\x00\x4c\x54\x60\x4a\x60\x4c\x00\x00\x4e\x44\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x60\x50\x00\x00\x00\x00\x00\x00\x60\x4f\x43\x76\x47\x2d\x00\x00\x00\x00\x38\x25\x60\x4e\x00\x00\x00\x00\x00\x00\x00\x00\x60\x4d\x00\x00\x4d\x31\x4d\x32\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x60\x51\x31\x6e\x00\x00\x00\x00\x00\x00\x00\x00\x39\x76\x3b\x62\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x60\x52\x60\x53\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x60\x55\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3d\x43\x00\x00\x00\x00\x00\x00\x00\x00\x60\x57\x00\x00\x60\x56\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x60\x58\x00\x00\x33\x4d\x00\x00\x00\x00\x60\x5a\x00\x00\x00\x00\x60\x59\x00\x00\x60\x5c\x60\x5b\x00\x00\x00\x00\x00\x00\x00\x00", /* 7380 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x38\x3c\x00\x00\x00\x00\x4e\x28\x00\x00\x36\x4c\x00\x00\x32\x26\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x36\x6a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x34\x61\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4e\x68\x60\x5e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x60\x60\x00\x00\x00\x00\x00\x00\x00\x00\x60\x61\x00\x00\x32\x51\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x60\x5d\x00\x00\x3b\x39\x00\x00\x00\x00\x44\x41\x60\x5f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x60\x64\x00\x00\x3c\x6e\x00\x00\x00\x00\x00\x00\x00\x00\x60\x62\x00\x00\x00\x00\x00\x00\x00\x00\x37\x3e\x00\x00\x00\x00\x48\x49\x60\x63\x00\x00\x00\x00\x60\x7e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x60\x69\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x38\x3d\x00\x00", /* 7400 */ "\x00\x00\x00\x00\x00\x00\x35\x65\x00\x00\x60\x66\x4d\x7d\x00\x00\x00\x00\x4e\x30\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x42\x76\x00\x00\x00\x00\x60\x68\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x60\x6a\x4e\x56\x36\x57\x48\x7c\x47\x4a\x00\x00\x00\x00\x00\x00\x60\x6b\x00\x00\x00\x00\x00\x00\x00\x00\x60\x6d\x00\x00\x60\x70\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x60\x6c\x00\x00\x00\x00\x00\x00\x60\x6f\x38\x6a\x31\x4d\x60\x71\x00\x00\x3f\x70\x60\x6e\x4e\x5c\x00\x00\x00\x00\x60\x74\x74\x24\x00\x00\x00\x00\x00\x00\x00\x00\x60\x72\x60\x75\x00\x00\x00\x00\x00\x00\x00\x00\x60\x67\x60\x73\x00\x00\x00\x00\x3a\x3c\x00\x00\x00\x00\x60\x76\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x60\x77\x00\x00", /* 7480 */ "\x00\x00\x00\x00\x00\x00\x4d\x7e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x60\x78\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x60\x79\x00\x00\x00\x00\x00\x00\x60\x65\x00\x00\x00\x00\x00\x00\x00\x00\x60\x7a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x34\x44\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3c\x25\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x60\x7b\x00\x00\x00\x00\x00\x00\x00\x00\x60\x7c\x00\x00\x00\x00\x00\x00\x00\x00\x60\x7d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x31\x3b\x00\x00\x00\x00\x00\x00\x61\x21\x00\x00\x49\x3b\x61\x22\x00\x00\x00\x00\x34\x24\x61\x23\x00\x00\x61\x24\x00\x00\x00\x00\x00\x00\x00\x00\x61\x25\x00\x00\x61\x27\x61\x28\x61\x26\x00\x00\x00\x00\x00\x00\x49\x53\x61\x2a\x61\x29\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 7500 */ "\x00\x00\x00\x00\x00\x00\x61\x2c\x61\x2b\x61\x2d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x61\x2e\x61\x30\x61\x2f\x00\x00\x00\x00\x39\x79\x00\x00\x61\x32\x00\x00\x61\x31\x00\x00\x00\x00\x34\x45\x00\x00\x3f\x53\x00\x00\x45\x3c\x00\x00\x61\x33\x40\x38\x00\x00\x00\x00\x00\x00\x3b\x3a\x00\x00\x31\x79\x61\x34\x00\x00\x4d\x51\x00\x00\x00\x00\x4a\x63\x61\x35\x00\x00\x00\x00\x00\x00\x45\x44\x4d\x33\x39\x43\x3f\x3d\x00\x00\x00\x00\x00\x00\x43\x4b\x52\x34\x00\x00\x44\x2e\x32\x68\x61\x36\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x61\x37\x00\x00\x61\x3c\x00\x00\x00\x00\x61\x3a\x61\x39\x5a\x42\x33\x26\x61\x38\x00\x00\x30\x5a\x00\x00\x48\x2a\x00\x00\x00\x00\x48\x4a\x00\x00\x00\x00\x00\x00\x00\x00\x4e\x31\x61\x3d\x61\x3b\x43\x5c\x40\x26\x00\x00\x00\x00\x48\x2b\x00\x00\x49\x2d\x00\x00\x61\x3f\x4e\x2c\x37\x4d\x61\x40\x00\x00\x61\x3e\x48\x56\x61\x41\x00\x00\x61\x42\x00\x00\x00\x00\x30\x5b\x00\x00\x00\x00\x3e\x76\x61\x47\x00\x00\x61\x44\x46\x6d\x61\x43\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x35\x26", /* 7580 */ "\x00\x00\x00\x00\x61\x4a\x00\x00\x00\x00\x00\x00\x61\x45\x61\x46\x00\x00\x61\x49\x61\x48\x49\x25\x00\x00\x00\x00\x41\x42\x41\x41\x00\x00\x35\x3f\x00\x00\x00\x00\x61\x4b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x61\x4c\x00\x00\x00\x00\x61\x4d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x61\x4f\x00\x00\x61\x4e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x31\x56\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x61\x57\x48\x68\x61\x51\x00\x00\x61\x53\x00\x00\x00\x00\x61\x55\x3f\x3e\x00\x00\x00\x00\x61\x56\x61\x54\x3c\x40\x00\x00\x00\x00\x00\x00\x61\x50\x61\x52\x00\x00\x49\x42\x00\x00\x3e\x49\x00\x00\x00\x00\x61\x59\x00\x00\x00\x00\x61\x58\x00\x00\x00\x00\x00\x00\x00\x00\x61\x5a\x00\x00\x3c\x26\x3a\x2f\x00\x00\x00\x00\x45\x77\x61\x5b\x00\x00\x44\x4b\x00\x00\x00\x00\x61\x5d\x00\x00\x00\x00\x00\x00\x4e\x21\x61\x5c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x41\x69\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x61\x62\x00\x00\x61\x64\x61\x65\x43\x54\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x61\x63\x00\x00\x61\x60\x00\x00\x61\x5e\x61\x5f", /* 7600 */ "\x00\x00\x61\x61\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x61\x68\x00\x00\x61\x66\x00\x00\x61\x67\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x61\x69\x61\x6b\x61\x6c\x61\x6d\x00\x00\x61\x6e\x00\x00\x00\x00\x61\x6a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x61\x70\x00\x00\x00\x00\x00\x00\x61\x6f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x61\x71\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4e\x45\x00\x00\x00\x00\x00\x00\x61\x74\x61\x72\x61\x73\x00\x00\x00\x00\x00\x00\x34\x62\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4c\x7e\x00\x00\x00\x00\x00\x00\x4a\x4a\x00\x00\x61\x76\x00\x00\x00\x00\x00\x00\x61\x75\x00\x00\x00\x00\x00\x00\x00\x00\x61\x77\x61\x78\x00\x00\x00\x00\x00\x00\x00\x00\x61\x7c\x61\x79\x61\x7a\x61\x7b\x00\x00\x61\x7d\x00\x00\x00\x00\x00\x00\x61\x7e\x00\x00\x62\x21\x00\x00\x00\x00\x00\x00\x62\x22\x00\x00\x62\x23\x00\x00\x48\x2f\x45\x50\x62\x24\x47\x72\x49\x34\x00\x00", /* 7680 */ "\x62\x25\x00\x00\x00\x00\x62\x26\x45\x2a\x00\x00\x33\x27\x39\x44\x62\x27\x00\x00\x00\x00\x62\x28\x00\x00\x00\x00\x62\x29\x00\x00\x3b\x29\x00\x00\x00\x00\x62\x2b\x00\x00\x00\x00\x62\x2a\x00\x00\x00\x00\x62\x2c\x62\x2d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x48\x69\x00\x00\x62\x2e\x00\x00\x00\x00\x00\x00\x62\x2f\x00\x00\x00\x00\x73\x69\x62\x30\x62\x31\x62\x32\x00\x00\x00\x00\x00\x00\x00\x00\x3b\x2e\x00\x00\x00\x00\x62\x33\x47\x56\x00\x00\x00\x00\x4b\x5f\x00\x00\x31\x4e\x00\x00\x31\x57\x00\x00\x00\x00\x62\x34\x00\x00\x00\x00\x00\x00\x00\x00\x62\x36\x00\x00\x00\x00\x00\x00\x62\x35\x45\x70\x00\x00\x00\x00\x00\x00\x40\x39\x5d\x39\x00\x00\x62\x37\x4c\x41\x00\x00\x62\x38\x00\x00\x34\x46\x48\x57\x62\x39\x00\x00\x62\x3a\x00\x00\x00\x00\x62\x3b\x00\x00\x00\x00\x00\x00\x4c\x5c\x00\x00\x00\x00\x00\x00\x4c\x55\x00\x00\x44\x3e\x00\x00\x00\x00\x00\x00\x41\x6a\x00\x00\x00\x00\x62\x3d\x00\x00\x00\x00\x3d\x62\x00\x00", /* 7700 */ "\x00\x00\x3e\x4a\x00\x00\x00\x00\x62\x40\x00\x00\x00\x00\x62\x3f\x62\x3e\x48\x7d\x00\x00\x34\x47\x38\x29\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x62\x46\x00\x00\x00\x00\x62\x43\x3f\x3f\x4c\x32\x00\x00\x00\x00\x00\x00\x62\x42\x62\x44\x62\x45\x00\x00\x00\x00\x62\x41\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x62\x47\x62\x48\x00\x00\x44\x2f\x00\x00\x34\x63\x00\x00\x00\x00\x00\x00\x43\x65\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x62\x49\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x62\x4a\x62\x4d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3f\x67\x00\x00\x46\x44\x00\x00\x62\x4e\x4b\x53\x00\x00\x62\x4b\x00\x00\x00\x00\x62\x4c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x62\x51\x00\x00\x00\x00\x00\x00\x00\x00\x62\x50\x62\x4f", /* 7780 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x62\x53\x00\x00\x00\x00\x62\x52\x00\x00\x00\x00\x62\x54\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x62\x56\x00\x00\x62\x55\x00\x00\x00\x00\x00\x00\x00\x00\x4a\x4d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3d\x56\x4e\x46\x00\x00\x00\x00\x62\x57\x00\x00\x00\x00\x46\x37\x00\x00\x00\x00\x62\x58\x00\x00\x00\x00\x62\x59\x00\x00\x62\x5d\x62\x5b\x62\x5c\x00\x00\x62\x5a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x62\x5e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x62\x5f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x62\x60\x00\x00\x00\x00\x62\x61\x4c\x37\x62\x62\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4c\x70\x62\x63\x00\x00\x43\x4e\x00\x00\x47\x6a\x00\x00\x36\x6b\x00\x00\x00\x00\x00\x00\x43\x3b\x62\x64\x36\x3a\x00\x00\x00\x00\x00\x00\x40\x50\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x62\x65\x00\x00\x00\x00\x00\x00", /* 7800 */ "\x00\x00\x00\x00\x3a\x3d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x62\x66\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x62\x67\x00\x00\x38\x26\x3a\x55\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x62\x69\x00\x00\x00\x00\x00\x00\x00\x00\x45\x56\x3a\x56\x35\x4e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4b\x24\x00\x00\x47\x4b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x45\x57\x00\x00\x00\x00\x00\x00\x00\x00\x39\x5c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x62\x6b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3e\x4b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4e\x32\x39\x45\x00\x00\x00\x00\x38\x27\x00\x00\x00\x00\x48\x23\x00\x00\x62\x6d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x62\x6f\x00\x00\x00\x00\x00\x00", /* 7880 */ "\x00\x00\x38\x6b\x00\x00\x00\x00\x00\x00\x00\x00\x62\x6e\x44\x76\x00\x00\x00\x00\x00\x00\x00\x00\x62\x71\x33\x37\x62\x6c\x00\x00\x00\x00\x48\x6a\x00\x00\x31\x30\x00\x00\x3a\x6c\x00\x00\x4f\x52\x00\x00\x00\x00\x62\x70\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x62\x72\x00\x00\x00\x00\x00\x00\x4a\x4b\x00\x00\x40\x59\x62\x74\x00\x00\x00\x00\x00\x00\x00\x00\x62\x75\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x62\x73\x00\x00\x00\x00\x00\x00\x00\x00\x33\x4e\x00\x00\x62\x7b\x00\x00\x62\x7a\x00\x00\x00\x00\x3c\x27\x00\x00\x00\x00\x00\x00\x62\x7c\x62\x77\x00\x00\x00\x00\x00\x00\x62\x7d\x62\x78\x00\x00\x00\x00\x00\x00\x00\x00\x48\x58\x62\x76\x00\x00\x00\x00\x62\x79\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x63\x22\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x63\x21\x4b\x61\x00\x00\x00\x00\x00\x00\x62\x7e\x00\x00\x00\x00\x30\x6b\x00\x00\x00\x00\x00\x00\x00\x00\x63\x24\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x63\x23\x00\x00\x00\x00", /* 7900 */ "\x00\x00\x3e\x4c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x63\x25\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x41\x43\x00\x00\x00\x00\x63\x27\x63\x26\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x63\x28\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x62\x68\x00\x00\x00\x00\x00\x00\x62\x6a\x63\x2a\x63\x29\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3c\x28\x00\x00\x4e\x69\x00\x00\x3c\x52\x00\x00\x63\x2b\x37\x37\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x35\x40\x35\x27\x3b\x63\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4d\x34\x00\x00\x00\x00\x63\x31\x00\x00\x63\x30\x41\x44\x63\x2d\x00\x00\x00\x00\x63\x2f\x00\x00\x00\x00\x3d\x4b\x3f\x40\x63\x2e\x63\x2c\x00\x00\x47\x2a\x00\x00\x00\x00\x3e\x4d\x00\x00\x00\x00\x49\x3c\x00\x00\x00\x00\x00\x00\x00\x00\x3a\x57\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x45\x78\x00\x00\x00\x00\x63\x32\x00\x00\x00\x00\x00\x00\x00\x00\x63\x33", /* 7980 */ "\x63\x49\x36\x58\x00\x00\x00\x00\x4f\x3d\x41\x35\x00\x00\x00\x00\x00\x00\x00\x00\x63\x34\x00\x00\x00\x00\x32\x52\x44\x77\x4a\x21\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x63\x35\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x35\x7a\x63\x36\x00\x00\x00\x00\x63\x38\x00\x00\x00\x00\x00\x00\x63\x39\x00\x00\x47\x29\x00\x00\x00\x00\x63\x3a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x63\x3b\x63\x3c\x00\x00\x00\x00\x36\x59\x32\x53\x46\x45\x3d\x28\x3b\x64\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x63\x3d\x00\x00\x3d\x29\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x32\x4a\x49\x43\x00\x00\x00\x00\x63\x3e\x00\x00\x00\x00\x48\x6b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x41\x45\x00\x00\x63\x41\x00\x00\x63\x42\x47\x69\x00\x00\x3f\x41\x63\x3f\x00\x00\x43\x61\x00\x00\x00\x00\x63\x40\x00\x00\x00\x00\x00\x00\x3e\x4e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x30\x5c\x00\x00\x00\x00\x00\x00\x00\x00", /* 7a00 */ "\x35\x29\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x63\x43\x00\x00\x00\x00\x44\x78\x00\x00\x63\x44\x40\x47\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4c\x2d\x00\x00\x00\x00\x49\x23\x63\x45\x63\x46\x43\x55\x00\x00\x4e\x47\x00\x00\x00\x00\x63\x48\x63\x47\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3c\x6f\x00\x00\x00\x00\x63\x4a\x30\x70\x00\x00\x00\x00\x00\x00\x00\x00\x63\x4d\x00\x00\x00\x00\x00\x00\x63\x4b\x32\x54\x37\x4e\x63\x4c\x39\x46\x39\x72\x00\x00\x4a\x66\x63\x4e\x00\x00\x00\x00\x4b\x54\x00\x00\x00\x00\x63\x50\x00\x00\x00\x00\x00\x00\x40\x51\x31\x4f\x32\x3a\x30\x2c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x63\x4f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x63\x51\x63\x52\x3e\x77\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x63\x53\x00\x00\x33\x4f\x00\x00\x00\x00\x00\x00\x00\x00\x63\x55\x00\x00\x00\x00\x00\x00\x37\x6a\x00\x00\x35\x66\x00\x00\x00\x00\x63\x56\x36\x75\x00\x00\x00\x00\x63\x57\x00\x00\x40\x7c", /* 7a80 */ "\x00\x00\x46\x4d\x00\x00\x40\x60\x3a\x75\x00\x00\x00\x00\x00\x00\x63\x58\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x43\x62\x41\x6b\x00\x00\x63\x5a\x63\x5c\x63\x59\x63\x5b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x37\x22\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x63\x5d\x37\x26\x00\x00\x00\x00\x00\x00\x35\x67\x4d\x52\x63\x5f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x63\x60\x00\x00\x00\x00\x00\x00\x31\x2e\x00\x00\x00\x00\x00\x00\x00\x00\x63\x63\x00\x00\x00\x00\x00\x00\x33\x76\x63\x62\x63\x61\x00\x00\x63\x65\x63\x5e\x00\x00\x63\x66\x4e\x29\x00\x00\x63\x67\x00\x00\x63\x68\x00\x00\x00\x00\x54\x74\x63\x6a\x00\x00\x63\x69\x00\x00\x00\x00\x00\x00\x63\x6b\x63\x6c\x00\x00\x4e\x35\x63\x6d\x00\x00\x70\x6f\x3e\x4f\x63\x6e\x63\x6f\x3d\x57\x00\x00\x46\x38\x63\x70\x00\x00\x00\x00\x00\x00\x43\x28\x00\x00\x00\x00\x63\x71\x00\x00\x43\x3c\x63\x72\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x36\x25\x00\x00\x51\x3f\x43\x5d\x3c\x33\x00\x00\x00\x00\x00\x00\x00\x00\x34\x48", /* 7b00 */ "\x00\x00\x00\x00\x63\x73\x00\x00\x64\x22\x00\x00\x63\x76\x00\x00\x35\x68\x00\x00\x63\x75\x64\x24\x00\x00\x00\x00\x00\x00\x63\x74\x00\x00\x3e\x50\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x63\x78\x63\x79\x00\x00\x45\x2b\x00\x00\x00\x00\x63\x7a\x00\x00\x33\x5e\x00\x00\x00\x00\x00\x00\x00\x00\x3f\x5a\x49\x64\x00\x00\x63\x7c\x00\x00\x00\x00\x00\x00\x42\x68\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x63\x77\x00\x00\x63\x7b\x63\x7d\x00\x00\x00\x00\x3a\x7b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x64\x26\x49\x2e\x00\x00\x48\x26\x45\x79\x00\x00\x36\x5a\x64\x25\x64\x23\x00\x00\x48\x35\x63\x7e\x43\x5e\x45\x7b\x00\x00\x45\x7a\x00\x00\x3a\x76\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x64\x38\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x64\x28\x00\x00\x64\x2a\x00\x00\x00\x00\x00\x00\x00\x00\x64\x2d\x00\x00\x64\x2e\x00\x00\x64\x2b\x64\x2c\x00\x00\x00\x00\x64\x29\x64\x27\x00\x00\x00\x00\x00\x00\x00\x00\x64\x21\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 7b80 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4a\x4f\x32\x55\x00\x00\x00\x00\x00\x00\x64\x35\x00\x00\x64\x32\x00\x00\x64\x37\x00\x00\x00\x00\x64\x36\x00\x00\x47\x73\x4c\x27\x00\x00\x3b\x3b\x64\x30\x64\x39\x64\x34\x00\x00\x64\x33\x64\x2f\x00\x00\x64\x31\x00\x00\x34\x49\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x43\x3d\x00\x00\x00\x00\x40\x7d\x00\x00\x00\x00\x00\x00\x48\x22\x00\x00\x00\x00\x64\x3e\x00\x00\x00\x00\x00\x00\x48\x24\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x61\x64\x3b\x00\x00\x00\x00\x48\x4f\x00\x00\x64\x3f\x4a\x53\x00\x00\x43\x5b\x00\x00\x64\x3a\x64\x3c\x00\x00\x00\x00\x64\x3d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x64\x40\x00\x00\x00\x00\x3c\x44\x00\x00\x00\x00\x00\x00\x46\x46\x64\x45\x64\x44\x00\x00\x00\x00\x64\x41\x00\x00\x00\x00\x00\x00\x4f\x36\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x64\x4a\x00\x00\x00\x00\x64\x4e\x64\x4b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 7c00 */ "\x64\x47\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x64\x48\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x64\x4d\x00\x00\x00\x00\x00\x00\x64\x42\x52\x55\x64\x49\x64\x43\x00\x00\x00\x00\x64\x4c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x64\x52\x00\x00\x34\x4a\x00\x00\x64\x4f\x00\x00\x00\x00\x00\x00\x64\x50\x00\x00\x00\x00\x64\x51\x64\x54\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x64\x53\x48\x76\x00\x00\x00\x00\x00\x00\x00\x00\x64\x55\x4e\x7c\x4a\x6d\x64\x5a\x00\x00\x00\x00\x64\x57\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x64\x56\x40\x52\x00\x00\x64\x59\x64\x5b\x00\x00\x00\x00\x00\x00\x64\x58\x00\x00\x64\x5f\x00\x00\x64\x5c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x64\x5d\x64\x46\x00\x00\x00\x00\x00\x00\x64\x5e\x64\x60\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x64\x61\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4a\x46\x00\x00\x64\x62\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4c\x62\x00\x00", /* 7c80 */ "\x00\x00\x36\x4e\x37\x29\x64\x63\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4a\x34\x00\x00\x3f\x68\x00\x00\x4c\x30\x00\x00\x00\x00\x64\x64\x00\x00\x4e\x33\x00\x00\x00\x00\x47\x74\x00\x00\x41\x46\x47\x34\x00\x00\x00\x00\x3d\x4d\x00\x00\x00\x00\x00\x00\x30\x40\x00\x00\x64\x69\x64\x67\x00\x00\x64\x65\x34\x21\x00\x00\x3e\x51\x64\x6a\x00\x00\x00\x00\x64\x68\x00\x00\x64\x66\x64\x6e\x00\x00\x00\x00\x64\x6d\x64\x6c\x64\x6b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x64\x6f\x00\x00\x00\x00\x00\x00\x64\x70\x40\x3a\x00\x00\x64\x71\x00\x00\x64\x73\x00\x00\x00\x00\x64\x72\x00\x00\x00\x00\x00\x00\x00\x00\x38\x52\x00\x00\x00\x00\x00\x00\x41\x38\x00\x00\x00\x00\x00\x00\x64\x75\x00\x00\x00\x00\x00\x00\x45\x7c\x00\x00\x64\x74\x00\x00\x00\x00\x00\x00\x64\x76\x00\x00\x4a\x35\x41\x6c\x39\x47\x00\x00\x64\x77\x00\x00\x00\x00\x00\x00\x00\x00\x4e\x48\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x64\x79\x00\x00\x00\x00\x64\x7a\x00\x00\x64\x7b\x00\x00\x64\x7c\x00\x00\x3b\x65\x00\x00\x64\x7d\x37\x4f\x00\x00\x00\x00\x35\x6a\x00\x00", /* 7d00 */ "\x35\x2a\x00\x00\x65\x21\x00\x00\x4c\x73\x39\x48\x64\x7e\x00\x00\x00\x00\x00\x00\x65\x24\x4c\x66\x00\x00\x47\x3c\x00\x00\x00\x00\x49\x33\x00\x00\x00\x00\x00\x00\x3d\x63\x65\x23\x00\x00\x3c\x53\x39\x49\x3b\x66\x35\x69\x4a\x36\x65\x22\x00\x00\x00\x00\x00\x00\x41\x47\x4b\x42\x3a\x77\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3b\x67\x44\x5d\x00\x00\x65\x27\x4e\x5f\x3a\x59\x00\x00\x65\x28\x3f\x42\x00\x00\x65\x2a\x00\x00\x00\x00\x00\x00\x3e\x52\x3a\x30\x00\x00\x00\x00\x00\x00\x00\x00\x65\x29\x00\x00\x00\x00\x3d\x2a\x38\x3e\x41\x48\x65\x25\x65\x2b\x00\x00\x00\x00\x00\x00\x00\x00\x65\x26\x37\x50\x00\x00\x65\x2e\x65\x32\x37\x6b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x65\x2d\x00\x00\x00\x00\x00\x00\x00\x00\x65\x36\x00\x00\x00\x00\x39\x4a\x00\x00\x00\x00\x4d\x6d\x30\x3c\x65\x33\x00\x00\x00\x00\x35\x6b\x00\x00\x65\x30\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x65\x31\x00\x00\x00\x00\x45\x7d\x65\x2f\x65\x2c\x00\x00\x33\x28\x40\x64\x00\x00\x00\x00\x38\x28\x00\x00\x00\x00\x00\x00\x65\x38\x00\x00\x00\x00", /* 7d80 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x65\x35\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x65\x37\x00\x00\x00\x00\x00\x00\x65\x34\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x37\x51\x42\x33\x65\x39\x41\x6e\x00\x00\x00\x00\x65\x46\x00\x00\x00\x00\x65\x42\x65\x3c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x65\x40\x3c\x7a\x30\x5d\x65\x3b\x65\x43\x65\x47\x39\x4b\x4c\x56\x00\x00\x44\x56\x65\x3d\x00\x00\x00\x00\x65\x45\x00\x00\x65\x3a\x43\x3e\x00\x00\x65\x3f\x30\x3d\x4c\x4a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x65\x3e\x00\x00\x00\x00\x36\x5b\x48\x6c\x00\x00\x00\x00\x00\x00\x41\x6d\x00\x00\x4e\x50\x3d\x6f\x00\x00\x00\x00\x65\x6e\x00\x00\x00\x00\x65\x48\x00\x00\x40\x7e\x00\x00\x65\x44\x65\x49\x65\x4b\x00\x00\x44\x79\x65\x4e\x00\x00\x00\x00\x65\x4a\x00\x00\x00\x00\x00\x00\x4a\x54\x34\x4b\x00\x00\x00\x00\x4c\x4b\x00\x00\x00\x00\x30\x5e\x00\x00\x00\x00\x65\x4d\x00\x00\x4e\x7d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x65\x4c\x00\x00\x00\x00\x00\x00\x00\x00", /* 7e00 */ "\x00\x00\x31\x6f\x00\x00\x00\x00\x46\x6c\x65\x4f\x00\x00\x00\x00\x00\x00\x65\x56\x65\x50\x65\x57\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x65\x53\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x47\x7b\x00\x00\x00\x00\x3c\x4a\x65\x55\x00\x00\x65\x52\x65\x58\x65\x51\x00\x00\x00\x00\x3d\x44\x00\x00\x00\x00\x00\x00\x00\x00\x4b\x25\x00\x00\x00\x00\x3d\x4c\x00\x00\x00\x00\x65\x54\x65\x60\x00\x00\x00\x00\x65\x5c\x00\x00\x65\x5f\x00\x00\x65\x5d\x65\x61\x65\x5b\x00\x00\x65\x41\x40\x53\x00\x00\x00\x00\x48\x4b\x00\x00\x65\x5e\x00\x00\x00\x00\x65\x59\x00\x00\x00\x00\x00\x00\x41\x21\x37\x52\x00\x00\x3d\x2b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3f\x25\x41\x36\x65\x64\x00\x00\x00\x00\x65\x66\x65\x67\x00\x00\x00\x00\x65\x63\x65\x65\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x65\x5a\x65\x62\x00\x00\x65\x6a\x65\x69\x00\x00\x00\x00\x4b\x7a\x00\x00\x00\x00\x37\x2b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x65\x68\x00\x00\x65\x6c\x65\x6b\x65\x6f\x00\x00\x65\x71", /* 7e80 */ "\x00\x00\x00\x00\x3b\x3c\x65\x6d\x00\x00\x00\x00\x00\x00\x00\x00\x65\x72\x65\x73\x00\x00\x00\x00\x65\x74\x00\x00\x65\x7a\x45\x3b\x65\x76\x00\x00\x65\x75\x65\x77\x65\x78\x00\x00\x65\x79\x00\x00\x00\x00\x00\x00\x00\x00\x65\x7b\x65\x7c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 7f00 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x34\x4c\x00\x00\x65\x7d\x00\x00\x65\x7e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x66\x21\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x66\x22\x66\x23\x66\x24\x00\x00\x66\x25\x66\x26\x00\x00\x00\x00\x66\x28\x66\x27\x00\x00\x00\x00\x66\x29\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x66\x2a\x66\x2b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x66\x2e\x66\x2c\x66\x2d\x3a\x61\x37\x53\x00\x00\x00\x00\x43\x56\x00\x00\x48\x33\x00\x00\x3d\x70\x00\x00\x00\x00\x47\x4d\x00\x00\x48\x6d\x66\x2f\x58\x6d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 7f80 */ "\x00\x00\x00\x00\x66\x30\x66\x32\x00\x00\x4d\x65\x66\x31\x66\x34\x66\x33\x00\x00\x4d\x53\x00\x00\x66\x35\x00\x00\x48\x7e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x66\x36\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x66\x39\x00\x00\x00\x00\x66\x38\x66\x37\x00\x00\x00\x00\x00\x00\x00\x00\x66\x3a\x37\x32\x00\x00\x00\x00\x00\x00\x41\x22\x35\x41\x00\x00\x00\x00\x00\x00\x00\x00\x66\x3e\x66\x3b\x00\x00\x00\x00\x66\x3c\x00\x00\x00\x00\x00\x00\x66\x3f\x00\x00\x66\x40\x66\x3d\x00\x00\x00\x00\x00\x00\x31\x29\x00\x00\x00\x00\x00\x00\x32\x27\x00\x00\x00\x00\x00\x00\x66\x42\x66\x43\x00\x00\x00\x00\x00\x00\x66\x44\x00\x00\x4d\x62\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3d\x2c\x00\x00\x66\x46\x66\x45\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3f\x69\x66\x47\x00\x00\x00\x00\x00\x00\x00\x00\x66\x48\x00\x00\x00\x00\x66\x49\x00\x00\x34\x65\x00\x00\x00\x00\x00\x00\x00\x00\x34\x4d\x00\x00\x00\x00\x66\x4a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x66\x4b\x00\x00\x4b\x5d\x4d\x63\x00\x00\x00\x00\x00\x00", /* 8000 */ "\x4d\x54\x4f\x37\x00\x00\x39\x4d\x66\x4e\x3c\x54\x66\x4d\x00\x00\x00\x00\x00\x00\x00\x00\x66\x4f\x3c\x29\x00\x00\x00\x00\x00\x00\x42\x51\x00\x00\x66\x50\x00\x00\x00\x00\x39\x4c\x00\x00\x4c\x57\x66\x51\x66\x52\x00\x00\x00\x00\x66\x53\x00\x00\x00\x00\x00\x00\x00\x00\x66\x54\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x66\x55\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3c\x2a\x00\x00\x00\x00\x4c\x6d\x00\x00\x00\x00\x00\x00\x00\x00\x66\x57\x00\x00\x43\x3f\x00\x00\x66\x56\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x66\x59\x00\x00\x00\x00\x00\x00\x66\x58\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x66\x5a\x00\x00\x00\x00\x00\x00\x40\x3b\x00\x00\x66\x5b\x00\x00\x66\x5c\x00\x00\x00\x00\x00\x00\x4a\x39\x66\x5d\x00\x00\x41\x6f\x66\x5e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x66\x5f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4e\x7e\x66\x62\x00\x00\x66\x61\x66\x60\x44\x30\x00\x00\x66\x63\x3f\x26\x00\x00\x66\x64\x00\x00\x00\x00\x00\x00\x66\x65\x4f\x38\x66\x66", /* 8080 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x66\x67\x66\x69\x66\x68\x48\x25\x00\x00\x46\x79\x00\x00\x4f\x3e\x48\x29\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x66\x6b\x00\x00\x00\x00\x3e\x53\x00\x00\x49\x2a\x00\x00\x66\x6c\x66\x6a\x00\x00\x34\x4e\x00\x00\x00\x00\x00\x00\x38\x54\x3b\x68\x00\x00\x00\x00\x48\x6e\x00\x00\x00\x00\x00\x00\x38\x2a\x4b\x43\x00\x00\x66\x6f\x66\x6d\x00\x00\x39\x4e\x00\x00\x39\x4f\x30\x69\x00\x00\x3a\x68\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x47\x59\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x30\x5f\x66\x74\x00\x00\x43\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x47\x58\x00\x00\x42\x5b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x66\x76\x00\x00\x00\x00\x66\x72\x66\x75\x66\x70\x00\x00\x66\x73\x4b\x26\x00\x00\x00\x00\x38\x55\x00\x00\x00\x00\x30\x7d\x66\x71\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x66\x78\x00\x00\x66\x79\x00\x00\x00\x00\x46\x39\x00\x00\x00\x00\x00\x00\x36\x3b\x00\x00\x00\x00\x00\x00\x67\x26\x47\x3d\x00\x00\x00\x00", /* 8100 */ "\x00\x00\x00\x00\x3b\x69\x00\x00\x00\x00\x36\x3c\x40\x48\x4f\x46\x4c\x2e\x66\x77\x40\x54\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x35\x53\x66\x7a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x66\x7c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x66\x7b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x66\x7d\x00\x00\x43\x26\x00\x00\x47\x3e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x44\x31\x00\x00\x00\x00\x00\x00\x00\x00\x67\x23\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x67\x22\x00\x00\x00\x00\x00\x00\x00\x00\x66\x7e\x00\x00\x00\x00\x3f\x55\x00\x00\x49\x65\x67\x25\x00\x00\x67\x24\x39\x50\x4f\x53\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x67\x35\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x67\x29\x67\x2a\x00\x00\x00\x00\x00\x00\x00\x00\x3c\x70\x00\x00\x00\x00\x67\x28\x00\x00\x39\x78\x67\x27\x00\x00\x00\x00\x67\x2b\x00\x00\x00\x00\x00\x00\x44\x32\x4a\x22\x41\x23\x00\x00\x00\x00\x00\x00\x00\x00\x42\x5c", /* 8180 */ "\x67\x2f\x00\x00\x67\x30\x67\x2c\x00\x00\x00\x00\x00\x00\x00\x00\x67\x2d\x00\x00\x67\x2e\x00\x00\x00\x00\x00\x00\x00\x00\x39\x51\x00\x00\x00\x00\x00\x00\x67\x36\x00\x00\x67\x32\x00\x00\x00\x00\x00\x00\x00\x00\x49\x66\x00\x00\x4b\x6c\x49\x28\x00\x00\x00\x00\x67\x31\x00\x00\x00\x00\x67\x34\x67\x33\x00\x00\x00\x00\x00\x00\x4b\x44\x67\x37\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x67\x38\x00\x00\x00\x00\x41\x37\x00\x00\x67\x39\x00\x00\x00\x00\x67\x3b\x00\x00\x67\x3f\x00\x00\x00\x00\x67\x3c\x67\x3a\x47\x3f\x67\x3d\x00\x00\x67\x3e\x00\x00\x00\x00\x00\x00\x32\x32\x00\x00\x67\x45\x67\x40\x00\x00\x00\x00\x00\x00\x67\x41\x00\x00\x00\x00\x00\x00\x67\x42\x00\x00\x42\x21\x00\x00\x00\x00\x00\x00\x00\x00\x67\x44\x67\x43\x67\x46\x00\x00\x00\x00\x00\x00\x00\x00\x67\x47\x67\x48\x00\x00\x00\x00\x3f\x43\x00\x00\x32\x69\x00\x00\x67\x49\x4e\x57\x00\x00\x3c\x2b\x00\x00\x00\x00\x3d\x2d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3b\x6a\x43\x57\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x67\x4a\x67\x4b\x31\x31\x00\x00\x67\x4c\x00\x00", /* 8200 */ "\x00\x00\x67\x4d\x67\x4e\x00\x00\x00\x00\x67\x4f\x00\x00\x67\x50\x36\x3d\x5a\x2a\x67\x51\x00\x00\x40\x65\x67\x52\x3c\x4b\x00\x00\x67\x53\x00\x00\x50\x30\x00\x00\x00\x00\x00\x00\x67\x54\x4a\x5e\x34\x5c\x00\x00\x00\x00\x41\x24\x3d\x58\x00\x00\x49\x71\x3d\x2e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x67\x55\x39\x52\x67\x56\x48\x4c\x00\x00\x67\x64\x00\x00\x00\x00\x00\x00\x00\x00\x67\x58\x00\x00\x42\x49\x47\x75\x38\x3f\x67\x57\x41\x25\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x67\x59\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x44\x7a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x67\x5b\x67\x5a\x67\x5d\x00\x00\x00\x00\x67\x5c\x00\x00\x67\x5e\x00\x00\x00\x00\x67\x60\x00\x00\x67\x5f\x00\x00\x34\x4f\x00\x00\x67\x61\x00\x00\x67\x62\x67\x63\x00\x00\x00\x00\x3a\x31\x4e\x49\x00\x00\x67\x65\x3f\x27\x00\x00\x00\x00\x00\x00\x31\x70\x67\x66\x67\x67\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x67\x68\x00\x00", /* 8280 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x30\x72\x00\x00\x67\x69\x00\x00\x00\x00\x00\x00\x00\x00\x67\x6a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x49\x67\x00\x00\x00\x00\x00\x00\x3c\x47\x00\x00\x67\x6c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x33\x29\x30\x32\x00\x00\x00\x00\x00\x00\x00\x00\x67\x6b\x67\x6e\x47\x4e\x00\x00\x3f\x44\x00\x00\x32\x56\x00\x00\x4b\x27\x00\x00\x00\x00\x00\x00\x00\x00\x37\x5d\x36\x5c\x00\x00\x67\x6d\x00\x00\x32\x6a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x34\x23\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x31\x71\x67\x72\x4e\x6a\x42\x5d\x00\x00\x00\x00\x49\x44\x00\x00\x67\x7e\x00\x00\x32\x57\x67\x7c\x00\x00\x67\x7a\x67\x71\x00\x00\x67\x6f\x00\x00\x67\x70\x00\x00\x3c\x63\x36\x6c\x43\x77\x00\x00\x00\x00\x00\x00\x46\x51\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x31\x51\x00\x00\x67\x74\x67\x73\x00\x00\x00\x00\x00\x00\x00\x00\x67\x79\x67\x75\x67\x78\x00\x00\x00\x00\x00\x00\x00\x00", /* 8300 */ "\x00\x00\x00\x00\x4c\x50\x67\x77\x32\x58\x33\x7d\x67\x7b\x00\x00\x00\x00\x67\x7d\x00\x00\x00\x00\x00\x00\x00\x00\x37\x54\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x68\x23\x68\x2c\x68\x2d\x00\x00\x00\x00\x00\x00\x30\x2b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x68\x34\x00\x00\x00\x00\x00\x00\x00\x00\x30\x71\x00\x00\x00\x00\x68\x2b\x00\x00\x00\x00\x00\x00\x68\x2a\x00\x00\x68\x25\x68\x24\x00\x00\x68\x22\x68\x21\x43\x63\x00\x00\x42\x7b\x68\x27\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x68\x26\x00\x00\x00\x00\x00\x00\x00\x00\x68\x29\x00\x00\x00\x00\x00\x00\x41\x70\x37\x55\x00\x00\x00\x00\x00\x00\x00\x00\x31\x41\x68\x28\x00\x00\x39\x53\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x41\x71\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x68\x3a\x00\x00\x68\x3b\x00\x00\x32\x59\x00\x00\x00\x00\x00\x00\x32\x2e\x68\x38\x00\x00\x00\x00\x00\x00", /* 8380 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x68\x2e\x00\x00\x68\x36\x00\x00\x68\x3d\x68\x37\x00\x00\x00\x00\x00\x00\x68\x35\x00\x00\x00\x00\x00\x00\x00\x00\x67\x76\x00\x00\x00\x00\x68\x33\x00\x00\x00\x00\x00\x00\x68\x2f\x00\x00\x00\x00\x00\x00\x34\x50\x68\x31\x68\x3c\x00\x00\x68\x32\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x68\x3e\x00\x00\x68\x30\x47\x7c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4d\x69\x00\x00\x00\x00\x00\x00\x68\x39\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x68\x4f\x00\x00\x00\x00\x00\x00\x68\x47\x00\x00\x00\x00\x00\x00\x3f\x7b\x00\x00\x00\x00\x00\x00\x00\x00\x35\x46\x00\x00\x36\x5d\x00\x00\x68\x42\x00\x00\x00\x00\x00\x00\x00\x00\x32\x5b\x00\x00\x00\x00\x3e\x54\x00\x00\x68\x45\x00\x00\x00\x00\x00\x00\x3a\x5a\x00\x00\x00\x00\x45\x51\x68\x4a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4a\x6e\x00\x00\x68\x41\x00\x00\x00\x00\x00\x00\x32\x5a\x38\x56\x49\x29\x68\x4b\x00\x00\x68\x3f\x00\x00\x00\x00\x68\x48\x00\x00\x00\x00\x00\x00\x68\x52\x00\x00\x68\x43\x00\x00\x00\x00", /* 8400 */ "\x00\x00\x00\x00\x00\x00\x68\x44\x46\x3a\x00\x00\x00\x00\x68\x49\x00\x00\x00\x00\x00\x00\x68\x46\x4b\x28\x68\x4c\x30\x60\x00\x00\x00\x00\x00\x00\x00\x00\x68\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x68\x4e\x00\x00\x68\x4d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x47\x6b\x68\x54\x00\x00\x68\x5f\x00\x00\x00\x00\x00\x00\x00\x00\x33\x7e\x00\x00\x00\x00\x00\x00\x68\x62\x00\x00\x00\x00\x68\x50\x00\x00\x00\x00\x00\x00\x68\x55\x4d\x6e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x68\x5e\x00\x00\x00\x00\x4d\x55\x00\x00\x00\x00\x00\x00\x00\x00\x4e\x2a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x43\x78\x00\x00\x00\x00\x00\x00\x33\x6b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x49\x72\x68\x64\x46\x21\x00\x00\x00\x00\x30\x31\x00\x00\x00\x00\x68\x5d\x00\x00\x68\x59\x41\x72\x68\x53\x68\x5b\x68\x60\x00\x00\x47\x2c\x00\x00\x00\x00\x00\x00\x30\x2a\x00\x00\x68\x58\x00\x00\x68\x61\x49\x78\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 8480 */ "\x00\x00\x00\x00\x68\x5c\x00\x00\x68\x57\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3e\x55\x00\x00\x00\x00\x00\x00\x00\x00\x3d\x2f\x00\x00\x00\x00\x00\x00\x3c\x2c\x00\x00\x00\x00\x00\x00\x00\x00\x4c\x58\x00\x00\x00\x00\x49\x47\x00\x00\x00\x00\x68\x67\x00\x00\x68\x70\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x68\x5a\x00\x00\x00\x00\x00\x00\x00\x00\x33\x77\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3e\x78\x68\x65\x00\x00\x68\x6a\x41\x73\x00\x00\x00\x00\x68\x66\x00\x00\x68\x6d\x00\x00\x00\x00\x43\x5f\x00\x00\x68\x6e\x00\x00\x00\x00\x4d\x56\x68\x63\x33\x38\x00\x00\x68\x69\x00\x00\x00\x00\x68\x6c\x4c\x2c\x00\x00\x00\x00\x00\x00\x00\x00\x68\x6f\x00\x00\x00\x00\x68\x68\x68\x6b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4b\x29\x00\x00\x4f\x21\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x68\x73\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x68\x7a\x00\x00\x00\x00\x68\x72", /* 8500 */ "\x3c\x43\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x68\x51\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4a\x4e\x00\x00\x4c\x22\x68\x79\x68\x78\x00\x00\x68\x74\x68\x75\x00\x00\x31\x36\x00\x00\x00\x00\x00\x00\x00\x00\x68\x77\x00\x00\x68\x71\x00\x00\x00\x00\x00\x00\x00\x00\x44\x55\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x68\x76\x30\x7e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x42\x22\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4a\x43\x00\x00\x00\x00\x68\x7b\x69\x21\x00\x00\x48\x59\x00\x00\x00\x00\x00\x00\x00\x00\x68\x7e\x3e\x56\x3c\x49\x69\x23\x00\x00\x00\x00\x36\x3e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x69\x24\x00\x00\x49\x79\x68\x7d\x00\x00\x68\x56\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x68\x7c\x00\x00\x00\x00\x00\x00\x00\x00\x4f\x4f\x46\x22\x49\x73\x00\x00\x00\x00\x69\x2b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x69\x31\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x69\x32\x00\x00", /* 8580 */ "\x69\x25\x00\x00\x00\x00\x00\x00\x47\x76\x00\x00\x00\x00\x69\x2f\x69\x27\x00\x00\x69\x29\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x69\x33\x69\x28\x00\x00\x00\x00\x69\x2c\x00\x00\x00\x00\x31\x72\x00\x00\x46\x65\x00\x00\x69\x2d\x69\x30\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x69\x26\x00\x00\x41\x26\x00\x00\x69\x2a\x3b\x27\x3f\x45\x37\x30\x4c\x74\x00\x00\x4c\x79\x3d\x72\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x69\x37\x69\x35\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4f\x4e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x69\x34\x00\x00\x00\x00\x00\x00\x4d\x75\x00\x00\x69\x36\x69\x38\x00\x00\x00\x00\x00\x00\x00\x00\x69\x39\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x69\x3c\x69\x3a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x46\x23\x69\x3b\x00\x00\x00\x00\x00\x00\x48\x4d\x69\x2e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3d\x73\x00\x00\x69\x3d\x69\x42\x41\x74\x00\x00\x00\x00\x69\x41\x00\x00", /* 8600 */ "\x00\x00\x00\x00\x69\x22\x00\x00\x00\x00\x00\x00\x69\x43\x41\x49\x00\x00\x00\x00\x69\x3e\x69\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x69\x3f\x00\x00\x00\x00\x5d\x31\x5d\x22\x00\x00\x00\x00\x69\x45\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x69\x44\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4d\x76\x00\x00\x62\x3c\x69\x46\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x69\x47\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x69\x48\x38\x57\x00\x00\x35\x54\x00\x00\x00\x00\x00\x00\x69\x4a\x51\x5d\x00\x00\x00\x00\x00\x00\x00\x00\x35\x75\x00\x00\x4e\x3a\x00\x00\x36\x73\x69\x4b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x69\x4c\x00\x00\x00\x00\x00\x00\x43\x6e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x69\x4d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x46\x7a\x00\x00\x30\x3a\x00\x00\x00\x00\x00\x00\x00\x00", /* 8680 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x32\x63\x69\x52\x69\x53\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x69\x4e\x00\x00\x3b\x3d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x69\x4f\x47\x42\x00\x00\x00\x00\x00\x00\x00\x00\x69\x50\x69\x51\x69\x5b\x00\x00\x00\x00\x00\x00\x69\x55\x69\x58\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x69\x54\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x69\x56\x00\x00\x69\x57\x3c\x58\x00\x00\x69\x59\x00\x00\x43\x41\x00\x00\x37\x56\x33\x42\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x69\x5c\x00\x00\x00\x00\x00\x00\x00\x00\x33\x3f\x00\x00\x69\x61\x00\x00\x00\x00\x69\x5d\x69\x60\x00\x00\x00\x00\x00\x00\x00\x00\x48\x3a\x00\x00\x00\x00\x00\x00\x00\x00\x69\x5e\x00\x00\x00\x00\x69\x5f\x49\x48\x48\x5a\x69\x62\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x42\x7d\x69\x6c\x00\x00\x69\x68\x00\x00\x00\x00\x32\x6b\x00\x00", /* 8700 */ "\x69\x66\x00\x00\x4b\x2a\x69\x67\x00\x00\x00\x00\x69\x64\x00\x00\x69\x65\x69\x6a\x69\x6d\x00\x00\x00\x00\x69\x6b\x00\x00\x00\x00\x00\x00\x69\x69\x69\x63\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x43\x58\x00\x00\x69\x74\x00\x00\x4c\x2a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x69\x72\x00\x00\x00\x00\x00\x00\x69\x73\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x69\x6e\x00\x00\x00\x00\x69\x70\x00\x00\x00\x00\x00\x00\x69\x71\x00\x00\x00\x00\x00\x00\x69\x6f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x66\x00\x00\x4f\x39\x69\x78\x00\x00\x69\x79\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x21\x00\x00\x3f\x2a\x00\x00\x69\x7b\x00\x00\x69\x7e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x69\x76\x69\x75\x00\x00\x00\x00\x6a\x22\x00\x00\x00\x00\x32\x5c\x00\x00\x69\x7c\x00\x00\x6a\x23\x00\x00\x00\x00\x00\x00\x69\x7d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x69\x7a\x00\x00\x44\x33\x00\x00\x69\x77\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x47\x68", /* 8780 */ "\x00\x00\x00\x00\x6a\x27\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4d\x3b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x26\x00\x00\x00\x00\x6a\x25\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x2e\x00\x00\x00\x00\x00\x00\x6a\x28\x00\x00\x00\x00\x00\x00\x6a\x30\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4d\x66\x6a\x33\x00\x00\x6a\x2a\x00\x00\x00\x00\x6a\x2b\x00\x00\x00\x00\x00\x00\x6a\x2f\x00\x00\x6a\x32\x6a\x31\x00\x00\x00\x00\x00\x00\x6a\x29\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x2c\x00\x00\x6a\x3d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x36\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x34\x00\x00\x00\x00\x6a\x35\x00\x00\x00\x00\x00\x00\x6a\x3a\x6a\x3b\x00\x00\x33\x2a\x00\x00\x35\x42\x00\x00\x00\x00\x6a\x39\x00\x00", /* 8800 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x24\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x38\x6a\x3c\x6a\x37\x00\x00\x6a\x3e\x00\x00\x00\x00\x00\x00\x6a\x40\x6a\x3f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x42\x6a\x41\x69\x5a\x00\x00\x00\x00\x00\x00\x6a\x46\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x43\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x44\x00\x00\x00\x00\x6a\x45\x00\x00\x6a\x47\x00\x00\x00\x00\x00\x00\x00\x00\x37\x6c\x00\x00\x6a\x49\x00\x00\x6a\x48\x00\x00\x3d\x30\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x39\x54\x5e\x27\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x4a\x3d\x51\x00\x00\x00\x00\x00\x00\x33\x39\x00\x00\x6a\x4b\x00\x00\x31\x52\x00\x00\x3e\x57\x6a\x4c\x00\x00\x00\x00\x39\x55\x6a\x4d\x30\x61\x00\x00\x00\x00\x00\x00\x00\x00\x49\x3d\x00\x00\x00\x00\x6a\x4e\x00\x00\x00\x00\x00\x00\x00\x00\x3f\x6a\x00\x00\x6a\x55\x00\x00\x00\x00\x6a\x52\x00\x00\x43\x6f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x53\x6a\x50\x36\x5e", /* 8880 */ "\x00\x00\x6a\x4f\x6a\x56\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x37\x36\x00\x00\x00\x00\x42\x5e\x00\x00\x6a\x5c\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x58\x00\x00\x00\x00\x00\x00\x42\x35\x6a\x57\x00\x00\x6a\x5a\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x51\x00\x00\x00\x00\x00\x00\x6a\x5b\x00\x00\x6a\x5d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x48\x6f\x00\x00\x00\x00\x6a\x59\x00\x00\x6a\x5e\x6a\x60\x00\x00\x00\x00\x38\x53\x6a\x54\x00\x00\x30\x41\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x5f\x00\x00\x3a\x5b\x4e\x76\x6a\x61\x6a\x62\x41\x75\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4e\x22\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x63\x4d\x35\x00\x00\x00\x00\x6a\x64\x6a\x65\x00\x00\x00\x00\x4a\x64\x6a\x66\x00\x00\x3a\x40\x00\x00\x4e\x23\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x6b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x6c\x3e\x58\x6a\x6a\x00\x00\x00\x00\x00\x00\x4d\x67\x6a\x67\x00\x00\x00\x00\x6a\x69\x40\x3d\x3f\x7e\x00\x00", /* 8900 */ "\x00\x00\x00\x00\x6a\x68\x00\x00\x6a\x6d\x00\x00\x00\x00\x4a\x23\x00\x00\x00\x00\x6a\x6f\x00\x00\x6a\x6e\x00\x00\x00\x00\x00\x00\x33\x6c\x00\x00\x4b\x2b\x6a\x70\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x7c\x6a\x72\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x73\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x74\x6a\x75\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x79\x00\x00\x6a\x7a\x00\x00\x00\x00\x6a\x78\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x76\x00\x00\x6a\x71\x6a\x77\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x7b\x70\x37\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x32\x28\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x7e\x36\x5f\x6a\x7d\x00\x00\x00\x00\x00\x00\x6b\x22\x00\x00\x6b\x21\x00\x00\x00\x00\x00\x00\x6b\x24\x00\x00\x00\x00\x6b\x23\x00\x00\x6b\x25\x00\x00\x00\x00\x3d\x31\x00\x00\x6b\x26\x00\x00\x00\x00\x6b\x27\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6b\x28\x40\x3e", /* 8980 */ "\x00\x00\x4d\x57\x00\x00\x6b\x29\x00\x00\x00\x00\x4a\x24\x47\x46\x6b\x2a\x00\x00\x6b\x2b\x38\x2b\x00\x00\x00\x00\x00\x00\x35\x2c\x00\x00\x00\x00\x00\x00\x6b\x2c\x00\x00\x00\x00\x3b\x6b\x47\x41\x6b\x2d\x00\x00\x33\x50\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6b\x2e\x00\x00\x00\x00\x00\x00\x00\x00\x6b\x30\x4d\x77\x00\x00\x6b\x2f\x3f\x46\x00\x00\x6b\x31\x00\x00\x00\x00\x6b\x32\x00\x00\x00\x00\x6b\x33\x34\x51\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6b\x34\x00\x00\x00\x00\x6b\x35\x00\x00\x6b\x36\x6b\x37\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x33\x51\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6b\x38\x00\x00\x6b\x39\x6b\x3a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x32\x72\x00\x00\x00\x00\x3f\x28\x6b\x3b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6b\x3c\x00\x00\x00\x00\x00\x00\x6b\x3d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 8a00 */ "\x38\x40\x00\x00\x44\x7b\x6b\x3e\x00\x00\x00\x00\x00\x00\x00\x00\x37\x57\x00\x00\x3f\x56\x00\x00\x6b\x41\x00\x00\x46\x24\x00\x00\x6b\x40\x00\x00\x00\x00\x37\x31\x00\x00\x00\x00\x6b\x3f\x42\x77\x35\x2d\x00\x00\x00\x00\x6b\x42\x00\x00\x6b\x43\x00\x00\x3e\x59\x00\x00\x00\x00\x00\x00\x37\x6d\x00\x00\x6b\x44\x00\x00\x00\x00\x00\x00\x00\x00\x4b\x2c\x00\x00\x00\x00\x40\x5f\x00\x00\x00\x00\x00\x00\x35\x76\x00\x00\x4c\x75\x41\x4a\x00\x00\x6b\x45\x00\x00\x00\x00\x00\x00\x3f\x47\x43\x70\x3e\x5a\x00\x00\x00\x00\x00\x00\x00\x00\x6b\x46\x00\x00\x00\x00\x00\x00\x00\x00\x6b\x49\x00\x00\x6b\x4a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3a\x3e\x42\x42\x6b\x48\x00\x00\x3e\x5b\x49\x3e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6b\x47\x00\x00\x00\x00\x3b\x6c\x00\x00\x31\x53\x00\x00\x6b\x4e\x37\x58\x00\x00\x00\x00\x3b\x6e\x00\x00\x00\x00\x3b\x6d\x00\x00\x4f\x4d\x6b\x4d\x6b\x4c\x41\x27\x00\x00\x35\x4d\x4f\x43\x33\x3a\x3e\x5c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6b\x4b\x00\x00\x00\x00\x00\x00", /* 8a80 */ "\x00\x00\x00\x00\x6b\x50\x00\x00\x6b\x51\x6b\x4f\x00\x00\x38\x58\x00\x00\x4d\x40\x00\x00\x00\x00\x3b\x6f\x47\x27\x00\x00\x00\x00\x00\x00\x6b\x54\x00\x00\x40\x40\x00\x00\x43\x42\x00\x00\x00\x00\x4d\x36\x00\x00\x6b\x57\x00\x00\x00\x00\x00\x00\x38\x6c\x00\x00\x40\x3f\x6b\x53\x00\x00\x6b\x58\x38\x6d\x6b\x55\x6b\x56\x00\x00\x6b\x52\x00\x00\x00\x00\x00\x00\x40\x62\x46\x49\x00\x00\x00\x00\x43\x2f\x00\x00\x32\x5d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x48\x70\x00\x00\x00\x00\x35\x43\x00\x00\x00\x00\x44\x34\x00\x00\x00\x00\x6b\x5b\x00\x00\x6b\x59\x00\x00\x00\x00\x43\x4c\x00\x00\x00\x00\x00\x00\x40\x41\x34\x52\x6b\x5a\x00\x00\x3f\x5b\x00\x00\x00\x00\x4e\x4a\x00\x00\x00\x00\x00\x00\x4f\x40\x00\x00\x00\x00\x00\x00\x6b\x5c\x6b\x67\x44\x35\x00\x00\x6b\x66\x00\x00\x6b\x63\x6b\x6b\x6b\x64\x00\x00\x6b\x60\x00\x00\x44\x7c\x6b\x5f\x00\x00\x00\x00\x00\x00\x6b\x5d\x00\x00\x4d\x21\x3b\x70\x00\x00\x00\x00\x6b\x61\x00\x00\x6b\x5e\x00\x00\x00\x00\x00\x00\x6b\x65\x3d\x74\x00\x00\x38\x41\x00\x00\x00\x00\x00\x00\x42\x7a\x00\x00", /* 8b00 */ "\x4b\x45\x31\x5a\x30\x62\x00\x00\x46\x25\x00\x00\x00\x00\x6b\x69\x00\x00\x00\x00\x00\x00\x00\x00\x6b\x68\x00\x00\x46\x66\x00\x00\x6b\x6d\x00\x00\x00\x00\x00\x00\x6b\x62\x00\x00\x6b\x6c\x6b\x6e\x00\x00\x38\x2c\x6b\x6a\x39\x56\x00\x00\x3c\x55\x00\x00\x00\x00\x6b\x6f\x4d\x58\x00\x00\x00\x00\x00\x00\x00\x00\x6b\x72\x00\x00\x6b\x75\x00\x00\x00\x00\x6b\x73\x49\x35\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6b\x70\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x36\x60\x00\x00\x00\x00\x00\x00\x00\x00\x6b\x74\x00\x00\x00\x00\x6b\x76\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6b\x7a\x00\x00\x00\x00\x6b\x77\x00\x00\x6b\x79\x6b\x78\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6b\x7b\x00\x00\x3c\x31\x00\x00\x6b\x7d\x6b\x7c\x49\x68\x00\x00\x00\x00\x6c\x21\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x37\x59\x00\x00\x00\x00\x00\x00\x00\x00\x6b\x7e\x6c\x22\x00\x00\x00\x00\x6c\x23\x35\x44\x66\x41\x3e\x79\x00\x00\x6c\x24\x00\x00\x00\x00\x38\x6e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6c\x25\x00\x00\x00\x00", /* 8b80 */ "\x6c\x26\x00\x00\x00\x00\x3b\x3e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5a\x4e\x00\x00\x6c\x27\x00\x00\x6c\x28\x00\x00\x3d\x32\x00\x00\x6c\x29\x6c\x2a\x00\x00\x00\x00\x6c\x2b\x00\x00\x00\x00\x6c\x2c\x6c\x2d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 8c00 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x43\x2b\x00\x00\x00\x00\x6c\x2e\x00\x00\x00\x00\x00\x00\x00\x00\x6c\x30\x00\x00\x6c\x2f\x00\x00\x00\x00\x00\x00\x00\x00\x46\x26\x00\x00\x6c\x31\x00\x00\x4b\x2d\x00\x00\x6c\x32\x00\x00\x6c\x33\x00\x00\x6c\x34\x00\x00\x00\x00\x00\x00\x00\x00\x6c\x35\x00\x00\x00\x00\x00\x00\x00\x00\x46\x5a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3e\x5d\x6c\x36\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x39\x6b\x50\x2e\x6c\x37\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6c\x38\x49\x3f\x6c\x39\x00\x00\x6c\x41\x00\x00\x00\x00\x00\x00", /* 8c80 */ "\x00\x00\x00\x00\x6c\x3a\x00\x00\x00\x00\x6c\x3c\x00\x00\x00\x00\x00\x00\x6c\x3b\x6c\x3d\x00\x00\x4b\x46\x6c\x3e\x6c\x3f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6c\x40\x00\x00\x00\x00\x00\x00\x6c\x42\x00\x00\x00\x00\x00\x00\x00\x00\x33\x2d\x44\x67\x00\x00\x49\x69\x3a\x62\x39\x57\x00\x00\x00\x00\x00\x00\x00\x00\x49\x4f\x32\x5f\x48\x4e\x6c\x45\x34\x53\x40\x55\x6c\x44\x6c\x49\x43\x79\x4c\x63\x00\x00\x6c\x47\x6c\x48\x35\x2e\x00\x00\x6c\x4a\x47\x63\x42\x5f\x00\x00\x00\x00\x48\x71\x45\x3d\x6c\x46\x00\x00\x4b\x47\x32\x6c\x6c\x4c\x4f\x28\x44\x42\x4f\x45\x00\x00\x00\x00\x3b\x71\x6c\x4b\x00\x00\x42\x31\x00\x00\x00\x00\x6c\x5c\x41\x28\x00\x00\x00\x00\x46\x78\x00\x00\x49\x50\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6c\x4f\x3b\x3f\x3b\x72\x00\x00\x3e\x5e\x00\x00\x47\x65\x00\x00\x38\x2d\x6c\x4e\x6c\x4d\x00\x00\x49\x6a\x00\x00\x00\x00\x00\x00\x3c\x41\x00\x00\x00\x00\x45\x52\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6c\x51\x6c\x52\x39\x58\x6c\x50\x00\x00\x00\x00", /* 8d00 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x6c\x53\x6c\x54\x00\x00\x6c\x56\x42\x23\x00\x00\x6c\x55\x34\x66\x00\x00\x6c\x58\x00\x00\x6c\x57\x6c\x59\x00\x00\x00\x00\x6c\x5b\x6c\x5d\x00\x00\x6c\x5e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x56\x00\x00\x3c\x4f\x6c\x5f\x00\x00\x00\x00\x00\x00\x33\x52\x00\x00\x6c\x60\x00\x00\x00\x00\x41\x76\x6c\x61\x00\x00\x6c\x62\x49\x6b\x00\x00\x00\x00\x35\x2f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 8d80 */ "\x00\x00\x6c\x63\x00\x00\x00\x00\x00\x00\x44\x36\x00\x00\x00\x00\x00\x00\x00\x00\x31\x5b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6c\x64\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3c\x71\x00\x00\x00\x00\x00\x00\x00\x00\x3f\x76\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x42\x2d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6c\x67\x00\x00\x00\x00\x00\x00\x6c\x66\x00\x00\x00\x00\x00\x00\x6c\x65\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6c\x6d\x6c\x6b\x00\x00\x00\x00\x6c\x68\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6c\x6a\x00\x00\x00\x00\x00\x00\x6c\x69\x6c\x6c\x00\x00\x35\x77\x00\x00\x6c\x70\x00\x00\x40\x57\x00\x00\x6c\x71\x00\x00\x00\x00\x00\x00\x00\x00\x38\x59\x00\x00\x6c\x6e\x6c\x6f\x00\x00\x00\x00\x00\x00\x4f\x29\x00\x00\x00\x00\x00\x00\x44\x37\x00\x00\x41\x29\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6c\x72\x00\x00\x00\x00\x6c\x75", /* 8e00 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6c\x73\x6c\x74\x4d\x59\x00\x00\x00\x00\x00\x00\x00\x00\x46\x27\x6c\x78\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6c\x76\x6c\x77\x6c\x79\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6d\x29\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6c\x7c\x00\x00\x00\x00\x00\x00\x6c\x7d\x6c\x7b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6c\x7a\x00\x00\x44\x7d\x00\x00\x00\x00\x6d\x21\x6d\x25\x6d\x22\x6c\x7e\x00\x00\x6d\x23\x00\x00\x00\x00\x00\x00\x6d\x24\x00\x00\x00\x00\x00\x00\x00\x00\x6d\x2b\x00\x00\x00\x00\x00\x00\x6d\x26\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x58\x6d\x28\x00\x00\x00\x00\x6d\x2a\x6d\x27\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6d\x2d\x00\x00\x3d\x33\x00\x00\x6d\x2c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6d\x2e\x00\x00\x00\x00\x00\x00", /* 8e80 */ "\x00\x00\x6d\x2f\x00\x00\x00\x00\x6d\x32\x6d\x31\x00\x00\x6d\x30\x00\x00\x00\x00\x6d\x34\x6d\x33\x00\x00\x4c\x76\x00\x00\x00\x00\x00\x00\x6d\x36\x00\x00\x6d\x35\x6d\x37\x00\x00\x00\x00\x00\x00\x00\x00\x6d\x38\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6d\x3a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6d\x39\x3f\x48\x6d\x3b\x00\x00\x00\x00\x36\x6d\x6d\x3c\x6d\x3e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6d\x3f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6d\x40\x6d\x3d\x00\x00\x6d\x41\x00\x00\x3c\x56\x6d\x42\x35\x30\x37\x33\x00\x00\x00\x00\x00\x00\x00\x00\x38\x2e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6d\x43\x00\x00\x00\x00\x00\x00\x46\x70\x00\x00\x00\x00\x45\x3e\x6d\x44\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6d\x47\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3c\x34\x00\x00\x00\x00\x6d\x46\x6d\x45\x37\x5a\x6d\x48\x00\x00", /* 8f00 */ "\x00\x00\x00\x00\x00\x00\x33\x53\x00\x00\x6d\x4a\x00\x00\x00\x00\x00\x00\x3a\x5c\x6d\x49\x00\x00\x6d\x52\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6d\x4c\x6d\x4e\x4a\x65\x6d\x4b\x00\x00\x00\x00\x00\x00\x6d\x4d\x00\x00\x6d\x51\x6d\x4f\x35\x31\x00\x00\x6d\x50\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6d\x53\x00\x00\x00\x00\x47\x5a\x4e\x58\x00\x00\x00\x00\x00\x00\x00\x00\x3d\x34\x00\x00\x00\x00\x00\x00\x6d\x54\x00\x00\x00\x00\x00\x00\x00\x00\x4d\x22\x6d\x56\x00\x00\x6d\x55\x00\x00\x00\x00\x6d\x59\x4d\x41\x00\x00\x00\x00\x6d\x58\x00\x00\x33\x6d\x6d\x57\x6d\x5c\x00\x00\x00\x00\x6d\x5b\x00\x00\x00\x00\x6d\x5a\x45\x32\x6d\x5d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6d\x5e\x00\x00\x00\x00\x00\x00\x00\x00\x6d\x5f\x00\x00\x00\x00\x39\x6c\x00\x00\x37\x25\x6d\x60\x6d\x61\x6d\x62\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 8f80 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3f\x49\x6d\x63\x00\x00\x3c\x2d\x6d\x64\x00\x00\x00\x00\x00\x00\x6d\x65\x00\x00\x00\x00\x00\x00\x52\x21\x51\x7e\x00\x00\x00\x00\x00\x00\x00\x00\x6d\x66\x65\x70\x6d\x67\x43\x24\x3f\x2b\x47\x40\x00\x00\x00\x00\x00\x00\x00\x00\x6d\x68\x00\x00\x00\x00\x4a\x55\x44\x54\x39\x7e\x00\x00\x00\x00\x43\x29\x00\x00\x00\x00\x31\x2a\x00\x00\x4b\x78\x3f\x57\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x37\x5e\x00\x00\x00\x00\x36\x61\x00\x00\x00\x00\x4a\x56\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6d\x69\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6d\x6b\x00\x00\x00\x00\x6d\x6a\x32\x60\x00\x00\x00\x00\x46\x76\x6d\x6c\x47\x77\x00\x00\x45\x33\x00\x00\x6d\x6d\x3d\x52\x00\x00\x00\x00\x00\x00\x6d\x6f\x00\x00\x00\x00\x4c\x42\x6d\x7e\x6d\x71\x6d\x72\x00\x00\x00\x00\x44\x49\x00\x00\x00\x00", /* 9000 */ "\x42\x60\x41\x77\x00\x00\x46\x28\x00\x00\x6d\x70\x35\x55\x00\x00\x00\x00\x00\x00\x00\x00\x6d\x79\x00\x00\x6d\x76\x6e\x25\x46\x29\x43\x60\x6d\x73\x00\x00\x44\x7e\x45\x53\x6d\x74\x6d\x78\x3f\x60\x00\x00\x47\x67\x44\x4c\x00\x00\x00\x00\x40\x42\x6d\x77\x42\x2e\x42\x24\x6d\x75\x30\x29\x4f\x22\x00\x00\x00\x00\x00\x00\x6d\x7a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x42\x61\x00\x00\x00\x00\x3d\x35\x3f\x4a\x00\x00\x00\x00\x6d\x7c\x6d\x7b\x00\x00\x30\x6f\x6d\x7d\x00\x00\x00\x00\x49\x2f\x00\x00\x6e\x27\x00\x00\x00\x00\x46\x5b\x3f\x6b\x00\x00\x00\x00\x43\x59\x00\x00\x36\x78\x00\x00\x6e\x26\x4d\x37\x31\x3f\x00\x00\x4a\x57\x32\x61\x6e\x21\x6e\x22\x6e\x23\x6e\x24\x46\x3b\x43\x23\x30\x63\x6e\x28\x00\x00\x6e\x29\x74\x23\x00\x00\x00\x00\x42\x3d\x00\x00\x6e\x2a\x00\x00\x31\x73\x41\x4c\x00\x00\x38\x2f\x00\x00\x4d\x5a\x00\x00\x00\x00\x6e\x2b\x45\x2c\x00\x00\x00\x00\x00\x00\x41\x78\x3c\x57\x6e\x2c\x00\x00\x00\x00\x6e\x2f\x00\x00\x00\x00\x3d\x65\x6e\x2d\x41\x2b\x41\x2a\x00\x00\x30\x64\x00\x00\x4e\x4b\x6e\x31\x00\x00\x48\x72", /* 9080 */ "\x6e\x33\x6e\x32\x6e\x30\x63\x64\x34\x54\x00\x00\x00\x00\x6d\x6e\x00\x00\x6e\x35\x6e\x34\x00\x00\x00\x00\x00\x00\x00\x00\x6e\x36\x00\x00\x4d\x38\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x46\x61\x00\x00\x00\x00\x4b\x2e\x00\x00\x6e\x37\x00\x00\x3c\x59\x00\x00\x00\x00\x00\x00\x00\x00\x6e\x38\x00\x00\x6e\x39\x00\x00\x00\x00\x00\x00\x6e\x3a\x00\x00\x00\x00\x45\x21\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x30\x6a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x39\x59\x00\x00\x00\x00\x00\x00\x4f\x3a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6e\x3e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x37\x34\x6e\x3b\x00\x00\x6e\x3c\x00\x00\x00\x00\x00\x00\x49\x74\x00\x00\x00\x00\x00\x00\x00\x00\x33\x54\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4d\x39\x00\x00\x36\x3f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x45\x54\x00\x00\x00\x00", /* 9100 */ "\x00\x00\x00\x00\x6e\x3f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6e\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6e\x41\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x45\x22\x00\x00\x00\x00\x6e\x43\x00\x00\x6e\x42\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x46\x53\x6e\x44\x3d\x36\x3c\x60\x47\x5b\x43\x71\x00\x00\x00\x00\x00\x00\x3c\x72\x00\x00\x3f\x6c\x00\x00\x6e\x45\x00\x00\x6e\x46\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3f\x5d\x6e\x47\x00\x00\x6e\x48\x00\x00\x00\x00\x00\x00\x6e\x49\x4d\x6f\x00\x00\x3d\x37\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6e\x4b\x6e\x4a\x00\x00\x39\x5a\x00\x00\x39\x73\x3b\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 9180 */ "\x00\x00\x00\x00\x6e\x4e\x00\x00\x00\x00\x00\x00\x00\x00\x3d\x66\x00\x00\x6e\x4d\x00\x00\x6e\x4c\x00\x00\x42\x69\x00\x00\x00\x00\x38\x6f\x00\x00\x40\x43\x00\x00\x00\x00\x00\x00\x00\x00\x48\x30\x00\x00\x00\x00\x00\x00\x00\x00\x3d\x39\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6e\x4f\x00\x00\x3e\x5f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6e\x52\x6e\x50\x00\x00\x00\x00\x00\x00\x6e\x51\x00\x00\x00\x00\x00\x00\x00\x00\x6e\x54\x6e\x53\x00\x00\x00\x00\x3e\x7a\x00\x00\x6e\x55\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6e\x56\x6e\x57\x00\x00\x00\x00\x00\x00\x00\x00\x48\x50\x3a\x53\x3c\x61\x6e\x58\x00\x00\x6e\x59\x4e\x24\x3d\x45\x4c\x6e\x4e\x4c\x6e\x5a\x36\x62\x00\x00\x00\x00\x00\x00\x00\x00\x6e\x5b\x00\x00\x45\x23\x00\x00\x00\x00\x6e\x5e\x33\x78\x3f\x4b\x00\x00\x6e\x5c\x00\x00\x6e\x5d\x00\x00\x44\x60\x00\x00\x00\x00\x4b\x55\x36\x7c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6e\x60\x6e\x61\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6e\x5f\x00\x00\x00\x00\x6e\x63", /* 9200 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x46\x5f\x33\x43\x00\x00\x00\x00\x6e\x67\x00\x00\x00\x00\x6e\x64\x6e\x66\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6e\x62\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6f\x4f\x00\x00\x00\x00\x6e\x65\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4e\x6b\x00\x00\x00\x00\x38\x5a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6e\x6f\x00\x00\x00\x00\x00\x00\x00\x00\x45\x34\x6e\x6a\x00\x00\x00\x00\x6e\x6d\x6e\x6b\x00\x00\x6e\x70\x00\x00\x00\x00\x00\x00\x00\x00\x6e\x71\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6e\x69\x00\x00\x00\x00\x6e\x76\x31\x74\x00\x00\x00\x00\x6e\x68\x00\x00\x00\x00\x00\x00\x48\x2d\x00\x00\x6e\x6c\x00\x00\x3e\x60\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x39\x5b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4b\x48\x00\x00", /* 9280 */ "\x36\x64\x00\x00\x00\x00\x3d\x46\x00\x00\x46\x3c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x41\x2d\x00\x00\x6e\x74\x00\x00\x6e\x6e\x6e\x73\x00\x00\x4c\x43\x00\x00\x44\x38\x6e\x75\x6e\x72\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x41\x2c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6e\x79\x00\x00\x6e\x78\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6e\x77\x00\x00\x00\x00\x4b\x2f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3d\x7b\x00\x00\x00\x00\x00\x00\x00\x00\x6e\x7a\x4a\x5f\x00\x00\x00\x00\x31\x54\x00\x00\x00\x00\x00\x00\x00\x00\x49\x46\x43\x72\x00\x00\x00\x00\x00\x00\x00\x00\x35\x78\x00\x00\x6e\x7c\x00\x00\x39\x5d\x00\x00\x00\x00\x00\x00", /* 9300 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3b\x2c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6e\x7b\x3f\x6d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3f\x6e\x6f\x21\x6f\x23\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3e\x7b\x00\x00\x6f\x22\x6f\x24\x00\x00\x00\x00\x36\x53\x00\x00\x49\x45\x00\x00\x00\x00\x3c\x62\x4f\x23\x00\x00\x6e\x7e\x3a\x78\x00\x00\x00\x00\x4f\x3f\x00\x00\x00\x00\x6f\x26\x00\x00\x00\x00\x00\x00\x00\x00\x6f\x25\x6f\x27\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6e\x7d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x46\x69\x00\x00\x45\x55\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x44\x57\x00\x00\x6f\x2c\x00\x00\x00\x00\x00\x00\x00\x00\x43\x43\x6f\x28\x00\x00\x00\x00\x00\x00\x6f\x29\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x37\x2d\x00\x00\x6f\x2b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x38\x30\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6f\x2a\x00\x00\x3e\x61\x00\x00", /* 9380 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x33\x79\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6f\x30\x00\x00\x3a\x3f\x41\x79\x00\x00\x00\x00\x44\x4a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x33\x3b\x00\x00\x00\x00\x00\x00\x00\x00\x6f\x2e\x6f\x2f\x44\x43\x00\x00\x6f\x2d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6f\x31\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6f\x37\x00\x00\x00\x00\x00\x00\x00\x00\x6f\x3a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6f\x39\x45\x2d\x00\x00\x00\x00\x00\x00\x00\x00\x6f\x32\x6f\x33\x6f\x36\x00\x00\x00\x00\x00\x00\x00\x00\x6f\x38\x00\x00\x00\x00\x00\x00\x36\x40\x00\x00\x00\x00\x6f\x3b\x6f\x35\x00\x00\x00\x00\x6f\x34\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 9400 */ "\x00\x00\x00\x00\x00\x00\x6f\x3f\x00\x00\x00\x00\x00\x00\x6f\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6f\x41\x00\x00\x00\x00\x6f\x3e\x6f\x3d\x00\x00\x00\x00\x00\x00\x3e\x62\x46\x2a\x6f\x3c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6f\x45\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6f\x43\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6f\x44\x6f\x42\x00\x00\x42\x78\x00\x00\x6f\x46\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6f\x47\x00\x00\x00\x00\x6f\x49\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x34\x55\x6f\x48\x4c\x7a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6f\x54\x6f\x4a\x00\x00\x00\x00\x6f\x4d\x00\x00\x6f\x4b\x00\x00\x6f\x4c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6f\x4e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6f\x50\x00\x00\x00\x00\x00\x00\x00\x00\x6f\x51\x00\x00\x6f\x52\x00\x00\x00\x00\x00\x00\x00\x00\x6f\x55\x6f\x53\x6f\x56\x6f\x58", /* 9480 */ "\x00\x00\x6f\x57\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 9500 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x44\x39\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 9580 */ "\x4c\x67\x00\x00\x6f\x59\x41\x2e\x00\x00\x00\x00\x00\x00\x6f\x5a\x00\x00\x4a\x44\x6f\x5b\x33\x2b\x00\x00\x00\x00\x00\x00\x31\x3c\x00\x00\x34\x57\x00\x00\x34\x56\x6f\x5c\x00\x00\x6f\x5d\x00\x00\x6f\x5e\x6f\x5f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6f\x60\x00\x00\x34\x58\x33\x55\x39\x5e\x48\x36\x00\x00\x6f\x62\x6f\x61\x00\x00\x00\x00\x00\x00\x00\x00\x6f\x63\x00\x00\x00\x00\x00\x00\x00\x00\x31\x5c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6f\x66\x00\x00\x6f\x65\x6f\x64\x00\x00\x6f\x67\x00\x00\x00\x00\x00\x00\x00\x00\x6f\x6a\x00\x00\x00\x00\x00\x00\x30\x47\x00\x00\x00\x00\x6f\x68\x00\x00\x6f\x6c\x6f\x6b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6f\x6e\x6f\x6d\x6f\x6f\x00\x00\x46\x2e\x00\x00\x00\x00\x00\x00\x6f\x70\x00\x00\x00\x00\x00\x00\x00\x00\x6f\x71\x6f\x73\x00\x00\x00\x00\x6f\x72\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 9600 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x49\x6c\x00\x00\x00\x00\x00\x00\x00\x00\x6f\x74\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6f\x75\x00\x00\x3a\x65\x00\x00\x00\x00\x00\x00\x6f\x76\x6f\x77\x00\x00\x00\x00\x4b\x49\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x41\x4b\x00\x00\x00\x00\x00\x00\x30\x24\x42\x4b\x00\x00\x6f\x78\x00\x00\x49\x6d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6f\x7b\x6f\x79\x39\x5f\x00\x00\x6f\x7a\x38\x42\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4a\x45\x6f\x7d\x70\x21\x6f\x7e\x70\x22\x00\x00\x00\x00\x31\x21\x3f\x58\x3d\x7c\x34\x59\x70\x23\x00\x00\x00\x00\x00\x00\x47\x66\x00\x00\x70\x25\x00\x00\x00\x00\x00\x00\x31\x22\x00\x00\x70\x24\x44\x44\x00\x00\x4e\x4d\x46\x2b\x6f\x7c\x4e\x26\x00\x00\x38\x31\x00\x00\x00\x00\x4d\x5b\x00\x00\x00\x00", /* 9680 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x36\x79\x4e\x34\x00\x00\x37\x28\x00\x00\x42\x62\x67\x21\x00\x00\x70\x26\x33\x2c\x3f\x6f\x00\x00\x00\x00\x00\x00\x00\x00\x33\x56\x70\x28\x00\x00\x70\x29\x70\x27\x37\x64\x00\x00\x3a\x5d\x3e\x63\x00\x00\x00\x00\x00\x00\x31\x23\x00\x00\x00\x00\x4e\x59\x00\x00\x00\x00\x00\x00\x70\x2b\x6e\x2e\x00\x00\x70\x2a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x70\x2e\x70\x2c\x70\x2d\x00\x00\x70\x2f\x00\x00\x70\x30\x4e\x6c\x70\x31\x70\x32\x00\x00\x40\x49\x48\x3b\x00\x00\x00\x00\x00\x00\x3f\x7d\x34\x67\x00\x00\x00\x00\x4d\x3a\x32\x6d\x3d\x38\x38\x5b\x00\x00\x70\x35\x00\x00\x70\x34\x3b\x73\x70\x36\x70\x33\x00\x00\x00\x00\x3b\x28\x00\x00\x00\x00\x00\x00\x70\x3a\x6a\x2d\x00\x00\x00\x00\x52\x56\x00\x00\x3f\x77\x70\x38\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4e\x25\x46\x71\x00\x00\x00\x00\x00\x00\x00\x00\x31\x2b\x00\x00\x40\x63\x3c\x36\x00\x00\x00\x00\x00\x00\x00\x00\x4a\x37\x00\x00\x31\x40\x00\x00\x00\x00\x00\x00\x4e\x6d\x4d\x6b\x00\x00\x70\x3b\x00\x00\x45\x45\x00\x00\x00\x00\x00\x00\x00\x00", /* 9700 */ "\x3c\x7b\x00\x00\x00\x00\x00\x00\x70\x3c\x00\x00\x70\x3d\x3f\x4c\x70\x3e\x00\x00\x4e\x6e\x00\x00\x00\x00\x70\x39\x70\x40\x70\x42\x00\x00\x70\x41\x00\x00\x70\x3f\x00\x00\x00\x00\x70\x43\x00\x00\x00\x00\x70\x44\x00\x00\x00\x00\x41\x7a\x00\x00\x32\x62\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x70\x45\x00\x00\x00\x00\x4c\x38\x00\x00\x00\x00\x70\x46\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x70\x47\x00\x00\x4f\x2a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5b\x31\x70\x48\x00\x00\x00\x00\x00\x00\x70\x49\x70\x4a\x00\x00\x00\x00\x00\x00\x70\x4e\x00\x00\x70\x4b\x00\x00\x70\x4c\x00\x00\x70\x4d\x70\x4f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x44\x00\x00\x00\x00\x00\x00\x4c\x77\x00\x00\x00\x00\x40\x45\x00\x00\x00\x00\x70\x50\x00\x00\x48\x73\x00\x00\x70\x51\x73\x53\x4c\x4c\x00\x00\x70\x52\x00\x00\x70\x53\x00\x00\x70\x54\x33\x57\x00\x00\x70\x56\x00\x00\x3f\x59\x00\x00\x00\x00\x00\x00\x70\x57\x00\x00\x00\x00\x37\x24\x00\x00\x00\x00\x00\x00\x00\x00\x70\x58\x70\x5c\x00\x00\x70\x5a\x00\x00\x00\x00\x00\x00", /* 9780 */ "\x00\x00\x70\x5b\x00\x00\x00\x00\x33\x73\x70\x59\x70\x5d\x00\x00\x00\x00\x00\x00\x00\x00\x70\x5e\x00\x00\x30\x48\x00\x00\x70\x5f\x70\x60\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3e\x64\x00\x00\x00\x00\x00\x00\x70\x61\x00\x00\x00\x00\x00\x00\x35\x47\x00\x00\x00\x00\x70\x64\x00\x00\x00\x00\x70\x63\x00\x00\x70\x62\x00\x00\x00\x00\x6b\x71\x00\x00\x4a\x5c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x70\x65\x70\x66\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x70\x67\x00\x00\x00\x00\x70\x68\x00\x00\x70\x69\x00\x00\x00\x00\x70\x6a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x34\x5a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x70\x6b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x70\x6c\x47\x23\x00\x00\x00\x00\x00\x00\x70\x6e\x32\x3b\x00\x00\x70\x71\x70\x70\x00\x00\x00\x00\x00\x00\x00\x00\x31\x24\x00\x00\x00\x00\x00\x00\x36\x41", /* 9800 */ "\x00\x00\x4a\x47\x44\x3a\x3a\x22\x00\x00\x39\x60\x3d\x67\x00\x00\x3f\x5c\x00\x00\x00\x00\x00\x00\x70\x73\x00\x00\x00\x00\x70\x72\x4d\x42\x34\x68\x48\x52\x46\x5c\x00\x00\x00\x00\x00\x00\x3f\x7c\x4e\x4e\x00\x00\x37\x5b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x70\x76\x00\x00\x00\x00\x70\x75\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4b\x4b\x46\x2c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x31\x50\x00\x00\x00\x00\x70\x77\x70\x74\x00\x00\x00\x00\x49\x51\x4d\x6a\x70\x78\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x70\x79\x00\x00\x00\x00\x00\x00\x00\x00\x70\x7b\x42\x6a\x33\x5b\x33\x5c\x70\x7a\x00\x00\x00\x00\x00\x00\x00\x00\x34\x69\x38\x32\x00\x00\x00\x00\x34\x6a\x00\x00\x00\x00\x45\x3f\x00\x00\x00\x00\x4e\x60\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x38\x5c\x00\x00\x00\x00\x00\x00\x70\x7c\x00\x00\x00\x00\x00\x00\x70\x7d\x70\x7e\x71\x21\x00\x00\x71\x23\x71\x22\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 9880 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x49\x77\x00\x00\x71\x24\x00\x00\x00\x00\x00\x00\x00\x00\x71\x25\x00\x00\x71\x26\x00\x00\x00\x00\x00\x00\x00\x00\x71\x27\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x71\x29\x71\x28\x00\x00\x71\x2a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x48\x74\x66\x4c\x00\x00\x00\x00\x3f\x29\x00\x00\x00\x00\x35\x32\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x71\x2b\x00\x00\x71\x2c\x00\x00\x52\x2c\x5d\x3b\x48\x53\x00\x00\x00\x00\x30\x7b\x00\x00\x30\x3b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3b\x74\x4b\x30\x3e\x7e\x00\x00", /* 9900 */ "\x00\x00\x00\x00\x00\x00\x71\x2d\x00\x00\x4c\x5f\x00\x00\x00\x00\x00\x00\x71\x2e\x4d\x5c\x00\x00\x31\x42\x00\x00\x00\x00\x00\x00\x3b\x41\x00\x00\x71\x2f\x32\x6e\x71\x30\x00\x00\x00\x00\x00\x00\x71\x31\x00\x00\x00\x00\x00\x00\x00\x00\x71\x33\x71\x34\x00\x00\x71\x36\x71\x32\x00\x00\x00\x00\x71\x35\x00\x00\x00\x00\x00\x00\x34\x5b\x00\x00\x00\x00\x00\x00\x71\x37\x00\x00\x71\x38\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x71\x39\x71\x3a\x00\x00\x00\x00\x00\x00\x71\x3b\x00\x00\x00\x00\x71\x3d\x00\x00\x00\x00\x00\x00\x71\x3c\x00\x00\x71\x3f\x71\x42\x00\x00\x00\x00\x00\x00\x71\x3e\x71\x40\x71\x41\x00\x00\x00\x00\x71\x43\x00\x00\x36\x42\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 9980 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3c\x73\x71\x44\x71\x45\x39\x61\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x71\x46\x00\x00\x00\x00\x33\x3e\x00\x00\x00\x00\x00\x00\x47\x4f\x71\x47\x71\x48\x00\x00\x00\x00\x00\x00\x00\x00\x43\x5a\x46\x6b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x71\x49\x00\x00\x00\x00\x00\x00\x00\x00\x47\x7d\x00\x00\x00\x00\x42\x4c\x31\x58\x36\x6e\x00\x00\x36\x6f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x43\x73\x71\x4e\x36\x70\x00\x00\x00\x00\x32\x6f\x00\x00\x00\x00\x71\x4d\x00\x00\x00\x00\x71\x4b\x00\x00\x71\x4c\x00\x00\x71\x4a\x00\x00\x00\x00\x71\x58\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x71\x4f\x71\x50\x00\x00\x00\x00\x71\x51\x71\x52\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x71\x54\x00\x00\x00\x00\x71\x53\x00\x00\x00\x00\x00\x00\x3d\x59", /* 9a00 */ "\x00\x00\x71\x55\x00\x00\x00\x00\x00\x00\x71\x57\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x35\x33\x71\x56\x00\x00\x00\x00\x41\x7b\x38\x33\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x71\x59\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x42\x4d\x00\x00\x00\x00\x71\x5a\x00\x00\x00\x00\x00\x00\x00\x00\x46\x2d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x71\x5b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x71\x60\x00\x00\x71\x5e\x00\x00\x71\x5d\x71\x5f\x00\x00\x71\x5c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x71\x62\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x71\x61\x00\x00\x71\x64\x00\x00\x00\x00\x36\x43\x71\x63\x00\x00\x00\x00\x00\x00\x71\x65\x00\x00\x00\x00\x71\x66\x00\x00\x71\x68\x71\x67\x00\x00\x00\x00\x00\x00\x71\x69\x71\x6b\x71\x6a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 9a80 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x39\x7c\x00\x00\x00\x00\x00\x00\x00\x00\x71\x6c\x00\x00\x00\x00\x71\x6d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x33\x3c\x00\x00\x00\x00\x00\x00\x71\x6e\x00\x00\x00\x00\x00\x00\x71\x6f\x00\x00\x00\x00\x00\x00\x3f\x71\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x71\x70\x00\x00\x71\x71\x00\x00\x71\x72\x71\x73\x00\x00\x00\x00\x00\x00\x39\x62\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x71\x74\x71\x75\x00\x00\x00\x00\x71\x76\x71\x77\x00\x00\x00\x00\x71\x78\x00\x00\x00\x00\x00\x00\x48\x31\x71\x7a\x00\x00\x49\x26\x71\x7b\x71\x79\x00\x00\x71\x7d\x00\x00\x00\x00\x71\x7c\x00\x00\x00\x00\x71\x7e\x00\x00\x00\x00\x00\x00\x72\x21\x00\x00\x00\x00\x00\x00\x00\x00", /* 9b00 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x72\x22\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x72\x23\x00\x00\x72\x24\x00\x00\x00\x00\x00\x00\x00\x00\x72\x25\x00\x00\x00\x00\x72\x26\x72\x27\x00\x00\x72\x28\x00\x00\x72\x29\x72\x2a\x72\x2b\x72\x2c\x00\x00\x00\x00\x00\x00\x72\x2d\x72\x2e\x00\x00\x5d\x35\x72\x2f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x64\x78\x35\x34\x00\x00\x00\x00\x00\x00\x00\x00\x33\x21\x3a\x32\x72\x31\x72\x30\x4c\x25\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x72\x33\x72\x34\x72\x32\x00\x00\x72\x35\x00\x00\x00\x00\x4b\x62\x00\x00\x00\x00\x00\x00\x72\x36\x00\x00\x35\x7b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4f\x25\x00\x00\x00\x00\x00\x00\x00\x00\x72\x37\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 9b80 */ "\x00\x00\x00\x00\x00\x00\x72\x39\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x30\x3e\x00\x00\x00\x00\x72\x3a\x4a\x2b\x72\x38\x00\x00\x00\x00\x72\x3b\x72\x3c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x72\x3d\x72\x3e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x72\x3f\x00\x00\x4b\x6e\x3b\x2d\x00\x00\x3a\x7a\x41\x2f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x72\x40\x00\x00\x00\x00\x00\x00\x00\x00\x72\x43\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x72\x41\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x72\x44\x00\x00\x00\x00\x38\x71\x72\x42\x00\x00\x00\x00\x00\x00\x00\x00\x72\x45\x00\x00\x72\x46\x72\x47\x00\x00\x72\x4b\x00\x00\x3b\x2a\x00\x00\x00\x00\x00\x00\x00\x00\x42\x64\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x72\x4c\x72\x49\x72\x48\x72\x4a\x00\x00\x00\x00\x00\x00\x37\x5f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x72\x50\x72\x4f\x72\x4e\x00\x00\x00\x00\x30\x33\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 9c00 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x72\x5a\x00\x00\x72\x56\x00\x00\x72\x57\x72\x53\x72\x59\x00\x00\x72\x55\x33\x62\x00\x00\x00\x00\x4f\x4c\x00\x00\x72\x58\x72\x54\x72\x52\x72\x51\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x72\x5c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x72\x5f\x00\x00\x00\x00\x72\x5e\x72\x5d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x49\x49\x72\x5b\x30\x73\x72\x60\x00\x00\x72\x62\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x33\x6f\x72\x4d\x31\x37\x00\x00\x00\x00\x72\x64\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x72\x63\x72\x61\x43\x2d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4b\x70\x00\x00\x00\x00\x00\x00\x00\x00\x4e\x5a\x00\x00\x00\x00\x72\x65\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x72\x66\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x72\x67\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x72\x68\x00\x00\x72\x69\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 9c80 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x44\x3b\x00\x00\x72\x6a\x00\x00\x48\x37\x00\x00\x72\x6f\x72\x6b\x00\x00\x00\x00\x00\x00\x72\x6c\x00\x00\x00\x00\x4b\x31\x4c\x44\x00\x00\x46\x50\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 9d00 */ "\x00\x00\x00\x00\x00\x00\x72\x70\x00\x00\x00\x00\x72\x71\x46\x3e\x72\x6e\x72\x6d\x00\x00\x00\x00\x00\x00\x00\x00\x32\x2a\x00\x00\x00\x00\x00\x00\x72\x79\x00\x00\x00\x00\x72\x78\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x31\x75\x00\x00\x00\x00\x00\x00\x72\x76\x00\x00\x00\x00\x00\x00\x72\x75\x00\x00\x00\x00\x72\x73\x00\x00\x33\x7b\x00\x00\x72\x72\x3c\x32\x32\x29\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x39\x63\x00\x00\x00\x00\x72\x7c\x72\x7b\x00\x00\x72\x7a\x00\x00\x00\x00\x72\x77\x00\x00\x72\x7d\x00\x00\x72\x7e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x73\x25\x73\x24\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x73\x26\x00\x00\x00\x00\x31\x2d\x73\x21\x73\x22\x00\x00\x39\x74\x4c\x39\x00\x00\x00\x00\x73\x23\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4b\x32\x00\x00\x00\x00\x73\x2b\x00\x00\x00\x00\x73\x27\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x73\x2c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 9d80 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x73\x29\x00\x00\x73\x28\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x37\x5c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x73\x2d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x73\x2e\x00\x00\x00\x00\x00\x00\x00\x00\x73\x2f\x00\x00\x73\x2a\x00\x00\x00\x00\x00\x00\x72\x74\x00\x00\x00\x00\x73\x30\x00\x00\x44\x61\x00\x00\x00\x00\x00\x00\x73\x34\x00\x00\x73\x35\x73\x33\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x73\x32\x73\x38\x00\x00\x73\x31\x00\x00\x73\x36\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x73\x37\x00\x00\x00\x00\x00\x00\x73\x3a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x73\x39\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x73\x3c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x73\x3d\x00\x00\x73\x3e\x00\x00\x00\x00\x4f\x49\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x73\x3b\x42\x6b\x3a\x6d\x00\x00\x00\x00\x73\x3f\x00\x00\x00\x00", /* 9e00 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x73\x40\x73\x41\x00\x00\x00\x00\x73\x42\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x73\x43\x00\x00\x00\x00\x38\x34\x73\x44\x00\x00\x00\x00\x00\x00\x73\x45\x00\x00\x3c\x2f", /* 9e80 */ "\x00\x00\x73\x46\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x73\x47\x00\x00\x00\x00\x73\x48\x73\x49\x00\x00\x00\x00\x00\x00\x00\x00\x73\x4c\x73\x4a\x4f\x3c\x00\x00\x73\x4b\x00\x00\x4e\x6f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x73\x4d\x00\x00\x4e\x5b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x73\x4e\x47\x7e\x00\x00\x00\x00\x73\x4f\x73\x51\x00\x00\x00\x00\x73\x52\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x73\x50\x39\x6d\x4c\x4d\x4b\x63\x56\x77\x00\x00\x5d\x60\x4b\x7b\x00\x00\x00\x00\x00\x00\x00\x00\x32\x2b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x73\x54\x35\x50\x73\x55\x73\x56\x73\x57\x00\x00\x39\x75\x00\x00\x73\x58\x00\x00\x00\x00\x00\x00\x60\x54\x4c\x5b\x00\x00\x42\x63\x73\x59\x73\x5b\x73\x5a\x00\x00\x73\x5c\x00\x00\x00\x00\x00\x00\x00\x00\x73\x5d\x00\x00\x00\x00\x73\x5e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x73\x5f\x00\x00\x00\x00\x00\x00\x00\x00\x73\x60\x00\x00\x73\x61\x73\x62\x00\x00\x73\x63\x00\x00\x73\x64\x73\x65\x73\x66\x00\x00\x00\x00", /* 9f00 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x73\x67\x73\x68\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x45\x24\x00\x00\x00\x00\x00\x00\x00\x00\x38\x5d\x00\x00\x73\x6a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x41\x4d\x73\x6b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x73\x6c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x49\x21\x00\x00\x00\x00\x73\x6d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x73\x6e\x63\x37\x00\x00\x00\x00\x6c\x5a\x70\x6d\x00\x00\x00\x00\x73\x6f\x00\x00\x73\x70\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x73\x72\x73\x73\x73\x74\x4e\x70\x73\x71\x00\x00\x00\x00\x73\x75\x73\x76\x00\x00\x00\x00\x73\x78\x00\x00\x73\x77\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x73\x7a\x00\x00\x00\x00\x00\x00\x73\x7b\x73\x79\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* 9f80 */ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4e\x36\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x73\x7c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x73\x7d\x63\x54\x00\x00\x00\x00\x73\x7e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", /* a000 */ NULL, /* a080 */ NULL, /* a100 */ NULL, /* a180 */ NULL, /* a200 */ NULL, /* a280 */ NULL, /* a300 */ NULL, /* a380 */ NULL, /* a400 */ NULL, /* a480 */ NULL, /* a500 */ NULL, /* a580 */ NULL, /* a600 */ NULL, /* a680 */ NULL, /* a700 */ NULL, /* a780 */ NULL, /* a800 */ NULL, /* a880 */ NULL, /* a900 */ NULL, /* a980 */ NULL, /* aa00 */ NULL, /* aa80 */ NULL, /* ab00 */ NULL, /* ab80 */ NULL, /* ac00 */ NULL, /* ac80 */ NULL, /* ad00 */ NULL, /* ad80 */ NULL, /* ae00 */ NULL, /* ae80 */ NULL, /* af00 */ NULL, /* af80 */ NULL, /* b000 */ NULL, /* b080 */ NULL, /* b100 */ NULL, /* b180 */ NULL, /* b200 */ NULL, /* b280 */ NULL, /* b300 */ NULL, /* b380 */ NULL, /* b400 */ NULL, /* b480 */ NULL, /* b500 */ NULL, /* b580 */ NULL, /* b600 */ NULL, /* b680 */ NULL, /* b700 */ NULL, /* b780 */ NULL, /* b800 */ NULL, /* b880 */ NULL, /* b900 */ NULL, /* b980 */ NULL, /* ba00 */ NULL, /* ba80 */ NULL, /* bb00 */ NULL, /* bb80 */ NULL, /* bc00 */ NULL, /* bc80 */ NULL, /* bd00 */ NULL, /* bd80 */ NULL, /* be00 */ NULL, /* be80 */ NULL, /* bf00 */ NULL, /* bf80 */ NULL, /* c000 */ NULL, /* c080 */ NULL, /* c100 */ NULL, /* c180 */ NULL, /* c200 */ NULL, /* c280 */ NULL, /* c300 */ NULL, /* c380 */ NULL, /* c400 */ NULL, /* c480 */ NULL, /* c500 */ NULL, /* c580 */ NULL, /* c600 */ NULL, /* c680 */ NULL, /* c700 */ NULL, /* c780 */ NULL, /* c800 */ NULL, /* c880 */ NULL, /* c900 */ NULL, /* c980 */ NULL, /* ca00 */ NULL, /* ca80 */ NULL, /* cb00 */ NULL, /* cb80 */ NULL, /* cc00 */ NULL, /* cc80 */ NULL, /* cd00 */ NULL, /* cd80 */ NULL, /* ce00 */ NULL, /* ce80 */ NULL, /* cf00 */ NULL, /* cf80 */ NULL, /* d000 */ NULL, /* d080 */ NULL, /* d100 */ NULL, /* d180 */ NULL, /* d200 */ NULL, /* d280 */ NULL, /* d300 */ NULL, /* d380 */ NULL, /* d400 */ NULL, /* d480 */ NULL, /* d500 */ NULL, /* d580 */ NULL, /* d600 */ NULL, /* d680 */ NULL, /* d700 */ NULL, /* d780 */ NULL, /* d800 */ NULL, /* d880 */ NULL, /* d900 */ NULL, /* d980 */ NULL, /* da00 */ NULL, /* da80 */ NULL, /* db00 */ NULL, /* db80 */ NULL, /* dc00 */ NULL, /* dc80 */ NULL, /* dd00 */ NULL, /* dd80 */ NULL, /* de00 */ NULL, /* de80 */ NULL, /* df00 */ NULL, /* df80 */ NULL, /* e000 */ NULL, /* e080 */ NULL, /* e100 */ NULL, /* e180 */ NULL, /* e200 */ NULL, /* e280 */ NULL, /* e300 */ NULL, /* e380 */ NULL, /* e400 */ NULL, /* e480 */ NULL, /* e500 */ NULL, /* e580 */ NULL, /* e600 */ NULL, /* e680 */ NULL, /* e700 */ NULL, /* e780 */ NULL, /* e800 */ NULL, /* e880 */ NULL, /* e900 */ NULL, /* e980 */ NULL, /* ea00 */ NULL, /* ea80 */ NULL, /* eb00 */ NULL, /* eb80 */ NULL, /* ec00 */ NULL, /* ec80 */ NULL, /* ed00 */ NULL, /* ed80 */ NULL, /* ee00 */ NULL, /* ee80 */ NULL, /* ef00 */ NULL, /* ef80 */ NULL, /* f000 */ NULL, /* f080 */ NULL, /* f100 */ NULL, /* f180 */ NULL, /* f200 */ NULL, /* f280 */ NULL, /* f300 */ NULL, /* f380 */ NULL, /* f400 */ NULL, /* f480 */ NULL, /* f500 */ NULL, /* f580 */ NULL, /* f600 */ NULL, /* f680 */ NULL, /* f700 */ NULL, /* f780 */ NULL, /* f800 */ NULL, /* f880 */ NULL, /* f900 */ NULL, /* f980 */ NULL, /* fa00 */ NULL, /* fa80 */ NULL, /* fb00 */ NULL, /* fb80 */ NULL, /* fc00 */ NULL, /* fc80 */ NULL, /* fd00 */ NULL, /* fd80 */ NULL, /* fe00 */ NULL, /* fe80 */ NULL, /* ff00 */ "\x00\x00\x21\x2a\x00\x00\x21\x74\x21\x70\x21\x73\x21\x75\x00\x00\x21\x4a\x21\x4b\x21\x76\x21\x5c\x21\x24\x00\x00\x21\x25\x21\x3f\x23\x30\x23\x31\x23\x32\x23\x33\x23\x34\x23\x35\x23\x36\x23\x37\x23\x38\x23\x39\x21\x27\x21\x28\x21\x63\x21\x61\x21\x64\x21\x29\x21\x77\x23\x41\x23\x42\x23\x43\x23\x44\x23\x45\x23\x46\x23\x47\x23\x48\x23\x49\x23\x4a\x23\x4b\x23\x4c\x23\x4d\x23\x4e\x23\x4f\x23\x50\x23\x51\x23\x52\x23\x53\x23\x54\x23\x55\x23\x56\x23\x57\x23\x58\x23\x59\x23\x5a\x21\x4e\x00\x00\x21\x4f\x21\x30\x21\x32\x21\x2e\x23\x61\x23\x62\x23\x63\x23\x64\x23\x65\x23\x66\x23\x67\x23\x68\x23\x69\x23\x6a\x23\x6b\x23\x6c\x23\x6d\x23\x6e\x23\x6f\x23\x70\x23\x71\x23\x72\x23\x73\x23\x74\x23\x75\x23\x76\x23\x77\x23\x78\x23\x79\x23\x7a\x21\x50\x21\x43\x21\x51\x00\x00\x00\x00\x00\x00\x21\x23\x21\x56\x21\x57\x21\x22\x21\x26\x25\x72\x25\x21\x25\x23\x25\x25\x25\x27\x25\x29\x25\x63\x25\x65\x25\x67\x25\x43\x21\x3c\x25\x22\x25\x24\x25\x26\x25\x28\x25\x2a\x25\x2b\x25\x2d\x25\x2f\x25\x31\x25\x33\x25\x35\x25\x37\x25\x39\x25\x3b\x25\x3d", /* ff00 */ "\x25\x3f\x25\x41\x25\x44\x25\x46\x25\x48\x25\x4a\x25\x4b\x25\x4c\x25\x4d\x25\x4e\x25\x4f\x25\x52\x25\x55\x25\x58\x25\x5b\x25\x5e\x25\x5f\x25\x60\x25\x61\x25\x62\x25\x64\x25\x66\x25\x68\x25\x69\x25\x6a\x25\x6b\x25\x6c\x25\x6d\x25\x6f\x25\x73\x21\x2b\x21\x2c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x21\x31\x00\x00\x21\x6f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" } }, { NULL } }; #define ND16 (sizeof(d16)/sizeof(d16_t)) /* * Initialize or re-initialize the 16-bit display character set. * Returns an index into the d16 table, or -1 for failure. */ int display16_init(char *cset) { int i; for (i = 0; d16[i].cset; i++) { if (!strcasecmp(cset, d16[i].cset)) { return i; } } if (!strcasecmp(cset, "iso10646-1")) { return ISO10646_IX; } return -1; } /* * Map a Unicode character onto the 16-bit display character set. * Returns -1 if there is no mapping. */ int display16_lookup(int d16_ix, ucs4_t ucs4) { int row, col; int ix; /* Handle errors. */ if (d16_ix < 0) { return -1; } /* Handle ISO 10646-1. */ if (d16_ix == ISO10646_IX) { return (int)ucs4; } /* Handle more errors. */ if ((unsigned)d16_ix >= (ND16 - 1)) { return -1; } /* Check for a match in the proper table. */ if (ucs4 > 0xffff) { return -1; } row = (ucs4 >> 7) & 0x1ff; if (d16[d16_ix].u[row] == NULL) { return -1; } col = (ucs4 & 0x7f) * 2; ix = ((d16[d16_ix].u[row][col] & 0xff) << 8) | (d16[d16_ix].u[row][col + 1] & 0xff); if (ix != 0) { return ix; } /* Give up. */ return -1; } suite3270-4.1/x3270/display8.h000066400000000000000000000032401413735575200155270ustar00rootroot00000000000000/* * Copyright (c) 2008-2009, 2014 Paul Mattes. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of Paul Mattes nor his contributors may be used * to endorse or promote products derived from this software without * specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. */ int display8_init(char *cset); int display8_lookup(int d8_ix, ucs4_t ucs4); int display16_init(char *cset); int display16_lookup(int d16_ix, ucs4_t ucs4); suite3270-4.1/x3270/display_charsets.c000066400000000000000000000105161413735575200173320ustar00rootroot00000000000000/* * Copyright (c) 2008-2015, 2019 Paul Mattes. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the names of Paul Mattes nor the names of his contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO * EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * display_charsets.c * Display character set lookup. */ #include "globals.h" #include "display_charsets.h" typedef struct { const char *name; const char *display_charset; } dcs_t; static dcs_t dcs[] = { { "cp037", "3270cg-1a,3270cg-1,iso10646-1,iso8859-1" }, { "cp273", "3270cg-1a,3270cg-1,iso10646-1,iso8859-1" }, { "cp275", "3270cg-1a,3270cg-1,iso10646-1,iso8859-1" }, { "cp277", "3270cg-1a,3270cg-1,iso10646-1,iso8859-1" }, { "cp278", "3270cg-1a,3270cg-1,iso10646-1,iso8859-1" }, { "cp280", "3270cg-1a,3270cg-1,iso10646-1,iso8859-1" }, { "cp284", "3270cg-1a,3270cg-1,iso10646-1,iso8859-1" }, { "cp285", "3270cg-1a,3270cg-1,iso10646-1,iso8859-1" }, { "cp297", "3270cg-1a,3270cg-1,iso10646-1,iso8859-1" }, { "cp424", "3270cg-8,iso10646-1,iso8859-8" }, { "cp500", "3270cg-1a,3270cg-1,iso10646-1,iso8859-1" }, { "cp803", "3270cg-8,iso10646-1,iso-8859-8" }, { "cp870", "iso10646-1,iso8859-2" }, { "cp871", "3270cg-1a,3270cg-1,iso10646-1,iso8859-1" }, { "cp875", "3270cg-7,iso10646-1,iso8859-7" }, { "cp880", "iso10646-1,koi8-r" }, { "cp930", "iso10646-1,jisx0201.1976-0" }, { "cp935", "3270cg-1a,3270cg-1,iso10646-1,iso8859-1" }, { "cp937", "3270cg-1a,3270cg-1,iso10646-1,iso8859-1" }, { "cp939", "iso10646-1,jisx0201.1976-0" }, { "cp1026", "iso10646-1,iso8859-9" }, { "cp1047", "3270cg-1a,3270cg-1,iso10646-1,iso8859-1" }, { "cp1140", "3270cg-1a,3270cg-1,iso10646-1,iso8859-15" }, { "cp1141", "3270cg-1a,3270cg-1,iso10646-1,iso8859-15" }, { "cp1142", "3270cg-1a,3270cg-1,iso10646-1,iso8859-15" }, { "cp1143", "3270cg-1a,3270cg-1,iso10646-1,iso8859-15" }, { "cp1144", "3270cg-1a,3270cg-1,iso10646-1,iso8859-15" }, { "cp1145", "3270cg-1a,3270cg-1,iso10646-1,iso8859-15" }, { "cp1146", "3270cg-1a,3270cg-1,iso10646-1,iso8859-15" }, { "cp1147", "3270cg-1a,3270cg-1,iso10646-1,iso8859-15" }, { "cp1148", "3270cg-1a,3270cg-1,iso10646-1,iso8859-15" }, { "cp1149", "3270cg-1a,3270cg-1,iso10646-1,iso8859-15" }, { "cp1160", "iso10646-1,iso8859-11" }, { "cp1388", "3270cg-1a,3270cg-1,iso10646-1,iso8859-1" }, { "apl", "3270cg-1a,iso10646-1" }, { "bracket", "3270cg-1a,3270cg-1,iso10646-1,iso8859-1" }, { NULL, NULL } }; /** * Return the X11 SBCS display character sets for a given host character set * (code page). * * Does not support aliases. If the user-supplied name is an alias, then the * canonical name must be used instead. * * @param[in] charset_name Canonical chararcter set name * * @return Comma-separated list of display character sets, or NULL if no match * is found. */ const char * lookup_display_charset(const char *charset_name) { int i; for (i = 0; dcs[i].name != NULL; i++) { if (!strcasecmp(charset_name, dcs[i].name)) { return dcs[i].display_charset; } } return NULL; } suite3270-4.1/x3270/display_charsets.h000066400000000000000000000032251413735575200173360ustar00rootroot00000000000000/* * Copyright (c) 2008-2015, Paul Mattes. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the names of Paul Mattes nor the names of his contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO * EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * display_charsets.h * Declarations for display character set lookup. */ const char *lookup_display_charset(const char *charset_name); suite3270-4.1/x3270/display_charsets_dbcs.c000066400000000000000000000057131413735575200203300ustar00rootroot00000000000000/* * Copyright (c) 2008-2012, 2014-2015 Paul Mattes. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the names of Paul Mattes nor the names of his contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO * EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * display_charsets_dbcs.c * DBCS display chararacter set lookup. */ #include "globals.h" #include "display_charsets_dbcs.h" /* * Note: #undef'ing X3270_DBCS disables the ability to configure a DBCS host * codepage, but it does not disable the internal logic that supports DBCS. * Its purpose is to save space in the executable by removing the translation * tables, not by turning the code into #ifdef spaghetti. */ /* * DBCS EBCDIC-to-Unicode translation tables. */ typedef struct { const char *name; const char *display_charset; } dcd_t; static dcd_t dcd[] = { { "cp930", "jisx0208.1983-0,iso10646-1" }, { "cp935", "gb2312.1980-0,iso10646-1" }, { "cp937", "big5-0,iso10646-1" }, { "cp939", "jisx0208.1983-0,iso10646-1" }, { "cp1388", "gb18030.2000-1,iso10646-1" }, { NULL, NULL } }; /** * Return the X11 DBCS display character sets for a given host character set * (code page). * * Does not support aliases. If the user-supplied name is an alias, then the * canonical name must be used instead. * * @param[in] charset_name Canonical chararcter set name * * @return Comma-separated list of display character sets, or NULL if no match * is found. */ const char * lookup_display_charset_dbcs(const char *charset_name) { int i; for (i = 0; dcd[i].name != NULL; i++) { if (!strcasecmp(charset_name, dcd[i].name)) { return dcd[i].display_charset; } } return NULL; } suite3270-4.1/x3270/display_charsets_dbcs.h000066400000000000000000000032571413735575200203360ustar00rootroot00000000000000/* * Copyright (c) 2008-2012, 2014-2015 Paul Mattes. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the names of Paul Mattes nor the names of his contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO * EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * display_charsets_dbcs.h * Declarations for DBCS display chararacter set lookup. */ const char *lookup_display_charset_dbcs(const char *charset_name); suite3270-4.1/x3270/dot.bm000066400000000000000000000003161413735575200147300ustar00rootroot00000000000000#define dot_width 10 #define dot_height 10 static unsigned char dot_bits[] = { 0x55, 0xfd, 0xaa, 0xfc, 0xfd, 0xfc, 0xfe, 0xfc, 0xfd, 0xfc, 0xfe, 0xfc, 0xfd, 0xfc, 0xfe, 0xfc, 0x01, 0xfc, 0x00, 0xfc}; suite3270-4.1/x3270/dot15.bm000066400000000000000000000004231413735575200150750ustar00rootroot00000000000000#define dot15_width 15 #define dot15_height 15 static unsigned char dot15_bits[] = { 0x55, 0x55, 0xaa, 0x2a, 0x55, 0x15, 0xfa, 0x0f, 0xfd, 0x0f, 0xfa, 0x0f, 0xfd, 0x0f, 0xfa, 0x0f, 0xfd, 0x0f, 0xfa, 0x0f, 0xfd, 0x0f, 0xfa, 0x0f, 0x05, 0x00, 0x02, 0x00, 0x01, 0x00}; suite3270-4.1/x3270/dot20.bm000066400000000000000000000007151413735575200150750ustar00rootroot00000000000000#define dot20_width 20 #define dot20_height 20 static unsigned char dot20_bits[] = { 0x55, 0x55, 0x05, 0xaa, 0xaa, 0x02, 0x55, 0x55, 0x01, 0xaa, 0xaa, 0x00, 0xf5, 0xff, 0x00, 0xfa, 0xff, 0x00, 0xf5, 0xff, 0x00, 0xfa, 0xff, 0x00, 0xf5, 0xff, 0x00, 0xfa, 0xff, 0x00, 0xf5, 0xff, 0x00, 0xfa, 0xff, 0x00, 0xf5, 0xff, 0x00, 0xfa, 0xff, 0x00, 0xf5, 0xff, 0x00, 0xfa, 0xff, 0x00, 0x05, 0x00, 0x00, 0x02, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00}; suite3270-4.1/x3270/dryrun.in000077500000000000000000000045351413735575200155070ustar00rootroot00000000000000#!/usr/bin/env sh # Copyright (c) 1995-2009, 2015 Paul Mattes. # All rights reserved. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # * Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # * Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in the # documentation and/or other materials provided with the distribution. # * Neither the name of Paul Mattes nor his contributors may be used # to endorse or promote products derived from this software without # specific prior written permission. # # THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS OR # IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES # OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN # NO EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, # SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED # TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR # PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF # LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING # NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS # SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. # Run x3270 from the current directory # Bomb on any error set -e # Figure out the pathname of the directory dryrun is in. d=`dirname $0` case "$d" in .) d=`pwd` ;; /*) ;; *) d=`pwd`/$d esac # Process the -a option to do autoscale. pgm=x3270 if [ "$1" = "-a" ] then pgm=autoscale shift fi # Say what you're doing set -x # Set up the fonts mkfontdir $d xset +fp $d/ xset fp rehash # Set up the dynamic library path if [ -d /usr/openwin/lib ] then LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/openwin/lib fi if [ -d /usr/ucblib ] then LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/ucblib fi export LD_LIBRARY_PATH # Set up the PATH to include pr3287 and x3270if. export PATH=$d/../pr3287:$d/../x3270if:$PATH # Run x3270, pointing it to the build directory for its configuration files set +e $d/$pgm -xrm "x3270.confDir: $d" "$@" # Clean up xset -fp $d/ xset fp rehash suite3270-4.1/x3270/fb-x3270000066400000000000000000001627341413735575200147320ustar00rootroot00000000000000! ! Copyright (c) 1995-2021 Paul Mattes. ! All rights reserved. ! ! Redistribution and use in source and binary forms, with or without ! modification, are permitted provided that the following conditions are met: ! * Redistributions of source code must retain the above copyright ! notice, this list of conditions and the following disclaimer. ! * Redistributions in binary form must reproduce the above copyright ! notice, this list of conditions and the following disclaimer in the ! documentation and/or other materials provided with the distribution. ! * Neither the names of Paul Mattes nor the names of his contributors ! may be used to endorse or promote products derived from this software ! without specific prior written permission. ! ! THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS OR IMPLIED ! WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF ! MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO ! EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ! SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, ! PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; ! OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, ! WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR ! OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ! ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ! ! x3270 app-defaults file. This file is generally compiled into x3270, rather ! than installed. ! ! This file is in three sections: ! ! (1) User-Modifiable Resources ! Resources that are likeliest to be modified by an end user. ! ! (2) Labels and Messages ! Resources that are likely to be modified for translation into another ! language. ! ! (3) Base-Level Resources ! Resources required for the basic operation of x3270, not for the ! faint-hearted to modify. ! !============================================================================= ! Section 1: User-Modifiable Resources ! ! Resources that are likeliest to be modified by an end user. !============================================================================= ! Color schemes x3270.colorScheme.default: \ black deepSkyBlue red pink \ green turquoise yellow white \ black blue3 orange purple \ paleGreen paleTurquoise2 grey white \ white black dimGrey \ 4 2 1 15 x3270.colorScheme.reverse: \ black blue firebrick pink \ green4 cadetBlue goldenrod black \ black blue3 orange purple \ paleGreen darkTurquoise grey black \ black white dimGrey \ 4 2 1 0 x3270.colorScheme.bright: \ black blue red magenta \ green turquoise yellow white \ black blue3 orange purple \ paleGreen cyan grey white \ white black dimGrey \ 4 2 1 15 x3270.colorScheme.cpe: \ black LightBlue1 PaleVioletRed1 \ pink green turquoise yellow white \ black LightBlue3 orange MediumPurple1 \ paleGreen paleTurquoise2 grey80 white \ white black dimGrey \ 4 2 1 15 x3270.colorScheme.greenScreen: \ green green green green \ green green green green \ green green green green \ green green green green \ white black dimGrey \ 4 15 4 15 ! Color schemes listed on the Options color menu x3270.schemeList: Default 3279: default\n\ Bright: bright\n\ Reverse: reverse\n\ Green Screen: greenScreen ! Character sets listed on the Options menu x3270.charsetList: U.S. English (CP 037): us-intl\n\ Bracket (CP 037, modified): bracket\n\ Euro>U.S. English (CP 1140): us-euro\n\ Euro>Belgian (CP 1148): belgian-euro\n\ Euro>Finnish (CP 1143): finnish-euro\n\ Euro>French (CP 1147): french-euro\n\ Euro>German (CP 1141): german-euro\n\ Euro>Icelandic (CP 1149): icelandic-euro\n\ Euro>Italian (CP 1144): italian-euro\n\ Euro>Norwegian (CP 1142): norwegian-euro\n\ Euro>Spanish (CP 1145): spanish-euro\n\ Euro>United Kingdom (CP 1146): uk-euro\n\ Belgian (CP 500): belgian\n\ Brazilian (CP 275): brazilian\n\ #ifdef X3270_DBCS Chinese Simplified (CP 935): simplified-chinese\n\ Chinese GB 18030 (CP 1388): chinese-gb18030\n\ Chinese Traditional (CP 937): traditional-chinese\n\ #endif Finnish (CP 278): finnish\n\ French (CP 297): french\n\ German (CP 273): german\n\ Greek (CP 875): greek\n\ Hebrew (CP 424): hebrew\n\ Icelandic (CP 871): icelandic\n\ Italian (CP 280): italian\n\ #ifdef X3270_DBCS Japanese w/Kana (CP 930): japanese-kana\n\ Japanese w/Latin (CP 939): japanese-latin\n\ #endif Norwegian (CP 277): norwegian\n\ Open Systems (CP 1047): cp1047\n\ Polish (CP 870): cp870\n\ Russian (CP 880): russian\n\ Slovenian (CP 870): cp870\n\ Spanish (CP 284): spanish\n\ Thai (CP 1160): thai\n\ Turkish (CP 1026): turkish\n\ United Kingdom (CP 285): uk\n ! Fonts listed on the Options menu and for screen resizing x3270.emulatorFontList.3270cg-1a,3270cg-1,iso10646-1,iso8859-1: \ 3270 Font (14 point): #resize 3270\n\ 8-point Font: #resize 3270gt8\n\ 12-point Font: #resize 3270-12\n\ 16-point Font: #resize 3270gt16\n\ 20-point Font: #resize 3270-20\n\ 24-point Font: #resize 3270gt24\n\ 32-point Font: #resize 3270gt32 x3270.emulatorFontList.3270cg-1a,3270cg-1,iso10646-1,iso8859-15: \ 3270 Font (14 point): #resize 3270\n\ 8-point Font: #resize 3270gt8\n\ 12-point Font: #resize 3270-12\n\ 16-point Font: #resize 3270gt16\n\ 20-point Font: #resize 3270-20\n\ 24-point Font: #resize 3270gt24\n\ 32-point Font: #resize 3270gt32 x3270.emulatorFontList.3270cg-1a,iso10646-1: 3270 x3270.emulatorFontList.3270cg-1a,3270cg-1,iso10646-1,iso8859-1+gb2312.1980-0,iso10646-1: \ 14-point 3270: 3270+-isas-song ti-medium-r-normal--16-160-72-72-c-160-gb2312.1980-0\n\ 20-point 3270: 3270-20+-isas-song ti-medium-r-normal--16-160-72-72-c-160-gb2312.1980-0\n\ 8x16: 8x16+-isas-song ti-medium-r-normal--16-160-72-72-c-160-gb2312.1980-0\n\ 12x24: 12x24+-isas-song ti-medium-r-normal--24-240-72-72-c-240-gb2312.1980-0 x3270.emulatorFontList.iso10646-1,jisx0201.1976-0+jisx0208.1983-0,iso10646-1: \ 14-point: -misc-fixed-medium-r-normal--14-130-75-75-c-70-jisx0201.1976-0+-misc-fixed-medium-r-normal--14-130-75-75-c-140-jisx0208.1983-0\n\ 16-point: -sony-fixed-medium-r-normal--16-150-75-75-c-80-jisx0201.1976-0+-jis-fixed-medium-r-normal--16-150-75-75-c-160-jisx0208.1983-0\n\ 18-point: -sony-fixed-medium-r-normal--16-150-75-75-c-80-jisx0201.1976-0+-misc-fixed-medium-r-normal-ja-18-120-100-100-c-180-iso10646-1\n\ 24-point: -sony-fixed-medium-r-normal--24-230-75-75-c-120-jisx0201.1976-0+-jis-fixed-medium-r-normal--24-230-75-75-c-240-jisx0208.1983-0 x3270.emulatorFontList.3270cg-1a,3270cg-1,iso10646-1,iso8859-1+big5-0,iso10646-1: fixed+-wenquanyi-wenquanyi bitmap song-bold-r-normal--13-130-75-75-p-80-iso10646-1 x3270.printWindowCommand: xwd -id %d | xpr | lpr x3270.traceCommand: tail -f ! Translation table for the '@server' pseudo-keymap, which is the keymap ! you get by default (in addition to the 'base' keymap, below). Maps server ! vendor strings to keymap names. x3270.serverKeymapList: \ Sun Microsystems, Inc.: sun_k5\n\ Hewlett-Packard Company: hp-k1\n ! Keymaps (keyboard and mouse mappings) ! ! Base keymap: What you get by default, in both 3270 and NVT modes. Any other ! user-specified keymap is logically added to this keymap. ! *WARNING* Do not change this resource if all you want to do is to define a ! keymap! x3270.keymap.base: \ :Multi_key: Compose()\n\ Ctrl: HandleMenu(fileMenu)\n\ Ctrl: HandleMenu(optionsMenu)\n\ Ctrl: HandleMenu(hostMenu,macrosMenu)\n\ : SelectDown()\n\ ~Shift: SelectMotion()\n\ : ignore()\n\ : ignore()\n\ : insert-selection(PRIMARY)\n\ : start-extend()\n\ : select-extend()\n\ ~Shift: SelectUp(PRIMARY)\n\ ~Shift: SelectUp(PRIMARY)\n\ ShiftInsert: insert-selection(PRIMARY)\n\ :Insert: Toggle(insertMode)\n\ ShiftUp: KybdSelect(Up,PRIMARY)\n\ ShiftDown: KybdSelect(Down,PRIMARY)\n\ ShiftLeft: KybdSelect(Left,PRIMARY)\n\ ShiftRight: KybdSelect(Right,PRIMARY)\n\ ShiftF1: PF(13)\n\ ShiftF2: PF(14)\n\ ShiftF3: PF(15)\n\ ShiftF4: PF(16)\n\ ShiftF5: PF(17)\n\ ShiftF6: PF(18)\n\ ShiftF7: PF(19)\n\ ShiftF8: PF(20)\n\ ShiftF9: PF(21)\n\ ShiftF10: PF(22)\n\ ShiftF11: PF(23)\n\ ShiftF12: PF(24)\n\ MetaF1: PF(13)\n\ AltF1: PF(13)\n\ MetaF2: PF(14)\n\ AltF2: PF(14)\n\ MetaF3: PF(15)\n\ AltF3: PF(15)\n\ MetaF4: PF(16)\n\ AltF4: PF(16)\n\ MetaF5: PF(17)\n\ AltF5: PF(17)\n\ MetaF6: PF(18)\n\ AltF6: PF(18)\n\ MetaF7: PF(19)\n\ AltF7: PF(19)\n\ MetaF8: PF(20)\n\ AltF8: PF(20)\n\ MetaF9: PF(21)\n\ AltF9: PF(21)\n\ MetaF10: PF(22)\n\ AltF10: PF(22)\n\ MetaF11: PF(23)\n\ AltF11: PF(23)\n\ MetaF12: PF(24)\n\ AltF12: PF(24)\n\ :F1: PF(1)\n\ :F2: PF(2)\n\ :F3: PF(3)\n\ :F4: PF(4)\n\ :F5: PF(5)\n\ :F6: PF(6)\n\ :F7: PF(7)\n\ :F8: PF(8)\n\ :F9: PF(9)\n\ :F10: PF(10)\n\ :F11: PF(11)\n\ :F12: PF(12)\n\ :Print: PrintText()\n\ Altq: Quit()\n\ :dead_acute: Compose() Key(apostrophe)\n\ :dead_grave: Compose() Key(grave)\n\ :dead_circumflex: Compose() Key(asciicircum)\n\ :dead_tilde: Compose() Key(asciitilde)\n\ :dead_diaeresis: Compose() Key(quotedbl)\n\ :Prior: Scroll(backward)\n\ :Next: Scroll(forward)\n\ ShiftEscape: TemporaryKeymap(apl) TemporaryComposeMap(apl) Toggle(AplMode)\n ! ! Base keymap for 3270 mode. These mappings are added to the base keymap, ! but only when in 3270 mode. ! These were originally part of the base keymap, but were moved here, because ! they were no-ops in NVT mode, or interfered with NVT-mode data entry. ! ! Note that as yet, there is no x3270.keymap.base.nvt, which would define the ! base keymap extensions for NVT mode. ! x3270.keymap.base.3270: #override \ :Ctrl Shift: MouseSelect()\n\ Shift: MoveCursor()\n\ ShiftReturn: Newline()\n\ :Return: Enter()\n\ :Linefeed: Newline()\n\ :BackSpace: Erase()\n\ ShiftTab: BackTab()\n\ :MetaLeft: PreviousWord()\n\ :AltLeft: PreviousWord()\n\ :MetaRight: NextWord()\n\ :AltRight: NextWord()\n\ :Meta1: PA(1)\n\ :Alt1: PA(1)\n\ :Meta2: PA(2)\n\ :Alt2: PA(2)\n\ :Meta3: PA(3)\n\ :Alt3: PA(3)\n\ Metaa: Attn()\n\ Alta: Attn()\n\ Metab: PrintWindow()\n\ Altb: PrintWindow()\n\ Metac: Clear()\n\ Altc: Clear()\n\ Metad: Delete()\n\ Altd: Delete()\n\ Metae: EraseEOF()\n\ Alte: EraseEOF()\n\ Metah: Home()\n\ Alth: Home()\n\ Metai: Set(insertMode,true)\n\ Alti: Set(insertMode,true)\n\ Metal: Redraw()\n\ Altl: Redraw()\n\ Metap: PrintText()\n\ Altp: PrintText()\n\ Metar: Reset()\n\ Altr: Reset()\n\ Metau: Unselect()\n\ Altu: Unselect()\n\ Ctrla: SelectAll(PRIMARY)\n\ Ctrlc: set-select(CLIPBOARD)\n\ Ctrlu: DeleteField()\n\ Ctrlv: insert-selection(CLIPBOARD)\n\ Ctrlw: DeleteWord()\n\ Ctrlx: Cut(CLIPBOARD) ! Keymap that restores the old (pre 3.3) mouse-click behavior. x3270.keymap.oldclick: #override\n\ Ctrl: HandleMenu(fileMenu)\n\ Ctrl: HandleMenu(optionsMenu)\n\ Ctrl: HandleMenu(hostMenu,macrosMenu)\n\ : select-start()\n\ ~Shift: select-extend()\n\ : ignore()\n\ : ignore()\n\ : insert-selection(PRIMARY)\n\ : start-extend()\n\ : select-extend()\n\ ~Shift: select-end(PRIMARY) x3270.keymap.oldclick.3270: #override\n\ :Ctrl Shift: MouseSelect()\n\ Shift: MoveCursor() ! Support for right-to-left languages. x3270.keymap.righttoleft: #override \ Metaf: Toggle(rightToLeftMode)\n\ Altf: Toggle(rightToLeftMode)\n\ Metav: Toggle(reverseInputMode)\n\ Altv: Toggle(reverseInputMode) ! ! Start of keyboard-specific mappings. ! ! Sun Type 5 keyboard map. Not compatible with earlier Type 3 and Type 4 ! keymaps, but does a better job of mapping intuitive functions to the ! existing key labels, and has fewer surprises. x3270.keymap.sun_k5: \ Shift0x1005ff10: PF(23)\n\ Shift0x1005ff11: PF(24)\n\ :0x1005ff10: PF(11)\n\ :0x1005ff11: PF(12)\n\ ~@Num_LockF27: Home()\n\ ~@Num_LockF33: FieldEnd()\n\ :F18: insert-selection(PRIMARY)\n\ ShiftF22: SysReq()\n\ :F22: PrintText()\n\ KP_Enter: Newline()\n ! Sun Type 4 keyboard map, backwards-compatible with earlier versions of x3270. x3270.keymap.sun_k4: \ Shift0x1005ff10: PF(23)\n\ Shift0x1005ff11: PF(24)\n\ :0x1005ff10: PF(11)\n\ :0x1005ff11: PF(12)\n\ :KP_1: Key(1)\n\ :KP_2: Key(2)\n\ :KP_3: Key(3)\n\ :KP_4: Key(4)\n\ :KP_5: Key(5)\n\ :KP_6: Key(6)\n\ :KP_7: Key(7)\n\ :KP_8: Key(8)\n\ :KP_9: Key(9)\n\ :KP_0: Key(0)\n\ :KP_Decimal: Key(.)\n\ :F18: insert-selection(PRIMARY)\n\ :F19: SysReq()\n\ :F20: FieldMark()\n\ :F21: PA(1)\n\ :F22: PA(2)\n\ :F23: Dup()\n\ :F24: Reset()\n\ :F25: EraseEOF()\n\ :F26: EraseInput()\n\ :F27: Clear()\n\ :F29: Redraw()\n\ :F31: Home()\n\ :KP_Enter: Newline()\n\ :F35: Delete()\n ! Sun Type 3 keyboard. x3270.keymap.sun_k3: \ ShiftF21: PF(22)\n\ ShiftF22: PF(23)\n\ ShiftF23: PF(24)\n\ :MetaF21: PA(1)\n\ :MetaF22: PA(2)\n\ :MetaF23: Dup()\n\ :F19: SysReq()\n\ :0x0: FieldMark()\n\ :F21: PF(10)\n\ :F22: PF(11)\n\ :F23: PF(12)\n\ :F24: Reset()\n\ :F25: EraseEOF()\n\ :F26: EraseInput()\n\ :F27: Clear()\n\ :F31: Home()\n\ :F29: Redraw()\n\ :KP_Enter: Newline()\n\ :F35: Delete()\n x3270.keymap.ncd: \ :F13: Dup()\n\ :Linefeed: Dup()\n\ :F14: FieldMark()\n\ :Break: FieldMark()\n\ :Home: Home()\n\ :F17: Home()\n\ :End: EraseEOF()\n\ :F15: Reset()\n\ :Prior: Reset()\n\ :F16: Newline()\n\ :Next: Newline()\n\ :KP_Add: EraseInput()\n\ :Num_Lock: PF(13)\n\ :KP_Space: PF(13)\n\ :KP_Divide: PF(14)\n\ :KP_Multiply: PF(15)\n\ :KP_7: PF(16)\n\ :KP_8: PF(17)\n\ :KP_9: PF(18)\n\ :KP_4: PF(19)\n\ :KP_5: PF(20)\n\ :KP_6: PF(21)\n\ :KP_1: PF(22)\n\ :KP_2: PF(23)\n\ :KP_3: PF(24)\n\ :KP_Subtract: SysReq()\n\ :KP_0: PA(2)\n\ :KP_Decimal: PA(1)\n\ :KP_Enter: Clear()\n x3270.keymap.hp-k1: \ :KP_Tab: BackTab()\n\ :KP_Enter: Home()\n\ :KP_Separator: Delete()\n\ ShiftDelete: Delete()\n\ :Menu: EraseEOF()\n\ :KP_Multiply: PF(13)\n\ :KP_Divide: PF(14)\n\ :KP_Add: PF(15)\n\ :KP_7: PF(16)\n\ :KP_8: PF(17)\n\ :KP_9: PF(18)\n\ :KP_4: PF(19)\n\ :KP_5: PF(20)\n\ :KP_6: PF(21)\n\ :KP_1: PF(22)\n\ :KP_2: PF(23)\n\ :KP_3: PF(24)\n\ :KP_0: PA(2)\n\ :KP_Decimal: PA(1)\n ! Keymap for HP-PC101 workstation keyboard, Chris P-E x3270.keymap.hp-pc: \ :KP_Subtract: Compose()\n\ :KP_Enter: Enter()\n\ :Return: Newline()\n\ !F1: PF(1)\n\ !F2: PF(2)\n\ !F3: PF(3)\n\ !F4: PF(4)\n\ !F5: PF(5)\n\ !F6: PF(6)\n\ !F7: PF(7)\n\ !F8: PF(8)\n\ !F9: PF(9)\n\ !F10: PF(10)\n\ !F11: PF(11)\n\ !F12: PF(12)\n\ !ShifthpSystem: PF(13)\n\ !ShiftKP_Divide: PF(14)\n\ !ShiftKP_Multiply: PF(15)\n\ !ShiftKP_7: PF(16)\n\ !ShiftKP_8: PF(17)\n\ !ShiftKP_9: PF(18)\n\ !ShiftKP_4: PF(19)\n\ !ShiftKP_5: PF(20)\n\ !ShiftKP_6: PF(21)\n\ !ShiftKP_1: PF(22)\n\ !ShiftKP_2: PF(23)\n\ !ShiftKP_3: PF(24)\n\ !hpSystem: PF(1)\n\ !KP_Divide: PF(2)\n\ !KP_Multiply: PF(3)\n\ !KP_7: PF(4)\n\ !KP_8: PF(5)\n\ !KP_9: PF(6)\n\ !KP_4: PF(7)\n\ !KP_5: PF(8)\n\ !KP_6: PF(9)\n\ !KP_1: PF(10)\n\ !KP_2: PF(11)\n\ !KP_3: PF(12)\n\ !Break: Reset()\n\ !ShiftBreak: Attn()\n\ !MetaBreak: SysReq()\n\ !Prior: Dup()\n\ !Next: FieldMark()\n\ !Select: EraseEOF()\n\ !MetahpInsertChar: PA(1)\n\ !MetaHome: PA(2)\n\ !MetaPrior: PA(3)\n\ !hpInsertChar: Set(insertMode,true)\n\ !hpDeleteChar: Delete()\n\ !ShiftMenu: PrintWindow()\n\ !Menu: PrintText()\n ! Keymap for IBM X Terminal, Allan L. Bazinet x3270.keymap.ibm-xterm: \ :Execute: Enter()\n\ !Pause: Clear()\n\ !BackSpace: BackSpace() Delete()\n\ !End: FieldEnd()\n\ !Altc: Clear()\n\ !AltPrint: SysReq()\n\ !CtrlHome: EraseInput()\n\ !CtrlEnd: EraseEOF()\n\ !ShiftTab: BackTab()\n\ :KP_Subtract: PA(1)\n\ :KP_Add: PA(2)\n\ :KP_Enter: Enter()\n\ :Prior: PA(1)\n\ :Next: PA(2)\n\ :Escape: Reset()\n\ :Control_L: Reset()\n\ :Insert: Set(insertMode,true)\n\ !ShiftRight: Right2()\n\ !ShiftLeft: Left2()\n ! Keymap for common 3270 functions on a PC keyboard, from Richard Lennox. x3270.keymap.rlx: #override \ Prior: PF(7)\n\ Next: PF(8)\n\ Control_R: Enter()\n\ Return: Newline()\n\ Pause: Clear()\n\ ShiftEscape: Attn()\n\ ShiftLeft: PreviousWord()\n\ ShiftRight: NextWord()\n\ CtrlLeft: PreviousWord()\n\ CtrlRight: NextWord()\n\ ShiftEnd: EraseEOF()\n\ End: FieldEnd() ! Keymap modifier for OpenWindows (makes button 2 the extend key; defines the ! Paste and Cut keys; uses CLIPBOARD). x3270.keymap.ow: #override \ ~Shift: select-start()\n\ ~Shift: select-extend()\n\ : start-extend()\n\ : select-extend()\n\ : ignore()\n\ : ignore()\n\ : insert-selection(CLIPBOARD,PRIMARY)\n\ : select-end(PRIMARY)\n\ :F16: set-select(CLIPBOARD)\n\ ShiftF18: insert-selection(PRIMARY)\n\ :F18: insert-selection(CLIPBOARD,PRIMARY)\n\ :F20: set-select(CLIPBOARD) Cut()\n ! APL keymap modifier. x3270.keymap.apl: #override \ :asciitilde: Key(apl_tilde)\n\ :Altgrave: Key(apl_diamond)\n\ :Metagrave: Key(apl_diamond)\n\ :Alt1: Key(apl_diaeresis)\n\ :Meta1: Key(apl_diaeresis)\n\ :Alt!: Key(apl_downtackup)\n\ :Meta!: Key(apl_downtackup)\n\ :Alt2: Key(apl_overbar)\n\ :Meta2: Key(apl_overbar)\n\ :Alt@: Key(apl_deltilde)\n\ :Meta@: Key(apl_deltilde)\n\ :Alt3: Key(less)\n\ :Meta3: Key(less)\n\ :Alt#: Key(apl_delstile)\n\ :Meta#: Key(apl_delstile)\n\ :Alt4: Key(apl_notgreater)\n\ :Meta4: Key(apl_notgreater)\n\ :Alt$: Key(apl_deltastile)\n\ :Meta$: Key(apl_deltastile)\n\ :Alt5: Key(equal)\n\ :Meta5: Key(equal)\n\ :Alt%: Key(apl_circlestile)\n\ :Meta%: Key(apl_circlestile)\n\ :Alt6: Key(apl_notless)\n\ :Meta6: Key(apl_notless)\n\ :Alt^: Key(apl_circleslope)\n\ :Meta^: Key(apl_circleslope)\n\ :Alt7: Key(greater)\n\ :Meta7: Key(greater)\n\ :Alt&: Key(apl_circlebar)\n\ :Meta&: Key(apl_circlebar)\n\ :Alt8: Key(apl_notequal)\n\ :Meta8: Key(apl_notequal)\n\ :Alt*: Key(apl_circlestar)\n\ :Meta*: Key(apl_circlestar)\n\ :Alt9: Key(apl_downcaret)\n\ :Meta9: Key(apl_downcaret)\n\ :Alt(: Key(apl_downcarettilde)\n\ :Meta(: Key(apl_downcarettilde)\n\ :Alt0: Key(apl_upcaret)\n\ :Meta0: Key(apl_upcaret)\n\ :Alt): Key(apl_upcarettilde)\n\ :Meta): Key(apl_upcarettilde)\n\ :Altminus: Key(apl_multiply)\n\ :Metaminus: Key(apl_multiply)\n\ :Altunderscore: Key(apl_quotedot)\n\ :Metaunderscore: Key(apl_quotedot)\n\ :Alt=: Key(apl_divide)\n\ :Meta=: Key(apl_divide)\n\ :Alt+: Key(apl_quaddivide)\n\ :Meta+: Key(apl_quaddivide)\n\ :Altq: Key(question)\n\ :Metaq: Key(question)\n\ :AltQ: Key(apl_Qunderbar)\n\ :MetaQ: Key(apl_Qunderbar)\n\ :Altw: Key(apl_omega)\n\ :Metaw: Key(apl_omega)\n\ :AltW: Key(apl_Wunderbar)\n\ :MetaW: Key(apl_Wunderbar)\n\ :Alte: Key(apl_epsilon)\n\ :Metae: Key(apl_epsilon)\n\ :AltE: Key(apl_Eunderbar)\n\ :MetaE: Key(apl_Eunderbar)\n\ :Altr: Key(apl_rho)\n\ :Metar: Key(apl_rho)\n\ :AltR: Key(apl_Runderbar)\n\ :MetaR: Key(apl_Runderbar)\n\ :Altt: Key(apl_tilde)\n\ :Metat: Key(apl_tilde)\n\ :AltT: Key(apl_Tunderbar)\n\ :MetaT: Key(apl_Tunderbar)\n\ :Alty: Key(apl_uparrow)\n\ :Metay: Key(apl_uparrow)\n\ :AltY: Key(apl_Yunderbar)\n\ :MetaY: Key(apl_Yunderbar)\n\ :Altu: Key(apl_downarrow)\n\ :Metau: Key(apl_downarrow)\n\ :AltU: Key(apl_Uunderbar)\n\ :MetaU: Key(apl_Uunderbar)\n\ :Alti: Key(apl_iota)\n\ :Metai: Key(apl_iota)\n\ :AltI: Key(apl_Iunderbar)\n\ :MetaI: Key(apl_Iunderbar)\n\ :Alto: Key(apl_circle)\n\ :Metao: Key(apl_circle)\n\ :AltO: Key(apl_Ounderbar)\n\ :MetaO: Key(apl_Ounderbar)\n\ :Altp: Key(asterisk)\n\ :Metap: Key(asterisk)\n\ :AltP: Key(apl_Punderbar)\n\ :MetaP: Key(apl_Punderbar)\n\ :Altbracketleft: Key(apl_leftarrow)\n\ :Metabracketleft: Key(apl_leftarrow)\n\ :bracketleft: Key(apl_bracketleft)\n\ :Altbraceleft: Key(apl_quadquote)\n\ :Metabraceleft: Key(apl_quadquote)\n\ :Altbracketright: Key(apl_rightarrow)\n\ :Metabracketright: Key(apl_rightarrow)\n\ :bracketright: Key(apl_bracketright)\n\ :Altbackslash: Key(apl_righttack)\n\ :Metabackslash: Key(apl_righttack)\n\ :Altbar: Key(apl_lefttack)\n\ :Metabar: Key(apl_lefttack)\n\ :backslash: Key(apl_slope)\n\ :bar: Key(apl_stile)\n\ :Alta: Key(apl_alpha)\n\ :Metaa: Key(apl_alpha)\n\ :AltA: Key(apl_Aunderbar)\n\ :MetaA: Key(apl_Aunderbar)\n\ :Alts: Key(apl_upstile)\n\ :Metas: Key(apl_upstile)\n\ :AltS: Key(apl_Sunderbar)\n\ :MetaS: Key(apl_Sunderbar)\n\ :Altd: Key(apl_downstile)\n\ :Metad: Key(apl_downstile)\n\ :AltD: Key(apl_Dunderbar)\n\ :MetaD: Key(apl_Dunderbar)\n\ :Altf: Key(underscore)\n\ :Metaf: Key(underscore)\n\ :AltF: Key(apl_Funderbar)\n\ :MetaF: Key(apl_Funderbar)\n\ :Altg: Key(apl_del)\n\ :Metag: Key(apl_del)\n\ :AltG: Key(apl_Gunderbar)\n\ :MetaG: Key(apl_Gunderbar)\n\ :Alth: Key(apl_delta)\n\ :Metah: Key(apl_delta)\n\ :AltH: Key(apl_Hunderbar)\n\ :MetaH: Key(apl_Hunderbar)\n\ :Altj: Key(apl_jot)\n\ :Metaj: Key(apl_jot)\n\ :AltJ: Key(apl_Junderbar)\n\ :MetaJ: Key(apl_Junderbar)\n\ :Altk: Key(apostrophe)\n\ :Metak: Key(apostrophe)\n\ :AltK: Key(apl_Kunderbar)\n\ :MetaK: Key(apl_Kunderbar)\n\ :Altl: Key(apl_quad)\n\ :Metal: Key(apl_quad)\n\ :AltL: Key(apl_Lunderbar)\n\ :MetaL: Key(apl_Lunderbar)\n\ :Altsemicolon: Key(apl_downtackjot)\n\ :Metasemicolon: Key(apl_downtackjot)\n\ :Altcolon: Key(apl_equalunderbar)\n\ :Metacolon: Key(apl_equalunderbar)\n\ :Altapostrophe: Key(apl_uptackjot)\n\ :Metaapostrophe: Key(apl_uptackjot)\n\ :Altz: Key(apl_leftshoe)\n\ :Metaz: Key(apl_leftshoe)\n\ :AltZ: Key(apl_Zunderbar)\n\ :MetaZ: Key(apl_Zunderbar)\n\ :Altx: Key(apl_rightshoe)\n\ :Metax: Key(apl_rightshoe)\n\ :AltX: Key(apl_Xunderbar)\n\ :MetaX: Key(apl_Xunderbar)\n\ :Altc: Key(apl_upshoe)\n\ :Metac: Key(apl_upshoe)\n\ :AltC: Key(apl_Cunderbar)\n\ :MetaC: Key(apl_Cunderbar)\n\ :Altv: Key(apl_downshoe)\n\ :Metav: Key(apl_downshoe)\n\ :AltV: Key(apl_Vunderbar)\n\ :MetaV: Key(apl_Vunderbar)\n\ :Altb: Key(apl_downtack)\n\ :Metab: Key(apl_downtack)\n\ :AltB: Key(apl_Bunderbar)\n\ :MetaB: Key(apl_Bunderbar)\n\ :Altn: Key(apl_uptack)\n\ :Metan: Key(apl_uptack)\n\ :AltN: Key(apl_Nunderbar)\n\ :MetaN: Key(apl_Nunderbar)\n\ :Altm: Key(apl_stile)\n\ :Metam: Key(apl_stile)\n\ :AltM: Key(apl_Munderbar)\n\ :MetaM: Key(apl_Munderbar)\n\ :Altcomma: Key(apl_upshoejot)\n\ :Metacomma: Key(apl_upshoejot)\n\ :Altless: Key(apl_commabar)\n\ :Metaless: Key(apl_commabar)\n\ :Alt.: Key(apl_slopebar)\n\ :Meta.: Key(apl_slopebar)\n\ :Altgreater: Key(apl_diaeresisdot)\n\ :Metagreater: Key(apl_diaeresisdot)\n\ :Alt/: Key(apl_slashbar)\n\ :Meta/: Key(apl_slashbar)\n ! ! Keymap for the "not" key, assumed to be above the "6" key on U.S. ! keyboards. This used to be part of the 3270 base keymap, but does not ! work properly on non-U.S. keyboards. x3270.keymap.not.3270: \ :asciicircum: Key(notsign) ! Helpful modifier to disply the translation table. x3270.keymap.t: \ Metat: XtDisplayTranslations()\n\ Altt: XtDisplayTranslations()\n ! International keymap modifiers. x3270.keymap.finnish7: \ :bracketleft: Key("adiaeresis")\n\ :bracketright: Key("aring")\n\ :backslash: Key("odiaeresis")\n\ :braceleft: Key("Adiaeresis")\n\ :braceright: Key("Aring")\n\ :bar: Key("Odiaeresis")\n x3270.keymap.norwegian7: \ :bracketleft: Key("ae")\n\ :backslash: Key("oslash")\n\ :bracketright: Key("aring")\n\ :braceleft: Key("AE")\n\ :bar: Key("Ooblique")\n\ :braceright: Key("Aring")\n\ :!Metau: Key("udiaeresis")\n\ :dollar: Key("currency")\n\ :at: Key("backslash")\n ! "Old" Norwegian keymap, compatible with older versions of x3270. x3270.keymap.oldnorwegian7: \ :bracketleft: Key("AE")\n\ :bracketright: Key("Aring")\n\ :backslash: Key("Ooblique")\n\ :braceleft: Key("ae")\n\ :braceright: Key("aring")\n\ :bar: Key("oslash")\n ! German keymap courtesy of Karlheinz Kandler x3270.keymap.german7: \ :bracketleft: Key("adiaeresis")\n\ :bracketright: Key("udiaeresis")\n\ :backslash: Key("odiaeresis")\n\ :braceleft: Key("Adiaeresis")\n\ :braceright: Key("Udiaeresis")\n\ :bar: Key("Odiaeresis")\n\ :asciicircum: Key("^")\n\ :asciitilde: Key("ssharp")\n\ :at: Key("section")\n ! Keymap modifier for RS/6000s with French AZERTY keyboards, which allows ! the diaeresis and circumflex keys to work intuitively (press diaereses, ! press "a", get "adiaeresis, etc.) x3270.keymap.fr6k: \ Shiftdead_diaeresis: Compose() Key(quotedbl)\n\ :dead_circumflex: Compose() Key(asciicircum)\n ! Icelandic keymap, courtesy of Rikhardur Egilsson x3270.keymap.icelandic: \ :dead_acute: Compose() Key(apostrophe)\n ! !============================================================================= ! Section 2: Labels and Messages ! ! These are resources that are likely to be modified for translation ! into another language. !============================================================================= ! x3270.errorPopup.title: x3270 Error x3270.errorPopup*cancelButton.label: Exit x3270.printerErrorPopup.title: x3270 Printer Error x3270.childErrorPopup.title: x3270 Child Process Error x3270.passwordPopup.title: x3270 Password x3270.infoPopup.title: x3270 Information x3270.printerInfoPopup.title: x3270 Printer Information x3270.childInfoPopup.title: x3270 Child Process Information x3270.connectPopup.title: x3270 Connect x3270.connectPopup.dialog.label: Enter Hostname: [L:][Y:][A:][lu@]host[:port][=accept] x3270.fontPopup.title: x3270 Font x3270.fontPopup.dialog.label: Enter Font Name x3270.keymapPopup.title: x3270 Keymap x3270.keymapPopup.dialog.label: Enter Keymap Name x3270.oversizePopup.title: x3270 Oversize x3270.oversizePopup.dialog.label: Enter Dimensions (cols x rows) x3270.oversizePopup*confirmButton.label: Resize x3270.keypadPopup.title: x3270 Keypad x3270.printWindowPopup.title: x3270 Window Print x3270.printWindowPopup.dialog.label: Enter Print Command x3270.printWindowPopup*confirmButton.label: Print x3270.passwordPopup.dialog.label: Enter Private Key Password #ifdef COLOR x3270.passwordPopup.dialog*value*foreground: lavender #else x3270.passwordPopup.dialog*value*foreground: white x3270.passwordPopup.dialog*value*background: white #endif ! (COLOR) x3270.tracePopup.title: x3270 Tracing x3270.tracePopup.dialog.label: Enter Trace File Name x3270.tracePopup*confirmButton.label: Trace x3270.screenTracePopup.title: x3270 Screen Save x3270.screenTracePopup*continuously.label: Continuously x3270.screenTracePopup*once.label: Once x3270.screenTracePopup*file.label: To File x3270.screenTracePopup*printer.label: To Printer x3270.screenTracePopup*text.label: Text x3270.screenTracePopup*html.label: HTML x3270.screenTracePopup*rtf.label: RichText x3270.screenTracePopup*fileName.label: File Name x3270.screenTracePopup*printCommand.label: Printer Command x3270.saveOptionsPopup.title: x3270 Save Changed Options x3270.saveOptionsPopup.dialog.label: Enter Profile/Session File Name x3270.saveOptionsPopup*confirmButton.label: Save x3270.aboutCopyrightPopup.title: x3270 Copyright x3270.aboutConfigPopup.title: x3270 Configuration x3270.aboutStatusPopup.title: x3270 Connection Status x3270.connectPopup*confirmButton.label: Connect x3270.fontPopup*confirmButton.label: Select Font x3270.keymapPopup*confirmButton.label: Select Keymap x3270.ftPopup.title: x3270 File Transfer x3270.ftProgressPopup.title: x3270 File Transfer x3270.ftOverwritePopup.title: x3270 File Transfer x3270.idlePopup.title: x3270 Idle Command x3270.kmPopup.title: x3270 Keymap x3270*confirmButton.label: OK x3270.printerErrorPopup*cancelButton.label: Abort Printer x3270.printerInfoPopup*cancelButton.label: Abort Printer x3270.childErrorPopup*cancelButton.label: Discard Output x3270.childInfoPopup*cancelButton.label: Discard Output x3270*cancelButton.label: Cancel x3270*helpOption.label: Help x3270*aboutOption.label: About x3270... x3270*aboutCopyright.label: Copyright x3270*aboutConfig.label: Configuration x3270*aboutStatus.label: Connection Status x3270*ftOption.label: File Transfer... x3270*printerOption.label: Printer Session x3270*assocButton.label: Start, associate with current LU x3270*luButton.label: Start, specific LU... x3270*printerOffButton.label: Stop Printer x3270*abortScriptOption.label: Abort Scripts/Macros/Strings x3270*disconnectOption.label: Disconnect x3270*exitOption.label: Exit x3270 x3270*exitReallyOption.label: Disconnect and Exit x3270*printWindowOption.label: Print Window Bitmap x3270*promptOption.label: x3270> Prompt x3270*saveInputOption.label: Save Input Fields x3270*restoreInputOption.label: Restore Input Fields x3270*reenableKeyboardOption.label: Re-enable Keyboard x3270*fileMenuButton.label: File x3270*fileMenu.label: File x3270.ftPopup*justify: left x3270.ftPopup*send.label: Send to host x3270.ftPopup*receive.label: Receive from host x3270.ftPopup*ascii.label: Transfer ASCII file x3270.ftPopup*cr.label: Add/remove CR at end of line x3270.ftPopup*binary.label: Transfer binary file x3270.ftPopup*local.label: Local File Name x3270.ftPopup*host.label: Host File Name x3270.ftPopup*append.label: Append to file x3270.ftPopup*remap.label: Remap ASCII Characters x3270.ftPopup*vm.label: Host is VM/CMS x3270.ftPopup*tso.label: Host is TSO x3270.ftPopup*cics.label: Host is CICS x3270.ftPopup*confirmButton.label: Transfer File x3270.ftPopup*file.label: Record Format x3270.ftPopup*recfmDefault.label: Default x3270.ftPopup*fixed.label: Fixed x3270.ftPopup*variable.label: Variable x3270.ftPopup*undefined.label: Undefined x3270.ftPopup*units.label: Space Allocation Units x3270.ftPopup*spaceDefault.label: Default x3270.ftPopup*tracks.label: Tracks x3270.ftPopup*cylinders.label: Cylinders x3270.ftPopup*avblock.label: Avblock x3270.ftPopup*lrecl.label: Record Length x3270.ftPopup*blksize.label: Block Size x3270.ftPopup*primspace.label: Primary Space x3270.ftPopup*secspace.label: Secondary Space x3270.ftPopup*avblockSize.label: Avblock Size x3270.ftPopup*buffersize.label: DFT Buffer Size x3270.ftProgressPopup*fromLabel.label: Source: x3270.ftProgressPopup*fromLabel.justify: right x3270.ftProgressPopup*toLabel.label: Destination: x3270.ftProgressPopup*toLabel.justify: right x3270.ftProgressPopup*filename.justify: left x3270.ftOverwritePopup*overwriteName.label: Overwrite existing file %s? x3270.ftProgressPopup*waiting.label: Waiting for host acknowledgment... x3270.ftProgressPopup*status.label: %lu bytes transferred x3270.ftProgressPopup*aborting.label: Aborting transfer... x3270.idlePopup*justify: left x3270.idlePopup*command.label: Command(s) x3270.idlePopup*timeout.label: Timeout Value x3270.idlePopup*enable.label: Enable for this session x3270.idlePopup*enablePerm.label: Enable whenever connected x3270.idlePopup*disable.label: Disable x3270.idlePopup*hours.label: Hours x3270.idlePopup*minutes.label: Minutes x3270.idlePopup*seconds.label: Seconds x3270.idlePopup*fuzz.label: Vary time 0..10% x3270.printerLuPopup.title: x3270 Printer Session x3270.printerLuPopup.dialog.label: Enter LU Name x3270.printerLuPopup*confirmButton.label: Start Session x3270*optionsMenuButton.label: Options x3270*optionsMenu.label: Options x3270*connectMenuButton.label: Connect x3270*macrosMenuButton.label: Macros x3270*macrosMenu.label: Macros x3270*hostMenu.label: Connect x3270*recentOption.label: Recent x3270*helpButton.label: Help x3270*otherHostOption.label: Other... x3270*togglesOption.label: Toggles x3270*fontsOption.label: Font x3270*modelsOption.label: Screen Size x3270*snapOption.label: Snap Window Size x3270*colorsOption.label: Color Scheme x3270*codepageOption.label: Code Page x3270*keymapOption.label: Change Keymap... x3270*idleCommandOption.label: Configure Idle Command x3270*keypadOption.label: Keypad x3270*monocaseOption.label: Monocase x3270*cursorBlinkOption.label: Blinking Cursor x3270*typeaheadOption.Label: Typeahead x3270*showTimingOption.label: Show Timing x3270*cursorPosOption.label: Track Cursor x3270*traceOption.label: Trace Data and Events x3270*screenTraceOption.label: Save Screen Contents x3270*scrollBarOption.label: Scrollbar x3270*lineWrapOption.label: Wraparound x3270*marginedPasteOption.label: Paste with Left Margin x3270*overlayPasteOption.label: Overlay Paste x3270*rectangleSelectOption.label: Select by Rectangles x3270*blankFillOption.label: Blank Fill x3270*crosshairOption.label: Crosshair Cursor x3270*visibleControlOption.label: Visible Control Chars x3270*underlineCursorOption.label: Underline Cursor x3270*blockCursorOption.label: Block Cursor x3270*otherFontOption.label: Other... x3270*lineModeOption.label: Line Mode x3270*characterModeOption.label: Character Mode x3270*extendedDsOption.label: Extended 3270 Data Stream x3270*m3278Option.label: Monochrome (3278) Emulation x3270*m3279Option.label: Color (3279) Emulation x3270*model2Option.label: Model 2 (80x24) x3270*model3Option.label: Model 3 (80x32) x3270*model4Option.label: Model 4 (80x43) x3270*model5Option.label: Model 5 (132x27) x3270*oversizeOption.label: Oversize... x3270*saveOption.label: Save Changed Options x3270*alwaysInsertOption.label: Default Insert Mode x3270*selectUrlOption.label: Open selected URLs ! ! Messages x3270.message.processId: Process ID: x3270.message.windowId: Main window ID: x3270.message.pseudoColor: pseudo-color x3270.message.emulatorFont: Emulator font: x3270.message.emulatorFontDbcs: DBCS emulator font: x3270.message.xFont: standard X11 font x3270.message.cgFont: special 3270 CG font x3270.message.codepage: Host EBCDIC code page: x3270.message.displayCharacterSet: Display character set: x3270.message.displayCharacterSetDbcs: DBCS display character set: x3270.message.require: require x3270.message.have: have x3270.message.defaultKeyboardMap: Default keyboard map x3270.message.composeMap: Compose-key map: x3270.message.noComposeMap: No compose-key map x3270.message.activeIcon: Active icon x3270.message.iconFont: Icon font: x3270.message.iconLabelFont: Icon label font: x3270.message.staticIcon: Static bitmap icon x3270.message.statusDbcs: x3270.message.statusNotConnected: Not Connected x3270.message.statusTwait: Wait x3270.message.statusSyswait: SYSTEM x3270.message.statusProtected: Protected x3270.message.statusNumeric: NUM x3270.message.statusOverflow: Overflow x3270.message.statusInhibit: Inhibit x3270.message.statusScrolled: Scrolled x3270.message.statusMinus: -f x3270.message.statusConnecting: [TCP] x3270.message.statusTlsPending: [TLS] x3270.message.statusProxyPending: [Proxy] x3270.message.statusTelnetPending: [TELNET] x3270.message.statusTn3270ePending: [TN3270E] x3270.message.statusAwaitingFirst: [Field] x3270.message.statusDisabled: Disabled x3270.message.statusReconnecting: Reconnecting x3270.message.statusResolving: [DNS] x3270.message.inputMethod: X11 Input Method (XIM): x3270.message.ximState: state: x3270.message.ximDisabled: failed x3270.message.ximNotFound: not found x3270.message.ximActive: active x3270.message.ximLocale: locale: x3270.message.ximEncoding: encoding: x3270.message.kmEvent: Event x3270.message.kmKeymapLine: Keymap:Line x3270.message.kmActions: Actions x3270.message.kmOverridden: \ -- overridden -- x3270.message.kmKeymap: Keymap x3270.message.kmTemporaryKeymap: Temporary keymap x3270.message.kmFile: from file x3270.message.kmResource: from resource x3270.message.kmFromServer: \ (expanded from '@server') ! !============================================================================= ! Section 3: Base-Level Resources ! ! Resources required for the basic operation of x3270, not for the ! faint-hearted to modify. !============================================================================= ! ! App-defaults file version x3270.adVersion: 3.3.4 ! ! Fonts x3270.aplFont: 3270 x3270.debugFont: 3270d x3270.iconFont: nil2 x3270.iconLabelFont: 8x13 x3270*keyPad*large*font: fixed x3270*keyPad*small*font: -*-fixed-medium-r-semicondensed-*-12-*-* x3270*value*font: fixed x3270*dataLabel.font: -*-courier-medium-r-normal--14-*-100-100-m-*-iso8859-1 !x3270*smallLabel.font: 5x7 x3270*smallLabel.font: 6x13 x3270*filename*font: fixed x3270*kmPopup*text*font: fixed x3270*font: -*-helvetica-bold-r-normal--14-*-100-100-p-*-iso8859-1 ! ! Menu configuration x3270*menuBarContainer.borderWidth: 2 #ifdef COLOR x3270*scrollbar.background: grey x3270.keypadBackground: grey x3270*menuBarContainer.background: grey x3270*menuBarContainer.borderColor: grey40 x3270*fileMenuButton*background: grey x3270*optionsMenuButton*background: grey x3270*connectMenuButton*background: grey x3270*macrosMenuButton*background: grey x3270*helpButton*background: grey x3270*keypadButton*background: grey x3270*lockedIcon*background: grey x3270*lockedIcon*foreground: green4 x3270*lockedIcon*borderColor: grey x3270*unverifiedIcon*background: grey x3270*unverifiedIcon*foreground: yellow4 x3270*unverifiedIcon*borderColor: grey x3270*unlockedIcon*background: grey x3270*unlockedIcon*borderColor: grey x3270*fileMenuButton*borderColor: grey x3270*optionsMenuButton*borderColor: grey x3270*connectMenuButton*borderColor: grey x3270*macrosMenuButton*borderColor: grey x3270*helpButton*borderColor: grey #else x3270*fileMenuButton*borderColor: XtDefaultBackground x3270*optionsMenuButton*borderColor: XtDefaultBackground x3270*connectMenuButton*borderColor: XtDefaultBackground x3270*macrosMenuButton*borderColor: XtDefaultBackground x3270*helpButton*borderColor: XtDefaultBackground #endif ! (COLOR) x3270*fileMenuButton*highlightThickness: 1 x3270*optionsMenuButton*highlightThickness: 1 x3270*connectMenuButton*highlightThickness: 1 x3270*macrosMenuButton*highlightThickness: 1 x3270*helpButton*highlightThickness: 1 x3270*keypadButton*highlightThickness: 1 #ifdef COLOR x3270*fileMenu*background: grey x3270*exitMenu*background: grey x3270*optionsMenu*background: grey x3270*hostMenu*background: grey x3270*macrosMenu*background: grey x3270*togglesMenu*background: grey x3270*fontsMenu*background: grey x3270*modelsMenu*background: grey x3270*colorsMenu*background: grey x3270*codepageMenu*background: grey x3270*printerMenu*background: grey #endif ! (COLOR) x3270*fileMenu.borderWidth: 2 x3270*exitMenu.borderWidth: 2 x3270*optionsMenu.borderWidth: 2 x3270*hostMenu.borderWidth: 2 x3270*macrosMenu.borderWidth: 2 x3270*togglesMenu.borderWidth: 2 x3270*fontsMenu.borderWidth: 2 x3270*modelsMenu.borderWidth: 2 x3270*colorsMenu.borderWidth: 2 x3270*codepageMenu.borderWidth: 2 #ifdef COLOR x3270*fileMenu.borderColor: grey40 x3270*exitMenu.borderColor: grey40 x3270*optionsMenu.borderColor: grey40 x3270*hostMenu.borderColor: grey40 x3270*macrosMenu.borderColor: grey40 x3270*togglesMenu.borderColor: grey40 x3270*fontsMenu.borderColor: grey40 x3270*modelsMenu.borderColor: grey40 x3270*colorsMenu.borderColor: grey40 x3270*codepageMenu.borderColor: grey40 #endif ! (COLOR) x3270*fileMenu*leftMargin: 20 x3270*fileMenu*rightMargin: 20 x3270*optionsMenu*rightMargin: 20 x3270*togglesMenu*leftMargin: 20 x3270*fontsMenu*leftMargin: 20 x3270*fontsMenu*rightMargin: 20 x3270*modelsMenu*leftMargin: 20 x3270*colorsMenu*leftMargin: 20 x3270*colorsMenu*rightMargin: 20 x3270*codepageMenu*leftMargin: 20 x3270*codepageMenu*rightMargin: 20 x3270*hostMenu*rightMargin: 20 x3270*macrosMenu*rightMargin: 20 ! ! Confirm and cancel buttons ! borderWidth and borderColor are never specified anywhere else, so these ! always apply x3270*confirmButton.borderWidth: 2 x3270*confirm2Button*borderWidth: 2 x3270*cancelButton*borderWidth: 2 #ifdef COLOR x3270**confirmButton.borderColor: grey40 x3270**confirmButton.borderColor: grey40 x3270**confirm2Button.borderColor: grey40 x3270**cancelButton.borderColor: grey40 #endif ! (COLOR) ! foreground and background are often overridden by other resources, so they ! must be specified explicitly for each instance #ifdef COLOR x3270*dialog*confirmButton.foreground: black x3270*dialog*confirmButton.background: grey80 x3270*dialog*confirm2Button.background: grey80 x3270*dialog*cancelButton.foreground: firebrick x3270*dialog*cancelButton.background: grey80 #endif ! (COLOR) ! ! Values ! borderWidth and borderColor are never specified anywhere else, so these ! always apply #ifdef COLOR x3270*value.borderWidth: 2 x3270*value.borderColor: grey40 #endif ! (COLOR) ! background is overridden by dialog*background, so it must be specified ! explicitly #ifdef COLOR x3270*dialog*value*background: lavender #endif ! (COLOR) ! ! Overall defaults for dialog boxes #ifdef COLOR x3270*dialog*background: grey x3270*dialog*foreground: black #endif ! (COLOR) ! ! Fixed popup sizes x3270.errorPopup.width: 500 x3270.printerErrorPopup.width: 500 x3270.childErrorPopup.width: 500 x3270.infoPopup.width: 500 x3270.printerInfoPopup.width: 500 x3270.childInfoPopup.width: 500 !x3270.printerLuPopup.width: 300 !x3270.connectPopup.width: 500 !x3270.fontPopup.width: 300 !x3270.keymapPopup.width: 300 !x3270.oversizePopup.width: 300 !x3270.printWindowPopup.width: 300 !x3270.tracePopup.width: 300 !x3270.executeActionPopup.width: 300 !x3270.saveOptionsPopup.width: 300 !x3270.passwordPopup.width: 300 ! ! Nondefault definitions for complex pop-ups #ifdef COLOR x3270.aboutCopyrightPopup*icon.foreground: darkslateblue x3270.aboutConfigPopup*icon.foreground: darkslateblue x3270.aboutStatusPopup*icon.foreground: darkslateblue x3270.errorPopup*label.foreground: firebrick x3270.printerErrorPopup*label.foreground: firebrick x3270.childErrorPopup*label.foreground: firebrick x3270.ftProgressPopup*filename.borderWidth: 2 x3270.ftProgressPopup*filename.borderColor: grey40 x3270.ftProgressPopup*filename.background: lavender #endif ! (COLOR) ! ! Keypad key dimensions, in pixels x3270.keypad.keyHeight: 24 x3270.keypad.keyWidth: 48 x3270.keypad.pfWidth: 32 x3270.keypad.paWidth: 36 x3270.keypad.largeKeyWidth: 56 ! ! Keymap display pop-up ! x3270*keymapDisplayOption.label: Display Current Keymap x3270.kmPopup*label.label: Current Keyboard Map x3270.kmPopup*sortActionOption.label: Sort by Action x3270.kmPopup*sortKeymapOption.label: Sort by Keymap x3270.kmPopup*sortEventOption.label: Sort by Event x3270.kmPopup*text*background: lavender x3270.kmPopup*text*foreground: black x3270.kmPopup*text.height: 250 x3270.kmPopup*text.width: 500 ! ! Basic event translations -- these should NEVER be changed without significant ! code changes x3270.translations: #override \n\ WM_PROTOCOLS: PA-WMProtocols()\n\ : PA-KeymapNotify()\n\ WM_STATE: PA-StateChanged()\n\ : PA-Focus()\n\ : PA-Focus()\n\ : PA-ConfigureNotify() x3270.container.translations: #override \n\ Shift_L: PA-Shift()\n\ Shift_L: PA-Shift()\n\ Shift_R: PA-Shift()\n\ Shift_R: PA-Shift()\n\ Meta_L: PA-Shift()\n\ Meta_L: PA-Shift()\n\ Meta_R: PA-Shift()\n\ Meta_R: PA-Shift()\n\ Alt_L: PA-Shift()\n\ Alt_L: PA-Shift()\n\ Alt_R: PA-Shift()\n\ Alt_R: PA-Shift()\n\ :: Default()\n\ :: Default()\n\ :: Default() x3270*screen.translations: #override \n\ : PA-Expose()\n\ : PA-VisibilityNotify()\n\ : PA-GraphicsExpose()\n\ Shift_L: PA-Shift()\n\ Shift_L: PA-Shift()\n\ Shift_R: PA-Shift()\n\ Shift_R: PA-Shift()\n\ Meta_L: PA-Shift()\n\ Meta_L: PA-Shift()\n\ Meta_R: PA-Shift()\n\ Meta_R: PA-Shift()\n\ Alt_L: PA-Shift()\n\ Alt_L: PA-Shift()\n\ Alt_R: PA-Shift()\n\ Alt_R: PA-Shift()\n\ :: Default()\n\ :: Default()\n\ :: Default() x3270icon.translations: #override \n\ : PA-Expose() x3270.keypadPopup.translations: #override \n\ WM_PROTOCOLS: PA-WMProtocols()\n\ : PA-KeymapNotify()\n\ : PA-EnterLeave()\n\ : PA-EnterLeave() x3270.keypadPopup.container.translations: #override \n\ Shift_L: PA-Shift()\n\ Shift_L: PA-Shift()\n\ Shift_R: PA-Shift()\n\ Shift_R: PA-Shift()\n\ Meta_L: PA-Shift()\n\ Meta_L: PA-Shift()\n\ Meta_R: PA-Shift()\n\ Meta_R: PA-Shift()\n\ Alt_L: PA-Shift()\n\ Alt_L: PA-Shift()\n\ Alt_R: PA-Shift()\n\ Alt_R: PA-Shift()\n\ :: Default() x3270.errorPopup.translations: \ WM_PROTOCOLS: PA-WMProtocols() x3270.printerErrorPopup.translations: \ WM_PROTOCOLS: PA-WMProtocols() x3270.childErrorPopup.translations: \ WM_PROTOCOLS: PA-WMProtocols() x3270.errorPopup*translations: #override \n\ Return: PA-confirm() x3270.printerErrorPopup*translations: #override \n\ Return: PA-confirm() x3270.childErrorPopup*translations: #override \n\ Return: PA-confirm() x3270.infoPopup.translations: \ WM_PROTOCOLS: PA-WMProtocols() x3270.printerInfoPopup.translations: \ WM_PROTOCOLS: PA-WMProtocols() x3270.childInfoPopup.translations: \ WM_PROTOCOLS: PA-WMProtocols() x3270.infoPopup*translations: #override \n\ Return: PA-confirm() x3270.printerInfoPopup*translations: #override \n\ Return: PA-confirm() x3270.childInfoPopup*translations: #override \n\ Return: PA-confirm() x3270.passwordPopup.translations: \ WM_PROTOCOLS: PA-WMProtocols() x3270.connectPopup.translations: \ WM_PROTOCOLS: PA-WMProtocols() x3270.fontPopup.translations: \ WM_PROTOCOLS: PA-WMProtocols() x3270.keymapPopup.translations: \ WM_PROTOCOLS: PA-WMProtocols() x3270.printWindowPopup.translations: \ WM_PROTOCOLS: PA-WMProtocols() x3270.tracePopup.translations: \ WM_PROTOCOLS: PA-WMProtocols() x3270.screenTracePopup.translations: \ WM_PROTOCOLS: PA-WMProtocols() x3270.screenTracePopup*translations: #override \n\ Return: PA-confirm() x3270.executeActionPopup.translations: \ WM_PROTOCOLS: PA-WMProtocols() x3270.saveOptionsPopup.translations: \ WM_PROTOCOLS: PA-WMProtocols() x3270.aboutCopyrightPopup.translations: \ WM_PROTOCOLS: PA-WMProtocols() x3270.aboutCopyrightPopup*translations: #override \n\ Return: PA-confirm() x3270.aboutConfigPopup.translations: \ WM_PROTOCOLS: PA-WMProtocols() x3270.aboutConfigPopup*translations: #override \n\ Return: PA-confirm() x3270.aboutStatusPopup.translations: \ WM_PROTOCOLS: PA-WMProtocols() x3270.aboutStatusPopup*translations: #override \n\ Return: PA-confirm() x3270.kmPopup.translations: \ WM_PROTOCOLS: PA-WMProtocols() x3270.kmPopup*translations: #override \n\ Return: PA-confirm() x3270.luPopup.translations: \ WM_PROTOCOLS: PA-WMProtocols() x3270.ftPopup.translations: \ WM_PROTOCOLS: PA-WMProtocols() ! Note: WM_PROTOCOLS is explicitly not defined for ftPopup, so that the user ! can clear error conditions while a transfer is in progress. x3270.ftOverwritePopup.translations: \ WM_PROTOCOLS: PA-WMProtocols() x3270.ftPopup*value.translations: #override \n\ Return: PA-dialog-next()\n\ Tab: PA-dialog-next()\n\ : PA-dialog-focus() select-start()\n\ CtrlU: select-all(DUMMY) delete-selection() x3270.idlePopup.translations: \ WM_PROTOCOLS: PA-WMProtocols() x3270.idlePopup*value.translations: #override \n\ Return: PA-dialog-next()\n\ Tab: PA-dialog-next()\n\ : PA-dialog-focus() select-start()\n\ CtrlU: select-all(DUMMY) delete-selection() x3270.screenTracePopup*value.translations: #override \n\ Return: PA-confirm()\n\ CtrlU: select-all(DUMMY) delete-selection() x3270*value.translations: #override \n\ Return: PA-confirm()\n\ CtrlU: select-all(DUMMY) delete-selection() x3270*value.width: 300 ! Workaround for Xaw MenuButton bug that keeps menu items from highlighting ! when CapsLock or NumLock are down. Technically, this would require ! translations for all permutations of all 8 modifiers: shift, lock, control, ! mod1, mod2, mod3, mod4 and mod5. However, we will leave out shift and ! control, since they are "voluntary" key presses and would quadruple the ! size of this resource. x3270*MenuButton.translations: #override \n\ Lock: reset() PopupMenu()\n\ Mod1: reset() PopupMenu()\n\ Lock Mod1: reset() PopupMenu()\n\ Mod2: reset() PopupMenu()\n\ Lock Mod2: reset() PopupMenu()\n\ Mod1 Mod2: reset() PopupMenu()\n\ Lock Mod1 Mod2: reset() PopupMenu()\n\ Mod3: reset() PopupMenu()\n\ Lock Mod3: reset() PopupMenu()\n\ Mod1 Mod3: reset() PopupMenu()\n\ Lock Mod1 Mod3: reset() PopupMenu()\n\ Mod2 Mod3: reset() PopupMenu()\n\ Lock Mod2 Mod3: reset() PopupMenu()\n\ Mod1 Mod2 Mod3: reset() PopupMenu()\n\ Lock Mod1 Mod2 Mod3: reset() PopupMenu()\n\ Mod4: reset() PopupMenu()\n\ Lock Mod4: reset() PopupMenu()\n\ Mod1 Mod4: reset() PopupMenu()\n\ Lock Mod1 Mod4: reset() PopupMenu()\n\ Mod2 Mod4: reset() PopupMenu()\n\ Lock Mod2 Mod4: reset() PopupMenu()\n\ Mod1 Mod2 Mod4: reset() PopupMenu()\n\ Lock Mod1 Mod2 Mod4: reset() PopupMenu()\n\ Mod3 Mod4: reset() PopupMenu()\n\ Lock Mod3 Mod4: reset() PopupMenu()\n\ Mod1 Mod3 Mod4: reset() PopupMenu()\n\ Lock Mod1 Mod3 Mod4: reset() PopupMenu()\n\ Mod2 Mod3 Mod4: reset() PopupMenu()\n\ Lock Mod2 Mod3 Mod4: reset() PopupMenu()\n\ Mod1 Mod2 Mod3 Mod4: reset() PopupMenu()\n\ Lock Mod1 Mod2 Mod3 Mod4: reset() PopupMenu()\n\ Mod5: reset() PopupMenu()\n\ Lock Mod5: reset() PopupMenu()\n\ Mod1 Mod5: reset() PopupMenu()\n\ Lock Mod1 Mod5: reset() PopupMenu()\n\ Mod2 Mod5: reset() PopupMenu()\n\ Lock Mod2 Mod5: reset() PopupMenu()\n\ Mod1 Mod2 Mod5: reset() PopupMenu()\n\ Lock Mod1 Mod2 Mod5: reset() PopupMenu()\n\ Mod3 Mod5: reset() PopupMenu()\n\ Lock Mod3 Mod5: reset() PopupMenu()\n\ Mod1 Mod3 Mod5: reset() PopupMenu()\n\ Lock Mod1 Mod3 Mod5: reset() PopupMenu()\n\ Mod2 Mod3 Mod5: reset() PopupMenu()\n\ Lock Mod2 Mod3 Mod5: reset() PopupMenu()\n\ Mod1 Mod2 Mod3 Mod5: reset() PopupMenu()\n\ Lock Mod1 Mod2 Mod3 Mod5: reset() PopupMenu()\n\ Mod4 Mod5: reset() PopupMenu()\n\ Lock Mod4 Mod5: reset() PopupMenu()\n\ Mod1 Mod4 Mod5: reset() PopupMenu()\n\ Lock Mod1 Mod4 Mod5: reset() PopupMenu()\n\ Mod2 Mod4 Mod5: reset() PopupMenu()\n\ Lock Mod2 Mod4 Mod5: reset() PopupMenu()\n\ Mod1 Mod2 Mod4 Mod5: reset() PopupMenu()\n\ Lock Mod1 Mod2 Mod4 Mod5: reset() PopupMenu()\n\ Mod3 Mod4 Mod5: reset() PopupMenu()\n\ Lock Mod3 Mod4 Mod5: reset() PopupMenu()\n\ Mod1 Mod3 Mod4 Mod5: reset() PopupMenu()\n\ Lock Mod1 Mod3 Mod4 Mod5: reset() PopupMenu()\n\ Mod2 Mod3 Mod4 Mod5: reset() PopupMenu()\n\ Lock Mod2 Mod3 Mod4 Mod5: reset() PopupMenu()\n\ Mod1 Mod2 Mod3 Mod4 Mod5: reset() PopupMenu()\n\ Lock Mod1 Mod2 Mod3 Mod4 Mod5: reset() PopupMenu() ! ! Compose-key map for APL. x3270.composeMap.apl: \ A + underscore = apl_Aunderbar \n\ B + underscore = apl_Bunderbar \n\ C + underscore = apl_Cunderbar \n\ D + underscore = apl_Dunderbar \n\ E + underscore = apl_Eunderbar \n\ F + underscore = apl_Funderbar \n\ G + underscore = apl_Gunderbar \n\ H + underscore = apl_Hunderbar \n\ I + underscore = apl_Iunderbar \n\ J + underscore = apl_Junderbar \n\ K + underscore = apl_Kunderbar \n\ L + underscore = apl_Lunderbar \n\ M + underscore = apl_Munderbar \n\ N + underscore = apl_Nunderbar \n\ O + underscore = apl_Ounderbar \n\ P + underscore = apl_Punderbar \n\ Q + underscore = apl_Qunderbar \n\ R + underscore = apl_Runderbar \n\ S + underscore = apl_Sunderbar \n\ T + underscore = apl_Tunderbar \n\ U + underscore = apl_Uunderbar \n\ V + underscore = apl_Vunderbar \n\ W + underscore = apl_Wunderbar \n\ X + underscore = apl_Xunderbar \n\ Y + underscore = apl_Yunderbar \n\ Z + underscore = apl_Zunderbar \n\ apl_upcaret + apl_downcaret = apl_diamond \n\ apl_quad + apl_jot = apl_quadjot \n\ apl_iota + underscore = apl_iotaunderbar \n\ apl_epsilon + underscore = apl_epsilonunderbar \n\ less + equal = apl_notgreater \n\ plus + minus = apl_plusminus \n\ greater + equal = apl_notless \n\ equal + slash = apl_notequal \n\ apl_upcaret + apl_tilde = apl_upcarettilde \n\ apl_upcaret + asciitilde = apl_upcarettilde \n\ apl_downcaret + apl_tilde = apl_downcarettilde \n\ apl_downcaret + asciitilde = apl_downcarettilde \n\ apl_circle + apl_stile = apl_circlestile \n\ apl_circle + bar = apl_circlestile \n\ apl_quad + apl_slope = apl_slopequad \n\ apl_quad + backslash = apl_slopequad \n\ apl_circle + apl_slope = apl_circleslope \n\ apl_circle + backslash = apl_circleslope \n\ apl_downtack + apl_uptack = apl_downtackup \n\ apostrophe + period = apl_quotedot \n\ apl_del + apl_stile = apl_delstile \n\ apl_del + bar = apl_delstile \n\ apl_delta + apl_stile = apl_deltastile \n\ apl_delta + bar = apl_deltastile \n\ apl_quad + apostrophe = apl_quadquote \n\ apl_upshoe + apl_jot = apl_upshoejot \n\ slash + minus = apl_slashbar \n\ apl_slope + minus = apl_slopebar \n\ backslash + minus = apl_slopebar \n\ apl_diaeresis + period = apl_diaeresisdot \n\ apl_circle + minus = apl_circlebar \n\ apl_quad + apl_divide = apl_quaddivide \n\ apl_uptack + apl_jot = apl_uptackjot \n\ apl_del + apl_tilde = apl_deltilde \n\ apl_del + asciitilde = apl_deltilde \n\ apl_delta + underscore = apl_deltaunderbar \n\ apl_circle + asterisk = apl_circlestar \n\ apl_downtack + apl_jot = apl_downtackjot \n\ equal + underscore = apl_equalunderbar \n\ apl_quad + apl_quad = apl_squad \n\ apl_diaeresis + apl_jot = apl_diaeresisjot \n\ apl_diaeresis + apl_circle = apl_diaeresiscircle \n\ comma + minus = apl_commabar \n\ c + equal = apl_euro \n\ C + equal = apl_euro \n\ minus + parenleft = apl_lefttack \n\ minus + parenright = apl_righttack \n suite3270-4.1/x3270/ft.inc000077700000000000000000000000001413735575200174702../Common/ft.incustar00rootroot00000000000000suite3270-4.1/x3270/ft/000077500000000000000000000000001413735575200142335ustar00rootroot00000000000000suite3270-4.1/x3270/ft/all.chars000066400000000000000000000025201413735575200160240ustar00rootroot00000000000000@@@ð`@ñ`@ò`@ó`@ô`@õ`@ö`@÷`@ø`@ù`@Á`@Â`@Ã`@Ä`@Å`@Æ`@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@`ð@@@@@ @@0@@@@@P@@`@@p@@€@@@@ @@°@@À@@Ð@@à@@ð@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@`ñ@@@@@!@@1@@A@@Q@@a@@q@@@@‘@@¡@@±@@Á@@Ñ@@á@@ñ@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@`ò@@@@@"@@2@@B@@R@@b@@r@@‚@@’@@¢@@²@@Â@@Ò@@â@@ò@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@`ó@@@@@#@@3@@C@@S@@c@@s@@ƒ@@“@@£@@³@@Ã@@Ó@@ã@@ó@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@`ô@@@@@$@@4@@D@@T@@d@@t@@„@@”@@¤@@´@@Ä@@Ô@@ä@@ô@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@`õ@@@@@%@@5@@E@@U@@e@@u@@…@@•@@¥@@µ@@Å@@Õ@@å@@õ@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@`ö@@@@@&@@6@@F@@V@@f@@v@@†@@–@@¦@@¶@@Æ@@Ö@@æ@@ö@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@`÷@@@@@'@@7@@G@@W@@g@@w@@‡@@—@@§@@·@@Ç@@×@@ç@@÷@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@`ø@@@@@(@@8@@H@@X@@h@@x@@ˆ@@˜@@¨@@¸@@È@@Ø@@è@@ø@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@`ù@ @@@@)@@9@@I@@Y@@i@@y@@‰@@™@@©@@¹@@É@@Ù@@é@@ù@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@`Á@ @@@@*@@:@@J@@Z@@j@@z@@Š@@š@@ª@@º@@Ê@@Ú@@ê@@ú@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@`Â@ @@@@+@@;@@K@@[@@k@@{@@‹@@›@@«@@»@@Ë@@Û@@ë@@û@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@`Ã@ @@@@,@@<@@L@@\@@l@@|@@Œ@@œ@@¬@@¼@@Ì@@Ü@@ì@@ü@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@`Ä@ @@@@-@@=@@M@@]@@m@@}@@@@@@­@@½@@Í@@Ý@@í@@ý@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@`Å@@@@@.@@>@@N@@^@@n@@~@@Ž@@ž@@®@@¾@@Î@@Þ@@î@@þ@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@`Æ@@@@@/@@?@@O@@_@@o@@@@@@Ÿ@@¯@@¿@@Ï@@ß@@ï@@ÿ@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@suite3270-4.1/x3270/ft/print.chars000066400000000000000000000025201413735575200164100ustar00rootroot00000000000000@@@ô`@õ`@ö`@÷`@ø`@ù`@Á`@Â`@Ã`@Ä`@Å`@Æ`@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@`ð@@@@P@@`@@p@@€@@@@ @@°@@À@@Ð@@à@@ð@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@`ñ@A@@Q@@a@@q@@@@‘@@¡@@±@@Á@@Ñ@@á@@ñ@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@`ò@B@@R@@b@@r@@‚@@’@@¢@@²@@Â@@Ò@@â@@ò@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@`ó@C@@S@@c@@s@@ƒ@@“@@£@@³@@Ã@@Ó@@ã@@ó@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@`ô@D@@T@@d@@t@@„@@”@@¤@@´@@Ä@@Ô@@ä@@ô@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@`õ@E@@U@@e@@u@@…@@•@@¥@@µ@@Å@@Õ@@å@@õ@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@`ö@F@@V@@f@@v@@†@@–@@¦@@¶@@Æ@@Ö@@æ@@ö@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@`÷@G@@W@@g@@w@@‡@@—@@§@@·@@Ç@@×@@ç@@÷@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@`ø@H@@X@@h@@x@@ˆ@@˜@@¨@@¸@@È@@Ø@@è@@ø@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@`ù@I@@Y@@i@@y@@‰@@™@@©@@¹@@É@@Ù@@é@@ù@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@`Á@J@@Z@@j@@z@@Š@@š@@ª@@º@@Ê@@Ú@@ê@@ú@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@`Â@K@@[@@k@@{@@‹@@›@@«@@»@@Ë@@Û@@ë@@û@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@`Ã@L@@\@@l@@|@@Œ@@œ@@¬@@¼@@Ì@@Ü@@ì@@ü@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@`Ä@M@@]@@m@@}@@@@@@­@@½@@Í@@Ý@@í@@ý@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@`Å@N@@^@@n@@~@@Ž@@ž@@®@@¾@@Î@@Þ@@î@@þ@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@`Æ@O@@_@@o@@@@@@Ÿ@@¯@@¿@@Ï@@ß@@ï@@ÿ@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@suite3270-4.1/x3270/ft_gui.c000066400000000000000000001303451413735575200152510ustar00rootroot00000000000000/* * Copyright (c) 1996-2015, 2018-2019 Paul Mattes. * Copyright (c) 1995, Dick Altenbern. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the names of Paul Mattes, Dick Altenbern nor the names of * their contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES AND DICK ALTENBERN "AS IS" AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL PAUL MATTES OR DICK ALTENBERN BE LIABLE FOR * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH * DAMAGE. */ /* * ft_gui.c * IND$FILE file transfer dialogs. */ #include "globals.h" #include "xglobals.h" #include #include #include #include #include #include #include #include #include #include #include #include #include "appres.h" #include "dialog.h" #include "ft.h" #include "ft_dft.h" #include "ft_private.h" #include "kybd.h" #include "lazya.h" #include "objects.h" #include "popups.h" #include "utils.h" #include "varbuf.h" #include "xft_gui.h" #include "xmenubar.h" #include "xpopups.h" #include "ft_gui.h" /* Macros. */ #define FILE_WIDTH 300 /* width of file name widgets */ #define MARGIN 3 /* distance from margins to widgets */ #define CLOSE_VGAP 0 /* distance between paired toggles */ #define FAR_VGAP 10 /* distance between single toggles and groups */ #define BUTTON_GAP 5 /* horizontal distance between buttons */ #define COLUMN_GAP 40 /* distance between columns */ /* Globals. */ /* Statics. */ static Widget ft_dialog, ft_shell, local_file, host_file; static Widget lrecl_widget, blksize_widget; static Widget primspace_widget, secspace_widget; static Widget avblock_size_widget; static Widget send_toggle, receive_toggle; static Widget vm_toggle, tso_toggle, cics_toggle; static Widget ascii_toggle, binary_toggle; static Widget cr_widget; static Widget remap_widget; static Widget buffersize_widget; static Widget inprogress_cancel_button; static bool host_is_tso = true; /* bools used by dialog */ static bool host_is_tso_or_vm = true;/* sensitivity logic */ static host_type_t s_tso = HT_TSO; /* Values used by toggle callbacks. */ static host_type_t s_vm = HT_VM; static host_type_t s_cics = HT_CICS; static Widget recfm_options[5]; static Widget units_options[5]; static struct toggle_list recfm_toggles = { recfm_options }; static struct toggle_list units_toggles = { units_options }; static bool recfm_default = true; static recfm_t r_default_recfm = DEFAULT_RECFM; static recfm_t r_fixed = RECFM_FIXED; static recfm_t r_variable = RECFM_VARIABLE; static recfm_t r_undefined = RECFM_UNDEFINED; static bool units_default = true; static bool units_avblock = false; static units_t u_default_units = DEFAULT_UNITS; static units_t u_tracks = TRACKS; static units_t u_cylinders = CYLINDERS; static units_t u_avblock = AVBLOCK; static sr_t *ft_sr = NULL; static Widget progress_shell, from_file, to_file; static Widget ft_status, waiting, aborting; static String status_string; static Widget overwrite_shell; static ft_conf_t xftc; static bool xftc_initted = false; static void ft_cancel(Widget w, XtPointer client_data, XtPointer call_data); static void ft_popup_callback(Widget w, XtPointer client_data, XtPointer call_data); static void ft_popup_init(void); static bool ft_start(void); static void ft_start_callback(Widget w, XtPointer call_parms, XtPointer call_data); static void overwrite_cancel_callback(Widget w, XtPointer client_data, XtPointer call_data); static void overwrite_okay_callback(Widget w, XtPointer client_data, XtPointer call_data); static void overwrite_popdown(Widget w, XtPointer client_data, XtPointer call_data); static void overwrite_popup_init(const char *path); static void popup_overwrite(const char *path); static void popup_progress(void); static void progress_cancel_callback(Widget w, XtPointer client_data, XtPointer call_data); static void progress_popup_callback(Widget w, XtPointer client_data, XtPointer call_data); static void progress_popup_init(void); static void recfm_callback(Widget w, XtPointer user_data, XtPointer call_data); static void toggle_append(Widget w, XtPointer client_data, XtPointer call_data); static void toggle_ascii(Widget w, XtPointer client_data, XtPointer call_data); static void toggle_cr(Widget w, XtPointer client_data, XtPointer call_data); static void toggle_remap(Widget w, XtPointer client_data, XtPointer call_data); static void toggle_receive(Widget w, XtPointer client_data, XtPointer call_data); static void toggle_host_type(Widget w, XtPointer client_data, XtPointer call_data); static void units_callback(Widget w, XtPointer user_data, XtPointer call_data); /* "File Transfer" dialog. */ /* * Pop up the "Transfer" menu. * Called back from the "File Transfer" option on the File menu. */ void ft_gui_popup_ft(void) { /* Initialize it. */ if (ft_shell == NULL) { ft_popup_init(); } /* Pop it up. */ dialog_set(&ft_sr, ft_dialog); popup_popup(ft_shell, XtGrabNone); } /* Initialize the transfer pop-up. */ static void ft_popup_init(void) { Widget w; Widget cancel_button; Widget local_label, host_label; Widget append_widget; Widget lrecl_label, blksize_label, primspace_label, secspace_label; Widget avblock_size_label; Widget h_ref = NULL; Widget recfm_label, units_label; Widget buffersize_label; Widget start_button; Widget spacer_toggle; char *s; /* Init the file transfer state structure from defaults. */ if (!xftc_initted) { ft_init_conf(&xftc); xftc.is_action = false; xftc_initted = true; } recfm_default = (xftc.recfm == DEFAULT_RECFM); units_default = (xftc.units == DEFAULT_UNITS); units_avblock = (xftc.units == AVBLOCK); /* Prep the dialog functions. */ dialog_set(&ft_sr, ft_dialog); /* Create the menu shell. */ ft_shell = XtVaCreatePopupShell( "ftPopup", transientShellWidgetClass, toplevel, NULL); XtAddCallback(ft_shell, XtNpopupCallback, place_popup, (XtPointer)CenterP); XtAddCallback(ft_shell, XtNpopupCallback, ft_popup_callback, NULL); /* Create the form within the shell. */ ft_dialog = XtVaCreateManagedWidget( ObjDialog, formWidgetClass, ft_shell, NULL); /* Create the file name widgets. */ local_label = XtVaCreateManagedWidget( "local", labelWidgetClass, ft_dialog, XtNvertDistance, FAR_VGAP, XtNhorizDistance, MARGIN, XtNborderWidth, 0, NULL); local_file = XtVaCreateManagedWidget( "value", asciiTextWidgetClass, ft_dialog, XtNeditType, XawtextEdit, XtNwidth, FILE_WIDTH, XtNvertDistance, FAR_VGAP, XtNfromHoriz, local_label, XtNhorizDistance, 0, NULL); if (xftc.local_filename) { XtVaSetValues(local_file, XtNstring, xftc.local_filename, NULL); XawTextSetInsertionPoint(local_file, strlen(xftc.local_filename)); } dialog_match_dimension(local_label, local_file, XtNheight); w = XawTextGetSource(local_file); if (w == NULL) { XtWarning("Cannot find text source in dialog"); } else { XtAddCallback(w, XtNcallback, dialog_text_callback, (XtPointer)&t_unixfile); } dialog_register_sensitivity(local_file, NULL, false, NULL, false, NULL, false); host_label = XtVaCreateManagedWidget( "host", labelWidgetClass, ft_dialog, XtNfromVert, local_label, XtNvertDistance, 3, XtNhorizDistance, MARGIN, XtNborderWidth, 0, NULL); host_file = XtVaCreateManagedWidget( "value", asciiTextWidgetClass, ft_dialog, XtNeditType, XawtextEdit, XtNwidth, FILE_WIDTH, XtNdisplayCaret, False, XtNfromVert, local_label, XtNvertDistance, 3, XtNfromHoriz, host_label, XtNhorizDistance, 0, NULL); if (xftc.host_filename) { XtVaSetValues(host_file, XtNstring, xftc.host_filename, NULL); XawTextSetInsertionPoint(host_file, strlen(xftc.host_filename)); } dialog_match_dimension(host_label, host_file, XtNheight); dialog_match_dimension(local_label, host_label, XtNwidth); w = XawTextGetSource(host_file); if (w == NULL) { XtWarning("Cannot find text source in dialog"); } else { XtAddCallback(w, XtNcallback, dialog_text_callback, (XtPointer)&t_hostfile); } dialog_register_sensitivity(host_file, NULL, false, NULL, false, NULL, false); /* Create the left column. */ /* Create send/receive toggles. */ send_toggle = XtVaCreateManagedWidget( "send", commandWidgetClass, ft_dialog, XtNfromVert, host_label, XtNvertDistance, FAR_VGAP, XtNhorizDistance, MARGIN, XtNborderWidth, 0, NULL); dialog_apply_bitmap(send_toggle, xftc.receive_flag? no_diamond: diamond); XtAddCallback(send_toggle, XtNcallback, toggle_receive, (XtPointer)&s_false); receive_toggle = XtVaCreateManagedWidget( "receive", commandWidgetClass, ft_dialog, XtNfromVert, send_toggle, XtNvertDistance, CLOSE_VGAP, XtNhorizDistance, MARGIN, XtNborderWidth, 0, NULL); dialog_apply_bitmap(receive_toggle, xftc.receive_flag? diamond: no_diamond); XtAddCallback(receive_toggle, XtNcallback, toggle_receive, (XtPointer)&s_true); spacer_toggle = XtVaCreateManagedWidget( "empty", labelWidgetClass, ft_dialog, XtNfromVert, receive_toggle, XtNvertDistance, CLOSE_VGAP, XtNhorizDistance, MARGIN, XtNborderWidth, 0, XtNlabel, "", NULL); /* Create ASCII/binary toggles. */ ascii_toggle = XtVaCreateManagedWidget( "ascii", commandWidgetClass, ft_dialog, XtNfromVert, spacer_toggle, XtNvertDistance, FAR_VGAP, XtNhorizDistance, MARGIN, XtNborderWidth, 0, NULL); dialog_apply_bitmap(ascii_toggle, xftc.ascii_flag? diamond: no_diamond); XtAddCallback(ascii_toggle, XtNcallback, toggle_ascii, (XtPointer)&s_true); binary_toggle = XtVaCreateManagedWidget( "binary", commandWidgetClass, ft_dialog, XtNfromVert, ascii_toggle, XtNvertDistance, CLOSE_VGAP, XtNhorizDistance, MARGIN, XtNborderWidth, 0, NULL); dialog_apply_bitmap(binary_toggle, xftc.ascii_flag? no_diamond: diamond); XtAddCallback(binary_toggle, XtNcallback, toggle_ascii, (XtPointer)&s_false); /* Create append toggle. */ append_widget = XtVaCreateManagedWidget( "append", commandWidgetClass, ft_dialog, XtNfromVert, binary_toggle, XtNvertDistance, FAR_VGAP, XtNhorizDistance, MARGIN, XtNborderWidth, 0, NULL); dialog_apply_bitmap(append_widget, xftc.append_flag? dot: no_dot); XtAddCallback(append_widget, XtNcallback, toggle_append, NULL); /* Set up the recfm group. */ recfm_label = XtVaCreateManagedWidget( "file", labelWidgetClass, ft_dialog, XtNfromVert, append_widget, XtNvertDistance, FAR_VGAP, XtNhorizDistance, MARGIN, XtNborderWidth, 0, NULL); dialog_register_sensitivity(recfm_label, &xftc.receive_flag, false, &host_is_tso_or_vm, true, NULL, false); recfm_options[0] = XtVaCreateManagedWidget( "recfmDefault", commandWidgetClass, ft_dialog, XtNfromVert, recfm_label, XtNvertDistance, 3, XtNhorizDistance, MARGIN, XtNborderWidth, 0, NULL); dialog_apply_bitmap(recfm_options[0], (xftc.recfm == DEFAULT_RECFM)? diamond: no_diamond); XtAddCallback(recfm_options[0], XtNcallback, recfm_callback, (XtPointer)&r_default_recfm); dialog_register_sensitivity(recfm_options[0], &xftc.receive_flag, false, &host_is_tso_or_vm, true, NULL, false); recfm_options[1] = XtVaCreateManagedWidget( "fixed", commandWidgetClass, ft_dialog, XtNfromVert, recfm_options[0], XtNvertDistance, CLOSE_VGAP, XtNhorizDistance, MARGIN, XtNborderWidth, 0, NULL); dialog_apply_bitmap(recfm_options[1], (xftc.recfm == RECFM_FIXED)? diamond: no_diamond); XtAddCallback(recfm_options[1], XtNcallback, recfm_callback, (XtPointer)&r_fixed); dialog_register_sensitivity(recfm_options[1], &xftc.receive_flag, false, &host_is_tso_or_vm, true, NULL, false); recfm_options[2] = XtVaCreateManagedWidget( "variable", commandWidgetClass, ft_dialog, XtNfromVert, recfm_options[1], XtNvertDistance, CLOSE_VGAP, XtNhorizDistance, MARGIN, XtNborderWidth, 0, NULL); dialog_apply_bitmap(recfm_options[2], (xftc.recfm == RECFM_VARIABLE)? diamond: no_diamond); XtAddCallback(recfm_options[2], XtNcallback, recfm_callback, (XtPointer)&r_variable); dialog_register_sensitivity(recfm_options[2], &xftc.receive_flag, false, &host_is_tso_or_vm, true, NULL, false); recfm_options[3] = XtVaCreateManagedWidget( "undefined", commandWidgetClass, ft_dialog, XtNfromVert, recfm_options[2], XtNvertDistance, CLOSE_VGAP, XtNhorizDistance, MARGIN, XtNborderWidth, 0, NULL); dialog_apply_bitmap(recfm_options[3], (xftc.recfm == RECFM_UNDEFINED)? diamond: no_diamond); XtAddCallback(recfm_options[3], XtNcallback, recfm_callback, (XtPointer)&r_undefined); dialog_register_sensitivity(recfm_options[3], &xftc.receive_flag, false, &host_is_tso, true, NULL, false); lrecl_label = XtVaCreateManagedWidget( "lrecl", labelWidgetClass, ft_dialog, XtNfromVert, recfm_options[3], XtNvertDistance, 3, XtNhorizDistance, MARGIN, XtNborderWidth, 0, NULL); dialog_register_sensitivity(lrecl_label, &xftc.receive_flag, false, &recfm_default, false, &host_is_tso_or_vm, true); lrecl_widget = XtVaCreateManagedWidget( "value", asciiTextWidgetClass, ft_dialog, XtNfromVert, recfm_options[3], XtNvertDistance, 3, XtNfromHoriz, lrecl_label, XtNhorizDistance, MARGIN, XtNwidth, 100, XtNeditType, XawtextEdit, XtNdisplayCaret, False, NULL); if (xftc.lrecl && xftc.host_type != HT_CICS) { char *lr = lazyaf("%d", xftc.lrecl); XtVaSetValues(lrecl_widget, XtNstring, lr, NULL); XawTextSetInsertionPoint(lrecl_widget, strlen(lr)); } dialog_match_dimension(lrecl_label, lrecl_widget, XtNheight); w = XawTextGetSource(lrecl_widget); if (w == NULL) { XtWarning("Cannot find text source in dialog"); } else { XtAddCallback(w, XtNcallback, dialog_text_callback, (XtPointer)&t_numeric); } dialog_register_sensitivity(lrecl_widget, &xftc.receive_flag, false, &recfm_default, false, &host_is_tso_or_vm, true); blksize_label = XtVaCreateManagedWidget( "blksize", labelWidgetClass, ft_dialog, XtNfromVert, lrecl_widget, XtNvertDistance, 3, XtNhorizDistance, MARGIN, XtNborderWidth, 0, NULL); dialog_match_dimension(blksize_label, lrecl_label, XtNwidth); dialog_register_sensitivity(blksize_label, &xftc.receive_flag, false, &recfm_default, false, &host_is_tso, true); blksize_widget = XtVaCreateManagedWidget( "value", asciiTextWidgetClass, ft_dialog, XtNfromVert, lrecl_widget, XtNvertDistance, 3, XtNfromHoriz, blksize_label, XtNhorizDistance, MARGIN, XtNwidth, 100, XtNeditType, XawtextEdit, XtNdisplayCaret, False, NULL); if (xftc.blksize && xftc.host_type != HT_CICS) { char *bs = lazyaf("%d", xftc.blksize); XtVaSetValues(blksize_widget, XtNstring, bs, NULL); XawTextSetInsertionPoint(blksize_widget, strlen(bs)); } dialog_match_dimension(blksize_label, blksize_widget, XtNheight); w = XawTextGetSource(blksize_widget); if (w == NULL) { XtWarning("Cannot find text source in dialog"); } else { XtAddCallback(w, XtNcallback, dialog_text_callback, (XtPointer)&t_numeric); } dialog_register_sensitivity(blksize_widget, &xftc.receive_flag, false, &recfm_default, false, &host_is_tso, true); /* Find the widest widget in the left column. */ h_ref = blksize_widget; /* Create the right column buttons. */ /* Create VM/TSO/CICS toggles. */ vm_toggle = XtVaCreateManagedWidget( "vm", commandWidgetClass, ft_dialog, XtNfromVert, host_label, XtNvertDistance, FAR_VGAP, XtNfromHoriz, h_ref, XtNhorizDistance, COLUMN_GAP, XtNborderWidth, 0, NULL); dialog_apply_bitmap(vm_toggle, (xftc.host_type == HT_VM)? diamond: no_diamond); XtAddCallback(vm_toggle, XtNcallback, toggle_host_type, (XtPointer)&s_vm); tso_toggle = XtVaCreateManagedWidget( "tso", commandWidgetClass, ft_dialog, XtNfromVert, vm_toggle, XtNvertDistance, CLOSE_VGAP, XtNfromHoriz, h_ref, XtNhorizDistance, COLUMN_GAP, XtNborderWidth, 0, NULL); dialog_apply_bitmap(tso_toggle, (xftc.host_type == HT_TSO)? diamond : no_diamond); XtAddCallback(tso_toggle, XtNcallback, toggle_host_type, (XtPointer)&s_tso); cics_toggle = XtVaCreateManagedWidget( "cics", commandWidgetClass, ft_dialog, XtNfromVert, tso_toggle, XtNvertDistance, CLOSE_VGAP, XtNfromHoriz, h_ref, XtNhorizDistance, COLUMN_GAP, XtNborderWidth, 0, NULL); dialog_apply_bitmap(cics_toggle, (xftc.host_type == HT_CICS)? diamond : no_diamond); XtAddCallback(cics_toggle, XtNcallback, toggle_host_type, (XtPointer)&s_cics); /* Create CR toggle. */ cr_widget = XtVaCreateManagedWidget( "cr", commandWidgetClass, ft_dialog, XtNfromVert, cics_toggle, XtNvertDistance, FAR_VGAP, XtNfromHoriz, h_ref, XtNhorizDistance, COLUMN_GAP, XtNborderWidth, 0, NULL); dialog_apply_bitmap(cr_widget, xftc.ascii_flag && xftc.cr_flag? dot: no_dot); XtAddCallback(cr_widget, XtNcallback, toggle_cr, 0); dialog_register_sensitivity(cr_widget, &xftc.ascii_flag, true, NULL, false, NULL, false); /* Create remap toggle. */ remap_widget = XtVaCreateManagedWidget( "remap", commandWidgetClass, ft_dialog, XtNfromVert, cr_widget, XtNfromHoriz, h_ref, XtNvertDistance, CLOSE_VGAP, XtNhorizDistance, COLUMN_GAP, XtNborderWidth, 0, NULL); dialog_apply_bitmap(remap_widget, xftc.ascii_flag && xftc.remap_flag? dot: no_dot); XtAddCallback(remap_widget, XtNcallback, toggle_remap, NULL); dialog_register_sensitivity(remap_widget, &xftc.ascii_flag, true, NULL, false, NULL, false); /* Set up the Units group. */ units_label = XtVaCreateManagedWidget( "units", labelWidgetClass, ft_dialog, XtNfromVert, append_widget, XtNvertDistance, FAR_VGAP, XtNfromHoriz, h_ref, XtNhorizDistance, COLUMN_GAP, XtNborderWidth, 0, NULL); dialog_register_sensitivity(units_label, &xftc.receive_flag, false, &host_is_tso, true, NULL, false); units_options[0] = XtVaCreateManagedWidget( "spaceDefault", commandWidgetClass, ft_dialog, XtNfromVert, units_label, XtNvertDistance, 3, XtNfromHoriz, h_ref, XtNhorizDistance, COLUMN_GAP, XtNborderWidth, 0, NULL); dialog_apply_bitmap(units_options[0], (xftc.units == DEFAULT_UNITS)? diamond: no_diamond); XtAddCallback(units_options[0], XtNcallback, units_callback, (XtPointer)&u_default_units); dialog_register_sensitivity(units_options[0], &xftc.receive_flag, false, &host_is_tso, true, NULL, false); units_options[1] = XtVaCreateManagedWidget( "tracks", commandWidgetClass, ft_dialog, XtNfromVert, units_options[0], XtNvertDistance, CLOSE_VGAP, XtNfromHoriz, h_ref, XtNhorizDistance, COLUMN_GAP, XtNborderWidth, 0, NULL); dialog_apply_bitmap(units_options[1], (xftc.units == TRACKS)? diamond: no_diamond); XtAddCallback(units_options[1], XtNcallback, units_callback, (XtPointer)&u_tracks); dialog_register_sensitivity(units_options[1], &xftc.receive_flag, false, &host_is_tso, true, NULL, false); units_options[2] = XtVaCreateManagedWidget( "cylinders", commandWidgetClass, ft_dialog, XtNfromVert, units_options[1], XtNvertDistance, CLOSE_VGAP, XtNfromHoriz, h_ref, XtNhorizDistance, COLUMN_GAP, XtNborderWidth, 0, NULL); dialog_apply_bitmap(units_options[2], (xftc.units == CYLINDERS)? diamond: no_diamond); XtAddCallback(units_options[2], XtNcallback, units_callback, (XtPointer)&u_cylinders); dialog_register_sensitivity(units_options[2], &xftc.receive_flag, false, &host_is_tso, true, NULL, false); units_options[3] = XtVaCreateManagedWidget( "avblock", commandWidgetClass, ft_dialog, XtNfromVert, units_options[2], XtNvertDistance, CLOSE_VGAP, XtNfromHoriz, h_ref, XtNhorizDistance, COLUMN_GAP, XtNborderWidth, 0, NULL); dialog_apply_bitmap(units_options[3], (xftc.units == AVBLOCK)? diamond: no_diamond); XtAddCallback(units_options[3], XtNcallback, units_callback, (XtPointer)&u_avblock); dialog_register_sensitivity(units_options[3], &xftc.receive_flag, false, &host_is_tso, true, NULL, false); primspace_label = XtVaCreateManagedWidget( "primspace", labelWidgetClass, ft_dialog, XtNfromVert, units_options[3], XtNvertDistance, 3, XtNfromHoriz, h_ref, XtNhorizDistance, COLUMN_GAP, XtNborderWidth, 0, NULL); dialog_register_sensitivity(primspace_label, &xftc.receive_flag, false, &host_is_tso, true, &units_default, false); primspace_widget = XtVaCreateManagedWidget( "value", asciiTextWidgetClass, ft_dialog, XtNfromVert, units_options[3], XtNvertDistance, 3, XtNfromHoriz, primspace_label, XtNhorizDistance, 0, XtNwidth, 100, XtNeditType, XawtextEdit, XtNdisplayCaret, False, NULL); if (xftc.primary_space) { s = xs_buffer("%d", xftc.primary_space); XtVaSetValues(primspace_widget, XtNstring, s, NULL); XawTextSetInsertionPoint(primspace_widget, strlen(s)); XtFree(s); } dialog_match_dimension(primspace_label, primspace_widget, XtNheight); w = XawTextGetSource(primspace_widget); if (w == NULL) { XtWarning("Cannot find text source in dialog"); } else { XtAddCallback(w, XtNcallback, dialog_text_callback, (XtPointer)&t_numeric); } dialog_register_sensitivity(primspace_widget, &xftc.receive_flag, false, &host_is_tso, true, &units_default, false); secspace_label = XtVaCreateManagedWidget( "secspace", labelWidgetClass, ft_dialog, XtNfromVert, primspace_widget, XtNvertDistance, 3, XtNfromHoriz, h_ref, XtNhorizDistance, COLUMN_GAP, XtNborderWidth, 0, NULL); dialog_match_dimension(primspace_label, secspace_label, XtNwidth); dialog_register_sensitivity(secspace_label, &xftc.receive_flag, false, &host_is_tso, true, &units_default, false); secspace_widget = XtVaCreateManagedWidget( "value", asciiTextWidgetClass, ft_dialog, XtNfromVert, primspace_widget, XtNvertDistance, 3, XtNfromHoriz, secspace_label, XtNhorizDistance, 0, XtNwidth, 100, XtNeditType, XawtextEdit, XtNdisplayCaret, False, NULL); if (xftc.secondary_space) { s = xs_buffer("%d", xftc.secondary_space); XtVaSetValues(secspace_widget, XtNstring, s, NULL); XawTextSetInsertionPoint(secspace_widget, strlen(s)); XtFree(s); } dialog_match_dimension(secspace_label, secspace_widget, XtNheight); w = XawTextGetSource(secspace_widget); if (w == NULL) { XtWarning("Cannot find text source in dialog"); } else { XtAddCallback(w, XtNcallback, dialog_text_callback, (XtPointer)&t_numeric); } dialog_register_sensitivity(secspace_widget, &xftc.receive_flag, false, &host_is_tso, true, &units_default, false); avblock_size_label = XtVaCreateManagedWidget( "avblockSize", labelWidgetClass, ft_dialog, XtNfromVert, secspace_widget, XtNvertDistance, 3, XtNfromHoriz, h_ref, XtNhorizDistance, COLUMN_GAP, XtNborderWidth, 0, NULL); dialog_match_dimension(secspace_label, avblock_size_label, XtNwidth); dialog_register_sensitivity(avblock_size_label, &xftc.receive_flag, false, &host_is_tso, true, &units_avblock, true); avblock_size_widget = XtVaCreateManagedWidget( "value", asciiTextWidgetClass, ft_dialog, XtNfromVert, secspace_widget, XtNvertDistance, 3, XtNfromHoriz, avblock_size_label, XtNhorizDistance, 0, XtNwidth, 100, XtNeditType, XawtextEdit, XtNdisplayCaret, False, NULL); if (xftc.avblock) { s = xs_buffer("%d", xftc.avblock); XtVaSetValues(avblock_size_widget, XtNstring, s, NULL); XawTextSetInsertionPoint(avblock_size_widget, strlen(s)); XtFree(s); } dialog_match_dimension(avblock_size_label, avblock_size_widget, XtNheight); w = XawTextGetSource(avblock_size_widget); if (w == NULL) { XtWarning("Cannot find text source in dialog"); } else { XtAddCallback(w, XtNcallback, dialog_text_callback, (XtPointer)&t_numeric); } dialog_register_sensitivity(avblock_size_widget, &xftc.receive_flag, false, &host_is_tso, true, &units_avblock, true); /* Set up the DFT buffer size. */ buffersize_label = XtVaCreateManagedWidget( "buffersize", labelWidgetClass, ft_dialog, XtNfromVert, blksize_label, XtNvertDistance, 3, XtNhorizDistance, MARGIN, XtNborderWidth, 0, NULL); buffersize_widget = XtVaCreateManagedWidget( "value", asciiTextWidgetClass, ft_dialog, XtNfromVert, blksize_label, XtNvertDistance, 3, XtNfromHoriz, buffersize_label, XtNhorizDistance, 0, XtNwidth, 100, XtNeditType, XawtextEdit, XtNdisplayCaret, False, NULL); dialog_match_dimension(buffersize_label, buffersize_widget, XtNheight); w = XawTextGetSource(buffersize_widget); if (w == NULL) { XtWarning("Cannot find text source in dialog"); } else { XtAddCallback(w, XtNcallback, dialog_text_callback, (XtPointer)&t_numeric); } dialog_register_sensitivity(buffersize_widget, NULL, false, NULL, false, NULL, false); s = xs_buffer("%d", xftc.dft_buffersize); XtVaSetValues(buffersize_widget, XtNstring, s, NULL); XawTextSetInsertionPoint(buffersize_widget, strlen(s)); XtFree(s); /* Set up the buttons at the bottom. */ start_button = XtVaCreateManagedWidget( ObjConfirmButton, commandWidgetClass, ft_dialog, XtNfromVert, buffersize_label, XtNvertDistance, FAR_VGAP, XtNhorizDistance, MARGIN, NULL); XtAddCallback(start_button, XtNcallback, ft_start_callback, NULL); cancel_button = XtVaCreateManagedWidget( ObjCancelButton, commandWidgetClass, ft_dialog, XtNfromVert, buffersize_label, XtNvertDistance, FAR_VGAP, XtNfromHoriz, start_button, XtNhorizDistance, BUTTON_GAP, NULL); XtAddCallback(cancel_button, XtNcallback, ft_cancel, 0); } /* Callbacks for all the transfer widgets. */ /* Transfer pop-up popping up. */ static void ft_popup_callback(Widget w _is_unused, XtPointer client_data _is_unused, XtPointer call_data _is_unused) { /* Set the focus to the local file widget. */ PA_dialog_focus_xaction(local_file, NULL, NULL, NULL); /* Disallow overwrites. */ xftc.allow_overwrite = false; } /* Cancel button pushed. */ static void ft_cancel(Widget w _is_unused, XtPointer client_data _is_unused, XtPointer call_data _is_unused) { XtPopdown(ft_shell); } /* recfm options. */ static void recfm_callback(Widget w, XtPointer user_data, XtPointer call_data _is_unused) { xftc.recfm = *(recfm_t *)user_data; recfm_default = (xftc.recfm == DEFAULT_RECFM); dialog_check_sensitivity(&recfm_default); dialog_flip_toggles(&recfm_toggles, w); } /* Units options. */ static void units_callback(Widget w, XtPointer user_data, XtPointer call_data _is_unused) { xftc.units = *(units_t *)user_data; units_default = (xftc.units == DEFAULT_UNITS); units_avblock = (xftc.units == AVBLOCK); dialog_check_sensitivity(&units_default); dialog_check_sensitivity(&units_avblock); dialog_flip_toggles(&units_toggles, w); } /* OK button pushed. */ static void ft_start_callback(Widget w _is_unused, XtPointer call_parms _is_unused, XtPointer call_data _is_unused) { XtPopdown(ft_shell); if (ft_start()) { popup_progress(); } } /* Send/receive options. */ static void toggle_receive(Widget w _is_unused, XtPointer client_data, XtPointer call_data _is_unused) { /* Toggle the flag */ xftc.receive_flag = *(bool *)client_data; /* Change the widget states. */ dialog_mark_toggle(receive_toggle, xftc.receive_flag? diamond: no_diamond); dialog_mark_toggle(send_toggle, xftc.receive_flag? no_diamond: diamond); dialog_check_sensitivity(&xftc.receive_flag); } /* Ascii/binary options. */ static void toggle_ascii(Widget w _is_unused, XtPointer client_data, XtPointer call_data _is_unused) { /* Toggle the flag. */ xftc.ascii_flag = *(bool *)client_data; /* Change the widget states. */ dialog_mark_toggle(ascii_toggle, xftc.ascii_flag? diamond: no_diamond); dialog_mark_toggle(binary_toggle, xftc.ascii_flag? no_diamond: diamond); xftc.cr_flag = xftc.ascii_flag; xftc.remap_flag = xftc.ascii_flag; dialog_mark_toggle(cr_widget, xftc.cr_flag? dot: no_dot); dialog_mark_toggle(remap_widget, xftc.remap_flag? dot: no_dot); dialog_check_sensitivity(&xftc.ascii_flag); } /* CR option. */ static void toggle_cr(Widget w, XtPointer client_data _is_unused, XtPointer call_data _is_unused) { /* Toggle the cr flag */ xftc.cr_flag = !xftc.cr_flag; dialog_mark_toggle(w, xftc.cr_flag? dot: no_dot); } /* Append option. */ static void toggle_append(Widget w, XtPointer client_data _is_unused, XtPointer call_data _is_unused) { /* Toggle Append Flag */ xftc.append_flag = !xftc.append_flag; dialog_mark_toggle(w, xftc.append_flag? dot: no_dot); } /* Remap option. */ static void toggle_remap(Widget w, XtPointer client_data _is_unused, XtPointer call_data _is_unused) { /* Toggle Remap Flag */ xftc.remap_flag = !xftc.remap_flag; dialog_mark_toggle(w, xftc.remap_flag? dot: no_dot); } /* * Set the individual bool variables used by the dialog sensitivity * functions, and call dialog_check_sensitivity(). */ static void set_host_type_booleans(void) { switch (xftc.host_type) { case HT_TSO: host_is_tso = true; host_is_tso_or_vm = true; break; case HT_VM: host_is_tso = false; host_is_tso_or_vm = true; break; case HT_CICS: host_is_tso = false; host_is_tso_or_vm = false; } dialog_check_sensitivity(&host_is_tso); dialog_check_sensitivity(&host_is_tso_or_vm); } /* TSO/VM/CICS option. */ static void toggle_host_type(Widget w _is_unused, XtPointer client_data _is_unused, XtPointer call_data _is_unused) { host_type_t old_host_type; /* Toggle the flag. */ old_host_type = xftc.host_type; xftc.host_type = *(host_type_t *)client_data; if (xftc.host_type == old_host_type) { return; } /* Change the widget states. */ dialog_mark_toggle(vm_toggle, (xftc.host_type == HT_VM)? diamond: no_diamond); dialog_mark_toggle(tso_toggle, (xftc.host_type == HT_TSO)? diamond: no_diamond); dialog_mark_toggle(cics_toggle, (xftc.host_type == HT_CICS)? diamond: no_diamond); if (xftc.host_type != HT_TSO) { /* Reset record format. */ if ((xftc.host_type == HT_VM && xftc.recfm == RECFM_UNDEFINED) || (xftc.host_type == HT_CICS && xftc.recfm != DEFAULT_RECFM)) { xftc.recfm = DEFAULT_RECFM; recfm_default = true; dialog_flip_toggles(&recfm_toggles, recfm_toggles.widgets[0]); } /* Reset units. */ if (xftc.units != DEFAULT_UNITS) { xftc.units = DEFAULT_UNITS; units_default = true; units_avblock = false; dialog_flip_toggles(&units_toggles, units_toggles.widgets[0]); } if (xftc.host_type == HT_CICS) { /* Reset logical record size. */ XtVaSetValues(lrecl_widget, XtNstring, "", NULL); } /* Reset block size, primary space and secondary space. */ XtVaSetValues(blksize_widget, XtNstring, "", NULL); XtVaSetValues(primspace_widget, XtNstring, "", NULL); XtVaSetValues(secspace_widget, XtNstring, "", NULL); } set_host_type_booleans(); } /* * Get a numerical value from a string widget. * * @param[in] w Widget to interrogate * * @return Numerical value of widget contents. */ static int get_widget_n(Widget w) { String s; XtVaGetValues(w, XtNstring, &s, NULL); if (strlen(s) > 0) { return atoi(s); } else { return 0; } } /** * Begin the transfer. * * @return true if the transfer has started, false otherwise */ static bool ft_start(void) { int size; char *path; /* * Get the DFT buffer size, and update the widget with the default if they * entered nothing (or an explicit 0). */ size = set_dft_buffersize(get_widget_n(buffersize_widget)); XtVaSetValues(buffersize_widget, XtNstring, lazyaf("%d", size), NULL); /* Get the host file from its widget */ XtVaGetValues(host_file, XtNstring, &xftc.host_filename, NULL); if (!*xftc.host_filename) { return false; } /* Get the local file from its widget */ XtVaGetValues(local_file, XtNstring, &xftc.local_filename, NULL); if (!*xftc.local_filename) { return false; } /* Fetch the rest of the numeric parameters. */ xftc.lrecl = get_widget_n(lrecl_widget); xftc.blksize = get_widget_n(blksize_widget); xftc.primary_space = get_widget_n(primspace_widget); xftc.secondary_space = get_widget_n(secspace_widget); xftc.avblock = get_widget_n(avblock_size_widget); xftc.dft_buffersize = size; /* Check for primary space. */ if (xftc.host_type == HT_TSO && xftc.units != DEFAULT_UNITS && xftc.primary_space <= 0) { popup_an_error("Missing or invalid Primary Space"); return false; } /* Prompt for local file overwrite. */ path = ft_resolve_dir(&xftc); if (xftc.receive_flag && !xftc.append_flag && !xftc.allow_overwrite) { fts.local_file = fopen(path, xftc.ascii_flag? "r": "rb"); if (fts.local_file != NULL) { fclose(fts.local_file); fts.local_file = NULL; popup_overwrite(path); Free(path); return false; } } /* Start the transfer. */ fts.local_file = ft_go(&xftc, IA_UI); if (fts.local_file == NULL) { return false; } /* We're running. */ return true; } /* "Transfer in Progress" pop-up. */ /* Pop up the "in progress" pop-up. */ static void popup_progress(void) { /* Initialize it. */ if (progress_shell == NULL) { progress_popup_init(); } /* Pop it up. */ popup_popup(progress_shell, XtGrabNone); } /* Initialize the "in progress" pop-up. */ static void progress_popup_init(void) { Widget progress_pop, from_label, to_label; /* Create the shell. */ progress_shell = XtVaCreatePopupShell( "ftProgressPopup", transientShellWidgetClass, toplevel, NULL); XtAddCallback(progress_shell, XtNpopupCallback, place_popup, (XtPointer)CenterP); XtAddCallback(progress_shell, XtNpopupCallback, progress_popup_callback, NULL); /* Create a form structure to contain the other stuff */ progress_pop = XtVaCreateManagedWidget( ObjDialog, formWidgetClass, progress_shell, NULL); /* Create the widgets. */ from_label = XtVaCreateManagedWidget( "fromLabel", labelWidgetClass, progress_pop, XtNvertDistance, FAR_VGAP, XtNhorizDistance, MARGIN, XtNborderWidth, 0, NULL); from_file = XtVaCreateManagedWidget( "filename", labelWidgetClass, progress_pop, XtNwidth, FILE_WIDTH, XtNvertDistance, FAR_VGAP, XtNfromHoriz, from_label, XtNhorizDistance, 0, NULL); dialog_match_dimension(from_label, from_file, XtNheight); to_label = XtVaCreateManagedWidget( "toLabel", labelWidgetClass, progress_pop, XtNfromVert, from_label, XtNvertDistance, FAR_VGAP, XtNhorizDistance, MARGIN, XtNborderWidth, 0, NULL); to_file = XtVaCreateManagedWidget( "filename", labelWidgetClass, progress_pop, XtNwidth, FILE_WIDTH, XtNfromVert, from_label, XtNvertDistance, FAR_VGAP, XtNfromHoriz, to_label, XtNhorizDistance, 0, NULL); dialog_match_dimension(to_label, to_file, XtNheight); dialog_match_dimension(from_label, to_label, XtNwidth); waiting = XtVaCreateManagedWidget( "waiting", labelWidgetClass, progress_pop, XtNfromVert, to_label, XtNvertDistance, FAR_VGAP, XtNhorizDistance, MARGIN, XtNborderWidth, 0, XtNmappedWhenManaged, False, NULL); ft_status = XtVaCreateManagedWidget( "status", labelWidgetClass, progress_pop, XtNfromVert, to_label, XtNvertDistance, FAR_VGAP, XtNhorizDistance, MARGIN, XtNborderWidth, 0, XtNresizable, True, XtNmappedWhenManaged, False, NULL); XtVaGetValues(ft_status, XtNlabel, &status_string, NULL); status_string = XtNewString(status_string); aborting = XtVaCreateManagedWidget( "aborting", labelWidgetClass, progress_pop, XtNfromVert, to_label, XtNvertDistance, FAR_VGAP, XtNhorizDistance, MARGIN, XtNborderWidth, 0, XtNmappedWhenManaged, False, NULL); inprogress_cancel_button = XtVaCreateManagedWidget( ObjCancelButton, commandWidgetClass, progress_pop, XtNfromVert, ft_status, XtNvertDistance, FAR_VGAP, XtNhorizDistance, MARGIN, NULL); XtAddCallback(inprogress_cancel_button, XtNcallback, progress_cancel_callback, NULL); } /* Callbacks for the "in progress" pop-up. */ /* In-progress pop-up popped up. */ static void progress_popup_callback(Widget w _is_unused, XtPointer client_data _is_unused, XtPointer call_data _is_unused) { XtVaSetValues(from_file, XtNlabel, xftc.receive_flag? xftc.host_filename: fts.resolved_local_filename, NULL); XtVaSetValues(to_file, XtNlabel, xftc.receive_flag? fts.resolved_local_filename: xftc.host_filename, NULL); switch (ft_state) { case FT_AWAIT_ACK: XtUnmapWidget(ft_status); XtUnmapWidget(aborting); XtMapWidget(waiting); break; case FT_RUNNING: XtUnmapWidget(waiting); XtUnmapWidget(aborting); XtMapWidget(ft_status); break; case FT_ABORT_WAIT: case FT_ABORT_SENT: XtUnmapWidget(waiting); XtUnmapWidget(ft_status); XtMapWidget(aborting); break; default: break; } } /* In-progress "cancel" button. */ static void progress_cancel_callback(Widget w _is_unused, XtPointer client_data _is_unused, XtPointer call_data _is_unused) { if (ft_do_cancel()) { /* Waiting for the host to acknowledge our cancellation. */ XtUnmapWidget(waiting); XtUnmapWidget(ft_status); XtMapWidget(aborting); } } /* "Overwrite existing?" pop-up. */ /* Pop up the "overwrite" pop-up. */ static void popup_overwrite(const char *path) { /* Initialize it. */ if (overwrite_shell == NULL) { overwrite_popup_init(path); } /* Pop it up. */ popup_popup(overwrite_shell, XtGrabExclusive); } /* Initialize the "overwrite" pop-up. */ static void overwrite_popup_init(const char *path) { Widget overwrite_pop, overwrite_name, okay_button, cancel_button; String overwrite_string, label; Dimension d; /* Create the shell. */ overwrite_shell = XtVaCreatePopupShell( "ftOverwritePopup", transientShellWidgetClass, toplevel, NULL); XtAddCallback(overwrite_shell, XtNpopupCallback, place_popup, (XtPointer)CenterP); XtAddCallback(overwrite_shell, XtNpopdownCallback, overwrite_popdown, NULL); /* Create a form structure to contain the other stuff */ overwrite_pop = XtVaCreateManagedWidget( ObjDialog, formWidgetClass, overwrite_shell, NULL); /* Create the widgets. */ overwrite_name = XtVaCreateManagedWidget( "overwriteName", labelWidgetClass, overwrite_pop, XtNvertDistance, MARGIN, XtNhorizDistance, MARGIN, XtNborderWidth, 0, XtNresizable, True, NULL); XtVaGetValues(overwrite_name, XtNlabel, &overwrite_string, NULL); label = xs_buffer(overwrite_string, path); XtVaSetValues(overwrite_name, XtNlabel, label, NULL); XtFree(label); XtVaGetValues(overwrite_name, XtNwidth, &d, NULL); if ((Dimension)(d + 20) < 400) { d = 400; } else { d += 20; } XtVaSetValues(overwrite_name, XtNwidth, d, NULL); XtVaGetValues(overwrite_name, XtNheight, &d, NULL); XtVaSetValues(overwrite_name, XtNheight, d + 20, NULL); okay_button = XtVaCreateManagedWidget( ObjConfirmButton, commandWidgetClass, overwrite_pop, XtNfromVert, overwrite_name, XtNvertDistance, FAR_VGAP, XtNhorizDistance, MARGIN, NULL); XtAddCallback(okay_button, XtNcallback, overwrite_okay_callback, NULL); cancel_button = XtVaCreateManagedWidget( ObjCancelButton, commandWidgetClass, overwrite_pop, XtNfromVert, overwrite_name, XtNvertDistance, FAR_VGAP, XtNfromHoriz, okay_button, XtNhorizDistance, BUTTON_GAP, NULL); XtAddCallback(cancel_button, XtNcallback, overwrite_cancel_callback, NULL); } /* Overwrite "okay" button. */ static void overwrite_okay_callback(Widget w _is_unused, XtPointer client_data _is_unused, XtPointer call_data _is_unused) { XtPopdown(overwrite_shell); xftc.allow_overwrite = true; if (ft_start()) { XtPopdown(ft_shell); popup_progress(); } } /* Overwrite "cancel" button. */ static void overwrite_cancel_callback(Widget w _is_unused, XtPointer client_data _is_unused, XtPointer call_data _is_unused) { XtPopdown(overwrite_shell); } /* Overwrite pop-up popped down. */ static void overwrite_popdown(Widget w _is_unused, XtPointer client_data _is_unused, XtPointer call_data _is_unused) { XtDestroyWidget(overwrite_shell); overwrite_shell = NULL; } /* Entry points called from the common FT logic. */ /* Pop down the transfer-in-progress pop-up. */ void ft_gui_progress_popdown(void) { XtPopdown(progress_shell); } /* Massage a file transfer error message so it will fit in the pop-up. */ #define MAX_MSGLEN 50 void ft_gui_errmsg_prepare(char *msg) { if (strlen(msg) > MAX_MSGLEN && strchr(msg, '\n') == NULL) { char *s = msg + MAX_MSGLEN; while (s > msg && *s != ' ') { s--; } if (s > msg) { *s = '\n'; /* yikes! */ } } } /* Clear out the progress display. */ void ft_gui_clear_progress(void) { } /* Pop up a successful completion message. */ void ft_gui_complete_popup(const char *msg, bool is_error) { if (is_error) { popup_an_error("%s", msg); } else if (!ftc->is_action) { popup_an_info("%s", msg); } else { popup_a_timed_info(5000, "%s", msg); } } /* Update the bytes-transferred count on the progress pop-up. */ void ft_gui_update_length(size_t length) { char *s; s = xs_buffer(status_string, (unsigned long)length); XtVaSetValues(ft_status, XtNlabel, s, NULL); XtFree(s); } /* Replace the 'waiting' pop-up with the 'in-progress' pop-up. */ void ft_gui_running(size_t length) { XtUnmapWidget(waiting); ft_gui_update_length(length); XtMapWidget(ft_status); } /* Process a protocol-generated abort. */ void ft_gui_aborting(void) { XtUnmapWidget(waiting); XtUnmapWidget(ft_status); XtMapWidget(aborting); } /* Display an "Awaiting start of transfer" message. */ void ft_gui_awaiting(void) { if (ftc->is_action) { popup_progress(); XtVaSetValues(from_file, XtNlabel, ftc->receive_flag? ftc->host_filename: fts.resolved_local_filename, NULL); XtVaSetValues(to_file, XtNlabel, ftc->receive_flag? fts.resolved_local_filename: ftc->host_filename, NULL); } } suite3270-4.1/x3270/host_gui.c000066400000000000000000000046371413735575200156210ustar00rootroot00000000000000/* * Copyright (c) 1993-2015 Paul Mattes. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the names of Paul Mattes nor the names of his contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO * EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * host_gui.c * GUI-specific functions called from the host connect/disconnect * logic. */ #include "globals.h" #include "appres.h" #include "host_gui.h" #include "xio.h" #include "xpopups.h" bool host_gui_connect(void) { if (appres.once) { /* Exit when the error pop-up pops down. */ exiting = true; return true; } else { return false; } } void host_gui_connect_initial(void) { if (appres.interactive.reconnect && error_popup_visible()) { popdown_an_error(); } } bool host_gui_disconnect(void) { if (appres.once) { if (error_popup_visible()) { /* If there is an error pop-up, exit when it pops down. */ exiting = true; } else { /* Exit now. */ x3270_exit(0); return true; } return true; } else { return false; } } void host_gui_connected(void) { if (appres.interactive.reconnect && error_popup_visible()) { popdown_an_error(); } } suite3270-4.1/x3270/html.m4000077700000000000000000000000001413735575200176742../Common/html.m4ustar00rootroot00000000000000suite3270-4.1/x3270/html/000077500000000000000000000000001413735575200145665ustar00rootroot00000000000000suite3270-4.1/x3270/html/.gitignore000066400000000000000000000001541413735575200165560ustar00rootroot00000000000000*-man.html FAQ.html Lineage.html ReleaseNotes.html Resources.html SSL.html ibm_hosts.html x3270-script.html suite3270-4.1/x3270/html/x026.gif000066400000000000000000025006571413735575200157730ustar00rootroot00000000000000GIF89aý“÷|‚tĤDF<ä⼬š|dN4äάljTœš|´®Œ," ¼Êüäò씆ddnœÌÒÌIJ”„nTôâ¼<2ÔÆ¤”ŽŒ$FœTRD¬¦Œl^DìÚ¬¼¾¤L6$äâÜ”–|¼ÂÄTF$|zTt‚¼ôòÌ„z\ŒŽ|tj\¤¦¬¬®¬¤ŽtĺœôÚ´ÔÎÔ”ŽtôîìD2¬ª¬Üêì\N4ôö씚œ,*ôê¼¼ªŒ|fL„‚ŒÜÎÄlf\TF<Ô¾œÔÚÔdV<”Štlz¬Üά¤–„´¦„ÄÎÌ„~„tr\ľ¤Ìʤ¬¢„ÜÆ¤äÞÔ,”~d¼¶¬D:lV<¬ž”äÖĤ¢„´¶œ<&œ†dÜÞ¼„vT”–œt^DL>'ìâÜüþÜ´¶´üÞ´ìêìüþíôîÔÜÚÜtz´Œ‚h̤ìê̬žìÒ¬djd¼®Œ4& ÜÒ°ôæÔ<:,œŽ”lbTìÞ¼´º¼ÄÂÄ\F,üöäŒ~f´®¤Ìº™ôÚÄD2$TV|LNDÌÎÜ\^L (ŒŠ| ìòìäêìüê¼ÔÚ䤖”,D:,¤¢”üþü4&œŽ||rd4äÒ±ln\”Šd„rXôæÄÔʬ”’Œ¬ª„lbDìÞ¬äæäTJ$„~d¬²´D6TJ7dZ<´ª‰ÜʤìæäìîìÜÞÜt~¶ÌƬ¼²”ÄÆÆÌ¾œüöÔüîÔĶ”$¤ª¬ôÞ´ÔÒÔôÞÄD6$Œ’ŒÌÎ̼¾¼Ä¬¬š„´®”,"”†l<2ÔÆ¬”Ž”l^LìÚ´äâäTF,\N<¼ª”dVDlz´´¦Œtrdľ¬ÌÊ¬ÜÆ¬”~llVDœ†l!ÿ NETSCAPE2.0!ù2,ý“ÿ/H° Áƒ*\Ȱ¡Ã‡#JœH±¢Å‹3jÜȱ£Ç CŠI²¤É“2Xɲ¥Ë—0cÊœI³¦Í›8sêÜɳ§ÏŸ@ƒ J´¨Ñ£H“*]Ê´©S˜†xIJµªÕ«X³Z5Áµk$¾†+¶,Ù³cÓšU‹v­Û¶pÙÊ};7.Ý»vóÖÝ‹—¯Þ¾€ÿ öK8páÁ†#^|¸±bÇŒKŽL²åÉ—+cÞ¬±!4h¬…-º4éÓ¦S£^­ÚW HЦ¢¶íÛ·!ÉÞÍ»·ïßÀƒ N¼¸ñãÈ“+_μ¹óçУKŸN½ºõëØ³kßÎ]úgTcÀ‹ÿO^<¯ñèˇ?¯>½yѯ½^C…*Õ)­¼Ä}ÝÏ¿¿ÿÿØŸ|~Uà5&hà‚2¨`ƒ>(¡ƒFXá„fˆá†v¨¡‡~(bˆ$‚hâˆ'–ˆâŠ*¶˜â‹,ÂèbŒ4Îh£Œ8Ö˜ãbÍ )äCžGä‘B‰ä‘¼„_Xxȉ ø¡ÑÝp`’å–$hÙ%—^† æ˜_–)¦™dž©fšl¢éæšo¶ çœrÖçtâigž|îé§ž€ö蟂J衃&j¨¢ˆ.êh£2*)ß‚*–©$˜ò¢iVœZ _Wi\3 ~SMâß@ý àWSñÿë~³ú—Ù­œáÚ™®¼æê뮿ö ì°Âì±Ä"kl²Ì.[ìgš–!í´ÓR£i§Ôf[Ƶ–jK­¦Nvõ¨J¥j«¼¸ú«òB+¬ï^ã.¼¯Ökï½øæ«ï¾üöëï¿,ðÀlðÁ'¬ð 7Ìp¥¼È#ñÄwÚ©< Ƀi¨cL1w:*liÜ3ˆ h,³ hò¬ŒFË {ÏW÷ AéÎL/¼óÊëß¼=÷wWC_SôÑD'm´ÒH/ítÓP3-õÓSGMõÕVg]õÖXs­u×`-¶×d‡]öØf§öÚg·­¶Ûl¿-wÜtÃm÷Üw×÷Þz‹ÿí£¦Ö.øà‹šÐ–ŠLPà‹ƒëš¸¦&2‰Ä“L²Œ<•_^ù©U€Š§ ««3/÷¤ô5¥º[jê¨û,•Ѱ¥å=³×n´í´ß®{î¼ãîûî¿÷üðÂüñÄ#o|òÌ/ï¼òÐ7ýóÒWOýõÓgo½öØoï}÷às/þ÷ã‡Oþùæ§_þúÌC ÅÜi*–ÂÀ$h1É@hlÜ)û3þD††øÌlA8Ì&·2 áÆpž `f%CÝëJç®™uЃ¨ó êT7³Ò성ә Q¸Â²ð….Œa gCʰ†8¼¡mÈÃöp‡> "ÿ‡øÃ" шD<¢“ÈD$:q‰Ol"§(Å*FñŠTÄ¢³x hYjâà@Â(någŒ` `g)2„ŒŽ3`Ä@‰…ÑŽ““‡ž ú±d¥ayQ2Ó 2ƒª‘Vœs˜‘Å€qŽmÌÔø("¸Ú .æ¢Æ+" F†îÍid"ÙÉH>ç“‘|çRÊUV®süã*C™Ë_Ž2—ÅŒd2ƒyÌ[.sšÏ¬æ0¯ÙÿÌp~³œÝLg4×¹ÍvÎ3ž÷Ìæ>ÇùÎ~ž³ž è?ÚÐ|F4¡-èD7zÑŽ.ô£MéI[ZÒ˜ft¦#­éNsúÓu¥7-êK{ºÔnæ2ÄèC)àÕá¹æxðàêòȺ<¨‚x¸Ùènîe`$'9Ñ]'K[mådÙÉMÞ2´ìå~*‚ÎÅöв ]lAÛÞ7··ýín;Üæ.7¹Å­nt¯;ÝìŽ7¼çýîz»ûÞçÎw»õ-o{ó›ÞøÞ·Àûp‚ÿÛßøÁ ®ð„#ÜàgøÃñŠSüâϸÄ7¾ðŽGÜã×8È1Îñ›\ÞåÿV„Á3†–A -§5·Æ£ò°‘æ.'O{­ˆIPcÖ¨Æ2¨Q ¡½?Ÿ„‘‘œd*'ùéO¯òÓ™Íôª/ÙÈøqÖ±õ®kýë\»×ÃNö±›]ìh/{ÚÏ®ö¶³ýík»Ûå÷¹Û½îx§»Þï¾÷¼óýï~|ßx ¾ðˆ?¼â ÏøÄ7~ñŽ<äá^©%ÉS–¿<2Ÿ¤‘a[Ú D›ÛÈ@PO½êWÏúÖ»þõ°½ìgOûÚÛþö¸Ï½îwÏûÞûþ÷À¾ð‡OüâÿøFöQ¹–Ï|«xþœÏ|>„4ý U?úØ?Òõ³Ïýî{ÿûà¿ÿøÇOþò›ÿüèO¿ú×Ïþö»ÿýð¿üçO!5•Ї´ô_þóÿÞ€ÕÐeP úg€H€H€è-8€Òò€Ó"X€h¨¸Èèø$8‚&(‚(Ø*‚+‚.X‚)È‚2ø‚'Ø‚0hƒ58ƒ7¨ƒ9Hƒ1èƒ8øƒ;„<(„=8„Hx„Jh„L„NX„OH„R˜„M…V8…K…T¨-Ø…è… èˆ€a8†^È€ ð[°} è€2H-؆r8‡q‚‡ÙR‡z˜‡|ˆ‡~xx‡€8ˆ‚Xˆvxˆ{ˆˆØ‡„¸ˆŠÿ˜ˆ‰†(‰Ž‰Œ8‰—X‰˜øˆ™H‰žØ‰ È‰¢h‰£¸‰¤xЦ˜Šš¸ŠŸXЬЍøŠ®ØŠ±(8‡¸˜‹Þ ÷dž¸‡ux…:h‹wHŒÆ˜…ˆŒXX…˨…ÊH…ÎȌИŒÒøŒÖXØÚHÛØŒÜøÞŽÓ(Ž×ØãxŽåŽè膸xŒ·èŽ$8€i¾X„‚Šhˆ}Œ‹ªH‹ÿè²X‹ ³X ™ I ‰‘9‘Y‘y‘ )‘™‘‰‘¹‘xHŒ÷8’üȇ%ÙˆÒ‹ô ÒÒÒB /Ù’1Y0Y.I“ÿx“´“3y“>“Õ“AÉ“6)“ëhŽéHŽÙ¨ŽIy”L¹”J‰”Pé”Qù”Ry•V™•U¹•TÙ•Mù•SyÔ"”5Y–3I–Dù“4Y€;Y”n‰–8]Q#ø‚qø‰'ù‹¹¨“FY“|ù–}˜€9˜Y˜=y˜kI˜ˆé—‹)˜†™˜É˜Ù˜Š9™–)™˜é˜”™šy™™™• šœšŸY€.Y §™š¦¹šE‰šlù€X 50 0X8 ³0›´¹›» ¾ ³9›Â©›Ä9œ´Ye œÌ¹œÎÙœÐùœÏ™›Èi›ÄœÕ@›ËI›Ùi›ú§œÝiÿ¨›ºi›³ žÝiœå¹ž»¹5œÇù›Æ ŸÉ©›à›%œ¼YœïYýùŸÅi¿ŸüY›ð)œêŸ0À ꛽ɛÊÙ›ÀY› ÚÝ© ³) *œ¼b`0`þY ú¡Â ¢"êŸ% 5À¢.Ú¢$£(jZ5z£Š¢5°"Ê£!¢&j¢(ú£=jÙ¢’sÉ’ºØùXŒ‚¥ÚòŽ!ˆT ƒvx¥'˜¥\Š¥wÙ¥[ú¥_ê¥UJˆZŠ‚\:¦aZ¦…x¦n ¦h*¦V §oz—°I’xºm9€0À£6j€ ¨$*¢J£„ ¨b@¢8J£ƒÿ¨¨¼ ¢€ bð¨”z©fp©•š©•º©š©ª…ú§‡ú¨*¨¨J¨¼ð§”Z¼°«šª6ú¨¤Ê¨Œº¨‡š«‡ª¨’º«ú«6º¨¤Š£¡j¨ˆ*¨…J£À£ÌЍb¨4ú¬ÏZÜ`Õº‰Z£Æj«¿*g° جÁ*¨ØºÔºè*{À 몮éÚ Ö*ì®{Ð ê ¯øj%`øZ¯}Š®‹­} ¯Ü ®bÐ èz®óš®èÊ®Üà°Ü€°ûše —kÈ’j™±F©–fé–Û—Ø–¢i”KZ²&{²(›²*»²,Û².û²0«²ð8³lÙCÿI µ9sP <;pÐ ;˳Ű Cë³D{Åð ÅpŸp8Ð OÛ 8 ´ŸPµL;Q µÝ@µZ{T ¶\Û N‹µN[¶ÅÐ ik´=[ A«³Å ³^û³qû¶DÛµjÛµ8·g° Ýà·Kë´q«¶iû³À³›·Š[·w«´j«µo›¸E»¶8Ð Wû W{¸›€›Û¹D;›0A˶Lû·œÛ·§Û¶D» JK´¢+¹¯ë¶’[´€´‰«¶¡‹´s0Š»¹«p¸D;¹žË³‡;«p¼À[»Èû¹Éë¶Å° Hë¶Æ;w ºn»³Ø+º¿+ºÀ{½Åë³µÿ{¸¿»·á» Œû»èk¾GÚ‹ @ ++’ý8¦RŠ¥[¿k¿{¿ú›¿ü‹¿þ»¿ÿÛ¿<À\À|ÀŒÀœÀ ¼À¬À\"²Œ“l³8é’µÙ ãÐLá@-Â$&Â(œÂ%LÂÂsÂ'<Ã3¼ ¡¡kۀúdP dÐÃ>ŒÃ!Üã@›€ÄJœÄL¼Ã"LÂd ÄRÅPÅ/\´ILÅ#œÅYÅLìÅTÆH¬ÃKLÄ8œÃ Â& ÂÜ›¸7|Â;iLÆ?lÃiŒÃG¬ÃzÜÂ&œÃD¼Ã>ÄNã Ç&<Â5lÃAÿœÆ¯ºŒÌÃr|È-@Ã(lÂ=,º3üºwÉqLÃh,Ç;œÆã ÇwÜÑŒÉ'¼Éi<É”|Âh±ø§¤z9Ë󛗳̤¶³º¼Ë¼Ü˾üËÀÌKz§EW€ÄL̦éšx»;ÉQ¼Æ*ìÄNlÊ+ìÌ/lÃ8ÌÆ¡ÂÔü¦¬ÇBŒÆÞ|ÉhœÃ{LÄK¬ÇIìɬȯ;Æá¬Æ­¬Ã„,Ä@¬ÈÅPÈãpÅPŒÍgLÍ*,Ãq<ÆHœÍ/¬ cœÍ½Æê|Î},º‚<Ä)ìÏðœÅ×LÑܼėÍíÀŒÐ Çî\Ð%<ÉÎìÄ}2¬Â¬œÍLƒÌÇ ÒjÿüÌjŒÐáp¬Ó܉Y±ìdÉ–D”E —kÔC©¿ÌÀ´ì¤OÕµ ÕS-ÕT}ÕVÕU½ÕXÍÕZÝÕ`ýÕbíÕdÖe=Öa-”L³Æ¸“0YL[ÉŒ,ÈiLwÊ€Ð)m×y­×y×9]Ê&|×9=Ãw×  ¤Ì½ŒŒÊ˜ìز{Ǭ ÄE{Æ7Ä È Íì|ÈòÍ•mÉL|É+ÝÇvìÈ› Ød׫ÝÉ:Ê©]×zĪ=Ã,œÊÿÜÉ: Ð}ÜÊ4¼Ò˜=ÇÂÇs¼Ù7¬ #ŒÜ«½ÜzýÙq¼ Õ{Âv½Æ¬Ü3=ÂwMŠʋœÄ„ÿÑÛ-ÂÕ»Û3üÌI<Û*­ ¶ËõxÖóÛ€ïÍŽ¹|‡#뙤yߣ™ß›¹ßö­ßýÍßõॉß>àþ-àþß >²RªÔCíàG½šÕ ´‹-Îw¬ØÚ® YÌá!<ÛŠØ¢« #žÆÕ«Øw]âÍØ#¾Ø"Îâ–|Êå\ –üظÍ⛜Ê,>Ê.þÈÖ{Éä¼Ñ§<â±ÝÚžã \Ê$.Úv,×á »õºÂKã¤LÃÝÉ™,Çû¼å‡{Ê7^ã1É1Žá2lÊ“¼ÊñÉ¥}ÈÈmÂnÝÊðÝ<îåá°HæÛÄ”LØß׫­×ë»’$kÖ&øÞ ŽËXÿ½–u:§j§lš¦ŒéfJ§”Þè‹>é–^é’Þ¦šŽé›éžꜞézhŒÇlÌÆL ³€ÁÕµ4ÞŸŒÛ,ázLâ6¼ä)\犽^NâŒ=ä0Nâ¾þâ=®ÉÜýØåüÂfìÙÑLÜoÉ«ÝÊ2¬ç°žåHº-ÐØmë=|ä‚ÌΫ ä¶NÊœÙX^ÃB.Ò¸½Ï&Ìã¹ÞÙé®ì–üíñÇ“|×ÛmÊÈ>g>Ø9®ÚÊÝ׫Ý:­Ø-€Ü!žÄ¨<çüÞÒ3<ÊßmÒƒÍÜ©½ÔÕÀÞ²<-KšÎÔõ á Ϙó-Ì$_ò&ò(ŸòÞ²§jÍÖç¹êªÞ0ÿà¶8œÂäÌÍ'¬Ò(ÜâA ð-°¯}ȼîÛ3œð9ÌáŠ|Ã;ŒÓ˜|ÃúŽóšýôëníp<Çs¾Æ¢ìå9®ÊüÈEïçn¾æœ\åÐŒÓÜüÍ<üÆÞœÙ‘ìð <ï”ìÍWOôtäi¼qÜç!LØ_Ú­ó9½Òw=Ó2ÜÒ¯óé}æo¬ <>ÊüîæÛ[N¢š6 (œF“ÈÎãÂ;,¼qÍÏ$ê:¡ŽH…1¢ K­¹‡…lÀóš›R„Æ;Ž2-i ‚’õÏØ{îP“[ ¨R7+–R>7))·ÉZš‰¢¡lI1Hc$ÓZºˆŒlu‰:ôËo2Ê'ª©ªÊ*̱rd,zËZj^™¢¦Þ³úÚ×,¦æýªCŒÆ¾V8a†vxᇆxb‰+ŽøbŠ1¶8cŽ7öXc;ùc‘K&ùä‘S6yä«ô=0c¾j)‚ÁZsŽ+r+·Q%ê©…;"•AY3=7Þ”³®ÏÍð[³––Ï»Ô *ÿ®³™´“,hÃ)f½Èp“ì·«Ëvº¢Mä|è±àÈ.§Fií2ãºÒW1+ènî0âÚ7„¢v$_1ÒîΧ­nõ︑ºÖÖ7„ú¤‹fú/·ð *re=Ês¾üÆ óg§Ð*§.là~½²wvØ¿º7v~mת/¼z÷ýwàƒ~xâ‹ßݯ0Çü+àåaø„ ‡h3í¡.“-\÷rmˆ3=‹í¶bž J´»Õœ[i¤NÛl5@3ò“zJË“Íý£0e‰Y<3 Î=¤Ê=òÓÔ|¤"-%y."¢ˆŠ8¡½ ̇E\Æ­Ò! NhF»Û‹üuE+f±Š[Ä"µØE0~QŒ^$cË8F3¦ki ‹T¢¥hD+:Q‹f£½hG5êQŽ~T¤åAߥ™5àL5SJ p° ÿ´Ï'jZsLƒ¡Øæ–•RŽ¢ …”Ò¸m#Adq~*¿öT-QÖxü¤J¦ °#–*Îö‚&¨Ôm2( õ€¦´Û¥XÜJÔl°™=gQ­Y¡OOOÓšF- s<ƒÉ³&òdAN1“‰åÜ&ó,>AèšÉÖ`­…Õ”àdZd¬b³‘©fÏÿ@ rÉIþI¡Jî’¿îµ/Ý…Å_õ˜X˜Ç•ÐêÈx«emk]ûZØþ_[^mÿR˜Uhî"‘yæÞtÍÆ8Ä<ñ ÏLd 4ܸ&>ùÞx˜“’8iR•Áy%^y©¢§ÚÚp¯*£N™®`˜7pÍ4Á,z©ª;!W¸âñ € ‰‘TÞFVyÉcþÆ5@Ñò$Ÿ‹_[Íñ·\îéítlµºE'…(9a$eÔíâ‡3ë|JTð¾Ø(ˆ#>èB”"… ‘fO4qggÖ" ´,ò¢±=­¨Ïç¸Æ8Þ±ŽmÜc ÿXÈ<²‰|d#'9ÈHÿ^²’‹Üd(?YÊLž²“‘üIyL!XˆÊÐ9ÀÔÀ¹qɸTH:ï,Æ'ù“¤æÓÔ`KPøõž²8C>ž‘™Sh²¥¾î0W€C#],}®ûç®vêÈg’‹€N$»ÒÛýö¾ÍP+{‚{UOø´“‘x×Îúc/N»Ó¾• pœÊ}óTbhñÎYA±®ï53­ÌE.@wåÓd±'’A«ÊMšp¶€R– ­ ¼ñg×Ïy…ÆžÕ§UþÅäû´-ò!‰XÜ2jlP$X¸½­"p‹ûÛåV7ºÙ}nr³¨Ýñ6·Ý-oxïëÝö¦÷¼õo~ÿ»Þã¸ÿ¿Óïƒ<á_øºÎð}Cüá8Å q‹#üÝÎþc™D¬¸”=/eõTæü”$la»Ì·”–›º)3WìÕ¥n¨‹’E9G“ ÔoȶšÅŹX+y¤p­šg½SvŠŒ°xû^É&goœ[z«Ø#YÉÔgz¥ù*jב𬢜nÛ›C3“ä¬êj8}Ѓ>urä ²Ó àb‹nêèP+>6ŒÔDŠ›Î¿æj&¥P‡—m¡¿ä®vg¹Žo/°@›ñz±¶íx‡»ÆSûòš·üä;O¯ÌC~ó¢ÿ¼åKÏGÌÞó^Y}êO?–ׇ¾õœg=èUoûØßÞôµß½ëyÿzͳžC`aim sÊ„#¹ÃPçä’x8¿°ãa´¶òÔ¬4ói†ëIú 1•-FŸJ}}Ï®¤ülÓø=.\~ú~ÊM ÒUOL–¨‰™xÌIT’b\¶â‘hëÁ4X1š7[;ó«ŸØHXéµO» òP  ™ˆ´–8§ü¸ ‘øª¼Y¬^ <:¯ š)œâ´—ߊ4u2‹ ¹^@¼uÓ·}É2QŠ$’"}û6Œ±L¨ ¨Õ)“ÚÛ"Ü ÝI­#D­"\BÐÂ&d¼'lB$dB(œB'¬B%¼B)ÌB(ÄB#¤Â-üB-LB1ìÂ0dB+4CÓó²?ê²ÿ¥ Œ3(†p(°ü‹œÌ)9kiR®¤ùG‘H25ø¢¡ä²$eI”²)§C¤©.·šíH¹+ ´Ó9cº“È ?eè‰kR¹¼¤äè¾Ìa!Hrº¤jQ,Ÿåp&×H °iˆä¨”›J±Ëž«yL‚Î)®Y+ 3*g!¢¢¶jµ™ƒ´Íh°I&M, kaÅâ0Dƒ|(²ø#a!\˜ @`ÛÀ@¼Œÿk¡ŽO)Aª¾^ÓŒq‘´Âœ0SêMÒ¯Ö(®l¹bÉ hœ–U'PI3“(¡ ” DaºZ‹Œ[S  È’È¿9JçðI„¡Ážˆgº´\zfÑɉ»Ú •kSy3ü«rCkÉ 6©”5›)Ë0íû&‹ Äp*Pù–ô–’S¢¦0êTþ\‰ˆÝ:DÅ*¶h[ì–jÉkÏý@¹­!/–œ&ðAEqî«KË&ü:9s ‡uʬ¬Šƒ‘n#1 ±A!Ú ƒY±nó!Q±%r6“ª¢(Œ-=QMQm‹Ïó Á ƒA)°è†Uh Ÿ§ôJ71*>#¡PqK¡c«¢5B’•»©“ƒ¨…Lƒª™ÊÈïIºDK Ÿ,¬ÊðO•P.u¦¦û”U8°;ˆ‡;(Ó Ó2mLÿ25Š@°·¼Oì þxË1¾1-J2>SŠØ@-°pÙžKÛ€rR³„¿fTdùÓ?¬\S%]œÎÀ¡ Œ¸,‰åz¿ª¬bŒÃ"Áâ vZ¶f+­å¶“=i³ÓxBGÙI¢&2\…‘\=‘]íU]ýU^V_ VbVcVd-Öd=VemVf}ÖeVg•VhVk=V&:‘ÄÓ²{Ã8ìžYÆœ»&¹ 5Çá+pÒž¡Íp-Ýà¿AéMzæÀ¤³‰š`½öP^ìå(¯ÒPœN\Ê3Me†üªÀ‰…õ 38Ó`8Óÿ;Ù€Š †OLXåsØü3Ó·ôX P>’C>EK×Éz¨ºŸ¢™öŠ»O¡O¥&™pTº£ GE‰š‰Ñ6–Ð4@y CF<?kÁ¨xÐÄû ÄÜ'µ½Êc½pŒZqœ1rM­ýL® M¯ÝÚ¯íZ°[±-Û°=[² Í)‘–é¶š©Q6¹ˆ`˜Œ¹¯¤k>”ƒÉúÒ ¢¶#W¨Ÿo’¬`J®C9–¼ 츤:† ÎMèñ²R±9Rƒ¡©Â“è¿ú[³ >UX>Ý`€©1}Ø2-S˜2Œ pØ„=Oeh>þ8S;¹S>=O:¼‚èãÓ>Ý]@5³ÿÌ ÜÎ1šCz¡O³FÁrKÿ™;o‘T }‰ª¬µ©10ËaT¶+3P›)¢›¬KSÕÆ¥…AT"‚ÒPƒ’Aw#¢m¨Ü#)²ÁËJ[ú5ÛúE[ûÍ_üÝßûí_ýM[Üë ˆL¢7„b¸‚WªH°!9¡è ýˆ“ò&`$P˜½ŸÈu T2È9A 'Å¡k¡¥J ®‘ŒCªœê(ŠäسgrÉ»â\÷ ]Þ-ÓÞÓóL]VœÓm>‡¬U¨XŒåÔ%SÝí]Ðå]Ý%‰;†`ÈXb»âCK íH®ùˆ´Ó ó° ¡u&iªû¨ªºƒ`Œý<9æ] ÿMƒ¾dâœ]š¯ÇXÂËÆm|'zá˵€äANdCVdD^dGndHfdI~äIŽdJ¾dKÎäJÞdLædMîdPþdQöäM>åyQyÛ9È®âöü@¨ÁHÆPc’åðY “ì,•?K¬@\$ëhÙÐ)÷À•K9´í¢:PaŸÃÈ´Ì*Ÿ$ e@0kÓ"¦áÔ¥Ýè»á†XÝæ+ÝÒÅXùÜŠM¹3íaŽÒÕæ;½‰Ÿ(JNÀk VŽ$Á¡yêQR•*Ái£ ÀU‚gÁùòd [[¬PIˑСlä,iƒ½ÿmã±.Ô1Õ2²jcžÙêK2áhž§¦§‘.i‘>i’Fi“Ni–^i—Vi˜né˜~i™®iš¾é™Îi›Öiœ&i¾¤n䎭¾"¶µŠY‚©ÑU>0ê³Þ@ü”üØÈZÓŒÊyKËXÙH*‚e:ú» îF”¦ó:+%Øôt”n»:ˆ5[ã`vºÅðI˜šµÙ-g%6S‡Í­%æS.S9¨€"hˆžHš94ç6gÚUð&>°ºvXÞPçBjS%Xa94—¾çÄôfºØ^ cïÐPEúKª|5¥ ħš3”ÎsÇoñNkÀ†¥´‡å¶ÝѾå“CüJßýán†‰m¾ çÝ=ð ¸Q3õÓʶ¿jŽ•ìIoàñ` tŒ2%R8I³hì.¨Á/.Um~þÉ.íÒ/­NôÎn@gEj‰íÃÐÄGÇ˶¬Ç,‘§µv!Qþý_oïvp÷ßpÿvq/wrÏL ób†ÓOÍYìR3ÛOŠñlÊ•†(°oFˆ•uF‡!@oºMÀŒUƒ ¸œj:sŽùsJÿ2Uùu?mÞÈxWWp@MÝU0ŒÄç> ‡PØK+°+pŠýÜ3•Š5Œž¨ô&vˆ%Ô’5Ó‰E0ðìp —¤ÂîŠÅ?Ø ˜jT¬ì_§æëMzÃâI]\Œ\ÇN쀗SªÞIëEd³ecÚÍí'·n37ÓPy“(„!{ôнà6‚š­sw¹7÷¹{º¿{»·{ꆙÁ0à<¶ÆÆÄYjôŒÝZÃwÔ¡Úküú*ˆ=ø@Ÿ?•³ŽYŸüñ–uêtx NêÌÀ; ®Ò†qL¹ÑW¼ó§<—’—ôpÈ-ŒMÝQ‡ü>E¢´ÛÝåþPØ•ÇÝÿš¿ÝÎè]—¬š¯üÌŸúqY´ñöΟll´låÏÆžzNËîýVb—zÅ0ÝôtubïDÄ'ïöðˆU ¼Se¶:Žö%´ãjï½°;¶ö'Ì…lÈú¿†ÄûÏþj Ê$8° ƒ 2LØp¡Ãˆ'>¬(Ñ"Å‹3rÄè±Z™eÕh•¡²Hj0`¬RæRY¸x-ÂÝiaSY ™áµÜ3܆;0ã…û¹¡h Ÿ?ƒSÙšRW…›Õé„ E‹b•5êS®Ê²ŽuéSkY²\c¶(¶3kU­r'u)5«\š?ïܱº“*ß¾Tå¶ f0&.WÿmˆwاPÇ~c6¾£s¦å;ƒYŽç™K¼ r‚9>Jºrß`«î›šï†`J±ŽE»Óf ˜d&ì~[6ÞK½@isJ3Þ× UÁ¾õ TóΗt·Â+”¦q¢ž­¾S(seΟö%vìט|[”i”5PðBª½{jeNRé~¿~'¹ç_~ü¸‚ø!È€&ø_‚þIá„Rx¡…V¸!†jØ!ˆŠè!‰!–8¢‰)¢¸â‰-ªè"‹îwÒI$í·ÒV¹´‰VDavN?yçRnE]¡4EEÔa¡iUTcD]eÙwhÙU”SzEW]Õf—S.åÅÿW\pá…×VOöeÜKRª™^zUñDV˜±¥ÌÅÅwš¥UTLY6N8ãÔÀ%ªL“làè*¡…¶AlDÑ”Oª­Ò™`ÑYÛV-ÜA†œh±9A1²Q–ÓÇ©'¥¥Jj–2ÈÙ Õ9…#(P±Au”rPu&SM”ÂÉ“LÈ­"xEY'^RPÝ©^T—*X(öÍÇK|û™TÆB#õG˸ ‰HäV3¸ ¡;R{ç60î¸í±{o{$Usîµýúû/À <0Á|0 +¼0à ;üðÀú~+’H(•C7ÅÔ¤ ©Õ>N dTÓX{šìhh²5fòʲ©ìÿUGy¶^âQú’K3KŠœzJál–x6Ÿ`¢ÚZÀú¤lGÍšlfžQ*•gËñ”¦Vu é’f‹‚'R#ïô¨9JÀ|É–èi²MJ&e{^mUÁäÔ& ‡“÷NdÔvê¥Á¸”Ô¥I¦³¤ruä¡Q&ÅcäyZlàqSŽ!7³zRÅTšsÏM½tÐu·çÌ5}û^|ÛÚ×/Î({„þé÷ Åÿ¡tûì âW ïÀ/X1ñ(¿¯ñÉ#¿üñÍ+ï<óÏK=õÐ[?ýõÕc¿½öÝgÿ=÷à{>ùã›/¾¼ý%ØJ(Ñ2K5ÝÌÁV‘¢Ê òQáøÝÿBq*&¸Ûܦ™#Í,ŠãLlNãÒNR~q‰ª¾Ò‚ H­™‰ PÄ3œºp08ÆzÍ™VC)—a.0˜wZ¨Æ|§*HCUVŠ—5IëL²â‰´Vó–±ñ(„:TRä@¥V–yÔX®²;Ý!QMT Tg¦®Øm7¼y Zh•¿ €Zq”7P„×0%¥)U(XœÕiYð†u§lŒp ””\u‡0àD©¡´ž¢Âð„†&*”ʵ²%útK@êPì¡GæNFü݃tI(w0úä‹B£Q‚’”¢,%*O©JS²2•­$ˆøUÉoÿ&¸Éàr2‘ÍÄ7â!€Yn'v4:»Ãj6G€œ$IjúuúÂ!Ç/Wù —žR"UÇ*«˜`Џ¢0ߤ `âŠÊšW™"ªŠ1–2Ñ+ÒœÓ`îçÂ^Ž­&‘±œUø’•ÀÈižÒÂ`ÒøM4~ Mºá¡ÈÔ’g0òL¢vâ–¾äoN|˦è8·M*½’!Ó£*U+*2sYž2P(ÍÍYb£ HØŸ|l«[ùòð¾5¯‘¸/¨À»—~LR}ígÞ²W¾ŽÚÔ¨–$ªð‚×*]©Õ¬rõ•^ÝêW» Ö±Š5DiŸIˆJààc3ÿË^vx7•©ê1»¢”ý¼rÁ€›KòÊLïfëlª/2ÌÊ7ñ‚¥ÄÎ%LUIèØÐtÅJ„qÊjð²Q¤'΢©>uÙ~; ÝIÕ•Ò€Ú=ç5e Zyº¶, :Þ8–”MäÕ7q¹m@*Ðo2³€ÊZ7gˆ1• ™Š•)šªõ§z%WÈy§\ÎRÅ…OéI¤¶èƒ†|´ w±³€üI‹URx—„å€w^õ«¾æº/ºòk_ýâw¿þí/€ù+àÿ8À>°\à#˜Á n0„,aS8°‚h±Œ¡n˜08ƒ[x¨7Þdl¤ñÿVV66¦üäc #?ïr\© %86œ‹^²K§ðÔ=ÆÉ \¢ÓKÛ€išçw¾â–ƆÐ7¸=–u5$3t-÷ÜJKÓã xŽ9©–¬Å˜ÇNÙbÿ¶C°Ev&ªÉ 6]«¥%¦i¬[‰ïg“–ò³&(þ3‘±ãpDH‘®»‚ä{-÷¦7½ùÑä¢$¼N&úwòtïh4;öjšÓ›î4¨?-jO“:Ô¥µ©SêUŸºÕªv5«_-ëXÓÖ¶žõ­i]Þv±a_ `ß,@ÜÃdUVNdÈë:{™›0(Iΰõã?†)¦5¼,²M–ë@s±v³šóÿ¢glF¶TYÔvˆÓ]¦oÞTiIK§°Xx6+T©s˜¢}ŽxZWË šå<6œÌy#Î6’áÂX¼”Ö–"vøŸ¯i¸fsÊ'±´ ^¤­p÷áKÞ&0ËöÀg‘ÜBtNíU®¥’d#OùPÓj#v}K¨IM×S±jIˆñ¼ç>ÿ9Ѓ.ô¡ݽó¢ÒÕ×rªé0á'S0ƒÜl`ÙÁ°I՟Ψ~c¼U:1”ZJºå¿Í³±¥j·mcPÅÞ .<ÊÛÛ'À·î„oV¢"8­ö•¯h+}-=éÞãz®%,åI­ž¤lG¦Ú$·ß®è7iûmòXjèDOEeÿæ²…-~‹ÂîjãvßóŸ/ýèSúÖŸ>¸V~V÷8u]ËØ0¸¨ÂúâDg²Áú]wåf[<7y¡~t›È††kú”`qÛÐ}û]±OVK™ìÐÇdEoØÝ·Qº1™Diæáß…ƒ ]Ú5æ­ ct¡…¨Ø?9Þ`ýÙ‰‰˜ŸAœ³d‰›ÜÉÜ ‰¡ rÞö…Ý$^þÉÙÈ ÞNtTµx‡¨L r jœŸ „”\O¡Ü·$š„øì`ÿ’Å0!|©z‚ôzAˆfZY…’Un¡†!Žá+ùž$Á¸hX€ ›Ÿ‘Ê8ìÖñ³U]ÕE³ÌM(êŃjõRüIÅYôvü 8ýßßý˜ß•ÝèÝ͉mBÈõÈ1 ba`‡ †Öâ&Þ˜þÝÅÝàÜÉcÜͽ} R°ÞN‡P„¨ˆL¹õMµôRK)bÛuIÿŠ!ÍŽYßÌü›Ai=¡bTìš Ø,RÞ2ÚDÝ)£ˆ‰œTCíÕÇí]KÌAUyÍKöÁËR9Õ,aûŒ\Í¥ Α£½¤aÒ¶£º#¾£<Æ#=¶¥YÿI8UÌUƒ5DÊŸíâV\ݲáÄÕÝÕ²ÙOðÒüáàéÉXj}É»=ÙD6”õ_dqY?‘ Ç ðˆ!¢Þý…CBYÿ!Ü(Ž…¥\ÅÂAÙ阀Lzd4ÍGv ©\Çè͉ٖ»•©@Èôäæ©Ì]?ÛV¾éSoíÆ#JRRWßðboÑDâÆ:)Cz!#‘×êü‡âǦz9šïŒˆ ˆ{!ÈÌy„ËÍeGÐ¥\Ö%^Þ¥^Ú%_æe_î¥_&`æ_º\Ua•¢¹-4À2HHdBM$D ZT3Ú!nR’›®ŒCÞŒh¢ÿ˜(.à´YÔB"ú":”thÅ&<Ônä͉…`F`=ÍTf,Ç"æ""–[hÌÜ|¢cµ¢s˜ \ÍÓYÍäÍdœA“$ÊoœŸÕæPÚÍDÚ>‰åÉ ÖÙ˜uÛ»]¥þÈàxöœÁbUÀb”§,‰VL^¢UãëüÎðîÈŽ£]ÚðéžðIȤß‚˜a&±ã<£(‚Öc‚è) €$!÷ÕŒDÀL‹ÔMNDËkZ©dæœ5üùHM¨Öá%æuÉKr¢EþQ†GU¾E–¡¨“½(LœbÖ”I2Jn›çÔ¤XØÍo}–t¼ÄuÜÛo ÿZQr$f…¢Zð–2Ì]uœÖuåmžÊ"”_äFÈ]¥KÁ×eäEþÍQ)eÞˆMOj¥ˆµiˆþ£-!¥ÜZyåÉ!ÈYÕœ·Ô‹CTÕa •6ª ¾´KA”¡æK¹ ¡‡£>*¤Fª¤N*ð—ì(Õ@üÚTá2,SÈðÁMfRdû¥3–˜¥ g [Dc?…$u˜ä"–jž¤j’ǸØ1’ÛÞŒ'tæbŽîvy ¾}›(Ö ”¡‘±î”Jtµ].m¨ÞìÄF,øt#¦þb:fH|K0f¬Â…>[‰õÖÔ¹_¨âÄtêá›.ñS dÂLبã­E­†'®2 !¶„þ Îh‘HYßL)"bš,™V$VYŒ'ÖÍ<¥“hIW "±¢GQÐÕÔÎâ6…"·…$mÎ߯ ìœù¨ ž¢&"ÙL|&yÇ3æ‘ÚEb«CAçNî͉]ß¡þ…j)¡thû9ÅOr¤û%!5†Wž^ᦙå†8N!}¢¥‚´%ãÌ¥‰ƒfî‚n®‚v®æŽÿ!å2ª$yRº5ô‡ÒA΢. E©†ÌÊ‚ŒzîjåĤMŒá`TÜ[a"^œ¹ÙPÓRäÿA ¶cØ  ­>YUÃaE`Lєͺ$“)ÉÍÎQm i ¢Vu@déGþ¬ª” ɯfbŠâX±x\\èé“©(¤w$%ßܫʕ–­-]Ì„nÀÄkÖ¯â v­Åm‚ßÀ{Þ’"žúT:ªÄ¸ÏTa•̽\¡r#¾ ¸Qµ s#¦©—çrî现—pw¥Ñˆ¤‹Ä´‡ú U@fÁ5éú¹Rj½–êÞªîü5äm¬Ô¥Lù²I”ÑIK6”ÒÆÿ*óc”a 1ë™\…i¥¤Å]žC}ÛšHœ§h"nQÉg-tG¿äHŠŸšMÔÀey`‡øe™« îÚ:Ü¡˜jÝŒ‹=…Tê†VÜ„3v±’œÕTLÈÓ&H1uq̃È'y±ËäˆÁ†nb>òÎeîíÞ ç\Ʀ`r2av2(²({2)‡r)r(£# :²ä¶%¹ÌK ÿÑÉ:Û”VÝþè¡ÏrÈ …Õµj  ^QMYÞõ&Hi™‹’ÞZôîo…ÜIÐï­î… mÀFmñ­ŠÞcé& éìÝ]g\ín`éfôN‹lYÅ–t|â×àb çÒÝôÿ*†íUðeÁÝÅýãk~ ,*e-n‰w¨Ê]‘°-cUáé| ììŒ8¦}*Z'õç£é$WRðe¥v´G4H‡´åöç$³ ˆH„«W3·]ùHê¦÷†ùÛzÇÞÁsûV‰Sô´ç…Õú¬K©Ót­·]$y.Ç0§á­]Z¯1`š# 6ÊQ2ä2aèRR^!NòvÒ9º°äbº.®uz­yz®…:¨ú§—º¨›:©Ÿºª«ZY^‹¾¸¥Nh»|5$Š<Ç6ÁéDÔ=ÝžUÝùa+´(ÛKo\¨p¼V ÅDÞr–ISiáèí.ÒféòÞX1NÑýÀ ßQûÓò=m©"†wJ&”=aÙ~Y²Ò„S¢É)N”ZÿÙ ­;™ kYS–‡u¤9wK†\´‘z¨¤¶ßP Ë°¯µùVœb™`C_ã, „cãg05”ãU£ n°ëRe¢ª€R¡€‹´ÉŸ<ʧ|¥..EßN\Zac’D /ÔOn`Q®g‘lŒËúÄÉr bàO‡Þ†.¥ãõ.nËîºJ](q–ª¯<ÑX¾ž‚™c‘÷LA ÅÙ¼iTóN‰uÀí¦yÌ,Ù¾ÕFy„…’Ò?ÐEjvÇ-œôt’Ñ{ÕÌý_´ÊÜljKq†UŒÃFµ_йýPÉÝ{…s“Û]Çšü›]×;x™œ5ˆe‚¬€Wô¦ãžåVÿ®ŒP:ËEUa;DÅŽ>Å–¾Åž>飾é§þøªºHŒ*¨ JÀriï÷.Û|y.¶f&‘Ðd‘Øk«Ê«nIz«ÓŒ p¶q =×o';­ÎÜŒ—Ô oZIÍF`MãýX qY”Å»“KÖ¶«ù”Ù… BQ÷’³™”Ê5]ûIvÉñz1XÔ¬ Q¢¤Žc†Ä;ñ†xð΄;†[eð 2.$x'\<9†Û0#Å Á”• §Ìà* Üf¹xlåË)6wÞ¼ÖóäÊuÇî-üdÉàËÚ¶>%JØÍ…S|ؽX÷“ÄOÖÏÞà{àQb$Ð0øÉ‡É¯þÞ æ Šç£ƒ^‚É¢`ŠçŠx‚!Á!r ¤bŠéŠAŠè‰ˆÉB˜2JèÁÜ@m;®¸Kê0DJ*(PzÒ‰œhœ‰ÿšjš© …ÄŠG«ÒÇ iZ†&ÄŽ Œ(JR±#ƒJr&+i k0©âK/¿ÀSÌ2Ã<“L4ÍL“Í5Ý,L«À€òQN* 3j™ª ñ×^«Ì2Ïèó,Ó&ãl3ËȘì5DGò(QÓµ,C×Σ-!…Šah õbÈ Úž.6ez{-ÓK?Ò»ÿÊ#U:šˆ¢„jS1¼þH­í¼ôèk¶î\Í.»ZQý4@å¼+μFmÕÍSŽ=‰„£/8hã‘ã¥`‚ùè×>$B/üðÁ˜ä07Âå(âŽ`*&·?ÚàÀÓÕ×\ÖbÒ×£pü‰à{ $pÿ_rgL²sÚ©§¿äôR®£¼ jb´¸´xËŒÃ:ŠÉ  ÊÉ«D,±¡K™å•]Væ–c~Yæši¾yæœmÖç}îhž…þyè ‰>Ú褋úH"ⱦªš’R±Åž@Õ½ò6ˆ,²Ì²û–Œö”‰¬Ð×6#ƒ3ÑN;Q@¥ÕŽ2*{‚ôä¨B[÷Vˆìp¸ñÖkn(òoðQ ©nOï­…SRvòñ¶ëM¹áÈC<¡b¨Ko‚ó³ d+Ú ¶„.ꈹúF‡èµO;úÐD‚OÃW’¾Mø¢+œˆìÔµG¦ ¾•,]¬TDà ÿ6†‚™ o6`_Kbhf ¿Û“’B,œpÔñJªœº~9±ò*ªŸ&®ÿ~¥>KÎû¥êÿ)òƒM2v1 TàØ@>‚”à)XA Æ^AL`ª%Ââæ’S­È7 éÍn¤ÔÁí1®IV|VáºL9$t9¼L‡‚UÔuÈVýéGâœÉkè#ìx´à0 žï=dek¼ÿù J6áeÈAlù±Mx5±8 GÛ†¤$%iÉHËøQ“hb§Ä\ J°|%*WÙ#’EMÄ¥ûÔÔË6ùòM¿f0‰ Lc³-Rq Çþb¥«$Æ(|bœs„ó(Ë’2Ë›Lf )Òpf›‘:”7ƒ1"r@–U8rÓ¸ubkˆ¯:{ÀC{šJsë‘"©0‡¹éð‡8N„ è|Ó…tê5}”È*\3ñXÇr™šçmR×ÔÒb'sç'½fV¢jH‹R'uò8ÅøÜxXÇŠÆ-’©ƒgŸÑ $ÅKQp®G’õ0îUî±a@¹käã•ðÛåÿ[ú·K^6ÅKcæX¶4@”¹ÒIW¥-¹J'¯æ«]ëXÅZÖ°ž•¬h5kZÙºV·ª®më[åZWºÞu®yµ«^éjʰjÉ)ÔˆÒ2Ø0ƒ0<=ÑÎõ6`· Ù.måTj^R™xÐ05ªLŠj¸¼1ª#ç ÞÎhNØ´ !MŠú¶ŸúìªoÝO©e¹F™„Ÿq»Ã&ø›ÜÄU¹cì¤å¡n:ãÑ¡Kg[9Øö‡x“"ëæC7VGº‘ JV¥(¤ÊýëÀ»>vñ¥$äÕGs,g$Ë™,vg-à˜²aꃘO¾$Õn…ªõËÊUŽÿò±Á]* T%FúY–ð„)\a _X‚„ÉŠûêÇ#¬TƒNÒîxÊ „i8¡• ;É~4±†`{´Œÿ>!S "o+ ƒ8ˆ w(†IÌf¶ÔØ0Q%©¡´UsîZZaœ fmÑXJ¤–<‹ØIe¤Åâ÷ÖèC‡YkN£•Çøüf£° )²ê¦IËÕôßs‹©ñ-pA‚D@¿¢AÎ8‘{ÃgçÑvêz¬|×Ûâ= –F)jfõ·U¬Er±ˆ¯Àѯ¨<™tU7|±CUÃô›ÌŸiù1󪬤ô-Q¹4¤ù\i?zЉt£ýèEGúÒ•4V ö*ª4¥PS5J´TÊ ŒÁ‚x€8€Û:»šÌ P›g×ÌdÂÖ¨‹*$ äˆXSå¨ÿ¼9¦#©†£+(´9¶B­÷#¹W1k8 [¸õ QÖM9@òá÷¬zìÅÐÒs†lˆÂn‚>+¸g^ˆŽÛŒµðÀ“=Ù5ŽJÌ;›ƒÈQõ· ‰qòñç„ÔU ’óFŠE5©FúÍ‘O¤sgP` Ì?<@ªðÔ$ û¦Æ”ÎÖØ—uö¹¿}ïkß,.‹üƒjÔá=¢E>¼ÐÑÇ5ô:€&ªÐŠnœázðÍdð•µ-³Z`y°ÍÏ8nq…“rßvŠUj…»”× òa}VNO.­HjB•0- m¦•Äd€o–H­i«}”êþ¢+>¬À¨ ÃîóP÷ÅOÅO+Pæ}€¤G@ˆ~-­âa2AÀ  ¡ôï2…²…4Pdz8à (cR¶iYJÙL*öŠ«S¸¶ƒ‹Ze<Ž Ì âšÚ ã€ã:€å$ª,TbpuãÎIz®èô²Èõ¸íí`gõ b…|cV²M=¢îÊ µÈè‡âOØÄæ8ÿno$#Ë¢+`P¡æ!¤ vX"ÌË%®Ÿ¶ë7òήå$ íax©’„Fò‡ƒ’"übPmæNíK¬b—°$0:m Ç*eÚ0•°‚I@H!’!r!#Ò!%"'Ò"+#)R#/r#3’#?Ò#C²#G$IR$K%OÒ#ËÀd d ]ÒJ8(–’jIx­¢Dš|ç)ÆáØ! 2„f ´PhR6 ³ØfmE³åœ6„@åàÐ+ OÃV"ÉŠ8‰µˆEWÚHE J<ª$Fd¸~svåPÐ §LD1¢OŒA¬ñ_0orñY&BÉäñâãõ²«#`Âsÿ Ä ,«½fJ#LÄTí80¢2øHaðÆ%p*>$#‚.D%neDʨ½D&¸k!¾¥{€E~¥CòƒTPNøD yI1¨,Œ)¾¢ü 7ë±ÖꧪLÀ8üº/8¿O8‹“8e *LøÄIx“Á „I¨á2EEn#&Îà2Áspu6`bÎnÎn$‚á6Á;=ë[Ü€·ÂèÜÀ#ÊI#ŠÁ5â«D%öcŒaÄ®6"=6!zC%úˆ~ ;lЈ#pª=3!:!J`ÚsâÏOâaæ`B'>'CA2¢’&`&`>¤?5Ñsÿ$ÅVË[T*¾6JäO¹F¢6^r#7ð%^Š¡âÜVÁ2Ç¡B2 BÇAÙ)Dm6âãAìpöÀHU‡'»Ê =)⊡Dâ­‰1¢æà^$tº¡ºá·HâqàÜ@yÂHÏô5zê :áKì& NµI‹á¸¡7®6¨tS:!t´VA ÒÃ5ŠáâT änÔ0åØ!ƒÂdÒЖX²•RTuHFÔfÒƒJiH²0š)~bn7‡W3WsW{ÕcÓy3-0×fb#CØ1#Va>a $€ˆa"]ÿ€Ú ÂÁ ¼³pÀV œð¥$â¡°4!X>!þ Äà[”Ú`D€€€;q 8AV€:áEpàL Da6ÁsVàV€66tâáÈ.A@¯ ‚Áìá@WS$€üa ¼¥Š:`ê*3Ftrƒ V Ôá–@θ zPÀ2Id!d¡T _ŒÌ@ÿ$Ty6|á ø@,dö€š@&uâ¡¶Ay*ƒ|€è€"¼¥zÁdaDŽèarAN•§ šÀTªœ+}âT•oX­N–O—ð‡0¦‚¡ýñ‹ÏüÎo€–OXuU£yu£}•£½bjSü<Æy¡"Jz¤×¨A„Jå4a§tà@;á Ò-B¼¡ V ´ù%p€L¡´À Z=»¡¦´`kãa Œøº!:ÚÁàP'rš  ®ÀÔÀZŠ’á  Hdôà º ŽQ¤¼Ì rƒH;A²¾Á2IBªêÿ6ŠÁ0!¾tÔs€àÎ`@' æab¡ pÀn3ª@ À€M:V! 4ãÅ,áø€þÐV!mÍ`¦Á‹a ¨`S".4À è¸S%*Vá²A÷J þÁ A þú>¡> BAë‚8áö Š@yv—^!Z'å`žÙàmcwQ`ô¡ Œá@ŠA™ƒáºTâA Ì’A—å@ Ûr€HWâ`øÀ(T Ú@öà8A¸p€.Á : LÕÔŒA!ˆ´ŒAÄÀ  LešAVÁÿXY©TBÁ @ Jb:áÎÀBYWº ö ¬è!²Á¨û#>‰x{¢ƒÐ „®7KÆ0«NµeÞðd¦ÓŒ$KÊpeøÑÖ’—cVûPÌÇœÌË|ÂÒÂb#ù”oy½âXã×UR7à´à,ÁCyVd! „ bŠáP@ Ððv˜ÿÁJ€@ª ¾á„zö JÀ`!¡‚`D@ ,ó¯·:áµÏI èA4 ‚TÙÖ@ºáæ@`[ ZÁ8ÀØ` ‚AdA ŒÀºA%ŠVà À ÿPÌšààÁŽGæ¡øàÎ ^‚a<ºq^Ä@ö`¦` ðe ¾ \áFù¯ÓÁJ@Œ¡î ìA XÀ^8ëBçz*àýFhš@Îàr8y’ÌÀìö[º¡‚a  –ù €Á©ãá„9 †àd#¤A ®àb!ðâN7;ÆÈ’“éÎ*.U¤YÑðiÕb¿Ø%‚R¡X¼pW:d`oO<w:µÛ“ÄI…u"ÇGá†OSÿ\`qD€@°xkÚÅsÕ/žÐ99.Ab”mÕ•;gì©Ñ׊äªxÅ~ì±Ç‚@¼qÅ|A ã([± ãpÐ`g–˜`îìqf^¥©%…´2¨H±`%DP·`‚Ð+îªÈivéL¼W)és4Mh¸3²ÐIiuF¡à8fPŒ83AΜqöÈ*pgƒÛ\{Ø9úlC±²Îäbw'Þì.¥í/ظ=ôÖ¬awFu19ºÄ<2²ŠïJZ2y5u§u¡öÜà6aÕ1¶VjÆfêU#09&aI0øX€9 [Yµ2û«² ð‚(eÈ5öÇ 5û-˜ V£ ÿ…ýI¸ ƒZ8¡ƒ~¨!…&ø`†Õphâ†B¸!‹¾èbŒ-Î#2Öˆã:ÚÈcŽ=îèc@ùc‘Bn(b„ž¸ ŠJ–Q¡‡ BIMÕ,C¡5™„£ —ÅÔÏÅ„³A0Å(ƒÃbLL8wÌÁB+lÄAÉ^ ÑàÃßPf<ÜrÅ1à ÔȲ‡fŒÓB W€aL,>…ãh6U\a;W¬RD'<"ñ\¡‘öÏ%›LµJötCN7wÜL'v´!‡,«C+sKd­™<‚²ðSD8Á#>óM]$ÆBñŒR…½ð‘ ÿ[{š#»W3«ÀÃN0WP%){´óJ&ÈÑ)( ÓÅ'hÊñ 4søàJ s”ä ”51M¸«Äð1tÏ*„:‡¡tƒC0™tq ߎÀXaé;ÍÁ…,ƨÂ|}b;.TaÌTWœáÈ.èr†2ê…Ë(Ø!E4ÓN ²À¡[<{3%²Ô"Ñ*V8Ò#l °4ö˜a@7‚ÅÓ‰)ú°’ج$ÒÎýÁk<™ðF&Uä°J&« E3¼4Ò‰FÁìaËíP"ž2%`â›{hD@7`X!Í7¼n‚‚R €¼(a5´ì×€ƒ´¸ºÿ骫¾_ë§›~"-¯›~`¬³¾–eœþ{ïµÃ<”J行!_ú‘Îù¼‘ÐO/}õÑ_O=öÖg¿#jØbˆÖ¨{ËPCK œƦÔ2Á²µ©ÛÅ#†´ jÒT0ð!:{„¸±ƒ?èfÄ+^ð9¸«õ¨Â<®pÄ£º˜„Á¦x OP4|¸ÂrŸ˜ƒVö „+°ƒÙÀÚHЃ.%i…1°!‹MéFŽð ìA± d‚jCÖ0…ܯx=>á¦xˆ3|С‰È‚–hFÔÄ@0¤ÃZ™Uÿa v¸Bƒw˜>Æ,ÌA»‚'Ђn¨G)ºØ<¬0•`Ì4èÄ7Ôq Ρ +0 ö žbtÂ{èÅ‘‰x”ð0CuÚrn€áRX@'Ì$‡"Èâ v@ çÀ.oÀ1Ñ™ƒ,ÔqŠ­BñЂ$‘ ¼k|Æv ´ 5È…(áÐp© ¼M<65\b?À]ºAWd Tˆ1tqÍ*sð<ºÑ iè&s°D(Äpƒ=ÌêbøÊ7’À—]é óÊ _æà u2ƒ-žî@ ÈsM‘÷–´¤)MèE(ŠR‰úÿ³¢º|åžEUÇÙÕ.wüYÆî®TÓœât§6å©N{ ÔŸ Õ§D jQ‡jÔ¤"u©GmªRÊÔ§J5ªT…ªUmú»˜æu¹SPù¬”Uœ–¡¥ºR•¨±ŒøŒ œðÛDn”u„t‡èç‚¡Œ;ÀÁÅøÆ/*Æ–< Ž`˲2Ñ`øÂ8Cpà ‹98bBA9ö‘ÌJ)Ùb ÔP„™q¢ b ’ Ð×pÀ+'â*3€AfÁÙÄ%°D¥iUèƒ/0Ñ ‰L‡Nœ[ÞT…QXQ ë†ö5tâ]ÁP‡,J‹$ø-gƒ48!‹ÿx°iGìqÂܰ!?0ðµ‰Ô ð(FtuSa¡‚ùD%ž‘ YlÃ]L‰Ã>¨F 1àFV°“pŒC ”ÐÓ4rSŒn´Â …]·’Y (øÄD:{ôá ™É8¡$*„-;XÔ0Áö0†,êAGntà PX^Wq(|È‚Ž%¦7€Y½ ö°‚/Pp·Æƒ&îhGŠaÎ`TÂøpD2ñ® ˜â¿hG1ÎÖ‰¨A•È›p -࣠Ÿ¨8%ð{X"•ƘGÿ“ÑÑu!_‡ÒíÇÑ.bóJwiLkÿú@_Y™G鑊ï£L*µ¥MMêS«:Õ¬Fµ«WýêVÃzÖ²®u¬oMk\Û:×¼Þµ¯KÝé!ÈÓž†Ñ”Pt:ôõí[›j1dÄMp‚1¼á ?Ô"ò OÚA(øŽwXC/a»¦f”è…%^Ж!B˜YŒ"»°Ž$€²wÈ …5L"ƘG+PðÊOŠ`ø†7Z Œ (£4€Å:A2ªÀ ó`G&xe_¢,È1Uüð rŒà`¹™@†th98¸Ä7~P;˜Ø]ôè9.¬Á ¤ ?°›ÂA†L˜ó0­r]´ƒÿg¸›>!€º™•† „¶E­˜B+²ŽULãhƒB¢ÓBÁpC–Gõ TÂÄʈx6¦Ð8Ü¡ÊÞZQü\a ?€+VÁÇ]5ÁôðÃN’‰ac‰ß…á1b¤F‚ÅHÇàQ´+#@4šÁË (CZ/0>"N¬á” Ÿn`bøÂÄöÍD&`–ÁPjñ…)ÖÐ emeð@èÑÔ›zP–MÅ8 ØQñNàxé<'VÝáΧc¥úW×þ±vUþb…ÿì’ ÿ¯zuÿÁ«’–×#&RE€h€ˆ€ ¨€ Èÿ€ è€(xj&#'åh'²<“f>WbVuô>m À [°+ª!{8p§A—— ÙP1£ÂmŠá *£ r°@E  V&PâqE@§E³²zµBOáñt‚a?ôThÒÒB÷ƒ&‚q™©ÆnåY$s Qä&0«pIÔu«°0 qoR { ec± ü´ fÀd2sÐ ““Á1Á%àÄÅp†m± {ð O@&7…˜D+öà ŸÀ ³B&ñ0¼ÒmâqÝ`†› ,áðfs A ¡«à†„2M;1Ýð  ,3áÿg`_8W¹"\êQXØX´h&á°}ø.G– {°Gw 4£¼³§Lb`grÀ+ HŸðfË[ö~¶O`|4•• ,3[¸…7Ë¢ABч{¨ NP WJÁÀQù ¢ƒù ›læ9žvÂlL2R‚<âR1E<.;\5-u"Xâ©‘™‘É‘ é‘!I’#i’"‰’%™’'©’-É’/¹’1é’2 “3i“5é‘YE²ÓUë§‘¶ƒ; ” b; ÀÖ@ ›Ð8P Ü@³X?hS6ƒ×%ÁQG”²©Á9sÐeBÿ&±AYv·`¹ñtÁÐn á2xð•vã&n¢n’•?v3P}7Pƒ7X—T±‹A‹²ÙÌç„f©e¼ÒrÄmû ¥( 4hyw5Î(q’y0d²z}’@G’!s™q[!^Ó5ßs¹%º¡H×A·C±‡ïÒ|9MÜF2j)^weŠÔ±W5¹±#O§Aï"›1¸Šñ |QYôäŒÑJºa {A£Òœ——`–;ñ.Û©‰¹±Ž%?:Hž|ßÔœº±ÄdQeP~e x<øÀ!ã#R¥ÓhÒ"˜"(ÿ  ò$jڡܳ=¡*¡Š¡ $ ª"è—R‚~å X²:i5ÊÀ B  ` "Ð $\À : ±…_)™é¹´â–=ª i¹nayµ›9˜ƒ?ZœFŠ–n üöt¹…$C‹f9LÊp‡WúŽöEœ$  ,c5»)}ñ8g"@ÊRG$X´"„ÇŽ"MªA› „LJ° _IxIe‚l¢  1Ÿ{a¼D&ñ¸ ïj)™]7+²!Iq¡ôœóÉrËò…¦HxQCŒñ° wY&ѧ¼´ öE+ưÁ‰›3*EÀ•âuÿŽâ!„v"Ryƒ± @ ÒH¹º|žvS–w€ËrŽUG2( µë5²¯™Ò9(Á ‡:r~´ãþV@ <9 ”_µ;ôç;÷éëW>¾Ó®ü¡®É¢¥F"Æ&lʯÚ¯ú¯ë¯ °9²<R+5iR”hÕ>$³ ÐG°m ̤: z0&Ê"?Å9MKQœSQ&L꣎šš‰•`)™”‚£±‘2¥_I2|é›ud¥z™W¦x‚9xwH*bº…TÁŽ0ç(^³"?–*\Ò5¦‹Ž¹‘¤|ã`u ²/[Y›ÈÿG*4a"AÉi–ÍI+búîÒn••2+™g󚘷I+(¤œ³b£’ˆµ}ÌI£*™ÉѬyµ‹ñŽÁ` ªÁ‰wœÈz£Â&¬"“xœBŸ¡$«ŽÐùµcˆ›ÂK¬·¬R”S·Bq¨ÎÊÀ;¨+¡« ¡Vêiˆ  ÒhýIR,¢IBjÇæ¡!ê=Ä6!:™:c¥ öW‘Å“:´VSuUUE½×k½Ù[½Û‹½Ü«½Ý ¾ß‹TÏ‹‘ìšSý‡¨S‘Ö˰:Z˜B± ÜPb £Ÿ`bi‡–[ø¨‘8MÎn¹zn0Åéÿ¶¨šBáxz²9üõ¨$³…ÅÀál»è&׬ŸNŒ¥ÌçVø¡!b¥9ŒibÇøÁ vBä&m¢nU&ÊJ»‰~Êm*kuñVâa Bñ«…(O§…|ŽEŽušÈ› Š}X O`?fr?Œ¹ l!ƒË‚ÕŸ´ÈÜ –ŸÀ'š‘W³XG™ âe&«0W€¼r‚sX{€ƒì)Ð?vŒ{PÇÜ5tÈ‹Bˆ~|8pŽö…qÜx?ÁP²ª¿gð Ê$^pëa_[Æ]r†±)Ÿ +›Ü1f”øù­Š–°úº»,RlÁÿ¢Ìóʼ ¢­ƒ‘öii½¦kÁ ÌÃükÄ,ÌÅŒÌÇ¬ÌÆÌÌÉ<ËÕ$˜†j É$´`;P’:̶Ky bà { oÖ Q}ÜГ¨½©œ«°›´XÅ| Á~ଅ•U¤©1M¯  –qpèÎ3Œ¾é&†ãŒy…J‚çÅáŽ- ®˜™ ]|‡²Ù~PGœ ÅàÒ qoV ÛPGЬñ°ˆpÄÅÅà+ ï¹ îàp³Â|Åà› 9Ç¡Q Æp¯U Gpé1‰·P[Æm1Ó@P9Ð% à ø€ÿ®°Q kP |á Û ­+P EM ÒPЕàŸ¸ÁmN ìpB¦X]ÀÔ‡S­€Ýðö0*Å€ ðPÆ` Ä@ ô}8À k E]À «ð EÝ} ŒC+_gÀ¼4„ÄÀ€ | Òw°#à@ © Ý`j0Waü,—À`ð%Ä`ÓPgA9™ð{€B öµ K’Ÿ²ŸÌ˼A‰‘M5;=•¼S%뛾äªÒ{Ÿù¡ © $2€û:ííÞï ßñ-ßóýÞ ú"ÿ9 :Ër>©3w‰©¤ @ÿb° Ü@bnz‰Ùª,ð°P ›Ne P Û†ƒÁ°PÉ"?|'Û&c&a™ƒ› àlÑ'³q žà&l "g’ÑŸ ÉÀVºðÝ &CnRUÀ  {0ñ0Á&€ÜP&ÞPP˜ ó$z° ˆ „‚”P, @›À "*_P¡ ¬ nð mRŸððà TÆWr€t7Ûà­à¦B —@Ä ÊÀÓÀÀ"E°ŽÐ@ ˆçˆ Ûpåö@ ÑQPÿpðc&+à°®p{Q KXøÀq:Ð Äp kîr °Z¬ÀœÐ ­Ç |@ õp YM šPfpЃp ßP˜0M°++ ìÀ,PtÞ ¬°Æà¬Ð ]І…fÓ ¬P  HFØ  @P±€”@ ÝÐ}± rhöì {ðWãÀ°eà‰f  3’4ò öjËû:>éh©R35®då:ðJSÁã“4Éó7Ùó8ùóAïóCôD/ôEôGŸ’éÚ“/¯·Ó:ñú ç3VX¢Í$Ó zÿ óp4 bÀ  bÐÝ •8Z Ä'ãñP 9ð«[&Ê0 8 mÁwàPp›xƒ• @(GZ š9ÄT&› p—SÁ Æ%%Î z}³_`þÐ ‰áˆ°é¦Ÿp ‹½ —Pâµ Pð ñàÞ€¦Ë b@4Ð1u UZ0 ùQ äL 9ÀGÅgµ"­Ï&g r€ÄÄà_pš½¬rðk0à—À Á1 WP ñÐê¼4 bÐ AÛØÐDw3vMà :À gmPP/Þ ñ xƒÂÿ'؆E ÌB)ÓÀbÙ8I£AcΕ9gìÄkժɕ;ÅL]!væÑœ;Ê&¬qTÌA w>y«²jN†%ñûd ØœbwºÁ#àÀ;«l éÄ®šqwj=‚3¤‘UÅ‚ÍcdŽš â͉Gc4z{‚Ëd/<>Z®Ä[s‰˜zÝ.u»¯L™jƒA¡/Ä„®F­päÉ…[†ly2µËœ7­YòcÈ=s&L«4fÓšI£]ú²l׳mׯM[÷íݹyÿö¼÷pàÄ…G~\¹qÙ¤A›ýœðçèÕTS£¦µea®L'Æ[6œVîDc˜ÿ!`ÄL3¬…›Gªà¦la‹b‡Vàgƒ ™ rŠ '˜xZˆ'à8€€ ‚™  ü‰'à qð M&0˜pîÀá‘6ˆ'œZî(¢Y>i©«n¾p€†OâY%žN.ÙC1ìcœ`p€¦n ØCÈxP(¢˜hŽÆ©`d)¢“Vä(É&*ádð+Ƙ*Îè¦ 9VÙ€¸¹DˆpÈGäÀ¡‹32d ž+hxf¢äã€,âÀ$žnº9Cˆ=ÜÓƒ‹ùŽUø(ÊÐ#šèäˆgŠ)ª“/ŠáFƒ(s¤0À¤§îPt1¹cŽOø¨d †ÀÿUu¦>VˆGA±+ ªÄ'ŠáŠ å=(@'¹ M`ÞØ ŒQ”ç {€ÃYä0ŽUD`÷CÇüe2ÄŒRe޹Î)¡[ºrj¡QfF¬bµ­†–›)š-c“âµ¹­i¶üZŽÅ¦c²íØÇ=2…œµßH†2P“ŽkT\µjX;@[5æ–¢N,p¬‚W>!¨Gv•Á `ð#ª+HçÚ Š`åÈ,¢˜Æ&4Ô‚;.Xÿ€óÛ,Z•ehxÝí à9|NðCßš:'L—yWð×®„`¹¯ñгûRç•i(hQ¢PœôF¢ ÝáÒ¡KÝú˜¾…QDþÈ>½ eÔz@韪>M”&kr(B82q€5 E5qŸªI?ú½”Ö¹®i– ÐÚÙµv׺Ã&˜g]U{«¨[í6± 8±d߯A`pÔN}»'+=7Žh­Ï d¢œB“N„z'´Ð´ßpÊÑ&б‰LlBÕÌ›ƒ]»Á¥_±N1=µÀ,™pM¯E±x\a0š'My2—r•Øáå.‡©Î¤ü—9Ëÿå4³4bÎ\2/ÃŽ.݉™ílmÔAò‰OÞ¶ÝèGGzÒ•¾t¦7ÝéO‡zÔ¥>õµùÆ”I>‹9C‹—} ’WH“Ä`3à(E¸Â%âÐ…/K@~¨€Ü0¡B®vœv787hWD\Ý븾ƒ¯»íT e(bã„B·:ÛîðW P°èœ!:7¾ð!|©mP Ýá)‚ü@ÄxÕÌg<)\`"\Çà )b^MZê $X Át†hºÇ•Ľ̫k`"OÓѹ¯Þ½/‰ëÍRÓÕ=nàí~)¶ 2úh[D€Ñj7ú þºgžMÿHí’U];0˜ïxòmíâçImA&· 9»a¥ð)1‘Ûap³`³Q©³+é³Fô𨑳O³ ÕÈQZ 4ȇ—ãUZ²Ò 1¡K%èˆéh1º§‘¥sº9—¹9šž¡Á\Z§_šœ™š˜áÁôÁ ÂÂ"$Â#Â$4B%DÂ%tÂ&„B&”Â'œÂ(¤Â+´B¬•ë™›ÙÂû¤¢&^ ƒ–q2.7(àƒG؃+X…Jpøð;¿›ù8‹Â;í¢»¹œ@ü¾ù°µÁû ¨Á ¼)?ð <\ùˆ½–x<ˆÿ#³:4Ç»ËyDØ»I!íz=ÂSCˆÔqŠÚÁDÐ#´q¿sû>»ó½f ¹ÚsŸÀ®ø§Z4ǹ;†£–h Y[½¹ƒïˆ5æùÅǃÄ ¨©p¸ªs£)¼Û9cˆüx‚H@œÇ‹—˜¸š£s»µ•ê Ûq$Û)¡Vô—s«3ý[³È¼OM$»è?YìÄÇ!¼nl u¬©s#‘ ’ÛÀ•™š„ŽÈÈ Tr%[ˆ4²¢#Á«Ó¹CYÂHëŒÏ² û±’DÉ“TI“dÉ”$Á¬+ÁXjAvz™eh9jx‚»PL ƒ 57ÿ¸‘Ñ #ÔFíJùHC¿ë»·3epƒ@¼³ ؼ³ÆN@Û¹ÁÊp˜¯äÉ>+F )FÇ‹¸XÛ€ï°Æ¤ò—Ñü@ý["žä¼eŒ‡q(4bì —ðÎã=ù»»“¿ÑÛ< a¶ ¾;X"†ØÄv\4Þ["A¶žÀ4 AL!JLu«ºˆûƒ¤:½»,‰»P•šxœé‹‡M?»2M}$À:[j5§(ÆÀ¸†@u»¯UD¨%¢ŸJƒ½xK´ÈÍQÓ?YÍ»ô—9H*OÄ´Op‚;`ð±Dæq‚6€ @(™1ŒK“+šuZ§jÀ¥—³Ž›‹Aòÿœ¹˜£™tªÁ!4OZˆAñ¼@%›±T±Sª±‰lÉ•LÉþÐÿPÿ\ÉÖ(ÁD±(k€(›²Pþ°(S9ɽë=¤Ü;§Dʹ7˜»Ú¨Õ ¼Ë¶û {¼ÁGÌóJùË DÀ–ˆ¶ í3PFÀ)†Û{9C)ˆb Í ¸ ×z¸~™€95š¢µO»³X‹kªÈ~ù„•ª‰P4¾ë1â€ а‰š·šÐ§nø¶øøJ!Ë‚X…iÈ7Ü´œ~‰¿Uè„b脬‘O€´ìIG9·¿ †=h{©‰.íè†Þ±œLàSpÿ««o»·NHšb˜†=˜³¸–9H7Æ´«N(Gý¶p(Y\Õ` DÁÇñ£Ê‰A¼4”`ŒªÌ Ѐhƒ°¡Þü#?ˆÕ%”!%kŽç“ÈŠ¬$CЋ”H}HÃ9tAÌ9îì9œCœñ¦s 't'ue×tu×u}×v…×y•ו»Ž›¬Ap šeÐAt'›3#ã×2H ‹ ¿ >2›Ñ¹5!òƒ@Ì ‡6hƒiÈC7ðm´1‚6ص\9ûàCÄ3Í)?Qœƒ -Û‰’ppxØËù[Jp °»:ÿÙгÍ"øJ[ˆ:+D(QÔ Ô?°Fé? x˕ʆ ê—ÀP5>‡¢èÆNðèAûŽJH€Tm¾;¨9¸Ì~‰JQ7Ûù„XÖ‹hƒÚù§ X!x(d †JàƒñKÀH?(!á”èS•` Ƚ¦ø„#„mPÇÛ)N `žN µ¿Ù8ÀH?s€8¨3´H ®E¶oË€0Ÿù3#ø#:»¿U0†yÐp#¾3hK¨³¸ƒW†& M ?8¸=H8€ƒ‹]¢€…J8?Ö`H^ø0Í &³1SÊHgÿ] c§‡lšSzšK2¶a1ÜX±™,_«!ÐÍßÕßþå_ÁUA´aÁæpPòT ƒðƒiH pà mÙÛ® Ø98Ø`è‡ð€¹óÃè‚* §ŒÝp'8Ø ¨~ý(! –9ÐÄé=x #e!Ђ.pÝ©€^@!ˆ ˆ‚¶ÌÀX…Cøoh ÐýY¨GRF(ð€-8ët XoXˆé†ð€CÈͲ ¦»bLc(ãz{½£õ€*x8†¸ (¸„ø(Ù; *–CˆûY‚•º–U¸‚¨!è¶ûë0øó½;ÿðˆ}Ò 1Š® ˜ÐcÀM3 p„oÈVÕ¯*¨쉑p€…mˆÎR äCØ DÀM <. Wt€gˆF5+‚àƒ8ðüÀ‘bè!¨xØ%õX€¾ÔY( ‚nèZ½Õƒ8ÀYqÕ0éGcæ9‚(h-ˆƒo[·#˜¤P˜ØDè„m0ø„ˆ’bPÉøÞû$˘Áoíç~Ö™ôäWT¦õ C€Ý×õd¹˜ëg‹àáÐVU¢ºŒÖèæèŽöènºXR²¬1Ÿ“1”‡0Hop)½ÃÞ«^?7˜†=t¯`À ø† ÿ°¨ü8€€…/h´ÈÃ#h4q‚q‚K !ã?HKÜsЂÞ[žJؾV|:–<ù®/ ˜¹ t˜·Ž; N¨‚5hGeH*p€ÄÌm€‚+Æ…(€Cƒ$ežbè698'€¸ÔyGX"9$0(M‹Ã*]04YˆL €¾¥(†ðÝ/x{!¾+p\Þ‹‡J0ãï¨UЀT¡æ!è…ŸU·ƒ*àa»R•/0#®3Ø(øÙÈÛ€X‚vè|¶nè ÀÍdžF.—ô‡3á ãápèè‚"ˆU 1ÿX‡avž€#ð„O˜ˆÕë„_` *Š„ó€&ˆUX5(zXç~Q†i(i@6(8€˜&9ã Ô@Æè@¬óH³Y_‘<± +ßKÁ«±hU¹üÀó×ôÀ‚q,¬ÂWñÏBq‡ñ—ññ7O/ôB`WsMš©©É'kù 9Ø„W cx‰é"€*¨Ã`ðƒF›DóXƒ ˜† † (‚è‚G5¿AÀ*p‡›ö“L¨„$ õn()\{ V8ʃ´hê»3«6pk\ì ‚/ø6ÁQÌN ƒÜÁGƒXÆj]ÿ…‡<îŠ 9¨VÀ-&…ÜÛ„¸áꀶ„¬`ˆƒ [7¸p:vRˆ+ ý’5>ƒ)€b†˜Ohƒ¶X£Þ1ƒzê,É‘8“`i³`¸‚{á6uJèŲ1c0˜o6}¨‚i°?¯00Àž6K …5è îVL-?Á‘‰‹A(÷ñ”æþ÷º–tЇ+SíþÀÐ5êÒ@9˜(˜¨LhU°ÕKh2‘«#ø9ƒ8œ€JØ ø‚CÀ­`€àM@„Ô8Xƒ&}>¨iè† ¸ºïmŒ~M'#Á¬Ó V"º|I͸èlÿÝV·©ŽÐ@²Ó`ßl…yÿÝߢ'ú£ÿ_£W ßÈ«ËV ¥¶9¦(ÃLð»6xDàL((ù‚=¥'dL¹‚Ø᪵Æ)X †›v/‰ƒè¶ – k¬µ™J‚Úä‹(»º ܃.è›(Á’ cE+¸ Â;Ôv`¦¨ÌL`*€b’`7 гBÓ³óX•¦`ˆo؃$)N8Éo„Ï…nøƒwì8v€Ÿ‰>°ðŠk) Ø:0cdµtè !É!i-@Þe¶, {Œ#ð€•zœšè„ lÕ«5nˆmðZû™œ¸ šÿºËO _¸7žüµoÈ®|S•%°„Ó×ÊDµƒd¸§¨ŠëÇÔÙ®$€X‘k΄xÅî\Ù¬Ò§Lá6 4³îÎ*ÊVmèFÉÓ§'-VÅ[õ Ål9°rP)·J«”kã WâÝ!/]›8®kÃÊÛªnZêµ ¶*XZež‚B ^Ö@=-SíéVZ]·.ûZÍk™OÉÒ¢6V«Ó²jɆ]»¶ìS³ÔÌ– ›·«V¼N«m ¬¶Ìà­Z Ì•«b­†/>,òäÈ”/[Î\y3fΚ;ƒþ,Ú3éÐ¥G›N:óଔ[>\Mml­j| –7µ0Wî(ÿÛp‰Û14¦›&BL·N°Ä¦,ø†p+<“³!X<'™ÀP:PAŽÒ;Ÿ4])±`âÑ&…½K*òºŠkÈò¯„m…6´QLlæÈ1úúÃF»&ˆ‰Œ½Ü8Ç/úË1zÌóÈÇ?ú1}$ )ÈB"òŠ4$#ÙÈE:2’œä#)…Œ6gÜäc丯jä¦^¹ÂM‚‘œJèáÑ FŠÑ ì¡ÚÙ@¢ã† âó¹B‚áÀâE¨À*@%1x`w2ÕXÑŒ Èa>—‚B+qœbPÂÜÀ÷‹nPÿ)›d!‡ Å(8Ð46á¹q´`ÜøA&°!œD¯@FôDT xDHñ±Ÿ,š°” Å*Uð\¢(Ž-TañÄÁ&(Ô wÄè ZA¦q.ƒ °Ã®°¡Šš¡Æ(HŒâƒ-t Àa`é¾ ‹Ù‡>w¨%6½ÿÄ£²8CŸLù¥Vü`h‚É*:ñ&0*F™¸Ã<РYÅêó`K µ oÈâ ¤“üð 3dB£s˜(Qv¡EÀAº…ìáÐAŽô àJEZT¦Rza±.º5ZÄŠÆ0Ÿ±¥cÓÇ&—¸lÌ+w±ØÄ‚–™¤!Ì6ÒM¤ÀöȯÜb7»ÚÝ.w»ëÝï‚7¼â/yËk^첑Že¬#À’¦¯¬èf,KóÍvú‡4¡ÛØN%º@ l!L86;l!ÜÙÀ6‚Àâ ~˜†v¤S(ø!ˆâg< ðaä?B ÝO'°@Ä"ÿQF8’Ñ œTçm CXй9Tâ î 8TŒxg>"šCÈÁ9+Î'9ðÃK–‚t ,^ÿÊ”Ž@ÚUgÛÐír”#>8¡ S¥"æÁîø“&ȇây¼ƒu­&2…9ÄÞÉEb¸ 8?7i“4:`*?µI](U›úô‰¤c}Ž^ø@ž‚`µ+P*:WrlCÍ>ì‘ ;ÄðsÀ%ÞF!ÿA"*ȃV „Viã˜@?VO±x] ÈLhž¤£!RŸÚ`…W°#‰hƒV@‰°Gà„.Q >”'Gèà0„d£ gpÀ³â¼Š¬8%ñªŠ5òÁ–|µ“ ;LaZ3M>†2s—±(pƒ·a¾•Ãÿúr–{»%hËrSqŠ[<ãßøÅ;®qsüã"9ÉAnò‘Ÿ¼ä(_¹Ê[žò‹ÿvá{©Ïœë•ã: cÔÐMX¬A 9Tàwø‚%¶ÁKtÃ?_ø¦P ¼(Pß'bä¡PçÇ£ áŸQ0î|Ÿ2é«£W EqyËëT´;£‘Úb7QŒ#âGìÅð{ ÞiÊOà AŒãAìyeHG‚vÛÛø™ 2䪟µÓU0<—xƒMgè„R}×ÒÉŠBÕ9WKÃÄRü@$¾kž=sZÀO SF9ÃåÈ‘bLõ%ʨÅ*jáÿÊL Ï¡„Šë¿4;‚à}Ý8áƒÆÚ‰n‹"‰îíÄÀ tâÊfÔÆ1‡ËÅдû„O©NCVwPO&Æ9Èã€HÓG 4P Ü„º­€@¬+\¬@0ƒ´ºtÁÃ4 ¨NAdÔ–¼àcôËt¹×uÅÑ%]l  `H×%¹ËöËÇ Þ‹eä Á„ t±—{­Æið jôàú`áþ` ¡>W¿M—À„z¹FuaÒ2ÜÅÒ<ÔR'T: Ôá€0eT2| uÜ|l@ŽH ˜R<äíO0´YLˆ=•!ÿ¦ÃRˆ©LÉ´@ëßÕEü¡›üÇ´€ØíO „ƒçLÀ("æ$™Œ˜5M‹½Í%r“|à“A˜”2ªÙÓî$È©•Ï””ÊRȃb|PÉCØÉqæ”!æx⨡ûýŠ«¹É?Á„Rõ™Äï\„¬ŒbK±Ô¤š® Ú”Ê(ršªaš±5£]IÚƒDŽ®Pˆ ƒŸ,bíDìIGD0¼KF$_˜ÄCtA%°Ã peÙ‰7TÂPT@<ÀTB4+ÀA0²øÇ¬EL@mt ½aE`¤…CÞsÝÄHdp9—^àÅÏbŒ°‹IÚ©„ƒ]iH8ò¡ýL {\åìOu˜e|¨áòT‹MÉâÄÊ݆‡=õßN:5¦ žÚ=¦5Ú•$ãX¥‘DãŃºÎc ¢2x¥þG:‹]c\‹ìÉÞ©)Õ©¡‘,lò©¨ækþ î°PcY&²N¤Ø² «ÔÂ×\ÁÿK5Á#¬€f•pLP­‚;t7D€/\‚¬ÁßC B¬e1CpBFlÀö¹TúÉ÷‰cÑT¼ØÖ¼`EÅ4† Zƾ±Q ܾì'ipÅ ÍÅ<ŒnÍEFJŒ_ZÔ¿ðÌÑ4èƒ2h„:¨„Bè„Zh…b(…jè…nh†rè‡zhˆv舂(‰Šh‰‚h]0ÜÃqÌ…ªèp‘žð Ï,)ÅGHÀ#\BÄC/ϳå1δ€":b.ÁC$â¶™ˆ)Û•bÒe ˆf`V?=ç^¢f Ñbr<ýÎhîÏ2æN)D0ޤÅXäÐÇòx¥™‡ÿ—Ê,žf\ÚIìݪ9[B§Üµ¥±1¦cÊâC8bg¦Ø@™Pì‰C ‡©hjæ¯Ð&‘XêjvŽìñik¾D\²&æ$Èòè&eZãòXj ‘¢]ñ)‘üŠ ²&³¥ZåÝA0gTw§Ší騄ÈAl +CtAà„Ä2Ã4,ùXSŠ #t-¤U4¤dèElð¤b¤‘ùÑs™à¾Üd†^ð$¿u]×u± áÑÌLÚä¼Êk½Ö¤½ÒkMòçÆQ!åÖ{Õg^è†nðŒ5\AaâsìɲzC´Á_sl²me®&úP* †jmzåkFó(έªžf¨öY«‚*ªqÔHhqE¡ÏÿÏž©lÂH0Ѐ²­‚vxŸðyà@Aul€ÀtA'xƒT€uæP|n½y è†àòŒ Þ`uì ÝäpÝàí²«v¥fhkÞ‹ækUãëUßkV[µV›ÞQ Ö† n†- ÆÔÜÈDÇø&‡)M@\ç ŠNäÔâÈ/XªÜMÉW"ªx¥Ëªá_6puXi‘._&JôpXŠÕ-æx%Y¶l§Óh2­Ò:6œó”ds8ÀÓaš1Fæë˜³¦4EÔbìÝpgþÇY&ˆÞ\P™2}ø5N)« ­dîô$ȯp6g«¶ Ÿ¦¥þ!«^jÿ9gí ƒín¢å1²ænž%ËÒ"cκeuü%ÔX<C%A%Àã@+]FùÉ›x"D }BICKs'äÀ €qdoÀÁÿÒ ä@r‚øA盇îè>$HÒ\Ï4×ÃDdS|2G*òG"2séE¶ÒÆ_`kàñ]R¿ÙÑîÂ1nuˆcµˆsu‰“¸gÀFzéq‡“« F[M,CXCÓ G8 Œ4…C4ñŽw¦T¢ïbÃag.ÇÛ´<ªœJf H”D%Ùa—P}áS–á–ôá(–P[j°;C0Ç:´b³ªW*â03˜Ò¶"NIû¥êÿ £s S*Ývj§ºó ?é¬m#JæAĘÞ,>ÁÏtXÓ7¾ê˺‰®Õ-úàhË"ܶp@_úxBz£—QpÍ–*b çË67Ϊ*|AxB= k<`ÂT `C68@çVq9®Â,æàÁ?|lƒ4xƒ74AÁA°€ä˜À@6l+lC@VÔ ¬ÀN¯1(ÄŒxvÙàzõë ÂqTçgoÌÀèE!Ë.ƒš®ÆÐ.(or‹"¨Äù…ÐÐ{|Ù»rá{½çû½ë{¿óû¿ï{Àû»ÀüÀ|Á#<Á+üÁ/|Â3|º¨DîŒE†òÃpë˜uÿPÃìvøm‡øÆŸHt¤X2+"ºA›mG›ùåùVÉ:;mÊÊ/aRÉU†£2tâ”N d£f8{©nò]t‚y%z¹È2ú”˜T6ïõÿnŸ½¹O‡@_êµ&+Ò¶oãéÿá™ÆX4Ál0Á„ÐÁ)œÐB 1¬0à 5=þêKî¿÷3įKКñ–¡†š+Œ9`š6˜&˜iÖf96ðc“`â‰‡Ç ˆ '˜(ÚÀ 76†É &#y¢(#ƒ®¼R¢•â¡(¢$:ˆ ˆÂqH¤¡@zH˃ÿ[ £¦ªˆÌ+ ‚è e‚!© –2Zi•xª¢I'˜¸Rs‚x&j©ƒ‚Œ§L–hrŠÏ©DZi‚)Ë,´*–Kh¬©é¨=•k&„ÂRË%HãRIկČˆ,…<-“ ¢D³Ì¨”áƒ#*˜c•`Òq¥`ŠáR r@„…CѺÑLŽ( ?r€#‚ŽˆÀ›#\aÁ|X8¢ ?P‹ ‚lŽ€ã•#Œð8*ˆÀ ЯŒ|†Žkò¡.>Zæ‹°¸û¼ïÃ2þÃáðaý na÷¦;Î8é®Ó¸;îþX·ôHö¸ãó<y;æÊ`ÙåÝ^næ™e®9æ›ÿiÆÙæœyÞÙgî9蟅.šè£‡zºïœK»«Y»ç@~z:†[l ÅežèrÇ`˜À“È"ˆ,f­Fƒ‘CÊ¥jŒ²É ºtÛí8 Ô§¡Úh!ƒòŒG™¥\õN£p2ËoŒ¥5$³ÎÄu×,õV(Ï0+ê(œL B”+‘& &&I²)(B÷ O˜: =WˆX'h¦¦DèVÂúÜœô1J]MÖsº}óÅÑœ)Ù¢¨ŠË%®Z7^®Üm5I§b’ᦋJÚ€b›=2‰çˆØ`‚&†QàŽ®v•ž:‰Ÿ&&Øoü`!Ü©ào¼i#›xðñ†ØøÐ?ÿÁ~XÁ6àІ À!E`¶²í€¢_ÁŽ~Nd æg@ ëàˆãA‰yˆ„ ã4Æ„™p=Ä`‰´A}™°aãÐ 7”Ãáp‡:äá}Ävˆƒº˜ 'F¢a°† ;-˜†I©F[PƒX°#eø¡ Qp@¤T„©I~”lÔ¤!½m- ¡Hž¦$­Ä‰ÄJ;È¢b6®äIW•ÜXÊÔ`Ì!EŒHü¶”M Ä{Ù“¥ã=;"„HYJCâ± L"Š!ké‰÷E‘aM Y)†ß²2ùÑs¡<ßù¸R‹Ðµ©“KÖ\’ÑÄ{ÿ‚âJ`Î'•µpî,_‰UR&ÎÅÃl0á‰2pð»ß5¤%’d¤J ‚ƒ l@*Ö,º0Œ-°¢ +øL*?Ü¡¬8‚ db«Ø†öŽ€š#ˆ+÷>Và‡mx#+ ¬Õ„#á÷»_˜ƒÀæ¬À‡Ö›ßÇ7ºÁ°c5å°Ì9Yv ÖöPg¥ÛNÓVV*l>»)X|æ³Â¥? Kâvn*D q¨EêQ‰ŠT£Ñ@‘MÄÓ‰åT9Oktªa'ÀMž_ØD’¡>tb«ÐC1Ôžt©JƒÑÑ”3 "y.!p+ÿd‚©@NéP‡Â›‘ÌÆ“2ÑÕ, G1:9Ç&Á‰!‰«k“Ó(Z­©LpÛ~ä×C d€Úİ"{ÊFá@Ž,¡Æ‘‰ŒôäoÛLÌHØyi]j˜-iÈWØ™Ûh2S&«hÌ)¦äÒ{R ŠLr»–°c%èI07WÖF·™ÆT®÷Öb¶\J˜bQF²˜ \ð¨·ñà'â‰L€m€W·ƒ†0æ m×+rcÀæÚjBh^À&H£€øXWgà6È€™ÈÊÄ'æòyc¼© p@¡¯¾°…#ª¡‡{ªœFUD%2!ŠüóQ”I‡='-xÿÈËØd0öÎnœ&cC‡Ç3îñŽ}d ùÇE²‘‰|d%'™ÉHvò’ŸÜd(+9c#5Õ¦6²‘ÑX?cÎ2†e\¡K8¸D'jÑ à  B'6!0pƒÁ- @®×ŠDGݘŠP¸)ˉŒ÷îð Å`6rÌ'ΰ–;kd¤\p‡ilÎŽ*Æ&”±‰nt¢¶jH©;HˆbpƒŽ¤…ƒM0æ”}åF1äK$µ£gèÄ4#á3˜¡w ÀÆRwÁ(Bžî0ëb³³!™ØD .5¹`”@ Ÿ0Ù  np£eýÓ*6±ÿR·¸{8C0>á9–ˆ¡–>3q°² ³¾.¶ß&Í tC¾Ú>Á˜ Ôb-Íæ&7p†ÈW–ܬ@&˜L©øa1Ÿ“¥1H»ÇQG ÅøD8„=¯À"\ó o@]8‚uV¼‚õólŠo±Âx;~P„z´a¿¯0†+2‘‰'8fsð;ú=xËa•¨º^éìF£þêhuàò$Âǧ Ñ€túÓ‡%G=".ÎÇ$æÁ›rx‰&BP‚bâþˆî,<ÄŸxÃ/ñŒW|ã!ÿxÉ;žò‘¯üä-ŸyÌc@²áåÕÿÒ‡§-Ò s>2{"è‚[rDtÁ:@„‘‚t¤x¬À—˜žÖÆ!#ƈŒd„@H«Iȶp¾­¢4ÐÃúЬà4rTP ¸/´HÈ,Átà$nJŠ î ²aá¦ä€ €1¢D#ÚPÀÜ¡ "Ž6À.b`#8Á¸ÁÚ€¹¤Bàaª ÆHºAê!ª`2±ôÀN Yà–@ŠQî ¾!¶áºY6À @ ~ ‚A–&æa `Æ!®`<À ÁR¢1Úÿ@2Á¹Ažæ`; ö —>Ü!¾@“s,éá¤B0ˆ®  jQ0‚A†€~@ <'jpdAc& f3¨s† ¤¯'†@æÀš%âAή  Z‚¡d¡ì>A†¡øàÌÀz€8!‚àá$Í 2æ@Dàú!ÔÇ&êŒA\~²ÁhÀö Î@Z rá ˆ! êÁº€(ö@Ú¿X .Òaüà\€ óÊ΂ïR¨í „íÞN„4Ì…<¯óLì=D¯…ÄäÎI-ÆÅb†<š¦cº±¤¼ÿã?t£=H†9®t¤´4K¹K½tK¿´KÁtLÅ´LÃôLÉMÍ4MÙtMÝTMáTKѤLªc¤1j’ô:êô f> ž >àVÏù¡ ˆ>!Hr€¦'@³I"à º@ ¢F €:á"@Ô&ø@]!OÔH¸Àà¸p¶a ªÀøØ)ˆa ÂsŠ`Ì€à`Ê š@^¡ÈJ ΀ÄÀø`SrÀä@àÀoxä"`Šb\a,þ&%œ¥álñ *Að!„åOä€JÀA EŒá"£±ø€ZPÿîL%V@ LÁä‹& Ž æaÚ­hV!ÂÆ‹ö€(A»pÀêÁ ¾A[£àà *”¸H  Ä@°á”Z ²a°Á ãRî€2BS%€€®À¶A0°°¸¡ž¸¢öà.á7o„Îàr {® D¡V  "šF²ZcìÓ®ÀÜ!VÀ † ºA P {2áä`ÜáºàŠÑh¦ *@ŽÀ¢ s¤näç¾À jÜ!¦Á[Ö Ú€\a4‚.¨ÆÂòÁ_. …ô©ï=ú£aXÿÈË‘›qƒœCNƒtE,îÄt?O†H×Ä@h©tW©x7©|ww·wC¨†Hï‹èGk(…V¦eTÈ2á t¤ô FMsºà!?A²­Kòdjã@ Î@צ¸¡¼amVá ºa¾ÁÍ3æ`ò-˜î (áŽK$Πž4'2 -"iá :!— z!á ­žðÁ0½Æs:èÁÏN§öAÞj¦atŽîMG⡘5C'z;!â`´3Žø€C"® æaZIH¸á ra >A4iÎÀúU&Êç Ì@¼¡PÂsÄÿà ¤50ÌuÎà A ‚™® *A&Šm*Ò¸ HLÎ 2¡nà1¥eä`¦€‚$ÚNø4! ¢Î(!’ØàÎ@ Áò-šV!ŒAä@Z0îÄ@Ø!ß&@Ì5¢Rà€|!èaN¨ÀÈæ öàYÀ ˜\*á0¾e ã >Á0AX"àV *A2Àná2À z€6ÜaX á¶!²!_$ÍŽŸ†j@*›¥j°Ô¥ðdZŠÅ$I± =Hôîãô„ânÄ&¤H;¯î„wžƒ·ž÷žéŸÿÏîP7aD×aøï\¤ ¬úÿÜ 㻾2âApï Æ÷­¤$àÀl2ótÀj„G¦d!Š!¡%l²¡¤bJ¥À` 1!ä`ªà0¹âOÎÀŒõ.(¼Á°Ô`- ÒaÎ@õ»âa áÖ÷od‚¡ ¡€qúL!ߺg’3!8a¢{âìfÙÉ· àTËQâ æáWÍ“&ðáJ‰%þµ À ŠQŒIP’ƒb¤à®e¢'îà Ô è‰®3 ÈA 4ÐÒ†`V¡†å²VìAâ"Ì Šaz­D&~Zþ$HÆÿÁ¥€1xiîõV¢I*ÒöàR¾Ë.V#ä€<9öŠ˜Á·rï\¡.¡|šÄ¤á Àà’ Pà¸# åðÁÛÀ4艙®` ´à—s™—AY ðÁð,*˜]q þR¿*}Ãs‰ãvOl@ˆT‰`ˆaÄ`—ó£J±êƪæUÈÆÊcN,«Ñ:ªQËØCc,|›%<à rÃ#œÃ5¼ÃAüÃEÜÃI<ÄK|ÄM<ÅQ|ÅO¼ÅUÜÅYüÅYªJM&Áo,fýÕ¾¡BSWA è Œ`HKXö@P »ÛÀʾ *Á àÀðA„I:a:A4`ðÁqëá8ÁŒÁÔÒah€ÜAu¹æÁ þ‡AÅ™š9ÊšÅÙ ðH¬ïònax4ôZ(>ð¦îüùŸÏ1H%$žS$é/&ŸµÞž·^Ÿ½^©fèóøyb¨a¤ªñ®ƒEØÃÈ O"èKJ&À€À CF‚¡bQHŠ2!>‹a€ Mü  X@ëeÚàH±îÀâÀ$îO¢ N],ê©èa24_ã¡Èÿ>"Úîר!C)1Á Š­,WÁÈ¡&ðÜz!9¥¥ï€ÁÓe „û¶2AL!ä™)æÀAÎ ê<-AïÝØ+ÍXA…‡Â€!T‹Äíàá Œö*Ÿ¡ºÍQ|«ÀÀº!&Âa àÌ êrr~dëÒè=Œ ΄«/vÑöL(îÊ«*kV͉®Ø„6?öÌ)¶jU¼TPœ™s'Ü`rly+VìΗ].M(–ée¦¶Z-ID3^‹+€®¬82dÕ†bìÉñN“6k¶`ó“-¿î^9ÚÆ‘d·5½æ¹“Á›8mPÿPrWE¶z~Øõb‘®H¶&~¤Qã'‚ßWGh•\”5PðBªZÁ„Ë4 VV5j [¦&¸rϘ7ø¼yôcÒ¢I;]YsêÇ— _nMísmÇŽeÎý92n۽ώ,›2ðÝÈ{WãÍ›¸óçУKŸN½ºõëØ³kßœùíâÄ—×·qÈ‚©}¨¶ s˜0WîÄÛäÇRŒ/m6ܹãL‡~„Ì UÔãFAÁðŒP7Ûø¡ ÌÓI<´àÆ8ÒL£Ì'TˆÏ+0A0E8RÀ=8A-GÀ²Š18ÈL7ôóÊ+ÿ„³Á*nTQûmöìP@%:L°¸cÅ&L3%U QOÁ¼XLíÑL°A'ß°Åw”Ð&Ž<²Bãø´"¸2Ä‹ !Ë#QdsÇñÊ#mð!‡|ñ|"D jä0Á&.ÅcË%((ÀQ£jT‘ÌG\±P1"C %Ÿ°7½h@…4Ÿ³Ê­@ñȯ4Î'ÏèñÈ7Á1²€a€gdÒÂð80r$;Ÿ,ZØCC1ñ\±J0Ž0#/ÖÌ#²hЫ´´GÌXBÁádN,²Ä ñüÁá²ü@Ž GxCÀ'hñ ¬ÿà³ÍG°ò…ÒdƒMM`ÆrQÀŽãÈ,àà +@áˆ,|°àG]|" ÙäLÕ:ZÌFjˆr„reäÃXb¼X“rÃõ6Ó¶9f\sº•1õÓÐ]-un˶µi¦ÑB™Ø•=¶hg‡V¶gl“=Yk’YÍZiƒYvZÜ¡©½Ìr{³Ç÷ß~Þ÷à€.xሮ¸áŒ'ÞøâŽGùäW.9áeìùrvkÞ7ݰmî÷ÝFÙl¸YSMí}Àh0ÅhàÍ8|qG_ÔÎ*_àŒ““Ãô²Â€}uá ,—Àá Á@é=ù…£L0~Øc=ñÿÜΗ<Ï#ñèŽ_øO:¬Âit¡‹>!…Â#®L à@ˆÉ4ÊÐßÒq‰Ã@ÒAÿQ ýL—p…¼±‰Ý¡ ”@AZbTÂÄhEî°‰"è@hC8æ0-vHľŠÀ   Ýkß+º`ƒ-ÇV@ J¤#F™ 1ø@‰XpÞh~‡;Œ£8€ƒ+˜è&ýucjH>öÓ£68àìè^À5øp-ˆG0*1°¢C™ˆXÁ N£$Wø„ ðtt\q…4ðò'U  K8B™ÈèxÃî{ÿ7¤ñ#TÂ$¹B®01iÜs0Æ%ÚiàcpÂ0*±?Äc}*ÂÖP³8O8Bð‘|ø¡ư †ÐÊzè,ÙH¬PcPh 9pGzé â€âhŠa aJW›Ýpí8¿éÚn®¦œØˆÇ<ðüŒ;¡¶×Ph깤%ñ @ûHÈX4‰«ØÏî&²¨‚tb8XÅø„tlcQÞø18û’OHƒM0 ¼q„%T Æ(BòÿÛ9ã ®˜ÆŽÀ‚&À¡˜tI'&œ² ØÙ(‚ºq†Fu"aYuU Õæ0H; Ñvc7rÂímñç(¶×tnÇ««jN35§5‡ G~èo¬Æµñ§Èý¼g“óœðXôÊÅòF³Ìå-{YË`î²–Úµ$#¹Êú4rgÖLyøíð‰Çâ±*ȯ êš#tð…䪥‘…ã]¡®ÁACKçŸÅ¶ÀI'™Èb«Ë!ƒ”dã ƒO&ð‡¯ºÉ$ãðÝý½¼ÊgF G'Ö.Æ£Ä-H–‘ ò‡p¨@y­ôMÛdEö«¹ö ‡:T’ÿQ×JoG–[àî\/áì'â1…\¨þjA®‰;ðFœ= XÙÚšè+¸ó©Ii-G#µI½Ýkª£]µ ù:Rûè×x½d¼å-ý ®|q–#Iï~:up…w«¨@%Ž iƒhCz70 >¬€ÒX7ÒÑiЉ#»;n<Üá‡ø¡Þ`Ŷ‘ iøÁ 47f+á5´¯šÍD· 0®;`CŽâêÞí¼ ÎÅ€ÂkegtÒÉœâT]ž ]ò;iãµÞL&n´aÍ2>3vö íƵ™çøFv¶K&ígk›UØpæ2›É;Þ÷~÷¾ëÝÿï|ÿ»àOxÀ~ð‡/<â¯øÆ'þñŒ7¼Ø5Ãw±«†meϼ%ÏuZfoêID•pZ‹"5jEàNwªè`ì¶Cñø€æ|€ lc‹ýc¼¦Q 82vÛŽm©¦çW–ÄØ>«”Q ýD„V£€»XTËÙ¯ÁàÒIäÇMÄq…F ëˆ _'ý„A.ÁEæà†q z±º£HŸ¦2pÄÛ«QFËVý|Û"nB|áPmqtŒ2- WôU8]-±[8À(,ÄYŒ"0ÀV›0GQ «PwÐ|“„ZÄ· › j¦€ñÅ‚ú³µp¹Â%ÿá—€6¸i&Áñoá¬Porr@rp L•ì/HTk Fàø sœààÉR ÕU+€õø`ÞÐ+ @¯ø`9-¾SÓp«0mŸàî”ÐJÒÐÃàçjÀ Ev/†Š¡4Áa:¿q:Q3MÃOýôdUÇ’ÈdÌñé±d‘XféRU†5ÅP•ˆN£Èd_&f¨xŠªf«˜Š¬øŠÈÁˆ3¶5TãˆX×yÿÄdëÁ:aðsGG°&°ì]Áp [€kNâ² ~%gàÓà+PÔl·ƒ}%ÈÿÓ]Þ÷Ñ8òö&Á%~eTòñ-Ѐt•W͘/-p=ªænñ‹¿“,¶ ~i#ÔE&Ñ>5H½FWÝcj+4-%ám—DÄ)ž]yµoVD|/Ñ›0 GãàY8‘.QÓv‘BÁ5€%±)mâ& ´;FÅ!W2éYdEû±oÊ@.Ák&I‘ÁõYøÖž@ÙEà+ÐÓ[q$ñðJCÐB—^ưîÀ Ùà m`Iw´ƒ/Æàr9°•éÐGð Þ ø~` Œ"j1¯° Ò é`è ÞÀΓ¬ÀJ0—9Àt†ètáQcÿCf7sCw™!y¢Ayo™_6¯ñu‘‰:±NWçû$PQe"Å™P³NUš°ØŠ¨yšªéЬ™š…fåtu¨óõOpç¶ñyì·Ã&?R µà; Z<5.yõ:áBÁ` â4.kYÕÙúƒÀõZ´Vxõ“à©/ ™/еÆflÕYŽç‰žÆùZê…W¸(9žò!åIâ ¦?!)@ ùÉåÙ!i=™’ 9B_Õ—öo.±;À¡Àö“ö9¡å‰W´E”)”1Áµ’ÊAéÕjݳ ÒPppÜP&ÿÚrÞ vmp~`S˜°`Êæ`bP`° CáŸã©‘ J½Ü›m¨¦/™ÈÄç¡ÿÛ‰È2©‚Ç ¢Ì×Ú’ûºÕÀ埊Ÿ®«?A¹;/ùÊAÝÓÈ,ÊVV:Ùã @p%4Ý #C¦f ÝpBP9°Û Epñjå³ @q\¬TÁÉ2“;8Т+ÒàÎ7»–õP€Q–°TKÂgJ`ºÐá´4™ ŠF·F5µ(POóÄI6N %‹[—Þ[[Þ øO˜O¥Xeä}:ʼn·¸ßþÝßÎßþßà~àžà¾àÎà þßò$u¦øˆ¹!‰õöœAOÀ_VGbÔ í8À3gMí& ÂR&ÑRÿr4gÜGZÝ!ñ  qí@ÂË®iÖ횃­ë®¶‹WOGj};k½†üZÍ&}êõÉÙÊ×ØÙ°YÀülÿzzÈ{iB¤"¡x•C?V¾ ³ö©¬¡ÐçŸ{½\þiŽŒ­«¯-\‘ 1çÝf"ÝmÀ •@ I(,± 2‡ ‘ ŸP Æ€mÐPp[wPò‘–Îãj©Ö!ÊðT»ëWø9júñã|íã ‰o*ȯïšÖì8¬ìiØ;j " 똯¯½ ž èŸé’¾|¯ýÊ ®eÙ:éísÙKÊ4çÔm-@Ê’ðkƒˆçÙéôZȸ¼ÅW &sGp +@GÎ;P+àXw À2wÉû5ÉU ¶ Þà¶·•pàs†Ó0SJY™°£w‘]€¯°)S;Ê ;[d?mÝ€D™P&yÄw€ÓÞ4ÿ}7ž´Ù¶s+ä½øeöPS³ˆˆzvk&7uèxÓcDö¨tSw8ì§j“¨Ÿë?̨zs9¦O9§o9¨¿úªßú©ÿú¬8=ìcqç§= ™lÆ6ÏqR™3®SÊððPàE°Û°D4à9°hÒzrÚ¢[Nð;N@ñáÈmÝž|-¼%ñGr„äÚÛÙ»{“õ ¯¶+od0jd°ýóhl]¨v tUo•–ñ<ŸòìjØáV›îN¸9'Ü)vðÎL >œ®à„Uኅ3ÈÑ¡D!3Œ×ñ G“7XŒl¡Å—;f\UpN͈ ï`4ØÿgFŸWÝéÇÁŠ-wTðv¤Í‘LwVŠ#˜+|QšD8R³áà R¹ú)ðOiÁâ[K`á¶9¼5ñ'‡±§pðyKWa…Ú+ÅJÏð`Eä@T[¬ÌãÇ ¬å€P«U£V­ŒgÈ¡7C欹³fÔšKƒÞLíókЩc{®Fë1­Ñ¯?»}z÷èÒ¨WŸŽmšõnÒ²]OýxysδŸë>N]öuëÙ«oÇÎ]{wðßÅ{'¾ü÷èÉi“ö œøòç¬;ã~íºµaž\¹³’” žÁ¡ Š Á€#<؇ ‚ fÄŠPkƒ£°ˆ œ(0œ Âÿ‰çŽxVò°…p” 'Ž&hÁ¡¯JÊÈ ’B´è!L")DOªqÅIì±…`”!cI<‰E‡@œà eJB1GŽ^œh‚ŠÒhÆKè¡q bH™ƒ¢Úˆ§—6Úi§†, i£L é¡9~Òè#‰†Jé¡Lš@°™Âis'6Æ©I§…Ò<³Ð¸Lr§xŽ@¤ˆNâ™`œxü¢’6¬ºãŠxæh£)v81þ‚Ù ˜ ΈÇ?šÐ‹8¼¹Ã¥çæ“Jr8‚?¶ðc Dà@d|X9 ž¡V1lÙ ð¦Žp¥6rÈVÚ€£Ô@Á¬2^¬Éì8Ûʸ¯6θÿ-7ü>£ï\Zæ›ï1uï[×3ÛÚÕ—Û}“Ž»õÒ›M½Ð>[`ÝDcN8ù<;¸ä²3Ø<ŠÇ«ø<Œ/ÖØbŽ3î¸;‡C.ø:ˆ;£-¶vÍ-ã´x«ù¿e¨ù€?‡rˆ¦©ˆKt¡S7À°Á Ü0UŽi6CÂ`Hº¥ $m€ª«"M|)ÏAŒñ —ÂY餑Z(éH½û!ì ‡ôÐ R¢”˜'äÂè#<Ã"ðÆ›Yˆ –X²¡SÝäC\ô×½0ÍT&††7¼ Ùv´š?çH¶ã úˆŽrµz ’ª†Mƒ¢ê—”‰ÿªZ¢r9À•¹´ÒÀÛp— J"ú "ôŒ,ƒ*†.ø‚5€‚(¼NÐi(€P-™€KƒKhƒÃØ|(€;ø‚‚ˆ›O03¸„lP®cjƒ)˜YXƒZp‰MØb0@ƒÙ' ø†a-2Ø„&Ð3Ûº­p¸„H€€¯Kÿ9¨„_XˆM0†@¨‚¿1ŒU`c¨LXa|n°ƒa˜«ø„%¸˜n¸0V²‡9@!`$‰x#p¯ †=N”ò1{ø…c’1àƒ= +ÀZ€%è‡}…jºƒJ‚ƒlèè„¿)†5à„Upl`dÙc(šÀ6(Jx„𨀆#¸XȆ8‘ #ÀJ€vXJ@N†H †5¨?ØÍ"‡†X0q¨„ƒlp£=؆=@„X[a 0Æop€Ëê†38€+X…G.V(¿À@"ع0Vø„dÿ†lÀ–òƒ'X(¨€.¨¼ø´Ë´âX“˜¸ æ˜Q5ÕØŸJó øPJ£J›µñ€ccÌªŠ˜±Z*ãÌ_ã5ˬLÌ ¶Ì°ÚŽÄüKö  vI˜ßÀjH øehÞ£©(†ˆ°D#1BŒiXƒ;¨6 9 ±³K¨€i˜µ@|€‚;r‰"X…)¨€Yá1€0h‰D*žnX>(‘ÁØ€NÐiØ„qðÎx¨ÎGP±Z ±kò‡hˆa cp„ ¸­°ø¥HHN¡%‘…eP–È„^XS)†=`‡VXN¬UøSè;a@„èÿ¼‰¥£ÀˆŠ_ƒ° ‹°Ào€‰XˆOè„€ƒšŒLX…*08¾)†n`à†^"¥98„+óIÇ:ƒ9`9TñL؃t¸‡øŒ˜ƒ.€‡N›XÊ[ƒYê‰bð…K ŸŒ¥ °‡ø„¼ƒOðÊÈ(Š8z`…Jàƒ6Ð o…XðèË9È„fЀºã’"ð€•~j“Up‡x…9(8ˆêaÕ‹e¼àl 28h‚÷ñ€ ïkƒ Sp0¼‰˜@–x¸|4Ÿ —ú6P[ TÕŠÁ L@Œ %º¿þ[ü96§M<ÿ*Ô€¿Ä?ý£™†ÑLc½ÌcÝLeÕL_MªW ¹:6ß@Àv±4MjØFaËú„Tê£`p‡($SA,¡q!¨€?~ˆ‡0mᜥ W¸#ÐYØ® ‹5€…À©ˆ¤x0/Œ1ªˆ‡xS¼7` i|?0Ø9[…yòJº`À-8‚$%QÒˆ0@B–z؃·q#ýâs£ý\LH;‘?x¼Ñ²R2…¬þˆ‡û†Vر¤"Ø+XΪ‚Cƒ8i RÒhÀ‰š«»„3à/©@Y˜ I‰ÿ$c…‹]‹D‡+ØB2§xàYȆ"( -‚ˆ<7*†t¨‚WàÐk$†‹…°‡à§€‡J@DX…À [èHO#€XQ5p½µG¸„HÁ‰t(‚ohn¨&h‹S3Øv`iØ‹o¯+¨‡8ÐC¹h‚#¨ 07|0† h%9ˆ ج=h“3¨h\øø™?˨ÈÂáøqÌ€¹’µIkÌØµ´ j5¡Q‹*,5xQ6Â4ðE_ JÕJ»R"N«ßQ³ßNÃ_ý½_þÍßþÝ_ÿ `àÿ-`6`>àLb—z)ÿ ÂÀÈ4 Z†ûXÂp脈–#èRQC>Ø‚!ἂJ h× q `h e`£  ‚s£¾…ƒv)9Ð0‰ðd`n’¶(ƒ ”âw v <2y…¸Ê¹‚9Pƒ&½Xº{ o “n8G†èùàrp,©+ðS I‘ cÈ#0ŒÔQ° ‰‡30à<†`^`RjÞ9h{ ¼>’ŠW8|P–Mˆ“£|Vè’‡ ŠWè…$½¥9ØÃ$€±ZØ6(lø†W0C*N°…C¢»;ˆSv@NØÿO};oX€ÅàÒ…è„t˜¹Hbˆƒ΋dÁ¸‚8`o(O6À¼zZ…äÌ6p„X/‚¶3( R*‚tȘÒÍÈGv ÔðNÈ„i˜‡Õ Õ0@–J€… Ȇ h‚&x…l8‡4§Lè9˜‚ `i`ì±V˜è*@ù *`Ý©½ì¿¾„Ö„Áª§ªÑ8 ¯šà^-6ŽVü³ÕYÛÕaó—[³«ƒyÖcޏ²i¿¼iÎižÆiŸÞéŸîi j¡.ê >j¢Fêdc˜ÀÄU`%¶™¾Ký+¡’"k ¢ Ѐ è„Nˆ †Jà†èÿ*øc 1º•a „`p«„bn€‚x`—†6xÃÎ ‘3е½à,¨‚HR‹MðMb0ÛøfÈ:zš HR4¹‚=°‡J­ö†x¨‚ 8¤h¬nHH¶à?Xfà„í½}…U8„=ŠLHÎ6°…bpƒaÈ9h IÎö씌8ƒój5Š>š€ÓFè  ‹؃hØ1eˆ%0x€}«¦3€ƒbàNØ„NX‘ èJlXé2nh;¨PÕ‡=@?ๅƒWƒ±5ˆ +€+0!è"58è[XƒšX 8x…n(ÿ^ Q†ê<5 †ÕÁmp€Uð€tx…‰Š‡!#xˆn¸S0K`‡n@„;H(>0ƒO­` 5ƒt0…=˜€æÝƒ|ó>ØJ|XPƒLp8xLJ ð†G(|8o( xÈÕ‘JÈ„ß̆iÎK Gx…ØÊâè)‹¶KõH $²ómÀV]À:!zó8Ç—,¶ûÁKWk»LLØ06­z+Ä$Íë=™Â ŽZ;Ì^tFotGtHtIŸtJ¯tWƒLÿ‘êàŽ8U—A ’™C x„h Àˆbxá´)W«ƒ‚q»6µp‚ðÿÚ #$¾„z`ã\­xp‡^ð†KÒ‡¸ ðP‹Â(ÈJp€Gúë0z8ò+¨"JH‡>€ˆn¸X{PäD:ðc°…"H‘Oˆb˜ƒðÛ®‡o¸ `„-!0…â+¤¨÷txu`ƒµH£3î…,çˆN ‚K8‚8Õ¸‚*…dÀQ¾‚^0ƒy`…/YJˆcx„ôÚeà†oèbÀ‡4)?8p¨ž 8ø= ‡V:xÈxx„›  9p„2ø¨æp „CèYP# ¹ƒ >@R{rˈ5†„ýb€‡&0€á’  W°‡.¨ÿ§ˆYHpfHØK(‚;XY(@|Š` ‡6ˆÇ™²@àƒK(¥m8 ‡À†=oøNp„i“;0†K O ?¨8¨€¾âƒDfÛlÑV HË#Ȇ¸„yø ° i€?ú¨èè­?V[Å¿ö˜«f5*õ0ª"䟔ÕT­yQ™ " ”Õ7Â’_šÀ÷­Àö]¶$5Â~ä×~îÏ~ïßþïï~ðñ/ÿð?òGóOöûkx) v B ’`ó MÜ7 ÓÔ+*ˆOñ*é³­X°bk´tdª Áÿ6Ü©ð­–næ8‰WÁ’šgEâS¬‰rìæÄ[u玈4 Æ ÷©=”ŠÍ ,Ü-Uð­š0!^1r½:ûìÎ'ZUšpÇj'{Žr± 6aÃ4-;fÆÛo>GU8‰o\¼gë,Ý)îÎ*9ë¾5£¬h'V²d!+†câªh²ª¹ãöŒ7G–8A 7áÓ G޼[õǼ*½âÕÝP,rvþÞéôEô'f§}J¶¸È;.ƒ©r©Ûª³Ÿš ¾òiU1ܿɂ&æÄ`ûbÕÉm<9Å1VÔí*¶ø¬b9¡X¼^Uüì)ö•[›C4Ž3ÿ¼ŠJ¯/F8e_¥ Ýg¸‚E¬â.²ÈÑRcŸ°CÝàpÅÁXÂîô´Ê*xsIjaL7Wƒ éÌ!mDÐ…ô¤óÊÝ!+¸ãG6ÛøQ1(8€Ïà“M6Þhp¯TÀBÕ”1%(Ö€¼ Ê”RF9%˜ÕTC—bvùå—ez &šR®‰&œn’&›c²yf”ož9f™y†IÍŸQj'¡]º¹fŸ€Æ ç‚âÙ圅¶‰gŸ“ZZ)¦”jz香rú©§¡v:*¨”Š©¨™{òéè©r ê圌nZ†5Õ,Ó€­a\q‡2îÓëW.…ÿ³J8›ð:E5ÉHá¸NBÞÀá„UÊœµAmLÐÂS»Åsµ–ÝN89Dp@p¤MŒ¹ã\AZ8ÅLA8ÔÎnkÁR¼˜uîÄUL"~Ì‘ÉYváDãdÎñÞñJKŽYÕÓV§Ì›¬!‡Åg·†‰ÅD|V<ÓÌaÕ8ÍaÌ4ÈÕuGOÞ\áEÁàPÄ+pQtW1îxUSQ­!‡QâšìÄwY•]™Ã!kŸ,!õ¯S³$GÀ–áP_0H]emáÉ'cOIBECs&F{^7ñdÂ% °ÂJ±âGG¼M@<Ÿ#µ94±‚pô“P0r·J&¯ ǬxÁõ`G=œÔÓ†+…ç;-læ³%–¼Xyé2R_ -d_FS&_FóÌ+eòÌOÙ€ódrOýõÚƒ>5Ñ—Q~š‘Æúêùˆ>ʾ”‘ºi*ž±®jhí뿪üsFÚ¦¨J%ÀT ˆÀú‰Nù{Tüæ×'þEÏVÊ» öÊdžeA‘nØ®h‘¤Ño´àDŒñŠ`ø~ˆÀ?Šð¥è‚xY:^”–·ŒK¹j ¼ß©å@9¹jU÷{ŸõЗOZˆ‰ŸÐÛ ¾'Ððùóy ß:ÿi+€ÿŠO ÝÞ˜*ÈφB”zS*(ö2ºÐ®“£í(H?*R’4¤%©ISŠÒ•ž´¥*u©H¡ЙRt|þ4Ÿ:·§SIÝÎã§5ž^©P•3ÆYsÎYÌ1tÌS΂,¹qL«Áá¡E®¤qL"5±Çî"Â%6ÑbaŒ—ÅêG²²õˆdUëYÇ&.@ÞåŠ0 ¼êx‡'Zò<»Ã89¬4º„W²‘¤ ‡{-pr¨Àu®Ð‰°âöúí³Š £øÀG<Ø;µBNí›_¨7ú6¬Ý¼Í~¨„|Ò¹`”àÛ"ÖІTâ$˜Úoí‘F¾Ä –¹ÂàT%ùj‰KéK'º­gßåM4§àS÷A©ÁÏòéyæ»7 ì=Ïÿ5¿÷} 5(J}8Žg£ìô§œS ¯0Ä#.ñ‰S¼â¿8Æ3q…øÜ­b•_eošLË(5–ñDGÒnÁ«SxØœu‘X$‰ÇÿkÕ(§PX×mhe0ç1Œ÷ú2“(1qQÖËvñ2\¯hW?’ÈdÝc “ÞD§5zfvùú¥s‹ž§=™Xy¬#Õ¹N‘*Òñ¬m3ÐÚ«VDBÄÉîɳ¿îF@¾­´pÌ3f?ÝÞÍŠÕ%ŠußÑS >táˆþUÑ>! aµ¼JWKÀ‡ð­ïVùeVÀ‰#H·<€È¼‘98 [Hë¶©¹§«}wÚøªßâÏKœ°…éÉàÿ&Xøì¼“‚>óý}®F=é/ÿ¢:]÷E1˜=uös§Ù›^ÁQç]P{æ_^øÅô}õ³ß‚î_ÿûÛÿÿùË¿þñ¿?ýñoÿüóÿþ×ÿýMø9õUNIÉö¥ÛMŠ„1Ï $5XîÐQÖ³´À»´PØ`Q ½–­FÐPY8A<´€ I‘e…à Ùb-b½1ÚaY Õ ³|]U^mUZ–]ì`ùUbýjEß!Y} UÞYEnÕqݺ܋c(•] ÚYEVÑ á˜-Ñ݇ˆ Y$QŽÒ‘¦‘V ÅMkeÞ™av8ÆÝý–WAˆ@< ÍWtBD”G0ð7¼\–KÔÂ'ÁœÍ$D1ì€ A``­B`uB‘H€ãÔZÿpŒÆ¬KzE#¦QkÀ—•Ï–4Š? _æ3F¦3N&dNf¿ý›™Ð˜ÈuŸL‰ø÷<ÁChx‹ÓlBŽa]éUb…“Y¦Ë8Ц:Ê& žIÄZQ$¤¥Õ':!âc gܹde¡Õ“]˜½ Ô Ì!©åÄ ±°WŸ'Zq]ËAŸÍXnYj'YUÖ×–{É$§-¤`ÍŒÜÿ]ÅYË#‰•tVgQ¨Ù°M è@³AÝÔ‡´pÄC7ìFºLC RˆÝQz på¸DØ„ƒ7tA¶Ø… å‘bÝÛybQˆ›9¹Y”9¦¹òAÁÉfÞÉ_Ú ÷XGÉ”:Ô^¼Éåõݺéå¼éÛ>É% TöÝ(’â(“ÎÔ:i“>©”F)•B©•Né•V)–n©–ÎhÉàóe”M©˜b”BÊ¿É7†iò2Dl‚WtÌy")•wŽ•lò¦±àõ  ¾üíÙvFRÚ‰‘dYUjÉ\ÛýYË1v Z ÌÃÀÛ}ÚÝÿD¬Ì q*|†åÀ‹Ù1*Ù¡—ÙUC6Ú`QReíZ%aiùã`©Ù¬Æ ßVqJR`}–ßUg!ÝÅÄÁ³¼ÄÎ11\ JÒ*à€KÀ#TB¬%ĵÌ%|A¨äK|B&ˆ"xƒEdM] ‘–ºTaÙWìÞ|Õ—ù¬%¬°è`¦ÏüŒVcbaNŸ:‡Í“Àæëš(Ê…ñ+ªd˜…ñ+‚ù›¬ðë«Ü¬ÈXeV¬dZ,e^l§¬Ç6&-l‡U£;AØòIÊUÃxãýÄnHDüÙÏE^1æÁcÎYÙêÐÝ&´TíÆ¸ì?ÿ>pÖi”*d-mk‰ŸQ®ªzѧ L=]_‰ÍŒ–XíãÃøx–ªÔ6@^m;*ªAº$$åY£’fEj §%Kéê}ê¦]E}~]%Y•9aÄA¤ €R(&tÁxÎH’äB Ì ­Ía,ëtB2EDÙ[ì’˜Ô˜ÒÛ˜bã=Õ˜ŠÂ¨1z,,扤¬„\ñÁÏžŠ‚}¬ÆE¯ôN/õV/ı¨ŽIcÁÕÓ,.Jb„%Ï24pí) v‚<ı ä’M–eÿPáj¬†›± Ÿí”ÑïÁPþ"’d5¾´PXÁ ŸQÙ*ªR©MÚZBºä£š-v'%ÅM£-‘ãdä*—Ñ•†¶êj-mK¢VÍú]­"Ò¬n–¢® /Ý{’rX†±àê¯*¤Ó¨c]±PÂøÉTz4ãÒLÈÁʼ NŽÃ4âÔeQ ÕÁÔÄ[ÙÅ8Dñ;&*è»’è™øùD˜ð6,À¯;‘ÊÀîeMŸRõ¹úåâ®õ™h»åóa»É+N½ñ~&»Ínú`ÿòÿ2!²! 2"²‰NôE”¦“÷0”î~iðŘÉÊ÷ÿœ¸ÅÐ6ÄC'<‚/Ùˆ +}…Ìýéž`MŒ`”ÙÐ ùÎ¥Ñ$M;& -ÑÏÖèîЙ ¹2™Eè–íK&¹<ÌlB d8ŒC¼@ñV=ÑצP¼œV•n;þ {5-5ó½ –†Î5ÃÑÏÕÀEÓ4 ÔN@Q² “¹¤Ë[‹2o¤Û­Â&Ì™’Å‹±Ë=’ÕnÐòVå3Ê„ÑiY³“á€iœó²AE2¯]\€SØãn8ÅØ9+G™Õ-s8è¥îè–#cÞ¢,²âór¯aÂÏö²JKÿ.š2ÊÑb-ª MçÉ„Ý4<fþ¸ÏÇÁ¢Š=ÿÑ4ƵÆf,R?&QS˜òÊŠ_6. hã2,CH DAVv ^ÝãX ÙM•u •3Ð*ƒÏJÖÐ>…aù 5Ë-W¤Vѯeü„ñ8k$ çÕD²• }]3š='MÓàfÖ5³¯UÖê9³^¡iá9³WúUÓœ+Ó¹…ÐÆomNªÙjM°„œžYz9Kv©Vk k7—V<ÔÂfK§Æ&ERµ8ë]縸¡ÊçQä³+³¦)ÿD&Ü2ip]€IðäÃ)ž“¹™_˜Ön÷4:à¿Z\â¥ù02vŸùùhóýk¾:u…æÁŠÿæW£(l¢,æOŸZ¦šœ´Q'õQç7JBì™èbNËwï2_ð5O&늭B ”@7ÄÐ×ÈAûê^¸òYo€ØPYGŒé^Q9“³ Å]Ó//ë´h¨Ï™d”ÙïI¶bmUé†Ù[ ôi½ãy¢PÓHvaKn óÃ\j ­ -3RßÉLÜ´ÐÓ93YÉ™… ÍYg¥ç骶ð%­à•Ñì>ÞE>' kŠM1tÃ}:íå $Õ‡2œÝÆš’ñÐ&œAQy†âäÎ ’@TK£¡êÀÆíým•…¿ÔÂ,s2¿E | ¨mÂ*‡W%šdñH;,Tÿ×ïŠñ†ÿý¦cÊóž7;2w;T>íq¼áÊŽ¶%[¶›$‹7xÓ(ª×”—öèC-Ã:—f©­×:®wé­ëz®ïº¯Ûh’)w  Få«‹÷ðNÏ«,à tãÖ…[øA¬…¢VhÍõM<VéÆÉ2 âÑ£n8ª]YIà)Ç\‘¡v•U3‘^‘¢ db•#´jwö>]3ÖÀ“Ýy,d3_gkbQ 8óZB‚°¹Ük ë GRQxU]ƘJž…¢{Ñ*•…`Eåh ˜ãdeçœm›?® ¤•$: …ŸYÝ)ÚznV°ì†±Çÿ1]¯LZ]u μI[C}=ùÕ}«%ó:=Ô³€Çw=È8½¬{?µ¤C,mæÓ‡ñ¦»w§(Pï·Úë7Û÷w©Ä(ð-Ø_~qŒ¡I„Aõlcxã°lB\T‚tÃ"n! ÉggŒ3I<•³¸ã  M„…,Ÿ)cÑpøèÙád¥PÄTÑ'o~Qr‚Ù8,Œgžó9KñÀ+¹çg1¬`ÉÍ—/‘:kíçàQ•‡³ì~`­ · q¯ˆéµ^;!E¥KÚ7\EQÆ$—o@êÓQ1(sS,d&HH7´£}‚„4Òç@k'Ô‡ÿă|B°­`&˜Å-a¯„¹{¹-pt‚ï_’'D±`«‹×-\‰;Ê&¬ZÅdžUw6 ܳ©ÓM&+VdÜp6„ ×íN±bwîà(C«Z™j ¬€PedòäYZ™2aV£%sYÌ¢G……ImiµjËxJëU£@‡6…ª¨Ô ?eR‹)ó¬Ï˜g¥’]4-ОnãÊuëÓ­Ù°eË®åKoà¿sý 6|qbÅ‹7vüرݾ?ÍRf›×rX¹g™6¨Œ—ÚÐS?\YîS—.p"° Ö0^1†î4 ¶ÁI¼xÁ"P w`ÃÁ€+¢ûJ¼ÿp9n‡SïÊ´ »ÃÝ ·jœ™Âuì^¤@¼ Ê9Þ™–ÃàkŽÓøLcYr„ 9æ(gÙýˆŸbέÿvàǺøj‹ ‚ VºcŽ×¢è-»‹‡`j[i‚L€p@7ûÆsài §˜m(ÂØ¤q‡”X*fv"ﺔr`'Å‹ÉÄ›_Ä‹§…ñ&ˆâˆ92ñQQÔ @"ŽâédvºÁî‡px‘ˆ Çx^¬­ºn@ÃLXú•†”)† "èyíµ Ù¡bƒ”*=¦3%ñ*™çëVZå“d0AI6Ú¸Ž÷îȤNæQ©¶†¸AA…&Pæ4cÿB ëRú‚œ6=Ç|>¬íŽxZ‰  bÒ*nâ¥&ŸžÚʧÏzºŒ2ÀÚ*£²WÑ"+X¼„«§¨^"ʬΚå騩”â))¡€íʪ£B»¶ªfcêŠo·µö¥˜’2 «2Î} [qÁ• ¦rÕýÖ]¤¤:ß{õ•–ß|ûÝ×߀øß‚6˜àƒÞ7Zl¡­Š[£š¸šlÁ*ݽº=‹¨B[&Œ'’Û ‚a¡ ”‰g%3¼£Ç`dÞ„ vÛÀ˜ЍŒK6)âåæÈ!Ž6VRî n¾øâÝ$ÌÄ-"Øäåb¾ˆ£7ÚìN/Pг!bñ†¶‰tƒÿ nÌs•´˜È¶b†©¢€†RUé‡pÃÀ ŠÁ'š6 lp•9*£@–2‰g/  ­Ú2iB oê£m‚=t€¢‚qòdY 0Ä€’e?ªhù+ZˆŠ8ÌX|G1:¨b•לÀY¾èd‚Rz䛿¢\Ř*æùDÅ;>9¢ 5p -žLæÀƒ&h«¯˜i  áŒ iÃ’8V˜CÅ ÎÆƒn& À¡Á#Ê•…‡‚+ |¾)‚¥3‘&—øÄŸRR‰ol#~Q2F b0:L­Âdq8D'6p¦”¨aÃXÈD(BŽĦeY0ˆQŸ•L‡(CVá–XÿÙ':)Œ°Ð¬±l憀ùÉ[x¨¸ìJWâ\ø‚,»ðp3™QK¯î"ò$XI4Ö}5,_ÝІlË hCÂTñ‹aäÕÁHF1–gT£Ùè+!‘ˆ¯bcã¸Ã±@ë-Gñ È® ‡•dتn#¡`ÈA7á(N<"Xèæp0ˆbŒ'9ãÑD üàë(§ZÐA F2Œ`FóÜz$ML£AÕÉN+.ÁÚa E¢$Òi€a{ÐÊØ@ hà ¸ÍÄÐG Ãl™(ô4­B7`Ç §þ©JÞPÈxpp…/LAÿ<ØÄA'¡?|BLñøD0 ’e"sèÄ#hЊN„Ý8Ã!zaª;x$ˆø‚Ä £¦°Y¤”×…ðaã`Y0>AGT` ¹+~Ìáã`Ѓ+ ‚Í ˜PhÂíä°bämCÂæZa50êOkèj¥O¼ Uˆ\äîpY<"CBÐÜaGL#NØÙ;&€‚n,›Üð¼Á^!®HÛ¢R´Š¸‚gÀå*¸¡bÄ¢Ê °±(ä×À0Mäæ hÀ–ï™Æÿ7øÀ–°ä —Xö€ÏT}bìpÄì—*1РöhšpЄ!8Âgq'èqf˜!6šÁ=×ø |x‡ñ4iÄ¡ ?hˆ˜&ð >áWh*/Á@ˆ¬,ƒB=´ °lé€C+LÓ •¬ÃUYmVÑ 0ôÀ{O&Va„d Á1Ⱦ0Pò¡éÆx+´P À† ¢ç §ÃfWP1Üq +Pbq é&ðÑ Wœ!¤ÑâÉ g%ìüð>$Œ®®èZ)®%.w [Îò.\9K(AiWÀÉe•j-%]§U®ðÏz¦àDáŠÄµÿÂðƒ?Œ\ñrض>‹ÙiU)!ùÈ-.ò’“Üä)GùÊOÞr•»œå!—Ä=îð¢Àü⦗_8˜„Á3 Ê!³xtaxÆ%ªŒmhÀÊœÆ4€ãQ€¡ ßÀ*p€N\Yѵ˜F0®Ð‰Õè`:Í„ªà!|¢OèÄ ð „cdµ€ Q†ÈAÅÐÀ'* n8À_`PJ>Anˆ€2#€Ü¨à L¤‚gˆ":0Œ£­"Sh‚Þâ!‘9üB ìpÀ?u“¿xèà ëK•;!‡«„!ÔnC6pp ;Ä!²àŸòŠ„Ktƒb¸Ô*ý‹ÿfXá6´ T'LñÏý\á²X‚,2y‡qxƒ3Räöà+˜â Ópˆè10 ÃjxÅ(qÿ®Â=ôÑô >C AHä ÀÀ*!n$z2!Ì€Ì`8Öà¾,òg$ 4íVdö‚ALòi~¡ `VaqÄ@ºA ¼JÝàaøàIä©X²:¡ÀX&Œ 0Š}ä‰Ü 4%&@¬ (a€n£:`¼ÊþâA^…ÝpÂòaYv…)hk‰œë·4cЬHˆ–È/x.-ºb2žK‡îèUô­'v Žfh‰Š(0è-ÿ0Ú¢¹Ä·âP0²ý߆Åñ‘Ñ1Q+‘1·hH¸‘«¨X¢K.¬a*–áJã6ΠÄ ¦yâÁ¦áà  é6fqhÀbÀHâ6 ø@*@™âä‚AZŒ½‚ª@ (¡PòÁ,¡ `§Ø¡ |¡²BŠA LÀ:À `ìg¤¡ Zì rê~€~ VáÔp€LÀ~ ºÑt\A !¾Ä€~€¡Æá ‚£ | ~@2á æ`,rá`4í„À¾!¼oHr®4 ¼ÚªàdÖ` Π ÈzaêrIÚáìáŠAb‘ÈÁrax­Aø`J“î€2ÁÁ®Àâ¾< 3ïÆÀ ðá‚a ¾áæ¤Aà6‹&`(ÿ'vbˆ€ÈàôeYþ ^º¥àîY Î)&î ­Kâ¶e‹‚ ¸îâXZ«Þàè/z¨=å­‡ö"¶Ð×0‡’è¶2ö“?ûÓ?ÿ3‡H>ë0n« }Bè®ó õ"4€boc¾À¾ `dÃ#tæ#ôJ‚! àÀ€p@vf ` b  6¤*àªdÌfª d~8¢žÁ¡ "@£Â<Àª ”ïy.A ´  ¦ Ôoh`d!ä`ä †¦Àä2>âá h@ d! 8j® E´B>¢ zAˆ!r&  d ¤ÿ*ÀPÀFÙ$XÀ˜dLf%t€rA Xà ®#À,Á^ƒ *¬1/á b£ $@ ì%JfL     "ðø  º âaòøôÇ‚†£(ádÁÄ$Æúv ‰ö€†è!‚!® ºÀ€JhH>!"ü!z€½Væ`ÁX@ŠÀ¬ z¡tM Ò ä öâ!§Â¬ða ¤eŒ!ª VŽ@ ŠÌ~`j̬:0ÁP " ÌöÀºü °tV êã>aÜÁ~ Ô ’°ÿ2a*ƵE~ÁXà*ÁðanÀÀ*@Œe iE:!&,Â0ºêcz‹@ã¨2ô­0²( y\º“]¸e^lŽZèµ²S³fj‡‚ãÞ…ã:¢Váº\"Æk±³ã²BãêaÖvaØ6aÞÖmã¶mçÖ:ÅS³®6^H«^.‹j3+^ c-¬¡\–—!9Âáë* ¤9 Âè´¶`Ö†f¼A ¦Ad¦‰Ák‚"âá tÀTªcq`sM;Âá ìá„$UâAHâ` HÈŠáZA ‚ÁÙPͤ¡­ö 2âÔ”ƒˆ!z"‹¡ªÀÿ>•ñ¬àôìnXd¿ŠpŠA ´à pà \mŒÁP7%& ìÀh̪:!ašlº¡~ & "ΠÌàð%¼Ï~;áº'J&à :Á<@(H%Ø´ „à Ð~¦áª\v øí…Ø èï 2¡¥&«§>XfjPpÎ Ø!z«®à : ÐÈV>AòiIìÁð^S0²ÏVa Xš€cãŠ×xmJÀØ\Ÿñ$zá XÀˆ_a"°À08Ux |  XÁ °àÀ dÍ4¢{®ÔúÀ²áA Vá8 ÿ0ž³Ý@A=­¢¶ÜË“†òð2Ž¥†ñ" ÍSc䨋ð Þ9WÞS2Ž%ˆX‹µîXÞp@-Çâi½h¹’‹¹J™”Oy”çè-@£.°ˆWôÓŽŠH/¨Â2’‚pE¦ ‚‚ÒÏð¾@ €¨àÇx1U‚¡ ªgF¢€ ¢€æ4 âŒæ6pàþ`€YsI¦,jÂá56á€`;b ¤"€ºaÔoe€nVb¯VB   ¡ÁCÂŽ€eTÂÈâA:!rÎDBÒ Êê„Ìæú'UVÁ¾á¤g<¢*ê¡ÈçË&  .AÇê‘.ÁÐd&àºA| zV¤öÀðAH‚†D(ÁÒ‰!‘ŒZ@7Læ Ì€¶a~€Ü£AÇvá  `ðÝÖ‡e„@ .*ö€¸Ayf¸¼ä` Ä`ãÐ-ú€ŒÁä@¬/9È:J$A*  \!¤!@zª7¡¶òAV¸°gµeh½ö² 6^f[´ª…´†<µÖß0 bzη~Š~…•Ñó ÑP¶üжöð· Ùÿ¹¶Th¿(ŠTk¹¿ˆßL9•±[»Qy»É¸‘%Ÿ(¸ñð'x;cÖâ¾")>@d”#à@ºÀtàŸ…   A"Z&6à5‚†$2÷ ౡQ¢‘NÑú“`7¦!BI>!$SÅÅ”£Ãʃ¼ªôRS*¬l G–(bLÂ:~pVÇ9ng $"Ú vÑ$ÐöJBb¿+$Jh­ P%zJ‚(|# P"J&"!ÆSìf€¨ÚLP°ãšæ b;@Dæ`ê÷  æþÂaªMtì æ`ð$%zäC`÷42ÁÊã£!T‚©P2ÿŠ@VŽ È_£&QͶà$gE¦¡ š ŽàkãL¢§dü@Xá¶€ ֲš@FVÓB=¢!¦ ´#XÚ k#Ðd%P Ó›½Ä#™¨¼í;aËxlðšÚ†¡þäR „½Ô 0Á*À0G™„-Ó›ÁXaÖ@Øj­d Ìo8þ!¿^Á"äZ jK¹Ð ÃÚ{KÖ‰¸‹VºÎPiuø¯Yf½/Øð¸ËP3øÐÿŒ (÷‰»ø] ;q·ùù©k¯ß±ÿµŸû³ßû·¹óPWÆ‚AÉ{ø—ûh¿Xæe d4­ÄsÀV`¢!NÍ#òD™×`‡ÛwwïÝ—^xÔXsT<8TÀJG¸“Q<ÅtÓM'°A“ÁlpP8W´A0Á¸Qe0ô¶O4JÍNHE•‰&Wg~‰Ñj3‘œh>ÿÔa«ÙTæTAµÔYo"•'V~^¥Õ™H…Å×[M%ªTVŠ>:~²µWQ‹~åÖ› 5iYÂeéWµÔ2ÁbðÑI%Ò¢‘„Cˆ1Á4ųÅÞðáMµlâhLÊàÐ QÉ+GSæFÝ1M%Æ8Є78lµfT5u@,¬p„4~Dº‰G7*Š5ħ.pååGÍŒÎÅ«¡ƒ"Ò«_¼–¡ï‹rØo‚ç–7Þtel0ÁÙ}·0y ÛhpÁÔ)—ðw “÷[ů'_¼ c|#y{œñyñÂÇoåiÜxÒm7y2ÇL3Ì6Ï|sÍ8ï¬sÏ9ÿÌÿ3Ð>|v 'ÜpuÔ\·´Ñ5"­a‡úÒÝ2KG÷D&WåÀì'wsÔT<¢ƒ8¨ä¬³MGURy@“-åT&Q¡T‘N@¥RPy$QDQ)Óæ™=…Q&õýRßÍYT Wy•fWDm ”bA)®¥qòÔ¤gùÙ9£²µ‰Tz.éQ•©R·Nû^y…åVíRåVP-uUŒ_«8 d•°L›}YzY—MÉ„C4Q®W8[RÊt-ä 9iRUÅDÐnm 2MLo&ÊÕöE¬€Úœ4åG ·îq ì»0wf¸p€Q£,$0µèÿB*à‹¶ƒ!áˆ0º¼ø·œሀÔ`Ó/*°? ú ~d¯pC+lá]ÈÂÊ0†4„á å%5ªH€ÿ*açA Ù§Óù@®À¬N`âÜàÆ‘ŒÒ‰Mà@ ÀÁ“Ðöœd‹ÁR ®€“ƒ°$tq[GÊ43áÄ5ùC ÜX•–@Ž$¬ÁÈQœ2)åd3IP<’“-®ÎQ‡Ý™zb¨Õ=EqÛRSUêÔ:¥”Îv¬£”î’’;fi2½ I¨dJ&Ì2è€Â¨Ô¯-c Çâ‘ ?–êRìB˜!÷ÕqÚSŸQÜÂKREàéÿh7Sf­nŸ0R"à‡+DÀ9ÈË**q>lÃjðÆ×0e)^ŽãàC0te 0Lã ¹OÒ•¿viŠXÒ’S#”…Ìe˜uRŒqV•œlì&99“ôNSÀã$*Û2Ù<æq“³Ó‹aEÙ•UCR˜´l8R§ÌpŒã²’¥]¦¾©L=©ö‘XÙÆ Ñ8àƒÎ’I™Üâ¬Rö9ÀGðà£$ãx™Âñ |Sºÿ¨€2{Q ÜmC'»Õb„Yã(Bù(ã V€Mq {çpŠ£?œÎ´^%уPXAVTF!Ô_ÿk䣽îJèM#ºÑ ʈ¢ûšo¿IÚÐú_󊚇ú+Òÿ±¾öþ`¾ÚÄc¤ ü-zR€c|£î|©ÇYúq—‚\†ý`tДþ‡¤ý5¸ÇÂ@ Z„Á×CLh· '`#l˜@-rŶ)cm¹IèÔ¬6Ÿ°†«c5zT[ìÏQ*V‘#œR²ž‰—k"#Ý¢D'³}µŸE%')(ß>*¢” )C›¦8K윮ݰм–¨ï,š ^¦_2~öS_Ù”¦K’×^F}ˆÎ”e²‰M}íÕ™Sí4p8¬ ™§4Éø²è;t#·/ÈXa-ÌÈÿ½Û[E'81Ì`X¡~à4fVϰâƵ.frÇË’¬%#9àG€p„-Tà’»ß{ƒœ©g9951„µsâìMÇ 0{.Üì8€ ¢ Mñ›¡Œë[‚ ?¡ƒ&TA¢PÈùEù½cÄ¡ó[þÅ¡ÁQ€(€Xq7t@ôQdq$}é±0áÑPïQDp=HÑ ÝÄP@& —À3ñV`…g1U‡FT%g:m¢<*\AlwÎVOA8>L:y$G>ød€gÅ‚,˜:b7h\ñ&K±>qAJ©æK‡„Iã JÌF;‘‚YnÁkêÿ#ZËÆ…Œ· «åJ–µZ”•J±suòH™áqbÈn¡Jk±IŒ9àø Q )y„hIzgÐñÐ m` á˜\h¦6·² 9ð ràP¡R r Óà €90 Wð _6À ¼•ÛP éÀ `$w°/øoûS€Wr-Ä~S µ~pˆ} S (Ó`´@2%¶aâ—'sŒHÃaÚ7P̘cø`961Å4ãg#“ŒMSŒ öa Ìñ4BƒŽA£Ž>³ŽéÈŽìØ1ÜPÝ(bÖ÷€çH4ùì'S:‚ðaV @-ÈÿòdäÄ VÔ$U²UTb%Nа ÁOf[E8_V*‹CPâ¾åŠ­ádµ!1wHÁG–Ò,„8kbHJÁH@1x«cV…#(f¢z×t¨À„InÇ“Â[H”0±Œ'”R·òx¶)·sHV¡-Dé)]Q…Â:%±h¢ÐÕÓV yo¢„[6p°(P A ® lèÌä,~9°•À°ZÁãÙ GÐp€wô„¼$ñà —!nÅ•q|íOð…ýfOûu!6iê mà1ñJšõ° m° £z÷ 6ƒ‰,PI"lœ¦5gp¦~ p Ý ¼ö5Á [Þniã ¶M¯`°Á A• } aèûH¸im`ôˆŒ æª6c}†·÷—]{Qe‹qÌ9ÿ£_óå©ú·™qå·"ö§›â"[{!¢_èØ=€ „œ»¹rÊ©ª*”*V;õÔ`5]âÏ€ÝÀÜ@bp Wÿ<]rFq6qcEÁ0 ¼[›à|äʰ›Pé3S½`Í'Ì J¬‹†$€ødɽ a›À Ý@*VÚ bà‹ç#{Ð ÜÐd´×Íd j{€{àŠ—¡XŸÀÝ ÜºwÁ RT$G²º}OjÝOj¯ôÞIÂ’UÆÝÝ·ò ±+Þ~«  ®$«× L„]_ó ŽánÊÝf°ºpLù}`SÏÁ°º¡ÈNñPÉ-ÞÚ{+8 ¤M}‡[2nØ‹^ÁÑõó‹mãíSÕ×4È)Ql0Ž Á4ˆù¤Ôîâ¤ÚžR¬˜8XpŽpPc¥Ï’3ê *8¹Î¨Uæ(A—3ö¨m°p$“3^;#7 ‚¹.ÅâÉF–Ò9à•ÏŠÉ„Š=æxM±MPxdäîØ`n 0fši@CÍÿ Vùä¼9\C"¦›Î5+‹.˜»¤A!žU2±K<>Øé!¾6ØÀ%PÐx±&Ÿ—pZ©§2~Ú "ž€ê¨x*CÐB(„~tO„þ¤!A©1tRCZi¥˜§‚Ê´"M1º Ôˆò,é#‹FÅiÕ‡H UÏñ‰+ÌcBlã†ìÀŒ£+Àºà€N¸áŽé„c÷À¶íp¨&`Mj1n  ÉûŠ ‰àÝ8àŒÑ ÓXTM܈Ã(Þ§ÿã ]æP‰)ˆ¸58ÃBB~â ,ø*à gÀG<ƒº<ÿEê'Lãz|ÿæ)ÈÉ&LP5Ń k8ÃÍæ•Óx˜ù<^bÝ*ÁŠÁáš{0ê¦ñ …a ²ÈŒ^X† Vp•Jàè86€†oL" ­D#¦pÞX”£3BBh¤VÁÓ®žû*™¨j"4VÃmÕÛbäƒ×TÃU…Ü—wSÂ…øÆ>ò*¼Ð…yÌe>sšË|á²¥xÎ¥ òœ“ê¶™ã 'Ò€e„¡èWÊ„ÍÉlàJEpÃøk–pЕØ: Ʀ>xpãG¸Ã• ó ˆè.¯éÆ%Ž€ƒí @ØÖ5â\bʉN0Ä` r¿æ}gX ö°§£ÿ˜¨D<c–OÈ]%-B×õ=£dÂæC8Ð5®ßèY§ÑÚ‡b¨‹ÖØØ&(ñ½™®‚ßø‹é+p†P‚dïë|P€3Ì!ã¸ÂV оÞè1ˆñ‰Æ|FnŽØBŠø’  »ãx^qvØCrUÙ€Ê.Q’Þá rˆ¼#ü€ +xƒ Û8Ä.+l|B.rèÚ¼1{( 5%°‚0xu€ŽU¸‚`(…3 J°´é°‚+P‡*ÐL8¸ƒ/@œºƒqÈ|00…¦‰€V¸‚Vàð W8>°½Ð¨€!ÀÈ,+0Žh0ÿÐøVø5¨¶Aª5ð@0x ŽJoXGð}jˆ|@­9¡ y£8Øz.Š®Øò-P9+t]á¢J”/:”z"²DQC3Ô£?C¡Ó£4ô¢E¡Ã< ”;¬"2¢!¢C ¢Ai"„Û­'â¸Öò“yKC~cDFqDˆxÄF„ÄI”ÄJŒÄK¤ÄG´¡jP¡'Ä<´–C|”ƒë¢1äÃ*ìk@Zƒ'ø–M`“¿²é¸Š`8G † Pº`ˆK¸Dˆ‚®8'¨;è-¸³( ˆ9,Q† °„ è8hš Ø„GøcÐ9(‹;àMX~èÿìˆ?ˆƒ½“†Nƒ)±Vè ø·˜‚=p€‡ó>¨6¨oø³q˜(P›HÁb(ð€%ë‡×˜ 3x„ù‹Oˆ À€°NXƒ*8ƒy@ÄÙfo×P?èF;x¤Ú€Oð(0ƒà„þ˜€+øKƒè†pˆ’=€nèöÙxÀGƒy@žMˆ‡?ÈyØrH×è;€Jh…=€ ˆ1¸„‘ Lè&!5É( 6`²›€f…O ¦ô ! „Lð€A“©L ‡xøGx e …i€†½@—N |0‚oÈ„ÌY…ÿ Vx„ÿxÉb8˜0ð‰‡Oàƒoð!`3ìà((xp…(É„O8-¨0h!350?ˆÌ™€L؃Vð@,5Š^È„o˜¼Ã{ЂJˆƒ×ˆ‡q؈7±· b­&‚"ž«- ª“ƒ8U±8ƒ.œO€¹áºÂ•“¸…£ô¡œ!÷Oò .<Ù¸ú| Ù¡ô$Ïîì®ïòÏþИk¹÷äÂ×ÂÏ’#Oˆ(!)š~û @:»`ÀmX‡,‚9+@~˜€Ø€†pЀ‚P$?8Nx?©Ëb0¥yØý¢/ø)1¹ƒÿ¨0H$ˆ‡0€p¦tŒèJXo«€ChXL‘Nø.0€xÈ„©‚y³ÀÒ9O  ðÑ('Ђ "hM(†MXrئ§Øb‚˜|(7°³=„^ð†éûNpx-sSøXð†LUøyh1)†ìa^°„!¨Ô!¨%lÌx€  €ÿÒ<Ÿœ*ø‚ë£S+8„vÀ‡•úƒÎ‚8‚1ÉÍx00>pÈè8p…)é69¸„g€†¢˜’*Ór¨„™‰‡=ð…^Ð…GSŒé°‡uQŽ3ðrø‚ÿÐY…Œ¢ ÈÖiå0¸„Oð=¶©!°‡mÐŒ+è„h«Â;À ÷åxSXÇðø„W°ð;1Á>°#ep w¸;ðé+†.ª·Ôª“”®M„”!:ˆ)Ä=â·àC/úÃ=šÃ2Ô7Y‰-’-iÏ]‰‰ä2КͷóÊ·,”ÙR‰–ž –gá Zé9út®Xñê Ðÿô®§5Z Í.ï¡¡<ñ”Q .ö4÷"º÷:ŠNpˆ€¸þÀbè‚"(=¨€Mš7ÈE?è‚JÐUý‹#Pƒ#€ôx˜;p…6P“º“`hƒm —r-†ÿ#hƒi@ÇÈÒz¨>ôè1˜†J˜†=(†O@3ðœR¼;`Ê8ì¹/“áÅÖHuÙ?…nà(àt ¦Œ2ˆ1X?è\×hŒ3˜†?¸ÒÅ›€n €9¨š=èÐ38åÝÀpØ„OØ€n ©»ø„"Xc`^² ÐÈ¢\—ÕLJé„W(^¶ †9 €OX·b¶ÑœìØ›i wøƒN@G’MPÞžôÝU8åmÎ×@ ˆé5£pOØ‘ {¤2;ƒ¹ƒZHŽN0ƒOpYœƒ N÷  è <嘃=à¶ hšÎ-³Ìá‹M¸ŽMˆàÖØnü©Šÿ¿¸bÛÆX(QµpXøi™óøƒpNÎÔ‚%R  ÃÙöL¹%!å*!§å¸SÙÏ7ê“”•!38;8õ‰bÐMœ£=ì¡ã‚Ä‚#ã€+£“õ7'D.Öb“Ý!&΢(ê“>ŽC9>¸«£AÆ¢BdC&äCVäDfdDfâ-.¢1¦ãCÞ-?Ž¡~Û-$š#nÙ!@É!úBЇÛø»r¾Pn`eÀiQÍsÖ1$Í›EþØ€ ˜‡ /éÔÐÅøŠ;X˜’ê×xu üÚd”4aøùeV—û"Rù*<üŠ75â£`Ê’zÓÿui9hªÐrVæX—?(çp8aO›Ñ€ÊŒu±ÝÙ5;>Ð[B£@dƯ)™Ñ§ªÞ€)Á>ÅÈ2ðè= ×@uA*ÛHw~*w® ÓãÂXè+ÈÇ8»Å¿0=…6 exæ¤ù5 yJ±ºƒ?ð=…î¶V˜¾ÏØd“Ý©1¶ñ%9 ù !©ð… ¶™;K•Ž•ÂÕZl¡b ½B£ÍYŸ™ÕY5‰Ò®Åóª®ñâê‰k§½O,ÌÏ3PÝBÚ×BP+Ì•‹ã­„9¼ÆÎÊY¾öë\ékÀþëÀ&ì«-Z—ójÀÖ•ÿâ*Ïß² h @Š6X©ƒ^ÐÚx„Ã\ `-H†NX—«Xf}‹uÙ$…V¶3† (‹ˆ‘Ý—d›²aÖšÞ„ºØ„\daÐ mè½á¥æffNpá/þ@—À¯q€$"õfÈI—MÀ/Íki›ôÜ#ËÒMPå@ž\Ì0<Ñ`ê ¨j;ƒÓŦ8€b˜äåî¶±LºðIúÖ<7µÜ"€‡Áƫ؎¿¯ÝÑ©ðÎ/7=ƒ3мâT“)³m>»÷‘—’Êþ˜’ÁÑ¿pùê„x*‹ø¾<󊻚  ¿ÀÓ¦àÙ¦¨G¥‹ê †Zb/Nº°4ÿá8å ‹’jN"1ܶc;<ãѯQ†ñÅû˜£ØØJb Z-›àdêc‚“Ä(‡£Š¡RÜ 3¾c9¹9R9œsl^9!ŽÓOëô ñd¸Û‚ ‡ûrî‹c7ì–àOÖӹšãó>÷óðÄó“0!(îÙ¼ŽÏ<ïc†Ût¹‹`à¦ØL^8è‡ »‹Ýhíð»ÈÅþ 9¨?? ŒYÜlúŠQ& Nu ˜Á1¤þ`æÆXTçíhè€Hj¶Éè^Og·ÜÝPæL*p™Ñ»ãnu‰çÝ ´ø¦gc寧žÑQ”ÆFgV—Z—ÿLØíÒƒÞ­…ÆØíuÑ+ÈR2_OÌøiﯘ÷ÀÆ|„×fj]Ÿí&Œ»`ËdFiáðçÒª—ß#æÝV—SÕtežÑb–MÍÛ(™Qǘm¯!¼ÁøéÆ˜à —'¯Á³ÝŽ×ŒÇ»ä¨®©v;w‡¶ve~j òX;q"û :ÿ•fé¸ó"ë½áBc)×cC¹8â“B¬ÃB¼Ã-®!¥·Ã3Tã¢O¢’”?äD5vÃZÙ7¼z‘¥ïz¤C/ŰßrKÌÄ´GûµÇD¶ŸÄCÙ!>áä?9z…ûb¤ïãkY!ªÏcŒø“ƒ ÷" ÛèŠ8‚qˆ<ÿÒ͆J™\DMßt¯øÐe¯àcÑ»ˆEþjŒ¢„¤ÌEŽßªhgv9vg_hg—Õ_øÝøhhÔ*އx”®íðaØâÜçÎídÎñ‘^}ßG}ßýÑ_p^x§OþÙ_”Vù’Ypg—§Úοb¾þتæ(yªÙo¾÷þÝÏþŸ~Ÿ.G¾˜hé åÀưA¡ ?È?÷`’ X€XuçN±;V­ W¬B¼bÅÆ­RVlB<ƒ«&LPnÂÄ 1‚ 'rœ2ehU+ (x±,“Rf5j&QÖ”i³fÊ™&išô™³çO™F‡ÿî4 4hÒœ´ŠÍ uèOŸSJ©Õ¦N«G•FÕ õ(W¥V«õ,¶êÒµe¨=Š”­Ø±c½ -«5(_³}÷ú xðß ^ ë…+Wo]´ŠÍŽ ·Ú2°ÕÂ4 õ¡æ²+'äØRéH—bÁpðé"­M— 6ÛÐ"X¸ ႹQ¬E‹Úµ_ÇÞ/v¼x½‡ë}§ãÊ.rzrêÓNž0ºu‘- '„Žñc8èÊ<žÏèQ½ÆçË ù$Çñ!Ӄܞÿc±ùä¥7ÒFåчžG%”P&áÄ ç ¤ÌE€ç { dÛÝ‘IvÙãžy‘˜ÿ„•gÐA+fwÑyu¨Ð s„6F4Á4TòIAJˆ:p’]<Ÿ\ä2M¨±B2(¡®LsÇE½ž}|ã$V>Ö´ô™U=…–Q(•Ñ€Ll>E›”¥gMsÆé¦œ&-“’›mÞ×Sm Z'Q<ñä—bˆVµ¨b±×^B½åØL¦E©£=eª¦|}º(T¡îµia]aõi§ªŠšhd¯ž «`±‚šÒdIz—Q­ÖZi£yj™I6ɹÌO\ñÚ— ÔÉÄ3ŸÜñ‰ÜÜfÛF-ÈÆ-·²÷š2^wG0^öfœtðÉV‘HáM&ÿQgÐF*Ê"˜ð‡/~ç¼ÑÀE·Ü•]„ï| 9äÐz"¨—[N€t*öÞz$žF§øÙ@ ä^z*FDbŠÊ@p…+n<Ž•÷œˆ "ŒÐŠI&tâ*u|G"ÀÑI‰'ãO_d3g›D¤ l tPr0h%Ü ³Âi. ´J:´!‡‡seŽð^ì%wwœdÔJeÂÊ›J¡¤ÖUi‘…j¤}–šTñUÓ Õ¤™fŸ'¡Uã&5P(äŒûY(5ŽË$¹ç†NŽ9 mÞÙ¹¡„Š>(žo5pº¤CN(ê8±ùçŸ8Iþzß«×zÿßï=ùèªw^Š®r˜Û ·§ï±©O…¶ }½>koo‘ö]Ÿ)]<3Ns·Óóž'<ƒoty>‰¦9='E£:±ÿtZuªY­êVÃúÕ~â“`C­§[‡š|“ë4ž½»›Xï1º.³®+÷+\A!Љñ 9Äã| †ƒÝÔ&»Ái2x# }ÇÂ)òˆÜZÐê¸ ^“`t²[Â{¡,ŸËѽEæ¢R ¦õ`z<øÁíˆÄ…ÿì‚W˜žB b:ìêÃ¥…Ã0ÁŒ!x¼kqê´<ªÈpÜCïnŠÂù®ÅÏ5œát·Fâñ†ªz¡î‚õ#óî¹& ‡iTb L8ú2”‰+d¢®8 ÎP£âÔ(Å€C6Ò‘ˆ`Là4çòÌ4à€VÄC6;—1àoHc ÁÿƒascñÐX„+¢ôx@%¯xc‰lR¹º †™»¤ ®pµÛ9¿Vpdù“nßç«40SqTà(åxÑΪ+ZÉJ¤r;¸M¢2ᅧ•¨2OÛÐÒÒò‘—éiÅwÖŽ“m†³âq»•À¾µ~*.5’µbè Ê@M`Ó…t¡ QÈÎk4Î-2P6݆Íw¹ë¥ ÍFnÓQÎwF"u…{:´QÎxö9ž}A‡ÝñÏ i‡NlKñ¤Y˜1Œè£ÙàFþ0zŸ†Ѐ€|.•‹—NqÈ™l$—ÅeÙ†4‡‰ñP‰y×4ƒ8A¸Ä†„œË{ q$ÿ`…ƒ5Ý5!DðAPH0¬‚ ÆC&DXàCøAPy@<4ÁZ1„U…TL>T€1PÄЀج4ÀÁ4Ù6ÃÔ™˜ C&@ÝDqøY>°Ä^é œ °ý•>£eæ,šåôÚÊ®0’¯0“,£Ëožì±!âé–%V¢`Ê¥¬!v¢Ä–'µXŒ2Å’$EEéžé)bë­a\X†©Ôáou^áÀ^q!WªA4ÍÁ>‚,K ¤O¶Ì†l8ÁdmÀó…>!¿ŒCoÌÁÜPÐQǾt›o¬GIéb ÌK>Uÿ̇áS¿ùW¿áGÅ(ÜÆ|ˆxœÃáEcÀ‘þÉÇxÍ3TM=Š ÌÆ¼Q‚˜Ø‚4D๠ME Ä~F²Ù EØŒˆUDP …ÜãK±Lý Š]™Æ˜ &¸QÃdÇìÀ4ÔˆUXI×vÂ$—Dàƒ¸‚7¸ÃèTÛ¬ÂD@ flCð5AÔÌLÀdxFvŒC1ÈA XÅ™å X¤!$™.áŠiiáéÙEVdÊâHÏ­Ù.¥ï(Ïcqö ëxÞ°¡åޤéŽaaîPÎRN¥§ÍZï„aSÖŽM¨ŽÝE–„ÿNªý•XÞÝ\Êe]>–]Òå]Ú©qeae%XR¡–¨yeö ö„ŽÝõÉÔ—Á†@fÃdn€7ІÜAþ·8A*j×¹Gõ½GíSI!äý5Ôi#| YLHèÿ©p.XGD‚DǹùSz\Á—‚tc ÂD@DÍ\DE,ˆÉ@ËÙ”µœõ‡YÄkJÁDÄÆ°Aa™YfÛ¸ÇÇP„1 ‚4(€ – XÃ6lC¬@ˆdmˆ;°€øA,áÚeÂy„ÈäÀ61A6ä@ ‚+øA4ÿ0ÝxƒÀ68ÀWÈÝ^©™¡ÍR%®E®$¦Reå’áÔ™lÙRpý!kY†ÚÊ%¡¨*qÖ2ab&ý"%⩞›]Ò#^›ÆŒ¾¡›ÑY#2b”*ŠÞÝJd´ÖååVéo½ \ôI5UUyLÃ'D]'@àÀí)Ã4hÄwq¦‘9¹&ÒÍÜwH¿¬ wÔ_Eaļú©f õâz=T|l”H8Çl€1*}˜ÃåTŠÀMBì©Å,QYŒJ9HBlÂ¥ P8,Èo‚DQ­Ðv”ýã[ÕN¥ˆÍTÕ†ÛRêÆðŽeÉ[• A‡ „+¢Ø»˜‹äÿ x8D „G&PKÕ¡dA\Éɘn@Y½AÜãD€4¨M‘D&ÌÁ4”äF¾Â6 ĉ5MzðÂ4Б¬$>Aø 4]´Á6è÷¨Ä¢™Þ¦}N¡½£ÍNX¤qaéÚïEß@^›=iä)+ÑâP)^ càhìkñ¨%:,d`$—d@¢oQì-%ÎÞÖÊÖVgAi$~’kA^êéݤ”eTŽ5\AB¨œ7Á\$…¨ÏøÕŒ“m¸ÆiN€—ØÆÉuà´€‘€*˜lÂ8ÐÆinDúøQøé“JEK-ŽÃ&d‚¹ÇmP¢òŸw)ÿ•Á8‰€HCm‚k°Èþa„ 2Œ‚NDovjr,’¤Œ€}ŒG]Ä&x ÑœfqlµˆAÔŸ7ÞÁh ÍxÔlBtLÀm*¬‚\ĵªChŒm¤“A”À{DÇ8LÀ„ÜÆ•@1P8l·´M'ôÔeÄG! ÝR+µÄAHDD€èŒ@hŒ•¬øÁXyC7x E¸®hhlB¤ŒdCT@¼«“¯ìúÁv¨¸ƒ;0]6´JÃ6ì`„ˆꕙdáê½h©¨h‹Š+¡¬†¬_ŒÚ¦lö<ΧñÚžÝYìSZ±UZãx÷Nõ8ÿå¥ÑÚ£¡a©‘ÖIŸ‘¥§ù®ie­Q_n $°«±p¬µ°¬0,ð$pO¡!ð`p¤1°.RW¤lCCƒÕLÐ@šF “˜ 2lB7lÂ)zI0l7T±2$WÚm„C:m@ÃáÀüÁi¶ÀL€€q0Ô¢vÂÔÂdnr|ÔtÃŒƒüq°±HH±mXn7˜`æ¦qsEÄÆi„7|FÜ^1@׿q8( 7¬BÛÆ'ŒC@ Ô‚FLq˜]A7ÄÃG l€ÒTËSƒ7lÃÈqllÂpU'àF„íÁä@'¼ŸkŒÿƒ.ïFtÂ6 s=rÄäÞÖíÑ|‚ÒA¤°€8%DC+ÄC ÜFæC: À ÂÔUÀ#DÎ`q'pÂS¹Á&lÂDƒ$²+ž`2 B7˜UÔ‰ p Äidh ±•¼r tA7Ü4ä6AÖÈAššË6èlƒ7´AA'¸H€)¼²C\BAlƒMRLC pD`1ü€䀑ÕÃ+¬;\B%ÔTÀO<…NÆD÷Hâ_€ÞâEßÅÙ,5 ÃÚÅ­,†j)©)QRø$e^ê!FÃn^)h™ÊÞ1Š‹fÊ\Xÿ"oÊÿ¢ŠßQ¬”¾,TNåáoQ^é’Êì\´á"-CåPCg Ô úLCrA8Hæ+–ópT|AÇ8À<‚H@&,ªG8Á<À p&Fd@è˜Ç8Lƒ Í&@Ýà;€8WttCAk f ÀÂr8t ‚KwMƒt€¸Á|ÃÄö4·¸´øÁ&ÀA Ä6ˆD§wƒÇd‚€ @ÛM@ô=<‚AÈñ¬ à P Ft,PÁâŠÄ4Ä 8ÀŠ(Ã\1ÀBxwyà@ÌôAÈt3=Pÿ,â ؃¨Azt•=\ÀAˆ$Ä+xÀ%@ApˆD%ü!´Â¹ƒ1TÁ#8B:{Ézƒ$LAÓT17€=@ ÜP<|ƒôB|FÛƒt6;D<‚´±€7d7´‚4ðW ÇÁðèÞɘ"tQ•1HÃ%´&T‚à ÁñÖ78@h@Äí=CHCNƒ¯tÁˆ€"!ýâ"õ®í¥Ê®9:‹Ž¢pRîVø!(õu§‹’ÈŽaÄRÅ.#•¬¨¯á›µžœ­èŠŠß-iW«Ê( e"Êõ­Ï \0f½¡ªÿp &.JŸDS ËwÁFD,ò5PEÀÆLC[­#ˆBTÂnĸ;t@78€(@r08€€€l¶&4;ø—8•èÀ\lðT>AÄÓ,pÃ6eÂÕ’AøØþíì¼`nÂ?ÈB'$Á+ÃÔƒ¤ÃÔƒáú TÁ°ô·CP·4A´xÄøC@›·H<È‚1TÀÐnè&¬‚d’©%Û dWD„éÁ¬.Ð8Àtƒ7P\'ÄÁà ŸMÊ6Lƒ4 EÌ'ز@zÄ&ð'œ•oL'ô‚ƒ\ÿg&¬€=”@@ø}ÂP‚ÐGXwµÁœÁ˜œDŒ%ˆ T$uÈ+…lBtüDp»Ãd†ÜA'8BYŒÕpƒˆÐfLv4…D'0ƒ‰m„‚>hAÌ ‘|B6ÀC1l¯7lïh@A‡F`t]ÂXU0\Á¹°ƒT¿FæëÜ¡¸5⬦Ϩâu:nÎãüU[^åÀ²Zð8ÏçUúŽâÏî´¥WF°¤ °­©©Å°ãT%VJ%d%%Z¢paÿÀÆÎ\Ê?@T£FK ÁTh!Â2Ë4(ó°`™j '6 qÿ£ÆˆAr¤Èñb5ŠÔ$Ž„H+¤D&ii|r%^°NÊ‚µÉqgB°U@ˆihUéÀ†r6[g[¼xn‚ˆçÌœpŦ%½³âß™xÓâ9‰·Ê«=sZ8íFŒ·MñŠ…›0G–”nÅÈŒoƒ1Â…»o­·b¼~ ·ÇÓÙ+V‹Cä¨Ó]¸ñpTYÑíî„;¼U)’iŽb-&Ð8t%“Ü 6Q’VŒÛeq 8zµêÓ„x-öH¸tæ“WØ8 x»²'ÏOü`íÙÀŽ8‚œ&èb9”B™À”qJ-.¡Â›"‚‰¸XÑ¡‚`€˜fvÈÑ¡ ~âÙÆ`  Çž Zh.Dh æˆÁüÄ–y`±bŽx“CÉd¯MÎ`‡>Œ@™;14¡Ç“`Âù­˜tª° 72™ œ3Èé…>Ar“W¾Aá8þˆ';JÀ¸„†¼£>ôàƒ V ‡€x<€††æ¦…bÕ8Ø# {èñÅEòâ©‚’yr°š¼6Za…“ÿMðl8.g…ºÍ¾B–Vqå¸îØ£v‰'¦»á0þ™`¯qºq¤Kx»CDª@ cûc0Zñá‡=xŠÇG†°Ešxî¸ZCòad•;V™®•GZ¡Áçq‚Ý0† Þm{LA¡yZ Žp?ààF‡ „Pã0$ÛvÌã°‚ÖÀŽê¡9(‚u|ñ…l´ã,C&Â’2€ ‡JT]U,Œ|¤˰KŠh’$d‰±È2”¨ÄŽ&Gl ©R²)ÿX™«Y¶êÕ²$%/nq#b4c¹ºxÆeyñ\e„רÀ,m 꺢ãÛˆ,oy+]ATq¥«xqÂ2ä!ÈQÁQŒßb£˘*vqQ[ÝŠd¹”hj„ÁEG0t  /"†&Љ.d*À×4vŽ6”ÐÓ¸Uz@…LàÏ܃6À Þ0†#|á~tcwè.1*ø.~’>ðáœÝl|Ã%Žà¢p Gw¸Äxî0ŽÍ™á—@ aØ…Í©ã ñØ]øƒ=L@;ð@"Øaßt‡(0ƒ#àp†ƒM€Mˆ‡,¶‡$ÑÉÿAö(Æ'б vðAtk°Ñ&Jà>\AóñÍäùLìA@p:nDt4؃/¾Ñ c¤EŽh‚1,:˜—0‚‹â±vA4àÆ6‘‰nT¡ Ä*:±Op¢«Åô‚A˜V4ƒ?8èNN úP é%@A̰TÚhа+,ŸÃ\(@<³Š3ø ÙEX•aŒ 8â0@<€À‡m°€ bpÀøÉ½Ø‚­ÀRܱ‡v!¶è†à€[¬à(pÀ6*|Tb|ØŽó*¹z¬ Þ`A‚L<‚82a€.¼bÿøÆ¼q®öQŠ…° r¬x™+Wl䮳º›­ v±QI,u’” ½í­KPbªõ¤Š¡âGð+‘øîW¿.A¢5b_#1%ýí›ß.xÀ ‰ïH ,ß–,8½–pyÿ«D x%V,ɼJ’D#˜Ä•*ñˆMœbóÒâRÿµH„ËëÞóÒwÆ Ž0sXÅ ‡"Þ½–lôr¸„7Œ ±`H£ jp@¢âÊšAÞÀ‡º!‡x<äØ ðѽ°²é ޏ˜ïâ‡:<¢ Åèq‰L8ÂÜó‰#¼ñ *œn0†¸q >˜õŸˆÿ+®`n,N ZŽp€šn¬@{ÈE:38¢¥OÖ ‹" €ŸÐ*4†=Â8xM'Za9,€¯)†dŽlÀìã1Îàwtg8Ð ÜANبgЄò¡~6S qøóV¡Œ=hÁ Fp˜]Yèã öØ_–C3\¦á %Œ0tÂvñ0Î@ ”`µVÃ3ÂPˆÏ5mSà$ÁœUƒ²8Cb1– cqeÃ|Y {XÁ² @~j" 9ÚF¼±‡^! .ب4ß`ŠñŠˆlÞ¬x„Y}ÉŠ*\a Ûè'ÿ¤a 0$"ßðJ€ ‹ S$#M¨ÇŠàÑ vÁuåÓ>ÒÀ!ˆÀâQ\c,9”ˆ†1ªÐcD º:Ü¡¡ªÛÃn¡×p¤ã"Ç;«¼SêŽj̼ÀøÇ7šñU[ìcýŽHu…W’žc!×HINM^ðÝ•”!Ÿ®S1’vÏVû>È?Æ‘ô»ò®w Gðšq‘'ïO©Í7‹‹ÑH{À´"t£]hÀ@õxÔ¢=Ý8N‚±Dé õÂê@˜á pÈÐÇ)A ?˜¹'Á ÄQÀŽZ(cŸ€‡àæl C²ÈÂ+ؘ dè{°>Æÿ¢ TbXàC'â‡< ¶(á0”aÒÁá¾Ê)p`¾A ÆAÄ šÉ 4áæaª'0æhluÂá`º¡:azB.`cÆA0Èï¢Î „Õjú¬ŠÃ32íp X·'Ó`£ªI®¦L³zèæÄõ0è&x£“'ú 10ªn6Ÿ„nN­ü<£z¶iºa.ÖµÏÎ@DØj4¨ÜÌw”<£m¶gÄU.¤`‘$°Õlzc{²í*–;¯Ba#c^ëÕÍèÆj(–{¶aq[{“­C0"ãa#~Ìu_ãI¨§Ïš¦7ã\Ár ¼¡$¢hâ"ÀrŽàXv¤Šfÿ与 Xü€V jña .ÈEmäà€ D›à *  †g}dŠÀÂòºeQÒ«ŠØ¥Zj… ÉÑn=²!E¿´TBEïÒ')ˆêHXìqWÔðLeò iðWö÷îî6ry%R oq•õ0Yú6UöèsÁtÃ¥n!Òõ*—ôfÅQ÷]ÒZ¨áR.%È>à ØO’A~Õº @.3:A”ý’/ùœ¢ip†+o5Z Ö’y™7„uy7AyÃaZàž·3cy—70ò#0¶—'¸“f¥•[‘$.Àµ|­æ ̵W÷•|çÏ5Ör[iV@ÿ|C]7PþÖgÔ50âáXS–XûL|«7-ä`Ú·ÏxõV¥•;Š~­†üz•'ª^É’X[\1¶\5ƒÁ70êæV“×jRv[¡“aÇ7e©‡XD.fÄgøé"  * ~¤nä²;dÚ  à€êaØ¡ ‚–&4-ÆÖ°©Ø¡\!Ž KŠ`Rñ~©§¶A^Á¤!¡€rÀ`+HÝ–€ˆÞKN#ÌÆ*uKÝ4¾ôt¾œÈÆ2¢‘šhŒL7#]Yòh‹ïZê##Ïo·+t¯#…ðéñ/J¹ ¯ YYB›[T/‘89‘x…’ÿ ÏóÏôor'Ò’<×" –a‰‚¬+•a*Á²á(`¢ó¨Àµ:`xµWeXƒMXrô÷—a#0~|[Àzõ|‡5{?˜Wù)€J…iv…Ø^ñ—ŸÞ*Ý÷}¹™˜çwƒÛ×]×ÕVKøä‚\­F.‡6À¹`¿y€M¸n$xÈï`ºG€#8€Á5. SZ%8e7<ªg{ „øÔJx]í÷VÉuqÃEœU„¯â“‚Ù3š#`pÔ"@@·‡\ƒ¡jŠÀŽ 8á~p– éFeæ š W tÂàÀ˜¸"À"àÜA\É㦡‚B¤ÐÆcŸÿºÁU±º Åp÷#iªéÑXÂ!…ÆX¬$,7¬ÅÀú"Âz«S½²”¬% ÇÔÚÀìxÇ0ìRæ Ã%O!Â¿ÖØ¼`lÕ±û4Ç丮[ÌÃ8ÌMÓS¥ˆ«ÑñLÅVŒÆò”QÿšNïKSñÚQJ¬¯+,R;LŒ¨ŠÂ 0I Ø1ù¤€s‚·Ÿ›F.ÔGrì郃 d›„Á—™?xzåOX×’z¹e±U˜+ZÓWƒEp_JŸKYו<,˜)x-‰Ù„›ƒ!˜X¡Ÿ1ضý×YEP‚íYó9Ÿ÷¸Ëµ|_d/z¸Ox[ʼn\/ÚŸÿ©›XCþ¦y_Õg0úìp†X"ž¶à` X@ž÷Ûy€¸ ŽœV º2¢jÂüM (r@æV ^í €!ä` X ;PÇÍTV>¿ÞNåR< U>™IÑh!)—Thªùn?/RW*$Muµèî*Ï:OóDùÈ7wïÈKöüñý1 EOq%—‘/²ËÿØ:÷ð¤4ïhÏXŠ¥ ûŽS85"@{‚—ï êai÷ª DàŽ@ ^ƒ»[v@d¸ÁWX„ŸWy±z‰ùäBÐaÈà7˜×jœ¢;8…ßÕžû[¡ 8Ÿµ»Wÿ :œÏÛ‚ÍõV0e͹¢Å‰ÏûÔŸ5xÉO]››üj=ž›a§Ù¢É÷ ú I¸nÜÕŸÝÔÅ90ª¦½¹Ùº¥û½»Û3øw¸¡_àÀØ®¼áú0ލå ²aº gÁ ¸ÎïÀ+,œX`”r Þ³8¼Á¼¡XúÅœ®º Ô ¶h䨩ßöº€<®{ŒÆÜ«±%•ÇŽ(°û´t«!À’pûQ"½¼õ6sÜ“$ÅRôöWøNV–U ·Êõnô r¥‹]2÷Ç1Þ¿KÈIqéQºB’æyEå‘"QèÿW¥ˆPb@»zp    Úàn.Á ŠÀ’Á'lÃ…±ûš¹5޵ÐW„»Wy†yÓ¾zÈà`¦wàžœµy|Øë¥uØy‚×ãÙ\ vºÁ—ÙUÖ…Ñ·}ûH¿9ؾ¹ùaÉ×}%¸ïÁ™'(úÕž9ý`ÔµØ' 5ÀU|-š€C¸„é—…O¸½ z] ŸŸÙ[ò¯û*Ô—X›§ r`¤AÀ¥Ê 6Ct_¤”ž®‚xá²-j­'"@"€ßá›°.ê!ü ëü Š-ÜÂ=¶nŽ@€  ‚tHѸHe#m<ðlåZ Ì 2^¦%meLÿ3¬­áLíMñ¿L?ŒJó –•©&`µ2 ¨U£UZƒ Ò8±LÅ/*dˆ°ŒÅŒvühÑ#Fj9Š<É DˆÕ º\HdÉ™6¼hrcÈ&=¦ìyS#BjG“®D*²å2›[F ª“¦UžU*­9RcÕœZîœ%P^ÊÂKÆ­X1VÉVMs°§X7ÆÔÞI/Üpñ&Lð.ÜàÊ6ýýK¸°ã´Ž ·‡˜LaËá6 ¦\xSáņ¼ês1ÃÅ&Üü™ô`eÊ&Ä–.méЪSO8]ú4jÃß™ó¹õÓ£'ÜflØpZå¢e+cÿœ–qò×¢cÛ.L[µ_Ø‹^½{wmào¯í—ñj¿ìKÿ-6>rä±Ã¥Nn¹ßx«½GXzÐÝ!WÛáHã1ÁàPL0à GˆxÓ>•ƒO6ÓÅ68` \µ4 Ù‘Á Ed³+äðJ%Ûl“CŠQÀ6~pÁMøqPGù  ðbM>%yÔ‘BUi¥”GZ™eLäe—`VùeT%%GVRY&™YbI%—^Æ)æ•kÙœr¾Y¦BvbÙ¥šn¶If˜Rú©å•[Šè˜}d§š•É¥–c"õg¢‘2*)¤…vêi§Œ²Éæÿñ h¡oºéé¤i¶Iê¥`ºŠ”C…qymÐ;­LsÇÙÄ@I%È6X_‚ö+k‘…ƒ™³w‘V dÜá´-0ÇkÙNFØfÁ§ß¸ô (ÙbåÇž±Ê5×[y¡½'žj¬õÖš¹ñöW½äÍÝkúº'šs›lÙÕ¶`¸°wÇ}g.rýeë×i •qsïEp¬EŒqÁéé7˜oÊöÉäÀkH3M%Þý‘ ÀÑÄ@´a„4m4ÁÂl°Š2ÅijbøDM:•X!t*F‡xsE,ÑÛDàG§ (É$/JŠii•ÿK)ÅÔÜ4Ñ:SDBÕ”P1Uô§XH‘Šgà^ê9秈‹Yø@'Ž)¢2îèáÊy§àª6$yæoûéj˜[6~hè›3>æ•’/®yŸêú—•{Þè¤v ®º¥…Žåê„Kù«e„ñHed²×lT 1rl0Ý'\QÌ'J3{¯p}ýúÞúeÙd“AF†õ˜EëýµqÏ{ôÑ+œ_8«¦}sùÛz³Ë_r«aÜ_<÷i}´®Ü„f'{ÏiøC˜õÌF; Cnó¯‚ͦ9ÑQ†ÆØ3y Y™€Oɼ3ÆÈG€úaöƒÂq)k3ã)ŒÆú·˜þ­ÿbo)@ràŽ#   ˆ0F<â!½øa <;B%Úƒ€mPC00Ž"¬âñè†*HcÀØ5|¬¡WˆÀà°ÆWT<Ó‰GÒ¶¤&YXzHâº5M®vœŠUü8*•ä$9áÈShR†§E'v[¤#I …ˆE‰dF(rÈLb’+S¡U”ôXI9*ò'ÕødGdòIƒ4ò ŽlJC<É·¢PÄ'v;eW€Ò•M¦ÒL¥L$L^IÌIÂò˜ˆÜd2EÉ“)‘$u{&­˜ÉIFªr‘ÂŒ JP’0,KXC^á 9\ñà;(¡4†]!{ÿñÂqv®óD†9ž™@µœõgé“;šAŸ·J¶,q!Ç=ûqŸ¶e°óüë~Å)×f(†?Ç€¦\‹¡¿6†›ì‡£šMVAv¹F0 5™nüEŠ'@Þw®o™ðΕ•ц ƒÀY:x AjhB¶àÀ#¨Áð+Ú5 âpB6vÞ³c%=¹=ï)S~*´Û0ý*<áV¸­š— ]'Q ŠSÀ£4¦Q-'Îfr!l E7 °ÁÌààXƒqöÕœqH†;Ž‘Vc&ãa;f2ÖJË>#ô­ï¿ÜùK÷¾ãëÈf=!Á®+zë_£ ²°ý-i¯:ÊÑÍH³ðÀœƒqÞ^†HoÂFƒÖ vð}m Ëæ„†0ÅD³ž_£Öᘃn®lt¦ÚQÌM3Ä$mãhAÓ|mÿñMÈsW8ÆÁ›¥í%5ñ¨qP‰%™‰¼Ã8 Ámà+¤qWiDÀÞˆ+x‡½ —.?Üqe?¡eÞpG%¸ TÓÌM¬oA]\ÌÚÖT¨=,ãô(8‰TS+)™åK®ÒI½Í­—qV{29„ìÄL˜d H"i’„„“JñûVìŽ_šý&u¶ Ú{rÁKðªÜ›Kw¾þòr–³X°y÷QòÍ”ÿH.2±%!_åP¶"GE˹É…ð,^Ï ‹öýÙ„º•3íô»{ªù^ZÊ›qÎ$¦Ý;˜eC„îfÐ×½[¬ç>cÿæ„òavþ^³´`#ÇáüÕ_”a± 8Óá÷*®x¿~ß!<¿Z²°zcˆ÷âj`ƒ¿þKgiý†mÃ,¾Ñã÷{̰}Â4 äÅÐ=?O…4º· s0-`{èkñ€C´›ðTb¨Ñcñ` )G ÒÀFÙ° ¬ÐjP~!Ê ŸpsmÐÞðt?7tmà!â 0 Æ ô!VŸð à 3÷ ÅÐ)ùàWv%~Cv#±*ˆej’Â:´%Y¢R*d§i˜fhtÂ*6(Ÿ:‰R%´i¤Rh¡5†…Uit¢hhÈG’¥ÿi¦ò%ÖZ™–)Àµj®5iŒ–;–‰¨‡»¥(‰ˆŽ3\iȇŸÒ[žµM PIaSÀ± [àFŸŸ BbñPmTAÓâáÓO1%-›¡˜ÁþUA¥ádQ³ ù¤Q0á !sÅŒ$µ07UÍaŒþVQØæ@òc~0>f ™0DOpÆ î¦Û?·¶øc0ý/§=÷~†Ñ}1Á0! $Bó3s›P‹ æ1©¡qs-PBÑš1¥Q‹C4ss°í“BñPm°F*"ƒ jÀC Ç4 Xp/˜ÿÒ°!Þð‚,0 °~€„3¯0dUŽá =ñ M³ aˆulƒGn³9¸Äjç„gzn7JLL¾T(hò8¿Ó8¤£M£Ã‡••Z°³Yµó[bÇ;bù6°ã({¸;jÙ9aihey8ŽR†sø;§\Ÿ…Z‹³Gk©*†Å;p8\yˆ{õG‰†h»å•Ky'ñvË@ 1ÆŰ %…:p×è`ï!ô÷‡ú8ôČѡ$5~HcO £¡0ûá‹4žö~âW?öÓ±AÛr}ëWQÕ¦oã2Ìâ 2ÊÿVpsCDwptgâGÿo4‡n¸~¶‘oIóŽøù%}³¨}ADÈÖ!t©¡ ÝÀ@D —^Î §ù×ýgŸ ñ~¢1D ék·µðbrH÷ƒCÆ Û PÄDkppë7 XU, huˆ¬PVÃ#H( 9é- .Ù 0y¬ W+à ®€~‚”h–7Ðd‡u¨ˆ™ØG¤cjhx$šÇfH:zž§zÕ4n–¤RéysvJl%Á„¤ÄyK[ŠLQ’M\ÊJA1¥¾ä¤¤tKÖ$vx^q¤r”xÙ¤M ¥–gzj7zkú'JrZK´”ÿL¯Dw}CY¹¡ÔSƲ 90 á€3 W n‘ £›p冠Ÿš›På5{HsÚpÓsW µp·¶0Óó ·f`«06S›…«%€qí¢ µ !§1s° ð µ°?饫»›äÑŸðSnq­åHDnqEXäcc¬@WP­ÀŽ(5= 'R»±Ò‘H3Á@rD9úX¯€Añ° w0 pŸÓ°á„41Óà Áð Šqq@PIH`}a#¢P¦qP~Þ©Ѓ°ú· mP ðd·‘M°/°ÿ3;ScÃ`|MPá?#°E°• ÄÀ~àV šd/Ph¯À|ð+°» •P Kk,°Gf}UGII—˜õi[·Y²—ùv"<]KY„ù)ŸU\¦ÃZv†h‰9ŒâZ¸ã*fØi£EXˆ":h[‰Ö—©Ò—`—n)†m–mâ;‡é—|[‡a7¸˜8—\û¶¦ó‘™\ÉañS ÷_Œ G°#¢àc8ó G WÀ09€ð™4•¹[`’ƒ! +Pˆ€EÀ¡:ÐG°~HST ]ð  +@Ä€ ŸpÅ  p°ÿ Ô39 — E`8ózÀ :Ð µÑ G` P@ðT«±PР4ñóš qÀDz €q Ž0 Uàp GWŽrð `p4 Váp U0pàŸ‡ Z »JVBÐßðû6 ‡ßösµðàóÀ 4ßàßÐ2sPU G÷'Uà ›>œ`ñP B ¬€åñqð UpW Û` Zà@”«pàZPEàcÑ\"š8@˜ 40=ÇÌ SP P,Ðÿ­ ?xC¶"`—Ð4ÅP• ` /ƒV~ðqTP6õÀ[P  •Pœà Þ°]p ó Wpà b1:ª”jÈ&Gg¼t¤¹dIÄ«'Ø:y &¥¦˜“æX­&+1áË”‚:„ôhƼ‰DÊu¢BH’*²*‹¢Ìw;*\«i¢)sk(•\›v–Ñ췞㣺s‡y¸[oRJl–¨Ëp¯‰µp €Áa~] TßTQZ``jà~P «) ÐŽrC´` ”:G0 T ç NЇ E¹ rÐÒ…áÿ¬P ñ7mÀ 1Ðö£Ó€Qð ”J ¬À €Á¿‚ m` ìP‚9ë P°]Þ q0««Kp Ä0@àôÔŽàcª± ~` p ­Èwð ÐÐPÛ ` …pEPÕý rH³ ñð`?K³ E 4àcôÑcE@ ÁÏ[b +Ð Cé-PmPÆH# Ûb`ÓÀŽà W$÷ç4Ð ìúp ò‡tÅ0 «ð ® @Ò‡À×H {ð:Ó €ÖýcÆ` ÀÒ‘/è ]Ð906¬à ÀBPÜ*ÿð 1€Võ€V>x”fH» ¤¬9™ÙЯPì K“ú€6\˜”^’•„ë–^©X‡Ùi„‰ˆ‡Vwq³{š¦kêJýK_êŽçw˜LÔwÖT•|jvŠz™wà…gw¢Çà†dá«'K ~á ÔyijKq'ziG•&¾7«$§~‡gJz®LçJÍt‘wàŒ´8¨{™ 1+   ]Y”Ú]jQHÓn1€)… àOÕÐolžã0Îcº"Ð>> ÝPÒ Ø c P M£Å` œ°å'³ bÝpqú•  ÅàÀQÿç¶ðíÓ×p rPSÅ€m ÝpCƲ ð²dà ð+@V ðø¬€Ç± PÀ cu…ë‚Ws œ€ üŠWÐ ‡€t÷EV¯í Ê¡{«BÐ é2sj°œ¡- ° ™p-±È ¶P­ý™«ÑðÜ€ER¦  2ŸÀ #@Ü@m€Ïr=àk°WT g G@8´sð ø`3ô² ÜpP¯¨k ÀøüƒM`޽Ѓ ,‰+°p0r€…CðsWa†éPÄ2`æCÀ Ù@Þ~°"k€ÒÀ[ƒÿ£­¬£^¸W9;?Úµ‚–[Âe*¯6*¥¶¸©f˜‰ø:zèG€V–‚Ë'‰[‰{ ‡2ÿ&°ƒôbˆµôx»–©F¤Vˆ›h¶³³)?Š:„F‰L¿ôi‡ÂÍÓ|¶¾UIá‘ùŒª ‡° &sŽàß »£ ‰Q²p—ƒÝpôÀ C´b>ø0¼®ºM I€MC°5‚Û Þð~1vèm@ g-Mc ²ßn1ÙàÒCô |@ ÷z_ ízE™ ² põ—ð »: bîcë‘ ™à²px¿Wðí|Ð>X´ã”}1¦ÿA@` ·Ò‰Ù ë {Ð Ý`<Ëò @ Ò…TTB€…YU°Ó'V kÐ Ñ~«Û ¿ l ¿Å®TYQlÕ„`«ºý:Ô Ç†ME‚s´"Þªbw0NèU,^'eÊŠ}j"+Þ;ã‰éÀm‚ÁUñ®à“•mN&ew6L¨àiO03pºPéô…•œ;g6Ä+°m±W¯ŒÅkƒˆ’–W~X嘖hÂ3JÅ2͹sÄÛ !øy+²¤M‘8?®¬XãLj784Œ±xµ†EÀ€AY/4 ÊT[¼˜cÀÕ–-¦µxcZ˜7 V†³çÇ™A—©L­ÁfÿÀ•=c†\­rkÇËn\­3cÛµowŽL[6äÞÁ#óžý;7pÇÕ€Ã>÷ãØµ£~®;6îß‹•ï¾Þ;7mæÊ£¿í»îåÜaoGN~yä÷æwŸ‡¿üóåî³OGŸ<6gÉÂȤ˜pv*&ŠgœÀ!ƒÂáC‹`â™àŽœ” '“ Èä!&XE‡GÆÉ$‰.š08ø¨e• Bºã“^âç OªŠ 2Êi6ÀøeŽb&L© YŒ™pe(† {º!@ ÆÙÃ?ŠÙ ¥ Ž¨Â›ŒV³;.)&£%ãù†“O¸Üé“oÈÚé¢q8ùæÅbrš‡Cÿ‚™pÂU2i *ĈΈ'”2Ùƒœ56˜R¦U¤ñdŽ+$ô‡)f"eV çOøä¤9ü죊U®PÆÃ=Õ0ex §…pp˜§ B-q YZ%¥;:±G‡N23ª€%_ï(bžO6žné Ìq.êæ1.Š)ž9ð©‚QPšãxæøcà@„¶)fÊLX؆z^a¡ˆ#\Éø`ŽšÈ!8âð#žLp¼ã ô’/8Úð#N¤©€…²‰€…VÈf‰%šø ”Ä ã…0ÙDcì²â°ƒîfú„“Ž1Þ û®¸È^{í4ÉfVŽæ¡ÿSSNhÖ\cÍ4Ë4+4×hš-3×¢öLiÒ¼¾¬kªE;3¨¿.šìÓÊȵ°§Fš2ºÉFúh¼GC»í¶·^šî°I“š–ÐêVmá5¨Ó~-ëÎT[¼ñ¾ënûmÇYsûïͦ°±AÌ´e¨ CÌp:9‡nRªõn¸a0 7h¡Öq(¹ä¡—â9 “CV¸#œaSêD“ &x¥qÔ¨$¡2ª †=$ftKôÀA¥U‚Á¡ VRõp"<À%Qt„óÿŒgê3ñ£N %““”‘poÚ8cÂOl ÀŠG |3àƒmR&0–Gè ÿX…… ZùIyŸ@&r”ÀmÀ_Ð×^d"&¸Âp{ì$BÉà‰db8'Rr­LP sXÑf¤ J´J#ñxß7zâé„UÀ.*nôiJÄZÅ6ªÐ£q­âœøÁ®0#2‹˜hݰŠ @e|wèÆƒuÃ®èÆ¢†P‰6tàî¸C0ú8£K<"øàƒ†€+Ô£ Òh ¼Ñ„U`ÂM0‚°äð ´¡1‘C‚áŠoxCÞhƒ+ŒÑ?Ðàø€Ãä ³2 ¦0‡IŒw"§_Ö§6È©tÆ3Ìûì†hê!ÿnZCc­:ǹŽmžbÚ§?Í!&y†IßÔ¬9ÚüŽx~£`Z›ò Oz|cLwZSêôÎ:Íâ¬Ó?ÚáM΀vhê,<àLN|ò·Ð؆3”Q !#Ä1üq’ÙJ·ë=þá#eÂU0†ÄŒˆƒ6Ðà!€¶¡Œ`Ð.œšG'‚aD#røT„ )‡*äG0z ê°°ƒ’ÙhB6²ñ‚°€pP@^!hë\À‘4hP„"T ˆ@Øq‰¼"ÀG  Ëvù2Å4Í?{£ÌàÀ¦µÂ%nk©[Òó윇ž³‰&ÏL¼OæçÄe€§ÎºÍô„øŸøÎzöCÐöøì›Ù91ÎöÃÿŸÙLÈ,hct Ÿù¸ÆÎéq6W\³gÙ›ó,tê)O§]3CÛ†%³Ûô­i“)[…3'¸¯©m2w_âøN4¿QC4ŸQ … _wÆ`ÍkŽ—\g>#ùÀiÍ6’‹|çÓvyË[~îBûàœx¿uíî«Q|ç×zÂ^ÿs\»›ÚߴŇžl¤gÛ…-oÀ]~3 …ÚæY¼šË,C@© ¦ÁJtQÐ@'X°‚JìäË¶Š‡¾ÀÄ<•ð…^«i!W‡2–2<¨ýºÃ# Ž“@üèFŒ^È#ÐÀ÷s8Ežp€@ƒ@Ÿ8‚9謜(–G`‚0–9hƒ˜Ïú 6(¡ºƒ9ë9ø‚%ˆ÷Ë”`è‚°‹˜R ¨‡xøƒáIž € ²?Ù€WØ‚Ï:1™8Hƒ˜ŸL؆GHˆ/›ü‹‚9h7êžm0Y‹˜ˆ! È™@`¸‚›šÀKÿp«Î¨;p€©¡*D¨è*eð†i€ ô…Kp&ꕲ:‚!Hˆ²Ê‰Wo  Hˆ"X„Ð?<’3oÈv‚.(©bÀ† °–“x™ˆ‡WhƒhƒJPDÀ+`iHiÈuÈÈ`N8˜ h‚JÈO<iàÄ cð ÀÃmˆ€5Xƒk^ʇÀ™\²²uŠ»ë&ØH2ž9´»“§wºÆ %ŒÓ§Ö1ÙÀ,ë$+GsºhŽ(S±»²ÊÆp"1ë¦*ó±olÚˆ;çв‚ª2o¬ÇpZÇyZ2€tÇ€œGzGÒÿè§Ò9ä©…p‡S -%Ù“ä™[‡ ˜ƒM¨%d¢ÿ)Y‹‡MH” ­pP”©Ò Z(•¼ü›€x¨?IˆM؉n@“©RžnøŽä’ä1Iåa¶?Ù«=‘.©Õ!*e¨).òºƒ p ô ‰ ›ìI B@ØH:ˆ‡ø2­L‰±œ€Öé‘W ‡‘ÀSÁ¿Ër,Æb¶3™©ùžq³I.X”äÁŸ •bp "a¶c 9 Ú"²©"«NH HÉ—Ø“ð ±Iœ,¤Ô™€"ˆ@2.ˆ‡G8•U(€J†ø9 ¢LèEÿÁî€ è‚6ðV€G †!øÝô†m`…#hå¬8(oˆ9À‡ðWh8Ît€%+ÈÅ#ñ` ]r™^êGÈà=¿A½¿Y½ؼ¼3¾À[ÏÏs±g‚§¶'Ô2jr&fÇ`Š'›Ž{*&}Ä&‹G¥',[»~§ËOfb²t Gƒœ¦&t¦þ Gö Pa¢¦ÿ'úp²ÚP kJ>É ú2©t‡‰P8•dQ4RžŽ¼•I¹8[ùƒ ËÅË/ËÑOiq Iº,«x.[A‰/Ó YÒœWy ¢ËíÓ¨áyÒ²¢¡ÊáA@èB“ä4¡ÿ”?$¥?@aBœÊ“ƒˆÑ+hؾ&Ý5Žl³4ÝÈåÓáÙ“Á?2(ÌH¥œÌᑟ²:ˆ'ý "B›T”& âÙ Yù#‰ÑMp-/-Såá’ÔŸåi¬½"R›$Œð†!XJ(‚qXÈNèi ÒU8‚@„(‚UP”ƒx…iX8`#h>P8È&€i@„‹ÁEoà 8 0>8‚ë¬?x8À‡#ˆ¼ˆ€Jœ\2Fk ÑF€ÄG}ÐuàƒP;à؆ ƒJàbÿ‘¨Ä\…5¨5 ‹#0†k5Wõipç<‚U€ðC|¨€ hN(˜|ˆ?¸NèVìO^RŒ~ü ûNý܃ŒÇ¨£Ù™¶û™ù &m¨‚J2ê¨Ïyl¦ñ¸Ð_oìP5¦=_ÕߟùOr1Ì1ö˜' ÅÐõhßëÏ5<§îàs²GJeŠŒ0àŒÏƒ'è[ÈbèJ8‚— 9è†O †i(Ú 8Z³\Ú*Õڢőù›á®Íáù³ÛR†MØ[»eÜ­}K»mÜ¢œÓ¡”¿ƒ ÔíËÓÀÅڗШ(†ÛÄå´ZñZ )+ʵܢÿœË¼.î\2ÖZ²L7E\:ÝÛ¢ÜRâ¹Û#I«åb»ÅÛIeZ5>Jå©Ú'UIÙ>Qcà:· ؆-Vxáhƒ˜Xw@¨¥-`…#õ‹›ˆiØJj³À o𳀃ÐÖçl‚#xVò§‹8pç…ƒ&àä#Ȇb|0˜i E=SXŽ <³éØÂ׌& 2µ3²ï'kÆtLP· 1r¬gF±*Kæ îG±"kæ³Æ}j1 !Wq^æâ€'týFõ}FgDær]±åf^ç…`ÿ%šãû.û.Q†éÝnh‚p Ä1è9Hžÿ­•[®)]Ú†¶\h‡6ã‰^Z¹5[L[7⊦\6¦hÅEÛ HÉ«ÝèöËZ‘^©‚èˆæhfZ²uÓ&UÜ>¶h¥…a½]ÛMècÌôèÀݾ¹„c2ÞÈ3™ÚÌ$Ìt Ùèä!i[Ɉ ݾÆ]žN˜†"è‚K¨„ð†ZÀw †(w˜D¨€O)†ixš‹@ᘆ&ÐlXƒ#†`õ†%8å6p4o?p…"xVàoø˜Iö†.ˆ‡Xs°³ó^Ïà› 5gr²2î ¶)=‡5¾œÄ£Xa^_æÐ Æ3à£;ö„=Èóe¯9m­ÿáì¾Øãìô5XøL½Ê+y}Oö<Ò¦<©¼»¹mÕ¼ÜÓ×Ý›½±“íȜȻWŠõÞYáû'j0ªùªëÛ`Ø †6¨…Py…/p€CFhä¾[Aˆ÷ÞÚ¥Ö[3Æ\)Ú6 ‰¢hå!ƒ¥Ò6.iüþ2°¬c bË]Â1.ÊžžiªeÒWAé¦~芶è b‹Öh‘vp[ b ¦p7%ÊoÔܹ<!žé¥vã ¿TÀý²ž&¯ã î\˜¶q›äH qƒ`8Ȫ“ë#àƒJà[Ý&* (€t(ÖÙA Ù€Z¨†‰€WpÅçd XÿF8¸‚gõ†Ðo8E8¨‡˜;îE d$QÜàšt"2Sft>¨|¼™á;Ge–Ç‚ü0ë™ý½`(B·Æ{:GvÄgÔ'A?²8çdÖó¦Oð@çƒôãË2i„ækÒól¢Çj.få1%ë§€Šf[ߘ×ã“Ó yˆ˜ö+–Opˆ0LZ•i³qÀ•pê*Ý„nZ´:â,žÒKÁµ2`éøƒ:~ñ¥ŽÓŒè\Â7['ð˜þâ²Eh  b§b¦ÝÌ$eB“nè/ã2Žéù.Ê^?£&ÍÑ)þ2Ä=v [™Nq™F‰¨Á°-Ç÷KÿMÉßã¾ ‡¿Z°ê>Öq ñ8“"HÉ¥ðkxÈzØw@0 n5€#@?øøÚ´bElbˆ‡î¬¹®DÜD(‚Jˆ€m†`P˜ Pä+ð–1»î Ž×àz…mÔþ%¶ æ€íÅ#_ã ô‚<Ž÷˜¦}ôûèUP{1¶Žø¨tøÕOþð m,ßõXв×ßþÔE&ó¨gæÇës~ÚÐzRægšû±'OU_2j‚Π¦÷8]êœK‰¶• €ø-¶Úök{ßÈ`Ð[žW[-]ãÉ¿\¢ÛMžˆ~ZŽŒðÎÝR‘î[pGÛ ÿ.Úð|!jÛx§Ú¢,e·•¾­ÁtèÞÿ[¦MÉ3IéLxâwèbŸho?[:•â%ôý|Ÿö´Ýð”æ4¸ý›_>h|HD°‚ ¨«@y…JHQÐ@tùB$Y?Ø„9‚`=‚¡Ë€ˆ6¯ðmËáÍœ#pðEhPæaPh@À˨2ÕV£¶±ZGËŒ q£Æ”©©ìøp$Ä’09–qHÍaM’«ÑÒØ³ -?—m$ TèßJu>ÄIËcÐ2F‰V›º'VŸZ«ízôfR¤<›Bí¸3jб_ÏšÕhô)Ï«,³‚ T£Ó²k™òÿ„Š7éß½GïrUÛ ¬ÝŸg;mšÔo5º6'3ê7§`´m ç5L22ÄeÔžþð!^8eÂÝQ=AYêØá6´®EípÁ\O˜p'ÜëÔÊT«þûxoà°{ßéÍ»7ôÕÊšßiý5tÖ©7ÁnNfuïbÑW%Ï®z•mô؃‡Ã¶íMµ7q¯ýÛ6ìÚÛÃîïüzrÖ…³I8dŒsà&Ñ)ÇÚjÕ1x]sá ÷›xâ(]v«‘›m½m_‡ ÂGÐ%Ýr¶7ˆÃ•yÄkÀßoññ…WD¡E0TÌ'ÁÄ7®Ôà ˆp7|RLuÁÿÏ•8¬rÇ*Ÿ1Î4•x£CÆ âM=é¬Q€@´QO°ô(UÄËD4ù´QT)t’K­4(J.}ôKJèO( ꨟ3J¤"YjÒ ~Z¨ž>:'¨-)z©”J:S©‘:jÒ¢“.JR§Æth¨œ’(¦²–ºi¨™®„( §Vú‘ ±êšj±«‚Z鬊Jš,57õAW—Zpç ×ÂñÐ kÜJ§ÝoÿG\‡êu7]‡5^ø\lèºF{ÊѺÀ¡Èœ„¬Ó^¹Éiã‰ð½6܆÷¶`omÁLîp©ñw!Ö7N1߽蛾úÂF½ÿS¬ïu²igïr‹ØžÇ½ÑW^{ÿuœ\8>'3xÿÕènsê…>ÄsF<üü“NWLÏ*sTІøÜ1ÇÒ«DP‰•Ï~w|²ÁXGÞñà‘EøQ„;¨]AîÄ©DY„ÑVŸ¥„YcÅeWV˜5–S\GùmÓF¨~º©ÞÏêÍj¬œÂ中¬Âô'æÈb:çÄ–ÔRçz«”꟢>j±¿>®ké…~¾jã‰Ë»±¨§ôºžŸ¡:ïÌBz¹L³kÒé4Ô(QÔˆVUiJÓœzèm ·-€k[mt§Ìób« zŇ¡ÈÄõ·\ø1³<"‡íÿÒÈ[ʾý»1zß+ø[Š_l¯qÝÚzn†l%¨€³ßkÊõ1á¬'C®©Å ˜! ,[9;‘È”2’QL‚á¹½–]gFýúM'p3xìA mÈÁ*‚!†xÜ~€ƒ‘bx‡3¬ Tˆ@pà±åÐ58Ûj®DCÛ̆f›ÀÂñ‰ÁT£nwÂÛÞ"¥ºWÝ*Q©;‰L8â8=í„*flJGƒÆÑ¤Q.„ë‰ßภ4Þ…ps¬Š[òXƦŽeÉÕøF>]0q,äßàÈ7µ¤E1| oÒFÃ)’„¹ã1”ÄX²–l¤P>ùH ¦ÈÿFýth~s¦ŒUˆW¦Ý&÷îNa(Ç®ÀMmsñÆJ•eN€Va ±öfÖÀoŲõlBˆB´p1ôkaèDˆ¿Ø±PfKä¯U¨˜²†…ƒ¶Àðê•XÁ+Và‡q lÁ ¬vËqO‰²-Èìg·}Zˆô$vº[FP‚“¯¦ùÑrªŸdu9ªò.>Ì’qbFKZ¥ŽCñJgäÈ¥G¹è‚Tc_<#e­hÒ1¶ìJÔŸnõ¨dÅ3u¡ '§Ž«4ý”\÷È*«ÎÈ­²pƒûyNìB¸$*vMÙGu5†ë[‡Hà"•ªì¬­ø«xü, 7#ÿšì0«lt£-="z˜…Ö´|±³éXe)Ž À†¸¿IòZ€ú ²Ns61Z4‡±ÔüüJ _|× :Ú%O„ßÛ`TïÏaÕW‚Ü ÙÞLod°ýk:Ñoí<<ºÃ¿\/ü û¯²ú^·ð] ÓÎÛJ’`-¸-ÜMˆa௹ínú=?™J¿Z*/ÿeÿËN ç ÛtÈÁÔø_‚Éü\K't‚0¾UÓ'$jHXÀ}–C …ƒtC ƒDÀ0”ÍtÂ*tAä@'dJ]ÁÈÁ{ G— ‰Í‘ˆÿÙ×ÄÃ'pƒÿ‘TÇDÅFX‘E䉱RžEU*‹–9¡è…ïäÜKXaëèêК) ÊðPÊ Z°0ËYa츙&NY%š^…!á^MЍp!˜…Y\O[ÅÄm™:aåÜ—á!›ÍY¯ÄaLŒFà•<ÀH@1í|\ N5Ûm‡êåt –x˜OrSŽ0Í‘‰v°†Ù,Qs¤e½ž¾xKjÞô˜ŒÌ¢1¬Âo¡Ï7H˜¼CÁ„…Í&\A°šá@lÃ*¨ÆØÀP‰óµÀ´€3Ö‚4êF1lƒ7}…CxÃpWj|ÂÔCtÉ ‚ÿŽÕLÍă˜D˜ï­B¬@ŒG˜Ì^±mÀÁrèš²!BОj4 7lRɨ‰Bˆx˜  TÙ@ä@øÁ{[ M-èè&tÿ‹ÈT@7ÌO7¡Ñe¦ü‘õ+éÑaÀR´:!1Y%ùÑ\d«´"†Ò•’´Z'ÉÒa$¸®QAëV¼Eÿ*•ka ‘RZdÒ´rk[¼k·NkEÙ”uk%Å‘!E×aRÙëÀb ᾊ+¸vÒ'íÉ`•Ž_,-Ì $`¸TÓúTOãyÚmÄÀ#ÐÀ0öiÁ4ˆ€ 't@À{I&ÐÀ%ÄÀhkT‚lAh–ŒC €¬¾¡G0èÁ*md=˜À¨õß3t‚'tCŽà>TAÈÂ4ØÃ!< h€aŸ1TÄé üÀ'ˆ€–(Ü%à èÕ”M<|à À%h^ T”í„Ø!°1PBÙŒCÙÀЃ;èÛ,#ÿÛ¢F úCˆ•°F7Tx1¼ÇψApƒìöeÂPÂh€m`_'€A0˜À4 ë±@p,T€)N@%<ÂPÁ.²ÆTŠÂ¼Ã#pÃÐn1\‚ÌÃPí”3dÝÚH18@àCxÔ*tƒpÂ4|Á±]A'ÐÀH@ ãÒ8ăˆŽ5 ´'P•´Ö!8 ˜À4 I:¤ƒ˜A ¼WuƒH;¼@ÙÄmœŠA+|\u("Ѐ1|æ­Â< þÔâ<«bÒY]šŠð`UnHô*ÎÁÎäì•¡æS æ.c¦a³‹ÚÕÿ[aÎïˆ&]á¥Y2Ž˜±U¯RåŽðä•⫆™¢aægªáêäN¢dqaff÷EPÐB|@ aÂoÕ† ”nÈlFV ¸#H8¼‡ÂhAjÏ4Ã#00œ•ÄC°=ìÁ­Å1Á0Ã*xp:‚:ÐÀH]Óƒˆ £¹Éí\%¸ˆˆ?ìAÑPÈÂ$È‚PO0tƒ,°?\Â'ôLôÂÙAjøƒˆ²wM©ô3”€nÐÐHÁЃ= cpdC\'h…$A-Æ-V+°)C&€AlÃo‰ 7<%\‚ȆfB/` „Çô‚#T‚xÔê\B;<ƒpÙÈЃHòÖ–ÀA L¾Ô'¼€~ËÙ4G&TA/°ÃìÇ*ƒ.,€1èZ*æ%Á !X7LÁ°KKØ*àƒ#ÃìÖ1ä‚#—LÀ°ÿ,7ÈÈŒÃ4xÃ'lÛ*œÁ ¬°Á2.ÍÐÀ7 ÀTGs|‚€Ad8pœ=@A#42•rƒôÂP —ÌÁk¹)D @ÊÔƒ,B6d¸¾ XŒ½m7ðÁ7Áˆù*à À'õp B/xUÖˆ@ ˜–¤Ã+ü hÀX‡Í*TÀ:@Á+duØ49Pµ-n›xÀ˜€Ù§„0ÞyJ RUñqdưíŒkRܽc0™Zª…º¶%µÞÅ×1E³FcÄÅáôØIÆVÐ\ÊEÖ9;±·%¶³eÑ‘]%=û³B»ÿ“ ɰŽfØz`¬R³·+Ñy…Ó¡ÝcŒEbœ¦°ëÉÍQPˆFw\¢n°fÇjGnÁÐ t€7xV<ÌÁ< €'Üâôˆª)è€ê™Í<‚=€Aˤ\Â@ºM<=ø€À·¼G0h€Dƒ-VS1ü4ðA'V/9X œg0Ì4T@;äHÃÂ<À:ÖÌhÁ 8òz0HC/°Â!좄>œU³BèÃ<¨ otÂì‚=tàÛÐCi/¬èÿlÜ='‚˜zkƒ €/\¾y7XÂø@œô8Â>È8Ú"$Ã#xÃ<ý¼‚,ìÃ7ŒÂ€MÀ6xÂ$ðªs<àà ,€{`1@øÂ?Ñ€ `|»ã>bq‡#7˜@ŒVäh¦™Oî&žQdyB–,®x° (yñŒcA–xt飘ÚJ¨À‡LhÁ=ìQƒ0:¹£·Oêó…’x69£ àÁ§ |û¤˜o†à'ËxÂÙ@ ÙˆY¡·;þÈF–Uzá&¢;& '‚ÚáÆ@e‚‘J(ÙòŽ9ÚxdŠ€¯ܲ¡„xœ»cM:1 ›n&(FWZÉ„‚‚M$œòéH#^0bJ¯—ô:馊Ð%©Œ“ÚÍɱ’ÜÅɤ‰pºi1®òÿJÌÜr«êW©ºüíJ¦‚éêª)¤Èb áËê×à§È}©-šn8_‰iúË)‘*Æ‹_†íR¸_‡8ߊi:Xà§®*jcr2 `wk²Æ¤e°J0¹®Ï:k!h¢7Èì»ïæp£ 8’yäŽMŠÀŸvÌÉڈ$J7‰'¢`ÀpŒLˆŒç À€Ã.gœ^¼¹„ø¬Bƒ „˜¦»pÆé‡®'X%"nÙãcXŒš•*ŒùÆð&Øä›ˆ¡g°7a¡8¾Éì3æ`…9~0ne&¸„’~È™€ ð‚q„P˜`ƒpæè§W¾ æŠãppÄx(ÿYe¢a !Òùú9à%ƒV<,ü‡l˜§Û0õ`@á&œ3&à&†©­´O\ç¤%m0°€†VÜYX±Å8H1ðbØcð™À4lñYxcÀAÀÐp#!ø tñhô†p%8Ä/챂b¬Âo®8Ä%€q†M¸ª|о°‡q#Ÿ `‘ƒiÅ£E€ NG8 >Â?èÂüc @#œ8Î21ލAž:N<š@0a¤Ù@7A -˜í<Åðƒ¨0 j¦. ×FÆEœ¼+/Û‹W2³–L=щ½ìXÿ’{-Ã%ˆÄW»*B’z¤‘ðJWº¨áHv±‹'¬¤!9¹Éve^e% ‰GKŽr]ꊗI89Š ò]Õ€å ç•“WÞ2–³\%º–¯Oâ+]Œôä½îxG,’–ñ‚ä//YHdÒ•ÁLf0IHY¾2‘ªÄã é;~Sš ´—¼>BÊŠŒ…ËX $!„N|§¹#Z<ˆ¦ŒÐ-iù†#Œ@° ½ÐB±l5|8"Ñ(M8’·Gôbd8xüPGtá:¹û%¾ñmL`à ‡ªðƒNãkR†,ÚÀ>e|Ⲅätœ`@Á´Q–uúá*ÿ<‡‚,0A&jÝ¡ÐEp‡»L°Àß8¿v†TîpÎq®  G°þaè+rñW#y½‘Æ7¾ð ܽðp|3¸;p`@PiX€€ÁñG  †tèás0NqâÁ¡`lé2܈À!†bt£7lEΰ?e”`쀅;.ƒƒ;ãCÀGXSÇ¥ðÁ¾QŠq5p¢Һá®ÀVÌ¡69 -;Ʊ LYçGÀi¤ä*7Xu-ÍÜQd¢ÓXÅ’²‘ ógGE¨ tÛMð@°Ðw‚ñ‰¼ÂB_ “ÒÁqgÿž¨ç Ì2\$#AC>\I”z=òm9Ì9Y6³˜á–6‰cÖ–ŠM. FËV ‚ óÅÁFIŠÊþb—ù++`á RbrNÁp¬\ ÎØÂêò²;8bPQp]HÌâ˜EeÄ“q‰Rc”é¥( Ž˜Ê8œâOd›Ô™<`ð =ðõ3á Ñ6;Íh¦“CmŽóxÌám¸Â§QD3¥YE7ü°æ5kf@Pœq¼Ó"2¹Ê6/œ@,ØÙ ™ØÄw.ƒ(cœ62޲,ľi£¥Ï}©Uˆ4Õ7™(2;qÌá-X´«>1‡nD¤4‹ÿîF1ÜŠÂM,©Õ¯ñì*6ñ O· ¤P^íªÓN+yªãnç`>-2Z±8ìN¯&p¨)æ ŸèÄe.³#9‰‰¡¥™V7æ`ì-u¢æKöq>± å¨hÓà¨Äí;Xj°Ÿ°HÅt™nÉAp“ïŠqêQ[ç?¯©Í®u÷‰ Ô¢ΉDH 6ó†H[lÊì¨x¬â!õŽwÌ–'`g&ŽsäˆG’°eº+”Ë4æ8sI`Þ‹(ƒ &…w,³‰ýÅÇj±XJÞrâ"¯ .=ñ#\ÒÒbÀlÄ…qOTÜ2—W]éöñ“=¼—’qŒêDr¾Ód›øÅ,F~rÿÚ­Þ—³ôØ\î²eII‹•¦è„g¼“´zj™ÔÞGqJÓ^Cw93ðN Ü`M¯ù=„Gë…º¼‰ "×9ˆ¾3}‡Z€&¥¼šÖDÝЂU¬Wžš)ÆòXÌ|­Ý Í4D¸aa¨åÒ|lw(ýF£ \HJdˆG-γŠ+t¹–SDˆïñÑ´4ÆYÅ ùÚeÛ8IJ›P]ž€xïâhYYúö”iÚ]Œ?XÚ:n»·¦ãLÛfÌ7ô±mS»¦ÝŽï2€(ÿî >áBîëóëAädÑNJÆÁòº,¤‚aÛ|Ã4<ÅSÆoþ Ë ÿ‹ð""º!lENM4¾ãò°oÌëBº!íÖjcý6ajcTÇ3@ê22£ ÀÂe\ºdTf-fÉØBÆr,/fΕì$é˜èæl)šˆI•&é’DI–²© fé\Æ0 çΑ¦p]°i$”© £ –´™ÈéåJé1( ±°™Ê°ªÐæšé eÎ å‰$¨É% ±ï°ÀBI ­ 漩 QI]¬©˜”I‘©ËÉÅÂ0$r&ÊšÁ̃h ¼ƒï2ƒ H-ià‰3,O÷p/B.ôˆT'3ì)uÂâÉ9.­Ò*ðg÷O€ÀÃU`ñkjÿ#ÎÔ‚KjÿÖoGîòZàÔ<®@4Vp3¶(3R'ð6aî v4MjÞl¥©< ¿^ ï:J‡b†dÑ”mZÄQ4$HJögÑŒcæi&‡Û¬6…>E÷òIÕLƒÔLMàJkÿŒc‹Ck1U§8PHÜjÁ:>OQÇñ‚ðP§Ë…±Š!wÑ;ôí$Qg}/÷¾ìÊßèiúnäâñ;úì;ÄO ËáHîä(ÀV®,Ni“¢Î)‹®ažÎí°PîŽé*’Îe´B1¼Žì´òÄdd,&,¨ŽÉÔŽ1’,cÌ'~Ì\NF-[*IFëaÞÿÂcjl->Fê:F`0Z¬œúrÅ$,%ó.¸dvî^ð‘"#ª¬dPËâ ýnrÈ 3Öïül3¹ <6AÕ¶ÄÌP‡øvL2à tÑ?vP5óïálc(AÒû|oÑr[RÈ`[Â,wpž%"Q¨[wÕ;7³µ˜õ;„Påêè“ô% ,ìêŠNççŒ)’êušŠ œziŸ© ·I]V“˜’—D©^ÏЗøðšr©Ì ¯PÅ0–´P7©)‹É ¡Ð’Ɖ”)Hs"`«+e‰ibW© ‘i—p)™:– 1 H=–`ã’V0"Ì`e)Êhž€~ |3‚¦3Á¬žJÑo¾cðZ± UËN±C£3‰Ï\áI3Ä- Çu9‘FYÁŒVhJ‘2¦4b<"®oNÿõülS•VáöSýP#u:•…¼uÔË;{uQ‡Y¯u±<2&•$Uñv—#ù¬µÊYkJ‚(·p}õo}U&MRc’ÔÎSc2vbÇn­¶ïZ1ûnS¹5\9ò Ug+2\ŒH_n•hÆMo¬ÉcÃÉNûèètL-‰l)àŽ4F*6lfÂ2+øÆ.Æa¾KÈŽ¬ÄÖn(ðTxÉ®-¡t/ŸÅàtJ?ì|—Ô{óÔa81eÞî-=FLãôÆà\¢¦¬(á2®D&hÞ1vRÏj¯jM±X036Õ*“fðJ4Ré–ÔˆfŽP‘3vÿÐï&oE4"ñVQI£oZ—u!×;ÔÕZcw[÷…K×;k÷s5Sß5X—$×;‹ßo½CüXCA—p÷Qº°õ]µñˆWq™Ø‰ —ðÒBkWWMcjû&wZu3§Ø‡}•Y#2Œ8šþëFŒåÌ…,/©Q©•zv(îè—Œ”zw/2-ÉŽè 3M'&/ë´åì·yËî0ý"êÄ®éüX™Ž0ÑfÜBdêè|î{î,ELÃò¸íÎŽJ­ëZ&’+¬*—b+ 'ö€b@3Іhzø'3cðüï¨6‹õ¶D1c¿ìËÔ¶Ss³õïJ‹+ÿOEs4*Õ˜F3ýŽƒ×ÖEŠ3Ä5iFncy\_µod7p?W†­¸rc2vÙVݵ‹;7"N˜Qϱ;bǽlѶ9 ¸ˆ=U–{ÜM&å^yupÝUWa5Š÷oxŠáùü<9#3¢†]Ǹ Á˜ [‹)p—ŽrT’¸‚0$Yb¶ŽëÜÒ_ÚBd)+â ¿‰ %ÉGëPg×O·I’$–ãåæ¼) !v56 eú]ê_€:céšØ–8ö Ѥyô&zík)¦ï©sv¡)æRú¥ÁÐ¥mi¥ Œc)1§aÚ¥‘°_¬A^Ô g(A޵3’ÿ†‹OQ3œ#"³™‹éIY_™¡ay(A53‹ƒ‹‘f£Ö36‹¦tÞzðh²l3Z€ž${3L±ö'OךqùlR]_u&MWuP±[Ú#Wpc¸s=2‚|mUÓ+‰xuÏ/ƒ×#몮*×øºZs˜ZýÙˆ;÷‹}؆/·ËàvDvð)²!W[µ¯ˆA÷Ÿã±4ºbј/H¶N?9È„®J4“i”ùÅ {=zí’Tc°Ô. ìÎÛë˜N.úÄØ»y¥.ì¦r.’Ð^£ÉìÒúÈ.Û´|Æ0cÔ·£ïU|ã‘;º+Ø%–€º’tÂîªá ^ÿ×U˜á1vTS%;Uƒ47Õ®c'73Ô—û:žÛÙT[½ nó3Uú°‡†¡ø!W ž×ö¡ û‹†ˆµï,÷$EÛpµÑž–܉·tÅ@‹‡r{J¬µQq²¶aC+oˆ©u¤q±äQqûY= 7t‡Z­œ 7º-tˆ3»8UÇáV¹I2"—¸‰ïy†›é[’²Át¤q^œúc×Å1¼éM·×`ԷæΠñ{ CL.|/ìììUx·0õÒÂÊ”JT.Ï7I+ÝÁÄÒI,I3yÒÕØIÿÅðTGíû¾‘z÷XJ¢1‰Vž L’ˆGÕ—µÿ³PSQϽƒ®iUËð•õ¹ç‰°Ç¤1ƒHf…_P®yÙ²'S±×Ö9@øƒSw±õÖn›}ä¦í'{xp˜uK¸œ2v{™ÏÕ¼Š1—­;pˆÛ$˜®]åÛ‰x¡P*ÊSÛ"Ï¼Š¸µ[qUÇá÷Vy»]%ÞB[urTMh 8‚Ò·ÅmŒ)Z±{^Y®›¹HG9Ò•4ÉÐå-ɧQb+VæG–œ®é ™8 çgŽæ;é¥Û˜æÙ0Ž©Rœ„é” É¤iŽ›qœz^e…Ú±Z™n¶–•|‰`¡aYÖ”bö™¤é–p~O3¶fÿ°§­0޾%`Þ‘\ÿl]y4m–AUkÁ삯ÝïpüS§YuÜéIÙ)SYæ•1¸È¿lšKqš[WÈ?›·,–³vñRñéÜÈ×–Î[›Hܽrù1Ünõ L²‡?£{œWáõ½‡eÙÝm˜°]õ‚ó䇛#ëÊ:œµÍùßß=uºŒŠ#ž$‰;Œ£ø æY³ë>ðXü¯ÓöE‡yP*&»9‚ÀÆ’dÓ´,—ôJϨÙ)p=Åèw_R=¾ƒ·çô”Y¾‘10‡÷+; ¾—îê8É.z~Ý—û‚Zµ2Ë ,ca5j.'(S6!ܪp;ö©³pâćÛàó°a¡›ÿ2õ›Ør1ÁwÕ2šõéÔMˆ;æÌxtÝÆ­W5¶í˜vë 8÷6œñn×À‹¯ü1ã«›î ½‹“LâMÄ9N<³Ï´‚B ^à=2œXpaƒ…´²,Ó@`wjïYV[f°=|îËè÷ÿPD-G#ÿ4’Bš'àC¤Ðy%aGJx^JaÄ!ƒM´H`€'=¨ Fš(`]¨ C/†Xa‰½(¡ˆ&ˆ`–È"Jò(#Žú—ÐéÇRËTóÁw´™UCfÕUCµÏ•W=eOt)åå8_Î%¦–áÓ^˜ME”ZbVÅSUE½EN?u%ÔUÜ‘Sbrå$Wd9õåW¡³ÁM¶)Æ™nËÑœpÖÌb–N–Ynáóן‰}ªéM·…cfP{:\…1V)¥ˆãék¶a—ÛoµäFipÄ5ö¯Â »Ù°½R4¨ek½¥›kʵÿfì¯bMxãe›ß@,¥×bŒ"íX‘Šäd’ƒ}û“±ëBíU½µoOÒ›QwôægГú´o»òõ{ïÁðÌï »‹ä¿Ç7ñÁô½ÛR¿êɛ߽ñ^|ñÂ"ûÛ^ÈÝ Ü°Àû \ï¼ï±Œ1’2Ÿ\_¼„o5Óì1€ Ã{_FíÌ| »ìž|Jó´ƒHÐ2aвLÖ„q…m¬ Š“^X¦Ó¨o5•—uÍÚN›%*–NñŒÓ×ñÖT_ʧUÁl9Ô&U±¹A0: ŽYX@-‹èYXéÉ%S@m2÷”GÑùÁ4¦ÔÜf¶X_wLÿ@+†ƒd£¾FUØŒ½ ¤Ã2u¨ÉÚäyì«È>ÁYñ1%Ns'öù&›³IO²º¶µ2w¬¢ £´®^©2·î¦™a½®™2[ûfÜÓ—Ni܇mMe­Ž>:h¡q>ݲ¸Ýzi¬ˆáöXßiK(GzËмónØ™Ä@»O’¡„CL—CäJðG"ŠXAž«G|Ú‘|.^  `‘2’# Bí#8šP‹t@ aèA0ô`mtÂe¨HDÉF&²†P ` C|âC0,O*Be€Ç˜ÈÁØÀ&¦Œx%€#ƒB3:žÿLEñF1´ éŽ*†±\àÒ7n˜ƒ2jÑ'LEt‚c“2¾èn”qµpÃZª¸ ÈÑEp€Éc6@†+Ä)»£ã1¾ ewfë„ä‚ÉxH²$ƒßp™VqÎ †9@_já7öMÒoÔ¤¦žˆÇ änMÃ:1·Y‚î  :ŒO¦Ìp8Áoµx[1æ0ÉÃ䤬ÁLnJ ”NpñÅ(F':q‡ ô38è„aFW ŸˆÁœ¨E:÷&Ú¤31ëd§rÖ© Ü ¿,g'4snp㟇I'ÄP sžoÝè72ù¹ |¢¡£É¤>yÃ|.Ëÿ0h(bĉ 8Hg'BV†|dK<¼àÖF@òࡌIò w6²!Š„ƒ?B—O{:Ád¨ZQO8.}ð…à2EÀuÔô5¦IMàG„Jä¾tA!Ò/5]j* RƒúÚp\—Q¯ÊCŸ °!ï! L^BjH 0iKM^"Ó'¿|.Ý‚jqíµóF:Q3"x1=AÌÜQ„9œmtkÀ&ŽZÈÁNŠ)­Xo¶…ƒ7¬ÇF'¬`¤\1\; F±f«`…Ì(–bd£pXÖW’|,“—-†ðá1 ìÿ¨Ç8´È“x´¡@`T&ÃQ>8`tlÜ Q€ÑXñŸhƒ*°Äø9(Ý<'0 DlApW‰Ç øÐ}ÞŽ:Q¸„ŒU4Ã6x\Ó?4°…3†ŠÉÐ@˜wLЀ'cpp âŸÙô†„*&¦m ¶‘OĘXˆ6q„è¡ à§À†iàf@À7¢ðÏ©àߞǘ'òƒˆÁÈÜa‡ÂFwÆ|Á—è¦b& €CLAUlDhq?–r‹cÿªF âBRÈBâÈ|ŒÆ¯—Ü4ÐAô_À-Óš‰,>óÿÿŒhá§Î’~t¡ûÅ0üŒ¬hŠ^OŸI–4H{z>¤vOFV! ‘ˆaÈ–´r“â5®5Ÿ‹âºà[¡=^ †¹iåˆC2Âa6¡8 `€U J°tS*Ÿ»b0DøM{Eˆ(ðQÆlÁÒ žõ:qˆKÄàr™ Fª@ƒgƒvŸÐà `‡n(§P Bàp¹Z„£ëXAtRŒ¬¢ — Â#ÆÁ¹b#— Ç%ÂÎnÞ¤ ÿKP’g0IwÐx‰`ðÐ ˜¸…v UÀ«ñàà p†8ðvfðv0• C Ìp" SÜð f€/y9>èkP öLœãžð})¶ ã0ÆàžYÆß°I0lÀ€(p¨`µrð ’  ¦°ÕY  ”zV[ º€ö£¶ pC0Të†w€Pð–Ð ·³ Ü +Ð 1P˜ÄE½` 4ð{ sÐÝ@|Ð yÚã—À ô0‹a >  ]P <Û ì MÚ‡‡@ Øx‰ÁP•p-@+KÀ ”c«%@ q q@L-0Å öð(Ð¸ÚØ _87›0¬Ðöp‡„Ý@ ðp0¨«ðÿÆðô ´2:ñ€þÐ ²0Ôi|É?p Ý€I™à—àÀ˜ú›Þp¥GÐLaCÁžÐŸ`FAûóð ~P-ðlWÉRà!Tþª¬Ð–x#ùkt…—8ä#:DAûƒ@õWT‚ T¨˜ÔTˆéUsU€²B;”°Dr—|Å#4‚0ÄiU#Ò!ÀŠÄ@z‰A*‘‚7bÅ è%2/šl3 O’DŸÙ({ñ¡U'¥Åà Í ¦°hzM`ëÀ:§EÁð¿ð ’¤«°œî ˆ8pˆß` Џ ûÐLÇ”Ÿ ¬p€‰«p´¬à ÿ­ rò £un87«À¬ ¯p9ÌwÞ íÀ `q9¯p^G@+ñ0Ý` rÐk wÀ£ 0¶“ úà ð@V{¯ ²` €‘El` k@™û'› “`•À|¶´û †Ëc¼Æ@ P`yÊS ÝpLÛ ¿s0W`ÒPµ™ÐýÌîÙ¸ÒÓÏ|ÛÒƒ™ À „õ' :` Àû<gp¬`FQ gíÐ Å@}«ð gp~ÆÇ&}› *º Ĭ͡tÐ ™@ æ´Ý´•Ð8€‰Ý{ ák9¨Ò ê` 3[¶Q¾ÿb™0Ié“r£s%° ”ð'6Q À“øð‰WÐa° ²°—³ Áùr¦«d‚:³4ÿJ4‰6lUé"NÌSh"eSØ"Qõ€beÆfŒÄÔ«Z\‚8D¼"H˜'¢V—ù‚E%Ø}]‚>õÒ‚hiÃ/(V¨T ò@ˆT8°ãbãÐa[²«&>q¡´ ¬ÙKÁpl0ðPk ™pÓ² EY³s€¯€Ó’Ô ¯YÔ%×\ ~@ ¬ª ]+`+N`Ý`­€ÁŸsàr snø~p² ™;:mÐÏ€@bÿ¢ã1°E0ÓwưzY‚ÇÅ` ½M¡©a@ ÉPÁPÆ0Uð ˜huC ø Ý`µw€øð ¿ ÚT w0 $î¥íÄPõŒP+Vk Æ ­ð¥3+õ¡Ñ ¯P‡ À²%`s ­@PÓ°T`žM)î®°TÁŒá4PPÁ4pPf{ *«³,pS U€¯@ «°+8à„ð%` W0b@Ý `À œ` ¬J<@` =à1ÇJŸð¾ÀòxŸ³| (â s°°4àÆ'½9°ÿpp bð›rf`”Ð Úx°I ã‚«.Ì1h"S,Ù‹‰B +Cž&S†¶ójùâ.ÍÆ3õzlöªj#c3“6i·Æ•‚–¯¢jËíCÓlÔžk­Vktæ¯ÛíØŠhèú혶iÇ&–½6°°†i$í„æ•¢–Ÿ6ïÔ¾ë˶íýj3Øúî]ÙgÍ6lDÜSmZ’'ŽXž±’ ‡ Ñ€Ú„IÝ ~0¶ÍB€ U È€1 ðÙð(-cêY¶à —€JÉ2îpk0>¹7Á¾Ð _@Åp™xø°E?:À ²`ÿUPÚ ŸðP BÐw›pTÏG]¹Cy†Qð &à Ð8§Á ­\-U€¹ð©H«ÐÐ ” OÊó Qçd·R %iá™>›ð|à —P)«Ð ôðjPµÁ ”ð¶*-à ºp ö:Ú8T@ä 6~àð þ9ÅP€°tUËÁ°­à,Pa € X®~Îá ‡@_sí$¾óÐ èyF«ß`@+q¼¹Ñ2 t| 4°üôtWÐ äðŸÀ>á€ßp®pcP!‡Ð 1Kçî``šµÒÁ 'ç†ÿ8 ½—@áï΄`Å‚ÝÃÞZ4(S­LPh@ÀËZ¾2´$V£±ŒH'N”1"µ”*]žü81äK”+%²,C &Ë–8mʬÖòäO¡.AÍùÑgĘ?q¶Ly³iO¨5_U´&Î¥M­6åZ4ªKžY}ŽuZôéÔH¦|z¥Û´0¿bµš“&JŸOíM¸j5Z9E.‹¸¬Ú²e2­ ·iB¸áÂM®<áÎå ‹w§Ö#GŽDM›°)Þ'0ß4|Z%gB-cU<`º³iÃm(ÄØsgÄ N´hY1'Øgeñ¾AnÙ {(}»$怘`ÿµjÍ#ýó¦Mˆ< RF<ýbPÚì¼é,X¢&(ÿ©‹†-ápDç“tðf`& g•.$pã“pâ9c“L.‘ “Z¨eŽˆqç“å†ëD Dâ‰'œ;ZÀáVà¦3e‚éÄvâ9€ Ïî8à‹#jQïŽUºq7Q&]Ùf j!qŽz¬˜ã“ Ò f•6^éæü– ¦€x4KO™n‚)b&›ãŽ=ÜÉD¹ ¦ §˜qð)¦˜ V‰gœO¸â²åì&“=Š‘Ž8ùºéÄÅÔ‚éæ“3Õ;€›b:)&½ pˆGŒ º™Ì³»Ùc‚x Z®PÓ¼,ž(õìÿäŽïø¤ØÂ™c¸`¸i°˜û”9Tnâñ¬˜¡ªÅš‹2²hØøZi$Щ0Â&‚ÖYg§5I¨’ûë#¥®¢)&¨ðšŠ'@ ×,p»ý °¼†bêݫ΅\­†õ«Y¬¼m—Y¯ìB+`¾ÄUÖßÑŒ^·t²7«Ÿ®Â &¤¾jvݱ‚’v&¢&¢åÜÅ ý€€; ò̳‹|Ñ2Ï,£Ì² *8σiဠü²³q((´p”(BµœL³‚Ltyƒ *ñ³û8#R²‘W™¬HË^%åbxíéË6!tƒ È“ìÆŸÜd°7+4ÎMRÙ¿ Vˆ¸;:¡ÿ[lÇz;%ãt2š¡f{“ˆ«e“B‰û¬˜ZêV¦…9máš7ˆlø¼®å²áÒka“3*ŸCÎ2ïÈáB£è·CDz )«•È[ÜDe*%‘2âÜ8õš#.ºíÕÄ9„¯²–9#(78Û ´…ßÚGã}ÎGÍDE>ù‡³ª¢c5%«Â’"x/¯î6.ªæ‰c‰Ö‡[h§]ì~èeIIø?þå `DÖ§˜2(¦ ”Df2A ŠdÑ+ø¿Ž`L Ù I®U’ ÐÙb H’f„I  8‘¾PZ Œ ©e?lÕ°ÿ€!Ç8¸Á JD…þëߥµBFІ“JI€rÅ,"O¸Â«Lt‡ê)cJ˜iY ‚á;¸ÁrE£¡4s¶‘M#Ë©Rå8s 1C7Å8Ù}6À Ë 'k¨”Ò6@æ ?[,šÒj±¤¹ÕM:b Mg:±‰`xq3¢Î’ð´ ” FÃá"‘Òã7¿á`‚ìÞÓÜ€;FEï@ G7¾46±…#f† ?#3ER8”ä[‰Æ˜ÆÙhf b[$æ 3K§Ù©;‹$•ÐÆ6>cŽ1N«ûĘFf¢|BTµ`^¡ˆ„Ç`t²œRºÕH4·KÕ¢°)§«pŒ+œ±3ÿ*ÓDU²±MÆ‘áè£î€šÎàÌUgÈÖ&PË G3˜Ãcg˜´¾ˆ˜#¼HÖÀê×AjÜÐaú¢—¼‚r®~$c ýÖ»6R±ø+_{ÑWM.&0‹Q¬b#×W–ò0•ÄE]dA‹Màw/¢út¦ñÒʾε–²å^Û©·®¾ˆkª-R›Ê”JìªJ!ÌQ¤E“D…lX -äñ„De—Dšz¢ç» ySc‘BS¢“}FhshÚ%]õ3Æq1s\¥gŠw£’Ýu|]ÊøŠÇBmŒ«€ ‚ ªÒDºZ…®îÓ™3Ô©)rë*˜$ÏŠj):Sÿw¼7Ï Ø¨UHQœâÑ à ›ÃùÌg?±™Éð¨N¡ÅψÚû$§-݈sÚ œáKÐ5&|(Õ ÔéºÄ™náZª…Wh²9Z0P«"C9@¸ä¼19¸#~»C7ü 3T` >Zø!o(`k«8>:q…ÈlŸÈ@¶æ ü¬GC&üƒ³ ‰GŠÀ§+Þ!´áuÕȶ9Ü=QíWXExËiÒ2äÃX5–»îò”æp£Dd!Tª ¯±ø%§B‰IWtÁ¬‹É6…ËÄêÕ>öÕKYæúXó—°LÉS®2P¬Üd#¬§`mËÆ°ÿ °À°«Í-ÅŠ\ÂŒUweY*QJÇNÒ±°6`Ô˜A"®]¤…Fr^´ÒXF7`j6«ؾT¥xÔB–¢¢Údì(Ü„cäMÕÂÁ '|:UÝ©’ƒ•¦¸qi'šBÌYÚ$JÓ¸mtOë£ÝtbÛ˜ÆÖ"Þ8àÃxDV±4D#jèŒÓ"p‡JarPF'àÐ 9´¡_¬E¶A aÙ˜r@'æÁ PRÛû}D®çLÁhÂÈ:Q„&A ÞàQ &P‰ˆ!j¸¬‚pD ˜F4š€ƒ"tanŸhC X±‚8`¢ÊøDh°†ÿ |ƒºR·šÐ(x£;Æp :…)T ~¨Â!ºÁ 08@8Ò AâQrÀÁG`†- !¤H ä4Ö`€gx£Ó¨‚ oA;Ýäá Ymh‡#^Ñ5T ´<—† DÐLcˆ†2Z±€-œa¯Ð+²¡à`ÛøFÄ 0ä ™˜À æÁ.L¡ [ƒ—E3’c.u\[%rW7†Aõt†ú`ýÂÚÑÄœ°¬ÉÃÊ¿’²ž£t¢µªuÁ  &‰>\_ð}LB jÌ‚öË ­U˜"Ò>ö®VôQßÁKŸ„Ô‚¾þ¢Õ{jÿ£~íOýêþY;äèÍïý ¦¾ZAbMÊŠÔ¬ü¹cÔx‚1îÞW#­–‹Žœ!o ‡Î ˆA„/ˆ‚3¸Œ"™=Ø‚98œT*V˜ u:€C¨„“)’ Ø*8 8ˆÏÙ†#ˆBq‡ˆx0?ØŒ<)†~è*è„u2†)è„Hfš ЃØLÈeXfðVX‚VÀ³›[€L`…aÀ"œ†y#¨‚LXŽ À9Q8ˉ1ˆà„‡ †€H†#À“ؘ‚=0…G¨‡G@Jà-8±`ЃJx„.À{è"ì‚&Pƒ5(ÿ<<‘†V0nø‚5x„Bd>à @LX…U8H†Nh‚ˆ.e¸8˜N9À#`oàƒ8P€ˆ¬8`…nx„áZ…mÀ†Vƒ! o €"`vp‡KàLxŒ;؆vØ5ˆ.9Ø[` 0O0cðè9€PEw¨>ÐÂ.؃L(†+ ‡>ø0ƒM¤FGà€CPò’ƒ5Pƒgo€•`5ð†OÀ£³“m@Dðƒ8†Ox…`Ð1 †b8¹qÀÅo`"€9؇Ñ<Œâ¯°  £P2vñ‹’Ü©ÀXÉ­ˆ «ú²¤J³:Cÿ³1« “É3#Š'{³6³²"c ‡‘ vÊ•4+!‹2›šª™Jˆ™IJÁÈž”Ê/¤˜¨R–£3Ä€–Yè˜eàË «IËÀ¡Œ•qœûŒî ŽØˆ°“p¨€È—¹žKhƒÿøç8Õž7ƒ(¨µT1ø‚nhbpƒ?h>ø‚lø¬q(ˆp“`LX(€bƒAÆ<)c†MnØD˜ l†ÁŒÇN0 @(˜ŒQá-Ȇ*ø‚Aû‘d؃h€9¨¤K?èè„L˜'1ƒ=èYxÿH<9‚¨…aëš1¹.èn¨ð†hÁ3¨Vèf¨º‰‡Nø‚ À*H‘Lún°„)•M¡3Ð €!€°l€@3¸‚9hYHBà†LS „=À†*ˆ݃(ð†n8b°®x`*ˆ8„%ØÄxhKX…lhƒXø9`ï”…gx6èÌ҃״.â¢lhwð!è½dìЃèmÌWƒ3˜‚Uf¤(Џ1dIf³añ=Ä!bÿ ÚŠùË–¬øt!2A媉É)ª¡\3yÙ˜nù¼:ã*‰ÙIžB3H…TL½T~ÑÔ”ºÉ4 „=Ou³„‰©Q•)V©y¹Uƒ˜–¼I±BßË B ÅyƒDHW3SWšÜaÜ©«qˆMHž;9ÈÀ¥IxÐá!.o(DHLÐhƒ.ðéH ƒ’–áðb8@ËXpyã«q°‚/€Y21h1@ h†mà¢U(=ø•e;‚lØPr=¥3«k‚dè®U€Ì À‡•Ù„o(‚m`8 ‘O€‡Nh…nĔɼ«ûÿ‚Vá¢n3H†.8Cm‚GØi†3 ›NЀê”HÛô‘G@H S@ʆ“»ƒu.ê>€iè‚‹‡‘C!øoÀ ¹cÀ,L˜X|€‡O%ˆbC„J¨bÐÆy„mX>iØÄ.È€NðƒL0…UÈNƒÀ„opøF;x„C¸=h†èº=ˆ…X]¨„x€MH‡† •~À‡\ø…G˜ºK+h0 „_PƒV ›5L‚o0†8(p#5؆m )?ˆv|€‚*bà (#ø’#è-˜†¸ƒØD™úÈ+ &‹ÿ3/SJ¢ªU®0 R=iá½æ3!z &Ê–ë «Cý>#’ßC…¡Õ+!$"ßDò= ª_üi¢÷e!ãÛ!lY"ùU¢ýE¾‘¤=!j`úí±J õ½Œ9¡ëƒ Ú!¾= :¾ä«ßöË`’ ‘ Š÷é˜@+–‡e͈òŒ"ÑÎ $Ùœ,ªäqÐ ‚ ‡Î!ˆ`P Ó´x(€/øÖY.Q@„#øÜÚi0€iبŒîPÚôp7Ø'X-(€5úƒ9`LÅÓ@"MðÜZŽ ×´œxè‚NT¼t ‡ªs8Ð…ŧ3?¼Õ8ÿ€¡‹€.` зV0fÈ{ø 0ÍNx„yrn‚UH†Èû8øÀ(,9 8X…K!€›£nƒdàŽ_‘G¹„iàŽbhƒ-˜K¨€€ V°810p¶pP>è„@bnø"Ø-x“bÐ(‚- 3Ý‚g†  ‚)È ; `0°J8…*…K°Yø‚eGè€Cp„Và®D€‚œ‹yî‚x@Y€‚.€-˜ hYx„>pÂ+GØPƒÒ¸„3`GƒøL¨‚O¨²£ihƒ(n(øJ`ÿ‡ÐW9 ЃNƒ#°Q9æn€Øá"?=ŸŒB²%*`) …Yt¿±ÚŸ™ì*´èН’)¤¼T0»)úùÔ¼)ªâ)Ï *ŸÊªUÕS=‹«k…yIª2+™’R——\ÊG-ëÐs ¥ê—[›Êjœ‚kðmԮĖú[>– y‚71Ùµg•©G•HºC ÈÐp(oø]šÒ‘(V/ê=A/š€ >Àu-°¹g  '`š;‡60€.èÉiNØðƒCÐÕð”èºÛcp‚àƒ.ØBØc€ƒ-¨õøÿ„(˜€9°‡pµb ‚ xÏ„Œn`èEÙAÚ„-˜8È ©’ZX1à„f˜Ú Èi†;Ø‚åð-`…WJ íUÈ.pcâp,Ø‚ ”.0mh<òƒ0Í † )8‚xØ‚6(q>à°6ðƒQ<‚˜?Ø†ÝØ€ À‚˜€5ðGåðìc €rªðGipÁý i` 8‚m°®nøvi€w˜8Þ;Xƒ,‡`ذQq¹èš†&X‚;¨€3ßDP€x˜†Èîáˆ8¨…öò"]‰iroÚoXƒ7)ñå †mÀÿœ.‡É‹À±ôIJÁP Sàöõ±§J—*+‹6“³³x3»³Ü²—º˜&»k(sT[}‹++—¦„I§¢Ÿ¶n—'‹ÉÀ.Ê÷éÕ¢tOO²¦„JŸÜë;c²}©)"«õ–¸ ³è1?+ ˜jøcȪ+С ¶ÁÊÀ£ ‰‡šƒ PÇ1)`£EÚ8!ÂTݸ hÚ áxƒpЛÈjµÃéÎIqœ3 JJ€ Q9ˆÙ„Z˜eHBQ `É̱á(‚Ì1-<ЇF˧OpøX’’ ݰ¦êâ6Õè-•Ð$‚ƒ‘¹ÿ”M˜¤/¹#°ÑB1@¡¤Ì&òø“ØY§Æ9[z<ÖBÜîÀ¡!Žáp‚ȸq[ÊQÙËá*ˆì®[oº®ÁÉЕCf@QI›4Ù ])‚qÈ¢:ªWÐpywRšU /¥)¨Ê â пe+Ñ@(ÞXrªÁÊ! ‡ÌSôÍ Ô‘@¢·®Tš0ª©"=t©F¿§Nêâó³ü÷S>ø3ÔÝÛ>þ)ÔÌw"öÛ>j Ò|ûé¼â–Õ/)ò¨ôk=×w¿èû±Äø Ôýù›¿R=`µýÊÖÕS¿§¶àö-`à‹}ðÃ`þ¥}Î_¾çƒ=Ú ¥¶Š²‚–Ž)ÿ y …+@‡ÐÚv‡ø"Ê€Ve $‚pƒÃª g-†Ãa=R ʼnì?ùáË@™S*±Vç€/\ 7ŶHoÜ„?Á渉×"\¸`6Tœ°aÅpnøHq`<Žñ$ÞÙ4a\‹;-â‘‘˜Pa¸;WÝoÂɉ%;ªœø±˜²pE'(+6УÈp”!-Ì覟á8ÚIÑ$G2Y;îTJÑæÀ„¯ÞaØ‚aGŠ‹Üp'É„›6 Üt°æÀ;6Ç- ÷g'Ì?ÅÖ*=<Žââqs‚µ¸nœÒ9“N¨Úâp¦‰6'ÜÙÙv"Å;æÜ”ihϱÿù©…åb‹,SVµ2 ¬€š|eh•IN­7­åÈwëæ\·òÞÔ—[ï]my™É­wçÎüöìÔª—áN}ú÷öìµ·'Ÿ=>zøåu«¿žú}ûùå¯×_€ßÍ—žvÿ7vÿ±·^ƒ½‰¡}î±'^…ÕX7ª‡áwù¡×áƒò§…Ó©á€+XàŠ"^è¡v3Ђ„>WDÆT83ÕL-¡Œ2 ÙôYVMUTQ5Õ‘2ñõFKRDe8d1“?° `kuÑ CÆŒÃÒ'aÔšN8å”X´g´€Q‘5‘eÓaM(AEÿ( 2¹tVG/5õk¬©$’HG1U©£¬u$i[G=Î^m ÚÖW¢¢F£¨ùÚD™LÖ*K‘¶X¢k‘¹TS®–*G,´A.%Äê­LZ)c»úÚX«Ë26Y LFY8 ‚‚FpÃYë }÷qè]5ËDÇ\tã·ßqïQ¸]|j7ŸºN~óªkî{çÙ«[½éÆ‹î¼ë¶ˆ/¾ñ¬m‚cX0·.,/ºk½o[".îëp½íb·a½ ~è1~ k¬oƒ'ØbrÈáÇÛyÞ‚ûmo |[.o´|@‹ýñ:2,aþš#C Ú0‡äbY;8À†p†äaþ$HÄù‰k7Ü †pØ B‘dÒÑV»â…!íÜOÕÀ*NÂ72`Ä(BÒœpb5¬ 'JSáü¢F«-írIcé7œÀ%OSƒÕ: <r†ó0ÈBÊXC!ZÑ ÈÂ…Æ*ìNÀa²ØF'hP ÞYmwÒÛÝÚ„!ýîwBZeîʸ»W¢–«”¥±fµæ=Šw¶ hÎJ¨À±y9Y›ÒÖF¼PÞò•Èfó²¶Íׇª]DáŠ>˜Õ`ªâxOQ©F&ƒ…~ÚQöJÈdî=YvÉ¢ªhBùI‰úe_wõ«c$š¯‹ú;Ò•*È?ë3p|Ë‹y™@ìkðC)Ì"÷qÇJ”Ñ„jÖTy@À ú˜ ªô‘0šÅk[ËÈHH3šµ2‚”PBդР#Ø Ü H!Ž€Gº±ŠÿxìÐ0…,z0^À#fð†,† ‹l<Ás(†;.±‡xt"J‘ã’€Æ$Ö”Øk0Èh,U¥|r™ºTkZB,©SnÆT®@Õš€ªQ|VT¦œt‘D )WQÒK÷#‰ôZ°s¬îÌV…°ÄÅ^ ÕZôr•¦Øy/£2Šî8µ¨O1E%žrÕPjâ⥨š—¸'ùÌ—D«4¦ÊhÉöB!ΰ‚5Ô _¶²í¸,ƒåRâ í·ÁpyPº4óàþ’-.&‘eý¤öýÆìh+»Ýñ'5´ DfÓPáY7Ìž-î~²ÛÛHä¸Êîúó†ázá5Øl§ÿ;.4÷¸¥;¿";áåVx chS‚›7H…O¹ЀÜB øàR02ÏDY‚1ÉecÜ9P*ÿÑ•4½ÈlB¬¸‚ØáwhàUàÇIºW°Àêp>PjDà¯ÈÅ%zðƒ9„ÿ˜t7ôPŒ ¬eÒszÉ– ‚£IOZK;ÙÃögí`—ê¤qãÅéY)qCÌB†bA$eúHšÆ1i–€}Ò1{Øå>ß}ì‚‘{<ÀN2°$Mf ¼L(£™¸Z¯z‰L wHˤò­’4A“°'ËSÏÊR–ÿ`>^Kü³?iÁle"ÿ›8Íã?"¯|P[ÆyN›½ x§à‰Ë¢8àøÞw¦¦0Ä.Ü ü øBFWG¥O¢ŠjèúÐwX‡îû}…¢Hú5)Lï›Qåwù2:Ñøéƒñ”þéE—LN0òpy½—]Œÿìsp-ÐBÌè>XA%`–ˆ+V×>}‡ËLØéˆøš7Z…P´APw5ñÛ1Ñ‘¼›³! ¸­Ìñÿà ¡k†f5œ¦nЦjÿFP-6QpöÉfþ¸¦g¦æMP•½æqj˜³ætÖfñý& =çÍ&q§p’‡tŒ‚IÐÁ‡.6UÌÂ,ÐÂ,TÃ$„ÂŒÁ˜˜|šÁ|Êçœ@Ög'è§~îg€î' ”Àtƒ èh€vÃ~îA èè„pì”|À¬Â”À*PC¬…žA"À*À¬è†rh(ì't¨è*Ø(°ðh¦èŽ€ŽÚ(Ž ©öèŽi’*i i 0©Ž€“J)pZé•b)rÁ–ré–j)—@•~é–ÊìÿìÃ>”©š¦©šÊA›¢)p€0Àœ¢Ã€ CŸ.Áœîéžú)èéžê):ÀŸrxâ:* ª¢:ê¤r@4ª¥Nê2jp*£.jl*§rê(ê(dA©¢j쪢ªŒÂ €€À(`­fµŸ>…cnÖ[¸Ô»¤Ôt„Ûg¦Ô0^4êšÿù¢yUM˜,†ŒHI«ýE+0ë1ö”E½IÈDYŸ1ZÌ,¦ˆ7:«µêŸµnk;ŽLÃØ—3ºGõ}ë¼8\µ¶Ëz^‘tð¦¼Ð XܾÒB8Ã1€C> @>@3$”B,Ä)X€Ãÿ†B(8l,,,8ì dl,„BP,Å:lÃnl),‚ÅRlplÉ–Ã"ð)¸¬Ëj,)¼C)”‚¼l,x;ƒËZ@ÉòÍ&ÍmÍÊìúì;xÁ;¼Ã1”B9¼¬Ë–)@m,”C9ƒx ¨תB×v­ÖÚ€ d­ÖšíØŽ­”ƒÙªíÕ^­Ö®­Øn­*DÚFÂ×âmÞê-ÝÒm$DpíÝF‚|m$¤@ ¨Âá‚Ãâ2îâ:88ƒ <îãŽ3TîŒA*àæâ*ŒÁ9 l.ær.éf.¤æ¦nꪮ榮¬næF® Ðníª€ Ü® €Cíÿ® ¤€î¯:ÐîìF®åÆ®ë¢.œéŠî梮ìVnñ†h*Ø® ì[>àÓpX× Küýßsô³I‰H÷àýí»¨¯³vŒ€¥€AØÃ ÷e{¥Ï.*y=Ÿ|Õ_ÿ¶”ʼˆümŸ0ž¯ýÖ¯ûäKëG,z߀€ˆò­1Xx×lÂrD¾–¾jÍÜL5°§ŒÔ@ÔÀ × ¤ð À «p ˜ Ëð C‚ ϰ ã° ›Á «ð,¸pç0 øpŸ°±W $q q¤§·ð71WC qz²'‹p T1gq'q;ñ—p ÿ?q ±Ïß«ñrÌ5¼ñ,Œ±ƒ1‹0E]ÑÅ Ðü•ˆu„0r_ÿ±}p°¯ÉÃw|@yâ_R1²$ÕÂÁñi!/G%ÕÉŒOdŠWP±ÇUE#·ræ!Û±)$w›qz—ÀÅ›Á!Ühž21\r.·ÛÁýÛºÙæ±Ùò°mX¯Òâ²»½L1·r r»½›±±¦1«›³.÷æµM[A Ü»15[PÌh¹Y[-s7:ÔÆ\Qo°g?a‘p¨ó:€³q¸ÜÏ?…wÜ#=î>v‡Ž[{G?ß3=‚°<à£Rá#ý,ÃÎ3oÒó= ôAÛ sÿöó¸Í߆!ÍœE;\ÅÌãD÷qÊG²ÿTòA=ؽ2[xÜŒ ó±1ÊorF7=òG"KÙ´${ËD{° K[y0Ì|g·Ù´LcJïÆs@²·ˆÏöÇðM&xH‡…Å%Ø}Äô°Xy±+¹ZHƒYãP•öIÃø_ö¥ßuåñýÙŸ0‚;N+K!KYðJ©Wy™×`xé5ÀôWÉ€ãý¢ïúåßZϵ íâJ%Uÿò8öc;6t´v€ñÓñ1¸¶‡˱\‡kfg¦9»ãˆtÊ$¶.š·–vµ”9Ã{^ j¿ö¶Ôã‘·…kiÿ/Ã,ÐÌS¶nª±w¨ç9;1¾ògWQ!S‡r—§¸œvs/·‡LQDë‹ ‘K0ß4LÕ#ßt½¢dþ°Ö‹ËH3ºÝr»êÚXCcjKcGcM 3n£z[Ñzá2rßM5+¿$Ì3¢#9ö·Ä䋺Bœ‚T{O«;Ž3 ów¶ž—}ö±9Æ+Y‘sžãz:±e÷Fc[ǃ8À,˜1lß1utv¯¶S¶npö†«qgOödk4mz4O·K9?#uX´}ô8Šû¶R#ÿh¸k£ø»¶Ï8tìtHC‡R϶G·z6HËøls6‡?£q×ñ†oø•ïø“ãviÿŸÿÛb›'R-707drï>µ¶xP…ß®Îv˜›g*§T›foƦ ÕæýÐþ|ç ax¹­_s!·gm*gÑf°Ü*£[ivçAu§ñ‘/p^úpVP23Ѳ9Ÿܧ7稱FÑj":oŽæ¢Ó:þØ[™Ÿyù±‡C¶5ˆ¸ºæõÉŒ²f²ŸEø±û±8²3û®ø²?;³Cû]¶PÕT´W;±;±O{·f;¶ûüª+Ëd2¶€÷¿è†ß²"”º «)Õô¥‹„ß ÉÇäߊx]QöÁ5ºs£·{TE];½Î5°~µ³M¡£·ÿ ºBÔK) PÕw(kTzóKDU»Â‡TÈgRgññú‡£¯K6”¯¹¥óÏŒr^SqŠ&ʯö`Ãò±ùlÎ|ÎsrÌïû’»·Ï+#û‚µ{‹{•[ ¡¼´Z±v~«vS3ÏK› ¸BØB-öRל‡·ˆö¹¦¥Ã›ãF•Ÿ_;£\3|ˆÄ×ûœýöÑu¹Ò/þaf·pÿáâ|o:V8N}6ûšŸKµ×µcLg5}Lõœ»=ß³}³ «#‹Pûøi—ÁÈ—|ÉKvñÅ;µ ;£cçþøZ·w²æÏ¦tûµu0é×êË2ÌŸLuVëkþµ²a›žÿcg­[§Ÿ»òê·cëKº¦+tÃþ(;|kßÛƒ¦ñÏ&ð­ƒG¹—x³ F˜¯{X7ø¼*{gz7ÇüÍ[7_:¿í±ø“ú÷³ò3Ì÷E+sÌØ¾ù+Ûý> ßO%µ­¤’uBCµ¹©[¤ÎAyœI݉\2:üfì›Ä±²5O' ì­8Q‰”¯Ôäèt•«â2•TF¦ôFõoÊèKmïn{Ü—p¾yËŽ7©ô¼)b«øF£ #ʼnz«W…šÇ¼&õ¦ š‚ÔU³‚‘æQFrÏâd’„‰a> ™¢¢“Ø-IiÑ‘69uæ†7jâB·ÁÐH€Ááárh@¯ ±r‰ “v¨˜ÙÐ)‡Ãß¡~t,ÃEæqP\ ;ó(³5gpsb `t³ûé­Iúª’– ð9ßIÙ¥væ¡jÝÌ…O\¢Ãº1¤`1;¡»Pd2£%Òh*; ´¬”5Ž _”´h’.ŸñjhI‰Ê³®ìCÙdGrøíeU²Èެÿ™,² kï² ÕZB%—åt,ìŒwF9-åzEúÞ²BÈ4Yl cÐÀìV0fÙ«-ÛÕ$/”¡1¤š0±Ò¿üWž[º\SE”ˆeÛß ™÷˜p2|b(öp…ݘvµŠçÍí–WA‡Rªx\ŒæLÅÝ(懄e4£™¶¥Uï2%Vp”ãÖŠz&?‘ÊOEÖEêöPúž³ÁîMÊ‹tÂ¥zñ,³«¶.D­jÿ3,!&¨p ¹Ði!x›9I)1ãk¦¦›-¾žKLCk 4¥ùíyÝ$b±m›#„¤L’Ê †é¤c‰é !uÄ_a*…dgÙãvÏ\"Ô"{Eö¸´¦UY]TΚ:Êu;{™K’½©µ`±´„kD»OØi|ÿó‰ÆcžSnÍÂrc¼ü¶ø9Ьäó*+ãL@#‰õ›¼›a¥v5*7Ú]]»ckSè×­W±zÙÁnö²ÿžìd{ð«rª8ÝìÂgþÒ‘_üç‹=ú²úHHþK›0]}_—ú÷¹~4,sùp¿¬Äo~õG(œ7Óñ­…ú°Ńʄ'›œ››ÇklÕçÔ†ŒiÌŸàl•ú ]ªEþ\èõH `zncðš(idÔÄ^¦²¨ùš®ù®Ð Ëo좎 %j¶TèÙhã@”0 Ëð Óï=¸0ìа ˰NþcIÎ*¶àKóTçIM<ðË9¢e–ò¦ØjKæ¬úî¾Vr„¶˜«ïnjG~Š» ¤{h¯ÃL‰+omÞCMiGn%Úb«|NiöÞÂýb÷D¯©xãŽÌæˆÔÎô‰L:§¹Új4Rå‹k§²Jµþc–à#ý‚¯úÚ0ýª‚€¶ ½PÝéÊ"É +ñƒ‘û#¡±¯¢®à.àn*¦T‡ð2u(˜ßšD½Ð 5åëN¥|¬wЈoà.xˆÿÌßÔë4\м6D^`…éHÊä1FàÎkˆSLeŰÓêå‘ )Æ<è§eÄ6äõx«ež+MЙjþ²ÌÅ"°bdçÏ«âx¥„± U’Ñp¶¤PêX2%¿ð@²/†bò&…ÑCpr'¿¯Ê@÷TlÍÖ ›@Œdĉ“`ÌõËœ¼þ¨jôd‡™<©Ì¼… +—p`28¬cÇ“^ñnøiÑ*1l:BÐ4ÐWtåNä°µÒF¢k® D7~‹þ®ÓtG·VkØþ*û*õê Çk0¯ÊíønòrëNÎHÏ1ZŒ1'"ñ_’'±®_,ÓÅÏ=œ ÿL í-433¹ONB³4ÏpðO€ª0Yj^ü {„«ï‚=+XÓ¡2HŒBeÂh¾çu„‰ëDß±ñ.ߢÃHT°+bÿ42}F0OÎ…s>kW¶1¿âÃ"ëožàfE0J`0d$.Þþ§UìÒR$ÒQÖ‘¹@‹viÍ7\sâ(ãºÜãUÒ4Óp-ôS4%„¿j2-ü33/‚*³?M³;:×0Ê ¼Æ ŒbѺJM¬’ȯb §R£¨ƒ3æ¸r¥{ÄKPj rÖ–üL§8D¤Bðrˆ.1Ž,ËK(ŒRŪ³B»Qñlm³D'fR#)&\ïÿ*QT‘¶ +Aöèr`ZIIQ/kºÏp]ôl!’QútC¤KyÒW:sa´O"b6`cá`c¢ÖýBÑ´MÁ4BòÝÅn°ìÑ*°(·I,Ar(Æ%“üÏÃòÉή¦niÅ®i )ôZ§h(·SšÚ¯þk"ÀÅçüôŸX‡#PE‚äÇ8C ̹´-™bpwr§VxÊå$&T_"¾tê:3*Óòb>EÃã0gr&hsÎ §XÅïÞ«=oÌN(bãtV D 4M±N9ôSN±BáXò‘Ê 5İ6Ê@3Ó´Z™•ù¾5ËC!Êð[ÁuN©bòhîèÊÜ3ÿUê3•Èæ¦"+s\Ë^ùæ«Þîï¶è]ëÈÕ‚•í8xä3îþâªTΪþBñ&-‘po†bÔ0U%«6ùr7±H+uÎDÒnêƒ*ש\qÌ`ŠðUTùªöNvŠfŽ=Z6/SMÊÌ&y4§Ræ%¿ZŸo@yÖÞ'—•bV3»‚•K骑ZÓtY‡ä\§‚MÙ´MyÖjÑ´%{Lk ælm‡&RÏ€¼í5q%€Ú„ò O¬LnOЗMÀ2­<Ídârî܈NšfÂ8 ”ÀüÑEC&d.Ÿ¸’O=$íØèsnÅ[»ÅHiQã,l¶E§üéõï ¬fÿÇ­Ÿ‰ª8wÄP‘ÆQÒÀ«i›õiY7kÁUuÓu¢4w6N­ÕEdL•LûÂZ¯vbů¥±ÀõuSBjW“Æö€ —&)]ÎiÑ„f$«²(ÃI7¦uTìâ6­’8ŒÍðTÙ)šnô*«DcFò|2z-30JSÌdg"bØ!ã£&ö‹>*éµDgý5‰èPN#HZKïv-·pQðü*hv7?G´ÚnŒ"ƒnÖnÖH+?h.“yvAym·Z-­+nxWWxÑðh¿$¹²nik™õZ· MuÙ´Z©6vïC,,.v°R°ËÿXw§U/L‰Ó6ÏŒÜØr~à ÞЊq–xîSåîVÂBN5ƒ¦\PzËQÃN!˃GŠP\ºÅõ¼ÄeÓ¶±XŠióH åüÂÿH oïmïì–cŠ¥æ¼ÌÃ0bî»uÃUugXx9„cågç’v#¹’w*twÉŽÂw-M…Õ Ñ4ކv‰öixˆè&)Tb>¥‹ ó€tÔ²vÃCýKE£oïkG¨¥:”Ià pìî^ô0ûX;ΨXp)^¯ä°¤N±nPeßä}1«}ðÓÓ°Dh<£ÎÆe*w¥–ȱY |©¦mTM ™NÉÿcÕWœÇ·{©¬ ÿ»îÜD«Æ#ÔÖvCï0Ô,´ÀíËè,ãúJ6‰i : ÌE×Tc{1U,Óí7]UZ£"íRZg.víÿ ‰ËN¬×8tåé+8†›8W)Šœ”ä Ë#3JY¯›‡M8ÿŸ Û½ñYBºbZ+ÙÈY2wZ“{7&-º m˜)ð“ÊÕü²üû¬,Æc<-&,¡÷!jn+~[ÏÁ.ÎÅX}Ó·p÷ +çìJÑE”F7SÉ’µUË ,™t'xïR©¤Ðüʬ\+–Þf¥«+)J‹ˆTÉ‹xc§£ÑHƒ?>Â?„ó<íºÛG$MP óO<­ø­\çªÑ£yûºpÊ­p˱|ÊŸð쌂'ÑÖÝÔ+t·›Â4:A?à ½ Kc«J‹¾n,´—½½$‡Ý¾c¡X¾ðWPù¿þËnǪ_óäN°Hˆ…пР>Ðŵç30êËÍ×-,|ÿáÝ`ä[¸4Ⱦ3 [“*ý¼ñÝÑÖpÅ^©Í†¦óÚžÕÏöß¶+nð*ÞÅúCÙë9`²2ñ½‘ñM”K{-jÒ+pA%*CÙãϯ…³ÑÝÄöà™´Km_‘yÜÎã´#qmV¶FGÒã›å]¶®äŒ ½ðBÝÔ1Ý2±7]ÑÁ΢¥Ç…ãÌmHèӉ檊§É(*°Ëµìòè×(˜h)Š’JM¬,gÏdÁ²$'‰Í䬷¾‰QkBé{ïÕÕux©¤K·<›*““V!D^4×#îY¾§Éý.()éésáÉÞeÚS{®Ñg:Ç^ÚžзþÍ0𥛠ÿ¨ëX8Z"IìYÆ9d8õ 4÷C²ÈÈ)_N¹û‘èØ]‚ÿ…¼8[ n16ÆWªêå[Ee¿§S€XÞµ.Ü6rØSøŸ½xàvƒòrv½ÎïÁ/5ö¾ «\!´¯}Eú©Q²ªß2Ÿž7عõè ²½È¬€Ma÷5~¸£‰µÕ™mèâVsz¬S0ç Ê”¡Vm`Á2Õ6¸°L‚´ FD(!4Ö0j´@ಂV¤UQ`Á„O4ÈR`Æ$EV#9aLš1W–\ImaO›ª,(t%Í’ ž¤Èó Åš"–‰¸Ò)E„JMVÿÔ¹5©Ó¯ZM¬ŠôêU§JVÓ©¶eÅjãjÜHW®ÝºxïêÅ8!ܼ€÷Ê L8îÛ2 Ð€€—b³…# –\Wk5Ê“3cæ3!5³kKú=|¶ê糡SŸÆj5´åÓ(S?½v)k¿Ÿe»®Ö³ÕÙ¼Õª|«ûö×ÜYß"?‹µùa”Ê—þÎ6·Ië¤{SØY4ÒÓkØÛQúXÖ¼û:”è²ýz©Ñ37¾²!ë‰m³³‡Z2üu˜­ÓB3­õ’iß]õCŸ-àTDqg`€ VNì‰Ä`Ô$Õƒv˜!€Š”—f(n&d)¶Ø"` Š5‹5Fãÿ[´¼¨£ŠQô;êˆÕK.ADD q‘‘e|ÄáƒET`T>H ’ÕÀ„–}=É]’PE™MV‚”áDN†4à—P9¥MIjH“›pn(f“fjH š ÔLFþ$Õ›zÕ'žvŠF WÏÍFÚEzSW[*ÈWéy'iC=ÕÔhdi›h¡&©S}ÕÙ7t´ ßPì…š_pÕµFÚq^Ýæ*zW}Ê(hŸn 5Ö ¤dEt¬±(–XŽb³ËfÍ2bUK­`aµÚªZɱ Ö­Ý–e–£®º&§eÙš_‚£é oΩ&.[À67ëj«Æë]BÁ¥7¯ÿÀäªûïIê(Ÿgv ( BØŽ4^Ý秦 H‡½–Uƒ-Têùðz]æÖYš6ln Ñ†¸:j¥„úëòºžR'¹,õ®£ï ¼ñS^¶­¶uIùÙÑLÓeÖŒÐÞX®¯Ó©wÓ—Vc­©¦±m-ÚÕY‡ öØ^W}×í¸R£0 ;ZÛ(Ézj®Ÿ VÐZ‘Û—¶†ðuÂî–ᙞ›koÞ³®+3…ÒMm…+\VÖU^ŒSååV™gwå–þ¾Œ›õëHXvÙÙDe"Z%Ö“~÷œ ©y±–aV*SH!qy È¢ŽàOSry%T'ÕNûÿóbCOvô\—m=õÓß´$ 5µþ,c¼ÜX“Ç) epèK\mì+Å(UDê™þüê×/s{—±ˆ®»äp‡6ùßž8>)°Hj#º7O&° Pþ"¶ 9Aì‚»`ÿ*t5òA¨€;…BT&:ÈaêÙÓ~„%ø0Q…òÒ)BÔÍËpušØ]$eœËåŒVôBŠÚ~¸šÝ H%‘JÚ çŸQ!n9æ–o¶SœÒ0\íB¿ˆ*ÈÅgWZd˜l®C8ö‘qˆ¢ŸíÇÆû)$„ék½ÚHÇxµE}$ÉÀ‡†|4Ê;B”ó®7÷Äovéq!éÿœæ‘oÔO©.÷³ädÇ[çR]á25«]­n´¹£ßlÓ5RFGm˜Z™û¬VÉê‹7”W+ÿÅPúÊ>ƒ Y’ÌÙ¥bTÂZ˜:¹”Uömvòë‘G“˜ êL’SOÔ²Ôž¬ %Cï,g>¯ ;£ºí±x‹¬œØäHDM)à ’äÇL ÑɃÁÛlc§b¤äÕÉCÃ[&"u§KSŵÏìlY™Š»š5„äË›ˆ¤[6$x‡"QL€[3ÎEÒ[¨›c–Ë\¶D)5”llRIROéÓ]†]]Kv®+1Ž].–IrÂʱð»•'¥x•8ÀAVž×}d|ŽR3ùzrSø½¯~íËß¶Ôv>ÿO\Š#%ûÊõ•Q+Pã#(Ìà;øÁ ΄'Lá WØΰ†Œá /¸Ãö°ˆGLâ ƒ¸Ä(N±‰K|â7¸Å/¶0ŒûпÖ3* 5†=;ÐÆN6²‡í48ÛÙƒy¶´§Míj[›.×ζ¶·Íín{/ßæv´«=nhcûÜá–ödÒîr³ûÝðζ»¿­™xÛûÞøÎw¼ç­ï~ûû߸ºwleûàÆ&6*Rh†#|Ù{†2¢ë’kŠçúâ™5¬->q»|ÚÓ_uf*îqŒ›<ä/ŒÉWÎòZ£¼å0¹ÌI-(âO6qœ/Ê¿ À÷"ð¢w{Ý÷&zÐÏ¢w7ýßJ7ºÀ£~tÊHýêX×7Õ³Îõ®{Þr´ØNö™Çh_pÚAQd¶[xím72…‘×þc¸?˜î n»ÝÝÎ÷½ï]ÄzϰßÕNø¾~ð|¿ûá _wÆ+>ñFüßó¾x" ¾òˆ7|„+ÿxÉc~óš»ã#ïøÉ>ô6=åQù ã=îž—û„cŸyã½ÄÍͽîwÏûÞûþ÷À¾ð‡OüâÿøÈO¾ò—Ïüæ;ÿùоô§Oýê[ÿúØÏ¾õ!ù2,úŽÿ¯]C…*Õ)^*ä%N Ã‡#JœH"¯e܈±£F?Š I¤É‘'K¢\©²eÊ—,aºŒIs¦M™8k漩³'ÏŸ;ƒú t¨Ñ¢H‰*=º4)Ó§NgB3”Õ«X±òB•µëUH\½vå…Æ¨k$ÆÈˆ$c¡[4$âÊK·®Ý»xå¢ ´·/ ¾ý,¸pàÄNÌx±cÅG~,¹2åË“3[ÖŒy³çΠ9‹þ<:4éÓ¦S—^šµêÖ°_ËvMÛòT®n‚Å+ïÜw÷þ \¸54g¯MîvRD F¯x-áCë±G$!;Úîà¿‹ÿ÷N>|ùñæÓ£_¾½z÷ìßËO¾ýù÷ëã߯¿þÿüè_€h €˜à 6Èàƒ Fè „â7UU¼”¡á†bˆ5e€(bˆexÈÛˆ(–È[YÉ¡ÁÜBÎIÇËt×@G/Ù „£Ž<öHÝ@)äDiä‘H&©ä’L6éä“PF)å”TViå•UÞÆÛ\vé%WÂ}ݘc~&nˈ™fš¤‰Ûq ¤AÄ 2 ±Ì2h ñžzò£CD€Ð˜3‘cŽ;VÑŽ‰FÄ€¡j餒V饔bji¦œnꩦ vê§¢–Jê©£¦jªª¨®êj«°²ÿ*뫳ÆJë­¶æZ뮸òªk¯Àþ*¬¯Ä[ì°¯^È›5Ì6ë,no’I¦5&òb͘Ìb‹!‹M’È$\N2Išâ’+®[ ÂËëÎ(¡Õ‘£×¤¡¨½öâ˜ou¼Ø ¯¡,ð5/æ·¿úË"'§å{:î踅ãz'·×IKmsË—œî·ÛÉînoÛFÒp¤! ¬à3hA R°ƒÜàE¨A–0„&áSHBžp…(Œ! gøÂºð†-Ì! w(Cê°‡8ä! ÿƒÄш>b‹¨D"±‰HtâŸÈÄ*RñŠSÌ¢·Å.Bñ‹VÔ¢ÃÈE0ް‚òêàTðÀsœBdBÂ¥ÀÜ´On„#´1?øIkŽžî!º[Kæ2×$äu ÞcL¾ƒNìîQ;¹õ‹ƒœ—ídwM6“rŠ] ä°ž‘Rn£ì*OiJU¶²”©„%+c¹JWÒò•µ”¥-gÉË]úR—ÀÌ¥0qIÌ[³—Á,&2‡yÌ_2s™Êtf4“ÙLjB³šÏ”&6§™Mkjóšàü¦8½IÎnš“›èܦ:ÃYÎt²óœëüå,ç4Þäážy>ïyÿ&{²:y(y‘‡1åÓ U‹“"8×?Ó-£tÿCƒ"d'/è(¢‘M[#5IÁy-!¡\HHAÚI9)BN%¤ÜPŠRN®4“*m)'[*S–ÆT¥3½i'sšÒÚ´§/m¤NƒJSœþÔ¥—¸ÂUntµ›]èv»Æ­.u¹^ò2¼çîv½[^ö¦×ºâ]/z¯«ÞïÖ·½ó¯}ák^úò×½þ/€õ‹ßû¾WÀùí/,_¸ÁÿMð€Lá [X¾oy)ˆZãþ,²¨ÀCˆA áˆMlxÆö´:ŠXÄ‘…qþ@¡Zq%í¡¨`ÿÄÅÛ‰âVµ¶E-k‡\ÛO÷µC2j Z&ÁÉLVD”¡<Ñ)7¹ÊX–ò•Ÿœe+s™ËZÖò—­,f*‡™Ê`ö²™ÕÜå-¯ÙÿÍm.sœÑLf:_YÎi†sžñ\g,ïÙÎgösŸÇ|g@³ùÏ‚.t¢MhF¿™ÏŠnô¡ýhCë™Òs^ô¤#]iM_šÓ™–ô§êN‹Ò¤Fô©-êM“úÕÊÛÆ ZÏzÖë;1®Ç¶¢qElµ¾õ¬ƒÈSƒÖ¨Æ¨Q e—¡ú€DLmã¹Úؾ6’wûÜj÷Lµ·¸¿­ˆp—{ÜæN7ºÅ}îs“[ÝºßÍîpÓ»Ýö–÷ºñ½o}ß{ÞúŽw½û=ðœß8¿îï€ç{à /¸Ã':ñ„?|áo8Ä3.ñSÜãÿ8ÆE®ñ‘‡üäÿO9ÈUnr–—üåoùÊg.óšOüÜZKV†£s¬ì¦çW±rT« Ý2@:Òe ¤« ØŽºÔ§Nõª[ýêXϺַÎõ®{ýë`»ØÇNö²›ýìhO»Ú×Îö¶»ýí@žÊ‹æN÷º#NºÞ÷Î÷¾ûýàOøÂþðˆO¼âÏøÆ;þñ¼ä'OùÊCÞ,y‡†4_Îs~CÐÖ|5<¿!Ñ›þÙ¤ï<êW¯z­Ú°¶ì]/ûØÓ>öо}íi¿ûÜ»÷¼¾îmÿûÝöÅ'>‡„Ÿ|ä/ßøÍ÷ýó•zèOßùÕ§¾†˜}égûÛ·þÿ÷½~í÷>øâ/?øÏ|ò³?úè7?÷ÇÿõÏ_ýî¿ÿû»_ÿü§ÿô×~ý7€X€ðg€ü|ÌGz£÷z§×z©÷€ xz X €yÇ{º§áǨæG€8‚ü‡€H‚'X‚(ˆ"¨‚.˜‚0È‚&(ƒ+€4ø‚7ƒ6¸ƒú׃ÿçƒò÷ƒB„DhCh„EèIØ‚:„Hø„J…LøÕG…Vx… ˜ èÂ'}îw~Ä7¹§€R8ƒ-Ì–íÄ@ìÊ}Ì"ÜwàÉ\¬ÏÿËÓ Ô=-Ù›P~g\Œ®g(=ÑW{kÑ>Ù”'ù”N•0ÙÛÀ½“½۾]ÜLyÜÁ½ÜÄÍÜAùÛÆ=ÜÏÜPÝÖÜÒ}”Ù÷¹ÚØÝµÿúÝáxÈ{àÕ$ÌÄ-œÔÈ|×ê­ ÌÞuÝÓM]Ô ß”]Ú9ÔW+ßN½ßM½¶úýÔZ\Ä¢<Õ]àû-Åû}ÅO-Õ"»ÖîÅþ}×s­Þ\üÌNLÙUœÕíkÂ1KÓµœ³N‹®P½¾R ×ê[ĵœâYàÞ{Ä[ìÅnÂD¾Y¼áßK0ž-ŤÄè ÐBà]®ã-ŒÉc¼¾–ÝÙCíÖð½ ÁÀŹj]|ÖmÌ"X¾åZÞåYþå\æ^î{™ÛÇ êÇ zæjþŽkžælþæ Š{<ÈtÈ´0 YñjÂ-Ð×-¾Ï-@Ô0\ÔïKÙàñÿÓñÀâÿ}ÄN ÕE­ß”-ÕN ¿žÅ¾ÕaMÖ(léZ¼ÙÝ«ã_=Æ}îè>Å-àÊs½µ]¿Á,ÙMÅ„¾ÅpíÍ&~ÂT|Âpmµ¬Äñ|Âf Å=¼ÉV<ËܾèmÖ]Œµ6®Ó\ÜÖš Ô˜íÏ9è^ÅŸà‡.Åã@×_ìãOÎÞâÞ¾Ý>°=‘ŽÂÝàíÝìþîîï͘åêžÆÐªÒǺÑ(Ò$½ï&ï÷îïŪïý^ð)-ðù­ØøÝbØ{•‰çwÞy0 ²î ¾¡œÉÞëΩ>ß™ í-þ¬¾nØêK×jÍÞ¬¿È|Ä–ŽäC¬¿YÌżÿ~âîà¢þÎPÌâ®ì¾¾3ÎÏ=üçVÜÄ×ëΙÌÉô‹Å” óUÝâðk¾7éQOò]áÝÌäØkÙ¤ôÊÔ ô/¾FÏIèE?Ðné–-êàãÞöB\Ú:ñìÎìÞ×»ŸU®|¸ {YNæhï’Xø„ÿlŸÐÎÛÐ黌«ÀûÐù íДЫ’Ÿùé~ùŽ¿ù–¯ù•ß“Ÿ?úú/ú˜úr,È/•‡ûÞxÈ0Ð «€áy]Ξþ½FÙß ÙÞ¼äÈNâ]œê±ŽÕ´ó ìގɘ Ê¢¬¾F.ÄIN¿Ù<Æ›üÕuOèAÿìü\½ãÞœ¿•½õkí¿9íé»/â\mÄkýýBßâ- ê4Ÿã¡>ÅÞ«ã:¾ä™ü¾è -ÂM £,ÜÁ‚[([(0Ü„áÈLØd°âÂ-$s‡¡²‚›(Ü8°b‹Žã=ß€Û 8ÿúKî¾pŠÉÎÁï n·ñü#£»q’§=þ:l®=}{‰Cì`"Q"ç$ú¦ j¢Èˆ§¾ƒZ€±=àˆ#NEçæcèE20¡fÔÈ ›«hˆ; kˆ2 (§X£†5ÄŽÂ’¨X+ÃK0µóË1Ã$“Ìj–!lMÕ*íMÓKmM¸ÆŠ µ½LÓó'9ï|³-?ùt’Î8ÛëO;O+ÿt)8MMÑB•´NF÷¤T5:UÔÑF}ôÐH¥´ÓE1ETR<í´OHEUÏÖ~rÊÐÔfùÉÖÔ`8c7‰ns€äpD‰!„rI>ül n§„¼#ØsJ¨½š.ÊIêj¡¨=ð”‹O9µÃn·nMº/;lñãÐ%7¤Ù„Ý¿v·ŽºÅ—W&yŒ×9 ;ÐăèÂU41݃æÝÀ Uo7s’È%k:6Øc5~&’2É ‘GI’‰´QºŒ"#Þ…:PÈ…r e •y3¨¡ŠRjç¬JûÙÉŸ‹6ú褜,­¡›“é2µ”õ¨¦eÿËéÖÐÚÌ®z¢šj«¡ö:ë-£þrê±òI쪵6»k¬Õ¾úk²©|í¶×Ž{5»Ïo°cÝÛm¿¥N;p½é®²o®Ï:ñ´'ûôlʻƲëŸt#èl›ˆ67q#¸g¥C=ß^Åóxë0¼7ÁÑ<ûK±õóÌû->Ì1¹búñ·ó€£Ö¾pViQ>eéàÞâ;žy½%~Åâ°›7ÂMæ/Åpæ½oÝën¦—`Œ ¿àÉÏø‰7½<‰g0¸þð™=e*‰¼“‘a#Ä™ÏD@bœAÄ9ÊÒ F6Q³eÌEò –}”!¶2@IJcÕ ä’ÿ'·€E„• ! AøAJîƒsIÚeòTÉQª1Cs!ÑóÂò¥…Õh.ƒ”¾e‡hyá ‰Dò°ˆ?4 ŸX¸”‡NÔ!•hC&Êð‰>¼¢¥(¹MNTQA7VÑÐf6,i–Fè3½(øcш$Ôua«\$IH.$®a wéòNvºÕ YP" K‰, $u¬9«Ëã·†§œiqÄy,ñ˜„Æ‘ çt^á«Í“®ì<Ò/“سt‚ÈÔ$`qŽ#–>SB¯f !RAˆu0ÜÈìHœ¼‹vÄ¡„8'!é”i²“AÇt;Ê•R¶3ÿ1m5PÙÚUºÒ”±,CKÞdÊÚÄù%r‚³5à¼SVv6š@-†*ïl§¥ó*;…ÅžsrgjÞ‚OyV…ž§égdê•hðÜT@ ú)ú“¡¨B¨#jÐxVÔPÅÌAõI'L=tiB;–Äø(“îŠsùmP1 ä=A]K4ô¼d’¡äŽIf7"dkbè ò x®Eš¤ÂU·$€='`幂ç?ò"6×Èúƒ¼ðPË© D]Šô“0¦ÞÇGç¹È(ÕU ±("·òf²UêÏ-AÖɆÁâ4äF#_Å“;öÔhYjµ‘ÈH²”¨ÿ"DÓ ÏFÃ% r*i=$¤,ÅPR=*rPƒÚ•÷5Òz kj*œÖ7R ¨–n¬å•^k·jÈvl´š6çµÔž¶ ¼-œoã†[Ý ¸a2îiƒûÛå>MmÎ]Zr]×þ¶¹.v‰ªÀùÖr¶Â\jpâ k¶±vØ:?:ÇbàÊ´Ó,œL$`‰‡C©ÈRh:Ü1wü˜Ò™$Aà™–+és‘%áÌ€¬ N<Ö•½¾‘ 7¹ØBÈEèüUaL’±JTÕEKwñp-ƒsžòì¨"Þq1L’Þ“ÝG ÿ³Ù"‰•þõoZ؉I¼Ú@Õè}ÿƒVˆ—¥-•Yã(`ÒÒŠ)ßj”bámöË•÷t™ˆf¼ZÁ ÓÜ’†€é§šã|ÏϼyÎkÖg›ýÄ=ßùŸy®3œ¡(g#Îs3Yò!¢Ñ\è@:MŸÕ¦–E‹ØÄF€,€FО†€¬!‹ã[™7ܰ•#Cä…þ3’`]'>Ò™5òh c@Òä±ðºNÙV’õ‹¥¯“)ˆôºüIGÐQ5³é7»ïñ*Õe]uÊNG^ x`½ÙÈïÌ'W’äH€+ÑH‘ j!©èHü’(ˆœ&EÄúEv'än7O>5“ß“¢Á¡X±'Ü ÿn•»MmšVáVb8\¾pÛ–ª-™µÔÄ/åå5±R™`0næJQºN„ñ8¥5N*W5qS:¹È-^rBÅPU︨Πf”\哺¹˜]^ó•÷œN°]†OÔé[ÕtŤÝ(Æ_yzß-1-/¬>6¹\ x€ù®l?çØC$€ö%@œpÄÞ)*W‹ÅšBäë ÉŒy‡xèT";†7YÃ×°Ôq2©ôùÂÔ§œ•är¯¥.ÑŒåŠÌ¥½­ÔR,,#’¯—ÜX±‘|› #Í›lê±ç§³ïDD¾DÉ“/ÖH‹šC 8R¼$©ŽPžn‚UÎÅÿg©©s¤skí–W[t’vk½îØß‚‹­¶ÍuþÛ¢¿üâ6û\»þÛ"޵çw¿øß§[ø•ï}êo¿L⟾öÍ&»œ´M ¨’kÎÀ¡—#8´iÿËM2ùªMß °‚ê‰Õ«èø–RÂŽ®*[[$j9žTR©%EÂ)ŒØ«æ8¦ïH"#2 ¹±lí±/f;e8˜[Rò`qAŸ PêP’Žàåq¶ ,5ÿ‰í©ŽÝI–#9¬ ,pAâp‘bžb묪‘Üpµñùت%Ì«ÂÂ Š’ÞÛ‹r ‹(Xñ²Þ­E‰­ßC!ÿ:"Š#""GqC@Û9$b¡:Ô,¢3*":|ÃêÚ!=DŠÃ<Ô¡=D@,Ä9d7LD<üÃ;\;œCHä ´`-Ó˜6\ K{ ‘Žp 7e(óŸxaaž›h,ˆpª×[¦(ƒ» $x);?Bž{/s»³´±Q=ÖsB¡˜ÝÀ¬:ˆþ‚îù;µ;E&ܫמ£w‹ùìP&)\µn4%&k n‘رŒp,’q#ÿQ=R3=ÒÁˆÜ@6Ae9ybQ¬†¨:™= .u’-ßz“áû-èC'‰ŒHŠô&‹$œÿÀ9{ú'~š“•ø˜ë¨ŽŒ§Éi•…‚(w§K É{Ɇ*IP)ެ'’l“”(”ôÈIÉNiIš|I›ŒÉ“ )  Éä “¢¥Š×8õþ2Žh’™š²µ‰À+ýúŽ›RÆ…ø–¬*1Ù!ç1í¸*µZé°ÖÂS= º/œº­:7HÒ©–¢eX‰}“¯Ô™€y9&ÌBÃzhä×Ì1P²5Ú±™·4øÚÁ$–€ *Õ‰$éŸeù Úÿ* ì¹<Ü»rL,aùÀα™‚ÌiÊŠ’¡è²Û¹¥© JCÜ8•ë’ÿëB¸íª±a-ÈqÓ®©9?ÁÎç<œåDNƒ›ã ›ãšÎæ„­èDNâSN/¡Nç„ïd›¯ÑNàâNòÄÎÓBÏâ´Îƒ‹Nð„Î÷ìNö”N/i´”Cò²I]9#nÜÇÜ0Ž­rz뜠¢B‰Ån$™8+[¤êh«ñ£RÚfC™SÊ#ÝØŸ­¤£ü2"©Çnû iC–Âû<å¹ë¯StQ‹Æ}ƒKýÙ ˆX‰Ø«+Á +ïÀ#fR‘ØK$g)B„Öð ¸! Ôƒ2Z^¡Gu9–Âs&_² ‚à¥Ñߨ„àIšò¼ËÛ—À[¤ñ9%`$$azc°cb‘(<Ød )½ sLi\Ñä)¼Ë„;À;s-\^‰ÎIàÑ9Eù ™xX‰Ç5×ɵ\È5W0·Ê½ÜÁ«EÁ‹ƒ%Gᱦʉ 7Q²Ðô«þi[ô‰™&n„Ñ-|áðŸW4™ cÝ)7ÿ„p2@H3?ÌI8¡3Es³‚³@5:㧦Pœï,'«™Þ‰ô&é¢^¶±ÞuꦉÜÞѪá+§q _Â1Nò•ì­ÈìãÞõ½^ð¥HñUßOeßùÕÞô…Ïû•ßó¥_‰0ñXðC-§íI*ó‰Ý´¿bÀ+ÒẈ¨¯zdáFt;¬ˆ(&ìÆJÀè@ µ¬#顸!ár‰Ë±µ nQ@ÓÔcÓ¯hl)˜7ØÜÜhÅÍí¯ô‰0×X:§ûáx†ÉÕ©".â¾LÅp0b#¶‘UÖá$f U\‰R´›Zb±ïñ¸#›Ý‚LÂ'+c ·ÿ‘™ ¾BЏ»” í`¨ë}“J‡HD’Ðÿ_ufSM–ÊJV2¬nû*n™å‘¬Ùuµé/’ PcB–M<Îtµu‰+a‡d‡›Ù/sÓ2sä¡Í’DCõü ÖŠ®Š]ï«áˆ“ØóK¾aNæ¯ïÕå›oâroüŽïýÞ®þVï÷&ß^Òðû^œw›¯oÿfð†“o‡pÿ›ó›iÔ²eàò’Ú5Y`f^Þ7x™ÒÅu%éŒx–ÈJ&—ùºT $PºR æ»­šé–!u·±»$I%‘Éhgt Ù˜•êh¦–š"¾ƒþaÐ.\îËÉÅçäI-·r~^m}@øçx¶rÿ}6s¼SE¾~‰Ú¾Yå•je)ÿä–Uz‰$™X29&—]ô%[S馑\¾y§”jU4ç’zÎç™yÊi§–ºi¥˜zJfœfâÉhž)¦H_VFEBD Ń`-4èdF¢~ñ€§ŒÆ˜aݵØx’רtáÈÈ"iÍøàq˜m‚ƒq¬åGlsÓYfƒ!8ëb™ñu™k¯ièÚ*Þ¡£)“í§Ÿn¶JªõVaÁæà]†Yw^a÷³1ñ¸váÀ{ˆÚ©º­}ʬ—×j³·W_vFíe2û+fË~(¢µ³B+*­ ‚è×gweâf†È®ƒFâ¶É1ך´Ž—ÿí†qVƒ£:Ú”©Kaî‰óT TdPdÝl’ÏÔ)UM¶©hED¿€fN5»£ü)ìIk;£RÜÈTÁƒ„í+UaˆEZ$‚x%,#\ÉRh«íƒOù ­”“ŒÐ…4$ˆVR8Czh/¤H U¸Ã ´Ð‡7 "P$BÃ"þäˆ9”¡yHò¤,JéMJ'!„(c¡…¶2¼Ä#S\§`@.¾Š1¢ ó<&°Å@'së[•çHð¸v#Ãh8#¼tëKQú8FHÒÒ9-(†ËP÷šXQk6¡YÌflÀéJ92b̧ö8¼¬â9ÒÓ2Ъ© :mlÐ~=Uƃÿ ªò^+[p¯Âd2;Ú©Ày6ÓJ‚¥èwUcT£ˆ?²ãsDö¹úr}˜\º.‰™X-HDÑa ‚ ³ž¹ˆ]•ÃÜä.³-u2ÌVÁ—ç„éTÂpf9ÊQÛ¤fEªÉlo\TÚ70é MJÛ $Å·€>Élý“àæ&¶«Mpi •hš(úP‹n k}s¨Õ8Z8†j4¤ í(I wл]To`ãà˜ 6¨…¶ ht ƒ9@(/¦1Œí óªÅÌ//€qNwDæ8÷)æ9'SOÉòÎa/Ÿs'û€·Bz«@sMÈT&Ö5'e#j\YÿØÈÝÈ[ªÿ:ÌÀÓÊéç÷«çÚu—q,U;©\ b«ÊôX]£òëƒ1^Î€Ý ÍiÓ™EÒS¯²Žç˜ÊÔÆAÎx+ Ý[Ƽt9h˜ûñ¦v :ÏMÓA¥Œ§2xy¹Ù‚/+rNÈCÇÙ+•ótà ˆC/’q$ÊRX¼RFžå$Ë"tŸâ¶‰Zéiä“ŸŽ ¨>Á©¡ÿ4[·!×H൒£Æ«ï²é¼R;’z/Â^ó^Pk0ÝÙzË µúž ¦iƒTå_)UWQþÝNúFÁä´ 0èF1§vùª kfâeʦî2|­ì°ªbkÊw:g=ÓüÏÿs8$°ó¨çs®T1Œ9„9Rºq?0²j‰Õ‡¯hîg{6æq‰«Y¾ÌPZ©²N]££Ég”‹§zе™ó|GU,æ%+ïZ)ùDm=_©4¡Ø42µÁ¨Nv¶cÊ]^Ó:´ì^UµŠ°øUÙQ,Œ„½Â J?à‘ë½R+Îò­GËtô×<›ª¾9Þç^˜ÍW¶Ü@"™Ñ ‚M𤑮¼æuZßÐrB•:‰%  “‹) ±RSµC]Vwå‹°VЬW]ªhŒÃÅõNf½k£ØÕ9Ì5Ά•;ÖÁÖµ©—ýj›Ðš×«F FX(ª@Wh$i©·}ÿÒZÈ¥vyÕQ‘ç«`Ü%aìNq0âªçwE§0ÔÛN¼væôÄã²ì°­ò²®µ`ßÙw}À7Oj±;¶°b£+•â)ã"~žñLÎÍ€¶:3¸g–5‘sË[Éé—tB–ÀHhÍ+¾6³ÛÍÌ_yÑŽç6p˜;¬b²L`ÿX6¾÷©æ6 ÓLbÚŒm²•¸´ë[ÉKnñÜ©@_ga¼!âwHÂk¥YU@xHÍ!}ŒNÃ8®í" $C£2Ô,GH:°¨•Ä_Ã7 iƒŸ8¨¦Fé½ÞZxE·ÿŠ)Pƒ?T? Úx<=>¼h”|)o(ÿË8QhqüæÑ›$ÂO¾Àm½ß$_´i0ó3%¼ë=¿%µÐÄJAõHÌÝ 7ÎS{ìvŒã$p •4÷N‹ML¢ZQLD@bQ´—S¤štÑBBâÄ@^„Wp…C$«ÄD2¤EFF E5ldE&dte[´‰A­…Ð AdHÛ¡E,C,Q4@Ð…¯èá¯`ÌÁPކÄb^ÆPERfxÎjH*NÅ8“X=Œ’µù4à‰P‚LVOÊ $Ö [íOÁô c@RïÌF¶üNTVeˈtKkô fUsxÙ¯‡´œH¯\ ªØß¨XL6 Ìî  žc©hnåQ­Ôåp`†Y!PV 2Ýaõe]d­ù`¦ËU=UšÍÀÿJÕÎ4”ŽL¹TZXÜì×ÜÈÞI9!ÚØ FTΜˆMA9ÔB¡áåÁa>éC!Cí¦pŠa|QJmö&Ma}Þ¥µ&vMš´ã!áMAÐN„N6D]4™R2•“ !‚JóƒädN,R ÕfnÏ"¡Èå¨"é`£—éÎ_BÖ_sÕ¯h¥W±Æk@R8(Yz†ž ƒ^¥cŽŒl8°L\[`cÚ¢$ù$´xL„âe2ˆÅ4Æî)ŒöáÎ2ªL®Œ¨©læ¯steþà‡Þň¶@&” €FKµ¬¨†ÒÆŽ.Ȩ¨£pÉ!! Ù8Yô£ÐXÿJKVŠ1dEB!v[MPP ssñ# iÿ[†ìîóYÐóÄ.é=/;볯‘OlªùóR”ÐL Kª¤J¬³Á¶$CŠsÏó¾JÑ@מì>ÄM>É2doYæ„ 2¤¾Ñ« ÛQÕŽ^dŒ|ŽCn8™K Ÿ¬êÎ ËhÔB¦ŠUµŽ‡|†ý¦Æ¨ÈÞ élHyxHÁ0rNoÕÈUÓ&–ŽWýê51b+'²b”•…ÑÊI× #-mÜFO‚fnjV“¬vos$Œ¬mb^eUµÓ%P3sõÁˆZ / p ­ÈõiT hiGUåžq¯¦Xä‰òNçåµ—ÞÉcà˜áag”ê NHEáéÕpÿZnövvf6k®i^'®§11u&nÊî~éfïGq‰¤äàÏ H|B„-ò¬V9Ž¢ÖŽbôZ?ÆÎj !ïPá18!)ðÖÊê§F%#™^$s55«ø`*0oâëlr#ƒ÷Ö–èPV+0*á¹|ÓþHspŒ¹P%b£Ý†(¬gÌ:2íàwݞ5eÄQX õ â¥aŒ˜½0aÂ2cì­„+÷‡î^d˜jnL˜‚´IÝ…&ž`3å©ÐKô«dIìBk×çnI  oÜœáìnÔ‹#Ê™Ò6Zi‹'¯§}sêUé“Üx叿 qÿ—™ª!ÖpžjR©³i›ìî`?¢¸‰KŲ×Úv:d²U;I@.±e{Iâv·uû>.›Ïh»¸QÏx{Õ³²[,¯EÿÅÈJE>Ò¸{¬™D·q,Ç¢»¸1;Ê:ͦ¹ìG|@¬‚вP£¢† W Çç¨dìQ¤’o›çß!é΃ µL›\ §o? ѽ01we»FZrßg$h'Qëˆà´Æ¯ ë€*!Uµ~:¦UAOÍ/ÆIÚpl5,9|޾õV%0W1kƒ<¸ÆÐJnð¨Vcî`r…¸F%œ‚(.©Äú¬`Ìîé-ˆÇR.Ó¸’‡K®k+aï£yŸ¬qÊc<âMnb×ì/žD1u¾®”¼8»šß—Þ•z”íf´ßË&€ Ø ¤îìõݘTxžð¢WãgWÞ×{}M¦µÿÅíA¤A„|ô,º©p{ϲ©ÜuõzyøŒ¯Ëкùé/«’™V®oR+²X!KžÜ^·ÌMG%h´_ÈmêˆlNß²4.xl4¸h4ø*'Ë3%r&#Æô™–¨³°Œ— ±ÝÑ}ÓWs"!¡þÈX²‚¸°Ël¥f ¥¢F~ëhýÝl+¿hÁU²Ýú9Ï£’j8Dµ2Ë€Bê ¨´–i@­­jÔR|±L‰Ô,(±Ú²;b ™‘¡F’7–¤2ãÄŠ eNH0&E™3oBœÙp`Íj5}ÚÌÉ3cE‚K…í¹T§Î¤FÕiUiVžRs.Ù4ÿêÓ£5§’­ÚõkR­^ÏU‹•)Ñ©@c"¥TêвQ·¾]6·ŒÏ‹a2Ý Nâp-”‘iÑ"Þce’É$n±x2ãw.‡#s˜sçÎáÆ6 9±á;ñ©N{‚âÛ´Ãõ¾-yëäÉc+^U¸nå±ïÈ6ÜÛ0oÄÚ‡¯>¬ìúyÄæ·-¼úÕáÒ _ÝtâxÆ×K¿.´Ã¦3 ¶ÏLãl±Å’34ÁæòCŒŒ *ó,9Ék®¼Ö¾kîµkq“lÍ@Ô¨!P¬1H¡º+É+ˆ¨Ê¨(q Œÿ)}*Ê' ¢…¥‘Xt(£Ž4b "%•”èÈ'‡JÉI”*‰Èjª4)%‘äÈJ$YÔr¡&“\Í2¼ìÌ(­$3"3‘ä2£5{òÌ1±”Ë4½‰!:#èÏìQ6Ei¢*Å 4P<½³LŒÜŒ’%4½(-¨Ô䈚0Pí±Rà ±M"«ì²R5sµU2 ‹,˜Ü€¬UÓÆÉ36kÃn8ã|Sn¼ba¯ºÿ¦»m¿ÙŠ3.Zb¡ã?ùŠ™ žb: ó“/wò[ƒ/YzõSïY…m×.œ¹\„Ñí*ÄÓ¤BUÉ$)UúJ”Z~$3plJK PrÔ ¤wy Žvd#´ðiË“bÁ¬`ðh\ZφÁ±Él‚h!ÚM èÀ ÞEo ¬KØDC·‰Å&) 5ˆ@™Š-‘ˆH¨ALHŽ6¨rb6ô˜x™ªa-@fV–™Åø*¨Êå,}¹îXê¢uþóŸû„ët¾Ã]w-êÔ†]¶ãÍæ~·»Ú+{Ü‘MTFõeŽ3“^Áø˜¼5/«ÿ0Ö±T“»‰q@¹ó"„>Fð½¦z²ÌÇ4°|uX§»ÄǘAn2¾{PröWƒÔÌ*:TËÍø"¾ü'\qÊVnò™`iJSòˆCF’•ւݳªÇpýk_ÏiP9SšÊr•º9×ÿ÷Âøú8¯vÜ–Cv¼ÎÁ&`Š)ê½¼H¾à¸qDÃËœÀ¤“Fñ¥5ªYÅ$Uë‹5Þ‰ëÎÓ=BÎ’sêY©.ïLˆ¬ [Øpv%¿Õì:£!ψ4 M„Dó DÁ¶0kda×0Kâ@–jt[ÛbçbAÒŠ¶hWsa Å•Ôv²B á •B7ªm²+ÔZl–ËÞrв8Ê[Ý6Ã!}d ÖÊC–A+t‡1¬º ‚"ŽÂYF2‘É"J7cÒÅLZóÚmMÀ[|LO^‰ÊG:G¯ôñÖO•õ¾áÈŒ¥¬Žì|:²ô”kX؇œÿµÊþÜa[O=—TSsаr>¶ÝSÙ…I¿–Õ|ñ2˜wäóùÌ«ý‘h¤—ÅÓì:ˆÖ¨fê¡ëu: Ëê¼èu»®æ&XÛªa £ƒØLˆE®¥ø¨vSˆÉL¨¦¨Û©L–˜WÛ‰Qr˜ÛÞåmYÞQ iâÌ.´=š—wµ±d0ƒdžÚOfø56÷o=Ã2ÙÞÆ”4/ö´!ܬ\\[e¼YT,6¢B;äæzc¶˜ðD÷r™q•e 3E7„æ0—MZ%¥~ëÅ„d kž—SûL¯€œÖ¿X ;øˆŒ7óÖ]Ÿ³SY7Ç[ßù¶Âc,ÿyÁŽÓ÷šo[9¼: K§Á¶Ð7"gý‘œ6ª%[£âhƒFÚ­Ùœg scÜÖUÃÕŒ:Û+FpÎu»ÔÀ._yã÷¿ù!vÌSàQ~¤4Ö í…FãQKJ&¦RŸè›@†ú ž)Ò˜øð99êãlhÅ5QŒ7“àá\RÇ/ž§Œ{éP[²“˜¹OFI¼ãÎü’”Úä?Njæ(ÉÔœnnsB9VL6 ÃB…»ÓDñ0 wKÕžV5cãîåèúâw=5Øá(ÆÕÅMã×ñfØTåP¿ö“>=tÆŠi‚?¬.P*86çUr.,:b ÿv:ñ$Q“I¢¾¦ÝäáªëºåX=9©>ßj6°xl *Þ\ãÏxÇs®òæâãÕ+¯cï¬fTú¡÷äišEä¥fÓqæ×úC+õÊèñ-ÂeœXSmmmÚš–Ë6¡žÒ²›Ç7¬±9Ë?Û^è\/û^¸®h·æo®™ùøj†Û0¡üâËmÍÂGá“oè#¼)mûg†Zœ#h—w¶@ò×|Â"q…9c8SÝV5݉¶ˆ1rHªT® a'AFʦ¶ÓÈg>¶dæÇ~-¬Èê;†¯àç¾:XjAŽN¬Ó’#7VÉ×P Þ„gŒ,>ÿèëXžjÖ£µÊyìŒ4L:h*8~£¯\m<ÀEÛ6§ñGÅVÁ Tì2¡q6@Řpò&ÏCÒŠôZïãá¹(OæÐt¬õâa­"Ϻºã!#ŠðÖ)¯=¼ðAoWƒ SB æçÇtNK2ÅÌ>€NS¥OrNL¼dglOmž´Þ…öÍ€\‹ƒZK¶ê††ì̱¨,†¶,þöÌß²fómùÚ-Tëß±F±,à„VËjH+´Èh:k™òD—Bâ!D¥{¬kCbÉ5¤nCIC<AZãrh…‰LEÒÂ5ÒÃºÊ Á6ï!Ä0¬¦Ð1*ð\Ñ_ÿ*ì>ÖåuìK«„c«Êî«Z'wÒ#×LBiY¾ŠyN‰ÚÈ£shª>Ü+sLçÜ8Ýà(YF/Ê0‹H¯ Ý ïà âáZï ò²ˆ 2ò@/‹Šà‚‚aëî !Wƒ#¯²¥õT UXòqÊx¯ U2ò û1òÜ`öæ‡&,i°¯/ª,ÌÀ¬jtIk–I¡%›\NŽì䮚€RȤÉ(‘rœ˜ÒåxÎä æÖÉ þ"*ÿÐæRâ0E*»’¢ÂÒPF‚#´©+›ì$N(‡lM2Å™êàþéOE›ÒR,çd圤—ÚÄÌ0JâŠè ÿ$•¡‚Á1ã‰Ç >#8ÃW2­1#"S25£p-ØØ«q"Ç[r0 Ã}M‰8”ØÈdÖ¨uDF§ZL6Ê‘§pÌ3 §7TÉw°Ñ¼òn¾6§Á:f¦”Ê<*I t’ 81´köѺÊp‰òT O 1g`žËCÆP» cT\ϺÀ° »k !ãñžk YÃÛ8í2Ö§¼A*`2½Ms–eÛ"© ‹£ ת §Á$ â°b„mðPI"‹gôf߸lÏKRˆßì¬Ë ô¥ ³Øælj²'w†Ìoý|Hn˜Îø­ƒzÈAmÔ]è-ÿPkE;Ë„+G‘klË‚NBé,ijJªb.™–0ÖëßãT2í0B2AZåV¢‹#Sc\¥V4ãz¤'×Z¬Ü¸ ñ¾g’J^:Ù&̾އ©ä¾ÂjÁJÓ`ªTtg>†J’\„ÅDºÑ(C’1ÛÂa¤–j cj©rã c3@É`ÒÊ×èUÃWN 2ºŽŽ´ÛÆ#4Ö“5àJH¯nY&fY 8¬wæ~LGF|¬öÀÒ"œFÉR‚U± áÅ.  6tç,ÎdëÉ6g$4…ºì†vuó¦+äÏø°Ì¶T±r/iŠû0‘mnHUiën:%/ÿzD†Þì(lµ±ruoö‡ž•¢~âkˆHpð«60ç2 Ó<çÛó5CÒ2£Ñ$-2XÌjì©8ðÄFÌ\ÜÅ_;• Œ~ô•¦ÂÃê~…xtg=&  3§ë©”¬dÒŠrðeM#ŒÑ<Šç6‚fCa‡Âä‘0÷+¼âÞÔ©‚¢$Ë÷\ÑX»²Ö,R¥MºäçøÇþ¥æ(¥›’RMHBlQÎlß-›ŒåÆñ¤mñIIòòåXUlÙ–æ>Žä¾–R&Eæÿ®MôJ—RˆlÈðÇNþöJêÄl÷Pqãä÷P~î ˜$l *$¢Ø`Âà fÃ7ûf;ssª3«¶KjEÝ ê4d3#ƒxJêp.mº’1=¶­ÜF- ¯Tz^ÏO¹e’BÓÝ Ï¬ðhc;0”öaAc`J„ônz° ;äÜèƒxBÄuTc¾¦ªzº§PU¶½`ï_ÓÃ"LÙ®”TN—¸Ã§‚ÇYÚ Ôâ }«w •í©æ~jq¯ ö9„Ö6£%5ÚÃ4›ÇòâgGM•Ërb¢ˆOXuo/}µgp²j2tϦuøÍW“õξonÌ,G¹ÌÌÂ-ú2Êq„ÿdúøX™µj—ïü”„©ìúÂLZOßrÒ‚-ñY§,(q'ìÏ*" ÊU|dU€`œ 8fc‰Ü ¥jƒp¨vC2#¤ØŠb KoV@¶·zÑ-Û¤PfÖÙäEr£ÍÈŒìK<öô®Á4ÔPɺ$¯ë¾j’Rï0$ð6¢ÑŽ¡íCv¬«"ð|×#ë ®îåöT}øjVV Ù+¯$‘€%g¹¥ê2§‘ÈkŒl*"ë6Àq]H ;M C¬4™6@“‚à~²!²(ŽÉ\UO¦2æü†´i®vAkH³ÿœuF›¯£y„ ùBƒæFFË@½¸¸•C©lC)¬Áœ–¡ç Î¥sŒc*@â²Á²å¤WàUÒ­f‰2¹”¢¼Z/•l*s ñÓîî}*l9¼˜çôv*t ÕcÄn“¬T?&€ìtbª|Ϋ{\'¡‰ Ç*s¤s&à;áW+ RÝ õfî@µ 'B>†deÖ7ŒÄ<óÅdÐd³ŠYó@ÅgŽÎ§ÞÂT™¯'%´€Æ[IG$[q¡ü§$Ú.¿úÈÂr¡¼¶n·iLÊžþP€ˆ,)ÊäÔºá†R¡¢ráà2á¾Ònÿñ’-‡B$wÁÒ#*W®ùg.+×–írâ¢ìö°­IæÂ²qq¯®å+R¢&_‚Ð# H3í6§ŒÁÀÀh¦‹£Ÿ7U¢ôT v5MC „=¬gÍ#•ÂðW„š“¿˜z§ÑÐÅðúkz®4Þ ­Âë5拦uíŒwvÄÞÍ=ʇĘ\ìÔ`³4e¦5zض*±t8yšbãe\jcÝxÚ}/ ËíÃÌW°„º¸oŒXb ŽR7u—E¿ F=X_ÄHšöšñl TϤ6Ð6˘¿5i\‘™CØ—7‘˜G1W7«¸|9™hDƒ«·¨„˜µû\ôüXñ„P”Âÿ«YFHÅ|±¾&˜ÜûJ+7¼†’ˆÃÄ/iH—¡r€WsN¥@ª ºá â Q5 ]UÇu[Ò¤¼w¨ƒ§gMGH¯ ¥Ñ×3ï·Õ”#ª¶t¿*)ñ^3;05¸X’>f ƒÁ ·6©Í5¬ã ? @fºÌÿø‰ËC>MëZ£4¢M¡Ý—@¬Ôôƒ?Tíc›;_Rc®<®úO•cÑó.4“·4“j’H‡Ôâ(«&S ©TiÈþó—+±³’áži°-››îú…Üù:ØBa¼—Ôïëù®Y'q'…iF·O˜,T…ŽÆ,H1(Ž}[‘OU§Ì˜ë—ÿ|5ùJ‚uëü¨Ï6TŸ/0‚¹<×½T¶`2AÀ  t@’¤Å4øqP£é¶øT®ØVà=w;“ª6óÔÛŒ¯Txvju€#?ˆgЄz¨ 7>DZ-A9w÷£r¤ wº¥•g£q®ìÅ.}`v;®ÜÛÐÇØ¼‹c>p×Ü23|¥­zÝe5o~MÞÅØCe'cÆBªa§sÎh:Z@IæðEê°Î¤ì?M‹Cs½kˆµ‚dQXnç¢>°/»lenå²ÖRª^á(—pû'LX•@a•Ÿ¶~JÜoóÄ›òdå ­!7–!ÅrñÖL°ž,[.êùvlÿýÚ¯%ªkßn¹­÷ã¦^ly'š‹Hha cAÊ®¥Hc  ®`Ö‹c)v‡qq¤ Ê+ƒx´+$5c`$½#rV¸eVÐ`N¥A¦J‘Zy×\]$)Z¸Š^&]Û&ÙWÚ4”ÅÃÜòx>F¥Q»[ÿòê VêS>ºkbƒsñŒ—òÞûæá;¯"oÊK»º‡Ó’rRYege·%¯ Mžõ=fÒ)o3på]ÿx{öDø}VôtÔî :«310¿Åe^bÂpwî(+ƒ!(4 ¬ªV¦­„#.³q"D„9z¬FÍcDjABì1åH•"A®ü²#Ê21ÿ9–Œ83'NŠ"wª¼™cL’&²ty³šÌ“"Cu:rcÍ 'MRtª”äÕ’UWº šRiTªXy– –¥M¬eOj%›UìW¤PÓúœk—'M‰´¨Q³vg„`Ê Œw'Þ™O™ŠMÀ/\¼M‰'´h1ùr<7ñ‚Ø49^¼Ê‚mÞ¤lB¸pÊî¸IYôœxÜœ)Þª;«ÂMˆg,Ü™ÈÏ zՄ݈‹Ý)V8uáå¿}+£­zuhñö„Ã1õ„Ùã‚­çfS±pŸjl¬ø&ßÓ&Ëýx´Á‹Q.f[0ŘG™oñlÐÂj·™kÁÔ²‰€Î9'Úÿv“˜2ŬÌ*ãtC[ Å“›dè…S b¢©Ï8™6dðu†¿U× Šî7A7ÅÔG[ ´u3©íÖÂÅtÓÚˆÝpó‰sáVL1Ÿà°ßm-XÙž‚ƒ}ÂM•nY1tÓIŠS¢¦rûˆCŠ˜÷à*a†CŠtÒ 7Eö7%„ß`a•ÑÐB PõÓNiEÒDeÐRY:©R-£iD”–Ái DŠÐ§˜ö¥Ó¡ZÉ´*Q ½¥–UVAÊê£LñDë^V…Ô®¹ÖªW®DÙ*—Gà Ց«QÝÚkO{5z–Lj9kk£)µêÖR6!ôVµ«¶tÿSØŽu(·ÕŒš­¤ÔôEéEa¼(Xa0X7[HÀ1ˆÎñÀ†L Ç>̇ƒ+ ™2ÇS€¬%¨[æÅ«°"M7æM GLíXÀ8ÑeÔb«H@âÑmüÆ<í@7è ˜æu¢Å0ò–NÐ`¹ðÑ`Z J4Áú˜#äÀ‰(à CÅ8T¢’LA„S<Ì`©rX-pëP·:Š®Èõ­qaK,äÚUZR;-s9kYwÙmãBÝ7YÜJ‹²r++p½ª¸ÏúÈVžÅÖ¾*[ Œà£t[,ì–¥ Œ J¤Å(ÿ§Ô¥µ —s§Dô%ƒ\5ÂÖäm  G't@3]â‘"ð,8d8àC4¸¡'´5ÝèÀ4¡ÐH†Uˆ@”1´£ 8DˆVц*\Áj0H`‘ŒZ\ØB¡ÁLÐYjÈÄ0bv¸ØøF‡þ%{æ@Ÿ`ëL€‰x| qŒ#8„@fKšÇÔ`¨.p¨‚À@‰(£äXE`âxøÁwà%ÆA›UpÎ ó˜ÆWŒ.<‚¸Ñá4°dcÊw¨D;Vñ 8&%€ÂÌÐ 1<çÝhÀPbÑàÿ€—ØŠ0˜ÒàhEuäPØ0`‚/ºC-.±TTÁ¢¡—Vƒq‰"óG b@A2($5Ì£öä2¸‡=ðÁ%ÈÚ ‹=‚*Â1.!†Èr ‚1ÔñˆLî ƒLP€(ãpÍÂ*ÁŠUø qH‚ ‡ûgp„§·.4cÀpŒA:!èlØ"±ŒÁ‚!¨“Ò`QgâZ¡Lð‡JÔ⦤HÂаŠD¤R|‚^ge,Ú: ËŸâä%æÍ’‹´’Ë”œ»QV5Ù]º’ÝTE÷(u1¹wa-éêdåÑÚùyÈ,´TÅçÿ=׸^u š% à:ÃðÁœg Í´ð Køa ZN€&˜ T¾ ÄaÚ£èÁQÌàUøÄ7p°àMHµv‚áÌjøq1¶€‚=ÔÙ à ä@…(`è9¯Ð@7qç’‰¡Æà€#ؘ`ÈAR0‚º±›bPÂWX€1P 'ÃM(}Ž RXpƒ(8ƒ…‚1 Yt ¡øDî ]ìaS€Í¶ñ…x¸b ™xi1 `‡èB•ˆé†ÔÀSäxwøhÀ3ÓXÛ…è{1ÐtÆ  b0a0jµÿ!Å@(`àâ ‡àÆ0)aPÑf>0"s IJ°‰qg²€=` "ªáf€а ­PŽ °aq`j  BêàOji2 :àiÝ Yð ò7~c Úk)»ôUà ˆA™ð Í`¹Q"PPÐ rà8 ”`‡@W¼h9°>ÁPs` ˆ@ s’_‰‚@AZ0^šÒt¾¢s®%^Q'aBh)=dZ#3„*BED$D¦U¢¸)ŒDè‚)¡E6t‰Y4)‘B*E”B¤è)=Äÿq5¤B™bZ™x*°øCèrF7ZJ*ˆ‹»h)¼xZSt.§Å‹±Ø‰:䊩(¥XZɈVB¤Œ™H*£`GZ³‰Ñà±P’Qw°À @ €gÉ fPt¢ ÝpÁ0PP ð‘ [uÀ"ñpÜa0ÏpÜqÒpWp ™¶M°Ý UB"Å r Ä K摞 4p»Aiv`  r@ŽnWê`D–{¿àr%WÐVÀg{0qÐÊf1Ãà{0†¼áÝ0.€üÇ¢!í ~Q ñ09pÿ ÀÙp8wpï‡ ­ÐKxö{` Þð"á0¾aà¤Ó"8à C`° P±°pó€9ˆ¡cB°äPàà ?}°EWPU Íp Ñ$öÀ¨àÓ ¡‚RРΗñl(0g2sð>( w°¹°àgÀŰ²p¹à³¹Na9Ó"¶Ø0ZX…º``¸³ ™ÀZ 0 ™ó ¹ fpܰñ ¶° …Àl «0¿ptØj yR¦ÁÁ r ®@!«Pq Z\q‰L¤‹Kä'Šh”ÿq´Å( ^ÖÒ 3g[8WuàÂ@yA[3÷ßEÊ,Œruß…,¦°íð ™prÐ ¦¯ÐÀƒrpÐ0>à %àIg VP´º ϰ{ ƒ©Ý™Ð­`ä q)À`p›¦Q ‰ Æ ™G"Ý`à³–Šá»Ðºà|º~‰v°8PÍp% pp @ps@ ²ÐK¼aŽÐ Ž B*8 ¼jDÂ` ¨À ™YÓgFàaH ` U«ðÓy|`°Eâ{` Wp”p%€ —f0Ð ``êð âá Ä@"«Ðÿ ×®‚[/š\­b,Ôõ,D¶­¢Ò‚¸ÉR-àõˆ›[‡ÛZǠ₹עsH'+zß"¢¶•ìË ŽqúKü1 îhÅÀ ›” äè\ `lªà{àxRÜ@¯ðUkEUp˜Ñ º0 jàspëÊPVßSGà Q%´ºBp@ +I5m`)Y–wÀ ¬‡ ² ˆ!Žà ,€˜‘‘ ” =Pkà"» ¯ð 4ð ²zgÀÐÿ¥™Ñf Í "žV` yàÆà®àŽspB `€UHeg…ù KtuÚgMp8Á0|à ÜÒp’1U°fà {àTÖ –°ªCåWÖélRõ R°Ÿ rЙ`(ðWP và,pÁÒs }@šs² סfð É€/µ | ¼+ O µi”ààA!ö›ð/á° jÐiRv8ˆ3jÙ@Å/ªº ”°ᕾ`ŸpÒ€ri övðŽ2ß ñAe:0p‡Pdñ1žð pÀ ·áŽSðp;psðÿ‰ˆr@‹2Ÿ‚ukñ¢·£2Šq)Š$çE¹èEÒ8F(TZ'Bk[‹ŸŒÄ(Œ„øB9´.§BñB;ôA\´E¸FÂLF”rÍÖLZ_¤D.$CmkÌ*4ŠÇŒÍáìCªˆCºCžØqÉœÚLÎW”Ͳ¸F\„E!·BìŒA44*Ë_ëAµ‰1%/Ó#` Þ:%­!’ Í ¡° ªÀ» B" ¾` «é›À{GûP¹±UWp„E0;ŸÀ & ä€/’ Ÿ@€QO¨6F”± —€ ¯ «PÃR}à ˜à©A ŸWÿÒ#7< y@{«Ð Z°  ÞJ«} % j nf©?œà¾ƒG  |€3ñÀ {ðØÕ 9¥·!‡ BÀ ͦ;•ð ý÷ ôyq0 ¦nÑ 1€l+`á0q¸ß0 ‰±$­`ê }¢1ôZ`€Ef&(Ð ní7¸ó À j€˜­A;p«jP:s°` ²4ˆÁ p(0­­± `ª×œ@Ÿñà £7Å` Và (p”¡;SPíPdâ®àGµO àý¿Ð¥©\uƒQ`‡`…÷¾ ó`ÿ l&ÆÐ#Ï ­À Ý žå õ*˜â)—DŸ*¹¢*, -Þ¢-Íu¡=ây1]¿%ºäE]%n«•s}k¶1ç(MW]:â¾,r äÂ\>>¿¢£Â\¿â¢ç•âÌR¹†ûZ´U!Z\ÞÒ£òa€º2 Pëè Þà5˱ „`æfÎ’kÐ ä`<\”Ð –ð‡‘ rpº ’±a± 0 lEäpP°8³Æ ­ÒÁ"ÅÀ `Þ>”¦?ð"ÅP0C ý³ ]p½ÀsðUó ä08SMp``ÿ掗ð ?Pºc!W@k^±q~PðV°ºd ¦@¶ÎbR­ t Ãñ%Ò°`Àˆa•öBð"·qrÐ SÐ ,ÉÇÓp  2tÅè+pB ¯W𰽑Ù0íá3%ãÀ`Ð ÀÊ@™?ðñ¶ÛÅÐT@~@ŸÓ¹oš"‚q}€=®1 sP–ÞŽc 0ƒÍ`€ë¶ /` Gੇó k : ‚™À Äà ¶=™p¯žsµ-gj` ¯à'n@ã° vÀ/•!Ÿà(,-p(à%s¿1 CÀœ‘ý™(1CÊÿ*?Áî¼AÃEÿ<Ïâ\ŒÍŒ.Y'º;'u ÛÀUAL¢#z¢ªËÎu¡#n·¡k¢/Îõ:îsmÿ\Ôˆ ê wÑs„[¹m?|os‘£2þ[)Gtv]$!G½ñKmÀ À [@eyO8p`Ó•rÀíÀt0LÀ&À›UAE²¢å‡³ I&òíáDiê58"ª«à ú ¦à±QAý­«1ãÐÐW›b0™0ôuwvDù± b°›|Q%{PdÏÑÃr¹ fS2´°á¸75¡V%Šº QaU¼ {ºe ÿïNÂnÎtRHp·O{î, ON·bwŠÅ 7ðL·s6… n΄•Áî¬"oU§98ⵈ—±X·OPÆûoÏ™b«p(SvèžxÝV[U$O9ÅPúÜ3¡Ø•UIWeÚ3GÎeñps5^9zë䣗Ÿï~üþï÷¨çï¹Ô “n>ñ¾“ï:÷ï>ÕÂûÎ;óÄpÀí®«P5 %Įà '\Áö2loA áK/5m£N@ÿ°n½ذ†®Âé¤ jᆊZ& À£x:1 ›;ZP&!nÈe‡à7š'6Xk“xÜPê¢;J«+œ)â'œbja¡.ùÈ'™&R¡‹òRÍb3¡ÄjÁ§Ìé¦qº«K-ã™ã"‚R Ï Öšr!”Šgmá 7~Љ¬ ¤Dt!¶2ʈ´qRê J“J“ÒAH©-»b+„BLÔÿŽ®"-ž+ŠÁ Í#éS1×z”Q«n*5©œb}v±^ñô5¨(¦ls’5ÈŽ^’V¡i&È(¦L4­«ÓxðìK,ãñ ^5}½£Bq­«.ÅÖòu˺ȥ‹ ˜æXƒÍµÕn#6üªY&¿“£&¹ãjCnኛŽbå”CÎaгØãß8ÎMã‘;&·…Iþ8¹ƒiÛ¹+ncàF.™cÚX¶xæ AÎgÜDVg—‘¾¸é¢yÖ-eÞ¢nùâ›5n.ež“†™¸§»™êމ;èš®8:ß– #“b”áFe€0fžN‚rªntã£Èä ¤‘Fv`„…ÿ›žº‰YeZÈÈÁ2öY¶þ$u-Æ[pCK¥¿²…ÜT¨+eV )¤;æ@k3E=¥9P½i¡Ñ(-Ø·åX !—&ÀA©§îà릨²´„NŠg“‚i²xô"ÃL1‰Ï©*r•9c‚ÑÖÖ%ÓHO)KÒ¦WÌKeRÿ<¦•Öõ,¡í±ü´®`6maŽæ…3£MXz”êZÅ&:r¾"ddJ¡Kµ¦¡”Œðo ¹Ã¸4–®BÛóCЬÞa,nC¼FÓ./‘Ê%öBTõnùË10ŠQÄÉA!¥Éˆ mH*9ÌφAck`¶¨©(f!‹,ÿ¤¡ U£>ûÑ΃ΓœûGf!;Np˜c1¯õ l[ÖDv²-fma #ã…–1­…Ñjn4™Ð^9ñkO›ÑF­'g>»ãËüD+žŒ‹sD£¹HÝ$²‘K‹šŒ¨Á¶+,dêhÃVІÐñá:H†¬Â(™p@Æ0†¶õ,œ,.çÉ+ci\%$”ãWL2")b©©Uñû”è’’¤¢ƒK¨jÕóZå¼×AfãH AÚ$Üð|ŠRJ8&?@eJ› ”¥pBJ ï˜Ïb` sò‘L`IQk©ä*ܦqŒã ¹Ã&ÚD©d-í²Uªà•ÂÿÊÉokaSLƱN„cP ÙŸB:ñÊG%…,JÑ¥1Ü0±d½º¹˜­UL#Höz‰gìeçŒF]Å À»¸•`‰‚ŠˆgtÉÀ‹l@\X _¨–™Ì£lña‚q9X0è‘ÍkZ †?%+âÉÇ•áÌh[ÛÆ^ÖĈA¬6*P†`tUú8gDÛÄ”XVÿTL>áa\]ä»R‘Bt=+_Ù*ž‡•õ<Ýák‹üZÄšõBèyÐ]÷zUѧ;JäPŠ4Ù1¯p͎㣵ÒgE¡ý+b?»Ø½:¶­øIÄ|c ·YôywéF0¸Qntÿ¢8øÄBЙ1ý¯•ç;’”á†*Ý3P¦±á–b2Oȼ–[ê„1;™pš !5Ù¤ŒO=ªÌ= çµ‰'Üó Ù^w²Ð•<å[ïÍŠ4#2šH&%ïÕgNì’‰{F3!Ȉ6ü<˜*ee1–¦:X=*_ÙtÉÀ9K~m@— †e…–Üi…Ä,¹C&6_¡$=q‚BJâЂèï,¡‹>Å1ª˜WÀAGV¤‚v±aG€"ÁzÝ&ÙMLO ²@° søS”NÜ!/Å@] ¤ò‰3|"/1ÑÊüU” årÕO©Êÿ%° °z¢™ÄˆSâo$è$’¨BLëâÁPVÑ;Eôâ!™D=gŒWD£Ö$=³¯eñX]Î#_æF²ÍF¬!Ë£É踛C’zŽ;âõh¶K÷‘f:«´¢1Ä“iuѳš­j;®ZiØAMu¨ñ0ÄG—à :‘ ½t" ÝC "¦pŒsîÌŒOìR]”(ã~pB·ÏG©›”eRñ؆ºýJœÜဣêrOmÚ‰[Ü€Gá0 Ùªœ™pÅ•¥b¨ ªP~ˆ §²Q QHãm,™À+"¹*ñX,\ ÌÁ +¸Â겉 ¸!G¸ÿˆ¥&PMHOQÆ ç`Œ#äötG8âQ ŒïˆÇœP^c°%ÈÁJ ‡ xãŨ„Þ;‡mTÂ%ÞØ†¿@^‰ Ò°Ö£p†Dtp‚ ðÁ*Å(@X° b hÅ ºñ!Œf˜°CŒa bôÎ @>ÁŠ5øë]àÄ*0á€ã]€Ã.A‰ã —8Ãø•zƒÀ¶q‘-ŒÀ ÄëƒÑ J<jè&ôR0\‚ `xD žpbaðÄs®/˜áB°»å¯ðˆn¬`â/)Ã}6UDfõl=SYÿ)KØéÐÕ¯j…ÿ}j3¶Iã:¬]4"§ækFŠM¬¶ªªù á5°jšFJ1*¶ä®¡¿°#¢Yÿ³?Ps˜ –)š§¡?Q»˜™@5Ê¿ü«q™e˜$ˆ)Œà à è1X1Ð1‚NЦ0»¸X(2¸X€ ¨…p8€åZ\ˆ"ø&…À ÈÉ ‡Jð!HX"`1XKð6ѧ;¨€y耷‰¸'L>ˆˆxˆ‚Kø 0ÈÉ(G`…(‚¬x/X è7o¨‚¨L›ˆ UXY°‰+ÈJÿ¨ ˜‹M`Xƒ¸„( x`(¸½gH‰iø„-ЀÐ(X ƒ xP‹mð€VðSÈhPŠOƒ(ÐO †ÑP>˜5˜5€8(‚5p„.ˆbX xLØAbxŠ €8€ƒGƒO@ Dˆ‚oÔ8r©†©x¼Ñn †KX(XªK(¨#‚ø@#àJÈ :¨uÐip8€i€‚À„ah‚!C1ˆ0Ä †V`…jŒƒ»ˆ‡ €VèÐc˜D˜ `¼ûˆUˆ€Á+uˆ‚‚ ˆ…Gÿ „$È‹ˆ€lPƒC(8—pXØØ!è†Ja;;àbÈ¥à†?¢Ø€‘öxSƒ#™™Ž\;š8B$4Â#Y‘÷¨&òè`Ôr"É,ûP­ûÐËÕp%ÈR­é «À«ÿP¬Ï L*âËÅ´,ØÂËÇüËä€(Òðè °<,¶R¿)Ò,Â’¬ÒbÌÌrÌ»ÚÌÌ:i"Ô"¿LkpÕ¨‘JÂ=Ȇy8X 1`†N 1ƒOè¶-A–.ˆOÁ§¡ËK` äš%Yù (8‚U‘ƒJ€… ¤(†8È(‹²È‰MЋ>ó†ÿ9a“Ox„N ÿ¹,¹3 ‚Onh0‚50ˆ¸ƒn¸Å[…K(çY(X7ô ñ  ð„3Ø`¨‚lЂa0¨(àȦ* °Å=0€E39@(0†`¾ Ѐ#†’9x„5 n€¶œ˜†+¨„xàFqƒ.v؆-Á5 >¸ˆ§8‚&ˆ€K`9ˉ6¨€((˜“ð(P¹ƒi€’£ÀxžlàiðО98;ˆ! &¨¤b0…+ †3@1œhœà$eøC\…b0/ñ<èc0 Px ˆ‚ ÿé üì„!°5X(÷„ƒ!h#(Ô»#˜5¨€H O0h =@‹L‚°>ЂÑx…K 1 =ˆxx…p€=‚&è8©R®Â¢ÌË2š¬]£À¤´­ñª Ä"P“®9ÀüsšT3Ü™t¤ôâ8›3º”‰£ók4©É™<š,?œ#x 6¨‰µt•@„5xµ£²a4H3Áû£Zƒÿ $Ÿà†ôlN<'£a`!è1Ëqƒ8‚*À#t‰(†CX"|%ÈÈg°ŠšÂ‰Ð8Ù”¨  ÓÀ‰`ÀˆM€•”ÿ¸x„6Xžp¨…ziI$‹BÅKpO˜Ê§Øƒ/Ø 0ƒVƒqÀYh¨n0€=ÀÚx@"˜ƒh8Ö Y˜nh…±è@Jà„À³˜ƒ ¨‚‘h9(‹!ƒK0€˜( p„ˆì‚÷B”x°ƒ+Ѓ) ¨àƒÈ‚8À„¦ 3!N]í² û†³;Òø„'å†#ˆÚq2}*€Šð„ è¾І=(1@ê>¨ÿL²UÐiØ>Xµð0ˆ†*¸‹Ox†l؃0NHÝÀ5øJ°žOè„K0†/à1¸ n¨cè²¢ÿ0ƒÿ,†g(‚Àº@0ÈO( Uƒ"˜€Á{žxð†y „;xÏÝ[…l 1øO ð#àVx„¦ð²à„ ˜†*Ø JðS¤ZJÀß`PøF5hƒÚù‰4¯\ï# Aš-š ™Ìð,¸Œ"d›áŒQ{£µÌ"0:@MSK±”´2Zµu½¢žñaŸ1Žàø*“‘×6âÝÀ˜>BâFSW\ÛV™Ù¢’$AââvÕ™ýC×¼W>j@J“Vã(¿CBÁ@ؘB5‹Nè'½È'¶%Æ!Î#àY8¥6(Y‰‡(†yP¹ç"=ppgÉcÐ ÿidp ¨‚0Y âñ'À‰G †#¨„*ÐD]ñ†(ó‚Êêó1(˜n˜‚&è .Ðà&x„Úˆ*X‚-`D²30o@„8( °Ð"X€ e(b( 5è’3¨‚+h…È„Kð†op‰U +8£< xh8NûÔÏ;p8‰K°‰;hf2L(Ô±x†50†6Pƒlx 5¨<8!»€ƒbà„3 »xÀÑ`À0àƒ8 8`Ò ˜l€—NÐi¸‚VhG€˜8Èa0,ˆ‰)†.ÀÔyè prÈ>8‚œ«€ÿèiøeX5DpG(‚+†CxÛ;½BÒÂóT>x/Lp¦m*(Š;ÐWxO!® ð>€XϘ—fJ@*8—Œ Ñ‚®õ—+(ƒ®² 98Ö„¡*¹"fVz½¢«éÀu½Ö5â@üLÌôLÓZ?ÉŒK·¢,»¢lÍ*ÊrgulÈz?ÃêLõ M¼’Q-Öì,f}¬Æ²,Ñ&­Â’lÓÊ+yìÊ|­Æ>+ÉFÓV¬yKY"ýøí¹mÏÚ,»$màPõXH„W*ˆƒ/hQÂë ²µP”qšŸð€b8BÈØ„*ˆ‚!ȉÿ[…(ˆ ,ZcPE$Ù½JˆK膅"òŠ‚ohø·fa–¡jÛº¬ rÖ­¦L1óÏO{N&”!·ôtÕÆàYÿ±iUÚelÝ…XŠR3Z²ˆÝgÕðôitÁøjbI‘@5Î ’µ¾ôê¢YšŠdG$=¤’I"´¤FPZ¹ãJÖšâˆG´¸F+ i¸Þëíâ‰~dE3U¾dâ#’ë¡_þ’H¨{%‘IÊn{’žƒ^zäŸÿøåERÄdà©KøE¬g~›¶z™5O\±AT)ww™T÷è®2üFõo÷ÙzÕ+q\ïT<ÝNîeÃõÉe4£±WÛšR ÁD¥E㸂fN#Ÿh>™`ŠFhÀLàZL ~sãè¦8ÈáLÁV¹\g›è†EÃqÁ. 'ŠG¨ ´aÿj¸ÃÇ‚¡¯#ÁåQ[¼ÑN¸"¡ã"&R‘ ! Ù4%¼Ù63™—ëÓ›–¡&JÑip U¬ü4ÜS!׸™tÔœE8YuJN€:H ”{*UùÖ“”TÓ—â[V…*KÔ¯ {\3I)'üîpm5&4u’·âmáš;*Möö½‚ò$s³û]?×¹”B/DÐ[%úVòÀS‚dN>€+‹ã«#“Êâñ±¯€}”On­¥ mpÂú0.ø¡˜Æ4À„6¨è€ÚÂ|¨ã†3ˆÂûW1 ƒ•â´ O·Þ³‚JØË‡ñÀ ¶{}¢[ÿ‚…ÿÒ‚b¬ g!À}6 øÔñ1¼ÃÂÁá“Ûjø¶v"(‹JT‰(- «„pó” L |˜ƒm2ƒƒ¬ lñc<„ІØ|pˆB;ƒWðá:‰G2ü€œ§ü4äN‚¡‡ç¦s8B ¶Q„#z(Á{ÔŒKèA‘ã' ÀdDDA%DTÂ7¶D ÄÀÝ’F´AdÀC°B;~Â!ä@ÌÇT@%Á!læST•D߈&r¡Ò'Õlè´˜\’l¦×gN'M\Ëý’ÅR-ùœÆí\Ì™Ï5IçÒjzâƒRGÈR/UñíØ’Ìñ0Ál± ÝÍéáÿ-±q/bÊ‘,ÅÄÙÜíÎ"É|~J|5„ävˈ2pC+赉A7t,ˆ´t WŒïCŸ9Á×V@ŸùÄÁ·LÀÇpÂ8‡úŒtƒþ°F0˜€#Ô˜|G+P íVlÃH‘èÀÖ€n˜.,Á€˜ÅÀã.A“.Ú%ðüx<Á48"ýŇÎhÁdL˜þ8À7ì-— ðTÛ%È‚ëÞ||‚)Ø7ÜE¯ÜÁB6¬²ÑeÎÜvì|{ Œgy\Åà ÈB_ɧÞÁ|%” QE7C¸mÿÊÄ^ô…ì'¬ÀÕèªnC>x”@6Då€tÈ|Â#ô@ÆC¦b•è:18‚w¼G&<Á'¨G‰ÌÌx0GQàxBµò”t0c¼"øAÄ@Á@—"‚T ÌÃ+z®Àþ_AL#$&nƒ1äÀTA<QÁjÙˆxâtfâ"Ö!"ÊlÌRb$v¢rAÏu˜tyWb¯Š˜ð×v.Ê}9±žl×xN6{„nާsv×} Êp®¡¦€ á¶Bv]ŠéWpaW§4ör^çk¡¶}ý—göçærÃoùˆ©Øsù0rÕ–ô,Ãÿ\GD4´à@"|ðÁà@†…O0{€e4…1¶]Á6(„£XÆðSl@gÌ&LÃ\÷Ï8@´GiÜè< €Á€Ë¬@!ÈÁ‹¸Q LAá2Flˆô¤¢6Eìý£O>©¤LÊ䲯AäÌÚl+tÀ}¬éOÕ­f¬é8À5!5 \{hÅZì.´ê]ÈÆ¸ ÐjqÄF'è€#¨ˆÝÁ8BŒ¥sÜ\÷”Wâ, Q4°øc1Ü-negTÆ&˜BhdlCTÔ¨Û²@zîtpÃ%xÂΔpƒV†“òl‚ÿ=E1µ|‚¤¯jY ìf¬ÆtÃ#A´—oƒ¤é ü…T‚ CRPÂÈØ”Á<A8ÈÙF„›à!& ,=¿ˆ¹$Áßî(B­".D„€,“ Æg‚(V§ÁdÛÄeêŽOr( áÐsc•6¬xűB‡(‰€¾x*9‚.©„V‰'‡#ºàŽ!"È&²3ð£‰ìÿº, !ÚX%N*© kîå£ ˆ–‚&Zé%’¨é“¤†¥I£2et%„Z¢› e´Ïj(5´ÏJ9ÝÔЛlèS‚`ÔKOõ“TUË(Ó@ýÓ¦$ÅtÕJ[US†4õs!Tù4ÕTKWµÉÔ_’´'Xús×W+Ý "eSÅ5Öf‘5ÔN}]VZo©µYa«éuV[sÕ–ZX'%õØP[–[h (Pk¥¥TŸä¢ª/,ñƒCpê’OäèfŠZ¶© * *¨  Ò '*‡#v
”©eâq‹¨+Èá€xNÆÌ½+øª˜±½>!@7ݸ! `7ÿú ¦˜ŠÙÍçb6™ æÈƹèb2Ë å3>é°…`ZØ`.P¦* Œ,«Š3ÙD.ùÃLg¿Ž‹çŒç"ûn& kÂÞáœcAÂѯ V Æpö G7æ¾cÈÁîûŒZî@P½b[­ãދ鄾û†pî9Tü¤›©·»›;:Qq•9îØã“9ê[EnÎ?¡ëò :ùduኧ˜OÈÞ>¾>Ùd77øº¹iìp­®³rÃjúæÝ4¨„ Î\ÁÚX•K@$˜9¢X³€"øèâˆãЉ5ú*âÅJ*hcŽXÀ!PÐà_OŒdŨ‹Üÿd'É2`µ¥”d#  G¸(@„1ÉC@‚A *%.Éàe²@ŽäQ ¬H=âA~‚*„T :x(.ê2ü MRAb&2y”G>2(‚1Qy‰KECn$ˆ#©WO Ee9Å,F+wh™Ì<ÿ€s¦Ä[b³?2FEˆÌ nê³›Tº2<ÿ­šP¤ õdºì’V47¡Ç.ÂЃ±„N”ŒAP*ƒyT!ÀA<äà¼`d…Rføã?a(7ÂŒf4“·@Öá €#ÃHݘ²eÔåP é·oîEsºÁŒ)᣿i%²sžgqµ½¸S6¦lg0¤F ™µµ¡ŒÏð†ÚäNIš§MnÖ ´iºaœ„!$_6‹œ!î•%n&]ÉSN=¢¥ßÈKH|úÅnöI¯}Ôé3ÉdmnÂÄãnÈûÍà`Î/õ D ¨pÃp°…6\‘½ƒÔ†"^­¬¢]`A|ñ!¬¡rë"*P¢`0#œpÃešæžLx5s›zÿœ×¥i”1ûë_I™eÀP} ‰1y` +øÔ nP‚¡H.¥,›®Š^äI_u.¹.ÄY<‰WºtR×b«®Tf´(5åhYYV¥º2ª’Å®3+¦rm¶vüäXñéÍXN‰™Íõ©WyËÇ*”šÃŒ,(OÙÎgîÖœµUfRyYZ¼–cjeWY 9‘5>°Ø¬A¸D晕Z¨I1Ušl0ÓêÔQ7+'v•v#·Lç‘2“ÍwÿØe¸e6 l§giHƤ6Ø»¤fßö]ØîE3®ÌdjûÂëQ⦴¸‘;ÃkÈL„¹äÍZ}ÂcÊú`N—‡dÍÌd£ÿ_B&Ò•nù,m7à˜;<ñÕÌ»=CÜôÍïUïlÞ»íq‹›¼ã]·ßH{_èfM7}S§4Wéú‘ÿ~Yrú ¢•8EWA]ëR4Q¨DäP>ðÁhB ÐpwH0ŘF—z4Új§Fš7°#«ä©O}¡ ”L.»F™€8µ R5BAŸÑ"7%”RHÖžªI¥j2õ°&±&é*‘câÓZPía*×ÍîvP¥QâÕƒÈÄ®ŠuˆNõûÜWøô•:®)ý*³–Q׺&þÈÊp †np£Å(‚7:ІyT 安‡›=ÿÎ:npµ|=I·@XÖ¤m÷¶G”î’Ú—ìP!É)\×+»xÈõ[ÏœMÈt릻=·ï]û6Ýɾ÷õÑå”ÜU”W˜èy¸n:¹›`÷9»y8aMNô”²*î½=ò‡/Lƒ»þß™ùlœ‰9~ûe2‡n!þÞï†.é=¤4Ñc i”Ú©Ü`¶¡kt¬ n(Î3º! á® Ž€ öiçræ22áêCŠ6¡>:!pº¡t Æ=:lº!+ŠaPüÇ⦼ÈJhPòìÎRÂÍdŠÎ ìÉÂ…ð¨n¨oOBÈ$Ön„œ®†ü®%Dè ÁÿŠ­th¥ÞÊîrèˆjȇH( ‡”舄ªªžÈåèîîÈPˆ kíÈp ‹H…ÐLªìJ'>à'¢"! A ø @ 4  Ä&€cäø‚BÕ Æ T-2 ‘ÛxM74CÕVm·T3ü¦*t£BÃ÷L‰³fæm„œXÆÙ\ÉÙœ)µtÃÚBk×fQõ:ñ‡ºÔ‰“ #¹ÖmÜÌþXqfй|æi0‘‹g(cݶmÛF륑´|=ª/ºúmܼú|B¢1ø¾ÑgοrIý Ÿ‚ÍáºQ˜†m. V ê"¹¾)Øà¶t@J‚Áüÿà°„¢uºd,ð§*ŽÀÚ!›ÀòÚ ¼á¤ÁŠ ^A=jŒ$HJO®T” ì´Jî¢J‡¥&"hðЊé¾LÑrÅZ…[–EÊÔLY’®\°¥¦üD阌€\*]\²WÆ VÞEÌ<¥ÎêÐͰì¥|òЈ²\ÞÅU„2)ieR†%^¢¬¥˜2[´\¾ XÚ¬]fò(eÒ\–®Êª+yˆ!¯¯ŠÀ_‚¡¦!" Üàæ:)ì!•‚âdÚi»²+´Ú)Q‘/l$’ »Ü 72QÕÐH1±+’Ї¸¨qf„«³Â¬«Ûz‹‡K# ”¤ñ¼ü¾\ÿIpÄ þ ÄÜú¦Í#ÿ(ËéÖ.3|¤“Ô 3UKœ|¦÷,þª¯¿DîöÆëüJñ»ÚÆcÑ™$šÊË•¬¯¹¢©øp kº$¥¡6!úF2`kݲ#h`HV!±’5& @º`"áÀ Ô D¡ :Áü .LI*€rP  rÀ¶ XÅŠîËäp"ÊL^t"Ѡ΂ڪ$PìïBì†þ. ³p¥hBȯ…$h —„h‰¶Ð­0ôë^ÂÊC…L‰*ÔB'è!X”ƒ,”즮î~(§†Ì«˜ŠF¯0 u…v…' ñªáä ÿàdÌè«1Ê&;ä(2SÍÝX͵ÀKVA)ƒÁF–2Wר‚ed‹¶hÓ”tMðw\Ѻ”­ØÎíÖ>²x2‡K±¯0Ô¯Osâ Ný0§5z)“ˆk·Æ –²| )µ^óùNK’n¯C„)ìôµàn^Ó³æ›FË3¿Ný®‹þt ÷ˆ-Ýã¼"#¶€ ƒ¦+¡` Îǃcúôbœ@Í4f CŽ8r`² Àš¸Õrrà¡8aü!#€Ú®Õ‚ÄN𤤞p% ô‚ØJPRÅXšì%Ñÿ ¦n§ ©œÊ$=¨¬¬jQBô!å­ëª€j&ÄŽªÖ ¥öN†NR`e©N²ï–‰vpc{Ô^gT¥v%–^?t¨¶*bI‚Ð E"h!'–aŠ® *Âa-4@ä`d¡øÀbp£›Ã² Ql(Qi̲P ¹£dÑ-ŠOÚ‚¢”\ë²"ž€¸¢ÉÒÍCœ6µtá M= é»")1SQ×lq/„Gâþï3eƒúò+ºæ¶·´¯·¨C0x-šP CðF߆¯—$§4d#>Ëá¾Ïu/Fõ8'#þ\‰.[=æ¦uÈK„ÃCÀ–á&#À‚s5g&AÄÿ ¾ ¾«Vý"ôs».ÿ鸮MXfpE5Í+OïKYÕºxÓÀ1F¨MPóBµOûªsä^ )9ÏಖE•µNµS}Ï×tMûC¿ÄMâ$©¿ÊËgÐÙnÏÕI‘ÔI:Õ•,àªO½^1mkf”ÿfÆá˜IÝ€Ž \Á Ðc¼aŠ "~u5&µºâaÖ  ºç š àÀŽ€¶µ–ÒV"I™?’¾$Ž  ‚äX¦F OŠ.ì &Ðò‚ᬇÜwHSV$!eCGª8ÖÈ o /cÍÐd –PlÈéÖNbOâ"\H cT«†ˆ‡ÊJªŒP [ÿÂètª`;vžï/dÅcóΧ¶ ¡†«Á Ô *@¦¡¢¡`ö°jábð3šq±8:+@ºjÉBNÛØÇA6ðŒC5ýn;$:ñÖµ”³OŸ­±«Ýd:·ÍP3sÛ„ËúöØÏc/9×m}¤÷ð8P¹VIt‹Z¹œ§'nzºÿÙ•”QÍ­àrÉC¦:9UUí 9£«,5­­¼Zó½lNJgº¡Æa Ž@"@nCÄDü£mŒ£q‚ââÁ€  ø`”YšÀ à˜{Ö€î@¶ÕÚÀ ¼¡²t üàÖÿÀ@ü  Và V€6² ÄW%Þð%„.†Þ™ø¬‚Ó̃KxZZ’UT4‡ÄÙ ½ê…˜ ÷Ù„þGçNbM‚hôå銌¶ÚÇ e Ù×ðÒ9Eә사#f¨}Ów¼…›»±°¼G!ðWV(åv"ñ~Â@bâa,¦Aªf¡ü`@0ËjdC·øÂ ¶ g6€*V¶z:]Qû†ØNS[SlÇ«·¼¸SM)ݪB1x/ÃÅ‘Ñ-ÝC¸83ÃW+¾(*m“ 7Ž2‰?NÜŒš>ˆs‰GµÌz(„£ßŒSÆÍ ½º1ªÇqn+WUYµ¼€Ñ¼†ü¼ˆÜõÿLœì«ùvšÿ”a厠è" ÀÚ`l<£_ÂÕ>I¨µ" 254Šy"]X€™ !1Û+¶áŒà\á "À" ¶¡ :¹(²¡ V ‚:² FE_—ž¥ ‚îù»ËÙÈ®xåV€^NåÒ’„{'q’_ ÎÖe,•NÐl²·ó—½2Êôl~ÑŽ2©ÅÏhjézðY (ÙŒe%Õg¥,1ý¥þ5…)”B¿¥¥²e¦¶ìÍB=€ÔJêO_¤è D:‡Íˆ-ª&A„í3¦Àó’*<ú/­fJ÷"TÍ–[’TzfˆgÞœ‡8§ùÀ8T9œœHÿË“B5µ CtY1œÉ£ÿ^dѱ”°V‘óPá¯Üª"TïKUE)¢<â³8kðfÇ#ŒúV©ù¼1¼Ä‹7'^”ˆÚ4ÝK@|zúÞš5$çÍë­¡sÂ'^“A º@Á àö>Ž`cš`¤áá ê¢KHǘ›`¶XÀ¼¡ä"¦—Ûz’’Ú—+Àz•y†@´×‡y+X!0]Fª§ôÉr¬_'ôR[$9¨ëºÐ† ‡&¨déndï.µ¸U4‰Vò馹‰ø¾F}h‰tîÔ0ëV”§^ô ›…z4½úó½0 ÿ4Gáþì.6_Þ» C¢‡Ò„g•aº ¢@b bÌ]1¶Ì(¢«‚*X£*úÈ„xR ¿C—νe£¾’Cæõ}­l.t¦xdÃyDI1cØqWñèÿ¨k.¶4=†Í."câ)<#+0Nü#;0„ÿokXÃ8žûCî< Â)‹7pB¼;Á&(+¦LY¸U 'ܸêŽÄpñ&LXÕpÃUñŠAÌxg⪇!*“¸bE‰ W¹)¶QÙI‚*³XðNÏ•n86ÄQ1¤L…wŠ!6l «6+ ÉQ ‘Ÿ…¬Ž8@ ÇU«¶Å;rDšToÞ"ÿñDÚ ?Û¼e[‘íU¶9šBÖÛÚ&m*䈇¬‘#~ȆÃ8œ2Õ —e2¨2˜1G–̹ÚfÍÔ6‡.C-3é˜QSC]u5Z©1Óª¶2ì×¶cKþ¼;täÈ£?ÓþMšxñã£GgNܳòàš9ƒ6nº9d垣3×<ü8qãÝy‡_¾9{ôã×+ÏÜü7uï¾%¯.óvÓéé#·¾ý>û݆×_yºÍ†[ke,ÚjÔ,óD<ÁdôÅ6 %32|tb“Å`DÐ@(P0  b0áT  ‰ñ„sGˆápG<-"ÎàF8åØBI7f4A8(ÿtÒJ.ÙaFühŠYä¡‹.ÆCÀ+ZyÐQ „#Á¬BF‹-”Ô8ñ¬²É*Á ’•nÄã•–3º8N&QpA ­‚ÃJIáI@í$$G%¥ÌŸFUTL0ÅìùÕC;9dÑŒˆT‘M Y”&•‘–p› y ’A‘&u‘M<¦‰dH0%•¨G*3#Má Ǩ q WG`R1VHlÖ’Q1¶V Ø+9ä`LaÛÀAumSmÒTà‡dÓ„1Ù#Ç®>ZL&ŸDzÅ*°Y ™xS7Ñâ û‚²k³•1[mƒÖÙn’F_iùÑ–_uÁÿÍWÍ2©•րŲ¥Ùmh l­m,²À"¯6r"¿æÙÀ³L[˶ÑðÊ1S2k8ç†àÎL²Í+¿,sn*ãæ±lA“¹"L` ‚H`jAtà ^™]1¦A=H &âÑ6æÑp)BT8D´Ä¬<¢ÙøJIÖ‹KÀÂ[kÈA\Ah€ÁÞðÊ Jÿ,AE8ÈŠðlãŸpì4  †T‚„IAÁ<æ`€9Œ#W‡Ìðˆ.läQVE&‚SbßÝCöp©OРÉø‚H!3PÕV!1®P8TDt²7~À0㦖h5GPbqè„§Šáˆ9 ¡›½Ãd1ð¡$ñ®Ð„*)}Eì!NHc•àà !„° R8@+L‘f3@¨r˜Ç'¢ µ¤:0†\Á?ÀžÐ€Àp†L 0W€¤ÕVt—nÂ6r°Ä/£ ðCD!˜ä®€~¨@аCV&ÿ‘CPmÆšNRg4+e.óƒðHçÀž9°ÎIµ¯µŒfµùšk`“y¬5,p‚"ï™™míòJ™ÔBczZ°^6‘¼j6µØ·2T½Àj_Ä#xôªüåY²Ù'ØõEã¼kB_ Û¼ž`¡>í_Iâëõ0óqž³ kPãJ®[œ&ƒrƒŒGº`=‚Û Á¸’„.h !ʘFЉyD@r€"&àdBr \`ÒPwP+°,PÆ"vTOm lwE°þs8Ðrð ­Ð ›sŸàf jp%q¾ ÿ²Ðhw°+{pbð!¯à «` ¬°",Päpâu• G )EÀ+øs€«Æð "B#| G€8`@w°b` bFƒ¢‰0ÝPwÐ •@Vа s 'r@ {@”ðA8€/f g+Ågà Ð \@#Ðb  kp…ê” û€ ް+ñs¬P/z?%,pð ¡Þp™Ð b6Q{ð ‡Un0 ,p‡^wÅàÝ€U`‡Êð Á°ŸÐ | Ûsnd+ÐCÝ€ (™`.+P?Я_ÿäâÙ0•PêpÆ€‹g0™0o´ ü\p àøÓÌmÀ® êÅpà ¯p-(9 EúÂ/ü ¡”LÿR1­aH 1åá`+–a¡ä_Ü#¦a¬tcÊdc¶L"¹J3’&b)ºÄIâb<¶·TL%6cœ1aÎq0'É’êÑ/ù‘4IIËTd&KÎLÍô“ô1MMãz v³8 Á0>B°lÐÝð Ÿ Ÿ= q§é'E òæ ñ´ WÐ Cð Åp3ë¸Ð#¶Ò ”ð¨gP ÏÀ1Wyÿ¹`9+²{à_Ð a`½`Y ñapÈ!² à 4ð ó³ ݰ²°e+1 «PE4`šÓf¦ÀJ8W Ü@q°b…"ñ žpÊ€&ŽÃàZñ Ü€¹@Œr0;Óp¾ †_‘&W`ºà ?« WPƒ¶ò vxWb°qíR•ðJ8 ŽÀ!¢:n ÍpÝÐ&i>º`§chÝðšà1Ÿp(@ ¨ÆÁ0b@Þ=D± ™` ²°+ ‘"Bà%°9rž™ q@”à @{9+ ®P°ì¸ÿéÅm GPuð pP Ù`~±7X B€ ‘£+¾0MÐÙpà¿=y·,ˆp kwG9:š‚H—A¢”ª¡LD3|¯'6ÁÇ4¤JÚa3i”üJIù0RKÇ”“@9J Sb)رH…jx€jI ’7±Ôâñ’˜„¦·0Äô`$ù`ƒ0ϤJ“Z›§H¡a J– ×'BÀÅp r 'B€N_ @Á"ñŽ`>±: (u ô7 r°"á0‡P!h%• ­ ¼é`° %r0 Ul6± ÃY ÿ(zµ°wÀŽ€ ¶s:aP`°¸ —² NàV#6Q\—` ÐÃU ™ ¾p‡9Ò& s@—²R q†'-â"gðÙp-² Gð Ó #w`@”Üé :ž°80:R®`wpjW™Àä s^‘ C°«Pðb%« BPŽ5{Ð ,=.òÞp‰Ú'ãP `V¶b$[ø Úú'"Q£ðC"¶Ò ¦@ 5W˜ r@{ A€u)òƒ½p o%:¾ gŸ>hA( ·øø e± mÀ 3ÿspÛ 0¯PuÙ@(, Và,äMª]K°äP,°v~0à,p¥rxüå/1§šW”ÐÁ’·Ñ–’Ô©8ƒ1rÚ1ªÇ4RS2ÃÇ»‘6Ä ‘Ë禽ë1‘W3ž|i5!³4 &3BãH¾«1¢¼§'4™G1é{)ãy;s3HC0Í‹`–g`H³5àÛ½êÛ4G¶zÙ»oŠ63§;ašô¤g MF*¾ø ‡`nÁ° Q0 [ !pñtàдxPÞ ¬ ¼³Q ´#ñpŸðØÐ&‘²ÅP~¹Ž4Ýðÿ T Ä¶à ‘¢'{Cv*µ)¯ GðásÀf+'–c——ph2#a"ß 't{à›Ý`+[°Àã°:Óú ·Hˆ %°:_± {ÐÙð?`aOk&b›Å,ÀÝ+%‘Çfcg sJ)¤9Ž ‹²ò–Àfg®ñ ²åu0]@ì@BÀ ƒpà†Å;<÷{Ài2#²À6:í°Š%'™PGÐ.m‚õò ÝpwxÛIP`+@5»_€W°V`¥Ù` —P•`Ùràÿ( ÅÐÎÓ ú¸¯ ¯P ¦0Fjq{@ºp/¢kóG`¥W'ºCPGZÒÀÁP¦w¦žÊ’ì¡|°çº.v0´T=ù¦öÁócÉ¡L¾ñ¨æñÐ!Ùb&¨&ÇÑ-»0ÆLí¼aÑðALÆKD ÑŸ“~zx´ÄJŽ7¦„c›”K+Ö§Ê’´{bÆd3ó}v³"µ Ù#?ÓPNð(0 Mm( Ÿ •R™@O#Ã~à,`GO2mð‘.b qà g@‘Ýp…)Q 4`J!½F0%±&ݰ¡kí)ÊP‡`ÿo!Eo=*iÒ C@o{Rähü! ”8 :` °bë‡ð¡OP'Ŧ°ž€kÝ!%QÀ x’wÐ  0ÀŠ’ SÐ 4±ÅP`` Ý™PV— Åp‡v¹ ò¼ «N Æ PÊBÅàœÍÜàö U`µwe0Ö{Àžo\€gÞ3"¶ðÕ1µ]p ‘ e½¶Ð K ™-päp+pCðBà=âÒk°kŽàP¯à¯ÀÍq¸½0ú FF@¹(ÐÐ,Ð9`´0¥Mÿ똣GPÅfÉ90 Ù/2¶“>¶aŽg”á½Vs4–74!4Y½Ð¼¤ÓmK'Ö“1Fcmb>Αö8–a+9¨Ïd‘?¹å&ÖII ùc=.clÞäy ä9y”1ùœŠ” “rYî3‚÷97M6#›à–_Ð… ]Ð~@$X":º–q!Np` \Ûp8`°°ÖÐ;R€ÍP:ÅŸ@°¯ð9RŽPÐ&2µp°p€ÅÝ@Äð ¯À !Uà-%` ;P®À™DRçe›PA@ Uÿ ípM=Ñ  [p4@àh2{°à C?w²iáåuÅÀ ŽÐ| uù Bc7eŽ\êTÅ U Cpd)'°@Ä@ í’¡½ T ¸š­ð¯ 'ãÐ 7õß!êD¡` …: Žq€4² ² Bà ÌÍ&ŽÀ ]??ü² í`p1kÌ` ínö­²G_kñ²ðäP[Þ@ÝðZ04Û°GÀ _ GPëhíqpà„mpŽ@ Žð, ,àSŽ QÀ@`ÿSx²Ùpøà¸Zð`Pj G`àU@ 3+½“ñÏ™6X§…gLJçvŠ·LÈG¾[Ã|ñÛ6Æg}óH|È÷úPC}Ê«½±Ìg¾­ú¾ç|¸_`ƒzÛ`ž¯3Ư2æ{ü­¯{Á¯ûÊ¿¾¨—3Ðwübãû²g`¼ï4ÅÏýbþ®‘{9Ó¦ ² óN6ût8ð  % E"D2 9ð4@+ø‰ÐŬKp¼ VKâ…»Ì{4âÝq3áÀ£G0ÅË.œŸ/T4˜°jÓºhØ6!^‹9@ºš.ÿX¸ !/MSÖsBK—¾ lB0—|l™ãæÎ„#—\Ùñ¶)x](¡ˆRìE•ºk3ñΦ":$™8rÄJ·bñV­r%-ƒŸ ~¶aqÄéÙÞrxóãl0oÒqUaN¼+®¼Z#MY¦ Œ¹¤ 8¤9b…†¦’^‰gŽqâ™æ€5*ðÆ…¤qàˆ.ŽÿÈá?r0ÆŠ†€ÃC)àð£€l Š Œñæ•mr¨  XðÆ›#ŠÈ… Ž¢ˆ2Š,4@±”2ª1òI'‹ŒÒHjš\¦šjh±²ÈªìRÊ*§Ä2L)›4²jÄLóL'Ñ,rÍ2›\³Í0«4óL2Å,SÏ8§óN,ÑŒRP7ùäÌ6}òLF±ì3NH µóÍ6ã$sQIetÑ=;½óR5¡d“ÓM3¥P3•³É(휔ÔUÝÄTË7Ó¤¥Kj> ˜x:Ñ€› :!†³5.Y¥n`éd3e¦qâ©O>Ù䊦lš£©`¦qƒ²N2éD82Âq£˜=&Ø#:¯6ÿa-X9âqãÁNæèƨ ”Ù¤²N²;££9äg¼âÁá“qº™f£Üèį³Â‰g“n n!eîw‡øäÝÒ",&˜M~òª›MðË :ùd28KN^í‚YàbÆÉä“ÙZÚhnŠyÊá»ÁyŽp0.fŽLÜØaá>™ùãpŠØè“ Î(ff„­mŠêx>¾¬3®š@ާnú)œ|K°É¦Žm©Ý³&ø„²ï8Ú/Zz+œMpxI»UÐ+:»;®ø«“Uh[ƒ Ø&“+¼™Çe޽£ ›0LƘ"ŽçŒ ®½Â•iªó¦ 8r†…6¤8‚“êÊÿ‹€ó ²)¢‡nÎ躓`Æ/_™qpéž`¡’mUI&•³RD±¤ÅQOãl€Ë2¨Ù¾ -³äÞûî·¿š+³´uTC!M3QQ¥l•z?UõÓÌ97EUÕü…³ÿ2ÍiM¼¬¨ªTuNðKà£æ‡ªT p Tàáä$8pzÌ £ê·)Né}‰’ åA FIKUZ5®ô0n7[ ÂLºP‹¦T‚ :ø"Œ÷ µ€W%‰Ðà,^µKÙˆS&F‘`Ü'8- €Ãpp–Ñá& Ó(¸¬#p˜_Æá°pLì>õZ›À&ò•ì&ã8ÀDÿà M€-(F)zM¤'¹6š4Wà¶#¶¿Ìá*èÉNxî°ŠOÌqNÉDvÎØÅ¿NÉJVxêÓWEÿªB±)LË(RøLЦï4§VÂMÑç$Z}ïKCõRQ7jÔuK?š‚Ê%§F•|Y²—¼Õ©†t…æóiú¼ZU¦ž4|4mªHÅwT´~I¬<¥jIqºT^u£NÊ©õìÚÔ£¶•¤æÓ)÷κW¿’5©n%^“ŠÒŽ”®Vý+÷[)§Î•Ö0œpŠÑ‰ZtÂaW+BÏ:q…OT w&(4Úà€ °Ój`E^á‡x„!Š_Y…ó–ôÑG±oPï+l]™ )F•Ð~sB «PXÁ'•pƒLáJ!Ó@»$La #=èOÝÿJ•z_ =AFð˜Võ=jQkJ¤`ýJ +*QŠºŽ_§;Hk˜ ð~ÿCŸ °ŠeÀ1GØB*á€vãèÂ%¶à.q9LˆÁxWtSë„iøa1BÙ-)æ0u.‘ÇUWx¢;Žu»eõ¥$oÙ«¹‹f8–˜Hq}ÛBÄÙ6Q”Žøe–«Æ(#Þ?‚˜‘&ë"^°xÉÊe÷-q;îxc,àûHrãÀâÄÆ!LäÎò,™ OvŽH“¼Â!cZ3“¹6‰6¬bE›™WFƒž–¸›Å=1‹|‹Ž0äèžl¦£€ˆ6Lãcñ(É–]¢´2pÆÿ@D8‘ W|ùž0.q8ŒQ€}íUÞ†7ª"c.Œ—|Ð6^! i°¨Êð ’ƒƒ]=ë™rø¾- zI’õg=R v0±yìä…ZTª"¶K™§•©¨'JŸ0U–v ®??*D— P§R5¦Ríy¶O¥.“§ýÇRÈâ‰~uŠUõþÔèJ ²ŠJ ýJêSgJ~—’“X1¨¥íÁð ›©…p°S‹0ú,³>ù‹2À4áÜ$Á í@ˆâ—  ß$º4IûÛ±žÀ–_¼JÃc’¬åaX¤¿IГHö ÀõÀŠ{¢›ð£ûœ†)0å°?úkŠò#ñpÿ·/¢ˆ¡ˆùs·ã?Œ¡¼¿Š™¤.Â"·°?Á‰±À‰¿.ò·ã¢—ýë?ó¿†Áx*”?ŸÙ¿Ÿ›$K’¤¢¹Šdz 7Û»Uàʨ£îò((‚èè„h1‚¨„À„"Є 1(‚0‚È·#È)?(‚`è†Êq—=˜28(o°$³‚"8‚ hƒ6ðˆ€iè:?`øÖ:‚{Іšr’ç4Ê[,ò™*Kñ z•N3=>‘4ÚžÂ:©+A©³R«ò ÅMª4᪞r’NìÄÍ«( ‰š™BJ¨Wð>à†"8&»)†8L5ðƒ`¨‘1 X0úÚ†#P‡êˆ€;,€)Ôñ†ú¨W° (J8V˜'8,XéZQÄ%a§ºÿ’\Á¥áŠ’¨Ðš(ípƒ%ò¾rã ááÈ(Ø °¨¢ h™Št?äúÇ÷êHŽ[A¢«0ýë¸û3‰ŠÑ¥r¢årV»GµAþ›«Øˆ‰*# ô@’ôH¤¿iâ¿ïK®‰š%‘9jòH•Ä%ÁqÊ–cH…A|¯;º#iª°¸éÉ/‚?»™%Ã"üÂ@”ÃíÀ@†DA™‘$€ƒGX#¸§Â[Çå†`‚-h>ˆÅ"cK™ iÆä•ËáŒb˜'ÀkƒØ9‚58Ú6°±Žê8(<+èÃ>lË><8ðɬµÂ)©"©¦ÊÞÖûÿÌØT“ãü“¡ F¾ÇÌã*žz,¯ ¬¥ò©EÆO¼ÌȲ<¤B*ÇÊÅÉ *W¤¼º=E¹ DZ²ÌÁz*ÂmDa4+²\´²)°²)Å*´j|Û¿õ«Ä©¹ÒÆ´ºÌhTÔÌÅÌ`\«´“+Y†ÊÂw¬Í›%â•60Bð ¿w9€÷ÈJcØmÑ.°pâl›ˆDAt?±iI·¸8þ¤³˜ƒòl?]ºGb@ä¸ö‹I¼9@mû#uS@þ#¹A“ü¤3"¢; ¤»ÁüÖq½ØãÚÇuÐm¦‹ûÀ£³W4jØo…'£<–´É8¦¢I@žü6ÿÑ`‚#€‹ èŠ)¨má•OÈ(€Ø‚WPƒ;4 鸂LX…ÆÂ# Syóè9¨ˆÒ¨²ˆi0Z>Ã@»#p+8‚>ÄÓØ«”C¾(W€ƒÆ\ë„z?ÕŸPÅC³Å”*¾ZÕ=椔“ÚÍçT”ÿy5@=Y½UT³ J‹µ*ƵIIÎJœ´YM´JL]G£µ8~NÝDU`k *Nr¼>5H3MâS½c@T89©ÿ¡Nn¬†'¸¤§ %ŠQ†5ÜÈLòŠ%’£|t—xØ?b"ሠò-¼àHüSß &XüÝIþdIþÔÞ4Ú¹pùÿ­[¾‰Š±‰n=‹Ý°‰¿ ¹¬×†±I…É/’–dÉWÒ÷*Ò¿}ÑluHõ [Xñà?3ŠUîæ…1…Q…uÉ•Qï«v܈5ˆYV¨„$…9˜ƒbØ|„ìŽJàº6h‚(ËaG¿p;…Pˆ6Pƒh‚ˆ(lâŒðCpì¨$Y’(1`S°ý“IÕ+«âÛÐM+· *@µÊÎØœ”‚Ù´M06UÓ‹8=X-½YóÌÛücä<øq5²íMácêÞûJpÁþÃ×]ª˜``×ìÅV&Oö –UAkæOÇ^àüsP’C:}¥ÓæÈ%úsf‰í¿;h¸¥¤í/¢UêI´ü#°ÐX]1£ig,º=Jùr×Í’RÀ«ŽKXJ…аXÛºƒ(¾d50†«0|–ˆ‚ÕZZ8p^Á'EÃ=ÀL€Âlh‚è‚’WXÙéá$‹Cû(‚L²àx¤¥Ê¨ô)ˆ³lhžJ‘âè1ÿN4ÜNìŸ[“ Gö  6ÛP}Õ3©E°âðeŒÛ®Íª·Å©ªÅ&Ù©]Ä+f¼¼j0ÅŸ¢F¼úÆ_«Àu¬V̼oü«Ád«ÄÚÄm ÅÉåE!7Mä+k´Ü¯«B+FÀeò#Å¿ª*”"q$¿rM<j¡¸’'ˆÈ;øÈ@Ãm¸ ð€¯ÐÚn Pƶ pwqÏæ•r]×ïbåý,#Qž¨wµÅ:ÜWìÕ%2 O2ØÈDrôdÞû#g ÉWÇ6nÜŽgf&Œl–¤ÞejI„mÉ4 £Á×Y–_k^Pæ}lAÚ \^pNÈ“;È™qÿÊ¢Ûß«¨ÁUjÑÀé†ó^-¸Õâ(DÉœ0ª„#ˆ‚À<‚áFת²Ùi(ô$0‹møÂÕñ†Ö1†¨5Ĩ#à•+õKš9jŠ"˜aåP&Âí;€aÅ{iPê6*"ÿÜW£âAÎâÑKë ÊÜc¾®ê[Í\#”ß»p\ =¡.¾=©Ö«½Ö{xæ NËb‡=±})›ÖŸ^³x[c)2njÒKø›ŽêFeµìÑÍ.¡…0ó% 5€‚xˆZè† (0€#ð€MÀ!íª€p4tÀ–Âp 0  "‡ ϧ0×'ª8•öý|#éÍI}ÿ¿ýÞ[ö@rý.{Éì4úóPÇ›2z£5‰üæÈ&ôMgÉE3¢¤ƒ%tåt´ÉâQwEêåuþãXÇž¦CÂ@Ÿ©Xm¸^¦EÉ–+|¥$7H§"ø–š‰?ˆ†˜»Óà#`N0‚Z°(Žé®xLÖ™… á¸–O¨„Y²-ðƒ5@8øÊ$s‹ÒRîš(w«t=LÌ{"2]…+H1»‰â>ž¶jŸ/v•Ú„ÁÍÛwñ¯Rq¶¥cGMÍåìÔGÑ´Zx¤Ž5ÝCa{yWed¬Ž½Ó›žQµÄ¤n½Üˆ2eª•¡FРÀjl˜0!Âÿ øpaE‹V›8¢Ã3Rl¸ñ#­‚P+³ŒZƒ—®Ü¹NYŽhâÅ VÈ%óŠS¬¨Ñxn‚6­g‘`LS憧›b-l¶hO™×ÊÂM°ygB¸´fã] /S8-܆³nU]¯uÕÖW·fܹi»kØïXÁ€ÉÚŒ7aŽ_šÝ6[Ón<³wËZ7®ì8²p[à½SÌìªËኡ= ÷¬]ËhÑþµYlUÙÓšK«Õ|–oìÕ¦Íæ®™»ìdÓ«ÆU~ÍznØñδ‰$Þ¸L™îð†HM…b™'\ñv$‹âO¯Z¥ìŽœ#øD€ÿsäHe©kè™ €~°P7[˜Ȃڙ³Š7Ó¬b_¬øÑ„7p˜gÞ ä MæáÇ™ÝQFJ‚(Ö€òÑ@)²T - ´ŒC&娒6ZäãC=–ÔµDQÉØÒŒ)Ñ(P“JÞ%“ÉcŒÕHMŠWV³Œ@N‚ùeG8~‰e,¡X&–gÒ¨PY¦f˜ZBIešUæ‰âs®I&Ÿy¾ žjÆé§˜tîy(£m:¹å£hÆùd MÔ蜔2ª¤B[&ÉåJSfj&Ž•2jš }D͘´°†d›lÓÓ4¬²T<%øáG8Á æk0QáÿÚkO=Él<Ü̲ýMnE;^¸™xVYsøzG<©E»ì&¡Mðd´0A0ž1NfnPÖí*~ÝäF-ÜÆ›–¹¦ñϹuÍ1Áˆ‘Õ·qKY{9FŸèO1›ãð*âñY×ôI<8|RnOpÆßÙ¿g8Ï&ñ²fpYËSL&s—ÉÌpL1áœQñeÙN€sjâu³à*ÌNÀÚÇÛòcE'MT7Å@V‹¬ÀqÅ5'ƒC&Fp„+pÅðÞ¡Ì'gÑÄ6ndã «¨\mÒx¯ÁÞø!ØÃmqè!8¨°ŒreøEEpKQ`Œa@À³p'ì¡cÁ(Ë'œ@€€e8@xv+ˆEefFá`<¤_£s¨€(J° 7,8ÏV±ÿ‰ T` ÙXnÒ °à µÙ„Ö&AtÝ¡X_î•|bÒèĦUAAÝrÌ'¼ÁŠUtc=)ÆšðŠ¥…ãd FŒÁ ˆe¦p0AÒ&à†ŠU€ÙèÆÁF¶ŠÈa€ÌÄà JTñíÁA1*Q€ª9&8¸&"Ф,’ÃÐêR>cr¸Üp84ÃsÀ¤$»á>£¸QF'Šp pÃ4Yé„7`Á ´œÁÞ(€'„Ѐu¢ ˆ`…,9H3•$%Z6–¤µ‚m¸P÷ GPA Ê™Æ6ÔƒaxÓ ,ØU‘ÿ¸aÓØ¢~#œ® W€Â7†P€ÓÁ!ÞøF<‘¡5dcœ¨BŽP„¼Â$i‹L2¾ì­ $Ó{I¤ä'CY©PU¢T4Õ¿önyÆ»iùدz@ÚMagT§²O}÷[*d =’ôOuæ³÷rÄÕçaÏ©0úÞŽdêÕ¥*H`E_ŽÐ'îÁî©òkk]u7WûQc8’ àR*øÁˆˆB…GH Nè U¦q€"ðÁ¹È¦á†iL£BÐCÖÀÙ3B¡]` ïðh€cÏÂI;„…8æ`ÐBj¢Œ€™â BXE ÂQÀbÿ+˜"7©Oô§WÊXƒ-æÑŽiØd·pÐ 4pNÀ ¹øB*ÐÊ ø¡&ƒÍ5J|˜ÇÚÓŠ0bx ´ !ØŠ,ÅÐ ôäÅh…1†®TÁ˜ø0ËhЀeY0qˆÌ:`àÃàø¬;ø¢½XÁ8‚Q ö‚äH×&¬’Y`â™Ø„)×ë Jh`ܺC6¾¡Žo#5cŽàèÜåB  Lð±Ôà ÐB6ü28<"4`„7®P€#TB/p„D?ü@—ÐMM   phƒºADø  8ÿˆŒf ¢ØFüÐ@zèÄmN L̃9ðÆìCcÀoÊ `Q K°€¤ÞˆÀ%(ÑWøá,ðF¦Vç"%SNÉ­cw<ã• H½ãñ¶çk'ÊSÂã jä’PªÙŒj ín—%BÕtR¥j’•¬'IA{ÛoB”£êô$B=iPq"w©hGî¥;Ü2v²r¨vW»ÛÔN µÍdlõÙWò7Aô­¨sOJÙQZ·¼ûTªv—[Ù^¨\U£e4@’áF+ÄPµld¥—à†(t€'ÃN PX°XÉ:Ám˜‡žQ'P.Ðÿ ªLüòM€…„ºUŒ.|aP`npà iàÅPxö1\¢ l9À&ŽP€;|6-øDÌp 8¼­em˜Â4d± N`[ †bàc–9aøÆ0: 2l¢ Ø$¸°KD  (ÁVЕ 9¸âeÙÄ4 €8b†B7ÐËnC7Pz¼ Ïă1TxÌYœÁ„CUßÈB¸…~äJ&ÄÁsÿì´Â}¹’ ™$G ¬¬“[ÌL7D"àlL#xƒÅdF1°€èRÀ|B'Hn\˜)9BnQF1t t7„ÌmÌÁ!PÂmìÖtÌAx¸E&@BÜ/>MùÙA'ØÏ|BØ‚TL]ÌŒ/¼ÙkML1AHnà6Ð@‡¬×œ °'ðAè@Pƒ7ÿÈ;œZ ÎA&ðØÇ¼Ç8 t'À­MüÀ°D@6dƒh \Åå]Á2­Á«ÁAÀ4|ƒÜ¥µAƒ)ÀÃ'­Âô¡À]AxC%H”7ä€J!ëКnÏ¡d[ŽOcJÛ²‘I²m›³ÕIMu !ÒÔù¬JÞUcªDóÊ!ü<¦câ!êÚxON=¡iÚhÚ”Wf:ÏóOhONÍ\MéõìÚjžÕõÄæYÉfÆæLÄK¼KPÃÐDÀÓOtÂjL’O´ÀÌ,…l¤ØcE€1,ºÃCxB%Ã$ÿF1¬€'캤Ö6ÀB|̃ċ h‚7\L·À \‚´‹xHƒ,ÁfØD&€ì„ƒ”ä*ÌLŒ©ŸÁÜuÅh  R0lB·Ì˜ ì]4%|Cž1‹~¬&8_j¸y™'i t˜Â¸·@I~C+̽#4Á¿(X&TÁ!ìkôÄ‚h3à€.ƒ]‚ÃL’~ €,$c´‡1ȘcÄÑ8dã¼tÄÈÈÕðLü@4Í&0K1@¼Bf¸Ð'C„®‚=ÞÁ'dÂh@®À*\AùÙB'à€z”À*ÀTA¨™ÿ8Â,ndBôÀ74Þ‰G&ă)ƒ¼‚„Î|z ª^AÄÁ`Ã¥5~h¦1T€ÃÈA h@IîA&ŒLx"L*?ÑdÃ8¼àÊê¡ë‰ÃuJN)[ráJ ']õŽªD„µq ¨€ À- “øÔžü[PEÊNÑIÃy½Š¢xI¢Ô›©¤Š ,É¿öɹÎë¢ä+”H‰¦´kªÀ„¶ú«¾ú”¹IŠÀ",˜8¬½Z&O¥J¼¹‰¼f,¾¾[–”Û˜\D’P\D§Mt"8€4A¼’2ðR.nÁM$Åt`%tÀÌ9ÌC±fÇø@4Ý*PB1ò4åB7à G1øDGA%p kÀÁì98 lh@hÀ#ÌQø’#”4D„á%BȱXtP‚Œ²i¸£‚ª§[|‚ØAÁv™ƒ/˜BïD€,€´ja\ø€,H P×ÈÂ@ ðv9´A ÌàÀD 9ð PsÙ´Ð@`à dÙGÿU‚#PWMTÀ%ƒ'Ѐä@6Áþòå² +´ÁuÁ<ØÇyÀ%ÌáÂÁ‡x§Ó€ð4Î'Ä —O Šï(ÛL„Ï0ÇŽÆpF`ÊÂqŠ¿1æ¾[e,dÒN¦àõeʉ˜ªD[£HÛºiµ›–lÛ¶óh›º›Â}»ìõ»z[¶æÛJ°û´÷¦\›¤›*Ûµµë¸ñû·©„JÁ£kÁQIh¦ñÏÄXüY%è,øQXß!xÜDOE|C;hA4ÔcU€%¨Á3À²´ƒ@Æ~@( Ü…_à@%@P¤¶¤ËhAJÿáÆzC/€|1K8k#TBçA“8B.@Æ ‹ÒÓ@À˜èØmpÂø»ÃX‚iÔ…/-À74ƒèÇì:ÉÂ(vK4ÈBPWÛä‘#XÂ6-|™#xà =,TA/ôÇzxƒ#TÁ’éG}áw˜è4|B2Ð}°<Ä|TÁ%85,ÈÂ8S17̃,@üPÒìƒ#+05Oà@8B‹WÌå-ðÁ*”‹xôBøAO 7Xˆ~ kàÀ*h@/|pBǬ‚:´Ãœ+¬¢7è•w uuÃxtÃ+AQ À(Èÿ´6¥š¬3*&Ð@,T%Àñm%QÄ9`VTx•핟"ÄP8v$‘lÙXh¸‚°‚·lWÔ¸Ê!-â´2#G‚Bʨ2ÕªQ[Irdµ•Ôd¶\Ië&KœehµìY­§K›/kΔ¹ò(Q˜5kÒœ9RhÌ—R©²Œú4éT›G‡¶´šu«Ó°$·R5ꕤK˜Sc¢…)T-Û°L‘’- /K¨`Í’uº–«]µccÒ ¼–lb¥}‘Æ5Êña«…±þõKr§µjËls厲9&(+6!Þª;áV…Û¤ìN°x©ã…“ƒ(ÇÙáóÇÉ„ÐñP·i3¡E°ÿ;Äã N8ô¬š}G÷ôqWâ­.f,Bµ[˜ð ÈœÚÅâmŠGýLkÔsäl›“éʄџœD—)œ+Â)æŽWR[N¸9‚YC¸ Šm“5ä@8׸böP›€€iF»cœ`Vù®ˆï °˜`¼¹Bµx” ‡"^‡7Vî‚PcM¸O*ƒ4èN¼Â‰9ÂÁ.|Ìd‚UTSíŒ%2ÉдUÔ+">èp(¦˜â™;ápè&2ùäÄpî;`ŽU„C»ÓRsp¼LøhFVX‰çŠ5Œxáå2ñí8¬[®Ù+¢€6r0æ & ¼#¶`Xñ#‡#À$ÿ žO&TŽš@Äl¢&E9¬[%“ƒà€ãV¼‰(‡Wr€#Nr(ÀZa=":BšÄP2I¥‘Ø« Ë–5ŒÙĸJªšeËxÛ‘z*c™pÚL¦n¹õVÙ›Úªë%±Ä2K¯fÛ…Œ]¹¤²,0hõ¢K«¿ŠZ×Ý¥´J‹®¦Ãw-§ ˜/´Ü2l]®öë.­¨…¸ß…e²ìa·ƒLàÇ⭠䆉ڌšؘá‰ÙÂ Ç ë8]¹•[«må Vvƒ¸ÕÂQ:Ýf{‘¸pvk¡èÂ!zµ l, hepÖùº“NòKÒ¬2È0ܙӫk#mµÑj£TêÿÚêÕºËzeJo”zìOlòHÒT;R·îëè¶µüÚ6:ï½Oû{ç/ ç‘ËbœlòbX›»˜ÑŽœÀ£ÃN>ÉÝtÓÁ領»í(¡oL8‚“.†ø;9¶àŽ3ÜÈÀUÐÌD5ޏ$“LâÉd7¸ ¦›²ic˜ l,ÆGî¦Á ÖmäÑ è»ë&?à¨ÄŠ#ˆmÛ6Vˆ€“Œy%?Xð#‚-Š€(W *ÀŠ`€: Ù” ³€dÙIgÚ‡=E1|iŒd˜¢®ÂE[+Y†²Z@—4€&Û ².ØAòÄ'Ͳ–Y". š‹'!5‚rÂÿ^ …)™O*¨-™,ëƒÜ #.~k[|á]BD‚†9ô–N˜ÈBrq„T!i˜Âý]+ƒLÜL¹ŽDJq‡Ä"Á…D#Q…ÍÊ N>ð„„Æhms[0Œ16\®;vœð”S›`(£Bá€2JS´£ ­f6ƒMÍjAäêIÉmR³ÜÚj‘IMnÒmµORÍ–(¥žbð¡ ^¢ÔƒÜt‡nHÃ+@¥T#èx”€ØÓ¤†y¢"¬ GˆÍˆÌ³Š+x#Sp@¶ÀH¡Ý¿Žãé&ÕJ sŽ6úCâ±DzDïd'îÚ ŒÃª0zL^ÌRrbœÿâÅ’}ñâIt1QÜñp‘‹ãO܉J¹˜Ö+~+€?Ô SÚÄleÜZG¹¶XLF“ß|‰ã*c¶`xñŒãÜŠ^,ãÍWE3rÑãa,º m~“,Â<‚]̉ÏõŸ„ä'÷)·hR2jPã iÕäLžÙDç:“5šÕB+H>3mg†,Ü ´]öl5}­M«Ýö·«Mz@›#Ü——ØL¯MÕ¼ ¦Íòƒ7Éaǵ z-&Q{ͼm9©‰ôãý¦ÅC¶nÐIRÑœ¹©AVgÃn¢d3@®½‘…¼p4GOHSE¸_¤vÏëI±ËÙuj‚1#tñR1ÜЉÿU¥ˆ,¨u𹤚ZÔâ[(uQ¥!  %P'@´ŠY¦70苃\Cþ4}Œ —Z†74§ø¿CY; Š¦Ì¸)pH*6èZj¨¯¢+ n.À.äÂá”ìÿÌJ°Fa¼Jâ>쬤e0 ˆ«Z 1Šl)£.æbdªbâ¬J^–j+cÓÂc"Ðɸª*ô¥€ØÂ±*ªâB½¬.:p*H/8cºå @#i¦á9Ü©6ÒŒmâ¨ÒâDn¬¦°)Ž/‘Ü.Ϙi‘èŠRü-—6Gg¢Coúlzæ• kÎÐf8ô>ËÕJ+Žþ*Öª-Ò¶iÖŒ„–«ÿÑVÉnðŽo(IÕДàêœz+t詯œÄM©˜P×Dš&'Mp/²B'Lf™ú°½„«½pDŽ@ÁJ£–Ò¬P@¼ÁSª-tŒAˆa †‹oN¤¢@~f‘=V¡*ª€€=\ipÒPÏTË9§I©·E&.Y6fë˜Å`\ê/Fˆ&bîãÆ%‰Nhç–N¿Eª"Ž*þ‚§Œ¬ªt,)Ä"bê^D]¶®c~Œ%Òѧ¢±*›ŒIlÉ4pªæ1Š]È1ûE_tìÆdê…J%ЫŽB\ºŽdŽPï*@ :€9êfÈPÉïv‰4ô¬°úŒ“È€ÿ“òîí¨Ðí¶æìGÔ€I”+LÞäîÄPoDÍ´\ËÕÜÄÕN-ÕD‹™n˜ë·Ôdn6I´íÕN2’únn' Ÿ2ò`Éj§Aé²Yž@%rHÅ‚Ðİlsì#0j ÌJކœæ–ÈæR³…\ó‰„è[T*6³h‹°è…ph‚p“„ è‚VLꮈ€th‚n“ˆö9_Ó‰‚N‚J¨„¦Èÿ\šn‹„³ˆzˆjh:‹”„„8-胆SŠVh„°³8;ŽƒÂ“i¡ ŽPgî ²a‚L6õ6oî(ôöÆhD’G «úŠ“” b†¯­µ®f¯VIÕtsÓÒ–2>S“4Íh<:$’¢CC½ƒn˜ÄJ"G, šH§šš²ï,ÓÔ lP©Ñ>mr<+‹ öš$¸Òfr˜‰2?ØpmõZï+S‹GßÎIŽäâ ¶L‰R2.¡¨«½Üïà*ápUÜ&D¾àº@š(å2¡uR‡þÌFm>/³\d#1³n„”âX´°°I°ˆ¦•L2î‚•Zëšà õÖLjþ ±œÕµÔ¦ÑJKC¿òÔô³(‡òm.)›Ò$MŠ2NÂÁ¸PímèÆ?ÿʳœÒ;®p;«+5gµ-™äãÒˆ”¢Ì/¹|t+GDáäS6q@–i™,³º * 2i2cº ºÁqäC™&@ L@xœKL‚¡ .!:!{>Áe¼ÿ : Š€=òjöngü 'í+iIfi5¢®6Ó¬<5‰FŒÈB,=ƒèédˆÅ(€pSˆ„Hc"îÊH¬Fª/Pµ‘êËbýåÅD0irÉb gŸŠ`ÄŒ±¢4sVd,°%†m}l¤žj/£*´s&ºÅ0ˆòã픡tPƒÐذA‰‰f&³4’U4˜ŽFq·0$‘mtc”r¦™ž2°**÷êoâ“\-³VÆU^-Q1=‡Ix$·&'rjRÓ<ôÑF sÿF-oIS4Eyò,?m¸,­n@ç²n÷)y2txTØÔukô Ñ”cCí²X$ÿ=vËsª­Š@F#w°cŠáä€=‡P¤ŽîC¯Ú0ÆÁ|/tÕçŽàï·Æ6ä4%èTê.ÅPŸˆuQ¦2p)€è‹È[l€«¥9O,.ç€V:ÅE¥Xl§®<»'¨îg p6WN³eç²èè,øärBI΂‡㪎çŠÖ„šóËå꺈5InƒÇ ¥DØ„<8ƒ‡Ž‰´1k«Åë–Á­ð/¶ác¡Ü©¸ÆßÎŽ®ÚÆßâN°òHq[–qÍE8‰1AG’&©hlf°r©e ´–£euk+”’7iÖ•f’f^ËsÇa@$GŽ¡ÃßÊ•ÿ“æµHK)¡°B¨«ZÕleO’4$”²ülkZ Ž×nVV7!{;ë’ Iez ?ãAŽ7á ÖVagmVfð?Ï”*d“jæ“™#”Pk­p6EF¤ø:¥¸U+[£Ä.Ã6ôÝCh¦w€¯VfL÷¼ô- øˆƒ*úœu‚ÒYÌÐâ'vÓË!èç°ó:9ކÁ¦¢Z™jÕ¨ =~LÞÛ¯Ò-8Oˆr„tþ)ã‡r5¬0D7«°µÊ*Ÿ<‚›±5N¼—ÛÝ8 AlÔ©ö+ÈWÌ*ÅACYe7$—bwŸè1M&ìmVÉàw‡„É`ÒÍzlu"ª%—I1œÌÓZ)î‚'w¨¥LWÆ2Ä*ñ(ãØ—ó"˜ª à}nµÁhspöIßxCÿÞ*ÊdU X³'( å9BP)´ TK9Ô@B1ÔSMB9ôèS‚*džx*š(5‰–±)-eÚ©AžV¨UšdU5´ Êj«rªPª«^u©«¢¢*j®¤JP¡®ä묯–ZP¨ª+«§. j²¿–,A¦6{ê³¥*Dm¢ªê:j·± ,°e‹m¹¶îê*²¿Òzn··¦ ­´êjÛ­ºy¾DMUš.ÆVoÅóI0Þ4áÀY^r†ÝýÌ&Txð¯1~UË%›q€]sä IäÙuÅ_|ñI<ŒÉæ‡l’p1_ÄQW8™_8øå‰Äâ „uÅÿܰã*1h!߉h SE)ÖåÝ1à ÇZæM4d1®€Qy²Å#2s´ÅÖMhÁBsäMÀPT0p­¢…Ð*ÖµŠU´Ž\- E{üÜœT±J0°µå,_ìÑÂ*g£Ã7¤A¸Š1UÌS$yÊàpDjàðq“ÄxÐÄåh…'gx”cy›ÔuF/t3&F]³§A;W4·5Ùž|SÄ’²IÇ%ŸÔ \%ßlseÆÄƒòEˆC0qÒÉ—i£Æè&ßZ^ª¸0Ä4‡C]ŸhpˆáDH>gHÆ7*œUàÿ!zB(8’?™ËT0Ö»6u“Ÿxd'HñˆOò’¨d7JN~BB¥TJ(äÉSJÈ’CadQ#ÔIeúP'’ªED˜Cš%„!Éŧ؄&3!I¤D’z°QŠ"‰5R•‹¼JS´ÂÊ‚¡ ¹O»sË[VC»4ˆ,s8LÄ1¶Øh"~pÃcìÒ -èáhÌ&:a€y´¡uëÌ$ ‰i$'LphÅ%Äp– ဠ²PR<´ i€aÜ€ÎYØ@ hà ¤ñ#7ºàˆaÈ'™(ô†yipÀ ÚàÇ%Å£:ÿðF Ês†+|a ›ñ¸¡…Cøá:X0 7в,{x ZÑ  g8Ä!ŽÀ!â °Øò¦˜bh»Ãº°>ìaŸ Æ'¦à |2BW`Åæq¸ã`ðD%8s03h MðãŠö@ŒyYRF*Ñ‹lœ:"À䮤š`T¡½b^01-ˆ3ß03º¡9\Aœ@DЍã$˜ œ©ËÀà€œ 8™€1Lÿ€NÙÔΰÄb,çdAܰS]¦ñ$°@Gª9Ã%V†pB'gX€q…šÆƒ4(‚J6‡Là  Cp„1ªª._¡ï¬‹  >¨gW8PÐ 803q ”â7WðÁ/À+Wpp C B½r …LÈ%BÈF+¸B£ Hµ …Î*ö†iaæ ’’1ôÚí _(g˜Otc< Z(A„”c„G@ôTè% ±/¶¥—°BZ“£Œn`âöp+#ô‰/d#k_1œõ@P<ÁOœšˆ¶°øÂa!E‰láqrþR”r‰¶–!.ÿU±Š]SU·»-oyß{S x¬½ëÍïKÑ[Þ.8¾ó„pi™«ß°Ê7 ¼Ý+[pߢ*¬¥ª²ðŠW áóV¬¸ÎXƒóûãÂ*H³ˆñ\ßô²Ô¿E>SÉ|\ÀZù«8n.NU# ý.5žˆ`hÓÓÀ3¾°elC× Æ4¦‘1Iú mð*°ÆN Y :øDHó8è«É„á‡/ÿhøB¾~¾¥ÖBÜ')‡Gƒ ÝHN0Äàc\9ÀÁ ¸1NÅ|¡;}é Ñ@†ñ±Uä` V˜ÚÝŠñ58Àá ÌôG\ÿ!xu©€#äàˆi¨H-¼nC6®§šLh"²ˆÞ®Gìn0C 'Z…A‰6Äà lùD2ö=Xî0¯Åd ±€ô ³wö@…+˜â ÆP(h00éÖjxÅ(¡ž»y ²hC0Rô >C ä˜Ã’sÀ•ÒAK™f{à8À(€  ²±ž°xõ «²àzÁ #÷·¿Ð BÐ 4b Ý Þ`!8p fÀ8s=¬À Ù@  |“ Æú$ð äPP€Wì VðÇ ¢~(ð gà%r@†£°€ÿqmPÑ'Ô( w,ƒE4†›BX'„nê¦C¾ECPñ*!Ä›U\íVº¥D§åZ²e(¦ÅZ(‡çÆ@x(¸ÅZTQ[ƒr[1‘[”µC¢\rY1¡LdZ?ÁAxøYEÔ[º…B,T°/°¤Q[ •0 EÓ` G_÷  +@,’ÌeÀ€@Á — ðP¤ ¥#ž°_`аà ÙGàà9 iÀ±` m± 8p^ZP %0PGÒÀ3é…¦°raN +` &ÐËÃL÷Ûp6&ó ”ÿ B0g#½ hqmpQ 9P| Y@@^Ò  Òá®Ð p@áÐ 4@ 4ð ¸W GúØBeP®`l±5Z`•N°<Ë3ÒPu…?@ ? 0ä`BðE \á7®p[F? ÉQoQ>? Y9Ó`  ( ^ò_ ¾ð pU ¹P 4 ÃM`Uð²@ k0—gPä ½°ë З z'G |@B + ^r|€žÉ ²q`˜ä@~pÆÿàÙð ºà‘ 5އ G r kð —ðä VxGðv 6rÀ@ÙÆW)”‡Ú’[AÑn²RsW‘ð–o…¢ÿær2—,åÆ!CDC½%DÈC"±AyXY@±†ÕZ©Õž)1D•e©µ DnXd((´ASŸ?”ŸÕ)P[FDD=a‰$‰&*±EA+Ôom,ð•àÓeá+òà›9ßz€Å S`R1`Á3pU ²pc³U²«±5ÏàŽPÀO-0àUÐÜ08 &ºYÏÐ ²W 4ÿ0²r° rÐ ÃÐ5^Ê_@‡ Û‘>W1à¤ÔŸqÐ ²°? )j PB5 (à£.Þ@ |Ê8àäñÄ l33«£wP* Up ñÐwsРBP$µó &`P`ŒÊq|`UÐ}Çx¤ù<~ ŒŸ@ ( ® #™0G4à}À\À œ0@ЛWP” =Äà}Ý T=Бp0 ðÀrPÆ`Ýp=)‚r°<ñÀQNÖGð ÒðI U«P G 2æ ?ÿ°Å„ŸF ˜` 3{ {àÝ@ ~ `š +éÔ 7Å?j ÉÀ k`™ Vö1  0à¿à,ð®ÀG°7` $ܰ ° êÐpzÂ'`8.º…ˆÎ[@aŸE„*‘A!‰œèCÛ‚.‹¥pGràBsÏrWkqg)òv*cègq‰Õq—R¶8ç.c(, oá‚.¯‚µö6-6žãù¶yB·hkµ#w†·B*çXg.árpGkµ³B,ÕÂoï"n—8ÖEËÐÖð`µPÒ@Íá+R [PgAÊÐÞÿpÆ  1¯H —P sù3Ÿ G°¨™ @þ•%g [fòc™@mÁÊP ¯Ð b %`0«àÒUþ…xÊkÜ@ q€:÷Ý”®Ÿ`ß gá/VƒBÕ5b Wƒ4R Æàvb'ÞÑ và4ðS ŠçkÀjÕ ExsÀ¨%P fp Gpª‘ѽÏP2gÐ àr>6ò m g¼Ës±ÿ÷&gà í@…Äð~g¬™0Ÿ° ¬s9{Àº®$gC@KO€ÃuÖEfæ!4I#ñºà Gÿpk }a°ÈŬM ®Tš¡9%` 0®æQ]ŸÐ WÀ`ü ò¶ùg²>ЬXp`œÆr±<À«Ðúª¯¯Àj° Ñ#ibVHÕ5Ïé@Ñ)Aƒko?!¸7÷-àDäæ zn7´n<´ûX/”)Tn“"Ê»%BÄÊ;Ñ[V[Hʲ€QÛð ÐÀ;Õ r P³ p°°¼[“fjO°Ð ÿâÄEà p ? ~€ÕÉ0AË Æ`r á$bÎû AÀQMà Ù Ù sà }« #o³ /±W~rž!´´Ò¼B„%¸_›·ÌrXë",ŸòqÌÀ%£5n EEiˆZŵˆ³L[­Å(ñ½‰šIû‰ŒxÞN¡ÞU‡§e[ºlʯ\‡ûÍtàI!àN \¡•´ñ-ú2ð€p@&^98 ñ`ª:@YòÍÁO³û%Êx~0`¤ `‚žñGË[- Ïø ÚTiÓpðâföý“%B:IÉA¼«&wШ‘ñ=hƒsJÿ×W¨Pe)ÂxuQ>j± þ¥"jõ*‘>‰Ì·7ØSŽñ&„ÞÜòü% ô{Þñ '½)rLr>}åÜu=›0°1{nƒöÑÌÕ Äݰ p[£0ïÔbFK‘q"ÅÀÜ>éªE F€Åµ“ ŽÓ Í!Þ°..(2 mÐêpöØÐKKíÒÀ è‘^äH4wGÀ M #›@QrþIsMG G`NЕÃëq%öÖ@نˬ 7EöyËßÞ†³Œ[×},ÚÙ$‡XØ©µÇ¹†û-â-ãbrGûr'ïn[+ôÿòî—·ì>,ùÞïcû·½2¡Ö2¶²br÷Žr-'¶ñ>-¯sY”.ú·:/ïs‡%ïBpüžpûöWUÔ…¢€Ñ‘À#[ð ¿ Ï` 4½²—Õõ-»@àÞàé´|/¾ ] MÍqwá!ʸ†Q/‡1>,s»fN‡ñõ êkaVƒÎöqKÞ·6£3—.¢ {î_£qUe‘Á;b!Ð ½åhéW_ja¨ÃÌ÷{÷7µp"kñ&ä!¥*2™kÁ½ösðU .Å|zÞü3}éQjП  µ€6ŽsoÍý³5µÿ€Ë»ùß±çÌÁÐ,3édêbk‘4[³7(0ìöwÅpÌªß HÂ,Ö8r à Ã0Ab[Cj˜à ` gó„(2ìÍà Í_mžæÍYâXýT¨ ¯` Ïñ -ý¡+ù ÔÍ'|%q¸2ò9DòχQZµ2Ë”!x0!ƒ 4hP¡A )&$ˆ± Ć2ôèäBE2l¸P¢Â‰Õ,º4ùñàÊ 3Ît‰3eÇœ5GÞDYS&•7I²<´¥ÒžHQ¬è³fH‰EY.I‘Ê£RŸ¤µqµËÂ<¹rg„V ŠŒ@ÿ¼xîsO™Þ`«â݉×"pÊ€L äÀ´ʵP6!^ápwÂÅ»xr8ÊŽ[¬ 7s0ÉßQÖâŽÊ«(Ol¹E‹ÇáHë\8Xhνÿr¬víÚÓv+‹v=\reàá’OÈ=a•]åЫSWÎûúöêÚ¹ŸZôœïåÃs'SŒŒèM곇ZÙªÈwŽiÓQ˼™[¾ƒ:Qk:9à8"i*ÁáצS¦˜;<? ð†4ê& Ž&*„ƒ“iîè 5礛oåÈÆ›¤)€ºzãͲȊ 4@±”¥¸ŠŠ(¦ "Ò¥e¢Å¥°ªY2ÿ¬2@h#§,£I‚ÈI(ŸD²©Œ¶")#1…R¦ mò#ŒÀÜê*‘ºÚI!Œ¾D3§ŠèÜ)Ì7Òó(3¯R“̨Ìl3%6é (®ØÌ*¤°šóO9 ¨¥AMJÎ8ZRH,±´æ¯xp¨‘6ލ ²xŠé¦›N  †®xb}l®ò רë2ev †¶Ë.Û­3cCV4Ê.S­°º"CV>cûëÍ1ù&Û,2èÆáLYù”«O´è¬]+¹Ð\»øDëŽ8v‡+,;y¯ƒoÞ Šyw;ÞÂß Úã®Þêü-ï:×´®–Z$ãFN¶æÒ„³Î² p(@ÿn&˜ßJŽð†€ød“éࣇNøpãˆJ¶9¢˜Â” nšJŒq  op8˜¹x…S怼Yáiü¸x“b+³Ø9eJ² u¥$ˆ4JiË‹uj)­â´ú¤«uª‰–,³$HJ.« k¬ -™,æ¯!¨xä5pPFh,07`MVÁpc·ÔƒÎÿÚp6˜l7ºhÛ,Ö¬5?0fƒŒ¹ù(³l·þöµe þ*Ó‚çÄ«3 qsàÓþq&½¹NtüÓ-v-P^[ ± ñT^K gšb¬]Ù¾Lè)kªN1T´ œª •`E0ltÝk5‘YÅt>ц4 KKnÔ¡p ñ+ÈÁ©>Ó›»D  /j"¦¡@mÁG[w)"Bä²&Ì(ã˜NÓ*$ªõ%o‹šì‡7¹­MŽDR›õ(1yÄ(`ÓÈœf’¦!E%ÂÓC9©Jíq–Ô¦ÕHJqÅ'cT%Ñ´©®åL•RdÿJéA¦éP”\Ó&JCòkXkdž>R–á…á 2ë&>Ñ 1L $êÄ&jÁ à VØëýf˜`ÅJ5Ë,Œ°|£÷ES€³¡gZðÂÙ§Y§éÖ_,#ÎÊp+€¶±fovC›e K\ìêO|˜#®ÿtËg´X9c.Šu‚'Ô×Zpðž{Ýkyá¾ìÙ­IG:þšŽÌ”uÁ‰.põR¨¾æðiþ… 8èB˜!"¬@œ*²Î*$´*éÜaa8BÚ †ûAfö\Å'VUlã 0@²³Š-ÛðƒX!åÈÌ2*R‚2c€agˆÿÃ?ÀD SÛ‘$YT…#dE«ãtw:.®r‹»Þ –¥Ô‘ “BÑÔT€r×=9êN+±Š›`¹8êG†ÔÉK¸6¶8™d#WûP"26ÇF–°U,O.‹XNZ’), V6©H«LVO‹Q´F ³™mh™Ì'.‘ƒ-T¢ G±ëY±¬˜F-ªW½üѨì³Uú8Š\l¦ÿ†~àÜKhú³—Üæ¶a¸Jßl‹‚ à3ïÐÍÞl[妼řsöÓ:L™¦*ÑÜå¦G¾ã °á€ß „'0M04sG&T“Ñv•°=ç–ƒ!Z`Ö۞ܺ ÀƒˆÒyÆÃ Á rƶ17,O×Ì‚ƒL¸¡”€ƒ!VGEÅ „DQ ä`UøÊÞ*†‘Ÿ(øÀ­Ì3¡òbèÏã@(jŽ ‡xltBªŒ/Æ¥¯öÈ,±ôÝÖ¶èQßͲTaì™Ïd'‡ö¡œ¬WôÚWÑ"–$ÅdÜ ©5ݵïeÕ¬—A+Z8qVQÿX«{¢h“¡¨–u÷«e£¢Ç^òRaûI(_ÊLá„a …Y¬‘– ´  ÷Z…d6L j™£ËNmÒH3™άÆÍ]êÖÞDգ缸õÀU<Ó½¿A =Ä?£›}ÍéMói£äæW4Ý#ΉŽ3ƒÕ<¢ÒqN±®à *G¥'JŽkjª´àÜáuidÂê ø¢ù-¨]$~ø¼àä »"µ€¾i0•û€ƒÐ)j°Œª‹;è{ðVر‹»(Nà˜:+¨¤©Œ  a…ûhƒ ° •B½»@²ËÈ'ˆ€#Ú Ø I¸ãP ÿ-£›¨¤¿²Xƒ‰!4;+Q4MÛ³$œ²Ã7Û³Tâ,>93C,?1ü‘Àjذɜ0Ãu,żÏrQ¼ X+ Ÿ ©cØ"ÿÖ †Ï/„rƒM˜†Q‰•홑Æí¶½à /…ŽM@Á\ 7Zð¢µpÄR¬ s*sT‹,Ö¶Œ‡M 3øN„ á `¡ô¦Uh›{™‰Re.µMÌdì„U¹µ½—Vü ¥E0ºøÖýì[Œ‰¾dT¡nðĽŒz,— pƒÕÝ‹µÅ—Ä\>d’\‘¨ìyT•+½µ•oxÇ ¸ƒO(npƒOX…n@„OèêP©x(‚m°9؆½T©`8Æ¿X…N˜8ÁßÈ„joXƒ;PƒbX[¾ªóU•ê‚mȸ;(‚† ˆ¢o­â{™†Uî)•Óÿ’L×>DËÐ)œ"Ä3µÉ»¿sI¦¸‰Ø),XRŠͺ®çÂC$»š;Ǫ,%¼µ«Ø‹íC·ã×ɓÇ€ÍbX‚M La¬LÒgXò«ˆýçxFXRÚ+ž‹# B´‘Ý:‚.¸„"ø —Ñ€/¸c*Ìx@Ÿ0•Ûh 7˜'¨€Àd70Ý„½à  µ‹‹êN‘Ȥ ê¨N.Úa1G3ÍÚ.²ŒrâÒû‹á(ÅU„zÀ„û Üt©J?ÀP)—ЇOÀ@ÇEæYêI‘”RÜ;ë 1Ä­¢Í ¤°¡Ý*‹Íš3^•¿à™júÖ¾mê¡]ÉH¾,ÿ¿½¹ù97uäb˜©õÜbð©„` ëæù„æ‰Q`œƒUبñЭWhƒW°ì†X61Dð† Ø%NLX…3ÈV?È8È3Öµ‡êYº«ó8`H?؆ßmÅñ† YÞ…h^ xµÃ^,Lˆ6ã³tÖ³÷e`õ5K°ÒÅ2 5y¤ÑBQ/ÓÐËg mçôþÂI:ÉÕQB²Cw%1khm%6ì¬@Q<ëÆXíE%ÏÚç(dЂ0ˆY ƒ¹° ·=„P‹nàn 1¸„ÌWe(‚äªh XAŒæ™ƈ•!ì‹NP™-Zè)턹˜€ €ÿbè„W©‹o•&ÞËn&‹Q‹Mà†nX˜»pq1 ý•=à¥OØKº˜ƒ"×µNp¸N8ƒNØ( 9Ænà†=˜‹êâbà†M(Od^2ca%ò¼uãöPò"_r[s1(òÕ-†Oðò>¾U=ß踋NØ%„› ønpê W;ßž€+˜›Ró3hžœ ^ª…bÀ*7è çcB(À~fGŽ1èe[ë„BÖ¡Ìè–…)‚"†là† †nˆÝViȃŸú%܇L‚båVƒ¨];‚mp€Uº-P9ò˜˜*Xƒ"Ðm9¨€,*ÿTÆ‚¸hÐ)iè„yÈJˆ‚ æb†K¸ )€º@q6³ÁK Ð)ØÔšP²1‰¶»ð¶ˆ·¢×ƒ¿­üœÕ©+·”3 à+ÿ­`™üÞ?«ÉЇ´î†xÐ94¾Éô}ø&yJØ)JÐAùß_Ó)ù Äœ ~KÎ94ýÅIù‰—W·ÄùœD«¹2›² †ÑÓ 0@58=¿ €/¸‚y(!hºY‰‡¨€/xb‚ 1†`”nƒ]1épØLø‚J ×( Ѐ(ôµX-ø‚X޵0*oàÅ+ ‚¹?ó`™WÐ(ZY•/0. !ÔXÿy z3–[=XX´^8 è€X¹ôÐ* {té*øû6Щ;Ø„m8!˜‡(ûM@=ЃWÎ*j&€o >jÖƒGƒ‘»p€Ѓ6ˆ|ú„NµðO Y‹è‘!ξ„y0€ €RꙆ K0Ö]…ˆƒK0ìñ 0x†´‡Òª«„8È{“–0÷ ¢Lør0€0ÕæN±pwàØ"$H¸pñºixd§R°ÙŽlsDî’«l*ÁÉ­Ò£O™Z+æ ™š6ŽH›L‹*@¼mƒ3AÚ·.(â‹—©˜'!B(ÿyƒóªM¦ˆ4àHk‡…‰^”Ôd[Õ&O—¾ø©Ð$¢¸ô³JY5ZeÞ‚BT™jÕ–U{K+ïÞ2 ¨ùœ÷o·…ß6@ü¶îbÆyí¾…Ü8¯cÁ•ëf¹LfÍ”G¶¬y4åÇž7/.3éÔ‚®&ºôãÌ¥a»&MvÝÏ—e_έú4çØ›#ß Ú®hÔ²?¿f=95õÉÊï<œ4öç«%Kwkš³ß»ÕÂ|¸r'^¸6ºðy„`„6•šl14X¸UÖ„Œ2N³…@ ÅHpD1Ó¬wG0WT‘MJñ(sĨQ {ÅsGÆ“aÿ<ÅL,Üx˜I&áóH6º±J0wpÓ›ÜÑ#A€ÑÉ*«sÇ*ÝÄÐD'(®²ÞítÒI¬¡O!âÆ<¾à€^ªp &XNøh°0@.t‡O˜"…˜†úâ!‡)<¢ bJ1J †÷4I8`zÑ8HéFêøÆ:”½`”àíX@Þ1x¢‡RÝàP0ØÂ¨X'h0TR «€ÀÐ otÃêë…<±‡ €ªÍ"УâiaɨÀÿ0OÀ! ÐúV¡+ 8â®XÅ*0‡Oè SðVQ‹3$  ²Ð$r‡ZA¶PC äð& ¶p7ˆT ÐÌE.ãi@rÆÓÂÇ7Ý™ o°ãïPçjÅqK˳·bÞ¥.˨‹xúB—=so™æ3cÍÀà ›}Ù&3õbn&3œ3 Í ³—lê fÍ4f[ÓÍ©s0€™3Ý™Mg*ÓÚ4æ>©IÎyÖó0…áË5·ùÍwšó å¨Aƒ3d®Ó<á\¦y𶏵l»yÂl„,C®§ZûqÅZ€¬`ÈaGpÄ ‡À´[8D’”ÿ TK1¸0ô¯"€Á󀜊‘ X< ‹2d< P OT‚xDŠG;¢ÐŽ Ü¡ñ؃ ZÑŽGàÀnè†Ñ5 (8@Ä!|ð 9O10À#ºÐÅ è‚KÑ䬚òÁëYU'„pC€*CÆh&¦0ŒJÂqÑ@ÁBt¬ L°PCXú¨ê@Qˆ@ƒ|ž,ý+8Ä :P M Þ¸„7Úñ‰qà©j Ä€e£ÆPÃÈáO )ÞH†4æ§pt´˜PŠ5¤5$ƒ²€Cņ´Náb0‘(Ñ@ÿAc²B6 0ÞÁVp€#¶Š+ÈÁ€Æ%úw‡LT"ä(›4Ô†lCO†\E'º ‡J¬RZƒ âñ V4‰w¨ÄÄ0n‰ I"fe$c¼À `è(ñæp„,ÁE8–2æÐ9° EÊÄ:2F/Š)&“U–3%gh”±šÕ¦†5¶Í-nG+™Ð¨†]V8u»h®6- eMëkT#´­Y˜r.3ÛØÆæ$? ˜q^ ܬ6²©©fÊ_#›gÎ,f_Îù˨ÉrÔLS²ž‘ì9Óhz”á;d(­@)B U7Üa‹›öÆâ…xÀ”_ÿ¡£Á‚"\¡ÛøŠdŸ› †¶Q… ¬"þ}o”QÉxˆ˜8ÿ&Ô +кëé†2¸±…0VŒ ܸ‚,²aÈ÷áH3\ ¦Wa £,l7bð‰ÜMÒp7Ü FN™‚!Š7X` »Üè†a'cucÝ€ÆéÇn|â óÒ™:!;ðãúÄ`t 8€7L¼@qÍ¡Í0A”¦Q E”Þ´“Ó(šùÍôjF—‘ÙÙÀ™”ês š£ÙÙ•åÙ/e_¡æÞ—ÍÙï)™ • òÁÍ}Gu@Ÿ¢m/ú¾ÙúJMÛ M  ¦zG_ܤlhÔßPCz°DDÀ \¨Ô1tA€TÿÀC¸APøAT‚ähUˆ,JÁd‚+´Á¿”i¨`Œá¤‘ALC³ÀÈæìÁlC%¸ôɹx œÁ&0¡V¶¸xÚD`¼ÎÄt‚øAúL‰–b•VÆÀ ùúüË„ç4c œk08&À'ø7´ÝÆm‚”˜š(Ã'Á*ÈØ'Ô#}z†I¯¦Œ„Ã(\ÆØI¨ÌA&è1¡Œƒ±ÔÐC„ÃëìÁ8TÀ8tB&<ò7Öñ#9š0 £ÎφÈ'C7„]¨ýË'ì‡DÝ%ÏÁ¬ 𤅙Á'8WÎÁ/_ÿȱƒªˉIJìt™NÛCÌ…lŸl‚Iñ 7lO6ÿQóDˆ\A³ì‘…•ÿ¼[¸„úA³Ð¨Ç !³ÀQå@›ÎEoÄÙï¥EÅ¡z ¡voöVê÷Q$Ëà“Cu$E-“O"ÆR¦ÞNʆ@TCºÌH*ÓDßAdëédLJ4CAYI 4E;Ó1í$PBSC“>¥SÒR@›´C}4ëôòž^Pžtô>/B:=´C T:Ù…Aç“8I«î¥NµtÂà@ ÔB8‡¨A'ìPÁí°‡C¸Aö„Š°ÕˆZƒD@0Àe•ÜÈZࣧ`¦mÿÏ…à‹CÈ ÿË(ç–±Ðíö\Åõâxš¹ šxHo‚¬œaVþKJv8´À 1A(vã4Dãè+gá)ˆ_{’ö¶g1žN³DJ˜hH®ˆ³ä–Vµm7I°e3ÝÎa‘ÜQÛLV–£¢)“±™fsy!2;K³¬‡kà dÂÏVî}¡‡0!š„”ê4IgšÊ\ˆ'9Qs?²ko6Ý– ‰ÄÀÉwo'1clæ–ÿŒîÕzËö0¡xÃÆQ‰t·Š>†Lj ä@û84øîÿ¯ŸÅo]èL¦æöšßû"Z•ýÌñ xçžØøãÒÑ¡Úâé‹Ö { Õ¸‚y®-½Je 0Ý" †6a‰õ g2tS2rà ‡ŒppFÞ/d‰%·5÷Ôs4æ´Ãu2õÍÛb¸ÿð½ÝªºfÞðó®[Ð&È[æF+F»åDƒ-Úˆ§go<Ñž#˜<Ïnžßôðç/áÀ+` °öã àÜ¡ °€7¦þÄ£—€Ã®ðçæÒNW„®ÜÆ ‚ƒ„AgExDäðì':Äâdf¥™æË<ÅPRŠ€&8/IIQ+!Ò—ŽÖ¥5¥)Q;šäŽ•¨„(UŒ‰IÒ€ÿ+Òˆ(Sd‰I-Â$!" A0b42mj4©1Â’,†1jùâMlDÇ4î;aHçGj,¤jm¼‘BÉÇmÑhCáÉ2¢È>FrY”£M©,.Ò‘+I£Çh5Q£!Q ƒ5®P– T¢ @ ‚Q„UT‚Þ€CÂQ—¼¸á-±2K z©ª²Æ^²ÚÀ`3Z-³6ÆÙ!g|µ›ÈèË}úJV±.³šÕ(¦~Ó+i ³.}&1îW1˜Å-o‘¯œå΃:4q5QTmg¶¯~-Gl-œSô¥¿¾)‰OÚ\¹FD«‚é­  -–†+d.u9è¶ŒmxåRÛÀ[Ã:ÀfT®¦U,ã7ÈŠµ©âÕ4Í'­Þå 86ħ5ÇOÆ$žÆ±f{ú"=—4µõÎA§Y™Þ¼³{ÿ윩_`c-ÛlÉ2è®FdÍi@‚îsÐxª­pî cÀZé¾ø©™;Œ#/ X¿4T4bð#~a‚5¬ô_ñ ÀºQVø{'‹÷ SD {ðxD6À's^Nvoh¸n`¿êLí¢K¶™01‰D‰°:z£›ôT¨‘ ÔcG’ÉžåNP:bžÎfظ©ÉGiúñóäÄÑJGÎëÜ7´¼9PGœªÜˆ '²îÉPE,–ž48nˆZ¶r’“|d-‘ÕN|Ôr¬Q0|@¯ ¼á OcEBYX°ª¼Èj´„QÿKªfç*›f²®]ït”÷ÌôVÊ 47ƒ•Oe6æ0Ù Z ºª÷8 zÝ,N¿Ì'"ø¼Fñ¬–ö$ƒÔ4·8”9.}Rç¯Þ44¹NsÄsz…ó.õ%hèÕ¯ùí3Ùþm6t M¿ë´‹¤þðü“—-ts,Üç*2 ¡ þñOnö96D€eÁÏÉð²Š# .»—¹; [¡ÞÒg¯ýáÍÌ!/“Õg¸Oh² A âaÉ%¸Ù-Ë€J¬ÄÿD¨0÷©i9£@B5<þD(b,œLj<“¥]ÒE›´±';ÎF,-å©ÚOpUª’(RDÈÿ{bœS±"(A "”Fú|Ç_4bÏÁs0ž±Eu4âRE®r›K‹PM$Q®¡3D*Wàn1" …—v¡rˆÇ#ø@ 1è ±r ­Ôò:×¢60䉨_pÖs6Æ+èj^4!“ª[M¹³]Œñ ï—…EÆ}݉ٳPìçysX¯i§eÜ'¾ØˆŒº×»>?]߀ú¶×—5Ô™¼äE´ôj/dþMYÑ”eöÿ ©0GYჀ̽@aÛ÷K<¨µypŸUÊa•¨Ä‚áv_!=pÅVp†{é>Å€C6`¨»–%ƒÓ€ÃX!Ë}?Æ€C¼!ÿJ‚}î@sØë üà4'¸¯2¡V€IR$©dD"VN(2®Œ©FëJ¬d‰Z¬ˆÄDKÚÊâ E‰ÊæË˜iÆL°–̯º¦IÐl‚ìj‡Å˜¨È°ì°êj«ˆO¢ÌÈ´¬ˆeˆ^ðPâDéêj:0‰D'Î&ªDoB‹$Ë,ŠÁt”ø€Á‚¡ J  Ú L£T°‚0Žgµ”0°b—¬¢ éE-®â2c1ÀEgzåñhå*æpDn -Ž'2OYê‰Xžó´ÇÖ†g‡Àe:Dº11¨KD¶Iõ@mf¾…8Ú©šÄåÁ&Ëw/Ž)ÙD1ÿg/ûØÏ¿<,÷6@4‚o n²Ï xVRÇ^æ¯*„Ï¿ªùž€v4¦ø  <ì^ 0ò…¦á Àô…^0§øâ¡ 6lBðÂR§à +Àè#èe Ö@à` æmŒ÷‚!R*u'Üüƒ6 07æ …Xà€ˆNhÐŒP )mÔjì Æ“:è ‹šêÂjãØf®Èò&nž$qtpû$!óD"߯kÎ$¯¦Ì« $âxp®îŠßꪤ !"’n|ŒˆKª+ÊÆÌP^pIüFHlŒM ‚ž ÎRG Úàâa üÌAàb@wÂudeµÿœà -VXÅ XsdË[gÆ!+ç`Wv&{Œ òÒ° )£Ó¶‰VÈ Ó”GÅ2Zã-¥'FÏCš'{¦)ô8ÔH*»…¥Ú)D\C¾ì².÷%3Ð6WÁBò"ZÀ?Ì f ièÁ&€»ŠJ_Ø‹ù’­£>FQRhèÂ(}êe`Ž §È.3aü¤á^ðÂŃ.* :áê,¿«ŽÀ\Á*€à¼AVa "@ÏoÀ° ²aŠA ŠÁÁp ƒðcæ@Ä Ï‚Á‚`Àï"E‚è’’‰@pÍ ˆù„&Û&ËÞŽªè%ÿ\$å~NŽ.Bë0ðŠn‚sljd ‹”Î馌âêhæìÈ&flæÔˆå6ÉÍf®BûH4tn@ï³?]îEPNaä>T¬ˆ(ô©g ‰E'é“d®iÖib¤â$‹ #¢À¢  2§,¼¡-ü@&D-*-€À Ôâ-ÐÐí-4Ñîô0y(wdë2Òpï„Ã+g«W<Ͷ¤%a,q26O¸e?ÞÉó’¥j‹[‘8$CÇ2Ì©šd«§Bì{6c½ÐëO×k1s£¨,dwU•Ï_þtÆï*ØbQY£†<ã?HªA # Êß¶" üŠ 1ÿ6£þAjSc Lý SW ”Ýè¥XÀü Î1úƒ¥”ar`ŽÀø-š`ÄBX€ÂÀlµ^! à€Xáü€ß¤ðh’êHN¢@—ÌAw¬$rPÍÊ#˪q"n± '/lë#Ïê­Þ$NäFk¶¦¯Jr°¦ãs_íÊ]cаÀ$¬øÍvd¥oÞ³>¯f>3&ç¦lVd⤊&gDì¢b%Va²Òú+p@sîà³ÐiúbÐbÇ Ó°Ký  vp/0âÐwÂô¾òr|€§Vˆ‹ÕÆ[Æ22Èà1’'ÿ‚0#uJMfLí6JV;ÿå0»¥êCÂacjÄ}úb3AŠ€Âö«ùš±2ÅWã¡Â„í»èå"@4ì¼ 7æ šs8_áX1dL¼a Xa`ʤóŽ^à Ú  0ËV  r`¤ÁŒ¡ ¶á‡Ð®*‰"4^EPF=t@+©Déè`(ˆ Mz°Íb$"cL\哈üdÉjtãl”bkÒ!×y)ö{åªÊÌL°”ËØ¬©ødo ˆ¯¤L¯Nm¸ŒNÐËÆJzÿÕ„ öçRªù"`B~Ó+Ô@ 2§0dGufÇ/xOVÒ¢eã½ òcthjÇ¡-Ú‡ôEØ–I ã¿¶rjóÝÜ‚6ç*Š6/øëYŽNýLÃjÙ…2ª)}ºÇ@¸ç>XmW>a^T­2{„c®?Üç*òb>Á_¨©¹ “q3¤9 ·6á+T£þ Th>"ä*~˜?òãî£ Sòv–OfvJÀНÂjËoj6Úâ…ù©i’Ø>TªrctB I·a¼¡(1Ü€E›`4æCâà²ás€ÞR玭ذ‘"@“±ñüÿÚ€V¥a Ž•ßà HYÀvsà¦H¤&Jhj¢PÈ·×õJæu{«—zëÊDGôELn(xî’ 2D».(¤ŽD&)Ô˜}¢&ˆ®'`D&ŽNF9çüÓ ý“Ij>Γú100j°Ù芓”wìh´ŠŠîå¶õ˜¹ÙƘYéÀukàÕIØ N" 2!øÊ¯ b)vâ¡p hã\Ö¿,­ÒÒj¯"66!vÊ¢-6á îW'à :aØ‹Vö`Ä£ƒ¡þ¢J:¬–V¨‹t*Ä Ø«ÄàÐB„ø5Š¡bÇj[`ºÁ ¾s/2ÂJeÜÿŠ¡& âÁ¤Ã¡V‚:¡TºazàJ ú¢æã ® Tš>>â‚î໡¼aÎÀ j¡,6a ¥Ý€àöàxs\˜6Æ¡ Š¥cÅ}:a;Clã rà‡›š¥pª©Û˜2¡–>«*þëX!J€6¬¶ ð¢,@B!¬I¥;.ÁèÅ 6a® €Õ*ì%A¬+æ¸ 4&…î€âà`Q<Ø:Ø.¸6·A: äôihÀüÀÚ  Ž * $@¬£ü`:@* ½ÇB4€ ¦¡^#^¡ ÿ~@r ²^†à *AuÕa×@L à@c.Åvzc4$+F—¹#Öµ&լʜ° —ˆ §äeP&·lËjJÒ åDlD<{£PÁ¬ÇÒK«ÅƒÐ}-\Kâs$Vˆ¶â` '‘pWÐy_¤_%‚RH%`†Áí¦¡ÎD¨ b'.:s* ¾ +`àA$.ü æÁVÀ-tgš t`gc¦Át  &Z_pÀæ ü ï º@2ŠV¶²´¶‚5¡PàôÀˆ­¢ ¨€T£°¡Àà\Ø*Ü`Z ÿ¶a0r À >Á/¦ØH}Ð't <¡p ízt`ndh€V 7ƒ`À Ø/¦!PÀ’#Îàˆr€¨!:`  C³i€`> ãà@`A XÊ :AP àªâ<à  ¢ý¢~€Z¡#Œ¡ 0ÁL›»& À@¦€º7Á ¸A„hà{âáøàÚ€~ŠÁ„€ À ²¹§Š’òL_¸¡¤a ¥ÏtA  7ã§ V£ ŒA.¡â äqŒÀÖ€ôزÁ  4  Þ­riÀÿÀ@îûýÔ  †€ÄÑWá``0øZS„M:B[N㞌AKnçš®Œ¼èébÒq¨ª¯Äl}s0]7P"M0pÂ^{Ùµ##Ç\WOøÞ~3n=ÅL$UP#=Ðoüf>«ŠÉºõÉ4È"öûž!·†Švp[# R¤ï:*ZÜt1u4çŒAÜ` Á  #袺Á˜ÑQãÁ à4àœÀh5¡ \™æ@t .¡€™½ N·Z`0&à`0+6aÈÀ Úà ¸'ö@ Ì ˜q`¶@º¡^ßmÃd=nz²¡ ®À8‰{ÿ`A¸AH]¨ Àæõ VÅ“e¬Âšp›æ„Ó1bU“`Ÿ&„ûd‹E¦ñ&¬*OÏž5Š]iQÌÁ—nÞŠÝ ·ªSœ=ÆVL¸¯˜YØŠøÁ‘1ÞO{"¨”¸‰§Þ&( w‡[/˜=VMˆ—i…©3ê‚­lqæ¥ÃÅkóÇ«+ñâ)+6‚’o{”ÑäÍØ•m4ïl*R劜`WuCQáL¶Uwî(ëä(C±6ÚÀ¹Ó‰·xr&œ &§‹oÞÔªäÆ,xÆŽx“väP‘ñ˜Æû”MC±l¼Á‰pEC","p.Vä’Á®v &Þª"€ãá`ÿµ¤X±UÁŒI+S†wPh@YU»wîÜ«Q+£¾|úõîÑ—oÏžÚüõòÙëW>½ý²ç]5Ò¢^Ü!X‚Õ,“ €åg`ƒ Úg 5 *8¡ƒ >Øá‡ ¬—!{Ë”§a5 ¢Èá…®·!‰$šèaÂØ!…Ý©7`‰ÝÁˆ£9Þ(aâₚ˜$5h^…Aî¨dúèdŽE:˜"N ä‘#Þ¨%!V¹`—ðåwa}*†øZÁt¢L0mä ÌÁ(S´RÉsÂÌšl“–ÁÀæÅ„SLñ¶ÂgÄSDøÿmÏæûëçw|ôÑSÏ|õÌk_ý²Àÿà?Ó[^òô—ãÑ"I%ú@äp© ä€G8æTŒ.LÃmBXJ ”±ÌâTˆt‚Œ"À:¨@0*0 c8ÿ€:èB¦¶á‡`ä‚B˜@ Ü@DÐ@GÈË(2XXa*µ’ƒtðˆLÀjgˆ‚ ø`!rD š '‚!’  Bƒ¨Ž3£(ØÂ'³‰Wxà—€¬&P J€ác”JSø >B#á8Í7˜AƒŒ¬sx\ŒÝaP° |1¹p¤ ”˜G$±6´‚œØT²‡8\B+X‰O® ‹VÂ\ce/nHwuƒ(Ãæ0ŒãŽÂX° ¶ÝaU@ŒA“q ­Æ<öº`° ™¶F|MS_áؾ"?DìY©*X¿¶®ã+ bÖņ/°æé’» T# (B8‚¡ƒF¡•hÿŠÄ «.ÀQ˜)_ ІKDÀӸ¢®@…Lc!Æ*ƒ6À Þ0†#|A…(píÝ Â%øb¨bà²È b3À¨—8ÂçFë€ldâHÌ8Nf†-\¢\놠ÐÊ>d" ‘Å æƒ=ð±ð@"Ð…  ¥|@±¶¥L€VÈ*ärZÊA³Ö&ÀZ®A ›(úÐMå P0Ã#0±–E¾hqb¸W䢯‹a… Œ&+$.a„vÅc ›'vE†LtÃP%Z2›ôb²†ÔºÑ >˜¡<Yÿd±Šo¨!1w( ’`†°vWìÀ Kø$ØñŒ Ð;¬â >ÈF6dqecŽ8B'  ðáÞ ‚L²ÐU "­Pj*°‡v!Ž8ƒ@à`[¬à(ˆÂ6 uWˆ‹ €ðƒä`9ðFp`‡UèÀ82ablãG`MR©0„#Øúº‘ìÆãTÉ®5®”¬d'Wü =ßó„ž"Þ)ˆGdÊ,•Èd¡=hw½+}äUyWƒA<’wzGo ÍÛB¿w’ÊP"ÍûÝçF‘“îí!‘{ß Òw„nn•;Þíö¿>ÿq.™)ߺË3òîÜÞ4Ó—*N¥óD<Ò³*†¨±Œ0`¸ápÀ%¼á€GLƒ…Òè‚ЄäI¦™†&Xp!tC9öÞ Ã†Ѹ‚#d¨˜xX¢èߤƒÇ;T¡~š#~F…ŒcEô%øÀ“%FW0@çf¬…=ð©QsøÄ d±‡\ ÷=ƒ#ŒÐ錂n ²( øð ©¬‚ `09¼Q/¬5A 8 o‚ŽlØ#$á1Îà \a*88„7*@ƒND3š0C>4ÀÇ¡©!Ü8ÄÃ#-˜ޏŽO¦! t\A{ˆT&ö@Ž!ÿo* %Š¼Í ÀÊ ¹8ƒMK0´x¨áa(D,å9Ž)P ‡ˆ>Ä8!‹3X"ΩÉ0~!†\” -Öa V`„F2‘" rð SæŸ Rð ²À18ð ItzÛ<4À ÀÞ }1Û œ ƉßP)+8a ÉMmàlòu)§q: `9 h?CPÆ ÒXg U€„ÀÛÐ QÀ` Þ 90<´è1 L2#‚Õn‚&'5Y±cXrå>ß#<d=iE>êƒ@phWØvYí@rxmqx=u•VzÈÿ{eYŠÞF‡×&‡n•‡‰HU„˜=¿£=ŠW`EˆõÆíƒ?ŽeV€ånµWý1!g•"è"!Rs=@FEÐ Ðm0C—µ€ÜÐ Qã°!Ä… ðNwpwð ä`_ xFÁ@ à[‡'n@À (àµp'Ý T ß§eYð Q0§¢ÏÀNG ÁP s£é¥ÜàfÀ]ðvÊ0PÙe80f6 µ ,k Ã`à ßð öØAÉ0 ²`~F¶p˜€Gv*Q@ÙP'  €pÐ5Opÿ`@ i1'ˆ°Þ \?à`14Oàj°§çgl°–ð äP3± <óC@%ƒäà >À 8 Ê€Ùð Ò } n0&0 0ÁÐ.ƒb C êP–wtÀ ^bÑ€€ ¦dXd vàC ð  @а8°+`Ð: PàÛðÄ` mà5}# í0E r€ ðŽ@­ N€1½ ÉàMPQxGT0™EZ ? »q`@PÞ Ð`à~KP Þ€½PÍ0(k`ù1;Õ¶$ÿ€ %0Å ¦w E¨¡Ba ›° Æp—Æ€ˆÑLð” ,s|` , ’RQ ,p °2€rP Ò€v©Š:¬Ð uPy|ðÐQ+ Ã¦Ð Î1a‰1’À Áñù°gp'ñÐ V +€4·7ÀÄs0&j0ÜÒ ¬ºj!À ¾4ã´GÀ W@¹a,`Ð !8/ M k0€/ðZg+óC ,€TF…À›v)™Ð.Z˜ ¯@P¯pFàF QÙppkÄÀk°êð8¯Àÿ !+lpÒTµó硆VÕ‰|5‰}H?a•³{¥"š hÒ$W$.Gna¢o\Up—U:B$.W# 2qñ# ""XÛUÇ$R;$\{U2qgâ;9R†\ UÒqcÒ%Ub&/‡%Z¢´gòµ×rÒq_ò´\»·[Û·]k†Oâ¶ê6!ä„‹ŠöñqÓÐ]0OP nÐ ÛH/ÑpjnIT1ó”íò ›°µ2 1º±±Ý`:›E¨² ›@މÁGŸpµÐº*µP»3!KT•º4a/Ö"¼ ó ݼ§² µÐ *«Àó¨w‚ÿ*ša-Ñ;¨ò-oǪRÁ.êÅ]›Ð OóvÖ+º*¡L)Ø«žÔ½Jà¼Ë«h¶”LQ§spágKaˆ:áЭÖr*³ky±©~&¼‘÷e¼‚”LÁÝ:»L:Ñ+Ö¦‰1N¨"O Ù2•À9 ÞP‰¡Nhq€JGð¬À bÓ E+#l®Ãt~À+ÀtGð Û Hu7Ep@H•AÃÐjeó Ó ²9 l,„ê6;áq‰õÆã)#=ÒÅA’? Ú<ýIY: ÞV×™@ßöŸ Z ƒ%?ÛIŸQ5>ðƒˆs¼<ûãÆc•ÿžùómˆž€x>OõWr|³„,¡Üßö)’سìƒÇ—¨Wð¹‡o%ŸõAoسöQs€j‘ ʰº¶2—  u %)îBò$Ë--PËQ˵‚BÔ›`ËáàL¡ËPT+·¬Ëb±ËÆ,À ƒ*À*¤ÆÛ(+ÀL!™ÐÑ[½Ö›» Ì®[ÁĮ́Â,§rα:ž’ÌÏ|*Ö+Àe¤ŠQ+Ù E¤Û»Õì`ÂëÌwÍBêÎìgîœÁÓ\Á lÐ\jÎʽ¤Kºç ÎlÐ í̲4Í|*ð¬D0GS@ð8ÒP k‘3qÛÐÿM¬CàmТ¼å8GàÒ9à U ~#[^Ãy™’¹·¦#ë «)ަųááTävYiu$eÉ÷q´B¢p@{µÇ XÉ”ÈX“Ȇ?{³}ì³ÄCÇ峯é‰mzå ×Ó?¶SŠ˜¸ÖÖéˆf…YöYUUÍY÷ƒ†l;j‡bmÈ:k×s½@imU€µ!ñ$ÅÓË@#5·-ʰ •` Ù°í0 ãp Ð y’ÎuŠÑ§+}Ïìl/µÊ,OÄäX+Â<Û»ÌѤĥi1̨³ÑÓÜÐb‘¼ÍJ±Ú¼ÍæÑ»-À]ϯ+¼ÌÚÿ»|d½Ž2Nm/Æm¿ÕüÎÒ͹{'K± ÞlÝK!ÜÎ ¬½+Ϭ½³ò :¤ Ý–WÁÚÌÁ¤k¾é[+Cá(­¦Ñ3àZ*˜ƒÝ:ÔR•pVÀ Ùà8® ”|£>QV¸V'ºá ~wPŸ0GðUŸ 8 £ë’^Ü_Á0 ë)wMíZ\;LÈG‚mÑÃÇ„µrÝ=ý‘=U ¶çU%7"m›´™U+·q§p,·pB†‡´KÒoKîon›qJ o[nŠã&ÆGåar†bqrûæ`ìäN{Ue¾æI²%L»ÕYå×ÿÕêV&{UdYžÜaС§‘'wÓà–€ágðªÓ0¤ÈýÚã0L¿\+µMÊüй̵²é—¾éæ,ê¤$¼QÐÎÍÚ]Ш’ÜÕ;Þ=»üvÍ¥ò}ÎÍ Ñ¹k¾|ä(½ÏÛ<¤J1Ð ýÚÜ|Ü}ÞÆþìÛœÁË‹Ú+Q½,!ì¹ëÐÒ½ëËÝ(ëýv ­ÛŒOÛí°*% H¼@[ÀróúÁÞÐÙpƒGlœ°¬Nˆâ 7X99ð ·– ¯à Fr°,€:>a8Ì*ŸðAõÑ+ b+³ý‘¶Aòãè*"ÿ´W5Öyå>kø‡퉉ݳwœ;Œý†5oWä×Òƒ†n|ÈÄmŠÈ¢HótYUíóöcØ9ÛV{˜×wu>?ËóFŽˆaMž‡ ØÎóˆUUõo%e”}oapuzÃw€SE0'ØÑóG $sì<ÜB͵Í˭ۺƼË-pµ¬÷[q*yßÎÊ@<ŠËÃîLJά½¼½ô\͵"ÞÖ[éá¾Ý§2ï,ÑÐÒ|í¨Ò½øÎ Ýù¬á].¦¯@½øâíΔoܳž»§úíÈßÞßæ¼ÁçÌùÏŒû­ÞØ^ÝÀž»-Ý?é\ ÀpàQ¨œaÿ]¦Ñ nààÙ°]ˆ° QÀi7Œg§#ð¬0{8ekÙœ F0{¬Ð:ªQ'•Ð9 ªÆ6H¢¤£…ÆS•eª ,ÊšAPË,¤¶PáÂeh9|Ña5j .«Vmb™Ô<Ф5P£Ä…«,#RaÄ:iq Kˆ9ÂŒ©sæM™@w¾Ä©ShOŠI[Ft‰T(ΧL{} S Ë¦Y;&*µ*Ášµö´v)AŒ1‹ZýÉ-Ô«2‡¾í*q`Ɇw½–\&Ì•;áp0¡ŽxÊ:}iRÄX2eʇ›x„pñ.‡#p'p¸qáZ„#=ºÅçÿ;-F‹V&:\à­É´ÞnÓíØ˜1üúòeË­+‡[EÙ7jÊ¿u·¾£ìÎîפÃSNúN1Êʰ.þ:ðõÏ¿‹[ž@ºg嘕MX.rzàåŸ'o½¾þoûî}—·N9SôÊ ‹n>âôηäºû »ÊŠyn3Ϭn¼òt#í<ã‹§‰‘&˜#¤i#çÜX%žE‘¦€Jrh£8XY‘#V¹#Ü(&˜¤‰Ž#€<âˆr0Ò8"ð£EoÚð&›²ÉŽmB¢ 8šÑŠVd!)PÐ3¡«rÂ(.”:‚jÍ2Ýë¥2ãJ뢆4òH •> éNÿHêH¥eRꈣ4ólé$@ ´Ž]ÈNBKòè®G+Ô.LUÔ$?3¢ôÒ‰2ª¤Gë´TR=ñÔ«PŒJ²ËÑ>IµKTLS½“OT-UÖjýSP>íÔ³NbcÝ3TMkM Ï]mU/FaÊ˧›øb4 ô‚I†›bŠÁ"™UŒ‰ÂŒbºé˜̚Ë,:ÍÄ,¶M˜ëO:ÒZ£×µÓÈ Mß 6ÁÌ5Ûú³Œ: dð¼Í\E=û.«¯@å®» »â°£ŒAË^›cÞç®3î2¥Óí³…ésN`ÒÒs?ö ny¸æ$ûî·Í0ÂîJÞ µÝ ŽÎÁé|;˜²ùÌÃ,äÿ;þ÷;â&XøŽU¦i£Ê(à@oŒ ‡ãÁAŽ iòˆJˆ9"›‚éb‚:êZ°|+Œ(ÊŒÈaW¶ÙÆÈ&Å(`?8‰ ’&üÈ¡˜l\ñÆ#V¨€Ô:ˆ DMª«•ÕUI²Ê)3:ËUÑÏâœNµF¯Hõ£Äêˆ-¶.:ë¬9qZ*²pç]÷­”J=)à)Ú=v£l²}xµhê ®àgBÓ¦â2ýz×}o}ÎéW¬˜n%ôMQ©ù˲6h€£‚V¦iŽ(qÅ×iôþ¥Wß}ï˜M42Ü¡6á`lD¦›w)c5»™q°ó@ü•†9ÿ@#OrØ2ãT¬BÉ™ÏÌt´ !ˆi,ÐÍT æl¦:­u~“ôäç=[™tâ˜êfÛ‘W`DœÓˆ0:Å™qæ3!ý,l7ÜÏÈ\B§i¦kˆ@5Hc•Ðnâ!p€QŽ„6x¨ Mð†fP¤xÀ8BÐæ‹6´aÞÀ’ýo\!,8BàðG?áqG˜R6†&1]Ž"rY^í˜ç\Å*Q°êèþt¦Òm%|oRž\¸7QJë'؃ŠMÎDIÚÑ)N¯kž›Z''3M -m2éNùë9¥)¨ÌÞ$•B–¼äÅuÍ[ÿžðx©¦¹ŒN—‘¦Eð)Ø) ×lT™`°¡ †Üv‡ntâ ÅøÄ7æB#‚1B¯!Ãj良èðüS†¾ü7@éôs5*œŽÒ s#¢Eh=+¨Ó^¸œ‰YÈaüáN<††EÈ2cÐÚРQ§? [ÏY¨›n½>k ñCD y¦ƒ〆CÄÀŒƒd ÇÆ€FDâØ £2hFœÊÇ;å9Q1XQ€ ä G¸DQ„xl`káp›Ö@F²µ!Eò"" †``E°Q<>ñŠ D`ÒxEÖPÐñkÈÁè¤CN•ŒM°Bÿ¼ñŠøá]°BÄd­œŽRÇLÝêžy=ÙU„S(áìG\%,f•PÎRVgOµ)Ñ„P£ÝȧX›)’0K|¿ê\¡–UÛN~ /™K­¬v ,CáŠ$~êíh‰‹(â"ë¶1îH&U¾“dîN´bî'¡ë¹h•6W´â- &KZÔÁnx-¡EF–a¾L8ŠaÏFè%*§að¹àfbl´éTf/ô¡q6¦ÿ4ätŒ„°hÊ.“‰›’B…ÐLj¶ 8Ç9„£#+Ô ¥-xƒ\ÍÎ*‚á V¼H 4 Ò8¤a™˜ƒ½,¯F kp ³‘HÅÂAJG¸ÛÙÚP$½"œ’–UH’iRŽº”’9¨A=jU×ìšÞ²Ë6Y"iátV¸ÒPN¯&£ff(G ÍhNóM²|¥.!›iTÛ®ÕÔ æ$×ÌdNo”›Þ‰¦a]ÊÌÎ š< M|R³H¯–Üû¥*™½é\Ûš—£bÉ™ÀŒPã õòæA0lá¿Ó(BŠan˜Zç4ÛQÙùÇÏM,X_þºWÀü¯~ÿU†Ä †@ÓÄ ‰T88‡YVÒøÕ]>ZzBì0:4Çb“[™Ö„ΉGnJúÂÜ¥N ÌÉJÎp‚•¨ó©iɈø@ÍØT¢!•Xº”´£Gç)»a1VÑ--."ªÚP„O¸-‡w ‚d…¬ ¢@„ÓY€Á3-ÆÓè®8‚üPÀ‘F*€ Ï¶…°`Å À.K&c O”*9öL>+(RQ÷»Ç¥–é†)lc–%xЧ‹3›‰Ú…å{µö®/kLŸúvIv,‰‡Ì…u†ýä?-ÊÈbÚÒ¦´]M¢RIñ¢’ÿ.«â;UÊ{'Z„[éÞD'0³eÐl¬?„S&ÿ}f4ÃùŸtF#ÀÀÐ=›À@Üá”Á†^ó¤ÈÜ¥Âà4=6¨r€Ú‚–/ÍÂ- Øs”øsøô0‰YEdbž˜æÌ_ÿÑ!{”™„‹Œû?ÿË'"c¿ñ>Ïp웂±‘ãs¨ èØ„ðX±Ìè¸ pb¿x€°~ñ/" ኩ¿­#²p…6Xu¨¹«±²("²x8QHœ`up$YP)ñ8hè  †`p‚ »Dª"o¨WÈlˆ ð'ðƒUŸ#HBˆ]’µÿHiÊ´YŠ6d+5[û-^¡6SéP ­î’´YNy.;d´EÙ$Ï¢6?‰VY.jÈk¢†>ÔÃ]‘”H¡C6Œ®Ri4b‰CNîÒ•WI•4‰B|V©ÄIä•HÄDJÅϼQœ,¼ð¤\j< À Œx‚ŽÓÀ ¨šb¿ ê3?{¢ €R ‘ñÖ°1éóÅzq}©)|³í(Û¸nI¹ìcÊh¡ñP©Žå¨?äë(ûÅQ çpƒù#)s9l‡Jç@¨Ìð¢É*/Ú€+À‘ÉÀ†k,©…Ñ™úá˧“+H˜ÄÀFz[©€ÿ)†H:âpƒ`ØÀ~™ƒM˜Ì E‡ ·²ÇMè7 LìØ˜òh›x0†(‚#Pi¬m`…&Pƒ Щñ¢Z8?È#o¨#¹’’бo‚i˜†¦ºƒ9ˆ‡9è·Oø¥üÀÿp«9¸9˜?9ƒU(7Ê)ˆƒ$‰ ¼â™ðZbR½Ã“¼ÕˉãáŠÓC“¢H=eÓž¼»¼Åà †¸Ë–`Ëܹ gR“Å+=8±KŸXKK³µí/ã‘=Yª´ °¤ÄÜ ëñ5Æó5ª06\jKÄË,? :)¯8¯0è?Û -…Ž‹ŽOˆ§LšÉ Òˆ9 z áÿ°0ja䟘ŠÀñû70*{!Á9FÒàš‡ê‹´ »ãd š(øSÇõ˜0!Gx ¸¡U¨ÇxH¯L˜?vtš†!"p¨³!;‡ÓàìC¨ @¿žÒ‘``"ð˜§qˆ‡Mˆ9Šd¢ a?ùиŽÿ¬ ŒªÁ ìOa-¨x(‚6,yÉ5ª èÎ ˜Hi‚(€ƒ.ɰEjIo(‚ X?ˆÂ€ƒxðƒqð²ñ ‡+HJ6C'ÈXƒW0‚68œ/È›¥K¦BdË—HÎê•k‚O2DUÁ”¾£¤U«¥^z%'ýžÆÿƒTªµ$M¥ø¥0<Óbëµ X·%ÌË»c+Ãe&`BµW¢ZcLÍÓ¯è5h[¶<͵AͼlÃá‰Ä¾€?Œº¢$OÐ0¤zrüÌ°ÇØ@¿Ñ¨){± ú£’*¹˜Cý#÷0Y°ÊøŒÐ`Íç8²Ôv¬ç\\Ý Œ/ÔŸrŽ„Ž9àÉ¡ø")¨™?ù/ñ"C?9§Ϥô9‡Ñ9nü¿õð§Q"‡T±~éج ÿ †çkÿ¸Ž„³(ö膴(’ÔŒÿl 0êº00 †¤tÊ3°@͸‘ߘ¿3hÐøÏ稅ÿJÊ ÿp³t:VØuX«5\ —ZØox9;³b1¤­?ˆQ$©€`èpQ@Ñ#`=Û#²£`0†&˜ÑÆêJ¼+¤ø`ÛËÕ;¥Æ„“©Ãår-H»ÄÓš-eÉ®ÕÒߺÃÛ«ZK‰ZÓ2­Î•ìêCLÁÚ<‰­À-\i­ÞÊ“»‰Ì¹®§]Dçú-®U GüÊEcCUl.Cá¬FQ._á̸ýœOzÚ“[ç1Š Žàˆ†@² Ú„˜†u ŒMˆ"CX‡s@†ê—O 7Œ›€~å\ÛØ„~ÍTô›ØÜœƒ3ø’¼˜Z8å”vú„ôÿvâ’âEÚÕ¡b¨…(†…*¹NàìbØ„¦ÌXB^âUŽh´@ ê]‘ŠÕh,†ñô"¦ò ò< ÓM©ñŒ‡+ø„5ëÖ‰a§üŒmŽâÀ7X§lÔŒqD2LE¿'¥ÌŒW¸ƒiè„Éh/7X$Áið†`xèÕ pÑiˆ80ÊW… د‚¬€ ø›á(‚pp€<*€=˜?\ý3uÐ:‹‡i°ª€=K’J†.àƒh­SD0£5˜Ð$aJPbxœD:‚A„a(9ƒƒWà>ÐD€+Ū„JàƒGp’5ÀI0JÀ„WÈýÂˉ)ÿÄ9ùˆL¼R)Õ,6!%\ƒ646Ã2œ%66 e*˼ܼ¹\µ¯ðËN+%W#5^S6}îØ=1]K¢LËÊ<ÒÙÉ7¶È"LÛÛñËTdjè Æe¨…K˜ ¢ùë(CR,ÈuP.å(…bБpèGð¢ ܰÊ-©#*Ђ-KŒx(€&8è:\•ƒ6È(†pø„ÀðVˆ!¨›€6`…hªŒi@„(øÊXD` àhÏÀxP‡6°xÔ"€o€®‰9ÃRƒ8HÏ‘£K †Œ’ oPGÿåøòcx„Kè†çp›¬†6(†î„"x'·ìKhœ€mˆ‡Gˆ€šø*9 ·q¶)bЀNP-­1…è„`È{®€6¨c ×b0§#è1À™ià‚*ð†ü0? 2¯¿®‰‚K¨Éë0Êo¨„ü½å8ÿÛ²`à†KÐ{NЀ4ÏO)c0eȆ mÉxa‰°c!(‘˜`ðƒ3MQ8J`¤lx…m`o8„¥Â&؆"X‚]ÕÎNðu8›àâ„XZ¶Ð/–dí¾¥9îÂ<Ï¢=]á$S‰CÊÿY”@Ãß2ø26–bùbc‘­àjÄbÁ÷YiïˆE@¤®f©øGœxB$cÞþxfñ”¾ÝÃGxFÔ\ù®Dܬµ%E^yFCÚZx¾ƒ¼5EÜÙÙ=ÊXyp€8èí¸„-€‚-è7yŠ.H€À©—ƒ>ÇO!èà³(èùW0ŠDgÄè†(˜‡q›`è†*øYc€nHJ-[à„Oh(pטc§-ˆƒ'šn˜[x„­¿U€Y˰¨ZH2׌ëÔ€À]jއoPÏXë€yPñ_ƒU€VðÎ;`üxX§\…ñ\3NÀÿÿíŒ;¸‚=8/S†\ð§!ƒÇè *†9ˆ5ˆ"™1XÖ ä[HO72Ýhxn¸‘„V‡àBÍ8‘nà„pvŒ‡N 6 rõºƒp„5p¿ë8=8Ÿà9˜ƒo8‚Öw?n8„Žˆbwr1¦ÎeÞŽ4i²-N6¤¡ˆ(8ñŠÉù4gÈ£9¯²!X Ίk"À9âg389àøÃb iÞ²ù9²$Û’o9›X9B«Z¤ ¬-Uæ)ÒeHPCZ­êÓ¬eŽnZ†Zƒ¯a¡"ýZ¶lR³PÕžÅZõ*R·V­¦ÕŠU-5²IÑ&ÿ½û+ܺlµjå[W®Ú¬†Ûò¥+Ønc€î{–-eÂûÖ Œö²`Ç ÿý×*âÇŸ÷r.­ù³áµ¤_kjգ˄±–iðU¤Yڮ؄Žü|›@x¸ ¸œH€åúó;ñºñÄ-^¼U¶Ï;R¬S±xWæÄƒVÌÍ*eÒÓ(P,}<ñ¶Éò¦ þ}8´A{wl’ž1²À‘ž~÷37™Ô¢ŸðAp¬O0EÈRÉ}ðÝ‘‰²Ü݆_üRŒxñLp7qT0Ç*âe’I²ÜŒ2wLpE'4ðñâ‹ñd²JÆp‹«tBb\±ãÁÿÌÖÏôÒM&wˆ9@ÈL0µˆ'æ6B”0Á8ÅSD¼Èä|kô “áÄ3N'¿$ƆbsE+°8A0«tƒÉ!Ýàf.:²Bx­RÌq°×IÅ|Ò„,\2¹¡` §á†W¡ Ê(ãbžìŒptAE'—°"G&g¸¡LÛ,@Ì+ÛO+P¢Å~°’Ã4rLð %sdÂÞ,¬ ĈxSÄmÇW ­ÞÀAƒ1,¼²†¼MxÓ &\ÓD„‚Æ¿ ˆvÕST f0Á­5–W5ËŒ-IIµUR\E\MÄe<ÖeÕÌÕntÿõq¸­Õ1Á±E–ÖÊ'³æñ^yÌ²É 3F³É¤yÌ0a-“Å3gž–rȪ1 4j}´Ès!]ÙgG»,²_½uµe¤Å<–f2›5ñ2ÔdRŒŸÑEƒŸl´J8|hᆋwȪ /$+ ,éã*:<2N&áìx‡½3ÞšñÀÁG-³Îý #j7Þ•@±‘ÜÚ±Æ/s gh²32sÐ]ŒBtC€‹pvB…é‘ÎäUxób|ŽÚqÉ|>ÞÁ^.œ$䣋Ý|C£ˆÃÉ7j#ëgŒ@¸gRwÄ'÷¦|¸+MÈA²?I‚W¸¼t’‘6ø!œ8BXlD€­X –°„&ÀÁˆX@¬ &°€fMaJV¸šŒÝEdéLXÊÂ3ºÜ%3+»XÆ"Y±©ä&*“Ø%1FIMjì)´È'=v1©4l“ŸÄX%ÿÁ"–UR¬•ËQJY†WVå6ªìä,3IʰÜ’ËM*oC1Œ¬˜¨¬,+VL\‚M”¦¬d.£)Ìd¶ÒbžÄ¤4k¹Ì‰’µa¥Å æÌhúr3oIdØ<¶j„¡Fá@O1pÐ e¤‡ÜèD<ª¤Œp¸! ;îv76# €q‡pDžÐÄHw§q¨¡á‘›@€ƒNHð|{¸„pÀ¢ðä§ ¬¨‹ÜP x€ƒÚóÓÁ¾(=fˆÁ~S£ó@™àÒ†&°‡o´á ¦S[&(O\0g89˜ª ‘në:(Axäs(Xðp¤û 4Ñÿ¢Æ£Ž°Â”Š ¦U|¢GŠ®p€A{ÀàÄÄ ;Ä`ÃÈ\e‘€Si'”€BDµã†;tC” öà*ô@ Õ+ª€9\tܘë0¸ŠmT!8ØPx:Á‰ü(=;Ê 0Ñ F4ä`†‚‘‰n¸M?ñ á'áŠnph•hCQ÷Ÿ¸Ä#2q>¼äWÈAöÈo4a˜°EŒ`ÁUtäEÝÚ W|ÃðF\±/?xâGh‰ ÐJ Á,¨xü0€± +ÓJÊ"ɆýRc ìYÎh¶³¥)FjpšÖdc³Éÿd8d¨‰šÒ4ü3Ð,lg0+Zˆ5c5½­2ŽÔYÉRVÈ™Ég±aÙ]†cWØÄV›ðȼֳ‘)l6«Q ˆ;CLb~*¤¤Æ2Â0¶p(£(‹…bPK³Z(•[À…f$Àn/`Ca+$ r MÐCs_‹:?ܳ³ÂA~ð Ö}™°p@ý‚Á¥`È¡ 9èàFP§ôh¡Ó¨‚yVa¿Mi¡‚#|:ñXœö‚õ‹CXe¤+ár"ÀýŠá‰K`Un\ú ÚÀ¨ûq©`8C&×#Ð ¾›Ü£³¡ÛFM`ÞF7ž` M¸ pæ¿,*ÿ<¨€DSÍ!uŸØÐ‹à#¼<(†(rÁT1Y›S“2äPŒW,à?eõÔ0…iÉ©`ÀøîÐ Iï$]<¡çp <‚’CcT¡ sÈV°†b$"®…®ÐWH£,( "ðƒ!H#Ù°B_pêhÂ+– cl‰ ÚQ‡'ŠPW EpÀ%zðŠiTàÒ%:´ M² tÊZ¨^*ÒÄÎp`jùàDfŒ›ãŒeÆ`ö±´¼%kŒô˜!Û.´Ñ¼5?;Ír⛑Åéð…Ufš¬ Yk§LfðrøÔœŒ2‡ÿ/qÖ^ìx&ò‘‘Oø¯ký”0>JUÀ¶0„!:ñ(@4!BIM€9@›˜x”ÀpÈ¡jh;Bi Uôà& 5Ô¯GÁˆS ä.Õâ”`”©Â1‡\l#fT18QΞ¼h‡\ žU´¡ •j—&€ ìÁ¯™ãF1 `BÈÅüÅn#P œ†L€-PBx¸l ’ÁiáÀLC-@¼ö¼H|ƒ1tƒZqI1D€,¬ÁŽäV0dÃ%hÊZÉ,ÁÊ Œƒ§$ކ¬€,lxÌÁ!؇¼ÍIÝÉx¼“@$2Ô‚† =Mà†0U PaÐoÍ 8Ç µ@&é$Ðä ‰Pª¢öIÎÖFȇô}©" aÚy@ÛšDT~°ÊB}Â8Œë´Î&Iª¡r¬É4pC eJ~ Ç'"åpà€–Î™xdC¥š~à'L–‡~lˆH‰À#¨ÍSºÂ0@7ÈAb±g'„‰HšT@´ÿ °OÌæÌCC±C4AA67D€”„7TBdM´ÎéQ< ‘7lAÉA´Ä-ZÀÒY€žUü#‚*Rãuc5bl5m#Bc‚LÇl,‰MҬƑ±ØæUhˆ؄íX.*Íb¸lÞùX͘’õ"ÓhÏ.ÍÊÎÞÎÞŽÅغѢ ÐêXˆiàI#XPÄÁF‡ ªg‘ Ù¤m^QÙ`¦|Ðtˆ‰MÖmžbªxÈÇáöHÿtðîiÑŽxô)Î[fž.CÉi†ÈÇBîB±ÍàâUÜC¬nÄèúrXVÜ ä¶È¢ðÍ‹¨ßBOP-T‘ؤœNŽ‹ˆvÄ©æGȇ\:‘î˜ÄàlŠ7 ³Á8 \pBHñ¬Â¬"‚xlC`‘MöÁLäI"èDEø×6dDÜÔç+àgT‘+à§}á'+ì§,ŠØ×e¬e䬇Z^hd^?.£''R&Å+…Ò-q“Øu>vS0aSçÓ1] 5‘RĨ’ ó ()Ͱ:ÕpWdS “/½c<’pÿ #ÚYR:z…7Æp:ê#:ä:&Ù(4&1‡Ó;S —ð-9­ƒÁň^|@àŒ‡1xÀ3x4høA@t7HTÉ)4Ù2 4neÈá0îì \îGþqñÚä>1/ØÞ1󎮥Þ1Û’néæç2é «ß¾åç /™ NYò™M`‚­À™¨*2tÉ#;ïáÇGú-#'P¬R2#²*Ãò–î±(ûÈ Ëé>¥_ñâ)FÇæ¾r#‹Ç[J®™ª²¤²¥æG<4AT,ÃÐðAt‹pƒ lCÈA%p”@ˆb<­ÂT@Æ­AA´„ÿ1t¯¨ƒèë¬8€8 LU@pBDÁKÆç%pÂqÀP‚è@A¿´RÀq9ZpÈš£Ôf°8J-· $@bcABûÿ7%#4ŠSW„¬,íp=¤6~ì +q4þp7†“€òã¼?cDÛ;8:;>Ú,Û…A‚ÑB|IånAC4Îh}AlADG?1Ê•*P i<è–uÚέœ.Pû8lÎ^Ž“€-Èò 'ù?*‘ã2\Ãò[Þ5éšù–GGß&î\G\›5ÝÎíŽ3y84¹e²` yÑSÙÏû8éŽ Ð£9\öj s¥N²'o,«’ÿ<ó ³!·6Ò?yÉL¹A0A–Ü¡Q"PB%8" Â+€G1Axel„ò}-TÀLDÀ6tç¾¢ºmwÊÁÁü¯7`—xÃÿuÊAøA´Át6ATB³[b‚-“ZìãuExhĨY|R‡z´‹Â¬Ì0^É8ZLøã™Ú‰h‚(‰–~~犥€òbÞÑh‡èL_^Œú>}íl˜~-žâ"ã…~ ›Ælo,C˜PY—|‚¤Ú>uB'ÌÓx²¹-“§­hǹ2иôr\€¤òì)Ë.̸•ĸpá&$hPÙÀ 7ÅkÁ0ÞÁMÊ,îÁDX0cÁ ñ”MTÖ"a8ŠG®ª1eÅ V”yS$Ëœ)lOdÁˆ.,fPâ„„9u\ªóÎÿ!ƒÛ¤Òè&«áÈTt¹JãÄ…K= T4\< ÁˆÆ+V¬È¦‘ñ‚ùÑ#Çž (bTØo\°• AáçS1 wF*ñ No&ˆÅ;¤‚ŽlÛ†¨H¥Û¤¹i“£Ÿ(WÔ([SiÅ‘J¼•±mPÖ@U+ãûömjeh~ÛøojÅ©Ucþ¼Zµe¾iÙnð{:ñjË­wÿ½ùoåÈÇß^~¸xßÑmŸW~{rñäÛ—_ýõȇË7_ž¾ÿæPÀãÈ;o½ô+=ãl¯¿ðÆûnÁöÖ3/Âñóï= ÓCPÂù dÏ=“ó­ûãϺåÂÿxâ ¦VR&#Æ|Ú(¢”I¬ŒR:i(‘‚é)#ŒÊD¡ŽVŠJ¤„¢ªÉ³<Ú$£‡ŒL’"Šhª1¨…ÀÚ©Ë ®¢I%eÈài£ŸÂ±R£“02Ìž: ç(޶$(¤6ª)œ9èÔIL¢Žê²£®8šiO•ØÜ“Ì™m² •,hP@=ê(L´2‚ £ Ψ`…ø°âˆVhc‚'âY%“W\)ÀSƒ‰J±x¢Âè"ºüxŽŽ8¢#¼#ƒ¬ðãˆm$öˆlŽðµ€#à€£€6ª%o·Ü@±­ºø,/¼p¬Ð·æF,#\ý*4ð¶âˆûÍݵs»èºíöºwßÿ•Î^ߦ£·šë¨¹Žß2RtÅæ˜˜àì²ëöaÛ²#¸:ƒV¸;zF—aŽ=Ön_Zš;xaé5¸Þ‚KÞa‹S¸ß–IF‘Ûíò­¸âóí¸ewWÞ^ïŠk9â“!¦Î^˜A.9@àr^n`j–y‚”ºCK'±JËʬ$)¨œÜQ©±v4’±ŠÈJ[ËLUbŒÉ.Û6²$''0Ô¢ ¾œ“"°Âù2ë$‹bè¡M&zˆ§„'ÛI«ËŽ3ípä"#œqÆ‘+'¥:ÅÈÇ0mì‘N¢2+s®x*èÌDÝÈð1 ÂR›˜2k#²Y¢Ó¥ rÏ+Œˆ/ô¸" -ÚÿxäÙ9> &“x¼©$Nr@„›p¸A‡b°F1Å»c•OŠgšJ¼y$ cñ&‡Ö(À N‹ù6tØ„x(æ€ã´å-A kQ{î4éÔ«]ìÙÐÀ¡ÈeÊÑP‡L”Ÿ !è8ÒÏŠ6ÈŸÿ`ð;ŠŽ·Ø£ qçDbWáÃÁ Ú†¢»ö¡Ú&B2—¹ ä zk@*‡„A÷„°Aìò™«Óœe¤èa¸‚KÎb7°œ-?Qt„¶ƒhÉ)š#à0B#…€1SmK¥”%1š©Mb”[ïzt‘«ñ©o{Rœ²£3Q%dx[ÜPÿ¦·=ntd»Ôº‚ô$RztãèF‡)0uÑLOQˆ\’ôÅ×Á-eƒ$ME‘PQv“”žt§ËÀ gˆÇ4¶P€&ÄhU¨@¢p„LeUƒ‰B%Š`+Ýá@qCÚ\r‡xà€.ñ(Â+ŠPYú¡°fδ eCtQZ¶tCCä¸KDèªa¹Px4—-e«ÐøA‘õ…ê9ÄÚÇŸÊϺþ¢z+Dú̧º*uÞˆTg:œÖp¢÷tè~0í“¢ RÏ Á…Bõ˜È<ýgþµÏJ͉PŒQ”ZÙJºpmH7§#E:Íÿ©ÑKg9 *7¥ŒmŒX¹I¢&Â(0*rzŠªªT´h-“K¤SH‚µÇuF’‹ëtä3j4êjÁVJ>+’ % E>eª­"yTOÝhIÙYrw3ÒRÌ=¨Á 9XE0Ä`+LøÁXó>±‚h ÀATmE7x“ ÏŒ‡Ÿ&ðÀôÉVϬÓ'œY 90©8HÎÿz“N|þ°?(í–ˆŽÁ E48³XÈj¶´~±lhËà–І2ç2i7 Ú;©ƒÀxÕl`Û™'͆ 4ƒÙ ;á=`ÁnV]~bð:.t6F]ôл÷Ò®v—ÛÝúzWÿºòœ®¼äU2•ÙË;ýe®¾Hf@ù'_æQ.¸RÔ€0D1—KÉ’„×䓟T (OºBÎæ$¶UmY*dÚÙ¤+%ÃVUJäÎ:"Aª$™‹ª‹E瑯^µLfRÊ&Ît8?¢¤¬A)j”€j)e|In)!±„CÙä0í%YKSh"¦¤ØXviIï„ÜSÝÉC6[\5˜Ÿ« ÚsÉ4Ž0 V¬*àÛ‚"„HV).ùl¤h´˜‡´ j@qçœتŒk8FJÎma—báÁ/·.v2à”·*h‚8­®ŠJt¢4DhEÓ•Qã$ÔԡΧG-ˆRv9Õ8ÿìçH/ýAŠŽ†5ç·”ÁL‡Ð¤>, ÷ R[WÓèÚ`>]ì…¶K‚ëÔR´Œ3`(fKˆZœ×\ÅJÁ R<Ȱ  ì-*¡K-Ø2¶P¤­n Lîp•Z|“%ŠÌ°XÜmÇp¯ Ë{ÊO ²Y¶ä•Ý8 [ºW$eÔ" g+§ØÊ–ˆÄ£k™HC¼ŽŒKÎnØqÙ†ä˜Æ¸UеÐJ'ÜЉpz|Ê;ÒBjᆴ`HÓÐR'`‚Ü»n F^å’á‰} âÒb¨ƌۈ$›E‹KpÐ °Å%ÏìãëÒ2„£Ê(Jž!â2¾d$˜Ãÿ4ÚÀŠm0FÓh¼ñ só|ÒpB<"кtƒ1ÁpI8Í=N€ç•s`®Æ$7åÐôz0tP‰Nè« ´íôºnXÏòLŒ¹Ü±o{“;Àá~ºÓ:P²hëu¦4@+õˆ~¨B²š…ÇVaÑûµpןþm}RÙø/¼DKô@‡Æþ¤1|áÁÆ“/á°T:Ô˜5P3N8œñš§–…|ý(…Ôݬ™5v{9-X…íÌ>v‘ó~[hÓ>'‘¸e,z.Ʋ¤­H (".rÆl³Ü¯$Þm$¼ÆLo"Ö¢l&¬ìbORtÜ“"eøíáÂÿ©iJ'Ú†“nkAá°"¯²ÆËú-0‡,$â>é¤Îä”b³O”6a³Žâ¬Â Ê$ "Û(bPŠAÜÊLwfÉ™Î` àÀ¶à *Š`ãŒÀ¸‡$.NÝâ›Й6à²(íØ|Âé ‹A>ø@ÊÑ<-8¨ï¢& ö‚h¡h÷ jD˜ôNæaÀ˹Êki¦ gök8:†ô†ô~#¿ðEbFf ‹ægRfžÔë0&`º¹ÀkcÚkgFf¹È+Àh¹Ëgh¹ ^FFiÊËhŒ£#bžëc H¿.Ê8¨O^¤¦>`( ¶lFÔÿ‚.~%:Ž!¨dö§!ªÎ rê bè"Ûè"ýÞDý¸qÌ-* !2nÛØ ÙþbäÒ†16aj1² Ű"J ! âQÃ%\.讂×ÈâÂaHäâk"šBI:ÁIÂ* ä.bÈ Äd .ü´RÒ""Š¡îÍð r¯ ¢­<înÄà$•âÜ­$²‡ÿ2¶Àâ"?’N ‰ o¯H¢pàµ6‹j:!"Wb³‚nŒ¢:A J(#>¡èTâ(rŠa±ÂAº¡‚Á"` ­V¡ ð¢²Î®`ä þ†FJ ©ÐÿM ºa~¢³>¡$+*"¢êÄ`ä fK7è¾QA¾kfÁ¬o~φtM>ÐÉöjólHÙ@D‚-‡¤¯2W¸nmönˆ31)¨øDóÔòŸ:hB„ƒ:ï3g·ª÷@75¨DôÃõj„’‡ŒëCp( €®c`€$à¨ÊÄG’Dü€ì!Å ë$íDgÂþF-"ÛŠä "è2gŒ ðL*c.æòË\ÂVÁ 5p€€Än#Š3´3¯ /¯¼®ÖÀ›¢ª ÃrE& àÀj¡‚{¶ÁDK”ÚÀÄä"”áðPÿ£V™€®€R‚ÌÇåbV!V wæ­|æ‘Ï6!ààKÜb‚Ú€#{žçµ´ç(ê¢ –)ý>A #À™Dr  ”­0"ºèÓ%#LÀΓ(”¡ º ¶ì">¡ $`B(ü  øàˆ"-Ša ˆ¡¸Q1äàtà@Zè’á  r " *AŽ€ œ ,¦A à,N>Áô€Ô¬»à¤!xŽ>§ æ¡ ¼¡ ”Ɖ7Êé=Ö ó^m?Ò£À̀⫱¡RO8ž £6J×Ì¥¡<ïÙ€S J*ÕŒmUSDBÿX‰ˆŸ¢M„ôp÷t3†Tèùò0¢6£,sõHDõ6dÓšu5çãùRˆ‡Šs\b¨bšÃ|ÃÊà ôû² kNçÔ‚rª&Š@a³´N ¾  V€çêFâà¦a³¤¢"  $€çÆaU@4!>¡j bª  ¤) ¸Aªà’‰ ÂÁ*à-à­ª‚6” ª€ &t$žôª ’ÉcÀ<€ÏŠÁ zÖ\N 㡪àÚ€+ªf$Àª@FB1”c¿€f ¢¶@  .â"Æž!„â\K`áºa´2atÿ  ¡ÝÎ0`A áÖMÁ b;a¶¬   ˆì¨¡ ˜xN—€@ˆ v(Žà!Ö6¶*Àø  ŒA–\ÂÎâAà4¶ˆ¡h@¸Á0¡:À.¡obL VàÞ¢·à € êo¸Áâ" xªô@1® ŽQ øÀº{®À r·ð¢"ÀXA (mEµ œI²®€Ä€Þ¢ Ý.!<€{¢"ŒÀ*€>ã ‚1³åzÕH(¥Œˆ8Áe4=ohóG±»†c»ôeñ¬©KôšhgšëÿK‚9ØWq^æ áÉÓ a¸ã¼Šfb@12ÕKžt±ERXºŒs‚Iؾ$8c"câ g&ž”K ¬‡žäˆ˜ƒDf9›³¢@s.®“Ö$"žÑŠcàô` ¸qmAÀ@Œ:  à_ã!<ábà ¤ò¶@¶ŒÝÀ-Æ! @á-À"ô`„âÔÀ„  €Éðž<ðÒ⎠ "@ŠàЈâa4àM×Öªâ^’"€àºãÈ”ˆáœw.âáV(¡ëZ ¾¡“Hµ€ˆœiœÉÌ€XVwÜÿ€¡J9"î`¨Àl‰A{0¢ªÀ<¾nÜ@ :@dYkm3ášá¨ÀÅŠ¡À º ²§$¼¡ ¸@*€Jåô€ ž#  ä@à ƒá¸á è1™¦Ô`Âð& ˜!XOŠ! :àâ@ÍV¡4€¦á ¸Aö@Ú`pÉ < t ±¦êÚ€¨À "ÁhÀ¦Ú§ `b èhE ¤Á^À™¬0vÅ fkVhÀ¾!,n*a^¡XŠá -U-µãMæ_rƼ2õ2í…¦uù&Ó vȤ$ÿ*=Þzó€1Úd ú>jó JøŽÓƒˆu5O Xq^U¥æºÖФ¬ÕCP¨4ý)]ü¯ñúZ¡OaíWCíU˜Ø9hÁÕÜðÏÖä$¸fl:ÎAÝÀ¤` +¾N a´À1¾Ða æÁÜê7†€öàã„`˜|è¢AhàÍÔb±æA À Úðša.®""Ä@ ö@öÀël¥ dAdA²(ºAÀ .u§zá“@%‚áS `¶yîëVáÔÀ˜¡ÒâÐZ{(!š‚¡  !—¼ X!šA+7aBaaÀ€ÆÿÑðà@ ÜŠNh € ‚.œº0€þ¯›–¢Â™^`´‰h€ ~!®.-Ö@½›ø á-Ñ×8@æ3"+@LW ¢!Ї(¡/Ù­æa Úab«º!æ´ æÏ(9AXá¸a躡Þ–¶Áz‹µÀ`hà)í®Äg×àö' :`š`Îà†À 4Àz›(Ö àü™~`À€¾Bä LàÚï1‚a ¦ÀTÔÀV0¶|íX8%$½FݩNj1·ÕY—Ï7½ÕˆhíCxó\'s4w3·Hÿ34[/[Õöfo„.èø~sX Ÿº•DÊõä\×Zƒ¢O‡º•Ùx÷ZOú„³­‹¦³—Ô@èqB‡ÄkrÄ´)GuÁ´ ÌŽç€ žZáv„* ˜Â9‹Ž€„ º5':à8aG2¢XA `>Ï>+t º.À  ¶Á g¥Zú¤3¡0 k$æzÁ*á(`V.¡žá1ðä h  º4-D4b` ä`±ã^@æåà™#êvÎ`GŽÌtaŒÁ-J…@¸#B£§`XáÌÅnŽÀÈá FÎÀrÁÖÿÀV\‚„ zDtΠ >aGVá ^à(€ DtgõàPà °†1ºÁ: ¤žNÎÀ  Vó‰¢ ÀŽ@{ÀgŒÁìV›#.!^k1‚A!¤¾¿‹´ÀïP¹øà à 0ó»Áì€ìnGŠ€È¡Š  •‚ Ž`b  i à~@4`Ó[¢ ^Á £ê>iD<`º`³(Å4 4  V`U¼:[ĵ뫞0Í\wUõ [Ù¢Lµje¬F«µ–Iøà²«M,á@Z BäøÐcC‘1ÿRCH£E‚Aª|ÙQcI‡U¶ÈqaÁ‹4=*쉑$Ì D®,s1¡ÎˆA—‚l@)CT§¥u«L˜UG†dªÕ¨ËŸ>C­˜3#OŸKkâ$yñ$Q‡Hë&ü@MMʵ.ž_e-ÿíû7™94Zuð,Üsæ=òT쎲xrÚ2õ¨X±x8æ ¢kN¸ÈÅ €¹ô…ŽxñŠÑ°3/[<Â¹Ñ 'ÚÑክ †O± Ê&t#g…ÜœU«‹IsdJ…Lm“û¡¡Óâk qgÂ*ÒÒz±Ò­yíG(‘+¶)ž²`¹~õRsÇn™8Ð %`ÿ±iPøpÉ/Ó¹A'@hpÄ'ŬÇJ,üÐÉ*™uòÃ.BtÁÆ£Í! %½ Ðo«tF"p‡fÅB%—˜ØI<ÜX²„ tÃÛp8²,Þ¨W É<ÂÂ<{V̲ìóÍ(8LÀå6žìC‡Å(ÃG¼³Àz¾l±\<ŸcJ6ެ‚ƒ2wœÑWÐÐÍ*ÃÆÍ|q†‰8áÈ`ÌqÇ*«ˆAƒCx²ŠÉ‡143A Ä4ÄênjHa„s z˜ZÁ*ÊŒF‰.ñ8RAfÃE‘À¬€Å „,(h( ²¥­\Qÿó¬Tr)$еØf‹,Aq›²‰+-A™ëí¸Q•BÞžä®»]{P»õ¢Ëî@åÄï¸æŠ;növK0Àþ"»n·׋ð¿øÊÛoÄ¿Ûï¿‹û­AO 0¼×¶‹®Ç‡¬±Ãàb±À‹Œ.HÛt--´,SÆ/„úWa9¶aÊj8›à6 \ÂÍ4ËeƒT†j18€Í7NL&SàBN’MÏ#:TÀÌ*‘…“‰,PÒÅ'Å)s€Ü`ÎxQb._à Ù`š!DÁÄà ²ÈQÅ>n0GFhË”w|’Cr8òÂf8|2Ä/{Ìÿ³I1ÁLpÆ%uÅñl0AUHBh8F‰'¨ÈRD<Áȱ‡,F¼ƒÉz8”FŽà“Yèj|“I+ܸ1ÙíˆáÊ<lÖM0ްrÉŽ™Ï˜ÌrwtÃG,ÐÐ øˆÑŠj4Ã÷à£Èò„,Y\!z ŸÎAŽnliÞEX`È¢ kUÆ'~ rpcv` < ÚDF°¨To;‡`A:˜g1äp‡"@CQˆ®îÀ‚oxàˆÍÏVP…8T`Õñ¸‚&¶7›ñ¬â¹ø6‚'Iã_°Ð'÷ôˆf¡,È†× ¨€\[Œ=@[˜—ŠK<"Ы›"0ˆaZÑ„3ô”„ü¿Ö…ù>úr­¤ü¾>ßúÒoù+üšY‘ùüBé®z8|ÍMØ”ÌÐÜèŽÐ+ÁHs°Â4:žxøÁuso8`.Šç Æ/sBD¹¤Œqfp¯Åšk'P Æã¦”qC&6˜PEÊéÍ×îŒÙd‚KGæÐÿb[  ÷Z˜%A÷{’Á^sð -¯e!Ý@8½Ýà€ê!4spbo · ›Ð ¥Ñ·uKÅÝP#¡"’'`£‚Ü0)…]€aoö+8âa>gt!*¡âèö ÒÖÅà€’*Ð µ(x"ÝB’µ@™U„N*Ò^³³øZã1ø1ã0ù!s€v½Ñbo¨òX‘bMŸàµÐПPšãñ~f•ˆU û7M4avu£ˆñ4îõ´Á‚¢ eøµ,úEKÃ-(Ã0ØRc(&Q&aoc “/¶w›Ç‰ÿúRI¬xг./#JŒ/£/·82÷Å1¨4‹'C1›˜2§h2ØBŒ #JÄèy÷‚G‹I¼‹‚ç_­‹f1—‡Š óHã2§”-4sLÖP|` @v#f…ñ{}Ñãð5«¡ud |qãÑš"|ñ|Á0\X´!|ùQ™1&¶R áP¡R Á  ù‘AÈ|¾Ñ«@uÊçÅp¶ ú‚‘=0 €YÖû'«1 I8ò$Mù!AªfSU¨'«pÂÇ ›ðkúˆ ùAù É%«v·å‡5rR>|a"´‘¤ö{ñà¸}› …ÿe¸VG˜O$W7z):)Y~ëÀ%ã 4Ÿ° ³±„`9\âgõ™8:sIÉg€1MðÇ’a†gÈd”Lʦð¡:£Ô1£Y é¦÷&|Ê\"|Ä€˜¤=jV6¨à‡¦ÄÍã‡Hút¯µŽŠ8•gÖið×íÅ€ÊÐo}a1ùÕ,Bña.áHÿjd¦hŠÜØwí’0±7zÍÈK± ŒÅøŠ$³-å’z²ôyšèŠœŒ‘‡ªx«Á0ФJÀ 3&›¯Êy±¸‰º*y¥„ŒñÓ-ЪŒ³‹—7JÙxaL3£{­Ð"¿'M9SMîµ dà^nÀŽ’!Á¯Á° ÉgWÙ“û±} *’xfÑe…,ªU(44ª¦õ*|Pô3ä^Øu6c6:̶¥ûñ]š¹™ôjò±]: 8 aš£ÊPô™ûz,ª¤Ú˜nРׇY ,š±…Q§J*…¨‚“–Ž7zfV³¡~É?#4 Ùv¸Qf¨ÿ·…µ0@E©¯…A(ÛUØo)™’ ˜³Ñ%A:»¨`gh(Vú°`£”‡ 6¯ûîµ|檱QkÛ£ã^—µ úª; ²üØŽò6}q„_t¤_‹·2¸¶„Hã)–»ºY‰=Ñb ·w³´J®J‡ô_²‡K¬yGôRJ­¹¬Õ(-†·Œ”Ä/¬kJ°éKœH»ÏJ§»–4Ið2Œ¨;x³‡H¤û»ÕXK¬´yÖªžÒ‚›Ó‰ÕÐ zp[늎iFšq½ìšjF¯Õ4£Õ„ >Ó«0fðZM«¶€’1zgú½ êL~‹ ØÅgÔ¤fð› á½ÿñ·µH*’±5²¶‡!¾gº¨ê(³ ÌÀ ¨åW˜|vo×— ÷ø5ÿ ¾0µ¨|¶Ìÿh|gKÂü·À%ÁÔQ°0¢šñ™º¦g¶™÷f}ñç‚¡’±pê¨}1£,<ÁkËg|V̲,‘[‹‘”Šƒ§yÈø«–/òâ:±W\L&ß9EñGvÔ c7eìbÂaeÜckLbm1e!Š7Qdh¼dáReðÙdHÖcæùKæÇhlÇ-ábE6ÇÕ©d^ ÇpñP!3O@ ö4«£µ Mf6 Õ4¯òkÃÿßû3 ª®?óEÙÝkÃ{;|‚±¯%+¿Ôd7¡œP4M½qSe&ˆ±¿Ü®û»¿Lk̼ʶü™*¦IzÁ!úÃUú5Z˜ ÜxêÁ¨ ¾Æœ 7ŠÂl˜0EÁ‹:@WÁ ¢! ·ÒÌ€*Ã=ü{ÚŽ\rS7E—û€Æ ”ôÌÃ,æϼ²BwŽ»š5‚|ž7†º²ÛI›.³˜1×1{T1óº¤z/1¨×y—¤HÉJ¬«g.=›„›šøJ}·ÑÂyÚ»¬äI绦û¹Ç›­{® J¼[I²` ‡Ÿu±2C3”ð8Pº¦ôL¯g¬šÃ­I=w¢”¥ÛK¥›Ü›1=ѼÐÉ-ñ›ÀÝÇÛ¹ÅÅi¹!aÅóIH¡›e!škaö‰¿]‰a!b€t†žçš‹žõ)N!žFEA>Š–b]!HïiȾ b—K·¹}nÅÿI1é‰a ?Ñe3@ ” }É©æ¨Áp½®>LàÕÃ÷ËÈ|Ì¢ÖѤ~Ѱqÿö÷þ÷ÎÙ|†íAÍz¶>̆ϣþ®¤ó,ù·e"h"æ#³n;ÃìÕl¿QJ¹åü³«ÙãŒ,ºâÒ¬ØîÞÍ•ä•îø¾¦%;£Û«µ<óŸå>®å…‰î~£ši¾Kå2w´dèŽ^Yœ^,MñóB=õ˜Wº·›‰™¼FÍý@ïšÖ?1¶[Ý»ÛH*-®»þßoºŽ$Ô‡¤K³çÄÍ(`—K~çyÿ¯·¬ÂЬA­Z™eiUXFá@„ªÑ¢Öàò'=V) ŽLÆ9f¼/\ 2ÊZÜi¡1Æ“dîhô˜c¼M [¤äx2åÍx8]öÌ¥2 _ŠTãP˜+oš4yÓMJ“HSn,™tcÆš³&}yçèŒ&\4o‚2³Ùº];aåJeuÃÅekVoÛ½|WÝ WìŽY¡ÅîÎ8néJ¹.½*°)oÛºqåN(ÖWsßÊzWyÖ\ùsh½t/ç-{w²Þ¬‘[H¾ÎMF¹ ÷N¾»V5_Ë{s·‰‘ŒBâ Ð€²Šx™„Õ.g¸óé ™__Naó…ÿΉGW8ý{™i1?øaÁjÉO?ÿ½Â Ï“78°¼ú÷òù—¯¿ƒÈ³/¿Lo™ÛcŽ=Õ£f@ ’°AýœKpÁô⻯>å‹(¿)$ñÃ듯Œ #¢Ï< 1´¾lÐBüT4ðÄé<¼ïDuÄ1ÈýbÑD ¯óîÃZ¦Ë f•Ï’j'e\Ú)–Š©£­”ºò1¨Z)œž^êˆÌŽ‚"3”n"i%2vj£›ê¤r$8G’“£1ozéJ4EÚ‰*™8BIOœŽm‚^â+·º0úë¶‹ì*kµI;‹ °¡äªRH“"ÌQ>UªÍÔ–~{ÿ‹³»2“˰ÍBÛ‡Í&CK™Mð2«Ñ¾$Õ µÕÎÒU¥˜d2ôŽÂœ – l¶ÕÞZ} .³ÈˆlôB®Ûë÷ ò/>µƒ’¡ç®[—;$×E2¼‚7]ìè_{««×:}ïÍÎ߅»€ï/_ƒ vÎ:{ †!vz®âåžØáìÄ»X]å•Nb‘ò·ÝÝÝe†Ñ…òÝŒû}¸å”Ç{W!÷²Fň–YæƒL.'茊%”jºó£*ß´Ò'¢pR &¨‡²3ž`æJ©' l n§¡tªJϯ;ÚúKDŠiN§RBI¤°Æ *ÐLÙ §ÒßtÛÿ-X·ò¢Ë4¸Ø $¡J ,OÒ+«’î,I²ÛJ›³¤PëµrÎ&³Õ¬Ì5í-XÞ†ÕÓµè®-ɺzŒ lM÷\.iyã 8LCç)‡Ã8ñš«Ɇ öE"Q|rE"{lÂgîc‰þ®÷•Õ¥î`èøXºæ«÷îwÞKÎîàï]v^ð›s!Œy¯^;ï›Ç˜{îÀƒ:íáþäÝõg9‘WßǶç;r¯xÛiß…–qkd‚,„qJPLr¨I'(9Šžœ‚&@ád‚J© œ f’ž„)W*Zš¢"8•PQÜŠ—æBef+XQ H6R¦0 îÿÅpSÝ@5ÊІ/Ôb̤´”ÄÚÌ®4‚bó¶Üü…Ml ¶¶“#vQV¥"Ìg@§—Ì9+vƒÝ³nÕ9¼01X€2WjXš? Ëst£\´n3êī[ɉ×üt—¾"i,` #`ÃJö¿ÉGȸ¶E JòHFþ©O‘<´IædÒ“:×&éžMš§“.bQ{"©Ÿ¥2>œ„d,Ãõ£J°ž$ùS¦H’¡\ñXÉU\¬f'•™ÊYÆ’CÉžŒ(Ís…’=ÝYЍó9éa¸Âg§,U0ƒ€ ⱸ’ÌÆ hKð†ÂSe‚Lwÿq[•DB·,jZzÊkzrµx%8a S™2Ñ )UãÚ&Üf‰&$"™ND¢˜ÈÅm˜§Z”ƒ²@Že¢MjtºN å‡/‘hH\ZŒU@1£#Y'Y4‚ÑÁmbÁ¨I=ç8eHi¤ñÈÌnª%ÆÉt¦2OuÝ[GÆÎ1•¤|QËè·«R‘A-jÜe:*—]mb4bL"µâ⫸ÄcJ$1I5Ë€;@ÎÈ’&‘‡®C$D†¬}öcø‚±Þ)¬{»ö–½ÃþxöòÇ)3šùµ{õ‹×ý’´=¬±è¢Þõh¦°Ì"P}Ô»ìû>èP µ’EíÿxòÅ/¿†O±ÑSvîp ‚¡†#̆'á‚r0´° •;\>8@¤Ù Qèå%h^ìº øa9 ©™'0 DlájA‰Ç ÔÐH©»ŠÂ#œ ­è€Ÿqo8‚± láã8F2¢´Ô 4 ÐÎŽƒKh“VF'¼Á !ÀK-Úlc¤lñ,h€ˆb°ÅÑGˆ Øþ8 `˜Æh”A|# w. àð 0À!©w‰Â<4` ¾Ü Z í´M¸ƒwL+°+‹Ý´ƒL¨X±ˆGà@ ZxF3x„d(`H85`†3˜S² ³g0/¢³XNh…nè‰ ¨OðIËû‹bp+0 ½fü†=H‚)E„V8Gh-Ábè€f؃ Â`†8È\N˜€L¸ b „nèn(IeOˆcК¸ƒéŠƒ"0‚_ ©÷ÔNhÇ"Æ È9 Ì¢Nè1ˆf(x‡8Y8ƒC‡Mxÿ§N˜‡W†B¨Ü`¸YXƒ| †Oл 8‚;Õ€ Õ;Po`….ÈNµ˜†ä%†Ü(€.è†8X›†=˜V˜ƒ)€¢x?RŽñQ¤Êˉ¥öó5ë™ÌÓâÖ´Nr¥1¦!AT@û0%Gê%¬”ù`GZ¥~À\*$%øð¿\’¡¦YÒaR*UC&W³$!bTÊÊ É@ N‘ýã‘V¦ DbPZÁQ¢K”É™VSº ,Y 51 u)‘`XVÀ X·º8Ð…L ‡x‰UØJЀ>ðÌs7ðNЀ ©Ôý]…*øMþÿÛwЀ³å¯U(K:ð=‘ƒK 5ü’ÐNètPÚCsGðB8PÝ`[Ð_˜‡NØØ;ˆ[`…5¨€z+†#+€…w‹Oð@ì%ßx(ø]0)¹ƒ+¨„oPó½‚(]@!¸dw[h‡!˜ONã;À(xKà†šZn‚h…˜^‘ †^0x؃°S>è…äE‰qÈKÀ=PnÐ….( Q†mÐ…Í [Å=>°ÑX (0€*¨„+h!cf „Ø“äEJˆOˆ(†‡bÐ!`ÅkÖ’&XÿhhSµØVè!ðh°êbЀCƒ™\…q0† -ÈŒ¯:*hY˜‰xH0øKÜÔuƒK õ5oà„Z®æº ¬ö„(ø„ƒZ…˜‡ø?ø™È'0SƒnЩÁªœÀTÁ —º,àIŸd ì|á¸TÖë±ì‰-ø;,c 7 V×ø1Lò‘žÀüŸÜz­Ðª­ü­dÓ˜¸4Ÿ+Vlõ;?SëÖ“qÖèHK nlÑ$ÚÂ,êx&ÎR%jàÁZ¬Šòº©ÅT,oh50…-¨3ØÇp ¨-ø…o°°ŒX…¿ƒ 8O¸DHÿ€o0†ÏØØ}hƒVüãx8i`…Cà€9p«³ÀW¸SÀé†Å4Þ€ºa,…W8(šº‚v€]«™€Wð†G8‚Ì€Ûn09èFs±`Q㽃9X…L@ЀÛ3x…lc‹ébcXè„Ïð®L˜;¨šú FÞ‡ä$®†®>(Úµø¡n¸Kî5ùpiPZ{šƒþv\ Y…#o]HÛ¢ÂLÈ„`¤Z‹=0ÞŸ‰Œžƒìe…3‹.ƒvè†Fs«n8ƒ¢,¨»X4/€ê«ñ67†ÿª38€nÈbè ‡ ˜3¨„.H40ÿƒ=ЂÀðªp‡nP[HÝxØ€Ï(W°GYòL˜H ‚"8ê9†ØJ`î ™=põÆŒ0XY`«ù‹pÊ„)Hñ«á>¶ÅKïa æóÀ!q‘P‚¥ûX?Â4ËïñÖÇ6’ɯ7ú‰  AÇ4˜Ê¶í`‹`m¯Ë¼dí¹4™jƒ¶•ÁµÐf?Ë*˾T¶ˆ¹µ¹Ä­^ƒËÒb&„Ðzq‘e †p·‚« š·—`.· òlx³øÍLXr;(µ˜®LÀsY ^5^rxxSuê†WˆƒéÒ’OXƒ9ðJøþ2e9°Îø„4.¨n0‚VàÿêÀ‚988OOãLðƒ3iHq7(†68rr˜´D¿ƒgX"@¨Z¸c(XNw”b`b0†^Pï)R‡0 „G ¨¬c˜ƒ*xæ.!È„#лv8‚nøè„»ƒiHû^7p–nÈ=È(–x0cÈ!¸ÑMX°pÑÛp¸ x…818‘-˜ƒXpÙº˜†5 œm±@ú(p…= ‚S-†Â ƒ\0‚(8(1ˆ8ŒUèc€‚ˆ0µ¨‚#xJàÅgq€GÍÕ| 0ø¹ï\çå†cÔTš[è˜gcÁ§/’ošSáКEŠS ޝV_È;¯Ó¡#+ÔGŸÃI«*â­Š÷)††JBŠM Ì&PA G¸ÑÂ-Ó'–LÏúuáI|ŒCÚ*ÁÐ Äã†gTB.L°á4ü %8¬¢ÌŸ3p¬Ž2µ4! %—À†ÝÍxòE€ܱJ/,ªÃw %? WÌhÞèr‰=2h@9ê£Ì—~8òÈ7E Éeä\rI7 MÌBTÁÂÑM` 9:hÐMlwlÂÿÉ’F†O-ÅèðC/GÄSæ*9|c€`Ф7T‚HŠÉu¢†'4¬C0ù]Ñ 9|¢`r¬|sˆ+8l¢\<ÒK)Ö©`˜`8)£EpLxF 8\â PFÌ`Ä Ä“²Å&„Vpj!ÄB P¦ÑY„QÃXTv±‹^¥{ÑGÅ[ïG{JÅ+oFý~/H(uQº'Í+¼'|‘À=|E!LRÁÙ[RÀûžôP¿"ì1Jg4™½÷†”ð¾ý»°Ä k,rH$ ¼ñÊ%ãsGýRL2Dà F‘5ÝÔÀÖd’ã&É‘6¬rÃê†ÿ©lÄ“I-8âˆ(ÓO7`|è*rLP‹1Ux€ ¡nÜCíÄÐÉ„˜:¡…+ÌL8áÅó @$ŠÃz”|s 7ÁˆL-µü@à{o²‰ñå‘gHKàEHÆ'°À"J€fnÒ…[„ƒC8µžQ€ÞtL1œ­b‚n|Ž%l’É%¬rG1-Ô2Ç ÄTðI0 ê жl<( ÂM„âÕ‚ñ@†lwðŵ`jæ*ݸrD7Ál¢ÛÁ¸òJ'ŠÆ6GVl²þ—§ðÊœf**ˆÇîð%etãE˜¦ÂQÀ=T sÍ4†5Ž#0PvñÿÇ'2qLé-è`'”5‚|¢{¨Ó—6Œn| иQŒN”)B‚Ã>‘œåÉN…ŠNÒ$\Y+_9°RnD1Q%¼° j,ƒÂƒN¢Z݈§[œi393  ?áØPÿ ÍpoÁ˜ ”ž!P:šh”¸<ðÈ&QGÂTû–&<äè(4ßÛ2­$¸ZÄ“³‹Mä6¢xêÆ ›XEvÊpƒ PÖ@d¼LÝ¡Á‹M¢”M@KjKóá]ErnÂUµ¨Ÿ~XŒZ@)@-M7t½A';Ø gð‰Í/µ`Ê©M“531o‚2 ¡F³‰qpJM›`ûÜ œ•ŠFeŠGp\e00S”ZðºÔ%ÑäðKiZ33Œ8U‹‰º‚:1e¥$ázJ’•¾yÂtÖ IÐ x@&®…„Œ”‰+ár³8lŽìØÁDÿ2“ÇNÅ.-I×^èÒ±˜«$ˆYËAÖE„(E)x,ƒRØâ—wåK0œ=Œf[«Z=nv+5)mgù"–¢,Æ%‚Še ÃÁxö%”n5ÃÛ½ e,†‰ÉYB«–á^¶´™µìX(›YÒ6'DñÊv/i/•,#*O¸hÊû$zz‰iOCkïÀ¶å :ìDR.£ ÌÁ«…ÒÈ瀌œPZž ;!C¯~éªù©Šaß/œl ß×fTÙðöÆw*‡/ß¡~ÆŒ±­|ÈX@¦$à‡C„üÙ lîÞ0Ž ‡Lø!ŠÐ©Î,fTÅ2:”© /(ýVÁÀ8<ªëFˆlQeøµ!mÄ6¿\V±K¢d³ÿn‘,sçÂY®ÄrÛ:‹Ù 3–Xã+–°“ö¼>ö°…©ìcs™ô™­É]6LÈ/ÙÉž/ýIÖLgce#™Íýìkld+£·Ùlp’”$#å¾>¯¥Ðâ&G»‚×M#¡•¾_…Æ2¹à”—<‰ù›„(Š Pr$‡ÑÓÒC—€|Å78A ™S¯(ƒx@uËy•W Ìè–€1È4LCÍ ÝŠ%É©tÂ4lÃ4A©È8@0 ÃëlB!‚•¨ÁÉFÜA%@Š(C'ÀA'ÈAèl18@lˆàD7Ì3€ ÕB6ÌÝ#:EÁÿLƒ7AH¶Ap O ÃxƒD€€ùtD@'¸Á4DCà@t×ñH °Â Ä&”€2|BJ|H-̃´@7(Š1ì€tLÁ} É!|4€Lˆ4Ѐ&ÄCL²¬‚0ƒ-D,ˆ‰Á34¬L7CTA€°áÀ×L4xƒ,@]<¼#¼¨Ø3€4t,˜@'8Á*´C4ÜA+,À”Ñ6Ä+dƒÌCœmÃ7tèä@› ÂtBLA ÉxCÌDËí˸V,íÚ*)_ñÿ¥Ìb›òå…®åžcT—bäË» ×¹d¤ºÜʼnšu–î1r EQxÚXÀVFzär9ÆGž‹õ^rád_Üt5€Oì„[\ENö$I>Æeåä«ýä`pdV`Ec`–_¼d©•…PþdcJ ÷Ý-dƃðü›i€†28ÕŽh@‡7ЀÊ"|AœÔ„Ã4èÁÌŽ^AI°BrDÙhA%XÔl§´\Õ6Á3¤YŃ€äÛ8Ct”@jôÉt $3@K<èÁl&üÏ*0ƒ7° ´ÂÓÝ—-À&°Â0°Ü*LÃ<ˆTÕ ‹ÿTt²(ÆÄDƒ:pB€XØ3ä $ÃäÇØL7˜&T¬Â8< P'hÁ—ƒTÂ#tÁÜ(ƒ 4¬Á<ÀHH0@Úpƒ!Ûfl’z^1, È ,q èMˆÄXh>HŽ£#À(Cà€ƒ€\Á©‡êv7ÜÇtB+˜3dÂÂv‚”À 27Á*$Ã< “~| `BÉÆƒ´Ž\ŒJQ<ø'tƒ$C⸱,ÀÙCâCàeT@ H+,¢ÈÃf¨t›ÙtÃLƒÐÀš°@l%ï<ƒ4ÄLA@5j"€%PB ÉBÈÂ%Ø‚,|Á†Ìƒ#tÀ!8B+XVÁ!Ä€‘SB< ‚,@éÂÄù#ÿôl^A08B<ƒdÍ#œ+8,„3&TÁ'L È LC¬@ tCDÁU-•ÖJS%•ÒY-Õc9•ô×U`ÖQ=sMTTK§e5¥‡ •“–i?hà tRto¶§ªj¡eÈ€Ì?¤îˆj6¥êRJ±Ç"N™st*À¿¨‚L™¡:×ܻ˷… û#xœ ÆIÐ ¯þÌÈ"#N1©”‹ïGâÜšê³qܧA‚gk*žéäµmÿ°¨ŠÏâø®sꪧ2ÆKã§žJ¬¯–Ikꯌ9NŠ ª4ö0c¦”3÷*ÒîX¸…q.þ«¯{ ¨Ò­È¢ª7ÆêZJ¹éÂéêþ°"cœbžæ*¨Ã»Æ®«9ÂÚ+´'kÊÈã‹J)¥^^*¼Lnz7káÃp>QÜ.¨ÑVjœM"„jiXêRs’*õµV:} ]P>¡å“$¡ZÂ)¥>Ë3!–ÚÔɦ‚ª©"ØKÂV¥ksG]Í6' ³L éô(rHvàEºh&âm:3øé‡ÇÈL•·ý¦‹8âžz1}suîÉö—À·þÚm«±Ó —$ú€–Aйâÿà—\yàÒmw*½­ÔÉÌgD º”11Èć\J!æ†ý`- ÀÓºñ°N€lf;À8@ö‰‡¥§LrBÉÖ%17œ¡dLq!Ò˜‚¶¿¸K*5„ØÏ°Ö7¯LÅoñ ß–›ðØli2û›ƒHÄ"ÊKj—±ÝâÓ·¶ñ+Šñ!S(SÄ¥°Ì,Qa ÛÂfA¨Yjí’ Èž1&¶mkìÈ~66š+Z¤b|.x™"&„ÛÁÈÆ§…íl ìã--q‰K^D„g¼î¡iuaÔ§%«LFªU#á“î°•¦æ¡Du饚ÒD¼†ÜM·;å˜Rÿéè½ò"9¡d)‹‡½“Lò ç³ÞëP‰6ÕÒ'Ä|]팹=JâŽM“”^(o Í\ÓMÝ«^F䤭>Ñ¢[Ö@Â7<¥‹s9×^Â±Š¥(é…JRçŒtÈ(É)ôT’2˜‚O§<æžØ×þ s F)ø4’Í¢2‡ `A'[Å&"PëT€GéŠá( ¢ôñÃâq‡L°Ó JÊX©Ò.{†c2/lŠK¯bR|úíŠ>dŠ:¤˜vñ-§.ôSb“Ò"ÚÓp*jg]PCÏ:be>íiH_ê¯|úgfÁ‹2ØrU#ýKžû¼ 9ýVyâE:Zõ'<µÊÿxÚ%6{'[ 3¬†5¬ó|ÊUïJW± 16Iáë>YÍy 'Þ[žõ¬y6ò– å'ë/fŽ2“‹üdø}6rX/²¥ÍIKX¯=-© ]¬S]«•Í4å#u¥«1}¯LÑ”¤4›“ZB2!»Ô]F »ÂN:ÔU_-o9Jõ¹)•Ó\µER ^˜¤Ïš½¬ñBbK\þ’×eª¦¯MLé5M²¾5œôÔS ä@‚Œ‘‰Î…/D é9Ô_™ùtžÿQ-Ì`ܢϕú4©U:N1æÁŠ Dƒxà0…“aÕÍF!Ða {¼‚gà€,N ‹Qp#%¸C'æœNèZfK:a<æ3;üÏ8«ë‹/^WC&«×êÌ \P›ÝÀp­«Ì0Þe­ZÜãrÅIžòÏøª`ö2ÉO|qŒg¼Í-§ëŸcóæK|ã^¦«É5žô'ã¥áxÅùS„©9.¯ÓÄôÈé̦Fá O‡®m‹—k_¿غ¤zÙeÇ;Ù­]˜‰Åžê’)êjòîyˆežA Rj2ºìro{%1²ËfBöv+¹´£gøš@„wmoÖ Â¾Qû2Ò€ÿ€–Ð82H­-3ŒJbÂùyY%Šû3×kèù¥‘Þg|¡X ¶À‚ ÀÂ,È#4‡nh|€†)dуyôB¹0ƒ7d1YdãB˜†P¥N$ƒ7…yñ²ùîbR´™¼î¥ª0ñûd• Ï©Ç#®?‰UœãI£¦%º‘‰qÝcÐIã¯òk7”×ÿ‡Œª‚>NFŽÎ¨5’¢ob莯ôh†ºFþ°.Æ^¶Hcþbh‰ÈO‘ EÐkðà®ðLm'„Ç}Hɘ^ U(Ñź<'VjåUŽëV"íY>KSX§Rx‘¥ %T:eS2‰1ÿZl°Y¬‹U¢K¹HTºŽXŽ·†…E+ME¸^ Ñ.¥W k´d%TÂpQÐpëJÇ´bðДE •%ò²ÙXBT€bnA ŽÀ ü)c¶Ï\ÐÅ]¸ûf(õfè«¢\†AHÏ6®Â+6AXá $À* 4àªÀ âaºA\¡*àP€¨!árázàæ €a @¨ôà.ždÜ`büC퇃öÇ „žÆ\€1‹ dìÇôÄ”† ŠaóÚ† †aˆ‰q2Ј÷'a8ˆådâÁùg!hwèlNd cf£ÿfŒ fÚŒ‘Úf¾1Ûmø' ¿±©ê1¼‚ù±§¨‚HãeZÀ¯ªhlÆ!꼤‘öä·.©¸ö¤Pz+Qœçu8Íí8â´„IÖ¢çØº‡vK#Ʊ¼Ôj‚ðúN'€)ñ†ÉÑBÒ—‚Í$ o—NâÖz§±fG$<-Óª‡{”ç&*é˜Ð'zîxŠ—„²ðjÉuÒV‚hAWPáÚFŽh6r$]îå\Ò¥o”FÍ¥GÔ²ÿÞÑo”c$Æø` @œ€ŽÀ 4aã ÀdáràÎ``ñ4  ªàVà:Á ´€€‚àa€ zäÿvq -wñ¼‚a·Ï+Î5íÇ+® GÄ2¸Žäeˆ„hH¤û2)8° ˆe"C^æ5PÓŒP…þbH2Ä22^ÄÆ$1:ð7õ&6þ'¯VïEJ&6Ôˆøª‡&†ÄCÚ¨§Š6S¦dfȯÂc<è#)ž")ì%<>ÃbÚ3иd©’Ö4íÔ`-LH%S8ëVÎp“*"@' –~é‘D²?Ñî™ ™Èäñ€'”ìî±m'-Tš,”ÔT­Cg 'ÁdÔ\ñ|"š¯|¦IBkr&áî?5í?”±†I•(IP´k›x"P€b+ËÀP °ÀÎcÿŒ4#£cPS9\ÊÚNO9¤M9´óE®À-^$^„76Àj VŒøÌjab°‚ä`ÅÜ‚¾VÀÀä@l#Ü&î_ÃNçÍ žâ:¬*¤DŠÇh,ʰJŃ^ìEîÀPåÉPTÌQWÌQ%µM uP)•PŽR÷l2aÈÈì µÆØbR!ÁV eÒ Ï•ÌîìTñìU•ÌUÙôTYÕU'`ÏÚÔ1`ÏtcÏ Õ1|µM?ÕWÔHÛÔHçàR‘´ŠµÏŠõQÎYq úŒZ¡(rsKBmRì¦ ˜/ð–§–¦KºŒ“O\çSXËsÜðQ®°ÿ@Ù5»– NÚu²‹uÔÕPJg?¸°Ð]3 yeºÆ]­¹xëT~¹¤ #3+_{â^ek»0§ «ë²¸N»ÒUQöx OV¥ f€faLv&!Þ Ì`ÄÀ ^Ö bvdö Π^vöà zgga ö Š6hç‚öÎ`~gyhÀ :Ì€ J€>à Vá J`¨! Vá Âà V΀J kŰn©µØ mW¡nÙ€ ÚmoÛínÛ-oëönp÷Vo÷p··m ·mWoù6r%wrÛ ,÷r-·r/—ÿ¸`o1W¸`Dw@—tG7NGwt9@DWVX@Ðava÷ueWvk7v@bx—€×€wx…—X`x‘wx³@x³àx‡×u9À²`z£x³ z§7{Ga{G! ¸÷{›`¾÷{Õa^òF Ö7°À}3`°@~±R‹KžàKÈpët% ¹Î_u‡$5b€Ã§"\GxZr{ D”ÖüŽÒ%7”€™'’`©•ÇCÇ.’’ɃOIw,x•`4A8Õ8”@ ïTwt’&t•vr†gtBIÍ‚iå'fụ}·f ˆiáÿœá@!P  ’@ J!b†àÔ ¢8Ø!Šy€ŠIŠO ’@‹É˜ŠcaŠÕ N€Jaºxåxb¡H!óxŒIáJ¡ÞAcÁ 9û8 ܘxà“àûXû˜ßáJ¡$ÙI“7¹ŽÁ ¼ÀTA”Ua”G”mÀ>”Y9•SÙ Ê•a¹h9–a¹•CY"Á•#¡”}ù—ù—#!vÁR ”wÙ—S`™—œù™ÙÀÁT@š¥y œ›Sa ¸™›ñ¾œñ` R¶yœ»¹›·y›½yÇ9ÿ¤€œå™šU že@ëìy™e T€ŸùYꙞ©9›×YžÙy Àùœñç›:@PAŸ1ºžÓ²µ‘ 8—ˆ-$®å"-¹˜ `çU$ÜG”¸Õv¼õ%Ô.ñb©)}©ÉÇê/)K’|F:&O¢Ek­%m}Ò¤(eºBmÚðNК®î×Léz”ǧÓî°€É%J'ð„"ÖõQ8°¢Y’­v¸—j  j `­Õ:­ÏZ­k€ÖÚ­ÛºÌ ­íú¬ï¯ãÚ®yîzì:­û®ý°ãZ¯ °g¡¬Ëª¡°ËàdÅÚ¯û±g¡ »ÿª¡[¬%ûdwx±Í´/û³-;²#[¬+Û±Oµ[µY"´C›!fJÛ¶S»´][¬SøªýDìÖDGKԚº'¥LŽ›™†¢ ˆ‚'Kx’͸ÅW¶Å«w°ÖLç"-¢¸wP~ˆ‚(8BõWë‹CkÍ€QÍÖV’AU&… Õsª%/É«PwE 5‰akeb‹0¿5‰ Ó·2òc5¶¥¥\7ËÐb“BëüW¾ÎT*¶_oKѸ0R 6 ¿Ð`32¿©e áð <#;R˜+ìHb‡›W`å² d|Æi<¬9éSè(…N†Ø¸—Ç#EOxÿN†˜È•mzÔÈ?àN|¬}x[†¸¼[Te[ú{Ç¿ 'ú• sÖä%¬»¦U|N¾üË•M Ð|ëòN"r|G£»Q’Û·Çη«VØÆ‹ëbsk¥ß縱\Ùä[YrœÏs“[O´å'% (œ«¹šO¤îKNº¾Q+ ;6·\<‡Û… ñ<ø#O"F}ïë‘ô®·“'ëh’F­§ûð–r˜V§îÂn„‹šzÈŽ'BÔP‡ìªî†;íÒ(xªm¢½Ÿ’©[½ê`T”EÑ¥°ôd‡AkÏ °=Û±r;²K›·uû²[¢)Ã]'o"Ä]Ìy{ÎqíÿÜ/¸]ü…åüË16¶í|p´$a\˳ü·G…€‰ZËQv¶â²›…Å#Ûd e;»'O˜Âœuèý²’UVåµ$È#"°8~#{)¬Áœ‡5GõdɹG¼˜”DTÎ9ç³l ËPjÒªÏÓ2˜Fi>%!tÎA8*‘G&·ÇÙ{í„IxíÎFY˜ïàçÕ0Ø$ý„ ‹EU8CÛî&;t쪅›Ô©2½ GÕŽ'µ×d¶¯ÝÐ>íÑ^Æg{ßwBµáÞí»Ú Þ·é=îåй➻ó~ÌýœÌ…‰à+^Öü}ß©} f¡Å3âÛáþªáý@ßǺÂÜíYbÿÚ­ûá þË¿îeí“þퟷËÜÐ%~òÉGdK²‡ÿ<ÞûDÒ½ªIB+Yb°(çeIBk}*Y=몛ðÁX:Ö\5¸–˽ý#ƒë`+|S6¶“<…º6r“Í ëuX”_Óë{PfÀ›Ÿøqkú“ßÒܵ ÅÃ9Rµ(¥#V`q…ø©¿ü ­ù«‹#Žû÷Mt{Î ÐDc €2VKXf!ÇJœÈÐaÄ‹-Z¼¸cE7vŒ82äGŠ$OŠDiòaI– j”s¥Ë˜436Üùr'Î…Õ–ú£ 6h¸¬!-„K«5­ö”j5j ÒÿZØ€šÕ†Ôx¢J3êÔ°Wzm(¢×´Bg® l[žmÓ†\ 7¬ZŸ@ïöê÷jOŸ.³]‹Xã[¾„]>&;S­HÆrUJ ÌXg]¸uË •Yxb\ËŸ+2ÆjáVÊ€Ÿ–‰*–,- ,@öÒÙN¡ ' 8ÕÆµ /N¶óœ¿£nE,ý9ñÚË£oÞ~=/vï+F ˜;ϪÓ+k7îs}óœä­ŸîÛ©|ôZ¯›„Óº_äÄ÷{ XS`RÑŸ`ª åz®9åUWeÐòàB…&ÖN˜­Å^yè˜Hm‰¨†„‘õwwÁçÜŠr·Zwú¡(Úÿˆ-ÞÈ¡†ˆ}Øšl鏣ކ )de”}˜#]6~hbgIè¤C+2f!U–‡n»åfÍAžáÔM6]$Û™VèÚaiRÈšjªy\œ²E„æœwÖGgšÓéÙ'ŸÁa)(…}*·'b~b§kÊ™è¡ÓýV'| Á¹LŠ4ùv!k¬ÑÉ qšd¥ÁÅR&Ô•c©ýU$hc¾:ˆW¥÷ß™µ7U¤aáJÍV¿æWa­ÊIµ\¤\…E!¡ÉΖߜ’æ:›²ÔZõk„x®ì¶Õ'•¡«êì°Á:ÊԧÆz®³Û¾VŸ±Ìõúì®A›•ºÆæ»+SÚJ·¦·ïºÛ,ÿ¡65.~¥6——²ofg_tÙ%ú‘§ÔÃåý™mqZz'ßFz|ÓÇÉulÞw¡<™žV^‘(gƲÅü1XÙ~Ø “u°.ŒZc•œd¦à¨*M²hþ é±ÅNŠ/ hßdîÜÚÔ¦æ$LÈÑŒ”…Á8+Ž[ÛõjÅG)‘3ÛX#_P&gQgwÍR‚"ò¨`ÍDÖZÊY_7J‚Ï•w¥\zIPoF[ÜHâj™uqâJ-æœ ï7©Gl<¤‰:ÿDxBOÞ¼YꃴÞH’®¼ÝâóµéðCVFý2K>ö„ÙMy'x4B¨&ºB6¸:¿ðÞ[Õÿ¥ÓFO嘮b3ò¿£Öói} ~Y×êwíAe_#×ÞÃÌ$Zìÿå5Ogk7­t‡¦˜ƒ˜öÜ’ý¿÷Ü>üå+Ÿj>c¾µP4˪°L+ˆI,7`ÞCêT±ß¨N‚ bŽÃæ„¿±­kRî¡í¼å¾jP]ÆáÕq:å/æ«PÜ’V¿Â´Û ˆT)d™Ÿ ¥'V‡vP¹{=Më+îÙÔíõ£ß!¬*¥I‚Ž8:*©¨DTßfä¦è1 zO‹À&Ô(èAï7—Z!‹ípj=gÌ’ÓêįÄZغҟÞXÃN¥Qcz„Ú°¬bÇO±Æ[` ÔRøØ©ÿBy+„,DÈÕ¯>þp‘ÑسžrHG‚ñ… ù$pøò§°q/Œ¥lœÄÀ´·íÄ.k;Äð„ò¹ã-Ç0QÉ"ëLT$¿î†nñ`k|96,SG¤3™`3?ÑÓ—rƒ&21¥36mxÎ$R‹zÙ"bn#pó#I¨™„/$ûÂcºFHE¦{­ÊTBóåy{zù[؇ÍôÕS&eÒH>gĵW-<Ö#ÍËÊžýtˆzý)0÷ЉF@kèòdv¢ñ%oo‚kÍõÂ> Üæ¼ù ®Òõ9âLªL, 3xÍ-§¢é›«4ĤâÐ-EÑeò ¸ŒÞÿoV”O $&iè5¥±Z¾äGÄ£ªÍ€Ô:"°xZ49u 2M•ÙúÂ3¢¸­ô@©¢eÞ—¶ó­e’„V–jؘ(µÍmD¡I‡ò÷͆fÆp<’’vÄÅåÕŠ9++zzEÒðõpZ‚’ú¨ ä©$GÙC]“D:nɳ•}^Où˜®ÞñTGªô+ 7»7Ùæt84™¹d EMª‘˜yÔzà$›Ò„ë*¯tW©à\>rÓùc ¿¥ÁN¯¸qrˆp…<„)W¦Ò!csÏ'œFÓ.=ìnqUú  ÑPq†ÑcßÌy”£t‘?Ò¨RyIJ5V–³Õؾ´ Üs5yÿ±\V%ù+§©ÀU;ùâ-c0QE/HÌ*°&\4D‘¥ÄJpä.œ@GMZ¼*"psÅ\ý®«:1Ä0 ›â×4øjf©#öå¶ô°Ô¸‰˜ãxSl‹[ ,„í5ß’Ê6yÉŠ‘?óN#ëÅ25à“]¾«ÊXNá¼-€iYÕ=ç«ÐµJ°výdëe3o~ï~k­ËehšK­SŒ‹;eÆò’sM䢒z즟RоÁ[ŽÌ,Ñœ$ún@=(N©¹å·ÅH§ÏùYf{³ÐAtT‹! ‰,}WH[¶œ×;féäV‰6ɱ/±¶”ÔîLW ÿ—y»¶"©-RJ3ùc½’ÍÅJð†tÉ5¯9­E îs³&ky`4L¾v:™ ‘Tï ¸·pò´òƒ¶fu¤©9vä-’£ a+ö– *o$Å4¹~sNךÏÌKr¬¦\¸Nl .²`>_FÙŸÙÏUÅKüÞÖÔÜÐD%É’¹ŒjºOŸHnßÀ˼:Æ÷g“µl)Íeõm Ì{­Þ‹¤‹®Á¼‹VÍ1J â·†ÇÎhî›\lk‰6M]4ì "¬W:X-r +°r9’¸D/×9œ¹~È„UÇ0}þÁ ¤S…ÂýÊÀÿ–Få*4½D/°×¼C¬ËT—®ÞHÿñ&E»NS°e=ϨÀÉwðJ÷_袡 v!~R²Ö­N’Qœe€«²1Êa«¹ƒ_.q«NÉûYÙ*6æ/xºN’´’K¤Ó J>ÒQrÜsÑÅ›Çfç× a*®Dç[?®–åÑ5çŠ$fÑÊuøYÞç-]e¬­KÑê½-ÇÖm'™$?(_«¿ýlºy~ù´]&¼ßõoÜ_Í¢>+˜ú5\-˜¤ëoÙCNöè½› …Éb75õìöã?WfUƒe”3s9'rÎ'>•oç†$§5ò¦6‡^‹¶2ØJÕj.r6b…T!A#_Åq²ãTÿÿkœqrNæ@;fÏõc-•6nbrÞƒûa7PI¦*rÔƒSeTdr€udgŠVŒupœñNŽÕ5H&»ã\f×d=ø~¬rD%G“DNw;ù2:ÇPÛ”Yi6´!EbR»Ñ†nh !q‡p(‡;&1uH‡¹19mø‚yȆºá†è%3‡‡h°VçPHjЇX:gØæYó17 †#}³iS‚wªVX)·~bóWÖ#ùiFrw+vw-49³Syㇸ†$àAu3?5jÈ_ƒBch§ÚÅDrLéõy‰Gxr4^“7fÄŠ-. ñJÈ*7ÿdDa4 ±G z(ˆt˜‡„ø‡„˜vXˆr¸Â’~8ˆæ˜€ˆ‡oè%õTo !Ž3׺ŽòxŽ»Aø¸]rŽü臎‚.wòIí"ƒIHe·A{Æa ³t40½Â< a>÷vsBû'` ¶A FgêÔa ‘Æ0ítboÇNR8oóñ4e3V*Z¡c9ø*x-â<wƒÅqŽ(=ój[uvÿ¤>&5yÑ bPwóqgöˆÿQ&ts/ë3€áÆO^¥óØ÷ø•ÿX>A á–/h–sh^ÒSxö0hy–ëø–ùX^Ü–vi—Ž#‰µHXËÿTP-Ájã†m0a{N¸"ÔÇ~f¶90uj’•€5Koªv8sá~òf6y•x‘ÇS½ã{_’m–ä†ÙS7R”èZ§µ0 âN†H ×w^Ü'Š9C$ Ò;3ân˜qª†/–¶U§‘‰ E–q‰—Èyޝ’œÌù–¦‚îUÍ9ÿ89ryÈI}—!åD)¡vhHØTºépV&;éw˜AÖ=áó’iC3d8+D W1 è3-SrmµR«¢ΈqS¹..X““8ieXL¸LHÅ7† T”S†$ÃÕ_9TD‹1’é_1I`³NY•I9©/:)Wý¦TÙÏÿxQ÷0nB,zŽìR-£„ø!miR2z£‡È8*£{‚y(º™Z¥DË•š¡¹1Sz˜#DÉUy£7G£†ÂW{vŒ´7oEøŒ·HÕ‡´Œ°§x’¤æ¥^[¦Vš.ÖZ¢W,šÌµOá™SŠcÉŠQZ*f'JU‘™ vr°#•Ó_†vwçWi¤É²™j»sÿ‡;•EjXâcª|±£Øé82aœ—j©Ö€ðˆ›ª…K!ª¦*1(gE„߉ŸÕ”î7VÿF€¯JqâpÿTqOùeîÓ#8¡ á‰X9TÜYW[“PÕCDKå2Êz…;A“Žÿ&¾¦Á*=æjµ±?7u߬×BgäB@!#>4^EŸ ÕDdŸ:%o—I²׃lw+²Rªœº©qªþÚ©éRw<±¯ÔY©ÿjª´:n€w8~Ç#”Ymš¨76˜Ã=³$?©EœÖ›¦~ßcJi±8ã#kCm£zi”Sy®(qV$<ž5¨$‹À¶CÞâqÔc(¤¢N+µŒòÄŒ¡™CxôŽç4Xú¤Š¥¼‡0è‡KZšýzÖ²`cS—Ëœ"’µ¢ZGñÆC!Í d›ZeËd‹œÖRÿX¶d˵¨šƒ¤ÇÅ’HZõ£ ya)ÿ™tᵑ#y·ù­vÛx=4µÃuúÒURx-Kç£bd|餧Ÿ¢R ù·¥ä¡@gô„ä2q­c+.RI–dÇõ[ º?¿™›d®YpVÕ#Õ,I¢ywjúŸh¡¨;øï!@Ζ­’‰«b÷‚nÛ8ok©i›ÂªÉke»©^Tj(×ù¶Ð A¸ñ8Û›ÂqØ›½{ˆ•(4¸I5™HPw¡$ÿ n±MG~ÑhÙä µrÙÔ|Ã먦Ä2¤ó‚Ù~”žùó˜«x%ѳ.@!§:9[¢¨·Ei@‘nK_å¦Î–:¯qwWDS·8 qÖ&[X ÿÅ:êç|XpºŠÅšORØû¼û*Ã;¶ÑÞùQ<‘œË‹¶Ðû¶n›œO¾ƒ¶h»¼Ï«ÄÑû• ØAè='xjÉ®PxTûK±âG¯ :¬H˜®v³Vd‘Y˜¸3ª3„ºK3af‘W“ð²€°º_Ýs@ õNKÒ¾Öó?é@ {ÊPøE¸Er¢ßÒ¤LÔ ­L¬½$ýÑÿÄ5yʪ ½H̶êjˆõdÄ䀩 pûA¢ûcƒ*—Xgq H>÷–jÞÊ72{†Fé¾[Æ“¸d/?J6ÀCǼt*v[ñe„â9QÇL¹EJivêvräd» O•riÌš•'c¬ƒ14§®ÁÿJ·åccb3lAfAÊ,Ê*ÄÑ2Ý%ãÊ2­½Ói 4j ÑI)­Z\‚ËÉYš0j–MÌÑ_’ÊÜë¶Õ¹š¸ÙqC…>Ŧ¦Ôe}Ð;~m£h*¬ÅFo¦Hiا€¹³¦cÂXd¸ãtG’ã_Ws ̈èK¯b~‡.Ødhi*mNh$´$,fçIE¦°9©ÇCf:¸éŒ¢‹ŒÖÚ¥mÛ$]&BÍ@êN¾‚ Ĥ|Ù¶ÆÑ˜MÃ5Òôͽ¹Œ–;lÒ ðw)=1]ÓÙ9 F<Ø­c Äñ•š‘V0¶C·6Þ ¦7V’>;µûµ­ü*+ÿÉ¡j´1¢vá]âÝÒ:W Ny‹|G}c'Ä’LVO8Y§H¥Õ0è¹Ã[DwÖ/!÷ú#1×:T$+® E [®6æT­:8÷e·8U¶e’iWóJÈ ==îvñmÑÚŽØ#½ÒùÈŒ-ß>Ž—3ËÁœ!-‡˜íœj‘ànÎßIÌÒŸ]Æ–pvÕ˜–3¨+!˜u¬œf ÒK;Û@æx׌iMeo¿¹mƒš2¹ŠSF“°ó¬/;ÉÇee±ÁfL'HÉÔ¨{¨ƒ¥¿¹ý´7!mAiÛìÜÖÍKM˜%GË»Åö7&Ü)Íçýçužì]ÊÿŠàŒ­Ñ,êµÒ×iÊgnàh [ÁË¥|ÃÈ­ÌŽ[éÐ%§ãF=+Èš1…׻ˮ:ËÔæ”ZÉ?už­Ud6e»Sb¼|èëZ(g¾^Éy$-Å2'e¼Éªž ˜‚óõd6}*껎|“ø(Öâ“릑ÎÃâu[a&Ü#º.WÆú¸ù'¢î!¡ ÓÝ.ÓóÊ©üÃd¾‡vá¼2¶Ø9½Õ»HX –îÌYÃû8ô^Ùßý˜íTЦÅì`?‹.æÜ9Åa·Ä¼™%‰_ýW„RŸ&ץݎµÓzõª ´ÉÍØm§k'É%öAÄHyâ„´‘YŦMTÿÄ)d϶ýH¾ö¼¥Ög³ç±jûÎ\±²$Å&$ù™Èï’!øQe¿½˜uÐ mp(ùóˆôCßßp9DóÀaªàúÓùß÷§£Ø™Ž§Ú)›ý•A–ÙYÛè¹E!µ®R"LÂî7û«ÐIEO„éw2Èš>Rìï]¦fþ^YK ‚Õ*ØÊVUxv~óŸYãã¡V2Ð^ÕE×,îd0W/üµ-ªO¸~2¶3ÿ£ž«™q^UYØLDGÒ£µ8•Eý½~Ö¬¡XÐ A„.ÈС5ZÕ¨•)óТBŒn¼Ø±Lµe@Y *d™h:fT¸Ò%ÿKŠ(©±´øÒ&Mkeh•¡ÒgOŠ ?•(”g5¡I z4¤Ï“M2}º$Q§B±JõÙ5¦×¢1ÅV5š4êG­JËŠ¥z²kÛ¦Q­:;´ìV¤c¡Ú•J­ÁÇ:# \êߘ;ýRðÅeW%;µª6æÜ¹u¿ºíù³â¿{횥8÷ïbÁÕ"—‰\m§ëÒW÷ šbhÛ®AFDIQ±íÞ‹Uï:ðjÞ¼[#'Üt+hÚƒY—Q÷ôá1kâ¼Ù} ÔjÜÅ;T©r™ä Ù¢T9Ì/õ„ùP=åÔd6í<¸æ—û-Vg`}ÝÌX˜gFµ¯—«M¶M·²„ó6‰€ëÏÁ7ŠÒ!ncÖÚè=Sηëg7#ó?{~*e[´PEÕDÙi¨ÓCÐÄ së4 kûQCËFÝÜzï¿Òï gjcƲ&ºŠ¯tRéJbo/É=ê¯Ì· ¸¿AZĺÕÖíJÿ½%„ü4ÖýV»tØíþˆÝÙ=l]A¾Eß±ºÛ-}1Ôx¬=xÚ,d7jžŒkîJÚ³kMoÜGQ÷s} ZQdC+>¨´ehJ°À=ù¦˜ÃÝÛ%çzÕ³Ÿû}²÷“^»ÌʱÌ=‹O}Ó.­†^ßTñi/à¡dc°¡ÍJQJIÉÇF¥”†4nTci¦Äâ@Æe(rœ”üx¢Àgaiઓÿø72hÍJ…DþÖâ37ÑIh.ÃV YµBC•æK„ ÅD@Y5ËU¦ÊÓkP–¤ô­†WË·nÔ¡ôÜIòcš•îÖ%¸•«YñBŽˆæT%Ìk¤ÑÞàúT%žÿÅkãjÕÙG®:…¬?IA ‘h+—éï$Œ˜™BÅGùXc5 ±œIJ$ÂÊÍCPdä"ùÁýeæ‘Td%¡H—’ID#û ²I²Ð.4ó¤ú@Ù²ýÝë(iÙ&é(ÆUî/}û’¥úDÉIòå”4–$kH™ðU‡8¨ë bvÔÆ{ÉÚ­øõÆ\½ð™‰üÙþh±½ÀXË^Ût ±žH¾àµ’)æ²Îot<ÔE-:×AWj”C Åœ¹¤Ïºø:ø´Ñ<›BI€NR –¼ÓÔãÚ@. U!f“ ºÇM€âUE)zQ‹f4š¨³o4úQŒžÍwÿgjÞ½¢áhoš£&“Ö¦Bç‘á2¦ â(J³ä;.®ou#œv”¸ ‰nl+gM!ÅÃ%A?ò©ñV:²jÆ£ò2¥ƒ]4ª2ݜ봚PÆ,NB bb^š’ð I•ýÔ•@•¥,Äê½Â; Ê„:ì!K2&6¤ÝiXÿªØÄ¶ŒX'ŽšDBM ÅwÒ›N%©ÙÐi.…]0ÔgMû.ÄpsSîb 'V×êQ¬”iÛÊË–Ū£ÀbÀÂ0.qìµ^)À¾ôvS½tn•ä¾Ì°V¶¡\fBÓÍ ]r¸eñÿ 5õÙÑa¦R´äÓà¾J8ÇT>7hªt¨ÐbC[<ªÏZôÒ%+‘µNÎ*ì~ MoRV#ÉÓø´@1§-1)`Û•­­K{ØóÜ݆R(:¥pÞv—W…é'6+‡A¥F=ve…a(YzÉl‡þË_ɺ†$¾¼ekwD R4짪€ðÆpØfhXZêŒ'Ó_o]ÊNéÎ'«IN¼ª¬yF²¶™ c,\ko¸;Kñ¾FÀîxfë–…U:œt–.pÂiÈ»É(u5³êII„æç!.Ã4]‡ýÜçÆž­ÈzJ]Wæ©Oâ"$f Ùä&’2œ4aÿã¶T}%¨Ùf§ÛÛÞ£•/†ùng9+=ç5G8c.§é êOìlvzݧԊw:ôÉ³Ôæ’çuZÓº~úzyè 'v¯ØY!OA¥Î³êÄœäÕÑJ4°d,Clg[Ûdr­dŽ}ša“¼d’p)û+€ÙzÚöuÊTÝÖmú¶Ò™ž$)ºÞK+ii„ue¤9Sâ°QZà–&ø¼þl ÅÁÒܯ ¯\µ&&LŽ((,~qŒg\ãçxÇ=þq‡\ä#'yÉ7î“§<ä(Ç8ËU —¿\æ3§ùÌóQsœç\ç$9Í{¾s ]èC'zÑMN^$]éKgºÒAÑÿt¨G]êS§zÕ­~u¬g]ë[çz×½þu°‡]ìc'{ÙÍ~v´§]íkg{Ûݾö§oc*ðP÷1 B wGEÞ÷^÷§oDðƒ'|á xÄ'^ñ‹g|ãÿøÅkò‚—<â+?yÇ_>‚†×<ã;yÐþ!¡·|£HÏùÓ§^õ›_}ë]ÿzØÇ^öŠ¿/ú®w¾ûï¹G(úž÷1_ø¿ÿ}àËs|ä'_ùËg~óÿ|èG_úÓ§¾ó[Rý‰ ¤ù×Ǿô¹¿äúâï~ùÏó/<éW>ùÙÿ~ì»þó§ýíü?éRþðƒOüÿƒ¹ë»T @ƒ¥D@Tè=^0ˆÙ{@ŒÀÆcˆÉ£À³Àس@ ¤Ïà ,½‹h½—AüÀ ,ALA\A<<öàà@ÿK@D”A|:„È?ìAŒ?ò˜>š¿ ´¿!”˜ì?ý+Â$Âõ{¿û€¿!lÂû›B*¼B,ÌB-\§»½L…¼C4:2,C3¼81ãÇŽ#7ž ™²äʘ/k¶Ì9sçÍžCƒý¹´hÓ¤O«N͵ëÕ¯[c6„†«Ú…¶«ÞN)7¨Ý{ÿNsmð…“"‘yÅk Fw8="Ù»¯kÏλ÷íß»ƒÿ/¾|øóäÑ›OÏ~½{õðÛÇ/¿>ýûóóÛ׿ÿþò'àHà&Xà‚2¨`}´éVÆ„RHn¶U¨aþ¶a…º „Æq %×/Î]³Üs¼P'P‹/Æ(ãs4Öhã8æ¨ãŽ<öèã@)äDiä‘H&©ä’L*I›mD)å”¶A¹Ü•W~À•p¼D À”_j9ƒÈ€Æ2Ë Æi®Ù¦‰BW¢H„‹.Â]D0êwªQ „j¨ ˆšè¡Š6Ê裋FꨤNji¥˜Rªé¥›fÊé§ž†Ú騠’*j©¨žªª©¬¦ÚꪮÆÿ 묯Ö*«­´‚:•nÖôêë¯Uþf –XRõ›mÃ.×ë•ÆÂ8I"“D9É$Ë|0mµÓ·¨ð2†·( t'tD¤Ñç5ĵH\ºèî‰qãÞˆ¼ô^3¯½õÞ«o¾üâëï¾ÿö ðÀðÁ#lp /ì°Â7ñÃWLñÅgl±ÆoìqÇ s,òÇ#‡LòÉ&§\òÊ_CD^Oþ¦&Xª9‰m©È¼Ü$h1ÉrµÂ%?˳mwNÄ9lÝt´iò<*SO À·Ýv ÀipËæº¼'wª[¶º-Þ9n“l·íöÛpÇ-÷Üt×m÷Ýx¹6þÿ6‰8E/¸82$øßE~ìoƒc9¸n]£!Î-QN^9å4N,·c\íy×åžÝ5t]›;:/£—‹zÙ¡ƒNöë°Ç.ûì´×nûí¸ç®ûî¼÷îûïÀ/üðÄoüñÈ'¯üòÌ7ïüó³»Lö=1órÊ §`‰ý ÁZ¿Ü)àgÀ)¶Iñöâ>ÒiL+›Kûþ2ÙºN¶çÄr]vº]§=öê`#BÚ¦6¤á HCˆ@20 < è@ V°Ä 38A rð‚Ô 7HšP„( ¡ AȺ°„)l! WøÂÒp†2´acXCâ°‡7Ô!ÿwD ñ‡H<¢ÈÄ":‘ˆP¢“ØÄ(Rñ‰S´ Ë•Àkп1Ç)´%mŒÑ|`ñ´!F2®±{àÛœ!Gq [â EænQ-ÀM¢\÷Pà=®ôºå€î«#êxA„@2Ò\¡»‡ê ÉÒ‘-]›×Ë2yINnòeå'5‰IQ–’”žnqiøçCAZ"¶k¤-jCK6–K´­k­iW{ZÕÿÎÖ£§5­kqÚÝî6´½Eíoqë[ÚW·ÆÍ­r«Üáw¹Änr‹{Ûç:·¹Ó•nu±»]êò–»ßõ.sÅ]ävW»áEïxÕ[^èZ7»æMo|×;ßö^—¼ï=o}ó+_÷‚—¾þÅïí ß³—¿¾ïŒ`ë×Àûe°„ìÝïP´¸­A6<µ wjTÃðP5œ«Ä¨ˆmCZžÙ1sP³g'¡ÚÊ6µ¯5­ŽŠáÛê¶´° ²i@Z"ÁÈDVD’‘üÏ%¹ÉPVò“e'S™ÊR–ò•¬e&g™ÉX¶²—Å\å)ÙÌeîršÁÌe6?YÿÍaFsœáÜf(ÏÙÍ_¶s·üf<“ùÎzîs óÌgBŸ™Î‚.ôŸ÷|h?Ë™Ñkô¢ÝhI?šÒ‘Vô¥ éJkÑœô§ êIs:Ô}£ÚV=)°zj‹ñªe]µXWíÕ·ö§" fjPƒ0¨Æ2¨Qj„!M©Mvm¬ìf3ÈÈ­­³AZj+ÂÚÔ~Yµ·}íb›ÛÙþv·»­íq»Üâ7¸·îu·ÛÜÞ^7¹ÓÍnzÏ[Þê†÷½õoz¿ûÜöî·»o~Üßÿw½ñ}ð3\áûFøÃNñ‰[Üà8¼3ÞðWã—8È/.ò’;|ä(ÿ7¹Ç%+Þz9̹"ó¯V© dà ð\ç?WAšMô¢ýèHOºÒ—Îô¦;ýéPºÔ§Nõª[ýêXϺַÎõ®{ýë`»ØS;™ýìf@Í×Îö¶»ýíp»ÜçN÷ºÛýîxÏ»Þ÷Î÷¾ûýàOøÂðjÿP`0!ÆO¨‹/C5ïøÈO^òŒ¿|ä-ŸyÊoèò½äGÿùÑC¾ô¢G=é5$úÓ³Þôj}ìa¯z×WHöµŸ}ê_¿ûÛÓž÷«÷}ï)„{àÛžø¿~ð‘?üÇ'ŸùËw~óa|éGŸúº¿~ñ•_}ìçþûÆÏ~ÿ÷·ýñ?ßúæŸ>ùÑ/þöƒŸûîÿûËøç^öÃï<æ÷¿yÏ÷Ÿÿþ§šçx‰§x¾g€×‡€ 8}õGóÇ~è}ò7öGhˆXx˜¸8‚ H‚"X‚(x‚*¸~+x~-¨~.È‚2ƒ4ƒ6¨}5ˆƒ7˜~:؃<Ø}È€ 8„D¨!È‚Þg{@ˆ«G~§Ç„?Ø€)8ƒ;(…/èƒVH…XZ…\˜ƒ^¨]˜…`H†Uø…g(†eˆ†[¨†i‚cȆa‡e…¯×~vø„Ø·{²W€áW}zˆ.x€À—€&‡n؆tø†‡¸†‰ÿ8‡ÈˆS舋¨ˆ‘h‰“(‰W‰™ˆ‰›h†žˆˆ•ȉŸ(‡ „˜zLX„È7„Ýw„¦G "‹e ‹×³(y´H ·‹³x‹‚‹e Œ¼8ŒÁ˜‹Õ`‹{xŠÌhŠÎøˆÍÏ8ŠÑHÓx‰¤(ŠØXÛx˜”ØÒ8ŽÖvH!Å苵ŒÆØŽÂHŒºÈŽïø‹íX ~€h}Ë„©è|¹X‹ÿ89©ŽÇ8´x™éÙŽ)‘ I‘i‘ ‘ù‰‘©‘ )’îè‘#i’%©'©’)9‘$ɶØÅ†‹Õ@“69“ºÿ(y4É‹ÅV5à“³ŒW5P 50 ³p”A™”Iy”G OÙ”Hù”QYÁV”?™•“·•Xé“>¹•Wi”F¹”O9–UYAi–Õ–C)yiYlÁ†–H™–³zŒ·”L™—0€”C)•T”JI”Li•H¹LYL •|é”D •VÙ˜‚iI©˜„)˜¹—阹ŽI™S©—k¹—˜Ù™¡¹–DÙ˜³ ™ŠÉ DÉ 0`fðš§i5›P›´I”´iP½éšÀY›µ)›µ™›Æ©›G¹›5°´)Êi̹œ¸ùšÔ‰›Î ×9Ú)›F +ù!ÂHzJÿ¨xz8{Ñ׋çHŽâXŽì¹žîùÜŸÞXЍŠçØ“ø¹Ž{Pœ°I›¼À›»ùŸêŸ: ðŸj¼ ¼Yœ b°  ›:¡ÿÙ›úŸþi * 5° ¬ ›ÅY› ¢z¡!ú¡, ›ÎY¢Ê¡$:£f 5àœ6J¢8z£4ê¡0š£4Ê¢&ÊœDZ›bp¤7z¤JºœbП{àœA £.*g° Oš¤ÍI¢Ü``ܰ`Ú¤_º_ú¥bÐ¥Ü [Ú 5ð¥Ð¤hê¥mÊ¥^ ¦5Ð `J¦az§Oª§M ¦0à¦yЦzÊ ej¨{€§`z¨^ÿ*%`¨ˆú¦Èw­(£—Ž+Éi‘;‰žEˆŠþØü8ª¢Zªä¹€¨Jª§ªªæiª­ºª®Zz¬*«±z‡µºŒø‡´ “¼H B9sP Â*¬ŸP 80¬Âº È:¬sp¬Çú 8Ð 8­gð ŸppÓzÂÚ Ý ­ÞŠÍzÒê­àz­Ôú Ð ×z¬ÝP Ý ¬Ã:ÆZ Á¬ìj¯âJ¯ïj¯ðê­°®Çš­›¯Ý­ÕÚ­öz°0¬›@¯ôº¬ÄŠ­ï°ÅP¬òª¬ñZ­8Ð ŸP ÇZ ›€#[²Èª¬›Ð òÊ­ñJ²*ë²+²ÜЬð°ÂÿZ³ô*¯"{²«³Â:ų8° ±ÉJ²$;¯A» L±ôÊ´þj¯0E´Å° T¬EK´w`µNµ«0¯ÁjµRK¶SK´ÇJµW›µW;D µaË´T;µô:X[·Å°z”ú¢Œ†¨|§j~ñ˜’ð˜ŒòˆŒÅx†Û’ƒ«¸‰ ‘‹ë¸‡ ‘ ¹K‘•‹¹—[¸›‹¸“k‹K¹¡ ºŸÛ¸–[º™Ë¹¨;º¦«¹« Œ¡—Žž*»ú)“ƈ‹BÙ ãмKá@-à»Âļû»Æ{¼Ã+¼Åà»Í[¼Ð½›ð°áð°Ó» Õ‹³d0dP³ë»Øÿ ¼ã@›@¾æ[¾è¾Áû»d`¾îÛ¾À ¿ÝK"[¾ð¼ök¿í‹¾û+¿ò{½ü‹½Ø[½Ö;ÈK¼Î[´ ½lÀ×Û¾õkÀÕ;¾üÀÈë»Ù+ÀÕ›½í[³È;L¼ë[¼\´á ÀØkÀ¬Â"ÜÑk¼Ä‹³Ã8[¼ü¬Â)lÃìÁ*<Ã'lÃ0ŒÃ/\´ÝK¼ \½”[8ªx€®w|åy«OL„ ú·X|ÅZœª·ÚŠ]ª°Ư:Æ´*ÆeLƶjÆiŒÆ„h|¡÷Æ’Ç„¸H“0ps°»ì‹ÀȾáëÁÉëÂó;½Õë»>ü»~<Ý+À×ÿë½ŒÈ Œ³\ÁàKÁä+ÉÒ»Á%\³•ÌÈŒÃ×ãà½Ü;½ô ¡L¿Â[ÉH¬ÁzŒÁ\Éä;Ȉ¬ ª\¾¼ÊlÁHlÄÞ‹ÈÉKÀ<½šÈ‚|ÁˆŒ¾5 ¾±ü½LË®L¤|̷쀾´LËÅë».ŒÄçû»á{ËÚÜÎ|Àí«Çá€ÍÊÀ»wÀ»ì|ÍåLÎ5ë› ·Þ©x ;¸9™Œ+’™Ê‘÷\ÅS ÐÐ'žÐ݄Š]С*ÐúhÐå©ÐÍÐ=ÑÝÐ }ÑíÍÑÝÑM{íÑ Ò—š‡¸Ê‹²X Ã*œÈLwpÎîÿ|ÍÊ  w@7­ á0ÓÊÐÃÄ;Óç ½wpÓÀÓE›Ô?ÜÃ?LÃ5l¼ܼ"ËÈ1íˬL½LÂÅ ÈÐ ¾~|Âè;Õ ͼ à NÀÄ€ÍÓØ Ö.m¼ñ½¾½-°ÎÄ+ãé,ΚàÿM¼ñPá/¾ÃG½BmÙçLÚi þÃÔÛŽL\ÏÄØ‹-lGl’Çå^¾å`^_.æa>æ\.Ò$æÒ­æ =ÒlžÑnþÑt^Òu>çvžçx¾çmÞçrîçÍç­M}pŒŸoL ³ÿ`»Õ ­ÞIüâÚ,ãüÓÓÛØÇñÀÓnÐâñÔ îé&\ßÎÂúÕmÝþлÍàÛÀ¦ÓLžÍ›m¼xÍâ»Üš<˼ގlâÖ\ÔžÔjÝêDÜÈ ¬ÖÊBþË/ìê3œã§žÂŸ<À.ìÓ1œÂ¾áA Ä”MØEÙëÌÓâ,Î`Ù>1|éÅ‹î lÙÔÜã¥áê½Íw0líèEÛP|©ÁÈå†+lÜíÝð¾F‹~‡KÆûnž Ÿ€SŒð«ÚðñÏð/«oñññïñA¨Œ(½–hÙˆ¾x0@µÕ{¼<¾3œÓP}Ô†ÿœØé<.Â7NÄЋÔu½Þ%¼ÁØlÂÔ[ÈGl½ÄÉŽã0ž½5ËîÙüì-.Ä×~âÑ+ã<ãJí—Ý仌É9|ÙVÄl=õm]ÄÝëô:½h¿ô€ë2-Â9íô8ÝÓW?Öâ.ÎÌÖâó‘máAmàô^¼3>õÞÓ„ß̾»Þ>í»>×ë=©õÜÆãIˆ}ù$ѱˑ›Z‘œ¿ÏýÜ‘Ùù¢¯ÝŒK¸ž?ú ú¥Ÿú¦¯©«Oúü¬ú§/û¡?û¯ÿù¨ßz´k»¾Œ¶ ݰ ­ãÐ ÄzÿÖ"ìÖà»äÕNâ ÈÁ.Èä}ô¥mà;¼ÃŽœÃ&ÿ¾àGÊÖ»ÈG¼ýìÓ2Ìô^oÃÃû½]MÙwPÞä{Ö3lêÕëዽÂ彨YÏà dî„#XpB¸ ãÂ)T¸é Â…†Hf¦M•µ@HFYA[lÜHp"™p7}\IÑc‹'x¼3ңÖ# ^Üø²E<Š&šäNÙÍ™LJ0¤Se3bœP¦A¬@a-C«ZW¬WËT£†Õ+µ¯_Ç–%»Öm[¸lå¾+ZºtÓ–-ÃW®Z¿w÷æ%;¸ïݵ€÷l·°ÛÇGöÛ¸.Þ¶”/®Lø/äÀ“3ö¼9sh¼šI;þ|±hΖõ‚~z4ÿ×±ciå®––÷ï«^aÀXugÂAïØX€;(FWæD˜S–Ü„p'õèw7jñbÇ‹3ÏS]©=AòC 5IF¡z‹óÍ;,Fõÿº;ˆ¾pÚ›@ò´+"í¼;ï ‡.êŽÀèû¨< ê.> Ï+PªŽ£ÎA2,ЩS,O*”¤;.¥‚”Î)ù¤KpBPÒȦxŽ: ,Dé‰`ŠÀšt”n$ꎺÐt’ÎÇ•2Òo>£¸úJ+¬ÔÚŒš«|³ª/±Âôª«¯ÎT3M6ÑtsM7Çò-µÜpû 39ë¼³·´æôÒË.WËS­={”´@íÿÔPBcÔO-qË OFEëÑIÿ”tOÞÄ,´ÏL#U”RO•ÓD#%UOS¥ÐPOµ”OVs;Ó7\Çšå«]yƒáŒÉ`®(ºv£aih@íbªî ¼ÃXø:ú($”’j©©¨pºÈ½>J<Œp*°˜ô4$£ AjF”Zºö wÙíR:î&ƒÔƒðZkÃíHE½ËOàŠ6D¤‰*hÇ¡Ö!„Æsè©e·]_cc¸Àvªî%'ËSÆIŽ*ú(º®;O ìÈx ¤’D6j$’BŠj^ñ˜²(ª$å¬F=kS¾­µÑ¥e:M³zSS·6ÅÚÿ ¬1­‚k¯ª™ÚëªÍ;ë¶¾ºë¯á´zì2ÍŽl¢Õûê¶¹~;í°í&Ûm4áÞÍï¯Öƺî³ï†ð¬ ß[o´—[oÂÃ*K¬\ËÖúò0-ÿê×92™O,JŽ $ €‘ÌÕ÷Jï„Jßü~ÔN¼pk)pÈ ºvß³èg©¤oZïv2öÀüèË–x1´p(^ƒúˆÂ?$¼ì\ÿp“û”O»øŠ‰øÿòÓˆ¢¢*!óÌ]*goñ¸£\o|'‘?¦vч#G ë~F†öH&@*’ÎJd“ê‰eC2‚,¨ú­ CKZ®¶ÿ™<±ª0y ^LÈ©’æ„´À RH§.]*…Z’! ^«Î0†½á ‘ÆCTíp2‚Q!kˆ(!ö…F"3Ä":ñ‰:œ¢ —øÃ*‡VŒ¢ŽC(ÚªM¹’UZ`Ð ÏQä(ÉAŽÈ˜SÑídfðYw’@Šý.%EÚNº°Ä‘mˆ=Á2Nì˜òžr E@%BÊäCžõì_IJxhÖ ~ å~ØL g’I%CŠßB`WJˆbê)—Ì`”H6O*ûšS<£{…‹e{Ü£MbÒ‚óAyIMˆR@‘QÈJ* 0'²gµ,I'óIPŒ’. ÿn"0Óкä›Ln,ËœUÊò7º‰“laaç:Ý©9¸ Trj¡žÄô–o’0„MŒç¡bhO}Šžùfð)§€Š„l)蟊ÐU ô •ú§BúÍz*Ô ýäSDùùPŠN”Ÿû\¨=7úÐî7dÌåÊp†9ÜÑz +UBçÆl½¤>!ÞNyš¼ØÁÇ=ßZ‘T.´!rUi*újÞ‰¢µ‰þ ‰|¬Œ‚Æ…EÚy:Є²3"z=Ë\G)RW–­‹EД.ADH‰¡‡@>Y)µ£#çÍ’Å3Ró¢#Sj'JºYÊÁêöz2³ãŒ@©»üXdÿDIÝ|lB^o±ÏÛY„¢ŒH M,Dü¬xƒ§TIJµ«eíÝÆ¹5«}eRÓ ÛÐR&±ymQ+Ãlu«ÛÁݶèÜ­›|KÜàV·q+[Ûä.¹tãís›NåºÔ5.m¯+¹ì&n»Ã•­wÎð®í»‰+ïoÏ+\szíR¸¹Õ™,×€]…i,0ÀÁ*€Ä”ä€Î;¥»]rT¤…ìN Áª÷p-Ÿí KÛ„-·¥á'=ìP‰ªD®pÅrë²`¦Å³ŸÁ®:ñέÃGô0F0‹Ê†tX\®¤9kõND¾g/BÅC 0å3“"­D=Dÿn–5¿Ê½g]Re% ÉNV2¦ð«»|- ÒŠA‹x3*I3™/Aˆ‘UÂÜÊ€­ÐÐ¥ÿ4¢2㙽äÙ4}CE£ÑÙÜ9ÐGD”@ãb˜Š¶°‰…&Tk’6èE§ÆÐŽöâž# èCC&ÑyþsA]é…^ÚÓ™4© -éFïyµOëÚJ]+â€D] njëö¡n#•¤£»ÊÖ˜ä'« ~cÄcÙ.à U—¼äïYë³\S•äë-c©Ä€TÑ@¨S¢ÙË®®¤—°*G¨_ öN{–LÜýµbr\rcÕ:<õTÏRR ØŸD‚¬Hÿb4$œ1Õuêþ%Sø»¸vU_ìRs†<ÙAå@BCœy Þ5Él`b'Ü–{’÷VjÂM¹uÿ6_y¾*Rš¯i‹ªT•ªæª½y5EóŠ*W2—ç¬î)ôßý7™:ºÓ’®©¢3Ý H‡TÎYµóMÝç37ºž$½›eœ¥¾d¼Šæº1ÿ<ÂI€mm”8.«ÅÊ ÊË*ìkÏJ$_џŠU Ah_3fÏXò¢»W cãÛNʈ -²²ë@H޳XíÔ$*ÚqXñxÔjÏ}wáÊ‚aV”^ohóÕjPQ.æ±ef ÁÞñ´âxÌÏK¹OæÍ‚ÿ‚2ö¹‹%@£GlY^öË#=y–ñ˜ü¦ä¨³)ATÇÃ’™~jš‡S§3ϵõÒ:MS[g5Èi~òÚ pÔ8oÉÏONöªMì/n˜ÞŸþ­¿ýcB?úãŸÿùÛ?û'üË­¬?ô¿Ø’?6¡¿Áq?ü?l@L@ø[Àt"¾`)²û›²á/i`¨Žäh¦l»›Œ# ÊÂ%£ˆ…Ã…‰´ò‘ì‰1UïiªíÈ)ë¡ *‰¨h us‰ìX‘Í«±ß”q,\7Ö#«)8qAú¸‘ó°AgI*™‚X¹¢ 3ëq,Ñ7€‹’“é=ÿ˜¸¬tƒŠ¡’)B£p¬f*‘õ˜+£&¡Ž‡K‘û‰ ª)kð¸<9yº§I+”*4¥™DÒÔZŒJÙÀ˜»"Fé¡†ŠŒ¢ñ¡N´¡OÔÄÓâD=㊠œ§Ë¢ÕHELdEEXEY ET¡Xœ”V¤E]´E^œEƒò3àH ýê3‚‡°Ž pƒg ˜ð‰`Ø&a*%à ±‰ˆ“Ž{¦±§Ø<‰¾ô<¤BŠ 6Rò$4«q¼ž"±ŽvY¾‡  ã¸Ç9BÒ«F‚€sq«`1”iŸ™LšÇ¥ª09–p&žB·äÃ[1ŠI&’ ¬ÿ— ±6,6|A,kga™"Äõi–ë1 B03»¤™@é8/A/®@4I9±k“›Ô@sН³Àþƒ“ïk©E|2´TÓ³£#Êx2ÊŠª3-BJ?Ã4?£;ÊNµ©Ì•ïSµyš´S\º†Ê(’jÊ€ªJ®Ë¢¤Ê­,©¡T ûâÀ±(»Íù•÷ jм?D‰`ȬEúãC<ŒxH•”¥s3HèO:‘ kž¦jž±JÌŠ‘¥liIŒ0‰D’ù+~³‰Iº¦“ÁG ¸Â|¬/3Љ {¼Çé°&ÞÚ1« H Êb>ÉJ‘I³šjáF›)’ÿ£˜’6d ² öp=±‘»àt ŽØ„ù¶›ñ‘‰ ¦•1³æp— ‘¸DŒ3.b‹ ”Vl­“ L!"’K9éò ²X@ôõz9ù„/îB§¼¹Ïžä­ùl®C´/³€O› ýÔ.ıÍÏðÚÏU©®hPMPñZÐÅÏ }PµO u“%šÙ"ªÌ.–Š_ñ/},‰šhk<›ÙÈfQ·MX)>½D¥4c¼rŒ°–ˆ‘ùVCâûÑ©þ1ë#xY°_j¦ë™Š2­WD)A»T»˜:ÌȾP=­¼ Õ>ÕGÕLå¢ís(N½ŒÔ*UVÕT…USmUTU]½Õ¬cZ]Õ“â9¸˜ CÙ•YàY8FzÚƒ9¨¼cŠQ§j>ã‘! ŠŸ¸‰=j ÜÂ.!™€Z°±Š ™ö wÉ*ÿ¸‰*á#…qWÿÙÖfŠÖÜHÄ{He‡mÍpÈ„ý¹  ‰˜¼ÙV"‰‰õ‰‡;Ð×}ýž‘4ÿéD$Ɉf²¶ÓÔ „Û¦£ Fœ‘ªß›’˃,Q,êYªð x$18Äú53e«©øDŒÄ@ùO•ûYÿ„/3ñ.ô ÚïÒP›””zJ!RÚ§ÁIÛ”F(U|Ú¯ä¾G„•¨=d•ڦŭ­”®5Ë'rZ§Z¦©Ô2[“JEšZ­µZ·õÚ²Û®D”à0ѱË08#½=ܳ¥f’ž¸²kÜð"Ì‹xŸ{)‰–±™û¶»j*ü°*Õ1,Q«J>9ì–É—]MD]‰+£ÒñÒpX‹Ø;hÝx €Ö5Žƒ¸ÿ’+³Òûˆ1½žx°KÝXÿpƒU°KÒ‹ØŸP†!½Þ5>?µ£‚ˆΜÔ‰…Q¼“¸£v™&m&Ì¢Áú‘ŸæxÃçÅ=(LÍæ‹ÆÍ™:ü2ñM Ô,kÙIå¿L›9Lã9SlKK­r¹’ËÀØ2?©!‹é‚@ž,§>./þ»@Bà·Q`ú[/š,Zî .à¹ îš fà ~àLàžàöS@'öà‘Óà.&a t3Þ»¿Ù¯3(†;ydÎW²#*Ô‘"kŸå„7%\’&i1%ʼnNJ¶‰‘ìÁ q,œ¨H“LÀkCÙê½’1ü9‰‹ 7Ø&Í›ÆÿpwØÞEØ04‰ÞFiEÞiìËÙ&:FãUpƒf ^ˆ‡i hŠeDF­–‚™¶òsc ’ `bCÅjì×ÂB%y·às‰@­–ša¸Ë+ ²b XÔƒI_UD•û-žåÙ©u"Bº§ã≯a¯»¢]¡ýõ4¯KO_µJ f‡*¨ ?ñæžS´b>JBæ_!cŽæavf`†æHlfX¤Zm®3ötD•»•¡µœ3Ž ˜AÌã#ä}CÈËËa¢0c«(12 5S+⹪Q*vä<TW¼¼%Ë™ÕSøÑkÂÇÁ]ˆ äÿ=¾ƒ@ö68ˆÝ;ð¯â˜AV†i´²ˆ=™Þ 7¦èˆ ‡@äÞ݈íÝ–6å÷uA\ʘ›xŸx©ˆ¸ÊNÝCÍíøÑéaË$É^È¥7 âj’¥®¦£Ò')3½$MB„‘ŠÔ­¸_1:à&àÀ- ë¾Á.íUÊ9bDUŒ2fIËߥC´XÝ4:Ó"alë£|kþ½kzrëTJ¾žëÙ€ »Å ô뺶³KÅkº&ì`ºYF(å•®†á˜Ø*½ÓKìÉ™ ÚÞòå#};˜3ŸÔÁöùÑs=eêJZsñB ó!]¢%‰àù5ÿ ÚW/ˆ–†é ˆÝx(î˜ÞèØ¥ˆ ð/ehé`°2‘é¾tÝ–né”~é×¥ˆ>v†ßÄÒ¥¿ôH‹ÀÌFv_ÌSè 3Â5S2.2–©í&iü9q}L²jk™Ÿ8jýH+¶ÊÖ+aTÍ&þ Ï™d(#$J[kþDLÑ"ÔÚ@øô¬-àÑ5“v Q”Ëœ¨i¹òâ?îòp2‰Ë W)/Ü"¹O¬Xqïp¡=ññŸåp L/-ßpè*“‡q Wñçq"÷q#OñGP÷‚Ïq†e°ñ Z0çÎq™9èÉM‘A¥±N¾Hç˪ˆÓÍ3¼ÿÇk ',Í•8’Š‘H¿“—”¸L’QSý˜C‚½Ñ»¦3]ä t˜¾‚×ÝèènÝi|î3^nvcà=é@?iÕCÊyÊTô4¢” !io-j?ºvÖÊöµTŒSõ>PûöÚPvg¯öm×4lGtw^wJ©GË>®µò–2£n‡'0ŠZ8e6æ£2Έőñ°o•°=iM×t…lMãCÆl6ÿˆÍØñ¬s±xèñÇì«3—݂בdÂMAæè—ÆÒìvcØ€ì䩉séçî]7 €2vÝAßîˆÖ>΄¦ˆÞýŽ0ëïÙVÒל̊%î¼ÖãVI=ú¶8›‰ÙÕãqÁÕljÓúë$ féB¡M„ý,›á8W> /¡q$Z¢5ÀÛ¢ÐÑéÚ'‚ÄRY5…ÂæNƒ¹_$)¾· HŒåQ#f:¡c¦ÛŠlÄpµ5ü¾÷f|·|Z&|ʯDË÷û²ôI›-ð¬ò<;‚ÍþÎïÞÓ,›Iý* ‘Ã~uMˆ&ùã ^Çen)ý,ž€hÿ…G¼õ¨˜Iº°Ú Äè4ÝÙwxoûçÖ]‘6iŠ0î‘¶2@ni9p‚"}Ad˜F^.¸ã‰céx¸‚Ÿ€iÒSgG7Žô1vÍŸ1)Õ,­÷²}$½×ìש˜]u¨eá&(›N`Aw .\8a¸ƒ&¤QáAˆ'bl8ðNÄx/Œ§ÌäÁ2´ª•)c Ë2 ªQ+ÃòfÌj1kæÔYÓfK›ÔbmI³(Ñœ<ƒæ\Ym™MZ-gªl)•Z›Ëtn}:Õ*ר4WªÔ)µšT™5³> +¬W´cY:=›¶ÁZ­n³–»’ÙºQ§æmëõm_¨rÿÓ5;Xí[ÃP;Uü7°c´„#wÌ·²XÆ}ínfÛùkâИ5k†üy®h²lqnU\f–Mgæ\TFÆ·²à-”mÚ.ž›Œá<™pÃÉLÏø{È‚ï€4hÑ`ÁŠâ7ºøðÞ)rd?pùâÈÀGž¸ñMÄá®Ì<…7 {½w vÇÅÜDñl° 2ÁÜ… NO0QHË™  Cáƒ!®âF $^O&r‡«t!Á½—ÐIrhPt øA7Ò-LÈËÒ;©}è#ÓQ"’ yi¦Ä ƒ¼G2 5A<ïPÒÊ›%T"O³PŠ^DJMÄ$ú>U¾Ä‰X®bŠç„h'¾1î'¦+”H%ÕEnp8!ÜáD¸›ÊjQwË)¤jº8ŸºôVˆã)®:ǨWítˆ9U*LuФ>•tQ *älJÔ¥J5q?EŠÝtB,²Tãus€RpÈ3‘tZÿT^vÞNWI‚öSÓE*t¤ØYÐK¼;È?]ùWuM†eºZw¤ç+¡ì^H‰C–#X¬…ËGÍ FF!ˆ)ƒ€ ËØÕRÈŒ£H 2 ¢…3DàDNüPvÚÉH“ !ºª&*1Ï{)F9C”" ÆnAÄ¥]ÊÐ'œ aö$-fAÂ1Ý)wa#z®iÛ÷­øYCÌÉx5h’¸§i˹XŠÜÐÙn§”$uÉ u•FýñŒ)›^ZI4Æ‘mœ¹bžFź_mj¦¼R]åpÅ*=˜uÀR°HiJÓ°)8u;l0…ja£tP¡«pé8ì·•þ Â…’°ÿ‡K¬açÐ(¤AK`ÐbÉ7 Z ö„M`c#âØ„||×m C¢Ð%èƒVM'1ò&_Ûäòæs“VÆï¤);‡Q<½3És»›!.ߎËz•®H´d<ø)ÇKÓ ‘5!Z³ƒOGóÛò…&䱕¨d¯ Æ Xd s…VÒqè7$è¨'žÌ Æ9'´""#gs-’3„¡U´à›æ|Ø4'p¾_÷KÅ=NÆ0¦1ƒ*É/ s ÚœV}á\PñD0õöKƒ[ò„Ú'-~K-gR¡¶4V¥JÜʘ©ÐÄ4ùZàFmÆpû¾Z¹ö^ ÿ=–m_6Ö6 ¶%yrÃÆÛq)¤gÄ=m™´ÛÜßFw¸µMïnÛûÝa<ŒºÇ½ïrsûÜð&Œ¾ù‚׬EÜÒÆ Ã"VZÌ¢ݘÃíèYçrÝ."¿m5ƒ!Í–¬ÏE~ÐF¡éÏÕã™<ê4#…hb©¶PŽ^-æ[XvÑû("Êxœ/cÊpû&t&…q'× =’šz&õôÍ@ß WÓ4­uK)*3sB”¤“ÐhZàÌHÊ”Á…ØöfâkÏ=é3Ÿ ‚'®9ó.C~¼.(9âœ.Á Öe†½ðDñð†ú‚“æ3 GB+BYŠ ë!iÌ|Éè ±Çœÿ›9Hv’çRñ6”’ÙVs›Sžåß ¯*P‰úÔ„Uõ¨•Ru-p~hRûˆ+œî‰òÃÎþPÀ÷ê…{_|ª&ŸSÃ'ðòÚüÝ?P¾7>¦‚ß|âŸtÙ¹G¾•Ó«vøVVY€2c#1kvùz޵…/„m’þ[ºž+Î…‘}16¡Ì¡ñNCÄ-ˆšÉÓ¶øx˜‡B@ImÍwØV0ÌÂDÀdà‘ø —¨Yb‰O1°’ôÀŒŒ,¡)óLf…ÃmÓmžÂ cÌîxT.D Î’,DxÜB¸¢I¾ˆq¡Ï‡¸Ë¸ÌÿHe1Ç*¬Dm‹-]”ûTŒtq ȘW aÄ/ –vŒ>ED¡€Í«ˆN)œ¸5ÒW Û½Å›¶ÜcHÒI¡:›TMÕáU¤ßá\Êîß.X­¤ !–”!rŠÞä!²-âî5âK)$ âç\îÁ”%Xã`b§Î€U†fÀ¼@ ‚ÔÎÕ„„‘ TÎQHýÌÃ\Ì AHh}ÞD¬<—N›äVxLÐCXÉÒôËD 0fKÔ¹A¼ÐDˆ^ÝAˆT "Ðþ¢.!ÁÐÇÑΖ9!þAIK9M÷´‡¡ÍÒÀ0V ^D³€ÇŽL„š¿4Ô†¼ÝšÜ“b¡K*Æ“™à]ú vI¹x¹$ ŠKÐ|ÿI\Æ–DŽÉIŒv£éñ<§Ò/µ&¿lDj–Éz=ý³tPöÈŽ¹ü¦a ͱ&0M["|M­^HbÝÜayÊR8L=çW)ÅL•ßRÕ^O±NãJLNw_í NùE‹ñIy‘æ`Nzúć±§x&yÆ'$r'}âÄzâGþDÝôxŽçìIV°ÁS¥Mì×}É#utí@KüˆÖq€·ˆûéH¶lÍ•`žw$òthzL$aIø£t¬åŽÓ9Ê’/ù’ø¸‹Eü"Ì$+!I×è%bún5š5ÕËÖ=K*1SÔý&Q!ý&-%ÿˆÐI¸d(Z'·t¢¢FTV‚i†¶@&$©säË/E)‡ˆßÍÎé¶_‚¤e<ÜYZ¶ÕʰÕQk/ºµëÚ*£÷Ì}Ç|pvŒ„›ì+3Ufo!Õ(æw°-•ZÖñd„z¡„2AÏ‘ì˜! 1³.‰)bal& ïhó@Þ˜Ö¿xܬàNMÕUãs|\¹ÿl%©tèÕ6k[r‹w¤«}Ð¥–˪ ¡ïRÎÙ%ÀÉM´1¥Iz,µ=œÀ1•O]/têÔwf‰ zJ'(Ê^ Æ1Ý̱ãHªO,¬(N×±{ÊñÞÐñ¡ÚqOç„r O •{" WåÄVDQYXÃ4©ïÿ. w¹â„boÐåÔŠméÎÏüØåódÄ›PÎè»*ða!.Ý…-•DIºÞÇó8°•з2ß.)I÷¼Î(˜äVïÖçÒ k‰”°î@LItIà¦&IìRŠN ÕÚØ¢Ed ½th˜Â#}ôÈÁRÉlîf]¶³;«n³Bÿ 5?.Yd|Ý _÷Fb£žwÊÔHb_LüQZ MÀ!ÑkHÛBKž^eÕÙ4FRÊÑA´ÃíÆÆ©CãQYEF{1qô"™F+‘FtE?4K†ôœ24±ôÚ¸ôD§ŸFFPb¤X„ì̆åR,C&Ôš®®[5žíÄêý~2M‡ŠŠÖ8‡)÷k6𘬠GÔ‚[kdó±êÇyЇq诹¼ ¼Z£‡t‡ æVVçò@l=áb] _ªð½TMx¬ äéXŠ çˆÚÓ@8ÉÖñðaÆËÃÓÏS¹´ëïŒu «dYã²åÌ$vÍøµÌ`Íê¾Q/IñÿÈZF–2cLJÃQ&gL•¶›*bÞ4rÅ2Žß”Uù Š©çÃVç /â®t"â róº |ê)vÚ§ô¾ŠnoKon»¯q»ñp‹Jqƒs«±Ÿ Þ>¡ vËvaýˆ´$Téaé=Ùª<'„&5@¼ã,šBôÿªª¶:v‚kÉpX°ÇYGlµ Û¶hÁ(¤}¬ãÚ4¿ó‰Ûª)~XC±7ÛóލÎî ÊY¬ŠP"´W¢ô!1ÿ­cônUð—Ù´Ÿæg€i¤Îv…­§÷5oõRŠ•«öõ>ªŸ—o' ~yã„yuŽ9ë•ùw9šO9Oñœ[¯ŸPó©aYˆ¥bP55³œ³üÉ ðÄO}möÐþê›±`ü´à8Íæ±‹‰V+‡(Õðm0Zö‡mX§ ,›èTôôe¨73AZPY—èofŽ&MöxýÔµÖ‹½ zäÆI8ø½6ö‰;GX±)nÝ»Î&‹ÞËoLÄd³%²ÏYe›‹'E ÑÔŒ~ôæ±WsÑ4Pʰ•FØàT™}j‰9 àô¬Ñ¾¡ehlK¦$JÇäº;MNÿÛ6\»'BÃ;XÈ;‘Ç,L¿{Å{MeHÛûáûÃ%-½C\QÎÄ¿ç{À'zѦä’mˆŒ‚hÁp‚ ‡£†¢lI Ž6|ïÄó›@À”,ïCüXâp%vED > çuO¿ï4ºèŽb&ˆ§‚Ä·>evCWÿC}ñsW<†þPá%KÜ>ýF´¯= ·ƒF‡¾ï߆¿#H™c R·»””SW¦1ªV¹•w\n"ž\¾gˆBª±Ú™0Jp \x¤^Z9¦m›¢qtÜ$`¦ªk(»ä’sVƬÍ-¹( ­2ÔV›òk2ÁŽ ®Ç8›/Áëk3¼Ü‚ûkºÝó2¹™R;42ßÖ‹mÒènÍ3ÒºÌ[íÃ×¶»3ÅkK|pجþñºc³l´³ÍD[k7ëžs­eÂÈ$Á8âÈ¡ec.IDÓc>] æ,zH ’¸•:u¸³(“ýóî=r=bö8Ü H ÉÂwÕÍWßïF,™ÿ ô Zz”DÅ‘Ùex÷ø£8Åßã}ŒÅ¸? Ùø¡ ü9¢ÝÊψxœ·Ïèfþñ¿H]ÿ¡’\6ž %Œdì"ÐE6‚“‘¼Ä\äjÎüd”ªÑn…c•¥ õª\IʃhZT¢Â"ÂÚ.*¨)Se¶Æ5³aL‡ M#Ã)eÐ(‘K˜4£CVƇ9tMg³ÚЈCô‹“ÄÙ±mGa"ëâµ&Fn),œ– £ÅÐЩKkiÊh¤#ÊØV¶~äEg Ï"N¶Ó‚g½ètÛjÁ8ðŸ“ïïcÈv°ƒ±ÄbÁ’JpP ëa(Cÿ+Áþ埕ðzøYžÃôµ‚¬"R؃Ôe¿Ræ>oŒ²Cíp–ùªH0V!2S&È”œ¤OOÀÆ Ú+Ò/1Ò›ê©K`;æø@‰H)'Fˈ{ðÇËÕ¥J¿ºÕ Ææ˜0±6†ëf^èFšÇ +“zS¦¶©¨®eðÌJUîä”^iÓ*ôħ ÚÙ'ZYŠMW±§šÌ2QñéO‹>?ЃTž  (C êÐ BôžµME zÑÎj¡èôV¨‘© jT dAm#ų”´Œ™Ø´X䢘Åqvºƒcê óå ¤ ©#Îô¸²”ÜòDb&ÿõŠd¡ï½ÇDúY¤ôF´ø,ÌBNP‚¨'‘ª®Ë’Ïä¾8$Ÿô©DÜZxJ&½”a§?'*{d)="hC«he¼l´@Ý É“®äX}–´1m¬˜ ýj¡qAè_T}~¶ “*G\ï0‡pøkJ¤›ÜÔDÓ¸FL[:"—¢XÅØÍmPô"i˜%'bf.\ì ãn(¶Ü¦¦4¼ý¡ä”¢Ûàn¸}Ûqç†\Ó*W†‘sœk§Â®Vn+Ì7%'k˜Å)Ä"OXô£ÚuK½NgGíHÇuÑJ¬I»!ÿøk‹ÂHv2ûNˆhªŸEÿ¦ÀºFp%S ¦DŽ׃M’¿N&ëC„•%¾ó‡Ì1ì EÛ]¿)H{@[ýÞˆÇÇJþİýq,‰äÚ½ì [#1Ùnz7žÞ]öXöÒ„ ˜2v]L˜):Ï"KvÀ´¶_·ªšÛ¦væ³,%U‹«DÕQDq壂g8ÇB羦…aSscþÚ´Ù·hþ\VC—´áVΘûÚ›ïÜ]%JÆÍæ„3žÿ|š@wmÐ~ŽâŸç̼ìù4¸LRH,¨Œî<5mï‹Ä³2ß´8¦“–|}cº†ãGÑéD¶#4`rÌw»³ßv¶žuMò8%"EV<ÿˆµëÈïBD&Ês¡•Ø) Ø‹c) e–hÏþc¿ˆIY²î®võ“á7 å­'•iµ,îqgÇ“²oïü«­`°rË–Øí„ôéÅãÜ$+†e˜²°,h&c°3ñYûú%›ïDÕ}+DÀáínËÝ®Ã=£Ev‚ùP¤m•˜ÐEyTpÂÆ»üN©€œƒõôÉWjò] *åW"UC}urGÅË3ç¨ËQ®*‘¯| %—èËI8•Ÿ]›þäS=õ„q:•ÖéŽ Ü®\U,ÝÅÈŽÒlŽ1»dYˆÓ+ «"C"Ú–5‡ÆMìQç²Gž$~ Œ®Kæÿß'¶kô6¢tmx¯)žÂŒ_®’ŰŒ^‚[I<”8®ápC-±ãK>d¦¤#a=b†Ã~Çú±èµƒïÞŃA¾CêI/$Õ£k¿iU}“÷£ëÀ8Ö¸g·JâêéD¯ÝQ}Mï;„^AÃo°ì2å·$%ž$}“œc¨f:W9Ð[̳ƒõðÅiW¹äd.ž¹Oè±k,¿ŸÏ¯·î®ÿlíOØàCùw†þhf¿õño9HéýZËKãO²K ‚>€t(8ÂåEv*9jZ.Ƨ :ÜÀ^ÇÓne´Æ ²6¤þëz¼*Ú$„ÜöKª~‰šÿ¤Ä]:oB2®Rìàe#@Уxg7Š­{l펤¿ F•ªg|Â{Fæ×2æò¸…D„øðmJïÇâá P/6ÀøŠO`Zíô¬0Ü€®`õÂðXšl ñm‚õ¸Æ®¥÷ÐÇòH„zJ¯;Ä#V åÝHoôFO;JF$ª DËqʤVpÅ :è0®èö)é€eRú‡®‹mhKâ.Ã/C‰P 6¶„m*îl…j‹Ê0CO o`ËK,ÍDõ/gœhëá2§.t‹lÔººd/`Nˆ¨aœÂŒöuf‡;˜£¨6mu`E ]gÔÿf:Ro;‡Þö£bo'ÂZÆ’,bɪ‡¿¸E«Øc_~ Á $™ö#®D¤^lÐÁ’m'"]šgz(«{¸ƒ¯ ««ø«­FŒCä ±˜Ç5‚}LæÃz ÝÀ Wï&2 'ß@ ¹0 ¹Ð ?R m¯÷Š "íŽÇN¯øÜ0 ¹p ñíÓ\ò"oÇÔÈ ð Õõn2%ÿÝp'ŸMï1žÀJª‚Ô/lN±Š¸+18'5 ‡5%)MJ¢ªlÃRâD¥j.úŠVteÌò‰,±æ,Æ,ÅòŸÀB <ç,Ïê$,Dz-sÎà2-'‘.é‰/Ëâ-¿Ræÿô.ëÒ,ã /%1.ÝÒ0 ê-CÊž +ËÄsž`Þæ_€#ÔÒh "<€cÕ”ãYDä#*‰u¥íb[º%¿lì áp¦j]â±?F$òe‰“Ú•i|äíÏ£– ²(¬¾ÜàÅÀ´'¿t¬À¤ðd~Æ}ÀCݪgôv©ß¦“Æ:Ð PÏtæðÙn2PM"·0 ³0¶0 [`=÷øª‘ÖLçÝLÆÆð_„£"ßßÜÀ ³ð ´åÞ‚Ö¼A*ÕÞwHÄ ¢>ñ-@ÜPÜptêyÂá5Î¥l¥P¨ÈiѸMKô‰–È,FmÿvK3@Ô¶@£œ€‘‡´ÈµL11dýNèÌ G³«úF‘Gc1GÔ 4 ƒHmtиHs´q¾i†¶ÆÊ¢ÂÏÓ–$Åðî%0¾Ê+fÊ‹&’W‡~`mÙ€L`j̾þCd,ñ ¢× §cÞ‘¯Æ¿D Äô%¬‚ì³HÆØ@ŒA²Š¬p̼JIücAò*y tC8ðß FÛVâ<ȱ7nM·%u‰cÀ0y ÄtÆ!îz§}ü‹³Â! ?Ð7´1Ýà" ŽÛÆC&Äãê‘^®­CrSÇÖ4;üb(¢ÒpôB,Ó$¢ÚÒ/£é¤ÐÒÎÜìn mmâFsÊfmÿÊÆnožÕ…ÏÃoLQ'Co¾UH¹[½U[cË\-[ÑU]‹ÎTtFë,Zi±-ÖiËÜL+ŠeóÙô(%N§÷nêK¡Cš¤%9hFZhø õ sÉà^åT_@É{’,FA †ÉfS_–l=*6”4¢¢æ5 Ý"„Õ²£dZ ]D‚9IÇd8ÛM|ŽiÃ^íF$©ÈGÈ‚A6&Åüã&wÇf=EÔݪ'[öŠÞ¦S÷îíÙÀÃ÷ÌꬾƒA,•â •éWŒ"áF¥1z+ºº(k»j4mz£Ð„éÔIU8n„ˆuùi.ë(–VŠèJeRÿ%oÁko?eä^åoNo—pû6RˆUê6O7Ë —½"qErI¥qå™Nä’ŽSŠ„È‚[-– f ž%zl<Ð` " S2eÆ 0#¶%`f8èS[x'YöÙj‡Q[“;î …D®v EDª$¬;8¯±à%f2yøq6æ’$CFÐFV §MÜÎGhQ– ìz“:]5÷xõÉD%¼wÆ”·•è÷9jW’¢çQ—ç c|Üw|S 2¯ÞCToÄ?P­“X^ÐÊB6õ¬~ìx’VCâWYkä¦ÏkœuÑ€q´Ê º&#.Z”pöâÿPËrÿ\1…1‘\#^OËÑ„‘FËìF[‹†YøY]øÿ¸æ¸L8‡½É†Wxm¸†U´l_ñr^+ýàÕœþ„º RF'Ehd[€`œ d"v²Õ€#<$4[4°y”ƒEήÓ:â!dp|•{×ôv§Õþê¨êHlñŽG"é"È]œ ?ï¿ZMHL m¶"®ãcôÊíˆg|rïNÆ ²Æ¼·~I¤í&vC6FôBì>Tp#ÎPÝÕÕXÈP•ÕèGÈö‹Þ&¦}Tv@¾@jm?„™†]>mPÀÖJ€+‰’p7 ŸäòåJkß™õ,o˜´Š¼¯C=… èqÿ MÁéG­µªYƒšù5²¹Ð¶™D±‰ÇÖš¡yµ9Íšõœ¨ÈˆËY]KˆŠKˆeNŽñV×’~GbùÃð2 ’ß< r\DB'@Ÿ’—‰aƒ&Nù‹Á$fŠqÖ•LÕ `5Qeìg1‚5„–EDwÂÇ>y>D›1`ãÁW²oãf[y8XCÿ´&Xæ†Trî 0Ëäêéå*†uXµéÐZÌSáFŠ®çº´ÿîz1óZáöz˜ûzæþZ¤{Yíº°S¯Û­ñÕP[q![t9Ž®UŽnkÔt±¤XÌC†ŒÁÀàôjmvPç·ðƒCuâ+fZDí V[•!zÇÞp9°õD86ÀìÑ™òå~˜÷8‰¬ 1‰a-®ï8 …&¸G†?ì}§ûd¯n›cvZÝêî€|C“c󿬃~,+¸Ozý”ô´÷¹Ñ ‡d¸ëÇ=L)”ÄÃ<÷¿†B²±~Ì7ú£¥8ô."¥œÊ–ÊœÒΠ23xq¹ÔurgµZT†tœÞÙ…}±»h”…1ѶRC3HÃ×–ÃMš3mÿEüÎHœ†À&ÄMxÄ»é˨CTZgC)Qôy‹JûäÃà®n–·#Šá4¡ Z¡Î`¿èÅG|7fª5{—½ÊŽ~–©Ý‡¿ "@kšW‘p¤sÕ×xð£uÉwV¿J¶z‰d×ç˜ÂÝ€&`FÈîξl­–Ô¼k ‚’?O"@Ï7¶Ç³•IÞ.S•Û÷ kLÛXV[î<]Xi€; È29\$˜Ùï8±üSoت`œ·xð7Hœ[yb«ñ¹Öé)¶ì°Ó ²3­Ë2nëO6àÙ›äÕûFƒp€x†t0Ú…áµYŸÏ]ƒ]m‡½ˆvø…J÷×¥ÕYÙÿ£õqFXL¢2ýhxþί5´)?·Â*†Ÿ&kk!Æ!D ª@j‰É&O‡9V†‹—eŽDÍ&Ìn©E¹_þÜ~}ÇS³vÀèø•ŸgjÝwš¶çTÇc¢÷§õˆ·&UQÛ|±S—v“ÇeMOÆ~L-»|HçXì-¼U¦Ç—Ýh™ÆpO`À»ÝHðÜ–K_ÉàÜ×õ\¢§çÎ{­>ŒÌ–ë¥b¹v\*#lÏú·ÄÚÌB‘ÿLTé'‡r#×è^ŇNãª¯ï¡ ŒZN¤$…6®w.O…¥ìvì]n˜Måì1*íߺ£®Ì¤ÊžrõÒìÙÞç¢ËÿB· RE¢È~nÃÞ+p\q¬¡MŽ‘_'DSâZÆa  ®`YëÔ‚î(ÊKSzïwÝË³ó ¹¥’Z÷„–j$;Òô­® c É©ŽÊ$XÜtowF¶bÖô¿3\n¾ 0Ö8"õê%6W¼=pø—©­À-$Û; sÏ~Q÷rv0bÜŒÏ:fYNMF\ÌÍ>µ×Q•Ý’×ô}c"3Yü™ÐKÂOií“(™z*¯`Ž Öü÷ï ,¢Z™jÔ–¡VV™2 Ò"¸bÄ« ¼Hq¡Aj4ØdH‰9šüHФʂS.¬øq Gÿ]’Éq"D‰=î¬Ô¤Oš5Yö¼´¨P¤9NZ”âR©%“„êÔæÐ“'CÆt)r#ѤHEþL¨²dÕ2´P£fí΄ Á”…“{'^Þ3Ý2›€#^¸x›òNhÑ‚p‹pÁÜÄ v`S¼ ñâµPöØÍ&eÂ…SvÇ ]Ë2M 0ÁM°Î™2­º³*ecáξ3øÎœp’WMx­·˜_»œíN;y湞SK&àfO86O˜o\0σ7íî”ún‹`¸ Ëž6¡Ø“Éÿ}\¬p±`ôçóÆMÙÍâÁüVË&ÁSŒ\«£×€ÝäuG1®2N7¢µ€\ÿ&Ù &X1z0Ù`ãd"ví!(Ý‚á &X7áØ'Ù\ÝSe”0Y7§qöZ8Ìñ hÈuÃÍ'&¦ Ÿà Új-Óž­ÌàiXL`ÅtÒM'2¶"¾­æµhØI0›PË*ÜÃ_1`)Æ]‚Q&†”óÉ Üà ~ñ¨…(-MtPN5°ÐCÕ,#£ %º£ $éC“2„-™„hW8Q“Z„6¥“Z5EH>atêKG –Ef¹ŠFŸ¾ÊT­¦Êªë­…ŠÅ묭öÊÕ¯¹n´«®]ÉÚªG©–dèSGÅj,¡ÒŠzÔCÔ ziOšjêÿ5wÈ¥Ü]ƒ¥ÖÍðAÌ Ç1VC€û° 0Qï½n(ƒ+Û|æY<«r-a0+Ò|bÙrÄSḎ ŽxÓÆ«U€Üà0.ÀÝxCINÌ*ˆHã e²…ƒH'&XˆÌ5gjŒ• C€x“—°¥'n ×ÿLÓ™¹G6 F'îx‰Nœ+/P²0 upÁ «ÅÉ…Ê„CUð@”3ž"háBУc6Á‡v, ’ÁдàˆTà5«˜Æ!¾`€¹tv€…r ºÅ``ø„apàKPy©u~-pÒ3›ˆÀ7<áˆÇ0æ]èa#¯uÂBðDpP Ã1€Bà…ËvÄA QÆ€ÚÑ*Àá·™2©¼ÔÕÑ?0A-fÖ8l!b˜˜2pІÀ¢ >Á‰y¬€USÆ*pðˆ.@ÁÓØÄ_Vð #ãz©‰ ÈAƒKlâ ñÈÄ6…ÿpbÌE7ЦÐütÀ9 ÆÂArdc ¬XÙVux`v‰ÇÀÐ;  e”‘†,²!‹Jh(n0†'Ì  ðtǾ¸õ*“—ìMPFšV‘€8Ä ÛM8Ú€=Ða.ôéD/* ‹aÄ£wœ Árñ"º´”h‚#æ³ 8B ˆ˜Z‰QÒ«À˨k±¤ˆÁR`©pò¬`!ËZØÒʲªõ)™Ë«%íG Ò‘h…Jµ×Ò %X¬Ï2%µ¹ºígG»ÛÓ¦d¸4±p©"ÜÛÚä+ü•sŸ;[ÖþjU£šnSrÅ*Rcn ƒ\>³WÿÜŒKG: À•¾€ƒÿ@Ž xÞ;1öº¾ ;Cа‚CHf0,¨B< 1ýà€  Ђ^Z°Š&Tá PhŠ´‚dt JÝhptbEò1Ì’A®B€6¾Ñ²ºÈApЀ-¿F LÄã@Ì_Á ü 0¾éÆ<ö à t™€CÄÐfLF Ç*2°€;0Ζ¸(1ŽÉ¬‚rf˜Ç4„ÑPä%8àÄ%ö…"P柠Á+"Ð ™É¯lЈàv‰ ÿ¢ ƨL<æ ‹9_bA<Ó‚PŒ¹AjøA'vÈ€qØQ„;ˆA{ŽmˆÏ[ÈI‹Q;”@ƀܿ… ˜bܶ‹ÇÌ@˜!Äpd!ܼ&]0Cï  1Ì# S žƒŠ¡(°à…1fpN` ó0ÿU«Ð½æ>€s Äð ²°y1²€=` O#ñ {€Ìð ­Ž ˜qïfÍ  ø3Bõ1@N>S àˆ¶ ‚Ñ  k0~s@7Æ  Üi"´” Uà ’ Ï{°U3 b‰Í j@ ¸ ¯ñ‚4} ÁPǶVr°”Ð ××p²Ð†Á0 ,$™E®‚\ 4,»ÅÎ…+0qG(5äEEĈI—DkT’’Ag4)h!‰š’áD—¢B^tq–è(Yt#Ô(O¤t%DŠ—Hqc´Š£˜ŠCÇ)©8ÿ‹“ˆŠ®(‹`$‹5䊷‹ºˆ‹¬‹ATEšHBOd‰*Ä]dŠXd]F×eðÛÂ(að?sQ.rÒÔñP¹1.ñ@' À kìpŽçHuñ ‡ CÅ0Ug nø&`Cð $5.ÒpWp jÒ•Ð °@ •Ar Ä1Û!;@Ÿ@JÝ`Æ ²  bvU V{¯1¿àr*#WÐVÀ°þÖ ídv@2°‘ŽÐ S ãÝ0.€î÷Žñ°í@[•9€ÀÙ° g~¨ðg×V ?°ÿ¦À 2Åà PŽÀ9‚qž0{ b°/ g0£8 B`äðeäÑ ?}°”qWPU Íp ¶Ñ{ |€ ŽPñpµÁRÐ ÁW$ñ§6gP r0/b à1« ¹°àY F g à?pãÄ6Ÿ°ކ CÀ„F¨ fðˆà:« ” ™ð £9É– ¡`7À ¿b` «P”À£ #ð gpÌ9.ŒwÞ2.Á r R•«à ó É÷51‘p½C „A  ç+-rd(ÑBÿ*¨Bs Z,it]ÖB'Õ5*…¸, ªQˆ®åwAÒ…sƒ‚se¡F$AgrG—sb!Äårç)6ArQ1\%Dr¡o(n” S$’#{8£!8p b 3rAìØŽÿSŽí˜l€ Ü W01pñpÐk ã€WÆÀíàW`dW C`pEÐ ðÜð–‰f°l R³ 9 Ý@•Çvv`¥· Bzº°M`à1™ð(p‡NPŒ BpªG«` ß” ¢9=i½À&…¾vÙà‡úEÀ ™ ÿCÀNŸ& ¦°íð ™p=Ð ¦€À¶ƒrð Ð0>à %P à Pp²ÐE`R«ð x5¹ Àw¼§Ý™`4ЗÁ"á`q`pàg@Ų` j €%Õ à.ÀiÞ†n»Ðº|q‰vð8PÍÐ%jzaTÀ0” ¶S†àÝà -€¬¹º "–èÀ ùx=ÐgFP ¥Á`ð„±æ« `°§¶pí@ £ %€ Äæf€Ð `Ð}ð ˆzŽPÒ ¥QnÄP™àÆ Oÿ(‚‚, ª!”‹•(D•²)иF8[3ñ*ÊqJ(ê,¯r+ºR·š·%ˆ ,x\*¶Ê2,‰ˆ¶2¸a[¸‡\¤…+Ö²*[¡Z§Õ@Ñè[‘ ¹U£ª)9ñ-aÀ]Ô7µÀ3Å@8’Å Ð ×£ÀÐ^íŲ«µûl`NÜ@¯ðO‹ EUp`!‰Ñ º0 jàs@ÀPàU§SÁp®°´ŸpÁ²X*ª÷5m é}Êãyk ªrà,ÀBP“МjÐU°ãw€ ¯ð )'w| BOÿ½6N;oa`î§wPŽ` à áprq| X`„‡ÊUè€S†WÀ|` sÀ • Òp™ŸV+`zP&‡Ú –°Œ0'% `Ïyʯ  ð "E ™ T†Y và, µ)j} ™«”1ði¿ 8@R«ÀÀ°,øƒa¹`”›±kÆ{›¡ñjph;æmÝàhÙ€á ’H ”`V7¾{½ È6–bpŽšžhù ¡@‡ª9¾fä1žð pÀ `¢SðÐ:”1pr@ú9GÔŸLdD¥Bÿ\j6t ´£§¢Aaq.t‰wŒ0ÄËÃüË6”EgäA ´B¡Š³¸tœ‹‰*‰\ÔAKÄE’ŠØLC ‘ÌTqËŒÍi»Š" Þ,q:$ÌÑ|‹­ØCÒ¬AGÔË7´Œ¨ÈŠÂ FzÎÌØDr£Á*Õ𘲠ÞÅ&“aº…!Ø]€ ‡P&Œ1.‹©Í ¡p r AÆ ™ÐÁà ¶ °™pùèdÀ!]« û0.UW€ƒÇ“ eb@8"5Ý p QP&pã§5ù›p ¯€ ²° 1¼ ŽÐ¾ð9.”yUp<Ç1U0ÿ y@{PŸÝ {j°J¡²P¹@ ®qgð>œ ,G°¾‘¹2l`ç÷k@ÕÅ € €?Å@‡ B€¹;[ð ™ ¯àžgC°´Ýà#Ý+€ ã0b8€úÉ$­`i}Öã0¯E#Ü €Ð y‚Ÿ°œ ¦É_óª s #F` Æ 6Ð p( ­ ± ^jל€ Ê@Þ °1`KºØVà ýƒÐŸ0ÐP%•á pR› ªk ?ð íðñ@§j ®`y‡@w$<ð¦Peb€Ýð jÐÿ œ0ò [ & -ã?_k[þŒŒ‚k¹¢â\!W·bk¸÷2 ]§5((G Æ5ZÊ+r›·Æ5).[ê¶}ËZ¸Eâ0ˆ¨5* ®¢1Žã•r9!·1~¹Æ•F¾r2çŸÕò¶B®]nñ£ë„6 ¢Ä&r¡€Þà ~pO2³ l`„æ„ð^æbNÝá@ ½` /pí{º‘2] ’á?@‡k0ûk °Ð °]‹XPà Þóož0_`"_“ ûã¦Ñ «Ð‡Ð ,Ü_ãß@#ðç†Ñ‡€ÐÝx ßð “ÉW@ÿ½@Éw. ?ÐЋS` äÐê¡QºÐ4`tñ Ò°`À`¥ ÊöB 2pSÐ f¥t Ð9Ý_kè™ WðÀzÁ;Õp`=Œ11ÛÓ¢ ˆùÐÐmts¨M@4àîÉœ+Цf6ɧÍã1Ð;ðvŽ]L( Í€xÜþ¦p 98ð ¿@ ÛAŽ%Å Äà ¶f™`¯–c-e¡` Ø`I0Û`±Íî>-‚€Q 2«AÓ0M Â®CÐtƒîü©p;Š-¼õ·)&‰ÐœŒ&º¦µÿr»AÅYÑ¡ "׸)NtX/º\#£³Â·±e„+¡Zsq¯¸'îÏ2§q™‹ˆB7áf¡5±¡ÂÌÿ¹FR3äË@ ¨µPÌ ̰°Šÿtœ‘"ŒÀí@ÀáÐùŸúLÐäXrPŽ®M«ð?Óð58°"eQ“À}‚ÈqºÆp«ð s@ ÿtŸ Çæ1ž‘6sP„“bàú{€1g0¿¬&;ký Aü{Ý”cä‘s±Zâ11ª·¥ÕS s«0J“±}Ñÿ36rÁ-Þ*7ŠqûÔÿéÎ ÁâÉùTìN±xžév`ΦpÁÂÍ™0gN°;«dZÕiŽx-â9œÐíÓ„Žñ>ÅÛs¦Ø*ʔݱ¹'^·UÁVÉÔ ‡œbç„ÛcðÊŸ«2í™#‡j<Á&œ1úRWöd*ÆôN°`Å"N8oC0Ÿž tïI¦Ls»/^_.«â…CÜm_¶á^ÆÛ4òN8eNŠ|Y‹À@¾ &91^1’e”©V ¨2¨O—¡E-u5Ù­ËPk]ÛvnÔ¶i§F;øìÖ©k×^–šêä°«U£•:9tÔË©;7}ûtµæÑË4m]¼kÙÞOSÛýúùÿ×Ó—Ãn>u{åñËÇÇŸýû|ÜËÑ·V¼ûô‹î?ý„ÏÀù[@Ú^£Ï´þ´s¾ì|κðª+ï¾±SÏ¿íšÂÿ¨CB}#n·áŠ£&¶ä– ãŠUÂé¤ jᆊZ&ˆG´N„P¨eÂÙ@€rÙa‡¸CI&À±—6‰Ç  ~*ÁZrC°;´t©…Í› ¨4rl• €\h!Ÿ¨Z(Ñ‚´3œ+(r¬… Z´¥ÃZ§¢¶ÔÄ2ž9r£©ÃæÀÓÊ0'ëÈÊB uÉ£0¿Tf‚ÏuL‡òºbÇî̱`~ja²x(Èx” 4Z '“ÿSƒµ¢É¨i3ÉÂÙ¬Ucó4œMt,G[Èë§3ÕÌ+/ku5° 2l³n_j3†*ÊËͦièÕÁÄ fƒZPS°À®Í$Í/娈ݵÖlS VXÌ}©"€7s3ºâqÑP€+5îòÛ®7Ú‚ë-b‹kn6Ü.ßDÖÍ·ˆAæX8-6y·3ÞXcßR†âçtŽ7‰?þF—s¾™eãB¾ødžc&YèÛˆc1Nše£W†øEm&Ži§M¶Yf˜[®åç–ñe“qK®j¬ c"e¸B™ Œ™§“3îø$%ntà†ÙpZƒFÙÿœpF8˜µ…0Ýpˆ²;Z}Œ$@G ZÇ7A8K`ëÌ“&5WñéFÓ'jk•2]=À)3jUÏAG#­e˜*F×U'Àá_’ò”€?Ïlh“B79 ˜m‚M E ¦—˜jH™3d ÈßšÀ b!LÙÇ&w´U&Œv7¸Ë1m‚t­`¼oaŽå¥É¡MBz쓎ÖZÅ&$"ªiÄå|‘ˆCžP 8D$ C´¤•ó­_rñCŠ@šóÝA+¹Ãfã™…dâ™`‹ƒ©+ØÉ0$Xa 3–Ñ0¥(!€aã|£’Ãüä@€i,Ì!Z1ÙjvÿS²çä8ïO5ÂSžú\§DÐÉPuj¶4Ì6‹˜lª&1'fldÇšËj¦›4v,eÄcÖÌØ"¡±keì óØ¢&ž¬e\Ü#׸ر®läÕ¾²’-2‘ÔcùÈ3NRbÒ¢WDq§F“Ù„:Úp„´!H«àƒt =4¥YFဌa Y`ÂÜj©Œ0‰jP¢êžÁj%¨Ã\îK@™b&‡§ÉMÆS Qé¸t¤L`3§Š]EbǼ§ f〔¯’/£,$4$yLÊÔ’2k°T³®ù¥tiUŸáիܵ ívñÇ8ââ©ÿMd¯&c)ˆ`ê5™zÉkLÅØ§Àø¾Llf“éF8 ¬ýͪZ •œBˆÂx£VZ¹¾ v…‘˜$`9œŠpÊ»Ì_EÑÖTF#y¥(£ ? su¹+4³â‚»âÒÀ°….Ö —âq…`\AdË F«æ´æ ¬Á"ŠÞcFž½ì6d´šÅÆh4 }hD Q~¼cîTgḻkv°(!¾67~Õë{ÔæœÇ4U$[_W¤×ÄÎÕ> Úk¡¨E=豂ͫd7‰YÂB诒[ ¹Î‡“øÁba³¢ ñ§¯Ÿ}­s&&Ö Y§‘_Ëã~° jXÿ-Òj”Wº n”@ à>a/Ĉï0èœU–De¤,ý-³{ɪ<ç†åuÄ'˜ÃA1©|ä0§›ŒO<¤ntw8Ioâ¾ÃHD£wIQ<»EÅWABså‘3@†©ÖŠ ¤tõ˜–ŒdPÅ€SE cÒxLc$߃ÓQÿw—€>—§³"^‰ª°7I$$^‰‚7á•©vä3q¶š2Ž tB]9å3q°ÞLˆÁP;LDJB‘ƒÁÆ< P~¤%FeÅ€ÔLö°\®æ8xò>©(d&PF f*“3DæUo:ÀUþÊA s°Š>±Ü4‚-ÿ¤éFKÓ-ºàç FS£ÄŸ‡='K#YÉ2¢±‹^ûc¡fÖD¿l­.Âío;Æ7‚­j㋺v¹Ñc¦$ÏXêE³ÑÑŽtÎ.íGÜÒQÑ…NµýÈ;’UÒ•æ¢nKä|à“8º„XЉd@¸QèTºÐ‰çþé¼û¤ M^ò'ed*ÛpbhÕwQÆ#ƒz…¬ÛíÃáojÖZâŽd‰†$?éT½à@fÝ¥O¨DK,:˜ßHÆwðø‡bˆB¶+FÄ·ÁŒÓ1ˆÇ Œ§baNX ¯T7Dà )Ô*° iTàPÿFZ&`Œ#ؘ!G8‚Q ,(°^c°%ÈÁÄ<o•0ÂMæ°†JÄÛØ *QŒ#Cv*†+€ƒ8À™N€²!>4¥è ¶¡&­@D7P „3cÂÓ0†)ˆÑ“`t8+ÖP’;t«À„ÎÇõ.Àa— „U‚q‰/œá |(ç4ˆÁ‡N`‚¿C%0±P‚ôÁè† ‘ 5t8GÀp .€á%ð1„P„èa@ÚËÌp¨a'ç»Â#º8,j9ÈÁ.¡¼1l¬›ÍÓÌj¡¸F–“U4,„ÿæƒW7ÆúŽ‚î™ûÁ¶ë‘ýÆ‹R [̼~™íߎñÏ?Ÿñ£›¡§ Jûš¬©¿ž™ì¿|492›²Q™£é£áh@2Z@LÓµE£@ ¬,Ö’-ÿøô ¶Lx‚pXnЀN€NÐnXAè=à|R–̓…bÀ’t…\€Zø¹UY(ˆ" ·,á †/ñˆJð!ýÑ ø;˜bXKð;)¨;‚yèÛ€dàƒŒ(¸„O€.‚Lh•iØVˆ!ˆŠƒ…`Ð@o¨‚¨L–ˆ!ЃU@Y¸ŒÁ „*`!ÿ‚ ƒM`…yà0ø‚(‚ V€?ˆ€gðˆi8ƒ-Ðo (˜†Ÿ0¨€½ ‹Wð€VðS€ƒhŠnè€(xO€ÍP>˜>˜>€8(‚5p„.ˆbX Lx! †¢¨(€ƒlÐ9‹b@„(G(€#hˆJX`HŠG¸‰3Ðn †/X(¨ªK˜¨Vp€ø@VàJÈKkªuЄ#p8€i€‚À„ah‚UàB1ˆ`*(¶hV@cЄ|©8`…nè‚=èc˜€( `…·£ˆUˆ€nx„bPÿ˜€L‚ ˆ 5زˆÚÓ9€‚L(€…=x„=‚n¨3(;èbÈ è*ø‚"¨V0 †!BL³¿FÊ¿^k?ì+2Ö ôÃKìèå°,ѲË,‚Ž ÌÁ,É«»ì¬ )øÐ$ò³¬¶JÅò÷@-ÎzÄ, ÑËÕŠLùËýHL éÁ,­½RÖ¢¿ôLÆ<´Ôz+ìð+׬ÌúÐKÓ˜Ú°æ8 ™ уl˜‡#Рf€A1而r‰P™€.ˆ &Z©„ø‚Yù®iÀVâ’p(8‚p—Û©X(ÍpŸ(MÿÀ>ZA(È€0b³“Oxn Üã'壂nÐÃ…(Xl°Á é†K(cX…K(ó‚5ˆ‡(ðkò * ;cˆ`¨‚lЂa’˜‹n0¸*‰È8€=0€‰39@(0Џb¨€/8Éó 9x„5 n¸A,‚+Ø‚µ²iƒ.ˆ¦v؆—À5Ð > —`8‚&ˆ¸I“8€6¨(‚#&ð(½8)(˜  /™ˆlàu =˜ƒ=9;XDh‚©(S¸b8ƒGX†€Æbˆ‚&’O ÄU˜ ®3Oÿ0`˜‰è p„9ŸO ’!(5‡UÀO8‚60Žä00‚9PkT”xðc€Ø¯È!ˆ;à-Œ5¸b0HÐnð?X؃!h‚ÞA„a˜‡3x6‰(††«›»B³Ù@ª±@ýc£¢aK¢ýc±)µ¦™#ú@¶œ8€,ˆL ™10Y¼²bø†l@¥ê†,å†#ˆˆK‰/(1У0 0pL؉…ˆ†¨`ˆnàƒJ0Ð!¸½Ðiè5Xž"ˆ=†*h‹Oˆl؃0N°ÝÀ5˜J äúcÿ¸NˆbèG09Ð…Ø «ì„bx†"0Œ°«è€ø„" 5°0žÜ)o˜‡7_ØË„l ¸¡¶å*#à„@›¸ƒ3ÈN˜€"Éñõ„R[J°°`PG5hø†)Ђëãƒn Š¼RË‚m×L*¿ØhLÊL‘Ï8‚˜Èoèix¦X!XVG8Ò`8„¾½5Àºbˆ€/Th>(0Lp…Kàj*è] Ø_¸Y® ð>à„ A¨—bÈiV „K¨¨¤ O˜ƒK˜+(!X…J¨„†ƒ˜‡ ø†J~‰ªq˜ø8-ý¨b?$þWÛ¬ðX¿ØêÌÁÒló³Á+9v­Ìþ+*R-Ù"›ÙJ,Í>¬‰ìÓÔ,Â*-ØôñX­Ò:‘Æ2-Û¦­°‚"¾ÜmmÆ\mÜ6Máv,±LÞAÒzLÇ:,òc?ÞK—±-²ñ«È„DX•bÐ8¸„&ÿh¥¥¨„ð—ZÎùY # ‡M¨‚(¨ä¶ð‰(ˆyh¯ÍHžp0ì49è„JˆK膋:Ï ˆ‚o ; ±®Ð‘t“.¡‚G=uÙÕq@rÐË’yX-Û ©„ ¸-p¾’X0†Gè °29Ѐ’ê–À#¥c8„$e‰pH¶/ lÀΫ҂iè‚mˆ&¯†7!¸ª;J`>ðÆËY8„l xÁ`ƒCƒè†J x„x„¬hðY˜‡ih…K(‰˜*à„b`cX€gP+ˆo?!¸D肉ÿ(†m‚h0 fFV¸eƒx(Pƒn†&(9 l¼„øß¯8H¬Ü‡è„Gp…` GŒN(‚h`=è‚ÀÊ9Èàn( H¡n`…6ø„5°‚š€ Ø‚ˆp… ØÛ(€N8€‡c‹ ˜†^g½ƒið†(†=€ƒŠƒR€98gtø‹,)†5Ø ‚³‡Ø†b€8øE–yì³14 Ù™î×S3cEj$šaµ&VcY$ ¡£_›¿´:b ¬À÷[+E[À%Î5Qc5Û¼â!¦×[£5*VÀ"–ø,¶ì«X@"Ø1>¤nW/r4¬W‚ç-¿¢…Øÿ°†TAn˜V vØ“†àƒp:ña·xp‚XZuÉ6ƒÉžxðƒiÀÇ1–ÇAŒ?€¸(´¨p m³“2YžI¹'Ø8ñæ—p‚i01E †q¸ — ©€Š€k‹`IC) ŠàŠ$SÄLp9Á7!; OñˆpÊ£ð‰qÛ€©&^)†  Lœ†\9ª¿5²€¡ðÒ¡ˆ#}øá§gòЉ Œ‚z®x“’°dýMà Ea‹èáHë ßOÒÜK ØuŽ ý³>ƒ–0 Ú„Lˆ ’€]£Aa÷|©“u tÿñ“Áh~’+•Þ™ÒГL°³uñ”œD˜ÅR¢5âß®KÒ†M€¨V†–ÀÔÊ4(ƒ°ÚÁ2>TÈP!E‰œ±ÚÉJ¤’cÅ‹%/>‰ÒäIŒ,+BüèPcF!-Æ\ù‘¦L‹A¢l¨"Ïœ,=Ò™Q&ÏŸŸŽ¼¹2êO“«Î´é(È„Õh9û•!Aj^Á\fpY¦+ñp"Æ€™x«â¹r)މ/ñ‚ý§,žÀn ·Hn‚27á Çko²áÀ’[®…f·‹ìy³æ;ኖ<9œ2ewî~½úN‹U›%/v+™@dÚ“#‡ÿƒ­ùm¼×Áa›pg\<Ö²_¯ºk:ôä ¡5o>aò·nš+Û~GuØn‘ƒ=Áí*׿ï –žñ*ØîW1N_|B&âwæ6ÁvÊÝØoÅlRÌñM°Š‚w¬â†iwà°IØwF<7AbŽw‡rŸPhWƒ¯) oá“ ~Ç5HéaÖB&›m²I€ÅL³ kÁ…†›ŽñèL8›,¸É*€m\:§œˆ†•)GŸ–±iB¢š£e hŸqFZÍ©³‚ºª¨|â*g¦¡2:(¥£iª°îIK‡¢è¯ÕJ«™Ž6Êš'‘AË„ÁE0nclA‰W¬²…E\YXkÁ(#_8Àn €ÖÂw—Efäfn´&Úf‘€pr–\ Ö dÀÁxöyÊðŠçµ`Zq«]œ‘Íewddf]À¡q{…l®±+¢ˆ«]ño8ãX'╆†Ü’íÖÝŰQèàwwlPÜs°mȳÄ!Æ„ÇÝX\0øv!y‰üÉlÊ…#€øEF¤Ðÿò6Û‹Ùëœ2õ xexáMZ1sN&ÆÕ‡v1*gcÛ-¶ar›M·]&›àÆ8sdì†uÜ¥‡ßvÅÀób|/šsð´É”$¦U.QЍJD^I[=WmJt&U$y„SJgš.”SViEU£>q´”K¼OûùëŸß„To¶dÑš\u|ò¦;¥ÔëBIû<ò?]ßûU°ç4úRMIµLA¥4T£×DÍWl´Ø V‹ß9y‘µÛµ½ÛÊG˜¶æ;]Ó€c±Ò‰:Çf7 å¼Å5õ‘ÐÙ¤É,é-ÖYs4!0çF´yÂv‚&²ÿÞÄcãàŒkZˆ¶‹µŒ; æ4# ã§b e6t±ˆYì@<ÚÅÒ#D)q'Dêñ¡x“‰ä­:ã¹KÎ"ÃæÄcðqK1¨¡Ç ;Ô`0×›Ú'Ñ »•Q@LáVQöÑ:n™CãÔ‰btH¦ÉD7úˆ$ÈI 2Sjⱇœa[Ò 7ºê·Ð„’¶9[ƒº׿Ø?8˜Æ`sÈ ÌDÿõÉZ0:Q‚O$Ç6s8ÜÆq*‡Ÿp¬v^3‡MÔuD•L—ºq‡M¸!TÐ@Ú€> ¦p-;D±TÀ]à„+rp†Oxrn°)ÉPé'TÍÄv%©‰*w§;êÝ Q¢TYÊ+*j( TÉÝBU¦÷D,®"”¯âK†œJ¾â}Ô¯ÂÛNgÍ ¿¢ãTèr*B•r¾^YFXâ,fåÊPÃòozŸU©ø²×R¤jÀ}é{á±ôjS"¯³Å€Ã#§ž`ðÁnìDt ¥Ð­•H@ƒX#´JÈ!nqË"ÀÈñf98XÁ ú¶Ÿx¡ ʉÚ!„øä¬@•àƒÒxdø!:ßy[ÈáŸ.CX„pp„lC@Ž‘'hP1‡E—Ð8 XØÖ6"*Bâ`£䈴`D´Š&,ài›€1V@ÙÒmóи'ƒƒ6XÂâyE0š@M˜?p`"ÿô 8À¡ Ó¸K`Q‰#øo€î@ P€#ä Ï^Á]”SÏQä˜êSTˆÒf‚› òšéËÓ¹y AæKXg•Òaz´Kf9§‰½r>¯vÊl¦Ïésœ 3›©„‰ît§Î¨¥!5ß%ï y½qÎÎ(+Y^ÌË®¼ëÕ³ž Èä?Lã]ñ0Æê!LéÓÐq0â…xà; Gª@A;yØàµ÷xDÀ˜_0Š ôHÈAô@½åBÐ1<› ô¢ \SOªðˆädÕ.‡ø†7–Öœ`äBx„î…olAC”¬,dáÿôÈ­9ðÀ!7žE  íX’qŒá-#”n[Á7ªàùÕBP¸XWa!èþiB»„,„° ­Å#UBR•3ŽN€Á9¸Ïü0pU$ÇåC78È[¬#h1|Â&à‹#x@&ÀLfCTÁ @ÎÙ„x€,¼‚TP'|,¸ÁŒä1@Á#@ŽrL€Ä@ –ü ÄÌHqd–TtæÀ‡xÀ€•Ó¬PA7Ò¬yBÁœÁiÍ1t€#ŸˆA´ÄAŒDÇ|A„Â4˜@<¬@'lƒtÁÀÓÜÍ+ðŒÀÿt¬€ÀÁ<´A7ðÆ'”Ä)áÎ:Ù|%˜¡¨øÊ€ÅïôÎïOñ”NùÝøÈN.=Ó7¡Iù…Öñœ7QSø<â:µ2åììRêp"NPTÜNRðŽ+nbêdÕýV(êt„ï”b.U‡ñYðÊYh„±|@$‚78ÁÌÆ?FÄùA¸AÀ‹|ÃHÀ7ÄC5êXÀÂ@I¼ÄËx?´F4‡|%È`°ÈòaQØ8hÁol€dPÏÔG1\‚#Pl,I+|ÁLfÄ:L ؆¨õQ%TÁMÛi@DqLÀ6@MÜAÿ7ìÛ ƒ ~ƒCöud0MŒàH&¶‘?RB¼"øAÄ@ÁÀLà B c°ˆxÀ+HqÌ +P- „[µ‡”P‚#t[\8&tChÈÈ`,Èé…è4lÂI³”ÀBX‡dd‚dt€aZU$Ô(ùÈBìù‚äL†Cª‰ÈT‡˜º•ôB¼FÝÄÁÎH&”À#Ø£âH<˜A;Ð]áÀ<°@ÞÍ'°Ÿ6FÑTAÍSÇ[P6hÝ`ÔB+ü@b FuB.´éÍ xÀ`N&á<8ÿ-È*xƒ,ø&ä°ä„ҼôBq˜ÌsÃVƒ`bÎ €AÿM!š!yÀ%x‹ÄƒôÂL+¢¹BºzävtƒÜ›sô€V¯™‘tó¨ÁˆÁØj°à ìÁ+8€<ø|ƒ'4Á6¼M<€\Èœ:lÃ#ì@ü€3'\¼pe"´ªÂj©•i81b™Ԫђ¸¬!­† z,£Ñ"FÔN‚|(£CŠ,!Jté²ZËš/'²”)ñeB5aR\éógEœ6[òt˜4aC¢Ke::Õ¡Ò¥=wuZTêϨov…ºµ)ؤ[ÅÞü)5çT¦>V[5j]µV3"¼8R¢ÆŒ5S²äH‹Ú²0Wâ‹§,¢&¶%®Ô…˜ÿƒ-Á¦« ì@°;[b(¶-X„°¾ˆ*r@Y0eÓ¾ùÉT$qÁŠÅ›@ ÞxB ¿3a….ÅÊîÜQ6!Y³ÞÁ'T Sd‚ç;ãŠUºÔ‰À¸L-t¯p’)^<Äs*“Ýq¸~”)ã]þ@‡Ê­Rîxàƒ 'œ;¶ÑC¸bî(†'&èÍ7âæ9 ¼ |›£‹f¾ûoŽxº¡ß@œ L>Y,?ÄLð¤ eV '˜Uæ‰bCò’;Œä[…€;ô ‡xÐo•O~(ÁU&°>ä¦Áb2)¦€&˜`Ã;VƒœmäH.·9Žb‚䪻c .qR¸"ÿ4(ïIß‚ºL&§…9¢XÁNÞðÛÄùzCî“ èæÈb^´¢W( +tX’°Œ§’#8Ñá’Jøx1žŽè‚8†ˆ ›ÏpÀ&>\%ž¢ˆ¦,9©$‡=¼)"ߪ P" $„ljJ®2ÞjIY§0‹°¿FêH¢a© IÚ¼,²¶ ްå([j†õK%oE*·£¬·¯só‚V$nŸ¶/Œ.ʈ^“jRI#u³í7\½Þö¡ÀÉ$zæ·\€ÿ¶ÞgÃÍWÛwò–Üuî¶#“¦·š‡IÝ‘EÖâkã ø¬e‘]i«e¨—#kÂ×ÿ¾°Ä>ÁÁ³/º‘£›)j ‚i¢‚›¨.œ"‚¢ˆ *p⤕ñˆq€Ü <ÈA±Üø/·+ r:žÜ&ø„䆟Ën­˜ŠÉoÀpŠÙ¤˜wãz¿[ ëÎødÌ‚iÁë9’d͵µ«,[·3!cÃ$Ë3ÈɃ!‡'ã™ô3:±òºäâɇbœÀ*MO.95LìŽpêg$•)ö; õz×`LüŽ&]ƒËøjY¥–b:ÁrÌ«´Rõxjé¦ô1‘Ÿ ›;:A0žUL亂 VÁrôbþ.¦}$'à‡n O»O† fò ò‰Mÿä?½ÙÕ4бœ;Ð&›PŒZƒƒ(Ð@%h€T­Àh Xñ…` "xbUŠÀ‡.!tÅpÔÐÚÌ¡h,Šp(È¡AºC Ðh•a!diŠH¨e”Š|….a \ŒE¥‹_4V\¼¨–¸€eŒvÉ \Έ2.q'0±c»ˆ•® ¥.DA SŒØD8ÚÅ%I˱²Çw«0Oàá:!„Z„ ñ! œ‰Oðعñ†qÁ(B8âó¹Æý1ºÑÍ€tC€:M¨A¬P Xg»Ýa•ÿX²Ý€Æá›b´€k¸lAáts…ì­6¾Y ˆ>‰ŸËM x­)Ïîb KÅ ‡s@И|3Ÿp”È ÊÍŽÚWݸ¡}ºÃ6a¹»à½“qï¤f8dÙ›p -9®*[a—@$yÆD,ú&5ÁYºç<È3cúæsÇÍáAnmÈ!“nª” ^@u±CŽüZÔ:–ȧùŽVKW­”š·‹GºP‰ ° ¿ø«A«ªd> ¨Ÿ2*ÿàÿÆÈï„»N,?èzZîÅòæÃü‹ç°ëåÌÅä'ç.ŽEꄟ#JÀ ~ü ˜m|L9Þ†}£r€Žà ‚ᨦ,D‚¡ZçŒË¸ÿaÚ§‚pà~ÇgrãoÄÇ3äÇÄï|¢ˆ¤n¢ÖÊêb.Í#ÌJÓé.bbÎ/&(ëÍôJŒ©ØæìŒš‚±êðÍ0Ï-fBòÚâñðèôp°dïáÂ+r/_/Î챨H®+ŒÖp]f#<í$`&Ù>à02#Át ë @Ú`Aº@ `a¦a1âaÞ€(1–i•Ž©:þ¹Ë ä;ºí?ÀC@¾¯]$ºÀ£:–qáæÏ æ nœÑN€Äÿ<®â(ìºàæû ¹Êq™ôÏÁ*Lââ GZŠÀ( ÀDP¾NºÜI¹瘌q™(ÿÀL¤ÃPŽÿ´± áÏèð_®¥°çtîýênæEŒ®†ƒEd0Â>Pç–ã•À…*a:A?pÄvÄâ¶t€R‚ÁüàG6€E°ÄU2ÃŽ *ŽÀÚ€'›À~òÚ ¼á¤ÁŠ HÃU¶ DpI$bïJ±O(,«®*ëˆn­btbâ0ZªÒïF+dÊ*b æc|o`,ÍÎL±`àÐÏ&Í^>a†Ícä.ÉŠdÚðÕæ`èbmÓìl.Çe4ͬØ%.×Ò×| Ïâ0«ZàEbøådób“bàò+/keŒåó0‚#– cjpÿ«* " Ü íÀ  C|C·DÁÊ@ž±ÛæË¹ögd¤¸M™¼­â#ÿ#ˆø‘”¬ “¾‘ uŽ¿¨óž”± —i:áæž(ì_̺„n9ø«ÃpDÞÈÏÿ`lÁÜ 9ÍQH—¢é—Þ+IpçàOŸð39ìÄÐå?þ°ÉÁ4l¾x‡Â¬'éÇÄ0Äú§ p VÁ Ž@rrΧ–æ¯Ã¦áhÀPVAØ©&ãã(Q „  ŽÜ@ àÀº ¼Á*À"` X!àà(!L` Æ'Á(â*¸rØ´÷´¢Øÿè ‘þ*,öŠŽKŒ:±Ój㨩Hñ˜(°61qϯðbñèÈ-ðŒÈt«TÊ(+qŠI³0KJgâð /»Ê*áÊF¢^¬A¨í8˜ jœd§2>$x“R™<6àúàÆ Ž‹qÀƒâZ åÆñ?™±Á®ü‚cU‘±ç n ÌÁ² •¬kÝœÑsN;·n#<Lr$I¶ XÒ7Z„@ÿÃíøÏ|x¥Þ°ªË9—)!{)Âð A°Ë<á‹k‚‰ ?Å`Ž"éÇ:ŽXÛsçtçZÎ<ñ­çðooئÂd Lî@'W *ÿÁ2 Ö&A¶ŒkÌä¤íÐfp ŠAŽ8r`~² Àš|Òà`r€¨`ü Ž 8¡ ¶abý€P `Y¡&1vˆ€­>“.ä2F^Pmõò4ñϳV¯«®RPÙÊô,Ï*ÝÌ«V‚÷/+KP/1, +³ö”Œ@ÏðX¯j)j5û ñ°’hó°Œ2Kó¢V+ïÒ]­¬ü\Â`‚ï ®iž&4@ä`š¨ø  &¼¦qnÓ<ÜÀÛö¹Þ¦¯ïm¾ñ‡k~k•P‰îº±ž¬)ž—ÐV{éÅL¬â rç¤IŸÿlw–ÉN¾ï‡ÎQ8'`€.N¾4!«d9¶LÂ’@«ë––sÞÜo8×KlǘðÏtìÇ”£¾‚H肉›` ˜ÆááˆÕ›€u@^I$ •šI`g~Øgèl'Ã|n¾º¬çöFTñ)«¨©¾ °™ÐqÞÆC×@nv‡@5»’#T/®¾„®\w¾D÷"© =Ç¡Ã(Œ\SŽ›>¬–Ã5yŽ àæ[Ÿn„n8Cv:¡d]a§d¼aŠ "À¨ã|>JÀXgÖÀbá„áÿ  "`F€ à€# '½aˆ’YÀx’@e ø' ¥'`¢² ¤!ŒeI9+!nø±’öNŸb_,ï°Bs+¸ñr¤û)È‚P不¶Lk¯±î"±È”b¸X4ïñ\/iù4¦ç0®RÏ*+PgÏÓöï~¶KAÏâʧÏ÷0â4â–Aœ`3Š ¢ÁgZѶ¡#1â3,× ,G4ÃrÞfÞî9}9Æaã®+yÍSw®7ÐyënÂðïæ ›Ò·üÖ1! ¡$òy9ìW #;LæÂµº:NåîñÅ’Ê:‘#Å”[Dè¼K`ÿ4ྵ—Ýq~B÷™sÃÔ]ε#.âô»Î5TýËv­w”¡|VA5Ça 24äA¬CAà@Vá ø¦L€*^!\Ú€ÖY§šÀ ಡ@à`8á¤áb  œ Wxrt`F_á–„FWà V€âÁV`˜¡”¡ :Óh6>Ï'vx…m­‹ÉØŠ+ƒØâã‚a˜¯,‘¨AñO{"Âu³¼‚‹<öÂÔƒ/¢h* Ï©¹–ÍÔJ±Ö&Ìvç°æ(ÎNœlÍÑ¢˜g-ø¨á0ŒáT+nrX¨üÀâa˜Íš¨58Œ¯<Êÿf:ã?|W7ìoþä €dàz ;]`ਮ*¯¦­%.b¬îpËÌÚ“œ¤A¾¦3tKÜ`QãA¬i_ã8¢Ë3Ò å”4ª8dP. ¡“RBÙ"†-F‰cŽW6i£•k¦9#ŽI¢ a—&V3¢† &Èa ò åÔèYÍOÄÌX_$§L2ñÑI<«èQL ,ÝÄ’Wedh8„cÌG6©´AImµäUQ!aÅ–J#¥E”ª«Ð”QŤÕRª_µÊR®—ÖtZ¹â”Ó¥«”-„tÇã@ºÉ*Á–”LnÄsÆJ2­tì8™Œ´’S6õÅšQÅt{UH¥M†ÚŰ{kIE‡X0s}»Øl7¤[fë¢ÖnH±Ž4W "a6ÀlÕ«“¾Œ!ìSRÿ±kYt™½”YRõâ GÁoqÂÉ ÁHƒIÄ´q"M@[ËXs´ÛÞpl“CÆÜ· 4aÞ+77!M~Xa_ÆdsÐÆ$uR&ŸÌu…a†UàM&ÞH=ó+mDPß6G¼’ãú™gž_Z!—²è%šcsØvˆÕ,"Ÿ îÙƒ&~wŠË¤èöß|ã¢ÞoXw‡öiw‚}Óýö‡b/ža y/¸7ä•ë‰øäzËaÝ Ó-z{Jnyé,z¸ 5«¯Ž§çw³Î¢âŒ ·á$ :¹‚©Ï®{ÞÀ#Î;ë›yñ¶î{›bž­¶‘{ö½L,sE<àpI'µÿt¢ÃÓtBE'›ˆ1O'Ì´ÒY/…ÃM‡vNELsèEL ”LF}rÆX…ý¢…ƒ¦EK$-˜tâÑ‚UàÓØD7ŒUŒMP¥èFQæ0 v¢1EY7ÎÀj•$äÓ‰RÐÅbà€%ñØØ¸nL£N;ƒ>q‡nCÅÈ`'p ûµkÅà¡KÆ’‰MÔà.‡ F Äð cÀ ÊØC F€bi±g±ŒLöp†`|b/=äÆ'h”±<ªn¨XHÈC›L`\ÝxáÂÆƒNà0µ ë2—˜¼^,é„2âXLÌ¥&8\…"i”;Æ‚ÿŒ0n£]àöPo¼âd,(Â'¼Jtáó™ËXñŠNT@j÷)å6"à V£ÛŠƒ6ÔìÆpE&–-ý± sœƒèŠ«€°Ì%ÀÀ’¹t#ÌÐÁ*@o ¢O ²Æƒ¦4'%ÏJOÂÒٺĤv’‰K+RœÔ¶6{ú³Ÿh‘‘Æd$.±IK`Šó؉6,™-JôôR”ˆ¤Ï tM[šS“ ꦂ®ÉHrE9JÏ$ I£µÑ˜œ÷"Òs¢/]ëØ`¢e¬â è "˜Ñ…-¨0Ê@DL ƒ˜¤ZÁ Ô „p‰ ‡2ÿˆ+Bu­Ð€7Þâ†“ä€ [8C8L²Š ÐÀk˜‹RŠ‘|!iÈ"@-¶…(àÀ(Œ ,<‘ªÜ¥|èÀ S–b z@&U”mÌ£«´¨ ˆ„^Å8À3hà€G• +€9"P/–¬ 1ÈæÞ‡w‰ÇæàrÐÀ ê›Àr‘Œ Ü ˆ©@â`µÆ£(ˆè˜b\á¹ 1žFÈ/̃sñI1à0rø2‹9„Э‚yc¸Dv¯ ÄA Î I1*OÃ+WÀ[Á0Gˆc˜ðHÃCq¨À® ÿŒn| ‡È¦Hk[G4B=‚ñ X° FˆÀ*¬p<â´–*†dg Þ€Ciˆ'àD4@TÀ!ÁàÃ#Z‘Êôp P¸,€¹†¡ž€üÀ?¬aBèÂ#0q†LTæ‡ààP?äÈAÍ{^Úæ»1nnŠ›ÞL:Ï¥m¥>Úg Ø–æ; éÏuΧ=ùÙÎ=»)Ðj¶èD×ü¼é9G½³BլЕ­K‰ž4GÙ‰Ò7¡ô¡uŽÓ?ÑN7Ò~Ö(ó íº7C.ιk-h¨0\+µøD jaØœpc‚ÍŠGµîЂ ÿÈ"zèƒ!³C\aÊ@¨€Š…Іo¸áWñÐD¦„ØŠÁ—€ƒuëCxã—ø„¡ZP„Ü Ù¤W…!‡úë„#̇¥Üað@ª½Ê—C ö­`pÂÜð@Ô) ì¡ ñÇ¡º¡ílTá.¸Bô`Œah UÅÐX ‹"Ð¥ßÈÁ6ÒÇxL bøA%É.Ìc÷G8®0˜á]Í]¬ ‹L˜˜Ï)†챇ì!2Ÿ A4p‰Â*f¸m» C b\¡ p€ Te1nü@ { Æ#. Ò*eŽ Äâð(ÃÿsBþ{‡aÈb D]â!0\¡ ŽX0ú ‹؃ŸÆ0*Á‡@B=`'àphàÙf0T1ä0OD!²Ï#Œ¡WT,ð„̆.1W %hÖVPæk‚ÌRùJ`~h‚(èÓb#ÐÀô›Ã ±Š8ˆ"™@Ð”Ô !7[Úlr²³ú1£:™¿poËS¬9”»áÝ n}RÝœígͽÚo©7ã6}C6ðGk¼³;H;v" HxÒjcc~88(8¢g€óÇ÷÷¢3€‚k£:ïT8 ˆnv9nR€h7ÿï„~'E%5"!Ô° Ö0(´Àƒ×sp &@ ¬ nñCU 9p,]EàB] ®a ÐYóÊ ^ÁŽP×&ÀB qŸ€Û U`Eì TU'wµQ+vpP µM ¯@pÔ?°ö sGà r p`ó°‡ ¡ñ •° –À ‹$ˆÀ%g`dgP rp¹°Zo!|€€í)óa ß°),Á™p(€a¤ + ¦ l@°=ðÝPwÐ •°( «ÀAC {@z×.8ðab ÿà.Ûuž€À,AM ä€  ”û€ Ž CÑ T£ÜPIRsð xøÞÀ^½ •)£ô ênPJgp9 ²5~Ð +PÓ¸Á°Ý@|Ð.ÛÀy¾@BPa°V09Ð R€o±Xr`ð]ð TV3~SP  G` yó íø«à ñpá& ~@ØÓÀKk3,epP,¦m€ZKk ò(|á'B~!e7‡j0Ui.P Egϳ$ަj„†j|v%¢†P"uj…Öi#Ö—“fhoùi!u˜ÿ&%$÷ôR„—‹ùOIhùQ~¦˜ 5i§¶giƒ<²hž&O e™z"7}Ck 8H4 dø3]Ð Ÿð ß“4ÂvDjðB14 ™PuÞUrŸ0ßY‹·,P@0ÔŒ”ðk(KÅ|@àòg ÖÉAäÛ0úcq`@xµ GÐr&´à 4ð /Qݰ²p(c1 «pÖÇAÂV-Ý` |p-! Ü q°tá jà P£WPó0 {Q†{€¹°Ÿ e1 gÀ (ÀCoqSf  ,Ð yµ bpØ.Ÿ0gp䀉ÿòÕ4UP uq-s0bà‰À>gà zßÔ@¤ &ÀÿŸðqp0>á?(@ ÄÁpêè /« Æ r°Ž$BBà%ÐrТ™Pwup@ ®4°ñ@‘P =à®0¿Ùd ðáð pP Ù`ï±wp¦g ˜°Z²96@“Ùpà= ØgÚa— 3èqÙPPœZªÙÐQ PÅ._Ò  àh€F˜õ‡€ïW; è! !ûT$…~–F$Y’$—Qñ'¢†i¿ê«O²¬ Å~ih˜‰©–eã"'5%ÿõgĪ&m2P=ò–—¹––VO~«øOU"%ãZ:¸€š“€d(Õc"§y×fþr sB`ñðe £"œpàEp0 q S8 Ñ)sp0HåepÐ ¢A*–kÀ*Uà°€ñgà ­ðÞàk`AH{Ð…ˆ{ —ð6± NàVp,€a-(` ¬aŽ ™ œÐgq"y„dÕV^- @ s°xá`žßu‘S«@ `¢³±Å€VD$™0Rp¶ÑQwpj^6¶™Àä  ™0 ° E-ÿ2± Ð` ÃA=±½€¥-/+–¿2s+€CK´ ¶¸ «@¬‘m {pˆq` &°Z›‘ r@rªUbd(¯à ½p Oc(¾pgŸðCÙQ( »À§$ X“}‘W° Z0©ZeÙ@( ,P©pä°•êcK°äP¦T à TÆ ,°ÔÆÒP59B~dc<¢)Q©&˜ov9úÇ988H7²C<˜ã;·“Àrã‚|ã´ó9ü:›gŸCÀÊC<õ;É37-H€*h9 Á l8‘ãjH€óÚ:‚·C8 SÀÿ#¬ÀiIƒ£S;‘³<4L:º ìÁb“OvƬƒ‰' Òƒ¼c ¶¶€Uð ‡ÐJ± Q0 [ð(p.  À›ÓÀGPUÀN Æ@E° n=![ÝðØ-sA/o»+ŸðÄ‘–-K` ,09Õ g@v1Iñ ²pò‚sà °¾X™p ‡Ð,+±ràg¡GÁ° Ú ]k(• |0ŸP´lèíR Ò4 Ý i;{ÐpÐ òÆ€d)IÑ ÀŒÀË«Q=PwÒöBŒq•w-s± ÅéWÐ.«uÿÝÐÒö?Ò \àeØË]Ð zêKT ¦À ß8-pgàÊèe¨bB€{h²ÀoñBÜ@{°†Ý’ UpîI@Tó Ý0[Ö² {@P`+«Õ €W°M°Ùk —P•`œªa±X1rÐ sÐ B \ó ôñ œ ¿´Ù`MÆ ¯°À`p"•ç;U© R pÊ ® N¦;h†¬ñú­|–—îJ—áÚ%'¢&š)RãZ!9­/•ÖÀ:OÛºjǪ&>ÒR…QÔª™kYÖj-×þ×麗€ ®7¸˜o Sÿ&e‚ƒÅj®yyƒ?r&xýÖ:Â:}³ƒ×S¼š UàSN QD!ñBÐ …"r@ S>@€ñàŽÀ±l(sÐ?PIµrÆÞp¬?m@Ë]+–A+p-gAÓ@¼0uQÝ0¦×²DÊP‡`Ëx({Qä@Ê\´ ½0WWräJdGÀ(ÅpÜí¨¦àGl!‘‡0xËTŦÀ bä¢À Ê* ÙÐ-î  ]†ÒtSÐ TäÅP`` ÝÀS— S0E½»K) Æ V+cŒ .½+Wð U²ÿ”@Û{£Y}/¾r` Þ ¹ÿÒ— ?BÙC+` ­°@‘-£W°G0˜1óȾÙÐm°[°7N𠎰 ™ÑµÝ°½0MÍKF V¥ô!Zó Ð ,`E°ª~ f ¨axJ[ÇVPeRCpž€ÑT}õ»N^Bgȳ‚5œ(Ä Ei9¬+â˜(åRmù—k6¬ŸnP×:˜˜‰O_=O‚$òĘ$åÖ’ÆépI˜Œ‰hƒ¶­²¾×u®—†éæú&ù꾞ëÁ£Àü%ô'7wC aÄñ° ~` 1ðm Ê@cÐÿ~`UpP9P- Np`àbÛ8`óÀÛðÜbØ Ó §‰ñ T ñð tÓàp=4P G œ«nᾑÄð ¯À $ÁU4à%` ;P®`('TKf›0E0”P(Y'qqÐGÐ/t,ð °ŽÌËŽðÃÑ,ã°` •0w1@ ôwP(ÅÀ ŽÐ|À´,ñÜ1 90~¶p ( S jPÉàG@t”Ü]Â×4s!½ T ßtŸn¯@ÉãÐ Ï ð ‡B)] B]–,àÿ`r>Í. Z ž ŸäÌ€ÊwQ r'  Ë~qÌ` ípÇ2j 1@ù—? ?@¯ä ð  ?pèG° kp¬ð æñ¶#q©h2Ž@ Žðbì,ZŽ |`J0 |p²9 œ   ó ¢PPUG4+0—ð UÐ|àQ€Ne`–ŒPœ¦¿Vr&{F:‚'÷Ç;eÊÐ*SàÀ‚ *¤ÆPa‡ Ë4œ‘¢Aj Vƒ¸P ­j;v¼²£AË86ÈR¤É‡&eVüH“bÉ–-CZT¸qÿ#Ä–ie|ØS%P”I.åx4fµ7yÒy0¦G„(_r$XM¥ÒPA*]¥@´¡,˜qbZ¶Õ>P[ÆòÕ`ñŠQaqÇ—;ñ‚]ÂnÕÁ”µ6-ÇäV8à'BO°.Áñ¶-X­VThˆNY0?Bìш@¸iÀ/S¸p~¾PÑP`ªMwrhè¢aÛ„x-æ8íjB¸`á*̾4MÙóp.]úb,X° Átlß2'Ø G.¹²ãm“ëx](¡ˆRìN¸;Ÿ¶˜ Ö¦ôMŠÐA‚G¬gŽ&‚Lˆ ìŠpŠàC*ˆ½U¶é‚‚ÿɤ…qæXA>ÒVq£˜bˆáƒ’NCÏ>øøŽ;Æ™8\Yq7žëf5š9"¿Viƒ¹(.$ žôP£Ãä«dX)¦…LâÃN89/œxÎèâˆ#¬è¦˜xVYÅi2ðc‚;h¡‚6X8¼;üò&oü®µ`Xæ#\©`Žx®(àŠWÖ&Î9Œ¹¤l¤9b…†¦DüÈdŽqâ™&˜W*ðÆΤqàˆ1s8ÂŒ±b…!*Í!›>€( ›€h¢c¼ye›*Èo’=¢>+8"›"*xå•lrØÆ› 8B PØR‹š…¸*h™¸àÒVÛr9ÿ‚*$oÑEËÝo¡r‹ÝÐe·Ý´ÔW-~ñ}· s÷¥\w÷õ®å÷Û¶Þ5XÝ…ÏE`€ îÞ‰íÍø^|ë­·ax9–Ø_t 6¹-mçµx`ïý8ä†ÍUY_Œ%þi¢Œê¢†š»p£ ħbΰb:a¦“¼”™Æ‰ðæød¼À‹Ç¼ï¦lŽNîà&/2Â9q ÈŽç½MÂéf‚NŠð™É=æ83œ &Pf“ ’¶ïŒçÛÆãÁá“q>1¦îpŠù9°ûÀܤ›qºi!eÀœ`ŽUÀ<à7ôÂ!T47‰î½nÞƒ/˜=>)†Œó°œ ›;V f• Zÿ(fœL`ÿä· Ë®;ºÖŠéæ“;æ0Œî92qCͺëf•bÌ‹ðµϰ¯îæ±ÞÉ`% ?ô&#¼Ò¢º˜ GNè‹YEŽÞ'ø$˜Û/Œ>0~0œMp.ÍUÜá6´»Ð³‡Uà`¯àƒ®¶q‡+xcƈ}>¡ª& Þ8 * cL£`:Ãå‚q…JLƒLÞhr @ Gà™ìxEèA7Îp5¦u-Q(ÆìД¼Êd‚®xE"° 8Àa¬8¼Ê`nñk-ùâ×Q¾r™ì¤&"ј@Üâ°sI,#êâÈ1–1sMl2ƒX»ÿ¶E4~ìŒZ6E,B£Hr”œxE•ƒ[³*§ µ†*A|aµ \t”%Ûà&K(‚ò"eü²5wˆÎäðÓ½ÖL®¯Ü}jD†ä (AáÁÏ8s‡ôè`jÍ8ÀŽÉ!Ên-Q=ذyLBOž§Øu#ãÇp‡&sÒ­5 Òu&P‹Ø13o6šz2qìíS¿¡_Cí™ÿûœè„èAk÷åÑŽvt«\ûbw«ÝÁ>‰+ ‘ =ýå =­ñÜ„JAÒ† Ð†ŠŠ+àƒ4Và«ZJ¨™“¢*à‡øÁÞ â6*å+¼ÒðÃ\á5À©«HÞ*2AÙÝ®9À*.Û\AMY †1*PJc Þ€ƒ¸Êð„nÅ*&K£%vǃuÅ%0K r!ä´ª­¸T‰—<å"NÑ Pl[³lö$´IQĨÙpQc&Uʸ¢“Ùb…%g1írÇB.°ìÖ¸>­G~Råf7+]¡mTŒR\àz%,Ûµìp\ìÿ2·´àê ÃühÈΆ„ `Ï ¸úu¢“ûŠ †¤1M81ôÒ‚+ôHly9@¶±qžzÓàe ø×š¿~B0Ø4ÞÕä—in¢ˆ”«Ås‡rB:ü{ Eãá†ÊÍ>ç‰æ&¤i<ð X0wø!:[³cn2in‡9£S‹s†J9ñ D•щç˜v6rÃÚqc|Ë2„K‹0|À5“;ºP À/_@.±Áœ39ßéÜA p'LÃ+–2â¹ÏÊ#m1vl §DpÂÞ*‡û0´…ÿÉn^|ÎÛü’ `‚±`öœ—+„sIG–ª`EgŽIŒÞg×/¦ûÜÔš?5ìú>3‰v5*Ý„  qXsrãЩ×} Ã鈋F\âéöžº¨4@}¨aW9ÃÐî=5rè௳Ôç\ï7ªÏ[‚ OÖuêÔ>Eˆ"Ú0—à{ñ¸Ô pÒàD6\a>±â7´›À8‘Ö ?­´¾V6Ž?Àß4ì¶ñ iHcW´Ž€7XÀ™°Â p¨ÄžøkSyc ‚‹‡;[ ÇŒûŠ™Õâ"_®â"·Û ¥Er/ŠÙ¤Œ;¸Ž™rÑ"•iYÿ·‘s˜˜Á¤¸P@Gr/‘y@t™‰³—“)$x;8}‘7ˆADJ¸ ¥…K†¡µ 6ʸŒYs#0 ÀžXŠã: áÚˆeh¥Óà¥`8“ZH ,«…O€ŽÖPÙ WŠ'{b « ë@,01ÜÀŒêẨ2ºY4üÀ졺1ô¸²:,òºÉ“ÄSÄ<*…*q6ò[…¯)zÊÿo€‚"€Nˆ€6x#(€JˆL(ýá+Ô)‚X˜µ¡»>¢?(‚#„ÂÛƒ`0XÛ!o°S³‚"8‚ °‚6ðˆ€" :?`p•a9¶2oˆž–²²“Ø?´¸ ´·ä¸Ô‚0%›À.ÖJ ×bŠèºŠjÈêú¿2øŠƒìA1¢È/B­†ü-Òú?àz‰ì®§ø ¦€­q Ù®’@çòȆ´.‰”ˆ“ŠˆüˆÚRÈ“l®š /¬®›d-ËzÉ–Ü.³€˜y)¸†«#p1¹0¹V ŒbP3 c¦ÊIªüº%™œ¼ã) DÜÈ‹8Ìÿ¨Û<ˆJ=R4¼ßhÃRÜ'ŸËı±Éi¦(©ÄÒ°°´<ž2\&HìB”jÃI,2>ìÃ}²D3$Dk*¼œS7”ÓÆ±ÃË“<´ª ãA2TLèÑÓ4\ÄY¬ªS´ÃûÓOüRFdÃHlœ6 L²²ÍäDNDÉNÔŸú )!ä†mà”5€‰Ú é¾`AFJ¨Wð>à†"(†L Ù¡s\ÿ? >ñ†.¨€5À"ºâÙ†#P2qÇ#(d,€Xo0ëÛ+‚" †#0V8+8,X8 Èz!NƒÁ¢8¢PŠš/‹LĤD8Ž“ÐG’$zëÏEr#€•QÕ8‹‹ÐŒ·3²"ãWuãÍ×|}ÁHÂŒ«¸{}8{%Iª¸¤˜?¢¸w»×µÐxé,~Y#0B.|W…P‰†pYk 0Q†Zˆ†ZH&Ê‘ƒpxàž_ú%(ý0¹¦û¹˜Êب• l"23õÂ*M9½TÄaËÂkÅ3ôB4¬D +Si¦®mÅèBF½ÿ9©²%9¬¨-ÅœÌ@ÍĽSª2¨e:¬ES´GDðü¸mÃÒ º9 bE}Z [ÜXŒ=KÓ§TÆ4Ë<´0üI©-ÃÄ£Ë8íÂŒ2§ÛH<ãiÅã‰L¶Ô[Wôº¼ÃÑüS4™ÔIÌ#'#íB8Mœ5Æ2²z=Ã*û‰LTD]§E  8‚yÊ)€#hƒ6à ¼è„L0€È-x5P¡“¨[…¶b<wl)º“«™OúÁZ“FiPv¼¾(€WhV¸²ÿÇh„ƒØÛ,‚vä ‰¢ð `o8NK±¾uÍ¢K¥ƒÌ7ì5Yì¥7‡3ÑvE˜áÏr[Jsáà‡¹AŒù׋տEÒ˜5Ú#‚DJq~·}7ŽQ£PzM—’ Ùu6Ø<šg|8wKÀJ‚¤DÑ·ƒˆ •`ƒ'¬ðŸå1Ü•Ó0Ñ1 @y1äè€B,¾[1;äbÊãMìÄÌ»»#â¸lÌ@Ôc:lœ°ASt;•Žã¿¬§L€,åâ¸,³OœÓHm»½+¼”âˆ2ŒqpMTŸKÅ»–6CNu(ÁML6 SÂ-Eº<ÅÜDæÍȼMÿÜë!’©¼50]V¨„W…9˜ƒb˜¢#À4y‚M¨c0‚6h‚(@å" ¬£,ÎàŒ6Pƒp¢ÂrŸ«Lf8 Þ µF6å>FcáŒòs^tôi°¶ò”θ•XË>ˆS«)(€òø`׌%™Ûª­“œ ñrÀý„O*уf…ó,€ý`ŽÉÀfД$qÎr@í•XÜ·B¢ÁˆqmýO‚=Pî­×¾P=î ¥ÁrAenoáI² ‹ò퉊4–Ba›xèeè‚AÆžÆ  Ý(*œa' øÕž] [b± ›ÉlSI¼»ÁÕÛ–¾ZÄADI•ÿÔY ®»+ÞCżc’5~i: Tæ³Ì, ,3ž=ÓtÌ.| —N½Á Õ+Û@¤<6Ô¤VZ—¼¸+³ P´FÓÀô3É=¨\M?2ùDp…aà úÉŽˆâ1ƒèÎ]á š€ïA‘Ùñp°6Nè`FmÜÈ„blìè‚p–WXÊbd…:”iø¡n@(<Ñ‹Ë ð â¼å0µlŒ€xÈ êuf€$Ћ鷈ɚdàó¢H–ÄÈóžô’l-ýýI¸®œ H‡fÿÝAŸÔI±¥¤°H‰IØ*/N×àü,J«èI0Âɇ„íQÏ_‡ÿJî¥ð £Iõ 4 P7`/â hÖ¿{îfuˈ¦<¹Ë]üøÙÈ…((‚xØуoÈVŒ¸á¼(Úα§§É‹i0R¦+SÓ€Ã%ܹuÓÃbÃÞp>ÅÃtp #ƒÅÀw8¤âC,bªCœÛ°'¸ D±Öð¼3êûd÷ãß»¿÷2\Ä9sÛ/äU<(²”wõ™€/‹ã°\Üœw4 !yÉ]ÍU`<Ú…X-¸ƒã b|ÌÙñ‹`ˆª¾¦µëHÍ YZC«-†¹Ê‹žuµ’Ú†id!ÊŠ•2·Çp‚H°+@‘Çœ¦«ši˜Ï,Ñ ¡:¬+È„[Vÿµ>x^æ<,n”®ƒàP&îu—4š@…¡ç7²™ D@ﮤ AêF@Ð☇ñ¸þ„PkŽÑ¤\gäQÜf£í8‰ãÀŽKPÝ6ÁãÁuƒ{¶on䤵Çç¤í†a‰ƒ'P,"SMˆ‡Ànx,=‚#ð€M¸Ù«zÁ ŒïÀáxp ˜† ‚õÙBº †®]17kLBm_wŸÓ“S>®iIœb S щbÓ0'å?b¿+ žîÃH S*?–¼Ä¹>äþÃó[óKªsÌEKÜ ÖqÑ,ž“÷Rýyi‡ˆpwN(6A`¸Uá2M¸3G᪆ÅÿîHHñÎÄb ÞgñÅxGéoN¸x~¢miƒ#Ø+ñеñv„'#8®¬r3óΙxÞü4s„ow‚M €ñ@§-9Žú©äg "8ˆVa,Þª°wâ‘7Á·lQŽTjÓ&Go¬ÚÀ‰PdÕ•ƒ0'Ì)âf[¶Ù*•)\­ P…Ëflø±aZÕ¨5(,¹ -Ë–Wvìxòaj‡.#šñèÆAC^}ºtiÏÕb¿®=ûµcܤqë6=ûóâÜ·KŸîû±hÕ¿/&mxwãä¨Ç~.8lÜÔ§3íÜógâ˵‡.¿øéâÕ3.^mÙaø˜ w®ÿÏ8ó|ÑÖÞ7³ìÊÊ”C4L@\¢,Åó`0Ê(#G†SÌ–Y”ã‹wRäæ@edQEGÑé‘El4Á–aÆóIÏ8™dr, ¢FÅÌ8Á6eÃBžN–2wqD|D`Ô9Üq&HT˜ ¹úá Þla“]<ÿ” €Á¬âÍ4«+Dy“Ô6­AÒD`Ó¢`3ã¬MÅ3M0,T0_aO(VMfèÒÙhìAÇÚdë¾·fœQCnºø5p¯d”1¶Ìºeì+0¿÷M–.ÀävÖïeû¢{XÃ÷i¦î¼ã×pÁ'ܯ}C,/À_–oÀúŠ6rÉÏ&ÙÃÔèû1Ák3ÃÿÊ«/}×ëòÇ"KŒïÊôÁOÑ Ô£Ÿ(Ôí*‘WCOÎ1APžn²ÊL¾_´Ê8ÅSã”aZ?ÐàÁ3Žðv^´|&­ãF7­²—A Qña´¾ƒÝð~°Çg€4Q<8Qcà ÇŠÀ\#\!`YEª>q†"4Ákp`7V[…%\ÞÀFÖ0ilÆK<ä0V ×Ú'Žp„lx〃säà‚¬x…7¤±ª° ÞØF®Ði<)&Nbš“ÿžœ¡K;ÇIŽsÔóšØ(‡jðjNp¤S÷¸&5Ï™¢ƒãöøæ‹Üc¿3ð¨±8÷êŽUcè^é1Ïq¬“G2Ö;Àc»¤Fµéð±]æñŽ{ÜÕ5¾Q`œ$  5ÛtqŠ´  -Âð+¤4¸Šð‰á@ÀA-⦠·1EEHI„`Œ]a¨Lfä„=Üá% é†Д̨:ô¼Ç¡å©sÁ†^(Õ‚9T@%Ø„Nw€#xo›˜@§ŠÐ©3ìMݨ€7Î Tm xS`Ò‰ ¬€PK)Æ>±it‚w¼+Ž ,°ÿ˜årYE76 !P5á Ç'ÀŒ&c3!K à`‚õñ®x F6>Ñ·bœaÃà©LˆÁ”¨@C‚ƒbT¢é3K0v‚‰|âm܈ !‡0ä| Æ*äp‡OÄã Ùh†7æÐ Œ Ï|F7"¢ŒNá BàW‹Ñ oÀ‚q¨7 à‰hä.h X! œ¤—ˆÀIÉA‰†h}­`FˆÒ?H㎠‚”A§ilC φ7¼á” Z€ÜPŒi¼S ?€ƒŽØ„+@áC(@ á€ÔoTÁÏZ^Á‰*TáEˆÀ+võŒ8xbÿ–S£5εšÛ4§g,#Y½êÅ4=>íŽ÷b³[êH‘‹dœÍÓà¸ÜF’¦‹Š¬®vû¨œB.<Õu$jž6µDÊ1<ÖM/µ›Ýî~推¹î/9ÇÔø÷ð•â"£Ö]H²Ë=¤1Ír&³÷¨L]Ը׾>ù\©Tðƒ 8ˆ @œ ¡T`(‚,‘‹an˜Æ4À`a8æ':Ѓpn—0€ºN åàBp€A1‚ ϶$Êhˆ.!…(.¢€Ån•8,øÀ<7„¥?`+Ââ"V"Bà ˜ŠAè_š€'Ñ c4¨‚0¡RÜ¡@ XÀ”€‡Xœ>ü  H•/ZÑ‹¤¤«àF/(A¦lBnÈ,0ñLl¢[•ð%4ЉÏÁáêø†1Ît;o<âQ SB>!J   Â;S0‘-dƒP€Ã#b@ƒCxã `‹,^à5` ~ø.!¾;@+ àÐ9tƒ+ðA¨Jc ‚+hE¶±Øx8 Ö4Èݱ¶ L̃qÁíÈaŒydÖ,Èÿ `Q K°` 4ŒÀ%º`«‘+€ÀÀFÝ8É]ÌÂV³˜? ˜êcìØs+Ì1*Ž f•ñW¬&Ÿ¨Ë¬ì ZÓNv2Ó`½0ò»Ú«õ¤…bqÿºÑ2ö±¬îUô™ÙCöËÈ']yçLÊÊž÷¾;ŒðZg{ßYöv•áKð3+<âÁžu¿Rî'£¼äã³²µ/2tì¤r>¹¯,C”2 7Z!†n#¢-Æ%¸!  "ÀÐ4zo˜ØÅNðCæ!†gTÀ Ûæ#á*àÀ'R}F`‘,°L  _X^7OÐ@xA1”³|A _hYÿ°‰#à_ˆS >Ñ3\"z^LAÈÂÄÒlƒÄ1ÅC=ÍÃ|Ã08Ó&lB<‚€Á'øÄAüU,@'ŒHä$ƒ¸Â/4Ä&C¬ 8‚2‘Å*8€1T&ÎlÂ#pƒ C1¼Ä',Á%€ò¹Áú}B+ÌÁ/Á؈C<À‚WxHÃÌC'l‰²ƒüÂód7¨ЀÀÒí°@ìƒ,H¡çäJôÌÉpÂ*86`CC1Ad1J-´A1PÂ#”@0ÁÀB6,ϬÁP8À T p‚4”€h@0¬AøÁÿ8Á—XÀS%dLìÁ6ì"D@ñ+"°À78€ÕO&X¤="Øñ#Dn×é}×v)X‚å×ñ#@ndkìÆe¸‘IÍwˆ5,CIRÃ̈€tŠåÐÏ ìïDˆ„üeÝA ÓP®ÐD.àRîëfìŠÍÍ~&ù—‹†™îKšD' ‚mì„2<ÕTnAÚ¼Íï]‡6Ÿï±8À<ˆ ˆT€@ÕŒ@,´CFåÈÐBŒEjz+ÿ`ÄRÍ„7€A† ŒCЀT£€É+̦Ƀ§F ¨˜ÂɱH&tÃ8‚4ÌŠ28ð9¡‹Dàä”1ä‚ÅG¨Áº2…‰œ1Ð'ô¦¡°@/°­Åd€4XÌÊ+Ô*ôÜÎtÂ6<+,HË+ôÂ¶Éæ¼¨ÁVÅÃ+x€EÄÌ'ØÂƒç ç @'$«J7,€TMUCt‚€AʦJ1ÌÁ'h€ ¬ß™ ÎÄZ€%à H›ÿ¬B²dTÁ¬€ðN&œA0À“ÐIA6è€ÂQjUíþF@6”''ÿdBМLX XT,A6T@4n‚RÄ*4°LÁ°À4dVX+L7ô*¤)³A"R ¤éÁ£‹ÎãÝÆ£“®W”>éx9³ÔØÑ”j’ 5d3Ëc ©pDMv43Þš–Öm5‡‘<æ#;“³@ƳqÑ2K@£e\Ø'ÑB(Òt&7@& U‚ÀX~BøžÚ|Å' %ƒà"þîÁ7ćä)9¹Þ}¬.éžÛièAÞßÓ á;îÖi “÷mÉxiã/yÝE—ßë-ßµ=ä¿~gT³jˆÑ:3Iªžë ÄúU‚€8ÈWBä鯉2TÀ7´Ã!䨪XX‚eeÈÝ4ÔHÌCÐÀÀ†Tè ,σ„ÃhAoæLÿC/Àê*M h#TጕTA.Éü„§bñ6Å›pÄQNg6Ä\.KwŠ…»³J΂oÍÄ\œÐ‰•,Y£Š oU4YUŠÜ‰G` G–8MX5n§Žy ¶*ØO°ªôŠGÑM1oUª §lÕN_ŠvƒoÚ§d+‹¸“ô˜*—º­2ø)ƒÈ+e‹à6O´=ÁlÛ稫NñøâÈá(ޱUQ‚±ÅgÕƒ{Uñ³§Ø„xÜÚ¢ñip1«4Äùb„S¼ÍêÚÍ;ãêœ"«¼é’%‡@¦iwº ñħŽ+G‚YAñ£Âœ«Víñv‰’šÿrÎÄ›óˆF›brp´‰ÐE +¯æ *ÌŠ ¯²ùñS„ ÒŽD–  W²½ªà-Û5®rH‹pdšn®X²;‚£ jÊXÐPʨfÁ¤eÂi© ©pA 9|PÂj”ÄG 1ÂILÑD C¨f™¨Y&Œ+îPfŽ ŠQ&2”îg•p6q)ž Ü žpä@$‡pN ç¥àpb‚= ÿ¦6&Ô¥p8Óp255‡†ãëŽ ‚Iõ¡ Â)¦ˆŠÀ¡Ñ˜`›àèPUÏ(T²é¶)&“Årr"‚q2iá SïØFPƒî˜#˜52õS™;6YCŽP òs+&PL² ˜¦Ï;Æù©cV+†"Š‚ñæŠU”9J´"Ö‡ÑA[­àÉÍô“ 䘀áL‹¹Â‰9,²É3*Ȥâ.ºãŒ%0þÓ¦‡©#‡b¼‹‡^†ïÀa/2ù¤Õs3 &c‡¯Í¤a”üü$žLøhFVX‰çŠWŒxá’ 2™Ã›ÔÌré?*¢€6r¨à“¥3½ÃÀ`Xñ#‡##€€¨1–ÿ#‡&VpŽ(hF³VÉ„<8à8‚oþËá•àÈ“Úp¥i¿Hõ Xøïˆ#ü íéU&x³Á,Õ̱ Ë 0ó 5¿0A'EÇ&›óô-µ }G ¿üpôÒiÔñMG_ýF-“Äòô6}E]óvÞ¡ä‘õ*$Ýõå‘^É&?L}÷.m§rÃ64Rx™l` íÌBÍÁ/ãüÏ\¦Œeªùà‰—ZÇ D §¾ž’ìþOé·6áП©&à¾ìË ’ÊÕü>Õ‚ ŠP†2EÁ£h…º dŽ™†M ÛúTÌ,"À£4LT!ôqó›äÌæ7©q¡z.è|âù¨QÎzbÈúœ'è.„M:µ ð g4ã™>sÞ}ÞthCúβ“žŧ…ð© ñ™ÏBúèF¡I>rz´£ä;èI#zPlÊ3¢'å§?A¦/éèIÙK56T§;} dX sh cX«Q\ã—E^Ò³x#Y&܀䞲§§Ìô àP»õÔFí«[ÉÄV h‘ü Š(Ì¢Àf¸Õsñ¥­Yœ" ˘ƤÆ/Ô¡!È0œy°[ã(Ô`•nA‘„9[«K>•,½Z1€:djÃÈ0@e,Š’lUÒª2ªqkžÿâ ÄØÂµzЇÌ 9" ¡ÙàÄÚø°z=µpXƒ²;ì& ¯ðSQÍRŒ&TÂ’9p‰äPòÔ#Ķ˜»­Yà5WH#|8 ŽPpñ… jäÚ8æpGfbˆ@ и ˆbq[0¯æ‰†g"/Aùlôh4ÍÜ!ÏtÖ<“óXç&.uhRÑ‹W#18Mæ‘ì ü&ãUs¢ÝðzT:çÁèL×Û^NÍÄ=ß1ï¿gJp‰QD»)%èÂ6õ’B»õŸa°-†<5ê‚  ƒ "»„QŒ*aq?¬-,ðÕ¦1Í1¾;q„ÚÍ•Š“M:­ô´à·ÎEijq¾ƒÔo{K¸šn:‘,àæÙLŸQ†qg`/ Ït^¿Sÿ´½Öy©u·±À§´¦#ür“”p„ÒI¤UP8+ÚîmÈý¤†5>`CZ±©ñXÔˆW%Pƒ'ÊP-+Á*_uÈ™š ‘¯VC—5TTL㬆JæSQÌe!“zW+ È3íÍ=hÅOI®^Q{wLæ’”16Ê…2¢d[XBf±"©HZ?eŒ-ö`¦ÒÃ(ýYÊΪÚ63óâ)²YáÌñÓXÉ82>táýÚ»! ¬ôá¾JÀ‡ ^>ì`VÀ‰#èZ»Zż68 [(²«¢â*”m±«©ÇX£Ææ£=G(Bÿ7Ù—ÝÒÔ°îPd¦}êws ÕÜ:iM|àÏoH Êý–?ûú?;Åß¹jì“ûÞÿüÇcŒÆiŸö¤?;Ý?ÒˆÚÿÚí¥Xǰ ë/ÿD*¤ØO¿P.¦8GýÒG|$Êsć¡Fêý¤ºÏýPÊ'|^ L¨gFbçChQNNô$²Ú Š^âT⑤%†>èS¤HŠ$èʘ,€æ‡ Œ¬QPHe° ‰:Ëðº,®%ÌË9L±dè„$‹ìîS¨]ö.XÈOpp„ð쳈He…XÔÎîXhï¶Ê³&Û`‰–ª"4ÏîJíÏdvÒ†8¨Èÿ‡2¶… 푵†kø ˆ*ÜÎ&P‚.Ž  `!¦Ü äÆ;ø€Ì fL&*jáŽ` Å@ep ºà* S:´«ÚC:¥ö3ºe·‚â(袇f6e[²è" "` ÀH¤AVç=jäîI¼§vΚ0NÁðëK~ã–D,Á ®â¶÷ë.Þ:MZÌäFìņäÅHÄFu2lá,ÎáÒDÎäöëyLdÞ¢ÇK¬ßêMÄê‰Çæä ôäÊ&`Je€l ûgÈB¥U¸pÊžÈ"ơʸŠ׌/6 Œ(ÐÒ¨ÿ hïäêT>ˆ""+ébf%gÅì" ­dÒ†È*ÊdÒƒV‹Š…Ì eiâ΃Èl¯ô0‰2å®$ëÌÚê‚nË]*rÓHkè´ììÞHðÓ…k$FM¥OÑfÎÎ!O³MŒ*€ ŽÚ$ˆ°©P@¼¾¨"•Á4@ÖàÑœ²* | )¯%º»ŠÖ6H#U†Î$ˆ4kO.B+&€à?X ¾žI{*ŒCÖ û j(ŒÂd¬ÀîÑD4‰‡n47.ã:,à\ó5 L§JLݬÃT§41luš'ã„IF³o zÞqë1ºQ,yllÌÿå¢9êþü‘§z,!%*@ :À ’j6a%û©ŠÒ ²éŒnÈÈ`"÷ç"-k–,tHíþL%ÅŽ†¦ŠL’̰^ôN&©ª"IJç‚ñSR¦­ˆe°FKø€¨¼ÊÎÉî'ïÖðë’PÓÞ,"ëP?ÆÅ*ñ4M퀈Íkb (׬^HT‚ŠŽP’‚t`FŠŠ¡üDÚ3†-)Ì"Š  †enk·¼¸ak¢bR¼hqÈÜÀèFk[´®apQŠ´U¤ˆ>ï`OÓ £& áqãÒ¤ÄéMJÚ©¢>JšJ]ŠsÖ¦àMYJŸšñÿ;ª¤ìIÿ6ÊÐ3WŽOª¥ÜÇA*¦ÒOåZÊ|UŸÀéL7Púî›ÞMþ¨3OYŠNót¦ ¥5›ÊïR’Àœs€§h¡Nh! ²3²"6f¼ÅÐDkk¢… ߬èŒNršŽ$‡LÈ žl‚âaËP(B+ôæph Û“ ÿ ²®îÓ*Ê&`¬ôl…ÖŒê€Ò&úd‹†Oñ¶FK-'ouP´)§.ˆ²„¬.ðÄÈ'=´,×Hˆ††´2î¾[ƒq@ë1o³hA×hïàâ@¯‘k2¾ kÔh6ãà*aej5‹®à .¡ ¢¢^„"öhÿ¼ÁaÈÍJK›RŠ¢ÌéÄ‹k>!”a úH‡GдJzÇŤ7¯çw–'À†Æ\§{|Ó8ûqÆBŒä˜gï-xfÇ ÅÈ”7Ó1‡ÖLHLMÖvp*ßœÇC6xºçÅF“‰VÝÖÖ7äNÞçôäS„pˆ ¨ Ë\faï®Es1’ÉèØS€Z`Ëz®P7‡î.ZùöîäΪì“Ï\ˆÌš2î®ÕïfÈ(Ílê4?[²%G«"‡o#)׈T—@kÒ%™0†ì. ÷.Œ ˆ®”P Â‹j±K°°gVt0ÏÒ°5ÊÔN³öçW¦ â ÿºa­®Ô@0Á¸¡2æe¡¢´À–˃2aÚˆá,ejº¼ :@”)©òç!D¥çèʈJw7kMAïîTd+ŽãØÄOjÝ´h“I¤Dy¨Ä5ùí6YLã.nßžçgíѦöMx"NÂÆ‘u6Ï‘Íä1ÄâØdÄ®v@NkÓ‘M>ŽH’Æf3FüÏNß:]®¦Ügºï·\T:A€@]À3&ç † fbt𮀵é†ÌšîÊLe‚ðÕîæ“~LRÏîGÈLë]ew²`rŠ$†[×,ï"v»2ïÂg¨Ø³zo‹úŽèR+ëêì3ŒÂpÿao_m¨Ë%ÍÎ`os×jxÃÓÌ6'µð"™*(Òå'gEO*` 8Í&ÐŽVä Oè¥÷Æ¡Ž@–©÷¾è¨°ucHbÆ•“ŽYKh¬‚×êL+Kñ÷ù4ÿRØë-KöQ5ÛG›*°)õÐs40PÏ´˜?Uü°=3¤ìïO)ª90}² “™šÄü†Y}›+äý€ùO§Õýp— ùÏ¡–yÿòOû8J:Á¹šûtü¶öw ÌÄX§§Pn¨á ¾3¨¥¡K½C\î ®è"²‚•É:q£†ž8¢8…Ö'‡Š²ÊýÈè€ ÿ¯\²ŽzQrŠ`h¬Â³ÏòŽ#M&8ÒTHRÒªlðl¨è‡l\)s³(¦a(ˆÊ˜`nP°Š¬æ!nzÂAb˜p@Q„²ØVÂP6AtÕJðšZ‡Nˆ²åPæl†Æe~M¥©¿ó Ÿ²EÃW"§+<¥° ‚ˆ¬(>AOˆ.xf à †$Z††Ò%£fÎàÈÀ``FTâ:û¿Ð”¤´‘Á5ý1ƒ«Öw‡LhŒxlÆ¢qi£±…˜¿¿bó‚YØ{1«o´½ÑãT[ý­zFû»¤Þl;Hx„µñÜNø´c›Æà¶NðÄX°“£ ÿ ³f hQæL"Ž/‚a~®Û‰«Œ$‡UX]r_¸&¬b·=7:]{˦Ìîp¨OÚ¼‰0‰ÞW µN&O9ÐÜ Å'T–“Ù?]£9R½óPes¨Ð–hÈdšè"CbùTèTvТopëX²çƒVS¼hµPƲy›´â¡´.eFôƒzñì”NbùÛé1,¿S¨ Æ¡É^66ဂðÌ’ajÖd¢†ˆš L jM òj_äO]Š}^ ÞáÙTN…™—ÛôüVÊA•Ÿj™ÿ SQ5Êœû4ÿå>õø¯›;õNyËY}õœþéšA~Q'õPOþ›c>æâÊû¶‰äe~åÊ ô1äŒÓßt¶–Á}`µUÅL%¬¦. ù–/ÜÀºˆQ«…ºóg~ö uZ²²f᮫ö,K]ìÁNƒÑŠòçq‹pß¹p®bÚ]†ËÙ©hÁcÈY¼U’Å©.¦·¦£ 8Ò…ê†ô%‡ ·…|‹Œ½Ì‡æ†ƒ¶Y/âe ”®£:<‰…apE2ð=î 4Ó¥ñÚXZj2ÄÁ*!m -0]d³è‘pWrXÍ Å`¼Ãå³¶lWb&*ôŠaÜ‹u%§ÿË g#xåMS¸U¤Ë}³…é³×œÌ× À.{<¸É§7»œ5øå€gwªçrzViÇUÓÿg]¸iöÁnóËW¤·q™úk,ijü¢L5jÕÊhàA„ 2tXF¡B‡ R£EZƒea>\ ·jS„/ó¶8èv'Þª w&„‹îÎK0ÃÙlAÀM¼x2ã¹9ÀÓf¸Áv*³Y4&N˜9YÆìI …K˜5ƒMU&3«Ð—á2…›S,hÏ N»ÓÒeV—s&³I6ÜÛbN鎛0.¯Ð;ã¹%»Rî¸9|ÉNØ4![¹wÞfšéÎ*´ ç¼´\ŒïÊLñZÿžœÙ&e¼–ïúmìFò„É«@†û¤ºSK,ÉfÝoÜÛ˜Å6+öi.än8º+¶²u§O8к̈́cU§Õ’WÅó©“b§™pw:þôw·È­W)ë¶Š›d´Èãu*lüÄÝ•P½Êü„nÌÇ«ßÉ&êáÎqEŒsÀKGµ€Òohá€|ܧØdñìA]1•a ( $54PA´tb´TSÍ25ð!BŽ£Œ ݸE å("ˆ î"CAþÈ¢ˆmXP’õè£#&)’7BéãDL:ic‰Oîèd“CZÉ¥‘U™df¹e”5."”5òH‘”É8ÿQ“ZîØA'¶(Ð2&´¢F–#¡/†¸â2Ô,óÄ­}bBpxÊU)£Œm,ùäÄNÁD°ŠáLÏ-D0¤^áäPN/ÅSD>Åä×pÐR~Q€bT±TD4eÕ4|LƒV0~DsÀ4Ú~¼Å“KÁDá‡LšFPmEw¤†Y<|œõd@8°µÓ:pÀoumC‰b™%VÌ•œÑ{s8b 5–ƒÍáš™7¿+•bQYb(ã‡4)£˜¬0z,å÷É#ˆà°_hPp¯wtã€ÔBvG&?°²š2NCÃqǵTÿŒðá8èQDd)Vɼ2¶Ê'É`Ò`¦wp#hñ”I1œÌó[¦Èí‚'wdªLkÆ2LXYs 9–…–G„ÖRJ­D]ñÔ’Ã7ÞŒÜØóD1mc;vˆP¡0ºYQäB²˜Œèã+V“b¡~ªç@þùŠe^ㇶ8¨ê*²hºê—_:ç˜jèë*¢ˆ{¡÷Žûž®›þûë´›þ¹åªÛn¨í—s^ŸÐÓ®|Dš£HëÃcϼï«ï™"굃¯ç‹åÛÎùù)nþûìc6åDoV”ÐaÔ-a4ï'ÁxÓpÌ:‰É î •`(pÿTð@¼¦qcT`—ØD€â—Ä¡ ™éL&öð…/ ,ñ¹ƒ´Üì¤1_ˆCÜoéá(ÉÖ*ˆqˆÁ­g'P7x²´UÄ@ “YM<Š1Œ*9—*Æx ȱÎ:ဴ!5[‹G+tÀ‚û$æWøÂ3*dÏNB ~øDdâá¿ÄA'™°ÊAƒVtB>èÆqŠ5wÁ@Ä`!†#Þ,=0…Ór‡Oc|ØÃ8TŒOLÁ@PI~®ÀŠd¶:ÅÀôàŠÄÐ €BRSŒ"ìóxÆ8c=´ÂjèZfVñŠy€a›g‰Ú *Qº8è ²xD&ZYŒ9TÀŽ(Oä³LãQI<¸ÿá x#8¸B\±áIf® Á"+=ƒðQ °±(œøX/›G(¡´þ 4ð†ÿRr†5¨áÆ@Î2±ŠoDL¼æ ¸%Q‰¤·c¡Üg#”ÂO"nÊ’NMÊSÉÑÔJ‘+´bš›Zr|Ö³ŽbÚgŒ2Zr‘_¥1Ú‰:Z¢>RGõlé6‰¦>¥JJi.éЪ¦\¢×D¢öiPÒ+žn] ïånEÑ0Â98‹¬ðÃ*¼Ñ*ÉÈ!A¢"³HTB ©‰‡°‹!.t>ž‚Ã%ô*hÏ_ .±bÖP!Å Éqˆ…ÿsh—ÈjQe¡½€ÃjÎR24òlͪ¾e`EÀDI~o`ÉÏ® N 9µá„LP„ÄÔl`p@ æPÄLÀ&¸[Í\é€X¢hË’Q*pCñ˜Æ7(Á´ å —XöÐÜMæÂޏÂ0S"AÝ "tš0GãÈhá ®YñÆC¹àC3`3+œ(è·Ò&P„8Pl«ˆL1^Á!¼à Ëìæ%¼A1pæPÈ2A“ü _¯;Ј\¶D:`èö@Eɬ Cðhâq†/\—Œæ1Æ3X¡…äÿ's0  Á‡x Y>—(€€Õ#VàVÀ2q€‰#Á¡%Ù²‡5°¦Ù˜Àp”¯bCŒÝ®e¤%,åˆxo_ïL¼îwNDy2^õ'>E.‚^÷úTç=%/ü„ýҥŽw»cøz~Ô3kºã8¡ó<úÇ'ÐC€èw<³Æ:è(È~(":½C~·sÅS€»–:ä'"™»Ó<ÄSë'(AUTž¦&¥Qq‚OE&0 0_pÁ  Û@ð¢*¶â`Ð߀Pñµ2|ð80 EÑ ’¢ ™àŽàBP¼ÿ2ðð@ð^็ †grðÅ`nðUbÆðæB48@ÜY DA£• ¢ g ˆmcG90VE;± Óµ{@ñ W@ewPŽ Ž0 ò‘)&m ŸÀ5£ ñ É”^°{ÝÀ b°«°v¿ÀV@B,!5Ü` Ó…-¯ K ‚ÄÞ@ 3]3{@W` g` ùÑn40`€ùqjð C g`*á= mpQÃÄ ä0OÀgÞP ÀJ²— Ï G·)8À(ð tä { aÿÀwŸ° @ X…9X Fð Ÿ ÓÅ*b Ý Þ€2ÅZ°|€ÈU ¬À Ù@Ü€n« [F {°pT¤ |ǰ`9@ Á…G÷Làhm{ °så f ®€yGd:‘P:U>ºkMuj†h™&hÖir¢‚\ùTQ²•••X)k…h„V•©V–51…h’†jõÓQi€vSŸ•Hr•òó–¬vj¢FRWI–Nµj…i&5i(ÕkËÐÐ( Ô [ •0 54 ÆppPE @qÁ°zÀ1ð„ÊPéøBÁ@— ÿP ÇBB$ž@GQy°à ¬òGàà90oÅ€:` “W 4‡P %`_GÒCáˆB°rÐ,N +` &ÃÄà?° FD?'B0bñÐ é™Ñ½ÀàoÔ Y@P«@m ÒÐÒÀJ¿á ­Ð1ûò 4@ 4€ïÑG@àÙœ1LP¾p 4Z`\äÃ4Ló U›Wð`(ð”ðÙ  Èõ & ?4Ž‚G®pÀ7F? ÀV*U``ðrHs0 –à¹ð  ™ð¦ÿà ßP|Ñ5¹P 4 ÿ“M`Uð²@ kgPä`½°W0-З m(™Éä` ¹°hÆ|€B œ€PhJä° W` ñß@0§—â`0\G ¶p ?@Ò t?`² ©(Ÿõ‡à¸7g™f˜8‚Eâj”“‚_r$A…}°VRÚ'jeb¬£6gÅj«C#,õ>DÒ%’V¬b‚–¾:&wISJ²‚v©Q<¢Ty&gÈ*&Ί•RBSÍ*Sv™}-ű 8~ÖW~ÿwgE’'Ô`;_à —`ÓVqEÿP ‘ª@–Pð @8@ª0°Ð1ЊêpU ²phq+Pq pHnñ ßPUãp-ààUд!¯ªUÝŠÅ@ó q « Ý0 í0_ó E‰q 4 ²ÁP ñp`2 8ð Q½ ó4P* PœQ +†!kEÁ& ¶UŸwðÄ ‡À± à«V±9¶Up ÿqD] Z °áJÛ`&®)ñp|@ U@ Uׇ„ê àœù ”€²à ‘‘ ãpQ@ŽÐ¥JÜÿàqÀœzE@ •ð İŒÅÐ @Ð@± p0 ðÀrPÆ`ÝÐ =À«ñ™r0L¹‘ D×Gð Ò  U«À “à ?°Å@“«°”€ Æ`b€tÝàÝ@ ~ C› +ÀZ$Ô *?ÀjɯÀ ™°Eк0à¿à,ð®ÀG°7`  ܰ °ì êð b0öÀ1— 6R}¹S(%²S:º³>ü—'¹ÖPÜçÑ“~âƒ<8=²ã9°Ã=ÂÓ®ûç<¾sî£×ÇÃý÷ (=îÿJ;ó·kQ9¯%‚§c"¨kòÇ~°cƳS=ºsÅ¡ó~2|Ãdü:é“ko|( Æ8,Æb¹ju29/5'˜¦(‰ÒÖà0Q HÒ+a8r[PSä ‡0 ¦ J ÏTB©q:@1OOP—¨.ñ ¦°˘V¯@I*qwB^%0@«àÒСÒM ²AIÁ Ä"^º[®PCÑ E0—òµ`p¹ó&b W€g-s` Ž`æAŸ`8òñް,AŸP?Ð Fã%0fp G€|Ñ_ð %02àrÿ N¿ñ %ÐB}‘1LŠ£LEp,pà¸OlÀ C@ gPº¬¤4-ñ1© 00^/v10²÷]£vPËHEùqíÔ×»à Gpk°«k°«°¬M€¼FFºZT¦à,ÐTtà¼WÀDý “¶ Ñ§µ àV€M€G@VyŽÂØŒ| ´à ¾¯ÀjÀp5C™ð Uà hQG€ ÐÀ9À»ø”@µ±c€á 9?å«e ¬ÇŠTk"UXBØ“ãStB–'uhÚºQ¼êQ¯æ¬DE#”-k¼JTÝ—õ–$ÒØ›ÿÝRæ—k©hF…iZiò£#ºÚMy—ÞŠ—‹½;¨(²5‰¡N ÜàXÀ TŠñ°gÌmPn` á  ‡¨K#ñðVÐdŸ0-PÊý™’× ]°}¡›ð @œðt4Pu`Á¬D˜  $¹^yƒ ¾‘ƒ0°€~ÑUVqŽEwPn€H€ˆtDÚ™ÜÀµÆ"Þó€Zü8}r.ø…lÇÙ ¹qñ@u@ªKGÿäïEæÊðU~®ƒgãÓÀæ=auEÐh³[:‘©þ¦­Ü,Ei³‹A‘-›,QŸ¢aÝÖ1|4+yâ®äÑA@(÷ò9èM“g_¬´£FNEŠ¡3Ãõ”bû„ÁÁqëaa‘6Ôþœ38.taqáàM+1^­ñµƒ!Ë:ÓóÀ!_áÏ8¾,Ñ ›@Bçn@™×(³äcosyE + ÓÝ”ƒsð Ó’Þ°éyb 1 mÐÛË^œ~ ¬p[`‘éwGÀ M œ°/F@ý!õ*1@ÐplŽNÐ^ÿÑ5#tÝ Pù¯¿!Oà!þG“ó•øàׯh}àƒÄ8|ûå·Ãè¾>^\ Ø~.òû%x~"€¾Ã€›ÃüÅŸ:ö7¯íZgËÿ'‚Ä¿ÄÑÃ×O€ãß˯à ÈîxXí¯:¬Ãy¬~ÀÏ'øÅšíË íQZ™jeDHpBjÕ–5 ¶ìÉ•xÁâ­ê6AÌ–mw>Ázvˆ†¦`rÂU¸sñ@¸ŠÊ‚8`ñ€oNXsoB°M«Âk¯b¼bñ”Å wàN7‹Á&ìd 5X¸ ,WÝYµÉM­‹ÅšîÊG 7O©:P6ž›Ow¢†»Ó¢ÿÜb”á¶*˜WeŸ&t‡CïîÜù‹#ÞbÊŠ­*\ìðÝ «žÞ­»ª¬Ç½j…³<¡®á«Švzê2ÑUÊPתëUô„OÅlžÐMçRÂH7}RV ñNÑáPKƸ×¢s2å6Îo¸b›&lŠ·©z`ÆŸ^}:ÇôpŽ4™ªóŒ›¹\;Mû&ç}å’:šc5¬‚dËÊD[T#L¼©ÀÉ& @5ÆÌkÆ›üÖ¸ê1ÝJPæ7Ä; ‡-‚ãcøæ“Âi¡ª½Ü²,0oLx%‡#*(£ƒÐ! *£!ZtÄ1¡†rì± "h "«éñ $4HÿÈ›´ñI&{”H!q ’H mLÈ '‘ÔL(»ÌË#‡³ )º2!¼ñM/›\SÎR3K‚Ì3O"Å\’Ï0¡4òË-­dRÊ!û¼óÐ<…l’ÏÙìNJo´Æ¡˜±prˆbD¢ †¡ì*ª¥£RJ)(‚r˜`€8`š”!W¤pu+Š‚ 'X\q-±ªªÂqƒ¥”áU™R Ç?ÿz )G)£ü‹©cƒeÉ-¸{ÊØa£óÔ'ªžrK\×å¶2»Ê½Œ^ª<5Ö,z÷åwÝuûåwßÐŒý7`ƒ¿;x2Š!£*í¶·\ª¨R¦5ÃŽ8¢ÿ&)BÜcÛ…‹:AÌ29²9i*IΧþ$Ã*e? ð-Äã°‰”áàd 'ƒ«²U†ÆJ8¼ÉAšø ܪÜòÏ;iÎC9‡.­©Ë6÷È!…¤åO#•T´k.‹<Ól'Åîsѵ¯T›L&ÑfÛm®“„4J´¢M³•”p7µä:Ì+ù~RÅÿ´›Î¾mDÜH'óœì) ‡’ò?çÓÌÅË ¥ °A7¢’1FƒB§&õ }u/«hÇH ‡ XiãÅqsë5f…ÚÀ H4µ…`”9 §`^Ò‰¥£‘¥›„6{¨³÷¯*\Ãyê]£µ‹ÿbîá7X§·¶{q'v^³¦õþã‰+»ß§v K8ây &_¾ü§¯„Qe4›ØÍ ¦ƒŒ^ì½|Ò½rÕ¢á†:Q‰©9e8ór a `1L`¶Ù¼Áá 'ùj :¡7¡Û8Â\˜Åª"lÁh‚7S>qI‹bˆ Vpiø0›˜ŠúBš£pÃ8-Á%¬!DF­;›Ö¶jÄÎtfäQK§£ÒÄu«ãéÊXeäªèV§GÕŒeLãèÈ8H6æ± utíØÑ®xŒ"i:žnޤëã5);5ZR`Û£ÿÁHºQ¦.’Š4dèyHѵr•§ô¤@6yIS¶±“£Ûd& BH@ÞRv›[Ôæ7»1)i!hÝ2¨ñ„‹P%sINQ21 èà|HŽ2P¡”ă,B 8ãѼ£8Ë›vù^86€”©eDN©Ö²°Ooæ 4ÑÚ^¯ž¥¾pd|ØÛ\t5"^Á¥>™Ÿ÷ø¿ÚdÁògüˆ«|ÁO_þŠËEÁpXG¢÷#`¿Ô,ÎÆ¤4ËpbSQ>ðXãxV¹S1ô®[`E0 fý‰&%Ó² ÚP€&T@…W¸·ãéô9(ÀJ.ÆD  Ik"¦ÿ1¯î­+4Œ)ÂS9aÃ&4 4Ñù˜krÐ8á|ÀchD¸;™îŽn²Tåºt¶¹íUIž˜Û5K)nR‚Š^;7¹Ä2nl~Å_§Ä7±ù‰®ˆ+f_5ë§µ9ÊsÅü,0¿DÙÆùÕm„}CÈ$¹=Ñ Ipª$â‚™9Ô Î‹F [C‘0\a.ÀÄ':QBÝà›À€—åF\-€nP6 ¼oº»ª¸Äi=gºÌ V ` ]õí³ TYL¯˜Öó'ÑÊî{±eÝø‘*êº(úúЧAT¿] BJ@§í £~Ja$ö”Ø@“:Ô9Ö·øgÿ Æ2£qàýêk,ëÈ´*s1ð“ÝÅ · m`†4š^ðøg<ì©L_&#  ÜÀXæRßU|‚(ˆ€®à äÀ^«¨Ä[·á5xƒ1DßUÆ" Ó8C<Æá2u9Ð@0:Q€nÜ© ]ä’˜æ$Ö¥îQsóÛkñ¶¥ÂÒùÍeÚ«á¤9FÙÙOŠ:ˆ¡€IÌÂZ–±x†Sf÷ç¼ÝùÍd£ 8[¥7Y¶ÏŸ‹c —¦-yîТT Á$É6þ±’±ƒå ?KÖQcG¡ˆt.‘ƒ-T¢ GÓ+;Á«MD©lʩ̳¸ÙØŒ-K½3ÄŠDN«Ù¼ü›Ï’³Í´¥Ó—UŒ5Zª\’¿ <´i€eÅÞJ‰Np€oÐóð 9€Œ; Øì›Dµ  ¨ˆ‚*Ñ£XžÍd?oR†dÁ¿Ð !aŒ‡ ؉O­Ø(ëY—t9‹÷ñ[‰9 œ“Æžô§ˆRÀ ›Îø™wFÿ™ìFŠ“I€Ñ—z!žB:y)Œ{b°êp1uüŽË-8~È}Á—ÏòÐ]/|d˜3·Z(‹µòO¨¢(¼M)'? c؉;¨„ ð?n0 Æh—ÀbøoðW@ÞÆeèɆ8ƒ’!ÇÜ‚¥ 8€ƒ`ðƒ ‚ÆP y± Ý«ˆbè82>È8PÑ2œÄKü%A´4£=48«Ä8;”BkQb:“¶aD»yÊ9<Ú¸ »D6a4"yÊHS,*‘`AË_.Ä´Ô,@4ÐC µ–Ä …œI”RJ"Ò6FJÓ?aW£†¨k(Å¡àŠÿ @bhÉ`(€mƒ/¨7¶okÛÊÛ X—h7—ø nFìø ðáŒó£P `„hÕô€‹Ãø‹( (æ¨xÑ óTÕ‰Å` Ô– ãljÁɈ2sÎÊè·^–Â螢p t¼§´Üซ^u È— BÞ\©ÆÀ d°Š(fµ u á"ðÄÆò™¶þò piÐµå© i‘ ÀÏ#`L@^  1o¸¢U —ÇàO8`…€-Už XæBihƒ#å’ùÕU‚á›ÐxHÁ¡‹¸ Çpƒ`X.¨\Ááß5H’'È\:<§„¤0];Ã3<ÿ¼£Ø¢m»º‹QÌSÓ™X¼ =»û;=z»=25ÊS5qþËwFç‰;¾;T3=*R%%̓çt~g9¢ÑÆkRÔa;¶Û;·“¤q.¼ÅÃ%6j$MRÓó¼²{R¿Lʾ ÎÁ6g†P¥:EаTãín(7Ð11è„n¡0ŠlÙ‰çiâöq‰ffžZ˜†iÈžœ65~éM˜†xø„ç ‹¸—Z¨ÈÌŽ°Õ eØ„¤ºƒãy ›¹ƒÏ¨Ÿºep¡¹PŸ4Œã¹‚ÌŽº ÏMxÁ½Mk¯ í脞X˜Ö`ß‌à0dXŽæ 脪ö‰Q–Ï*>ŒÅXÞ¿ ŠÿŽ$lËÈâå@§›bè–0ŠÇ ŠÂËpå(§åµŠ j9þTÔ¬O¤( x Œ#oX. XŠOè¶ÀDø„.è8Óˆ‡"Ø+ƒmP ÓÈ>>^,rfDèÂ%´¢ð†ƒUƒb@ᾃ*Õ(†.è ,‚¨ª€µªLiÀˆçþ ½ð†x؆xh>ø£ˆÊIèúÍà67 éÖ‘4 >Ä@ì+\4¾â451CCœ­¼à9U”£mOÌË‹5-?ÄXº\7 &a ¦ú&a”pÍy½?¤d"ÅïSv=‚.¸„"X ¢‚/xÿ檈`X§–§£¨B7¨€ ÑÖÔÔìQ∇oµê·ø Sa'Åæyê&ëIo™ ¤è•/î*·( ¼EŒD-—"¨ +GŠæXB5n©®büyÁñè7(>˰d¼Ö‰º¸ìŠ1 :VeDÆjn‰áT)Æ @Ž¡) #ÿ 0bH“ÞþH8ŠñÔ–‹t-ÈB®ŒÄ]ö˜ƒ¤ú Ù(oh‚¨„`è@_^¡`ÉwŒËWhƒWPô@ïÞ>9D` ®œî[…3_uß½èÍö óð†L€™;ð†£ ²W(fÿ(xð†”©ðƒ`x…énƒÿ¢ÌšKÛ›ÁŒ½¸5 …JšýœŸÍoPÛÃÅêÙA™¬/QÊ8Z²dÚ²ÅA ¾4‹K–…³>”JI›YÉ Ë:l´}ÿʺ”¬…O“®™œŠLr¼ÓÃ#¯Ë­ÑÓÞjò»8„`ŒnàƒNÐ1øŠÐ % 湋qJê¢ê¨Âë脨p‰ãîت£8öUà†N0°`ßâcA膌HŒq ‡ ¿êDÞż ä토ïÈÄhinø„0¢PÌÞë„ì„3è[ºªß¡¸ íà†M(˦lnà§hÁêà†åÍe¶oéàô6—éSŸ™–{—UÚFÿ–+­wé.¦ nÀŠáú=0ƒáš€+˜®`8ƒ¢è11;übÈ27ú»wŠæÆãM‘xƒãνâs1Š5ª¸ "(‚!€1ÐÉn˜†L`v敆l@9¸‚h U‡LÚ$fýH™Þ;‚5ˆ‚U˜Â-˜€¨‹9 ±"@5(?È9¨€&X"Ð V@„+€Âņ=˜‡¨„(Ðþæ†/¸ši€p3ሧà8€#¦ Ãje¬bX¦CZe^ÌHÍ¡ÅjËÐrø‘ÖÆÔ>¢¼¸L$CŠ'[V,Yò¢Å‰%«½´Y­¦KŠ;qŽäXm'M˜9Cÿ‚„™”¨G™?_>íÙræD†+—ò,šsdQNIþĪ4(ÔŽ`‘®Üy3j™—[UÍZæjФU—¦¼ÛàfU¢:-ºåê)NŒ†%"Ƙ±¡ÄmõJrÙÞWâ)Ã1m…š&VÅsséʼ"BŠKï@…/ˆUHmì€7 _Ú8P$^¸J¾Tš@`U¸"T48˜oÕ„ +¶|A¤<Ü„b¨Hð6!\¼ W¨\/Ñ"X‹b•ô(Œw¼b_ºt¡^ìŽ2Dó¾è6?Üæ­PLw«ÀA…¬'à*+h@E%swÇ'Tè!DgÄsÇ&Û"Ä<(·Ê&(èAÿ1ÊsGäЋ7™„³ŠŠ4è†2ÅÈQŒ2ÄàIñÀxACŒóMà‡'ÄèPÁ'w4—Ãu|&à'—ü`@rd¦L1èq‰1Åȸ`— Ìw€Æ3ÊÚ•ÄÞnÅd‚ƒ4á™wäIŽ)¦´qG1á܇-„˜D8Üu£Á#vTLÙ±Í1\âJ6TG6ÑøöI&åã@2j´ÄÒŒˆPQAÛÀ14ßtB<¿f2'BA‰7p¼bE&’Ò4mÀá ½P¢F6KÀ!7˜xòÅ%~ÑD0tà@mTà‡Œ\R‰@ä‡ÿ:9•FD9VÍ2*U4”c‰QÃP¾8-†˜DŠLðÁ‡AöïEÿÜ0c ü°ÅŠE\±C;¼Æ –ðÄ ‡Ü–Ç#\0À(g™ÇfòÈ/L3ÈÇ|pÅ+\0ÇøZl°È$à ó̉\qH$SÌrÉ(ñW »Oï$ŽnÀAR¬ˆÇFé³ X¡„ËÐ'L!S`‡¦ ƒ&p£nÅ(¶ÖÙ­l€BÀ‡Z84êøÆ%'‡¿•àíX€\A 1x ‡Ü>'‡*€ÁÆØÀr:A(€¡¨yh<†^° UêD/4à‰NàÔ¢Í"P¦Žɨ€pÂQ‹lhb4(@s 8â•È s?¡ƒ8ÃéÅPYè Bü„da 5”ÿ G‰-lán¬®ˆÅ<ÀEC ~i@Ê,–—döë(81fW\–ŠŒ%`ÆÊ€g¢¯©°E, ‰ ¿–²/¦ eiÊ|ŠIär`ªð„#ü ƒõ¢”ÃåÂ2® Rl3˜)ÞñŠ÷µa¨¤ÅǾð†Ü‹¸_6™È‚…bäÌ'taÉ]L°Q2íd ¤À€B’2<á   fºà nˆG ° 9LãŽøà›¡‡èB2êV_ !_ ÂrØYXüç‰û,F2`ñˆy°spƒ¶@ƒ-puwh‡ñµ­hÇ#ªû«Ð  ÿk~Xq|ã²}\Å3  ƒ.‰ÈX@ê<=åð™–èÛï:!„ÂÀ j2F;01…a g8A4.±€ ýz ˆ€…ª[Ý5Ð@ äÆ\ïà¼à O'ô€0!ˆÊ©€†ÐJ®:Þ¸„7Úñ‰qh¯|PÃð»öC k  >¡ºxx#Ò€4qÄÜ L¨ ØcÓ’Á YÀa9lZ'Šð­ò¸D.ê !PhÖä+8ÀÅšLQ\BF–Û.9Š0;´aÛ¸ hVщ.È¡ÒO<Ö`‚x|ƒ2ú\%´úƒnhºM¸ÿC2V@ÁUヘÙTŒ#D€¶0ºé2 DÃrw¨€4>a‹È(}©WDšöãfJ²1\L'ƒ)4A22g’×!9‰¯^F>‘‘Lü0mÉe…í¬ËNûåÄZyyÄtÞc•O%%¡Æ˜ÏF“§¯üΙKRÌ–>“=é[/´P²—Fýê ùfîËÕ ÞšX5' “¾këVíÄ! «Ñ͸VAƒ#t³W(Â6¾!» A<žÈ« Ta=ÀCã*Ú€‚5a 4b &žTÅ+tƒЀÃý îpÃl,Çt€hèȉ–ê¨É*X‚Ÿ´ÿ€^A7ÄÀùI{(ƒ487¸™àH ˜dh‡ØÂçG1à<ÂÆu4ÄÛ'À|Â'! 7pðA-ŒƒÛÌA'pƒ 8@'¸Aþt”ÀÂV)G1ˆP3tÁíT@-¼M' @6Éêà€—h‚1dà@'°1ôBìLQ{tBŒBÓ…ÃpÈJVÇÌ'Ãr¸7¤Æü€\ ­ÈB&t‚à@0@ÂA&]Ï%°À°I. ¨Ž¡DO&`‚ ”À±Áœ°‚9™΃ÕTUà¬ÚhÜÎA¬,”Îe9ÿÜt4õƒ%¬A/žA€ÝËëíµ Ì€’.ÝÒ͸^*eLÐØ^ìI£¿ð Æ” /a’"IÌïa’ - ÇŒžÄx^')RéŒ8v£4V£ÐÐãÅ ﵒƤ=úÞç…ž¿è^7f d옊ØTüÅ2‰_¸„H,CTä|ÆчüY_0Áš­‡@qPW1è1ì†õ b ÁLÃç´Ç6x ­IvÃ%~Æ#@¡ÆäÀ%lsʈ)°”,G<œ6´B`ÑO0t&T< jÄÃ'àPçTÇn¸–nM&Œ‰&ðwÄÃ8LC†Ä~`ÿ TÒÅÁ¡(Ç`7`%”ÉÃ*°À7duÜœÁ PŸ€F@‚\ÈdÂ8Äì4l”r|‚7t1HÀê¬A78´.vÃ8HÚ'¼Â8òÖlƒ\BTÇ\ì†#øA] pÁ+ÂP|¦àÄ sxCœì›ÜA XA¼À`gÅBÀ Ù*XÁ¨Cä_&CÜÁ% ŽC&ÁÚ‰'bS6°ÂDåg¬Ž+œtá°I €AÐg1XÁóDC TÉ'°Â'ðA%@ Ç€TGw€7°€#ŒÿQ8äO2  €Ð­Â+`Â*xÀI0Ð )Å(A˜†!X`X…CÐE‹ž…Q|ÄŒÙÑhD؎ꘓ™USL„EZ˜„”©˜‚¹˜X0…T¨…G@XêÄòh.©TÀh_™ŒV©Š3Ũ–²DXÔE’é —Îš")VlÄ^äèX(…–ß?ßÓTÃPÃIÐB„ðlf _ÓÕM0Àš±VÅCX B¸Í8A% @'Â4¨ÆH@È,h(CXtÁà`Í&<ƒÈÁÎ9&¬tA-øøA$¥4ânÓ¸nÒ¨ž>ZRÂÔÞÍä;–žîn@ ¯ÎœŒ)±.Ä\™ñ*^Gïêï&í+E5ÐÜ)›pøÁ6 ;ÕMœ5Á 8A‘GÚ$”@Á ü šùpÂ3ø\F&ƒ ÍCsœ \Å‰Ü Ä€Á¯lžÌƒÄ€üÿ)uÀ!PÂxhÄÃÁB3ü)†tÂ# ‹bt,=Æ3ý‹ Å–z…bRPC45I(oà€@¬ÀTW-CAèAäÆ4¸ÁzøAT"ƒZ†°SjdÂØDίpQlÜ AA …C1@f”&;ÿÐC%LCå`H8œ HA æŸúpEŸEC”ÇRÇøœÌ¶ÇBiȯÁgÝÁDéä´À'LCz¶X‘/•pÀ@1p'.á&U7 }œÁgKH Ît£tG LÀNYŸUGÑö F}B/š5” VøœÕÔ¶@ŒC'ÐP&0ÇlÂuwH³WZÎ'C7D"õuÇ'ì€4%åÎÁœ@H'@Â'8ßX‘Î Ñ <‰å×8\°pb1\OÍ•L}Â&”̲Û'pCu4GsÜTþ€ÐÔsu‘ÉùÌÁvì“´ÿØÀŽC°u5ÖŒé¬s@#"mã‘õ ‘áDšX‹æÅŠY‰µtƒ%XP F“a‡­4Œ¿8MŒéBzÛEŠmØŒ ñ¸øŽî‡ñDøÖ¸øF$“9¹–ö˜’¹é÷ÒØ‚½Ø2IùCþE‡Õ˜…FŠoE”%ù“/9[¬4>ª£œê„ìö ™OF\lS~4ˆtˆhFwp‡\Öt„Æßä”D@=©Fö°‰2ìü‰š”ÖùÉwLPew‡rTÇ~äNY»QýJÄb0¿¦ìÊ<õ&ld†ÃŸv:«‡CyU•`aÛ>6«»±ËÔê¬Yeo¢ Ñ7=Jsä{„†AýJ €Ú'6w¼º^yÓ&€™Q;Yw´T><ËHþˆH¶NiM@-àÎP¥2¸A €Æ~ÓövœæÇC«õ·?Tšýi‚e«ŽˆHhñœ´¿²EÝTò7Ÿ÷@uœ A}üS6‡ÐYVZ?u˜þFÂõ„x» è}- è8§Ãã @L¸¬–² ñÂMX5gU1žY5Á!E„w⌬ÿØ*qà ˜É Feà %Â9›î¬xçN±x ‹Œ·¬ZŸÖ@õZZÏ2DV#êó(5¦BŸúêéÑ¡V©.ÕZ´©Ô£R©ZÛTiب_½*•šTìWµhÑjZÖ­[³Pñz[u-W¦mÙý›÷ïSªNã²5ܪÞÅ‚ßn}z²ÝÂp!ßMì´AQZJ—¥%ºgŸË˜öù™ÚèÔ«ËýP'µ0,iãÃ瑨L2­Ê%Meá›ÌäÊåÊâÉ©àˆe«˜³„®LYIèáL†»^òÎõŒÁZd\Ny¼ÅÜ8ÜnÓ„'Ÿ°ÅäÿýÊÈ¿„Æïä®GÀ;6Ye¾„&hÀ˜â™/ÂÌo¢‰"¼ sRp‹I¨7ÎȤ¾éC¨–ëó¯˜9â'2üSˆ"…`ÒqC…¸ geJ¨pœb+CTÿSKuT¢L£æÖÔ\vµ\•UU[c[mÖZiåuYÑŽÚ´m™e-ZXi…¶f‹ ÖWsãÕµ'×níÕØ}W¶×bÓ½·4{³-8Y¸+̯ʰê‰+‡¡]†š®8¡` 8"œ"XÚŽJ¶Q‰%ûÜÓ.öÔîc¦9™¦â!À ýl#ðZ:ŽIðZÓLät2Ìý|s@.ÇÆ¤^ôªŸuûx‰l_ÅáÌ6è­g¿ØŸ[öÖþŸåý.y‚뵸]а| [¤Ðb6ax‚<ˆ.xÃ%)Š„•x#­n‡¿bð£ 7,áYK¾ž͡ƕÊì\JðøçøâvJñ˜4žÿ´'§ÄiVÓãÓl §:D‰š,ŠtÊŠŒÊLÌfæB«CräälâÌrŽÿºêÊâèOgq0ðë¬N<‚èʈîeÒh€#f ãêŒCCò¬“ £¯ŽéXb LÀ 6pIn‚J`Ú€é˜NOp£Ú ¼%: nnâ†8‰9|PŠ *ì˜PMpÐþ° #vˆFâa pJ‚CHHí àÀ*¡š`´þ¢´¼ µ¨¥[ôëY^‹·Ö…\âë]V˶’E\Ð…¶~ž<Ã]ÀeëÐZÞ0ukTü%‹øîéIƒíP¹^†øÆ…[øÐ`ÈE_£¼œ%ŸQÕÿú…Cñ¹J‘¹%]ˆÅ5†O5Ì·pœ í—p zz-j£3(†k"@ ­ ºAâáÔ€Äàp=Äïû0J<ÒOA‚Ìfö„L„L† 9žŽ«ìÆ€&ü‚l¥ÂýÆáÃÂÁ¥âiln©€&q^'k® lL”슪Ìå ð³ºf^ÎÉîÑvT.G²nç¥%V×g®l#ª*![1"f6Š%2®ÀeIf€p"¥ä:¤ñnª gXb &@¦¡*a ‚_&® zÀŽ`Î ;Fj Š²á±‚ak%*fààX!–¤é"ŒÿrÀ¤¡‚!®Ô$ǃlä <«   &9¦Và"ˆ¨Ï‚AyO¾VíH|Äg~ð§ójah.Û¢aj‘Ö¢g0¦/‘g›3ô2C{Ìé}tO|èr*LoòžGõŽ /o,ôg1û2ôüR{œi2a­p‘}S™CÀ s× ÅTÂ` âã¡”ø í‚¡ J  Ú òÃüÂAà”Á¥=>¬à6â>Ä$fL¬hz&/ŽhÈd§ÆÄ ã3…¼°eäÀ ”DIVâ:Vâ“L¨%ròïž $- ø  J‚9P2…¦áÚ@:k? €ßš@ï*Àr–¤#+6´Œá Ö #Ö`¤Ö@ ·Á.2 -ttÔ¤„FxôÐ2¡Xà` üàš  á&^)Õž‡˜®É1¾­Ø’-}Ò©*v 4µÍ{tKoO›Ì øŒ-JŸ­1ÎIæ"Ki-/_ÍKÛ0ÖæG3ËG™ŽÇNëâÕÎÍÕÞ‰—¦”™¾ô´„"¼ŠO^Ô+y uµ¢‹~Ômb䀕A Úàâa ²¯±tà.!ÜÀ?âáÃâAàÿ€à ñÃNÈ Tèʈ¦ {fÆ¡Æý<î©"pL\Ê‚ =.LZ ㈦@*«¤¾&0H¦Š~îäR®DÎSFÒlGÚ3Ñüqˆ…©°NYÿ†ßË­iXb‡ Í‚j bI¼†Jb"A¼I¼ÄïÌU‘(޼†Ž§²BHTbbŽ ç$öÀà@˜ìà. S´îúè*àüÀ¼¡¸èVa ¼aDénL  š O &`ÆÐÒRBÄ`Š ìÊV &g”DjHËS€&±¹Z+¹à˼ðÅ ùr‹3œ_† xÿ¨+ŸÚkh‘4Uƒ¶g¿‹hi‹iyKQo [‘h“¾ÀK`01í©¶ò Z°k¹î°øde)½Ð‹j¡+µæ¿XK¼¸K¼$3z’çWrï!¯xÂRóS7 š€ âÁNÆ:TÄÈd%€À < =œ3úVˆø¨…ÄVkÈæ„Õ†v*çý~Ègr.o¾HBBéÈoJª!,nýqhÚl;mÇRÌ$ÍăEfl‰ÀªÍþf=Èìäøˆ&8Óì„Óî¬çf•i(yÃÕüî€<’ÒŽ~ÄG‘$ ëÄ&¶"€#à†Ovˆ)A¤Á’&GOæÀ¶!ÿV :"}q°XÀü p±2u”a r`ŽÀ¨0š`@†€îÀ¸¶Áà€Xa^ ¥Œ²"ìOâA. ôlëÖ¸ Ùª´x¦‰N}­œf Ûˆ ~Øty‚OJe˜›Œ Û¶4ÖL“ÀpiK]ؘh¯›¨­yléól/0½”ˆu8רÂN%™‚À4*²”ØÚôõ~ø^N… ¨Á$Åc *(™ã#òcÖƒ%2W<È@7£q…>gl³"%¥ö£Y0ã\ˆä,Ðu™þü#RfŽ"´ÑÃdf¨‘w ¨>î"ò(hÖã<-E&dîMÀƒ+å’u‡ÿÞ$kvˆÊ¢(³t(jà“Oø†é ÄKn#ü£bX™_ 䕳0®ldÆÐBÍõpª5â|¬!J$ À#Š(i4'8dª€²Fƒ¡î€LM†Ä Ž Ô!ï6kÌ\6ÒÐ^a h"\?¢äÀÖ€¦¡Ñü`dà_ý€z² Úà^€94¦A¼ÁÚ`ÖàìÔcà¢S®0«§‹Uöö¢¡5Ïõh3÷rCظ‡÷v1¦-÷ú¢‰WO¢gM€8zÀ²IØÖç{ÈõÆ õJ3.¡‘ .Åə̂PCC·_º¶4²–˜–ÁT(f=)Tb?U ö¦àÿP¨;ŽCLœ37éXÂ!#Õèúãièc$Š¤š„Ž¨“à69#^u6!Þc67_Å$GÒë^ÇÐ~f@&@$”a>'GªH‡‚ês ¥Ìš:äJGˆBEeDø¯DÔ¨BJÆe÷ˆ!rYHñ`âAî` Âq«M&>¸Ä!>Ä93&J€†c”µ2\3J n>Ð7r–ãu@+±¾º#ön$«"@ŒCO0gH*`æÎºáËâ î€:à  ¶nfDAh$ˆ: (à&nV¶ý EY »r à  üW¶!‚© —ú9ÿÖ<ÄœB "À¶ ˆ ̸~å u·ÎÖ™Åi%Ñm±E‘Áü·ö íý%QG1jÑžæKh…OKžè+½fÑ%Ä¥+u¶vÚµV¸ ŒçpU†ÆÝv¿qÑ”l­ÇµøÇA,þ) Âà7X⊡ €c Ãp "à8Ppº!ãæ#«ƒa¸afƃNfÎ`àk> ¤FZ`&@ ð„ ´± iËÿ´î Û l¤Ä =ïÚ%Š¡˜c>Ö¼‚Áda† &€FfÜŠáúj’£V!®ä!>azàÿJ%Š¡M®à º¡BlâX ,ýN½¼aÎÀ ja%6aÚŽ‚!>Üîr€ê:Bj¤ ŠÀÐÑ£D:a†Ý\)â r€Ô&àE(¬rÖ;"fXôm" âX¶b>Š¡PVÉ+à"àŠ*¤8áŒ#Ü€ 6„À|ýdn"’J}q‚P€Øn˜âàZæO\=„1¸á`·A: äêsôÀüÀDö:¡:€J=&¦c:@* åCF¨@¦¡R"Ö€~€r ÐûV`.¡*LXt ôÀrà&ÿæ@ª ŒÁ¼½¡V|¢w¤6¼~eM)Ï2°×ÜÉ×ÜT3‚|†Ýò£ ³Ûº´.7/—¬¾Õàÿ¬Ø.Ï*/Øv.­.ñ'¢Û4÷°G1»þ1øga·4Å¢n;3óâŸbc®@IPfä@(¡ ”ú„ ׃¡¨à ¦áààA$@Aôà æÁVª#¤ À@<Í=Æa @Ú`”ÃC ÀÀHêÎMÀìŒL^µ´4»A¤:¦áÀ€ ?%Ö ÀàD"„æ¡ `æ=p b€÷k9`Âʘ*t h ÿ&°" hà(äEÁÈ uS6a7X”ÀÙô)\¸iqPD™°jB¼3—ˆÁÊÃáæ-h3!Üx%hP‚U,ž²xŸà™§æNÁx„ §˜²Uá^y¸%X¼`+ý ÔªX‹pÁŒUyä(BËp"€‘4G¼M8…F£äpñ¾ñ9ÔæÁb&¢Qƒãg±béàãÅ„;ZIã!ÞÑ#G©1ÐéÎ*›&]ê§²1i—ÚÄ©ôxÎ#Ö«ÁoÚhhSl•›9Eh#-G8GÔtÂLœmGàÌs° S·U™&T˜÷*F¥5Þ T+ÿSf:PÔ©S›^½ 5êÕ¶{ŸÎ½ûtñç¹W Ÿ¾ºøñðÙ—ï^]=øíì³ÏOŸýìöwßzþÑg߀îøžxøiWÞƒ ’Gxܡ߂íYˆá"øžyfH^ƒZø_‚Ý™_æ7!ÂÈ-ëÑXFÛÑR]Ôé8!eÐH ËL$ÕÐÈ-a¼îCn^£î©Ïîã2®Ç¤æÓßyë­7ïúíÙ;¯95B–žyöÏ+¹öÕ›}çìÃ^½èì—üô´_ºïø‡`èA¯{ýÙÏ}@G j8é(8 @0ŽF`¬ÄÐ@+¶ ‡)`JkˆÃ6 ã†`\É`ðT1*0%¬` gˆGâq§U8‚{˜ÀŸÐ bÿ£`ñTAd!…nƒ ã‡a †Nx$5ôÆ]>Alí`s¸B´Š1‡8¢ݘC<,‚ƒ*¬ >üË8XP…idb8pJ1ôÀˆ+d+n(Æ&(! ˆÁ Ê(ÆàˆW¬âZl7$p‰3t£_›À¼q…=À&Ÿp,Ì=ÃS€ƒîR„–c‡ $7Jf˜`$Ê{Ç“ìøƒ(ΡÈD1ˆá ŽÃ"Å00*‰L¬ÂaG°Ç®ð ¯lbBø*V1 \ªã,X Hæ@> ` ÀI&0hô!s(Æ`YXáL+²á‹n&YÿÊÈ a‡ T ‡@p 9¸ÅÉH"X!‡O\—ÀD%æ°ŠmHÜð€~µ;0´ `XAÖp?¡ 0Ú° 8á•è€4ÆÍ’©¡•Æ'˜83<â­ÀM^q]|áG0†7ø ¼2\§;œ£Qö~—¡È;rj‹ôó!=hE,âOƒRÔž®~§=ú‰UDÖU¨COMQS£¦ŽÈ«aõþö·¢üÄg«Wµz4$À÷Èg¯" zÄU©H=/+bÍXÿÈ@ƒ}ëxЇ£PC+œ@ø€>Li]˜F£¡Œp´à%M;ÿÄ4Àé­°@* Lc ‡ºp§mˆ"¹ ‡^醓¬€Ä8‚Ìî ­yÀ W ‡h ƒGdb`ˆ(Á‡°*bÐ ×~öb©* ºÊ5¬B÷W%t¢é@Óf,¶Ñã¢u¿[?÷6¶%m¡²Velµ+ïvÏ{€Üv˜7;èx÷«_÷¢§že) ¹:­J²ÿ¨J$Mb˜@'L‡6ÍEpD €‚à Waˆ5 cŠ?¨@ Ú`'þ B¼r‡nhàÓ pð Y † ñ‡ƒ¡nõ/P¡ç*.1Ê;ŒÃ q0Ã.QS$: {†42ñ•9ÈbsˆA 'P„x ÛE  Ô€‚=8(íhÐeI hn–ƒ„P @nÂ|p󒵉x WЀ,-’ (˜á˜ØCEÜà(p£ÜøÙ÷à‹otÂ’ƒ#¬Ðk¬ýmϸ„´XÉ!”¸Â&2ñ G@B ”X7‚ñã^¬ÂéäD" ø`†^ÿôk²XÅ7B´;”j€ÄB~81@à X°  p¡”˜ƒcÎ`‡lÀAäT†1&àˆ#tÂñP|° ,@Üà_Ð*ŽQ¶à ­àPMP{ÐEŽpÉ’ Vd/ ¯Pñ€RbÀ,?9°9Ð@'wðQPÁ‘ @ ÛðG6Þ° T0Ò€6FÀHF°p°[P762ÌvVZUT@">­Ó;©£>½Ã;Γ9½s…¿ó;:²…Uh$ÆÃ:W;n¸^(;ÞA$æ#$ÞC†ÂÆž£TIÅ<µ£>ä3¨ÿ9Øó;Q(‡W؇UÈpÛ…¾³‡¹s†9"ˆ{Ø#“¸ˆX(=>r$ºc;ª#YSµ? x9–U²C ËØ`sáðÓ@%ÒÐj¤ +¤BšÀG Ÿ ±ä°@åFA ÑpŽ@[n–P¿Ð å% —ÀGàä,ð TÐ W GÓ bp |@tg¬pÀ X“4¡"€èò + { `/gàF0îdk E€|ð ± f@J´Ear°äÔ*ø‚gS ~2|@ gàp\t¸|É2g  { ÿÐ*£,yYöb fÀ Ž€)Y²°W {pñ ä`—°8€u”°{°À  Df g@ 4Pn,jð aPFuD6jJ–´ sÀ ²p– GÃð SY†AEB`ˆ€·t² ¿|ó B ¯ \’8ð èdŰ 9° ~0ÜÀ àqÄ ¶2¯ œ ³‘ ð )äÙ/¦ ÞÐ9pN”æÓÐcW ÒPvÙ 6ðñà` Á  ŒR±›ð­,`B+~Ð ˆ,Å Gõ9g(=keÿWYÕXGWö‘oñ¶Go(òn~upÖfUáFVO5ðWèVpóQUvÅnú"—@Ø&ŠYoÍöU¥Hn0b9#2ž G øYoÙ6WsY m€å‰øfV ŠXЃ#©ØHQÝP]и‹µP ÜÐ WB%M£s¯Pôð0WRGùÙð7 D àÍ8TBÀ0(àµ@Ÿ T P1ï$ Yàà± ÏG0'á•°XÀAÜàfÀ” GÊ0m–² †±”ß ã`Ž*f‚PA“ù Þð Û¦ÅÐÉ0 ²ph«@¶pÿ˜€8!uQ@ÙP7ƒ£  pSõÕ zãWiP ˆ°, 8Fb0~ðŒgwðбŠélÐbÝ@äs 0T€KOB¾à#Ê€Ùð Ò ê0FQ ”0   ¯qk` C ¬E° ­qíÀ Ðh¦`˜` '± › –vð C@M 4€ €ðKñí BÐ ´æ~–ÐÉâÛ í0E r€ ðŽ@­ð3F1½ É MPÃé s MwP9 ²ðEhp`0à GÀ+à `ÿŽà9°•à ˆÐ UÐ Á°k@rPರ7-AeÀl¦ØÒžRåXßF!ý™ Ý6UWu b…W’XÝéVô©žö9´wålR"!Îæ!ånJËmÖ–N(µ]UøQµDKmJ[žöá Ó–W`5>œcˆëÓƒø9TȉxH øaq©x3Á@[à+à-@°À€npTr¸A¹²P`rOà 1@ E~‡@TÊð«P ‡0P²Ekp`àñpŽÒ#–0«€& Q­ÀXÓŸ@ šÀx‘GÁ ‡@ Ù$¥«€ÿ B@GP[¯f rGޱ jð¬°`µPÆ@>€ %ðÅ Ù`—PZ„Æ Ba€5›° ÆÀ­ÆÀ“·[? ¾„£­Á¦À¯l;¾:r8<žCÊ„èp§£<­Ü9‰ʧ³:X†ÇãË£ÌpE…†ÍÜ>ÔÓ‡ž(:­ÜÍ¥\ˆu¸>œè‰´LœÓlé–:2RŠÙÖn8Â:Op30 ]еûÑ TPtµ ?º%HEÉÁvF1›@L›pO!uÐ’ÐQWZ8Ð Ÿ° †° –‚º6ÑxgP ÇT1Ñg€u2Ó 8п ³ÿE 5&IÝ€ÒX± µÐ ØR@a–Ýp¾@Q÷ ­6Ñ*M €ÄvæeÐYtÒT4?ÁP3En‘ºL]?aQ3ÓïÒ}Èb/¡’T-%ápÕ&QKd8ïR@ÓQ×¼ûÝ—0ŽA× cž4fa7ÝÔ H×$S‚-'q®À9 Ñña?ó$w¬À Gð¬À „Ñ E 3¿GP¾è(ë‹G°~$DŠr&yÜÀØõ´ ÓP9Tò¾$csa%´x†/²Ug žN¶g»V톶J‹VóÉÎ*âVWÿníÉnðFpa«ŸQe¶IûžY¥ÝRžøqXe»ÝrÕXK+ÝòpÓí OHnXõÞáXò UôÝè}ß±©øOâÉ  ÝÀ Qпt ÁÑ  @”gR»hñàaZOQ íÇdZ›`Záà&±ÐQá-Pâ Â~ÂgMØ$mמrQZgáØ = >âf±â5~A-§L,Q×)¦¥ÐÁ¤M=0æ5g¥Uãu3Žug-x S¨[†º 4&±Ó} ã+®`bnÑ)î@1ã3,&ÑæjÓ>~$cÑÔ%Q6|MãÜt«Vÿ% ­Ñ[4ÛÐM¬Cýßg pPå8C®pÛ¿! E0 û*è$Ó,¢µ¾Ñ‚Û`ODIÇÛQP/PÐ7.â´ìLžùypXë¶œŒ Ë-Xr{meõ¤ jnðµÜéŸöéÜ{u ã9Þº.·M  Z´~õnznÑÆŸ µµþ Ø9ÜrÅop«=ä\¼œË£ó·Ì3$Ë :©h»Ê° •` Ù°í0 %Ãß =J¢Sâ/ÔÁòFoÔãDΤNã)Þ(C>L â"žâQ×*mŽ†Ñæ[TsNårä­‚ã©›å8>ÿò ßã,7mÑ‘Ðn®G0®GXÞyýò'¿å"ïågaã M¥å.¯å?óng±òm.§%ÓóHOå`þÖi>æ<ã45hýæC,L A§²[ %žÁytç Gœ0*(5 žq8'Q EÐ¥Á‚mЂ§áQ•~–ü ÝP2Ÿ0 ’ 5Xó £Ä sð iòhGqÙ0ˆI~ ˆP¿^‹"Ë|=â3ËáŒ=ÚÜ…ÈL‡~{ˆ`8‡Ù쇧ßúxˆ‰©Œ=zÈ…žcúÊÜpËCûÔá…¬L‡´ÿ§#ÎÄŸú½_‰¨L‰ôs‡‰ÀŸÊ±ÿËI2‰ÓŸ‰bÈúÚsý o‚œsd<Šwܘœæ„xñ‚²H¶JÞÐ^‰Ï[8mŽ)p„ÓŠLpWQÔëMñ68ÒàDȱ-ÇŠl¯"x+ÀbEÿ9kX,'vÂÊ;Åä|š&Çœ#VñÆ[Z”#¼e+S­Ìñ' ŽÓ:Þ 5ZÆ£?þÜ8õâÕ±_/N­{÷jϳ'_Þ8µëéµg·®=<øíðß{ÿ>¾=õöâ¹W7Þ{ÿÿîÛ½âî+p½êè+CAìÄïÁãÐûn?ÿì»þÄ0¾ ÝÃÏÀ ¹c0= |oAS¬ï½j¦{B3<. ç–©¦0® c(* ‡"” f•`L˜'†#ÄX*%«&¸Â.¾Jˆ!*Š¢;j£ƒ¨T*³È0¨K¥òbj¢ H 6ºžÚÈ,5OS¤ zªŠ¤Ž&3 §Šÿ°ªÓ+±0rk+·Ð,ê(eÜ(i£×ŠË-ªNŠs(”œzíϳŽòJ%œ0Zå¡•°46³<Õ¡LªNVéB M:ºÃ®;æèDš#àp`´À‚ù¤â! 7䨎º`¡D¶‰¢‚=Џ#˜;Î0¬ VXâÇrÈNx3› XÁ·&rp¥‹Ôˆb>rh‘*Ñ,c"hÕ˜}¥ ºp`9ãÐEÆõ0”ð¼ QD±½…F0= †Ñáø"ÌPŠeÌÆ ͳ˜<…Y;ŽÖXbü"f1»…cVQ>˜O„¯f‡;¦.å–¯«˜g !,Yc„WVùçÿÑ3ÎÆÑk`¹•££æé©›COjªŸ.CjéªY&Œ¡!šhC”©å’6Š0&™x”‰{Ó U ­q¬$¨…qZ8«…ˆZ0ê Š‡ŒŠÚdq4s ‡04{iò§4²é#WSréÍ™²ó!RaòÔ¬–u ¶£bЉ¢¡¢ *?‡ÚÈ5Œ:ô¥ÛÑüó£L>zÓ(¡B½%­ŽZIP bcT£ªb3&nÊj¤âIiö’¦`”‘k•xÀ÷Cš*‘·8XAd·É„ucŽ`"&ÜÎ=Šnsð#›üp%˰F€Cà°#Hˆ1[0ðG>¡[ÿ8B"0„YC9 Úμ£5æ´¨8ÑiQxBx®m-…Rca×DX†\m„&|ÎÓ¼fŽP‡^kNU8µç„pV+¡ aµ#þІX›aÕŒxÂ2çˆ",!t‚ˆCï‘`<„áÕjhµ)ñ‰ÅbIÅ*bm…WTá µöÆÆÑqL¢s¶FÆð0MŠvœÎÉH°;vè;vÔO9¨òXÑF_c]0’щbƒÉXÅ4¢`†b|ÂÆÛ*ŒB+¥Ô&QÆ&:<„HIo~#Ã@ZŽ-A$!¥ Yr¼Ð­.(ûT"e»Ê™$6>yJ§þd´eT¢ÿ .%r¹Ø)Ã{¥^ë b’CùÉ(Y‘棖Ç(Õù®OÂC Z®Ù¸[b$P|:fòTEgÎj#o˧>u‡J¶Q€ƒ¤á cÅF

h›O êº ØÄ(€¨?XòÛ°À À'™p”Yi…* €W|[#±nY©‚«„ðD( (ŠX…bXƒ5˜¢2¸8´ªK¶ë™%̪‹™˜¦Â*£±—YAœŸQ™Á˜D*Ì•ÙÇ·ªª¤ÿÚÀí—²£¡*øÀ@§ÌÁ¤«Q™yTޱ!¡{¡»¡ +;•9•Dk |Ò”M(¸ˆpe6‡¼©4‚-Aé£Ê½™ˆMJNÜœ´Ó 4›¸«H ã9•BA&”¨Ê5É’»0 QiQœµ§”œKi”Úc‰¼Ø;iÚ&Eñ¤¼hKŒXн#ŠUX i2ı´ä‹è ®”‰! Ã9è =5Cˆ¼ÁSÚÊŽÈ‹˜7èGéI†° Ö Ãĉ¹ôeˆ‰xˆWhƒ5P‡J0Jh·Ö˜.¼ˆ‡#˜ŠV†›Ÿqy8( oÿ€— €!‹`'¨€jì0ÎÀ·-ð–p?¸9À6Z‰‡"xopVðƒ Ú µ²Ÿë8§K9˜ƒ#7 "¬c"Ž£>»$šŽ©Ë¡íd¹&IôdOç°¢'O“[#¯+ªò,»¤+³õü 0‚3²"'"Ï2j!%»"ПK:3b£>ú#êÏ«S¹ùŒP¡+*O@RO/»Žé˜T2ô"ôˆB»†½… ¶½¬•PÊ¡Ø.„`ˆ½¹’h%ÃÙ’¾‘¥RœIƒŠV"¶µèˆÍ¬“ÅYœH" šXKAØ(%kÂ&OúÉU)̅بðÇÌ ¯ÐÌQÿô¤>Y“È3J¬ ¸È‹ Ћxx’¼ »¸¬œO©K± •6)”pÈI#+iÌN‰›RÚ’YÁ-XÊÓ¨(•pƒ`pL/ ÌhÑ9à¥ø6Ý„`€¥Aĉ¶¨“Šâ‘׈ 85ÐŒ‡ÚVh5¨d[…Ù€O8?hƒ6舒 Dðr™†z;ÍöƒŸpøJm¿qÈ„qˆ‡O˜ƒ+À³x9¨¤"DˆcP*p…Jxƒé&²Ðl1œÉމy<²-ky¤y AW£yWA,!Ì!ÄH2¥5¹‰›¶œ%$­] l£ˆ5¥`‰¤ Ȩ=àT©a\û2‰›Æ§ nSš~ W †qX¿õ» ¯L>¥h‹Ó½ƒi脹™†5pƒ5hã<o†Wð饂"¨€i€»)Q¨è›9‚ ð ›àgh+(µŸUuhÆ!‰‡i·¨ÍP®„aè‚xi ˆDð¯·.‚ÏeJPb°©;dD„!(€Z…ƒ5ÿà>x„𷇫„J¨í6`5€U0JÀ„W°,ÈD¸h0…_1NXä@¢ •"÷_é5»"QveW#ÔîxÜ1½ ²œß$&ã±€\»"<Èq_yn±*Ën Œß´ 2åEï‡üÀôÝo·*‘‰ý@zu±{mA­2¡ ñí™!Š»'@ŠEˆ_| M 6@&X9ØÝVØ¿ž;ä.€G°[ãs€Ø‚’XÔp8FfÑ´Ðè‚#˜Ë¥(*H†‰²[¥X Là[ãÓ ˜8X…:‡€…KÐ~Æ‹ x=`è¨è„#°( (¸ÔØÿX\è€vÐa~rM8M¨K½€=ЃG˜ €ƒ8ÐGØëb`Å*p„¸„'‰ 9ø08=˜ƒ‹8€G˜‡N¸ƒ€c--0$!è€ox„©˜†C€‚oȱP›Gð˜nˆ’xøGø†.À‹d-€*¨Y8jq0€*ð€v˜§M€ƒ;NXÔx¨…88@‹‰yˆƒgp„˜ º¶-ðˆêOGЂ*(VŒ‡9è€y€0ØAŸ L€ȤÈf€…)(u(h‚V8„v€‚ÞXä#X€y0€K¸ã ¨!Ð^€¯ZõƒGÿˆƒ Ñ Jø(ЄJ¨NàÕdù‚È¿ÏõÌ.Ð…x6Øí# „p„!‚ÇH!w«Øv=‘w%ÈD¤ôÇ„Dß|-« ÁyŠœÈßùìí+À²³J×ðöG¯JÁyý–—ç陉TØ,Ã1‘ùoÄÐóиi¶e`Î:£³!E¢†¯Áç×Àµ™ ½0ècä,È‚QP.ˆ`ˆ‚að?¨sø.p„GÙ‘-pKh”8‚a - b¹I¸CÐGñ$9hƒ €iÖŠðVˆ¨…sœl‰&p e˜†jýÿV`…!Oô;ÿ³àiø\((Sd85°°U»bèôYñ5pjñ5?0†G¸„n؈`È€‚†6(†Eï„»08ƒ§}~x¿„6OÍ Ø†xx ..9 j‹Š*bЀNгp(€2…èÈ7h ˆ6UŒ)›¬˜œ`G:ˆ¹s'ܪi\vxs8Á`Ta+ÌÓ®Ô`Š÷…c-hÁæÑ„…q%Skè“dmÒ S<¢F(a0P8ô„+w(Â¥ RÜO< ŽÇI>q1œdRšC\W(Y—d@Ál¦€’ÄCìŒÌ81Gœñt”?¾!nVŸÞ¤‡?PÃ5„<Óôx>J.C3zÎ$ù?ði H%´šŽ~GÉã¡2hª\eà(Ç2Ò)š, 4K'8b~²{vÃeó\46AÞΑ1:÷ŒÙ9ÐI³Ÿ± hì¼ù=·ù3”ÑF¹±)Z¢™‘;·c¹ÕQ# %Œ¢›pÐ ”ìè àÆ¡‚¡ gµÀE¡ÀiØð¤Äã+XDÖØ MÌQ‡*A«Ÿ< 1pb¦â¡Œ=L˜QS-^XAœ ÀìÒP<æà>°ëÿVEÙï_WÂbt¢²Èħµ‡o´á O‚m<^1Ç3H6g89j¤ Fò(A¯wXì!EÕÒ'P  æy$%pDÀ]‡¬â½ÈDIp…+à BØ€ånh æýÈ(.‹°E™ jm¿;tC”°­ íèüªà¬¨äP*4"º™’Õ6ªp7œ?˜€ô2]`‚#\©u0È1yé/õž°=Ò G¸¢þB%ÚÐCT`J…ŠÇ'.ñˆL/;¦âb·4a˜°EŒà§UÐmøDIäІ`¸âÞ€7ÚP cúÁDÿk™ pÌ!xƒ0É:1Œ¯‚QƉ&r­›o4¢S‹œD¹©¶€FÚŸílýظFÎpîõŠ+Ú”NsŽÑ¥=DÛùχZîqçÔ}>»†Ptj“[Kýó§–zl2nŸ›st=‡?|j.g›ŽÆ>6ÕVÍî\fa0©2*a€"ËŸ¬¡xD0lÃd–£”ÐÀAàV eÂè€^D[FÁ€‰vÍ«¥¶È<ØCØ´NÀ´èð¹(Ã% ‘H‰C8 Õ"T‚(¶ÈMxÃ4èÉÂ%\ž»™ËHÃìZmÃ0xÃÎÑJ ­€ºx˜ 1Ã^Á#8@ ] ùAiMÜ´A(ž:¬€Ã°€4D@8Edƒ:ä€7°' X4A%ä€ä5EºU@0ƒ(ÁåmCø’T€D^Ë‚A°€âMÌn”A4AM¡qCJ>õ ìaSÚ˜Í@j¤ñ1BÿêÙMè7M;:ÎÜ`d8Áž<äçÀÓîyî=!â8å4šGF”ç8$é® ¢*ÔÙ€ÎFžÍBjMDY>6ŽâB$ë€hXÚEÔ TlÁVQ´×Åï\È#0B;ÐÁ­³¸ø›ýI ‰¡Ûïó>8P<Ô‚ŠœÄ&Êš@‰¿ž˜IW˜‰IË}K@IµYÄŽøJTiI-à–µiHI°KðÎy>‰¨O@©µ”‰™À°ÖEtDìÊ¿ñަüËpÄUL|ÂÀVöš·‘aþêˆsE8|ÂTIüN¸ÐM¸‰íüÐ4°gÿ°q£L€êÏ­Š›x¯ób°G|Dúb‰Št°ŸIÀÖƒè4×I€+ Ãtƒtàƒpà ÉÁ¬@tAß²B6¼L0 Á¬±7l+8Ld@ÀAxCÈAZxƒ+PÍ´Ä€4Äà lÉA´g°mT@AF†äÚ ¡~Ÿð_CÙž8õã>Næ:ÔæÎ£@ˆ<ªæÐ“ôE¤:}îçfŸêu2ãöžB™žêA®÷‰ŸF²òñ)= TFêXïõ£îýn/ËàXGHÔHY V’1*5|@<׆ 0ۺɿÝA8ʨñˆÿÜ@.ìÀÜ ˜Io픸A¼îˆlo ŒÃOÂDAØ3ˆ`©]Ĩ 4ì|ïõŒÚK¼<ÕC$IAH‰µA¯š¯(Îo8Äà ¬ɤ^ý­Ž0¬QðŽüTïlHDC/8JAÄC´ôCÀšBg\<”L€>@üèìüÊëÈ ¢àÖUÝë»Û¡ÀŽõàÄŸøËŸ¬à=çÊN°c 4ÌÂëø°ôEà‰ÿÞ P¡ &MÃ8t^pBHü®Æ  #OÀ+Á‚Á ð-(äÀ‰I+TXSxƒ7¼D#ÁÆØ-`M XTBÞ>Ѱ‚âå€ÿÅTm%°ÓàvdÖ„™fÇslv™‘Ÿyö™–Ù˜©†q˜viÿÇ“Z™–åFF9™›‰ö‘©ähûX¡ñÆs´¶è”Š-dÔk“©“r¶•aG®n™wXs %šsovj§G“¥‡—5Çi™ipdçTé³D¶d|€K†7I«<ƒ'@Cžà€T|ƒ p¢D/!4B#ì#°À±òìÊüý¤$⡬Â3ËjC›ôOì³Qoð?ó7›4ýV0„ l§´…ÃN§†ô±¶ˆ¨ Û¨µ´Fý¶ÀO‰x…›ô†<†DH?‘BOxïÀóT¢xŒC¯þt… ¬ù+ÿìèŠZ¦H´þbø†¨t÷‹Çx’õJ—4í^Ê®Ûø.ÏrªûrC•2§ÿr­ƒú©Ë.>¥ú.ÎG23äÔ:*S”麞î}GšÆîBQ8¹.ꀆhTÄmH a7˜€ ÐH'Ã4,tçqÀƒÿ1€Ëê9;ø?·j8”øR¸ºÿ¤–´€2lý±;kõó·ùâxHCï‡oðK,õ_x’ä;ôJô¾cøC”4Jc¸…“ðÁTŸxI;xAÇÏ‹ã¸@‡<ýʪ£ ¸ˆkõ¼÷;·4L@øÁß„‰wj’ìKd8Dhœ_Õ÷lA¨A|ñ´ÁTUÀ tAËT+¤¸_NC<¸S¸…\7 ‚@bûqÁ6$ž ËTØÃAÑ|Xlà ÂTäÀ+HS8€Ù¶A6 #>9®¬{ú+›n>YSHZÓèŒç<ÎÝØ½àÀúíê˜Ýÿ=*ãý*ãî¬Îÿ)çX¡VE:ßî6šäèS<d;’Þ,ßÞå‡ú„þâg†ÔX·œ})pÜGAˆ5Ȇh¸”(ƒ7ˆA¬ï˜À'à€—‡ñ=‡‡ƒ½7ËB+ø>ÿO6Kòë{óó·–TøT.<Ç;¿‚¸™°¾_xɬ–tÍÏôSüEÌ4üÖóÓûõ[8ǃ|“£4»Ç{ŽølÂÌ{ïÄCø‰“pŒD¸ N0X¬X¸;‹MØ´É Ž ÊV,q`¸bwÆ…#¸° ²bÊ:)ÒåR¥Þj݉W¢¦­¨P,X±"Ï‚­Š7ÇM±UÜpLk¢Κ#ÁŽ´aÁâÈÿ¶6Û‚y æ§R‘W¬œx«Àb +o&âEXÁ“77ÄÖDà´Í›+ŽÔªÔ¦LÞ¼Ö@ém·Z5ÀeþV[VÆpàe‚iU£Vø0ajehåm0ù¯äj[fœ·1eˈ+öLÙ1çÌ >o|Ù´éIJÇÝØ0âÚ•]»~Üšwp˘©ù†¬ûõðÍÃc¯&.YttÞ‡{s¾}ºôíÔ¯1'×\væàŽYSÓÞYôòÙç­cߎÚvàÒ±õ–™ìX°^Ljõ׌Ÿ¿ü&kŒj>È„€U f‹.ˆ) eVÙæ‹(¶hC xH2”9ÑÄ…n´ÈEÈÈÈp”Q# ºCDƒÂÁ(I'r¢‰n4q‚z¼òJ‡–ì±"'›,ˆÇ*‰´’Kî@RI.E¬‘¢Œ( g•ŠvQHZ¨Iƒ6i̘„3NGLÒJ:y,&žu# àXEÂ`ä0a>\qD¶‰'žb€( 8rè4˜3;§– r€#‚mrðÆ›¼b!‚lš`Ž+à¨À›ÚðÃi"5‡#üh£ ii¢€J ˆàoi£DŠ ¾O@ÄþË\½ŠË/@ÿòºÏ>rý+.]Ä&k÷]sÿ«O?vÍ¥W]þÎÿ%7\}óýw0vV7_oõm×Ý~Å-8ÀqÇ5XÞþÖ 70|éµ×ÝÁ–˜ß…7®˜ÝoXaÀìp`5>eÁB¦7ãe+p™Lt¼£“OºÁ!˜xn줓n(ò¹Çƒq(#R¦…;>œÃ#=Ã9zÇpÆi±F:]$ã¼ḭ̂§Ìh“xf,û¢6RˆLA hGEôy“![˜Rí •œÀ @â‘̽-¼Ï§4qÅD“Ôp‚„jH¤ç r請<³é>óñ=!ú‘Æ(ý|srÀV[Q¦n¼S âô* rÈa Pˆ¡‚x®'˜\1àˆGüÀÑ(}ÿÆaQ½q0ž#€¨@‡l*X!˜W)¢’V¥q£€àÃ+ÔPf›JèºÐ›J‚áƒZGˆ?˜/˜÷›­`pÑíøcÿ(Îxþo_®€÷‰WÃø·1þ ð?'c™Mö±û!°\c™ÊL6/‰ÕË‚ƒ!˜ß ý4p~÷;`?h¿•iðƒ õ³fì…ósWh¢ÃøX‡<£iŽÃs­v]†ax´¶#)$#3‘‹†Ä6½¨Œ›[ŽìT¿éMgZSð”¤åÍ! ™Q‰àö¤¤!±IrS꤆56a)ŠáP"ܦƶ<™(l|¢Ü”@‚§, j éÒrÿG®EQ»Ó°Ô¶¨An‹QbÈ@ µ/ 2O„Zˆ†îŽ3LoͰ `„Ì!ñXE&ÊW?€zZŒŽx‡„Äã*¯`ÕšrØjVðCT^ålG€Vé+jµ~pB0ÌþÄÏ;*«Lg¸¹Ð&‡¦éæ7—ƒõˆG‡ÙMq¼9›Åœ3Þñ&zjS›Ë¸¦ öd'bþÒ™ÍìÓ6ßg? joŠ=ªÆ=¯3ÎqÆG= - n(ÊϼØs4=(:×cPp¢¶¨D¯%ÏÑàS;ê阀\Ö¯–"Ì…¬†5Ìó=AuYlÓëTÇ®ÿÍÈgIÂÓ‡$É!ÝèN•³â 2 7$i±IySR'€ÈÆ%InaC’‚àº'1¤G›øÐÒ>T¢}è¨Oú"S¿Ô¦%UÕjã`’ˆ’ªå I]]HC ÙVC…ÃFn ,— ⢇TIDs!Ƕ½É"B1Hœ¼¸·NV1@ø‚®-´áÊœ@7zv…ôå€907Â!;HäL99òî°ŠOLcÓ¨„7c ¢WXC„&ä ¡-À#È †x ÐF0Jõ“"D§ Ù× Wª1—U°€”eˆÁ‰±P~Þi -62ˆÌ[¼à +Ø2õÖ ÿ¼ ”`w)ß“1†ó…/}hŸ{Í‹_ë Æ,ˆŠÉ¿ýý sÊÛ`Ž™@2-Î2.³Œ0\!PY«‚ì¦!QÓiŒCªEº±É ©GôªæØJGC)J7×Ê8¶ÊúM¯‚dqDÙ"Eí¨6âÚÝÈàµDQ³‰0bcTÑd‘9ü(M#"Èã$â¦6•ÆktÓŽ«µÂJt!T庄GÈMn²ƒÓ²[Ýê· dµyˆÇ'âá„-  DTe1*Ð! Qe*áWÁg$ºŸùÖ¦8Ý!8Àe<´R„ÜMÈ@îŠ`#HU—ºgÚHípP.lò'4×ÿbp ¶_’=Œ?¸NÙK÷‹¯)p×/KÆ|½¿rÁT¿àUÃV†?oŒØÍ¶×˘aó:e¹—ÿ^Š0g[8ÛÔîOf_rƒK8õhB•£š‹ ¦6î’™a.ó"FRn Âeùݵ©­¸‹¤›ó—H<­–ñË"&ª@H¼eGÖKmâ‘¶lKsuÊuú¢H÷¢ž*Ãgwðòb×TFˆœÜH¨“ºZÔ)‹®ˆySé¬ñ.)öËtÜ[˜ 2óƒDU­˜Ä¤æ(;-d*ö †î­"bˆÇ0á8@•ÁÈÄV*D °:Ü)ƒÄCÓ|Ýÿ§ä8‡©£}Pû„KŠ!M@g n0¢°‚¨+~äD!sÊá”Óݹ‰h<Ÿð¾¤þÄ¡9#Ã-|:Ç8'¥uÚó÷<~‡éѧçAJõ¼“ó¤¹7Oj ïÑÐ_'1¹¡<8ÓCûÈ{]Lï¯%L±ÒØ´«ø@TiF…³ÜEQ$ZƒŽF!EYHhR¸œDÌÉ’÷é¨P¹Z±ˆ¦ð[ÉÇ9þÅ¡$H‹ì”PDÍ‘lT·»Õèn^èh®NÖLpŽ“šDçå'“ìfH8®nä¬P iv.ç…qºˆ©Þ„²ºJËÿ‡ À¯j~"Š˜© Ü.N¦á†TÉfVa `Ô  gü&NÊnDD.QœFŽ ŠÜ®¬LÅThÉoî@)øÀ•¡ ø  Xd#»@a^Bf>`£?fÍ~º-]Œ`(ö«Ù`×ø…¥bʼ­ÙH×Væ],0xí„ÀÚð½Jæ„¶ ÅÐbÂE`.Æ ÝKƒ üËÂöe½QÛÚåõ¥ KÛ¨a1*cÎ` çûn$ú†ý˜¦Jf$6Á%êæh ëh„„SxÆ ¨Fæ& ¨4„Dª$B¤èûÎn"&pr¢nxr>Á ,‡ª&@"Žfæj!Ó(âhe#àÿ¦Â("B Ð]DjáÉê¦l¼&¬qI¼,QˆäI  @]QjaO|±|bqqH¨i Œ±Zàh¦aGôÎŒ„"¤Z1fîu¢Äãa="¥¨EÑ­¬1Pއà„4íÎ\q]±Mª$Qš±DBNVaæŠJ! KugÚ€¶Iä`Z¼áVº!¦Aœ ,𠑤'&Âg¥ 4DâÈà´èhüú†gt :2-Ô  @è%ðƒ3hGfÁ ¨×ì€ôÐ[dˆ„¶ò+‰ Á&ÀìÂ`ˆ½Œmܬ ¾¾-ÓÿË¥ˆ×e„Úk/û'¾ÄÒ`â0dBÈ_º²/“¯„" …æ94^ÃõL€ÀqŽHá@Î ¼ÆÉi8e ÆQѪIä‚a§¬‘©¦ÆgzæíΈ¼ÊxÞÏù¦KìÏáæoQ­b®ÊE#ÜnnD"Œ(B6͆É̆ ׉ê#Dä\,C kDVÁg1JÜÏrJNOÊ(Ó&¢žñI>²ED¶0‚«ìL bŽH‚ÓGD"F"!º,ÍòSæ4bÜ é*#‡" §ܱB(fÒ%,1,Ä'ΤàÀVàVÀÀí@ŽOÿe$ŽÆlRi0­rE%ä0m$¶!Sø@ M$*AŽàÂE»,,‡òC¡Rª¢ï2o9@ªÝÂé:ò‰;P㡯G}(>ÌéH·© $Oó#‡–Ô¢B¡à2ƒ1d­:Tô ¥¸t=v44Þ©40ŠJô†xÈ÷,7&  î)3êI÷8*8"/3²´>¢MÙîkÛL%±> éŒ€I‡Sâaí ˆi”è!ºÊøÌ5á„;ÿ±CÎNÙŽ Ò%¡nÄ5‘g” à!Md¦¡%@dM4$Qâ¡ÊFI Qâd#û‘k^³ã¨ÉV["Ü€h<ÿµFçì:a4M$0"!D1!ˆ¤Š¡nè“SöäüØ®j!;auò$æ¶Ñ;ŸqÄ`@'âr‘HˆGoœµg,!ŠÏ¢k:¡¯@ngäà$‚j: âMˆ^'r_;A ê“uÂá^GHb>âêÂAº¡‚Á"`\gV¡ f‡²¯ îÄR6"ßÎ%®€:a´Ï%€¦gLŹA &àAbN ø•¨p`®Ò1éÃ/3,…ô«¼¬0L^Çë_زÂF½´ö^ª-P ÓÀ6¨€"HdÚòlF½ÂÐj%HÚ(ÙÂÿÝ–Àäe¥ê+±nïC.'h/ûK?8C 1¬ø@¤äû@âFr4Ïêq‚#mñªÆOQÎ$XÕ9Euúí¦J4mlAQ@¤l2mã$NŒa„bJâ¸Áâ<‚Ѐ`*‚ ¯ z¢\…±¶RàÄè¢)!‚ ¥¢©NtjŠa²!t%© ¼Á!ªõ * j¦‡ˆ4B `·6’!V!V€²DL·duDˆdUä¦SœsZZ‚"ˆ'}v# ü  ÜÀ–\ñà€]BI:!ºÀ¢]¢ !vã¤Å YǺ ¨ÿ1!j¡ $ 4b7˜$j:e ˆ¡Åå@t’éQŠ’A@%Š r $àDQ•¡„@@D'­h€6bžª ¾@â¡Ê®¦ æ¡ ¼¡ ”á îàÚá¼*¡ \M[ø£Oõ‚†Ž--ÓÖ &o¦Ü"æÁ P…M·.ñÜ‘ ÑØà=æßKõÖËa50»Ð½˜/aÀ ï-Íå×À’~ñ¼460JÝÆi6ö%2dæ P€&àntDqD.R7k€ˆ5A$UÂ.¡ V (‰Dä ÁÆÑiŠ!ªÿ@‚r$ô rà 8qV  ª€Ó6·¸Aªàø,c'ÀvÀnB(œ±ªÄõ`i ª€ N”"sÀª øÌ;ã!<À€3A¿¡ „`#%Ú  ¾C²q$`ª@ÌqêªùÐF·@  îÕjˆáb`Å–ä@`ád²2at  á(1m`A áp©r œ¹\¸   ˆ©t  æ¡‚r*d @"⤎à!Db^+Àø  †¹ú>¥™G#p€:€t †Ö:¡à b:Q6Á4a¾!,ÿu .Á¨€Uï`¸Áâ" ‚"³ªôQ2á ö€Ô€L€´Šá Ü ¡fçY‚éÄÀ–taT XáÈNw˜A È!>;àà"Àrâ‰ãa† ô` á âÁd¡daÔ¢ÀèE»Ü’¼"o:ªöTOñ†ûôSô’Cø@<,öª4ø²#÷/ñ*óL›‡ø4£&Џ%“÷<Ïóš3ćv¯7°;2R »Ÿ{6 J-sø´ÔI[¤¶c÷D/H“TöàcP È‚’ÏjòւÈp—!q Jú†šÈ¤ß"5Rcàh` 2·a˜á%ÿ„:  à672Á.!Xv4ï  ` :ä:eb 4BA‚VÁb—:! *Aºà–öõ¸AºAß>᪠p;•ça4àü¦Œ¡ *@àà‹úºGE)†€Â%âáV(V[  Ë=z^ˆ\b\ÂÌ€nâÎ⡾œ“ö€ ƈa#¢ªÀ<ÆD¸ :AæÎ–2ášá¨ÀNŠ¡À L` ˆ‡HX  ¸@*@!¥á¨àa…䪤áàHrQ¸á Z‚ÏÔ`Fÿ I:²^ÀLŠÁ:àâÀ‰W¡4€¦á ÄÎÈ÷@Ú`Í < t@ê¬üÚ€¨`sñ¢€L ‚« `b UM ¤Á^À%g:`Z¡TÎDXŒázfsW¡†`„€àÀ±s;ª€†Á.A _­OJœHŽ5æÆ-.ó‡mýx` _î²`R¾Ö\꾨6kÍ€Ší ÓK±-QPíë‘k^ð%(ÚìÖcüe a^bÞPÙÚ¸ Ïp¿²M~òCÄlˆJUÙ A `ÁªdÅàö@ ”ÿZãÁa ˜A47"Ì|Ú$ˆAê¾¶z¦Ah€5ë`A .Ó¾·†à(#[K Ä€ÖqêÚ@ÄAä è±dÁœà¾÷Ί € Ž@H‚á“ @ ´ (—úÔÀ˜¡ÂÁ üÝìç6-( ÁvRÁ€²¡„B¬Šö X`|d! ZAbÁ¨ ýµ³€æF :@ ¾ÀvMÅÀgëZ ~!Jà@d d!:Mr€¢…náîÄ æˆƒ,c«ŠmšPAB<=bÂMØïQ>”:« Ç5íÿÃQ¬[“y¬´t[å¦S1N]âö±ŽGÝ(më¬Ø§;`VÐïÓªn†\rÐÍÍÁp1ÀÌk2 G·!NÑtÌl”h¼*Ò­V<‘ÛÀp[n•9L2¨Li°)S ¬PïN&!d+§µ2ŒËXÕ¸LµÅ‘'7®v™²äÍŒ«a¶Ü¹²dÊ–1îLísêÐ¥C£Þ¬ÚµiÏ“=§ž]û²nέO6 û7ëÅ´‰óf|öêݯ;_=[vçÏ¢%ç¶ÞÜ5jêÌ«_箽·pñØm«þ¼Lrú2 0ÓÂÜ€ñ{jñÙ3nz~}Z§iQËO -P£µÜÿÑB8ñ„ÓB †Ã 2d@H¡E`I«ÄÃáT…ƒ2"PAÌ4SÌw@À4ÑÉ(N6\ÂI<ÊÀU +ÀÐ*Á4T +ĨÌÁdFÛ£L`HÀ'0 ÀÁL…7Är’d<ÂK|àÖ ‹}|c/‹ã6<±‡0J°ÃÞ±€ uªP‚/¶0‡ ¸¡Ä0E6±ŠÝá àÃhð’;ƒ”{àÃÎp-|JgsPÔ*Ä`–!x&J’Cf†¢cU Ø Ö¨A FP×TD€³øú^3tGT@EªŒB^ñ#°âñ†,rðƒ6L ÄpÍcSŸÒP.7ßyv*ÓÓÌî4õ¼'n CÖq¦1ÄÑLì.óÐøv°;o<3Ü„ŸÈ™ŽuŒ#àLÇÿ Ô¡g>J´†òŸšÉgAeм.6 -p&Úº‘J§4%EÎàsj(=¿À„ŠT¼%(Ä»°ŽMU ¸IR”‰˜AXÂR1à€5|cUJÊ9pÑ"XdWxÄ#*À e@/™E(Ñ…3XPÐ70QŃVÀÅDéD© !ÁL<! 98bÙÀª` ÀbéFª ØlŸÂ/ö0Mzg¸„/Ž…3$sÓ¨‚.‚“„c”ðÄdQ„x¸A{…މ͢„fp>T$Z5|#­è–°‡vìÁóÿ €2Ü ZG°b}sˆaá  €'_ ÇÀ€h°‚ Y…7dÁ [< _ˆÂˆ#ƒÌa¶x¹Šo€¡ žC1Ü èâÐ(ûJÐIa‡+á-œa2Ò—Bñ…=Œ£áø (‹¤LE€ ~ –>=Â?èÂßw@#œxf&Æ5Ì#qäPh#ÌaA›$1´F1úaT¨îÆÑ9  œ0ûŽ@ŒC|ƒÁx<²Æ˜wff; ]ÛÛÔ£ž±É-m¹f[¬;'Ÿôîk¸îætú§GnMC\ØÖ/kÿ˜£žñ7Eó–sI£S“ñ~Œã€O³í9s5bÓ”3•ƒ:ƒC èrSˆ~!H9‹Q‚€s'ˆkx³9¸‚-X4­¡Pã÷ uR¬!;¶A ˰ 0 x! æÓ "2<Ä3òmPà8£$wptÐ Z03âsð)À 0S8°ŽÐ s@ð%~PŽàzQÒy”ð ßð P> ¢U02Ï ²`Á3#Ÿð²@bPH@US1QàUÀsœ7ZB :0p°'E ²Jò%ñÀox`‚g°U =_rÿš ]îó@«ð ¹‡CÒ&Å p Ÿð%”G2ä=©Ç Ð3uRUQñ}W° ˜G—ðÁÀ{qÁ 0àw/á=Ð Mà/3RÅ0°Pµ_pCpî3#Å [DÅpjÀ h¡"1r|À ÃÇyŸ0[àã° JgAÑv¼w0n`N°q03= Å0 «rÙEd'¤—,`eälN @ð  Ÿ¯0|dpmRNp…Âã ŒsÐ Ê8E[2"ÞPs€_s¸ ºñNˆt6SÇ!•ºÖhÿ|vŸög€ UOU ;–jåhV©k™aj"åh¤æ‹v–údQa9j›fQ¬&QU»Ah%jgi•ö–º¦O|I– –F~®––—¶ ¸S@¨Å8TÇSl1!@}qÛ´ Ïtmpæ# ⇠0³ gà¡ù IÆ“\õ@ð …¥JJByñ0!ã™ðÑ-Æ #A1Vìâ>™G×2GÙ±y–XŽ2bUŰ‘Ç#s0sð -° 1J× a3ÝÙ Ú9š¢u°42#«° Ÿ€>ÉyÐ&lž2Â)ÞJ$4{0ÿ°Ô™²ž×!Ç’"1’"Î gð ÀqwàÄ8q3)Rž"xP °´Ÿ_Ò ›à/¢°ô C¡‹"£- W)¢"Óy¢ø|ã€T Ù 34RK:|b¡"«¢A„¢¢"t‚’Ýy¿ƒ_ÔÙuV'ÙÙœyFß} ²Z™PKn  Î5™  H6°#gS4õP}ÖQ74˜Rx™lID“–ºÁ4•¦sæR¼¦ÍqR ¡vš—Z¤AOe\™g 5¨æh¶qQ¢á•‡*§{ R"Õ—Ÿ!kbƒk¸‚è8ˆ:LôÐP]` @<ÿ4B!Gx<4ò@13 Zdð rÔÁó›wšhb—CñeV§J;¢ µE " ¡ y¸.rxÀÓ¡„%nP„-P €/´É ÓЬñp€} ‚œr š ê _V. dµ2«pÁ ›àì’2^Ƥ_ A#£é=ÀóJ’AÑ;½)ös£ºuãð ï¹ Øiu©nZ¢Ê:Zp qÔmáà Ï7 B± ðh)r † É9Z/ÓÄ.5ª¯Q>{-ã¹ y{I%£qt,™Ð +ô2µÙ¬RX3¯êlÿ÷ I¥a2òȹ 2*±¯7#Ñ—I}^ rà>ÊpppuÓ”¢P¸S9³:té_suk¶–Y7ÈæÇ·*X4§“9€[7RsSo“¸£9‚«¸jƒ·PÓ5*èˆ6˜~œÚ‚›Û©tÓ7„³~¥k€˜¸+‚”ƒºœË6S–-j 5hŒF€©AË0e°;!b™ ÁÀ£<4 Òê…zÅI5°ì&£*RH %*£á@¯ÔknbÈZ ÑÂÑøà›œ"»‹Ò(<Ç%yUµÄq¤ª T ’$1ó@Ç&µüµª Ò;×ÅÄÝùÄš%7ª"ûz½Ñ;â瀫©-¥—(E~e§kYP,ÅÆp:2…SˆVQˆªŒº¨‹jPÝa»¯qPo:;USü”ƒªö•U™gw¦iuI©€lµP:˜Ç®Æ4¾±¦e—Œƒz|•ICª½& ÿ0ð ­ÄÄsl¿Ã 1r ²„¬I#×¼ ² ÜV›‡’Tݵ™Å}2kA›P …ä-™Ër¬¿ô‹Ìò¼ ÈŒ%å²ÏK,<Èõ 3"¬Jò=·9Ï$Ä#×Ð}a Ìåsý«I>©Í÷Ê!Í%V×™b¬#:’ÌÉDÁ’5˜!4ÿ{™—¬˜”ЧXùÉv)isÚÉXi§ö•vüiЧxÙÇrŠ»g=·ŽÊg¬“¨È±:<•ƒ|¨;8©pºOkÍb—iy˜ƒiÇ·ÑQ19†[ºˆ¹¨û”’³µƒYÍ œ×8íª-@¼©ZOü;®3’œ¢ª©J#«@„± 3©HÁ±› ò›',ÀÈT–mÍÑX„0ãÙ°lÇÚ¬=°RL.À9°ÄcÅR‘32Ï2²ÄÄãûÜ*ÍÜEK!¶]ÂZì…¡]³È ÚÊÝÜ*ÚàýÒ ÞåíåÄcÙ;ÓF›½Ù«Â­š<ÑèÙ× Å7\ÀÎÍÄÿ´ŒÎ¶M.ÉÙ;€dÅÆ g ¡fÇ–;5š£ 8‚)ÈØë§àis€]³7!ȸ—ËØ0¨·P7¸}›º ¸€z;&è¹j<âH€©c8—KáWƒá`ãá¤s©Î7íAâÈáOã¸Æ"Ž@þž:–›€Þ¹~ÌÏQ§h™É£ìƒ\C O@ ¿ç Òl< r„ÆC!³¬¼ŸÛm<©Ë^†ÛCøÙ=-rl˜ËÆ­¼®üª^þ;Ð å:!J<ÖYßã9æÈV!-èÚ»Ù£Î뫜Ð=VÜèß­ÒqAËÉ9Ýé]ݱ-è¢ ÎåÅFËq:VqTHÿPGÝK<¾©! ÝÉi'ý;ê3]¼•.rá0!5+Û÷V!D…êÖÅÅK#QÂøy£ÅÝÑ@EÜ•Saª6…SÕDZR‰F••¦jc½R†&•cyi¯Æ¦“jíc=QÿT–ÕØt¼gš å95ØRPdíÕZ˜ð.•,Ö‚Æ—‹úR Eöô•­fÖØÞäzIiš·5 0å”ð8°å^Žd lë¢éÙÐ7[²„ÒÂ5;™óÍæº<ÃcÜõí;˜ýë æÂëCxÅÈË¿-ælÎ 2ë‚òŸýŠy%#¾ÞÞÎìí]ÀÊÝó Â>?ê8ìGÅ.À"èÔ;ÿÿߎ^´/³qE_´@oÞŸN¿è騾õCÝíÚÎL!SlëªJ¿¾êÞêÿõÑÛõlž§z<Ÿ|Õ{-§}J§ãQu:Ø«ö|z•ùNîÇÁ¨ž†øpÌÈ•ic‰PošQiÊø…šÈŠ?§u-ÈøôÙhpŒ¨Eƒzœ|ú9˜kä©ûû·íaâ.ÈR e°”Ý!”Yl ï…JÜEµéLO„ÅsÁEhü?è±üð RV´Îö(™Wÿ1³çÇ3!q‡Ì2á6…8áà„p:œ ì!Ãpw6„èÇ&;JÌèPbC!/ŠD’¡D– 1Š,¨ìâ-µPfÓæƒ%eFª$K’áJŠ wQfÒ¤2Ë<­V ¨§U£B­Z¦µj´¢6(C ¬Ø§^É–Ûµ¬ÖeÕÔ¾¥ÅlZZç¶U{¶-Z®^»Fõ[mرw³u»woƒ¾v×–Qu1á²r“íÚwë\Æjùzžëõ³àÐZE‹žL×1èÇ‚ãfö\—ìÙ×͆–œ{´é²‡«áÅøiZÁ{Ik¦ûÕêS®YÃ^Ý µùV·X³FÅžuáeÿÝ©Q‚åÐàÍ¥—’±Ø"Άo’‘9Žû¤4qÖla_™› ùms¾¤l2¯¦œrZÏ(£î“I&ɳɛ&p£&šÖka>™´è"¦,*!¦ê±¾U*šÀ"¤Œ1EGéĈXš1¨mtHÆU ©Š^BñG¦Ü;hD†àS)$}œ€I#êˆÇ$§ï¡‹>Šè$’B:ê§¡Ú„ ¤6Ùd ôô©•Ž’Ƈº *¤‚6Ù0)ô˜ì)k¨Â®®ßûóªë®£F+Bµâ*:A¡³®Q벃*:çmîQ«¨³T+I µjºìª£T¬Õ´RI±+”ÔC¥cÿÕåJEtÑTgu+ÑDÅ”Sêdí4ÒH %REG–S`?E”Ód[LW_ÅZJ—•´®0 … lËxâ•UÈdH ê+Ȧ˜n"oÀx˜BS™ƒ‚©i]eb"3v›ÂoÞ z0xkBHL÷æ-ßûÖeàrê)&üv:³"2î1)Š:t莉"j‘KŒŒúI$8‘RÆKˆÂ)¦¡”—ôÑ"÷µx“qŒÈÝ0ɤñ¨pj9"^¢rx>*¥ÃÙ1IQZº¥!¢“¢‘úkÐ@÷ˆÌhꥳޒdz„8œ™™Rf¹©²š.ÓXm4ZM}];×VŸ£{í¸ ÝÿµRcU6ª´-õ;pe'•»ïºÿ&5»[¥CÙ·oÜYCMÍ”oèÒVuQ¸ñ~õÓé0·<òêrý;ÖÑc½2ÕªÁ-¹Ø6.v× Ý®.Z>˜á‰V9oÀò¼á3i1=6ì°)£ŠÌéA uR@ô¬§A,1y;iÚ°ê„kª°¢~Í5OA÷Ƴs)—+êðŽyw(¼FK.ªh)=–å—+JYŠ~4äN£ˆBºT²85 hA«D’6 ŠOÊZÖ´†”ýeD@ iÈ— ½ÌhLÉ—‚æ  ]¬brΞú*Í æ/bÙŠYŽ“'×øfÿ‡iI gxsÃÓ §PBü `Üâ§íŠ4Fä M£œÑl&‡¾ÙNr¨qš%æ0v±áMpEÕìfu=4#i¼Æ<‘-adbbz³ÅÔ‘1f¼££øÃBùI‡_Ž¡è§Â)ªX|Û©ŠE·?1-Ë 5V±#-è&ǃžƒF”<œœoDÑÔ“”õ¤Aùa—zìS“˜L ]¹IØ8‰tò>«È—Qî4JèUr)i¢eE’2Áà©()™L*8#eði]Y2¥t\jì™.¦0«¤I%Д a—Â$”=pJ8sÄ’0-m™BÙ3»ƒœë“6ÿ‘ , 6Z„KT!Pr¶µ€‹NçjAo¤B•¬¼Æ¡ÍYdçÜÆ8ºA´†ƒ›”Þhh8çÎtokTªÐ9GbE£r‹ãr5:`}R•ÛDI7ÊE ¢s;Euå6—†Åpz›”N5Ñb)£œ“Üã**¸ÒqNX±]ÄÒ q…TKAè Ûªøš§â™^K߃¸W®xØK“롞ø !Qæd@þiž2¨çÉKŠuH;Møã²ö}d$ÊÇx„LáOž‡e`ý„YXŽS˜¥Iû…¹kd+yHÊ4¦Â¤½SžBóÙ ·Ï’lV“ÿ»FT2 Ä û3Jõ7?Çf©yëùå&j QɰT¢S;w(ì„£6Ýà Ù«•Öê¨ÓÕœ«·Ó¶¥ŠW–[ds½ËªŽ:*‘ÚÅ•H;:,ÇuÔ»§Õ¯ðvQð&K¼‰CÜã¢[Þèç/eäbrl¨Æ-¾ñ3ƒã2ÀòL¸OêFO<5drX×Fv}cm–Nn¦ˆœÛ­^ŠD}`‹´XÆÂp…EMDœíW‡fF‘ s>Zzè4!õ ˆ@ëZ× Lå]-À6S`âM¬^mM €* \›(Ç:)[«g å¤Þ`…wºÏMe†¬Kc>"ƒü”![L)8¶ØO¶ôÌÕgÇ©wðØWŒÿU@¹?7‰|6”îÜÖ«'áDɸy7IûhK-ÙÑiåY,"QK-›fDñø!¹dQ[ÈC">ù©!/dÈÍJëÛ匂h¦$¼íÚ`„{uÜRµ—]½—]~OE_X]´¦´ªÊ±È˪«œT¿öM›Ü çÔð6u»Ï¥©tE*¬’ö½VÖEdLíë·`Õ ¦³{x¡cS¶1 í;|àË®«cé=îÙ#5¨A€)D{R‘6 ¸!eRF×ÿso2ð‡ëýѺ^ƒ1w¥|]×kD"Œ×ßÄ d‚Šá®8>Ã÷Nøã†NÄc›¨‰qÒu…Àÿ+öì³H1‚q0¬ÂõžƒüÖu”Kè npüp…xÔ"åd¨÷Â!¿‰MÀ F9™¨…ƒ‹2‰‡09@ ái  ‘ƒx¨¾ý—b¸&K¦p(‚ t‚z³¿q(†ô£æë„<Š0ŠN ¾O(†bè„NØN0ŠxÀN¨‘Z 1Ae¨ e‘ÀA‡ÐÁ œ¸œ£¸N¨AÄ31à'äÁ‰ƒZ°A‚Ÿnèn`º—©…nà†¢ÁÁnP†b؈ˆà-l¢Ã`B¬¾N(è†x8@ƒƒƒpp½xàœ³‰»´H¤¹HªQ©;F¹ÿ•Å!œAJDFª›*̪½9œì2œ•"–D$<èªWYFt;¦J©ÇYœÉ3/)ÎI”eC)ÎS©ø²¨AYœZŒÄ[S¢¼ø4Öùµ: ώ‹‹eƒ·úñ8¦kA ƒZøÁˆ«…¨€`ÀÁ*œˆ;¨€"Há5À†x¿õ¨9ð†ÿ›—zÛ„ ð†h¬¿Ÿ€o`&ùq‚ðû#¥b¸Ç à1:Ù„U`#†å» €t8¡õË#èÀýë`Pƒ#á  p€üˆ‡6Ø|½u)>p‰[?x„Hù9h>¨ÿ¥˜?@„ ¸!œ€i@„-°¦ˆ‡Pƒ6Àš “(ÐipˆÐfØ‘Zø-Ѐ-`&†dˆ8§UÀ ¸{šKÐD€Áôf8À`ˆZhƒ m˜8‰ðX DPÈ8‚Ѓ& º‰s€ƒiHšx €d€‚(€AøÀ8ø0€›kˆ(˜ 0”¸0Ðb`õÙ†C‚mŸå+/0€KhA €C˜!èº +†(8„Vèö ‡iÐ!ˆƒi ‰…jDéÐ!UË¢'bHbÃŒ&j"?$*;*¢ÿºÎÇ@¢Tÿ°¯8¢>š#æœN2Ž$:#2Ê##""ØqαS¢6ú `<"…ÊNéd5Aj¤"²£ðÔNó\#éT¨îlµ)²¡Éˆ(Åû;檔ÏADñ £†0¸ ³+‹%³&ŠìG°…#èœØ„`ˆGy±‰#ð€8H?l x0ø˜@¥½’ˆU耘D¨7w)‚8ƒvˆtÛK†×›‘N8„Kˆù½ˆ€* )˜ùqƒЃ0;膑¨(ÐM€é§JÈDè‹Éø*xs½¸„è„;è85°„+õ— °„KÐGè†ýkÿr8Ì#°ˆxø„-p„J@Šk¦NЃ(ˆË‹ƒJ° è„ã[…Nð„" ‡f¢x@J¨šƒW¸Lð½ò-(G¡ÁÁVÐ p€†‹o9D@GtD„K†8ƒ%¥&H€C€9¨oxK€’Nx ØYø01€l¸X`ÂhdR1¸„hà™8‚*X…0eèXð8€‚åÃÃ`… À„GÐ×;hØXˆIt¼ƒG`9@à‰Z˜0Ø hƒO(,E„o`o€ƒxp8ƒÈ€+ˆ;ô—p„Oh…&€+Z(Âɵ¿ ÿè‚/Àø…ÔSD ö››bƒLU†O@Ç`p3 W`²ÙLè†C€ƒX—Ux†#ÿƒ€aA„*Yhƒu!®b »æj"óbé;¼ƒ)Ëë®ù:.¼SŸñœDR*R¯ <»•aé-/GÑ®YÁRÆ.³S¯MQª¡rDµªìê<ê’夅¯Ãë›Zã5'jµJ5è,븾0F²T’˜˜~ëA™i.P‡GÐÊ Ý=(Uƒ8ÀGp9p„"¨ pƒ\`*hƒýkApcØ" ½U0Ö5X׬°U]†ê³CȆ5h'¼ƒO˜‡=¸„Kè”!=(Y8‚ò;À8H€n :¼[=oh¦«…;0‚KØ@Gþè]Xÿ+¦ã63ÖD° xV¼;È„k]… Gà–dºUÀS5ƒGH†HÈ hf8&vŸxƒg0^àØó€5à!¸Ã˜ƒ ð„‰…ËUÁ(ÈcÞÑÕo؃$6à@„V8G`Ù‰+†àƒ=ˆ†#ˆƒ»æ„bÈЦ„nèn`L ô„0M8@ÆŒ‡8(#øŠ#€ÐN`Y(‚¿€qð€˜ðã†Áufäq8€#…38„qØ—ž‡W†B˜¤¶ºYX% †OÔ# nÐÔ˜;Po@„. ÝžÌ9 †¸Ãà)èÿMXý›†=˜V˜ƒ) ¬‚+°dà_D?ƒèÀ ËxOMã5¢4BûE];£µÀ _óE½°Nî¤Ö”86%: KC5,¢¢K;µŸ£KûOôlfI;Œ\ËÎël ýNý¦o.zpÃÐï`ÜN_”¢ï”*§N¦¯¹ƒeZlÚ\i[î(S:â9àªõeŸuAgVÀ X ¾8Ð…L ‡p™M ;èƒo8€÷à ˆ€9XîK˜‚QHgâÓ+Gx @^…"°) ‡è @JP!€Á í„^@0@OpG@ÙŽÝ¿q° ð…èÿÒ»ƒ°VXƒ Ðù90ÈXàŸþ@˜í`9È…_ÐS˜¤;¸Wø5î+žbÐh8'ËŸn‡!ø;ò;À(xK^’ë!XVˆAþ½`èSð„GˆàþøH‚^È&kq€ƒK`…)N_nÐ….(y»ƒWЖýéÛ<J8D™`€¨N¸°ž€ˆ=°*£¦„8ð„8 €bˆö Ð!ˆèU°*eh‚€†{^¿p`…0ØU¾pèb°-ûÃ%cøOÐQ¿# ‚V…9ÀàÙJ0øK¸Ã Èÿ7¸*ð îýó†Â>‚ZX·†ˆyOˆ‚OHÈ2ÿyø?È„õ¸'0Sƒn¨Ðp¸‚G0VV¨‰¯+£IŽ¢7 À æ¤ ÅÊ#ûRe¿;ÎTŽ©Î;¸-é­XvÕ´ˆ]´x7ŒÞÉøb‹;jxÔÌHMÔXs™2-´N dŽ“á(e8w°t×*Ÿ„‘Í#LÉL&«œ¡AwL°A<™ì%K<-ˆÅÑ(¼‚Ã4áO7¯ÄQP8¬1‡”|â†2ɱÿ‡)+à°ŠhucD+ݬm=k\A!£J•F ß® @’ $Ê%.l’ȸ¦ÓÄ u[2mBC$2ÅÛp­Bâ˜K·ÝÅR¼ ®Ä˜ˆA¸Sð7- hŘÈAI”ä_Òy‹·¨™„Y¿1^BÿT‰`Bxƒ´ÙMi•Š7|K C%D7D€ðOtD€µLC44APD'4A °"Ä&”€ŒuÁ;UÀ7ðÁ΃´@7˜¢18 tLùAB7@8fHƒÄA XK4^ 7ÐÀ*ªÌ \B¬I„ƒ1èÁÌa™+¼I>T%T$ÄmÃ9¿Ä6A (Ù¢°‰€,Ð8CtÔ«]pœ@20ÃJº ŒÀ6`Bq3x+°@+F1T€-À&°Â0Å*L3ˆTK…CªÿúAœPICˆA4¨'DY0ÄÚ$ÃdJfM7˜&TBoŒÃ# %p‚F0èA%¨ÁdÖ6Ø+´ƒ Ø*ƒ7PB7ÈpÀC%f0tÁ€ÆC|ÈAEÈÁ±À!¨AáeÖ¨Á3È7R0Èx`ÄÝ6¬"øAÿjƒˆñÁS0Ö7|ÈÁR@ƒˆ~œ@AŒQ†rƒdC\ÂŽE2tB4dC— J- ƒtJ f0ˆìA/ÈÂ6`J<Áõ²‚,@—Pb‚7˜‚*ŠÁ#$u½7ƒ¸( Û 6ðKCʃèÁFƒµ  Œ@ÀÂ< œA%A0C%¼ ~~9SÆÃpƒ%L$vì.`€p %¬° œÁÌ# @+ 7…¡P7`CœI&tBxC71YgYqu.›%'.þš4^±Ùbx3#;Ö·wk')Ÿ÷y[{,g,§Zwc¯9£¬…·¥ íð Žú Î³ñÎéYcäT1'B\ƽÝöúܸ)ÉlŒ& ²J8@XzŃ”œ¹xC¤SߢEtÁu ÊNŠ‚õp¡EKø1  “¬‚'8œ¤Ü8XÁÀÂÄL‰´‚ @4Ã6 ÄE €VûLA6ओ¢œÁ<ÿk$ЬÂûV€Q éÒ6Ä+Z|‚pC+xCa´D1\±’ðmwÂ<œt'ÌÁQ4Á#ìƒ4ÃØK'h@' ÀÃNpÄ# ‚ÔÔÙRd°ÙÈŒ±Ób…káÅÃ;!‚|Cg‚2\‚1Œ&xä*0ËŸ €&´Ê ÂD(l- Ð*<Â6¬ 4TDdÀøA&˜‚op‚,&|ƒ+ À'È<Â!| 4E\'°C)éBœA<ødƒ&€V‡LA.üÂ#̃ à€d@€%ü‚´‚½ô ðÁ7ƒ&Hå4ÃùnÃÚžÄÃHÀÿ@¿t¤W ",ÅfB,GUÄ4Á<à ETÂ0x@eC  ×z즦ŕò¡"×çõíñ8ÍÒ"ê…_ñÑ÷!²õœßöuO}>ÛïlŸÌºüÐëˆtàHLѼ„‡Oé‰_î¡ëEßó õß/wìùÕ§Xß÷qNôßði_ÌÒ<ÑkOÓ§)›r*‡çp"§üy,Ã2<´@Vä½5 A­Ò†œW€¬â·H¡<× ­F|‹Ïæ”øÁ ø˜ráÀHƒTÁLɵXzÕÝ– ‚€ŽÃ´sˆAiƒD£€ Àu%b8TÀBW`AÿtÁþª~ Æ€7à(Cà€ƒ€'\Á»Qát7T™ì»0C&Æ&°@'Tð`7Á*$Ã<( ÌÀÁ7°&@›ÉA;œÐ%¤0f‘»'tƒô/²Äƒ,TÙ%LƒŒ@´Ù2ÁR…ŸV±êRŒ›0Å2…SÃ§Ó DÄäLèöcš=[M˜VL‹"[(ÝQ¹å™´xT¦ä8ÀB–V`,Qú„CVY—lÉú²*ØûsóÒË+ž\·vóÓχ'Ž^9{òô­S¿ :üöîÛ8ù˜“Ž?ÞŽï¾é лç¾û>ZTk  ia·Û¨±&?&8 Â çŽ ÂQ¦Ä[P¦ÝháGŠqƒÄ ÆyD‚âQ)ž ¼ùÂ Š™@™[ã'@-žô¦+eâ '*L&Q›`ÿž ªd1=Èqb‚+â‰gœ6 袓âi¡“-:ñà 6I3œ`VঠâY%cœ(€.´Ìl cr¨¤‚ &¸ã“(Š™CˆT §**xD‡@Ãùd1ŽèŽ4ÉØd‹iàÈáH)k•“fä8ñi†¹c -qf V¶©€’%ÃY%*Á¡H'¨à’(8Û"‡bÂé„mÚèÂbâñ£DŠQ†˜ãi#ŠÓ¶h£„pâq€‚icÛU”9‘iüØÆÉ °ˆ`‚5¼¹£˜`üXc‡ Ô X?Tš#iXâ?Έ§› ZB8]?2‰g 4Ç!8ÿȼ ¦˜UŠh‚…;*XâŽUVQGxŠˆàѽ£9‚¡²VŽÇ› >iÒ›5&(â4‰Z‡m–œ Èp˜VfšbU:"Ž+PFØ(,Ú×Þð7ÕöcÐ=o+Ð9Öö{ï@ãLð»ß^¾Õâ®»é ϯ?Åœ¹»Åë;ðǵc.ïßâvNó1w<ò·ÿîîoÍ×Ûp¾·KpñÎW· k³ÎÂj,,£v ©©=mZnËM÷ç†k`ËX†šeŒ‰gï01Å Z§E£oÛ–çd„ˆv2?šÀ:!‡<7“TÂõ£`pcë„ó4<ãp!ý„xDÿÍï€\Q86jæáèb&61Ž4u‚JÜF'ºâ¾`ˆ„ƒñ¨€ï Ábèwp‘>Q¥¦ý¨]a×–)ÿ5­I›XE¤€51f4ý«’ÿ´è†Zp+«˜Æîw7¬±JUªÅŒq³²Dª=¼ š¤°NÄ)ŽD_óØÿ•A(f/ƒï«Ýj\3â©'m¶y]îf3›éÐæB±©Ðn(Tá)s:¢†ll×;Ý4@7»«æ4ѶšÜ /šÝ„æï^§Ì`âF˜ä4ç2¿©Íl’ӛ،æ/o§Ík>S¯»<‹Ngö™ótæì ¹Ï؉óUg1i»qÓ6í&3ïIІÞn7 ýgm*šQ…n”š½݇œåÔ-:êqP0mC‹0Xh´¸:Vñ8ÁI(jÁM[D†šºá~›¸CôÂQBM…âS^Š¢¦±«D T‘ÙÂ4SœÂ PLmhĈS5á(˜ŒS‰îWB7°k+²éVÔÉÿ²¦©­”žÉ§›ŠÐyB»šÄ=²®¨¬W4ÒRT#þ¡¬5UÆþäwT:¯DaZkY}zE¼r«©b”^ôPäÓq@o³’U^ã§'¹æé±Ôjk•Vq"1Ž#blÆQŒŒã1s˜m‰XKÛ`´à ­mÒZ‘6Z¯™ˆ1#Y³.vE'ÚDD"µÙÿY¯yŸ°ž¦X+[çËÃ,ÿè÷Öp@gm½¹(<ç–’zn=rÞBÇ Ç¹'në}o{ 7·©n¿#ÏèÜ»·¼í'o‘«Û€§ßÃ9®ou|ºÿÀó…/ÞW7ÕX@—3ÞD:8+ÿ˜rÖ%lZÎÞ8Î *®pU2ðÊSmN]ÔVçE }W]ªŠ Ë¡&´f»bMÃK2à4F8ä8b<ŽnÜoã˜-l0+â~UjA Üà8±ë~t®)çeŠÍ“­˜ª÷Ö¯6–]@•÷f^þÁ‰¨LbV Áû<&pÐÌZ®ž›JhW¹@e­‰{E!ÃrÐ%ZER·tÜÖnÚÊj/k*=+Ïö«‘æt 7]V+—è ¹m+N¡+Y!oi°+ânkÛMï·­½mvµl<+•×ãåM.»á“rŽÃÙ‘ï~Kj·óŒBj°{©íîP»Aÿ"σð#¡h—®tÐwu(wbü·<«oƒÛí ·5ç£ò6i„ù#ßjg9ÙèEóI›_î36ÁT(;±!rbè °Æ)°¡¥›viOpú©‹Pk"•4oã7ƒ´JT”©#qüF>RŠèr#yY«‰žÿ u$‹©YX†p¶ Ÿ ¬H^'àP oDmèª7pÔ£6o¼¦>R.,š©ˆ—äuÕ8ÿ|¤ÌNÚ¬Í[ý(ñª™ã&ê¡…;ëL©d³sX»J¨åÇL=Šã(;ÙÏÎqܰ†-yÌóH™­ä(/ ayÜôš)ð‹7³jzÈ…¸/ÿ–‰©¢ >°F"ûâú ~ôÌ‚T MùЛ mª)oåQÞmˆ¸³}ìò9{Ù“÷…ÝFuß; ÿàÛ,8Ds³;uö^v­?¸îŒÑÚ-3ž7&;ªnnÿ÷Ï>ð¥iδ-“û¹Ïfñš‰âóW_ù÷DèíÑ[{ÜOÿ˜èUhBËïËÙƒówõžöâì<çÄ8§™bcxÖÒ¤JâŠ~ÌFóJNR+åŽäHRˇ$ä.^¾.ë6.µL¤K®GŒ,NP£Ä€^V©W”¡)%R`@ä@Ö ZaðÂv@V¡>à`da:^fÿóÌæë8P/#ð¥ðC¯ é…ðœp ¯Pof #Y$OÇ.RRîèE ÍðDpæfpÆó®ð ð ¿Coóì §P ¯ïÏ ñP g–0óòаÚ«RÌð•ð3ï ¯P«0± 3ÃHp`çðq€Ã5zƒ›’Iàœés"$=¬#ÙÄÜJj]‡Ù ÇÛ¬Ú$dÂ>ìMªÀæc@øku©o²­Þ þM=ÎmßRg—t‘pÞf–mñë£àMÂ’ÍÀ”qn&=ú¦ÞÔÍÞ&j™ CÐf7–á@ ’G¯ŠÒê↬äš'ÿä–ªìô®+º¢GzdíqͪäDld†ŠaX¢âaø ¦ ’$Кa A> °΀dádaÄ Jà:aŠ ô°X¤° Q %Ñóo%û&iò iRðO ÍóB¯XjòÇo&kò&¿îñV¯(ñð¦'#/&W&;ñˆÒUï )1(k)y2órò+•YP2æò©b. =/m\ï5¾ƒEgÁ*çA*ì8@û>¬¬‹ JÈ¢*©,n®”J¯$ËÆZ@âÄë²ÂË΋ȪdNX `Á¤ Aâ eøLAz`zArÁ ðbd!ž@æ œeÜ ’[¦ä6 „&À6åjª˜jE0«Ò\„yPm ÿêÕn ÈL¯€Â‹¨ ?j̔ˬ ÔÔMóô õjjžjÌ nªæŒ°\­yí²´hâF-­f ¨fkƒ–A5%ÑŽŒ, ”E¨…AËJkl EâÎ΋°RÐPíE7m’ãõVço&Jšºivˆ)ÿùêŸâ¡é4õ/ýª/ôÉà”¢Â±öªiý~¯ú,*ýîHk£à ÊÚœHÑLÁtHËÔv¢ÏHßŸŠ ÎTšŠýÈÔKÊ÷r皊t¡ºtL..“Qt®Ã>f‡5 JárC8h`nA ŽÀL¨„~vkª”aÉ€ÓÆðs8EÈ>ç 8ÃaÉøGK8h·6AXá $`* ´¢ œ MºA\Á¡*àP€¨!árázàæ €a ´¬ô HfËÊxJŒÜ@Z£lD™,Ø´õ¦¬lÔ´,Z»µð,Ƹ5Z/+\K•z¢‡ ŠÁ6“ Gpäÿ[Ãõ[«[¿µ\³Ê^GTËÎNBôÆ~mÉìU®bkâ´Š[Y$N²\6ÏäŠ`Oµ~asMSnjÉ`‹[µ,A÷u¦æubWíÑ`ˆƒúJzNT²rË^a ¶Æë;Íž‚ö2Äü£.×­@HJI,¿¸ƒu< Áä’1ó2.å†?ü/AÂCÝfgI쿌ñi'3‡nÓýc0í£j S/A¬½õÚö&tBªu¶–Þ Ã( wgv¢/6êR?`5P¡1jÈÏ‚“d•!p,@u ?Gõ²nê~HÔÆv® ‡DÐ v€V ¨À ºàŽ@VÀÎÀ‚âdâÿ ÆY?Aª  Ž`.¡œ@ ˆá) Ò‚*€§xê—§È`“xª>cÌá„wÓ„vãU×׊S‰RoæE|3ÔšçdQÈŠ©ÐJzºŒ­h¦L°Î:É8ßÊa·&À¶Äkå‹°2zäÓ¦æÑÐÎʸ¸‡}ý G4¼|·TµæÑ ç­Ö×x‰*{ùêÏ”H‹–gB•¨E”¨úJ‰¨… à÷ €4ÝæmeÑ;JŒtRQA>§ÙnvrÒ#¾N ö¸ GÊÀˆ§Ä@êƒSç¡mtP‘$i¿ö!LB"ç?¶ÛäC:grÄm>ä+öd9Ò‰£4ªÿ£æ¶ô8j§8rãu’iá •>¬° Œá \è:Z ]¬·w׬ìîlâH$ÁX\ãaÐdDpm¤p†Ëja¬òJV¡dìêfp ašB~$MZªP#o…ðª¿ú ÊšªÇZ«»º¶šªÃ€ ¸Ä€ J€>à Vá J`€Vá Âà V΀J ®¹èÎàœ; {$› Ø€0;ÿ³ û² À²%›²=Û³3û²C»´M»<;±E;±Y›³5ûµa;¶ € h»¶i³m{¶3Û¶å€ öá·÷¡·ƒ¸å@€¸9@˜`  ¹Ñ¤û¹;º ºY€ ûº—Àº³›8ÀÀ{¼³›¾{¼Ñ›²@¼³à¼“¼½! ä;¼Á; Â[¾ñ{ô{²`¿ý» °À¿ý[Fá@ @` 2€Á|°ÂàXŒàбàGÙ¦öŠøP©±‚í‡c„›ÃoîíÜt8ö¨öÙÝ>œ…/Li1Äô.ñËÄ9,¤d¤´1¾|ügÿÄ£ÍÇ „oxñ7Ç…ïfÅ Û–ö>|IppcXS-;ê;"µ€f€‚ÀŽ!„”àÌ ’@ J!N ÞáÔ@ @ bÖœbaÏïüð<’ ì|ÏKaÐO JabÐc! ð|ØJH¡ÒÎKAÓ/ý¼àHÔá< .aÓ“`ÓUÎIá*ýÒßáÓß^½ÒmÝÒ%ýZÝ ¼ÀTÁ×Uá××mÀŽ×‘½×‹Ý¼€’@×yÝÙ‰½×U!–=‚}Û¹½Û¹="al ‚Û·=ÐÝÁaÝÙ}ÿÝœAÞýÝÇÀRÁÆ RÆ` ðàÆàPø½ßû½àû}ßS!áóÝàõßSA ~áã],þâ1^ÀÁâeÝU 4>äÕÁâ+>Þí}â Þà~á >ßñÝL>@P!ã1>åý}àÏÁå]~PË ƒÓK3sÁ¢–Ùv6ßT¼pSÛx¶1“gIʾ ¶Å68$Ó9Ê6ÃækkL½„„[géëÄ’œÜœ>íQq5ù—Àèfv ýJÓz¤ñé¡}zx€úmÔ²7¨‰gA;j j `ñ_ñ?ñk€Ÿñx!ñ-?ÿò/ñ%ß ßñg¡óÿó'?ñgÁñ/ßóaJÿóË ¿Rßʇº J¿ðmðCÿö]¨e¨«¡ô Ÿ÷ß÷­\õŸöÿõk€öeŸößÊ¿£÷ÿ6†Ÿö­¿ù«¿ùóMÛ"äïÙË7nuúƒQíI@¼¿tâ6^ó§ÕKžõBvωŸ©uü»ŸCœx ƒ:ni h•¡E«Ú‡je&D*a5je*D(±Ú2„Ë4€(Ðb5Õ:¤Ö ¡ÀO–Ôq#Ë—WŠü˜±ãEebL™°ÆŸ!#.J³§P“]n Jòç@š9S&¥ô¥Î§Zÿ4ú”¤T¯!ެ95èV”YÃn5;Ö$R¯he…«’ªM·8±ž)5nK»b%Nt(ø#ÄÂ'J¤ªðÉË̪VÒlÊY‰)J5™s C‹ŽvYÉÓ lPP Ï‚¨O·NrÁ×i 5}ÐuзmÏ EÍ5`œ¾5'å93k^剟gžºåŠ‘)Ƚ ÷ˆÚ-—lÝZmtëÔÓ‡Íì]jØò‰‡^_ÿ^sÆìÁ?]y$ÍYÍÄ—vRuÄp!eTTו'ßl•aMCËuU\ç Æ]EÆØwŒ%Q‡‚eâw }HU‰""ôaŠƒEG]a#âÇbÿE!’Øbc¹ˆØŽ,æ¢C9ò¨¡Œˆ}âŽHÑŠ9ªHd>FHÑ’S>YåŽEj)cEj¦Ÿ–e¼h¥W9ŸrM‘O}¡tÖI'I&Y5˜ñYb“!ä&‹ÓEا~bî#~V"Z¨`å=樘¢‡”^šõ)¨rô!6¨CÞiÖŸSЩ7Ð,´t–)e{–„êd®Þ·æ£Ô݇¨Ö‘%Ь¶f„«E¶ÒrøÅd%|àÉÊf²ÕXCjo;%4a‡ ×COÆh"™„Uk£™F–H‘ß&ã‘ç½8n¶Øú .¶(.ÊnㆵcÂ[-aðö˜a»6âÿ˜ˆ–º.Àfo¿ œ­•/ ž’MêX”UU¥”Vò åO;åŠYž˜AGò,5HææœÖ´ì2èù©Ây‚¨ªªò©³zWšÊæG•-;›u6* §r•e–ç{“›*EŸÎ§Ò{~Ê)J¾Òò®Ö•üi›¸ÎH]ÉÓ‘¬óÒùad¶×ŠÚø³wò]™h±•*vo¨·ØýÑŠCâ¢ëb߬ÂuÓ¨eÜÔ‘\ë V°‡ÛÅ_O™¹S#É•x…+U¦8O˜bu¹…îÕÔWç KùR¨³¤ñ[ÆÎ1T•gô9Z'ÝtøìÎí:êUíÅ9èÍ-Ž—æÄ…t\æòúYfÿÂþž›n¢Îkkd‡<Ò²ÖÀŒý÷Ö_/þøä—OhÅå§þ¹ë§_=øâ'¼>ôáÖ/½ûíŸO(ô?¶þꃟû¾ç?ë•hZé\Æ d@Å ÌIH’’röe.ú™¨gâÖ” h/ ¨y÷›×õ蕦Ú/zúXàˆtÁ ©KÑ¥Xè%)•i^ë"à‰dX©> ]çRQŸ4œ&rl‰ð£’¾l¯ehè^W•RõíW>Ë¢˜€g+Ä(.ZiÎ KU(.^jŒZl”¿,%?u­®V\izæØ3â®nü!¡ÓD³è«†3lÑ „Æ,:‡paˆúvX¥ÿ^0`[Ú“Å?0U G—lÞ†hT¯çEÈ’‰åô²$ɉe’Cê‚$™@ÔIù­R””t¥»:Ù¢¢ {¨t›“|ÔIGîR^(žî¢8§QEvXÉW2ù¾Æœ$„Ÿ‰¢4»g˜I/Zñc"^|‡»mâe€„Z4!å–à•“›0zžD|gÎnÞŒ½ó¦G6': fS|ÜÌç6(&Ó¡„-“Ü7Ñr“.míM[ ]ÚĬ,T/½§´@‘@þëA]‹J¦rÈs–.d»KÙ’8J Á ÌY熒ciñØÆBg¬yΤ8=iI`þ“’v¥-ÊçVjR×1ÿÏ*Ñ‚[_ŽÚ:áÅE‰Ë©9×"SÐ9/–íR!‰B4¬göˆ“«”WÙjNfcõ"W®™Æ=‚LWŽìÇÆôRCjÅ£!©w¤V>*àCÜøÜj©¬ P¯!¤ßÛHËýu+pt¼^¹ú•³ ŠœHOSjOÍ€)zkÌ’'%9YÞ¯F ¼%’`øÉ@*‚LXü¶J\vi1”ŠdšFû°™i~ªÄÞa ÊxÅK[¼ü-ni\Ū~©õS'÷;ÉK!OœfÌÚiY¯^ŲTåÒš"Œf=Wë8©Ð«œͬ_‰À5"Í麭 oŒ^z]IU¯ÿu¡`V¢:qFד[m¤‚k˾ôµî&åëgûG„! µ"ìW·<×rí]²,škõu0 Z”}Z%%ˆfÃÄzk_jôb*Áca]Ê÷‡ Cìk9õ៘’Ê,—J1JUŨËìHRŽ{C .F°ÙCHYÏ*Å»~­ËrÃèJ×â’F—m—yz¥0-, Õ²˜Åœ–žþswF­ c\âa‰OËý˜,ˆgvŽwÌ> Œ_—g<º';êíð,Ùe¶++4Ì¡§ZÓ–4ÎXqIErÌ2.½˜“šd§–ä5ux£ötJÚ{¼êΓuG^ ó^—jzÂÙtµ¾ÿ¢Ÿ£’ê° YÕ©~¨M’ Ux¢Ž.æUz‘+¸ÑöLµ=òê—æfÚ+$»Ô€zíf·é7¼ì¨q«Î÷Iûž»eð‚ úÞÓ¬¼tõ¤m<àoƒnÏÝö­ÓSÜÏ"¸¼@†ær÷mÂÁRvKæC°e¯£ú`{e:QÈÂy ǸԖÀ$þîÄÊׄÞv Œi>ÂxÇx…7­ðåÂÆJô¹á⡉¬Á ybå½ÛÁhs"Ufã "ÖP«Z·>&fÊf•âãt.>3Ä:ú×?F0§…ªD©3‰½ªê†|•"q…ÅIÊw1†ä“µªo8ö KI)ímWÏÿ¾UÛ ^-´"µ¨‡ç.7æîVî* d½3ÍvÌ6‚äVîdŸ-b@ÖýLbR¸àý[Ï2êß³D+[Ús¾0›Ÿ/&óåÉÛFÉò˜ÿïç¯*Ê¿ÿË®Ó9ð%‰{ù¯¶6y³Æ½P?R̼r Ÿ]•¦c—ÊQ´æ¶ñú ÓÖÄŒ~è@ؘ‰š®‚ß\©i²¼Í?÷—^°'}jd;GuÉ]çd¥m}ºÑsƒCašÚ©{ˆþyYª8W`V¹³‰†Ã}Êfiþç8ŒÓ¨õ#B!ÇF!ÅQÂc9…iì„Q<åQEÖQuèw Bx¸QMqfc!9…)pÿ!WÃSÅ™“hˆFf1UiVTp‚Bwg¡O0quÅÃ{\–‚¬fSçq\t×eóÒ+¤y9¤a_¤!Ú“tÒ¤mhTfZá„Q‡„çaXñ³Qm[è0~2zuµwÜbqà”nMf.ˤyRUcodQ‡>sØr¤÷X0âBAvrï#.„$wΕ…%„zÁÄ0‘Ó²eîtt÷H}5y¸å†¢e‡w·\³‡zÁu‡'Jš[rXp¼e{ðVZE(Ze`½Ä$zd‰vpöb‡ïÒ!•·H—GNJ‰B1ë„‹ÜÆS’Ófø]K`Ø–| ñ|Á^ÆÓ‰¯u`Æ"¢ÿF`Ël2ÖAPèr/BrG&ŵz çLsÁ¢kœw` dY²qÐ#{žw‡W‚€.GnG@Yˆ`׸%K$Š´tsY@÷ãhJ$RA[å.u'1·‡u§\Ì8W8c3f\J2s1Ça¤˜W vMGsP7)~÷-`FŠßx,î8SmAR¥ö;ç:ÍU‡“%'tgµ] Ó!àu\78” D;Sb@’bø/s: õñrƒS7kƒU:µR'ň®W{[×pVŒe“â’C¤³lA…SH•¢T,/Y0E”„æp^g$.ˆ‡§ÿ¹v2qL'5*)˜:2¸÷‹YÖi6E;ìD¤ã(•;CãlˆslY€–I˜ö7oÌ3˜HökñDRu˜”Ñ}–#}ÏÇ_­€uëD õ9ì†7m¼õk©ôA¹’lUŒÕ¤^Š,ªX’áV‘б‚˜‡pÎCvþ"N‹WxóX(/„rª¤†Mâœ(˜³…‹”M¾"#óçå“J›wz俉üCKl%ˆéÉL`•# Ç€›v‚?'Ї.€È„Vq‡"7†ýÒb]z# n 'Š¥u/™Ø‡7zl's3¹g)¹Ks'Ajxy€§?ûé\=³-‡bsÇDeéLœÿS”zwD:ȆbªFë¦%–-‚é/öÝsVQ”¦/EÔ$….§oštpªoº¦pº¦z:§Èצnê¦}Ú~¥hWŠUzéYrÔ’Kê$/&ê”}ÎiA¡‡¨G{…úu͵`;bš=ú޾æ™I¥qS$·µe`dRÖ§ÖÄ‹åÖ®c•—¼‡jA™ŸÂ5¶×¨  QóTC»Ê_Äök§9€"™ôÔ£—2ìÁ‰í‚L¶#€+ÿaÌŠqº§xz­š§Ö ¨tú§hp9ÕÚ¦}ЧâÊ­T®i:MÖ€`„ˆçª¦yª­ñJ'óÚ=¦ƒ|ãZ¯ùº¯R¥‰£tYƒyA•³ KÅQžsFÄ£GÖ_^§$˜‰v¢q6‚.uNqf*—,¥ˆX¨eÖa‰Úß1,/F=fù= --:…O×Y3‰ûx?+¤z K,ä›!·u™!é2³­ä¨ s#tfPëâ_ب€ z.Gc)˜Å¦ü:µú*…TÆ!Ò”µUË=T›µZKe “ˆ(±µdÛµóZ.f›¶e›t4t` wŠáƒ”ªøe:Ûœ~¨©g5ÿšfOÏ9$¸É‰ghfï Z ú}øx&˜•c¨Yò| œÛe:l¤å´ ƲÉkÜ”û| ¤r´’Jäµn=Ô¤·©JÙg]«6¬É“€Ñª¨Y"Æz8j›»kÛ–wº¶k«®ù:™º[¼U‹s¿›¼iË0÷’}s#¥)‡‰‰Z»°……±5‡ x !v ŽÂ” ê•¿´s gŸ;FËjÅ@lfø¤“-[eþ©£UÄU›¿VÑ‚ºUJæˆò“U§“±«ƒM>ê‚_!°åW‚?¥ƒ3«CûZA‡ û© 2<´aÊ»ÁSëkb¼ œ§á)¶eÿb®|ÂQt)(¼Âg¥™ñ´²SkœV€æP1|Ãsàºk—{Õœz^bš+ø¤|Q™6~±¶M˳V¥¥Býfº)×Y5ËnĨªYsw¯+hß ZÁEF¶g€éˆ„…‹’Õ×A'‰ªA$Yd’|WÆõÕ$z ôÆšÕqÃÂ|ì$|ÂÒÄ!íú€üÇë† Èt‘þS“0Wmf¸ ‘5×váKÉìymt†d[ ÖŠÃ77|8“ö‹Xò(Z ¯²²Zóë=ß‘O#й„*AÄs)jgˆd–šî´^êª Ù¥Æqƒaį:+‰©ÿSfQÈÒ¼®&8Í…,#&‰ŒÂ¯jÍ+l¨ÍZ%YœŽººÍäEIâX_w‡Ÿx‰¢Ê¨ø_¥Ä(+’‹ ö¹Nñ]ĪÕPKXO)µ ¹å‹ÑR +­ÄšÄLÑKŠZ¢w‹I-ÉjÈf¸<9¨9 WÁÌ(Äo2„éV¢ÔEˆ>ׂ+8Œ¾v›Ô`ÂÞl¶~ÜÒ¼vƒüÁ¿+= Rfk *4µ¢ñÊœgøŒuX‚MñS4˜±97êk7µ¤&ˆd(e¥Dý Iý8V§Qõj%e°ky1í(–Ióz©º„ôeA–³t½•ÕÉŸ‘§Ú¦I"g±ô@Cä‘Bÿ‚sÇRT’˜cPœÎ,´LY2[œYš/„K¦f=JÛû\Tr†ótˆ]È÷ÓSœ ŒÓ\D™=e? Ôü*#$¼Ò5='0³=:|¦½»æÅÒÙfÚ§ ÓÒD´\'½U|U+z vdÊ_uzŽÎ6¦zΩ†áÈLƒê}km-šzÜ@RnÒs!„™Y÷oç¹Ð;©ª q€¬4af12šsEþ¶Ý¥¹T ’±hK[B_™Ä›(+ŽÚ²;h¶½à±=çlžè{>®õm™IÄÇ!›Šù¬of˜Ý‡ÕôTÄ médŒÀ•ÙÊ:ì™›ùPº¶{ÐFÞj.ÌŠ£8$Ï å‰ãÔâL¢=Zl¡NbY$k&K£4\ôÓGQÌÉiÞ#{Ö)&‰Pÿ>yÙ[K–d†ŽÈU¼øw]$U"Ù½ÝkNàtnÚß~'m.î§mÙožÂÑêÚû*è,Óè¿;ZÃK­€Î“ržájÛu[[îR(çnïõ YkÇlÈ?‹‡ÔabÛÒwyÔ›š—¢]–³¦Õ¡;t<+‡ÒøI5Çqo|q»”Á”Dž ;Zá7o'ÄB^Ù'8ë ‘ÊXç–-›Ù9Bu°Jb\–Lª£«ÌÈ/Á{¶ÀùüC†FñPRÊ„!S¤µ7íímNï˜ýíàîæfÕ#xîæåNè¡-£­îþDìNà¿[fûæ–]MãŽö^辎·’Å´!ÚÞ-Ï>%ÊH¢ÿk0–'a윷–*>xüK!]©wE\+f2,PÉÔZǸÎÊÄ)‹AÐ×yd¼Ê±³@'ejó¬ZnzïKÔ®¸æG€#Íš± ­#é™ÞT #¨¨km°Ô;ðwGÎ~@T6è±­áª}û¾èh_à’³ÁaŸ¦îÞµ¾8>ïžÓb¿Ó8záS¦èâNü¸_'ǺjöÀ‹¹PX÷˜•fdHþnö]OÙ°J<—oÁ–ÝŸfq‡‚ãmŸ8º:‡X;w¹F¡døkuY eªQ+#°ZAZ DÀš‡ÑHx!Ã-f,XÐbG;~Ô(Ò#Á –i@°¥ÿ‹)« <ù1¦Ç‘0ËP˸PæÂ‹AkväiРʢ0K.ÅI2éÀŠËr:ô¦FšN•.;ÑëC¼†èp,Y²É–e ÖlX‰,~¥+ÑîY·jÍÞå[7¨5Pö% 1íZkiÛÖe,1ea·gÛ*+6rb˽|äÌ›A‹R™'g¢IždÈÓ¦Sتw–Vçh“®=hº÷ëθ=Ñ÷ð©³oSÍYÔõo‹´€W‹z°"ñÙ¯6x½Zf»ò\¹² wçÔKš¤*<æJ®,yr—_Æ»íîéÇoI=èoFKï¼åz´”R;9ì´k 4ÿûvÚÏ:ëõïN ˆë)ͪòüŒšFåãS*¹8,¿X÷ŒJÒ>…JÒú6¬°V„´o½¦š24Á9*éÏA *T©‘ÌÓ”±%_|«²³˜t‘Èÿȳƣ„¢ÔLÛi´«»#ªDq%BãÝÂÚýJÆjÌ}^º¼Ò_sY •ÓD1 1>þ‚ÍÕ?ËðÓÑ ÆPà™Z¥e¾‚ŽP½‹ÿvâju˜¼™üD×ß„[ÙÕ„H¦oeU6ÑDEî8?ÉDUÌá´óã7‹}ÐÌ☢¥\ÃÌãÈ4sJÙËâ„+©³‘’Úùá§Üò:Ó„‚ÐÔàB‚ASÿ[.9§;Ú¢[FÏÒìÞ«êç碾´ !ïuW_Æò~Èn½7+ÉÞxï–÷®|T ðºJ„ ñ¸4-pv‡ˆqÖ€nðM9e‰X“ ÝmU­éTʧ:½i4ÿ’¨,ŽÇ-KE9àkýr¹ÁÌÚ¸d9ÂPvHÅ>•&XþˆRµ0‚ÕÖÝ€¿sM϶6SDOå6¤¬ž…þß5Ÿò ©FUi©õ`«<ü͵Dó÷èh]™s ;}™¼Ñu‚ð#ªi¢¯G¾O|òÁ#¯ÑšNedpAòŸä¬¡tÍÊ€úZ dv"q pÌû ²^3%íÑÉjºa]Ù®„6ÙÄäuŸ;‰ÃÁ­K·SNÚTµBh@.›˦F Œ…hiró•p¥0 ½ª72²OQˆ–„€m$ñV®”c(¡geIÛ Mè¦ù-(msņµ3]ŒP´‚¥W°éÿ¬B£bY1Æ!~†c©›æ4=äá†ÿYF(AÍD):$j` É#‰…t H ·ÈvI/z€™¡ ,éÅL} Êä¯ZEÉ/ÖÏ’/“&§«…¹`I¼˜Tú„ÃK¾ñ_P âŸDõ(RìQšÞJ¥&å­Y¹ŸéVe©Û&Q©Z_("?×n5´ßÛ2‡%2åIS¯¬ž¶´j²rn¹áQ6GÄ䑯Nß<Êž´8MW x¹0Kw¦‹¡„‘ìËøùÏsq0òã>!žT¡ßŠ£™PwºSQÏ‚^«›|g¦=ðgÁ¤žr²ø<ö|ävÿqä›VÃBa* U­³ÚU88¥9 {–ƒÎí*bš#Š#ÖãeRª(5ç‘4ÏÊ£X)Lë•“MæØ eµ æLk5!S`˜žA®²—/¹Èg–¡²m#c¼˜° P7Òí¬ûÄä@-µV~âÆ gýå:§ÂÓvJ¬kÔä§Åbm-O%W'5¥p°aóæ<ŸW:ŸdïT½K*¯ºçJÌž&—QQ–KW&Åq !ÞXÒ‡¦zRížÈ;q©XóA3AbÂJQ4À/¶vºí­PÙ¬L~*c¡j¢+•z=>qV‰ñóeΰ¢GIR3š}\ !ë.R‘êŠÿÐ\½‹†ô}w®M„ÏAÔèÆK–l<3s™z% ?<¢+“¥t/ÇŽûÚ€ jcIë^ýdÖÆ1~•¬¬åØ„>;3½ä’rc›Ú$Íåáó©dáÏ$ja†äô¦góhSx¹a u!]jm¥ß°†æ~¢1!P{ØŽâækÀ Úq¦ºž.ñ’:ðc“ÓÒäÁÎ@g*Ùm `êEäòÈ­s/?…?$3n5ó“ md7%®5ŸeâhÓz¦:¿Bs*„ÍZTQ£QöUɱ7SžÍüê -_ÓBÆ]ì¤LyºŽJô£UCœÉ¼Ý¾DN‰e‡# \3ŒtÑ¢Õ2Ì*gʲګèTÿ©÷%ïš1® 2TÏÀÞR¿Ý\¡Û4´FéDyp_„r“‹œ(ºq—u² ‰R?I[ÓZª(Õ­}mk`/µ…-†ª×&:l©ž°CËN^‡; ë†)+½èƒöx ,c5î¹hŠÙ†N†lˆÇù•¥€A–0¹iµbŽÒˆx©C,â&§gdºœãôJÑ`dí\a§9["–-fæýU‘*__IÒ³ ×­»øÕ“…m.Û“qx×Ùòz)T©g‚ýk\‡ä#7šH€M”êã+¹®{ ÕÐÆªßŒtÍi~sÝZx»µyÏq>_–|˜Bœš'ùëðÞýÀ/CõûP¶ÿ+Tz¿<†•Ç|ëhÕ0‰\Œïp{%j Ö`¶¬æ~Yéyf­˜œS˜ûÍXÓsRΞñÓSÛ* ß=GgõÆ"óÆ—zn¼+XÓaéìžÓŽ…­M¡DQ\“•awC±“J·õyçîùy†6æ/$1è?_èâúÝ7£y\îñõÚ7å1}}ím¿nc‡X ¢óØîxÏ èŠ´µ´]åÙR*‡Îî™ñáDNØ9ÿî"!):‘åœb&%Di™ò;⧤hø$äÎŽ £9ïãù†l¤™G3Òp¯—ÔÚxïÅÄdîûNøÓtážY¹ó Ús­ú³2u"&ÿ\K&z›Ûk@ÙA#|¾ç³½›½Ù³ˆD ¡0!=ªXºZ¦Â¸39”Í#% óÀ›Å¾Å';’3D¼dk,Èú«)k(Ä4L–6‰AÆÓÁdÊ.M º°Ó: « ¡ºM:°-±ŽÒ ‹ l³J‚Š]ᦒ ±Øê2¾ó1²Ë;•èy-[£,˲·ª.s -t»ŽÊ¿ÑkzºQJ7*PBAôô·%JŸùz%'Z°¥Ã@œ­Ç5!t³=Á‚):3:³ÃDMÔ¨C›€a¥{¸”Ñ-O*¥øj-ûÃ4£(RU ÄO+Åÿ4ª¥Qú$R¹‘ùD„Ñ7"ŠI˜“Ñ’AaBˆrŽÓX›<) ò¥ Úˆj©añ¿áXˆs¶ ô’é6‹™'‹›Kqô#¼ŸÙ>4›.8ù6-›@ÞK“ø°2 ã4úÉ Yã½Ú˜DÑ¢/«@fãGd“@kc!¾Rt¹1'…\H†lH‡|HˆŒH‰œHЬH‹¼H‹ôŒÜHŽœHdÈìH‘I’,I“Bå³¾ûéÿþ¹V©/’ø÷Ûþûë_¿üù`ÿø?ú‰E€HâH×¥@˜ É#¼éÆ8Z@A2„ƒ -° ÃÁÁpPð‚üà5X NÀ‚-è  ;¸‰ML .lá&`¨¸Ú°…'„á[02l‡@ü¡ÿgˆA ’ˆH<¢xB±ýP‰|â(D**ñŠ>”auþƒ4!ãj¨ÂrpZ$ƒ_Ø"Êð#ä` u8C2‘ˆá@£ 9˜Á2¶ ‰ ãføÂºP|Lá YÃvpŒäâ ½(HB>Ò‘ŠCd #ÉA6®ð“—¤ÉHC3V2q ¬F¸bR$yUDC2&¯„ÙR`²Ä%ÂtyËvõR\¿,Ñ.}ÉËbó˜À4f2{‘fÄ™F‚ÈW¶ƒ3Ìa‚´ -èÆ f2„)dahBKÒŒ7ì"eØH@ÖЋ1„# {8Dy–‘Žd\×ÿB‚Ryäg ÿX 4Žã„s0b?»øÍmÊ1Œ¬£8•1Î:ô‚ǫ6ÛÉÏ~p¡û|"?q¸Í ‘ŒÜô! Uº ŠjÓ”Z4©CSN"R”¢D! ·¨Ò8¢°.õçÃÈAœÞ‚G¥ o:T¡*.…?¼áŸ7Õªµ¨\…C±”H+Åú W–5F+¿ÆjÖ°¶õ]oM+[ÑVµ’Õ­t]ëYq$×½Ú5®u+_ë×%paˆ=`Fjð‰9xP“çüâ¡ ¦Rô•½ieÃ1Ye`’ƒ“¥¬ 1ëYe2q¨=-& ¹ZR¶à…%ÛH‹áMnÿrñþ¼'s B™Rq>¬¡6Y¸NCš– •E®)úHä~‘©-å­'IIu6ô¡ÿÌiNsHÆ9"òà-j•1^äšw²Ã½­gsjÚ &—¼KÍ z/ÚNºó‡í­m{1èYvªp¨ø=/0kÞ‡¢³œun&ÁUU¸¦µ¯%ú—tÕ¯~5}b9_†1|áñmØÃÎ߇EâþØÄ%®ðLT¬ágØÅ^ñ‹eãÓX« ¾ñ‰YÌaŸ ",®qŒÙ‡=е^ܤi)ÚÒ&+ã‰Ov¯yM;;$γX¯•M;Ù+§µ`¦r!± æNjž­E¤™Á¼I²yÿãèd™Y‹8¾“”t~²g•ûdG>·Yf­SÛÙÔ…žó˜jW(hPò æ˜&#¹Z3«‘KÞè íÁx¸9½|d®h+»ÔüºYÍñðs-mN?Ç™³ U¡f§¼‰`¨Z“¤üdâ.\†Uj„B®Æ2B ˆ» ÇN6±—lf+»ÙÐþ«^ñ:Øi;¸Úw½¶´± Xk÷•ÚÛ·`Å]Ørƒ{Üè6·¶ÓÍ¢ AóÝϤÅ,¶Rž±±º–Fá’ߨߖ²Q‘ñ0­§ IY6ãúÍ¥E-™U‹d?Û°“h¶mÉMtâ‘È¥6EÙÆJßÚ…¯ ®scØçsNÒ½dÿì/’µKÒOâ[Ž¿ èª J‹;|¸é)SØYˆŸö”œÇz;ˆ^ò8¹GMºÉK娪:Îøà?ëKSÐÒZÏ-Má8¬¬HæíÓ9d°+Ò‘c—EØ3N»ƒ¬âjPc#à&»ê*w]νzõº{¼è>övéýïv¼ß=Â×}ðˆ/ü½&D½ÄB¤3ó–÷d`€8~ðÞ$: ¯ìÍã’7¢æ`0²+ëJ’\‹á¥(Á™É/R‡­?õ«×ÌBÆ}R”PŸ4'+Ii7gº¨ þîωŠSÒñÎöÍ¡%»îsA’aöɇ>é³{ëÆÃŒõ ch[p‡ô*c²Ý·zÿM»Tmvü8½)¡q›}A*r²q.~ a]Ô:¦?ºFå,þ›¼eцƒªÉ$!°”w×Fmø@–.SÑUM\….NdZwqÆÇENÈ„¦I€æH¦k‚$}gqZèÅOEh;H_îÇtïGTçD†\†\Hå|¤vS$·tgtIåivÿèg@ÈYÊuBä]εƒ{x‰”µNQÆo©=åBn÷kf÷Ôp§8Šª˜Š¬ˆŠ®¸Š®øŠ¬hlqŠÈ†Š a‹ºH‹°èv´x‹·è‹µ8ŒÐÖ‹³‹ºˆ‹Ä¸‹²(‹¿˜ŒÂŒÌhŒÊ8ŠÒ¨Œ×XŒ­¸ŠÏ8ŒÑ˜ŒÚØŒÂhÐxlÙhvÛxŒäèæ޶8"çx4¼± V6kÊGE^Àµÿ˜…Bÿ„–$Há§zF|¶wCéĉ&'…kèHÅ~M(J’8FÅ~UfBaˆi/¥zQÆhÿTHK8H”•^YfA?hB—–I¿ÕBb3J›÷‘kÿ¦R¯Ç[t¸BªG?7\¦”^éO0µ’éGY@EHíT+•v¨]©MGeAÉ}é·ƒn_ÇåN|Eµ’Wæo'€b•l)8ÔÀJ ô– — „æ`¥M-RlÑæ(#ÌMy™€Ù—x—­¤—ƒiV b˜ ‚˜Ï”„Y"ŒKމ—‘¹˜îÖ˜‚ù˜ÌV=É™¹—©˜2™¡ ˜ R!Ž7 Áš QMD‰@D³Ù·ÉA@‰øhjÜçA¡õ††’/eˆîB”X T–q*C&gfLH#%“qfÔB¦æOV6\>(Z—ePxFÏÿõ\ÞD‰mèN04_”hi^h’¸U”/$tÅEDZ=¹j¯· =d|HfGûeeÑŸözú…0dj“5^K™iïÅsÇyS! î%B{F‘Ø^ýÈtÌ žÎeˆ6´g‚Ȧ%vûÃW¤ø!ïH€{u€¦K)?TÑ‚:A—¡˜=è£,8£YQ£ ;lA±£Àf£0Ú€@ú¢6ŠU7j¤R¡@IJ¤N!GúkOÚ£EñSê¤<º‚W*£?qŠ ",8¦î£IbM™PTûHù¨›ü À}›P›aÔ¦ò'IZ[…Ô~1µMQ9\íEpaTH¢$NYfI%6÷ÿ´åsN)J8’3’[¹‰.ù›f[_$H¿çsNX|fôQ“¤8¹wjgÔ|ƒN!ù‘/Ôs¡‡k‡~b¤z©AW¦R'ž£å\šµTã§SÝ•/Y¨Å|•ªf¿™§Ý· K œš×¨|ÖRè’.Ôg™ÄkáB!Å&=Ñh$ â‹ãøläêlŸY‹ޝ¤—Ï6!ì*!劢YÑ®-µh®ò*Œ}‰‹ö môZ¯ÿ*®û¯ñ®Ñ°ðН;¯‰°A°îʰ˯«°«¯h° Â@ˆE$1¸  EQùˆ¢5›Ô¦öeZùÈ¢•¬Èêz”}þh‘ØìÿÄ„*J¼Ù„ÖõP&¥g(ÇBD•“Æ´dÉ^+4` ‰«÷•&e•zBQ¨fkxi¥_†ÄzçôG´ !I_„$F9«}nI%‰Ç†K TãѤk„‰IÅe±V|éùOlû†J¬K7^êç wH¸ ñ¬‚èo$Š€ Ñ`zËð`zŠ8Ö¸(È€h‡Ï”Цx$¢Š8Ž™¹¼¨¸ëʹ  ®ë¹ ¹¹’º¡›ºš»º¯ø¹Œ)º³+»ª+˜µ »œ›–¦»»ãÚ»¥Ûº§Ûºè(¼î a¹–‰Eo"“¦„VYÿØQà’áP½†˜B³y…¦d·y´ŽÿUàå’‡*ZÔizQeNyÇ©8Å”µ'q h¼×žM¸&eI•þ— }6CÚI%Y¶Â­šwZPg؇•\T| ]¨ª]E¾B‹œT©¿o˜B8Å|ð5~°¦ÁñU|JÅt+©RÞ„ß HY¹tf¤¡Lw¬KÆ ÖZZvv­Bôd$‡– RŒÒnÕ˜/‹§/¢UÃVc&QlåÓRÄZUv\aK±Ä;ºaNœÄQŒLLÅûÄvÅeÅVÅæÅ`|H<Æ+†ÅSÆ[lÅiüÅklÆ\¼Å´ —¡šäÃ>¬É‚QÂGΕûˆH»INù8GÿøXôÿwBõ…’UëœË¹g‰£M§Ha« Ê™‘щ¨Þµµ&嵬Çzô™¶× ´ay‰êQñµR·¬Íõ³ÛÔc„[ðÅ\#É]ohNØ%´64‘4D¨(Ÿ{èo:;´»õ”<7ª|œE„GZª`J­ù•‰ùÕqô—„WHSð¥Aíåoäädìäyѵ © †Š,˜¼?|"ïÈÕ¨®ñ̺æèL΋ôllm¨«Ž) Ï›‹­›Ïø|Ï}¯ŠkÐÿìÏû\ÏâÏÏ =Ð Ñã:Ñ Ð -ÑßHÑmѱ!tÉ0­„0:ÃJhqŠ›(§'˶$k·D |Ýÿ÷BäUÓ°|H\„¤8ê[Gg¦…‰Ê³‰„}ÃpÛ’’¨]‹8–O– —Vz“ ÔÔFÖ{´Ý»Q„‘—dÓÜg•0™C¿ÇT]†IˆªCá•áת%‰ÖK‡•äiÔ•üõSßBå·@u\C}À¡NY¦Áâ4Y6ü}ü•éûÕ- žìՒ׺’3$!hÎBÇHrÝêvn @mIL|Æ Ç!Æíz˜xYw|Iš¦mX:r°ÝfÇ>\#—©V°]x©/«#±tÛÞ¶l¬-Ûª­™¿ "³Û±aË1xL$Ó”h²àt½ð…›J)È(+›^~°Öext†Fÿ IE×¾ªÔu„’’üËâ4^†J†mV†|˜yé á-e8œpÈ•jp[uD·¬¯ÖßjV_;¸ û•úhfžö†„HqLm~VµŠìŸEkÁ¶Ú¥´žô”Þ¹dP½dú¨ÁH ÂÚ%ˆŒ,^Ç Zá”}“Ljúvâj¶ƒë9eC½¡#Ùl1ÙXj‹ª‹ÏóªÛ)*VŠùJ¥KôÆ,A¤oWhw¹(1¥FŽ£Žûä9Áäëräè’äåRÑäHþ¸JþkY>åNnå+!åHBåD!æX^ä`¾åP¾ä_¤ŒKÒ5Òy\MÕàAéà”È›u½ùN&¹‰RͲhÿXNª{ÉPÂåÓæ„S܅Ëí[n´\½’R§z| ÎXFfUÆs |ºuY6=_g+¨ò;G5uÜ]é›ÊA«°À†Þ©Dµ§,éN_›Hl»×¢• y BûÅT¡™~ÌW¸ÔgtsD­NM~Á¹Ô‚}{ש…M˜k él$•=$>Þ¢4ŽÐsÜ2ÛÇ®ñMKºÀ¸Ûé®ÏËî8þ"ïŽÄh™ÁVïýŠã|™ïøªîð*ïþî¯Ð´î 9ï ¡ïï莯w©ôÆÇ5 —HnuÊ _ÁP¸mÛ¬{†”|tY+¥}ôgQz‹´÷  ‘i¨CIhIÿ‡[akSr¤gäy×»¥ˆ „Ý—_ hÌA…»ƒ¯6G¯¶ž«ü·Ú\·W͆>J À–—ò¡å…z‹àÚ§ƒì]·~ȃWùÂKöAsËI?_âÐúóÌw{=Wƒ®ìGT³Ü,u|hj Ú_îB’ Á¸}å³äo·@-¹0aøqî÷Ê}@=Žž¼öÜÏ Ï#¤{¼‘ÿГ/"?»¨‹ùðŽ"›ÿø­¹§KŸOú£Ÿù úÞþº¤ÿð=<ϗϺ?,€¬ù¡»?ÌëÍ] ¼¡1àáàtïኔ\á 0¶à Øá»\»šƒ—†‘^U]Tœï”¾-\Þÿlýeé|ž*k4‰_µQï¿um\6ed¦ ž¦”W¿f¯–}í§ÁJto¦‹<ý“”m 7¡E8„á¶PÖ‚L82Ç%D8aÓ&‹ |n D ï T–P™ŽÊT*TùpàËM'†Ût§cG‚ ÞÔypS ;=2Œ8ÒãÉ‘ ¶¸ÃT'D ‡:|érS¬ÕÊX•+VjZ©•©&Vë×°d¿ž­–¶Œ[µqÏ~%Vë\° °Òª· ßj´Âúå[†0YZZÞ615ÂZ ÞÛ·r`Å’c†¼W2å¿–Ccþ«ù¯ã¶‘ ƒ.|˜ôb¨;—^]í0ÿãÑ‹ao~¬z²íʸë6-˜³oÖ¢‡g.9ðÐÂ-ÛU{·ÁÝêqaœY¥(ɃKŽlqLC$K–LÈ´#ÍUv²G?*Í;&P,ˆQ¾2ù,b!‚0Šè@‹R:¢“þ£è¼ðÎ p?© Êï=”Jbª<¥<H¿ôJŠj½pF¢p¤;â9(žqDô/ª¦äïöFŠ'½‚ *ɨŠBÐBš:t©"2bÚ¯&"ÌqAâqÆb H©BŒ‘L©D:¨),¹³©™2JE òHË*+¬!Ÿx¬r%’¬f™³Ð¯Ä‹‹¬¹°ck¬¶þd‹®?³“ÿ+-ì¼Â«PCë’R¼-4б½‹PN½Bë®K×Ê”®M'Í´RP Ñê:¥”.KUÍjÔµL•4ÑX ¥ÕQWO…5U]Y-õR_?TÖ[I5uجf)c¶fÑKжö˜# Å3j$ŽXšÉ"‹bré!òTd*§h:PL¨2Ê褓 \Ç£ZÀ­³½ö(‰ ùÖ”w ˜L¨@…ö ª!s.H?Ö‘¢¤ÆQñF„2)s?‡EÜ/?“*OÅ™J*œxR|â’0ú‰?,:(@š–òÊ ìã/#¡äËr(’É0—!›pÜQÁ2× ˜¿xsúȦŒØ%ª¢ ÈcÿÈ=“Âä±Ä”ÄU3Ä츚5ÐÒfóŒ³[CŒ,¿~ã«3¸õŠû²ÅÒV+-FýÕÓ²Z=”ÔAûÞ[.AÝÂKïº7–p¿=]+ðà Ϫð¿;ò¿ûÞ´òÉ/GTr½7w¼óÄ1ç›òÑoKq°2«QÌ›v1Ò´ †nâÛ¯ÂLH‹\v/ ÍÌH†UŠ„`ö ;T”$û*Ó“"m²³~ñ @ÊÀ)NúŶ;«È;•[e¤(ÊØÀÿª6ÀÞ*0¬-§üˆ;@ðø¨$0¼I~š9å=I BRŒ€d¦½D¹U¢‘ñ„”Ã)6G,,Qº'ò¶É¼Iz2ž >å!ÏcD‡Ø¶¸®O½)d"Ë0x’cù"f"éÕÑjTe‘Õ·š¨¨.ø¬¾Õ£®*ásªª¾ðã2¬ÖWÕŠ¦~ªáŠå(^y¸Ä¶ðˆU\Õ£†Å­ñ‰ËR–¸Þ¥“Õ€ &@€ª=MñŠH à¦÷„(ÿ!ÑÔfD1t–y›(À¢‚”ÉHkPF°g³%“Ê`þH¼ª“Î>,|ÒODÊ Qò±lD(îéÜúµ6¶ô+Ѻ“ZÕªd·ÿûýÞ™¢Öµ‰.n‰Þ 7€§L;üÀ¤œ#¥UÙ°Q~o€lò/…·"-a õ¸lxIÉ'Q‘Õt¤ÓzçF䢥:Z´Q&ÓŸ% —fŽZµ”Žf1Îâ |ª¥šUÙjTVŒ#7.²Q3slh Í6Ϙ­ÓV[m¦ØèðmÛ^i·óíiEFÛã.·hÎ=tgÛ/g;ÛìÜmí·Ä»ló&·½qónÆ€[Ýüf·ÿ¿« k‡;5X¡7·£™Îp²:œ L\a0‡L¸%™Þ›$ݼ—%F¼ uýã»ùÌ×ÄkÙ-MÒWæQ4[IúWö.B¢"QB!§–Jê³#±'["Q‰xtEÇã ÄM-ýÜ@èÝÒh$³} üª.èÛ0·J·ó{ÔÖ/‡}Ç‘_È ñ}©LžžQD-^v-w¹¡¥ÜÑ~¿I)i!G™´ëñ:}FÓ{+¤ÌVó@$:™2p³üòvD­)QÅ:ã+‹Áh]x'|–N±JSš*¨À’,ѧ=êSÓÒ#.ô©W}ì7{ÚÃÞP¦‹ëEÿ¯û@ñ÷¯'}¤G¬£8vjÉ1îÆñÔ†­¦ŒL’"‚Ä \!0KÚ‰),j+ÛϺT=•öC’,½ ä~u]¶Ìø|¥ÒC«.¤1 *µÂª‚ Ò9Cÿs 5„*žšF11Ð3 9:DãŠÃËÓÃcáC8ÄÃ?4Ã0LCB,CŸ*ª+¢‡£…ëÀŒ[2 a!û ‘):¿â¨¿B…r&H¿g²A4ú˜’û±A$Œ³Ò"?¸,ˆÑžÆ*²&ñ§Æ*ÅÅ#-.<Š øŸÝR§=“§l-è­"p‚"°üC¬&ùáq*´²SºøA.Öb =Ë=;ºgŠE»ó‘Ð*­õ E0 ¼ú¿n¢ížäÒ’Z‰õ“˜ù˜ªù£)ÂX ‘ /sD‘ªiÆ¢ 4LŒŽQ)ºàŠ"ºËó*Ç)œ›–CDfû7ÿÔ*Ф>z8KÊ ?¡60º"Ž,¤Ì",£ÉX©,T6òHâÉEж’,8r£”Ä£•¤IA2I˜ÌI‘dÉ—d¤Ÿ´I•I;êI›&‚‹¼©Ããë½fsª©šÈC±± b6°j"ôDªòóŒÈô|O»ùtOì„O¯hOòÌÏú‹ûìÏõD¢™ÚÏ¢¢¸·¶€b( j’¤¹¡Ñ­‚$)ÄK’Úfœ:äüÆoT˜¹KÙ3U ÍU4)ñ³¥Õ  ·¬!ôéEˆáÆ{UP‰°´ŸE­”'ØZ§zšÌ²»ƒiÒcŒ9x:ÖR™+˜')ÎäF$} ÖÊÅ}G&I?L ò—ÑbÑmI‰1†z2£ãQÿù3*Õ(8µÂìGðKH%ù˜ÀëÅÛ<:‘õD% >Ã"¨TÊj0IÚI·ýj:l6Í©ÈU!«˜:°:6ÎcCíœTí|°C\6OåJÏì̯L}”S1Ueaœ S°M½TW¥TPeUó„T7T>¾ècP•AŒÁ®‘¯ËÆÈðˆkr ªqŠn2QÂÜ¢š‡éÓhEõ[ pK–™ŠÓúZ¼û‹”#?|$WÈT4Ò3¶L™Ð¦Ã§ÞŠÀpFùY-vúdÒ”Ù:×"¿\Ô(71¸T'ô ÄÓü¨Vd’ÁƒýRÿ•èŽ ÕÍ8:”³•h¼ˆ™ÖÁôAÚBˆ”G-]Q“Ür<¯ÎGÍ·1§RÃ&êÎ̃Tïô“ÙŒƒ+ŒzË7¡8xc8ic·´†3°Ýж¨l¸Ó€Ž¥}Ô)4Ú§%·g3Z¥ÚkSP¨MZ©Ý6¦…8~»ZvËZ¤#ÒèÚ,$7°%¸FZ[¡õZ±[â Û¶Òœ·è±] b¡†À+¼-öø*Ü¡F„ˆ4lQÙ]´Q±Aö[¿8¥Ç>]¼?Ü¡WÉ4LñË”J?£3nDˆ?£?K9ÝñˆÝÀi¸ØÖzº,½ƒÞzj qøù †à"qZRÿ!íWqòÌüP´ TÀz s"×;žò‚ )sÃÍÄBÒ]\@× H¡ƒ »òÍx¿Š&^$ û)Î1YÂD^lÙ H¡Ÿø¹3”a_ý ´h*4‰‡ÅÀ A½¨Ü*(¢ÙD¡=c±(Š"ïT0­ÏVÝNÖÓOOÍNÖR ]Ù=L OS¢Ö` †`¾)æ½ áˆÌÖ<ÆàN휕cŽ^ƒªQ ç¹·ÓÞkò=ÛÅÚšßÖÊ–òA•!;öÁÄì­ÜöGUêÝŸg?]¬Ñ>ƒ²$;*}Üä±QÌe§£8€‚Fþ‰­`8²Á§ÿ²Cˆqh „ÀL'Ëäù . Ä(«; „ÍàtY¨‡x,æ€bh§Öг# •9â7u­¿Ò-h ‹é3!Ý:Šä<£¦äŠ_Ý’ºHŽär öb m!7–ãùm¼¤8y§ ðaû©K#à8޹ZiKÊ£uÇ@ DJ#6ì*³âÔ¹°Yýà¬ÂN4LfÓ)CÔ1ÏÔYf²iæÿüœ Æä5 uAuºPSf§ÿßeT6.ä²u|Ü]õØ::fËi呦ØøzÌ ÜÆÞ¢ã|í-Ø:—. Œ¥÷iŸï‘Š(ÃÅûÓ-HÛ¦ú™FyúE| 'xM#ãÀP4œ€pƒA³­rT™À’@DsÅ´];.\ 5H`,Hå=®’¾‘îH'ÿQ $Õºõ •0Ô2xüZ(2a[×aCTàüŒ´q¤›#CJ·q¤· lÂ6ì¸$Ùh¦dì…ëkµ…ì;ZlÂæ/Ë60Ìþ#ÍžlÎÞÈÇV$ÅìÍ®lÒ¾lÓ¶¤{STF¥£{¿xÉ£hé†90²SR“ÿÌ™êÿã`8z*®ª+®|=cv'zö]~Æö§]\sêé°‹è±4 Ö•Xö±3;#­ È:$mÀÑdËØb Ä®_Ô%dˆIÎ;=‘húÑ=ÎSЏ‘‰pcS¦­€@ÍÏ`÷D*ÿ×#fa+Ö à´ÊY‹WÕSU”9ÄÔJU¶…ŸÏˆwCpöx;>i+¹*Q~ùcìzË‚àgu4” §â3fÌ‘@eb­Þ+>Óje”oýÐl•Ü•‘GŒÍÁ‰1‘u¤L… MÚ‚˜wA±s»)¾??FN*Uu{¤šÌ ¬“&vLæÆê͈¹?mÍ-¯FÈ:Ý™° œµ‡‘\U’:b÷³_4²y¬‡… Ң閊”AúÄŒÅ3Á´2Í1»s_KŽ|Åä3’~9æH è”Î=2=ÖÁ•Íùà4¿½;”Õì Ú½¦Û¨}¶_ Öx}ãX޹‘$Ê´Í…«Âÿ4¢¼¢Ü§ý®$ßGʯJ\æ}~Ÿ$à‡ZáŸ[â¿ýh þ¿†þÞÇ$êL~+L8-#Z …´i€ø$˜Iï${¹{ÀºiÍLšu|Ø“™^tmQÔ­ Î\eî œ ,Ü„ †SÖ"œÂƒ'$\ÎâAƒ ÃݹñØBŠ"/&Ô(ò¤Á‹ =bdHP Ì„™B<è‘cC„ aBì 1ÞJ˜M†kqPÙщñöL*Ð`¼ŠO&ôxÓ焇ñî´ˆ'Q!D¦=òÜ)p(ÏF'†mq“+S®>çbÍi·(]ªE¿ö$Ëk‹2‚[U¦Ú`ÁÕ¨ÿ•¡%ØñâÃSfŒ81fʼn«Q–|˜gËŒ'O¶ìÙ3ç×W+î<™õéŰ1Ëþ|ZrçЕgomû²æÜµkß.]ùvnÕ¾‰ï}¼yrÝŸyÿ½·òÝšiƒŽ\Fôj♯WW½¬›jË48|fNÏq]»†ªŒÛšE™Î b0]MàÆ\ô=ôW} ôRÊxDB«ˆ4ÕTÝQÖQ)1¸“‚–ÄÖ^yE‘ƒ$ŠR8(‚$’„CíaL<­bI‘å!JX¤QK6XÒ‡=ý…D;NÕFs9¤ŸGN¤‘‚O꘣„x!h%]=(P‡/:¥—Y†eÿe“!Ú¤Oþ5Á&`éwåDýÝi…‘ö]{ÚÑ‚Øyeô Y{e4ÚžÔäÙ'¢ˆ9ÖØa{V „úÖÝ`Ëmç[qÍMwçj–&æ)b bšY¨®UêZ©¨JÛw¦ j«ªjJš§§¢k§³jVë«¨âªØª×ñëv©Ávì­§Yšª ´ÐâÛyÔ”€`™â—Zj-õ_€F­ÕpâÔRZ’è_J R»SuxÐŽž‹„›°޽ùÖQ›:ÑûT„6âÔG&ú;aŽ1éô!U1jÄ%Ä9½”MôމWRex‘=‘!á|l%w”¬î»#¬ðœY1ùÿä“ 6Ôc…(ÅÎ8å]餘<·°Q~tÙ‹WÐ^Îih&(¡f×ÚÔ¤.gšpàÙ–lpªAÊY¡a7ºX¡ ½˜ÙÔìÙØÙjŸÍ(Ô‚§`ÊvÜe?6wÞsZwÝŒ­=¨Ü³ýhàr#n¸Ý‚#F¸Þ‡/ ¹ßvŽ7å†;:yÔ‹[5æQkÎ7år3ŠøéýÙö¡‡õÙ:ÞŽºÌzZ$ß~Á¸DF<†C`0@u[®·{©Å—8]ŒP0%ZxL%l"Ž5K?Rº#-ÔEd$ÔoIîr™EÅ$dþI7šdRôëß©%Â%!‰deÿ£·Õæ£òæ2º, h3›ÐEœ¢¡†(£_`X¢¢ ²Å$²‰!Ÿ,-MèËËŒr2“5äc!+“[´âÀ«Ð¤!9{HU”•½•ÁNwÚ⨓ªeÝT¡T¬xµ(f©¦ˆá)»Æ5æôª8=$"t<5¬' 9Rtyvœ(ºfŠÛÑâ¯èÄ/JfT\ô̤RUX5ˆš2°°ž04Šðˆb(2ˆ|ì@Kùã|Êå†ríÇ( yÈÎâ±³ì wñJý ô’“à/GëƒQý¦"¡² pmš€÷¸· ²à G”ÔIÁ‘ðQ—\‹pB¾˜@Ïÿ,ÍóJÀ6t'ýåƒzQF"‘ÝD,5!_M I€qÄg\I CÈ0‡£Å‹D[ØÁl"2‡$dÙ™òxy2+1ÅM™KIB²M,‰ªÜ£;·Ù§™ÊUŠb 7÷˜F¹îqQƒ›Ù 8ÐÎ;¡ÙÚoFóFRm Yªúâp°fFYEf¡ÀzΦ”(›Š²ê¢Öªºcš,F7ÍGIz5“n‘¢#åTk,C™-*;±ÁTE-#»¨Ycö¡‹\r↮lÀ[Ý ^<Šº‡L°ˆ¼ÙÍ.ˆJ ]}C‰Ãäµ `nä\ Ù×i¯ ¬$4RɱzIöŒ öÿyP%±J¡“0ðz, Q~¸Ù !Dzë CÊâe€ÑX‰PIK‰ˆ°™û™ ¾€¥u¡oAÒW¼×ɪ¬SK> Z–F¶äÇ-›•KÈvvŠ,!dXblȶ¿¥ñWɺÌÕJ•šÜf´·ÄbM 5¶Øqæu’*\{þ†\ºin ‘#\ Îó(B=æŸkSÝ=šè‚º±®¢ú9ÛÆUƒ»ÓEݳLw]ñ>w»‚‘nzß{žnuÚ-ï{»‹^ðÖ—¾ëÅ/£h›§øNÀùÔ@×ó,ód‚+=àW¼¥ŒpiÅ[ÇkÈñ„‰3úŒ£M98Y3 Q$~$ªEÿ+§gIº6`ìÜ£÷Ú4@ Ji}´¤É¶ÒW¶ÎÕ’ãI1XR°…e„HôÂ¥¿ûHj©^jÌÎJ„ØkÊ”!0tUí©%š»T8½Ä¡"Ï €ð,Y4obåx"ädL%¦Ç.dÈmö…hag:?Ë=¦%†ž½}Ü=g“Ó™Ž:ÁÁiM‡3:‰U×n[ß2´5Š>–DuuCÎ\ºX™^4D¥ã««£ªéôCµê-Šú¶2Ý”xþ|ãpJW è2È'´EáJ¹°uý›8ήìØU?œCãöm¼âMÛ€÷¦¶÷3†rîW •+_²Ñ¿ýzÿ €ÍÍÞýýßëàþ û & þÑPpMŸë\ŽÖÍô‰Î€ß{¥¡|@¬îPX“\E¶ [;Á|‹É¨ÚÅÇRLÀÎ`‰Ùʘ5¡[…Àáa õK~TÛ1^ŽHÌH¬HEL›‘Opÿ‰E\Ð)$‘½E<ôP„Žý†Ù/ÑË„ßC<“„éÇ¿D¸qU˜<„9yÖW´É„‘Ä bR•)Ä&X•i XíÑUÜ„ÜAXX¥Pk)ÄC@`![Ìv8 ) ¦iG®Õ–¯0‡¡]¦©ZÐmÚuÏ%K°h¥À‘]ŠEeÆ)&¬T}б¸â¨•⢵"v¼¢-އHµ”IQMÚ×ÍJjìÉ2€5\ÁRÈÝR|‹¶… :ÙÚ…›%"D Ý åTFÉ”¸RH°ØŠÕ’%¡»Ø SIÒÁŒcIú O_qÌCŒôУ$©ÿRã‘PÀÈ;á_!]¥„îÜÝJØÅâÌÃD‰$ÑÇMHÒeíË‹”Ìʾ¡ mÏÿd‰Î#½Øö’Ð\Ï M"œâ‘–OüU)EãýEάføYC!]‚—Û Xꤟå èL?Ý\FE‡DeʬÚ­p”&"]%Æš)ÔhŒ‘ÑEÔÑšw@åR–"U>¥­]åT6”V*¥G1eTf_§1¥QZݨ¡2šÍbdB&˜á^à‡ ›DÜ¡ S–ñ¹dø#GK$[™UÞ7*)ýÏÆD„»m^æKU|HÄÐ[Ž™  êH‡t JäXMX„zÿfƒ  à Œu‰º$ÉAxÅQ\ÞŽ¼ˆ4 PQ|H#ÁÌž‰d–Ú"]ÂŽ=H»Í†Œ’›¼ó%IÒ$I`äI =éÊtÌ,¶TÖi‡Yg¥QÊÚüÉM ê@Žx±|1Wü!ØèæÐty'€mNv%×âdw×ÌçußèÐ'ŸØçéàg|ÒÍzâM{Þ'å§z{ú'¤ÆçW礗¢×>&Ö5cŒ°UX-E’… 5>Ò| ñÄGB¤ÐR¬ÛiæŠÑ ½q•bÒüT$%[]M!9R‘ „ùÄH µiÈŽ¼fA°•Y,ÿ©ë]Nà)%é‚$SçÙÈ>6¤ç‚!—\‘~ÁdÅe ]H䛩ݷ|ÏJ&OàYœE ðZ¤Óâ­ÅÇlÂhÎèLŒÉ O$Þy¾Ä¤ôa†e˜ÿ…â£a¤ ZPŠÆG %æ\oü"uâ†Õ™šÔÚSâ¦u¤Þ”­ÑCý–Öª¨†*ªei”êXn ¢¹*°ÀjxHjU²ÊA™jöMg/"ÔÚ|Æy ë® ©ÅP© €8Ä2þŽaMÄ´ÀˆQ&N(ÃVDp¢6ùûä„E€&ŽIˆ‹Ffº…©0ãÿ˜Û-ÁXkI [‡–>Ú _MHǤD¾VÉ„83 ‚…;OÀvÈäf¤”€Æú)Nƒª×ËúoxÖJrtTNÕ*¥EÑLÖ*R~¥¬QǣΤt¤t,®t£R²v:ÑAQeÕ€T¤ÅT!£¬F½4Y®Š±<íYz­?5  ŠØn’^R”ÖæNQÉÝ Ú%°e…W쥜$Èœæ?+1Z‘KF>\âND1Pf]A3>fÀÒáM€Ä¸ ´Ê¼5B )é1ˆþôLøR¯ˆbð”:žM´éžÅ»lJ þHÌ_šn0 ¡UÀ7vcó²ŽÁf0C玃]›ÿ._wD~xæ*±2Ck"P6C’³p3X™DŽ0}¡\äÌ´®rªm9£E/%èpé€É'ýEçx¾}:èqÕg€‘—Ìè>s;Æ}=·äD÷|µ\sŸBwêü“wVww_÷w›Nx7NNŠo—yppeô{®Jzí͆b$5:DP taU?µñDñµm$cóò“ruOÀ6hа5EaùXsAšÈž†ÔOZkÓ¸Ä<äör“¦2QÌZyÖPØHb×Õ¹¼iŒB¤BWU$“{îYkLŽírŽm@Á<Ú¾Oýû.'y¼ßÁvD_â$­!B½ÑK!]¥ƒ¼gxoÞ8×Ë"·xòçM†‚/} †Fgö/àƒV Au?ö÷¤ü…?Orû©?ø쨿ý±ÿù»¿øÃÿ?Ér0c õDƒ2Õ–•)Ó€ZZ¸°­jÕ RLØ€`5jÔž„ §ìãGeFÆ#Óâd‹"ã™ ©ì$•áZÀTÖ"žMnjâT òN áîx¼S´h¸–+'3:éxJïL·*Ü­VGj%ZÕÿëe ­níªu¯#AžÝJ’¨G²M‰–ݺŠkÙªY³îÝzõªW¸oAâÚT¯Ó ñŽÆõh4)X’RãVeÜ8iV­@Cöh3Ñx8ã›Zºt0eñÜÄ»Òrx™âÅ]û«iŸ§·d¬Ô´ÒÑ«ÜÈž`Úô×§)']¼:\oÊ*¨Vt5ÉÕE¯û~izU0ÓÓ‚=ýX*åÅ%–Aª¢Áò!¶§(_#Eýø©Ý·¨¿¿üòÃ/¾ùâ‹ÈÀûì¯"”oÁÿðó¢°Â„@ 7äCäp  %¬p¢Eüð@Ë`±¢ù{p¾OQÅQ,QÿBÔÏ"7 @dÐŃÂx¡e¸«¸F i3¥Vš)œhÚ²žj"ã¦0Á L•Tòò¦Ç₊(§«ì«¾àDª,‘ºÒ̬¬¦Ä®«±ÞìÏ@ÿÊ«˜ÍHZ‹J°î<ª(7•A걑 ‹R‘„+j¼>Ãô)¼BÃÊ«Óà g¨º¬ZET+ó ¯©0-ª±øj,'±¦d«²XGóŠ(œÆ‰L+Æ@ƒ´®º¸ûm*ѤJ¶(Ù<Ê$.PÇ gíxIÏϦ飷ä* «ÐÕÌ1ˆ ²>uÔÈ „ºˆ¡–ao¢yª÷¡|ßEÁwýu×F L‘Ý‚?ÜoÿÄÕ]±Á…3˜DuTØÀI,’ÀýK¨b -¬1cu)–¸â’÷ØDŽI†8ä‚|¸Æ„H¦ØâŒ)rw¡3¢&ŒL0ý“­Ò¶,&KßzRi´TR:L3oе&¥‘¦ê(Q‰r6\¾Š©Ê©5¥<´,¶ÀÎì³ÌÎTÕµNÕS+Mñ2´Jà -K1»êí±ßVY…2I¹]{ÐA«‚tp£ûy+:Ã)”ÜÆ?ã0HµŠjÎX?rãÛ,s5hŸuUÏæ-.ÎÁ¦;Æé²œâÙ¬¼m×ñy2uDÿ͵),l 0év •óè*ÕÍQ0U ·ÒnáŠrÄâfÒÆ59ÒX>ÝÔMßv—¯¡JÅy]ý„:¶E,ˆ3Ïeb5áUYÆxQ¥-¢¾çEˆG@º÷‘öÙÒ.–³EBÞåsãûÀ—ùŽÑ/‰9Ú!o@…ÍX:“顊'Öy¢¸Œ Žq‘hã¿øò|ÙN…wöCþvæË(~<’KˆEì²A† e1Ø™Šï ‰*´¢gx\<\¡ùP >ñ!NÊcÄï…XE‰|KgiF0£.aÀ›—<X+ÅpŠ7PJq¬ûMdœ²5¿„eNN›N5’[ÿ…q‹[E¬2s”ÄyÄMãH¯h†5* 75UH:¬«QwѦ iBclÅ;ëv!—¬Â¤l­b¦‡œ'ÿÅ&Öý”‹»C…Ø:Ì’y#[–²D Â!Ÿï¬Õ—»”'L h—.~òbܱ˜)¶Æ¤µl9¦"Wª6²Ë4&ò]}[¬ùªË†ý$ À‘ÛÙ®ñG&D†*è ¾õˆnF“„æÐ¨Fã ö©‡‚‚Ó¢ 2Šï$-NØ&»¼ÃäBЍ)xN°‚ñ|«¤~=Òã(œÎ¦ªoÝ$…*ˆMÙ|ê¼ÿ"GKè(\ðH’‚ò¢B\हRÃЭt¢ÙÎK‰&s('›M*ð.Ú¨M û¬b¥Øk¨Ø;^B0>çU‡V@fÅ¢ŒeU8‰ŠŽ„>¸lùª©ÆÒIü¶O°(d™$ËF ´ B Î`VfÆRr›fÄeD—VÆ–º)ãzò²(y’ÆrRcv2ûZF²>ndZ$ã\oßN@æ#gh.!¬,>ls¤â >! NCŒ^‡46iÜ@<`â¡-°4Ü€‡`ð0‡5”"PQ}gž€ Ä#ÿ`ÂAèz°Æ¡-ñboÜ€·óÙl16cèò¦-e£¡&@ŒšBþ°J)6á0kA{å:>3+¦A+2;¡<‚¡PJãžxK<\³<Ä(+Xƒ)Üà8˜­4ja\sk2%9\³Ò£ÂcÆ¡t³&ƒ6V‹¡7¦j*üL:Dz†âa¡8#s*ºaqjÓ æ`>¡PóuÆrºA:G‚o¡æàô‘Tº¡Ø3(rBì>tÓwZ@>»Ž|'>¡ÄÎ Ša,‹á>tçÇ>÷fª@ï@5É ja¸Á)†¢à>ÅÅâA p€C¯ã8p ÿJ€0åu¶†jJrdæ­E,.éì¯ öêêÉlö¬où$ÆãÂpø|˜¶ÏbB+Æ&¢±B¦àzÄùt)J?f´ Iufá¤4Kø¸Tùp ãþÊEJî(ÿC@‹ßô ÷JH¢;I)Ž£¶@ø€V.LƒØ` ˜`ä``VA•PeÐXa BB)V¡" $L‚XA>s&@âaÚ 2Å=;ÁÚ 4&`,ã"Žb,º(!T AŽSĬr€T¬$"` eSã¡|ÆÒh¢(áv¥%ŠÁ*!ºa¦ÿš"V`>­b‡Ö ²¡b%þŠa ÀwvNþ*ao%ÜÒ ˆa¨óp€8Aøæ9Îà(¡Ó ºAÀp -‰¢Ž@ ^¡ídj \ô¨%æÀ¡æ€s‚á(^©ÀàP⎀(Ac¯ƒ„`@ÏNs€¡pàQŠá†€0á:üdˆÚ PL£2öÈ£¶¦(áˆá8ýÄb¡Ž#(&`  á° bg¤Á.!BÕw”A´À,€ À@ƒ· žŽ†¶ æÒ£)š€A„eõ ä ÒgÿØ e¤OßvI›È‰`J®&åÃ]·}qq{ŒqÕÐ ñ'_ŠŒ$qlÇÆ§ ,׿,#>5÷öÜìÉ⌯0ˆ$9·><{°'tuOuw¯q[W{F÷rc|Èz¸¬ÅV× Ñö&(aЇx©áNG»²‚ˆ¡š÷.ÓUâ F ²`Ô Šƒz­{7 <$  < Î*Š@ ¾Á.³56Úa*á7_‡A !¦o$U ¾@ ¥‚¡$4 %áP”®ÀºàôÓˆÁ À UA¯„°áR5ä  ÿ²!4À¬_‡0!¾Ú²P€àÆ/ºáö@ L<6à  Ä (áu”¡Èa2`l%üÀî€(au2%b÷`ŠÀm‹a 4 2A Ì€àÀ±ï Úa¾¬£ ` Ä€Z´Œº¡p ¾º4p .a  ƒ>^!Z[@œ™ .Ögîà .aP¡ Œ¡%à‘”ƒáºs1´À P (YÔà:ar <”A â`øÀ2ó(Ú@:¡8¡;p€.Á :€Z«LÁúà2B ÄÀ  R%Ô@VÁÿXô@6’@ @ (…¾á A @ïŠM€ö .Œh àÀ‚a,Ï ŒÁ^dï .!ä ŠÀ¥â^¡’¡8…õBÒp †Çæ t+×wñçv“,!>‘÷hLú2+´cþÍd´OàÞJI!FœÜ*¡‘R¡YÒÎgæ¯òüFË/¡9 L5ËŸ÷eÎFnRpa*;h ôŒxd…è¨W@¶%Ž@ žÁüVc¸àà§±€ >=ԛ৹€$:¡“·ÀJ'ઠ¾áZ`6“K``ƒÁ à ž› ah P€ÕSõ(z\¨ г*ÿÖ@ºæ`BU ZÁ8ÀØ@*‚AdA ŒÀºoæÀVà À ìÉšà¦(VæøàÎଃad¡À p î@ tFa ‚ª6¶á âÁ¶ ^£ ÀJ@Œô”\ÔÀLáÅaö~@·oµSÜ@Àvb€Ì¸‚A æ! ¦ i³4ÄÀœÀ6ÍàœÀæa1©da|Àxk<…€€@Ö@*¬]СLa9åÀ*< ¾™o\“ZA–EÇÍ 4á8T<àb@ Æò@‡Aª»BËcÿ4@Öä‹¡^Aö½¥³*† žÀË1ž¡Ì ÊXȹ  šAÄR ^þöæ(Ä€r „ |©5˜å`(¡(¾*à d¡þ÷º¿Á2 ZU:íÃ=Ò僚'H&'¹Ï¢GÚÅ*bÌêÌÊò*„ HwÍðÈÊÇöìÊ ûÐù›¿ ÈÞ&±úùðúÏ0û©Ÿù¹®°ÿ~ÐŒÈ2 żÞÎÈäÇ‚Ô_»'ÈÐþëŒwôàD²ý€"Ó •… wÇM8â›P!\¼;78‘ ««â]̘qU°`´’«X‹`²É:¬[¼xÿ¸¡6äÙ•‰w¤ºrIÍxÅV5©Ô Öœb‹ ‘£…Ø'‡rЀDãÓª;«ºÙ1&@–«¸T‘fEC·­Å~9¥BÃpW:Xa¡aO<w:µÛÓÌ_®íyÆ'“ÈnS\`qD€€kÚpe&ª— 1ʶŠ@¼3BÔ £q&^Çb?ö˜b!0\1_PÂ8‚ÃtöÀóðŽï3ó*u¼óIH+3ä¦ Ö÷G„> ˜^¹R¡Šœf—R·Ø#$ÉGÓf†;# ”Vg¸6Œ³ň3äÌyGŒ¬Cï˜Éµ‡ŽLEÔ /åâÀ¢áàÀ%fÌ#S<ãtBÃÿ+Ø80ÕsÈ¡‹q\&”h‘‰£ttÞ¡˜q7t$†-«Âª)3Â/g†@}q„7`ÃS0ZÈ‘M%Å(˜I%®¬òMC-õM¤qLGel¹¥5 ”Q —\VC ˜e’¹e5ÕPf›`²¹æ›aÆ)ç˜iÂÙf˜vÎÉfžx¾éfœzŽ©§šÔ ú§š€ Úg˜‡jg pö™æš…6*g¡iй(¥`Zz禖jêæ˜“Ši襢Jê ¡ÒY飋֩¨¢œF )¤ƒŽ*+®t º©Ÿ«†I‹­[RCMÕ,³æ™„c2ÅÔBS1µ×%bL BÅ|”ÿl(ˆH"ÅÓÉOCÄ€ÃLD ˘1N -\†1±´ÏAWdSÅB qÅ*EpÅ#büÏ ™!„1v\²IG«ä D7ätCIvX!‡,«, ‡Kd A'w“É#(\!‹E„3’GTÆZ¬bÌ7aP’̸e°Ã½$ éþëÈÈÁL&8pÀLsHcʼ’É'rtb èPR‹28Èq4sØáËLíQÉèYQD&Y>³…1è%’`—Ä'ífb ̱|G8fcŽœÝ‰ÈbŒ(è•I78àBƬ²ÓŽìb….g(£Z8¿¡àÃÿ*™à0í” ª¹±0sP"K-pe…#Ý8"A&- µ|ÒP<®åÁJw G;gDaÄ’ñ<Á™T‘ƒë®kÁ$tÂÔ{ØrÅ!”t¤L ˜8èÁLÐ V¨ó É9Ri#Šé1 P"cã,“Å>ñ…N|¢ñ(CÚä%1±êQÕ-¸%ZªXdRS±,x¨žYe8Ó ÃÄÂŒ° ÉÊ¡Du,5!ÊQ­ÚÓ¦:È©]åO¤ Öœ…ª6±*R»¢ ‹hÃ%ÑTG|b°p(E$Þ©ŠG„¢]EÃ*n‘V¸ #eu).š‘ƒ]Vÿ ÍD&jÐ" ´a 6Z„(™ÈŠQ 1 áhÈʸ †¼@‘lØ"ÉH‘pƒ¯xÁ7¸"ä  gð€ÝZnèbjpÄF@!|àSr„J| Ÿø–ó„pHe5mÐVŽsn´ÂØ…j~'GxƒöÐË®@ 5È¡ ¯WW¼"+qž=ÎÀ´‹™H€,:a 5L$b A ` ÑP¤Ž0Æ\A—Áf6´Š9h€è@A'²:]ìÁMèÈCø näBWȪ°3D4KÅ@ç1„pØ­°ÃHÿ4Št ¯Â>á†bÈ¡²È„PÐ+È@=³Œ9ÈBëÁÒ*P§3ü"8ØÉ*øŒ=8BOÈraJÈ¢¹ „b£ ipB›éÖ-W… Vø~€ °ÿe`kÐ@Qö^@B¬(ACºQ‰gdBÛ Ò*·!t£PEºƒNhÂDšÀ8Ô@‰=DieÅèF+Œ ŽsÎd“+Pð‰ wBH…XV!’O,€j7¸Ó*¬Bj m†` cÈ"•ÝC®€(œN«€×£9A$ÔyCsˆA´5„!XÁ(¸‡G£‹ ´£ÅàK<*á#T¡U&Š)~ð‹v`˜ÜødáŠFã€x­ÂT:2 ü@–¸ƒ¦1nK†¸ãfãQ‹ xÖˆŒá oø¡…ì×*Ø€d"„ØÊ*zÔ5Ôè…%^RÑôàº`‰‹A‰ @VÈq(¼b×4Æ@Öp(àrñ 1 CÐPSÈÐLÈ+3ð…ýQ TÔE“ÒDÑõA³X\6ÿCÙ\'t&Ëð^ ö'SôEn×)6ô)‰R)±RuÃ,=”[y"(f7x~'[¾‚'Ð8vrW*MôD¿hx‚—¨â¯òv8FQ7Óh[ÐޱX‹er(Öà[¶áP mÀ À [ðx¨c6G  \5ñ ŒÀí@` á0í@"ÀDÂE í0:påÑpO°KrÊ0ªEZ[•X n0Æ0Oаf“RŸÐ5ªÑ-á0ãP ¦C±-O`MqsðjÎÄ« 0AikÅ0{ –:Bi%¹‰{€>Cás°ÍÃ-&”ëWÿ(ç”Ï2Ñ €zÁ~sÀ ŸðmA$rÐ KR‰qÝp9I3{å’ÏÁ¢± ö3J½Ö µ´ñmà6«€¶6Ÿ°]c1uÓ µ ÖTá°T0¶æ:{°!¹9Ê@M%™ S$s›PK˜ä£Qeµ=~xJŰäT \€"Ñ®™ §d‡ ³ §”8Êà¼Ye ˜~¸ª9Е~)P«0 ‘QA›ÒZ\"B«hD¬”âE{·w¶2ë(‹#D,ðy\*T\û%‹ÜÕ[,Cãu\û)]TCÏE^ú¥]äYÌR]k‚ÿ` †ŸîHŸ¸¸\.¤ Æ æ øé_4”¡Îµ Ò¥‹Š¡ãBóÉŸ³È&ÑC3 ³BÀ zB,ÚŸ0T(=¤ ÉÂÖ@ Ð8P b@Ì#LÑ À1-`ñ 7 ;° wФOº7 á°3d0XŠñЊ80¸á ˆ"ØM"8±Y†$X7H¶æ-3¡¦£Õ/bÊUö"¦y:ˆýBk dF&-0e¢‘¦qœ„Hˆ÷¢D"Oÿˆ•KRYŠH$1•µ×bk-8J̓:Xév*R‹º2ÄgQ£Ú¢ÁG‰Cÿ$Ã)ª TH‰ã¥sÑ/šI3akµÙµÉ2vZ–wX¦;“ª!az‡ÅšÐ!O0G©t‡Sè.ú¥Û3±1Wprav åZÊm¨Ù1‚Õ¬¿3[*«3áçÑÕ% ÐFây^½u*ÂÂ(¸…CÀ¸[åXäu¾Žz’(@¤(è©téh'Âø+uò°S§[W$F°BŒÒ'›±ž"Fk×±«*4ôu«DÝ8wÆØŒ¡’[˱ÇXŒ¬èul"aeRa¦ ÊÆ'Aw°À : ß"œr@Ð;À¨´Lë´ ʘn@$Ð⃨ZµöBÿ$d J Ô{¨q‰ÃUýqTô«Ð¶ö«¶´z43Qe¢*V»‰b.ù,%ép"±2µZª dñ° ±  -ÀU¶a+ñƒ½†µ™Ù•̳MµC±3‡*d`šêqS[±W3HnpU&½Vó‚1ö·I›ðGµ‰hº2«° E’M¦C‘™çò¢Õk‰j1080(×´„›ëPÏ‚Ñ+ pU&Xwк#®VÓ0¡ ÐmÀ ? ñšç"®¨ùµâZ/ærð‚â: ”—¾ŽÕ½vžA„F𢋠fÿŸµ˜`3:]F¢Ò•¯/ûuN'[æF ²€'²u—² xlFèX*XGuRDÂzWD'LE œxN´CkTŽsw±„‚u!,Ác4Áœ±2«Â7ì(2úAr”,vG‰³ êÐG°mšO¥: z`-hÊ-« ` `!8ÀXÌpT+¡ UÃ-¨s-/†:}Ú/ D¦@•ªg J"¨·)5\!§tZ'9ª>è¶D¡·1Z?¹ã¨ýB Á‚Ö™%ý2[:-@˜ÆSQs1@ˆ¡É‰V𚩉:/–>v:ÛÚ1¢z“­‹Ö¦¡šnÐÅšÿ8Ñ0`úJð:Lq-ÝdÈáP?x¾º;%€f™Áú“a h&wPqâ*W”ìÜù;D…ñ0 å+›¦L•TÈtM¿Ë­òz®C¡ \àU3#Ñâüb´L¹=ÁpLˆ¿|/–‚›º¨,#äõ®EB¼¸_â诘’†ÒÐÒ+c_æ¥\º`éu_Ì¥,odAà… ¼X^ªÑù…^ô©Ñ-ªÑõÉtÚÑf\,Í¢ÿÙ ÄåÒÊÓ"Óº_ æ[¾ÅѶ‹ê5 ÉE øÕ\þIŸË`p´ÓFm`Eí²nr(ÌB eb ®)X|TlÁÀÿ %p”Ü€Ñ-ýr©¥>˜šà ©¤ÊË-P5©Y›q­Ö’ñƒ×RµòªGdš8Q 8éymK§™R§˨‹„¸ P5©ñºŽœ8Öä’"¡=íÑ™„ÊN%¦+3Sqp#Á2U“¨ÝrJ¸ºì'Æ0ÓpJƒ ¨ŽÕaÐñ½6ibÕÙ½òú"›Pe÷€ä}Å”.I|™° }¨Ápôá”6Y X¢¸µ0…›E 1™ ¨=2WPKˆõ…{0 Ü ®âú"Šù¼#(°8¨µ´Ѷ„«4s 8‰Z*CK % %Ÿp>¢AgÐÿ„‘I^#By‡w‰ >Ïq–¬Á8Ð ô–%îM.I@ü%¨¢°ÚкEw%ŽvHDÁR¤woWÃ2;à »'5Ñ'°ê9[W)Þ(Œ|gÁÂrØèã:„²A^ÁÑ8E[çÂLÔ'b,etvœFAN²+žl’^OPÄ=z ÜÀ Å0„Ä ]PbšŒ«ïìƒÿ(¡¤b|~àá ¤€º¥’lbñ ~ ¥±¥áp@š¼2U“«uzb¶6(¨y› ®Ð/[JˆOpÜ}ܪwàu<¸! Ò­T Û00pˆ°à\ÿ @0N°™P5Á° àpAˆÅPG «pÒ"` GÐ %yG•~L|NPØÓÀ P9pgpìÞp8P ð 0kP ‡å Û€mñ°•0G@ Ò Rà RQ€¶N  àJ²Q]°î Y«Þ ˆÐ [Z ˜`Ó` ¦@ × ˜ø ¬°×Ôœ° ˜àlq]€—ð>+óÝN>WÄÀ€ |`êw°˜° !öò*H jÐ æ8s \ðl% Ä EPž0‰ê‡_°Ò`jP[q°‚Ù°ÿ$“Wð {¡hàDRBœâŠ^7åÿy¢-*Ó ÒOíö*_OÍŒ;¼öË((;±ÇhŽ-KŽòŒ>4ørާŒÅ˜w«Ž³Â÷G>+ψøã¨CT§{?wR'Âêxw’")Ý÷¡Ôøå\&CË Uµ Ü Ü Ðú«O‚Ô •ªŠ¸ð°€¢‹I° ÀyÅ +103 ƒ8 9’æqBðæ¨³ : Pá“Q +p ž°Êó4­uÌüÉÐ ëQp Ý ] ÏrÓà¬BÐ ° Ђ[¼`ÞªD¨‚ÿIŽxñ„èYµBÃx™(Uñ&¤Â9›XÍãæK"Áⱂâ'³`áŠ|Ú¢!‚†\ÓîÜ‘¦Â#!ÁVÅ{õ­•!9¢Ý!ð Lž$ˆw‡Ï4>øÌƒSd£.ˆ­ØÓ6b„[¬8pÉù¬¢(lu8R,X%À2}zô)Þ݈]Z%Ø•KshT`å Á(Xñ¡”ã’œp*¨Ó$Í98àHƒRÓ°&«Š­……ÁiÁ‚µbµÂX7ÅâU€Ãª[—=ŒM@$‡ «bæÄ[¡Û£bê¢øR!Ö#J|ºM8!›šCr dº2ÎÁ¼ÿ=ö<îL;܈帕͕X­Bª˜ºèÄš€®Œj,ÃPÊ€°2¨‘š´pÂ7Ì0C?¼ðB!äpÁ E$BZ,¤eÁËXfA Ë EEW¬G%ÌQÁkì1GYœ°B#!Œ±ŒX¬†B$e´±š“¬ÑÉa„’F‹¼ÑÅ& rG.¯üÑK-ƒ¤rK!¥È2sÌ2I*o$ÒI+_lñʉ5¾0ƒŠn„Ø#ª9<@d â½£›KŠ0f•KJˆ§˜U X#Ù& §Q5 ‡`î˜ ˜*àÐb[ï(& nLÈAŽU&X%‚ÙÀˆø bä¸ c|»ƒ˜ 48Âåã‘54èä’‚™æŠJâA+ª ÄèB™UÚÙ† lÔ–›Ò:¢‰tÀB`‚Ú¨ Š"ޏÉ; ð 5¾©(æ‚’L¢*&N¤Ñƒ†b®(æ ;ⱇ†&,-Æ”+ˆ9ÿ_!Þ*cïÀÁ Uæèâ&Œ0¡c€™Ã×nà!À(XÀZ„èdˆ6Ô‡ÜG²1Ý×äÈ Ô¨À·ç<1ö+!fâC‹+âYã Ì AßnÞ~eö¢ îXa˜yÎèÄb”An J£Ši2™†ÆÑxQñ¬&ÈÜPÁÿ,ñ}ùŒ¿þûñ§ÿOþåoŸ‡Fä¨ €) ¨¾&‘ˆ~ ‘IÔ(ÂïBŒŸý*ø¾ÚO}Œ üØArPƒ a3ˆ"RDŽb”ÿ>ä?r°'„áŸj?öˆ´Ã’(u… „ƒßj'ÿÑ;˜kzÄ0 nµÄ 8B†«;´ –XA Âáe„#9 G1ÂaTÅ@p8®ZR P¡!ÆÂb ‰ˆÅà ÁÁ#Úp„£w(B;dñ‰;(­8¸D’ç“xôl0ƒÄ0Ž`à€•àé8¡Ñ8‚Oî YLƒ­–¯>‚Jpb8pØŒQ…3t£ sÒ¸q à 9ƒ#JcÁÄc™ÐÀh07À'I8@ xt£Ÿ€ö@ƒN«߀Ã*ª’ŸNTGˆA1¶×³bˆA>ù‰'*Ð`bºC4öPÏÿG`¬|¨„½†€ LÒè„VfÀñ 4ª —OÄ {ˆ€)8Ï`B s „Ôø n|Á—à„zÓ G#gxÖ*Ì`€NãEøI1*Q‰K€Ÿ˜Æ‚¡†iÌa:óÖ<ÜöˆN£«È%ÄÀÓx0²Fà+PÐÍÁä s(BLI =䘤„)—j¶¨¡ òüÆ3,±Št‘w@A4±1ÐÀ@„CaFZ’ù$ & µHQ7²‘“µÙ¶¯„ŽòPM4Ú:ö€ -¸B µÖ€ó»` eë ¦Ö„"-nK˜"ÛBÿP·°uí%(ÁÒªÏB"Ò­«Ú™–´.ä`£t4¦ÆVR’ ìù*ßà ?‘Ëž%65žª!×:‚&ÂQĆ ¨…Mc€UC$ Ì—Z90†žj9Uȯ‹á'´À sÃ*Q ¼*󆿪ê›n `_؃'Ä`ÍnL¡ ŸÐÀ_‹Ñ…"Xá•C7ª°„-°¾ZÅLáÄ¡$!;€ZWð‚\­¢ÄÀ1Ö †;4ë U¸B¢ ´¨dâÞH@Xð°UP GÈvdC `0ƒ¸qÀ¡——`ÈÚÀ ×`Â5ÿÁzÆŒqºlÜajXÃ*à0!„.?€C18qWpkgÁXøÁAjÅ€6*"ª#\¡ÍpDE0…ldB`T¦0„.8 óÐ*Xàr„ùϪ€ À‚HãUw@Ä6„€8¢WÆ!h)•m¸&—ÂLLJcbÂ_p@¨ °;hÀîÄüÀN¬€‚ÈÄ çV˜àU@Ih0‡K §¡»B ] WèE9˜¾1„óÊa—Žû¡OFL²Ũ‰ÓІ¬ Ä ¸¿%Ái²Dš,¢ü4òÈî ³›-T¤"¥ YJzRÿÑ—0«ÙBaÖã‘}“eÙ÷C3é¼H^âyÐÙw(8ÝⅺΛ4ô<-£Khby—îô¥¥·¯é^B“Õ¥¾C)$"WÅÐA.Ñ„^áY mH~€ªà +ð€^ÊŽMT! _•º¢ƒytÃ$8@KŒQ´WpE .a*aq/ ß F1"V‹MÈ3 êŠȸ¥µ~,?™ Â#øðø;øn( ‡|ã›y¬À\ÜGT|QKB ÛK ,Œñˆ.ab“ƒâa 00ÇÆÝ!¶À¸x„ãbø ²±+ia]؆ÒÿV ·ÅAó3%XÀO….²ÐB6  TU ‡ƒ膡!€@êªÒ¬ÀX(‚V¸? XÐN(Èè0†xih‚8ðèðƒe@„È‘'a‹†p0ŸXp`…;¸„…Ë„"p5è,9 lO €K(€O0%ÀŒnˆ‡m0‰NÐWШ0Âhð†=ø %œƒà#¬Û V°‚OX+8€L˜€ ¨„n(WYê脆bpƒU™Øx™;˜oÈ9؃ œ9‡è˜+C‡à–Ô[ƒM¨Sú ƒ‹8ÿ@ Çë„ ø„ ðƒ9°”.iá-©¬å¸j¡:‘T<¡¢­ÒjEj¡VÜ­ª.b¡àB-Ò*! b ÐÚ b.Ö¢ÅϺÅÖ b¤8ò¬Yô  zF9®Îª ` ®Ù¸ÊEHY‘X‘LQ³y`…Ú±*iè‰:#[1'È?j“È6‚ø nñƒiØ„Tqƒè¢kù£ ãž8€ÔI—x‡@öоk5'ð;³Ur‚iðná–q¸ ˆü¸ƒ H=ü‚ŠUÒ‹ÚH=ŸH¼x`_¡ˆ’t&q †9¨¦UPðWi‰çÿˆŠ–ÔÉ[é¾ ô3‰˜Ì1¥†àˆ"‡LXŒõÓ‹‘üjqÁî .r _‰ŠWq&eÈWù‰X½;Øîᘲ™pèJ´|Ášœ¸Ä·—®É™yŠüè†ÌqÁbx޼©Éy޹ü‰ÒÛ„LØ„9x˜¾L‹Çɇ|˜¹”xž9˜€"˜€à–Lpƒ½ÁðLù˜/ˆi K‰‹ ôßø ¾Ìßhˆ†Ehü,5©’š »ßŒ•;§ ÎáT’¡¡ÒªÆþ©FJ‰k ç¼ÆºŸ`¬ETäÆí´8ð”Ίk.Õb.ÿ.\¼¡zNèäÍf$ϪNò Tt á’Ëj¬«“Yk@k1‹­2ƒn9¶Kˆ¨“0 j¹C?b£SY/Šr° 5‰f¹“°Ðîë"3šH3:•M•¥ÐX 5*TŠpK±ô£›hˆˆ¼”hBš€áÈ;ê¢ùšHX¹0u¹‰XÉU¹ƒàsÑFŠ ±¬M3š/ˆÑmÄU’På–F Òüž"Š—¨Ö¤ÌÊô³üØIè/±ùJ¨Ì;ÜlËÔ£R?‚Šb(½¾\× K±‰Ò[%•cúµXÍŒF‚rQ†NøJ€â®üØ€5ò³º¼ ñ#‡ÿ颽˄SÙ„|°9 ¢í— CÂS—lÔMèËMH‹kI— ±ùGl龇)Ê5jK“PB7xŽ Ò¯dÔP»Pd2I.W¼ÅÐ’F!F ù ñ‘˜”˜[0!.Á’0,.¹,š‹’š»¬²ãÏ“ûÖn%"‘&ñ!Êò‘£kV±³V6Ñ™ËVn5à<’;‘ºz5 ‘“öi¹=‘9,y¬5ÙK¹›¹Ea¡‰s ’Já¿[1>x„-H©+X…-pÑ´\Á9 „Œ#U¹£ká»–Hep0¢´Q32Ùå;>¥ÐU!Í(ÕT †•½‰2¢KˆÿÙR Ò½°Î˜È¢$ѽë>T!ƒk)¢Bº0\—‹@Ñ+0¯p‡"‚n¼ ý•´ÐGŠòL’ŒŠéÁÍ&’ü°$Ôœ…Qñò3"E耊>Z%ñ¢ÐTQBµ°ÚlËIX ”uSXí¾Ñ|°ÕIn©Pî;ôÈ9œKI·K‰5îéÉWiKMÆõÈU9•KÉZ¨ÐÔqP£¢|° » .«U¯ÌÚõbÜ#½0­Ë¢Û_{¾UjQûY¬ÆÚÎÊ"»ë´Eê¬õüŸý®ÕŠ d­Î:ÅÂOãRÞgÔ åœ-çÝ­êN‚Þ‹ËÅÎR õìÞî”!êEÖñÿ´Åët^ü|^â΋+ ï¤ÅúN3á¹eXjx‚á¡°,½ÄsÁ˜2rÑ– –2ŠU\±<;€+Ê•+‚°eø£€¬Û Ø„€DÑî{J­"3rÚp¨Ëç°02S±‘@ÍÒ`x›"Z…à{ŽÎ$€àûÔ'K”éŒÀU—qøÑ¶Ô ´Ú¼K½XMÕÚqÈ„ij‘à+U[ÕM[É J´iá”l[[I½jjˆÊfù52Uâq¾àcHŒ­‘ÑÎðM0#°DÓ¤Õ.2rÍËìYUÂH]H4Dî!¨ø‰ Ñ NL¸ ˜ÚÃÚlˆ¬u&$-Ê À'ÿ¸V`Éœ…'hƒ¨€2ºQÉ}…9¨›¸ƒ+È_Ë…Ëçhr8âµÏ 19É^YÆV^Í29ãz.×­\Ü m´Fê/ËC=£„ÙÙÝ\¢%ˆ UÖÚ†øGÊÈZ)î„«I½ˆ¹ÍJH€·¤–›¨9àÐf)†àÉ5‰Ké„X •‡hŸüÊ‚wVÛ½X' ÌdðaÚ-ŒÖ˜(,€–>JxÚ†¶ÿ|°€á(ˆÚ`¸=øµ¢„X`"ˆá9ˆ‚8í.­ràÕ…˜Uh‚P¥H5† ˜¾‰C,‚yx± ƒ hKh´¨x…`hЄq™€à@=H†¶hcÈ€…J8?`\&ï€6(¼È€§ØGŒb¨iJ`åôÁEüÉedFYDOù|EâzŸf®­öÁFz_WnÆ^&fû±­p–ÏkV OûÜEsöeÔ:Fõxø|wßý }§Nç|ßdfÅÓr¡UÄNegcîåk !€ócøX7˜†]¯åHÀ6†;¬í`ˆ‚ð€Í•ÿè‚* ?‡i˜†%ôGp„œj‰Gx’¦}»(Z_¯è=„ 8bˆáü¨€^¨ÀË(¨‚GX•Ó„-øoˆ[« (… H7"…‚oØ‚3¸dYزqé†ð€C8b‡AˆvH‹!5Ђb(å ›ƒø†*@q©€‚K(kY…´¤·§Û¨¸Y‚¾½Ÿˆ*‚š~•qè0ø†ú2J?˜‡xÂ9š!ð ¸*ÚÜ -0†Oض  pÈÞ€O(†*¨‚Ø¥ 8ðYx'P¿NøY`„Nà`ÈTb€ê(Ô p€gÿˆ´Ž³xàƒ8ð€Øtw© ؃¶Ä?ð€@ê.](pÓõI€ÐçÈœ3ÁÆÍ1ÖÁ‘·`w&‰ÒF °b«¬ºsäR•PÓLÄCÔi›ŸÚ[U,Þ+>zFLèÄg…8óÚt#ïÓ•bQª 6!\¼2FZu´LµjÔ–2¥V­ ­¦ËŒÒ2Ú`jUªZ¥V¥–•Z¦W«íšu*[©Q™¾w©Ü¦LåÂ¥ûj^¸NëÖu‹—¯Ý£l΋·íݹ Ge ØoäÊÙJ~Š˜rd§ŠçBÞìW3áÐŒ?#~ê9u_ʃ7/N¸ Y¬M×®5*µ-jÂ$ÿòædB°pÁâ‰ï8œ6~*¸™và@°êG$|‹7=˜²9`]r"½{°#¦)Sæ$^8'—(M  Œ}°ÆgÇÉ#-ñ®(×ÂrPrGU4X §ìðÓL,²Ë'Ó\uÄ\UìoÃÿ^'­sÉj)sÙ ‡†ö2b‘•Url¢ zH3ÍkLS 1HPEÓ³Lㄾx°áÆ@xÄtLnREL7•PŽÜÉÎ'Pt3’ÕƒHù™'”cc<8ÄÓ†#á@yŸp‰-8¸Þ¬h8wL“,Û(G€ñt£ï*ÍŒް%”sGC7W̧û4tÀ*Œ8ÇG&˜‰+«ÏÑåC(òI1BMsº°âÿ„{Pâ Äáç2Ð46! Dèä ºÂ dq†åÜ!ݘ@(ñ‰­BÅàÆ<Œq†ÿâAéK¨Bîw‡û™ +X `TY¬¡wè„âqV `BdhðŠáNèðxêÄ(…ƒÏÅ®ZP}H‰-tã…Å+F7t‘xÈa8(Á ~ÐL´`\RP+Îð‰"táŸÀ#àÐà TbT¸Ä!´8DqX Îá| [7*0‡ ¬€Ar˜ÃX±1|¡QÔ‚Q„*ä`8àÑ`Р¾`a33Ìa£Ä æ1 LÀP¹ÑÔÅ5‚M.¡ÒK½4f/‚éeSd¹˜aL—ÀLŒ,5óš‚íÒ4† i¦i™jú²šc%6­Ë¥ ÿl›nQÌ8…Ù™W^†5«iŒ3GÓ ÝŒËÃ22qœ`4Aˆà&J’&£:PF8”Aå\a ;[zŠ Œ"À‚Õ™h0:‡°J: †+(1ŽU¤g{UÈÄtÒ;8 <Ò ÁÐ…•¤ä\+¨B<¥\BY´Ôr¸ÑÔ0JÈ„7ªP¯LˆhÐí–u…"x@–— Ð‰Õˆ°Ò²ÂÐ\”©¼‚qö…vðÁýpŽÄCxVQ<æPÈÊAø1â¢+\Ê[ˆÇ2±!#x`“:‰‡2BõˆC¥GbˆÁ6ℤ9°  ÿ‚bÕ8>A_lpW•Ã7Öà†‹ p –¸ê,Ž3Ø!ÅÊÈñ:Ñ«Æ##™ `.æ°’9Üá ›ˆC%|E”àša)”ºA Oä$é ~@²Â®ˆ*‘ 68ÀzˆÁj¨“´!¸‚1ÚÀ â}â9@ *àŠ#¢‡:á"¼oè0¨W¨@üp¥¢lf_rØ‚ Ö²Ÿ1 cÃÊÉ‚V³¬å&aÓ,Ì.ËI¼Œó™ÔŒÍcÊÙJÝ2¯AXkôbâÒ6ëK4Uìà¶Ü˜…!Ø0?,^,6*æL.K|˜3–¦™ñl5ÝÌ0këÿMÖ *#— 7Z¸iÌC Ýè,ÄPȉíáqœ 0H´rHIc5ñTÆNàyœ¸ó¼q.~ÏË  q€àvÂ!Åh%Ê«N­ÁÐñÓanù i-gfÐÅŠÍáE]šð E_&ŠàÂÁ¨'pÐRãQÕ8à”®è*憚ÎKÅ „,‚K€O8䦰ƒZ7ÜA ‡pÑœ¢#@w'0Úà ¾pÁãÜï àRƒM€È}røàð JtÂNÍ%G T àÆ#,üÏ€»O¬`Ç‹Ýn¸ƒv%€C;ÿö°ÉMôû˜Gäè*†2“Š=ã †#>L`ÊoÔ!«öôJ8àt3ñÑ)ˆmx"üЄÀ CpÈ4Vðˆ  `ÉY–àP…ì(Gè‚oA­ÿ$$`!ûQ YhÀÝàS 21‡ix9Á˜TöÕ0“ý 32¶L“©ÉâÆ´R,VYZHÖµ£Ì)aÁûζ"w´|¥jdcáq#5ÂÏL•OI<Ôÿ4ž™Åb+ûšâ5™}ÅñgO¾Z¶ùÈSM-ó à!Œ2°Ù,z×ûèEïµ­A™ó®Øë)zÖ§Æ´aš<­qîL  ˜¯Š1ÿ" â |àÃpp€ôäç|ð@µïi cÌCWØà(ä"TçEò£Œ[k¢G’Oˆ‡]ˆU%˜ *¥š® aŠ—Î0*ìԮă€Éÿ€¾QÛ•D° ÈÎÕq8ÊA€€E0°B\¾m’JÍJüÄËTÁbåÖì À%\k…ÃèB9Û ¹ t€T\é€#ÐÎIÝÁ8ÂKíÖ•˜ J¼È,hÀ„œÈ|ˆA‹àýIpµVˆl‚)`”°J1ÈAÀÁi! ‚x‰rÃ%èEÅýpC t¬É'Lß&À‰ÿóÌÁ'TtC×ÔìÀ‰2œÔƒ™qƒÄ Á|}á68@%TÁ ŒH%˜@\0t€ÐŽÁ KTB¦t€4ÁYÝAø8BÈ6P‚$–²)Q |RÔP%ðÝ•)}STÀLјƒmF4%8å Ú0-¡X3ÌQÔX_ì˜ÂÙgÈ’-ýË3.“‡I\0Ú¤ :éF7Æ7^£_T#11™e@#Ž-S.}£îiÆn|ã5j“‰LÛÌË<ÅÚTY5”‰ØMC%èÁ#P‡ä€J-ˆeÙt<Û¬À3hGÂcÀ̆‰æÅÔX¨ÕèŒÌ4 S0^Ð\ÞŘmè-ÑHž„A×nÍÏ MψÔD™ÙØ-nØÆÝzÆHÄ<ÞÑLÚÆÞm4^W`Ø(ÍϨŒì]˜’ê­Æ|ŒÙ ÝÈÀíÒ8nUTnåzÍŒÅPƒX<Ì ¼ pÇXÂ6ðÁj9ÄtÃÒNA-láT@Eq„ƒ1HÎ4Ô®4ÎóÕB0AëüÏxÇÿ­Þj”¬`íJqÔ{‹kM7À=óC \†C1lB"B`¼ôÄuݘθÑïD €lR8¸é|Ä«îfÂ÷îʆЇÜÏ‘œQÈë½~¥" ä'¿rRMU½…Ã,7 Eõ\7 ŒèÐàÀÌYJ¨Jn¥G-¬B-€ÊÅ"È#!÷à[-¬‘ÅdQ¼…ªíÁ'ÌAFˆ°E Hìt‚ùÖ†ÃÞëPÂË'lÂ¥0pˆä ¢Ô¯ù%œ†dÑ  €T HüœMA¬+\B0¬@0øDÎ@ðAƒlÖ„HÿrÌA%T@ÌÃ4ÁÈA`Ä´@*G]u%ÌC<` R€Â‰ÅÑøÌ]$hì˜8ffÜ(Öþ(0Åh6².Á’3S7YcˆaãjrŠr2çºÅh:í‰ÆÒŠժ肥͆‰(::ò+³]7 é:ÍEˆÝ#-£Mf^̰Í<Á@'[á€Ð.d$A3wGdÑG `€TGT–]ÊH ˆEÅ7_êG p¦ˆàŽkñÉTUá¬ìJ ˜Îñ´À¥à>;[qwÈIdÔ®ìë|<Ê*(¶ï®ÄOœÈ ôê„!át¾Kq8/ÿm‘‰BËIAõð sšO>K~°% "qˆA "ÉÙˆeÙ”t¢Äôìüm’Çm!ŸdÜ&éïÑ [Š–iÈ‘Q(Ñ„/¥AÞ,Kn¥D§ÀH<8m%$,'´iFxC%¼×FÂTBµ+4‡Œ¬Â€Hñ¼dW "¸O÷ˆ”ü‡q¸A% BxC.EmÕ£`°mäåN ß² årÖ6˜3#8e­6zc1 sdÓÕVã%o­;þXÂäX3N¶ŠJã'ãexv1êr=îÆ1 ö/6Yg“Sl¬ã0_­ŽU6>.æF…Ü=Ì<õà„ÃÇGÿ ,G|‡#ÄøwœÙU€¼ø€³­Eª³}’h {(µQ—¥´Ö¡ê³½êNA=°§°ÇNóQØ3…°J9ññ¸Ax?*5A1´FÿÏPXŠQêÎC³‡aYkZ«†e“Š? ¢È‰DÇ3QH€<Ï‹øT¥‘U¡O?pñtJ§ °†ˆxœè0°<‰½žÈñ¨¸OuìÔ9Ï“øô …뱸§=Ä_Š´C-€\`¶Á#@Ѐ¿ˆ§ÜÁó¬Bt7D€/\‚`C1p¬@¬ø1CpB íYCøyR¤lPäqà€ÍåV]C è7ó8{7í*5ŸúñúFÉ834A¹³IK;ð”PtÄ‚ô&Ÿ”; ˆQΊ»Rso~{xB4yOÀ+õ†÷¡kUá“´oF@›ŠßÉ ëŽ£”¥¬;‡¸¯øx»½,¼BkHÿk–«F‰2dxAø±Æ3 a%<î4¸Žgü7ŒõË[ŠˆÇ¸Lª{¸Æ3‚ˆ|U.kAß7\B_W­ҳ…ãŽLFA%´Àò±>™@,‹ÐPMMŠXÛ‹´9DÎEèÎ$æ’ܦ€Ð•´ÁЂE`K“¬S-ÜÆc_²(cŒ‘5ö8©%›ö0ÿè<£`»=ŠýR7ŠòŒù};z#'“ö/Rcg€ØŠ=v;Ùãi·½2 m·¨^¤˜’ FŽR¾á ]ä½[,î”ÉÓÃ|Àï-‡Bv7ÜÛ4xCØq%œB{¼t÷„›ÎFaûЇ`m·r QŽwÿºsRã™ÇS¼Xʾ¶Ö9¯·x‹wñÏ Š7?Ž«x<¯{{‡ÃCÿxÿûòƒPS¿O‹xœHÍ£PL;|z»cÉÌŠyó+ ˆ”<`’{Їÿõg?@(›p'Ü„pNXnáÂw&(c(âU †+Æð`Á =„¸Ð¢²wŠ­RNÄ–*ÃdOY¼ 8âá\±mK°`Ýî=X“áÃxÝr@;r%Ø*]º¸‰ïÕ`Üâeú´Êb1n›¸v †ǧ=7ƒ‹W Ç„nÁPrM¯E¼pñæ9ãQ®Ueª•l àjÔF¬8qjeC~LK°ÿãj´S†œù0fj c.C¹ÚaÀ‚ V½ú´iÔª§\š5ìÙŠq»~MõãÛ»}?ÎÝvñÕ¼[Çž½ØôòÞ¯“—^úðoÔ³SŸ6î¼:kå̃Ën^<¶oèå‡?»´yÆêK“Æ,›­ÏÔ>„¹2MN¼GQQƒ"ˆ º–b¦ F7ˆ)˜x‚i¡… éjá® ÃѰ®˜Âɤ…q,ÌЮ;¤+&ªbú0Ã"´‹ ï 'A±…ªÂ¹¢#…"H ‰$Êq‚”ñ0I'fœ‰ôè#’¨ºC•Zj‰¥ƒäZ%Kƒ€1ȃ‚¢±7,ôEšÿ¬¤‰£;2 ç 1q¬¡„$RI¥•âjʈÀì¤;Q"¯LH.—¸R©L†Æ!© l‚±*A¤“Uà ª¥2…¼ƒ¶áã‘îÆ?pÚàJ‹V‰§U¢8Žð¦ \›ðc×#ÚÈÁ›#¤ñ£ˆ"^ &Ö ƒ¢jG«rƒ“-†‰`´ÓS ´ÏNC,»ìº¥/°ÅÌã-5æ´L3Ï@«f™ÒÞ-°ví»L]Áâ]w^ÄØ½·Ð « °x æìÚ€¹ 8àË2Ãw^uÛVâÊ&+#aù" 0€ç+¸Œx-ë÷âÀ@æ÷Þ‹nX^†/C,ä†[þWà‘¯u—dƒÿ=Î×`Ò8ÎøZš1^™´x½Cì±eî[&Œ"*æ€nŒ '‚b‚™f0¸©`!ªšÊi ÑŠ. =T±ƒ:|Ò®49TñF»èºÂ ‘T¦íº,Œ‰€;v¼DƒÔÆ‘F0…ú1¢¡4̱N Ý@ûo!(#-è!/#òô®" ’1&Â?•(¾%BǺ@UFuPq4h h¼‹ ׇ,ÊÏ=²ýMê|G)Tõ=GúèÐ>𢠸$°Ü8BƒZ7‰g¡* %išTõè&%9ÜhÔKe†E¡!ºŽxÔ€Ã.:ñÆ ¼‰`›!*`%8¡$¶”ÿ¤.S GóPŒ(p¢Ú) #Õˆ¦_»±p´›ç<Ç\‹aÌáãÀéxË[†OoÊ®ÚhÐ0 ,7ØÚ„ç<+Ì`pDx. fp;ÐYeøß´Ç9¶ÎoT¸Cñ:-lÏq<ˆB)*q8D¡»BCe@i ø€*p€ÐäÁ˜U0&P¬ÈJ°‹êÆ–&7âíD5ljœ4¾!$qx»QâÖ–¤Ýè S‘]Äö¹ŽüD™ð\¨ò;+ Iu[êc×¶8}‰"3 JD¥+%¤$Taѡ裃£*<J<P—ÆÁeGÊK&y¨ In ÿ Ç“î8„4d%\ÊB“^ö$!åç*‘ŒI&BbI &@€ÃMM[èBÔ2LU¢ØBŠMV¦dwDÉ t­à”ÆàÀ Nä`»jC¼Ñ8èÊ9@DX‘O#øWàD¶ÁO?ä +*0x\¡YÊêÆˆâdˆ߲ØÄFÆ0y­T4ôÒ˜dTúš61\.ÄŽKˆ®Zl\Ëñ)tÐÅëD‘6È!Ž U$Z§§Ä!êy<(TriPƒTNqJØï|p5RmªUkXVu‡8ýêmžŠÑ´P1´Ã2¼ø„ýܨñÐÿ€2äÀŸ`È!|Gܰ¡ Mhlñ@]è–¢–­.ÐêÈèøÖ¡#ò°3!,Bàò »ù#k¢My[¢2§!yˆtj²Ë&HùÉNæ v qˆ—&"ÚCáÍ5z'ß”ZF©·WZö2؆"®‹ÉÆ]E.¤C’\\Š2%–0W%Å¥žHòŠ@DJ1ñn5Ÿ+͘v%øB<‘®¸G¨Ä °‘(°e*\a¥²p—c9pÂ%4° ixƒMhÂàPp02 x°bphC*¬hC<²P?t`EÈA7ÿtðˆ#%8pƒOpPŒm¬ Ùb·°¨UJ‡ƒ'tÝsRˆÕL3‘éÅT*ŸÐħ2;KáE1…½Ì^[ÖØÛµE˜zf])3•íe³Ÿ…yÊõ¹rdàü€5€3ŸáL”_êÒ.SÊX¶³›Æ®:Óy¥„®`œÁ 15wLea~Ø–ï|hܬ[Ö€Œ[©!W9Ø&4PKÕª†=t"e¤ çv&¼IFÂP‰&´B nw)Ñ ã!ëåPvü EÞÞ}6H”¬¤–î]ºD(q¾Üñ`2Ɉ ó³È$æK86¾©Ö.Ånz;6ÓM’Ü”‹æèl ÿ‚õ%ÂÝ‚bªÙ§®d|!æöùÀÐ 9Ô"8u<¦Q‹G¼Åkä4…0?¡ I%n€P`ÇV£Âÿ û—~Ë‘ ÒkŠÈî·ƒêõŠ®{ìƒ6Ü©<ˆé'Õy6½hÓSèb\’è‰#¹+Ó§:çÉĘdÒåe’¥Q¦êS?jHœ°‹¼ý¸_j”'§m=jü–?î4JÞë~¤{2ÞJP²½N¤¤Ç¤9ü—â|ȆVá &À»à¢?‚áâ¡€  L áXšÀ à²ah¶”AÊÚÀ ¼¡p¥t`ç^á*€Þg®`X ü`¦ @Ú   ü`xÎ*XÃÇúîªÎ¬>öEaôÅÏš fʬˆžè눌­n*7„㉨ÿŠ«¨N‚Š ]ÎN†¬Ê¤ŒÈ茪 qC AH„Žê…†Š‡Ž …,é¾ åŽ;h(ˆÐîì¬;tƒ ÝpË&éQÈÍz:‚+¤o’œ/ýNmsf€"yà-Qæ-Ü&%w>eýЧO¬+$”g€±øþdHŽiJÜMxP¯v$%#ÈJÞÏxª©ºø€je8¥\¡ Ò¢YÀÈ X€›ô¤*Vá €%&*ÂrÀäŽÿÀX€råz…# ²Ÿ¶áªÂ* ü  `šààಡ V ‚%Ŷ¡ vW^ar@€@¦Ç ÊH#­Àn«òNÈèN©j†c6b¸%''æ`†Íø,Í(Èêe(}ÆÉ”lÏ´LÊM^&dXRðÞ(—LÏx&‹b¦‚@æ(ùŒÉÌl › *F'óL+ùÅeÞlɲ²fòE`¤²&Ï2z†eÊ 6¦[> >ìcž€¤‚¯ŒÁn6àÆìæ#*ÏiDuÜÀ}‚°œÆnÄèVä•têämjb÷¢q÷@âK6gG<ç³eRz $eFLG"ÐÿèõŠm2Á ¨âJz‰/]Â"¨)w0ç˜<Én0GÝŠâ³D31bF€w(nF†vÈËr Ï8WGu0³"©vÊ„º¬Äº.âý†Ç9b#‡4QÑJŠ!Ä  *¡  àöÀ‘Ž`ørš`¤AØ“Sbå:!²¶` ü࣠€`ætEÃr…p…ÚÀŽ b°Ã>,æŠ`ààŽ "¬`"`ŽàX€r tî€Ár  WX#è’¨_°ˆ­Ð.7Ú>2(„òÎ ÃêŠÜ=ÄeîÆÊŠ˜ÊÈn¨h†”.8\(mÈ„œð w‡¾ã§êÿ®‡b’È*ðx‡än iˆížPGL6Äì¤Üå] ìF¦aÔ ¶¯”aº Ô@ÌȧBâ”á* MË(Mm.šÄFDÏ€\¢íf&¢Ä»ZÂ&È”BÓ³4ªIúí5¹iHhÂA6aษš´Ä”ª+°bB>.l"ª'›X$UM Â&ŠàSÔÂSZ¢Ilb÷”Å”è“&V¡„„&R5U"¢º®Mr^%Û˜ïJVÁXÝ %*õ˜lKF³_çQ½‹3ÕXAÉ%l¢MF3|œ¸b-b%sŠ¡$`¶š`&2Åš•Ž á/bâÿáˆe½¡~r%@a¶Á²a²áR,*2@2 >ìáp…!@Añéåà .W r$ÌW¤ac¥!Fj%“néh£gÄR(­2('F*eîÆnÈ®Ô[„° µ0©¬ã }¶ëÊ.hHíú®é¦ˆ¬XÖfë.…¸J§t¶îrʨ¦hëd ðp¶gß®¨Øƒ§¸¶…¢hëh’‡ÌRhgiNJ‹ž–ܾÀT'.“Hmô  H"6l6u uÒ•ì‚öVFnäs H-4Ššî$nD£ L b#Ru.:±PuQÕX„PŠD- kªÇ·¨bÜÿ ,àbBb…sq *܈G2aFç ^ÓWÃ(¢F'U+õQÇKÖépw-J‚jj•**g”(Â&Øé%Lbà"W-JÀW×âV}N£j5[§0Ïõ.¼«"R‚•š•Z«¢júƒYãAŸòõ0¡ˆaY¡ j'Ì—• vBs ŒW:,š`a_¡Ãš@Ô 2³a¯úcŒŒW+Ôâ è3è'¼~ö÷##àár€Y Š ðÓæxì "ˆÌ §¸ª¬x‰ \æì^FÌÍflø+±lÑŠðe$c̦ì` ­Ï mÊ^4ÎÔ²ÑL¦ÐøE ߬b€òÑœÿ²‡c8Ð"mÉPXhÌ ÎØ²dºŒ^vXÎäl`¦ò‡ç‡Él*—øÌ¤¸(¯05‚3à* ¬¡râ:¡:Ap : :a¸a:iw*w#bB:!*`Ôˆ 8À@öÁâðV¡AàâÚb*ö¦Šá`©ýd6¡F—À”!•;¡<Â&ºa:Rï@ Î@ )'6Á»²©R¹¿ ‹¯&€p€¦Á|åé Ìààºöï•;ÁñŠàbæÀ™Q/`ÎÂ'¹Ä ž0 ”a^y @tѹܨYaiÎ`,”%(¸Á“«b lÿbzI Zõâ•«B Z×-ìw Æ¡,Ì7jA£âd$'(¤Vu-* Ô¢&Ìwü`±ä€Õ>á%Ü îÓ{j¡ ö X€B]°< (¡ €¥Ôâ Xá:ļaY@d½Œ¡^a~ÀÅÚ _Á*!œšP‹¢@/æ >aÿ\A¾6¡,* Y/ ¦B-Þ‚tâÁÁþIIèT¶ƒ®²aRhÊ©^X:¦®?(îÔ°®¡ª©´ G«t«ªã¬ÊPèô±Ù¬®ƒ$›°§ 9°°êº«¤4ðÔP<¢.h{¦Ž£°ÿÖëlV3hÆ]ˆð]¬! ܺ` Ô KÁL@ÁF(DnZP.p3øÀˆ!z.@° FA¸lr€ ¶à $d*€hà7-rÀ.á¤â.Î` ¢ ÚÂ"šA* „ÅÖ §;À:@V„9A4€X Ö€BL¥²áÍ3a rá`AkÖ Š ôÀÀä§ÅÐç0á  |Žà8 b"³  øà!‹à~0‚¨ô7”2*·HÍæl‰­]Δp_¸c…‹(¬öŽ=æP ïŽIy´ÈÖðȬ4 ͨ¨ Jɶ‰ŠÊ‰¨Ê¤šÿˆ{JÉÃjÇ0ßÊFóýÝ÷F§cJ^há 1ô#qñ¡‹`¼B•ÇÁ¤‚ *@r@ºÀñ‚!¢:À€@ ^ T^87r` €Wżá@ k*ÁtàÎlŠ î 4¬nä?†ÀÌ× :ÁÄ`jî`Á*  " Ë.A b`R—,<  ŠáYWÁ4 ª€ÆaBºAr ª I²©ôÀ@æ`*æ@ø€d¡®¨¢¾!¶áH9œ `~ "P`æ@ŠáI®`<À ¡ ‚j¬@2ÿÁë?¡.Aö ö ">*@.aU)$Ì Ä"ˆ®  à€+|B† ~@ ìº^¦†jæÀ(aâ î`ï'À&`z Íï`da<€šE Àà š€ú×9ú@z@ˆ¤a”ý Az€8ai@®Ì€B& äÀú%Z„#Þ"ÀydLO%~àx£aÇ ˜3wâØ“ëŠ59ŒuaÕ–˜yM¶åðVä ¥ üdU!˜l+hø©P¤ØŠG«4ù¹’éUG•¦Å™fÔO™j´ª•±ªŒÕÔÊD¥&Õ*×§_­vkµLØ®OÍÿJí¶ìU® ®>¥Å•–Üjˤæ-³×®Ö¹uëJÊwp5¨z÷5ü—Z\¨sÛul5*^©Xÿý«™0á½}#kM\&n駦éV˼5.åÂZëV6›ú)hÌwý²ž ùôèן¶»Z®oÕÄk_F ¹ùã½®SW£ œ÷ëµk©-³VíIƒ®Ä 6aab¬>Å‹—£ Ÿ-9Â6Þx]4(SÏX(ü2EÃÅ `¡ nÄ#\!Í*wÜ"ÛP…1Ä3G0ÄÄS€d´Ê4FìAų MÈñJ+¸QÌŸ8°‡j¬N…Gø"‡,pÿÄ£Œñ<Á‡ˆaä¯T²Š%¬ðÎ*ˆ°P9ŸÜAá•ÈqD.s¬²ŠrðQBÜÏ*mT`Ì7ãÉ™®¢Ì b˜ÒMÐĉÌÓe…ÝT² ЬRL<8ÈAÉäPRÌ8°ƒPtrÇÅÀq†'t’H‡4!9ØÌqG ñd³6Ž 9A0w°’‰7žpSâxs…¯ÜáÆÊ›I/b˜©Ì*ìñË%ÅPèÆ4,œqH™t8‡Ý RÅ*ÌâÌÝÐÀ‡¬ÛTÂG%QA+X1DÝHÂ*ñdŒFTðC¯øá1pD4…+@ÿ¨s„1àâðC&d’É*,ÄsÈ%pHãN;- kD` •xGÞdã*£AG´±F0¸ÊðÌðET°Bn•FUhM—›p`‘•–Ói‰ÕZea×–[TWÝõaOa5X^KöÖ^[vÓd¯­VÖNguÜY‰•õÔ_Å-ÖIgvÚUÛ¶Õkeí÷àIÓwvrëøXÓ¡U7×S—å÷á‰_~·àcã=7æ›Ç]^tY“‰xñt¢G0Ýt"ÄELÐÅ'8|¢Ã¬·yW‡„n G™pÓ7ãitB °’B?Ç„|c7”ü@!ÐÊÿœQÌ3|Ä“Ñx8œ‘ ôÊ£L18ò…¨%NPŒ½àÐb‰«„q„,E$ïâž Á'˜å†Utc² Ï&0UœÁ4˜€FâÑ n˜‚™À‚ÁxÄÁÜÕÔà‰;ðj9Ã<†ñ&7@Ü0ß*µ‰xá ¾@A—¶Š+˜A,èº\$†+éFŸ@×®@1-ÅøÄâ¥.Íabp6 œÁ ™hÆ ºÁ«7É¡º0ÁzîPÃn¼ ÊÚ&Ð3 €àp†WyƒP80S&Œ! $ìFÜ‚ÎÐE9$1²ˆ@…ÂJÔ!4èÿÊEWôÀ+˜Ãö°†•´G€H^‡JdCÞ8Âî ‡Ú eZå "à‹yX!aÙ8Bü€ 0ô a@DBq •À¡GÈF P€lŒ,Ùø‚Á«bå `¨D7b™ ÂH…*wûÛÛìFäȦ8±iN;ߢèp.v+\Ò,W8®˜í+WSK伿O¯H%,gè@ÓÐ|î0åCÿ†PÆUnŸ 5(áJ8¾)´ ú[Aó8’>îm"=¨G§Ö4” *¥\âBj—b-+h]–A€`¸!B˜V1¾`H!„ƒ>_ø"}¸I88¢@Hêßÿ.!„xT@Êà;À æ±a=ËF+²åùH køÙä0*ôoZ;ƒ+ZÁ;ÔâJw`Aö± þˆ/ ÃŽ´¾ÔAããÏ´œà+„ƒÓЇMƒ¬62¹à„Ð&ÐÓ;ÔkWÊV1ÚðLd$?R!duÚUáÓ€žgßÔ0±BÁ¸¢'fHžUdbR°­— x‡3¨ ‹^&Ø@5”‰Rw¸Âr±Š"¬‚>X4„P‚ÞQp{è õ#/y#W×]Ï8æ†l h.šÓ+VA€Êf«ÐØÃ®Öw‡N˜BSÚ É±7Ü!Žý”¤ÖÿŒWl¡—¸BF‚Á iœ s‡¼á #À>Ù+Ž W´ ðÖ … ¼b•É ‘dà 89XÍTV` [ GXðŠT ~p€üÀD (B¼! oT`s(À!С T ièìnwÒ‹šep-mÙÆâ·¼\æ7ϱm0#ߘæ9¸±se ÓœeÌE4 `ÌnJ“•ÇŒù8ƒáÍ<õŒà$Ñxù3¡hj†5tæ qüéÓ,ÇÏ„>Ξ-mËø¥t†Œ£!}iÁz3w.õ[ô\šéè¦ÐŠ–)D×òÅh' †¢¹bpˆ.ÿ´h€…ô°…NXõô‰Ç4àBÙ0–¨ œÀV©!zäs…nü`g£êr´÷Ûõ„ã? †À$Å«%ØÂ“êP'>A‘IÙ5Åx…,Žà%t¹a, 0¥ »žK…^…<Ð!Bµh” A7ÜTÀUÀ‚ãØ¡ø>ñ­<Ð@72ÇÜî¡ÙèÆ›fŒW@o‚b7&ÀFÈüEêA$+@©7Íá ²èF&µŠO ÁWˆŸo»Ñ¢ŸaЇ4d‘ˆäBq]hÅ2aàÇâÀ¬U†ù…¬ÜGs4ƒ)P°7 ’,¡:vD+ÿ»C&ªp„O´ÈBðÆ7ºuÉ®b­€‚V€ƒ;”iT@ÁŠ­°ÀÁ—(@%¬`Í#ÈÁ(ÈÖäP÷Dj`G0J^Á {ãÈÑ,€ŠtQ,]V€`8Bç%‚ä!Ta—9fA00É WÂ!EhÃ6ÜnB ¡rK3ÜA+˜˜’…¤e\ᚆ5Ó|_r›÷½²ÏÃI´nÿ<Ìù3G¶mîÌc‹Ü@Mê“Öþ÷§7 u•“Pˆƒ8êÔR#Sµ5…~c7 P¥}ˆ»6QcóöäY¡XQáa$ÁP ÅïÅM TNÐ"0 Á0 õÿB°râQ@ðB@ X%Í A ôusÐ?p#£Òw` qà ŒäYáp„ Eèb&Å@ˆ€!E@¼0² ¤HQ(rVÐ &4Ô¢ Ý 4^’]½0{ ,áÐÉ )°,£¦Ð B3)ãr=ð xáP Q` {€.FwBÀ T^ Ù`Z£¢ Üðvp³>¼2Í êq%ÅP`` Ý€.w‰p fpEá%Á·¦´¹` gе°8àB€ˆîv¯Pi%4‘8m0{pEfB%yg +ÿ?â ¶ÀºH*]p òƒ1‚·Ð K cáÀDW°G03àÁàdÙÐ:³k02àP¯àÛ-²Ò kÐ óPÒ– mpGÐ,Ð9 ^VPéÒ@ `@3°JGPÀ+ãRCpž0yÙð|$fTPbê!4›1LS9êG–Ái Vi›v¶öh·g‰³78ˆfù§6qQköRmÓ8 ³f†“•õPT™7 È• ¥6`ùPh“ûD€i6~š£îÇfU–z³PêÄRT£8!•N˜³€“~† À–ÿ›à–_Ð⣠QÐ~pTyÄM9P9Ð ãáÁ p+± ~0-`„šg2àÍPÎV Êð T0ñ𠸳+Eàp=;P G MÈHãÑ.Äð ¯Ð ò¡,UP~P!ðX¦°à Ƀ;U `›0E0”PûRäpqÐGÐÕ“:ß`[@p± ; +P(4{°P CÐ"B²ðQwð]„ŽÐ| €Ý 1° Oä:€ê-P¤U pW ó  Ä@ †'4bÐ T“dä@‘÷ÿ_ð ”rÏ :ð @´BH` Q€-0à`rm› Z ž 4o ŽÀ ·+µ Ðp )ýUÌ` ípá€1j 1 ¥ñ€Bð²ðä`±Ip?à <¶ kp¬ð Ùð ¿5žqp &ÐäÄà?ÀGà,°Pà²À,FP|p²ð Ùð©±Zð`Pj G`àUÀ’ŲCp ßPMÀ~Ò¹Pó@_•ƒN³Ñö'5X3~º¶ú¤Q!è’´Á}ñN~ÑÊahÏ {Fkÿ—FOªkš†¥FàêN”ögçêi‡f®È«A­söi¤ÚO¦&Ã1jØ:§ñÊÑ®“vjúú¬ÛjjѰâʯ„!da ޱ ÔƒX à òv 8p%_ .ü±-9ð4@+p@3]à °2Þ ÃŒÐt0Æ>¢ ­@â³,  ˜0¨å_@PXg¡9 ùáÔsàð®0G5@ð³—0 Ê`µáp‹—ðÆÀMG¥—p [ð!@s—à và 5Ä+]@ (7ò#8P &@ Žù#›0 :@ ÐS8¤ÿC@ ˜@ ãš*(@t@³ ¯0·( ™Ðëµ”ð-´)'Êp>@ã |À¿` ãP 8ÐJ›;ËݰBHprm˜àâÓeõ¨(@A-0ˆþ9ÅЀ¬À œÀ+õ ršª7s• ÃT"ðXmà¨äQ!8à +á«PCp, (`®P²ràŒk ‚7 ×Ù ÂÃ0 •°~à!(4 °Å‚! Qp]p8SdÆÀyC , SM8f Þð *Q@Àa~pE,PÙP4Ê)M¯`eŽzdDvGpÿI³4ZS8!XÃgÑ9{Pu)—Z–ÊšOoé”;ŒQiÙ• ˜9ì×”\sÃ}ÕMŒ—P)Q9Ìb£~eö`9~]ãPÇ*8pù8y³•˜••Q‚3€ryO|é¯ UX±”:T Ð ]À+Ûp £Â °Ð ô¡ Æà»"E›°Aäá!L5 pp°;pK6"s _ñPC›»uŒ$ 2ˆ¸q¨Å,ßÉ>“òES8Ý00¤’õ !g s‰n *~(›°ÊÝ@+Ê Aã#ÒV#P„lšÉÁmD GÜ EdÀ+ÆKG^â"­<ã l8@ÿ<´ ÜP "´ÅÐ ]R ?¿Üqs4IT Ó0rÅà=è2Gô!Á0@P”[#r$»eðŠôX-° ؈$µ8Ÿp41²É›€54s‚w%r( D´|° Ñå óP³^Ú ÒàM€(K#œ ÆP±#Y'w®0 .ÌM MÒÀCvœ°ÓG/]%ÜuE~lËW0Ð.R — 'Þà ¯Ð° p ÛÀc9R €9ÐHS8ÂʰœÓ»q®½­”!fè*°Èz–\³¬v¹N(ER57ýgQXÿÍÖ”e•'Æö§k©QRì”d†Q… ÙR+…6}Ã]¬Ró·8}MØ—ÍN¥›ÂE[@ùÑW •@:ðˆ@(éc'´rËñpPžé û!vÐÌÊ÷#‡ <ÚEÐU¦ã@À8ã0¤}ã .³Â³Í¹¦ò´²Y]»,ñPðȼÉ3¹c'vRлbµÁ,ðhµëA¦]ÔÊ«PÝ-àË~è"'G…4¡ÕE)¦ã0dš “2£¼O`Z]œfbBòÃʲR cÎé¼ ƒuÛk½Ç<JØœû=¤R‹]4¤?R@XgµÿÌâŠ7â'õ Eµ8)eê%eâÍÛS!ä]Q&@P G Ò PV -ÆÀ+ÀÒ°KÐö;*>r]Bà•à y2~ðKÁÒP$k€uÖ5v¾•]¼‚ q?“ÙE? ·3M [à p0L¢0à @À=ùUag•F<–“Œ§†¯°†k‘kHii™ö¯—þ4‘&OfëH©°JY×¶æ­Iié¡koÖ­òº[ѧ¾”6œ®˜öfF)hY᬴ŽéÒ1×Ei¤Öh‡vë¡c&êaù¤ViÖ ôÁ>µÀœPT]ÝÌ ÿÇ —i )>ˆôÝ PÛ° Ê@(c Æ èrÑ€GFn ÌÖEspŒ-@+-° -b$µ@ß8àµv‰Ç¼ euàÔË™|#eŒ›€ïFÊ;¼ÂH­¼ãñD¾<ïºápWðˆB-àMd „ÊÐ s0]ÂʼáÞ,ÕN+W Ö ¬lΉwðÎ8 Åë%4?ßÁ›É‰X >r#ýNàÞ pȼÉ÷NA&4*³¬º„ÿ.µ€#Áð®{ŽcÐð½)Ó‚?€0¬P©CK/DFì Ùà ¶ %°°#Æcœ°CBÓF£ÀaÿÞÐ+°@¨\9¤êRÓDŸ ŸP + ÒÐPQîjÀ Eàý+0Ö 0”ò \~~'œ0Ò3ØWèI rÙ›SK,6àç}›ÍûýdQrsÄ`¼Rü4Æž¬÷”6>ØŒm6g ÄÇj¬\|û] SJ¬Æc¼ÎÏ–gÌ6X9ýRyýpÉ7½ïütÚ ° Ë ´r[ЕàH — å¸FBÉòÑÜnâÝ GÀM0'Óü¬¨PA™ÀUÊ‚) oS¸+ñµ˜0!ŽwÆ×"d¸;)Nˆ7çN¼ wZà7aN¸Š0 ´ÈNÿY¼x-*ºùÌ$PAÝl¢¸ó%K¨á2MX.XG(azXd±“"#®º:pA8+R9®X8—17#(“ä*ª8aÞ‰îÓÞb-çlõH·æ¦­ñû„ sUW”8WáE|‡._¼w”ÅŒZŒ/UÏЉú¶jæp§=O‹‚¨Í´bÁ╈÷øÈŠ!m2eZuÇ¢ œ²¹j“Ã+ª«æLÎX?9¬ä€áÈ6oÙŽÀñc,#Ž`wÏÙöJÚ‘Ù¬GðÆŽ·¬Ú ‡ŸƒÅŠ#¼y[C p‰¤V)fãŒðã•*X£8ÊpÐAk@)£)¬† '|°Z&ÿ\ÆÁ0ìš@ô°šj>,£Ä2:äÐCiAñC'´ðFj4|pÂ3Üñ ԑG /rÃ"+ÌÑÆ‘ÜÃ"{”²B#ƒTÒI-„ÒG&±ü±B0tÒG!w “Ç ¡$2Ì)Ã$sË)µ$RK2Ÿ\³Ê%ñ|3K;­\qÇ3¤¦Ã?ã ‰j9¨›bjï­Nj©hƒ‰^ª(£x(Í*˜ â9Ài~JjRœ„RkµR«IÕŽøŠl³Žúª)VZûª+2”d2ÉÔšLÝÕ$Zp£"bqª«®´à²´£Èê(«e5íÔ8«I³Ì #¨*”ZàëÖo¯EéŠÈDë*³Þ<ÿªÊ£ÍpòˆVpW%(WÉZ`³ÓTm´Vɳ;\J _–RR§€õîã*Ù68Ã(Š(¨“Ú8Â# ¨$LŠ J¼b£ˆŒˆ ‡¶Áï½Û†ð£ˆ`º/ž`öÆ„•‹ðº#š("?+Úðƒ…¦ÎVXÈáˆW^9â¸h¼±)€ù ¬ñ¦‹þ¤ Ml‘K>,ÓÌ µðL2_l1F¸Ýf1ÐW‘ÂIœ–»õ~±š¼/CoÂé¦PÆ·SÄûî2–9üñ±åŽò@ÿsl¿ùæð¹÷±oÁõöÚrÒ!w\qÅ—1ó½ÛëÕYÔÜEÍ;ÿÏïÉ?¼õ¿;¿qà9oýmÖÿ~Ê%5ÿ E¾}©˜ˆ¦é-<¢‚9 %‚Ræ%7ZȨ"jï%V£[õjŽWœzú¬_Þº5-ÌšõÈÙ‘ºš7ûŠv•Í$£4¢H#¡¨OU‘ŠHX®fyK-")ŸVPb+øÕÅ}âQÕºŽe,wa0Vò« ^ª2/R‹ïš•¼T¥™ ŠG4ÿÊ˪¦ Ϙ†3|àgNÃ’Àà ÒˆÂuh6˜i¸0‰GV€ˆø"=œXÁñøi~€C6üà ?œ'p€YjC–;°`¬°Î{Œ`…lä è±sð oD ŠN6ÿà`¡Á¯‘ÃKâ០cˆˆÍ!.ù(D›”Äħ³%rNKBÓ“P„!G^é‘C"["φ¶1™I”YêQ•¾ä§4Õ ON’R'?9I%‘ÍN`‚d(Ëv¤5± ”§ô.W'Xúˆ’}Òä¶Ô§FæˆEQ CˆB´ŒCõ%µÀD'hÖ©xà@ ó‰2¼Õ‚¤dŠ+þ“H0Ì Ù¸aTñ–F:‚ª®¼K&”×öæ5¿iE†,òŠ ´„BŽ”Ê*áà׬xd¤ä{` éeÀÆ+ã˜E˜½ªõ$_®a_$wnŠž±hC=sBVQ„ ›a >1ˆÿAæký`µª5•î 4bÁWM΀•`l£+XºŒ.ð¡SãÑšÆ(Q Wø{(B1xãÂbÀ¡Ó8Âü ±`k ªÅ‚q…OÜaGPÇŽP4ôh¬Á8Â4¼áŠ hgVB(qVT€Š@À ààVå@CíÔÌÊÎxr@„•À¶#ä¥2C²CQð2'"Љ­rE*·6+e¶’jJ$Uû¥$Q“™­-“'Ù¦6··d-ý´KÔÚ2JkÓÐ1o™ÉZFò´Ëe®q+ËçBR·6ªäÚÔT[ä.·FØ}Ð278Z8ŽË0`<”Q‹hÿÔbˆÊP†&ðˆNPm"æ¥ÍdãÙÐìÆ8À2õG’!ÃBŸ^RQ”2«}áx‹N7è®yùd#>J š#¡ÈÄ›FéHÂᆗ„x$ÈêV„A¨—f媥Yç³D™©hk=A`®þ‡àoæƒ8®ñ±â†Þä¤ÖòˆF¯5šÏdB‚¢y UU›æ]Ct àðˆ#ùA †ˆ}l¡ |p@BclÑueAà°E8ÈæGua$ŸìçK[Þ0 \Ì­ƒnÂvþL4¢eãD;,wNv D "gÙV± ? ŽEâízyÝV×ÿ”£$åï ‡¸½-r2’ÜåR½ÈºÅN´¡MŒþæé×ÑîB¨V&ˆ„»Ssn×p³›Ýþv:ËáZ×É\]Ý*gëfïZÚ,6¬‡=:Ê=ns£ƒ6Œªý¹jç(xµVݵé&ÚÏmŽÜuóž–é¸e4 Ö¸BUØ[ 8lF?J:q‡ùj*Såü£Š`ŒƒLƒ(§@L€¡Ë$4t—¬ŒÅ,>Çîr« ^ ¥ñÉ®h’TѤA!WP´’o9”. W„O%•‰lV¦a•«Þ"+2 |;oá¶P²˜cyK4Ÿ)ñBø@WPÇ©áùGÁç™ÖЀöÿr¡e‚„#l¢ªÝHŽÐ†6¬Ù¿gÈ„ ƒ-lC ?óLÌÂ³Š Àbo-Bà°VÙÌ¡TÃuVièyhGH#Ï„æV÷vÛè¡ÎسW`-mŽ€/¤Q²`œç°•è†`RoÅpé²°Åæ¬KÜTÚ»¸E—h_{ÖZ’Ôº—¥1Õ–6ßBWµÜ=fw›% •é·Ó¥=&ck6Ø)¸Ä/­Ùl ]æn·ö°%56Iâª6÷œLþkiI ¥¿OPax:Â^Q©³AŒD”aƒ°D Ô PÐY¢ø°]™€ Ë [¡—' Ч¾À' J±y*•y!ÿƒp¹‘k´`ÀÈHŠ K1  ã(œ8©u¡n!%Ë•ŸÃ èQŒ˜r‹uá ¨)ðqÀ(C²oÙ¸›’ˆë(Œ³•m鈛©ù–Ê„}ÉÁbø‰;X1c…Jè‚Ì“ƒb(†m`…#À–x‚M¨c0‚6h‚(ð;æ¸%| oÀš5ô†6Pƒh‚"è ðÃ*´°°{«l0™ P3õx´üÈ¢W "y³-2‚=C)Ê+„i ˆ€Ãz9˜7àCY“6á¬[óWpki«µu“¾&‘7™-N 5T‚“\¦=Y%íC-çGÚ’àÿ®QR>*é’ßB›Pýâ‹.ßj[lêÂ%9!.^’¤ècÅQK¤<1.E*à©kh‘e¯CÁ kêe ª‹•`ð˜ã·üR'vR( †'ÿS'™ T „©f»ˆ´!÷º :1S Žð&íA¹;@™H§…zŠ ‚À‡Â¼ zy +d2˸¡åp!\a‰fù9È©U©!ڌи(ê?;º(›±¼©Ð—p‰©£#B”RŒ¬Š·ºD¨„axª™€Xx3(€ûH50¾ðÀ+"ˆ‚ ؆â€ð˜ÙÈ‹ƒ&Èÿ.ˆ€@{…`é0;#ࢠ˜ƒ"ø„+ »éé§+8‘‚6C# ˜)z™ˆ8 ?‚`Íðš2X½UÓ¾fñS0¹.ÙÃE·ÙÆÛà!Ã1¶º±ΊÌ\£dk7‘bã5¹›[ÃÖl‘ÐʵIЙMßÜ4‘Â1ÔA¶ÖÎ×ñÏÜÆÔ™áù,FÊMM{NÝùÑ)MOk5Ä!M±‰Ú:­olÇy‚+à eø‚Gx„\ˆ‚"ˆ‡m > Èÿ›ˆ8ˆ §üjŽipp™0óš0o2 7ð¸ò© ;,‹»:~|±b C92ðÿ¦Ý•U)œ@•pa–ªø#§È’tÈü9!S•›ÑV9©›|—ªx‹|z@™" {:´€¸d(#!£Ã ¸À õ Ru¡™ênàÊØOѳ;±¢;W8‚2´¼¨šXëðƒØi€i h p‰m8oh‚5Ìc(Ë·*€ h¢„²‰, Œ„2§"è£LŠ) Œp?¨€>‚C|8x…5Ø¢«Ì†"È„Ml­Q6=1-h¼¾íCäªÔØ«¥îs>ÁÌ`Ê`4›Ùº$QÚTRÅ‘gŒ“ë‹Å4™XõÅYô­¶9“SÕWmÅadÿÓÚ%ê¦k®çb­ÚZ’VZ>e”0O‰5Ð7˜‚Z膾¢8ØõR†¨ÿ‚™‡è/Ù8€iˆ'c –QÉŸ’Ë ” Œ;Áìá8ƒÌzˆŠŒ‘+9œØ°‰  |Qµúò)Ð â‹Im0›È í:ɼè ÷áŒ!Ó©P[Ž|AÑ‹ë |"bX|ªŠ©à‹0¨–®;B“Ék‘(78D(kª¨xðƒh3𸃌(†´;vH€¨…zÏø ðƒ&8,Nx€ :€NØ‚¥á?¨?XD€$:Vÿ†«ê ÿÛ€bp€ìè!â(Ž™(‚U¸9 Ë`ðƒlXl`@볂ƒ @È<­ò;¾@¡ÎÃ!Åä\Nçâò>dÜ­ÊÌÔà¾`¬­É].;Ö&Ñ…ÔZÝã;?Îõ¥f’ñVæó“áóTÖ½‘ÎuFNê¾T ÆØÚ­Ü²’29& AtË‘îüÆeÏÊhè€?â ¸`æ0¯`/ÿ:š)W9€뙆 ˆÏx%¨‰°0 ƒ Ç®¸ b™—êÐü@R_‰˜0 SÁ¾€‰Á Gı–º!„(‚(©šè‰Òj©Ñx õÿº\éAÎ €q©’~ŒŒBŠe¡‚ž‡úQ"œ¡¥lƒ’Ø; o@5¨«€+X³l šÀÀºˆ¸9x+> D·Êe²f';š+oØ‚5›Û¹|Œð"ožÃŠV€Ú6|šÛ€Ï[³#lÐW¼H ˜i3?°,²˜¶\m+ƒ'u«N]"Æ9yÆçÚÕâE‘5Øñµi½ÝtÜÔ¼µS+Ets5bã,f“6`+¶éœÍÜr3E¿Q‘¹!ÅÈ ä †Uè£Opƒ3€ƒfð†9™ ïàƒ˜Á ù.‚/np¡ïo€NðˆßOˆ,wnh‚`Y@€–(‚KPKb Jð Š ‹V`¡i‚ 0DG 1 Òi»g†ýp‚§õ0Ð8€ï‘ðCø80‚Ànÿ‚+€‚o§Ü†lóo¨=Xâzë*¨‚# ™Cô†gˆ=p ŘƒN€Y@pà¢Ñ°ÁÅP•ìmkdok¶ 7Ñ|>ËöÝWÕX"]×íÄÛ­.YìÕ7¡“N¢$n?wÌ”íïcÆj„÷Rû$[TÅèó=a\UáFê«®Yª¾U‚®¶YʼnµÁIÖù ‡ ?è‚G(3æÐ€p‚rª€i˜†"à-€‚…;y0=Èʃ‹S(è€K¿—xЀ¿@ eÈv‚(ŒÁ„Vo‘`)!¸!¨ 2@XQ€…yX÷ˆ3 ‚(ð„xœˆ5p„yhÿ‡ b 8ÐЀ3ø‰ p‚\¸„8@aæ˜?èJš Àp¨„C˜>`èÚX…VøF`…ÉÀ V8„h(  O€‹£hcÈò`ˆ€*°LH+oOøðÏøh0À„CXw¡ 0àƒ ñ{¹_h…^@ýiZ…N {rhŸpƒLø†L8 ©O  ø·Ú€ƒoP‡o0†ÞXhÐ*…ªø! 0ŠžGH-øõš¸² C`+0»J…p5àbîø9¸(‰ÐÜÛ6ƒn DmpÄ#` ³­"lkâ'ž,ÿh|*¶ÊÛ6h˜`qÊám œ#äŒÍóæÍ 84`U²ÄbM6o¾PjãÊÏ+o,V@ÆÛœUñâ刲ê±#J«•¡ÅÔ¨2RVsZ†)Ó«X¥2¥¶µkµ¯_Ëx½*õl5¯´¦ªm[UíÔ«k«^m ׫Ý2y×6eº–š]ºM§†åÛ®^²y—–º÷®`»€ Oî+ذ\Èsi!–ìY±c‰ûN~[m1Ó¼ŸûZþ«ôäÒV17Å:2b«Œq›¦Í™îiµ~ëÞÞÍשì¸i±–åÌyYƒ0Ö®Ü Ç­•˜nà+Vì7Q:VÄ lÚ´ Þâ° òhÚ'~ Ìãÿ6¥‚“m@‚aÒÁ¢ nÄ#ÇÏ4Ë4B­2A_¬E0w,ø ÒðB1Ê4Áb|ÑÄPlrDw|1A8á´ðIf\’ÍÊl²JS!˵3Á&[cF {ÜÌ&NÀ2Á7ÃtBä&M<"Ÿ 5Á8—DÀ8„sÇÁ$#‡+¿LpÇ&ưÂL0Ô*S &c޹‰Üø0L18ƒÃ—ðƒñô‰s  Ä)Þ1Ç#Å̃H0ñŒy1{ÌÓÉ‚ÂaŒ¿Ì8M<ܨ! VàPË&ÅxÅ>²twG-wÀ‘M?tB@8ŬÁÉ*ެqG1ñÿeL1Bˆ¡Ì«ÔÒF1”è°J°%sİd3G1q%PD±B%(p"M ÉhÌ+@ø±‡f3æ*«ÜQ • "wwì±M'FDm0¬ ß8°_7gpÅ*ÁŠI+`CÃ#Elã‘1¬t“L0Ù(•Í+wE]E6k¼ÂН±M%ÒŒÃÂ9 RÄ'™ÌÑM7Lð +d%Q1wÖ`£!w5f¥…ZM3 5ÒCgµÜÕZqÅtXM?=4Õgyµ×fqM¶ÕROm¶Ö[“uôÑlUÖÙts%u×YÇ]5Òn÷ 6ÛoM¶ÜfáMuÜ„‡-•×jcÿ÷ׇç õV~ßÝ·ÙÌ®øaN7 X5PóA<1†SA¶’®ÒÝ µ³¦2Á(£ÌL³Í]<ÒB0LÝ\‚ž1C {Á9A«Ü7$°nààSy]®ùÉ |l9i<¼·É8àw¿Â#ÝÄS ²ãtCE©»¬1ŽT°céá(l«ñs…,9„3”2P‚Lôâu]zÝЊU´ K8XE'Laym¯ˆX@<æð¿×u" ˆÀ—2¬3üdMw(¼¡íéø4¦Òõª Õ)]1ºÁ‚pcAÐZÅA ‹ +g˜C€¬ÿŸÁNˆÿ,hQB¨Nw>‘[ÈZ[òŽ/.ñºU(£Bt”­;|bb+ˆÀ¯¸t°‚|h‚*oÈ"2¹Ø2Á |‚ŒwÇ4X@ NÀ«È„E*ðƒ5Ì¡pˆ@6²á-°Àx™XÅÀ‡5˜M€ƒ4<`…˜t¤  ‡)fŒ­¢ó@°âq…"x£óˆIŽP„#d¢H‰7àp€LD •RŽ`•§D…+š{6Góšª 8Û4Œ[¬26«ñÍin 6Ó–­ sY+ Ö2Wλ½s愚ÝÐYO´Ópz³\Yà)Ыås ÙDg@³†¹¿ÿaEŸtƒ§5×ÏʱÙ|Ú°I·ŒR®+yÉL–Aç¤å ÔYS€*POèÏ ««@ ¼ã†`¸á±+‚„Ppà ˆ€1ÜÓ¥iZ9ðD%ŠQÔlcžàF—”Qº5Àb «‹W 7#hÇØyÑÜt4mi3ïÐܬLçàÜhªôYÐÃs¢g“æ?ÇÊÆ©ra,=›´ìY4çDcÀ“V§ˆpÀ†M â;ð¡ ÙÛB8f©ã •œÚU˜Gyâa 7  †P WŒl´ƒ©'œ±h°¥-ÅC‡`°ä°¦ °  Ò_<ÆQ8`ÖÍë+~À°Mà sP‹‘×MÌá ¦ ì˜Â‘‰OÁÒˆÑÆ*Èw5Þ™¸‚¢q[IIȹ0ÂPªE5ÀBOhAND1[šƒ7zá yµ|VÂÿ&¤*¯U¼âGJªŠÑ‰mè€ãØÒxÞ‹N”Q^sxÔÐ XŃ ÅxÅ7ü A.ù›¶¸‚RcH(éï5¢7@ 6Ž©VCåÅÝž™@GNïwÀô±0ÀÄ7溊e‚ UÁ ü°¦L(LеH \"(E5âèÉø™(BIÊ“‰ ¯¢°¨@6€Ð„&€ä¼²n&º!‡)̉ôF €…)x£ê‘Ã'æàáö»E¨@`qõx#®0Æ'l%!e˜³hQ³gÒæR6¬]m+(E‰S¶ª=ÔžR³[9íù4ò{ߢçL¨ßÿŠþÁ‰ ûŠ+[A+Os~mqV´ÓøýÍB1T:•Ÿå˜ ~áÍ@)TæHNEÕØM;q™EQ`PÃ2ÐB|u8–ÏtBP‡4‹E@º°@¨4øÁ4. µ$‡¥¯vƒ\PûáנƱþÙ™UƪMëÿnŽÿéÓßXà]^”þ5ñ—¹ª WÔÙ(µF!ÔX 9]“RÂßP”NõEI5â`ÔßÓ Ó[òã4”?yõÿ5àYµò4_`Å ÌÀ”1O Eý¨HAgcñ[ŠHÂýÏðnŃ ¢ˆ€¨H ä•c×±bOÀìP›(öuÈͦ#ÅmY¡Žƒœ — H}걆4ИÄTÂEÑl^!dKJ^½òk‹¶¢¸ö ‰â8dè9' ÉݤLrKÕlßÁc‹\8l\{Ž›h# s¿Î¸ÝPEÑi¯³wÄK²d·Àw:#ÝëÔ'´´vvO²Y!SÉ]Œ”N¿™€ÿ ‰ '˜€\BÉÁ0’”ø³„ëk¤ëª%åGcÌY`ž­Å]–uÖ›õ«ö|WÐS=Áªã`ÔØhõ÷aüÍ_ OŽà°%¦…ÁaЂRƒkv_²yüDµ•ñ A6µ+6d§mòcz t:ds:sÃúh÷öi{ö/sI^qW»¶á¿²oC7`»öšKcUtö–4д‹öiÿº¶<äWÇ#ûik6°¾à÷Ø´¾êÏæjÒ+æUx›{vSP-H}ºþy‡·m¶{•dhµ¾Â}¼”ä' €T@‚]A'¬+A‹†•u‚R!°øÐÿùÁLT7D 8n¶ÜD%ˆy”[0”Àlƒ4¢5mVT Ö¤S±UnVሷpÕbwî8 7!^¼;Eæ|útÀÏ 9¼y+R H1ït+r¤À‘23gZEçÌjÔª•ÙY¦OZ=‡R+:´ ­™ –R:SiRŸE{V«ª³§O­Y­jõúõ'W§>y’ÍésçÕ®^¯žÕù–­Ó´[͆-Öª\°sif¥[·ìV¹Uó–{دڱ~±æ®`ÆhÙr…›ØnÕ»—%ƒe+Ø,Ù£~~¨¶¬Ú‡(† wçõëxâËhÛuì -X»!0!ܪpµã)S69òÿãÊr»VÖ"÷„;Æã…c® öà°‘Ëv<{¸bÝ'^„-¾û„boç^ý|×Ù³WüuûóÜ»g¾J:éÖ°˜'Ч˜L¤»/¸u /¶Ö`ã­µõ^[;ö’k0“‰2y 6/Zå8õ&Ž¢ó¤(@‰ZC±AŠŠñ5…CñŽˆV‰éî˜A>º8@#‰”p•n¤q`D("Q:eâ)XAÅø$*Nޏ#˜Uæøm•+¼Éáˆ(FÚ¢¶p”(7*;,aûHíVy¨¶#"8¢ˆ¶0f“L`Ó(žŽÈa34nê)¨j¨ê)0¸6«RL ÓÿŠ)©¨aêS¨„*#TOAíT)I§Zj*HIeJÒP%êU¨V 5ÔÓ¬BM*U{…5*^‡Šõ©2P󩨒ЧH“ÊÕ§J]VªbSÖªTƒuWT™%öZQ‘ýÖÙZ§]UU]“"ª§c•…ª]v…Ô)mgâµÓYÛ‚Šž>¥†š®Øo6. gƒêZÈHºpÜ(Ò¼ƒ“ën9àŒºp ##ž…5d6æ‚NB óKDôÂÛŽÁŒ2<”¥†Ïc)¶ƒãg<‰òË.g'ÞnúRDn¢øºhÀšsÆð;íæk/#è´¬n½"·Ë-ĉÖz<O,±<sÏG²cœÿhFÃQ°¼AÔNÆxpˆ¯ë‡‚™àˆ.`‰Gä‚édÏUŠ †î à‰º£–ZŽØ"A0ǻ8ˆ‰: qœU:ñS‚6Ú(¦¹I q¼`´ f<7$’nîûO"p%‚5 ðƒîûêZ˰)§°¢Âö­¶,ë,´ÇŠw §µÄRžTÍ,û©ù¾î‚~z²®×‹®Ì¢¿‹¯â—ïž/éuâI³â£_?/øÝl-ÎÊïªü­ærÞ3Lû+1}ÙŸ^0³˜ÌLÆ{ÏÓ -° Óij“ÿ|qA`3«GNl2ùK þ¼ Íknfšº¤Þù´ÀfAk}Õk@ ›`T@ ¸ 7ÁC¸±,<üY‰*ÆœÜ!7× áD­sµÚ\ 6+ŠÐ?¶Ã×mHf‰<†Ú–4½ÑAÜy(QFÅèB­™ƒpæpÒïŒtƒùÁZÊRt²‘Vˆô¹zÈF´à0G2Jäv„S7õ¡ÂùŽ&bÕ<â48r¢æ–ã£Ò@JŸnÈiOñ(‚ †  hÞ 7|Üx£ ¢³Ðptƒ¢²'‹ØÉ#³v'ó!iÚÆC61ØäÄQ¬êUªs?ý…ï™Úÿ« Rô…¯¦ËY²²•¯òåaí¤(³Ú¬«X»Za5…X­Šj2*Ô²*]¤­W´’¥ÚÓœÖ^µµn§Y`ÁK˜©ÍÕ2\›­¥È«¸ÇUWPP [ëVK[ÙÚ•kWµÛÙöÖZØ%o¬JÕ©ÈT# \-:°ùD ›`Ý6á4l6O›Ob•óÔë¼°9w ƒÇŠCæHô;2‹„(,³Áî¤5[Ùy$–¡%^äC)k؇CŠSÅ@ë[Ñ|tŠ̈þ•P‹îSá*ʧ<ÿùÎ÷ÔáqÇO%ZˆBôT¯‰M@#âšž:÷¶"h„;zÍâ`°¡¥(ĸÄÿ'V²#D„¨Äp°_ŠŒ#_¸DNW´Od‚]@„7 tÁË'b(*Î%ÍãDì€èD)*óç0Í.Oé ñú)Ð{-/š9éæû.ØI“Òòûf.Ÿ™N}nÚ˜ïÄ'8I¥K·@/S¡v¦¿’Ï¿ÄEÒþ\ç§ó§•cÖ34Íäç¥ ØÏqºÏšVõ¯ßë–¬ ¥ÔÿRÍÀ€3²û)ÂHµÄ+êƒ Îu¬Ó±|[Á®É·‹² c[¨Fbü`jG¨’¾ÿ\²Î5™l+ÖÓŠºª­IFî¨Dº tCB&º°‡´B ÅЂ 2"8äd¢Ì]¸„JWŒOÄÕ`Ã4RŸ\°öÑÍOšÊ›ºí‘6%™DtÐ8|¢§¯É £!³t —½È“îhzuMëQ3×jI ]¼Îä!†ûª§7­‚ÌÉl*}óäfûøÎ<¶ï/y_{gÁw¿ö4âCäP.à„»1¨KT‡³ãÿ<6µ=ú±kr¼³G´N¾v‘ŸìÄÚ#iá?ôšpÊSo õxýmÐ*šlD¦P6ªÃÈTŒU@%2º£€Š ‡9¨”&gŽ@TB!Î @Œ!æ ªC‹|h"0:&ìÝà&Ç„n¢.p  #Šæ™%+t+S&­Ñægž(#0¨Å[|åXLk\­_ªA·n«[ kXryë¶Öå7Ë·H ºÜeT‚+˜Ü%˜ÞERª¸ª¥g°¹æe PƒP¼npZÄ«X^VÔ ¡ÅƒKµÚëVò… “pãE sE+úe]–àð .(&ëóppVÜ`ÿÝdkÌa0¦:FÆ¢ &öÆ¢«öH¨; 82fé’î…^Hé,(‚&b4Lj†ÊDÖmÀÒ¯©‚jÄc=Fñ"ìC8,æÀ‹,?´HÜnNm æOïd.¬ÈLcš#úÆaWCj<¬ãPàƒ>úëfÂa6ß6„;VaFj%¨¯¿úke fC¢#/hîÀ‹FÈ!ÆÃ‹‚9¶±䤲þ+;‚áæ…ääXçö0Â9Ä­ùB16Î9Î@Áè1qHfYõ*kënâ,œÂ -žÞŽzÜçìþÎÓî°í(£!Š"õ.Èòž§2¶çÓÞ«!±Çœÿø©{ª)zÄéío_ØIØV²1PR%!’Ó(ÖRò͉$É_–¡Â@`B*M¢€“‚AJÜ`7Œéšƒ8 *s5æ:0jÀ¤¨HþŒ„†ÊYïô,jFæ<Æ?†ŠÃ%´¨Šˇœe’f3$-'f+É2Ä.q<|Hú¬öF‘,Ñ@Î2•î`]ÃÓ#/ó Ćƒa²-„x±n-«Hô ©ôäP’Aª¨THÈ´2Dâ¡ë‹h¨ÅcÓ8öïL&³<~#ÊjpÂrmˆF ŒF9ª6@bòb$˜2kz0Í+”bºØ%W Ðÿ9QÕ0ÃÖ,zª€L°˜¾Ií/$µ)´¬É:ñ'´Ú¢#ÉS~æÉhbÒL0îLP9·ÓžHÍ3Ø>ÏIØŽ©Ò(­3 í*ì³îŠ ´¶‚Wªg(àÐì«AJ 0"p ä€ád#GlöâáaSc„³, Àõ¦26 7.ÂÝ,jBóÛÜ?žÃDëñ< æ/‘f dÔ’F¯’4«ý2F'à.Mñ<>ä.]#ŽB Czjlî@A¦O§¢Ïb^ôúœ‘X É$¢Ç°4b$9îÃBø ±hs"æ 䦿d8zêD0hRìJ`¹cp@bVA"äÄÿ­îãÏBÎkì B_d£rf6ï£ tb*kZ…ÖfVáçîÆDÄk²@‰E"B"zD%& *fâ ’»ZP"o#¯.Ö® u«¹Žk·ŒÂ¹NkTkX¨k»Ê+UzP¶tkVŒ¶‚I¶”Å»|ÕWÑ V¨«·X !mE­K “õxrYÓë9• ÅPY¡5VQkZõëè% ™Ó[]µVÉk¹~ËX¥½bk½$(Q£ òƒ6üÀ€€6þLÂæÚjà ‚:2"Q2&>ø0:FÆ_»m8XÃ!D‚2>¢Ôó£NâÃô¸¯Ï"jaŠj-‘£Hµf¤‚†,Ñæß dÿƒ€c2Á/=î>˜ =d_eª5Z .§Î×;âÜ@DÞ܈33°C3>Žd5/6ý" õÒŠ#g³ÞÂG¤Æ§Ž6s¤öøɬ $F.é7Q©5 %âžê!Ü ý´ƒjø°aÎèmìn¦¨Ú2È ëׯÀ^åÖtè"³ÞË·:…1Ôg=A-2¶s12åosÍØ’Ÿhm:KíTIzjí{´$TØÜ‰"¯3žRms×iqïîš"MqQð±ó:§ =?£pgÒ2ÍÕ˜³_Œb„é 1¾`¶ÀPŽ!K> ¦9`aã Ü€H8lal£«ã9ŠCÿx¬5ÚÄOON†ãϰˆ°`ãÿ¬¬ù*&ˆücC‰Èvø`rddÔrHDìü`ˆ\#¢€wj4*@Žæàn¢à•5‡T‚äm2¢`_Hà dͼÔlçà*‹¦æÀ"€A8`n„è¼ád‡Qï# ŽÀGçOü@ öÐisX$º!0wäÿ¢ŠÆ¡4À ý«@:ÈPîàXákædh€uöK=@"Ip|NŠ€5´ã7*á ¤räìP®3¥£„&¶C8a°Œöô`:iŒá†@%¬.fçÁî@Ž m¤"€‡1¢rà¼A:"bÎ`¢ O&¢XàX!q $˜­YÏI}.혙š~I³tÐ Á•]§°Sðå o°¶Tå\ÖY´yLK [ë9«k^„é¶Òå¹ •·ÄuI›¸â…µ••XL‹ iйviW›eµ ÁÅ'N[XÐ\&ÛµÃ%YA˜n5 K…TŒâÿSf‚ˆ#½¡ @Jö#fƒ!5¶{¨ÀÀ6ŒáŠæá 6¡ˆds F'>Æöà ¾à nc2A´ *‹6$â â F7ôàPnÏV®K)#  ¸!¨Ubb@ ìzOŠaª Ç®æ!p o 𢡠ԃ݊¡À s(¢å{ÆÔGš@ èL•÷@  ‚F%B \3WÁª  Â6^h  Ì /H :  ì4OòJ¾ :§§ŠA¾7vdŒ¡ ~ °§ãŽ  Ô P#‰<  A¦ A tàk:Á~`t‚Æ_‹A4a¬là ¾@ ¤$Gp€ dâI¤ æTGJØ€4@ÎÀ6‚ºÀ†ˆ3J< ð46`˜¤ \çÅâ¡t€Ú #pà ¾` ´Xn:á´ÀÞ,>â±âàa2ánöàh § Îà¢?*á `A ¢vzÀ<`%¤ÃØW€öÀWá:!˜¹ü XaæarDpp ôÀ0ºÍ@   VBö€~àNöDâaZÁÔ`Šsäæ ÄÀN‘ú*¡ Ư@!Ä&ÿŽ*À¡ØL P@Šù„<€ ¼áIÈ>\áÁ)bnVa\ÎàH¾¬ô€Øap¶°ar~¶%æ!(!EÂdÀ€ÂÛ§`wâY£æ™±b«®ÜYõ- ³9«îÜ9pFÈ!8rJSF«Z‘Ö@•9Y†Zµj*YŠ<)r™HZ#iV£Y¦AÍ“:©é¼©r$Ì–#ƒ*òåÈ—Ia }Zt%T—)“]*”¨Ô–A]¾ìúUäQ¥RQ>eZuªS˜a› w-Ú®N›Æ•›5.Õ¦'µš}»iT¤|Ñ6‹’éÛµƒ+5¦Ì*—…´FN¼*Dÿñ³Ê[<å çu‘;Á⹡QIK¼‚‚“@¬K±ÖW‚ÁùB#ªx­çPúB¥Ûe#Ä ’cN¼éňEqT$“à Å.å0€ãá*eE*õ‚3aÁN:|ét‡9ë*|¾³H`UL°*Ý¿3A<ßÁL1 ­2Á:p‚Cd2'˜PD€wd2Ä0‡EÅd1&q_&wàà@–TÉ*s3A2@hÀÍxMóMÞ˜hÑ—¬Æê]ˆÃC8rE&÷Åà EÑM›»ÿ¯¿»<°Ç;ìñN7ß[qÌ|4ÍOFÌ´°QƉ´OÓH0Ŭ)³Q71Ä3M<~€Ñ†8QÁT à0Mkt‘ÌL&n8â‡8`'_ðãO7¹äpˆäñ(3:£A”ÊÃÆ\2â@ƒ°ìŒ_C…/Œ·ùÑ Æ0´JSX®¹øˆDÑÉpñìAC<:\1iñTàˆŽL“+ç]ÄcŸü~¡&ñȲÚŸl7̈¡-šPb…k¿’L'Ñ9G8ñ¼" Èâ ñøÝ8X@‰8`ÿJÚ®`Š3TV¢Á8ÀÐ ñÜA ¯‚Îà¼Ux ²°‚mVñ >C ä˜Ãfs†°  xЭ23éwñÀP€GXäB{ðÄ$‡|b@ö Çšb¬àÝ‚(btC Þ0Îp ˜ÝÎúXÁ 8ƒÌT.Œ>ìá!ø„.*pÝ¡°°B(ƒQ£Ø >ÂxÈq؃*°ÃfF%6%¥9xÀ½8B'*DÁ Á$îÊÄÎB—Ŭä*uÁ Vó¦ÌE/Œé _`‰¶Ø2-y̺³Ë«(f(wÿI 0i•d³1¾Œ%3Sª°².ÓŒ%U •_âe/^K3 £K²ó–c%ZP2uY£  ÅžÐ›`” ܨÄ42ȶiEhM0ÖV›è1(ÂæÖf€¨”»Ã%‚!-ŒŠÁ8B¤à‰n.`è,|AÀÁð@´³GD<"T0€VQ=Dà•(¢Ži"TÓÁ)V ÈÁ"Áp‚,V` Œê Åàƒ†0W0d4ß0„` ;°ƒÝpŸ6" Àȶø˜<¢5« @4 Hã>0ªD+š8ÜgÝ ÿ%ÔÚ ºF°DÅTTÁçÙk1´`‚J€Á Leê<¤Qÿ\a™@Á(ñƒl´5ŸxF„ðƒìèÉUp…1›xˆ?€FY9Kœ*ø ?ƒvæ0 K8 (`V<žð!øâ¸g‹‘‹JÐ@Áð š`‡*ü@”X³ÎPrh +`j<:ÑásòÁr!+hÑlø€ˆùr?Ð.9Èá‡+#pð€.ÿ €Õ‹žŽ7(Án>à¬wx1r¡\!«ˆ€PâEçê;Ù½DåâQŒ.C P"Ò6(Ñ(<Añ8(Q|b4ME„'¾á~¢ (E%L”‰q! 4pD4C€NpbN„¯Ðƒ.TâĘÒ>ˆ8=`+æ°LT€r(‚1¬ÐCô€:«¨MÀ ꀳ>êÃ^! AU UHÀ**q5pÈ?ØC1Ò¢NPÆ@A&"°‡LtÃÝ „ž ‡ndb`d7æPü j€C28ñ Vd u¼Ã4 8à¯`Á#*Á‚#ìÿá¦@*ðnìak¸{0Ôñ 1 ¡,£¢“¡œAJp%)9¶cpBešÓ„ Z$v2„¡,ceÀÀ"–±~m _2Zõ£¯}”_0Ãò¹ý‘elÇæŠ1¿Ê¿ãî¿a8!¿¿Tò“òolúáOIOÄO3ý—/@ÁNC ã}öÇcÿ74Ã36ác1a2ýg3$þ7~GS2û78” ° Ë` µ@7 9`ñàV [СwÐÞpÓ  °6ñPÄp ;wP:pýs!·RÑ+±S¢U” À°Ó ¹ò Bÿ ò<«àGƒ‚ ð‘(Ü@ qH·GÝÐZø´GŸ`ß0| 6B Š7¹"Zp_”(/b Ž0ã#Ý`mðÒ Áàkð;&² ÝP?Ð ¿æ%P fp GAwÅP†Ï-1Ÿp7 P@ÅÀŠm`g …W0°=Ç%%p,p +«À0”p1!Ýð ÐÒ!(ã°|0 %x1àx‡!gÒE0%R+ƒ)׸à Gpk $a@kÀ pÐà 4Œâ"%` à š‘‹|Õ WÀóÿ¸ ¶Œq+a°v¬Xp`”¢'‰ÂTÀÍV}°v¯Àj«(TRÞ`¹r@+RI—™pÀ)W .&!gî‡0Ð4Š!Ksöd¹Ôáå”Kw&”x¶JeAg礔qæfŽqc@6ehVJOùMD™MSæKéR•í"–AöLRÆ•H‘g]!dK6–i†.QÆ–âdcÁL•A Ë@ ðdw^P Æ0H—À Ð PÀ5 mPn` ‚‚ñ@s0²¥?àˆ±3ã0E`ÜðO3ø ”°ãà?° Ý&µ›0Üÿ4%Ü£:ÁP htb b0á ã𰠊ူ€ယ¬1Gà80Tm sàFP‹°Üœ;] ‚Ò8ÐÛ n8`Prq‰ ÷qEð:ÁX0r(p‚2Ü1°À 0¢ »qV*‚2¨VÀãPð ²™ ÙÐ!C4mðÒ¡}Âûù ÝàÇ# äÒ0%@n°Ÿ”08±‡ B -ÐS,ºİ ¯ ,°Ÿ  `Û{P{pŸps(« j`|0HÀ êŽEà ÿ±s ~0T)êÀ Æ`r Í3T@ò!%p®@¡7g ¨Éh«`"{UrÐHzGà@=÷; a|>ÙMM‰C1ßÇNÈ1Úç|Á$N¸tK_™YÙLoFL7–mfdVfsæ”g†–‘QjÕä“]”焪䠺q6ELD‘©‡qMD©¨ta«•ºeJyeÖÀ11óNáÐQ[ã€BP[°²7vñ°6n  Ê ÿä¥ÁÀÊÀœÓ`£ãœU-À9æJZn[äsœèQ@©FTĉEn° þ ¿C-ÿ wVËJŠÊ0s@°þ3äC>û6†Dp 8`)«à¯¹b‰¤˜+pø;"²lzÓr 2Œ ±>¢°¤è‰›ƒ ±>G—Jû #°Ò?K²²‡ã Ý3*Ò!‹Ñ¡G—³éœG>¿ã?ª$ûš¹B™w€*>( F Ž'«8*°â [à¥ú¸GÓÐM Gà[ ·ÒC~ ¬p•€§;GÀ M œp…âaþš³ú MGzmPT’ á€!{dÌÑ Ò{{À)1[‰ “5:yJS#f^ Ç4• Ø€'c€OÃ2ÿãcFÓ2 ˜c2C»€0³//h3,3/Ò—4¨;25ó¾+}2S3¨4äg€>û·k4}΋¼ìG.¶›¼h}Ôר4¹«3ç5@ÃcL³?6}.ó»Q1‚O‰"(Ê![° D 1pz áðyÓqáУíqNà Nà?±S@Á° ÿ “3n€±ªŒÓ þôš§ÑÀˆÉœþ3-›µÀ,»1¨Ñ¢àŸ`£¯Éœ‹&²®Q&§ œ-P ÀyÃÊÀ³¶A®ã#(£²¯‹VäÄ {ÂC„„ºô;np?0\ éñš¯y8ÿ»±‰*¼'W›X 02*Ü´{ØC|u¯Êa<á° Ÿ  µ°¶qÃzÅïÉmÒ «µãSŠ®)ÂÅ)ÂeŸU»GUÛ!(°·Œ{š%à¢'x^8òŠ¢žÓÅÀ ÃP%»ÜÑj˜à ð˜Ò¢¢²·Íà —,-{´ ÜÐCÌá¢q"2¯` RÊÂáÀ\ œÃq8à ]ð 9pÐOñšJM1.jJ!³•™ºL]™KZ–«´4º¤ŠNq9«é"šš”Æ¤«FÁ•ßœãÄ|WvÖŒ”×DKªjºWAΧJÍsV«ÇdL•ZL¬s «^ÑÍÕÿl¡zNÞ4Í*ñì´ aO9+€ÑP8X¸GÓñ­£³ ›1þã}0 `®îê?á`®¤HÙÚP¼¬æZÒ.<ËÊÁîšÒÊ@°©a®ÿú¯Ç™­ËÚœÑì?ß:Ó£óÁ˺¬¿ œT[Å0 µœCpËZÅÇIŠÀ9Õ¯)ÕJ°O]Å.ì„_-Öc]ÅÌùÕfMÖi]Å>;Ó3M™jÖlMÖdP d0ÓÅi×g]Öm­°œ£aG¶ˆ°T°X}T,Ù°O–T²„ +¹O~PÞÃ;:ô¸OpÀ Ó° ßJ¨Ã8-rÞÒ P'¬Ô3ÿ°ƒ, GÐ{ ‡ùR 1*ˆ1Jg±Jl»Û;€ë;0ë§–„aÐHæÏíL•µ¤Û^ªkæÎÂzeYöª»í–ÊGmº^”ÊÏÑgÁʪ²”e¸DÏbéÏ_fÞ5&ÞŒJÙÌÍ[gxI Ôð±õ €mPÌþ³|Õ 0:Ó°ÔÐäz²S)k3Ó£qœn0Ô¨a£§ÒÓŽÒ.l®þÓ°ª³É^™~Õ|ÕËqœÇ¹áPKØTÍ9²Μ¤èÂÿÚÖÿJŠnÛÖ;®×_½ÕeýãcÖ=NÖoÖ&²_M™ÅyäiýÖC×8.Öµ0ÅLÿÂP ¯½h]í×̉ ¾–h1xÞÀÞ@bÖãÁŠ|àuû $‚ÒmtE°ÆàMÐE’Ò/]™ËqÀ+pÒà¥8° œ4NpÊàb°HºG` C•È\‚ÑÌåëeÚ\«×e©D/ò—Oó»8}ßÇêÝ·½È€È×~°~½í‡ºŒz0Û2²®4“ë0Ó¼Ö1Í[4¬>ëÅÛ1?Íâ5È€ÞgëÏ>1ÃÎ~<Ãì«Þ¨X¾z/Éî4¥5Ìk½7ó25"˜5ùÁœ9pÃp<*™0p ˜ o=D‰’àÓQá½àÔœÿÚ3Ý'½C­âÞáà6:Ô&° ‹Õ©qÕ9~Ò~œ ïážã-`ãÌ)ÕPÌ…í†ÕËú¸fÖY=ò«=ò2Ýò<îã_m×-ÞÖP.ÖS­ÔFÎb¬×Pþdlä\ä3 Ô]*«àú][À ±á û÷á­¿ƒ æYõXæ!Õn{ß ß+ú½Ë[ Ч݈Píò>»GE€9À uÛªM¨Žœ(m†.¥øèá¹£ÄÞ¿­4º„du݆gC™M¸ •eùÏOÉ©tÆÛËäέګ¼=ÞÌøÞýfIeT†Þå}Χ[ݤÿ«ÜMÏèÝ«ß]”Cf¨oͤ:•Òfê² ÈšD3Ý ˜ð Ü?Q%° µP:»9òÑðÿn£.¯³Ô?áJýü§q8­áA Úºìüûá%o!¤89nš›AÓ(]ýDÝüèÿÁ[}â5ÕGMò&nòó¿Õ/­Ô]íòNà‚ÃDHðà›P¬X¸‰' xð΄U'(ƒè1äBƒ/$¹‰$DŠ Î‰—©Å@7w6áèÒ†™´"ˆâݹ³j£2ŽÅîÄk¸JÙ§ ŽhÃíÈ‘"1®ú¯X…Û®D0ÃáªJGøló£†H„ï„î(ÿŸ`G¼3íL¼q«à¾/‚í)ð©’˜`Å” ½S¬LµÉe¬*“93ejÕªu.ºÚ2Ê´&›.Cº ­Ï 2›®†º²æÏ”7‹Þ<;´çÊ gÛ®[óðÌ¢qïM¹vðʶ‹óÞM\ùdÜÓ§×]û¶óä¶}/î<8gèʧçF.þwxêÐ׃_/Zù÷è×Éo>¯=ÿqæÍw{w-4jhšež¸"žpp¸$‡-*颂qâÉÚ¢¥‚ùI™pâiA°`Bl¡DJ±ÄpZPf&¹Z &œdq&26’ÑÅpÆ'¯hF2z+e‚Y%Žjÿœ!3qE=DIJÞ:ÉC, ¢h!¹2ú¥·ÆH¡ƒŠg"‚Ôì²¢.)"ƒM–&ؤ Z*“¢9"ÓM‰Nš€LV ©¨;×ÄS%«vÔ¤ˆ" )²ˆÊ|kÇ+RfDi#›#8ª£ R&²4Ù¼#‡#Ú˜ª€#.ê‹Ì0Ãéæ)V p¥«Ð¼Ãr¶"Þ•¢q&ȤËqŠh#8¤ñ†•bbja£ TP®nÖ©6¦‰‡#¿üЇ840‹­´Ó~ÓºöæËŽšöXð3ÖV³WÝØ2k 3ÖF{Í3zÎwÀÉH²~Ó-£ß†õUÍá—Ywß}Wãwÿ݇ñ¥Æ5€ñmX^ÔFV8`ƒN×àÎß”ïE-@a#ãc–wazeÎ9g~ýÍ×fŠo.M]›qNYæƒù-šeŒžùg–QV ç£OÏß~g@p7¸ù"žn>ùd¯Ú( V¦©E·K 'A¥<EÁ& ç€%[¨»D·KôûKeœõÈ Ç¹¢…d"@AÀ—ñ-7.½ÃÅ\ÇñÎvÅ“2Âô(åJˆ(¹6*ˆ(3’+\¹$ÊM»Ü¤Ð#Â!ζR“ 9Fúü 9‘IÒ’•¨våÉ4$¿ ‚þ¢1?7¢U®ÇËxœFÚ xe7&jhÿÍ‹~ 7|¬„’l*a%9ŠÕùÈ(‘@”-*È!\ˆŽŠÇ*†Ñ† DÁ,¨`’•‰ 4&FGq¶@•#È!{ ë2ŒàÀ(GˆG*Á‰& å'FÔÔ,ƒÍЇfºé oÆœ榆îÙÏ}Ð3™óðЇ2´Ž 磞ú܇ˆí©häÕBÚ´P†ìYŽohÃþø=ôÉÍx–¸E#VgˆèÑa™(Äþ'‡HNwxÅû,1:Xü჈œâ¬& Ë E>p…´  Y…‚ò6L ˆ‡‘âæ¡(¹Hs@ú “Ü )ƒ TšÉ<ä¶‹x¨ ½#ÿ±Bô¡ÖÆtZúË—@'Ë‘R•|ÊÈLŽ57@­²LñPGHבqဗWG2ȧIÕ.uIùAžçeº/ýº¹y)!Q Út&‚Df#¢2ÓHFŽMÔ)2Ø;É˜Š°‚&L%+ÈŠIP¨9˜$\wèFàð‚ø,ÀAP&ÇЯœpJ0¬°? /(«À¯X1•6è*(ö›H±(ä„á[ˆ:â¡dY ‘%P¼qWxcsç@‰s™æXG^ÚYŒæ1Š­L§Oû©tÜÅîèç¦G¥ãÁxÄð|FŒþñynD›Bu¨n4£q~ÿC¦Ò^S´ŽyxȬ ?h¤M~Š GœzfªNujxŽ /¸ÞŒPåÎkz›wÍ] Í” t¢p F€Ð@¢Ü!XƒŒã¡É­H&"Jdë\ô–xlÀ– { ܈ò6©îqp‘Ñ—*ç¸ i2£•ÑçU­X „ \,?›•€n³É$ˆé’©:]Š$zyÜ'Ã1<…åQ!‘D‚ZB=J™Õ*޵ܖ‹N.!ˆ1û¨JË™ÔÕ%1ç ‘lÖ¯KÒ›@ r…#Ü! w’•™"® 4hƒ1Ž 8`‚ =ÿV‘ƒOÈÁĨé""ÿXLÃÀA¦q¦ª#Óú¯P®W‰l£àÄ´Œ2.o%‘ñE*p8¬Á¡²ž\šx.Í F5OTbÖÈÓUßì,4JëXËtV1¥M aO.Yjô³Ö9c“˜¿üõš–lËR¾Ø½f&°*­3MvM’Õœf6 ÌFvÚȸg %ÍÊI>Z•ñ1“ñ,6[þ³ÅDå„ šÉJvó½ªvš3kÙÎ@­l’H ~è'-(†¢ÐÎ-à}‰¬€p`$R3Ò±ˆlÁâqî½xŠ”‡*W9·‘RACzœ`4y^Dj²Ö§<Ò&Yç¡`À7r”Cö<ó˜“Tÿ#‚ -¦R«¥Žø.„jIQʇéw‡X³À(ņª\5•ñi‰XñpÃ6@"˜£+ê@ÄŒOΊhŒ¦nµŽœ-ÆW-®•†ïYâÑãºÕ¤ÞÕ¬@¿ªëšE©B¬cµéWÝØDþ$µŒw•"S·Eõ”GŠO=¢x8ƒV¡–Žj?»»š>õª®DOúRQ“3<†! |ü¯¾ñˆ#dåÿr€è*¸¡m0v’‹ø‘>ŒÁ‚Gzí‹;kë±è,ê\r=éßp¸A´¥ WêHY1S‘—º’A'+Ø¿;YÜ–Àô¸-©îº¿?T47ü‹ÐÁ·õrß³—(ÝnfLƒr&G—éüg²~Kµ»­KDW å  ÞЃ+´2p78äN…ŒbŒÞ¡ð†€À×F¦¤ê+càð†Jð&z e`•vz§3 –ë!ˆn‚¡ 8€ƒ`Ø ÇprcˆKŒbè„lˆ?àg‘ƒ¬ø%‰h"šÚ!ãÓH²0˘5›³¼Ò«÷ˆŽÿä@¢vYø(¦‹#B«zºÿø¡jŽ³ÓŽ¸ª"\Â6 Bô®3:¶C£þ¨Žúp¢$Ò!)ܪ/¢.t¥zŽà0޹ù€jø€=z1OD€°*€6¸·y-#i?i¿Á †Aœ#œƒPÁñÓ)­Mà¯1¸7!Š×ª‰Ò ­;ÄN’<ÇÑ$DB¤AqDàê${B¤ÿ‘ž|ëµlɽnb1Š/Q ŽP†;iˆZ\¾áºÅ5ù‰l .žó¥Ôñ eh(Ÿë¡Ÿ¤€ ¶ŠÔ‰ǨÅB®Çx‘a•D­nJ `¤®Z “ ¸ÔrŒ ¨ÿ 1’‰b›;‚ñÉo§ð#è„$Ùˆ‘‹ 8`…•›†xÌ(­¸ƒk?ð†sü&ô‚µñ°x8Š;‚W!]zŒi Dè‚Rñ9Œ \ƒmð´à*G$Ž'@šQ»ë#"æÐ™*³˜'›3”Ì©œ ‡ÁÉžš.KÉGC8£²•3œd𧉙2³¢„ ™Á¡©š(SÊ&ƒ™¢$´¤dJžÂšŽ š˜q³Ÿ"Ž3Ÿº2®œ‚A™á²tÁ2¦œÊtÕ8ïøZ†¿ëÅxƒÿƒbpƒªÃÊKiHÄb{-Õ!570’¨…i˜†ÿÔj v”5ІM0†xø„AĬAi›"œ:Á<¸ØÔ‚H= ¨L!#é¦pÁÚ!·0¸W“ sЇM¨§3 Á›@9£¨NØ„U¨¡ÁåK< 9·×šÅNj”¢˜–It1t±“‰n¼Äb¨…x>錈nø×¢­hÔ!—|TDcüUH͈ðµÈ £†ñÑÁ¦(¶ÒÃ#op˜±O0,Ì\…mù„.89B‰‡"Ø+ ”K“ŸP<ÿ\D¡·È„èŠXePƒbX$9¼œÐ.ØI¹ƒ"pþiÇp͈˜†íŠz5ÿˆ‡mˆ‡&ào(ЏÎòÛÚð±b¸sް«Â9:œÂŽ£*’¢ ¢«;ÒçØA#¼"¹ #.¤R.E£2+'D¬R4e»¢:+$ÂÒ"ÊAöH¯K»/zR°ò·"Ã5²74ºü.­Š;‚.ø‚"ø‰#¨*ø‚GµDâ%™¤Á9€¸ñÃip‚i¶lѵÛlù¡P ×¹>ÁH’¸9¸ñ©-ÁOl¥Ia-þ®/iˆÓÇŸ(ˆ"0ÍÖADóÝCˆ;¨Óã¹PùçüÚÆR™–G!ÏÇ)ZŒG‚ŠR‰&I&Ô)(œºÿd2Ì^ó%‰(òÇ‘ (‹$I’€Vã­ˆV‚£˜D›oh‚¨„`ø„uì„V5ÈŠ¢Ÿh]. y…6x… Èn`Ð&ø8o¨€n蹈LX…3°@?È8ȆÆè†[D98° Ê oP©܆†$ŠZ)8€@1ðƒ`x…Xƒ6ƒ3X…N@¡xšÓ½ ™GóJ˜Œ˜¶Â«¼c+º;:%Â&rÓ±J«¡‚¢7µ:£rÓ¸+(*«#ýÚ4š«ôZ¬U:»ÒÚ¯óR­¥ÒòÚ¶B*ºCª»Zº°-Ãì(Ô Ú:jˆ¡J UcÕZ<„)ˆŒnàƒÿNÐ1ø‚Ë3½L5¡At×`Dš† 8¡“N8Š@’N(Z¨Ž›€ƒŒÒ nè„ØòÜnèÓô´L…ÝM@Ønè†îô¦n€]ؤ؃Nà†O(7 €ñÚ%Ðäé„3蘘ƒ·˜ƒOƒ=Ái©nØ„ÏbÐXÆ(†ð Þõ Œª¿4,ÐE¤Npƒ¿ì†|,†OÞäuœü=Xù,†äå·ˆŒOà† àCÅÛ3è1˜€+˜€ªhà`8ƒiÁŠ`h`¦Ø ÌtßN`Gt忎 1ÚÿêNzµLH”hˆ"(‚!€1©n(‚L` ÿ”†l@9øŠfÇ‚]ƒÂËxȱ9‚mp€U˜†j zš§(Xƒ"Y9¨€6@„"è7À‚¸h° Ø ià†yÈJˆ‚ˆ®b†/¸„ð†P#Ѓè€lp8àeàh‡.8Øn(—é0R–Q³0Õ¡<5¢¿í²Ìà3<ƒ™-›A 4KÆd¦¥Œ§Ä3¥ 3‰K£DJFc1ó«iK4ËÊ6s„‘3D³‹QH´GvK1»3žË\¶åIÞÌ©Hkšª,š„‘²7ec^²¤}!IÞä!»—Õ(Z kHZœDPƒ?ø‚+˜‡ÿ"”K$8€ ˆTS†sþO ø‚&8€`Ôp¨„G¸„-88¿( Ѐ(O‚X-ø‚˜–31*oˆp¹*0Q‹L«=0€àp € ø‚.è‚3Ѥ`8nŒ·(=‚yXO\…l ‚(è±àÐ*¨úÑ* è6À M؆C8é@$âD=Ѓ.@¤Ü+r Xð†dŠ"ЃGƒÈ˜Ÿ;p€ 6ˆ ¹ø„€ òO ¨€f%ˆ8èG( ̼„y0€ @‰U(‚8ô¡ƒV`é5>Ç:|ªß9@’"hDÏŠ.Æbø‚ä-Š;à†dÐ_”( p„3øW·‰màƒþ%ÿÒ9(èlˆ`H†çÕ b81pW‰Øˆ8`…þ¡`…V¸Ç‘» *àYg’9(]8ƒ=¨ˆÿup¬@¤½è* àÙ6Šx€Yˆ‹ŽÙ—zîê… à¼„G(† N’5è0†i(»oЬ°ÞÃF5($A’páƒ"˜Oç ; a½ƒNàè­Œ<„&h<#1Ö&0N%”#ÁCøQÞÀ£ÕR7•ä´|J¡ +´å*%¤ÛªE»²Í¢̪/<«&,Û–l/òÛÙˆS4Ì®cz§—#¿URûÀ+jd%$S«%z¬‹úŠS¼å*–úì Óµ, 92ÒX>*=ÁxÍ¥pÝlùœ` 9ð†*ˆ‡i8ŠqH*`b“ƒ˜n8`½Ç\ÿ(Èšdu€DBF’/—, Óƒ­ÈKÁè(€m híføÈˆ‚g¸‹ú½ˆ9å¬íÆÛo„'yo\ã”[¾¸ç¾Y.:äÅ‘.úæ½ý¹p¥ÏÞ:쬇>zm¬«¾Zÿå¡;®ºæÒUÎ9æÆóî;ï©Û~¼óÌëö:æÃÑŽ|ïÒÎ5·ÉXÆW€›£Áã“1EÐB% G(„"$))Lp‡8m‰f󈿊!†O¨áŸ0غ1‡n@ãy!@1>ñ‰+̃g‰™7Ä >à`áHÄ`‚(pà %hÁ@¢ÿ¶º¡s(A3LЉNL£ë ²Ñ° «š0FŽ€ƒN°Á½ØE828Œ¢gáøK0¡ rœ ÇOÜÀ`?PÃ~‚ƒ3T ²Ø“Œb†3¡ <ë[1ºñ xcqªÅ'ŠQÈ)4g(F&0Ñ…d‹ k8ƒX1 ÅŒMIÎP VÌfˆÚÁ¸ô‰³„a ²°`I.ˆ¡gwxŠ%ÖP„Oœ{PÌ :1, § ‚ó>÷ût'¢ÛÁMá‚Ã8ÔAŽ¢ËÃ\ðçÑÜq´vÀÉ\ìgÑ §¡ÕÃhâPzÑài´x¬CCgšÒÿÔ§r/‚©ñv—9ÐÅ4¨³+Ýpd;â/¨#eœîLçT“¢TuEeQD•7Z„aa¸B¯@ƒÃ5á(Eðxt”p¡}»1 (±º2G¸Ã4<‚˜mx W™@<ºq‰#à`KL+áV.ã 9¸Ä& x‡9C ¦@ç~3¬ÁØRh‚Ñ L%áZÓ'dxl`LEˆ7hðeÂÅÐÂ!¨q¬öq`H©*ð‰6Ä¡áàë°Á LPbks0Æ*¼ñ ÷@˜ƒ(Ñ’¯Ä£ðAÎÁqÄc «€F´øú §ƒ[ÔZ±>áˆ-pÿ¯™;»1—|âgp€"¤xlC —ÈÁ˜îp9PÉ~M1®À.¼âÐÚä°†nTrðʼQ3@a ^)Âð‚Ì%ÁˆÅhÐŒ; RV¸‚:ª€£Ud"ô» îu‡qdâfƒ(æPªl°â ­àEÀâŠ3P‚søÔ**0€!M.†XЉh”*g`Å'øP‰;Py BCdø:‡xc ŽM8>Ždƒ(xÙ*¶‰Ux€-aÈ#üÁN Y5¬s k@$žâYªÃ]ô8 ªªgD™6Ïát¡Ü'@—>rrãhߌˆ6ÿ:‘zZU#Õ¦Nvð“êû¸ú¡È¡Ü­5¤i䀺9 v©Ymê`³× ¶¨UýëN£H×±FШ4íi_º×ÚnÑ®CÔìÚ |M›Ñtt3Ú^ÂP#pmBPZêÙB‚q ­I@Š€%®€ˆ(ÌñN¨:qˆiÀ1ˆ€d)LÁèM`¼‰GlÁZÊœ ‰58A˜%Œ‡â YitB•µ+ä !êh p@ÆA´qð¡ l¨‚SZ`s(@­M¢ð 1Ä Øª,,ˆa†gd‚¯ûŒAŽW¾vb U8á‘xóL”È„Š˜L°òŽ0IG¼!‹i@C •GP¬`„oä¸%t ñž˜üõx”ù,Â?ÁZ(A®¨5?q-T M€J7ÔÐ?Ä SÞ“üà¥!F\½ÈÄ7æàØÅ‚+h¶@8tC h˜€eÝÁ |ÃÃ6 ¢µt&üDbÿÏBMqP‰Pl0ÔçŒ`þìOq¨à¤õNLyÔí¤ Gò¤EÅ Eõ”jÔMUêè  ª`㬎㼠֎î öK-ç@Cý 6Ô¦àï0Ïå¨Ô®N G¨uˆXÅlÃ6 Bš,„1A¬€L€[µ@0„ôB@"¬OŒùpÂ3ø V&C |Á<ÜD¦ b¤ˆÏ Ä€ ldÂX‰Ä[¸@/ÃxƒKÄÃÁB3ÄuÂHiáb¾”î˜&áè`ºÝ&RõTóŒ/N½o Â` –&kj¦Nábúa:áiž&ŠÔSAfGEæiȺш|On‚ è@ ÜÁ#ŠSJÿ€7lA2œh‰2´@`áH§ÂÒ§à¸vv„÷D¯oœ`J¯ÈèêTºÙÓjL¼¥‚dí&„j&˜¬Ñrj‡&çšœ_CÖ~®,Þ6 „Èn‚úØÖèžd1„Ï=ípý¥bhÍ·xÖ*˜äMÔÂŽ@'è[ (é4D…+^1(i§‘Ñ>-ÑÜDéš• m¶ŒÏM4¦ÄCžÚ–ÿAPT<ÅÓŒÿ JŒ‰\ŘˆM$ZÏÖÌDÔȲñ4Ì@Š«ìS0`ŠÌb €p-Ôñ©|àŠFC- YÝÚX|ÊYœªrÖì熰 ø¥ Û VPûØÿP-(ÃhÉ[rÎá.- cKfØ„ QLE(ÃÐíšB +2ðÌG…üÇuÈkBkºÕ`F¡› ö¾`TmanÎàN‰`Fýf;·àL¹T±&¡E•Ôòàcþolú”M‰³ JÕlJæ¤]ÔÖàõ.ÏT5ì÷âsH¹3æ¨GNÙÆöøF¬ÁðÁ#ˆ‚Án6DA¹Šh…ƒÉ¶RŒµ'¼ÈAøK» û¸À ‰OrÎt«|†W¸°Æ¨EÌQ¼µ%û°0Îmw*¸`­Ñ¶À”¥åï­Áèl®'ˆ®‚sª;ŠÖ+³ñÙmœÔî§è)b óӦɒ¢öe‚0ÿ^&ºòà:õšÆt*T¸Å·ô Tü%i2`Ó&Tî°ÏÒ®ç™NY¯L+®ç– 3_ ôоž•‚è\ï£hõÑ’0Ë'%7S‡Ë™ÚD•.T€‹bbisavÝõ™Ž‰[(‘cµÑnZÿ®]²çe¢9.\ö4X8V¢Ñ,ô¦Aa¥49ÛŽ¾®©Ñ¬A„¬F¹1·³AÇ·+7‡õšÈ¹ŠÛy¨uwsƒL÷~ŒZ¶žš†,G¸‘wu¸wr&µY7¬=÷´©÷4‹ëa’›áXwµ–+UIws/½&fsƒw[÷·­7Çt¸ä8U¬A¬ìÿc0À • lTBç­É–8m‰Ê›2À4 \¨‚bG¸Á0é…j‰‡*ߨ’ôS_uã:.Ió¸gIûËÞ¢ãÒìM 3 _õSwªMünaó1Ttè˜ð±WðøDðq’?ùï6nnóñeïŒrnû Í‚‹ó®m!s*éN%Ó´¶šSD ø ˜c5àj éî5àú4ÍshÛDhwjO@4SŽpÕ„2%Þ.¡ÆDøÁÚ’-p»"„î±¹3Õí^O÷ÊpYy’OÄ«ê\ÿ.šùpŽì¶b˜Êu=/æp FýF»ºšNøÖÔono?—Ž>cï`æTg*ÿ÷ópN­oMyog†3ÿF•U¡ ù6¡TpÿºúC ÕõÚ³·”ôàÔ jï`z»­_{oj¸÷Ú».ÃøÆ÷pQ¤P0Aèð HCt¶lgÛP·x´@‹Ï¼È[L»ÁÜîlÁë¬Ìm@õŽó¸Î6¼hí-¸ÔyV?¼Î–yo‹ºãÚD«ù\÷y«¤ÓŽ?9fg¹Sz’Çù”sêá–¼Äkyãu–Ïø–×ù3MKrÍÄÉ ×¹¿¸Jœ¤Srv„Áô¨í†¼WÓnœhMž/-íf¥l_n¸ €Æíþ¼|NCTB3=Óè-dRaêOÏk§µcÔ24€5ÔH½}œtÂ@rêÀ}Â#L˜ ‘tê¬oŒúlÌBÀKœöˆÃ€tøÌQœ9IËH|÷Ïu2¿<ܽAüŽ—¶fÃÿÇ·ö]»¸ÁÀ9ïvÉ?yÌ~:@L·*\¸ ‹MP¨ÐàB…Åî„»óp Ä ™FœQÿ#‰w@n¼“PÈ;Ê”)œ8PA‚ KNP&ñcŃi‚„(±dIe\ush±¡)S®‚Xlà6Ìàt:ôŽRñ \‚3áÊM«Pº & Nä4]…ƒÛ°Áp¹ªÈ£r0‚5ªìAšNˆW0\¦œ}޼¯Ø¦bx«´‚Û§«wp”Ѭ ¨2Õh} Zs5jŸO›®öyóæÕ¬K—ipz¶lÍ nß^MËtÓ¼«-û,¼ ojÆqÿÝ[´æÐÊ7—½ºñÐÔ|+'-›öíî¶Á?¯-Þûvò¶Iƒf®>ønïÅsO‡ßž»ú㽩óV®ý9ðÑÿ£…Kï?÷Ôãn¾ójÃ;ä¤í;Wó »á†«¦=úÄs½ë|Ï´Ò˜m¶0>¸"˜x&¨¤ ä@!˜"V©„oà &œ5”9ÑxZà17Z2˜‚Näñ¤`Z ž zl2œž EŽ∰p”’0œ6bŠK® ³ •VªR¡”J‰%™JÂR¦Z˜h¦ "b0Àš“";å ,09™z)°ŠJ(œ„"ŠGJ'%ÅZå$‚zªè(¿øÚi¤‹x2IÊ“Du©©–6ÊÓ¯¡dréÍ¥@Úæ‹.»¬ªî(*ªŠ§›‰Põ5‚±¢‰ŠQÆÿ¼Ik•¢”Rf…5à¨@ˆŠHM*Ǥi‚Âg‚q>²Ù‘2)f> æØxV)ö4Ö¬ñ¬4jV÷Œe,޵×P[ à{†­µÍæ5Ø` ÿ5}?X_Õ(ø^‡fx`€9Ölâƒ=Î÷5Õ@&™dˆ1ùa‘.9¶ayd}Q˜f–;†mâšË¸Ùåž-n­à‚UZà‘_f9e…!VP¿ã°[f™0fGsèâˆm‚Ù&ž;Žèbrä±ìZPƵ±D[ã!  ¯„m- ÓÈ"œ"¢© 8 êÖNƒú&Ã\(É­ˆÌ½µ}s¦7«D¬¡ À´èSÿÀ,SÏEKt¡>*ÈóÀÛ‰¡9¬üËÌ™4Ê$Α˜ÉÔ*I%•õZšÝ$‘ £)“F•jª¦&bÓª>ê)$eƉ"DLXãX‰V‰‡±n `ÅÇàe,Ùx*p ‚x¸ù×;Üh8àEµzx#‹lš¯M2)Ïœ¥é%+ÇÉÄÿ;‚1‡bT`p@Ö`’xÈ¡s«WÆþU0Q(=ü2Pr‚f3›e,5±ÙÄ8F2× &f3Ù?ä²­0a1Û™ÅA…E¬ƒ®IÍ 5X²„"üMØÁ£í¬„ó iøÃÒÈì†B[X 3HÄ.­ˆGsÅj˜ÿ•©f¨Fž ‡É Þð†r5"áDÞ˜IŽÐf½»e IáØÑÕ3˜;Ä)nhë]8æ0ŽÄ¥Î\á Ãß”qÈÀ•É\<º뮤‘•xêx‚œãΘúí-p®ZÔH29>9¤N¬TçR&ËÃz¤êáj²˜Ÿ´¤%U™ý¨çʈì~µI/—ß}ÍQ¶;I«j“·ÝÊ—ÃŒÇLðKµ„~«P҆ІßýÎRô›@"À‚m^ÕSƆ‡"ðÛÌhtuŽ„˜Áå/ 3ëe¢•´žKÒu8¸¢@h€Àʯ.ÞpÎj:³™þ8ÿ‘bK\ØÊ`cAF¨gNë¨hðE‹â‹AÐ~ø…¡~5G¥ð©Ïhf³ 8Ô~R:QqȤ%ÝLE³R™ºT?Nãhlš› -Õ£D]MNYúœ(97ýLUYZR ´ ÚèHšš2‡©Îyè¾8ŠÒ|UÈh¬‰é2¨±Œ+ ¦Ð³ºÐ 9ÄCj †ñ‰:òmÁ€c–´TÏ×Õ¤GäjÁÂD€]f„‘ÔÝö(IFùM"P:¤"{·“BI[ˆqšÐ”&<] t8YÔ¢öô*2(ÊOaÊmíä'RÎK°Sþî´KëYïjÄl¥Dê9Ü#Yÿ;’å/ãf½5·¹Á¨šD‚ñKÉʲ•ö•¥dò“<27r˜F%*±†`ìŸÂì+ް‚3d7º,F6àp—Âź]™ŽÀ ÝóDÆ€C¼!Jƒz! ’‚ŒqÄã ôìÊôá`\!EðÕ ^Q‰#ðÞðƒ»äPÁÆcQ@DÐê5D›y5¨(SâÒC…̓HëÙhÄ–õPˆ òňä *™ˆC¦b·8¯× qŠEƒ Žmh!ÎŒÈ;Y %åŸqcKäY†±™iÙÌJ¾2R³ ß„ÁDŒÑA'”>Œ/](AÚ™X¯ @JÿdÚš”¥x)IRBnäv%(e¶N}ëÛ“*û¤ÁL:#¯eÈ!#‚·:Enµ;­ž~‹êBöMP{²-ªa혆”És¶åçôö¹9.p曫’@2× H–~½ã¢ÅÈ\7›»€.s­7õ:aÑñØ‘Zr¢Ÿ¤Úý$A21×®|hÂ׊ս'èsG(€ÈYm MðÆ*Ð=\}­phwŒÁJ¥ür kÖ€ÎmƒÞû,V02Œ‹´s"qÕQŠ …#8` ~8BÚ€xi»s0Fh4ˆŽbønÊŠž ù8ËI ÙŽ=hÂ4ÑÍBâ ÿc–ãO9‡Bw9Fgè3Œº|b!4âÇLÆt¢ …(ôqÇ4¶äZhê;ºÏ@hcª—ÐÆ"¤ùÁ\.3Âl¢»ÉqÔ¨Æ)C møÄ3×hŒGèà—ˆÄÃaØÉ h’訶E¯~S’–Æ%Èâïqª$ ¨¡4˜üqK - $Ãe—(Îo¨5-jÕ¤ÚÏáo"ÁmŸ>I9ì:v¾…=ª+2)¾Yn#•óËx×zäåÑ0¿CÔœdY %„â!@ š‘æ)p1¹Ô£|ÒËc2¿/¦4”aV1‡ÕKÅ7’‰=øÒÈnõ¶[•"T 9èÄĘÿüUTà~p…7*@ŸêYÖ ìm}¶ÁÚ  ²øÄ`:!p +¤¯ä@ Ô(.!`âKààÞ*àÎgºA¾À* Òê Œ*8jLÃ#>„ª(D>ŠŠ¥”Ah#?úE¨2ä¥~ã —#:ˆª<‚ð@º<ªÊí¨ª;ÄíNÊ?,$ó£Bè«Àð@ìèx¨øåèÌQÍ Î-ÂâÁ†Ä”a~ÏŽrœ mÄ ¯HŒä#âú6m>© FïÒ±ÿ´d(º%u$-’ç0¨¢ÕD)µ2©Ô¢·pk!‚¶@ñÖçPjKSÆ„N¼$u"y̤" ƒJ@âïà[¾…#¾E0„)–râ—DåkåDž‹'ˆÂL¦©UÄËUè‰Z"À]ž%$ #Œ¤AÊ WŒÅ¶!!¡ž¥›£XÀü Žp $’e·áŒAžr  VÀæ± €`}ÀüñÝø€^Áã²AX!À*Fz…¡ä@Á äà`Vîæ$ꨊÆéÄŠvlÍ<ÆÈÚ*iræÈNf­X2Íl®ìÐŽæ²î‰Â¬ˆŽìÉVƇ‚Œæxn…ÿ²lêÔNƒ”²¢†ÎÊÎȨ.' fž†0¦É¢Î+Wæ4¦>ø…Î@ ±&€¿²ë*dbfBŽ%mÈñüHJ¢ëÑ#J ¢yÂÄytËÂp $mBÉtrbÒ ©rF-Qæ&mÀÄQ0 )NíÏÄÑæâ/¢¶üäS¶$b´âZv-uú$•D“/ÈÅJ@e"ÌG'Œ‘#–q1ºI ¾æwÆÁSlSTꇻ*®jŽDJÞf%PÅ’X§M”¢Pš'Hð¿à` ‚UtBü Ò ØGøŒ}Ž ¤áXàX>%æ  °ÿ^a@B²®Â½a XašÅ2 Žßÿ^²¡Ú  ¶Æ  r`¤ÁNnÖ {Pd(ê€ ‚ªeb,‚xèÇÀð¤€Ð¬hÐ͸Ìé.Êì8†ÊzNè´,Š¬îŠšhɪŒ‡¤Íœ²£ÎC›HçVhƒNh)[†hdÆìf†ŠnE¥Ž¢„FHÅ2…4FÊÒìD9È…¤p„FƒðEΨ¡D"»”!ò-ÿE nÂÚÞ&Gr¤ æ²Ð–$H-@nÔ´Èé6a†ÄÑ bJ&%J“žÆú6ÁuŒÂ%n0zg2­gz^ê„×ÒdÜÄ”¼ä"¥/ã n+%ç,å':%]öbè ”Ãzÿ65ËsZ¯KðO”B€6Á+ÆdÒRSââ öBü ã1Ò-q"J@²#Äå ,n0Ü ”o0Õ?)†D&6aâB0P•ÁËÁ &,% q¥¶A}¼¡6E0*Ìú­ ¶áY&²î@Ÿ²AKs€,ß”Z•\C0ȵßÖ§ øQÖà!å)ƒÁŒŒ!¨3,p¨"XAŽ€,N"=Ê`%û#*YnhŒfb¼ê©<­ºÊ Ÿ¬¶Ã§`îd?JÑJ­æqJý£§jÌ£Bö§ØJWÖ¨Ô ¯0 ?ÖªxVd_JfcAœ#¤žô¤rª ÿ„¤Nƒ§&$h5T:ä0j/¶ k6¦’CìFÃÌüÂ`1ÞÆ]º æçmŠZA0@Ü@0J‚ ºÁSu0‚a¸ÁSËFÆaTí(ðfö€\6mŠA >¡-kan:!j!õI㺡ÆÁ &¬W-=L0»µö Ü«í<‚mÜŠ¡&àq7¤‚”¡qãÆ¡ ja&ŠaY¯à ºrYéX ¤â–µr½aÎÀ jáD6aƧ~„•öàìofO0ÆÁ Š{‘„):aÆ÷kâ r ]bYª%vÍQ˜ŒÀÿÈf(XìX!J@Jµ oÑ`€!ô)ðð–¾Àà 6a® €ÚRJâ%¡xû"æ¸ ž.î€4áŠàýŠÁb ¯î€Úo„ *@.#Ö@ À¼a *¡$ x'¢ü`:@*¸Õ5€ ¦¡æ$°~@r ðëVÀ.¡hDn h  rÎq¨   ÀêÏr ¡ .á²æ´n OŠÌ¶ìˆ<ô*mr^`†I1+£,`®®a¨¬ÈÔ ËIÍLc[”Ép´…zÌÈ$ùÆ”Ò(…²Fÿ¡®CAôg¼LëŠE‘LI«n’­Lͤˆ6ø…¬a®†dH†a¯jøE¡ Ű”áÖ4* ¾ –m€ùô@Ķ œ` `ìE&  À@ÄÅ‘¦Át  ÿ„Ô@N‚¡¢áÀ ’… ^Á.áNdN+ᡊÁMƒÁªà!XI!" ša ®ÂS¹A„h`µâáøàÚà˜Š¡ „€ º%£áøÀŒ6‚ZAöLºîÓø@îï$ú.ÁŒ×ǤáÚ *ÁR€Ï ` ˆa½!¼ÁÚ@Ú YÜ ! ü NƒÁ à4à¨-%â  ÀžÅ$àâá æm1p  ª’ÄMÄ`k2!NÉÀ öz×:A Ì àÍ·@º¡^!¬çÄ  r€ cà  ®]ú1 Z Î!΀ €>;UÜ@Üx $Z tV¡ ‚!qÃál2a|(5ô`^¡Šá ˾ ¼!¸¸!öÀV€œ,P°¡ÿü.Y̬ubø€JÀpb:¡ÌÀä3a„ Ô!»& >a (a¤'TÛàÎ@½¬çZF ×Y€~© Á®@=¿fŠÀÌ“í æ¹Î 2õ:Á2 Ú Ú@B;TW&`¾ž[ÌÈQ ‚˜!nÜà ì¡è ¹>!4à¾"à´#à ¨  Š@"׫¦áÌ z6ìD@ à%…wXa #^4» `á .°!¢àÎàîàåö£ ô8f)öì´’‡T)¨g‹ ap 3ô u*ïchù#¨.ˆ ­–i 5T%ÄhÿddÄ<u¶íÄÃ)(w°KÖA–ÐdíÐÁ·þ gö¬²[¤éÙðg(6¢tqã ®`¡sD@S°*  ¨ *árDÃÖ ¶aÙÄ‚Þü ¬åDŒ` „Õèmö`zdºˆ!oQÄ æ@¤ rÉ@¬G¸¡ÆÄWˆaÒƒ—>!Ì@Ôçà ZWÀ¸¡ôI0~|º¡rÁ—ª ÒeY[ <á8¬N'`(A&@ °-!2Á^a–•Gö@.á º.7 À®`pýœö@y(úM£ÒzÁ ȇžÿ ÈapçªöàZò 2#ækM±`â3¬B¦L«VMvÄÔ•+ÝpÄÛTÌÀ/T«Š$œ Š·WgÜq³Š‚]( 6guætC ž,+G2M(v§S«l¾>Å‹·*ž²—øDp§B…N‡eÃqGÎe’%CÄJN·+Ÿ.aª4gÕ6i~8ypð#˜×b«¬€YÑfÍQGÚ<2a Í+8Eޏêà©ËžbsîLPÓΕ´OÌ9óèQ+8G*lƒA×¥KGŒyããÇTŒ¬ºÅ붪Z™2¶­ºÍÛ6î2´¨U î[xã·«¯f›ùqß¿q7çÿM}:nãÈ{WϮܹôä»·Þ6rñÚ£«§þ®€jºuž»·zs´k{èνÎyì·Ã~ºìòƒÛ%¼á瑎`á«ᆘGºˆe4€›ãºK¾L5aÈN0: D•ÜÁbLÐIp¸ÌŽÓáH<Á’WøF0͉ÅÀ*ƒ6À ,0†#\A…((åÝÐÀ%¦Q…m(8‹¨°&5C Ü@ Q¾ç€l¬âÜÓ8že†-\â`³qžÕ‡ZqÿD+˜C Ì0 !H„((…ðfpÎ`£ Р >iؘ¬%9`ésØ„ø`­54e%ð@ 5 \!P0Ã#0Ñ ‰Ä# PèÚ8&nxb¾øF'ŒÑ‚9 Q˜B2H\ÂsXÊP=ìa#™èFx¡J¬‚nW/V!‹‚m ŸhÌÐ ¸aÁhƒ,Vñ 5Œé%@ ±> V`…%¨ŒUÃ\(%"³Š3Ø!ÙE·š‚îÞ¤{ØÓŸãNu†«PÂ?7<§ßÇ»\êLgÿ |×TtÈó8èÜ] ’à³c¸À%ä zuáÑã¶g0ôPEèFºÐ†xT€¶ñ¨¸Ñ Ù iG|Eè±±-Ð _€SþL ø!¹áIb‚!ÔBø„Èè÷õ„“YðƒÂ1(§<£B8‚±z²#°‚û*:á3ðÅ˜Ø àæN.eÉ­‡x™@a qèô­ÂÁ0°àÛ¼2`”ŒQÈbS#€-Ž€ Ä£á˜Ch*ÈÐ%ÐAPðˆ3Å WðÀv¶”™ bÞ€†RNÅøá‚ŒKžà5,À·ŠÈ³ºAŽ}ÿvsÒxĨDƃ¾ð'p eà ߆,úpj™` Ð… lØb²PGV—#´ƒ B‚¦`˜` \² ›p–`ß0§Ò,(@°8°q`Ð: ^EP~à—@ –ÐMá0Û í0ErÀ ðŽ@­ Eï3½ ÉàMPÒæ( Åðc‚7Z ?P)GT€[ÞÀQ`Žà9À®0…½PÍà7kÀ>¹à²p§.Áð ²`GP5X0T/Õ ²CqðÆ!šWCUp2!íqöÖq–³qΣÿËao²YÐQˆ0·;œ<‰È‡§ˆ B„Ø%÷ˆŸS;…h:â ‡‰ ⇧£!~ȉshˆ’¸ÎÇRŠîqT„µUÈA ÂÑT@ a±$à+à Áðsp | ˆà> $%v(`PEÀ[gä ä@4±L-À‡@T€#Ý´ • ó°1/²‡.LÒò&S] Bp¨r#EÐ `D¡&Ÿ@ š H·²yÁ ‡ð æ0k°+G€Ê00`` r€"Sc?`©R a 4àÈP·R ™ v€Hb Ð 9ÿD± w` h >æ08P?À‘xÁ¦à ¶'ÅÀ—€18 Å (`4ù0¬@u `(Ò|0A€b,sÀ¦Ð „¤ c2¿À üg, ñJ°L”Ý`j€gg+Å@.x¶rr C@á@±j¶Å@œà 1±3GÀ WÀ%ÒÖ,ÐÐ jÒç÷ÙÐÒ°}ö? ° W!1jÀm³ÒVQаk‰¤m™ð )ó G`~°ÙàÙ°RÛF ,°+ ñ ¬°R ;rØuÓÀ]Ø09Ðÿˆ MÀ ìñ0åXÔÀT-×:›C‰ÕcUSÅVhõUŒ³SjÕSð9SL¥XPXL¥ž…ÅžñVUpoÓ8/G=Ž¥W‘ÕX’¥Vo5Yl%Ÿùyž•µTÿ W@垈Ÿ÷y bÅ nÅS `W Tw¥ *Y"*Y¢Tü™S`ÕŸ)úžh‹Š%S'ŠqýÁV_EOðz0 ]Ðñpæ@T Ñðu£|©wF A@-sàg“l—z›E\‚#áð Üð ›áÐC›° ãÐc"nŸpµð¥¦áP i:ybò ^Ú0Æb+›ð r*ŸÐ ›`§§Rÿ Ý §=„*dò )=t0Ÿ€aª¨ÅÀ§²`p¥á(ôµ ~x‹v ÷«Ðƒz*_!–›r*‚×00¨a*by¦c,:²¤º Ê@_…Š–aZ ꨨr+#ƒªáÐ0ÄJ19&™0&Ær¬Êj¬C±1mz¦¨"‹º\²fm Jü¥ÞÁà 0&RT+wÊr/À wÝPb ,p~À+0¯G°ÛÀw w0rp@mÃ"pPÐàU± -9°PBÒ0ÁKwÐ6ä£G€7mÀ ÚÁnèZ¥UÌÑpð!Š÷q‰‹Xÿþ:ă¬8úÁ²˜!÷;}h¼án;«²â‘<ž3³=k!êኔÈq<»üq²¬xS¢¸9 ‡;΃²ÿ1òpô&´ 29ªx9µU«ðµâÉ  ÝÐ Ðñ€ : 3±KÑG™ÐG‘y#l×nÊ·zû¥-ЛP¥€r~ ¦7¸{#k¢·l'hÙCº¬ËZ,ÓCÆÊ¸ã€*`שmÚCk¦Ñ¹Ã ºŠ*xmê¦ÙB±(¬;7B1aº¨‹©ó7ò«`*»“‡–Mä¬m v8B1MÆ¢»Ëz¹ºz*Zšº’ë¸Ãj,±«·©›ÿ¹²{¹†*¹³1³+Z½·»º5ц²Ò€ªK1cò mÐpÀ 90¯E®c{Áp°~pVÖé  oQû­I Û dó6Ù ±Þ@O@hË´ áEð+UmGÀ +pˆ°MPYe ©£ŠÃƒŸáéRM塃è9%Œµ "´ô³ÃÓpúq*·<7[ÂR;´#‰˜ÓrÊ£!4ÌqXoÆSr, ¥ƒq«¸“¸<ªµX:3¬Š€˜;ÏÃ9›uŽ%W‹óY à8 ™Ê° •` Ù°í0 ¸â ß AÐ rÛ¸ÊpaºÒ«¼¼npÿ#•ʸÐëLJë¸ðÇ… È<Ò{#=!½¶’­—{½rºžÛC9‚#—<Ú ÈÒ+¼m:­©·¨Tj¬w¹œÚ¦j’¹bzÉb¹˜›¹œû¹`g#Ù5»’k#”Ìȱ;yÂ+½·’£ª’!»º‹ª† ËÔÊ»=ä+7BŸKÉÅR+ß{[2ìÓ6LX S@B1 • ¿œð›Š1 5áK\2EÐÒ¶×9Pm“¿®~ÐI§¸ò Ó@Ç80gd’B˜Ù Á°²±%Ù0+ð5¢ ˆà Û°Ò`` ²dEUúÅ.W‰D¥¢Åžz úW(ÍÿÑCuVüiX+ÊW2j *ÍU²8²_UYieYèI# XÒuU¡*ú W…Y;]VpeÓŒƒÓ]µT1åV Ê¡kVRý  :ŸóÓu¸W°˜ ï)ÕjÓ:=ÖC èY¸8¶*‘®@ÁÃå02R Ó#6b#¦=¹\2¸ÐË×Ô ½‚Ò×°¦_ê¦U:ØÑj¬¶ÂÇÑìÉ—;yŸ‹º‹Ú¹¶¼ÇËJ»§œ¹ÕÅ2ºÖ«º©\,íÙž›#‚7»†­·¶‚˦½ºlÚ°Ý©”˼rJº¨ÒÙ“;½¦L1œÊÙÓK¹¬ÌÉ€ÌÈz»\Ò©Ö<ÜKA¢pP ÞðÊŒÉÿ%³– | Å ˆ.3&æ <6—¶mÙð ], Pr°,0g 12ÆR rÀÏr2mØÁR( pà A3¯ãìAÂÊŸ3ªp/l;ÆÓÄŸÈÄÂ#Ä¿óÂða²Ò: ·Ã7:U{8™8p"á dz³‰Ð“ˆŸˆ!éQÅrâžøomÃJ|á³Ó9? ˆI¼9+'‡5ë²àÑ¡ÛW0n|\㮽 &01pb€§}ÙK1»²û·•šå‰«·fÊ·…M1|›å|m×w@°¸Ùj0¸LºÁ̼§›»ºê»“­¥x¸LËÆ|½–½Í¼ÿÙ̼¨|®½§ Ê YË…ºÊ¬-Ù¨Û¹JÙŸ+”üØ“{–Òë½Ñû«‘^,–í½Wκª|ç©ü¹†ÜœÍ_\Ù • ÑÐ ª€IrP íÔà½~å¤ä« àÍ ,0>%l@À eý´œ,â •Ð9 óÄ×ùЕ`39mm@7€ì»s«NíôÔ 3¶ _%80á¨#Xw¸ÒŠó>Œ S¼q<Üo7´ÏáSÌáŽH´+K³P|:LJ(NgĵïöF h!²‡·!°ƒâY¼‡3Å!~!*gŠzxá­(ÖƒµÔ1Zapšápÿ“m 2ñ _ÐE` ÉàN1¹’+’L1ƒí·Uj¦±»¸lg#| æ6B62¸cº -ÊÒ›·’Á©¿;énZÌÓ+ÛÁ+«z Ì¥èóý¨{^Í:B¸œÌÍÌÉg*Û†>¼›üôЦu=è“=è‘«é—+f“<º{œºÉl¬ÎÚ½¿ÝÙ¸òæÍzç¡ Ë†}ÊË‹ºñÐÛ& ! °%–Ãñ ¿V ×YÙÀÁˆ&×:gÁP7¯,Â5µ„~€ùà ྙ,Qà¾M[V¿6¯Å„C@@¬sà»Xïiˆ.çñ²ãÔ!M¢)L¡ÊOŸ >ÿVóéRoõ¢ªTW]¢ZUruYޞآj¢ VÚ¡z=ïI= JXKÝÓºýî9W2Ÿk•X:¡ŽC 3  ¨•X†V™j´ªQ;˜p¡Bj ÊœØP¡Á… V38Q Ã„72)áD”Ô8VãˆrYµ—ËÂܹ.X2nÅŠ±J¶jZ3ź™0.ÞeFÃÕŒ7aÂÒpáž¶P¶©fM¨Qµ&ÕµE¸wÈDnÓS°Q7E½*µ˜S©áV±-æv¸KŸ®zªLÙ„¿€Ã%ëÔ©²·êέëVjͧwcÅ+9®Ó¹Y/cåkØ/嬆á,¸°àÿ»KýÕë¯bÅPïÖÌÌ7.M¶‘Ÿî…Z¬f]¼ucß}š˜7Ô;G‰³…Ê—ïŸM¶qG‚4oÆ‚á(/9yks¤±#Ù ë² G°Uñ§Õj‡E6 VôÈa¤Žm\ñc›r OŒ¶ñƒ“*iÃæÈ¦o^YÁˆ DÉ#rà»6$[ÅUŠ)¡˜‹8B”ÊPi!–^*CF[l !•p4)Gk¼ñÇ•&ª¥[<)G"‘DRȉ*²É•ž$’É“ªäI–„\òF´ÑÈ!ª±Ë…´l)ËŬÌ)¯,2M(SZ)G2q„óL3]ÌRO+ÿùä‘Πײ%@ÕÄÓK;×ü“¥Â¸²6h€£‚V¦Qf8b ¤’(RS ¹¶hÊ««²Â!C¬¤Z8u-Sï J+¸à¢ê+Ù˜K­¸pêò 9¯®Ú²ÝÃ,.Æ`“j¹«\ƒ‹±Üx=–6[+S,©×Ž‹°¬ª6Ö¿’ò˳ҴbM9X}UWáä k)àš{¬V¼Ž]¶9¸,ÎØÔŠÍ5ª Vi ‡5"ÈÁlÖfšJ´# Ü ˆlà(Ž&Ž¢ #¤i£ ošŠgÄâ±/‚#"Ȧ WÚhcošÈ&8üˆÀ›+r`áˆ6bŽÀ#¼á98²9∊ðÆÿ (bøîÆ·&"`…Ï2¬a1J*Ï܈  ú袋„,óÐ2ÛtÒÉ<Ç>)Í9­„SìD±ÆqîA³¶ûÎ0³>;î½ÏÄR͹ûô›î¾ÏƳì=4|íµÑ¶r ±—DtíÃÔñ=¿\“É Ÿ<<¢­¿f©!jbb‰šLVc£ ˆ‘ã(eºéä ¡>U¯ÛâYŠ22h]j¬¯¾ÂŠŒQËRf,±Xݪw~wËõ¯j¯Ò}¶šÆÑíù~E;6°·.+­]…K×7Ü «L¸ ¬Ï5^]Ñ¢­´ÒÛM§Xåm·À.Ûþ´ÛD­uD%€•‘Ë»²2ÈìkW…‘Ë[Æ•v%«yÿž*Lp®œð±¢ÈAŽ€‚&¬` ÛŽMîà‡5HÌ’–ž”e'Ç•’ƒ¦ 9%ý-"Yÿ5Â@¼(#k(¼!‡A|ˆ%>f”ä`]®Ñ]<Ü »^ ¦+šYËNeª¤<…xe™ÀY”G«LPT eHœ~Ù -ñSçýþ’™ß$p_{U[vÅ.ÄJ4m¹Ÿ°ôB­¨(CTÁ i j¹柹‚Mj^™…†cz! rnu«x4Æ0™È׳x%¸$æY4ªQ‘ŒjhB¶¦C*— †7Xц¨CKb€V²¥ebñÈÄ*‚!F kpÅ̲Á³)-G(‚ÐÔS8Dàà& Ÿlõcn(àвJ! M0dÿVÔ9-!¢lÛæ(§6-ÎF§Cf˜Þ7I¶lh$ÜÆ9Ëa M¢ÝÜ îd7Íæ‰pm\äȆÚÊFVm–åQÞ:›YÄÑMom{[’À„¶ÙÎ)´ëSlg&Ųa!O`‹:0*€a ñÆ4ŠP„b`÷4‘ ˽´Çª²oó4 Zº²{ô,b[t×­œ6ÝÃÊH%,zë0õ½ ¿¬ÅPÑì*2É‘ŠmèKà÷¡´£ú]*H˜ªÀO4i°ö@jÒÁ„ê¿:­Ímž‚NÛFWMq©ópå›î±¦|ÊqMç’™ ¥%*F Р`h¬|hÃ4:ÿŒäT+`"TWP Q ‚È1+&*Ùt'9mO æ êèpZ 0W&V¢Þ@D1P C§kXƒXÑ…JÔµ Þ€C—Èh64%Ê–)f$çÈ&ÆQML€Ê’ä|Ä'Ë™†úžåØÉQí´T*T¡ÐT[D3©Ks´›üä¦CH’þ’¥;—hÀÔªî ;7ÙF{éENÒ.‹ÌÌ*¤‹œÉv7Q‚§<-ãX©­â2ŽöÒʼïäÊWRC®xe)›HÊ;ïp³¬3VæMïv·ÎcÙ†+†Lþ*Ú/WMpXS±ûÞÕ‚Äà¥3%ª(F“Kÿù%žøÖ¨wü •¦\j©ùŒÀ1#,c%Æðö^öhB"k©417ôoöÐÒ^¨Xe‚wh¯wZãô}<É®g9cü›¨Œc1 £É[â”­A•`Á‘YS¦Ä8GEdÆ uM0B…€f 8 ea%rZ0œP Ĭd6‚+rð2 °À ¯ˆ‡füÞxLãÞ¨+ü>ͪËA‘žÀ"®qRs“–Eì>KEräkšÌ$F@¢Ø»ëý«Œ»×‚w‡Ä’^[ìbcôx`Ö²ñ…ïZ×iw`„$0áåå3oab$sŒe)¹¦KÏ>•„¥à;òz7^ÿñ³ô<ß7O{Οïq=è`_ùÄ›$ÒŒƒÑKTB'Ä£Ê/Ö‚ÎW@.›0N¿¼]O­´Àww^R°–¯TEû[ÌXÐ9P® F1›`?õéÇíèíú¬Êýü›o­}é õ– 8§éA ¤˜7– )‡ƒš±`8 ïØ€,Ú€…ñŽhºã ¿™pÀçpž ŠŠbS'¨ˆ6í‹ pª lcɶbhOPª †¬§bØ„9˜€x¾9hŽû„܇Ñ8ÇX)ÅÀs2†¯‚#PiH¢lØVh5¨€q€Ž…Ù€Z8?Po(™@»jƒ ÿøB2ó‚i˜¹‹­š¥úܪqȧxø„9¸‚"ˆ‡ lº®a@„(05 W,œa- 2L@„_2,¸ 4Ç«#¿©;=Oƒ,ÍI&.‘%i¸±´ÝÒ´=14" ”ך;/AµÉ FË,AKâ’œá{“%Îêã­)”#yµDI‰Á´W¼ÌùEÅ!R4EAÛˆeˆgz «Ø„-ð僊OˆpÀ2 ŒƒJ§ðžx2 hC‹³ §þj8Ø‹Ž ©®8©² Z*­àíÉŒ9h§m1¯ Â(~<)ÚèžÎ8(¹Pb˜£øŠ£°BïÿÈ®rš ;(ý ȞΈŸ×€Œ] hÉ‹;p§X¾\q4Óv¡ ¬‡xØ›A“„ x³ŒO6É`ɳ(Žœ3Š‘Ã9À𠜌‡"(Š(,iPƒÒ94cšˆš ª†ˆ€òð†&ô†"¨€5ðo¨€€ƒxðƒqð*‡ ‡+Ø*­ú'Èxl0‚6h0â„HÈX pDhNÈV(2:ÆÈÁÖû;È3#Å9£ÇiµS‹µÑÚ,¹AÊR´Ì™D@Ã̺ 5Mä›Ôú,_Ô-Wó¬]<Êú,ÎÚº´Ö›ÓLMÉ”-Î-yÇÿÄÐJÅÇá¬Êª<ÊÃ<Y¦ z+ŽêÂpø˜Ióš ®Ò|ŠŒœ•jD§h ‘ Œš&” :¤Àíù :G×HÉ¥À7¤€ ;OÚ®`)Èø€ ŒË·ošÈŸw™ƒó—n‰ÏK¹7ßðŽ:Èå“À4»ƒ,Ê¢­š±iy1è@Ào‰)쌔/ê ÁÝ 0[ŠÈ'ɸ˜Œnè£("l –L Ý鎣h@Ýyš:Œ‡3`I¸‹¦p ïø4 å¨êêú˜.$2VØuXªÌ5€ø¨€O@3oð±:$e…°‚œ‰R ð®<» †¨ÿ4(€¡ –Á²ˆ‰(cX8˜³6@(+ÈýÐD¨*#&Y”h#Rƒ4\L4Ð%Õ‹¤]êˆHB%ƒP$>z%\²½Z*%\Ê8ãU×Û¥Se½[ó£7âÔÑÍ*œcýÔ–MÈiPŠšØ„ˆ±Z û™úÚMøló ©×p5‹M˜Ñ[¾ Àp­¸98;¼Œb¨…3°G­˜8¬H½Ð‰Oà Ì•oÕW~™×NHŸÔP†àŽºÿøŠ|„ÃZè§Ø÷s ¨Á×`Œ‡ÕŠÕ ‡Œ‡+ÀŒT±u¥ŸLØï8ƒ»˜1î)†'=8§xXT ­AM¥šƒL(†|jA®Ú-2ŠW¸÷pø"7X¬‰9˜o†m° ‚¬œ†‘‹±pÈW…/ÅÁ ¨€ €Ô(‚pp'*n`èCu§ñ—ihDx8š¸ª„aè>È&‚£@„ŠY Œ+¨5 àÒ¡AÅ‚ƒ™Wà>ÐD¢)ª„JàƒG°oX-tS Lx… À‚þ¸h0…_NȰ!¸„mhíÕªÿ¹OüSVjØÔÏ\4µÉÍ6i­Q­ÕòLVMÄÉ-×ÔÅU”ÌÙÞTû­ßjµÎlEã®ÞÝMÉ¢L[,^ßz›Á‰›4 ÆE“MHsÍÙœ›M:ÞàU‰—àµ'p¥ú0i±Úz‘ 6&X9؇…INX«§@„x¦‰1ˆDØ‚¿Ápðƒ-C» Ð.8‚øhŠ" ‚dh¦1Š bÀæŒ)= ‚yHºNÉ€…KЃi¹GÐfx„nŒN8G€ˆ¥Â‹€‚h™žGЄCЄ ¤.(Ð=x„r 8ˆ-pª-7¸ƒ*p„ÿ¸„L‡”ƒ\è€CЃ9 (Yp„yè§‘Q-…C0õ*!è€ox„nQ†i8(ø†ð e¨…Gð˜n §op„oè‚Sɨ‚*…#hÑx0€*ð€v¨ŒM€ƒ*Ø8à©+&ñœ€yˆƒgp„¸¡`x[Ðx­Z…n0GЂ*ÈC§™ƒç08‹¡L€`Ù;˜8`†y˜‚"P‡"`&h…Ch(èÂ#˜ª˜¸«€J‚Gˆ‚+?Hb0 ‚¹2-€(ЄJ¨NˆÒ †KXáˆñ˜ë]˜‡°‚Ë=‚.øGÿxà#€iO˜iðØx˜’;‹ÞOs<\cU[5“VÆÌiÌŒ“Lã´KD#PŒ5ÇßÃ9®ñí-Îô4QüœÄ‰KÌè:éEÖ”I4­LëÅJdµ-A¬"!4Ç2ê»ÁE0­>›T;bˆe’ šÂ ¨…K˜Ÿ’ †é‚žÂ,ȆQP.¶(ðŠ iˆ‚.p„ÿ]˜-pK¸ÖÀ8‚a -('i*€&8èŽøƒ6È(†ä¬ ?@„8‚Z  ¾hVx†&(è™@ü†kMŽ @VÐX€ã;ÈFuh[p!,‚¿‚î€àRK¨Hâÿ°K BNoPG²~Q?0†G¸„O Ëhh¦‰‡N˜†W0n²jþLà mˆ‡GÀF踔"2ßx"  èeÀp(í0…è†xx‡ÑÓ*0-9†#è1À ŸàGð†j@? nèn4‹‡(¸¦bPÃop{ÙŽ6ÐË^Ã`à†KÐÈþ–NЀ6(É)c0e8™#hÂÀÛLo3!(€©YޱšÊ°8„ Î)x…mˆÒCàJ ijrX?`%ÈoÈN°ƒ>`".«Vøè¡&`…¹ÿ58½ƒ5ñSÔã<­©Ñz3Z¼Â¢UMµ=°¹¼Xòˆ‡à#‚ðU¾ U72T:"<@ýMÆÓ½KUTÉ3ó†`¬Ä£½OR,Cõ;FoUY2%†¨½\E=Í›s`ZóYÂsÌË;DÅÔàÓÕ‚8ô`tÃCÕNôדô%”Ós&( ‡`ˆbËn@òxÞ¥;.H€Àa—<³`‚ Ø*~ÙècÖ¹pˆôv 7ˆ€ e†n¨iïÁèZ(ƒ­ŠÉb°Nø ›11€‚%1–Ý‚8ÐâÇè† °…GðIÁYÈÐHé†5<( xÿ±îøu¸Ïž$†yî…œƒU€V8Šò÷xX¼!-ÊNx8^È+؃Cø˜ûò*eÈ êû 0€Nø•d5蓟1X€UÈ„µX¾qà[¨H]×hxnH)S€ðº¦ð—nà„¸íäèhƒlì–;èGXy“Œ3 #°lœ3Ño8‡$ŽUà†C脜½ƒµ2u0Ÿê¢چ8(€¸”†ïæ\ˆ-"ö ‚G˜ƒWè²#(€8@Ò€I"?h°«˜qò5@ì8«#X8X‚o |'+°G` ˜"€(àƒ= ið¤‹&”,QLYÿ+jÇ$Þ<‘œYì!éÄF“E±}›Þ’M»’Û>[œW›µËjÏ"ßšNMŒ^ÅÖª^\ÄÏ‘´ÒìÍê—ç§Dá¢Äó…’Þ¿4Ó¼íg¤h¦¨QÌ0€#8„m ©pQø-†Ø à‚H,h,î¸év„Æ7ñVM(8ïÈ„NÅâ]™ÚDeÊ&L¤Q ØÄx8âm“åMÙB8ÚИãæÎ¦‰ÆdÁ)æ¦S<Ž扉WëN¼xÝøP™`tU¼`EdU¹ðN&5²æ3é%LÅæ¼Ã-N…9«6fÊTAÖ`'\éDƒO±;PfZUÅ;[Wuÿ"FÌ•´‚C‘ éÄzuËtçñ„3@d ö‰áãmBJL7^‘*ê带W'½áâ…ëôË› «»ReÅÖÁwºa:Ô G°ZEr:Z‘2q±9½&vR¦÷SYñh#ÓÈUH¯¡)ÖyÎ žöÛ“­ •N—XÉÉtƲÛ{µÍX¼6+(iÙæ‡UÓÈ1Ç3”L‰EG°°‚GáM,´1Mó\±6~¬À4ÃÂ+k€Ø ­`Â…1MPÇ j(ñB7z%Ö%GxsÄ”QM=ZÊŽ=òÈcÕPC$-ÕT³ ìÈd ™äŽGÿ ©$5U)d–Cö¸å–^Љ%‘BjiäŽhi¤’i~Yf‘WºÙ¦šféå™\¾ù¥Yš©å™]¾Ù¥Ÿlêɦ¡‰ú§šb :䢆^Yg˜„‚ɧ˜ƒЍ•{ ¨§ž– 'T6å©eв£©Zžº$5™³Z8Dƒ#mZ5sÊpBÅ&—\«èðÈ8„Ô*ÜôŒE˜Åµ ¥‘2Ýôš`ÓUEøaG¸BÚà<@o˜°EŒ`¶UÈá %RäІ`TâÞ€7¬P‰ùÁG8Ž ‡¨èÞ`A‚2‡Nü gXÅ u ÿŽGÄÍG˜~t)!°ƒ|ª¦õÖ¹¢©J Ó[Û4§Hý‰®}â–z$×QÙUQJbšøÊ'B­)¯–’Ôú’Ø)Pùµ¯ˆe”]A¥×ÌÖU°wkž4ÕÙ/JNè,hßt§G=V®©:Ÿ¨ô$¥#-# ² ‡2*a€"l¥p8 ¦³Ïpà¶\PC@€°á ¸‹ï°œ(²Ò€”Q” .Û€v½  ­fi‘Cr-7E:è5Ãá„*a+DS™:ñ¬ ðå°ÀÁ=Œ8Lc/÷z‚¾aÐéÈE( ÊLê‘Á­pÃ2!çÿà€QXPŠ1¸#Á`ȼŒnTï •FNf”bì9ÈMá&„oˆ"( ž€„p›Ae0àˆ<Qä–I ¦ðeÈ¡óe3 £†)¤)Q;0á²;´@6ûÚBÒa*Œ$/Aᆄţ M˜C6ø€ˆ5#q°ãt^w…¸BF`ÁV AȆF÷‚°€ÙPG^±hC;àPR„idµ(Â.уWúJÑ”² ± kXC6Vi¬=ðC´'µ*ѳa2ŸY¸Cõ5VQ™2óšÙiGÿ°™MÂt'0ÏKê­·‹>He;²÷Ó=nÎ)چ¶eÏ}mR±[Ýá&·gñ(qãQíV÷œô ïP={³5¼aˆ¦'R# a¨U< PMÀa78˜1r€+”©¥3áƒ$ÔÐ 5„¢zÁpE¦Œ´ÈEjšs‚1Ž Ä Ê¶Y-A‰¡}2s€Â6‚‘ÕÁƒU¸ÞŠ&‡N´ã YÍBÚP…"¸áÄ/™& °‡UìSÜ"ââ„L¹€¨n€² °An@fUlA‰…Œ]ev)€3Z@IÆLrQn s:ň€,^!˜UT& ÿYbä ‹#$f.ÊÀÁ8â0µ¯²È*6 ÕC`UVJ<"àˆWÌf/Á<ÈÁ+(ä¼ø‚vÒrâ.Ä8+¿Ψp‰êA†²ðÁ&p/£8@Wp<¼ñ L”@léNxn½b ÃÓh‡+„ +xBZ?1p– d¢~PC¼Á‡vLà r`A6¼A‰G`¢=® QþÉBpÂõ@&<Ty È4l•Ö¸LPôÀ%”‡RÃ7D€Ää€4Á%¸BðÁTÀ/%xƒ•ÁɲýP`©I—ªª Ê”¸ÏQü°-I©Ðÿ æ *É2a=‰ ¡1!ù´ÐMaª bA–ú¤2ImÕÅÔ LƒTB¨7PÁx"lANÔ q±!„b(Þ‹U‚'DXÍ„èäkh×tŒƒ< n­†2è@¬FbT]8H@I¹bZ˜Ø=-„0˜,†è€ÄøMb@}sìÆ#ðYb0”~\NåÅ€zÝœX0ÈÁ%,APHTRPÂ'¨…F¨EÿÆÅÃ8¬‘QŒq… IlT0„vL”ž>®B&lÃ#œX­ ÄjDÁ´@U,D0lC%ÅÄÃd‚T@Ç„Í,Aº|Í´ÁD²Ü°@x¥Ä 451˜7Xî%†(\BôÌ&DŒ4 Á‰Ø+ ƒ7<…—M" _Íh— 1ƒ\Á# C b¸EÄôA´A%¨Ã ‰HêHô¨Cx+p‚7@ZTB\åSÀ+T@0ƒAVmï­T€LÕ®ÙHTµ7`e´AHCÁ¬€3ÁžˆOj‘¡š–±á ÿ¸õf%QºUÛaÅ–eu¦Àñi‘I\‰&û`Êš$¢½í MÖ\M–eÆfiò[]­O¡T[jfeÙ‰jUiB–´1Šk^ֻᶩlbÊŸ4‘@C<""TÀÒ,ÍD´AI‘ÓÅYÅǵ#P €R®Æ|Bg¼Ì½l‚QÒ¬PÍj´A1Ì\¹ˆŒNÀS&è\…ÄlÞæ¹ÌÑjÄUtE­…,NÓÅLz†ØÌêì—B=¢„͈uí˪ Á~LÃ8€UpBHƒ\,Äb" tÚÒ0Ä6êÀ¢•jêÀA4Áÿ®±BíAíhN6Aàíðå+DÕD@ZF€+dÃS=•è²V&æ¦$äDÀ è‡Aæü¼O§`ëºõ›!šP  ½¶Ê…м*ºÏ &Оô*oé.ñÚ‰PÎk•¡÷îˆ 5o÷ŽÐþÐñºP)›n“PòöÐøþ •o󾯦/ûF/òîÐõza5$œ UVkœ`ÑÖ’œŠ5`’ă<ƒ'@ƒlà€T@ApnyœB.,#°À1׉Ú#Ì–(Ô®,<а ¿ì,~iÀvÆÇnm‰®°Uœh·ðѦ°N-{âÿ½ÎE‰–ã½è˦痚0Ìn„ÇÁ0 ËEAÖÊFÜëŒ6mAÚ°vÎÜ3±U´lçp Ãl {,€â¢U,ŒÍŠðsjñ‰F±o­òUñ—ÂpÉÅH4ATÂ<ÃøÁðDƒrƒ lCÈA%pƒŒðÕ¬ÂT`ÈCTÃßú4DÁ£Á*ÀøAI‚N´*'&®\‚/Tê¬%øÁ#8#%Ô'ÄCÁ_U¼B@•4à‰­2JÖ °–¨¬°â*e¥&^íæ  [j… ²ºIb1s´ön¹š[µ6ób-³¦ –7?3¥t½‘ëšÁ+ÿ]…óe&–·ž3°ŽV¶:™ Ð¦¨ó˜„Á©œ 5PÎÔŠÜX7˜DôÔoÇyÆ*dƒ1€³ÌpÀ>qËbÖ¤°,ñ,а2´~š¬ Wñƒ± §1ÒÊ"CL“'6-#­v*q+íÑzâ½'± Ã1Ϩ?RÛ ­P«ðÑVï0 +±L³0CPôÌÂìéô7ñÙV1ÏÅ#É4Lǰ ?P“YˆÝc¨Á 88@xY ‚ DU%°BÙZµ$…ˆÅƒó´ØŽ7܈íéBjÁ6 ¦À¤ÂA(7j4& Î+,fLåÀÿ6H^GÁZZêS9#€¨Ã*LøðîÒ•kþ!NP´)ç³­[¸ùª´qŠijsqަ5æ¿q–3ÃÛi“›£ ³^ö5‰› ðl+çqÂrŽÊîpnC«9¯¶¼}[ïâÛ²J ^7´ý¯‚o½ï¸}Ã}€cÌ&sƒlÏÅuÁ'œtA6Dyv†G·@Éí|—|Û7}SlBçw{¬ÐÖ0Q‡t~kç'´¿ôÑ¢g 5·´±‹è}o ëwÑ"¸wqØîtHcôãpMž(zî´ õŒ2±P5KϘÚvh‹–ø‡xÅÞÁÄÚtwL'AtÁ%TBÿ xÃOT(10fLà X$aLÃ3œXOCÇlL ç¼ÏÅ®tƇã0 Ï8òÄ„pñâ…s3aB¼bÅŠlJ/˜ 9r@ª€" ñÆ‹PÉÀ‘G¢Î‹7áNBe8VÁÉá­ ±xG€TБ­ÂŠ`¯qa›´`mrTàãàŠek*­8²¥€ÿ·JÁø´)àÇœ Eîàˆ×MY8eÈ’µªLµ²jÉV«FÍ-µ2´ÈÒ¥Ö --·eÛö}›–ïZ¹ióý ñ[µl³Ý8­â¶rÿ2FÜv1\¿™'&7±_Êž/vìxmßÒš?_>yíâÖ•)×–íº³[Å’ßF]z²cÍ•S7Nvâá~—¥m^î\·ÑõÎÍ{¸5Zaž\A(0œ2Êî„»S,\¸é²W&¾|ù°á[ü>!X8„æÓ—G˜)=¾ϼ” +,ÿîCð;ý6)o=þ oñÀ‹ï>„VÑo? ïÛD?÷”!c>öÔ;)Â憎 ÿ¯AôÀ ‘¿bôÏDÙ#9œÀ¡…\ü‘ sœ1=eR4É‹É0¬ _D¯ÇÜïE¿{’¿‚ 猜VP£€# X¡92¹b•L^©¤Q @$òLЇ<óЃÈWàˆàˆ#Ú8‚…l2@s›#¶yÉ8ŽpÐ2]* ‰Ú€Ã'ò+æ‚Ê[hšLZ²“n¹Èàº/½î*ãÕWËÀ U¼ªYf:²lźéà¢åWµh:]aÖ9·p•ŽYZ‡}ËÙ_­ Zj{ÕXlµ¥®Úb¯¥uYºnUKÜê\ÅëUèàWØuÉ ·Ú2–E×Vs§Sk^]¥ÿÝ6¯~±•ÕÞXéÕ÷Z^Å ÷×}ËMk`ë´}Ö/×X“L3Ö–Ñî.j>xÂKî°ÁðÒ‹'Â"Äó>ÿ|OÊðÞãÏ@ý¢Dé@-;LélÁM,’Ã'¿[ËýR"pC)+ pLÜd½M|^¯Ä°¨f9dµ¤P ‡Ègœqºfås1¥p6üt¡‡ô0DŸÙCˆÄ#bOj¿{À+œ`œYþ»¢'0|@,ãc¯¼x€øB+¢Ð¢GŽˆ ˜n‚!ÈWrH ‡¸ G ;pàôŽ`L2‰%eVùdšq¦©Ä¢0Æor(`6‚¨,/à2Ôÿˆç€b’Ÿ&˜`:Ýʤ`∂v92!—,4Ðê2{™%n·ÑBƒŒ3îS;ì1Î6CVÏN›¸0Á,íµÎ؇l6ÖTãK|ô‡³mÉÁLü`#™â\Æ0ÿ„£œòåfbø#Ÿjö’¾ÏІ‚ÿ+KmfEÀÊ,P6!Ì]põ0°i±‚h ÂD‰)ãA\"$^AIÀ‘E2±˜lÁ ;9ä !ŸèF'šŒ(¬ 98I8*±-Äa–yÂö¨c¬ ªO„ÏÒ´Þ¢—[]G¢®:˜¿NÕ[¹,¬¡»eVtzëÚrÅ«:Ñzµ°5®fÉ¥µÅÞr© 1sEYÔ®oƒ{t5§YäÂÞm¿]—¹Ç-Ö¬¦›]îfg¢º•npÛ¥ÝÖnwÿ_ʽ¯h‚³Áümð¢ è¡É¥©0Jâ)Y}¬v’y¬C/ób÷ˆµ‚è,©’p…‚¡B=Æ,Obš””q·•ÇH´ Ú“_ûê“‚ûcÌ3§I¿K{š7謟3Ù¢¿~®“ÔˆŒ8O]œÞ†€üÿõ6 SÎNš5ò'üD¨M|¢úÚìï¨éPxÞ:áû «·Éês» ¤†v¬³Œ3¬ Axˆ €(BÁxP<È°Šƒ$¯ÃE F-:Œ)]e^ºˆj¡ âÐB.q¾‹á3¨.³nˆR·‚w‹•Ý8O‡W—6eÔ" ·ªƒõÃî„ ¤'w‰I¶žŒ‡#Éâq°C§¡ Þ&©Å&ŠÑ 7tB'Y9Èr¢Œ;­ÃÓˆ’Ë\!Ô»X]7Bâà‰Ç#Éé·}‚Ÿ 2ã=Å“ÁÉF4t!Zb5ì X50çR›Å*Ô£ê‡_/Æÿ4ÚÀŠm¤DÓh¼ñ‰U °”†â&ö) Æ5y’N ï`û¨ŠŽz”x¥iÁÐA%:‰`xE (ÀjqÌÐQCjSª|šfUÁºË|CÏÐÀ3Ø«Q `ØÇªžï|¶~µaˆ£ÀÝ'›ƒéäÍ5)—÷Í÷¯Ç úÜ7iËܾ|ý ¾ø˜lM;ÿ×ϧfµÏÞÕÏ`ÂʲàòéXƒxêÚ*ô‚˜Ìd$ó6Aâ´'A9’17iÆo87o²dƤlJJäM?Nb´b§‚KbŽBJŒÄ®JgF‹SŠæe dêmô-!LfD>Êg4ÿn«ÞâzމlibÈÄÚ,é.æ¤Äxì†èˆB.¯BjAáD¦ìnÈCT颤äª8®e¨NüèIÖ¨e6Áà âúÍ ŽCÒæë¤DhJIoôd`éÜà ¶` Ì­SŠ\axÂTGàämál¤ÃHæ+uÖ#Û:ìp)’ðpÁѤÁwް¤á¼¢2!ŒŒ!5˜‰_Re÷Ø":æEõ`ÞEü‚Ë]œ+_zÅ¡r+[Î…Zd¥a&Z¼…¸¤é`Úe¢ê¢˜Å`²^Ö«av_ê‹XÐËa¥ 5±»ÖK\œ…¹Œñaò+Yäÿeá‹sË]˜±»èËæMÍÕPÍ™RÍ/ˆ…¢ä®ŒàâL "rÉ•DIRDjR"y6!±T)=VoÖmdKuܱ ÚíÆ-* ,2nÛØM<Š¡ÃjbÞh†f6aj!% ¬B KÀÛ¦JP“ÂN:ä¤¬ÞÆ#†Úƒd ÒÍ‘Žé¢˜OúMAnž¤ÄJH8Ï<‚唊ۊ¡>’#õñ>®*jAaL „²B?JìtpV²X"h² K±”²ܦýº.ËàÀ ±Žäê¯>AFˆ&ì:A ˆÐ$”áŠ.<b>!Û ÿ'?ä J  †!æî V¡ (¢à`"à ŠA8—º‚+!kãA º¡ê²>³"©S"ޏaä Š¡3‹¨ >¡ Ú`:SV@ºA[" ¢/WškYh8üG ‚m/bíù²‰Òh7ÈI9z‚ÈÕFƒ6`ËÔ6mIÃø&ˆ|Po}0¨9ý‹7_4ÈÝ'Öf¯û£0 Hœ‚sÕŒ³ÔøÉ¹2íšj0¦@/>ø@ÚÏe²,D:® D?ÂFÜæ$TleöƒÌZ ±&à KB:….ÏÆ+:Å!P ?NÂ$Â/Ïàˆ†hŒÿ!&_Fm&¸áÙ£*Æé® O¬š¦Öà°Sö„ PSj¡Bu¶ÁËè¡ ¼HÐcpàŠBáN á úí*`ŽCæ`BÇpDnvRÃ6à Jk¡ R! #ày¢r  üàI ® M`b’hF3LÀÒ´mâ¡ º .=:¡ $`ªä$ü  øÀàö¤¶€*à2IA°ÁQà &á ¡ Š r $àÆmCŠ@  yÄÂ-]AøÀËp¦ .Aâ³bÒ 4`ºÿÀš uàÚá ¼a¶  Ô´æÁî@ øÀ-Ü9rq\XÅ5 Ú’ïž,c79-ÚJM8jÔÀ¡"æ=ëÓfMë)õÔ_éõ€ŽMÔŽMùÞ3›Ø58Í€ØõÔº/Ú„íÕv]goY&vºÂ塯ÕUÊÀÔÂÊà P€&ÀÆäÃ>p)ðk`=Š@tÀàââÄà ª`òN•Aâà¦Áiü#ª@:Ae Oâ >Áñ&`ªÀ ‚4…  a‘²mŒa< B<:¡ª‚|æ   ¨ GrÀª Iã!<ÿÀ4¬”¾¡  ΃   ¾¡  Tv$Àª@0’ª  ¾`ÒΪ¶@   lˆáb`Lâ<ä@`áºA!2at  ´ ÝR'`A ÑÖ"Á h»á&    ˆd¤¡ æòÎv@ˆ >ápÚæžá¢á£²ªÀ(‹hÔ,ôÀ"£² :€¡DÓ:¡à í$6ÁPëä2±¶à € 4s:Áâ" HÉqªôÀ$qšš¡ 4§®À P«(¢"` àÄÀ¼2’ø@´ bΣ®ÿ€Ä€bƒ.!<@ur&VÀ*€úð âÁd¡d!€À 8Aöàö€Š@CÒTQ_Z5VQÇë9fq\›Ø9¢7…e¼’‹·Œ«½Jñºœ ½ˆQº¨ UZ‹ØYÄ«¹l ¼œqü–‹«V¤Ø½t¥½¤ÅÍ+Œkkøaæ«^꫸^qÙ ¿¨Ë¶¸¥Ò¾˜V (›v#8zo³c>—á>£`i$rBDª lÌM&¶ÀGÏcg™asÂc8¡À .†3Á.!¼#íî$¶ bN!Æ! @V`!6$ô` Þ‚¡¨ÿGºàþžò¸Áº¡qpઠhxA‹áa4yÏêâ”R?€àºZgá<áþâV(áëZ ¾á›97* ˆ:e:ÅÌ€¶öpÜ€¡ÎùÂ:AÆ!&8Å<º¡ ŒÀˆÁi‚À „ ðÎ#ŽÀŽ@ú£åÀ L N§ÄX  ¸@* ¨6õ€ Ö2<  <€?t€¾À!iˆáÔ&,æ˜!ºà˜¨¢ Ž ¼lº `.Áà:Å™÷@Ú`¢”‘< t@ N‚hP  xÿ¸ñã€L`t§¬  c èr¦Ô@àæ³ö x)ŒáØL“*a¶AXxd!ª€†Á|¯ hÀ : ¼á¢`¾ ñ<+q#auíÕ–Í7ö;¹Ñ¿RùÎIž*F·e{6îõ9©S?í;çG·óuܵ5ríù Ú¾IÖÎUØ€³8j©“›’{¹M€Êœè›Xè‚háà ld=Ú[IBreLF?^Ȥ€Þ&À‡÷@ VO õÖ`¶P!î †€ö`´â„` ˜a=ªAô`Ìb®æA <ÿ:upàša.@¤ ¸A Ä€ Ì ââ!Ú@ÄAä Z ºAÀ .Á!§z!œ <‚!L @ !ïœf’Ú˜¡¢±ê{(" ¢  "q Xš¡p ¦`aÀ€6h S ¬ŠGŠ>a¨ èb®4øøà;$³d–ð,^†à„$¸¸à2à¸h d!b|@à€Z|o2dD]²$ {ÅÀAâ!µùÀ8‹Ý>a^¡!*3'æ´ æ*+9AXáL½Î t)áDשï V€ÚÿÚîº!‡/Á"& :`š`Π†À ¸¹Ã¶(Ö >áæ~`À€ÖHä ºà:e%æj ¦àLš!’2¡„@‚*ö ~€º¡ü€ DÈôèôȘ9;íö¼3ÿUƒÄ;œšõB¨<©ïµT¼赘3~°sá÷‰Ö¶^*÷À[}£="§¡ÛBewäxXÐÇ„páæÓFC“V]æQ¼b+Žð‰p¨—šnÁ£U¦Lµ2h@Å-Ó n^jsùÆõ;oÜesáVƒ+X0µ¼Õ®¶¸LäÉ{ó–¡UíqÇ–-ÓâkØ2áË…%3ÆœØs\Ć7 YtiÒ‡å2ÝYïjжM¯–û¹šç̨ κ´ðÕs_×^^;5p߇yW_N:{gØ‘7—;ú¸ïîÈ gÙwb׺¯ÇÍ,WòÜÀ~ýƧöžï|kÕ><þ@ Bl¢L8-LÿÊ´°` áè`8dÌAC+`xsÀTÌ1 ž#Qߌ"Ûx²G ¡3ªG¼³ÀJ ®l1GÝcJ6ެ‚ƒHgtÀÇ4|’Q1ûî¡Æg”‰ÃŽ|5‡F«ˆAÃ+Cx²•rhrU3äÞQAìAÃL‚ª!…ÍÌ!r<`€ „D)ò¡K<ŽT@ÔÅD‘À¬€Å ñH#K?´1AÄ𪋇t“`0óÅe]Ý5]t–QýdóÙY|]O=õ{bX×ña|f‹ öÙráGuÚú6öÛn—m_~w…uÖv×ÝöÛ|—í·Ö‚ï-7Õf ÷áa?]·Ýk#6ÞgoMøÞ—ïÙÜ|ÿ®·×£qŽõ|[g6åÑÒ¿`B”ƒ ʾ • *³I0Smr€#kpr 7Ó$” 9bhàLÅ8àÀßì4A0™€‹.Ó„d<×9ÓÉ…pù,ØèÖ—ˆÔq eÛ]ê¶‚Žÿk€‰¨D7÷4{*î¢O£›ê*Ÿ‘‚r E}>ª9¯¥T?a©ØsœØüF0šÁÌsÞ ЂË€%0QŒÛÑ®³kA<"D•2¹¡ p˜Ö6Q„Oáfƒr¤ŒxãG¨Âžî 0¸ Bq>0,+G”G/¼q ¤¤L—*†®G¦qDĸˆÐÊCìáXÉU;eŒox#\ÚÄ7V@ ì­›ðF#²‘‹&0ð Å` zðƒ„L!— FÈQ 2t©wCø xR•(ô¢߀!OÎàài#¹ƒ^!„œUªlB+¢…Ødóÿ(Op0 ° ÇùÂÕrÌd*Ÿp…P ƒh { ÁŠ®€(¬°…1TÒ¤(ü€BÓX¦a‹È‚ÐÃ7ÀÐOˆ!EŨ tñh,$#%hÇ/L±…c®8„€q†M …"zÅö0Ž~‚”€ET5–"@©ÍÈŒbŠteÊXI ‘ N08ãˆÀ žÄ£ 4Ð.pŒ'C BaJ1ü ˆÀKš@6„_¬Â[81árÀð 3ÉÄ!ȦÅ#‰)äæSãHk¯‘Nj¬#žç¸?}.4lÖ£ÓÆè…ÐøAÿsò|žH§ç1ÔHŽv=ÒTº9Ns˜c5B¯Î<•qN½éî䆧ËÈtžõ²:WǺ1¤ÞÎc(]œØŒ:=´ÁŒªÛÚEãsÒ¸ñ´fnc^¯úÕš¾á¾FÑü.s#ê` ‰þFÕ r*SE ÚEUePp"tÇÀ´£Z8ÐÜ0…#SiVàˆ^Ì Їªàˆ.$•ÛŸ Ä7¾± Ì¡KáÐAæÑ‰bì «À…Æ«ŒOü@ÆëV2¡àä%3·¨‚rS¨A!Èân€îPhÈ" Ñãɤpð#xiOgXAâPñä š€¢LÈÿ´ ?äÂØ¾¢Žo\â<±QÔ„"…¬" è¤Ò¥U ¨@<Æ#1@ðöâq‰Gø–M܈À±`€¡È­hFV[‚b  W‹q„!á3Aˆ¶À‡Â¯–Ÿ‚8Q„hÚïWà+ì]b:`«Ðd™´zÝÕÉfn°‚T ¤9T =ÈD1¦±+d¤ÍUŒsÀÍ·oNÈBH•`|"¯`üž†^'ŒHŠG‚^ ¦ž}E(]î"Ì!ŽñŠd<ö 9P}W‡æêR:ýÜÚ0yû\ü!·ÑÓý3¦p»'à,9ÿ1SjƒQšÓPð¡9öwO"%8!Pû×7€S x€2•7åPÒF: 36XQd#$…6lƒQySSH6ýd€ø7SO³ ›6T3¿ SÁm]2; ²  [²s ;x4“ á#`í'F”âo“uÂ& í7„ÃÆ=«0ñ€04Ñ#bPx)"[^â™° TQ3«` C1ØC1‘ ã¥*ã ~-)ærdžªR ¶÷ oW ã0/r†C¡IiÔ$áp†Ý0ˆS² ã§Is a=F—} wÃÝ€V«…" ’/<Á‰0š’dT/ñBÿh/c’W gð @Dá_wcH7 Áˆ"£;P š‚/Mݰ ³µšò gPµx˜„v“ƒ8d"°ƒã0{R&s ˆSQ DAŠ<¡D±ƒ µÐП€]¹"+Ãç]â%}˜"Y¸'X¸pdB&™°O5ÕOñ”Ê,á£dîÖ0C#s†5Qc:i38˜¦8rs:2µg(µ9õ5CPþ‡8ª£Où7™QЀŒ£”PwÓù“˜³R©Ã8¥£’k£6)©7x97iS¨³Ph9^ÓQ:É6–C€Ñfh¡&h:¥™&˜1TÿP]` p;íCßö â>Ó7Bd°ƒrdÒb´ƒíÓ~ýã†N7g;¸'*b3=¦ µE@µ ¸c~µ8nЫ€| ";Åp ýÓÞÈ0 €yDä„ñOr@%à— ônNµ nPHs¦;dµÀ^±ƒ0šVÙd~¹³Ž9X¨*]²ƒÑŸP'ccØó Ét>í§ˆŸ°rX&9òŒíñ0 ª¢;µÐ…g´8tè$›)$Öùuu‰=~ $Ô)gX&ˆ£¹ƒ ·(ª²;Ƀ=D¦ˆ‘Y b4@‚V™À4ÿ}"6³ZêéVãÅ•Ã7g±2qC±ƒ92„›…ùÙ$ ‡Mh íwŽr°…)q@nСi™Üšî—ðjˆ±€w¡‚ƪ•ÙQÞA£Å6iƒvi”vŸ–ᡎákÃAÀfj4 iÞñÅ6¤¿†hHJm¹Ñ@êi“–´v£À6–&µ¡j Á½–¥œ&hº1¤Tú×gš‘a5SŠ}ãög‚)Õø±DU’/L%!¢T}UQ>Lµ'N(FD–Bª=sÐ$"DO°–M#Ä%í£¤ $ÏG„31šŠ8gàƒ ’…âX æèŽÿ]’"ÊøT)æ†]rw@¸c l#Øó¨W%*²5hÕx"13±M"ª:¡n˜T»ø +gØ$b/";°… ¢nè%¢:%3‘žuõTõFOu†‚=ÜØDÑ-»™¬eÒá šŠŠ=”²ŸzÙ`Á®n·ƒ—zž›Zuo7²Z\y>UqžnX ';]’ˆØC&gw þȆT1K¢ úI« $a%ŽDÁ@z aÕ$óTn#‘)Ùj-@¹¢Åº°n¨âê†âš°·––·ÛVo {­s–»dLÆ]Y;à“°IVo2PEœ¨mëÇØ3«} ©[3¸ê¨QÕ°e $ÜÚ…û‡ýJ¬’ܯü¹Ÿ—Œ†õF)hØ–e̸€U\É—<ʤܯÿ𻾥\ʳ«Ê $”ò¨«%ËDÁº k®"Adàv|Ü•M3Ž°ì§’Lœ¢L¬¡œˆÛúT߯§ÕGê ([ÁÆOZé‘h+Û³q)zÍæ¡hOYjÍÆ›¦lÂ&Íá\hàaÎyæ¬,ëi]:léÌkƒÆ¥BºÍß¼²¹&£PY¥èáYêÎxQk †ÍÆ£­ñø¤£°†Îb¤°VÏÉæS­ÖSA»8qªU6ðCõÔð `"0¹ËÌTMÈs+¨tÛÇÞÛ rÒTÒ–¢­Ø£¹cxŸÍ¨|ºŠ]™Ò¢úTá*!ØÃm1!~¼;=ÈÆ,[ ©ÿ[|Ƨ ̲,°ÂìvˆœÕ¦|›Ã|žÜ¯cÜÇd­ÈšÛÊãhɉH¯ýÚ-ÈÛʳ<¿,Ë“|žüŠËÂÌ ܯ²å¼Mm‡U¶©×WM&¸œˆÜÊ­k˳£ Ìì¶á6óTÁcã£ÙQ€}3µ˜PüL›"9µ÷µ ø7³Â"x|SÄ3Ü ÅÑE[S3K€:ÛÚ+¸Q$ÉÚJ[9(È)YÄAiÃ. ÚlR"üQZcP´Í‹± `•”ð8°–Ý#Wí ²%FÂÒ2·,=OM—]‰ƒ¹œÇe=® Ò̼ !\œØ«èÓMÈ'‚êÅP½ ƒ<Çäm ÿCè€] sÛ«l•Cñ‡ÇšØ|ºWͺŒ=ËuMÌ„|›K¯\yÀtûÔ~\ æúÔ^ÊR{•\Æ‹=Ö¢œÕŒ¬Êv-ÊÛàç©ØcýÉsk±ƒ<Ì*þ±smÈsâÅ,ÆM­ÈŽÍ ³Q,¸“ ¸¢Ó'©”!³Hé‘7kµƒs] m;Û4©€/iÂC©‘h“‰#µ1ü“ùO¡ÝÂååI,äœ8éåB©Ñ;ùhEêh»¦ÐŠ–‡ñÑp±”±¢Å Ò Z\oІ‡Ø|áÜ–ƒ¸lÓ¶ãͼÆOÕÞ¢èŒ;ÞÛJ¤·˜[}–ëÇñÒ²Êp„^Ôÿ?í½@í½üIœþ¨ê°|º Þâ(þª~zÕ$ÞÕ·.à‡ÜßhÈ«í#[²ÊƒŒ«Ë»kâVívnâÈën=˯Úà(^Ê6>ÊŠ]Ì’,[ã¸ÅKå¶WUë8íÎá,N·ÿUîCÞ.Sô4Î Øïçâ¼½q‡VÍOJ¶¤ÃñgLÌ£ï.Í ѽÆF •ön¥ç\êQïliìQ¦Ã1j •9UÏê!FªJšð´6¦Šqñ-ðUlرlÉvÙˆñ²BûÁbÓR\¶Ë0aÐbúZ«Q%ã]¼ßì"ãOeîMØTM•±¢j¡îȃ !³ªÌ r«†¾•ÿI½Çµ“ÌTÂTòÍTîX 8ïÆzØzá?íÇ©j}Ƈ ©LñÞþ•u½ØÁlãôÚÖÄš¡ìv]ˆè«Ô} ☠=ª¥ZÇ\H”ÜÊÅ>ãS¯^É9ŽÕ6¾ƒâ}ßGoÓ¤.ŽÇ<%rÍâ”l×nè¼YŸËæŽóŽ X ÉióŒ‘'I‚™´µ-9Lû’=[µws“Fi³œ-m‹³‘b~ÚPkÛ¹÷úí”U'N‹²dj’5O–\FþýjËæïþ Œeêûàƒ'zX…®½ì""#¡Ž0Jˆ£ˆJ*¨-¥îH¨¡†ZàðÃx$㎠âP™eÂEƒ.´+ƒðz¨76r°Ád,)1¥.$É#0¼£¤“<)ÃÚJ‹ªƒj*,¬·rªê%¡|J‰°ŸP‰ qx©D½š)®¾ kË®ºŠòȕʪR&8«\©&*mâ‰+£šhÂp‚!Ó(*±Zò$œ¦Ìê0™š g„˜z±Á—³,=ñ8ÛL3Ê䫳¨Ño¾Ð6‹l²e0ã4SùôóÿÔO#u5ÿ"sÕÕÉH}5¿Oïc•U^IݬÓR5íÏSS 5Ôþæ XT™¥5Z\7½uÔj}UÕ[[M6ÕX©IõÙa-–VMë‹[jyÍ•Û]W…×TY¹ö¿d_UÕÞw%9à“-¶Ó"£%SjV)ëÉ»¨#¼ôh 52ù %Ô¨-1[ ÀÃåÂD“;2œ9M42,µÐ¬2A4ç:Ó-¿TòÄ‘®´ÉH!i:lÌ.‹R¨©œÞ¢k«pÔ\3¦Mp`óÍ© ¢Ê¬5ó4Ôз¤£;b‘ä™®"ÿ{,´ÝZÊ´™Š ª¸TþðŽM4.(94.kU³fEÛu<i;î3Ê[ ¹Ê½ÓN·Úfû|:ëŠ3PÍ =sÕ=wïµÒY'm9Ì¥‹]<ÎQWï<åf“íÒÊÃ7ÏSg®ºÛ[CoóïPO¾¹ÓZßÝöϤ¥>Z>X&mÁ–3’IgŠx†8E 1"e‚ÉñÅsLQ¢x ?œO$Éd‡a†¹{óAÄßÄ*4#•ì.8bHIФ ¹…'‡"”Jð4Fi'Gû‹ƒ”%šü¤EÑÎdô>ˆDÈLT"L…Ä7µÍé&+!›WÚÖ7:ªJvz!`—íˆÿQP™áÞúR¶&1©- éXƒG3‰ÊN¥š¼ÞI.4“»¢òŒcåinr”sv²h¹1æî5·Cò˜SÆî ÇrSÏéÆÃFeQŽÑóbñèºãÕ±_¹ Næ4G:èÈ‘:€L^é„H|ÙÆ>«j¤¦|å,u-C>ÖÈÄp2ø!®}œä‡V„”D#!b â Ò>–eˆcYûSÃh3ˆ°‰v9eŒ$¦°™\0 I†Â—¹èřϞ†·Ep-Mb‰[âaÄ 1©NÅP —‚Í!aE(‚ÃÒ”½x¬m|{ÉV¨F“² J†VK óN:q šÿ R6áË:ÑòPK£ :åÙ$NÚŒ!2‰ “¨ qUêÆÑV©„µx5‹_ôÉϬüÃ]5+4ö™U~8…QT=îWøáW¶VÑlÑë£éEÅ¥+T«S})»i¬_yT’¤–DAʬs‰”_Õ#–¶–5®mUC¤”Ñ躢ڭ•z”©BmªJ»USÇ 2Œ^dMƒ›5€ ø@®P3íHdÁÐ8t8Í÷Eè1 )Q\’—ÕÏ~ãpC’VÈ1´ØŒ„™&61¢»êOŽQH¢BÌ–D~ù«H0P‚Ŷ!dÐìšÎÆØOHD!ƒ’”›…i*Z ÿžcÄ.‰›‹5ÑŠ± nŠöc%ZCRø”`PD mÓk‚†L¢äi*Êh§_þM¡¡é„2KtYÛ6áºÅL¡Zj' $AÕ…&‚ƒS;÷öL+Ñiš?iÁûL ¼ŽÄ Dq,JV…™'0.Wµ2—i¨Ø¯8¦Ñ8ÒÙbì¬hɉNѹ"m@…à O˜<†cÆà×Ñxþtܸà4z˜ÔQpŠ•a;öFÄ)n£W—aáÁ˜rcðÂÓ« —ŽÆC1YûC j„!ßlŠ2äÚ=ŽÄH ÜMDˆ¾µd_B;%%$B* Æ”±‰`4…¾*bIjƒÿQ܆¸á)@pƒ˜kÑ'DHÍá8€Bë†N€Êµpƒ„è;Y…ªHON-•+2M@#s¼±ó 7ì%Ìñ¸B1dp8B°Ë15á1H ƒq0†cm¨ùé"ðÁªõ= Q€ÈOÿàhbB?¬ ¬]÷¦ˆ-8¶õ+àCæÍ[¨DáÓH[tÐŒ²ÌùO[Ѐ-8=†dˆ8ˆ’UÀ XÇÂKÐDÀ6hóf8À‰Zh0 mX­—ðX D(™˜¸#ˆ¿©Àè0˜8Q@(ˆl‹€ƒo8h®™ˆ‚yˆch›;- 6À™m8!Ø%IÁø¸„j 8„)‚s{/°„V0Š`cÐ!ˆƒiÈ“ ˆh0f à°ŒŸ1]ù–`é(IÚS9x‘••²–^‰iy–e)oÿ—MDp©–¥Š©D\©š"ÄgYÄ“ •‰âª>œÄañÈ¢)þèCž*Ä`Ä^1ª¶ ÅHÔªL9¶‹DlÅœzŧB—LÄCuÑÅpAÅj±0 «±›¢ÓeøjX ôÙˆŠ@>œH .›€.p[8‚W³`ˆGƒƒ‚ˆ#ð€8H†”ã‰(x0ÀŠ(ÐF*P‘”P0ˆy@„ų"ˆ0hè®-°i(®hê„C¸„­`8€¨˜‚iP’iÓƒ;¸8Ѫ( ‚8€ͺŠJ¸è“ø*x„qhŒ ÀÆK K‡N¸ƒnx-PK¨ÿ†Ð,K¸„Gx„‹S’ <‚’·-p„J@„®Z (ØÀÅZM¨K€Np³UèO(r€.LjD „J ¯`‰NƒW¸L ñ-˜†† ø ehH’xðYY@ד7V¸„`ƒ3Hh‚8„•Ø9¨o–\­Nx ØYX Ú!Ȇ;€{û»€ƒKˆ£ ‡#¨‚UˆõQ†N€o€(HÁx €`… À„G˜Í;hØX8p½;x(1û„inЀ6øáLG(`o€ƒù‰‡3è€ ¸‚èÿ†puü„Vh‚û‰F>0Xƒ †tYL¡ÅC+éໜÚ1»9ú0ÝPž;ºÓ9{ޱӱCº9ý;Éy}0#:îp:@R0«§:Ói¥£9ƒ°û0˜õ ÃPœËþ„è1Üø¹K«'à‰1A‘ƒª“ƒ †"…>è‚/ÎibXˆµ†Øbˆ‚5€‚,/GP!8‚Èû„KP9Ø9´"°)¨–DÉ ðƒyà†y8!€bx„l¨€d‰iêrØS‚Uà˜bˆ‚X…ðƒñ’Ë*H€3 ‡N(‹xÈ-`ƒgPƒ— ÿ€3x„KRŸÐ·yˆ€,¨‚9(•‹‡*¨+ )û Z¸Mû©G` °‡äLÏÜÐMdºƒaÐÊÄ6MƒGè„@–c' IVø‚3h¾pèX0ƒK°G+†J`…U8„=ˆ„áGø„PhÖ’‰ƒUpV¨ÔÕD˜ƒ/˜È @Í3x†!¸µ3ƒv€8À3`† 8G /e8[0†x„iÍdðp9`C%±NnPÏÂèOèJ ä´Ÿ&…= ‡Ÿ¥Ìp„yK‰ …+àƒ_¨¶—D*؃K€<• 9hÊ;ø× €ÿ*plB‰-À„n88øµUx†#ƒYD¨1…6°ÉZ@„((؃ÜÚ¯Êò(£üè0°ÊO-@2${0 [P;”Ï㜠óÚµC¢£CÛ;;¢¢ßÛx[±£µ%ÕºDò°Óày¨Ã:´}£ï¨±ÌÁ‹ºP‰)U”©ÉÉøºË$‘襒 ¢ @™ƒi.P‡G ÀjóƒØ­\´MxG(‚„ 7Èo +°Ÿj»0†*(‚íY…¾\ƒÈÂiz@]†ïŒ‡n@lXƒVHΖøÔ½„K ›¯!=(ÿY8*£2MH€npÓJ]…#ø†3ð†&¨ÔO¸ƒ@=0×»¯NÐ…%Ø3 ²;èËD° 8dŠR;È„*`U(’U¨ð†£|VØJ3x„d(0 5`†3POMÒ·g0ƒzu´;XN‚ïl9¨OØ ÐÀU(¶(Èc npB¬ü†=HL`ƒ9Dh…3p„ò\­bè>؃˜¾`MbN˜€L˜ b „nè1 Mtó„@C*ó³xˆƒ"0‚_`-( à„½,ᜀqð€( dâ uf(b;€#…3ЂqØ„Àê„yxi(ÿ„™Ÿ;…5Pbø„?)†# n°ƒØK‰;P@„.S%)‚˜bˆ€ï4‘0nЄ58€q˜†=˜V˜ƒ)(Šx(€*¸[@ÇÈc1ÞM09pŽ÷Ä:ôØ(V ªzÁª›z$˜jħêŶ[•©BªÇ%©¢š©MÌ)¥Rª¡‚\h>*Rd\\yDW´`1©Rð|ÖxðNЀ0‹L¸„)…¥¯;pÿGx @ñ‚®"°) !|ÀbR5[k‰€\0@÷•7pu„ƒš!6[Ð_˜‡>Cà°VXƒ @Trƒ&€…ÀB`ð@>†; 9€‚_ÐS@˜;¸‚Jø5Xä+€ébÐ0… &€;@àv‚8jо,€‚°nà­Uà!XVˆýŠ~å3àþ¨¾=µ/Oé›_Ñw½‚(}þÿÓ_Š8Aö¯ ¢P>ðL¬b=ºâ—Pf%”H e/ñÈD-PàGˆb0 àµUÈaµ0F<€‰°±mhG`îà†„8A ZXÁ„·•x| @¨NÈö@‰o|A Áã&jñrl1ÁØÄ&Và#(c(q<1rцcÑ+Ÿ€,D¡1²lÂTØB8p°žB@Þ˜‰®úÕ ¸áápC76‘‰KH`¬kA->±bTàqƒiÔ°–p¦syÄ öP‰áÀˆÇÈИ;ã GØ„i× WA”›ˆÔ‚áŠmüFsñ˜C¬°‘ä©qx…ÿJȲ“`€/wˆ£2ºq€"|NWÙC21‰L#f;ÏøB€t#WŠðªÏNœŽ”0ÃA7öЛ8n"Ýø¢±t¢ iâ!†9tCW DýÉÂ…£ýœUè5‡OŒãX g>ñ‰n¤°¤Œkx£e”¦Ÿb`Ì"B“# -hW<ºÑ‰õdm#™ Í¢6±?4(|ÄÒïǾ™¯šü¢½ñ‡|ÔT³º?ÿÙÏ|ñËêÿÇ@ç‘u@îÓªW7øUªRÕyß‹«S±:U¶®/®òÛêYh?²ö©WE ôìÊV±z«tm*YGÿH#‘‰KÒÒ›êD‹è² ë˜SÏFŠ+»ST XX ã[œyç*о¸NÁˆU”A˜¬mtþ*†¤„BSäm†”qÊ0y¹YEj´TÙÊ¢2žÀf¼e7‘Ea×5«V¢z#NýÔMx¥y™Ý:ñ-ìebà…­k&ð s5G(0ëè&ÜŽZH.¨Ç*FM䨉DT>iuñ¨±ÍÔB(Â}×&NGNÊw3Œ£ÎÉ’m†­3›Çf¼× ³1¥•ˆÄ†æÙÅñE•ãÄb8•ˆ\—0ÜÄ£}K+”„Ï ò]î^êFÚy •Ê í(Ò:ÿR~Ö·ôBe ¹òß`´ Žj¬iáªsà,¨yHržŸü“¥,¥éFHú2— T†¹iB8âQŠ4¥4GiHo®¬—’ôf7_öÎ3ó™ dæÉŠi²XÆÑ›t¦í¨Í Âs›Û,¤ÿ˜Ñ7:P‡þ|'/ïèCh²´˜$KiEƒÙÍN‘¤ÃÜiÍùÑÕ¸žíú×íÙo‚‚í ŸHØ€=á TÙ5[^™¼º^Íq"á@ }» ™F0¬Ø™Žâ‘19mŠD¸éPÆdíŠ&n fÌ[¢±tÌÑOÈ[J±„^ CòÀ­9zÕâ[›ˆ½‚1…„,CIÈ"æJ­ÿd!‘j×¢xcÅ D.£Ö ¨D°ÝÒ3½¨Î4G×PJ?fLc„ˆï%+Ó[Vî1½ÜP‹Züyô’Ü·~Ülž=\Ygï[Y?#‰\0p0—Ei„9…é9Ú\Öó•à@,é8i†2 ×½v”íåÌP6ó•è°7³%À(V3¾—+ÑX<àÑ0ÇŠq„¦DÂ1“­rè ǯ¾æ5°FaUj­ù§Õþ鵬]]_öîzÁ НƒÏ^ù6ÕýAk%àß÷¾Â Ö°c•+ü¤:Õ¿ÖOO„«Z Ø÷§Îõ°’÷^ýX‚/‚€½Ðë[{ÍWOOÿ8â2û'$Bä–´ãXOwEy"Öá ÛIZíÞ`ç>[RÜÂêë'·Ÿaµ':´‰ÅƒÝÕ‘Ø¢öB°½0|.U~ݪƠ*vox6‘OÆ5-|¿FpÓÞ Fÿñ…-E!QEDt(`7´D,Ä@´OðÌ*|ŸD þÑ|CA½Œýu`St`B„[cT'ŒñŒ&ÄX¤V1P`>QÍ–éPKActÄ®M€7LC]À vƒHÃLƒ¼Í*d°€ÐÐÎA1!‚ðÒ4AP„7Å*àÀÈA&øA$Ï·¤–(1Ç@ÿLÀ<%ÄЬÂ,…-Í Ä'@ ΆĔÂ8ŸÄLƒ¿ Y¨XÏU€P`<èRù˜ýHîm÷X•_}ÕSqÙý@ÐüäžÑšbXOâÐøl"$f"—mbT­Õõ4…¢ã –ã¹¢è}bæ…žaI(B¢U¡•Ÿ0.%~ŸpâU½d}ˆ•LŒàˆ™A^ŒÜ5Ì@"\ J zµzA¤(ÊfìTÈ‘;-„uÍSjíÄ\ЋF|×+ñÒÓ¡W®`×8ÁÓ ˜\òX!ïHNuôÚ®µÀ¸T Ñ{IÃ4˜×DP`–]'LÃ6ÜÄ|‚mÿá€Ã0(Rí"P„ä_DÀTBÛÈ2tB6t‚´@¤pÌ6ƒ¿„ŒtÂ0d^†•9&7@¨XJ¶ApÃ"…C C%D7D€@ËÛt"±Æ4DCà@t –@Ä+ B`B (Ã't ¬A|$D-̃´AyÃNƒ#Ð@'@Át‹TÁ!t4t€¬„4Ð@ÄCLAé¬B0ƒ-D,ÁHqÃ4¬LACAD}xƒÓ'€ÁHƒ7ÈÆÃ9Â+€T2Hƒ À‚ à@ ÿ¶C4(C+,À¼×6Ä+ÀÁ!ÀklÃ7tèä€BLÀ ü@'tÁtuz0œDCÙM1,f8‚¼M1pÂ<ìA ÈÂlE”HRHìAÖ”€ Z| ~Zȑ؈‘Tˆ¢1£‰pŸ­ I}I€JZŒ¬É€ ¨ŒtI‚6I:–ƒ¤‰¢…ˆžu ‡lˆ£±‰œ0ãžÝ‘à™Š¨~¢I¡ÕYš<Ï£µ¨ˆ(– šŠYb‰U`^&.ZVq ƒ(5PÃÃBèÊ®IŠ2èX7>[6ƃ7ЀjµF8 ÂDÁOØ4èÁÐQFìM¿ÐËhA%ÿ¬ ÑLÀ6P¸–)Ä6Á3ð¥ü—€´ß8L@tpC®Ãt $3¬]<ÐÀ¼&TÓ*0ƒ7° ´pà4Ø`+ ƒÿ­B̃ÌÜMøAÀmáRˆA4¨']0'ghÄ3xCxèÁ§â€ƒ€'\S@‹{t7atB+ì3dB¹L:ýv‚”ÀÜpƒ¬B2üÀðE7ÀÁ7,Á#ä½ÈA;ÄÊ%È\¶Ð@7ˆÁ“p|B \Â4ˆÓlA1ÿXBĀ˰BXŠt@1$ŠðA'¬"CuÃLƒxÂÂ<°@l%¨ê<ƒ4ÄLAkj+€%PÂà€,T,\‚-½¿ÌC€Á!8‚X$ f =%Ä"ÈthÁ¬Ä7ý#ôA¦^A08B<ƒ8ÂèÀ°‚#ÌÒ`B|Â4°& LC¬@ tCDÁP‚¬€ÇÃH€ìAAØT| \‚#Œ]-€A1Dþ:ÂÄ´ÄpCtB èA°ÄŸÔ휀ó$*躞ê–^6ÇžAƒ".²³àÍUU½ÿEÞ0>æ•AÞ8ß¹/&ÐèÍøé“^èníÿ)?îãã)Þçš3é.–ê÷â*z3áý³eÁšìªYŠPÃ2A¯7[Ûv‘Ö£TG €#õ«äKLL8xƒu¹<˜@L7!ž2eô»LY¼pÞ¨˜8@0œÁ Ì€·±E8O䜌wg\]:µˆ×¢Ó–~QÙÏa0DÜºàˆ·*ž1'øt ¶Çc9*UxçS”bs„¸sg † í ÷i…˜#]²¹‰G†Ì–ipr([x§VWNÍäÜ™pGÚ;[‚Møl «mº¸*G—ÿJ8 LP\á‹Ó([r ץ˶6&D‹ç§¢bʺÜÑ\ÀÁ‘x[ڔϟÁÚø)¶JÙ‘Óül+¯–ÖxÌp9ÆÃDpu¢¦Î ÖÈ‘mgâu«€6Š:8&¬‚ãgäšã‚½Š/˜·`³‹4Yr§ÂüU«ÔI‹W$øx"€£9r£Ö‹‡… j)Æ oÖ˜ ˆ#ܘ#œU‚Ù‡m› Tfš Õ:"˜í€0(îÀaš VѬ2ʨ¦ k@©QGZjä± i¬ÆF©±ÑÆ"‡¤QI% RG!™,£ÈLrÉ$§œÒJ'u¤ÒÿÉ,‡¬FK"›”2I1‡œòI3Ù¤qÌ.×$sÍ0ƒD2N+¡¤“K/ìN5›ôÓÎ:Ïl3Ê*½t2Ï2ÃÔrK4×óËj|ôqg¤fFJiœñGyä´ŒL­làR$©)cj>0&žM>¤Š*e&訪ÂiÁÖ9â)`“ ød¥¾›©–;Ükµ`ª¥ É› ‚”!Ã!k•뎆”yo¨‚yu6e¹âŽ&èd ‚µkÏØd“¡¨ú$œ™ E62j™F™Z`Ý—&šªÍ5ž3 ,âÕ æ(F³xÜp±˜O$Ûd5iWsceØöŒNä˜éîX…ÿ)?sc‚`ĈGºN6ùd¦ f*f“3¶’ÌÁ—i.w¦pâ½w£qÂÙà¿p < §3Ùdš:iHŒ`:áé×'q&¥¤â—×­-ˆ yZí€_çx9žO{u•9•KÂÕ® øÃr‰¦ÉÁ¡]eš9Äjh(‡Ð½Ö˜”Ù›«–N¦ÒI3å:Yé{kÙh$Ïèá‚®=v“.Ç9œ%oÌ‘I@Q5U°‘vÛ…¼´Ý—©±wQi/2TZlï4ÕŽO~ÔN—SM™‡þGÜe_~wPsïwè)ÅTxæ»ßSꇳRL±§†xõÍ/ÞùÛÕoyN»ÿtÿúú=Ý”øéã_Þÿý÷‡¼Ou{½³ßù*ù¯xâ»ð˜g=ÚÕUPÚ¤¤DAF1ILÕCòh¿eÐâ èXEÜ@4ZåJW-ÈUÜàlb] È 7"dÍDcÊèˆC6‚. â ]Ê  GVÒB•0k5¹2ÐÔZqL=ZI­(æ-j,‡qÙFš¨Œ_ÑäVö‡­Æ’Ä(†C.nP™@V#’rq_`ÜÈg*2ec\ŠÉÕjhµÇ¡ˆÑcÑ®šXÇWí ‘žóЛ¨+?ÒpŠ-˜¢+ò±&*„&«ÑWS06jd*T”b8¦F2Tr¼*†%ÿ†Jé´à á•…¦fÈ•¼2¡J1ÊfÇŽØ‘ŽsÁY&¦H’ xì•ÀÜ »ÂQ ¤Q •›˜!±9?z.—Z\]“Ð #…ÊLô”¯Ä:4é‰NZ—ÜÉ%<±îètÓ¤ö'>åSŸ†‚TªÒé&A… ƒ¯³ AóùO Ê“MîÜR!Ú¦…^)žwR’ÖYA f”e(¡¶$©Tž)ö%$DÍ€ƒ@ÇZàm…Ðb¡®È`]9„*sñœJ\˜Ç  ëB`— BÔ Ú‘,-tƒãÅqtC,{8ã8Vy€qœñbqY ˜å„,.†4 †Râ2ÿY±],Šæ0mõdz‰+9PoÕ8D%~ÔfµpæW8¢ë†€}Wº¨M£V Âä6ÁØÈÈNš{]ÅWäKTnöŒRÔU,khI]åR±±DZi ‰ÊažòŒëÒU&PËF;‘šÕDåi‘†´½Ú1·°Üª4·ºÕ^ª„·…#<Ô¶.JAªT:…”ªNWºÍeçt;H(*ô¡p‚Twé´P#IvÒ.uÚ¥@=éë=Ów««Þ×QкڽA¥[¥1åéN RvÍ;]}^7¾zbÝ¡FŠ^ùîˆ|îËßìH¿õmŠK3âñ0üZ| ¯ÊNiµL•øÿЇY§"«ŸX.SA×T*cqV´qñPÒÂÀ£#åRŒZŒY+½öFn\Å&ú³Ç °ÂU€C1¼D P‹2‘b«ˆvÄÕº` [0£X¶*Îá0’út#ˆôé‰Ù<—¾Þp­²ú\µ¾ìeOo*¾ƒ…üfÑc­>Í[™I<«¡ò[?>áçò­-ÃÙ˜ê\Bœ2HUo—>¡³,ôè¢jº§¾ô¥_bLWKÕ-f¬b~õjH„Ö‹þVE&°¦pvIzðµÑ¥¦l6ØÀžßïgì{j¾ó^ýBXcoÙ ÜT¦Œ¿)ÿRª¶°Aõ=J}ï€Âk`´« =é ÚÖö¶³…-$qï¹?úžô°M#`OTúC_°ÁaÇ»€ÏŽöÁÉÝí†JRjB'w7Ú\9¡äë6P¸l¦Q¦˜2¯x**;¡ZJžrçälùHT´’NŠ6PNAp ‡Ì#@€,ä Œ5Â{ð†,Pi¬B8àæ!‹mtB³!‘ÃcÄûXä[j¡õ×Á¾hÚŒÖߢ ØÏr•‘V¦þ´;Ô³Ÿ6Y§»\ûxÚ ugûÜÛžuTþä;ÚåH‹,šíµîû¢Ã3÷Â^î'gÿ¼ØC÷ððÖ'W›ÖÛ¾øÂ“}ïtgû>Õ~ó_7ýéÛÎ:)iØ=ÞHq¯Þì&ô‚G§í|&ò≼ê<ð’ÚÏñÒWÁeRo,ÏøÊÉ»Å0óë4`ƒ~7R¼/Ôîç `5%ÿ÷Õ~ÅRæ››OË_¯u‡__g_ŠGúKÕ28,ä$q7jãH‚ª!$-ê¬ÌbL !FBÍbÌíL¶>'6 `* Òlø ¦ ÆÎša A>À^΀dádaÄ Jà:aŠ :ápÀõV(íñ¯ïÏÒÏð OQíBfíÿ† ÕMÕBLE,/òÈñ Õ¬ð ùÎÓ<îǨ0íN­ñjí o¯5ÏÒ¬ÐÓ+ôª¥ð®ðò6ÍòÒ ëN1r ±ð g# o¨¬‡¹œïÛ(ÊOÊŸåáñêÉ» Jþ°dƒNjNâÄ£8èIÅ£å @Š/(JDŠ¿êû؃6è¢ ,N>'±OòÄN¥ùÉ£ö«ˆÞ–‹wÐG®œTjƒŠí À ÐáZ€ –*‘>k%>¬ÇÀˆè Œ”HWx,®8B¯ K¶Tˆh¡¶`A`Á¤ Aâ xbøLAz`zArÁ Žnÿd!ž@"¦.aâ¡’A3…¨VH¶ÃÕHǺìüh°  Wöj!,W¨BWˆÊ°±Þ“òЏìh·0r·J‹°+Ö.M“J ]k§† Žzk"ci§^I%Έ®VâŒ8b æW ñ—Ú “Vèãö u:2°¢i³´I2jÈsR«°pȯÀhš8믠Q¶Xg×êù(ˆÝ Èß<(ánoTÆÜnvÎM~Ú§¾­vâ­ßÌ}âçŒMLôg¹‚'|~çw†§GôRÛhSð²G n¹üÒÁÈÒƒš'/(/»2|Â$L0Qj}h/'“-ßG.©G€ˆá¢Ëÿù8êý¦OøžäÂ8¥ö¤„h¡fà¤àB"\È%³ÅVt,§òcê¦Xè¦tŒ hr f¢6AXá $À* 4àªÀ $ð4ÀXÀú ŽÈ"à^!.¡~`妈μ¡êje«bÊ ¦æ©b ¦®J‰Ø3¸‚k´D+>ëÓ’’¦ìs«X(>ÿe*ÿ¥Œ‘а*·ê?Ïh¸,I=û³&û³AU«³f2WV©A}óª È’bR’è´€ŠŒDk´f®ð*·¢Ò·ì–6+&}óB”ÐZèªÈ?Ut&Oëtö…Ž„Ó)A1t_‚k•TË®¢dÿöú²¡³PåÀ Å÷ޝ¼ÒÉ¿LQ–¯¡d‘I#®ýšÔ7Ê÷Þ+Q ѾÈ9qRþ‰½Ñø2h¼ÞoL%ºÞ$MLå$QâÜtlOQ Ò$wDUò„ß¶MÞàhŽ  ¦°€Ê^ºåc|È…r ?‹6uE,à*ùﳄ ‰ØÃ  4À £ 4aØ£„ÀdáràÎ`Â:«  lc@ ˆáÞ& Ø£b* †bè65†ÈÀ ΊSu¦ØSæjÉZ™uq0µ#l›HÖ>$‘ØH³bM›”ʇšÈYæ`dεdN&eÎÿ“ ~(ÍŽb¨Çrȯò °n×RaÖÅ/’)÷±â]¹¤)‡âJÑ‹_9ÒªåWræWhÅbƒÊ^ì%‡ ¹ 2a´5×Îiö`‘ÂL5  â°« ¢k»œïø.±fçËɾ¥ÀÄof,ýBf+±3ÿë¿OPñ„I«ÔÀܯ¢%¿ø$þ²oi£Ö¢ØKg-ÑwÀ'.ÑÒÙ0ýçÛTŠœ0lœ~$5iáR¬X Œá 0ænp€Zöê`B”§È ¶~ªìY´Hæâ¡o4Ž&ÒÌA4b FÐl¨pÀºJt@îƒ&ònp`ãrN\†ÿ=~ÖÊÅ Øãìä‚V>£” â>ò®ó¼Nò´ͺ.ÍÖPëp`ìj÷>j7w-wìxwwy7wBÌèNój÷ïP/xóîvßèBJOë"OeÌuK¯z+—zKu£—zQ/<æV{©WóPï@îc6Ô&w#o|Uo|-WmæÀwç`nåWõä×vs~q TOé÷@Næ è·òwnÍ¢$œfHFQÜNÛÔ-ßu-ËÇ~ ˜ß³Ùhßn/•­Ýð Þ,wó~ÍàÜgÞæò2#8TöÛÎ}”‚µÙøçÛ4xÜpxàt‡†wXl1‡åMÞôráJxÿ…år/+ØK\Ö•Ÿ"JRt§ˆ©JFhf¬xÔà Æ`Ä@ ÌÀ öÀ ÀxŒÍà Πĸöà Úáa öàö äXŽKŽ?á æàÑx9 Ø À Ø àÎ`® V! Â`Î Î `à  Y p ‘qà ô·Ø@“Wá”Ù€  •]9“Y™Vù”Sy–gÙ•YÙ–uy—K`–=ù–=9˜cù•‰¹˜™¸ ™•9™[y™‘Ù•—Y¸`¨y¤Ùš«Yä š«™€ Ö@¼X@ÐáœÉyœÍٜӹœ@ÿ–à€8 ž½¡žñ™žY€žñ¹Ÿë9 î ûYœ9À²à  úŸ ú zz²à¡%º vA¢%ZFá@ @`°À£3 B:v¡¤w àXŒ Ú–N¥wVšužÀuX˜håÇ».ñ£ñg‹/û|:¼®6¼ÆoýEj±v¡ƒ.f“öM¦ö¾ÚKŸ¬ÏQÚ4¨e6OI±¨m{Ï3S–¢Ê¯h1NE“JÄONº…~(eÆ–J(lœf €Xêœá|@ ;š! ø báJáb’@ b² {b¡N ;ÿ’ ’ ²1»²?ûH¡Á±!û´K›Ja´GûûJa±Ia´cÁ Þr{±“`´y€µ5{¶…›¶»¶u·ßáZÛµ[›´•›@€ŽÁ ¼ÀTÁºUắ›ºmÀ¦›ºÁ»»»Û H¼É;º£›ºË›»«["A¼#!»å{¾é{¾#!vÁR »ß[¾Sà¿ÿ|ÀÜÀÁTÀÀ | œÁSa RÆ` ðàÆàP$|Â'|Ã'<ÂÂEüÃ#Â¥@ÄÁU`Åe@Z|ÅW`ü¿U T@Æe\V\ÅÜüÇ9œÃ3üÿÁ5ÜÃSœÁ{<@ÎÆ|ŃœÂ3üð ÄœÃ‹lwíM£­¹¤:Oõ«‹CjOOÊNÉdQšTÅO””çÔžªÏÀö Á¨ï©ëºäKK_Q¾ÚœžÜ|O¹o¡$¥â°ÚL•vüJQ·/oøàj$Ý`H~gˆ/ {PólÍÃØgNÈ)2=ÚÌmß÷Gõw.Œx¬¡{4L}>@}Ødu¶â–Ä/½/.7øzÈ|ŒÇ.)3æá23é2}Sá0ûí…»–„~0­Ç€&“„ñ§-oÞè#„µ‡ˆù§1(†ýí‡%ÞºMå2»Ò0Á2Þš^ÎÁO§Õ:ù–¿ÔZ¥è½vè§GÜ=¼8ÅÛåw¨`îé¾î—gÓ—aFòÚß»gÓ§'5Á25)e„Ã6¬>ÀT8ÅïA(5_Ãþ>áß½&s‚ýÍÿ½ÌÖ½î]ž^óë¯H@,V/k4Q³{:ó5ßG³PƒøßUe/©¤ôÓ¾öG³õ1L‚Ö ‹é0“2kÿó ?+u¾öPÿ>ç/]G4ÙÌVÝæ©OÓܬg±Ð¹OOñ)ÎU–hÅ÷¸Kѯ’'êû }·:Köä©1 Ï×?бT»ÄŸº Jë|fïKM1ñø®Rì ª•(šÀe –YXð Ä*hð`5Zeh]´8pã,‚ j숰Ág•™5 4Ö`¾D`¡M‡$SVûØñ¤M„?š,é“çC’7KMºP£Ó“&‡ú„ªêÈ«'y ÿÔŠp$Õ@6èÙÔ$Öª$©Òšµ,A•!áîl;–­ÈhÑâ8ãW#Ç>õšñäÈÂbË,‹*p,±C?ÜxØlTRýþ˜ ç§? þY (¦©…m ºZë£>Ãâ$¨š!ߣ9º¦t¨ì›¯—Úæ58pâ cïîœ*ɽ{¶®û§É‰¾«[äË‘ùs‡R“'ž÷÷ܤ#O:»ätó®1–,ß1ÖÔ‡ÌØ·±jûz­µÒ€\½µÒN³Ô°’J[Y¤R.Å$aL0¦ÓPB©¤!X’åÜWUYV di ¦[O_‘øÐ~Y¹Tõ¥ƒ(±h`ÿJ!Z„‘WÕ,V’_/–Ä WÙ¥—^4¶¸¡NIöÕ“Hc€ó9)•T7u6™Mšé¸WšiƈU~yWG^dÍiù—Ž}D‹œt^´køÙgVS ùˆQ~‰ (^W%4 óÉ©¥|ýçd™~ùibJߢùy禈 )¦v*¦=ƨ˜©ŒÊ¹i•¬jÚêž§&jg§&ùhiŸµ–iŒ¡â9gžM¤ßªHA”BÐ…µ²í—^tÏ2­uE(“„5MKNJ)›·ÚR®·Úv.¸ãŠ[®´Ñr .ºÛ~›n»Ó¢û.nøæ{n½ãš;¯´±ý;­ÿ| ­Y«6A¶Œ¸XúFp´¥vˆË‘;ÙxòçÚÃÖ%»–Ûb ^sK„Útö¾÷qm¶ag²o(WÅòr ×ö¦wìA^–Ãm|¬z×!„qzªú,1Qâ=lnj@ Ëj}›ªÅç§«Ú€„×ÒÄb9M»dRÜml—æÕ-«N;v¤rkÿTvÛ;o1z'êJµaQ35¬™cGí©|v¢o{;‹ýhÚ!O -Ü7n3µ]ž·Ø'™Æ­B¦Åì³'l¬¹Ç;7u9· "ÆãéÜfnþ.ËÑæ%ÛûPÒym÷ÛD™v꺮¬ÏìÑmìð¿né:÷{Ò Š(ÿ€UÒø­ÏÿTÛõó›½¶ÖbmMM>-Ôcþ}0—S3j7k¤1z°úãBï~ùé§®ù[¹ª|¶:5ôsNô§­ù‘sgù¼ö¾úmMmÑ}â$ªü9Ði7ƒ¹ 8µ‰LxÎ) ^ØGÂÿ¨F#´¢_™úWªÂ ja=²R}Lø4ÿXpzýAŒ¯ÊCYÍp„E“L UªÞgaOãÓôLˆÃù¬o}ÿéÌó•)†„Zb›XB>ñeI! õ]9Œ\À›Ík*öœ›,†Lñªšö“”«eBâkšv숑(lÞ2ÜÙâ(º#ÉÍlŽ™JÛx3ÿg¡ p‡ŒÛlÄD9Ò$rƒ²Ó`YôàËv¿$úŒè·ÖÕ-@1Ícø45°ZCz3³8:„tgôäQ’׸ÙeL–àÙ뺃“ä(òŒ°ƒÙèšu9ˆ9óX·<Øö8Øà.nÖ+È3_ »áuvÌr—RÆs¢ñpp„çs›Û‡ªî] |_CÂÔµ=bí‹=y$ä:ö/Ÿ%K]âÓä–Ž—Ɇ`IUó´$ÇFÀ ðk’I¨8{ç»ÍIлœåêþ™ÍÏ‘“x?9‹žÂ%¾žg/1”&6_¹÷¸gnÄYÜÊ׳™Í´8A£La£ÓŽ ¯3í w¬ó1Íÿ „ÖDã@µSÍ4Vs=’ÝPÝ#b²50ŒhÚhÈ>̉@’˜ãÌÃÇzÅó'vôžÖFYKîo}ët+ÕÈ'>Ä1\v½TJ X6HjŸ «_ÈC*Šj ü”•×U…pkðú«d=EFJi ZøñꞪ(B¾±NÄ"Ç6iÊ£¤Íhe06U'X¹ÖŒ¿Zàþúƒ(Ð ¡^sÍ­2",ÉmQ#Râ1ê¡óiA”¡¢ò‡ØÙBªhäí¬¢ë+ÝbÔ¸ý«Þ©‚K¿à†*»Ô“B‰()JÉ”¥Wð b4Ÿ|³r¥d¿êxG˜€0Íâ—¾ÒAõÊízÿËrV,ÿ5´Öí×b…ôØ5^Z:ºÕ™Ëjl3ÞY/¦I-ÖKmy/ ³o2£€GóÓ lTíåášR$>„²ç¥kZ³–­•]g¸Ëï‰cɶã@&"E] ᬲ˜M¥ÏZ–Ð:é9³õ$û ¨¯œ+¶•¢Öý+—j%C̹aÈ9l®Z¸Ÿ“ªñª;¥¥'F@àbÖfjb†…+Á;©ƒik|3æMœ´ÿJ„kÇ0K_Äݱò¨õÑdFÄfK¯«cìÌXS٨ن=L™ë»{Qs5¿¾U—¥xÖ…Öú~ï}—Õ¨ms=µÍ:<Š÷&_¡•ÍÛÕ^Þˆâm‡×5q Eø§ÕYwkòô”i6Rö‰;b+e«•ä÷?N½ tï8}š{‘Þ ê/ÑɵEÿÝñƒ˜´­$»HB¿–Ò>ô_™¡¨ï¬Þ‰‰‘ÚUgo^>~uW=ì*¨~ˆ™¬ºiÏ´ÕOsèÂ#ò<Ñ–Á¢ý8ØLnéÔ­Zg¦«ó2½è7߈bïd7¿Êj\鸿eSX»Kì73 ÿ²f¬Ý·Ãº1Î~ë¹4Ÿ0ÓDƒ/‚OÚF}F&˜$¼¿Œ¦2|¶ìhn¦åQoÚxJ.O¢f¼.YW‘¾«KÁi²°½“ßÈ ‘•dlÍ¥‰ ¹Ò€Â'jûûRizMÏš½³K;=Ù>UPnâ¸ÄÍ„}'|yQµËdñq£:΃â²y G9ÚÑááÒÉBe~…¿Lî#™ÐI9~çÅ~¨q;¤ ä6¯$ãNlUt–’¢6í6ç£^Gûw' gAþ]2orØùà&2Å.·Cݤ]³S6ã±[xW|À•X,¤LJa¹ôpý]<³=8{36~à¢'c8…d&%<²vlÿ´^aÆ`1Õw4†|‘×9Ã{¯$x¢6ÐGxqW,ÊQKšG3´ób.ujP¡w]&cŠóƒ=“y£wKvX/åuïvt´5\_§uÛ”<ÎcHwjE!hRiáÓAç(‚ó\…sε1ê3v¬²3TDb ˆthSF-T…fd+ˆUFU$ZRw…ç&Ï2RnÕC´\51“1ãU7põ*6'm9—(^s+t®äd´{‘ÇrË¥J€A: #sšõBy¸~gŠc[°2HAWÁq±upÃrQcòZŸbbÜe…zÈ]z"F“’Ev•EZ5à%‹‰q‰S)‡+Ø–?Cÿ§\ÀrC÷VZ¸yè^˜^ÔálŸ#_É4~žD íg_ÓaAȃóÕ.6(ìÅ;‡å‘Ú§k„ô`s“;…w?fa&`ƒ#ahC&a‰UÚ¨lZØKÐ~uö.È‚ñFˆÈn|Cƒ%Ø—„„hg„6ÈxùÍ÷Tûxv;˜‚KCN&ãS@8)h,åcÔ‡„,3/Ôƒø2n1)|VE’ýÇS£„…‡Fäĉ¶ÔTÆpoõ†–u†©ç)u'ÙUµqE4Å4FóFµÔ7:FvÓ2¹A‡fdhùxô„B93löe-¨yÝev˜“+&™¤#VwWZÿŽ•}1xiWxW‚(kˇ^1˜“€5p*(ªE‚YóÖà=—i™—™™_hn–©™0ÑœY™¤ù™›y-£9š¨ù…—3U25P„sÊ#MHuF)”?%/å:}R‘gL¥kÊ´„Ÿµ(ËU~GW¬H€ÍFœO–1>sŽçÖX¥h‰Ã¥]˜Ç+ºè*Ž8ñ¹C’‹+Ï¥o¨Dõ‡1Žxm·ÕD4Z\Ϙ‹³d£ÿX®oÕB¤ò+ÞúJ)¿+¼|Ç%uNµÐÇîäÇÒÇü‹êÇ}|Ç*DÆÈp'”mîé[ô†Œ6´7`%‰V’œ9D¨""ºÎìŒÈõU}¨»aÌllÆ` “›S« œi|UœÝ÷jŠ38Â7¸ùχ´ŽŒa¸n˜CZ·°¹ñ‹Ì"ĹÏV®q[z7Á—›ày45lWÂjÇúÏ98¸ú(Ñí¥qj­&܆Š.´³7_¸Î‡LÇ|-‘SµÛŒ-Ýܨ8±bq¯ß|ÔÛ¼ÔîJŸ©¢‚ÈüÍEÍÎ]ÝÔH]`Yb“™f;9%ÒwJÌPå–hWeËd²f§ ¤¼ÌûÖÄÿÊc…ƒ)–å‡Ý¶£°ÅsÔ™ÖèËV5Aï{•ü{¾þɇ÷vÓdFüKGŠeʉwEu‘Ö˜K]ñ³7‰s¹²]5Ó!…íƒA«±¸euJ4Á¹®aËíì^íÇÜüÕ†LÕ¶ÝÛøú¹KÔvȹ›C‘9RÝ=E­ÛbÝ™HѨ¸õ\ÏÌ=Ý_ ¢¼Z‹–EʕƗÁ↠dÑeòn%+Ø8…Úõ¶iËÝ%×n­è&Ø)R´˜·–¸ÞZzÞ¤32œÃ”*lJ¼j/Peš¿’Qsâ}D³À¿ö}Qpl…Cާ*& ~§y/YŒ^‚÷Gú¼zÓâ£ÿT»ÚÌÍÔ Ï‡,ÜÖÝÛ†ÌâøŠyT»Ü,ÞÜÊ»z,™é:Õ`]Ï\ÏVç¨ì\•·½ã·½»Ȱ‰Û¤ ½-Ýyöªy:ÐFéäI¦’“GhÜXÖé²FªÊåß§S`Ö.ʺ„¿c…âjA ƒÊ¦Y>SËjU!]HGõR$™¾ŽR ëŸs×A@o29õÂ*—m^I¿:ÖRVÍK…ÕL“À£k]æg܉bš4\â¼äv×Í).Ü=GÜÃmÛ<¾¯®äzù—Üï!Õ}¯ˆª®ÑÝâöåÛïlÕØm¸µ:Ò•{©›¼nFЃ{bu– É©ç ¾l´ÿ¶ÏìÉ]ê]=ç’‚(W°Õ:Zî¾ÀJéÒe…ôIíjkí˜ç- G\ÀS)è6&’×¶ZL^vyI…ÃÀ}]oLA·8R¿¨Œëéþ·áÍœœºkÐ2Ôµ]ê±Þ~²Þê×m‹㬎Û×m¯8qrÕÜ›~ÔŸî®5Ïïé/ÝÓ}¢"ª¶cæEì½@¨ØsµÙÅ×-gD„Ni•Æ0šÉ=‡ò§|£B÷‡-Z•QÙd¡›QJZÛmw¥Ý1‰d5YU¿dJfVVVñgÄ´ˆ Kd4`ìf”4¦‘~ѽDu“!ý¦'ÕaV*´mâ:.ñãÿò´NäÝ#B—ŽñA.ëQ«œJªþΔÙêõzKœ ¬ñ¹mâ†ÿ§×®d•Ë̉é©$Œ˜üŒå!GœEÌÁÙ,ØCìHÃ4î8Ê›L›iï‹THÆé+\OÓ¹D%nG<õ‡É¨_Ó¥úá”ïn‰}·±ÃÊèùÖô`ü<ØAÃù©º—Ïáè·pïÆ¯î=2>ë<ÞéÚŸýÕ-òÖà;JÛ31ñüJ0óšÕÉ]÷µ µ(vñ& øAŽðÚlþævSyŠ•€‡SMeª H À «LXÆá@‚Õ .LÈТà R|ˆ°#Ƈ'V,HRãB%Cb„È2"ÿµ–#Ò’HK Íj6Ëèl`°g™ŸAaÒÜ)pYL”“~ 3#K‘.i°†¦êU4Rk`t Σ;9 ê°kN‰#bì Ԭѷ'¥‰6gʃqòôÙW,5š€¿‚”8aݰ<ߺúµæãÆ‚¹š5 4êÞ›79æLÖ f´nåZ \0ã¶VUWкµêÖ¬]Þ-@V×X_ÇVæjàX…çmMvpäï:h ÁžÊ“#G3½ªuëeœ–Á޵úpÕØ¿w·Ê¸íymë®Z']Ôš‹N¾Ë8qz½™ëï%»}µ°Ôóo1¾ÐšL4ôĺ+'˜-°ÿ³º¢®ó+ŠÁúÚ Ë%•8J©%¦ Ún íÖbŽ£¡äRÉ)æ>Šé6å´B*¤´ZÔ)/Œ¶;0GñÂQ?J„ŠÄ–zª(&'R«$$$R»­R2ˆ©­QÉSò) O"ì)!ÓzjL'¥«n¼ë£¼4§®)ãÈ“îº9åD4ž©N>­â³Oé+P?íTŽÐª|„’0!}‹9†ðjˆÃHó‚Ô´GsTÔDL§\ô"W’Ò4‡Œò%I-¬Ã%U-Ì$L_ÍkÒYií/ÃÌÌCi?Çͦ©BN+œ¦ÜµÕµ:%“"ö¢ÊôرŽ<Öçò8`„·ê áƒÖNÚ';‚i4Y‰”‰F!µµÅ‡O²ØÄ#Vê)/=¢òɉ7bQÉ%ñÚV5â˜Õ i©ÐW½ ð³¡R<0ÀSYL5ÉlZYd½` NÆñ+ª[›1dï ‰ªÒ<íÔ«é&Ž£~÷Æ/)ÄpÛ·&3»­R‹¬ì=½nö2½zšluv,´³¬Öiçj$Ì{ëºÝ:zp˜r³añÅÈ&Ä'/¥‚ßbxrÅ[¢üò9Ë•¨Ÿ~7ç¿ÃÚ®eäëlÞÿÆž~ðÒ,}A°ò[°u¶¡–{= ͺ•3ãƒÚw²ç†kÞýJ=yĤ<SĈXV–-gEÚò[‡„N+S¯žÖyFg=‘\QO“ÛÛP=œÑû&GýÉ4°1žx憮…u~†jTÒ=¥Òø´E³?d‡ÌÉqTÉ1k„Åp h 5öe@–A< V–ä¡‘ée.BˆJt¥d9é}´ÑBö=Š})b¹ŸÈÄô!¤eŒeÚ“¥1 þˆ):ê›…Ô“"_mç<7ÓšXTW ¥ `{ÒÇŒ§±É2‰ØIl”,öðg(Û A>¸–¹Ü ~ü»š G¸C[Éÿ¯cP< ?t´±`æiz×¶*xGkÑä#ˆ"÷//¯:®>ƒÒFÂʰz„˜(Õ˹R…Pfø”*›N }Œœ¤ «„.’å–mUäº4B´½šL–BÚ(Ò™n¶G®“ÈEÝ:¢ÔR7 êй>ùÁ¨D‰x8Ùžb©ç’vmäu¯Ãë'1…Øb¢n˜†œ«^{XX‘¯©}d ézW:.z¡3æ¿ÎÚ0Ñ븆êWC B‘µpqÁUuc Ãýá%˜ÔÝÿnuçxÝ’"ÍŒ¯Jáa:RGvEäÃ`iH˜Fºõ¼ÑmWmšAê¥ìhê])HÿR¼qˆîñ݆Z&ÞT©tK8,‘L¯‚½Tè¡ópC+ê­‰X–m[ÝÊâV™økBÏž™­³Ñ±?$ÆìÝ:<Í>ÎOЧO}J+L&cw}Ì] {·vnŠw¤Ý ƒwºOÑô$Ç­ê6¾R¦ò”§¬™ý‡(V®r—o—osw•ÍÝ*s šÖý­œ®]1O9˜î’s`¦³.xç::fͦÊ;ÇQ7ÿ x~¹f}³ë"PuR…éúW<½üeÕ7š…[ÿµ¬J&Ítå-%ßGJÛ’©{ŸRU¤nZ’JFåŸ'íÊHŽc]4DpÔÄ~™Ë»ör¯AéfʼuHcé²h¢IÞš(ñôÖ”4´Ïû(Y»=“µÓ@."XÚJË~Ø”ó2Á¢äÑRÍwÆrãÈœ’ÐÆ{ìvÁcÄ®Õ-êëÂl'¤mËý·êÂŽÚáÛœqaZ&g‰R}É •2C™mS¶VG˜è#w ÖÍÓáÆ”·Ê/em¥oɯŠÚuyû®=”µ¢WÚ˺}sÀQ+ù¶m.m`ε%ýÚ¶Ó«wdC,+Í"9²/Æ$×`iãšÿL+}@bzˆ`=kN6Z¦~­ùvµ*HŸæè$¬Ÿ¤£™,qƒ+«\G',Qk[­£œ·mL³Ï8§ç`wŒ:äÅ¢¿r['”fÍZ¨y÷ÿÊYnësàB»œoABJ£¸™÷,ûDv²ßíX 婜?&.n6/ëç”PsˆÔúæmEøŒŒ>ê³}í©žUbZóa_ºÕún¼Ö$O¾ÉÕÄÄí”ng›pÀ/UCXDRµ;hÓ'µxWiâÅ·MjeÞ‹Û<ÊÏõgw™PîÀ¯Jœ8¨ÍÚ½ ÎJ Ô”q#=…5LŸ4Ë­î¹ Bв´ýÒŠ#6š! ÿ×H@×°ŒŸþ3ÀÍ¡• —¿Z™šè™S)KÑ1l3~Ë( @m‹%•C†»·*¡¹öúˆH©¸la9üJå›A“£Áå–а:t!¡>¬[>³ˆ q2P(B#ìC?üÃ>@DB,DCù÷÷ésß.Fûöb' wÞý7‹þáfCEeHQdQ„-TQA}åPDEt!†u"CV8¢„’x"ˆ)¢(‘‹>´¢Œ-²ø¢1nhb4ÞØcŽ%ŠÈ£ŽBú¨£‡%n¥P5_}ößvÜ™Q{PBé•ÙY 唼dÇË”Rº·ž)F—ÙY&$b¬e•X¾)åv`Ž e™Û•Iæžl–åŸWjן•qze•ý‰a¥¢‰ÆYhvŠ>èÂý÷¤˜2šiÂqcÆ‘še–˜ž± ¨f`ZCv*ưvÿR7 îA+­bÈÊM®fxz뫺šÑ‰%ôJ,¬0”«­¶*ÚI­¯ŠA«pÏÂ:í«Ìîñ,7Ïvk­­»‚Z7äþ:ì³5T«n®5ÄJcƒ"DÉû”R^e˜£‰Êد‘þ»/ˆÿ 0ÁýìoÂ+|ðÂ:,qÃlqÄ?©1“ZeDrsÌQÌÈ#Ÿ1A'"“¼ÉȰ<ò'ÅàPÌ'%|‚C'ÝàÐÍ'&ó|󜑳П lóÐHï|†Í<7-s7Åt³2ÉÅœ\ŒÈ"ïüòÕA“=òo,óôWW tè-_/CY”‘…÷ˆ1i”KL"„Tüöžï¾OôÏ?Sùã¿?üÿIÿøÀ €òó_ ¸@Öï ´_ANЀ< /¨!}qăôò VB¢åtc-H!ÂA†¬ð…áˆa8RÈÂÒ†/œÀ ‹±Â¶@†@ Ç&ÿâ&ÄÍ ±ˆq#¨C!²°ã Ã&¤HÅ)ZqO|!¨ÈÅ-jq‹:„Û½èÂ1Žq‹VD£×(Å!¦‹Xb܈ØÃænsxb' Ç1Š‘BŒ¢‰ÃÎщpÔ!6WÃq Ò‡uìã"ù˜»#R²ˆá$ ƒøÃLÆ 1¬$(ùÇ Î‘’X% IIPfR†|ìdg™Iò”†dd(?ùI&ÆíƒWL8t!ôAŒB ÛÑ1“ÉLŒ]Ì™ÍäW4ã5M=SšÐÌ&6·IMmv“›Öt&DÆyr*éœY± B`p†9 …=„!¥ÈB]¦ð‡‹l£WÈÿÊzîq‘pt£OiK<žrŽ„ d9ES"rˆ“¼â@kHË>†ÃtCä!D‹áHÓ)Q‹G”£cѶ‘žSÔ¡2ôÙÐ’¶‘¡•á'šDŠ”…CÜÉÇV1+´"QºÒ–Òùœg ˆÏy®t¥2\¡,߈Ó2…E¥èIC¨Þ!…_½g žºU­nî‡)¥)LºRñ dBö³`û 8•¨¼O)q%¦¿*¢W‰ô•¯¬1»W!ó¯†5fˆ‹Xõ16°‰]Xc+YÈ:¶²ƒ¬_-KÙÍî "çۘƾ’‘ m†¯´%•Ž;õdp­2V*Ûpÿ°ö«Œát DÙN€µw¼c-WÙÊPŠÒ‡|ä!ÜZŒz“D¤¨eˆO n°jMõ˜S"n‚µd˜mxK© Yª”¤dýîH}X]:—}Ô¥L+jݨÚºº$e.GZÞðº¬O•îH¿ ÊØ¢÷©÷ìïn_¸[XFÔÀ$=ïq+Ћ’4¨áÍ0lÅ UD†’Ÿqtª'_™SE†ã]o-¬b[¤ô©¨¯y+é:c&ùÆÄ1uŒAÇøÆ6®ñL~,d ™®AÎq’w¼ä7™ÈJ>²ŸŒd)˘'ÃÜh«Ìå)7é*(.AÉÚ•~÷ÌÊcšYàLâöÿ·¹Så|ÛZÊ9¸xþípáŒçP¦ö Ä½¤Ÿó<Ë<øÂmeÕxiÐÜ/Íroš]éÉUÊy—9E-­wQ<"neˆ~ejå DJšîÔ-K-,E;?‹ú•eî!#K”:’>üjWm[Þ¸6†‡^5 ãAiW§²ž³lpƒ»^o"”net }Éj‡#Èe¦F2¤âe „wÄMîo›{Üç.7º×ÝÙÇfö²ž-,¼ Ëâw·[³ôv·¼ï=o|û»ßç·À'KpΩœKBø9ÍɤY\¥ gÙ áëj©–yrâ¥7éÖÆCÕwNôpk™I:ß1ä{ÿ>î‡W èçR—«!Í£ŸÃKËxÆ2º­¦tÜZ Ã$fœ‡“h° Éf<Â9•ò j)M)s™–’¦6{i¹Çi7qå©tãH¸[ÖŽ˜å õE/-õÙ.ïnÇ:VONRê¡Üd½l¦ê6ÃFs'q+Ë4îÖW%(7â€E¤#âŽ_5–Ñå{¹ñU®5´¼ok~v™•7¼87ϯËlÅšï<çãåùÒÞò§=éSÏÌ)‹"³ Lh{‘’†­g°¡Ês=/¼¬uƒ®éú¸ÝM3Rõ ÕV±Ÿ‹ô°ÑK]èWórè¶°µW½Ka—:ÖÌ®>ÿÒ£j[›#‰«Ì§cÄüâ:“Ñ7>-ƒìb‡#q\6IìëH*£ë=[2ÄZXÕC²D€P…`•ÖU‡V{7€²vi˶fßµBi€­ÕZê•w¸Uf”DV¤4nÕMÅNïv‚ò6X[æwu/,XWö‚e0Ø‚õ"ƒƒM8è‚6¨ƒ4hW9ˆ/38„7øƒ;Xƒ@è!!òÓ„41B0Ð «@v@4UÓ6CkÆf^Bäuå•Ô§IE‡PµtHF7^íwlŸ!xHô—Zñ‡D}÷%]]7}kG·VCÛµ,t3µ »5mW]{„~úÕ~ëÕjQ¤ÿöJØ] ÈGÊæO‚ØZ´Fs~vj÷€Vµ9¬µþÕv:äZý7iêåk»¤`)ôqÊJºÖZã¥R~|¦‰EgÉP×Pèe[ÀT ãC/$!y$n A ¡ŒÆØŒÌøŒËÎÒøŒ ¡ŒãF‰ÎnÚø’w߸nÓØÔˆÖ8Žèèå¸ê¸Œâ˜äÈéhŒò˜Ž÷¨ìHÞ˜áøŽóXðxŽàˆŒè¨iŽöxÿ˜‰"¡…NIB_¡«ðfÊ_õUÀ‘ø‘iC¬%’Öõ…ÇæfH‡º´R•ĆIÄHÉPlHt³ÔaÿȆñ[‹–;8? ˆ°fT.™…@ÄQ´„J$VIXÔa¡”€á'h#VJb„]E$U>)kð§†\5wAä’…$juTJ‘‡F5_de[¶5VdEéCàçU»ÆUdÖCý%‹p™€4×n‰Uå’gÖ`kq¦^MDi[4‚~EnŽ ámeàmŠ×$”¹•9™–™™”Yà¶p Œ7rnæ$#9š ù!¢©p¤¹¦ X’xªù™¬©š§©"°‰N²é™çvL©‰›æ¦›ìšä›¿Ùš³š ‡>¥©p5âA {ába2=_0OÖÙÛC R`Þÿ‰…3Ô`FJkv–çEsü$iðçT¹µ†9'P‰ÔtFdHV_¶uu|XfZ¨–¶jáÕSà•;hh\o§^íéué—”ë}¦H ¦‡aFÍ¥‡ò)fIdž\[úE¢Q5ˆ^Ç[ÿÅ–±Æa?|åG€¾ÆH£O)ºä…cU^FgE÷ž¶i¡Øaçås!8…g@ê#@z.ö¤ÁŒBÁmA‘™$BEñTšV*AÀ;±¥ÛF?^º?TÁ„RñAd*Wfšƒbª¦ÄH¦ t¦#¤•y¥_š¥hj§]ʦsê¦iŠx8Q"#T¨ ¤N™ÑNWÐUÿ¹HéF àk›$õ¨ •K§…ùDIŽ(húÕPPUGújt}ºfs¦D¨áÐ\VO.Y~v$”B©—¶%ªª[ÏÕS%G«Ý‚G4´©sthÑFu¡d•@™J°E‰j‹ƒ¶\´ºC¿E“VO׺tæu|$úT½¶lø¢-TgÀú{-4]»¥IËFsfÆ–äyw èThPóú[¼t®2…mð’!àV>ÿøÈh!Y°[a°á˜°k°è¦!ê†! [êšÁ°«°2±¨i±Å±ù°{°»Y±"kK"¥%+±é¶±%{±»n K²Û±+ÿû±#K³3‹± ‰>KøœI…©Ãkd‘á©–â9žV’,ô¨+4ˆ(K˜¤~:† D€$Ç‹ÓW §zi÷Uaë'Eö£6YG”} Š[ÌV`7ú‡)™C¯Äž[€' Ȫjëåjε`à)Gg;P[TBé¶ðWK\‹^€d¶E‰ìivlÉv{Ùl/Êf¾–£~Y‰Ny‰´¹ ö]ªH€gç¢\×U@Š›~9¤FPZ˜¤  ŒZ1y"$»² „;Ø‚@±oÍøº‹på䎒"½[N¿«$ÁËŽ¯»˜Q²ä”¼Ò¸¼|ÅŒ¾{›Ã+¼Ò ±Í{¼×«¼±½Æÿk½¯‹½ß[¼¬)¾Ðk¾ÄK½ÈD‡úz4í´v%·‘ß™S™Š´ úCÖ¹Bi’Àzw«*h)•u+é«^—Hžtf¹*«!¦…›S P)SMtT“6h©IAº’%‡Ea…—ºv€ÈH´KY˜¸•&Uú÷“€¬‡–OË_v‰¶m‹˜ÉÁekªnæÁF®¨5€r×u¨Õkà¦?M¡!’)cˆ‡3¶ll™4öÆj,ÇÑÆuüi|cx™tdvìÇC–Ç|}Ç…ÿ Èg‰œc¬Ç‚ÌÇpŒÆñÓ™ÑAî#?ž1BQ8° [x´ùJß¹OyH#ÙI#©CúgƪSÀŵJº¨Kt*e˜I•szH–Øsg†J—´Z„+D€¨º¶ø{Î5Cñ@·›Ôv€'¶VÕ‘¢]áÚ^ÖžPë«y¶ªµ”‚&UqXŠ2iá\…`HCƒËTíZg’û‡¼ÆaEŠžT¿è‡>DD^[JÕUì¬BºŸV”w9…ÌET¢†ŒbË8BR!;»áVÑ;Ө½½²K°¥ÍÑÃ[±­ÑÝMÒ ÒÒ#]ý¨Ò'm/ÿ­Ø(ÓíÒË ÓÔˆÓð¨ÓÀkÓ, Í«¦ðë0;°…{“ÊR5©24©åEÊuôÊØÉlϺ–YÁa˜ÁRÄJ¦[UÇ&“©¥ª§zK¬4‹T  è ÂÒEÏjyšFKˆRاˆð$ ³J^²C9 K­¦vÈO…—Fr:©_ãz[O›JFéÁXø´-ôq÷ä–å*Ucµ`$™akiÅ¿·tÍvõ¤k`ŠøúåJ«kVÄתgQEg_kQ¬Ádp!hÀÐBÉ_A aÁ$ÿ*yi™}ÌÛÑÆÃܾ Ç”7#èµyY˜#Í-›£WѽzÎíš”uݨ—ÝÕÿ!Ü­yÞY«É#Ó=²ù†næ1Ͻݸ)ÞãæÖà´+W¢Ç6¢lCüÛkܹ–YÊ—zu»uâ¹[–jT–Ky£4×jݧ‡µ€Jæ|Ðùô_gkÚƒ7x‡è5º0ú‡ãE`BJl˜®RûUT˜¡®–¢š¸ ¢Ì…égg`5*]g¹Ÿ6‰ÎWyiêeG>¶äÇÏìçu“ë®X  ]7¹ö¢²d](a_ˆ¡S~£:[.„…ø$¢ðüžlV éÉÖõÌ}®…¤ qÛZŠöX¼~ÕÀ{X®ÉWÚ"T1eŒW¥;a»ÀäÆUq>wÎ¥yʧuîç2Ñ@zÿNèIaç‡è±»ç{¿†Žç'‘èÜ6É’~¾mŽ>è—^èšÞè•.èŽéa!™õœ0q>ʲƗ3”‘l'ë)4’ÿç"ù‘4”ëÔ×ÀeÀgY¸ Qª¦~%–H l íÙÁq˜ÔÊfêõ×å·I.éˆQÞŸ|g\‡k=t×6I[s¦ÙZIª.w~.vëÚìÅ«1´ 0ÜÀÜ äN xÍZ…GìkJÎß%Ã_>««Êسäüå”ZþÕp4˜¼Vž\5®JÌU¿ç«ÍުϺaR„mÖÀÐJÒA‹I¼-vœÒ0Kß/‹Éëæ+Ñ${Ýkò%ø»¹Žã{³'ÿïòKò"Ëò(›/oó˲9OLäÆó;ó:_óìvó Iô@ÿmÙóÉùpž¬#ʱsì X *ÔkÁ€ºÿU~Ù£pi`Ûe`Ë`A¤‰—æ®œŠ‡2™ËëW“†¸• ij[u—k¯ý…FºÁEgrG]ÿˆnøa»ÕÌöäú矯M~ƒ{ÐG¥–›àBâ«]nãûG4]]Ç£Lå_þ5[eFCDÌ}†¡ªØäÆGöœ$Äç[}§åO ¨R! ùçµÖ1D#ß»}!†nçT»—¼ÛÄ/yÅÏÛÆŸü´‹üÀXã4°ðö" ¾ ý%ýå(½=ýÅÿ”ýÌiý}…ýܨýàÏbM:þߟêc<¾Ôÿüê¿YçßþÁ! ñ¾‰ß¡gP5ÅñZ´˜.\‹pÊT¦ŒL¸`[(Ûn™ b,nSEƒw .œX±c¸;->œ°‰ãG–&7µ¤˜dÍ™)b´˜Ñ$K…#)n*æRäC‡!‚9‘ŒÓ‚›”œÚpÂUeñBN4ØñdÈ ãŽ4ˆ°¡R°WÕZ)ÒâÛ±åÖœ€p$‰-bT&–lËœ#}†SYs¯A¤c’)|vbRŠ‘¥>58qå‘ãkIyÁ”„QBuÛLÛ¼yÝŠæ»PÙ@2‘‘‚ê´ZÿÜeЀÊ}»Ìmj ~S«V¼÷ï2Ä«nü÷m߯¡ŽÜ7îè´~k¯¦½ wðÛ“ /³ì¶ù2 ¨}¿M«xøï⻋Ž=zõìÙÏŸŸøúÊ;ï¶üÜÛ¾ðþϾÓ[Ï@÷ô/Aí¼ÀÛ{O¼ 嫼 Ô/B=¤Ä ÔPBîÈóî8éÒ›nFÜ`8c•ƒìm4›Ú资R(¨²’ªlª½JÃK)ž6¹ã*Á,š‰0$i"«¢™0Ò²%žBÒ¡‹ˆ¤Ò¬Ø.‚r!žT‰°Øz-¯!3‚rH‹èTH¤ŽÚ(­ðœ «ÑÄ$뎠DÒ*(¹Dÿ³£-Óôè5…[Iª¨Ü S.*;só®×îhA*„Ž6B7:*R¥èD©¬ÑN rœBÔ =cãÊK6ßDÓS²r²³7Ϫ+ÒÈÒ5ýª±†·î–ÃM8g¯ƒn½êÃŽ:ls³v[׋Ö[p§®¹m£sÖZiÃEW]i±;7ºÞØÅNÞkŸ£ÞyÉŽ^tß­wÜåÄýVÜ~ïýwàuõ¥®8ƒË¥ávíµî`uç6ºYª™ÅºY µn¹=æˆ'OYƒR¨¢‡òê*'Ë’j*˜jº¬2-WEì*™Š¥ÄZÂ2Œjñ9§ŽÄÔ‘ MÒy¥¡(ZÍ#¨‘ÎÈVòÒÿJ­ŒâüjÕ¾Òj«(_;´'”äTt b½CQ>ï¸ë“[ÒQS¹WŠJ&H7šz¤§Wfm¥£j!m2ª~LREUJin0×ê¡›tÂè&NU4f§okÐÂ&ã*Ȥ\rÓ¡ëÊX¶·þ°CQÀf;ìO½fë“ZüˆsoögsG÷Zæhô¹r‘cxx{Ÿøw|'_à|·–x“k¾Þé—þ`á§ßÝx¯~zè³?þùä§[žúë­ÛóÆøÝÓν4Ünº0`èf(K&ë´¹I/ ñÒEòÒ¦ ñmeň’­‚d–Ëp„'o)Hl@b& ¶äQrIHÿ‘ >mgS¡±xT(Œ€ÂªJF‚´ŠÁ¹mmn‹Ç ¯2Žxdâ-kSˆ ã¡C )Zù!DV1ım\V 5Ä)¥"«‰S †ª"ij$(s‹«Z°š×´I# 1Ëc.¸3 RÅVž’­B53²°ÊMÑKâ eU娔“]ÂAŠñ4HB–uví€ikw׸,†¾D¾Ë[ÿR$vàCžýfºƒ„8i¢ô<ëAšä¤íÚóI ar”ÕØd(Ô:ï`”ªôO+U KT^R”µ,%.] -]Šˆ;¶¥/e™Ê]3w±sÑ'…¹¢Xj :Ó1P³¸óÿC‡vù¢Jhã‘)ÆLgváHRÚˆ•<$qGRI7—¦3(å‹(«…GN˜ .-)ŽcÙWîð‘•Éj¢y§ã–F—À-k„âÓ¾8870Q qjH¶pà(G0†H•xlÀ£ÊpCV ÒQÜaÁ˜€âQ”® fZ™II:šmñ-ìŠEÆÁSÂD¥rysÊ1§š1zigcùbP¥¢3¦Ø%%›Ã ¯ÞyÊØÅ!¨ÑŠT'8$[•Nf:™I”‘ºÓs;íCß"Ã-E¶‹`ÕëzÎç½îáµwÀ{_õúz-‚ÁïbÚb+^'öW}ñõzÆ3l`÷5ØÜÿzŽ}d"#ëׯ²ï±äºlú›Wèí•°›µ¬4{'?è³õ+ƒþÎPˆÔ%¬zZVè* H0Û‘:›{¢… ˜ *ÔÚôT¯ôjRùÉ”âøÏ¡ùŒU-á_—Šºµ8žæ©iÁŠZèTÑ!cC¼Ü€#· †3TiFŸÔQex”Pn‹Èx§BÃñ&‘Oñ0ïÇ[^—"‘!äÄâÌèŠ0r¢òj,\*mw„1Ë[XE³¶· tˆ[PvÛ ‚ FÉV´¤÷ío#dJLˆGÀž.bÈ1P~:i"þ g˜zn¼£LQ#B›d¶$9W€å‹y“ÿÌ—ÂËähQÉŽŒd·¶d‡UÖÊûrë”ü=(CYÉñÒò“¯,å,+LZUvî\±:׬ `0L 4@ F‡&#ÕÉ)(SŽ2G1ý³3_‰JQêô§Šèh»@ÃY8ê)“<¡shRLRCFO_Ä-bù_$—š¬¥* ÑÓ†H€µ!Q†üeo[&€^ƒPñÍJ¯c k”Zدæ/JèK€Í(ùÉIІ‘¢4©3K"+c¸©Õd-e^š"Rf£Ô™@ªpM=çjžz§!Û·P½HH¼}U—Iõ¡¾Uçš„êÍÒòZèIÞºÀ‡Ù€ùµ}Ê©Vÿ¹|ÓLVjÎðÑño\D¥ÈÇË&‡¾ZC|âråí*ÞŸ‹?ãúÁÏÄnñSŽœ'9Lþqï„<ã*—8{Nò”‹<âøÍcîò-ˆãÑÔy¤ióÌÙš¬…Á2áÆtdnŽz®¬NSqÕQ®ú”ÊDAW‰*Lö¤”PÆÔÓ J7c‡ÜrÏM˜#¬N!•x"ê¨ Š!dua‰ÈQ·å7Ö3/k¨ ‘àhYáï__Œ”Õÿ/ ï0^ÁÓ÷s`Ù¨ÍöB¤~*Sÿ3Yo&ÜS¥É2«j“窹µ{ówŠbN• $\•>((žÛšRÿZ2Ú©îÿk²žÀ,ï‡ÈDV¬[)<#OÙ‘Ï·lq¢¯i–ö°c&sé"É0ï#Rúׯ,ø¥)~ô{¿wæ^÷M+þì+–`Iv?öŸ£ýù“ŸþÖYÿûÎ/Wø¡2ù°>kB9ÓŸq@6e¨\qƒ¦ ª2–*ZŸ #šp® +¬9¹Ð ®X‹šA(¡‚9鮄ð ª4¢Ñ — ššÐñ6ª˜ ¬q.ÁA´4)>))öê(‘à(Ž © ¸(«B `ó(hˆˆø¡ù ¼xpµ> ‘¹ƒ`È„õB‰!ê èšJ#ŽÐÂì¡ ÔËù“ °ë;æÚ*›ÿ"™“®˜ ´S.ïb5D[@)=Á¡ŠƒÀîʈ‹Â™à«ŒäR ? ’«(´‚>ûI:³&é$—˱ ‘kwѲÐÒ‹!­t1ŸâñÄæEûÓž3-çø¾S4¬»úÄòkÅNôXÔ—PÔÄTÄ>Sì,ͲTäž…á¸ÓJ–û¡…úѧ릧â0>†";1 !09“žè@9™Š–îªÀT3Á ¤ ,¹Æ B.?» ^A.mÌF¬Y•')4cá“^ó5«<úâ/‹’'( b Z)ä¯`pƒùâœÚ/,4È'á!B)©o„CR½ÿm=·`¢ÎÓ3ŒZ b1™(j±’CEq¡')›”Äô®µpC†b›Œ„GôH>I ªp<;ÉšôF>¬C‚¬òA³HªFJHB_Ì ¢Û9q&Õ Žåð¤PêHì±_º©²SªÊ“ĬôJŠ›Ê®¬¸Ù°ŒÊúáÊøðÊ{Ê´Ôʵ¤J³¼Ê¦\&#˳lKժʒSfšDÛ@ýø˜„#²2ؘ:;ƒ9’Ù5›ššÇ†("Ös“§€ n‹Vóõ˜Á‹ÄMÙ‹Ð$Á lÇ 3ÁŸÀ’ ÈàŠp,MÔ4Ík”ìе8‘µU0Hÿ"/b©ÿƉ>±¨ÿŠ/ó¨#B WÛ‹¢ÂµABþ¼êÐÁ¿ ¨mC›¨Cy#C\›·h½,‰ÃwÃ)DÌš³À ãcÁÈ’¼H­ÁÈÓl‹;™‚à91Ã:qÃÜÉ‹D+ÞÐ Ÿ€ã¿ULŸîEïi¾}c¿äx¤õ©¤JZEàÙ+È¢P µPäI¬ÒÑиڬôÁPÝP%Qí+Q¥ä,uPåп¢– =,¾úP^$—:óˆãH:j€b(¢Ô¸Œ¹yŒ;¡/@”ª!НŒª8òÈ(䟌šH9iÉ8ºÆî:pI¬àeØÒ¢Aˆ-%›?‘Ãy|‹Üƒ kì¡ÿŒºÆ‡tdžÀ‘ðZ…µ¡ÓY£ÂƉ³™Î«!— ÎÆ 9N:%"”úšXƒ¯Œ Â#JÂzIÄp±ìO;ùšÄA t ¶YS!'²0²Fô2¶Í)UÚFªÐšwl¡R®6µÎ^kÉ; U­©Nš€c–…ÚKð˜JK¦ iÚQ¾¡$7ƒ—oñÐí+Ÿh¹¾¢,$38o‘ÖÍ+h½Ö0£V`l+‰YÖÊBQFDnõ7g˜Iš&ÀbÖ¸â?Κ&jÙî€2é˜ë³³bp›ù¥@"ÙµC‘ɛĽ“òK©‹Í9M—ì hLX ²N…‚Ó ¼ ÿ úLJõOq¶: ¾üÄ”Ï$Aá õ*´¬ˆ(Ä“¡?«¨”Ü“…0NÊ )$ú¯$ò¨ŽBòŠ9X/üúÀ,õH·ÐªÊÒ±qOKµš$tƒ”´AT›!Ø8 ’µ±ISM<ÂBö\»"Ò –zOìý.´ýÏ›$¯*±¨5[!²“x¼à8ÙœõŠ!~eB1t<F<:‰`>CeH–eQ:É¡²f–éc×î#8<ÊŲê{WHZ2m²5 Æå¬ m˜‚cV#ÞP'~+(–²#þá'nW+–⃉˜Y?v‘?çñ>¡l$ò˾û»&ÿ;›=kˆ)骂“±Ð-®ÈSx4zü(†€)<äײyO7t"€ÜÞ¬©“³Ø!<©ØU…‹' >Äë“<1U9ÌÏ­ÌÙjˆ˜­Š¨&¼—Ú¡p±‹qð”$RHBaƒ¼›µ(œUR·‰/þ¡Ó°õÚG} OCS•L°¨ÁA¶bÓ/?&Õ‹"#úš¼?›-C©V”_û=ò‚ÇŒBXú:H&¯ñ` O#Då’f¶C³m›HNN>”ˆ`[ÍøAËÐ%‘÷ 8ÉM:h¡ÜY¸,Þi6SÖZd«ð Æó‹ÛÅÊ+D¢$ëÐoh¸z,†FèþPÿˆŽQ‰.èE$Q¼Žæ»P¡,׎“žùÁ¦nØ×ÌQÚ²pZ™ @E©Ü<Ô|ì¨üÔçŒ-$‚µc¼ê$ š5Ö玸è¾ìnêæmëVîìžnã~SjKºL¹¤‹%z&¡ûÕFÖ9Û˜n˜ƒ`"®h*©ûš6ñMÎÔÅ–Ù˜þéž]BƯŽò(—òH%Ô ¤þëO":m:Éd˜©G RêG¾ŠÞU†@Εš¡Æ[Ù•ëöU <³X¿ŠGF<=H;u/W% Eåù†ÈõªLÀsi…4•ú;®ړÄÒ*e šTnþ¤(rµžõÓ“Ô7ýÁ‘±eEñ(o°(•½Ä›ˆ²(¶edÓ#¢(‚­™œqÿÐÉB¯¡f±f EQ¢Ñ™”T’$4ê®Ô7åæ\WdW 8ÁÚ¬†Ž+åðQv½è¶QwåáÒ!8Æbt~vôѸGÚé7Hwí!Ÿ%î+K×I¿ÛJw?…×Zœ¾whÃB\ÖáÛßøùÖ#ÈžŠÝMÆáµŠˆŸ¯ÆûiXC틊*¶ÀMÐyH7Ø×Úþ‹UÃÍ[QÉZnã:/:?ꄨå6]dMUIcÓ^‹(†bÐÆÛ”/u!nÇ”®ØSO&¸Æ îI³%ìcF÷²yÔv Ç ÅMm·Óõf7¿É=ê[»/ðU)&¥s!qOÿ±^"ŒBŠoñ*¬ÐÝêvªU.J¶äˆ8Ó*U<®ã³ÈU‰+kÁ¤²$K¬¬ÜLï&¥„›ùLœ?w1c£,ÑnVÙ…þùF zm%t¢œWŒ~V¤3 môlùa 'bmô(Óa¬—[õ;,N¾ì«±f1.@±jömjˆ`j(úvÄÓµ<ÓŠ`oÕ(|äMEIc±Ó Ð@ W(y$AD¶ô*ÄL³É«ÆB¹ðR:U 7GC²³eØ  ÙÒÏ”4ǃ˜-¾ù¢EEÛ‡$öƒ# þÇDÖ=;ÄI£Ó¶}«my"ÞDZ”&í—ã1—zás8ûËÐåó›wDI¼yyÆÜ :ç~JõŸgöçs÷DKl–Àœÿ·4îˆ2Õ–U«F«àAj Ê(d¸°a™ƒŒˆ"ÂŒ 7>\hñ#­2eøÓo¯}ù" üñ!K_-ïeOßú•”ÿ¤ö¼‡?¼‚ÀU kð$"–“̳ ªÅ \úŠm¾1IÅJ«ÇQ ‚2c©Åg‡*›¬(3'±¹©„EÛ ¦îT˜ a(UãSÑÄÆ›b …†”yÔ׸ÑÐ…†‹I¤þ´?¥ª1yYN¢À¢¹1Åm3¡kJ¨\Åį%7j›MÕäâ¤moà1ZšŒÈ´Gp››’µ†¾yQwsÊÊ”¨Å±Æ4wØ gŒ…¬ì`®0ÊhֳČl¨8Zϼâå:uÅ®_=*’ºöÈÙ5òaüéPº\w G‚ÌF☆2柎½¨’ L¤Ã"ÆÉKV쓎L%)=‰±†µòÿ_5²d!ÛuÈÁv/Ù³“eì‡ TÒån/» eÆ%¢00)Ñ™ŽãÒ⸣ló4ja`„¶¦H-M„²Rš[l…Â-nbX,<ÎÓ:ã4ªh~ çÑþTN°aÆ-jD¡8c¥ 7(£8”V¤X”ªÀ Q ßðQÓˆ¥W(ÊnRcª‡ÊeLJ¤ÍVÈ0‡Îq6&Ô^NãÌ¡Œc<*ËUWî–+±d‘ŽÆÑŠÝ±‰ò@ôVm TdJš¥0³^ÎX€ „Ÿ%AOZò«Ià·­õQ¯yïß´h4$ýØ®`¾tdÀ~£ÖUˆ«ER¥.5 °²dÿ[+&©Ÿ¶Ž’BÑŠkZËZW´Âu­ôâå\U×¢ýH_ ÚåYç¼,¤'±Æ*$‡”ì$Ô6]’Šm¨ D'¡n¤,7_õR¢uÍLnºØW¶6gNðTÍSœâF§´SŸ…‹“¦~·2‹2µRD51m£†aKØ2‡·Q¦¡eŠláèfzñ([|Ml”±ª£ÅI º}ÚO}¬ MkÃÑJhV{çJ¦PQÌ…X¦´k‰ºÕ7‡ f+FˆÖ;µCÙZ  +ZWúØÓ„z禕iœP߉†Ô4-ü²tø&è®nD]õ•2•MÐ…™PÄSDï6G5ÇIR°‹{!_&,¯Š…ÖÄ(™àM¾K«ùkì°ÿ­ÖhdÒFX½È=$Å•`7*7»_‡0j_9± ëZ ö¡…èÁ~Í÷´/$‘S 0H€Aì`'Y.{YÕòF½8âÊoäþµ¡WiHÌajÑIÎ8• +ïõ#|O3)‘Ê.>\ çÛ7©üŸer¨Úò·=ï\u©ÜË”QOob)Y,Íɬ žÖÏY¹xÜßµÁ6Ù¤ç™ÂVж¥¦Ã ]}ëÛø}¦n´NMžöc×ñ…:íoבr·Üó±´>¼â“LùÇQ®¸Ž,ÈYÞBc}«á÷å0^Rr«øªd'Á£Â£;”`ÐäïþoÿË¿n–Æ%‚Dty`ª5’§++]©z•h–!ÈO¼w’-+…½ÕòÈ„õ0•D T5Y…qÏî€DÞ‰OæXûüàý æFýø ñÿR‹1ÙU OßõNùøÏ bDî4¡îOS=Ï Hì„}@Ï2„A&`”tÖ¦ÄíÞPñTgi‘RtIh%‹›uFJ‘ò•Üõ=eì†9uq„WÕhάàÞ<-NÚÄ¡`”É J9FÁŠ¢]¥ÅZÖåE0ÄÃ&zÆ¡1Ü®ÕÅΙVcì—¦„üõÊщ:!ʤGMÉÆo Ëð‰I¥ÊÊÅÐÓ0“ mQšTMx•ʩܙ‰I)’†l¹á­ …uAQ_d€ÍmQÐ] Ø‹ÍÎá%Òæ ÉYb¥ë¤^ëPž-M:¢à„ƒdŒ!Ý•¶­K¸¥#eéÉÿ£ƒÑ#8Âc:Îã+íã‚=^µqã&yÒ8ŠUãˆÄ”QÃ\NÄQ‡5A$üÅÔíµ€®5#ÏxÅpˆÅx N^dóYÚd"9QFžÊFõ“g% Y¤$=ƒ ×™ÌÆQè¡¥QYÊ×´†c´FsmEqŒbž]Fzx gt‡]ÌS±å!¦‡Ê9JzMÍÑ8Óic;YÓÔÜ m ¥ÝäªíwrTEÉ3>ÍÝ@ÍDÙ×müTç@[Œ ÊÜxdQ ¹N³yŒYáŽõ^“I! Ja†¥OVáùTÏ6^Þ¶ÕÕ·±d"X.1Œá%ˆ¾} ~ca)Å´cfºÕfZÿfgæÈai¦‡TÈ^-؃pã`e¦Ý1ÒVÉÛjRB¸D1!‰ÚQ±¸‘RÄÌî-…LñÞ/fÉvlСÚidc@bÙÅp óYÑ ¡MÜX YQù™¬ e©ÕJpœKþ¢¤LÞOþ†Ü˜%[¤Tó•ç£i¢ø”l¨…^pMÒÀWxãSHQ¥ ©ÝÔVÖ‰í}ÚEfl×\FÖ†2ˆ¥ñ]ÉQ R|d®‘{‘†‚Øjz•½¤R@zÛæ]íüR'ÕUŠñK¬Ø³µ û\a¹OB„µ@D‰­˜^ Œ†ËN„b‹)‘ýhHé’é´Tÿ˜‘òèþ ébc’MYTÝØ5aÝD¬è•F)aˆè ÈA˜D@F½L88P}…U¾ÌoºiLA…94‰ Ê  3‡æ„Qoˆ$žA'j„\Ö¹¢ŸÖÅ7©âZTž}Ÿ¥\ Ńd˜)ž•V§tJ¢¡Û @dbøc4e¯X¢µ†iÄPki~>Ü0J`@²¤W,ÒÍpâTX”jÚuÎçP}òMMÙ‘oôÍÓ±ÐRZÉZ²éx¼ÙŸá*²ê¨°™NEM,Zˆ{fñ(™&±H Þ’‚<¿5z+㑈`}æí¬Ž¼\º™hµ IðƒiÈNRMÌ»ZÿH¼n ¸»"Râ¡^WÕN¹¤DXµ"[ØÊõ¦”o£8gŸ”Í(°|Ö‘Ú0*|Ê Èºl÷I”Ï0”\ÄÃÇråhH­Y8?µÍnÁ£dgô®ÖË:†b…nÒÕº…ý^å“Ôâ8Z8è²p]†–°øt`[óƒ…)hÜYý‹KøË‰d’¾à#l>R¹v+º‚)_ù-·$cn¶Ù3ë+¿¦«7Ë'5®:^¾^05s3»£_5ÿ^„È„5„ÌP2íp¨at@îI…zfɘYPÿ2Ô*›ÅL¦…¤øqÍ]%]°œáØJ#VâÍ.Žž%pC‰ïÉ>Ý~:Gšœ¬dŸSºìø¤=Gg,ò•Ž¥ôâ¨Sà@¨+ ü2¨?õEšüSÍŠ‘Ë>-Zš)óôb¤ªÈ‚äB³²Vä×sÎÍ•êvÝÅ\üª¥"¡N׎‡CMx¨?ªHŒ>[[• *±_Šp–‹ciîȹºf^ëiÞ[X!^i~`^ßÄV[I[¼¡æ_m«Xë5dòuàê‘^e¶Ë¹î¹ª&9÷Òµ]O%ÉÇB˜aâ\—.ÿE(jήUÉf©ÅiŽ—T–ŒÎ˜pò£ÜDÇ´nU…Y†çGGe1äážå"Ç_M¢“iHÆJç䢡DªÑèñžVc|,Ðfu>ýmrÐÂ6^ŒÐÒnFöá⨨'Èúñ¯Þ°v'_‰x«gn™E0ƒ_Œƒqƒ,kת\|¬'ƒ,Üܶ,/ÍÎùÉbtí\ìÖkƒ,/Ç4OÊÓîÉ3¾ÑRÃŒ›4S^èÞ ~̉¾è ùh†¥²ö8Ö‹϶Þ‘b£·L•î‰Áؔϓ‘®‰'©àµT‹ã˜‹O)‹âNß™®þx Ž^XǰýYnX’Á ÞÿIÄŽ|˜¡ Y¤¶¥XÜä›z6aÌêNýsGµ€q*uõ0ò²e´±¥c4".†‘]Ð W²›$·ùPnùÍTBC{ªœH'cØÖXè·s`_nÓÅp°ÅÎ 2=•çEMª.>­€ ›÷\΄÷pÐL;º£ûqãŧÌg¥÷‰ŸÌ…'ï\R«Ñ¤‡'mi¬Â£Wz{²fÝ'«Wµ_¨úrFï\¨z§øœØ¶­VAL7__ó7GÜʦƒM8 R›]á•XÃu.%deƦBv̼¤µ×Ze{èF;·sÈ»V„Œ¨¿ý›°Kû]ƒû´½ˆ·È5Xÿ—!ãî]©´¡WVT½ŒÁßW¬ÌQúñ¡q²HŸF€ÿ÷ª7@·zêÓ !ïIÚ¢G2]$Î$—Wð"š#b"fTŠe(p§mà¡jŒ"h TdB(«MªÔ4½ì¡tr ƒ:ÍlÀ*¸AxßA&ÜüÎo¢z"“B3T©SºÎÇèg©Ïºzâ ¥ÓŒlòåpâЖgŸ 4¥_½Z€Ì2º¥‹lŸÔüØ‹¬Ù›÷ÕÏE1£Î*R1!„‹¦°‚Í­†aÈ`·ždÎR'e.hšcÂ8Lä2L9Cžâm a=®j¶’¼&~â.(Åæ¹›6£c(å+êQÞßjÿ{‚i£3áPƒ–ièŒaÑ?§ßo†Þô ™ÑÌër1šJúbɧæW…ÊžFxSb›k×gxƒ^}oûÓv‡€«ý\=ÍýÄÃ8ýp8}üs"lâÎS}0D‘;Á€›sç7ñîÄ /xW6L´ø°Åp#:ÜÎC‘ñ”1Dø¢Ä…2TqaCw”!´ÙaÍpw*rTX­LÐ2Ö@ Z¦ÐjÔ‚*eÚTéÑ¥G™.Ej”ÚQ¡F‘VmºÕÿëU¤Ë€Ò Úà,R³eh%mKmmÜ´eÐÒû¶-[µg™6èËÔl5²v«åõ[xi]Å}ç¢-\†šãÁx—nÌØ.a³‘Ç–­ü9óâЗ3¯UœxlçÇt#†«:°eÄ®|Žl[rÚÕ~颶jp5¿Ô¨= ·¹2e” F¦ô-Â)wH¦zu訇k¡ŒŒ²pÁÀ+ÿâtñâã!ß©QãÆxÔ';~gü†ñ‡[n‚'¨NÀ÷ ¤I¼\NÀMpÀõœp¹ø¬¹ ýp9ûSðÃ'XBæ\пìð+Dû&0ɽãÞ»OÀ–ÃÏ$ødDQÿG:nÀá›o¡‡6z(òPR "„®˜ˆ?†Þè½ö$êHJŽäka”Â)’¡x*Š9êØ §o”©@IJbN™`4r£K‰²S)·¦!`Ç#R†ÏpfÊ@äVá ¢ÊÊÊ´½” ¬G³JJ¬©¾Ê 2§¢Úª+J¿Ê ¨IŸ SK‘ÒÔTNImjÒ¯¤úªÒNµÂt+­T…UÕR¹*õÑ[¹ºU×K7µõVbI5Tc3}Wª†ÕJÙ_ae6Yª‚¢ÒeOe 2²– #“ÿ’ãðDñ‚9®»sÛ£Ž]7Ô ï»ï ÞéZ˜/^ÃÉÄÃìûñÆó >«S®ÿD ìÐMžPAˆ%.Ãú\ŽÁ=¼B›Âù—¦$PGåL>X>Fyà‘ñ#QÈ!¬2àDR™UÄ+x@ÛSY£Œœ‘$+¾Ð;®8ÑÃ{ÝS™¡ ¦1`…4jo§0±ÖÈ΀ÿƒ3œMà< »;[<!>ûgs*4Fí¼#³¡Š‚ŠÓß^ãö0ËJk,¨F{ãì1Á€âM±Ô¬ÚöTZ“ kñX5íêÔß\­ ól¥½ÊRh;¥œr½!5µWV?_\tËY}ÕV½2ÝuÏM5ÖÐGå«Ü;/õ)f¥•}ÛÖ¯’«*á–Wåµ™ƒÈ»ƒ¹7w•±wÿ¾ê¦³~úéÕÛ>ûé 'Gš³nï?•?^ñ¾BÝd®DŒÙWÐlŽåg?ç ”™AWž_<›cÙEÒ~Ž#¥š¬¢=J[ÏN±áÇm«Yòj$²E H#Ë Ë—¡Å >„R†ŽÓ¡š8gjñQ¡ún䲺í\Wkaj†œxti?$isÎež •‹~Éé„ú³ÂÅÇCñˆ˜¸B¨Äpp…(Ù"]ð ·*Naêv´+ÖU‚™à!F/…££ö¢Ô°…Œ…ÉJ]bsϰ(ƒéj8Ç2È18¬Nà<ÆÀÈ1pA áb³F>ÂÑùg©CÚ±-‰ÿ4œ^Â8Æ=Ú¥Ž‰›¤%-)·¸Å„d£èÈÆ3®«™\·¨± 6|ë &b”èûðg%æñÈïÕ‚s¹aÚ‹WzæS{ÝëyqZut$®™Ü(‡üÑO¿<ÖA=Œ&¢ „d°}Mfò&‡|ÈÀ÷ÜaøÉÏ€Š—¹Ä=$_Iâ±¹ÈP…Zç}®ŸAsFàÔ_;=ä¶îÌmé'ÆÜGÍã|mÓÑ*¤*ÍÍ‚L4Tb$2’°ïHZÆvb2£]¬:0ú ¤ÿÜò.*§žp·?ò…’ka¯N‡;ÕÑîuÓòбR‡7fŠu£«Uÿ³7-Ô5µYOÍ•çj–ž*VØ"–ê®JU±h5oN+èȺT£šÕ¬Â‹ŠUC‡•µ®®­Ë25¤ ž ÓpB16áŸï<ÐÁX/×5½b*G=àbÍÔÞ¨z¢aD6Ò‚+ìg)Ì ûHú5÷Mh¥…¨>'–±ÿ˜GìügMÚf j)>ž=Âü‚^Œ‚4áSÆÌWÄš=– sÓ~Ø[tkfS¢.¦©p¢u›{vˆ5‚íIJj­þÞÓ¥”Fȇ-IJ×#D„é¤cú\¦FXtĤéç_Õ9d¢|Ê•©œqŽzi$%©Ç· R“‚«K*ÏÿšÕÉQÊTX,‚3%¬7µt×J–}7;ß—¨Åêâäx—” «ªsö½0ƒeÕ`CËR´Â–[9·b×Êw¶jÕï:ÉÇÀ.´ø@ž Nü˜,˜ÐA`‘˜ÒV_öÒ¾²'ÌïhozÞ ¯ë²÷0!W"T€Z5žµLœã¬üJÈûàà`p’й™5÷€s…é( ‡XÒ…1mDÊP{ÓÖÀôjH!é›.Ð^  ™D BÁµà~f°øH\Vž³ËØi°ùvš”öè¾j(. ms=$‘PÌ܆ Mm­õ'€"S7·,„Ä…TM'E\xt¢òTZ/»ÿQõnqxÁ)o"¹Œ2"î,}4¶áÄx8À¨å“š $mÞè¹p«Q³Yv\œ]8<††ŒfL “Æo/f7Ðw³áÒG¿mÆ”½Ad±“blÂlÛÙ|ãËnþâm·è¦Xddˆ„hÈ:wÀ1¼†oè ´¾®w®çQçyã)¦÷”ýhü" ùÒ“iVÚfýÒ™ÚV±Š}¶_Ôli¸ËYdG²3‡ôoS4Ñ’‰lÍ4̳«…¾Šf>·½"c¯Û~@ßfd‡úÑì¬ë¦ê¬¤Óì‘Ñ…Ôýø¼¢J7®C! ±2t„ÓÚ×W«£B@2IF´KCJÿå:-C¢”RnÚT•ÃΪÝâú&Us1–ð¯:­ÍáÎWn0UŸ¢kƒX*#–T¯ w;¼}Nò¶VæqíTi9[+Vq¯<5ãÉ3~óBe½¼à×}@0 ƒ5ø57„z<Å8€&ªÐŠnœ!(EW¼02Ìör˜ÑÃWܨvéíü¸`¡ÅÕò–‹Èdúš bØ¢íËšrBÖŸ0yýiöigˆì~£ò®ï n¥SŒeÞÜ@(êc¨ÏMœ„jGí¹Ø#dNKéZè!‹…ÂŽ! 'fÖ©¥ö)Òð gÊlLd¼ÎëˆØ£›ÆšæDØ«ÿ.MHÿl…Ö@̪ò+’d#/jÚ2‰”pp5„mÝõòÂ"ǧ Ê×Hï¾tå76Åv8G*¤ªÅ e¨o׌ªw>v*¬R¶êuÌ×DÌÂ*Ì)ÌÖ˜­Æ0¬‚ ÁÖŠ2Âè5übŠCt¢&j!Æ!D ª@tÆDô…JîE˜¦L㞬Ü…$ìå¦CY°Jëž+³„èÓ8†¡4¦ÏÂïêÞƒ>¨þ–Ã/±m¤ÄG¼!˜‰Î²F"öcg@p›úÉÍj‚O&jFÞ »vМJqHdîu„² ¨l2Ñuqj®‹ê*ji­!ØIëºÎUq¸¦'dÞggâGÿ#¤Dž&CÜ)?dHq‡¾V‰q ÊÅ~Mô\ ®–jÆŒ‹Àˆ,öh’¬,tc2‰ÉÚþ Œâm2æÄ)ØèØÎÕh6¸M¿r“R”òàmÚêQÚþÎŒü‹ÜÈ ¿e06²Û òŽâ¨#C²‘2)r* ¿â ÇhüÂàúc#¤=Æa  ®`Àd2ÂLªG˜Š©^ +:¬c>Šì`)ɤdö‡·…)¹f(Ï92áçÃNÊËFÖëýº¦ˆŽ»RQûr žk#€E`dH&¡G-ÿ¯îj’†#šäœàO+a¤I N/?â™ Š_äÌ?‚$¢%B‹é!€©C®Ž„˜‡2A)}O‰&à nè¾&¦!Î`j¢Æá>IÄè 4¦°®ì ôM4?ÄÂá& ˜&`êð\ h"ôAÿHhzÌ“új¦!@Ls"®Yä ‚¯bÊ!tô\Òéµèà &@]J(ja’¯âÁÿbBG»áÔü/þ£âG–’H?Fk´ËW$lô!ö  TP^dL'l†tº¡ŒH' ”¨”Ò5¢Š¡jGº> ÈƒE>†4ùZOCô8’/p€êÖ"®:¡:ÁLÏeM¹D’Õp ”¡‚a Vì£=„ORÅàÕâA >áNɃHq : ¦>î O4L>aNÛÉ9VAW¢höHl’ú±4Xs ñqÚþëi’XoÅd3ZKÏYÿŽÁHL©e7[åU4ïWª…8•³öÒ1V\/xXìÂ$Çò~óÄPÅ(šsÂf3[YÌ ©ÅI²2Z‰à¥®¦Ü ¶@ø€V``P‚ € @öáE @aÖaÉ£$ ` ¬g#V¡"?ž‡ 脤¡Üeä Š  *`D<±¼¡ "Fqä"à rBºÁ(¡ÚI‰¦¤ÁÿÌt@!%Æ$V /Y­*Ášç\Z (áæãE˜Ô\!>!ê#Và :T·Áà 2¢tt  ùª$ù\aÆ¡yðÓ ˆavhJq` 8AŒîEÿ”á Ž€¦BV¢Àpà>w¢Ž@ ^AþXk \Âk¡J9‚á(–VP¨À€}⡎€º`iå„„`èEº!hà:”£p`häaVÈÁ X$IŠ!Šá¦áyÚ‰(áˆÁÿp—s¡œ#'`  á°€k D„à‚¡ÞT„@  ò€ À@,&¦ žüI· 漎Eš€A¢æØ` ~@2á!–4/‚‚¾s9[lU®ZËЫ¼Ê¨– ßpÛnГRßF£’ò qú­Üîí!SCÞÿZÓ"I„WSÞlß<2qþ†o‡4ˆÍQÖ!ûæx8I‰’rƒ"GŽÚ-ˆ[ÃXk0ZºÂ/ÄSÊ¥P"•fµ.¡>"!Ø`° ÔA¸€N¶8¼XÆKªÀ €9|©´à„àŠbø  î³mw@ !7A§á¾À•>Aæ r€}º$† >áMjÁ, ø !jÍ~À´àŽc"àhÀ<">¡ z aNé° @YÄ8~ÀAI¤~`ÔÀp€tïª@ : ”h™Éaÿ2`Ø/üÀî€(|FÄÁ æaæü–@^dDâ ö à€¾ï Úa¾¼ ` Ì€jµº¡>¡B¡!5.a `|âhà" ”²ä ªÙ sÍRá.aP¡ Œ#& ¥ƒáò4@âA Ì’gå@ ~ !ˆ¸!ö€< º± daˆáB¼Jÿã„ÀúàÂ¥ Ä€  r&šA2ÁXá&¿4’@ @ Ò¹¾á A HpÀšaâ`¹à laQ"rá^àKï ÿ.!ä ŠÀ&â^¡’J®öüáp 6aÄ Jà`¡€‚Á``A ¼¶r~ZB h@¨ ?ÖÀÀQÇUV ZÁ8ÀØ $‚AdA ŒÀºÁèæÀVà Àÿ öÊšà |'Ôy¸¡f“d  Ôà Š@Ä@ö`¦àJ6`¾ \a 2áIŠ¡ì tÁè>ÁÔÀL¡Öo÷~À hhƒ*Ý@@?b  ̸ᆂæ! ¦§ý¨ÌÀœ`DÍ œÀæáj5ÒíÀpd„€^AÖ !p\СLadå`@<€Ï™Áèt”ZA$B‚¯5Á~'@<à "†ñ:¦c”n«Ü„뤡ÏSbæÈYeLW§KˆŠÅ»Sl˜+UX¸¹,Ó35bruR¬˜(‰ÿ 4“Sl5” ZµêÎ14rô¬H·`wÀÈYA©Ó•x T¸"KiÒ ßŒ òIY±˜4öäÐq&X¼Ueªµ-ƒ”[·e¨Í­{7ï\»eúÚ½Û÷mÞÀ„ßòíK—.áj´ì6èû˜Úã2´ªI†Œù2cË“iõ­L¹Úæ2ËD{®VšqÛҤݲžÜÀnãjM»­¬:wgÌ¡[«¦ÜöçÛ¶_^frjÏÀiC–íV8eÙÔsƒfÍú´öÌ»“n{ºöåñÂQï]»ùväž®[æƒäÒa2Ý™€_Y¸pwâ…Ã1Aà@8à1ø¢ìD% ­&¡„«xÆ̰4<‰ ´JÂ'’‰.´Â äHɱ‡8XA…i¹Ãÿ! c¨hÊD7 àTÁ—ŠÇ±‹ èÂ[k G«Pàƒ à ”hG d‡xl {Fø 5¥Žè†#$‰ц{0À'Âñ ¢‚ÌúzÐŽ3DÁŒG&(†LT!‹˜øÀ‹F$Á؃-®ÐJ\J%À„¿¢·>tCmèÃ7è;8¢Ò †-W±b 0F0>‘Yá_ØCÝ0“n´!øˆ2¶Áøt„‰ÍfŽ“Fæ1ÿ”ŽtfS€b¦t|SÞÇЭí%/‡;ÜØæV:Ϲí/u D1ê—ˆz4£#Å åÄÿRµí£xÑgIßÆÑ†Þ…m-MéHoZSÉTo¥èäSºö¤§2¡E° j„A|¨~Ü`*ÝGGb0@' ”p! xAWÙà†­vµ«@‰7ÈñŠ|#wñèAªpdÂYñ˜æ$Ôàˆ9@-,ÈÅøÀó•ø„'ð R^ÁÄ8Ã¥æÐ éVÀj…1°!‹µ|DŽð „€&ÄRB r¨ÂÆ1¥;`â¯@jã!†nñA!À ‹NX‚1+ Â`[À꤂Ä@MÀ&ôÁ#D  ˜8D=!¨Œ;È¡j`w(VŒu«Áì"˜‰Ã¶(b‰>4Glb*ûÓÅ>à¡d‚pÅ2 ¦|‚&àæš ´¢(ˆÂzú9MÄÜݱY,5nXEúà L$I(”hEi‹@ç9TAy(K–¤…=$@ R!¦:dQ‚\P"A9¤Á‰ÌænÿG¢«x°!ШÁ°1ób€o  ‘4|3؃%Ð'*ñŒLÈâjYÅâ0„n€¡é¾C7臨%ãàɾ1u£F8z=ã18 ÖI'P`€>@)(ç\'ÔZ={w…PCNµ[C9*7:p…Gäâ é^…óªÎ µP؃ŒAþ܈ƒ úwøv<>¡‹ ´£:±e%Bc?@ (1ÅP? 2a‚ÐÐ Iéø¦°Neõ ¯peºC"ú Äà ŸÐ‰™ sd2=ãI` kpUj1¯PzÐ[D4—{ˆf€Ð~a Ó0MoÑ!Ðÿ"CµàV &Ä …‘O%8ñlšÆÑölu ¡QjÀÖl£áOYó€aCh¡CR€hg˜–ó5›ƒQˆ9Q„Æw³7’#8E¸I™\s˜‚#:ŽI6X6„8‘6• 7–Ó6†6CR£ ±—íQ Ö¨€UµÐÌ ̰äFDG€´rÀíÀt0LÆyœÊiNBE ÌSeWrÓ@8˜"0‘ˆ£Èy÷A2Æ0ô £˜grg°C\¹ã0ÞÆbü[s ¨Å0vÇ Pu «  Wyvÿs°#… fÀ,7sÐ {uÄ”1,ô ¹4"@«Ó ¡$%Ò È k1 ÅàNÜ TœÝ @¦2~Ô º 91sPeÀtŠÐÄ„)Ýð '¦B²g@#C”nLJ&I²S¤¤8A³ƒ¡Å >ÊÀt™°aifè”Ê@¶à'°AÅО¹CpÇ7W—âñð: ¤^š ™P \p)Xµà— AW$ò£zN0:ILÌ10jJ"Lñ ¿oP«0 ,r: ’’µ–€„YS…£‚=¥™x7(8YãO¼öÿh­q5Ö²Á•l u5ÞAßá·ökyi5Ë1káÑØñj»zËa| ŽálÁ!¬CõkšÁ¬Óal¥¬“6­Ã*Çk½:PËjiÞš¬wéš'uQÕIµ Lø]€› TàTá`|×é¶p¹°;°pk°;p“{xØØ[Âr‡Â-à$Â:þá.üqÂBYe÷h1êF3É2Fê,'F=te -”hæ.{ˆ(rbβ>gD;4³2 yE[=þ¡‡‚,¶³Ba±C"W0R5Gš’þØ‹E;ªÖ$ÒÿGgô±(±3–Ø‹leKŠJ΂µGŠUg”§TQ‡=Z³§SJ3½•§)1“-g W ‹’r)¤êFBoÔ·lE© Ç•ÃU"î"Ië±ãh-êF4£”j‘´I‹q@a©(eÒ!ý1!¤z(ÄoÃ5C3$ºP دA´öS“)™d(6ƒvQs‚qÚ;¥9‡¡h­Z4e¦)7š™7eƒ‹»‹Rtƒ~ù®~É9›)Q­ªÆ«šðQƒih¢¹S<¥»…–»Ï‹¾Ša7€H ¡ ÊPÆ P~· À : a¢ Ðÿ;À×(„€À ÌÂ!â¶™n-ÐIë-ð oËr² R""»gtbî2az«°Â «p¤l As Uj+&uH}ª oÊŸri o(ALÿHL"¨´ ¼ {õÜæm1<ÜB8ÁVå2“˜â öB;:›±j!%áùÂgä§:R"su¤W¹øAñ)FÌm2º Ф§ÄI³ ¼8·ý á·Ó°•;¬Y·â¡¼ I"° @à+ø§n€ÜG” ew°¹L!1Wp°ÒUF%e%zÅp.ƒ»Éƒ‹¤rà›Ì¹r ›ÿq—ZœúÒ!\Ù0@Iº‚Orƒ5mš¦j²vkºê¸êäzÔª»Ÿ)ƒ%ÅR(ŠCÍB¨¼<¨¼8¾×T!¤8C&º’›d$2lë,× „y0 A£šÃ¶ù¶ýñ›Ê0IÞ• “½ÅºüaÿŸÂß6² BaaV¹`{W0I,V “ä¸üªÃLCgÔ Jm›uüµÀÉ)Ùwj:WÁ`N—röQœ¤úÉ(YVkñ©äø«ðñ 4©+¼Â/}° Ý0 1ÊÕ° %äGþ1þ!@„çF Ó¸ò¿8Û[l|)-PBãÐ,ÆAyŒ(I|(×2uˆÆýq£Æ@"Ó¤i›U˜Š´w ×”2Ф» 3pAp #OçÞU¡°d}-´¤NdzsŸH3±÷¶ØøŸ*™ ¢W âßd{@>›¼É4BKzS„ €볤 J"3ÆÉú í‰)ÿ‹+Å0cqXŠ¡._pîX«ÿ uåg Ü e¾ Ÿ?Žuo1‘'¹ÓGƒÛ!ÿgI“é˜bÇ€ú³í¿¬€Å–i€F7Õ‚†ö>…™ Õ—â\¾Ú«SI:¥RÉ›š/å®9ƒ» ͵½êní¿K¼D„䙄1ÍåËî¨6ë¬îˆ¦9;xRÄmï«Zî-õ³qiª³Tg´ÜÀÜ 9Ñ ÜÐçælû('°=«;Ë!Êp~à®ã.ŠK>‘€ž'ž"v`% !ö˜àŒã‚Ñ  ÄhΛ*"¨ipàN=V1B È„’*Xˆ 䨄•y¸ã‹ŠhŽ(üˆà™`™æŒ-4ð† (*°¯0*xÄ€`V‰gZñÔ¢áî0¢Ð ¸Žiø˜€Xà(b GLˆ€˜*`“m6‚˜U‚© 8àÐAŽOÖC$ ?u(àˆb‚©D`2é&¢xpˆˆ˜/Ö€"æ ¡VHàP`…Jr@AŽ ¨ M¤q9p€C( Àd˜ÿ&VyO ¼ñÇ`ZÁbc⦘x*€ƒ•nºà¦c&X¡*X)¦eW‰ ÒbÔq€= *ˆåJ(馘"ÈFCä€â¡q¢˜gö¢›xÆ9£ ö &‡;âᆊ/䨄*'í ‹N¼1¡‰xVæ1"›9’u §šàJl°«ê‚ë0¼²Z̲ò² +£Lª ˜g6jªÐv2êæ2–Ñ 4ÑjFŠæ˜ú,§ Bóé磞‚™hÏ@ã¹èjj¦:f˜‘Ö™çÐrò9替Fjëqšì¡«¶9lÑ‚®úê§ÉNÚl¢–ùåœ=£Ûí¤“zm®qZpÀÿ–9²ÿ”K gk¨¹âŽpnËfž#ôX fb£ƒnÂi!žÎ×ë"ÿâ©.žJrø"eÊS¦ô(fàxä¸Ã (ŽPfÕ†¥¹S¦M0²Îºö6%ŠbØ£Ò›d¹Îñ;>y¤p˜oà/Ì ¢!¸±oVÀƶ뺹¤cV¹¤„x‚â•x¢`aÕ;äÐ@ *®7®¸*²ÑÂ0®¼(pÃ9¯"¥=À}s8À$ äÂʺ1* # c÷“Ã#Ö@n\B í™Æ*=]§bè‚2VÑŽm´j ì³§#4!:`ŨŒ6TÀE8‚}¸ÿco@A Á°ÏŠ…b™ ȲÁ uÐÀŸB1Î`‡xMh\1LqbœõéÏ61(HL8ð¯(Åb¡ Ý00ŠQ‘nh€ˆ,‚ï ¡jÇ*:ñˆl ¡ FXEqæ#L@ È@´!‰Ü¹Jž`“ŽAmpD»Ì\Â2ùÅœ,Ë&]XF²“¥dl‰K6ÉYº¬,1ôÔË`î—¼ÈÌè¼L< “–ÿžå0)h˳•º“ é$ÙhòYΆ.Fœ]ÉË>é9Δ­åžœù TƶŒ0\aáà†óÚÀ DtãÖ†„1Lƒ=CrÃŽP8Š-(†%VPæ(ƒ:9xÆòŒÓ¹è(Ï**¼¤ÆÁÁ7b  ö´g>”jCsÂQ )¶CŸ¸ƒ ‹ƒK8@ú¢R'.±‡ A ã˜Q n¨¯ñ@Aæ#Lé$²(7ZA;eu•àÄpÐÓ9T  gøDH0”аP<ÎàˆYu!´±Ãh07Àdj8@ xt£Ÿ°+Ì ‡Nˆÿ¶߀Ã*Ð4°NôGˆA1Ò‰/CS¢ €`‚!ö‰F'œ‹‚þtƒ•Xƒ†€ 0DÒØVЛ—x zF’õ‰gdc0' ûL$á”Ãò:!Wc\‚bpÃ:ác„°È\…„Љ9<£Tš@%*0ÔãE8C0Ô09tãĉ‡7æqEt%«È%Ä0a7 µFà+Q[Ñæ s(‚3‹A OüHf DŠ£@¡]mPî7žqˆ‹˜À¥w@A4±1xÂñ0ÂÀ0 D㟘ÀØ‚nŽæd‹©KÍ¢v4ÏÌyoÿ7kZåFgœåDk iY@ÿ™…Ú¢¢SöŸì'‹~ó£#˜C3”Ð ³¨@½iIÃsÒm œ*hÊXôd‘'eJ–éu^+~u8Íë|45[Ki@ÒÀr5ÊÂA'†¸¼à‘§ÔéÜnâq®†£«DTÎ4d8cXƒ‚A =8€;ª‹GŒ¡€;ŽBNÒ —LÀNèÜMP‰*ÈÈqïóû\¼ªnÜë ]ÜÐ)4¡hEf’›ðˆÞ¯/Ú+»UœÁÞ@D¦1¥ö8s/˜’2J@Œbta jàÎôªp…6DA†×ÉÿÄ%¼‘€xŠ« „Ž5|0í€Ãhú/û8gè7‰îÐfð ¼¢Ý3Ö`Œ6¨!QÃ`<4$?€ÃDR e0krðA8ð¡?óÀAb#+Ø£Ž ˆ¦LC¬ Ó†Ð4á ÷†ÈÑvÜ£†bA¤1þ¬`@„Q„+ã(p…2ø°àEàB¸‚ÚÀ =Â_(<„x ¸â |ðüÀN¬€‚ÈDº0VPâUxˆqh0‡K A% ¹B„° W=rÈÁ<€ð!|[Û¸DÁÀp„=Ńg(‚ÿX1+¬‚heø[VΆ"F+ g:zP®¨¥ŸUá oJ‘º¥˜ª€ Á¡† ù‘ê¥@žy ©éš¢)Š=Šo:Ó¥¡@®!ܱÙÀ°1Àª8›¾A|?“ÁB¥™Š¼›¥›Ì3Á¡A¨™@¶!ÁÜ(L@žY†;Hç(ˆƒ/hØÁ„)¯”³*Ï 7XX£ ‡M¨‚(è¾õ˜˜(ˆyÐã8€!1†iÀ(Np…8qx e £o ¹â¨…M˜€bˆîØ€ à•xÐgʤÉ*x>02Q¥ @rÐeÿˆyXëá;¼ƒJ¨€KЂ…¡`€cx„.*¹ ˆcÁP-c8„-øâ0¡/ 6™ÂUЂi0¹Q,Ž+Š!H LÀ9àOX¤l…C¨$ n8180(€Op…Þ 0h1˜8À#Y˜‡"h…/°ˆ˜*à„b`íXcX€g†&ˆo˜?!¸Dèd*†ðІpøGdÄ(xV¸ƒ/86¢(Pƒn¨Ç˜À†•KÈF% t©ã˜$WÐîè„"ˆ˜З9ÈNè†"¨€æ˜V°‚OX+8€L¨¬J8ƒbÿp… ˆOè脘¼ö˜€iPI0†Š˜oÈ9à—(9ˆ¤H¥/@‡èª XƒM¨Á¢’ï+†l€ƒé†`à è† Ø†9h˜2)‰5³ ³ Tµ’™‹Šµt²'ÀŒšÀ„µJ#4Z+œA㊾4…:(Të¿~J(qª§xÂ4JµwZµNcAs¨™X47C‹LƒÌSƒ4”'DÃÌY³'Ys§Õ´§Ò Ó( kð5Ì™VJ”†Pƒ8ìá eH6'È!ù¶pkQh*±?˜†MðϹƒÐ7 瘀8€qžö‡ˆ·™ÎÿiîŒ'ðƒbpŸ; '˜†Øa‡+‚ö˜û l‹žd †#Ž)!ÃIùˆé1ÿ,·;8€™˜Qÿ’P¤]Õ!±†Ð¤ (e!9˜†px‚è¼û<€è¼2aˆýëÀ°†Ø“ë¸Ñ9àâ°ÒA&ÊÛ<œ7(/ÿȤUøµØÙ„U ‘ŠX&Ãâ•'¢ øÃUYšì”9`ˆ‰ñÒ÷±È¤m!*Ù„bØ„LHSlûÃ=ᕉ7,ûh2™ƒ¥œ€`LˆÏ ÈSÑŠ‡+—J¹â‡Æ‰m‰žþ  J¹ÿh¸Uqƒ¹ˆ?¬'ÂDÁ¦h@©‰š ,©q y‚§rÌv‚ Í$¨Âh§Á ²)À(|z(V­Ìâ Žš(‘y'W³Õ^EMƒz uR™Ò”?DËU[-5ÁèLú[š¦ÙŸX† H+ “Ú¨ 3˜ш80Ô1ã°707@WÒYOÊãÎu]ÏrÝ ãÀBæp¶õäê@6|õ|Í×ù‡c+†Î!“êà(˜‚ÅNÎég»B2iìü¶õÌ6vS$é‰ÒرÃêP¢(REg£×“bWêØ +]ÐöàêR;µBXz‰,\7`¿¶÷¡Iʓϥ<(ºŽ ÿÈ2éY2±R•WîPSåê)B\ûpéÁú}½ 1ÒùØÓ°´ê陞‰Y ûðÝæ°ˆ9ÈBÜžºƒqðŽLàœM°N™-›ÒQéi €/| ë[?TÓ=1Žùˆú|Ÿ¦Ý29\²ÝPæ0ÙÚâ ö¸ØÙZîhØŽ[Ï ü˜szÌÆ4§IË´C«§Nƒ³Êœ L ¹!U¾qЦ‰š9«›ØMŸ(U=›Û ·œ©ÑA´ñ]?Ó‰»¹³Û<ÁÀÂù³žÞ³^Ú›Ô@ÙÂÛµ›ØÅ3ß]^Þ%šäm´!^Ûm›ê¥AUë¨ ¤ÿø€0à‚,,àƒGØk¿-8¢âhŽÕñ©!OçhÞð*ÞPÏëäÓþÕÐhWÞPE6ÆåS}%ïÀBΣ²Ž(r,ÊÎ{{ÏAOfN^ÜÎ!ƒÇEÏq ŠÑ“ÈRÿè*ôlØq8©þ`gsàÏo³ŽŸåÐë&­8ØèáŽÑ±àÕQ¢êhˆìA1Ù)öRYöœOà«uU´ÒLºNë´þ•Ù±NÒÙSîäÂCâ(<ìød@µàp¾*^¤?ãìt[Ï™á5^Îq>=žÝ‡9hØ)–Ü“°“&7€aê˜áµÕ¶A]žf/ÿÿ°ˆ¦ÕÇ9€ñ € ¸`3© PµZ=µy"Ö’A5·˜UVµ4ÀŒØT(ÇlLÀ”UV{e\M¨W>‹ÌÈÌyBUTEµº)]MÕ_=ÖTUË|Õ¿ô'r([ƨaF§ÉÀ'YÀ¢P jx‚+Øë4%C"%먎!)ž»-FWtM×ûmÕQÿ홀MŠÝX7ÖdA&p€áÊåQÁåP%ZØ” ÙÕ°Ã:õ+\€}öØ€ˆ½XŠÕZ­eaè—˜^Ža鉨øtŽò \!fÙþ´àþ„%ûÀ"øb &<¤W‚(Ð;À"ÿU¢ ^[;´Ã}A&XúRa|ŸxØ©µBMº[86ªþ0PÊR%°Ü,‚¢´Z2Y˜ŠÅÛ±ÜÕ8aægöÏ}ab°Ã¯&ŽOp‚;`µþ˜'hƒ¨/Œ‡ŠˆË±´+Èÿˆ¤«–deªphÎ i³Ó$´­ð™Ý…] ¬$A±ñí½›KslI;5ÏÝåX.´ÇÎ'f-L½ f­µJ›(Q#ÌÐ µÆh MåìhNípZåÐdmwMW3µ™íØv³Êd'ÓÁáÞ ]SŠ^óŽª5çŽ`Ïpÿ؃ øþè¸ØÜ^†ÕfÍ¿aÅeÆ@æeÆA¦pšÝ Ê~^¼‰›juÌîÀì^Qÿ]S¿@¬AÌÀ )ÓH@ÊÞuô„\O…@­va×™¬õʶ³4v Œ›ZWOõ›¹™@ªÙõœù³É8šÖ…^3©æàÙFOàæˆ¨*v ?@„öxç}nƒ6pÕ9î ‡(ðƒp8€i˜£‚8ܶÎ-÷9Qð6ÎÙÐlÙŽ{Ë$ Ѐ(:Xj©„…!C0mȶù°-ØÏ ° ZðbzÖ€|Ÿ¶b’{d£*@Ië>>‡ØQ¢‡ÿ)Écc¯b¨„øò ^…J(2ÑAŒ>°Ð>ÿ„X‡ÅÑ`‚6 Ðž]!(–W®Ž‡dðƒ†0Ž<Írø6 =(€þ¸&E®mÚ)†ð„È$ô ]”ä …4[<,‚(ˆÇÙh>!>dBl‚0,°5†½ˆ]ÛU˜†yÐ$å“oKp…~…`hÐ陀fY=H†?iƒõ‰‡€…-8‚|Ï[ é€6(€DÉ@.DhQÿ˜ƒq †*†ØéŸm‚o òÌ×Ë™ ³Ë4X‹Ö\LÖ–MÒÕ‰Ú6æÑÞíÜîÜfž(“a~ícÿ¾?x*îrŠU` Æ„íàÖLR3œÓ4MÇf êŸ~ÎNmÌ@meÍ(€¨V¦ŒÀÔ"D(°`Â2˨Y£Ö€V5rrø™î@Á1ýÈ©ÔáŽfâ0‡Þ” •UÊnÈR ´™@QΠ‹¼Œ-Ýßn ±˜AqøÄþÊR„MȦ+ËV ‹Ð©ì n¡D-„¶ 9ƒó0Ô²ŠL` U(‚fLŒ=€?8cZd±íuBnè+Љxl¢›'òC•±tâ «3ç,'à´wr…EŸ Äº±=átCb‹‡ÂQ‚3¬àŸÈ„0Ñd²VœáEèÂ>ƒÀAm©Ä6¨p‰C€3Ùˆ'â°‚Ï k(ÆbÀ‡Av£s¨À PÒ5°b bøÂ63+Œ³ÿUÈÁ*Jð®L@ÝWdõ„>aJPÔ°”a5«j­*UÌÒ–²ŒU[RÑvXázVlwÅ-Y]ð‚ÂR•³>å[T-ëWȽc®† \æ.׸´M–ka›Ah!«W¢Rˆ?UÛqU‹º ñ•²þ´A6KW­2Öµ[qAjaXF&XŒ6è|ÀD "£ÔbCÊ@{Xt…-8BÆP†2ŠÐ`X_îêF"P¹ÊÄ”G’4°±è{«ˆB >s3{‚Á+úèV0Ϲ—ЀU[ì¡Þ K<*– ΰ`™“›ƒƒz§c¦G˜:%f,àÿÄ<Ô$âWÊÈ5u€#®‰+4vðÁ8MS‚xt‚Æ fYæP/K=>@3´ ²à2ØÂn2!ÁÀÑÆR 0@h, V†bðŠü”%s`An¦¥qtƒ¾èÆZ¨29|cHBÒÙ–` (·®g°C2ŽÌªt¢?%@â¾¼‚\ÀI,¿‹C%Î@Ö±\Á ¹Ð ƒ‡ö‰f@ï -øÌ*>‚À!þ‹B%"…J”¬ ˆ bp⢵¡ qÈÀŒÑV<ó‡ÈA²ôIWHC ûÛ 'á xãll¹Bª ¹jêå ½p`ÏZ…†>aw¹vt#ÿ‡HF"’+µ@Œ¢Û[Üc·ƒ¸nA˜…[R‚Æ•.r«÷ãÌMˆÆCH]öšj¶#¡Â…Ýß‚æ±:ÏI5ò;J ½ 7yÇ…ÕÁ’êäùÀj%ò0¼Í(—C0ÄÐ …McbèF'`!–,:ã@„ åÊ"'d ®€\“„ƒ8\¡M™K<|ᶘnPèÆ8IK8BeˆL1ZA‰+íMÊXCà÷Y>è`ŸÈÒt±„©ˆd2Çú| >°ÁíÁxÂ4‘I²€¬}ZàqÑh…oä‡+ŸXÅÀÀa¦Ü³|…Å”SØU †2Ípÿ¥nÏ‹Þm¸‰|á ñˆÉº®à>ôf í .Š5«rç”èÄxŒÓ rDÀ8sˆ=¥‹p…ÃågžXÁTLÔœšnChÁ8r ²ÑŽN0Ç&Ç'<Â< IÏăx]î,Å8ƒ#ÌöøÎë4’X4mìA•e â@-ðôÄG“™ %´Á6¬À64A À ÁÜÁ4¬À#T ̃ûMXÎ „GA¬Ÿ#LCpŃ´­”`¬"T‚,h€ €ŸëÌfùAU€ðA<€$œwœ‘Ù li¶|×®”—ÍÝŠ¯ðJ =Q¤, -9œ©a¤DÊÿy ¡Šéá¹±i Ê fÊjbAÜb5¼¡1"1"Å=Ñ­a ýÐ#^QYʲ‘Ñ¥Z‘¢Bb#òá £¢%žÐAl"a ¸PÃ2XðˆM8» A1LC ÂðƒxÀÕÈ„1,èÀlÃ4È•L€8A•Å L_ÑtÌhB§ÏšçÏ…,ÊÒl¨”A„ è‰¹\AJЬ@T€¨@%t1DÁÖ­DdlA pDeCD,|Á1ÎÄ4@(d‚Ü5i €Xè[YÁRðmb¬€.°ˆ^èÇ$%¬ SL@ÐAü€ÆŽTÂ%Ô \îã 8Aà¨eƒä(Ç`D‡±E0t@(ƒ0Qßó©L´Îlƒôm„ðºƒkÄã<”í´Y4ƒŸÁŒXtÃAuHY%`‚9UÅ*ÜLÿxÂZìǺ¬Â `qèÅptÂ'T´ö˜Æ—&Æ‚q<¤G ÜàžkÄçÐí&°HÄìß^XÕ  €T Ü ‰4Á °Â¸È,E@ð[Å.›À7ÞÜÍA%T@ÀBÈÜ1F 4)i­_ðÁ<¸Õù'-ƒ‰¬H¤¸¢'~lÏaçέ\pâl†¬nÜkÉ,y%\gçl´(œ‡f[×ÇaPОlÏMy¢qmv½vhkP{6§Æ‘ܵԶÊâ¬ÌF˦¤Ü« ¡˜ÊC€Ëÿ <Á^@'A-„ATrø ƒå"8âŒBæs0S´JUdÇ´Å=«c[TLÇxNYP…RWGÏPÅ4'N“ †ñ´…P]ŒPõ2ÅwJÕÒ(Ú¢ô€ÄM’v3Zâ²·9]L[Ð]Së`LÔQ%†QpG_pâôXT f|–Ñ(J/¯Ê Ø~Dˆ„Lu°Å‰^`”•…9IȱÞs˜8|ÇóŒç³pD‹žÍ^dŸ3“.<tYdÒúŽM3M<˜€ TBs‚´2†7Tx)ÁT‚\™+Ä‹äÓ¬Âð M°‚8Àÿ0¬ÀÒX ̬._% BxC±õL1xÃLÐbŸaÑIb&«âÄÒQ +ú#³rýÏRç{þ‰ÑIúóv{J:n{¬j‡BŒ µ`ºxz×Ãö¨kÜj§ÜÊŠÜ©d({zÉeºjKxZPnÑçxnP")‡A(L8AÌE ÈDŒ#Ä”€¼sLÄÄ*;‹„¶î†äöXI{“¶.C8hßèÆ7â¶7U$Îè˜0•H‡ëp Hs8ÔSÍŒŠ„Õe§‘7Xã4 éà"±ë¸õbFÏ0‹<õGÃ'‰ïT‹¯±3Ì„õ"<ÿY(µ†›;Y€„±®8»›”0±¨8±èÈOO7Ç·–6üp Øe Fq$Ž=}obÐwâ˜Fb äïÌR<Ô¸Áäi\‚Díï{Ÿ»Q It7xƒ/\‚<š>uÁ TÀ*H+3ä' ™”¼þ’$Ép“œí‡”2*êJrG-·A'äÕ‰F8@CœsÝl|>צ÷ÍÂ\¯ì 5¢Y"(º9â'Ëaq² ŠÅ^âbâ"þ blÃQþæCl*NþS¾ÆVì(þ1ä›q¡óñé£(jlä[²ëòã7 á³¾{¥Vé·‘"÷P)nâ쯗D¹¨Äÿô­Õ G€Y°ÜpSЄ2´Àè€PUdEâR8X¸>æ÷ˆ÷çûRŒîÆóíó³G]ZcM¼÷Q]ºW…ók¿øÃ{|ÆQÕ%xç»QX¸2Ý3@„kq'\¼pï( §Œà¸ƒ'¬š0qÕxÃUœpgÕÁ;•) ·páGŒ&=B ¯ñ6¬LxÇ ÁŽ™Âá4x‘¥²F|Ø‘¨Ð;85*$JpBƇG6e:‘jS§•mü8ñÎÆ¢m:7!˜Å ½é@T Òxï¸È0ãÇxQ*µ‘S€VÁštis±b¼bñä›¶ÊÜ "¾H [ÿ°U¾mÜX.Ì—&ã¹i³…F0erƒ¹Q‘š2ehU+c Ôëj´¨Ý–Mëuì2²e¿¶»pÛÂs <8òâljÿž¼õ2Öe'W®<9öí˵/?þûúsé㙓?Ÿý5uàï¿ÇÏn¾ºùßÔ­«W>¿}zçÛ+O@íl.Àúê/ÀíìO@ÿK9 .¼ñ„[†Ühi€š®XIŽZÄ膛bó¦ƒ6æ© ,R&˜—^ 犗nŒGG€¨`$‚\2H ˜âÁé ’ºc ‚ RÈ'Ü`’€‘ RH*ƒ¬"è % *2Ép&˜ãK§œ)˜&Á £‘ÿ\Òr.ª’dH‰”¹(¢Ž&ÈJ"¬¬ I¡™ ŠëŽqJh7Î*HG0ÏÂ,†8âêLJHr*©~ÌS(< %*+„Vª«pŠqj*«&³«ŽÀ’ª¢útÎ jJÆ:Ã)Á Xa›J‚ ¦”2ËH«xºÉš#B<‚Š.ºÐ‘§;‚á¦ÈO*R¦n6©¨“`>Áá“NŠÁ!˜ÃÊ ²;^eõ¬Ž4¬ˆ3AŠUpxô1¶a%ZýÐÅÀû·j–‘ÍÃ2Øíµ~K˜á‡s‹ˆ..áÛ~ãáê ôï8×KÐäõ¨®`™K=ñ0d? K&ø;–ÿ ν” äY<“‰Óî9ãÆùg—ýø½ nÙ8ƒ>Oê§Óï@òŠsÙj§ïÃØâ„5ü *Xé‘(Qƒ"ˆ ºcž ¦1mÑVr£…ôf©…pVú[ðxÚrokhÈ¿ײF¿iœò$²Â‰r¤Ë[g –$ÿò£‡²*s|"]p*Gj¡ÌªX½$­>ÿ´¢Œæõ¤Ë?/4÷‘ôÞ[ñ¿uÌL©ƒpz÷Ë‘ŸtÒ=#¢"6ÅtªIפ>¨9ƒš½«9gE Ö®4« b¨d…NÉ$baÂa5tˆ€Ú üÀ¡±ÚC% ˆ`Œ9¢‚Jàpo´ÿ!€MðІxãÒðCŠð ËÄC&Q’E¢#Nla(ʰâ¡ÍËàãäGgúZ’ö ‡õÆa£˜n&›Þt,7Ó!lFC ‘76¼MŪãÃIÌCÕð!ÄŒˆÝØP‡8l¢Å¼Ö±$¾Fbó‹ã1%* ‰9TbÅ®ãµ0jˆ8üân¶øC(αcu$bÙŽ1,eO,£ÅHC*z p$ÉÓ„]ŒËÃ4Êv€n#tÃbÀÀ úµÂ": †[Xâ½dF‰ÒÞ¬Â8Âù®”,“Xr#Ä…äLAÜßä2-)*ÿápˆF’‰%IåsIÊS¬—ºäý QÉ;fè$5*ºxŠ˜†‚”B5)ƒh©šÊ‰’|²$Ìaf&~šÉ.y¹‘hR‰)i"ÉžV•¦M]å)PyK˜RŒTEe{‘R§D Ò)­¨ŠrñÀA&ºgI£›xËYB¨œ˜ªÔ¢A7""‡„j!aà% „.0ñPC6üÐ…NxÃðF^ဠ°"px%r`‚- N/‰G¼Î0–(p¢qpEV!† ‚@cžP>NUŒ†„YÈÆB«Í6zÑ`F2¨‰ hROz$!µ’ŒA bkY´¤-Gd4ÃÿÏ´ö—ygAE{¡_[èÕ¤á5k#k+xäzW›ÉL±j%,bmã±æXaZÆ2äP¸EFÁØ_0&P¶LÄ£§©’ŒZ²·Ñ˜SbRä."ṈäLªÜ[8 r¦Ÿî„·B²•@Ð9Ú/y“KtñIÇÚ%3u…+ 4s·†à‰{áH,H‹¼Äµì²à6»¤\ðoÓSt ’‰KÊ—¾ÄçHв”Ï…N©Dš‚'ëò*¢êS; ":¦à˜‰Ú%ŠPŒ`LÃ|•¨„¶P€i ‹]¡ÇEŠq‡¶ÝáHø*¤q8p‚9@ÛPo4ô†‰ÿsÀŠÁŒ'Ú°¬@9(À#€ˆ Là ®ËÄVÑ l b¬8Â'Š!˜.%= k`'¶Ç+:̉3„M…è&ÚŠ+ä ŸvÖñX':Ðá"c¶Ÿ¯ª'<`µÏ|ˆÖ®^5g Ò|סmç…Kdž_Ö Õ5i‚…³wX8hDÓUÍ"Sár$Û›0tèO¸BÝÂQ„xPar˜†‚!‡xð!Ô¹E­2DéÓ¾áíw,Y%¼|ú¥L|Dp %àjT§•\„w YI8ž0uƪ$¶K‰•&õÌ‚Xf!Kú›æÎÓvÖ•nžâM…Š"JùS¬þÿÛ©Sw°ÛœO°àŽF†.$ ¡ÀÇ˃Œƒß½ìH1 © B½ÊXÎcU¤ôY‘=±*à ÑJSàD*ˆS*,—‹ÒD”ƒ/À9ÕE0qóa#Q(a¼k™(ŠT›È.A…5HÃ,hBî‡xƒ 552 PRVlm¨rÀ‚À¡ƒÉFXà‡<0ÝÐÁ#ŽPvÙ/X8(Æ6âQw!/¯Ï ûªŸÄ k׉cÅ*Ö:Wµ¾Ùò†"vC‹Ù}†«{¯e4úïS´{ŸCBÚqï‚ô£á«£Çeh‘cVÜáT¦D½ñcTcå½Hæ:ÿZñ =æ9ŸÅ;R•brü£ C¯›=Z¬`Eœ|I Okt%Ê Áa‚QxL˜ß:À°iù·Í:Ö,q °_"Ê P!-¥jk´’é3©NÒ6Há0Ð’` tÞŒÝqë}9~sNqTr.îþ4«`/T•¢Q¦+–3)i$ã˜Ò¦tÇz@KoâO}¼§+ÒkUê!ÆAüú+OnX%tè/$Çyô„ž¨I$y$Jß.‡¾ÈB[Ü`Ž |Aø$b¼aŠ "À>ì-"Ã0Ì.V` Rl²š àÀŽ€ î(x0ÇŠ€¥ˆrà Š|ÿìX ÄŽ`Ú@"€€üÀÞÂup T4¬ D¬*¯ ¬ló<¯ÎÚNgÒÌІÆÐÔLíè¬g$M®ìƒid(>àP<.İâ̯²æiTˆÍ>öŒÏâê°úŒ;ôêÌäÍØÃ‘)$íðƒk«Î6e$Ñd¦<> 7> 6>àäÀ êfD¢Á\ê&* ¡2Ý á8¢Ip`VÞµû2ãáÜ@_ÇÐ"^Qj°$`¶€Ú`h2*ü@[œÌ!`$TÀîˆ&½á¥¬¤áE·ÁàÀ²áž.pD˜X@H+èŒà„PÄD¬¦²HdôvA ¥!ÆD8Fÿ«Èî€L¡´.ùV‹e,Úeº´eÞ"z b€Ñ4¼ bž,c†€hàr½w.á’á"¸@[* âÀ>þ,öbÀ&ô ¯àrŒá >BÈ¿àˆÁ~~ ü £VEÈA2b9 .AÇáÞâ@ A– <Τ¾' À`Æg0ÁÀÀƒ®+€ÿA€¡8ìºá Àà}CƒêÅAÌåà~œÐ"`¬àPë,ÎÀ\d¼a X¸ ¤Á¨uŽâ@È&×€‚øZÀ"Ö .ä| r \  ü€¥Ö    PÎ ðWáÀ€ g4(øù *D(r¤ˆ´d[ÓÆ[µ2 Ê”±ªÌC‰ËP³Hí!-‹´ªQûXm™Ç‡Ë4Yò¤J‘!_Ž”Ø`£E‰ŠÄ˜“§Mœ;/ZÔ¹1¨N‘ÕŠ“£Ó›J•Þ„Z´hÆ©M±Íʵ'TžSu†m*•èÐŽTÇÿ¦½ê•l׌bw:Ý*”m[ŽIÑÒµŠí[§ –u s%^¼pÅjuëT«XÄܺmgØM¼;á*ÈÊ¡§ Ž`Á¶å8tŒ @âqñ‹k9ñÄÓ”c Áâ‰r Ρ܆ãiñöèÒ™xÁ‰qL¶xµ’?Š2Ä@±b&tr$f¢bÁîlBá¡B•Á&Xöp‰[Œ=áƒq²ÄÍC›bñŠ­¢¡¡S•xãäÖ mÙT^8ñ¡‡1h0aÅhÀ ²O& ~“Ã_|B~Ó@!Æ•@wÇ(Ì3‡ÅŒÎx°Ç#&L° xVÈ’ À‡C1:ÁM{ÿœxÇ'4TÌ%›ä‡\ fаM1wÜ 1Ä\Q«XŒ,Cpó7Á¬rÀ#ïÉvÁÌá%ÄQäù92Ç=œàCÈ2‡|ܱŠb€qEŽ„CÀ*Áô!Köó‰4ÃTÂÇÑ œÀq¥™\1rÌóIÑDp„7À¡ƒ1zT‚Ùxß`œ!{är1|ä`L¬˜Ëó4!š7E\BL øÑ„(äF+ÐàGEÌÐ*qˆÛ+8RÉ4qLC®¯€aBZ¼Lm\E\zåW\7ù¥ÑCõ„V¾n5!¬QDÕœRL ÿ;LM}H- HKD’Å!5ŒRű´RÉ(MüÒÅe˜¬rMÕ<ì±H)ÁLKÅ+Ü2Ê*ͬ°Â wóÌ;¿ÔðÆGÝÒÑ‘¬³I*á³Ô!“±DPÛL3Ö)¯“Ë"÷¼ôÍL %Ò‚}ÐÀÖ\±A<äðHİ‚ƒa9tÁG%9¼ˆr~O(£L<Æà@'óD  l\¼€kX›pa€:]¹Â,TaÌ…s\O„cå*E¬  pãÆ*84!Ç+­t╟8°‡j¬¢úGø"‡,pðx¥šÓh;÷µ”pÎ…'f©‰DfвYfw¸‚lp ‡`,Æ™(ºð‰Oà@¸qÃÿÒs…bÄA wÛ€Šp‡=t “ !À V$€UŠÍp7FQ©”øAçÌx†b<ƒ—9\0ÿÎp†\U{Ê(Æv. N fèÅ'ÀDõAÓ@ŽöVÑ Рf O7ö!‹àL «8.hð ÊÄ£¦àCø&p…`p#qXÁƒpŽLðVÂLF%9ŒÙÉF{ÀA.Öp94©gð >!¨x¬â fÐ…7:QÆ2‰á ÈãÝ*æp†+#z*Æ'&`.Amâs˜€¡B¸} ™hÆ ºÓÊ¡º0aÄO¼ Ê8QvºqP¢Ln`ÃÎ r°àn8€b&Œ! Ø\ˆJ»qÀ'à&‡O¬"jªR8à@ _D€{øë 4àŠ8À»ÜÃràÿ6@㳊À+àP‰l@Uk¸C}Ï L¤OÂ+ˆ€/’EÈl!~Àz0Ì_² F¸„h²Q€#À!P(À0³‘ƒl´!  p¯€!0¸¢Þ8B6Dycªr~b+𙕠åg5ó˜E 2®‰ÍbPËš—ñâN½è%.þ2óQÈbe‰´™ÍÔ¤fÀòµM‡žsÍuK@ål6°Le_þêW;ýÜ€Ú'üâ™÷ÙO5Ã%#V¾È›½è|úëÎí Án†X£7û@&`!@±—p¯‘›/œÁ Ájnààˆ"ø1Añ8À%„ŒiÈA`OyÊÃÿ\aÙh…~Ü€ a ¹TÝL«V(®|4àÆjŽ.yÃkØ„T¡Ëj<öK¬ïpPt‚#Ú ((Æã —0Åg”79d"œ€ß,wA‡"¼Q¾‘‰ø…Cu’„ü¾Š#|£@-¸iM†×V©MðÄ>c£LC T™Æ§0\²J¸$9Ô> |¹`£b³ há8tÚÝzqÞÃT “8\…l40¬à:'2mý^¡ôôê§ÐØn²z‡N˜Â5‡_<ä@Ž=È&»ˆ‹à‘ó WôâWˆ_0|!3€áãƒ7¼±‚l ÿî¢|Ť±6$àèñ˜Ã¶¡… ¸ò³Ê Pðb˜ø˜ä`…’!\%l`Á+r ? A…”Bä0J!´ÒðF¦1‡B6'ªÀ+€ T+ô+¨ E ç|êsÎTÉËQ½fˆni,YÅXÖå‹…Mk_&ZN’4hzmfÝ~Iž/“šÁ¤k'û~ÏšF}—XL¢Ø‡?Ѽo³…ßk'Iþ«°Iß™ïG2ø7~-Á2“U³1ë'ã7€\–ÒÇ4ð'€Õ·3%A 3@ƒR ˆPS ]¯à° z°p` p7 ’dÿP,àkÓ \Ð 9/ÀòŸðØø±ÅPJ• s á0„Ä€!7,` Þ€²Ñ g@v@'ÊP ù± ²p‚RFn0ÞPv‡“ —p”!w« ß°Qùq{ 40VVbZ« |0¤µ>÷ÆET2¥3  ôqs°íÝà‡ˆó P€¦•cÅŒ0‰gT%‰ &°†et>ø± Ý0Ž#'r_ÝУx6?Ò ‰pIñ°ˆØ4°Kn€b ¬ÐU-0^ðÝpI7f =R ‡sE²ÀëóbÐfÐ9ÿ—ñUp»8ÐCßÐ 0ro«ð:P`+€ÀÅV_€W°M°–g _P•`pàG €úÑo UB ‚G.9P=¦` LV Fº0D V,G`ÞÀJ`zUbÄóB¬à ÙpcEÐ~ Œ}Ô%EÐ pà0GP&öS†óeÝ0õÒô/é$ õŒ&iÆhvhF¹hdVæ”æ„” åfø´gdF0Zyi…hj!hΧÄ—|QAhb i{v` –HqqæMÿr”î„•où/#QÔð…¡=µ0@u 1PNÿ0 ` ‚B°Œ…Q@ðB Å0 @ðkr jÐ ì ²q`óD"¤:ÆÞp7m Ÿ>6r#4`á“2 ä Ãó[Ý >QÇ:‡0‘‘U&@Ý@'¥½0Er¦uä¤?ÓSÉ0A•¤¦Ð t2ž~py‚!‡Q Q` {0A³…BÀ ÇQ ÃSÀ 'B]÷O™0Í óÕmP`` ÝPF˜Q{(`Á?‚¢‘f‡!- ¹` z†äB ž†ñ"~PÐF'ˆ1mð{0ú±>% (pÿð£:cg ,¡#Ô_p”t™°¶Ð K »-`[W°G0ëS ¬¨wÂÔ´´k@+à {Žð ú?ݰ½0Þ`Ù`(ÐÐ,Ð éDW=MàÒ@ ¦z*x ”`³"90GP›}wcƒgT ¯PŽ•„$+` •@¦G Lq/yá–6¡5 +¡e˜€ç7i1”UOQ9–™êO…vªzOaÙHY0õTtáª[qÝd”ç4ePÀjk!”¶úhdaÙd|ù¤¬¥èTM…F¬Ú3{y „?ÿ›à–_ÐQå`Ðà¬vÚ pP9`Èá p ¶ ~E„ „@­ÀIŽÐ EÀ ùqFT ñàpàQŽPÐ-8µp°p *wjD ¯ð ÐlnPàÒs8` ë ÃjU `›pW@ U0¤—é‡pMp7Ò  [@†ºS @à:°@á°` •0àA'@ ÓñR F0o| ñóWBjð[â—ðê ù¡U „šŽ80ä@ ”ÐTt ½@‹Ê\yÕ Pð_ð ÿ4Ýð zðßpp¡ìBºÒs Žq Ž› Z žð ‹rŽÀ €ˆÑñ² ‘x#]WÌ` íp5j 1к7? ?@]°*ð ñ&Y©kp¬p  Ùð Lh³qp GPcŽ@ Žð,pÀ+Ž QÀ@PÓÀ‡ PÙ0Lp°Z0`j GpàUÀG€¥+0—ð UÐ|àQ 1 Uðp0G™pP j[~«€1RFeƒfh}–ªN™•m¡iugX4a†€/³ã4ÿ2c€X3.ÌÂE1*C6:¼5LóX~“1C“}Öw€+})£3øL˜1?|}‘bª^ö€TüÃß7ªS4#4K¼ÂˆÃÔÇÁ_Ã3\&”&± Ùº µ;à w€—€DÁp ܶ UkñàÓ_@ä°,èО ½á àGŒÀí@` ÚãB 4pIt&`˜p!' _@P6ò[9 „³ b¹ð (à Àj€ÉŸ— ɱ<p ºl  Áj:p >°sŒp—à và MT]@ (T¢:8P t#®ª³ E ÿÄðô6-0C@ ˜@ ñó¸EÀ€ð66ò ÍŒÁ Cãà-”@ ‰×,”Ús"ÞÀ|ð ppãP 8®`p’Dá Fy ?6Qðqe´¤j€–q¤ñP `¬P -€!9À ¾À á g0¼G0‘̹ ® (D‡Q¡wéQ%8à 90+«° ² Þ `®Ptrp¯°ÒPps mŽLCP)+àLH9¸{,€¬$ pÃ+Kl V0Àp€L}ð‘:V@ÐôÓJ¢Q-C´wÑÓkšJº7a ){ß+ÞÿGЂVTF‰WQ |ÍÃô·ªPA¬v6NŒ¦Nð„MËJNfã«L™Nh¹|ÏÙg±NÊ÷v¦©ží«_ÉOlÙž ½:­nqÙE–ŸÛW¶Ù¢-NÀêMÜD«nÖjL {YXñÐ  Ú!eÂ!"Ä °Ð ¹¡ Óà [R›PXé‘x ÑkÊpp¹°;p,B÷ˆŠÒ$›ð„Úa!–Q +Ú ô™ʰ Áu÷–DˆØ ãpËÕuˆ; ÙáÇ-¡ç¹þÝ ª ¢“kÇ•8@² ÉÑ$’¡<Á‘Ys@á1Ò°@Œr"-Ð"™0‰´˜K›pÿŒ!Ý@Zs :ÞY¤ê“ȱ l¢—WMUFÙ1ž ±[ùÑ&±q$Ú%¸qÌYêAX-p#úÚõ ÁÐ"—ˆ±AI]ÒÞ›€Mâ‡>Úmø‘Q†ÁZVô |¾GtÞ0Æ (G%ÖM`(d, $Æ0 "uoˆ Wp.ûËMpcÒÀm GÀ …~ç8Y=À]‰'Ý!Wpeò »tÒë ®ð M‰Û y9Rpmp9Ð9°t¢ Eq/ˆv–›êe2ÅI#fc,2@Ã~†ª& •!L”¯J”W9g!li½ªìXÑfÿŽÆPÙ®hÜäØÎ¬úd—L hk©/eégß^—J9—ÒÊ”ÕÔÙh6íÕ”a Aóa o³T@8]ÁP T _€w£=b¤Kç"±‘˜N n nð8ÑаŒ@’ª³Ý‡a¤pcs5d`¤à"8þwЙ¼'‚ áp¡&:=7¬†o -ˆ Éabà?ft±0?-€-Ð~¬Ö%ê£]>o$"7P?_ã0¶kr/oàñð 7=õé1ÿD1$CÙqá”d#9MÓO%˜q-ó¦9÷±LŸHTFeä>[T² ÿ4ö˜Š"(²Y‹ ô -e>@P G Ò CPm ønpΈ Ò°Þ€ùŽ”pÝfä%[~P Þ yÛ TÖI&ñ°6‚W»t_‹ØÐð¹?ÇFd§e%9 ÞÐÒ°‰bæ {Þ` ~Pâ'’W1eΚ”òÔªfÆÛEÉ|ì¤Ä1ì10¼eûÇ}È~Yf€  MT € (xÛ·~¢Z50eª-Hp @ZeÊ4PȰ­jÔ.«V&áÀj6¬Ø€ÚÃŽÔ6|¨"5ˆ%%6üx²AEˆ aFœXaH(²\Ø’ÿ&KM=éҦŠ+_Rûp%X¼`Å:Õê.^±UEÄãV êeÁŒÅ›Ó"ž› ážÆ;PaͶ`ᔰƘ1«&lŠ/S¼nPɘcuN±MZ˜m±©X°`Êj¥‡#m8«~ã© ·)î¸qO•©u|'ذ—7AÙ§«ºÅmA ïép¬N˜ã´Õpµ€‹×bN<2Åî î4aªxŸîŒ+æµóbªÚ¬ÓâÎ3K;fåÓ*_¹ÚâÎ*öÄÃQŽçøj­Uá” ß|Çy°´6Ù$œÔŠÇ´;²K«pX¥AÊj¹ã“`6q­b2™À¿ðÂÿI+½Þû :V ˆ§“;ä @Žn8¢‹J²q`•bâY¥„54XÁ#X9‚?*€î©b®h¡‚ŽÈ!‚#(a¡‰X"›W²9Šä‡`J0¦›U>‰®‚ à0i¤ià hÃ5X)b?®È$ª;lì ‡N¼ñÑ6*àñ?¤)›2½cèp¨@ H­)†6²¨%¤ ÍÒ*ªÒO#ò´Ó2>ÒôÓ‹JUhÕOO]uS…HÈÔL[ÕUMW5U¤RG UÖ[gMÊÖW_m5ÖŒhÍTf3ÈV^‹-vØMEÖ\UÖ^§í–Uo‘ ÕÚa= —ÚiMÿ•X`{m•‘> f™VY¦/³ŽØFä€ê ºøb‹ 63¸…‚qã@«Ü8À‰iüX¡õâÙ`e6Ím§…Ë65«>žï-m²òܰ…óxì/–ÃÉD®âfî ßžb¯çMFë¯51Ó0¿Íjö°µ´ ȆIo¼aor`Å 8\i>o9¢‚äרLsöhœ†z#üx% ÖpŽ’‡£mà‹G(…И”U‘"jö"Šà¿ÿ£*]*¦ýí¤'Ä2¶n*fÍjYÆŠ–ý¤u@p%+¿ZÖ¸xu@eÊUöà R¢õÀúm«€¬•ºBH¿cqPô¸¶µÂ˃ãbà ]¨À¶ðY°"¡D@b0\!O^ F7ŠQ .C?U12”ašÌ@%¶™XØâ‡iÌÅ ºÊÖ0S m-?i#Ü<$Æñqk”Úù¶œÅ,Æ‹ #Pÿ¿´Äe3~óPÇ™ ]a>Pkcžþâ·=.çŒgL‹Úʃš®µmwpφÜhIK®".YÛÊB4:2΀¤s )J¾=3z[äÂñ8ýhç‘Ó\‚–£œWúG/Ú„4 À¤ÜQÌ„¼…"ä¦hÃü`„T"˜(Âsþ 1!FˆÀ’¶‘$æun~(B•7ì!&ç¡dw„&ázVx“7"PÓùÍ;Â6¶q?™ÂŘž 8À!ÆðFrðŠJ!pȉŠÁ,I-p‡ÝR—»hEä„ËULJ¥àõ–ød%eÈŸGJbÿ)ÿ©Ô!¹ˆKòRš&¥òŸ?“V„"(%jJXž®¤$H•éMTӢ¤©D ªROjS¡fd?JQâ‹Ì¨<%ëR2À˜L¤#4©@zêU´êt¥ñb©G‚hšbÜ447ÉÞìµËÕ4Ên¦¶ì7ù—¶;«H\š1-À>YuÅ£[íHöl½µÑÜœó¸ iÒuwÀt€DøÉzb<à0 #؇-h>pÐ c˜(o 8(“‰‚ƒ§¸ƒÙ¸ÿƒ9ø0VhƒH%I¯ Ä’ p¦† Á&8‚“k{’‚ ’ ;¹Ýé&ñÁ?"è8ƒU “5ÈlE!ÁbÉ(®«²/s4{ :›2Mñ˜ ›’+šBŸZ«®2*Ÿk+0«¡ ”À‰›Úª¥"ˆ° ƒh©‚Ø)™C’³jÂ+\C›8ˆ¤SB9Ä”žXB´+7 Š·"C˜«ªz 4Ü)’0:+,:.ü 8dC7Š-¤—0°†+È'ª8 ©¼؃Ï{ N”"Û†"˜†Ë37‹°¢èª‘Z«¤Åi¤ØÚ#Íê®Wʾs|%³Á¥Qø+¤å VRŽÐ‚#Ø„j e(€3Á#´OÈ(€Ø‚mPyÚÀÑi“fr¸"h8ø§§˜‹ `’ˆiÐ@?`#˜°wz“†[“[m@¯"ذŒ€óAŸtÉŽÌ/i Á#¨„n𗠈īi˜8Ø‚ †Ý‰‰ŠŸU9*C nñ2$DŠuÙº»R»¬«»k!2kù:"²²¬«•ª#ƒJŽêÿJXáJ°ÔÊ«£ ÒÊ%“!®ü ª”2§|Ê·c•¶‹3s™Êr¡ë–ˆ@ ¬†'KK¿‚(E˜©=*˜‚,7˜Ì¥Ù¢…ᢅáŒÅ€šà²ÅNÛ/Yã#–á$å*¤Ý‚­^$>2 ¾ ÊË*ÒÞk ¿$àŠšç²Å1¢µÕš­>R¢¸! èè$ud”A*šfÓ´çÂ-Yª¥í;>TZ=TÍÄi¤ßò¤÷ë£1²%¸ÉŽLè6µ±¥Yƒd…J˜78ƒÃØÁ–y‚O¨„Òiƒ&ˆ‰|Œ;8šxPæaž6Pƒh‚x/¬è«;ð“Á`{t¸àÿ¦ PÀãqÁë)Bƒñé08°žXÁ¸_Rž à°#xöô è(E)ÑäÉsá ,+ðúÂŒ(ºþaBLy*ޏQ’BK¿ƒ;(;3²Ä²²3U³¨;¸3¹Â9›Q( B;›!%e ·¼¡.3K7{R®óº¸3!Ú ÒÊ*Q/EB’:l¡z™— š@ëe †tÌŽ`˜†Kó«ªy X‹± ÝÀ<ÛØ"‹ÑŤÁ½Öœ¶Z¤¤Àa¬kLMÊ:6䊽Ø™D Ü“#Uƒ=غ M;œ`{µSÊ6Æ¡5÷“¥Ý2›l«®ÔœãNÄyµ£1Çëc,¿ÒÿŽJÏ¥é,ì’,ñ¸®ÅÑgËÎnÜÎf»Šb (9‚KXJ扊 (€Œ;ƒ€0ãácðH‚Zo`“mhƒ‰r€…Áj*§=ÀLh¦lh‚è‚øÀWX)P~d8˜† ˜ƒ"ø„³ÓPH^=;‚´*Q’Wp&mò?b’ø_{¬¸ƒ&Ø‚äa¤ÔË"B\™ ,EK\É ¥[©&œB<”B¨Ê)¤rª³¢Ù4\*†X žÝYŸÍB2Ä£³”¡ºÙZº£ šªžªÃ.üˆ'Ôˆ&T*E+LY©³âãúÙ¤ÝZ“+CÚ4dÄ êÿ*2ÄÚ¯z©¶âÙj°†ðˆ'"¹¸„Gx„\p€"pƒm > È)Š … d †ß+­ip‚…qHmÌTóÅbü­E >̾6jGGœAê#ણp ƒD]^\ ”éE¿Á¤ñË à8%”ù®Wc$álÝÞJMál麾F¶æÊ%š\â¢Æee,Xd¤¤)˜Ø2¥æR­lÓ½¸¾Å9®çÝy „X-¸ƒ¶XÀfšš÷¢¿`p…#ˆ=êâµ÷`?(€- Ji4² …ë&oÐAŠ2†f:9o(€ 0Ÿ9Œ¡‘¾p PD±¿ š¹Íx˜Ø Éñyÿ…WÐФ(°‰ŠU˜Œ3ôÁ¢ÈB%<‰2-¡l©$=–¥ ,EÒ}$“2¹Ó háR2«Jg¹ r ©SK#tʲ$3¯ô»Âa^Ò5…–!õ:j;¬R ,˶DÒ©ë1»Y Zƒ¸­špà(ˆ‡¨…n¨€" 8Ø„ZˆŒ¶87(§³Ø¼H 'c 0F*2ÆÛ‹‹SÓ­å5m[>dË\Þû¾Eâ#Ü>ÌȽR=0’‹?dY´Š ùH¾ÞšNJU¢Øõd™‰ÇàT¤ÙÎîd=G ¿Ùµ™PŠ®·¥â:ÝÑ1Uÿˆ-ÿÈåÍÿÅ ƒlóN[Z¶.ZâÜê8D(@S¢xðƒhÀßabðGvàDÀH\˜¼:ƒþôƒ&89N`ž„×b8€NØ’-ðƒ5@„MVpž„/C+ð†l@/Whu¥ž <ž"€´8·é`ðƒl0¹J€ƒ\ƒñ I ˆ®Ò 9°1sْʦU«‘ØŸ”jC(¼” ¸K”uRPA—(»•¯ëº¾œºZiÒ¦l¡©KÁD!"µ;˜Ž».[—ú»3c»º¼L!-é&¹Dâ+–Àlé2«†x[¦"©Éhè€)  ‚KÐyȜ׀´³àDõÿÅH›†Éœ"A™Åˆ ÆXá›¶×”[ÅXÝU>ƒIkÛ5´ØÅ­™k0Ç¥5[lãP]à¾Z󽙑$ãT$e››iU˜›âðÃNܽÔJM®Öõ®ä[Îí.äRŽâ²]ìÓ¶>¢lnÜOìz?mä3hƒ‚x‡Ðñ½êQƒ ¨ÿ¸‚̆ ;Žø³lyŠ>0Q%yè:ÔK¨Ã…È;y/oØ«“‹VàfEYÀÜH•KŸ†l>½°rj@?°³‚Îac† åÎcˆÑ¯ Bºœ.ëi *¡DŠœ²Bô)>Š5dBŽØÂ0Īýÿ)¬ÚB/ 3 a(̉™ˆE|ÙÏY*ÔC°’pRð¦ÍC3ZßCRÛžÃ:Ìh°bñÎQ›}CB”)?äQ ºÚ§F©e¸«Îب Å9.É·=²7ÛÜ„ÕPzêÈcôð,Ýø%¢Á› éØ1¢6? YúËÖ%Åa”é%&e™ZÐÿ'8¸‚3¸¥<á„0y5W&q…¸eø„3(‚&x7nXm¶U8lˆ€50iðl×¾`Oö¬€LHŸWà„†Ëox °Þƒ>˜(`…WðCq8žmˆ„›†ã˜ò+ cÙ¹W&9‚"€cÈ·÷‹‘(ƒŒ"ŠX* 2é¬43±ê“L¾("Èé„"ø!à†q©ðXà„Â8ƒä)O‚n`™=€VYâÍ)r)B ä(M¸£,ܪ`­ÿ˜µñÓ¤‰i~iඪتiÛÔ<æÍ›~ü€Ñ‡€›9ÓºUÐòŽoÛš\òmHÛ²Åcñ­Š'opÖÀyÅ©JiE"¼òãíYOÅî,¶ЬGwà³B‡oWŠM‹·ª \¸h@•©×n5ju©Ù-C«ZµepÔýëwp^à øÒ\¸î2»„ì×rÝÊšñ^®Û7ïݽwõ†Ý73gÔwOŸŽ›YµéË|+Ïö÷äk;¸è‰—íùb~1ÖöÙˆc^8ᱫNº]•£MMç ,ÆW)F+ÜtS Xó7¢è€H<cŒx‡7T<2ÍNlSÀˆVÀA-–å(ìCXºC-Ƈ€Š_Z'Váˆ5|È-ñ0F1„ $­¢m(%ñ7” G¸ÂMæÐU ─‚VP pB%H†‚ñ øaN€9¶²ŠQY¯ˆCòî°‡WpøH0XDÅæëÆp…U¼±¬¸Ù °¨"¼ÂcÆ`E7’ŒlÀ+¯¸" P.<ËžÛ`…¶q„mTBã`Ár°‚"ÿ|"søD74PŒW˜}XÁ#< má wpy]×’Ms´¡o’3æ°t9\ëÚp®ÆR­‘F;Z3Žt>Cµš‚æ¤/­Lk²fÓìÜæ9p©in¬ÓÓêÇk«i)_òÒœ¡&Õ¦UÝŽP§CÕনC%l¨ŠšÎ5/‹Y5¬¡‡T€RÒÂÒ .¶Šxl@?:ÀDr‡ó´ ÷ Fºq‰Åà v:Š!Òo ¸ÃþL„ÉÇG&úÄ øĆ(ƒØÞ&ÆÚxt£ÝˆG-4ŽnP!”ÂÒ'a>)œ BXŠqYä ñPÆ\K‰^4hÿ1™ÀЊU„É‹Ó2EÞÄb”` P‹ŠQŒnDš@&îp&0L BÂ74`ņ|¢7éUC ¤ÉùöCÝ`A<"-Ìá” ’âq†9PI±¾ÍÄ pAh¿À–Šñ‰ ØB™n1*q‰-S¡,À'°4ª3¬+ˆ'Å{|hƒ*È"ÞxXæ‰fPèM«GX@ N¼d™I~°†‚À!ÙȆÁ‚öÅ#«¸‚ø°†“À¡ pÆ7¬ð²Žµ¡ä0…8!ÂUPž¼B+qäàE8B&*Ñ“ì™ÿˆ*q° !m0‚§²®¨f.·éšTiƒ¶ÜQÚtq+]Øè¶¶¿ýf6T+ko`j›Oÿ&Òµ‰ôÔúrêÌDU7ÐiêLMm™nm3«Ö ¤gÝOW-Ô\¯E훟ríÓ´¹­­kìÜô¦Ë®ªªK]µJg;„±ïúF jO¼eŒ*ð <¹åhAƒÜ`×<¨B|Ÿ£=WšÆF'OTÂDØJ1Và n\éAwX, V¿¹š@Þð¶'Wp 1@(&ñ†,ްY#e `؃|Û ^Í ÛýÒzŽ …#ì¡°<ƒ,¶®ÂV]؃ÿoi5J|#`ûî*0áHéZIÈÚÃÖ#-S,À‹\ñì¾ÑŠšwEp„ŠÛ#Tá{h|z¦fà`³ë9Ô%pP 7ø²ˆˆ•´e Y€Á V2Ñ8v{„9lEZñàƒ,²!í£ ?ˆtµ¿b  ãJq@Œ¯¢QwXÔ<4àÌ\y&°7pàÚ¬BŒŽhƒÒ%^ 8‚yniHŠð&ÈP±™ˆ‡)Èa†W8ÀÒ8‚7¾Ñ3T~œWÈA¾€ 5á9ÐÀ~Ž` qC1 7¤éÐ3TÀˆ(=„t48Œã(6™4ƒ²Ôù ,áCx÷ÿçŠ&ð!ðC¦AáD ׸ÞÚ­m t•u<Í×ÛDÎ⤠dp`˜ "à¦)FŠÔ`PÎc4ŽÞ(Ž`J æèd†`€N¢ bhàžãìáΦÔçP`I9 §u` ÂM2`Þ˜U bx ¾`ë!å¸ !ç8àç(¡– ahFd,Ãb<ð„C'¬€üž àÀ("ðÁäÜD8UA|àUÃ|(CðHh1¬‚@Ö‡dC;WTŸÐ@i±€°Â‡ÈA¡°è¹CЀÌŠ´|É+ÌÃ8ýÉÿ\Á¨A…×lÂ\XŒŸdB7#HÃ2qŰðA2™×8dÂø@4€Ý,C. ‰¨,t˜˜1Ð'0Ø8| ô ¼ ƒÍAÁ¬¸¯¼Â!Á\-K1tÂ6è+ŒCAÖ*¼B/ H|È+@Œ\-Ä6xÀ+ˆâ‡x"'ØÂZ¨Ê蘠@'×¢œ7,Àûd¸9Š€é½I1ÌAD™À;:¤nƒ°@j±À®œ¯ÐO&°AŒÀ øA8„ǃtHAÀ\BÏl”€í%:Yø'dBÌTÙí­B%ÀdCÿ\SB&‰—‘uƒLÁxCœD´+L7ô€õÌlÃ%ŒœAD, —¹‚1|¨ðÊd`IÀ!ÀA°B¨Fÿ!NNµ[Tàh,ÛV! L©ª=U´IUaþÚeèT´qUbÂÔbbÍUÕ©!æ`RÛ_‡k<Í`ÒT­½†±Í¤I¦ÿuÕfRF`f¬ý_høå±ÁÔgÚÆuì…¶ÑÂït›o©7tB<݈Á°_ÙÕ}‚PB0¸8I"7äB<ç|\I¬q…œÁ!¨GCà@[±BhËmB`]1  ’˜Á|3ä@ôÈÿœA ‰àÉì)TB7ìzxCàc†GiZ^Â`åÈ&ªÕ·ò×XFjfRéÔpÈ+Ö TaFaÕÿ‘Ú©uF»†`˜FuTÛXGL±æk¶«O™¦¿FÚR‰æUuj"ÕJmSaÕkŒM5|@ßD5X¡àÀ# ‚ƒHË<‚€€ )­Cä‚£ăÁWÆ@tÃàéÀ\ÿBA‡Ø¡3~ƒñÊ"ÎQ‡Èd%DA}át€xB6Œ¬PBôŒDtÃÇ 7¬ˆ€Eƒ-L'~B ÃüÀiÍA­¨E;xÃF¹A(™‚ÀÈÒƒÔm-¨‡Ð¶¢«ˆG8” MxR8\AŒB2`B:êV/˜Á<(â­%Ä1<ÂiýÈWtƒÁV„C–¬iA$Éì9\ŒxÝdA{Ì]5#”4D€G®%BÈ´®Çt%¨}~H‚`œšùÖ'ƒ´x$pá9øBµ8‰xE€,€ô^‡Oø€,HÃ%ÁÁÿÉÂ@ °@0Ä9´A (Öd‘)9ð øŒ•µÊD6¬Q'8Â4ŒÊÃ%ƒ'Ѐ䀢Ù$8£‹°Bè@+˜À<ÐS¡ÃüÀh€\Jƒ7 øA d6&èD@¡P4dê›pC{LAÐ ‚]JMkæªùëvtÚ³•&b§‰ë Î_ +^:Fûà Š`"  –”Fq¹Îæ@ƒd,¡é¤«aa Š ÏŽÃÎÜ@`¥¥ë¤É ¹š«êhܤqêÔ±®ÎÛ¼N!kÚì(  /àÒè¤X%FßÏL%èÁ<ÿøÁzÃBÀÛ‘¤ìoUÀ7´ƒä@L8A0T€%„þíO04ƒÌ„È8B!°B'ì,ä€#ÿˆn¯@,ج¨•(V/8Þ×™7XÁ!x:âè*h@òµX­‚:´Ãœ+Ä †zƒ. ¯[I7 'ðÁ'xáC ÀTÀ€¶t‚7\B󮀠‰ÑÀ)É´AtÁ)ZÁ+ðÝþȬ@PTU1 ÀAHd PÁØS°@6\A¸BHƒ Ö¬À×A–\ZAd‚lHD@&Òlƒp8Ú—k›ÍsHlX)ÕNYliÐT½ê†Õ­ÅgÚkO!÷¾*ÇI‰•Vìs;›hFlgþÔf8¿úTm\ t ÕSYPi¦Æ¢÷ÄÿÆnXæ'w|WCÌ€_œUÏâÉ~[£ƒÈʃà‚†ƒ ‚{ÎQ„)…p–•¸A´˜ìÏÁ‚‰‘è[Øõ/®GD€‹@H8ÈDLƒý‰•¬˜béP†gËŸü›l„.õ8‡gB \…¯5Ò1¯ Ðl¼OÜ'{b¡X LCÜAª¬¨1`( ®‡¹ø äMä ˆ‹×lõHQB0â¦Ü£ÌÁf!Œ˜;”¶×å-Á‘ ¹܉ڭ=9”@À¢ÔˆŽa‰5Dß|¡I&ðA3¨+°Â¬®¼À%ìC½ ÿÌWÔž(–K†mœA&à ¾Ì+LðÞ!ŒŸƒWõå@h!D–í\Ù+dÀÁœ“ ç@;ÉeÇXA%¼Kàz‡o°€ Ë*¦÷ÊñaÃÁà}ˆv}dD€ê”Á]–ÕkRÍoû6_1ŽéLÚx—K‘·g`¦w«÷¯ý+jGhr»±ÉZ³¥7º³¾Ö{Ã~Z°i÷¹+7£w«¹fº7qg–FÂOfÄ*Uz/ñÂFÜdÈžÕðÈŸÐ$ˆKÐ=Dp⟴ŸøÖÇו¸´µ@˜¬ü…çÍέlü¬ Ñ…ÿ¢,ÕHŒÃzmÖ,#Éÿß@˜øIƒ£Í›È[É—Ï÷¬×Ê¢Ÿ{Ýõ¶eÝ´Ízå*»ti¾«ÈßÉ4¡ÈJp¬pÀQi· ”Æ1Á öâ¡íŠ#¢x%+ïîXeÀ&æk#‡³ž‹‡Á`ލ$›‚‘Ž6 É †W¤É#V8¢€mä`‹ îj›Ã½x2¹Â‰ "È¡€#ލÀo"ØÂ½¯vÛM”#ÚØæˆqŠ P,Ýâè)4@’¢›bI¡,%ÊhK>RªšêòË,½ó#(ŸúÊ-%bÓK/ݬ Í2Ü”³¦;íÔ²Î6ÁÄó©8¡SÐ9ãÜN1ûüSM8åÒLAÑD³KA÷“Ï@ÿÔÿÓR5ýT!D+½4ÔH…ÓFϼÔÐŒ]õʈh©0¸¢¬ÕÖâ‹/·‚ g¶Ü ¶µ¿<³,e4»-2¾~틯°ÂJ«»°úÍ<Ñ  .+ÙBK¯[òJ2î$[ö³±°ì´s㪅Ȱ 9éÊ[ð3¼BCO3ä–k·_\S.¼ÆRój¸qºÏ[Üꪋ¸çSð6Þ¢£­½‡K‹Îàáêº,?‰'NP£‚Nâ¹¢“X9‡x\‡`V¢ntp7딑Î.‚²Z`p¶;\ñ£1‚ &žO‚)áŽm¤Ya6©$˜&:)¦º˜W ðg¯œÿgŽ`ã)bŽO>9@D¢ÈÁoŠ(`ÎDC«›"PÔ1˜9p›L,вfÊ<ÍÌ´©…Š"‹ Š)@rÉ¢,Ó´”ÐI5-IóO]u5MÏ}PÔO7ôÖA}³S9×”½t×åuTU¥]tP]½v.×TP67žsP=÷4ùH?‡µwI;³¤¢f™زl¹³Örƒ-¨yýB¨µZ¥…µ”Y?0º”Ŋ׼öìªÁò³Ëk.¸äГ 5Üûß×¾t¦]ËÖ_Ä’ ÌpÏ2ÿû–Æ4™ÉÌáb¢~·æ$H9Ä ‡bÂ1É0'2™ Nß“-ñÿdÆ.+ yNHÑÜІ$—WìžÄ|l†ºY…np¶;Ìa@|è†6ëtCX"¼¢› Ü%%àCXÁ3±d§EX'Ž ¤9 .WðFŽàä` O ‡Ív 7pȆð¹Æ+ÿeáž%\ß`®Å-…;T£Ùÿöw"¬íÿ&G=‹Áö ™EBó¨Ä—áÍë2ïç®…BöθV³ááë†_ aÿÚ%.‡éÄ0®‡æ|^H¨ỗ’lZHÇv*iêÂ6îÅažÃ§†ˆ+Ž V#îb\܃.á£.”tƒ¡î fhl‚á .ÁºÂ†>!8¡ Á¢£Ú.£]@(<ââ̲ݔŅðLߢ­¼Áf€ï=”!¾Æ¢.ÂkÑZâ–¬$&|­T€MºÄ’®k·„‹zríTb­yPeî>¸~ͺFÍtE¼N%Ù2­¼‚í 3)Õ˜«“æðÿS8źàð S'TÀPvò·ÊäÁ‹x¦‹Õzë> žˆìWÄ‚àjŠ {àl,D¨| ÜÞ'/ªFñÆmޤ…/ãZ 9äå_ð%_Xl_Ø…<`,=¨ƒˆ/ÅÈE¢ø­^ê;.6FH§>Èà>¨ßd#§ØmâQý*®¨fèãìbß Ê;ÌÂ6"=â;,hHÒ£äjè:¬.©º@* ²EYº€ºA:RÎÆ&@ Là8žÃ[j¦ ¾ T¦nŽ-¼ À`Òî4îé1ÂA`æ¾@_î!yñ6<æé œjo>¡4Àb¦¥í’íTö.öTÏÿ)<¯ó(Ž ¶G·>Ç%‰k¼rks‹%; ¸äpQr¼`Ò5ÅxDRÕ1ºp‹»Êd¼‚RQ|'Ô6-)‡GTœò»Š¶¼KÓ” +k‚"ªáöªÁ‚¯$kI”šM)üzé%D o>í¤œb˜”Òü3?[‰•4O›Ä A™âóV ò"TšT+gI °Ð(ž)ï¶ Òbo#ô?3”šT¢–f…AÿsCÙI^g ‘®@,žf ,§¡FáB`Ø¥F'®ù*ú~~Ø’[À Âí/Rî2/s/´b~ô§WJÈ5\ƒ^ ^–±[. 7_N(ÆÁâÆ0fb⧆^4ÿør‡„¡ø"!QˆÁ˜ƒ\âÇÿ2¢”ÃCp§Â¢c£&ò4ˆCøâL7AQ)þêb^Q3æ@ø„ü„ÃúãQ1J^ØÔ§bF6ØT[#S¤À§B#>!X\cC¤F®0ƒ-‹”/M샰l®‚o,ÂáÊ1æÈâìÐH+Æá§&@“ª( Âñ.ORòĵ†ëv´‹)Om*á°“6§»ê° u')ÓpÓQº^ÒÓŠ ¶R‡ IE¶žÒ&×dîÑ*³’\G·:çMf²*…º~­[·u¹Bç¼|)ðö¤#Ø+ "Q2 $ Ø,Yd†,ÀïÁâ§Wdf/&–.ãŸOáT-ÖçaõZ"+ž%Ü~…ÿ{ˆb5*)ƒÃã/G)ì9¥0ÌM+‡NÃoLe£€胘”LM–7pÖ;Âc/HÈL/ó§ ˆ}Tÿ”À.sAŠ•]ÐXç"ÛL“B4hÈHóŠ“Aji7Èã¸eIˆ¬;80¨RŠ5vÊ2ÐXsu®-Wÿ"žtâв„U[8ÐXcBB3ÀÔÌM$=‘L¨ s*'A%­@ rIåºÆ×–r\¿5vv‡Oü•]A-(a¥¹ÐÐÕqtÈSp-\…’µð¤ ‹«UHÍÑbG)YíTÆ•ØÔagt6é=ù¼J·C#bn…{n£º¡„‚¡ˆäÀŸLcÿAØ’.íè/&¶oåŠøô~üB`„P?¨JGÑéN/Ð3{¥dÇtgvf‰Ãû.E–™:"ðüNïìX˜™ôRI(XOqñr:¯ö /`e÷ªa÷¤*üÀ€`-Î/9ÈÂÝØÂ ‚A{ãáæG¥ VHCñžÚ‚ܸ‡Z’¥9°ˆ+ª‹ÒÂyu3Yãž®66C¿ìË2†X1&1è0‡µWA2U‰U”…Сh†9À®6$—££:¤»af[ʤ£CK¬8y©&7æQlÎy;afì::ŒÆáæ~Ò1:¼â?Ø#ଚä,öb8Djjá‹j&œfØCYü.$£çwXïC÷s<4òL/( ±tùÕYßNw½KsŸg^ÒÃ?[ÁPZ絚t—ÇY7©sŠÍvÊk^iÚ¹rºYtwz)qGÆUÇ]‰mÔ BTb°Ç½n£º  à Xa.ƒãòÏ œ€Fƒ!Æ&tt•‚¡htWrjÒGÝŠ dùààH2îFSkr`Ìçé¦ÿ¦Á+~e6€@Î 5+Ž´2lŽ¢³T,* øÄj¢ ²PãÞâ3@XÎ#¢à8&‚¶ÄbƒäBΠà„Î" Æ#à‘Ôï¼áj4^Ä" Ž`¥Pü@ ÔG,¾j†€»‰j>á!f`c*@P]4¦@ò+dîàXAÉ„¸¦6øfÃ4 .¤cÞÎ@¦aÚåª~à"(†=0Á¾‰°„Æ=Šæ!:*P@Pjᆀ3®¥.+¢…à6(ÿZ!Æ›3>!¾!ëlÎ`¢`7i£¼áÿXÁ¾Å=za‡Ÿc’Fš—uëU¡šÑ-RøµöŽD/A»‰ö2”EkžçírùøJj‰w 'V•´OBµi—Fµ&¹DÃ^EGiOô›¾©'–­@Ãþ£bVÖ+ Ü‹0¤ÆÚÀi„-âåi‚a¨À„eÀÌaá6¡˜¨æ â°îÀ Jh¾à b¦6;Y " Xƒe¾ *|Ž&+ôàÒ±V´€®ÈIâ À hxˆBb@ ¬(…‡¡ ­~nbºj,æà¢¡ f-ØÃÀ ÿlè8& `62¡ Tÿ8Ect *@a8ƒB´ö=ŒBü  Ú@Ý\c  Ì  †3Ä ªàªvs¼A¾ látàÌgAb•±*óºÝ)vGŽ#UÔà@ï 1MæŒWlOg&dšp%`FB<ÓËC· V­ŠØÌUjhw¥X¼ âíÑ“kÚ;3I‹séÂU+}Û6s©±1Ä0u‰#XœCâ)+öUÍ‚aC™*‹G.Æ—4W#6Ç ¢84ª0Á%Ó3ɾ‰ørN0|>Ýñ¸ê“‰oMŠ›ûÒó®•U+ƒ¹ÌPeªÑÿªæ¹3-Ñ—G_îŒùôåÕ©WSKýºZìÎÔ@gÎ\;³lÚ«wÃF üöoÙªycÎí[um߯SënÎúönåÂ…³¦>½usà ·—É »;÷åÎm??­;üïàÒÓWý9mÜó;wozqÔÓÁ à T³ Ô\ÌYñt£Ó&‡O0wsñ„D0ñD,ñpÆA ÄôÏ=iƒnÏ8Ÿh¡Ã'áì´I'ÌÓÆáLØB1hR„„?NG+_ˆ¡L0«(¤,pµJ^Ò€1ÏžÅ1hpF„‰Ñ…#Ã0O&%ðá Ÿ”b'¬ÐÿÆ‹CÅO+:xSŒg\ñÅ;½„7ZâÇ'™õI0ÄáFšÁL°Ç#4´Ò MtsÆ!‡R0sƒÈ°ˆÑsLЃ)DÄÓgt±{ŒÏ*Á|2…#éu+?d9MŸ€áI%=½4@ÑDDÅȱ1?<3ÎG/íÑŠ j|´Ô+ó€a•„‰½PIÅLP BWÈòH&4G8R`È9 Ýd’k<Üx@…7Ê̄à ¸7CA¶€+4œ¡Ì*8¬Ò‰İãX0a³B.ò²tÇ'?D@IYn¬R4xÓ(£k¨ñŒ1o^1Ó7Q0óæPÁœ!ÿ„ÙÈQ‚1!Áá bC@Hü•gí—5 |wuŸiu×Zƒ¶uÖb‹†YÈ·zö¥WõeË—vyà‘ww×U×zm«½¶tm£Ý·yÅÝ7¸sp;WâéçvãßEw7à„ûçzÑw·mÿ—woÁ¥½päq÷x˼öÙË„!G<-LPAÛ(ã͇ËqÀ7 %& •ha¡ ILŽÅƒ —èÁKÎaÂT¬tð†1P‘оVÌ%9PËL±E/pä%á'ðE' ù\_TÖR˜Ì³EM=}cfÌáM«˜ÃtÀ D¼Éÿ#Åà„LP„žÜá#`p@ ,rLÀ&ÕCâ€X¢™(ຒQ*pÃ,ñ˜Æ7(±„ˆ å —Xö « ~"pÄ2nРBèF<æ 4aŽ0ņ"Ä+d‰ ‰‡rÑ >„iW8P ¾EfqèÂÞ´¨b¼‚Bxή`±Kxƒb[ -dÂB.)@’à(­ D¬ Лö†iaGœÉ ’ño0E'gøB§,Ò3c<ƒZ(KTe„G@ÃirIø ð*¦—°%¾w‡<âBpÅœÇlW)F6¦€0tÄ%sÿ D:М¥˜Øƒ #®aÆ ¸rs¹ùN>ÉñN}|S³}-œµ1Íg¬†™sŽ&œek';CÃ5ufíô ØÒy™¬mmf³':ßY v 4l¯9瀨±ÏÒäŸÒç: :ÐÒ¡dó'?_#ÎŒ24¡ -è<ó)›«…žýT§lÔY6Œ¦3¥Ò4(> tO‹Îs¦ò”gGÉц*4 f35ž Å£ ÓÀ3.1¡;lƒ ˆ1¦‘¯iÄÃ`hƒpP ìªàÃ#>1 u¢ pÐA"r€L¸Á~B p˜N|¡_®6ŒNàQ vHÿ8äðˆ hÀˆM↌q‰å 8 7²ä1è„ФŒ3Dc`DV‘ƒ)X!8ÀM¡8 SxúI<q’Å£Žƒ#¦AeL€”mȆR†’ MÄCEÊ'`w‰n0C yY…Á+D$ŸHÆ¢CÅã²X‚,®°“;Œƒ”ȸ.g^Ág0†)3Aƒq€Á ŸTÃ+^@‰3¼$Wè,Ú °|‚ÄP9æð„ˆœ ,ØBø¡L<7¬"8€lƒÛÛÔFiB‡:oŠ;4¤½Íêxzskcõ£yêÆ%ºo§Öά-êßXƒ@ °ÆŒlA •˜F7Î2 cEІ ¹=° ÓˆÔ”a€ðAZÕÐ. ôÏ bˆ%bW&WÞp •ÓvNXÂã}ÁPð @8ÿ€ rS `¤TnP‡PÀ Gp'+†²ÐºÂ.ÏàŽP0CàP áðð§Uð Ý€[@ó q « Ý0 íÐ+ó <—@Z Qpwè8ð Q½ İ.Ž'Q0°#(Pq0)xâ ”%|€,w@ ¹ ,pá° “R%9ðŠUp rD] Z †Û`]àFñp|@ U`Ÿð!Å0|žð ~ !»B ( ®°(™0GžàYР„4ÞwEÿÐN@ô v@Ð+G·˜P, E` VÐ ½Ðó&S` 9#™@C}p¯p%TÙP ° •pjpA®ð{ÀEeÑ ”€ Æ€™{ àÝ@ ~ ‘˜ œ5ò õ?j ɯÀ ™°›rÓ@bð ~ÀP Þp{p¦ Q@B³ °\ êð b0öÀ!” 90sÐ9&s , G Ý@P#5ƒ9?xiþq8—Æ6§q5èÄ€/PµPÿT $UQ´PNå6—1šåNc3Pøÿ„N¢Sa3Q"åš ySæä€¦¡O hû„š¦PøN´ù5INʹOIœÃ¹PÉÉO+ÅNÿÄQשšÙ)œÛiNµQR Qèt:Ÿ± ð¿µÒQP s¶Á@Ê <Ñ,pÓ  …Ô$E@ ñƒKí£Gà#ôC@wãÀp®àxrD™¯)¤FBÀ ñÐ'çÒ+ƒ òc! ÄŒÅÐ {gÒò Vð g qí2`@ ÿRJÅ Zp8ö<Å` Žð$O².Ý`P4Ñ ÁàuùA‰Q?Ð ÿð‹%P fp G`⥥ð ŸÐ àr¥í‚¦m`g€Dwp[ñ`«ÞÐú¥lÀ C_ö˜ sÐ Ÿ@Oé$ã°c`Gg€3òb@gÐ0sàG@°BE>a®pG°8kpb©Ê pÐà SB%4%` €‘GtБWÀ­º L¶€£LqO° `À M€G@VPÁHtZ À¬S}ð’¯ÀjÀ2”&ŸPÞPQ¢$9Àw· ‡PŠ ¯` ŸÊGÐC@€R³™"EO¤i7à¤6ÿ3°˜95rƒjø9³&„­&¸Vƒ â:rC7xhH9<8­ö±šN65{ƒžž–±¥Öq#™µFk*ËMôa6ðSÊ„³8Vp b` Ó =& mPÊP g4P á0ÊñmÐ1Ÿ0ãPÀ âmH¹]#›ð @Poޱ ìR @FTO!Uà¤Mòw  À Ms$ãðB° #8 +@µ`Gà8qù2)`¢‚€e[À GÁà]p+£!8ÐÛð 8€S(Å@TH‡gÿP° % ².w€G+ì©ñ0OWµŽqVæ:#ŽwB%~¯D,±(Ù 4Ð_À©ãÐý(Go²*ŸÐ —0bÔ.{àÒ€D¹Å@ gũŀDp@ -°pÔjÄð ¯ Þ/Ýà~×· p°°Gð À4¹"jP+yEó E0Eà p k0*~ð&Ñ(wÉ Æ`r ™R à5( ‘CªRMà Ùr0@° s@yitL!}°Ét‡ŒÁ©«€{Ð[G@ p€[sÈ9¸†ÅùR %›ñô™Úis#i¨ÿ²£ã²†i¹ÆŽÆØ)[:"kc8¶¡Åg“™¥Ci–V8!¸±’Æiƒ9n,kAˆhØÔÆDè°\\9'ˆ²~ 7ª1žVC ðàá°o]à:P¸E$Ép`n€+âÿ!à Ê`µPð{7R¡ÓдU{#Ÿ)x&×ë^xâ3 I:!t#‡QE7,×È©|0TÔ0+Ñ›¿GrÛ3¼24±(L‘:t0R nÍ1s}D‰Ñ.UÎáÀ¥nP1yQ2ër\Jú&úµ.Ä$ˆNH7s0O™[:ñ”Åÿ`«pµIwÎyÑݰ*v¯7©áDiÂÙ¼. aOYÒ°¥j12QIpÞ°¡,/“4 mÐ*¹x‡ñiÒ³~ ¬p[ðÑ«sCGÀ M œ°€!‡¹RÏ·{Âp÷ `N#áð&ÁÐÝ °Ó}Z%èœ ŸPªÐ+ð MÀÂÑgqüM}³=˜8#X9±ÁO'%Qå›…S%PbœÈ™ô$îÄšãD× ø›3ؾ9Å;Ì©PÉù¯æ´P6%ØPü5¥›ƒýš:õ€‹­×•Ø£aù”×Ôéšx]×…š{ýQ#ÕœðÿTåI 3ðöiZ+![ð %3Ï` 4€‹rF“+»)s…dxNà NÐB%Ê›@ÐÁ¿" r!põ 2)¢,Ì“ T+3dµà$ÇÃÝxr#g¿õÌ“ôã;Ýݽg@Ì9Þ .Ħ¤+r Á ÃPKÿQµì¢!j˜à ` Áà] ;Ý Þ0åk0IÓ³ÃrÆŠõ ôÊ»Òáð:á`3Ü8à &ð 9pP$3+¢¿ÅPEÑO£Ä9%R[#9‘cV\雓5gMÆ[²v6œþ8ÙÔMƒÆ2[È–hœ^7‡i­¾ê´fƒc³`ü7œ6ƒ©n9˜ÇÖq™F²¿N™fœÆX Àka°È©æµ+ ²}!AÝg±XÐnN U@…×fçV;)V›Ê€í-àÍlµV[çàÝ߭ʤü#âî­¬[}!ºcçu^çFNÊìÞ$íÿÞÈ¿\̰ÂÞ®¬[©|ÈØÈíŬð<¡[T[% ^ÑÏÞÀLµñ]ðïñïñ!òURð-ò'_Ñ$òdP dÀîƒëò¿ñÞ]µO¥ªÒˆP\ _Ì}$?-Ù°lÒP KŒ½[Ëæà Ù­[ ®ºlpÀ Bá$ ‘ôzqrÞÒ mèðìnÌìR%ÒpM°Ó9På3ü&ÅP”^jYFð™5ÈÒáÄ_CQð4ÙoÝP,%NšÎ÷˜ù²r­öéÔ«{ŸöM›öíǨ‰ G-Ü6îݰËÐZ­x6ôÜÏc'ÞºÚlçÔ½oÆÍÚywìÒS×F?|yñئ“Ïžîž½òó´y?n]ÿûÄÚYk¯µèŽ+8׳Ž@ùSÌšj–¹ Â'èh‚$*!žbâ‰g*y„”!q(¨âiÁx‚iCã9À eZ˜±…¼Úª«`â ‡GoT©+7¼ê*Ç[h+½ kÿ«­àB.® ,²Ç°ªD‘H¸îh¡B‚Z"¬+¹ZhJ®ºÊÄ-‹¶ºÈ­ zóMäÄHÌ 6ió"=- §#·**Ȧ …S! Š¡Üj¢Aùr #Ú¨„•`àúª#‡Š¹CƇ€Â¡š¨ §+îÓ!e$ õDr”¡®þŠ ¤i‘iÂâ5(ˆþ*b88Iª‰x¸q àšÓ©N`…È#LØñ޾LÜŽ"þšŽ#*­Œ'»oºùf³,²ÅÖU׳vÙÍ,±xÃÕlÝpßÝì³ÏDÛw4Óâå_ÈDM^}ó,aÏ [,a‚ fØß†%‹øÞÉ(³ ÿ3}í­³„V÷±x Η^6mcŒ f¹à~ïÝ÷c˜Göä~ÿ}Pµe¸B¢N0ù„nŠéªN6ÁjÙÑ©§º²ñÆ7@qÇmÑ«Õ̺­¶f SIslaœ²·æÓ3Ez:ª-Ç9RG­ÝlKê·L¡ºjóP-×>3M)Áâ›ÍC “Î=ùÌñƒl G"ÉçL|% ú:¨ÏAóÌ“ï8ñD4ò š#žLðv㤻hƒi‚uÛ/^Wá4„"j‚Ž(  nŽ8¢‰<_å +ˆÀ+"0 ‡„úĉmüPÃÚ#âʯ†âá#˜œŒcã•ísÿËíã" ‚餀n*#NM´ÉVV,f›l¶èO14È ¶ß¨?|yx“@üT'3Šy`g.#Áyù+c ÉØÄ>V™A0ƒ {`Í(¶˜y­L‚é¡'ØÁƒU°fêâ ÌL–®ÚìctØÊê•C®ìbëÌU3|Ñ,„/5 e<á <úÄ%r°…Jt¡ã¸B8Á‡˜ÔB.Á Q8µ#dýèng”Øp„$­ñˆF7"ƒCæÖ³eâEEºf0‚ñXzÊ8à¦,EH²²ÑçÄ#fÁ)rq’Ò@ ¸ÉéOãˆ@2ùHšU7V°ÎݵañJ_ÆÐ8a!›8BBÖ{!,b?lØÃ fÑ“i]ÿ‘OnXšêÀG4ªYà2°sÀÅGA *PxÎS®ëTç='íÍsèŸÍ$§@<PI Èœþ1°×i RUÔ˜®T§%ýÍœ R%šF¥¹1àHûÿ§Äú,õ§]*zÕž¦Ç?;mO¹äu9ñÁàÆâÑOÔuE¢*€®:A"qIPCR"9t…ñ1*h[Ô–„)¹Ä+m‰[ÐO€‘fr’_÷È¥2m‰dÔB µÄ¹©´q;Ü—ò”„ˆiV[BhC וbŒÃ¶w EÒÉÛéQ·,5ûÆ·9„ãtÀT\ ŠAæÂ­’éÈã6ÇVº˜›[EvåȬx8!¬˜@L¶17°*tQAh0p`ÇJP"• †ŠñLŽü…9s€ÐƒœhÃhC¢à|Â!wHS&& ¿¶@Å @ÀIŽ ‡ÿxï)NiÈ¥Ô©#Ä£®à„±pNù2Û|È|'° Öø€ôqÌvxQ™ÕK„úÙX]f²‹1ek]¡ kd~é`* òÙ…±”…Œc$ Í7öB~¹]GÖá Eöþ+b” %fc»,†)̘¿¬B>' ´ E>p*´áQN°ÖVØŽ´¤i-šQ!¡FÈeâ Ú¥¶¦ 2­!N›¦[&¸¬¢QYƒÊ–"=ó…#–Jµ#éiFyz±¤œ›Ô¤w®V({£Ýå°Û§e=Ô“cÉíöBèŠIÖó”@.ç'·|z#w"H.%7_–ÿ˜¾sªH8æP¦Màé/Ú%ƒÕàÁaÆCˆ¢0‰„Þ¡m€Ã r`?¬Xë!qÈ*:Á‰ÝÀ •ðCq­µ ¤“ÀkC9­õ8¿HžñÈ"„#lmY–qý¹à\3ÞHŠõæðì;€Óœ‚Š2¦.Š:y‚[nªMç#Õ±2?IEÙF/±µ"¬Ê «q˜3ê.š) çW®¨˜lsžO™è2¦XI1‹ù`ãáŽMS²¥ã<€3§áFcd+kÔê:”²5J²R½2Ëhë©ÂnÀU¨À‚[òÖG¬Á+šQ’.•µÅŽRƒÒ_U½G %Œÿ$"H§;ò¤†`ºH¨ŠÇW˜4øF•:dX0¨¿ù\º m½â•$_úW º.iä 0'Ù=ŽÙ›³¥VwzY ¥ºÅ=+‘(Ý2{xgª´æ` ”b‡{s¹ý²]ƒDᙈB'½Y¦ ”N$gxH<:Ñcœ˜@Uߢ¡ùæàrp€*p¨bÈÓðFpƒi\áBQñ†Øç—ìVbÝ•hNØbP†¾€·§p?h ¸8Xo€ŠëÑe0° ˆ°Æx1+Kº£2 ¡â *‹!ñXçø˜)ò(ƒñÐöPRÁ1«â(åŽä ÿ›zA‘jª§ ÊÂûx¹øP+Þ8”úAþHÂþœ")&Bê©ý+ÒL”RA"´Aà(—à÷0bªÐ( i¢Ã à¶-± †  è#eKC¯#‰7ïZ‘xX…Èã£Kù,T),€2¼kµˆ ¾ò#¯x¸ŸH´5µ1E15œÓ2­XR›/ k‰œkÁ5 4ˆÚSŽx ^{5Y«½ƒˆ®N¢ézžcë%G2—È®GÛä[bc„RÀRi‚6°6^“ 8X (VÀJ˜Y{’ây ?€ƒ@„Jp€S{”ÿ¡Èu8‚&€Dˆìº cN)†`¸&mžòz’J[‘mX•‰cˆ€mP‡¨x£ÅÈ)†où” —ÿÉ)“2CÖø9‚I‡± ¯£±Ÿ»™›#" º(® –™2zÁ š#ɺ1 »3¹!33Û2›QÉ€™²—*³ÈŠ !;³Ÿ4¹“äÀ¤»¹…1›¼—³£…žQís€oÐtœG9X…3P1Ѐm» ¹¨0¬ {J?Ú‘IÄ#yJ®hËÍ’$aâ4¨h­ÑJ[6ÿãËńؠ˜Ì/é ÑÕʈMøŠÑã5áCœˆ(¥¼”“¾ Mé‹„xšd¥B!¤ZàXñ=p ¹„‚“;pYðN1†»ƒJ¨… è„Èû ÁQ¯b0†ðW0ÈJ Iá¶lX¬¤µgê!P8?¨ @AŒÅ ¨…KØ‘bè8H>øN90ž_‰"1„ }¡¨Š ÁÌ@(´Á–Ú*siÁë(!¢(ë:c—›Ä($ûHº¨¢½±z ê Â!Ë!0{:R3%"¨J‰ÑP 庠ìÉ;¢ì9”\—J³ªzjXÿkx¢Í @bˆ»(€(€6¸‰<0rƒ¼Q‰§\‘¨0zK £Èke` ‘£•Ð¥–ˆ¼ÔÁ‘Åë”^!Èz ‡@¨%í“M@(×’#‘‰þZ-ÏA¨¨è‘âò‘sJ¼MÚ NÉž½X•Vâ·pˆ=Zê• BIM³Ì°¨e¨%^[~‹E`R–®YB1ˆ|´Å{&Aìaª…;ÈŠ®HMϹ’ €F")± pi@80Š&hR‰ è¾#(/Cã Øo@„NÄMñ‹¿€V°Ç"àÕ>Ñ;8‹6ðoÕx›UV˜†X;±o<‚¥0Ï&Ñ?Dè‚ÿÜ €ï\ƒm¸ÏcÓ9X·¼ìˆêÐÀ'³H)²¥»²:3Ë ª#<+˜#)•bª‡<)ѰÂAQØÑŽ«jØšâ–“ ßðA°¢’XöðB+û؈}šØ¥RB‚Ū~}X— )©‘5Ù˜ê)«Bª€u*¯’ƒí…P˜ŠÙÛxj¸ðR1Ð>1¨Ïb¶#Ú?³’`pZ¹Ó£2õC<¬…iX?6yÚÕbpƒM˜öqZi ¡xTK|J<ÁÃ&ÝT9´cL¼; Ñ“»ÄC¨µˆM™¸Uh0k‹ݾM°#aR#@Š8šU ƒùZ•N0%ÿ~S/²ÅÈŠ à†òU[Œ+EN;‘GSÕœ¹£Äb Ä›ÜÇ醱ÒA¬¥C鈨e‘ÖÄZ`¶¾ ‹§€·`(¯8Bͼ¯Ä”ðÀ‚ì†Zè† […n@„Oèy¤x(‚m°9ðƒ3ÄyĤ¨·”XDè0¸È›ØoXePƒbXu}Ç;à†íí‚m°Ô"(i¨X!@•¸bÈÖnˆ€5˜7Ð[oˆ‡mˆ‡&؉ k^¨ØnàƒDÓxø‡ «ŠEPL™3›2º²Ù H™ÔЊ±×Ý –<²²z: "³•1ÚÉ-!ò9ÿ ²"ÓW{M!’D3RÐ5#ÉÖ—E3~:œÓ1L³Ÿm€™3*Õ¢#è‚/(‚Èk8 ø°ÃÙªY9€¡07¨'˜<œÒÈë['MÄxË¥ÆzSÉ<•8X7¨Æ’ˆËªÓ^áŠÛÁM‡hG)‚`$Ù9 _;‡¨~µ$Àãü„DO~Š ÙœÈ#Àì"@¡Ð]iÒ]9*¸Ws ƒø‹fÝË®Û ùѨø„[㙯Qu\€ s¯Äx ÅÍåA´ Üàb`d4åäbð†&ˆ€-+¸¿‰Ö€¶Ø*x…6àÊÿcäZÞuD¨€¢°#O¼J8ÈŏlŸn¸¿oñÓ]o€ƒøóƒmÐÖ–Ø+Œ;  à†m†W@„mh98y+±¿è†t¾O !’#—ŸŒøh¤z*-*Ÿ üH¬ÓèâÈϰ9£ã1•lÐ’ñ¨°#»%£¹zuɤ$Jɨ:¢Þ¹Œl!/sºæ²­(êRâzÅɹ "& ƒxØ>¢¥C˜‰æn 1¸„'’]±¸š9H‹ƒÚ«=€¹“N°Ë·ZnøØˢ縎ßôÒn脦E¨OèDÎ1æëµÍËM`»Òå”ÿnàëUAS؃Nëp(/¶£«N°‰Mè„3èëKÔnˆlË:fŠŒP]¢ù9 Dl 48Óî„Nè·ÞNp1 íM)ÀæëãÜžUÀfÜw+¹æ}û‹ É3ÙnnØ¡™€+˜á鄸Á¾ÚeŸ=ø„b1ÛÑíN(•0ߤ1Oy‰½Ú‹Ky"†¸"(‚a€1ˆÒn¸âòeNiȃå10C‡L‚؆(…ß88 «#Xƒ(X Û‚£¦9Ø"@5(o”ƒ hƒ(‚åe…¸hÈ Ð^iàXÈJˆ‚0ßb†Kø‚ÿð†@¨# è8p€ú¾50€vèÆ]^8è(€… ˜ƒ#Žy16ÓТ”!‘‰É¦—$4Ø‘ŽH'ÜÈmŽé›:ÙòPÙJ9©êrÓÂ…±ƒÂ‘©'—B/WB.÷©4—0ª-4+=×s4×Aó A8ßÁïÈ*ãX0O+,dXŽÛÀQ¦ÔÑÈ£ëPƒ&Ⱦxø‚+˜‡"‚y D(ý‚G  ˆ9˜9ð-nƒ8€ƒ ÎG¸„J‰Ž(*Ѐq„Ý X-øD˜d  ð†¼™n*0 è¤hbp0€†2*†/è`6ÿTA„yøõôÓbÐ!˜‡€ÓUÈ*p€XOA\  ‚Jظ†ø*8÷°°M؆C0€y8€\ßÐ ‘8§" €…|.Ÿ"ЃGƒU‘/ep€ðcÙè! .)1?ðbÐt‹@öGØæ(š¨«‘iˆ¸c˜/kY8¸ÐÝAƒgèu«Œ‡9¨„8pv´Î0Èù¥'S‚6ø‹†€[ !‚®˜+ x;¨„`(€eÚG ‡Kp÷¬wކJx„O8jr€dPƒ€;‹"†CX*@žmFiø†.@Q0§ÿJàçoΰ§lÀ8`èJP8X|ò†ð„qÏ& 舂€ó¿ˆ‚[·ƒôu‚yPƒø8¨X·K¸Øy —qa©£ª*+dj­ã²²ó!x‘É’¼a¥6J”v²•Fé%³²þÆÉÐx21»öáí¯P&æ(•É9ê1ã/º.ciŒ¤:—Á׎)»«#Áð‡!'¦†0X†Sá‘6Ѐ.àƒG`@€(æ­M¥&[ÂÝ /X¸UÖ„ ¦lâ´-­* ¦°˜„#Ŧ݉—ðJ•lÅŠÅSv‡5(ÃÅCy§Š±b*cNˆ0¯S±;™î„+ö޲bnBÿÞéF̦;N۪U6Wu‹Ñ„ç„U!´ëÄÍÍ‘ň9ó ¨ÈNÑâq+6!\¸UEâpãygÂn­¼u:Slß`Zîtë5˜ÝVÜÎ|Š×Í ËKÜ>uí¹'Ùã˜Áºq¹Øç;›¶ñQ‹pB¼Nä”8© Ç„`œ»ÕZ¥ò§Jbp@íY,"µÅÆy5ÒªÓª9^ã¡Â rÈæ%tÙ|‚²xê­:ÃúLk Á gB/›¬‚½ª:!“†NsÊöÜtéQ1ñ«Ü¬ñ‰ÆL3Uº±@Å*›”UÖ(¨1 cŒÅ3EAZ0NIƒB<«d"RR|8ÐCÿLñÄãÆ*‡4± i*ÕÒ„Ó8aUF8‡7„ÅsŇLã 19U†‘Õ”(F–ä‘O6IM5´TCMMRY•S"I‹‘^jÙä2]V3¥”^:‰¤šL6 ¥“l¾Éäši>Y¥šR¶ù¦mò‰gœiú¹f›xÖid G*(y"ª§”{æIh£…6 (’’Zê&›PÊ § eàI¨¤ ÆIj¥vú(Ÿ|:ª¢tºjj PC͘Õ,CkW%Q<µl¢L µÅC@ áÌ…¬BrxSE< -Óxó™L#†p UABÆ@‘C&Ìá†28°‚FÝ,äUÒlC›ÿUµÑK1ˆ¢d:ðÊ`*Ó 3ÛlÃ2nSBÏxcŒbs•ðÍ#¬Èá”\ÈèÁ Ý|¶ œtÁ݃ÃL'=‰¤Œß¼ÐÅ0ÖÉ% ³F ^uõ 'j(s†ËÄÓ‹GìUS´ÃG€(&5Ï$ýI8ÝdC&¬´æÔ*ÛÀ"D'‰ô‰)B˜BÀ4Ç#Ç´‘o0 «¡AMȵ l@Ñ pD&’:ß|áRÅÁ”ðH; Œý_0bxÅ!pØ4ÁpT†-ƈ´J'4@F%¤@߀ы7Ýtur/xbm4#xeU'‡`’Lÿ0Á'pı yC§#ßøÒÜïŸèÇ~°J-g$P…,º˜ÕŸ!‹-j” Ç`8…-0w"²,àÁ*žÄŒ%­8ÛQÝ@3,”°&8À’‘¬±¤;ɉQ:U©8Õ(;U)RrŠ ­Â&.]MËS™6ˆ+$UJÔ! Ô€*e L$à¬ÄÄBZM‰€T!™fÈÁj … T ˜BxÚp‡8¼RGXCöPDᕸÄ%#ñ‰)¬+hÅ3uéK 4!–„x‚1‰1ü`M¨Ä3ê„9bµ¸Æ2IJah-¤ô„+¬"0¹Bÿ‚¢,Ä n0VH‚!‡iÁ?€àÈ lá]HÆB¦A€xá_ BJâ1"ÀÂ?˜†2SŒdÀâó(Í% P OT¢”V¹C;¢poµ  D+Úñä±5`Ö „±â>øFŲŠg@]`Ww±€.0’/(™¤ ,(£B¨›p€;£˜˜Â0ª7`"—X€H¸3)¬`j&0×@5Cd»ƒhð‚/p*«ø Vœ¨‡xA*Ñ” äÞhÇ'ÆÁ˜Z¨¡ºp0f 5¬BªJ<¼‘ i¬ráÀc+0¡ÿ0(æ«XC2X! 8|¨”+àD¾!Z…¸D.jÓ !PBC2„8À—Ì£LQh\Â+=É„+VAŽ"te%mXÁ6–“GÏuA•XAmP²Äã¬ðÊ%+q1Ì£³,FîŒÔE§ÆxÀ€GÎáX‚-¦Á¨d@,ˆÆXïPi|Â9xÎ'¢PNƒñäÎÐ[0§*R“¶”¥&ÑTwºÔnˤ© ²ªNŠ•Ÿ‚Üâ×·¨Š’žÜfÊP»••nWE¨?1·P¼•¡à´)æfÊQlÕxÕd^é¶jM×u“ŸbUÞå&ÿw½O’/{±ËÝMÉ7¼Ô°—Aðjw8×6Œ"Lã-HÑ6€¢{cqˆB<Y„`T`z8‚Bžu…i¬ár!@w"@=ä) †ª ™†hM@Sº“G1Ðk©ÍºÑ|B7Áè†2¸±…- I¬¸ÂOóh“ ‰AÜøntc £k Œb€™ÕrGŽàÆg¬S˜`ÀN&€lÑG™C PÃ#rZŒnÌG˜Ã'‚×O\a'³ 7Ä >t4"ïƒ ØG™ tB °8ê6‡4£ èÄ4jÁ˜n  α 8‹  ÎñÿÜ`ƒ1â°‡óÅ„qÅ[7?-LÙ*'™'¦ð!7ùÚl¨bgp+jŒƒ5L ±ÝG"3‡0¬A5®X—Ð1¼1ŰÄú}TmàçPÒ†*TeHY* (>Á晴„eÚÝÄÎ ö¥“r?¾(–ç×¹¨*¤"ˆÀJ°LR o[(ï¾8?oϘ]›ÿQÚíÔž>õÜó:pSì¹sKõñäÂéº:Ç9Ó…›óœó¹xjÿÀ2ÂPö+F%ÝÙŠŠ"¸¡Ã áwÉŠ¡br!nçÆ3Žp‡ ‡¤Ûðwê)™KaH|™Mhé”Úœ!—Øaöò8SÔ{>y<Ã+–¼Åt•0gPò‰öÄcuûçX’LÔ$|€I<ÆáöxÄ¡4ñÀA>ÑMÈ…5WÀ70A‰ÜëðÆ7D‚,ÏÎaÌ]ÑÐA t Ñ t¹ÿ\{Ýœ§0!®JÖ1Ýtq]†6×wMèÑ Ýœ@]Í)x W•è‡z]ˆ(ŒV }](«´×ZÝ¡(ν܌w]§h(ˆÝÖWwÑ }@8îÁ ÂgèÝ´8ÁR 0D½8@.¬@±,ÄVrÂ3øA\R&C |Átà ü ˜÷ÜÁ@jUa<ÂF¶Ï÷øh²Æ[áôÄÁÌAÜŒÇI Ä/ Xfa1tˆtFA…<ÂÿÆBÃ%8ÀHN4(§°h/ºb5rÊÁ¢Y£r­ o ®Ž6©`Š!Ö¨zYhsÅ Š«¼Éu)~-ŠÔ!n…F ÌEÊŠ  WÔ-âáÚ­á~ ¦irÍ M×z©ÊÑÁÊœ4î|}À$Ò €é‘€7¬À%˜S H@AèA@0LCܹtA%<Ë‚ñʨÁÀÁgï¸BxkxR0´H°¤l1Aô[1…GåìÁgÔ†C%ìxÒ° @Æ›Ž£ºØ‡‚MÍD»T²ìˆÂ¶e¥\xË8ÆÄC¾˜mŸ!D8à«bjéñœÿL0áà7è`¯nBdXì€A¬‚1<Ü÷¨Hs@ÂÄ\LÀœÄ ¢ažmÃ<ŒY~Ï4lÛ8ìEÂHÆÕ´Æ8TÀ8tBQ:ëœÁ&á¾y’NÁÉ”EJŠÄ Y³5˜'}«K]ÍœÁvÜA- F7˜Á'8HÅ}6‰A ¬‘èÚY…ÇŸÙld»x’vÂ'p [óBè©xìÁOSW|Ù\ÅîÍA²‚k¦š°`T„È84Å‹m+É$Ü ™F'°ÆSàP’P‹þ\‘.ÏU]ØéÐMQ=¨ Ñ­ÜŠ5:èEcÊ­1jÿP ‘\ÞÊbí21Wc1"éСPQã.ó"4ײ2ÚP+’‰‘.Ñ36âñí.Ÿ‘/ÓP1û-=ãáâ ÍÊ6OÑ(r× Õ‘5ìJJÔ’á@-´ „ìA¤QA-H]ºAÅÔL¨H0¨–D€ñj„YlH•…l Ø€YNgo…ÐÅ ³FFïEVêüuX² ‹‚ ê^ðEY,X<0H8lŸ8zÒI0H ´À Tà4²tôŒÃ8ËóÁÚ›ö_<žLÇÄ Äe‘‹x”Æ\|O0½ðL/JÈEuT²`”YÖÞ,ys˜8f¡g/_xqíò¥ÂÿÙÃÄH‰N…dgḈ•±FO8…D¤UJ>+Úæß€ GÂÃÍu…ȱ'ZÏ DÛž­6í…|TF­,!±å ‹YìÅôj) GQá`ÏF…n@Ňàã)C§Ô-6‚³p¥WŽzœ¢Ê-nŽ6ËýÖ‰2¨”îàÚ6‡æ¨Ô àÎväöVu Êv7y9èN.éfWà®o%â}}è„~—lWèp5P嚨ŒzÜÌÕÑÝ €€8šÀ#¬Å# H'¬€°À$fÐ^8´À„Ä\ÌnÌF¾òëéÝK‡¯þú}üÿøÇ«Î?úô«>÷ðó/Ál/>ðôKO»½[¯BÛ›N¿ DÐÁ Ͼÿàón¿ !Ü/¹åhù`>k®h,‡-*9¢‹98ƒ.¤i£‹ Ü&˜â©H7”y¨…ú*ž`ÚàI"5ª2œ%ïh€‡ ©¤†4úr¥£ÜòèKˆþòˆ5Ù Ò)µô*ˆ,—ú©Î¥’²I¶¥Übɦbîüé(žê4)';ãºh.(K³¥ª^zê4Gå,Œ¬"ºëŠ©¦Bl΂ðºªK¼ÆRôª©ž‚)§;P*f…‚iŒ³¯Š™&ŠJ>AÌ,³º‚CN¦Šç“§Š‘© 5ò .ÿ³¢p¥ˆ»b"‹Ñ5íÄÓpƹò¨UíÌÎ0+æ*P¦(Ê2‰gŽ;$¨@¦ Ô+Úãþ.@ðœ[F;Z›Žßçü®…£Å:~¿£Îº„5ìo¾û&´Wbûû.<‡ œø»ñî•ã„!n8?ôì³ø¿ŒŽ÷âóqá•'Ž÷ㆽ;paM&Àý«PD™%vÙÄK>pb Yüàƒ+܈ç€/ºêd‹„ÒA·O餶™À”²7˜T&즃I2…¶,R£‡Žò¨È-j©¡lÃ!ƒë”B:ô¦†ÈÀÖï¸Í¤êÍ7ãD‹pœ²´Š(¸ªm­XØÒüh%;õüs¦ÿC}4“´>º<¦JWíl«—^ÚéЯUË0¤] .Ö¹%Ý.• •ج®:¬³¿îh8¸!•²Åâiã‹l&ˆq“]•9@0€LÞWÁ›a ‡TÉZ¥ˆG Ã0sŸúk-5«-ÒK:Gïí b6yüo*Y›Op8-Ìj\›ŒjœS4ÇaØéP¼Î#žˆH=FXöœ‚ ì`ÚYÆp.@åDÐ9Ð)˜-ˆÁ >p`–Âj\‚”àr0ˆáD‚Ò‰ MX þ«ƒÍ¡`m¨Â ñƒÔø –Ä€¡‚lb ŸÈ NñˆNÔaÀN˜ÄÿÚ‹5Ô ûµÂ j‡Z4bsf˜Â&®P`.N¢c°0, J¨D€ ‡K£«Ø+¼ L`Ê€RÂ1¤x¸!‘-[A‘Äi ’%¯”I¡P…u$ÉI€Ó©Œ„P_¢›EP¹'ýÉ|[éR_²„9Ž„ã]i¢SV“K@a3Låçe†Å5€Éi ­²XFQ‘ªÔ_в(§ f"EA é¤ÙÑn.‘B•0¡¹À˜ÎSÛ¸ÄNÃ+ƒP¦˜ Â]âÑUÁdˆPC0†×ÄÃÞ(‚c'D¬èÌKF×&Ö‰Ä#¤™Û²5§qPÿ1ÅÈ„«øP€`x*«ˆÕ‚‘ÑüA)&šWy8Æ-ÌfïšÆÌ“2¡yŒa:C …t3±Ô^ì9|N„Àëè”bééØÏX&¡˜20¦)s‰,´T™(Bæ9j„HT-pf÷* Ta:4¡*Õ€óAQSͳÒä,£ÃrštáÛÆ6Nc£màÀ\*Û’ éF‚IñÒQ’ ¶‡()L)1ÔEèd&m™DM´%ßèôÉSp#é‹jv¢&Õ¤†²)E›Ž<Ž˜ IJUÒÚÀš§ŒNSŒh¡Ÿè†âq >H@ (ÁŒ´¤² éÎq‰$'µxŒcI&ɤäöwO. "hê”uS¢‘¾!z¢œ¶¬[^RÎI´K©I™hàXöµ? m]k'@%¹\ éM’'O_—[ÞÒ}í ïL%ä4P²7’4'{ÿ^Ïd#A@z©dî×ÓÅvY2O‘' EÓ¨D%Ö ¸¿„éÊD\q„œ!VÍýÖF³‘ðaX{PŠÑ4àpVô1ÞP2ràÿ iT"Áƒ‰‚·DH˜‹1‚Âςބ$® Šà ºaÖ Fø@ÍüàŠAŠ  d¢ø:¡i‘Ôh^¶¨††ØhD¶cÅLæÇR>z쥘̬\ â^êÃXp¬’ ©xÌB’ìg®ÌC€ ⌬ˆæ§jAxìËj¦ {ÐÆne‚Œ¥ˆÇްÑêCÈŽÊ¢Šd…ôå­©t ”ø€½‚¡ J  Ú I}øŽ ‰IîÐ÷¢H0å!HŠ$4"–êd[6¢ñÀDm,‚Mv #úf$ëN*Knv$jB)†je*Rc,ef¦Dˆ°«b&«VÒ©šj@¦l¦`¦ËðDîÃn†ˆ$­ dtŠB~ ªhÊg|æ Æ¥€Æ©Š†aF&¦ÿ~ŠÆÎ£ÂìÊL›Ô  j!¶ ݦát .!Ü#þJÀàk bl nŽ"’²…ðÆÁ𨂔Lm#úæ‘lE­ìF²$ÇÖ"k':0'qp>§.CiõFÑ3N‘(,")J¯PJUjU:"0‹B™£6 Dî㤪 «F²A¹ê%½éDÅ #†˜èåXˆ‡BˆŒ”È‹6D»éN°Ä> Iô…t„4Ò…zèŒÀçTNDU0ƒv.FGˆårã¤ê´•.†PðCy”#‰Èê4²B/t䢨‹h¨Ä4J—È:–A_Ü ®’$   žJ¼ ü@Œ¡H¢°€À iHøJ M¤EKÖæJèÆ.'²oI↡ð´­²è„qHÑô<'äæ0b/ô”b5(krÄBÔf«N6mw, ò ¥»!’+t®éHƒ4<ÕSÿ#Þ6u,2EZ®‰0Hj¾åTAšL§*´Ö”kH£Sâaà 6ª+%âÁV@¤áÛ cxü@WWÀ]ºâÚ¢XÀü æ1£2”ar`ŽÀØ-Ú`\A[›æë¼Z `¢ø€¶áŽ ¤ä¯ä€22£´OVÀ `ä€1(cÏ*€e: DµnJaJBh0ÊN’)w’¦@$ H¨€R$¤¨4D¨§t*$]R(‘ŠªŽF$˪grj'c†&e’ÊŽ2 — Ë *OæbĪcÛcÈ$@Dfen¨Ø€ ub£ýð)¶bÿމKéÐìLO)I.‡m±NKâº\oMì¦JFËòØä‘F‚ :‚nNÑ!©#´ ->‹Pÿ„´0EØHi˜s.ŠQC¯š(¥¢ ÓѵÔòVQ"JMRUÉ"sÂá èbÑ ¶!¶ä½ÆÕbTÑT[S7ï%ö0Sd£|®âÕT¢XÒ¤Àtþà`dbLD‡¸Õ èK/vã Ž ¤a~<%'æ æ " àüà^A6ï`äÀÖ€¦ÁäÀ2 Ž@à^Ô¯ Ú ®¨õÚ ¦A¼¡!·a ÌK(ã9YƒºÂSf"jAàˆ^‚êÃdôãÿ|(꘴Gs¬µÈbLevÌ ÿ;R¬Â§öc&+¶€œŒeB¤¥jÉTŒA #ØÃò£e²,ð ئnPKRƒø)Ϫ¬hŒ8þeB¨Ô`–†!>Ê€ ¦S›ø¶Ét˜G°!šÆL'€‘¦¹Ò2X”«!6a¢6êd“,Ók«I(är2¡0C‘ÎÆq)ËÞ¸«s¢Pš"5hc-\Ë&.ªX(ƒ(Îeõq$†¥ÖÅ¢Ðx6¡H*ЉbtÃ.Y‹SV38÷/Ã'6áh£šnÓQ¶ç z©À挷g°,¢TílÆaΠ¹bK àfÿ˜3jPb+âg{†b7ä)K£ôO-(ƒ122€`š¼¡'(ÎàüÀ\›`ÒPÔ%²!ž“â/4”¡?=ÙÈ‘"šÉq¾Ú@Z¥a Ì•Ýp9X {s€ †wäÀ§"XAŽ€œ7ô©Š9Ú@$a“‚±ê'Fgmð‡BîÄœ®èxÿ™BZì–´~«.‚lÎé4Rã†æ¨è`ö‹¶.#?nè–袙´‡RG!š`N®Jˆ£SçLΤ±èF¿Î…šNìÀŽƒ|Î_Ì΢3R¢7Ì>Æ‚¢# ¶$I,° øH›â¡p |ãÿÊfkV ºÁnhc$‚a¸aöîIÆaΠ‡ã `" ¬¯dŠA >a‚¡¢Ø× ¹âçºa4Ü€¹ZÀ¬u¢Ž­x>á4h£ö ÚË7Ü´õ¸!> p þ)+Õ::a‚‡­‹¤Æ¡ ja&Ä¥®Àã!~„…â!²ï WæÚ¶á Ü  dö€½:!ÜÀ7ö r€& õ‚bÚ f{H¥¶¸mƒ(® î¶*£ ŠÁµ1£×ŒÀøJRp„â¡jƒ6Š¡ 3 Ä+à"€Þ‰ª9á Œá Üz @·÷Уÿ’û,‚P€Ø +´çø@Ž€>!º 2A Žs„ ð5@jôÀü€Ú à:Á:€;'*À† t € PW4€ ¦A»Õˆá$ " ààVÀ.¡IÎq hÀr})w4   ÀžÓr ¡ ¾@£(š  <€É‘îÃ8bEVªÎÃbr=|ªb:&„o,ƒI$Í›ͽcwöÉØÇÈüb¤¤Ð jg_*ƒÑ„ÔàP‚¡¢áÀR7^Á.áÜ´!*á©5"Œ¡ Á"À7ÿ."À ¦ 긄@ œ¢6¾¡ ªL@4 ª»XÀàa½a*:¡¤a "ž×ø@Ðð%¸ÎiÈáÀ´ â úqŒÀÖ€Ô²Á  4  ¼m>iÀÀ@h<þÔ  †€Üá``0A—7§æábû¼¡Ö€ÙäÀ>!]ä¤Á  Ú—5Ž"ù™«\4#§îBôF5c‚¦A‚Òh>†Ÿ0âRÆe›lc¦LùªÏ5ƄɪÏ%´bU’?Øb_&ú•òfZªÐw°Ñ!Fdgf¦L–ËÜÑÃ_¨tÌüLJÿŽÍM¦¹ž¨Ààn ª ü¨D E°i:t‹âg„xÁ8 á€“x\¼ÀÂQN¸xs$èˆw)Þ;ñpT9¤@‹x-&€%æÈ¶L›Æ‘1QG›LŠ…Û£ÅL?á>nÚ"«[³WÅbóP XŽMñƒS劷 E6+6O·&ñ†ÃA¥J«&ÜYO–± kÂmšNLjLM‚}š®“-™"¤]U,žžNk*»ÒbN”KÝXS6AY'`{Œ­¯˜YkŠø9“¤§=æÜ!¼‰§Þ:‡[Õ©—crâÆË´BH uÁf·8óŒÒž5?¶ùÿqfM°xñ”᜷;(;A3veÊ;›Št•s}ªn(*œ³ üNŽškS¡ œ;Üè!FqD8(L9pŒ2H A+•`®¼Á¬Ç6عÌøF1AU`î+lÁZñ8ÁÅ 4ÁñlÐÄpƒ•PÌ!‹ÝCÆ8ã`gV'I¡Ô 1ÞŒõ Ÿ õÚWðUÌ+8²Ç's”–R+tÓ±\ã°PE™ƒCTÅèÁÈ™„SŒÅlB‰4ˆá†vdâÈ+«à S'\rF78¤µ PxsÅëNð‰ÿ°˜ÛBU‡cÑX1{"÷wA´’1ŒsÝbü0GÌ-P41¾@ÌCŘL™d²Ê*áp„)W\Av4‡4i¿rw¸± >`ACÎ M±Ã/v²XqPvÒ ¾tƒ]Êtp 8GtrÈ pà‰w(ã@2É ÂŠÝ\ñÉ%˜T2Ç*ÛHã'8ð‚®Ò+´±Æ~ÑÆ#”B¶‡"¡ %:1M@ íp…4>Ñ ã xÄñŽPWœH—¸ÄŒá >øÁ1ø+>n¬B 4hrÀ¬ÿ‹O]B(ÆÄ¨c KM]âÒšÄä%!zËLB¤S™’'%މMD♢è&:¹©Le0¢Ÿ¸E.‰‰N¢©ØD2 щgb› ÈF&Œg,båDG"ÚQa¼¢Ó$Ç%b1‹zì"©¸Å$†±‰qŒ#"›x,j8ªM­j@>9 l9àÃŽÀs£ Óƒ2„À¹("r8Ä4ic_E€ tPPo ‡ºp‘mà f†DDÐ@G¸Crîð [ÌVÈYRä@<"ã À&ÎtÁhAcÄ  x"gª 0¸(ÿá89z‚-|<›x…q 8„,(”p ‚ñÁ| „{:o0ƒ+(F0*ó0¸"ã’K1  øB6ŠG(1æAmh8± Èeq@A•8’+È¢‡p ³‡^är80é'.†-Ì!dãè†#†ðt <+¨  ` ”Œ£`h…0汇Öxc©¶v&p5B Œ¨Jö  ê¡i!³iÀ0H¦@A/nW?0˜Àô¸ñˆ A Obà€gH~x(á*(σëäƒ.40 ®uã—À†Š„l0È›ó¸ÿDÚà‡W ¡” ArP»ù¢Ÿí؆7äÐc,ÐXо@áí¨D¤–!:`ÛLKŽ˜ 8‚޶&$šqŽlú¥$å(NE*Z…z“8È6ù‘JtïÙß%ŽÉ¾‹”ïÑ4EøîñŠ`¼ãÓd¦2Ñ‘¾Þº¯{Õ[F-~÷ˆ^° ¼ÆøÊiÀy¼o}µÈ^1Úw½®â·¸˜`E*ñS­ X>¢¡´¤’€&Љ.ÀÁ r PŠàˆà0Æ4®à/Ьh¥!Æ*ƒ6X„ìfØà nPáêÁ—Ñ>!‹MR!+ €ÿÔÀ F'"ÙXÅ%¾s‡q˜!ØÂ%æÀšn8 0íC&H§±Ì!{Ê4"àD ¡ !+ P`GÀáÊÇh€Y¬B౩ä „b|"jàƒM×@—M”À}HQi`– <£à3zÚ¹Ñn¨u¯ñÅ7:aŒ—ÈÁVðm1ö¼ŠL€v0BÎæ6„ñÑ ¤ËD7ªÀ 5P‚7ñø'z± Yˆu-lzÚ˜9œËÒßPƒ}J€‚$˜!3¦Ë a,X"- †¸PJȦk>ÈdA!ecŽ8B'  ðáÞ 7ð… Ì¥‡iEûšPÿ=´£°Åè’ØÂ/@A¶Qxp|Ð[<¾RÒ¬K- †V¡àpÈ„ˆ±!CÞðƒ†p!Bm¬pô.«2 nt¡bk†2 q· +‹{uøDïÎñjLð?\ám¡iX„r¤¢¸ôÃ?݉Yœ‚»y»t¬l·åU´îä,X%ªRrOü#ox@9žðœ:£_­ZíÝSr¼ÛeU,ò*êí–ïU¶üþùL­Š[¾r»æùÅþò÷¼éiùSËðôu$5–†5à pÀ%¼á€Gð(Òè‚ІW*£Cñ˜†&Xp!ÿt#Ça9ö ÂK_‡Ѹ‚#*.@#a]pÀOŒ.:r ^aYL`ÃóÊÆÌ(°â BÐ  Z°Ä „1Ÿ°²°¹Pá°ggàFàqÝ@!°²0 (ÀŸ« `°äà eCc­`r°h²€Ù`!N| gàp‡ð40#¥qš`J G#;jÖ³S"Eu8@0ò‚ØU ä`—°8 á@ Ê 2fgžP2fÏ…°Msã0j`‡PA¥Á ²p½ :RÃ0ï¦ÿ†¥Q ¦`ˆ@p“² ¿pm:ò ö ¯ \ …8ð É$ƒÛÛàóÀ ¬ðeS¬ÐS° êÀ Ò` ` 𠬡9Ù€¦ ÞÐ9 ²ÐSPÙЬP?àtÐ juSÐ ² ~ÐP"û„€™E‡ ? 'r`@`PÞp!O`à~KP ,°q€œõ²|0žŽ WàžLù ²`G°ZX „ ŽÐ| ›0v;¤&kTaN{Ý2y”òCep,à•vYTbzZvÖ^AdÿGé¦ÊX$¨pÒ yb.¹§Éait`‰*_ä]–¨9bZ4'et‘ý•’¹v©’"†©M¤§†FÙ_|+ÔÐ&Ž´ Ô‰ðJ®T°ŠQÓ"5¸Ïw¯”ƒ¦ ¤°cñpOà 10P9S,Ð ä€Ê  «@ØŠ­Þ—‡€sÒ%uá®& Bpœ“EÐ `ÒŸ@ šÐir¡Á ‡ð r®«€ u›±ˆC¦ P3« *Ô9µÆ@>€ % Q™ƒ—PñÆ Ba!›° ÆðŸÆ…áZÿ?ÀšC9³c ,psá,p (°9"s (à)Û= Ê 4à .|tÁ_À#IÞ` Í #—Cð ¬À»Ñ/ KpœÑB F@!á8œ€03r C@áàBŒ±j‹À ®p;vÅGÀ W€%ÒÞÀ¨#ÁÐ pðÙ`Ò°V`L% ¸s›³#C Þ`Z+à ,P|À“ 9“ 9 ¯ XJb~°ÙàÇ+@ ,°+ þó ¬ ua*•ÜÓr«p,ò k09Ð+ MÀ , ?k°>èŒâ%ÝÅÿ¨db2™½ƒúEDö,ß;)ŽT-¯²,¬’,õˆ¾—¢)·ò*å¥*’-‡¿®¢-óÛyª7zÛB*îK¾‡çxèuzé•z©7-½ò+µ",Íb, Ìxžw¾·%vº,âk-Ô’¾<¾Ì¿Rz­ÚEv²)OÀ0 ]ÐÉúÕ T@ÝP Ѱ §tJn iu6’9s›p-s0 =œrÀíÀŒ Lf° 9q®³áigð › Q Ûä…çñ T\çj6Ÿf®àá6ÝP²Mã\<Á9ÁûÂõáAñ ݰ>’6A!î‚nR!A<ÿÇAÇnšÝ³ ëÓ ƒQÕú Öz Ø2îј6sq®Êàž8S—&icÁ9³á4 øÉáàQ z¼SâÅ5 9*Æ­ çz®j;ÆP¼PqÇó â/1(q®À9 ÞPà¡VãrÀ œp/À yŸPç±9@ÇAÔçQÊÂó æ‘3ÉG tÐà ÌÓ³ E u9t¯DšÉÎq@GÏmÀ ÌpÊ4“S ZDvܾO4Fàeª ý]œH~EfWF¦‘‹ê¨GdH¤:H© Ví§ 9¨§º_tâÿF×ëm„©[DѧšÒ„4‘ŽJÓÛ;ª1ÑptÑýØ`AôH[â^l@ “ôŽÊ ÊÐ Ü]°9%°s1؉ö-ÐÕ?L?œz1p¹°;p,Ð>Ü–Y‘^Öè$Ö\ÊvLZ ËBa®¦|®„‘œÃ‚Œ×PÃ{R~M¹Ü˦L’öØ’1?üÖ³,ipÊé”Ý“œãÒ–æêב¦ÅjÁá€iºaÊbÜÙ'%Ë'Ç üØ–Mל]Ù¡-ÛblÛ’Êja®bÙqQÇŽ}¡ fŦüá?Ò€ÊO·à± mÐpÀÿ 90Ì·ÌïxÁÐ?Kb¼•0ÏpÐ>;F!u° ¢qÒˆðXXÂr-wô 9EðZWmà?GÀ +p+€m0ò ‰; mð*Õ ¨\4+ý++ü Át“ ‰ ¶©JѺH­_e§ÒÓ&fGöaÒø“*Îâ2É`øµª#އJ’6a9Íá‡Ú©UÄã Þ©„TÓ*þÒË@ vÂ{WP­›P – [ÐÓð Þð p 0”§tÚRÇÛˆ Ùm¹ á@¦Ð;ÀðaíØmYÃa-bmÜ•ÍP³œÍסíÛwÈ‚\ÿ­§=Ø0_ŽØ¡¬Ø»aÙÑó É^Èç„1γœè€Ži‰­Ú³ØxÍ‘FˆN‘–çž,Ö–üç%#Üb®o<ê‡Û %Ƭî…Nè²ì4¡ !¥[N™Ê46†ÎÙµõ!èŽ3EP G`œðºÂ\3$(#MP"7‡.&’tÂ~wP\ü Ÿ0 iz ò ßÁ xïw€v»ˆP"¯¼&’ƒµÕSjlJÒÖ§}Úã'¦§þKz«B+€‡¿‰¢xYäz® wï)«÷xš'ÀwŠw´gw"w‡W^)>¤(•·ðŒÿ+‹R§øÛñ ÿzx’y¥òzˆ²ñ4z»òð¶âðßw•7ñ|2òÓBz?{Œóö ÀñxW f˜–•àö©î«PrP ÓP­‘i!iÃaפCÛá@´½  Æ` ° a-Öbæx ×tÝÚ_Üè~Íå]nÙ|mق킽鋎ɗX¹-iœ±÷„øx-èAá4³íê}®é³ÍæMKØ”lèŸ^­—ß÷t¿PZœØ‡Ž1xø§ë^êP¬øÜ–Óév…püŬÁÀkpP Þ@éàŠ¹˜ ý}?Ç pè õAûÞÐßôXà‰6— ¯ ÿïÞ`9 kÀÁ°7õs®¦ñír XaàGŠ!Qp°¹@}ÆØ â æÜü`HO0â…y¸bÒ ¹‘Š ÕÊ”8°àÁ «QK¨ÐaAƒTH ¢A‹ „X­£CŠäÈãň +Rd©±áB–(a™Q%Mš&]¦ ‰°cMÿ\»4ÝÚ–kç¼ýûïðàùf²\úu1Øyåƒç®ï9¤ãÀ›·J¼ æ“bp@«“xäØ"›ºð¦D¶‰¢‚=À æŽ3âñ¦ V¼©`¬rÈNŽðÆYã3È¡’.rP#ŠmøÈ¡ D"¨Dšlr0&+*‰ #¶i£‚.ˆÀÆm*è‡Ð&è&˜ Žàä8ÔЊ"4@‰h¢¢e¡¢Å¢1Ë+²RÓÌÜÌÈ&æ ªN<˰S(…ÿŽJÉÏ©lÊÈÏöl %›(2ô¤œ¾ÌsPH‰ÒO¤$iR§r2© H'õô¥öÜt'¡å4OžRT§L‹jé&’ :³N3± ƒ«½p(À€ ÚÐ!e>¹¤"ŒIF¼êŽ8Ïœ£M0ÂÂi6Ó61𦠇 ¹6 gpG“/“p®ø-;è–•k·ÑnË+¸¸èš­¼gá‹.÷pO4º~óm®ÍN{>øêŠ/ºÇ– ®3ßbc-^ë ~l´ì¶Ë‹\×Psì\ÓèëW\¸ø¥-߆‰C/¸ñ@Ól®‚AV-ž&r@Dš`ަ`fsc•xÐÚFš*¹±8XY‘#ÿl‹‡€·‚‰@šV\‘Esð#›üzCoìŽml¢ 8šÀÙŠ€fáˆ#8¢‚†XÛx~ o2àdi¹1Qk@1J#˜Z-)ÕÃ+j 2˸ +Æ_hLj·B)s*&ù¦LL•Mdâ$V{ZC*g\å¥ 4€CZQU(1 D%¢p¼Ð=›à¶øÂ-nI‹[$à £CÍX¦0Ö’K—eE”þëÚÂÍÉBªšÐÈÇ…è’j”šñœ‡^;bÁȰ֬leëRN¡ã™t±fˆÏeöòEúëcè¹á*Xª'Q†¨‰Àzˆ/”2l‡9mÀx6¬!9ˆB6Ö iTâɺƒaV„lÀhM8Ú`„›5Á˜@Ïÿ”Ñ8°Àmèc%¬ð×4kpðC¼q…¬­ ”Íš‰Ð˜8dƒE9è7ƒag¹C0|Ó„¨(œhC×*°Ù7 $pR)‰R€¹º-e.sØóùÔ‡>œ4*SâTn§^µ‘oºïPú ©ÔI}>åºÊýÉt©RÏ¡P·Q)œx“”—%»G©n˜@õªåJ$ÒíS¡Æë§òª½MQg¨Æt=jdâ„Á`C4@ 98ëܸB{æ¾p•.÷¡¬E f0Ž!„-Ša s0Âæ©|†ÓßàʼnÀWÃz˜ÂG>KÔÏBhâ°œ¬3ú‚Ke¬ˆÿšÒÈx_0%"vò’?¤¾ eG…t†#ŸÙØÔÄ=WVÝUŲþ‹]« ˜‰Yæ1Ô(™‡ŸÉÎofcV 9¨ÀPÐDL3p,àü°½æ± ¨Íì " †``EPÚ'^7¾m£Ø‚’X´†\ÁmRóC›õÚ+TÀ¯XA*)‘ÇSÞe nÎ4¦ç4AMˆ"lD68„é—î Óžè&òZÓ˜®+®öô;Òe®v×›•åÖÇ;õ×Mà#Hô€ÝºÐ…Ïtà+nç„ »_·¯ Ì.ê·»2µNÜÀ¶]›Ì×m^×yǾÜê¶]ío÷nVáwº—=<Ñÿu;}õv7µ…ë=­X¤{í«¶ƒ Ýÿ¢. uñÊаoÈa6G@3¢@‰ž93MŒ!^âᆈ2P‚îK^:º-vƒ‹±µžÈp/_èOCJÄ’ÂÆ89ü—xªêaªnÌ^Z¥˜^Ô/#︨ózét”|T™n†`[´—ËsCîXæU~—kâñB¸°'«D÷—gìÕÄ—u ‹&ÝÆ 5˜MHÁX­lÐâ V´¡j@޳E@µ™˜ƒsÐ"‡;G kR×ИÊÐæàEm6¬€×¼b¶=Š‚VQ„æôÌ EÀ¼Ñ„J! dCÑ •åÿ"»ÍíÀË­]èf÷KY‰~…¸¡(¥½yˆª–Ù\ZßwºË¿¯;—+|g†÷½Æ_Êñ…ß[ûŽQ3ÑH7÷û”\Û—½i¦7×ÙûùN·&ššˆE²B ø?¡1~Ã<¨†-Ä#Eà1@?Θ,ŠŽº íؕˠŠòÀŸ š0‰0ؘº&²@¥c²¤‚Ž‘©©J²#­ò¢ëØ¢~A ¯r ¥’ ˜Ž,Œ”l²±23ðȹ#ó ~aÔˆ(#Û { úH²,c!§šª/2:ÑXÂwqŽbà²b0  ©>h‚"ø„ ù¢;‚à½[JÿðDøBÊ*€‚2ò ÜpŽxÀ‘8p…4ª´0Ñ ‘Lr›lØ‚`((† YÃ5X5`….¨N€ƒÚ ­H€è´H·Y£iB¦çù7|»·ÜªÞ t²øÒ¾ðcb.QQ‰|R[C”QY•ðIa•èóçjQYm¢/Þò‰`›˜¬`…4k=B[ ½\‹Š˜X?éÛ”`„ŠæñˆÍAŸÝ žï¹Ìh#¸ëa¶r‹ÌÈ,7t;ã¢Æä.cs7l{Ý™Lo£žÑLØ·t£ÆÑ”æÿqΡLòI扞É8ËÔÍÈ‘jóLÊ1.u+ãÓ<Ú EÉùLËÔcú'ƒ' ɘ€ ð–ˆjb¨€ÚØ„¡ {d Á¸°ʰn± œ¤ xœ ¾` òÆù9£,p”<;€A1Íð*yñ‹øðŒrŒmq„Œ {Œi©É[±Ž„*}\š(#Á Û€¥‰‡ £»`çH˜ÔG\&¬G Gõ`  ÉïpŽx Y¢©o±¢Р†p°IòÜ„9° ï,ʸŒOÀŒ Ø…É#C©ìÀ3†º‚#PiX‘lØVh5¨€q(#¦ÿÙ€O8?hƒÚ:ËZÉ4oXo¸#15Ãx˜ý„O ÓqÈ„qˆ‡O˜ƒ+H°‘ƒÏ+‚a@„(05 WH½#¨­J(VÀDPbYƒ•95/Ñ6䜕K‰E—xÅX¯k¢VqL]4Æ@ ÆTI‰^ä”ék¦|º¾ïb'ö§Å<>XE¯Y½âÛ5L1ÕS©Z¹EiJÕQÅJ ?\‹¯“0cÝDoªÆe †0`oi -ÉZˆ‚#õ"ŠÒÉ|œ ºøÜ°’êŽm±Ž Z9’›±àrÄ #£@TP£ ³‘Ãò+ò½ŠÒWÕÿಊ’%Ä 9¦ȉ]…LÀŒ‹½X­«ÐˆŽ‚’1’A¦{޽˜–±Û#ȼpB 2|ɱoŒ‡žÔ ¼pYtO}ù„–Äž$ÐëH ËÐÉ:-ކù±¯hþ --iP6›JB\­È›ƒ´É 9¸Ro˜ À?ð€ƒxx…q@‹‹m+(<Âë'ÈXƒWx=I5NˆDÈX p…×£­¢ÙZ°¸ƒ@½Dã)ÚSœÁéÆíéùTó‘¯dRÌ÷r¦Y,Ud½”ï “ü‚'í»Õb̯ÌM®wâXÉ'RdÌì{¾˜ s Îå>mÂÿ)'×Í\üZ¯\|FÝ›/êt?÷ †mÈ& ‡OÐ38Ǽ‹p ᣑúV*;Ø PÙåØ ¯ØGr¡Èç8!tÑÏ è0'úÆ c»Q/вø˜±ý*—ÐA¥m¨„JàƒGhƒ¸%S0JÀ„WÈ+^KÀ!øÑò…  ‚K0’7:#h>ø…+(‚#àƒ‹ÿxÁÎæ.ß+œïÛ½ç²]Sѧ¦Ø/jrFúâ“sBÅ>¾TìÜî?=1§ã./æöÝÊ­¾ñò.ÆÔmB&¿Ü®.z"/0á=üZ&Þë‰rzîÜ?ÝižuºV…{‚•áQ¸¸0*,“t 6c 9ئAÞÓ:9rªG*€GX­Â*@„-ø!!…€Œ!Ð.Hš-*H@ª»xX LÐÙ× ˜8X…Z°É€…KЃgFáGÐfÐn ‹N8[€ˆí D€‚h‡´Î‹GЄCÐÔ?(Ð=xBÊ 8ˆ-p9kŽ;¨Gƒ/ÿÈ„`¸X9ø†8O°ï(Yp„yè„ÖŠ‡3ÐY8xÂÐ!è€oxåP†i8(øP ‹Zxð€yàûøGø†.(¼>-€*¨YpYЍh‡Û8¨‚ˆNx‹x¨!$ÿ"ø˜‡8xG8Û†W°-ð€G0é;èõ*(ˆ€úƒ0 Ï»¡L€(†<-8`X˜‚"P‡"8½V8„v€‚!¦â#X€y0€KhŽb‚J‚G°„âU˜WUCɦâvWAÝN)&–¸5hª/v"Æuê¥ÑÉŠÈÖ€ÁZ¸„iÀ’ÂŒ.X…µ+ŽÚ,È‚QP.°Œ`ˆ‚að?˜û”èGQÝ‚(°„i^Ž#*мH–x(€&8hB’ƒ6È(†p膽ðVˆ¨…°À‰&he(‚ˆ‚o˜æFV8q6W(U‡6°`Òi0=(Xºÿ MSK€0J¬K ßppoPG ïòcx„Kp|B¼0hhBŒ‡N(‚m0ȸ"`K€ò²Émˆ‡GpN¨Ï“¸¤"  `s-72…è„/wÙoƒ*0†.9¨™1wî„[5‹#o'LÏnÊV)+æ0Ê¥UñÜ)6mÕ·JÃ5ÄQàЄ‰ñÂëtIÇ@ŠÊ&tÒÐÆb±x«Š3u'[›#ÒàDèÂ'G8¬¼`!¤ÀªÅŠx#B„XÛ°8DéHŽl¯^yóvÈ·°M^q C€K²yËÆÉ‡º#Ù dÿ«€ Z‚Òš°‚“Í3™®ÜÉôÉ ~²åÈQæòek ª•©F­óeÏœ;‹îLm4fР9W]º4­ÖË.Ç.S›VçØÔ\æ] ·íÜ­qW›]\öðÞŸ}Ÿ]¦ÁiÝÀxö]ÛzïÎ͵s&îúsÚÝi“ÿ]]yðð¶Ç?_ž=ó÷¿µgW>þüãé§wïß^=pºQG€ï­·ðqf]r»-è^xùݦÜ|öÉÇÞe§-Ó5ad² I+0EÄÀO7\²[ŽáÜ ¼€Žr|2£EBL0ÇJ$‘á@›LÏ3ŽC'3…2)ÂRÌÿ¸¡L0ÝT!M0#Íd bäÔ•ÅØÂI“„SÌ*b@ÑMNÅÔÉqc’ÝL`Ë#TN@Ñ*pÈ"AGƒCi”ÒŸ¼€›†Æó:ÍT1óìT«@Á §QÏgè4ã™p‚I73tŇœJå*Á€äM’›3tB¥Œ?Æ ÆŸ§N Æ«d²I8OŽÃ‰#4”Ó8DóH'Tcp„M«èÀ Æc( à ‘UhäèE72Q® |²F0j± vmC%˜À8¨"T!ìú_1ÖÐ nŒd%øE2Øð'©\¡ +aCîÐ L¢8ˆbâQ G¬€;™ÈTzq¤lUäM§:¢1€áWÒÈŽ ¿*Ã_ðÄ‚a8t Üø+ä‰3\©ÛX1ÿ^± cÄ£ ˆ „¶áVä`Þz%Š‘ +ÂŒà",¡ EˆÃ®°løa,€ ŒÁ‚W¬ašMðF+0Ác4px”ð‚Ѫ–˜Ú¦P€!pbðCøpµÀi¦ud qòé™ÛôG?ü¬oâfš½ÅnžYÞ§7µ‰®uŠÝÚT—P‡ºn4r;èÛ>÷¼)tq‘;äVsºÌa´n -]GKêº>Îr }hHU:·Æ £¤9\âl··™TCœY†‡ä„¤ D!Nø„AÄ-¬/I*TN€©&€#3¹ƒ1ȈSÜèE0Ž´ÿ“eƒ„R%Ï «ql$©ôX®x° ¿˜C¤ÒYÃOP€„Ð  u{ ‚¨µ#TÁlšÈ*ºa‡K@°JwÒ78ñ‰JiÝøF‘¤“g}CŠ»ª’ZÃjYe wˆŠ w˜ªKÙ9ÖÀ©+ldÒðÄ Aö'iA'<¤v$¬}¨Â*Sj©Á{R Zp†y4aa•äÔõÚŽQÀA&tR+Tw¨dTîP„yœA¬3úÄ#À¤UŒãCÝ8„Ôë†Ë2–1ã½ì#40‡q " Ù@'æ±bp$,؆h@–"ÿÁÙ€ƒ äI”&TqðC<”˜â+\"š8ÛXü NH£,ˆ@6"À‚V,ÁKXBàà #@! VŒ7šÀ)`C#ñƒN¼á&¡ 9°B²1 !P&hGÈ\×ú¸˜Òî¦}hAS£Ï­yCûINpôÛÑ™¸[xÄ&6.ˆlÌéžÄöÌGϼÙs€’#¡áÜlü<Іäìgá:;ˆ.vÂvh°9Z8l¦4v*h8»¹@’ht,Í  å³3›OJý‚m§Ù­Ã@Äpü 8HNÂñ nôÏ"ÊxR hÄŽpbªlÐå Dÿ¶Åè„&ðzÕ;ŒC •؈ w„ìáˆÇ€÷p =@jˆÓ«+æÐÃUà ÀALž4GðßIÊÉÈ$"^»²Hïk‘$†o´¡¾w@j&ÂSEeâG ÇŽ”©]>â%pƒ‹qX\7¬)ù 41ÅS¹¡ŽhCz‹“nôâC‰Çp!˜AMåâ†b@ïŠÜ!ç²H€"cH (àuFœú„&(Ý„ÇC èŸ*Ί*àÊQiÓ!ðNÑjUÀ—“WNü`W¨_0@V—!Á ŠE€jA]„­d7á ¤c•hCQvãé—ÿxD&ŽÀ‡—á H ’¼ L؂ʄZ…ŽÑpÈ¡ Á¨Ä7¼!o´¡Üôƒ'„Ö29 ›Cð *°¾9tâ8ƒÚ‹¡u<¢½:ëF\ñŠ/ä"~ˆä%ÈSÍÀ‡B¦¾häXZÓ×h´û)­Û™9Çýî-¡;µ)CµßÐÏe”£ä¿ÜÜÀß7ˆ²ÔûÍ>ÛLZ¹Ø‘îuœ+óA}E¡Tšµ”öíßJ% é`é˜Ôø1î°AqU8(C%@°‰­à1PA"qJ³(C p؈T\ Í«p 44Þ@d Ð•ì]hŠC¸ 7À‚XDƒTAÿÌHAèÀi D88AÁŸ­à€pCWéD'<,àÀ×50d ÅÃ<|»$R1è ¨Ë{=úÉD€\€AªLO%á DeñÈ4TA6C&Ø CD@t$ÅCÔCì äÀMxŠ­OcL€Á'¬TX|ƒ°%Î(äÂ'dÂwÉÖh‘2xË)ÁŒªÁ P­h €Á#˜Ê´ÀŸÀÀ!t—Nè„&ÐF8]'ËDÜ1TAÌA6P"¬A1ô@¸ÂúlÄbt€+HCS€QüÀHCdƒdC6¼À°ÿ'À:¬Å@ƒ1pÁŒüVLƒîU@LÃ\B°Ei0Ð*„FÀ¬A6¬Hà tRÀS0 Ád|Ø—Á õyÔßXT§Ú§™GœÙY5€Mêöéûy”D-NâðŸGIH¦ŸìpMÆMíØM㜔æ¬$L…ÔátüNšÉÍJ‰àpÜääÿådAQOfNU~”kÔŽE1”åŒÙúu‡…AD<À4ÄÁÚÑCÕ{¥P³„ƒ4ƒÐe(hUBpJ—tÉH€ ÃÄ€·há€Õ‚äRÄ@Á6ƒîM 'Tÿ”qèuB;\t­Ï*´Aä‘­¬ &Àh"§(7€"h‘!Î䂟ØV<¬€°¸Ìý-P‚N¸ýIhj!À4à(N‘|åBtƒÌ‘]ÈÂ+ ÐC6PÖž,ôËUÒ'„CÀ¬"È‚îÀ¹ÅÃBúÈ•DÀ»( ^ÉA Ì9pÃü xÀ ÙJhÂÙ–QÁ%P"M+È‚„•C@PÈÂlaÕG|}}<‡lÈœM‡pHˆ§­Ù?MH„¡²Ùƒœä¤zZ§ÅYs ‡?Uß܇xð™y$Èq(ª…¤‡©"Èu,‡¬¶*§¹@e«J‡¨G«1ª«Z|ZØÌtUpÖ LƒTB¤7PÁøÒ·-O³°Ø!d+,†ƒ+xÂ:D8pX¬–pÊ8而Tàÿ“ÜÁ#ÀºÎÈ‹H@7¤%Ã@^—¼á*h@"¥k8À¢]L€½g%ÉÑ#PãkÉK¬…½Ö‘°A áÈ­á,Áú,RÂÀS¥[ÆÃ8Ê”KXÉ6lAcLMQ&lÃ#b^=IL™4D­lC³®ÏØ=A&H@ìŠ U pi¦Ðk}ÁMÜœ¥8 `ÉŒì"T¹¸ Ãxa|­‚(\‚î¡gIÃØJnÃ0°È½È"Ø 8DÉ7À 1CG C¸]¡gÆÃ´Áĸ‚:ð€4D@ Eÿdƒ:ä€7°'Ô…4A%ä@í ¼Bƒ1ˆèÞ+Tä+øAøíEäÔ´L°ÞáYÙP¬€É8.X ÈÞA„LŸ×X_ª©‡æPì8Nç\†›¹Fìk<åæôÔô’TTÎäìˆYO.oó¢NP¤øn”MZïF-Ôä †R%TÞÔS>üaÎú²oO–™j€Î=¹oQ–HbÎåðŸíÈŸmtèCÔ"TR!Õ4Á`1„ò0D³È#0B;ÐÁøí“L\³â–‘°Ë“pá­IÔBD³LO<Ô‹@É& É'ÌA•dOA|‚Ÿø\•,!¦ÿsþIJø‰¿-„Q‰¤D-üÉÿtÄDüIËÝA(OÖòÎ ˜ ‘Á‘°U ìðP[WõN L×Að‹gñˆ“Ã'œRmðú\[Ý1g1‰òh8taÞÜ‹ŒAÉN(Ïÿ0ç4tBéDN@ M@ápQGà@ÿqJ¼WN¸°uêIP0BŠSoÞìóQÔÛôóýŸN! D™MOÁäHásŸ¾Ÿ?Ï/G¥NüÅdý½øöéEÔ=AtÌ€‡€È$qéŠ"ÇÃK#‰‡ƒÜ@#ìÀÜ ¨I8°U°¼K¬Ä‘e ŒC\®ÉÊ‘D³(!Œ0ıEuïìCì SˉOW AÌÄ¿€`GH°ª0¹äpµüp^M2I UgÂºê‘ 1„h…[3uï|uVO×ò0 Aìuµ­ Ià²Å#5,ñ¿€Ñ^ÿËw2ÄÊEÊL0ç'LOÿ]_ ‘ÄŒ¤«œø ’è ì0UOòcGõºìð®°KgíõNxì%Á8¨]pBHC•èÄ  Á4ÜÅMÀ6Aeä A5“ä@` "àŒPdÞ6dÄÓlÌë¾BËAäm¸Âu˞аBëå€ÅHƒT‚a°ŒD@•­@%ˆ‚7ø-ÖÊå„HReBí¤ÿš_«k­šdl˜¤¬¥¤ó>ˆ¤¦äg d°‡› ª°~*‚×ǃïY© G?=Ú§‚Ç Z¬ý‡oø›yx‚û‡…ˆŸÇ†KHt¤š¨½Úªöj¤ÉÚ~LZž½žqÚ¤¸¢%ÚŒ“øÿ@}®QÃpÕ‘ƒ<ƒ'@ßà€T@AP¡“È¥4BN3 øk³ôŽh©pS'›W35˜û\ºruJÔ4I¨É±MQSg¹Ÿ9𣹛ïìò(ÐT×9TŸ¹ ;]©Pºîð{ñ.Î5W³¹ÿKœ_ÊYûu^÷Ι7 a6ú¢Gz¡Ç¹Sû+X'I£§\ºe1:ILQ¡×yš»9W ùTW ]75ûC8@%À‚1ÌÜðÁR‰tÁ64TB¶PÉ4L…®AðÁ ¬ÁÁ´Œ1Ķ˜s0A 8€Xí4°i'ApXE^'Þ¬%øEÿØ 'ÄC€ìƒ+Ђ…4PIã±ÉâCz”Á´³wô™¢æÇþäE{_ÿ…´@ÝN†Nå0àýñ©Û8T÷‰ôÃßdÓTè¼ÝèOºA?¼þ9åGÕ_Á¼ê/BKtÈ%ôøÙö¯BEü¼Ø@G‡|ID#vƒ 8a1PAØ1AV³ ¬10Á6pU³°µ™gõe[žƒùVy\¦D (³¨kª{vbû4¦Ç9^K°ÔOWf_õTÓ5£ø4W›lŸÛyº¶• §„ƒ}¨÷Ž“ :ˆxvªS+¡÷Ñõÿ:Tƒuºª¹§kØïu›C:ãcuÿUOuGù›×µœ05ˆìý.ÎH$·l¨Á œ³´ÁUÀD¶L%°‚eIX¢GÄÃ;EYYÃjMœåg¤¶G·µQj‹HÜ®™8yÚišÇPº®2La\u0Ë@×/æÌÖ_ª‰/iÅ¥¤zÙ :ÿ—™zÎËžEM]îeÒtJ¡dçG±²‰®@/ÿ£¶¢JWü¢->·¤í¼ÌÈ0ìœö4 ²Îµ“øJ&5µ–y­âOÀX8\rž·˜ÏPô,áã§I«Ã”övÔ]õg<€ð=\! ZhÃ#¨:nL(hÌ'r€n„ƒ>èïÀêÄã[Å'¦1Ži¸Â:ˆ‚1Á‚` pšƒи:Øâq€b˜y` Φ1`ÄU,ƒN¼a€6Dw˜F ’¶½êµ²LBf1éúÉM²h’†0)ù8áòoÃ<åà('LÄiî’´œkì$—è`®™K´,IçËZBZ•—4µG(ÉiG³zÓÿÁô¢-™Ê·ADt"J41ïzÜUãa¸BÁüK–Nùå€-Æ@½©Îz‚W¾ÜÂgJkUz•Ô„Ð5'€ý›-ïÍÓ ”Ì6Aúl}M Sí…ÖWúK,ïM… ËÃfµu°s«3ã(Æö“/vÞK[á oÀ6“\¡ hà r5taË4 F'Ц¶Vº ‘åìb+uv%ŸV ÿáæ¶hÓÉzt®¤ë­’†$.t.eêìV¢¸Ö••q%]Û9X¦:íµs¥*á®èN ~ð!!¼\õ–:Ã;D#A “tW 6Ðâ&ˆf:3žq¡&{0Ê G0RjîÏß1ðËËôøajz0¾Ù-þók1^ѵ>‚m?MÆ„÷ûL‘°Å­ß’šXöõÜCaö¸5X!û0á8LÈbîàV 4 œŽˆÄ* B˜be¨ã Ð)Æa:rnæ <Ž:äŠx:l‚ÿ! V rÀ J£¶a â`ÄÉ*ájJ68ä­”p­”Nm#jm’ÞJöÊOòJGdÄPö„·Ô„HŒ$³DËLøj·–äQö$P¶¤Né²–DR‹¯âÄNiR"¥¸¾ÐJˆpwKQ%OLË É !¥PÌзÆ$°ëJ"+Q”¤ŸÐ×P‘ é  °\ä´`Ä™‚­¦$h[°+ÂÁ ö«aRêœôå/ kZ¶_´eHÏ1&‘'Ñü¨I_Ú§6âb]&ÈyÖ+4l|Ú'6X¢Ç/â­XìmûØÉÞÞBć'ö…ôLè}°­~bñY .4̂ê…àîxÀÿ*`T‘^ð ú&,ºlå00¬ª ˆè^¦á†jê]Va  * &Dc…Ø(¨aî€W̧aÌgÁ‚ã]‚c›Äèøà•¡ Ô  XŽ@¨>¡ ¾ *ÁX .Á°ë$"¸®Ï¾îsF‡ò ç–`íî/o‚Ñîjn"íÒíÖnÉ?‰E<‡#ánî`É–>uüÆíziîXBíúFvMq>Òï.ÒÐôŽÔLRvo˜:‡“jM$©¡M:oÎòg»¨"ÜÀ³¥òÂ0‚áâ ¢cÌŒy˜/jy&€yÈ¢û§)fn5HE<è1Q„Ðÿƒäˆ9˜â4´mˆ‚y¾Ï,q€,˜Ç¬^¯Â0½/º¼yœ"je0£|¨K2ÃA„ާ±å«” B-›‚ajá_:Á JàèÂ4ŸKBÊÂ,;AÙÂaÃ4Ÿ/[p€T†¬ûʲÃÑûC„ž‚+¨)ˆèè…TÌ/ˆb3îž³aîeeä²7½/:áƒðesÏéÃâñ ¦¡ XavB¦¡àÀŽ(:!¦Aœ?š@¨Ü-­¦¦À=Ÿ"-Œ,¬’'„ç/ƒA*¡0!æH ÌQjá  Ö( Ä`.¡ ¶! *àNÿ¨„$`2”M|ë°E›ÐQ8Bï2 ÔÖ|iDJôu4íÐZI)'ÍívÍuF©–BiÔX©DUíFÁ.D`Rî6iHéuïÕŒÔ"÷n”Í’P-˜”´ÑfíLV² üêIrÇ@ŠÞvñȩ̀0’ º¨a3¤À‰î¹$ÚªÒb#8À*ù o«­) Â¤`RS[òB[º^ÚT6Ê‹*ZÃHeÒ²) £Ÿà3RHÛüâû\COs-n,VA}x.-ŽÎ/3®0[£“*6¼2ÃÈ {ÌûZÑ7#Â>H¡,3‰"5ƒZ0 PÍ©ÿ†]*$:¦!8΀¨P%:Þ¥à€Œ¶aüÀÈR3?E³5Íç®@¬–í„ÐR%¤Ès<†¤!êv¢¤á<®2!ŒŒ¡ Rêr ÝÊë„RnG'&Ã. + ¸Zä¿0³ÆŽKPëP&…·ø*cÑŽK( ‡‹±*vmÌîµ$«¸âp óDFàd oëbc„ìœ0‘–i"e‹RÆ0GæÄ´.v €+c+QâÐì\KKjg5Â&¢ó¬ašþôõ^HBº©~® zvÂÌÊLó«jÝÊÒU9Ê2§*.5*àUùreX5¾ª6€.‰ÿ(~𢀣8Ç2›¢Êg8Ša:;‡ìH5ù¾ 2³2VÆRl½’8y¢6aŽ>ZJãJc]÷³Vâá_Î *œ¢jT®sõJªûTST sÄ uyâVo]p¢†4‹áˆT[Jéã& $Ì/>8(  x Õ*h· ª½ŠG Ö¥aæ(>!/X%;7ÁãPÃbÂAº¡‚Á¼aè±V¡ d† HN† B<ó æˆQH †ŒMïÀ ŠgBÞ¥Q÷€ŠáAº/‹¨j¡ Ú`òWÁêÈ8ŽàÀCžÿ´"ËP$Sgò~É„!í#qÐ&-˜„Ôs8)I5éñBÍÖ’TF{-–Vr.υ늘d)%*)†s­žtJQÑd˜Fm®®t)rQD«ämtÇ&ôø@vq»lEãÒt¿.ˆ4²Ó,ò'5°«,Äj'Ü€b…ØXÅrN¬ìÉ~=—ˆªP…ê9ÑÍ„Šå^€€xua*Ês¯  #ýp ¶F›¬‰ü 4‚ ¦¸ª`eõŠa²`e.ÚÀð‚}pàr €ã怮`aÌ‚*Á°3-æ`r`ÚK[¦=6u]`Ÿ¨#RWÿ  €ƒ,h8P6R#ü  Ä šÏÈ18Ò¢r  üà3s0ºV¡Äž7LÀ–Y…L  ŠàOKÃ% Bªa¤Ù†,¨Ša $ f@A°aª&¦à dr`" *AŽ |0Š@ ྊ”!Aô€dƒbˆh7Ž@yeÐ 4`ºÀš@®@.¡.Á0¡š@ H† ø@ ¼¡Ž  ´ÀÊè/ó¤C¼®&;‡°‚¶µ`vh)‰ptTqhÇðN8Ó 6ª1ªKòD$‰u v$û®Ñ¯ÕÈúª;ò«/G$÷NïN8&ï(%ÿ«yétÈ:'As#dM'?â! $> ì¨á P€&`*%ú«0„Ê+Wï)Š@("3Äà ª`ÜST•AâàŒá3!,ª@¸!ÆãAâ ΀@'`ª  ø¨\¹AªàºA¨RÃÁ”„þ²ª† 6a£¡  ¨`VV&<  `/E5bÀ<@/>È ¾¡ „;&X¡ ¾¡ 0Ó|6A¡ DA4‘‡¶/}þr 4 r€wq…ž!æ€a*Ddv›:2at  á,%d`A A ˲oÁ µ»ÁŸ+Àª€ÿØ,ºáº€€À>+ d €(îå§Ÿá¢áƒpª@´qdX{½p—:€t Ø:¡à²a6Á4a¾4´v .Á¨…î`:Áâ" ¬’Ūô`:hj(š>9ÄU¡ŽFjVÀ A €÷òÚU ° 8܇ A È4î…àà"À®'8VÀ*€°…¼AŠ@Ê1  8Aö :Š@º¡(Áª@ 0aŒCü,Ö^˜ðœ˜$uéµn6Ö‹VA¸K¥µâd²à°ìôŠ‘«hðc}b‡ÿP„‹PX´RÎ.gß„Qɰ&¶Qº4°~PÒp²ä°¹0 µ›ÝRôJeÙpQmd÷ð Q´oìh¡¬¡ø ÌÉ*»–-ƒR)U*bàô` :±Ba˜õ²e*¡À>á„â!<áb€äXå¶@¶ δ4b 4H£S‚AVÁµ£ „  xŸô Ž â€:"…Pãa4à‚Ϫ\›qຎBah 5ÂêV(P[  àçÿwˆ‚c‚ÃÌ€”ÝÜ€¡Š~¸ ÆÿˆA6L£ªÀ<ÎÀU¸ :A>á]Š!ޠހ œ§: ‚Á*v©Üª€ d¡L£a*ဠ¦×4  êA¹á :A=—P@ æÁÆv¢˜!ˆá<¨ Ž @zºA8a¾€(‚ƒ{•Ä1ã54K‡ÑòAjhPËe×B Ù…™2d`Íu8üw%¨€5fïAjˆ+7rW¨ìÃÚÄ':ÿ!S¡ „zQ1<@+‹›Í b Lj±‚ÃŽ²XE/Œt$…Fàíø9à t[s+†$ŽxȆð 2MC0@6ºqA9¸¢whÇ‚ñgnð¼B¨@6º0W8×pˆ`QLH`š@†2¡¡ Ç/ïºM%£¬fIÎùzg:ågr¡‰˜²²[ $SKÈ&&f à¬÷•ìJZ¸r|ãûåÊÈ÷‹RZre™h,ÌÓJNR_ÉÝ7yú?Úñ‡†}Ý·ì-–¬=õ_&M—,ã$‡™ (Ñ$‚Ò3˜©L×dä†*À!¶wØDºqÿ‡ `à*űtu‚$`à `ðEÂÑ ª¥R(2½À¨R&2TP BP©6QÄp up‰U«@ñ° XPÆð Þ°tò +@ ›À¹@C³S ¬@=0s€!ñº0[ó Ž0?€àá0QÐ •àÂ1P ŽàcUAæsz°BP|vrÀuÐ ƒr$bðÙ`$Ÿ0PG(0&€× 1Ðä =ºñ ® ™x8µ€À °&«àr¬` Ñ#@å‚7eR Ó` /ÐZ’!Mà ÿbP œò (  ? «@TwPíð ¦°Dãà ‡àZp›7¤¡ð{0Å 4@ °U E (ðò¡@` ?Ðsà>ñÐÐ œ$ ãj0•ñ8ñÐ4  Fà”Ñ ä ZðES ~  f3-0pðQœ`‰[pÄÐ ßð Á°É¡p‡ð‡"WPžP @r°.&4?fcJVfS¶äNÂt’'iNÄT/õM˜ÔM®$“ºN7I0ÛK»ÔJÚôL9 ”#cÏÔ/Ÿ$NŸ$0: ”ä„“BiNÆ´K¯§MKÉJÿÄ4c,9•äD“/i0ÿâ•Ñô•—ä’]i”;Y•×N®t/¡LE 0¿“Y¹“Ðôc)Sð0 xƒ5VVS5lSg“Á5à¸>ˆ +áqí‡ Ð1â ÑÐFw€+à½0dp@âUà]P9Yø ”ð ßð ´áðU0R'þ²Ðfq? äÀ » ÉQ[èUPÒ&#ÁÀ-àP ¿SÐ Q€…@,pšGE›@ݰU NÀŽ© ŽÀ à!8«ð ¹ð Ø`!æS êð _ð ÿEŒb„UN‚, `Àlÿb!Ð* bPz°J¨ÿu  n w ÞÐ(ÀŠ‹â$Ð UbF%@w°PÞˆ@ÅpCpàÑ [.>åœW œðsóWÀ¬ð_ÌȇŒ6=ÄŒÔsG0³aSn`Nð$¢…N= ¡x!W .D–39À€'8ýçÙ"†5}¯ð 0˜h™PN025@ s€gã0ÓÐá1rà E0%§„WÀgb r0ju²zÒ X³s/ qK6ic–|´§IJF3e«Wä·e6c{³zLVß—3`Æd%Sfÿ7Ãd¼A³dT¶|¬ºe²z2ú{I!ª¦*}`†3A±yAI9¶–¤Vá“ëËÐyù z #vY(-Ð&[Cg)mGÿ…5*uVpá ¡•$,@&9 Ÿàáz5-0pjŠ«0ñð ¶ Ä8@@(ñ …*– ¡!;ÍcSÒsiÐ!H¶yAãÀ§zV O"%@7è$Qj@2tú ÔzƒõÙ °¦¡Ñ s0j("mWXsð!"ŸPšÁŒ`>lбñ¡ Oò!Ò$Û XÙÑFJ¨„ŠsðOÒúqts37n🟞 :! FÿÚ ŸXÕ5@ݰ ÒB6ÃXŸ£Fõg # ²*$ÒÓ&ã0†Š¶tªEݰQò17("²nP « ¶Þ(8áA&¡q‘EÅ¥‰V'ç#]_ô_95PF€ ã Öù˜æW®e²¸©öbe’DfcqéN#•¢0Bi31ƒ2ÑG{]–{CÃ{!r eb6b6ñû$YÂ\Sj—¦ôÿ*¡|½7~ÝkfQ!K¬›–ªôJ¢dMÁDO±œLëOC‰LjYM¤„Ëã$Ì`I”<é“â”K,QM­ôÊ㤓õÒÌñôM$Åĺ2&–ƒJLéLÖ¤”³üÍRy”åd”¤dÎe™•¬d”%qÎb©ÌèDOØL3Ö  @ ÖP | ÒQ5á@‚#þ P÷§gQ'è*¡çÈŒ(l±¹ñŽs<-@Yx9R]D&òá¹aź¡Yt’…ü+§™ó:·µ0ÅWcTñÀ'%­LúýGÀ)•}"s³5Z&Á6›Œ·ý‚#zƒ!•Ó ’±:ýWÔêSlÓ&ÿª·l±‘A'‘,«yÆ("®C\˜ûO^ã¶o;7»µÃH-Ö¡Â }ÃCü"2Â'dͤm‚Ñ?‚!mƒ^#=­7‚# Zh×2ÐTP€ÓFs³C­¨dB³¸HÌ6 È^³Ñ}–e’ -¬‘Ù‰Ö›M×\S ;ñøRÌД˶4>|qñ¼šºdÕ‡e|Ñ2c®ÚÚ¹z{'Û¸Ýe2¬­ÌÛTFƒ¼G»aAv‰Ê­]3¼]ܵ­zgV}hf»%½}ñH#£Icψ¿Ð £!€P}I'd05tìÕüZ5 ƒÜF’ $#œwâê8ÿá8ûý", $¬Ñ·¼¡ȈGuÆg!$zÝ—S7Å÷MBœ® ŽÄCÒl92 .Œ5X]ÓÊзN‹Õº¢Ãz†Òz“Ñ€0 Û&á€ÒLPk­7Ãè9œ#¸l3,¡1DZ©5~V'šQ ÍŒ¤ÌŒlR »Å·ó­5"~ä,-¡^ƒÒ)ž(m6©1ã­sc¨$´¿ãÿ$Ø+:b›ÀÞ¡Q­+Xã1B'$”*­ÈüKÀ¬!Ù>;· 8»¡ YÔ€‰·cJŒ^Å÷œ¤ºeʧ3“f³+ݳj{¦+|Ú ¼À—ß¼§¾}nñêÁ‹ë¹{jæéHÖêÀš{Íd¡´~eÐ zÀŒ›‘5çúÏu® Ü—÷×FXóÒÚ>ÐP«à—ì]˜C<Ðuž~¶í\“í\sg”íîΤé-ï^}ØNuØ‚cÔGBBÍ5¹áÖvÉ+n×EýÒ+Øm×UŒÇ‡ÝF\Äÿ±X“ï]“æMÊ`¾ñ?Ræ; æðò?ri(â8+ÊѰÉÖlcñLŠ®ç›hú~!0ÏðF}iXí+ê5ÿ4bÙÏavV±PGÒbøBÝ©î{ÿ43½›:éoÙ“Gù–a{¹|“0iMk¹’ë|•ŸOlIËþ—Úì“°¬é_yõ`éödIõ.yÍÄ\0s©º½”“/‰öå$Li¹ÎÇÌöO̯$N\é÷©Ë÷j_øuŸö_¯õP)“x¿Úsi 3vO@ ¿˜Z3ôñ]P\ãÞîÞ‡ýáùÞÏ%îlœÞtöÒœïÙ"~¾÷NÔñ-¹#6b²Óè‘uïÚîgç[ï]SäõŽØçÝíE;—¡ðúÞ%`Ž;ÑŸð%? ¿„!ñô^ü’Aà%ÏѲãó¦h×»õ¿ñ­þLŠÕ9!u ó/½¾¼ïÏÃ_ïÿzV﫱ðN™À  B† „nS e-ÂQ´/Ü‹:TÏáAe´ª•9‰ÔÉ2 Ê´Dé² -”,O²|y“Z5œ6Qþü¹¥P¡/=Z“(Î2ÔrÊ4iS›Pq:mz´šÐ­Rú,*UlRŸCyjÍiöæZ²`uö¤7m\®P§N½™k×®fñæµJ÷-ܹ'¹F•ºómÚe[—5XÖ˜Ò-âÅk‘9AŽáÈ„Óh1Üè‹áÆ™Mæô¦ ›F[ÜœzÂë¤G‡(P4é™É<Ì}'óháñr—®h›ô¦ßµO£.}1Øìƒ•_ßd*¯@«i,§Çª¡…¦=(‰¡ìtÃ(3öˆ³è4ƒt³î¹Ô^ÃÍ£Þh;MEÈȈ¢‹0 -CÖ\kÿM2Œ#u‚ÍJÕH¹áºËŒ¢Ï4Ž4üºë¿Ìî £ ƒ`4v;ˆ"ÏB÷\–³ Ÿ­Dc«v´ >ûî3b·Í°ØÖjk°Är!‚¶>60¾/DqA©5QÁô”·ÄÏ&®#r Bá=sáÍí;嬣­’Øûo,ËPiNÃÜŠ c0·<*È“r’–ŠÑ—dBù%!]êñd•·r‰Ð“€Df•QÙæ–gz©P?Ægw¦If™‡Dth™3ºPY†º)”•Úäj~¶ºä¢W–:èšM†éèBÇžÙåSž)H—ajl®y»h§O";íšË¨ÿ{n#2éÇø`j(¥>×ö5·æ,3Ü‹š qJ#4¤‹z%`#ÈEûMRT-H¸!Ú £Èa–ñ0µ9ë0$.¢Mmc˜´;¸»ãÒ…FS†$ôîN¾™ý¯Y çƒ0waPùëðsͶû†¾å¯¸Ý‚tÜ‚Þ Ï@„Õ â‚Xƒž¹m“»|·ï.Dþ»xã¥þ³ý<3 †õÇ.#âÊÈÍÊ@£“imo;ËŸš4¥+ñ‰MŠi •:†§1Á )« ‡¢£„ÅKuÚ Ç”²§5•…0xyS•ÔÁ@ OÜàö„%6eÅF[Š qè@»ÈÉÿJ3¤aa°²3–PãP‰*Ã^±ŠM°fT±±J³¯ÒHÎ2×q˜k‚‘¸jT›¨Õ©p%©b‘f[¥ÛâpŠõüxñ:AUÿàˆ¿¸Æ5R„ãpˆ•b™îWzA4iˆA!¾"„"Džˆ@)†²T ï0O[›Ð”æÒÄÖì'AªE… R òq¡$ü¶ã †ŒB ¡^«l§-SõËÐ ƒþC.ó²x¥‘¢rà˜ª.–=«˜™^(¤º-jn³Ù•–rB½,¦,E©Ë ËTÍmº°*Kº˜\˜¥*éI™&ô`7%¦—F0 _üRÁrΓ,Bÿ §U³Î¥øÅƒx²K’È)ÎÆp3xBV¡¸×G4wþü,‡5r¼ëNôúUEÓeÆ ¾‚ènD‡™hÑN9åOB<—G7@QEacBð7šèy&8ÀºC5…D$$º×y–…/ˆr‘â“d8ŠáÖÃê*„UCîn~jNkꘜÏ|´6Ä9j}^Y0‚y¯7üd g«eu•M"à’T¸Ct‚ N=Ñ[€6$Æ¢lGe3’buÔØµÅl(¹ìÑL’µÞímS‹lÙÀæ#—*hH“Û̈´Ú°eÖµ˜]ìÿÊ øµÌnöG¬•mͨ²“íh4ãQpKëÚØ~̸wîËŒôÙÇN¶HÏÅ™j‹Û¯€l'YSVŸlõJWÞEœŠêFaâg_q ëò9†q±_¾y"0?£Go‘&WUC[°Š\%„Wì1Ú¾S=t4`UtÙ ¢ŠEøZ(°ITENëÀžîŽ%aCF‡[ÚZ¯«‰°ÙlU©Æd%»ìõU†°&bóbðü*Ìb×P‘E  V~'P 9ò“³Ð¶ÕÉVÕWR©Ý½”ް °F•…2[È””iÞ† ¬f•†ØÎ+sÙ†äÜ';³Ü—Úˆ.O1LMÞÿ w–©†n‘'RþyC rЂ$ÌêMª¹›AéšQXO9SSIؼÉzdDÀ} Æ™©¤©Þçp¥£Ô{ lS’F'q"ÕÕEâ±™Oa†u¶óWª+":ѤŽ!ᜭªcªÔ€N-pÃ¥r»ØákxfE*°YáawÝ-ä‰kG*áDÑ¢sü'Ï*žGæ®^ÖëƒÝµí ûx®ÞNÈ…ùV‰(£¦ø#CYS0Åõ¨á¤0“›:rQ4˜É xˬ+/©Xmä”aÖàMãÉÖ¢Û6&5††a–ªrA0ÿ»-tÒ§›Â„ÃÁÖix¦ =±¼1ÿ-Yüƒm‚‹KÞ§z‡yšòËÕ|§oZRšØ•bæš4€&xðê£ÞXñù^µ}m½^ÏñŽÖöµÍ}‹>oRÁ ß-ŠT8ÒȸÞxî Âòbv¤xŸMý*ǵ"ouŠƒp—;cЄ˜%"|ÅãíB6´–Ú§*µ:;åjJçÅ5ØZ»ž\kŸXN ]¡_ä·çø“Øx V†Z3öUn!@Þ'Ïj0¢w¤˜®ê×¼£¥<†LŒ€.Ìf–£çœoÓ1ËÏ®ûf fK£›oo«Û”­k“ÝšÎpŸð˜ø^€>s>j;û4³E­eD‹®ôÅV¶Õÿ ø:j[nqÀh?jºg¦hÏoÝ«AùúæïÚÙ¨öþã«Í1»}ÌÂpøxÝ%3º W©ˆßø(Ö‰¶Þ`ù”pÈÐØ^Ñ.šŽèœÝpƒW«#Ìø¨QéÈÀy³ˆÖ¨ü‚ŽùB;‹Øõª0º•x•¸7Á› ^YžWqˆ;m© Ë1£I)ô¤¦Ò¶ã•;(†UØ»ÎXßàŸ& †€‘»x¹Ÿ…Ú®µ#¥ c<¸û<óŽ»ðù*ÐAŸš(ÄOb•ÁA‘à»Ñ«ÙXl¬Jl;»«ÀÎÑ–Q2Ð(ˆØÐ5¶KCˆ`Š'¨ÿh2-·ñœ !J¡Ë¡b‹6Ñ¡y²8:§y!HœÄyJ3ŽÓŠ– (§² 7ûŠ›3$‘!Žã+¬8³2{š +i9J4P¤¸0 ¡†0¸Ù¨Iá—ÑÈœ;p7`e’ †-Š2ȵä ‰L˜s#€b™ÆpˆW©ÆÃÆM7˜e¨…p‚æðÀ ˆ\sƒNзM¨… ¤ˆi$Á~ìŽ]KC2ÈG‰0Ž},8D׸Æ:7à–`˜ƒx¸‚x¨…k$0:AŒ•iˆˆZpAŸj¢x` “ 7öø„¨€Î˜9ˆ‡NГdÿb¸‚¥j°ià†r0ºÈq˜ƒ €ý0·è¢¼ˆN¨ÆO(†bè„NP7PÊÀN0Z1設 eƒ…ÐÊÙàÊ®7®T`<ì„«”ÊÜKnˆKw\K1¨¬Ü‘è†Nà†4TžZè†=pªxÐAÀnhªuqˆNèË„8C €·ÔJ™ä†¥:ƒË°#1817D…è„biŒ‡OXÁ9ÊúȾd 9AË=àR¾è­(á‹Ã§ŒIŒ³ ½O¼=I 3+Ekš¡ÙË'Ù3§‰AEʹ€2³ßEi¢¦pB9A3§ëD‹~²˜ò31 ÿÅ‹.»'ìLNûë‘0Ø­E[†0 €;¸›Ò#Œ ŽÜ‰‡§9¨…°|•Z8 °H܈"ð…ðƒ¨€"˜ƒÏüÌbXlPÈilZop‚/2É ðüüÏ€o rt‚ðƒ‹¼bèÐ (†)4·U`#ÿ¸ˆ ÈW€µÒˆMÈ#èIÐà/7Pƒ#ø(š p€|[6ØB(>p€ŸºQx„ˆ$‘8h5hIùñDÈ,Ë ˜D؂ظàƒ6`K%d(x'øÐ>€wÔº-Ѐ-øP†dˆ8¨°UÀ=è‚öüÿ(Ç» @©\Jo`!€8€Ù¨…6؆µTo€@]—#ˆ=h‚3\K0˜ë‰ (ˆ©ü €ƒo8 ¥ˆ‚yÐc˜;- 6Žm8!Ø‘ðø¸„§<8„)‚°4ŽbˆKh`È;˜M‚8ðÈó¨€8€S JqrˆÀãØ„¤¬:ãêÅçÄŠŸq.‚+ –0®Ý‚™ã ™æ¿å28ù-¥y¬F”-ÊŠ¬ª,êZ®òS¸±,ž`Ÿ¹XÒrDÓضy­?Ýú*¸Ö"Ø… .æC¾™ XÞ‚ÿXêÙçb­äÂØƒ#®½© “xŒaÌë0ýÈ7ÎÈmìG°…#èŠØ„`ˆGƒ.²ˆ#ð€8Hˆ0pX©¥‚PˆU耘D#s+‚8ƒvP(ÜK†)‰N8„Kˆé•ˆ€* )˜†™ü=X°ƒnxˆ €*ˆ8˜«„X ¥;0/ ‚G‡9„ÚK ‡N¸ƒOxKPK˜†˜K¸xGBrp€8‚ ù„-p„JˆV«X˜Õ£;ˆƒJ° èh\…Nð„" e€ÐDJ¨øTê0xÿ…KÀ„ ?Ђ"pip<­l˜¨ÁxðYY@„ú¬OD¸„`è€3¸[h‚8„øØ9¨o†Kˆ«| ØY`¢ó1€l XxKüä-ƒKˆ†…ˆ#¨‚Uˆ›R†N€o€(X;} Y¨Lxÿ`»6 =€…,­Ï;xÊMø„iƒN°ƒ6è†x[(`o€p8ƒÈ€+h\ø„Vh̉.à3€1ðÓ`ø;è5`àWÝ„B9‰×CX«‘‰6«=@9ël z’[œ“ Qô ljŹpNzÊW2ÑÎvºŠ@ûÿ!êD“š N’²©Ð'BV ãdNÂ'pÊc Šc¨Äâ&¢˜¹mЦëZ4ý{‚™Þù(‰@f,Yèƒ.ø‚x5nÉ‹Øbˆ‚5€k”GP!8‚=ÍKP9Ø9˜ÆU([Þ݈éðƒyà†y8‚3ÌGȆ H† arØSþªÏ(X€UX?JÇ«‚8ràøˆ‡Ð6x5ˆÛxƒÂQª˜œ‡È‚*˜ƒbpƒi¬‚ °*ðS¥¢À ‘p¨!(éíXØháµ»ƒaÐnx©1(é@ZX»ppK¨ÿ#ø‚38ÒpèX0ƒK°‚µ#J`…Uè1°»æ­‚nH‚VÐÁX0X…*`…µS0@„9ø‚n˜>ƒg €OƒvƒÃ3`† 8G€Ce8[0†x„U0ÖNH†`G4LÈnèbEêè†. Œ&…N ‡Hr àGø„žªY¸>ø…§¼ƒn@*؃K(‚-$9(¸ƒxMQ0*p…¥2ˆ-À„nÐ8øX…g89ˆ± D¨1…6Ј`¨Dˆ1€‚=¸ƒrì3GØ®U¦8H– €E¾›iÿÄÚʾ¹W‡ëÄ’EŠS3XN;ù!2o@i8òZTÎ>VÎJ ÎY$NßζøäXïï|Äñ® XŒ¹9+Œå¨ö¦²ž3¢0Z4R™Cs™Í˜ƒi.P‡GðÓ§œæ=Ѓ"0ÈMxà"à¢xÈ ‚6°Œ§D0†*(Ø®ø]ƒˆVãn]†nˆ‡ èȆ5h…ŒîOøÏ¾„Q*bЃb…#0I“Ô„èp6èU8‚o8oh‚4<ƒ;Ðñ¯O‰ì]XÄ®íM¸ƒøM+Ч,f;È„^…œjj Òµ[€^3xÿ„d(€f`†3èbà‰n˜‚=8‚hifô€5à!`ʘƒ ð„=ЀI]…qÐÖ&0†)ˆgéå†o؃$À6X…x(Dh…3p„+^Ëbè>؃àé`8‚8°uN˜€,b „nènxU±Ôƒ0†8¸òˈƒ"0‚_ÐA( à…"ˆ× È  Y»Nè1ˆf(x‡8Y8ƒC‡MȵN˜‡W†BØ®Q»YX% †Oк 8Á¶Í;Po`…. ç (‚˜bˆ€Ú†¨è‚nˆƒ5ØÈi؃y`…9˜‚½‹‡¨‚+°d˜ÿªŒkßMàÌZX…= Q°V0‰É 5."Þ 'Á¹Ü¬‹’Íâ‹?àÓ¬•¥?ôã>ñô›¾ éØã³-ÈbšôKš«¡¼ >¸Q8ã{z…‹›îîš®‡?µïX«gc(Ó=Ù|ÙíSX…3𭹨ÍÒ›‚ëú’®«ç½°Ïzžœ¿¡kà®mé•ÎQ=àù;G` ЀXßs8Ð…L ‡¨ŽM ;èƒo8@à ˆ€9çK˜‚QÀëqŒGx @ƒ–Þ"°) ]•î9¸JPM7Ž;ÀÛ%øˆÂp„°MbÐ[Ð_˜|Üó°ÿVXƒ È7(†#+€…\[r@ ÷`€(9€‚_ÐSØ®;¸‚Jø5ø+€¨bÐ0€°×ÀUwÚ ™‡âÓªxw°@ya‰Ûªb«¸ AÔ*F‰`‚ëeJÏ£=ñеøD#I¯Åî´+%”­RÆ Œ)&JPvg›²šÄ3XÌ–f‡:MW,!U*]iQl f&bì!¥8zâ@9nŽ!—.­«¬ÉhŽäÄ ·)«¦È™ŒÚ˜-`p$maì -[ãMˆw„J+YÅp܉/˜—ºAÎäæ,>… ϧbGjå ÿ7´§(Ÿ‚Y,òcÞ7?™´ÈäÄ”)0Ýî( wå‘Y¬Z´˜à†€ Àö¸i8¡h…â6¤Uf|k ÊT_¦Aµ2âÓ£Wßýøöó磧V¿5üôÉß×_}8 ÿÑw€úåG^~ÕØàþ§àƒ¨ „^Ha€öé"õ…X"‰ è „ †˜!†Žxâüùg!~28c‹‚xãŠÞgã~–a"ŽŽh_Ô0™Éª)ÓB8QJ™Ü”Q=©Y8¸yÓŒ¦˜¤ÙM‘‹SÅÓÂ[üòͱ­²†/`T°Jd8\aDßcg0«ìÓÆ%XÿÙÒ°rs$5Á*X¸BC7ÊLpÇXAŽ mÎ*,`!Ë+9z RÐÁf½ÂÂ#G<6G7ÆÈÑÅÅÄ#Ô,ŒbÙ8w̱J&¨°`f™ñJ6²SP0ñ°aÌ+4tbç›0‰•Xdç*Eì37)U%Pœ1PÅtsÅ—¨å5ÇW!Í'wdÒ¼,CQP«ÌÛŒ.«à€N.ÀÊIêr3Ç8`ܯ¼‡°‚ÛÌqFítsYRÝœÁÂ7Z:úÉ\ò’A«ÌÊ,†ÐM&tl8sL`F%]à€Æaì¡Å8Å‘×8ݨcK1NPQ ®ØQÿ)À™Ì E\ÏÁ”° %/9äð(ÀÊèϫȲD0ž*'ìܱö™ì2kkO{ô ™P=|Ò‡,Ý1A‚e qÞ‰ØÀxï‰Gã’éxzíÑòa‘+Þˆ$yÖ¸¹è/ö·ááInßéí H䀥·®9ê‚N↥«˜û~ºØc"˜{íªÇ®;ë¾ïaçÒøû茋¾¼‡›o¸|õ±¿Ç¤{’Sc“T†ÓQ¦–ZrÉ=I€j«h Ç#8L G0™lG…oO&2ËÏ8d(x¦¡šx|âqxV®º±†9øŸpƒ2‚19ìÁ+ÿÀAC4Ó #á R’ æP"l­!™ðÃd!j¤ óŠA'’S´pÜá+ÀÚ0cŒ=è¡[¹ ŠaŒ^àJ*wPG(ñˆLL Á¨€1æP…Wà*%B&Ž ˆÝGèÆ/„Љ`ÔâÓc/Äà†ZD1{È.¦®x˜ÂÙ°‡I6™˜á90ˆr€ðŠB XÅJ`‚9Ä¢5TÆ4Ö@…båwHc\Á *€F6ð5 pŒ¼@0X*å(;D€P8ÀÜ™*á”X;…GAH LÀ xü@U8(F'ÀÐ NXâñ Àÿ&€`‹x%N˜.á Tá ª‘¦¨.‚ã\ì°Ø œ+H%,€Ã%Ä éÄB Ä R€œÁpð£Î Jd#~Ô‹ª "Mš,€®ƒImâZBBQ‘µ=n<æaž„ˆt< AÏxîÁ\{,· Ì¡ç¥ëéOæf:Sø\§/­Æ2â3—Æô§úY’{BZTž§™£ÜzXºÒõü”?Ku)LsúžžÂªZuœM‰ÊUõPµ¨G½jPÅ 9þõrGÅjæ²úÕÇA¬ñiéPëºR¦r5¯s¥†\ïZÓ³òUªh©Sßz¹Àòõ§ŠPÿ·$j„!å‹Ò“ˆ9BôápKñØ@0¡Žh à Ó GŒ“ ?Œ}Â+ñ&Þa êøì¾(Ð Ž8ÀËdc‹J\â©Ù„ ±†1„ƒ/hð2ãñØÃ!ްéBfœpN*”`|"¨„¶¢ŒM€ ]€ÂܣЌÌ4?Ñ…Ú˜`RZE0 Ð 0£lAª€‚\T R¡4öÉA¡|BS`¨­ºjÑYPâ%€Œ^¾ÀO|A]Rë ~ †cM`° Äìô’xƒ'åU—¨@r¨£Ê ”ñˆo`­pÅh9Þr/ÿÙ\!Bp 2™ ƒ:ø¢X®Å -8wª©E1tðƒ^á$8ÉÁ7 `;VŠTè+•N|˜kÀÁŸÜp…V㟈NTXáC¸{iÁ$Àˆ^DÀQ°)†À œÉ†¿ZˆCmŽnz‚ 9I0î†A“¨Œ‡4`…ÔÄÖ0À#øk¾;<â¬Èbr^áho|„R‡ébwZÓ%)wž³Ýæhá:ÿÐw'E¶…T$lÓiw$Mì8gŸf'[¥Ñæõˆ=žÒa{Û&}ïÈÝ<ê©ÚÑëö·UÇìâÛu/š7¹EG$ÐÕHØãÒ³}±éPjÁèF7–)ùpƒ™:ŽÌ†ÅŨx7Ýx~<Âß‚n8OšÀË>q´ãäe“`ˆT<n¸á CTüœ/†g]Lþ _Š¥ ÞŒŸ^‰rMÉK =\ŠÕ¡f Ý&Xf%GÕJúTW UT-È’ÐBPÃ4ËVÌ©$Úédš.® o§¬À%D8=dèÁÀc?N@´™§DÆhV\¦llÿª2lÃB0àÚäÏ7¡™1ÀÁÐ×BêÄtƒV¸W ðÁ%ÀAƒătb0ˆˆ&, @1ÈAÁ\7Ä€4„qM¤;æ*t´Y3´ÐìÃ#@ÁèâáiA6TÁ%ô-Ë$7DC6ÈOÜÔÂ0øA'6¿B:˜A/ÈÂ6”á %°‚eLŸy³˜P˧‹Á#p^;Dcƒà€1lºA`üú0ˆV1pµtÁ°À4Á<€AÅžA%°0ÃDk~AÔ‚HkFd|7X”_i€èh@AÿÀX6@ „Vß^˜M£7daQ7¬AèÝD7tÃHÀ'8™78  ö[Â*dC¨ÁЬ,`ƒ,<Ã#°A7L¬xº%hRAdCT€˜‘Ÿ{æëAxq<äÀ+tÀLÁ*Àl{Cd|4C L4ÔˆALÓ*ðA7$ƒlƒ,¨C<"P‚ðÁôsc"H⸘þ:ÿÚ*3ó0³G“óH úhê)–z)Žž¸Ïêý×–`Òº­ŒSíïøŽã7þŒ\¤æ›IùÓÎŽŒ„éц æ§Æ Fi–ˆF¦ÈÐÖÔ „A"$Âð£®ÿ<ÉŽébá~ù8ă&üevôP8b`Cè­Ÿ7" Ù³´Aø”p“(P3äÊgN€}¥Æ*x‚#ú|,„ÒˆA+ˆ T@3lr| ˆÐÿ fÃôµº@œå­X“d8Š­ó¥Gâ… ·é[‘mˆàÄ‹÷ÉN§VÞºàˆ×¢Ø%‚—:ÝQÙ Ö™d]8Mx’©É£}Ò€Yu‡•NÄë´sÕ#Dܾt»C`>sâ-sGY'>ʺI벪X<kVùæ G&e—Œ­ê†©UÒ4ÔšÇ"•ˆ*+FìSÄ¢ÛVñ"mÕªÿ.MöøÉdjU&Nr`úæ E79vºD£ÙœUWô°û±JW…3wDi€£©€OæD9’ë×£y&pÈÉÐ ¥_jZ5ÎÆBÍ7cšÚN ¦fÛ6á¸ú‰ç@Â(ÁVãFŒ[…"+â;BìP‘wÀ^Ódž±ÃVæ!&8%&(c¥J'?EYEV~ˆÇL(æŽUÊ ¥Œjʰ”2(|B)¼°Â7ä° 1ì°2¨± i0Å)\ÑÁjPlñÁ«yqŨ©1GZrŒ±F QTH —ÇòGaܱštðDG„Ê…üqÊ+¥¼±ÿÅgl1É)YD²Ì Ë(Ë4UÜqG1­ 2N*Ã\ÓG™tQÅœK?ƒÔRN U²Ð9¯´Ç#©)ãƒeŒ ¦« "R&ªÂ™`2î莑Â! ž*(¥”€O€"œˆjÉ4˜xÔ°¢˜ Â骀/ôÈ/MWñc…#ŠQFS¶Æ€ â±tUŒŠg7ÜØÃ D´( œLÂgŽŠébYÃ3@ ä¸Ä > &œ ¸‰AŒ;^¥äuºc‚™ÂGàÐC™"pàf 3ðäŠM8`Ôºð¦‚;&ðÈ f2Ü`F`¡JæS1„X%™†Èd‚nàø†ÿ…_ €JŽv²Yå 9„èf•xüð¤1’à n܇O¾0F IÛØ¢K*ˆá“UXé¢1äè lÕ࣓!FŽ“˜FO¶8d‚iŠÑƒ…"¶ D•¶xFšx¨˜"‡¼‘EDÀ°„’3Š‘¥ Y¾°…ðìæq¤ƒCi¥“Ü ¨â§$Dd¢ ´˜g©Èey¤[à¸"GªxF Gyä VE2Lªødš¼i˜¦J覈(æ¡Ä4øô ôঃ#šè*˜ª»âG”q¶0Љ‚Š›‹‘Ñ`€â7VQ†›¸yF6â¹£“#&8〕Y%ÿÇ Ñ˜ðÄFS„RÐFŸô 6J€à†BD"r¨€ ÌPŽž”@0Cb …H"0C¼`‡ø¡ Ep„÷»ß@zð¡¨@¦‚ÔP-è!†ð„!‚¡I˜Ã‚h†ê!@‚¨† a‡|¸ ,Ñ‚ :¢5‚p.…mÀS´R–DZ ŒHÄ -8€#& ªLãÈAû>5oà ³zÛZ øI$YÊ耂¡Œ@F$TPÃ(U=aÍH8Æè r8RíG `‚N´`$ØB-üp lB#áÆ ¸Ñ…¾ÜÌN(ºÿ ® ËpØB4u‡nDasÂ>•) Tà:ˆÇ*ÂÑ T¡ ÙxȰ…iÀ!oóX-V N4c*¸ƒ4†p‡-¨ ÁØ+^Q.ìq90A%pPMM —ˆB1°…ƒ ]èÂ6ÚÐ?tÅ@D°ºp[É&[hC Vå>x#mhùް‚iøÁøT° ¬Á †J*c 8¨€:¼ñ?¨dÁ €p?œ!ݨ5£ 8àrpÎÖ ªqàˆG0(š"4a w¨ tu¨#Eˆ.8ÔBƒ,"p…ÿx8¬Åpƒ7Ö0"@„VÙY¶¿ Ì*@è„2¦áMãÅã§P†¥Ú‡ƒiT`ùñ&tÜà1SQBOÜ 1T¨%jJfÒ`E¨!B‚:"iQ«Á :ñ³ b}È!Ì~ö„P´- èZÙj(‚¨ÅPm?ÛÁݶ‚³M-‰xÄËÞ„Æ ap8ÛûQ´\áp‰øÄJ7»Fá2ŽTÀ8ÊñØD./a±‚${¡R€M¬ê ndžJÊZS @¨/ÄVŒ@Ö"YÅÈ”¦Z•,RÒª‚„c²$¥.W` ±ÔîЂˆØ”îD1jq†MlÿB]Ú$)ÌMÔbʨE…'¸ÁYš‚d<ê+WóöR/qŠPŒOxœ$p€Q‘øuBd؈]vÒ…*à Æ»(…ƒM|bÁ¤,F…Ç1äZU9 ±y#ŒKxáØ@xÂá†bà¾×ÚÄ84òW7m(p¦T8¦ã Ü÷(žƒ}?q9W@ÈùD©‘xà¼s°2Ž3eÞUÌáSñ˜C8а*µÊùÒ¦l_1‚ÑÖÈ®b‡v¤€W¥ÞpÔbÆXÐS½b•ˆ„R-íÄH ½bZµ.Îôy<ýÙy˜/'%=kJ©éŠZíkY"²0Cÿ^ª†YT&)5@Hd꟢”î5¥èÛ*’ d´?q+éÜvÚS»÷ï%»Q8Ê·Ädnuk¶4*x¼ÉM /‘‰POºQ¿û ¤ˆ[âHú’Jt爫Ýü¶xÇÝ¥r³[Mþ¦¸É=ï9HßÃôîw¿èG8⑃>Ѐ+䡱޴¯„õÞ„‘  7‘a>ÒÊÀ´zä§H9_1ÆZ"ˆõTÕe½Þ0ëñI¬[ g‘ÌCl™({è)Ua’tê-øt1Úœ{Zaç£Ói÷GÎ>Ú’Æ#ó³ æ¯B&âx”¸ÛÚç’ð„Üàu“¹¨ ‡¨«´x(µNëLëÚnë¸h븦‹1+ˆ(jȺô‰¸ˆMëƒbkŸ¸Rk¸†è·x«¸˜ËP¸, …”¨ ðCDèh Ðá ÂÎÉ¡œìkïŠNŒÚ+½kUÂ.ÿë¼èêª.YVEdí‘”…V ‰ëʈë(­öF¯hlÆaôÈ`©Æá ?ƪ¬pÀ ¦“V…Æ^åèp€ ;e«SrŒ )oŒÚLõžo$ÚëüJ/îJïÀ4å¼ÐëÒožÒÏ ñó¤ÐiåÓ2§¯™0½ O´0½|/[8‰ö$¢Í”nô†nì ±³%ú2o¾¾|/‡[ä.©ÎÆJ{¯{ñ‘fÑ÷po ‰ÑÙoÉ`¯ ¯1¥²rk‚8äFî åø§åÈ„¹Bˆƒ€(…$°Áñ¹öχ2èBTˆ†*p»Q‰²ÍÇQ…fÿˆj‹‰´K‡¸@H„&¹0H·¨‘ã‚2·ì +Ðÿ,(´2( #p¥¨ÝRÄA&2ç> ^A] MX¬Œ“ÄHŒüâRTbG™ F%,E%ÔK%QÒRÞF½Ê%ó£óºî©øÎYVÒ›4Åóè Ô|Va¾JŠ¡X¡¼:ŠÁ¢ <¼Áìàh$UB°"¢Ý+ÃXòRŠð°%ôúν¬R%ÎϽ(/S:™Ž0?âÌÆk/…Øæ)+§$ËŽÓHò>-˜TÒãaàò^VÅ£ÒË _RX+?¨BSêgž„…*Þ¦SêçÀ 1k1½©±K1óÿ^t²V ÃÆL²±,Å3ÓŽ3óƒ#u’1[sžf¥Â‘ó°ó°0…#¤6……²ô§«»à±…@ˆãzäMLæìdH®ÄàˆBî/ܼíEbæö-Ý.®K´ÓãnÝÚF*náðMŒÓâÔd:nßœÄOÖO\Ä9EÝJNL²ó>áóMÌà`θ“:µóHÊsH’³IÌWÐE> °|,|P½ -‹(Þ&2³*«H³$U¢|Lr)¨¢CóòB SÔ¥”¸¡|~- •!7°Ã›`@ä@Ö L¡òÆ 0ì¡8æA¶¡h ÿ!î¥B¡£~ #1!óIm3Jo³~¨´|p“J¥ÔJëg7©Ô4=“*4s.c²±Ê'IÉb cA ñ¬´L«´B……L“3Ét5ySJ+4?Ü41íTKk“4ã´MOõ”4ít55³N ÕOI 5NùP=”I=sRg)?p Sã´Rí´1ÛÔ2ý4O•¡Cž@L®ßÊÍßä1 ’ù‘8¨‡ˆÛp+òCòAáqUKÈ‘(Oð!cðƒëU‘µƒ¦«{h‰3A+1gÕ²² ‡uµdȆ R‡Zy¨B&Iâ3M.R Œ!Œ1Y’Å,Û'ŒÔ«ÿ}3½R2½$“*À^΀dádax¦Üg‚¬²”1£t5;O»ÔP-3ekÓ±^–MS½:Ó5s37sB]–-ySf9rf-Sf“”-‘‰Oa6Io“1CÕ5ÙôeSh9uh©ÖKŸvž•h6S8ÒP‰Ögy…5Meƒvg‘ôkcvJm3?D® èÏZEð~ S߯M;õ[a«=u†®µºŽµµò¯£ÕËC‹[º´Õ[ŸËá…TëYqï¶ÿlp¸–Uÿo[(¹þo¹^«´fK9÷³hdyk¼¾íÁ – ûÈëB…½öP#oýšñùö®€Oít÷ór—ùœ0"p  @ rÀ4 ž&ö€ Ád¡æ¡4  dad!ž@æ (/aÜ ’¡+>EY8Ò7 w—êðÐ-«NÃ(Oîܲfi1Œ1Ñ“‘¯+QîJѱ6Á%åÐSöT ‘öŠú(ØYøî ›q$b’ÈÈä®]Ï,«e9 Œ\ñÎ 4K‘é¸òí®r…111…Û¬ñ„ŸN":DB¸Ño÷1ƒÈå ÿàüGæ$Nå8 à(îþå²KöíåLŽ@ç¶°˜@ANàšøÜÎåþDOÖÍŠ'‹ŸMl$K¦S@÷Ä?Ç„àÚØ›3ÜÎñ­ŠÁó>KŽå˜SŒÍ8ã¤8"gФH&r‚h`nA Ž€’ 0ÎvWÈ€vw—ëž/Ÿ/=¯“ã·’IÂo<®@ *@¡ œ 6à4ÀXÀú ŽÈ"à^!.¡~`¶` »Afeô¾Z8é Ý€¿Pƒ‡Î ˆñšS™§Y ƒë¦™‚»Yú„Bùi TÇ›·Yù™ÿš§™ƒ·9œEñ ‘½Â™+9œQ[ø®ëRQGB#²9 9izô|±Zƒšs¯*yŸS0Áå¹›ƒ‘½ oŒFìùd8ú„QŸÇ! ³Å¤í9wç v%‚ VBÞöOªä:ww C¨ pÒUP†67XÝÑ·è§±«ˆ:dtwqm [óÖ†œztšX=й|Kªã6s¡s±Ú¶÷Ïo›èZ…ÈZ‡è~háÝÐM„ðäDÒBÐá¬@#pr'GbĨ¬‰’¿“-9ì$ø’3¥¡íèŒà4À Ö© 4a^å Àp¾ánÎ`ÿ~àd4  ª £P ´€€Ò€Æ* ì‚á Z š¡… " Zönû "‹ “cýøùÊ!8½dx ë·0°éÚþy ‘ÐñPí@…®[x8škwÅ/JsžŠ°Æ1ø2L–ò—»g3ún;"–ü¢ú$óç ‚x"æ©Â¼ì¼„弤ÎÙFÌíœíÓ–ÑmìD~¬‡­MX]ËI(®ˆù8P‚Ø;pUQ÷º²ïWÃ5×(¬K(†®­!‰hZg0¨½‘‚^+Å÷OŃÑq€€uWǃvèY]uÛ†UÄIÐ!Õ1·ˆxÃùäÿB(Ò)R‘ia¼¬X Œá bÓâ„s$<±”HòZi°û®”ZT6àUDET¼Î ©}€kl¯E¡ 3ä 04"M¹bÆrCœE#XÖ6ùÜÁ¬´23Ž’ÅÎ!óï&•IÕt)l“¥”½BW<”Ò ƒÒ1}Ò=tÓ5}ÓMVÓu¾’LÉô-´±2ÝÒïÀÒw‚WÖtÓï%MÁ´0h=ÖIÝÎi}'ÔôÕs}MuÒ‚×k+fé¬ #!Óc½Ø3õ¬ÝQ=ÃÒ!2µÙ)½~2uÒ«½2•Û?ÁÚ¿½ª½>Û‹!Ú“Û«=Sçïÿ7y:auïö‰¹dFÜD<;ë:ë­O.æ²ä;ùsnù9ÕmEJÎI¤8Ùd³îßéÄ?ÜF"ÞÝÂ3?ñ³ îå6N:9žŽå³;~‰Ï˜Œ1:óxã?nÈ·d¦é$åÙ3O:^@‘ó¥¥X;/$çfah!ç'!Þ` Ì`ÄÀ ‚Þ †~öÀ Îà >!è;aÎê—~ê—J`ºë«~ë§¾–^ê¿ìÀ :Ä€ J€>@'® V! Â`Î Î ܂΀J íÅÐÞï¹}(Ø|Ø€ðÙ Í?Í ?ÍÙ ñ £ñ!¿ñÿð#¿ò-¿ÿ ï!_ï÷^óÿóA?ôŸ H¿ôI?ÍMŸ¸`ôK_¸``\_öc_ä€ bö9@ö `÷Ñ@СøYø‰ŸøƒŸ„ø…àø9€ù§¿úŸ¤¿úµŸ²À¸ßû«ÿ÷9À² üÇú³`üËýG¡ýG! Ü?þ­`â?þÕa^” °ŒÂ’ Á]Xv±JpŒ#XX)Œ¸+AD‡F޽8V1+V´Êˆ,c T™j!«-;¹¬Z™,]ºYšÈš'mžÌySgΙ#w–ñI³f5£7…âLz)N—Ôd2µ9(PšQ—ÿ%ºó©Î£L•vezUjϱA¥Ê¬ôìг^ÅvÚö*O™\¶MK+Þª}÷ò”kwoUµ7—6Õ‹rXZ2aš¥5£å´n9;%(” JM©X±H A*‰šXì\ó@M 6©Ø­c½F]j÷‰X¥éN¢[÷"5åñ ÅœùoRïJ•z×<–êÔ¡'!UŠéI¤‹Ÿ=5ów×ß+UÎ<óR¤Ê1/Wî˜/6TåW¥_ÿ}6Øw߀èE9H}÷!ø~ªDR`$üUhá…FÉ.6¤ÀŸ„¦ ¢ˆà”hb‰Î€ãŒ )¦8†3/¦2†Œ©àÿ*7âˆÇŒ;Ö8Æ@Î(ä=™ŠBʸ¢ L6é¤ à4)¢ ª@i¥:L.¹"Œ4òXc8úhãxÐèL*ÎlÚ ò¤“AÚˆã9eö#™5ÚX¦—,:3VI4ÉhK/EY)¥ÓKc™b‹ÑE—X’Z5Ô£Ie5Õ_;Mª×¥.–§‹™õé¦uŠ©Q@Ñ…¨¡ž )Xl‘5j¥·‚Õ¨§vy**[®¢õÓ«…ñõR¾+lW„BÖb(­uLAæXSÕÔm 0pëí·ßòâm·àrkF·ä¢;n ëŽ{p‹î,êÂ`/½ß’Ë-¾ôÆ[ Ùþ Ãÿ,eÌâ¾ÿV3ð¿5Ä›-½Õ|°Á×PFÃ|°Âw±Â \pÁ|ÔQG|é,Ôt<²Ë0«l­Øº$Y£ØŠD-[¦&U-Jˆâ|(´"}pÓR…”˜NÕ†D‹ÒÔPKÍЮ¦j´]Ñ•¡@zè´m´Ó] ØS/3õÔ.­d³HJ£aRYÆ.-Ô§P‰ä“Ò|묳M Ø”¨Í†ž4x¡@3ªø¢ŒÃM8Ö‡J¶Òâ,ÁýwâGµå*U®9d›kÞ@M‘ ~”Û‡Î(Ö™ƒ.™ë–#Þ7Ð×>yä.¥„ºá¤ó¾¹ì{¢o?µáÈC“J„¿DzÿîG•Îzá…VŸ­¿ž5ÁІ$2żã¾x´´`þùèÓÒÀÏ!ÓèÕ¾Òû˨ßþK´´ôA+ÉÔO«_ý¢†êÁouJQšüœ´hAK&CÙ´hf³¢¥}[ÃÉèXE«û®iäsZx†3¿ åf´cŸTP§–¡ýl'CkáZØ·:Ð=Ïi§c]Ö¢‡@ „CŒ#ø¾2Ìy?ä]Ј¾Q‘Ä$—ÓZ5ZG·Q­j‡YÉb±œh\¥V‚ в2Õ*iq+–Œ]œ]&,#Ly«I­ê+zqU­hf,`™1Sd $«À¨*§LÊUšê”ï–ªÿ/új2eh‰Õfø±iÁp‚Ð:XÁPö²M h°(E‰Ðf¿ ãHÆH³°ò‹¥ºö®FC7ÚŠhDóôv½“ôr&‹Ê¤£„¨+!n¹œ-4)ÇÀ„`£S¦3 v(âUS-¹Ì¦™X-k&훎³$ ‰'B)1‚ÞL ¡°ÁKZ#wGëXVbÌ]º­-€Ú£ašå;ön‰„ÁË]à¢,žK-ˆ(`dÉÆº¼ª)vÄc®3PRù¥'iL#hª­ÜªT%è@+zÑ8:40sILQú²–À¦‹wA¤¬®¦ÇjÒcº©¿Dæ’kùò§Û DIÔP–ÿÒ—=UN™¹–“5 —;‘ÌèUËm"fƒ4›ªT˜ÙMLÖðZ*kæÍx©T¨’o‡Y _&‘zIeÔªÜS‹ÇæºÉR¹pcK­ä,Ûù:lölyO`;…Ø”–<‹vÉëÊ  Nží¬>܉ÜÞ¸M\ÙHÑ%¢¸FÎfE¯mÅSÚ³%BÁäw£õ[!ÏÐy6’ð\­ö¹Ò‚¶@ûÝi%çØCªY† .íR»D†sQÂÛìjaG9Ú†V¸»åœq›‹Üç&NxºµÜït÷YÚioŠ~Û®p“Æ-6r£¶bäH>YT¢@iç…¥*çK_úš·¾ø­"~Ñ[Þýª7¾ÿýð}ÜÆX©R¿þõ/Ñ\>¶r¾µ’¯Pàûß2<Í£"ÛŽW™îŠ1m|¨Ýœ²ÐA†ø£vñSdIºÅ–úÌ[J­âRP¡ÃÒ¢Þ#G~%/Ö£z 9¢¼ø-´²ãZQ‰bå&Ö• …eVùÎj£ªQ‹ €)s4Pµj‡©Zt6®†P-ó‚{Ö×/Ûx›n.!.§;Nx"pTtV-•÷ Ç4¸Êfi3 û èT­‘‹~Vó«;ÒJвL$X;”èr3wJ¾›I¬@Žp$™Æ(•úRšb TEÖ"­²Æ·ÖÊW_´“|ÅbIÙw´ÿ¥•/õæ`ݸ(¨žÉ¦c9/‚eÓ®”c—ܾ-ZºÌÞem—ÈÞ-‡Ò”åfì(Ý@g{;ÚÙÞ …çûmÅÅÛv^T[šNú:úÛ›ÛnìÐëì«8š¿Ì6áì¦;íocmÂù.®võv[J3y°Møoí|8¾ïÁ®0‚•&l  Æd¡JAŸÌFÕ1úÌþd"·ûŒžJ$«‰oÊJ<½ç®v{±íKXÁ—y+ù½ßCYSgÆ·õÑkl•ú‘·vq´ñA^aBØù G~å{ü«¥¾ô/¥Ýøèôã‚ÛW“fJ–rÇ®UÉyQÙ\ݸn@grQe8Uו%§~nª¦4«›Òé±(§ ox#5,}VƒÛ†(pšœ¿š+Æ©]^1×\y[×…–¨Y-ªDµ¸\~©f×Už.·K†Ýÿ&mp3^®¨pv)ZÁì° Àe¶° ¸ÚŠ›§¸žÅZÛåŠø6ÃE¹°ãˆqJ=‚›‹·lbשݷ«zmó£¥jº´l§ö‹ç¸N~a¨³:ˆÛŠ‚£ÊDãÚ’› l°+P—y_¤ŽÈ&©„ù*É…ÁÆF¯²qHF±&¦‚{Xž ¿#i«fâiaPDEZ¸¤¤ši‘JŸÂæ”îøy‹#ÖbÄX7u\û¥25Q·†R¿¾Š5Ÿ~šq¯[‚™´Cêã¯L‰‚<†¿ èR›9H=L«æ®„y…%Ö“³yvÒˆ¯ ¿UŠÀžØˆ9„X3‘‹¸€iùÄU¼ÄVüÅ[VÅVLÅdìÄ`ûv±¶nÙ¯¼Æ«»”oŒQºkÚ«»‡¼Óšžo¤cÏJÇ » ›z@QM‚g‰ §¸¾ˆ‹£È¸"1ºÖ@}Œ2¹d¸†þyÉËy»Yªºt²Þz¶¨+P‹­«K©ˆ gvžl¡³›8Éêf¯(Û[«¹ÁÈ,š2ÆíÅa<Å\üÅQ|ŽÌÖÀOb¬ËÃ|Ìblm³ Æ ÿDÅf,“R\TÕ|Í[,ÅOür$¡ÍØhxBËCŠbwSnlµu»³á´P«}Ô7àÖ¦¯-Ú£ÚD5_ÛÍþà==<>áßܸM[sËZu[·&‡‰evÐ-tÑÿ#‹'ÇZ$í×kÛȬÌ~º®œUâðMÒ£Õ[d‰Õ•]æ™ò6-Ê6Kõ'”1:)uÙc”»/ùzô×cæÔXŒ|ÔC§ÏBHÐkI$]R! Ù6—»÷©x¥Ê*×$Vz+®3¥=áÈüàLAáîÄÕŒOs#Yj~à>™ær^çPŒGKH°•¥V~Öö `ÙÛ‚ÞÀG¶£ °µ]ªèûdÛ®¬&™ÏI“‡Ã%ÒLiÎÈMMÁ åaÞêéWkÈ9‡BÜÖ‰þÎoˆÂiD5³ SÍè£xó¯x‘ÑJVO/úÏM€1¦˜` ƒŸç<}àkéàvþÍelmJ”ÄZ£àÅÿŽæëÔìv.£ÜzPÀæH•-­]žÆƒi¨bltØ Æ¾ªF£‰‰Kvz|EÞÆŠ}}\$™¹……Å•™ÛŠŽØâ²4ä÷s«h»Ý]¸“Mq[-¾d4r»D¯žÓ*=i¼¬9Q«ü>Ø·ŒBöÄØ ÇG–™¸‡³‰‰ó¸h‡)Ð~æÍàÀ>Ú×ü*y™Ù¢>Bh>?ÉòH-*ߌ>Ü싆·)W¹‹Vãc˜¤õ.tŸås_ÐÇZÎ!Ú±?ï:{ß•X öLgš¸ÚÎ3÷áF‡tVð7HqXÞìR>ó*›N}8±Èyä€×.ä‚2Ý‚Á÷ol´”ç ¡1ãrú¹Aÿ|˜ƒ ÄxȳòÉwR*ccÆt¼3Á2²›ÎÓ«m>[¶D©Má./ó‡Í”Ä"ñàŠ_JÕvù‘üI!o[G}ù˜ÿñȎèNÎÇÕïXö…¹íû‹Ò{d.É™gé&yÕúD·Wƒu\£ÖŽª–Õ®{ÈUׂåy˜qék¨]çï֮䦊®°Õc‹¶oæï»ÊyêVŸãeBdY{€XG«"b>yùŠÏÄ¿þ¡ÔðeðÚ*ú¯ÝӬĉ„Š?ÿçÖÐ$8Ð`AkÖ–•©V­ ƒHˆf¢À‰-HqãĈ –aȚɒ$V£æ°dÿC•.SÊdé°fÌ“$]Úl‰ÒçÌ“6uê Ú’eÊ¡DQòT9óeÌ¡Go6º4'ΗE6 ŠU*W˜XWB:ö©Ì¡´ª-Ömƒ“p«©ëîÂjx©–ñ€Î…e”K‹åà¶kY¦f¸ía†Ë2f+-ZÁHwRCÜÀîâ4 ŽÛ’îÞÁœ­òº´.éÌ™óF¦ ±LÏ¥öTé9ñì{'&î›òbÂ;zÿ“9SnvÓ )=EÊ 6NHË~Ãkþ m+ 6Jñ¯ŸÈól(°Šù&€;z’X¿žÄ0À‘ Ä"ú)(DŒßûŠS›ÒeBÄ!Ä—»ÓÝíXK¢‚R‡ìkVf[‰•îd¬m9J1ÙRÔÿ˜"Â’©Y¹h8S­ù)gdo1Øn0ã$ÖMŒNåj™ØèD²Œl³Øk˜#~¯:ØiÞùºÓ½.Jl{YôÞ÷Æhˆ¹ÿ>ò‰žóÌS=ï‘*âÓbÒ’ç= AdŠ…½Z×­¶)qb㘞ø7|LlÈzßX.CÉíj$f¢¤9¿ÑÍlkÈ!y·MÎËe«¢G¤nx{Ÿ¢Iõ®5Gjט%¤“yNRÜÒ–µZG.¾¡íMu£RjDó£Yw«šK¡äMš$‰ñ”÷Åê%M›u|^ñΈäå‘gš‹Ž«^ÒFíì‹@èÌ×Sµ›å'‹âDH)¥@‰ š$\¤ÊžÃ±€Íp8d×—ª•¬~:ì\ü¥WX&¦%&*,d›¤Ù&ú.—,Paì\›Ô¾Ùئ~ÿ2Q¡DprÕ 2‹CrB¤"² €{LÎo&Ô.Ÿ`îŠd ¸ø˜Â”ˆý32*­‹&RŠ&×ÐÄOƒ¯êI̘ǽ«ž‡‹Ÿ:šÎóÍ£¥¬iÑT‚NƒPo?`m y¦Ö‚¤u=pŸhd0†Ùt¥ÔP›L§Q!6S°y]¦ët”ÒZˆG‘SÑǰ­o°u²â‹t$Áá8¨r|…QˆF¤š”Êrª]›s.™C§ŒNng;MNyŨL˜„êã=/Z°sEÓX¨(¡c¦œÔK«B,^W¥¹/uŒJnr›º(:áS¡>iMí„C¨©\®RÒAÿ_DÔJ×òA$­à•«A 9Öñ ­B«Lö„²ÞЭ¯™ÑÖ ¾æŽp5{W±fù“oÒžéÊ0u©,r5Ë„94ð²¶öœ{)[ú4bßN+6QJþìÛO±…®çÂ/ãI%Y8¨°´vªäl Ûžî1HK⥋ͯ|)¾ T†½…®›T Kqß#U¹ßmŽ)V›¸·j’g>!:ö›ú¢7$Sfç{Í.k¾™ÔCÄ|æ‚ ¬,[ [$©èHHµY¹Œ‚rÖüÆIæ–MPw¾å™™ça̺t>¤ßìœP4uM¶¦5&ùºÂ^ñ5š­ “ÿ^ µÞôU³ò³ác@»%ÝZˆ)Ý‘V+Z9å98:5RLN£ÈI²©yº«ˆ¤žôIMÿ 5D³f°ò-b&áèòɵŽy¬6‘ š½ ߬µêUʦvD ãìj÷G§Q5vGCäÀfð¸wéëMˆG'0—œ¹Ÿg¸éöqÚ¦ûó!d‰¼ã,öa’ ¿uôRpÜÖø;Ò½ÆÄ{91^èʾHìJ6ëÓ·þ³(Œ—K_ò÷Xö³B®W%¦ÈʰÇ}>q ¡Y`ÅÎɶ³[†m4ÇVEù²‡ãÖšùÐÎüå ó·8EsoT}ðƒ¯ËÿH¶U©¥¦&5©>’®‘¾ÝÌríKL.ze…fÓi²~7bi²º¼Ø¥Kl݆5ý…+ðVªfÏ¢-l#Z7ŸíV¦L"q˜]kÖNœ»{G䬫7÷ÌÙæÅvÛ%s{.æØ˜9èZÆÞ{„rù1Óôè{/o,]ŸŽRQNn9N—|Q wÈWô¿ åvu’ÂGuðYŽøÏäFTö²ßaipƒÀA–9/¥Ê\RŒ<ÝõÆ%ýJô;öõ6iJw œ(áG”nmi]–²rÍû£ÉÿŒn÷™'³Î1ëÓ0ZÄ-¢¼Û¯± b‹”6ïó˜½õš¿‡ø2 Àÿí9ÍCÀ¥á(y{àùyC’ÈI)Írª½š† ­‡ñŸGãÀËßa*Ô“Äù¨oK¢º¾ ù4 |Ay»7À¢À 9A΢ Ë< £&bj²Ìè ·C¼>û—ey%81´\S.¨³º¸¡6SºE*ŒÇz µ­ACºÞª8Þ¡_“ÿþë´™{‹¬,œÅ‘Êå#8–" ãs¾¯D&ø›¾«l>“É· AÙ°¾ék zÛœDì'4ÙDC º„>‹ø³c(qñ:êÒšK?Õ»9û §B P+þÃ;–a¥ 3 æÐB’½¸D" FÔb9ûñ´{JÔtJÕìáé·Õ¤¯Hü’ع$AœÉaLi܋ˡ¬ÞdCBºÝÎed¤5É'jÊ–*!¨ûDM´3Ìl.?lSL'Z> Í–ÛK+鯴)ÄAĽ=\$·¢ž¢›.k™” ¤"ê$ÇT…AÎvB,=¼n ¡9a“’㸓„‰9I¢VŠ ÌÈ«ÿb–ÑjM¤³ºUbj.âŒP ½ÍÓˆ¼©óBi´OÌÚ@cbÏ;“á‹£ ¬€ŒÊ¾$QtžªeQÊΊúÅbY=ôó#éJÌ&r¥%rÎ ;"³QŠJÅйÂü›!ÍC@ºÑ3¸w)Gh*Ä»™ËûYÊK1·ÎÖÌTòJö©Jêžõ³µ #²Ì ÛpÅ ¥(t©þ£…(Ù -ÍÑêF?©Œm‹”6­ŒÀVÓ(“ Œ‚"MÔ]ÔÝŒ7·Ü#E¾ý"¤´Ô9ᑤóIN¥ÇÞcœä;sdÆÈ#Õq{Æ×Ü {5¢¢PÊŠÈÿØŒfªX’€¬¬ÌjA”ÂìEdH,E½R†8‘±Œ­UT¼:å\SÇlÉÈD\(¥Ã³È9•S¼“ÜÇG<95£(&9¸ºËÆ”GVZ%À %ÅÂ5˜Â=S]3ë"2re(ªâ­±;Ç¥2Æ2Á*4N€E®€=N-X_“æTO+ÕÖÊÞË(•xP˜XŠ­X‹½XŒÍXÝXŽíXýX Y‘Ùõ’=Y5Y”]ÙŠUYuY–Ù‰U™­Y›%Yš½YýX˜ÝYŸýY  Z¡Z^(Z£=Z¤5ZPHZ¦mZ§}Z¨Z©Zª­Z«½Z¬ÍZÿ­ÝZ®íZ¯ýZ° [±[²-[³=[´M[µ=Û¥­Ú1TÀ¸T¹Eºµ[¸]Úôè[¿ý[À \Á\Â-\Ã=\Ä¥2À/ÄmÜùh\)\Æu\ÊýÛ` ÜÉ-\ÅíÛÌ­\ÈõÜÊåÐ]Ò-]ÓÝÜÇ5]ÉU]Öm]×}]ØM‰å½ÅÛº½Û¼½[¼¥Û1à]ßÝÝÝåÛî^â-^ã=^äM^å]^æm^îÞ¸rÞæ^å«â¥^éÍ^õz+âÅÞã¯í-í•^ïßäýóM_õ]_õ_ïbßë/ø_ú­_û­_÷à…ÝýÝÞÞÞå_^TÞØ-`>ÜÈ 3ØÝ2½\ÎEˆ~à ñ[^]®àØÅà×àîà–2 VÝö`.a¶Ü¥å]ÿ `Ûí_ॕßûa®ÞµºaøM¯ïå^òßþ¦ð}ßøM/÷½_¶ß¥ùa%^â1Bâçeb(Žb)6^XÚ^á;suite3270-4.1/x3270/html/x3270.jpg000066400000000000000000000074421413735575200160620ustar00rootroot00000000000000ÿØÿàJFIFÿþJ CREATOR: XV Version 3.10a Rev: 12/29/94 Quality = 75, Smoothing = 0 ÿÛC    $.' ",#(7),01444'9=82<.342ÿÀ ddÿÄ ÿĵ}!1AQa"q2‘¡#B±ÁRÑð$3br‚ %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyzƒ„…†‡ˆ‰Š’“”•–—˜™š¢£¤¥¦§¨©ª²³´µ¶·¸¹ºÂÃÄÅÆÇÈÉÊÒÓÔÕÖרÙÚáâãäåæçèéêñòóôõö÷øùúÿÚ?ð<®ÆÃc8ùq×ñ«ú&‹¨øX‡KÒí¾Ó}>ï.-ê™Ú¥,@è ëÚºñðSâsÿö@è>ÛoÏþD¦Ÿ‚¿€Ü<=û}·ÿ㔣à§Ä,|=œvûm¿ùð[âLJrN0~Ûøý/ü)Oˆ@Œx Óí¿?ù‘~ üCØðÿÈÝÓ-ùÿÇè?>!mÚ<;Èê~ÛoÏþD¥o‚ßFTø,ÝÛ`ÿâëÖô]KÚ´úV­oö{Øvù±oWÆT0åI QlnÊœ…êØþ•ièº6£â-V'J·ûMýÎï.-ê™Ú¥,@è ëÚ¾ÚÑ´K J·Ót¨|‹wm‹s7V,ybOROZKÝjÆÇTÓô¹®1¨yŸe‹c~óË]ÏÈ<‘žÕŸ§ø×ÃÚœš9±¿ó¶üï±&Eó|œùWåÆÞÆ{f?ÆþÔŽö=CzjþwØ?s óü¬ùWåÛƒ÷±žÙ¬kæóþýþ6û{ß}·ñ*ò¿´ögÛ÷>^=·b¯x_Äö6k7‰?µu Síd¼û Aö)˜¿ÈhãœgÍhéþ5ðö¨Ú9±Ô<ÏíŸ;ì?¹yþN|Ϊ6íÁûØÏlÒiÞ4ðîª4_±j`Ö<ÿ°&Açy9ó:¨ÛŒ½ŒöÍhhšÍ‡ˆt›}SJºóìfÝåËå²ïÃ<0`‚:V—ÄC·ÍáN5³åýœ~ïæù×wúÏ—înëüëæCãŸjÜø³Á¿ÛZäŸñó¨jImçc…ýÜkµpWޏÏS^}^…ðW‹zq?hÁÎ3û‰+êvïR±Òå¸ÒôÿíKÕÇ—eç,oÌùÛ…À%½ñŽõâŸòäøH»ÿnŸð”y—ØþÍo7o|Òq«ðü$]ÿ·OøJ<ËìfÇ·›·¾iä/È?ðwþÝ?á(ò?/±ý›ÞnÞù¤ãWàøH»ÿnŸð”y—ØþÍo7o|ÒÿÈ_á :ïýºÂQä~_cû6=¼Ý½óIƯÀð wþÝ?á(ò?/±ý›ÞnÞù¥9ÕÔ®?á m{£gìŸð“ù—ØþÍo7o|Õí[¿¶Ö!Ôô›í›ÝWw—&Å·ÿ„›ÊR§†³û0Ïaæã¾kÜkàEzÁA‹ºÆûFïÄ•ôÏ,¥àûË/ì?íå—fl~×ö_7)ÿYü8Æï}¸ï^GƯÉ?ð wþÝ?á(ò?/±ý›ÞnÞù¥ÿ¿Â@ußûtÿ„£Èü¾Çöl{y»{æ“_’á ïýºÂQä~_cû6=¼Ý½óKÿ!~ÿ„€ë¿öéÿ G‘ù}ìØöóv÷Í'¿$ÿÂ@5ßûtÿ„£Èü¾Çöl{y»{æ—þBüÿ ×íÓþ#òûÙ±íæíïš\ _åaý»ý»ÿn¿ð“ù—ØþÍo7o|Òaµ†Æ?á!]w©ÿOøIüËìfÇ·›·¾kßëàEzÁ\ÂÞÐÇý|sëû‰+é¿X OÂ7ֿؿۂO/wÚ¾ÍæâE?ë?‡Ýï·ëȾm^Fþ'ë®ãlñëÿ 7‘ïÇØþÍo7o|ÖýÿƒÏÇÝÿY·ž´íGÁ>!•µƒy¦mù¾OÛÿÒ#¶ÿ„‡òú7ú/Ùøû¿ë6óÖ‹ÿx‚_ít½³þÙó<Ÿ¶·›¿ü$8Ç—Ñ¿Ñ|Ž:¬Ç=k7ZÑõ ]bm#U¶þÙÔ5]¾|;ÖßþO)C/̧Ÿg<æã¾kÜ«àEzÁeâÞ„1ÿ?úþâJúwƶ?Ú~¿³]ûo—;í_fó°êÖñ·Ýï·ëÌt]oQ´ÕàÕt«í›Ý[w—.Å·ÿ„›ÊR§†³û0Èè<ÜwÍh_êÁ_Ûƒ®gè¶>G›7Ù<ßì øqò¸-uç³0àŸ/>•¿â_‡^ÿ„BÖÊÓÂÛÙ[ÿ³ôÿí-óæÈ Ÿ¼-õo›=01šÀÒŽiáhþ+oìíÃìßiÐ1$ßÙ{ä,¿éüÓy­¶N Ù½*ÿ€|%¨iZ«Ü[øwþ+!µØ}µoÿ´~V ûÂI‹Ë'w{~JÀÖ¾ø3WÕ®<3á}ì÷Öû´5/´ÌÿÙÛ”Iî¤p%óeùOËÔ×A.§øûâ/Š´Ÿ[}¾ÃDû'ö|[Ú/#·tœÆT¶âŠ~bqŽ1YöÄ><øI£ê¿ñ<2yßoÑÿwmý£‰ÊÇûá·Êòöù~öܵìð¢½࢓ñ_E+óßï?儘¯ªµÍOñ“.“ªÛ}¦Æ|y©æ2gk©¨ y€ÿ„‡Â~. í rû¨ýÜ_ð’lñ[O³£{y¸õ«Ú/‹tý3KµÓ<#áï>Ê]ÿðŽ/ÛY´0Å®¹f/,–ÿX~oáíX7‘ø7YÒ4í.ÃÂ?Ú–)æÿÂ-ö”Ðhe·]òpbòÈ'÷§æÇËÖ´?µü=yàöð®á¯í÷þ@Vßn’í=’y—3 Ðùl ùÈÝ—ŠÏÐãðf“¬Ãªø?Â_i¿Ÿwü#²hÌŸÚ;T­ÏdEå‚ßëÍ—µt6~0Ó“VÔõohm»×ü¯ìÉ~ØÑÿkù ¶^q”7˜ øã5›âm[ÃÞ¶÷QûÙ#ûL'—1gä>îGµx…z—¯ØxsFñ%µÏ‰°o¯~Ëök¿°µÖÍŒåþ@9ãïgµuÃÇêíøÓ·Õ¿áÏé¶øÿœÿÂîúøE?ûSãðð?ìTÿìiùÏü.ï¡ÿ„Sÿ±¥>?ññ¿þÅOþÆøÿœÿÂîúøE?ûSãðð?ìTÿìiWÇÀ6æøÛ¹{øEqÿ²×;ãOü?¸ñmöºöŸð—iyºó'°û—§\~ó^ƒnÏzàüMãoxÀ[ {RûZÛnò?q{wcwÜQŸº:úW<êÜOZmQEQEQEÿÙsuite3270-4.1/x3270/html/x3270.xbm000066400000000000000000000043441413735575200160660ustar00rootroot00000000000000#define x3270_width 50 #define x3270_height 50 static unsigned char x3270_bits[] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0xe0, 0xff, 0xff, 0xff, 0xff, 0x1f, 0x00, 0xf0, 0xff, 0xaf, 0xfe, 0xff, 0xe7, 0x00, 0xf0, 0xff, 0xff, 0xff, 0xff, 0x07, 0x00, 0xf8, 0xab, 0xaa, 0xaa, 0xea, 0x0f, 0x00, 0xf8, 0x55, 0x55, 0x55, 0xd5, 0x0f, 0x00, 0xf8, 0xaa, 0xaa, 0xaa, 0xaa, 0x0f, 0x00, 0x78, 0x55, 0x55, 0x55, 0x55, 0x0f, 0x00, 0xf8, 0xaa, 0xaa, 0xaa, 0xaa, 0x0f, 0x00, 0x78, 0x55, 0x55, 0x55, 0x55, 0x0f, 0x00, 0xf8, 0xaa, 0xaa, 0xaa, 0xaa, 0x0f, 0x00, 0x78, 0x55, 0x55, 0x55, 0x55, 0x0f, 0x00, 0xf8, 0xaa, 0xaa, 0xaa, 0xaa, 0x0f, 0x00, 0x78, 0x55, 0x55, 0x55, 0x55, 0x0f, 0x00, 0xf8, 0xaa, 0xaa, 0xaa, 0xaa, 0x0f, 0x00, 0x78, 0x55, 0x55, 0x55, 0x55, 0x0f, 0x00, 0xf8, 0xfa, 0xff, 0xff, 0xbf, 0x0f, 0x00, 0x78, 0xed, 0x62, 0x0c, 0x73, 0x0f, 0x00, 0xf8, 0x5a, 0xdf, 0x7b, 0xad, 0x0f, 0x00, 0x78, 0xb5, 0xe7, 0xbc, 0x6d, 0x0f, 0x00, 0xf8, 0x5a, 0x5f, 0xdf, 0xed, 0x0f, 0x00, 0x78, 0xed, 0x62, 0xd8, 0x73, 0x0f, 0x00, 0xf8, 0xfa, 0xff, 0xff, 0xff, 0x0f, 0x00, 0xf8, 0x55, 0x55, 0x55, 0xd5, 0x0f, 0x00, 0xf8, 0xab, 0xaa, 0xaa, 0xea, 0x0f, 0x00, 0xf0, 0xff, 0xff, 0xff, 0x7f, 0x06, 0x00, 0xf0, 0xff, 0xff, 0xff, 0x7f, 0x06, 0x00, 0xe0, 0xff, 0xff, 0xff, 0xff, 0x07, 0x00, 0x80, 0xff, 0xff, 0xff, 0xff, 0x18, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x40, 0x00, 0xc0, 0xff, 0xff, 0xff, 0xff, 0x43, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x43, 0x00, 0x10, 0x44, 0x44, 0x44, 0x84, 0x42, 0x00, 0x08, 0x11, 0x11, 0x11, 0x41, 0x42, 0x00, 0x84, 0x88, 0x88, 0x88, 0x48, 0x42, 0x00, 0x24, 0x22, 0x22, 0x22, 0x22, 0xfe, 0x00, 0xfc, 0xff, 0xff, 0xff, 0x1f, 0x03, 0x00, 0x04, 0x00, 0x00, 0x00, 0xd0, 0x00, 0x00, 0xfc, 0xff, 0xff, 0xff, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; suite3270-4.1/x3270/ibm_hosts000077700000000000000000000000001413735575200211042../Common/ibm_hostsustar00rootroot00000000000000suite3270-4.1/x3270/ibm_hosts.man000066400000000000000000000057101413735575200163110ustar00rootroot00000000000000'\" t .TH IBM_HOSTS 5 "30 October 2021" .SH "NAME" ibm_hosts \- host database for x3270 and c3270 .SH "SYNOPSIS" /usr/lib/X11/x3270/ibm_hosts .SH "DESCRIPTION" The \fBibm_hosts\fP file contains information regarding IBM hosts on the network. An \fIIBM host\fP is a host which can communicate with a 3270 terminal emulator such as \fBx3270\fP or \fBc3270\fP. Each line defines a name in the following format (optional fields are shown in brackets): .LP \fIname\fP \fItype\fP [\fIopt\fP:]...[\fIluname\fP@]\fIhostname\fP[:\fIport\fP] [\fIactions\fP] .LP Items are separated by any number of blanks and/or TAB characters. A line beginning with # is taken as a comment (note that # anywhere else on a line does \fInot\fP indicate a comment). .LP The \fIname\fP field is a mnemonic used to identify the host. .LP The \fItype\fP field is a keyword that indicates the type of entry. The value \fBprimary\fP means that the \fIname\fP will be included in host-selection menus that may be displayed by a 3270 emulator. The value \fBalias\fP means that the \fIname\fP will not be included in menus, but will still be accepted as valid input when a host name is required. .LP The \fIhostname\fP field is the Internet hostname or dot-notation Internet address of the host. .LP The \fIhostname\fP can include `s:' or `p:' prefixes, e.g., \fBs:finicky\fP (see the \fIx3270\fP(1) or \fIc3270\fP(1) man page sfor details). It can also include an LU name, separated by an `@' character, e.g., \fBoddlu@bluehost\fP. Finally, it can include a non-default \fIport\fP number, appended to the \fIhostname\fP with a colon `:' character, e.g., \fBbluehost:97\fP. (For compatibility with earlier versions of \fIx3270\fP, the \fIport\fP can also be separated by a slash `/' character.) .LP The optional \fIactions\fP field specifies actions to be taken once the connection is made and a data-entry field is defined. If the text looks like an action, e.g., \fBPF(1)\fP, it is unmodified; otherwise it is taken as the parameter to the \fBString()\fP action. The \fIactions\fP are not intended for entering usernames and passwords; rather they provide an automated way of specifying a front-end menu option. .SH "EXAMPLE" Given the following \fBibm_hosts\fP file: .LP .RS mvs primary mvs-host .br tso alias mvs-host .br mvs2 primary mvs-host:4012 .br vm primary vtam Tab() String(3) Enter() .RE A 3270 emulator will display four names (\fBmvs\fP, \fBmvs2\fP, \fBafhost\fP and \fBvm\fP) on its hosts menu. The names \fBmvs\fP and \fBtso\fP will cause connections to the host \fBmvs-host\fP. The name \fBmvs2\fP will also cause a connection to \fBmvs-host\fP, but to port 4012 rather than the emulator's default port (usually 23). The name \fBvm\fP will cause the 3270 emulator to connect to the host \fBvtam\fP (presumably some sort of host-selection front-end), enter the string `3' on the second data-entry field on the screen, and send the Enter \s-1AID\s+1 sequence. .SH "FILES" /usr/lib/X11/x3270/ibm_hosts .SH "SEE ALSO" x3270(1), c3270(1) suite3270-4.1/x3270/ibm_hosts.man.m4000077700000000000000000000000001413735575200232662../Common/ibm_hosts.man.m4ustar00rootroot00000000000000suite3270-4.1/x3270/idle_gui.c000066400000000000000000000347751413735575200155670ustar00rootroot00000000000000/* * Copyright (c) 1993-2009, 2014-2016, 2019, 2021 Paul Mattes. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the names of Paul Mattes nor the names of his contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO * EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * idle_gui.c * This module handles the idle command GUI. */ #include "globals.h" #include "xglobals.h" #include #include #include #include #include #include #include #include #include #include #include #include "appres.h" #include "dialog.h" #include "idle.h" #include "idle_gui.h" #include "objects.h" #include "popups.h" #include "task.h" #include "utils.h" #include "xmenubar.h" #include "xpopups.h" /* Macros. */ #define FILE_WIDTH 300 /* width of file name widgets */ #define MARGIN 3 /* distance from margins to widgets */ #define CLOSE_VGAP 0 /* distance between paired toggles */ #define FAR_VGAP 10 /* distance between single toggles and groups */ #define BUTTON_GAP 5 /* horizontal distance between buttons */ /* Globals. */ /* Statics. */ static enum idle_enum s_disabled = IDLE_DISABLED; static enum idle_enum s_session = IDLE_SESSION; static enum idle_enum s_perm = IDLE_PERM; static char hms = 'm'; static bool fuzz = false; static char s_hours = 'h'; static char s_minutes = 'm'; static char s_seconds = 's'; static Widget idle_dialog, idle_shell, command_value, timeout_value; static Widget enable_toggle, enable_perm_toggle, disable_toggle; static Widget hours_toggle, minutes_toggle, seconds_toggle, fuzz_toggle; static sr_t *idle_sr = NULL; static void idle_cancel(Widget w, XtPointer client_data, XtPointer call_data); static void idle_popup_callback(Widget w, XtPointer client_data, XtPointer call_data); static void idle_popup_init(void); static bool idle_start(void); static void okay_callback(Widget w, XtPointer call_parms, XtPointer call_data); static void toggle_enable(Widget w, XtPointer client_data, XtPointer call_data); static void mark_toggle(Widget w, Pixmap p); static void toggle_hms(Widget w, XtPointer client_data, XtPointer call_data); static void toggle_fuzz(Widget w, XtPointer client_data, XtPointer call_data); /* "Idle Command" dialog. */ /* * Pop up the "Idle" menu. * Called back from the "Configure Idle Command" option on the Options menu. */ void popup_idle(void) { char *its; char *s; /* Initialize it. */ if (idle_shell == NULL) { idle_popup_init(); } /* * Split the idle_timeout_string (the raw resource value) into fuzz, * a number, and h/m/s. */ its = NewString(idle_timeout_string); if (its != NULL) { if (*its == '~') { fuzz = true; its++; } else { fuzz = false; } s = its; while (isdigit((unsigned char)*s)) { s++; } switch (*s) { case 'h': case 'H': hms = 'h'; break; case 'm': case 'M': hms = 'm'; break; case 's': case 'S': hms = 's'; break; default: break; } *s = '\0'; } /* Set the resource values. */ dialog_set(&idle_sr, idle_dialog); XtVaSetValues(command_value, XtNstring, idle_command, NULL); XtVaSetValues(timeout_value, XtNstring, its, NULL); mark_toggle(enable_toggle, (idle_user_enabled == IDLE_SESSION)? diamond : no_diamond); mark_toggle(enable_perm_toggle, (idle_user_enabled == IDLE_PERM)? diamond : no_diamond); mark_toggle(disable_toggle, (idle_user_enabled == IDLE_DISABLED)? diamond : no_diamond); mark_toggle(hours_toggle, (hms == 'h') ? diamond : no_diamond); mark_toggle(minutes_toggle, (hms == 'm') ? diamond : no_diamond); mark_toggle(seconds_toggle, (hms == 's') ? diamond : no_diamond); mark_toggle(fuzz_toggle, fuzz ? dot : no_dot); /* Pop it up. */ popup_popup(idle_shell, XtGrabNone); } /* Initialize the idle pop-up. */ static void idle_popup_init(void) { Widget w; Widget cancel_button; Widget command_label, timeout_label; Widget okay_button; /* Prime the dialog functions. */ dialog_set(&idle_sr, idle_dialog); /* Create the menu shell. */ idle_shell = XtVaCreatePopupShell( "idlePopup", transientShellWidgetClass, toplevel, NULL); XtAddCallback(idle_shell, XtNpopupCallback, place_popup, (XtPointer)CenterP); XtAddCallback(idle_shell, XtNpopupCallback, idle_popup_callback, NULL); /* Create the form within the shell. */ idle_dialog = XtVaCreateManagedWidget( ObjDialog, formWidgetClass, idle_shell, NULL); /* Create the file name widgets. */ command_label = XtVaCreateManagedWidget( "command", labelWidgetClass, idle_dialog, XtNvertDistance, FAR_VGAP, XtNhorizDistance, MARGIN, XtNborderWidth, 0, NULL); command_value = XtVaCreateManagedWidget( "value", asciiTextWidgetClass, idle_dialog, XtNeditType, XawtextEdit, XtNwidth, FILE_WIDTH, XtNvertDistance, FAR_VGAP, XtNfromHoriz, command_label, XtNhorizDistance, 0, NULL); dialog_match_dimension(command_label, command_value, XtNheight); w = XawTextGetSource(command_value); if (w == NULL) { XtWarning("Cannot find text source in dialog"); } else { XtAddCallback(w, XtNcallback, dialog_text_callback, (XtPointer)&t_command); } dialog_register_sensitivity(command_value, NULL, False, NULL, False, NULL, False); timeout_label = XtVaCreateManagedWidget( "timeout", labelWidgetClass, idle_dialog, XtNfromVert, command_label, XtNvertDistance, 3, XtNhorizDistance, MARGIN, XtNborderWidth, 0, NULL); timeout_value = XtVaCreateManagedWidget( "value", asciiTextWidgetClass, idle_dialog, XtNeditType, XawtextEdit, XtNwidth, FILE_WIDTH, XtNdisplayCaret, False, XtNfromVert, command_label, XtNvertDistance, 3, XtNfromHoriz, timeout_label, XtNhorizDistance, 0, NULL); dialog_match_dimension(timeout_label, timeout_value, XtNheight); dialog_match_dimension(command_label, timeout_label, XtNwidth); w = XawTextGetSource(timeout_value); if (w == NULL) { XtWarning("Cannot find text source in dialog"); } else { XtAddCallback(w, XtNcallback, dialog_text_callback, (XtPointer)&t_numeric); } dialog_register_sensitivity(timeout_value, NULL, False, NULL, False, NULL, False); /* Create the hour/minute/seconds radio buttons. */ hours_toggle = XtVaCreateManagedWidget( "hours", commandWidgetClass, idle_dialog, XtNfromVert, timeout_value, XtNvertDistance, CLOSE_VGAP, XtNhorizDistance, MARGIN, XtNborderWidth, 0, XtNsensitive, True, NULL); dialog_apply_bitmap(hours_toggle, no_diamond); XtAddCallback(hours_toggle, XtNcallback, toggle_hms, (XtPointer)&s_hours); minutes_toggle = XtVaCreateManagedWidget( "minutes", commandWidgetClass, idle_dialog, XtNfromVert, timeout_value, XtNvertDistance, CLOSE_VGAP, XtNfromHoriz, hours_toggle, XtNhorizDistance, MARGIN, XtNborderWidth, 0, XtNsensitive, True, NULL); dialog_apply_bitmap(minutes_toggle, diamond); XtAddCallback(minutes_toggle, XtNcallback, toggle_hms, (XtPointer)&s_minutes); seconds_toggle = XtVaCreateManagedWidget( "seconds", commandWidgetClass, idle_dialog, XtNfromVert, timeout_value, XtNvertDistance, CLOSE_VGAP, XtNfromHoriz, minutes_toggle, XtNhorizDistance, MARGIN, XtNborderWidth, 0, XtNsensitive, True, NULL); dialog_apply_bitmap(seconds_toggle, no_diamond); XtAddCallback(seconds_toggle, XtNcallback, toggle_hms, (XtPointer)&s_seconds); /* Create the fuzz toggle. */ fuzz_toggle = XtVaCreateManagedWidget( "fuzz", commandWidgetClass, idle_dialog, XtNfromVert, hours_toggle, XtNvertDistance, CLOSE_VGAP, XtNhorizDistance, MARGIN, XtNborderWidth, 0, XtNsensitive, True, NULL); dialog_apply_bitmap(fuzz_toggle, no_dot); XtAddCallback(fuzz_toggle, XtNcallback, toggle_fuzz, NULL); /* Create enable/disable toggles. */ enable_toggle = XtVaCreateManagedWidget( "enable", commandWidgetClass, idle_dialog, XtNfromVert, fuzz_toggle, XtNvertDistance, FAR_VGAP, XtNhorizDistance, MARGIN, XtNborderWidth, 0, NULL); dialog_apply_bitmap(enable_toggle, (idle_user_enabled == IDLE_SESSION)? diamond: no_diamond); XtAddCallback(enable_toggle, XtNcallback, toggle_enable, (XtPointer)&s_session); enable_perm_toggle = XtVaCreateManagedWidget( "enablePerm", commandWidgetClass, idle_dialog, XtNfromVert, enable_toggle, XtNvertDistance, CLOSE_VGAP, XtNhorizDistance, MARGIN, XtNborderWidth, 0, NULL); dialog_apply_bitmap(enable_perm_toggle, (idle_user_enabled == IDLE_PERM)? diamond: no_diamond); XtAddCallback(enable_perm_toggle, XtNcallback, toggle_enable, (XtPointer)&s_perm); disable_toggle = XtVaCreateManagedWidget( "disable", commandWidgetClass, idle_dialog, XtNfromVert, enable_perm_toggle, XtNvertDistance, CLOSE_VGAP, XtNhorizDistance, MARGIN, XtNborderWidth, 0, NULL); dialog_apply_bitmap(disable_toggle, (idle_user_enabled == IDLE_DISABLED)? diamond: no_diamond); XtAddCallback(disable_toggle, XtNcallback, toggle_enable, (XtPointer)&s_disabled); /* Set up the buttons at the bottom. */ okay_button = XtVaCreateManagedWidget( ObjConfirmButton, commandWidgetClass, idle_dialog, XtNfromVert, disable_toggle, XtNvertDistance, FAR_VGAP, XtNhorizDistance, MARGIN, NULL); XtAddCallback(okay_button, XtNcallback, okay_callback, NULL); cancel_button = XtVaCreateManagedWidget( ObjCancelButton, commandWidgetClass, idle_dialog, XtNfromVert, disable_toggle, XtNvertDistance, FAR_VGAP, XtNfromHoriz, okay_button, XtNhorizDistance, BUTTON_GAP, NULL); XtAddCallback(cancel_button, XtNcallback, idle_cancel, 0); } /* Callbacks for all the idle widgets. */ /* Idle pop-up popping up. */ static void idle_popup_callback(Widget w _is_unused, XtPointer client_data _is_unused, XtPointer call_data _is_unused) { /* Set the focus to the command widget. */ PA_dialog_focus_xaction(command_value, NULL, NULL, NULL); } /* Cancel button pushed. */ static void idle_cancel(Widget w _is_unused, XtPointer client_data _is_unused, XtPointer call_data _is_unused) { XtPopdown(idle_shell); } /* OK button pushed. */ static void okay_callback(Widget w _is_unused, XtPointer call_parms _is_unused, XtPointer call_data _is_unused) { if (idle_start()) { idle_changed = true; XtPopdown(idle_shell); } } /* Mark a toggle. */ static void mark_toggle(Widget w, Pixmap p) { XtVaSetValues(w, XtNleftBitmap, p, NULL); } /* Hour/minute/second options. */ static void toggle_hms(Widget w _is_unused, XtPointer client_data, XtPointer call_data _is_unused) { /* Toggle the flag */ hms = *(char *)client_data; /* Change the widget states. */ mark_toggle(hours_toggle, (hms == 'h') ? diamond : no_diamond); mark_toggle(minutes_toggle, (hms == 'm') ? diamond : no_diamond); mark_toggle(seconds_toggle, (hms == 's') ? diamond : no_diamond); } /* Fuzz option. */ static void toggle_fuzz(Widget w _is_unused, XtPointer client_data, XtPointer call_data _is_unused) { /* Toggle the flag */ fuzz = !fuzz; /* Change the widget state. */ mark_toggle(fuzz_toggle, fuzz ? dot : no_dot); } /* Enable/disable options. */ static void toggle_enable(Widget w _is_unused, XtPointer client_data, XtPointer call_data _is_unused) { /* Toggle the flag */ idle_user_enabled = *(enum idle_enum *)client_data; /* Change the widget states. */ mark_toggle(enable_toggle, (idle_user_enabled == IDLE_SESSION)? diamond: no_diamond); mark_toggle(enable_perm_toggle, (idle_user_enabled == IDLE_PERM)? diamond: no_diamond); mark_toggle(disable_toggle, (idle_user_enabled == IDLE_DISABLED)? diamond: no_diamond); } /* * Called when the user presses the OK button on the idle command dialog. * Returns true for success, false otherwise. */ static bool idle_start(void) { char *cmd, *tmo, *its; char *s; char *error; /* Update the globals, so the dialog has the same values next time. */ XtVaGetValues(command_value, XtNstring, &cmd, NULL); XtVaGetValues(timeout_value, XtNstring, &tmo, NULL); Replace(idle_command, NewString(cmd)); its = xs_buffer("%s%s%c", fuzz? "~": "", tmo, hms); Replace(idle_timeout_string, its); /* See if they've turned it off. */ if (!idle_user_enabled) { /* If they're turned it off, cancel the timer. */ cancel_idle_timer(); return true; } /* Validate the command. */ s = cmd; while (isspace((int)*s)) { s++; } if (!*s) { popup_an_error("Missing idle command"); return false; } if (!validate_command(cmd, 0, &error)) { popup_an_error("Invalid idle command:\n%s", error); Free(error); return false; } /* Validate the timeout. */ if (!isdigit((int)its[0])) { popup_an_error("Missing timeout"); return false; } if (!process_idle_timeout_value(its)) { return false; } /* Reset to the new interval and command. */ if (IN_3270) { reset_idle_timer(); } return true; } suite3270-4.1/x3270/idle_gui.h000066400000000000000000000031451413735575200155570ustar00rootroot00000000000000/* * Copyright (c) 2002-2009, 2013-2015 Paul Mattes. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the names of Paul Mattes nor the names of his contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO * EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * idle_gui.h * Global declarations for idle_gui.c. */ void popup_idle(void); suite3270-4.1/x3270/instlist.base000066400000000000000000000014361413735575200163330ustar00rootroot00000000000000usr usr/local usr/local/bin usr/local/bin/x3270 usr/local/etc usr/local/etc/x3270 usr/local/etc/x3270/ibm_hosts usr/local/fonts usr/local/fonts/misc usr/local/fonts/misc/3270-12.pcf.gz usr/local/fonts/misc/3270-12b.pcf.gz usr/local/fonts/misc/3270-20.pcf.gz usr/local/fonts/misc/3270-20b.pcf.gz usr/local/fonts/misc/3270.pcf.gz usr/local/fonts/misc/3270b.pcf.gz usr/local/fonts/misc/3270gr.pcf.gz usr/local/fonts/misc/3270gt12.pcf.gz usr/local/fonts/misc/3270gt12b.pcf.gz usr/local/fonts/misc/3270gt16.pcf.gz usr/local/fonts/misc/3270gt16b.pcf.gz usr/local/fonts/misc/3270gt24.pcf.gz usr/local/fonts/misc/3270gt24b.pcf.gz usr/local/fonts/misc/3270gt32.pcf.gz usr/local/fonts/misc/3270gt32b.pcf.gz usr/local/fonts/misc/3270gt8.pcf.gz usr/local/fonts/misc/3270h.pcf.gz usr/local/fonts/misc/fonts.dir suite3270-4.1/x3270/instlist.man000066400000000000000000000002521413735575200161670ustar00rootroot00000000000000usr usr/local usr/local/share usr/local/share/man usr/local/share/man/man1 usr/local/share/man/man1/x3270.1 usr/local/share/man/man5 usr/local/share/man/man5/ibm_hosts.5 suite3270-4.1/x3270/keymap.c000066400000000000000000000744151413735575200152670ustar00rootroot00000000000000/* * Copyright (c) 1996-2010, 2013-2016, 2019, 2021 Paul Mattes. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of Paul Mattes nor his contributors may be used * to endorse or promote products derived from this software without * specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. */ /* * keymap.c * This module handles keymaps. */ #include "globals.h" #include "xglobals.h" #include #include #include #include #include #include #include #include #include #include #include "appres.h" #include "objects.h" #include "resources.h" #include "host.h" #include "keymap.h" #include "kybd.h" #include "popups.h" #include "screen.h" #include "status.h" #include "utils.h" #include "xactions.h" #include "xkeypad.h" #include "xmenubar.h" #include "xscreen.h" #include "xstatus.h" #include "xpopups.h" #define PA_ENDL " " PA_END "()" #define Res3270 "3270" bool keymap_changed = false; struct trans_list *trans_list = NULL; static struct trans_list **last_trans = &trans_list; static struct trans_list *tkm_last; struct trans_list *temp_keymaps; /* temporary keymap list */ char *keymap_trace = NULL; static char *last_keymap = NULL; static bool last_nvt = false; static bool last_3270 = false; static void setup_keymaps(const char *km, bool do_popup); static void add_keymap(const char *name, bool do_popup); static void add_trans(const char *name, char *translations, char *pathname, bool is_from_server); static char *get_file_keymap(const char *name, char **pathp); static void keymap_3270_mode(bool); /* Undocumented Xt function to convert translations to text. */ extern String _XtPrintXlations(Widget w, XtTranslations xlations, Widget accelWidget, bool includeRHS); static enum { SORT_EVENT, SORT_KEYMAP, SORT_ACTION } sort = SORT_KEYMAP; static bool km_isup = false; static bool km_exists = false; static Widget km_shell, sort_event, sort_keymap, sort_byaction, text; static char km_file[128]; static void create_text(void); static void km_up(Widget w, XtPointer client_data, XtPointer call_data); static void km_down(Widget w, XtPointer client_data, XtPointer call_data); static void km_done(Widget w, XtPointer client_data, XtPointer call_data); static void do_sort_byaction(Widget w, XtPointer client_data, XtPointer call_data); static void do_sort_keymap(Widget w, XtPointer client_data, XtPointer call_data); static void do_sort_event(Widget w, XtPointer client_data, XtPointer call_data); static void format_xlations(String s, FILE *f); static int action_cmp(char *s1, char *s2); static int keymap_cmp(char *k1, int l1, char *k2, int l2); static int event_cmp(char *e1, char *e2); static bool is_temp(char *k); static char *pathname(char *k); static bool from_server(char *k); static void km_regen(void); char *current_keymap = NULL; /** * Keymap module registration. */ void keymap_register(void) { register_schange(ST_3270_MODE, keymap_3270_mode); register_schange(ST_CONNECT, keymap_3270_mode); } /* Keymap initialization. */ void keymap_init(const char *km, bool interactive) { static bool initted = false; if (km == NULL && (km = (char *)getenv("KEYMAP")) == NULL && (km = (char *)getenv("KEYBD")) == NULL) { km = "@server"; } setup_keymaps(km, interactive); if (!initted) { initted = true; last_nvt = IN_NVT; last_3270 = IN_3270; } else { struct trans_list *t; XtTranslations trans; screen_set_keymap(); keypad_set_keymap(); /* Re-apply any temporary keymaps. */ for (t = temp_keymaps; t != NULL; t = t->next) { trans = lookup_tt(t->name, NULL); screen_set_temp_keymap(trans); keypad_set_temp_keymap(trans); } } km_regen(); /* Save the name(s) of the last keymap, so we can switch modes later. */ if (km != last_keymap) { Replace(last_keymap, km? NewString(km): NULL); } } /* * 3270/NVT mode change. */ static void keymap_3270_mode(bool ignored _is_unused) { if (last_nvt != IN_NVT || last_3270 != IN_3270) { last_nvt = IN_NVT; last_3270 = IN_3270; /* Switch between 3270 and NVT keymaps. */ keymap_init(last_keymap, false); } } /* * Set up a user keymap. */ static void setup_keymaps(const char *km, bool do_popup) { char *bkm; struct trans_list *t; struct trans_list *next; /* Make sure it starts with "base". */ if (km == NULL) { bkm = XtNewString("base"); } else { bkm = xs_buffer("base,%s", km); } if (do_popup) { keymap_changed = true; } /* Clear out any existing translations. */ Replace(current_keymap, NULL); for (t = trans_list; t != NULL; t = next) { next = t->next; Free(t->name); Free(t->pathname); Free(t); } trans_list = NULL; last_trans = &trans_list; /* Build up the new list. */ if (bkm != NULL) { char *ns = XtNewString(bkm); char *n0 = ns; char *comma; do { comma = strchr(ns, ','); if (comma) { *comma = '\0'; } add_keymap(ns, do_popup); if (comma) { ns = comma + 1; } else { ns = NULL; } } while (ns); XtFree(n0); } XtFree(bkm); } /* * Get a keymap from a file. */ static char * get_file_keymap(const char *name, char **pathp) { char *path; XrmDatabase dd = NULL; char *resname; XrmValue value; char *type; char *r = NULL; *pathp = NULL; /* Look for a global keymap file. */ if (dd == NULL) { path = xs_buffer("%s/keymap.%s", appres.conf_dir, name); dd = XrmGetFileDatabase(path); if (dd != NULL) { *pathp = path; } else { XtFree(path); return NULL; } } /* Look up the resource in that file. */ resname = xs_buffer("%s.%s.%s", XtName(toplevel), ResKeymap, name); if ((XrmGetResource(dd, resname, 0, &type, &value) == True) && *value.addr) { r = XtNewString(value.addr); } else { *pathp = NULL; } XtFree(resname); XrmDestroyDatabase(dd); return r; } /* * Add to the list of user-specified keymap translations, finding both the * system and user versions of a keymap. */ static void add_keymap(const char *name, bool do_popup) { char *translations, *translations_nvt, *translations_3270; char *buf, *buf_nvt, *buf_3270; int any = 0; char *path, *path_nvt, *path_3270; bool is_from_server = false; if (strcmp(name, "base")) { if (current_keymap == NULL) { current_keymap = XtNewString(name); } else { Replace(current_keymap, xs_buffer("%s,%s", current_keymap, name)); } } /* Translate '@server' to a vendor-specific keymap. */ if (!strcmp(name, "@server")) { struct sk { struct sk *next; char *vendor; char *keymap; }; static struct sk *sk_list = NULL; struct sk *sk; if (sk_list == NULL) { char *s, *vendor, *keymap; s = get_resource("serverKeymapList"); if (s == NULL) { return; } s = XtNewString(s); while (split_dresource(&s, &vendor, &keymap) == 1) { sk = (struct sk *)XtMalloc(sizeof(struct sk)); sk->vendor = vendor; sk->keymap = keymap; sk->next = sk_list; sk_list = sk; } } for (sk = sk_list; sk != NULL; sk = sk->next) { if (!strcmp(sk->vendor, ServerVendor(display))) { name = sk->keymap; is_from_server = true; break; } } if (sk == NULL) { return; } } /* Try for a file first, then resources. */ translations = get_file_keymap(name, &path); buf_nvt = xs_buffer("%s.%s", name, ResNvt); translations_nvt = get_file_keymap(buf_nvt, &path_nvt); buf_3270 = xs_buffer("%s.%s", name, Res3270); translations_3270 = get_file_keymap(buf_3270, &path_3270); if (translations != NULL || translations_nvt != NULL || translations_3270 != NULL) { any++; if (translations != NULL) { add_trans(name, translations, path, is_from_server); } if (IN_NVT && translations_nvt != NULL) { add_trans(buf_nvt, translations_nvt, path_nvt, is_from_server); } if (IN_3270 && translations_3270 != NULL) { add_trans(buf_3270, translations_3270, path_3270, is_from_server); } XtFree(translations); XtFree(translations_nvt); XtFree(translations_3270); XtFree(buf_nvt); XtFree(buf_3270); } else { XtFree(buf_nvt); XtFree(buf_3270); /* Shared keymap. */ buf = xs_buffer("%s.%s", ResKeymap, name); translations = get_resource(buf); buf_nvt = xs_buffer("%s.%s.%s", ResKeymap, name, ResNvt); translations_nvt = get_resource(buf_nvt); buf_3270 = xs_buffer("%s.%s.%s", ResKeymap, name, Res3270); translations_3270 = get_resource(buf_3270); if (translations != NULL || translations_nvt != NULL || translations_3270) { any++; } if (translations != NULL) { add_trans(name, translations, NULL, is_from_server); } if (IN_NVT && translations_nvt != NULL) { add_trans(buf_nvt + strlen(ResKeymap) + 1, translations_nvt, NULL, is_from_server); } if (IN_3270 && translations_3270 != NULL) { add_trans(buf_3270 + strlen(ResKeymap) + 1, translations_3270, NULL, is_from_server); } XtFree(buf); XtFree(buf_nvt); XtFree(buf_3270); /* User keymap */ buf = xs_buffer("%s.%s.%s", ResKeymap, name, ResUser); translations = get_resource(buf); buf_nvt = xs_buffer("%s.%s.%s.%s", ResKeymap, name, ResNvt, ResUser); translations_nvt = get_resource(buf_nvt); buf_3270 = xs_buffer("%s.%s.%s.%s", ResKeymap, name, Res3270, ResUser); translations_3270 = get_resource(buf_3270); if (translations != NULL || translations_nvt != NULL || translations_3270 != NULL) { any++; } if (IN_NVT && translations_nvt != NULL) { add_trans(buf_nvt + strlen(ResKeymap) + 1, translations_nvt, NULL, is_from_server); } if (IN_3270 && translations_3270 != NULL) { add_trans(buf_3270 + strlen(ResKeymap) + 1, translations_3270, NULL, is_from_server); } if (translations != NULL) { add_trans(buf, translations, NULL, is_from_server); } XtFree(buf); XtFree(buf_nvt); XtFree(buf_3270); } if (!any) { if (do_popup) { popup_an_error("Cannot find %s \"%s\"", ResKeymap, name); } else { xs_warning("Cannot find %s \"%s\"", ResKeymap, name); } } } /* * Add a single keymap name and translation to the translation list. */ static void add_trans(const char *name, char *translations, char *path_name, bool is_from_server) { struct trans_list *t; t = (struct trans_list *)XtMalloc(sizeof(*t)); t->name = XtNewString(name); t->pathname = path_name; t->is_temp = false; t->from_server = is_from_server; lookup_tt(name, translations); t->next = NULL; *last_trans = t; last_trans = &t->next; } /* * Translation table expansion. */ /* Find the first unquoted newline an an action list. */ static char * unquoted_newline(char *s) { bool bs = false; enum { UQ_BASE, UQ_PLIST, UQ_Q } state = UQ_BASE; char c; for ( ; (c = *s); s++) { if (bs) { bs = false; continue; } else if (c == '\\') { bs = true; continue; } switch (state) { case UQ_BASE: if (c == '(') { state = UQ_PLIST; } else if (c == '\n') { return s; } break; case UQ_PLIST: if (c == ')') { state = UQ_BASE; } else if (c == '"') { state = UQ_Q; } break; case UQ_Q: if (c == '"') { state = UQ_PLIST; } break; } } return NULL; } /* Expand a translation table with keymap tracing calls. */ static char * expand_table(const char *name, char *table) { char *cm, *t0, *t, *s; int nlines = 1; if (table == NULL) { return NULL; } /* Roughly count the number of lines in the table. */ cm = table; while ((cm = strchr(cm, '\n')) != NULL) { nlines++; cm++; } /* Allocate a new buffer. */ t = t0 = (char *)XtMalloc(2 + strlen(table) + nlines * (strlen(" " PA_KEYMAP_TRACE "(,nnnn) ") + strlen(name) + strlen(PA_ENDL))); *t = '\0'; /* Expand the table into it. */ s = table; nlines = 0; while (*s) { /* Skip empty lines. */ while (*s == ' ' || *s == '\t') { s++; } if (*s == '\n') { *t++ = '\n'; *t = '\0'; s++; continue; } /* Find the '>' from the event name, and copy up through it. */ cm = strchr(s, '>'); if (cm == NULL) { while ((*t++ = *s++)) ; break; } while (s <= cm) { *t++ = *s++; } /* Find the ':' following, and copy up throught that. */ cm = strchr(s, ':'); if (cm == NULL) { while ((*t++ = *s++)) ; break; } nlines++; while (s <= cm) { *t++ = *s++; } /* Insert a PA-KeymapTrace call. */ sprintf(t, " " PA_KEYMAP_TRACE "(%s,%d) ", name, nlines); t = strchr(t, '\0'); /* * Copy to the next unquoted newline and append a PA-End call. */ cm = unquoted_newline(s); if (cm == NULL) { while ((*t = *s)) { t++; s++; } } else { while (s < cm) { *t++ = *s++; } } strcpy(t, PA_ENDL); t += strlen(PA_ENDL); if (cm == NULL) { break; } else { *t++ = *s++; } } *t = '\0'; return t0; } /* * Trace a keymap. * * This function leaves a value in the global "keymap_trace", which is used * by the xaction_debug function when subsequent actions are called. */ void PA_KeymapTrace_xaction(Widget w _is_unused, XEvent *event _is_unused, String *params, Cardinal *num_params) { if (!toggled(TRACING) || *num_params != 2) { return; } Replace(keymap_trace, XtMalloc(strlen(params[0]) + 1 + strlen(params[1]) + 1)); sprintf(keymap_trace, "%s:%s", params[0], params[1]); } /* * End a keymap trace. * * This function clears the value in the global "keymap_trace". */ void PA_End_xaction(Widget w _is_unused, XEvent *event _is_unused, String *params _is_unused, Cardinal *num_params _is_unused) { Replace(keymap_trace, NULL); } /* * Translation table cache. */ XtTranslations lookup_tt(const char *name, char *table) { struct tt_cache { char *name; XtTranslations trans; struct tt_cache *next; }; static struct tt_cache *tt_cache = NULL; struct tt_cache *t; char *xtable; /* Look for an old one. */ for (t = tt_cache; t != NULL; t = t->next) { if (!strcmp(name, t->name)) { return t->trans; } } /* Allocate and translate a new one. */ t = (struct tt_cache *)XtMalloc(sizeof(*t)); t->name = XtNewString(name); xtable = expand_table(name, table); t->trans = XtParseTranslationTable(xtable); Free(xtable); t->next = tt_cache; tt_cache = t; return t->trans; } /* * Set or clear a temporary keymap. * * If the parameter is NULL, removes all keymaps. * Otherwise, toggles the keymap by that name. * * Returns true if the action was successful, false otherwise. * */ bool temporary_keymap(const char *k) { char *km; XtTranslations trans; struct trans_list *t, *prev; char *path = NULL; if (k == NULL) { struct trans_list *next; /* Delete all temporary keymaps. */ for (t = temp_keymaps; t != NULL; t = next) { Free(t->name); Free(t->pathname); next = t->next; Free(t); } tkm_last = temp_keymaps = NULL; screen_set_temp_keymap(NULL); keypad_set_temp_keymap(NULL); status_kmap(false); km_regen(); return true; } /* Check for deleting one keymap. */ for (prev = NULL, t = temp_keymaps; t != NULL; prev = t, t = t->next) { if (!strcmp(k, t->name)) { break; } } if (t != NULL) { /* Delete the keymap from the list. */ if (prev != NULL) { prev->next = t->next; } else { temp_keymaps = t->next; } if (tkm_last == t) { tkm_last = prev; } Free(t->name); Free(t); /* Rebuild the translation tables from the remaining ones. */ screen_set_temp_keymap(NULL); keypad_set_temp_keymap(NULL); for (t = temp_keymaps; t != NULL; t = t->next) { trans = lookup_tt(t->name, NULL); screen_set_temp_keymap(trans); keypad_set_temp_keymap(trans); } /* Update the status line. */ if (temp_keymaps == NULL) { status_kmap(false); } km_regen(); return true; } /* Add a keymap. */ /* Try a file first. */ km = get_file_keymap(k, &path); if (km == NULL) { /* Then try a resource. */ km = get_fresource("%s.%s", ResKeymap, k); if (km == NULL) { return false; } } /* Update the translation tables. */ trans = lookup_tt(k, km); screen_set_temp_keymap(trans); keypad_set_temp_keymap(trans); /* Add it to the list. */ t = (struct trans_list *)XtMalloc(sizeof(*t)); t->name = XtNewString(k); t->pathname = path; t->is_temp = true; t->from_server = false; t->next = NULL; if (tkm_last != NULL) { tkm_last->next = t; } else { temp_keymaps = t; } tkm_last = t; /* Update the status line. */ status_kmap(true); km_regen(); /* Success. */ return true; } /* Create and pop up the current keymap pop-up. */ void do_keymap_display(Widget w _is_unused, XtPointer userdata _is_unused, XtPointer calldata _is_unused) { Widget form, label, done; /* If it's already up, do nothing. */ if (km_isup) { return; } if (km_exists) { popup_popup(km_shell, XtGrabNone); return; } /* Create the popup. */ km_shell = XtVaCreatePopupShell( "kmPopup", transientShellWidgetClass, toplevel, NULL); XtAddCallback(km_shell, XtNpopupCallback, place_popup, (XtPointer) CenterP); XtAddCallback(km_shell, XtNpopupCallback, km_up, NULL); XtAddCallback(km_shell, XtNpopdownCallback, km_down, NULL); /* Create a form in the popup. */ form = XtVaCreateManagedWidget(ObjDialog, formWidgetClass, km_shell, NULL); /* Create the title. */ label = XtVaCreateManagedWidget("label", labelWidgetClass, form, XtNborderWidth, 0, NULL); /* Create the options. */ sort_event = XtVaCreateManagedWidget("sortEventOption", commandWidgetClass, form, XtNborderWidth, 0, XtNfromVert, label, XtNleftBitmap, sort == SORT_EVENT ? diamond : no_diamond, NULL); XtAddCallback(sort_event, XtNcallback, do_sort_event, NULL); sort_keymap = XtVaCreateManagedWidget("sortKeymapOption", commandWidgetClass, form, XtNborderWidth, 0, XtNfromVert, sort_event, XtNleftBitmap, sort == SORT_KEYMAP ? diamond : no_diamond, NULL); XtAddCallback(sort_keymap, XtNcallback, do_sort_keymap, NULL); sort_byaction = XtVaCreateManagedWidget("sortActionOption", commandWidgetClass, form, XtNborderWidth, 0, XtNfromVert, sort_keymap, XtNleftBitmap, sort == SORT_ACTION ? diamond : no_diamond, NULL); XtAddCallback(sort_byaction, XtNcallback, do_sort_byaction, NULL); /* Create a text widget attached to the file. */ text = XtVaCreateManagedWidget( "text", asciiTextWidgetClass, form, XtNfromVert, sort_byaction, XtNscrollHorizontal, XawtextScrollAlways, XtNscrollVertical, XawtextScrollAlways, XtNdisplayCaret, False, NULL); create_text(); /* Create the Done button. */ done = XtVaCreateManagedWidget(ObjConfirmButton, commandWidgetClass, form, XtNfromVert, text, NULL); XtAddCallback(done, XtNcallback, km_done, NULL); /* Pop it up. */ km_exists = true; popup_popup(km_shell, XtGrabNone); } /* Called when x3270 is exiting. */ static void remove_keymap_file(bool ignored _is_unused) { unlink(km_file); } /* Format the keymap into a text source. */ static void create_text(void) { String s; FILE *f; static Widget source = NULL; /* Ready a file. */ snprintf(km_file, sizeof(km_file), "/tmp/km.%u", (unsigned)getpid()); f = fopen(km_file, "w"); if (f == NULL) { popup_an_errno(errno, "temporary file open"); return; } s = _XtPrintXlations(*screen, (*screen)->core.tm.translations, NULL, True); format_xlations(s, f); XtFree(s); fclose(f); if (source != NULL) { XtVaSetValues(source, XtNstring, km_file, NULL); } else { source = XtVaCreateWidget("source", asciiSrcObjectClass, text, XtNtype, XawAsciiFile, XtNstring, km_file, XtNeditType, XawtextRead, NULL); XawTextSetSource(text, source, (XawTextPosition)0); register_schange(ST_EXITING, remove_keymap_file); } } /* Refresh the keymap display, if it's up. */ static void km_regen(void) { if (km_exists) { create_text(); } } /* Popup callback. */ static void km_up(Widget w _is_unused, XtPointer client_data _is_unused, XtPointer call_data _is_unused) { km_isup = true; } /* Popdown callback. */ static void km_down(Widget w _is_unused, XtPointer client_data _is_unused, XtPointer call_data _is_unused) { km_isup = false; } /* Done button callback. Pop down the widget. */ static void km_done(Widget w _is_unused, XtPointer client_data _is_unused, XtPointer call_data _is_unused) { XtPopdown(km_shell); } /* "Sort-by-event" button callback. */ static void do_sort_event(Widget w _is_unused, XtPointer client_data _is_unused, XtPointer call_data _is_unused) { if (sort != SORT_EVENT) { sort = SORT_EVENT; XtVaSetValues(sort_byaction, XtNleftBitmap, no_diamond, NULL); XtVaSetValues(sort_keymap, XtNleftBitmap, no_diamond, NULL); XtVaSetValues(sort_event, XtNleftBitmap, diamond, NULL); create_text(); } } /* "Sort-by-keymap" button callback. */ static void do_sort_keymap(Widget w _is_unused, XtPointer client_data _is_unused, XtPointer call_data _is_unused) { if (sort != SORT_KEYMAP) { sort = SORT_KEYMAP; XtVaSetValues(sort_byaction, XtNleftBitmap, no_diamond, NULL); XtVaSetValues(sort_keymap, XtNleftBitmap, diamond, NULL); XtVaSetValues(sort_event, XtNleftBitmap, no_diamond, NULL); create_text(); } } /* "Sort-by-action" button callback. */ static void do_sort_byaction(Widget w _is_unused, XtPointer client_data _is_unused, XtPointer call_data _is_unused) { if (sort != SORT_ACTION) { sort = SORT_ACTION; XtVaSetValues(sort_byaction, XtNleftBitmap, diamond, NULL); XtVaSetValues(sort_keymap, XtNleftBitmap, no_diamond, NULL); XtVaSetValues(sort_event, XtNleftBitmap, no_diamond, NULL); create_text(); } } #define DASHES \ "-------------------------- ---------------- ------------------------------------" /* * Format translations for display. * * The data from _XtPrintXlations looks like this: * []event:[PA-KeymapTrace("keymap","line")][action...] * with the delightful complication that embedded quotes are not quoted. * * What we want to do is to: * remove all lines without PA-KeymapTrace * remove the leading space * sort by actions list * reformat as: * action... event (keymap:line) */ static void format_xlations(String s, FILE *f) { char *t; char *t_next; struct xl { struct xl *next; char *actions; char *event; char *keymap; int km_line; char *full_keymap; } *xl_list = NULL, *x, *xs, *xlp, *xn; char *km_last; int line_last = 0; /* Construct the list. */ for (t = s; t != NULL; t = t_next) { char *k, *a, *kk; int nq; static char cmps[] = ": " PA_KEYMAP_TRACE "("; /* Find the end of this rule and terminate this line. */ t_next = strstr(t, PA_ENDL "\n"); if (t_next != NULL) { t_next += strlen(PA_ENDL); *t_next++ = '\0'; } /* Remove the leading space. */ while (*t == ' ') { t++; } /* Use only traced events. */ k = strstr(t, cmps); if (k == NULL) { continue; } *k = '\0'; k += strlen(cmps); /* Find the rest of the actions. */ a = strchr(k, ')'); if (a == NULL) { continue; } while (*(++a) == ' ') ; if (!*a) { continue; } /* Remove the trailing PA-End call. */ if (strlen(a) >= strlen(PA_ENDL) && !strcmp(a + strlen(a) - strlen(PA_ENDL), PA_ENDL)) { a[strlen(a) - strlen(PA_ENDL)] = '\0'; } /* Allocate the new element. */ x = (struct xl *)XtCalloc(sizeof(struct xl), 1); x->actions = XtNewString(a); x->event = XtNewString(t); x->keymap = kk = (char *)XtMalloc(a - k + 1); x->km_line = 0; x->full_keymap = (char *)XtMalloc(a - k + 1); nq = 0; while (*k != ')') { if (*k == '"') { nq++; } else if (nq == 1) { *kk++ = *k; } else if (nq == 3) { x->km_line = atoi(k); break; } k++; } *kk = '\0'; sprintf(x->full_keymap, "%s:%d", x->keymap, x->km_line); /* Find where it should be inserted. */ for (xs = xl_list, xlp = NULL; xs != NULL; xlp = xs, xs = xs->next) { int halt = 0; switch (sort) { case SORT_EVENT: halt = (event_cmp(xs->event, x->event) > 0); break; case SORT_KEYMAP: halt = (keymap_cmp(xs->keymap, xs->km_line, x->keymap, x->km_line) > 0); break; case SORT_ACTION: halt = (action_cmp(xs->actions, a) > 0); break; } if (halt) { break; } } /* Insert it. */ if (xlp != NULL) { x->next = xlp->next; xlp->next = x; } else { x->next = xl_list; xl_list = x; } } /* Walk it. */ if (sort != SORT_KEYMAP) { fprintf(f, "%-26s %-16s %s\n%s\n", get_message("kmEvent"), get_message("kmKeymapLine"), get_message("kmActions"), DASHES); } km_last = NULL; for (xs = xl_list; xs != NULL; xs = xs->next) { switch (sort) { case SORT_EVENT: if (km_last != NULL) { char *l; l = strchr(xs->event, '<'); if (l != NULL) { if (strcmp(km_last, l)) { fprintf(f, "\n"); } km_last = l; } } else { km_last = strchr(xs->event, '<'); } break; case SORT_KEYMAP: if (km_last == NULL || strcmp(xs->keymap, km_last)) { char *p; fprintf(f, "%s%s '%s'%s", km_last == NULL ? "" : "\n", get_message(is_temp(xs->keymap) ? "kmTemporaryKeymap" : "kmKeymap"), xs->keymap, from_server(xs->keymap) ? get_message("kmFromServer") : ""); if ((p = pathname(xs->keymap)) != NULL) { fprintf(f, ", %s %s", get_message("kmFile"), p); } else { fprintf(f, ", %s %s.%s.%s", get_message("kmResource"), programname, ResKeymap, xs->keymap); } fprintf(f, "\n%-26s %-16s %s\n%s\n", get_message("kmEvent"), get_message("kmKeymapLine"), get_message("kmActions"), DASHES); km_last = xs->keymap; line_last = 0; } while (xs->km_line != ++line_last) { fprintf(f, "%-26s %s:%d\n", get_message("kmOverridden"), xs->keymap, line_last); } break; case SORT_ACTION: break; } fprintf(f, "%-26s %-16s %s\n", xs->event, xs->full_keymap, scatv(xs->actions)); } /* Free it. */ for (xs = xl_list; xs != NULL; xs = xn) { xn = xs->next; Free(xs->actions); Free(xs->event); Free(xs->keymap); Free(xs->full_keymap); Free(xs); } } /* * Comparison function for actions. Basically, a strcmp() that handles "PF" * and "PA" specially. */ #define PA "PA(" #define PF "PF(" static int action_cmp(char *s1, char *s2) { if ((!strncmp(s1, PA, 3) && !strncmp(s2, PA, 3)) || (!strncmp(s1, PF, 3) && !strncmp(s2, PF, 3))) { return atoi(s1 + 4) - atoi(s2 + 4); } else { return strcmp(s1, s2); } } /* Return a keymap's index in the lists. */ static int km_index(char *n) { struct trans_list *t; int ix = 0; for (t = trans_list; t != NULL; t = t->next) { if (!strcmp(t->name, n)) { return ix; } ix++; } for (t = temp_keymaps; t != NULL; t = t->next) { if (!strcmp(t->name, n)) { return ix; } ix++; } return ix; } /* Return whether or not a keymap is temporary. */ static bool is_temp(char *k) { struct trans_list *t; for (t = trans_list; t != NULL; t = t->next) { if (!strcmp(t->name, k)) { return t->is_temp; } } for (t = temp_keymaps; t != NULL; t = t->next) { if (!strcmp(t->name, k)) { return t->is_temp; } } return false; } /* Return the pathname associated with a keymap. */ static char * pathname(char *k) { struct trans_list *t; for (t = trans_list; t != NULL; t = t->next) { if (!strcmp(t->name, k)) { return t->pathname; } } for (t = temp_keymaps; t != NULL; t = t->next) { if (!strcmp(t->name, k)) { return t->pathname; } } return NULL; } /* Return whether or not a keymap was translated from "@server". */ static bool from_server(char *k) { struct trans_list *t; for (t = trans_list; t != NULL; t = t->next) { if (!strcmp(t->name, k)) { return t->from_server; } } for (t = temp_keymaps; t != NULL; t = t->next) { if (!strcmp(t->name, k)) { return t->from_server; } } return false; } /* * Comparison function for keymaps. */ static int keymap_cmp(char *k1, int l1, char *k2, int l2) { /* If the keymaps are the same, do a numerical comparison. */ if (!strcmp(k1, k2)) { return l1 - l2; } /* The keymaps are different. Order them according to trans_list. */ return km_index(k1) - km_index(k2); } /* * strcmp() that handles Fnn numercally. */ static int Fnn_strcmp(char *s1, char *s2) { static char kp[] = "F"; # define KPL (sizeof(kp) - 1) if (strncmp(s1, kp, KPL) || !isdigit((unsigned char)s1[KPL]) || strncmp(s2, kp, KPL) || !isdigit((unsigned char)s2[KPL])) { return strcmp(s1, s2); } return atoi(s1 + KPL) - atoi(s2 + KPL); } /* * Comparison function for events. */ static int event_cmp(char *e1, char *e2) { char *l1, *l2; int r; /* If either has a syntax problem, do a straight string compare. */ if ((l1 = strchr(e1, '<')) == NULL || (l2 = strchr(e2, '<')) == NULL) { return strcmp(e1, e2); } /* * If the events are different, sort on the event only. Otherwise, * sort on the modifier(s). */ r = Fnn_strcmp(l1, l2); if (r) { return r; } else { return strcmp(e1, e2); } } suite3270-4.1/x3270/keymap.h000066400000000000000000000046041413735575200152650ustar00rootroot00000000000000/* * Copyright (c) 1996-2009, 2013, 2015 Paul Mattes. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of Paul Mattes nor his contributors may be used * to endorse or promote products derived from this software without * specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. */ /* * keymap.h * Global declarations for keymap.c. */ #define PA_KEYMAP_TRACE PA_PFX "KeymapTrace" #define PA_END PA_PFX "End" /* translation lists */ struct trans_list { char *name; char *pathname; bool is_temp; bool from_server; struct trans_list *next; }; extern struct trans_list *trans_list; extern char *current_keymap; extern bool keymap_changed; extern char *keymap_trace; extern struct trans_list *temp_keymaps; void do_keymap_display(Widget w, XtPointer userdata, XtPointer calldata); void keymap_init(const char *km, bool interactive); XtTranslations lookup_tt(const char *name, char *table); void PA_End_xaction(Widget w, XEvent *event, String *params, Cardinal *num_params); void PA_KeymapTrace_xaction(Widget w, XEvent *event, String *params, Cardinal *num_params); bool temporary_keymap(const char *k); void keymap_register(); suite3270-4.1/x3270/keypad.bm000066400000000000000000001266161413735575200154330ustar00rootroot00000000000000#define btab15_width 63 #define btab15_height 30 static unsigned char btab15_bits[] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x81, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xc1, 0xff, 0xff, 0xff, 0x07, 0x00, 0x00, 0x80, 0xe1, 0xff, 0xff, 0xff, 0x07, 0x00, 0x00, 0x80, 0xf1, 0xff, 0xff, 0xff, 0x07, 0x00, 0x00, 0x80, 0xf1, 0xff, 0xff, 0xff, 0x07, 0x00, 0x00, 0x80, 0xe1, 0xff, 0xff, 0xff, 0x07, 0x00, 0x00, 0x80, 0xc1, 0xff, 0xff, 0xff, 0x07, 0x00, 0x00, 0x80, 0x81, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; #define btab20_width 94 #define btab20_height 40 static unsigned char btab20_bits[] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x01, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x01, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x01, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x01, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x01, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x01, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x01, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x01, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x81, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xc1, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xe1, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xe1, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xc1, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x81, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x01, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x01, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x01, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x01, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x01, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x01, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x01, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x01, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; #define btab_width 42 #define btab_height 20 static unsigned char btab_bits[] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x02, 0x00, 0x00, 0x00, 0x00, 0x04, 0x03, 0x00, 0x00, 0x00, 0x00, 0x84, 0x03, 0x00, 0x00, 0x00, 0x00, 0xc4, 0xff, 0xff, 0x03, 0x00, 0x00, 0xe4, 0xff, 0xff, 0x03, 0x00, 0x00, 0xe4, 0xff, 0xff, 0x03, 0x00, 0x00, 0xc4, 0xff, 0xff, 0x03, 0x00, 0x00, 0x84, 0x03, 0x00, 0x00, 0x00, 0x00, 0x04, 0x03, 0x00, 0x00, 0x00, 0x00, 0x04, 0x02, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; #define del15_width 63 #define del15_height 30 static unsigned char del15_bits[] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x88, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x88, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x88, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x28, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf4, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; #define del20_width 84 #define del20_height 40 static unsigned char del20_bits[] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x86, 0x19, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x86, 0x0d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x86, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3e, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xc1, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x80, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7e, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xcd, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x86, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x03, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x01, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x80, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xc1, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x7f, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x3e, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; #define del_width 42 #define del_height 20 static unsigned char del_bits[] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x04, 0x00, 0x00, 0x00, 0x00, 0x20, 0x03, 0x00, 0x00, 0x00, 0x00, 0x20, 0x01, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x00, 0x00, 0x00, 0x80, 0x28, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, 0x00, 0x80, 0x1a, 0x00, 0x00, 0x00, 0x00, 0x80, 0x11, 0x00, 0x00, 0x00, 0x00, 0x80, 0x18, 0x00, 0x00, 0x00, 0x00, 0x40, 0x17, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; #define down15_width 45 #define down15_height 30 static unsigned char down15_bits[] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x03, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x03, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x03, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x03, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x03, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x03, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x03, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x03, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x03, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x03, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x03, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x03, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x03, 0x00, 0x00, 0x00, 0x80, 0xff, 0x7f, 0x00, 0x00, 0x00, 0x00, 0xff, 0x3f, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x1f, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x0f, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x07, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x03, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x01, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; #define down20_width 60 #define down20_height 40 static unsigned char down20_bits[] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xff, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xff, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xff, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; #define down_width 30 #define down_height 20 static unsigned char down_bits[] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x01, 0x00, 0x00, 0xe0, 0x01, 0x00, 0x00, 0xe0, 0x01, 0x00, 0x00, 0xe0, 0x01, 0x00, 0x00, 0xe0, 0x01, 0x00, 0x00, 0xe0, 0x01, 0x00, 0x00, 0xe0, 0x01, 0x00, 0x00, 0xe0, 0x01, 0x00, 0x00, 0xe0, 0x01, 0x00, 0x00, 0xfc, 0x0f, 0x00, 0x00, 0xf8, 0x07, 0x00, 0x00, 0xf0, 0x03, 0x00, 0x00, 0xe0, 0x01, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; #define home15_width 40 #define home15_height 30 static unsigned char home15_bits[] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0xe3, 0x7f, 0x00, 0x00, 0x00, 0xe3, 0x3f, 0x00, 0x00, 0x00, 0xe3, 0x1f, 0x00, 0x00, 0x00, 0xe3, 0x1f, 0x00, 0x00, 0x00, 0xe3, 0x3f, 0x00, 0x00, 0x00, 0xe3, 0x7f, 0x00, 0x00, 0x00, 0xe3, 0xff, 0x00, 0x00, 0x00, 0xe3, 0xff, 0x01, 0x00, 0x00, 0x63, 0xfe, 0x03, 0x00, 0x00, 0x23, 0xfc, 0x07, 0x00, 0x00, 0x03, 0xf8, 0x0f, 0x00, 0x00, 0x03, 0xf0, 0x07, 0x00, 0x00, 0x00, 0xe0, 0x03, 0x00, 0x00, 0x00, 0xc0, 0x01, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; #define home20_width 60 #define home20_height 40 static unsigned char home20_bits[] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xff, 0xff, 0x0f, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xff, 0xff, 0x0f, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xff, 0xff, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0xf0, 0xff, 0x07, 0x00, 0x00, 0x00, 0x00, 0x70, 0xf0, 0xff, 0x03, 0x00, 0x00, 0x00, 0x00, 0x70, 0xf0, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x70, 0xf0, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0xf0, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0xf0, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0xf0, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0xf0, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x70, 0xf0, 0xff, 0x03, 0x00, 0x00, 0x00, 0x00, 0x70, 0xf0, 0xff, 0x07, 0x00, 0x00, 0x00, 0x00, 0x70, 0xf0, 0xff, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x70, 0xf0, 0xfc, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x70, 0x70, 0xf8, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x70, 0x30, 0xf0, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x70, 0x10, 0xe0, 0xff, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0xc0, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; #define home_width 30 #define home_height 20 static unsigned char home_bits[] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xff, 0x03, 0x00, 0x40, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x40, 0xfc, 0x01, 0x00, 0x40, 0xfc, 0x00, 0x00, 0x40, 0x7c, 0x00, 0x00, 0x40, 0xfc, 0x00, 0x00, 0x40, 0xfc, 0x01, 0x00, 0x40, 0xec, 0x03, 0x00, 0x40, 0xc4, 0x07, 0x00, 0x40, 0x80, 0x0f, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; #define ins15_width 63 #define ins15_height 30 static unsigned char ins15_bits[] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xf1, 0xc3, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x08, 0x84, 0x01, 0x00, 0x00, 0x00, 0x00, 0x60, 0x08, 0x08, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; #define ins20_width 84 #define ins20_height 40 static unsigned char ins20_bits[] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x73, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xe1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xc0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x80, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x3e, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x03, 0x7f, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x81, 0xc1, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xc0, 0x80, 0xc1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3e, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xc1, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x80, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x80, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xc1, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3e, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; #define ins_width 42 #define ins_height 20 static unsigned char ins_bits[] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, 0x80, 0x08, 0x00, 0x00, 0x00, 0x00, 0x40, 0x10, 0x00, 0x00, 0x00, 0x00, 0x20, 0x20, 0x00, 0x00, 0x00, 0x00, 0x10, 0x47, 0x00, 0x00, 0x00, 0x00, 0x88, 0x88, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, 0x00, 0x80, 0x18, 0x00, 0x00, 0x00, 0x00, 0x80, 0x10, 0x00, 0x00, 0x00, 0x00, 0x80, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; #define left15_width 45 #define left15_height 30 static unsigned char left15_bits[] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x80, 0x0f, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x0f, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xff, 0xff, 0x0f, 0x00, 0x00, 0xf0, 0xff, 0xff, 0x0f, 0x00, 0x00, 0xf8, 0xff, 0xff, 0x0f, 0x00, 0x00, 0xf8, 0xff, 0xff, 0x0f, 0x00, 0x00, 0xf0, 0xff, 0xff, 0x0f, 0x00, 0x00, 0xe0, 0xff, 0xff, 0x0f, 0x00, 0x00, 0xc0, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x80, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; #define left20_width 60 #define left20_height 40 static unsigned char left20_bits[] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x80, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0xc0, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0xc0, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x80, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; #define left_width 30 #define left_height 20 static unsigned char left_bits[] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x80, 0xff, 0xff, 0x00, 0x80, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; #define newline15_width 45 #define newline15_height 30 static unsigned char newline15_bits[] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x07, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x07, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x07, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x07, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x07, 0x00, 0x00, 0x30, 0x00, 0xe0, 0x07, 0x00, 0x00, 0x30, 0x00, 0xe0, 0x07, 0x00, 0x00, 0x30, 0x40, 0xe0, 0x07, 0x00, 0x00, 0x30, 0x60, 0xe0, 0x07, 0x00, 0x00, 0x30, 0x70, 0xe0, 0x07, 0x00, 0x00, 0x30, 0x78, 0xe0, 0x07, 0x00, 0x00, 0x30, 0x7c, 0xf0, 0x07, 0x00, 0x00, 0x30, 0xfe, 0xff, 0x07, 0x00, 0x00, 0x30, 0xff, 0xff, 0x03, 0x00, 0x00, 0xb0, 0xff, 0xff, 0x03, 0x00, 0x00, 0xb0, 0xff, 0xff, 0x01, 0x00, 0x00, 0x30, 0xff, 0xff, 0x00, 0x00, 0x00, 0x30, 0xfe, 0x3f, 0x00, 0x00, 0x00, 0x30, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x30, 0x78, 0x00, 0x00, 0x00, 0x00, 0x30, 0x70, 0x00, 0x00, 0x00, 0x00, 0x30, 0x60, 0x00, 0x00, 0x00, 0x00, 0x30, 0x40, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; #define newline20_width 60 #define newline20_height 40 static unsigned char newline20_bits[] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x3f, 0x00, 0x00, 0x00, 0x80, 0x03, 0x00, 0xc0, 0x3f, 0x00, 0x00, 0x00, 0x80, 0x03, 0x00, 0xc0, 0x3f, 0x00, 0x00, 0x00, 0x80, 0x03, 0x00, 0xc0, 0x3f, 0x00, 0x00, 0x00, 0x80, 0x03, 0x00, 0xc0, 0x3f, 0x00, 0x00, 0x00, 0x80, 0x03, 0x20, 0xc0, 0x3f, 0x00, 0x00, 0x00, 0x80, 0x03, 0x30, 0xc0, 0x3f, 0x00, 0x00, 0x00, 0x80, 0x03, 0x38, 0xc0, 0x3f, 0x00, 0x00, 0x00, 0x80, 0x03, 0x3c, 0xc0, 0x3f, 0x00, 0x00, 0x00, 0x80, 0x03, 0x3e, 0xe0, 0x3f, 0x00, 0x00, 0x00, 0x80, 0x03, 0x3f, 0xf0, 0x3f, 0x00, 0x00, 0x00, 0x80, 0x83, 0xff, 0xff, 0x3f, 0x00, 0x00, 0x00, 0x80, 0xc3, 0xff, 0xff, 0x3f, 0x00, 0x00, 0x00, 0x80, 0xe3, 0xff, 0xff, 0x1f, 0x00, 0x00, 0x00, 0x80, 0xf3, 0xff, 0xff, 0x1f, 0x00, 0x00, 0x00, 0x80, 0xf3, 0xff, 0xff, 0x0f, 0x00, 0x00, 0x00, 0x80, 0xe3, 0xff, 0xff, 0x07, 0x00, 0x00, 0x00, 0x80, 0xc3, 0xff, 0xff, 0x03, 0x00, 0x00, 0x00, 0x80, 0x83, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x80, 0x03, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x03, 0x3e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x03, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x03, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x03, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x03, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; #define newline_width 30 #define newline_height 20 static unsigned char newline_bits[] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x01, 0x78, 0x00, 0x00, 0x01, 0x78, 0x00, 0x00, 0x41, 0x78, 0x00, 0x00, 0x61, 0x78, 0x00, 0x00, 0x71, 0x7c, 0x00, 0x00, 0xf9, 0x7f, 0x00, 0x00, 0xfd, 0x3f, 0x00, 0x00, 0xfd, 0x3f, 0x00, 0x00, 0xf9, 0x0f, 0x00, 0x00, 0x71, 0x00, 0x00, 0x00, 0x61, 0x00, 0x00, 0x00, 0x41, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; #define right15_width 45 #define right15_height 30 static unsigned char right15_bits[] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x01, 0x00, 0x00, 0xf8, 0xff, 0xff, 0x03, 0x00, 0x00, 0xf8, 0xff, 0xff, 0x07, 0x00, 0x00, 0xf8, 0xff, 0xff, 0x0f, 0x00, 0x00, 0xf8, 0xff, 0xff, 0x0f, 0x00, 0x00, 0xf8, 0xff, 0xff, 0x07, 0x00, 0x00, 0xf8, 0xff, 0xff, 0x03, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x01, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; #define right20_width 60 #define right20_height 40 static unsigned char right20_bits[] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x0f, 0x00, 0x00, 0x00, 0xc0, 0xff, 0xff, 0xff, 0x1f, 0x00, 0x00, 0x00, 0xc0, 0xff, 0xff, 0xff, 0x3f, 0x00, 0x00, 0x00, 0xc0, 0xff, 0xff, 0xff, 0x7f, 0x00, 0x00, 0x00, 0xc0, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0xc0, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0xc0, 0xff, 0xff, 0xff, 0x7f, 0x00, 0x00, 0x00, 0xc0, 0xff, 0xff, 0xff, 0x3f, 0x00, 0x00, 0x00, 0xc0, 0xff, 0xff, 0xff, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; #define right_width 30 #define right_height 20 static unsigned char right_bits[] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x80, 0xff, 0x7f, 0x00, 0x80, 0xff, 0xff, 0x00, 0x80, 0xff, 0xff, 0x00, 0x80, 0xff, 0x7f, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; #define tab15_width 63 #define tab15_height 30 static unsigned char tab15_bits[] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x03, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x07, 0x0c, 0x00, 0x00, 0x80, 0xff, 0xff, 0xff, 0x0f, 0x0c, 0x00, 0x00, 0x80, 0xff, 0xff, 0xff, 0x3f, 0x0c, 0x00, 0x00, 0x80, 0xff, 0xff, 0xff, 0x7f, 0x0c, 0x00, 0x00, 0x80, 0xff, 0xff, 0xff, 0x7f, 0x0c, 0x00, 0x00, 0x80, 0xff, 0xff, 0xff, 0x3f, 0x0c, 0x00, 0x00, 0x80, 0xff, 0xff, 0xff, 0x1f, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x0f, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x07, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x03, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; #define tab20_width 84 #define tab20_height 40 static unsigned char tab20_bits[] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x01, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x03, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x07, 0x38, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xff, 0xff, 0xff, 0xff, 0x0f, 0x38, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xff, 0xff, 0xff, 0xff, 0x1f, 0x38, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xff, 0xff, 0xff, 0xff, 0x3f, 0x38, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xff, 0xff, 0xff, 0xff, 0x7f, 0x38, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xff, 0xff, 0xff, 0xff, 0x7f, 0x38, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xff, 0xff, 0xff, 0xff, 0x3f, 0x38, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xff, 0xff, 0xff, 0xff, 0x1f, 0x38, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xff, 0xff, 0xff, 0xff, 0x0f, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x07, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x03, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x01, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; #define tab_width 42 #define tab_height 20 static unsigned char tab_bits[] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x04, 0x02, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x02, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x02, 0x00, 0x00, 0xfc, 0xff, 0x3f, 0x02, 0x00, 0x00, 0xfc, 0xff, 0x7f, 0x02, 0x00, 0x00, 0xfc, 0xff, 0x7f, 0x02, 0x00, 0x00, 0xfc, 0xff, 0x3f, 0x02, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x02, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x02, 0x00, 0x00, 0x00, 0x00, 0x04, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; #define up15_width 45 #define up15_height 30 static unsigned char up15_bits[] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x01, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x03, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x07, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x0f, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x1f, 0x00, 0x00, 0x00, 0x00, 0xff, 0x3f, 0x00, 0x00, 0x00, 0x80, 0xff, 0x7f, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x03, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x03, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x03, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x03, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x03, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x03, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x03, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x03, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x03, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x03, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x03, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x03, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x03, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; #define up20_width 60 #define up20_height 40 static unsigned char up20_bits[] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xff, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xff, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xff, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; #define up_width 30 #define up_height 20 static unsigned char up_bits[] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0xe0, 0x01, 0x00, 0x00, 0xf0, 0x03, 0x00, 0x00, 0xf8, 0x07, 0x00, 0x00, 0xfc, 0x0f, 0x00, 0x00, 0xe0, 0x01, 0x00, 0x00, 0xe0, 0x01, 0x00, 0x00, 0xe0, 0x01, 0x00, 0x00, 0xe0, 0x01, 0x00, 0x00, 0xe0, 0x01, 0x00, 0x00, 0xe0, 0x01, 0x00, 0x00, 0xe0, 0x01, 0x00, 0x00, 0xe0, 0x01, 0x00, 0x00, 0xe0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; suite3270-4.1/x3270/keypad.c000066400000000000000000000624601413735575200152530ustar00rootroot00000000000000/* * Copyright (c) 1993-2009, 2014-2015, 2018-2020 Paul Mattes. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of Paul Mattes nor his contributors may be used * to endorse or promote products derived from this software without * specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. */ /* * keypad.c * This module handles the keypad with buttons for each of the * 3270 function keys. */ #include "globals.h" #include "xglobals.h" #include #include #include #include "appres.h" #include "resources.h" #include "actions.h" #include "kybd.h" #include "names.h" #include "popups.h" #include "utils.h" #include "xappres.h" #include "xkeypad.h" #include "xmenubar.h" #include "xscreen.h" #include "xpopups.h" #include "keypad.bm" enum kp_placement kp_placement; #define NUM_ROWS 4 #define NUM_VROWS 15 #define BORDER rescale(1) #define TOP_MARGIN rescale(6) #define BOTTOM_MARGIN rescale(6) #define SPACING rescale(2) #define FAT_SPACING rescale(3) #define VGAP rescale(4) #define HGAP rescale(4) #define SIDE_MARGIN rescale(4) #define HORIZ_WIDTH \ (SIDE_MARGIN + \ 12*(pf_width+2*BORDER) + \ 11*SPACING + \ HGAP + \ 3*(pa_width+2*BORDER) + \ 2*SPACING + \ SIDE_MARGIN) #define VERT_WIDTH \ (SIDE_MARGIN + \ 3*(pa_width+2*BORDER) + \ 2*SPACING + \ SIDE_MARGIN) /* * Table of 3278 key labels and actions */ struct button_list { const char *label; const char *name; const char *bits; int width; int height; const char *action_name; const char *parm; }; bool keypad_changed = false; static char Lg[] = "large"; static char Bm[] = "bm"; static char Sm[] = "small"; enum scaled_button { BTAB, DEL, DOWN, HOME, INS, LEFT, RIGHT, TAB, NEWLINE, UP, NUM_SCALED }; struct button_list scaled_list[NUM_SCALED] = { { "Btab", Bm, NULL, 0, 0, AnBackTab, NULL }, { "Del", Bm, NULL, 0, 0, AnDelete, NULL }, { "Down", Bm, NULL, 0, 0, AnDown, NULL }, { "Home", Bm, NULL, 0, 0, AnHome, NULL }, { "Ins", Bm, NULL, 0, 0, AnInsert, NULL }, { "Left", Bm, NULL, 0, 0, AnLeft, NULL }, { "Right", Bm, NULL, 0, 0, AnRight, NULL }, { "Tab", Bm, NULL, 0, 0, AnTab, NULL }, { "Tab", Bm, NULL, 0, 0, AnNewline, NULL }, { "Up" , Bm, NULL, 0, 0, AnUp, NULL }, }; enum unscaled_button { NONE, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, PF12, PF13, PF14, PF15, PF16, PF17, PF18, PF19, PF20, PF21, PF22, PF23, PF24, PA1, PA2, PA3, CLEAR, RESET, ERASE_EOF, ERASE_INPUT, DUP, FIELD_MARK, SYS_REQ, CURSOR_SELECT, ATTN, COMPOSE, ENTER, NUM_UNSCALED }; struct button_list unscaled_list[NUM_UNSCALED] = { { NULL, NULL, NULL, 0, 0, NULL, NULL }, { "PF1", Lg, NULL, 0, 0, AnPF, "1" }, { "PF2", Lg, NULL, 0, 0, AnPF, "2" }, { "PF3", Lg, NULL, 0, 0, AnPF, "3" }, { "PF4", Lg, NULL, 0, 0, AnPF, "4" }, { "PF5", Lg, NULL, 0, 0, AnPF, "5" }, { "PF6", Lg, NULL, 0, 0, AnPF, "6" }, { "PF7", Lg, NULL, 0, 0, AnPF, "7" }, { "PF8", Lg, NULL, 0, 0, AnPF, "8" }, { "PF9", Lg, NULL, 0, 0, AnPF, "9" }, { "PF10", Lg, NULL, 0, 0, AnPF, "10" }, { "PF11", Lg, NULL, 0, 0, AnPF, "11" }, { "PF12", Lg, NULL, 0, 0, AnPF, "12" }, { "PF13", Lg, NULL, 0, 0, AnPF, "13" }, { "PF14", Lg, NULL, 0, 0, AnPF, "14" }, { "PF15", Lg, NULL, 0, 0, AnPF, "15" }, { "PF16", Lg, NULL, 0, 0, AnPF, "16" }, { "PF17", Lg, NULL, 0, 0, AnPF, "17" }, { "PF18", Lg, NULL, 0, 0, AnPF, "18" }, { "PF19", Lg, NULL, 0, 0, AnPF, "19" }, { "PF20", Lg, NULL, 0, 0, AnPF, "20" }, { "PF21", Lg, NULL, 0, 0, AnPF, "21" }, { "PF22", Lg, NULL, 0, 0, AnPF, "22" }, { "PF23", Lg, NULL, 0, 0, AnPF, "23" }, { "PF24", Lg, NULL, 0, 0, AnPF, "24" }, { "PA1", Lg, NULL, 0, 0, AnPA, "1" }, { "PA2", Lg, NULL, 0, 0, AnPA, "2" }, { "PA3", Lg, NULL, 0, 0, AnPA, "3" }, { "Clear", Sm, NULL, 0, 0, AnClear, NULL }, { "Reset", Sm, NULL, 0, 0, AnReset, NULL }, { "Erase\nEOF", Sm, NULL, 0, 0, AnEraseEOF, NULL }, { "Erase\nInput", Sm, NULL, 0, 0, AnEraseInput,NULL }, { "Dup", Sm, NULL, 0, 0, AnDup, NULL }, { "Field\nMark", Sm, NULL, 0, 0, AnFieldMark,NULL }, { "Sys\nReq", Sm, NULL, 0, 0, AnSysReq, NULL }, { "Cursor\nSelect", Sm, NULL, 0, 0, AnCursorSelect,NULL }, { "Attn", Sm, NULL, 0, 0, AnAttn, NULL }, { "Compose", Sm, NULL, 0, 0, AnCompose, NULL }, { "Enter", Sm, NULL, 0, 0, AnEnter, NULL }, }; static struct button_list *pf_list[] = { &unscaled_list[PF13], &unscaled_list[PF14], &unscaled_list[PF15], &unscaled_list[PF16], &unscaled_list[PF17], &unscaled_list[PF18], &unscaled_list[PF19], &unscaled_list[PF20], &unscaled_list[PF21], &unscaled_list[PF22], &unscaled_list[PF23], &unscaled_list[PF24], &unscaled_list[PF1], &unscaled_list[PF2], &unscaled_list[PF3], &unscaled_list[PF4], &unscaled_list[PF5], &unscaled_list[PF6], &unscaled_list[PF7], &unscaled_list[PF8], &unscaled_list[PF9], &unscaled_list[PF10], &unscaled_list[PF11], &unscaled_list[PF12], }; #define PF_SZ (sizeof(pf_list)/sizeof(pf_list[0])) static struct button_list *pad_list[] = { &unscaled_list[PA1], &unscaled_list[PA2], &unscaled_list[PA3], &unscaled_list[NONE], &scaled_list[UP], &unscaled_list[NONE], &scaled_list[LEFT], &scaled_list[HOME], &scaled_list[RIGHT], &unscaled_list[NONE], &scaled_list[DOWN], &unscaled_list[NONE], }; #define PAD_SZ (sizeof(pad_list)/sizeof(pad_list[0])) static struct button_list *lower_list[] = { &unscaled_list[CLEAR], &unscaled_list[RESET], &scaled_list[INS], &scaled_list[DEL], &unscaled_list[ERASE_EOF], &unscaled_list[ERASE_INPUT], &unscaled_list[DUP], &unscaled_list[FIELD_MARK], &unscaled_list[SYS_REQ], &unscaled_list[CURSOR_SELECT], &unscaled_list[ATTN], &unscaled_list[COMPOSE], &scaled_list[BTAB], &scaled_list[TAB], &scaled_list[NEWLINE], &unscaled_list[ENTER], }; #define LOWER_SZ (sizeof(lower_list)/sizeof(lower_list[0])) static struct button_list *vpf_list[] = { &unscaled_list[PF1], &unscaled_list[PF2], &unscaled_list[PF3], &unscaled_list[PF4], &unscaled_list[PF5], &unscaled_list[PF6], &unscaled_list[PF7], &unscaled_list[PF8], &unscaled_list[PF9], &unscaled_list[PF10], &unscaled_list[PF11], &unscaled_list[PF12], }; #define VPF_SZ (sizeof(vpf_list)/sizeof(vpf_list[0])) static struct button_list *vspf_list[] = { &unscaled_list[PF13], &unscaled_list[PF14], &unscaled_list[PF15], &unscaled_list[PF16], &unscaled_list[PF17], &unscaled_list[PF18], &unscaled_list[PF19], &unscaled_list[PF20], &unscaled_list[PF21], &unscaled_list[PF22], &unscaled_list[PF23], &unscaled_list[PF24], }; static Widget vpf_w[2][VPF_SZ]; static struct button_list *vpad_list[] = { &unscaled_list[NONE], &scaled_list[UP], &unscaled_list[NONE], &scaled_list[LEFT], &scaled_list[HOME], &scaled_list[RIGHT], &scaled_list[INS], &scaled_list[DOWN], &scaled_list[DEL], &unscaled_list[PA1], &unscaled_list[PA2], &unscaled_list[PA3], }; #define VPAD_SZ (sizeof(vpad_list)/sizeof(vpad_list[0])) static struct button_list *vfn_list[] = { &scaled_list[BTAB], &scaled_list[TAB], &unscaled_list[CLEAR], &unscaled_list[RESET], &unscaled_list[ERASE_EOF], &unscaled_list[ERASE_INPUT], &unscaled_list[DUP], &unscaled_list[FIELD_MARK], &unscaled_list[SYS_REQ], &unscaled_list[CURSOR_SELECT], &unscaled_list[ATTN], &unscaled_list[COMPOSE], &scaled_list[NEWLINE], &unscaled_list[ENTER], }; #define VFN_SZ (sizeof(vfn_list)/sizeof(vfn_list[0])) static Dimension pf_width; static Dimension key_height; static Dimension pa_width; static Dimension key_width; static Dimension large_key_width; static Widget keypad_container = (Widget) NULL; static Widget key_pad = NULL; static XtTranslations keypad_t00 = (XtTranslations) NULL; static XtTranslations keypad_t0 = (XtTranslations) NULL; static XtTranslations saved_xt = (XtTranslations) NULL; /* Initialize the keypad placement from the keypad resource. */ void keypad_placement_init(void) { if (!strcmp(xappres.keypad, KpLeft)) { kp_placement = kp_left; } else if (!strcmp(xappres.keypad, KpRight)) { kp_placement = kp_right; } else if (!strcmp(xappres.keypad, KpBottom)) { kp_placement = kp_bottom; } else if (!strcmp(xappres.keypad, KpIntegral)) { kp_placement = kp_integral; } else if (!strcmp(xappres.keypad, KpInsideRight)) { kp_placement = kp_inside_right; } else { xs_error("Unknown value for %s", ResKeypad); } } /* * Callback for keypad buttons. Simply calls the function pointed to by the * client data. */ static void callfn(Widget w _is_unused, XtPointer client_data, XtPointer call_data _is_unused) { struct button_list *keyd = (struct button_list *) client_data; run_action(keyd->action_name, IA_KEYPAD, keyd->parm, NULL); } /* * Create a button. */ static Widget make_a_button(Widget container, Position x, Position y, Dimension w, Dimension h, struct button_list *keyd) { Widget command; Pixmap pixmap; if (!keyd->label) { return (Widget) 0; } command = XtVaCreateManagedWidget( keyd->name, commandWidgetClass, container, XtNx, x, XtNy, y, XtNwidth, w, XtNheight, h, XtNresize, False, NULL); XtAddCallback(command, XtNcallback, callfn, (XtPointer)keyd); if (keyd->bits) { pixmap = XCreateBitmapFromData(display, root_window, keyd->bits, keyd->width, keyd->height); XtVaSetValues(command, XtNbitmap, pixmap, NULL); } else { XtVaSetValues(command, XtNlabel, keyd->label, NULL); } return command; } /* * Create the keys for a horizontal keypad */ static void keypad_keys_horiz(Widget container) { unsigned i; Position row, col; Position x0, y0; /* PF Keys */ row = col = 0; x0 = SIDE_MARGIN; y0 = TOP_MARGIN; for (i = 0; i < PF_SZ; i++) { make_a_button(container, (Position)(x0 + (col*(pf_width+2*BORDER+SPACING))), (Position)(y0 + (row*(key_height+2*BORDER+SPACING))), pf_width, key_height, pf_list[i]); if (++col >= 12) { col = 0; row++; } } /* Keypad */ row = col = 0; x0 = SIDE_MARGIN + 12*(pf_width+2*BORDER+SPACING) + HGAP; y0 = TOP_MARGIN; for (i = 0; i < PAD_SZ; i++) { make_a_button(container, (Position)(x0 + (col*(pa_width+2*BORDER+SPACING))), (Position)(y0 + (row*(key_height+2*BORDER+SPACING))), pa_width, key_height, pad_list[i]); if (++col >= 3) { col = 0; if (++row == 1) { y0 += VGAP; } } } /* Bottom */ row = col = 0; x0 = SIDE_MARGIN; y0 = TOP_MARGIN + 2*(key_height+2*BORDER+SPACING) + VGAP; for (i = 0; i < LOWER_SZ; i++) { make_a_button(container, (Position)(x0 + (col*(key_width+2*BORDER+FAT_SPACING))), (Position)(y0 + (row*(key_height+2*BORDER+SPACING))), key_width, key_height, lower_list[i]); if (++row >= 2) { ++col; row = 0; } } } static bool vert_keypad = false; static Widget spf_container; /* * Create the keys for a vertical keypad. */ static void keypad_keys_vert(Widget container) { unsigned i; Position row, col; Position x0, y0; Widget c1, c2; vert_keypad = true; /* Container for shifted PF keys */ spf_container = XtVaCreateManagedWidget( "shift", compositeWidgetClass, container, XtNmappedWhenManaged, False, XtNborderWidth, 0, XtNwidth, VERT_WIDTH, XtNheight, TOP_MARGIN+4*(key_height+2*BORDER)+3*SPACING, NULL); if (appres.interactive.mono) { XtVaSetValues(spf_container, XtNbackgroundPixmap, gray, NULL); } else { XtVaSetValues(spf_container, XtNbackground, keypadbg_pixel, NULL); } /* PF keys */ if (xappres.invert_kpshift) { c1 = spf_container; c2 = container; } else { c1 = container; c2 = spf_container; } row = col = 0; x0 = SIDE_MARGIN; y0 = TOP_MARGIN; for (i = 0; i < VPF_SZ; i++) { vpf_w[0][i] = make_a_button(c1, (Position)(x0 + (col*(pa_width+2*BORDER+SPACING))), (Position)(y0 + (row*(key_height+2*BORDER+SPACING))), pa_width, key_height, vpf_list[i]); vpf_w[1][i] = make_a_button(c2, (Position)(x0 + (col*(pa_width+2*BORDER+SPACING))), (Position)(y0 + (row*(key_height+2*BORDER+SPACING))), pa_width, key_height, vspf_list[i]); if (++col >= 3) { col = 0; row++; } } /* Cursor and PA keys */ for (i = 0; i < VPAD_SZ; i++) { make_a_button(container, (Position)(x0 + (col*(pa_width+2*BORDER+SPACING))), (Position)(y0 + (row*(key_height+2*BORDER+SPACING))), pa_width, key_height, vpad_list[i]); if (++col >= 3) { col = 0; row++; } } /* Other keys */ for (i = 0; i < VFN_SZ; i++) { make_a_button(container, (Position)(x0 + (col*(large_key_width+2*BORDER+SPACING))), (Position)(y0 + (row*(key_height+2*BORDER+SPACING))), large_key_width, key_height, vfn_list[i]); if (++col >= 2) { col = 0; row++; } } } static Dimension get_keypad_dimension(const char *name) { char *d; long v; if ((d = get_fresource("%s.%s", ResKeypad, name)) == NULL) { xs_error("Cannot find %s resource", ResKeypad); } if ((v = strtol(d, (char **)0, 0)) <= 0) { xs_error("Illegal %s resource", ResKeypad); } return rescale((Dimension)v); } static void init_keypad_dimensions(void) { static bool done = false; if (done) { return; } key_height = get_keypad_dimension(ResKeyHeight); key_width = get_keypad_dimension(ResKeyWidth); pf_width = get_keypad_dimension(ResPfWidth); pa_width = get_keypad_dimension(ResPaWidth); large_key_width = get_keypad_dimension(ResLargeKeyWidth); if (rescale(btab_width) >= btab20_width) { scaled_list[BTAB].bits = (char *)btab20_bits; scaled_list[BTAB].width = btab20_width; scaled_list[BTAB].height = btab20_height; scaled_list[DEL].bits = (char *)del20_bits; scaled_list[DEL].width = del20_width; scaled_list[DEL].height = del20_height; scaled_list[DOWN].bits = (char *)down20_bits; scaled_list[DOWN].width = down20_width; scaled_list[DOWN].height = down20_height; scaled_list[HOME].bits = (char *)home20_bits; scaled_list[HOME].width = home20_width; scaled_list[HOME].height = home20_height; scaled_list[INS].bits = (char *)ins20_bits; scaled_list[INS].width = ins20_width; scaled_list[INS].height = ins20_height; scaled_list[LEFT].bits = (char *)left20_bits; scaled_list[LEFT].width = left20_width; scaled_list[LEFT].height = left20_height; scaled_list[NEWLINE].bits = (char *)newline20_bits; scaled_list[NEWLINE].width = newline20_width; scaled_list[NEWLINE].height = newline20_height; scaled_list[RIGHT].bits = (char *)right20_bits; scaled_list[RIGHT].width = right20_width; scaled_list[RIGHT].height = right20_height; scaled_list[TAB].bits = (char *)tab20_bits; scaled_list[TAB].width = tab20_width; scaled_list[TAB].height = tab20_height; scaled_list[UP].bits = (char *)up20_bits; scaled_list[UP].width = up20_width; scaled_list[UP].height = up20_height; } else if (rescale(btab_width) >= btab15_width) { scaled_list[BTAB].bits = (char *)btab15_bits; scaled_list[BTAB].width = btab15_width; scaled_list[BTAB].height = btab15_height; scaled_list[DEL].bits = (char *)del15_bits; scaled_list[DEL].width = del15_width; scaled_list[DEL].height = del15_height; scaled_list[DOWN].bits = (char *)down15_bits; scaled_list[DOWN].width = down15_width; scaled_list[DOWN].height = down15_height; scaled_list[HOME].bits = (char *)home15_bits; scaled_list[HOME].width = home15_width; scaled_list[HOME].height = home15_height; scaled_list[INS].bits = (char *)ins15_bits; scaled_list[INS].width = ins15_width; scaled_list[INS].height = ins15_height; scaled_list[LEFT].bits = (char *)left15_bits; scaled_list[LEFT].width = left15_width; scaled_list[LEFT].height = left15_height; scaled_list[NEWLINE].bits = (char *)newline15_bits; scaled_list[NEWLINE].width = newline15_width; scaled_list[NEWLINE].height = newline15_height; scaled_list[RIGHT].bits = (char *)right15_bits; scaled_list[RIGHT].width = right15_width; scaled_list[RIGHT].height = right15_height; scaled_list[TAB].bits = (char *)tab15_bits; scaled_list[TAB].width = tab15_width; scaled_list[TAB].height = tab15_height; scaled_list[UP].bits = (char *)up15_bits; scaled_list[UP].width = up15_width; scaled_list[UP].height = up15_height; } else { scaled_list[BTAB].bits = (char *)btab_bits; scaled_list[BTAB].width = btab_width; scaled_list[BTAB].height = btab_height; scaled_list[DEL].bits = (char *)del_bits; scaled_list[DEL].width = del_width; scaled_list[DEL].height = del_height; scaled_list[DOWN].bits = (char *)down_bits; scaled_list[DOWN].width = down_width; scaled_list[DOWN].height = down_height; scaled_list[HOME].bits = (char *)home_bits; scaled_list[HOME].width = home_width; scaled_list[HOME].height = home_height; scaled_list[INS].bits = (char *)ins_bits; scaled_list[INS].width = ins_width; scaled_list[INS].height = ins_height; scaled_list[LEFT].bits = (char *)left_bits; scaled_list[LEFT].width = left_width; scaled_list[LEFT].height = left_height; scaled_list[NEWLINE].bits = (char *)newline_bits; scaled_list[NEWLINE].width = newline_width; scaled_list[NEWLINE].height = newline_height; scaled_list[RIGHT].bits = (char *)right_bits; scaled_list[RIGHT].width = right_width; scaled_list[RIGHT].height = right_height; scaled_list[TAB].bits = (char *)tab_bits; scaled_list[TAB].width = tab_width; scaled_list[TAB].height = tab_height; scaled_list[UP].bits = (char *)up_bits; scaled_list[UP].width = up_width; scaled_list[UP].height = up_height; } done = true; } Dimension min_keypad_width(void) { init_keypad_dimensions(); return HORIZ_WIDTH; } Dimension keypad_qheight(void) { init_keypad_dimensions(); return TOP_MARGIN + (NUM_ROWS*(key_height+2*BORDER)) + (NUM_ROWS-1)*SPACING + VGAP + BOTTOM_MARGIN; } /* * Create a keypad. */ Widget keypad_init(Widget container, Dimension voffset, Dimension screen_width, bool floating, bool vert) { Dimension height; Dimension width = screen_width; Dimension hoffset; init_keypad_dimensions(); /* Figure out what dimensions to use */ if (vert) { width = VERT_WIDTH; } else { width = HORIZ_WIDTH; } if (vert) { height = TOP_MARGIN + (NUM_VROWS*(key_height+2*BORDER)) + (NUM_VROWS-1)*SPACING + BOTTOM_MARGIN; } else { height = keypad_qheight(); } /* Create a container */ if (screen_width > width) { hoffset = ((screen_width - width) / (unsigned) 2) & ~1; } else { hoffset = 0; } if (voffset & 1) { voffset++; } if (key_pad == NULL) { key_pad = XtVaCreateManagedWidget( "keyPad", compositeWidgetClass, container, XtNx, hoffset, XtNy, voffset, XtNborderWidth, (Dimension) (floating ? 1 : 0), XtNwidth, width, XtNheight, height, NULL); if (appres.interactive.mono) { XtVaSetValues(key_pad, XtNbackgroundPixmap, gray, NULL); } else { XtVaSetValues(key_pad, XtNbackground, keypadbg_pixel, NULL); } /* Create the keys */ if (vert) { keypad_keys_vert(key_pad); } else { keypad_keys_horiz(key_pad); } } else { XtVaSetValues(key_pad, XtNx, hoffset, XtNy, voffset, NULL); } return key_pad; } /* * Swap PF1-12 and PF13-24 on the vertical popup keypad, by mapping or * unmapping the window containing the shifted keys. */ void keypad_shift(void) { if (!vert_keypad || (spf_container == NULL) || !XtIsRealized(spf_container)) { return; } if (shifted) { XtMapWidget(spf_container); } else { XtUnmapWidget(spf_container); } } /* * Keypad popup */ Widget keypad_shell = NULL; bool keypad_popped = false; static bool TrueD = true; static bool *TrueP = &TrueD; static bool FalseD = false; static bool *FalseP = &FalseD; static enum placement *pp; /* * Called when the main screen is first exposed, to pop up the keypad the * first time */ void keypad_first_up(void) { if (!xappres.keypad_on || kp_placement == kp_integral) { return; } keypad_popup_init(); popup_popup(keypad_shell, XtGrabNone); } /* Called when the keypad popup pops up or down */ static void keypad_updown(Widget w _is_unused, XtPointer client_data, XtPointer call_data) { xappres.keypad_on = keypad_popped = *(bool *)client_data; if (!keypad_popped) { XtDestroyWidget(keypad_shell); keypad_shell = NULL; keypad_container = NULL; key_pad = NULL; spf_container = NULL; } if (xappres.keypad_on) { place_popup(w, (XtPointer)pp, call_data); } menubar_keypad_changed(); } /* Create the pop-up keypad */ void keypad_popup_init(void) { Widget w; Dimension height, width, border; bool vert = false; if (keypad_shell != NULL) { return; } switch (kp_placement) { case kp_left: vert = true; pp = LeftP; break; case kp_right: vert = true; pp = RightP; break; case kp_bottom: vert = false; pp = BottomP; break; case kp_integral: /* can't happen */ return; case kp_inside_right: vert = true; pp = InsideRightP; break; } /* Create a popup shell */ keypad_shell = XtVaCreatePopupShell( "keypadPopup", transientShellWidgetClass, toplevel, NULL); /*XtAddCallback(keypad_shell, XtNpopupCallback, place_popup, (XtPointer)pp);*/ XtAddCallback(keypad_shell, XtNpopupCallback, keypad_updown, (XtPointer) TrueP); XtAddCallback(keypad_shell, XtNpopdownCallback, keypad_updown, (XtPointer) FalseP); /* Create a keypad in the popup */ keypad_container = XtVaCreateManagedWidget( "container", compositeWidgetClass, keypad_shell, XtNborderWidth, 0, XtNheight, 10, XtNwidth, 10, NULL); w = keypad_init(keypad_container, 0, 0, true, vert); /* Fix the window size */ XtVaGetValues(w, XtNheight, &height, XtNwidth, &width, XtNborderWidth, &border, NULL); height += 2*border; width += 2*border; XtVaSetValues(keypad_container, XtNheight, height, XtNwidth, width, NULL); XtVaSetValues(keypad_shell, XtNheight, height, XtNwidth, width, XtNbaseHeight, height, XtNbaseWidth, width, XtNminHeight, height, XtNminWidth, width, XtNmaxHeight, height, XtNmaxWidth, width, NULL); /* Make keystrokes in the popup apply to the main window */ save_00translations(keypad_container, &keypad_t00); set_translations(keypad_container, NULL, &keypad_t0); if (saved_xt != (XtTranslations) NULL) { XtOverrideTranslations(keypad_container, saved_xt); saved_xt = (XtTranslations) NULL; } } /* Set a temporary keymap. */ void keypad_set_temp_keymap(XtTranslations trans) { if (keypad_container != (Widget) NULL) { if (trans == NULL) { trans = keypad_t0; XtUninstallTranslations(keypad_container); } XtOverrideTranslations(keypad_container, trans); saved_xt = (XtTranslations) NULL; } else { saved_xt = trans; } } /* Change the baseleve keymap. */ void keypad_set_keymap(void) { if (keypad_container == NULL) { return; } XtUninstallTranslations(keypad_container); set_translations(keypad_container, &keypad_t00, &keypad_t0); } /* Move the keypad. */ void keypad_move(void) { if (!keypad_popped) { return; } move_popup(keypad_shell, pp, NULL); } void keypad_popdown(bool *was_up) { if (keypad_popped) { *was_up = true; XtPopdown(keypad_shell); } else { *was_up = false; } } void keypad_popup(void) { #if 0 if (keypad_shell != NULL) { XtPopup(keypad_shell, XtGrabNone); } #endif xappres.keypad_on = True; keypad_first_up(); } void ikeypad_destroy(void) { if (key_pad != NULL) { XtDestroyWidget(key_pad); key_pad = NULL; } } suite3270-4.1/x3270/keysym2ucs.c000066400000000000000000002024641413735575200161140ustar00rootroot00000000000000/* $XFree86$ * This module converts keysym values into the corresponding ISO 10646 * (UCS, Unicode) values. * * The array keysymtab[] contains pairs of X11 keysym values for graphical * characters and the corresponding Unicode value. The function * keysym2ucs() maps a keysym onto a Unicode value using a binary search, * therefore keysymtab[] must remain SORTED by keysym value. * * The keysym -> UTF-8 conversion will hopefully one day be provided * by Xlib via XmbLookupString() and should ideally not have to be * done in X applications. But we are not there yet. * * We allow to represent any UCS character in the range U-00000000 to * U-00FFFFFF by a keysym value in the range 0x01000000 to 0x01ffffff. * This admittedly does not cover the entire 31-bit space of UCS, but * it does cover all of the characters up to U-10FFFF, which can be * represented by UTF-16, and more, and it is very unlikely that higher * UCS codes will ever be assigned by ISO. So to get Unicode character * U+ABCD you can directly use keysym 0x0100abcd. * * NOTE: The comments in the table below contain the actual character * encoded in UTF-8, so for viewing and editing best use an editor in * UTF-8 mode. * * Author: Markus G. Kuhn , * University of Cambridge, April 2001 * * Special thanks to Richard Verhoeven for preparing * an initial draft of the mapping table. * * This software is in the public domain. Share and enjoy! * * AUTOMATICALLY GENERATED FILE, DO NOT EDIT !!! (unicode/convmap.pl) */ #include "keysym2ucs.h" struct codepair { unsigned short keysym; unsigned short ucs; } keysymtab[] = { { 0x01a1, 0x0104 }, /* Aogonek Ä„ LATIN CAPITAL LETTER A WITH OGONEK */ { 0x01a2, 0x02d8 }, /* breve ˘ BREVE */ { 0x01a3, 0x0141 }, /* Lstroke Å LATIN CAPITAL LETTER L WITH STROKE */ { 0x01a5, 0x013d }, /* Lcaron Ľ LATIN CAPITAL LETTER L WITH CARON */ { 0x01a6, 0x015a }, /* Sacute Åš LATIN CAPITAL LETTER S WITH ACUTE */ { 0x01a9, 0x0160 }, /* Scaron Å  LATIN CAPITAL LETTER S WITH CARON */ { 0x01aa, 0x015e }, /* Scedilla Åž LATIN CAPITAL LETTER S WITH CEDILLA */ { 0x01ab, 0x0164 }, /* Tcaron Ť LATIN CAPITAL LETTER T WITH CARON */ { 0x01ac, 0x0179 }, /* Zacute Ź LATIN CAPITAL LETTER Z WITH ACUTE */ { 0x01ae, 0x017d }, /* Zcaron Ž LATIN CAPITAL LETTER Z WITH CARON */ { 0x01af, 0x017b }, /* Zabovedot Å» LATIN CAPITAL LETTER Z WITH DOT ABOVE */ { 0x01b1, 0x0105 }, /* aogonek Ä… LATIN SMALL LETTER A WITH OGONEK */ { 0x01b2, 0x02db }, /* ogonek Ë› OGONEK */ { 0x01b3, 0x0142 }, /* lstroke Å‚ LATIN SMALL LETTER L WITH STROKE */ { 0x01b5, 0x013e }, /* lcaron ľ LATIN SMALL LETTER L WITH CARON */ { 0x01b6, 0x015b }, /* sacute Å› LATIN SMALL LETTER S WITH ACUTE */ { 0x01b7, 0x02c7 }, /* caron ˇ CARON */ { 0x01b9, 0x0161 }, /* scaron Å¡ LATIN SMALL LETTER S WITH CARON */ { 0x01ba, 0x015f }, /* scedilla ÅŸ LATIN SMALL LETTER S WITH CEDILLA */ { 0x01bb, 0x0165 }, /* tcaron Å¥ LATIN SMALL LETTER T WITH CARON */ { 0x01bc, 0x017a }, /* zacute ź LATIN SMALL LETTER Z WITH ACUTE */ { 0x01bd, 0x02dd }, /* doubleacute Ë DOUBLE ACUTE ACCENT */ { 0x01be, 0x017e }, /* zcaron ž LATIN SMALL LETTER Z WITH CARON */ { 0x01bf, 0x017c }, /* zabovedot ż LATIN SMALL LETTER Z WITH DOT ABOVE */ { 0x01c0, 0x0154 }, /* Racute Å” LATIN CAPITAL LETTER R WITH ACUTE */ { 0x01c3, 0x0102 }, /* Abreve Ä‚ LATIN CAPITAL LETTER A WITH BREVE */ { 0x01c5, 0x0139 }, /* Lacute Ĺ LATIN CAPITAL LETTER L WITH ACUTE */ { 0x01c6, 0x0106 }, /* Cacute Ć LATIN CAPITAL LETTER C WITH ACUTE */ { 0x01c8, 0x010c }, /* Ccaron ÄŒ LATIN CAPITAL LETTER C WITH CARON */ { 0x01ca, 0x0118 }, /* Eogonek Ę LATIN CAPITAL LETTER E WITH OGONEK */ { 0x01cc, 0x011a }, /* Ecaron Äš LATIN CAPITAL LETTER E WITH CARON */ { 0x01cf, 0x010e }, /* Dcaron ÄŽ LATIN CAPITAL LETTER D WITH CARON */ { 0x01d0, 0x0110 }, /* Dstroke Ä LATIN CAPITAL LETTER D WITH STROKE */ { 0x01d1, 0x0143 }, /* Nacute Ń LATIN CAPITAL LETTER N WITH ACUTE */ { 0x01d2, 0x0147 }, /* Ncaron Ň LATIN CAPITAL LETTER N WITH CARON */ { 0x01d5, 0x0150 }, /* Odoubleacute Å LATIN CAPITAL LETTER O WITH DOUBLE ACUTE */ { 0x01d8, 0x0158 }, /* Rcaron Ř LATIN CAPITAL LETTER R WITH CARON */ { 0x01d9, 0x016e }, /* Uring Å® LATIN CAPITAL LETTER U WITH RING ABOVE */ { 0x01db, 0x0170 }, /* Udoubleacute Ű LATIN CAPITAL LETTER U WITH DOUBLE ACUTE */ { 0x01de, 0x0162 }, /* Tcedilla Å¢ LATIN CAPITAL LETTER T WITH CEDILLA */ { 0x01e0, 0x0155 }, /* racute Å• LATIN SMALL LETTER R WITH ACUTE */ { 0x01e3, 0x0103 }, /* abreve ă LATIN SMALL LETTER A WITH BREVE */ { 0x01e5, 0x013a }, /* lacute ĺ LATIN SMALL LETTER L WITH ACUTE */ { 0x01e6, 0x0107 }, /* cacute ć LATIN SMALL LETTER C WITH ACUTE */ { 0x01e8, 0x010d }, /* ccaron Ä LATIN SMALL LETTER C WITH CARON */ { 0x01ea, 0x0119 }, /* eogonek Ä™ LATIN SMALL LETTER E WITH OGONEK */ { 0x01ec, 0x011b }, /* ecaron Ä› LATIN SMALL LETTER E WITH CARON */ { 0x01ef, 0x010f }, /* dcaron Ä LATIN SMALL LETTER D WITH CARON */ { 0x01f0, 0x0111 }, /* dstroke Ä‘ LATIN SMALL LETTER D WITH STROKE */ { 0x01f1, 0x0144 }, /* nacute Å„ LATIN SMALL LETTER N WITH ACUTE */ { 0x01f2, 0x0148 }, /* ncaron ň LATIN SMALL LETTER N WITH CARON */ { 0x01f5, 0x0151 }, /* odoubleacute Å‘ LATIN SMALL LETTER O WITH DOUBLE ACUTE */ { 0x01f8, 0x0159 }, /* rcaron Å™ LATIN SMALL LETTER R WITH CARON */ { 0x01f9, 0x016f }, /* uring ů LATIN SMALL LETTER U WITH RING ABOVE */ { 0x01fb, 0x0171 }, /* udoubleacute ű LATIN SMALL LETTER U WITH DOUBLE ACUTE */ { 0x01fe, 0x0163 }, /* tcedilla Å£ LATIN SMALL LETTER T WITH CEDILLA */ { 0x01ff, 0x02d9 }, /* abovedot Ë™ DOT ABOVE */ { 0x02a1, 0x0126 }, /* Hstroke Ħ LATIN CAPITAL LETTER H WITH STROKE */ { 0x02a6, 0x0124 }, /* Hcircumflex Ĥ LATIN CAPITAL LETTER H WITH CIRCUMFLEX */ { 0x02a9, 0x0130 }, /* Iabovedot İ LATIN CAPITAL LETTER I WITH DOT ABOVE */ { 0x02ab, 0x011e }, /* Gbreve Äž LATIN CAPITAL LETTER G WITH BREVE */ { 0x02ac, 0x0134 }, /* Jcircumflex Ä´ LATIN CAPITAL LETTER J WITH CIRCUMFLEX */ { 0x02b1, 0x0127 }, /* hstroke ħ LATIN SMALL LETTER H WITH STROKE */ { 0x02b6, 0x0125 }, /* hcircumflex Ä¥ LATIN SMALL LETTER H WITH CIRCUMFLEX */ { 0x02b9, 0x0131 }, /* idotless ı LATIN SMALL LETTER DOTLESS I */ { 0x02bb, 0x011f }, /* gbreve ÄŸ LATIN SMALL LETTER G WITH BREVE */ { 0x02bc, 0x0135 }, /* jcircumflex ĵ LATIN SMALL LETTER J WITH CIRCUMFLEX */ { 0x02c5, 0x010a }, /* Cabovedot ÄŠ LATIN CAPITAL LETTER C WITH DOT ABOVE */ { 0x02c6, 0x0108 }, /* Ccircumflex Ĉ LATIN CAPITAL LETTER C WITH CIRCUMFLEX */ { 0x02d5, 0x0120 }, /* Gabovedot Ä  LATIN CAPITAL LETTER G WITH DOT ABOVE */ { 0x02d8, 0x011c }, /* Gcircumflex Äœ LATIN CAPITAL LETTER G WITH CIRCUMFLEX */ { 0x02dd, 0x016c }, /* Ubreve Ŭ LATIN CAPITAL LETTER U WITH BREVE */ { 0x02de, 0x015c }, /* Scircumflex Åœ LATIN CAPITAL LETTER S WITH CIRCUMFLEX */ { 0x02e5, 0x010b }, /* cabovedot Ä‹ LATIN SMALL LETTER C WITH DOT ABOVE */ { 0x02e6, 0x0109 }, /* ccircumflex ĉ LATIN SMALL LETTER C WITH CIRCUMFLEX */ { 0x02f5, 0x0121 }, /* gabovedot Ä¡ LATIN SMALL LETTER G WITH DOT ABOVE */ { 0x02f8, 0x011d }, /* gcircumflex Ä LATIN SMALL LETTER G WITH CIRCUMFLEX */ { 0x02fd, 0x016d }, /* ubreve Å­ LATIN SMALL LETTER U WITH BREVE */ { 0x02fe, 0x015d }, /* scircumflex Å LATIN SMALL LETTER S WITH CIRCUMFLEX */ { 0x03a2, 0x0138 }, /* kra ĸ LATIN SMALL LETTER KRA */ { 0x03a3, 0x0156 }, /* Rcedilla Å– LATIN CAPITAL LETTER R WITH CEDILLA */ { 0x03a5, 0x0128 }, /* Itilde Ĩ LATIN CAPITAL LETTER I WITH TILDE */ { 0x03a6, 0x013b }, /* Lcedilla Ä» LATIN CAPITAL LETTER L WITH CEDILLA */ { 0x03aa, 0x0112 }, /* Emacron Ä’ LATIN CAPITAL LETTER E WITH MACRON */ { 0x03ab, 0x0122 }, /* Gcedilla Ä¢ LATIN CAPITAL LETTER G WITH CEDILLA */ { 0x03ac, 0x0166 }, /* Tslash Ŧ LATIN CAPITAL LETTER T WITH STROKE */ { 0x03b3, 0x0157 }, /* rcedilla Å— LATIN SMALL LETTER R WITH CEDILLA */ { 0x03b5, 0x0129 }, /* itilde Ä© LATIN SMALL LETTER I WITH TILDE */ { 0x03b6, 0x013c }, /* lcedilla ļ LATIN SMALL LETTER L WITH CEDILLA */ { 0x03ba, 0x0113 }, /* emacron Ä“ LATIN SMALL LETTER E WITH MACRON */ { 0x03bb, 0x0123 }, /* gcedilla Ä£ LATIN SMALL LETTER G WITH CEDILLA */ { 0x03bc, 0x0167 }, /* tslash ŧ LATIN SMALL LETTER T WITH STROKE */ { 0x03bd, 0x014a }, /* ENG ÅŠ LATIN CAPITAL LETTER ENG */ { 0x03bf, 0x014b }, /* eng Å‹ LATIN SMALL LETTER ENG */ { 0x03c0, 0x0100 }, /* Amacron Ä€ LATIN CAPITAL LETTER A WITH MACRON */ { 0x03c7, 0x012e }, /* Iogonek Ä® LATIN CAPITAL LETTER I WITH OGONEK */ { 0x03cc, 0x0116 }, /* Eabovedot Ä– LATIN CAPITAL LETTER E WITH DOT ABOVE */ { 0x03cf, 0x012a }, /* Imacron Ī LATIN CAPITAL LETTER I WITH MACRON */ { 0x03d1, 0x0145 }, /* Ncedilla Å… LATIN CAPITAL LETTER N WITH CEDILLA */ { 0x03d2, 0x014c }, /* Omacron ÅŒ LATIN CAPITAL LETTER O WITH MACRON */ { 0x03d3, 0x0136 }, /* Kcedilla Ķ LATIN CAPITAL LETTER K WITH CEDILLA */ { 0x03d9, 0x0172 }, /* Uogonek Ų LATIN CAPITAL LETTER U WITH OGONEK */ { 0x03dd, 0x0168 }, /* Utilde Ũ LATIN CAPITAL LETTER U WITH TILDE */ { 0x03de, 0x016a }, /* Umacron Ū LATIN CAPITAL LETTER U WITH MACRON */ { 0x03e0, 0x0101 }, /* amacron Ä LATIN SMALL LETTER A WITH MACRON */ { 0x03e7, 0x012f }, /* iogonek į LATIN SMALL LETTER I WITH OGONEK */ { 0x03ec, 0x0117 }, /* eabovedot Ä— LATIN SMALL LETTER E WITH DOT ABOVE */ { 0x03ef, 0x012b }, /* imacron Ä« LATIN SMALL LETTER I WITH MACRON */ { 0x03f1, 0x0146 }, /* ncedilla ņ LATIN SMALL LETTER N WITH CEDILLA */ { 0x03f2, 0x014d }, /* omacron Å LATIN SMALL LETTER O WITH MACRON */ { 0x03f3, 0x0137 }, /* kcedilla Ä· LATIN SMALL LETTER K WITH CEDILLA */ { 0x03f9, 0x0173 }, /* uogonek ų LATIN SMALL LETTER U WITH OGONEK */ { 0x03fd, 0x0169 }, /* utilde Å© LATIN SMALL LETTER U WITH TILDE */ { 0x03fe, 0x016b }, /* umacron Å« LATIN SMALL LETTER U WITH MACRON */ { 0x047e, 0x203e }, /* overline ‾ OVERLINE */ { 0x04a1, 0x3002 }, /* kana_fullstop 。 IDEOGRAPHIC FULL STOP */ { 0x04a2, 0x300c }, /* kana_openingbracket 「 LEFT CORNER BRACKET */ { 0x04a3, 0x300d }, /* kana_closingbracket 〠RIGHT CORNER BRACKET */ { 0x04a4, 0x3001 }, /* kana_comma 〠IDEOGRAPHIC COMMA */ { 0x04a5, 0x30fb }, /* kana_conjunctive ・ KATAKANA MIDDLE DOT */ { 0x04a6, 0x30f2 }, /* kana_WO ヲ KATAKANA LETTER WO */ { 0x04a7, 0x30a1 }, /* kana_a ã‚¡ KATAKANA LETTER SMALL A */ { 0x04a8, 0x30a3 }, /* kana_i ã‚£ KATAKANA LETTER SMALL I */ { 0x04a9, 0x30a5 }, /* kana_u ã‚¥ KATAKANA LETTER SMALL U */ { 0x04aa, 0x30a7 }, /* kana_e ã‚§ KATAKANA LETTER SMALL E */ { 0x04ab, 0x30a9 }, /* kana_o ã‚© KATAKANA LETTER SMALL O */ { 0x04ac, 0x30e3 }, /* kana_ya ャ KATAKANA LETTER SMALL YA */ { 0x04ad, 0x30e5 }, /* kana_yu ュ KATAKANA LETTER SMALL YU */ { 0x04ae, 0x30e7 }, /* kana_yo ョ KATAKANA LETTER SMALL YO */ { 0x04af, 0x30c3 }, /* kana_tsu ッ KATAKANA LETTER SMALL TU */ { 0x04b0, 0x30fc }, /* prolongedsound ー KATAKANA-HIRAGANA PROLONGED SOUND MARK */ { 0x04b1, 0x30a2 }, /* kana_A ã‚¢ KATAKANA LETTER A */ { 0x04b2, 0x30a4 }, /* kana_I イ KATAKANA LETTER I */ { 0x04b3, 0x30a6 }, /* kana_U ウ KATAKANA LETTER U */ { 0x04b4, 0x30a8 }, /* kana_E エ KATAKANA LETTER E */ { 0x04b5, 0x30aa }, /* kana_O オ KATAKANA LETTER O */ { 0x04b6, 0x30ab }, /* kana_KA ã‚« KATAKANA LETTER KA */ { 0x04b7, 0x30ad }, /* kana_KI ã‚­ KATAKANA LETTER KI */ { 0x04b8, 0x30af }, /* kana_KU ク KATAKANA LETTER KU */ { 0x04b9, 0x30b1 }, /* kana_KE ケ KATAKANA LETTER KE */ { 0x04ba, 0x30b3 }, /* kana_KO コ KATAKANA LETTER KO */ { 0x04bb, 0x30b5 }, /* kana_SA サ KATAKANA LETTER SA */ { 0x04bc, 0x30b7 }, /* kana_SHI ã‚· KATAKANA LETTER SI */ { 0x04bd, 0x30b9 }, /* kana_SU ス KATAKANA LETTER SU */ { 0x04be, 0x30bb }, /* kana_SE ã‚» KATAKANA LETTER SE */ { 0x04bf, 0x30bd }, /* kana_SO ソ KATAKANA LETTER SO */ { 0x04c0, 0x30bf }, /* kana_TA ã‚¿ KATAKANA LETTER TA */ { 0x04c1, 0x30c1 }, /* kana_CHI ムKATAKANA LETTER TI */ { 0x04c2, 0x30c4 }, /* kana_TSU ツ KATAKANA LETTER TU */ { 0x04c3, 0x30c6 }, /* kana_TE テ KATAKANA LETTER TE */ { 0x04c4, 0x30c8 }, /* kana_TO ト KATAKANA LETTER TO */ { 0x04c5, 0x30ca }, /* kana_NA ナ KATAKANA LETTER NA */ { 0x04c6, 0x30cb }, /* kana_NI ニ KATAKANA LETTER NI */ { 0x04c7, 0x30cc }, /* kana_NU ヌ KATAKANA LETTER NU */ { 0x04c8, 0x30cd }, /* kana_NE ムKATAKANA LETTER NE */ { 0x04c9, 0x30ce }, /* kana_NO ノ KATAKANA LETTER NO */ { 0x04ca, 0x30cf }, /* kana_HA ムKATAKANA LETTER HA */ { 0x04cb, 0x30d2 }, /* kana_HI ヒ KATAKANA LETTER HI */ { 0x04cc, 0x30d5 }, /* kana_FU フ KATAKANA LETTER HU */ { 0x04cd, 0x30d8 }, /* kana_HE ヘ KATAKANA LETTER HE */ { 0x04ce, 0x30db }, /* kana_HO ホ KATAKANA LETTER HO */ { 0x04cf, 0x30de }, /* kana_MA マ KATAKANA LETTER MA */ { 0x04d0, 0x30df }, /* kana_MI ミ KATAKANA LETTER MI */ { 0x04d1, 0x30e0 }, /* kana_MU ム KATAKANA LETTER MU */ { 0x04d2, 0x30e1 }, /* kana_ME メ KATAKANA LETTER ME */ { 0x04d3, 0x30e2 }, /* kana_MO モ KATAKANA LETTER MO */ { 0x04d4, 0x30e4 }, /* kana_YA ヤ KATAKANA LETTER YA */ { 0x04d5, 0x30e6 }, /* kana_YU ユ KATAKANA LETTER YU */ { 0x04d6, 0x30e8 }, /* kana_YO ヨ KATAKANA LETTER YO */ { 0x04d7, 0x30e9 }, /* kana_RA ラ KATAKANA LETTER RA */ { 0x04d8, 0x30ea }, /* kana_RI リ KATAKANA LETTER RI */ { 0x04d9, 0x30eb }, /* kana_RU ル KATAKANA LETTER RU */ { 0x04da, 0x30ec }, /* kana_RE レ KATAKANA LETTER RE */ { 0x04db, 0x30ed }, /* kana_RO ロ KATAKANA LETTER RO */ { 0x04dc, 0x30ef }, /* kana_WA ワ KATAKANA LETTER WA */ { 0x04dd, 0x30f3 }, /* kana_N ン KATAKANA LETTER N */ { 0x04de, 0x309b }, /* voicedsound ã‚› KATAKANA-HIRAGANA VOICED SOUND MARK */ { 0x04df, 0x309c }, /* semivoicedsound ゜ KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK */ { 0x05ac, 0x060c }, /* Arabic_comma ØŒ ARABIC COMMA */ { 0x05bb, 0x061b }, /* Arabic_semicolon Ø› ARABIC SEMICOLON */ { 0x05bf, 0x061f }, /* Arabic_question_mark ØŸ ARABIC QUESTION MARK */ { 0x05c1, 0x0621 }, /* Arabic_hamza Ø¡ ARABIC LETTER HAMZA */ { 0x05c2, 0x0622 }, /* Arabic_maddaonalef Ø¢ ARABIC LETTER ALEF WITH MADDA ABOVE */ { 0x05c3, 0x0623 }, /* Arabic_hamzaonalef Ø£ ARABIC LETTER ALEF WITH HAMZA ABOVE */ { 0x05c4, 0x0624 }, /* Arabic_hamzaonwaw ؤ ARABIC LETTER WAW WITH HAMZA ABOVE */ { 0x05c5, 0x0625 }, /* Arabic_hamzaunderalef Ø¥ ARABIC LETTER ALEF WITH HAMZA BELOW */ { 0x05c6, 0x0626 }, /* Arabic_hamzaonyeh ئ ARABIC LETTER YEH WITH HAMZA ABOVE */ { 0x05c7, 0x0627 }, /* Arabic_alef ا ARABIC LETTER ALEF */ { 0x05c8, 0x0628 }, /* Arabic_beh ب ARABIC LETTER BEH */ { 0x05c9, 0x0629 }, /* Arabic_tehmarbuta Ø© ARABIC LETTER TEH MARBUTA */ { 0x05ca, 0x062a }, /* Arabic_teh ت ARABIC LETTER TEH */ { 0x05cb, 0x062b }, /* Arabic_theh Ø« ARABIC LETTER THEH */ { 0x05cc, 0x062c }, /* Arabic_jeem ج ARABIC LETTER JEEM */ { 0x05cd, 0x062d }, /* Arabic_hah Ø­ ARABIC LETTER HAH */ { 0x05ce, 0x062e }, /* Arabic_khah Ø® ARABIC LETTER KHAH */ { 0x05cf, 0x062f }, /* Arabic_dal د ARABIC LETTER DAL */ { 0x05d0, 0x0630 }, /* Arabic_thal ذ ARABIC LETTER THAL */ { 0x05d1, 0x0631 }, /* Arabic_ra ر ARABIC LETTER REH */ { 0x05d2, 0x0632 }, /* Arabic_zain ز ARABIC LETTER ZAIN */ { 0x05d3, 0x0633 }, /* Arabic_seen س ARABIC LETTER SEEN */ { 0x05d4, 0x0634 }, /* Arabic_sheen Ø´ ARABIC LETTER SHEEN */ { 0x05d5, 0x0635 }, /* Arabic_sad ص ARABIC LETTER SAD */ { 0x05d6, 0x0636 }, /* Arabic_dad ض ARABIC LETTER DAD */ { 0x05d7, 0x0637 }, /* Arabic_tah Ø· ARABIC LETTER TAH */ { 0x05d8, 0x0638 }, /* Arabic_zah ظ ARABIC LETTER ZAH */ { 0x05d9, 0x0639 }, /* Arabic_ain ع ARABIC LETTER AIN */ { 0x05da, 0x063a }, /* Arabic_ghain غ ARABIC LETTER GHAIN */ { 0x05e0, 0x0640 }, /* Arabic_tatweel Ù€ ARABIC TATWEEL */ { 0x05e1, 0x0641 }, /* Arabic_feh Ù ARABIC LETTER FEH */ { 0x05e2, 0x0642 }, /* Arabic_qaf Ù‚ ARABIC LETTER QAF */ { 0x05e3, 0x0643 }, /* Arabic_kaf Ùƒ ARABIC LETTER KAF */ { 0x05e4, 0x0644 }, /* Arabic_lam Ù„ ARABIC LETTER LAM */ { 0x05e5, 0x0645 }, /* Arabic_meem Ù… ARABIC LETTER MEEM */ { 0x05e6, 0x0646 }, /* Arabic_noon Ù† ARABIC LETTER NOON */ { 0x05e7, 0x0647 }, /* Arabic_ha Ù‡ ARABIC LETTER HEH */ { 0x05e8, 0x0648 }, /* Arabic_waw Ùˆ ARABIC LETTER WAW */ { 0x05e9, 0x0649 }, /* Arabic_alefmaksura Ù‰ ARABIC LETTER ALEF MAKSURA */ { 0x05ea, 0x064a }, /* Arabic_yeh ÙŠ ARABIC LETTER YEH */ { 0x05eb, 0x064b }, /* Arabic_fathatan Ù‹ ARABIC FATHATAN */ { 0x05ec, 0x064c }, /* Arabic_dammatan ÙŒ ARABIC DAMMATAN */ { 0x05ed, 0x064d }, /* Arabic_kasratan Ù ARABIC KASRATAN */ { 0x05ee, 0x064e }, /* Arabic_fatha ÙŽ ARABIC FATHA */ { 0x05ef, 0x064f }, /* Arabic_damma Ù ARABIC DAMMA */ { 0x05f0, 0x0650 }, /* Arabic_kasra Ù ARABIC KASRA */ { 0x05f1, 0x0651 }, /* Arabic_shadda Ù‘ ARABIC SHADDA */ { 0x05f2, 0x0652 }, /* Arabic_sukun Ù’ ARABIC SUKUN */ { 0x06a1, 0x0452 }, /* Serbian_dje Ñ’ CYRILLIC SMALL LETTER DJE */ { 0x06a2, 0x0453 }, /* Macedonia_gje Ñ“ CYRILLIC SMALL LETTER GJE */ { 0x06a3, 0x0451 }, /* Cyrillic_io Ñ‘ CYRILLIC SMALL LETTER IO */ { 0x06a4, 0x0454 }, /* Ukrainian_ie Ñ” CYRILLIC SMALL LETTER UKRAINIAN IE */ { 0x06a5, 0x0455 }, /* Macedonia_dse Ñ• CYRILLIC SMALL LETTER DZE */ { 0x06a6, 0x0456 }, /* Ukrainian_i Ñ– CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I */ { 0x06a7, 0x0457 }, /* Ukrainian_yi Ñ— CYRILLIC SMALL LETTER YI */ { 0x06a8, 0x0458 }, /* Cyrillic_je ј CYRILLIC SMALL LETTER JE */ { 0x06a9, 0x0459 }, /* Cyrillic_lje Ñ™ CYRILLIC SMALL LETTER LJE */ { 0x06aa, 0x045a }, /* Cyrillic_nje Ñš CYRILLIC SMALL LETTER NJE */ { 0x06ab, 0x045b }, /* Serbian_tshe Ñ› CYRILLIC SMALL LETTER TSHE */ { 0x06ac, 0x045c }, /* Macedonia_kje Ñœ CYRILLIC SMALL LETTER KJE */ { 0x06ae, 0x045e }, /* Byelorussian_shortu Ñž CYRILLIC SMALL LETTER SHORT U */ { 0x06af, 0x045f }, /* Cyrillic_dzhe ÑŸ CYRILLIC SMALL LETTER DZHE */ { 0x06b0, 0x2116 }, /* numerosign â„– NUMERO SIGN */ { 0x06b1, 0x0402 }, /* Serbian_DJE Ђ CYRILLIC CAPITAL LETTER DJE */ { 0x06b2, 0x0403 }, /* Macedonia_GJE Ѓ CYRILLIC CAPITAL LETTER GJE */ { 0x06b3, 0x0401 }, /* Cyrillic_IO Ð CYRILLIC CAPITAL LETTER IO */ { 0x06b4, 0x0404 }, /* Ukrainian_IE Є CYRILLIC CAPITAL LETTER UKRAINIAN IE */ { 0x06b5, 0x0405 }, /* Macedonia_DSE Ð… CYRILLIC CAPITAL LETTER DZE */ { 0x06b6, 0x0406 }, /* Ukrainian_I І CYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN I */ { 0x06b7, 0x0407 }, /* Ukrainian_YI Ї CYRILLIC CAPITAL LETTER YI */ { 0x06b8, 0x0408 }, /* Cyrillic_JE Ј CYRILLIC CAPITAL LETTER JE */ { 0x06b9, 0x0409 }, /* Cyrillic_LJE Љ CYRILLIC CAPITAL LETTER LJE */ { 0x06ba, 0x040a }, /* Cyrillic_NJE Њ CYRILLIC CAPITAL LETTER NJE */ { 0x06bb, 0x040b }, /* Serbian_TSHE Ћ CYRILLIC CAPITAL LETTER TSHE */ { 0x06bc, 0x040c }, /* Macedonia_KJE ÐŒ CYRILLIC CAPITAL LETTER KJE */ { 0x06be, 0x040e }, /* Byelorussian_SHORTU ÐŽ CYRILLIC CAPITAL LETTER SHORT U */ { 0x06bf, 0x040f }, /* Cyrillic_DZHE Ð CYRILLIC CAPITAL LETTER DZHE */ { 0x06c0, 0x044e }, /* Cyrillic_yu ÑŽ CYRILLIC SMALL LETTER YU */ { 0x06c1, 0x0430 }, /* Cyrillic_a а CYRILLIC SMALL LETTER A */ { 0x06c2, 0x0431 }, /* Cyrillic_be б CYRILLIC SMALL LETTER BE */ { 0x06c3, 0x0446 }, /* Cyrillic_tse ц CYRILLIC SMALL LETTER TSE */ { 0x06c4, 0x0434 }, /* Cyrillic_de д CYRILLIC SMALL LETTER DE */ { 0x06c5, 0x0435 }, /* Cyrillic_ie е CYRILLIC SMALL LETTER IE */ { 0x06c6, 0x0444 }, /* Cyrillic_ef Ñ„ CYRILLIC SMALL LETTER EF */ { 0x06c7, 0x0433 }, /* Cyrillic_ghe г CYRILLIC SMALL LETTER GHE */ { 0x06c8, 0x0445 }, /* Cyrillic_ha Ñ… CYRILLIC SMALL LETTER HA */ { 0x06c9, 0x0438 }, /* Cyrillic_i и CYRILLIC SMALL LETTER I */ { 0x06ca, 0x0439 }, /* Cyrillic_shorti й CYRILLIC SMALL LETTER SHORT I */ { 0x06cb, 0x043a }, /* Cyrillic_ka к CYRILLIC SMALL LETTER KA */ { 0x06cc, 0x043b }, /* Cyrillic_el л CYRILLIC SMALL LETTER EL */ { 0x06cd, 0x043c }, /* Cyrillic_em м CYRILLIC SMALL LETTER EM */ { 0x06ce, 0x043d }, /* Cyrillic_en н CYRILLIC SMALL LETTER EN */ { 0x06cf, 0x043e }, /* Cyrillic_o о CYRILLIC SMALL LETTER O */ { 0x06d0, 0x043f }, /* Cyrillic_pe п CYRILLIC SMALL LETTER PE */ { 0x06d1, 0x044f }, /* Cyrillic_ya Ñ CYRILLIC SMALL LETTER YA */ { 0x06d2, 0x0440 }, /* Cyrillic_er Ñ€ CYRILLIC SMALL LETTER ER */ { 0x06d3, 0x0441 }, /* Cyrillic_es Ñ CYRILLIC SMALL LETTER ES */ { 0x06d4, 0x0442 }, /* Cyrillic_te Ñ‚ CYRILLIC SMALL LETTER TE */ { 0x06d5, 0x0443 }, /* Cyrillic_u у CYRILLIC SMALL LETTER U */ { 0x06d6, 0x0436 }, /* Cyrillic_zhe ж CYRILLIC SMALL LETTER ZHE */ { 0x06d7, 0x0432 }, /* Cyrillic_ve в CYRILLIC SMALL LETTER VE */ { 0x06d8, 0x044c }, /* Cyrillic_softsign ÑŒ CYRILLIC SMALL LETTER SOFT SIGN */ { 0x06d9, 0x044b }, /* Cyrillic_yeru Ñ‹ CYRILLIC SMALL LETTER YERU */ { 0x06da, 0x0437 }, /* Cyrillic_ze з CYRILLIC SMALL LETTER ZE */ { 0x06db, 0x0448 }, /* Cyrillic_sha ш CYRILLIC SMALL LETTER SHA */ { 0x06dc, 0x044d }, /* Cyrillic_e Ñ CYRILLIC SMALL LETTER E */ { 0x06dd, 0x0449 }, /* Cyrillic_shcha щ CYRILLIC SMALL LETTER SHCHA */ { 0x06de, 0x0447 }, /* Cyrillic_che ч CYRILLIC SMALL LETTER CHE */ { 0x06df, 0x044a }, /* Cyrillic_hardsign ÑŠ CYRILLIC SMALL LETTER HARD SIGN */ { 0x06e0, 0x042e }, /* Cyrillic_YU Ю CYRILLIC CAPITAL LETTER YU */ { 0x06e1, 0x0410 }, /* Cyrillic_A Ð CYRILLIC CAPITAL LETTER A */ { 0x06e2, 0x0411 }, /* Cyrillic_BE Б CYRILLIC CAPITAL LETTER BE */ { 0x06e3, 0x0426 }, /* Cyrillic_TSE Ц CYRILLIC CAPITAL LETTER TSE */ { 0x06e4, 0x0414 }, /* Cyrillic_DE Д CYRILLIC CAPITAL LETTER DE */ { 0x06e5, 0x0415 }, /* Cyrillic_IE Е CYRILLIC CAPITAL LETTER IE */ { 0x06e6, 0x0424 }, /* Cyrillic_EF Ф CYRILLIC CAPITAL LETTER EF */ { 0x06e7, 0x0413 }, /* Cyrillic_GHE Г CYRILLIC CAPITAL LETTER GHE */ { 0x06e8, 0x0425 }, /* Cyrillic_HA Ð¥ CYRILLIC CAPITAL LETTER HA */ { 0x06e9, 0x0418 }, /* Cyrillic_I И CYRILLIC CAPITAL LETTER I */ { 0x06ea, 0x0419 }, /* Cyrillic_SHORTI Й CYRILLIC CAPITAL LETTER SHORT I */ { 0x06eb, 0x041a }, /* Cyrillic_KA К CYRILLIC CAPITAL LETTER KA */ { 0x06ec, 0x041b }, /* Cyrillic_EL Л CYRILLIC CAPITAL LETTER EL */ { 0x06ed, 0x041c }, /* Cyrillic_EM М CYRILLIC CAPITAL LETTER EM */ { 0x06ee, 0x041d }, /* Cyrillic_EN Ð CYRILLIC CAPITAL LETTER EN */ { 0x06ef, 0x041e }, /* Cyrillic_O О CYRILLIC CAPITAL LETTER O */ { 0x06f0, 0x041f }, /* Cyrillic_PE П CYRILLIC CAPITAL LETTER PE */ { 0x06f1, 0x042f }, /* Cyrillic_YA Я CYRILLIC CAPITAL LETTER YA */ { 0x06f2, 0x0420 }, /* Cyrillic_ER Р CYRILLIC CAPITAL LETTER ER */ { 0x06f3, 0x0421 }, /* Cyrillic_ES С CYRILLIC CAPITAL LETTER ES */ { 0x06f4, 0x0422 }, /* Cyrillic_TE Т CYRILLIC CAPITAL LETTER TE */ { 0x06f5, 0x0423 }, /* Cyrillic_U У CYRILLIC CAPITAL LETTER U */ { 0x06f6, 0x0416 }, /* Cyrillic_ZHE Ж CYRILLIC CAPITAL LETTER ZHE */ { 0x06f7, 0x0412 }, /* Cyrillic_VE Ð’ CYRILLIC CAPITAL LETTER VE */ { 0x06f8, 0x042c }, /* Cyrillic_SOFTSIGN Ь CYRILLIC CAPITAL LETTER SOFT SIGN */ { 0x06f9, 0x042b }, /* Cyrillic_YERU Ы CYRILLIC CAPITAL LETTER YERU */ { 0x06fa, 0x0417 }, /* Cyrillic_ZE З CYRILLIC CAPITAL LETTER ZE */ { 0x06fb, 0x0428 }, /* Cyrillic_SHA Ш CYRILLIC CAPITAL LETTER SHA */ { 0x06fc, 0x042d }, /* Cyrillic_E Э CYRILLIC CAPITAL LETTER E */ { 0x06fd, 0x0429 }, /* Cyrillic_SHCHA Щ CYRILLIC CAPITAL LETTER SHCHA */ { 0x06fe, 0x0427 }, /* Cyrillic_CHE Ч CYRILLIC CAPITAL LETTER CHE */ { 0x06ff, 0x042a }, /* Cyrillic_HARDSIGN Ъ CYRILLIC CAPITAL LETTER HARD SIGN */ { 0x07a1, 0x0386 }, /* Greek_ALPHAaccent Ά GREEK CAPITAL LETTER ALPHA WITH TONOS */ { 0x07a2, 0x0388 }, /* Greek_EPSILONaccent Έ GREEK CAPITAL LETTER EPSILON WITH TONOS */ { 0x07a3, 0x0389 }, /* Greek_ETAaccent Ή GREEK CAPITAL LETTER ETA WITH TONOS */ { 0x07a4, 0x038a }, /* Greek_IOTAaccent Ί GREEK CAPITAL LETTER IOTA WITH TONOS */ { 0x07a5, 0x03aa }, /* Greek_IOTAdiaeresis Ϊ GREEK CAPITAL LETTER IOTA WITH DIALYTIKA */ { 0x07a7, 0x038c }, /* Greek_OMICRONaccent ÎŒ GREEK CAPITAL LETTER OMICRON WITH TONOS */ { 0x07a8, 0x038e }, /* Greek_UPSILONaccent ÎŽ GREEK CAPITAL LETTER UPSILON WITH TONOS */ { 0x07a9, 0x03ab }, /* Greek_UPSILONdieresis Ϋ GREEK CAPITAL LETTER UPSILON WITH DIALYTIKA */ { 0x07ab, 0x038f }, /* Greek_OMEGAaccent Î GREEK CAPITAL LETTER OMEGA WITH TONOS */ { 0x07ae, 0x0385 }, /* Greek_accentdieresis Î… GREEK DIALYTIKA TONOS */ { 0x07af, 0x2015 }, /* Greek_horizbar ― HORIZONTAL BAR */ { 0x07b1, 0x03ac }, /* Greek_alphaaccent ά GREEK SMALL LETTER ALPHA WITH TONOS */ { 0x07b2, 0x03ad }, /* Greek_epsilonaccent έ GREEK SMALL LETTER EPSILON WITH TONOS */ { 0x07b3, 0x03ae }, /* Greek_etaaccent ή GREEK SMALL LETTER ETA WITH TONOS */ { 0x07b4, 0x03af }, /* Greek_iotaaccent ί GREEK SMALL LETTER IOTA WITH TONOS */ { 0x07b5, 0x03ca }, /* Greek_iotadieresis ÏŠ GREEK SMALL LETTER IOTA WITH DIALYTIKA */ { 0x07b6, 0x0390 }, /* Greek_iotaaccentdieresis Î GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS */ { 0x07b7, 0x03cc }, /* Greek_omicronaccent ÏŒ GREEK SMALL LETTER OMICRON WITH TONOS */ { 0x07b8, 0x03cd }, /* Greek_upsilonaccent Ï GREEK SMALL LETTER UPSILON WITH TONOS */ { 0x07b9, 0x03cb }, /* Greek_upsilondieresis Ï‹ GREEK SMALL LETTER UPSILON WITH DIALYTIKA */ { 0x07ba, 0x03b0 }, /* Greek_upsilonaccentdieresis ΰ GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS */ { 0x07bb, 0x03ce }, /* Greek_omegaaccent ÏŽ GREEK SMALL LETTER OMEGA WITH TONOS */ { 0x07c1, 0x0391 }, /* Greek_ALPHA Α GREEK CAPITAL LETTER ALPHA */ { 0x07c2, 0x0392 }, /* Greek_BETA Î’ GREEK CAPITAL LETTER BETA */ { 0x07c3, 0x0393 }, /* Greek_GAMMA Γ GREEK CAPITAL LETTER GAMMA */ { 0x07c4, 0x0394 }, /* Greek_DELTA Δ GREEK CAPITAL LETTER DELTA */ { 0x07c5, 0x0395 }, /* Greek_EPSILON Ε GREEK CAPITAL LETTER EPSILON */ { 0x07c6, 0x0396 }, /* Greek_ZETA Ζ GREEK CAPITAL LETTER ZETA */ { 0x07c7, 0x0397 }, /* Greek_ETA Η GREEK CAPITAL LETTER ETA */ { 0x07c8, 0x0398 }, /* Greek_THETA Θ GREEK CAPITAL LETTER THETA */ { 0x07c9, 0x0399 }, /* Greek_IOTA Ι GREEK CAPITAL LETTER IOTA */ { 0x07ca, 0x039a }, /* Greek_KAPPA Κ GREEK CAPITAL LETTER KAPPA */ { 0x07cb, 0x039b }, /* Greek_LAMBDA Λ GREEK CAPITAL LETTER LAMDA */ { 0x07cc, 0x039c }, /* Greek_MU Μ GREEK CAPITAL LETTER MU */ { 0x07cd, 0x039d }, /* Greek_NU Î GREEK CAPITAL LETTER NU */ { 0x07ce, 0x039e }, /* Greek_XI Ξ GREEK CAPITAL LETTER XI */ { 0x07cf, 0x039f }, /* Greek_OMICRON Ο GREEK CAPITAL LETTER OMICRON */ { 0x07d0, 0x03a0 }, /* Greek_PI Π GREEK CAPITAL LETTER PI */ { 0x07d1, 0x03a1 }, /* Greek_RHO Ρ GREEK CAPITAL LETTER RHO */ { 0x07d2, 0x03a3 }, /* Greek_SIGMA Σ GREEK CAPITAL LETTER SIGMA */ { 0x07d4, 0x03a4 }, /* Greek_TAU Τ GREEK CAPITAL LETTER TAU */ { 0x07d5, 0x03a5 }, /* Greek_UPSILON Î¥ GREEK CAPITAL LETTER UPSILON */ { 0x07d6, 0x03a6 }, /* Greek_PHI Φ GREEK CAPITAL LETTER PHI */ { 0x07d7, 0x03a7 }, /* Greek_CHI Χ GREEK CAPITAL LETTER CHI */ { 0x07d8, 0x03a8 }, /* Greek_PSI Ψ GREEK CAPITAL LETTER PSI */ { 0x07d9, 0x03a9 }, /* Greek_OMEGA Ω GREEK CAPITAL LETTER OMEGA */ { 0x07e1, 0x03b1 }, /* Greek_alpha α GREEK SMALL LETTER ALPHA */ { 0x07e2, 0x03b2 }, /* Greek_beta β GREEK SMALL LETTER BETA */ { 0x07e3, 0x03b3 }, /* Greek_gamma γ GREEK SMALL LETTER GAMMA */ { 0x07e4, 0x03b4 }, /* Greek_delta δ GREEK SMALL LETTER DELTA */ { 0x07e5, 0x03b5 }, /* Greek_epsilon ε GREEK SMALL LETTER EPSILON */ { 0x07e6, 0x03b6 }, /* Greek_zeta ζ GREEK SMALL LETTER ZETA */ { 0x07e7, 0x03b7 }, /* Greek_eta η GREEK SMALL LETTER ETA */ { 0x07e8, 0x03b8 }, /* Greek_theta θ GREEK SMALL LETTER THETA */ { 0x07e9, 0x03b9 }, /* Greek_iota ι GREEK SMALL LETTER IOTA */ { 0x07ea, 0x03ba }, /* Greek_kappa κ GREEK SMALL LETTER KAPPA */ { 0x07eb, 0x03bb }, /* Greek_lambda λ GREEK SMALL LETTER LAMDA */ { 0x07ec, 0x03bc }, /* Greek_mu μ GREEK SMALL LETTER MU */ { 0x07ed, 0x03bd }, /* Greek_nu ν GREEK SMALL LETTER NU */ { 0x07ee, 0x03be }, /* Greek_xi ξ GREEK SMALL LETTER XI */ { 0x07ef, 0x03bf }, /* Greek_omicron ο GREEK SMALL LETTER OMICRON */ { 0x07f0, 0x03c0 }, /* Greek_pi Ï€ GREEK SMALL LETTER PI */ { 0x07f1, 0x03c1 }, /* Greek_rho Ï GREEK SMALL LETTER RHO */ { 0x07f2, 0x03c3 }, /* Greek_sigma σ GREEK SMALL LETTER SIGMA */ { 0x07f3, 0x03c2 }, /* Greek_finalsmallsigma Ï‚ GREEK SMALL LETTER FINAL SIGMA */ { 0x07f4, 0x03c4 }, /* Greek_tau Ï„ GREEK SMALL LETTER TAU */ { 0x07f5, 0x03c5 }, /* Greek_upsilon Ï… GREEK SMALL LETTER UPSILON */ { 0x07f6, 0x03c6 }, /* Greek_phi φ GREEK SMALL LETTER PHI */ { 0x07f7, 0x03c7 }, /* Greek_chi χ GREEK SMALL LETTER CHI */ { 0x07f8, 0x03c8 }, /* Greek_psi ψ GREEK SMALL LETTER PSI */ { 0x07f9, 0x03c9 }, /* Greek_omega ω GREEK SMALL LETTER OMEGA */ { 0x08a1, 0x23b7 }, /* leftradical ⎷ ??? */ { 0x08a2, 0x250c }, /* topleftradical ┌ BOX DRAWINGS LIGHT DOWN AND RIGHT */ { 0x08a3, 0x2500 }, /* horizconnector ─ BOX DRAWINGS LIGHT HORIZONTAL */ { 0x08a4, 0x2320 }, /* topintegral ⌠ TOP HALF INTEGRAL */ { 0x08a5, 0x2321 }, /* botintegral ⌡ BOTTOM HALF INTEGRAL */ { 0x08a6, 0x2502 }, /* vertconnector │ BOX DRAWINGS LIGHT VERTICAL */ { 0x08a7, 0x23a1 }, /* topleftsqbracket ⎡ ??? */ { 0x08a8, 0x23a3 }, /* botleftsqbracket ⎣ ??? */ { 0x08a9, 0x23a4 }, /* toprightsqbracket ⎤ ??? */ { 0x08aa, 0x23a6 }, /* botrightsqbracket ⎦ ??? */ { 0x08ab, 0x239b }, /* topleftparens ⎛ ??? */ { 0x08ac, 0x239d }, /* botleftparens ⎠??? */ { 0x08ad, 0x239e }, /* toprightparens ⎞ ??? */ { 0x08ae, 0x23a0 }, /* botrightparens ⎠ ??? */ { 0x08af, 0x23a8 }, /* leftmiddlecurlybrace ⎨ ??? */ { 0x08b0, 0x23ac }, /* rightmiddlecurlybrace ⎬ ??? */ /* 0x08b1 topleftsummation ? ??? */ /* 0x08b2 botleftsummation ? ??? */ /* 0x08b3 topvertsummationconnector ? ??? */ /* 0x08b4 botvertsummationconnector ? ??? */ /* 0x08b5 toprightsummation ? ??? */ /* 0x08b6 botrightsummation ? ??? */ /* 0x08b7 rightmiddlesummation ? ??? */ { 0x08bc, 0x2264 }, /* lessthanequal ≤ LESS-THAN OR EQUAL TO */ { 0x08bd, 0x2260 }, /* notequal ≠ NOT EQUAL TO */ { 0x08be, 0x2265 }, /* greaterthanequal ≥ GREATER-THAN OR EQUAL TO */ { 0x08bf, 0x222b }, /* integral ∫ INTEGRAL */ { 0x08c0, 0x2234 }, /* therefore ∴ THEREFORE */ { 0x08c1, 0x221d }, /* variation ∠PROPORTIONAL TO */ { 0x08c2, 0x221e }, /* infinity ∞ INFINITY */ { 0x08c5, 0x2207 }, /* nabla ∇ NABLA */ { 0x08c8, 0x223c }, /* approximate ∼ TILDE OPERATOR */ { 0x08c9, 0x2243 }, /* similarequal ≃ ASYMPTOTICALLY EQUAL TO */ { 0x08cd, 0x21d4 }, /* ifonlyif ⇔ LEFT RIGHT DOUBLE ARROW */ { 0x08ce, 0x21d2 }, /* implies ⇒ RIGHTWARDS DOUBLE ARROW */ { 0x08cf, 0x2261 }, /* identical ≡ IDENTICAL TO */ { 0x08d6, 0x221a }, /* radical √ SQUARE ROOT */ { 0x08da, 0x2282 }, /* includedin ⊂ SUBSET OF */ { 0x08db, 0x2283 }, /* includes ⊃ SUPERSET OF */ { 0x08dc, 0x2229 }, /* intersection ∩ INTERSECTION */ { 0x08dd, 0x222a }, /* union ∪ UNION */ { 0x08de, 0x2227 }, /* logicaland ∧ LOGICAL AND */ { 0x08df, 0x2228 }, /* logicalor ∨ LOGICAL OR */ { 0x08ef, 0x2202 }, /* partialderivative ∂ PARTIAL DIFFERENTIAL */ { 0x08f6, 0x0192 }, /* function Æ’ LATIN SMALL LETTER F WITH HOOK */ { 0x08fb, 0x2190 }, /* leftarrow ↠LEFTWARDS ARROW */ { 0x08fc, 0x2191 }, /* uparrow ↑ UPWARDS ARROW */ { 0x08fd, 0x2192 }, /* rightarrow → RIGHTWARDS ARROW */ { 0x08fe, 0x2193 }, /* downarrow ↓ DOWNWARDS ARROW */ /* 0x09df blank ? ??? */ { 0x09e0, 0x25c6 }, /* soliddiamond â—† BLACK DIAMOND */ { 0x09e1, 0x2592 }, /* checkerboard â–’ MEDIUM SHADE */ { 0x09e2, 0x2409 }, /* ht ≠SYMBOL FOR HORIZONTAL TABULATION */ { 0x09e3, 0x240c }, /* ff ⌠SYMBOL FOR FORM FEED */ { 0x09e4, 0x240d }, /* cr â SYMBOL FOR CARRIAGE RETURN */ { 0x09e5, 0x240a }, /* lf ⊠SYMBOL FOR LINE FEED */ { 0x09e8, 0x2424 }, /* nl ⤠SYMBOL FOR NEWLINE */ { 0x09e9, 0x240b }, /* vt â‹ SYMBOL FOR VERTICAL TABULATION */ { 0x09ea, 0x2518 }, /* lowrightcorner ┘ BOX DRAWINGS LIGHT UP AND LEFT */ { 0x09eb, 0x2510 }, /* uprightcorner â” BOX DRAWINGS LIGHT DOWN AND LEFT */ { 0x09ec, 0x250c }, /* upleftcorner ┌ BOX DRAWINGS LIGHT DOWN AND RIGHT */ { 0x09ed, 0x2514 }, /* lowleftcorner â”” BOX DRAWINGS LIGHT UP AND RIGHT */ { 0x09ee, 0x253c }, /* crossinglines ┼ BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL */ { 0x09ef, 0x23ba }, /* horizlinescan1 ⎺ HORIZONTAL SCAN LINE-1 (Unicode 3.2 draft) */ { 0x09f0, 0x23bb }, /* horizlinescan3 ⎻ HORIZONTAL SCAN LINE-3 (Unicode 3.2 draft) */ { 0x09f1, 0x2500 }, /* horizlinescan5 ─ BOX DRAWINGS LIGHT HORIZONTAL */ { 0x09f2, 0x23bc }, /* horizlinescan7 ⎼ HORIZONTAL SCAN LINE-7 (Unicode 3.2 draft) */ { 0x09f3, 0x23bd }, /* horizlinescan9 ⎽ HORIZONTAL SCAN LINE-9 (Unicode 3.2 draft) */ { 0x09f4, 0x251c }, /* leftt ├ BOX DRAWINGS LIGHT VERTICAL AND RIGHT */ { 0x09f5, 0x2524 }, /* rightt ┤ BOX DRAWINGS LIGHT VERTICAL AND LEFT */ { 0x09f6, 0x2534 }, /* bott â”´ BOX DRAWINGS LIGHT UP AND HORIZONTAL */ { 0x09f7, 0x252c }, /* topt ┬ BOX DRAWINGS LIGHT DOWN AND HORIZONTAL */ { 0x09f8, 0x2502 }, /* vertbar │ BOX DRAWINGS LIGHT VERTICAL */ { 0x0aa1, 0x2003 }, /* emspace   EM SPACE */ { 0x0aa2, 0x2002 }, /* enspace   EN SPACE */ { 0x0aa3, 0x2004 }, /* em3space   THREE-PER-EM SPACE */ { 0x0aa4, 0x2005 }, /* em4space   FOUR-PER-EM SPACE */ { 0x0aa5, 0x2007 }, /* digitspace   FIGURE SPACE */ { 0x0aa6, 0x2008 }, /* punctspace   PUNCTUATION SPACE */ { 0x0aa7, 0x2009 }, /* thinspace   THIN SPACE */ { 0x0aa8, 0x200a }, /* hairspace   HAIR SPACE */ { 0x0aa9, 0x2014 }, /* emdash — EM DASH */ { 0x0aaa, 0x2013 }, /* endash – EN DASH */ /* 0x0aac signifblank ? ??? */ { 0x0aae, 0x2026 }, /* ellipsis … HORIZONTAL ELLIPSIS */ { 0x0aaf, 0x2025 }, /* doubbaselinedot ‥ TWO DOT LEADER */ { 0x0ab0, 0x2153 }, /* onethird â…“ VULGAR FRACTION ONE THIRD */ { 0x0ab1, 0x2154 }, /* twothirds â…” VULGAR FRACTION TWO THIRDS */ { 0x0ab2, 0x2155 }, /* onefifth â…• VULGAR FRACTION ONE FIFTH */ { 0x0ab3, 0x2156 }, /* twofifths â…– VULGAR FRACTION TWO FIFTHS */ { 0x0ab4, 0x2157 }, /* threefifths â…— VULGAR FRACTION THREE FIFTHS */ { 0x0ab5, 0x2158 }, /* fourfifths â…˜ VULGAR FRACTION FOUR FIFTHS */ { 0x0ab6, 0x2159 }, /* onesixth â…™ VULGAR FRACTION ONE SIXTH */ { 0x0ab7, 0x215a }, /* fivesixths â…š VULGAR FRACTION FIVE SIXTHS */ { 0x0ab8, 0x2105 }, /* careof â„… CARE OF */ { 0x0abb, 0x2012 }, /* figdash ‒ FIGURE DASH */ { 0x0abc, 0x2329 }, /* leftanglebracket 〈 LEFT-POINTING ANGLE BRACKET */ /* 0x0abd decimalpoint ? ??? */ { 0x0abe, 0x232a }, /* rightanglebracket 〉 RIGHT-POINTING ANGLE BRACKET */ /* 0x0abf marker ? ??? */ { 0x0ac3, 0x215b }, /* oneeighth â…› VULGAR FRACTION ONE EIGHTH */ { 0x0ac4, 0x215c }, /* threeeighths â…œ VULGAR FRACTION THREE EIGHTHS */ { 0x0ac5, 0x215d }, /* fiveeighths â… VULGAR FRACTION FIVE EIGHTHS */ { 0x0ac6, 0x215e }, /* seveneighths â…ž VULGAR FRACTION SEVEN EIGHTHS */ { 0x0ac9, 0x2122 }, /* trademark â„¢ TRADE MARK SIGN */ { 0x0aca, 0x2613 }, /* signaturemark ☓ SALTIRE */ /* 0x0acb trademarkincircle ? ??? */ { 0x0acc, 0x25c1 }, /* leftopentriangle â— WHITE LEFT-POINTING TRIANGLE */ { 0x0acd, 0x25b7 }, /* rightopentriangle â–· WHITE RIGHT-POINTING TRIANGLE */ { 0x0ace, 0x25cb }, /* emopencircle â—‹ WHITE CIRCLE */ { 0x0acf, 0x25af }, /* emopenrectangle â–¯ WHITE VERTICAL RECTANGLE */ { 0x0ad0, 0x2018 }, /* leftsinglequotemark ‘ LEFT SINGLE QUOTATION MARK */ { 0x0ad1, 0x2019 }, /* rightsinglequotemark ’ RIGHT SINGLE QUOTATION MARK */ { 0x0ad2, 0x201c }, /* leftdoublequotemark “ LEFT DOUBLE QUOTATION MARK */ { 0x0ad3, 0x201d }, /* rightdoublequotemark †RIGHT DOUBLE QUOTATION MARK */ { 0x0ad4, 0x211e }, /* prescription ℞ PRESCRIPTION TAKE */ { 0x0ad6, 0x2032 }, /* minutes ′ PRIME */ { 0x0ad7, 0x2033 }, /* seconds ″ DOUBLE PRIME */ { 0x0ad9, 0x271d }, /* latincross ✠LATIN CROSS */ /* 0x0ada hexagram ? ??? */ { 0x0adb, 0x25ac }, /* filledrectbullet â–¬ BLACK RECTANGLE */ { 0x0adc, 0x25c0 }, /* filledlefttribullet â—€ BLACK LEFT-POINTING TRIANGLE */ { 0x0add, 0x25b6 }, /* filledrighttribullet â–¶ BLACK RIGHT-POINTING TRIANGLE */ { 0x0ade, 0x25cf }, /* emfilledcircle â— BLACK CIRCLE */ { 0x0adf, 0x25ae }, /* emfilledrect â–® BLACK VERTICAL RECTANGLE */ { 0x0ae0, 0x25e6 }, /* enopencircbullet â—¦ WHITE BULLET */ { 0x0ae1, 0x25ab }, /* enopensquarebullet â–« WHITE SMALL SQUARE */ { 0x0ae2, 0x25ad }, /* openrectbullet â–­ WHITE RECTANGLE */ { 0x0ae3, 0x25b3 }, /* opentribulletup â–³ WHITE UP-POINTING TRIANGLE */ { 0x0ae4, 0x25bd }, /* opentribulletdown â–½ WHITE DOWN-POINTING TRIANGLE */ { 0x0ae5, 0x2606 }, /* openstar ☆ WHITE STAR */ { 0x0ae6, 0x2022 }, /* enfilledcircbullet • BULLET */ { 0x0ae7, 0x25aa }, /* enfilledsqbullet â–ª BLACK SMALL SQUARE */ { 0x0ae8, 0x25b2 }, /* filledtribulletup â–² BLACK UP-POINTING TRIANGLE */ { 0x0ae9, 0x25bc }, /* filledtribulletdown â–¼ BLACK DOWN-POINTING TRIANGLE */ { 0x0aea, 0x261c }, /* leftpointer ☜ WHITE LEFT POINTING INDEX */ { 0x0aeb, 0x261e }, /* rightpointer ☞ WHITE RIGHT POINTING INDEX */ { 0x0aec, 0x2663 }, /* club ♣ BLACK CLUB SUIT */ { 0x0aed, 0x2666 }, /* diamond ♦ BLACK DIAMOND SUIT */ { 0x0aee, 0x2665 }, /* heart ♥ BLACK HEART SUIT */ { 0x0af0, 0x2720 }, /* maltesecross ✠ MALTESE CROSS */ { 0x0af1, 0x2020 }, /* dagger † DAGGER */ { 0x0af2, 0x2021 }, /* doubledagger ‡ DOUBLE DAGGER */ { 0x0af3, 0x2713 }, /* checkmark ✓ CHECK MARK */ { 0x0af4, 0x2717 }, /* ballotcross ✗ BALLOT X */ { 0x0af5, 0x266f }, /* musicalsharp ♯ MUSIC SHARP SIGN */ { 0x0af6, 0x266d }, /* musicalflat â™­ MUSIC FLAT SIGN */ { 0x0af7, 0x2642 }, /* malesymbol ♂ MALE SIGN */ { 0x0af8, 0x2640 }, /* femalesymbol ♀ FEMALE SIGN */ { 0x0af9, 0x260e }, /* telephone ☎ BLACK TELEPHONE */ { 0x0afa, 0x2315 }, /* telephonerecorder ⌕ TELEPHONE RECORDER */ { 0x0afb, 0x2117 }, /* phonographcopyright â„— SOUND RECORDING COPYRIGHT */ { 0x0afc, 0x2038 }, /* caret ‸ CARET */ { 0x0afd, 0x201a }, /* singlelowquotemark ‚ SINGLE LOW-9 QUOTATION MARK */ { 0x0afe, 0x201e }, /* doublelowquotemark „ DOUBLE LOW-9 QUOTATION MARK */ /* 0x0aff cursor ? ??? */ { 0x0ba3, 0x003c }, /* leftcaret < LESS-THAN SIGN */ { 0x0ba6, 0x003e }, /* rightcaret > GREATER-THAN SIGN */ { 0x0ba8, 0x2228 }, /* downcaret ∨ LOGICAL OR */ { 0x0ba9, 0x2227 }, /* upcaret ∧ LOGICAL AND */ { 0x0bc0, 0x00af }, /* overbar ¯ MACRON */ { 0x0bc2, 0x22a5 }, /* downtack ⊥ UP TACK */ { 0x0bc3, 0x2229 }, /* upshoe ∩ INTERSECTION */ { 0x0bc4, 0x230a }, /* downstile ⌊ LEFT FLOOR */ { 0x0bc6, 0x005f }, /* underbar _ LOW LINE */ { 0x0bca, 0x2218 }, /* jot ∘ RING OPERATOR */ { 0x0bcc, 0x2395 }, /* quad ⎕ APL FUNCTIONAL SYMBOL QUAD */ { 0x0bce, 0x22a4 }, /* uptack ⊤ DOWN TACK */ { 0x0bcf, 0x25cb }, /* circle â—‹ WHITE CIRCLE */ { 0x0bd3, 0x2308 }, /* upstile ⌈ LEFT CEILING */ { 0x0bd6, 0x222a }, /* downshoe ∪ UNION */ { 0x0bd8, 0x2283 }, /* rightshoe ⊃ SUPERSET OF */ { 0x0bda, 0x2282 }, /* leftshoe ⊂ SUBSET OF */ { 0x0bdc, 0x22a2 }, /* lefttack ⊢ RIGHT TACK */ { 0x0bfc, 0x22a3 }, /* righttack ⊣ LEFT TACK */ { 0x0cdf, 0x2017 }, /* hebrew_doublelowline ‗ DOUBLE LOW LINE */ { 0x0ce0, 0x05d0 }, /* hebrew_aleph × HEBREW LETTER ALEF */ { 0x0ce1, 0x05d1 }, /* hebrew_bet ב HEBREW LETTER BET */ { 0x0ce2, 0x05d2 }, /* hebrew_gimel ×’ HEBREW LETTER GIMEL */ { 0x0ce3, 0x05d3 }, /* hebrew_dalet ד HEBREW LETTER DALET */ { 0x0ce4, 0x05d4 }, /* hebrew_he ×” HEBREW LETTER HE */ { 0x0ce5, 0x05d5 }, /* hebrew_waw ו HEBREW LETTER VAV */ { 0x0ce6, 0x05d6 }, /* hebrew_zain ×– HEBREW LETTER ZAYIN */ { 0x0ce7, 0x05d7 }, /* hebrew_chet ×— HEBREW LETTER HET */ { 0x0ce8, 0x05d8 }, /* hebrew_tet ט HEBREW LETTER TET */ { 0x0ce9, 0x05d9 }, /* hebrew_yod ×™ HEBREW LETTER YOD */ { 0x0cea, 0x05da }, /* hebrew_finalkaph ך HEBREW LETTER FINAL KAF */ { 0x0ceb, 0x05db }, /* hebrew_kaph ×› HEBREW LETTER KAF */ { 0x0cec, 0x05dc }, /* hebrew_lamed ל HEBREW LETTER LAMED */ { 0x0ced, 0x05dd }, /* hebrew_finalmem × HEBREW LETTER FINAL MEM */ { 0x0cee, 0x05de }, /* hebrew_mem מ HEBREW LETTER MEM */ { 0x0cef, 0x05df }, /* hebrew_finalnun ן HEBREW LETTER FINAL NUN */ { 0x0cf0, 0x05e0 }, /* hebrew_nun ×  HEBREW LETTER NUN */ { 0x0cf1, 0x05e1 }, /* hebrew_samech ס HEBREW LETTER SAMEKH */ { 0x0cf2, 0x05e2 }, /* hebrew_ayin ×¢ HEBREW LETTER AYIN */ { 0x0cf3, 0x05e3 }, /* hebrew_finalpe ×£ HEBREW LETTER FINAL PE */ { 0x0cf4, 0x05e4 }, /* hebrew_pe פ HEBREW LETTER PE */ { 0x0cf5, 0x05e5 }, /* hebrew_finalzade ×¥ HEBREW LETTER FINAL TSADI */ { 0x0cf6, 0x05e6 }, /* hebrew_zade צ HEBREW LETTER TSADI */ { 0x0cf7, 0x05e7 }, /* hebrew_qoph ×§ HEBREW LETTER QOF */ { 0x0cf8, 0x05e8 }, /* hebrew_resh ר HEBREW LETTER RESH */ { 0x0cf9, 0x05e9 }, /* hebrew_shin ש HEBREW LETTER SHIN */ { 0x0cfa, 0x05ea }, /* hebrew_taw ת HEBREW LETTER TAV */ { 0x0da1, 0x0e01 }, /* Thai_kokai ภTHAI CHARACTER KO KAI */ { 0x0da2, 0x0e02 }, /* Thai_khokhai ข THAI CHARACTER KHO KHAI */ { 0x0da3, 0x0e03 }, /* Thai_khokhuat ฃ THAI CHARACTER KHO KHUAT */ { 0x0da4, 0x0e04 }, /* Thai_khokhwai ค THAI CHARACTER KHO KHWAI */ { 0x0da5, 0x0e05 }, /* Thai_khokhon ฅ THAI CHARACTER KHO KHON */ { 0x0da6, 0x0e06 }, /* Thai_khorakhang ฆ THAI CHARACTER KHO RAKHANG */ { 0x0da7, 0x0e07 }, /* Thai_ngongu ง THAI CHARACTER NGO NGU */ { 0x0da8, 0x0e08 }, /* Thai_chochan จ THAI CHARACTER CHO CHAN */ { 0x0da9, 0x0e09 }, /* Thai_choching ฉ THAI CHARACTER CHO CHING */ { 0x0daa, 0x0e0a }, /* Thai_chochang ช THAI CHARACTER CHO CHANG */ { 0x0dab, 0x0e0b }, /* Thai_soso ซ THAI CHARACTER SO SO */ { 0x0dac, 0x0e0c }, /* Thai_chochoe ฌ THAI CHARACTER CHO CHOE */ { 0x0dad, 0x0e0d }, /* Thai_yoying ภTHAI CHARACTER YO YING */ { 0x0dae, 0x0e0e }, /* Thai_dochada ฎ THAI CHARACTER DO CHADA */ { 0x0daf, 0x0e0f }, /* Thai_topatak ภTHAI CHARACTER TO PATAK */ { 0x0db0, 0x0e10 }, /* Thai_thothan ภTHAI CHARACTER THO THAN */ { 0x0db1, 0x0e11 }, /* Thai_thonangmontho ฑ THAI CHARACTER THO NANGMONTHO */ { 0x0db2, 0x0e12 }, /* Thai_thophuthao ฒ THAI CHARACTER THO PHUTHAO */ { 0x0db3, 0x0e13 }, /* Thai_nonen ณ THAI CHARACTER NO NEN */ { 0x0db4, 0x0e14 }, /* Thai_dodek ด THAI CHARACTER DO DEK */ { 0x0db5, 0x0e15 }, /* Thai_totao ต THAI CHARACTER TO TAO */ { 0x0db6, 0x0e16 }, /* Thai_thothung ถ THAI CHARACTER THO THUNG */ { 0x0db7, 0x0e17 }, /* Thai_thothahan ท THAI CHARACTER THO THAHAN */ { 0x0db8, 0x0e18 }, /* Thai_thothong ธ THAI CHARACTER THO THONG */ { 0x0db9, 0x0e19 }, /* Thai_nonu น THAI CHARACTER NO NU */ { 0x0dba, 0x0e1a }, /* Thai_bobaimai บ THAI CHARACTER BO BAIMAI */ { 0x0dbb, 0x0e1b }, /* Thai_popla ป THAI CHARACTER PO PLA */ { 0x0dbc, 0x0e1c }, /* Thai_phophung ผ THAI CHARACTER PHO PHUNG */ { 0x0dbd, 0x0e1d }, /* Thai_fofa ภTHAI CHARACTER FO FA */ { 0x0dbe, 0x0e1e }, /* Thai_phophan พ THAI CHARACTER PHO PHAN */ { 0x0dbf, 0x0e1f }, /* Thai_fofan ฟ THAI CHARACTER FO FAN */ { 0x0dc0, 0x0e20 }, /* Thai_phosamphao ภ THAI CHARACTER PHO SAMPHAO */ { 0x0dc1, 0x0e21 }, /* Thai_moma ม THAI CHARACTER MO MA */ { 0x0dc2, 0x0e22 }, /* Thai_yoyak ย THAI CHARACTER YO YAK */ { 0x0dc3, 0x0e23 }, /* Thai_rorua ร THAI CHARACTER RO RUA */ { 0x0dc4, 0x0e24 }, /* Thai_ru ฤ THAI CHARACTER RU */ { 0x0dc5, 0x0e25 }, /* Thai_loling ล THAI CHARACTER LO LING */ { 0x0dc6, 0x0e26 }, /* Thai_lu ฦ THAI CHARACTER LU */ { 0x0dc7, 0x0e27 }, /* Thai_wowaen ว THAI CHARACTER WO WAEN */ { 0x0dc8, 0x0e28 }, /* Thai_sosala ศ THAI CHARACTER SO SALA */ { 0x0dc9, 0x0e29 }, /* Thai_sorusi ษ THAI CHARACTER SO RUSI */ { 0x0dca, 0x0e2a }, /* Thai_sosua ส THAI CHARACTER SO SUA */ { 0x0dcb, 0x0e2b }, /* Thai_hohip ห THAI CHARACTER HO HIP */ { 0x0dcc, 0x0e2c }, /* Thai_lochula ฬ THAI CHARACTER LO CHULA */ { 0x0dcd, 0x0e2d }, /* Thai_oang อ THAI CHARACTER O ANG */ { 0x0dce, 0x0e2e }, /* Thai_honokhuk ฮ THAI CHARACTER HO NOKHUK */ { 0x0dcf, 0x0e2f }, /* Thai_paiyannoi ฯ THAI CHARACTER PAIYANNOI */ { 0x0dd0, 0x0e30 }, /* Thai_saraa ะ THAI CHARACTER SARA A */ { 0x0dd1, 0x0e31 }, /* Thai_maihanakat ั THAI CHARACTER MAI HAN-AKAT */ { 0x0dd2, 0x0e32 }, /* Thai_saraaa า THAI CHARACTER SARA AA */ { 0x0dd3, 0x0e33 }, /* Thai_saraam ำ THAI CHARACTER SARA AM */ { 0x0dd4, 0x0e34 }, /* Thai_sarai ิ THAI CHARACTER SARA I */ { 0x0dd5, 0x0e35 }, /* Thai_saraii ี THAI CHARACTER SARA II */ { 0x0dd6, 0x0e36 }, /* Thai_saraue ึ THAI CHARACTER SARA UE */ { 0x0dd7, 0x0e37 }, /* Thai_sarauee ื THAI CHARACTER SARA UEE */ { 0x0dd8, 0x0e38 }, /* Thai_sarau ุ THAI CHARACTER SARA U */ { 0x0dd9, 0x0e39 }, /* Thai_sarauu ู THAI CHARACTER SARA UU */ { 0x0dda, 0x0e3a }, /* Thai_phinthu ฺ THAI CHARACTER PHINTHU */ /* 0x0dde Thai_maihanakat_maitho ? ??? */ { 0x0ddf, 0x0e3f }, /* Thai_baht ฿ THAI CURRENCY SYMBOL BAHT */ { 0x0de0, 0x0e40 }, /* Thai_sarae เ THAI CHARACTER SARA E */ { 0x0de1, 0x0e41 }, /* Thai_saraae ๠THAI CHARACTER SARA AE */ { 0x0de2, 0x0e42 }, /* Thai_sarao โ THAI CHARACTER SARA O */ { 0x0de3, 0x0e43 }, /* Thai_saraaimaimuan ใ THAI CHARACTER SARA AI MAIMUAN */ { 0x0de4, 0x0e44 }, /* Thai_saraaimaimalai ไ THAI CHARACTER SARA AI MAIMALAI */ { 0x0de5, 0x0e45 }, /* Thai_lakkhangyao ๅ THAI CHARACTER LAKKHANGYAO */ { 0x0de6, 0x0e46 }, /* Thai_maiyamok ๆ THAI CHARACTER MAIYAMOK */ { 0x0de7, 0x0e47 }, /* Thai_maitaikhu ็ THAI CHARACTER MAITAIKHU */ { 0x0de8, 0x0e48 }, /* Thai_maiek ่ THAI CHARACTER MAI EK */ { 0x0de9, 0x0e49 }, /* Thai_maitho ้ THAI CHARACTER MAI THO */ { 0x0dea, 0x0e4a }, /* Thai_maitri ๊ THAI CHARACTER MAI TRI */ { 0x0deb, 0x0e4b }, /* Thai_maichattawa ๋ THAI CHARACTER MAI CHATTAWA */ { 0x0dec, 0x0e4c }, /* Thai_thanthakhat ์ THAI CHARACTER THANTHAKHAT */ { 0x0ded, 0x0e4d }, /* Thai_nikhahit ๠THAI CHARACTER NIKHAHIT */ { 0x0df0, 0x0e50 }, /* Thai_leksun ๠THAI DIGIT ZERO */ { 0x0df1, 0x0e51 }, /* Thai_leknung ๑ THAI DIGIT ONE */ { 0x0df2, 0x0e52 }, /* Thai_leksong ๒ THAI DIGIT TWO */ { 0x0df3, 0x0e53 }, /* Thai_leksam ๓ THAI DIGIT THREE */ { 0x0df4, 0x0e54 }, /* Thai_leksi ๔ THAI DIGIT FOUR */ { 0x0df5, 0x0e55 }, /* Thai_lekha ๕ THAI DIGIT FIVE */ { 0x0df6, 0x0e56 }, /* Thai_lekhok ๖ THAI DIGIT SIX */ { 0x0df7, 0x0e57 }, /* Thai_lekchet ๗ THAI DIGIT SEVEN */ { 0x0df8, 0x0e58 }, /* Thai_lekpaet ๘ THAI DIGIT EIGHT */ { 0x0df9, 0x0e59 }, /* Thai_lekkao ๙ THAI DIGIT NINE */ { 0x0ea1, 0x3131 }, /* Hangul_Kiyeog ㄱ HANGUL LETTER KIYEOK */ { 0x0ea2, 0x3132 }, /* Hangul_SsangKiyeog ㄲ HANGUL LETTER SSANGKIYEOK */ { 0x0ea3, 0x3133 }, /* Hangul_KiyeogSios ㄳ HANGUL LETTER KIYEOK-SIOS */ { 0x0ea4, 0x3134 }, /* Hangul_Nieun ã„´ HANGUL LETTER NIEUN */ { 0x0ea5, 0x3135 }, /* Hangul_NieunJieuj ㄵ HANGUL LETTER NIEUN-CIEUC */ { 0x0ea6, 0x3136 }, /* Hangul_NieunHieuh ã„¶ HANGUL LETTER NIEUN-HIEUH */ { 0x0ea7, 0x3137 }, /* Hangul_Dikeud ã„· HANGUL LETTER TIKEUT */ { 0x0ea8, 0x3138 }, /* Hangul_SsangDikeud ㄸ HANGUL LETTER SSANGTIKEUT */ { 0x0ea9, 0x3139 }, /* Hangul_Rieul ㄹ HANGUL LETTER RIEUL */ { 0x0eaa, 0x313a }, /* Hangul_RieulKiyeog ㄺ HANGUL LETTER RIEUL-KIYEOK */ { 0x0eab, 0x313b }, /* Hangul_RieulMieum ã„» HANGUL LETTER RIEUL-MIEUM */ { 0x0eac, 0x313c }, /* Hangul_RieulPieub ㄼ HANGUL LETTER RIEUL-PIEUP */ { 0x0ead, 0x313d }, /* Hangul_RieulSios ㄽ HANGUL LETTER RIEUL-SIOS */ { 0x0eae, 0x313e }, /* Hangul_RieulTieut ㄾ HANGUL LETTER RIEUL-THIEUTH */ { 0x0eaf, 0x313f }, /* Hangul_RieulPhieuf ã„¿ HANGUL LETTER RIEUL-PHIEUPH */ { 0x0eb0, 0x3140 }, /* Hangul_RieulHieuh ã…€ HANGUL LETTER RIEUL-HIEUH */ { 0x0eb1, 0x3141 }, /* Hangul_Mieum ã… HANGUL LETTER MIEUM */ { 0x0eb2, 0x3142 }, /* Hangul_Pieub ã…‚ HANGUL LETTER PIEUP */ { 0x0eb3, 0x3143 }, /* Hangul_SsangPieub ã…ƒ HANGUL LETTER SSANGPIEUP */ { 0x0eb4, 0x3144 }, /* Hangul_PieubSios ã…„ HANGUL LETTER PIEUP-SIOS */ { 0x0eb5, 0x3145 }, /* Hangul_Sios ã…… HANGUL LETTER SIOS */ { 0x0eb6, 0x3146 }, /* Hangul_SsangSios ã…† HANGUL LETTER SSANGSIOS */ { 0x0eb7, 0x3147 }, /* Hangul_Ieung ã…‡ HANGUL LETTER IEUNG */ { 0x0eb8, 0x3148 }, /* Hangul_Jieuj ã…ˆ HANGUL LETTER CIEUC */ { 0x0eb9, 0x3149 }, /* Hangul_SsangJieuj ã…‰ HANGUL LETTER SSANGCIEUC */ { 0x0eba, 0x314a }, /* Hangul_Cieuc ã…Š HANGUL LETTER CHIEUCH */ { 0x0ebb, 0x314b }, /* Hangul_Khieuq ã…‹ HANGUL LETTER KHIEUKH */ { 0x0ebc, 0x314c }, /* Hangul_Tieut ã…Œ HANGUL LETTER THIEUTH */ { 0x0ebd, 0x314d }, /* Hangul_Phieuf ã… HANGUL LETTER PHIEUPH */ { 0x0ebe, 0x314e }, /* Hangul_Hieuh ã…Ž HANGUL LETTER HIEUH */ { 0x0ebf, 0x314f }, /* Hangul_A ã… HANGUL LETTER A */ { 0x0ec0, 0x3150 }, /* Hangul_AE ã… HANGUL LETTER AE */ { 0x0ec1, 0x3151 }, /* Hangul_YA ã…‘ HANGUL LETTER YA */ { 0x0ec2, 0x3152 }, /* Hangul_YAE ã…’ HANGUL LETTER YAE */ { 0x0ec3, 0x3153 }, /* Hangul_EO ã…“ HANGUL LETTER EO */ { 0x0ec4, 0x3154 }, /* Hangul_E ã…” HANGUL LETTER E */ { 0x0ec5, 0x3155 }, /* Hangul_YEO ã…• HANGUL LETTER YEO */ { 0x0ec6, 0x3156 }, /* Hangul_YE ã…– HANGUL LETTER YE */ { 0x0ec7, 0x3157 }, /* Hangul_O ã…— HANGUL LETTER O */ { 0x0ec8, 0x3158 }, /* Hangul_WA ã…˜ HANGUL LETTER WA */ { 0x0ec9, 0x3159 }, /* Hangul_WAE ã…™ HANGUL LETTER WAE */ { 0x0eca, 0x315a }, /* Hangul_OE ã…š HANGUL LETTER OE */ { 0x0ecb, 0x315b }, /* Hangul_YO ã…› HANGUL LETTER YO */ { 0x0ecc, 0x315c }, /* Hangul_U ã…œ HANGUL LETTER U */ { 0x0ecd, 0x315d }, /* Hangul_WEO ã… HANGUL LETTER WEO */ { 0x0ece, 0x315e }, /* Hangul_WE ã…ž HANGUL LETTER WE */ { 0x0ecf, 0x315f }, /* Hangul_WI ã…Ÿ HANGUL LETTER WI */ { 0x0ed0, 0x3160 }, /* Hangul_YU ã…  HANGUL LETTER YU */ { 0x0ed1, 0x3161 }, /* Hangul_EU ã…¡ HANGUL LETTER EU */ { 0x0ed2, 0x3162 }, /* Hangul_YI ã…¢ HANGUL LETTER YI */ { 0x0ed3, 0x3163 }, /* Hangul_I ã…£ HANGUL LETTER I */ { 0x0ed4, 0x11a8 }, /* Hangul_J_Kiyeog ᆨ HANGUL JONGSEONG KIYEOK */ { 0x0ed5, 0x11a9 }, /* Hangul_J_SsangKiyeog ᆩ HANGUL JONGSEONG SSANGKIYEOK */ { 0x0ed6, 0x11aa }, /* Hangul_J_KiyeogSios ᆪ HANGUL JONGSEONG KIYEOK-SIOS */ { 0x0ed7, 0x11ab }, /* Hangul_J_Nieun ᆫ HANGUL JONGSEONG NIEUN */ { 0x0ed8, 0x11ac }, /* Hangul_J_NieunJieuj ᆬ HANGUL JONGSEONG NIEUN-CIEUC */ { 0x0ed9, 0x11ad }, /* Hangul_J_NieunHieuh ᆭ HANGUL JONGSEONG NIEUN-HIEUH */ { 0x0eda, 0x11ae }, /* Hangul_J_Dikeud ᆮ HANGUL JONGSEONG TIKEUT */ { 0x0edb, 0x11af }, /* Hangul_J_Rieul ᆯ HANGUL JONGSEONG RIEUL */ { 0x0edc, 0x11b0 }, /* Hangul_J_RieulKiyeog ᆰ HANGUL JONGSEONG RIEUL-KIYEOK */ { 0x0edd, 0x11b1 }, /* Hangul_J_RieulMieum ᆱ HANGUL JONGSEONG RIEUL-MIEUM */ { 0x0ede, 0x11b2 }, /* Hangul_J_RieulPieub ᆲ HANGUL JONGSEONG RIEUL-PIEUP */ { 0x0edf, 0x11b3 }, /* Hangul_J_RieulSios ᆳ HANGUL JONGSEONG RIEUL-SIOS */ { 0x0ee0, 0x11b4 }, /* Hangul_J_RieulTieut ᆴ HANGUL JONGSEONG RIEUL-THIEUTH */ { 0x0ee1, 0x11b5 }, /* Hangul_J_RieulPhieuf ᆵ HANGUL JONGSEONG RIEUL-PHIEUPH */ { 0x0ee2, 0x11b6 }, /* Hangul_J_RieulHieuh ᆶ HANGUL JONGSEONG RIEUL-HIEUH */ { 0x0ee3, 0x11b7 }, /* Hangul_J_Mieum ᆷ HANGUL JONGSEONG MIEUM */ { 0x0ee4, 0x11b8 }, /* Hangul_J_Pieub ᆸ HANGUL JONGSEONG PIEUP */ { 0x0ee5, 0x11b9 }, /* Hangul_J_PieubSios ᆹ HANGUL JONGSEONG PIEUP-SIOS */ { 0x0ee6, 0x11ba }, /* Hangul_J_Sios ᆺ HANGUL JONGSEONG SIOS */ { 0x0ee7, 0x11bb }, /* Hangul_J_SsangSios ᆻ HANGUL JONGSEONG SSANGSIOS */ { 0x0ee8, 0x11bc }, /* Hangul_J_Ieung ᆼ HANGUL JONGSEONG IEUNG */ { 0x0ee9, 0x11bd }, /* Hangul_J_Jieuj ᆽ HANGUL JONGSEONG CIEUC */ { 0x0eea, 0x11be }, /* Hangul_J_Cieuc ᆾ HANGUL JONGSEONG CHIEUCH */ { 0x0eeb, 0x11bf }, /* Hangul_J_Khieuq ᆿ HANGUL JONGSEONG KHIEUKH */ { 0x0eec, 0x11c0 }, /* Hangul_J_Tieut ᇀ HANGUL JONGSEONG THIEUTH */ { 0x0eed, 0x11c1 }, /* Hangul_J_Phieuf ᇠHANGUL JONGSEONG PHIEUPH */ { 0x0eee, 0x11c2 }, /* Hangul_J_Hieuh ᇂ HANGUL JONGSEONG HIEUH */ { 0x0eef, 0x316d }, /* Hangul_RieulYeorinHieuh ã…­ HANGUL LETTER RIEUL-YEORINHIEUH */ { 0x0ef0, 0x3171 }, /* Hangul_SunkyeongeumMieum ã…± HANGUL LETTER KAPYEOUNMIEUM */ { 0x0ef1, 0x3178 }, /* Hangul_SunkyeongeumPieub ã…¸ HANGUL LETTER KAPYEOUNPIEUP */ { 0x0ef2, 0x317f }, /* Hangul_PanSios ã…¿ HANGUL LETTER PANSIOS */ { 0x0ef3, 0x3181 }, /* Hangul_KkogjiDalrinIeung ㆠHANGUL LETTER YESIEUNG */ { 0x0ef4, 0x3184 }, /* Hangul_SunkyeongeumPhieuf ㆄ HANGUL LETTER KAPYEOUNPHIEUPH */ { 0x0ef5, 0x3186 }, /* Hangul_YeorinHieuh ㆆ HANGUL LETTER YEORINHIEUH */ { 0x0ef6, 0x318d }, /* Hangul_AraeA ㆠHANGUL LETTER ARAEA */ { 0x0ef7, 0x318e }, /* Hangul_AraeAE ㆎ HANGUL LETTER ARAEAE */ { 0x0ef8, 0x11eb }, /* Hangul_J_PanSios ᇫ HANGUL JONGSEONG PANSIOS */ { 0x0ef9, 0x11f0 }, /* Hangul_J_KkogjiDalrinIeung ᇰ HANGUL JONGSEONG YESIEUNG */ { 0x0efa, 0x11f9 }, /* Hangul_J_YeorinHieuh ᇹ HANGUL JONGSEONG YEORINHIEUH */ { 0x0eff, 0x20a9 }, /* Korean_Won â‚© WON SIGN */ { 0x13a4, 0x20ac }, /* Euro € EURO SIGN */ { 0x13bc, 0x0152 }, /* OE Å’ LATIN CAPITAL LIGATURE OE */ { 0x13bd, 0x0153 }, /* oe Å“ LATIN SMALL LIGATURE OE */ { 0x13be, 0x0178 }, /* Ydiaeresis Ÿ LATIN CAPITAL LETTER Y WITH DIAERESIS */ { 0x20ac, 0x20ac }, /* EuroSign € EURO SIGN */ }; long keysym2ucs(KeySym keysym) { int min = 0; int max = sizeof(keysymtab) / sizeof(struct codepair) - 1; int mid; /* first check for Latin-1 characters (1:1 mapping) */ if ((keysym >= 0x0020 && keysym <= 0x007e) || (keysym >= 0x00a0 && keysym <= 0x00ff)) return keysym; /* also check for directly encoded 24-bit UCS characters */ if ((keysym & 0xff000000) == 0x01000000) return keysym & 0x00ffffff; /* binary search in table */ while (max >= min) { mid = (min + max) / 2; if (keysymtab[mid].keysym < keysym) { min = mid + 1; } else if (keysymtab[mid].keysym > keysym) { max = mid - 1; } else { /* found it */ return keysymtab[mid].ucs; } } /* no matching Unicode value found */ return -1; } suite3270-4.1/x3270/keysym2ucs.h000066400000000000000000000002371413735575200161130ustar00rootroot00000000000000/* * This module converts keysym values into the corresponding ISO 10646-1 * (UCS, Unicode) values. */ #include long keysym2ucs(KeySym keysym); suite3270-4.1/x3270/ky.bm000066400000000000000000000010031413735575200145570ustar00rootroot00000000000000#define ky_width 39 #define ky_height 14 static unsigned char ky_bits[] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xf3, 0x3f, 0xaa, 0xaa, 0xaa, 0x92, 0x24, 0xfe, 0xff, 0xff, 0xf3, 0x3f, 0xaa, 0xaa, 0xaa, 0x02, 0x00, 0xfe, 0xff, 0xff, 0x03, 0x00, 0x00, 0x00, 0x00, 0x80, 0x07, 0x00, 0x00, 0x00, 0x80, 0x04, 0xfe, 0xff, 0x7f, 0xf0, 0x3f, 0x92, 0x24, 0x49, 0x90, 0x24, 0xfe, 0xff, 0xff, 0xf3, 0x3f, 0x92, 0x24, 0x49, 0x82, 0x04, 0xfe, 0xff, 0xff, 0x83, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00}; suite3270-4.1/x3270/ky15.bm000066400000000000000000000021551413735575200147360ustar00rootroot00000000000000#define ky15_width 59 #define ky15_height 21 static unsigned char ky15_bits[] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xff, 0xff, 0xff, 0x7f, 0xfc, 0xff, 0x01, 0x24, 0x49, 0x92, 0x24, 0x49, 0x84, 0x08, 0x01, 0x24, 0x49, 0x92, 0x24, 0x49, 0x84, 0x08, 0x01, 0xfc, 0xff, 0xff, 0xff, 0x7f, 0xfc, 0xff, 0x01, 0x24, 0x49, 0x92, 0x24, 0x49, 0x00, 0x00, 0x00, 0x24, 0x49, 0x92, 0x24, 0x49, 0x00, 0x00, 0x00, 0xfc, 0xff, 0xff, 0xff, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x08, 0x00, 0xfc, 0xff, 0xff, 0xff, 0x07, 0xf8, 0xff, 0x00, 0x44, 0x44, 0x44, 0x44, 0x04, 0x88, 0x88, 0x00, 0x44, 0x44, 0x44, 0x44, 0x04, 0x88, 0x88, 0x00, 0xfc, 0xff, 0xff, 0xff, 0x7f, 0xf8, 0xff, 0x00, 0x44, 0x44, 0x44, 0x44, 0x44, 0x80, 0x08, 0x00, 0x44, 0x44, 0x44, 0x44, 0x44, 0x80, 0x08, 0x00, 0xfc, 0xff, 0xff, 0xff, 0x7f, 0x80, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; suite3270-4.1/x3270/ky20.bm000066400000000000000000000034531413735575200147340ustar00rootroot00000000000000#define ky20_width 78 #define ky20_height 28 static unsigned char ky20_bits[] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f, 0xff, 0xff, 0x0f, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f, 0xff, 0xff, 0x0f, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0x0c, 0xc3, 0x30, 0x0c, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0x0c, 0xc3, 0x30, 0x0c, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f, 0xff, 0xff, 0x0f, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f, 0xff, 0xff, 0x0f, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0x0c, 0x00, 0x00, 0x00, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0x0c, 0x00, 0x00, 0x00, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f, 0x00, 0x00, 0x00, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x30, 0x00, 0xfc, 0xff, 0xff, 0xff, 0xff, 0x3f, 0x00, 0xff, 0xff, 0x0f, 0xfc, 0xff, 0xff, 0xff, 0xff, 0x3f, 0x00, 0xff, 0xff, 0x0f, 0x0c, 0xc3, 0x30, 0x0c, 0xc3, 0x30, 0x00, 0xc3, 0x30, 0x0c, 0x0c, 0xc3, 0x30, 0x0c, 0xc3, 0x30, 0x00, 0xc3, 0x30, 0x0c, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f, 0xff, 0xff, 0x0f, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f, 0xff, 0xff, 0x0f, 0x0c, 0xc3, 0x30, 0x0c, 0xc3, 0x30, 0x0c, 0xc0, 0x30, 0x00, 0x0c, 0xc3, 0x30, 0x0c, 0xc3, 0x30, 0x0c, 0xc0, 0x30, 0x00, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f, 0xc0, 0x3f, 0x00, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f, 0xc0, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; suite3270-4.1/x3270/localdefs.h000066400000000000000000000034751413735575200157400ustar00rootroot00000000000000/* * Copyright (c) 2000-2009, 2014 Paul Mattes. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of Paul Mattes nor his contributors may be used * to endorse or promote products derived from this software without * specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. */ /* * localdefs.h * Local definitions for x3270. * * This file contains definitions for environment-specific * facilities, such as memory allocation, I/O registration, * and timers. */ /* We use X11 data types all over. */ #include /* Identify ourselves. */ #define X3270_DISPLAY 1 suite3270-4.1/x3270/locked.bm000066400000000000000000000004121413735575200154000ustar00rootroot00000000000000#define locked_width 16 #define locked_height 14 static unsigned char locked_bits[] = { 0xf8, 0x00, 0x04, 0x01, 0x72, 0x02, 0x8a, 0x02, 0x8a, 0x02, 0x8a, 0x02, 0xff, 0x07, 0x55, 0x05, 0xab, 0x06, 0x55, 0x05, 0xab, 0x06, 0xff, 0x07, 0x01, 0x04, 0xff, 0x07}; suite3270-4.1/x3270/locked15.bm000066400000000000000000000007531413735575200155560ustar00rootroot00000000000000#define locked15_width 24 #define locked15_height 21 static unsigned char locked15_bits[] = { 0xe0, 0x0f, 0x00, 0x10, 0x10, 0x00, 0x08, 0x20, 0x00, 0x84, 0x43, 0x00, 0x44, 0x44, 0x00, 0x24, 0x48, 0x00, 0x24, 0x48, 0x00, 0x24, 0x48, 0x00, 0x24, 0x48, 0x00, 0xff, 0xff, 0x01, 0x55, 0x55, 0x01, 0xab, 0xaa, 0x01, 0x55, 0x55, 0x01, 0xab, 0xaa, 0x01, 0x55, 0x55, 0x01, 0xab, 0xaa, 0x01, 0x55, 0x55, 0x01, 0xff, 0xff, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x01, 0xff, 0xff, 0x01}; suite3270-4.1/x3270/locked20.bm000066400000000000000000000014351413735575200155500ustar00rootroot00000000000000#define locked20_width 32 #define locked20_height 28 static unsigned char locked20_bits[] = { 0xc0, 0xff, 0x00, 0x00, 0xe0, 0xff, 0x01, 0x00, 0x30, 0x00, 0x03, 0x00, 0x18, 0x00, 0x06, 0x00, 0x0c, 0x3f, 0x0c, 0x00, 0x8c, 0x7f, 0x0c, 0x00, 0xcc, 0xe1, 0x0c, 0x00, 0xcc, 0xc0, 0x0c, 0x00, 0xcc, 0xc0, 0x0c, 0x00, 0xcc, 0xc0, 0x0c, 0x00, 0xcc, 0xc0, 0x0c, 0x00, 0xcc, 0xc0, 0x0c, 0x00, 0xff, 0xff, 0x3f, 0x00, 0xff, 0xff, 0x3f, 0x00, 0xab, 0xaa, 0x3a, 0x00, 0x57, 0x55, 0x35, 0x00, 0xab, 0xaa, 0x3a, 0x00, 0x57, 0x55, 0x35, 0x00, 0xab, 0xaa, 0x3a, 0x00, 0x57, 0x55, 0x35, 0x00, 0xab, 0xaa, 0x3a, 0x00, 0x57, 0x55, 0x35, 0x00, 0xff, 0xff, 0x3f, 0x00, 0xff, 0xff, 0x3f, 0x00, 0x03, 0x00, 0x30, 0x00, 0x03, 0x00, 0x30, 0x00, 0xff, 0xff, 0x3f, 0x00, 0xff, 0xff, 0x3f, 0x00}; suite3270-4.1/x3270/m4man000077700000000000000000000000001413735575200171562../Common/m4manustar00rootroot00000000000000suite3270-4.1/x3270/man.m4000077700000000000000000000000001413735575200173122../Common/man.m4ustar00rootroot00000000000000suite3270-4.1/x3270/menubar.c000066400000000000000000002060361413735575200154260ustar00rootroot00000000000000/* * Copyright (c) 1993-2021 Paul Mattes. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of Paul Mattes nor his contributors may be used * to endorse or promote products derived from this software without * specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. */ /* * menubar.c * This module handles the menu bar. */ #include "globals.h" #include "xglobals.h" #include #include #include #include #include "Husk.h" #include "CmplxMenu.h" #include "CmeBSB.h" #include "CmeLine.h" #include "appres.h" #include "objects.h" #include "resources.h" #include "actions.h" #include "about.h" #include "codepage.h" #include "ft_private.h" #include "ft_gui.h" #include "host.h" #include "idle_gui.h" #include "keymap.h" #include "kybd.h" #include "menubar.h" #include "names.h" #include "popups.h" #include "print_screen.h" #include "print_window.h" #include "pr3287_session.h" #include "printer_gui.h" #include "stmenu.h" #include "task.h" #include "telnet.h" #include "toggles.h" #include "unicodec.h" #include "utils.h" #include "xaa.h" #include "xappres.h" #include "xactions.h" #include "xkeypad.h" #include "xft_gui.h" #include "xio.h" #include "xmenubar.h" #include "xpopups.h" #include "xsave.h" #include "xscreen.h" #define MACROS_MENU "macrosMenu" /* Menu widgets associated with toggles. */ toggle_widget_t toggle_widget[N_TOGGLES]; static struct scheme { char *label; char **parents; char *scheme; struct scheme *next; } *schemes, *last_scheme; static int scheme_count; static Widget *scheme_widgets; static Widget file_menu; static Widget options_menu; static Widget fonts_option; static Pixel fm_background = 0; static Dimension fm_borderWidth; static Pixel fm_borderColor; static Dimension fm_leftMargin; static Dimension fm_rightMargin; static bool snap_enabled = true; static bool keypad_sensitive = true; static struct codepage { char **parents; char *label; char *codepage; struct codepage *next; } *codepages, *last_codepage; static int codepage_count; static Widget *codepage_widgets; static void scheme_init(void); static void codepages_init(void); static void options_menu_init(bool regen, Position x, Position y); static void keypad_button_init(Position x, Position y); static void tls_icon_init(Position x, Position y); static void connect_menu_init(bool regen, Position x, Position y); static void macros_menu_init(bool regen, Position x, Position y); static void file_menu_init(bool regen, Dimension x, Dimension y); static void Bye(Widget w, XtPointer client_data, XtPointer call_data); static void menubar_in3270(bool in3270); static void menubar_linemode(bool in_linemode); static void menubar_connect(bool ignored); static void menubar_printer(bool printer_on); static void menubar_remodel(bool ignored _is_unused); static void menubar_codepage(bool ignored _is_unused); static void menubar_keyboard_disable(bool ignored _is_unused); static void screensave_option(Widget w, XtPointer client_data, XtPointer call_data); #define NO_BANG(s) (((s)[0] == '!')? (s) + 1: (s)) #include "dot.bm" #include "dot15.bm" #include "dot20.bm" #include "no_dot.bm" #include "no_dot15.bm" #include "no_dot20.bm" #include "arrow.bm" #include "arrow15.bm" #include "arrow20.bm" #include "diamond.bm" #include "diamond15.bm" #include "diamond20.bm" #include "no_diamond.bm" #include "no_diamond15.bm" #include "no_diamond20.bm" #include "ky.bm" #include "ky15.bm" #include "ky20.bm" #include "locked.bm" #include "locked15.bm" #include "locked20.bm" #include "unlocked.bm" #include "unlocked15.bm" #include "unlocked20.bm" #include "null.bm" /* * Menu Bar */ static Widget menu_parent; static bool menubar_buttons; static Widget disconnect_button; static Widget exit_button; static Widget exit_menu; static Widget macros_button; static Widget ft_button; static Widget printer_button; static Widget assoc_button; static Widget lu_button; static Widget printer_off_button; static Widget connect_button; static Widget locked_icon; static Widget unlocked_icon; static Widget unverified_icon; static Widget keypad_button; static Widget linemode_button; static Widget charmode_button; static Widget models_option; static Widget model_2_button; static Widget model_3_button; static Widget model_4_button; static Widget model_5_button; static Widget oversize_button; static Widget extended_button; static Widget m3278_button; static Widget m3279_button; static Widget keypad_option_button; static Widget scheme_button; static Widget connect_menu; static Widget script_abort_button; static Widget idle_button; static Widget snap_button; static Widget reenable_button; static Widget save_input_button; static Widget restore_input_button; static int scaled_locked_width; static int scaled_locked_height; static int scaled_unlocked_width; static int scaled_unlocked_height; static unsigned char *scaled_locked_bits; static unsigned char *scaled_unlocked_bits; static int scaled_dot_width; static int scaled_dot_height; static int scaled_no_dot_width; static int scaled_no_dot_height; static unsigned char *scaled_dot_bits; static unsigned char *scaled_no_dot_bits; static int scaled_diamond_width; static int scaled_diamond_height; static int scaled_no_diamond_width; static int scaled_no_diamond_height; static unsigned char *scaled_diamond_bits; static unsigned char *scaled_no_diamond_bits; static int scaled_ky_width; static int scaled_ky_height; static unsigned char *scaled_ky_bits; static int scaled_arrow_width; static int scaled_arrow_height; static unsigned char *scaled_arrow_bits; static Pixmap arrow; Pixmap dot; Pixmap no_dot; Pixmap diamond; Pixmap no_diamond; Pixmap null; static int n_bye; static bool toggle_init(Widget, int, const char *, const char *, bool *); #define TOP_MARGIN rescale(3) #define BOTTOM_MARGIN rescale(3) #define LEFT_MARGIN rescale(3) #define KEY_HEIGHT rescale(18) #define KEY_WIDTH rescale(70) #define BORDER rescale(1) #define SPACING rescale(3) #define BUTTON_X(n) (LEFT_MARGIN + (n)*(KEY_WIDTH + 2 * BORDER + SPACING)) #define MENU_BORDER rescale(2) #define KY_WIDTH (scaled_ky_width + rescale(8)) #define MENU_MIN_WIDTH (LEFT_MARGIN + 3 * (KEY_WIDTH + 2 * BORDER + SPACING) + \ LEFT_MARGIN + KY_WIDTH + 2 * BORDER + SPACING + \ 2 * MENU_BORDER) /* Menu hierarchy structure. */ struct menu_hier { Widget menu_shell; /* complexMenu widget */ char *name; /* my name (root name is NULL) */ struct menu_hier *parent; /* parent menu */ struct menu_hier *child; /* child menu */ struct menu_hier *sibling; /* sibling menu */ }; /* * Add an entry to a menu hierarchy. * Adds intermediate nodes as need, and returns the menu shell widget to * add the leaf entry to. */ static Widget add_menu_hier(struct menu_hier *root, char **parents, ArgList args, Cardinal num_args) { struct menu_hier *h = root; static int menu_num = 0; /* Search for a parent match, creating levels as needed. */ while (parents && *parents) { struct menu_hier *child, *last_child = NULL; if (h->name != NULL && !strcmp(h->name, *parents)) { break; } last_child = h->child; for (child = h->child; child != NULL; child = child->sibling) { if (!strcmp(child->name, *parents)) { break; } last_child = child; } if (child != NULL) { h = child; } else { struct menu_hier *new_child; char namebuf[64]; char *menu_name; char *m; int i; Arg my_arglist[2]; ArgList merged_args; new_child = (struct menu_hier *)XtCalloc(1, sizeof(struct menu_hier)); new_child->name = *parents; new_child->parent = h; if (last_child != NULL) { last_child->sibling = new_child; } else { h->child = new_child; } h = new_child; /* * Create a menu for the children of this new * intermediate node. */ sprintf(namebuf, "csMenu%d", menu_num++); for (i = 0, m = namebuf + strlen(namebuf); (*parents)[i] && ((size_t)(m - namebuf) < sizeof(namebuf)); i++) { if (isalnum((unsigned char)(*parents)[i])) { *m++ = (*parents)[i]; } } *m = '\0'; menu_name = XtNewString(namebuf); h->menu_shell = XtVaCreatePopupShell( menu_name, complexMenuWidgetClass, h->parent->menu_shell, NULL); /* * Add this item to its parent's menu, as a pullright. */ XtSetArg(my_arglist[0], XtNrightBitmap, arrow); XtSetArg(my_arglist[1], XtNmenuName, menu_name); merged_args = XtMergeArgLists(my_arglist, 2, args, num_args); XtCreateManagedWidget( h->name, cmeBSBObjectClass, h->parent->menu_shell, merged_args, 2 + num_args); XtFree((XtPointer)merged_args); } /* Go on to the next level. */ parents++; } /* Add here. */ return h->menu_shell; } static void free_menu_hier(struct menu_hier *root) { if (root->sibling) { free_menu_hier(root->sibling); } if (root->child) { free_menu_hier(root->child); } XtFree((char *)root); } /* * Compute the potential height of the menu bar. */ Dimension menubar_qheight(Dimension container_width) { if (!appres.interactive.menubar || (container_width < (unsigned) MENU_MIN_WIDTH)) { return 0; } else { return TOP_MARGIN + KEY_HEIGHT + 2 * BORDER + BOTTOM_MARGIN + 2 * MENU_BORDER; } } /* * Initialize the menu bar. */ void menubar_init(Widget container, Dimension overall_width, Dimension current_width) { static Widget menu_bar; static bool ever = false; bool mb_old; Dimension height; if (!ever) { scheme_init(); codepages_init(); XtRegisterGrabAction(HandleMenu_xaction, True, (ButtonPressMask|ButtonReleaseMask), GrabModeAsync, GrabModeAsync); /* Figure out which bitmaps to use. */ if (rescale(locked_width) >= locked20_width) { scaled_locked_width = locked20_width; scaled_locked_height = locked20_height; scaled_locked_bits = locked20_bits; scaled_unlocked_width = unlocked20_width; scaled_unlocked_height = unlocked20_height; scaled_unlocked_bits = unlocked20_bits; } else if (rescale(locked_width) >= locked15_width) { scaled_locked_width = locked15_width; scaled_locked_height = locked15_height; scaled_locked_bits = locked15_bits; scaled_unlocked_width = unlocked15_width; scaled_unlocked_height = unlocked15_height; scaled_unlocked_bits = unlocked15_bits; } else { scaled_locked_width = locked_width; scaled_locked_height = locked_height; scaled_locked_bits = locked_bits; scaled_unlocked_width = unlocked_width; scaled_unlocked_height = unlocked_height; scaled_unlocked_bits = unlocked_bits; } if (rescale(dot_width) >= dot20_width) { scaled_dot_width = dot20_width; scaled_dot_height = dot20_height; scaled_dot_bits = dot20_bits; scaled_no_dot_width = no_dot20_width; scaled_no_dot_height = no_dot20_height; scaled_no_dot_bits = no_dot20_bits; } else if (rescale(dot_width) >= dot15_width) { scaled_dot_width = dot15_width; scaled_dot_height = dot15_height; scaled_dot_bits = dot15_bits; scaled_no_dot_width = no_dot15_width; scaled_no_dot_height = no_dot15_height; scaled_no_dot_bits = no_dot15_bits; } else { scaled_dot_width = dot_width; scaled_dot_height = dot_height; scaled_dot_bits = dot_bits; scaled_no_dot_width = no_dot_width; scaled_no_dot_height = no_dot_height; scaled_no_dot_bits = no_dot_bits; } if (rescale(diamond_width) >= diamond20_width) { scaled_diamond_width = diamond20_width; scaled_diamond_height = diamond20_height; scaled_diamond_bits = diamond20_bits; scaled_no_diamond_width = no_diamond20_width; scaled_no_diamond_height = no_diamond20_height; scaled_no_diamond_bits = no_diamond20_bits; } else if (rescale(diamond_width) >= diamond15_width) { scaled_diamond_width = diamond15_width; scaled_diamond_height = diamond15_height; scaled_diamond_bits = diamond15_bits; scaled_no_diamond_width = no_diamond15_width; scaled_no_diamond_height = no_diamond15_height; scaled_no_diamond_bits = no_diamond15_bits; } else { scaled_diamond_width = diamond_width; scaled_diamond_height = diamond_height; scaled_diamond_bits = diamond_bits; scaled_no_diamond_width = no_diamond_width; scaled_no_diamond_height = no_diamond_height; scaled_no_diamond_bits = no_diamond_bits; } if (rescale(ky_width) >= ky20_width) { scaled_ky_width = ky20_width; scaled_ky_height = ky20_height; scaled_ky_bits = ky20_bits; } else if (rescale(ky_width) >= ky15_width) { scaled_ky_width = ky15_width; scaled_ky_height = ky15_height; scaled_ky_bits = ky15_bits; } else { scaled_ky_width = ky_width; scaled_ky_height = ky_height; scaled_ky_bits = ky_bits; } if (rescale(arrow_width) >= arrow20_width) { scaled_arrow_width = arrow20_width; scaled_arrow_height = arrow20_height; scaled_arrow_bits = arrow20_bits; } else if (rescale(arrow_width) >= arrow15_width) { scaled_arrow_width = arrow15_width; scaled_arrow_height = arrow15_height; scaled_arrow_bits = arrow15_bits; } else { scaled_arrow_width = arrow_width; scaled_arrow_height = arrow_height; scaled_arrow_bits = arrow_bits; } /* Create bitmaps. */ dot = XCreateBitmapFromData(display, root_window, (char *)scaled_dot_bits, scaled_dot_width, scaled_dot_height); no_dot = XCreateBitmapFromData(display, root_window, (char *)scaled_no_dot_bits, scaled_no_dot_width, scaled_no_dot_height); arrow = XCreateBitmapFromData(display, root_window, (char *)scaled_arrow_bits, scaled_arrow_width, scaled_arrow_height); diamond = XCreateBitmapFromData(display, root_window, (char *)scaled_diamond_bits, scaled_diamond_width, scaled_diamond_height); no_diamond = XCreateBitmapFromData(display, root_window, (char *)scaled_no_diamond_bits, scaled_no_diamond_width, scaled_no_diamond_height); null = XCreateBitmapFromData(display, root_window, (char *) null_bits, null_width, null_height); ever = true; } height = menubar_qheight(current_width); mb_old = menubar_buttons; menubar_buttons = (height != 0); if (menubar_buttons) { if (menu_bar == NULL) { /* Create the menu bar. */ menu_bar = XtVaCreateManagedWidget( "menuBarContainer", huskWidgetClass, container, XtNborderWidth, MENU_BORDER, XtNwidth, overall_width - 2 * MENU_BORDER, XtNheight, height - 2 * MENU_BORDER, NULL); } else { /* Resize and map the menu bar. */ XtVaSetValues(menu_bar, XtNborderWidth, MENU_BORDER, XtNwidth, overall_width - 2 * MENU_BORDER, NULL); XtMapWidget(menu_bar); } menu_parent = menu_bar; } else if (menu_bar != NULL) { /* Hide the menu bar. */ XtUnmapWidget(menu_bar); menu_parent = container; } else { menu_parent = container; } /* "File..." menu */ file_menu_init(mb_old != menubar_buttons, LEFT_MARGIN, TOP_MARGIN); /* "Options..." menu */ options_menu_init(mb_old != menubar_buttons, BUTTON_X(file_menu != NULL), TOP_MARGIN); /* "Connect..." menu */ if (!appres.interactive.reconnect) connect_menu_init(mb_old != menubar_buttons, BUTTON_X((file_menu != NULL) + (options_menu != NULL)), TOP_MARGIN); /* "Macros..." menu */ macros_menu_init(mb_old != menubar_buttons, BUTTON_X((file_menu != NULL) + (options_menu != NULL)), TOP_MARGIN); /* TLS icon */ tls_icon_init( (Position) (current_width - LEFT_MARGIN - (scaled_ky_width + rescale(8)) - 4 * BORDER - 2 * MENU_BORDER - (scaled_locked_width + rescale(8))), TOP_MARGIN); /* Keypad button */ keypad_button_init( (Position) (current_width - LEFT_MARGIN - (scaled_ky_width + rescale(8)) - 2 * BORDER - 2 * MENU_BORDER), TOP_MARGIN); } /* * TLS status changed. */ static void menubar_secure(bool ignored _is_unused) { if (locked_icon != NULL) { if (CONNECTED) { if (net_secure_connection()) { XtUnmapWidget(unlocked_icon); if (net_secure_unverified()) { XtMapWidget(unverified_icon); } else { XtMapWidget(locked_icon); } } else { XtUnmapWidget(locked_icon); XtUnmapWidget(unverified_icon); XtMapWidget(unlocked_icon); } } else { XtUnmapWidget(locked_icon); XtUnmapWidget(unverified_icon); XtUnmapWidget(unlocked_icon); } } } /* * External entry points */ /* * Called when connected to or disconnected from a host. */ static void menubar_connect(bool ignored _is_unused) { /* Set the disconnect button sensitivity. */ if (disconnect_button != NULL) { XtVaSetValues(disconnect_button, XtNsensitive, PCONNECTED, NULL); } /* Set up the exit button, either with a pullright or a callback. */ if (exit_button != NULL) { if (PCONNECTED) { /* Remove the immediate callback. */ if (n_bye) { XtRemoveCallback(exit_button, XtNcallback, Bye, NULL); n_bye--; } /* Set pullright for extra confirmation. */ XtVaSetValues(exit_button, XtNrightBitmap, arrow, XtNmenuName, "exitMenu", NULL); } else { /* Install the immediate callback. */ if (!n_bye) { XtAddCallback(exit_button, XtNcallback, Bye, NULL); n_bye++; } /* Remove the pullright. */ XtVaSetValues(exit_button, XtNrightBitmap, NULL, XtNmenuName, NULL, NULL); } } /* Set up the connect menu. */ if (!appres.interactive.reconnect && connect_menu != NULL) { if (PCONNECTED && connect_button != NULL) { XtUnmapWidget(connect_button); } else { connect_menu_init(true, BUTTON_X((file_menu != NULL) + (options_menu != NULL)), TOP_MARGIN); if (menubar_buttons) { XtMapWidget(connect_button); } } } /* Set up the macros menu. */ macros_menu_init(true, BUTTON_X((file_menu != NULL) + (options_menu != NULL)), TOP_MARGIN); /* Set up the various option buttons. */ if (ft_button != NULL) { XtVaSetValues(ft_button, XtNsensitive, IN_3270, NULL); } if (printer_button != NULL) { XtVaSetValues(printer_button, XtNsensitive, IN_3270, NULL); } if (assoc_button != NULL) { XtVaSetValues(assoc_button, XtNsensitive, !pr3287_session_running() && IN_3270 && IN_TN3270E, NULL); } if (lu_button != NULL) { XtVaSetValues(lu_button, XtNsensitive, !pr3287_session_running() && IN_3270, NULL); } if (linemode_button != NULL) { XtVaSetValues(linemode_button, XtNsensitive, IN_NVT, NULL); } if (charmode_button != NULL) { XtVaSetValues(charmode_button, XtNsensitive, IN_NVT, NULL); } if (toggle_widget[LINE_WRAP].w[0] != NULL) { XtVaSetValues(toggle_widget[LINE_WRAP].w[0], XtNsensitive, IN_NVT, NULL); } if (toggle_widget[RECTANGLE_SELECT].w[0] != NULL) { XtVaSetValues(toggle_widget[RECTANGLE_SELECT].w[0], XtNsensitive, IN_NVT, NULL); } if (models_option != NULL) { XtVaSetValues(models_option, XtNsensitive, !PCONNECTED, NULL); } if (extended_button != NULL) { XtVaSetValues(extended_button, XtNsensitive, !PCONNECTED, NULL); } if (m3278_button != NULL) { XtVaSetValues(m3278_button, XtNsensitive, !PCONNECTED, NULL); } if (m3279_button != NULL) { XtVaSetValues(m3279_button, XtNsensitive, !PCONNECTED, NULL); } menubar_secure(false); } /* Called when the printer starts or stops. */ static void menubar_printer(bool printer_on) { if (assoc_button != NULL) { XtVaSetValues(assoc_button, XtNsensitive, !printer_on && IN_3270 && IN_TN3270E, NULL); } if (lu_button != NULL) { XtVaSetValues(lu_button, XtNsensitive, !printer_on && IN_3270, NULL); } if (printer_off_button != NULL) { XtVaSetValues(printer_off_button, XtNsensitive, printer_on, NULL); } } void menubar_keypad_changed(void) { if (keypad_option_button != NULL) { XtVaSetValues(keypad_option_button, XtNleftBitmap, xappres.keypad_on || keypad_popped ? dot : None, NULL); } } /* Called when we switch between NVT and 3270 modes. */ static void menubar_in3270(bool in3270) { if (ft_button != NULL) { XtVaSetValues(ft_button, XtNsensitive, IN_3270, NULL); } if (printer_button != NULL) { XtVaSetValues(printer_button, XtNsensitive, IN_3270, NULL); } if (assoc_button != NULL) { XtVaSetValues(assoc_button, XtNsensitive, !pr3287_session_running() && IN_3270 && IN_TN3270E, NULL); } if (lu_button != NULL) { XtVaSetValues(lu_button, XtNsensitive, !pr3287_session_running() && IN_3270, NULL); } if (linemode_button != NULL) { XtVaSetValues(linemode_button, XtNsensitive, !in3270, XtNleftBitmap, in3270? no_diamond: (linemode? diamond: no_diamond), NULL); } if (charmode_button != NULL) { XtVaSetValues(charmode_button, XtNsensitive, !in3270, XtNleftBitmap, in3270? no_diamond: (linemode? no_diamond: diamond), NULL); } if (toggle_widget[LINE_WRAP].w[0] != NULL) { XtVaSetValues(toggle_widget[LINE_WRAP].w[0], XtNsensitive, !in3270, NULL); } if (toggle_widget[RECTANGLE_SELECT].w[0] != NULL) { XtVaSetValues(toggle_widget[RECTANGLE_SELECT].w[0], XtNsensitive, !in3270, NULL); } if (idle_button != NULL) { XtVaSetValues(idle_button, XtNsensitive, in3270, NULL); } if (save_input_button != NULL) { XtVaSetValues(save_input_button, XtNsensitive, in3270, NULL); } if (restore_input_button != NULL) { XtVaSetValues(restore_input_button, XtNsensitive, in3270, NULL); } } /* Called when we switch between NVT line and character modes. */ static void menubar_linemode(bool in_linemode) { if (linemode_button != NULL) { XtVaSetValues(linemode_button, XtNleftBitmap, in_linemode ? diamond : no_diamond, NULL); } if (charmode_button != NULL) { XtVaSetValues(charmode_button, XtNleftBitmap, in_linemode ? no_diamond : diamond, NULL); } } /* Called to change the sensitivity of the "Abort Script" button. */ void menubar_as_set(bool sensitive) { if (script_abort_button != NULL) { XtVaSetValues(script_abort_button, XtNsensitive, sensitive, NULL); } } /* * "File..." menu */ static Widget save_shell = (Widget) NULL; /* Called from "Exit x3270" button on "File..." menu */ static void Bye(Widget w _is_unused, XtPointer client_data _is_unused, XtPointer call_data _is_unused) { x3270_exit(0); } /* Called from the "Disconnect" button on the "File..." menu */ static void disconnect(Widget w _is_unused, XtPointer client_data _is_unused, XtPointer call_data _is_unused) { host_disconnect(false); } /* Called from the "Re-enble Keyboard" button on the "File..." menu */ static void reenable_keyboard_option(Widget w _is_unused, XtPointer client_data _is_unused, XtPointer call_data _is_unused) { push_macro(AnKeyboardDisable "(" KwForceEnable ")"); } /* Called from the "Abort Script" button on the "File..." menu */ static void script_abort_callback(Widget w _is_unused, XtPointer client_data _is_unused, XtPointer call_data _is_unused) { abort_script(); } /* "About x3270" popups */ static void show_about_copyright(Widget w _is_unused, XtPointer userdata _is_unused, XtPointer calldata _is_unused) { popup_about_copyright(); } static void show_about_config(Widget w _is_unused, XtPointer userdata _is_unused, XtPointer calldata _is_unused) { popup_about_config(); } static void show_about_status(Widget w _is_unused, XtPointer userdata _is_unused, XtPointer calldata _is_unused) { popup_about_status(); } /* Called from the "Save" button on the save options dialog */ static void save_button_callback(Widget w _is_unused, XtPointer client_data, XtPointer call_data _is_unused) { char *s; s = XawDialogGetValueString((Widget)client_data); if (!s || !*s) { return; } if (save_options(s)) { XtPopdown(save_shell); } } #if defined(HAVE_START) /*[*/ /* Called from the "Help" button on the "File..." menu. */ static void do_help(Widget w _is_unused, XtPointer client_data _is_unused, XtPointer call_data _is_unused) { start_help(); } #endif /*]*/ /* Called from the "Save Options in File" button on the "File..." menu */ static void do_save_options(Widget w _is_unused, XtPointer client_data _is_unused, XtPointer call_data _is_unused) { if (save_shell == NULL) { save_shell = create_form_popup("SaveOptions", save_button_callback, NULL, FORM_NO_WHITE); } XtVaSetValues(XtNameToWidget(save_shell, ObjDialog), XtNvalue, profile_name, NULL); popup_popup(save_shell, XtGrabExclusive); } /* Called from the "Save Input" button on the "File..." menu */ static void do_save_input(Widget w _is_unused, XtPointer client_data _is_unused, XtPointer call_data _is_unused) { run_action(AnSaveInput, IA_UI, NULL, NULL); } /* Called from the "Restore Input" button on the "File..." menu */ static void do_restore_input(Widget w _is_unused, XtPointer client_data _is_unused, XtPointer call_data _is_unused) { run_action(AnRestoreInput, IA_UI, NULL, NULL); } /* Callback for printer session options. */ static void do_printer(Widget w _is_unused, XtPointer client_data, XtPointer call_data _is_unused) { if (client_data == NULL) { pr3287_session_start(NULL); } else if (!strcmp(client_data, "lu")) { printer_lu_dialog(); } else { pr3287_session_stop(); } } /* Figure out if a Widget is suppressed. */ static bool item_suppressed(Widget parent, const char *name) { char *suppress; suppress = get_fresource("%s.%s.%s", XtName(parent), name, ResSuppress); #if defined(DEBUG_SUPPRESS) /*[*/ printf("suppress: %s.%s.%s -> %s\n", XtName(parent), name, ResSuppress, suppress? suppress: "(null)"); #endif /*]*/ return suppress != NULL && !strncasecmp(suppress, ResTrue, strlen(suppress)); } /* * Create a dividing line, if *spaced isn't true. */ static void cond_space(Widget menu, bool *spaced) { if (spaced != NULL && !*spaced) { XtVaCreateManagedWidget( "space", cmeLineObjectClass, menu, NULL); *spaced = true; } } /* * Add a menu item to a menu, but only if it is not suppressed. */ static Widget add_menu_itemv(char *name, Widget menu, XtCallbackProc callback, XtPointer arg, bool *spaced, ...) { if (!item_suppressed(menu, name)) { Widget w; static Arg *args = NULL; Cardinal num_args = 0; static Cardinal max_num_args = 0; va_list a; String argname; XtArgVal value; cond_space(menu, spaced); va_start(a, spaced); while ((argname = va_arg(a, String)) != NULL) { value = va_arg(a, XtArgVal); while (num_args >= max_num_args) { max_num_args++; args = (Arg *)Realloc(args, max_num_args * sizeof(Arg)); } XtSetArg(args[num_args], argname, value); num_args++; } va_end(a); w = XtCreateManagedWidget(name, cmeBSBObjectClass, menu, args, num_args); XtAddCallback(w, XtNcallback, callback, arg); return w; } else { return NULL; } } static void popup_ft(Widget w _is_unused, XtPointer call_parms _is_unused, XtPointer call_data _is_unused) { ft_gui_popup_ft(); } static void file_menu_init(bool regen, Dimension x, Dimension y) { Widget w; bool spaced = false; bool any = false; if (regen && (file_menu != NULL)) { XtDestroyWidget(file_menu); file_menu = NULL; } if (file_menu != NULL) { return; } file_menu = XtVaCreatePopupShell( "fileMenu", complexMenuWidgetClass, menu_parent, menubar_buttons? XtNlabel: NULL, NULL, NULL); if (!menubar_buttons) { XtVaCreateManagedWidget("space", cmeLineObjectClass, file_menu, NULL); } /* Online help */ #if defined(HAVE_START) /*[*/ if (!item_suppressed(file_menu, "helpOption")) { w = add_menu_itemv("helpOption", file_menu, do_help, NULL, &spaced, NULL); any |= (w != NULL); } #endif /*]*/ /* About x3270... */ if (!item_suppressed(file_menu, "aboutOption")) { bool any_about = false; w = XtVaCreatePopupShell( "aboutMenu", complexMenuWidgetClass, file_menu, NULL); any_about |= add_menu_itemv("aboutCopyright", w, show_about_copyright, NULL, NULL, NULL) != NULL; any_about |= add_menu_itemv("aboutConfig", w, show_about_config, NULL, NULL, NULL) != NULL; any_about |= add_menu_itemv("aboutStatus", w, show_about_status, NULL, NULL, NULL) != NULL; if (any_about) { XtVaCreateManagedWidget( "aboutOption", cmeBSBObjectClass, file_menu, XtNrightBitmap, arrow, XtNmenuName, "aboutMenu", NULL); any = true; } else { XtDestroyWidget(w); } } /* File Transfer */ if (!appres.secure) { spaced = false; ft_button = add_menu_itemv("ftOption", file_menu, popup_ft, NULL, &spaced, XtNsensitive, IN_3270, NULL); any |= (ft_button != NULL); } /* Printer start/stop */ if (!item_suppressed(file_menu, "printerOption")) { w = XtVaCreatePopupShell( "printerMenu", complexMenuWidgetClass, menu_parent, NULL); assoc_button = add_menu_itemv("assocButton", w, do_printer, NULL, NULL, XtNsensitive, IN_3270 && IN_TN3270E, NULL); lu_button = add_menu_itemv("luButton", w, do_printer, "lu", NULL, NULL); printer_off_button = add_menu_itemv("printerOffButton", w, do_printer, "off", NULL, XtNsensitive, pr3287_session_running(), NULL); if (assoc_button != NULL || lu_button != NULL || printer_off_button != NULL) { XtCreateManagedWidget( "space", cmeLineObjectClass, file_menu, NULL, 0); printer_button = XtVaCreateManagedWidget( "printerOption", cmeBSBObjectClass, file_menu, XtNsensitive, IN_3270, XtNrightBitmap, arrow, XtNmenuName, "printerMenu", NULL); any = true; } else { XtDestroyWidget(w); } } /* Trace Data Stream Trace X Events Save Screen(s) in File */ spaced = false; if (!appres.secure && appres.debug_tracing) { any |= toggle_init(file_menu, TRACING, "traceOption", NULL, &spaced); } if (!appres.secure) { w = add_menu_itemv("screenTraceOption", file_menu, screensave_option, NULL, &spaced, NULL); if (w != NULL) { any = true; toggle_widget[SCREEN_TRACE].w[0] = w; XtVaSetValues(w, XtNleftBitmap, toggled(SCREEN_TRACE)? dot: None, NULL); } } /* Print Window Bitmap */ spaced = false; w = add_menu_itemv("printWindowOption", file_menu, print_window_option, NULL, &spaced, NULL); any |= (w != NULL); if (!appres.secure) { /* Save Options */ spaced = false; w = add_menu_itemv("saveOption", file_menu, do_save_options, NULL, &spaced, NULL); any |= (w != NULL); /* x3270> prompt. */ spaced = false; w = add_menu_itemv("promptOption", file_menu, prompt_option, NULL, &spaced, NULL); any |= (w != NULL); } /* Save/restore input. */ spaced = false; save_input_button = add_menu_itemv("saveInputOption", file_menu, do_save_input, NULL, &spaced, XtNsensitive, IN_3270, NULL); any |= (save_input_button != NULL); restore_input_button = add_menu_itemv("restoreInputOption", file_menu, do_restore_input, NULL, &spaced, XtNsensitive, IN_3270, NULL); any |= (restore_input_button != NULL); /* Re-enable keyboard. */ spaced = false; reenable_button = add_menu_itemv("reenableKeyboardOption", file_menu, reenable_keyboard_option, NULL, &spaced, XtNsensitive, keyboard_disabled(), NULL); any |= (reenable_button != NULL); /* Abort script */ spaced = false; script_abort_button = add_menu_itemv("abortScriptOption", file_menu, script_abort_callback, NULL, &spaced, XtNsensitive, task_active(), NULL); any |= (script_abort_button != NULL); /* Disconnect */ spaced = false; disconnect_button = add_menu_itemv("disconnectOption", file_menu, disconnect, NULL, &spaced, XtNsensitive, PCONNECTED, NULL); any |= (disconnect_button != NULL); /* Exit x3270 */ if (exit_menu != NULL) { XtDestroyWidget(exit_menu); } exit_menu = XtVaCreatePopupShell( "exitMenu", complexMenuWidgetClass, menu_parent, NULL); /* exitReallyOption cannot be disabled */ w = XtVaCreateManagedWidget( "exitReallyOption", cmeBSBObjectClass, exit_menu, NULL); XtAddCallback(w, XtNcallback, Bye, NULL); exit_button = add_menu_itemv("exitOption", file_menu, Bye, NULL, &spaced, NULL); if (exit_button != NULL) { n_bye = 1; any = true; } /* File... */ if (any) { if (menubar_buttons) { w = XtVaCreateManagedWidget( "fileMenuButton", menuButtonWidgetClass, menu_parent, XtNx, x, XtNy, y, XtNwidth, KEY_WIDTH, XtNheight, KEY_HEIGHT, XtNmenuName, "fileMenu", NULL); } } else { XtDestroyWidget(file_menu); file_menu = NULL; } } /* * "Connect..." menu */ static Widget connect_shell = NULL; /* Called from each button on the "Connect..." menu */ static void host_connect_callback(Widget w _is_unused, XtPointer client_data, XtPointer call_data _is_unused) { host_connect(client_data, IA_UI); } /* Called from the lone "Connect" button on the connect dialog */ static void connect_button_callback(Widget w _is_unused, XtPointer client_data, XtPointer call_data _is_unused) { char *s; s = XawDialogGetValueString((Widget)client_data); if (!s || !*s) { return; } if (host_connect(s, IA_UI)) { XtPopdown(connect_shell); } } /* Called from the "Other..." button on the "Connect..." menu */ static void do_connect_popup(Widget w _is_unused, XtPointer client_data _is_unused, XtPointer call_data _is_unused) { if (connect_shell == NULL) { connect_shell = create_form_popup("Connect", connect_button_callback, NULL, FORM_NO_CC); } popup_popup(connect_shell, XtGrabExclusive); } /* * Initialize the "Connect..." menu */ static void connect_menu_init(bool regen, Position x, Position y) { Widget w; int n_hosts = 0; bool any_hosts = false; struct host *h; bool need_line = false; int n_primary = 0; int n_recent = 0; static struct menu_hier *root = NULL; Widget recent_menu = NULL; if (regen && (connect_menu != NULL)) { XtDestroyWidget(connect_menu); connect_menu = NULL; if (connect_button != NULL) { XtDestroyWidget(connect_button); connect_button = NULL; } free_menu_hier(root); root = NULL; } if (connect_menu != NULL) { return; } /* Create the menu */ root = (struct menu_hier *)XtCalloc(1, sizeof(struct menu_hier)); root->menu_shell = connect_menu = XtVaCreatePopupShell( "hostMenu", complexMenuWidgetClass, menu_parent, menubar_buttons ? XtNlabel : NULL, NULL, NULL); if (!menubar_buttons) { need_line = true; } /* Walk the host list from the file to produce the host menu */ for (h = hosts; h; h = h->next) { switch (h->entry_type) { case ALIAS: continue; case PRIMARY: n_primary++; break; case RECENT: n_recent++; if (n_recent == 1 && n_primary) { recent_menu = XtVaCreatePopupShell( "recentMenu", complexMenuWidgetClass, connect_menu, NULL); } break; } if ((need_line && !any_hosts) || (n_primary > 0 && n_recent == 1)) { XtVaCreateManagedWidget("space", cmeLineObjectClass, connect_menu, NULL); } any_hosts = true; w = XtVaCreateManagedWidget( h->name, cmeBSBObjectClass, (h->entry_type == PRIMARY || recent_menu == NULL)? add_menu_hier(root, h->parents, NULL, 0): recent_menu, NULL); XtAddCallback(w, XtNcallback, host_connect_callback, XtNewString(h->name)); n_hosts++; } if (recent_menu) { XtVaCreateManagedWidget( "recentOption", cmeBSBObjectClass, connect_menu, XtNrightBitmap, arrow, XtNmenuName, "recentMenu", NULL); } if (any_hosts) { need_line = true; } /* Add an "Other..." button at the bottom */ if (!any_hosts || !xappres.no_other) { if (need_line) { XtVaCreateManagedWidget("space", cmeLineObjectClass, connect_menu, NULL); } w = XtVaCreateManagedWidget( "otherHostOption", cmeBSBObjectClass, connect_menu, NULL); XtAddCallback(w, XtNcallback, do_connect_popup, NULL); } /* Add the "Connect..." button itself to the menu_parent. */ if (menubar_buttons) { if (n_hosts) { /* Connect button pops up a menu. */ connect_button = XtVaCreateManagedWidget( "connectMenuButton", menuButtonWidgetClass, menu_parent, XtNx, x, XtNy, y, XtNwidth, KEY_WIDTH, XtNheight, KEY_HEIGHT, XtNmenuName, "hostMenu", XtNmappedWhenManaged, !PCONNECTED, NULL); } else { /* Connect button pops up a dialog. */ connect_button = XtVaCreateManagedWidget( "connectMenuButton", commandWidgetClass, menu_parent, XtNx, x, XtNy, y, XtNwidth, KEY_WIDTH, XtNheight, KEY_HEIGHT, XtNmappedWhenManaged, !PCONNECTED, NULL); XtAddCallback(connect_button, XtNcallback, do_connect_popup, NULL); } } } /* * Callback for macros */ static void do_macro(Widget w _is_unused, XtPointer client_data, XtPointer call_data _is_unused) { macro_command((struct macro_def *)client_data); } /* * Initialize the "Macros..." menu */ static void macros_menu_init(bool regen, Position x, Position y) { static Widget macros_menu; Widget w; struct macro_def *m; bool any = false; static struct menu_hier *root = NULL; if (regen && (macros_menu != NULL)) { XtDestroyWidget(macros_menu); macros_menu = NULL; if (macros_button != NULL) { XtDestroyWidget(macros_button); macros_button = NULL; } } if (regen && root != NULL) { free_menu_hier(root); root = NULL; } if (macros_menu != NULL || !PCONNECTED) { return; } /* Walk the list */ root = (struct menu_hier *)XtCalloc(1, sizeof(struct menu_hier)); for (m = macro_defs; m; m = m->next) { if (!any) { /* Create the menu */ root->menu_shell = macros_menu = XtVaCreatePopupShell( MACROS_MENU, complexMenuWidgetClass, menu_parent, menubar_buttons ? XtNlabel : NULL, NULL, NULL); if (!menubar_buttons) { XtVaCreateManagedWidget("space", cmeLineObjectClass, macros_menu, NULL); } } w = XtVaCreateManagedWidget( m->name, cmeBSBObjectClass, add_menu_hier(root, m->parents, NULL, 0), NULL); XtAddCallback(w, XtNcallback, do_macro, (XtPointer)m); any = true; } /* Add the "Macros..." button itself to the menu_parent */ if (any && menubar_buttons) { macros_button = XtVaCreateManagedWidget( "macrosMenuButton", menuButtonWidgetClass, menu_parent, XtNx, x, XtNy, y, XtNwidth, KEY_WIDTH, XtNheight, KEY_HEIGHT, XtNmenuName, MACROS_MENU, NULL); } } /* Called to toggle the keypad */ static void toggle_keypad(Widget w _is_unused, XtPointer client_data _is_unused, XtPointer call_data _is_unused) { switch (kp_placement) { case kp_integral: xappres.keypad_on = !xappres.keypad_on; screen_showikeypad(xappres.keypad_on); break; case kp_left: case kp_right: case kp_bottom: case kp_inside_right: keypad_popup_init(); if (keypad_popped) { XtPopdown(keypad_shell); } else { popup_popup(keypad_shell, XtGrabNone); } break; } menubar_keypad_changed(); keypad_changed = true; } static void keypad_button_init(Position x, Position y) { if (!menubar_buttons) { return; } if (keypad_button == NULL) { Pixmap pixmap; pixmap = XCreateBitmapFromData(display, root_window, (char *)scaled_ky_bits, scaled_ky_width, scaled_ky_height); keypad_button = XtVaCreateManagedWidget( "keypadButton", commandWidgetClass, menu_parent, XtNbitmap, pixmap, XtNx, x, XtNy, y, XtNwidth, scaled_ky_width + rescale(8), XtNheight, KEY_HEIGHT, XtNsensitive, keypad_sensitive, NULL); XtAddCallback(keypad_button, XtNcallback, toggle_keypad, NULL); } else { XtVaSetValues(keypad_button, XtNx, x, NULL); } } static void tls_icon_init(Position x, Position y) { if (!menubar_buttons) { return; } if (locked_icon == NULL) { Pixmap pixmap; pixmap = XCreateBitmapFromData(display, root_window, (char *)scaled_locked_bits, scaled_locked_width, scaled_locked_height); locked_icon = XtVaCreateManagedWidget( "lockedIcon", commandWidgetClass, menu_parent, XtNbitmap, pixmap, XtNx, x, XtNy, y, XtNwidth, scaled_locked_width + rescale(8), XtNheight, KEY_HEIGHT, XtNmappedWhenManaged, CONNECTED && net_secure_connection() && !net_secure_unverified(), NULL); XtAddCallback(locked_icon, XtNcallback, show_about_status, NULL); unverified_icon = XtVaCreateManagedWidget( "unverifiedIcon", commandWidgetClass, menu_parent, XtNbitmap, pixmap, XtNx, x, XtNy, y, XtNwidth, scaled_locked_width + rescale(8), XtNheight, KEY_HEIGHT, XtNmappedWhenManaged, CONNECTED && net_secure_connection() && net_secure_unverified(), NULL); XtAddCallback(unverified_icon, XtNcallback, show_about_status, NULL); pixmap = XCreateBitmapFromData(display, root_window, (char *)scaled_unlocked_bits, scaled_unlocked_width, scaled_unlocked_height); unlocked_icon = XtVaCreateManagedWidget( "unlockedIcon", commandWidgetClass, menu_parent, XtNbitmap, pixmap, XtNx, x, XtNy, y, XtNwidth, scaled_unlocked_width + rescale(8), XtNheight, KEY_HEIGHT, XtNmappedWhenManaged, CONNECTED && !net_secure_connection(), NULL); XtAddCallback(unlocked_icon, XtNcallback, show_about_status, NULL); } else { XtVaSetValues(locked_icon, XtNx, x, NULL); XtVaSetValues(unlocked_icon, XtNx, x, NULL); } } void menubar_resize(Dimension width) { tls_icon_init( (Position) (width - LEFT_MARGIN - (scaled_ky_width + rescale(8)) - 4 * BORDER - 2 * MENU_BORDER - (scaled_locked_width + rescale(8))), TOP_MARGIN); keypad_button_init( (Position) (width - LEFT_MARGIN - (scaled_ky_width + rescale(8)) - 2 * BORDER), TOP_MARGIN); } /* * "Options..." menu */ static void toggle_callback(Widget w, XtPointer userdata, XtPointer calldata _is_unused) { toggle_widget_t *wx = (toggle_widget_t *)userdata; toggle_index_t ix = wx - toggle_widget; /* * If this is a two-button radio group, rather than a simple toggle, * there is nothing to do if they are clicking on the current value. * * toggle_widget[ix][0] is the "toggle true" button; toggle_widget[ix][1] * is "toggle false". */ if (wx->w[1] != NULL && w == wx->w[!toggled(ix)]) { return; } do_menu_toggle(ix); } static Widget oversize_shell = NULL; /* Called from the "Change" button on the oversize dialog */ static void oversize_button_callback(Widget w _is_unused, XtPointer client_data, XtPointer call_data _is_unused) { char *s; int ovc, ovr; char junk; s = XawDialogGetValueString((Widget)client_data); if (!s || !*s) { return; } if (sscanf(s, "%dx%d%c", &ovc, &ovr, &junk) == 2) { XtPopdown(oversize_shell); screen_change_model(model_num, ovc, ovr); } else { popup_an_error("Illegal size: %s", s); } } /* Called from the "Oversize..." button on the "Models..." menu */ static void do_oversize_popup(Widget w _is_unused, XtPointer client_data _is_unused, XtPointer call_data _is_unused) { if (oversize_shell == NULL) { oversize_shell = create_form_popup("Oversize", oversize_button_callback, NULL, FORM_NO_WHITE); } popup_popup(oversize_shell, XtGrabExclusive); } /* Init a toggle, menu-wise */ static bool toggle_init(Widget menu, int ix, const char *name1, const char *name2, bool *spaced) { toggle_widget_t *wx = &toggle_widget[ix]; if (!item_suppressed(menu, name1) && (name2 == NULL || !item_suppressed(menu, name2))) { if (spaced != NULL) { cond_space(menu, spaced); } wx->w[0] = XtVaCreateManagedWidget( name1, cmeBSBObjectClass, menu, XtNleftBitmap, toggled(ix)? (name2? diamond: dot): (name2? no_diamond: None), NULL); XtAddCallback(wx->w[0], XtNcallback, toggle_callback, (XtPointer)wx); if (name2 != NULL) { wx->w[1] = XtVaCreateManagedWidget( name2, cmeBSBObjectClass, menu, XtNleftBitmap, toggled(ix)? no_diamond: diamond, NULL); XtAddCallback(wx->w[1], XtNcallback, toggle_callback, (XtPointer)wx); } else { wx->w[1] = NULL; } return true; } else { return false; } } static Widget *font_widgets = NULL; static Widget other_font; static Widget font_shell = NULL; static void do_newfont(Widget w _is_unused, XtPointer userdata, XtPointer calldata _is_unused) { screen_newfont((char *)userdata, true, false); } /* Called from the "Select Font" button on the font dialog */ static void font_button_callback(Widget w, XtPointer client_data, XtPointer call_data _is_unused) { char *s; s = XawDialogGetValueString((Widget)client_data); if (!s || !*s) { return; } XtPopdown(font_shell); do_newfont(w, s, NULL); } static void do_otherfont(Widget w _is_unused, XtPointer userdata _is_unused, XtPointer calldata _is_unused) { if (font_shell == NULL) { font_shell = create_form_popup("Font", font_button_callback, NULL, FORM_NO_CC); } popup_popup(font_shell, XtGrabExclusive); } /* Initialze the color scheme list. */ static void scheme_init(void) { char *cm; char *label; char *scheme; struct scheme *s; cm = get_resource(ResSchemeList); if (cm == NULL) { return; } cm = XtNewString(cm); scheme_count = 0; while (split_dresource(&cm, &label, &scheme) == 1) { s = (struct scheme *)XtMalloc(sizeof(struct scheme)); if (!split_hier(label, &s->label, &s->parents)) { XtFree((XtPointer)s); continue; } s->label = label; s->scheme = scheme; s->next = NULL; if (last_scheme != NULL) { last_scheme->next = s; } else { schemes = s; } last_scheme = s; scheme_count++; } } static void do_newscheme(Widget w _is_unused, XtPointer userdata, XtPointer calldata _is_unused) { screen_newscheme((char *)userdata); } /* Initialze the code page list. */ static void codepages_init(void) { char *cm; char *label; char *codepage; struct codepage *s; cm = get_resource(ResCharsetList); if (cm == NULL) { return; } cm = XtNewString(cm); codepage_count = 0; while (split_dresource(&cm, &label, &codepage) == 1) { s = (struct codepage *)XtMalloc(sizeof(struct codepage)); if (!split_hier(label, &s->label, &s->parents)) { XtFree((XtPointer)s); continue; } s->codepage = codepage; s->next = NULL; if (last_codepage != NULL) { last_codepage->next = s; } else { codepages = s; } last_codepage = s; codepage_count++; } } static void do_newcodepage(Widget w _is_unused, XtPointer userdata, XtPointer calldata _is_unused) { /* Change the code page. */ screen_newcodepage((char *)userdata); } static Widget keymap_shell = NULL; /* Called from the "Set Keymap" button on the keymap dialog */ static void keymap_button_callback(Widget w _is_unused, XtPointer client_data, XtPointer call_data _is_unused) { char *s; s = XawDialogGetValueString((Widget)client_data); if (s != NULL && !*s) { s = NULL; } XtPopdown(keymap_shell); keymap_init(s, true); } /* Callback from the "Keymap" menu option */ static void do_keymap(Widget w _is_unused, XtPointer userdata _is_unused, XtPointer calldata _is_unused) { if (keymap_shell == NULL) { keymap_shell = create_form_popup("Keymap", keymap_button_callback, NULL, FORM_NO_WHITE); } popup_popup(keymap_shell, XtGrabExclusive); } /* Callback from the "Idle Command" menu option */ static void do_idle_command(Widget w _is_unused, XtPointer userdata _is_unused, XtPointer calldata _is_unused) { popup_idle(); } /* Callback from the "Snap" menu option */ static void do_snap(Widget w _is_unused, XtPointer userdata _is_unused, XtPointer calldata _is_unused) { screen_snap_size(); } /* Called to change telnet modes */ static void linemode_callback(Widget w _is_unused, XtPointer client_data _is_unused, XtPointer call_data _is_unused) { net_linemode(); } static void charmode_callback(Widget w _is_unused, XtPointer client_data _is_unused, XtPointer call_data _is_unused) { net_charmode(); } /* Called to change models */ static void change_model_callback(Widget w, XtPointer client_data, XtPointer call_data _is_unused) { int m; m = atoi(client_data); switch (model_num) { case 2: if (model_2_button != NULL) { XtVaSetValues(model_2_button, XtNleftBitmap, no_diamond, NULL); } break; case 3: if (model_3_button != NULL) { XtVaSetValues(model_3_button, XtNleftBitmap, no_diamond, NULL); } break; case 4: if (model_4_button != NULL) { XtVaSetValues(model_4_button, XtNleftBitmap, no_diamond, NULL); } break; case 5: if (model_5_button != NULL) { XtVaSetValues(model_5_button, XtNleftBitmap, no_diamond, NULL); } break; } XtVaSetValues(w, XtNleftBitmap, diamond, NULL); screen_change_model(m, 0, 0); } /* Called to when model changes outside our control */ static void menubar_remodel(bool ignored _is_unused) { if (model_2_button != NULL) { XtVaSetValues(model_2_button, XtNleftBitmap, (model_num == 2)? diamond: no_diamond, NULL); } if (model_2_button != NULL) { XtVaSetValues(model_3_button, XtNleftBitmap, (model_num == 3)? diamond: no_diamond, NULL); } if (model_2_button != NULL) { XtVaSetValues(model_4_button, XtNleftBitmap, (model_num == 4)? diamond: no_diamond, NULL); } if (model_2_button != NULL) { XtVaSetValues(model_5_button, XtNleftBitmap, (model_num == 5)? diamond: no_diamond, NULL); } } /* Compare a font name to the current emulator font name. */ static bool is_efont(const char *font_name) { return !strcmp(NO_BANG(font_name), NO_BANG(efontname)) || !strcmp(NO_BANG(font_name), NO_BANG(full_efontname)); } /* Create, or re-create the font menu. */ static void create_font_menu(bool regen, bool even_if_unknown) { Widget t; struct font_list *f; int ix; int count; static struct menu_hier *root = NULL; if (root != NULL) { XtDestroyWidget(root->menu_shell); free_menu_hier(root); root = NULL; } Free(font_widgets); root = (struct menu_hier *)XtCalloc(1, sizeof(struct menu_hier)); root->menu_shell = t = XtVaCreatePopupShell( "fontsMenu", complexMenuWidgetClass, menu_parent, XtNborderWidth, fm_borderWidth, XtNborderColor, fm_borderColor, XtNbackground, fm_background, NULL); count = font_count; if (font_count) { font_widgets = (Widget *)XtCalloc(count, sizeof(Widget)); } else { font_widgets = NULL; } for (f = font_list, ix = 0; f; f = f->next, ix++) { Arg args[3]; XtSetArg(args[0], XtNleftMargin, fm_leftMargin); XtSetArg(args[1], XtNrightMargin, fm_rightMargin); XtSetArg(args[2], XtNbackground, fm_background); font_widgets[ix] = XtVaCreateManagedWidget( f->label, cmeBSBObjectClass, add_menu_hier(root, f->parents, args, 3), XtNleftBitmap, is_efont(f->font)? diamond: no_diamond, XtNleftMargin, fm_leftMargin, XtNrightMargin, fm_rightMargin, XtNbackground, fm_background, NULL); XtAddCallback(font_widgets[ix], XtNcallback, do_newfont, XtNewString(f->font)); } if (!xappres.no_other) { other_font = XtVaCreateManagedWidget( "otherFontOption", cmeBSBObjectClass, t, NULL); XtAddCallback(other_font, XtNcallback, do_otherfont, NULL); } XtVaSetValues(fonts_option, XtNmenuName, "fontsMenu", NULL); } /* Called when the host code page changes. */ static void menubar_codepage(bool ignored _is_unused) { int i; struct codepage *s; const char *cpname; if (!xappres.suppress_font_menu) { create_font_menu(false, false); } /* Update the code page menu. */ cpname = get_codepage_name(); for (i = 0, s = codepages; i < codepage_count; i++, s = s->next) { XtVaSetValues(codepage_widgets[i], XtNleftBitmap, (!strcmp(cpname, s->codepage) || codepage_matches_alias(s->codepage, cpname)) ? diamond : no_diamond, NULL); } } /* Called when keyboard enable/disable changes. */ static void menubar_keyboard_disable(bool ignored _is_unused) { XtVaSetValues(reenable_button, XtNsensitive, keyboard_disabled(), NULL); } /* Called to change emulation modes */ static void toggle_extended(Widget w _is_unused, XtPointer client_data _is_unused, XtPointer call_data _is_unused) { mode.extended = !mode.extended; if (extended_button != NULL) { XtVaSetValues(extended_button, XtNleftBitmap, mode.extended? dot: (Pixmap)NULL, NULL); } if (oversize_button != NULL) { XtVaSetValues(oversize_button, XtNsensitive, mode.extended, NULL); } if (!mode.extended) { screen_change_model(model_num, 0, 0); } screen_extended(mode.extended); } static void toggle_m3279(Widget w, XtPointer client_data _is_unused, XtPointer call_data _is_unused) { if (w == m3278_button) { mode.m3279 = false; } else if (w == m3279_button) { mode.m3279 = true; } else { return; } XtVaSetValues(m3278_button, XtNleftBitmap, mode.m3279 ? no_diamond : diamond, NULL); XtVaSetValues(m3279_button, XtNleftBitmap, mode.m3279 ? diamond : no_diamond, NULL); if (scheme_button != NULL) { XtVaSetValues(scheme_button, XtNsensitive, mode.m3279, NULL); } screen_m3279(mode.m3279); } static void options_menu_init(bool regen, Position x, Position y) { Widget t; struct font_list *f; struct scheme *s; int ix; static Widget options_menu_button = NULL; Widget dummy_font_menu, dummy_font_element; static struct menu_hier *scheme_root = NULL; static struct menu_hier *codepage_root = NULL; bool spaced = false; bool any = false; Widget w; if (regen && (options_menu != NULL)) { XtDestroyWidget(options_menu); options_menu = NULL; if (options_menu_button != NULL) { XtDestroyWidget(options_menu_button); options_menu_button = NULL; } } if (options_menu != NULL) { if (font_widgets != NULL) { /* Set the current font. */ for (f = font_list, ix = 0; f; f = f->next, ix++) { XtVaSetValues(font_widgets[ix], XtNleftBitmap, is_efont(f->font)? diamond: no_diamond, NULL); } } /* Set the current color scheme. */ s = schemes; for (ix = 0, s = schemes; ix < scheme_count; ix++, s = s->next) { XtVaSetValues(scheme_widgets[ix], XtNleftBitmap, !strcmp(xappres.color_scheme, s->scheme)? diamond: no_diamond, NULL); } return; } /* Create the shell */ options_menu = XtVaCreatePopupShell( "optionsMenu", complexMenuWidgetClass, menu_parent, menubar_buttons ? XtNlabel : NULL, NULL, NULL); if (!menubar_buttons) { XtVaCreateManagedWidget("space", cmeLineObjectClass, options_menu, NULL); } /* Create the "toggles" pullright */ if (!item_suppressed(options_menu, "togglesOption")) { t = XtVaCreatePopupShell( "togglesMenu", complexMenuWidgetClass, menu_parent, NULL); if (!menubar_buttons) { keypad_option_button = add_menu_itemv("keypadOption", t, toggle_keypad, NULL, NULL, XtNleftBitmap, (xappres.keypad_on || keypad_popped)? dot: None, NULL); if (keypad_option_button != NULL) { spaced = false; } else { spaced = true; } } toggle_init(t, MONOCASE, "monocaseOption", NULL, &spaced); toggle_init(t, CURSOR_BLINK, "cursorBlinkOption", NULL, &spaced); toggle_init(t, BLANK_FILL, "blankFillOption", NULL, &spaced); toggle_init(t, SHOW_TIMING, "showTimingOption", NULL, &spaced); toggle_init(t, SCROLL_BAR, "scrollBarOption", NULL, &spaced); toggle_init(t, LINE_WRAP, "lineWrapOption", NULL, &spaced); toggle_init(t, MARGINED_PASTE, "marginedPasteOption", NULL, &spaced); toggle_init(t, OVERLAY_PASTE, "overlayPasteOption", NULL, &spaced); toggle_init(t, RECTANGLE_SELECT, "rectangleSelectOption", NULL, &spaced); toggle_init(t, CROSSHAIR, "crosshairOption", NULL, &spaced); toggle_init(t, VISIBLE_CONTROL, "visibleControlOption", NULL, &spaced); toggle_init(t, TYPEAHEAD, "typeaheadOption", NULL, &spaced); toggle_init(t, ALWAYS_INSERT, "alwaysInsertOption", NULL, &spaced); toggle_init(t, SELECT_URL, "selectUrlOption", NULL, &spaced); spaced = false; toggle_init(t, ALT_CURSOR, "underlineCursorOption", "blockCursorOption", &spaced); spaced = false; linemode_button = add_menu_itemv("lineModeOption", t, linemode_callback, NULL, &spaced, XtNleftBitmap, linemode? diamond: no_diamond, XtNsensitive, IN_NVT, NULL); charmode_button = add_menu_itemv("characterModeOption", t, charmode_callback, NULL, &spaced, XtNleftBitmap, linemode? no_diamond: diamond, XtNsensitive, IN_NVT, NULL); if (!appres.interactive.mono) { spaced = false; m3278_button = add_menu_itemv( "m3278Option", t, toggle_m3279, NULL, &spaced, XtNleftBitmap, mode.m3279? no_diamond: diamond, XtNsensitive, !PCONNECTED, NULL); m3279_button = add_menu_itemv("m3279Option", t, toggle_m3279, NULL, &spaced, XtNleftBitmap, mode.m3279? diamond: no_diamond, XtNsensitive, !PCONNECTED, NULL); } spaced = false; extended_button = add_menu_itemv("extendedDsOption", t, toggle_extended, NULL, &spaced, XtNleftBitmap, mode.extended? dot: (Pixmap)NULL, XtNsensitive, !PCONNECTED, NULL); if (keypad_option_button != NULL || toggle_widget[MONOCASE].w[0] != NULL || toggle_widget[CURSOR_BLINK].w[0] != NULL || toggle_widget[BLANK_FILL].w[0] != NULL || toggle_widget[SHOW_TIMING].w[0] != NULL || toggle_widget[SCROLL_BAR].w[0] != NULL || toggle_widget[LINE_WRAP].w[0] != NULL || toggle_widget[MARGINED_PASTE].w[0] != NULL || toggle_widget[RECTANGLE_SELECT].w[0] != NULL || toggle_widget[CROSSHAIR].w[0] != NULL || toggle_widget[VISIBLE_CONTROL].w[0] != NULL || toggle_widget[ALT_CURSOR].w[0] != NULL || toggle_widget[ALWAYS_INSERT].w[0] != NULL || linemode_button != NULL || charmode_button != NULL || m3278_button != NULL || m3279_button != NULL) { XtVaCreateManagedWidget( "togglesOption", cmeBSBObjectClass, options_menu, XtNrightBitmap, arrow, XtNmenuName, "togglesMenu", NULL); any = true; } else { XtDestroyWidget(t); } } if (!xappres.suppress_font_menu && !item_suppressed(options_menu, "fontsOption")) { /* Create the "fonts" pullright */ /* * Create a dummy menu with the well-known name, so we can get * the values of background, borderWidth, borderColor and * leftMargin from its resources. */ dummy_font_menu = XtVaCreatePopupShell( "fontsMenu", complexMenuWidgetClass, menu_parent, NULL); dummy_font_element = XtVaCreateManagedWidget( "entry", cmeBSBObjectClass, dummy_font_menu, XtNleftBitmap, no_diamond, NULL); XtRealizeWidget(dummy_font_menu); XtVaGetValues(dummy_font_menu, XtNborderWidth, &fm_borderWidth, XtNborderColor, &fm_borderColor, XtNbackground, &fm_background, NULL); XtVaGetValues(dummy_font_element, XtNleftMargin, &fm_leftMargin, XtNrightMargin, &fm_rightMargin, NULL); XtDestroyWidget(dummy_font_menu); XtVaCreateManagedWidget( "space", cmeLineObjectClass, options_menu, NULL); fonts_option = XtVaCreateManagedWidget( "fontsOption", cmeBSBObjectClass, options_menu, XtNrightBitmap, arrow, NULL); create_font_menu(regen, true); any = true; } /* Create the "Snap" option. */ if (!item_suppressed(options_menu, "snapOption")) { spaced = false; snap_button = add_menu_itemv("snapOption", options_menu, do_snap, NULL, &spaced, XtNsensitive, snap_enabled, NULL); any |= (snap_button != NULL); } /* Create the "models" pullright */ if (!item_suppressed(options_menu, "modelsOption")) { t = XtVaCreatePopupShell( "modelsMenu", complexMenuWidgetClass, menu_parent, NULL); model_2_button = add_menu_itemv("model2Option", t, change_model_callback, NewString("2"), NULL, XtNleftBitmap, (model_num == 2)? diamond: no_diamond, NULL); model_3_button = add_menu_itemv("model3Option", t, change_model_callback, NewString("3"), NULL, XtNleftBitmap, (model_num == 3)? diamond: no_diamond, NULL); model_4_button = add_menu_itemv("model4Option", t, change_model_callback, NewString("4"), NULL, XtNleftBitmap, (model_num == 4)? diamond: no_diamond, NULL); model_5_button = add_menu_itemv("model5Option", t, change_model_callback, NewString("5"), NULL, XtNleftBitmap, (model_num == 5)? diamond: no_diamond, NULL); oversize_button = add_menu_itemv("oversizeOption", t, do_oversize_popup, NULL, NULL, XtNsensitive, mode.extended, NULL); if (model_2_button != NULL || model_3_button != NULL || model_4_button != NULL || model_5_button != NULL || oversize_button != NULL) { XtVaCreateManagedWidget( "space", cmeLineObjectClass, options_menu, NULL); models_option = XtVaCreateManagedWidget( "modelsOption", cmeBSBObjectClass, options_menu, XtNrightBitmap, arrow, XtNmenuName, "modelsMenu", XtNsensitive, !PCONNECTED, NULL); any = true; } else { XtDestroyWidget(t); } } /* Create the "colors" pullright */ if (scheme_count && !item_suppressed(options_menu, "colorsOption")) { scheme_widgets = (Widget *)XtCalloc(scheme_count, sizeof(Widget)); if (scheme_root != NULL) { free_menu_hier(scheme_root); } scheme_root = (struct menu_hier *)XtCalloc(1, sizeof(struct menu_hier)); scheme_root->menu_shell = XtVaCreatePopupShell( "colorsMenu", complexMenuWidgetClass, menu_parent, NULL); s = schemes; for (ix = 0, s = schemes; ix < scheme_count; ix++, s = s->next) { scheme_widgets[ix] = XtVaCreateManagedWidget( s->label, cmeBSBObjectClass, add_menu_hier(scheme_root, s->parents, NULL, 0), XtNleftBitmap, !strcmp(xappres.color_scheme, s->scheme)? diamond: no_diamond, NULL); XtAddCallback(scheme_widgets[ix], XtNcallback, do_newscheme, s->scheme); } XtVaCreateManagedWidget("space", cmeLineObjectClass, options_menu, NULL); scheme_button = XtVaCreateManagedWidget( "colorsOption", cmeBSBObjectClass, options_menu, XtNrightBitmap, arrow, XtNmenuName, "colorsMenu", XtNsensitive, mode.m3279, NULL); any = true; } /* Create the "code page" pullright */ if (codepage_count && !item_suppressed(options_menu, "codepageOption")) { struct codepage *cs; if (codepage_root != NULL) { free_menu_hier(codepage_root); } codepage_root = (struct menu_hier *)XtCalloc(1, sizeof(struct menu_hier)); codepage_root->menu_shell = XtVaCreatePopupShell( "codepageMenu", complexMenuWidgetClass, menu_parent, NULL); codepage_widgets = (Widget *)XtCalloc(codepage_count, sizeof(Widget)); for (ix = 0, cs = codepages; ix < codepage_count; ix++, cs = cs->next) { t = add_menu_hier(codepage_root, cs->parents, NULL, 0); codepage_widgets[ix] = XtVaCreateManagedWidget( cs->label, cmeBSBObjectClass, t, XtNleftBitmap, (strcmp(get_codepage_name(), cs->codepage))? no_diamond: diamond, NULL); XtAddCallback(codepage_widgets[ix], XtNcallback, do_newcodepage, cs->codepage); } XtVaCreateManagedWidget("space", cmeLineObjectClass, options_menu, NULL); XtVaCreateManagedWidget( "codepageOption", cmeBSBObjectClass, options_menu, XtNrightBitmap, arrow, XtNmenuName, "codepageMenu", NULL); any = true; } /* Create the "keymap" option */ if (!xappres.no_other) { spaced = false; w = add_menu_itemv("keymapOption", options_menu, do_keymap, NULL, &spaced, NULL); any |= (w != NULL); } /* Create the "display keymap" option */ spaced = false; w = add_menu_itemv("keymapDisplayOption", options_menu, do_keymap_display, NULL, &spaced, NULL); any |= (w != NULL); /* Create the "Idle Command" option */ if (!appres.secure) { spaced = false; idle_button = add_menu_itemv("idleCommandOption", options_menu, do_idle_command, NULL, &spaced, XtNsensitive, IN_3270, NULL); any |= (idle_button != NULL); } if (any) { if (menubar_buttons) { options_menu_button = XtVaCreateManagedWidget( "optionsMenuButton", menuButtonWidgetClass, menu_parent, XtNx, x, XtNy, y, XtNwidth, KEY_WIDTH, XtNheight, KEY_HEIGHT, XtNmenuName, "optionsMenu", NULL); keypad_option_button = NULL; } } else { XtDestroyWidget(options_menu); options_menu = NULL; } } /* * Change a menu checkmark */ void menubar_retoggle(toggle_index_t ix) { if (toggle_widget[ix].w[0] != NULL) { XtVaSetValues(toggle_widget[ix].w[0], XtNleftBitmap, toggled(ix)? (toggle_widget[ix].w[1]? diamond: dot): None, NULL); } if (toggle_widget[ix].w[1] != NULL) { XtVaSetValues(toggle_widget[ix].w[1], XtNleftBitmap, toggled(ix)? no_diamond: diamond, NULL); } } /** * Enable or disable the Snap option. */ void menubar_snap_enable(bool enable) { snap_enabled = enable; if (snap_button != NULL) { XtVaSetValues(snap_button, XtNsensitive, enable, NULL); } } /** * Enable or disable the keypad button. * * @param[in] sensitive true if enabled */ void menubar_keypad_sensitive(bool sensitive) { keypad_sensitive = sensitive; if (keypad_button) { XtVaSetValues(keypad_button, XtNsensitive, sensitive, NULL); } } void HandleMenu_xaction(Widget w _is_unused, XEvent *event, String *params, Cardinal *num_params) { String p; xaction_debug(HandleMenu_xaction, event, params, num_params); if (xcheck_usage(HandleMenu_xaction, *num_params, 1, 2) < 0) { return; } if (!CONNECTED || *num_params == 1) { p = params[0]; } else { p = params[1]; } if (!XtNameToWidget(menu_parent, p)) { #if 0 if (strcmp(p, MACROS_MENU)) { popup_an_error("%s: cannot find menu %s", action_name(HandleMenu_xaction), p); } #endif return; } XtCallActionProc(menu_parent, "XawPositionComplexMenu", event, &p, 1); XtCallActionProc(menu_parent, "MenuPopup", event, &p, 1); } static void screensave_option(Widget w _is_unused, XtPointer client_data _is_unused, XtPointer call_data _is_unused) { stmenu_popup(STMP_AS_IS); } /** * Menu module registration. */ void menubar_register(void) { /* Register interest in state transtions. */ register_schange(ST_3270_MODE, menubar_in3270); register_schange(ST_LINE_MODE, menubar_linemode); register_schange_ordered(ST_CONNECT, menubar_connect, ORDER_LAST); register_schange(ST_PRINTER, menubar_printer); register_schange(ST_REMODEL, menubar_remodel); register_schange(ST_CODEPAGE, menubar_codepage); register_schange(ST_KBD_DISABLE, menubar_keyboard_disable); register_schange(ST_SECURE, menubar_secure); } suite3270-4.1/x3270/mkversion.sh000077700000000000000000000000001413735575200222022../Common/mkversion.shustar00rootroot00000000000000suite3270-4.1/x3270/no_diamond.bm000066400000000000000000000003431413735575200162510ustar00rootroot00000000000000#define no_diamond_width 10 #define no_diamond_height 10 static unsigned char no_diamond_bits[] = { 0x00, 0x00, 0x10, 0x00, 0x68, 0x00, 0x94, 0x00, 0x0a, 0x01, 0x05, 0x02, 0x0a, 0x01, 0x94, 0x00, 0x68, 0x00, 0x10, 0x00}; suite3270-4.1/x3270/no_diamond15.bm000066400000000000000000000004501413735575200164160ustar00rootroot00000000000000#define no_diamond15_width 15 #define no_diamond15_height 15 static unsigned char no_diamond15_bits[] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0x03, 0xa8, 0x04, 0x54, 0x08, 0x2a, 0x10, 0x15, 0x20, 0x0a, 0x40, 0x15, 0x20, 0x2a, 0x10, 0x54, 0x08, 0xa8, 0x04, 0x50, 0x03, 0x00, 0x00}; suite3270-4.1/x3270/no_diamond20.bm000066400000000000000000000007421413735575200164160ustar00rootroot00000000000000#define no_diamond20_width 20 #define no_diamond20_height 20 static unsigned char no_diamond20_bits[] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x80, 0x1a, 0x00, 0x40, 0x25, 0x00, 0xa0, 0x42, 0x00, 0x50, 0x81, 0x00, 0xa8, 0x00, 0x01, 0x54, 0x00, 0x02, 0x2a, 0x00, 0x04, 0x15, 0x00, 0x04, 0x2a, 0x00, 0x02, 0x54, 0x00, 0x01, 0xa8, 0x80, 0x00, 0x50, 0x41, 0x00, 0xa0, 0x22, 0x00, 0x40, 0x1d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; suite3270-4.1/x3270/no_dot.bm000066400000000000000000000003271413735575200154260ustar00rootroot00000000000000#define no_dot_width 10 #define no_dot_height 10 static unsigned char no_dot_bits[] = { 0x55, 0xfd, 0xaa, 0xfc, 0x01, 0xfd, 0x02, 0xfc, 0x01, 0xfd, 0x02, 0xfc, 0x01, 0xfd, 0x02, 0xfc, 0x55, 0xfd, 0x00, 0xfc}; suite3270-4.1/x3270/no_dot15.bm000066400000000000000000000004341413735575200155730ustar00rootroot00000000000000#define no_dot15_width 15 #define no_dot15_height 15 static unsigned char no_dot15_bits[] = { 0x55, 0x55, 0xaa, 0x2a, 0x55, 0x15, 0x02, 0x08, 0x05, 0x00, 0x02, 0x08, 0x05, 0x00, 0x02, 0x08, 0x05, 0x00, 0x02, 0x08, 0x05, 0x00, 0xaa, 0x0a, 0x05, 0x00, 0x02, 0x00, 0x01, 0x00}; suite3270-4.1/x3270/no_dot20.bm000066400000000000000000000007261413735575200155730ustar00rootroot00000000000000#define no_dot20_width 20 #define no_dot20_height 20 static unsigned char no_dot20_bits[] = { 0x55, 0x55, 0x05, 0xaa, 0xaa, 0x02, 0x55, 0x55, 0x01, 0xaa, 0xaa, 0x00, 0x05, 0x00, 0x01, 0x0a, 0x00, 0x00, 0x05, 0x00, 0x01, 0x0a, 0x00, 0x00, 0x05, 0x00, 0x01, 0x0a, 0x00, 0x00, 0x05, 0x00, 0x01, 0x0a, 0x00, 0x00, 0x05, 0x00, 0x01, 0x0a, 0x00, 0x00, 0x05, 0x00, 0x01, 0x0a, 0x00, 0x00, 0x55, 0x55, 0x01, 0x02, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00}; suite3270-4.1/x3270/null.bm000066400000000000000000000003211413735575200151100ustar00rootroot00000000000000#define null_width 10 #define null_height 10 static unsigned char null_bits[] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; suite3270-4.1/x3270/nvt_gui.c000066400000000000000000000045231413735575200154450ustar00rootroot00000000000000/* * Copyright (c) 1993-2009, 2013-2014 Paul Mattes. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the names of Paul Mattes nor the names of his contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO * EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * nvt_gui.c * X11-specific functions for NVT mode. */ #include "globals.h" #include "xglobals.h" #include #include "appres.h" #include "nvt_gui.h" #include "screen.h" #include "xscreen.h" /** * X11 version of the xterm text escape * * @param[in] opcode Operation to perform * @param[in] text Associated text */ void xterm_text_gui(int code, const char *text) { switch (code) { case 0: /* icon name and window title */ XtVaSetValues(toplevel, XtNiconName, text, NULL); XtVaSetValues(toplevel, XtNtitle, text, NULL); break; case 1: /* icon name */ XtVaSetValues(toplevel, XtNiconName, text, NULL); break; case 2: /* window_title */ XtVaSetValues(toplevel, XtNtitle, text, NULL); break; case 50: /* font */ screen_newfont(text, False, False); break; default: break; } } suite3270-4.1/x3270/objects.h000066400000000000000000000034631413735575200154320ustar00rootroot00000000000000/* * Copyright (c) 1995-2009, Paul Mattes. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the names of Paul Mattes nor the names of his contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO * EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * objects.h * x3270 object names. */ #define ObjConfirmButton "confirmButton" #define ObjConfirm2Button "confirm2Button" #define ObjCancelButton "cancelButton" #define ObjDialog "dialog" #define ObjSmallLabel "smallLabel" #define ObjNameLabel "nameLabel" #define ObjDataLabel "dataLabel" suite3270-4.1/x3270/popups.c000066400000000000000000001004371413735575200153210ustar00rootroot00000000000000/* * Copyright (c) 1993-2009, 2013-2016, 2019-2020 Paul Mattes. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of Paul Mattes nor his contributors may be used * to endorse or promote products derived from this software without * specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. */ /* * popups.c * This module handles pop-up dialogs: errors, host names, * font names, information. */ #include "globals.h" #include "xglobals.h" #include #include #include #include #include #include #include #include "objects.h" #include "appres.h" #include "actions.h" #include "host.h" #include "names.h" #include "popups.h" /* must come before child_popups.h */ #include "child_popups.h" #include "screen.h" #include "task.h" #include "trace.h" #include "utils.h" #include "xio.h" #include "xmenubar.h" #include "xpopups.h" #include "xscreen.h" typedef enum { WMT_ROOT, /* No windows added by wmgr */ WMT_SIMPLE, /* One window added by wmgr */ WMT_TRANS, /* Two windows added by wmgr */ WMT_UNKNOWN /* Three or more window added -- mystery */ } wm_type_t; const char *popup_separator = "\n"; static enum form_type forms[] = { FORM_NO_WHITE, FORM_NO_CC, FORM_AS_IS }; static Dimension wm_width, wm_height; static ioid_t info_id = NULL_IOID; /* * General popup support */ /* Find the parent of a window */ static Window parent_of(Window w) { Window root, parent, *wchildren; unsigned int nchildren; XQueryTree(display, w, &root, &parent, &wchildren, &nchildren); XFree((char *)wchildren); return parent; } static Window root_of(Window w) { Window root, parent, *wchildren; unsigned int nchildren; XQueryTree(display, w, &root, &parent, &wchildren, &nchildren); XFree((char *)wchildren); return root; } /* * Find the base window (the one with the wmgr decorations) and the virtual * root, so we can pop up a window relative to them. */ void toplevel_geometry(Position *x, Position *y, Dimension *width, Dimension *height) { Window tlw = XtWindow(toplevel); Window win; Window parent; int nw; struct { Window w; XWindowAttributes wa; } ancestor[10]; XWindowAttributes wa, *base_wa, *root_wa; /* * Trace the family tree of toplevel. */ for (win = tlw, nw = 0; ; win = parent) { parent = parent_of(win); ancestor[nw].w = parent; XGetWindowAttributes(display, parent, &ancestor[nw].wa); ++nw; if (parent == root_window) { break; } } /* * Figure out if they're running a virtual desktop, by seeing if * the 1st child of root is bigger than it is. If so, pretend that * the virtual desktop is the root. */ if (nw > 1 && (ancestor[nw-2].wa.width > ancestor[nw-1].wa.width || ancestor[nw-2].wa.height > ancestor[nw-1].wa.height)) { --nw; } root_wa = &ancestor[nw-1].wa; /* * Now identify the base window as the window below the root * window. */ if (nw >= 2) { base_wa = &ancestor[nw-2].wa; } else { XGetWindowAttributes(display, tlw, &wa); base_wa = &wa; } *x = base_wa->x + root_wa->x; *y = base_wa->y + root_wa->y; *width = base_wa->width + 2*base_wa->border_width; *height = base_wa->height + 2*base_wa->border_width; } /* Figure out the window manager type. */ wm_type_t get_wm_type(Window w) { Window root = root_of(w); if (parent_of(w) == root) { return WMT_ROOT; } if (parent_of(parent_of(w)) == root) { return WMT_SIMPLE; } if (parent_of(parent_of(parent_of(w))) == root) { return WMT_TRANS; } #if defined(POPUP_DEBUG) /*[*/ printf("Unknown window manager type -- three or more windows added\n"); #endif /*]*/ return WMT_UNKNOWN; } /* Pop up a popup shell */ void popup_popup(Widget shell, XtGrabKind grab) { XtPopup(shell, grab); XSetWMProtocols(display, XtWindow(shell), &a_delete_me, 1); } static enum placement CenterD = Center; enum placement *CenterP = &CenterD; static enum placement BottomD = Bottom; enum placement *BottomP = &BottomD; static enum placement LeftD = Left; enum placement *LeftP = &LeftD; static enum placement RightD = Right; enum placement *RightP = &RightD; static enum placement InsideRightD = InsideRight; enum placement *InsideRightP = &InsideRightD; typedef struct { Widget w; Position x, y; enum placement p; } want_t; static void popup_move_again(XtPointer closure, XtIntervalId *id _is_unused) { want_t *wx = (want_t *)closure; Position x, y; XtVaGetValues(wx->w, XtNx, &x, XtNy, &y, NULL); #if defined(POPUP_DEBUG) /*[*/ printf("popup_move_again: want x=%d got x=%d, want y=%d, got y=%d\n", wx->x, x, wx->y, y); #endif /*]*/ if (x != wx->x || y != wx->y) { Position tl_x, tl_y; Dimension tl_width, tl_height; Dimension popup_width; /* * The position has been shifted down and to the right by * the Window Manager. The amound of the shift is the width * of the Window Manager decorations. We can use these to * figure out the correct location of the pop-up. */ wm_width = x - wx->x; wm_height = y - wx->y; #if defined(POPUP_DEBUG) /*[*/ printf("popup_move_again: wm width=%u height=%u\n", wm_width, wm_height); #endif /*]*/ XtVaGetValues(toplevel, XtNx, &tl_x, XtNy, &tl_y, XtNwidth, &tl_width, XtNheight, &tl_height, NULL); switch (wx->p) { case Bottom: x = tl_x - wm_width; y = tl_y + tl_height + wm_width; break; case Left: XtVaGetValues(wx->w, XtNwidth, &popup_width, NULL); x = tl_x - (3 * wm_width) - popup_width; y = tl_y - wm_height; break; case Right: x = tl_x + wm_width + tl_width; y = tl_y - wm_height; break; case InsideRight: XtVaGetValues(wx->w, XtNwidth, &popup_width, NULL); x = tl_x - (2 * wm_width) + tl_width - popup_width; y = tl_y + menubar_qheight(tl_width); break; default: return; } #if defined(POPUP_DEBUG) /*[*/ printf("popup_move_again: re-setting x=%d y=%d\n", x, y); #endif /*]*/ XtVaSetValues(wx->w, XtNx, x, XtNy, y, NULL); } XtFree((XtPointer)wx); } /* Place a newly popped-up shell */ void place_popup(Widget w, XtPointer client_data, XtPointer call_data _is_unused) { wm_type_t wm_type; Dimension width, height; Position x = 0, y = 0; Position xnew, ynew; Dimension win_width, win_height; Dimension popup_width, popup_height; enum placement p = *(enum placement *)client_data; XWindowAttributes twa, pwa; want_t *wx = NULL; /* Get and fix the popup's dimensions */ XtRealizeWidget(w); XtVaGetValues(w, XtNwidth, &width, XtNheight, &height, NULL); XtVaSetValues(w, XtNheight, height, XtNwidth, width, XtNbaseHeight, height, XtNbaseWidth, width, XtNminHeight, height, XtNminWidth, width, XtNmaxHeight, height, XtNmaxWidth, width, NULL); XtVaGetValues(toplevel, XtNx, &x, XtNy, &y, XtNwidth, &win_width, XtNheight, &win_height, NULL); if (x < 0 || y < 0) { return; } wm_type = get_wm_type(XtWindow(w)); #if defined(POPUP_DEBUG) /*[*/ printf("place_popup: toplevel x=%d y=%d width=%u height=%u\n", x, y, win_width, win_height); #endif /*]*/ switch (wm_type) { case WMT_ROOT: #if defined(POPUP_DEBUG) /*[*/ printf("place_popup: parent is root\n"); #endif /*]*/ break; default: case WMT_SIMPLE: XGetWindowAttributes(display, parent_of(XtWindow(toplevel)), &twa); break; case WMT_TRANS: XGetWindowAttributes(display, parent_of(XtWindow(toplevel)), &pwa); break; } switch (p) { case Center: XtVaGetValues(w, XtNwidth, &popup_width, XtNheight, &popup_height, NULL); #if defined(POPUP_DEBUG) /*[*/ printf("place_popup: Center: popup width=%u height=%u\n", popup_width, popup_height); #endif /*]*/ xnew = x + (win_width-popup_width) / (unsigned) 2; if (xnew < 0) { xnew = 0; } ynew = y + (win_height-popup_height) / (unsigned) 2; if (ynew < 0) { ynew = 0; } #if defined(POPUP_DEBUG) /*[*/ printf("place_popup: Center: setting x=%d y=%d\n", xnew, ynew); #endif /*]*/ XtVaSetValues(w, XtNx, xnew, XtNy, ynew, NULL); break; case Bottom: switch (wm_type) { case WMT_ROOT: XtVaSetValues(w, XtNx, x, XtNy, y, NULL); /* Measure what the window manager does. */ wx = (want_t *)XtMalloc(sizeof(want_t)); wx->w = w; wx->x = x; wx->y = y; wx->p = p; XtAppAddTimeOut(appcontext, 250, popup_move_again, (XtPointer)wx); break; default: case WMT_SIMPLE: /* Do it precisely. */ x = twa.x; y = twa.y + twa.height; #if defined(POPUP_DEBUG) /*[*/ printf("setting x %d y %d\n", x, y); #endif /*]*/ XtVaSetValues(w, XtNx, x, XtNy, y, NULL); break; } break; case Left: switch (wm_type) { case WMT_ROOT: XtVaSetValues(w, XtNx, x, XtNy, y, NULL); wx = (want_t *)XtMalloc(sizeof(want_t)); wx->w = w; wx->x = x; wx->y = y; wx->p = p; XtAppAddTimeOut(appcontext, 250, popup_move_again, (XtPointer)wx); break; default: case WMT_SIMPLE: XtVaGetValues(w, XtNwidth, &popup_width, NULL); x = twa.x - popup_width - (twa.width - main_width); y = twa.y; #if defined(POPUP_DEBUG) /*[*/ printf("place_popup: setting x=%d y=%d\n", x, y); #endif /*]*/ XtVaSetValues(w, XtNx, x, XtNy, y, NULL); break; case WMT_TRANS: XtVaGetValues(w, XtNwidth, &popup_width, NULL); x = x - popup_width - (2 * pwa.x); y = y - pwa.y; #if defined(POPUP_DEBUG) /*[*/ printf("place_popup: setting x=%d y=%d\n", x, y); #endif /*]*/ XtVaSetValues(w, XtNx, x, XtNy, y, NULL); break; } break; case Right: switch (wm_type) { case WMT_ROOT: XtVaSetValues(w, XtNx, x, XtNy, y, NULL); wx = (want_t *)XtMalloc(sizeof(want_t)); wx->w = w; wx->x = x; wx->y = y; wx->p = p; XtAppAddTimeOut(appcontext, 250, popup_move_again, (XtPointer)wx); break; default: case WMT_SIMPLE: x = twa.x + twa.width; y = twa.y; #if defined(POPUP_DEBUG) /*[*/ printf("place_popup: setting x=%d y=%d\n", x, y); #endif /*]*/ XtVaSetValues(w, XtNx, x, XtNy, y, NULL); break; case WMT_TRANS: x = x + win_width + (2 * pwa.x); y = y - pwa.y; #if defined(POPUP_DEBUG) /*[*/ printf("place_popup: setting x=%d y=%d\n", x, y); #endif /*]*/ XtVaSetValues(w, XtNx, x, XtNy, y, NULL); break; } break; case InsideRight: switch (wm_type) { case WMT_ROOT: XtVaSetValues(w, XtNx, x, XtNy, y, NULL); wx = (want_t *)XtMalloc(sizeof(want_t)); wx->w = w; wx->x = x; wx->y = y; wx->p = p; XtAppAddTimeOut(appcontext, 250, popup_move_again, (XtPointer)wx); break; default: case WMT_SIMPLE: XtVaGetValues(w, XtNwidth, &popup_width, NULL); x = twa.x + win_width - popup_width; y = twa.y + menubar_qheight(win_width) + (y - twa.y); #if defined(POPUP_DEBUG) /*[*/ printf("place_popup: setting x=%d y=%d\n", x, y); #endif /*]*/ XtVaSetValues(w, XtNx, x, XtNy, y, NULL); } break; } } #if defined(POPUP_DEBUG) /*[*/ static void dump_windows(char *what, Widget w) { Position x = 0, y = 0; Dimension win_width, win_height; XtVaGetValues(w, XtNx, &x, XtNy, &y, XtNwidth, &win_width, XtNheight, &win_height, NULL); printf("%s [abs] x=%d y=%d width=%u height=%u\n", what, x, y, win_width, win_height); { Window win = XtWindow(w); int i = 0; while (win != root_of(XtWindow(w))) { XWindowAttributes wx; XGetWindowAttributes(display, win, &wx); printf("%s [rel] #%d x=%d y=%d width=%u height=%u\n", what, i, wx.x, wx.y, wx.width, wx.height); win = parent_of(win); i++; } } } #endif /*]*/ /* * Most window managers put one window behind each window they control: * An inserted window is the size of the app window plus the decorations. Its * coordinates are absolute (it is on the root window). * The app window is offset by the dimensions of the decorations. * * Unity puts two windows behind each window it controls: * A transparent resize window is the size of the app window, plus the * decorations, plus (if the window is resizable) a 10-pixel resize area. Its * coordinates are absolute (it is on the root window). * A second window is offset by the size of the decorations and optional * resize area. It is the same size as the app window. * The app window has no offset. (This is a signature of Unity, as is * $XDG_CURRENT_DESKTOP == Unity.) * * On non-Unity, the correct y coordinate for a Right-side pop-up window is * the absolute y coordinate of the toplevel window. On Unity, the toplevel * window is resizable, while the pop-up is not, so the window manager shifts * them over different amounts. So the correct y coordinate for a Right-side * pop-up window is the absolute y coordinate of the toplevel window, plus the * 10-pixel resize thickness, which can be inferred from the x offset of the * parent of the toplevel window. */ /* Move an existing popped-up shell */ void move_popup(Widget w, XtPointer client_data, XtPointer call_data _is_unused) { wm_type_t wm_type = get_wm_type(XtWindow(w)); Position x = 0, y = 0; Position xnew, ynew; Dimension win_width, win_height; Dimension popup_width, popup_height; enum placement p = *(enum placement *)client_data; XWindowAttributes twa; /* toplevel parent window attributes */ XWindowAttributes pwa; /* popup parent */ #if defined(POPUP_DEBUG) /*[*/ printf("\n"); dump_windows("popup", w); dump_windows("toplevel", toplevel); #endif /*]*/ XtVaGetValues(toplevel, XtNx, &x, XtNy, &y, XtNwidth, &win_width, XtNheight, &win_height, NULL); switch (wm_type) { case WMT_ROOT: /* Fake the parent window attributes. */ #if defined(POPUP_DEBUG) /*[*/ printf("move_popup: parent is root\n"); #endif /*]*/ twa.x = x - wm_width; twa.y = y - wm_height; twa.width = win_width + (2 * wm_width); twa.height = win_height + wm_height + wm_width; break; default: case WMT_SIMPLE: XGetWindowAttributes(display, parent_of(XtWindow(toplevel)), &twa); break; case WMT_TRANS: XGetWindowAttributes(display, parent_of(XtWindow(w)), &pwa); break; } switch (p) { case Center: XtVaGetValues(w, XtNwidth, &popup_width, XtNheight, &popup_height, NULL); xnew = x + (win_width-popup_width) / (unsigned) 2; if (xnew < 0) { xnew = 0; } ynew = y + (win_height-popup_height) / (unsigned) 2; if (ynew < 0) { ynew = 0; } #if defined(POPUP_DEBUG) /*[*/ printf("move_popup: Center: setting x=%d y=%d\n", xnew, ynew); #endif /*]*/ XtVaSetValues(w, XtNx, xnew, XtNy, ynew, NULL); break; case Bottom: if (wm_type == WMT_TRANS) { /* x is unchanged */ y = y + win_height; } else { x = twa.x; y = twa.y + twa.height; } #if defined(POPUP_DEBUG) /*[*/ printf("move_popup: Bottom: setting x=%d y=%d\n", x, y); #endif /*]*/ XtVaSetValues(w, XtNx, x, XtNy, y, NULL); break; case Left: XtVaGetValues(w, XtNwidth, &popup_width, NULL); if (wm_type == WMT_TRANS) { x = x - popup_width - (2 * pwa.x); y = y - pwa.y; } else { x = twa.x - popup_width - (twa.width - main_width); y = twa.y; } #if defined(POPUP_DEBUG) /*[*/ printf("move_popup: Left: setting x=%d y=%d\n", x, y); #endif /*]*/ XtVaSetValues(w, XtNx, x, XtNy, y, NULL); break; case Right: if (wm_type == WMT_TRANS) { x = x + win_width + (2 * pwa.x); y = y - pwa.y; } else { x = twa.x + twa.width; y = twa.y; } #if defined(POPUP_DEBUG) /*[*/ printf("move_popup: Right: setting x=%d y=%d\n", x, y); #endif /*]*/ XtVaSetValues(w, XtNx, x, XtNy, y, NULL); break; case InsideRight: XtVaGetValues(w, XtNwidth, &popup_width, NULL); if (wm_type == WMT_TRANS) { x = x + win_width - popup_width; y = y - pwa.y + menubar_qheight(win_width) + (pwa.y); } else { x = twa.x + win_width - popup_width; y = twa.y + menubar_qheight(win_width) + (y - twa.y); } #if defined(POPUP_DEBUG) /*[*/ printf("move_popup: InsideRight: setting x=%d y=%d\n", x, y); #endif /*]*/ XtVaSetValues(w, XtNx, x, XtNy, y, NULL); break; } } /* Action called when "Return" is pressed in data entry popup */ void PA_confirm_xaction(Widget w, XEvent *event, String *params, Cardinal *num_params) { Widget w2; /* Find the Confirm or Okay button */ w2 = XtNameToWidget(XtParent(w), ObjConfirmButton); if (w2 == NULL) { w2 = XtNameToWidget(XtParent(w), ObjConfirmButton); } if (w2 == NULL) { w2 = XtNameToWidget(w, ObjConfirmButton); } if (w2 == NULL) { xs_warning("confirm: cannot find %s", ObjConfirmButton); return; } /* Call its "notify" event */ XtCallActionProc(w2, "set", event, params, *num_params); XtCallActionProc(w2, "notify", event, params, *num_params); XtCallActionProc(w2, "unset", event, params, *num_params); } /* Callback for "Cancel" button in data entry popup */ static void cancel_button_callback(Widget w _is_unused, XtPointer client_data, XtPointer call_data _is_unused) { XtPopdown((Widget) client_data); } /* * Callback for text source changes. Ensures that the dialog text does not * contain white space -- especially newlines. */ static void popup_dialog_callback(Widget w, XtPointer client_data, XtPointer call_data _is_unused) { static bool called_back = false; XawTextBlock b, nullb; /* firstPos, length, ptr, format */ XawTextPosition pos = 0; int front_len = 0; int end_len = 0; int end_pos = 0; int i; enum { FRONT, MIDDLE, END } place = FRONT; enum form_type *ftp = (enum form_type *)client_data; if (*ftp == FORM_AS_IS) { return; } if (called_back) { return; } else { called_back = true; } nullb.firstPos = 0; nullb.length = 0; nullb.ptr = NULL; /* * Scan the text for whitespace. Leading whitespace is deleted; * embedded whitespace causes the rest of the text to be deleted. */ while (1) { XawTextSourceRead(w, pos, &b, 1024); if (b.length <= 0) { break; } nullb.format = b.format; if (place == END) { end_len += b.length; continue; } for (i = 0; i < b.length; i++) { char c; c = *(b.ptr + i); if (isspace((unsigned char)c) && (*ftp != FORM_NO_CC || c != ' ')) { if (place == FRONT) { front_len++; continue; } else { end_pos = b.firstPos + i; end_len = b.length - i; place = END; break; } } else { place = MIDDLE; } } pos += b.length; if (b.length < 1024) { break; } } if (front_len) { XawTextSourceReplace(w, 0, front_len, &nullb); } if (end_len) { XawTextSourceReplace(w, end_pos - front_len, end_pos - front_len + end_len, &nullb); } called_back = false; } /* Create a simple data entry popup */ Widget create_form_popup(const char *name, XtCallbackProc callback, XtCallbackProc callback2, enum form_type form_type) { char *widgetname; Widget shell; Widget dialog; Widget w; Dimension width; /* Create the popup shell */ widgetname = xs_buffer("%sPopup", name); if (isupper((unsigned char)widgetname[0])) { widgetname[0] = tolower((unsigned char)widgetname[0]); } shell = XtVaCreatePopupShell( widgetname, transientShellWidgetClass, toplevel, NULL); XtFree(widgetname); XtAddCallback(shell, XtNpopupCallback, place_popup, (XtPointer)CenterP); /* Create a dialog in the popup */ dialog = XtVaCreateManagedWidget( ObjDialog, dialogWidgetClass, shell, XtNvalue, "", NULL); XtVaSetValues(XtNameToWidget(dialog, XtNlabel), NULL); /* Add "Confirm" and "Cancel" buttons to the dialog */ w = XtVaCreateManagedWidget( ObjConfirmButton, commandWidgetClass, dialog, NULL); XtAddCallback(w, XtNcallback, callback, (XtPointer)dialog); if (callback2) { w = XtVaCreateManagedWidget( ObjConfirm2Button, commandWidgetClass, dialog, NULL); XtAddCallback(w, XtNcallback, callback2, (XtPointer)dialog); } w = XtVaCreateManagedWidget( ObjCancelButton, commandWidgetClass, dialog, NULL); XtAddCallback(w, XtNcallback, cancel_button_callback, (XtPointer)shell); if (form_type == FORM_AS_IS) { return shell; } /* Modify the translations for the objects in the dialog */ w = XtNameToWidget(dialog, XtNvalue); if (w == NULL) { xs_warning("Cannot find \"%s\" in dialog", XtNvalue); } /* Modify the width of the value. */ XtVaGetValues(w, XtNwidth, &width, NULL); XtVaSetValues(w, XtNwidth, rescale(width), NULL); /* Set a callback for text modifications */ w = XawTextGetSource(w); if (w == NULL) { XtWarning("Cannot find text source in dialog"); } else { XtAddCallback(w, XtNcallback, popup_dialog_callback, &forms[(int)form_type]); } return shell; } /* * Read-only popups. */ struct rsm { struct rsm *next; char *text; }; struct rop { const char *name; /* resource name */ XtGrabKind grab; /* grab kind */ bool is_error; /* is it? */ bool overwrites; /* does it? */ const char *itext; /* initial text */ Widget shell; /* pop-up shell */ Widget form; /* dialog form */ Widget cancel_button; /* cancel button */ abort_callback_t *cancel_callback; /* callback for cancel button */ bool visible; /* visibility flag */ bool moving; /* move in progress */ struct rsm *rsms; /* stored messages */ void (*popdown_callback)(void); /* popdown_callback */ }; static struct rop error_popup = { "errorPopup", XtGrabExclusive, true, false, "first line\nsecond line\nthird line", NULL, NULL, NULL, NULL, false, false, NULL }; static struct rop info_popup = { "infoPopup", XtGrabNonexclusive, false, false, "first line\nsecond line\nthird line", NULL, NULL, NULL, NULL, false, false, NULL }; static struct rop printer_error_popup = { "printerErrorPopup", XtGrabExclusive, true, true, "first line\nsecond line\nthird line\nfourth line", NULL, NULL, NULL, NULL, false, false, NULL }; static struct rop printer_info_popup = { "printerInfoPopup", XtGrabNonexclusive, false, true, "first line\nsecond line\nthird line\nfourth line", NULL, NULL, NULL, NULL, false, false, NULL }; static struct rop child_error_popup = { "childErrorPopup", XtGrabNonexclusive, true, true, "first line\nsecond line\nthird line\nfourth line", NULL, NULL, NULL, NULL, false, false, NULL }; static struct rop child_info_popup = { "childInfoPopup", XtGrabNonexclusive, false, true, "first line\nsecond line\nthird line\nfourth line", NULL, NULL, NULL, NULL, false, false, NULL }; /* Called when OK is pressed in a read-only popup */ static void rop_ok(Widget w _is_unused, XtPointer client_data, XtPointer call_data _is_unused) { struct rop *rop = (struct rop *)client_data; struct rsm *r; if ((r = rop->rsms) != NULL) { XtVaSetValues(rop->form, XtNlabel, r->text, NULL); rop->rsms = r->next; Free(r->text); Free(r); } else { XtPopdown(rop->shell); } } /* Called when Cancel is pressed in a read-only popup */ static void rop_cancel(Widget w _is_unused, XtPointer client_data, XtPointer call_data _is_unused) { struct rop *rop = (struct rop *)client_data; XtPopdown(rop->shell); if (rop->cancel_callback != NULL) { (*rop->cancel_callback)(); } } static void delayed_repop(XtPointer closure, XtIntervalId *id _is_unused) { struct rop *rop = (struct rop *)closure; rop->moving = false; XtPopup(rop->shell, rop->grab); } /* Called when a read-only popup is closed */ static void rop_popdown(Widget w _is_unused, XtPointer client_data, XtPointer call_data _is_unused) { struct rop *rop = (struct rop *)client_data; void (*callback)(void); if (rop->moving) { XtAppAddTimeOut(appcontext, 250, delayed_repop, (XtPointer)rop); return; } rop->visible = false; if (exiting && rop->is_error) { x3270_exit(1); } callback = rop->popdown_callback; rop->popdown_callback = NULL; if (callback) { (*callback)(); } } /* Initialize a read-only pop-up. */ static void rop_init(struct rop *rop) { Widget w; struct rsm *r; Dimension width; if (rop->shell != NULL) { return; } rop->shell = XtVaCreatePopupShell( rop->name, transientShellWidgetClass, toplevel, NULL); XtAddCallback(rop->shell, XtNpopupCallback, place_popup, (XtPointer)CenterP); XtAddCallback(rop->shell, XtNpopdownCallback, rop_popdown, rop); /* Create a dialog in the popup */ rop->form = XtVaCreateManagedWidget( ObjDialog, dialogWidgetClass, rop->shell, NULL); XtVaSetValues(XtNameToWidget(rop->form, XtNlabel), XtNlabel, rop->itext, NULL); /* Add "OK" button to the dialog */ w = XtVaCreateManagedWidget( ObjConfirmButton, commandWidgetClass, rop->form, NULL); XtAddCallback(w, XtNcallback, rop_ok, rop); /* Add an unmapped "Cancel" button to the dialog */ rop->cancel_button = XtVaCreateManagedWidget( ObjCancelButton, commandWidgetClass, rop->form, XtNright, w, XtNmappedWhenManaged, False, NULL); XtAddCallback(rop->cancel_button, XtNcallback, rop_cancel, rop); /* Force it into existence so it sizes itself with 4-line text */ XtRealizeWidget(rop->shell); /* Rescale the error dialogs, which have no initial value. */ XtVaGetValues(rop->shell, XtNwidth, &width, NULL); XtVaSetValues(rop->shell, XtNwidth, rescale(width), NULL); /* If there's a pending message, pop it up now. */ if ((r = rop->rsms) != NULL) { if (rop->is_error) { popup_an_error("%s", r->text); } else { popup_an_info("%s", r->text); } rop->rsms = r->next; Free(r->text); Free(r); } } /* Pop up a dialog. Common logic for all forms. */ static void popup_rop(struct rop *rop, abort_callback_t *a, const char *fmt, va_list args) { char *buf; buf = xs_vbuffer(fmt, args); if (!rop->shell || (rop->visible && !rop->overwrites)) { struct rsm *r, **s; r = (struct rsm *)Malloc(sizeof(struct rsm)); r->text = buf; r->next = NULL; for (s = &rop->rsms; *s != NULL; s = &(*s)->next) { } *s = r; return; } /* Put the error in the trace file. */ if (rop->is_error) { vtrace("Error: %s\n", buf); } if (rop->is_error && task_redirect()) { task_error(buf); Free(buf); return; } XtVaSetValues(rop->form, XtNlabel, buf, NULL); Free(buf); if (a != NULL) XtMapWidget(rop->cancel_button); else XtUnmapWidget(rop->cancel_button); rop->cancel_callback = a; if (!rop->visible) { if (rop->is_error) { ring_bell(); } rop->visible = true; popup_popup(rop->shell, rop->grab); } } static void error_exit(void) { x3270_exit(0); } /* Pop up an error dialog. */ void popup_a_vxerror(pae_t type, const char *fmt, va_list args) { char *s = NULL; if (type == ET_CONNECT) { s = xs_buffer("Connection failed:\n%s", fmt); } popup_rop(&error_popup, appres.interactive.reconnect? error_exit: NULL, (s != NULL)? s: fmt, args); if (s != NULL) { Free(s); } } /* Pop down an error dialog. */ void popdown_an_error(void) { if (error_popup.visible) { XtPopdown(error_popup.shell); } } /* Pop up an info dialog. */ void popup_an_info(const char *fmt, ...) { va_list args; va_start(args, fmt); popup_rop(&info_popup, NULL, fmt, args); va_end(args); } /* Timeout for a timed info dialog. */ static void timed_info_popdown(ioid_t id) { info_id = NULL_IOID; XtPopdown(info_popup.shell); } /* Popup a timed info dialog. */ void popup_a_timed_info(int timeout_ms, const char *fmt, ...) { va_list args; if (info_id != NULL_IOID) { RemoveTimeOut(info_id); info_id = NULL_IOID; } info_id = AddTimeOut(timeout_ms, timed_info_popdown); va_start(args, fmt); popup_rop(&info_popup, NULL, fmt, args); va_end(args); } /* Add a callback to the error popup. */ void add_error_popdown_callback(void (*callback)(void)) { error_popup.popdown_callback = callback; } /* * Produce a result of some sort. If there is a script running, return it * as the value; otherwise, pop it up as an info. */ void action_output(const char *fmt, ...) { va_list args; va_start(args, fmt); if (task_redirect()) { char *s; s = xs_vbuffer(fmt, args); task_info("%s", s); Free(s); } else { popup_rop(&info_popup, NULL, fmt, args); } va_end(args); } /* Callback for x3270 exit. Dumps any undisplayed error messages to stderr. */ static void dump_errmsgs(bool b _is_unused) { while (error_popup.rsms != NULL) { fprintf(stderr, "Error: %s\n", error_popup.rsms->text); error_popup.rsms = error_popup.rsms->next; } while (info_popup.rsms != NULL) { fprintf(stderr, "%s\n", info_popup.rsms->text); info_popup.rsms = info_popup.rsms->next; } } /* Initialization. */ void error_init(void) { } void error_popup_init(void) { rop_init(&error_popup); } /* Callback for the info pop-up popping down. */ static void info_popdown(Widget w, XtPointer client_data, XtPointer call_data _is_unused) { if (info_id != NULL_IOID) { RemoveTimeOut(info_id); info_id = NULL_IOID; } } void info_popup_init(void) { rop_init(&info_popup); XtAddCallback(info_popup.shell, XtNpopdownCallback, info_popdown, NULL); } void printer_popup_init(void) { if (printer_error_popup.shell != NULL) { return; } rop_init(&printer_error_popup); rop_init(&printer_info_popup); } void child_popup_init(void) { if (child_error_popup.shell != NULL) { return; } rop_init(&child_error_popup); rop_init(&child_info_popup); } /* Query. */ bool error_popup_visible(void) { return error_popup.visible; } /* * Printer pop-up. * Allows both error and info popups, and a cancel button. * is_err If true, this is an error pop-up. If false, this is an info * pop-up. * a If non-NULL, the Cancel button is enabled, and this is the * callback function for it. If NULL, there will be no Cancel * button. * fmt... printf()-like format and arguments. */ void popup_printer_output(bool is_err, abort_callback_t *a, const char *fmt, ...) { va_list args; va_start(args, fmt); popup_rop(is_err? &printer_error_popup: &printer_info_popup, a, fmt, args); va_end(args); } /* * Child output pop-up. * Allows both error and info popups, and a cancel button. * is_err If true, this is an error pop-up. If false, this is an info * pop-up. * a If non-NULL, the Cancel button is enabled, and this is the * callback function for it. If NULL, there will be no Cancel * button. * fmt... printf()-like format and arguments. */ void popup_child_output(bool is_err, abort_callback_t *a, const char *fmt, ...) { va_list args; va_start(args, fmt); popup_rop(is_err? &child_error_popup: &child_info_popup, a, fmt, args); va_end(args); } /* * Move the popups that need moving. */ void popups_move(void) { static struct rop *rops[] = { &error_popup, &info_popup, &printer_error_popup, &printer_info_popup, &child_error_popup, &child_info_popup, NULL }; int i; for (i = 0; rops[i] != NULL; i++) { if (rops[i]->visible) { rops[i]->moving = true; XtPopdown(rops[i]->shell); } } } /** * Pop-ups module registration. */ void popups_register(void) { /* Register for status change notifications. */ register_schange(ST_EXITING, dump_errmsgs); } suite3270-4.1/x3270/print_gui.c000066400000000000000000000047511413735575200157750ustar00rootroot00000000000000/* * Copyright (c) 1994-2015, 2019, Paul Mattes. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the names of Paul Mattes nor the names of his contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO * EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * print_gui.c * x3270-specific functions for the PrintText action. */ #include "globals.h" #include "print_gui.h" #include "stmenu.h" /* Typedefs */ /* Globals */ /* Statics */ /** * GUI for the PrintText action. * * @param[in] use_file true if the output is a file, false if the output is * going to a printer * * @return true if a confirmation dialog was popped up, false if the guts of * the action should be run now. */ bool print_text_gui(bool use_file) { if (ia_cause == IA_COMMAND || ia_cause == IA_MACRO || ia_cause == IA_SCRIPT || ia_cause == IA_HTTPD) { /* Invoked by a script. Run the guts now. */ return false; } else { /* Invoked from a keymap -- pop up the confirmation dialog. */ /* XXX: What about the globals referenced by stmenu_popup? * file_flag * stm_ptype * continuously_flag */ if (use_file) { stmenu_popup(STMP_TEXT); } else { stmenu_popup(STMP_PRINTER); } return true; } } suite3270-4.1/x3270/print_window.c000066400000000000000000000144301413735575200165130ustar00rootroot00000000000000/* * Copyright (c) 1994-2015, 2019-2020 Paul Mattes. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the names of Paul Mattes nor the names of his contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO * EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * print_window.c * "Print Window Bitmap" support. */ #include "globals.h" #include "xglobals.h" #include #include #include "appres.h" #include "objects.h" #include "resources.h" #include "actions.h" #include "names.h" #include "popups.h" #include "print_window.h" #include "trace.h" #include "utils.h" #include "varbuf.h" #include "xpopups.h" /* Typedefs */ /* Globals */ /* Statics */ static Widget print_window_shell = NULL; static char *print_window_command = NULL; /* * Printing the window bitmap is a rather convoluted process: * The PrintWindow action calls PrintWindow_action(), or a menu option calls * print_window_option(). * print_window_option() pops up the dialog. * The OK button on the dialog triggers print_window_callback. * print_window_callback pops down the dialog, then schedules a timeout * 1 second away. * When the timeout expires, it triggers snap_it(), which finally calls * xwd. * The timeout indirection is necessary because xwd prints the actual contents * of the window, including any pop-up dialog in front of it. We pop down the * dialog, but then it is up to the server and Xt to send us the appropriate * expose events to repaint our window. Hopefully, one second is enough to do * that. */ /* Termination procedure for window print. */ static void print_window_done(int status) { if (status) { popup_an_error("Print program exited with status %d.", (status & 0xff00) >> 8); } else if (appres.interactive.do_confirms) { popup_an_info("Bitmap printed."); } } /* Timeout callback for window print. */ static void snap_it(XtPointer closure _is_unused, XtIntervalId *id _is_unused) { if (!print_window_command) { return; } vtrace("PrintWindow: Running '%s'\n", print_window_command); XSync(display, 0); print_window_done(system(print_window_command)); } /* * Expand the window print command. * * The token used to substitute the window ID is "%d", which is a historical * artifact of the original, amazingly insecure implementation. */ static char * expand_print_window_command(const char *command) { const char *s; varbuf_t r; # define WINDOW "%d" # define WINDOW_SIZE (sizeof(WINDOW) - 1) vb_init(&r); s = command; while (*s) { if (!strncasecmp(s, WINDOW, WINDOW_SIZE)) { vb_appendf(&r, "%ld", (unsigned long)XtWindow(toplevel)); s += WINDOW_SIZE; } else { vb_append(&r, s, 1); s++; } } return vb_consume(&r); } /* Callback for "OK" button on print window popup. */ static void print_window_callback(Widget w _is_unused, XtPointer client_data, XtPointer call_data _is_unused) { char *cmd; cmd = XawDialogGetValueString((Widget)client_data); XtPopdown(print_window_shell); if (cmd) { /* Expand the command. */ Replace(print_window_command, expand_print_window_command(cmd)); /* In 1 second, snap the window. */ XtAppAddTimeOut(appcontext, 1000, snap_it, 0); } } /* Print the contents of the screen as a bitmap. */ static bool PrintWindow_action(ia_t ia, unsigned argc, const char **argv) { const char *command; bool secure = appres.secure; action_debug(AnPrintWindow, ia, argc, argv); /* Figure out what the command is. */ command = get_resource(ResPrintWindowCommand); if (argc > 0) { command = argv[0]; } if (argc > 1) { popup_an_error(AnPrintWindow "(): Extra arguments ignored"); } if (command == NULL || !*command) { popup_an_error(AnPrintWindow "(): No %s defined", ResPrintWindowCommand); return false; } /* Check for secure mode. */ if (command[0] == '@') { secure = true; if (!*++command) { popup_an_error(AnPrintWindow "(): Invalid %s", ResPrintWindowCommand); return false; } } if (secure) { char *xcommand = expand_print_window_command(command); vtrace("PrintWindow: Running '%s'\n", xcommand); print_window_done(system(xcommand)); XtFree(xcommand); return true; } /* Pop up the dialog. */ if (print_window_shell == NULL) { print_window_shell = create_form_popup("printWindow", print_window_callback, NULL, FORM_AS_IS); } XtVaSetValues(XtNameToWidget(print_window_shell, ObjDialog), XtNvalue, command, NULL); popup_popup(print_window_shell, XtGrabExclusive); return true; } /* Callback for menu Print Window option. */ void print_window_option(Widget w, XtPointer client_data _is_unused, XtPointer call_data _is_unused) { PrintWindow_action(IA_KEYMAP, 0, NULL); } /** * Window printing module registration. */ void print_window_register(void) { static action_table_t print_window_actions[] = { { AnPrintWindow, PrintWindow_action, ACTION_KE } }; /* Register the actions. */ register_actions(print_window_actions, array_count(print_window_actions)); } suite3270-4.1/x3270/print_window.h000066400000000000000000000033101413735575200165130ustar00rootroot00000000000000/* * Copyright (c) 1995-2009, 2013-2015 Paul Mattes. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the names of Paul Mattes nor the names of his contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO * EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * print_window.h * Global declarations for print_window.c. */ void print_window_option(Widget w, XtPointer client_data, XtPointer call_data); void print_window_register(void); suite3270-4.1/x3270/printer_gui.c000066400000000000000000000046651413735575200163300ustar00rootroot00000000000000/* * Copyright (c) 2000-2010, 2013-2014 Paul Mattes. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the names of Paul Mattes nor the names of his contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO * EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * printer_gui.c * GUI for 3287 printer session support */ #include "globals.h" #include #include #include "popups.h" #include "pr3287_session.h" #include "printer_gui.h" #include "xpopups.h" static Widget lu_shell = NULL; /* Callback for "OK" button on printer specific-LU popup */ static void lu_callback(Widget w, XtPointer client_data, XtPointer call_data _is_unused) { char *lu; if (w) { lu = XawDialogGetValueString((Widget)client_data); if (lu == NULL || *lu == '\0') { popup_an_error("Must supply an LU"); return; } else { XtPopdown(lu_shell); } } else { lu = (char *)client_data; } pr3287_session_start(lu); } /* Pop up the LU dialog box. */ void printer_lu_dialog(void) { if (lu_shell == NULL) { lu_shell = create_form_popup("printerLu", lu_callback, NULL, FORM_NO_WHITE); } popup_popup(lu_shell, XtGrabExclusive); } suite3270-4.1/x3270/printer_gui.h000066400000000000000000000031731413735575200163260ustar00rootroot00000000000000/* * Copyright (c) 2000-2010, 2013-2015 Paul Mattes. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the names of Paul Mattes nor the names of his contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO * EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * printer_gui.h * Header file for GUI for printer session support */ void printer_lu_dialog(void); suite3270-4.1/x3270/qcpp-defs.sh000077700000000000000000000000001413735575200217142../Common/qcpp-defs.shustar00rootroot00000000000000suite3270-4.1/x3270/qcpp.c000066400000000000000000000126541413735575200147410ustar00rootroot00000000000000/* * Copyright (c) 1997-2009, 2014 Paul Mattes. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of Paul Mattes nor his contributors may be used * to endorse or promote products derived from this software without * specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. */ /* * Quick C preprocessor substitute, for converting X3270.ad to X3270.ad. * * Understands a limited subset of #ifdef/#ifndef/#else/#endif syntax, and * understands -Dsym or -Usym, but not -Dsym=xxx. */ #include #include #include #include #define MAX_NEST 50 char *me; int color = 0; typedef struct sym { struct sym *next; char *name; int sl; } sym_t; sym_t *syms = NULL; static int is_sym(char *name) { sym_t *s; int sl; sl = strlen(name); if (sl > 0 && name[sl - 1] == '\n') sl--; for (s = syms; s != NULL; s = s->next) { if (s->sl == sl && !strncmp(name, s->name, sl)) return 1; } return 0; } static void usage(void) { fprintf(stderr, "usage: %s [-v] [-Dname]... [-Uname]... " "[infile [outfile]]\n", me); exit(1); } int main(int argc, char *argv[]) { int c; char buf[1024]; FILE *f, *t, *o; int nest = 0; int ln = 0; int pass[MAX_NEST]; int elsed[MAX_NEST]; sym_t *s, *prev; int verbose = 0; if ((me = strrchr(argv[0], '/')) != NULL) me++; else me = argv[0]; while ((c = getopt(argc, argv, "D:U:v")) != -1) { switch (c) { case 'D': if (!is_sym(optarg)) { s = malloc(sizeof(sym_t) + strlen(optarg) + 1); if (s == NULL) { fprintf(stderr, "out of memory\n"); exit(1); } s->name = (char *)(s + 1); (void) strcpy(s->name, optarg); s->sl = strlen(s->name); s->next = syms; syms = s; if (verbose) printf("defined %s\n", optarg); } break; case 'U': prev = NULL; for (s = syms; s != NULL; s = s->next) { if (!strcmp(s->name, optarg)) { if (prev != NULL) prev->next = s->next; else syms = s->next; free(s); break; } prev = s; } break; case 'v': verbose = 1; break; default: usage(); break; } } switch (argc - optind) { case 0: f = stdin; break; case 1: case 2: if (strcmp(argv[optind], "-")) { f = fopen(argv[optind], "r"); if (f == NULL) { perror(argv[optind]); exit(1); } } else f = stdin; break; default: usage(); break; } t = tmpfile(); if (t == NULL) { perror("tmpfile"); exit(1); } pass[nest] = 1; while (fgets(buf, sizeof(buf), f) != NULL) { ln++; if (buf[0] != '#') { if (pass[nest]) fprintf(t, "%s", buf); continue; } if (!strncmp(buf, "#ifdef ", 7)) { if (verbose) printf("%d: #ifdef %s -> %d\n", ln, buf + 7, is_sym(buf + 7)); pass[nest+1] = pass[nest] && is_sym(buf + 7); nest++; elsed[nest] = 0; } else if (!strncmp(buf, "#ifndef ", 8)) { if (verbose) printf("%d: #ifndef %s -> %d\n", ln, buf + 8, !is_sym(buf + 8)); pass[nest+1] = pass[nest] && !is_sym(buf + 8); nest++; elsed[nest] = 0; } else if (!strcmp(buf, "#else\n")) { if (!nest) { fprintf(stderr, "line %d: #else without #if\n", ln); exit(1); } if (elsed[nest]) { fprintf(stderr, "line %d: duplicate #else\n", ln); exit(1); } if (pass[nest]) pass[nest] = 0; else if (pass[nest-1]) pass[nest] = 1; elsed[nest] = 1; } else if (!strcmp(buf, "#endif\n")) { if (!nest) { fprintf(stderr, "line %d: #endif without #if\n", ln); exit(1); } --nest; } else { fprintf(stderr, "line %d: unknown directive\n", ln); exit(1); } #if 0 fprintf(t, "! line %d nest %d pass[nest] %d\n", ln, nest, pass[nest]); #endif } if (nest > 0) { fprintf(stderr, "missing #endif\n"); exit(1); } /* Close the input file, if there was one. */ if (f != stdin) fclose(f); /* Open the output file, if there is one. */ if (argc - optind == 2) { o = fopen(argv[optind + 1], "w"); if (o == NULL) { perror(argv[optind + 1]); exit(1); } } else { o = stdout; } /* Copy the temp file to the output file. */ rewind(t); while (fgets(buf, sizeof(buf), t) != NULL) { fprintf(o, "%s", buf); } fclose(t); if (o != stdout) fclose(o); return 0; } suite3270-4.1/x3270/resources.c000066400000000000000000000501671413735575200160110ustar00rootroot00000000000000/* * Copyright (c) 1993-2017, 2019-2020 Paul Mattes. * Copyright (c) 1990, Jeff Sparkes. * Copyright (c) 1989, Georgia Tech Research Corporation (GTRC), Atlanta, * GA 30332. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the names of Paul Mattes, Jeff Sparkes, GTRC nor their * contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES, JEFF SPARKES AND GTRC "AS IS" * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL PAUL MATTES, JEFF SPARKES OR * GTRC BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, * OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * resources.c * Resource definitions for x3270. */ #include "globals.h" #include "appres.h" #include "resources.h" #include "xappres.h" #include #include "resourcesc.h" #define offset(field) XtOffset(AppResptr, field) XtResource resources[] = { { ResSaveLines, ClsSaveLines, XtRInt, sizeof(int), offset(interactive.save_lines), XtRString, "4096" }, { ResUnlockDelayMs, ClsUnlockDelayMs, XtRInt, sizeof(int), offset(unlock_delay_ms), XtRString, "350" }, { ResScriptPort, ClsScriptPort, XtRString, sizeof(String), offset(script_port), XtRString, 0 }, { ResHttpd, ClsHttpd, XtRString, sizeof(String), offset(httpd_port), XtRString, 0 }, { ResLoginMacro, ClsLoginMacro, XtRString, sizeof(String), offset(login_macro), XtRString, 0 }, { ResOversize, ClsOversize, XtRString, sizeof(char *), offset(oversize), XtRString, 0 }, { ResConfDir, ClsConfDir, XtRString, sizeof(char *), offset(conf_dir), XtRString, LIBX3270DIR }, { ResModel, ClsModel, XtRString, sizeof(char *), offset(model), XtRString, "3279-4-E" }, { ResKeymap, ClsKeymap, XtRString, sizeof(char *), offset(interactive.key_map), XtRString, 0 }, { ResComposeMap, ClsComposeMap, XtRString, sizeof(char *), offset(interactive.compose_map), XtRString, "latin1" }, { ResHostsFile, ClsHostsFile, XtRString, sizeof(char *), offset(hostsfile), XtRString, 0 }, { ResPort, ClsPort, XtRString, sizeof(char *), offset(port), XtRString, "telnet" }, { ResCharset, ClsCharset, XtRString, sizeof(char *), offset(charset), XtRString, 0 }, { ResCodePage, ClsCodePage, XtRString, sizeof(char *), offset(codepage), XtRString, 0 }, { ResSbcsCgcsgid, ClsSbcsCgcsgid, XtRString, sizeof(char *), offset(sbcs_cgcsgid), XtRString, 0 }, { ResTermName, ClsTermName, XtRString, sizeof(char *), offset(termname), XtRString, 0 }, { ResDevName, ClsDevName, XtRString, sizeof(char *), offset(devname), XtRString, 0 }, { ResUser, ClsUser, XtRString, sizeof(char *), offset(user), XtRString, 0 }, { ResMacros, ClsMacros, XtRString, sizeof(char *), offset(macros), XtRString, 0 }, { ResTraceDir, ClsTraceDir, XtRString, sizeof(char *), offset(trace_dir), XtRString, "/tmp" }, { ResTraceFile, ClsTraceFile, XtRString, sizeof(char *), offset(trace_file), XtRString, 0 }, { ResTraceFileSize, ClsTraceFileSize, XtRString, sizeof(char *), offset(trace_file_size), XtRString, 0 }, { ResScreenTraceFile, ClsScreenTraceFile, XtRString, sizeof(char *), offset(screentrace.file), XtRString, 0 }, { ResScreenTraceTarget, ClsScreenTraceTarget, XtRString, sizeof(char *), offset(screentrace.target), XtRString, 0 }, { ResScreenTraceType, ClsScreenTraceType, XtRString, sizeof(char *), offset(screentrace.type), XtRString, 0 }, { ResConnectFileName, ClsConnectFileName, XtRString, sizeof(String), offset(connectfile_name), XtRString, "~/.x3270connect" }, { ResIdleCommand, ClsIdleCommand, XtRString, sizeof(String), offset(idle_command), XtRString, 0 }, { ResIdleTimeout, ClsIdleTimeout, XtRString, sizeof(String), offset(idle_timeout), XtRString, 0 }, { ResProxy, ClsProxy, XtRString, sizeof(String), offset(proxy), XtRString, 0 }, { ResHostname, ClsHostname, XtRString, sizeof(String), offset(hostname), XtRString, 0 }, { ResMaxRecent, ClsMaxRecent, XtRInt, sizeof(int), offset(max_recent), XtRString, "5" }, { ResSuppressActions, ClsSuppressActions, XtRString, sizeof(String), offset(suppress_actions), XtRString, 0 }, { ResCrosshairColor, ClsCrosshairColor, XtRString, sizeof(String), offset(interactive.crosshair_color), XtRString, "purple" }, { ResConnectTimeout, ClsConnectTimeout, XtRInt, sizeof(int), offset(connect_timeout), XtRString, "0" }, { ResConsole, ClsConsole, XtRString, sizeof(char *), offset(interactive.console), XtRString, 0 }, { ResNoTelnetInputMode, ClsNoTelnetInputMode, XtRString, sizeof(char *), offset(interactive.no_telnet_input_mode), XtRString, "line" }, { ResNopSeconds, ClsNopSeconds, XtRInt, sizeof(int), offset(nop_seconds), XtRString, "0" }, { ResMinVersion, ClsMinVersion, XtRString, sizeof(String), offset(min_version), XtRString, 0 }, { ResErase, ClsErase, XtRString, sizeof(char *), offset(linemode.erase), XtRString, "^?" }, { ResKill, ClsKill, XtRString, sizeof(char *), offset(linemode.kill), XtRString, "^U" }, { ResWerase, ClsWerase, XtRString, sizeof(char *), offset(linemode.werase), XtRString, "^W" }, { ResRprnt, ClsRprnt, XtRString, sizeof(char *), offset(linemode.rprnt), XtRString, "^R" }, { ResLnext, ClsLnext, XtRString, sizeof(char *), offset(linemode.lnext), XtRString, "^V" }, { ResIntr, ClsIntr, XtRString, sizeof(char *), offset(linemode.intr), XtRString, "^C" }, { ResQuit, ClsQuit, XtRString, sizeof(char *), offset(linemode.quit), XtRString, "^\\" }, { ResEof, ClsEof, XtRString, sizeof(char *), offset(linemode.eof), XtRString, "^D" }, { ResPrinterLu, ClsPrinterLu, XtRString, sizeof(char *), offset(interactive.printer_lu), XtRString, 0 }, { ResDbcsCgcsgid, ClsDbcsCgcsgid, XtRString, sizeof(char *), offset(dbcs_cgcsgid), XtRString, 0 }, { ResAcceptHostname, ClsAcceptHostname, XtRString, sizeof(char *), offset(tls.accept_hostname), XtRString, 0 }, { ResCaDir, ClsCaDir, XtRString, sizeof(char *), offset(tls.ca_dir), XtRString, 0 }, { ResCaFile, ClsCaFile, XtRString, sizeof(char *), offset(tls.ca_file), XtRString, 0 }, { ResCertFile, ClsCertFile, XtRString, sizeof(char *), offset(tls.cert_file), XtRString, 0 }, { ResCertFileType, ClsCertFileType, XtRString, sizeof(char *), offset(tls.cert_file_type), XtRString, 0 }, { ResChainFile, ClsChainFile, XtRString, sizeof(char *), offset(tls.chain_file), XtRString, 0 }, { ResKeyFile, ClsKeyFile, XtRString, sizeof(char *), offset(tls.key_file), XtRString, 0 }, { ResKeyFileType, ClsKeyFileType, XtRString, sizeof(char *), offset(tls.key_file_type), XtRString, 0 }, { ResKeyPasswd, ClsKeyPasswd, XtRString, sizeof(char *), offset(tls.key_passwd), XtRString, 0 }, { ResFtAllocation, ClsFtAllocation, XtRString, sizeof(char *), offset(ft.allocation), XtRString, 0 }, { ResFtAvblock, ClsFtAvblock, XtRInt, sizeof(int), offset(ft.avblock), XtRString, "0" }, { ResFtBlksize, ClsFtBlksize, XtRInt, sizeof(int), offset(ft.blksize), XtRString, "0" }, { ResFtBufferSize, ClsFtBufferSize, XtRInt, sizeof(int), offset(ft.dft_buffer_size), XtRString, STR(DFT_BUF) }, { ResFtCr, ClsFtCr, XtRString, sizeof(char *), offset(ft.cr), XtRString, 0 }, { ResFtDirection, ClsFtDirection, XtRString, sizeof(char *), offset(ft.direction), XtRString, 0 }, { ResFtExist, ClsFtExist, XtRString, sizeof(char *), offset(ft.exist), XtRString, 0 }, { ResFtHost, ClsFtHost, XtRString, sizeof(char *), offset(ft.host), XtRString, 0 }, { ResFtHostFile, ClsFtHostFile, XtRString, sizeof(char *), offset(ft.host_file), XtRString, 0 }, { ResFtLocalFile, ClsFtLocalFile, XtRString, sizeof(char *), offset(ft.local_file), XtRString, 0 }, { ResFtLrecl, ClsFtLrecl, XtRInt, sizeof(int), offset(ft.lrecl), XtRString, "0" }, { ResFtMode, ClsFtMode, XtRString, sizeof(char *), offset(ft.mode), XtRString, 0 }, { ResFtPrimarySpace, ClsFtPrimarySpace, XtRInt, sizeof(int), offset(ft.primary_space), XtRString, "0" }, { ResFtRecfm, ClsFtRecfm, XtRString, sizeof(char *), offset(ft.recfm), XtRString, 0 }, { ResFtRemap, ClsFtRemap, XtRString, sizeof(char *), offset(ft.remap), XtRString, 0 }, { ResFtSecondarySpace, ClsFtSecondarySpace, XtRInt, sizeof(int), offset(ft.secondary_space), XtRString, "0" }, }; #undef offset Cardinal num_resources = XtNumber(resources); #define offset(field) XtOffset(xappresptr_t, field) #define boffset(field) XtOffset(xappresptr_t, bools.field) #define btoffset(index) boffset(toggle[index]) XtResource xresources[] = { { XtNforeground, XtCForeground, XtRPixel, sizeof(Pixel), offset(foreground), XtRString, "XtDefaultForeground" }, { XtNbackground, XtCBackground, XtRPixel, sizeof(Pixel), offset(background), XtRString, "XtDefaultBackground" }, { ResNormalCursor, ClsNormalCursor, XtRCursor, sizeof(Cursor), offset(normal_mcursor), XtRString, "top_left_arrow" }, { ResWaitCursor, ClsWaitCursor, XtRCursor, sizeof(Cursor), offset(wait_mcursor), XtRString, "watch" }, { ResLockedCursor, ClsLockedCursor, XtRCursor, sizeof(Cursor), offset(locked_mcursor), XtRString, "X_cursor" }, { ResColorBackground, ClsColorBackground, XtRString, sizeof(String), offset(colorbg_name), XtRString, "black" }, { ResSelectBackground, ClsSelectBackground, XtRString, sizeof(String), offset(selbg_name), XtRString, "dim gray" }, { ResNormalColor, ClsNormalColor, XtRString, sizeof(String), offset(normal_name), XtRString, "green" }, { ResInputColor, ClsInputColor, XtRString, sizeof(String), offset(select_name), XtRString, "green" }, { ResBoldColor, ClsBoldColor, XtRString, sizeof(String), offset(bold_name), XtRString, "green" }, { ResCursorColor, ClsCursorColor, XtRString, sizeof(String), offset(cursor_color_name), XtRString, "red" }, { ResKeypad, ClsKeypad, XtRString, sizeof(String), offset(keypad), XtRString, KpRight }, { ResKeypadOn, ClsKeypadOn, XtRBoolean, sizeof(Boolean), offset(keypad_on), XtRString, ResFalse }, { ResAplCircledAlpha, ClsAplCircledAlpha, XtRBoolean, sizeof(Boolean), offset(apl_circled_alpha), XtRString, ResFalse }, { ResInvertKeypadShift, ClsInvertKeypadShift, XtRBoolean, sizeof(Boolean), offset(invert_kpshift), XtRString, ResFalse }, { ResActiveIcon, ClsActiveIcon, XtRBoolean, sizeof(Boolean), offset(active_icon), XtRString, ResFalse }, { ResLabelIcon, ClsLabelIcon, XtRBoolean, sizeof(Boolean), offset(label_icon), XtRString, ResFalse }, { ResKeypadBackground, ClsKeypadBackground, XtRString, sizeof(String), offset(keypadbg_name), XtRString, "grey70" }, { ResEmulatorFont, ClsEmulatorFont, XtRString, sizeof(char *), offset(efontname), XtRString, 0 }, { ResUseCursorColor, ClsUseCursorColor, XtRBoolean, sizeof(Boolean), offset(use_cursor_color), XtRString, ResFalse }, { ResVisualSelect, ClsVisualSelect, XtRBoolean, sizeof(Boolean), offset(visual_select), XtRString, ResFalse }, { ResSuppressHost, ClsSuppressHost, XtRBoolean, sizeof(Boolean), offset(suppress_host), XtRString, ResFalse }, { ResSuppressFontMenu, ClsSuppressFontMenu, XtRBoolean, sizeof(Boolean), offset(suppress_font_menu), XtRString, ResFalse }, { ResAllowResize, ClsAllowResize, XtRBoolean, sizeof(Boolean), offset(allow_resize), XtRString, ResTrue }, { ResNoOther, ClsNoOther, XtRBoolean, sizeof(Boolean), offset(no_other), XtRString, ResFalse }, { ResBellVolume, ClsBellVolume, XtRInt, sizeof(int), offset(bell_volume), XtRString, "0" }, { ResCharClass, ClsCharClass, XtRString, sizeof(char *), offset(char_class), XtRString, 0 }, { ResModifiedSelColor, ClsModifiedSelColor, XtRInt, sizeof(int), offset(modified_sel_color), XtRString, "10" }, { ResVisualSelectColor, ClsVisualSelectColor, XtRInt, sizeof(int), offset(visual_select_color), XtRString, "6" }, { ResIconFont, ClsIconFont, XtRString, sizeof(char *), offset(icon_font), XtRString, "nil2" }, { ResIconLabelFont, ClsIconLabelFont, XtRString, sizeof(char *), offset(icon_label_font), XtRString, "8x13" }, { ResFixedSize, ClsFixedSize, XtRString, sizeof(char *), offset(fixed_size), XtRString, 0 }, { ResColorScheme, ClsColorScheme, XtRString, sizeof(String), offset(color_scheme), XtRString, "default" }, { ResInputMethod, ClsInputMethod, XtRString, sizeof(char *), offset(input_method), XtRString, 0 }, { ResPreeditType, ClsPreeditType, XtRString, sizeof(char *), offset(preedit_type), XtRString, PT_OVER_THE_SPOT "+1" }, { ResDpi, ClsDpi, XtRString, sizeof(char *), offset(dpi), XtRString, 0 }, { ResXQuartzHack, ClsXQuartzHack, XtRBoolean, sizeof(Boolean), offset(xquartz_hack), XtRString, "false" }, #if defined(USE_APP_DEFAULTS) /*[*/ { ResAdVersion, ClsAdVersion, XtRString, sizeof(char *), offset(ad_version), XtRString, 0 }, #endif /*]*/ { ResMono, ClsMono, XtRBoolean, sizeof(Boolean), boffset(interactive.mono), XtRString, ResFalse }, { ResMenuBar, ClsMenuBar, XtRBoolean, sizeof(Boolean), boffset(interactive.menubar), XtRString, ResTrue }, { ResVisualBell, ClsVisualBell, XtRBoolean, sizeof(Boolean), boffset(interactive.visual_bell), XtRString, ResFalse }, { ResOnce, ClsOnce, XtRBoolean, sizeof(Boolean), boffset(once), XtRString, ResFalse }, { ResScripted, ClsScripted, XtRBoolean, sizeof(Boolean), boffset(scripted), XtRString, ResFalse }, { ResModifiedSel, ClsModifiedSel, XtRBoolean, sizeof(Boolean), boffset(modified_sel), XtRString, ResFalse }, { ResUnlockDelay, ClsUnlockDelay, XtRBoolean, sizeof(Boolean), boffset(unlock_delay), XtRString, ResFalse }, { ResBindLimit, ClsBindLimit, XtRBoolean, sizeof(Boolean), boffset(bind_limit), XtRString, ResTrue }, { ResBindUnlock, ClsBindUnlock, XtRBoolean, sizeof(Boolean), boffset(bind_unlock), XtRString, ResFalse }, { ResNewEnviron, ClsNewEnviron, XtRBoolean, sizeof(Boolean), boffset(new_environ), XtRString, ResTrue }, { ResSocket, ClsSocket, XtRBoolean, sizeof(Boolean), boffset(socket), XtRString, ResFalse }, { ResReconnect, ClsReconnect, XtRBoolean, sizeof(Boolean), boffset(interactive.reconnect), XtRString, ResFalse }, { ResDoConfirms, ClsDoConfirms, XtRBoolean, sizeof(Boolean), boffset(interactive.do_confirms), XtRString, ResTrue }, { ResNumericLock, ClsNumericLock, XtRBoolean, sizeof(Boolean), boffset(numeric_lock), XtRString, ResFalse }, { ResSecure, ClsSecure, XtRBoolean, sizeof(Boolean), boffset(secure), XtRString, ResFalse }, { ResOerrLock, ClsOerrLock, XtRBoolean, sizeof(Boolean), boffset(oerr_lock), XtRString, ResTrue }, { ResDebugTracing, ClsDebugTracing, XtRBoolean, sizeof(Boolean), boffset(debug_tracing), XtRString, ResTrue }, { ResDisconnectClear, ClsDisconnectClear, XtRBoolean, sizeof(Boolean), boffset(disconnect_clear), XtRString, ResFalse }, { ResHighlightBold, ClsHighlightBold, XtRBoolean, sizeof(Boolean), boffset(highlight_bold), XtRString, ResFalse }, { ResBsdTm, ClsBsdTm, XtRBoolean, sizeof(Boolean), boffset(bsd_tm), XtRString, ResFalse }, { ResTraceMonitor, ClsTraceMonitor, XtRBoolean, sizeof(Boolean), boffset(trace_monitor), XtRString, ResTrue }, { ResIdleCommandEnabled, ClsIdleCommandEnabled, XtRBoolean, sizeof(Boolean), boffset(idle_command_enabled), XtRString, ResFalse }, { ResNvtMode, ClsNvtMode, XtRBoolean, sizeof(Boolean), boffset(nvt_mode), XtRString, ResFalse }, { ResScriptPortOnce, ClsScriptPortOnce, XtRBoolean, sizeof(Boolean), boffset(script_port_once), XtRString, ResFalse }, { ResUtf8, ClsUtf8, XtRBoolean, sizeof(Boolean), boffset(utf8), XtRString, ResFalse }, { ResMonoCase, ClsMonoCase, XtRBoolean, sizeof(Boolean), btoffset(MONOCASE), XtRString, ResFalse }, { ResAltCursor, ClsAltCursor, XtRBoolean, sizeof(Boolean), btoffset(ALT_CURSOR), XtRString, ResFalse }, { ResCursorBlink, ClsCursorBlink, XtRBoolean, sizeof(Boolean), btoffset(CURSOR_BLINK), XtRString, ResFalse }, { ResShowTiming, ClsShowTiming, XtRBoolean, sizeof(Boolean), btoffset(SHOW_TIMING), XtRString, ResFalse }, { ResTrace, ClsTrace, XtRBoolean, sizeof(Boolean), btoffset(TRACING), XtRString, ResFalse }, { ResScrollBar, ClsScrollBar, XtRBoolean, sizeof(Boolean), btoffset(SCROLL_BAR), XtRString, ResTrue }, { ResLineWrap, ClsLineWrap, XtRBoolean, sizeof(Boolean), btoffset(LINE_WRAP), XtRString, ResTrue }, { ResBlankFill, ClsBlankFill, XtRBoolean, sizeof(Boolean), btoffset(BLANK_FILL), XtRString, ResTrue }, { ResScreenTrace, ClsScreenTrace, XtRBoolean, sizeof(Boolean), btoffset(SCREEN_TRACE), XtRString, ResFalse }, { ResMarginedPaste, ClsMarginedPaste, XtRBoolean, sizeof(Boolean), btoffset(MARGINED_PASTE), XtRString, ResFalse }, { ResRectangleSelect, ClsRectangleSelect, XtRBoolean, sizeof(Boolean), btoffset(RECTANGLE_SELECT), XtRString, ResFalse }, { ResCrosshair, ClsCrosshair, XtRBoolean, sizeof(Boolean), btoffset(CROSSHAIR), XtRString, ResFalse }, { ResVisibleControl, ClsVisibleControl, XtRBoolean, sizeof(Boolean), btoffset(VISIBLE_CONTROL), XtRString, ResFalse }, { ResAidWait, ClsAidWait, XtRBoolean, sizeof(Boolean), btoffset(AID_WAIT), XtRString, ResTrue }, { ResOverlayPaste, ClsOverlayPaste, XtRBoolean, sizeof(Boolean), btoffset(OVERLAY_PASTE), XtRString, ResTrue }, { ResTypeahead, ClsTypeahead, XtRBoolean, sizeof(Boolean), btoffset(TYPEAHEAD), XtRString, ResTrue }, { ResAplMode, ClsAplMode, XtRBoolean, sizeof(Boolean), btoffset(APL_MODE), XtRString, ResFalse }, { ResAlwaysInsert, ClsAlwaysInsert, XtRBoolean, sizeof(Boolean), btoffset(ALWAYS_INSERT), XtRString, ResFalse }, { ResRightToLeftMode, ClsRightToLeftMode, XtRBoolean, sizeof(Boolean), btoffset(RIGHT_TO_LEFT), XtRString, ResFalse }, { ResReverseInputMode, ClsReverseInputMode, XtRBoolean, sizeof(Boolean), btoffset(REVERSE_INPUT), XtRString, ResFalse }, { ResInsertMode, ClsInsertMode, XtRBoolean, sizeof(Boolean), btoffset(INSERT_MODE), XtRString, ResFalse }, { ResSelectUrl, ClsSelectUrl, XtRBoolean, sizeof(Boolean), btoffset(SELECT_URL), XtRString, ResTrue }, { ResIcrnl, ClsIcrnl, XtRBoolean, sizeof(Boolean), boffset(linemode.icrnl), XtRString, ResTrue }, { ResInlcr, ClsInlcr, XtRBoolean, sizeof(Boolean), boffset(linemode.inlcr), XtRString, ResFalse }, { ResOnlcr, ClsOnlcr, XtRBoolean, sizeof(Boolean), boffset(linemode.onlcr), XtRString, ResTrue }, { ResStartTls, ClsStartTls, XtRBoolean, sizeof(Boolean), boffset(tls.starttls), XtRString, ResTrue }, { ResVerifyHostCert, ClsVerifyHostCert, XtRBoolean, sizeof(Boolean), boffset(tls.verify_host_cert), XtRString, ResTrue }, }; Cardinal num_xresources = XtNumber(xresources); suite3270-4.1/x3270/resourcesc.h000066400000000000000000000036041413735575200161530ustar00rootroot00000000000000/* * Copyright (c) 1993-2009, 2015 Paul Mattes. * Copyright (c) 1990, Jeff Sparkes. * Copyright (c) 1989, Georgia Tech Research Corporation (GTRC), Atlanta, * GA 30332. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the names of Paul Mattes, Jeff Sparkes, GTRC nor their * contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES, JEFF SPARKES AND GTRC "AS IS" * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL PAUL MATTES, JEFF SPARKES OR * GTRC BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, * OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * resourcesc.h * Public definitions for resources.c */ extern XtResource resources[]; extern Cardinal num_resources; extern XtResource xresources[]; extern Cardinal num_xresources; suite3270-4.1/x3270/save.c000066400000000000000000000503111413735575200147240ustar00rootroot00000000000000/* * Copyright (c) 1994-2009, 2013-2016, 2019 Paul Mattes. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of Paul Mattes nor his contributors may be used * to endorse or promote products derived from this software without * specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. */ /* * save.c * Implements the response to the WM_SAVE_YOURSELF message and * x3270 profiles. */ #include "globals.h" #include "xglobals.h" #include #include #include #include #include "appres.h" #include "resources.h" #include "codepage.h" #if !defined(USE_APP_DEFAULTS) /*[*/ # include "fallbacks.h" #endif /*]*/ #include "idle.h" #include "keymap.h" #include "lazya.h" #include "popups.h" #include "save.h" #include "screen.h" #include "toggles.h" #include "utils.h" #include "xappres.h" #include "xkeypad.h" #include "xsave.h" #include "xscreen.h" /* Support for WM_SAVE_YOURSELF. */ char *command_string = NULL; static char *cmd; static int cmd_len; #define NWORDS 1024 static char **tmp_cmd; static int tcs; static Status x_get_window_attributes(Window w, XWindowAttributes *wa); /* Search for an option in the tmp_cmd array. */ static int cmd_srch(const char *s) { int i; for (i = 1; i < tcs; i++) { if (tmp_cmd[i] && !strcmp(tmp_cmd[i], s)) { return i; } } return 0; } /* Replace an options in the tmp_cmd array. */ static void cmd_replace(int ix, const char *s) { XtFree(tmp_cmd[ix]); tmp_cmd[ix] = XtNewString(s); } /* Append an option to the tmp_cmd array. */ static void cmd_append(const char *s) { tmp_cmd[tcs++] = XtNewString(s); tmp_cmd[tcs] = (char *) NULL; } /* Delete an option from the tmp_cmd array. */ static void cmd_delete(int ix) { XtFree(tmp_cmd[ix]); tmp_cmd[ix] = (char *) NULL; } /* Save the screen geometry. */ static void save_xy(void) { char *tbuf; Window window, frame, child; XWindowAttributes wa; int x, y; int ix; window = XtWindow(toplevel); if (!x_get_window_attributes(window, &wa)) return; XTranslateCoordinates(display, window, wa.root, -wa.border_width, -wa.border_width, &x, &y, &child); frame = XtWindow(toplevel); while (true) { Window root, parent; Window *wchildren; unsigned int nchildren; int status = XQueryTree(display, frame, &root, &parent, &wchildren, &nchildren); if (status && wchildren) { XFree((char *)wchildren); } if (parent == root || !parent || !status) { break; } frame = parent; } if (frame != window) { if (!x_get_window_attributes(frame, &wa)) { return; } x = wa.x; y = wa.y; } tbuf = lazyaf("+%d+%d", x, y); if ((ix = cmd_srch("-geometry"))) { cmd_replace(ix + 1, tbuf); } else { cmd_append("-geometry"); cmd_append(tbuf); } } /* Save the icon information: state, label, geometry. */ static void save_icon(void) { unsigned char *data; int iconX, iconY; char *tbuf; int ix; unsigned long nitems; { Atom actual_type; int actual_format; unsigned long leftover; if (XGetWindowProperty(display, XtWindow(toplevel), a_state, 0L, 2L, False, a_state, &actual_type, &actual_format, &nitems, &leftover, &data) != Success) { return; } if (actual_type != a_state || actual_format != 32 || nitems < 1) { return; } } ix = cmd_srch("-iconic"); if (*(unsigned long *)data == IconicState) { if (!ix) { cmd_append("-iconic"); } } else { if (ix) { cmd_delete(ix); } } if (nitems < 2) { return; } { Window icon_window; XWindowAttributes wa; Window child; icon_window = *(Window *)(data + sizeof(unsigned long)); if (icon_window == None) { return; } if (!x_get_window_attributes(icon_window, &wa)) { return; } XTranslateCoordinates(display, icon_window, wa.root, -wa.border_width, -wa.border_width, &iconX, &iconY, &child); if (!iconX && !iconY) { return; } } tbuf = lazyaf("%d", iconX); ix = cmd_srch(OptIconX); if (ix) { cmd_replace(ix + 1, tbuf); } else { cmd_append(OptIconX); cmd_append(tbuf); } tbuf = lazyaf("%d", iconY); ix = cmd_srch(OptIconY); if (ix) { cmd_replace(ix + 1, tbuf); } else { cmd_append(OptIconY); cmd_append(tbuf); } return; } /* Save the keymap information. */ static void save_keymap(void) { /* Note: keymap propogation is deliberately disabled, because it may vary from workstation to workstation. The recommended way of specifying keymaps is through your .Xdefaults or the KEYMAP or KEYBD environment variables, which can be easily set in your .login or .profile to machine-specific values; the -keymap switch is really for debugging or testing keymaps. I'm sure I'll regret this. */ #if defined(notdef) /*[*/ if (current_keymap) { add_string(v, OptKeymap); add_string(v, current_keymap); } #endif /*]*/ } /* Save the model name. */ static void save_model(void) { int ix; if (!model_changed) { return; } if ((ix = cmd_srch(OptModel)) && strcmp(tmp_cmd[ix], model_name)) { cmd_replace(ix + 1, model_name); } else { cmd_append(OptModel); cmd_append(model_name); } } /* Save the emulator font. */ static void save_efont(void) { int ix; if (!efont_changed) { return; } if ((ix = cmd_srch(OptEmulatorFont)) && strcmp(tmp_cmd[ix], efontname)) { cmd_replace(ix + 1, efontname); } else { cmd_append(OptEmulatorFont); cmd_append(efontname); } } /* Save the keypad state. */ static void save_keypad(void) { int ix; ix = cmd_srch(OptKeypadOn); if (xappres.keypad_on || keypad_popped) { if (!ix) { cmd_append(OptKeypadOn); } } else { if (ix) { cmd_delete(ix); } } } /* Save the scrollbar state. */ static void save_scrollbar(void) { int i_on, i_off; if (!scrollbar_changed) { return; } i_on = cmd_srch(OptScrollBar); i_off = cmd_srch(OptNoScrollBar); if (toggled(SCROLL_BAR)) { if (!i_on) { if (i_off) { cmd_replace(i_off, OptScrollBar); } else { } cmd_append(OptScrollBar); } } else { if (!i_off) { if (i_on) { cmd_replace(i_on, OptNoScrollBar); } else { cmd_append(OptNoScrollBar); } } } } /* Save the name of the host we are connected to. */ static void save_host(void) { char *space; if (!CONNECTED) { return; } space = strchr(full_current_host, ' '); if (space == (char *) NULL) { cmd_append(full_current_host); } else { char *tmp = XtNewString(full_current_host); char *port; space = strchr(tmp, ' '); *space = '\0'; cmd_append(tmp); port = space + 1; while (*port == ' ') { port++; } if (*port) { cmd_append(port); } XtFree(tmp); } } /* Save the settings of each of the toggles. */ static void save_toggles(void) { toggle_index_t i; int j; int ix; for (i = 0; i < N_TOGGLES; i++) { toggle_index_t tix = toggle_names[i].index; if (!toggle_changed(tix)) { continue; } /* * Find the last "-set" or "-clear" for this toggle. * If there is a preferred alias, delete them instead. */ ix = 0; for (j = 1; j < tcs; j++) { if (tmp_cmd[j] && (!strcmp(tmp_cmd[j], OptSet) || !strcmp(tmp_cmd[j], OptClear)) && tmp_cmd[j+1] && !strcmp(tmp_cmd[j+1], toggle_names[i].name)) { if (toggle_names[i].is_alias) { cmd_delete(j); cmd_delete(j + 1); } else { ix = j; } } } /* Handle aliased switches. */ switch (tix) { case SCROLL_BAR: continue; /* +sb/-sb done separately */ case TRACING: ix = cmd_srch(OptTrace); if (toggled(TRACING)) { if (!ix) { cmd_append(OptTrace); } } else { if (ix) { cmd_delete(ix); } } continue; default: break; } /* If need be, switch "-set" with "-clear", or append one. */ if (toggled(tix)) { if (ix && strcmp(tmp_cmd[ix], OptSet)) { cmd_replace(ix, OptSet); } else if (!ix) { cmd_append(OptSet); cmd_append(toggle_names[i].name); } } else { if (ix && strcmp(tmp_cmd[ix], OptClear)) { cmd_replace(ix, OptClear); } else if (!ix) { cmd_append(OptClear); cmd_append(toggle_names[i].name); } } } } /* Remove a positional parameter from the command line. */ static void remove_positional(char *s) { char *c; c = cmd + cmd_len - 2; /* last byte of last arg */ while (*c && c >= cmd) { c--; } if (strcmp(s, c + 1)) { XtError("Command-line switches must precede positional arguments"); } cmd_len = c - cmd; } /* Save a copy of he XA_WM_COMMAND poperty. */ void save_init(int argc, char *hostname, char *port) { Atom actual_type; int actual_format; unsigned long nitems; unsigned long bytes_after; /* * Fetch the initial value of the XA_COMMAND property and store * it in 'cmd'. */ XGetWindowProperty(display, XtWindow(toplevel), XA_WM_COMMAND, 0L, 1000000L, False, XA_STRING, &actual_type, &actual_format, &nitems, &bytes_after, (unsigned char **)&cmd); if (nitems == 0) { XtError("Could not get initial XA_COMMAND property"); } cmd_len = nitems * (actual_format / 8); /* * Now locate the hostname and port positional arguments, and * remove them. If they aren't the last two components of the * command line, abort. */ switch (argc) { case 3: remove_positional(port); /* fall through */ case 2: remove_positional(hostname); break; } } /* Handle a WM_SAVE_YOURSELF ICCM. */ void save_yourself(void) { int i; char *c, *c2; int len; Replace(command_string, NULL); /* Copy the original command line into tmp_cmd. */ tmp_cmd = (char **) XtMalloc(sizeof(char *) * NWORDS); tcs = 0; i = 0; c = cmd; while (i < cmd_len) { c = cmd + i; tmp_cmd[tcs++] = XtNewString(c); i += strlen(c); i++; } tmp_cmd[tcs] = (char *) NULL; /* Replace the first element with the program name. */ cmd_replace(0, programname); /* Save options. */ save_xy(); save_icon(); save_keymap(); save_model(); save_efont(); save_keypad(); save_scrollbar(); save_toggles(); save_host(); /* Copy what's left into contiguous memory. */ len = 0; for (i = 0; i < tcs; i++) { if (tmp_cmd[i]) { len += strlen(tmp_cmd[i]) + 1; } } c = XtMalloc(len); c[0] = '\0'; c2 = c; for (i = 0; i < tcs; i++) { if (tmp_cmd[i]) { strcpy(c2, tmp_cmd[i]); c2 += strlen(c2) + 1; XtFree(tmp_cmd[i]); } } Free(tmp_cmd); /* Change the property. */ XChangeProperty(display, XtWindow(toplevel), XA_WM_COMMAND, XA_STRING, 8, PropModeReplace, (unsigned char *)c, len); /* Save a readable copy of the command string for posterity. */ command_string = c; while (((c2 = strchr(c, '\0')) != NULL) && (c2 - command_string < len-1)) { *c2 = ' '; c = c2 + 1; } } /* Support for x3270 profiles. */ #define PROFILE_ENV "X3270PRO" #define NO_PROFILE_ENV "NOX3270PRO" #define RDB_ENV "X3270RDB" #define DEFAULT_PROFILE "~/.x3270pro" char *profile_name = NULL; static char *xcmd; static int xargc; static char **xargv; typedef struct scs { struct scs *next; char *name; } scs_t; scs_t *cc_list = NULL; void charset_list_changed(char *charset) { scs_t *c; for (c = cc_list; c != NULL; c = c->next) { if (!strcasecmp(c->name, charset)) { return; } } c = (scs_t *)Malloc(sizeof(scs_t)); c->name = NewString(charset); c->next = cc_list; cc_list = c; } /* Save one option in the file. */ static void save_opt(FILE *f, const char *full_name, const char *opt_name, const char *res_name, const char *value) { fprintf(f, "! %s ", full_name); if (opt_name != NULL) { fprintf(f, " (%s)", opt_name); } fprintf(f, "\n%s.%s: %s\n", XtName(toplevel), res_name, value); } /* Save the current options settings in a profile. */ bool save_options(char *n) { FILE *f; bool exists = false; char *ct; toggle_index_t i; time_t clk; char *buf; bool any_toggles = false; if (n == NULL || *n == '\0') { return false; } /* Open the file. */ n = do_subst(n, DS_VARS | DS_TILDE); f = fopen(n, "r"); if (f != NULL) { fclose(f); exists = true; } f = fopen(n, "a"); if (f == NULL) { popup_an_errno(errno, "Cannot open %s", n); XtFree(n); return false; } /* Save the name. */ Replace(profile_name, n); /* Print the header. */ clk = time((time_t *)0); ct = ctime(&clk); if (ct[strlen(ct)-1] == '\n') { ct[strlen(ct)-1] = '\0'; } if (exists) { fprintf(f, "! File updated %s by %s\n", ct, build); } else { fprintf(f, "! x3270 profile\n\ ! File created %s by %s\n\ ! This file overrides xrdb and .Xdefaults.\n\ ! To skip reading this file, set %s in the environment.\n\ !\n", ct, build, NO_PROFILE_ENV); } /* Save most of the toggles. */ for (i = 0; toggle_names[i].name; i++) { toggle_index_t tix = toggle_names[i].index; if (toggle_names[i].is_alias || !toggle_changed(tix)) { continue; } if (!any_toggles) { fprintf(f, "! toggles (%s, %s)\n", OptSet, OptClear); any_toggles = true; } fprintf(f, "%s.%s: %s\n", XtName(toplevel), toggle_names[i].name, toggled(tix)? ResTrue: ResFalse); } /* Save the keypad state. */ if (keypad_changed) { save_opt(f, "keypad state", OptKeypadOn, ResKeypadOn, (xappres.keypad_on || keypad_popped)? ResTrue: ResFalse); } /* Save other menu-changeable options. */ if (efont_changed) { save_opt(f, "emulator font", OptEmulatorFont, ResEmulatorFont, efontname); } if (model_changed) { buf = xs_buffer("%d", model_num); save_opt(f, "model", OptModel, ResModel, buf); Free(buf); } if (oversize_changed) { buf = xs_buffer("%dx%d", ov_cols, ov_rows); save_opt(f, "oversize", OptOversize, ResOversize, buf); Free(buf); } if (scheme_changed && xappres.color_scheme != NULL) { save_opt(f, "color scheme", OptColorScheme, ResColorScheme, xappres.color_scheme); } if (keymap_changed && current_keymap != NULL) { save_opt(f, "keymap", OptKeymap, ResKeymap, current_keymap); } if (codepage_changed) { save_opt(f, "codepage", OptCodePage, ResCodePage, get_codepage_name()); } if (idle_changed) { save_opt(f, "idle command", NULL, ResIdleCommand, idle_command); save_opt(f, "idle timeout", NULL, ResIdleTimeout, idle_timeout_string); save_opt(f, "idle enabled", NULL, ResIdleCommandEnabled, (idle_user_enabled == IDLE_PERM)? ResTrue: ResFalse); } /* Done. */ fclose(f); return true; } /* Save a copy of the command-line options. */ void save_args(int argc, char *argv[]) { int i; int len = 0; for (i = 0; i < argc; i++) { len += strlen(argv[i]) + 1; } xcmd = XtMalloc(len + 1); xargv = (char **)XtMalloc((argc + 1) * sizeof(char *)); len = 0; for (i = 0; i < argc; i++) { xargv[i] = xcmd + len; strcpy(xcmd + len, argv[i]); len += strlen(argv[i]) + 1; } xargv[i] = NULL; *(xcmd + len) = '\0'; xargc = argc; } #if !defined(USE_APP_DEFAULTS) /*[*/ #define DEF_NAME "x3270" #define NLEN (sizeof(DEF_NAME) - 1) #define DOT_NAME DEF_NAME "." #define STAR_NAME DEF_NAME "*" /* Substitute an alternate name in the fallback resource definitions. */ static char * subst_name(unsigned char *fallbacks) { char *tlname; char *s, *t; bool eol = true; int nname = 0; size_t nlen; int flen; char *new_fallbacks; /* If the name is the same, do nothing. */ if (!strcmp((tlname = XtName(toplevel)), DEF_NAME)) { return (char *)fallbacks; } /* Count the number of instances of "x3270" in the fallbacks. */ s = (char *)fallbacks; while (*s) { if (eol && (!strncmp(s, DOT_NAME, NLEN + 1) || !strncmp(s, STAR_NAME, NLEN + 1))) { nname++; s += NLEN; eol = false; } else if (*s == '\n') { eol = true; } else { eol = false; } s++; } if (!nname) { return (char *)fallbacks; } /* Allocate a buffer to do the substitution into. */ if ((nlen = strlen(tlname)) > NLEN) { flen = strlen((char *)fallbacks) + ((nlen - NLEN) * nname) + 1; } else { flen = strlen((char *)fallbacks) - ((NLEN - nlen) * nname) + 1; } new_fallbacks = Malloc(flen); /* Substitute. */ s = (char *)fallbacks; t = new_fallbacks; while (*s) { if (eol && (!strncmp(s, DOT_NAME, NLEN + 1) || !strncmp(s, STAR_NAME, NLEN + 1))) { strcpy(t, tlname); t += nlen; s += NLEN; eol = false; } else if (*s == '\n') { eol = true; } else { eol = false; } *t++ = *s++; } *t = '\0'; return new_fallbacks; } #endif /*]*/ /* Merge in the options settings from a profile. */ void merge_profile(XrmDatabase *d, char *session, bool mono) { const char *fname; char *env_resources; XrmDatabase dd; #if !defined(USE_APP_DEFAULTS) /*[*/ /* Start with the fallbacks. */ dd = XrmGetStringDatabase(subst_name(common_fallbacks)); if (dd == NULL) { XtError("Can't parse common fallbacks"); } XrmMergeDatabases(dd, d); dd = XrmGetStringDatabase(subst_name(mono? mono_fallbacks: color_fallbacks)); if (dd == NULL) { XtError("Can't parse mono/color fallbacks"); } XrmMergeDatabases(dd, d); #endif /*]*/ if (session == NULL && getenv(NO_PROFILE_ENV) != NULL) { profile_name = do_subst(DEFAULT_PROFILE, DS_VARS | DS_TILDE); } else { /* Open the file. */ if (session != NULL) { fname = session; } else { fname = getenv(PROFILE_ENV); } if (fname == NULL || *fname == '\0') { fname = DEFAULT_PROFILE; } profile_name = do_subst(fname, DS_VARS | DS_TILDE); /* Create a resource database from the file. */ dd = XrmGetFileDatabase(profile_name); if (dd != NULL) { /* Merge in the profile options. */ XrmMergeDatabases(dd, d); } else if (session != NULL) { Error("Session file not found"); } } /* See if there are any environment resources. */ env_resources = getenv(RDB_ENV); if (env_resources != NULL) { dd = XrmGetStringDatabase(env_resources); if (dd != NULL) { XrmMergeDatabases(dd, d); } } /* Merge the saved command-line options back on top of those. */ dd = NULL; XrmParseCommand(&dd, options, num_options, programname, &xargc, xargv); XrmMergeDatabases(dd, d); /* Free the saved command-line options. */ XtFree(xcmd); xcmd = NULL; Replace(xargv, NULL); } bool read_resource_file(const char *filename, bool fatal) { XrmDatabase dd, rdb; dd = XrmGetFileDatabase(filename); if (dd == NULL) { return false; } rdb = XtDatabase(display); XrmMergeDatabases(dd, &rdb); return true; } /* * Safe routine for querying window attributes */ static int dummy_error_handler(Display *d _is_unused, XErrorEvent *e _is_unused) { return 0; } static Status x_get_window_attributes(Window w, XWindowAttributes *wa) { XErrorHandler old_handler; Status s; old_handler = XSetErrorHandler(dummy_error_handler); s = XGetWindowAttributes(display, w, wa); if (!s) { fprintf(stderr, "Error: querying bad window 0x%lx\n", w); } XSetErrorHandler(old_handler); return s; } suite3270-4.1/x3270/screen.c000066400000000000000000004564061413735575200152640ustar00rootroot00000000000000/* * Copyright (c) 1993-2016, 2018-2021 Paul Mattes. * Copyright (c) 1990, Jeff Sparkes. * Copyright (c) 1989, Georgia Tech Research Corporation (GTRC), Atlanta, * GA 30332. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the names of Paul Mattes, Jeff Sparkes, GTRC nor their * contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES, JEFF SPARKES AND GTRC "AS IS" * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL PAUL MATTES, JEFF SPARKES OR * GTRC BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, * OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * screen.c * This module handles the X display. It has been extensively * optimized to minimize X drawing operations. */ #include "globals.h" #include "xglobals.h" #include #include #include #include #include #include #include #include #include #include "Husk.h" #include #include #include #include #include #include "3270ds.h" #include "appres.h" #include "screen.h" #include "ctlr.h" #include "cg.h" #include "resources.h" #include "toggles.h" #include "actions.h" #include "codepage.h" #include "ctlrc.h" #include "display8.h" #include "display_charsets.h" #include "display_charsets_dbcs.h" #include "host.h" #include "keymap.h" #include "kybd.h" #include "lazya.h" #include "names.h" #include "nvt.h" #include "popups.h" #include "save.h" #include "screen.h" #include "scroll.h" #include "see.h" #include "status.h" #include "tables.h" #include "telnet.h" #include "toupper.h" #include "trace.h" #include "unicodec.h" #include "unicode_dbcs.h" #include "utils.h" #include "vstatus.h" #include "xactions.h" #include "xappres.h" #include "xio.h" #include "xkeypad.h" #include "xmenubar.h" #include "xsave.h" #include "xscreen.h" #include "xscroll.h" #include "xstatus.h" #include "xpopups.h" #include "xtables.h" #if defined(HAVE_SYS_SELECT_H) /*[*/ #include /* fd_set declaration */ #endif /*]*/ #include "x3270.bm" #include "wait.bm" #define SCROLLBAR_WIDTH 15 #define NO_BANG(s) (((s)[0] == '!')? (s)+1: (s)) #if !defined(NBBY) /*[*/ #define NBBY 8 #endif /*]*/ #define BPW (NBBY * sizeof(unsigned long)) #define MAX_FONTS 50000 #define SELECTED(baddr) (selected[(baddr)/8] & (1 << ((baddr)%8))) #define SET_SELECT(baddr) (selected[(baddr)/8] |= (1 << ((baddr)%8))) /* Globals */ Dimension main_width; /* desired toplevel width */ bool scrollbar_changed = false; bool model_changed = false; bool efont_changed = false; bool oversize_changed = false; bool scheme_changed = false; Pixel keypadbg_pixel; bool flipped = false; Pixmap x3270_icon; bool shifted = false; struct font_list *font_list = (struct font_list *) NULL; int font_count = 0; char *efontname; char *efont_charset; char *efont_charset_dbcs; bool efont_matches = true; char *full_efontname; char *full_efontname_dbcs; bool visible_control = false; unsigned fixed_width, fixed_height; bool user_resize_allowed = true; int hhalo, vhalo; int dpi = 96; int dpi_scale = 100; bool dpi_override = false; #define gray_width 2 #define gray_height 2 static char gray_bits[] = { 0x01, 0x02 }; /* Statics */ static unsigned char *selected; /* selection bitmap */ static bool allow_resize; static Dimension main_height; /* desired toplevel width */ static struct sp *temp_image; /* temporary for X display */ static Pixel colorbg_pixel; static bool crosshair_enabled = true; static bool cursor_displayed = false; static bool lower_crosshair_displayed = false; static bool cursor_enabled = true; static bool cursor_blink_pending = false; static XtIntervalId cursor_blink_id; static int field_colors[4]; static bool in_focus = false; static bool line_changed = false; static bool cursor_changed = false; static bool iconic = false; static bool maximized = false; static Widget container; static Widget scrollbar; static Dimension menubar_height; static Dimension container_width; static Dimension cwidth_nkp; /* container width, without integral keypad */ static Dimension container_height; static Dimension scrollbar_width; static char *aicon_text = NULL; static XFontStruct *ailabel_font; static Dimension aicon_label_height = 0; static GC ailabel_gc; static Pixel cpx[16]; static bool cpx_done[16]; static Pixel normal_pixel; static Pixel select_pixel; static Pixel bold_pixel; static Pixel selbg_pixel; static Pixel cursor_pixel; static bool text_blinking_on = true; static bool text_blinkers_exist = false; static bool text_blink_scheduled = false; static XtIntervalId text_blink_id; static XtTranslations screen_t00 = NULL; static XtTranslations screen_t0 = NULL; static XtTranslations container_t00 = NULL; static XtTranslations container_t0 = NULL; static XChar2b *rt_buf = (XChar2b *) NULL; static char *color_name[16] = { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL }; static bool configure_ticking = false; static XtIntervalId configure_id; static bool highlight_bold = false; static Pixmap inv_icon; static Pixmap wait_icon; static Pixmap inv_wait_icon; static bool icon_inverted = false; static Widget icon_shell; static struct font_list *font_last = (struct font_list *) NULL; static struct { Font font; XFontStruct *font_struct; bool unicode; int char_height; int char_width; int ascent; int descent; int xtra_width; int d16_ix; } dbcs_font; static void xim_init(void); XIM im; XIC ic; bool xim_error = false; char *locale_name = NULL; int ovs_offset = 1; typedef struct { XIMStyle style; char *description; } im_style_t; static XIMStyle style; char ic_focus; static void send_spot_loc(void); /* Globals for undoing reconfigurations. */ static enum { REDO_NONE, REDO_FONT, REDO_MODEL, REDO_KEYPAD, REDO_SCROLLBAR, REDO_RESIZE } screen_redo = REDO_NONE; static char *redo_old_font = NULL; static int redo_old_model; static int redo_old_ov_cols; static int redo_old_ov_rows; static unsigned char blank_map[32]; #define BKM_SET(n) blank_map[(n)/8] |= 1 << ((n)%8) #define BKM_ISSET(n) ((blank_map[(n)/8] & (1 << ((n)%8))) != 0) enum fallback_color { FB_WHITE, FB_BLACK }; static enum fallback_color ibm_fb = FB_WHITE; static char *default_display_charset = "3270cg-1a,3270cg-1,iso8859-1"; static char *required_display_charsets; static int crosshair_color = HOST_COLOR_PURPLE; #define CROSSABLE (toggled(CROSSHAIR) && cursor_enabled && \ crosshair_enabled && in_focus) #define CROSSED(b) ((BA_TO_COL(b) == cursor_col) || \ (BA_TO_ROW(b) == cursor_row)) #define CROSS_COLOR (mode.m3279? (GC_NONDEFAULT | crosshair_color) : FA_INT_NORM_NSEL) /* * The screen state structure. This structure is swapped whenever we switch * between normal and active-iconic states. */ #define NGCS 16 struct sstate { Widget widget; /* the widget */ Window window; /* the window */ struct sp *image; /* what's on the X display */ int cursor_daddr; /* displayed cursor address */ bool xh_alt; /* crosshair was drawn in alt area */ bool exposed_yet; /* have we been exposed yet? */ bool overstrike; /* are we overstriking? */ Dimension screen_width; /* screen dimensions in pixels */ Dimension screen_height; GC gc[NGCS * 2], /* standard, inverted GCs */ selgc[NGCS], /* color selected text GCs */ mcgc, /* monochrome block cursor GC */ ucgc, /* unique-cursor-color cursor GC */ invucgc, /* inverse ucgc */ clrselgc; /* selected clearing GC */ int char_height; int char_width; Font fid; XFontStruct *font; int ascent; int descent; int xtra_width; bool standard_font; bool extended_3270font; bool full_apl_font; bool font_8bit; bool font_16bit; bool funky_font; bool obscured; bool copied; bool unicode_font; int d8_ix; unsigned long odd_width[256 / BPW]; unsigned long odd_lbearing[256 / BPW]; XChar2b *hx_text; int nhx_text; }; static struct sstate nss; static struct sstate iss; static struct sstate *ss = &nss; #define INIT_ODD(odd) memset(odd, '\0', sizeof(odd)) #define SET_ODD(odd, n) (odd)[(n) / BPW] |= 1 << ((n) % BPW) #define IS_ODD(odd, n) ((odd)[(n) / BPW] & 1 << ((n) % BPW)) #define DEFAULT_CHAR(f) (((f)->default_char >= (f)->min_char_or_byte2 && \ (f)->default_char <= (f)->max_char_or_byte2)? \ (f)->default_char: 32) #define WHICH_CHAR(f, n) (((n) < (f)->min_char_or_byte2 || \ (n) > (f)->max_char_or_byte2)? \ DEFAULT_CHAR(f) : (n)) #define PER_CHAR(f, n) ((f)->per_char[WHICH_CHAR(f, n) - (f)->min_char_or_byte2]) /* Globals based on nss, used mostly by status and select routines. */ Widget *screen = &nss.widget; Window *screen_window = &nss.window; int *char_width = &nss.char_width; int *char_height = &nss.char_height; int *ascent = &nss.ascent; int *descent = &nss.descent; bool *standard_font = &nss.standard_font; bool *font_8bit = &nss.font_8bit; bool *font_16bit = &nss.font_16bit; bool *extended_3270font = &nss.extended_3270font; bool *full_apl_font = &nss.full_apl_font; bool *funky_font = &nss.funky_font; int *xtra_width = &nss.xtra_width; Font *fid = &nss.fid; Dimension *screen_height = &nss.screen_height; /* Mouse-cursor state */ enum mcursor_state { LOCKED, NORMAL, WAIT }; static enum mcursor_state mcursor_state = LOCKED; static enum mcursor_state icon_cstate = NORMAL; /* Dumb font cache. */ typedef struct dfc { struct dfc *next; char *name; char *weight; int points; char *spacing; char *charset; bool good; } dfc_t; static void aicon_init(void); static void aicon_reinit(unsigned cmask); static void screen_focus(bool in); static void make_gc_set(struct sstate *s, int i, Pixel fg, Pixel bg); static void make_gcs(struct sstate *s); static void put_cursor(int baddr, bool on); static void resync_display(struct sp *buffer, int first, int last); static void draw_fields(struct sp *buffer, int first, int last); static void render_text(struct sp *buffer, int baddr, int len, bool block_cursor, struct sp *attrs); static void cursor_on(const char *why); static void schedule_cursor_blink(void); static void schedule_text_blink(void); static void inflate_screen(void); static int fa_color(unsigned char fa); static void redraw_lower_crosshair(void); static bool cursor_off(const char *why, bool including_lower_crosshair, bool *xwo); static void draw_aicon_label(void); static void set_mcursor(void); static void scrollbar_init(bool is_reset); static void init_rsfonts(char *charset_name); static void allocate_pixels(void); static int fl_baddr(int baddr); static GC get_gc(struct sstate *s, int color); static GC get_selgc(struct sstate *s, int color); static void default_color_scheme(void); static bool xfer_color_scheme(char *cs, bool do_popup); static void set_font_globals(XFontStruct *f, const char *ef, const char *fef, Font ff, bool is_dbcs); static void screen_connect(bool ignored); static void configure_stable(XtPointer closure, XtIntervalId *id); static void cancel_blink(void); static void render_blanks(int baddr, int height, struct sp *buffer); static void resync_text(int baddr, int len, struct sp *buffer); static void screen_reinit(unsigned cmask); static void aicon_font_init(void); static void aicon_size(Dimension *iw, Dimension *ih); static void invert_icon(bool inverted); static char *lff_single(const char *name, const char *reqd_display_charset, bool is_dbcs); static char *load_fixed_font(const char *names, const char *reqd_charsets); static void lock_icon(enum mcursor_state state); static char *expand_cslist(const char *s); static void hollow_cursor(int baddr); static void xlate_dbcs(unsigned char, unsigned char, XChar2b *); static void xlate_dbcs_unicode(ucs4_t, XChar2b *); static void dfc_init(void); static const char *dfc_search_family(const char *charset, dfc_t **dfc, void **cookie); static action_t SetFont_action; static action_t Title_action; static action_t WindowState_action; static XChar2b apl_to_udisplay(int d8_ix, unsigned char c); static XChar2b apl_to_ldisplay(unsigned char c); /* Resize font list. */ struct rsfont { struct rsfont *next; char *name; int width; int height; int descent; int total_width; /* transient */ int total_height; /* transient */ int area; /* transient */ }; static struct rsfont *rsfonts; #define BASE_MASK 0x0f /* mask for 16 actual colors */ #define INVERT_MASK 0x10 /* toggle for inverted colors */ #define GC_NONDEFAULT 0x20 /* distinguishes "color 0" from zeroed memory */ #define COLOR_MASK (GC_NONDEFAULT | BASE_MASK) #define INVERT_COLOR(c) ((c) ^ INVERT_MASK) #define NO_INVERT(c) ((c) & ~INVERT_MASK) #define DEFAULT_PIXEL (mode.m3279 ? HOST_COLOR_BLUE : FA_INT_NORM_NSEL) #define PIXEL_INDEX(c) ((c) & BASE_MASK) /* * Rescale a dimension according to the DPI settings. */ Dimension rescale(Dimension d) { return (d * dpi_scale) / 100; } /* * Save 00 event translations. */ void save_00translations(Widget w, XtTranslations *t00) { *t00 = w->core.tm.translations; } /* * Define our event translations */ void set_translations(Widget w, XtTranslations *t00, XtTranslations *t0) { struct trans_list *t; if (t00 != NULL) XtOverrideTranslations(w, *t00); for (t = trans_list; t != NULL; t = t->next) XtOverrideTranslations(w, lookup_tt(t->name, NULL)); *t0 = w->core.tm.translations; } /* * Add or clear a temporary keymap. */ void screen_set_temp_keymap(XtTranslations trans) { if (trans != NULL) { XtOverrideTranslations(nss.widget, trans); XtOverrideTranslations(container, trans); } else { XtUninstallTranslations(nss.widget); XtOverrideTranslations(nss.widget, screen_t0); XtUninstallTranslations(container); XtOverrideTranslations(container, container_t0); } } /* * Change the baselevel keymap. */ void screen_set_keymap(void) { XtUninstallTranslations(nss.widget); set_translations(nss.widget, &screen_t00, &screen_t0); XtUninstallTranslations(container); set_translations(container, &container_t00, &container_t0); } /* * Crosshair color init. */ static void crosshair_color_init(void) { int c = decode_host_color(appres.interactive.crosshair_color); if (c >= 0) { crosshair_color = c; } else { xs_warning("Invalid %s: %s", ResCrosshairColor, appres.interactive.crosshair_color); crosshair_color = HOST_COLOR_PURPLE; } } /* * Screen pre-initialization (before charset init). */ void screen_preinit(void) { dfc_init(); } /* * Clear fixed_width and fixed_height. */ static void clear_fixed(void) { if (!maximized && user_resize_allowed && (fixed_width || fixed_height)) { vtrace("clearing fixed_width and fixed_height\n"); fixed_width = 0; fixed_height = 0; } } /* * Get the DPI of the display. */ static void dpi_init(void) { int rdpi = 0; char *res_dpi; char *type; XrmValue value; res_dpi = xappres.dpi; if (res_dpi != NULL) { rdpi = atoi(res_dpi); } else if (XrmGetResource(rdb, "Xft.dpi", "Xft.dpi", &type, &value) == True && !strcmp(type, "String")) { rdpi = atoi(value.addr); } if (rdpi > 0) { dpi = rdpi; dpi_scale = (dpi * 100) / 96; dpi_override = true; } #if defined(DPI_DEBUG) /*[*/ printf("display dpi %d -> scale %d (%s)\n", dpi, dpi_scale, dpi_override? "override": "default"); #endif /*]*/ hhalo = HHALO; vhalo = VHALO; } /* * Initialize the screen. */ void screen_init(void) { int i; dpi_init(); visible_control = toggled(VISIBLE_CONTROL); /* Parse the fixed window size, if there is any. */ if (xappres.fixed_size) { char c; if (sscanf(xappres.fixed_size, "%ux%u%c", &fixed_width, &fixed_height, &c) != 2 || !fixed_width || !fixed_height) { popup_an_error("Invalid fixed size"); clear_fixed(); } else { /* Success. Don't allow user resize operations. */ user_resize_allowed = false; } } menubar_snap_enable(user_resize_allowed); /* Initialize ss. */ nss.cursor_daddr = 0; nss.xh_alt = false; nss.exposed_yet = false; /* Initialize "gray" bitmap. */ if (appres.interactive.mono) { gray = XCreatePixmapFromBitmapData(display, root_window, (char *)gray_bits, gray_width, gray_height, xappres.foreground, xappres.background, screen_depth); } /* Initialize the blank map. */ memset((char *)blank_map, '\0', sizeof(blank_map)); for (i = 0; i < 256; i++) { if (ebc2asc0[i] == 0x20 || ebc2asc0[i] == 0xa0) { BKM_SET(i); } } /* Initialize the emulated 3270 controller hardware. */ ctlr_init(ALL_CHANGE); /* Initialize the actve icon. */ aicon_init(); /* Initialize the status line. */ status_init(); /* Initialize the placement of the pop-up keypad. */ keypad_placement_init(); /* Initialize the crosshair color. */ crosshair_color_init(); /* Now call the "reinitialize" function to set everything else up. */ screen_reinit(ALL_CHANGE); } /* * Re-initialize the screen. */ static void screen_reinit(unsigned cmask) { Dimension cwidth_curr; /* Allocate colors. */ if (cmask & COLOR_CHANGE) { if (mode.m3279) { default_color_scheme(); xfer_color_scheme(xappres.color_scheme, false); } allocate_pixels(); /* * In color mode, set highlight_bold from the resource. * In monochrome, set it unconditionally. */ if (mode.m3279) { highlight_bold = appres.highlight_bold; } else { highlight_bold = true; } } /* Define graphics contexts. */ if (cmask & (FONT_CHANGE | COLOR_CHANGE)) { make_gcs(&nss); } /* Undo the horizonal crosshair buffers. */ if (cmask & FONT_CHANGE) { if (nss.hx_text != NULL) { Replace(nss.hx_text, NULL); nss.nhx_text = 0; } } /* Reinitialize the controller. */ ctlr_reinit(cmask); /* Allocate buffers. */ if (cmask & MODEL_CHANGE) { /* Selection bitmap */ Replace(selected, (unsigned char *)XtCalloc(sizeof(unsigned char), (maxROWS * maxCOLS + 7) / 8)); /* X display image */ Replace(nss.image, (struct sp *)XtCalloc(sizeof(struct sp), maxROWS * maxCOLS)); Replace(temp_image, (struct sp *)XtCalloc(sizeof(struct sp), maxROWS*maxCOLS)); /* render_text buffers */ Replace(rt_buf, (XChar2b *)XtMalloc(maxCOLS * sizeof(XChar2b))); } else { memset((char *) nss.image, 0, sizeof(struct sp) * maxROWS * maxCOLS); } /* Compute SBCS/DBCS size differences. */ if ((cmask & FONT_CHANGE) && dbcs) { int wdiff, adiff, ddiff; char *xs; int xx; #if defined(_ST) /*[*/ printf("nss ascent %d descent %d\n" "dbcs ascent %d descent %d\n", nss.ascent, nss.descent, dbcs_font.ascent, dbcs_font.descent); #endif /*]*/ /* Compute width difference. */ wdiff = (2 * nss.char_width) - dbcs_font.char_width; if (wdiff > 0) { /* SBCS font is too wide */ dbcs_font.xtra_width = wdiff; #if defined(_ST) /*[*/ printf("SBCS wider %d\n", wdiff); #endif /*]*/ } else if (wdiff < 0) { /* SBCS font is too narrow */ if (wdiff % 2) { nss.xtra_width = (-wdiff)/2 + 1; dbcs_font.xtra_width = 1; #if defined(_ST) /*[*/ printf("SBCS odd\n"); #endif /*]*/ } else { nss.xtra_width = (-wdiff)/2; } #if defined(_ST) /*[*/ printf("DBCS wider %d\n", -wdiff); #endif /*]*/ } else { dbcs_font.xtra_width = nss.xtra_width = 0; #if defined(_ST) /*[*/ printf("Width matches.\n"); #endif /*]*/ } /* Add some extra on top of that. */ if ((xs = getenv("X3270_XWIDTH")) != NULL) { xx = atoi(xs); if (xx && xx < 10) { nss.xtra_width += xx; dbcs_font.xtra_width += 2*xx; } } nss.char_width += nss.xtra_width; dbcs_font.char_width += dbcs_font.xtra_width; /* * Compute height difference, doing ascent and descent * separately. */ adiff = nss.ascent - dbcs_font.ascent; if (adiff > 0) { #if defined(_ST) /*[*/ printf("SBCS higher by %d\n", adiff); #endif /*]*/ dbcs_font.ascent += adiff; dbcs_font.char_height += adiff; } else if (adiff < 0) { #if defined(_ST) /*[*/ printf("DBCS higher by %d\n", -adiff); #endif /*]*/ nss.ascent += -adiff; nss.char_height += -adiff; } else { #if defined(_ST) /*[*/ printf("Ascent matches\n"); #endif /*]*/ } ddiff = nss.descent - dbcs_font.descent; if (ddiff > 0) { #if defined(_ST) /*[*/ printf("SBCS lower by %d\n", ddiff); #endif /*]*/ dbcs_font.descent += ddiff; dbcs_font.char_height += ddiff; } else if (ddiff < 0) { #if defined(_ST) /*[*/ printf("DBCS lower by %d\n", -ddiff); #endif /*]*/ nss.descent += -ddiff; nss.char_height += -ddiff; } else { #if defined(_ST) /*[*/ printf("Descent matches\n"); #endif /*]*/ } /* Add a constant to the height. */ if ((xs = getenv("X3270_XHEIGHT")) != NULL) { xx = atoi(xs); if (xx && xx < 10) { dbcs_font.descent += xx; nss.descent += xx; nss.char_height += xx; } } } /* Set up a container for the menubar, screen and keypad */ if (toggled(SCROLL_BAR)) { scrollbar_width = rescale(SCROLLBAR_WIDTH); } else { scrollbar_width = 0; } if (cmask & (FONT_CHANGE | MODEL_CHANGE | SCROLL_CHANGE)) { Dimension sw; bool h_clip = false; if (fixed_width) { Dimension w, h; /* Compute the horizontal halo. */ w = SCREEN_WIDTH(ss->char_width, 0)+2 + scrollbar_width; if (w > fixed_width) { vtrace("Screen is too wide for fixed width, will clip\n"); hhalo = HHALO; h_clip = true; } else { /* Set the horizontal halo to center the screen. */ hhalo = (fixed_width - w) / 2; } /* Compute the vertical halo. */ h = menubar_qheight(fixed_width) + SCREEN_HEIGHT(ss->char_height, ss->descent, 0)+2; if (kp_placement == kp_integral && xappres.keypad_on) { /* * If the integral keypad is on, the fixed height includes it. */ h += keypad_qheight(); } if (h > fixed_height) { vtrace("Screen is too tall for fixed height, will clip\n"); vhalo = VHALO; } else { /* * Center the screen, sort of. * '3' is a magic number here -- the vertical halo is used once * above the screen and twice below. That should change. */ vhalo = (fixed_height - h) / 3; } } else { vhalo = VHALO; hhalo = HHALO; } /* Increase the horizontal halo to hold the integral keypad. */ sw = SCREEN_WIDTH(ss->char_width, hhalo)+2 + scrollbar_width; if (!h_clip && (!fixed_width || (min_keypad_width() < fixed_width)) && user_resize_allowed && kp_placement == kp_integral && xappres.keypad_on && min_keypad_width() > sw) { hhalo = (min_keypad_width() - (SCREEN_WIDTH(ss->char_width, 0)+2 + scrollbar_width)) / 2; } nss.screen_width = SCREEN_WIDTH(ss->char_width, hhalo); nss.screen_height = SCREEN_HEIGHT(ss->char_height, ss->descent, vhalo); } if (fixed_width) { container_width = fixed_width; } else { container_width = nss.screen_width+2 + scrollbar_width; } cwidth_nkp = container_width; if (container == NULL) { container = XtVaCreateManagedWidget( "container", huskWidgetClass, toplevel, XtNborderWidth, 0, XtNwidth, container_width, XtNheight, 10, /* XXX -- a temporary lie to make Xt happy */ NULL); save_00translations(container, &container_t00); set_translations(container, NULL, &container_t0); if (appres.interactive.mono) { XtVaSetValues(container, XtNbackgroundPixmap, gray, NULL); } } /* Initialize the menu bar and integral keypad */ cwidth_curr = xappres.keypad_on? container_width: cwidth_nkp; menubar_height = menubar_qheight(cwidth_curr); menubar_init(container, container_width, cwidth_curr); if (fixed_height) { container_height = fixed_height; } else { container_height = menubar_height + nss.screen_height+2; if (kp_placement == kp_integral && xappres.keypad_on) { container_height += keypad_qheight(); } } if (kp_placement == kp_integral) { if (xappres.keypad_on) { keypad_init(container, menubar_height + nss.screen_height+2, container_width, false, false); } else { ikeypad_destroy(); } } /* Create screen and set container dimensions */ inflate_screen(); /* Create scrollbar */ scrollbar_init((cmask & MODEL_CHANGE) != 0); XtRealizeWidget(toplevel); nss.window = XtWindow(nss.widget); set_mcursor(); /* Reinitialize the active icon. */ aicon_reinit(cmask); /* Reinitialize the status line. */ status_reinit(cmask); /* Initialize the input method. */ if ((cmask & CODEPAGE_CHANGE) && dbcs) { xim_init(); } cursor_changed = true; line_changed = true; /* Redraw the screen. */ xaction_internal(PA_Expose_xaction, IA_REDRAW, NULL, NULL); /* * We're all done processing the user's request, so allow normal resizing * again. */ clear_fixed(); } static void set_toplevel_sizes(const char *why) { Dimension tw, th; tw = container_width; th = container_height; if (fixed_width) { if (!maximized) { XtVaSetValues(toplevel, XtNwidth, fixed_width, XtNheight, fixed_height, NULL); vtrace("set_toplevel_sizes(%s), fixed: %dx%d\n", why, fixed_width, fixed_height); if (!user_resize_allowed) { XtVaSetValues(toplevel, XtNbaseWidth, fixed_width, XtNbaseHeight, fixed_height, XtNminWidth, fixed_width, XtNminHeight, fixed_height, XtNmaxWidth, fixed_width, XtNmaxHeight, fixed_height, NULL); } XtVaSetValues(container, XtNwidth, fixed_width, XtNheight, fixed_height, NULL); } main_width = fixed_width; main_height = fixed_height; } else { if (!maximized) { XtVaSetValues(toplevel, XtNwidth, tw, XtNheight, th, NULL); vtrace("set_toplevel_sizes(%s), not fixed: %hux%hu\n", why, tw, th); if (!allow_resize) { XtVaSetValues(toplevel, XtNbaseWidth, tw, XtNbaseHeight, th, XtNminWidth, tw, XtNminHeight, th, XtNmaxWidth, tw, XtNmaxHeight, th, NULL); } XtVaSetValues(container, XtNwidth, container_width, XtNheight, container_height, NULL); } main_width = tw; main_height = th; } /* * Start a timer ticking, in case the window manager doesn't approve * of the change. */ if (configure_ticking) { XtRemoveTimeOut(configure_id); } configure_id = XtAppAddTimeOut(appcontext, 500, configure_stable, 0); configure_ticking = true; keypad_move(); { static bool first = true; if (first) { first = false; } else { popups_move(); } } } static void inflate_screen(void) { /* Create the screen window */ if (nss.widget == NULL) { nss.widget = XtVaCreateManagedWidget( "screen", widgetClass, container, XtNwidth, nss.screen_width, XtNheight, nss.screen_height, XtNx, 0, XtNy, menubar_height, XtNbackground, appres.interactive.mono? xappres.background: colorbg_pixel, NULL); save_00translations(nss.widget, &screen_t00); set_translations(nss.widget, NULL, &screen_t0); } else { XtVaSetValues(nss.widget, XtNwidth, nss.screen_width, XtNheight, nss.screen_height, XtNx, 0, XtNy, menubar_height, XtNbackground, appres.interactive.mono? xappres.background: colorbg_pixel, NULL); } /* Set the container and toplevel dimensions */ XtVaSetValues(container, XtNwidth, container_width, XtNheight, container_height, NULL); set_toplevel_sizes("inflate_screen"); } /* Scrollbar support. */ void screen_set_thumb(float top, float shown, int saved _is_unused, int screen _is_unused, int back _is_unused) { if (toggled(SCROLL_BAR)) { XawScrollbarSetThumb(scrollbar, top, shown); } } static void screen_scroll_proc(Widget w _is_unused, XtPointer client_data _is_unused, XtPointer position) { scroll_proc((long)position, (int)nss.screen_height); } static void screen_jump_proc(Widget w _is_unused, XtPointer client_data _is_unused, XtPointer percent_ptr) { jump_proc(*(float *)percent_ptr); } /* Create, move, or reset the scrollbar. */ static void scrollbar_init(bool is_reset) { if (!scrollbar_width) { if (scrollbar != NULL) { XtUnmapWidget(scrollbar); } } else { if (scrollbar == NULL) { scrollbar = XtVaCreateManagedWidget( "scrollbar", scrollbarWidgetClass, container, XtNx, nss.screen_width+1, XtNy, menubar_height, XtNwidth, scrollbar_width-1, XtNheight, nss.screen_height, NULL); XtAddCallback(scrollbar, XtNscrollProc, screen_scroll_proc, NULL); XtAddCallback(scrollbar, XtNjumpProc, screen_jump_proc, NULL); } else { XtVaSetValues(scrollbar, XtNx, nss.screen_width+1, XtNy, menubar_height, XtNwidth, scrollbar_width-1, XtNheight, nss.screen_height, NULL); XtMapWidget(scrollbar); } XawScrollbarSetThumb(scrollbar, 0.0, 1.0); } /* * If the screen dimensions have changed, reallocate the scroll * save area. */ if (is_reset || !scroll_initted) { scroll_buf_init(); } else { rethumb(); } } /* Turn the scrollbar on or off */ static void toggle_scrollBar(toggle_index_t ix _is_unused, enum toggle_type tt _is_unused) { scrollbar_changed = true; if (toggled(SCROLL_BAR)) { scrollbar_width = rescale(SCROLLBAR_WIDTH); screen_redo = REDO_SCROLLBAR; } else { scroll_to_bottom(); scrollbar_width = 0; } screen_reinit(SCROLL_CHANGE); if (toggled(SCROLL_BAR)) { rethumb(); } } /* Register an APL mode toggle. */ static void toggle_aplMode(toggle_index_t ix _is_unused, enum toggle_type tt _is_unused) { status_apl_mode(toggled(APL_MODE)); } /* * Called when a host connects, disconnects or changes NVT/3270 modes. */ static void screen_connect(bool ignored _is_unused) { if (ea_buf == NULL) { return; /* too soon */ } if (CONNECTED) { ctlr_erase(true); cursor_enabled = true; cursor_on("connect"); schedule_cursor_blink(); } else { if (appres.disconnect_clear) { ctlr_erase(true); } cursor_enabled = false; cursor_off("connect", true, NULL); } if (toggled(CROSSHAIR)) { screen_changed = true; first_changed = 0; last_changed = ROWS*COLS; screen_disp(false); } mcursor_normal(); } /* * Mouse cursor changes */ static void set_mcursor(void) { switch (mcursor_state) { case LOCKED: XDefineCursor(display, nss.window, xappres.locked_mcursor); break; case NORMAL: XDefineCursor(display, nss.window, xappres.normal_mcursor); break; case WAIT: XDefineCursor(display, nss.window, xappres.wait_mcursor); break; } lock_icon(mcursor_state); } void mcursor_normal(void) { if (CONNECTED) { mcursor_state = NORMAL; } else if (HALF_CONNECTED) { mcursor_state = WAIT; } else { mcursor_state = LOCKED; } set_mcursor(); } void mcursor_waiting(void) { mcursor_state = WAIT; set_mcursor(); } void mcursor_locked(void) { mcursor_state = LOCKED; set_mcursor(); } /* * Called from the keypad button to expose or hide the integral keypad. */ void screen_showikeypad(bool on) { if (on) { screen_redo = REDO_KEYPAD; } inflate_screen(); /* redundant now? */ screen_reinit(FONT_CHANGE); } /* * The host just wrote a blinking character; make sure it blinks */ void blink_start(void) { text_blinkers_exist = true; if (!text_blink_scheduled) { /* Start in "on" state and start first iteration */ text_blinking_on = true; schedule_text_blink(); } } /* * Restore blanked blinking text */ static void text_blink_it(XtPointer closure _is_unused, XtIntervalId *id _is_unused) { /* Flip the state. */ text_blinking_on = !text_blinking_on; /* Force a screen redraw. */ ctlr_changed(0, ROWS*COLS); /* If there is still blinking text, schedule the next iteration */ if (text_blinkers_exist) { schedule_text_blink(); } else { text_blink_scheduled = false; } } /* * Schedule an event to restore blanked blinking text */ static void schedule_text_blink(void) { text_blink_scheduled = true; text_blink_id = XtAppAddTimeOut(appcontext, 500, text_blink_it, 0); } /* * Fill in an XChar2b from an APL character. */ static void apl_display_char(XChar2b *text, unsigned char apl) { if (ss->extended_3270font) { text->byte1 = 1; text->byte2 = ebc2cg0[apl]; } else { if (ss->font_16bit) { *text = apl_to_udisplay(ss->d8_ix, apl); } else { *text = apl_to_ldisplay(apl); } } } /* * Return the vertical crosshair character for the current font. */ XChar2b screen_vcrosshair(void) { XChar2b v; apl_display_char(&v, 0xbf); return v; } /* * Return a GC for drawing the crosshair. */ GC screen_crosshair_gc(void) { return screen_gc(CROSS_COLOR); } /* Draw the line at the top of the OIA. */ static void draw_oia_line(void) { XDrawLine(display, ss->window, get_gc(ss, GC_NONDEFAULT | DEFAULT_PIXEL), 0, nss.screen_height - nss.char_height - 3, ssCOL_TO_X(maxCOLS)+hhalo, nss.screen_height - nss.char_height - 3); } /* * Draw or erase the crosshair in the margin between the primary and alternate * screens. */ static void crosshair_margin(bool draw, const char *why) { int column; int hhalo_chars = 0, vhalo_chars = 0; #ifdef CROSSHAIR_DEBUG /*[*/ vtrace("crosshair_margin(%s, %s) cursor=%d", why, draw? "draw": "undraw", draw? cursor_addr: ss->cursor_daddr); #endif /*]*/ /* Compute the number of halo characters. */ if (hhalo > HHALO) { hhalo_chars = (hhalo + (ss->char_width - 1)) / ss->char_width; } if (vhalo > VHALO) { vhalo_chars = (vhalo + (ss->char_height - 1)) / ss->char_height; } if (draw) { int nhx; XTextItem16 text1; int i; ss->xh_alt = false; /* Compute the cursor column. */ column = BA_TO_COL(cursor_addr); if (flipped) { column = (cCOLS - 1) - column; } /* Set up an array of characters for drawing horizonal lines. */ nhx = maxCOLS - cCOLS; if (hhalo_chars > nhx) { nhx = hhalo_chars; } if (nhx > 0 && (ss->hx_text == NULL || ss->nhx_text < nhx)) { ss->nhx_text = nhx; Replace(ss->hx_text, (XChar2b *)Malloc(nhx * sizeof(XChar2b))); for (i = 0; i < nhx; i++) { apl_display_char(&ss->hx_text[i], 0xa2); } } /* To the right. */ if (maxCOLS > cCOLS) { text1.chars = ss->hx_text; text1.nchars = maxCOLS - cCOLS; text1.delta = 0; text1.font = ss->fid; XDrawText16(display, ss->window, get_gc(ss, CROSS_COLOR), ssCOL_TO_X(cCOLS), ssROW_TO_Y(BA_TO_ROW(cursor_addr)), &text1, 1); /* Remember we need to erase later. */ ss->xh_alt = true; } /* Down the bottom. */ if (maxROWS > ROWS) { XChar2b text; apl_display_char(&text, 0xbf); text1.chars = &text; text1.nchars = 1; text1.delta = 0; text1.font = ss->fid; for (i = ROWS; i < maxROWS; i++) { XDrawText16(display, ss->window, get_gc(ss, CROSS_COLOR), ssCOL_TO_X(column), ssROW_TO_Y(i), &text1, 1); } /* Remember we need to erase later. */ ss->xh_alt = true; } /* Inside the vertical halo. */ if (vhalo_chars) { XChar2b text; apl_display_char(&text, 0xbf); text1.chars = &text; text1.nchars = 1; text1.delta = 0; text1.font = ss->fid; for (i = -vhalo_chars; i < 0; i++) { XDrawText16(display, ss->window, get_gc(ss, CROSS_COLOR), ssCOL_TO_X(column), ssROW_TO_Y(i), &text1, 1); } for (i = maxROWS; i < maxROWS + (2 * vhalo_chars); i++) { XDrawText16(display, ss->window, get_gc(ss, CROSS_COLOR), ssCOL_TO_X(column), ssROW_TO_Y(i), &text1, 1); } } /* In the horizontal halo. */ if (hhalo_chars) { text1.chars = ss->hx_text; text1.nchars = hhalo_chars; text1.delta = 0; text1.font = ss->fid; XDrawText16(display, ss->window, get_gc(ss, CROSS_COLOR), ssCOL_TO_X(-hhalo_chars), ssROW_TO_Y(BA_TO_ROW(cursor_addr)), &text1, 1); XDrawText16(display, ss->window, get_gc(ss, CROSS_COLOR), ssCOL_TO_X(maxCOLS), ssROW_TO_Y(BA_TO_ROW(cursor_addr)), &text1, 1); } #ifdef CROSSHAIR_DEBUG /*[*/ vtrace(" -> %s\n", ss->xh_alt? "draw": "nop"); #endif /*]*/ goto fix_status; } /* Erasing. */ /* Compute the column. */ column = BA_TO_COL(ss->cursor_daddr); if (flipped) { column = (COLS - 1) - column; } if (vhalo_chars) { /* Vertical halo. */ XFillRectangle(display, ss->window, get_gc(ss, INVERT_COLOR(0)), ssCOL_TO_X(column), /* x */ ssROW_TO_Y(-vhalo_chars) - ss->ascent, /* y */ ss->char_width + 1, /* width */ ss->char_height * vhalo_chars /* height */); XFillRectangle(display, ss->window, get_gc(ss, INVERT_COLOR(0)), ssCOL_TO_X(column), /* x */ ssROW_TO_Y(maxROWS) - ss->ascent, /* y */ ss->char_width + 1, /* width */ ss->char_height * (2 * vhalo_chars) /* height */); } if (hhalo_chars) { /* Horizontal halo. */ XFillRectangle(display, ss->window, get_gc(ss, INVERT_COLOR(0)), ssCOL_TO_X(-hhalo_chars), ssROW_TO_Y(BA_TO_ROW(ss->cursor_daddr)) - ss->ascent, (ss->char_width * hhalo_chars) + 1, ss->char_height); XFillRectangle(display, ss->window, get_gc(ss, INVERT_COLOR(0)), ssCOL_TO_X(maxCOLS), ssROW_TO_Y(BA_TO_ROW(ss->cursor_daddr)) - ss->ascent, (ss->char_width * hhalo_chars) + 1, ss->char_height); } if (!ss->xh_alt) { #ifdef CROSSHAIR_DEBUG /*[*/ vtrace(" -> nop\n"); #endif /*]*/ goto fix_status; } #ifdef CROSSHAIR_DEBUG /*[*/ vtrace(" -> erase\n"); #endif /*]*/ /* To the right. */ if (maxCOLS > defCOLS) { XFillRectangle(display, ss->window, get_gc(ss, INVERT_COLOR(0)), ssCOL_TO_X(defCOLS), ssROW_TO_Y(BA_TO_ROW(ss->cursor_daddr)) - ss->ascent, (ss->char_width * (maxCOLS - defCOLS)) + 1, ss->char_height); } /* Down the bottom. */ if (maxROWS > defROWS) { XFillRectangle(display, ss->window, get_gc(ss, INVERT_COLOR(0)), ssCOL_TO_X(column), ssROW_TO_Y(defROWS) - ss->ascent, ss->char_width + 1, ss->char_height * (maxROWS - defROWS)); } ss->xh_alt = false; fix_status: status_touch(); /* could be more efficient */ status_disp(); draw_oia_line(); } /* Redraw the lower crosshair. */ static void redraw_lower_crosshair(void) { if (!lower_crosshair_displayed && toggled(CROSSHAIR)) { int column; crosshair_margin(true, "redraw"); column = cursor_addr % COLS; if (flipped) { column = (COLS - 1) - column; } status_crosshair(column); lower_crosshair_displayed = true; /* Even though the cursor isn't visible, this is where it is. */ ss->cursor_daddr = cursor_addr; } } /* * Make the (displayed) cursor disappear. Returns a bool indiciating if * the cursor was on before the call. * * *xwo is returned true if the lower crosshair was displayed and would then * need to be restored, independently of the cursor. */ static bool cursor_off(const char *why, bool including_lower_crosshair, bool *xwo) { bool was_on = cursor_displayed; bool xwo_ret = false; if (cursor_displayed) { cursor_displayed = false; put_cursor(ss->cursor_daddr, false); } if (including_lower_crosshair && toggled(CROSSHAIR) && lower_crosshair_displayed) { /* * Erase the crosshair in the empty region between the primary * and alternate screens. */ crosshair_margin(false, why); status_crosshair_off(); lower_crosshair_displayed = false; xwo_ret = true; } if (xwo != NULL) { *xwo = xwo_ret; } return was_on; } /* * Blink the cursor */ static void cursor_blink_it(XtPointer closure _is_unused, XtIntervalId *id _is_unused) { cursor_blink_pending = false; if (!CONNECTED || !toggled(CURSOR_BLINK)) { return; } if (cursor_displayed) { if (in_focus) { cursor_off("blink", false, NULL); } } else { cursor_on("blink"); } schedule_cursor_blink(); } /* * Schedule a cursor blink */ static void schedule_cursor_blink(void) { if (!toggled(CURSOR_BLINK) || cursor_blink_pending) { return; } cursor_blink_pending = true; cursor_blink_id = XtAppAddTimeOut(appcontext, 500, cursor_blink_it, 0); } /* * Cancel a cursor blink */ static void cancel_blink(void) { if (cursor_blink_pending) { XtRemoveTimeOut(cursor_blink_id); cursor_blink_pending = false; } } /* * Toggle cursor blinking (called from menu) */ static void toggle_cursorBlink(toggle_index_t ix _is_unused, enum toggle_type tt _is_unused) { if (!CONNECTED) { return; } if (toggled(CURSOR_BLINK)) { schedule_cursor_blink(); } else { cursor_on("toggleBlink"); } } /* * Make the cursor visible at its (possibly new) location. */ static void cursor_on(const char *why) { if (cursor_enabled && !cursor_displayed) { cursor_displayed = true; put_cursor(cursor_addr, true); ss->cursor_daddr = cursor_addr; cursor_changed = false; /* * Draw in the crosshair in the empty region between the primary * and alternate screens. */ if (in_focus && toggled(CROSSHAIR)) { int column; crosshair_margin(true, why); column = cursor_addr % COLS; if (flipped) { column = (COLS - 1) - column; } status_crosshair(column); lower_crosshair_displayed = true; } } } /* * Toggle the cursor (block/underline). */ static void toggle_altCursor(toggle_index_t ix, enum toggle_type tt _is_unused) { bool was_on; /* do_toggle already changed the value; temporarily change it back */ toggle_toggle(ix); was_on = cursor_off("toggleAlt", false, NULL); /* Now change it back again */ toggle_toggle(ix); if (was_on) { cursor_on("toggleAlt"); } } /* * Move the cursor to the specified buffer address. */ void cursor_move(int baddr) { cursor_addr = baddr; if (CONNECTED) { status_cursor_pos(cursor_addr); } } /* * Enable or disable cursor display (used by scroll logic) */ void enable_cursor(bool on) { if ((cursor_enabled = on) && CONNECTED) { cursor_on("enable"); cursor_changed = true; } else { cursor_off("enable", true, NULL); } } /* * Toggle the crosshair cursor. */ static void toggle_crosshair(toggle_index_t ix _is_unused, enum toggle_type tt _is_unused) { bool turning_off = false; if (!toggled(CROSSHAIR)) { /* * Turning it off. Turn it on momemtarily while we turn off the cursor, * so it gets erased. */ turning_off = true; toggle_toggle(CROSSHAIR); } /* * Flip the cursor, which will undraw or draw the crosshair in the margins. * * Don't forget to turn the toggle back off, if we temporarily turned it * on above. */ if (cursor_off("toggleCrosshair", true, NULL)) { if (turning_off) { toggle_toggle(CROSSHAIR); } cursor_on("toggleCrosshair"); } else { if (turning_off) { toggle_toggle(CROSSHAIR); } } /* Refresh the screen. */ screen_changed = true; first_changed = 0; last_changed = ROWS*COLS; screen_disp(false); } /* * Toggle visible control characters. */ static void toggle_visible_control(toggle_index_t ix _is_unused, enum toggle_type tt _is_unused) { visible_control = toggled(VISIBLE_CONTROL); screen_changed = true; first_changed = 0; last_changed = ROWS*COLS; screen_disp(false); } /* * Redraw the screen. */ static void do_redraw(Widget w, XEvent *event, String *params _is_unused, Cardinal *num_params _is_unused) { int x, y, width, height; int startcol, ncols; int startrow, endrow, row; int i; int c0; if (w == nss.widget) { keypad_first_up(); if (xappres.active_icon && iconic) { ss = &nss; iconic = false; } } else if (xappres.active_icon && w == iss.widget) { if (xappres.active_icon && !iconic) { ss = &iss; iconic = true; } } else if (event) { return; } /* Only redraw as necessary for an expose event */ if (event && event->type == Expose) { ss->exposed_yet = true; x = event->xexpose.x; y = event->xexpose.y; width = event->xexpose.width; height = event->xexpose.height; startrow = ssY_TO_ROW(y); if (startrow < 0) { startrow = 0; } if (startrow > 0) { startrow--; } endrow = ssY_TO_ROW(y+height); endrow = endrow >= maxROWS ? maxROWS : endrow + 1; startcol = ssX_TO_COL(x); if (startcol < 0) { startcol = 0; } if (startcol > 0) { startcol--; } if (startcol >= maxCOLS) { goto no_draw; } ncols = (width / ss->char_width) + 2; if (startcol + ncols > maxCOLS) { ncols = maxCOLS - startcol; } while ((ROWCOL_TO_BA(startrow, startcol) % maxCOLS) + ncols > maxCOLS) { ncols--; } for (row = startrow; row < endrow; row++) { memset((char *) &ss->image[ROWCOL_TO_BA(row, startcol)], 0, ncols * sizeof(struct sp)); if (visible_control) { c0 = ROWCOL_TO_BA(row, startcol); for (i = 0; i < ncols; i++) { ss->image[c0 + i].u.bits.ec = EBC_space; } } } no_draw: ; } else { XFillRectangle(display, ss->window, get_gc(ss, INVERT_COLOR(0)), 0, 0, ss->screen_width, ss->screen_height); memset((char *) ss->image, 0, (maxROWS*maxCOLS) * sizeof(struct sp)); if (visible_control) { for (i = 0; i < maxROWS*maxCOLS; i++) { ss->image[i].u.bits.ec = EBC_space; } } ss->copied = false; } ctlr_changed(0, ROWS*COLS); cursor_changed = true; if (!xappres.active_icon || !iconic) { line_changed = true; status_touch(); } } /* * Explicitly redraw the screen (invoked from the keyboard). */ void Redraw_xaction(Widget w, XEvent *event, String *params, Cardinal *num_params) { xaction_debug(Redraw_xaction, event, params, num_params); do_redraw(w, event, params, num_params); } /* * Implicitly redraw the screen (triggered by Expose events). */ void PA_Expose_xaction(Widget w, XEvent *event, String *params, Cardinal *num_params) { #if defined(INTERNAL_ACTION_DEBUG) /*[*/ xaction_debug(PA_Expose_xaction, event, params, num_params); #endif /*]*/ do_redraw(w, event, params, num_params); } /* * Redraw the changed parts of the screen. */ void screen_disp(bool erasing) { /* No point in doing anything if we aren't visible yet. */ if (!ss->exposed_yet) { return; } /* * We don't set "cursor_changed" when the host moves the cursor, * 'cause he might just move it back later. Set it here if the cursor * has moved since the last call to screen_disp. */ if (cursor_addr != ss->cursor_daddr) { cursor_changed = true; } /* If the cursor has moved, tell the input method. */ if (cursor_changed && ic != NULL && style == (XIMPreeditPosition|XIMStatusNothing)) { #if defined(_ST) /*[*/ printf("spot_loc%s\n", rcba(cursor_addr)); #endif /*]*/ send_spot_loc(); } /* * If the cursor moves while the crosshair is toggled, redraw the whole * screen. */ if (cursor_changed && toggled(CROSSHAIR)) { screen_changed = true; first_changed = 0; last_changed = ROWS * COLS; } /* * If only the cursor has changed (and not the screen image), draw it. */ if (cursor_changed && !screen_changed) { if (!toggled(CROSSHAIR)) { if (cursor_off("disp", false, NULL)) { cursor_on("disp"); } } else { screen_changed = true; /* repaint crosshair */ } } /* * Redraw the parts of the screen that need refreshing, and redraw the * cursor if necessary. */ if (screen_changed) { bool was_on = false; bool xwo = false; /* Draw the new screen image into "temp_image" */ if (erasing) { crosshair_enabled = false; } draw_fields(temp_image, first_changed, last_changed); if (erasing) { crosshair_enabled = true; } /* Set "cursor_changed" if the text under it has changed. */ if (ss->image[fl_baddr(cursor_addr)].u.word != temp_image[fl_baddr(cursor_addr)].u.word) { cursor_changed = true; } /* Undraw the cursor, if necessary. */ if (cursor_changed) { was_on = cursor_off("cursorChanged", true, &xwo); } /* Intelligently update the X display with the new text. */ resync_display(temp_image, first_changed, last_changed); /* Redraw the cursor. */ if (was_on) { cursor_on("cursorChanged"); } if (xwo && !erasing) { redraw_lower_crosshair(); } screen_changed = false; first_changed = -1; last_changed = -1; } if (!xappres.active_icon || !iconic) { /* Refresh the status line. */ status_disp(); /* Refresh the line across the bottom of the screen. */ if (line_changed) { draw_oia_line(); line_changed = false; } } draw_aicon_label(); } /* * Render a blank rectangle on the X display. */ static void render_blanks(int baddr, int height, struct sp *buffer) { int x, y; #if defined(_ST) /*[*/ printf("render_blanks(baddr=%s, height=%d)\n", rcba(baddr), height); #endif /*]*/ x = ssCOL_TO_X(BA_TO_COL(baddr)); y = ssROW_TO_Y(BA_TO_ROW(baddr)); XFillRectangle(display, ss->window, get_gc(ss, INVERT_COLOR(0)), x, y - ss->ascent, (ss->char_width * COLS) + 1, (ss->char_height * height)); memmove(&ss->image[baddr], &buffer[baddr], COLS * height *sizeof(struct sp)); } /* * Check if a character position is blank. */ static bool bkm_isset(struct sp *buffer) { if (buffer->u.bits.cs != CS_BASE) { return false; } if (buffer->ucs4 != 0) { return buffer->ucs4 == ' ' || buffer->ucs4 == 0xa0; } return BKM_ISSET(buffer->u.bits.ec); } /* * Check if a region of the screen is effectively empty: all blanks or nulls * with no extended highlighting attributes and not selected. * * Works _only_ with non-debug fonts. */ static bool empty_space(register struct sp *buffer, int len) { int i; for (i = 0; i < len; i++, buffer++) { if (buffer->u.bits.gr || buffer->u.bits.sel || (buffer->u.bits.fg & INVERT_MASK) || (buffer->u.bits.cs != CS_BASE) || !bkm_isset(buffer)) { return false; } } return true; } /* * Reconcile the differences between a region of 'buffer' (what we want on * the X display) and ss->image[] (what is on the X display now). The region * must not span lines. */ static void resync_text(int baddr, int len, struct sp *buffer) { static bool ever = false; static unsigned long cmask = 0L; static unsigned long gmask = 0L; #if defined(_ST) /*[*/ printf("resync_text(baddr=%s, len=%d)\n", rcba(baddr), len); #endif /*]*/ /* * If the region begins on the right half of a DBCS character, back * up one. */ if (baddr % COLS) { enum dbcs_state d; d = ctlr_dbcs_state(baddr); if (IS_RIGHT(d)) { baddr--; len++; } } if (!ever) { struct sp b; /* Create masks for the "important" fields in an sp. */ b.u.word = 0L; b.u.bits.fg = COLOR_MASK | INVERT_MASK; b.u.bits.sel = 1; b.u.bits.gr = GR_UNDERLINE | GR_INTENSIFY; cmask = b.u.word; b.u.word = 0L; b.u.bits.fg = INVERT_MASK; b.u.bits.sel = 1; b.u.bits.gr = 0xf; gmask = b.u.word; ever = true; } if (!visible_control && len > 1 && empty_space(&buffer[baddr], len)) { int x, y; x = ssCOL_TO_X(BA_TO_COL(baddr)); y = ssROW_TO_Y(BA_TO_ROW(baddr)); /* All empty, fill a rectangle */ #if defined(_ST) /*[*/ printf("FillRectangle(baddr=%s, len=%d)\n", rcba(baddr), len); #endif /*]*/ XFillRectangle(display, ss->window, get_gc(ss, INVERT_COLOR(0)), x, y - ss->ascent, (ss->char_width * len) + 1, ss->char_height); } else { unsigned long attrs, attrs2; bool has_gr, has_gr2; bool empty, empty2; struct sp ra; int i; int i0 = 0; ra = buffer[baddr]; /* Note the characteristics of the beginning of the region. */ attrs = buffer[baddr].u.word & cmask; has_gr = (buffer[baddr].u.word & gmask) != 0; empty = !has_gr && bkm_isset(&buffer[baddr]); for (i = 0; i < len; i++) { /* Note the characteristics of this character. */ attrs2 = buffer[baddr+i].u.word & cmask; has_gr2 = (buffer[baddr+i].u.word & gmask) != 0; empty2 = !has_gr2 && bkm_isset(&buffer[baddr+i]); /* If this character has exactly the same attributes as the current region, simply add it, noting that the region might now not be empty. */ if (attrs2 == attrs) { if (!empty2) { empty = 0; } continue; } /* If this character is empty, and the current region has no GR attributes, pretend it matches. */ if (empty2 && !has_gr) { continue; } /* If the current region is empty, this character isn't empty, and this character has no GR attributes, change the current region's attributes to this character's attributes and add it. */ if (empty && !empty2 && !has_gr2) { attrs = attrs2; has_gr = has_gr2; empty = empty2; ra = buffer[baddr+i]; continue; } /* Dump the region and start a new one with this character. */ #if defined(_ST) /*[*/ printf("%s:%d: rt%s\n", __FUNCTION__, __LINE__, rcba(baddr+i0)); #endif /*]*/ render_text(&buffer[baddr+i0], baddr+i0, i - i0, false, &ra); attrs = attrs2; has_gr = has_gr2; empty = empty2; i0 = i; ra = buffer[baddr+i]; } /* Dump the remainder of the region. */ #if defined(_ST) /*[*/ printf("%s:%d: rt%s\n", __FUNCTION__, __LINE__, rcba(baddr+i0)); #endif /*]*/ render_text(&buffer[baddr+i0], baddr+i0, len - i0, false, &ra); } /* The X display is now correct; update ss->image[]. */ memmove(&ss->image[baddr], &buffer[baddr], len*sizeof(struct sp)); } /* * Get a font index for an EBCDIC character. * Returns a blank if there is no mapping. * * Note that the EBCDIC character can be 16 bits (DBCS), and the output might * be 16 bits as well. */ static unsigned short font_index(ebc_t ebc, int d8_ix, bool upper) { ucs4_t ucs4; int d; ucs4 = ebcdic_base_to_unicode(ebc, EUO_BLANK_UNDEF | EUO_UPRIV); if (upper) { ucs4 = u_toupper(ucs4); } d = display8_lookup(d8_ix, ucs4); if (d < 0) { d = display8_lookup(d8_ix, ' '); } return d; } /* * Attempt to map an APL character to a DEC line-drawing character in the * first 32 bytes of an old 8-bit X11 font. */ static int apl_to_linedraw(ebc_t c) { switch (c) { case 0xaf: /* degree */ return 0x7; case 0xd4: /* LR corner */ return 0xb; case 0xd5: /* UR corner */ return 0xc; case 0xc5: /* UL corner */ return 0xd; case 0xc4: /* LL corner */ return 0xe; case 0xd3: /* plus */ return 0xf; case 0xa2: /* middle horizontal */ return 0x12; case 0xc6: /* left tee */ return 0x15; case 0xd6: /* right tee */ return 0x16; case 0xc7: /* bottom tee */ return 0x17; case 0xd7: /* top tee */ return 0x18; case 0xbf: /* stile */ case 0x85: /* vertical line */ return 0x19; case 0x8c: /* less or equal */ return 0x1a; case 0xae: /* greater or equal */ return 0x1b; case 0xbe: /* not equal */ return 0x1d; case 0xa3: /* bullet */ return 0x1f; case 0xad: return '['; case 0xbd: return ']'; default: return -1; } } /* Map an APL character to the current display character set. */ static XChar2b apl_to_udisplay(int d8_ix, unsigned char c) { XChar2b x; int u = -1; int d = 0; /* Look it up. */ u = apl_to_unicode(c, EUO_NONE | xappres.apl_circled_alpha? EUO_APL_CIRCLED: 0); if (u != -1) { d = display8_lookup(d8_ix, u); } /* Default to a space. */ if (d == 0) { d = display8_lookup(d8_ix, ' '); } /* Return it. */ x.byte1 = (d >> 8) & 0xff; x.byte2 = d & 0xff; return x; } /* Map an APL character to the old first-32 8-bit X11 display character set. */ static XChar2b apl_to_ldisplay(unsigned char c) { XChar2b x; int u = -1; /* Look it up, defaulting to a space. */ u = apl_to_linedraw(c); if (u == -1) { u = ' '; } /* Return it. */ x.byte1 = 0; x.byte2 = u; return x; } /* Map a line-drawing character to the current display character set. */ static XChar2b linedraw_to_udisplay(int d8_ix, unsigned char c) { XChar2b x; int d; /* Look it up. */ d = display8_lookup(d8_ix, linedraw_to_unicode(c, false)); /* Default to a space. */ if (d == 0) { d = display8_lookup(d8_ix, ' '); } /* Return it. */ x.byte1 = (d >> 8) & 0xff; x.byte2 = d & 0xff; return x; } /* * Render text onto the X display. The region must not span lines. */ static void render_text(struct sp *buffer, int baddr, int len, bool block_cursor, struct sp *attrs) { int color; int x, y; GC dgc = (GC)None; /* drawing text */ GC cleargc = (GC)None; /* clearing under undersized characters */ int sel = attrs->u.bits.sel; register int i, j; bool one_at_a_time = false; int d8_ix = ss->d8_ix; XTextItem16 text[64]; /* fixed size is a hack */ int n_texts = -1; bool in_dbcs = false; int clear_len = 0; int n_sbcs = 0; int n_dbcs = 0; #if defined(_ST) /*[*/ printf("render_text(baddr=%s, len=%d)\n", rcba(baddr), len); #endif /*]*/ /* * If the region starts with the right-hand side of a DBCS, back off * one column. */ switch (ctlr_dbcs_state(baddr)) { case DBCS_RIGHT: /* * Lots of assumptions -- the buffer really does go back one byte, * and baddr is greater than zero. */ #if defined(_ST) /*[*/ printf("render_text: backing off\n"); #endif /*]*/ buffer--; baddr--; len++; break; default: break; } for (i = 0, j = 0; i < len; i++) { if (buffer[i].u.bits.cs != CS_DBCS || !dbcs || iconic) { if (n_texts < 0 || in_dbcs) { /* Switch from nothing or DBCS, to SBCS. */ #if defined(_ST) /*[*/ fprintf(stderr, "SBCS starts at %s\n", rcba(baddr + i)); #endif /*]*/ in_dbcs = false; n_texts++; text[n_texts].chars = &rt_buf[j]; text[n_texts].nchars = 0; text[n_texts].delta = 0; text[n_texts].font = ss->fid; n_sbcs++; } /* In SBCS. */ clear_len += ss->char_width; } else { if (n_texts < 0 || !in_dbcs) { /* Switch from nothing or SBCS, to DBCS. */ #if defined(_ST) /*[*/ fprintf(stderr, "DBCS starts at %s\n", rcba(baddr + i)); #endif /*]*/ in_dbcs = true; n_texts++; text[n_texts].chars = &rt_buf[j]; text[n_texts].nchars = 0; text[n_texts].delta = 0; text[n_texts].font = dbcs_font.font; n_dbcs++; } /* In DBCS. */ clear_len += 2 * ss->char_width; } switch (buffer[i].u.bits.cs) { case CS_BASE: /* latin-1 */ if (buffer[i].ucs4) { /* * NVT-mode text. With a Unicode font, we can just display it * as-is. Otherwise, we need to map to EBCDIC and display it * only if there is a mapping. */ if (ss->unicode_font) { ucs4_t u = buffer[i].ucs4; if (toggled(MONOCASE)) { u = u_toupper(u); } rt_buf[j].byte1 = (u >> 8) & 0xff; rt_buf[j].byte2 = u & 0xff; } else { /* Only draw if there is an EBCDIC mapping. */ bool ge; ebc_t e = unicode_to_ebcdic_ge(buffer[i].ucs4, &ge, true); if (ge) { if (ss->extended_3270font) { rt_buf[j].byte1 = 1; rt_buf[j].byte2 = ebc2cg0[e]; } else { if (ss->font_16bit) { rt_buf[j] = apl_to_udisplay(d8_ix, e); } else { rt_buf[j] = apl_to_ldisplay(e); } } } else { rt_buf[j].byte1 = 0; if (e != 0) { rt_buf[j].byte2 = font_index(e, d8_ix, !ge && toggled(MONOCASE)); } else { rt_buf[j].byte2 = font_index(EBC_space, d8_ix, false); } } } } else { rt_buf[j].byte1 = 0; if (toggled(MONOCASE)) { rt_buf[j].byte2 = font_index(buffer[i].u.bits.ec, d8_ix, true); } else { if (visible_control) { if (buffer[i].u.bits.ec == EBC_so) { rt_buf[j].byte1 = 0; rt_buf[j].byte2 = font_index(EBC_less, d8_ix, false); } else if (buffer[i].u.bits.ec == EBC_si) { rt_buf[j].byte1 = 0; rt_buf[j].byte2 = font_index(EBC_greater, d8_ix, false); } else { unsigned short c = font_index(buffer[i].u.bits.ec, d8_ix, false); rt_buf[j].byte1 = (c >> 8) & 0xff; rt_buf[j].byte2 = c & 0xff; } } else { unsigned short c = font_index(buffer[i].u.bits.ec, d8_ix, false); rt_buf[j].byte1 = (c >> 8) & 0xff; rt_buf[j].byte2 = c & 0xff; } } } j++; break; case CS_APL: /* GE (apl) */ case CS_BASE | CS_GE: if (ss->extended_3270font) { rt_buf[j].byte1 = 1; rt_buf[j].byte2 = ebc2cg0[buffer[i].u.bits.ec]; } else { if (ss->font_16bit) { rt_buf[j] = apl_to_udisplay(d8_ix, buffer[i].u.bits.ec); } else { rt_buf[j] = apl_to_ldisplay(buffer[i].u.bits.ec); } } j++; break; case CS_LINEDRAW: /* DEC line drawing */ if (ss->standard_font) { if (ss->font_16bit) { rt_buf[j] = linedraw_to_udisplay(d8_ix, buffer[i].ucs4); } else { /* Assume the first 32 characters are line-drawing. */ rt_buf[j].byte1 = 0; rt_buf[j].byte2 = buffer[i].u.bits.ec; } } else { if (ss->extended_3270font) { rt_buf[j].byte1 = 2; rt_buf[j].byte2 = buffer[i].ucs4; } else { rt_buf[j].byte1 = 0; rt_buf[j].byte2 = 0; } } j++; break; case CS_DBCS: /* DBCS */ if (dbcs) { if (buffer[i].ucs4 /* && dbcs_font.unicode*/) { xlate_dbcs_unicode(buffer[i].ucs4, &rt_buf[j]); } else { xlate_dbcs(buffer[i].u.bits.ec, buffer[i+1].u.bits.ec, &rt_buf[j]); } /* Skip the next byte as well. */ i++; } else { rt_buf[j].byte1 = 0; rt_buf[j].byte2 = font_index(EBC_space, d8_ix, false); } j++; break; } text[n_texts].nchars++; } n_texts++; /* Check for one-at-a-time mode. */ if (ss->funky_font) { for (i = 0; i < len; i++) { if (!rt_buf[i].byte1 && (IS_ODD(ss->odd_width, rt_buf[i].byte2) || IS_ODD(ss->odd_lbearing, rt_buf[i].byte2))) { one_at_a_time = true; break; } } } x = ssCOL_TO_X(BA_TO_COL(baddr)); y = ssROW_TO_Y(BA_TO_ROW(baddr)); color = attrs->u.bits.fg; /* Select the GCs. */ if (sel && !block_cursor) { /* Selected, but not a block cursor. */ if (!appres.interactive.mono) { /* Color: Use the special select GCs. */ dgc = get_selgc(ss, color); cleargc = ss->clrselgc; } else { /* Mono: Invert the color. */ dgc = get_gc(ss, INVERT_COLOR(color)); cleargc = get_gc(ss, color); } } else if (block_cursor && !(appres.interactive.mono && sel)) { /* Block cursor, but neither mono nor selected. */ if (xappres.use_cursor_color) { /* Use the specific-color inverted GC. */ dgc = ss->invucgc; cleargc = ss->ucgc; } else { /* Just invert the specified color. */ dgc = get_gc(ss, INVERT_COLOR(color)); cleargc = get_gc(ss, color); } } else { /* Ordinary text, or a selected block cursor. */ dgc = get_gc(ss, color); cleargc = get_gc(ss, INVERT_COLOR(color)); } /* Draw the text */ XFillRectangle(display, ss->window, cleargc, x, y - ss->ascent, clear_len, ss->char_height); #if defined(_ST) /*[*/ { int k, l; for (k = 0; k < n_texts; k++) { printf("text[%d]: %d chars, %s:", k, text[k].nchars, (text[k].font == dbcs_font.font)? "dbcs": "sbcs"); for (l = 0; l < text[k].nchars; l++) { printf(" %02x%02x", text[k].chars[l].byte1, text[k].chars[l].byte2); } printf("\n"); } } #endif /*]*/ if (one_at_a_time || (n_sbcs && ss->xtra_width) || (n_dbcs && dbcs_font.xtra_width)) { int i, j; int xn = x; XTextItem16 text1; /* XXX: do overstrike */ for (i = 0; i < n_texts; i++) { if (one_at_a_time || text[i].font == ss->fid) { if (one_at_a_time || ss->xtra_width) { for (j = 0; j < text[i].nchars; j++) { text1.chars = &text[i].chars[j]; text1.nchars = 1; text1.delta = 0; text1.font = ss->fid; XDrawText16(display, ss->window, dgc, xn, y, &text1, 1); xn += ss->char_width; } } else { XDrawText16(display, ss->window, dgc, xn, y, &text[i], 1); xn += ss->char_width * text[i].nchars; } } else { if (dbcs_font.xtra_width) { for (j = 0; j < text[i].nchars; j++) { text1.chars = &text[i].chars[j]; text1.nchars = 1; text1.delta = 0; text1.font = dbcs_font.font; XDrawText16(display, ss->window, dgc, xn, y, &text1, 1); xn += dbcs_font.char_width; } } else { XDrawText16(display, ss->window, dgc, xn, y, &text[i], 1); xn += dbcs_font.char_width * text[i].nchars; } } } } else { XDrawText16(display, ss->window, dgc, x, y, text, n_texts); if (ss->overstrike && ((attrs->u.bits.gr & GR_INTENSIFY) || ((appres.interactive.mono || (!mode.m3279 && highlight_bold)) && ((color & BASE_MASK) == FA_INT_HIGH_SEL)))) { XDrawText16(display, ss->window, dgc, x+1, y, text, n_texts); } } if (attrs->u.bits.gr & GR_UNDERLINE) { XDrawLine(display, ss->window, dgc, x, y - ss->ascent + ss->char_height - 1, x + clear_len, y - ss->ascent + ss->char_height - 1); } } bool screen_obscured(void) { return ss->obscured; } /* * Scroll the screen image one row. * * This is the optimized path from ctlr_scroll(); it assumes that ea_buf[] has * already been modified and that the screen can be brought into sync by * hammering ss->image and the bitmap. */ void screen_scroll(unsigned char fg, unsigned char bg) { bool was_on; bool xwo; if (!ss->exposed_yet) { return; } was_on = cursor_off("scroll", true, &xwo); memmove(&ss->image[0], &ss->image[COLS], (ROWS - 1) * COLS * sizeof(struct sp)); memmove(&temp_image[0], &temp_image[COLS], (ROWS - 1) * COLS * sizeof(struct sp)); memset((char *)&ss->image[(ROWS - 1) * COLS], 0, COLS * sizeof(struct sp)); memset((char *)&temp_image[(ROWS - 1) * COLS], 0, COLS * sizeof(struct sp)); XCopyArea(display, ss->window, ss->window, get_gc(ss, 0), ssCOL_TO_X(0), ssROW_TO_Y(1) - ss->ascent, ss->char_width * COLS, ss->char_height * (ROWS - 1), ssCOL_TO_X(0), ssROW_TO_Y(0) - ss->ascent); ss->copied = true; XFillRectangle(display, ss->window, get_gc(ss, INVERT_COLOR(0)), ssCOL_TO_X(0), ssROW_TO_Y(ROWS - 1) - ss->ascent, (ss->char_width * COLS) + 1, ss->char_height); if (was_on) { cursor_on("scroll"); } if (xwo) { redraw_lower_crosshair(); } } /* * Toggle mono-/dual-case mode. */ static void toggle_monocase(toggle_index_t ix _is_unused, enum toggle_type tt _is_unused) { memset((char *)ss->image, 0, (ROWS*COLS) * sizeof(struct sp)); ctlr_changed(0, ROWS*COLS); } /** * Toggle timing display. */ static void toggle_showTiming(toggle_index_t ix _is_unused, enum toggle_type tt _is_unused) { if (!toggled(SHOW_TIMING)) { vstatus_untiming(); } } /* * Toggle screen flip */ void screen_flip(void) { /* Flip mode is broken in the DBCS version. */ if (!dbcs) { flipped = !flipped; xaction_internal(PA_Expose_xaction, IA_REDRAW, NULL, NULL); } } bool screen_flipped(void) { return flipped; } /* * Return a visible control character for a field attribute. */ static unsigned char visible_ebcdic(unsigned char fa) { static unsigned char varr[32] = { EBC_0, EBC_1, EBC_2, EBC_3, EBC_4, EBC_5, EBC_6, EBC_7, EBC_8, EBC_9, EBC_A, EBC_B, EBC_C, EBC_D, EBC_E, EBC_F, EBC_G, EBC_H, EBC_I, EBC_J, EBC_K, EBC_L, EBC_M, EBC_N, EBC_O, EBC_P, EBC_Q, EBC_R, EBC_S, EBC_T, EBC_U, EBC_V }; unsigned ix; /* * This code knows that: * FA_PROTECT is 0b100000, and we map it to 0b010000 * FA_NUMERIC is 0b010000, and we map it to 0b001000 * FA_INTENSITY is 0b001100, and we map it to 0b000110 * FA_MODIFY is 0b000001, and we copy to 0b000001 */ ix = ((fa & (FA_PROTECT | FA_NUMERIC | FA_INTENSITY)) >> 1) | (fa & FA_MODIFY); return varr[ix]; } /* * Map a row and column to a crosshair character. */ static unsigned char map_crosshair(int baddr) { if (baddr == cursor_addr) { /* Cross. */ return 0xd3; } else if (baddr / cCOLS == cursor_addr / cCOLS) { /* Horizontal. */ return 0xa2; } else { /* Vertical. */ return 0xbf; } } /* * "Draw" ea_buf into a buffer */ static void draw_fields(struct sp *buffer, int first, int last) { int baddr = 0; int faddr; unsigned char fa; struct ea *field_ea; struct ea *sbp = ea_buf; int field_color; int zero; bool any_blink = false; int crossable = CROSSABLE; enum dbcs_state d; int cursor_col = 0, cursor_row = 0; /* Set up cursor_col/cursor_row. */ if (crossable) { cursor_col = BA_TO_COL(cursor_addr); cursor_row = BA_TO_ROW(cursor_addr); } /* If there is any blinking text, override the suggested boundaries. */ if (text_blinkers_exist) { first = -1; last = -1; } /* Adjust pointers to start of region. */ if (first > 0) { baddr += first; sbp += first; buffer += first; } faddr = find_field_attribute(baddr); fa = ea_buf[faddr].fa; field_ea = fa2ea(faddr); /* Adjust end of region. */ if (last == -1 || last >= ROWS*COLS) { last = 0; } zero = FA_IS_ZERO(fa); if (field_ea->fg && (!appres.modified_sel || !FA_IS_MODIFIED(fa))) { field_color = field_ea->fg & COLOR_MASK; } else { field_color = fa_color(fa); } do { unsigned char c = sbp->ec; ucs4_t u = sbp->ucs4; struct sp b; bool reverse = false; bool is_selected = false; b.u.word = 0; /* clear out all fields */ b.ucs4 = 0; if (ea_buf[baddr].fa) { fa = ea_buf[baddr].fa; field_ea = sbp; zero = FA_IS_ZERO(fa); if (field_ea->fg && (!appres.modified_sel || !FA_IS_MODIFIED(fa))) { field_color = field_ea->fg & COLOR_MASK; } else { field_color = fa_color(fa); } if (visible_control) { b.u.bits.ec = visible_ebcdic(fa); b.u.bits.gr = GR_UNDERLINE; b.u.bits.fg = mode.m3279? (GC_NONDEFAULT | HOST_COLOR_YELLOW): FA_INT_HIGH_SEL; } else if (crossable && CROSSED(baddr)) { b.u.bits.cs = CS_APL; b.u.bits.ec = map_crosshair(baddr); b.u.bits.fg = CROSS_COLOR; b.u.bits.gr = 0; } } else { unsigned short gr; int e_color; bool is_vc = false; /* Find the right graphic rendition. */ if (zero) { gr = 0; } else { gr = sbp->gr; if (!gr) { gr = field_ea->gr; } if (gr & GR_BLINK) { any_blink = true; } if (highlight_bold && FA_IS_HIGH(fa)) { gr |= GR_INTENSIFY; } } /* Find the right color. */ if (zero) { e_color = fa_color(FA_INT_HIGH_SEL); } else { if (sbp->fg) { e_color = sbp->fg & COLOR_MASK; } else if (appres.interactive.mono && (gr & GR_INTENSIFY)) { e_color = fa_color(FA_INT_HIGH_SEL); } else { e_color = field_color; } if (gr & GR_REVERSE) { e_color = INVERT_COLOR(e_color); reverse = true; } } if (!appres.interactive.mono) { b.u.bits.fg = e_color; } /* Find the right character and character set. */ d = ctlr_dbcs_state(baddr); if (zero) { if (visible_control) { b.u.bits.ec = EBC_space; } else if (crossable && CROSSED(baddr)) { b.u.bits.cs = CS_APL; b.u.bits.ec = map_crosshair(baddr); b.u.bits.fg = CROSS_COLOR; b.u.bits.gr = 0; } } else if (((!visible_control || (u || c != EBC_null)) && ((!u && c != EBC_space) || (u && u != ' ') || d != DBCS_NONE)) || (gr & (GR_REVERSE | GR_UNDERLINE)) || visible_control) { b.u.bits.fg = e_color; /* * Replace blanked-out blinking text with * spaces. */ if (!text_blinking_on && (gr & GR_BLINK)) { if (!crossable || !CROSSED(baddr)) { b.u.bits.ec = EBC_space; } else { b.u.bits.cs = CS_APL; b.u.bits.ec = map_crosshair(baddr); b.u.bits.fg = CROSS_COLOR; b.u.bits.gr = 0; } } else { if (visible_control && !u && c == EBC_null) { b.u.bits.ec = EBC_period; is_vc = true; } else if (visible_control && (c == EBC_so || c == EBC_si)) { b.u.bits.ec = (c == EBC_so)? EBC_less: EBC_greater; is_vc = true; } else { b.u.bits.ec = c; b.ucs4 = u; } if (sbp->cs) { b.u.bits.cs = sbp->cs; } else { b.u.bits.cs = field_ea->cs; } if (b.u.bits.cs & CS_GE) { b.u.bits.cs = CS_APL; } else if ((b.u.bits.cs & CS_MASK) != CS_DBCS || d != DBCS_NONE) { b.u.bits.cs &= CS_MASK; } else { b.u.bits.cs = CS_BASE; } } } /* otherwise, EBC_null */ if (visible_control) { if (is_vc) { b.u.bits.gr = GR_UNDERLINE; } } else { b.u.bits.gr = gr & (GR_UNDERLINE | GR_INTENSIFY); } /* Check for SI/SO. */ if (d == DBCS_LEFT || d == DBCS_RIGHT) { b.u.bits.cs = CS_DBCS; } /* Check for blanks. */ if (crossable && CROSSED(baddr) && b.u.bits.cs == CS_BASE && bkm_isset(&b)) { b.u.bits.cs = CS_APL; b.u.bits.ec = map_crosshair(baddr); b.u.bits.fg = CROSS_COLOR; b.u.bits.gr = 0; } } /* * Compute selection state. * * DBCS characters always act as a unit, with the state * determined by the selection status and crosshair * intersection of either half. * - If either half is selected, both are considered selected. * - If either half lies in the crosshair, neither is * considered selected. */ is_selected = (SELECTED(baddr) != 0); switch (ctlr_dbcs_state(baddr)) { case DBCS_NONE: case DBCS_DEAD: case DBCS_LEFT_WRAP: case DBCS_RIGHT_WRAP: break; case DBCS_LEFT: case DBCS_SI: if ((baddr % COLS) != (COLS - 1) && SELECTED(baddr + 1)) { is_selected = true; } break; case DBCS_RIGHT: case DBCS_SB: /* XXX */ if ((baddr % COLS) && SELECTED(baddr - 1)) { is_selected = true; } break; } if (crossable && !reverse) { switch (ctlr_dbcs_state(baddr)) { case DBCS_NONE: case DBCS_DEAD: case DBCS_LEFT_WRAP: case DBCS_RIGHT_WRAP: break; case DBCS_LEFT: case DBCS_SI: break; case DBCS_RIGHT: case DBCS_SB: /* XXX */ break; } } /* * XOR the crosshair cursor with selections. */ if (is_selected) { b.u.bits.sel = 1; } if (!flipped) { *buffer++ = b; } else { *(buffer + fl_baddr(baddr)) = b; } sbp++; INC_BA(baddr); } while (baddr != last); /* Cancel blink timeouts if none were seen this pass. */ if (!any_blink) { text_blinkers_exist = false; } } /* * Resync the X display with the contents of 'buffer' */ static void resync_display(struct sp *buffer, int first, int last) { int i, j; int b = 0; int i0 = -1; bool ccheck; int fca = fl_baddr(cursor_addr); int first_row, last_row; # define SPREAD 10 if (first < 0) { first_row = 0; last_row = ROWS; } else { first_row = first / COLS; b = first_row * COLS; last_row = (last + (COLS-1)) / COLS; } for (i = first_row; i < last_row; b += COLS, i++) { int d0 = -1; int s0 = -1; /* Has the line changed? */ if (!memcmp((char *) &ss->image[b], (char *) &buffer[b], COLS*sizeof(struct sp))) { if (i0 >= 0) { render_blanks(i0 * COLS, i - i0, buffer); i0 = -1; } continue; } /* Is the new value empty? */ if (!visible_control && !(fca >= b && fca < (b+COLS)) && empty_space(&buffer[b], COLS)) { if (i0 < 0) { i0 = i; } continue; } /* Yes, it changed, and it isn't blank. Dump any pending blank lines. */ if (i0 >= 0) { render_blanks(i0 * COLS, i - i0, buffer); i0 = -1; } /* New text. Scan it. */ ccheck = cursor_displayed && fca >= b && fca < (b+COLS); for (j = 0; j < COLS; j++) { if (ccheck && b+j == fca) { /* Don't repaint over the cursor. */ /* Dump any pending "different" characters. */ if (d0 >= 0) { resync_text(b+d0, j-d0, buffer); } /* Start over. */ d0 = -1; s0 = -1; continue; } if (ss->image[b+j].u.word == buffer[b+j].u.word && ss->image[b+j].ucs4 == buffer[b+j].ucs4) { /* Character is the same. */ if (d0 >= 0) { /* Something is pending... */ if (s0 < 0) { /* Start of "same" area */ s0 = j; } else { /* nth matching character */ if (j - s0 > SPREAD) { /* too many */ resync_text(b+d0, s0-d0, buffer); d0 = -1; s0 = -1; } } } } else { /* Character is different. */ /* Forget intermediate matches. */ s0 = -1; if (d0 < 0) { /* Mark the start. */ d0 = j; } } } /* Dump any pending "different" characters. */ if (d0 >= 0) { resync_text(b+d0, COLS-d0, buffer); } } if (i0 >= 0) { render_blanks(i0 * COLS, last_row - i0, buffer); } } /* * Support code for cursor redraw. */ /* * Calculate a flipped baddr. */ static int fl_baddr(int baddr) { if (!flipped) { return baddr; } return ((baddr / COLS) * COLS) + (COLS - (baddr % COLS) - 1); } /* * Return the proper foreground color for a character position. */ static int char_color(int baddr) { int faddr; unsigned char fa; int color; faddr = find_field_attribute(baddr); fa = ea_buf[faddr].fa; /* * For non-display fields, we ignore gr and fg. */ if (FA_IS_ZERO(fa)) { color = fa_color(fa); if (appres.interactive.mono && SELECTED(baddr)) { color = INVERT_COLOR(color); } return color; } /* * Find the color of the character or the field. */ if (ea_buf[baddr].fg) { color = ea_buf[baddr].fg & COLOR_MASK; } else if (fa2ea(faddr)->fg && (!appres.modified_sel || !FA_IS_MODIFIED(fa))) { color = fa2ea(faddr)->fg & COLOR_MASK; } else { color = fa_color(fa); } /* * Now apply reverse video. * * One bit of strangeness: * If the buffer is a field attribute and we aren't using the * debug font, it's displayed as a blank; don't invert. */ if (!((ea_buf[baddr].fa && !visible_control)) && ((ea_buf[baddr].gr & GR_REVERSE) || (fa2ea(faddr)->gr & GR_REVERSE))) { color = INVERT_COLOR(color); } /* * In monochrome, apply selection status as well. */ if (appres.interactive.mono && SELECTED(baddr)) { color = INVERT_COLOR(color); } return color; } /* * Select a GC for drawing a hollow or underscore cursor. */ static GC cursor_gc(int baddr) { /* * If they say use a particular color, use it. */ if (xappres.use_cursor_color) { return ss->ucgc; } else { return get_gc(ss, char_color(baddr)); } } /* * Redraw one character. * If 'invert' is true, invert the foreground and background colors. */ static void redraw_char(int baddr, bool invert) { enum dbcs_state d; struct sp buffer[2]; int faddr; unsigned char fa; int gr; int blank_it = 0; int baddr2; int len = 1; int cursor_col = BA_TO_COL(cursor_addr); int cursor_row = BA_TO_ROW(cursor_addr); /* * Figure out the DBCS state of this position. If it's the right-hand * side of a DBCS character, repaint the left side instead. */ switch ((d = ctlr_dbcs_state(baddr))) { case DBCS_LEFT: case DBCS_SI: len = 2; break; case DBCS_RIGHT: len = 2; DEC_BA(baddr); break; default: break; } if (!invert) { int flb = fl_baddr(baddr); /* * Put back what belongs there. * Note that the cursor may have been covering a DBCS character * that is no longer DBCS, so if we're not at the right margin, * we should redraw two positions. */ #if defined(_ST) /*[*/ printf("%s:%d: rt%s\n", __FUNCTION__, __LINE__, rcba(flb)); #endif /*]*/ if (dbcs && ((baddr % COLS) != (COLS - 1)) && len == 1) { len = 2; } render_text(&ss->image[flb], flb, len, false, &ss->image[flb]); return; } baddr2 = baddr; INC_BA(baddr2); /* * Fabricate the right thing. * ss->image isn't going to help, because it may contain shortcuts * for faster display, so we have to construct a buffer to use. */ buffer[0].u.word = 0L; buffer[0].ucs4 = 0L; buffer[0].u.bits.ec = ea_buf[baddr].ec; buffer[0].u.bits.cs = ea_buf[baddr].cs; if (buffer[0].u.bits.cs & CS_GE) { buffer[0].u.bits.cs = CS_APL; } else { buffer[0].u.bits.cs &= CS_MASK; } buffer[0].ucs4 = ea_buf[baddr].ucs4; faddr = find_field_attribute(baddr); if (d == DBCS_LEFT || d == DBCS_RIGHT) { buffer[0].u.bits.cs = CS_DBCS; } fa = ea_buf[faddr].fa; if (FA_IS_ZERO(fa)) { gr = 0; } else { gr = ea_buf[baddr].gr; if (!gr) { gr = fa2ea(faddr)->gr; } } if (ea_buf[baddr].fa) { if (!visible_control) { blank_it = 1; } } else if (FA_IS_ZERO(fa)) { blank_it = 1; } else if (text_blinkers_exist && !text_blinking_on) { if (gr & GR_BLINK) { blank_it = 1; } } if (buffer[0].u.bits.cs == CS_BASE && bkm_isset(&buffer[0])) { blank_it = true; } if (blank_it) { if (CROSSABLE && CROSSED(baddr)) { buffer[0].u.bits.cs = CS_APL; buffer[0].u.bits.ec = map_crosshair(baddr); buffer[0].u.bits.fg = CROSS_COLOR; buffer[0].u.bits.gr = 0; } else { buffer[0].u.bits.ec = EBC_space; buffer[0].u.bits.cs = 0; } } buffer[0].u.bits.fg = char_color(baddr); buffer[0].u.bits.gr |= (gr & GR_INTENSIFY); if (len == 2) { buffer[1].u.word = buffer[0].u.word; if (!blank_it) { buffer[1].u.bits.ec = ea_buf[baddr2].ec; buffer[1].ucs4 = ea_buf[baddr2].ucs4; } } render_text(buffer, fl_baddr(baddr), len, true, buffer); } /* * Draw a hollow cursor. */ static void hollow_cursor(int baddr) { Dimension cwidth; enum dbcs_state d; d = ctlr_dbcs_state(baddr); switch (d) { case DBCS_RIGHT: DEC_BA(baddr); /* fall through... */ case DBCS_LEFT: case DBCS_SI: cwidth = (2 * ss->char_width) - 1; break; default: cwidth = ss->char_width - 1; break; } XDrawRectangle(display, ss->window, cursor_gc(baddr), ssCOL_TO_X(BA_TO_COL(fl_baddr(baddr))), ssROW_TO_Y(BA_TO_ROW(baddr)) - ss->ascent + (appres.interactive.mono ? 1 : 0), cwidth, ss->char_height - (appres.interactive.mono ? 2 : 1)); } /* * Draw an underscore cursor. */ static void underscore_cursor(int baddr) { Dimension cwidth; enum dbcs_state d; d = ctlr_dbcs_state(baddr); switch (d) { case DBCS_RIGHT: DEC_BA(baddr); /* fall through... */ case DBCS_LEFT: case DBCS_SI: cwidth = (2 * ss->char_width) - 1; break; default: cwidth = ss->char_width - 1; break; } XDrawRectangle(display, ss->window, cursor_gc(baddr), ssCOL_TO_X(BA_TO_COL(fl_baddr(baddr))), ssROW_TO_Y(BA_TO_ROW(baddr)) - ss->ascent + ss->char_height - 2, cwidth, 1); } /* * Invert a square over a character. */ static void small_inv_cursor(int baddr) { /* XXX: DBCS? */ XFillRectangle(display, ss->window, ss->mcgc, ssCOL_TO_X(BA_TO_COL(fl_baddr(baddr))), ssROW_TO_Y(BA_TO_ROW(baddr)) - ss->ascent + 1, ss->char_width, (ss->char_height > 2) ? (ss->char_height - 2) : 1); } /* * Draw or remove the cursor. */ static void put_cursor(int baddr, bool on) { /* * If the cursor is being turned off, simply redraw the text under it. */ if (!on) { redraw_char(baddr, false); return; } /* * If underscore cursor, redraw the character and draw the underscore. */ if (toggled(ALT_CURSOR)) { redraw_char(baddr, false); underscore_cursor(baddr); return; } /* * On, and not an underscore. * * If out of focus, either draw an empty box in its place (if block * cursor) or redraw the underscore (if underscore). */ if (!in_focus) { hollow_cursor(baddr); return; } /* * If monochrome, invert a small square over the characters. */ if (appres.interactive.mono) { small_inv_cursor(baddr); return; } /* * Color: redraw the character in reverse video. */ redraw_char(baddr, true); } /* Allocate a named color. */ static bool alloc_color(char *name, enum fallback_color fb_color, Pixel *pixel) { XColor cell, db; Screen *s; s = XtScreen(toplevel); if (name[0] == '#') { unsigned long rgb; char *endptr; rgb = strtoul(name + 1, &endptr, 16); if (endptr != name + 1 && !*endptr && !(rgb & ~0xffffff)) { memset(&db, '\0', sizeof(db)); db.red = (rgb >> 16) & 0xff; db.red |= (db.red << 8); db.green = (rgb >> 8) & 0xff; db.green |= (db.green << 8); db.blue = rgb & 0xff; db.blue |= (db.blue << 8); if (XAllocColor(display, XDefaultColormapOfScreen(s), &db) != 0) { *pixel = db.pixel; return true; } } } else { if (XAllocNamedColor(display, XDefaultColormapOfScreen(s), name, &cell, &db) != 0) { *pixel = db.pixel; return true; } } switch (fb_color) { case FB_WHITE: *pixel = XWhitePixelOfScreen(s); break; case FB_BLACK: *pixel = XBlackPixelOfScreen(s); break; } return false; } /* Spell out a fallback color. */ static const char * fb_name(enum fallback_color fb_color) { switch (fb_color) { case FB_WHITE: return "white"; case FB_BLACK: return "black"; } return "chartreuse"; /* to keep Gcc -Wall happy */ } /* Allocate color pixels. */ static void allocate_pixels(void) { if (appres.interactive.mono) { return; } /* Allocate constant elements. */ if (!alloc_color(xappres.colorbg_name, FB_BLACK, &colorbg_pixel)) { popup_an_error("Cannot allocate colormap \"%s\" for screen " "background, using \"black\"", xappres.colorbg_name); } if (!alloc_color(xappres.selbg_name, FB_BLACK, &selbg_pixel)) { popup_an_error("Cannot allocate colormap \"%s\" for select " "background, using \"black\"", xappres.selbg_name); } if (!alloc_color(xappres.keypadbg_name, FB_WHITE, &keypadbg_pixel)) { popup_an_error("Cannot allocate colormap \"%s\" for keypad " "background, using \"white\"", xappres.keypadbg_name); } if (xappres.use_cursor_color && !alloc_color(xappres.cursor_color_name, FB_WHITE, &cursor_pixel)) { popup_an_error("Cannot allocate colormap \"%s\" for cursor color, " "using \"white\"", xappres.cursor_color_name); } /* Allocate pseudocolors. */ if (!mode.m3279) { if (!alloc_color(xappres.normal_name, FB_WHITE, &normal_pixel)) { popup_an_error("Cannot allocate colormap \"%s\" for text, " "using \"white\"", xappres.normal_name); } if (!alloc_color(xappres.select_name, FB_WHITE, &select_pixel)) { popup_an_error("Cannot allocate colormap \"%s\" for selectable " "text, using \"white\"", xappres.select_name); } if (!alloc_color(xappres.bold_name, FB_WHITE, &bold_pixel)) { popup_an_error("Cannot allocate colormap \"%s\" for bold text, " "using \"white\"", xappres.bold_name); } } } /* Deallocate pixels. */ static void destroy_pixels(void) { int i; /* * It would make sense to deallocate many of the pixels here, but * the only available call (XFreeColors) would deallocate cells * that may be in use by other Xt widgets. Occh. */ for (i = 0; i < 16; i++) { cpx_done[i] = false; } } /* * Create graphics contexts. */ static void make_gcs(struct sstate *s) { XGCValues xgcv; if (mode.m3279) { int i; for (i = 0; i < NGCS; i++) { if (s->gc[i] != (GC)None) { XtReleaseGC(toplevel, s->gc[i]); s->gc[i] = (GC)None; } if (s->gc[i + NGCS] != (GC)None) { XtReleaseGC(toplevel, s->gc[i + NGCS]); s->gc[i + NGCS] = (GC)None; } if (s->selgc[i] != (GC)None) { XtReleaseGC(toplevel, s->selgc[i]); s->selgc[i] = (GC)None; } } } else { if (!appres.interactive.mono) { make_gc_set(s, FA_INT_NORM_NSEL, normal_pixel, colorbg_pixel); make_gc_set(s, FA_INT_NORM_SEL, select_pixel, colorbg_pixel); make_gc_set(s, FA_INT_HIGH_SEL, bold_pixel, colorbg_pixel); } else { make_gc_set(s, FA_INT_NORM_NSEL, xappres.foreground, xappres.background); make_gc_set(s, FA_INT_NORM_SEL, xappres.foreground, xappres.background); make_gc_set(s, FA_INT_HIGH_SEL, xappres.foreground, xappres.background); } } if (s->clrselgc != (GC)None) { XtReleaseGC(toplevel, s->clrselgc); s->clrselgc = (GC)None; } xgcv.foreground = selbg_pixel; s->clrselgc = XtGetGC(toplevel, GCForeground, &xgcv); /* Create monochrome block cursor GC. */ if (appres.interactive.mono && s->mcgc == (GC)None) { if (screen_depth > 1) { xgcv.function = GXinvert; } else { xgcv.function = GXxor; } xgcv.foreground = 1L; s->mcgc = XtGetGC(toplevel, GCForeground|GCFunction, &xgcv); } /* Create explicit cursor color cursor GCs. */ if (xappres.use_cursor_color) { if (s->ucgc != (GC)None) { XtReleaseGC(toplevel, s->ucgc); s->ucgc = (GC)None; } xgcv.foreground = cursor_pixel; s->ucgc = XtGetGC(toplevel, GCForeground, &xgcv); if (s->invucgc != (GC)None) { XtReleaseGC(toplevel, s->invucgc); s->invucgc = (GC)None; } xgcv.foreground = colorbg_pixel; xgcv.background = cursor_pixel; xgcv.font = s->fid; s->invucgc = XtGetGC(toplevel, GCForeground|GCBackground|GCFont, &xgcv); } /* Set the flag for overstriking bold. */ s->overstrike = (s->char_width > 1); } /* Set up a default color scheme. */ static void default_color_scheme(void) { static int default_attrib_colors[4] = { GC_NONDEFAULT | HOST_COLOR_GREEN, /* default */ GC_NONDEFAULT | HOST_COLOR_RED, /* intensified */ GC_NONDEFAULT | HOST_COLOR_BLUE, /* protected */ GC_NONDEFAULT | HOST_COLOR_NEUTRAL_WHITE /* protected, intensified */ }; int i; ibm_fb = FB_WHITE; for (i = 0; i < 16; i++) { XtFree(color_name[i]); color_name[i] = XtNewString("white"); } for (i = 0; i < 4; i++) { field_colors[i] = default_attrib_colors[i]; } } /* Transfer the colorScheme resource into arrays. */ static bool xfer_color_scheme(char *cs, bool do_popup) { int i; char *scheme_name = NULL; char *s0 = NULL, *scheme = NULL; char *tk; char *tmp_color_name[16]; enum fallback_color tmp_ibm_fb = FB_WHITE; char *tmp_colorbg_name = NULL; char *tmp_selbg_name = NULL; int tmp_field_colors[4]; if (cs == NULL) { goto failure; } scheme_name = xs_buffer("%s.%s", ResColorScheme, cs); s0 = get_resource(scheme_name); if (s0 == NULL) { if (do_popup) { popup_an_error("Can't find resource %s", scheme_name); } else { xs_warning("Can't find resource %s", scheme_name); } goto failure; } scheme = s0 = XtNewString(s0); for (i = 0; (tk = strtok(scheme, " \t\n")) != NULL; i++) { scheme = NULL; if (i > 22) { popup_an_error("Ignoring excess data in %s resource", scheme_name); break; } switch (i) { case 0: case 1: case 2: case 3: case 4: case 5: case 6: case 7: case 8: case 9: case 10: case 11: case 12: case 13: case 14: case 15: /* IBM color name */ tmp_color_name[i] = tk; break; case 16: /* default for IBM colors */ if (!strcmp(tk, "white")) { tmp_ibm_fb = FB_WHITE; } else if (!strcmp(tk, "black")) { tmp_ibm_fb = FB_BLACK; } else { if (do_popup) { popup_an_error("Invalid default color"); } else { xs_warning("Invalid default color"); } goto failure; } break; case 17: /* screen background */ tmp_colorbg_name = tk; break; case 18: /* select background */ tmp_selbg_name = tk; break; case 19: case 20: case 21: case 22: /* attribute colors */ tmp_field_colors[i-19] = atoi(tk); if (tmp_field_colors[i-19] < 0 || tmp_field_colors[i-19] > 0x0f) { if (do_popup) { popup_an_error("Invalid %s resource, ignoring", scheme_name); } else { xs_warning("Invalid %s resource, ignoring", scheme_name); } goto failure; } tmp_field_colors[i-19] |= GC_NONDEFAULT; } } if (i < 23) { if (do_popup) { popup_an_error("Insufficient data in %s resource", scheme_name); } else { xs_warning("Insufficient data in %s resource", scheme_name); } goto failure; } /* Success: transfer to live variables. */ for (i = 0; i < 16; i++) { XtFree(color_name[i]); color_name[i] = XtNewString(tmp_color_name[i]); } ibm_fb = tmp_ibm_fb; xappres.colorbg_name = XtNewString(tmp_colorbg_name); xappres.selbg_name = XtNewString(tmp_selbg_name); for (i = 0; i < 4; i++) { field_colors[i] = tmp_field_colors[i]; } /* Clean up and exit. */ XtFree(scheme_name); XtFree(s0); return true; failure: XtFree(scheme_name); XtFree(s0); return false; } /* Look up a GC, allocating it if necessary. */ static GC get_gc(struct sstate *s, int color) { int pixel_index; XGCValues xgcv; GC r; static bool in_gc_error = false; if (color & GC_NONDEFAULT) { color &= ~GC_NONDEFAULT; } else { color = (color & INVERT_MASK) | DEFAULT_PIXEL; } if ((r = s->gc[color]) != (GC)None) { return r; } /* Allocate the pixel. */ pixel_index = PIXEL_INDEX(color); if (!cpx_done[pixel_index]) { if (!alloc_color(color_name[pixel_index], ibm_fb, &cpx[pixel_index])) { if (!in_gc_error) { in_gc_error = true; popup_an_error("Cannot allocate colormap \"%s\" for 3279 " "color %d (%s), using \"%s\"", color_name[pixel_index], pixel_index, see_color((unsigned char)(pixel_index + 0xf0)), fb_name(ibm_fb)); in_gc_error = false; } } cpx_done[pixel_index] = true; } /* Allocate the GC. */ xgcv.font = s->fid; if (!(color & INVERT_MASK)) { xgcv.foreground = cpx[pixel_index]; xgcv.background = colorbg_pixel; } else { xgcv.foreground = colorbg_pixel; xgcv.background = cpx[pixel_index]; } if (s == &nss && pixel_index == DEFAULT_PIXEL) { xgcv.graphics_exposures = true; r = XtGetGC(toplevel, GCForeground|GCBackground|GCFont|GCGraphicsExposures, &xgcv); } else { r = XtGetGC(toplevel, GCForeground|GCBackground|GCFont, &xgcv); } return s->gc[color] = r; } /* Look up a selection GC, allocating it if necessary. */ static GC get_selgc(struct sstate *s, int color) { XGCValues xgcv; GC r; if (color & GC_NONDEFAULT) { color = PIXEL_INDEX(color); } else { color = DEFAULT_PIXEL; } if ((r = s->selgc[color]) != (GC)None) { return r; } /* Allocate the pixel. */ if (!cpx_done[color]) { if (!alloc_color(color_name[color], FB_WHITE, &cpx[color])) { popup_an_error("Cannot allocate colormap \"%s\" for 3279 color " "%d (%s), using \"white\"", color_name[color], color, see_color((unsigned char)(color + 0xf0))); } cpx_done[color] = true; } /* Allocate the GC. */ xgcv.font = s->fid; xgcv.foreground = cpx[color]; xgcv.background = selbg_pixel; return s->selgc[color] = XtGetGC(toplevel, GCForeground|GCBackground|GCFont, &xgcv); } /* External entry points for GC allocation. */ GC screen_gc(int color) { return get_gc(ss, color | GC_NONDEFAULT); } GC screen_invgc(int color) { return get_gc(ss, INVERT_COLOR(color | GC_NONDEFAULT)); } /* * Preallocate a set of graphics contexts for a given color. * * This logic is used only in pseudo-color mode. In full color mode, * GCs are allocated dynamically by get_gc(). */ static void make_gc_set(struct sstate *s, int i, Pixel fg, Pixel bg) { XGCValues xgcv; if (s->gc[i] != (GC)None) { XtReleaseGC(toplevel, s->gc[i]); } xgcv.foreground = fg; xgcv.background = bg; xgcv.graphics_exposures = true; xgcv.font = s->fid; if (s == &nss && !i) { s->gc[i] = XtGetGC(toplevel, GCForeground|GCBackground|GCFont|GCGraphicsExposures, &xgcv); } else { s->gc[i] = XtGetGC(toplevel, GCForeground|GCBackground|GCFont, &xgcv); } if (s->gc[NGCS + i] != (GC)None) { XtReleaseGC(toplevel, s->gc[NGCS + i]); } xgcv.foreground = bg; xgcv.background = fg; s->gc[NGCS + i] = XtGetGC(toplevel, GCForeground|GCBackground|GCFont, &xgcv); if (!appres.interactive.mono) { if (s->selgc[i] != (GC)None) { XtReleaseGC(toplevel, s->selgc[i]); } xgcv.foreground = fg; xgcv.background = selbg_pixel; s->selgc[i] = XtGetGC(toplevel, GCForeground|GCBackground|GCFont, &xgcv); } } /* * Convert an attribute to a color index. */ static int fa_color(unsigned char fa) { # define DEFCOLOR_MAP(f) \ ((((f) & FA_PROTECT) >> 4) | (((f) & FA_INT_HIGH_SEL) >> 3)) if (mode.m3279) { /* * Color indices are the low-order 4 bits of a 3279 color * identifier (0 through 15) */ if (appres.modified_sel && FA_IS_MODIFIED(fa)) { return GC_NONDEFAULT | (xappres.modified_sel_color & 0xf); } else if (xappres.visual_select && FA_IS_SELECTABLE(fa) && !FA_IS_INTENSE(fa)) { return GC_NONDEFAULT | (xappres.visual_select_color & 0xf); } else { return field_colors[DEFCOLOR_MAP(fa)]; } } else { /* * Color indices are the intensity bits (0 through 2) */ if (FA_IS_ZERO(fa) || (appres.modified_sel && FA_IS_MODIFIED(fa))) { return GC_NONDEFAULT | FA_INT_NORM_SEL; } else { return GC_NONDEFAULT | (fa & 0x0c); } } } /* * Event handlers for toplevel FocusIn, FocusOut, KeymapNotify and * PropertyChanged events. */ static bool toplevel_focused = false; static bool keypad_entered = false; void PA_Focus_xaction(Widget w _is_unused, XEvent *event, String *params _is_unused, Cardinal *num_params _is_unused) { XFocusChangeEvent *fe = (XFocusChangeEvent *)event; #if defined(INTERNAL_ACTION_DEBUG) /*[*/ xaction_debug(PA_Focus_xaction, event, params, num_params); #endif /*]*/ switch (fe->type) { case FocusIn: if (fe->detail != NotifyPointer) { toplevel_focused = true; screen_focus(true); } break; case FocusOut: toplevel_focused = false; if (!toplevel_focused && !keypad_entered) { screen_focus(false); } break; } } void PA_EnterLeave_xaction(Widget w _is_unused, XEvent *event _is_unused, String *params _is_unused, Cardinal *num_params _is_unused) { XCrossingEvent *ce = (XCrossingEvent *)event; #if defined(INTERNAL_ACTION_DEBUG) /*[*/ xaction_debug(PA_EnterLeave_xaction, event, params, num_params); #endif /*]*/ switch (ce->type) { case EnterNotify: keypad_entered = true; screen_focus(true); break; case LeaveNotify: keypad_entered = false; if (!toplevel_focused && !keypad_entered) { screen_focus(false); } break; } } void PA_KeymapNotify_xaction(Widget w _is_unused, XEvent *event, String *params _is_unused, Cardinal *num_params _is_unused) { XKeymapEvent *k = (XKeymapEvent *)event; #if defined(INTERNAL_ACTION_DEBUG) /*[*/ xaction_debug(PA_KeymapNotify_xaction, event, params, num_params); #endif /*]*/ shift_event(state_from_keymap(k->key_vector)); } static void query_window_state(void) { Atom actual_type; int actual_format; unsigned long nitems; unsigned long leftover; unsigned char *data = NULL; static bool was_up = false; bool maximized_horz = false; bool maximized_vert = false; bool was_iconic = iconic; bool was_maximized = maximized; /* Get WM_STATE to see if we're iconified. */ if (XGetWindowProperty(display, XtWindow(toplevel), a_state, 0L, (long)BUFSIZ, false, AnyPropertyType, &actual_type, &actual_format, &nitems, &leftover, &data) == Success) { if (actual_type == a_state && actual_format == 32) { if (*(unsigned long *)data == IconicState) { iconic = true; keypad_popdown(&was_up); } else { iconic = false; invert_icon(false); keypad_first_up(); if (was_up) { keypad_popup(); was_up = false; } } } XFree(data); } if (iconic != was_iconic) { vtrace("%s\n", iconic? "Iconified": "Not iconified"); } /* Get _NET_WM_STATE to see if we're maximized. */ data = NULL; if (XGetWindowProperty(display, XtWindow(toplevel), a_net_wm_state, 0L, (long)BUFSIZ, false, AnyPropertyType, &actual_type, &actual_format, &nitems, &leftover, &data) == Success) { if (actual_type == a_atom && actual_format == 32) { unsigned long item; Atom *prop = (Atom *)data; for (item = 0; item < nitems; item++) { if (prop[item] == a_net_wm_state_maximized_horz) { maximized_horz = true; } if (prop[item] == a_net_wm_state_maximized_vert) { maximized_vert = true; } } } XFree(data); maximized = (maximized_horz && maximized_vert); } if (maximized != was_maximized) { vtrace("%s\n", maximized? "Maximized": "Not maximized"); menubar_snap_enable(!maximized); /* * If the integral keypad is on when we are maximized, then it is okay * to toggle it on and off. Otherwise, no. */ menubar_keypad_sensitive(!maximized || kp_placement != kp_integral || xappres.keypad_on); } } void PA_StateChanged_xaction(Widget w _is_unused, XEvent *event, String *params, Cardinal *num_params) { #if defined(INTERNAL_ACTION_DEBUG) /*[*/ xaction_debug(PA_StateChanged_xaction, event, params, num_params); #endif /*]*/ query_window_state(); } /* * Handle Shift events (KeyPress and KeyRelease events, or KeymapNotify events * that occur when the mouse enters the window). */ void shift_event(int event_state) { static int old_state; bool shifted_now = (event_state & (ShiftKeyDown | MetaKeyDown | AltKeyDown)) != 0; if (event_state != old_state) { old_state = event_state; status_shift_mode(event_state); if (shifted != shifted_now) { shifted = shifted_now; keypad_shift(); } } } /* * Handle the mouse entering and leaving the window. */ static void screen_focus(bool in) { /* * Update the input context focus. */ if (ic != NULL) { if (in) { XSetICFocus(ic); } else { XUnsetICFocus(ic); } } /* * Cancel any pending cursor blink. If we just came into focus and * have a blinking cursor, we will start a fresh blink cycle below, so * the filled-in cursor is visible for a full turn. */ cancel_blink(); /* * If the cursor is disabled, simply change internal state. */ if (!CONNECTED) { in_focus = in; return; } /* * Change the appearance of the cursor. Make it hollow out or fill in * instantly, even if it was blinked off originally. */ cursor_off("focus", true, NULL); in_focus = in; cursor_on("focus"); /* * Slight kludge: If the crosshair cursor is enabled, redraw the whole * screen, to draw or erase it. */ if (toggled(CROSSHAIR)) { screen_changed = true; first_changed = 0; last_changed = ROWS*COLS; screen_disp(false); } /* * If we just came into focus and we're supposed to have a blinking * cursor, schedule a blink. */ if (in_focus && toggled(CURSOR_BLINK)) { schedule_cursor_blink(); } } /* * Change fonts. */ static bool SetFont_action(ia_t ia, unsigned argc, const char **argv) { action_debug(AnSetFont, ia, argc, argv); if (check_argc(AnSetFont, argc, 1, 1) < 0) { return false; } screen_newfont(argv[0], true, false); return true; } /* * Split an emulatorFontList resource entry, which looks like: * [menu-name:] [#noauto] [#resize] font-name * Modifies the input string. */ static void split_font_list_entry(char *entry, char **menu_name, bool *noauto, bool *resize, char **font_name) { char *colon; char *s; bool any = false; if (menu_name != NULL) { *menu_name = NULL; } if (noauto != NULL) { *noauto = false; } if (resize != NULL) { *resize = false; } colon = strchr(entry, ':'); if (colon != NULL) { if (menu_name != NULL) { *menu_name = entry; } *colon = '\0'; s = colon + 1; } else { s = entry; } do { any = false; while (isspace((unsigned char)*s)) { s++; } if (!strncmp(s, "#noauto", 7) && (!s[7] || isspace((unsigned char)s[7]))) { if (noauto != NULL) { *noauto = true; } s += 7; any = true; } else if (!strncmp(s, "#resize", 7) && (!s[7] || isspace((unsigned char)s[7]))) { if (resize != NULL) { *resize = true; } s += 7; any = true; } } while (any); *font_name = s; } /* * Load a font with a display character set required by a charset. * Returns true for success, false for failure. * If it succeeds, the caller is responsible for calling: * screen_reinit(FONT_CHANGE) */ bool screen_new_display_charsets(const char *realname, const char *csnames) { char *rl; char *s0, *s; char *fontname = NULL; char *lff; bool font_found = false; const char *display_charsets; const char *dbcs_display_charsets; /* Handle the default. */ if (realname == NULL) { /* Handle the default. */ display_charsets = default_display_charset; } else { /* Look up the display character set(s). */ display_charsets = lookup_display_charset(realname); assert(display_charsets != NULL); dbcs_display_charsets = lookup_display_charset_dbcs(realname); if (dbcs_display_charsets != NULL) { display_charsets = lazyaf("%s+%s", display_charsets, dbcs_display_charsets); } } /* * If the emulator fonts already implement those charsets, we're done. */ if (efont_charset != NULL && !strcmp(display_charsets, efont_charset)) { goto done; } /* * If the user chose an emulator font, but we haven't tried it yet, * see if it implements the right charset. */ if (efontname == NULL && xappres.efontname != NULL) { lff = load_fixed_font(xappres.efontname, display_charsets); if (lff != NULL) { if (strcmp(xappres.efontname, "3270")) { popup_an_error("%s", lff); } Free(lff); } else { fontname = xappres.efontname; } } /* * Otherwise, try to get a font from the resize lists. */ if (fontname == NULL) { rl = get_fresource("%s.%s", ResEmulatorFontList, display_charsets); if (rl != NULL) { s0 = s = NewString(rl); while (!font_found && split_lresource(&s, &fontname) == 1) { bool noauto = false; char *fn = NULL; split_font_list_entry(fontname, NULL, &noauto, NULL, &fn); if (noauto || !*fn) { continue; } lff = load_fixed_font(fn, display_charsets); if (lff != NULL) { Free(lff); } else { font_found = true; } } Free(s0); } if (!font_found && (!strcasecmp(display_charsets, default_display_charset) || !strcasecmp(display_charsets, "iso8859-1"))) { /* Try "fixed". */ if ((lff = load_fixed_font("!fixed", display_charsets)) == NULL) { font_found = true; } else { /* Fatal. */ xs_error("%s", lff); Free(lff); /*NOTREACHED*/ return false; } } if (!font_found) { char *cs_dup; char *cs; char *buf; char *lasts = NULL; if (strchr(display_charsets, '+') != NULL) { /* * Despite what the code below appears to be * able to do, we don't know how to search for a * DBCS font. Bail here. */ return false; } buf = cs_dup = NewString(display_charsets); while (!font_found && (cs = strtok_r(buf, ",", &lasts)) != NULL) { char *part1 = NULL, *part2 = NULL; int n_parts = 1; buf = NULL; n_parts = split_dbcs_resource(cs, '+', &part1, &part2); if (n_parts == 1 && !strncasecmp(cs, "3270cg", 6)) { free(part1); continue; } lff = load_fixed_font(NULL, cs); if (lff != NULL) { Free(lff); } else { font_found = true; } if (part1 != NULL) { Free(part1); } if (part2 != NULL) { Free(part2); } } Free(cs_dup); } if (!font_found) { char *xs = expand_cslist(display_charsets); popup_an_error("No %s fonts found", xs); Free(xs); return false; } } allow_resize = xappres.allow_resize; done: /* Set the appropriate global. */ Replace(required_display_charsets, display_charsets? NewString(display_charsets): NULL); init_rsfonts(required_display_charsets); return true; } void screen_newfont(const char *fontnames, bool do_popup, bool is_cs) { char *old_font; char *lff; /* Do nothing, successfully. */ if (!is_cs && efontname && !strcmp(fontnames, efontname)) { return; } /* Save the old font before trying the new one. */ old_font = XtNewString(efontname); /* Try the new one. */ if ((lff = load_fixed_font(fontnames, required_display_charsets)) != NULL) { if (do_popup) { popup_an_error("%s", lff); } Free(lff); XtFree(old_font); return; } /* Store the old name away, in case we have to go back to it. */ Replace(redo_old_font, old_font); screen_redo = REDO_FONT; screen_reinit(FONT_CHANGE); efont_changed = true; } /* * Expand a character set list into English. */ static char * expand_cslist(const char *s) { int commas = 0; const char *t; char *comma; char *r; /* Count the commas. */ for (t = s; (comma = strchr(t, ',')) != NULL; t = comma + 1) { commas++; } /* If there aren't any, there isn't any work to do. */ if (!commas) { return NewString(s); } /* Allocate enough space for "a, b, c or d". */ r = Malloc(strlen(s) + (commas * 2) + 2 + 1); *r = '\0'; /* Copy and expand. */ for (t = s; (comma = strchr(t, ',')) != NULL; t = comma + 1) { int wl = comma - t; if (*r) { strcat(r, ", "); } strncat(r, t, wl); } return strcat(strcat(r, " or "), t); } /* * Load and query a font. * Returns NULL (okay) or an error message. */ static char * load_fixed_font(const char *names, const char *reqd_display_charsets) { int num_names = 1, num_cs = 1; char *name1 = NULL, *name2 = NULL; char *charset1 = NULL, *charset2 = NULL; char *r; #if defined(DEBUG_FONTPICK) /*[*/ fprintf(stderr, "load_fixed_font(%s, %s)\n", names? names: "(wild)", reqd_display_charsets); #endif /*]*/ /* Split out the names and character sets. */ if (names) { num_names = split_dbcs_resource(names, '+', &name1, &name2); } num_cs = split_dbcs_resource(reqd_display_charsets, '+', &charset1, &charset2); if (!names) { num_names = num_cs; } if (num_names == 1 && num_cs >= 2) { Free(name1); Free(name2); Free(charset1); Free(charset2); return NewString("Must specify two font names (SBCS+DBCS)"); } if (num_names == 2 && num_cs < 2) { Free(name2); name2 = NULL; } /* If there's a DBCS font, load that first. */ if (name2 != NULL) { /* Load the second font. */ r = lff_single(name2, charset2, true); if (r != NULL) { Free(name1); Free(charset1); return r; } } else { dbcs_font.font_struct = NULL; dbcs_font.font = None; dbcs = false; } /* Load the SBCS font. */ r = lff_single(name1, charset1, false); /* Free the split-out names and return the final result. */ Free(name1); Free(name2); Free(charset1); Free(charset2); return r; } static bool charset_in_reqd(const char *charset, const char *reqd) { char *r = NewString(reqd); char *str = r; char *tok; bool rv = false; while ((tok = strtok(str, ",")) != NULL) { str = NULL; if (!strcasecmp(charset, tok)) { rv = true; break; } } Free(r); return rv; } /* * Load and query one font. * Returns NULL (okay) or an error message. */ static char * lff_single(const char *name, const char *reqd_display_charset, bool is_dbcs) { XFontStruct *g; const char *best = NULL; #if defined(DEBUG_FONTPICK) /*[*/ fprintf(stderr, "lff_single: name %s, cs %s, %s\n", name? name: "(wild)", reqd_display_charset, is_dbcs? "dbcs": "sbcs"); #endif /*]*/ if (name && *name == '!') { name++; } if (name) { char **names; int count; XFontStruct *f; unsigned long svalue; char *spacing, *family_name, *font_encoding, *fe, *charset; /* Check the character set */ names = XListFontsWithInfo(display, name, 1, &count, &f); if (names == NULL) { return xs_buffer("Font %s\nnot found", name); } if (XGetFontProperty(f, a_spacing, &svalue)) { spacing = XGetAtomName(display, svalue); } else { XFreeFontInfo(names, f, count); return xs_buffer("Font %s\nhas no spacing property", name); } if (strcasecmp(spacing, "c") && strcasecmp(spacing, "m")) { XFreeFontInfo(names, f, count); return xs_buffer("Font %s\nhas invalid spacing property '%s'", name, spacing); } if (XGetFontProperty(f, a_registry, &svalue)) { family_name = XGetAtomName(display, svalue); } else { XFreeFontInfo(names, f, count); return xs_buffer("Font %s\nhas no registry property", name); } if (XGetFontProperty(f, a_encoding, &svalue)) { font_encoding = XGetAtomName(display, svalue); } else { XFreeFontInfo(names, f, count); return xs_buffer("Font %s\nhas no encoding property", name); } if (font_encoding[0] == '-') { fe = font_encoding + 1; } else { fe = font_encoding; } XFreeFontInfo(names, f, count); charset = xs_buffer("%s-%s", family_name, fe); Free(family_name); Free(font_encoding); if (!charset_in_reqd(charset, reqd_display_charset)) { char *r = xs_buffer("Font %s\nimplements %s, not %s\n", name, charset, reqd_display_charset); Free(charset); return r; } Free(charset); best = name; } else { void *cookie; dfc_t *d; int best_pixel_size = 0; char *best_weight = NULL; cookie = NULL; while (dfc_search_family(reqd_display_charset, &d, &cookie)) { if (best == NULL || (labs(d->points - 14) < labs(best_pixel_size - 14)) || (best_weight == NULL || (!strcasecmp(best_weight, "bold") && strcasecmp(d->weight, "bold")))) { best = d->name; best_weight = d->weight; best_pixel_size = d->points; } } if (best == NULL) { return xs_buffer("No %s fonts found", reqd_display_charset); } } g = XLoadQueryFont(display, best); if (g == NULL) { return xs_buffer("Font %s could not be loaded", best); } set_font_globals(g, best, best, g->fid, is_dbcs); return NULL; } /* * Figure out what sort of registry and encoding we want. */ char * display_charset(void) { return (required_display_charsets != NULL)? required_display_charsets: default_display_charset; } /* * Set globals based on font name and info */ static void set_font_globals(XFontStruct *f, const char *ef, const char *fef, Font ff, bool is_dbcs) { unsigned long svalue; unsigned i; char *family_name = NULL; char *font_encoding = NULL; char *fe = NULL; char *font_charset = NULL; if (XGetFontProperty(f, a_registry, &svalue)) { family_name = XGetAtomName(display, svalue); } if (family_name == NULL) { Error("Cannot get font family_name"); } if (XGetFontProperty(f, a_encoding, &svalue)) { font_encoding = XGetAtomName(display, svalue); } if (font_encoding == NULL) { Error("Cannot get font encoding"); } if (font_encoding[0] == '-') { fe = font_encoding + 1; } else { fe = font_encoding; } font_charset = xs_buffer("%s-%s", family_name, fe); Free(font_encoding); if (is_dbcs) { /* Hack. */ dbcs_font.font_struct = f; dbcs_font.font = f->fid; dbcs_font.unicode = !strcasecmp(family_name, "iso10646"); dbcs_font.ascent = f->max_bounds.ascent; dbcs_font.descent = f->max_bounds.descent; dbcs_font.char_width = fCHAR_WIDTH(f); dbcs_font.char_height = dbcs_font.ascent + dbcs_font.descent; dbcs_font.d16_ix = display16_init(font_charset); dbcs = true; Replace(full_efontname_dbcs, XtNewString(fef)); Replace(efont_charset_dbcs, font_charset); Free(family_name); return; } Replace(efontname, XtNewString(ef)); Replace(full_efontname, XtNewString(fef)); Replace(efont_charset, font_charset); /* Set the dimensions. */ nss.char_width = fCHAR_WIDTH(f); nss.char_height = fCHAR_HEIGHT(f); nss.fid = ff; if (nss.font != NULL) { XFreeFontInfo(NULL, nss.font, 1); } nss.font = f; nss.ascent = f->ascent; nss.descent = f->descent; /* Figure out if this is a 3270 font, or a standard X font. */ if (XGetFontProperty(f, XA_FAMILY_NAME, &svalue)) { nss.standard_font = (Atom) svalue != a_3270; } else if (!strncmp(efontname, "3270", 4)) { nss.standard_font = false; } else { nss.standard_font = true; } /* Set other globals. */ if (nss.standard_font) { nss.extended_3270font = false; nss.full_apl_font = false; nss.font_8bit = efont_matches; nss.font_16bit = (f->max_byte1 > 0); nss.d8_ix = display8_init(nss.font_8bit? font_charset: "ascii-7"); } else { #if defined(BROKEN_MACH32) nss.extended_3270font = false; #else nss.extended_3270font = f->max_byte1 > 0 || f->max_char_or_byte2 > 255; #endif nss.full_apl_font = !strcmp(ef, "3270"); /* hack! */ nss.font_8bit = false; nss.font_16bit = false; nss.d8_ix = display8_init(font_charset); } nss.unicode_font = !strcasecmp(family_name, "iso10646"); Free(family_name); /* See if this font has any unusually-shaped characters. */ INIT_ODD(nss.odd_width); INIT_ODD(nss.odd_lbearing); nss.funky_font = false; if (!nss.extended_3270font && f->per_char != NULL) { for (i = 0; i < 256; i++) { if (PER_CHAR(f, i).width == 0 && (PER_CHAR(f, i).rbearing | PER_CHAR(f, i).lbearing | PER_CHAR(f, i).ascent | PER_CHAR(f, i).descent) == 0) { /* Missing character. */ continue; } if (PER_CHAR(f, i).width != f->max_bounds.width) { SET_ODD(nss.odd_width, i); nss.funky_font = true; } if (PER_CHAR(f, i).lbearing < 0) { SET_ODD(nss.odd_lbearing, i); nss.funky_font = true; } } } /* * If we've changed the rules for resizing, let the window manager * know. */ if (container != NULL) { vtrace("set_font_globals(%s)\n", ef); } } /* * Font initialization. */ void font_init(void) { } /* * Change models. */ void screen_change_model(int mn, int ovc, int ovr) { if (CONNECTED || (model_num == mn && ovc == ov_cols && ovr == ov_rows)) { return; } redo_old_model = model_num; redo_old_ov_cols = ov_cols; redo_old_ov_rows = ov_rows; screen_redo = REDO_MODEL; model_changed = true; if (ov_cols != ovc || ov_rows != ovr) { oversize_changed = true; } set_rows_cols(mn, ovc, ovr); screen_reinit(MODEL_CHANGE); /* Redo the terminal type. */ net_set_default_termtype(); } /* * Change emulation modes. */ void screen_extended(bool extended _is_unused) { set_rows_cols(model_num, ov_cols, ov_rows); model_changed = true; } void screen_m3279(bool m3279 _is_unused) { destroy_pixels(); screen_reinit(COLOR_CHANGE); set_rows_cols(model_num, ov_cols, ov_rows); model_changed = true; } /* * Change color schemes. Alas, this is destructive if it fails. */ void screen_newscheme(char *s) { bool xferred; if (!mode.m3279) { return; } destroy_pixels(); xferred = xfer_color_scheme(s, true); if (xferred) { xappres.color_scheme = s; } screen_reinit(COLOR_CHANGE); scheme_changed = true; } /* * Change host code pages. */ void screen_newcodepage(char *cpname) { char *old_codepage = NewString(get_codepage_name()); switch (codepage_init(cpname)) { case CS_OKAY: /* Success. */ Free(old_codepage); st_changed(ST_CODEPAGE, true); codepage_changed = true; break; case CS_NOTFOUND: Free(old_codepage); popup_an_error("Cannot find definition of host code page \"%s\"", cpname); break; case CS_BAD: Free(old_codepage); popup_an_error("Invalid code page definition for \"%s\"", cpname); break; case CS_PREREQ: Free(old_codepage); popup_an_error("No fonts for host code page \"%s\"", cpname); break; case CS_ILLEGAL: /* Error already popped up. */ Free(old_codepage); break; } } /* * Visual or not-so-visual bell */ void ring_bell(void) { static XGCValues xgcv; static GC bgc; static int initted; struct timeval tv; /* Ring the real display's bell. */ if (!appres.interactive.visual_bell) { XBell(display, xappres.bell_volume); } /* If we're iconic, invert the icon and return. */ if (!xappres.active_icon) { query_window_state(); if (iconic) { invert_icon(true); return; } } if (!appres.interactive.visual_bell || !ss->exposed_yet) { return; } /* Do a screen flash. */ if (!initted) { xgcv.function = GXinvert; bgc = XtGetGC(toplevel, GCFunction, &xgcv); initted = 1; } screen_disp(false); XFillRectangle(display, ss->window, bgc, 0, 0, ss->screen_width, ss->screen_height); XSync(display, 0); tv.tv_sec = 0; tv.tv_usec = 125000; select(0, NULL, NULL, NULL, &tv); XFillRectangle(display, ss->window, bgc, 0, 0, ss->screen_width, ss->screen_height); XSync(display, 0); } /* * Window deletion */ void PA_WMProtocols_xaction(Widget w, XEvent *event, String *params, Cardinal *num_params) { XClientMessageEvent *cme = (XClientMessageEvent *)event; #if defined(INTERNAL_ACTION_DEBUG) /*[*/ xaction_debug(PA_WMProtocols_xaction, event, params, num_params); #endif /*]*/ if ((Atom)cme->data.l[0] == a_delete_me) { if (w == toplevel) { x3270_exit(0); } else { XtPopdown(w); } } else if ((Atom)cme->data.l[0] == a_save_yourself && w == toplevel) { save_yourself(); } } /* Initialize the icon. */ void icon_init(void) { x3270_icon = XCreateBitmapFromData(display, root_window, (char *)x3270_bits, x3270_width, x3270_height); if (xappres.active_icon) { Dimension iw, ih; aicon_font_init(); aicon_size(&iw, &ih); icon_shell = XtVaAppCreateShell( "x3270icon", "X3270", overrideShellWidgetClass, display, XtNwidth, iw, XtNheight, ih, XtNmappedWhenManaged, False, NULL); XtRealizeWidget(icon_shell); XtVaSetValues(toplevel, XtNiconWindow, XtWindow(icon_shell), NULL); if (xappres.active_icon) { XtVaSetValues(icon_shell, XtNbackground, appres.interactive.mono? xappres.background: colorbg_pixel, NULL); } } else { unsigned i; for (i = 0; i < sizeof(x3270_bits); i++) { x3270_bits[i] = ~x3270_bits[i]; } inv_icon = XCreateBitmapFromData(display, root_window, (char *)x3270_bits, x3270_width, x3270_height); wait_icon = XCreateBitmapFromData(display, root_window, (char *)wait_bits, wait_width, wait_height); for (i = 0; i < sizeof(wait_bits); i++) { wait_bits[i] = ~wait_bits[i]; } inv_wait_icon = XCreateBitmapFromData(display, root_window, (char *)wait_bits, wait_width, wait_height); XtVaSetValues(toplevel, XtNiconPixmap, x3270_icon, XtNiconMask, x3270_icon, NULL); } } /* * Initialize the active icon font information. */ static void aicon_font_init(void) { XFontStruct *f; Font ff; char **matches; int count; if (!xappres.active_icon) { xappres.label_icon = False; return; } matches = XListFontsWithInfo(display, xappres.icon_font, 1, &count, &f); if (matches == NULL) { popup_an_error("No font %s \"%s\"\nactiveIcon will not work", ResIconFont, xappres.icon_font); xappres.active_icon = False; return; } ff = XLoadFont(display, matches[0]); iss.char_width = fCHAR_WIDTH(f); iss.char_height = fCHAR_HEIGHT(f); iss.fid = ff; iss.font = f; iss.ascent = f->ascent; iss.overstrike = false; iss.standard_font = true; iss.extended_3270font = false; iss.font_8bit = false; iss.obscured = true; iss.d8_ix = display8_init("ascii-7"); if (xappres.label_icon) { matches = XListFontsWithInfo(display, xappres.icon_label_font, 1, &count, &ailabel_font); if (matches == NULL) { popup_an_error("Cannot load %s \"%s\" font\nlabelIcon will not " "work", ResIconLabelFont, xappres.icon_label_font); xappres.label_icon = False; return; } ailabel_font->fid = XLoadFont(display, matches[0]); aicon_label_height = fCHAR_HEIGHT(ailabel_font) + 2; } INIT_ODD(iss.odd_width); INIT_ODD(iss.odd_lbearing); iss.funky_font = false; } /* * Determine the current size of the active icon. */ static void aicon_size(Dimension *iw, Dimension *ih) { XIconSize *is; int count; *iw = maxCOLS*iss.char_width + 2*VHALO; *ih = maxROWS*iss.char_height + 2*HHALO + aicon_label_height; if (XGetIconSizes(display, root_window, &is, &count)) { if (*iw > (unsigned) is[0].max_width) { *iw = is[0].max_width; } if (*ih > (unsigned) is[0].max_height) { *ih = is[0].max_height; } } } /* * Initialize the active icon. Assumes that aicon_font_init has already been * called. */ static void aicon_init(void) { if (!xappres.active_icon) { return; } iss.widget = icon_shell; iss.window = XtWindow(iss.widget); iss.cursor_daddr = 0; iss.exposed_yet = false; if (xappres.label_icon) { XGCValues xgcv; xgcv.font = ailabel_font->fid; xgcv.foreground = xappres.foreground; xgcv.background = xappres.background; ailabel_gc = XtGetGC(toplevel, GCFont|GCForeground|GCBackground, &xgcv); } } /* * Reinitialize the active icon. */ static void aicon_reinit(unsigned cmask) { if (!xappres.active_icon) { return; } if (cmask & (FONT_CHANGE | COLOR_CHANGE)) { make_gcs(&iss); } if (cmask & MODEL_CHANGE) { aicon_size(&iss.screen_width, &iss.screen_height); Replace(iss.image, (struct sp *)XtMalloc(sizeof(struct sp) * maxROWS * maxCOLS)); XtVaSetValues(iss.widget, XtNwidth, iss.screen_width, XtNheight, iss.screen_height, NULL); } if (cmask & (MODEL_CHANGE | FONT_CHANGE | COLOR_CHANGE)) { memset((char *)iss.image, 0, sizeof(struct sp) * maxROWS * maxCOLS); } } /* Draw the aicon label */ static void draw_aicon_label(void) { int len; Position x; if (!xappres.label_icon || !iconic) { return; } XFillRectangle(display, iss.window, get_gc(&iss, INVERT_COLOR(0)), 0, iss.screen_height - aicon_label_height, iss.screen_width, aicon_label_height); len = strlen(aicon_text); x = ((int)iss.screen_width - XTextWidth(ailabel_font, aicon_text, len)) / 2; if (x < 0) { x = 2; } XDrawImageString(display, iss.window, ailabel_gc, x, iss.screen_height - aicon_label_height + ailabel_font->ascent, aicon_text, len); } /* Set the aicon label */ void set_aicon_label(char *l) { Replace(aicon_text, XtNewString(l)); draw_aicon_label(); } /* Change the bitmap icon. */ static void flip_icon(bool inverted, enum mcursor_state mstate) { Pixmap p = x3270_icon; if (mstate == LOCKED) { mstate = NORMAL; } if (xappres.active_icon || (inverted == icon_inverted && mstate == icon_cstate)) { return; } switch (mstate) { case WAIT: if (inverted) { p = inv_wait_icon; } else { p = wait_icon; } break; case LOCKED: case NORMAL: if (inverted) { p = inv_icon; } else { p = x3270_icon; } break; } XtVaSetValues(toplevel, XtNiconPixmap, p, XtNiconMask, p, NULL); icon_inverted = inverted; icon_cstate = mstate; } /* * Invert the icon. */ static void invert_icon(bool inverted) { flip_icon(inverted, icon_cstate); } /* * Change to the lock icon. */ static void lock_icon(enum mcursor_state state) { flip_icon(icon_inverted, state); } /* Check the font menu for an existing name. */ static bool font_in_menu(const char *font) { struct font_list *g; for (g = font_list; g != NULL; g = g->next) { if (!strcasecmp(NO_BANG(font), NO_BANG(g->font))) { return true; } } return false; } /* Add a font to the font menu. */ static bool add_font_to_menu(char *label, const char *font) { struct font_list *f; label = NewString(label); f = (struct font_list *)XtMalloc(sizeof(*f)); if (!split_hier(label, &f->label, &f->parents)) { Free((XtPointer)f); return false; } f->font = NewString(font); f->next = NULL; f->mlabel = label; if (font_list) { font_last->next = f; } else { font_list = f; } font_last = f; font_count++; return true; } /* * Resize font list parser. */ static void init_rsfonts(char *charset_name) { char *ms; struct rsfont *r; struct font_list *f; char *dupcsn, *csn, *buf; char *lasts = NULL; XFontStruct *fs; char *hier_name; /* Clear the old lists. */ while (rsfonts != NULL) { r = rsfonts->next; Free(rsfonts); rsfonts = r; } while (font_list != NULL) { f = font_list->next; if (font_list->parents) { Free(font_list->parents); } Free(font_list->mlabel); Free(font_list->font); Free(font_list); font_list = f; } font_last = NULL; font_count = 0; /* If there's no character set, we're done. */ if (charset_name == NULL) { return; } /* Get the emulatorFontList resource. */ ms = get_fresource("%s.%s", ResEmulatorFontList, charset_name); if (ms != NULL) { char *ns; char *line; char *label; char *font; bool resize; char **matches; int count; ns = ms = NewString(ms); while (split_lresource(&ms, &line) == 1) { /* Figure out what it's about. */ split_font_list_entry(line, &label, NULL, &resize, &font); if (!*font) { continue; } /* Search for duplicates. */ if (font_in_menu(font)) { continue; } /* Add it to the font_list (menu). */ if (!add_font_to_menu((label != NULL)? label: NO_BANG(font), font)) { continue; } /* Add it to the resize menu, if possible. */ if (!resize) { continue; } matches = XListFontsWithInfo(display, NO_BANG(font), 1, &count, &fs); if (matches == NULL) { continue; } r = (struct rsfont *)XtMalloc(sizeof(*r)); r->name = XtNewString(font); r->width = fCHAR_WIDTH(fs); r->height = fCHAR_HEIGHT(fs); r->descent = fs->max_bounds.descent; XFreeFontInfo(matches, fs, count); r->next = rsfonts; rsfonts = r; } free(ns); } /* * In DBCS mode, if we've found at least one appropriate font from the * list, we're done. */ if (dbcs) { return; } /* Add 'fixed' to the menu, so there's at least one alternative. */ add_font_to_menu("fixed", "!fixed"); /* Expand out wild-cards based on the display character set names. */ buf = dupcsn = NewString(charset_name); while ((csn = strtok_r(buf, ",", &lasts)) != NULL) { void *cookie; const char *name; buf = NULL; if (!strncasecmp(csn, "3270cg", 6)) { continue; } cookie = NULL; while ((name = dfc_search_family(csn, NULL, &cookie)) != NULL) { if (!font_in_menu(name)) { char *dash1 = NULL, *dash2 = NULL; if (name[0] == '-') { dash1 = strchr(name + 1, '-'); if (dash1 != NULL) { dash2 = strchr(dash1 + 1, '-'); } } if (dash2 != NULL) { hier_name = xs_buffer("%s>%.*s>%s", csn, (int)(dash2 - name - 1), name + 1, dash2 + 1); } else hier_name = xs_buffer("%s>%s", csn, name); add_font_to_menu(hier_name, name); Free(hier_name); } } } Free(dupcsn); } /* * Handle ConfigureNotify events. */ static struct { bool ticking; Dimension width, height; Position x, y; XtIntervalId id; } cn = { false, 0, 0, 0, 0, 0 }; static Position main_x = 0, main_y = 0; /* * Timeout routine called 0.5 sec after x3270 sets new screen dimensions. * We assume that if this happens, the window manager is happy with our new * size. */ static void configure_stable(XtPointer closure _is_unused, XtIntervalId *id _is_unused) { vtrace("Reconfigure timer expired\n"); configure_ticking = false; if (!cn.ticking) { screen_redo = REDO_NONE; } } /* Perform a resize operation. */ static void do_resize(void) { struct rsfont *r; struct rsfont *best = (struct rsfont *) NULL; /* What we're doing now is irreversible. */ screen_redo = REDO_RESIZE; if (rsfonts == NULL || !allow_resize) { /* Illegal or impossible. */ if (rsfonts == NULL) { vtrace(" no fonts available for resize\n"); } else { vtrace(" resize prohibited by resource\n"); } return; } /* * Recompute the resulting screen area for each font, based on the * current keypad, model, and scrollbar settings, and snapped to the * minimum size. */ for (r = rsfonts; r != (struct rsfont *) NULL; r = r->next) { Dimension cw, ch; /* container_width, container_height */ Dimension mkw; cw = SCREEN_WIDTH(r->width, HHALO)+2 + scrollbar_width; mkw = min_keypad_width(); if (kp_placement == kp_integral && xappres.keypad_on && cw < mkw) { cw = mkw; } ch = SCREEN_HEIGHT(r->height, r->descent, VHALO)+2 + menubar_qheight(cw); if (kp_placement == kp_integral && xappres.keypad_on) { ch += keypad_qheight(); } r->total_width = cw; r->total_height = ch; r->area = cw * ch; } /* * Find the font with the largest area that fits within the requested * dimensions. */ for (r = rsfonts; r != (struct rsfont *) NULL; r = r->next) { if (r->total_width <= cn.width && r->total_height <= cn.height && (best == NULL || r->area > best->area)) { best = r; } } /* * If the screen got smaller, but none of the fonts is small enough, * switch to the smallest. */ if (!best && cn.width <= main_width && cn.height <= main_height) { for (r = rsfonts; r != (struct rsfont *) NULL; r = r->next) { if (best == NULL || r->area < best->area) { best = r; } } } if (!best || (efontname && !strcmp(best->name, efontname))) { /* Accept the change and float inside the new size. */ vtrace(" no better font available\n"); vtrace("setting fixed_width and fixed_height\n"); fixed_width = cn.width; fixed_height = cn.height; screen_reinit(FONT_CHANGE); clear_fixed(); } else { /* Change fonts. */ vtrace(" switching to font '%s', snap size %dx%d\n", best->name, best->total_width, best->total_height); vtrace("setting fixed_width and fixed_height\n"); fixed_width = cn.width; fixed_height = cn.height; screen_newfont(best->name, false, false); /* screen_newfont() sets screen_redo to REDO_FONT. */ screen_redo = REDO_RESIZE; } } static void revert_screen(void) { const char *revert = NULL; /* * If we took a ConfigureNotify as new screen dimensions, ignore that now. */ clear_fixed(); /* If there's a reconfiguration pending, try to undo it. */ switch (screen_redo) { case REDO_FONT: revert = "font"; screen_newfont(redo_old_font, false, false); break; case REDO_MODEL: revert = "model number"; screen_change_model(redo_old_model, redo_old_ov_cols, redo_old_ov_rows); break; case REDO_KEYPAD: revert = "keypad configuration"; xappres.keypad_on = False; screen_showikeypad(xappres.keypad_on); break; case REDO_SCROLLBAR: revert = "scrollbar configuration"; if (toggled(SCROLL_BAR)) { toggle_toggle(SCROLL_BAR); toggle_scrollBar(SCROLL_BAR, TT_INTERACTIVE); } break; case REDO_RESIZE: screen_redo = REDO_NONE; /* fall through... */ case REDO_NONE: /* Initial configuration, or user-generated resize. */ do_resize(); return; default: break; } /* Tell the user what we did. */ if (revert != NULL) { popup_an_error("Main window does not fit on the X display\n" "Reverting to previous %s", revert); } screen_redo = REDO_NONE; } /* * Timeout routine called 0.5 sec after x3270 receives the last ConfigureNotify * message. This is for window managers that use 'continuous' move or resize * actions, so we don't do anything until they stop sending us events. */ static void stream_end(XtPointer closure _is_unused, XtIntervalId *id _is_unused) { bool needs_moving = false; vtrace("Stream timer expired %hux%hu+%hd+%hd\n", cn.width, cn.height, cn.x, cn.y); /* Not ticking any more. */ cn.ticking = false; /* Save the new coordinates in globals for next time. */ if (cn.x != main_x || cn.y != main_y) { main_x = cn.x; main_y = cn.y; needs_moving = true; } /* * If the dimensions are correct, do nothing, forget about any * reconfig we may need to revert, and get out. */ if (cn.width == main_width && cn.height == main_height) { vtrace(" width and height match, done\n"); screen_redo = REDO_NONE; clear_fixed(); goto done; } /* The desired dimensions are different. Revert the screen. */ if (cn.width >= main_width && cn.height >= main_height) { vtrace(" bigger\n"); } else { vtrace(" smaller\n"); } revert_screen(); done: if (needs_moving && !iconic) { keypad_move(); popups_move(); } } void PA_ConfigureNotify_xaction(Widget w _is_unused, XEvent *event, String *params _is_unused, Cardinal *num_params _is_unused) { XConfigureEvent *re = (XConfigureEvent *) event; Position xx, yy; #if defined(INTERNAL_ACTION_DEBUG) /*[*/ xaction_debug(PA_ConfigureNotify_xaction, event, params, num_params); #endif /*]*/ /* * Get the new window coordinates. If the configure event reports it * as (0,0), ask for it explicitly. */ if (re->x || re->y) { xx = re->x; yy = re->y; } else { XtVaGetValues(toplevel, XtNx, &xx, XtNy, &yy, NULL); } vtrace("ConfigureNotify %dx%d+%hd+%hd\n", re->width, re->height, xx, yy); /* Save the latest values. */ cn.x = xx; cn.y = yy; cn.width = re->width; cn.height = re->height; /* See if we're maximized. */ query_window_state(); if (user_resize_allowed) { /* Take the current dimensions as fixed. */ vtrace("setting fixed_width and fixed_height\n"); fixed_width = cn.width; fixed_height = cn.height; } /* Set the stream timer for 0.5 sec from now. */ if (cn.ticking) { XtRemoveTimeOut(cn.id); } cn.id = XtAppAddTimeOut(appcontext, 500, stream_end, 0); cn.ticking = true; } /* * Process a VisibilityNotify event, setting the 'visibile' flag in nss. * This will switch the behavior of screen scrolling. */ void PA_VisibilityNotify_xaction(Widget w _is_unused, XEvent *event _is_unused, String *params _is_unused, Cardinal *num_params _is_unused) { XVisibilityEvent *e; #if defined(INTERNAL_ACTION_DEBUG) /*[*/ xaction_debug(PA_VisibilityNotify_xaction, event, params, num_params); #endif /*]*/ e = (XVisibilityEvent *)event; nss.obscured = (e->state != VisibilityUnobscured); } /* * Process a GraphicsExpose event, refreshing the screen if we have done * one or more failed XCopyArea calls. */ void PA_GraphicsExpose_xaction(Widget w _is_unused, XEvent *event _is_unused, String *params _is_unused, Cardinal *num_params _is_unused) { int i; #if defined(INTERNAL_ACTION_DEBUG) /*[*/ xaction_debug(PA_GraphicsExpose_xaction, event, params, num_params); #endif /*]*/ if (nss.copied) { /* * Force a screen redraw. */ memset((char *) ss->image, 0, (maxROWS*maxCOLS) * sizeof(struct sp)); if (visible_control) { for (i = 0; i < maxROWS*maxCOLS; i++) { ss->image[i].u.bits.ec = EBC_space; } } ctlr_changed(0, ROWS*COLS); cursor_changed = true; nss.copied = false; } } /* Display size functions. */ unsigned display_width(void) { return XDisplayWidth(display, default_screen); } unsigned display_widthMM(void) { return XDisplayWidthMM(display, default_screen); } unsigned display_height(void) { return XDisplayHeight(display, default_screen); } unsigned display_heightMM(void) { return XDisplayHeightMM(display, default_screen); } /* Translate an EBCDIC DBCS character to a display character. */ static void xlate_dbcs(unsigned char c0, unsigned char c1, XChar2b *r) { unsigned long u; int d; /* Translate NULLs to spaces. */ if (c0 == EBC_null && c1 == EBC_null) { c0 = EBC_space; c1 = EBC_space; } /* Then handle special cases. */ if ((c0 < 0x41 && (c0 != EBC_space && c1 != EBC_space)) || c0 == 0xff) { /* Junk. */ r->byte1 = 0; r->byte2 = 0; } u = ebcdic_dbcs_to_unicode((c0 << 8) | c1, EUO_BLANK_UNDEF); d = display16_lookup(dbcs_font.d16_ix, u); if (d >= 0) { r->byte1 = (d >> 8) & 0xff; r->byte2 = d & 0xff; } else { r->byte1 = 0; r->byte2 = 0; } #if defined(_ST) /*[*/ printf("EBC %02x%02x -> X11 font %02x%02x\n", c0, c1, r->byte1, r->byte2); #endif /*]*/ } /* Translate a Unicode character to a display character. */ static void xlate_dbcs_unicode(ucs4_t ucs, XChar2b *r) { int d = display16_lookup(dbcs_font.d16_ix, ucs); if (d >= 0) { r->byte1 = (d >> 8) & 0xff; r->byte2 = d & 0xff; } else { r->byte1 = 0; r->byte2 = 0; } #if defined(_ST) /*[*/ printf("UCS4 %04x -> X11 font %02x%02x\n", ucs4, r->byte1, r->byte2); #endif /*]*/ } static void destroy_callback_func(XIM current_ic, XPointer client_data, XPointer call_data) { ic = NULL; im = NULL; ic_focus = 0; #if defined(_ST) /*[*/ printf("destroy_callback_func\n"); #endif /*]*/ } #define OTS_LEN (sizeof(PT_OVER_THE_SPOT) - 1) static void im_callback(Display *display, XPointer client_data, XPointer call_data) { XIMStyles *xim_styles = NULL; XIMCallback destroy; int i, j; XVaNestedList preedit_attr = NULL; XPoint spot; XRectangle local_win_rect; static im_style_t im_styles[] = { { XIMPreeditNothing | XIMStatusNothing, PT_ROOT }, { XIMPreeditPosition | XIMStatusNothing, PT_OVER_THE_SPOT }, { XIMPreeditArea | XIMStatusArea, PT_OFF_THE_SPOT }, { XIMPreeditCallbacks| XIMStatusCallbacks, PT_ON_THE_SPOT }, { (XIMStyle)0, NULL } }; char *im_style = (xappres.preedit_type != NULL)? strip_whitespace(xappres.preedit_type): PT_OVER_THE_SPOT; char c; #if defined(_ST) /*[*/ printf("im_callback\n"); #endif /*]*/ if (!strcasecmp(im_style, "None")) { return; } /* Parse the offset value for OverTheSpot. */ if (!strncasecmp(im_style, PT_OVER_THE_SPOT, OTS_LEN) && ((c = im_style[OTS_LEN]) == '+' || c == '-')) { ovs_offset = atoi(im_style + OTS_LEN); im_style = NewString(im_style); im_style[OTS_LEN] = '\0'; } /* Open connection to IM server. */ if ((im = XOpenIM(display, NULL, NULL, NULL)) == NULL) { popup_an_error("XOpenIM failed\nXIM-based input disabled"); goto error_return; } destroy.callback = (XIMProc)destroy_callback_func; destroy.client_data = NULL; XSetIMValues(im, XNDestroyCallback, &destroy, NULL); /* Detect the input style supported by XIM server. */ if (XGetIMValues(im, XNQueryInputStyle, &xim_styles, NULL) != NULL || xim_styles == NULL) { popup_an_error("Input method doesn't support any styles\n" "XIM-based input disabled"); goto error_return; } for (i = 0; i < xim_styles->count_styles; i++) { for (j = 0; im_styles[j].description != NULL; j++) { if (im_styles[j].style == xim_styles->supported_styles[i]) { #if defined(_ST) /*[*/ printf("XIM server supports input_style %s\n", im_styles[j].description); #endif /*]*/ break; } } #if defined(_ST) /*[*/ if (im_styles[j].description == NULL) { printf("XIM server supports unknown input style %x\n", (unsigned)(xim_styles->supported_styles[i])); } #endif /*]*/ } /* Set my preferred style. */ for (j = 0; im_styles[j].description != NULL; j++) { if (!strcasecmp(im_styles[j].description, im_style)) { style = im_styles[j].style; break; } } if (im_styles[j].description == NULL) { popup_an_error("Input style '%s' not supported\n" "XIM-based input disabled", im_style); goto error_return; } if (style == (XIMPreeditPosition | XIMStatusNothing)) { char *fsname; XFontSet fontset; char **charset_list; int charset_count; char *def_string; fsname = xs_buffer("-*-%s,-*-iso8859-1", efont_charset_dbcs); for (;;) { #if defined(_ST) /*[*/ printf("trying fsname: %s\n", fsname); #endif /*]*/ fontset = XCreateFontSet(display, fsname, &charset_list, &charset_count, &def_string); if (charset_count || fontset == NULL) { if (charset_count > 0) { int i; for (i = 0; i < charset_count; i++) { #if defined(_ST) /*[*/ printf("missing: %s\n", charset_list[0]); #endif /*]*/ fsname = xs_buffer("%s,-*-%s", fsname, charset_list[i]); } continue; } popup_an_error("Cannot create fontset '%s' " "for input context\n" "XIM-based input disabled", fsname); goto error_return; } else { break; } } spot.x = 0; spot.y = ovs_offset * nss.char_height; local_win_rect.x = 1; local_win_rect.y = 1; local_win_rect.width = main_width; local_win_rect.height = main_height; preedit_attr = XVaCreateNestedList(0, XNArea, &local_win_rect, XNSpotLocation, &spot, XNFontSet, fontset, NULL); } /* Create IC. */ ic = XCreateIC(im, XNInputStyle, style, XNClientWindow, nss.window, XNFocusWindow, nss.window, (preedit_attr) ? XNPreeditAttributes : NULL, preedit_attr, NULL); if (ic == NULL) { popup_an_error("Cannot create input context\n" "XIM-based input disabled"); goto error_return; } return; error_return: if (im != NULL) { XCloseIM(im); im = NULL; xim_error = true; } } static void cleanup_xim(bool b _is_unused) { if (ic != NULL) { XDestroyIC(ic); } if (im != NULL) { XCloseIM(im); } } static void xim_init(void) { char *buf = ""; static bool xim_initted = false; char *s; if (!dbcs || xim_initted) { return; } xim_initted = true; s = setlocale(LC_CTYPE, ""); if (s != NULL) { s = NewString(s); } Replace(locale_name, s); if (s == NULL) { popup_an_error("setlocale(LC_CTYPE) failed\nXIM-based input disabled"); xim_error = true; return; } if (xappres.input_method != NULL) { buf = lazyaf("@im=%s", xappres.input_method); } if (XSetLocaleModifiers(buf) == NULL) { popup_an_error("XSetLocaleModifiers failed\nXIM-based input disabled"); xim_error = true; } else if (XRegisterIMInstantiateCallback(display, NULL, NULL, NULL, im_callback, NULL) != true) { popup_an_error("XRegisterIMInstantiateCallback failed\n" "XIM-based input disabled"); xim_error = true; } register_schange(ST_EXITING, cleanup_xim); return; } static void send_spot_loc(void) { XPoint spot; XVaNestedList preedit_attr; spot.x = (cursor_addr % COLS) * nss.char_width + hhalo; spot.y = ((cursor_addr / COLS) + ovs_offset) * nss.char_height + vhalo; preedit_attr = XVaCreateNestedList(0, XNSpotLocation, &spot, NULL); XSetICValues(ic, XNPreeditAttributes, preedit_attr, NULL); XFree(preedit_attr); } /* Change the window title. */ static bool Title_action(ia_t ia, unsigned argc, const char **argv) { action_debug(AnTitle, ia, argc, argv); if (check_argc(AnTitle, argc, 1, 1) < 0) { return false; } user_title = NewString(argv[0]); XtVaSetValues(toplevel, XtNtitle, user_title, NULL); return true; } /* Change the window state. */ static bool WindowState_action(ia_t ia, unsigned argc, const char **argv) { int state; action_debug(AnWindowState, ia, argc, argv); if (check_argc(AnWindowState, argc, 1, 1) < 0) { return false; } if (!strcasecmp(argv[0], KwIconic)) { state = true; } else if (!strcasecmp(argv[0], KwNormal)) { state = false; } else { return action_args_are(AnWindowState, KwIconic, KwNormal, NULL); } XtVaSetValues(toplevel, XtNiconic, state, NULL); return true; } static dfc_t *dfc = NULL, *dfc_last = NULL; /* Split a font name into parts. */ static int split_name(const char *name, char res[15][256]) { int ns; const char *dash; const char *s; ns = 0; s = name; while (ns < 14 && ((dash = strchr(s, '-')) != NULL)) { int nc = dash - s; if (nc >= 256) { nc = 255; } strncpy(res[ns], s, nc); res[ns][nc] = '\0'; ns++; s = dash + 1; } if (*s) { int nc = strlen(s); if (nc >= 256) { nc = 255; } strncpy(res[ns], s, nc); res[ns][nc] = '\0'; ns++; } return ns; } /* Initialize the dumb font cache. */ static void dfc_init(void) { char **namelist; int count; int i; dfc_t *d, *e; char nl_arr[15][256]; dfc_t *c_first = NULL; dfc_t *c_last = NULL; dfc_t *m_first = NULL; dfc_t *m_last = NULL; /* Get all of the font names. */ namelist = XListFonts(display, "*", MAX_FONTS, &count); if (namelist == NULL) { Error("No fonts"); } for (i = 0; i < count; i++) { /* Pick apart the font names. */ int nf = split_name(namelist[i], nl_arr); int good = true; if ((nf == 1 && strncmp(nl_arr[0], "3270", 4)) || (nf != 15) || (strcasecmp(nl_arr[4], "r") || !strcmp(nl_arr[7], "0") || !strcmp(nl_arr[8], "0") || (strcasecmp(nl_arr[11], "c") && strcasecmp(nl_arr[11], "m")) || !strcmp(nl_arr[12], "0"))) { good = false; } /* Make sure it isn't a dup. */ for (e = dfc; e != NULL; e = e->next) { if (!strcasecmp(namelist[i], e->name)) { break; } } if (e != NULL) { continue; } /* Append this entry to the cache. */ d = (dfc_t *)Malloc(sizeof(dfc_t)); d->next = NULL; d->name = NewString(namelist[i]); d->weight = NewString(nl_arr[3]); d->points = atoi(nl_arr[7]); d->spacing = NewString(nl_arr[11]); d->charset = xs_buffer("%s-%s", nl_arr[13], nl_arr[14]); d->good = good; if (!d->spacing[0] || !strcasecmp(d->spacing, "c")) { if (c_last) { c_last->next = d; } else { c_first = d; } c_last = d; } else { if (m_last) { m_last->next = d; } else { m_first = d; } m_last = d; } } if (c_first != NULL) { c_last->next = m_first; dfc = c_first; if (m_last != NULL) { dfc_last = m_last; } else { dfc_last = c_last; } } else { dfc = m_first; dfc_last = m_last; } } /* Search iteratively for fonts whose names specify a given character set. */ static const char * dfc_search_family(const char *charset, dfc_t **dp, void **cookie) { dfc_t *d; if (*cookie == NULL) { d = dfc; } else { d = ((dfc_t *)*cookie)->next; if (d == NULL) { if (dp) { *dp = NULL; } *cookie = NULL; return NULL; } } while (d != NULL) { if (d->good && !strcasecmp(charset, d->charset)) { if (dp) { *dp = d; } *cookie = d; return d->name; } d = d->next; } *cookie = NULL; return NULL; } /* Return the window for the screen. */ unsigned long screen_window_number(void) { return XtWindow(toplevel); } /** * External interface to the SELECTED macro. * * @param[in] baddr Buffer address. * * @return true if cell is selected */ bool screen_selected(int baddr) { return SELECTED(baddr) != 0; } /** * External interface to the SET_SELECT macro. * * @param[in] baddr Buffer address. */ void screen_set_select(int baddr) { SET_SELECT(baddr); } /** * Unselect everything. */ void screen_unselect_all(void) { memset((char *)selected, 0, (ROWS*COLS + 7) / 8); } /** * Does this display support background color? (No.) * * @return true if supported, false if not. */ bool screen_has_bg_color(void) { return false; } /** * Snap the screen to the current size. */ void screen_snap_size(void) { if (!user_resize_allowed) { return; } clear_fixed(); screen_reinit(FONT_CHANGE); } /* State change handler for host code pages. */ static void screen_codepage_changed(bool ignored _is_unused) { screen_reinit(CODEPAGE_CHANGE | FONT_CHANGE); } /** * Screen module registration. */ void screen_register(void) { static toggle_register_t toggles[] = { { MONOCASE, toggle_monocase, 0 }, { ALT_CURSOR, toggle_altCursor, 0 }, { CURSOR_BLINK, toggle_cursorBlink, 0 }, { SHOW_TIMING, toggle_showTiming, 0 }, { CROSSHAIR, toggle_crosshair, 0 }, { VISIBLE_CONTROL, toggle_visible_control, 0 }, { SCROLL_BAR, toggle_scrollBar, 0 }, { MARGINED_PASTE, NULL, 0 }, { OVERLAY_PASTE, NULL, 0 }, { TYPEAHEAD, NULL, 0 }, { APL_MODE, toggle_aplMode, 0 } }; static action_table_t screen_actions[] = { { AnSetFont, SetFont_action, ACTION_KE }, { AnTitle, Title_action, ACTION_KE }, { AnWindowState, WindowState_action, ACTION_KE } }; /* Register our toggles. */ register_toggles(toggles, array_count(toggles)); /* Register our actions. */ register_actions(screen_actions, array_count(screen_actions)); /* Register state change callbacks. */ register_schange(ST_CONNECT, screen_connect); register_schange(ST_3270_MODE, screen_connect); register_schange(ST_CODEPAGE, screen_codepage_changed); } suite3270-4.1/x3270/select.c000066400000000000000000001276301413735575200152560ustar00rootroot00000000000000/* * Copyright (c) 1993-2009, 2014-2016, 2018-2020 Paul Mattes. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of Paul Mattes nor his contributors may be used * to endorse or promote products derived from this software without * specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. */ /* * Portions of this code were taken from xterm/button.c: * Copyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts. * * All Rights Reserved * * Permission to use, copy, modify, and distribute this software and its * documentation for any purpose and without fee is hereby granted, * provided that the above copyright notice appear in all copies and that * both that copyright notice and this permission notice appear in * supporting documentation, and that the name of Digital Equipment * Corporation not be used in advertising or publicity pertaining to * distribution of the software without specific, written prior permission. * * * DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING * ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL * DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR * ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, * WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, * ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS * SOFTWARE. */ /* * select.c * This module handles selections. */ #include "globals.h" #include "xglobals.h" #include #include #include #include "3270ds.h" #include "appres.h" #include "ctlr.h" #include "resources.h" #include "toggles.h" #include "codepage.h" #include "ctlrc.h" #include "kybd.h" #include "popups.h" #include "screen.h" #include "selectc.h" #include "tables.h" #include "trace.h" #include "unicodec.h" #include "utf8.h" #include "utils.h" #include "xactions.h" #include "xscreen.h" #define Max(x, y) (((x) > (y))? (x): (y)) #define Min(x, y) (((x) < (y))? (x): (y)) #define HTTP_PREFIX "http://" #define HTTPS_PREFIX "https://" /* * Mouse side. */ /* A button click establishes the boundaries of the 'fixed' area. */ static int f_start = 0; /* 'fixed' area */ static int f_end = 0; /* Mouse motion moves the boundaries of the 'varying' area. */ static int v_start = 0; /* 'varying' area */ static int v_end = 0; static unsigned long down_time = 0; static unsigned long down1_time = 0; static Dimension down1_x, down1_y; static unsigned long up_time = 0; static int saw_motion = 0; static int num_clicks = 0; static bool grab_sel(int start, int end, bool really, Time t, bool as_url); #define NS 5 static Atom want_sel[NS]; static struct { /* owned selections */ Atom atom; /* atom */ char *buffer; /* buffer contents (UTF-8) */ } own_sel[NS]; static bool cursor_moved = false; static int saved_cursor_addr; static void own_sels(Time t); static int n_owned = -1; static bool any_selected = false; #define CLICK_INTERVAL 300 #define event_x(event) event->xbutton.x #define event_y(event) event->xbutton.y #define event_time(event) event->xbutton.time #define BOUNDED_XY(event, x, y) { \ x = X_TO_COL(event_x(event)); \ if (x < 0) { \ x = 0; \ } \ if (x >= COLS) { \ x = COLS - 1; \ } \ if (flipped) { \ x = (COLS - x) - 1; \ } \ y = Y_TO_ROW(event_y(event) - *descent); \ if (y <= 0) { \ y = 0; \ } \ if (y >= ROWS) { \ y = ROWS - 1; \ } \ } /* Default character class. */ static int char_class[256] = { /* nul soh stx etx eot enq ack bel bs ht nl vt np cr so si */ 32, 1, 1, 1, 1, 1, 1, 1, 1, 32, 1, 1, 1, 1, 1, 1, /* dle dc1 dc2 dc3 dc4 nak syn etb can em sub esc fs gs rs us */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* sp ! " # $ % & ' ( ) * + , - . / */ 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, /* 0 1 2 3 4 5 6 7 8 9 : ; < = > ? */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 58, 59, 60, 61, 62, 63, /* @ A B C D E F G H I J K L M N O */ 64, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, /* P Q R S T U V W X Y Z [ \ ] ^ _ */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 91, 92, 93, 94, 48, /* ` a b c d e f g h i j k l m n o */ 96, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, /* p q r s t u v w x y z { | } ~ del */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,123,124,125,126, 1, /* ---,---,---,---,---,---,---,---,---,---,---,---,---,---,---,--- */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* ---,---,---,---,---,---,---,---,---,---,---,---,---,---,---,--- */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* nob exc cen ste cur yen bro sec dia cop ord gui not hyp reg mac */ 32,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175, /* deg plu two thr acu mu par per ce one mas gui one one thr que */ 176,177,178,179,180,181,182,183,184,185,186,178,188,189,190,191, /* Agr Aac Aci Ati Adi Ari AE Cce Egr Eac Eci Edi Igr Iac Ici Idi */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, /* ETH Nti Ogr Oac Oci Oti Odi mul Oob Ugr Uac Uci Udi Yac THO ssh */ 48, 48, 48, 48, 48, 48, 48,215, 48, 48, 48, 48, 48, 48, 48, 48, /* agr aac aci ati adi ari ae cce egr eac eci edi igr iac ici idi */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, /* eth nti ogr oac oci oti odi div osl ugr uac uci udi yac tho ydi */ 48, 48, 48, 48, 48, 48, 48,247, 48, 48, 48, 48, 48, 48, 48, 48 }; /* Character class for isolating URLs. */ static int url_char_class[256] = { /* nul soh stx etx eot enq ack bel bs ht nl vt np cr so si */ 32, 1, 1, 1, 1, 1, 1, 1, 1, 32, 1, 1, 1, 1, 1, 1, /* dle dc1 dc2 dc3 dc4 nak syn etb can em sub esc fs gs rs us */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* sp ! " # $ % & ' ( ) * + , - . / */ 32, 33, 34, 35, 36, 48, 48, 39, 40, 41, 42, 43, 44, 45, 48, 48, /* 0 1 2 3 4 5 6 7 8 9 : ; < = > ? */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 59, 60, 61, 62, 48, /* @ A B C D E F G H I J K L M N O */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, /* P Q R S T U V W X Y Z [ \ ] ^ _ */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 92, 48, 94, 48, /* ` a b c d e f g h i j k l m n o */ 96, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, /* p q r s t u v w x y z { | } ~ del */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,123,124,125,126, 1, /* ---,---,---,---,---,---,---,---,---,---,---,---,---,---,---,--- */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* ---,---,---,---,---,---,---,---,---,---,---,---,---,---,---,--- */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* nob exc cen ste cur yen bro sec dia cop ord gui not hyp reg mac */ 32,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175, /* deg plu two thr acu mu par per ce one mas gui one one thr que */ 176,177,178,179,180,181,182,183,184,185,186,178,188,189,190,191, /* Agr Aac Aci Ati Adi Ari AE Cce Egr Eac Eci Edi Igr Iac Ici Idi */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, /* ETH Nti Ogr Oac Oci Oti Odi mul Oob Ugr Uac Uci Udi Yac THO ssh */ 48, 48, 48, 48, 48, 48, 48,215, 48, 48, 48, 48, 48, 48, 48, 48, /* agr aac aci ati adi ari ae cce egr eac eci edi igr iac ici idi */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, /* eth nti ogr oac oci oti odi div osl ugr uac uci udi yac tho ydi */ 48, 48, 48, 48, 48, 48, 48,247, 48, 48, 48, 48, 48, 48, 48, 48 }; /* Parse a charClass string: [low-]high:value[,...] */ void reclass(char *s) { int n; int low, high, value; int i; char c; n = -1; low = -1; high = -1; for (;;) { c = *s++; if (isdigit((unsigned char)c)) { if (n == -1) { n = 0; } n = (n * 10) + (c - '0'); if (n > 255) { goto fail; } } else if (c == '-') { if (n == -1 || low != -1) { goto fail; } low = n; n = -1; } else if (c == ':') { if (n == -1) { goto fail; } high = n; n = -1; } else if (c == ',' || c == '\0') { if (n == -1) { goto fail; } value = n; n = -1; if (high == -1) { goto fail; } if (low == -1) { low = high; } if (high < low) { goto fail; } for (i = low; i <= high; i++) { char_class[i] = value; } low = -1; high = -1; if (c == '\0') { return; } } else { goto fail; } } fail: popup_an_error("Error in %s string", ResCharClass); } static int ucs4_class(ucs4_t u) { return (u < 0x100)? char_class[u]: (int)u; } static int ucs4_url_class(ucs4_t u) { return (u < 0x100)? url_char_class[u]: (int)u; } static int xchar_class(ucs4_t u, bool as_url) { return as_url? ucs4_url_class(u): ucs4_class(u); } static bool select_word_x(int baddr, Time t, bool as_url) { unsigned char fa = get_field_attribute(baddr); unsigned char ch; int class; /* Find the initial character class */ if (ea_buf[baddr].ucs4) { class = xchar_class(ea_buf[baddr].ucs4, as_url); } else { if (FA_IS_ZERO(fa)) { ch = EBC_space; } else { ch = ea_buf[baddr].ec; } class = xchar_class(ebc2asc0[ch], as_url); } /* Find the beginning */ for (f_start = baddr; ; f_start--) { int xclass; if (ea_buf[f_start].ucs4) { xclass = xchar_class(ea_buf[f_start].ucs4, as_url); } else { fa = get_field_attribute(f_start); if (FA_IS_ZERO(fa)) { ch = EBC_space; } else { ch = ea_buf[f_start].ec; } xclass = xchar_class(ebc2asc0[ch], as_url); } if (xclass != class) { f_start++; break; } /* * If there was a line wrap, the last postion on the previous row will * have GR_WRAP set. */ if (!(f_start % COLS) && f_start && (ea_buf[f_start - 1].gr & GR_WRAP)) { continue; } if (!(f_start % COLS)) { break; } } /* Find the end */ for (f_end = baddr; ; f_end++) { int xclass; if (ea_buf[f_start].ucs4) { xclass = xchar_class(ea_buf[f_end].ucs4, as_url); } else { fa = get_field_attribute(f_end); if (FA_IS_ZERO(fa)) { ch = EBC_space; } else { ch = ea_buf[f_end].ec; } xclass = xchar_class(ebc2asc0[ch], as_url); } if (xclass != class) { f_end--; break; } /* * If there was a line wrap, the last postion in the row will have GR_WRAP * set. */ if (f_end != ((ROWS * COLS) - 1) && (ea_buf[f_end].gr & GR_WRAP)) { continue; } if (!((f_end + 1) % COLS)) { break; } } v_start = f_start; v_end = f_end; return grab_sel(f_start, f_end, true, t, as_url); } /* Select a word. Incorporates URL selection. */ static void select_word(int baddr, Time t) { #if defined(HAVE_START) /*[*/ if (select_word_x(baddr, t, true)) { return; } #endif /*]*/ select_word_x(baddr, t, false); } static void select_line(int baddr, Time t) { f_start = baddr - (baddr % COLS); f_end = f_start + COLS - 1; v_start = f_start; v_end = f_end; grab_sel(f_start, f_end, true, t, false); } /* * Start a new selection. * Usually bound to . */ void select_start_xaction(Widget w, XEvent *event, String *params, Cardinal *num_params) { int x, y; int baddr; xaction_debug(select_start_xaction, event, params, num_params); if (w != *screen) { return; } BOUNDED_XY(event, x, y); baddr = ROWCOL_TO_BA(y, x); f_start = f_end = v_start = v_end = baddr; down1_time = down_time = event_time(event); down1_x = event_x(event); down1_y = event_y(event); if (down_time - up_time > CLICK_INTERVAL) { num_clicks = 0; /* Commit any previous cursor move. */ cursor_moved = false; } if (num_clicks == 0) { unselect(0, ROWS*COLS); } } /* * Alternate form of select_start, which combines cursor motion with selection. * Usually bound to in a user-specified keymap. */ void move_select_xaction(Widget w, XEvent *event, String *params, Cardinal *num_params) { int x, y; int baddr; xaction_debug(move_select_xaction, event, params, num_params); if (w != *screen) { return; } BOUNDED_XY(event, x, y); baddr = ROWCOL_TO_BA(y, x); f_start = f_end = v_start = v_end = baddr; down1_time = down_time = event_time(event); down1_x = event_x(event); down1_y = event_y(event); if (down_time - up_time > CLICK_INTERVAL) { num_clicks = 0; /* Commit any previous cursor move. */ cursor_moved = false; } if (num_clicks == 0) { if (any_selected) { unselect(0, ROWS*COLS); } else { cursor_moved = true; saved_cursor_addr = cursor_addr; cursor_move(baddr); } } } /* * Begin extending the current selection. * Usually bound to . */ void start_extend_xaction(Widget w, XEvent *event, String *params, Cardinal *num_params) { int x, y; int baddr; bool continuous = (!ever_3270 && !toggled(RECTANGLE_SELECT)); xaction_debug(start_extend_xaction, event, params, num_params); if (w != *screen) { return; } down1_time = 0L; BOUNDED_XY(event, x, y); baddr = ROWCOL_TO_BA(y, x); if (continuous) { /* Think linearly. */ if (baddr < f_start) { v_start = baddr; } else if (baddr > f_end) { v_end = baddr; } else if (baddr - f_start > f_end - baddr) { v_end = baddr; } else { v_start = baddr; } } else { /* Think rectangularly. */ int nrow = baddr / COLS; int ncol = baddr % COLS; int vrow_ul = v_start / COLS; int vrow_lr = v_end / COLS; int vcol_ul = Min(v_start % COLS, v_end % COLS); int vcol_lr = Max(v_start % COLS, v_end % COLS); /* Set up the row. */ if (nrow <= vrow_ul) { vrow_ul = nrow; } else if (nrow >= vrow_lr) { vrow_lr = nrow; } else if (nrow - vrow_ul > vrow_lr - nrow) { vrow_lr = nrow; } else { vrow_ul = nrow; } /* Set up the column. */ if (ncol <= vcol_ul) { vcol_ul = ncol; } else if (ncol >= vcol_lr) { vcol_lr = ncol; } else if (ncol - vcol_ul > vcol_lr - ncol) { vcol_lr = ncol; } else { vcol_ul = ncol; } v_start = (vrow_ul * COLS) + vcol_ul; v_end = (vrow_lr * COLS) + vcol_lr; } grab_sel(v_start, v_end, true, event_time(event), false); saw_motion = 1; num_clicks = 0; } /* * Continuously extend the current selection. * Usually bound to and . */ void select_extend_xaction(Widget w, XEvent *event, String *params, Cardinal *num_params) { int x, y; int baddr; xaction_debug(select_extend_xaction, event, params, num_params); if (w != *screen) { return; } /* Ignore initial drag events if are too near. */ if (down1_time != 0L && abs((int) event_x(event) - (int) down1_x) < *char_width && abs((int) event_y(event) - (int) down1_y) < *char_height) { return; } else { down1_time = 0L; } /* If we moved the 3270 cursor on the first click, put it back. */ if (cursor_moved) { cursor_move(saved_cursor_addr); cursor_moved = false; } BOUNDED_XY(event, x, y); baddr = ROWCOL_TO_BA(y, x); /* * If baddr falls outside if the v range, open up the v range. In * addition, if we are extending one end of the v range, make sure the * other end at least covers the f range. */ if (baddr <= v_start) { v_start = baddr; v_end = f_end; } if (baddr >= v_end) { v_end = baddr; v_start = f_start; } /* * If baddr falls within the v range, narrow up the nearer end of the * v range. */ if (baddr > v_start && baddr < v_end) { if (baddr - v_start < v_end - baddr) { v_start = baddr; } else { v_end = baddr; } } num_clicks = 0; saw_motion = 1; grab_sel(v_start, v_end, false, event_time(event), false); } /* * End the selection. * Usually bound to . */ void select_end_xaction(Widget w _is_unused, XEvent *event, String *params, Cardinal *num_params) { Cardinal i; int x, y; xaction_debug(select_end_xaction, event, params, num_params); if (w != *screen) { return; } if (n_owned == -1) { for (i = 0; i < NS; i++) { own_sel[i].atom = None; } n_owned = 0; } for (i = 0; i < NS; i++) { if (i < *num_params) { want_sel[i] = XInternAtom(display, params[i], false); } else { want_sel[i] = None; } } if (*num_params == 0) { want_sel[0] = XA_PRIMARY; } BOUNDED_XY(event, x, y); up_time = event_time(event); if (up_time - down_time > CLICK_INTERVAL) { num_clicks = 0; } if (++num_clicks > 3) { num_clicks = 1; } switch (num_clicks) { case 1: if (saw_motion) { f_start = v_start; f_end = v_end; grab_sel(f_start, f_end, true, event_time(event), false); } break; case 2: /* * If we moved the 3270 cursor on the first click, put it back. */ if (cursor_moved) { cursor_move(saved_cursor_addr); cursor_moved = false; } select_word(f_start, event_time(event)); break; case 3: select_line(f_start, event_time(event)); break; } saw_motion = 0; } /* * New-style selection actions. * * These actions work a bit more intuitively in 3270 mode than the historic * ones. * SelectDown is usually bound to Btn1Down. * SelectMotion is usually bound to Btn1Motion. * SelectUp is usually bound to Btn1Up. * * SelectDown deselects on the first click, and remembers the screen position. * * SelectMotion extends the selection from the location remembered by * SelectDown to the current location. * * SelectUp moves the cursor on the first click. On clicks two and three, it * selects a word or line. On click four, it deselects and resets the click * counter to one. */ void SelectDown_xaction(Widget w _is_unused, XEvent *event, String *params, Cardinal *num_params) { int x, y; int baddr; xaction_debug(SelectDown_xaction, event, params, num_params); if (w != *screen) { return; } BOUNDED_XY(event, x, y); baddr = ROWCOL_TO_BA(y, x); if (event_time(event) - down_time > CLICK_INTERVAL) { num_clicks = 0; } down_time = event_time(event); if (num_clicks == 0) { f_start = f_end = v_start = v_end = baddr; down1_time = down_time; if (any_selected) { unselect(0, ROWS*COLS); } } } void SelectMotion_xaction(Widget w _is_unused, XEvent *event, String *params, Cardinal *num_params) { int x, y; int baddr; xaction_debug(SelectMotion_xaction, event, params, num_params); if (w != *screen) { return; } /* Ignore initial drag events if are too near. */ if (down1_time != 0L && abs((int) event_x(event) - (int) down1_x) < *char_width && abs((int) event_y(event) - (int) down1_y) < *char_height) { return; } else { down1_time = 0L; } BOUNDED_XY(event, x, y); baddr = ROWCOL_TO_BA(y, x); /* * If baddr falls outside if the v range, open up the v range. In * addition, if we are extending one end of the v range, make sure the * other end at least covers the f range. */ if (baddr <= v_start) { v_start = baddr; v_end = f_end; } if (baddr >= v_end) { v_end = baddr; v_start = f_start; } /* * If baddr falls within the v range, narrow up the nearer end of the * v range. */ if (baddr > v_start && baddr < v_end) { if (baddr - v_start < v_end - baddr) { v_start = baddr; } else { v_end = baddr; } } num_clicks = 0; saw_motion = 1; grab_sel(v_start, v_end, false, event_time(event), false); } void SelectUp_xaction(Widget w _is_unused, XEvent *event, String *params, Cardinal *num_params) { int x, y; int baddr; Cardinal i; xaction_debug(SelectUp_xaction, event, params, num_params); if (w != *screen) { return; } if (n_owned == -1) { for (i = 0; i < NS; i++) { own_sel[i].atom = None; } n_owned = 0; } for (i = 0; i < NS; i++) { if (i < *num_params) { want_sel[i] = XInternAtom(display, params[i], false); } else { want_sel[i] = None; } } if (*num_params == 0) { want_sel[0] = XA_PRIMARY; } BOUNDED_XY(event, x, y); baddr = ROWCOL_TO_BA(y, x); if (event_time(event) - up_time > CLICK_INTERVAL) { #if defined(DEBUG_CLICKS) /*[*/ printf("too long, reset\n"); #endif /*]*/ num_clicks = 0; } up_time = event_time(event); if (++num_clicks > 3) { #if defined(DEBUG_CLICKS) /*[*/ printf("wrap\n"); #endif /*]*/ num_clicks = 1; } #if defined(DEBUG_CLICKS) /*[*/ printf("%d clicks\n", num_clicks); #endif /*]*/ switch (num_clicks) { case 1: /* * If we saw motion, then take the selection. * Otherwise, if we're in 3270 mode, move the cursor. */ if (saw_motion) { f_start = v_start; f_end = v_end; grab_sel(f_start, f_end, true, event_time(event), false); } else if (IN_3270) { cursor_move(baddr); } break; case 2: /* * If we moved the 3270 cursor on the first click, put it back. */ select_word(f_start, event_time(event)); break; case 3: select_line(f_start, event_time(event)); break; } saw_motion = 0; } static void set_select(XEvent *event, String *params, Cardinal *num_params) { Cardinal i; if (!any_selected) { return; } if (n_owned == -1) { for (i = 0; i < NS; i++) { own_sel[i].atom = None; } n_owned = 0; } for (i = 0; i < NS; i++) if (i < *num_params) { want_sel[i] = XInternAtom(display, params[i], false); } else { want_sel[i] = None; } if (*num_params == 0) { want_sel[0] = XA_PRIMARY; } own_sels(event_time(event)); } /* * Set the selection. * Usually bound to the Copy key. */ void set_select_xaction(Widget w _is_unused, XEvent *event, String *params, Cardinal *num_params) { xaction_debug(set_select_xaction, event, params, num_params); set_select(event, params, num_params); } /* * Translate the mouse position to a buffer address. */ int mouse_baddr(Widget w, XEvent *event) { int x, y; if (w != *screen) { return 0; } BOUNDED_XY(event, x, y); return ROWCOL_TO_BA(y, x); } /* * Cut action. */ #define ULS sizeof(unsigned long) #define ULBS (ULS * 8) void Cut_xaction(Widget w _is_unused, XEvent *event, String *params, Cardinal *num_params) { int baddr; int ba2; unsigned char fa = get_field_attribute(0); unsigned long *target; xaction_debug(Cut_xaction, event, params, num_params); if (!any_selected) { return; } set_select(event, params, num_params); target = (unsigned long *)XtCalloc(ULS, ((ROWS*COLS)+(ULBS-1)) / ULBS); /* Identify the positions to empty. */ for (baddr = 0; baddr < ROWS*COLS; baddr++) { if (ea_buf[baddr].fa) { fa = ea_buf[baddr].fa; } else if ((IN_NVT || !FA_IS_PROTECTED(fa)) && screen_selected(baddr)) { target[baddr/ULBS] |= 1L << (baddr%ULBS); } } /* Erase them. */ for (baddr = 0; baddr < ROWS*COLS; baddr++) { if ((target[baddr/ULBS] & (1L << (baddr%ULBS))) && ea_buf[baddr].ec != EBC_so && ea_buf[baddr].ec != EBC_si) { switch (ctlr_dbcs_state(baddr)) { case DBCS_NONE: case DBCS_SB: ctlr_add(baddr, EBC_space, ea_buf[baddr].cs); break; case DBCS_LEFT: ctlr_add(baddr, EBC_space, ea_buf[baddr].cs); ba2 = baddr; INC_BA(ba2); ctlr_add(ba2, EBC_space, ea_buf[baddr].cs); break; case DBCS_RIGHT: ba2 = baddr; DEC_BA(ba2); ctlr_add(ba2, EBC_space, ea_buf[baddr].cs); ctlr_add(baddr, EBC_space, ea_buf[baddr].cs); break; default: break; } mdt_set(baddr); } } Free(target); } /* * KybdSelect action. Extends the selection area in the indicated direction. */ void KybdSelect_xaction(Widget w _is_unused, XEvent *event, String *params, Cardinal *num_params) { enum { UP, DOWN, LEFT, RIGHT } direction; int x_start, x_end; Cardinal i; xaction_debug(KybdSelect_xaction, event, params, num_params); if (w != *screen) { return; } if (*num_params < 1) { popup_an_error("%s(): Requires one argument", action_name(KybdSelect_xaction)); return; } if (!strcasecmp(params[0], "Up")) { direction = UP; } else if (!strcasecmp(params[0], "Down")) { direction = DOWN; } else if (!strcasecmp(params[0], "Left")) { direction = LEFT; } else if (!strcasecmp(params[0], "Right")) { direction = RIGHT; } else { popup_an_error("%s(): First argument must be Up, Down, Left, or " "Right", action_name(KybdSelect_xaction)); return; } if (!any_selected) { x_start = x_end = cursor_addr; } else { if (f_start < f_end) { x_start = f_start; x_end = f_end; } else { x_start = f_end; x_end = f_start; } } switch (direction) { case UP: if (!(x_start / COLS)) { return; } x_start -= COLS; break; case DOWN: if ((x_end / COLS) == ROWS - 1) { return; } x_end += COLS; break; case LEFT: if (!(x_start % COLS)) { return; } x_start--; break; case RIGHT: if ((x_end % COLS) == COLS - 1) { return; } x_end++; break; } /* Figure out the atoms they want. */ if (n_owned == -1) { for (i = 0; i < NS; i++) { own_sel[i].atom = None; } n_owned = 0; } for (i = 1; i < NS; i++) { if (i < *num_params) { want_sel[i] = XInternAtom(display, params[i], false); } else { want_sel[i] = None; } } if (*num_params == 1) { want_sel[0] = XA_PRIMARY; } /* Grab the selection. */ f_start = v_start = x_start; f_end = v_end = x_end; grab_sel(f_start, f_end, true, event_time(event), false); } /* * unselect action. Removes a selection. */ void Unselect_xaction(Widget w _is_unused, XEvent *event, String *params, Cardinal *num_params) { xaction_debug(Unselect_xaction, event, params, num_params); /* It's just cosmetic. */ unselect(0, ROWS*COLS); } void SelectAll_xaction(Widget w _is_unused, XEvent *event, String *params, Cardinal *num_params) { Cardinal i; xaction_debug(SelectUp_xaction, event, params, num_params); if (w != *screen) { return; } if (n_owned == -1) { for (i = 0; i < NS; i++) { own_sel[i].atom = None; } n_owned = 0; } for (i = 0; i < NS; i++) { if (i < *num_params) { want_sel[i] = XInternAtom(display, params[i], false); } else { want_sel[i] = None; } } if (*num_params == 0) { want_sel[0] = XA_PRIMARY; } grab_sel(0, (ROWS * COLS) - 1, true, event_time(event), false); } /* * Screen side. */ static char *select_buf = NULL; static char *sb_ptr = NULL; static int sb_size = 0; #define SB_CHUNK 1024 static Time sel_time; static void init_select_buf(void) { if (select_buf == NULL) { select_buf = XtMalloc(sb_size = SB_CHUNK); } sb_ptr = select_buf; } static void store_sel(char c) { if (sb_ptr - select_buf >= sb_size) { sb_size += SB_CHUNK; select_buf = XtRealloc(select_buf, sb_size); sb_ptr = select_buf + sb_size - SB_CHUNK; } *(sb_ptr++) = c; } /* * Convert the UTF-8 string to an ICCCM-defined STRING (ISO 8859-1 printable * plus tab and newline). * * Returns the length of the stored string. */ static unsigned long store_icccm_string(XtPointer value, const char *buf) { char *dst = (char *)value; unsigned long len = 0; bool skip = false; while (*buf) { int nw; ucs4_t ucs; if (*buf == '\033') { /* Funky GE sequence. Skip it. */ *dst++ = ' '; len++; buf++; skip = true; continue; } nw = utf8_to_unicode(buf, strlen(buf), &ucs); if (nw <= 0) { return len; } if (skip) { skip = false; continue; } if (ucs == '\n' || (ucs >= 0x20 && ucs <= 0x7f) || (ucs >= 0xa0 && ucs <= 0xff)) { *dst++ = ucs & 0xff; len++; } buf += nw; } return len; } static Boolean convert_sel(Widget w, Atom *selection, Atom *target, Atom *type, XtPointer *value, unsigned long *length, int *format) { int i; /* Find the right selection. */ for (i = 0; i < NS; i++) { if (own_sel[i].atom == *selection) { break; } } if (i >= NS) { /* not my selection */ return False; } if (*target == XA_TARGETS(display)) { Atom* targetP; Atom* std_targets; unsigned long std_length; XmuConvertStandardSelection(w, sel_time, selection, target, type, (caddr_t*) &std_targets, &std_length, format); #if defined(XA_UTF8_STRING) /*[*/ *length = std_length + 6; #else /*][*/ *length = std_length + 5; #endif /*]*/ *value = (XtPointer) XtMalloc(sizeof(Atom) * (*length)); targetP = *(Atom**)value; *targetP++ = XA_STRING; *targetP++ = XA_TEXT(display); *targetP++ = XA_COMPOUND_TEXT(display); #if defined(XA_UTF8_STRING) /*[*/ *targetP++ = XA_UTF8_STRING(display); #endif /*]*/ *targetP++ = XA_LENGTH(display); *targetP++ = XA_LIST_LENGTH(display); memmove(targetP, std_targets, (int) (sizeof(Atom) * std_length)); XtFree((char *) std_targets); *type = XA_ATOM; *format = 32; return True; } if (*target == XA_STRING || *target == XA_TEXT(display) || *target == XA_COMPOUND_TEXT(display) #if defined(XA_UTF8_STRING) /*[*/ || *target == XA_UTF8_STRING(display) #endif /*]*/ ) { if (*target == XA_COMPOUND_TEXT(display) #if defined(XA_UTF8_STRING) /*[*/ || *target == XA_UTF8_STRING(display) #endif /*]*/ ) { *type = *target; } else { *type = XA_STRING; } *length = strlen(own_sel[i].buffer); *value = XtMalloc(*length); #if defined(XA_UTF8_STRING) /*[*/ if (*target == XA_UTF8_STRING(display)) { memmove(*value, own_sel[i].buffer, (int) *length); } else { #endif /*]*/ /* * N.B.: We return a STRING for COMPOUND_TEXT. * Someday we may do real ISO 2022, but not today. */ *length = store_icccm_string(*value, own_sel[i].buffer); #if defined(XA_UTF8_STRING) /*[*/ } #endif /*]*/ *format = 8; return True; } if (*target == XA_LIST_LENGTH(display)) { *value = XtMalloc(4); if (sizeof(long) == 4) { *(long *)*value = 1; } else { long temp = 1; memmove(*value, ((char*) &temp) + sizeof(long) - 4, 4); } *type = XA_INTEGER; *length = 1; *format = 32; return True; } if (*target == XA_LENGTH(display)) { *value = XtMalloc(4); if (sizeof(long) == 4) { *(long*)*value = strlen(own_sel[i].buffer); } else { long temp = strlen(own_sel[i].buffer); memmove(*value, ((char *) &temp) + sizeof(long) - 4, 4); } *type = XA_INTEGER; *length = 1; *format = 32; return True; } if (XmuConvertStandardSelection(w, sel_time, selection, target, type, (caddr_t *)value, length, format)) { return True; } return False; } static void lose_sel(Widget w _is_unused, Atom *selection) { int i; for (i = 0; i < NS; i++) { if (own_sel[i].atom != None && own_sel[i].atom == *selection) { own_sel[i].atom = None; XtFree(own_sel[i].buffer); own_sel[i].buffer = NULL; n_owned--; break; } } if (!n_owned) { unselect(0, ROWS*COLS); } } /* * Somewhat convoluted logic to return an ASCII character for a given screen * position. * * The character has to be found indirectly from ea_buf and the field * attirbutes, so that zero-intensity fields become blanks. */ static bool osc_valid = false; static void osc_start(void) { osc_valid = false; } /* * Return a 'selection' version of a given character on the screen. * Returns a printable ASCII character, or 0 if the character is a NULL and * shouldn't be included in the selection. */ static void onscreen_char(int baddr, unsigned char *r, int *rlen) { static int osc_baddr; static unsigned char fa; ucs4_t uc; int baddr2; *rlen = 1; /* If we aren't moving forward, all bets are off. */ if (osc_valid && baddr < osc_baddr) { osc_valid = false; } if (osc_valid) { /* * Search for a new field attribute between the address we * want and the last address we searched. If we found a new * field attribute, save the address for next time. */ get_bounded_field_attribute(baddr, osc_baddr, &fa); osc_baddr = baddr; } else { /* * Find the attribute the old way. */ fa = get_field_attribute(baddr); osc_baddr = baddr; osc_valid = true; } /* If it isn't visible, then make it a blank. */ if (FA_IS_ZERO(fa)) { *r = ' '; return; } /* Handle DBCS. */ switch (ctlr_dbcs_state(baddr)) { case DBCS_LEFT: if (ea_buf[baddr].ucs4) { *rlen = unicode_to_utf8(ea_buf[baddr].ucs4, (char *)r); } else { baddr2 = baddr; INC_BA(baddr2); uc = ebcdic_to_unicode((ea_buf[baddr].ec << 8) | ea_buf[baddr2].ec, CS_BASE, EUO_NONE); *rlen = unicode_to_utf8(uc, (char *)r); } return; case DBCS_RIGHT: /* Returned the entire character when the left half was read. */ *rlen = 0; return; case DBCS_SI: /* Suppress SI's altogether. They'll expand back on paste. */ *rlen = 0; return; case DBCS_SB: /* Treat SB's as normal SBCS characters. */ break; default: break; } switch (ea_buf[baddr].cs) { case CS_BASE: default: if (ea_buf[baddr].ucs4) { *rlen = unicode_to_utf8(ea_buf[baddr].ucs4, (char *)r); } else { switch (ea_buf[baddr].ec) { case EBC_so: /* * Suppress SO's altogether. They'll expand back on * paste. */ *rlen = 0; return; case EBC_null: *r = 0; return; default: /* * Note that we use the 'for_display' flavor of * ebcdic_base_to_unicode here, so DUP and FM are * translated to special private-use Unicode values. * These will (hopefully) be ignored by other * applications, but translated back to DUP and FM if * pasted back into x3270. */ uc = ebcdic_base_to_unicode(ea_buf[baddr].ec, EUO_BLANK_UNDEF | EUO_UPRIV); *rlen = unicode_to_utf8(uc, (char *)r); if (*rlen < 0) { *rlen = 0; } } } return; case CS_GE: /* Translate APL to Unicode. */ uc = apl_to_unicode(ea_buf[baddr].ec, EUO_NONE); if (uc == (ucs4_t)-1) { /* No translation. */ uc = UPRIV_GE_00 + ea_buf[baddr].ec; } *rlen = unicode_to_utf8(uc, (char *)r); if (*rlen < 0) { *rlen = 0; } return; case CS_LINEDRAW: /* VT100 line-drawing character. */ *rlen = unicode_to_utf8( linedraw_to_unicode(ea_buf[baddr].ucs4, false), (char *)r); return; } } /* * Attempt to own the selections in want_sel[]. */ static void own_sels(Time t) { int i, j; /* * Try to grab any new selections we may want. */ for (i = 0; i < NS; i++) { bool already_own = false; if (want_sel[i] == None) { continue; } /* Check if we already own it. */ for (j = 0; j < NS; j++) { if (own_sel[j].atom == want_sel[i]) { already_own = true; break; } } /* Find the slot for it. */ if (!already_own) { for (j = 0; j < NS; j++) { if (own_sel[j].atom == None) { break; } } if (j >= NS) { continue; } } if (XtOwnSelection(*screen, want_sel[i], t, convert_sel, lose_sel, NULL)) { if (!already_own) { n_owned++; own_sel[j].atom = want_sel[i]; } Replace(own_sel[j].buffer, XtMalloc(strlen(select_buf) + 1)); memmove(own_sel[j].buffer, select_buf, strlen(select_buf) + 1); } else { XtWarning("Could not get selection"); if (own_sel[j].atom != None) { XtFree(own_sel[j].buffer); own_sel[j].buffer = NULL; own_sel[j].atom = None; n_owned--; } } } if (!n_owned) { unselect(0, ROWS*COLS); } sel_time = t; } /* * Copy the selected area on the screen into a buffer and attempt to * own the selections in want_sel[]. */ #define VISUAL_LEFT(d) ((IS_LEFT(d)) || ((d) == DBCS_SI)) static bool grab_sel(int start, int end, bool really, Time t, bool as_url) { int i, j; int start_row, end_row; int nulls = 0; unsigned char osc[16]; int len; unselect(0, ROWS*COLS); if (start > end) { int exch = end; end = start; start = exch; } start_row = start / COLS; end_row = end / COLS; init_select_buf(); /* prime the store_sel() routine */ osc_start(); /* prime the onscreen_char() routine */ if (!ever_3270 && !toggled(RECTANGLE_SELECT)) { /* Continuous selections */ bool last_wrap = false; if (IS_RIGHT(ctlr_dbcs_state(start))) { DEC_BA(start); } if (VISUAL_LEFT(ctlr_dbcs_state(end))) { INC_BA(end); } for (i = start; i <= end; i++) { screen_set_select(i); if (really) { if (i != start && !(i % COLS) && !last_wrap) { nulls = 0; store_sel('\n'); } onscreen_char(i, osc, &len); for (j = 0; j < len; j++) { if (osc[j]) { while (nulls) { store_sel(' '); nulls--; } store_sel((char)osc[j]); } else { nulls++; } } last_wrap = (ea_buf[i].gr & GR_WRAP) != 0; } } /* Check for newline extension on the last line. */ if ((end % COLS) != (COLS - 1)) { bool all_blank = true; for (i = end; i < end + (COLS - (end % COLS)); i++) { onscreen_char(i, osc, &len); for (j = 0; j < len; j++) { if (osc[j]) { all_blank = false; break; } } } if (all_blank) { for (i = end; i < end + (COLS - (end % COLS)); i++) { screen_set_select(i); } if (really) { store_sel('\n'); } } } } else { /* Rectangular selections */ if (start_row == end_row) { if (IS_RIGHT(ctlr_dbcs_state(start))) { DEC_BA(start); } if (VISUAL_LEFT(ctlr_dbcs_state(end))) { INC_BA(end); } for (i = start; i <= end; i++) { screen_set_select(i); if (really) { onscreen_char(i, osc, &len); for (j = 0; j < len; j++) { if (osc[j]) { while (nulls) { store_sel(' '); nulls--; } store_sel((char)osc[j]); } else { nulls++; } } } } } else { int row, col; int start_col = start % COLS; int end_col = end % COLS; if (start_col > end_col) { int exch = end_col; end_col = start_col; start_col = exch; } for (row = start_row; row <= end_row; row++) { int sc = start_col; int ec = end_col; if (sc && IS_RIGHT(ctlr_dbcs_state(row*COLS + sc))) { sc = sc - 1; } if (ec < COLS-1 && VISUAL_LEFT(ctlr_dbcs_state(row*COLS + ec))) { ec = ec + 1; } for (col = sc; col <= ec; col++) { screen_set_select(row*COLS + col); if (really) { onscreen_char(row*COLS + col, osc, &len); for (j = 0; j < len; j++) { if (osc[j]) { while (nulls) { store_sel(' '); nulls--; } store_sel((char)osc[j]); } else { nulls++; } } } } nulls = 0; if (really && row < end_row) { store_sel('\n'); } } } } /* Terminate the result. */ if (really) { store_sel('\0'); } any_selected = true; ctlr_changed(0, ROWS*COLS); if (really) { own_sels(t); } #if defined(HAVE_START) /*[*/ if (as_url && toggled(SELECT_URL) && (!strncmp(select_buf, HTTP_PREFIX, strlen(HTTP_PREFIX)) || !strncmp(select_buf, HTTPS_PREFIX, strlen(HTTPS_PREFIX)))) { #if defined(_WIN32) /*[*/ char *command = xs_buffer("start %s", select_buf); #elif defined(linux) || defined(__linux__) /*[*/ char *command = xs_buffer("xdg-open %s", select_buf); #elif defined(__APPLE__) /*][*/ char *command = xs_buffer("open %s", select_buf); #elif defined(__CYGWIN__) /*][*/ char *command = xs_buffer("cygstart -o %s", select_buf); #endif /*]*/ int rc; vtrace("Starting URL open command: %s\n", command); rc = system(command); if (rc != 0) { popup_an_error("URL open failed, return code %d", rc); } Free(command); return true; } #endif /*]*/ return false; } /* * Check if any character in a given region is selected. */ bool area_is_selected(int baddr, int len) { int i; for (i = 0; i < len; i++) { if (screen_selected(baddr+i)) { return true; } } return false; } /* * Unhighlight the region of selected text -- but don't give up the selection. */ void unselect(int baddr _is_unused, int len _is_unused) { if (any_selected) { screen_unselect_all(); ctlr_changed(0, ROWS*COLS); any_selected = false; } } /* Selection insertion. */ #define NP 5 static Atom paste_atom[NP]; static int n_pasting = 0; static int pix = 0; static Time paste_time; #if defined(XA_UTF8_STRING) /*[*/ static bool paste_utf8; #endif /*]*/ static void paste_callback(Widget w, XtPointer client_data _is_unused, Atom *selection _is_unused, Atom *type _is_unused, XtPointer value, unsigned long *length, int *format _is_unused) { char *s; unsigned long s_len; ucs4_t *u_buf; size_t u_len; if ((value == NULL) || (*length == 0)) { XtFree(value); /* Try the next one. */ #if defined(XA_UTF8_STRING) /*[*/ if (paste_utf8) { paste_utf8 = false; XtGetSelectionValue(w, paste_atom[(pix - 1)], XA_STRING, paste_callback, NULL, paste_time); } else #endif /*]*/ if (n_pasting > pix) { #if defined(XA_UTF8_STRING) /*[*/ paste_utf8 = true; #endif /*]*/ XtGetSelectionValue(w, paste_atom[pix++], #if defined(XA_UTF8_STRING) /*[*/ XA_UTF8_STRING(display), #else /*][*/ XA_STRING, #endif /*]*/ paste_callback, NULL, paste_time); } return; } /* Convert the selection to Unicode. */ s_len = *length; s = (char *)value; u_buf = (ucs4_t *)Malloc(*length * sizeof(ucs4_t)); u_len = 0; while (s_len) { ucs4_t uc; #if defined(XA_UTF8_STRING) /*[*/ if (paste_utf8) { int nu; nu = utf8_to_unicode(s, s_len, &uc); if (nu <= 0) { break; } s += nu; s_len -= nu; } else #endif /*]*/ { /* Assume it's ISO 8859-1. */ uc = *s & 0xff; s++; s_len--; } u_buf[u_len++] = uc; } emulate_uinput(u_buf, u_len, true); Free(u_buf); XtFree(value); n_pasting = 0; } void insert_selection_xaction(Widget w, XEvent *event, String *params, Cardinal *num_params) { Cardinal i; Atom a; XButtonEvent *be = (XButtonEvent *)event; xaction_debug(insert_selection_xaction, event, params, num_params); n_pasting = 0; for (i = 0; i < *num_params; i++) { a = XInternAtom(display, params[i], true); if (a == None) { popup_an_error("%s(): No atom for selection", action_name(insert_selection_xaction)); continue; } if (n_pasting < NP) { paste_atom[n_pasting++] = a; } } pix = 0; #if defined(XA_UTF8_STRING) /*[*/ paste_utf8 = true; #endif /*]*/ if (n_pasting > pix) { paste_time = be->time; XtGetSelectionValue(w, paste_atom[pix++], #if defined(XA_UTF8_STRING) /*[*/ XA_UTF8_STRING(display), #else /*][*/ XA_STRING, #endif /*]*/ paste_callback, NULL, paste_time); } } /** * Select module registration. */ void select_register(void) { static toggle_register_t toggles[] = { { RECTANGLE_SELECT, NULL, 0 } #if defined(HAVE_START) /*[*/ , { SELECT_URL, NULL, 0 } #endif /*]*/ }; register_toggles(toggles, array_count(toggles)); } suite3270-4.1/x3270/status.c000066400000000000000000001160341413735575200153160ustar00rootroot00000000000000/* * Copyright (c) 1993-2009, 2013-2015, 2018-2021 Paul Mattes. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of Paul Mattes nor his contributors may be used * to endorse or promote products derived from this software without * specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. */ /* * status.c * This module handles the 3270 status line. */ #include "globals.h" #include "xglobals.h" #include #include #include #include "3270ds.h" #include "appres.h" #include "cg.h" #include "actions.h" #include "kybd.h" #include "host.h" #include "screen.h" #include "status.h" #include "tables.h" #include "trace.h" /* temp */ #include "unicodec.h" #include "utils.h" #include "xappres.h" #include "xscreen.h" #include "xstatus.h" #include "xtables.h" static XChar2b *status_2b; static unsigned char *status_1b; static XChar2b *display_2b; static bool *sxcursor_want; static bool *sxcursor_have; static bool status_changed = false; static struct status_line { bool changed; int start, len, color; XChar2b *s2b; unsigned char *s1b; XChar2b *d2b; } *status_line; static int offsets[] = { 0, /* connection status */ 8, /* wait, locked */ 39, /* shift, insert, timing, cursor position */ -1 }; #define SSZ ((sizeof(offsets)/sizeof(offsets[0])) - 1) #define CTLR_REGION 0 #define WAIT_REGION 1 #define MISC_REGION 2 static int colors[SSZ] = { FA_INT_NORM_NSEL, FA_INT_HIGH_SEL, FA_INT_NORM_NSEL }; static int colors3279[SSZ] = { HOST_COLOR_BLUE, HOST_COLOR_WHITE, HOST_COLOR_BLUE }; #define CM (60 * 10) /* csec per minute */ /* * The status line is laid out thusly (M is maxCOLS): * * 0 "4" in a square * 1 "A" underlined * 2 solid box if connected, "?" in a box if not * 3..7 empty * 8... message area * M-41 Meta indication ("M" or blank) * M-40 Alt indication ("A" or blank) * M-39 Shift indication (Special symbol/"^" or blank) * M-38 APL indication (Special symbol/"a" or blank) * M-37 empty * M-36 Compose indication ("C" or blank) * M-35 Compose first character * M-34 empty * M-33 Typeahead indication ("T" or blank) * M-32 Screentrace count * M-31 Alternate keymap indication ("K" or blank) * M-30 Reverse input mode indication ("R" or blank) * M-29 Insert mode indication (Special symbol/"I" or blank) * M-28 Printer indication ("P" or blank) * M-27 Script indication ("s" or blank) * M-26..M-16 empty * M-15..M-9 command timing (Clock symbol and m:ss, or blank) * M-7..M cursor position (rrr/ccc or blank) */ /* Positions */ #define LBOX 0 /* left-hand box */ #define CNCT 1 /* connection between */ #define RBOX 2 /* right-hand box */ #define M0 8 /* message area */ #define SHIFT (maxCOLS-39) /* shift indication */ #define COMPOSE (maxCOLS-36) /* compose characters */ #define TYPEAHD (maxCOLS-33) /* typeahead */ #define SCRNTRC (maxCOLS-32) /* screentrace */ #define KMAP (maxCOLS-31) /* alt keymap in effect */ #define REVERSE (maxCOLS-30) /* reverse input mode in effect */ #define INSERT (maxCOLS-29) /* insert mode */ #define PSESS (maxCOLS-28) /* printer session */ #define SCRIPT (maxCOLS-27) /* script in progress */ #define LU (maxCOLS-25) /* LU name */ #define LUCNT 8 #define T0 (maxCOLS-15) /* timings */ #define TCNT 7 #define C0 (maxCOLS-7) /* cursor position */ #define CCNT 7 #define STATUS_Y (*screen_height - *descent) static unsigned char nullblank; static Position status_y; /* Status line contents (high-level) */ static void do_disconnected(void); static void do_reconnecting(void); static void do_resolving(void); static void do_connecting(void); static void do_tls(void); static void do_proxy(void); static void do_telnet(void); static void do_tn3270e(void); static void do_awaiting_first(void); static void do_unlock_delay(void); static void do_inhibit(void); static void do_blank(void); static void do_twait(void); static void do_syswait(void); static void do_protected(void); static void do_numeric(void); static void do_overflow(void); static void do_dbcs(void); static void do_scrolled(void); static void do_minus(void); static void do_disabled(void); static bool oia_undera = true; static bool oia_boxsolid = false; static int oia_shift = 0; static bool oia_typeahead = false; static int oia_screentrace = -1; static bool oia_compose = false; static ucs4_t oia_compose_char = 0; static enum keytype oia_compose_keytype = KT_STD; static enum msg { DISCONNECTED, /* X Not Connected */ XRECONNECTING, /* X Reconnecting */ XRESOLVING, /* X [DNS] */ CONNECTING, /* X [TCP] */ TLS, /* X [TLS] */ PROXY, /* X [PROXY] */ TELNET, /* X [TELNET] */ TN3270E, /* X [TN3270E] */ AWAITING_FIRST, /* X [Field] */ UNLOCK_DELAY, /* X */ INHIBIT, /* X Inhibit */ BLANK, /* (blank) */ TWAIT, /* X Wait */ SYSWAIT, /* X SYSTEM */ PROTECTED, /* X Protected */ NUMERIC, /* X Numeric */ OVERFLOW, /* X Overflow */ DBCS, /* X DBCS */ SCROLLED, /* X Scrolled */ MINUS, /* X -f */ KBD_DISABLED, /* X Disabled */ N_MSGS } oia_msg = DISCONNECTED, scroll_saved_msg, disabled_saved_msg = BLANK; static char oia_lu[LUCNT+1]; static bool msg_is_saved = false; static int n_scrolled = 0; static void (*msg_proc[N_MSGS])(void) = { do_disconnected, do_reconnecting, do_resolving, do_connecting, do_tls, do_proxy, do_telnet, do_tn3270e, do_awaiting_first, do_unlock_delay, do_inhibit, do_blank, do_twait, do_syswait, do_protected, do_numeric, do_overflow, do_dbcs, do_scrolled, do_minus, do_disabled }; static int msg_color[N_MSGS] = { FA_INT_NORM_NSEL, /* disconnected */ FA_INT_NORM_NSEL, /* reconnecting */ FA_INT_NORM_NSEL, /* resolving */ FA_INT_NORM_NSEL, /* connecting */ FA_INT_NORM_NSEL, /* tls */ FA_INT_NORM_NSEL, /* proxy */ FA_INT_NORM_NSEL, /* telnet */ FA_INT_NORM_NSEL, /* tn3270e */ FA_INT_NORM_NSEL, /* awaiting_first */ FA_INT_NORM_NSEL, /* unlock_delay */ FA_INT_NORM_NSEL, /* inhibit */ FA_INT_NORM_NSEL, /* blank */ FA_INT_NORM_NSEL, /* twait */ FA_INT_NORM_NSEL, /* syswait */ FA_INT_HIGH_SEL, /* protected */ FA_INT_HIGH_SEL, /* numeric */ FA_INT_HIGH_SEL, /* overflow */ FA_INT_HIGH_SEL, /* dbcs */ FA_INT_NORM_NSEL, /* scrolled */ FA_INT_HIGH_SEL, /* minus */ FA_INT_HIGH_SEL, /* disabled */ }; static int msg_color3279[N_MSGS] = { HOST_COLOR_WHITE, /* disconnected */ HOST_COLOR_WHITE, /* reconnecting */ HOST_COLOR_WHITE, /* resolving */ HOST_COLOR_WHITE, /* connecting */ HOST_COLOR_WHITE, /* tls */ HOST_COLOR_WHITE, /* proxy */ HOST_COLOR_WHITE, /* telnet */ HOST_COLOR_WHITE, /* tn3270e */ HOST_COLOR_WHITE, /* awaiting_first */ HOST_COLOR_WHITE, /* unlock_delay */ HOST_COLOR_WHITE, /* inhibit */ HOST_COLOR_BLUE, /* blank */ HOST_COLOR_WHITE, /* twait */ HOST_COLOR_WHITE, /* syswait */ HOST_COLOR_RED, /* protected */ HOST_COLOR_RED, /* numeric */ HOST_COLOR_RED, /* overflow */ HOST_COLOR_RED, /* dbcs */ HOST_COLOR_WHITE, /* scrolled */ HOST_COLOR_RED, /* minus */ HOST_COLOR_RED, /* disabled */ }; static bool oia_insert = false; static bool oia_reverse = false; static bool oia_kmap = false; static bool oia_script = false; static bool oia_printer = false; static char *oia_cursor = (char *) 0; static char *oia_timing = (char *) 0; static unsigned char disc_msg[] = { CG_lock, CG_space, CG_commhi, CG_badcommhi, CG_commhi, CG_commjag, CG_commlo, CG_space }; static int disc_len = sizeof(disc_msg); static unsigned char recon_msg[] = { CG_lock, CG_space, CG_commhi, CG_badcommhi, CG_commhi, CG_commjag, CG_commlo, CG_space, CG_clockleft, CG_clockright }; static int recon_len = sizeof(recon_msg); static unsigned char rslv_msg[] = { CG_lock, CG_space, CG_commhi, CG_badcommhi, CG_commhi, CG_commjag, CG_commlo, CG_space, CG_bracketleft, CG_D, CG_N, CG_S, CG_bracketright }; static int rslv_len = sizeof(rslv_msg); static unsigned char cnct_msg[] = { CG_lock, CG_space, CG_commhi, CG_badcommhi, CG_commhi, CG_commjag, CG_commlo, CG_space, CG_bracketleft, CG_T, CG_C, CG_P, CG_bracketright }; static int cnct_len = sizeof(cnct_msg); static unsigned char tls_msg[] = { CG_lock, CG_space, CG_commhi, CG_badcommhi, CG_commhi, CG_commjag, CG_commlo, CG_space, CG_bracketleft, CG_T, CG_L, CG_S, CG_bracketright }; static int tls_len = sizeof(tls_msg); static unsigned char proxy_msg[] = { CG_lock, CG_space, CG_commhi, CG_badcommhi, CG_commhi, CG_commjag, CG_commlo, CG_space, CG_bracketleft, CG_P, CG_r, CG_o, CG_x, CG_y, CG_bracketright }; static int proxy_len = sizeof(proxy_msg); static unsigned char telnet_msg[] = { CG_lock, CG_space, CG_commhi, CG_badcommhi, CG_commhi, CG_commjag, CG_commlo, CG_space, CG_bracketleft, CG_T, CG_E, CG_L, CG_N, CG_E, CG_T, CG_bracketright }; static int telnet_len = sizeof(telnet_msg); static unsigned char tn3270e_msg[] = { CG_lock, CG_space, CG_commhi, CG_badcommhi, CG_commhi, CG_commjag, CG_commlo, CG_space, CG_bracketleft, CG_T, CG_N, CG_3, CG_2, CG_7, CG_0, CG_E, CG_bracketright }; static int tn3270e_len = sizeof(tn3270e_msg); static unsigned char awaiting_first_msg[] = { CG_lock, CG_space, CG_bracketleft, CG_F, CG_i, CG_e, CG_l, CG_d, CG_bracketright }; static int awaiting_first_len = sizeof(awaiting_first_msg); static unsigned char *a_not_connected; static unsigned char *a_reconnecting; static unsigned char *a_resolving; static unsigned char *a_connecting; static unsigned char *a_tls; static unsigned char *a_proxy; static unsigned char *a_telnet; static unsigned char *a_tn3270e; static unsigned char *a_awaiting_first; static unsigned char *a_inhibit; static unsigned char *a_twait; static unsigned char *a_syswait; static unsigned char *a_protected; static unsigned char *a_numeric; static unsigned char *a_overflow; static unsigned char *a_dbcs; static unsigned char *a_scrolled; static unsigned char *a_minus; static unsigned char *a_disabled; static ioid_t revert_timer_id = NULL_IOID; static unsigned char *make_amsg(const char *key); static void cancel_disabled_revert(void); static void status_render(int region); static void do_ctlr(void); static void do_msg(enum msg t); static void paint_msg(enum msg t); static void do_insert(bool on); static void do_reverse(bool on); static void do_kmap(bool on); static void do_script(bool on); static void do_printer(bool on); static void do_shift(int state); static void do_typeahead(int state); static void do_screentrace(int state); static void do_compose(bool on, ucs4_t ucs4, enum keytype keytype); static void do_lu(const char *lu); static void do_timing(char *buf); static void do_cursor(char *buf); static void status_connect(bool connected); static void status_3270_mode(bool connected); static void status_printer(bool on); /** * Status line module registration. */ void status_register(void) { register_schange(ST_NEGOTIATING, status_connect); register_schange(ST_CONNECT, status_connect); register_schange(ST_3270_MODE, status_3270_mode); register_schange(ST_PRINTER, status_printer); } /* Initialize the status line */ void status_init(void) { a_not_connected = make_amsg("statusNotConnected"); a_reconnecting = make_amsg("statusReconnecting"); a_resolving = make_amsg("statusResolving"); a_connecting = make_amsg("statusConnecting"); a_tls = make_amsg("statusTlsPending"); a_proxy = make_amsg("statusProxyPending"); a_telnet = make_amsg("statusTelnetPending"); a_tn3270e = make_amsg("statusTn3270ePending"); a_awaiting_first = make_amsg("statusAwaitingFirst"); a_inhibit = make_amsg("statusInhibit"); a_twait = make_amsg("statusTwait"); a_syswait = make_amsg("statusSyswait"); a_protected = make_amsg("statusProtected"); a_numeric = make_amsg("statusNumeric"); a_overflow = make_amsg("statusOverflow"); a_dbcs = make_amsg("statusDbcs"); a_scrolled = make_amsg("statusScrolled"); a_minus = make_amsg("statusMinus"); a_disabled = make_amsg("statusDisabled"); oia_shift = toggled(APL_MODE)? AplMode: 0; } /* Reinitialize the status line */ void status_reinit(unsigned cmask) { unsigned i; if (cmask & FONT_CHANGE) { nullblank = *standard_font ? ' ' : CG_space; } if (cmask & (FONT_CHANGE | MODEL_CHANGE | SCROLL_CHANGE)) { status_y = STATUS_Y; if (!*descent) { ++status_y; } } if (cmask & MODEL_CHANGE) { Replace(status_line, (struct status_line *)XtCalloc(sizeof(struct status_line), SSZ)); Replace(status_2b, (XChar2b *)XtCalloc(sizeof(XChar2b), maxCOLS)); Replace(status_1b, (unsigned char *)XtCalloc(sizeof(unsigned char), maxCOLS)); Replace(display_2b, (XChar2b *)XtCalloc(sizeof(XChar2b), maxCOLS)); Replace(sxcursor_want, (bool *)XtCalloc(sizeof(bool), maxCOLS)); Replace(sxcursor_have, (bool *)XtCalloc(sizeof(bool), maxCOLS)); offsets[SSZ] = maxCOLS; if (appres.interactive.mono) { colors[1] = FA_INT_NORM_NSEL; } for (i = 0; i < SSZ; i++) { status_line[i].start = offsets[i]; status_line[i].len = offsets[i+1] - offsets[i]; status_line[i].s2b = status_2b + offsets[i]; status_line[i].s1b = status_1b + offsets[i]; status_line[i].d2b = display_2b + offsets[i]; } } else { memset(display_2b, 0, maxCOLS * sizeof(XChar2b)); } if (cmask & (COLOR_CHANGE | MODEL_CHANGE)) { for (i = 0; i < SSZ; i++) { status_line[i].color = mode.m3279 ? colors3279[i] : colors[i]; } } for (i = 0; i < SSZ; i++) { status_line[i].changed = true; } status_changed = true; /* * Always redraw all the fields; it's easier than keeping track of * what may have changed and why. */ do_ctlr(); paint_msg(oia_msg); do_insert(oia_insert); do_reverse(oia_reverse); do_kmap(oia_kmap); do_script(oia_script); do_printer(oia_printer); do_shift(oia_shift); do_typeahead(oia_typeahead); do_screentrace(oia_screentrace); do_compose(oia_compose, oia_compose_char, oia_compose_keytype); do_lu(oia_lu); do_cursor(oia_cursor); do_timing(oia_timing); } /* Check for a space. */ static bool status_space(int col) { return (*standard_font && (status_1b[col] == ' ' || status_1b[col] == 0)) || (!*standard_font && (status_1b[col] == CG_space || status_1b[col] == CG_null)); } /* Render the status line onto the screen */ void status_disp(void) { unsigned i; int col; if (!status_changed) { return; } for (i = 0; i < SSZ; i++) { if (status_line[i].changed) { status_render(i); memmove(status_line[i].d2b, status_line[i].s2b, status_line[i].len * sizeof(XChar2b)); status_line[i].changed = false; } } /* Draw or undraw the crosshair. */ for (col = 0; col < maxCOLS; col++) { if (sxcursor_want[col]) { if (status_space(col)) { XTextItem16 text1; XChar2b text = screen_vcrosshair(); text1.chars = &text; text1.nchars = 1; text1.delta = 0; text1.font = *fid; XDrawText16(display, *screen_window, screen_crosshair_gc(), COL_TO_X(col), status_y, &text1, 1); sxcursor_have[col] = true; } } else if (sxcursor_have[col]) { XFillRectangle(display, *screen_window, screen_invgc(0), COL_TO_X(col), status_y - *ascent, *char_width, *char_height); sxcursor_have[col] = false; } } status_changed = false; } /* Mark the entire status line as changed */ void status_touch(void) { unsigned i; for (i = 0; i < SSZ; i++) { status_line[i].changed = true; memset(status_line[i].d2b, 0, status_line[i].len * sizeof(XChar2b)); } status_changed = true; } /* Connected or disconnected */ static void status_connect(bool connected) { if (connected) { oia_boxsolid = IN_3270 && !IN_SSCP; do_ctlr(); if (cstate == RECONNECTING) { cancel_disabled_revert(); do_msg(XRECONNECTING); } else if (cstate == RESOLVING) { oia_boxsolid = false; do_ctlr(); cancel_disabled_revert(); do_msg(XRESOLVING); status_untiming(); status_uncursor_pos(); } else if (cstate == TCP_PENDING) { oia_boxsolid = false; do_ctlr(); cancel_disabled_revert(); do_msg(CONNECTING); status_untiming(); status_uncursor_pos(); } else if (cstate == TLS_PENDING) { oia_boxsolid = false; do_ctlr(); cancel_disabled_revert(); do_msg(TLS); status_untiming(); status_uncursor_pos(); } else if (cstate == PROXY_PENDING) { oia_boxsolid = false; do_ctlr(); cancel_disabled_revert(); do_msg(PROXY); status_untiming(); status_uncursor_pos(); } else if (cstate == TELNET_PENDING) { oia_boxsolid = false; do_ctlr(); cancel_disabled_revert(); do_msg(TELNET); status_untiming(); status_uncursor_pos(); } else if (cstate == CONNECTED_UNBOUND) { oia_boxsolid = false; do_ctlr(); cancel_disabled_revert(); do_msg(TN3270E); status_untiming(); status_uncursor_pos(); } else if (kybdlock & KL_AWAITING_FIRST) { cancel_disabled_revert(); do_msg(AWAITING_FIRST); } else { cancel_disabled_revert(); do_msg(BLANK); } } else { oia_boxsolid = false; do_ctlr(); cancel_disabled_revert(); do_msg(DISCONNECTED); status_uncursor_pos(); } status_untiming(); } /* Changed 3270 mode */ static void status_3270_mode(bool connected) { oia_boxsolid = IN_3270 && !IN_SSCP; do_ctlr(); status_untiming(); status_connect(CONNECTED); } /* Toggle printer session mode */ static void status_printer(bool on) { do_printer(oia_printer = on); } /* Revert the disabled message. */ static void revert_disabled(ioid_t id _is_unused) { assert(disabled_saved_msg != KBD_DISABLED); paint_msg(disabled_saved_msg); revert_timer_id = NULL_IOID; } /* Cancel the revert timer. */ static void cancel_disabled_revert(void) { if (revert_timer_id != NULL_IOID) { RemoveTimeOut(revert_timer_id); revert_timer_id = NULL_IOID; } } /* Revert early. */ static void revert_early(void) { if (revert_timer_id != NULL_IOID) { RemoveTimeOut(revert_timer_id); revert_disabled(NULL_IOID); } } /* Keyboard disable flash. */ void status_keyboard_disable_flash() { if (keyboard_disabled()) { if (oia_msg == KBD_DISABLED) { /* Push out the revert timer. */ if (revert_timer_id != NULL_IOID) { RemoveTimeOut(revert_timer_id); revert_timer_id = AddTimeOut(1000, revert_disabled); } } else { disabled_saved_msg = oia_msg; paint_msg(KBD_DISABLED); /* Revert the message in 1s. */ assert(revert_timer_id == NULL_IOID); revert_timer_id = AddTimeOut(1000, revert_disabled); } } else { if (oia_msg == KBD_DISABLED) { cancel_disabled_revert(); paint_msg(disabled_saved_msg); } } } /* Lock the keyboard (twait) */ void status_twait(void) { oia_undera = false; do_ctlr(); cancel_disabled_revert(); do_msg(TWAIT); } /* Done with controller confirmation */ void status_ctlr_done(void) { oia_undera = true; do_ctlr(); } /* Lock the keyboard (X SYSTEM) */ void status_syswait(void) { cancel_disabled_revert(); do_msg(SYSWAIT); } /* Lock the keyboard (operator error) */ void status_oerr(int error_type) { switch (error_type) { case KL_OERR_PROTECTED: cancel_disabled_revert(); do_msg(PROTECTED); break; case KL_OERR_NUMERIC: cancel_disabled_revert(); do_msg(NUMERIC); break; case KL_OERR_OVERFLOW: cancel_disabled_revert(); do_msg(OVERFLOW); break; case KL_OERR_DBCS: cancel_disabled_revert(); do_msg(DBCS); break; } } /* * The interaction of SCROLLED and KBD_DISABLED is somewhat complex. * * KBD_DISABLED overlays SCROLLED, and KBD_DISABLED overlays SCROLLED. When * the disable revert timer expires, SCROLLED will be restored (if we are still * scrolled). But when SCROLLED reverts, KBD_DISABLED will *not* be restored. * * Meanwhile, any other OIA state that is set while showing SCROLLED (or * showing KBD_DISABLED which is overlaying SCROLLED) will be saved, to be * restored when scrolling reverts. */ /* Lock the keyboard (X Scrolled) */ void status_scrolled(int n) { /* Fire the 'X Disabled' revert timer early. */ revert_early(); n_scrolled = n; if (n != 0) { if (!msg_is_saved) { scroll_saved_msg = oia_msg; assert(scroll_saved_msg != SCROLLED); assert(scroll_saved_msg != KBD_DISABLED); msg_is_saved = true; } paint_msg(SCROLLED); } else { if (msg_is_saved) { msg_is_saved = false; paint_msg(scroll_saved_msg); } } } /* Lock the keyboard (X -f) */ void status_minus(void) { cancel_disabled_revert(); do_msg(MINUS); } /* Unlock the keyboard */ void status_reset(void) { cancel_disabled_revert(); if (kybdlock & KL_ENTER_INHIBIT) { do_msg(INHIBIT); } else if (kybdlock & KL_DEFERRED_UNLOCK) { do_msg(UNLOCK_DELAY); } else { status_connect(PCONNECTED); } } /* Toggle insert mode */ void status_insert_mode(bool on) { do_insert(oia_insert = on); } /* Toggle reverse mode */ void status_reverse_mode(bool on) { do_reverse(oia_reverse = on); } /* Toggle kmap mode */ void status_kmap(bool on) { do_kmap(oia_kmap = on); } /* Toggle script mode */ void status_script(bool on) { do_script(oia_script = on); } /* Toggle shift mode */ void status_shift_mode(int state) { do_shift(oia_shift = (oia_shift & AplMode) | state); } /* Toggle APL mode. */ void status_apl_mode(bool on) { do_shift(oia_shift = (oia_shift & ~AplMode) | (on? AplMode: 0)); } /* Toggle typeahead */ void status_typeahead(bool on) { do_typeahead(oia_typeahead = on); } /* Change screentrace */ void status_screentrace(int n) { do_screentrace(oia_screentrace = n); } /* Set compose character */ void status_compose(bool on, ucs4_t ucs4, enum keytype keytype) { oia_compose = on; oia_compose_char = ucs4; oia_compose_keytype = keytype; do_compose(on, ucs4, keytype); } /* Set LU name */ void status_lu(const char *lu) { if (lu != NULL) { strncpy(oia_lu, lu, LUCNT); oia_lu[LUCNT] = '\0'; } else { memset(oia_lu, '\0', sizeof(oia_lu)); } do_lu(oia_lu); } /* Display timing */ void status_timing(struct timeval *t0, struct timeval *t1) { static char no_time[] = ":??.?"; static char buf[32]; if (t1->tv_sec - t0->tv_sec > (99*60)) { do_timing(oia_timing = no_time); } else { unsigned long cs; /* centiseconds */ cs = (t1->tv_sec - t0->tv_sec) * 10 + (t1->tv_usec - t0->tv_usec + 50000) / 100000; if (cs < CM) { snprintf(buf, sizeof(buf), ":%02ld.%ld", cs / 10, cs % 10); } else { snprintf(buf, sizeof(buf), "%02ld:%02ld", cs / CM, (cs % CM) / 10); } do_timing(oia_timing = buf); } } /* Erase timing indication */ void status_untiming(void) { do_timing(oia_timing = (char *) 0); } /* Update cursor position */ void status_cursor_pos(int ca) { static char buf[CCNT+1]; if (xappres.xquartz_hack) { snprintf(buf, sizeof(buf), "%02d/%02d", (ca/COLS + 1) % 100, (ca%COLS + 1) % 100); } else { snprintf(buf, sizeof(buf), "%03d/%03d", ca/COLS + 1, ca%COLS + 1); } do_cursor(oia_cursor = buf); } /* Erase cursor position */ void status_uncursor_pos(void) { do_cursor(oia_cursor = (char *) 0); } /* Internal routines */ /* Set the changed status for a particular status-line column. */ static void set_status_changed(int col) { unsigned i; status_changed = true; for (i = 0; i < SSZ; i++) { if (col >= status_line[i].start && col < status_line[i].start + status_line[i].len) { status_line[i].changed = true; break; } } } /* Update the status line by displaying "symbol" at column "col". */ static void status_add(int col, unsigned char symbol, enum keytype keytype) { XChar2b n2b; /* Store the text. */ n2b.byte1 = (keytype == KT_STD) ? 0 : 1; n2b.byte2 = symbol; if (status_2b[col].byte1 == n2b.byte1 && status_2b[col].byte2 == n2b.byte2) { return; } status_2b[col] = n2b; status_1b[col] = symbol; /* Update change status. */ set_status_changed(col); } /** * Draw the crosshair cursor. * * @param[in] column Column where the cursor should be */ void status_crosshair(int column) { sxcursor_want[column] = true; set_status_changed(column); } /** * Turn off the crosshair cursor, wherever it is. */ void status_crosshair_off(void) { int i; for (i = 0; i < maxCOLS; i++) { if (sxcursor_want[i]) { sxcursor_want[i] = false; set_status_changed(i); } } } /* * Render a region of the status line onto the display, the idea being to * minimize the number of redundant X drawing operations performed. * * What isn't optimized is what happens when "ABC" becomes "XBZ" -- should we * redundantly draw over B or not? Right now we don't. */ static void status_render(int region) { int i; struct status_line *sl = &status_line[region]; int nd = 0; int i0 = -1; XTextItem16 text1; /* The status region may change colors; don't be so clever */ if (region == WAIT_REGION) { XFillRectangle(display, *screen_window, screen_invgc(sl->color), COL_TO_X(sl->start), status_y - *ascent, *char_width * sl->len, *char_height); text1.chars = sl->s2b; text1.nchars = sl->len; text1.delta = 0; text1.font = *fid; XDrawText16(display, *screen_window, screen_gc(sl->color), COL_TO_X(sl->start), status_y, &text1, 1); } else { for (i = 0; i < sl->len; i++) { if (*funky_font || *xtra_width) { if (!sl->s1b[i]) { continue; } XFillRectangle(display, *screen_window, screen_invgc(sl->color), COL_TO_X(sl->start + i), status_y - *ascent, *char_width, *char_height); text1.chars = sl->s2b + i; text1.nchars = 1; text1.delta = 0; text1.font = *fid; XDrawText16(display, *screen_window, screen_gc(sl->color), COL_TO_X(sl->start + i), status_y, &text1, 1); continue; } if (sl->s2b[i].byte1 == sl->d2b[i].byte1 && sl->s2b[i].byte2 == sl->d2b[i].byte2) { if (nd) { XFillRectangle(display, *screen_window, screen_invgc(sl->color), COL_TO_X(sl->start + i0), status_y - *ascent, *char_width * nd, *char_height); text1.chars = sl->s2b + i0; text1.nchars = nd; text1.delta = 0; text1.font = *fid; XDrawText16(display, *screen_window, screen_gc(sl->color), COL_TO_X(sl->start + i0), status_y, &text1, 1); nd = 0; i0 = -1; } } else { if (!nd++) { i0 = i; } } } if (nd) { XFillRectangle(display, *screen_window, screen_invgc(sl->color), COL_TO_X(sl->start + i0), status_y - *ascent, *char_width * nd, *char_height); text1.chars = sl->s2b + i0; text1.nchars = nd; text1.delta = 0; text1.font = *fid; XDrawText16(display, *screen_window, screen_gc(sl->color), COL_TO_X(sl->start + i0), status_y, &text1, 1); } } /* Leftmost region has unusual attributes */ if (*standard_font && region == CTLR_REGION) { XFillRectangle(display, *screen_window, screen_invgc(sl->color), COL_TO_X(sl->start), status_y - *ascent, *char_width * 3, *char_height); XFillRectangle(display, *screen_window, screen_gc(sl->color), COL_TO_X(sl->start + LBOX), status_y - *ascent, *char_width, *char_height); XFillRectangle(display, *screen_window, screen_gc(sl->color), COL_TO_X(sl->start + RBOX), status_y - *ascent, *char_width, *char_height); text1.chars = sl->s2b + LBOX; text1.nchars = 1; text1.delta = 0; text1.font = *fid; XDrawText16(display, *screen_window, screen_invgc(sl->color), COL_TO_X(sl->start + LBOX), status_y, &text1, 1); XDrawRectangle(display, *screen_window, screen_gc(sl->color), COL_TO_X(sl->start + CNCT), status_y - *ascent + *char_height - 1, *char_width - 1, 0); text1.chars = sl->s2b + CNCT; XDrawText16(display, *screen_window, screen_gc(sl->color), COL_TO_X(sl->start + CNCT), status_y, &text1, 1); text1.chars = sl->s2b + RBOX; XDrawText16(display, *screen_window, screen_invgc(sl->color), COL_TO_X(sl->start + RBOX), status_y, &text1, 1); } } /* Write into the message area of the status line */ static void status_msg_set(unsigned const char *msg, int len) { int i; for (i = 0; i < status_line[WAIT_REGION].len; i++) { status_add(M0 + i, len ? msg[i] : nullblank, KT_STD); if (len) { len--; } } } /* Controller status */ static void do_ctlr(void) { if (*standard_font) { status_add(LBOX, '4', KT_STD); if (oia_undera) { status_add(CNCT, (IN_E ? 'B' : 'A'), KT_STD); } else { status_add(CNCT, ' ', KT_STD); } if (IN_NVT) { status_add(RBOX, 'N', KT_STD); } else if (oia_boxsolid) { status_add(RBOX, ' ', KT_STD); } else if (IN_SSCP) { status_add(RBOX, 'S', KT_STD); } else { status_add(RBOX, '?', KT_STD); } } else { status_add(LBOX, CG_box4, KT_STD); if (oia_undera) { status_add(CNCT, (IN_E ? CG_underB : CG_underA), KT_STD); } else { status_add(CNCT, CG_space, KT_STD); } if (IN_NVT) { status_add(RBOX, CG_N, KT_STD); } else if (oia_boxsolid) { status_add(RBOX, CG_boxsolid, KT_STD); } else if (IN_SSCP) { status_add(RBOX, CG_boxhuman, KT_STD); } else { status_add(RBOX, CG_boxquestion, KT_STD); } } } /* Message area */ /* Change the state of the message area, or if scrolled, the saved message */ static void do_msg(enum msg t) { if (msg_is_saved) { scroll_saved_msg = t; return; } paint_msg(t); } /* Paint the message area. */ static void paint_msg(enum msg t) { oia_msg = t; (*msg_proc[(int)t])(); if (!appres.interactive.mono) { status_line[WAIT_REGION].color = mode.m3279 ? msg_color3279[(int)t] : msg_color[(int)t]; } } static void do_blank(void) { status_msg_set((unsigned char *) 0, 0); } static void do_disconnected(void) { if (*standard_font) { status_msg_set(a_not_connected, strlen((char *)a_not_connected)); } else { status_msg_set(disc_msg, disc_len); } } static void do_reconnecting(void) { if (*standard_font) { status_msg_set(a_reconnecting, strlen((char *)a_reconnecting)); } else { status_msg_set(recon_msg, recon_len); } } static void do_resolving(void) { if (*standard_font) { status_msg_set(a_resolving, strlen((char *)a_resolving)); } else { status_msg_set(rslv_msg, rslv_len); } } static void do_connecting(void) { if (*standard_font) { status_msg_set(a_connecting, strlen((char *)a_connecting)); } else { status_msg_set(cnct_msg, cnct_len); } } static void do_tls(void) { if (*standard_font) { status_msg_set(a_tls, strlen((char *)a_tls)); } else { status_msg_set(tls_msg, tls_len); } } static void do_proxy(void) { if (*standard_font) { status_msg_set(a_proxy, strlen((char *)a_proxy)); } else { status_msg_set(proxy_msg, proxy_len); } } static void do_telnet(void) { if (*standard_font) { status_msg_set(a_telnet, strlen((char *)a_telnet)); } else { status_msg_set(telnet_msg, telnet_len); } } static void do_tn3270e(void) { if (*standard_font) { status_msg_set(a_tn3270e, strlen((char *)a_tn3270e)); } else { status_msg_set(tn3270e_msg, tn3270e_len); } } static void do_awaiting_first(void) { if (*standard_font) { status_msg_set(a_awaiting_first, strlen((char *)a_awaiting_first)); } else { status_msg_set(awaiting_first_msg, awaiting_first_len); } } static void do_unlock_delay(void) { static unsigned char unlock_delay[] = { CG_lock }; if (*standard_font) { status_msg_set((unsigned const char *)"X", 1); } else { status_msg_set(unlock_delay, sizeof(unlock_delay)); } } static void do_inhibit(void) { static unsigned char inhibit[] = { CG_lock, CG_space, CG_I, CG_n, CG_h, CG_i, CG_b, CG_i, CG_t }; if (*standard_font) { status_msg_set(a_inhibit, strlen((char *)a_inhibit)); } else { status_msg_set(inhibit, sizeof(inhibit)); } } static void do_twait(void) { static unsigned char twait[] = { CG_lock, CG_space, CG_clockleft, CG_clockright }; if (*standard_font) { status_msg_set(a_twait, strlen((char *)a_twait)); } else { status_msg_set(twait, sizeof(twait)); } } static void do_syswait(void) { static unsigned char syswait[] = { CG_lock, CG_space, CG_S, CG_Y, CG_S, CG_T, CG_E, CG_M }; if (*standard_font) { status_msg_set(a_syswait, strlen((char *)a_syswait)); } else { status_msg_set(syswait, sizeof(syswait)); } } static void do_protected(void) { static unsigned char protected[] = { CG_lock, CG_space, CG_leftarrow, CG_human, CG_rightarrow }; if (*standard_font) { status_msg_set(a_protected, strlen((char *)a_protected)); } else { status_msg_set(protected, sizeof(protected)); } } static void do_numeric(void) { static unsigned char numeric[] = { CG_lock, CG_space, CG_human, CG_N, CG_U, CG_M }; if (*standard_font) { status_msg_set(a_numeric, strlen((char *)a_numeric)); } else { status_msg_set(numeric, sizeof(numeric)); } } static void do_overflow(void) { static unsigned char overflow[] = { CG_lock, CG_space, CG_human, CG_greater }; if (*standard_font) { status_msg_set(a_overflow, strlen((char *)a_overflow)); } else { status_msg_set(overflow, sizeof(overflow)); } } static void do_dbcs(void) { static unsigned char dbcs[] = { CG_lock, CG_space, CG_less, CG_S, CG_greater }; if (*standard_font) { status_msg_set(a_dbcs, strlen((char *)a_dbcs)); } else { status_msg_set(dbcs, sizeof(dbcs)); } } static void do_scrolled(void) { static unsigned char scrolled[] = { CG_lock, CG_space, CG_S, CG_c, CG_r, CG_o, CG_l, CG_l, CG_e, CG_d, CG_space, CG_space, CG_space, CG_space, CG_space }; static unsigned char spaces[] = { CG_space, CG_space, CG_space, CG_space }; if (*standard_font) { char *t; t = XtMalloc(strlen((char *)a_scrolled) + 4); sprintf(t, "%s %d", (char *)a_scrolled, n_scrolled); status_msg_set((unsigned char *)t, strlen(t)); XtFree(t); } else { char nnn[5]; int i; sprintf(nnn, "%d", n_scrolled); memcpy((char *)&scrolled[11], (char *)spaces, sizeof(spaces)); for (i = 0; nnn[i]; i++) { scrolled[11 + i] = asc2cg0[(int)nnn[i]]; } status_msg_set(scrolled, sizeof(scrolled)); } } static void do_minus(void) { static unsigned char minus[] = { CG_lock, CG_space, CG_minus, CG_f }; if (*standard_font) { status_msg_set(a_minus, strlen((char *)a_minus)); } else { status_msg_set(minus, sizeof(minus)); } } static void do_disabled(void) { static unsigned char disabled[] = { CG_lock, CG_space, CG_keyleft, CG_keyright }; if (*standard_font) { status_msg_set(a_minus, strlen((char *)a_minus)); } else { status_msg_set(disabled, sizeof(disabled)); } } /* Insert, reverse, kmap, script, shift, compose */ static void do_insert(bool on) { status_add(INSERT, on ? (*standard_font ? 'I' : CG_insert) : nullblank, KT_STD); } static void do_reverse(bool on) { status_add(REVERSE, on ? (*standard_font ? 'R' : CG_R) : nullblank, KT_STD); } static void do_kmap(bool on) { status_add(KMAP, on ? (*standard_font ? 'K' : CG_K) : nullblank, KT_STD); } static void do_script(bool on) { status_add(SCRIPT, on ? (*standard_font ? 's' : CG_s) : nullblank, KT_STD); } static void do_printer(bool on) { status_add(PSESS, on ? (*standard_font ? 'P' : CG_P) : nullblank, KT_STD); } static void do_shift(int state) { status_add(SHIFT-2, (state & MetaKeyDown) ? (*standard_font ? 'M' : CG_M) : nullblank, KT_STD); status_add(SHIFT-1, (state & AltKeyDown) ? (*standard_font ? 'A' : CG_A) : nullblank, KT_STD); status_add(SHIFT, (state & ShiftKeyDown) ? (*standard_font ? '^' : CG_upshift) : nullblank, KT_STD); /* APL requires some somersaults. */ if (state & AplMode) { status_add(SHIFT + 1, *full_apl_font? (CG_alpha & 0xff) : (*standard_font? 'a': CG_a), *full_apl_font? KT_GE: KT_STD); } else { status_add(SHIFT + 1, nullblank, KT_STD); } } static void do_typeahead(int state) { status_add(TYPEAHD, state ? (*standard_font ? 'T' : CG_T) : nullblank, KT_STD); } static void do_screentrace(int n) { unsigned char c; if (n < 0) { c = *standard_font? ' ': CG_space; } else if (n < 9) { c = *standard_font? ('1' + n): (CG_1 + n); } else { c = *standard_font? '+': CG_plus; } status_add(SCRNTRC, c, KT_STD); } static void do_compose(bool on, ucs4_t ucs4, enum keytype keytype) { if (on) { status_add(COMPOSE, (unsigned char)(*standard_font ? 'C' : CG_C), KT_STD); if (!ucs4) { status_add(COMPOSE + 1, nullblank, KT_STD); } else { if (*standard_font) { status_add(COMPOSE + 1, ucs4, KT_STD); } else { ebc_t ebc; bool ge; ebc = unicode_to_ebcdic_ge(ucs4, &ge, false); status_add(COMPOSE + 1, ebc2cg0[ebc], ge? KT_GE: KT_STD); } } } else { status_add(COMPOSE, nullblank, KT_STD); status_add(COMPOSE + 1, nullblank, KT_STD); } } static void do_lu(const char *lu) { int i; for (i = 0; i < LUCNT; i++) { status_add(LU + i, lu[i]? (*standard_font? lu[i]: asc2cg0[(int)lu[i]]): nullblank, KT_STD); } } /* Timing */ static void do_timing(char *buf) { int i; if (buf) { if (*standard_font) { status_add(T0, nullblank, KT_STD); status_add(T0 + 1, nullblank, KT_STD); } else { status_add(T0, CG_clockleft, KT_STD); status_add(T0 + 1, CG_clockright, KT_STD); } for (i = 0; i < (int) strlen(buf); i++) { status_add(T0 + 2 + i, *standard_font? buf[i]: asc2cg0[(unsigned char) buf[i]], KT_STD); } } else { for (i = 0; i < TCNT; i++) { status_add(T0 + i, nullblank, KT_STD); } } } /* Cursor position */ static void do_cursor(char *buf) { int i; if (buf) { for (i = 0; i < (int) strlen(buf); i++) { status_add(C0 + i, *standard_font? buf[i]: asc2cg0[(unsigned char) buf[i]], KT_STD); } } else { for (i = 0; i < CCNT; i++) { status_add(C0 + i, nullblank, KT_STD); } } } /* Prepare status messages */ static unsigned char * make_amsg(const char *key) { return (unsigned char *)xs_buffer("X %s", get_message(key)); } suite3270-4.1/x3270/stmenu.c000066400000000000000000000354301413735575200153060ustar00rootroot00000000000000/* * Copyright (c) 2013-2015, 2019-2020 Paul Mattes. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the names of Paul Mattes nor his contributors may be used to * endorse or promote products derived from this software without * specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO * EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * stmenu.c * Pop-up window to initiate screen tracing. */ #include "globals.h" #include "xglobals.h" #include #include #include #include #include #include #include #include #include #include #include "appres.h" #include "objects.h" #include "resources.h" #include "dialog.h" #include "popups.h" #include "print_screen.h" #include "stmenu.h" #include "toggles.h" #include "trace.h" #include "screentrace.h" #include "xmenubar.h" #include "xpopups.h" #define CLOSE_VGAP 0 #define FAR_VGAP 10 #define FAR_HGAP 65 #define MARGIN 3 #define FILE_WIDTH 300 #define BUTTON_GAP 5 static Widget stmenu_shell = NULL; static Widget stmenu_form; static bool continuously_flag = true; /* save continuously */ static Widget continuously_toggle = NULL; static Widget once_toggle = NULL; static bool file_flag = true; /* save in file */ static Widget file_toggle = NULL; static Widget printer_toggle = NULL; static ptype_t stm_ptype = P_TEXT; /* save as text/html/rtf */ static Widget text_toggle = NULL; static Widget html_toggle = NULL; static Widget rtf_toggle = NULL; static Widget filename_label = NULL; static Widget filename = NULL; static Widget print_command_label = NULL; static Widget print_command = NULL; static ptype_t s_text = P_TEXT; static ptype_t s_html = P_HTML; static ptype_t s_rtf = P_RTF; /* Called when OK is pressed in the screentrace popup. */ static void screentrace_ok(Widget w _is_unused, XtPointer client_data _is_unused, XtPointer call_data _is_unused) { String name; if (file_flag) { XtVaGetValues(filename, XtNstring, &name, NULL); } else { XtVaGetValues(print_command, XtNstring, &name, NULL); } trace_set_screentrace_file(file_flag? TSS_FILE: TSS_PRINTER, file_flag? stm_ptype: P_TEXT, 0, name); do_toggle(SCREEN_TRACE); if (!continuously_flag && toggled(SCREEN_TRACE)) { do_toggle(SCREEN_TRACE); } XtPopdown(stmenu_shell); } /* Called when Cancel is pressed in the screentrace popup. */ static void screentrace_cancel(Widget w _is_unused, XtPointer client_data _is_unused, XtPointer call_data _is_unused) { XtPopdown(stmenu_shell); } /* Screentrace pop-up popping up. */ static void stmenu_popup_callback(Widget w _is_unused, XtPointer client_data _is_unused, XtPointer call_data _is_unused) { /* Set the focus to the file or printer text widget. */ XawTextDisplayCaret(filename, file_flag); XawTextDisplayCaret(print_command, !file_flag); XtSetKeyboardFocus(stmenu_form, file_flag? filename: print_command); } /* Continuously/Once toggle callback. */ static void toggle_continuously(Widget w _is_unused, XtPointer client_data, XtPointer call_data _is_unused) { /* Toggle the flag. */ continuously_flag = *(bool *)client_data; /* Change the widget states. */ dialog_mark_toggle(continuously_toggle, continuously_flag? diamond: no_diamond); dialog_mark_toggle(once_toggle, continuously_flag? no_diamond: diamond); } /* File/Printer toggle callback. */ static void toggle_file(Widget w _is_unused, XtPointer client_data, XtPointer call_data _is_unused) { /* Toggle the flag. */ file_flag = *(bool *)client_data; /* Change the widget states. */ dialog_mark_toggle(file_toggle, file_flag? diamond: no_diamond); dialog_mark_toggle(printer_toggle, file_flag? no_diamond: diamond); XtVaSetValues(filename_label, XtNsensitive, file_flag, NULL); XtVaSetValues(filename, XtNsensitive, file_flag, NULL); XtVaSetValues(text_toggle, XtNsensitive, file_flag, NULL); XtVaSetValues(html_toggle, XtNsensitive, file_flag, NULL); XtVaSetValues(rtf_toggle, XtNsensitive, file_flag, NULL); XtVaSetValues(print_command_label, XtNsensitive, !file_flag, NULL); XtVaSetValues(print_command, XtNsensitive, !file_flag, NULL); XawTextDisplayCaret(filename, file_flag); XawTextDisplayCaret(print_command, !file_flag); XtSetKeyboardFocus(stmenu_form, file_flag? filename: print_command); } /* Text/HTML toggle callback. */ static void toggle_ptype(Widget w _is_unused, XtPointer client_data, XtPointer call_data _is_unused) { char *d; XawTextBlock b; String name; XtVaGetValues(filename, XtNstring, &name, NULL); /* Toggle the flag. */ stm_ptype = *(bool *)client_data; /* Change the widget states. */ dialog_mark_toggle(text_toggle, (stm_ptype == P_TEXT)? diamond: no_diamond); dialog_mark_toggle(html_toggle, (stm_ptype == P_HTML)? diamond: no_diamond); dialog_mark_toggle(rtf_toggle, (stm_ptype == P_RTF)? diamond: no_diamond); d = screentrace_default_file(stm_ptype); b.firstPos = 0; b.length = strlen(d); b.ptr = d; b.format = XawFmt8Bit; XawTextReplace(filename, 0, strlen(name), &b); XawTextSetInsertionPoint(filename, strlen(d)); XtFree(d); } /* * Initialize the screentrace (Save Screens) pop-up. * * The pop-up consists of: * A pair of radio buttons for Continuously/Once * A pair of radio buttons for File/Printer * A pair of radio buttons for Text/HTML * A label for "File Name" or "Print Command" * A text box to fill in the above * An OK button * An Abort button * * The radio buttons work like radio buttons. * When File/Printer is toggled, the label for the text box flips, and the * text box contents switch to the last value used for that type (or an * appropriate default). */ void init_screentrace_popup(void) { Widget w = NULL; Widget confirm_button, cancel_button; char *d; XawTextBlock b; /* Get the defaults. */ file_flag = trace_get_screentrace_target() == TSS_FILE; stm_ptype = trace_get_screentrace_type(); /* Create the popup. */ stmenu_shell = XtVaCreatePopupShell( "screenTracePopup", transientShellWidgetClass, toplevel, NULL); XtAddCallback(stmenu_shell, XtNpopupCallback, place_popup, (XtPointer) CenterP); XtAddCallback(stmenu_shell, XtNpopupCallback, stmenu_popup_callback, NULL); /* Create a form in the popup. */ stmenu_form = XtVaCreateManagedWidget( ObjDialog, formWidgetClass, stmenu_shell, NULL); /* Create the Continuously/Once radio buttons. */ continuously_toggle = XtVaCreateManagedWidget( "continuously", commandWidgetClass, stmenu_form, XtNvertDistance, MARGIN, XtNhorizDistance, MARGIN, XtNborderWidth, 0, XtNjustify, XtJustifyLeft, NULL); dialog_apply_bitmap(continuously_toggle, continuously_flag? diamond: no_diamond); XtAddCallback(continuously_toggle, XtNcallback, toggle_continuously, (XtPointer)&s_true); once_toggle = XtVaCreateManagedWidget( "once", commandWidgetClass, stmenu_form, XtNfromVert, continuously_toggle, XtNvertDistance, CLOSE_VGAP, XtNhorizDistance, MARGIN, XtNborderWidth, 0, XtNjustify, XtJustifyLeft, NULL); dialog_apply_bitmap(once_toggle, continuously_flag? no_diamond: diamond); XtAddCallback(once_toggle, XtNcallback, toggle_continuously, (XtPointer)&s_false); dialog_match_dimension(continuously_toggle, once_toggle, XtNwidth); /* Create the File radio button. */ file_toggle = XtVaCreateManagedWidget( "file", commandWidgetClass, stmenu_form, XtNfromVert, once_toggle, XtNvertDistance, FAR_VGAP, XtNhorizDistance, MARGIN, XtNborderWidth, 0, XtNjustify, XtJustifyLeft, NULL); dialog_apply_bitmap(file_toggle, file_flag? diamond: no_diamond); XtAddCallback(file_toggle, XtNcallback, toggle_file, (XtPointer)&s_true); /* Create the file name label and text widgets. */ filename_label = XtVaCreateManagedWidget( "fileName", labelWidgetClass, stmenu_form, XtNfromVert, file_toggle, XtNvertDistance, CLOSE_VGAP, XtNhorizDistance, FAR_HGAP, XtNborderWidth, 0, XtNjustify, XtJustifyLeft, XtNsensitive, file_flag, NULL); filename = XtVaCreateManagedWidget( "value", asciiTextWidgetClass, stmenu_form, XtNeditType, XawtextEdit, XtNwidth, FILE_WIDTH, XtNfromVert, file_toggle, XtNvertDistance, CLOSE_VGAP, XtNfromHoriz, filename_label, XtNhorizDistance, 0, XtNsensitive, file_flag, NULL); dialog_match_dimension(filename_label, filename, XtNheight); w = XawTextGetSource(filename); if (w == NULL) { XtWarning("Cannot find text source in dialog"); } else { XtAddCallback(w, XtNcallback, dialog_text_callback, (XtPointer)&t_unixfile); } d = screentrace_default_file(stm_ptype); b.firstPos = 0; b.length = strlen(d); b.ptr = d; b.format = XawFmt8Bit; XawTextReplace(filename, 0, 0, &b); XawTextSetInsertionPoint(filename, strlen(d)); XtFree(d); /* Create the Text/HTML/RTF radio buttons. */ text_toggle = XtVaCreateManagedWidget( "text", commandWidgetClass, stmenu_form, XtNfromVert, filename_label, XtNvertDistance, CLOSE_VGAP, XtNhorizDistance, FAR_HGAP, XtNborderWidth, 0, XtNsensitive, file_flag, NULL); dialog_apply_bitmap(text_toggle, (stm_ptype == P_TEXT)? diamond: no_diamond); XtAddCallback(text_toggle, XtNcallback, toggle_ptype, (XtPointer)&s_text); html_toggle = XtVaCreateManagedWidget( "html", commandWidgetClass, stmenu_form, XtNfromVert, text_toggle, XtNvertDistance, CLOSE_VGAP, XtNhorizDistance, FAR_HGAP, XtNborderWidth, 0, XtNsensitive, file_flag, NULL); dialog_apply_bitmap(html_toggle, (stm_ptype == P_HTML)? diamond: no_diamond); XtAddCallback(html_toggle, XtNcallback, toggle_ptype, (XtPointer)&s_html); rtf_toggle = XtVaCreateManagedWidget( "rtf", commandWidgetClass, stmenu_form, XtNfromVert, html_toggle, XtNvertDistance, CLOSE_VGAP, XtNhorizDistance, FAR_HGAP, XtNborderWidth, 0, XtNsensitive, file_flag, NULL); dialog_apply_bitmap(rtf_toggle, (stm_ptype == P_RTF)? diamond: no_diamond); XtAddCallback(rtf_toggle, XtNcallback, toggle_ptype, (XtPointer)&s_rtf); /* Create the printer toggle. */ printer_toggle = XtVaCreateManagedWidget( "printer", commandWidgetClass, stmenu_form, XtNhorizDistance, MARGIN, XtNfromVert, rtf_toggle, XtNvertDistance, FAR_VGAP, XtNborderWidth, 0, XtNjustify, XtJustifyLeft, NULL); dialog_apply_bitmap(printer_toggle, file_flag? no_diamond: diamond); XtAddCallback(printer_toggle, XtNcallback, toggle_file, (XtPointer)&s_false); /* Create the print command label and text widgets. */ print_command_label = XtVaCreateManagedWidget( "printCommand", labelWidgetClass, stmenu_form, XtNfromVert, printer_toggle, XtNvertDistance, CLOSE_VGAP, XtNhorizDistance, FAR_HGAP, XtNborderWidth, 0, XtNjustify, XtJustifyLeft, XtNsensitive, !file_flag, NULL); print_command = XtVaCreateManagedWidget( "value", asciiTextWidgetClass, stmenu_form, XtNeditType, XawtextEdit, XtNwidth, FILE_WIDTH, XtNfromVert, printer_toggle, XtNvertDistance, CLOSE_VGAP, XtNfromHoriz, print_command_label, XtNhorizDistance, 0, XtNsensitive, !file_flag, NULL); dialog_match_dimension(print_command_label, print_command, XtNheight); dialog_match_dimension(filename_label, print_command_label, XtNwidth); w = XawTextGetSource(print_command); if (w == NULL) { XtWarning("Cannot find text source in dialog"); } else { XtAddCallback(w, XtNcallback, dialog_text_callback, (XtPointer)&t_command); } d = screentrace_default_printer(); b.firstPos = 0; b.length = strlen(d); b.ptr = d; b.format = XawFmt8Bit; XawTextReplace(print_command, 0, 0, &b); XawTextSetInsertionPoint(print_command, strlen(d)); XtFree(d); /* Create the buttons. */ confirm_button = XtVaCreateManagedWidget( ObjConfirmButton, commandWidgetClass, stmenu_form, XtNfromVert, print_command_label, XtNvertDistance, FAR_VGAP, XtNhorizDistance, MARGIN, NULL); XtAddCallback(confirm_button, XtNcallback, screentrace_ok, NULL); cancel_button = XtVaCreateManagedWidget( ObjCancelButton, commandWidgetClass, stmenu_form, XtNfromVert, print_command_label, XtNvertDistance, FAR_VGAP, XtNfromHoriz, confirm_button, XtNhorizDistance, BUTTON_GAP, NULL); XtAddCallback(cancel_button, XtNcallback, screentrace_cancel, NULL); } /* * Pop up the Screen Trace menu. * Called from the "Save Screen Contents" option on the File menu. */ void stmenu_popup(stmp_t stmp) { /* If the toggle is set, clear it. */ if (toggled(SCREEN_TRACE)) { do_toggle(SCREEN_TRACE); return; } /* Initialize it. */ if (stmenu_shell == NULL) { init_screentrace_popup(); } switch (stmp) { case STMP_AS_IS: break; case STMP_TEXT: /* Force a text file. */ if (!file_flag) { toggle_file(NULL, &s_true, NULL); } if (stm_ptype != P_TEXT) { toggle_ptype(NULL, &s_text, NULL); } if (continuously_flag) { toggle_continuously(NULL, &s_false, NULL); } break; case STMP_PRINTER: /* Force a printer. */ if (file_flag) { toggle_file(NULL, &s_false, NULL); } if (continuously_flag) { toggle_continuously(NULL, &s_false, NULL); } break; } /* Pop it up. */ popup_popup(stmenu_shell, XtGrabExclusive); } suite3270-4.1/x3270/stmenu.h000066400000000000000000000034211413735575200153060ustar00rootroot00000000000000/* * Copyright (c) 2013-2015, Paul Mattes. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the names of Paul Mattes nor his contributors may be used to * endorse or promote products derived from this software without * specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO * EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * stmenu.h * Pop-up window to initiate screen tracing. */ typedef enum { STMP_AS_IS, /* pop up using current or default state */ STMP_TEXT, /* force to a text file */ STMP_PRINTER /* force to use the printer */ } stmp_t; void stmenu_popup(stmp_t stmp); suite3270-4.1/x3270/tls_passwd_gui.c000066400000000000000000000071361413735575200170240ustar00rootroot00000000000000/* * Copyright (c) 1993-2017, 2020 Paul Mattes. * Copyright (c) 2004, Don Russell. * Copyright (c) 1990, Jeff Sparkes. * Copyright (c) 1989, Georgia Tech Research Corporation (GTRC), Atlanta, * GA 30332. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the names of Paul Mattes, Don Russell, Jeff Sparkes, GTRC * nor their contributors may be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES, DON RUSSELL, JEFF SPARKES AND * GTRC "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL PAUL MATTES, * DON RUSSELL, JEFF SPARKES OR GTRC BE LIABLE FOR ANY DIRECT, INDIRECT, * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * tls_passwd_gui.c * TLS certificate password dialog for x3270. */ #include "globals.h" #include #include #include "appres.h" #include "host.h" #include "objects.h" #include "popups.h" #include "sio.h" #include "telnet.h" #include "telnet_private.h" #include "tls_passwd_gui.h" #include "xglobals.h" #include "xpopups.h" /* Statics. */ static char *tls_password; static Widget password_shell = NULL; /* Callback for "OK" button on the password popup. */ static void password_callback(Widget w _is_unused, XtPointer client_data, XtPointer call_data _is_unused) { char *password; password = XawDialogGetValueString((Widget)client_data); tls_password = NewString(password); XtPopdown(password_shell); net_password_continue(tls_password); } /* The password dialog was popped down. */ static void password_popdown(Widget w _is_unused, XtPointer client_data _is_unused, XtPointer call_data _is_unused) { /* If there's no password (they cancelled), don't pop up again. */ if (tls_password == NULL) { /* We might want to do something more sophisticated here. */ host_disconnect(true); } } /* Pop up the password dialog. */ static void popup_password(void) { if (password_shell == NULL) { password_shell = create_form_popup("Password", password_callback, NULL, FORM_AS_IS); XtAddCallback(password_shell, XtNpopdownCallback, password_popdown, NULL); } XtVaSetValues(XtNameToWidget(password_shell, ObjDialog), XtNvalue, "", NULL); Replace(tls_password, NULL); popup_popup(password_shell, XtGrabExclusive); } /* * Password callback. */ tls_passwd_ret_t tls_passwd_gui_callback(char *buf, int size, bool again) { /* Pop up the dialog. */ popup_password(); if (again) { popup_an_error("Password is incorrect."); } return SP_PENDING; } suite3270-4.1/x3270/trace_gui.c000066400000000000000000000066241413735575200157400ustar00rootroot00000000000000/* * Copyright (c) 1993-2015, 2019-2020 Paul Mattes. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the names of Paul Mattes nor the names of his contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO * EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * trace_gui.c * GUI for 3270 data stream tracing. * */ #include "globals.h" #include #include #include #include "appres.h" #include "resources.h" #include "objects.h" #include "popups.h" #include "toggles.h" #include "trace.h" #include "trace_gui.h" #include "xmenubar.h" #include "xpopups.h" /* Statics */ static Widget trace_shell = NULL; /* Pop up an info about a bogus trace file maximum size. */ void trace_gui_bad_size(const char *default_value) { popup_an_info("Invalid %s '%s', assuming %s", ResTraceFileSize, appres.trace_file_size, default_value); } /* Callback for "Trace" button on trace popup. */ static void tracefile_callback(Widget w, XtPointer client_data, XtPointer call_data _is_unused) { char *tfn = NULL; if (w) { tfn = XawDialogGetValueString((Widget)client_data); } else { tfn = (char *)client_data; } tracefile_ok(tfn); if (w) { XtPopdown(trace_shell); } } /* * Tracing has been started. Pop up the dialog, if appropriate. * Returns true for dialog up, false to go ahead and start tracing. */ bool trace_gui_on(int reason, enum toggle_type tt, const char *tracefile) { if (tt != TT_XMENU || tt == TT_ACTION) { /* Start tracing now. */ return false; } if (trace_shell == NULL) { trace_shell = create_form_popup("trace", tracefile_callback, NULL, FORM_NO_WHITE); XtVaSetValues(XtNameToWidget(trace_shell, ObjDialog), XtNvalue, tracefile, NULL); } popup_popup(trace_shell, XtGrabExclusive); /* Pop-up is up and will start tracing when it completes. */ return true; } /* Change the menu option for tracing when the toggle is changed. */ void trace_gui_toggle(void) { if (toggle_widget[SCREEN_TRACE].w[0] != NULL) { XtVaSetValues(toggle_widget[SCREEN_TRACE].w[0], XtNleftBitmap, toggled(SCREEN_TRACE)? dot: None, NULL); } } suite3270-4.1/x3270/unlocked.bm000066400000000000000000000004201413735575200157420ustar00rootroot00000000000000#define unlocked_width 16 #define unlocked_height 14 static unsigned char unlocked_bits[] = { 0x00, 0x3e, 0x00, 0x41, 0x80, 0x9c, 0x80, 0xa2, 0x80, 0xa2, 0x80, 0xe2, 0xff, 0x07, 0x55, 0x05, 0xab, 0x06, 0x55, 0x05, 0xab, 0x06, 0xff, 0x07, 0x01, 0x04, 0xff, 0x07}; suite3270-4.1/x3270/unlocked15.bm000066400000000000000000000007611413735575200161200ustar00rootroot00000000000000#define unlocked15_width 24 #define unlocked15_height 21 static unsigned char unlocked15_bits[] = { 0x00, 0xc0, 0x1f, 0x00, 0x20, 0x20, 0x00, 0x10, 0x40, 0x00, 0x08, 0x87, 0x00, 0x88, 0x88, 0x00, 0x48, 0x90, 0x00, 0x48, 0x90, 0x00, 0x48, 0x90, 0x00, 0x48, 0xf0, 0xff, 0xff, 0x01, 0x55, 0x55, 0x01, 0xab, 0xaa, 0x01, 0x55, 0x55, 0x01, 0xab, 0xaa, 0x01, 0x55, 0x55, 0x01, 0xab, 0xaa, 0x01, 0x55, 0x55, 0x01, 0xff, 0xff, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x01, 0xff, 0xff, 0x01}; suite3270-4.1/x3270/unlocked20.bm000066400000000000000000000014431413735575200161120ustar00rootroot00000000000000#define unlocked20_width 32 #define unlocked20_height 28 static unsigned char unlocked20_bits[] = { 0x00, 0x00, 0xfc, 0x0f, 0x00, 0x00, 0xfe, 0x1f, 0x00, 0x00, 0x03, 0x30, 0x00, 0x80, 0x01, 0x60, 0x00, 0xc0, 0xf0, 0xc3, 0x00, 0xc0, 0xf8, 0xc7, 0x00, 0xc0, 0x1c, 0xce, 0x00, 0xc0, 0x0c, 0xcc, 0x00, 0xc0, 0x0c, 0xcc, 0x00, 0xc0, 0x0c, 0xcc, 0x00, 0xc0, 0x0c, 0xfc, 0x00, 0xc0, 0x0c, 0xfc, 0xff, 0xff, 0x3f, 0x00, 0xff, 0xff, 0x3f, 0x00, 0xab, 0xaa, 0x3a, 0x00, 0x57, 0x55, 0x35, 0x00, 0xab, 0xaa, 0x3a, 0x00, 0x57, 0x55, 0x35, 0x00, 0xab, 0xaa, 0x3a, 0x00, 0x57, 0x55, 0x35, 0x00, 0xab, 0xaa, 0x3a, 0x00, 0x57, 0x55, 0x35, 0x00, 0xff, 0xff, 0x3f, 0x00, 0xff, 0xff, 0x3f, 0x00, 0x03, 0x00, 0x30, 0x00, 0x03, 0x00, 0x30, 0x00, 0xff, 0xff, 0x3f, 0x00, 0xff, 0xff, 0x3f, 0x00}; suite3270-4.1/x3270/version.txt000077700000000000000000000000001413735575200217342../Common/version.txtustar00rootroot00000000000000suite3270-4.1/x3270/wait.bm000066400000000000000000000043411413735575200151100ustar00rootroot00000000000000#define wait_width 50 #define wait_height 50 static unsigned char wait_bits[] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0xe0, 0xff, 0xff, 0xff, 0xff, 0x1f, 0x00, 0xf0, 0xff, 0xaf, 0xfe, 0xff, 0xe7, 0x00, 0xf0, 0xff, 0xff, 0xff, 0xff, 0x07, 0x00, 0xf8, 0xab, 0xaa, 0xaa, 0xea, 0x0f, 0x00, 0xf8, 0x55, 0x55, 0x55, 0xd5, 0x0f, 0x00, 0xf8, 0xaa, 0x02, 0xa0, 0xaa, 0x0f, 0x00, 0x78, 0x55, 0xf5, 0x4f, 0x55, 0x0f, 0x00, 0xf8, 0xaa, 0xf2, 0xaf, 0xaa, 0x0f, 0x00, 0x78, 0x55, 0xf1, 0x4f, 0x55, 0x0f, 0x00, 0xf8, 0xaa, 0xf8, 0x9f, 0xaa, 0x0f, 0x00, 0x78, 0x55, 0x0c, 0x31, 0x55, 0x0f, 0x00, 0xf8, 0xaa, 0x06, 0x61, 0xaa, 0x0f, 0x00, 0x78, 0x55, 0x02, 0x41, 0x55, 0x0f, 0x00, 0xf8, 0xaa, 0x82, 0xc3, 0xaa, 0x0f, 0x00, 0x78, 0x55, 0x82, 0xc3, 0x54, 0x0f, 0x00, 0xf8, 0xfa, 0x42, 0x40, 0xbf, 0x0f, 0x00, 0x78, 0xed, 0x26, 0x60, 0x73, 0x0f, 0x00, 0xf8, 0x5a, 0x0c, 0x30, 0xad, 0x0f, 0x00, 0x78, 0xb5, 0xf9, 0x9f, 0x6d, 0x0f, 0x00, 0xf8, 0x5a, 0xf3, 0xcf, 0xed, 0x0f, 0x00, 0x78, 0xed, 0xf0, 0xcf, 0x73, 0x0f, 0x00, 0xf8, 0xfa, 0xf7, 0xef, 0xff, 0x0f, 0x00, 0xf8, 0x55, 0x05, 0x40, 0xd5, 0x0f, 0x00, 0xf8, 0xab, 0xaa, 0xaa, 0xea, 0x0f, 0x00, 0xf0, 0xff, 0xff, 0xff, 0x7f, 0x06, 0x00, 0xf0, 0xff, 0xff, 0xff, 0x7f, 0x06, 0x00, 0xe0, 0xff, 0xff, 0xff, 0xff, 0x07, 0x00, 0x80, 0xff, 0xff, 0xff, 0xff, 0x18, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x40, 0x00, 0xc0, 0xff, 0xff, 0xff, 0xff, 0x43, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x43, 0x00, 0x10, 0x44, 0x44, 0x44, 0x84, 0x42, 0x00, 0x08, 0x11, 0x11, 0x11, 0x41, 0x42, 0x00, 0x84, 0x88, 0x88, 0x88, 0x48, 0x42, 0x00, 0x24, 0x22, 0x22, 0x22, 0x22, 0xfe, 0x00, 0xfc, 0xff, 0xff, 0xff, 0x1f, 0x03, 0x00, 0x04, 0x00, 0x00, 0x00, 0xd0, 0x00, 0x00, 0xfc, 0xff, 0xff, 0xff, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; suite3270-4.1/x3270/x3270-192x192.png.in000066400000000000000000000015661413735575200164650ustar00rootroot00000000000000‰PNG  IHDRÀÀRÜl=IDATxÚíÝ[NÃ0Peo¬²VW~Q*Y¿2çüš„R¸š™¸ Rʳ@RÞîíèý >¿½ÉüïçK€Á¥ñ³@z|vž!T´@ Põ>@öžÿÜsžßÖuêzüÚ÷ï|>-$T½ ge¥@€ø`tÏßû:»õ¾ë»Í*Z Hè˜ýôÔfî=è™Í*Ü{Ð[_y&PЀ žž×º ¹f=±õ•g-˜âéy­« kÐ[_y&PЀ žž×º ¹f=±õ•g-˜âéy­« kÐ[_y&PÐ@BRÊóÝD÷lw»ŽÌØßßùü*T[~ ºÇ¬}=Wj_ïèóEŸÿêxû €åm¿0{_!úü£Ï·ûû­€€@µíïè݃¶^ï}¾Þ3D-û 3@ï{H{_—ζÑû÷¯€€Àýg€Ù÷´Î Ñ=nïóGÏhÑ?¯}˜ÎsØŠû@@ Ù1úz>~®uÌf=¿ S]~èªg‡wZï/ˆþì €€€@2ÕûgöèÉ>¬7˜èÙÓ÷þ¬ €~OpïëºäšZÿ¿ƒ €ê¾ݳAäß— €6þ\ Úgzv(¾G\@ f€öžßs~ØiæSЀ`~Ïßz~ÇÏ=¾ö|³g-$tùÿF÷„Žß«Ço=ÿì¿/-$tèù?sfP@@`¸—}€Ñ×qïø‘Î¯O@ fÏé¡­§níù=º»¼'Øs~¨éáWëñUxa€P»ÍŒ*Z 0€ 7ò ‡¹Å£WKÄkIEND®B`‚suite3270-4.1/x3270/x3270-256x256.png.in000066400000000000000000000022561413735575200164640ustar00rootroot00000000000000‰PNG  IHDR\r¨fuIDATxÚíÝAr!@Q”š»ù >aÎÓ){ªÌÝðÞÚNK¶ò‹Axô*¥¼ p¤?~ € € @b×êðõ×/½üû¶@€X^eÀýlìÁóFl.Z€K@ÎÐ}Іßó>möÔ~Öµ¯ýô;iùZÖþ®Gü_«Í²—€°¹î£Àv‘á÷Vß;À \p†¦MÀˆ~#ŽÂ®>ŠkþÚù_ÓV€ÐãÊô`mb™¿r¾ €NÈwìb›Ÿe¾ €d°|Ð&–ù»Í·@€h–oÚD2?ó|+@ 4GÍ7ÿáùV€£Àæ›ß1ß @2pÐ|óžo €„á(°ùæwÌ·@€ 6ßü‡ç[ @4Nšo~Ç|+@ 4GÍ7ÿáùV€Í«”ò¾ûų6EÉ @(¥8 \Óòùîp²Þw¬À% € € € € € € pÍöéf}?¬ñ“­¬À% €lnÈ»Ÿvë#׺ €DÒ½ XÛ™¹Ù7bþ¨MÌYÕó_ûZË´1h.8ë”ò¾ûų6\lÂyþ#žÿ¬ù3ïÏß \ ÀæªG3íbÎ|üÞE8ûù[ @VÕ£ÀQBÚ„óü3?ÿÕjÏË \p†¦M@ØÍÌ ¿ˆ'­À% €l®é£Áü=5™ÝݱϾ³o €?9 ?œ´Ùm.8Cu°@@ˆî?¸Æ#§xJ³IEND®B`‚suite3270-4.1/x3270/x3270-48x48.png.in000066400000000000000000000006441413735575200163210ustar00rootroot00000000000000‰PNG  IHDR00Wù‡kIDAThÞíYQ íˆwÛvBϰÓÍÅ`íƒv£$%!„ñµoÅ>\ˆè ‰[¢ÉÛ=XŸ>î[ýùÂ_!/Àµ¥+ÁçÍùxð}{cÌýÏÑGÁHð(²½FkNDt¬O¹çgw‹Ðñ‡F¯áQ;0< Á@0 eÿsR­‘«¿<ÞY¸!î¬"®þ­ÈºW'€ @€ @€  ÖW—›ýøòÂxÆ÷§@€ @ÿK«UÀ¬¨Q½Š7ãû¿Óza'0@€ €B§G°®ÓŠGþÿwúõÂÕ¿)N` € à=Žˆ¸<†5«žl à©ß”¬ß'0@€ @€ € @€ @ @€ @€Lvî8ÔÇ×ì`ªïOÏÀ € 4Ðjàê†=› öùNÇ @  ¿òUÀwVAî¸â·Óü]V1ïøL½ï¿Ë÷_ÖLÖ; @€ ôvDÄõôEw]ïkª{õLÝëNßiæßñùWþÀ@ @À{œwþØ&¦÷j»›÷ï™zÿà€@€ð&GD\«\½ŠÒ*T÷ꙺWÏÔ½òÌ{r € @(”² €÷Ûq½oõLN@€ €%gÆEmb¨‘µ±ÕÖ>'€ @€~㈈kõ³VLðnÖö: @€ð·VN@€ @ @À›ýzñÈ#:3,IEND®B`‚suite3270-4.1/x3270/x3270-96x96.png.in000066400000000000000000000010541413735575200163230ustar00rootroot00000000000000‰PNG  IHDR``â˜w8óIDATxÚíÜ[NÃ0„á±7ÖÀ Y«ƒ§HÕ²×·oÞ¢˜6Í™ßãcÒ>Žãø9¨›ÞÜPê§÷è||¹iõý‰€©õÈ­‚8¾-!5z;ÿtÎy¹ãQŸº¾sFÍsÿkVE€ZçGçìÙŽ[‘€€Ù:áÝœßzµ…€Y ØÍù­H@Àlìîü»I@Àlp¾ H2€ó #@p>d 82 ˜NÕÏÍò¬æ]Š~>Ï횥ŽI½NjÕ•sVé¸ÒñÿÏËp µsin|í¸Ö×€Ýû€¨ƒ¢ß0)%÷êÜ-P×!FçÒ^ýüw »õ9‚J_JtéûÊ}@ÛÕÁìÒ¬šÑÕý¬IÀn$´F[µêøV]ÝDÿ€Á¤ üf\‡³€ˆ˜Ó£«"ÌÚ _ýÅØÝú„ÔýBÀlPZY*»_Ј))€()€ЋU¼Tú4ó®ªÝ@ÀèØóiK>F% êüÒçüg=Ÿw•tVòûQ'¬êøÜø«÷ £dç÷Yõ!`” ¨ãœ¿Ö9#`4è¹Ssη´J'lÏç¹Ãïr<dÀZY€€U >B€(uÔ/ZîÄãŒi†4IEND®B`‚suite3270-4.1/x3270/x3270-icon2.xpm000077700000000000000000000000001413735575200221222../Common/x3270-icon2.xpmustar00rootroot00000000000000suite3270-4.1/x3270/x3270.bm000066400000000000000000000043441413735575200147320ustar00rootroot00000000000000#define x3270_width 50 #define x3270_height 50 static unsigned char x3270_bits[] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0xe0, 0xff, 0xff, 0xff, 0xff, 0x1f, 0x00, 0xf0, 0xff, 0xaf, 0xfe, 0xff, 0xe7, 0x00, 0xf0, 0xff, 0xff, 0xff, 0xff, 0x07, 0x00, 0xf8, 0xab, 0xaa, 0xaa, 0xea, 0x0f, 0x00, 0xf8, 0x55, 0x55, 0x55, 0xd5, 0x0f, 0x00, 0xf8, 0xaa, 0xaa, 0xaa, 0xaa, 0x0f, 0x00, 0x78, 0x55, 0x55, 0x55, 0x55, 0x0f, 0x00, 0xf8, 0xaa, 0xaa, 0xaa, 0xaa, 0x0f, 0x00, 0x78, 0x55, 0x55, 0x55, 0x55, 0x0f, 0x00, 0xf8, 0xaa, 0xaa, 0xaa, 0xaa, 0x0f, 0x00, 0x78, 0x55, 0x55, 0x55, 0x55, 0x0f, 0x00, 0xf8, 0xaa, 0xaa, 0xaa, 0xaa, 0x0f, 0x00, 0x78, 0x55, 0x55, 0x55, 0x55, 0x0f, 0x00, 0xf8, 0xaa, 0xaa, 0xaa, 0xaa, 0x0f, 0x00, 0x78, 0x55, 0x55, 0x55, 0x55, 0x0f, 0x00, 0xf8, 0xfa, 0xff, 0xff, 0xbf, 0x0f, 0x00, 0x78, 0xed, 0x62, 0x0c, 0x73, 0x0f, 0x00, 0xf8, 0x5a, 0xdf, 0x7b, 0xad, 0x0f, 0x00, 0x78, 0xb5, 0xe7, 0xbc, 0x6d, 0x0f, 0x00, 0xf8, 0x5a, 0x5f, 0xdf, 0xed, 0x0f, 0x00, 0x78, 0xed, 0x62, 0xd8, 0x73, 0x0f, 0x00, 0xf8, 0xfa, 0xff, 0xff, 0xff, 0x0f, 0x00, 0xf8, 0x55, 0x55, 0x55, 0xd5, 0x0f, 0x00, 0xf8, 0xab, 0xaa, 0xaa, 0xea, 0x0f, 0x00, 0xf0, 0xff, 0xff, 0xff, 0x7f, 0x06, 0x00, 0xf0, 0xff, 0xff, 0xff, 0x7f, 0x06, 0x00, 0xe0, 0xff, 0xff, 0xff, 0xff, 0x07, 0x00, 0x80, 0xff, 0xff, 0xff, 0xff, 0x18, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x40, 0x00, 0xc0, 0xff, 0xff, 0xff, 0xff, 0x43, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x43, 0x00, 0x10, 0x44, 0x44, 0x44, 0x84, 0x42, 0x00, 0x08, 0x11, 0x11, 0x11, 0x41, 0x42, 0x00, 0x84, 0x88, 0x88, 0x88, 0x48, 0x42, 0x00, 0x24, 0x22, 0x22, 0x22, 0x22, 0xfe, 0x00, 0xfc, 0xff, 0xff, 0xff, 0x1f, 0x03, 0x00, 0x04, 0x00, 0x00, 0x00, 0xd0, 0x00, 0x00, 0xfc, 0xff, 0xff, 0xff, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; suite3270-4.1/x3270/x3270.c000066400000000000000000001143221413735575200145540ustar00rootroot00000000000000/* * Copyright (c) 1993-2021 Paul Mattes. * Copyright (c) 1990, Jeff Sparkes. * Copyright (c) 1989, Georgia Tech Research Corporation (GTRC), Atlanta, GA * 30332. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the names of Paul Mattes, Jeff Sparkes, GTRC nor the names of * their contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY PAUL MATTES, JEFF SPARKES AND GTRC "AS IS" AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL PAUL MATTES, JEFF SPARKES OR GTRC BE * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. */ /* * x3270.c * A 3270 Terminal Emulator for X11 * Main proceudre. */ #include "globals.h" #include #include #include #include #include #include #include #include "appres.h" #include "3270ds.h" #include "resources.h" #include "actions.h" #include "bind-opt.h" #include "boolstr.h" #include "codepage.h" #include "ctlrc.h" #include "ft.h" #include "host.h" #include "httpd-core.h" #include "httpd-nodes.h" #include "httpd-io.h" #include "idle.h" #include "keymap.h" #include "kybd.h" #include "lazya.h" #include "login_macro.h" #include "min_version.h" #include "model.h" #include "nvt.h" #include "opts.h" #include "popups.h" #include "pr3287_session.h" #include "print_screen.h" #include "print_window.h" #include "product.h" #include "proxy_toggle.h" #include "query.h" #include "resourcesc.h" #include "save_restore.h" #include "screen.h" #include "selectc.h" #include "sio.h" #include "status.h" #include "task.h" #include "telnet.h" #include "toggles.h" #include "trace.h" #include "screentrace.h" #include "utils.h" #include "vstatus.h" #include "xactions.h" #include "xappres.h" #include "xio.h" #include "xkybd.h" #include "xmenubar.h" #include "xpopups.h" #include "xsave.h" #include "xscreen.h" #include "xscroll.h" #include "xselectc.h" #include "xstatus.h" /* Globals */ const char *programname; Display *display; int default_screen; Window root_window; int screen_depth; Widget toplevel; XtAppContext appcontext; Atom a_delete_me, a_save_yourself, a_3270, a_registry, a_encoding, a_state, a_net_wm_state, a_net_wm_state_maximized_horz, a_net_wm_state_maximized_vert, a_atom, a_spacing; char full_model_name[13] = "IBM-"; char *model_name = &full_model_name[4]; Pixmap gray; XrmDatabase rdb; AppRes appres; xappres_t xappres; bool exiting = false; char *user_title = NULL; /* Statics */ static void peek_at_xevent(XEvent *); static XtErrorMsgHandler old_emh; static void trap_colormaps(String, String, String, String, String *, Cardinal *); static bool colormap_failure = false; #if defined(LOCAL_PROCESS) /*[*/ static void parse_local_process(int *argcp, char **argv, char **cmds); #endif /*]*/ static int parse_model_number(char *m); #if defined(DEBUG_SET_CLEAR) /*[*/ static void dump_argv(const char *, int, char **); #endif /*]*/ static void parse_set_clear(int *, char **); static void label_init(void); static void sigchld_handler(int); static char *user_icon_name = NULL; static void copy_xres_to_res_bool(void); XrmOptionDescRec base_options[]= { { OptActiveIcon, DotActiveIcon, XrmoptionNoArg, ResTrue }, { OptAplMode, DotAplMode, XrmoptionNoArg, ResTrue }, { OptAcceptHostname,DotAcceptHostname,XrmoptionSepArg, NULL }, { OptCaDir, DotCaDir, XrmoptionSepArg, NULL }, { OptCaFile, DotCaFile, XrmoptionSepArg, NULL }, { OptCertFile, DotCertFile, XrmoptionSepArg, NULL }, { OptCertFileType, DotCertFileType,XrmoptionSepArg, NULL }, { OptChainFile, DotChainFile, XrmoptionSepArg, NULL }, { OptCharClass, DotCharClass, XrmoptionSepArg, NULL }, { OptCharset, DotCodePage, XrmoptionSepArg, NULL }, { OptClear, ".xxx", XrmoptionSkipArg, NULL }, { OptClientCert, DotClientCert, XrmoptionSepArg, NULL }, { OptCodePage, DotCodePage, XrmoptionSepArg, NULL }, { OptColorScheme, DotColorScheme, XrmoptionSepArg, NULL }, { OptConnectTimeout,DotConnectTimeout,XrmoptionSepArg, NULL }, { OptDevName, DotDevName, XrmoptionSepArg, NULL }, { OptTrace, DotTrace, XrmoptionNoArg, ResTrue }, { OptEmulatorFont, DotEmulatorFont,XrmoptionSepArg, NULL }, { OptHostsFile, DotHostsFile, XrmoptionSepArg, NULL }, { OptHttpd, DotHttpd, XrmoptionSepArg, NULL }, { OptIconName, ".iconName", XrmoptionSepArg, NULL }, { OptIconX, ".iconX", XrmoptionSepArg, NULL }, { OptIconY, ".iconY", XrmoptionSepArg, NULL }, { OptKeyFile, DotKeyFile, XrmoptionSepArg, NULL }, { OptKeyFileType, DotKeyFileType, XrmoptionSepArg, NULL }, { OptKeymap, DotKeymap, XrmoptionSepArg, NULL }, { OptKeypadOn, DotKeypadOn, XrmoptionNoArg, ResTrue }, { OptKeyPasswd, DotKeyPasswd, XrmoptionSepArg, NULL }, { OptLoginMacro, DotLoginMacro, XrmoptionSepArg, NULL }, { OptMinVersion, DotMinVersion, XrmoptionSepArg, NULL }, { OptModel, DotModel, XrmoptionSepArg, NULL }, { OptMono, DotMono, XrmoptionNoArg, ResTrue }, { OptNoScrollBar, DotScrollBar, XrmoptionNoArg, ResFalse }, { OptNoVerifyHostCert,DotVerifyHostCert,XrmoptionNoArg, ResFalse }, { OptNvtMode, DotNvtMode, XrmoptionNoArg, ResTrue }, { OptOnce, DotOnce, XrmoptionNoArg, ResTrue }, { OptOversize, DotOversize, XrmoptionSepArg, NULL }, { OptPort, DotPort, XrmoptionSepArg, NULL }, { OptPrinterLu, DotPrinterLu, XrmoptionSepArg, NULL }, { OptProxy, DotProxy, XrmoptionSepArg, NULL }, { OptReconnect, DotReconnect, XrmoptionNoArg, ResTrue }, { OptSaveLines, DotSaveLines, XrmoptionSepArg, NULL }, { OptScripted, DotScripted, XrmoptionNoArg, ResTrue }, { OptScrollBar, DotScrollBar, XrmoptionNoArg, ResTrue }, { OptSecure, DotSecure, XrmoptionNoArg, ResTrue }, { OptSet, ".xxx", XrmoptionSkipArg, NULL }, { OptSocket, DotSocket, XrmoptionNoArg, ResTrue }, { OptScriptPort, DotScriptPort, XrmoptionSepArg, NULL }, { OptScriptPortOnce,DotScriptPortOnce,XrmoptionNoArg, ResTrue }, { OptTermName, DotTermName, XrmoptionSepArg, NULL }, { OptTraceFile, DotTraceFile, XrmoptionSepArg, NULL }, { OptTraceFileSize, DotTraceFileSize,XrmoptionSepArg, NULL }, { OptInputMethod, DotInputMethod, XrmoptionSepArg, NULL }, { OptPreeditType, DotPreeditType, XrmoptionSepArg, NULL }, { OptUser, DotUser, XrmoptionSepArg, NULL }, { OptUtf8, DotUtf8, XrmoptionNoArg, ResTrue }, { OptVerifyHostCert,DotVerifyHostCert,XrmoptionNoArg, ResTrue }, { "-xrm", NULL, XrmoptionResArg, NULL } }; int num_base_options = XtNumber(base_options); XrmOptionDescRec *options; int num_options; static struct option_help { char *opt; char *args; char *help; unsigned tls_flag; } option_help[] = { { OptAcceptHostname, "[DNS:]", "Host name to accept from server certificate", TLS_OPT_ACCEPT_HOSTNAME }, { OptActiveIcon, NULL, "Make icon a miniature of the display" }, { OptAplMode, NULL, "Turn on APL mode" }, { OptCaDir, "", "TLS CA certificate database directory", TLS_OPT_CA_DIR }, { OptCaFile, "", "TLS CA certificate file", TLS_OPT_CA_FILE }, { OptCertFile, "", "TLS certificate file", TLS_OPT_CERT_FILE }, { OptCertFileType, "pem|asn1", "TLS certificate file type", TLS_OPT_CERT_FILE_TYPE }, { OptChainFile, "", "TLS certificate chain file", TLS_OPT_CHAIN_FILE }, { OptCharClass, "", "Define characters for word boundaries" }, { OptCharset, "", "Alias for " OptCodePage }, { OptClear, "", "Turn on " }, { OptClientCert, "", "TLS client certificate name", TLS_OPT_CLIENT_CERT }, { OptCodePage, "", "Use host EBCDIC code page " }, { OptColorScheme, "", "Use color scheme " }, { OptConnectTimeout, "", "Timeout for host connect requests" }, { OptDevName, "", "Device name (workstation ID)" }, { OptEmulatorFont, "", "Font for emulator window" }, { OptHttpd, "[:]", "TCP port to listen on for http requests" }, { OptHostsFile, "", "Pathname of ibm_hosts file" }, { OptIconName, "", "Title for icon" }, { OptIconX, "", "X position for icon" }, { OptIconY, "", "Y position for icon" }, { OptKeyFile, "", "Get TLS private key from ", TLS_OPT_KEY_FILE }, { OptKeyFileType, "pem|asn1", "TLS private key file type", TLS_OPT_KEY_FILE_TYPE }, { OptKeymap, "[,...]", "Keyboard map name(s)" }, { OptKeypadOn, NULL, "Turn on pop-up keypad at start-up" }, { OptKeyPasswd, "file:|string:", "TLS private key password", TLS_OPT_KEY_PASSWD }, { OptLoginMacro, "Action([arg[,...]]) [...]", "Macro to run at login" }, { OptMinVersion, "", "Fail unless at this version or greater" }, { OptModel, "[327{8,9}-]", "Emulate a 3278 or 3279 model " }, { OptMono, NULL, "Do not use color" }, { OptNoScrollBar, NULL, "Disable scroll bar" }, { OptNoVerifyHostCert, NULL, "Do not verify TLS host certificate", TLS_OPT_VERIFY_HOST_CERT }, { OptNvtMode, NULL, "Begin in NVT mode" }, { OptOnce, NULL, "Exit as soon as the host disconnects" }, { OptOversize, "x", "Larger screen dimensions" }, { OptPort, "", "Default TELNET port" }, { OptPrinterLu, "", "Automatically start a pr3287 printer session to " }, { OptProxy, ":[:]", "Secify proxy type and server" }, { OptReconnect, NULL, "Reconnect to host as soon as it disconnects" }, { OptSaveLines, "", "Number of lines to save for scroll bar" }, { OptScripted, NULL, "Accept commands on standard input" }, { OptScrollBar, NULL, "Turn on scroll bar" }, { OptSet, "", "Turn on " }, { OptSocket, NULL, "Create socket for script control" }, { OptScriptPort, "", "Listen on TCP port for script connections" }, { OptScriptPortOnce, NULL, "Accept one script connection, then exit" }, { OptSecure, NULL, "Set secure mode" }, { OptTermName, "", "Send as TELNET terminal name" }, { OptTrace, NULL, "Enable tracing" }, { OptTraceFile, "", "Write traces to " }, { OptTraceFileSize, "[KM]", "Limit trace file to bytes" }, { OptInputMethod, "", "Multi-byte input method" }, { OptPreeditType, "